From b637cf37abf8f63975ca77667cfb0cd4fb5c74ec Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 19 Dec 2023 09:42:25 +0000 Subject: [PATCH 001/262] initial push --- .gitignore | 3 ++- commands.txt | 24 ++++++++++++++++++++++++ requirements.txt | 11 +++++++++++ run.sh | 1 + wtpsplit/evaluation/__init__.py | 11 ++++++++++- wtpsplit/evaluation/intrinsic.py | 6 ++++-- wtpsplit/train/evaluate.py | 1 + 7 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 commands.txt create mode 100644 requirements.txt create mode 100755 run.sh diff --git a/.gitignore b/.gitignore index 1153c526..74d550bc 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ external *.egg-info notebooks final_outputs -.cache* \ No newline at end of file +.cache* +data_subset/** \ No newline at end of file diff --git a/commands.txt b/commands.txt new file mode 100644 index 00000000..3c702478 --- /dev/null +++ b/commands.txt @@ -0,0 +1,24 @@ +# .bashrc +export PATH=$PATH:~/.local/bin + +export XRT_TPU_CONFIG="localservice;0;localhost:51011" + +export XLA_USE_BF16=0 + +export TPU_NUM_DEVICES=8 + +export HF_DATASETS_CACHE=/dev/shm/cache + +# data +gcloud auth login +gsutil -m cp -r gs://trc-transfer-data/sentence/data/eval.pth data/ + +# cleanup +pkill -e python3 +(until no more) +or +watch -n1 pkill -e python3 + +# for debugging: + +os.environ["PJRT_DEVICE"] = "None" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..bc523862 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,11 @@ +transformers==4.29.2 +accelerate==0.19.0 +datasets +pysbd +wandb +h5py +nltk +spacy +ersatz +iso-639 +scikit-learn==1.2.2 \ No newline at end of file diff --git a/run.sh b/run.sh new file mode 100755 index 00000000..b9603cef --- /dev/null +++ b/run.sh @@ -0,0 +1 @@ +python3 $HOME/transformers/examples/pytorch/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train.py $1 \ No newline at end of file diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index 1a8194ee..0dc83874 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -1,5 +1,6 @@ import subprocess import unicodedata +import os import numpy as np import regex as re @@ -69,7 +70,7 @@ def train_mixture(lang_code, original_train_x, train_y, n_subsample=None, featur train_x = train_x.float() - clf = linear_model.LogisticRegression(max_iter=10_000) + clf = linear_model.LogisticRegression(max_iter=10_000, random_state=0) clf.fit(train_x, train_y) preds = clf.predict_proba(train_x)[:, 1] @@ -229,6 +230,14 @@ def ersatz_sentencize( ): if lang_code not in ERSATZ_LANGUAGES: raise LanguageError(f"ersatz does not support {lang_code}") + + # check if infile parent dir exists, if not, create it + if not os.path.exists(os.path.dirname(infile)): + os.makedirs(os.path.dirname(infile)) + # check if outfile parent dir exists, if not, create it + if not os.path.exists(os.path.dirname(outfile)): + os.makedirs(os.path.dirname(outfile)) + open(infile, "w").write(text) subprocess.check_output( diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 1bdfb9ed..f4a6aab1 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -32,9 +32,9 @@ class Args: # } # } # } - eval_data_path: str = "data/eval_new.pth" + eval_data_path: str = "data/eval.pth" valid_text_path: str = None#"data/sentence/valid.parquet" - device: str = "cuda" + device: str = "xla:1" block_size: int = 512 stride: int = 64 batch_size: int = 32 @@ -70,6 +70,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ block_size=args.block_size, batch_size=args.batch_size, pad_last_batch=True, + verbose=True, )[0] lang_group.create_dataset("valid", data=valid_logits) @@ -92,6 +93,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ block_size=args.block_size, batch_size=args.batch_size, pad_last_batch=True, + verbose=True, )[0] test_labels = get_labels(lang_code, test_sentences, after_space=False) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 9cb21e35..4fd6bbe4 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -74,6 +74,7 @@ def evaluate_sentence( stride=stride, block_size=block_size, batch_size=batch_size, + verbose=True, )[0] true_end_indices = np.cumsum(np.array([len(s) for s in sentences])) + np.arange(len(sentences)) * len(separator) From f3a76e12b662c3ffae3119cefb95bb68664f0c24 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 19 Dec 2023 12:24:28 +0000 Subject: [PATCH 002/262] bump versions --- requirements.txt | 4 ++- run.sh | 2 +- xla_spawn.py | 83 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 xla_spawn.py diff --git a/requirements.txt b/requirements.txt index bc523862..1faca977 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,4 +8,6 @@ nltk spacy ersatz iso-639 -scikit-learn==1.2.2 \ No newline at end of file +scikit-learn==1.2.2 +numpy==1.23.5 +pydantic \ No newline at end of file diff --git a/run.sh b/run.sh index b9603cef..0a10f7e0 100755 --- a/run.sh +++ b/run.sh @@ -1 +1 @@ -python3 $HOME/transformers/examples/pytorch/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train.py $1 \ No newline at end of file +python3 ~/wtpsplit/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train.py $1 \ No newline at end of file diff --git a/xla_spawn.py b/xla_spawn.py new file mode 100644 index 00000000..96503336 --- /dev/null +++ b/xla_spawn.py @@ -0,0 +1,83 @@ +# Copyright 2020 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +A simple launcher script for TPU training + +Inspired by https://github.com/pytorch/pytorch/blob/master/torch/distributed/launch.py + +:: + >>> python xla_spawn.py --num_cores=NUM_CORES_YOU_HAVE + YOUR_TRAINING_SCRIPT.py (--arg1 --arg2 --arg3 and all other + arguments of your training script) + +""" + + +import importlib +import sys +from argparse import REMAINDER, ArgumentParser +from pathlib import Path + +import torch_xla.distributed.xla_multiprocessing as xmp + + +def parse_args(): + """ + Helper function parsing the command line options + @retval ArgumentParser + """ + parser = ArgumentParser( + description=( + "PyTorch TPU distributed training launch helper utility that will spawn up multiple distributed processes" + ) + ) + + # Optional arguments for the launch helper + parser.add_argument("--num_cores", type=int, default=1, help="Number of TPU cores to use (1 or 8).") + + # positional + parser.add_argument( + "training_script", + type=str, + help=( + "The full path to the single TPU training " + "program/script to be launched in parallel, " + "followed by all the arguments for the " + "training script" + ), + ) + + # rest from the training program + parser.add_argument("training_script_args", nargs=REMAINDER) + + return parser.parse_args() + + +def main(): + args = parse_args() + + # Import training_script as a module. + script_fpath = Path(args.training_script) + sys.path.append(str(script_fpath.parent.resolve())) + mod_name = script_fpath.stem + mod = importlib.import_module(mod_name) + + # Patch sys.argv + sys.argv = [args.training_script] + args.training_script_args + ["--tpu_num_cores", str(args.num_cores)] + + xmp.spawn(mod._mp_fn, args=(), nprocs=args.num_cores) + + +if __name__ == "__main__": + main() \ No newline at end of file From d89c8d87910569909821fa698a79401697716a25 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 20 Dec 2023 13:05:48 +0000 Subject: [PATCH 003/262] play with datasets --- run.sh | 2 +- wtpsplit/train/train.py | 25 +++++++++++-- xla_spawn.py | 83 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+), 5 deletions(-) create mode 100644 xla_spawn.py diff --git a/run.sh b/run.sh index b9603cef..0a10f7e0 100755 --- a/run.sh +++ b/run.sh @@ -1 +1 @@ -python3 $HOME/transformers/examples/pytorch/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train.py $1 \ No newline at end of file +python3 ~/wtpsplit/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train.py $1 \ No newline at end of file diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 1891b588..dae83f58 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -253,9 +253,9 @@ def main(): elif args.from_scratch: backbone = LACanineForTokenClassification(config) else: - backbone = LACanineForTokenClassification.from_pretrained(args.model_name_or_path, - ignore_mismatched_sizes=True, - config=config) + backbone = LACanineForTokenClassification.from_pretrained( + args.model_name_or_path, ignore_mismatched_sizes=True, config=config + ) model = Model( backbone, @@ -270,8 +270,15 @@ def prepare_dataset( num_workers=1, include_languages=None, shuffle=False, + split="train", ): - dataset = load_dataset("parquet", data_files=path, split="train") + from datasets.download import DownloadConfig + + dlconf = DownloadConfig(cache_dir="/home/Markus/.cache/huggingface/datasets") + dataset = load_dataset("markus583/mC4-TEST", split=split, download_config=dlconf) + # optional: delete downloaded dataset, it is stored in /dev/shm/cache now + # os.system("rm -rf /home/Markus/.cache/huggingface/datasets") + if include_languages is not None: include_languages = set(include_languages) @@ -443,6 +450,14 @@ def maybe_pad(text): # a bit hacky but oh well, only drop if sentence remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], ) + + # used dataset is in cache now + # recursively remove the files in cache_dir starting with m_c4 + for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): + for file in files: + if file.startswith("m_c4"): + print(f"Removing {os.path.join(root, file)}") + os.remove(os.path.join(root, file)) return dataset @@ -451,12 +466,14 @@ def maybe_pad(text): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, + split="train", ) valid_dataset = prepare_dataset( args.valid_text_path, num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=False, + split="valid", ) eval_data = torch.load( diff --git a/xla_spawn.py b/xla_spawn.py new file mode 100644 index 00000000..96503336 --- /dev/null +++ b/xla_spawn.py @@ -0,0 +1,83 @@ +# Copyright 2020 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +A simple launcher script for TPU training + +Inspired by https://github.com/pytorch/pytorch/blob/master/torch/distributed/launch.py + +:: + >>> python xla_spawn.py --num_cores=NUM_CORES_YOU_HAVE + YOUR_TRAINING_SCRIPT.py (--arg1 --arg2 --arg3 and all other + arguments of your training script) + +""" + + +import importlib +import sys +from argparse import REMAINDER, ArgumentParser +from pathlib import Path + +import torch_xla.distributed.xla_multiprocessing as xmp + + +def parse_args(): + """ + Helper function parsing the command line options + @retval ArgumentParser + """ + parser = ArgumentParser( + description=( + "PyTorch TPU distributed training launch helper utility that will spawn up multiple distributed processes" + ) + ) + + # Optional arguments for the launch helper + parser.add_argument("--num_cores", type=int, default=1, help="Number of TPU cores to use (1 or 8).") + + # positional + parser.add_argument( + "training_script", + type=str, + help=( + "The full path to the single TPU training " + "program/script to be launched in parallel, " + "followed by all the arguments for the " + "training script" + ), + ) + + # rest from the training program + parser.add_argument("training_script_args", nargs=REMAINDER) + + return parser.parse_args() + + +def main(): + args = parse_args() + + # Import training_script as a module. + script_fpath = Path(args.training_script) + sys.path.append(str(script_fpath.parent.resolve())) + mod_name = script_fpath.stem + mod = importlib.import_module(mod_name) + + # Patch sys.argv + sys.argv = [args.training_script] + args.training_script_args + ["--tpu_num_cores", str(args.num_cores)] + + xmp.spawn(mod._mp_fn, args=(), nprocs=args.num_cores) + + +if __name__ == "__main__": + main() \ No newline at end of file From 775d4a6febd75226958b56f71f501d598e11f222 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 21 Dec 2023 15:08:13 +0000 Subject: [PATCH 004/262] subwordXLM, wip --- .../canine_stratify_0.1_12layers_long.json | 4 +- configs/xlmr_stratify_0.1_3layers.json | 41 ++++ run.sh | 1 + tpu_starter.sh | 4 + wtpsplit/configs.py | 17 +- wtpsplit/models.py | 79 ++++++- wtpsplit/train/train.py | 205 +++++++++++++----- wtpsplit/utils.py | 22 +- 8 files changed, 311 insertions(+), 62 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_3layers.json create mode 100755 tpu_starter.sh diff --git a/configs/canine_stratify_0.1_12layers_long.json b/configs/canine_stratify_0.1_12layers_long.json index 50c8a7b1..348100aa 100644 --- a/configs/canine_stratify_0.1_12layers_long.json +++ b/configs/canine_stratify_0.1_12layers_long.json @@ -7,9 +7,9 @@ "do_train": true, "do_eval": true, "evaluation_strategy": "steps", - "per_device_train_batch_size": 64, + "per_device_train_batch_size": 32, "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 1, + "gradient_accumulation_steps": 2, "eval_accumulation_steps": 8, "dataloader_num_workers": 4, "preprocessing_num_workers": 6, diff --git a/configs/xlmr_stratify_0.1_3layers.json b/configs/xlmr_stratify_0.1_3layers.json new file mode 100644 index 00000000..07c0bd98 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers.json @@ -0,0 +1,41 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-TEST", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 32, + "preprocessing_num_workers": 6, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 2000000, + "save_steps": 100000, + "eval_steps": 50000000000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3 +} \ No newline at end of file diff --git a/run.sh b/run.sh index 0a10f7e0..d3ba4a89 100755 --- a/run.sh +++ b/run.sh @@ -1 +1,2 @@ +# TODO: cleanup in case of no .arrow files but cache-* files available. python3 ~/wtpsplit/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train.py $1 \ No newline at end of file diff --git a/tpu_starter.sh b/tpu_starter.sh new file mode 100755 index 00000000..3ee42e81 --- /dev/null +++ b/tpu_starter.sh @@ -0,0 +1,4 @@ +for var in "$@" +do + until gcloud compute tpus tpu-vm create $var --zone=europe-west4-a --accelerator-type=v3-8 --version=tpu-vm-base; do sleep 5; done +done \ No newline at end of file diff --git a/wtpsplit/configs.py b/wtpsplit/configs.py index 80dae886..656c5a38 100644 --- a/wtpsplit/configs.py +++ b/wtpsplit/configs.py @@ -1,4 +1,4 @@ -from transformers import AutoConfig, BertConfig, CanineConfig +from transformers import AutoConfig, BertConfig, CanineConfig, XLMRobertaConfig class LACanineConfig(CanineConfig): @@ -37,7 +37,22 @@ def __init__( self.num_hash_buckets = num_hash_buckets self.num_hash_functions = num_hash_functions + +class SubwordXLMConfig(XLMRobertaConfig): + """Config for XLM-R and XLM-V models. Used for token-level training. + + Args: + XLMRobertaConfig: Base class. + """ + model_type = "xlm-token" + + def __init__( + self, + **kwargs, + ): + super().__init__(**kwargs) AutoConfig.register("bert-char", BertCharConfig) AutoConfig.register("la-canine", LACanineConfig) +AutoConfig.register("xlm-token", SubwordXLMConfig) diff --git a/wtpsplit/models.py b/wtpsplit/models.py index 5603fffd..cfbaa57f 100644 --- a/wtpsplit/models.py +++ b/wtpsplit/models.py @@ -6,6 +6,7 @@ from torch import nn from transformers import AutoModel, AutoModelForTokenClassification from transformers.models.bert.modeling_bert import BertEncoder, BertForTokenClassification, BertModel, BertPooler +from transformers.models.xlm_roberta import XLMRobertaModel, XLMRobertaForTokenClassification from transformers.models.canine.modeling_canine import ( _PRIMES, ACT2FN, @@ -26,8 +27,9 @@ ConvProjection, TokenClassifierOutput, ) +from torchinfo import summary -from wtpsplit.configs import BertCharConfig, LACanineConfig +from wtpsplit.configs import BertCharConfig, LACanineConfig, SubwordXLMConfig from wtpsplit.utils import Constants @@ -956,9 +958,84 @@ def forward( return_dict, ) +class SubwordXLMForTokenClassification(XLMRobertaForTokenClassification): + config_class = SubwordXLMConfig + + _keys_to_ignore_on_load_unexpected = [r"pooler"] + _keys_to_ignore_on_load_missing = [r"position_ids"] + + def __init__(self, config): + super().__init__(config) + self.num_labels = config.num_labels + + self.roberta = XLMRobertaModel(config, add_pooling_layer=False) + classifier_dropout = ( + config.classifier_dropout if config.classifier_dropout is not None else config.hidden_dropout_prob + ) + self.dropout = nn.Dropout(classifier_dropout) + self.classifier = nn.Linear(config.hidden_size, config.num_labels) + # Initialize weights and apply final processing + self.post_init() + + def forward( + self, + input_ids: Optional[torch.LongTensor] = None, + attention_mask: Optional[torch.FloatTensor] = None, + token_type_ids: Optional[torch.LongTensor] = None, + position_ids: Optional[torch.LongTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + inputs_embeds: Optional[torch.FloatTensor] = None, + labels: Optional[torch.LongTensor] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + language_ids=None, + ) -> Union[Tuple[torch.Tensor], TokenClassifierOutput]: + return super().forward( + input_ids, + attention_mask, + token_type_ids, + position_ids, + head_mask, + inputs_embeds, + labels, + output_attentions, + output_hidden_states, + return_dict, + ) + + + AutoModel.register(LACanineConfig, LACanineModel) AutoModelForTokenClassification.register(LACanineConfig, LACanineForTokenClassification) AutoModel.register(BertCharConfig, BertCharModel) AutoModelForTokenClassification.register(BertCharConfig, BertCharForTokenClassification) + +AutoModel.register(SubwordXLMConfig, SubwordXLMForTokenClassification) +AutoModelForTokenClassification.register(SubwordXLMConfig, SubwordXLMForTokenClassification) + +if __name__ == "__main__": + # test XLM + from transformers import AutoConfig, AutoTokenizer + model_str = "xlm-roberta-base" + config = AutoConfig.from_pretrained(model_str) + config.num_labels = 4 + config.num_hidden_layers = 9 + backbone = SubwordXLMForTokenClassification.from_pretrained(model_str, config=config) + print(summary(backbone, depth=4)) + + # some sample input + text = "This is a test\n sentence \n\n" + tokenizer = AutoTokenizer.from_pretrained(model_str) + + tokens = tokenizer(text, return_tensors="pt") + from tokenizers import AddedToken + tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + print(tokenizer.tokenize(text)) + print(tokenizer.encode(text)) + print(tokens) + # forward pass + print(backbone(**tokens)) + diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index dae83f58..b8285cb3 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -6,23 +6,37 @@ from functools import partial from glob import glob from typing import List +import random import numpy as np import torch import wandb from datasets import load_dataset +from datasets.download import DownloadConfig from torch import nn -from transformers import HfArgumentParser, TrainingArguments +from transformers import HfArgumentParser, TrainingArguments, AutoTokenizer, set_seed +from torchinfo import summary +from tokenizers import AddedToken from wtpsplit.models import ( BertCharConfig, BertCharForTokenClassification, LACanineConfig, LACanineForTokenClassification, + SubwordXLMConfig, + SubwordXLMForTokenClassification, ) from wtpsplit.train.evaluate import evaluate_sentence from wtpsplit.train.trainer import Trainer -from wtpsplit.utils import Constants, LabelArgs, corrupt, get_label_dict +from wtpsplit.utils import Constants, LabelArgs, corrupt, get_label_dict, get_subword_label_dict + +# TODO: use seed from training args (also add default value) + +# TODO: set logger (see ScaLearn?) + +# TODO: double-check checkpointing and saving (also to txt) + +# os.environ["PJRT_DEVICE"] = "None" class Model(nn.Module): @@ -132,6 +146,7 @@ class Args: use_logits: bool = False is_decoder: bool = False use_bert: bool = False + # TODO: adapt to HF Hub train_text_path: str = "data/train.parquet" valid_text_path: str = "data/valid.parquet" include_languages: List[str] = None @@ -157,8 +172,11 @@ class Args: adapter_lr_multiplier: float = 1.0 text_column: str = "text" + # NEW PARAMS + use_subwords: bool = False -def collate_fn(batch, args, label_args, label_dict): + +def collate_fn(batch, args, label_args, label_dict, tokenizer): all_input_ids = [] all_labels = [] all_language_ids = [] @@ -168,8 +186,12 @@ def collate_fn(batch, args, label_args, label_dict): all_label_weights = [] for sample in batch: - # NOTE: this is specific to characters at the moment! - input_ids = [ord(c) for c in sample[args.text_column]] + # subword-level + if args.use_subwords: + input_ids = tokenizer.convert_tokens_to_ids(sample[args.text_column]) + # char-level + else: + input_ids = [ord(c) for c in sample[args.text_column]] lang = sample["lang"] while len(input_ids) < args.block_size + args.overflow_size: @@ -185,6 +207,7 @@ def collate_fn(batch, args, label_args, label_dict): label_dict=label_dict, pack_samples=args.pack_samples, min_length=args.block_size, + tokenizer=tokenizer if args.use_subwords else None, ) if len(input_ids) > args.block_size: @@ -229,33 +252,53 @@ def main(): (args, training_args, label_args) = parser.parse_args_into_dataclasses() wandb_name = None - config = LACanineConfig.from_pretrained( - args.model_name_or_path, - raw_lookahead=args.lookahead, - num_hidden_layers=args.num_hidden_layers, - num_labels=Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0), - n_languages=len(Constants.LANG_CODE_TO_INDEX), - ngram_order=args.ngram_order, - language_adapter=args.language_adapter, - # upsampling kernel size > 1 is problematic for packing - # using ks=1 doesn't allow reusing the pretrained weights - # but if we warm it up alongside the adapters - # there is almost no difference. - upsampling_kernel_size=1, - ) - if args.use_bert: - config = BertCharConfig.from_pretrained( - args.model_name_or_path, - num_labels=Constants.AUX_OFFSET - + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0), - ) - backbone = BertCharForTokenClassification(config) - elif args.from_scratch: - backbone = LACanineForTokenClassification(config) + num_labels = Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0) + if args.use_subwords: + if args.from_scratch: + config = SubwordXLMConfig.from_pretrained( + args.model_name_or_path, + num_hidden_layers=args.num_hidden_layers, + num_labels=num_labels, + ) + backbone = SubwordXLMForTokenClassification(config) + else: + config = SubwordXLMConfig.from_pretrained( + args.model_name_or_path, + num_hidden_layers=args.num_hidden_layers, + num_labels=num_labels, + ) + backbone = SubwordXLMForTokenClassification(config) + + tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) + tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + else: - backbone = LACanineForTokenClassification.from_pretrained( - args.model_name_or_path, ignore_mismatched_sizes=True, config=config + config = LACanineConfig.from_pretrained( + args.model_name_or_path, + raw_lookahead=args.lookahead, + num_hidden_layers=args.num_hidden_layers, + num_labels=num_labels, + n_languages=len(Constants.LANG_CODE_TO_INDEX), + ngram_order=args.ngram_order, + language_adapter=args.language_adapter, + # upsampling kernel size > 1 is problematic for packing + # using ks=1 doesn't allow reusing the pretrained weights + # but if we warm it up alongside the adapters + # there is almost no difference. + upsampling_kernel_size=1, ) + if args.use_bert: + config = BertCharConfig.from_pretrained( + args.model_name_or_path, + num_labels=num_labels, + ) + backbone = BertCharForTokenClassification(config) + elif args.from_scratch: + backbone = LACanineForTokenClassification(config) + else: + backbone = LACanineForTokenClassification.from_pretrained( + args.model_name_or_path, ignore_mismatched_sizes=True, config=config + ) model = Model( backbone, @@ -265,20 +308,22 @@ def main(): do_auxiliary_training=args.do_auxiliary_training, ) + with training_args.main_process_first(): + print(summary(model, depth=3)) + def prepare_dataset( - path, num_workers=1, include_languages=None, shuffle=False, split="train", ): - from datasets.download import DownloadConfig - - dlconf = DownloadConfig(cache_dir="/home/Markus/.cache/huggingface/datasets") - dataset = load_dataset("markus583/mC4-TEST", split=split, download_config=dlconf) - # optional: delete downloaded dataset, it is stored in /dev/shm/cache now + with training_args.main_process_first(): + dlconf = DownloadConfig(cache_dir="/home/Markus/.cache/huggingface/datasets") + dataset = load_dataset("markus583/mC4-TEST", split=split, download_config=dlconf) + # optional: delete downloaded dataset, it is stored in cache_dir now (but we delete it later) + # ~40GB on disk # os.system("rm -rf /home/Markus/.cache/huggingface/datasets") - + if include_languages is not None: include_languages = set(include_languages) @@ -344,6 +389,13 @@ def drop_some_non_punctuation_samples(examples): num_proc=num_workers, ) + def tokenize_texts(examples): + tokenized = tokenizer(examples[args.text_column], add_special_tokens=False) + # also add tokenized tokens in str format + tokenized["tokenized_text"] = [tokenizer.convert_ids_to_tokens(ids) for ids in tokenized["input_ids"]] + + return tokenized + # similar to group_texts in huggingface's run_clm.py / run_mlm.py: https://github.com/huggingface/transformers/blob/main/examples/pytorch/language-modeling/run_mlm.py def group_texts(examples): all_input_blocks = [] @@ -361,14 +413,24 @@ def maybe_pad(text): return text for current_lang in set(examples["lang"]): - lang_texts = [ - maybe_pad(text) - for text, lang in zip(examples[args.text_column], examples["lang"]) - if lang == current_lang - ] + if not args.use_subwords: + lang_texts = [ + maybe_pad(text) + for text, lang in zip(examples[args.text_column], examples["lang"]) + if lang == current_lang + ] + else: + # only retain current_lang examples (all columns) + lang_subwords = [ + subwords + for subwords, lang in zip(examples["tokenized_text"], examples["lang"]) + if lang == current_lang + ] # pack_samples used for the compound part, so irrelevant if args.pack_samples: + if args.use_subwords: + raise NotImplementedError blocks = [] block_ids = [] @@ -399,8 +461,13 @@ def maybe_pad(text): blocks.append(current_block[0]) block_ids.append(current_block[1]) else: - concatenated_texts = "".join(lang_texts) - concatenated_ids = [i for i, text in enumerate(lang_texts) for _ in text] + if not args.use_subwords: + concatenated_texts = "".join(lang_texts) + concatenated_ids = [i for i, text in enumerate(lang_texts) for _ in text] + else: + # concatenate lists + concatenated_texts = [item for sublist in lang_subwords for item in sublist] + concatenated_ids = [i for i, subwords in enumerate(lang_subwords) for _ in subwords] total_length = len(concatenated_texts) @@ -441,41 +508,59 @@ def maybe_pad(text): if args.pack_samples: assert not args.one_sample_per_line + if args.use_subwords: + with training_args.main_process_first(): + dataset = dataset.map( + tokenize_texts, + batched=True, + num_proc=num_workers, + # remove_columns=[args.text_column], + ) + if not args.one_sample_per_line: with training_args.main_process_first(): + # drop columns input_ids, attentionm dataset = dataset.map( group_texts, batched=True, num_proc=num_workers, # a bit hacky but oh well, only drop if sentence - remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], + # TODO: clean this + remove_columns=["ends_with_punctuation", "input_ids", "attention_mask", "tokenized_text"] + if args.text_column == "text" + else [], ) - - # used dataset is in cache now - # recursively remove the files in cache_dir starting with m_c4 - for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): - for file in files: - if file.startswith("m_c4"): - print(f"Removing {os.path.join(root, file)}") - os.remove(os.path.join(root, file)) return dataset train_dataset = prepare_dataset( - args.train_text_path, num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, split="train", ) valid_dataset = prepare_dataset( - args.valid_text_path, num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=False, split="valid", ) + # print some samples from the dataset + for index in random.sample(range(len(train_dataset)), 10): + print(f"Sample {index} of the training set: {train_dataset[index]}.") + print() + + # dataset we use is in cached now + # m_c4 files are test/valid splits of already downloaded data + # ~80GB deleted, ~63 GB left in cache/RAM (cache-* files) + # with training_args.main_process_first(): + # for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): + # for file in files: + # if file.startswith("m_c4"): + # print(f"Removing {os.path.join(root, file)}") + # os.remove(os.path.join(root, file)) + eval_data = torch.load( args.eval_data_path, ) @@ -520,7 +605,7 @@ def compute_metrics(trainer): for file in glob(os.path.join(os.path.dirname(__file__), "*.py")): wandb.save(os.path.abspath(file), policy="now") - label_dict = get_label_dict(label_args) + label_dict = get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) # needed in the trainer training_args.adapter_warmup_steps = args.adapter_warmup_steps @@ -532,7 +617,13 @@ def compute_metrics(trainer): train_dataset=train_dataset, eval_dataset=valid_dataset, compute_metrics=compute_metrics, - data_collator=partial(collate_fn, args=args, label_args=label_args, label_dict=label_dict), + data_collator=partial( + collate_fn, + args=args, + label_args=label_args, + label_dict=label_dict, + tokenizer=tokenizer if args.use_subwords else None, + ), ) trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 6fdfb04b..cd2982c9 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -76,6 +76,22 @@ def get_label_dict(label_args): return label_dict +def get_subword_label_dict(label_args, tokenizer): + label_dict = {} + + # Map auxiliary characters to token IDs with labels + for i, c in enumerate(label_args.auxiliary_chars): + token_id = tokenizer.convert_tokens_to_ids(c) + label_dict[token_id] = 1 + Constants.AUX_OFFSET + i + print(f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}") + + # Map newline characters to token IDs with labels + for c in label_args.newline_chars: + token_id = tokenizer.convert_tokens_to_ids(c) + label_dict[token_id] = 1 + Constants.NEWLINE_INDEX + print(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}") + + return label_dict def sigmoid(x): return 1 / (1 + np.exp(-x)) @@ -125,6 +141,7 @@ def corrupt( label_dict, pack_samples=False, min_length=None, + tokenizer=None, ): input_ids = input_ids.copy() block_ids = block_ids.copy() @@ -144,7 +161,10 @@ def corrupt( if labels[i] == Constants.NEWLINE_INDEX + 1: if random.random() < label_args.newline_remove_prob: if separator == " " and random.random() < label_args.newline_whitespace_prob: - input_ids[i + 1] = ord(" ") + if tokenizer: + input_ids[i + 1] = tokenizer.convert_tokens_to_ids(" ") + else: + input_ids[i + 1] = ord(" ") else: del input_ids[i + 1] del labels[i + 1] From cdb8743937fccf99521313fa6f9a233fb6e1fc6b Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 21 Dec 2023 16:55:11 +0000 Subject: [PATCH 005/262] directly use input_ids --- configs/xlmr_stratify_0.1_3layers.json | 2 +- requirements.txt | 3 ++- wtpsplit/train/train.py | 23 +++++++++++------------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/configs/xlmr_stratify_0.1_3layers.json b/configs/xlmr_stratify_0.1_3layers.json index 07c0bd98..cbece18f 100644 --- a/configs/xlmr_stratify_0.1_3layers.json +++ b/configs/xlmr_stratify_0.1_3layers.json @@ -13,7 +13,7 @@ "gradient_accumulation_steps": 1, "eval_accumulation_steps": 8, "dataloader_num_workers": 32, - "preprocessing_num_workers": 6, + "preprocessing_num_workers": 32, "learning_rate": 1e-4, "save_strategy": "steps", "fp16": false, diff --git a/requirements.txt b/requirements.txt index 1faca977..09ba6b3b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,4 +10,5 @@ ersatz iso-639 scikit-learn==1.2.2 numpy==1.23.5 -pydantic \ No newline at end of file +pydantic +torchinfo \ No newline at end of file diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index b8285cb3..b70c3d0f 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -188,10 +188,10 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): for sample in batch: # subword-level if args.use_subwords: - input_ids = tokenizer.convert_tokens_to_ids(sample[args.text_column]) + input_ids = sample["input_ids"] # char-level else: - input_ids = [ord(c) for c in sample[args.text_column]] + input_ids = [ord(c) for c in sample["input_ids"]] lang = sample["lang"] while len(input_ids) < args.block_size + args.overflow_size: @@ -309,7 +309,7 @@ def main(): ) with training_args.main_process_first(): - print(summary(model, depth=3)) + print(summary(model, depth=10)) def prepare_dataset( num_workers=1, @@ -390,11 +390,11 @@ def drop_some_non_punctuation_samples(examples): ) def tokenize_texts(examples): - tokenized = tokenizer(examples[args.text_column], add_special_tokens=False) + # TODO: before, we used use_special_tokens=False --> check effect! + tokenized = tokenizer(examples[args.text_column]) # also add tokenized tokens in str format - tokenized["tokenized_text"] = [tokenizer.convert_ids_to_tokens(ids) for ids in tokenized["input_ids"]] - - return tokenized + # TODO: only use input_ids, no double conversion + return {"input_ids": tokenized["input_ids"]} # similar to group_texts in huggingface's run_clm.py / run_mlm.py: https://github.com/huggingface/transformers/blob/main/examples/pytorch/language-modeling/run_mlm.py def group_texts(examples): @@ -423,7 +423,7 @@ def maybe_pad(text): # only retain current_lang examples (all columns) lang_subwords = [ subwords - for subwords, lang in zip(examples["tokenized_text"], examples["lang"]) + for subwords, lang in zip(examples["input_ids"], examples["lang"]) if lang == current_lang ] @@ -497,7 +497,7 @@ def maybe_pad(text): all_langs.extend(block_langs) return { - args.text_column: all_input_blocks, + "input_ids": all_input_blocks, "block_lengths": all_input_block_lengths, "lang": all_langs, } @@ -514,19 +514,18 @@ def maybe_pad(text): tokenize_texts, batched=True, num_proc=num_workers, - # remove_columns=[args.text_column], + remove_columns=[args.text_column], ) if not args.one_sample_per_line: with training_args.main_process_first(): - # drop columns input_ids, attentionm dataset = dataset.map( group_texts, batched=True, num_proc=num_workers, # a bit hacky but oh well, only drop if sentence # TODO: clean this - remove_columns=["ends_with_punctuation", "input_ids", "attention_mask", "tokenized_text"] + remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], ) From 5b3733139e89d7522cda5c6657577915f43e570e Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 23 Dec 2023 11:04:06 +0000 Subject: [PATCH 006/262] fix tokenization?, eval during training --- configs/xlmr_stratify_0.1_3layers.json | 4 +- wtpsplit/configs.py | 2 + wtpsplit/evaluation/intrinsic.py | 7 +- wtpsplit/extract.py | 92 +++++++++++++++------- wtpsplit/models.py | 7 +- wtpsplit/train/evaluate.py | 45 ++++++++++- wtpsplit/train/train.py | 101 ++++++++++++++++++++----- wtpsplit/utils.py | 27 ++++++- 8 files changed, 224 insertions(+), 61 deletions(-) diff --git a/configs/xlmr_stratify_0.1_3layers.json b/configs/xlmr_stratify_0.1_3layers.json index cbece18f..fc40f4c0 100644 --- a/configs/xlmr_stratify_0.1_3layers.json +++ b/configs/xlmr_stratify_0.1_3layers.json @@ -12,14 +12,14 @@ "per_device_eval_batch_size": 32, "gradient_accumulation_steps": 1, "eval_accumulation_steps": 8, - "dataloader_num_workers": 32, + "dataloader_num_workers": 4, "preprocessing_num_workers": 32, "learning_rate": 1e-4, "save_strategy": "steps", "fp16": false, "max_steps": 2000000, "save_steps": 100000, - "eval_steps": 50000000000, + "eval_steps": 5000, "logging_steps": 50, "report_to": "wandb", "is_decoder": false, diff --git a/wtpsplit/configs.py b/wtpsplit/configs.py index 656c5a38..6b44d512 100644 --- a/wtpsplit/configs.py +++ b/wtpsplit/configs.py @@ -45,12 +45,14 @@ class SubwordXLMConfig(XLMRobertaConfig): XLMRobertaConfig: Base class. """ model_type = "xlm-token" + mixture_name = "xlm-token" def __init__( self, **kwargs, ): super().__init__(**kwargs) + self.mixture_name = "xlm-token" AutoConfig.register("bert-char", BertCharConfig) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index f4a6aab1..3f9ce8c5 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -34,7 +34,7 @@ class Args: # } eval_data_path: str = "data/eval.pth" valid_text_path: str = None#"data/sentence/valid.parquet" - device: str = "xla:1" + device: str = "cpu" block_size: int = 512 stride: int = 64 batch_size: int = 32 @@ -44,7 +44,8 @@ class Args: def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_sentences=10_000): logits_path = Constants.CACHE_DIR / (model.config.mixture_name + "_logits.h5") - with h5py.File(logits_path, "a") as f, torch.no_grad(): + # TODO: revert to "a" + with h5py.File(logits_path, "w") as f, torch.no_grad(): for lang_code in Constants.LANGINFO.index: if args.include_langs is not None and lang_code not in args.include_langs: continue @@ -152,6 +153,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ if "train_logits" in f[lang_code][dataset_name]: feature_indices = None + # TODO: tokenize here clf = train_mixture( [lang_code], f[lang_code][dataset_name]["train_logits"][:], @@ -159,6 +161,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ features=feature_indices, ) + # TODO: tokenize here, too score_t, score_punct, _ = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:], diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 15339b2a..5ee39ede 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -3,6 +3,8 @@ import numpy as np from tqdm.auto import tqdm +from transformers import AutoTokenizer +from tokenizers import AddedToken from wtpsplit.utils import Constants, hash_encode @@ -37,7 +39,7 @@ def __getattr__(self, name): assert hasattr(self, "model") return getattr(self.model, name) - def __call__(self, hashed_ids, attention_mask, language_ids=None): + def __call__(self, input_ids, hashed_ids, attention_mask, language_ids=None): try: import torch except ImportError: @@ -46,7 +48,8 @@ def __call__(self, hashed_ids, attention_mask, language_ids=None): with torch.no_grad(): logits = ( self.model( - hashed_ids=torch.from_numpy(hashed_ids).to(self.model.device), + input_ids=torch.from_numpy(input_ids).to(self.model.device) if input_ids is not None else None, + hashed_ids=torch.from_numpy(hashed_ids).to(self.model.device) if hashed_ids is not None else None, attention_mask=torch.from_numpy(attention_mask).to(self.model.device), language_ids=torch.from_numpy(language_ids).to(self.model.device) if language_ids is not None @@ -76,6 +79,20 @@ def extract( ad 1.: text is sliced into partially overlapping chunks by moving forward by a `stride` parameter (think conv1d). """ + if "xlm" in model.config.model_type: + use_subwords = True + tokenizer = AutoTokenizer.from_pretrained(model.config.base_model) + tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + tokens = tokenizer(batch_of_texts, return_offsets_mapping=True) + # remove CLS and SEP tokens, they are added later anyhow + batch_of_texts = [text[1:-1] for text in tokens["input_ids"]] + offset_mapping = [offset[1:-1] for offset in tokens["offset_mapping"]] + cls_token_id = tokenizer.cls_token_id + sep_token_id = tokenizer.sep_token_id + pad_token_id = tokenizer.pad_token_id + else: + pad_token_id = 0 + use_subwords = False text_lengths = [len(text) for text in batch_of_texts] # reduce block size if possible @@ -84,44 +101,56 @@ def extract( # make sure block_size is a multiple of downsampling rate downsampling_rate = getattr(model.config, "downsampling_rate", 1) block_size = math.ceil(block_size / downsampling_rate) * downsampling_rate + actual_block_size = block_size - 2 if use_subwords else block_size # account for CLS and SEP tokens # total number of forward passes - num_chunks = sum(math.ceil(max(length - block_size, 0) / stride) + 1 for length in text_lengths) + num_chunks = sum(math.ceil(max(length - actual_block_size, 0) / stride) + 1 for length in text_lengths) # preallocate a buffer for all input hashes & attention masks - input_hashes = np.zeros((num_chunks, block_size, model.config.num_hash_functions), dtype=np.int64) + if not use_subwords: + input_hashes = np.zeros((num_chunks, block_size, model.config.num_hash_functions), dtype=np.int64) + else: + input_ids = np.zeros((num_chunks, block_size), dtype=np.int64) attention_mask = np.zeros((num_chunks, block_size), dtype=np.float32) # locs keep track of the location of every chunk with a 3-tuple (text_idx, char_start, char_end) that indexes # back into the batch_of_texts locs = np.zeros((num_chunks, 3), dtype=np.int32) - # this is equivalent to (but faster than) np.array([ord(c) for c in "".join(batch_of_texts)]) - codec = "utf-32-le" if sys.byteorder == "little" else "utf-32-be" - ordinals = np.frombuffer(bytearray("".join(batch_of_texts), encoding=codec), dtype=np.int32) - - # hash encode all ids - flat_hashed_ids = hash_encode(ordinals, - num_hashes=model.config.num_hash_functions, - num_buckets=model.config.num_hash_buckets) + if not use_subwords: + # this is equivalent to (but faster than) np.array([ord(c) for c in "".join(batch_of_texts)]) + codec = "utf-32-le" if sys.byteorder == "little" else "utf-32-be" + ordinals = np.frombuffer(bytearray("".join(batch_of_texts), encoding=codec), dtype=np.int32) + # hash encode all ids + flat_hashed_ids = hash_encode(ordinals, + num_hashes=model.config.num_hash_functions, + num_buckets=model.config.num_hash_buckets) + # note that ordinals and flat_hashed_ids have the same length offset = 0 current_chunk = 0 - + + + # create chunks for i in range(len(batch_of_texts)): for j in range(0, text_lengths[i], stride): # for every chunk, assign input hashes, attention mask and loc - start, end = j, j + block_size + start, end = j, j + actual_block_size done = False if end >= text_lengths[i]: end = text_lengths[i] - start = max(end - block_size, 0) + start = max(end - actual_block_size, 0) done = True - input_hashes[current_chunk, : end - start] = flat_hashed_ids[offset + start : offset + end] - attention_mask[current_chunk, : end - start] = 1 + if not use_subwords: + input_hashes[current_chunk, : end - start] = flat_hashed_ids[offset + start : offset + end] + attention_mask[current_chunk, : end - start] = 1 + else: + chunk = [cls_token_id] + batch_of_texts[i][start:end] + [sep_token_id] + input_ids[current_chunk, :len(chunk)] = chunk + attention_mask[current_chunk, :len(chunk)] = 1 + locs[current_chunk, :] = [i, start, end] - current_chunk += 1 if done: @@ -130,7 +159,7 @@ def extract( offset += text_lengths[i] assert current_chunk == num_chunks - n_batches = math.ceil(len(input_hashes) / batch_size) + n_batches = math.ceil(len(attention_mask) / batch_size) # containers for the final logits all_logits = [ @@ -163,21 +192,30 @@ def extract( # forward passes through all chunks for batch_idx in tqdm(range(n_batches), disable=not verbose): - start, end = batch_idx * batch_size, min(len(input_hashes), (batch_idx + 1) * batch_size) + start, end = batch_idx * batch_size, min(len(attention_mask), (batch_idx + 1) * batch_size) - batch_input_hashes = input_hashes[start:end] + if not use_subwords: + batch_input_hashes = input_hashes[start:end] + else: + batch_input_ids = input_ids[start:end] batch_attention_mask = attention_mask[start:end] - if len(batch_input_hashes) < batch_size and pad_last_batch: - n_missing = batch_size - len(batch_input_hashes) + if len(batch_attention_mask) < batch_size and pad_last_batch: + n_missing = batch_size - len(batch_attention_mask) - batch_input_hashes = np.pad(batch_input_hashes, ((0, n_missing), (0, 0), (0, 0))) + if not use_subwords: + batch_input_hashes = np.pad(batch_input_hashes, ((0, n_missing), (0, 0), (0, 0))) + else: + # Pad with the specific pad_token_id for the tokenizer + batch_input_ids = np.pad(batch_input_ids, ((0, n_missing), (0, 0)), constant_values=pad_token_id) batch_attention_mask = np.pad(batch_attention_mask, ((0, n_missing), (0, 0))) + - kwargs = {"language_ids": language_ids[: len(batch_input_hashes)]} if uses_lang_adapters else {} + kwargs = {"language_ids": language_ids[: len(batch_attention_mask)]} if uses_lang_adapters else {} logits = model( - hashed_ids=batch_input_hashes, + input_ids=batch_input_ids if use_subwords else None, + hashed_ids=batch_input_hashes if not use_subwords else None, attention_mask=batch_attention_mask, **kwargs, )["logits"] @@ -190,4 +228,4 @@ def extract( # so far, logits are summed, so we average them here all_logits = [(logits / counts[:, None]).astype(np.float16) for logits, counts in zip(all_logits, all_counts)] - return all_logits + return all_logits, offset_mapping if use_subwords else None, tokenizer if use_subwords else None diff --git a/wtpsplit/models.py b/wtpsplit/models.py index cfbaa57f..ee731b21 100644 --- a/wtpsplit/models.py +++ b/wtpsplit/models.py @@ -989,8 +989,9 @@ def forward( labels: Optional[torch.LongTensor] = None, output_attentions: Optional[bool] = None, output_hidden_states: Optional[bool] = None, - return_dict: Optional[bool] = None, + hashed_ids: Optional[torch.Tensor] = None, language_ids=None, + return_dict: Optional[bool] = None, ) -> Union[Tuple[torch.Tensor], TokenClassifierOutput]: return super().forward( input_ids, @@ -1030,7 +1031,7 @@ def forward( text = "This is a test\n sentence \n\n" tokenizer = AutoTokenizer.from_pretrained(model_str) - tokens = tokenizer(text, return_tensors="pt") + tokens = tokenizer(text, return_tensors="pt", add_special_tokens=False) from tokenizers import AddedToken tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) print(tokenizer.tokenize(text)) @@ -1038,4 +1039,4 @@ def forward( print(tokens) # forward pass print(backbone(**tokens)) - + \ No newline at end of file diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 4fd6bbe4..0f2e07cd 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -47,6 +47,33 @@ def get_metrics(labels, preds): return metrics, info +def get_token_spans(tokenizer: object, offsets_mapping: list, tokens: list): + token_spans = [] + for idx, token in enumerate(tokens): + # Skip special tokens like [CLS], [SEP] + if idx >= len(offsets_mapping): + continue + if token in [tokenizer.cls_token, tokenizer.sep_token, tokenizer.pad_token]: + continue + + char_start, char_end = offsets_mapping[idx] + token_spans.append((char_start, char_end)) + + return token_spans + +def token_to_char_probs(text: str, tokens: list, token_probs: np.ndarray, tokenizer, offsets_mapping): + char_probs = np.zeros(len(text)) + token_spans = get_token_spans(tokenizer, offsets_mapping, tokens) + + for (start, end), prob in zip(token_spans, token_probs): + # assign the token's prob to the last char of the token + # Ensure the end index does not exceed the length of the text + if end >= len(text): + print(f"Adjusting end index from {end} to {len(text)} for token '{text[start:end]}'") + end = len(text) - 1 + char_probs[end] = prob + + return char_probs def evaluate_sentence( lang_code, @@ -67,7 +94,7 @@ def evaluate_sentence( separator = Constants.SEPARATORS[lang_code] text = separator.join(sentences) - logits = extract( + logits, offsets_mapping, tokenizer = extract( [text], PyTorchWrapper(model.backbone), lang_code=lang_code, @@ -75,13 +102,22 @@ def evaluate_sentence( block_size=block_size, batch_size=batch_size, verbose=True, - )[0] + ) + logits, offsets_mapping = logits[0], offsets_mapping[0] true_end_indices = np.cumsum(np.array([len(s) for s in sentences])) + np.arange(len(sentences)) * len(separator) newline_labels = np.zeros(len(text)) newline_labels[true_end_indices - 1] = 1 - - metrics, info = get_metrics(newline_labels, logits[:, positive_index]) + + print("newline_labels", newline_labels.shape) + + if "xlm" in model.config.model_type: + tokens = tokenizer.tokenize(text) + char_probs = token_to_char_probs(text, tokens, logits[:, positive_index], tokenizer, offsets_mapping) + else: + char_probs = logits[:, positive_index] + print("char probs", char_probs.shape) + metrics, info = get_metrics(newline_labels, char_probs) info["newline_labels"] = newline_labels @@ -94,3 +130,4 @@ def evaluate_sentence( info["newline_probs_pysbd"] = newline_probs_pysbd return metrics["pr_auc"], info + diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index b70c3d0f..7240be5b 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -30,8 +30,6 @@ from wtpsplit.train.trainer import Trainer from wtpsplit.utils import Constants, LabelArgs, corrupt, get_label_dict, get_subword_label_dict -# TODO: use seed from training args (also add default value) - # TODO: set logger (see ScaLearn?) # TODO: double-check checkpointing and saving (also to txt) @@ -209,18 +207,63 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): min_length=args.block_size, tokenizer=tokenizer if args.use_subwords else None, ) + + if input_ids[0] != tokenizer.cls_token_id: + print(input_ids) + print(len(input_ids)) + print(tokenizer.cls_token_id) + raise ValueError("CLS token not first token") + if input_ids[-1] != tokenizer.sep_token_id: + print(input_ids) + print(len(input_ids)) + print(tokenizer.sep_token_id) + raise ValueError("SEP token not last token") if len(input_ids) > args.block_size: - start = np.random.randint(0, len(input_ids) - args.block_size) - input_ids = input_ids[start : start + args.block_size] - labels = labels[start : start + args.block_size] + if tokenizer: + # always include CLS + start = np.random.randint(0, len(input_ids) - args.block_size) + if start != 0: + # this removes the CLS token + # -1 removes the SEP token, for sure + input_ids = [tokenizer.cls_token_id] + input_ids[start : start + args.block_size - 2] + labels = [0] + labels[start : start + args.block_size - 2] + else: + input_ids = input_ids[start : start + args.block_size - 1] + labels = labels[start : start + args.block_size - 1] + # always include SEP + if input_ids[-1] != tokenizer.sep_token_id: + input_ids = input_ids + [tokenizer.sep_token_id] + labels = labels + [0] + else: + start = np.random.randint(0, len(input_ids) - args.block_size) + input_ids = input_ids[start : start + args.block_size] + labels = labels[start : start + args.block_size] input_ids = torch.tensor(input_ids[: args.block_size], dtype=torch.long) labels = torch.tensor(labels[: args.block_size], dtype=torch.long) + if input_ids[-1] != tokenizer.sep_token_id: + print(input_ids) + print(tokenizer.sep_token_id) + print(labels) + raise ValueError("SEP token not last token") + if input_ids[0] != tokenizer.cls_token_id: + print(input_ids) + print(tokenizer.cls_token_id) + print(labels) + raise ValueError("CLS token not first token") + if (input_ids == tokenizer.cls_token_id).sum() != 1: + print(input_ids) + print(tokenizer.cls_token_id) + print(labels) + raise ValueError("CLS token not unique") position_ids = torch.arange(len(input_ids), dtype=torch.long) label_weights = torch.ones(args.block_size, dtype=torch.float32) - attention_mask = (input_ids != 0).to(torch.float32) + if tokenizer: + attention_mask = (input_ids != tokenizer.pad_token_id).to(torch.float32) + else: + attention_mask = (input_ids != 0).to(torch.float32) all_input_ids.append(input_ids) all_label_weights.append(label_weights) @@ -233,7 +276,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): out = { "input_ids": torch.stack(all_input_ids, 0), "attention_mask": torch.stack(all_attention_masks, 0), - "position_ids": torch.stack(all_position_ids, 0), + "position_ids": torch.stack(all_position_ids, 0) if not args.use_subwords else None, # safer "language_ids": torch.tensor(all_language_ids, dtype=torch.long), "label_weights": torch.stack(all_label_weights, 0), "labels": torch.stack(all_labels, 0), @@ -251,6 +294,8 @@ def main(): else: (args, training_args, label_args) = parser.parse_args_into_dataclasses() wandb_name = None + + set_seed(training_args.seed) num_labels = Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0) if args.use_subwords: @@ -261,6 +306,7 @@ def main(): num_labels=num_labels, ) backbone = SubwordXLMForTokenClassification(config) + else: config = SubwordXLMConfig.from_pretrained( args.model_name_or_path, @@ -269,6 +315,7 @@ def main(): ) backbone = SubwordXLMForTokenClassification(config) + backbone.config.base_model = args.model_name_or_path tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) @@ -309,7 +356,9 @@ def main(): ) with training_args.main_process_first(): - print(summary(model, depth=10)) + print(summary(model, depth=4)) + # also save base model + # backbone.push_to_hub("markus583/xlm-token-untrained", private=True) def prepare_dataset( num_workers=1, @@ -388,13 +437,14 @@ def drop_some_non_punctuation_samples(examples): batch_size=1_000_000, num_proc=num_workers, ) + def tokenize_texts(examples): - # TODO: before, we used use_special_tokens=False --> check effect! - tokenized = tokenizer(examples[args.text_column]) - # also add tokenized tokens in str format - # TODO: only use input_ids, no double conversion - return {"input_ids": tokenized["input_ids"]} + # do not return CLS and SEP token here + # there should only be 1 of these per block later, not multiple + # we still can't use return_special_tokens=False since we need the \n token later for the labels + tokenized = tokenizer(examples[args.text_column], verbose=False) + return {"input_ids": [example[1:-1] for example in tokenized["input_ids"]]} # similar to group_texts in huggingface's run_clm.py / run_mlm.py: https://github.com/huggingface/transformers/blob/main/examples/pytorch/language-modeling/run_mlm.py def group_texts(examples): @@ -516,15 +566,22 @@ def maybe_pad(text): num_proc=num_workers, remove_columns=[args.text_column], ) + + if split == "train": + with training_args.main_process_first(): + for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): + for file in files: + if file.startswith("m_c4-test-train"): + print(f"Removing {os.path.join(root, file)}") + os.remove(os.path.join(root, file)) if not args.one_sample_per_line: with training_args.main_process_first(): dataset = dataset.map( group_texts, batched=True, - num_proc=num_workers, + num_proc=1, # a bit hacky but oh well, only drop if sentence - # TODO: clean this remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], @@ -532,22 +589,23 @@ def maybe_pad(text): return dataset - train_dataset = prepare_dataset( + valid_dataset = prepare_dataset( num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, - shuffle=args.shuffle, - split="train", + shuffle=False, + split="valid", ) - valid_dataset = prepare_dataset( + train_dataset = prepare_dataset( num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, - shuffle=False, + shuffle=args.shuffle, split="valid", ) # print some samples from the dataset - for index in random.sample(range(len(train_dataset)), 10): + for index in random.sample(range(len(train_dataset)), 5): print(f"Sample {index} of the training set: {train_dataset[index]}.") + print(tokenizer.decode(train_dataset[index]["input_ids"])) print() # dataset we use is in cached now @@ -604,6 +662,7 @@ def compute_metrics(trainer): for file in glob(os.path.join(os.path.dirname(__file__), "*.py")): wandb.save(os.path.abspath(file), policy="now") + # TODO: check tokenized mapping; UNKs? label_dict = get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) # needed in the trainer diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index cd2982c9..3650b090 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -79,17 +79,23 @@ def get_label_dict(label_args): def get_subword_label_dict(label_args, tokenizer): label_dict = {} + n_unks = 0 # Map auxiliary characters to token IDs with labels for i, c in enumerate(label_args.auxiliary_chars): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i - print(f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}") + print(f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}") + if token_id == tokenizer.unk_token_id: + n_unks += 1 + + print(f"found {n_unks} UNK tokens in auxiliary characters") # Map newline characters to token IDs with labels for c in label_args.newline_chars: token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.NEWLINE_INDEX - print(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}") + print(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") + print(r"{}".format(tokenizer.decode([token_id]))) return label_dict @@ -152,8 +158,17 @@ def corrupt( try: i = next(index for index, label in enumerate(labels) if label != 0) except StopIteration: + if tokenizer is not None: + input_ids = [tokenizer.cls_token_id] + input_ids + [tokenizer.sep_token_id] + # Extend block_ids for the added CLS and SEP tokens + block_ids = [block_ids[0]] + block_ids + [block_ids[-1]] + # labels for CLS and SEP tokens are 0 (none) + labels = [0] + labels + [0] return input_ids, block_ids, labels + if tokenizer: + # account for CLS and SEP token, added later + min_length = min_length - 2 if min_length is not None else None while True: if min_length is not None and len(input_ids) <= min_length: break @@ -193,6 +208,14 @@ def corrupt( except StopIteration: break + # Add CLS and SEP tokens after the corruption process + if tokenizer is not None: + input_ids = [tokenizer.cls_token_id] + input_ids + [tokenizer.sep_token_id] + # Extend block_ids for the added CLS and SEP tokens + block_ids = [block_ids[0]] + block_ids + [block_ids[-1]] + # labels for CLS and SEP tokens are 0 (none) + labels = [0] + labels + [0] + return input_ids, block_ids, labels From 7b6e64f872981593ea382760f1419b0d488c6f3b Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 23 Dec 2023 12:10:00 +0000 Subject: [PATCH 007/262] use train set again --- wtpsplit/train/train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 7240be5b..d35495f9 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -580,7 +580,7 @@ def maybe_pad(text): dataset = dataset.map( group_texts, batched=True, - num_proc=1, + num_proc=num_workers, # a bit hacky but oh well, only drop if sentence remove_columns=["ends_with_punctuation"] if args.text_column == "text" @@ -599,7 +599,7 @@ def maybe_pad(text): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="valid", + split="train", ) # print some samples from the dataset From 2fe2c8a7cc55a2eca180b9339f08b8b7640197bf Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 23 Dec 2023 12:12:59 +0000 Subject: [PATCH 008/262] fix setup? --- setup.py | 1 + wtpsplit/train/train.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 574512d5..1e72bade 100644 --- a/setup.py +++ b/setup.py @@ -16,6 +16,7 @@ "skops", "pandas>=1", "cached_property", # for Py37 + "torchinfo", ], url="https://github.com/bminixhofer/wtpsplit", package_data={"wtpsplit": ["data/*"]}, diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index d35495f9..ff398cfd 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -662,7 +662,6 @@ def compute_metrics(trainer): for file in glob(os.path.join(os.path.dirname(__file__), "*.py")): wandb.save(os.path.abspath(file), policy="now") - # TODO: check tokenized mapping; UNKs? label_dict = get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) # needed in the trainer From 4ec9026eabe52bfae25173b58bf0c3aa8aad416f Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 25 Dec 2023 14:59:11 +0000 Subject: [PATCH 009/262] some fixes --- wtpsplit/extract.py | 2 + wtpsplit/train/evaluate.py | 7 +-- wtpsplit/train/train.py | 87 +++++++++++++++++++++++--------------- wtpsplit/utils.py | 7 ++- 4 files changed, 62 insertions(+), 41 deletions(-) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 5ee39ede..90588de8 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -85,6 +85,7 @@ def extract( tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) tokens = tokenizer(batch_of_texts, return_offsets_mapping=True) # remove CLS and SEP tokens, they are added later anyhow + old_batch_of_texts = batch_of_texts batch_of_texts = [text[1:-1] for text in tokens["input_ids"]] offset_mapping = [offset[1:-1] for offset in tokens["offset_mapping"]] cls_token_id = tokenizer.cls_token_id @@ -219,6 +220,7 @@ def extract( attention_mask=batch_attention_mask, **kwargs, )["logits"] + print(np.max(logits[0, :, 0])) for i in range(start, end): original_idx, start_char_idx, end_char_idx = locs[i] diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 0f2e07cd..1c8a9b90 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -103,20 +103,17 @@ def evaluate_sentence( batch_size=batch_size, verbose=True, ) - logits, offsets_mapping = logits[0], offsets_mapping[0] + logits, offsets_mapping = logits[0], offsets_mapping[0] # FIXME true_end_indices = np.cumsum(np.array([len(s) for s in sentences])) + np.arange(len(sentences)) * len(separator) newline_labels = np.zeros(len(text)) newline_labels[true_end_indices - 1] = 1 - - print("newline_labels", newline_labels.shape) - + if "xlm" in model.config.model_type: tokens = tokenizer.tokenize(text) char_probs = token_to_char_probs(text, tokens, logits[:, positive_index], tokenizer, offsets_mapping) else: char_probs = logits[:, positive_index] - print("char probs", char_probs.shape) metrics, info = get_metrics(newline_labels, char_probs) info["newline_labels"] = newline_labels diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index ff398cfd..f4de7ffc 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -71,7 +71,11 @@ def forward( label_weights=None, **kwargs, ): - reduced_attention_mask = (input_ids != 0).to(torch.long) + if position_ids is not None: + reduced_attention_mask = (input_ids != 0).to(torch.long) + else: + # XXX: 1 is pad token id + reduced_attention_mask = (input_ids != 1).to(torch.long) output = dict( self.backbone.forward( @@ -91,6 +95,7 @@ def forward( # main (newline prediction) objective if self.do_sentence_training: + # label smoothing sentence_labels = (0.5 - self.loss_margin) + (labels == Constants.NEWLINE_INDEX + 1).to( logits.dtype ).view(-1) * self.loss_margin * 2 @@ -112,11 +117,13 @@ def forward( if self.do_auxiliary_training: loss_fn = nn.CrossEntropyLoss() + # exclude newline and no labels aux_labels = torch.where( (labels == 0) | (labels == Constants.NEWLINE_INDEX + 1), 0, labels - Constants.AUX_OFFSET, ) + # exclude reduced_attention_mask tokens from labels aux_labels = torch.where( reduced_attention_mask == 1, aux_labels, @@ -208,16 +215,16 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): tokenizer=tokenizer if args.use_subwords else None, ) - if input_ids[0] != tokenizer.cls_token_id: - print(input_ids) - print(len(input_ids)) - print(tokenizer.cls_token_id) - raise ValueError("CLS token not first token") - if input_ids[-1] != tokenizer.sep_token_id: - print(input_ids) - print(len(input_ids)) - print(tokenizer.sep_token_id) - raise ValueError("SEP token not last token") + # if input_ids[0] != tokenizer.cls_token_id: + # print(input_ids) + # print(len(input_ids)) + # print(tokenizer.cls_token_id) + # raise ValueError("CLS token not first token") + # if input_ids[-1] != tokenizer.sep_token_id: + # print(input_ids) + # print(len(input_ids)) + # print(tokenizer.sep_token_id) + # raise ValueError("SEP token not last token") if len(input_ids) > args.block_size: if tokenizer: @@ -242,21 +249,22 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): input_ids = torch.tensor(input_ids[: args.block_size], dtype=torch.long) labels = torch.tensor(labels[: args.block_size], dtype=torch.long) - if input_ids[-1] != tokenizer.sep_token_id: - print(input_ids) - print(tokenizer.sep_token_id) - print(labels) - raise ValueError("SEP token not last token") - if input_ids[0] != tokenizer.cls_token_id: - print(input_ids) - print(tokenizer.cls_token_id) - print(labels) - raise ValueError("CLS token not first token") - if (input_ids == tokenizer.cls_token_id).sum() != 1: - print(input_ids) - print(tokenizer.cls_token_id) - print(labels) - raise ValueError("CLS token not unique") + # if input_ids[-1] != tokenizer.sep_token_id: + # print(input_ids) + # print(tokenizer.sep_token_id) + # print(labels) + # raise ValueError("SEP token not last token") + # if input_ids[0] != tokenizer.cls_token_id: + # print(input_ids) + # print(tokenizer.cls_token_id) + # print(labels) + # raise ValueError("CLS token not first token") + # TODO: check this - why does it occur in train split? + # if (input_ids == tokenizer.cls_token_id).sum() != 1: + # print(input_ids) + # print(tokenizer.cls_token_id) + # print(labels) + # raise ValueError("CLS token not unique") position_ids = torch.arange(len(input_ids), dtype=torch.long) label_weights = torch.ones(args.block_size, dtype=torch.float32) @@ -317,9 +325,12 @@ def main(): backbone.config.base_model = args.model_name_or_path tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) + # needed since we create labels in collate_fn based on tokens + # TODO: problematic for tokens! tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) else: + tokenizer = None config = LACanineConfig.from_pretrained( args.model_name_or_path, raw_lookahead=args.lookahead, @@ -357,7 +368,6 @@ def main(): with training_args.main_process_first(): print(summary(model, depth=4)) - # also save base model # backbone.push_to_hub("markus583/xlm-token-untrained", private=True) def prepare_dataset( @@ -582,9 +592,9 @@ def maybe_pad(text): batched=True, num_proc=num_workers, # a bit hacky but oh well, only drop if sentence - remove_columns=["ends_with_punctuation"] + remove_columns=["ends_with_punctuation", args.text_column] if args.text_column == "text" - else [], + else [args.text_column], ) return dataset @@ -599,14 +609,21 @@ def maybe_pad(text): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="train", + split="valid", ) # print some samples from the dataset - for index in random.sample(range(len(train_dataset)), 5): - print(f"Sample {index} of the training set: {train_dataset[index]}.") - print(tokenizer.decode(train_dataset[index]["input_ids"])) - print() + count = 0 + while count < 5: + index = random.choice(range(len(train_dataset))) + sample = train_dataset[index] + + if sample.get('lang') == "de": + print(f"Sample {index} of the training set: {sample}.") + if tokenizer: + print(tokenizer.decode(sample["input_ids"])) + print() + count += 1 # dataset we use is in cached now # m_c4 files are test/valid splits of already downloaded data @@ -628,7 +645,7 @@ def compute_metrics(trainer): model = trainer._wrap_model(trainer.model, training=False) - for lang_code, lang_data in eval_data.items(): + for lang_code, lang_data in eval_data.items(): # TODO: tqdm integration if args.include_languages is not None and lang_code not in args.include_languages: continue diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 3650b090..a731c376 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -84,6 +84,7 @@ def get_subword_label_dict(label_args, tokenizer): for i, c in enumerate(label_args.auxiliary_chars): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i + # TODO: remove UNKs? print(f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}") if token_id == tokenizer.unk_token_id: n_unks += 1 @@ -177,7 +178,11 @@ def corrupt( if random.random() < label_args.newline_remove_prob: if separator == " " and random.random() < label_args.newline_whitespace_prob: if tokenizer: - input_ids[i + 1] = tokenizer.convert_tokens_to_ids(" ") + # inserting " " leaks \n information + # the token is never there naturally, so it is a 1:1 proxy for \n + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] else: input_ids[i + 1] = ord(" ") else: From 62fea1c65576f16a538d04849a09bcdfe42be86b Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 25 Dec 2023 14:59:53 +0000 Subject: [PATCH 010/262] fix mapping --- wtpsplit/train/evaluate.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 1c8a9b90..b8b265d4 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -103,8 +103,10 @@ def evaluate_sentence( batch_size=batch_size, verbose=True, ) - logits, offsets_mapping = logits[0], offsets_mapping[0] # FIXME - + logits = logits[0] + if offsets_mapping is not None: + offsets_mapping = offsets_mapping[0] + true_end_indices = np.cumsum(np.array([len(s) for s in sentences])) + np.arange(len(sentences)) * len(separator) newline_labels = np.zeros(len(text)) newline_labels[true_end_indices - 1] = 1 From 0108edfca233e334040929bb1687f997e75eb420 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 26 Dec 2023 16:37:34 +0000 Subject: [PATCH 011/262] fix token char probs --- wtpsplit/extract.py | 4 +++- wtpsplit/train/evaluate.py | 12 +++++------- wtpsplit/train/train.py | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 90588de8..662ffb82 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -83,7 +83,7 @@ def extract( use_subwords = True tokenizer = AutoTokenizer.from_pretrained(model.config.base_model) tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) - tokens = tokenizer(batch_of_texts, return_offsets_mapping=True) + tokens = tokenizer(batch_of_texts, return_offsets_mapping=True, verbose=False) # remove CLS and SEP tokens, they are added later anyhow old_batch_of_texts = batch_of_texts batch_of_texts = [text[1:-1] for text in tokens["input_ids"]] @@ -220,6 +220,8 @@ def extract( attention_mask=batch_attention_mask, **kwargs, )["logits"] + if use_subwords: + logits = logits[:, 1:-1, :] # remove CLS and SEP tokens print(np.max(logits[0, :, 0])) for i in range(start, end): diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index b8b265d4..d9b22b0e 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -32,6 +32,7 @@ def compute_f1(pred, true): def get_metrics(labels, preds): precision, recall, thresholds = sklearn.metrics.precision_recall_curve(labels, preds) + # we can use raw logits (no sigmoid) since we only care about the ordering here pr_auc = sklearn.metrics.auc(recall, precision) metrics = { @@ -62,16 +63,13 @@ def get_token_spans(tokenizer: object, offsets_mapping: list, tokens: list): return token_spans def token_to_char_probs(text: str, tokens: list, token_probs: np.ndarray, tokenizer, offsets_mapping): - char_probs = np.zeros(len(text)) + # some very low number since at non-ending position, predicting a newline is impossible + char_probs = np.zeros(len(text)) - 10000 token_spans = get_token_spans(tokenizer, offsets_mapping, tokens) - for (start, end), prob in zip(token_spans, token_probs): + for i, ((start, end), prob, token) in enumerate(zip(token_spans, token_probs, tokens)): # assign the token's prob to the last char of the token - # Ensure the end index does not exceed the length of the text - if end >= len(text): - print(f"Adjusting end index from {end} to {len(text)} for token '{text[start:end]}'") - end = len(text) - 1 - char_probs[end] = prob + char_probs[end - 1] = prob return char_probs diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index f4de7ffc..8de8f6dd 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -592,9 +592,9 @@ def maybe_pad(text): batched=True, num_proc=num_workers, # a bit hacky but oh well, only drop if sentence - remove_columns=["ends_with_punctuation", args.text_column] + remove_columns=["ends_with_punctuation"] # FIXME: needed for char-based args.text_column dropping if args.text_column == "text" - else [args.text_column], + else [], ) return dataset @@ -609,7 +609,7 @@ def maybe_pad(text): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="valid", + split="train", ) # print some samples from the dataset From e2bff46114b91246f1c48142bf139cefa11f501e Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Dec 2023 07:30:37 +0000 Subject: [PATCH 012/262] fix collate length --- configs/xlmr_stratify_0.1_3layers.json | 6 +-- .../xlmr_stratify_0.1_3layers_shorter.json | 41 +++++++++++++++++++ wtpsplit/train/train.py | 4 ++ 3 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_3layers_shorter.json diff --git a/configs/xlmr_stratify_0.1_3layers.json b/configs/xlmr_stratify_0.1_3layers.json index fc40f4c0..d8425261 100644 --- a/configs/xlmr_stratify_0.1_3layers.json +++ b/configs/xlmr_stratify_0.1_3layers.json @@ -1,6 +1,6 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-TEST", + "output_dir": "xlmr-normal", "train_text_path": "data/sentence/train.parquet", "valid_text_path": "data/sentence/valid.parquet", "block_size": 512, @@ -8,9 +8,9 @@ "do_train": true, "do_eval": true, "evaluation_strategy": "steps", - "per_device_train_batch_size": 64, + "per_device_train_batch_size": 32, "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 1, + "gradient_accumulation_steps": 2, "eval_accumulation_steps": 8, "dataloader_num_workers": 4, "preprocessing_num_workers": 32, diff --git a/configs/xlmr_stratify_0.1_3layers_shorter.json b/configs/xlmr_stratify_0.1_3layers_shorter.json new file mode 100644 index 00000000..056dee98 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_shorter.json @@ -0,0 +1,41 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-shorter", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 400000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3 +} \ No newline at end of file diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 8de8f6dd..c4177774 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -240,6 +240,10 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): labels = labels[start : start + args.block_size - 1] # always include SEP if input_ids[-1] != tokenizer.sep_token_id: + # also insert PAD token as long as len < block_size + while len(input_ids) < args.block_size - 1: + input_ids = input_ids + [tokenizer.pad_token_id] + labels = labels + [0] input_ids = input_ids + [tokenizer.sep_token_id] labels = labels + [0] else: From d55d547d44e80918c87837e145e9eecf8ad571c0 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Dec 2023 09:26:41 +0000 Subject: [PATCH 013/262] fix collate length?! --- wtpsplit/train/evaluate.py | 2 +- wtpsplit/train/train.py | 24 ++++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index d9b22b0e..d6475ba3 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -110,7 +110,7 @@ def evaluate_sentence( newline_labels[true_end_indices - 1] = 1 if "xlm" in model.config.model_type: - tokens = tokenizer.tokenize(text) + tokens = tokenizer.tokenize(text, verbose=False) char_probs = token_to_char_probs(text, tokens, logits[:, positive_index], tokenizer, offsets_mapping) else: char_probs = logits[:, positive_index] diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index c4177774..6c25ea9d 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -10,6 +10,7 @@ import numpy as np import torch +from tqdm.auto import tqdm import wandb from datasets import load_dataset from datasets.download import DownloadConfig @@ -34,7 +35,7 @@ # TODO: double-check checkpointing and saving (also to txt) -# os.environ["PJRT_DEVICE"] = "None" +os.environ["PJRT_DEVICE"] = "None" class Model(nn.Module): @@ -241,7 +242,8 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): # always include SEP if input_ids[-1] != tokenizer.sep_token_id: # also insert PAD token as long as len < block_size - while len(input_ids) < args.block_size - 1: + while len(input_ids) <= args.block_size - 1: + print("first", len(input_ids)) input_ids = input_ids + [tokenizer.pad_token_id] labels = labels + [0] input_ids = input_ids + [tokenizer.sep_token_id] @@ -250,6 +252,16 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): start = np.random.randint(0, len(input_ids) - args.block_size) input_ids = input_ids[start : start + args.block_size] labels = labels[start : start + args.block_size] + elif len(input_ids) != args.block_size and args.use_subwords: + del input_ids[-1] + del labels[-1] + while len(input_ids) <= args.block_size - 1: + # insert pad token at second-to-last position + print("second", len(input_ids)) + input_ids = input_ids + [tokenizer.pad_token_id] + labels = labels + [0] + input_ids = input_ids + [tokenizer.sep_token_id] + labels = labels + [0] input_ids = torch.tensor(input_ids[: args.block_size], dtype=torch.long) labels = torch.tensor(labels[: args.block_size], dtype=torch.long) @@ -580,6 +592,10 @@ def maybe_pad(text): num_proc=num_workers, remove_columns=[args.text_column], ) + else: + # this is no longer used and would cause an error otherwise + with training_args.main_process_first(): + dataset = dataset.remove_columns([args.text_column]) if split == "train": with training_args.main_process_first(): @@ -596,7 +612,7 @@ def maybe_pad(text): batched=True, num_proc=num_workers, # a bit hacky but oh well, only drop if sentence - remove_columns=["ends_with_punctuation"] # FIXME: needed for char-based args.text_column dropping + remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], ) @@ -649,7 +665,7 @@ def compute_metrics(trainer): model = trainer._wrap_model(trainer.model, training=False) - for lang_code, lang_data in eval_data.items(): # TODO: tqdm integration + for lang_code, lang_data in tqdm(eval_data.items(), desc="Evaluate!"): if args.include_languages is not None and lang_code not in args.include_languages: continue From 469dd13aa3147146a8a2da9701d73b9e76b1bf14 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Dec 2023 11:28:29 +0000 Subject: [PATCH 014/262] add logging, no unk aux chars --- configs/xlmr_stratify_0.1_3layers_nounks.json | 42 +++++++ utils/remove_unks.py | 52 +++++++++ wtpsplit/extract.py | 4 +- wtpsplit/punctuation_xlmr.txt | 108 ++++++++++++++++++ wtpsplit/train/train.py | 108 +++++++++++------- wtpsplit/utils.py | 40 +++++-- 6 files changed, 303 insertions(+), 51 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_3layers_nounks.json create mode 100644 utils/remove_unks.py create mode 100644 wtpsplit/punctuation_xlmr.txt diff --git a/configs/xlmr_stratify_0.1_3layers_nounks.json b/configs/xlmr_stratify_0.1_3layers_nounks.json new file mode 100644 index 00000000..22f78160 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_nounks.json @@ -0,0 +1,42 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-no_unks", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 2000000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr.txt" +} \ No newline at end of file diff --git a/utils/remove_unks.py b/utils/remove_unks.py new file mode 100644 index 00000000..bd8411e8 --- /dev/null +++ b/utils/remove_unks.py @@ -0,0 +1,52 @@ +import os +from transformers import AutoTokenizer +from tokenizers import AddedToken +from wtpsplit.utils import Constants, LabelArgs + +def get_subword_label_dict(label_args, tokenizer): + label_dict = {} + + n_unks = 0 + # Map auxiliary characters to token IDs with labels + for i, c in enumerate(label_args.auxiliary_chars): + token_id = tokenizer.convert_tokens_to_ids(c) + label_dict[token_id] = 1 + Constants.AUX_OFFSET + i + # TODO: remove UNKs? + print( + f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}" + ) + if token_id == tokenizer.unk_token_id: + n_unks += 1 + + print(f"found {n_unks} UNK tokens in auxiliary characters") + + # Map newline characters to token IDs with labels + for c in label_args.newline_chars: + token_id = tokenizer.convert_tokens_to_ids(c) + label_dict[token_id] = 1 + Constants.NEWLINE_INDEX + print(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") + print(r"{}".format(tokenizer.decode([token_id]))) + + return label_dict + + +tokenizer = AutoTokenizer.from_pretrained("xlm-roberta-base") +tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + +label_dict = get_subword_label_dict(LabelArgs(custom_punctuation_file='punctuation_xlmr.txt'), tokenizer) +print(len(label_dict)) + +def write_punctuation_file(): + with open(os.path.join(Constants.ROOT_DIR, "punctuation_xlmr.txt"), 'w', encoding='utf-8') as file: + for char in Constants.PUNCTUATION_CHARS: + token_id = tokenizer.convert_tokens_to_ids(char) + if token_id != tokenizer.unk_token_id: + file.write(char + '\n') + +write_punctuation_file() + +label_args_default = LabelArgs() +print(Constants.PUNCTUATION_CHARS, len(Constants.PUNCTUATION_CHARS)) + +label_args_custom = LabelArgs(custom_punctuation_file='punctuation_xlmr.txt') +print(Constants.PUNCTUATION_CHARS, len(Constants.PUNCTUATION_CHARS)) \ No newline at end of file diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 662ffb82..6e061983 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -1,5 +1,6 @@ import math import sys +import logging import numpy as np from tqdm.auto import tqdm @@ -8,6 +9,7 @@ from wtpsplit.utils import Constants, hash_encode +logger = logging.getLogger(__name__) class ORTWrapper: def __init__(self, config, ort_session): @@ -222,7 +224,7 @@ def extract( )["logits"] if use_subwords: logits = logits[:, 1:-1, :] # remove CLS and SEP tokens - print(np.max(logits[0, :, 0])) + logger.debug(np.max(logits[0, :, 0])) for i in range(start, end): original_idx, start_char_idx, end_char_idx = locs[i] diff --git a/wtpsplit/punctuation_xlmr.txt b/wtpsplit/punctuation_xlmr.txt new file mode 100644 index 00000000..93cf26ab --- /dev/null +++ b/wtpsplit/punctuation_xlmr.txt @@ -0,0 +1,108 @@ +! +" +# +$ +% +& +' +( +) +* ++ +, +- +. +/ +: +; +< += +> +? +@ +[ +\ +] +^ +_ +` +{ +| +} +~ +¡ +£ +¤ +§ +© +« +¬ +® +° +± +· +» +¿ +÷ +՛ +՝ +՞ +։ +־ +׳ +، +؛ +؟ +۔ +। +॥ +၊ +။ +၌ +၍ +၎ +၏ +፡ +። +፣ +፤ +፥ +។ +៕ +៖ +– +— +‘ +’ +‚ +“ +” +„ +• +′ +‹ +› +€ +↑ +→ +⇌ +∑ +√ +╛ +□ +▬ +☎ +➖ +、 +。 +《 +》 +「 +」 +『 +』 +【 +】 +・ +~ +💘 diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 6c25ea9d..e13b5a2b 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -1,3 +1,4 @@ +import logging import math import os import sys @@ -18,6 +19,8 @@ from transformers import HfArgumentParser, TrainingArguments, AutoTokenizer, set_seed from torchinfo import summary from tokenizers import AddedToken +import transformers +import datasets from wtpsplit.models import ( BertCharConfig, @@ -31,13 +34,32 @@ from wtpsplit.train.trainer import Trainer from wtpsplit.utils import Constants, LabelArgs, corrupt, get_label_dict, get_subword_label_dict -# TODO: set logger (see ScaLearn?) -# TODO: double-check checkpointing and saving (also to txt) +logger = logging.getLogger(__name__) + -os.environ["PJRT_DEVICE"] = "None" +# TODO: double-check checkpointing and saving (also to txt) +# os.environ["PJRT_DEVICE"] = "None" +def setup_logging(training_args: transformers.TrainingArguments) -> None: + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + handlers=[logging.StreamHandler(sys.stdout)], + ) + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + datasets.utils.logging.set_verbosity(log_level) + transformers.utils.logging.set_verbosity(log_level) + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + # Log on each process the small summary: + logger.warning( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" + ) + logger.info(f"Training/evaluation parameters {training_args}") class Model(nn.Module): def __init__( self, @@ -216,16 +238,16 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): tokenizer=tokenizer if args.use_subwords else None, ) - # if input_ids[0] != tokenizer.cls_token_id: - # print(input_ids) - # print(len(input_ids)) - # print(tokenizer.cls_token_id) - # raise ValueError("CLS token not first token") - # if input_ids[-1] != tokenizer.sep_token_id: - # print(input_ids) - # print(len(input_ids)) - # print(tokenizer.sep_token_id) - # raise ValueError("SEP token not last token") + if input_ids[0] != tokenizer.cls_token_id: + logger.warn(input_ids) + logger.warn(len(input_ids)) + logger.warn(tokenizer.cls_token_id) + # raise ValueError("CLS token not first token") + if input_ids[-1] != tokenizer.sep_token_id: + logger.warn(input_ids) + logger.warn(len(input_ids)) + logger.warn(tokenizer.sep_token_id) + # raise ValueError("SEP token not last token") if len(input_ids) > args.block_size: if tokenizer: @@ -243,7 +265,6 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): if input_ids[-1] != tokenizer.sep_token_id: # also insert PAD token as long as len < block_size while len(input_ids) <= args.block_size - 1: - print("first", len(input_ids)) input_ids = input_ids + [tokenizer.pad_token_id] labels = labels + [0] input_ids = input_ids + [tokenizer.sep_token_id] @@ -257,7 +278,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): del labels[-1] while len(input_ids) <= args.block_size - 1: # insert pad token at second-to-last position - print("second", len(input_ids)) + logger.debug("second", len(input_ids)) input_ids = input_ids + [tokenizer.pad_token_id] labels = labels + [0] input_ids = input_ids + [tokenizer.sep_token_id] @@ -265,22 +286,22 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): input_ids = torch.tensor(input_ids[: args.block_size], dtype=torch.long) labels = torch.tensor(labels[: args.block_size], dtype=torch.long) - # if input_ids[-1] != tokenizer.sep_token_id: - # print(input_ids) - # print(tokenizer.sep_token_id) - # print(labels) - # raise ValueError("SEP token not last token") - # if input_ids[0] != tokenizer.cls_token_id: - # print(input_ids) - # print(tokenizer.cls_token_id) - # print(labels) - # raise ValueError("CLS token not first token") - # TODO: check this - why does it occur in train split? - # if (input_ids == tokenizer.cls_token_id).sum() != 1: - # print(input_ids) - # print(tokenizer.cls_token_id) - # print(labels) - # raise ValueError("CLS token not unique") + if input_ids[-1] != tokenizer.sep_token_id: + logger.warn(input_ids) + logger.warn(tokenizer.sep_token_id) + logger.warn(labels) + # raise ValueError("SEP token not last token") + if input_ids[0] != tokenizer.cls_token_id: + logger.warn(input_ids) + logger.warn(tokenizer.cls_token_id) + logger.warn(labels) + # raise ValueError("CLS token not first token") + # FIXME: check this - why does it occur in train split? + if (input_ids == tokenizer.cls_token_id).sum() != 1: + logger.warn(input_ids) + logger.warn(tokenizer.cls_token_id) + logger.warn(labels) + # raise ValueError("CLS token not unique") position_ids = torch.arange(len(input_ids), dtype=torch.long) label_weights = torch.ones(args.block_size, dtype=torch.float32) @@ -318,7 +339,8 @@ def main(): else: (args, training_args, label_args) = parser.parse_args_into_dataclasses() wandb_name = None - + + setup_logging(training_args) set_seed(training_args.seed) num_labels = Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0) @@ -342,7 +364,6 @@ def main(): backbone.config.base_model = args.model_name_or_path tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) # needed since we create labels in collate_fn based on tokens - # TODO: problematic for tokens! tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) else: @@ -383,7 +404,7 @@ def main(): ) with training_args.main_process_first(): - print(summary(model, depth=4)) + logger.info(summary(model, depth=4)) # backbone.push_to_hub("markus583/xlm-token-untrained", private=True) def prepare_dataset( @@ -395,6 +416,7 @@ def prepare_dataset( with training_args.main_process_first(): dlconf = DownloadConfig(cache_dir="/home/Markus/.cache/huggingface/datasets") dataset = load_dataset("markus583/mC4-TEST", split=split, download_config=dlconf) + logger.info(f"Loaded {split} dataset.") # optional: delete downloaded dataset, it is stored in cache_dir now (but we delete it later) # ~40GB on disk # os.system("rm -rf /home/Markus/.cache/huggingface/datasets") @@ -406,9 +428,11 @@ def prepare_dataset( lambda example: example["lang"] in include_languages, num_proc=args.preprocessing_num_workers, ) + logger.info(f"Filtered to {len(dataset)} examples.") if shuffle: dataset = dataset.shuffle(seed=42) + logger.info(f"Shuffled dataset.") # very likely not relevant / used only for the compound part if args.ignore_non_hyphen: @@ -417,6 +441,7 @@ def prepare_dataset( lambda sample: any(c in sample[args.text_column] for c in label_args.hyphen_chars), num_proc=args.preprocessing_num_workers, ) + logger.info(f"Filtered to {len(dataset)} examples.") # "punctuation-specific sampling" in the paper if args.non_punctuation_sample_ratio is not None: @@ -596,13 +621,14 @@ def maybe_pad(text): # this is no longer used and would cause an error otherwise with training_args.main_process_first(): dataset = dataset.remove_columns([args.text_column]) - + logger.info(f"Tokenized {split} dataset.") + if split == "train": with training_args.main_process_first(): for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): for file in files: if file.startswith("m_c4-test-train"): - print(f"Removing {os.path.join(root, file)}") + logger.info(f"Removing {os.path.join(root, file)}") os.remove(os.path.join(root, file)) if not args.one_sample_per_line: @@ -616,6 +642,7 @@ def maybe_pad(text): if args.text_column == "text" else [], ) + logger.info(f"Grouped {split} dataset.") return dataset @@ -625,12 +652,14 @@ def maybe_pad(text): shuffle=False, split="valid", ) + logger.info(f"Valid dataset has {len(valid_dataset)} examples.") train_dataset = prepare_dataset( num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, split="train", ) + logger.info(f"Train dataset has {len(train_dataset)} examples.") # print some samples from the dataset count = 0 @@ -639,10 +668,10 @@ def maybe_pad(text): sample = train_dataset[index] if sample.get('lang') == "de": - print(f"Sample {index} of the training set: {sample}.") + logger.info(f"Sample {index} of the training set: {sample}.") if tokenizer: - print(tokenizer.decode(sample["input_ids"])) - print() + logger.info(tokenizer.decode(sample["input_ids"])) + logger.info() count += 1 # dataset we use is in cached now @@ -700,6 +729,7 @@ def compute_metrics(trainer): wandb.save(os.path.abspath(file), policy="now") label_dict = get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) + logger.info(f"Label dict has {len(label_dict)} entries.") # needed in the trainer training_args.adapter_warmup_steps = args.adapter_warmup_steps diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index a731c376..e6fc8f53 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -5,6 +5,7 @@ from cached_property import cached_property from pathlib import Path from typing import List +import logging import numpy as np import pandas as pd @@ -12,10 +13,17 @@ # same as in CANINE PRIMES = [31, 43, 59, 61, 73, 97, 103, 113, 137, 149, 157, 173, 181, 193, 211, 223] +logger = logging.getLogger(__name__) class ConstantsClass: NEWLINE_INDEX = 0 AUX_OFFSET = 1 + DEFAULT_PUNCTUATION_FILE = "punctuation.txt" + _PUNCTUATION_FILE = "punctuation.txt" + + @classmethod + def set_punctuation_file(cls, file_name): + cls._PUNCTUATION_FILE = file_name @cached_property def ROOT_DIR(self): @@ -25,16 +33,19 @@ def ROOT_DIR(self): def CACHE_DIR(self): CACHE_DIR = self.ROOT_DIR / ".cache" CACHE_DIR.mkdir(exist_ok=True) - return CACHE_DIR @cached_property def LANGINFO(self): return pd.read_csv(os.path.join(self.ROOT_DIR, "data", "language_info.csv"), index_col=0) - @cached_property + @property def PUNCTUATION_CHARS(self): - return [x.strip() for x in open(os.path.join(self.ROOT_DIR, "data", "punctuation.txt")).readlines()] + punctuation_path = os.path.join(self.ROOT_DIR, "data", self._PUNCTUATION_FILE) + if os.path.exists(punctuation_path): + return [x.strip() for x in open(punctuation_path).readlines()] + else: + raise FileNotFoundError(f"The file {punctuation_path} does not exist.") @cached_property def PUNCTUATION_MAP(self): @@ -42,13 +53,12 @@ def PUNCTUATION_MAP(self): @cached_property def LANG_CODE_TO_INDEX(self): - return {lang: i for i, lang in enumerate(Constants.LANGINFO.index)} + return {lang: i for i, lang in enumerate(self.LANGINFO.index)} @cached_property def SEPARATORS(self): return {lang: ("" if row["no_whitespace"] else " ") for lang, row in Constants.LANGINFO.iterrows()} - Constants = ConstantsClass() @@ -60,9 +70,17 @@ class LabelArgs: newline_whitespace_prob: float = 0.99 hyphen_smooth_prob: float = 0.9 newline_chars: List[str] = field(default_factory=lambda: ["\n"]) - auxiliary_chars: List[str] = field(default_factory=lambda: Constants.PUNCTUATION_CHARS.copy()) + auxiliary_chars: List[str] = field(default_factory=lambda: []) hyphen_chars: List[str] = field(default_factory=lambda: ["-", "‐"]) use_auxiliary: bool = False + custom_punctuation_file: str = None + + def __post_init__(self): + if self.custom_punctuation_file: + Constants.set_punctuation_file(self.custom_punctuation_file) + else: + Constants.set_punctuation_file("punctuation.txt") + self.auxiliary_chars = Constants.DEFAULT_PUNCTUATION_FILE def get_label_dict(label_args): @@ -84,19 +102,18 @@ def get_subword_label_dict(label_args, tokenizer): for i, c in enumerate(label_args.auxiliary_chars): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i - # TODO: remove UNKs? - print(f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}") + logger.info(f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}") if token_id == tokenizer.unk_token_id: n_unks += 1 - print(f"found {n_unks} UNK tokens in auxiliary characters") + logger.warn(f"found {n_unks} UNK tokens in auxiliary characters") # Map newline characters to token IDs with labels for c in label_args.newline_chars: token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.NEWLINE_INDEX - print(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") - print(r"{}".format(tokenizer.decode([token_id]))) + logger.info(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") + logger.info(r"{}".format(tokenizer.decode([token_id]))) return label_dict @@ -289,3 +306,4 @@ def reconstruct_sentences(text, partial_sentences): fixed_sentences.append(text[i:]) return fixed_sentences + From c5d9f66a2fa20416e664ddc703843942252a35e7 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Dec 2023 11:37:50 +0000 Subject: [PATCH 015/262] add xlmr punct --- wtpsplit/data/punctuation_xlmr.txt | 108 +++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 wtpsplit/data/punctuation_xlmr.txt diff --git a/wtpsplit/data/punctuation_xlmr.txt b/wtpsplit/data/punctuation_xlmr.txt new file mode 100644 index 00000000..93cf26ab --- /dev/null +++ b/wtpsplit/data/punctuation_xlmr.txt @@ -0,0 +1,108 @@ +! +" +# +$ +% +& +' +( +) +* ++ +, +- +. +/ +: +; +< += +> +? +@ +[ +\ +] +^ +_ +` +{ +| +} +~ +¡ +£ +¤ +§ +© +« +¬ +® +° +± +· +» +¿ +÷ +՛ +՝ +՞ +։ +־ +׳ +، +؛ +؟ +۔ +। +॥ +၊ +။ +၌ +၍ +၎ +၏ +፡ +። +፣ +፤ +፥ +។ +៕ +៖ +– +— +‘ +’ +‚ +“ +” +„ +• +′ +‹ +› +€ +↑ +→ +⇌ +∑ +√ +╛ +□ +▬ +☎ +➖ +、 +。 +《 +》 +「 +」 +『 +』 +【 +】 +・ +~ +💘 From e5251c25affcec2e172073cb7b9b69b07bb73ee3 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Dec 2023 14:01:15 +0000 Subject: [PATCH 016/262] more fixes --- configs/xlmr_stratify_0.1_3layers.json | 4 +- configs/xlmr_stratify_0.1_3layers_nounks.json | 3 +- utils/remove_unks.py | 17 ++- wtpsplit/data/punctuation_xlmr_unk.txt | 109 ++++++++++++++++++ wtpsplit/train/train.py | 27 ++--- wtpsplit/utils.py | 11 +- 6 files changed, 142 insertions(+), 29 deletions(-) create mode 100644 wtpsplit/data/punctuation_xlmr_unk.txt diff --git a/configs/xlmr_stratify_0.1_3layers.json b/configs/xlmr_stratify_0.1_3layers.json index d8425261..3e5e4bed 100644 --- a/configs/xlmr_stratify_0.1_3layers.json +++ b/configs/xlmr_stratify_0.1_3layers.json @@ -37,5 +37,7 @@ "use_auxiliary": true, "ddp_timeout": 3600, "use_subwords": true, - "num_hidden_layers": 3 + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_nounks.json b/configs/xlmr_stratify_0.1_3layers_nounks.json index 22f78160..f61c50b7 100644 --- a/configs/xlmr_stratify_0.1_3layers_nounks.json +++ b/configs/xlmr_stratify_0.1_3layers_nounks.json @@ -38,5 +38,6 @@ "ddp_timeout": 3600, "use_subwords": true, "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr.txt" + "custom_punctuation_file": "punctuation_xlmr.txt", + "log_level": "info" } \ No newline at end of file diff --git a/utils/remove_unks.py b/utils/remove_unks.py index bd8411e8..c7455e20 100644 --- a/utils/remove_unks.py +++ b/utils/remove_unks.py @@ -8,7 +8,7 @@ def get_subword_label_dict(label_args, tokenizer): n_unks = 0 # Map auxiliary characters to token IDs with labels - for i, c in enumerate(label_args.auxiliary_chars): + for i, c in enumerate(Constants.PUNCTUATION_CHARS): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i # TODO: remove UNKs? @@ -33,7 +33,7 @@ def get_subword_label_dict(label_args, tokenizer): tokenizer = AutoTokenizer.from_pretrained("xlm-roberta-base") tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) -label_dict = get_subword_label_dict(LabelArgs(custom_punctuation_file='punctuation_xlmr.txt'), tokenizer) +label_dict = get_subword_label_dict(LabelArgs(), tokenizer) print(len(label_dict)) def write_punctuation_file(): @@ -42,8 +42,21 @@ def write_punctuation_file(): token_id = tokenizer.convert_tokens_to_ids(char) if token_id != tokenizer.unk_token_id: file.write(char + '\n') + +def write_punctuation_file_unk(): + added_unk = False + with open(os.path.join(Constants.ROOT_DIR, "punctuation_xlmr_unk.txt"), 'w', encoding='utf-8') as file: + for char in Constants.PUNCTUATION_CHARS: + token_id = tokenizer.convert_tokens_to_ids(char) + if token_id != tokenizer.unk_token_id: + file.write(char + '\n') + elif not added_unk: + print("added unk") + file.write('\n') + added_unk = True write_punctuation_file() +write_punctuation_file_unk() label_args_default = LabelArgs() print(Constants.PUNCTUATION_CHARS, len(Constants.PUNCTUATION_CHARS)) diff --git a/wtpsplit/data/punctuation_xlmr_unk.txt b/wtpsplit/data/punctuation_xlmr_unk.txt new file mode 100644 index 00000000..916398b3 --- /dev/null +++ b/wtpsplit/data/punctuation_xlmr_unk.txt @@ -0,0 +1,109 @@ +! +" +# +$ +% +& +' +( +) +* ++ +, +- +. +/ +: +; +< += +> +? +@ +[ +\ +] +^ +_ +` +{ +| +} +~ +¡ +£ +¤ +§ + +© +« +¬ +® +° +± +· +» +¿ +÷ +՛ +՝ +՞ +։ +־ +׳ +، +؛ +؟ +۔ +। +॥ +၊ +။ +၌ +၍ +၎ +၏ +፡ +። +፣ +፤ +፥ +។ +៕ +៖ +– +— +‘ +’ +‚ +“ +” +„ +• +′ +‹ +› +€ +↑ +→ +⇌ +∑ +√ +╛ +□ +▬ +☎ +➖ +、 +。 +《 +》 +「 +」 +『 +』 +【 +】 +・ +~ +💘 diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index e13b5a2b..938c5db4 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -238,17 +238,6 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): tokenizer=tokenizer if args.use_subwords else None, ) - if input_ids[0] != tokenizer.cls_token_id: - logger.warn(input_ids) - logger.warn(len(input_ids)) - logger.warn(tokenizer.cls_token_id) - # raise ValueError("CLS token not first token") - if input_ids[-1] != tokenizer.sep_token_id: - logger.warn(input_ids) - logger.warn(len(input_ids)) - logger.warn(tokenizer.sep_token_id) - # raise ValueError("SEP token not last token") - if len(input_ids) > args.block_size: if tokenizer: # always include CLS @@ -264,7 +253,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): # always include SEP if input_ids[-1] != tokenizer.sep_token_id: # also insert PAD token as long as len < block_size - while len(input_ids) <= args.block_size - 1: + while len(input_ids) < args.block_size - 1: input_ids = input_ids + [tokenizer.pad_token_id] labels = labels + [0] input_ids = input_ids + [tokenizer.sep_token_id] @@ -273,34 +262,33 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): start = np.random.randint(0, len(input_ids) - args.block_size) input_ids = input_ids[start : start + args.block_size] labels = labels[start : start + args.block_size] - elif len(input_ids) != args.block_size and args.use_subwords: + if len(input_ids) != args.block_size and tokenizer: del input_ids[-1] del labels[-1] - while len(input_ids) <= args.block_size - 1: + while len(input_ids) < args.block_size - 1: # insert pad token at second-to-last position - logger.debug("second", len(input_ids)) + logger.warn("second", len(input_ids)) input_ids = input_ids + [tokenizer.pad_token_id] labels = labels + [0] input_ids = input_ids + [tokenizer.sep_token_id] labels = labels + [0] + if len(input_ids) != args.block_size: + logger.warn(len(input_ids)) input_ids = torch.tensor(input_ids[: args.block_size], dtype=torch.long) labels = torch.tensor(labels[: args.block_size], dtype=torch.long) if input_ids[-1] != tokenizer.sep_token_id: logger.warn(input_ids) logger.warn(tokenizer.sep_token_id) - logger.warn(labels) # raise ValueError("SEP token not last token") if input_ids[0] != tokenizer.cls_token_id: logger.warn(input_ids) logger.warn(tokenizer.cls_token_id) - logger.warn(labels) # raise ValueError("CLS token not first token") # FIXME: check this - why does it occur in train split? if (input_ids == tokenizer.cls_token_id).sum() != 1: logger.warn(input_ids) logger.warn(tokenizer.cls_token_id) - logger.warn(labels) # raise ValueError("CLS token not unique") position_ids = torch.arange(len(input_ids), dtype=torch.long) @@ -657,7 +645,7 @@ def maybe_pad(text): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="train", + split="valid", ) logger.info(f"Train dataset has {len(train_dataset)} examples.") @@ -671,7 +659,6 @@ def maybe_pad(text): logger.info(f"Sample {index} of the training set: {sample}.") if tokenizer: logger.info(tokenizer.decode(sample["input_ids"])) - logger.info() count += 1 # dataset we use is in cached now diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index e6fc8f53..4bd3c38a 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -86,7 +86,7 @@ def __post_init__(self): def get_label_dict(label_args): label_dict = {} - for i, c in enumerate(label_args.auxiliary_chars): + for i, c in enumerate(Constants.PUNCTUATION_CHARS): label_dict[ord(c)] = 1 + Constants.AUX_OFFSET + i for c in label_args.newline_chars: @@ -99,10 +99,11 @@ def get_subword_label_dict(label_args, tokenizer): n_unks = 0 # Map auxiliary characters to token IDs with labels - for i, c in enumerate(label_args.auxiliary_chars): + logger.warn(f"Using {Constants.PUNCTUATION_CHARS} auxiliary characters.") + for i, c in enumerate(Constants.PUNCTUATION_CHARS): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i - logger.info(f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}") + logger.warn(f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}") if token_id == tokenizer.unk_token_id: n_unks += 1 @@ -112,8 +113,8 @@ def get_subword_label_dict(label_args, tokenizer): for c in label_args.newline_chars: token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.NEWLINE_INDEX - logger.info(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") - logger.info(r"{}".format(tokenizer.decode([token_id]))) + logger.warn(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") + logger.warn(r"{}".format(tokenizer.decode([token_id]))) return label_dict From 250a4498dd7c3725ce78031429d110820f5482ff Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Dec 2023 14:07:15 +0000 Subject: [PATCH 017/262] fix split --- wtpsplit/train/train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 938c5db4..bac5ecfc 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -641,11 +641,12 @@ def maybe_pad(text): split="valid", ) logger.info(f"Valid dataset has {len(valid_dataset)} examples.") + train_dataset = prepare_dataset( num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="valid", + split="train", ) logger.info(f"Train dataset has {len(train_dataset)} examples.") From 176e25e53d03b866e449576cae83d5a473e56926 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Dec 2023 19:31:32 +0000 Subject: [PATCH 018/262] remove html tags --- .gitignore | 3 +- test.py | 9 +++- tpu_starter.sh | 2 +- utils/remove_unks.py | 20 +++++---- wtpsplit/configs.py | 4 +- wtpsplit/evaluation/__init__.py | 4 +- wtpsplit/evaluation/intrinsic.py | 8 ++-- wtpsplit/extract.py | 26 ++++++------ wtpsplit/models.py | 21 +++++----- wtpsplit/train/evaluate.py | 10 +++-- wtpsplit/train/train.py | 71 ++++++++++++++++++++------------ wtpsplit/utils.py | 20 +++++---- xla_spawn.py | 2 +- 13 files changed, 121 insertions(+), 79 deletions(-) diff --git a/.gitignore b/.gitignore index 74d550bc..5ec98e92 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ external notebooks final_outputs .cache* -data_subset/** \ No newline at end of file +data_subset/** +*.pth \ No newline at end of file diff --git a/test.py b/test.py index 64fc0c50..495b6255 100644 --- a/test.py +++ b/test.py @@ -8,28 +8,35 @@ def test_split_ort(): splits = wtp.split("This is a test sentence This is another test sentence.", threshold=0.005) assert splits == ["This is a test sentence ", "This is another test sentence."] + def test_split_torch(): wtp = WtP("benjamin/wtp-bert-mini", hub_prefix=None) splits = wtp.split("This is a test sentence This is another test sentence.", threshold=0.005) assert splits == ["This is a test sentence ", "This is another test sentence."] + def test_split_torch_canine(): wtp = WtP("benjamin/wtp-canine-s-1l", hub_prefix=None) splits = wtp.split("This is a test sentence. This is another test sentence.", lang_code="en") assert splits == ["This is a test sentence. ", "This is another test sentence."] + def test_move_device(): wtp = WtP("benjamin/wtp-bert-mini", hub_prefix=None) wtp.half().to("cpu") + def test_strip_whitespace(): wtp = WtP("benjamin/wtp-bert-mini", hub_prefix=None) - splits = wtp.split("This is a test sentence This is another test sentence. ", strip_whitespace=True, threshold=0.005) + splits = wtp.split( + "This is a test sentence This is another test sentence. ", strip_whitespace=True, threshold=0.005 + ) assert splits == ["This is a test sentence", "This is another test sentence."] + def test_split_long(): prefix = "x" * 2000 diff --git a/tpu_starter.sh b/tpu_starter.sh index 3ee42e81..f8d5ba55 100755 --- a/tpu_starter.sh +++ b/tpu_starter.sh @@ -1,4 +1,4 @@ for var in "$@" do - until gcloud compute tpus tpu-vm create $var --zone=europe-west4-a --accelerator-type=v3-8 --version=tpu-vm-base; do sleep 5; done + until gcloud compute tpus tpu-vm create $var --zone=europe-west4-a --accelerator-type=v3-8 --version=tpu-vm-pt-1.13; do sleep 3; done done \ No newline at end of file diff --git a/utils/remove_unks.py b/utils/remove_unks.py index c7455e20..ab95b45a 100644 --- a/utils/remove_unks.py +++ b/utils/remove_unks.py @@ -3,6 +3,7 @@ from tokenizers import AddedToken from wtpsplit.utils import Constants, LabelArgs + def get_subword_label_dict(label_args, tokenizer): label_dict = {} @@ -36,30 +37,33 @@ def get_subword_label_dict(label_args, tokenizer): label_dict = get_subword_label_dict(LabelArgs(), tokenizer) print(len(label_dict)) + def write_punctuation_file(): - with open(os.path.join(Constants.ROOT_DIR, "punctuation_xlmr.txt"), 'w', encoding='utf-8') as file: + with open(os.path.join(Constants.ROOT_DIR, "punctuation_xlmr.txt"), "w", encoding="utf-8") as file: for char in Constants.PUNCTUATION_CHARS: token_id = tokenizer.convert_tokens_to_ids(char) if token_id != tokenizer.unk_token_id: - file.write(char + '\n') - + file.write(char + "\n") + + def write_punctuation_file_unk(): added_unk = False - with open(os.path.join(Constants.ROOT_DIR, "punctuation_xlmr_unk.txt"), 'w', encoding='utf-8') as file: + with open(os.path.join(Constants.ROOT_DIR, "punctuation_xlmr_unk.txt"), "w", encoding="utf-8") as file: for char in Constants.PUNCTUATION_CHARS: token_id = tokenizer.convert_tokens_to_ids(char) if token_id != tokenizer.unk_token_id: - file.write(char + '\n') + file.write(char + "\n") elif not added_unk: print("added unk") - file.write('\n') + file.write("\n") added_unk = True + write_punctuation_file() write_punctuation_file_unk() label_args_default = LabelArgs() print(Constants.PUNCTUATION_CHARS, len(Constants.PUNCTUATION_CHARS)) -label_args_custom = LabelArgs(custom_punctuation_file='punctuation_xlmr.txt') -print(Constants.PUNCTUATION_CHARS, len(Constants.PUNCTUATION_CHARS)) \ No newline at end of file +label_args_custom = LabelArgs(custom_punctuation_file="punctuation_xlmr.txt") +print(Constants.PUNCTUATION_CHARS, len(Constants.PUNCTUATION_CHARS)) diff --git a/wtpsplit/configs.py b/wtpsplit/configs.py index 6b44d512..f1d570a3 100644 --- a/wtpsplit/configs.py +++ b/wtpsplit/configs.py @@ -37,13 +37,15 @@ def __init__( self.num_hash_buckets = num_hash_buckets self.num_hash_functions = num_hash_functions - + + class SubwordXLMConfig(XLMRobertaConfig): """Config for XLM-R and XLM-V models. Used for token-level training. Args: XLMRobertaConfig: Base class. """ + model_type = "xlm-token" mixture_name = "xlm-token" diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index 0dc83874..10818f2d 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -230,14 +230,14 @@ def ersatz_sentencize( ): if lang_code not in ERSATZ_LANGUAGES: raise LanguageError(f"ersatz does not support {lang_code}") - + # check if infile parent dir exists, if not, create it if not os.path.exists(os.path.dirname(infile)): os.makedirs(os.path.dirname(infile)) # check if outfile parent dir exists, if not, create it if not os.path.exists(os.path.dirname(outfile)): os.makedirs(os.path.dirname(outfile)) - + open(infile, "w").write(text) subprocess.check_output( diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 3f9ce8c5..db168f20 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -10,7 +10,7 @@ from tqdm.auto import tqdm from transformers import AutoModelForTokenClassification, HfArgumentParser -import wtpsplit.models # noqa: F401 +import wtpsplit.models # noqa: F401 from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture from wtpsplit.extract import PyTorchWrapper, extract from wtpsplit.utils import Constants @@ -27,13 +27,13 @@ class Args: # "meta": { # "train_data": ["train sentence 1", "train sentence 2"] # }, - # "data": ["test sentence 1", "test sentence 2"] + # "data": ["test sentence 1", "test sentence 2"] # } # } # } # } eval_data_path: str = "data/eval.pth" - valid_text_path: str = None#"data/sentence/valid.parquet" + valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 stride: int = 64 @@ -131,7 +131,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") else: valid_data = None - + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) # first, logits for everything. diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 6e061983..a86fcdc1 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -11,6 +11,7 @@ logger = logging.getLogger(__name__) + class ORTWrapper: def __init__(self, config, ort_session): self.config = config @@ -24,7 +25,7 @@ def __call__(self, hashed_ids, attention_mask): logits = self.ort_session.run( ["logits"], { - "attention_mask": attention_mask.astype(np.float16), # ORT expects fp16 mask + "attention_mask": attention_mask.astype(np.float16), # ORT expects fp16 mask "hashed_ids": hashed_ids, }, )[0] @@ -63,6 +64,7 @@ def __call__(self, input_ids, hashed_ids, attention_mask, language_ids=None): return {"logits": logits} + def extract( batch_of_texts, model, @@ -104,11 +106,11 @@ def extract( # make sure block_size is a multiple of downsampling rate downsampling_rate = getattr(model.config, "downsampling_rate", 1) block_size = math.ceil(block_size / downsampling_rate) * downsampling_rate - actual_block_size = block_size - 2 if use_subwords else block_size # account for CLS and SEP tokens + actual_block_size = block_size - 2 if use_subwords else block_size # account for CLS and SEP tokens # total number of forward passes num_chunks = sum(math.ceil(max(length - actual_block_size, 0) / stride) + 1 for length in text_lengths) - + # preallocate a buffer for all input hashes & attention masks if not use_subwords: input_hashes = np.zeros((num_chunks, block_size, model.config.num_hash_functions), dtype=np.int64) @@ -121,18 +123,17 @@ def extract( locs = np.zeros((num_chunks, 3), dtype=np.int32) if not use_subwords: - # this is equivalent to (but faster than) np.array([ord(c) for c in "".join(batch_of_texts)]) + # this is equivalent to (but faster than) np.array([ord(c) for c in "".join(batch_of_texts)]) codec = "utf-32-le" if sys.byteorder == "little" else "utf-32-be" ordinals = np.frombuffer(bytearray("".join(batch_of_texts), encoding=codec), dtype=np.int32) # hash encode all ids - flat_hashed_ids = hash_encode(ordinals, - num_hashes=model.config.num_hash_functions, - num_buckets=model.config.num_hash_buckets) + flat_hashed_ids = hash_encode( + ordinals, num_hashes=model.config.num_hash_functions, num_buckets=model.config.num_hash_buckets + ) # note that ordinals and flat_hashed_ids have the same length offset = 0 current_chunk = 0 - - + # create chunks for i in range(len(batch_of_texts)): for j in range(0, text_lengths[i], stride): @@ -150,9 +151,9 @@ def extract( attention_mask[current_chunk, : end - start] = 1 else: chunk = [cls_token_id] + batch_of_texts[i][start:end] + [sep_token_id] - input_ids[current_chunk, :len(chunk)] = chunk - attention_mask[current_chunk, :len(chunk)] = 1 - + input_ids[current_chunk, : len(chunk)] = chunk + attention_mask[current_chunk, : len(chunk)] = 1 + locs[current_chunk, :] = [i, start, end] current_chunk += 1 @@ -212,7 +213,6 @@ def extract( # Pad with the specific pad_token_id for the tokenizer batch_input_ids = np.pad(batch_input_ids, ((0, n_missing), (0, 0)), constant_values=pad_token_id) batch_attention_mask = np.pad(batch_attention_mask, ((0, n_missing), (0, 0))) - kwargs = {"language_ids": language_ids[: len(batch_attention_mask)]} if uses_lang_adapters else {} diff --git a/wtpsplit/models.py b/wtpsplit/models.py index ee731b21..c0659593 100644 --- a/wtpsplit/models.py +++ b/wtpsplit/models.py @@ -958,16 +958,17 @@ def forward( return_dict, ) + class SubwordXLMForTokenClassification(XLMRobertaForTokenClassification): config_class = SubwordXLMConfig - + _keys_to_ignore_on_load_unexpected = [r"pooler"] _keys_to_ignore_on_load_missing = [r"position_ids"] - + def __init__(self, config): super().__init__(config) self.num_labels = config.num_labels - + self.roberta = XLMRobertaModel(config, add_pooling_layer=False) classifier_dropout = ( config.classifier_dropout if config.classifier_dropout is not None else config.hidden_dropout_prob @@ -977,7 +978,7 @@ def __init__(self, config): # Initialize weights and apply final processing self.post_init() - + def forward( self, input_ids: Optional[torch.LongTensor] = None, @@ -1005,9 +1006,8 @@ def forward( output_hidden_states, return_dict, ) - - - + + AutoModel.register(LACanineConfig, LACanineModel) AutoModelForTokenClassification.register(LACanineConfig, LACanineForTokenClassification) @@ -1020,23 +1020,24 @@ def forward( if __name__ == "__main__": # test XLM from transformers import AutoConfig, AutoTokenizer + model_str = "xlm-roberta-base" config = AutoConfig.from_pretrained(model_str) config.num_labels = 4 config.num_hidden_layers = 9 backbone = SubwordXLMForTokenClassification.from_pretrained(model_str, config=config) print(summary(backbone, depth=4)) - + # some sample input text = "This is a test\n sentence \n\n" tokenizer = AutoTokenizer.from_pretrained(model_str) - + tokens = tokenizer(text, return_tensors="pt", add_special_tokens=False) from tokenizers import AddedToken + tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) print(tokenizer.tokenize(text)) print(tokenizer.encode(text)) print(tokens) # forward pass print(backbone(**tokens)) - \ No newline at end of file diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index d6475ba3..535f2de4 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -48,6 +48,7 @@ def get_metrics(labels, preds): return metrics, info + def get_token_spans(tokenizer: object, offsets_mapping: list, tokens: list): token_spans = [] for idx, token in enumerate(tokens): @@ -62,6 +63,7 @@ def get_token_spans(tokenizer: object, offsets_mapping: list, tokens: list): return token_spans + def token_to_char_probs(text: str, tokens: list, token_probs: np.ndarray, tokenizer, offsets_mapping): # some very low number since at non-ending position, predicting a newline is impossible char_probs = np.zeros(len(text)) - 10000 @@ -69,10 +71,11 @@ def token_to_char_probs(text: str, tokens: list, token_probs: np.ndarray, tokeni for i, ((start, end), prob, token) in enumerate(zip(token_spans, token_probs, tokens)): # assign the token's prob to the last char of the token - char_probs[end - 1] = prob + char_probs[end - 1] = prob return char_probs + def evaluate_sentence( lang_code, sentences, @@ -104,11 +107,11 @@ def evaluate_sentence( logits = logits[0] if offsets_mapping is not None: offsets_mapping = offsets_mapping[0] - + true_end_indices = np.cumsum(np.array([len(s) for s in sentences])) + np.arange(len(sentences)) * len(separator) newline_labels = np.zeros(len(text)) newline_labels[true_end_indices - 1] = 1 - + if "xlm" in model.config.model_type: tokens = tokenizer.tokenize(text, verbose=False) char_probs = token_to_char_probs(text, tokens, logits[:, positive_index], tokenizer, offsets_mapping) @@ -127,4 +130,3 @@ def evaluate_sentence( info["newline_probs_pysbd"] = newline_probs_pysbd return metrics["pr_auc"], info - diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index bac5ecfc..9d90254b 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -42,6 +42,7 @@ # os.environ["PJRT_DEVICE"] = "None" + def setup_logging(training_args: transformers.TrainingArguments) -> None: logging.basicConfig( format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", @@ -50,8 +51,8 @@ def setup_logging(training_args: transformers.TrainingArguments) -> None: ) log_level = training_args.get_process_log_level() logger.setLevel(log_level) - datasets.utils.logging.set_verbosity(log_level) - transformers.utils.logging.set_verbosity(log_level) + # datasets.utils.logging.set_verbosity(log_level) + # transformers.utils.logging.set_verbosity(log_level) transformers.utils.logging.enable_default_handler() transformers.utils.logging.enable_explicit_format() # Log on each process the small summary: @@ -59,7 +60,9 @@ def setup_logging(training_args: transformers.TrainingArguments) -> None: f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" ) - logger.info(f"Training/evaluation parameters {training_args}") + # logger.info(f"Training/evaluation parameters {training_args}") + + class Model(nn.Module): def __init__( self, @@ -237,7 +240,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): min_length=args.block_size, tokenizer=tokenizer if args.use_subwords else None, ) - + if len(input_ids) > args.block_size: if tokenizer: # always include CLS @@ -267,28 +270,36 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): del labels[-1] while len(input_ids) < args.block_size - 1: # insert pad token at second-to-last position - logger.warn("second", len(input_ids)) + logger.warning("second", len(input_ids)) input_ids = input_ids + [tokenizer.pad_token_id] labels = labels + [0] input_ids = input_ids + [tokenizer.sep_token_id] - labels = labels + [0] + labels = labels + [0] if len(input_ids) != args.block_size: - logger.warn(len(input_ids)) + logger.warning(len(input_ids)) input_ids = torch.tensor(input_ids[: args.block_size], dtype=torch.long) labels = torch.tensor(labels[: args.block_size], dtype=torch.long) if input_ids[-1] != tokenizer.sep_token_id: - logger.warn(input_ids) - logger.warn(tokenizer.sep_token_id) + logger.warning(input_ids) + logger.warning(tokenizer.sep_token_id) + logger.warning(lang) # raise ValueError("SEP token not last token") if input_ids[0] != tokenizer.cls_token_id: - logger.warn(input_ids) - logger.warn(tokenizer.cls_token_id) + logger.warning(input_ids) + logger.warning(tokenizer.cls_token_id) + logger.warning(lang) # raise ValueError("CLS token not first token") # FIXME: check this - why does it occur in train split? if (input_ids == tokenizer.cls_token_id).sum() != 1: - logger.warn(input_ids) - logger.warn(tokenizer.cls_token_id) + logger.warning(input_ids) + logger.warning(tokenizer.cls_token_id) + logger.warning(lang) + # raise ValueError("CLS token not unique") + if (input_ids == tokenizer.sep_token_id).sum() != 1: + logger.warning(input_ids) + logger.warning(tokenizer.sep_token_id) + logger.warning(lang) # raise ValueError("CLS token not unique") position_ids = torch.arange(len(input_ids), dtype=torch.long) @@ -327,8 +338,8 @@ def main(): else: (args, training_args, label_args) = parser.parse_args_into_dataclasses() wandb_name = None - - setup_logging(training_args) + + setup_logging(training_args) set_seed(training_args.seed) num_labels = Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0) @@ -340,7 +351,7 @@ def main(): num_labels=num_labels, ) backbone = SubwordXLMForTokenClassification(config) - + else: config = SubwordXLMConfig.from_pretrained( args.model_name_or_path, @@ -353,6 +364,10 @@ def main(): tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) # needed since we create labels in collate_fn based on tokens tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + custom_token_id = tokenizer.convert_tokens_to_ids("\n") + # used later to filter out special tokens + special_tokens_ids = set(tokenizer.all_special_ids) + special_tokens_ids.discard(custom_token_id) else: tokenizer = None @@ -390,6 +405,8 @@ def main(): do_sentence_training=args.do_sentence_training, do_auxiliary_training=args.do_auxiliary_training, ) + + with training_args.main_process_first(): logger.info(summary(model, depth=4)) @@ -476,7 +493,6 @@ def drop_some_non_punctuation_samples(examples): batch_size=1_000_000, num_proc=num_workers, ) - def tokenize_texts(examples): # do not return CLS and SEP token here @@ -515,7 +531,12 @@ def maybe_pad(text): for subwords, lang in zip(examples["input_ids"], examples["lang"]) if lang == current_lang ] - + # filter out some special tokens + # from html tags, mostly in Latin, Thai & Korean + lang_subwords = [ + [subword for subword in subwords if subword not in special_tokens_ids] + for subwords in lang_subwords + ] # pack_samples used for the compound part, so irrelevant if args.pack_samples: if args.use_subwords: @@ -554,7 +575,7 @@ def maybe_pad(text): concatenated_texts = "".join(lang_texts) concatenated_ids = [i for i, text in enumerate(lang_texts) for _ in text] else: - # concatenate lists + # concatenate token lists concatenated_texts = [item for sublist in lang_subwords for item in sublist] concatenated_ids = [i for i, subwords in enumerate(lang_subwords) for _ in subwords] @@ -609,8 +630,8 @@ def maybe_pad(text): # this is no longer used and would cause an error otherwise with training_args.main_process_first(): dataset = dataset.remove_columns([args.text_column]) - logger.info(f"Tokenized {split} dataset.") - + logger.info(f"Tokenized {split} dataset.") + if split == "train": with training_args.main_process_first(): for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): @@ -626,9 +647,7 @@ def maybe_pad(text): batched=True, num_proc=num_workers, # a bit hacky but oh well, only drop if sentence - remove_columns=["ends_with_punctuation"] - if args.text_column == "text" - else [], + remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], ) logger.info(f"Grouped {split} dataset.") @@ -641,7 +660,7 @@ def maybe_pad(text): split="valid", ) logger.info(f"Valid dataset has {len(valid_dataset)} examples.") - + train_dataset = prepare_dataset( num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, @@ -656,7 +675,7 @@ def maybe_pad(text): index = random.choice(range(len(train_dataset))) sample = train_dataset[index] - if sample.get('lang') == "de": + if sample.get("lang") == "de": logger.info(f"Sample {index} of the training set: {sample}.") if tokenizer: logger.info(tokenizer.decode(sample["input_ids"])) diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 4bd3c38a..c8812208 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -15,6 +15,7 @@ logger = logging.getLogger(__name__) + class ConstantsClass: NEWLINE_INDEX = 0 AUX_OFFSET = 1 @@ -59,6 +60,7 @@ def LANG_CODE_TO_INDEX(self): def SEPARATORS(self): return {lang: ("" if row["no_whitespace"] else " ") for lang, row in Constants.LANGINFO.iterrows()} + Constants = ConstantsClass() @@ -94,30 +96,34 @@ def get_label_dict(label_args): return label_dict + def get_subword_label_dict(label_args, tokenizer): label_dict = {} n_unks = 0 # Map auxiliary characters to token IDs with labels - logger.warn(f"Using {Constants.PUNCTUATION_CHARS} auxiliary characters.") + logger.warning(f"Using {Constants.PUNCTUATION_CHARS} auxiliary characters.") for i, c in enumerate(Constants.PUNCTUATION_CHARS): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i - logger.warn(f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}") + logger.warning( + f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}" + ) if token_id == tokenizer.unk_token_id: n_unks += 1 - - logger.warn(f"found {n_unks} UNK tokens in auxiliary characters") + + logger.warning(f"found {n_unks} UNK tokens in auxiliary characters") # Map newline characters to token IDs with labels for c in label_args.newline_chars: token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.NEWLINE_INDEX - logger.warn(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") - logger.warn(r"{}".format(tokenizer.decode([token_id]))) + logger.warning(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") + logger.warning(r"{}".format(tokenizer.decode([token_id]))) return label_dict + def sigmoid(x): return 1 / (1 + np.exp(-x)) @@ -157,6 +163,7 @@ def lang_code_to_lang(lang_code): except KeyError: return languages.get(part3=lang_code).name + # does the steps in Figure 2 of the paper def corrupt( input_ids, @@ -307,4 +314,3 @@ def reconstruct_sentences(text, partial_sentences): fixed_sentences.append(text[i:]) return fixed_sentences - diff --git a/xla_spawn.py b/xla_spawn.py index 96503336..5df6bfa2 100644 --- a/xla_spawn.py +++ b/xla_spawn.py @@ -80,4 +80,4 @@ def main(): if __name__ == "__main__": - main() \ No newline at end of file + main() From aba4364291b797c8c4a0a845c79f0de7ab7ac79d Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Dec 2023 20:44:38 +0000 Subject: [PATCH 019/262] lint --- utils/remove_unks.py | 2 +- wtpsplit/extract.py | 2 +- wtpsplit/train/train.py | 42 ++++++++++++++++++++--------------------- wtpsplit/utils.py | 15 +++++++-------- 4 files changed, 29 insertions(+), 32 deletions(-) diff --git a/utils/remove_unks.py b/utils/remove_unks.py index ab95b45a..718440c8 100644 --- a/utils/remove_unks.py +++ b/utils/remove_unks.py @@ -12,7 +12,7 @@ def get_subword_label_dict(label_args, tokenizer): for i, c in enumerate(Constants.PUNCTUATION_CHARS): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i - # TODO: remove UNKs? + print( f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}" ) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index a86fcdc1..0d378ec9 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -218,7 +218,7 @@ def extract( logits = model( input_ids=batch_input_ids if use_subwords else None, - hashed_ids=batch_input_hashes if not use_subwords else None, + hashed_ids=None if use_subwords else batch_input_hashes, attention_mask=batch_attention_mask, **kwargs, )["logits"] diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 9d90254b..1d24dee1 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -20,7 +20,6 @@ from torchinfo import summary from tokenizers import AddedToken import transformers -import datasets from wtpsplit.models import ( BertCharConfig, @@ -33,6 +32,7 @@ from wtpsplit.train.evaluate import evaluate_sentence from wtpsplit.train.trainer import Trainer from wtpsplit.utils import Constants, LabelArgs, corrupt, get_label_dict, get_subword_label_dict +import datasets logger = logging.getLogger(__name__) @@ -51,14 +51,16 @@ def setup_logging(training_args: transformers.TrainingArguments) -> None: ) log_level = training_args.get_process_log_level() logger.setLevel(log_level) - # datasets.utils.logging.set_verbosity(log_level) - # transformers.utils.logging.set_verbosity(log_level) + datasets.utils.logging.set_verbosity(log_level - 10) + transformers.utils.logging.set_verbosity(log_level - 10) transformers.utils.logging.enable_default_handler() transformers.utils.logging.enable_explicit_format() # Log on each process the small summary: logger.warning( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" - + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" + ( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {training_args.local_rank != -1}, 16-bits training: {training_args.fp16}" + ) ) # logger.info(f"Training/evaluation parameters {training_args}") @@ -290,7 +292,6 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): logger.warning(tokenizer.cls_token_id) logger.warning(lang) # raise ValueError("CLS token not first token") - # FIXME: check this - why does it occur in train split? if (input_ids == tokenizer.cls_token_id).sum() != 1: logger.warning(input_ids) logger.warning(tokenizer.cls_token_id) @@ -320,7 +321,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): out = { "input_ids": torch.stack(all_input_ids, 0), "attention_mask": torch.stack(all_attention_masks, 0), - "position_ids": torch.stack(all_position_ids, 0) if not args.use_subwords else None, # safer + "position_ids": None if args.use_subwords else torch.stack(all_position_ids, 0), # safer "language_ids": torch.tensor(all_language_ids, dtype=torch.long), "label_weights": torch.stack(all_label_weights, 0), "labels": torch.stack(all_labels, 0), @@ -405,8 +406,6 @@ def main(): do_sentence_training=args.do_sentence_training, do_auxiliary_training=args.do_auxiliary_training, ) - - with training_args.main_process_first(): logger.info(summary(model, depth=4)) @@ -437,7 +436,7 @@ def prepare_dataset( if shuffle: dataset = dataset.shuffle(seed=42) - logger.info(f"Shuffled dataset.") + logger.info("Shuffled dataset.") # very likely not relevant / used only for the compound part if args.ignore_non_hyphen: @@ -460,9 +459,9 @@ def drop_some_non_punctuation_samples(examples): include_indices = set( np.where([lang_code not in languages_without_punctuation for lang_code in examples["lang"]])[0] ) - punctuation_indices = set( + punctuation_indices = { i for i in np.where(examples["ends_with_punctuation"])[0] if i in include_indices - ) + } target_n_non_punct = int( (len(punctuation_indices) * args.non_punctuation_sample_ratio) @@ -474,17 +473,16 @@ def drop_some_non_punctuation_samples(examples): if n_drop <= 0: return out - else: - drop_indices = np.random.choice( - list(include_indices - punctuation_indices), - n_drop, - replace=False, - ) + drop_indices = np.random.choice( + list(include_indices - punctuation_indices), + n_drop, + replace=False, + ) - for i in drop_indices: - out[i] = False + for i in drop_indices: + out[i] = False - return out + return out with training_args.main_process_first(): dataset = dataset.filter( @@ -536,7 +534,7 @@ def maybe_pad(text): lang_subwords = [ [subword for subword in subwords if subword not in special_tokens_ids] for subwords in lang_subwords - ] + ] # pack_samples used for the compound part, so irrelevant if args.pack_samples: if args.use_subwords: diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index c8812208..afd75b5b 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -119,7 +119,7 @@ def get_subword_label_dict(label_args, tokenizer): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.NEWLINE_INDEX logger.warning(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") - logger.warning(r"{}".format(tokenizer.decode([token_id]))) + logger.warning(f"{tokenizer.decode([token_id])}") return label_dict @@ -195,10 +195,7 @@ def corrupt( if tokenizer: # account for CLS and SEP token, added later min_length = min_length - 2 if min_length is not None else None - while True: - if min_length is not None and len(input_ids) <= min_length: - break - + while min_length is None or len(input_ids) > min_length: if labels[i] == Constants.NEWLINE_INDEX + 1: if random.random() < label_args.newline_remove_prob: if separator == " " and random.random() < label_args.newline_whitespace_prob: @@ -216,8 +213,11 @@ def corrupt( if pack_samples: last_index_in_block = i - while last_index_in_block + 1 == len(block_ids) or ( - last_index_in_block < len(block_ids) and block_ids[last_index_in_block + 1] == block_ids[i] + while ( + last_index_in_block + 1 == len(block_ids) + or last_index_in_block < len(block_ids) + and block_ids[last_index_in_block + 1] + == block_ids[last_index_in_block] ): last_index_in_block += 1 input_ids.insert(last_index_in_block, 0) @@ -232,7 +232,6 @@ def corrupt( del input_ids[i + 1] del labels[i + 1] del block_ids[i + 1] - try: i = i + 1 + next(index for index, label in enumerate(labels[i + 1 :]) if label != 0) except StopIteration: From 55bc87f2e44fa62a72493e700e8e2a5b8342c8cb Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Dec 2023 20:53:23 +0000 Subject: [PATCH 020/262] add some configs --- configs/xlmr_stratify_0.1_3layers_bs128.json | 44 +++++++++++++++++++ configs/xlmr_stratify_0.1_3layers_bs256.json | 44 +++++++++++++++++++ configs/xlmr_stratify_0.1_3layers_bs64.json | 44 +++++++++++++++++++ configs/xlmr_stratify_0.1_3layers_no_aux.json | 43 ++++++++++++++++++ wtpsplit/train/train.py | 4 +- 5 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_3layers_bs128.json create mode 100644 configs/xlmr_stratify_0.1_3layers_bs256.json create mode 100644 configs/xlmr_stratify_0.1_3layers_bs64.json create mode 100644 configs/xlmr_stratify_0.1_3layers_no_aux.json diff --git a/configs/xlmr_stratify_0.1_3layers_bs128.json b/configs/xlmr_stratify_0.1_3layers_bs128.json new file mode 100644 index 00000000..2d3b8d56 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_bs128.json @@ -0,0 +1,44 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 128, + "eval_stride" : 64, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 2000000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs256.json b/configs/xlmr_stratify_0.1_3layers_bs256.json new file mode 100644 index 00000000..807ed62c --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_bs256.json @@ -0,0 +1,44 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 256, + "eval_stride" : 128, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 2000000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs64.json b/configs/xlmr_stratify_0.1_3layers_bs64.json new file mode 100644 index 00000000..169d1325 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_bs64.json @@ -0,0 +1,44 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 64, + "eval_stride" : 32, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 2000000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_no_aux.json b/configs/xlmr_stratify_0.1_3layers_no_aux.json new file mode 100644 index 00000000..750e93d1 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_no_aux.json @@ -0,0 +1,43 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 2000000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": false, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 1d24dee1..4e453e3d 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -51,8 +51,8 @@ def setup_logging(training_args: transformers.TrainingArguments) -> None: ) log_level = training_args.get_process_log_level() logger.setLevel(log_level) - datasets.utils.logging.set_verbosity(log_level - 10) - transformers.utils.logging.set_verbosity(log_level - 10) + datasets.utils.logging.set_verbosity_warning() + transformers.utils.logging.set_verbosity_warning() transformers.utils.logging.enable_default_handler() transformers.utils.logging.enable_explicit_format() # Log on each process the small summary: From 89c8a0c80154b71ea600ab4916097b9e1a7fa423 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 28 Dec 2023 09:18:23 +0000 Subject: [PATCH 021/262] clean up cache right before training --- configs/xlmr_stratify_0.1_3layers_bs128.json | 2 +- configs/xlmr_stratify_0.1_3layers_bs256.json | 2 +- configs/xlmr_stratify_0.1_3layers_bs64.json | 2 +- configs/xlmr_stratify_0.1_3layers_highlr.json | 43 +++++++++++++++++++ configs/xlmr_stratify_0.1_3layers_no_aux.json | 2 +- configs/xlmr_stratify_0.1_3layers_nounks.json | 2 +- .../xlmr_stratify_0.1_3layers_shorter.json | 2 +- configs/xlmr_stratify_0.1_6layers.json | 43 +++++++++++++++++++ wtpsplit/train/train.py | 5 +++ wtpsplit/utils.py | 8 ++-- 10 files changed, 101 insertions(+), 10 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_3layers_highlr.json create mode 100644 configs/xlmr_stratify_0.1_6layers.json diff --git a/configs/xlmr_stratify_0.1_3layers_bs128.json b/configs/xlmr_stratify_0.1_3layers_bs128.json index 2d3b8d56..3d608e22 100644 --- a/configs/xlmr_stratify_0.1_3layers_bs128.json +++ b/configs/xlmr_stratify_0.1_3layers_bs128.json @@ -1,6 +1,6 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal", + "output_dir": "xlmr-normal-bs-128", "train_text_path": "data/sentence/train.parquet", "valid_text_path": "data/sentence/valid.parquet", "block_size": 128, diff --git a/configs/xlmr_stratify_0.1_3layers_bs256.json b/configs/xlmr_stratify_0.1_3layers_bs256.json index 807ed62c..2ad92729 100644 --- a/configs/xlmr_stratify_0.1_3layers_bs256.json +++ b/configs/xlmr_stratify_0.1_3layers_bs256.json @@ -1,6 +1,6 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal", + "output_dir": "xlmr-normal-bs256", "train_text_path": "data/sentence/train.parquet", "valid_text_path": "data/sentence/valid.parquet", "block_size": 256, diff --git a/configs/xlmr_stratify_0.1_3layers_bs64.json b/configs/xlmr_stratify_0.1_3layers_bs64.json index 169d1325..40e4713f 100644 --- a/configs/xlmr_stratify_0.1_3layers_bs64.json +++ b/configs/xlmr_stratify_0.1_3layers_bs64.json @@ -1,6 +1,6 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal", + "output_dir": "xlmr-normal-bs64", "train_text_path": "data/sentence/train.parquet", "valid_text_path": "data/sentence/valid.parquet", "block_size": 64, diff --git a/configs/xlmr_stratify_0.1_3layers_highlr.json b/configs/xlmr_stratify_0.1_3layers_highlr.json new file mode 100644 index 00000000..bfa6fb7b --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_highlr.json @@ -0,0 +1,43 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-highlr", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 3e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 2000000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_no_aux.json b/configs/xlmr_stratify_0.1_3layers_no_aux.json index 750e93d1..1a863f2c 100644 --- a/configs/xlmr_stratify_0.1_3layers_no_aux.json +++ b/configs/xlmr_stratify_0.1_3layers_no_aux.json @@ -1,6 +1,6 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal", + "output_dir": "xlmr-normal-noaux", "train_text_path": "data/sentence/train.parquet", "valid_text_path": "data/sentence/valid.parquet", "block_size": 512, diff --git a/configs/xlmr_stratify_0.1_3layers_nounks.json b/configs/xlmr_stratify_0.1_3layers_nounks.json index f61c50b7..28fd936a 100644 --- a/configs/xlmr_stratify_0.1_3layers_nounks.json +++ b/configs/xlmr_stratify_0.1_3layers_nounks.json @@ -1,6 +1,6 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-no_unks", + "output_dir": "xlmr-normal-nounks", "train_text_path": "data/sentence/train.parquet", "valid_text_path": "data/sentence/valid.parquet", "block_size": 512, diff --git a/configs/xlmr_stratify_0.1_3layers_shorter.json b/configs/xlmr_stratify_0.1_3layers_shorter.json index 056dee98..dad2296b 100644 --- a/configs/xlmr_stratify_0.1_3layers_shorter.json +++ b/configs/xlmr_stratify_0.1_3layers_shorter.json @@ -1,6 +1,6 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-shorter", + "output_dir": "xlmr-normal-shorter", "train_text_path": "data/sentence/train.parquet", "valid_text_path": "data/sentence/valid.parquet", "block_size": 512, diff --git a/configs/xlmr_stratify_0.1_6layers.json b/configs/xlmr_stratify_0.1_6layers.json new file mode 100644 index 00000000..e8231a96 --- /dev/null +++ b/configs/xlmr_stratify_0.1_6layers.json @@ -0,0 +1,43 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-6", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 2000000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 6, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 4e453e3d..2be0715f 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -666,6 +666,11 @@ def maybe_pad(text): split="train", ) logger.info(f"Train dataset has {len(train_dataset)} examples.") + + with training_args.main_process_first(): + train_dataset.cleanup_cache_files() + valid_dataset.cleanup_cache_files() + logger.warning("Cleaned up cache files.") # print some samples from the dataset count = 0 diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index afd75b5b..f0986218 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -102,11 +102,11 @@ def get_subword_label_dict(label_args, tokenizer): n_unks = 0 # Map auxiliary characters to token IDs with labels - logger.warning(f"Using {Constants.PUNCTUATION_CHARS} auxiliary characters.") + logger.info(f"Using {Constants.PUNCTUATION_CHARS} auxiliary characters.") for i, c in enumerate(Constants.PUNCTUATION_CHARS): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i - logger.warning( + logger.info( f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}" ) if token_id == tokenizer.unk_token_id: @@ -118,8 +118,8 @@ def get_subword_label_dict(label_args, tokenizer): for c in label_args.newline_chars: token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.NEWLINE_INDEX - logger.warning(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") - logger.warning(f"{tokenizer.decode([token_id])}") + logger.info(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") + logger.info(f"{tokenizer.decode([token_id])}") return label_dict From 872238f7838785b6d9cf37e812cfb420f2604a7c Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 28 Dec 2023 11:34:57 +0000 Subject: [PATCH 022/262] fix cleanup --- configs/xlmr_stratify_0.1_3layers_shorter.json | 4 +++- wtpsplit/train/train.py | 15 ++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/configs/xlmr_stratify_0.1_3layers_shorter.json b/configs/xlmr_stratify_0.1_3layers_shorter.json index dad2296b..dcdd2080 100644 --- a/configs/xlmr_stratify_0.1_3layers_shorter.json +++ b/configs/xlmr_stratify_0.1_3layers_shorter.json @@ -37,5 +37,7 @@ "use_auxiliary": true, "ddp_timeout": 3600, "use_subwords": true, - "num_hidden_layers": 3 + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" } \ No newline at end of file diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 2be0715f..b954a0af 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -8,6 +8,7 @@ from glob import glob from typing import List import random +import time import numpy as np import torch @@ -666,11 +667,6 @@ def maybe_pad(text): split="train", ) logger.info(f"Train dataset has {len(train_dataset)} examples.") - - with training_args.main_process_first(): - train_dataset.cleanup_cache_files() - valid_dataset.cleanup_cache_files() - logger.warning("Cleaned up cache files.") # print some samples from the dataset count = 0 @@ -744,6 +740,15 @@ def compute_metrics(trainer): # needed in the trainer training_args.adapter_warmup_steps = args.adapter_warmup_steps training_args.adapter_lr_multiplier = args.adapter_lr_multiplier + + + # give .map in multiprocessing enough of time to finish + time.sleep(10) + if training_args.local_rank == 0: + train_dataset.cleanup_cache_files() + logger.warning("Cleaned up train cache files.") + valid_dataset.cleanup_cache_files() + logger.warning("Cleaned up valid cache files.") trainer = Trainer( model, From 0d8f7653152919e151c7775e04b4c19df6ffd2e6 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 28 Dec 2023 14:25:54 +0000 Subject: [PATCH 023/262] fix cache cleanup --- wtpsplit/train/train.py | 41 ++++++++++++++----------------------- wtpsplit/train/utils.py | 45 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 26 deletions(-) create mode 100644 wtpsplit/train/utils.py diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index b954a0af..789a0030 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -1,27 +1,28 @@ import logging import math import os +import random import sys +import time from collections import Counter, defaultdict from dataclasses import dataclass from functools import partial from glob import glob from typing import List -import random -import time +import datasets import numpy as np import torch -from tqdm.auto import tqdm -import wandb +import transformers from datasets import load_dataset from datasets.download import DownloadConfig +from tokenizers import AddedToken from torch import nn -from transformers import HfArgumentParser, TrainingArguments, AutoTokenizer, set_seed from torchinfo import summary -from tokenizers import AddedToken -import transformers +from tqdm.auto import tqdm +from transformers import AutoTokenizer, HfArgumentParser, TrainingArguments, set_seed +import wandb from wtpsplit.models import ( BertCharConfig, BertCharForTokenClassification, @@ -32,9 +33,8 @@ ) from wtpsplit.train.evaluate import evaluate_sentence from wtpsplit.train.trainer import Trainer +from wtpsplit.train.utils import cleanup_cache_files from wtpsplit.utils import Constants, LabelArgs, corrupt, get_label_dict, get_subword_label_dict -import datasets - logger = logging.getLogger(__name__) @@ -680,16 +680,6 @@ def maybe_pad(text): logger.info(tokenizer.decode(sample["input_ids"])) count += 1 - # dataset we use is in cached now - # m_c4 files are test/valid splits of already downloaded data - # ~80GB deleted, ~63 GB left in cache/RAM (cache-* files) - # with training_args.main_process_first(): - # for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): - # for file in files: - # if file.startswith("m_c4"): - # print(f"Removing {os.path.join(root, file)}") - # os.remove(os.path.join(root, file)) - eval_data = torch.load( args.eval_data_path, ) @@ -740,15 +730,14 @@ def compute_metrics(trainer): # needed in the trainer training_args.adapter_warmup_steps = args.adapter_warmup_steps training_args.adapter_lr_multiplier = args.adapter_lr_multiplier - - - # give .map in multiprocessing enough of time to finish + + # give .map in multiprocessing enough of time to finish, to be safe time.sleep(10) if training_args.local_rank == 0: - train_dataset.cleanup_cache_files() - logger.warning("Cleaned up train cache files.") - valid_dataset.cleanup_cache_files() - logger.warning("Cleaned up valid cache files.") + # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() + # because that would remove the cache files of the other dataset! + cleanup_cache_files([train_dataset, valid_dataset]) + logger.warning("Cleaned up cache files.") trainer = Trainer( model, diff --git a/wtpsplit/train/utils.py b/wtpsplit/train/utils.py new file mode 100644 index 00000000..ce40761d --- /dev/null +++ b/wtpsplit/train/utils.py @@ -0,0 +1,45 @@ +import logging +import os + +logger = logging.getLogger(__name__) + + +def cleanup_cache_files(datasets) -> int: + """Clean up all cache files in the dataset cache directory, except those currently used by any of the provided datasets. + + Args: + datasets (List[Dataset]): A list of dataset objects. + + Be careful when running this command that no other process is currently using other cache files. + + Returns: + int: Number of removed files. + """ + if not datasets: + return 0 + + # Collect all current cache files from the provided datasets + current_cache_files = set() + for dataset in datasets: + dataset_cache_files = [os.path.abspath(cache_file["filename"]) for cache_file in dataset.cache_files] + current_cache_files.update(dataset_cache_files) + logger.warning(f"Found {len(current_cache_files)} cache files used by the provided datasets.") + + if not current_cache_files: + return 0 + + # Assuming all datasets have cache files in the same directory + cache_directory = os.path.dirname(next(iter(current_cache_files))) + + files = os.listdir(cache_directory) + files_to_remove = [] + for f_name in files: + full_name = os.path.abspath(os.path.join(cache_directory, f_name)) + if f_name.startswith("cache-") and f_name.endswith(".arrow") and full_name not in current_cache_files: + files_to_remove.append(full_name) + + for file_path in files_to_remove: + logger.warning(f"Removing {file_path}") + os.remove(file_path) + + return len(files_to_remove) From f9dbd9f28860f300b1608132d0531beb9b2c0069 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 31 Dec 2023 07:45:42 +0000 Subject: [PATCH 024/262] add xlm-v --- .gitignore | 3 +- configs/xlmv_stratify_0.1_3layers.json | 43 +++++++++++ get_mem.sh | 25 +++++++ wtpsplit/data/punctuation_xlmv.txt | 98 +++++++++++++++++++++++++ wtpsplit/data/punctuation_xlmv_unk.txt | 99 ++++++++++++++++++++++++++ wtpsplit/evaluation/intrinsic.py | 1 + wtpsplit/extract.py | 4 +- wtpsplit/train/train.py | 1 + wtpsplit/train/utils.py | 7 +- 9 files changed, 277 insertions(+), 4 deletions(-) create mode 100644 configs/xlmv_stratify_0.1_3layers.json create mode 100755 get_mem.sh create mode 100644 wtpsplit/data/punctuation_xlmv.txt create mode 100644 wtpsplit/data/punctuation_xlmv_unk.txt diff --git a/.gitignore b/.gitignore index 5ec98e92..9602e709 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ notebooks final_outputs .cache* data_subset/** -*.pth \ No newline at end of file +*.pth +**/checkpoint-*/** \ No newline at end of file diff --git a/configs/xlmv_stratify_0.1_3layers.json b/configs/xlmv_stratify_0.1_3layers.json new file mode 100644 index 00000000..5085d20b --- /dev/null +++ b/configs/xlmv_stratify_0.1_3layers.json @@ -0,0 +1,43 @@ +{ + "model_name_or_path": "facebook/xlm-v-base", + "output_dir": "xlmv-normal", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 1, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 400000, + "save_steps": 20000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmv_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/get_mem.sh b/get_mem.sh new file mode 100755 index 00000000..99dbf8a3 --- /dev/null +++ b/get_mem.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# This script writes the "Mem" line from the free -h command and the current time in one line every second to a file, and also prints it to the console + +output_file="memory_usage_log.txt" + +# Header line +header=" total used free shared buff/cache available" + +# Write header to both console and file +echo "$header" | tee $output_file + +while true; do + # Get the "Mem" line from free -h and store it + mem_usage=$(free -h | grep "Mem:") + + # Format the output string + output="$(date +"%a %b %d %H:%M:%S") | $mem_usage" + + # Write to both console and file + echo -e "$output" | tee -a $output_file + + # Wait for one second + sleep 1 +done diff --git a/wtpsplit/data/punctuation_xlmv.txt b/wtpsplit/data/punctuation_xlmv.txt new file mode 100644 index 00000000..723c5b2f --- /dev/null +++ b/wtpsplit/data/punctuation_xlmv.txt @@ -0,0 +1,98 @@ +! +" +# +$ +% +& +' +( +) +* ++ +, +- +. +/ +: +; +< += +> +? +@ +[ +\ +] +^ +_ +` +{ +| +} +~ +¡ +£ +§ +© +« +¬ +® +° +± +· +» +¿ +÷ +՝ +՞ +։ +־ +׳ +، +؛ +؟ +۔ +। +॥ +၊ +။ +၌ +၍ +၎ +၏ +፡ +። +፣ +፤ +፥ +។ +៕ +៖ +– +— +‘ +’ +“ +” +„ +• +′ +‹ +› +€ +↑ +→ +□ +➖ +、 +。 +《 +》 +「 +」 +『 +』 +【 +】 +・ +~ diff --git a/wtpsplit/data/punctuation_xlmv_unk.txt b/wtpsplit/data/punctuation_xlmv_unk.txt new file mode 100644 index 00000000..c4b6017d --- /dev/null +++ b/wtpsplit/data/punctuation_xlmv_unk.txt @@ -0,0 +1,99 @@ +! +" +# +$ +% +& +' +( +) +* ++ +, +- +. +/ +: +; +< += +> +? +@ +[ +\ +] +^ +_ +` +{ +| +} +~ +¡ +£ + +§ +© +« +¬ +® +° +± +· +» +¿ +÷ +՝ +՞ +։ +־ +׳ +، +؛ +؟ +۔ +। +॥ +၊ +။ +၌ +၍ +၎ +၏ +፡ +። +፣ +፤ +፥ +។ +៕ +៖ +– +— +‘ +’ +“ +” +„ +• +′ +‹ +› +€ +↑ +→ +□ +➖ +、 +。 +《 +》 +「 +」 +『 +』 +【 +】 +・ +~ diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index db168f20..93977771 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -132,6 +132,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ else: valid_data = None + print("Loading model...") model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) # first, logits for everything. diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 0d378ec9..e2e86e7b 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -9,7 +9,7 @@ from wtpsplit.utils import Constants, hash_encode -logger = logging.getLogger(__name__) +# logger = logging.getLogger(__name__) class ORTWrapper: @@ -224,7 +224,7 @@ def extract( )["logits"] if use_subwords: logits = logits[:, 1:-1, :] # remove CLS and SEP tokens - logger.debug(np.max(logits[0, :, 0])) + # logger.debug(np.max(logits[0, :, 0])) for i in range(start, end): original_idx, start_char_idx, end_char_idx = locs[i] diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 789a0030..d3cea66e 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -738,6 +738,7 @@ def compute_metrics(trainer): # because that would remove the cache files of the other dataset! cleanup_cache_files([train_dataset, valid_dataset]) logger.warning("Cleaned up cache files.") + time.sleep(20) trainer = Trainer( model, diff --git a/wtpsplit/train/utils.py b/wtpsplit/train/utils.py index ce40761d..9d8a7578 100644 --- a/wtpsplit/train/utils.py +++ b/wtpsplit/train/utils.py @@ -1,5 +1,6 @@ import logging import os +import time logger = logging.getLogger(__name__) @@ -40,6 +41,10 @@ def cleanup_cache_files(datasets) -> int: for file_path in files_to_remove: logger.warning(f"Removing {file_path}") - os.remove(file_path) + try: + os.remove(file_path) + except Exception as e: + logger.warning(f"Error while trying to remove {file_path}: {e}") + time.sleep(0.5) return len(files_to_remove) From fbc2c5d535704f4521881c5e068f76f365c8b746 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 2 Jan 2024 07:43:15 +0000 Subject: [PATCH 025/262] fix model saving during training --- configs/xlmr_stratify_0.1_3layers_100k.json | 43 +++++++ wtpsplit/train/train.py | 114 +------------------ wtpsplit/train/trainer.py | 39 +++++++ wtpsplit/train/utils.py | 117 +++++++++++++++++++- 4 files changed, 197 insertions(+), 116 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_3layers_100k.json diff --git a/configs/xlmr_stratify_0.1_3layers_100k.json b/configs/xlmr_stratify_0.1_3layers_100k.json new file mode 100644 index 00000000..4ad3fb2e --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_100k.json @@ -0,0 +1,43 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-100k", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 100000, + "save_steps": 50000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index d3cea66e..d2eb838e 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -17,7 +17,6 @@ from datasets import load_dataset from datasets.download import DownloadConfig from tokenizers import AddedToken -from torch import nn from torchinfo import summary from tqdm.auto import tqdm from transformers import AutoTokenizer, HfArgumentParser, TrainingArguments, set_seed @@ -33,8 +32,8 @@ ) from wtpsplit.train.evaluate import evaluate_sentence from wtpsplit.train.trainer import Trainer -from wtpsplit.train.utils import cleanup_cache_files from wtpsplit.utils import Constants, LabelArgs, corrupt, get_label_dict, get_subword_label_dict +from wtpsplit.train.utils import Model, cleanup_cache_files logger = logging.getLogger(__name__) @@ -66,111 +65,6 @@ def setup_logging(training_args: transformers.TrainingArguments) -> None: # logger.info(f"Training/evaluation parameters {training_args}") -class Model(nn.Module): - def __init__( - self, - backbone, - loss_margin=0.5, - use_loss_weights=False, - do_sentence_training=True, - do_auxiliary_training=False, - ): - super().__init__() - self.backbone = backbone - self.config = self.backbone.config - - assert loss_margin <= 0.5 - - self.loss_margin = loss_margin - self.use_loss_weights = use_loss_weights - self.do_sentence_training = do_sentence_training - self.do_auxiliary_training = do_auxiliary_training - - @property - def device(self): - return self.backbone.device - - def forward( - self, - input_ids, - language_ids=None, - attention_mask=None, - position_ids=None, - labels=None, - label_weights=None, - **kwargs, - ): - if position_ids is not None: - reduced_attention_mask = (input_ids != 0).to(torch.long) - else: - # XXX: 1 is pad token id - reduced_attention_mask = (input_ids != 1).to(torch.long) - - output = dict( - self.backbone.forward( - input_ids=input_ids, - language_ids=language_ids, - attention_mask=attention_mask, - position_ids=position_ids, - **kwargs, - ) - ) - logits = output["logits"] - - if labels is not None: - loss_fn = nn.BCEWithLogitsLoss(reduction="none") - - losses = [] - - # main (newline prediction) objective - if self.do_sentence_training: - # label smoothing - sentence_labels = (0.5 - self.loss_margin) + (labels == Constants.NEWLINE_INDEX + 1).to( - logits.dtype - ).view(-1) * self.loss_margin * 2 - sentence_logits = logits[:, :, Constants.NEWLINE_INDEX].view(-1) - - losses.append( - ( - loss_fn( - sentence_logits, - sentence_labels, - ) - * (label_weights.view(-1) if label_weights is not None and self.use_loss_weights else 1) - * reduced_attention_mask.view(-1) - ).sum() - / reduced_attention_mask.sum() - ) - - # auxiliary (punctuation prediction) objective - if self.do_auxiliary_training: - loss_fn = nn.CrossEntropyLoss() - - # exclude newline and no labels - aux_labels = torch.where( - (labels == 0) | (labels == Constants.NEWLINE_INDEX + 1), - 0, - labels - Constants.AUX_OFFSET, - ) - # exclude reduced_attention_mask tokens from labels - aux_labels = torch.where( - reduced_attention_mask == 1, - aux_labels, - loss_fn.ignore_index, - ) - - losses.append( - loss_fn( - logits[:, :, Constants.AUX_OFFSET :].view(-1, self.config.num_labels - Constants.AUX_OFFSET), - aux_labels.view(-1), - ) - ) - - loss = torch.stack(losses).sum() - - output["loss"] = loss - - return output @dataclass @@ -347,7 +241,7 @@ def main(): num_labels = Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0) if args.use_subwords: if args.from_scratch: - config = SubwordXLMConfig.from_pretrained( + config = SubwordXLMConfig( args.model_name_or_path, num_hidden_layers=args.num_hidden_layers, num_labels=num_labels, @@ -408,7 +302,7 @@ def main(): do_auxiliary_training=args.do_auxiliary_training, ) - with training_args.main_process_first(): + if training_args.local_rank == 0: logger.info(summary(model, depth=4)) # backbone.push_to_hub("markus583/xlm-token-untrained", private=True) @@ -738,7 +632,7 @@ def compute_metrics(trainer): # because that would remove the cache files of the other dataset! cleanup_cache_files([train_dataset, valid_dataset]) logger.warning("Cleaned up cache files.") - time.sleep(20) + time.sleep(10) trainer = Trainer( model, diff --git a/wtpsplit/train/trainer.py b/wtpsplit/train/trainer.py index adf8fad8..dfce7909 100644 --- a/wtpsplit/train/trainer.py +++ b/wtpsplit/train/trainer.py @@ -1,3 +1,4 @@ +import os from typing import Dict import numpy as np @@ -5,8 +6,11 @@ import transformers from torch import nn from torch.optim.lr_scheduler import LambdaLR +from transformers import PreTrainedModel from transformers.trainer import ( ALL_LAYERNORM_LAYERS, + TRAINING_ARGS_NAME, + WEIGHTS_NAME, DataLoader, EvalLoopOutput, IterableDatasetShard, @@ -25,6 +29,9 @@ nested_numpify, nested_truncate, ) +from transformers.modeling_utils import unwrap_model + +from wtpsplit.train.utils import Model if is_torch_tpu_available(check_device=False): import torch_xla.core.xla_model as xm # noqa: F401 @@ -408,3 +415,35 @@ def evaluation_loop( metrics=metrics, num_samples=num_samples, ) + + def _save_tpu(self, output_dir: Optional[str] = None): + output_dir = output_dir if output_dir is not None else self.args.output_dir + logger.info(f"Saving model checkpoint to {output_dir}") + + if xm.is_master_ordinal(): + os.makedirs(output_dir, exist_ok=True) + torch.save(self.args, os.path.join(output_dir, TRAINING_ARGS_NAME)) + + # Save a trained model and configuration using `save_pretrained()`. + # They can then be reloaded using `from_pretrained()` + xm.rendezvous("saving_checkpoint") + if isinstance(self.model, Model): + actual_model = self.model.backbone + else: + actual_model = self.model + if not isinstance(actual_model, PreTrainedModel): + if isinstance(unwrap_model(actual_model), PreTrainedModel): + unwrap_model(actual_model).save_pretrained( + output_dir, + is_main_process=self.args.should_save, + state_dict=actual_model.state_dict(), + save_function=xm.save, + ) + else: + logger.info("Trainer.model is not a `PreTrainedModel`, only saving its state dict.") + state_dict = actual_model.state_dict() + xm.save(state_dict, os.path.join(output_dir, WEIGHTS_NAME)) + else: + actual_model.save_pretrained(output_dir, is_main_process=self.args.should_save, save_function=xm.save) + if self.tokenizer is not None and self.args.should_save: + self.tokenizer.save_pretrained(output_dir) diff --git a/wtpsplit/train/utils.py b/wtpsplit/train/utils.py index 9d8a7578..ea5c9ec3 100644 --- a/wtpsplit/train/utils.py +++ b/wtpsplit/train/utils.py @@ -1,10 +1,119 @@ import logging import os -import time +import torch +import torch.nn as nn +from wtpsplit.utils import Constants logger = logging.getLogger(__name__) +class Model(nn.Module): + def __init__( + self, + backbone, + loss_margin=0.5, + use_loss_weights=False, + do_sentence_training=True, + do_auxiliary_training=False, + ): + super().__init__() + self.backbone = backbone + self.config = self.backbone.config + + assert loss_margin <= 0.5 + + self.loss_margin = loss_margin + self.use_loss_weights = use_loss_weights + self.do_sentence_training = do_sentence_training + self.do_auxiliary_training = do_auxiliary_training + + @property + def device(self): + return self.backbone.device + + def forward( + self, + input_ids, + language_ids=None, + attention_mask=None, + position_ids=None, + labels=None, + label_weights=None, + **kwargs, + ): + if position_ids is not None: + reduced_attention_mask = (input_ids != 0).to(torch.long) + else: + # XXX: 1 is pad token id + reduced_attention_mask = (input_ids != 1).to(torch.long) + + output = dict( + self.backbone.forward( + input_ids=input_ids, + language_ids=language_ids, + attention_mask=attention_mask, + position_ids=position_ids, + **kwargs, + ) + ) + logits = output["logits"] + + if labels is not None: + loss_fn = nn.BCEWithLogitsLoss(reduction="none") + + losses = [] + + # main (newline prediction) objective + if self.do_sentence_training: + # label smoothing + sentence_labels = (0.5 - self.loss_margin) + (labels == Constants.NEWLINE_INDEX + 1).to( + logits.dtype + ).view(-1) * self.loss_margin * 2 + sentence_logits = logits[:, :, Constants.NEWLINE_INDEX].view(-1) + + losses.append( + ( + loss_fn( + sentence_logits, + sentence_labels, + ) + * (label_weights.view(-1) if label_weights is not None and self.use_loss_weights else 1) + * reduced_attention_mask.view(-1) + ).sum() + / reduced_attention_mask.sum() + ) + + # auxiliary (punctuation prediction) objective + if self.do_auxiliary_training: + loss_fn = nn.CrossEntropyLoss() + + # exclude newline and no labels + aux_labels = torch.where( + (labels == 0) | (labels == Constants.NEWLINE_INDEX + 1), + 0, + labels - Constants.AUX_OFFSET, + ) + # exclude reduced_attention_mask tokens from labels + aux_labels = torch.where( + reduced_attention_mask == 1, + aux_labels, + loss_fn.ignore_index, + ) + + losses.append( + loss_fn( + logits[:, :, Constants.AUX_OFFSET :].view(-1, self.config.num_labels - Constants.AUX_OFFSET), + aux_labels.view(-1), + ) + ) + + loss = torch.stack(losses).sum() + + output["loss"] = loss + + return output + + def cleanup_cache_files(datasets) -> int: """Clean up all cache files in the dataset cache directory, except those currently used by any of the provided datasets. @@ -41,10 +150,6 @@ def cleanup_cache_files(datasets) -> int: for file_path in files_to_remove: logger.warning(f"Removing {file_path}") - try: - os.remove(file_path) - except Exception as e: - logger.warning(f"Error while trying to remove {file_path}: {e}") - time.sleep(0.5) + os.remove(file_path) return len(files_to_remove) From 69497e1dccfddc154b7f149074b59499b8c0fd4c Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 2 Jan 2024 07:47:55 +0000 Subject: [PATCH 026/262] add some configs --- configs/xlmr_stratify_0.1_3layers_1e-5.json | 43 ++++++++++++++++++ ...lmr_stratify_0.1_3layers_bs128_no_aux.json | 44 +++++++++++++++++++ ...lmr_stratify_0.1_3layers_bs256_no_aux.json | 44 +++++++++++++++++++ ...stratify_0.1_3layers_bs64_no_aux_400k.json | 44 +++++++++++++++++++ ...r_stratify_0.1_3layers_stride128_400k.json | 44 +++++++++++++++++++ ...mr_stratify_0.1_3layers_stride32_400k.json | 44 +++++++++++++++++++ 6 files changed, 263 insertions(+) create mode 100644 configs/xlmr_stratify_0.1_3layers_1e-5.json create mode 100644 configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json create mode 100644 configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json create mode 100644 configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json create mode 100644 configs/xlmr_stratify_0.1_3layers_stride128_400k.json create mode 100644 configs/xlmr_stratify_0.1_3layers_stride32_400k.json diff --git a/configs/xlmr_stratify_0.1_3layers_1e-5.json b/configs/xlmr_stratify_0.1_3layers_1e-5.json new file mode 100644 index 00000000..90360747 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_1e-5.json @@ -0,0 +1,43 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 1, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 256, + "dataloader_num_workers": 1, + "preprocessing_num_workers": 32, + "learning_rate": 1e-5, + "save_strategy": "steps", + "fp16": false, + "max_steps": 2000000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json b/configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json new file mode 100644 index 00000000..df5154c7 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json @@ -0,0 +1,44 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-bs256-noaux", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 128, + "eval_stride" : 64, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 2000000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": false, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json b/configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json new file mode 100644 index 00000000..c8e4b5a9 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json @@ -0,0 +1,44 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-bs256-noaux", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 256, + "eval_stride" : 128, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 2000000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": false, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json b/configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json new file mode 100644 index 00000000..399ba139 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json @@ -0,0 +1,44 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-bs64-noaux", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 64, + "eval_stride" : 32, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 400000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_stride128_400k.json b/configs/xlmr_stratify_0.1_3layers_stride128_400k.json new file mode 100644 index 00000000..3b151152 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_stride128_400k.json @@ -0,0 +1,44 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "eval_stride" : 128, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 400000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_stride32_400k.json b/configs/xlmr_stratify_0.1_3layers_stride32_400k.json new file mode 100644 index 00000000..43859182 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_stride32_400k.json @@ -0,0 +1,44 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "eval_stride" : 128, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 1, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 256, + "dataloader_num_workers": 1, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 400000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file From 78e2a439d957fb7f99215b52749609f91ae0a56f Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 2 Jan 2024 14:00:46 +0000 Subject: [PATCH 027/262] fix logging --- configs/xlmr_stratify_0.1_3layers.json | 2 +- configs/xlmr_stratify_0.1_3layers_100k.json | 2 +- configs/xlmr_stratify_0.1_3layers_1e-5.json | 2 +- .../xlmr_stratify_0.1_3layers_400k_3e-4.json | 43 +++++++++++++++++++ configs/xlmr_stratify_0.1_3layers_bs128.json | 4 +- ...lmr_stratify_0.1_3layers_bs128_no_aux.json | 2 +- configs/xlmr_stratify_0.1_3layers_bs256.json | 2 +- ...lmr_stratify_0.1_3layers_bs256_no_aux.json | 2 +- configs/xlmr_stratify_0.1_3layers_bs64.json | 2 +- ...stratify_0.1_3layers_bs64_no_aux_400k.json | 2 +- configs/xlmr_stratify_0.1_3layers_highlr.json | 2 +- configs/xlmr_stratify_0.1_3layers_no_aux.json | 2 +- configs/xlmr_stratify_0.1_3layers_nounks.json | 2 +- .../xlmr_stratify_0.1_3layers_shorter.json | 2 +- ...r_stratify_0.1_3layers_stride128_400k.json | 2 +- ...mr_stratify_0.1_3layers_stride32_400k.json | 2 +- configs/xlmr_stratify_0.1_6layers.json | 2 +- configs/xlmv_stratify_0.1_3layers.json | 2 +- wtpsplit/extract.py | 4 +- wtpsplit/train/evaluate.py | 3 ++ wtpsplit/train/train.py | 24 +++++------ wtpsplit/train/trainer.py | 14 +++--- wtpsplit/utils.py | 5 +-- 23 files changed, 86 insertions(+), 43 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_3layers_400k_3e-4.json diff --git a/configs/xlmr_stratify_0.1_3layers.json b/configs/xlmr_stratify_0.1_3layers.json index 3e5e4bed..dd7484f0 100644 --- a/configs/xlmr_stratify_0.1_3layers.json +++ b/configs/xlmr_stratify_0.1_3layers.json @@ -39,5 +39,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_100k.json b/configs/xlmr_stratify_0.1_3layers_100k.json index 4ad3fb2e..d312cb77 100644 --- a/configs/xlmr_stratify_0.1_3layers_100k.json +++ b/configs/xlmr_stratify_0.1_3layers_100k.json @@ -39,5 +39,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_1e-5.json b/configs/xlmr_stratify_0.1_3layers_1e-5.json index 90360747..3797f740 100644 --- a/configs/xlmr_stratify_0.1_3layers_1e-5.json +++ b/configs/xlmr_stratify_0.1_3layers_1e-5.json @@ -39,5 +39,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_400k_3e-4.json b/configs/xlmr_stratify_0.1_3layers_400k_3e-4.json new file mode 100644 index 00000000..c91a03c9 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_400k_3e-4.json @@ -0,0 +1,43 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-400k-3e-4", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 3e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 400000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs128.json b/configs/xlmr_stratify_0.1_3layers_bs128.json index 3d608e22..b636b755 100644 --- a/configs/xlmr_stratify_0.1_3layers_bs128.json +++ b/configs/xlmr_stratify_0.1_3layers_bs128.json @@ -18,7 +18,7 @@ "learning_rate": 1e-4, "save_strategy": "steps", "fp16": false, - "max_steps": 2000000, + "max_steps": 200000, "save_steps": 100000, "eval_steps": 5000, "logging_steps": 50, @@ -40,5 +40,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json b/configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json index df5154c7..59f28cd7 100644 --- a/configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json +++ b/configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json @@ -40,5 +40,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs256.json b/configs/xlmr_stratify_0.1_3layers_bs256.json index 2ad92729..dec5637e 100644 --- a/configs/xlmr_stratify_0.1_3layers_bs256.json +++ b/configs/xlmr_stratify_0.1_3layers_bs256.json @@ -40,5 +40,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json b/configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json index c8e4b5a9..ea6d0a2f 100644 --- a/configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json +++ b/configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json @@ -40,5 +40,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs64.json b/configs/xlmr_stratify_0.1_3layers_bs64.json index 40e4713f..8a1c2ae9 100644 --- a/configs/xlmr_stratify_0.1_3layers_bs64.json +++ b/configs/xlmr_stratify_0.1_3layers_bs64.json @@ -40,5 +40,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json b/configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json index 399ba139..cf8b1903 100644 --- a/configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json +++ b/configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json @@ -40,5 +40,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_highlr.json b/configs/xlmr_stratify_0.1_3layers_highlr.json index bfa6fb7b..7925562d 100644 --- a/configs/xlmr_stratify_0.1_3layers_highlr.json +++ b/configs/xlmr_stratify_0.1_3layers_highlr.json @@ -39,5 +39,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_no_aux.json b/configs/xlmr_stratify_0.1_3layers_no_aux.json index 1a863f2c..cff7828d 100644 --- a/configs/xlmr_stratify_0.1_3layers_no_aux.json +++ b/configs/xlmr_stratify_0.1_3layers_no_aux.json @@ -39,5 +39,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_nounks.json b/configs/xlmr_stratify_0.1_3layers_nounks.json index 28fd936a..4912d666 100644 --- a/configs/xlmr_stratify_0.1_3layers_nounks.json +++ b/configs/xlmr_stratify_0.1_3layers_nounks.json @@ -39,5 +39,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_shorter.json b/configs/xlmr_stratify_0.1_3layers_shorter.json index dcdd2080..0adc76f6 100644 --- a/configs/xlmr_stratify_0.1_3layers_shorter.json +++ b/configs/xlmr_stratify_0.1_3layers_shorter.json @@ -39,5 +39,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_stride128_400k.json b/configs/xlmr_stratify_0.1_3layers_stride128_400k.json index 3b151152..c9dbd15c 100644 --- a/configs/xlmr_stratify_0.1_3layers_stride128_400k.json +++ b/configs/xlmr_stratify_0.1_3layers_stride128_400k.json @@ -40,5 +40,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_stride32_400k.json b/configs/xlmr_stratify_0.1_3layers_stride32_400k.json index 43859182..5d1d2679 100644 --- a/configs/xlmr_stratify_0.1_3layers_stride32_400k.json +++ b/configs/xlmr_stratify_0.1_3layers_stride32_400k.json @@ -40,5 +40,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_6layers.json b/configs/xlmr_stratify_0.1_6layers.json index e8231a96..fbb88103 100644 --- a/configs/xlmr_stratify_0.1_6layers.json +++ b/configs/xlmr_stratify_0.1_6layers.json @@ -39,5 +39,5 @@ "use_subwords": true, "num_hidden_layers": 6, "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmv_stratify_0.1_3layers.json b/configs/xlmv_stratify_0.1_3layers.json index 5085d20b..c57b4859 100644 --- a/configs/xlmv_stratify_0.1_3layers.json +++ b/configs/xlmv_stratify_0.1_3layers.json @@ -39,5 +39,5 @@ "use_subwords": true, "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmv_unk.txt", - "log_level": "info" + "log_level": "warning" } \ No newline at end of file diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index e2e86e7b..0d378ec9 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -9,7 +9,7 @@ from wtpsplit.utils import Constants, hash_encode -# logger = logging.getLogger(__name__) +logger = logging.getLogger(__name__) class ORTWrapper: @@ -224,7 +224,7 @@ def extract( )["logits"] if use_subwords: logits = logits[:, 1:-1, :] # remove CLS and SEP tokens - # logger.debug(np.max(logits[0, :, 0])) + logger.debug(np.max(logits[0, :, 0])) for i in range(start, end): original_idx, start_char_idx, end_char_idx = locs[i] diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 535f2de4..f24c0be4 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -1,10 +1,13 @@ import numpy as np import pysbd import sklearn.metrics +import logging from wtpsplit.extract import extract, PyTorchWrapper from wtpsplit.utils import Constants +logger = logging.getLogger(__name__) + def compute_iou(a, b): return len(set(a) & set(b)) / len(set(a) | set(b)) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index d2eb838e..93e19d60 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -65,8 +65,6 @@ def setup_logging(training_args: transformers.TrainingArguments) -> None: # logger.info(f"Training/evaluation parameters {training_args}") - - @dataclass class Args: model_name_or_path: str @@ -303,7 +301,7 @@ def main(): ) if training_args.local_rank == 0: - logger.info(summary(model, depth=4)) + logger.warning(summary(model, depth=4)) # backbone.push_to_hub("markus583/xlm-token-untrained", private=True) def prepare_dataset( @@ -315,7 +313,7 @@ def prepare_dataset( with training_args.main_process_first(): dlconf = DownloadConfig(cache_dir="/home/Markus/.cache/huggingface/datasets") dataset = load_dataset("markus583/mC4-TEST", split=split, download_config=dlconf) - logger.info(f"Loaded {split} dataset.") + logger.warning(f"Loaded {split} dataset.") # optional: delete downloaded dataset, it is stored in cache_dir now (but we delete it later) # ~40GB on disk # os.system("rm -rf /home/Markus/.cache/huggingface/datasets") @@ -327,11 +325,11 @@ def prepare_dataset( lambda example: example["lang"] in include_languages, num_proc=args.preprocessing_num_workers, ) - logger.info(f"Filtered to {len(dataset)} examples.") + logger.warning(f"Filtered to {len(dataset)} examples.") if shuffle: dataset = dataset.shuffle(seed=42) - logger.info("Shuffled dataset.") + logger.warning("Shuffled dataset.") # very likely not relevant / used only for the compound part if args.ignore_non_hyphen: @@ -523,14 +521,14 @@ def maybe_pad(text): # this is no longer used and would cause an error otherwise with training_args.main_process_first(): dataset = dataset.remove_columns([args.text_column]) - logger.info(f"Tokenized {split} dataset.") + logger.warning(f"Tokenized {split} dataset.") if split == "train": with training_args.main_process_first(): for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): for file in files: if file.startswith("m_c4-test-train"): - logger.info(f"Removing {os.path.join(root, file)}") + logger.warning(f"Removing {os.path.join(root, file)}") os.remove(os.path.join(root, file)) if not args.one_sample_per_line: @@ -542,7 +540,7 @@ def maybe_pad(text): # a bit hacky but oh well, only drop if sentence remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], ) - logger.info(f"Grouped {split} dataset.") + logger.warning(f"Grouped {split} dataset.") return dataset @@ -552,7 +550,7 @@ def maybe_pad(text): shuffle=False, split="valid", ) - logger.info(f"Valid dataset has {len(valid_dataset)} examples.") + logger.warning(f"Valid dataset has {len(valid_dataset)} examples.") train_dataset = prepare_dataset( num_workers=args.preprocessing_num_workers, @@ -560,7 +558,7 @@ def maybe_pad(text): shuffle=args.shuffle, split="train", ) - logger.info(f"Train dataset has {len(train_dataset)} examples.") + logger.warning(f"Train dataset has {len(train_dataset)} examples.") # print some samples from the dataset count = 0 @@ -569,9 +567,9 @@ def maybe_pad(text): sample = train_dataset[index] if sample.get("lang") == "de": - logger.info(f"Sample {index} of the training set: {sample}.") + logger.warning(f"Sample {index} of the training set: {sample}.") if tokenizer: - logger.info(tokenizer.decode(sample["input_ids"])) + logger.warning(tokenizer.decode(sample["input_ids"])) count += 1 eval_data = torch.load( diff --git a/wtpsplit/train/trainer.py b/wtpsplit/train/trainer.py index dfce7909..ddb7f6f6 100644 --- a/wtpsplit/train/trainer.py +++ b/wtpsplit/train/trainer.py @@ -245,12 +245,12 @@ def evaluation_loop( batch_size = self.args.eval_batch_size - logger.info(f"***** Running {description} *****") + logger.warning(f"***** Running {description} *****") if has_length(dataloader): - logger.info(f" Num examples = {self.num_examples(dataloader)}") + logger.warning(f" Num examples = {self.num_examples(dataloader)}") else: - logger.info(" Num examples: Unknown") - logger.info(f" Batch size = {batch_size}") + logger.warning(" Num examples: Unknown") + logger.warning(f" Batch size = {batch_size}") model.eval() @@ -415,10 +415,10 @@ def evaluation_loop( metrics=metrics, num_samples=num_samples, ) - + def _save_tpu(self, output_dir: Optional[str] = None): output_dir = output_dir if output_dir is not None else self.args.output_dir - logger.info(f"Saving model checkpoint to {output_dir}") + logger.warning(f"Saving model checkpoint to {output_dir}") if xm.is_master_ordinal(): os.makedirs(output_dir, exist_ok=True) @@ -440,7 +440,7 @@ def _save_tpu(self, output_dir: Optional[str] = None): save_function=xm.save, ) else: - logger.info("Trainer.model is not a `PreTrainedModel`, only saving its state dict.") + logger.warning("Trainer.model is not a `PreTrainedModel`, only saving its state dict.") state_dict = actual_model.state_dict() xm.save(state_dict, os.path.join(output_dir, WEIGHTS_NAME)) else: diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index f0986218..247aa8e2 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -102,7 +102,7 @@ def get_subword_label_dict(label_args, tokenizer): n_unks = 0 # Map auxiliary characters to token IDs with labels - logger.info(f"Using {Constants.PUNCTUATION_CHARS} auxiliary characters.") + logger.warning(f"Using {Constants.PUNCTUATION_CHARS} auxiliary characters.") for i, c in enumerate(Constants.PUNCTUATION_CHARS): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i @@ -216,8 +216,7 @@ def corrupt( while ( last_index_in_block + 1 == len(block_ids) or last_index_in_block < len(block_ids) - and block_ids[last_index_in_block + 1] - == block_ids[last_index_in_block] + and block_ids[last_index_in_block + 1] == block_ids[last_index_in_block] ): last_index_in_block += 1 input_ids.insert(last_index_in_block, 0) From 846233864d3f13b10a15163f41546be34f2612e0 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 2 Jan 2024 14:01:04 +0000 Subject: [PATCH 028/262] fix char-based training preproc --- wtpsplit/train/train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 93e19d60..88c591e1 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -412,7 +412,7 @@ def maybe_pad(text): if not args.use_subwords: lang_texts = [ maybe_pad(text) - for text, lang in zip(examples[args.text_column], examples["lang"]) + for text, lang in zip(examples["input_ids"], examples["lang"]) if lang == current_lang ] else: @@ -520,7 +520,7 @@ def maybe_pad(text): else: # this is no longer used and would cause an error otherwise with training_args.main_process_first(): - dataset = dataset.remove_columns([args.text_column]) + dataset = dataset.rename_column(args.text_column, "input_ids") logger.warning(f"Tokenized {split} dataset.") if split == "train": From fd6a63f2da1927abb95b061f5282b2ec601618b9 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 3 Jan 2024 06:46:22 +0000 Subject: [PATCH 029/262] adapt intrinsic eval --- configs/xlmr_stratify_0.1_3layers_no_aux.json | 2 +- wtpsplit/evaluation/__init__.py | 29 +++++++ wtpsplit/evaluation/intrinsic.py | 81 ++++++++++--------- wtpsplit/train/evaluate.py | 35 ++------ wtpsplit/train/train.py | 22 +---- 5 files changed, 80 insertions(+), 89 deletions(-) diff --git a/configs/xlmr_stratify_0.1_3layers_no_aux.json b/configs/xlmr_stratify_0.1_3layers_no_aux.json index cff7828d..52bb14f8 100644 --- a/configs/xlmr_stratify_0.1_3layers_no_aux.json +++ b/configs/xlmr_stratify_0.1_3layers_no_aux.json @@ -17,7 +17,7 @@ "learning_rate": 1e-4, "save_strategy": "steps", "fp16": false, - "max_steps": 2000000, + "max_steps": 200000, "save_steps": 100000, "eval_steps": 5000, "logging_steps": 50, diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index 10818f2d..5d962cd5 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -338,3 +338,32 @@ def punkt_sentencize(lang_code, text): return reconstruct_sentences(text, sent_tokenize(text, language=lang_code_to_lang(lang_code).lower())) except LookupError: raise LanguageError(f"punkt does not support {lang_code}") + + +def get_token_spans(tokenizer, offsets_mapping, tokens): + # Filter out special tokens and get their character start and end positions + valid_indices = np.array( + [ + idx + for idx, token in enumerate(tokens) + if token not in [tokenizer.cls_token, tokenizer.sep_token, tokenizer.pad_token] + and idx < len(offsets_mapping) + ] + ) + valid_offsets = np.array(offsets_mapping)[valid_indices] + return valid_indices, valid_offsets + + +def token_to_char_probs(text, tokens, token_logits, tokenizer, offsets_mapping): + char_probs = np.full( + (len(text), token_logits.shape[1]), np.min(token_logits) + ) # Initialize with very low numbers + + valid_indices, valid_offsets = get_token_spans(tokenizer, offsets_mapping, tokens) + + # Assign the token's probability to the last character of the token + for i in range(valid_offsets.shape[0]): + start, end = valid_offsets[i] + char_probs[end - 1] = token_logits[valid_indices[i]] + + return char_probs diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 93977771..88940728 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -9,9 +9,10 @@ from datasets import load_dataset from tqdm.auto import tqdm from transformers import AutoModelForTokenClassification, HfArgumentParser +import numpy as np import wtpsplit.models # noqa: F401 -from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture +from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs from wtpsplit.extract import PyTorchWrapper, extract from wtpsplit.utils import Constants @@ -41,8 +42,35 @@ class Args: include_langs: List[str] = None +def process_logits(text, model, lang_code, args): + # Extract necessary data + logits, offsets_mapping, tokenizer = extract( + [text], + model, + lang_code=lang_code, + stride=args.stride, + block_size=args.block_size, + batch_size=args.batch_size, + pad_last_batch=True, + verbose=True, + ) + logits = logits[0] + if offsets_mapping is not None: + offsets_mapping = offsets_mapping[0] + + if "xlm" in model.config.model_type: + tokens = tokenizer.tokenize(text, verbose=False) + + # Use the vectorized function to convert token probabilities to character probabilities for the entire array + char_probs = token_to_char_probs(text, tokens, logits, tokenizer, offsets_mapping) + + logits = char_probs + + return logits + + def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_sentences=10_000): - logits_path = Constants.CACHE_DIR / (model.config.mixture_name + "_logits.h5") + logits_path = Constants.CACHE_DIR / (model.config.mixture_name + "_logits_u0001.h5") # TODO: revert to "a" with h5py.File(logits_path, "w") as f, torch.no_grad(): @@ -50,6 +78,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ if args.include_langs is not None and lang_code not in args.include_langs: continue + print(f"Processing {lang_code}...") if lang_code not in f: lang_group = f.create_group(lang_code) else: @@ -61,18 +90,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ assert len(sentences) > 0 separator = Constants.SEPARATORS[lang_code] - text = separator.join(sentences) - - valid_logits = extract( - [text], - model, - lang_code=lang_code, - stride=args.stride, - block_size=args.block_size, - batch_size=args.batch_size, - pad_last_batch=True, - verbose=True, - )[0] + valid_text = separator.join(sentences) + + valid_logits = process_logits(valid_text, model, lang_code, args) + lang_group.create_dataset("valid", data=valid_logits) # eval data @@ -86,16 +107,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ test_sentences = dataset["data"] test_text = Constants.SEPARATORS[lang_code].join(test_sentences) - test_logits = extract( - [test_text], - model, - lang_code=lang_code, - stride=args.stride, - block_size=args.block_size, - batch_size=args.batch_size, - pad_last_batch=True, - verbose=True, - )[0] + test_logits = process_logits(test_text, model, lang_code, args) test_labels = get_labels(lang_code, test_sentences, after_space=False) dset_group.create_dataset("test_logits", data=test_logits) @@ -106,15 +118,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ train_sentences = train_sentences[:max_n_train_sentences] train_text = Constants.SEPARATORS[lang_code].join(train_sentences) - train_logits = extract( - [train_text], - model, - lang_code=lang_code, - stride=args.stride, - block_size=args.block_size, - batch_size=args.batch_size, - pad_last_batch=False, - )[0] + train_logits = process_logits(train_text, model, lang_code, args) train_labels = get_labels(lang_code, train_sentences, after_space=False) dset_group.create_dataset("train_logits", data=train_logits) @@ -146,6 +150,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ if args.include_langs is not None and lang_code not in args.include_langs: continue + print(f"Predicting {lang_code}...") results[lang_code] = {} clfs[lang_code] = {} @@ -154,15 +159,15 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ if "train_logits" in f[lang_code][dataset_name]: feature_indices = None - # TODO: tokenize here clf = train_mixture( [lang_code], f[lang_code][dataset_name]["train_logits"][:], f[lang_code][dataset_name]["train_labels"][:], features=feature_indices, ) - - # TODO: tokenize here, too + print(clf) + print(np.argsort(clf[0].coef_[0])[:10], "...", np.argsort(clf[0].coef_[0])[-10:]) + print(np.where(np.argsort(clf[0].coef_[0]) == 0)[0]) score_t, score_punct, _ = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:], @@ -173,7 +178,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ clfs[lang_code][dataset_name] = clf clf = list(copy.deepcopy(clf)) - clf[-1] = 0.01 + clf[-1] = 0.005 # 0.01 else: score_t = score_punct = None @@ -200,7 +205,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ json.dump( results, open( - Constants.CACHE_DIR / (model.config.mixture_name + "_intrinsic_results.json"), + Constants.CACHE_DIR / (model.config.mixture_name + "_intrinsic_results_u0005.json"), "w", ), indent=4, diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index f24c0be4..2cf22938 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -1,3 +1,4 @@ + import numpy as np import pysbd import sklearn.metrics @@ -5,6 +6,7 @@ from wtpsplit.extract import extract, PyTorchWrapper from wtpsplit.utils import Constants +from wtpsplit.evaluation import token_to_char_probs logger = logging.getLogger(__name__) @@ -52,31 +54,6 @@ def get_metrics(labels, preds): return metrics, info -def get_token_spans(tokenizer: object, offsets_mapping: list, tokens: list): - token_spans = [] - for idx, token in enumerate(tokens): - # Skip special tokens like [CLS], [SEP] - if idx >= len(offsets_mapping): - continue - if token in [tokenizer.cls_token, tokenizer.sep_token, tokenizer.pad_token]: - continue - - char_start, char_end = offsets_mapping[idx] - token_spans.append((char_start, char_end)) - - return token_spans - - -def token_to_char_probs(text: str, tokens: list, token_probs: np.ndarray, tokenizer, offsets_mapping): - # some very low number since at non-ending position, predicting a newline is impossible - char_probs = np.zeros(len(text)) - 10000 - token_spans = get_token_spans(tokenizer, offsets_mapping, tokens) - - for i, ((start, end), prob, token) in enumerate(zip(token_spans, token_probs, tokens)): - # assign the token's prob to the last char of the token - char_probs[end - 1] = prob - - return char_probs def evaluate_sentence( @@ -105,7 +82,6 @@ def evaluate_sentence( stride=stride, block_size=block_size, batch_size=batch_size, - verbose=True, ) logits = logits[0] if offsets_mapping is not None: @@ -117,10 +93,11 @@ def evaluate_sentence( if "xlm" in model.config.model_type: tokens = tokenizer.tokenize(text, verbose=False) - char_probs = token_to_char_probs(text, tokens, logits[:, positive_index], tokenizer, offsets_mapping) + char_probs = token_to_char_probs(text, tokens, logits, tokenizer, offsets_mapping) else: - char_probs = logits[:, positive_index] - metrics, info = get_metrics(newline_labels, char_probs) + char_probs = logits + newline_probs = char_probs[:, positive_index] + metrics, info = get_metrics(newline_labels, newline_probs) info["newline_labels"] = newline_labels diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 88c591e1..edd05ca3 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -175,26 +175,6 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): logger.warning(len(input_ids)) input_ids = torch.tensor(input_ids[: args.block_size], dtype=torch.long) labels = torch.tensor(labels[: args.block_size], dtype=torch.long) - if input_ids[-1] != tokenizer.sep_token_id: - logger.warning(input_ids) - logger.warning(tokenizer.sep_token_id) - logger.warning(lang) - # raise ValueError("SEP token not last token") - if input_ids[0] != tokenizer.cls_token_id: - logger.warning(input_ids) - logger.warning(tokenizer.cls_token_id) - logger.warning(lang) - # raise ValueError("CLS token not first token") - if (input_ids == tokenizer.cls_token_id).sum() != 1: - logger.warning(input_ids) - logger.warning(tokenizer.cls_token_id) - logger.warning(lang) - # raise ValueError("CLS token not unique") - if (input_ids == tokenizer.sep_token_id).sum() != 1: - logger.warning(input_ids) - logger.warning(tokenizer.sep_token_id) - logger.warning(lang) - # raise ValueError("CLS token not unique") position_ids = torch.arange(len(input_ids), dtype=torch.long) label_weights = torch.ones(args.block_size, dtype=torch.float32) @@ -523,7 +503,7 @@ def maybe_pad(text): dataset = dataset.rename_column(args.text_column, "input_ids") logger.warning(f"Tokenized {split} dataset.") - if split == "train": + if split == "train" and args.use_subwords: with training_args.main_process_first(): for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): for file in files: From 9e0b3e2b02fe31d0702bdbc38868f9dcb10b8fbd Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 10 Jan 2024 13:19:18 +0000 Subject: [PATCH 030/262] use pretrained models; improve leakage in non-whitespace models --- wtpsplit/evaluation/intrinsic.py | 9 +-- wtpsplit/train/train.py | 93 ++++++++++++------------- wtpsplit/utils.py | 113 ++++++++++++++++++++++++++----- 3 files changed, 143 insertions(+), 72 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 88940728..8f0760a0 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -165,9 +165,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ f[lang_code][dataset_name]["train_labels"][:], features=feature_indices, ) - print(clf) - print(np.argsort(clf[0].coef_[0])[:10], "...", np.argsort(clf[0].coef_[0])[-10:]) - print(np.where(np.argsort(clf[0].coef_[0]) == 0)[0]) + if clf[0] is not None: + print(clf) + print(np.argsort(clf[0].coef_[0])[:10], "...", np.argsort(clf[0].coef_[0])[-10:]) + print(np.where(np.argsort(clf[0].coef_[0]) == 0)[0]) score_t, score_punct, _ = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:], @@ -178,7 +179,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ clfs[lang_code][dataset_name] = clf clf = list(copy.deepcopy(clf)) - clf[-1] = 0.005 # 0.01 + clf[-1] = 0.01 # 0.01 else: score_t = score_punct = None diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index edd05ca3..b5f7491b 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -121,7 +121,10 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): lang = sample["lang"] while len(input_ids) < args.block_size + args.overflow_size: - input_ids.append(0) + if tokenizer: + input_ids.append(tokenizer.pad_token_id) + else: + input_ids.append(0) block_ids = [0] * len(input_ids) @@ -135,47 +138,30 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): min_length=args.block_size, tokenizer=tokenizer if args.use_subwords else None, ) + + actual_block_size = args.block_size - 2 if args.use_subwords else args.block_size if len(input_ids) > args.block_size: - if tokenizer: - # always include CLS - start = np.random.randint(0, len(input_ids) - args.block_size) - if start != 0: - # this removes the CLS token - # -1 removes the SEP token, for sure - input_ids = [tokenizer.cls_token_id] + input_ids[start : start + args.block_size - 2] - labels = [0] + labels[start : start + args.block_size - 2] - else: - input_ids = input_ids[start : start + args.block_size - 1] - labels = labels[start : start + args.block_size - 1] - # always include SEP - if input_ids[-1] != tokenizer.sep_token_id: - # also insert PAD token as long as len < block_size - while len(input_ids) < args.block_size - 1: - input_ids = input_ids + [tokenizer.pad_token_id] - labels = labels + [0] - input_ids = input_ids + [tokenizer.sep_token_id] - labels = labels + [0] - else: - start = np.random.randint(0, len(input_ids) - args.block_size) - input_ids = input_ids[start : start + args.block_size] - labels = labels[start : start + args.block_size] - if len(input_ids) != args.block_size and tokenizer: - del input_ids[-1] - del labels[-1] - while len(input_ids) < args.block_size - 1: - # insert pad token at second-to-last position - logger.warning("second", len(input_ids)) - input_ids = input_ids + [tokenizer.pad_token_id] - labels = labels + [0] - input_ids = input_ids + [tokenizer.sep_token_id] - labels = labels + [0] - - if len(input_ids) != args.block_size: - logger.warning(len(input_ids)) - input_ids = torch.tensor(input_ids[: args.block_size], dtype=torch.long) - labels = torch.tensor(labels[: args.block_size], dtype=torch.long) + start = np.random.randint(0, len(input_ids) - actual_block_size) + input_ids = input_ids[start : start + actual_block_size] + labels = labels[start : start + actual_block_size] + elif len(input_ids) < actual_block_size: + padding = actual_block_size - len(input_ids) + # print(padding, lang) + input_ids += [tokenizer.pad_token_id] * padding if tokenizer else [0] * padding + labels += [0] * padding + + if tokenizer: + input_ids = [tokenizer.cls_token_id] + input_ids[: actual_block_size] + [tokenizer.sep_token_id] + # labels for CLS and SEP tokens are 0 (none) + labels = [0] + labels[: actual_block_size] + [0] + else: + input_ids = input_ids[: actual_block_size] + labels = labels[: actual_block_size] + + input_ids = torch.tensor(input_ids, dtype=torch.long) + labels = torch.tensor(labels, dtype=torch.long) position_ids = torch.arange(len(input_ids), dtype=torch.long) label_weights = torch.ones(args.block_size, dtype=torch.float32) if tokenizer: @@ -232,7 +218,10 @@ def main(): num_hidden_layers=args.num_hidden_layers, num_labels=num_labels, ) - backbone = SubwordXLMForTokenClassification(config) + backbone = SubwordXLMForTokenClassification.from_pretrained( + args.model_name_or_path, + config=config, + ) backbone.config.base_model = args.model_name_or_path tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) @@ -536,17 +525,17 @@ def maybe_pad(text): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="train", + split="valid", ) logger.warning(f"Train dataset has {len(train_dataset)} examples.") # print some samples from the dataset count = 0 - while count < 5: + while count < 20: index = random.choice(range(len(train_dataset))) sample = train_dataset[index] - if sample.get("lang") == "de": + if sample.get("lang") in ["zh", "ja", "my", "km"]: logger.warning(f"Sample {index} of the training set: {sample}.") if tokenizer: logger.warning(tokenizer.decode(sample["input_ids"])) @@ -578,6 +567,10 @@ def compute_metrics(trainer): ) metrics[f"{lang_code}_{dataset_name}_pr_auc"] = score avg_metrics[f"average_{dataset_name}_pr_auc"].append(score) + if lang_code in ["zh", "ja", "my", "km"]: + avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + else: + avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) for name, values in avg_metrics.items(): if len(values) > 1: @@ -604,13 +597,13 @@ def compute_metrics(trainer): training_args.adapter_lr_multiplier = args.adapter_lr_multiplier # give .map in multiprocessing enough of time to finish, to be safe - time.sleep(10) - if training_args.local_rank == 0: - # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() - # because that would remove the cache files of the other dataset! - cleanup_cache_files([train_dataset, valid_dataset]) - logger.warning("Cleaned up cache files.") - time.sleep(10) + # time.sleep(10) + # if training_args.local_rank == 0: + # # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() + # # because that would remove the cache files of the other dataset! + # cleanup_cache_files([train_dataset, valid_dataset]) + # logger.warning("Cleaned up cache files.") + # time.sleep(10) trainer = Trainer( model, diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 247aa8e2..a24bf635 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -76,6 +76,8 @@ class LabelArgs: hyphen_chars: List[str] = field(default_factory=lambda: ["-", "‐"]) use_auxiliary: bool = False custom_punctuation_file: str = None + retain_first_consecutive_punctuation: bool = True + non_whitespace_remove_spaces: bool = True def __post_init__(self): if self.custom_punctuation_file: @@ -184,12 +186,6 @@ def corrupt( try: i = next(index for index, label in enumerate(labels) if label != 0) except StopIteration: - if tokenizer is not None: - input_ids = [tokenizer.cls_token_id] + input_ids + [tokenizer.sep_token_id] - # Extend block_ids for the added CLS and SEP tokens - block_ids = [block_ids[0]] + block_ids + [block_ids[-1]] - # labels for CLS and SEP tokens are 0 (none) - labels = [0] + labels + [0] return input_ids, block_ids, labels if tokenizer: @@ -223,27 +219,64 @@ def corrupt( labels.insert(last_index_in_block, 0) else: del block_ids[i + 1] + if tokenizer and separator == "" and label_args.non_whitespace_remove_spaces and i + 1 < len(input_ids): + # tokenizer.decode() retains the space that leaks the information + # so we need to get the position within the tokenized text and then remove the space + # (so there is no more space when fed into the tokenizer call) + if input_ids[i + 1] == tokenizer.convert_tokens_to_ids("▁"): + # remove artificial space + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + if i + 1 < len(input_ids): + next_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) + if next_token.startswith("▁"): + # next token starts with _ --> remove the _ from the token and re-tokenize + remove_next = False + remaining_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) + if len(remaining_token) > 1: + # ▁Test --> Test + remaining_token = remaining_token[1:] + else: + # ▁ --> remove + remove_next = True + remaining_id = tokenizer.convert_tokens_to_ids(remaining_token) + # replace the token with the remaining token + if remaining_id != tokenizer.unk_token_id: + input_ids[i + 1] = remaining_id + else: + # UNK token, remove it + remove_next = True + if remove_next: + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + elif label_args.use_auxiliary and labels[i] > Constants.AUX_OFFSET: # auxiliary if pack_samples: raise NotImplementedError() - if random.random() < label_args.auxiliary_remove_prob: - del input_ids[i + 1] - del labels[i + 1] - del block_ids[i + 1] + if random.random() < label_args.auxiliary_remove_prob: + if label_args.retain_first_consecutive_punctuation: + # remove only if the next token is not a newline + # this retains the current auxiliary character, even though we decided to remove it + # it may skew the statistics since an auxiliary character is a better proxy for a newline + if labels[i + 1] != 1: + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + else: + # in case of something like ".\n", this removes the "." and the \n label (=1) + # so the newline in the text is kept, but the label is removed! + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + try: i = i + 1 + next(index for index, label in enumerate(labels[i + 1 :]) if label != 0) except StopIteration: break - # Add CLS and SEP tokens after the corruption process - if tokenizer is not None: - input_ids = [tokenizer.cls_token_id] + input_ids + [tokenizer.sep_token_id] - # Extend block_ids for the added CLS and SEP tokens - block_ids = [block_ids[0]] + block_ids + [block_ids[-1]] - # labels for CLS and SEP tokens are 0 (none) - labels = [0] + labels + [0] - return input_ids, block_ids, labels @@ -312,3 +345,47 @@ def reconstruct_sentences(text, partial_sentences): fixed_sentences.append(text[i:]) return fixed_sentences + + +if __name__ == "__main__": + # test corrupt function + from transformers import AutoTokenizer + from tokenizers import AddedToken + + tokenizer = AutoTokenizer.from_pretrained("xlm-roberta-base") + tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + text = "That's right, Five!\n!\n!!!\n!\n Always lay the blame on others!" + input_ids = tokenizer(text)["input_ids"] + block_ids = [0] * len(input_ids) + label_args = LabelArgs( + custom_punctuation_file="punctuation_xlmr_unk.txt", + use_auxiliary=True, + auxiliary_remove_prob=1.0, + newline_whitespace_prob=1.0, + ) + label_dict = get_subword_label_dict(label_args, tokenizer) + + # corrupt + input_ids, block_ids, labels = corrupt(input_ids, block_ids, "en", label_args, label_dict, tokenizer=tokenizer) + print(input_ids) + print(labels) + print(tokenizer.tokenize(text)) + print([(tokenizer.decode([input_id]), label) for input_id, label in zip(input_ids, labels)]) + print("newline labels in text:") + print(np.where(np.array(labels) == 1)) + print("newline ids in output text:") + print(np.where(np.array(input_ids) == tokenizer.all_special_ids[-1])) + print(tokenizer.decode(input_ids)) + + # ords = [ord(c) for c in text] + # block_ords = [0] * len(ords) + # label_args = LabelArgs(use_auxiliary=True, auxiliary_remove_prob=1.0) + # label_dict = get_label_dict(label_args) + + # ords, block_ords, labels = corrupt(ords, block_ords, "en", label_args, label_dict) + # print("ords", ords) + # print("labels", labels) + # print("newline labels in text:") + # print(np.where(np.array(labels) == 1)) + # print("newline ids in output text:") + # print(np.where(np.array([ord("\n")]) == ords)) From c931647e5d7bf80291913bdd52771f47eaaf9f6b Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 10 Jan 2024 19:35:10 +0000 Subject: [PATCH 031/262] add aux_training_weight --- ...xlmr_stratify_0.1_3layers_p_v2_0.5aux.json | 44 +++++++++++++++++++ wtpsplit/train/train.py | 18 ++++---- wtpsplit/train/utils.py | 6 ++- 3 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_3layers_p_v2_0.5aux.json diff --git a/configs/xlmr_stratify_0.1_3layers_p_v2_0.5aux.json b/configs/xlmr_stratify_0.1_3layers_p_v2_0.5aux.json new file mode 100644 index 00000000..3a37c177 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_p_v2_0.5aux.json @@ -0,0 +1,44 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-p-v2-aux0.5", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "aux_training_weight": 0.5, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning" +} \ No newline at end of file diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index b5f7491b..928599e7 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -92,6 +92,7 @@ class Args: use_loss_weights: bool = False do_sentence_training: bool = True do_auxiliary_training: bool = True + aux_training_weight: float = 1.0 ignore_non_hyphen: bool = False non_punctuation_sample_ratio: float = None adapter_warmup_steps: int = 0 @@ -267,6 +268,7 @@ def main(): use_loss_weights=args.use_loss_weights, do_sentence_training=args.do_sentence_training, do_auxiliary_training=args.do_auxiliary_training, + aux_training_weight=args.aux_training_weight, ) if training_args.local_rank == 0: @@ -525,7 +527,7 @@ def maybe_pad(text): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="valid", + split="train", ) logger.warning(f"Train dataset has {len(train_dataset)} examples.") @@ -597,13 +599,13 @@ def compute_metrics(trainer): training_args.adapter_lr_multiplier = args.adapter_lr_multiplier # give .map in multiprocessing enough of time to finish, to be safe - # time.sleep(10) - # if training_args.local_rank == 0: - # # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() - # # because that would remove the cache files of the other dataset! - # cleanup_cache_files([train_dataset, valid_dataset]) - # logger.warning("Cleaned up cache files.") - # time.sleep(10) + time.sleep(10) + if training_args.local_rank == 0: + # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() + # because that would remove the cache files of the other dataset! + cleanup_cache_files([train_dataset, valid_dataset]) + logger.warning("Cleaned up cache files.") + time.sleep(10) trainer = Trainer( model, diff --git a/wtpsplit/train/utils.py b/wtpsplit/train/utils.py index ea5c9ec3..1d76cb90 100644 --- a/wtpsplit/train/utils.py +++ b/wtpsplit/train/utils.py @@ -15,6 +15,7 @@ def __init__( use_loss_weights=False, do_sentence_training=True, do_auxiliary_training=False, + aux_training_weight=1.0, ): super().__init__() self.backbone = backbone @@ -26,6 +27,7 @@ def __init__( self.use_loss_weights = use_loss_weights self.do_sentence_training = do_sentence_training self.do_auxiliary_training = do_auxiliary_training + self.aux_training_weight = aux_training_weight @property def device(self): @@ -107,7 +109,9 @@ def forward( ) ) - loss = torch.stack(losses).sum() + loss = losses[0] + if len(losses) > 1: + loss += self.aux_training_weight * losses[1] output["loss"] = loss From 9eaf51a4e600c80b2709df47b2da7f08a87d7fda Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 10 Jan 2024 21:22:13 +0000 Subject: [PATCH 032/262] add basic Case Corruption --- ...lmr_stratify_0.1_3layers_p_v2_0.5Case.json | 45 +++++++++++ ...lmr_stratify_0.1_3layers_p_v2_0.9Case.json | 45 +++++++++++ wtpsplit/utils.py | 80 ++++++++++++++++++- 3 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_3layers_p_v2_0.5Case.json create mode 100644 configs/xlmr_stratify_0.1_3layers_p_v2_0.9Case.json diff --git a/configs/xlmr_stratify_0.1_3layers_p_v2_0.5Case.json b/configs/xlmr_stratify_0.1_3layers_p_v2_0.5Case.json new file mode 100644 index 00000000..808fdb1a --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_p_v2_0.5Case.json @@ -0,0 +1,45 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-p-v2-Case0.5", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "aux_training_weight": 1.0, + "case_corruption_prob": 0.5, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_p_v2_0.9Case.json b/configs/xlmr_stratify_0.1_3layers_p_v2_0.9Case.json new file mode 100644 index 00000000..b34a5715 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_p_v2_0.9Case.json @@ -0,0 +1,45 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-p-v2-Case0.9", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "aux_training_weight": 1.0, + "case_corruption_prob": 0.9, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning" +} \ No newline at end of file diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index a24bf635..4265d521 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -78,6 +78,7 @@ class LabelArgs: custom_punctuation_file: str = None retain_first_consecutive_punctuation: bool = True non_whitespace_remove_spaces: bool = True + case_corruption_prob: float = 0.5 def __post_init__(self): if self.custom_punctuation_file: @@ -219,7 +220,12 @@ def corrupt( labels.insert(last_index_in_block, 0) else: del block_ids[i + 1] - if tokenizer and separator == "" and label_args.non_whitespace_remove_spaces and i + 1 < len(input_ids): + if ( + tokenizer + and separator == "" + and label_args.non_whitespace_remove_spaces + and i + 1 < len(input_ids) + ): # tokenizer.decode() retains the space that leaks the information # so we need to get the position within the tokenized text and then remove the space # (so there is no more space when fed into the tokenizer call) @@ -251,12 +257,47 @@ def corrupt( del input_ids[i + 1] del labels[i + 1] del block_ids[i + 1] + if random.random() < label_args.case_corruption_prob and i + 1 < len(input_ids): + if not tokenizer: + raise NotImplementedError() + # corrupt case + token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) + insert_ = False + if token.startswith("▁"): + insert_ = True + token = token[1:] + if token.istitle(): + token = token.lower() + # re-tokenize + # token_ids = tokenizer.convert_tokens_to_ids(token if not insert_ else "▁" + token) + token_ids = tokenizer(token if not insert_ else "▁" + token, add_special_tokens=False)["input_ids"] + if len(token_ids) == 0 or input_ids[i + 1] == tokenizer.unk_token_id: + # UNK or whitespace token, remove it + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + else: + if token_ids[0] == tokenizer.convert_tokens_to_ids("▁"): + token_ids = token_ids[1:] + elif len(token_ids) > 1: + # replace the token with the remaining token + input_ids[i + 1] = token_ids[0] + for token_id in token_ids[1:]: + input_ids.insert(i + 2, token_id) + labels.insert(i + 2, 0) + block_ids.insert(i + 2, block_ids[i + 1]) + elif len(token_ids) == 1: + input_ids[i + 1] = token_ids[0] + else: + print(token, token_ids, input_ids[i + 1], tokenizer.decode(input_ids[i + 1])) + elif label_args.use_auxiliary and labels[i] > Constants.AUX_OFFSET: # auxiliary if pack_samples: raise NotImplementedError() - if random.random() < label_args.auxiliary_remove_prob: + if random.random() < label_args.auxiliary_remove_prob: + removed_aux_char = False if label_args.retain_first_consecutive_punctuation: # remove only if the next token is not a newline # this retains the current auxiliary character, even though we decided to remove it @@ -265,12 +306,47 @@ def corrupt( del input_ids[i + 1] del labels[i + 1] del block_ids[i + 1] + removed_aux_char = True else: # in case of something like ".\n", this removes the "." and the \n label (=1) # so the newline in the text is kept, but the label is removed! del input_ids[i + 1] del labels[i + 1] del block_ids[i + 1] + removed_aux_char = True + if random.random() < label_args.case_corruption_prob and removed_aux_char and i + 1 < len(input_ids): + if not tokenizer: + raise NotImplementedError() + # corrupt case + token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) + insert_ = False + if token.startswith("▁"): + insert_ = True + token = token[1:] + if token.istitle(): + token = token.lower() + # re-tokenize + # token_ids = tokenizer.convert_tokens_to_ids(token if not insert_ else "▁" + token) + token_ids = tokenizer(token if not insert_ else "▁" + token, add_special_tokens=False)["input_ids"] + if len(token_ids) == 0 or input_ids[i + 1] == tokenizer.unk_token_id: + # UNK or whitespace token, remove it + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + else: + if token_ids[0] == tokenizer.convert_tokens_to_ids("▁"): + token_ids = token_ids[1:] + elif len(token_ids) > 1: + # replace the token with the remaining token + input_ids[i + 1] = token_ids[0] + for token_id in token_ids[1:]: + input_ids.insert(i + 2, token_id) + labels.insert(i + 2, 0) + block_ids.insert(i + 2, block_ids[i + 1]) + elif len(token_ids) == 1: + input_ids[i + 1] = token_ids[0] + else: + print(token, token_ids, input_ids[i + 1], tokenizer.decode(input_ids[i + 1])) try: i = i + 1 + next(index for index, label in enumerate(labels[i + 1 :]) if label != 0) From 15282eca631668d6f6e69edd7b32696337ac6d7e Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 11 Jan 2024 20:26:43 +0000 Subject: [PATCH 033/262] adapt loss addition --- configs/xlmr_stratify_0.1_3layers_debug.json | 44 ++++++++++++++++++++ wtpsplit/train/utils.py | 37 +++++++--------- 2 files changed, 58 insertions(+), 23 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_3layers_debug.json diff --git a/configs/xlmr_stratify_0.1_3layers_debug.json b/configs/xlmr_stratify_0.1_3layers_debug.json new file mode 100644 index 00000000..101c5ec3 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_debug.json @@ -0,0 +1,44 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-DEBUG", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 1, + "preprocessing_num_workers": 8, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "none", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "aux_training_weight": 0.5, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "info" +} \ No newline at end of file diff --git a/wtpsplit/train/utils.py b/wtpsplit/train/utils.py index 1d76cb90..64a856de 100644 --- a/wtpsplit/train/utils.py +++ b/wtpsplit/train/utils.py @@ -63,8 +63,6 @@ def forward( if labels is not None: loss_fn = nn.BCEWithLogitsLoss(reduction="none") - losses = [] - # main (newline prediction) objective if self.do_sentence_training: # label smoothing @@ -73,17 +71,14 @@ def forward( ).view(-1) * self.loss_margin * 2 sentence_logits = logits[:, :, Constants.NEWLINE_INDEX].view(-1) - losses.append( - ( - loss_fn( - sentence_logits, - sentence_labels, - ) - * (label_weights.view(-1) if label_weights is not None and self.use_loss_weights else 1) - * reduced_attention_mask.view(-1) - ).sum() - / reduced_attention_mask.sum() - ) + loss = ( + loss_fn( + sentence_logits, + sentence_labels, + ) + * (label_weights.view(-1) if label_weights is not None and self.use_loss_weights else 1) + * reduced_attention_mask.view(-1) + ).sum() / reduced_attention_mask.sum() # auxiliary (punctuation prediction) objective if self.do_auxiliary_training: @@ -102,22 +97,18 @@ def forward( loss_fn.ignore_index, ) - losses.append( - loss_fn( - logits[:, :, Constants.AUX_OFFSET :].view(-1, self.config.num_labels - Constants.AUX_OFFSET), - aux_labels.view(-1), - ) + aux_loss = loss_fn( + logits[:, :, Constants.AUX_OFFSET :].view(-1, self.config.num_labels - Constants.AUX_OFFSET), + aux_labels.view(-1), ) - loss = losses[0] - if len(losses) > 1: - loss += self.aux_training_weight * losses[1] + loss = loss + self.aux_training_weight * aux_loss output["loss"] = loss return output - - + + def cleanup_cache_files(datasets) -> int: """Clean up all cache files in the dataset cache directory, except those currently used by any of the provided datasets. From c29f6a9e67584167ff81072c519605d868932339 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 11 Jan 2024 20:40:59 +0000 Subject: [PATCH 034/262] fix standard case_corruption_prob --- wtpsplit/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 4265d521..6445bc07 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -78,7 +78,7 @@ class LabelArgs: custom_punctuation_file: str = None retain_first_consecutive_punctuation: bool = True non_whitespace_remove_spaces: bool = True - case_corruption_prob: float = 0.5 + case_corruption_prob: float = 0.0 def __post_init__(self): if self.custom_punctuation_file: From 1fd7730dbecbd7feaf2a0d4d4224a233348349a9 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 12 Jan 2024 07:35:16 +0000 Subject: [PATCH 035/262] add auxp config --- ...lmr_stratify_0.1_3layers_p_v2_auxp0.3.json | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 configs/xlmr_stratify_0.1_3layers_p_v2_auxp0.3.json diff --git a/configs/xlmr_stratify_0.1_3layers_p_v2_auxp0.3.json b/configs/xlmr_stratify_0.1_3layers_p_v2_auxp0.3.json new file mode 100644 index 00000000..7bcedcf0 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_p_v2_auxp0.3.json @@ -0,0 +1,45 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-p-v2_auxp0.3", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 100000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "aux_training_weight": 1.0, + "auxiliary_remove_prob": 0.3, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning" +} \ No newline at end of file From e72c358b4ded2db4863016c7e5e21c6e61ff5c39 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 12 Jan 2024 13:12:53 +0000 Subject: [PATCH 036/262] update intrinsic.py, add violin plot --- wtpsplit/evaluation/intrinsic.py | 52 ++++++++++++- wtpsplit/summary_plot.py | 122 +++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 wtpsplit/summary_plot.py diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 8f0760a0..d10c2908 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -40,6 +40,7 @@ class Args: stride: int = 64 batch_size: int = 32 include_langs: List[str] = None + threshold: float = 0.01 def process_logits(text, model, lang_code, args): @@ -70,10 +71,12 @@ def process_logits(text, model, lang_code, args): def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_sentences=10_000): - logits_path = Constants.CACHE_DIR / (model.config.mixture_name + "_logits_u0001.h5") + logits_path = Constants.CACHE_DIR / ( + f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_logits_u{args.threshold}.h5" + ) # TODO: revert to "a" - with h5py.File(logits_path, "w") as f, torch.no_grad(): + with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in Constants.LANGINFO.index: if args.include_langs is not None and lang_code not in args.include_langs: continue @@ -127,6 +130,24 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ return h5py.File(logits_path, "r") +def compute_statistics(values): + if not values: # Check for empty values list + return {"mean": None, "median": None, "std": None, "min": None, "min_lang": None, "max": None, "max_lang": None} + + scores, langs = zip(*values) # Unpack scores and languages + min_index = np.argmin(scores) + max_index = np.argmax(scores) + return { + "mean": np.mean(scores), + "median": np.median(scores), + "std": np.std(scores), + "min": scores[min_index], + "min_lang": langs[min_index], + "max": scores[max_index], + "max_lang": langs[max_index] + } + + if __name__ == "__main__": (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() @@ -145,6 +166,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ # now, compute the intrinsic scores. results = {} clfs = {} + # Initialize lists to store scores for each metric across all languages + u_scores, t_scores, punct_scores = [], [], [] for lang_code, dsets in tqdm(eval_data.items()): if args.include_langs is not None and lang_code not in args.include_langs: @@ -169,6 +192,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ print(clf) print(np.argsort(clf[0].coef_[0])[:10], "...", np.argsort(clf[0].coef_[0])[-10:]) print(np.where(np.argsort(clf[0].coef_[0]) == 0)[0]) + score_t, score_punct, _ = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:], @@ -194,20 +218,40 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ # just for printing score_t = score_t or 0.0 score_punct = score_punct or 0.0 + + u_scores.append((score_u, lang_code)) + t_scores.append((score_t, lang_code)) + punct_scores.append((score_punct, lang_code)) print(f"{lang_code} {dataset_name} {score_u:.3f} {score_t:.3f} {score_punct:.3f}") + # Compute statistics for each metric across all languages + results_avg = { + "u": compute_statistics(u_scores), + "t": compute_statistics(t_scores), + "punct": compute_statistics(punct_scores), + "include_langs": args.include_langs, + } + sio.dump( clfs, open( - Constants.CACHE_DIR / (model.config.mixture_name + ".skops"), + Constants.CACHE_DIR / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}.skops"), "wb", ), ) json.dump( results, open( - Constants.CACHE_DIR / (model.config.mixture_name + "_intrinsic_results_u0005.json"), + Constants.CACHE_DIR + / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_intrinsic_results_u{args.threshold}.json"), "w", ), indent=4, ) + + # Write results_avg to JSON + json.dump( + results_avg, + open(Constants.CACHE_DIR / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_u{args.threshold}_AVG.json"), "w"), + indent=4, + ) diff --git a/wtpsplit/summary_plot.py b/wtpsplit/summary_plot.py new file mode 100644 index 00000000..f8f3438a --- /dev/null +++ b/wtpsplit/summary_plot.py @@ -0,0 +1,122 @@ +import pandas as pd +import plotly.graph_objects as go +import json + +FILES = [ + ".cache/xlmr-normal-v2_b512+s_64_intrinsic_results_u0.01.json", + ".cache/xlmr-normal-v2_b512+s64_intrinsic_results_u0.01.json", + ".cache/xlm-tokenv2_intrinsic_results_u001.json", +] +NAME = "test" + + +def darken_color(color, factor): + """Darken a given RGB color by a specified factor.""" + r, g, b, a = color + r = max(int(r * factor), 0) + g = max(int(g * factor), 0) + b = max(int(b * factor), 0) + return (r, g, b, a) + + +def plot_violin_from_json(files, name): + # Prepare data + data = {"score": [], "metric": [], "file": [], "x": []} + spacing = 1.0 # Space between groups of metrics + violin_width = 0.3 # Width of each violin + + # Base colors for each metric + base_colors = {"u": (0, 123, 255, 0.6), "t": (40, 167, 69, 0.6), "punct": (255, 193, 7, 0.6)} + color_darkening_factor = 0.8 # Factor to darken color for each subsequent file + + # Compute x positions and prepare colors for each file within each metric group + x_positions = {} + colors = {} + for i, metric in enumerate(["u", "t", "punct"]): + x_positions[metric] = {} + colors[metric] = {} + base_color = base_colors[metric] + for j, file in enumerate(files): + x_positions[metric][file] = i * spacing + spacing / (len(files) + 1) * (j + 1) + colors[metric][file] = "rgba" + str(darken_color(base_color, color_darkening_factor**j)) + + for file in files: + with open(file, "r") as f: + content = json.load(f) + for lang, scores in content.items(): + for dataset, values in scores.items(): + for metric in ["u", "t", "punct"]: + data["score"].append(values[metric]) + data["metric"].append(metric) + data["file"].append( + file.split("/")[-1].split(".")[0] + ) # Use file base name without extension for legend + data["x"].append(x_positions[metric][file]) # Use computed x position + + # Convert to DataFrame + df = pd.DataFrame(data) + + # Create violin plots + fig = go.Figure() + for metric in ["u", "t", "punct"]: + metric_df = df[df["metric"] == metric] + for file in files: + file_name = file.split("/")[-1].split(".")[0] + file_df = metric_df[metric_df["file"] == file_name] + if not file_df.empty: + fig.add_trace( + go.Violin( + y=file_df["score"], + x=file_df["x"], + name=file_name if metric == "u" else "", # Only show legend for 'u' to avoid duplicates + legendgroup=file_name, + line_color=colors[metric][file], + box_visible=True, + meanline_visible=True, + width=violin_width, + ) + ) + + # Update layout + # Calculate the center positions for each metric group + center_positions = [sum(values.values()) / len(values) for key, values in x_positions.items()] + fig.update_layout( + title="Violin Plots of Scores by Metric", + xaxis=dict(title="Metric", tickvals=center_positions, ticktext=["u", "t", "punct"]), + yaxis_title="Scores", + violingap=0, + violingroupgap=0, + violinmode="overlay", + paper_bgcolor="white", + plot_bgcolor="white", + font=dict(color="black", size=14), + title_x=0.5, + legend_title_text="File", + xaxis_showgrid=False, + yaxis_showgrid=True, + xaxis_zeroline=False, + yaxis_zeroline=False, + margin=dict(l=40, r=40, t=40, b=40), + ) + + # Update axes lines + fig.update_xaxes(showline=True, linewidth=1, linecolor="gray") + fig.update_yaxes(showline=True, linewidth=1, linecolor="gray") + + # Simplify and move legend to the top + fig.update_layout(legend=dict(orientation="h", yanchor="bottom", y=1.02, xanchor="right", x=1)) + + fig.show() + + # Save the figure as HTML + html_filename = f"{name}.html" + fig.write_html(html_filename) + print(f"Plot saved as {html_filename}") + + # Save the figure as PNG + png_filename = f"{name}.png" + fig.write_image(png_filename) + print(f"Plot saved as {png_filename}") + + +plot_violin_from_json(FILES, NAME) From 7f9c7b82b01ba71b83dc5fab13b595e5d6013187 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 13 Jan 2024 11:26:24 +0000 Subject: [PATCH 037/262] add limited lookahead via shifted causal attn mask --- ...xlmr_stratify_0.1_3layers_p_v2_look10.json | 43 +++ wtpsplit/models.py | 297 ++++++++++++++++-- wtpsplit/summary_plot.py | 11 +- wtpsplit/train/train.py | 1 + wtpsplit/train/utils.py | 2 + 5 files changed, 332 insertions(+), 22 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_3layers_p_v2_look10.json diff --git a/configs/xlmr_stratify_0.1_3layers_p_v2_look10.json b/configs/xlmr_stratify_0.1_3layers_p_v2_look10.json new file mode 100644 index 00000000..72ae58cb --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_p_v2_look10.json @@ -0,0 +1,43 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-normal-v2-look10", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 512, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 200000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": 10, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", +} \ No newline at end of file diff --git a/wtpsplit/models.py b/wtpsplit/models.py index c0659593..cfbd9eca 100644 --- a/wtpsplit/models.py +++ b/wtpsplit/models.py @@ -1,12 +1,16 @@ import copy import math -from typing import Optional, Tuple, Union +import warnings +from typing import List, Optional, Tuple, Union import torch -from torch import nn +from torch import Tensor, nn +from torch.nn import CrossEntropyLoss +from torchinfo import summary from transformers import AutoModel, AutoModelForTokenClassification +from transformers.modeling_outputs import BaseModelOutputWithPoolingAndCrossAttentions +from transformers.modeling_utils import ModuleUtilsMixin from transformers.models.bert.modeling_bert import BertEncoder, BertForTokenClassification, BertModel, BertPooler -from transformers.models.xlm_roberta import XLMRobertaModel, XLMRobertaForTokenClassification from transformers.models.canine.modeling_canine import ( _PRIMES, ACT2FN, @@ -27,7 +31,15 @@ ConvProjection, TokenClassifierOutput, ) -from torchinfo import summary +from transformers.models.xlm_roberta import ( + XLMRobertaForTokenClassification, + XLMRobertaModel, +) +from transformers.models.xlm_roberta.modeling_xlm_roberta import ( + XLMRobertaEmbeddings, + XLMRobertaEncoder, + XLMRobertaPooler, +) from wtpsplit.configs import BertCharConfig, LACanineConfig, SubwordXLMConfig from wtpsplit.utils import Constants @@ -969,7 +981,7 @@ def __init__(self, config): super().__init__(config) self.num_labels = config.num_labels - self.roberta = XLMRobertaModel(config, add_pooling_layer=False) + self.roberta = SubwordXLMRobertaModel(config, add_pooling_layer=False) classifier_dropout = ( config.classifier_dropout if config.classifier_dropout is not None else config.hidden_dropout_prob ) @@ -993,20 +1005,267 @@ def forward( hashed_ids: Optional[torch.Tensor] = None, language_ids=None, return_dict: Optional[bool] = None, + lookahead: Optional[int] = None, ) -> Union[Tuple[torch.Tensor], TokenClassifierOutput]: - return super().forward( + r""" + labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*): + Labels for computing the token classification loss. Indices should be in `[0, ..., config.num_labels - 1]`. + """ + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs = self.roberta( input_ids, - attention_mask, - token_type_ids, - position_ids, - head_mask, - inputs_embeds, - labels, - output_attentions, - output_hidden_states, - return_dict, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + lookahead=lookahead, ) + sequence_output = outputs[0] + + sequence_output = self.dropout(sequence_output) + logits = self.classifier(sequence_output) + + loss = None + if labels is not None: + # move labels to correct device to enable model parallelism + labels = labels.to(logits.device) + loss_fct = CrossEntropyLoss() + loss = loss_fct(logits.view(-1, self.num_labels), labels.view(-1)) + + if not return_dict: + output = (logits,) + outputs[2:] + return ((loss,) + output) if loss is not None else output + + return TokenClassifierOutput( + loss=loss, + logits=logits, + hidden_states=outputs.hidden_states, + attentions=outputs.attentions, + ) + + +class SubwordXLMRobertaModel(XLMRobertaModel): + _keys_to_ignore_on_load_missing = [r"position_ids"] + + # Copied from transformers.models.bert.modeling_bert.BertModel.__init__ with Bert->XLMRoberta + def __init__(self, config, add_pooling_layer=True): + super().__init__(config) + self.config = config + + self.embeddings = XLMRobertaEmbeddings(config) + self.encoder = XLMRobertaEncoder(config) + + self.pooler = XLMRobertaPooler(config) if add_pooling_layer else None + + # Initialize weights and apply final processing + self.post_init() + + # Copied from transformers.models.bert.modeling_bert.BertModel.forward + def forward( + self, + input_ids: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + token_type_ids: Optional[torch.Tensor] = None, + position_ids: Optional[torch.Tensor] = None, + head_mask: Optional[torch.Tensor] = None, + inputs_embeds: Optional[torch.Tensor] = None, + encoder_hidden_states: Optional[torch.Tensor] = None, + encoder_attention_mask: Optional[torch.Tensor] = None, + past_key_values: Optional[List[torch.FloatTensor]] = None, + use_cache: Optional[bool] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + lookahead: Optional[int] = None, + ) -> Union[Tuple[torch.Tensor], BaseModelOutputWithPoolingAndCrossAttentions]: + r""" + encoder_hidden_states (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`, *optional*): + Sequence of hidden-states at the output of the last layer of the encoder. Used in the cross-attention if + the model is configured as a decoder. + encoder_attention_mask (`torch.FloatTensor` of shape `(batch_size, sequence_length)`, *optional*): + Mask to avoid performing attention on the padding token indices of the encoder input. This mask is used in + the cross-attention if the model is configured as a decoder. Mask values selected in `[0, 1]`: + + - 1 for tokens that are **not masked**, + - 0 for tokens that are **masked**. + past_key_values (`tuple(tuple(torch.FloatTensor))` of length `config.n_layers` with each tuple having 4 tensors of shape `(batch_size, num_heads, sequence_length - 1, embed_size_per_head)`): + Contains precomputed key and value hidden states of the attention blocks. Can be used to speed up decoding. + + If `past_key_values` are used, the user can optionally input only the last `decoder_input_ids` (those that + don't have their past key value states given to this model) of shape `(batch_size, 1)` instead of all + `decoder_input_ids` of shape `(batch_size, sequence_length)`. + use_cache (`bool`, *optional*): + If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding (see + `past_key_values`). + """ + output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions + output_hidden_states = ( + output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states + ) + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + if self.config.is_decoder: + use_cache = use_cache if use_cache is not None else self.config.use_cache + else: + use_cache = False + + if input_ids is not None and inputs_embeds is not None: + raise ValueError("You cannot specify both input_ids and inputs_embeds at the same time") + elif input_ids is not None: + input_shape = input_ids.size() + elif inputs_embeds is not None: + input_shape = inputs_embeds.size()[:-1] + else: + raise ValueError("You have to specify either input_ids or inputs_embeds") + + batch_size, seq_length = input_shape + device = input_ids.device if input_ids is not None else inputs_embeds.device + + # past_key_values_length + past_key_values_length = past_key_values[0][0].shape[2] if past_key_values is not None else 0 + + if attention_mask is None: + attention_mask = torch.ones(((batch_size, seq_length + past_key_values_length)), device=device) + + if token_type_ids is None: + if hasattr(self.embeddings, "token_type_ids"): + buffered_token_type_ids = self.embeddings.token_type_ids[:, :seq_length] + buffered_token_type_ids_expanded = buffered_token_type_ids.expand(batch_size, seq_length) + token_type_ids = buffered_token_type_ids_expanded + else: + token_type_ids = torch.zeros(input_shape, dtype=torch.long, device=device) + + # We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length] + # ourselves in which case we just need to make it broadcastable to all heads. + extended_attention_mask: torch.Tensor = self.get_extended_attention_mask(attention_mask, input_shape, lookahead) + + # If a 2D or 3D attention mask is provided for the cross-attention + # we need to make broadcastable to [batch_size, num_heads, seq_length, seq_length] + if self.config.is_decoder and encoder_hidden_states is not None: + encoder_batch_size, encoder_sequence_length, _ = encoder_hidden_states.size() + encoder_hidden_shape = (encoder_batch_size, encoder_sequence_length) + if encoder_attention_mask is None: + encoder_attention_mask = torch.ones(encoder_hidden_shape, device=device) + encoder_extended_attention_mask = self.invert_attention_mask(encoder_attention_mask) + else: + encoder_extended_attention_mask = None + + # Prepare head mask if needed + # 1.0 in head_mask indicate we keep the head + # attention_probs has shape bsz x n_heads x N x N + # input head_mask has shape [num_heads] or [num_hidden_layers x num_heads] + # and head_mask is converted to shape [num_hidden_layers x batch x num_heads x seq_length x seq_length] + head_mask = self.get_head_mask(head_mask, self.config.num_hidden_layers) + + embedding_output = self.embeddings( + input_ids=input_ids, + position_ids=position_ids, + token_type_ids=token_type_ids, + inputs_embeds=inputs_embeds, + past_key_values_length=past_key_values_length, + ) + encoder_outputs = self.encoder( + embedding_output, + attention_mask=extended_attention_mask, + head_mask=head_mask, + encoder_hidden_states=encoder_hidden_states, + encoder_attention_mask=encoder_extended_attention_mask, + past_key_values=past_key_values, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + ) + sequence_output = encoder_outputs[0] + pooled_output = self.pooler(sequence_output) if self.pooler is not None else None + + if not return_dict: + return (sequence_output, pooled_output) + encoder_outputs[1:] + + return BaseModelOutputWithPoolingAndCrossAttentions( + last_hidden_state=sequence_output, + pooler_output=pooled_output, + past_key_values=encoder_outputs.past_key_values, + hidden_states=encoder_outputs.hidden_states, + attentions=encoder_outputs.attentions, + cross_attentions=encoder_outputs.cross_attentions, + ) + + def get_extended_attention_mask( + self, + attention_mask: Tensor, + input_shape: Tuple[int], + lookahead: Optional[int] = None, + device: torch.device = None, + dtype: torch.float = None, + ) -> Tensor: + """ + Makes broadcastable attention and causal masks so that future and masked tokens are ignored. + + Arguments: + attention_mask (`torch.Tensor`): + Mask with ones indicating tokens to attend to, zeros for tokens to ignore. + input_shape (`Tuple[int]`): + The shape of the input to the model. + + Returns: + `torch.Tensor` The extended attention mask, with a the same dtype as `attention_mask.dtype`. + """ + if dtype is None: + dtype = self.dtype + + if not (attention_mask.dim() == 2 and self.config.is_decoder): + # show warning only if it won't be shown in `create_extended_attention_mask_for_decoder` + if device is not None: + warnings.warn( + "The `device` argument is deprecated and will be removed in v5 of Transformers.", FutureWarning + ) + # We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length] + # ourselves in which case we just need to make it broadcastable to all heads. + if attention_mask.dim() == 3: + extended_attention_mask = attention_mask[:, None, :, :] + + elif attention_mask.dim() == 2: + # Provided a padding mask of dimensions [batch_size, seq_length] + # - if the model is a decoder, apply a causal mask in addition to the padding mask + # - if the model is an encoder, make the mask broadcastable to [batch_size, num_heads, seq_length, seq_length] + if self.config.is_decoder: + extended_attention_mask = ModuleUtilsMixin.create_extended_attention_mask_for_decoder( + input_shape, attention_mask, device + ) + if lookahead: + # lookahead mask of shape [batch_size, 1, seq_length, seq_length] + # the current token should attend to the next `lookahead` tokens + # the current token should not attend to the previous `lookahead` tokens + _, seq_length = attention_mask.shape + # Create a lookahead mask + lookahead_mask = torch.tril(torch.ones(seq_length, seq_length), diagonal=lookahead, out=None).to( + attention_mask.device + ) + # Combine the attention mask with the lookahead mask + extended_attention_mask = attention_mask[:, None, None, :] * lookahead_mask + else: + extended_attention_mask = attention_mask[:, None, None, :] + else: + raise ValueError( + f"Wrong shape for input_ids (shape {input_shape}) or attention_mask (shape {attention_mask.shape})" + ) + + # Since attention_mask is 1.0 for positions we want to attend and 0.0 for + # masked positions, this operation will create a tensor which is 0.0 for + # positions we want to attend and the dtype's smallest value for masked positions. + # Since we are adding it to the raw scores before the softmax, this is + # effectively the same as removing these entirely. + extended_attention_mask = extended_attention_mask.to(dtype=dtype) # fp16 compatibility + extended_attention_mask = (1.0 - extended_attention_mask) * torch.finfo(dtype).min + return extended_attention_mask + AutoModel.register(LACanineConfig, LACanineModel) AutoModelForTokenClassification.register(LACanineConfig, LACanineForTokenClassification) @@ -1024,7 +1283,7 @@ def forward( model_str = "xlm-roberta-base" config = AutoConfig.from_pretrained(model_str) config.num_labels = 4 - config.num_hidden_layers = 9 + config.num_hidden_layers = 1 backbone = SubwordXLMForTokenClassification.from_pretrained(model_str, config=config) print(summary(backbone, depth=4)) @@ -1032,12 +1291,14 @@ def forward( text = "This is a test\n sentence \n\n" tokenizer = AutoTokenizer.from_pretrained(model_str) - tokens = tokenizer(text, return_tensors="pt", add_special_tokens=False) + tokens = tokenizer(text, return_tensors="pt", add_special_tokens=False, pad_to_multiple_of=8, padding=True) from tokenizers import AddedToken tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) print(tokenizer.tokenize(text)) print(tokenizer.encode(text)) print(tokens) + # forward pass - print(backbone(**tokens)) + lookahead = 1 + print(backbone(**tokens, lookahead=lookahead)) diff --git a/wtpsplit/summary_plot.py b/wtpsplit/summary_plot.py index f8f3438a..3d512e11 100644 --- a/wtpsplit/summary_plot.py +++ b/wtpsplit/summary_plot.py @@ -3,9 +3,9 @@ import json FILES = [ - ".cache/xlmr-normal-v2_b512+s_64_intrinsic_results_u0.01.json", + ".cache/xlmr-normal-v2_b128+s64_intrinsic_results_u0.01.json", + ".cache/xlmr-normal-v2_b256+s64_intrinsic_results_u0.01.json", ".cache/xlmr-normal-v2_b512+s64_intrinsic_results_u0.01.json", - ".cache/xlm-tokenv2_intrinsic_results_u001.json", ] NAME = "test" @@ -21,9 +21,9 @@ def darken_color(color, factor): def plot_violin_from_json(files, name): # Prepare data - data = {"score": [], "metric": [], "file": [], "x": []} + data = {"score": [], "metric": [], "file": [], "x": [], "lang": []} spacing = 1.0 # Space between groups of metrics - violin_width = 0.3 # Width of each violin + violin_width = 0.5 / len(files) # Width of each violin # Base colors for each metric base_colors = {"u": (0, 123, 255, 0.6), "t": (40, 167, 69, 0.6), "punct": (255, 193, 7, 0.6)} @@ -52,6 +52,7 @@ def plot_violin_from_json(files, name): file.split("/")[-1].split(".")[0] ) # Use file base name without extension for legend data["x"].append(x_positions[metric][file]) # Use computed x position + data["lang"].append(lang) # Convert to DataFrame df = pd.DataFrame(data) @@ -74,6 +75,8 @@ def plot_violin_from_json(files, name): box_visible=True, meanline_visible=True, width=violin_width, + points="all", + hovertext=file_df["lang"], ) ) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 928599e7..4349420b 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -185,6 +185,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): "language_ids": torch.tensor(all_language_ids, dtype=torch.long), "label_weights": torch.stack(all_label_weights, 0), "labels": torch.stack(all_labels, 0), + "lookahead": args.lookahead, } return out diff --git a/wtpsplit/train/utils.py b/wtpsplit/train/utils.py index 1d76cb90..150d90a2 100644 --- a/wtpsplit/train/utils.py +++ b/wtpsplit/train/utils.py @@ -41,6 +41,7 @@ def forward( position_ids=None, labels=None, label_weights=None, + lookahead=None, **kwargs, ): if position_ids is not None: @@ -55,6 +56,7 @@ def forward( language_ids=language_ids, attention_mask=attention_mask, position_ids=position_ids, + lookahead=lookahead, **kwargs, ) ) From 9ca79552d33ee17abb1a7549b20c3b3fc8e1818c Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 13 Jan 2024 20:35:39 +0000 Subject: [PATCH 038/262] update plot & threshold --- wtpsplit/evaluation/intrinsic.py | 2 +- wtpsplit/summary_plot.py | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index d10c2908..432496d3 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -203,7 +203,7 @@ def compute_statistics(values): clfs[lang_code][dataset_name] = clf clf = list(copy.deepcopy(clf)) - clf[-1] = 0.01 # 0.01 + clf[-1] = args.threshold else: score_t = score_punct = None diff --git a/wtpsplit/summary_plot.py b/wtpsplit/summary_plot.py index 3d512e11..fb2c624f 100644 --- a/wtpsplit/summary_plot.py +++ b/wtpsplit/summary_plot.py @@ -6,6 +6,12 @@ ".cache/xlmr-normal-v2_b128+s64_intrinsic_results_u0.01.json", ".cache/xlmr-normal-v2_b256+s64_intrinsic_results_u0.01.json", ".cache/xlmr-normal-v2_b512+s64_intrinsic_results_u0.01.json", + ".cache/xlmr-normal-p-v2_auxp0.3_n0.9_b256_s64_intrinsic_results_u0.01.json", + ".cache/xlm-normal-p-v2_auxp0.3_n0.9_b512_s64_intrinsic_results_u0.001.json", + ".cache/xlmr-normal-p-v2_n0.9_b512+s64_intrinsic_results_u0.01.json", + ".cache/xlmr-normal-p-v2-auxp0.1_b512+s64_intrinsic_results_u0.01.json", + # "evaluation/evaluation_results/wtp-canine-s-3l-no-adapters_intrinsic_results.json", + # "evaluation/evaluation_results/wtp-canine-s-3l_intrinsic_results.json", ] NAME = "test" @@ -21,7 +27,7 @@ def darken_color(color, factor): def plot_violin_from_json(files, name): # Prepare data - data = {"score": [], "metric": [], "file": [], "x": [], "lang": []} + data = {"score": [], "metric": [], "file": [], "x": [], "lang": [], "dataset": []} spacing = 1.0 # Space between groups of metrics violin_width = 0.5 / len(files) # Width of each violin @@ -48,11 +54,10 @@ def plot_violin_from_json(files, name): for metric in ["u", "t", "punct"]: data["score"].append(values[metric]) data["metric"].append(metric) - data["file"].append( - file.split("/")[-1].split(".")[0] - ) # Use file base name without extension for legend + data["file"].append(file.split("/")[-1]) # Use file base name without extension for legend data["x"].append(x_positions[metric][file]) # Use computed x position data["lang"].append(lang) + data["dataset"].append(dataset) # Convert to DataFrame df = pd.DataFrame(data) @@ -62,7 +67,7 @@ def plot_violin_from_json(files, name): for metric in ["u", "t", "punct"]: metric_df = df[df["metric"] == metric] for file in files: - file_name = file.split("/")[-1].split(".")[0] + file_name = file.split("/")[-1] file_df = metric_df[metric_df["file"] == file_name] if not file_df.empty: fig.add_trace( @@ -76,7 +81,9 @@ def plot_violin_from_json(files, name): meanline_visible=True, width=violin_width, points="all", - hovertext=file_df["lang"], + hovertext=file_df["lang"] + " " + file_df["dataset"], + hovertemplate=file_name + "
%{hovertext}", + # hoveron="points+violins+kde" ) ) From 2214f4c99ea8781c3c97e24b24e464cfe7762fcf Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 14 Jan 2024 13:09:14 +0000 Subject: [PATCH 039/262] add lowercase eval --- wtpsplit/evaluation/intrinsic_lowercase.py | 258 +++++++++++++++++++++ wtpsplit/extract.py | 1 - wtpsplit/models.py | 4 +- wtpsplit/summary_plot.py | 24 +- wtpsplit/train/evaluate.py | 3 + wtpsplit/train/train.py | 22 ++ 6 files changed, 302 insertions(+), 10 deletions(-) create mode 100644 wtpsplit/evaluation/intrinsic_lowercase.py diff --git a/wtpsplit/evaluation/intrinsic_lowercase.py b/wtpsplit/evaluation/intrinsic_lowercase.py new file mode 100644 index 00000000..e90ecd0a --- /dev/null +++ b/wtpsplit/evaluation/intrinsic_lowercase.py @@ -0,0 +1,258 @@ +import copy +import json +from dataclasses import dataclass +from typing import List + +import h5py +import skops.io as sio +import torch +from datasets import load_dataset +from tqdm.auto import tqdm +from transformers import AutoModelForTokenClassification, HfArgumentParser +import numpy as np + +import wtpsplit.models # noqa: F401 +from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs +from wtpsplit.extract import PyTorchWrapper, extract +from wtpsplit.utils import Constants + + +@dataclass +class Args: + model_path: str + # eval data in the format: + # { + # "": { + # "sentence": { + # "": { + # "meta": { + # "train_data": ["train sentence 1", "train sentence 2"] + # }, + # "data": ["test sentence 1", "test sentence 2"] + # } + # } + # } + # } + eval_data_path: str = "data/eval.pth" + valid_text_path: str = None # "data/sentence/valid.parquet" + device: str = "cpu" + block_size: int = 512 + stride: int = 64 + batch_size: int = 32 + include_langs: List[str] = None + threshold: float = 0.01 + + +def process_logits(text, model, lang_code, args): + # Extract necessary data + text = text.lower() + logits, offsets_mapping, tokenizer = extract( + [text], + model, + lang_code=lang_code, + stride=args.stride, + block_size=args.block_size, + batch_size=args.batch_size, + pad_last_batch=True, + verbose=True, + ) + logits = logits[0] + if offsets_mapping is not None: + offsets_mapping = offsets_mapping[0] + + if "xlm" in model.config.model_type: + tokens = tokenizer.tokenize(text, verbose=False) + + # Use the vectorized function to convert token probabilities to character probabilities for the entire array + char_probs = token_to_char_probs(text, tokens, logits, tokenizer, offsets_mapping) + + logits = char_probs + + return logits + + +def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_sentences=10_000): + logits_path = Constants.CACHE_DIR / ( + f"{args.model_path.split('/')[0]}_L_b{args.block_size}+s{args.stride}_logits_u{args.threshold}.h5" + ) + + # TODO: revert to "a" + with h5py.File(logits_path, "w") as f, torch.no_grad(): + for lang_code in Constants.LANGINFO.index: + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + print(f"Processing {lang_code}...") + if lang_code not in f: + lang_group = f.create_group(lang_code) + else: + lang_group = f[lang_code] + + # valid data + if valid_data is not None and "valid" not in lang_group: + sentences = [sample["text"].strip() for sample in valid_data if sample["lang"] == lang_code] + assert len(sentences) > 0 + + separator = Constants.SEPARATORS[lang_code] + valid_text = separator.join(sentences) + + valid_logits = process_logits(valid_text, model, lang_code, args) + + lang_group.create_dataset("valid", data=valid_logits) + + # eval data + for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): + if dataset_name not in lang_group: + dset_group = lang_group.create_group(dataset_name) + else: + dset_group = lang_group[dataset_name] + + if "test_logits" not in dset_group: + test_sentences = dataset["data"] + test_text = Constants.SEPARATORS[lang_code].join(test_sentences) + + test_logits = process_logits(test_text, model, lang_code, args) + test_labels = get_labels(lang_code, test_sentences, after_space=False) + + dset_group.create_dataset("test_logits", data=test_logits) + dset_group.create_dataset("test_labels", data=test_labels) + + train_sentences = dataset["meta"].get("train_data") + if train_sentences is not None and "train_logits" not in dset_group: + train_sentences = train_sentences[:max_n_train_sentences] + train_text = Constants.SEPARATORS[lang_code].join(train_sentences) + + train_logits = process_logits(train_text, model, lang_code, args) + train_labels = get_labels(lang_code, train_sentences, after_space=False) + + dset_group.create_dataset("train_logits", data=train_logits) + dset_group.create_dataset("train_labels", data=train_labels) + + return h5py.File(logits_path, "r") + + +def compute_statistics(values): + if not values: # Check for empty values list + return {"mean": None, "median": None, "std": None, "min": None, "min_lang": None, "max": None, "max_lang": None} + + scores, langs = zip(*values) # Unpack scores and languages + min_index = np.argmin(scores) + max_index = np.argmax(scores) + return { + "mean": np.mean(scores), + "median": np.median(scores), + "std": np.std(scores), + "min": scores[min_index], + "min_lang": langs[min_index], + "max": scores[max_index], + "max_lang": langs[max_index] + } + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + + eval_data = torch.load(args.eval_data_path) + if args.valid_text_path is not None: + valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") + else: + valid_data = None + + print("Loading model...") + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) + + # first, logits for everything. + f = load_or_compute_logits(args, model, eval_data, valid_data) + + # now, compute the intrinsic scores. + results = {} + clfs = {} + # Initialize lists to store scores for each metric across all languages + u_scores, t_scores, punct_scores = [], [], [] + + for lang_code, dsets in tqdm(eval_data.items()): + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + print(f"Predicting {lang_code}...") + results[lang_code] = {} + clfs[lang_code] = {} + + for dataset_name, dataset in dsets["sentence"].items(): + sentences = dataset["data"] + + if "train_logits" in f[lang_code][dataset_name]: + feature_indices = None + clf = train_mixture( + [lang_code], + f[lang_code][dataset_name]["train_logits"][:], + f[lang_code][dataset_name]["train_labels"][:], + features=feature_indices, + ) + if clf[0] is not None: + print(clf) + print(np.argsort(clf[0].coef_[0])[:10], "...", np.argsort(clf[0].coef_[0])[-10:]) + print(np.where(np.argsort(clf[0].coef_[0]) == 0)[0]) + + score_t, score_punct, _ = evaluate_mixture( + lang_code, + f[lang_code][dataset_name]["test_logits"][:], + sentences, + *clf, + ) + + clfs[lang_code][dataset_name] = clf + + clf = list(copy.deepcopy(clf)) + clf[-1] = args.threshold + else: + score_t = score_punct = None + + score_u, _, _ = evaluate_mixture(lang_code, f[lang_code][dataset_name]["test_logits"][:], sentences, *clf) + + results[lang_code][dataset_name] = { + "u": score_u, + "t": score_t, + "punct": score_punct, + } + + # just for printing + score_t = score_t or 0.0 + score_punct = score_punct or 0.0 + + u_scores.append((score_u, lang_code)) + t_scores.append((score_t, lang_code)) + punct_scores.append((score_punct, lang_code)) + print(f"{lang_code} {dataset_name} {score_u:.3f} {score_t:.3f} {score_punct:.3f}") + + # Compute statistics for each metric across all languages + results_avg = { + "u": compute_statistics(u_scores), + "t": compute_statistics(t_scores), + "punct": compute_statistics(punct_scores), + "include_langs": args.include_langs, + } + + sio.dump( + clfs, + open( + Constants.CACHE_DIR / (f"{args.model_path.split('/')[0]}_L_b{args.block_size}+s{args.stride}.skops"), + "wb", + ), + ) + json.dump( + results, + open( + Constants.CACHE_DIR + / (f"{args.model_path.split('/')[0]}_L_b{args.block_size}+s{args.stride}_intrinsic_results_u{args.threshold}.json"), + "w", + ), + indent=4, + ) + + # Write results_avg to JSON + json.dump( + results_avg, + open(Constants.CACHE_DIR / (f"{args.model_path.split('/')[0]}_L_b{args.block_size}+s{args.stride}_u{args.threshold}_AVG.json"), "w"), + indent=4, + ) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 0d378ec9..242fda17 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -89,7 +89,6 @@ def extract( tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) tokens = tokenizer(batch_of_texts, return_offsets_mapping=True, verbose=False) # remove CLS and SEP tokens, they are added later anyhow - old_batch_of_texts = batch_of_texts batch_of_texts = [text[1:-1] for text in tokens["input_ids"]] offset_mapping = [offset[1:-1] for offset in tokens["offset_mapping"]] cls_token_id = tokenizer.cls_token_id diff --git a/wtpsplit/models.py b/wtpsplit/models.py index cfbd9eca..ab1c6850 100644 --- a/wtpsplit/models.py +++ b/wtpsplit/models.py @@ -1291,7 +1291,7 @@ def get_extended_attention_mask( text = "This is a test\n sentence \n\n" tokenizer = AutoTokenizer.from_pretrained(model_str) - tokens = tokenizer(text, return_tensors="pt", add_special_tokens=False, pad_to_multiple_of=8, padding=True) + tokens = tokenizer(text, return_tensors="pt", add_special_tokens=False, pad_to_multiple_of=512, padding=True) from tokenizers import AddedToken tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) @@ -1300,5 +1300,5 @@ def get_extended_attention_mask( print(tokens) # forward pass - lookahead = 1 + lookahead = 512 print(backbone(**tokens, lookahead=lookahead)) diff --git a/wtpsplit/summary_plot.py b/wtpsplit/summary_plot.py index fb2c624f..3a1d7813 100644 --- a/wtpsplit/summary_plot.py +++ b/wtpsplit/summary_plot.py @@ -3,13 +3,23 @@ import json FILES = [ - ".cache/xlmr-normal-v2_b128+s64_intrinsic_results_u0.01.json", - ".cache/xlmr-normal-v2_b256+s64_intrinsic_results_u0.01.json", - ".cache/xlmr-normal-v2_b512+s64_intrinsic_results_u0.01.json", - ".cache/xlmr-normal-p-v2_auxp0.3_n0.9_b256_s64_intrinsic_results_u0.01.json", - ".cache/xlm-normal-p-v2_auxp0.3_n0.9_b512_s64_intrinsic_results_u0.001.json", - ".cache/xlmr-normal-p-v2_n0.9_b512+s64_intrinsic_results_u0.01.json", - ".cache/xlmr-normal-p-v2-auxp0.1_b512+s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-p-v2_auxp0.3_n0.9_b64_s32_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-p-v2_auxp0.3_n0.9_b128_s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-p-v2_auxp0.3_n0.9_b256_s64_intrinsic_results_u0.01.json", + # ".cache/xlm-normal-p-v2_auxp0.3_n0.9_b512_s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-p-v2_n0.9_b256+s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-p-v2_n0.9_b512+s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-p-v2_n0.9_b128+s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-p-v2-auxp0.1_b256+s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-p-v2-auxp0.1_b512+s64_intrinsic_results_u0.01.json", + ".cache/xlmr-normal-p-v2_auxp0.2_b512+s64_intrinsic_results_u0.01.json", + ".cache/xlmr-normal-p-v2_auxp0.2_b512+s128_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-p-v2_auxp0.4_b256+s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-p-v2_auxp0.4_b512+s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-v2_b128+s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-v2_b256+s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-v2_b512+s64_intrinsic_results_u0.01.json", + # ".cache/xlmr-normal-9l-v2_b512+s64_intrinsic_results_u0.01.json", # "evaluation/evaluation_results/wtp-canine-s-3l-no-adapters_intrinsic_results.json", # "evaluation/evaluation_results/wtp-canine-s-3l_intrinsic_results.json", ] diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 2cf22938..b0e50c64 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -65,6 +65,7 @@ def evaluate_sentence( batch_size, use_pysbd=False, positive_index=None, + # do_lowercase=False, ): if positive_index is None: positive_index = Constants.NEWLINE_INDEX @@ -74,6 +75,8 @@ def evaluate_sentence( separator = Constants.SEPARATORS[lang_code] text = separator.join(sentences) + # if do_lowercase: + # text = text.lower() logits, offsets_mapping, tokenizer = extract( [text], diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 4349420b..a9139f17 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -551,6 +551,8 @@ def maybe_pad(text): def compute_metrics(trainer): metrics = {} avg_metrics = defaultdict(lambda: []) + # metrics_lower = {} + # avg_metrics_lower = defaultdict(lambda: []) model = trainer._wrap_model(trainer.model, training=False) @@ -574,10 +576,30 @@ def compute_metrics(trainer): avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) else: avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) + # for dataset_name, dataset in lang_data["sentence"].items(): + # score, _ = evaluate_sentence( + # lang_code, + # dataset["data"], + # model, + # stride=args.eval_stride, + # block_size=args.block_size, + # batch_size=training_args.per_device_eval_batch_size, + # do_lowercase=True, + # ) + # metrics_lower[f"lower_{lang_code}_{dataset_name}_pr_auc"] = score + # avg_metrics_lower[f"lower_average_{dataset_name}_pr_auc"].append(score) + # if lang_code in ["zh", "ja", "my", "km"]: + # avg_metrics_lower[f"lower_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + # else: + # avg_metrics_lower[f"lower_average_whitespace_{dataset_name}_pr_auc"].append(score) + for name, values in avg_metrics.items(): if len(values) > 1: metrics[name] = np.mean(values) + # for name, values in avg_metrics_lower.items(): + # if len(values) > 1: + # metrics_lower[name] = np.mean(values) return metrics From 914d5fc83dbd28aa28d7908da10fb3fba35d1970 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 14 Jan 2024 20:41:46 +0000 Subject: [PATCH 040/262] actually use lowercase eval --- wtpsplit/train/evaluate.py | 6 +++--- wtpsplit/train/train.py | 37 ++++++++++++++++--------------------- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index b0e50c64..d6664744 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -65,7 +65,7 @@ def evaluate_sentence( batch_size, use_pysbd=False, positive_index=None, - # do_lowercase=False, + do_lowercase=False, ): if positive_index is None: positive_index = Constants.NEWLINE_INDEX @@ -75,8 +75,8 @@ def evaluate_sentence( separator = Constants.SEPARATORS[lang_code] text = separator.join(sentences) - # if do_lowercase: - # text = text.lower() + if do_lowercase: + text = text.lower() logits, offsets_mapping, tokenizer = extract( [text], diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index a9139f17..14773c0b 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -551,8 +551,6 @@ def maybe_pad(text): def compute_metrics(trainer): metrics = {} avg_metrics = defaultdict(lambda: []) - # metrics_lower = {} - # avg_metrics_lower = defaultdict(lambda: []) model = trainer._wrap_model(trainer.model, training=False) @@ -576,30 +574,27 @@ def compute_metrics(trainer): avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) else: avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) - # for dataset_name, dataset in lang_data["sentence"].items(): - # score, _ = evaluate_sentence( - # lang_code, - # dataset["data"], - # model, - # stride=args.eval_stride, - # block_size=args.block_size, - # batch_size=training_args.per_device_eval_batch_size, - # do_lowercase=True, - # ) - # metrics_lower[f"lower_{lang_code}_{dataset_name}_pr_auc"] = score - # avg_metrics_lower[f"lower_average_{dataset_name}_pr_auc"].append(score) - # if lang_code in ["zh", "ja", "my", "km"]: - # avg_metrics_lower[f"lower_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - # else: - # avg_metrics_lower[f"lower_average_whitespace_{dataset_name}_pr_auc"].append(score) + for dataset_name, dataset in lang_data["sentence"].items(): + score, _ = evaluate_sentence( + lang_code, + dataset["data"], + model, + stride=args.eval_stride, + block_size=args.block_size, + batch_size=training_args.per_device_eval_batch_size, + do_lowercase=True, + ) + metrics[f"lower_{lang_code}_{dataset_name}_pr_auc"] = score + avg_metrics[f"lower_average_{dataset_name}_pr_auc"].append(score) + if lang_code in ["zh", "ja", "my", "km"]: + avg_metrics[f"lower_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + else: + avg_metrics[f"lower_average_whitespace_{dataset_name}_pr_auc"].append(score) for name, values in avg_metrics.items(): if len(values) > 1: metrics[name] = np.mean(values) - # for name, values in avg_metrics_lower.items(): - # if len(values) > 1: - # metrics_lower[name] = np.mean(values) return metrics From 08b64b8c417e5060815553170f66d6c7c0014ffb Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 20 Jan 2024 07:27:20 +0000 Subject: [PATCH 041/262] add timing benchmark --- wtpsplit/evaluation/intrinsic.py | 43 +++++++++++---- wtpsplit/evaluation/time_intrinsic.py | 77 +++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 10 deletions(-) create mode 100644 wtpsplit/evaluation/time_intrinsic.py diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 432496d3..89c3843d 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -2,6 +2,8 @@ import json from dataclasses import dataclass from typing import List +import os +import time import h5py import skops.io as sio @@ -41,6 +43,7 @@ class Args: batch_size: int = 32 include_langs: List[str] = None threshold: float = 0.01 + max_n_train_sentences: int = 10_000 def process_logits(text, model, lang_code, args): @@ -70,12 +73,15 @@ def process_logits(text, model, lang_code, args): return logits -def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_sentences=10_000): +def load_or_compute_logits(args, model, eval_data, valid_data=None): logits_path = Constants.CACHE_DIR / ( f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_logits_u{args.threshold}.h5" ) + + total_test_time = 0 # Initialize total test processing time # TODO: revert to "a" + start_time = time.time() with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in Constants.LANGINFO.index: if args.include_langs is not None and lang_code not in args.include_langs: @@ -110,7 +116,11 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ test_sentences = dataset["data"] test_text = Constants.SEPARATORS[lang_code].join(test_sentences) + start_time = time.time() # Start timing for test logits processing test_logits = process_logits(test_text, model, lang_code, args) + end_time = time.time() # End timing for test logits processing + total_test_time += end_time - start_time # Accumulate test processing time + test_labels = get_labels(lang_code, test_sentences, after_space=False) dset_group.create_dataset("test_logits", data=test_logits) @@ -118,7 +128,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ train_sentences = dataset["meta"].get("train_data") if train_sentences is not None and "train_logits" not in dset_group: - train_sentences = train_sentences[:max_n_train_sentences] + train_sentences = train_sentences[: args.max_n_train_sentences] train_text = Constants.SEPARATORS[lang_code].join(train_sentences) train_logits = process_logits(train_text, model, lang_code, args) @@ -127,7 +137,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_ dset_group.create_dataset("train_logits", data=train_logits) dset_group.create_dataset("train_labels", data=train_labels) - return h5py.File(logits_path, "r") + end_time = time.time() + return h5py.File(logits_path, "r"), total_test_time / 60 # to minutes def compute_statistics(values): @@ -144,13 +155,11 @@ def compute_statistics(values): "min": scores[min_index], "min_lang": langs[min_index], "max": scores[max_index], - "max_lang": langs[max_index] + "max_lang": langs[max_index], } -if __name__ == "__main__": - (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() - +def main(args): eval_data = torch.load(args.eval_data_path) if args.valid_text_path is not None: valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") @@ -161,7 +170,7 @@ def compute_statistics(values): model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) # first, logits for everything. - f = load_or_compute_logits(args, model, eval_data, valid_data) + f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data) # now, compute the intrinsic scores. results = {} @@ -243,7 +252,9 @@ def compute_statistics(values): results, open( Constants.CACHE_DIR - / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_intrinsic_results_u{args.threshold}.json"), + / ( + f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_intrinsic_results_u{args.threshold}.json" + ), "w", ), indent=4, @@ -252,6 +263,18 @@ def compute_statistics(values): # Write results_avg to JSON json.dump( results_avg, - open(Constants.CACHE_DIR / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_u{args.threshold}_AVG.json"), "w"), + open( + Constants.CACHE_DIR + / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_u{args.threshold}_AVG.json"), + "w", + ), indent=4, ) + os.remove(f.filename) + return results, results_avg, total_test_time + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + results, results_avg, total_test_time = main(args) + print(total_test_time) diff --git a/wtpsplit/evaluation/time_intrinsic.py b/wtpsplit/evaluation/time_intrinsic.py new file mode 100644 index 00000000..83f89021 --- /dev/null +++ b/wtpsplit/evaluation/time_intrinsic.py @@ -0,0 +1,77 @@ +import argparse +import sys +import pandas as pd +import math +from multiprocessing import Process, Queue +import intrinsic + + +def run_intrinsic_with_stride(stride, args, results_queue): + modified_args = argparse.Namespace(**vars(args)) + modified_args.stride = stride + results, results_avg, total_test_time = intrinsic.main(modified_args) # Capture results + results_queue.put((stride, results, results_avg, total_test_time)) + + +def benchmark_strides(low_stride, high_stride, args): + stride_values = [2**i for i in range(int(math.log2(low_stride)), int(math.log2(high_stride)) + 1)] + results_data = [] + + for stride in stride_values: + results_queue = Queue() + p = Process(target=run_intrinsic_with_stride, args=(stride, args, results_queue)) + p.start() + p.join() + + # intrinsic.main() returns a tuple of (results, results_avg, total_test_timee) + stride, stride_results, stride_results_avg, total_test_time = results_queue.get() + + results_data.append( + { + "stride": stride, + "block_size": args.block_size, + "batch_size": args.batch_size, + "execution_time": total_test_time, + "results": stride_results, + "results_avg": stride_results_avg, + "threshold": args.threshold, + "include_langs": args.include_langs, + "max_n_train_sentences": args.max_n_train_sentences, + } + ) + + return pd.DataFrame(results_data) + + +if __name__ == "__main__": + # Extract low_stride and high_stride values + stride_args = ["--low_stride", "--high_stride"] + strides = {} + + # Iterate over stride_args to extract and remove them from sys.argv + for stride_arg in stride_args: + if stride_arg in sys.argv: + index = sys.argv.index(stride_arg) + try: + strides[stride_arg] = int(sys.argv[index + 1]) + # Remove the stride argument and its value + del sys.argv[index : index + 2] + except (IndexError, ValueError): + raise ValueError(f"Invalid or missing value for {stride_arg}.") + + if "--low_stride" not in strides or "--high_stride" not in strides: + raise ValueError("Both --low_stride and --high_stride must be provided.") + + low_stride = strides["--low_stride"] + high_stride = strides["--high_stride"] + + # Remaining arguments are passed to intrinsic.Args + args = intrinsic.HfArgumentParser(intrinsic.Args).parse_args_into_dataclasses()[0] + + df_results = benchmark_strides(low_stride, high_stride, args) + print(df_results) + # Optionally save df_results to a file + # to csv + df_results.to_csv( + f"timing_results_{args.model_path.replace('/','__')}_batch{args.batch_size}_b{args.block_size}+s{args.stride}_u{args.threshold}_AVG.csv" + ) From 42464e10c26c4b95057912947677c46fefdf3381 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 20 Jan 2024 10:48:17 +0000 Subject: [PATCH 042/262] refactor Case Corruption --- wtpsplit/models.py | 3 +- wtpsplit/summary_plot.py | 116 +++++++++++++++++++++++++++++---------- wtpsplit/utils.py | 114 +++++++++++++++----------------------- 3 files changed, 135 insertions(+), 98 deletions(-) diff --git a/wtpsplit/models.py b/wtpsplit/models.py index ab1c6850..118427cf 100644 --- a/wtpsplit/models.py +++ b/wtpsplit/models.py @@ -840,6 +840,7 @@ def forward( output_hidden_states: Optional[bool] = None, hashed_ids: Optional[torch.Tensor] = None, return_dict: Optional[bool] = None, + lookahead: Optional[int] = None, ) -> Union[Tuple, TokenClassifierOutput]: r""" labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*): @@ -1288,7 +1289,7 @@ def get_extended_attention_mask( print(summary(backbone, depth=4)) # some sample input - text = "This is a test\n sentence \n\n" + text = "A sentence.\n And" tokenizer = AutoTokenizer.from_pretrained(model_str) tokens = tokenizer(text, return_tensors="pt", add_special_tokens=False, pad_to_multiple_of=512, padding=True) diff --git a/wtpsplit/summary_plot.py b/wtpsplit/summary_plot.py index 3a1d7813..fc0f841c 100644 --- a/wtpsplit/summary_plot.py +++ b/wtpsplit/summary_plot.py @@ -3,25 +3,82 @@ import json FILES = [ - # ".cache/xlmr-normal-p-v2_auxp0.3_n0.9_b64_s32_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-p-v2_auxp0.3_n0.9_b128_s64_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-p-v2_auxp0.3_n0.9_b256_s64_intrinsic_results_u0.01.json", - # ".cache/xlm-normal-p-v2_auxp0.3_n0.9_b512_s64_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-p-v2_n0.9_b256+s64_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-p-v2_n0.9_b512+s64_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-p-v2_n0.9_b128+s64_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-p-v2-auxp0.1_b256+s64_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-p-v2-auxp0.1_b512+s64_intrinsic_results_u0.01.json", - ".cache/xlmr-normal-p-v2_auxp0.2_b512+s64_intrinsic_results_u0.01.json", - ".cache/xlmr-normal-p-v2_auxp0.2_b512+s128_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-p-v2_auxp0.4_b256+s64_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-p-v2_auxp0.4_b512+s64_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-v2_b128+s64_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-v2_b256+s64_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-v2_b512+s64_intrinsic_results_u0.01.json", - # ".cache/xlmr-normal-9l-v2_b512+s64_intrinsic_results_u0.01.json", + # "xlm-normal-p-v2_auxp0.3_n0.9_b512_s64_intrinsic_results_u0.01.json", + # "xlmr-normal-9l-v2_L_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.0_b512_s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-aux0.0001_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-aux0.1_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-auxp0.1_b128+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-auxp0.1_b256+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-auxp0.1_b32+s16_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.1_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-auxp0.1_b64+s32_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-bs256_b8+s4_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-bs256_b16+s8_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-bs256_b32+s16_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-bs256_b64+s32_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-bs256_b128+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-bs256_b256+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2-bs256_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b8+s4_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b16+s8_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b32+s16_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b64+s32_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b128+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b256+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_b8+s4_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_b16+s8_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_b32+s16_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_b64+s32_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_b128+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_b256+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_b512+s128_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_bs256_b8+s4_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_bs256_b16+6_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_bs256_b32+16_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_bs256_b64+32_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_bs256_b128+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_bs256_b256+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.2_bs256_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.3_n0.9_b128_s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.3_n0.9_b16_s8_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.3_n0.9_b256_s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.3_n0.9_b32+s16_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.3_n0.9_b64_s32_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.3_n0.9_b8_s4_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.4_b128+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.4_b256+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.4_b32+s16_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.4_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_auxp0.4_b64+s32_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.3_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.5_b256+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.7_b16+s8_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.7_b32+s16_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.7_b64+s32_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.7_b128+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.7_b256+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.7_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.9_b8+s4_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.9_b16+s8_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.9_b32+s16_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.9_b64+s32_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.9_b128+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.9_b256+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-p-v2_n0.9_b512+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-v2_b128+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-v2_b256+s64_intrinsic_results_u0.01.json", + # "xlmr-normal-v2_b512+s64_intrinsic_results_u0.01.json", + "xlmr-normal-noaux_b16+s8_intrinsic_results_u0.01.json", + "xlmr-normal-noaux_b32+s16_intrinsic_results_u0.01.json", + "xlmr-normal-noaux_b64+s32_intrinsic_results_u0.01.json", + "xlmr-normal-noaux_b128+s64_intrinsic_results_u0.01.json", + "xlmr-normal-noaux_b256+s64_intrinsic_results_u0.01.json", + "xlmr-normal-noaux_b512+s64_intrinsic_results_u0.01.json", # "evaluation/evaluation_results/wtp-canine-s-3l-no-adapters_intrinsic_results.json", - # "evaluation/evaluation_results/wtp-canine-s-3l_intrinsic_results.json", + # "evaluation/evaluation_results/wtp-canine-s-3l_intrinsic_results.json" ] NAME = "test" @@ -57,7 +114,9 @@ def plot_violin_from_json(files, name): colors[metric][file] = "rgba" + str(darken_color(base_color, color_darkening_factor**j)) for file in files: - with open(file, "r") as f: + file_path = ".cache/" + file if not file.startswith("evaluation") else file + with open(file_path, "r") as f: + print(file_path) content = json.load(f) for lang, scores in content.items(): for dataset, values in scores.items(): @@ -78,21 +137,22 @@ def plot_violin_from_json(files, name): metric_df = df[df["metric"] == metric] for file in files: file_name = file.split("/")[-1] + show_name = file_name.replace("xlmr-normal-", "").replace("_intrinsic_results_u0.01.json", "") file_df = metric_df[metric_df["file"] == file_name] if not file_df.empty: fig.add_trace( go.Violin( y=file_df["score"], x=file_df["x"], - name=file_name if metric == "u" else "", # Only show legend for 'u' to avoid duplicates - legendgroup=file_name, + name=show_name if metric == "u" else "", # Only show legend for 'u' to avoid duplicates + legendgroup=show_name, line_color=colors[metric][file], box_visible=True, meanline_visible=True, width=violin_width, points="all", - hovertext=file_df["lang"] + " " + file_df["dataset"], - hovertemplate=file_name + "
%{hovertext}", + hovertext=file_df["lang"] + " " + file_df["dataset"] + "
" + file_df["score"].astype(str), + hovertemplate=show_name + "
%{hovertext}", # hoveron="points+violins+kde" ) ) @@ -101,7 +161,7 @@ def plot_violin_from_json(files, name): # Calculate the center positions for each metric group center_positions = [sum(values.values()) / len(values) for key, values in x_positions.items()] fig.update_layout( - title="Violin Plots of Scores by Metric", + title=name, xaxis=dict(title="Metric", tickvals=center_positions, ticktext=["u", "t", "punct"]), yaxis_title="Scores", violingap=0, @@ -121,7 +181,7 @@ def plot_violin_from_json(files, name): # Update axes lines fig.update_xaxes(showline=True, linewidth=1, linecolor="gray") - fig.update_yaxes(showline=True, linewidth=1, linecolor="gray") + fig.update_yaxes(showline=True, linewidth=1, linecolor="gray", dtick=0.1, range=[0.01, 1.09]) # Simplify and move legend to the top fig.update_layout(legend=dict(orientation="h", yanchor="bottom", y=1.02, xanchor="right", x=1)) @@ -134,9 +194,9 @@ def plot_violin_from_json(files, name): print(f"Plot saved as {html_filename}") # Save the figure as PNG - png_filename = f"{name}.png" - fig.write_image(png_filename) - print(f"Plot saved as {png_filename}") + # png_filename = f"{name}.png" + # fig.write_image(png_filename) + # print(f"Plot saved as {png_filename}") plot_violin_from_json(FILES, NAME) diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 6445bc07..6ab59906 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -9,6 +9,7 @@ import numpy as np import pandas as pd +from transformers import AutoTokenizer # same as in CANINE PRIMES = [31, 43, 59, 61, 73, 97, 103, 113, 137, 149, 157, 173, 181, 193, 211, 223] @@ -78,7 +79,8 @@ class LabelArgs: custom_punctuation_file: str = None retain_first_consecutive_punctuation: bool = True non_whitespace_remove_spaces: bool = True - case_corruption_prob: float = 0.0 + case_corruption_prob_after_newline: float = 0.0 + case_corruption_prob_after_punct: float = 0.0 def __post_init__(self): if self.custom_punctuation_file: @@ -257,39 +259,8 @@ def corrupt( del input_ids[i + 1] del labels[i + 1] del block_ids[i + 1] - if random.random() < label_args.case_corruption_prob and i + 1 < len(input_ids): - if not tokenizer: - raise NotImplementedError() - # corrupt case - token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) - insert_ = False - if token.startswith("▁"): - insert_ = True - token = token[1:] - if token.istitle(): - token = token.lower() - # re-tokenize - # token_ids = tokenizer.convert_tokens_to_ids(token if not insert_ else "▁" + token) - token_ids = tokenizer(token if not insert_ else "▁" + token, add_special_tokens=False)["input_ids"] - if len(token_ids) == 0 or input_ids[i + 1] == tokenizer.unk_token_id: - # UNK or whitespace token, remove it - del input_ids[i + 1] - del labels[i + 1] - del block_ids[i + 1] - else: - if token_ids[0] == tokenizer.convert_tokens_to_ids("▁"): - token_ids = token_ids[1:] - elif len(token_ids) > 1: - # replace the token with the remaining token - input_ids[i + 1] = token_ids[0] - for token_id in token_ids[1:]: - input_ids.insert(i + 2, token_id) - labels.insert(i + 2, 0) - block_ids.insert(i + 2, block_ids[i + 1]) - elif len(token_ids) == 1: - input_ids[i + 1] = token_ids[0] - else: - print(token, token_ids, input_ids[i + 1], tokenizer.decode(input_ids[i + 1])) + if random.random() < label_args.case_corruption_prob_after_newline and i + 1 < len(input_ids): + input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) elif label_args.use_auxiliary and labels[i] > Constants.AUX_OFFSET: # auxiliary @@ -314,39 +285,8 @@ def corrupt( del labels[i + 1] del block_ids[i + 1] removed_aux_char = True - if random.random() < label_args.case_corruption_prob and removed_aux_char and i + 1 < len(input_ids): - if not tokenizer: - raise NotImplementedError() - # corrupt case - token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) - insert_ = False - if token.startswith("▁"): - insert_ = True - token = token[1:] - if token.istitle(): - token = token.lower() - # re-tokenize - # token_ids = tokenizer.convert_tokens_to_ids(token if not insert_ else "▁" + token) - token_ids = tokenizer(token if not insert_ else "▁" + token, add_special_tokens=False)["input_ids"] - if len(token_ids) == 0 or input_ids[i + 1] == tokenizer.unk_token_id: - # UNK or whitespace token, remove it - del input_ids[i + 1] - del labels[i + 1] - del block_ids[i + 1] - else: - if token_ids[0] == tokenizer.convert_tokens_to_ids("▁"): - token_ids = token_ids[1:] - elif len(token_ids) > 1: - # replace the token with the remaining token - input_ids[i + 1] = token_ids[0] - for token_id in token_ids[1:]: - input_ids.insert(i + 2, token_id) - labels.insert(i + 2, 0) - block_ids.insert(i + 2, block_ids[i + 1]) - elif len(token_ids) == 1: - input_ids[i + 1] = token_ids[0] - else: - print(token, token_ids, input_ids[i + 1], tokenizer.decode(input_ids[i + 1])) + if random.random() < label_args.case_corruption_prob_after_punct and removed_aux_char and i + 1 < len(input_ids): + input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) try: i = i + 1 + next(index for index, label in enumerate(labels[i + 1 :]) if label != 0) @@ -355,6 +295,40 @@ def corrupt( return input_ids, block_ids, labels +def _corrupt_case(tokenizer: AutoTokenizer, input_ids: List[int], labels: List[int], block_ids: List[int], i: int): + if not tokenizer: + raise NotImplementedError() + + token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) + insert_ = token.startswith("▁") + if insert_: + token = token[1:] + + do_exchange = token.istitle() + if do_exchange: + token = token.lower() + + # Re-tokenize + token_ids = tokenizer.encode(token if not insert_ else "▁" + token, add_special_tokens=False) + if len(token_ids) == 0 or input_ids[i + 1] == tokenizer.unk_token_id: + # UNK or whitespace token, remove it + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + else: + if token_ids[0] == tokenizer.convert_tokens_to_ids("▁"): + token_ids = token_ids[1:] + elif len(token_ids) > 1: + # Replace the token with the remaining token + input_ids[i + 1] = token_ids[0] + for token_id in token_ids[1:]: + input_ids.insert(i + 2, token_id) + labels.insert(i + 2, 0) + block_ids.insert(i + 2, block_ids[i + 1]) + elif len(token_ids) == 1: + input_ids[i + 1] = token_ids[0] + + return input_ids, labels, block_ids def indices_to_sentences(text, indices, strip_whitespace=False): sentences = [] @@ -425,12 +399,11 @@ def reconstruct_sentences(text, partial_sentences): if __name__ == "__main__": # test corrupt function - from transformers import AutoTokenizer from tokenizers import AddedToken tokenizer = AutoTokenizer.from_pretrained("xlm-roberta-base") tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) - text = "That's right, Five!\n!\n!!!\n!\n Always lay the blame on others!" + text = "That's right, Five!\n!\n!!!\n!\n Always lay the!Blame on others!" input_ids = tokenizer(text)["input_ids"] block_ids = [0] * len(input_ids) label_args = LabelArgs( @@ -438,6 +411,8 @@ def reconstruct_sentences(text, partial_sentences): use_auxiliary=True, auxiliary_remove_prob=1.0, newline_whitespace_prob=1.0, + case_corruption_prob_after_punct=1.0, + case_corruption_prob_after_newline=1.0, ) label_dict = get_subword_label_dict(label_args, tokenizer) @@ -452,6 +427,7 @@ def reconstruct_sentences(text, partial_sentences): print("newline ids in output text:") print(np.where(np.array(input_ids) == tokenizer.all_special_ids[-1])) print(tokenizer.decode(input_ids)) + print(tokenizer.decode(input_ids)) # ords = [ord(c) for c in text] # block_ords = [0] * len(ords) From 6231a9967c4584de5bc3a73e666251a0721a121f Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 20 Jan 2024 10:59:20 +0000 Subject: [PATCH 043/262] eval ASR-style & pairwise --- wtpsplit/extract.py | 5 +- wtpsplit/train/evaluate.py | 99 ++++++++++++++++++++++++++++++++++++-- wtpsplit/train/train.py | 55 ++++++++++++++++----- 3 files changed, 140 insertions(+), 19 deletions(-) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 242fda17..262c1de9 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -74,6 +74,7 @@ def extract( lang_code=None, pad_last_batch=False, verbose=False, + pairwise: bool = False, ): """ Computes logits for the given batch of texts by: @@ -97,6 +98,9 @@ def extract( else: pad_token_id = 0 use_subwords = False + if pairwise: + # we need at least 2 passes to not get NaNs using our logic + stride = len(batch_of_texts[0]) // 2 text_lengths = [len(text) for text in batch_of_texts] # reduce block size if possible @@ -223,7 +227,6 @@ def extract( )["logits"] if use_subwords: logits = logits[:, 1:-1, :] # remove CLS and SEP tokens - logger.debug(np.max(logits[0, :, 0])) for i in range(start, end): original_idx, start_char_idx, end_char_idx = locs[i] diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index d6664744..2657ae1c 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -1,4 +1,3 @@ - import numpy as np import pysbd import sklearn.metrics @@ -7,6 +6,7 @@ from wtpsplit.extract import extract, PyTorchWrapper from wtpsplit.utils import Constants from wtpsplit.evaluation import token_to_char_probs +import random logger = logging.getLogger(__name__) @@ -54,8 +54,6 @@ def get_metrics(labels, preds): return metrics, info - - def evaluate_sentence( lang_code, sentences, @@ -66,6 +64,7 @@ def evaluate_sentence( use_pysbd=False, positive_index=None, do_lowercase=False, + do_remove_punct=False, ): if positive_index is None: positive_index = Constants.NEWLINE_INDEX @@ -74,9 +73,12 @@ def evaluate_sentence( sentences = [sentence.lstrip("-").strip() for sentence in sentences] separator = Constants.SEPARATORS[lang_code] - text = separator.join(sentences) if do_lowercase: - text = text.lower() + sentences = [sentence.lower() for sentence in sentences] + if do_remove_punct: + for punct in Constants.PUNCTUATION_CHARS: + sentences = [sentence.replace(punct, "") for sentence in sentences] + text = separator.join(sentences) logits, offsets_mapping, tokenizer = extract( [text], @@ -113,3 +115,90 @@ def evaluate_sentence( info["newline_probs_pysbd"] = newline_probs_pysbd return metrics["pr_auc"], info + + +def evaluate_sentence_pairwise( + lang_code, + sentences, + model, + stride, + block_size, + batch_size, + pair_sample_pct: float = 0.01, + max_pairs: int = 10, + use_pysbd=False, + positive_index=None, + do_lowercase=False, + do_remove_punct=False, +): + if positive_index is None: + positive_index = Constants.NEWLINE_INDEX + + # Preprocess sentences + sentences = [sentence.lstrip("-").strip() for sentence in sentences] + + separator = Constants.SEPARATORS[lang_code] + metrics_list = [] + + model = PyTorchWrapper(model.backbone) + model.model = model.model.to("cpu") + + # Generate all possible sentence pairs + all_pairs = list(zip(sentences[:-1], sentences[1:])) + + # Randomly sample N% of the sentence pairs + sample_size = ( + min(int(len(all_pairs) * pair_sample_pct) + 1, max_pairs) + if max_pairs is not None + else int(len(all_pairs) * pair_sample_pct) + 1 + ) + # set seed so we get the same pairs every time + random.seed(42) + sampled_pairs = random.sample(all_pairs, sample_size) + + separator = Constants.SEPARATORS[lang_code] + metrics_list = [] + + for sentence1, sentence2 in sampled_pairs: + if do_lowercase: + sentence1 = sentence1.lower() + sentence2 = sentence2.lower() + if do_remove_punct: + for punct in Constants.PUNCTUATION_CHARS: + sentence1 = sentence1.replace(punct, "") + sentence2 = sentence2.replace(punct, "") + + pair_text = sentence1 + separator + sentence2 + + logits, offsets_mapping, tokenizer = extract( + [pair_text], + model, + lang_code=lang_code, + stride=stride, + block_size=block_size, + batch_size=batch_size, + pairwise=True, + ) + logits = logits[0] + if offsets_mapping is not None: + offsets_mapping = offsets_mapping[0] + + # Calculate newline labels and probabilities + newline_labels = np.zeros(len(pair_text)) + true_end_index = len(sentence1) + newline_labels[true_end_index] = 1 + + if "xlm" in model.config.model_type: + tokens = tokenizer.tokenize(pair_text, verbose=False) + char_probs = token_to_char_probs(pair_text, tokens, logits, tokenizer, offsets_mapping) + else: + char_probs = logits + newline_probs = char_probs[:, positive_index] + + # Get metrics for the pair + pair_metrics, _ = get_metrics(newline_labels, newline_probs) + metrics_list.append(pair_metrics["pr_auc"]) + + # Compute and return the average metric + average_metric = np.mean(metrics_list) + return average_metric, _ diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 14773c0b..ccd380b3 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -9,6 +9,7 @@ from functools import partial from glob import glob from typing import List +import shutil import datasets import numpy as np @@ -30,7 +31,7 @@ SubwordXLMConfig, SubwordXLMForTokenClassification, ) -from wtpsplit.train.evaluate import evaluate_sentence +from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise from wtpsplit.train.trainer import Trainer from wtpsplit.utils import Constants, LabelArgs, corrupt, get_label_dict, get_subword_label_dict from wtpsplit.train.utils import Model, cleanup_cache_files @@ -203,6 +204,8 @@ def main(): setup_logging(training_args) set_seed(training_args.seed) + training_args.hub_strategy = "end" + training_args.save_total_limit = 1 num_labels = Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0) if args.use_subwords: @@ -528,7 +531,7 @@ def maybe_pad(text): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="train", + split="valid", ) logger.warning(f"Train dataset has {len(train_dataset)} examples.") @@ -583,13 +586,30 @@ def compute_metrics(trainer): block_size=args.block_size, batch_size=training_args.per_device_eval_batch_size, do_lowercase=True, + do_remove_punct=True, ) - metrics[f"lower_{lang_code}_{dataset_name}_pr_auc"] = score - avg_metrics[f"lower_average_{dataset_name}_pr_auc"].append(score) + metrics[f"lower_rmp_{lang_code}_{dataset_name}_pr_auc"] = score + avg_metrics[f"lower_rmp_average_{dataset_name}_pr_auc"].append(score) if lang_code in ["zh", "ja", "my", "km"]: - avg_metrics[f"lower_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"lower_rmp_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) else: - avg_metrics[f"lower_average_whitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"lower_rmp_average_whitespace_{dataset_name}_pr_auc"].append(score) + for dataset_name, dataset in lang_data["sentence"].items(): + score, _ = evaluate_sentence_pairwise( + lang_code, + dataset["data"], + model, + stride=args.eval_stride, + block_size=args.block_size, + batch_size=training_args.per_device_eval_batch_size, + ) + metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score + avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) + if lang_code in ["zh", "ja", "my", "km"]: + avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + else: + avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) + for name, values in avg_metrics.items(): @@ -617,13 +637,13 @@ def compute_metrics(trainer): training_args.adapter_lr_multiplier = args.adapter_lr_multiplier # give .map in multiprocessing enough of time to finish, to be safe - time.sleep(10) - if training_args.local_rank == 0: - # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() - # because that would remove the cache files of the other dataset! - cleanup_cache_files([train_dataset, valid_dataset]) - logger.warning("Cleaned up cache files.") - time.sleep(10) + # time.sleep(10) + # if training_args.local_rank == 0: + # # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() + # # because that would remove the cache files of the other dataset! + # cleanup_cache_files([train_dataset, valid_dataset]) + # logger.warning("Cleaned up cache files.") + # time.sleep(10) trainer = Trainer( model, @@ -641,6 +661,15 @@ def compute_metrics(trainer): ) trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) + trainer.save_model() + trainer.save_state() + # Pattern for checkpoint directories + checkpoint_pattern = os.path.join(training_args.output_dir, "checkpoint-*") + + # Use glob.glob to find all directories matching the pattern + for checkpoint_dir in glob.glob(checkpoint_pattern): + if os.path.isdir(checkpoint_dir): + shutil.rmtree(checkpoint_dir) def _mp_fn(index): From a9bd73c464bfe6c5b9c60aff8d88f38248d3cf89 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 20 Jan 2024 11:04:23 +0000 Subject: [PATCH 044/262] fix split --- wtpsplit/train/train.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index ccd380b3..e888f25e 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -531,7 +531,7 @@ def maybe_pad(text): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="valid", + split="train", ) logger.warning(f"Train dataset has {len(train_dataset)} examples.") @@ -637,13 +637,13 @@ def compute_metrics(trainer): training_args.adapter_lr_multiplier = args.adapter_lr_multiplier # give .map in multiprocessing enough of time to finish, to be safe - # time.sleep(10) - # if training_args.local_rank == 0: - # # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() - # # because that would remove the cache files of the other dataset! - # cleanup_cache_files([train_dataset, valid_dataset]) - # logger.warning("Cleaned up cache files.") - # time.sleep(10) + time.sleep(10) + if training_args.local_rank == 0: + # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() + # because that would remove the cache files of the other dataset! + cleanup_cache_files([train_dataset, valid_dataset]) + logger.warning("Cleaned up cache files.") + time.sleep(10) trainer = Trainer( model, From bd02a88648670454cb617eabec6c860f6cf5e57a Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 20 Jan 2024 14:56:05 +0000 Subject: [PATCH 045/262] fix stride --- wtpsplit/extract.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 262c1de9..cf7907d2 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -100,7 +100,9 @@ def extract( use_subwords = False if pairwise: # we need at least 2 passes to not get NaNs using our logic - stride = len(batch_of_texts[0]) // 2 + stride = len(batch_of_texts[0]) // 2 - 1 + if stride == 0: + stride = 1 text_lengths = [len(text) for text in batch_of_texts] # reduce block size if possible From 9678605f80bb859935d6423bd3e7ee74ca1633fa Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 20 Jan 2024 20:58:17 +0000 Subject: [PATCH 046/262] remove short seqs in pairwise eval --- wtpsplit/evaluation/intrinsic.py | 2 +- wtpsplit/evaluation/intrinsic_lowercase.py | 2 +- wtpsplit/extract.py | 11 +++++++---- wtpsplit/train/evaluate.py | 6 ++++-- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 89c3843d..e5971b1d 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -48,7 +48,7 @@ class Args: def process_logits(text, model, lang_code, args): # Extract necessary data - logits, offsets_mapping, tokenizer = extract( + logits, offsets_mapping, tokenizer, _ = extract( [text], model, lang_code=lang_code, diff --git a/wtpsplit/evaluation/intrinsic_lowercase.py b/wtpsplit/evaluation/intrinsic_lowercase.py index e90ecd0a..b3124cca 100644 --- a/wtpsplit/evaluation/intrinsic_lowercase.py +++ b/wtpsplit/evaluation/intrinsic_lowercase.py @@ -46,7 +46,7 @@ class Args: def process_logits(text, model, lang_code, args): # Extract necessary data text = text.lower() - logits, offsets_mapping, tokenizer = extract( + logits, offsets_mapping, tokenizer, _ = extract( [text], model, lang_code=lang_code, diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index cf7907d2..bf8b9706 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -100,9 +100,12 @@ def extract( use_subwords = False if pairwise: # we need at least 2 passes to not get NaNs using our logic - stride = len(batch_of_texts[0]) // 2 - 1 - if stride == 0: - stride = 1 + stride = (len(batch_of_texts[0]) + 1) // 2 + if len(batch_of_texts[0]) < 4: + # some sentences are only 2-3 tokens long + # not compatible with our logic and not sensible anyhow --> skip. + logger.warning(f"Skipping short sentence pair: {batch_of_texts[0]}, {tokenizer.decode(batch_of_texts[0])}") + return None, None, None, True text_lengths = [len(text) for text in batch_of_texts] # reduce block size if possible @@ -238,4 +241,4 @@ def extract( # so far, logits are summed, so we average them here all_logits = [(logits / counts[:, None]).astype(np.float16) for logits, counts in zip(all_logits, all_counts)] - return all_logits, offset_mapping if use_subwords else None, tokenizer if use_subwords else None + return all_logits, offset_mapping if use_subwords else None, tokenizer if use_subwords else None, False diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 2657ae1c..1cd5582e 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -80,7 +80,7 @@ def evaluate_sentence( sentences = [sentence.replace(punct, "") for sentence in sentences] text = separator.join(sentences) - logits, offsets_mapping, tokenizer = extract( + logits, offsets_mapping, tokenizer, _ = extract( [text], PyTorchWrapper(model.backbone), lang_code=lang_code, @@ -170,7 +170,7 @@ def evaluate_sentence_pairwise( pair_text = sentence1 + separator + sentence2 - logits, offsets_mapping, tokenizer = extract( + logits, offsets_mapping, tokenizer, skip = extract( [pair_text], model, lang_code=lang_code, @@ -179,6 +179,8 @@ def evaluate_sentence_pairwise( batch_size=batch_size, pairwise=True, ) + if skip: + continue logits = logits[0] if offsets_mapping is not None: offsets_mapping = offsets_mapping[0] From f83af3ae617e3cb8723adfa5fb56af880c557d41 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 20 Jan 2024 21:30:12 +0000 Subject: [PATCH 047/262] return model back to tpu --- wtpsplit/train/evaluate.py | 11 +++++++---- wtpsplit/train/train.py | 17 +++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 1cd5582e..79948248 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -7,6 +7,7 @@ from wtpsplit.utils import Constants from wtpsplit.evaluation import token_to_char_probs import random +import copy logger = logging.getLogger(__name__) @@ -140,8 +141,10 @@ def evaluate_sentence_pairwise( separator = Constants.SEPARATORS[lang_code] metrics_list = [] - model = PyTorchWrapper(model.backbone) - model.model = model.model.to("cpu") + # Make a copy of the model for CPU operations + cpu_model = copy.deepcopy(model) + cpu_model = PyTorchWrapper(cpu_model.backbone) + cpu_model.model = cpu_model.model.to("cpu") # Generate all possible sentence pairs all_pairs = list(zip(sentences[:-1], sentences[1:])) @@ -172,7 +175,7 @@ def evaluate_sentence_pairwise( logits, offsets_mapping, tokenizer, skip = extract( [pair_text], - model, + cpu_model, lang_code=lang_code, stride=stride, block_size=block_size, @@ -190,7 +193,7 @@ def evaluate_sentence_pairwise( true_end_index = len(sentence1) newline_labels[true_end_index] = 1 - if "xlm" in model.config.model_type: + if "xlm" in cpu_model.config.model_type: tokens = tokenizer.tokenize(pair_text, verbose=False) char_probs = token_to_char_probs(pair_text, tokens, logits, tokenizer, offsets_mapping) else: diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index e888f25e..68c2578c 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -140,7 +140,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): min_length=args.block_size, tokenizer=tokenizer if args.use_subwords else None, ) - + actual_block_size = args.block_size - 2 if args.use_subwords else args.block_size if len(input_ids) > args.block_size: @@ -152,15 +152,14 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): # print(padding, lang) input_ids += [tokenizer.pad_token_id] * padding if tokenizer else [0] * padding labels += [0] * padding - + if tokenizer: - input_ids = [tokenizer.cls_token_id] + input_ids[: actual_block_size] + [tokenizer.sep_token_id] + input_ids = [tokenizer.cls_token_id] + input_ids[:actual_block_size] + [tokenizer.sep_token_id] # labels for CLS and SEP tokens are 0 (none) - labels = [0] + labels[: actual_block_size] + [0] + labels = [0] + labels[:actual_block_size] + [0] else: - input_ids = input_ids[: actual_block_size] - labels = labels[: actual_block_size] - + input_ids = input_ids[:actual_block_size] + labels = labels[:actual_block_size] input_ids = torch.tensor(input_ids, dtype=torch.long) labels = torch.tensor(labels, dtype=torch.long) @@ -609,8 +608,6 @@ def compute_metrics(trainer): avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) else: avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) - - for name, values in avg_metrics.items(): if len(values) > 1: @@ -661,7 +658,7 @@ def compute_metrics(trainer): ) trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) - trainer.save_model() + trainer.save_model() trainer.save_state() # Pattern for checkpoint directories checkpoint_pattern = os.path.join(training_args.output_dir, "checkpoint-*") From 9f41a85fba323c64fad279b6f470ffa3bfe64908 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 21 Jan 2024 14:28:26 +0000 Subject: [PATCH 048/262] use correct labels in pairwise eval --- wtpsplit/train/evaluate.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 79948248..e3885975 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -142,9 +142,7 @@ def evaluate_sentence_pairwise( metrics_list = [] # Make a copy of the model for CPU operations - cpu_model = copy.deepcopy(model) - cpu_model = PyTorchWrapper(cpu_model.backbone) - cpu_model.model = cpu_model.model.to("cpu") + model = PyTorchWrapper(model.backbone) # Generate all possible sentence pairs all_pairs = list(zip(sentences[:-1], sentences[1:])) @@ -175,7 +173,7 @@ def evaluate_sentence_pairwise( logits, offsets_mapping, tokenizer, skip = extract( [pair_text], - cpu_model, + model, lang_code=lang_code, stride=stride, block_size=block_size, @@ -189,11 +187,11 @@ def evaluate_sentence_pairwise( offsets_mapping = offsets_mapping[0] # Calculate newline labels and probabilities + true_end_indices = np.cumsum(np.array([len(s) for s in [sentence1, sentence2]])) + np.arange(2) * len(separator) newline_labels = np.zeros(len(pair_text)) - true_end_index = len(sentence1) - newline_labels[true_end_index] = 1 + newline_labels[true_end_indices - 1] = 1 - if "xlm" in cpu_model.config.model_type: + if "xlm" in model.config.model_type: tokens = tokenizer.tokenize(pair_text, verbose=False) char_probs = token_to_char_probs(pair_text, tokens, logits, tokenizer, offsets_mapping) else: From fd5aa86d050fcca7264cd4578655f27fd1c2882a Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 2 Feb 2024 19:38:20 +0000 Subject: [PATCH 049/262] add some lyrics stuff --- data/lyrics_langs.csv | 1 + lyrics.ipynb | 134872 ++++++++++++++++++ scripts/lyrics_eval_all.sh | 39 + tpu_START.sh | 9 + wtpsplit/evaluation/intrinsic.py | 29 +- wtpsplit/evaluation/intrinsic_lowercase.py | 258 - wtpsplit/utils.py | 14 +- 7 files changed, 134952 insertions(+), 270 deletions(-) create mode 100644 data/lyrics_langs.csv create mode 100644 lyrics.ipynb create mode 100755 scripts/lyrics_eval_all.sh create mode 100755 tpu_START.sh delete mode 100644 wtpsplit/evaluation/intrinsic_lowercase.py diff --git a/data/lyrics_langs.csv b/data/lyrics_langs.csv new file mode 100644 index 00000000..59e0ae22 --- /dev/null +++ b/data/lyrics_langs.csv @@ -0,0 +1 @@ +en,hr,es,it,yo,sn,fr,so,la,tl,nb,nl,de,eu,cy,ko,ja,sw,vi,st,sv,ts,pl,et,pt,ga,fi,zu,ca,mi,eo,tn,da,tr,id,is,zh,nn,xh,sl,sq \ No newline at end of file diff --git a/lyrics.ipynb b/lyrics.ipynb new file mode 100644 index 00000000..218985e5 --- /dev/null +++ b/lyrics.ipynb @@ -0,0 +1,134872 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from wtpsplit.utils import Constants" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# set print options\n", + "pd.set_option(\"display.max_columns\", 500)\n", + "pd.set_option(\"display.width\", 10000)\n", + "pd.set_option(\"max_colwidth\", 300)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "lyrics_distinct_all = pd.read_json(\"data/lyrics_distinct_markus_frohmann.json.bz2\", lines=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1279204, 11)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lyrics_distinct_all.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
_idlyricslyrics_languagelyrics_sanitizedlyrics_sanitized_langtrackartisttags_lfmmicro_genres_lfmprimary_tag_geniusall_tags_genius
04500284!\\nA A\\nTriple A!\\n(Triple A?)\\nA! A! A!\\nU can B 1\\nU can B 1 2\\n2 B or not 2 B\\nC?\\nABC R E Z\\nABC R fun\\nA!\\nAlphabetical order\\n\\nHere we go...\\nUFO on LSD\\nR2D2, C3P0, how 'bout ET?\\nABC, BBC, CBN, NBC\\nMTV, VH1, HBO, CNN\\nSCTV, SAT\\nDegree? BA, BN, BS, A! How about BAC? A!\\nAlphabetical or...en!\\nA A\\nTriple A!\\n(Triple A?)\\nA! A! A!\\nU can B 1\\nU can B 1 2\\n2 B or not 2 B\\nC?\\nABC R E Z\\nABC R fun\\nA!\\nAlphabetical order\\n\\nHere we go...\\nUFO on LSD\\nR2D2, C3P0, how 'bout ET?\\nABC, BBC, CBN, NBC\\nMTV, VH1, HBO, CNN\\nSCTV, SAT\\nDegree? BA, BN, BS, A! How about BAC? A!\\nAlphabetical or...enAlphabetical OrderJoe Walsh{'rock': 100, 'Joe Walsh': 100, 'rock alternativo': 100, 'alltimefavs': 100}{'rock': 100}pop{'primary': 'pop', 'all': ['pop']}
16999031!\\nI've been looking\\nI've been searching\\nI've been seeking\\nBut I can't find love\\n\\nI've been driving endless hours\\nThere's nothing doing\\nI can't find love\\nOn cold mornings\\nSun drenched evenings\\nThrough restless dreamings\\nEverywhere\\nIn the papers\\nOn those talk-back television shows\\nA...en!\\nI've been looking\\nI've been searching\\nI've been seeking\\nBut I can't find love\\n\\nI've been driving endless hours\\nThere's nothing doing\\nI can't find love\\nOn cold mornings\\nSun drenched evenings\\nThrough restless dreamings\\nEverywhere\\nIn the papers\\nOn those talk-back television shows\\nA...enBlack IceMy Friend The Chocolate Cake{'8 of 10 stars': 100}NaNpop{'primary': 'pop', 'all': ['pop']}
245963513!\\nYou come on like a dream, peaches and cream\\nLips like strawberry wine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're all ribbons and curls, ooh what a girl\\nEyes that sparkle and shine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're my baby, you're my pet\\nWe fell in...en!\\nYou come on like a dream, peaches and cream\\nLips like strawberry wine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're all ribbons and curls, ooh what a girl\\nEyes that sparkle and shine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're my baby, you're my pet\\nWe fell in...enYou're Sixteen (Original Hit Version)Johnny Burnette{'pop': 100, '60s': 100, '40s-50s': 100}{'pop': 100}pop{'primary': 'pop', 'all': ['pop']}
313614982!! -- Guitar Intro -- !!\\n\\nYou know that this smile\\nTo go deep in my life baby\\nI was born to fly\\nOver this ocean darlin'\\n\\nMaybe we can try\\nSomeday not later darlin'\\nI learned another rhythm\\nThats over my soul\\n\\nAnd darling hes in town\\nAre you all around\\nAnd you don't know why\\n\\nWhy ...en!! -- Guitar Intro -- !!\\n\\nYou know that this smile\\nTo go deep in my life baby\\nI was born to fly\\nOver this ocean darlin'\\n\\nMaybe we can try\\nSomeday not later darlin'\\nI learned another rhythm\\nThats over my soul\\n\\nAnd darling hes in town\\nAre you all around\\nAnd you don't know why\\n\\nWhy ...enEloween DeowenBedouin Soundclash{'2002': 100, 'reggae': 100}{'reggae': 100}pop{'primary': 'pop', 'all': ['pop']}
431651672!! GIRL I LOVE YOU\\nAN I WOULDN'T PLACE NOONE ABOVE YOU\\nGIRL I WOULDN'T PLACE NO 1 ABOVE U\\n\\n\\nYAGGA YAGGA YOW\\n(Ccc)\\nGirl you make my love come down\\nGirl you make my love come\\nDown-down-down-down-down\\nYou make my love come down\\nSo give all praise to JAH JAH\\nFor food an cloth an sheltta\\...en!! GIRL I LOVE YOU\\nAN I WOULDN'T PLACE NOONE ABOVE YOU\\nGIRL I WOULDN'T PLACE NO 1 ABOVE U\\n\\nYAGGA YAGGA YOW\\n(Ccc)\\nGirl you make my love come down\\nGirl you make my love come\\nDown-down-down-down-down\\nYou make my love come down\\nSo give all praise to JAH JAH\\nFor food an cloth an sheltta\\nV...enPraise JahAnthony B{'reggae': 100, 'rastafari': 100, 'dancehall': 50, 'english': 50, 'conscious': 50, 'positive message': 50, 'coool vibe': 50}{'reggae': 100, 'dancehall': 50}r-b{'primary': 'r-b', 'all': ['r-b']}
\n", + "
" + ], + "text/plain": [ + " _id lyrics lyrics_language lyrics_sanitized lyrics_sanitized_lang track artist tags_lfm micro_genres_lfm primary_tag_genius all_tags_genius\n", + "0 4500284 !\\nA A\\nTriple A!\\n(Triple A?)\\nA! A! A!\\nU can B 1\\nU can B 1 2\\n2 B or not 2 B\\nC?\\nABC R E Z\\nABC R fun\\nA!\\nAlphabetical order\\n\\nHere we go...\\nUFO on LSD\\nR2D2, C3P0, how 'bout ET?\\nABC, BBC, CBN, NBC\\nMTV, VH1, HBO, CNN\\nSCTV, SAT\\nDegree? BA, BN, BS, A! How about BAC? A!\\nAlphabetical or... en !\\nA A\\nTriple A!\\n(Triple A?)\\nA! A! A!\\nU can B 1\\nU can B 1 2\\n2 B or not 2 B\\nC?\\nABC R E Z\\nABC R fun\\nA!\\nAlphabetical order\\n\\nHere we go...\\nUFO on LSD\\nR2D2, C3P0, how 'bout ET?\\nABC, BBC, CBN, NBC\\nMTV, VH1, HBO, CNN\\nSCTV, SAT\\nDegree? BA, BN, BS, A! How about BAC? A!\\nAlphabetical or... en Alphabetical Order Joe Walsh {'rock': 100, 'Joe Walsh': 100, 'rock alternativo': 100, 'alltimefavs': 100} {'rock': 100} pop {'primary': 'pop', 'all': ['pop']}\n", + "1 6999031 !\\nI've been looking\\nI've been searching\\nI've been seeking\\nBut I can't find love\\n\\nI've been driving endless hours\\nThere's nothing doing\\nI can't find love\\nOn cold mornings\\nSun drenched evenings\\nThrough restless dreamings\\nEverywhere\\nIn the papers\\nOn those talk-back television shows\\nA... en !\\nI've been looking\\nI've been searching\\nI've been seeking\\nBut I can't find love\\n\\nI've been driving endless hours\\nThere's nothing doing\\nI can't find love\\nOn cold mornings\\nSun drenched evenings\\nThrough restless dreamings\\nEverywhere\\nIn the papers\\nOn those talk-back television shows\\nA... en Black Ice My Friend The Chocolate Cake {'8 of 10 stars': 100} NaN pop {'primary': 'pop', 'all': ['pop']}\n", + "2 45963513 !\\nYou come on like a dream, peaches and cream\\nLips like strawberry wine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're all ribbons and curls, ooh what a girl\\nEyes that sparkle and shine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're my baby, you're my pet\\nWe fell in... en !\\nYou come on like a dream, peaches and cream\\nLips like strawberry wine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're all ribbons and curls, ooh what a girl\\nEyes that sparkle and shine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're my baby, you're my pet\\nWe fell in... en You're Sixteen (Original Hit Version) Johnny Burnette {'pop': 100, '60s': 100, '40s-50s': 100} {'pop': 100} pop {'primary': 'pop', 'all': ['pop']}\n", + "3 13614982 !! -- Guitar Intro -- !!\\n\\nYou know that this smile\\nTo go deep in my life baby\\nI was born to fly\\nOver this ocean darlin'\\n\\nMaybe we can try\\nSomeday not later darlin'\\nI learned another rhythm\\nThats over my soul\\n\\nAnd darling hes in town\\nAre you all around\\nAnd you don't know why\\n\\nWhy ... en !! -- Guitar Intro -- !!\\n\\nYou know that this smile\\nTo go deep in my life baby\\nI was born to fly\\nOver this ocean darlin'\\n\\nMaybe we can try\\nSomeday not later darlin'\\nI learned another rhythm\\nThats over my soul\\n\\nAnd darling hes in town\\nAre you all around\\nAnd you don't know why\\n\\nWhy ... en Eloween Deowen Bedouin Soundclash {'2002': 100, 'reggae': 100} {'reggae': 100} pop {'primary': 'pop', 'all': ['pop']}\n", + "4 31651672 !! GIRL I LOVE YOU\\nAN I WOULDN'T PLACE NOONE ABOVE YOU\\nGIRL I WOULDN'T PLACE NO 1 ABOVE U\\n\\n\\nYAGGA YAGGA YOW\\n(Ccc)\\nGirl you make my love come down\\nGirl you make my love come\\nDown-down-down-down-down\\nYou make my love come down\\nSo give all praise to JAH JAH\\nFor food an cloth an sheltta\\... en !! GIRL I LOVE YOU\\nAN I WOULDN'T PLACE NOONE ABOVE YOU\\nGIRL I WOULDN'T PLACE NO 1 ABOVE U\\n\\nYAGGA YAGGA YOW\\n(Ccc)\\nGirl you make my love come down\\nGirl you make my love come\\nDown-down-down-down-down\\nYou make my love come down\\nSo give all praise to JAH JAH\\nFor food an cloth an sheltta\\nV... en Praise Jah Anthony B {'reggae': 100, 'rastafari': 100, 'dancehall': 50, 'english': 50, 'conscious': 50, 'positive message': 50, 'coool vibe': 50} {'reggae': 100, 'dancehall': 50} r-b {'primary': 'r-b', 'all': ['r-b']}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lyrics_distinct_all.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "lyrics_sanitized_lang\n", + "en 1278136\n", + "ko 100\n", + "fr 93\n", + "es 88\n", + "de 65\n", + " ... \n", + "zh_Hant 1\n", + "ve 1\n", + "ss 1\n", + "br 1\n", + "xx_Qaai 1\n", + "Name: count, Length: 101, dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lyrics_distinct_all[\"lyrics_sanitized_lang\"].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "primary_tag_genius\n", + "pop 734241\n", + "rock 327013\n", + "rap 129445\n", + "r-b 38821\n", + "country 36069\n", + "non-music 13376\n", + "denmark 228\n", + "varnell-15-16-12th 11\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lyrics_distinct_all[\"primary_tag_genius\"].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from lingua import Language, LanguageDetectorBuilder\n", + "\n", + "detector = (\n", + " LanguageDetectorBuilder.from_all_languages()\n", + " .with_preloaded_language_models()\n", + " .with_minimum_relative_distance(0.9)\n", + " .build()\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[Language.GERMAN, Language.GERMAN]\n" + ] + } + ], + "source": [ + "result = detector.detect_languages_in_parallel_of(\n", + " [\n", + " \"Too big, too small\\nSize does matter, after all\\nZu groß, zu klein\\nEr könnte etwas größer sein\\nMercedes Benz und Autobahn\\nAlleine in das Ausland fahren\\nReise Reise\",\n", + " \"Fahrvergnügen\\nIch will nur Spaß, mich nicht verlieben\\n\\n[Pre-Refrain]\\nJust a little bi\",\n", + " ]\n", + ")\n", + "print(result)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'de'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result[0].iso_code_639_1.name.lower()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 12793/12793 [05:40<00:00, 37.63it/s] \n" + ] + } + ], + "source": [ + "from tqdm import tqdm\n", + "\n", + "tqdm.pandas()\n", + "\n", + "# feed in multiple lyrics at once\n", + "lyrics_sanitized_lang_lingua = []\n", + "# use 100 chunks at a time\n", + "for i in tqdm(range(0, len(lyrics_distinct_all), 100)):\n", + " lyrics_sanitized_lang_lingua.extend(\n", + " detector.detect_languages_in_parallel_of(lyrics_distinct_all[\"lyrics_sanitized\"].iloc[i : i + 100])\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "lyrics_distinct_all[\"lyrics_sanitized_lang_lingua\"] = [\n", + " x.iso_code_639_1.name.lower() if x else None for x in lyrics_sanitized_lang_lingua\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "lyrics_sanitized_lang_lingua\n", + "en 1252790\n", + "None 19875\n", + "yo 896\n", + "de 679\n", + "fr 623\n", + "es 559\n", + "sn 461\n", + "la 386\n", + "ja 354\n", + "tl 304\n", + "ko 274\n", + "it 256\n", + "fi 166\n", + "sw 150\n", + "pt 130\n", + "nl 121\n", + "cy 116\n", + "sv 101\n", + "nb 95\n", + "pl 88\n", + "st 87\n", + "id 59\n", + "so 49\n", + "da 46\n", + "ga 40\n", + "et 39\n", + "zu 37\n", + "zh 36\n", + "eu 34\n", + "ts 33\n", + "hr 30\n", + "is 27\n", + "xh 26\n", + "eo 24\n", + "mi 21\n", + "tn 19\n", + "sq 19\n", + "sl 16\n", + "tr 16\n", + "nn 14\n", + "hu 13\n", + "vi 12\n", + "af 12\n", + "ca 11\n", + "sk 11\n", + "cs 11\n", + "bs 10\n", + "ms 10\n", + "ro 5\n", + "lt 4\n", + "lv 2\n", + "lg 2\n", + "ru 2\n", + "he 1\n", + "az 1\n", + "ar 1\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lyrics_distinct_all[\"lyrics_sanitized_lang_lingua\"].value_counts(dropna=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
_idlyricslyrics_languagelyrics_sanitizedlyrics_sanitized_langtrackartisttags_lfmmicro_genres_lfmprimary_tag_geniusall_tags_geniuslyrics_sanitized_lang_lingua
440716933435[Produced by WZRD]\\n\\n\"Now certainly, we all recognize the extremely, extremely low probability of life existing on the moon.\"\\n\\n[Intro]\\nHmm, hmm, alright\\nHmm, hmm, hmm\\n\\n[Verse 1]\\nDrinking again, drinking again\\nBottles up, I'm in it to win\\nWith none of my friends, just me and this bottle...en\"Now certainly, we all recognize the extremely, extremely low probability of life existing on the moon.\"\\n\\nHmm, hmm, alright\\nHmm, hmm, hmm\\n\\nDrinking again, drinking again\\nBottles up, I'm in it to win\\nWith none of my friends, just me and this bottle\\nPeople say that I'm off, say that I'm of...enGoing to the CeremonyKid Cudi{'Hip-Hop': 100, 'electronic': 100, 'hip hop': 67, 'rock': 67, 'alternative rock': 34, 'american': 34, 'alternative hip-hop': 34, '10s': 34, 'alternative hip hop': 34, 'kid cudi': 34, 'its all happening': 34}{'hip hop': 67, 'rock': 67, 'alternative rock': 34, 'alternative hip hop': 34}denmark{'primary': 'denmark', 'all': ['denmark', 'denmark', 'denmark', 'denmark', 'rap', 'alternative-rock', 'space-rock', 'rock', 'rap']}en
1236835844478(Check this out, DJ E-V)\\n\\n[Verse]\\nHeeey, she say I'm different\\nI'm zoned like, how bitch?\\nShe say, I dress cool\\nAnd cause my accent\\nOh shit, this girl must want a nut\\nI'mma jizz up in her face\\nWhile I'm palming the butt\\nDidn't do my struck, cowboy mid-western\\nShe did it all for me, no...en(Check this out, DJ E-V)\\n\\nHeeey, she say I'm different\\nI'm zoned like, how bitch?\\nShe say, I dress cool\\nAnd cause my accent\\nOh shit, this girl must want a nut\\nI'mma jizz up in her face\\nWhile I'm palming the butt\\nDidn't do my struck, cowboy mid-western\\nShe did it all for me, now it's he...enSkit - Foggy GlassesKid Cudi{'vugube62': 100}NaNdenmark{'primary': 'denmark', 'all': ['denmark', 'denmark', 'rap', 'rap']}en
1781142985758[Intro]\\n(If young Metro don't trust you, I'm gon' shoot you)\\n\\n[Chorus]\\nRemember feelin' broke as fuck (Yeah)\\nBut now I'm pullin' up in Rover trucks (I'm pullin' up in Rover trucks now)\\nRemember these bitches ain't wanna fuck\\nNow she give me head outside of Toys\"R\"Us (These bitches suck an...en(If young Metro don't trust you, I'm gon' shoot you)\\n\\nRemember feelin' broke as fuck (Yeah)\\nBut now I'm pullin' up in Rover trucks (I'm pullin' up in Rover trucks now)\\nRemember these bitches ain't wanna fuck\\nNow she give me head outside of Toys\"R\"Us (These bitches suck and fuck me now)\\nWhe...enUpNAV{'trap': 100, 'rap': 50, 'canada': 50, 'pop rap': 50, 'cloud rap': 50, 'emo rap': 50, 'alternative rnb': 50, 'toronto sound': 50}{'trap': 100, 'rap': 50, 'pop rap': 50, 'emo rap': 50}denmark{'primary': 'denmark', 'all': ['rap', 'canada', 'trap', 'rap']}en
2009422256883(Kids voice: Yooo, yoo, yoo)\\n\\n[Verse 1: Hodgy] (x4)\\nI tell a little homie, this is life\\nI tell these cute bitches, get right\\nLight a blunt for everybody, get high\\nEverything is gonna be alright\\n\\n[Hook: Hodgy]\\nI'm lyin' on a landslide\\nWith a bag of California to smoke\\nAn ounce of shroo...en(Kids voice: Yooo, yoo, yoo)\\n\\n(x4)\\nI tell a little homie, this is life\\nI tell these cute bitches, get right\\nLight a blunt for everybody, get high\\nEverything is gonna be alright\\n\\nI'm lyin' on a landslide\\nWith a bag of California to smoke\\nAn ounce of shrooms for nature walks -\\nAnd hide ...enKarateman Feat. Left BrainHodgy BeatsNaNNaNdenmark{'primary': 'denmark', 'all': ['denmark', 'denmark', 'rap', 'rap', 'denmark']}en
2183017371050[Intro:]\\n(Mumbling.....)\\nNothing is wrong\\nNow we're all alone...\\n\\n[Hook:]\\nAnd now we're all alone\\nYour friends are all long gone\\nThey're already home, you're already wrong\\nYou're alle alone...\\nCome here girl, you ain't walkning straight\\nClose your mouth, cause you ain't talking straig...en(Mumbling.....)\\nNothing is wrong\\nNow we're all alone...\\n\\nAnd now we're all alone\\nYour friends are all long gone\\nThey're already home, you're already wrong\\nYou're alle alone...\\nCome here girl, you ain't walkning straight\\nClose your mouth, cause you ain't talking straight\\nI know it's har...enGucci GogglesJimmy JohnsonNaNNaNdenmark{'primary': 'denmark', 'all': ['denmark', 'rap', 'rap']}en
.......................................
124941529870494[Verse 1]\\nYou thought that I could change\\nBut I'm all the same, girl, I'm all the same\\nYou thought that you could work me out, ooh-ooh\\n\\n[Chorus 1]\\nIt's just that all these ordinary things, ordinary things\\nSeemed to hunt you, making me wanna dump you\\nJust that all these ordinary things, o...enYou thought that I could change\\nBut I'm all the same, girl, I'm all the same\\nYou thought that you could work me out, ooh-ooh\\n\\nIt's just that all these ordinary things, ordinary things\\nSeemed to hunt you, making me wanna dump you\\nJust that all these ordinary things, ordinary things\\nSeems a...enOrdinary Things (Wankelmut Remix)Lukas Graham{'funkhaus europa beat the night': 100}NaNdenmark{'primary': 'denmark', 'all': ['r-b', 'pop', 'danmark', 'scandinavia', 'soul-pop', 'soul', 'r-b']}en
126756136084570[Verse 1]\\nYoung nigga getting busy dawg, I can't lie\\nBadder bitches in the city give me five five\\nI'm too into the culture, it's my time\\nIm on my junior year, already wasted nine lives (Yeah)\\nI'm really moving different things than last year\\nI didn't even think I'd be here\\nI put the press...enYoung nigga getting busy dawg, I can't lie\\nBadder bitches in the city give me five five\\nI'm too into the culture, it's my time\\nIm on my junior year, already wasted nine lives (Yeah)\\nI'm really moving different things than last year\\nI didn't even think I'd be here\\nI put the pressure on myse...enSmoothiesNoah CarterNaNNaNdenmark{'primary': 'denmark', 'all': ['denmark', 'rap', 'rap', 'danmark', 'scandinavia', 'denmark']}en
127180528816530[Verse 1]\\nYour roommate got a man\\nThem walls reminds you of your lust\\nYour ex didn't understand\\nCause he wasn't raised with divorce\\nWe're from the same generation, I know\\nAnd relationships are more breakable than before, uh\\nSo don't blame me when I tell you that I don't trust nobody\\nWe'r...enYour roommate got a man\\nThem walls reminds you of your lust\\nYour ex didn't understand\\nCause he wasn't raised with divorce\\nWe're from the same generation, I know\\nAnd relationships are more breakable than before, uh\\nSo don't blame me when I tell you that I don't trust nobody\\nWe're both in t...enNot ImpressedLouis Rustum{'atmospheric': 100, 'r&b': 100, 'hukaos': 100}{'r&b': 100}denmark{'primary': 'denmark', 'all': ['denmark', 'rap', 'danmark', 'rap', 'denmark']}en
127436932411507[Intro]\\nYup, yup\\nYup\\nUh\\n\\n[Verse 1]\\nI hope you're proud of me, dude I grew to be\\nIngenuity influenced by your eulogy\\nGoing through memories like they were movie scenes\\nI know I been the shit, all these people full of me\\nI admit, I guess I'm full of myself, too\\nThere's just a bunch of s...enYup, yup\\nYup\\nUh\\n\\nI hope you're proud of me, dude I grew to be\\nIngenuity influenced by your eulogy\\nGoing through memories like they were movie scenes\\nI know I been the shit, all these people full of me\\nI admit, I guess I'm full of myself, too\\nThere's just a bunch of shit, I wish I could ...enREMember (Live)Mac MillerNaNNaNdenmark{'primary': 'denmark', 'all': ['rap', 'rap']}en
127499238042016[Intro: Doctor & Patient\\nAw, OK doc\\nAlright, that's good\\nAhhh, doc that feels good\\nVery good\\nIt feel good in there\\nWatch this thing here for a few minutes, OK\\nThank you mr. Doctor\\nThank you, thank you\\nOK, sit down\\nI'll call you 10\\n\\n[Pre-Chorus]\\nBaby i wanna be there but you know tha...en[Intro: Doctor & Patient\\nAw, OK doc\\nAlright, that's good\\nAhhh, doc that feels good\\nVery good\\nIt feel good in there\\nWatch this thing here for a few minutes, OK\\nThank you mr. Doctor\\nThank you, thank you\\nOK, sit down\\nI'll call you 10\\n\\nBaby i wanna be there but you know that it's hard fo...enSupermanRicky HilNaNNaNdenmark{'primary': 'denmark', 'all': ['denmark', 'pop', 'pop', 'alternative']}en
\n", + "

228 rows × 12 columns

\n", + "
" + ], + "text/plain": [ + " _id lyrics lyrics_language lyrics_sanitized lyrics_sanitized_lang track artist tags_lfm micro_genres_lfm primary_tag_genius all_tags_genius lyrics_sanitized_lang_lingua\n", + "4407 16933435 [Produced by WZRD]\\n\\n\"Now certainly, we all recognize the extremely, extremely low probability of life existing on the moon.\"\\n\\n[Intro]\\nHmm, hmm, alright\\nHmm, hmm, hmm\\n\\n[Verse 1]\\nDrinking again, drinking again\\nBottles up, I'm in it to win\\nWith none of my friends, just me and this bottle... en \"Now certainly, we all recognize the extremely, extremely low probability of life existing on the moon.\"\\n\\nHmm, hmm, alright\\nHmm, hmm, hmm\\n\\nDrinking again, drinking again\\nBottles up, I'm in it to win\\nWith none of my friends, just me and this bottle\\nPeople say that I'm off, say that I'm of... en Going to the Ceremony Kid Cudi {'Hip-Hop': 100, 'electronic': 100, 'hip hop': 67, 'rock': 67, 'alternative rock': 34, 'american': 34, 'alternative hip-hop': 34, '10s': 34, 'alternative hip hop': 34, 'kid cudi': 34, 'its all happening': 34} {'hip hop': 67, 'rock': 67, 'alternative rock': 34, 'alternative hip hop': 34} denmark {'primary': 'denmark', 'all': ['denmark', 'denmark', 'denmark', 'denmark', 'rap', 'alternative-rock', 'space-rock', 'rock', 'rap']} en\n", + "12368 35844478 (Check this out, DJ E-V)\\n\\n[Verse]\\nHeeey, she say I'm different\\nI'm zoned like, how bitch?\\nShe say, I dress cool\\nAnd cause my accent\\nOh shit, this girl must want a nut\\nI'mma jizz up in her face\\nWhile I'm palming the butt\\nDidn't do my struck, cowboy mid-western\\nShe did it all for me, no... en (Check this out, DJ E-V)\\n\\nHeeey, she say I'm different\\nI'm zoned like, how bitch?\\nShe say, I dress cool\\nAnd cause my accent\\nOh shit, this girl must want a nut\\nI'mma jizz up in her face\\nWhile I'm palming the butt\\nDidn't do my struck, cowboy mid-western\\nShe did it all for me, now it's he... en Skit - Foggy Glasses Kid Cudi {'vugube62': 100} NaN denmark {'primary': 'denmark', 'all': ['denmark', 'denmark', 'rap', 'rap']} en\n", + "17811 42985758 [Intro]\\n(If young Metro don't trust you, I'm gon' shoot you)\\n\\n[Chorus]\\nRemember feelin' broke as fuck (Yeah)\\nBut now I'm pullin' up in Rover trucks (I'm pullin' up in Rover trucks now)\\nRemember these bitches ain't wanna fuck\\nNow she give me head outside of Toys\"R\"Us (These bitches suck an... en (If young Metro don't trust you, I'm gon' shoot you)\\n\\nRemember feelin' broke as fuck (Yeah)\\nBut now I'm pullin' up in Rover trucks (I'm pullin' up in Rover trucks now)\\nRemember these bitches ain't wanna fuck\\nNow she give me head outside of Toys\"R\"Us (These bitches suck and fuck me now)\\nWhe... en Up NAV {'trap': 100, 'rap': 50, 'canada': 50, 'pop rap': 50, 'cloud rap': 50, 'emo rap': 50, 'alternative rnb': 50, 'toronto sound': 50} {'trap': 100, 'rap': 50, 'pop rap': 50, 'emo rap': 50} denmark {'primary': 'denmark', 'all': ['rap', 'canada', 'trap', 'rap']} en\n", + "20094 22256883 (Kids voice: Yooo, yoo, yoo)\\n\\n[Verse 1: Hodgy] (x4)\\nI tell a little homie, this is life\\nI tell these cute bitches, get right\\nLight a blunt for everybody, get high\\nEverything is gonna be alright\\n\\n[Hook: Hodgy]\\nI'm lyin' on a landslide\\nWith a bag of California to smoke\\nAn ounce of shroo... en (Kids voice: Yooo, yoo, yoo)\\n\\n(x4)\\nI tell a little homie, this is life\\nI tell these cute bitches, get right\\nLight a blunt for everybody, get high\\nEverything is gonna be alright\\n\\nI'm lyin' on a landslide\\nWith a bag of California to smoke\\nAn ounce of shrooms for nature walks -\\nAnd hide ... en Karateman Feat. Left Brain Hodgy Beats NaN NaN denmark {'primary': 'denmark', 'all': ['denmark', 'denmark', 'rap', 'rap', 'denmark']} en\n", + "21830 17371050 [Intro:]\\n(Mumbling.....)\\nNothing is wrong\\nNow we're all alone...\\n\\n[Hook:]\\nAnd now we're all alone\\nYour friends are all long gone\\nThey're already home, you're already wrong\\nYou're alle alone...\\nCome here girl, you ain't walkning straight\\nClose your mouth, cause you ain't talking straig... en (Mumbling.....)\\nNothing is wrong\\nNow we're all alone...\\n\\nAnd now we're all alone\\nYour friends are all long gone\\nThey're already home, you're already wrong\\nYou're alle alone...\\nCome here girl, you ain't walkning straight\\nClose your mouth, cause you ain't talking straight\\nI know it's har... en Gucci Goggles Jimmy Johnson NaN NaN denmark {'primary': 'denmark', 'all': ['denmark', 'rap', 'rap']} en\n", + "... ... ... ... ... ... ... ... ... ... ... ... ...\n", + "1249415 29870494 [Verse 1]\\nYou thought that I could change\\nBut I'm all the same, girl, I'm all the same\\nYou thought that you could work me out, ooh-ooh\\n\\n[Chorus 1]\\nIt's just that all these ordinary things, ordinary things\\nSeemed to hunt you, making me wanna dump you\\nJust that all these ordinary things, o... en You thought that I could change\\nBut I'm all the same, girl, I'm all the same\\nYou thought that you could work me out, ooh-ooh\\n\\nIt's just that all these ordinary things, ordinary things\\nSeemed to hunt you, making me wanna dump you\\nJust that all these ordinary things, ordinary things\\nSeems a... en Ordinary Things (Wankelmut Remix) Lukas Graham {'funkhaus europa beat the night': 100} NaN denmark {'primary': 'denmark', 'all': ['r-b', 'pop', 'danmark', 'scandinavia', 'soul-pop', 'soul', 'r-b']} en\n", + "1267561 36084570 [Verse 1]\\nYoung nigga getting busy dawg, I can't lie\\nBadder bitches in the city give me five five\\nI'm too into the culture, it's my time\\nIm on my junior year, already wasted nine lives (Yeah)\\nI'm really moving different things than last year\\nI didn't even think I'd be here\\nI put the press... en Young nigga getting busy dawg, I can't lie\\nBadder bitches in the city give me five five\\nI'm too into the culture, it's my time\\nIm on my junior year, already wasted nine lives (Yeah)\\nI'm really moving different things than last year\\nI didn't even think I'd be here\\nI put the pressure on myse... en Smoothies Noah Carter NaN NaN denmark {'primary': 'denmark', 'all': ['denmark', 'rap', 'rap', 'danmark', 'scandinavia', 'denmark']} en\n", + "1271805 28816530 [Verse 1]\\nYour roommate got a man\\nThem walls reminds you of your lust\\nYour ex didn't understand\\nCause he wasn't raised with divorce\\nWe're from the same generation, I know\\nAnd relationships are more breakable than before, uh\\nSo don't blame me when I tell you that I don't trust nobody\\nWe'r... en Your roommate got a man\\nThem walls reminds you of your lust\\nYour ex didn't understand\\nCause he wasn't raised with divorce\\nWe're from the same generation, I know\\nAnd relationships are more breakable than before, uh\\nSo don't blame me when I tell you that I don't trust nobody\\nWe're both in t... en Not Impressed Louis Rustum {'atmospheric': 100, 'r&b': 100, 'hukaos': 100} {'r&b': 100} denmark {'primary': 'denmark', 'all': ['denmark', 'rap', 'danmark', 'rap', 'denmark']} en\n", + "1274369 32411507 [Intro]\\nYup, yup\\nYup\\nUh\\n\\n[Verse 1]\\nI hope you're proud of me, dude I grew to be\\nIngenuity influenced by your eulogy\\nGoing through memories like they were movie scenes\\nI know I been the shit, all these people full of me\\nI admit, I guess I'm full of myself, too\\nThere's just a bunch of s... en Yup, yup\\nYup\\nUh\\n\\nI hope you're proud of me, dude I grew to be\\nIngenuity influenced by your eulogy\\nGoing through memories like they were movie scenes\\nI know I been the shit, all these people full of me\\nI admit, I guess I'm full of myself, too\\nThere's just a bunch of shit, I wish I could ... en REMember (Live) Mac Miller NaN NaN denmark {'primary': 'denmark', 'all': ['rap', 'rap']} en\n", + "1274992 38042016 [Intro: Doctor & Patient\\nAw, OK doc\\nAlright, that's good\\nAhhh, doc that feels good\\nVery good\\nIt feel good in there\\nWatch this thing here for a few minutes, OK\\nThank you mr. Doctor\\nThank you, thank you\\nOK, sit down\\nI'll call you 10\\n\\n[Pre-Chorus]\\nBaby i wanna be there but you know tha... en [Intro: Doctor & Patient\\nAw, OK doc\\nAlright, that's good\\nAhhh, doc that feels good\\nVery good\\nIt feel good in there\\nWatch this thing here for a few minutes, OK\\nThank you mr. Doctor\\nThank you, thank you\\nOK, sit down\\nI'll call you 10\\n\\nBaby i wanna be there but you know that it's hard fo... en Superman Ricky Hil NaN NaN denmark {'primary': 'denmark', 'all': ['denmark', 'pop', 'pop', 'alternative']} en\n", + "\n", + "[228 rows x 12 columns]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lyrics_distinct_all.loc[(lyrics_distinct_all[\"primary_tag_genius\"] == \"denmark\")] # [\"lyrics_sanitized_lang\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# drop NaN values\n", + "lyrics_distinct_all = lyrics_distinct_all.dropna(subset=[\"lyrics_sanitized_lang_lingua\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set up different Versions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lower" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "lyrics_distinct_all[\"lyrics_sanitized_lower\"] = lyrics_distinct_all[\"lyrics_sanitized\"].str.lower()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Non-punctuated" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 1259329/1259329 [04:24<00:00, 4757.54it/s] \n" + ] + } + ], + "source": [ + "# use Constants.PUNCTUATION_CHARS to remove all punctuation from lyrics_sanitized\n", + "# for each char separately\n", + "\n", + "\n", + "def remove_punctuation(text):\n", + " for punct in Constants.PUNCTUATION_CHARS:\n", + " text = text.replace(punct, \"\")\n", + " return text\n", + "\n", + "\n", + "lyrics_distinct_all[\"lyrics_sanitized_rmp\"] = lyrics_distinct_all[\"lyrics_sanitized\"].progress_apply(remove_punctuation)\n", + "lyrics_distinct_all[\"lyrics_sanitized_lower_rmp\"] = lyrics_distinct_all[\"lyrics_sanitized_rmp\"].str.lower()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Segment" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "lyrics_distinct_all[\"verses\"] = lyrics_distinct_all[\"lyrics_sanitized\"].str.split(\"\\n\\n\")\n", + "# lower\n", + "lyrics_distinct_all[\"verses_lower\"] = lyrics_distinct_all[\"lyrics_sanitized_lower\"].str.split(\"\\n\\n\")\n", + "# remove punctuation\n", + "lyrics_distinct_all[\"verses_rmp\"] = lyrics_distinct_all[\"lyrics_sanitized_rmp\"].str.split(\"\\n\\n\")\n", + "lyrics_distinct_all[\"verses_lower_rmp\"] = lyrics_distinct_all[\"lyrics_sanitized_lower_rmp\"].str.split(\"\\n\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/1259329 [00:00wenn du nur zweimal im jahr post kriegst!<',\n", + " 'mein lieber hiphop, wo bist du nur, wenn man dich braucht? du sonnst deinen dicken hintern zwischen palmen und bambus',\n", + " \"auf irgend so 'm luxushotel-campus\",\n", + " 'und schlürfst mittlerweile literweise schampus',\n", + " 'und so hast du die beste party verpasst, ey, alle waren da, alles, was rang und namen hat',\n", + " \"sogar dieter gorny's mutter kam mit damenbart!\",\n", + " \"die musikbranche macht 'n fass auf\",\n", + " 'und prämiert deinen tollsten reim und besten basslauf!',\n", + " 'den schärfsten beat, das letzte und erste lied',\n", + " 'anlässlich deines ersten todestags!',\n", + " 'die presse feiert ihre lustigen schlagzeilen, so:',\n", + " 'hiphop lebt vielleicht in hundert jahren! oder: könig rock macht sich rap zum untertan!',\n", + " 'und alles, und ich mein, wirklich alles, was in diesem land je ein haus gerockt hat, war da, um das gegenteil zu beweisen!',\n", + " 'ausser du...',\n", + " \"ich mein', die jungs und mädels haben gemalt und brechgetanzt\",\n", + " 'während sprechgesangsakrobaten',\n", + " 'die show ihres lebens am mikro makro starten',\n", + " \"und ich steh' mittendrin und vergess' den alltagsstress\",\n", + " \">i guess that's the time when i'm not depressed<\",\n", + " \"wenn ich das mikro test', einz, zwo, mic-check one, two, heute gibt 's in eurer stadt verbales taekwondo\",\n", + " 'daniel san macht euch den kranich',\n", + " \"gibt 's doch gar nicht. euer style ist fett wie h-milch, süss wie cola-light\",\n", + " \"meiner hat sich schnell entwickelt wie 'n polaroid\",\n", + " 'weil, nur wenn die klamotten abhotten',\n", + " 'wissen die jungs, was rocken heisst',\n", + " \"weil, dann gibt's schnörckellos party ohne dunst und trockeneis\",\n", + " \"beschränkt auf 's wesentliche in allen lebenslagen:\",\n", + " '>reim, beat und bass, sonst noch fragen<',\n", + " 'wohl kaum, aber endlich wird das, was du nie erlebt hast, selbstverständlich',\n", + " 'weil die leute reifen und scheinbar begreifen, dass:',\n", + " \">progressions can't be made if we're separate forever!<\",\n", + " 'na also, und auf kommando stürmen ein paar dutzend, zu deiner zeit als szene',\n", + " 'missinterpretierte kids die bühne und battlen sich hart aber gerecht',\n", + " 'o-ton: >warum sind deine texte so schlecht?<',\n", + " 'und so weiter, und so weiter: >bla, bla, bla!<',\n", + " 'und es tut gut zu sehen, wie die jungs das nehmen, und sich gegenseitig brennen mit der kraft eines etwas zu alten toasters',\n", + " '>i dedicate this to braggers and boasters!<',\n", + " 'schoen, dass es euch, schoen, dass es euch gibt!',\n", + " \"und es tut gut zu sehen, die sportsfreunde sind in topform, und bereit für 'n abend rocken alles zu opfern\",\n", + " \"aber wem erzähl' ich das? du hängst mit deinen neuen freunden ab, den üblichen verdächtigen möchtegern drogendealern\",\n", + " 'halten sich für keyzer soze persönlich, und während sie kohle zählend auf ihren grammy warten',\n", + " \"koksen sie sich zu und schlürfen remy martin und machen böse gesichter wie echte gangster y'all\",\n", + " '>i think that smiling in public is against the law!<',\n", + " 'tja, da kann man ja nur gratulieren',\n", + " \"sich 'n hosenbein hochkrempeln wie 'n radkurier, benz fahren statt mountain-bicycle\",\n", + " \"und für 'n schönen tod beten wie durch sharon stones eispickel. es gab zeiten, da hattest du mehr kampfgeist als ben-hur\",\n", + " 'heute schickst du ganze alben durch die zensur',\n", + " 'und während du und deine neuen spielkammeraden',\n", + " 'ihr rotationsabo feiern, feiern die kids die erkenntnis, das ein fetter, besoffener, unsportlicher hiphop',\n", + " \"für sie überflüssig ist wie 'n blinddarm\",\n", + " '>den schmerz, den der kommerz verursacht, lindern!<',\n", + " 'einen für den job, zwei um des hiphop willen, aber du klopfst an die himmelstür mit bob dylan',\n", + " 'drei für den, der dich, deine nine stammtischkumpels und vivas-jungs mattsetzt',\n", + " '>cool< wie beavis und butthead. null komma nix für den, der den quatsch bestimmt',\n", + " \">damn, i wish i wasn't such a wimp!<\",\n", + " \"da würd' ich die welt wissen lassen, dass es dich noch gibt\",\n", + " \"ich würd' mir was einfallen lassen, so 'n ich-hab-elvis-gesehen-scheiss, und alle register ziehen als meister des story-telling\",\n", + " 'und auf die tränendrüsen drücken wie tory spelling, so die verlorene-schaf-schiene fahren',\n", + " 'und von dem kerl erzählen, der viel zu spät schnallte, dass er schiefliegt, wie jens weissflog',\n", + " '>und langsam merkte, dass die zeit an ihm vorbeizog!<',\n", + " \"und ich würd' extra dick auftragen mit der geschichte um diesen brief\",\n", + " \">i don't care, what you care, i just give, what you receive!<\",\n", + " 'und deine neuen freunde mit ihren lustigen dogmen',\n", + " \"haben immer noch keinen platz in meinem walkman. aber was auch immer ich anpranger'\",\n", + " \"ich bleib' doch nur dein handlanger, weil, ich lebe diesen blödsinn und geh' darin auf wie lötzinn!\",\n", + " \">aber eine letzte bitte hab' ich noch an dich!<\",\n", + " '>take these words home and think it through!<',\n", + " '>and just let nature do the rest!<',\n", + " 'wollt ihr wissen was ich treib wenn ich rappe',\n", + " 'geschichten die ich höre sachen die ich neu entdecke',\n", + " 'alle fragen sich ey mann was der hat das hab ich nicht',\n", + " 'viele schaben sich und mit kritik',\n", + " 'ja das spar ich nicht seit ich 17 bin',\n", + " 'alda ich wollt ich nie woanders hin',\n", + " 'für mich war der rapscheiß ein totaler neubeginn',\n", + " 'pack die chance am schopf und wie der koch',\n", + " 'serviere ich ein wortspielmenü was wollt ihr noch?',\n", + " 'ich bin jung schwarz groß mach den alten omas angst',\n", + " 'scheiß auf den respekt scheiß auf ihre akzeptanz',\n", + " 'wechseln auf der straße die straßenseite in der bahn den platz',\n", + " 'beobachten mich voll auch wenn ich mich kurz kratz',\n", + " 'also tauch ich unter tief so dass mich keiner sieht',\n", + " 'undercoverstyles das is kein stress das is krieg',\n", + " 'ich hab so viel verbündete',\n", + " 'keiner wollts mir glauben als ich dies verkündete',\n", + " 'ich liebe meine - meine leute lieben mich vielleicht',\n", + " 'lieb ich auch dich vielleicht',\n", + " 'aber auch nicht das werden wir sehn',\n", + " 'by the scores',\n", + " 'transatlantic like arabs and berbers warriors',\n", + " 'slash black lord',\n", + " 'carrying torches map the warpath blackboards',\n", + " 'attack your fortress back to back in the soldiers quarters',\n", + " 'following orders',\n", + " 'draw swords as we forge borders',\n", + " 'and want more for our sons and daughters',\n", + " 'we close doors change course to uncharted waters',\n", + " \"it's martial law we taking over storming ports on the shore\",\n", + " 'but what for',\n", + " \"we were stolen sold to work for what's yours\",\n", + " 'balterzar saw the north star',\n", + " 'arabian moor gave gifts to the poor',\n", + " 'then they gave us slave labor disrespected us more',\n", + " 'we expected forty acres then they gave us three forths',\n", + " 'now we free rebirthing with the bulk of the force',\n", + " 'reimburse us for the holocaust talk to the boss',\n", + " \"snatch your purse if you've got more yearning to floss\",\n", + " 'smack you worse than your papa no words lost',\n", + " 'we up to par raw shit now staccato the bar',\n", + " 'i seen the niggas in your click we could tackle´em all',\n", + " \"yo we black and that's it\",\n", + " 'me and afrob bomb plot',\n", + " 'gunnin´ this shit yo we runnin´ this shit',\n", + " \"we getting rich taking paper 'cause this hunger's a bitch\",\n", + " 'step back respect it we got it locked on the top',\n", + " 'we some niggas on some next shit gunning the block',\n", + " 'step back respect it we got it locked on the top',\n", + " 'we some niggas on some next shit top of the notch',\n", + " 'step back respect it we got it locked on the top',\n", + " 'we some niggas on some next shit gunning the block',\n", + " 'step back respect it we got it locked on the top',\n", + " 'we some niggas on some next shit gunning the block',\n", + " 'step back respect it',\n", + " 'ja mmh',\n", + " 'vo barking bis in chreis drü (eheh)',\n", + " 'ok jetz’',\n", + " 'yeah, yeah, yeah',\n", + " 'mokuba lives beats',\n", + " 'yeah-yeah, yeah, yeah',\n", + " \"i might link my ting from barkin'\",\n", + " \"7 a.m. in the mornin'\",\n", + " \"she's callin', i'm yawnin'\",\n", + " \"she's jarrin', no stallin'\",\n", + " \"i might link my ting from barkin'\",\n", + " \"7 a.m. in the mornin' (yeah, yeah, yeah)\",\n", + " \"she's callin', i'm yawnin' (yeah, yeah, yeah)\",\n", + " \"she's jarrin', no stallin'\",\n", + " \"i might link my ting from barkin' (in the mornin')\",\n", + " \"7 a.m. in the mornin'\",\n", + " \"she's callin', i'm yawnin' (i'm yawnin')\",\n", + " \"she's jarrin', no stallin'\",\n", + " \"i might link my ting from barkin' (yawnin')\",\n", + " \"7 a.m. in the mornin'\",\n", + " \"she's callin', i'm yawnin' (i'm yawnin')\",\n", + " \"she's jarrin', no stallin'\",\n", + " 'ich glaub ich link hüt mis friesi ting',\n", + " 'link up wenni in wiedike bin',\n", + " 'und ich weiss sie hät ihre fründ',\n", + " 'aber irgendwie nüm so viеl liebi für ihn',\n", + " 'egal d’sunne schiint nume für ois zwеi grad',\n", + " 'mir händ es good ting goin’ - sugar minott',\n", + " 'peroni im park, nacher wohnig und znacht',\n", + " 'und ich bliib, han e schwächi für sie - delilah',\n", + " 'kein grund zum wo anegah',\n", + " 'vorhäng bliibed zoge bis am namitag',\n", + " 'playlist r’n’b, mir rub-a-dub',\n", + " 'vapo macht farbe, caran d’ache',\n", + " 'plus bitzli liebi und hennessy (mmh bitzli hennessy)',\n", + " 'sie seit de link up isch fällig gsi',\n", + " 'genau die richtigi medizin',\n", + " 'für mis peng ting mini königin',\n", + " \"i might link my ting from barkin'\",\n", + " \"7 a.m. in the mornin'\",\n", + " \"she's callin', i'm yawnin'\",\n", + " \"she's jarrin', no stallin'\",\n", + " \"i might link my ting from barkin'\",\n", + " \"7 a.m. in the mornin' (yeah, yeah, yeah)\",\n", + " \"she's callin', i'm yawnin' (yeah, yeah, yeah)\",\n", + " \"she's jarrin', no stallin'\",\n", + " \"i might link my ting from barkin' (in the mornin')\",\n", + " \"7 a.m. in the mornin'\",\n", + " \"she's callin', i'm yawnin' (i'm yawnin')\",\n", + " \"she's jarrin', no stallin'\",\n", + " \"i might link my ting from barkin' (yawnin')\",\n", + " \"7 a.m. in the mornin'\",\n", + " \"she's callin', i'm yawnin' (i'm yawnin')\",\n", + " \"she's jarrin', no stallin'\",\n", + " 'many guys (many guys), many, many, many guys',\n", + " \"hate me and it's true, too bad\",\n", + " 'i just stunt on you, too bad',\n", + " \"i don't look like you\",\n", + " 'like many, many, many guys (many guys, yeah)',\n", + " \"hate me and it's true, too bad\",\n", + " 'i just stunt on you, like too bad',\n", + " \"i might link my ting from barkin'\",\n", + " \"7 a.m. in the mornin' (yeah, yeah, yeah)\",\n", + " \"she's callin', i'm yawnin' (yeah, yeah, yeah)\",\n", + " \"she's jarrin', no stallin'\",\n", + " \"i might link my ting from barkin'\",\n", + " \"7 a.m. in the mornin' (yeah, yeah, yeah)\",\n", + " \"she's callin', i'm yawnin' (yeah, yeah, yeah)\",\n", + " \"she's jarrin', no stallin'\",\n", + " \"i might link my ting from barkin'\",\n", + " \"7 a.m. in the mornin'\",\n", + " \"she's callin', i'm yawnin'\",\n", + " \"she's jarrin', no stallin'\",\n", + " \"i might link my ting from barkin'\",\n", + " \"7 a.m. in the mornin'\",\n", + " \"she's callin', i'm yawnin’ (i'm yawnin’)\",\n", + " 'hater rissed a mim thron scho sit tag 1',\n", + " 'aber mimi blibt chalt wie de polarchreis',\n", + " 'hater rissed a mim thron scho sit tag 1',\n", + " 'aber mimi blibt chalt wie de polarchreis',\n", + " 'yeah',\n", + " 'jong mimi bro',\n", + " 'king vo de city flow',\n", + " 'gemmer s mic ech kill die pisser im godzilla mode',\n", + " 'chom vo onde ond mach rapper zo sashimi roll',\n", + " 'mann zwöi nummer 1 albe gäge paar teenie hoes',\n", + " 'ond hater schiebed ehre felm',\n", + " 'doch am ändi send sie niemols wonech ben (nie)',\n", + " 'log ech cha das game ned verloh mann',\n", + " 'wörd de biggie dech ghöre, wörd är freiwellig goh',\n", + " 'homie log sett mine albe darf de ch-rap träume',\n", + " 'ech ha liebi för die city, sie esch smart, sie esch loyal',\n", + " 'es gohd eastside, westside, 4-1, gang sign',\n", + " 'log mer läbed schnell, es esch de fast life',\n", + " 'young mimi',\n", + " 'hater rissed a mim thron scho sit tag 1',\n", + " 'aber mimi blibt chalt wie de polarchreis',\n", + " 'ond die putos wend min thron scho sit tag 1',\n", + " 'aber log ech blib blib chalt wie de polarchreis',\n", + " 'fast life, fast life',\n", + " 'mini city 4-1',\n", + " 'homie log mer läbid schnell yeah',\n", + " 'fast life, fast life',\n", + " 'mini clique worldwide',\n", + " 'homie log mer läbid schnell wooh',\n", + " 'digga fast life, bleich wie s schiine vom mond',\n", + " 'no sleep mann, ech schlof met de cousine vom tod',\n", + " '2.5 in mathi bes zom teenie idol',\n", + " 'das send köss för mini mam ech hol för sie die million',\n", + " 'log mol ech be back us de zuekonft, werklech wohr',\n", + " 'ech spele fifa 20 scho sett 13 johr',\n", + " 'chom säg was redisch du vo hype',\n", + " 'ech zementier min name',\n", + " 'ond noch crack ufem 2 weder back ufem 1',\n", + " 'king mimi log ech jage de rekord',\n", + " 'mer send ned die glichi liga, nedemol de glichi sport',\n", + " 'läbe schnell, gömmer hei werds scho hell',\n", + " 'digga chom ech mol i himmel hanech heiweh to hell',\n", + " 'fast life',\n", + " 'du kennsch mi name es esch young mik',\n", + " 'das esch de felm wo mer fahred chom klar',\n", + " 'log ech ha jongs hender mer, sie send grad',\n", + " 'ech bereue ken einzige tag',\n", + " 'fast life fast life',\n", + " 'mini city 4-1',\n", + " 'fast life fast life',\n", + " 'mini city 4-1',\n", + " 'brraa',\n", + " 'yeah (4x)',\n", + " 'yeah',\n", + " 'sie hend üs ghatet wäg de stemm ond beats',\n", + " 'wäg de skinny jeans',\n", + " 'jetz semmer on top, homeboy',\n", + " 'never change a winning team',\n", + " 'sie kopiered miksi, chom scho fegg die mini me’s',\n", + " 'brudi mini bio werd mol gspellt vom keanu reeves',\n", + " 'fegg die räubergschechte, ech destroye hipster-rapper',\n", + " 'wie en koala fucking eukalyptus-blätter',\n", + " 'splatter-flow, log de king vernechtet jetze all die neue tracks verbote vom betäubigsmettel-gsetz jetz',\n", + " 'ey du chattisch nor met fette fraue',\n", + " 'jetz esch de boy am mic, rapper haued 2 för 1 – happy hour',\n", + " 'neue scheiss, metzger-aura – löiefleisch',\n", + " 'miks esch back, 041, voll de hype',\n", + " 'perino beat, fegg de rescht',\n", + " 'jetz esch miksi back, dynamitflow',\n", + " 'stell de vödu chüel, mic-check, beastmode',\n", + " 'primakova brudi, falschi rolex',\n", + " 'hashtag am risse so wi coopsäck',\n", + " 'miksi back, mer holed glii gold',\n", + " 'stell de vödu chüel, mic-check, beastmode',\n", + " 'bombe bro, check de monster-flow',\n", + " 'zinédine zidane, michael jordan-mode',\n", + " 'mettelfenger för dä staat',\n", + " 'homie fegg uf was dä psycho wott',\n", + " 'ech bliib lieber broke rapper als en bürojob',\n", + " 'fuck, ech dänke so scho sett em erschte open-mic',\n", + " 'wenns mol nömm so klappt, de machi doppeläbe, walter white',\n", + " 's esch e iischalti wält, mer lönd üs ischalte, uschalte',\n", + " 'chli bhalte, ine schablone drifalte',\n", + " 'abgränze man sie chönd üs im striit bhalte',\n", + " 'domm bhalte, ziitalter vo ilänker',\n", + " 'jo-säger ond chliidänker',\n", + " 'd wält do esch ned fair man, doch was wer dis gejommer nötze',\n", + " 'ech ha ned laufe glehrt, dass ech mech s läbe lang moss böcke',\n", + " 'chom vo onde brudi, straight us de onderschecht',\n", + " 'crazy uf 100 bitch, schreis döre onterrecht',\n", + " 'mer esch doch egal, homie, was dini kollege losed',\n", + " 'das send goaner-boys, omarmer, met trompetehose',\n", + " 'check die bitches gänd sech miksi uf de pc-boxe',\n", + " 'rapper chratzed ab so wie de tesch uf üsem wg-bode',\n", + " 'wo sell ech afange, ch-rap esch hangeblobe',\n", + " 'so we dini vorhut inere zahnspange',\n", + " 's ged totalschade, kollateralschade',\n", + " 'be voll uf vödu imne fucking porzellan-lade',\n", + " 'das esch agebore, mer send karnivore',\n", + " 'du chonsch gratis ad parties, well du machsch d garderobe',\n", + " 'ond jetz schreit jedi: „log är esch romantisch, är esch playa-daddy“',\n", + " 'zom wexxe los ech katy perry',\n", + " 'boy',\n", + " 'party, party, party, party',\n", + " 'party, party, gangbang-party',\n", + " 'party, party, heiße party',\n", + " 'ghetto-bitch, spreiz die beine!',\n", + " 'party, party, heiße party',\n", + " 'party, party, gangbang-party',\n", + " 'party, party, heiße party',\n", + " 'ghetto-bitch, spreiz die beine!',\n", + " 'party, party, party, party',\n", + " \"der club ist voller mädchen, baby, heute wird's versaut\",\n", + " 'ich bin übermotiviert, ladys, holt die titten raus',\n", + " \"bounce, bounce zu dem bass, shake dein'n arsch-bubblebutt\",\n", + " 'hier geht die party richtig ab, zweihundert frauen sind hier nackt',\n", + " 'ich bin gentleman und halte deine haare, wenn du kotzt',\n", + " \"mach 'nen dreier auf'm klo, dein freund hat dich davor geboxt\",\n", + " 'meine nase ist verstopft, bin nur am ballern und ballern',\n", + " \"und seh' die girls, wie sie tanzen, ich will rattern und rattern\",\n", + " 'pa-party, party, gangbang-party',\n", + " 'party, party, heiße party (ladies night)',\n", + " 'ghetto-bitch, spreiz die beine!',\n", + " 'party, party, heiße party (ladies night)',\n", + " 'party, party, gangbang-party',\n", + " 'party, party, heiße party (ladies night)',\n", + " 'party-bitch, spreiz die beine!',\n", + " 'party, party, party, party',\n", + " 'der club ist mein zuhause, ich kenne keine pause',\n", + " 'jede nacht ladies night, um mich eine traube',\n", + " \"doppeldeckerfick, was für ein arsch in mei'm gesicht\",\n", + " 'gangbang-party, hier wird tag und nacht gefickt',\n", + " 'alle ladys (alle ladys) shaken ihre pussy',\n", + " \"geb' 'nen fick auf monogam, bitch, ich checke jede tussi\",\n", + " \"daddy-fetisch, baby, diese ladys nenn'n mich vati\",\n", + " 'alle sind willkommen zu dieser wilden party',\n", + " 'pa-party, party, gangbang-party',\n", + " 'party, party, heiße party (ladies night)',\n", + " 'ghetto-bitch, spreiz die beine!',\n", + " 'party, party, heiße party (ladies night)',\n", + " 'party, party, gangbang-party',\n", + " 'party, party, heiße party (ladies night)',\n", + " 'party-bitch, spreiz die beine!',\n", + " 'party, party, party, party (ladies night)',\n", + " 'pa-party, party, gangbang-party',\n", + " 'party, party, heiße party (ladies night)',\n", + " 'ghetto-bitch, spreiz die beine!',\n", + " 'party, party, heiße party (ladies night)',\n", + " 'party, party, gangbang-party',\n", + " 'party, party, heiße party (ladies night)',\n", + " 'party-bitch, spreiz die beine!',\n", + " 'party, party, party, party (ladies night)',\n", + " 'a wich little boy mi hear no like we',\n", + " 'wer',\n", + " 'a wich fassyhole mi hear a chad wi',\n", + " 'awhoo',\n", + " 'a wich ina mill mi hear no like we',\n", + " 'tell them come after wi name and low we',\n", + " 'after now we mek dem pitney a dead fi hungry',\n", + " 'come afer we name and low we',\n", + " 'after now we mek capleton bun dem daily',\n", + " 'bun dem out dem done get banned me beat dem up',\n", + " 'rubbish band mi broke the food pup the hand',\n", + " \"left the and gone to man can't comepare\",\n", + " 'with elephant man the girl them mi them number one',\n", + " 'gimme patsy gimme pam reva road all night long worster',\n", + " 'than a stallion mek she ball fi belly bottom elephant man',\n", + " 'and flames the don you know we are the number one',\n", + " 'girl them say them love slang when them see mi sing that one',\n", + " 'here number one pon the billboard ha',\n", + " 'selbst deine mutter hört meine stimme und schmilzt',\n", + " 'direkt wie butter kann dir sagen wie nass deiner',\n", + " 'freundin ihre futt war erst gesern abend haben',\n", + " 'wir uns beschnuppert und sie nennt mich ihren braunen zucker',\n", + " 'guckmal du hast einen gut bezahlten job als drucker trozdem',\n", + " 'zieht deine chica lieber an meiner hukka sie braucht mich wie',\n", + " 'ich mein hirnfutter und du stinkst immer noch wie ein fischkutter',\n", + " 'elephant man the dapper and mr. flamez the big pappa',\n", + " 'mek girl sit down ina me lappa elephant the dapper',\n", + " 'and mr.flamez the big papa and the girl them say we are them slappa',\n", + " 'elephant man the dapa and mr flamez the big papa',\n", + " 'yes we work the girl dem proper',\n", + " 'elephant man the dapa and mr.flamez the big papa',\n", + " 'mek girl bust like fire ey so mi say',\n", + " 'a wich fassyhole mi hear no like we a wich ina mill',\n", + " 'mi hear a chad we a which little boy we hear',\n", + " 'no like we tell them come after we name',\n", + " 'and low we you know after now we mek them pitney a dead',\n", + " 'fi hungry come after we name and low we after now we mek greed',\n", + " 'and no follow them monthly ey mr.flamez dj',\n", + " 'sogar ihr vater liebt meinen style und wär gern mein papa',\n", + " 'vercheckt seine plattensammlung inklusive abba',\n", + " 'trägt aufeinmal trainingsanzüge von kappa',\n", + " 'und sieht jetzt lieber yo statt tappert',\n", + " 'bun dem out dem done get banned',\n", + " 'me beat dem up rubbish band',\n", + " 'mi broke the food pup the hand',\n", + " \"left the and gone to man can't comepare with elephant man\",\n", + " 'the girl them mi them number one gimme patsy',\n", + " 'gimme pam reva road all night long worster than a stallion',\n", + " 'mek she ball fi belly bottom elephant man',\n", + " 'and flames the don bring it to me number one',\n", + " 'and this is a billboard song e',\n", + " 'verywhere we go the girl them say elephant and flamez',\n", + " 'a which little fool mi hear no like we wer',\n", + " 'a which posse yes neva rait we awhooo',\n", + " 'a which little boy mi hear a chad we',\n", + " 'tell them come after we name and low we',\n", + " 'after now we mek the pitney a dead fi hungry',\n", + " 'come after we name and low we',\n", + " 'after now we mek greed and na follow them monthly',\n", + " 'come after we name and low we',\n", + " 'after now we mek capleton a bun dem daily',\n", + " 'come after we name and low we',\n", + " 'after now we mek them album na sell grammy',\n", + " 'come after we name and low we',\n", + " 'geschnatter hinter seinem rücken ist ihm egal weil die kacker',\n", + " 'im leben eh nicht weiterkommen als packer',\n", + " 'während er im wohnzimmer meine texte nachblappert',\n", + " 'will die tochter das ich an der brust knabber',\n", + " 'tell them say no fight it when that tune here bust',\n", + " 'mi sey nobody fi stop it',\n", + " 'elephant man flamez the whole city we lock it',\n", + " 'stage show keep on all the club them jampacked',\n", + " 'yo cool platinum we a go sell it ice pun mi hand',\n", + " 'and mi no see nobody fi melt it',\n", + " 'love fi dee the girl them ina leather and velvet',\n", + " 'and you know se that elephant man',\n", + " 'hafi you know se mi want hold her and date it',\n", + " 'a which fassyhole',\n", + " 'welcome back to hollywood die hood wo dreame dien',\n", + " 'ertränke mich im mollyfluss und niemand hört mein cryen',\n", + " 'enter the void das dmt im system',\n", + " 'rabbit frank my trippy freund, eat vom tree of wisdom',\n", + " 'skate den boulevard entlang mdma fucked ma brain',\n", + " 'sehe stars over all speake nicht vom walk of fame',\n", + " 'nah ich schwebe higher als der gottverdammte birdman',\n", + " 'fuck auf gravity zieh interstellar ne line mit kurt cobain',\n", + " 'nightly grind paranoid park play das game of trap',\n", + " 'tick an larry clarks kids seven kilo crack',\n", + " 'feel mich wie heath ledger searche nach dem exit',\n", + " 'doch sin city catched ya und ich make den backflip',\n", + " 'oh captain my captain lead me to the dark side',\n", + " 'overdosis mollywood suicide im starlight',\n", + " 'streichle mit dem butterfly die goldbesetzte artery',\n", + " 'dazed and confuzed on my wave to harmony',\n", + " 'breakfast at tiffanys diamanten robbery',\n", + " 'ryan gosling holt mich ab verfolgt von math mcconaughey',\n", + " 'der true detective will mein blood catch me if you can',\n", + " 'flyn übern mullholland drive im delorean',\n", + " 'luxusvilla hollywoodhills swaglevel great gatsby',\n", + " 'coaste über pools of pills auf nem faded jetski',\n", + " 'vip parties doch ich move zum kfc',\n", + " 'teile mir die hotwings mit homeboy kevin spacey',\n", + " 'smoke danach mit james franco pineapple express',\n", + " 'kiss im rausch der feelings chloe grace moretz',\n", + " 'stepp mit ihr ins moonrise kingdom wo ich ihr die unschuld steale',\n", + " 'schenk ihr ne versacce chain als zeichen unsrer großen liebe',\n", + " 'stunte mit den droogs die korova milkbar',\n", + " 'sippen aus den boobs emma stones milk rar',\n", + " 'gangsign flash bmg gold an meinem finger',\n", + " 'i‘m the lord of the rings shawtys marla singer',\n", + " 'king der skreetz wie scarface drive fast im fieber',\n", + " 'ein illegales car race versus justin bieber',\n", + " 'look wie ich im aston cruise mehr style als james bond',\n", + " 'drive- by shooting treff tom cruise hat eh nichts gekonnt',\n", + " 'oh captain my captain lead me to the dark side',\n", + " 'overdosis mollywood suicide im starlight',\n", + " 'streichle mit dem butterfly die goldbesetzte artery',\n", + " 'dazed and confuzed on my wave to harmoney',\n", + " 'wandle als the walking dead on the lost highway',\n", + " 'all the fame maked mich mad dream of keira knightley',\n", + " 'turn erfüllt mit codein auf dem crystal blue up',\n", + " 'kann mein face nicht mehr feeln gelähmt wie kristen stewart',\n", + " 'spiel mir selbst das lied vom tod fuck sergio leone',\n", + " 'es handlet over mollywood die hood in der ich wohne',\n", + " 'sie maked aus mir ein mad demon meine nicht den actor',\n", + " 'eher so ein psychopath im stil of hannibal lecter',\n", + " 'live den california dream a nightmare on elm street',\n", + " 'die younger als james dean bitches trauern - verdient',\n", + " 'slide the last time auf dem hoverboard am sunset strip',\n", + " 'join den fight club werd ausgeknockt von brad pitt',\n", + " 'crawle durch die night sadder als bill murray',\n", + " 'will nur weg into the wild die-en without worry',\n", + " 'benebelt vom meskalin im sog der roten lichter',\n", + " 'folg ich mr keating in den club der toten dichter',\n", + " 'also',\n", + " 'i don‘t know about',\n", + " 'it‘s gonna be a very interesting time',\n", + " 'it‘s gonna be a long way',\n", + " 'but it‘s all wrong',\n", + " \"doesn't matter\",\n", + " 'wir tanzten einen sommer',\n", + " 'und ich war so oft, erschien es mir',\n", + " 'einen herzschlag lang so nah bei dir',\n", + " 'zeichen sehen, zeit verstehen',\n", + " 'über alle grenzen gehen',\n", + " 'und nichts war mir fremd an dir',\n", + " 'but everybody kept on sayin’',\n", + " 'watch i take your time',\n", + " 'but we won’t give up',\n", + " 'we won’t give in',\n", + " 'won’t give it all away',\n", + " 'no way to stay',\n", + " 'cause the spirit never dies',\n", + " 'we last forever',\n", + " 'spirit never dies',\n", + " 'we last forever',\n", + " 'too late – too late',\n", + " 'the spirit never dies',\n", + " 'we last forever',\n", + " 'the spirit never dies',\n", + " 'we last forever',\n", + " 'auf der suche nach dem sinn',\n", + " 'führten wir sie dahin',\n", + " 'kiss you goodbye',\n", + " 'wir bieten ton um ton',\n", + " 'imagination',\n", + " 'there’s nothing',\n", + " 'there’s nothing to tell about it',\n", + " 'but everybody kept on sayin’',\n", + " 'watch i i take your time',\n", + " 'but we won’t give up',\n", + " 'we won’t give in',\n", + " 'won’t give it all away',\n", + " 'shrazy records',\n", + " 'another fatrider production',\n", + " 'get crunk to this',\n", + " 'is about a girl real aguly right now',\n", + " 'yeah!',\n", + " 'what we will do about right now is...',\n", + " 'what we gone do',\n", + " 'we get crunk in this motherfucking',\n", + " 'you feel me?',\n", + " \"dj score what's happenin' baby?\",\n", + " \"it's nottin'\",\n", + " 'you let it gone',\n", + " 'stomp in this motherfucker',\n", + " 'stomp in this motherfucker',\n", + " \"all my niggas gettin' crunk in this motherfucker\",\n", + " 'and all you haters better get up quick',\n", + " 'before these guns get you shot up quick',\n", + " '(ahhhhhhhhhhhhh)',\n", + " '(yeaaaaaaaaahhhh!!!!!)',\n", + " 'who is in here?',\n", + " 'wer war das man?',\n", + " 'manuell smooth the hustla',\n", + " 'shit is deluxe motherfucker,ich unterschreibe kein dreck',\n", + " 'deswegen siehst du mich in deinem club mit diamonds on my neck',\n", + " '(yeaaaaaaaaahhhh!!!!!)',\n", + " 'ich hab a lot den plan',\n", + " 'und bin für eure bitches,sowas wie die offenbarung',\n", + " 'und ihr seit nur fake poser',\n", + " 'ich tanz nich im club',\n", + " 'i lean back and i am shake my shoulder',\n", + " '(yeaaaaaaaaahhhh!!!!!)',\n", + " 'ich spitt straight zum beat',\n", + " 'ihr ganzen affen könnt m nicht sehen wie paytv',\n", + " 'und jetzt feiert dieses hood tape',\n", + " 'und seitdem bin ich der erste deutsche rapper,der jetzt deutsch in der hood trägt',\n", + " '(yeaaaaaaaaahhhh!!!!!)',\n", + " 'werft eure cappies hoch',\n", + " 'zeigt mir was ihr represented!',\n", + " 'kommt,kommt!',\n", + " 'zeigt mir was ihr represented!',\n", + " 'werft eure ketten hoch',\n", + " 'zeigt mir was ihr represented!',\n", + " 'kommt,kommt!',\n", + " 'zeigt mir was ihr represented!',\n", + " '(aaaaaahhhhhhh)',\n", + " '(yeaaaaaaaaahhhh!!!!!)',\n", + " \"i'm back added\",\n", + " 'pure crack in the kitchen',\n", + " 'manuellsen is back to business',\n", + " \"ich halt es crunk from the floor to the sealin'\",\n", + " 'and the whole crowd screaming :',\n", + " '\"der pott is in nem building!\"',\n", + " 'soulcase made it happen',\n", + " 'score put it on',\n", + " 'manuell steigt in den pott zu dem dawn',\n", + " 'deutschland!what the fuck is up?',\n", + " 'deutschland is im club und ich fackel ihn ab',\n", + " 'duisburg motherfucker,halten two guns up!',\n", + " 'essen city motherfucker,halten two guns up!',\n", + " 'gelsenkirchen,bochum,halten two guns up!',\n", + " 'mühlheim city,oberhausen,halten two guns up!',\n", + " 'yeah!',\n", + " 'yeah!',\n", + " 'now you know what the fuck is up!',\n", + " 'soulcase made it happen and score put it on!',\n", + " \"it's nothing baby!\",\n", + " 'your boy manuellsen',\n", + " 'ruhrpott stand up!',\n", + " 'your prestige stand up to this!',\n", + " 'exabition motherfucker stand up to this!',\n", + " 'mondiao motherfucker stand up to this!',\n", + " 'alle clubs in deutschland stand up to this!',\n", + " '„sommer',\n", + " 'über den dächern meiner stadt riecht die luft nach marihuana“',\n", + " '\"really good, ah, who dis?\"',\n", + " '\"you neva heard about bonez mc and raf camora?\"',\n", + " '\"pussyclaat, german dancehall?\"',\n", + " '\"but me neva know dem dancehall ting a gwaan a germany. in germany a this is mad, man. dem sound like mavado and kartel.\"',\n", + " '\"me nah go tell you like.\"',\n", + " '\"weh deh talking? who dem name again?\"',\n", + " '\"it\\'s bonez mc and raf camora!\"',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " \"der weedman, du siehst mich immer mit 'ner dicken kiffkeule\",\n", + " \"ich lauf' durch mein viertel mit den knospen und mach' dick beute\",\n", + " \"bald besitz' ich coffeeshops wie die fette von disjointed\",\n", + " 'ich und deine mutter, wir sind fickfreunde, ah',\n", + " 'sie kommt vorbei, wenn dein vater grad bei der arbeit ist',\n", + " \"und nach dem sex erzählt sie mir, was ihr sohn für'n versager ist\",\n", + " \"direkt aus'm underground, spitte tracks wie 'ne panzerfaust\",\n", + " \"ihr mumblerapper klingt so, als hättet ihr 'n dicken schwanz im maul\",\n", + " 'mir scheißegal, was du für hazesorten hast',\n", + " \"ich rauch' , crack oder babatz\",\n", + " \"ich hab' auf labels gekackt, weil das game fuckt mich ab\",\n", + " \"ich stopf' so viel gras rein, dass das paper fast platzt, ah\",\n", + " 'deine slut hat sich grade auf meinen sack gesetzt',\n", + " 'hartzig, dass das weed sich schwerer cutten lässt',\n", + " 'früher war es maskenrap, heute ist es afrotrap',\n", + " 'ihr habt nix zu melden, weil ihr spasten alle kacke rappt',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " \"look! it's the machine, the most honorable (uh)\",\n", + " \"you ain't shit to me, nigga, i'll let your mama know (i'll tell her)\",\n", + " \"see that black van on your block, drivin' slow\",\n", + " 'hit the lights, doors slide open and that line will blow (prrt)',\n", + " 'money trees in my yard, i watch my dollars grow (cash)',\n", + " \"say what you want, my bank account got two commas though (eatin', nigga)\",\n", + " \"i'm that nigga you gotta know\",\n", + " 'gucci pajamas, my young pics look like rihanna though (hah)',\n", + " \"ayy, i'm just here to apply pressure (uh-huh)\",\n", + " \"i drop classics and ain't apply effort (that shit was light)\",\n", + " \"with the pitches, i score just like i'm clyde drexler (cash)\",\n", + " 'left the club i got my dick sucked in my tesla (hahaha)',\n", + " 'i made myself a boss nigga (cash)',\n", + " \"i greenlight it, you gettin' off, nigga (brrt, brrt)\",\n", + " 'ha, my young boy is kinda off, nigga (yeah)',\n", + " \"snortin' raw, squeezin' ar triggers\",\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " \"äh, ich versteh' nicht, was das vocalsample sagt\",\n", + " \"aber hätt's mich intressiert, hätt ich den produzent gefragt, ey yo\",\n", + " 'ihr denkt, ich wär abgehoben, ist okay so',\n", + " 'ich bin für euch so wie j.lo, nur ein prominenter arsch',\n", + " 'halbes kilo für den verse, das sind drogenhändler-bars',\n", + " \"ich trag' keine skinnyjeans, hab' den modetrend verpasst\",\n", + " 'baute monumente ohne ende, flowlegende, buzz',\n", + " \"ich renn' in die bank mit fingerknarre, hoch die hände – spaß\",\n", + " 'zweckreimsucher, stressfrei, bruder',\n", + " \"westside-2pac, brech' bei dir ein, hack' dein'n computer\",\n", + " 'ich bin dreist, digga, drei zehner, livespitter, mein blick, er',\n", + " 'bleibt immer zwei schritte allen voraus, sei sicher',\n", + " '*hust, hust*, ich hatte schon raucherhusten',\n", + " \"vor mein'n ersten laufversuchen, doktor kommt zuhaus besuchen\",\n", + " \"ich bedrohte mein'n finanzberater, so wie gunplay\",\n", + " 'jetzt gucken mich leute dafür schief an, so wie conway',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'the coke is up, so now',\n", + " 'and the vegans got the game in the cobra clutch',\n", + " 'i just killed two cops today',\n", + " 'they wanna smoke my ganja',\n", + " 'they wanna smoke my ganja',\n", + " 'hundred million hoes look out for me, look out for me, look out for me',\n", + " 'cause i sell them the best motherfucking',\n", + " 'ey alles ist wie immer',\n", + " 'wir laufen durch die nacht',\n", + " 'große augen und hellwach',\n", + " 'fliegen raus aus jedem pub',\n", + " 'fuck, sorry, in den taschen keine cent',\n", + " 'ich geh später mit der flex an das dach von meinem benz',\n", + " 'also steig ein in mein cabrio',\n", + " 'party, yo',\n", + " '300 km/h und so',\n", + " 'ne nase coke von pablo holen, tradition',\n", + " 'leichtes abendrot',\n", + " 'wir fahren ein paar nazis tot',\n", + " 'saufen in der stadt und danach sind alle bars leer, so wie mario',\n", + " 'und schon wieder suchen sie mich',\n", + " 'es liegen tote bullen auf der route 66',\n", + " 'ey sorry, das liegt nicht an den pillen',\n", + " 'gott hat mir gesagt: \"mein sohn, schieß auf wen du willst\"',\n", + " 'i just killed two cops today',\n", + " 'they wanna smoke my ganja',\n", + " 'they wanna smoke my ganja',\n", + " 'hundred million hoes look out for me, look out for me, look out for me',\n", + " 'cause i sell them the best motherfucking',\n", + " 'ihr sauft auf dem oktoberfest, steht alle unter drogen',\n", + " 'doch wenn ich mir einen joint rauch, kommen gleich kriminologen',\n", + " 'wir werden hier regiert von hinterwäldlern und idioten',\n", + " 'apropos, in meinem haus steht noch ein bett für edward snowden',\n", + " 'das hier ist für alle meine grasticker im bau',\n", + " 'ich buff einen für euch und hoff ihr kommt schnellstens wieder raus',\n", + " 'ich war schon hundert mal beim arbeitsamt und sagte dem berater',\n", + " '\"ey, ging\\'s nach mir, dann wär ich doch schon längst cannabisfarmer\"',\n", + " 'und schon wieder suchen sie mich',\n", + " 'es liegen tote bullen auf der route 66',\n", + " 'ey sorry, regt euch ab, chillt',\n", + " 'ich mach das alles nur, weil satan das so will',\n", + " 'i just killed two cops today',\n", + " 'they wanna smoke my ganja',\n", + " 'they wanna smoke my ganja',\n", + " 'hundred million hoes look out for me, look out for me, look out for me',\n", + " 'cause i sell them the best motherfucking',\n", + " 'a this a racist cop, this a racist from sachsen-anhalt or what',\n", + " \"i don't came all the way from jamaica just to see some racist cop from sachsen-anhalt here shooting on our ass. you better watch out man. shoot him in the dick, shoot him in the head. gimme the gun. gimme the gun i gonna shoot the shit outta his motherfucking face\",\n", + " 'i will shoot him in the ass. you fucking asshole, white chichiman cop',\n", + " 'easy man, easy. back up. back up',\n", + " 'i just killed two cops today',\n", + " 'they wanna smoke my ganja',\n", + " 'they wanna smoke my ganja',\n", + " 'hundred million hoes look out for me, look out for me, look out for me',\n", + " 'cause i sell them the best motherfucking',\n", + " '955 label squad',\n", + " \"i'm feeling so crazy tonight, yea-yeah, yeah\",\n", + " 'yeah, yeah, yeah',\n", + " \"i'm feeling so crazy tonight, yea-yeah, yeah\",\n", + " 'yeah, yeah, yeah',\n", + " 'i feel so crazy, so crazy, tonight',\n", + " 'yeah, yeah, yeah',\n", + " 'i feel so crazy, so crazy tonight',\n", + " 'i feel so crazy, so crazy tonight',\n", + " 'je suis, je suis, je suis, je suis, je suis perdue!',\n", + " 'je suis, je suis, je suis, je suis, je suis perdue!',\n", + " \"ich hab' noch nichts vor heute nacht, und was machst du?\",\n", + " \"ich hab' noch nichts vor heute nacht, und was machst du?\",\n", + " \"ich bin jemand and'res heut' nacht, arthur rimbaud\",\n", + " \"ich bin jemand and'res heut' nacht, arthur rimbaud\",\n", + " 'mon cheri, mon cheri, mon cheri (mon cheri)',\n", + " 'come with me, come with me, come with me (come with me)',\n", + " \"komm spazieren geeehn', avec moi (avec moi)\",\n", + " 'mon cheri, mon cheri, mon cheri (mon cheri)',\n", + " 'come with me, come with me, come with me (come with me)',\n", + " \"komm spazieren geeehn', avec moi (avec moi)\",\n", + " 'eine kleine liaison mit champagner und croissant',\n", + " 'und mein don ist perignon - merci de rien! ah',\n", + " 'merci de rien! ah ah',\n", + " 'eine kleine liaison mit champagner und croissant',\n", + " 'und mein don ist perignon - merci de rien! ah',\n", + " 'merci de rien! ah ah',\n", + " \"ich hab' noch nichts vor heute nacht, und was machst du?\",\n", + " \"ich hab' noch nichts vor heute nacht, und was machst du?\",\n", + " \"ich bin jemand and'res heut' nacht, arthur rimbaud\",\n", + " \"ich bin jemand and'res heut' nacht, arthur rimbaud\",\n", + " 'i feel so crazy, so crazy tonight',\n", + " 'i feel so crazy, so crazy tonight',\n", + " 'je suis, je suis, je suis, je suis, je suis perdue!',\n", + " 'je suis, je suis, je suis, je suis, je suis perdue!',\n", + " 'das gaht a d‘lifestyler - das gaht a d‘updater',\n", + " 'das gaht a d‘first-class - das gaht a d‘upgrader',\n", + " 'a all opinion-leader - a all die trendy hipster',\n", + " 'a all die shitstormer und all die fashion-victims',\n", + " 'news poste - brainstorme - friends-like - car-leasing',\n", + " 'last-minute - ichecke - abchille – nachem meeting',\n", + " 'm**** - one-night-stand - overdressed – nightlife',\n", + " 'burnout - open end - hangover - high-five',\n", + " 'ziend wiiter, doch ohni mich',\n", + " 'es isch schaad, münder ändli gah',\n", + " 'ihr chönd mir all mal, wo d`sunne nie schiint',\n", + " 'deet hätts e nachricht und druff staht:',\n", + " 'ja, ja vilicht morn dänn',\n", + " 'mached ihr ruhig nochli wiiter - wiiter eso',\n", + " 'und falls öpper frögt - säg, ich seg churz wäg',\n", + " 'und tanz tango hindrem mond',\n", + " 'ja, ja vilicht morn dänn',\n", + " 'mached ihr ruhig nochli wiiter - wiiter eso',\n", + " 'und falls öpper frögt - säg, ich seg churz wäg',\n", + " 'und tanz tango hindrem mond',\n", + " 'ja, ja vilicht morn dänn',\n", + " 'das gaht a d‘cybermobber - das gaht a d‘high potentials',\n", + " 'das gaht a d‘gadget-nerds - mit tightem timeschedule',\n", + " 'a all die networkers - a all die powernapper',\n", + " 'must haver, insider, key-accounter, trendsetter',\n", + " 'outdoor-brunche - indoor-skateä - \"sch***\" to-do-list checke',\n", + " 'smartphone-power - mailserver - bluetooth connecte',\n", + " 'eye-catcher - google-maps - management outsource',\n", + " 'last but not least favourites save und supporte',\n", + " 'ja, ja vilicht morn dänn',\n", + " 'ja, ja vilicht morn dänn',\n", + " 'ja, ja, ja, ja vilicht morn dänn',\n", + " 'aber hütt gsehni schwarz',\n", + " 'ja, ja vilicht morn dänn',\n", + " 'ja, ja vilicht morn dänn',\n", + " 'ja, ja, ja, ja vilicht morn dänn',\n", + " 'aber hüt muess i gah',\n", + " '10, 9, 8, 7, 6, 5, 4, 3, 2, 1',\n", + " 'mary jane',\n", + " 'white widow',\n", + " 'purple haze',\n", + " 'orange bud',\n", + " 'northern lights',\n", + " 'k2',\n", + " 'super skunk',\n", + " 'knockout',\n", + " 'crystal',\n", + " \"shiva shiva, y'all\",\n", + " 'schneewittchen',\n", + " 'marihu...',\n", + " 'afghan skunk',\n", + " 'ganja',\n", + " 'elephant',\n", + " 'magic',\n", + " 'hallo, hallo, hallo! halloziehnation!',\n", + " 'folg rapgeniusdeutschland!',\n", + " 'yeah',\n", + " 'got a half zone and a half cut',\n", + " 'the white pony, i passed up',\n", + " 'stay cashed up, i gotta do it',\n", + " 'left it in the few that i snatched up',\n", + " 'now i got eighth, ninth wonder',\n", + " \"stay on top, i don't like under\",\n", + " 'get my attention, small chance',\n", + " 'might look your way, for that right number',\n", + " 'got a small set with all vets',\n", + " 'apartment block to the projects',\n", + " 'all sick, used to cause wreck',\n", + " 'now bars spit got us on deck',\n", + " \"it's that blood sweat, tree snow\",\n", + " 'all hustle, no sleep, no',\n", + " 'mind your business and keep low',\n", + " 'live and die by that g code',\n", + " 'now we made a name, but fuck fame',\n", + " \"i'm just blessed, that my luck changed\",\n", + " 'i can touch the world, when i jump planes',\n", + " 'reach the hoodlums that run sane',\n", + " \"'cause we a-like, g like, sick, starving that be your life\",\n", + " 'kid right like that g white',\n", + " 'and get crowned king when you see the light',\n", + " 'we must shock the bass, turn up the bass',\n", + " \"motherfucker, i'm ill\",\n", + " '(yeah)',\n", + " \"it's go time\",\n", + " 'we must shock the bass, turn up the bass',\n", + " \"motherfucker, i'm ill\",\n", + " '(yeah)',\n", + " \"it's go time\",\n", + " 'wieder einer dieser tage',\n", + " 'spüre meine inneren dämonen, die mich jagen',\n", + " 'weil meine haut mir zu eng wird schizophrenie',\n", + " ...]},\n", + " 'data': [\"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", + " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", + " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", + " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle\",\n", + " \"ich schlafe schlecht, liegt am stress, doch ich träum' trotzdem, versuch' den alptraum zu vergessen, den wir ständig ängstlich leben\",\n", + " 'ohne visionen, perspektiven, relationen. die einen ganz weit unten, andere ganz weit oben',\n", + " \"ich weiss, wo liebe fehlt, ist der hass nicht weit. ich hab' geträumt, die zeit wär' reif und dass der hass nicht bleibt\",\n", + " \"ich hab' geträumt, jeder wär' fair, es gäb' keinen neid, keinen fight, wir hätten's fast erreicht zu fühlen, alle sind gleich\",\n", + " 'doch wir sind gefangen im loop der welt, zwischen blut und geld. gedanken an die zukunft quälen',\n", + " \"ich huste gelb, das alles fickt meinen kopf. es macht mich krank, doch ich geb' alles, was ich kann, und box'\",\n", + " \"das leben ist dreckig, was ich sehe, ist oftmals hässlich. und glaubt mir, ich ertrag's nur durch träumen, mein freund!\",\n", + " \"aber alles ist gut, denn ich bleib' dabei, fixier' mein ziel, setz' mich ein und ich denk' mich frei\",\n", + " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", + " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", + " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", + " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", + " 'i had a dream that one day the fake would face truth',\n", + " 'so i serve you reality so you can taste proof',\n", + " 'everybody wants to rap, from new york to germany',\n", + " \"and all you jealouse cats got notions of burnin' me\",\n", + " \"but i'm not concerned with your weak mentality\",\n", + " \"my pen got passion, it ain't about salary\",\n", + " 'and normally i make myself clear',\n", + " \"if i get quiet for a moment then that's when you should fear\",\n", + " \"'cause that means i'm analyzing you\",\n", + " \"and recognize that i'm true 'cause i don't do what you do\",\n", + " 'i had a dream that hip-hop saved the world',\n", + " 'in every land expand, watch my plan unfurl',\n", + " \"i can't stop, won't stop until you get it right, get it tight\",\n", + " 'disrespect, probably get a fight',\n", + " \"but i'm not a violent brother by any means\",\n", + " \"i want what's best for the team, i see these things in my dream\",\n", + " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", + " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", + " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", + " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", + " \"ich hab' geträumt, dass wir uns blind verstehen, ich konnte mit den augen eines kindes sehen. die winde drehen\",\n", + " 'der winter geht, mit ihm der frust, die depression, der letzte goldene schuss, der letzte drogentote',\n", + " 'eltern sich kümmern, keinen missbrauch in kinderzimmern, städte nicht giftgrau, schmerzen zu lindern',\n", + " \"keine städte in trümmern, keinen, der sorgen hat. hab' geträumt, es gab keine morde für macht\",\n", + " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", + " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", + " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", + " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", + " '(x2)',\n", + " \"let's go\",\n", + " 'baby come with me, go',\n", + " 'cause we fit when we (ride out)',\n", + " 'you and me when we (ride out)',\n", + " 'baby, come',\n", + " \"look baby roll with a rider, girl it's nothing i'll drive ya\",\n", + " 'get in, fasten your buckle, leave them troubles behind ya',\n", + " \"leave them struggles, ain't trying to, knock your hustle, i'm trying\",\n", + " 'get your hand on some kind of diamond or custom designer',\n", + " \"you can jump in the , if you're hot with desire\",\n", + " 'why not jump out the skillet, jump right into the fire',\n", + " 'cause you know how i get it, love some louis attire',\n", + " \"we don't talk it we live it, yep,\",\n", + " 'this is all to these groupies, want to scoop me, i like her',\n", + " 'kind of flookie that move me, want to do me, i pipe her',\n", + " \"i ain't tripping or tricking, when i'm picking i'm choosing\",\n", + " \"hit the stripper, if she stripping, i'm taking from the fugees\",\n", + " \"love a woman that's winning, independently spending\",\n", + " 'run the house like she living, like she live with the simmons',\n", + " 'if she like it i love it, girl if you dug it i dig it',\n", + " 'hey, in private or public, girl this is just the beginning',\n", + " '(x2)',\n", + " \"let's go\",\n", + " 'baby come with me, go',\n", + " 'cause we fit when we (ride out)',\n", + " 'you and me when we (ride out)',\n", + " 'baby, come',\n", + " \"meine squaw is' 'ne ghetto-gringa\",\n", + " 'trägt nix, außer stringchucks und paar tattoos in schwarz',\n", + " 'bin ihr shadow-ninja, schleiche nachts in die suit',\n", + " \"tanz' halbnackt zu jay-z und puff' von mei'm weed, sie\",\n", + " 'ist verrückt nach mir, ich bin verrückt nach ihr',\n", + " 'weil sie, trotz schicki micki, dann im bett zur bitch mutiert',\n", + " \"leckt mit der zunge über's spliffpapier\",\n", + " 'bevor sie mir liebevoll den nächsten stick serviert',\n", + " 'puppe, du bist champions leauge, du bist mein starface',\n", + " 'meine nummer eins, lois lane, ich bin dein clark kent',\n", + " \"und ich mach' alles klar, was geht für dich\",\n", + " \"'n haufen ketten, einfach nur, weil du mein mädchen bist\",\n", + " \"genetikk-clique, sikk da kid is' zu dope, divas werden zu ho's\",\n", + " 'sie fressen mir aus der hand wie sikks kater auf youtube',\n", + " 'vaffanculo, karuzo, ich hab jetzt den wu-flow',\n", + " '(x2)',\n", + " \"let's go\",\n", + " 'baby come with me, go',\n", + " 'cause we fit when we (ride out)',\n", + " 'you and me when we (ride out)',\n", + " 'baby, come',\n", + " \"give me somethin'\",\n", + " \"i'm not selfish at all\",\n", + " \"don't be salty\",\n", + " 'i can give you all that you want',\n", + " \"give me somethin'\",\n", + " \"i'm not selfish at all\",\n", + " \"don't be salty (yeah)\",\n", + " 'i can give you all that you want (yeah, yeah)',\n", + " 'royce drop-top, biggie-vibes (ja)',\n", + " 'dresscode ist schwarz, doch die tasche voller farben',\n", + " \"girls in mei'm chat (ja), behandel' sie respektvoll\",\n", + " \"doch abends dirty sex (ja), filme in mei'm bett (ja)\",\n", + " \"körper so wie stassiebaby (wow), alles schon geseh'n\",\n", + " \"heutе flieg' ich um die welt, um das bеste mitzunehm'n (yeah)\",\n", + " 'paris-models (wow), l.a.-models (wow)',\n", + " 'london-models, gut vernetzt mit den babys',\n", + " 'foreign cars im farbton vanilla (skrrt)',\n", + " \"von 'nem dope-boy zum großunternehmer (ja)\",\n", + " 'halbe mio liegt im ankleidezimmer',\n", + " \"limited edition mit 'nem diamantenschimmer\",\n", + " 'hah, alles, was du willst',\n", + " 'too flossy, saucy, doch hunger nicht gestillt, ja',\n", + " 'es ist die aura, die bestimmt',\n", + " \"bad boy, young rich negro auf sei'm weg, ja\",\n", + " \"give me somethin'\",\n", + " \"i'm not selfish at all\",\n", + " \"don't be salty\",\n", + " 'i can give you all that you want',\n", + " \"give me somethin'\",\n", + " \"i'm not selfish at all\",\n", + " \"don't be salty\",\n", + " 'i can give you all that you want',\n", + " \"give me somethin' (ooh, baby, give me somethin')\",\n", + " \"i'm not selfish at all\",\n", + " \"don't be salty (mm, don't be salty )\",\n", + " 'i can give you all that you want',\n", + " \"give me somethin' (ooh, baby, give me somethin')\",\n", + " \"i'm not selfish at all\",\n", + " \"don't be salty (mm, don't be salty )\",\n", + " 'i can give you all that you want',\n", + " \"(ooh, baby, give me somethin')\",\n", + " 'flexrocks aus amsterdam, beifahrer ballermann',\n", + " \"(moneyrain soldier) zünd' blunts mit dollars an\",\n", + " \"motherfucker, das is' heavy-metal-shit (yeah)\",\n", + " \"leck' das flex von der sexy latin-chick (yeah)\",\n", + " \"(speedin') autobahn hundertachtzig im daimler-benz\",\n", + " '(kickdown) drückt dich in den sitz - private-dance',\n", + " '(highlife) ich kläre cheerleaderweiber (-weiber)',\n", + " \"die mannschaften animier'n wie fifa-designer (aha)\",\n", + " 'pulle die gun, rolle den blunt, puste den weedsmoke aus',\n", + " \"baller' den cops kugeln in kopf, pushe drei kilo staub\",\n", + " \"geh' von der stage, in der gucci jeans pariser\",\n", + " 'meine groupies sind latinas mit big bootys wie shakira',\n", + " \"hater seh'n zu wie ich kohle verdiene (yeah)\",\n", + " \"doch ich bleib' cool wie die ozeanbrise\",\n", + " 'brandneue prada sweater, strandbräune, hantelstämmer',\n", + " 'kollegah, bossplayer, gunläufe, holla at ya',\n", + " \"mach die lichter aus im club und ich trag' die ray-ban (ey)\",\n", + " \"tret' dir in den kopf, so wie jason statham (ey)\",\n", + " 'überhole cops in dem schwarzen cayman, entertainment (ey), ey yeah',\n", + " 'moneyra-a-a-a-ain (a-a-ain), moneyra-a-a-a-ain (a-a-ain)',\n", + " 'moneyra-a-a-a-ain (a-a-ain), moneyrain, a-a-ain',\n", + " 'rockstarmentalität, skandale live vom sunset (ey, ey, ey)',\n", + " \"durchdachtes business, bunker' ware bei dem bankchef (haha)\",\n", + " '(scotch on the rocks) eisgekühlter ballantines',\n", + " 'newschooloutfits im (oldschool chevy right',\n", + " 'business paris, beltic feeling, platinum work',\n", + " 'lade clips, gs werden weggeballert wie angry birds',\n", + " 'sex auf der street, im lamborghini mit fashiongirls)',\n", + " 'razzia im club, keine ahnung, wem das flex gehört',\n", + " \"ich geb' ein'n fick auf die hater, werf' noch ein blick auf den pager\",\n", + " 'kasachstan-dick in der bitch wie ich in dem business, player (ah)',\n", + " \"renn' die hood ab, säcke voller geld in dem benz gebunkert\",\n", + " \"(ice scheint) glänzende klunker, roll' in meiner town im sl600\",\n", + " 'gebe gas, bange sluts, first class, skyhigh (skyhigh)',\n", + " \"betrete das nightlife (nightlife), zieh' die ballermann, bye bye\",\n", + " \"motherfucker, mach' gitarren auf stages kaputt\",\n", + " \"geh' mit der ray ban in club (yeeeaaah)\",\n", + " \"mach die lichter aus im club und ich trag' die ray-ban (ey)\",\n", + " \"tret' dir in den kopf, so wie jason statham (ey)\",\n", + " 'überhole cops in dem schwarzen cayman, entertainment (ey), ey yeah',\n", + " 'moneyra-a-a-a-ain (a-a-ain), moneyra-a-a-a-ain (a-a-ain)',\n", + " 'moneyra-a-a-a-ain (a-a-ain), moneyrain, a-a-ain',\n", + " 'moneyra-a-a-a-ain (a-a-ain), moneyra-a-a-a-ain (a-a-ain)',\n", + " 'moneyra-a-a-a-ain (a-a-ain), moneyrain, a-a-ain',\n", + " 'moneyra-a-a-a-ain (a-a-ain), moneyra-a-a-a-ain (a-a-ain)',\n", + " 'moneyra-a-a-a-ain (a-a-ain), moneyrain, a-a-ain',\n", + " 'moneyra-a-a-a-ain (a-a-ain), moneyrain, a-a-ain',\n", + " \"i really thought we could've worked it out\",\n", + " 'even gave us the benefit of doubt',\n", + " \"but we couldn't stop playing around\",\n", + " \"didn't understand, but i do now\",\n", + " 'sometimes i wish that we could get it back',\n", + " 'because everyone deserves a second chance',\n", + " 'but we can never go back like that',\n", + " \"it's a shame how our good thing turned so bad\",\n", + " 'too bad, baby, so sad',\n", + " \"look at all that we could've had\",\n", + " 'just too bad',\n", + " 'yeah, zeig mir deine boobies, bitch, und jetzt dreh dich um',\n", + " \"zeig mir deinen booty, bitch, damn you're a cutie, bitch\",\n", + " 'scheiß auf die high school, ich geh auf die schule high',\n", + " 'wir sind auf derselben highschool - kooley high',\n", + " 'lass mich raten, wie du heißt, boo, cutie-pie?',\n", + " 'ich bin iced out, icecube, suit & tie',\n", + " \"what up bitch, how ya doin', ma?\",\n", + " \"ich hol dich ab, du kannst mit mir in die schule fahr'n\",\n", + " 'du bist heiß in deinem schulmädchen-outfit',\n", + " 'ich vertick den schulmädchen rauschgift',\n", + " 'scheiß auf die polizei, ich bin beim fbi',\n", + " 'female breast inspector - fbi',\n", + " \"i really thought we could've worked it out\",\n", + " 'even gave us the benefit of doubt',\n", + " \"but we couldn't stop playing around\",\n", + " \"didn't understand, but i do now\",\n", + " 'sometimes i wish that we could get it back',\n", + " 'because everyone deserves a second chance',\n", + " 'but we can never go back like that',\n", + " \"it's a shame how our good thing turned so bad\",\n", + " 'too bad, baby, so sad',\n", + " \"look at all that we could've had\",\n", + " 'just too bad',\n", + " 'scheiß auf all die anderen spießer in s.oliver',\n", + " 'ich hab immer bunte t-shirts an von hollister',\n", + " 'du hast leggings an und ugg boots',\n", + " 'what up, boo? - \"what up, dude?\"',\n", + " 'zeig mir deine titten, babe, und ich mach das motorboot',\n", + " '(wroooom) - ja so macht das motorboot',\n", + " 'ich steh auf chicks mit abercrombie-fitch hoodies',\n", + " 'applebottom jeans - big booties',\n", + " 'make-up von mac, rich cuties',\n", + " 'chicks, die mehr geld haben als ich, cutie',\n", + " 'ich bin verliebt in deine twit-pics und youtube-clips',\n", + " 'du weißt noch nicht wer ich bin, baby, google mich!',\n", + " \"i really thought we could've worked it out\",\n", + " 'even gave us the benefit of doubt',\n", + " \"but we couldn't stop playing around\",\n", + " \"didn't understand, but i do now\",\n", + " 'sometimes i wish that we could get it back',\n", + " 'because everyone deserves a second chance',\n", + " 'but we can never go back like that',\n", + " \"it's a shame how our good thing turned so bad\",\n", + " 'too bad, baby, so sad',\n", + " \"look at all that we could've had\",\n", + " 'just too bad',\n", + " 'just another day on this planet',\n", + " 'just another day on my road',\n", + " 'just another day on this planet',\n", + " 'just another day on my road',\n", + " \"there's so many things to aspire\",\n", + " \"there's so many things, things i don't know\",\n", + " 'meine roots san die steiamoak representing styria',\n", + " 'die berg und die sun, mhh des is superior',\n", + " 'da flow in da sproch, den gspiast du und den gspia i',\n", + " 'jo wia san die guaten, millions of dreads yeah we are',\n", + " 'wos suit ma wissen über gott und die wöd',\n", + " 'armut und reichtum, neid und göd',\n", + " 'und wer vadaumt nomoi, sogt ma wos i duan sui?',\n", + " 'wos suit ma ois für a launges lebn',\n", + " 'woast des du, faung aun zum reden',\n", + " 'wos suit ma sogn und wos ned',\n", + " 'sogts wos ihr wuits jetz wird gred',\n", + " 'just another day on this planet',\n", + " 'just another day on my road',\n", + " \"there's so many things to aspire\",\n", + " \"there's so many things, things i don't know\",\n", + " 'wenn i orweiten kann, wos i wü wos i mog',\n", + " 'wenn ma koana vorschreibt, wos i zum duan hob',\n", + " 'wenn i in da sun lieg, relax und entspaun',\n", + " 'mhhh daun fühl i mi so guad',\n", + " 'heit hot si ois scho wieda draht',\n", + " 'lost my sprit, i shall lost my heart',\n", + " 'owa muagn sog i da muagn',\n", + " \"geh i's wieda aun\",\n", + " 'millions of dreads, number one',\n", + " 'just another day on this planet',\n", + " 'just another day on my road',\n", + " \"there's so many things to aspire\",\n", + " \"there's so many things, things i don't know\",\n", + " 'just another day on this planet',\n", + " 'just another day on my road',\n", + " \"there's so many things to aspire\",\n", + " \"there's so many things, things i don't know\",\n", + " 'knooow, knooow.....',\n", + " 'just another day on this planet',\n", + " 'just another day on my road',\n", + " \"there's so many things to aspire\",\n", + " \"there's so many things, things i don't know\",\n", + " 'just another day on this planet',\n", + " 'just another day on my road',\n", + " \"there's so many things to aspire\",\n", + " \"there's so many things, things i don't know\",\n", + " 'just another day on this planet',\n", + " 'just another day on my road',\n", + " 'yeah, oh, this is raf camora longside gentleman, come on',\n", + " 'brighta days, check it out, wouh',\n", + " 'i carry wata to the roots, yeah',\n", + " \"i know where i am going 'cause i know where we all come from\",\n", + " 'tell me, who knows the truth yeah?',\n", + " 'everybody run, nobody know where we a run from',\n", + " \"ich komm' zurück in mein'n bezirk und weiß dann wieder, wohin es geht\",\n", + " \"so viel passiert, doch es bestimmt mein'n weg\",\n", + " 'sie schmieden pläne, aber alles fantasie hoch zehn',\n", + " \"schreiben mir auf insta, doch ich tu', als hätt' ich's nicht geseh'n\",\n", + " 'fühle mich bombe',\n", + " 'immer wieder nur auf tour mit der bande',\n", + " 'was laberst du mich zu, mein hombre?',\n", + " 'jaja, lass gut sein, danke',\n", + " 'wir sind weder brüder noch blutsverwandt',\n", + " 'ein gramm kokain und du wirst zur schlampe',\n", + " 'ich wusste, dass ich deine zukunft kannte',\n", + " 'was siehst du mich so an?',\n", + " \"okay, du ziehst 'ne gun\",\n", + " \"doch sie ist nicht gelad'n, du piç\",\n", + " 'kommst ohne munition, doch du erklärst mir den krieg',\n", + " 'i carry wata to the roots, yeah',\n", + " \"i know where i am going 'cause i know where we all come from\",\n", + " 'tell me, who knows the truth yeah?',\n", + " 'everybody run, nobody know where we a run from',\n", + " 'we got to overstand a man is just a man',\n", + " 'sometimes we right and sometimes wrong',\n", + " 'but we never ever forget our foundation',\n", + " 'come mek we shorten our future plans',\n", + " \"ich geb' nur herz für was ich liebe\",\n", + " \"wären es nicht hundert prozent, wär' dieser song eine intrige\",\n", + " \"1998 rauch' ich weed, im radio läuft „tabula rasa“\",\n", + " 'heut singt gentleman die hook, einfach unfassbar',\n", + " \"ich komm' zurück in mein'n bezirk, suche, was von damals hinterblieb'n ist\",\n", + " \"ess' mit denselben jungs im selben pizzaimbiss\",\n", + " 'sie schickt küsse, weil sie in mich verliebt ist',\n", + " 'doch ihre attitüde riecht nach business',\n", + " \"wo ich gewohnt hab', sorgten drogen für wohlstand\",\n", + " \"jetzt sing' ich nur „yo“ ins mikro und hol' meinen lohn ab\",\n", + " 'sie fragen nach der show nur, was ich verdiene',\n", + " \"komm'n mit messer und erzählen was von frieden\",\n", + " 'i carry wata to the roots, yeah',\n", + " \"i know where i am going 'cause i know where we all come from\",\n", + " 'tell me, who knows the truth yeah?',\n", + " 'everybody run, nobody know where we a run from',\n", + " 'we got to overstand a man is just a man',\n", + " 'sometimes we right and sometimes wrong',\n", + " 'but we never ever forget our foundation',\n", + " 'come mek we shorten our future plans',\n", + " \"ich geb' nur herz für was ich liebe\",\n", + " \"wären es nicht hundert prozent, wär' dieser song eine intrige\",\n", + " 'um mich herum kommerzpop auf bravo hits',\n", + " 'meine stimme, schock, höhenangst vor der perspektive',\n", + " 'too much confusion',\n", + " 'travel inna a place away from illusion',\n", + " 'so i put my shoes on',\n", + " 'never forget my roots when i move on',\n", + " \"can't put no blues on\",\n", + " 'everybody move fast, we just cruise on',\n", + " 'actions fi choose from',\n", + " 'here is the sound of the wickedest fusion',\n", + " 'never forget where we from',\n", + " 'while we are journeying throu the jungle of danger and temptation',\n", + " 'seh dem no second to none',\n", + " 'this is raf camora, gentleman, now what a musical explosion',\n", + " 'i carry wata to the roots, yeah',\n", + " \"i know where i am going 'cause i know where we all come from\",\n", + " 'tell me, who knows the truth yeah?',\n", + " 'everybody run, nobody know where we a run from',\n", + " 'we got to overstand a man is just a man',\n", + " 'sometimes we right and sometimes wrong',\n", + " 'but we never ever forget our foundation',\n", + " 'come mek we shorten our future plans',\n", + " 'dun know seh, we come a long way, we still around',\n", + " 'still a mek music',\n", + " 'a wha do dem man bomboclath',\n", + " 'see them silent now',\n", + " 'nothing left fi seh',\n", + " 'remember empty barrel mek di most noise enuh',\n", + " 'haha',\n", + " 'flizzy hält die smith & wesson wieder auf reload (reload)',\n", + " 'alles schauspieler-rapper, ihr seid daily-soap (daily-soap, ey)',\n", + " 'wenn wir kommen, siehst du kugeln fliegen in slomo',\n", + " 'denn keiner von uns redet mit den kripos hier, oh no',\n", + " 'big dreams (big dreams)',\n", + " \"junge, ich träum' big dreams (m-m)\",\n", + " \"big dreams (what's happenin', baby? it's the boss!)\",\n", + " \"junge, ich träum' big dreams\",\n", + " '(huh) big dreams (boss)',\n", + " \"junge, ich träum' big dreams (big thangs)\",\n", + " 'big dreams (big dreams)',\n", + " 'kein german dream (yes)',\n", + " '(maybach music)',\n", + " 'all i wanna know about is big things',\n", + " 'walk up on a molly, hear it was a big bang',\n", + " 'gold nefertiti pendant with a thick chain',\n", + " \"flippin' money, got it jumpin' like a sensei\",\n", + " 'in the dark, .45 with a beam on it',\n", + " \"gucci shoes, wearin' laces with the g's on it\",\n", + " \"rocket ride lamborghini, i'ma lean on it\",\n", + " 'rest in peace to black bo, i put the team on it',\n", + " 'all we really wanted was a maybach (boss)',\n", + " 'wear a framed cartier, where the cake at?',\n", + " \"where i'm from, real g's never speak much\",\n", + " \"ridin' with the top down, with the seats up (huh)\",\n", + " \"talkin' 'bout big dreams (big dreams)\",\n", + " 'all i talk about is the big drinks',\n", + " 'rose gold, rolex',\n", + " 'and a nigga had to pull it out with a big ring (boss)',\n", + " '(m-m, maybach music)',\n", + " 'flizzy hält die smith & wesson wieder auf reload (reload)',\n", + " 'alles schauspieler-rapper, ihr seid daily-soap (daily-soap, ey)',\n", + " 'wenn wir kommen, siehst du kugeln fliegen in slomo',\n", + " 'denn keiner von uns redet mit den kripos hier, oh no',\n", + " 'big dreams',\n", + " \"junge, ich träum' big dreams\",\n", + " 'big dreams',\n", + " \"junge, ich träum' big dreams\",\n", + " 'big dreams',\n", + " \"junge, ich träum' big dreams\",\n", + " 'big dreams',\n", + " 'kein german dream',\n", + " 'mann, ich träume diese big dreams (big dreams)',\n", + " 'zu big für die slim-jeans (huh)',\n", + " 'dicka, greenpeace-nightmare (yeah)',\n", + " 'meine jacke war ein eisbär',\n", + " 'elektrofensterheber, im ghetto kennt mich jeder',\n", + " 'ghetto-entertainer, mercedes-benz arena',\n", + " \"hab' geträumt, dass ich die braune louis-tasche hab'\",\n", + " \"ess' vom teller, den ich früher mal gewaschen hab' (huh)\",\n", + " \"nenn' mein benzer jetzt mortel, denn er ist all-black\",\n", + " 'flizzy war nie weg, das ist kein comeback',\n", + " 'grünes ziffernblatt, rosé-gold, mcgregor-flow',\n", + " 'laufe durch miami wie durch tempelhof',\n", + " \"rapper sind jetzt sänger bei den drecksbull'n\",\n", + " \"das ist dom pérignon, keine sekt-pull'n\",\n", + " \"hab' geträumt von diesem straßentraum\",\n", + " 'beim sozialamt im warteraum',\n", + " 'simes got that secret sauce',\n", + " 'flizzy hält die smith & wesson wieder auf reload (reload)',\n", + " 'alles schauspieler-rapper, ihr seid daily-soap (daily-soap, ey)',\n", + " 'wenn wir kommen, siehst du kugeln fliegen in slomo',\n", + " 'denn keiner von uns redet mit den kripos hier, oh no',\n", + " 'big dreams',\n", + " \"junge, ich träum' big dreams\",\n", + " 'big dreams',\n", + " \"junge, ich träum' big dreams\",\n", + " 'big dreams',\n", + " \"junge, ich träum' big dreams\",\n", + " 'big dreams',\n", + " 'kein german dream',\n", + " 'me caan find no sleep me haffi stay up all night',\n", + " 'a veil of darkness is covering my eyes',\n", + " \"ich find' keinen schlaf gedanken haten mich wach\",\n", + " 'und langsam vertreibt der tag die nacht',\n", + " \"dem say it's alright nothing's alright\",\n", + " \"alle menschen wissen's doch die mehrheit schwelgt\",\n", + " \"dem say it’s alright but nothing's alright\",\n", + " 'it just feels like dynamite',\n", + " \"ich schalt' den femseher ein und schalt' ihn gleich wieder aus\",\n", + " 'bilder malen in roten färben mach die äugen wieder auf',\n", + " 'krieg in der stadt des friedens schon lange tot geglaubt',\n", + " \"mir ist kalt ich frier' und die ohnmacht frisst mich auf\",\n", + " \"well i'm so paralyzed seeing a'l those pictures on the screen\",\n", + " 'nothing really seems to chance no one’s about to intervene',\n", + " \"it's six am. and my cup a tea' a steam\",\n", + " 'does anybody else see what i mean',\n", + " 'me caan find no sleep me haffi stay up all night',\n", + " 'a veil of darkness is covering my eyes',\n", + " \"ich find' keinen schlaf gedanken haten mich wach\",\n", + " 'und langsam vertreibt der tag die nacht',\n", + " \"dem say it's alright nothing's alright\",\n", + " \"alle menschen wissen's doch die mehrheit schwelgt\",\n", + " \"dem say it’s alright but nothing's alright\",\n", + " 'it just feels like dynamite',\n", + " 'i cannot put up with aa the nightmares haunting me',\n", + " 'i ve never been so speechless at such a frequency',\n", + " 'am i sleeping or am i awake',\n", + " 'wfiat i just teamed cxesnt stop to resonate',\n", + " \"i'm shivering the treats are tese\",\n", + " 'my heart is running and the bombs defused -',\n", + " 'the mess «s psing up hansy to efiminatb',\n", + " \"how sha'i we tear our fate\",\n", + " 'schatten de mich verfolgen hindern mich am scfciai',\n", + " 'ich we£ nicht oö ich träume das oefühi lässt nicht nach',\n", + " 'mit jeder sekunde und jedem pdsschiag',\n", + " 'wie etwas das da ist aber rieht da sein darf',\n", + " \"es ist kaum zu g'auben trairiç aber wahr\",\n", + " 'so war ver meinen äugen es scheint greifbar nah',\n", + " 'schaurige böder unwñrtích und bizan',\n", + " 'die weit ist bedroht und in gefahr',\n", + " 'me caan find no sleep me haffi stay up all night',\n", + " 'a veil of darkness is covering my eyes',\n", + " \"ich find' keinen schlaf gedanken haten mich wach\",\n", + " 'und langsam vertreibt der tag die nacht',\n", + " \"dem say it's alright nothing's alright\",\n", + " \"alle menschen wissen's doch die mehrheit schwelgt\",\n", + " \"dem say it’s alright but nothing's alright\",\n", + " 'it just feels like dynamite',\n", + " \"ich schalt' den femseher ein und schalt' ihn gleich wieder aus\",\n", + " 'bilder malen in roten färben mach die äugen wieder auf',\n", + " 'krieg in der stadt des friedens schon lange tot geglaubt',\n", + " \"mir ist kalt ich frier' und die ohnmacht frisst mich auf\",\n", + " \"well i'm so paralyzed seeing a'l those pictures on the screen\",\n", + " 'nothing really seems to chance no one’s about to intervene',\n", + " \"it's six am. and my cup a tea' a steam\",\n", + " 'does anybody else see what i mean',\n", + " 'me caan find no sleep me haffi stay up all night',\n", + " 'a veil of darkness is covering my eyes',\n", + " \"ich find' keinen schlaf gedanken haten mich wach\",\n", + " 'und langsam vertreibt der tag die nacht',\n", + " \"dem say it's alright nothing's alright\",\n", + " \"alle menschen wissen's doch die mehrheit schwelgt\",\n", + " \"dem say it’s alright but nothing's alright\",\n", + " 'it just feels like dynamite',\n", + " 'moin!',\n", + " 'platt',\n", + " 'platt is dat land achter de dieken',\n", + " 'platt is dat watt, dat kannst nakieken',\n", + " 'platt bün ik nich bloots, wenn ik goden bobel smöök',\n", + " 'platt bün ik ok nadem ik küstennebel sööp',\n", + " 'platt is dat bannig platte land achter de dieken',\n", + " 'platt is de spraak, up de jümmer mehr minschen schieten',\n", + " 'platt is nich bloots he, wenn he goden bobel smöökt',\n", + " 'platt bün ok ik nadem ik küstennebel sööp',\n", + " 'platt',\n", + " 'wi snackt över platt',\n", + " 'wi snackt snackt ’n beten platt',\n", + " 'platt platt',\n", + " 'platt',\n", + " 'wi sünd de mallbüdels ut bremen-noord',\n", + " 'riemelt up platt, ja dat is use oort',\n", + " 'wahnt nich mehr to huus, na de grode stadt güng de fohrt',\n", + " 'so is dat, vele saken sünd platt',\n", + " 'de fofftig penns sünd trüch un nu geiht loos',\n", + " 'sünd bloots jungs vun de straat',\n", + " 'dick an’n start, in de maak',\n", + " 'so geiht dat to',\n", + " 'use straat, us tohuus, us block',\n", + " 'rap gifft dat nich bloots in’t mv man ok up plattdüütsch',\n", + " 'ofschoonst wi mehr allmannsbrüüt bruukt',\n", + " 'jo, nu geiht los, denn man to!',\n", + " 'platt dat is de spraak, de wi af un an snackt',\n", + " 'platt is de koh ehr schiet, wenn se kackt',\n", + " 'platt sünd use leder, platt is use ne’e plaat',\n", + " 'platt dat sünd de dööntjes, de wi jümmers hebbt praat',\n", + " 'platt is dat land, man hooch sünd de bargen',\n", + " 'platt sünd de blomen in use mooie goorn',\n", + " 'platt sünd de lütten deerns, wenn wi mol wedder seggt: pint!',\n", + " 'platt is dat bannig platte land achter de dieken',\n", + " 'platt is dat watt, dat kannst nakieken',\n", + " 'platt bün nich bloots ik nadem ik küstennebel sööp',\n", + " 'platt bün eerst recht ik, wenn ik an’n heven söög',\n", + " 'kom na rapgeniusdüütschland!',\n", + " '825 all night – parov stelar',\n", + " '824 big jet plane – angus & julia stone',\n", + " '823 swings both ways – robbie williams',\n", + " 'featuring rufus wainwright',\n", + " '822 gelobtes land – peter maffay',\n", + " '821 just like you – andreas kümmert',\n", + " '820 shout to the top – the style council',\n", + " '819 one day (vandaag) – bakermat',\n", + " \"818 la passion – gigi d'agostino\",\n", + " '817 we are the people – empire of the sun',\n", + " '816 songs für liam – kraftklub',\n", + " '815 lucky – britney spears',\n", + " '814 father and son – cat stevens',\n", + " '813 mad world – michael andrews',\n", + " 'feat. gary jules',\n", + " '812 du bist ein wunder – wolfgang petry',\n", + " '811 move in the right direction – gossip',\n", + " '810 tag am meer – die fantastischen vier',\n", + " '809 monsta – culcha candela',\n", + " '808 ooh la la – britney spears',\n", + " '807 no no never – texas lightning',\n", + " '806 because we can – bon jovi',\n", + " '805 soulmate – natasha bedingfield',\n", + " '804 der eiermann – klaus & klaus',\n", + " '803 solsbury hill – peter gabriel',\n", + " '802 respect – aretha franklin',\n", + " '801 (everything i do) i do it for you – bryan adams',\n", + " '800 everytime we touch – cascada',\n", + " '799 i want it that way – backstreet boys',\n", + " '798 berzerk – eminem',\n", + " '797 i wanna dance with somebody (who loves me)',\n", + " '– whitney houston',\n", + " '796 slow it down – amy macdonald',\n", + " '795 against all odds (take a look at me now) –',\n", + " 'phil collins',\n", + " '794 a little less conversation – elvis vs. jxl',\n", + " '793 my heart will go on – celine dion',\n", + " \"792 i'm yours – jason mraz\",\n", + " '791 boombastic – shaggy',\n", + " '790 made in heaven – queen',\n", + " '789 keine grenzen - keine zäune –',\n", + " 'lotto king karl',\n", + " '788 losing sleep – john newman',\n", + " \"787 l'amour toujours – gigi d'agostino\",\n", + " '786 rock dj – robbie williams',\n", + " '785 morgens immer müde – laing',\n", + " '784 around the world – the disco boys',\n", + " \"783 what i've done – linkin park\",\n", + " '782 viva las vegas – elvis presley',\n", + " '781 an de eck – jan fedder & big balls',\n", + " \"780 they don't care about us – michael jackson\",\n", + " '779 turn me on – david guetta (feat. nicki minaj)',\n", + " '778 wenn worte meine sprache wären –',\n", + " 'tim bendzko',\n", + " '777 mamma mia – abba',\n", + " '776 symphonie – silbermond',\n", + " '775 no air – jordin sparks feat. chris brown',\n", + " '774 the real slim shady – eminem',\n", + " \"773 i'll be missing you – puff daddy &\",\n", + " 'faith evans featuring 112',\n", + " '772 i walk the line – johnny cash',\n", + " '771 ich steine du steine – peter fox',\n", + " '770 no son of mine – genesis',\n", + " '769 feuer – jan delay',\n", + " '768 drunk in the morning – lukas graham',\n", + " \"767 livin' in hamburg – hamburger arroganz\",\n", + " '766 my life – billy joel',\n", + " '765 michael x – casper',\n", + " '764 a question of time – depeche mode',\n", + " '763 strand – yasha',\n", + " \"762 she's like the wind – patrick swayze\",\n", + " 'feat. wendy fraser',\n", + " '761 live it up – jennifer lopez feat. pitbull',\n", + " '760 amsterdam – cora',\n", + " '759 morning has broken – cat stevens',\n", + " '758 kings in exile – fritz kalkbrenner',\n", + " '757 love is a losing game – amy winehouse',\n", + " '756 all good things (come to an end) –',\n", + " 'nelly furtado',\n", + " '755 scatman (ski-ba-bop-ba-dop-bop) –',\n", + " 'scatman john',\n", + " '754 summer in the city – joe cocker',\n", + " '753 liebe meines lebens – philipp poisel',\n", + " '752 another day in paradise – phil collins',\n", + " '751 she wolf (falling to pieces) –',\n", + " 'david guetta feat. sia',\n", + " '750 incomplete – backstreet boys',\n", + " '749 löppt – de fofftig penns',\n", + " '748 sweat (a la la la la long) – inner circle',\n", + " '747 umbrella – rihanna',\n", + " '746 amsterdam – fettes brot',\n", + " '745 indigo girl – watershed',\n", + " '744 ein schwein namens männer – die ärzte',\n", + " '743 paparazzi – lady gaga',\n", + " '742 little green apples – robbie williams',\n", + " 'featuring kelly clarkson',\n", + " '741 in the shadows – the rasmus',\n", + " '740 step by step – new kids on the block',\n", + " '739 on ira – zaz',\n", + " '738 auf uns – andreas bourani',\n", + " '737 sexy and i know it – lmfao',\n", + " '736 dickes b – seeed feat. black kappa',\n", + " '735 two princes – spin doctors',\n", + " '734 rhythm is a dancer – snap!',\n", + " \"733 i'm too sexy – right said fred\",\n", + " '732 the power – snap!',\n", + " '731 secrets – onerepublic',\n", + " \"730 show 'em (what you're made of) –\",\n", + " 'backstreet boys',\n", + " '729 boyfriend – justin bieber',\n", + " '728 schwarz zu blau – peter fox',\n", + " '727 entre dos tierras – heroes del silencio',\n", + " '726 mr. vain – culture beat',\n", + " '725 orinoco flow (sail away) – enya',\n", + " '724 waking up in vegas – katy perry',\n", + " '723 king of my castle – wamdue project',\n", + " '722 barcelona – freddie mercury &',\n", + " 'montserrat caballè',\n", + " '721 if i were a boy – beyoncé',\n", + " '720 run – snow patrol',\n", + " '719 what now – rihanna',\n", + " '718 1999 – prince',\n", + " '717 bailando – loona',\n", + " \"716 i don't dance – sunrise avenue\",\n", + " '715 from sarah with love – sarah connor',\n", + " '714 wild ones – flo rida feat. sia',\n", + " '713 patience – take that',\n", + " '712 unter deiner flagge – unheilig',\n", + " \"711 let's get loud – jennifer lopez\",\n", + " '710 a groovy kind of love – phil collins',\n", + " '709 get up (rattle) – bingo players feat',\n", + " 'far east movement',\n", + " '708 balada (tche tcherere teche tche) –',\n", + " 'gusttavo lima',\n", + " '707 streets of philadelphia –',\n", + " 'bruce springsteen',\n", + " '706 unrockbar – die ärzte',\n", + " '705 hey now – martin solveig &',\n", + " 'the cataracs featuring kyle',\n", + " \"704 u can't touch this – mc hammer\",\n", + " '703 seven nation army – the white stripes',\n", + " '702 without me – eminem',\n", + " '701 das rote pferd – markus becker',\n", + " \"700 what's up? – 4 non blondes\",\n", + " '699 blue devils hymne – anya mahnken',\n", + " '698 es gibt nur wasser – santiano',\n", + " '697 home again – michael kiwanuka',\n", + " '696 i know you want me (calle ocho) – pitbull',\n", + " '695 never let me down again – depeche mode',\n", + " '694 suavemente – elvis crespo',\n", + " '693 aufstehn! – seeed feat. cee-lo green',\n", + " '692 finger in po - mexiko! – mickie krause',\n", + " '691 other side of love – sean paul',\n", + " '690 shine my shoes – robbie williams',\n", + " '689 total eclipse of the heart – bonnie tyler',\n", + " '688 human – the killers',\n", + " '687 füchse – absolute beginner',\n", + " \"686 can't stand the silence – rea garvey\",\n", + " '685 umbrella – the baseballs',\n", + " '684 alejandro – lady gaga',\n", + " '683 baker street – gerry rafferty',\n", + " '682 more – usher',\n", + " '681 party rock anthem – lmfao',\n", + " '680 work b**ch! – britney spears',\n", + " '679 tacata – tacabro',\n", + " \"678 who's that chick? – david guetta feat\",\n", + " 'rihanna',\n", + " '677 dragostea din tei – o-zone',\n", + " '676 my love is your love – whitney houston',\n", + " '675 siehst du das genauso? –',\n", + " 'sportfreunde stiller',\n", + " '674 pumped up kicks – foster the people',\n", + " '673 back in black – ac/dc',\n", + " '672 remmidemmi (yippie yippie yeah) – deichkind',\n", + " '671 got 2 luv u – sean paul feat. alexis jordan',\n", + " '670 an angel – the kelly family',\n", + " '669 josephine – reamonn',\n", + " '668 nine million bicycles – katie melua',\n", + " '667 standing still – roman lob',\n", + " '666 bonbon aus wurst – helge schneider',\n", + " '665 next to me – emeli sandé',\n", + " '664 rolling stone – daniel schuhmacher',\n", + " '663 punga – klingande',\n", + " '662 toxic – britney spears',\n", + " '661 jump that rock (whatever you want) –',\n", + " 'scooter vs. status quo',\n", + " '660 bis der arzt kommt – lotto king karl &',\n", + " 'the barmbek dreamboys',\n", + " '659 ni**as in paris – jay-z & kanye west',\n", + " '658 stadtaffe – peter fox',\n", + " '657 la isla bonita – madonna',\n", + " '656 sexy bitch – david guetta feat. akon',\n", + " '655 how much is the fish? – scooter',\n", + " '654 tik tok – ke$ha',\n", + " \"653 ich hab alain delon geseh'n –\",\n", + " 'pierre ferdinand et les charmeurs',\n", + " '652 heal the world – michael jackson',\n", + " '651 lila wolken – peter kraus',\n", + " '650 i will dance (when i walk away) –',\n", + " 'katzenjammer',\n", + " '649 what a wonderful world – louis armstrong',\n", + " '648 alles wird aus hack gemacht (hacksong) –',\n", + " 'ralf \"ralle\" petersen feat. hack norris',\n", + " '647 sultans of swing – dire straits',\n", + " '646 ein teil – cro',\n", + " '645 beautiful day – u2',\n", + " '644 fast car – tracy chapman',\n", + " '643 spectrum (say my name) – florence and the machine',\n", + " '642 lonesome rider – volbeat feat. sarah blackwood',\n", + " '641 nur der hsv – elvis',\n", + " '640 bad romance – lady gaga',\n", + " '639 this is the life – amy macdonald',\n", + " \"638 we can't stop – miley cyrus\",\n", + " '637 desert rose – sting',\n", + " \"636 i'm on fire – bruce springsteen\",\n", + " '635 young and beautiful – lana del rey',\n", + " '634 whatever you want – status quo',\n", + " '633 strawberry fields forever – beatles',\n", + " '632 the time (dirty bit) – the black eyed peas',\n", + " '631 the cave – mumford and sons',\n", + " '630 under control – calvin harris &',\n", + " 'alesso feat. hurts',\n", + " '629 the spark – afrojack featuring spree wilson',\n", + " '628 the a team – ed sheeran',\n", + " '627 just a dream – nelly',\n", + " '626 sympathy for the devil – rolling stones',\n", + " '625 give me everything – pitbull feat',\n", + " 'ne-yo, afrojack & nayer',\n", + " '624 beneath your beautiful –',\n", + " 'labrinth feat emeli sandé',\n", + " \"623 it's time – imagine dragons\",\n", + " '622 always – bon jovi',\n", + " '621 suit and tie – justin timberlake feat. jay-z',\n", + " '620 if tomorrow never comes – ronan keating',\n", + " '619 mit 18 – marius müller-westernhagen',\n", + " '618 losing my religion – r.e.m',\n", + " '617 take me home, country roads – john denver',\n", + " '616 an der nordseeküste – klaus & klaus',\n", + " '615 love is all around – wet wet wet',\n", + " '614 das kleine küken piept – pulcino pio',\n", + " '613 fields of gold – sting',\n", + " '612 dicke – marius müller-westernhagen',\n", + " '611 wherever you will go – the calling',\n", + " '610 money – pink floyd',\n", + " '609 wir werden niemals untergehen –',\n", + " 'santiano',\n", + " \"608 it's raining men – the weather girls\",\n", + " '607 zucker – peter fox',\n", + " '606 mr. jones – counting crows',\n", + " '605 i love you – woodkid',\n", + " '604 little numbers – boy',\n", + " '603 sie ist weg – die fantastischen vier',\n", + " '602 hey jude – beatles',\n", + " '601 alors on danse – stromae',\n", + " '600 sonne in der nacht – peter maffay',\n", + " '599 summer paradise – simple plan',\n", + " 'featuring sean paul',\n", + " '598 girl gone wild – madonna',\n", + " '597 ben – michael jackson',\n", + " '596 der wilde wilde westen – truck stop',\n", + " '595 run to the hills – iron maiden',\n", + " '594 wire to wire – razorlight',\n", + " '593 uprising – muse',\n", + " '592 schwule mädchen – fettes brot',\n", + " '591 the power of love – jennifer rush',\n", + " '590 hangover – taio cruz',\n", + " '589 so soll es bleiben – ich + ich',\n", + " '588 irgendwie, irgendwo, irgendwann –',\n", + " 'jan delay',\n", + " '587 bitter sweet symphony – the verve',\n", + " '586 das gefühl – andrea berg',\n", + " '585 meine soldaten – maxim',\n", + " '584 i got u – duke dumont feat. jax jones',\n", + " '583 krieger des lichts – silbermond',\n", + " '582 s&m – rihanna',\n", + " '581 reeperbahn – udo lindenberg',\n", + " '580 am tag als conny kramer starb –',\n", + " 'juliane werding',\n", + " '579 barbie girl – aqua',\n", + " '578 das lied der schlümpfe – vader abraham',\n", + " '577 everybody hurts – r.e.m',\n", + " '576 let the music play – barry white',\n", + " '575 one moment in time – whitney houston',\n", + " '574 who knew – p!nk',\n", + " '573 call me – blondie',\n", + " '572 affe sucht liebe – fraktus',\n", + " '571 true love – p!nk feat. lily allen',\n", + " '570 people help the people – birdy',\n", + " '569 tanz der moleküle – mia',\n", + " \"568 it's my life – dr. alban\",\n", + " '567 so what – p!nk',\n", + " '566 ready to start – arcade fire',\n", + " '565 heaven – bryan adams',\n", + " '564 summer – calvin harris',\n", + " '563 all over the news – martin and james',\n", + " '562 türlich, türlich (sicher, dicker) – das bo',\n", + " '561 payphone – maroon 5 feat. wiz khalifa',\n", + " '560 balu – kettcar',\n", + " '559 troublemaker – olly murs feat. flo rida',\n", + " '558 we found love – rihanna feat. calvin harris',\n", + " '557 sun is up – inna',\n", + " '556 sex bomb – tom jones and mousse t',\n", + " '555 cape of our hero – volbeat',\n", + " \"554 you're the first, the last, my everything –\",\n", + " 'barry white',\n", + " '553 when love takes over – david guetta',\n", + " 'feat. kelly rowland',\n", + " '552 flugzeuge im bauch – herbert grönemeyer',\n", + " '551 starships – nicki minaj',\n", + " '550 only teardrops – emmelie de forest',\n", + " '549 mfg (mit freundlichen grüssen) –',\n", + " 'die fantastischen vier',\n", + " '548 the flood – take that',\n", + " '547 one – johnny cash',\n", + " '546 er gehört zu mir – marianne rosenberg',\n", + " '545 die da!?! – die fantastischen vier',\n", + " '544 after all – michael bublé feat. bryan adams',\n", + " '543 frozen – madonna',\n", + " '542 clown – emeli sandé',\n", + " '541 red flag – billy talent',\n", + " '540 like the way i do – melissa etheridge',\n", + " '539 smooth criminal – michael jackson',\n", + " '538 hsv - du bist meine frau –',\n", + " 'buddy ogün presents mozart',\n", + " \"537 you've got the love – florence + the machine\",\n", + " '536 kraniche – bosse',\n", + " '535 heart skips a beat – olly murs feat. rizzle kicks',\n", + " '534 last christmas – wham!',\n", + " '533 we are the world – usa for africa',\n", + " \"532 love don't die – the fray\",\n", + " '531 zu spät – die ärzte',\n", + " '530 where are we now? – david bowie',\n", + " '529 what makes you beautiful – one direction',\n", + " '528 emanuela – fettes brot',\n", + " '527 one more night – maroon 5',\n", + " '526 klar – jan delay',\n", + " '525 in these arms – bon jovi',\n", + " '524 thank you for the music – abba',\n", + " '523 my number – foals',\n", + " '522 lucky day – sasha',\n", + " '521 lasse redn – die ärzte',\n", + " '520 pflaster – ich + ich',\n", + " '519 snowflakes – white apple tree',\n", + " '518 der affentanz – die junx',\n", + " '517 burn it down – linkin park',\n", + " '516 und es war sommer –',\n", + " 'peter maffay',\n", + " '515 back for good – take that',\n", + " '514 irgendwas bleibt – silbermond',\n", + " '513 domino – jessie j',\n", + " \"512 day 'n' night – kid cudi vs. crookers\",\n", + " '511 pfeiff drauf! (urlaub ist nur einmal',\n", + " 'im jahr) – peter wackel',\n", + " '510 lego house – ed sheeran',\n", + " '509 thunderstruck – ac/dc',\n", + " '508 mr. saxobeat – alexandra stan',\n", + " '507 get busy – sean paul',\n", + " '506 clarity – zedd feat. foxes',\n", + " '505 ich mag müll – ernie & bert & ihre freunde',\n", + " '504 colour me in – rea garvey',\n", + " '503 wovon sollen wir träumen – frida gold',\n", + " '502 loving you is killing me – aloe blacc',\n", + " \"501 gangsta's paradise – coolio\",\n", + " '500 ironic – alanis morissette',\n", + " '499 video games – lana del rey',\n", + " '498 das geht ab! (wir feiern die ganze nacht) –',\n", + " 'frauenarzt & manny marc',\n", + " '497 i knew you were trouble – taylor swift',\n", + " '496 rennen + stolpern – jupiter jones',\n", + " '495 saturday night – whigfield',\n", + " '494 alive – pearl jam',\n", + " '493 bück dich hoch – deichkind',\n", + " '492 hamma! – culcha candela',\n", + " '491 precious – depeche mode',\n", + " '490 ding – seeed',\n", + " '489 black or white – michael jackson',\n", + " '488 vom selben stern – ich + ich',\n", + " '487 flaws – bastille',\n", + " '486 hoffnung – jan delay',\n", + " '485 on the floor – jennifer lopez',\n", + " 'feat. pitbull',\n", + " '484 wolke 7 – max herre feat. philipp poisel',\n", + " '483 keep the faith – bon jovi',\n", + " '482 luftbahn – deichkind',\n", + " '481 wish you were here – rednex',\n", + " '480 good feeling – flo rida',\n", + " '479 wine and chocolates – theophilus london',\n", + " '478 hello – martin solveig & dragonette',\n", + " '477 out of the dark – falco',\n", + " '476 (liebe ist...) wie malaria – lotto king karl',\n", + " \"475 live while we're young – one direction\",\n", + " '474 africa – toto',\n", + " '473 roxanne – the police',\n", + " '472 only girl (in the world) – rihanna',\n", + " '471 bayern – die toten hosen',\n", + " '470 feeling good – michael bublé',\n", + " '469 count on me – bruno mars',\n", + " '468 lichter der stadt – unheilig',\n", + " '467 raise your glass – p!nk',\n", + " '466 welcome to st. tropez –',\n", + " 'dj antoine vs. timati feat. kalenna',\n", + " '465 i am what i am – gloria gaynor',\n", + " '464 pumpin blood – nonono',\n", + " '463 down under – men at work',\n", + " '462 schrei nach liebe – die ärzte',\n", + " '461 endless summer – oceana',\n", + " '460 clocks – coldplay',\n", + " '459 über sieben brücken musst du gehn – karat',\n", + " '458 angels – the xx',\n", + " '457 moves like jagger – maroon 5 feat',\n", + " 'christina aguilera',\n", + " '456 all of the lights – kanye west feat. rihanna',\n", + " '455 quit playing games – backstreet boys',\n", + " '454 out of yourself – truls',\n", + " '453 freunde bleiben – revolverheld',\n", + " '452 mitten in barmbek – lotto king karl',\n", + " '451 ring of fire – johnny cash',\n", + " '450 junge – die ärzte',\n", + " '449 kryptonite – 3 doors down',\n", + " '448 hamburg brennt – 1000 robota',\n", + " '447 little things – one direction',\n", + " '446 down by the river – milky chance',\n", + " '445 margarethe – buddy ogün pres. mozart',\n", + " '444 summer well – interpol',\n", + " '443 rosana – wax',\n", + " '442 sailing – rod stewart',\n", + " '441 yesterday – beatles',\n", + " '440 one – u2',\n", + " '439 stups, der kleine osterhase –',\n", + " 'rolf zuckowski und seine freunde',\n", + " '438 adore you – miley cyrus',\n", + " '437 bat out of hell – meat loaf',\n", + " '436 anything could happen – ellie goulding',\n", + " '435 paint it black – rolling stones',\n", + " '434 samba de janeiro – bellini',\n", + " '433 ...so ein schöner tag (fliegerlied) –',\n", + " 'tim toupet',\n", + " '432 man in the mirror – michael jackson',\n", + " '431 lass das mal den papa machen – christoph',\n", + " 'maria herbst als bernd stromberg',\n", + " \"430 she doesn't mind – sean paul\",\n", + " '429 ganz paris ist eine disco –',\n", + " 'pierre ferdinand et les charmeurs',\n", + " '428 von allein – culcha candela',\n", + " '427 we are young – fun. feat janelle monaé',\n", + " \"426 (i've had) the time of my life –\",\n", + " 'bill medley and jennifer warnes',\n", + " '425 so perfekt – casper',\n", + " '424 jeanny, part 1 – falco',\n", + " '423 showgirls der reeperbahn – double faces',\n", + " '422 du lässt mein herz springen –',\n", + " 'maggers united',\n", + " '421 wish you were here – pink floyd',\n", + " '420 an tagen wie diesen – fettes brot feat',\n", + " 'pascal finkenauer',\n", + " '419 sweet dreams (are made of this) –',\n", + " 'eurythmics',\n", + " \"418 i'm gonna be (500 miles) – proclaimers\",\n", + " '417 love of my life – queen',\n", + " ...]},\n", + " 'rock': {'meta': {'train_data': ['(eins, zwei, drei, vier)',\n", + " 'du sagst, die antwort kommt vom hufenmann',\n", + " 'für uns ist es längst zu spät',\n", + " 'dir fehlt lang schon jede hoffnung',\n", + " 'er ist der einzige, der dich versteht',\n", + " \"he's got many things to offer\",\n", + " 'all he wants is just my soul',\n", + " 'but he cannot have it all...',\n", + " \"because it's you i want (ich will nur dich)\",\n", + " 'do we have to go this way?',\n", + " \"to see what's aweful clear\",\n", + " \"oh ja ich will nur dich (it's you i want)\",\n", + " 'der teufel wird hier leer ausgehen',\n", + " 'denn meine seele gehört dir',\n", + " 'you say the answers comes from above (tell it to me sister)',\n", + " \"he's the one to sacrifice\",\n", + " 'he gave us life, he gives us love',\n", + " \"and he's the one who had to pay the price\",\n", + " 'er gibt uns wärme wenn uns kalt wird',\n", + " 'er ist gnädig und gerecht',\n", + " 'zu kindern wie zu sündern',\n", + " 'zwar nicht schlecht doch ich',\n", + " \"ich will nur dich (it's you i want)\",\n", + " 'ich spür gott wenn ich dich seh',\n", + " 'meine seele gehört dir',\n", + " \"it's you i want (ich will nur dich)\",\n", + " 'do we have to go this way?',\n", + " \"to see what's aweful clear\",\n", + " 'oh baby, komm mit mir',\n", + " \"it's you i want (ich will nur dich)\",\n", + " 'do we have to go this way?',\n", + " \"to see what's aweful clear\",\n", + " \"oh ja ich will nur dich (it's you i want)\",\n", + " \"you're the one to whom i pray\",\n", + " \"yes you're the only one\",\n", + " 'you are to whom i come',\n", + " 'just take my soul right now, right here',\n", + " 'denn meine seele gehört dir',\n", + " 'die stürme rufen dich',\n", + " 'die stürme rufen dich',\n", + " 'die stürme rufen dich',\n", + " 'until the day i die, i will not end this fight',\n", + " 'believe me that i am this haunted man forever',\n", + " 'their hopeful eyes, their desperate cries',\n", + " 'this certitude to shatter dying dreams forever',\n", + " 'du kannst auf bessere tage warten',\n", + " 'doch diese zeit ist deine zeit',\n", + " 'deine worte, deine taten',\n", + " 'werden bald schon nichts mehr zählen',\n", + " 'die stürme rufen dich',\n", + " 'hier und jetzt muss es geschehen',\n", + " 'du hörst die glocken schlagen',\n", + " 'und keine angst wird uns regieren',\n", + " 'an unseen genocide, a world war on the enslaved ones',\n", + " 'shieldless, facing despotism',\n", + " 'this is the awaking',\n", + " 'es ist die zeit des erwachens!',\n", + " 'right here right now, within the walls of babylon',\n", + " 'die stürme rufen dich',\n", + " 'i stand and fight, deny your lies forever',\n", + " 'die stürme rufen dich',\n", + " 'forced by northern kingdoms, looted and held down',\n", + " 'despoiled and patronized, just like conquered colonies',\n", + " 'old men return to reason',\n", + " 'as power is taken by their rival sons',\n", + " 'du kannst auf bessere tage warten',\n", + " 'doch diese zeit ist deine zeit',\n", + " 'und du wirst die fackel tragen',\n", + " 'feuer und flamme für diese alte welt',\n", + " 'right here right now',\n", + " 'within the walls of babylon',\n", + " 'i stand and fight',\n", + " 'deny your lies forever',\n", + " 'die stürme rufen dich!',\n", + " 'die völker rufen dich!',\n", + " 'right here right now',\n", + " 'within the walls of babylon',\n", + " 'i stand and fight',\n", + " 'deny your lies forever',\n", + " 'die stürme rufen dich!',\n", + " 'praise the lord everyday with',\n", + " 'dread love!',\n", + " \"du musst mal an die ufo's denken\",\n", + " \"ufo's denken, ufo's denken\",\n", + " 'darfst nich dein gehirn verrenken',\n", + " 'hirn verrenken, hirn verrenken',\n", + " 'dread love!',\n", + " \"amor's pfeil sitzt immer recht\",\n", + " 'immer recht, immer recht',\n", + " 'recht + schlecht sich kali recht',\n", + " 'recht + schlecht sich kali recht',\n", + " 'dread love!',\n", + " 'dread revolution, dread menstruation, hot masterbation',\n", + " 'hallucination, hallucination, hallucination, hallucination',\n", + " 'hallucination, hallucination, hallucination',\n", + " 'the love affairs are so exciting',\n", + " 'when the star of dread love shining',\n", + " 'love affairs are so exciting',\n", + " 'when the star of dread love shining',\n", + " 'praise the lord everyday with',\n", + " 'dread love!',\n", + " 'die partei hat immer recht',\n", + " 'immer recht, immer recht, immer recht',\n", + " 'alle sind die geile tiere, geile tiere, geile tiere',\n", + " 'dread love!',\n", + " 'aber',\n", + " 'nina, nina, tam kartina',\n", + " 'eto tractor imotor',\n", + " 'la ljublju tebja',\n", + " 'nina, nina!',\n", + " 'the love affairs are so exciting',\n", + " 'when the star of dread love shining',\n", + " 'love affairs are so exciting',\n", + " 'when the star of dread love shining',\n", + " 'love affairs are so exciting',\n", + " 'when the star of dread love shining',\n", + " 'love affairs are so exciting',\n", + " 'when the star of dread love shining',\n", + " 'love affairs are so exciting',\n", + " 'when the star of dread love shining',\n", + " 'love affairs are so exciting',\n", + " 'when the star of dread love shining',\n", + " 'praise the lord everyday with',\n", + " 'dread love!',\n", + " 'dread revolution, dread menstruatuion, hot masturbation',\n", + " 'hot masturbation',\n", + " 'hallucination, hallucination, hallucination, hallucination',\n", + " 'hallucination, hallucination, hallucination',\n", + " 'lalalalalalalalala, lalalalala',\n", + " 'love affairs are so exciting',\n", + " 'when the star of dread love shining',\n", + " 'love affairs are so exciting',\n", + " 'when the star of dread love shining',\n", + " 'love affairs are so exciting',\n", + " 'love, dread love!',\n", + " 'love, dread love!',\n", + " 'no babylon love affairs no more',\n", + " 'no babylon love affairs no more',\n", + " 'nunsexmonkrock',\n", + " 'nunsexmonkrock',\n", + " 'nunsexmonkrock',\n", + " 'nunsexmonkrock',\n", + " 'nunsexmonkrock',\n", + " \"let's do the nunsexmonkrock\",\n", + " 'nunsexmonkrock',\n", + " 'nunsexmonkrock',\n", + " \"let's do the\",\n", + " 'nun sex monk rock',\n", + " 'corpses are nailed to my body',\n", + " 'corpses are sewn to my frame',\n", + " 'rune wounds carved into the flesh',\n", + " 'bones bodies skulls slashed',\n", + " 'living flesh suffers',\n", + " 'famine death hails us',\n", + " 'totems of annihilation',\n", + " 'signs of mutilation',\n", + " 'living flesh suffers',\n", + " 'famine death hails us',\n", + " 'this is the judgemand day',\n", + " 'welcome to teutonic hell',\n", + " '\"das tier und die zehn h\\xadörner die du',\n", + " 'gesehen hast werden die hure verabscheuen',\n", + " 'sie werden ihr alles fortnehmen, so dass sie nackt ist',\n", + " 'sie werden ihr fleisch fressen und sie verbrennen\"',\n", + " '(offenbarung kapitel 17, vers 16)',\n", + " 'die masken sind gefallen, ignis extotum corpas',\n", + " 'lechery on the altar, we burn in blasphemy',\n", + " 'ich liebe es, wie du dich mir',\n", + " 'von hinten öffnest, orgasmic hell',\n", + " 'desecrating with possessed burning eyes',\n", + " 'die posaunen der finsternis erklingen',\n", + " 'light of holiness, forever extinguished',\n", + " 'trommelklänge eingehüllt in spottprozessionen',\n", + " 'tied up und geläutert, der teufel steigt empor',\n", + " 'ass for an ass, cunt for a cunt',\n", + " 'divine pleasure, through infernal pain',\n", + " 'take these almighty wings and fly away',\n", + " 'desecrating with possessed burning eyes',\n", + " 'die posaunen der finsternis erklingen',\n", + " 'light of holiness, forever now extinguished',\n", + " 'baut den schrein für einen toten gott',\n", + " 'im angesicht des todes, fleischknochen und leichenfraß',\n", + " 'vom kreuz in die hölle, schwärzeste schwärze in mir, gekrochen zu grabe',\n", + " 'schwarze seelen tanzt den todt, taumelnd im feuer',\n", + " 'arretiert im sterbenden reich eures gescheiterten allvaters',\n", + " 'untot siechend erkenne ich den einzig wahren sauren weg',\n", + " 'indolent lodernd wappne ich mich für das mir unentrinnbare',\n", + " 'imminent obgleich dieser meiner katatonie bin ich gespornt',\n", + " 'exitium',\n", + " 'auf dem unbekannten pfad',\n", + " 'sehenden augеs wandelnd',\n", + " 'strauchelnd, doch immerfort',\n", + " 'zur unauswеichlichen destination',\n", + " 'die heimfahrt auf immer verwehrt',\n", + " 'liberatio',\n", + " \"buried in a distant bitterness's limbos\",\n", + " 'from a single betrayal, drunk with hatred, with grief',\n", + " 'i slow my marks down in this tasteless world',\n", + " 'feeling the remains of my heart, empty',\n", + " 'alors tu as fermé le livre de notre jeune histoire',\n", + " \"dans le noir, avec toujours un peu d'espoir\",\n", + " \"j'ai recroquevillé mon âme, j'ai mâché mes croûtes\",\n", + " \"et dans un silence parfait, j'ai connu le vrai doute\",\n", + " 'walking open-eyed',\n", + " 'on the unknown path',\n", + " 'stumblingly, yet ever on',\n", + " 'towards my inescapable destination',\n", + " 'return home, denied for good',\n", + " 'dimissus',\n", + " 'spirit here that laughest',\n", + " 'spirit here tha quaffest',\n", + " 'spirit here that danceth',\n", + " 'spirit here that pranceth',\n", + " 'spirit with thee',\n", + " 'i join in the glee',\n", + " \"enfoui dans les limbes d'une amertume lointaine\",\n", + " \"d'une trahison unique, enivrée de haine, de peine\",\n", + " 'je freine mes marques dans ce monde insipide',\n", + " 'ressentant les restes de mon coeur, vides',\n", + " 'so you closed the book of our young history',\n", + " 'in the dark, with still a little of hope',\n", + " 'i curled my soul up, i chewed my crusts',\n", + " 'and in a perfect silence, i knew the real doubt',\n", + " 'der fäulnis dieser existenz entkommend',\n", + " 'gehe ich diesen meinen letzten weg',\n", + " 'diesem jokus, deinem sein überdrüssig',\n", + " 'wandle ich gen neige, gen katharsis',\n", + " 'libertas',\n", + " 'libertas in exitus',\n", + " 'exitus in libertas',\n", + " 'die wunder dieser welt werden dir geschenkt',\n", + " 'glück ist nicht käuflich sehnsucht bleibt unerreicht',\n", + " 'preisrätsel winken nimmersatt',\n", + " 'kein mitleid für die mehrheit',\n", + " 'kein mitleid für die mehrheit',\n", + " 'nihilistic mystics',\n", + " 'apostolic alcoholics',\n", + " 'messianic manics',\n", + " 'cataclysmic and prolific',\n", + " 'in the age of super-boredom',\n", + " 'hype and mediocrity',\n", + " 'celebrate relentlessness',\n", + " 'menace to society',\n", + " 'this is counter-culture from the underground',\n", + " 'eternal revolution, this is our sound',\n", + " 'kmfdm, better than the best',\n", + " 'megalomaniacal and harder than the rest',\n", + " 'refuse is our inspiration',\n", + " 'terrorism our trade',\n", + " 'sabotage and piracy',\n", + " 'chaos our mental state',\n", + " 'mesmerizing, festering',\n", + " 'intended for the faint of heart',\n", + " 'cultish and anthemic',\n", + " 'until death us do part',\n", + " 'this is counter-culture from the underground',\n", + " 'eternal revolution, this is our sound',\n", + " 'kmfdm, better than the best',\n", + " 'megalomaniacal and harder than the rest',\n", + " 'wenn der untergrund bebt ist die ordnung erschüttert',\n", + " 'der verrat an der seele macht leben ungesund',\n", + " 'mit unschlagbaren reimen werden wir uns vertreiben',\n", + " 'die zeit der langen weile bis zum grossen bums',\n", + " 'like a fiendish tropic virus',\n", + " 'spitting bile at all you whores',\n", + " 'razor-sharp tongue-in-cheek',\n", + " 'poking in your open sores',\n", + " \"a wolf in sheep's clothing\",\n", + " 'the ultimate disgrace',\n", + " 'wrapped up as a gift of god',\n", + " 'exploding in your face',\n", + " 'this is counter-culture from the underground',\n", + " 'eternal revolution, this is our sound',\n", + " 'kmfdm, better than the best',\n", + " 'megalomaniacal and harder than the rest',\n", + " 'refuse is our inspiration',\n", + " 'terrorism our trade',\n", + " 'sabotage and piracy',\n", + " 'chaos our mental state',\n", + " 'in the age of super-boredom',\n", + " 'hype and mediocrity',\n", + " 'celebrate relentlessness',\n", + " 'menace to society',\n", + " 'this is counter-culture from the underground',\n", + " 'eternal revolution, this is our sound',\n", + " 'kmfdm, better than the best',\n", + " 'megalomaniacal and harder than the rest',\n", + " 'megalomaniacal',\n", + " 'megalomaniacal',\n", + " 'megalomaniacal',\n", + " 'better than the best and harder than the rest',\n", + " 'imitationen von dir',\n", + " 'befinden sich in mir',\n", + " 'imitationen von dir',\n", + " 'verbünden sich mit mir',\n", + " 'berühren und begleiten mich',\n", + " 'sagen: \"es gibt kein wahres ich\"',\n", + " 'verspüren und bereuen nichts',\n", + " 'spucken den leugnern ins gesicht',\n", + " 'dein gut ist mein gut',\n", + " 'dein schön ist mein schön',\n", + " 'dein wahr ist mein wahr',\n", + " 'imitationen von dir',\n", + " 'wiederholen sich in mir',\n", + " 'imitationen von dir',\n", + " 'klopfen an die tür',\n", + " 'und leise reden sie mir ein:',\n", + " '\"du musst nicht du selber sein\"',\n", + " 'und leise reden sie mir ein:',\n", + " '\"wir werden dich von dir befreien\"',\n", + " 'dein schlecht ist mein schlecht',\n", + " 'dein schlimm ist mein schlimm',\n", + " 'dein schlimm ist mein',\n", + " 'ganz schlimm',\n", + " '\"du bist so viel gereist',\n", + " 'im zickzack durch die zeit',\n", + " 'nirgendwo, wo du bleibst',\n", + " 'manchmal nur durch träume treibst',\n", + " 'fast durch die ganze welt',\n", + " 'bist du zu mir bestellt',\n", + " 'fast durch die ganze welt',\n", + " 'bist du zu mir bestellt',\n", + " 'dein gut ist mein gut',\n", + " 'dein schön ist mein schön',\n", + " 'dein wahr ist mein wahr',\n", + " 'dein schlecht ist mein schlecht',\n", + " 'dein schlimm ist mein schlimm',\n", + " 'dein schlimm ist mein',\n", + " 'ganz schlimm',\n", + " 'imitations of you',\n", + " 'are residing within me',\n", + " 'imitations of you',\n", + " 'are allying with me',\n", + " 'they touch me and go along with me',\n", + " 'they say \"there\\'s nothing like a true me\"',\n", + " 'they dont sense and dont regret a thing',\n", + " 'they spit in the face of the deniers',\n", + " 'your well is my well',\n", + " 'your fine is my fine',\n", + " 'your truth is my truth',\n", + " 'imitations of you',\n", + " 'echo within me',\n", + " 'imitations of you',\n", + " 'are knocking on the door',\n", + " \"and gently they're convincing me\",\n", + " '\"you dont have to be yourself\"',\n", + " \"and gently they're convincing me\",\n", + " '\"we will free yourself from you\"',\n", + " 'your ill is my ill',\n", + " 'your bad is my bad',\n", + " 'your bad is my worst',\n", + " 'you traveled so much',\n", + " 'crisscross thorugh time',\n", + " 'theres nowhere you stay',\n", + " 'sometimes just floating through dreams',\n", + " 'almost across all the world',\n", + " 'are you appointed to me',\n", + " 'almost across all the world',\n", + " 'are you appointed to me',\n", + " 'your well is my well',\n", + " 'your beauty is my beauty',\n", + " 'your truth is my truth',\n", + " 'your ill is my ill',\n", + " 'your bad is my bad',\n", + " 'your bad is my worse',\n", + " 'durch die nacht mit feuer und benzin',\n", + " 'verbrenn die straßen in deinem und meinem kopf',\n", + " 'we can stop the machine',\n", + " 'we can break our bodies',\n", + " 'an arm becomes a flat field',\n", + " 'we can form our bodies',\n", + " 'and we will',\n", + " 'and we will',\n", + " 'we could fit mountains between index and middle finger',\n", + " 'unsere augen brennen, wenn das licht einfällt',\n", + " 'die maschine holt uns ein',\n", + " 'we can stop the machine',\n", + " 'we can break our bodies',\n", + " 'an arm becomes a flat field',\n", + " 'we can destroy our bodies',\n", + " 'and we will',\n", + " 'and we will',\n", + " 'we could fit mountains between index and middle finger',\n", + " '\"keine angst\" always on display',\n", + " 'but the colors are the fear',\n", + " '\"keine angst\" always on display',\n", + " 'a sign in red',\n", + " 'wir zwei singen nun zu dritt',\n", + " 'der dritte, der bin ich',\n", + " 'am ort, an dem pferde sich zur ruhe legen',\n", + " 'die maschine ist weit weg',\n", + " 'der morgen kommt kalt wie jeden tag',\n", + " 'wir zwei bluten aus',\n", + " 'we cannot stop the machine',\n", + " 'but we can break our bodies',\n", + " 'an arm becomes a flat field',\n", + " 'and fear becomes a body',\n", + " 'keine angst',\n", + " \"komm, iki maska, let's go zack\",\n", + " \"komm, iki maska, let's go zisch\",\n", + " 'erleuchtung ist das wort der stunde',\n", + " 'shit ich ihn da sah, da sitzen sah',\n", + " \"(komm, iki maska, let's go zack)\",\n", + " \"(komm, iki maska, let's go zisch)\",\n", + " 'o sole mio... o sole mio...',\n", + " \"let's do the split and i shit on it\",\n", + " \"let's do the split and i spit on it\",\n", + " \"(komm, iki maska, let's go zack)\",\n", + " \"(komm, iki maska, let's go zisch)\",\n", + " 'o sole mio... o sole mio...',\n", + " \"(komm, iki maska, let's go zack)\",\n", + " \"(komm, iki maska, let's go zisch)\",\n", + " '...und wenn dann der kopf faellt',\n", + " 'sage ich ha ha ha ha ha',\n", + " '40 jahre wandern im eis',\n", + " 'du bist müde vom gehen im kreis',\n", + " 'dein weltbild trägt sich nicht gerade leicht',\n", + " 'der tag bricht an und alles wird weiß',\n", + " 'oho woho',\n", + " 'oho woho',\n", + " 'no matter if you get lost',\n", + " 'you will always stay right where we are',\n", + " 'no matter where you are going',\n", + " 'you will always come with us back to start',\n", + " 'no matter if you get lost',\n", + " 'you will always stay right where we are',\n", + " 'no matter where you are going',\n", + " 'you will always come with us back to start',\n", + " 'oho woho',\n", + " 'oho woho',\n", + " \"…i can't get no satisfaction…\",\n", + " '…all you need is love…',\n", + " \"we're playing the sets on the blow\",\n", + " 'just keep on waiting',\n", + " 'slow goes the goose',\n", + " 'you see me shoes in your mirror mind',\n", + " 'quick goes the trick',\n", + " 'i ask your sick sailing sailors blind',\n", + " 'i travel into the tongue',\n", + " 'ready to drop ding dong is handsome top',\n", + " 'i ask your sick sailing sailors blind',\n", + " 'i travel into the tongue',\n", + " 'ready to drop ding dong is handsome top',\n", + " '“findst du das angenehm?”',\n", + " '“ja… zum überleben reicht das schon”',\n", + " '“du hast dich auch verändert in den letzten jahren”',\n", + " '“findest du?”',\n", + " '“warum bloß? warscheinlich… nee… aber… warum isst du denn nicht mohrrüben?”',\n", + " '“ja, das wäre wirklich schön”',\n", + " '“wollen wir das machen?”',\n", + " '“ja”',\n", + " '“willst du runter steigen?”',\n", + " '…',\n", + " '“wie sieht das überhaupt aus das buch?”',\n", + " 'selbst clemens kann man heute nicht erreichen',\n", + " 'er ist die tage in rom',\n", + " 'before he left, he said: \"andreas, come on',\n", + " 'there\\'s nothing like drinking, like drinking on your own\"',\n", + " 'all those hotel rooms and worn down beds',\n", + " 'beautiful miss mary jane beneath the sword of damocles',\n", + " \"und auch auf isabella sollt' ich nicht mehr zählen\",\n", + " 'she speaks sweet love und will die boys nur bluten sehen',\n", + " 'i get heavenly drunk while she talks of politics',\n", + " 'girl, get a car, get a gun',\n", + " 'ich wüsste nicht, was dagegen spricht',\n", + " 'du, ich kenn noch eine bar, da kriegen wir die drinks for free',\n", + " 'wenn du mich jetzt nicht liebst, dann liebst du mich wohl nie',\n", + " \"jetzt hab' ich clemens am telefon\",\n", + " 'a midnight long distance call',\n", + " \"we didn't do much talking, but talked about it all\",\n", + " 'der regen und die hundstage, der schlechte wein im nachtzug',\n", + " 'irgendwann kommt dann die nachricht:',\n", + " '\"boy, i hate every inch of you\"',\n", + " 'back in berlin, a ghost came to stay',\n", + " 'ich befürchte, es fischt bald jemand diesen buben aus der spree',\n", + " 'und ich sag\\': \"tommy, kommt\\'s nur mir so vor',\n", + " 'oder schmeckt das h auf dieser straße auch nicht anders als am schottentor?\"',\n", + " 'in this everlasting end',\n", + " 'sort your enemies and friends',\n", + " 'the ones who bring you up from the ones who bring you down',\n", + " 'the creepy bastards from the golden few',\n", + " 'and like the devil runs from holy water',\n", + " 'run from the ones that say \"i love you\"',\n", + " 'run from the ones that say \"i love you\"',\n", + " 'in this everlasting end',\n", + " 'sort your enemies and friends',\n", + " 'the ones who bring you up from the ones who bring you down',\n", + " 'the creepy bastards from the golden few',\n", + " 'and like the devil runs from holy water',\n", + " 'run from the ones that say \"i love you\"',\n", + " 'run from the ones that say \"i love you\"',\n", + " 'ich hab angst um dich',\n", + " 'ich seh das du taumelst',\n", + " 'du siehst so zerissen aus',\n", + " 'du weißt nicht wo du hin willst',\n", + " 'du hast den faden verlorn',\n", + " 'du bist aus der balance',\n", + " 'guck in den schatten deiner fehler',\n", + " 'gibst du blendern ihre chance',\n", + " 'und von links und von rechts',\n", + " 'will ein rauer wind dich lenken',\n", + " 'geh mit der zeit',\n", + " 'aber fall nicht in alte fehler',\n", + " 'denn die wahrheit liegt',\n", + " 'irgendwo in der mitte',\n", + " 'bitte versprich mir',\n", + " 'das du dein gleichgewicht',\n", + " 'nicht verlierst',\n", + " 'dein glück liegt',\n", + " 'irgendwo in der mitte',\n", + " 'irgendwo in der mitte',\n", + " 'gehört dein herz',\n", + " 'mach mir sorgen um dich',\n", + " 'wenn du von deiner zukunft sprichst',\n", + " 'du bist so leicht zu verführn',\n", + " 'geh nicht mit den falschen leuten mit',\n", + " 'du bist sicher nicht fehlerfrei',\n", + " 'aber du hast dich ganz gut gemacht',\n", + " 'ich bin so gern bei dir',\n", + " 'versprich mir das du auf dich aufpasst',\n", + " 'denn von links und von rechts',\n", + " 'will ein rauer wind dich lenken',\n", + " 'geh nach vorn mit der zeit',\n", + " 'aber mach nicht in alte fehler',\n", + " 'somewhere in the middle',\n", + " 'i’m afraid for you',\n", + " 'i see that you’re faltering',\n", + " 'you look so torn up',\n", + " 'you don’t know where you want to go',\n", + " 'you’ve lost your focus',\n", + " 'you’re out of balance',\n", + " 'look in the shadow of your mistakes',\n", + " 'you give phonies their chance',\n", + " 'and from the left and the right',\n", + " 'a harsh wind will direct you',\n", + " 'keep up with the times',\n", + " 'but don’t fall into the same old blunders',\n", + " 'cause the truth lies',\n", + " 'somewhere in the middle',\n", + " 'please promise me',\n", + " 'that you won’t lose',\n", + " 'your balance',\n", + " 'your happiness lies',\n", + " 'somewhere in the middle',\n", + " 'your heart belongs',\n", + " 'somewhere in the middle',\n", + " 'i worry about you',\n", + " 'when you talk about your future',\n", + " 'you’re easy to mislead',\n", + " 'don’t go along with the wrong crowd',\n", + " 'you’re certainly not without fault',\n", + " 'but you’ve done quite well',\n", + " 'i’m so happy with you',\n", + " 'promise me you’ll take good care of yourself',\n", + " '‘cause from the left and right',\n", + " 'a harsh wind will direct you',\n", + " 'go forward with the times',\n", + " 'but don’t make the same old mistakes',\n", + " '\"der nächste song für euch: armata...\"',\n", + " '(strigoi!)',\n", + " '\"freunde, ich will euch hören!\"',\n", + " 'hey, hey!',\n", + " '(hey, hey, hey, hey, hey, hey!)',\n", + " '(hey, hey, hey, hey, hey, hey!)',\n", + " '\"gebt mir mehr!\"',\n", + " 'hey, hey!',\n", + " '(hey, hey, hey, hey, hey, hey!)',\n", + " '(hey, hey, hey, hey, hey, hey!)',\n", + " 'stand up for god in the land of the fire',\n", + " \"bring on the madness, you're born to destroy\",\n", + " 'beyond the trail of tartarean riders',\n", + " 'armata strigoi',\n", + " 'before the morning can break we retire',\n", + " 'the searing heat of the sun we avoid',\n", + " 'await the dark, proud walachian fighters',\n", + " 'armata strigoi',\n", + " 'we are the stormbound, the avatar, oh',\n", + " 'we are the sons of god and sorrow',\n", + " 'we are the ones who see no tomorrow',\n", + " 'suck up, armata de strigoi',\n", + " 'hey, hey!',\n", + " '(hey, hey, hey, hey, hey, hey!)',\n", + " '(hey, hey, hey, hey, hey, hey!)',\n", + " 'we hail the cross and we kill by the bible',\n", + " 'for seven sins are defined to deploy',\n", + " 'along the front of moldavian strikers',\n", + " 'armata strigoi',\n", + " 'we pray for mercy of mater maria',\n", + " 'the sacred lie who gave birth to the boy',\n", + " 'we drink the blood of the fallen believer',\n", + " 'armata strigoi',\n", + " 'we are the stormbound, the avatar, oh',\n", + " 'we are the sons of god and sorrow',\n", + " 'we are the ones who see no tomorrow',\n", + " 'suck up, armata de strigoi',\n", + " '\"so freunde, jetzt singen wir, was wir gelernt haben!\"',\n", + " 'oh-oh oh, oh-oh-oh oh, oh oh',\n", + " 'oh-oh oh, oh-oh-oh oh, oh oh',\n", + " 'oh-oh oh, oh-oh-oh oh, oh oh',\n", + " 'oh oh, oh-oh-oh, oh oh',\n", + " '\"ihr allein!\"',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '\"sehr gut!\"',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '\"fantastisch!\"',\n", + " '(oh oh, oh-oh-oh, oh oh)',\n", + " '\"und jetzt noch mal nur die ränge, die ränge!\"',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '\"ah, kommt!\"',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '\"sehr schön!\"',\n", + " '(oh oh, oh-oh-oh, oh oh)',\n", + " '\"jetzt nur die frauen!\"',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '\"du bist keine frau.\"',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '\"frauen!\"',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '\"oh, das ist schön.\"',\n", + " '(oh oh, oh-oh-oh, oh oh)',\n", + " '\"und jetzt die männer!\"',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '(oh oh, oh-oh-oh, oh oh)',\n", + " '\"und noch einmal alle zusammen!\"',\n", + " 'oh-oh oh',\n", + " '(oh-oh-oh oh, oh oh)',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", + " '(oh oh, oh-oh-oh, oh oh)',\n", + " '\"ich muss sagen, die deutschen singen echt am besten',\n", + " 'vielen dankeschön!\"',\n", + " '\"ich will euch nochmal hören!\"',\n", + " 'hey, hey!',\n", + " '(hey, hey, hey, hey, hey, hey!)',\n", + " '(hey, hey, hey, hey, hey, hey!)',\n", + " 'we are the stormbound, the avatar, oh',\n", + " 'we are the sons of god and sorrow',\n", + " 'we are the ones who see no tomorrow',\n", + " 'suck up, armata de strigoi',\n", + " 'hop on board, take a ride',\n", + " 'a brand new steelhorse drives our foreign exchanges home',\n", + " \"it's one more nail into the coffin\",\n", + " 'of this gutted corpse, happily laid to rest and buried',\n", + " 'unsere moralische',\n", + " 'bankrotterklärung',\n", + " 'solange die kasse stimmt',\n", + " 'sind wir auf',\n", + " 'beiden augen blind',\n", + " 'beiden augen blind',\n", + " 'like a new storm',\n", + " 'you take me to the exile of my mind!',\n", + " \"you're my saviour, the unknown, somewhere before my eyes!\",\n", + " 'this is me following your footsteps',\n", + " 'trying to get access into the end',\n", + " 'is it you, the perfect moment after?',\n", + " 'or just yesterday again?',\n", + " \"i've been searching, i've been waiting\",\n", + " 'for the best day of my life!',\n", + " 'can you feel me, can you safe me',\n", + " 'on the best day of my life?',\n", + " 'no more breaking, breaking, breaking bad',\n", + " 'wanna wake up, wake up from the death',\n", + " \"i'll be fightin', i'll be dyin'\",\n", + " 'for the best day of my life',\n", + " 'aufstehen, zähne putzen, haare kämmen',\n", + " 'weiße schuhe, graue hose, schwarzer cardigan!',\n", + " \"sag' mir bescheid, wenn ich noch irgendwas vergessen hab', ich bin perfekt ausgestattet für meinen besten tag\",\n", + " \"und du fragst, was so besonders daran ist, dann sag' ich:\",\n", + " 'heute scheint die sonne nur für mich, sie mag mich!',\n", + " 'meine augen sind rot und glasig',\n", + " \"ich sitz' im park und mach die arbeit eines habichts - gar nichts!\",\n", + " \"24/7 bleib' ich cool wie'n gletscher\",\n", + " 'schöner tag, du bist mein bester!',\n", + " \"ich hab' dich gesucht und gefunden!\",\n", + " \"und jetzt bleiben mir nur'n paar stunden!\",\n", + " 'this is me following your foot steps',\n", + " 'trying to get access into the end',\n", + " 'is it you, the perfect moment after?',\n", + " 'or just yesterday again?',\n", + " \"i've been searching, i've been waiting\",\n", + " 'for the best day of my life!',\n", + " 'can you feel me, can you safe me',\n", + " 'on the best day of my life?',\n", + " 'no more breaking, breaking, breaking bad',\n", + " 'wanna wake up, wake up from the death',\n", + " \"i'll be fightin', i'll be dyin'\",\n", + " 'for the best day of my life',\n", + " 'life!',\n", + " 'the best day of my life!',\n", + " 'the best day of my life!',\n", + " '(for the best day)',\n", + " 'of my life!',\n", + " '(for the best day)',\n", + " 'of my life!',\n", + " \"i'll be hangin' on, i'll be coming strong\",\n", + " 'on the best day of my life!',\n", + " 'this is how i feel, this time is for real',\n", + " 'on the best day of my life!',\n", + " 'no more breaking, breaking, breaking bad',\n", + " 'wanna wake up, wake up from the death',\n", + " \"i'll be fightin', i mean dyin'\",\n", + " 'for the best day of my life!',\n", + " 'for the best day of my life',\n", + " 'i enter the gates',\n", + " 'into the realm where nothing dies',\n", + " \"but i'm still so cold inside\",\n", + " 'mesmerized...',\n", + " 'by visions past and gone',\n", + " 'till the end of time',\n", + " 'i will eternally dwell',\n", + " 'im dunkelsten der stürme',\n", + " 'falle zusammen die kerkerwand',\n", + " 'die mich schier endlos band',\n", + " 'und herrlicher und freier walle',\n", + " 'meine seele ins unbekannte land',\n", + " 'in the darkest of storms',\n", + " 'may crumble the dungeonwall',\n", + " 'that bound me almost endlessly',\n", + " 'and delightful and free may pilgrimage',\n", + " 'my soul into the unknown land',\n", + " 'i fly with the raven',\n", + " 'through timeless spheres of frost...',\n", + " 'through wasted lands of dreams',\n", + " 'geflohen vor der wirklichkeit - vor ewigkeiten',\n", + " 'und jenseits der schwärze erstreckt sich',\n", + " 'ein unendliches meer aus grau...',\n", + " 'ein meer aus gestaltloser leere',\n", + " 'doch die qualen und der schmerz verbleiben',\n", + " 'als erinnerungen an die vergangene zeit',\n", + " 'stolz und doch verzweifelt...',\n", + " 'und in meinem innersten hoffe ich',\n", + " 'daß mein leben nur ein traum ist...',\n", + " 'fled from reality - for eternities',\n", + " 'and on the other side of the blackness',\n", + " 'an endless sea of greyness extends...',\n", + " 'a sea of formless emptiness',\n", + " 'yet the misery and the pain remain',\n", + " 'as memories of passed time',\n", + " 'proud yet desperate...',\n", + " 'and deep inside i hope',\n", + " 'that my life is just a dream...',\n", + " 'the moon is my blanket',\n", + " 'in this cold domain',\n", + " 'so ancient - so cold...',\n", + " 'as a nightmare creature i crawl',\n", + " 'awakened from my sleep',\n", + " 'to forever be...',\n", + " 'wiedergeboren...',\n", + " 'bei den drei monden durch mittwinters tore',\n", + " 'reborn...',\n", + " \"by the three moons through midwinter's gates\",\n", + " \"i'm a shadow on haunted ground\",\n", + " 'laughing in sorrow',\n", + " 'crying in lust',\n", + " 'the storm is calming and death is rising',\n", + " 'evil - as pure as night',\n", + " 'proud - full of sin',\n", + " \"once again i'll rise...\",\n", + " 'to survive eternity...',\n", + " 'and all the colours collide',\n", + " 'and we are wasting into the now or never',\n", + " 'as we ascend to an end',\n", + " 'the friends we have will all just dream together',\n", + " \"we haven't gotten this far\",\n", + " 'is there a chance that we can go the tether?',\n", + " \"i haven't practiced this part\",\n", + " \"but that's the way that we're gonna roll forever\",\n", + " 'into the now, into the now, the now or never',\n", + " 'into the now, into the now, the now or never',\n", + " 'immer wieder sind wir alle tagediebe',\n", + " 'immer diese weltanschauung',\n", + " 'ist auf einmal aufgetaut sag jetzt oder nie',\n", + " 'fick mich michi, fick mich, bitte fick mich',\n", + " 'fick mich michi, fick mich',\n", + " 'fick mich michi, fick mich, bitte fick mich',\n", + " 'fick mich michi, fick mich',\n", + " 'der michael der michael der',\n", + " 'ist im kopfe nicht sehr hell',\n", + " \"doch was da fehlt ihm unter'm schopf\",\n", + " 'gar prächtig blüht im lendenkropf',\n", + " 'bei den fräulein überland',\n", + " 'war er für liebeskunst bekannt',\n", + " 'alle damen, aller ort',\n", + " 'sangen so in einem fort',\n", + " \"g-spot michael, g-spot michael soon i' m gonna die\",\n", + " 'pounding like a fourstroke cycle make me happy make me cry',\n", + " 'g-point michael, g-point michael nothing left to say',\n", + " 'banging like a fourstroke cycle all night long i say',\n", + " 'doch bald ist ihm die lust verkommen',\n", + " 'hat sich der sache übernommen',\n", + " 'sich beim liebesspiel verbogen',\n", + " 'und nach südafrika gezogen',\n", + " 'der wind weht leise übers meer',\n", + " 'über berge zu mir her',\n", + " 'wird mir kund zu ohren bringen',\n", + " 'in afrika die mädchen singen',\n", + " 'i know why i have to die',\n", + " \"it's like my body all the veins are bleeding dry\",\n", + " 'the blood falls from the heart above',\n", + " 'down near in the part i need for love',\n", + " 'i know why i have to die',\n", + " 'all my cells inside are running dry',\n", + " 'all my tears i gave away',\n", + " \"doesn't matter all night long i stay\",\n", + " 'i know why i have to die',\n", + " 'inside my body all the veins are bleeding dry',\n", + " 'all the blood falls from the heart above',\n", + " 'down near in the part i need for love',\n", + " '\"seid ihr bereit für the army of...\"',\n", + " '(the night)',\n", + " 'stand up all the night and call the fight',\n", + " 'let your mind go wild before the light',\n", + " 'here we come, the army of the night',\n", + " 'mater maria',\n", + " 'lined up side by side and bound to pray',\n", + " 'sent to die and fight the final day',\n", + " 'army of the night, we came to stay',\n", + " 'mater maria',\n", + " 'better you pray before the night is falling',\n", + " 'call on the heaven sent, amen',\n", + " \"follow the night, it's your messiah calling\",\n", + " 'bring on the sacrament, amen',\n", + " 'come on the other side',\n", + " 'into the dark we hide',\n", + " 'gather them for the rite',\n", + " 'sacristarum',\n", + " 'we are the force allied',\n", + " 'into the war we ride',\n", + " 'halleluja',\n", + " 'stand up all the night and call the fight',\n", + " 'let your mind go wild before the light',\n", + " 'here we come, the army of the night',\n", + " 'mater maria',\n", + " 'lined up side by side and bound to pray',\n", + " 'sent to die and fight the final day',\n", + " 'army of the night, we came to stay',\n", + " 'mater maria',\n", + " \"enemies falling when the sermon's spoken\",\n", + " 'taken by higher hand, amen',\n", + " 'follow the martyrs when the bible broken',\n", + " 'summon the testament, amen',\n", + " 'come on the other side',\n", + " 'into the dark we hide',\n", + " 'gather them for the rite',\n", + " 'sacristarum',\n", + " 'we are the force allied',\n", + " 'into the war we ride',\n", + " 'halleluja',\n", + " 'stand up all the night and call the fight',\n", + " 'let your mind go wild before the light',\n", + " 'here we come, the army of the night',\n", + " 'mater maria',\n", + " 'lined up side by side and bound to pray',\n", + " 'sent to die and fight the final day',\n", + " 'army of the night, we came to stay',\n", + " 'mater maria',\n", + " '\"ludwigsburg!',\n", + " 'seid ihr unsere heavy-metal-armee heute nacht?\"',\n", + " 'stand up all the night and call the fight',\n", + " 'let your mind go wild before the light',\n", + " 'here we come, the army of the night',\n", + " 'mater maria',\n", + " 'sanctify the night for all the time',\n", + " 'break the bread and raise the holy wine',\n", + " 'army of the night, go walk the line',\n", + " 'mater maria',\n", + " '\"frauen, seid ihr da?',\n", + " 'frauen, seid ihr da?',\n", + " 'meine lieben frauen, könnt ihr euch vielleicht kurz vorstellen, dass hier auf bühne ein super sexy rockstar steht und würdet ihr mich wieder noch mal so anschreien, noch ein bisschen mehr, wenn ich euch frage:',\n", + " 'frauen, seid ihr da?\"',\n", + " '\"uh, da platzt kurz das trommelfell',\n", + " 'männer, seid ihr da?\"',\n", + " '\"schon machst du arme hoch, schon kommen die männer, super!',\n", + " 'männer! zeigt mir bitte eine hand. aber bitte nur eine',\n", + " 'und wenn er nun bewegt diese hand an euer gemächt für den nächsten song.\"',\n", + " \"ich riech' nach feiern und nach fremden\",\n", + " 'ich hab mein gleichgewicht verloren',\n", + " 'ich klopfe morgens an dein fenster',\n", + " 'bis deine nachbarn es auch hören',\n", + " 'ich verstreue meine sachen',\n", + " 'überall liegt was von mir',\n", + " 'ich lege netze, stelle fallen',\n", + " 'und teste dich so auf gespür',\n", + " 'immer wieder',\n", + " 'sing ich die liebeslieder',\n", + " 'vom kampf ohne verlierer',\n", + " 'und du hörst mir zu',\n", + " 'deine wünsche sind nicht bescheiden',\n", + " 'du sagst:„mon chèr. sei lieb, madame.“',\n", + " 'erwischst mich auf eine art und weise',\n", + " 'da fang ich glatt das streiten an',\n", + " 'wir kennen uns jetzt fast schon lange',\n", + " 'es heute zu sagen ist nur fair',\n", + " 'du weißt, ich bin kein kleines mädchen',\n", + " 'und du kein kleine junge',\n", + " 'immer wieder',\n", + " 'sing ich die liebeslieder',\n", + " 'vom kampf ohne verlierer',\n", + " 'und du hörst mir zu',\n", + " \"immer wieder verkling'n die liebeslieder\",\n", + " 'ich weiß, du willst ein sieger',\n", + " 'doch ganz dein nur, werd ich nie sein',\n", + " 'in deinen armen will ich weilen',\n", + " 'in deinen armen will ich reisen',\n", + " 'in deinen armen will ich weinen',\n", + " 'in deinen armen will ich sein',\n", + " 'immer wieder',\n", + " 'sing ich die liebeslieder',\n", + " 'vom kampf ohne verlierer',\n", + " 'und du hörst mir zu',\n", + " 'immer wieder, sing ich dir diese lieder',\n", + " 'vom au, au auf und nieder',\n", + " 'doch ganz dein nur, werd nie ich sein',\n", + " 'doch immer wieder dein. doch immer wieder dein',\n", + " 'immer wieder. doch immer wieder',\n", + " 'again and again',\n", + " 'i smell like parties and strangers',\n", + " 'i have lost my balance',\n", + " 'i knock on your window in the morning',\n", + " 'until your neighbors hear it too',\n", + " 'i scatter my things',\n", + " 'my stuff lies everywhere',\n", + " \"i'm placing nets, setting traps\",\n", + " \"and i'm testing your intuition\",\n", + " 'again and again',\n", + " \"i'm singing love songs\",\n", + " 'of a fight without a loser',\n", + " \"and you're listening to me\",\n", + " 'your wishes are not modest',\n", + " 'you say: \"my dear. be kind, madame.\"',\n", + " 'catch me in a way',\n", + " 'then i begin to smooth over the quarrel',\n", + " 'we’ve known each other now for quite along time',\n", + " 'it is only fair to say today',\n", + " \"you know, i'm not a little girl\",\n", + " 'and you are not a little boy',\n", + " 'again and again',\n", + " \"i'm singing love songs\",\n", + " 'of a fight without a loser',\n", + " \"and you're listening to me\",\n", + " 'again and again the love songs fade away',\n", + " 'i know you want a winner',\n", + " \"but i'll never be just yours completely\",\n", + " 'i want to stay in your arms',\n", + " 'i want to go to your arms',\n", + " 'i want to cry in your arms',\n", + " 'i want to be in your armw',\n", + " 'again and again',\n", + " \"i'm singing love songs\",\n", + " 'of a fight without a loser',\n", + " \"and you're listening to me\",\n", + " 'again and again, i sing you this song',\n", + " 'of good and bad',\n", + " \"but i'll never be just yours completely\",\n", + " 'but yours, again and again',\n", + " 'but yours, again and again',\n", + " 'again and again',\n", + " 'but again and again',\n", + " 'wir tanzen elektrisch',\n", + " 'ganz hektisch',\n", + " 'wir schwingen fantastisch',\n", + " 'elastisch',\n", + " \"wir dreh'n uns narkotisch\",\n", + " 'hyperhypnotisch',\n", + " 'wir tanzen den rhythmus',\n", + " 'wo ich mit muss',\n", + " 'feed my fire',\n", + " 'let me put some',\n", + " 'dust on your face',\n", + " 'heat my wire',\n", + " 'you make me feel ecstatic',\n", + " 'make me dance fanatic tonight',\n", + " 'tanz - fanatica',\n", + " 'tanz - fanatica',\n", + " 'wir tanzen elektrisch',\n", + " 'ganz hektisch',\n", + " 'wir schweben erotisch',\n", + " 'neoexotisch',\n", + " 'wir wiegen uns kryptisch',\n", + " 'apokalyptisch',\n", + " 'wir tanzen ekstatisch',\n", + " 'wir tanzen fanatisch',\n", + " 'feed my fire',\n", + " 'let me put some',\n", + " 'dust on your face',\n", + " 'heat my wire',\n", + " 'you make me feel ecstatic',\n", + " 'make me dance fanatic tonight',\n", + " 'tanz - fanatica',\n", + " 'tanz - fanatica',\n", + " 'feed my fire',\n", + " 'let me put some',\n", + " 'dust on your face',\n", + " 'heat my wire',\n", + " 'you make me feel ecstatic',\n", + " 'make me dance fanatic tonight',\n", + " ...]},\n", + " 'data': ['we, we get together',\n", + " 'in nocturnal spaces',\n", + " \"we've seen it all before\",\n", + " \"in other people's faces\",\n", + " 'sich dem absurden unterwerfen',\n", + " 'sich nicht dem wahnsinn unterwerfen',\n", + " 'without fronts and uniforms',\n", + " 'a whole lotta nothing in the name of no one',\n", + " 'in these orgies, in these riots',\n", + " 'the past will never pass',\n", + " 'getarnt als spaß und auch als kummer',\n", + " \"seh' ich nur überall fadess\",\n", + " 'ja, ich weiß, dass es zu früh ist',\n", + " 'und ich weiß auch, dass es spät ist',\n", + " 'that is why time is on my side',\n", + " \"oh i know it's yet too early\",\n", + " \"and i know it's far too late\",\n", + " \"und ich seh' keinen grund zu warten, denn ich hab' alle zeit der welt\",\n", + " 'so we get together',\n", + " 'my nocturnal friends',\n", + " \"we've seen but have we understood the means and the ends?\",\n", + " 'sich dem absurden unterwerfen',\n", + " 'heißt den wahnsinn erst begreifen',\n", + " 'so i am whatever as you are whatever',\n", + " 'a whole lotta nothing in the name of no one',\n", + " 'in these orgies, in these riots',\n", + " 'the past will never pass',\n", + " 'man hat spaß und man hat kummer',\n", + " \"und ich seh' überall fadess\",\n", + " 'in this inferno',\n", + " 'in this inferno',\n", + " 'in this inferno',\n", + " 'in this inferno',\n", + " 'there is no virgil that can guide us',\n", + " 'länge',\n", + " '236 m',\n", + " 'breite auf spanten',\n", + " 'max. 48 m',\n", + " 'seitenhöhe bis hauptdeck',\n", + " '27,9 m',\n", + " 'tiefgang',\n", + " 'max. 14,21 m',\n", + " 'verdrängung bei max. tiefgang',\n", + " '24.300 t',\n", + " 'leergewicht',\n", + " '19.820 t',\n", + " 'motorleistung (12 maschinen)',\n", + " 'ca. 75.000 ps',\n", + " 'höchstgeschwindigkeit',\n", + " 'unwahrscheinlich',\n", + " 'besonderheit',\n", + " 'unsinkbar',\n", + " 'length',\n", + " '236 m',\n", + " 'width on frame',\n", + " 'max. 48 m',\n", + " 'depth to main deck',\n", + " '27,9 m',\n", + " 'draft',\n", + " 'max. 14,21 m',\n", + " 'maximum displacement',\n", + " '24.000 t',\n", + " 'lightweight tonnage',\n", + " '19.280 t',\n", + " 'engine power (12 machines)',\n", + " 'ca. 75.000 ps',\n", + " 'maximum speed',\n", + " 'implausible',\n", + " 'special ability',\n", + " 'unsinkable',\n", + " 'in all den jahren hast du so viel erlebt',\n", + " 'und du merkst immer wieder',\n", + " 'wie schnell wie die zeit vergeht',\n", + " 'denn du bist noch lange nicht satt',\n", + " 'ein weiter weg der liegt noch vor dir',\n", + " 'vergiss mal deine sorgen',\n", + " 'und leb im jetzt und hier',\n", + " 'the days of glory - you feel alright',\n", + " 'for days of glory - go out and fight',\n", + " 'in days of glory - you never loose the sight',\n", + " 'in another wasted night',\n", + " 'vergeude nicht die tage',\n", + " 'sie ziehen so schnell vorbei',\n", + " 'tu und mach was dir gefällt',\n", + " 'ja lebe und sei frei',\n", + " 'es kann so schnell zu ende sein',\n", + " 'genieße jedes jahr',\n", + " 'das leben es ist kostbar',\n", + " 'es ist einfach wunderbar',\n", + " 'the days of glory - you feel alright',\n", + " 'for days of glory - go out and fight',\n", + " 'in days of glory - you never loose the sight',\n", + " 'in another wasted night',\n", + " 'the days of glory - you feel alright',\n", + " 'for days of glory - go out and fight',\n", + " 'in days of glory - you never loose the sight',\n", + " 'with you`re heart full of pride',\n", + " 'absolute rule',\n", + " 'reason alone did not prevail',\n", + " 'only one hope',\n", + " 'your time is up',\n", + " 'and all new entities',\n", + " \"will dawn and they'll be risen from no ashes\",\n", + " 'merciless and adamant',\n", + " 'all options gone',\n", + " 'we are surrounded by the wolves',\n", + " 'es zwingt dich auf die knie',\n", + " 'vor unerbittlichem stehst du allein',\n", + " 'und voller zweifel im zustand der angst',\n", + " 'endlich, beugt sich dein haupt der übermacht',\n", + " 'du hast die henker selbst gewählt',\n", + " 'hast jeden widerstand aus deinem geist verbannt',\n", + " 'als die jahre des handelns verstrichen',\n", + " 'dein tanz im lügenreigen',\n", + " 'brachte dein treues herz zum schweigen',\n", + " 'days of the green wolves dawning',\n", + " 'a new hegemony ascending, survive at any cost',\n", + " \"like flies you'll crowd around the only light\",\n", + " 'no storm will sweep away what you call safety',\n", + " 'no war will swallow all your rapture',\n", + " 'for generations, unfolding in obscurity',\n", + " 'lifted upward to the stars by collective heresy',\n", + " 'days of the green wolves dawning',\n", + " 'a new hegemony ascending, survive at any cost',\n", + " 'now you know, time wasted is time lost',\n", + " 'es ist vorbei',\n", + " 'vor unerbittlichem stehst du allein',\n", + " \"und ohne gnade hör' ich die seelen brechen\",\n", + " 'endlich, devot folgst du dem übergang',\n", + " 'did you never see the shadows?',\n", + " 'freedom from danger is no more',\n", + " 'how could you fail to hear the echoes?',\n", + " 'the calling of impending doom',\n", + " 'days of the green wolves dawning',\n", + " 'a new hegemony ascending, survive at any cost',\n", + " 'so much too late you saw and understood',\n", + " 'es zwingt dich auf die knie',\n", + " 'endlich, beugt sich dein haupt der übermacht',\n", + " 'es steckt in meinem kopf, es klebt an meinen schuhen',\n", + " 'they brought it on the news last afternoon',\n", + " \"the dark times, they've just begun\",\n", + " \"there's darkness in the years to come\",\n", + " 'ich ahnte schlimmes, es kam schrecklich schlimm',\n", + " 'bleibt alles weg, bleibt alles hin',\n", + " 'ich hab\\'s probiert, man sagte mir: \"lass\\' es\"',\n", + " 'now i smash empty glasses',\n", + " \"i could easily blame it on somebody but it's all to blame on me\",\n", + " '(last-born of an inbred dynasty)',\n", + " \"i'm the last-born of an inbred dynasty\",\n", + " 'my mother is barbarie itself',\n", + " '(i could easily blame it on somebody)',\n", + " \"i could easily blame it on somebody but it's all to blame on me\",\n", + " \"so i can't cry you a river\",\n", + " 'for there is salt in my tears',\n", + " 'but if i cried you an ocean',\n", + " 'it would flood us for years',\n", + " 'es steckt in meinem kopf, es klebt an meinen schuhen',\n", + " 'they brought it on the news last afternoon',\n", + " \"the dark times, they've just begun\",\n", + " \"there's darkness in the years to come\",\n", + " '(i could easily blame it on somebody)',\n", + " \"i'm the last-born of an inbred dynasty\",\n", + " '(last-born of an inbred dynasty)',\n", + " 'my mother is barbarie itself',\n", + " '(i could easily blame it on somebody)',\n", + " \"i could easily blame it on somebody but it's all to blame on me\",\n", + " '(last-born of an inbred dynasty)',\n", + " \"i'm the last-born of an inbred dynasty\",\n", + " 'my mother is barbarie itself',\n", + " '(i could easily blame it on somebody)',\n", + " \"i could easily blame it on somebody but it's all to blame on my family\",\n", + " 'im sturz durch raum und zeit',\n", + " 'richtung unendlichkeit',\n", + " 'fliegen motten in das licht',\n", + " 'genau wie du und ich',\n", + " \"wrap your fingers 'round my neck\",\n", + " \"you don't speak my dialect\",\n", + " 'but our images reflect',\n", + " 'drawn together by the flame',\n", + " 'we are just the same',\n", + " 'embrace the wind and fall into',\n", + " 'another time and space',\n", + " \"gib' mir die hand\",\n", + " 'ich bau dir ein schloss aus sand',\n", + " 'irgendwie irgendwo irgendwann',\n", + " 'if we belong to each other, we belong',\n", + " 'anyplace anywhere anytime',\n", + " 'im sturz durch zeit und raum',\n", + " 'erwacht aus einem traum',\n", + " 'nur ein kurzer augenblick',\n", + " 'dann kehrt die nacht zurã¼ck',\n", + " 'bits and pieces from your storm',\n", + " 'rain upon me as they form',\n", + " 'melt into my skin and i feel warm',\n", + " 'sweep upon me like a wave',\n", + " 'we are young and brave',\n", + " 'embrace the wind and float into',\n", + " 'another time and space',\n", + " 'if we belong to each other, we belong',\n", + " 'anyplace anywhere anytime',\n", + " \"i'm going to any world you're coming from\",\n", + " 'anyplace anywhere anytime',\n", + " '(drawn together by the flame)',\n", + " '(we are just the same)',\n", + " '(embrace the wind and fall)',\n", + " '(into another time and space)',\n", + " \"i'm going to any world you're coming from\",\n", + " 'anyplace anywhere anytime',\n", + " 'oben auftauen wo noch bama stehn die seit üba hundat joah kane winde verwehn liegt der fleck auf erdn in mein heazn drin do bin i daham und do gheari hin',\n", + " \"i'm a man from the mountain high that's where i belong and i'm playing you my song i am strong is number one singing from my soul i'm the man of volksrock'n'roll, yes i'm the man of volksrock'n'roll\",\n", + " 'wo da urknoi auf die erdn knoit wiads im somma woam und im winta koid',\n", + " \"wo der wüdboch rauscht und noch blumen blühn in mein heimatlaund die oipn glühn i'm a man from the mountains high that's where i belongand i'm playing you my song i am strong is number one singing from my soul i'm the man of volksrock'n'roll yes i'm the man of volksrock'n'roll\",\n", + " 'i bin a kerniger bergbauernbua vo de madl ihre wadl griag i net gnua geh min frühwirth an heben er einschlofen kau',\n", + " 'bin a 12ender hirsch sing a liad fia di',\n", + " 'sog zum sweet little rehlein so liab hobi di jo do nur do bin i dahoam',\n", + " \"i'm a man from the mountain high that's where i belong and i'm playing you my song i am strong is number one singing from my soul i'm the man of volksrock'n'roll, yes i'm the man of volksrock'n'roll\",\n", + " 'pain in me is getting stronger and stronger',\n", + " 'but the will is in me no longer no longer',\n", + " 'it is the time when evil defeated me... ...evil defeated me',\n", + " 'my life is now quickly departing me',\n", + " 'but i feel just now, what we have done',\n", + " 'the green hunter we lied to...',\n", + " 'the green hunter we lied to',\n", + " 'schwarzes viech du bringsch üs doch dr tod...',\n", + " 'wo d seele frisst i üsere gröschte not!',\n", + " 'close around mе, many of my friends die',\n", + " 'children and womеn and (even) all the animals...',\n", + " 'may you rest in peace... may you rest in peace!',\n", + " 'we would have listened to your words',\n", + " 'then all this would not have happened...',\n", + " 'the beast in me is what i hate...',\n", + " 'the beast in me is what i hate...',\n", + " 'mir kämpfe doch dänke... dass es nümme eytergeit',\n", + " 'mir stärbe u wärde... jetze nümm uf hände treit',\n", + " 's dunkle wird grösser... ds tier i üsem körper wachst...',\n", + " 'bis e wäg het gfunge... wos dür üsi hut doch passt...',\n", + " 'schwarzi chlaue wie dr tod...',\n", + " 'ig gschpüre es stäche... töif i mire bruscht...',\n", + " 's unghüür chunnt... es het ufs töte luscht',\n", + " 'es frisst sich dür hut und fleisch...',\n", + " 'bis nimm weisch wo du jetzt schteisch...',\n", + " '...u wartet bis z härz schtiuschtoht...',\n", + " 'denn läbe duets... vo aunes tod',\n", + " 'ich schlag mir eine wunde',\n", + " 'die meinen körper ziert',\n", + " 'bestreu sie sanft mit salz',\n", + " 'damit sie schöner wird',\n", + " 'ich lass mich selbst zur ader',\n", + " 'öffne die haut ganz sacht',\n", + " 'genieß den kuss der klinge',\n", + " 'die mich zum manne macht',\n", + " 'ich häng mich auf an dünnen drähten',\n", + " 'ich hab mich selbst darum gebeten',\n", + " 'ich tu mir leid so leid',\n", + " 'ich tu mir leid so leid',\n", + " 'ich fürcht mich nicht vorm schwarzen mann',\n", + " 'weil ich mir selbst was antun kann',\n", + " 'ich muss',\n", + " 'ich muss mir wieder weh tun',\n", + " 'ich tu mir leid so leid',\n", + " 'ich muss',\n", + " 'ich muss mir wieder weh tun',\n", + " 'weil nur der schmerz mich heilt',\n", + " 'ich liebe meine narbe',\n", + " 'in ihrer ganzen pracht',\n", + " 'ein hübsches souvenir',\n", + " 'hab ich mir selbst gemacht',\n", + " 'ich beiß mir auf die zunge',\n", + " 'und leide ohne laut',\n", + " 'zieh mir das alte messer',\n", + " 'noch einmal durch die haut',\n", + " 'doch wenn ich mich im spiegel seh',\n", + " 'tut mir mein kleines herz so weh',\n", + " 'da ist noch platz auf meiner haut',\n", + " 'werd wieder tun wovor mir graut',\n", + " 'ich muss',\n", + " 'ich muss mir wieder weh tun',\n", + " 'ich tu mir leid so leid',\n", + " 'ich muss',\n", + " 'ich muss mir wieder weh tun',\n", + " 'weil nur der schmerz mir bleibt',\n", + " 'ich muss',\n", + " 'ich muss mir wieder weh tun',\n", + " 'ich tu mir selbst so leid',\n", + " 'ich muss mir wieder weh tun',\n", + " 'weil nur der schmerz mir bleibt',\n", + " 'i beat myself a wound',\n", + " 'that adorns my body',\n", + " 'i sprinkle it softly with salt',\n", + " 'to make it more beautiful',\n", + " 'i let myself to the vein',\n", + " 'and open the skin gently',\n", + " 'i enjoy the kiss of the blade',\n", + " 'that makes me into a man',\n", + " 'i hang myself on thin wires',\n", + " 'i asked myself to do it',\n", + " 'i feel sorry for myself so sorry*',\n", + " 'i feel sorry for myself so sorry',\n", + " 'i am not afraid of the bogeyman',\n", + " 'because i can do away with myself on my own',\n", + " 'i must',\n", + " 'i must hurt myself again',\n", + " 'i feel sorry for myself so sorry',\n", + " 'i must hurt myself again',\n", + " 'because only the pain heals me',\n", + " 'i love my scar',\n", + " 'in all its splendor',\n", + " 'a nice souvenir',\n", + " 'i made it myself',\n", + " 'i bite my tongue',\n", + " 'and suffer in silence',\n", + " 'i draw the old knife',\n", + " 'through my skin once more',\n", + " 'but when i see myself in the mirror',\n", + " 'my little heart hurts so badly',\n", + " 'there is still room on my skin',\n", + " 'i will do again that which i dread',\n", + " 'i must',\n", + " 'i must hurt myself again',\n", + " 'i feel sorry for myself so sorry',\n", + " 'i must hurt myself again',\n", + " \"because the pain is all that's left for me\",\n", + " 'i must',\n", + " 'i must hurt myself again',\n", + " 'i feel so sorry for myself',\n", + " 'i must',\n", + " 'i must hurt myself again',\n", + " 'i harm myself',\n", + " 'i must hurt myself again',\n", + " \"because the pain is all that's left for me\",\n", + " \"don't you come looking for us\",\n", + " \"we can't be found\",\n", + " \"don't you come looking for us\",\n", + " \"we can't be found\",\n", + " 'pray to the dark one (pray to the sun god)',\n", + " \"the saints gonna bleed (holy ghost's gonna bleed)\",\n", + " 'pray to the dark one (pray to the sun god)',\n", + " \"the saints gonna bleed (holy ghost's gonna bleed)\",\n", + " 'warte nicht auf die antwort',\n", + " 'sie kommt, sie kommt',\n", + " \"don't you come looking for us\",\n", + " \"we can't be found\",\n", + " 'wir brauchen blut für den neuen gott (blood for the new god)',\n", + " 'blut für den neuen gott (blood for the new god)',\n", + " 'm a l a c h',\n", + " 'a m a n e c',\n", + " 'l a n a n a',\n", + " 'a n a n a l',\n", + " 'blut für den neuen gott',\n", + " 'blut für den neuen gott',\n", + " 'warte nicht auf die antwort',\n", + " 'blood for the new god',\n", + " 'der rechte mob steht in bereitschaft',\n", + " 'für die schlacht um die nation',\n", + " 'aber wir sitzen noch im plenum',\n", + " 'bei der achten diskussion',\n", + " 'obwohl wir eigentlich doch einig sind',\n", + " 'reiben wir uns auf an tausenden von kleinigkeiten',\n", + " 'wenn ihr wollt, dass wir diesen weg gemeinsam gehen',\n", + " 'darf eines nicht fehlen',\n", + " 'und das ist solidarität!',\n", + " \"let's get united, let's get united\",\n", + " \"solidarity, let's get united\",\n", + " \"let's get united, don't stay divided\",\n", + " \"solidarity, let's get united\",\n", + " \"let's get united!\",\n", + " 'tu lo sai, non è un gioco',\n", + " 'la tua gente, la tua storia',\n", + " \"è ora di metter da parte l'odio, l'invidia e la falsa gloria\",\n", + " 'guarda avanti, davanti a te',\n", + " 'mille volti diversi, ma uguali a te',\n", + " \"uniti si vince, l'unione fa la forza e la tua forza è unione\",\n", + " 'solidarietà!',\n", + " \"let's get united, let's get united\",\n", + " \"solidarity, let's get united\",\n", + " \"let's get united, don't stay divided\",\n", + " \"solidarity, let's get united\",\n", + " \"let's get united!\",\n", + " 'brothers and sisters',\n", + " 'we can unite',\n", + " 'raise your voice and make it heard',\n", + " \"you won't give up the fight\",\n", + " 'stand for your principles',\n", + " 'stick to your thoughts',\n", + " 'we will show them together, together as one',\n", + " 'there is still faith left in the human race',\n", + " 'sing it loud, sing it proud!',\n", + " \"let's get united, people unite!\",\n", + " \"let's get united, solidarity!\",\n", + " \"let's get united, let's get united\",\n", + " \"solidarity, let's get united\",\n", + " \"let's get united, don't stay divided\",\n", + " \"solidarity, let's get united\",\n", + " \"let's get united, let's get united\",\n", + " \"solidarity, let's get united\",\n", + " \"let's get united, don't stay divided\",\n", + " \"solidarity, let's get\",\n", + " 'united, united, united, united',\n", + " 'united, united, united, united',\n", + " 'deine liebe gibt mir die kraft',\n", + " 'deine göttlichkeit macht mich schwach',\n", + " \"wie ein engel i'm weißen licht\",\n", + " 'nur durch dich verliere ich mich',\n", + " 'deine liebe ist wie magie',\n", + " 'voller stolz und harmonie',\n", + " 'ohne sie verdurste ich',\n", + " 'ich will verbrennen in deinem licht',\n", + " 'deine liebe ist wie magie',\n", + " 'voller stolz und harmonie',\n", + " 'ohne sie verdurste ich',\n", + " 'ich will verbrennen in deinem licht',\n", + " 'unsere liebe besiegt die zeit',\n", + " 'geschaffen füare die ewigkeit',\n", + " 'ohne dich bin ich kalt wie stein',\n", + " 'wir werden füare immer zusammen sein',\n", + " 'füare den neubeginn gabst du macht',\n", + " 'wie ein regenbogen in der nacht',\n", + " 'ihre trauer erreicht uns nicht',\n", + " 'deine liebe erleuchtet mich',\n", + " 'translation',\n", + " '-----------',\n", + " 'eternity',\n", + " 'your love encourages me',\n", + " 'your divinity makes me weak',\n", + " 'like an angel in the white light',\n", + " 'i am losing myself only through you',\n", + " 'your love is like magic',\n", + " 'full of pride and harmony',\n", + " 'without it i will be thurtsy',\n", + " 'i want to burn in your light',\n", + " 'our love will win over time',\n", + " 'made for eternity',\n", + " 'i am cold as stone without you',\n", + " 'we will be together forever',\n", + " 'you encouraged me for a new beginning',\n", + " 'like a rainbow in the night',\n", + " 'their grieve does not reach us',\n", + " 'your love is enlightening me',\n", + " 'wenn ich die liebe nicht finde, hab ich immer noch hass',\n", + " 'wenn ich an liebe nichts finde, hab ich wohl nichts verpasst',\n", + " 'wenn ich liebe nicht finde, hab ich immernoch wut',\n", + " 'wenn ich die liebe nicht finde, geht es mir trotzdem gut',\n", + " 'zuerst werd ich dir in die augen sehn und dich fragen ob es dir genauso geht',\n", + " 'denn vielleicht ist es liebe',\n", + " 'zuerst werd ich dir in die augen sehn und dich fragen ob es dir genauso geht',\n", + " 'denn ich sehe zeichen von liebe',\n", + " 'wenn ich die liebe nicht finde',\n", + " 'wenn ich die liebe nicht finde',\n", + " 'wenn ich die liebe nicht finde',\n", + " 'wenn ich die liebe nicht finde',\n", + " 'wenn ich die liebe nicht finde',\n", + " 'wenn ich die liebe nicht finde',\n", + " 'wenn ich die liebe nicht finde',\n", + " 'wenn ich die liebe nicht finde',\n", + " 'wenn ich die liebe nicht finde',\n", + " 'and if one day i wake up staring at my enemy (ask yourself what would you do)',\n", + " 'and if one day i wake up staring at my enemy (you have a plan and would you see it through)',\n", + " 'and if one day i wake up staring at my enemy (and you looked to his eyes and you see what he is after)',\n", + " 'and if one day i wake up staring at my enemy (designed for disaster wants to be your master',\n", + " 'times moving faster what you do you bastard)',\n", + " 'and if one day i wake up staring at my enemy (wake up, wake up, wake up you gotta stop dreaming, wake up its time to face the daemon)',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy (ask yourself what would you do)',\n", + " 'and if one day i wake up staring at my enemy (and you recognize this enemy this enemy is you and you recognize this enemy this enemy is you)',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'and if one day i wake up staring at my enemy',\n", + " 'der atem kalt wie eis, obwohl die erde brennt',\n", + " \"wo du auch bist, da werd' ich sein\",\n", + " 'ich lebe jetzt, ich lebe hier in dieser welt',\n", + " 'ich atme durch voller gier',\n", + " 'damn you slam you, eat me like a menue',\n", + " 'take it brake it, kick it to the ground',\n", + " \"empty hollow, it's so hard to swallow\",\n", + " \"gotta know what's your size\",\n", + " 'du bist so schmutzig, und doch so schön',\n", + " \"ich will mich in dir verlier'n\",\n", + " \"du bist so schmutzig, wie weit willst du geh'n\",\n", + " \"nur um mich zu amüsier'n\",\n", + " 'du bringst mich noch einmal um den verstand',\n", + " 'niemand hat dich je gesehen',\n", + " 'doch ich folge nur deiner spur',\n", + " 'durch fleisch und blut, denn du, du lebst in mir',\n", + " \"ammo slammo, it's gotta go blammo\",\n", + " 'lust you bust, can i ever trust you',\n", + " 'scare you dare you, anyway i want you',\n", + " 'catch you grab you now',\n", + " 'hard ass lard ass, keep your hands of my stash',\n", + " 'holy stoli gotta have a stogie',\n", + " 'master blaster, buy a jabocaster',\n", + " 'gotta eat your heart out now',\n", + " 'when you wanna breath',\n", + " 'but no air can be found',\n", + " 'whan you wanna think, when you wanna feel sane again',\n", + " 'but sanity does not abound',\n", + " 'when you wanna grieve',\n", + " 'but the thought that you might never be happy again',\n", + " 'is enough to drag you down',\n", + " 'do you ever think you could ever feel safe again',\n", + " 'with disharmony all around',\n", + " 'nachts, wenn das meer mich wiegt',\n", + " 'und bleicher sternenglanz',\n", + " 'auf seinen weiten wellen liegt',\n", + " 'dann löse ich mich ganz',\n", + " 'von allem tun und aller liebe los',\n", + " 'und stehe still und atme bloß',\n", + " 'allein, allein vom meer gewiegt',\n", + " 'das still und kalt mit tausend lichtern liegt',\n", + " 'dann muß ich meiner freunde denken',\n", + " 'und meinen blick in ihre blicke senken',\n", + " 'und frage jeden still allein:',\n", + " 'bist du noch mein?',\n", + " 'bist du noch mein?',\n", + " 'and when your home is gone how long will you wander now',\n", + " 'and when your road is lost, how long will you be gone?',\n", + " 'when you wanna breath',\n", + " 'but no air can be found',\n", + " 'when you wanna leave, when you want to get the hell out of here',\n", + " 'but leaving is not allowed',\n", + " 'when you want to live, when you want to create again',\n", + " 'but your means are no longer sound',\n", + " 'do you ever think you should ever feel sorry for them',\n", + " 'the ones you loved that dragged you down',\n", + " '\"werewolves of... armenia\"',\n", + " 'do-yo-sa-ro do-yo-re-si',\n", + " 'a-ya-wa-le so-yo-sa-ro',\n", + " 'e-re-de-sai go-re-na-ga',\n", + " 'o-yo-o-ro do-yo-fa-ro',\n", + " 'o-ro-sa-to-yo',\n", + " 'o-yo-sa-ta-re',\n", + " 'o-yo-si-a',\n", + " '\"so freunde, und ich will euch nochmal hören!',\n", + " 'eins, zwei, drei, vier!',\n", + " 'hey!',\n", + " '(hey! hey! hey! hey! hey! hey! hey!)',\n", + " '(hey! hey! hey! hey! hey! hey! hey!)',\n", + " 'halleluja when the moon is up (hu, ha)',\n", + " 'we are werewolves, all we need is blood (hu, ha)',\n", + " 'take a silver bullet for your shot (hu, ha)',\n", + " \"we're immortal, all we fear is god\",\n", + " 'oh, cantus lupus',\n", + " 'agnus totus',\n", + " 'we are the werewolves of armenia',\n", + " 'we are the army of the wild',\n", + " '\"come on!\"',\n", + " 'hey!',\n", + " '(hey! hey! hey! hey! hey! hey! hey!)',\n", + " '(hey! hey! hey! hey! hey! hey! hey!)',\n", + " 'all beware the lycantrophic russ (hu, ha)',\n", + " \"start a prayer, werewolves don't discuss (hu, ha)\",\n", + " 'warning from the bible of the beast (hu, ha)',\n", + " 'never trust a werewolf from the east',\n", + " 'oh, cantus lupus',\n", + " 'agnus totus',\n", + " 'we are the werewolves of armenia',\n", + " 'we are the army of the wild',\n", + " 'dominatum',\n", + " 'oh, lupatum',\n", + " 'we are the werewolves of armenia',\n", + " 'we are the legend of the night',\n", + " 'draco maledicte et omnis legio diabolica',\n", + " 'oh-oh-oh oh, oh-oh, oh oh, oh oh',\n", + " 'oh-oh-oh oh, oh-oh, oh oh, oh oh',\n", + " 'cantus lupus',\n", + " 'agnus totus',\n", + " 'we are the werewolves of armenia',\n", + " 'we are the army of the wild (tonight)',\n", + " 'dominatum',\n", + " 'oh, lupatum',\n", + " 'we are the werewolves of armenia',\n", + " 'we are the legend of the night (tonight)',\n", + " 'meine sehr veehrte gemeinde!',\n", + " 'wir sind heute hierher gekommen um gemeinsam die heilige heavy-metal-messe zu feiern',\n", + " 'und um gemeinsam zu sündigen',\n", + " 'seid ihr auch alle schöne sünder?',\n", + " '\"vielleicht.\"',\n", + " 'seid ihr besessen?',\n", + " 'seid ihr besessen?',\n", + " 'seid ihr besessen?',\n", + " 'seid ihr besessen?',\n", + " 'seid ihr besessen?',\n", + " '\"wir auch.\"',\n", + " '\"incense and...\"',\n", + " '(iron!)',\n", + " '\"jetzt will ich ein bisschen bewegung sehen, freunde.\"',\n", + " 'follow the dead in the dark of damnation',\n", + " 'pious in head and a demon at heart',\n", + " 'sworn to the night, an evangelist nation',\n", + " 'born under the sign of the dark',\n", + " 'gather the wild from the horde of the brave men',\n", + " 'brothers allied, fight the storm of this curse',\n", + " 'banners up high as we rise like a legion',\n", + " 'sworn all for the light we inverse',\n", + " 'combat ahead and the night calls for heroes',\n", + " 'ready for fire command',\n", + " 'revel in red, come and wake up to bring no remorse',\n", + " 'stand up as force',\n", + " 'rise over the dead, bring us ahead, incense and iron',\n", + " 'fight all of the night, banners up high to the top of the land',\n", + " 'right into the red, all you can get, incense and iron',\n", + " 'stand, follow the fight, doing the right as we come to defend',\n", + " 'hollow the damned in the art of salvation',\n", + " 'fallen and banned and the angels die first',\n", + " 'servant in life and elated in eden',\n", + " 'cursed slaves in the light from beyond',\n", + " 'bury the night in imperial hunger',\n", + " 'do or die in this fortress of fear',\n", + " 'cannot deny all the wonders are sacred',\n", + " 'burst under the weight of this world',\n", + " 'remedy sent and the sky falls in treason',\n", + " \"torn by the liar's intent\",\n", + " 'devil in head, come and break out and raise up the sword',\n", + " 'stand up as horde',\n", + " 'rise over the dead, bring us ahead, incense and iron',\n", + " 'fight all of the night, banners up high to the top of the land',\n", + " 'right into the red, all you can get, incense and iron',\n", + " 'stand, follow the fight, doing the right as we come to defend',\n", + " 'when we all stand together',\n", + " 'rise over the dead, bring us ahead, incense and iron',\n", + " 'fight all of the night, banners up high to the top of the land',\n", + " 'right into the red, all you can get, incense and iron',\n", + " 'stand, follow the fight, doing the right as we come to defend',\n", + " 'when we will last forever',\n", + " 'fight!',\n", + " '\"ludwigsburg, frage: kennt ihr unsere texte?',\n", + " 'das probieren wir jetzt mal aus.\"',\n", + " 'stand your ground against the storm and hail the crucified',\n", + " '(eins, zwei, amen and attack)',\n", + " '\"wah! das ist echt gut hier, freunde',\n", + " 'aber du guckst echt doof, wenn der song jetzt nicht kommt, ne?',\n", + " 'he, he',\n", + " 'ihr wisst, was kommt, oder?',\n", + " \"könnt ihr's mal sagen?\",\n", + " 'aber zusammen: eins, zwei, drei:\"',\n", + " '(amen and attack!)',\n", + " 'depugnare animus fatalis',\n", + " 'in perpetuum',\n", + " 'why did i laugh tonight?',\n", + " 'inmitten der kollision dieser divergenz',\n", + " 'eingekeilt im schraubstock dieser irregularität',\n", + " 'geknebelt mit den stricken des pharisäertum',\n", + " 'sehend doch gelähmt entgegen der agonie',\n", + " 'cupidus, auf immer vermaledeit seist du',\n", + " 'why did i laugh tonight? no voice will tell',\n", + " 'no god, no demon of severe responsе',\n", + " 'deigns to reply from heavеn or from hell',\n", + " 'then to my human heart i turn at once',\n", + " 'samiel, erhöre, erkenne, rekrutiere mich',\n", + " 'son sàcre délecte avec entrain mon esprit',\n", + " \"cependant j'aimerais bien m'offrir à la mort\",\n", + " 'elle déchire nos drapeaux bigarrés',\n", + " 'vivescere, consurgere, recutio, acquiesco',\n", + " 'luzifer, heim in deinen kathartischen glanz, geleite mich',\n", + " 'inmitten der disharmonischen orchestration dieser konnexion',\n", + " 'der unerkannte rumor der vermeintlichen geruhsamkeit',\n", + " 'zentriert und lichtlos',\n", + " 'in dieser latenten schwelenden aversion',\n", + " 'erwache ich in verzehrender indignation dieser unlauterkeit',\n", + " 'pourquoi ai-je ri ce soir? connaissance',\n", + " 'heart, thou and i are here, sand and alone',\n", + " 'say, why did i laugh? o mortal pain',\n", + " 'o darkness! darkness! forever must i moan',\n", + " 'to question heaven and hell and heart in vain?',\n", + " 'chant, gloire et beauté empillent le trône',\n", + " 'pour la mort du roi, la plus grande récompense',\n", + " \"why did i laugh tonight? i know this being's lease\",\n", + " 'belial, an deiner seite walle ich',\n", + " 'zur destruktion dieser geisel, führe mich',\n", + " 'warum habe ich heute abend gelacht?',\n", + " 'weil ich erkannte, weil ich endlich erkannte',\n", + " 'ego finio obsidium',\n", + " 'und so wurde ich zum teufel, auf ewig, zu deinem teufel',\n", + " 'et si je suis devenu le diable, pour toujours, ton diable',\n", + " 'and so i became the devil, forever, to your devil',\n", + " 'mors ultima linea rerum est',\n", + " 'hell is real',\n", + " 'i feel its presence',\n", + " 'staring with empty eyes',\n", + " 'into an empty sky',\n", + " 'nothing is here to feel',\n", + " 'i drift like a falling leaf',\n", + " 'the wind takes me into the unknown',\n", + " 'where is all the hate',\n", + " 'all the pain',\n", + " 'staring with empty eyes',\n", + " 'into an empty sky',\n", + " 'nothing is here to feel',\n", + " 'i drift like a falling leaf',\n", + " 'the wind takes me into the unknown',\n", + " 'where is all the hate',\n", + " 'just pure devastation to darkness',\n", + " 'haß - absolut und rein',\n", + " 'existenz in dieser masse ist unmöglich',\n", + " 'in ihren reihen zu stehen',\n", + " 'heißt unter feinden zu kämpfen',\n", + " 'ich bin kein mensch',\n", + " 'denn menschen werden sie genannt',\n", + " 'sie bluten',\n", + " 'ich werde stärker',\n", + " 'ihre angst',\n", + " 'mein stolz',\n", + " 'gott ist tot',\n", + " 'nun schlachten wir auch sein gefolge',\n", + " 'the limit is reached - untamed devastation',\n", + " 'moving down every breathing entity',\n", + " 'our wrath - our weapons are too real to ignore',\n", + " 'mercy - a forgotten word',\n", + " 'aimless, blind',\n", + " \"just storming 'gainst everything\",\n", + " 'the gods you banished in the ancient days',\n", + " 'have still been worshipped by the ones you fear',\n", + " 'they gathered power which you now lose',\n", + " 'as your god falls by your side',\n", + " 'the two ravens are there to pick your eyes',\n", + " 'as we cry out the names of the pagan gods',\n", + " 'du nur du',\n", + " \"und nichts and'res liegt mit so nah am herz\",\n", + " \"und ich kenn' keinen and'ren zustand als für dich da zu sein (yeah)\",\n", + " 'du bist einfach unersetzlich',\n", + " 'du bist wie ein teil von mir (yeah)',\n", + " 'du bringst meine welt in atem',\n", + " 'du machst dieses leben wert',\n", + " 'für dich schlägt mein herz',\n", + " 'für dich schlägt mein herz',\n", + " 'für mich bist du das schönste monopol nein dir macht keiner konkurrenz',\n", + " 'du bist ein und alles',\n", + " 'außergewöhnlich',\n", + " 'du machst jeden faden rot',\n", + " 'du machst so sinn',\n", + " 'du bist einfach unersetzlich',\n", + " 'du bist wie ein teil von mir (yeah)',\n", + " 'und du fliegst mich hoch und du hälst mich so am leben',\n", + " 'du bringst jeden tag ans meer',\n", + " 'für dich schlägt mein herz',\n", + " 'für dich schlägt mein herz',\n", + " 'und du fliegst mich hoch und du hälst mich so am leben',\n", + " 'du machst alles halb so schwer',\n", + " 'für dich schlägt mein herz',\n", + " 'für dich schlägt mein herz',\n", + " 'my heart beats for you',\n", + " 'you and nothing else but you are so close to my heart',\n", + " 'and i don’t know any other way',\n", + " 'than to be there for you, yeah',\n", + " 'you are simply irreplaceable',\n", + " 'you are like a part of me, yeah',\n", + " 'you bring a breath of fresh air into my world',\n", + " 'you make this life worth living',\n", + " 'my heart beats for you',\n", + " 'my heart beats for you',\n", + " 'for me, you’re the only one with patent rights',\n", + " 'no, you don’t have any competition',\n", + " 'you’re everything extraordinary',\n", + " 'you make every theme recur',\n", + " 'you make so much sense, yeah',\n", + " 'you are simply irreplaceable',\n", + " 'you are a part of me, yeah',\n", + " 'and you make me soar',\n", + " 'oh and you keep me so alive',\n", + " 'you take every day to the seashore',\n", + " 'my heart beats for you',\n", + " 'my heart beats for you',\n", + " 'and you make me soar',\n", + " 'oh and you keep me so alive',\n", + " 'you make everything twice as easy',\n", + " 'my heart beats for you',\n", + " 'my heart beats for you',\n", + " 'dance, dance, dance and move your feet',\n", + " 'dance, dance, dance until they bleed (x2)',\n", + " 'dance (x3)',\n", + " 'bleed (x3)',\n", + " 'dance (x3)',\n", + " 'bleed (x3)',\n", + " 'bleed on the floor',\n", + " 'elektro partys machen mich kaputt im kopf im kopf',\n", + " 'elektro partys machen mich kaputt im fuß im fuß',\n", + " 'dance (x3)',\n", + " 'dance, dance, dance and move your feet',\n", + " 'dance, dance, dance until they bleed (x2)',\n", + " 'dance (x3)',\n", + " 'bleed (x3)',\n", + " 'dance (x3)',\n", + " 'bleed (x3)',\n", + " 'dresden über alles',\n", + " 'und alle machen mit',\n", + " 'geschichtsrevisionisten',\n", + " 'die plattform liefert flick',\n", + " 'von nichts gewuszt',\n", + " 'ne schlechte tarnung',\n", + " 'ob du dir das selber glaubst?',\n", + " 'hier kommt die warnung!',\n", + " 'opfer fein',\n", + " 'opfer opfer opfer sein',\n", + " 'opfer wollen alle',\n", + " 'aber könnt nur ihr scheiß deutsche sein',\n", + " 'denk nich dran',\n", + " 'es gibt nichts zu versöhnen',\n", + " 'für euer scheiß geheule',\n", + " 'werden wir euch stets verhöhnen',\n", + " 'von nichts gewuszt, ne schlechte tarnung (3x)',\n", + " 'ob du dir das selber glaubst?',\n", + " 'hier kommt die warnung!',\n", + " 'erdverwachsen, stark im biß',\n", + " 'nur einem herrn verpflichtet ist;',\n", + " 'treu und redlich und loyal',\n", + " 'auch wenn der weg katastrophal',\n", + " 'wüst das land, weiß der sand',\n", + " 'der starre hund bleibt treu dabei',\n", + " 'sandsturm ihre augen reibt-',\n", + " 'das tier an seiner seite bleibt',\n", + " \"ahua- dringt's durch die nacht\",\n", + " 'wenn der hund mit den wölfen',\n", + " 'in weiter ferne spricht',\n", + " 'ahua- für einen freund, so wie ihn',\n", + " 'zählen die eignen wunden wohl nicht',\n", + " 'als wolf geheuert, zum hund dressiert',\n", + " 'er japsend seinen ritt beglitt',\n", + " 'die strecken würden immer wirrer',\n", + " 'ob hitze plage, kälte klirre',\n", + " 'und der hunger bohrt sich drein',\n", + " 'doch klebt der treue hund am bein',\n", + " 'gibt brav dem herrn, was beute ist',\n", + " 'nimmt dankend, was der herr vergißt',\n", + " \"ahua- dringt's durch die nacht\",\n", + " 'wenn der hund mit den wölfen in weiter ferne spricht',\n", + " 'ahua- für einen freund, so wie ihn',\n", + " 'zählen die eigenen wunden wohl nicht',\n", + " 'ein wüstenritt nimmt seinen lauf',\n", + " 'und wer hofft, der gibt nicht auf',\n", + " 'das geht nicht nur dem menschen so',\n", + " 'auch der hund ist hoffnungsfroh',\n", + " 'nun kommt, was schließlich kommen muß:',\n", + " 'des wirren reiters überdruß',\n", + " 'wittert ganz allein sein glück',\n", + " 'läßt den einzigen freund zurück',\n", + " 'heulend nach dem meister rief',\n", + " 'und der kummer saß so tief',\n", + " 'man fand den hund halb sandbedeckt',\n", + " 'die viere von dem leib gestreckt',\n", + " 'english translations:',\n", + " 'deeply rooted in the earth, bite of steel',\n", + " 'devoted only to one master',\n", + " 'faithful, decent and loyal',\n", + " 'no matter how stony the road',\n", + " 'wasteland, white sand',\n", + " 'sturdily the dog stands by his side',\n", + " 'the sandstorm blinding their eyes',\n", + " 'the hound stands by his side',\n", + " 'ahua - it howls through the night',\n", + " 'when the hound talks',\n", + " 'to the faraway wolves',\n", + " 'ahua - no mound can be too painful',\n", + " 'for his masters hound',\n", + " 'signed on as a wolf, trained to be a dog',\n", + " 'gasping along, no matter frost and heat',\n", + " 'and the hunger is biting, stays on his masters foot',\n", + " 'obediently stands over the prey',\n", + " 'obligingly takes, what the mater leaves',\n", + " 'ahua - it howls through the night',\n", + " 'when the hound talks',\n", + " 'to the faraway wolves',\n", + " 'ahua - no mound can be too painful',\n", + " 'for his masters hound',\n", + " 'a desert ride takes its course, and hope dies last',\n", + " 'not only the man, also the dog is hopeful',\n", + " 'but finally and in the end, the mean rider fed up',\n", + " 'smells like luck without his only true friend',\n", + " 'and leaves him back',\n", + " 'howls out for his master, and the pain was so enormous',\n", + " 'then found the dog, half buried in the desert sand',\n", + " 'ahua - it howls through the night',\n", + " 'when the hound talks',\n", + " 'to the faraway wolves',\n", + " 'ahua - no mound can be too painful',\n", + " 'for his masters hound',\n", + " 'a warrior whose heart was crying...',\n", + " 'gathered all his courage and wanted to make the whole story...',\n", + " '(the whole thing) end... the whole thing end',\n", + " 'he waited for the beast in the hidden room',\n", + " 'although he must pay with his death...',\n", + " 'pay with his death... pay with his death...',\n", + " 'ou we ig muss s zytleche sägne... ou we s hie nie me wird rägne...',\n", + " 'muess ig jetzt es ändi mache... ou we ig nie wider lache!!',\n", + " 'he waits for him, alone in the dark, waiting for his chance...',\n", + " 'takes the beast and holds it tight... holds it tight',\n", + " 'on the wall there is this pillar... with a large hole...',\n", + " 'where he locks the beast and puts a plug... plug in it',\n", + " 'verschliesses ganz fescht... das isch dr letscht...',\n", + " 'erscht u letscht versuech wo ig ha...',\n", + " 'dunkuheit isch bezwunge... mir hei üs überwunde...',\n", + " 'es opfer z si für die kommendi wäut... helde z wärde, ou ohni gäud!',\n", + " 'dunkuheit isch bezwunge... mir hei üs überwunde...',\n", + " 'es opfer z si für die kommendi wäut... helde z wärde, ou ohni gäud!',\n", + " 'lost in the dark',\n", + " 'helldogs bark',\n", + " 'drawn by lucifer',\n", + " 'lost in the dark',\n", + " 'helldogs bark',\n", + " \"you got a bad start, my dogs don't bark\",\n", + " 'lost in the dark',\n", + " 'helldogs bark',\n", + " 'drawn by lucifer',\n", + " 'lost in the dark',\n", + " 'helldogs bark',\n", + " 'stare them in the eyes and try to survive',\n", + " 'he fucks up your brain, by using fear',\n", + " 'end the reign',\n", + " 'cut the threat',\n", + " 'fearless in the face of the death',\n", + " 'end the reign',\n", + " 'cut the threat',\n", + " 'fearless in the face of the death',\n", + " 'cut the threat',\n", + " 'the devil will drag you to hell',\n", + " 'if you choose the easy way',\n", + " 'they follow and they always will',\n", + " 'they are',\n", + " 'lost in the dark',\n", + " 'helldogs bark',\n", + " 'drawn by lucifer',\n", + " 'lost in the dark',\n", + " 'helldogs bark',\n", + " \"you got a bad start, my dogs don't bark\",\n", + " 'lost in the dark',\n", + " 'helldogs bark',\n", + " 'drawn by lucifer',\n", + " 'lost in the dark',\n", + " 'helldogs bark',\n", + " 'stare them in the eyes and try to survive',\n", + " 'der teufel zeigt uns den weg, doch wir müssen einen anderen gehen',\n", + " 'auch wenn er zieht, dürfen wir nicht folgen, doch die meisten können nur befolgen',\n", + " 'der teufel zeigt uns den weg, nur ein bruchteil bleibt stehen',\n", + " 'keine kraf sich dagegen zu stellen, seine hunde bellen',\n", + " 'und sie lassen sich gehen',\n", + " 'bearers of death',\n", + " 'lost in the dark',\n", + " 'lost in the dark',\n", + " 'sometimes i feel so deep',\n", + " 'die nacht ruft nach mir',\n", + " 'sometimes i feel so weak',\n", + " \"ich flüster' zu dir\",\n", + " 'night by night',\n", + " 'nacht für nacht',\n", + " 'close and far',\n", + " 'und doch so nah',\n", + " 'sometimes i feel so sad',\n", + " 'ich atme die nacht',\n", + " 'sometimes i feel so black',\n", + " 'doch mein körper erwacht',\n", + " 'when the night is calling me',\n", + " 'ich sehe dein gesicht',\n", + " 'when the night is calling me',\n", + " 'im dunklen schattenlicht',\n", + " 'atmosphere',\n", + " 'der weg zu dir',\n", + " 'take me there',\n", + " 'ich will mehr',\n", + " 'sometimes i feel so close',\n", + " 'ich umarme dich',\n", + " 'sometimes i feel so mad',\n", + " 'und ich werde verrückt',\n", + " 'when the night is calling me',\n", + " 'ich sehe dein gesicht',\n", + " 'when the night is calling me',\n", + " 'im dunklen schattenlicht',\n", + " 'when the night is calling me',\n", + " 'ich sehe dein gesicht',\n", + " 'when the night is calling me',\n", + " 'wie es zerbricht',\n", + " 'when the night is calling me',\n", + " 'ich sehe dein gesicht',\n", + " 'when the night is calling me',\n", + " 'im dunklen schattenlicht',\n", + " 'when the night is calling me',\n", + " 'seh’ ich dein gesicht',\n", + " 'when the night is calling me',\n", + " 'wie es zerbricht',\n", + " 'i am the one',\n", + " 'i am the chosen one',\n", + " 'i am tho one',\n", + " 'the herald (to declare the final message)',\n", + " 'i am the one',\n", + " 'i am the chosen one',\n", + " 'seht mich an und preiste mich',\n", + " 'seht mich an und fürchtet mich',\n", + " 'seht mich an (und) empfanget mich',\n", + " 'sterbet nun und liebet mich',\n", + " 'nur mich',\n", + " 'pestis - berührt von gottes hand',\n", + " 'interitus -welch ehre wird euch zuteil',\n", + " 'exitus - wohl dem, dem dies gebührt',\n", + " 'is еst cruel, mais is vous aime',\n", + " ...]}}},\n", + " 'en': {'sentence': {'country': {'meta': {'train_data': [\"i had ev'rything, lost it all\",\n", + " 'i built towers of gold, watched em fall',\n", + " 'i tried my best',\n", + " \"but i guess my best just wasn't good enough\",\n", + " 'i made promises. broke em',\n", + " \"i've laid loved ones lives wide open\",\n", + " \"and i've got a broken heart but i've come this far\",\n", + " \"and i ain't givin up\",\n", + " 'i pray for a stronger back',\n", + " 'i pray for a bigger heart',\n", + " 'i pray for the will to keep on walkin when the way is dark',\n", + " 'i follow that windin road just tryin to stay on track',\n", + " \"i don't pray for a lighter load i pray for a stronger back\",\n", + " \"i've seen losers get a second chance\",\n", + " \"i've seen miracles from happenstance\",\n", + " \"i've seen long shots come from way behind\",\n", + " 'to win the race',\n", + " \"and i've dreams blow up in a cloud of smoke\",\n", + " \"it's a world of pain, it's a world of hope\",\n", + " \"and it's dark right now but i know somehow\",\n", + " 'some day the sun will find some way to shine down on my face',\n", + " 'i pray for a stronger back',\n", + " 'i pray for a bigger heart',\n", + " 'i pray for the will to keep on walkin when the way is dark',\n", + " 'i follow that windin road just tryin to stay on track',\n", + " \"i don't pray for a lighter load i pray for a stronger back\",\n", + " 'i follow that windin road just tryin to stay on track',\n", + " \"i don't pray for a lighter load i pray for a stronger back\",\n", + " 'jolene, jolene, jolene, jolene',\n", + " \"i'm begging of you please don’t take my man\",\n", + " 'jolene, jolene, jolene, jolene',\n", + " \"please don't take him just because you can\",\n", + " 'your beauty is beyond compare',\n", + " 'flaming locks of auburn hair',\n", + " 'ivory skin and eyes of emerald green',\n", + " 'your smile is like a breath of spring',\n", + " 'your voice is soft like summer rain',\n", + " 'i cannot compete with you, jolene',\n", + " 'oh but he talks about you in his sleep',\n", + " \"there's nothing i can do to keep\",\n", + " 'from crying when he calls your name, jolene',\n", + " 'oh and i can easily understand',\n", + " 'how you could easily take my man',\n", + " 'but you don’t know what he means to me, jolene',\n", + " 'jolene, jolene, jolene, jolene',\n", + " \"oh i'm begging of you please don't take my man\",\n", + " 'jolene, jolene, jolene, jolene',\n", + " \"please don't take him just because you can\",\n", + " 'you could have your choice of men',\n", + " 'but i could never love again',\n", + " \"'cause he's the only one for me, jolene\",\n", + " 'i had to have this talk with you',\n", + " 'my happiness depends on you',\n", + " \"and whatever you decide you'll do, jolene\",\n", + " 'jolene, jolene, jolene, jolene',\n", + " \"i'm begging of you please don’t take my man\",\n", + " 'jolene, jolene, jolene, jolene',\n", + " 'please don’t take him just because you can',\n", + " 'jolene, jolene',\n", + " \"i'm finally on the up and up, a little 401k\",\n", + " 'traded in my trailer park for a neighborhood with a gate',\n", + " \"queen finally got her castle‚ last one on the right‚ you can't miss it\",\n", + " 'upgraded from the barbed wire‚ now i got a nice picket',\n", + " 'i can play high class all day but some things never change',\n", + " \"i can't hide it in a closet, i can't stuff it in a trunk\",\n", + " \"i always know there's treasure buried somewhere in the junk\",\n", + " 'i can keep it clean on sundays and keep the lights and water on',\n", + " \"but i can't keep my white trash off the lawn\",\n", + " 'carnation from a flowerbed in a whiskey bottle base',\n", + " 'cadillac on a cinder block, duct tape on every other thing',\n", + " 'real ferns in the sunroom‚ bug zapper by the screen',\n", + " \"dog hair on the restoration hardware, who says you can't have nice things?\",\n", + " \"i can't hide it in a closet, i can't stuff it in a trunk\",\n", + " \"i always know there's treasure buried somewhere in the junk\",\n", + " \"i can keep my roots from showin'‚ but i'm still dishwater blonde\",\n", + " \"but i can't keep my white trash off the lawn\",\n", + " 'new money, old habits',\n", + " 'loveseat in the plastic',\n", + " 'steak fingers in a basket',\n", + " 'new money, old habits',\n", + " \"i can't hide it in a closet, i can't stuff it in a trunk\",\n", + " \"i always know there's treasure buried somewhere in the junk\",\n", + " 'i can keep it clean on sundays and keep the lights and water on',\n", + " \"but i can't keep my white trash off the lawn\",\n", + " \"got more rooms than the joneses, y'all, and i'm still addin' on\",\n", + " \"but i can't keep my white trash off the lawn\",\n", + " \"i'm finally on the up and up\",\n", + " \"i'm finally on the up and up, up and up\",\n", + " 'up and up, up and up, up and up',\n", + " 'up and up, up and up, up and up',\n", + " 'up and up, up and up, up and up',\n", + " 'up and up, up and up, up and up',\n", + " 'up and up, up and up, up and up',\n", + " 'up and up, up and up, up and up',\n", + " 'up and up, up and up, up and up',\n", + " 'up and up, up and up, up and up',\n", + " 'up and up, up and up, up and up',\n", + " 'count it off',\n", + " \"well, i was truckin' down the freeway just the other night\",\n", + " 'flashed on my dashboard was my oil light damnit',\n", + " 'i pulled my truck off the freeway',\n", + " 'and all the bars are closed',\n", + " 'so i pulled into a gas station smelling like a texas rose',\n", + " \"an' that's when i seen him, sittin' in some kinda booth like a fotomat\",\n", + " \"sittin' there like a god damn bagpile of telephone wire\",\n", + " 'i said i need 4 quarts of oil for that, truck over there',\n", + " 'he just sat there for a while, and stared',\n", + " 'yip!',\n", + " 'so i says, \"buddy!, i need some oil for my truck that ain\\'t no lie\" and he says something like, \" no go diggy di\"',\n", + " 'i said, \"what?!, what country are you from?\", he says somethin\\' like, \"abu dhabi-dum\"',\n", + " 'i said, \"ain\\'t no country i know!\", i said, \"i\\'m from texas now gimme some oil,\"',\n", + " 'he said somethin\\' like, \"no oil at midnight\", i said some of my indian friends speak better english than that',\n", + " 'yip!',\n", + " 'and he says, \"no go diggy di\" again',\n", + " 'i said, \"don\\'t go giving me none of that god damn no go diggy di shit, forget the oil, i need some gas',\n", + " \"so i pumped 5 bucks in my truck, thinkin' 'bout kickin' his ass in\",\n", + " 'ye',\n", + " 'i walked up to the window i slipped a 5 , he said, \"6 dollars and some god damn arab-jive\"',\n", + " 'that\\'s when i told him, \"mr. egyptian, you\\'re a god damn liar\"....',\n", + " 'yip! yip!',\n", + " '*la-la section',\n", + " \"don't you give me none of that no go diggy di shit\",\n", + " 'speak english god damnit!',\n", + " 'no go diggy di...',\n", + " \"i don't care, i don't care\",\n", + " \"that's jimbo\",\n", + " \"(ain't no country i know)\",\n", + " 'shut up..., shut up jimbo',\n", + " 'huh huh huh huh huh',\n", + " \"don't turn mailboxes into baseballs\",\n", + " \"don't get busted selling at seventeen\",\n", + " 'most thoughts deserve about two or three more',\n", + " 'motor oil is motor oil',\n", + " 'just keep the engine clean',\n", + " 'keep your eyes on the prize',\n", + " 'everything will be fine',\n", + " 'long as you stay in school, stay off the hard stuff',\n", + " 'and keep between the lines',\n", + " \"don't burn two lanterns at the same time\",\n", + " 'no ship out on the water will pay your rent',\n", + " \"'cause you live and you learn\",\n", + " 'sometimes you get burned',\n", + " 'when your get out done got up',\n", + " 'walked out the door and went',\n", + " 'do as i say',\n", + " \"don't do as i've done\",\n", + " \"it don't have to be like father, like son\",\n", + " \"don't let 'em try to upsell you\",\n", + " \"there's a reason they make chocolate and vanilla too\",\n", + " \"if there's any doubt, then there is no doubt\",\n", + " \"the gut don't never lie\",\n", + " 'and the only word you\\'ll ever need to know in life is \"why\"',\n", + " 'keep your head out of the clouds',\n", + " 'and remember to be kind',\n", + " 'and just stay in school, stay off the drugs',\n", + " 'and keep between the lines',\n", + " \"(don't sweat the small stuff)\",\n", + " \"(don't sweat the small stuff)\",\n", + " \"(don't sweat the small stuff)\",\n", + " \"(don't sweat the small stuff)\",\n", + " \"(don't sweat the small stuff)\",\n", + " \"(don't sweat the small stuff)\",\n", + " \"you're not my same sweet baby lady\",\n", + " \"you're not the same baby i knew\",\n", + " \"the world is all wrong girl and i'm not the man\",\n", + " 'who can change it for you',\n", + " \"i'll just be packing my bags and silently go\",\n", + " \"what's the good in pretending\",\n", + " 'and watching it drag on and on',\n", + " \"the good is in ending it while there's the time left\",\n", + " 'to say that your mind is your own',\n", + " \"you're not my same sweet baby lady\",\n", + " \"now the bright lights faded they've taken the baby from you\",\n", + " \"girl i'm not saying my bubbles so great\",\n", + " \"that hard times won't break that too\",\n", + " \"i'll just be packing my bags and silently go\",\n", + " \"what's the good in pretending\",\n", + " 'and watching it drag on and on',\n", + " \"the good is in ending it while there's the time left\",\n", + " 'to say that your mind is your own',\n", + " \"you're not my same sweet baby lady\",\n", + " \"girl i'm not saying i haven't done some changing too\",\n", + " \"so please stop your cryin' you know i'm not tryin'\",\n", + " 'to lay all the blame off on you',\n", + " \"i'll just be packing my bags and silently go\",\n", + " \"the world is all wrong girl and i'm not the man\",\n", + " 'who can change it for you',\n", + " \"let's sit down and talk it over\",\n", + " 'take my shoulder tonight',\n", + " 'look at me and tell me what is',\n", + " 'on your mind this time',\n", + " 'gonna stay here til you got a smile on your face',\n", + " \"i'm here no matter what\",\n", + " 'everything else can wait',\n", + " \"let's kiss and make up now\",\n", + " \"let's kiss and make love\",\n", + " \"don't wait another minute, let's go with it\",\n", + " \"kiss me and let's make up now\",\n", + " \"let's be honest, let's be open\",\n", + " \"we're not broken, not yet\",\n", + " \"it's not easy tryin' to please me\",\n", + " \"i'm not perfect, i know that\",\n", + " 'gonna stay here til you got a smile on your face',\n", + " \"i'm here no matter what\",\n", + " 'everything else can wait',\n", + " \"let's kiss and make up now\",\n", + " \"let's kiss and make love\",\n", + " \"don't wait another minute, let's go with it\",\n", + " \"kiss me and let's make up now\",\n", + " \"talk to me, it's alright, i'm open\",\n", + " \"whoa, don't try, we're not broken, not broken\",\n", + " 'i know that we can do this',\n", + " 'come, baby, do it right now (make up now)',\n", + " '(come, baby, do it right now)',\n", + " '(make up now)',\n", + " \"let's kiss and make up now\",\n", + " \"let's kiss and make love\",\n", + " \"we'll do it like we meant it\",\n", + " \"let's go with it\",\n", + " \"kiss me and let's make up now\",\n", + " \"kiss me and let's make up now\",\n", + " \"kiss me and let's make up now\",\n", + " 'o lord, my god, when i in awesome wonder',\n", + " 'consider all the worlds thy hands have made',\n", + " 'i see the stars, i hear the rolling thunder',\n", + " 'thy power throughout the universe displayed',\n", + " 'then sings my soul, my savior god, to thee',\n", + " 'how great thou art, how great thou art',\n", + " 'then sings my soul, my savior god, to thee',\n", + " 'how great thou art, how great thou art',\n", + " 'when christ shall come with shouts of acclamation',\n", + " 'and take me home, what joy shall fill my heart?',\n", + " 'then i shall bow in humble adoration',\n", + " 'and then proclaim, \"my god, how great thou art\"',\n", + " 'then sings my soul, my savior god, to thee',\n", + " 'how great thou art, how great thou art',\n", + " 'then sings my soul, my savior god, to thee',\n", + " 'how great thou art, how great thou art',\n", + " 'then sings my soul, my savior god, to thee',\n", + " 'how great thou art, how great thou art',\n", + " 'then sings my soul, my savior god, to thee',\n", + " 'how great thou art, how great thou art',\n", + " 'how great thou art, how great thou art',\n", + " \"when i fall in love it will be forever or i'll never fall in love\",\n", + " \"in a restless world like this is love is ended before it's begun\",\n", + " 'and too many moonlight kisses seem to cool in the warmth of the sun',\n", + " \"when i give my heart it will be completely or i'll never give my heart\",\n", + " 'and the moment i can feel that you feel that way too is when i fall in love with you',\n", + " \"when i give my heart it will be completely or i'll never i'll never give my heart\",\n", + " 'and the moment i can feel that you feel that way too is when i fall in love with you',\n", + " 'between the perfect world and the bottom line',\n", + " 'keeping love alive in these troubled times',\n", + " \"well, it's a miracle in itself\",\n", + " \"and we know too well what that's about\",\n", + " 'still we made it through, only god knows how',\n", + " \"we must've had a little help\",\n", + " \"it must've been wild angels, wild angels\",\n", + " 'watching over you and me, yeah',\n", + " 'wild angels, wild angels',\n", + " 'baby, what else could it be?',\n", + " \"well, it must've been hard, it must've been tough\",\n", + " 'keeping up with crazy fools like us',\n", + " \"'cause it's so easy to fall apart\",\n", + " \"and we still break each other's hearts sometimes\",\n", + " 'spend some nights on the jagged side',\n", + " \"somehow we wake up in each other's arms\",\n", + " \"oh, it must've been wild angels, wild angels\",\n", + " 'watching over you and me, yeah',\n", + " 'wild angels, wild angels',\n", + " 'baby, what else could it be?',\n", + " 'there are some nights',\n", + " 'i watch you while you dream',\n", + " 'i swear i hear the sound of beating wings, yeah',\n", + " \"oh, it must've been wild angels, wild angels\",\n", + " 'watching over you and me, yeah',\n", + " 'wild angels, wild, wild angels',\n", + " 'baby, what else could it be?',\n", + " 'wild angels',\n", + " \"and i can't sleep in the waiting room\",\n", + " \"and i can't sleep in the waiting room\",\n", + " \"and i can't sleep in the waiting room\",\n", + " \"and i can't sleep in the waiting room\",\n", + " \"and i can't find the keys\",\n", + " 'that open both doors',\n", + " 'to let me on the stairs',\n", + " 'and onto the roof',\n", + " \"where there's actually air\",\n", + " 'and room to swing my fists',\n", + " 'and my ears stop ringing',\n", + " 'i can hear everything',\n", + " \"but i can't stand on only one leg\",\n", + " \"but i can't stand on only one leg\",\n", + " \"but i can't stand on only one leg\",\n", + " \"but i can't stand on only one leg\",\n", + " \"they were searchin' for stars when we came along\",\n", + " \"it was rock 'n roll in a country song\",\n", + " 'there were five of us thinking that we can',\n", + " 'this is the life and times of a traveling band',\n", + " 'hollywood had a funny face',\n", + " 'so we took our chances and we got away',\n", + " 'back to nashville, tennessee',\n", + " 'hobie, bobby, jim and joe and me',\n", + " 'no the west coast life',\n", + " \"didn't fit just right\",\n", + " 'you could see us on the television',\n", + " \"it ain't easy bein' all that grand\",\n", + " 'so we put on our blue jeans and our t-shirts',\n", + " 'and made off with our guitars in the van',\n", + " 'and took our place',\n", + " 'out on the stage',\n", + " \"in a travelin' band\",\n", + " 'we heard our song on the radio',\n", + " 'along with the \"gambler\" we hit the road',\n", + " 'all across the usa',\n", + " 'we were gypsies on parade',\n", + " 'we were all about three chords and the truth',\n", + " 'we wrote our songs on the bus, in the booth',\n", + " 'some go fast like \"some girls do\"',\n", + " 'some go slow like \"used to blue\"',\n", + " 'when the lights went down',\n", + " 'we could hear the crowd',\n", + " 'we headlined our first show in salt lake city',\n", + " 'we still make a stop there now and then',\n", + " \"they've got all our faces on their t-shirts\",\n", + " 'you should have seen our hairdos way back when',\n", + " 'we took our place',\n", + " 'on the stage',\n", + " \"in a travelin' band\",\n", + " \"fame and fortune don't mean much\",\n", + " 'without someone to hold and someone to touch',\n", + " 'some wives left, some stayed on',\n", + " 'so who do you love when the beat goes on',\n", + " \"now we're 27 years and a million miles\",\n", + " 'shifting gears and changing styles',\n", + " 'we said goodbye to old dc',\n", + " \"now it's hobie, shayne and jim, the joes and me\",\n", + " 'and when \"the race is on\"',\n", + " 'they all sing along',\n", + " \"now i'd like to take this time to thank you\",\n", + " \"though it's been a long and winding road\",\n", + " 'i count my blessings when i see those faces',\n", + " 'and i look down at this guitar in my hand',\n", + " 'and i take my place',\n", + " 'on the stage',\n", + " \"in a travelin' band\",\n", + " \"i'm in a travelin' band\",\n", + " \"there's a sermon in that bible for the wicked\",\n", + " 'i reckon we need',\n", + " 'but this night has brown as black as that leather',\n", + " \"and it's too dark to read\",\n", + " 'and the promise that i made to my woman',\n", + " \"are the only words that i've ever kept true\",\n", + " \"i said: i'll bury you at night, and i'll hide you out of sight\",\n", + " 'and a garden of stars will bloom for you',\n", + " 'in the gray and wintry hills of the old dominion',\n", + " 'where little grows',\n", + " \"there's a place i can recall to my vision\",\n", + " 'where no one goes',\n", + " 'and i promised to plant for you a garden',\n", + " \"but you promised you'd always be true\",\n", + " \"and so i'll bury you at night, while the moon is shining bright\",\n", + " 'and a garden of stars will bloom for you',\n", + " 'i called up hell and checked on a room',\n", + " \"spoke to the devil, said i'd be there real soon\",\n", + " \"'cause i'm slowly dyin' over someone i miss\",\n", + " \"so i called up hell because it's better than this\",\n", + " 'you see, i live in a bottle down deep in the hole',\n", + " \"but she's got my heart, lord i don't need my soul\",\n", + " 'and i burn with a fever from our very last kiss',\n", + " \"so i called up hell because it's better than this\",\n", + " \"it's better than drinkin' 'til i fade to black\",\n", + " \"and wakin' up screamin' 'cause she ain't comin' back\",\n", + " \"i can't get no relief because the pain just gets bigger\",\n", + " \"and if i had any guts i'd just pull the trigger, oh yeah, ooh\",\n", + " \"oh, it's better than drinkin' 'til i fade to black\",\n", + " \"and wakin' up screamin' 'cause she ain't comin' back\",\n", + " \"i can't get no relief because the pain just gets bigger\",\n", + " \"and if i had any guts i'd just pull the trigger\",\n", + " 'so, i called up hell and checked on a room',\n", + " \"spoke to the devil, said i'd be there real soon\",\n", + " \"some of these days you're gonna miss me honey\",\n", + " \"some of these days you're gonna be so lonely\",\n", + " \"you'll miss my hugging miss my kissing too\",\n", + " \"you'll be so sorry when i'm away from you\",\n", + " \"now you're gonna be lonely just for me only\",\n", + " \"'cause you know honey that you had your way\",\n", + " \"and when you leave me you know it's gonna grieve me\",\n", + " \"you're gonna miss your little honey some of these days\",\n", + " \"(now you'll be lonely) yes you'll be lonely\",\n", + " '(just for me only) just for me only',\n", + " \"('cause you know honey) yes you know honey\",\n", + " '(you had your way) yes you had your way',\n", + " \"'cause when you leave me oh you know it's gonna grieve me\",\n", + " \"you're gonna miss your little honey some of these days\",\n", + " \"(you're gonna miss) you're gonna miss your little honey\",\n", + " 'some of these days (some of these days)',\n", + " \"i'll have a blue blue christmas\",\n", + " \"i'll have a blue blue christmas without you\",\n", + " \"i'll be so blue thinking about you\",\n", + " 'decorations of red, on a green christmas tree',\n", + " \"won't mean a thing if you're not here with me\",\n", + " \"i'll have a blue christmas, that's certain\",\n", + " 'and when those blue blue heartaches start hurting',\n", + " \"you'll be doing alright with your christmas of white\",\n", + " \"but i'll have a blue blue christmas\",\n", + " 'a blue blue christmas without you',\n", + " 'all i ever wanted was something classic',\n", + " \"the kind of love song that goes on 'til the end of time\",\n", + " 'all i ever wanted was a little magic',\n", + " 'with a good laugh, jet-black sparkle in his eyes',\n", + " \"you're my velvet elvis, i ain't never gonna take you down\",\n", + " 'making everybody jealous when they step into my house',\n", + " 'soft to the touch, feels like love, knew it as soon as i felt it',\n", + " \"you're my velvet elvis, baby\",\n", + " \"i don't really care 'bout the mona lisa\",\n", + " \"i need a graceland kind of man who's always on my mind\",\n", + " 'i wanna show you off every evening',\n", + " 'go out with you in powder blue and tease my hair up high',\n", + " \"you're my velvet elvis, i ain't never gonna take you down\",\n", + " 'making everybody jealous when they step into my house',\n", + " 'soft to the touch, feels like love, knew it as soon as i felt it',\n", + " \"you're my velvet elvis, baby\",\n", + " \"you're my velvet elvis, baby\",\n", + " 'i knew it as soon as i felt it',\n", + " 'mm-mm, i knew it as soon as i felt it',\n", + " 'yeah',\n", + " \"you're my velvet elvis, i ain't never gonna take you down\",\n", + " 'making everybody jealous when they step into my house',\n", + " 'soft to the touch, feels like love, knew it as soon as i felt it',\n", + " \"you're my velvet elvis, baby\",\n", + " \"you're my velvet elvis, baby, yeah\",\n", + " \"you make me wanna forget that i'm a good guy\",\n", + " 'you make me wanna give in, into my dark side',\n", + " \"you make me an animal, you're tearing up the jungle\",\n", + " \"i'm burning at the seas\",\n", + " 'you make me want to unleash the beast…',\n", + " 'jekyll & hyde',\n", + " \"i can't fight it\",\n", + " \"when i'm with you\",\n", + " \"i'm just howling at the moon\",\n", + " \"there's a monster baby\",\n", + " \"you're gonna see it tonight\",\n", + " 'jekyll & hyde',\n", + " 'jekyll & hyde',\n", + " 'you make me wanna forget that i play by the rules',\n", + " 'down throw my halo and give it to you',\n", + " \"you make me ignited i try but i can't fight it\",\n", + " \"i'm burning up a fever\",\n", + " 'you make me want to unleash the beast',\n", + " 'jekyll & hyde',\n", + " \"i can't fight it\",\n", + " \"when i'm with you\",\n", + " \"i'm just howling at the moon\",\n", + " \"there's a monster baby\",\n", + " \"you're gonna see it tonight\",\n", + " 'jekyll & hyde',\n", + " 'jekyll & hyde',\n", + " \"i wanna give you all my lovin' lovin'\",\n", + " \"i wanna make you want for nothin' nothin'\",\n", + " 'i want to cross that line',\n", + " \"i wanna make you mine 'cause there is something\",\n", + " 'dark and dangerous, excited, inside me…',\n", + " 'jekyll & hyde',\n", + " \"i can't fight it\",\n", + " \"when i'm with you\",\n", + " \"i'm just howling at the moon\",\n", + " \"there's a monster baby\",\n", + " \"you're gonna see it tonight\",\n", + " 'jekyll & hyde',\n", + " 'jekyll & hyde',\n", + " 'jekyll & hyde',\n", + " 'jekyll & hyde',\n", + " 'have i stayed away too long',\n", + " 'have i stayed away too long',\n", + " 'if i came home tonight',\n", + " 'would you still be my darling',\n", + " 'or have i stayed away too long',\n", + " \"i'm just outside of town\",\n", + " \"and i'll soon be at your door\",\n", + " \"but maybe i'd be wrong\",\n", + " 'to hurry there',\n", + " \"i'd best keep out of town\",\n", + " 'and worry you no more',\n", + " 'for, maybe someone else',\n", + " 'has made you care',\n", + " 'oh, have all of my dreams gone wrong',\n", + " 'my beautiful dreams gone wrong',\n", + " 'if i came home tonight',\n", + " 'would you still be my darling',\n", + " 'or have i stayed away too long',\n", + " 'or have i stayed away too long',\n", + " 'someone called out to you',\n", + " 'and it sounded just like crying',\n", + " 'on a street where nobody',\n", + " 'even knows your name',\n", + " 'your mind was getting high on the sweet air',\n", + " 'as your spirit was flying',\n", + " 'steam rising from the sidewalks',\n", + " 'of new orleans after an evening rain',\n", + " 'steam rising from the sidewalks',\n", + " 'after an evening rain',\n", + " 'and it only made the heat',\n", + " 'feel like it was walking even closer',\n", + " 'as you headed up st. charles',\n", + " 'to catch a streetcar named desire',\n", + " 'young couple struggling in the doorway',\n", + " 'like he was trying to force her',\n", + " 'in the distance you swore',\n", + " 'you could hear them open fire',\n", + " 'tires squealing in the distance',\n", + " 'as you heard them open fire',\n", + " 'walk on, walk on',\n", + " \"don't look back\",\n", + " \"don't ask questions\",\n", + " \"don't you try to understand\",\n", + " 'walk on, walk on',\n", + " 'straight back down to your hotel room',\n", + " 'where she lies waiting for her man',\n", + " \"you're so afraid you might be losing love\",\n", + " 'that it makes you worry',\n", + " \"and you wonder if she's ever seen this\",\n", + " 'kind of fear in you',\n", + " 'and you think of that young couple',\n", + " 'in the doorway',\n", + " 'and it makes you hurry',\n", + " 'you wonder what kind of fear',\n", + " 'they might be living through',\n", + " 'yeah you wonder if',\n", + " 'they saw that fear in you',\n", + " 'walk on, walk on',\n", + " \"don't look back\",\n", + " \"don't ask questions\",\n", + " \"don't you try to understand\",\n", + " 'walk on, walk on',\n", + " 'straight back down to your hotel room',\n", + " 'where she lies waiting for her man',\n", + " 'straight back down to your hotel room',\n", + " 'where she lies waiting for her man',\n", + " 'walk on, walk on, walk on',\n", + " 'songwriter: john hiatt',\n", + " 'my old friends and boats, the stuff that works',\n", + " 'a random knife, an old blue shirt',\n", + " 'strong and steady, like texas dirt',\n", + " \"it's a place to hide when you're really hurt\",\n", + " 'well, coleman bonner and sis draper, a worn-out fiddle case',\n", + " \"old skinny dennis, i can still hear him singin' bass\",\n", + " 'well, that workbench was a holy place',\n", + " \"his favorite picture, susanna's face\",\n", + " \"there ain't nothin' like a guy clark song\",\n", + " \"you're feelin' fragile, 'fraid you don't belong\",\n", + " \"it's a lonely road you're travelin' on\",\n", + " \"well, there ain't nothin' like a guy clark song\",\n", + " 'homegrown tomatoes and a dallas whore',\n", + " \"a girl named rita doin' a slow bandera across a dance hall floor\",\n", + " 'well, he rolled his own and he loved to roar',\n", + " \"man, it's been over forty years since we shared that stage at the troubadour\",\n", + " \"there ain't nothin' like a guy clark song\",\n", + " \"you're feelin' fragile, 'fraid you don't belong\",\n", + " \"it's a lonely road you're travelin' on\",\n", + " \"well, there ain't nothin' like a guy clark song\",\n", + " 'well, what do you do when your heroes die?',\n", + " \"man, you let 'em roll, you let 'em fly\",\n", + " \"'cause desperadoes don't worry or wonder why\",\n", + " \"well, son of a bitch, old rodney's gon' miss you, guy\",\n", + " \"and there ain't nothin' like a guy clark song\",\n", + " 'you feel abandoned, your friends are gone',\n", + " \"it's a lonely road you're travelin' on\",\n", + " \"well, there ain't nothin' like a guy clark song\",\n", + " 'la la la la la la (bobby mcgee)',\n", + " 'la la la me and bobby mcgee (bobby mcgee)',\n", + " 'la la la la la la (bobby mcgee)',\n", + " 'la la la me and bobby mcgee',\n", + " \"busted flat in baton rouge, headin' for the train\",\n", + " \"feelin' nearly faded as my jeans\",\n", + " 'bobby thumbed a diesel down just before it rained',\n", + " 'took us all the way to new orleans',\n", + " 'i pulled my old harp out of my dirty red bandana',\n", + " \"and was blowin' sad while bobby sang the blues\",\n", + " \"with those windshield wipers slappin' time\",\n", + " \"i was holdin' bobby's hand in mine\",\n", + " 'we sang every song that driver knew',\n", + " \"freedom's just another word for 'nothin' left to lose'\",\n", + " \"nothin' ain't worth nothin', but it's free\",\n", + " 'feeling good was easy, lord, when bobby sang the blues',\n", + " 'feeling good was good enough for me',\n", + " 'good enough for me and bobby mcgee',\n", + " 'la la la la la la (bobby mcgee)',\n", + " 'la la la me and bobby mcgee (bobby mcgee)',\n", + " 'la la la la la la (bobby mcgee)',\n", + " 'la la la me and bobby mcgee',\n", + " 'from the coal mines of kentucky to the california sun',\n", + " 'bobby shared the secrets of my soul',\n", + " \"standin' right beside me, lord, through everything i'd done\",\n", + " 'every night he kept me from the cold',\n", + " 'then somewhere near salinas, lord, i let him slip away',\n", + " \"searching for a home i hope he'll find\",\n", + " \"and i'd give all of my tomorrows for a single yesterday\",\n", + " \"holdin' bobby's body close to mine\",\n", + " \"freedom's just another word for 'nothin' left to lose'\",\n", + " \"nothin' ain't worth nothin', but it's free\",\n", + " 'feeling good was easy, lord, when bobby sang the blues',\n", + " 'feeling good was good enough for me',\n", + " 'good enough for me and bobby mcgee',\n", + " 'la la la la la la (bobby mcgee)',\n", + " 'la la la me and bobby mcgee (bobby mcgee)',\n", + " 'la la la la la la (bobby mcgee)',\n", + " 'la la la me and bobby mcgee (bobby mcgee)',\n", + " 'la la la la la la (bobby mcgee)',\n", + " 'la la la me and bobby mcgee (bobby mcgee)',\n", + " 'alright bro',\n", + " \"we're gonna have a talk about this\",\n", + " 'i brought you in this club and you done stole my girl',\n", + " \"and that ain't right\",\n", + " 'when we walked into the club i thought it was understood, mmm, hmm',\n", + " 'it was my turn tonight and it was your job to make me look good',\n", + " 'then i pointed out that sweet little beauty in black, yes i did',\n", + " 'i sent you over with a couple of drinks and you never came back',\n", + " 'you were supposed to be my wingman',\n", + " \"wasn't that your game plan\",\n", + " \"you take the grenade, and i'll take the fox\",\n", + " 'supposed to talk me up bro',\n", + " 'no matter what so',\n", + " \"don't go telling me you must've forgot\",\n", + " 'you waltzed her off the dance floor',\n", + " 'right out the back door',\n", + " 'leaving me to go it alone',\n", + " \"you're supposed to be my wingman\",\n", + " \"but the only thing that it should've been me\",\n", + " \"that's taking her home\",\n", + " 'shortly after you left, i was cussing your name, hell i was',\n", + " 'when her ugly girlfriend comes over starts working her game, mmm',\n", + " \"and i couldn't scare her off no matter what i'd said, nah, no\",\n", + " \"i was thinking i'm the one that should be kissing on that cutie instead\",\n", + " 'you were supposed to be my wingman',\n", + " \"wasn't that your game plan\",\n", + " \"you take the grenade, and i'll take the fox\",\n", + " 'supposed to talk me up bro',\n", + " 'no matter what so',\n", + " \"don't go telling me you must've forgot\",\n", + " 'you waltzed her off the dance floor',\n", + " 'right out the back door',\n", + " 'leaving me to go it alone',\n", + " \"you're supposed to be my wingman\",\n", + " \"but the only thing that it should've been me\",\n", + " \"that's taking her home\",\n", + " 'whoa',\n", + " 'they say, all is fair in love and war',\n", + " \"and all in time i'm going to settle that score\",\n", + " \"it ain't win or lose, it's how you play the game\",\n", + " \"if i was in your shoes, i might've done it just the same\",\n", + " 'you were supposed to be my wingman',\n", + " \"wasn't that your game plan\",\n", + " \"you take the grenade, and i'll take the fox\",\n", + " 'supposed to talk me up bro',\n", + " 'no matter what so',\n", + " \"don't go telling me you must've forgot\",\n", + " 'you waltzed her off the dance floor',\n", + " 'right out the back door',\n", + " 'leaving me to go it alone',\n", + " \"you're supposed to be my wingman\",\n", + " \"but the only thing that it should've been me\",\n", + " \"that's taking her home\",\n", + " 'you waltzed her off the dance floor',\n", + " 'right out the back door',\n", + " 'leaving me to go it alone',\n", + " \"you're supposed to be my wingman\",\n", + " \"but the only thing man it should've been me\",\n", + " \"that's taking her home\",\n", + " 'is taking her home, ohh',\n", + " 'you were supposed to be my wingman, mmm, mmm',\n", + " 'silent night, holy night',\n", + " 'all is calm, all is bright',\n", + " 'round yon virgin mother and child',\n", + " 'holy infant so tender and mild',\n", + " 'sleep in heavenly peace',\n", + " 'sleep in heavenly peace',\n", + " '(silent night, holy night,)',\n", + " '(shepherds quake at the sight,)',\n", + " 'glories stream from heaven afar',\n", + " 'heavenly hosts sing alleluia;',\n", + " 'christ the savior, is born!',\n", + " 'christ the savior, is born!',\n", + " 'silent night, holy night',\n", + " \"son of god, love's pure light\",\n", + " 'radiant beams from thy holy face',\n", + " 'with the dawn of redeeming grace',\n", + " 'jesus, lord, at thy birth...',\n", + " 'when my road runs out',\n", + " \"you're gonna find me with my lead foot down\",\n", + " 'rear view mirror, ripped off the windshield',\n", + " 'regrets nowhere near',\n", + " 'when my blood runs cold',\n", + " \"and it don't matter if i'm young or old\",\n", + " \"cause when it's all said and done\",\n", + " 'i’ll be long gone with the sun',\n", + " \"they're gonna know that i was here\",\n", + " 'gonna bang that drum, gonna light it up',\n", + " 'every bullet in the gun',\n", + " 'shot across the midnight sky',\n", + " \"ain't leavin' one behind\",\n", + " 'love even if it hurts',\n", + " 'even if i crash and burn',\n", + " 'all the way down to the embers',\n", + " 'leave them something to remember',\n", + " 'might be glory, might be flames',\n", + " 'when the good lord calls my name',\n", + " \"stand my ground, run from nothin'\",\n", + " \"i'm going out in a blaze of somethin'\",\n", + " 'i’m gonna come on strong',\n", + " \"like there's no tomorrow comin' on\",\n", + " \"enjoy the good times while you've got 'em\",\n", + " \"'cause who knows how long you've got 'em\",\n", + " 'raise your glass and sing along',\n", + " 'gonna bang that drum, gonna light it up',\n", + " 'every bullet in the gun',\n", + " 'shot across the midnight sky',\n", + " \"ain't leavin' one behind\",\n", + " 'love even if it hurts',\n", + " 'even if i crash and burn',\n", + " 'all the way down to the embers',\n", + " 'leave them something to remember',\n", + " 'might be glory, might be flames',\n", + " 'when the good lord calls my name',\n", + " \"stand my ground, run from nothin'\",\n", + " \"i'm going out in a blaze of somethin'\",\n", + " 'we all may be shooting stars',\n", + " 'here today, but gone tomorrow',\n", + " 'and i’m gonna keep on shining while i’m here',\n", + " 'gonna bang that drum, gonna light it up',\n", + " 'every bullet in the gun',\n", + " 'shot across the midnight sky',\n", + " \"ain't leavin' one behind\",\n", + " 'love even if it hurts',\n", + " 'even if i crash and burn',\n", + " 'all the way down to the embers',\n", + " 'leave them something to remember',\n", + " 'might be glory, might be flames',\n", + " 'when the good lord calls my name',\n", + " \"stand my ground, run from nothin'\",\n", + " \"i'm going out in a blaze of somethin'\",\n", + " \"in a blaze of somethin'\",\n", + " \"yeah, i'm goin' out, and i'm goin' out\",\n", + " \"yeah, in a blaze of somethin'\",\n", + " \"yeah, i'm goin' out, i'm goin' out\",\n", + " \"i came in last night 'bout a half past ten\",\n", + " \"that baby of mine wouldn't let me in\",\n", + " 'move it on over, rock it on over',\n", + " \"move a little dog, a mean old dog movin' in\",\n", + " 'now listen to me talk before you start to whine',\n", + " \"that side's yours and this side's mine\",\n", + " 'move it on over, rock it on over',\n", + " \"move a little dog, a mean old dog movin' in\",\n", + " 'she warned me once, warned me twice',\n", + " \"i don't take nobody's advice\",\n", + " 'move it on over, rock it on over',\n", + " \"move a little dog, a mean old dog movin' in\",\n", + " 'listen to me howl before you start to whine',\n", + " \"that side's yours, baby, this side's mine\",\n", + " \"move it on over, why don't you rock it on over\",\n", + " \"move it little dog, a mean old dog movin' in\",\n", + " \"come back to me beggin' on her knees\",\n", + " \"meanwhile i'll be scratchin' fleas\",\n", + " 'move it on over, rock it on over',\n", + " \"move it little dog, a mean old dog movin' in\",\n", + " 'she changed the lock on my back door',\n", + " \"now my key don't fit no more\",\n", + " 'move it on over, rock it on over',\n", + " \"move it little dog, a mean old dog movin' in\",\n", + " 'move it on over, move it on over',\n", + " 'move it on over, rock it on over',\n", + " \"move over cool dog, a hot dog's movin' in\",\n", + " 'if you want to hang out',\n", + " \"you've got to take her out\",\n", + " 'cocaine',\n", + " 'if you want to get down',\n", + " 'down on the ground',\n", + " 'cocaine',\n", + " \"she don't lie\",\n", + " \"she don't lie\",\n", + " \"she don't lie\",\n", + " 'cocaine',\n", + " 'if you got bad news',\n", + " 'you want to kick them blues',\n", + " 'cocaine',\n", + " 'when your day is done',\n", + " 'want to run',\n", + " 'cocaine',\n", + " \"she don't lie\",\n", + " \"she don't lie\",\n", + " \"she don't lie\",\n", + " 'cocaine',\n", + " 'if your thing is gone',\n", + " 'and you wanna ride on',\n", + " 'cocaine',\n", + " \"don't forget this fact\",\n", + " \"you can't get it back\",\n", + " 'cocaine',\n", + " \"she don't lie\",\n", + " \"she don't lie\",\n", + " \"she don't lie\",\n", + " 'cocaine',\n", + " \"she don't lie\",\n", + " \"she don't lie\",\n", + " \"she don't lie\",\n", + " 'cocaine',\n", + " 'woke up this morning with the sundown shining in',\n", + " 'found my mind in a brown paper bag again',\n", + " 'tripped on a cloud and fell eight miles high',\n", + " 'tore my mind on a jagged sky',\n", + " 'and i just dropped in to see what condition my condition was in',\n", + " 'lord, lord, lord, what condition my condition was in',\n", + " 'i pushed my soul in a deep dark hole and followed it in',\n", + " 'met myself crawling out as i was crawling in',\n", + " \"i woke up so tight i said i'd never unwind\",\n", + " 'i saw so much that it broke my mind',\n", + " 'i just dropped in to see what condition my condition was in',\n", + " 'lord, lord, lord, what condition my condition was in',\n", + " 'i just dropped in to see what condition my condition was in',\n", + " 'lord, lord, lord, what condition my condition was in',\n", + " 'somebody painted april fool in big black letters',\n", + " 'on a dead end sign',\n", + " 'i had my foot on the gas',\n", + " 'when i left the road, it blew out my mind',\n", + " 'eight miles out of memphis, lord, i got no spare',\n", + " 'eight miles straight up downtown somewhere',\n", + " 'i just dropped in to see what condition my condition was in',\n", + " 'lord, lord, lord, what condition my condition was in',\n", + " 'what condition my condition was in',\n", + " 'songwriter: mickey newbury',\n", + " 'magic valley',\n", + " '(marvin moore, j.p. richardson)',\n", + " \"â« â© '62 al gallico music â»\",\n", + " \"i'm going home to magic valley where hay turns into rose\",\n", + " \"i'm going home to magic valley leaving for my home above\",\n", + " \"now don't you cry because i'm leaving for you see i've had my day\",\n", + " \"i've led the life that's not for grieving so rejoice with me and pray\",\n", + " 'for i hear my lord telling me put down that heavy load',\n", + " \"you'll reach your gold now follow me come on up the golden road\",\n", + " 'for i hear my lord telling me...',\n", + " 'this is the end of side one of this record',\n", + " 'please now turn it over for the second side',\n", + " \"i got a phone that won't die\",\n", + " \"you're up in the air, landing tonight\",\n", + " \"so i'll leave a message for ya, get it when you touch down\",\n", + " \"if i'm being honest, i'm a little drunk now\",\n", + " \"i got a bed that's too big without ya\",\n", + " \"i got a heart that don't beat without ya\",\n", + " \"get so jealous when you ain't by my side\",\n", + " \"i know it's selfish, but i need you tonight\",\n", + " 'so text when you touch down, straight to my place now',\n", + " \"these nights without you, they're so hard to sleep\",\n", + " \"come put your things down, i'll order take out\",\n", + " 'no more to say now, baby, just make out with me',\n", + " 'baby, just make out with me',\n", + " 'you got a kiss i still taste',\n", + " 'and i feel your lips from miles away',\n", + " 'i got one more minute of this message to burn',\n", + " \"i hope you get it 'cause i mean every word\",\n", + " 'so text when you touch down, straight to my place now',\n", + " \"these nights without you, they're so hard to sleep\",\n", + " \"come put your things down, i'll order take out\",\n", + " 'no more to say now, baby, just make out with me',\n", + " 'baby, just make out with me',\n", + " 'just like it used to be, baby, just make out with me',\n", + " 'i stand on these two feet',\n", + " 'forty-eight hours so',\n", + " 'my steps might move the days',\n", + " \"to where i'd like to be\",\n", + " 'the web is thick with lies and cheats',\n", + " \"i'm one of them, and you're out of reach\",\n", + " 'i wear these ribbons like',\n", + " 'a prisoner, ball and chain',\n", + " 'a grain in a desert dune',\n", + " 'praying to the sun for rain',\n", + " 'the air is dry, the stars are true',\n", + " \"i wonder how i'll change for you\",\n", + " 'i watch on glowing screens',\n", + " 'scrawling pipes of industry',\n", + " \"later we'll strike chords in bars\",\n", + " \"wonder who's listening\",\n", + " 'the room is dark and i cannot see',\n", + " \"can only feel what's missing\",\n", + " 'the rooms is dark and i cannot see',\n", + " \"can only feel what's missing\",\n", + " 'fifteen dollars is my gain, fifteen is my draw',\n", + " 'randall collins is my name, down in arkansas',\n", + " \"rollin' dice in the railroad yard, won't get'cha too much, jack\",\n", + " \"workin' on that section gang will surely break your back\",\n", + " 'fifteen dollars is my gain, fifteen is my draw',\n", + " 'randall collins is my name, in the state of arkansas',\n", + " \"hidin' out by the water tank, where the shade is cool\",\n", + " \"just watchin' that straw boss hunt for me, i ain't no-body's fool\",\n", + " 'fifteen dollars is my gain, fifteen is my draw',\n", + " 'randall collins is my name, in the state of arkansas',\n", + " \"they're a'making up train in the memphis yard, the longest i ever saw\",\n", + " 'gonna ride it down to fairbanks town in the state of arkansas',\n", + " 'fifteen dollars is my gain, fifteen is my draw',\n", + " 'randall collins is my name, in the state of arkansas',\n", + " 'fifteen dollars is my gain, fifteen is my draw',\n", + " 'randall collins is my name, in the state of arkansas',\n", + " \"tomorrow i'm gonna leave here\",\n", + " \"i'm gonna let you go and walk away\",\n", + " 'like every day i said i would',\n", + " \"and tomorrow, i'm gonna listen\",\n", + " 'to that voice of reason inside my head',\n", + " \"telling me that we're no good\",\n", + " \"but, tonight i'm gonna give in one last time\",\n", + " 'rock you strong in these arms of mine',\n", + " 'forget all the regrets that are bound to follow',\n", + " \"we're like fire and gasoline\",\n", + " \"i'm no good for you, you're no good for me\",\n", + " 'we only bring each other tears and sorrow',\n", + " \"but tonight, i'm gonna love you like there's no\",\n", + " \"tomorrow i'll be stronger\",\n", + " \"i'm not gonna break down and call you up\",\n", + " 'when my heart cries out for you',\n", + " \"and tomorrow, you won't believe it\",\n", + " \"but when i pass your house, i won't stop\",\n", + " 'no matter how bad i want to',\n", + " \"but, tonight i'm gonna give in one last time\",\n", + " 'rock you strong in these arms of mine',\n", + " 'forget all the regrets that are bound to follow',\n", + " \"we're like fire and gasoline\",\n", + " \"i'm no good for you, you're no good for me\",\n", + " 'we only bring each other tears and sorrow',\n", + " \"but tonight, i'm gonna love you like there's no\",\n", + " 'tomorrow',\n", + " \"baby, when we're good, you know we're great\",\n", + " \"but there's too much bad for us to think\",\n", + " \"that there's anything worth trying to save\",\n", + " \"but tonight i'm gonna give in one last time\",\n", + " 'rock you strong in these arms of mine',\n", + " 'forget all the regrets that are bound to follow',\n", + " \"we're like fire and gasoline\",\n", + " \"i'm no good for you, you're no good for me\",\n", + " 'we only bring each other tears and sorrow',\n", + " \"but tonight, i'm gonna love you like there's no\",\n", + " \"tomorrow, i'm gonna leave here\",\n", + " \"yeah, i'm gonna let you go and walk away\",\n", + " 'like every day i said i would',\n", + " \"hey, it's big d and bubba, and and we're live on location. we want you to come on out because this is not just a party; it's a parking lot party with lee brice!\",\n", + " \"johnny's firing up his coleman grill\",\n", + " \"we've got 24 tall boys on the chill\",\n", + " \"yeah, 14 of 'em's mine\",\n", + " 'a little marshall tucker on the radio',\n", + " \"(can't you see?)\",\n", + " \"you know we're just catchin' a little groove before the show\",\n", + " \"yeah, ain't playing nothing slow\",\n", + " 'at the parking lot party',\n", + " \"tailgate buzz just sipping' on suds\",\n", + " \"ain't never too early\",\n", + " 'to light one up, fill up your cup',\n", + " \"'cause there ain't no party like the pre-party\",\n", + " 'and after the party is the after-party',\n", + " 'at the parking lot party',\n", + " \"well, the opening band is doin' sound-check\",\n", + " 'man, they sound pretty good',\n", + " \"hell, i ain't even bought no tickets yet\",\n", + " \"yeah, but that's alright we don't care\",\n", + " \"'cause all the pretty girls are sitting' right here\",\n", + " 'kicking back in the lawn chairs',\n", + " 'at the parking lot party',\n", + " \"tailgate buzz just sipping' on suds\",\n", + " \"ain't never too early\",\n", + " 'to light one up, fill up your cup',\n", + " \"'cause there ain't no party like the pre-party\",\n", + " 'and after the party is the after-party',\n", + " 'at the parking lot party',\n", + " 'woh-oh-oh-oh!',\n", + " \"old tom's pulling' his guitar out\",\n", + " 'woh,-oh-oh-oh!',\n", + " \"it's bout time to pass that shine around\",\n", + " 'hey-hey-hey!',\n", + " \"show's about to start but we ain't about to leave\",\n", + " 'hey hey hey!',\n", + " \"it's one hell of a time and it's all for free!\",\n", + " 'at the parking lot party',\n", + " \"tailgate buzz just sipping' on suds\",\n", + " \"ain't never too early\",\n", + " 'to light one up, fill up your cup',\n", + " \"'cause there ain't no party like the pre-party\",\n", + " 'and after the party is the after-party',\n", + " 'at the parking lot party',\n", + " 'oh yeah, cam on',\n", + " 'parking lot party',\n", + " \"oh, they're going to have to tow my ass out of here\",\n", + " 'parking lot party',\n", + " 'oh, man, damn, girl',\n", + " 'parking lot party',\n", + " 'woo-ooh',\n", + " 'parking lot party',\n", + " \"don't think i've ever seen that before, lord\",\n", + " '(hey-hey-hey)',\n", + " 'luxury liner, forty tons of steel',\n", + " 'no one in this whole wide world knows the way i feel',\n", + " \"i've been a long lost soul for a long, long time\",\n", + " \"yeah, i've been around\",\n", + " \"everybody ought to know what's on my mind\",\n", + " \"you think i'm lonesome, so do i, so do i\",\n", + " \"well, i'm the kind of girl\",\n", + " ...]},\n", + " 'data': ['we were born before the wind',\n", + " 'also younger than the sun',\n", + " 'ere the bonnie boat was won',\n", + " 'as we sailed into the mystic',\n", + " 'hark, now hear the sailors cry',\n", + " 'smell the sea, babe, and feel the sky',\n", + " 'let your soul and spirit fly into the mystic',\n", + " 'when that fog horn blows i will be coming home',\n", + " 'when that fog horn blows i gotta hear it',\n", + " \"i don't have to fear it\",\n", + " \"'cause i want to rock your gypsy soul\",\n", + " 'just like way back in the days of old',\n", + " 'oh, together we will roll into the mystic',\n", + " 'come on!',\n", + " 'when that fog horn whistle blows',\n", + " 'you know i will be coming home to you',\n", + " 'yeah, when that fog horn whistle blows',\n", + " \"i want to hear it, i don't have to fear it\",\n", + " \"'cause i want to rock your gypsy soul\",\n", + " 'just like way back in the days of old, mama',\n", + " 'magnificently, we will row into the mystic',\n", + " \"well, it's too late to help me, son, mmm\",\n", + " 'six-by-nine and counting down, in one after the other',\n", + " \"they'll go running up and down the road, angry as their mothers\",\n", + " 'over senseless acts of selfishness on made up english oceans',\n", + " 'and made up english stomach contents tied to senseless notions',\n", + " 'once you grab them by the pride, their hearts are bound to follow',\n", + " 'their natural fear of anything less manly or less natural',\n", + " 'then gun-less sheriffs caught on lonesome roads and live to tell it',\n", + " 'how hard it is for meaner men without the lead to sell it',\n", + " 'cause only simple men can see the logic in whatever',\n", + " 'smarter men can whittle down till you can fit it on a sticker',\n", + " 'get it stuck like mud and bugs to names that set the standard',\n", + " \"they'll live it like it's gospel, and they'll quote it like it's scripture\",\n", + " 'six-by-nine and counting down, in one after the other',\n", + " \"they'll go running up and down the road, angry as their mothers\",\n", + " 'over senseless acts of selfishness on made up english oceans',\n", + " 'and made up english stomach contents tied to senseless notions',\n", + " \"it's no matter if they dress real nice, and sit up straight and stupid\",\n", + " 'and say their prayers in quiet ancient tongues',\n", + " \"they're no different that the ones who close their eyes and fall down to the ground\",\n", + " 'and twitch like all their nerves have come undone',\n", + " \"so be it if they come to find out feeling good's as easy\",\n", + " \"as denying that there's day or night at all\",\n", + " 'till what it takes to feel a thing seems so far out of reach',\n", + " 'they just claw their skin, and grind their teeth and bawl',\n", + " 'from thirty thousand feet above',\n", + " 'the desert floor, i see it there below',\n", + " 'a city with a legend',\n", + " 'the west texas city of el paso',\n", + " 'where long ago i heard a song',\n", + " 'about a texas cowboy and a girl',\n", + " \"and a little place called rosa's\",\n", + " 'where he used to go and watch this beauty whirl',\n", + " \"i don't recall who sang the song\",\n", + " 'but i recall the story that i heard',\n", + " 'and as i look down on the city',\n", + " 'i remember each and every word',\n", + " 'the singer sang about a jealous cowboy',\n", + " 'and the way he used a gun',\n", + " 'to kill another cowboy',\n", + " 'then he had to leave el paso on the run',\n", + " 'el paso city, by the rio grande',\n", + " 'the cowboy lived and rode away',\n", + " \"but love was strong, he couldn't stay\",\n", + " 'he rode back just to die in that el paso sand',\n", + " 'el paso city, by the rio grande',\n", + " 'i try not to let you cross my mind',\n", + " \"but still i find there's such a mystery in the song\",\n", + " \"that i don't understand\",\n", + " 'my mind is down there somewhere',\n", + " 'as i fly above the badlands of new mexico',\n", + " \"i can't explain why i should know\",\n", + " 'the very trail he rode back to el paso',\n", + " 'can it be that man can disappear from life and live another time?',\n", + " 'and does the mystery deepen',\n", + " 'cause you think that you yourself lived in that other time?',\n", + " 'somewhere in my deepest thoughts',\n", + " 'familiar scenes and memories unfold',\n", + " \"these wild and unexplained emotions that i've had so long\",\n", + " 'but i have never told',\n", + " 'like every time i fly up through the heavens',\n", + " 'and i see you there below',\n", + " 'i get the feeling sometime in another world i lived in el paso',\n", + " 'el paso city, by the rio grande',\n", + " 'could it be, that i could be',\n", + " 'the cowboy in this mystery',\n", + " 'that died there in that desert sand so long ago?',\n", + " 'el paso city, by the rio grande',\n", + " 'a voice tells me to go and see',\n", + " \"another voice, keeps tellin' me\",\n", + " 'maybe death awaits me in el paso',\n", + " 'el paso city.....',\n", + " \"look at you sittin' on that tailgate\",\n", + " 'all barefoot, beautiful and brown-eyed',\n", + " \"just watchin' you breathin's blowin' me away\",\n", + " 'all i can think about tonight',\n", + " 'somebody find me a preacher',\n", + " 'somebody find me a man with a bible who can tie a knot',\n", + " \"i know what i've got, i know who i love\",\n", + " 'track him down, wake him up',\n", + " 'right here, right now in this tennessee dirt',\n", + " 'no long white dress, no little white church',\n", + " 'just you in your cutoff jeans and my old t-shirt',\n", + " 'somebody find me a preacher',\n", + " \"baby i can't wait another minute\",\n", + " 'with you on my lap and your back against the wheel',\n", + " \"i ain't got no diamond here to give ya\",\n", + " \"but if this is how lovin' you feels\",\n", + " 'somebody find me a preacher',\n", + " 'somebody find me a man with a bible who can tie a knot',\n", + " \"i know what i've got, i know who i love\",\n", + " 'track him down, wake him up',\n", + " 'right here, right now in this tennessee dirt',\n", + " 'no long white dress, no little white church',\n", + " 'just you in your cutoff jeans and my old t-shirt',\n", + " 'somebody find me a preacher',\n", + " \"'cause i want to spend\",\n", + " 'the rest of my life',\n", + " \"makin' you feel\",\n", + " 'the way i feel tonight',\n", + " 'somebody find, somebody find me a preacher',\n", + " 'somebody find me a man with a bible who can tie a knot',\n", + " \"i know what i've got, i know who i love\",\n", + " 'track him down, wake him up',\n", + " 'right here, right now in this tennessee dirt',\n", + " 'no long white dress, no little white church',\n", + " 'just you in your cutoff jeans and my old t-shirt',\n", + " 'somebody find me a preacher',\n", + " 'find me a preacher tonight',\n", + " 'find me a preacher',\n", + " 'grandpa',\n", + " \"tell me 'bout the good old days\",\n", + " 'sometimes it feels like',\n", + " \"this world's gone crazy\",\n", + " 'grandpa, take me back to yesterday',\n", + " 'where the line between right and wrong',\n", + " \"didn't seem so hazy\",\n", + " 'did lovers really fall in love to stay',\n", + " 'stand beside each other come what may?',\n", + " 'was a promise really something people kept',\n", + " 'not just something they would say?',\n", + " 'did families really bow their heads to pray?',\n", + " 'did daddies really never go away?',\n", + " 'whoa oh grandpa',\n", + " \"tell me 'bout the good old days\",\n", + " 'grandpa',\n", + " 'everything is changing fast',\n", + " 'we call it progress',\n", + " \"but i just don't know\",\n", + " \"and grandpa, let's wonder back into the past\",\n", + " 'and paint me a picture of long ago',\n", + " 'did lovers really fall in love to stay',\n", + " 'stand beside each other come what may?',\n", + " 'was a promise really something people kept',\n", + " 'not just something they would say and then forget?',\n", + " 'did families really bow their heads to pray?',\n", + " 'did daddies really never go away?',\n", + " 'whoa oh grandpa',\n", + " \"tell me 'bout the good old days\",\n", + " 'whoa oh grandpa',\n", + " \"tell me 'bout the good ole days\",\n", + " \"the cuckoo she's a pretty bird, she sings as she flies\",\n", + " 'she bringeth us good tidings, she telleth us no lies',\n", + " 'she sucketh white flowers to keep her voice clear',\n", + " 'and everytime she singeth “cuckoo, cuckoo, cuckoo”',\n", + " 'then the springtime draweth near',\n", + " \"the cuckoo she's a pretty bird, no other is as she\",\n", + " 'she flits across the meadow and sings from every tree',\n", + " 'she loves the summеr sunshine, she hates the wind and rain',\n", + " 'and everytime she singeth “cuckoo, cuckoo, cuckoo”',\n", + " 'then the springtime comes again',\n", + " 'well i sat down next to a photograph',\n", + " 'tried my best almost made her laugh',\n", + " 'she was my toughest crowd',\n", + " 'there in the way',\n", + " 'was a mountain up in the clouds',\n", + " \"well i can't sleep and i'm not in love\",\n", + " \"i can't speak without messing up\",\n", + " \"eyes tell of what's behind\",\n", + " 'hers showed the way to a long and a lonely climb',\n", + " \"but through failure i'll proceed\",\n", + " \"she'll see how far i've come\",\n", + " \"and it's you and me in the sun and sea\",\n", + " \"i'll offer my arm to yours\",\n", + " 'it seems to me no mystery',\n", + " \"it isn't, so i'll try hard to speak\",\n", + " 'well i sat down next to a living hell',\n", + " 'tried my best until i struck out',\n", + " 'movement is not mine',\n", + " 'i stood in the way',\n", + " 'pretending that i was the vine',\n", + " 'but no failure will proceed',\n", + " 'from a mouth that drinks its wine',\n", + " \"and it's not me not my sanctity\",\n", + " \"these aren't my words to you\",\n", + " \"it's all clear when it's not from here\",\n", + " \"so clear, so i'll try not to speak\",\n", + " 'twenty dollar bill in my pocket',\n", + " '350 chevrolet knocking',\n", + " \"it ain't worth much\",\n", + " \"but tonight it's running plenty good enough\",\n", + " 'no party, no strobe lights flashing',\n", + " 'vip velvet rope action',\n", + " 'round here, right here',\n", + " 'we got our own little perfect kinda atmosphere',\n", + " 'static on the radio, ready to rock',\n", + " 'cool track, chill back, ready or not',\n", + " \"smiling that smile, i don't want you to stop\",\n", + " 'yeah, you and i, we got it all tonight',\n", + " 'big sky but the stars are shining',\n", + " \"no we ain't got nothing but time and\",\n", + " 'moonlight falling, good times calling',\n", + " \"ain't got much, but we got it all tonight\",\n", + " 'thrift shop rock and roll t-shirt',\n", + " \"you're lookin so good that it hurts\",\n", + " \"i swear i don't care\",\n", + " \"you know it ain't likely but it's got me wanting to stare\",\n", + " \"i can't do dinner at a five star\",\n", + " 'so how bout we hit a little dive bar',\n", + " 'a little bit later on',\n", + " \"but right now let's keep rolling along\",\n", + " 'static on the radio, ready to rock',\n", + " 'cool track, chill back, ready or not',\n", + " \"smiling that smile, i don't want you to stop\",\n", + " 'yeah, you and i, we got it all tonight',\n", + " 'big sky but the stars are shining',\n", + " \"no we ain't got nothing but time and\",\n", + " 'moonlight falling, good times calling',\n", + " \"ain't got much, but we got it all tonight\",\n", + " 'oh the real good, feel good, late at night',\n", + " 'all i need is you looking like that',\n", + " 'and just like that',\n", + " 'and just like that',\n", + " 'static on the radio, ready to rock',\n", + " 'cool track, chill back, ready or not',\n", + " \"smiling that smile, i don't want you to stop\",\n", + " 'yeah, you and i, we got it all tonight',\n", + " 'big sky but the stars are shining',\n", + " \"no we ain't got nothing but time and\",\n", + " 'moonlight falling, good times calling',\n", + " \"ain't got much, but we got it all tonight\",\n", + " 'we got it all tonight',\n", + " 'we got it all tonight',\n", + " 'we got it all tonight',\n", + " 'lorenzo blues 4:19 trk 9',\n", + " \"nehemiah curtis 'skip' james\",\n", + " 'skip james - vocal, guitar and piano',\n", + " 'album: blues from the delta',\n", + " \"from vanguard 'devil got my woman' album 1968\",\n", + " 'vanguard records cd 96517-2 1998',\n", + " 'i wonder has anybody here',\n", + " \"seen my lovin' lorenzo, today?\",\n", + " 'i wonder has anybody here',\n", + " \"seen my lovin' lorenzo, today?\",\n", + " 'you know, we had a nice time christmas',\n", + " \"but she left me on new year's day\",\n", + " 'oh, you got to know her',\n", + " 'when you see her',\n", + " \"'cause she's so different\",\n", + " 'from any other girl',\n", + " \"oh, you've got to know her\",\n", + " 'when you see her',\n", + " 'from any other girl',\n", + " \"because she's made up\",\n", + " 'like a coke-cola bottle',\n", + " 'an she got a likeness',\n", + " \"it's outta this world, alright\",\n", + " \"you know, she's stutters in her speech\",\n", + " 'an she wiggle and she wobble',\n", + " 'when she walk',\n", + " \"she's stuttered in her speech\",\n", + " 'an she wiggle an a-wobble',\n", + " 'when she walk',\n", + " 'yes, an she got three gold teeth',\n", + " 'an she got deep dimples in her jaw, yeah',\n", + " \"i say, 'hello, lorenzo, lorenzo\",\n", + " \"how in the world come you treat me this-a-way?'\",\n", + " \"i say, 'lorenzo, lorenzo\",\n", + " \"how in the world come you treat me this-a-way?'\",\n", + " 'darling, you know that you was gonna leave me',\n", + " \"but you didn't tell me you was goin' to stay\",\n", + " 'now, if i can make a half a million',\n", + " \"i declare, i'm 'on give it all, to the hoodoo man\",\n", + " 'i declare, if i can make a half a million',\n", + " \"i'm 'on give it all, to the hoodoo man\",\n", + " 'just after he promise me that he will',\n", + " \"bring my lovin' lorenzo, back home to me, again\",\n", + " 'an i want her back ho-oh-ome, to me again',\n", + " '~',\n", + " 'and i finally asked you to dance on the last slow song',\n", + " 'beneath that moon that was really a disco ball',\n", + " 'i can still feel my head on your shoulder',\n", + " 'and hoping that song would never be over',\n", + " \"i haven't seen you in ages\",\n", + " 'sometimes i find myself',\n", + " 'wondering where you are',\n", + " \"for me, you'll always be 18\",\n", + " \"and beautiful, and dancin' away with my heart\",\n", + " 'i brushed your curls back so i could see your eyes',\n", + " 'and the way you moved me was like you were reading my mind',\n", + " 'i can still feel you lean in to kiss me',\n", + " \"i can't help but wonder if you ever miss me\",\n", + " \"i haven't seen you in ages\",\n", + " 'sometimes i find myself',\n", + " 'wondering where you are',\n", + " \"for me, you'll always be 18\",\n", + " \"and beautiful, and dancin' away with my heart\",\n", + " 'you headed off to college',\n", + " 'at the end of that summer and we lost touch',\n", + " \"i guess i didn't realize even at that moment we lost so much\",\n", + " \"i haven't seen you in ages\",\n", + " 'sometimes i find myself',\n", + " 'wondering where you are',\n", + " \"for me, you'll always be 18\",\n", + " \"and beautiful, and dancin' away with my heart\",\n", + " 'na-na-na',\n", + " 'na-na-na',\n", + " 'na-na-na',\n", + " 'away with my heart',\n", + " 'na-na-na',\n", + " 'na-na-na',\n", + " 'na-na-na',\n", + " 'it rained today, the clouds rolled up at dawn',\n", + " 'all hell burst wide open and just like that was gone',\n", + " \"your little lap dog chased a fox tailed squirrel 'cross the main road through the wood\",\n", + " 'some ninja on a dirt bike nearly ran him down for good',\n", + " 'right about now it gets quiet around here, what with nightfall in the wings',\n", + " 'the floorboards creak and faucets leak, but it’s the emptiness that sings',\n", + " 'the wind grows chill and then lies still',\n", + " 'forty miles from nowhere',\n", + " 'at the bottom of the world',\n", + " 'november sky’s a diamond-studded dome',\n", + " 'a hundred billion points of light to guide my way back home',\n", + " 'when the moon is hanging fat and full and all those jangly stars recede',\n", + " 'a fold out couch on a midnight porch is where my footsteps lead',\n", + " 'you always said i made my bed',\n", + " 'forty miles from nowhere',\n", + " 'at the bottom of the world',\n", + " 'friends don’t call like they used to',\n", + " 'for reasons not unkind',\n", + " 'if there’s anything that we can do',\n", + " 'rings hollow down a telephone line',\n", + " 'there’s a cedar grove in back of the house maybe halfway down the hill',\n", + " 'a place to go and just lay low when we have some time to fill',\n", + " 'a few gravestones, a pre-civil war fence and the random arrowhead',\n", + " 'it\\'s where the beehive swarmed three summers ago, \"too wet\" the old men said',\n", + " 'so it’s me your, little lap dog and that old brindle cat trying to keep this place in line',\n", + " 'and heading into town these days is the last thing on my mind',\n", + " 'i weep for you, it’s what i do',\n", + " 'forty miles from nowhere',\n", + " 'at the bottom of the world',\n", + " 'forty miles from nowhere',\n", + " 'at the bottom of the world',\n", + " 'a short time i have to be with you my love',\n", + " 'but a short time is better than no time you see',\n", + " 'so i bring to you all my posessions and would that you share them with me',\n", + " 'i bring one springtime of robins one springtime of robins to sing',\n", + " 'i bring you one summer of roses one summer of roses i bring',\n", + " 'i bring you the dry leaves of autumn dry leaves will be helpful you know',\n", + " 'to soften the fall of your snowflakes when i bring you your winter of snow',\n", + " 'this looks like a december day this looks like a time to remember day',\n", + " 'and i remember a spring such a sweet tender thing',\n", + " \"and love's summer college where the green leaves of knowledge\",\n", + " 'were waiting to fall with the fall',\n", + " 'and where september wine numbed a measure of time',\n", + " 'through the tears of october',\n", + " \"now november's over and this looks like a december day\",\n", + " \"this looks like a december day it's looks like we've come to the end of the way\",\n", + " \"and as my mem'ries race back to loves eager beginning\",\n", + " \"reluctant to play with the thoughts of the ending the ending that won't go away\",\n", + " \"and as my mem'ries race back to loves eager beginning\",\n", + " \"reluctant to play with the thoughts of the ending the ending that won't go away\",\n", + " 'and this looks like a december day',\n", + " \"somebody's gonna pay for the way that you walked on me\",\n", + " \"somebody's gonna pay for the way that you lied\",\n", + " \"somebody's gonna learn that something you just don't do to me\",\n", + " \"somebody's gonna pay for the way that i cried\",\n", + " 'the only way to get back at you is with someone new',\n", + " 'someone who can be there all the time',\n", + " \"i know it's wrong and assuring it's cruel\",\n", + " \"but i'm gonna break your heart the same way you did mine\",\n", + " \"somebody's gonna pay for the way that you walked on me\",\n", + " \"somebody's gonna pay for the way that you lied\",\n", + " \"somebody's gonna learn that something you just don't do to me\",\n", + " \"somebody's gonna pay for the way that i cried\",\n", + " 'never again will i ever depend on such a foolish thing',\n", + " 'no more will i show my hidden side',\n", + " 'i open my heart and i open my soul and i told you this',\n", + " 'and all you did was take me for a ride',\n", + " \"somebody's gonna pay for the way that you walked on me\",\n", + " \"somebody's gonna pay for the way that you lied\",\n", + " \"somebody's gonna learn that something you just don't do to me\",\n", + " \"somebody's gonna pay for the way that i cried\",\n", + " \"somebody's gonna pay for the way that you walked on me\",\n", + " \"somebody's gonna pay for the way that you lied\",\n", + " \"somebody's gonna learn that something you just don't do to me\",\n", + " \"somebody's gonna pay for the way that i cried\",\n", + " \"somebody's gonna pay for the way that you lied\",\n", + " \"i'm a wanderer i'll keep drifting on\",\n", + " \"can't see honey why you done me wrong\",\n", + " 'hard luck sure has got me',\n", + " \"i can't sleep a wink\",\n", + " \"i'll just have to face it from now on\",\n", + " 'chorus:',\n", + " \"sailing o'er the sea of dreams no one cares for me\",\n", + " \"and we're drifting oh so far apart\",\n", + " 'you slam the door of love on me',\n", + " 'and found a new daddy i could see',\n", + " 'by that unwanted sign upon your heart',\n", + " 'break (fiddle)',\n", + " \"seems i'm always on the losing end\",\n", + " 'your little game of love was just pretend',\n", + " 'i have learned the hard way',\n", + " 'it was plain to see',\n", + " 'you were nothing more than just a friend',\n", + " 'chorus:',\n", + " \"never thought you'd treat me so i can't understand\",\n", + " 'why you had to tear my world apart',\n", + " 'left me everything to lose',\n", + " 'and along with mean old blues',\n", + " 'that unwanted sign upon your heart',\n", + " 'break (steel - fiddle)',\n", + " 'maybe someday that old tide will turn',\n", + " 'and your ship will drift on back to me',\n", + " \"then i'll be the captain\",\n", + " 'you will be the crew',\n", + " 'you know how it feels to sit and yearn',\n", + " 'chorus:',\n", + " \"you may think you're doing fine and the world is yours\",\n", + " 'but you played an unfair game to start',\n", + " 'when you learn that love is blind',\n", + " \"you'll come back but then you'll find\",\n", + " 'an unwanted sign upon my heart',\n", + " 'a little kiss of freedom',\n", + " \"i'd forgotten how that tastes\",\n", + " 'a little room for breathing',\n", + " \"and then you're on your way\",\n", + " \"there's a million little reasons\",\n", + " 'for this smile on my face',\n", + " 'without those tears in my eyes',\n", + " \"i bet you'd hardly recognize\",\n", + " 'me, without you',\n", + " 'well, you left the cage door open',\n", + " 'and your pretty bird just flew',\n", + " 'and i never knew',\n", + " 'that i could fly so high',\n", + " 'and the sky could be this blue',\n", + " \"i can't believe it's real\",\n", + " 'so this is how it feels',\n", + " 'me, without you',\n", + " 'now i wake up early',\n", + " 'whole world feels new',\n", + " 'seems so strange to ask myself',\n", + " 'what do i want to do?',\n", + " \"now, i don't know this road i'm on\",\n", + " \"or where it's leading to\",\n", + " \"but i know i'm gonna be alright\",\n", + " 'the more i see, the more i like',\n", + " 'me, without you',\n", + " 'well, you left the cage door open',\n", + " 'and your pretty bird just flew',\n", + " 'and i never knew',\n", + " 'that i could fly so high',\n", + " 'and the sky could be this blue',\n", + " \"i can't believe it's real\",\n", + " 'so this is how it feels',\n", + " 'me, without you',\n", + " 'oh, you had me believing',\n", + " \"i didn't have the strength for leaving\",\n", + " 'but any fool could see',\n", + " \"i'm better off, just look at\",\n", + " 'me, without you',\n", + " 'well, you left the cage door open',\n", + " 'and your pretty bird just flew',\n", + " 'and i never knew',\n", + " 'that i could fly so high',\n", + " 'and the sky could be this blue',\n", + " \"i can't believe it's real\",\n", + " 'so this is how it feels',\n", + " \"i can't believe it's real\",\n", + " 'oh, so this is how it feels',\n", + " 'me, without you',\n", + " 'me, without you',\n", + " \"she was sneakin' up her sundress, showing off her tatty\",\n", + " 'she said, \"i like your ride, maybe you could be my caddy',\n", + " 'what you say you pick us up a six-pack of natty?\"',\n", + " 'aww nice',\n", + " 'she had a sweet little southern twang',\n", + " 'said, \"we don\\'t have to talk about forever things',\n", + " 'for tonight maybe we could just hang like a pair of dice\"',\n", + " \"said, whatever girl, you know i'm down\",\n", + " \"i was thinkin' we could crush this town\",\n", + " 'like a beer can in a truck bed',\n", + " 'on a slow ride in the sunset (hey)',\n", + " \"bouncin' down a small town street\",\n", + " \"let's pop the top right off this thing\",\n", + " \"i need a cold drink 'cause you're a hot mess\",\n", + " 'let the night do what it does best (hey)',\n", + " 'shake me up and baby turn me loose',\n", + " 'i just wanna roll around with you',\n", + " 'like a beer can in a truck bed',\n", + " 'i said, \"girl you got your shades on, looking like you\\'re famous',\n", + " 'we could turn this little one horse into vegas',\n", + " \"holdin' you is like i'm holdin' all the aces\",\n", + " 'i can\\'t lose\"',\n", + " 'she said, \"come on, boy, pour it on\"',\n", + " \"she didn't know that i was already gone\",\n", + " 'like a beer can in a truck bed',\n", + " 'on a slow ride in the sunset (hey)',\n", + " \"bouncin' down a small town street\",\n", + " \"let's pop the top right off this thing\",\n", + " \"i need a cold drink 'cause you're a hot mess\",\n", + " 'let the night do what it does best (hey)',\n", + " 'shake me up and baby turn me loose',\n", + " 'i just wanna roll around with you',\n", + " 'like a beer can in a truck bed',\n", + " 'yeah',\n", + " 'i said, \"whatever girl, you know i\\'m down',\n", + " 'i was thinkin\\' we could crash this town\"',\n", + " 'like a beer can in a truck bed',\n", + " 'on a slow ride in the sunset',\n", + " \"bouncin' down a small town street\",\n", + " \"let's pop the top right off this thing\",\n", + " \"i need a cold drink 'cause you're a hot mess\",\n", + " 'let the night do what it does best',\n", + " 'shake me up and baby turn me loose',\n", + " 'i just wanna roll around with you',\n", + " 'like a beer can in a truck bed (hey)',\n", + " 'i just wanna roll around with you',\n", + " 'like a beer can in a truck bed',\n", + " 'i just wanna roll around with you',\n", + " 'hey babe, i just wanna get down with you',\n", + " 'hey babe, i just wanna roll around with you',\n", + " 'hey babe, i just wanna get down with you',\n", + " 'hey babe, i just wanna roll around with you',\n", + " 'like a beer can in a truck bed',\n", + " \"and he'll tell her he's working late again\",\n", + " \"but she knows too well there's something going on\",\n", + " \"she's been neglected, and she needs a friend\",\n", + " 'so her trembling fingers dial the telephone',\n", + " 'lord, it hurts her doing this again',\n", + " \"he's the best friend that her husband ever knew\",\n", + " \"when she's lonely, he's more than just a friend\",\n", + " \"he's the one she longs to give her body to\",\n", + " 'daytime friends and nighttime lovers',\n", + " 'hoping no one else discovers',\n", + " 'where they go, what they do, in their secret hideaway',\n", + " 'daytime friends and nighttime lovers',\n", + " \"they don't want to hurt the others\",\n", + " 'so they love in the nighttime',\n", + " 'and shake hands in the light of day',\n", + " \"when it's over, there's no peace of mind\",\n", + " 'just a longing for the way things should have been',\n", + " 'and she wonders why some men never find',\n", + " 'that a woman needs a lover and a friend',\n", + " 'daytime friends and nighttime lovers',\n", + " 'hoping no one else discovers',\n", + " 'where they go, what they do, in their secret hideaway',\n", + " 'daytime friends and nighttime lovers',\n", + " \"they don't want to hurt the others\",\n", + " 'so they love in the nighttime',\n", + " 'and shake hands in the light of day',\n", + " 'daytime friends and nighttime lovers',\n", + " 'hoping no one else discovers',\n", + " 'where they go, what they do, in their secret hideaway',\n", + " 'daytime friends and nighttime lovers',\n", + " \"they don't want to hurt the others\",\n", + " 'so they love in the nighttime',\n", + " 'and shake hands in the light of day',\n", + " 'daytime friends and nighttime lovers',\n", + " 'hoping no one else discovers',\n", + " 'where they go, what they do, in their secret hideaway',\n", + " 'daytime friends and nighttime lovers',\n", + " \"they don't want to hurt the others\",\n", + " 'so they love in the nighttime',\n", + " 'and shake hands in the light of day',\n", + " \"i know i don't want her\",\n", + " \"i swear that's a fact\",\n", + " 'but the thought of somebody else',\n", + " 'rubbing her back just kills me',\n", + " 'oh, it kills me',\n", + " \"i know she don't love me\",\n", + " \"i know she ain't home\",\n", + " 'so why in the hell do i',\n", + " 'pick up this phone and call her',\n", + " 'why do i call her?',\n", + " \"i've dropped by her mama's\",\n", + " 'stoned out of my mind',\n", + " \"just to hear that it's over\",\n", + " 'from her one more time',\n", + " \"as if i didn't see that red chevy\",\n", + " 'not slowing down, loaded down',\n", + " 'and rolling down our road',\n", + " \"yeah, she's already left\",\n", + " \"so why can't i leave her alone?\",\n", + " \"i've wrote her letters\",\n", + " 'signed i was a fool',\n", + " 'she wrote me back saying',\n", + " 'go find a stool and drink one',\n", + " \"like you've always done\",\n", + " \"so that's what i did\",\n", + " \"'cause that's what i do\",\n", + " 'backsliding, hiding away',\n", + " 'from the truth until the tears run',\n", + " 'oh, here comes one',\n", + " \"i've dropped by her mama's\",\n", + " 'stoned out of my mind',\n", + " \"just to hear that it's over\",\n", + " 'from her one more time',\n", + " \"as if i didn't see that red chevy\",\n", + " 'not slowing down, loaded down',\n", + " 'and rolling down our road',\n", + " \"yeah, she's already left\",\n", + " \"so why can't i leave her alone?\",\n", + " \"i've dropped by her mama's\",\n", + " 'stoned out of my mind',\n", + " \"just to hear that it's over\",\n", + " 'from her one more time',\n", + " \"as if i didn't see that red chevy\",\n", + " \"not slowing down or turnin' 'round\",\n", + " \"or loaded down headin' out of town\",\n", + " 'and rolling down our road',\n", + " \"she's already left\",\n", + " \"so why can't i leave her alone?\",\n", + " \"i know i don't want her\",\n", + " \"i swear that's a fact\",\n", + " 'but the thought of somebody else',\n", + " \"rubbin' her back just kills me\",\n", + " 'i could go back to every laugh',\n", + " \"but i don't wanna go there anymore\",\n", + " 'and i know all the steps up to your door',\n", + " \"but i don't wanna go there anymore\",\n", + " 'talk to the wind, talk to the sky',\n", + " 'talk to the man with the reasons why',\n", + " 'and let me know what you find',\n", + " \"i'll leave my window open\",\n", + " \"'cause i'm too tired at night to call your name\",\n", + " \"just know i'm right here hoping\",\n", + " \"that you'll come in with the rain\",\n", + " 'i could stand up and sing you a song',\n", + " \"but i don't wanna have to go that far\",\n", + " \"and i, i've got you down, i know you by heart\",\n", + " \"and you don't even know where i start\",\n", + " 'talk to yourself, talk to the tears',\n", + " 'talk to the man who put you here',\n", + " \"and don't wait for the sky to clear\",\n", + " \"i'll leave my window open\",\n", + " \"'cause i'm too tired at night to call your name\",\n", + " \"just know i'm right here hoping\",\n", + " \"that you'll come in with the rain\",\n", + " \"i've watched you so long, screamed your name\",\n", + " \"i don't know what else i can say\",\n", + " \"but i'll leave my window open\",\n", + " \"'cause i'm too tired at night for all these games\",\n", + " \"just know i'm right here hoping\",\n", + " \"that you'll come in with the rain\",\n", + " 'i could go back to every laugh',\n", + " \"but i don't wanna go there anymore\",\n", + " \"well blue ain't the word for the way that i feel\",\n", + " \"there's a storm that's brewing in this heart of mine\",\n", + " \"this ain't no crazy dream but i know that it's real\",\n", + " \"that's why i'm so lonesome all the time\",\n", + " 'crazy arms that reach to hold somebody new',\n", + " \"while my aching heart keeps saying you're not mine\",\n", + " \"this is no crazy dream but i know that it's real\",\n", + " \"but now i'm so lonesome all the time\",\n", + " \"so please take the treasured dreams i've had for you and me\",\n", + " 'and take all the love i thought was mine',\n", + " \"'cause someday my troubled arms may hold somebody new\",\n", + " \"but now i'm so lonely all the time\",\n", + " 'crazy arms that reach to hold somebody new',\n", + " \"while my aching heart keeps saying you're not mine\",\n", + " \"my troubled mind knows soon to another you'll be wed\",\n", + " \"and that's why i'm so lonesome all the time\",\n", + " 'there is a place i know, way down in mexico',\n", + " 'high in the old sierra madre',\n", + " 'where many an outlaw band from across the rio grande',\n", + " 'have found a haven, a holdout, a hideaway',\n", + " 'but danger rides with those who stray upon this secret hideaway',\n", + " 'where death is sure to welcome anyone within the law',\n", + " \"but if a man must run, from any lawman's gun\",\n", + " \"he'll find compadres in the old sierra madres\",\n", + " \"deep in the dark of night, beside the campfire's light\",\n", + " 'they weave the tales of the lives of the bandits',\n", + " 'of jewels rare and old, of coaches filled with gold',\n", + " 'holdups pulled off like they planned it',\n", + " 'but danger rides with those who stray upon this secret hideaway',\n", + " 'where death is sure to welcome anyone within the law',\n", + " \"but if a man must run, from any lawman's gun\",\n", + " \"he'll find compadres in the old sierra madres\",\n", + " \"deep in the dark of night, beside the campfire's light\",\n", + " 'they weave the tales of the lives, of the bandits',\n", + " 'of jewels rare and old, of coaches filled with gold',\n", + " 'holdups pulled off just like they planned it',\n", + " 'but danger rides with those who stray upon their secret hideaway',\n", + " 'where death is sure to welcome anyone within the law',\n", + " \"but if a man must run from any lawman's gun\",\n", + " \"he'll find compadres in the old sierra madres\",\n", + " 'there is a place i know, way down in mexico',\n", + " 'high in the old sierra madres',\n", + " 'where many an outlaw band from across the rio grande',\n", + " 'have found a haven, a holdout, a hideaway',\n", + " 'but danger rides with those who stray upon their secret hideaway',\n", + " 'where death is sure to welcome anyone within the law',\n", + " \"but if a man must run from any lawman's gun\",\n", + " \"he'll find compadres in the old sierra madres\",\n", + " \"but if a man must run from any lawman's gun\",\n", + " \"he'll find compadres in the old sierra madres\",\n", + " 'many years ago in days of childhood i used to play until evening time would come',\n", + " 'then winding down an old familiar pathway i hear my mother call at setting sun',\n", + " \"come home, come home it's suppertime\",\n", + " 'the shadows lengthen fast',\n", + " \"come home, come home it's suppertime\",\n", + " \"we're going home at last\",\n", + " 'some of the fondest memories of my childhood are woven around suppertime. when mother used to call from the back steps of the old homeplace, \"come on home now son, it\\'s suppertime.\" my how i\\'d love to hear that once again. but you know time has woven for me a realization of a truth that\\'s even more thrilling. that soon we\\'ll be called together around the great supper table up there for the greatest suppertime of them all with our lord. i can almost hear the call now coming through the portals of heaven, \"come home son, it\\'s suppertime. come on home.\"',\n", + " \"come home, come home it's suppertime\",\n", + " 'the shadows lengthen fast',\n", + " \"come home, come home it's suppertime\",\n", + " \"we're going home at last\",\n", + " 'through the distant clouds i see my mother',\n", + " 'her face is shining bright, with tender love',\n", + " \"she's gone up in heaven, with her maker\",\n", + " 'and i can still hear her voice, from up above',\n", + " '(and she said)',\n", + " \"come home, come home it's suppertime\",\n", + " 'the shadows lengthen fast',\n", + " \"come home, come home it's suppertime\",\n", + " \"we're going home at last\",\n", + " 'we started out and life was perfect',\n", + " 'i never thought our love would change',\n", + " 'but years of ups and downs made a difference',\n", + " \"it's not the same as it was yesterday\",\n", + " \"i don't treat you like i used to\",\n", + " \"you don't look the same into my eyes\",\n", + " 'we thought the best would be behind us',\n", + " 'but the best keeps getting better all the time',\n", + " 'we learned how to love and how to make up',\n", + " 'and found what it takes to be enough',\n", + " 'like a 30-year-old wine hearts intertwined',\n", + " 'the best keeps getting better all the time',\n", + " 'i love you now more than ever',\n", + " 'and you appreciate me more today',\n", + " 'melted together, hearts and minds',\n", + " 'the best keeps getting better all the time',\n", + " 'we learned how to love and how to make up',\n", + " 'and found what it takes to be enough',\n", + " 'like a 30-year-old wine, hearts intertwined',\n", + " 'the best keeps getting better all the time',\n", + " 'like a 30-year-old wine, hearts intertwined',\n", + " 'the best keeps getting better all the time',\n", + " 'the best keeps getting better all the time',\n", + " '(candy kisses wrapped in paper)',\n", + " 'candy kisses wrapped in paper mean more to you than any of mine',\n", + " \"candy kisses wrapped in paper you'd rather have 'em any old time\",\n", + " \"you don't mean it when you whisper those sweet love words in my ear\",\n", + " 'candy kisses wrapped in paper mean more to you than mine do dear',\n", + " '(oh candy kisses wrapped in paper mean more to you than any of mine',\n", + " 'candy kisses wrapped in paper)',\n", + " \"once my heart was filled with gladness now there's sadness only tears\",\n", + " 'candy kisses wrapped in paper mean more to you than mine do dear',\n", + " 'mean more to you than mine do dear',\n", + " '(candy kisses)',\n", + " \"i'm again\",\n", + " \"goin' places that i've already been\",\n", + " 'what started and lasted so long',\n", + " 'ended in the end so wrong',\n", + " \"wakin' next to somebody new\",\n", + " \"holdin' on to mem'ries of you\",\n", + " \"filled with the lonliest feelin'\",\n", + " \"that's achin' to leave\",\n", + " 'some fine day',\n", + " 'some fine day',\n", + " \"i'm again\",\n", + " \"goin' places that i've already been\",\n", + " 'what started so long',\n", + " 'ended in the end so wrong',\n", + " \"wakin' to the rain comin' down\",\n", + " \"wishin' i were far from this town\",\n", + " \"filled with the loneliest feelin'\",\n", + " \"that's achin' to leave\",\n", + " 'some fine day',\n", + " 'some fine day',\n", + " 'some fine day',\n", + " 'some fine day',\n", + " \"think it's 'bout that time to go\",\n", + " 'oh, i just need to get away',\n", + " \"ain't no right or wrong my darlin'\",\n", + " 'out on that open highway',\n", + " 'been so much backwards, and forwards, and backwards with you',\n", + " \"you say that, i say that, she said it's true\",\n", + " \"i don't wanna think about the things we go through\",\n", + " \"i'd rather drive out and take in the view\",\n", + " 'just wanna cruise',\n", + " 'for the rest of the night',\n", + " 'under the moon',\n", + " \"nothin' else on my mind\",\n", + " \"and i got my top down drivin'\",\n", + " \"and i got my top down drivin'\",\n", + " \"and i got my top down drivin'\",\n", + " \"and i got my top down drivin'\",\n", + " \"ayy! and i got my top down drivin'\",\n", + " \"ain't nothin' personal\",\n", + " \"i ain't about to go astray\",\n", + " \"well i just need a minute darlin'\",\n", + " \"i'll be back before the day\",\n", + " 'been so much backwards, and forwards, and backwards with you',\n", + " \"you say that, i say that, she said it's true\",\n", + " \"i don't wanna think about the things we go through\",\n", + " \"i'd rather drive out and take in the view\",\n", + " 'just wanna cruise',\n", + " 'for the rest of the night',\n", + " 'under the moon',\n", + " \"nothin' else on my mind\",\n", + " \"and i got my top down drivin'\",\n", + " \"and i got my top down drivin'\",\n", + " \"and i got my top down drivin'\",\n", + " \"and i got my top down drivin'\",\n", + " \"ayy! and i got my top down drivin'\",\n", + " 'can you do me a favor?',\n", + " \"let's just talk about it later\",\n", + " \"i ain't gonna get in your way, no!\",\n", + " \"'cause for the rest of the day, oh!\",\n", + " \"i'ma have my top down drivin'\",\n", + " \"i'ma have my top down drivin'\",\n", + " \"i'ma have my top down drivin'\",\n", + " \"and i got my top down drivin'\",\n", + " \"i'ma have my top down drivin'\",\n", + " \"driving, driving, driving (i'ma have my top down drivin')\",\n", + " \"driving, driving, driving (i'ma have my top down drivin')\",\n", + " \"driving, driving, driving (and i got my top down drivin')\",\n", + " \"ayy! and i got my top down drivin'\",\n", + " \"a simple man, my father's son\",\n", + " \"i know this place, it's where i'm from\",\n", + " \"but i don't know these streets when i'm with you\",\n", + " 'something in this night',\n", + " 'changing everything i thought i knew',\n", + " \"i've never seen this part of me\",\n", + " \"haven't lost my mind\",\n", + " 'tell me that you see, that you see',\n", + " 'the moon leaned down to kiss your lips',\n", + " 'the starlight falling at you fingertips',\n", + " 'the morning sun just waiting to rise',\n", + " 'aching for the moment he can look in your eyes',\n", + " \"the shadow scatter 'cause it can't compete\",\n", + " 'with the heart of the night falling at your feet',\n", + " \"and i'm holding on in all this heat\",\n", + " \"with all my might, it's like the whole world\",\n", + " \"the whole world's in love with you tonight\",\n", + " 'way down here, deep down inside',\n", + " 'hope is born, where dreams collide',\n", + " \"i'm a lucky man, i have just one breath\",\n", + " 'and my heart to give',\n", + " 'but even though it scares me half to death',\n", + " \"no one's ever seen this part of me\",\n", + " \"from this moment on, i swear i'll always see\",\n", + " \"i'll always see\",\n", + " 'the moon leaned down to kiss your lips',\n", + " 'the starlight falling at you fingertips',\n", + " 'the morning sun just waiting to rise',\n", + " 'aching for the moment he can look in your eyes',\n", + " \"the shadow scatter 'cause it can't compete\",\n", + " 'with the heart of the night falling at your feet',\n", + " \"and i'm holding on in all this heat\",\n", + " \"with all my might, it's like the whole world\",\n", + " \"yeah, the whole world's in love with you tonight\",\n", + " 'yeah, the moon leaned down to kiss your lips',\n", + " 'and the starlight falling at you fingertips',\n", + " 'the morning sun just waiting to rise',\n", + " 'aching for the moment he can look in your eyes',\n", + " \"the shadow scatter 'cause it can't compete\",\n", + " 'with the heart of the night falling at your feet',\n", + " \"and i'm holding on in all this heat\",\n", + " \"with all my might, it's like the whole world\",\n", + " \"yeah, the whole world's in love with you tonight\",\n", + " 'cry one more time for you',\n", + " 'i really got it bad',\n", + " 'cry one more time for you',\n", + " \"i've lost the best i had\",\n", + " 'everything is gone wrong',\n", + " 'i need another beer',\n", + " \"she's got her mind on leavin'\",\n", + " \"that's what i'm doing here\",\n", + " \"ain't no sense to talk to you\",\n", + " \"i don't know what i'd say\",\n", + " \"ain't no sense to argue\",\n", + " \"so i just don't wanna stay\",\n", + " 'cry one more time for you',\n", + " 'i really got it bad',\n", + " 'cry one more time for you',\n", + " \"i've lost the best i had\",\n", + " 'so sad, to be a lonely night (whoa!)',\n", + " \"so sad, it didn't work out right\",\n", + " 'cry one more time for you',\n", + " 'i really got it bad',\n", + " 'cry one more time for you',\n", + " \"i've lost the best i had\",\n", + " 'i try to call the last night (yes, i do)',\n", + " \"i knew she wasn't here\",\n", + " \"i don't wanna go uptown\",\n", + " \"i know she'll be with him\",\n", + " 'cry one more time for you',\n", + " 'i really got it bad',\n", + " 'cry one more time for you',\n", + " \"i've lost the best i had\",\n", + " \"i've lost the best i had...\",\n", + " 'i try to crush it like the ashes of a cigarette',\n", + " \"i try to smother out the embers, but i just can't quit\",\n", + " \"if there's a way to put it out, i haven't found it yet\",\n", + " \"haven't found it yet\",\n", + " \"it's like a habit, it's a craving running through my veins\",\n", + " \"it's an obsession, an addiction that i can't explain\",\n", + " \"if i give up everything, there's one thing that'll still remain\",\n", + " \"it'll never change\",\n", + " \"'cause i can't stop\",\n", + " \"no, i can't stop\",\n", + " \"no, i can't stop loving you\",\n", + " 'i try to pour it out like whiskey running down the drain',\n", + " \"it's like trying to empty out a river in an endless rain\",\n", + " \"i've just accepted that resisting is a losing game\",\n", + " \"there's no other way\",\n", + " \"'cause i can't stop\",\n", + " \"no, i can't stop\",\n", + " \"no, i can't stop loving you\",\n", + " \"i can't stop loving you\",\n", + " \"i can't, i can't, i can't\",\n", + " 'baby, even if i wanted to',\n", + " \"i can't stop\",\n", + " \"no, i can't stop\",\n", + " \"no, i can't stop\",\n", + " \"i can't stop\",\n", + " \"no, i can't stop\",\n", + " \"no, i can't stop loving you\",\n", + " \"i can't stop\",\n", + " \"no, i can't stop\",\n", + " \"no, i can't stop\",\n", + " \"no, i can't stop\",\n", + " \"no, i can't stop\",\n", + " \"no, i can't stop loving you\",\n", + " 'every reason why every other guy ran away',\n", + " 'is every reason why you love me and why you stay',\n", + " \"yeah, i'm rough edges, fit together\",\n", + " \"you're the missing piece you know i need\",\n", + " \"we'll be dirt flyin' running together\",\n", + " 'like two untamed mustangs',\n", + " \"baby, you're wild as me\",\n", + " 'my once in a lifetime made up same kind of crazy',\n", + " 'i wanna every song sang, every song rhymes',\n", + " 'when you hold me tight it sets me free',\n", + " 'i think i, i found somebody wild as me',\n", + " 'all the times our two worlds run separate ways',\n", + " \"then the times they take us home, ain't it sweeter baby?\",\n", + " \"we're both hard to love, but with us it's easy\",\n", + " 'i live life in the fast lane',\n", + " \"baby, you're wild as me\",\n", + " 'my once in a lifetime made up same kind of crazy',\n", + " 'i wanna every song sang, every song rhymes',\n", + " 'when you hold me tight it sets me free',\n", + " 'i think i, i found somebody wild as me',\n", + " \"baby, you're wild\",\n", + " \"it's made for me\",\n", + " \"'cause baby you're wild, wild as me\",\n", + " \"baby, you're wild as me\",\n", + " 'my once in a lifetime made up same kind of crazy',\n", + " 'i wanna every song sang, every song rhymes',\n", + " 'when you hold me tight it sets me free',\n", + " \"i can't believe i found somebody wild as me\",\n", + " \"baby, you're wild as me\",\n", + " 'well the covey took wing',\n", + " 'shotguns a-singing',\n", + " 'a pointing dog down in the old logging road',\n", + " 'and danny got three and looked back a-grinning',\n", + " 'i fumbled around and i tried to reload',\n", + " 'the country was cold with the sun westward sinking',\n", + " \"it's good to be back in this place\",\n", + " 'with my hands around a belgian made browning',\n", + " 'my mind on the lines of her face',\n", + " \"well now danny's my buddy\",\n", + " 'we grew up like family',\n", + " 'hunted this timber before we could drive',\n", + " 'and the old english pointer, he once belonged to me',\n", + " \"but i give him up when i moved in '05\",\n", + " 'off with a girl',\n", + " 'off to the city',\n", + " 'off on a wing and a chance',\n", + " \"hell, i thought it'd play out just like some story\",\n", + " 'we fell in love at a rodeo dance',\n", + " 'she said, \"go on back to cherokee county',\n", + " 'won\\'t you crawl back with nothing but a razor and a comb\"',\n", + " 'says, \"babe, if you need me i\\'ll be where you found me',\n", + " 'go on to hell, honey, i\\'m headed home\"',\n", + " 'dan says, \"look at ol\\' jim',\n", + " 'a dozen decembers behind him no worse for the wear',\n", + " 'and your time spent in tulsa did not help your shooting',\n", + " 'and look at the gray in your hair',\n", + " 'how good does it feel?',\n", + " 'you belong in these hills',\n", + " \"it's best that you let it all end\",\n", + " \"if you'd married that girl, you'd have married her family\",\n", + " 'you dodged a bullet my friend\"',\n", + " ...]},\n", + " 'denmark': {'meta': {'train_data': ['(yeaaa)',\n", + " 'chip tha rip, ray cash',\n", + " 'smoke something',\n", + " \"i said i'm chillin'\",\n", + " \"sittin' on about a quarter million\",\n", + " 'all my niggas, all my guns, all my women',\n", + " \"i'm trippin', i'm sittin'\",\n", + " \"i'm workin' in the kitchen\",\n", + " '100 pounds to the ceiling',\n", + " 'bought an ak and a clip hold a million',\n", + " 'damn i mean a billion',\n", + " \"when you smell the loud in the place you know we in the buildin'\",\n", + " 'chip said fuck niggas',\n", + " 'and fuck how they feeling',\n", + " \"fuck keepin' it a hundred word to pimp\",\n", + " 'i keep it trillion',\n", + " 'drop that shit bitch',\n", + " 'hands high',\n", + " 'drop that shit bitch',\n", + " 'she got that ass',\n", + " 'damn, drop that shit bitch',\n", + " 'yeah, drop that, drop that shit bitch',\n", + " 'to the floor bitch',\n", + " 'yeah, my dap is worth 100 raps',\n", + " 'where them bad bitches at',\n", + " 'drop that ass and run it back',\n", + " 'she onstage goin ham like she hope i see her',\n", + " 'well they do that at',\n", + " 'shit, right over here',\n", + " 'haters gimme cold mugs like dentine',\n", + " 'but nevertheless the 40 cal up in these slim jeans',\n", + " 'you niggas hoes',\n", + " \"we don't owe you nada\",\n", + " 'you niggas mad i push out something cold for the summer',\n", + " \"she chose me that means she don't think she too cute\",\n", + " 'do what you want',\n", + " \"don't wait for what you want to do you\",\n", + " 'now its some ladies over here and some women over there',\n", + " \"there's some hoes in this house bad bitches everywhere\",\n", + " 'drop that shit bitch',\n", + " 'hands high',\n", + " 'drop that shit bitch',\n", + " 'she got that ass',\n", + " 'damn, drop that shit bitch',\n", + " 'yeah, drop that, drop that shit bitch',\n", + " 'to the floor bitch',\n", + " \"i perforate my verses straight 6 o'clock\",\n", + " 'reverberate the verbs, surround the noun, ground the pound the starting block',\n", + " 'martyrs on the rocks disengaged i threw them over',\n", + " \"cliffside, from hangman's bluff that's their brains on heavy boulders\",\n", + " 'ready the soldiers up, parascope, red october',\n", + " 'elves and ogres, and hell raisers to focus',\n", + " 'on pin head, a thin thread, is what holds your life together',\n", + " 'nas measure anatomy',\n", + " 'take pleasure in the taxidermy',\n", + " 'your raps whack poetic',\n", + " 'you rap whack pathetic',\n", + " 'leave you in a house of wax like a museum figure deadened',\n", + " 'strike a match, melt a candle',\n", + " 'blend the ammo with the cammo',\n", + " 'then go * with my famo, its like third rail to *',\n", + " 'prevail make you read braille',\n", + " 'and eat nails, and swallow glass',\n", + " \"remain anonymous like rass kass, life's a blast\",\n", + " 'at total recall, you speak in hallow holograms',\n", + " 'my tidal wave fire even drown the likes of auquaman',\n", + " 'we the last of our breed',\n", + " 'the actors with masters degrees',\n", + " 'im a raptor, attack than ill feed',\n", + " 'and after i capture the last of these thieves',\n", + " \"you’ll hear laughter, i'm back on my path let me breathe\",\n", + " 'dastardly deeds, inglorious bastards, notorious masters',\n", + " 'the last of our breed we are bastards indeed',\n", + " 'the last we will smash till you have to believe',\n", + " 'yeah, i love god, he has made me very lethal',\n", + " \"destroy evil, i don't really like people\",\n", + " \"never met an animal i didn't like, couldn't bite\",\n", + " 'smash a rapper into pieces when i hit a mic',\n", + " 'equip a baseball bat thats full of wooden spikes',\n", + " 'walking down the dim-lit street call me the hooded knight',\n", + " 'i drop a match and set a tank full of petroleum',\n", + " 'then moonwalk across lemoniun, its pandemonium',\n", + " 'battle plan is that of an apache resistance',\n", + " 'imagining ten dragons with flags in the distance',\n", + " 'skull and double axes',\n", + " 'troubled brother action',\n", + " 'ninjas doing double back flips, on that shit',\n", + " 'social distortion, black flags faction',\n", + " 'bad brained wasted youth have interaction',\n", + " 'punk-rock mind-state, hair dyed leopard print',\n", + " 'fresh like peppermint, darker than a second tint',\n", + " 'we the last of our breed',\n", + " 'the actors with masters degrees',\n", + " 'im a raptor, attack than ill feed',\n", + " 'and after i capture the last of these thieves',\n", + " \"you’ll hear laughter, i'm back on my path let me breathe\",\n", + " 'dastardly deeds, inglorious bastards, notorious masters',\n", + " 'the last of our breed we are bastards indeed',\n", + " 'the last we will smash till you have to believe',\n", + " \"yeah i'm the product of narcotics\",\n", + " 'exotic drugs and raw ebonics',\n", + " \"anti-social on grandma's antibiotics\",\n", + " 'smoking hydroponics',\n", + " 'bumping ladi-dadi while a 20 year old hottie on my dick doing pilates',\n", + " 'like piper, i stay rowdy, rowdy',\n", + " 'you in a diaper on a tricycle, trying to keep up with a mazerati',\n", + " 'every beat catching a body, see me dancing on a cop car',\n", + " 'strapped with c4, screaming out allah akbar',\n", + " \"ain't got a fear of death, i'm more afraid of livin slow\",\n", + " 'so i stay driven till my goal is met, or till i lose control',\n", + " \"nobody here could save me i'm completely out my mind\",\n", + " 'the only ones that doubt me are completely fucking blind',\n", + " 'we the last of our breed',\n", + " 'the actors with masters degrees',\n", + " 'im a raptor, attack than ill feed',\n", + " 'and after i capture the last of these thieves',\n", + " \"you’ll hear laughter, i'm back on my path let me breathe\",\n", + " 'dastardly deeds, inglorious bastards, notorious masters',\n", + " 'the last of our breed we are bastards indeed',\n", + " 'the last we will smash till you have to believe',\n", + " 'not knowing where to begin is not a feeling that’s rare',\n", + " 'every weekend it’s like a phase to me',\n", + " 'you talk during the week there wasn’t saying face-to-face to me',\n", + " 'it’s not like i care',\n", + " 'they still gassed',\n", + " 'i urge ’em to drive slow',\n", + " 'free smoke with something hot in the air',\n", + " 'we are a collective of thinkers',\n", + " \"at this point it's just waves\",\n", + " 'mccoy got me blackin’',\n", + " 'couch dreams on the way',\n", + " 'i feel like i need 20 chains',\n", + " \"i can't pardon my ways\",\n", + " \"i'm not sure if i'm changing or if i'm changing my ways\",\n", + " 'need conversations with moms',\n", + " \"'cause last year wasn't easy for me\",\n", + " 'she bring out my light',\n", + " 'she was there when the city saw it',\n", + " \"don't worry baby, we did that, yeah\",\n", + " 'rough patches through past years',\n", + " 'but came back, 17 of absence',\n", + " 'i lost track of what matters, but tell harlem all cash on',\n", + " \"black seven-teen in the casino with some tings, sippin' drinks\",\n", + " 'same colour, miss cherry red beamer',\n", + " 'sitting sideways',\n", + " 'star city amnesia',\n", + " 'nothing but roundabouts to traphouses',\n", + " \"we touched down so i might as well rap 'bout it\",\n", + " 'soon twenty-four, 20 a floor with the view',\n", + " \"bedroom for the visuals and it's just like we imagined\",\n", + " 'mix the magnum with the soda',\n", + " \"sippin' on jamaican, eating yard food\",\n", + " 'scernz rollin’ in, shouts out to court too',\n", + " \"flow of the century like i'm court two\",\n", + " 'jheeze',\n", + " 'loud already gone, i thought bought two, gs',\n", + " 'black on black, secret empire cover my top',\n", + " 'back to back, g wagons when we in new york',\n", + " 'benny told me wise up, tshh',\n", + " 'say nothing my dawg',\n", + " 'still off the henny, you no like that',\n", + " \"sexy nigga, shit i can't pree\",\n", + " 'where my eyes at?',\n", + " 'still bad bs on me daily',\n", + " 'what my life like',\n", + " 'watch them if they keep a dodgy gaze',\n", + " 'where your eyes at?',\n", + " 'shady niggas in our section wanna eavesdrop and so game',\n", + " \"it's a shame to see the admiration really come from fear\",\n", + " 'then they talk about it being my year',\n", + " \"i feel you're sad to say it\",\n", + " \"and you're sad to say it\",\n", + " 'you will feel it once you’ve seen it clear',\n", + " 'if your vibe is off i won’t keep you near',\n", + " 'shit',\n", + " \"they got me rappin' like semih here\",\n", + " 'to tell the truth he one of the few that really care, yeah',\n", + " 'still one-ten on my ten toes',\n", + " \"in the summer, should have did the timbs 'cause it’s still cold\",\n", + " 'arsenal on my trackies, huh',\n", + " \"i'm in some runners tho\",\n", + " 'heat like miami, they’re some different gunners',\n", + " 'look',\n", + " 'i used to run man city like mancini',\n", + " \"runnin' with the mask got me years like my man biggie\",\n", + " \"and i'm still in the field like grass really\",\n", + " 'where you can get killed for the cash quickly',\n", + " 'look',\n", + " \"you're going (to) heel like achilles\",\n", + " 'last receipt threw you like the 5-50-glass ceiling',\n", + " 'feel me',\n", + " \"wild pree, 'ow you mean? 'ow you mean?\",\n", + " 'came up living door-to-door with every member of my team',\n", + " 'the gas is so real, it’s a movie every evening',\n", + " 'told uzi, \"pray for me\" ’cause these days are really needed',\n", + " \"i've been slippin' on my deen\",\n", + " 'keep dealin’ to the fiends',\n", + " 'i’ve been drinking like a teen lately, yeah',\n", + " 'and all i see is money in dreams lately',\n", + " 'look',\n", + " \"bro, you gassed, you ain't yard\",\n", + " \"you and your dawgs lookin' like some girly queens lately\",\n", + " \"i'm tryna put plaques on my wall\",\n", + " 'went from racks on my drawers to stacks on my card',\n", + " \"i can tell you 'bout that swipe life\",\n", + " \"macbook in jail, i can tell you 'bout that skype life\",\n", + " \"i'm trynna do the track ysl\",\n", + " 'listening to timber while i roll another l',\n", + " 'inhale, exhale',\n", + " 'i see you move dodgy',\n", + " \"and i don't want no parts of that\",\n", + " \"i'm chillin' all nodgic\",\n", + " \"gettin' spins like laundromat\",\n", + " 'roll me up the super',\n", + " 'pour me up some future',\n", + " 'then i swerve up in the uber',\n", + " 'all you niggas doofus',\n", + " 'all you niggas goofy',\n", + " \"long clip that's a movie, huh\",\n", + " 'all she want is “do you”, huh',\n", + " 'shout out my producer, huh',\n", + " 'boy i’m on a wave',\n", + " 'i give a fuck ‘bout what they say',\n", + " 'and i tell it to their face',\n", + " 'i’m tryna spend a couple band on fuckery',\n", + " 'i’m tryna up my money, put my moms onto this luxury',\n", + " 'this some real shit, i can’t pree that',\n", + " 'can’t pretend, it’s for real',\n", + " \"don't tell p that, imma be there when you need that\",\n", + " \"not on some ''see you'' when i see you, best believe that\",\n", + " \"and if you don't believe me, just watch\",\n", + " \"i dead ops if it's war, redd foxx\",\n", + " 'i got your back like dreadlocks',\n", + " 'shorty say my rappin’ make the thugs come down all the way from up top',\n", + " 'to where they shootin’ downtown',\n", + " 'pour another one, i need the',\n", + " 'only thing i’m focused on is working hard and staying blessed',\n", + " 'all you niggas busters',\n", + " 'do not to be trusted',\n", + " \"i’m the youngest nigga rappin' so you better up the budget\",\n", + " 'b.o.c. mafia that home court advantage',\n", + " 'benched up at a weight game and still doing damage',\n", + " 'ray allen with the step back in the water',\n", + " 'five, i’m going for the three if i want to',\n", + " 'steady at the buzzer like they ordered',\n", + " 'shorty tried to escape, but i caught her like my last name',\n", + " 'i’m just getting started',\n", + " 'but i’m really past fame, niggas ain’t got no game',\n", + " 'all they do is argue ‘bout who get my jersey post-game',\n", + " 'jheeze',\n", + " \"i guess i'm loony, i guess i'm on one\",\n", + " \"guess i'm just a star of my movie\",\n", + " \"they say i'm the chosen, and so it goes\",\n", + " \"i'm supposed to live and grow old and die alone\",\n", + " 'talking to myself in the mirror',\n", + " 'take one to know one',\n", + " 'can we talk, just loony to loony?',\n", + " 'how strange the notion',\n", + " \"you don't really know no one\",\n", + " 'and what if i told you',\n", + " 'you no longer know me',\n", + " 'you better keep going and keep it rolling now',\n", + " \"ain't no thing, you don't really need me\",\n", + " 'the pressure is growing',\n", + " 'hard times they mold you',\n", + " 'into someone way colder',\n", + " 'let the world see how you win',\n", + " 'no matter how you seem to them',\n", + " \"fuck 'em\",\n", + " \"fuck 'em\",\n", + " \"fuck 'em\",\n", + " \"fuck 'em\",\n", + " \"and people think i'm mad (or on one)\",\n", + " \"then won't you tell them i'm mad, solar\",\n", + " 'all the things that bother me',\n", + " \"ain't no other way i can be\",\n", + " \"and people think i'm mad (or on one)\",\n", + " \"then won't you tell them i'm mad, solar\",\n", + " 'm.a.d. s.o.l.a.r',\n", + " \"and people think i'm mad (or on one)\",\n", + " \"then won't you tell them i'm mad, solar\",\n", + " 'all the things that bother me',\n", + " \"ain't no other way i can be\",\n", + " \"oh, and people think i'm mad (or on one)\",\n", + " \"then won't you tell them i'm mad, solar\",\n", + " 'm.a.d. s.o.l.a.r',\n", + " \"i guess i'm loony, i guess i'm on one\",\n", + " 'guess i got to finish my movie',\n", + " \"see my heart has been swollen, it's healing slow\",\n", + " \"hope i don't live to grow old, no one at home\",\n", + " 'staring at myself in the mirror, take one to know one',\n", + " \"want to find out 'bout the real me?\",\n", + " 'certain moments reveal you',\n", + " 'especially friends who were never good friends',\n", + " 'but want to act like they know me',\n", + " 'you better keep going and keep on strolling',\n", + " \"it's so crazy how you think you can play me\",\n", + " \"show them pussies you're growing\",\n", + " 'hard times, they mold you',\n", + " 'to the haters, i told you',\n", + " 'let the world see how you win',\n", + " 'no matter how you seem to them',\n", + " \"fuck 'em\",\n", + " \"fuck 'em\",\n", + " \"fuck 'em\",\n", + " \"fuck 'em\",\n", + " \"and people think i'm mad (or on one)\",\n", + " \"then won't you tell them i'm mad, solar\",\n", + " 'all the things that bother me',\n", + " \"ain't no other way i can be\",\n", + " \"and people think i'm mad (or on one)\",\n", + " \"then won't you tell them i'm mad, solar\",\n", + " 'm.a.d. s.o.l.a.r',\n", + " \"and people think i'm mad (or on one)\",\n", + " \"then won't you tell them i'm mad, solar\",\n", + " 'all the things that bother me',\n", + " \"ain't no other way i can be\",\n", + " \"and people think i'm mad (or on one)\",\n", + " \"then won't you tell them i'm mad, solar\",\n", + " 'm.a.d. s.o.l.a.r',\n", + " \"oh, she's got me screaming for more\",\n", + " 'damn, she can blow, get your knees on the floor',\n", + " \"and let's go, let's see how deep i can go\",\n", + " 'i wanted to blow my load, but i thought \"no\"',\n", + " 'i try',\n", + " 'yea i try',\n", + " 'i try, i try',\n", + " \"she says i only call her when i'm faded\",\n", + " \"when i'm faded\",\n", + " \"she says i only call her when i'm faded\",\n", + " 'i would call her right now',\n", + " \"but i'm faded\",\n", + " \"yea i'm faded and i try, yea i try\",\n", + " \"i try to call her when i'm sober\",\n", + " 'like, i should call her over',\n", + " \"but i only ever call her when i'm faded\",\n", + " \"cause i only think about her when i'm faded\",\n", + " 'yea i smoke, i drink',\n", + " \"i'm supposed to quit, i can't\",\n", + " 'cause when i sit and think i just draw a blank',\n", + " 'but when i, smoke the swisher get gone off the liquor',\n", + " \"that's when i start painting pictures and they so vivid\",\n", + " 'like you would swear that you there',\n", + " \"that's why i put it on the table and i leave it there\",\n", + " \"like old clothes in the closet that i don't never wear\",\n", + " \"ain't cause they cheap or nothing, and it ain't deep or nothing\",\n", + " \"it's like i work so hard, like i don't sleep or nothing\",\n", + " 'i swear i see it coming, i can see the people loving',\n", + " 'i can feel it in the air like the energy',\n", + " \"and no white pair of air's like they memories\",\n", + " 'that mean star bubbles',\n", + " 'niggas stealing, more trouble',\n", + " 'i do all my own stunts, no stunt double',\n", + " \"pump your brakes lil' nigga\",\n", + " \"you like punk metal, i'm on the next level\",\n", + " 'i try, i try',\n", + " \"and i don't know why\",\n", + " \"cause i ain't even got the time\",\n", + " 'but i try, i try, i try',\n", + " \"and i don't even lie\",\n", + " \"cause i ain't got the time, no, no\",\n", + " \"she says i only call her when i'm faded\",\n", + " \"when i'm faded\",\n", + " \"i told her right now how i'm faded\",\n", + " \"got to call her up cause i'm faded\",\n", + " \"yea i'm faded, i'm faded\",\n", + " 'and i try, i try, i try',\n", + " 'i try, i try',\n", + " \"but i'm hardly ever sober\",\n", + " 'still wanna call you over',\n", + " 'yea, i still wanna call you over',\n", + " \"she says i only call her when i'm faded\",\n", + " \"and i'm faded\",\n", + " \"i swear to god right now, i'm faded\",\n", + " 'i try',\n", + " 'beat switch',\n", + " 'so can we get faded?',\n", + " 'and forget for just a little bit baby',\n", + " 'can we get faded?',\n", + " 'and forget for just a little bit baby',\n", + " 'she says she miss me like the desert miss the rain',\n", + " 'or a soldier misses home when that bullet miss his brain',\n", + " 'or how a locked up nigga miss a benzo and a chain',\n", + " 'such a god damn shame, but fuck it',\n", + " \"y'all don't hear me tho\",\n", + " \"it's bourbon, it's champagne and have a toast\",\n", + " 'pull up for the good times and have a smoke',\n", + " 'spend time with the people that matter most',\n", + " \"cause people out here dying and it's not a joke\",\n", + " \"i'm a have wifey and some hoes at my funeral\",\n", + " 'everybody getting faded like the liquor flow',\n", + " 'but no tears, the boy with no fears',\n", + " \"the reason i'm still here to smile and say cheers\",\n", + " 'gold bottles, we is',\n", + " 'celebrating with yours truly, sincere',\n", + " 'sliding and riding, lets disappear',\n", + " 'so can we get faded?',\n", + " 'and forget for just a little bit baby',\n", + " 'can we get faded?',\n", + " 'and forget for just a little bit baby',\n", + " 'you and i',\n", + " 'should stop wasting time',\n", + " 'cause you the one i want',\n", + " 'look at her she could be ma super boo',\n", + " 'in a room crazy, sexy, cool',\n", + " 'intellectually sexy, her body is sick, her face is dope',\n", + " 'somethin like a eye candy photo',\n", + " \"hope to god the broad ain't a ho though\",\n", + " 'the way she walks is in slow-mo',\n", + " 'yep, ma mind got tee-vo',\n", + " 'every punk truck around',\n", + " 'plotting and scheming, wishing and dreaming',\n", + " 'jus for a little nano second to holla at her quick',\n", + " \"tryin' to holla for her name\",\n", + " 'yellow bone with a tan like damn',\n", + " 'smile at me, so i smile right back',\n", + " \"she move so effortless complimentin' her looks\",\n", + " \"i be commentin' up in her book\",\n", + " 'you can be my super boo-oo-oo',\n", + " 'you can be my super boo, i need you',\n", + " \"to come and chill wit me c'mon\",\n", + " 'one, two, check it',\n", + " 'mad views on her myspace shit',\n", + " 'just stoppin by, showing her love, while she sits',\n", + " 'and all her friends are hot, but not like her she the number one spot',\n", + " 'all i wanna do is really introduce scott',\n", + " 'let her know my dreams and struggles to the top',\n", + " 'show her, that it feels good in a drop top',\n", + " \"rollin down sunset niggas can't stop\",\n", + " 'i can tell that she really got her mind right',\n", + " \"let me make that move when the time's right\",\n", + " \"hope she don't mind a little limelight\",\n", + " \"you can't go wrong let's get right\",\n", + " 'and we gon let them other niggas stomp it out',\n", + " \"next step ye we gon' talk it out\",\n", + " \"i hop hotels 'til the next flight\",\n", + " 'i think about you cause your so right',\n", + " 'you can be my super boo-oo-oo',\n", + " 'you can be my super boo, i need you',\n", + " \"to come and chill wit me c'mon\",\n", + " 'one, two, check it',\n", + " '(lalalaalaaalaaa)',\n", + " 'i know you probably like a lil stand offish',\n", + " 'but just take my hand though',\n", + " 'and save my world baby',\n", + " 'come ride with me',\n", + " \"let me get it, okay i got it she's so hot move so erotic\",\n", + " 'take her to cancun fly supersonic',\n", + " 'grown and sexy love gin & tonic',\n", + " 'askin questions like where you from?',\n", + " \"i ain't gonna tell you you should just come\",\n", + " 'take that journey beyond the clouds',\n", + " \"let's leave reality truth be told\",\n", + " 'yeh baby girl this the code',\n", + " 'come be ma roadie backstage at shows',\n", + " 'i can tell that them other niggas did you cold',\n", + " 'but am a hot nigga with the heat for sure',\n", + " \"i ain't fittin like a scarf in the summer\",\n", + " 'am misemplyin and i need you in the summer',\n", + " 'layin on top me enjoying your company',\n", + " \"am runnin out of issue (can't understand) when i kiss you\",\n", + " 'you can be my super boo-oo-oo',\n", + " 'you can be my super boo, i need you',\n", + " \"to come and chill wit me c'mon\",\n", + " 'one, two, check it',\n", + " 'do you ever notice that in the bible',\n", + " 'whenever god had to punish someone',\n", + " 'make an example, or ever god needed killing, he sent an angel?',\n", + " 'do you ever wonder what a creature like that must be like?',\n", + " 'the whole existence with god, always being the one dipped in blood',\n", + " 'is it possible that god does not like you?',\n", + " 'he never wanted you',\n", + " 'in all probability he hates you!',\n", + " \"if we are god's unwanted children then so be it!\",\n", + " 'listen',\n", + " 'is it all as it seems',\n", + " 'so unresolved so unredeemed',\n", + " 'if i really, how will i know?',\n", + " \"i'm no martian\",\n", + " \"i'm no goblin\",\n", + " \"i'm no vampire\",\n", + " \"i'm no problem\",\n", + " \"i'm nothing more just a figment with a force\",\n", + " 'that recognize all my thoughts',\n", + " \"that realize i'm of awe\",\n", + " 'a long history',\n", + " 'historic files a mystery',\n", + " 'the truth shall be told',\n", + " 'the time is now',\n", + " 'they cover up cover-ups to cover us',\n", + " \"and there's a price on your soul of every fuckin' one of us\",\n", + " \"a all goin' war drugs, money religion\",\n", + " \"and the niggas in my hood don't want to hear it they fear it\",\n", + " 'a cold criminal, gat by the genital',\n", + " 'pussy by the centerfold, ravishing indigo',\n", + " 'appealing matter, nifty camper with a witty camp',\n", + " 'of niggas that’ll peal through niggas without any issue',\n", + " 'the green in my lungs the tab on my tongue',\n", + " 'unravel my gun, my mind is my gun',\n", + " 'in the land beyond living',\n", + " 'all things are possible',\n", + " \"it's insane to think this really all started from a molecule\",\n", + " \"now i'm fuckin' unstoppable\",\n", + " 'my past, it was hard to do',\n", + " \"now my future's remarkable (ha ha ha ha)\",\n", + " \"fuck fame nigga, can't you see the bigger picture?\",\n", + " 'sold your soul to the devil well at least you got three wishes',\n", + " 'young, witty, pompous, arrogant, malicious',\n", + " \"blowin' kisses to the devil as i formulate these vivid lyrics\",\n", + " 'screen motion picture shit',\n", + " \"while i'm standing idle, fuck a title\",\n", + " 'rather american psycho than american idol',\n", + " 'chop a clip, reload the clip, barrel hits',\n", + " 'like a vinyl, the universe is my shit',\n", + " 'knew it since i was a zygote',\n", + " \"this shit i'm spittin' got your head spinnin' like an exorcism\",\n", + " 'when i was young i fought authority',\n", + " 'and reject religion, learned to see from every angle',\n", + " 'never regret decisions at times i feel like fuck religion',\n", + " 'because religion is division',\n", + " \"ho, that's simple math, ho\",\n", + " \"go head and fuckin' add, ho\",\n", + " 'yes, jesus loves me',\n", + " 'yes, jesus loves me',\n", + " 'yes, jesus loves me',\n", + " 'for the bible tells me so',\n", + " 'me mommy love me, like she love her nappy head',\n", + " 'she sang me fables, when she used to wrap me dreads',\n", + " 'she said me look like me grandpappy, now he dead',\n", + " 'he never met me, but he loved me, yeah he did',\n", + " 'he was a king, before me ma became a queen',\n", + " 'they killed him dead, because he tried to stop the war',\n", + " 'me momma love me, like the song that she sings',\n", + " 'but i think she loves me just a little bit more',\n", + " 'little bit less, then little bit more',\n", + " \"hourglass, sand's timeless through my trough\",\n", + " 'let it wash me away',\n", + " \"dive into a fifth of the j, mo', sip it slow\",\n", + " 'stone cold nights, warm days',\n", + " \"days don't break, they fade away\",\n", + " 'faced my watch, then face a j',\n", + " 'faking it takes my pain away',\n", + " 'be a fatality, killed my salary',\n", + " 'dreams shattering, trunk rattling',\n", + " 'drug dabbling, dabble or dab',\n", + " 'bought a battery, energy, gpen',\n", + " 'g when we go see this salary',\n", + " \"set a time bomb, 'til i blow up\",\n", + " 'like the matrix, in the zion',\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my blades swing and chop (chop)',\n", + " 'them subwoofers knock (knock)',\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " 'yeah dat me, yeah dat right',\n", + " \"so throwed off the drank that i'm outta sight\",\n", + " \"pushin' buttons caddy corner crushin'\",\n", + " \"cluckin', bussas they claim they wanna fuck tonight\",\n", + " \"ridin' dirty, super tight\",\n", + " 'i put the pressure on the lesser when she on the lights',\n", + " 'dark skinned nigga with a playa voice',\n", + " \"have y'all thinkin' i'm barry white\",\n", + " \"pop up twice i ain't trippin' on nothin'\",\n", + " \"tires on rotation and the bass still buzzin'\",\n", + " \"old school whip with the a/c cuttin'\",\n", + " \"calibrate the navigation, bitch don't touch it\",\n", + " \"hit the flo', you bet i get the flo'\",\n", + " 'i got bands to spend, you got twat to show',\n", + " \"you can bop for gold, but i'm grain grippin'\",\n", + " \"trunk shakin' like a stripper pole came with it\",\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my blades swing and chop (chop)',\n", + " 'them subwoofers knock (knock)',\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " 'my car candy painted, my house sit on a hill',\n", + " 'i never was a square, i always worked the wheel',\n", + " \"always had them boppers, ridin' on some choppas\",\n", + " 'parking lot warfare, my trunk go blocka blocka',\n", + " 'they way i beat the bass, wassup? might catch a case',\n", + " 'broke another bank and put it in they face',\n", + " \"ever since i rolled up with the doors on transforma'\",\n", + " 'four done poured up, niggas had to hate',\n", + " \"wheels on chrome, i had to slow my four's up\",\n", + " \"cuz them potholes deep and i can't let them scrape\",\n", + " \"i let my tape knock, 'til my tape pop\",\n", + " 'tell them motherfuckers that i got that bass',\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my blades swing and chop (chop)',\n", + " 'them subwoofers knock (knock)',\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"i said of course i'mma show my grill, and show my ass\",\n", + " 'i came on this earth in 87, pussy nigga check my past',\n", + " 'been a real nigga ever since, ride around the a with my nigga named tay',\n", + " \"beatin' down them fuckin' blocks, from conley road to moreland a\",\n", + " \"nigga don't talk you ain't bout dat life\",\n", + " 'drop top chevy with the bow tie pipes',\n", + " 'let that chevy breathe on em',\n", + " 'when you pull up to that light',\n", + " 'hit the gas and watch that chevy pop an ollie',\n", + " 'half these young niggas on rims',\n", + " 'but my chevy sit on rallys',\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my trunk pussy pop (pop)',\n", + " 'them hoes down to bop (bop)',\n", + " 'my blades swing and chop (chop)',\n", + " 'them subwoofers knock (knock)',\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " \"show yo' grill ho\",\n", + " 'she take a shot of hennessy',\n", + " 'i take a shot of pimp c and slow up',\n", + " 'i do this shit for him and me',\n", + " \"i'm the next lone star to blow-up\",\n", + " 'picture being locked in a box',\n", + " \"selling beats 'cause you need dollars\",\n", + " 'they say i can make it to the league, mama',\n", + " '500 dollars all we need, mama',\n", + " \"then we gon' be on\",\n", + " 'tired of seeing the lights off',\n", + " \"pops heatin' up the stove\",\n", + " \"was close to stealing and killing, now just to get 'em on\",\n", + " 'couple drinks down of rosé',\n", + " \"i'm tipsy, y'all faces done look like an emoji\",\n", + " 'the rav4 turned into a rover',\n", + " \"'til it took flight and ended up on the shoulder\",\n", + " 'now our money a little longer',\n", + " \"lookin' back how we finnesin', we ain't know shit\",\n", + " 'they gave me three, got twenty five on the low',\n", + " 'who knew that lump sum would get me on?',\n", + " 'my fifteen seconds last a little longer, longer',\n", + " 'i can shit all day, diaper',\n", + " 'call that eat-all-day; itis',\n", + " 'will i ever fall off? i doubt it',\n", + " 'no, no, no, no',\n", + " \"all these diamonds shinin'\",\n", + " 'all this gold on me, all these foes on us',\n", + " 'how do i dodge these zombies?',\n", + " 'they want my soul from me',\n", + " \"know that i'm gone, but one thing:\",\n", + " 'they will never catch me',\n", + " 'falling off, falling off',\n", + " 'never catch me falling off',\n", + " 'falling off, never catch me',\n", + " 'falling off, falling off',\n", + " 'never catch me falling off, falling off',\n", + " '(oohh, ohh, oohh) right',\n", + " '(oohh, ohh, oohh) right',\n", + " '(oohh, ohh, oohh)',\n", + " 'yeah',\n", + " 'uh, uh, yeah',\n", + " 'say it louder, say it louder',\n", + " \"who's gonna love you like me, like me?\",\n", + " 'say it louder, say it louder',\n", + " \"who's gonna touch you like me, like me?\",\n", + " \"ooh, said you wanna be good, but you couldn't keep your composure\",\n", + " \"ooh, said you wanna be good, but you're begging me to come over\",\n", + " 'ooh, come over, ooh',\n", + " \"saying, who's gonna fuck you like me? yeah\",\n", + " \"i don't wanna hurt you, but you live for the pain\",\n", + " \"i'm not tryna say it, but it's what you became\",\n", + " \"you want me to fix you, but it's never enough\",\n", + " \"s'why you always call me, cause you're scared to be loved\",\n", + " \"but i'll always be there for you, i'll always be there for you\",\n", + " \"i'll always be there for you, girl, i have no shame (shame)\",\n", + " \"i'll always be there for you, i'll always be there for you\",\n", + " \"i'll always be there for you, girl, i have no shame (shame)\",\n", + " 'say it louder, say it louder',\n", + " \"who's gonna love you like me, like me? yeah\",\n", + " 'say it louder, say it louder',\n", + " \"who's gonna touch you like me, like me?\",\n", + " \"ooh, said it'd be the last time, all you needed was a little closure\",\n", + " \"ooh, said it'd be the last time, but you're begging me to come over\",\n", + " 'ooh, come over, ooh',\n", + " \"saying, who's gonna fuck you like me? hey\",\n", + " \"i don't wanna hurt you, but you live for the pain\",\n", + " \"i'm not tryna say it, but it's what you became\",\n", + " \"you want me to fix you, but it's never enough\",\n", + " \"s'why you always call me, cause you're scared to be loved\",\n", + " \"but i'll always be there for you, i'll always be there for you\",\n", + " \"i'll always be there for you, girl, i have no shame (shame)\",\n", + " \"i'll always be there for you, i'll always be there for you\",\n", + " \"i'll always be there for you, girl, i have no shame (shame)\",\n", + " \"who's gonna fuck you like— (hey! woo-ooh)\",\n", + " \"i don't wanna hurt you, but you live for the pain\",\n", + " \"i'm not tryna say it, but it's what you became (no)\",\n", + " \"you want me to fix you, but it's never enough (never enough)\",\n", + " \"s'why you always call me, cause you're scared to be loved (scared to be loved)\",\n", + " \"but i'll always be there for you, i'll always be there for you\",\n", + " \"i'll always be there for you (i'll always be there for you)\",\n", + " 'girl, i have no shame (shame)',\n", + " \"i'll always be there for you, i'll always be there for you\",\n", + " \"i'll always be there for you, girl, i have no shame (girl, i have no, shame)\",\n", + " 'no shame',\n", + " 'verse 1 (ricky hil)',\n", + " 'by the time i woke up, she was already gone',\n", + " \"how can you love me, if i'm alone\",\n", + " 'here i go on a road i never been on',\n", + " \"and i'm leaving you for everything you did wrong\",\n", + " \"i don't wanna go back to that same place\",\n", + " 'replay memories that i erased',\n", + " \"it's too bad, i'm irate\",\n", + " \"i've been getting real high at a high rate\",\n", + " 'my mom said she coming this friday',\n", + " \"until then im'a fly away\",\n", + " \"i don't want her to see me like i am now\",\n", + " \"this is nostra, this is devil's playground\",\n", + " 'pop a pill, play around take her down',\n", + " 'until shes making sounds',\n", + " 'i usually stay around',\n", + " 'a couple pounds and some lean',\n", + " 'a couple nightmares and some dreams',\n", + " \"it ain't what it seems\",\n", + " '(chorus)',\n", + " \"i know, you can't understand me\",\n", + " \"and i don't really care\",\n", + " \"if you can't stand me\",\n", + " 'two grams in my l, a bitch in my bed',\n", + " \"i'll prolly go to hell, won't be with you instead\",\n", + " 'for my ex if she wishing me well',\n", + " 'you can listen and tell',\n", + " 'verse 2 (boo bonic)',\n", + " \"aye i can't help it that sometime i get a chick\",\n", + " 'but like her friend, better',\n", + " \"how i'm doing, i've been better\",\n", + " 'enough said, thin letter',\n", + " \"can't help who you fuck with\",\n", + " \"can't choose who you stuck with\",\n", + " 'like huh who she come from',\n", + " 'wonder who i end up with',\n", + " \"my homies think it's fly yeah\",\n", + " 'me too but it jam though',\n", + " 'always get a little tricky',\n", + " 'when you fuck the fam though',\n", + " \"oh, that's fucked up\",\n", + " 'i pray no karma',\n", + " 'incase im draped in armor',\n", + " 'plus both are nice, fuck on the other hand though',\n", + " 'pop that, got ammo',\n", + " \"she a soldier, i'm in camo\",\n", + " 'a range of bad bitches, but they boxed in like',\n", + " \"land rov-er, did it occur, i'm that nigga\",\n", + " 'fuck with her, keep shit 1, zero zero per',\n", + " 'add that cent, bitch is you bent, huh',\n", + " '(chorus)',\n", + " \"i know, you can't understand me\",\n", + " \"and i don't really care\",\n", + " \"if you can't stand me\",\n", + " 'two grams in my l, a bitch in my bed',\n", + " \"prolly go to hell, won't be with you instead\",\n", + " 'from my ex if she wishing me well',\n", + " 'you can listen and tell',\n", + " 'verse 3 (ricky hil)',\n", + " \"it's dark out by the time i step out\",\n", + " \"i'm really losing it now\",\n", + " 'pain pills sleeping pills and tussin',\n", + " \"i've been abusing it now\",\n", + " \"and you don't know, how i've died\",\n", + " 'a million times, by your side',\n", + " 'and if we try, and if we lose',\n", + " 'how will i fight, past the bruise',\n", + " \"baby i know, that you're loose\",\n", + " 'baby i know what to do with you',\n", + " \"you don't even know what to do with me\",\n", + " 'every pretty broad had their way with me',\n", + " \"baby i'm thin, running thin here i go again\",\n", + " 'if they even really know',\n", + " \"they'd let a mutha fucka in\",\n", + " '(chorus)',\n", + " \"i know, you can't understand me\",\n", + " \"and i don't really care\",\n", + " \"if you can't stand me\",\n", + " 'two grams in my l, a bitch in my bed',\n", + " \"prolly go to hell, won't be with you instead\",\n", + " 'from my ex if she wishing me well',\n", + " 'you can listen and tell',\n", + " 'uhh baby (x2)',\n", + " 'blast off [uhh baby)',\n", + " \"it's the motherfucking time now\",\n", + " 'dug a deep ditch when i quit school, but this rapping shit helping me climb out',\n", + " 'me and chancellor, fuck you tahm bout',\n", + " \"village shittin' on niggas in time out\",\n", + " \"when im feeling this all that i rhyme 'bout\",\n", + " \"me and kembe grindin' in the grind house\",\n", + " 'asking where i wanna go, who i wanna be',\n", + " 'my life is nothing more than ripping all these beats',\n", + " \"and that's the way i want it im trippin'\",\n", + " \"of the weed and that im sippin' on at least you\",\n", + " 'tipping, fuck you mean',\n", + " 'gotta get mine, gotta fucking win',\n", + " 'gotta bring the village, i gotta represent it',\n", + " 'i gotta keep on pushing, gotta keep on working',\n", + " \"i can't stop yelling fuck though, i gotta keep on shittin'\",\n", + " 'all we wanna do is get money',\n", + " 'seem like errbody want some shit from me',\n", + " 'like put me on with this and hook me on with that',\n", + " 'find your way up off my dick homie',\n", + " 'remember i used to keep the sacks with me',\n", + " 'in the basement, watching that rap city',\n", + " 'niggas used to say i rap shitty, funny',\n", + " 'now them niggas want a track with me',\n", + " 'if my manager insults me again',\n", + " 'i will be assaulting him',\n", + " 'after i fuck the manager up',\n", + " \"then i'm going to shorten the register up\",\n", + " \"let's go back, back to the gap\",\n", + " \"look at my check, wasn't no scratch\",\n", + " \"so if i stole, wasn't my fault\",\n", + " 'yea i stole, never got caught',\n", + " '(x2)',\n", + " \"yea, they're going to do it on purpose man\",\n", + " \"it's going to be haters lurking\",\n", + " \"you know what i'm talking about?\",\n", + " 'wishing to see you fail',\n", + " 'but at the end of the day if you got god on your side',\n", + " 'why the fuck would you believe in hell',\n", + " \"you know what i'm talking about?\",\n", + " \"hate ain't shit but the devil\",\n", + " 'tell them motherfuckers to get up',\n", + " \"and get up on a whole 'nother motherfucking level\",\n", + " 'ism',\n", + " 'nasa,',\n", + " 'whole world wants to know what you crashed for,',\n", + " 'jag off, what you jag for',\n", + " 'im just doing what you assholes, had asked for',\n", + " 'when we going to home?',\n", + " 'my eyes hurt, my throat hurt, my soul hurt',\n", + " 'my whole church know my niggas on dirt',\n", + " \"lil' college dropout, blame it on ye'\",\n", + " \"lil' jimmy done grown up, he's slangin' them tapes\",\n", + " 'southside, out west, south by southwest',\n", + " \"doubt my prowess, i guess 'bout now i'm fresh\",\n", + " 'goodness gracious,',\n", + " 'visionary chasing, chance with a space and the',\n", + " 'then a pronoun, and the car spacious,',\n", + " 'and a spaceship for the spaceship like igh!',\n", + " '(2x)',\n", + " 'yea, always keep your ism at a magnificent level',\n", + " \"that it's true, know what i'm talking about?\",\n", + " \"i come to find out there's three type of people in the world\",\n", + " \"there's those that ask what happened\",\n", + " \"there's those that saw it happen\",\n", + " \"and then there's those that made it happen\",\n", + " 'and which one are you?',\n", + " 'cathedral.ism',\n", + " 'our father in heaven, hallowed be your name',\n", + " 'your kingdom come, you will be done',\n", + " 'on earth as it is in heaven',\n", + " \"got my chariot waitin'\",\n", + " \"you know i'm stayin' alive\",\n", + " 'be it heaven or hades',\n", + " 'you know i gotta survive',\n", + " 'swing low, swing low',\n", + " 'swing low, swing low',\n", + " 'keep my feet above everything',\n", + " \"yea, you know that i'm crazy\",\n", + " 'got my angels in full swing',\n", + " \"yea, nothin' can phase me\",\n", + " 'swing low, swing low',\n", + " 'swing low, swing low',\n", + " 'and i-oooooh-yea',\n", + " 'and i-oooooh-yea',\n", + " 'all these niggas rappers',\n", + " \"playin' rappers, greatest actors\",\n", + " 'me, i kept it humble',\n", + " 'me, i did it, this my greatest chapter',\n", + " 'written here where bodies lay',\n", + " 'mumified and on display',\n", + " 'zulu with the shackles',\n", + " \"freein' weapons be the up and keep\",\n", + " \"you gon' make me catch a body like them fuckin' rappers do\",\n", + " \"or you gon' make me have to make a record about fuckin' you\",\n", + " \"you gon' make me have to have these gold teeth and tattoos\",\n", + " \"you gon' make me have to crash mercedes, so i'm beggin' you\",\n", + " \"shut the ballin' late in dublin, purple fluid in my cup and\",\n", + " \"broken dreams and wet dreams, there's alcohol inside my gut\",\n", + " 'all you say is, \"fuck me better\"',\n", + " 'chicken grease up on my sweater',\n", + " \"fast food and bad mood's equivalent of hardly better\",\n", + " \"yea, i keep my 'fro intact\",\n", + " \"camel causin' heart attacks, bitches on my fuckin' lap\",\n", + " 'toe tags and handbags, the smell make my balls sag',\n", + " \"portraits of my mama's face, poppa knows i'm sayin' grace\",\n", + " 'this here be my only take',\n", + " \"got my chariot waitin'\",\n", + " \"you know i'm stayin' alive\",\n", + " 'be it heaven or hades',\n", + " 'you know i gotta survive',\n", + " 'swing low, swing low',\n", + " 'swing low, swing low',\n", + " 'keep my feet above everything',\n", + " \"yea, you know that i'm crazy\",\n", + " 'got my angels in full swing',\n", + " \"yea, nothin' can phase me\",\n", + " 'swing low, swing low',\n", + " 'swing low, swing low',\n", + " 'and i-oooooh-yea',\n", + " 'and i-oooooh-yea',\n", + " '93 my born date',\n", + " \"it's king\",\n", + " 'his penmanship will resonate and legacy deteriorate',\n", + " 'in such relay, yea',\n", + " \"don't stimulate, yea\",\n", + " 'just regulate, yea',\n", + " 'try to educate, yea',\n", + " 'will imitate, yea, yea, yea',\n", + " 'two big bricks for the low, you snake',\n", + " \"our dreams they came crashin' in\",\n", + " 'i was always born to win',\n", + " 'crack heads in dublin city',\n", + " 'love me, keep me covenant',\n", + " \"prayin' to my lover-hoe\",\n", + " \"she hold me down, i'm celibate\",\n", + " 'hallelujah, hallelujah, hallelujah',\n", + " 'now i\\'m prayin\\', \"hallelujah,\" that i\\'m not the shooter',\n", + " \"crashin' up, that record spinnin'\",\n", + " \"way before this rap been winnin'\",\n", + " \"y'all was steady pluckin' chickens\",\n", + " \"trophies in my mama's kitchen\",\n", + " 'champagne and lovely women fortify my old soul',\n", + " \"cause it's doin' numbers that i multiplied, i don't know\",\n", + " \"every single record i be cryin' at my old hoes\",\n", + " \"rejjie-this and rejjie-that, you fuckin' bitch, i hate y'all\",\n", + " \"got my chariot waitin'\",\n", + " \"you know i'm stayin' alive\",\n", + " 'be it heaven or hades',\n", + " 'you know i gotta survive',\n", + " 'swing low, swing low',\n", + " 'swing low, swing low',\n", + " 'keep my feet above everything',\n", + " \"yea, you know that i'm crazy\",\n", + " 'got my angels in full swing',\n", + " \"yea, nothin' can phase me\",\n", + " 'swing low, swing low',\n", + " 'swing low, swing low',\n", + " 'and i-oooooh-yea',\n", + " 'and i-oooooh-yea',\n", + " \"it won't be in vain\",\n", + " 'to swallow all your pain',\n", + " 'and learn to love what burns',\n", + " 'and gather courage to return to',\n", + " 'faces in the crowd',\n", + " 'faces in the crowd will smile again',\n", + " 'and the devil may cry',\n", + " 'the devil may cry at the end of the night',\n", + " 'faces in the crowd',\n", + " 'faces in the crowd will smile again',\n", + " 'and the devil may cry',\n", + " 'the devil may cry at the end of the night',\n", + " 'the light will shine through the rain',\n", + " 'and heaven will hear them call your name',\n", + " 'and home will feel like home again',\n", + " 'corruption will fill your brain',\n", + " 'faces in the crowd',\n", + " 'faces in the crowd will smile again',\n", + " 'and the devil may cry',\n", + " 'the devil may cry at the end of the night',\n", + " 'faces in the crowd',\n", + " ...]},\n", + " 'data': [\"diamond dust oooo it's so cold\",\n", + " \"she don't feel her face, and he don't feel his nose\",\n", + " \"d-d-d-diamond dust it'll leave you cold\",\n", + " 'where yo body heat? ooo now his feet is swoll',\n", + " 'd-d-d-diamond dust, living in this cold world',\n", + " \"fuckin with that china white, ooo that's his old girl\",\n", + " 'lookin for that new bitch, to make his toes curl',\n", + " 'dope bitch, fucking up his whole world!',\n", + " \"i'm so high as fucking hell, that i can kiss the sky\",\n", + " 'the devil tryna grip me, i can hear the angels cry',\n", + " 'that\\'s my momma and my auntie screaming \"you just a bunch of lies\"',\n", + " 'and my girl just caught me stealing, i just bought her the new iphone',\n", + " 'drugs are my new friends and they just getting tall',\n", + " 'my boss just caught me beaming, so you know that i got fired',\n", + " 'and my clothes is getting old and my hair used to be wavy',\n", + " 'shit, this the life of crack, when you growing up in the 80’s',\n", + " 'and i’ve been smoking, lord please help',\n", + " 'cause i’m going out of my mind',\n", + " 'i can hear my heart beat, think i’m running out some time',\n", + " 'where do i go from here, do i lay here and just die?',\n", + " 'i can see pearly gates, matter fact i’ve just changed my mind',\n", + " 'i don’t wanna go, go, think i’m going out of my mind',\n", + " 'i can hear my heart beat, think i’m running out some time',\n", + " 'where do i go from here, do i lay here and just die?',\n", + " 'i can see pearly gates, matter fact i’ve just changed my mind',\n", + " 'hi my name is becky, and i used to wanna be famous',\n", + " 'i sniffed away my brains, and the itches make me insane, oh',\n", + " 'and i used to hang with dana, used to party with the lakers',\n", + " 'used to travel with the indiana pacers',\n", + " \"i used to wanna cheer but they didn't wanna take us\",\n", + " \"cause now i'm faded, now my whole world is jaded\",\n", + " 'damn i thought i made it, living out my dreams',\n", + " 'but this whole time i was faking',\n", + " 'i was faking',\n", + " 'and this is what that diamond does',\n", + " 'and this is from that diamond dust',\n", + " 'and this is from that diamond dust',\n", + " 'and this is what that diamond does',\n", + " 'east west, over the ocean',\n", + " 'perpetual motion, traveling around',\n", + " 'no rest singing and playing',\n", + " 'night out and day in doing the rounds',\n", + " 'what a great life this must seem',\n", + " 'swelled joints, every thing classy',\n", + " 'nothing is tacky, only the best',\n", + " 'lush girls, older and dying',\n", + " \"sighing and crying, 'this is success'\",\n", + " 'what a great life this must seem',\n", + " 'but when i hear your voice singing out',\n", + " 'the bells of home are ringing out',\n", + " 'and i feel all alone',\n", + " '(and i think of my home)',\n", + " 'cold times a wind through the houses',\n", + " 'the bleakness arouses a longing to leave',\n", + " 'time flew, i wanted to see you',\n", + " 'somehow i could not do because of success',\n", + " 'what a strange life this can be',\n", + " 'but when i hear your voice singing out',\n", + " 'the bells of home are ringing out',\n", + " 'and i feel all alone',\n", + " '(and i think of my home)',\n", + " 'verse 1',\n", + " 'she comes by herself, brings us our gifts',\n", + " \"it's hard to tell, she leaves so swift\",\n", + " \"she don't love you, she don't love me\",\n", + " 'whoever she loves, that man must be free',\n", + " \"i don't know, maybe you do\",\n", + " 'what she be thinking, when she looks at you',\n", + " 'she sits on the floor, looks at the movie',\n", + " 'she gets high too, this girl is groovy',\n", + " \"i don't wanna, make you run\",\n", + " 'from all of us, we just have fun',\n", + " \"and we touch ya, but you don't let us fuck ya\",\n", + " \"she has good intentions, it's obvious to see\",\n", + " \"but who is this girl, why can't we see\",\n", + " 'what she would do, behind closed doors',\n", + " 'with you or with me',\n", + " \"why can't we see!\",\n", + " 'hook',\n", + " 'sarah, you like to keep me wondering',\n", + " 'sarah, you know you keep us wondering,',\n", + " 'verse 2',\n", + " \"she's sexy as she sounds\",\n", + " 'with her pretty little mouth',\n", + " 'and she likes to help around',\n", + " 'with little things in the house',\n", + " 'i wanna do things to her mouth',\n", + " \"she swear that ain't what she bout\",\n", + " 'i start to doubt, i start to figure her out',\n", + " 'sometimes i get to see your sister',\n", + " \"and i touched her, but i...i didn't get to fuck her, (or kiss her)\",\n", + " \"don't you know that we talk about you\",\n", + " 'me and my brothers want a...a piece of you',\n", + " 'whoa, pretty brown hair, how long do you plan on staying here',\n", + " \"she brought us drinks and food, she ain't never rude\",\n", + " 'can we share this woman, it would be wrong to keep her',\n", + " \"tell me why she wouldn't, can't she see that we need her\",\n", + " 'hook',\n", + " 'sarah, you like to keep me wondering',\n", + " 'sarah, you know you keep us wondering',\n", + " 'shoutout to fam-lay',\n", + " 'ugh',\n", + " 'when you think of boss niggas think of me',\n", + " \"cause if there's a stressin ain't no question at his side (spitta)\",\n", + " 'altough i conceal my identity',\n", + " 'beneath the louie v. scarf, niggas only see my eyes',\n", + " 'they know that nigga stuntin',\n", + " 'he be gettin money',\n", + " 'they know that nigga ballin',\n", + " 'the hoes he all fuckin',\n", + " 'they know that nigga famous',\n", + " 'they know that nigga blingin',\n", + " 'and they know the niggas i be with is too dangerous (fly society)',\n", + " 'ughhhh',\n", + " 'nigga skip all the bull shit',\n", + " \"red and black jordan number 1's, i'm on my bulls shit\",\n", + " 'hustle like grocery carts, you push it',\n", + " \"nigga spend good money on it if it's good shit\",\n", + " \"i'm on the set with young roddy on this hood shit\",\n", + " \"chillin like a villain, hope the popo don't ruin it\",\n", + " 'chicks dig what i spit, tell me to keep doin it',\n", + " 'chicks whipped by the dick, want me to keep doin it',\n", + " \"can't get what i get, i cop kicks numerous\",\n", + " 'limited editions, spitta shop for exclusiveness',\n", + " 'fuck fuckin with fuck boys and they fuckin foolishness',\n", + " 'got ya homies watchin ya back like a big booty bitch',\n", + " \"cause ya can't maneuver the mat without losin it\",\n", + " 'jack boys screamin on ya, makin ya move ya shit',\n", + " \"i might see two, but they don't reach in my cooler slick\",\n", + " 'try to catch a cold, ya catch an uzi clip',\n", + " 'yeaah!',\n", + " 'when you think of boss niggas think of me',\n", + " \"cause if there's a stressin ain't no question at his side (spitta)\",\n", + " 'altough i conceal my identity',\n", + " 'beneath the louie v. scarf, niggas only see my eyes',\n", + " 'they know that nigga stuntin',\n", + " 'he be gettin money',\n", + " 'they know that nigga ballin',\n", + " 'the hoes he off fuckin',\n", + " 'they know that nigga famous',\n", + " 'they know that nigga blingin',\n", + " 'and they know the niggas i be with is too dangerous',\n", + " 'ughhhh',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " 'spitter, spitta',\n", + " 'the band on my watch is ceramic',\n", + " 'bezzle got the same rocks that dropped the titanic',\n", + " 'people talk about him, word of mouth is gigantic',\n", + " 'rappers gettin worried, they just startin to panic',\n", + " \"hope ya didn't blow ya advance, you better manage\",\n", + " \"the few cents you got left, cause that's ya last chips\",\n", + " 'hot spitta no longer next, i am the present',\n", + " \"ya girl ask santa for me, cause i'm her present\",\n", + " 'telescope on the balcony, watching the planets',\n", + " \"telephone ringin, i'm too high to answer it\",\n", + " \"tell my homie bring me a pack of them ziz zags'\",\n", + " 'gonna be a high time like the fuckin magazine',\n", + " \"if ya song wack, i'll heal the cut, i'm bandaged\",\n", + " 'cluckers say one time, and the dope boys vanished',\n", + " \"like the joint i'm smokin right now, after the last hit\",\n", + " \"i'm toasted like a quiznos sandwich\",\n", + " 'spitta',\n", + " 'when you think of boss niggas think of me',\n", + " \"cause if there's a stressin ain't no question at his side (spitta)\",\n", + " 'altough i conceal my identity',\n", + " 'beneath the louie v. scarf, niggas only see my eyes',\n", + " 'they know that nigga stuntin',\n", + " 'he be gettin money',\n", + " 'they know that nigga ballin',\n", + " 'the hoes he off fuckin',\n", + " 'they know that nigga famous',\n", + " 'they know that nigga blingin',\n", + " 'and they know the niggas i be with is too dangerous',\n", + " 'ughhhh',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " 'there go that airplane... schooosh...',\n", + " '(kids voice: yooo, yoo, yoo)',\n", + " '(x4)',\n", + " 'i tell a little homie, this is life',\n", + " 'i tell these cute bitches, get right',\n", + " 'light a blunt for everybody, get high',\n", + " 'everything is gonna be alright',\n", + " \"i'm lyin' on a landslide\",\n", + " 'with a bag of california to smoke',\n", + " 'an ounce of shrooms for nature walks -',\n", + " 'and hide and toss invited some of my folks',\n", + " 'the ones that was here before the fame',\n", + " 'and blame the world for bringing us so close',\n", + " \"family's, build family trees, grow apple-trees\",\n", + " \"and that's what matters the most\",\n", + " '(west side)',\n", + " \"my stompin' ground, i'm stompin' round in my black vans\",\n", + " 'mellowhype on my jersey, tattoos on my black hands',\n", + " \"ridin' up in that chevrolet, smoke weed, everyday\",\n", + " 'rest in peace, to that nigga nate',\n", + " \"you fuck niggas, you can't relate\",\n", + " 'all my niggas up in this bitch',\n", + " \"reppin' golfwang, you ain't even know it\",\n", + " \"we smokin' on that bama-weed, you ain't even grow it\",\n", + " 'bitch im on your mind, tell me how it feel',\n", + " 'bitch im on your mind, tell me how it feel',\n", + " '(verse 1 repeated)',\n", + " 'i tell a little homie, this is life',\n", + " 'i tell these cute bitches, get right',\n", + " 'light a blunt for everybody, get high',\n", + " 'everything is gonna be alright',\n", + " 'king chip up in this ho',\n", + " 'fresh up out the liquor store',\n", + " \"swagging, if you didn't know\",\n", + " 'yeah, i bet them bitches know',\n", + " 'know a nigga straight up out the hood on wikipedia',\n", + " 'king chip you fucking looney all up in the media',\n", + " 'straight up out the ghetto with the knowledge of a oracle',\n", + " \"most these rap niggers is some ho's, how the story go\",\n", + " \"up until age 19, i was very po'\",\n", + " \"started selling raps moved right up out the ghetto fo'\",\n", + " \"st. clair ave, that's where you get your head bust\",\n", + " 'seen a lot of shit, when i was young i never said much',\n", + " 'only if i knew you, would i be all on some cool shit',\n", + " \"seen a lot of my nigga's dead on the pool pit\",\n", + " 'i could get my hands on the blam in a heartbeat',\n", + " 'only when you had no fear of death, do you start beef',\n", + " \"i'd seen some nigga's, getting hunted like some fucking deer\",\n", + " \"wonder why i have no heart, that's all i known for all my years\",\n", + " \"nigga's know, make it out my hood on some rap shit\",\n", + " 'therefore, i am legend living fantastic',\n", + " 'if you roll a nice one, motherfucker pass it',\n", + " 'light my air mags up before you drop the casket',\n", + " 'yeah, king chip',\n", + " 'if you roll a nice one, motherfucker pass it',\n", + " 'light my air mags up before you drop the casket',\n", + " 'glc, the ism is a visionary',\n", + " 'seen my face next to ism in the dictionary',\n", + " \"these pussy ass lames, they just can't compare me\",\n", + " \"my bitches they just don't complain when they gotta share me\",\n", + " 'i was 16 when i got a chevy',\n", + " 'came up from a pack to a fucking heavy',\n", + " 'gospel, talk to apostles',\n", + " 'who you know that knew that shit and fuck like costco',\n", + " 'i know, the truth will get you goofy niggas',\n", + " \"holding nigga's balls, y'all some groupie niggas\",\n", + " \"flexing and finessin', riding hoopty niggas\",\n", + " 'i be manifesting sushi nigga',\n", + " 'cool out, that silk shit i rule out',\n", + " 'chip got it cracking out in cleveland, so i flew out',\n", + " 'got these hoes going down low, like a lou out',\n", + " \"i'm about that money and the power, what is you 'bout\",\n", + " \"i'm balling' just like john walk\",\n", + " 'bitch, call me the wizard!',\n", + " 'couple years before, you know a nigga had that wizard',\n", + " 'white t from the corner store was my shizzurt',\n", + " 'breaking angles, cross serve, i know that it hizzurt',\n", + " 'fresh from the corner, smell the fiends i was chilling in',\n", + " 'i was smoking kush up in them hotels in michigan',\n", + " \"what'd you think i came from? lil niggas pressed for time\",\n", + " 'when you hear g speak, hurry up and press rewind',\n", + " \"all we do is cash checks, i be in them' bo jacks\",\n", + " 'ten in the rubber band, no less, i need 90 back',\n", + " \"mind of an old nigga, tell the ' is fully you\",\n", + " \"with your point guard ass, you ain't never try to shoot!\",\n", + " \"niggas saying won't you just play something that i'm nice\",\n", + " \"pussy niggas, what's your bet? nigga, i don't need the price\",\n", + " \"i keep it pittsburgh nigga, but it's weekend\",\n", + " 'chip said it got it popping, quit traffic to cleveland',\n", + " 'light my air, light my air mags up before you (repeats)',\n", + " 'light my air mags up before you drop the casket',\n", + " 'light my air, light my air mags up before you (repeats)',\n", + " \"i took your bitch, that's right\",\n", + " \"money keep coming, that's right\",\n", + " \"only ride foreign, that's right\",\n", + " \"whole team on, that's right\",\n", + " \"my niggas gon' ride, that's right\",\n", + " \"my niggas gon' shoot, not fight\",\n", + " 'whether wrong or right',\n", + " \"that's right, that's right\",\n", + " 'two clubs in one night',\n", + " '25 bands, one night',\n", + " 'kush up in that raw',\n", + " 'purple in that sprite',\n", + " 'them hoes in rotation',\n", + " 'money my motivation',\n", + " 'money make her cum',\n", + " \"and i'mma make her taste it\",\n", + " \"put it in the neck, i'ma make her gag on it\",\n", + " \"head in the 'rari, that's how you blow a hundred\",\n", + " 'hoes come and go',\n", + " \"i'ma fuck and then i want 'em\",\n", + " \"hoes like j's, wear 'em once then i don't want 'em\",\n", + " 'swerve, hit the corner, in the california',\n", + " 'running through these hoes, like i play for minnesota (a.p!)',\n", + " 'she turn off her phone, cause nigga you a sucker',\n", + " \"police ass niggas tellem' stop cuffin'\",\n", + " \"i took your bitch, that's right\",\n", + " \"money keep coming, that's right\",\n", + " \"only ride foreign, that's right\",\n", + " \"whole team on, that's right\",\n", + " \"my niggas gon' ride, that's right\",\n", + " \"my niggas gon' shoot, not fight\",\n", + " 'whether wrong or right',\n", + " \"that's right, that's right\",\n", + " \"that's right she posted in my whip\",\n", + " 'posted on my dick',\n", + " 'she supposed to be with her nigga',\n", + " 'but she posted with my clique',\n", + " 'right her posted in my whip',\n", + " 'posted on my dick',\n", + " 'she supposed to be in your work',\n", + " 'but she posted with my clique',\n", + " 'i told her, post up here',\n", + " 'i told her, post up here',\n", + " 'girl your face looking gorgeous',\n", + " 'and my cash is retarted',\n", + " 'need a 5 year plan, cause that ass is enormous',\n", + " 'they keep telling you to stop',\n", + " 'bet this cash make you want it',\n", + " 'girl quit acting you like shy',\n", + " 'grab this dick and jump up on it',\n", + " 'i was way out in new york',\n", + " 'we were smoking california',\n", + " \"she can't wait to tell her friends\",\n", + " 'talk about in the morning',\n", + " 'beat it like she stole it',\n", + " 'sleeping like she in a coma',\n", + " 'you just wish, she wanna be a fool',\n", + " 'think you control her',\n", + " \"couple grand in a rubber band, you know i'm the man\",\n", + " 'what you saying, baby what you saying',\n", + " \"tell me what's the plan\",\n", + " 'is you playin?, is that bitch a ten?',\n", + " 'bands will make her dance',\n", + " 'seen my ex, she was not a fan',\n", + " 'damn...',\n", + " \"i took your bitch, that's right\",\n", + " \"money keep coming, that's right\",\n", + " \"only ride foreign, that's right\",\n", + " \"whole team on, that's right\",\n", + " \"my niggas gon' ride, that's right\",\n", + " \"my niggas gon' shoot, not fight\",\n", + " 'whether wrong or right',\n", + " \"that's right, that's right\",\n", + " \"that's right she posted in my whip\",\n", + " 'posted on my dick',\n", + " 'she supposed to be with her nigga',\n", + " 'but she posted with my clique',\n", + " 'right her posted in my whip',\n", + " 'posted on my dick',\n", + " 'she supposed to be in your work',\n", + " 'but she posted with my clique',\n", + " 'i told her, post up here',\n", + " 'i told her, post up here',\n", + " 'yeah',\n", + " 'found found found',\n", + " 'found found found',\n", + " \"someone who's worth it\",\n", + " 'in this murkiness',\n", + " \"someone who's never\",\n", + " 'seeming scheming',\n", + " 'found found found',\n", + " 'found found found',\n", + " \"someone who's worth it\",\n", + " 'in this murkiness',\n", + " \"someone who's never\",\n", + " 'seeming scheming',\n", + " 'oh, but they were never found',\n", + " 'oh, but they were never found',\n", + " 'oh, but they were never found',\n", + " 'i do believe that',\n", + " 'the more you give your love',\n", + " 'and i do believe that',\n", + " 'the more you offer trust',\n", + " 'the more you chase',\n", + " 'the more you cry',\n", + " \"the more you're bound to lose\",\n", + " \"the more you're bound to lose\",\n", + " 'oh, but they were never found',\n", + " 'oh, but they were never found',\n", + " 'somebody',\n", + " 'who wants to be',\n", + " 'who wants to be',\n", + " 'with me',\n", + " 'all the time',\n", + " 'so i sort of broke away, let my angels float away',\n", + " 'but lives a vicious cycle so i brighten up your day',\n", + " 'you’re filled with such dismay, wipe your tears cause i’m here to',\n", + " 'promise that i’ll always be around if not',\n", + " 'i’m not near you',\n", + " 'whispering a dream about us dancing with the sun',\n", + " 'collided with the moon to prove that im your number one',\n", + " 'we’ve battled like before though the galaxies are mad at me i’d rather be a part of you alone in my reality',\n", + " 'not to see it comin’, i’m truly in my zone',\n", + " 'but who’s to say i feel the same if i was all alone',\n", + " 'you’re righteous and you’ve grown, and i been on a toggle',\n", + " 'you switched around, which is why i speak with such bravado',\n", + " 'my passion is what built me, determination kills me, but you remain this way, and your ways are so milky, bizarre',\n", + " 'i’ve wonder why i’m always in your arms, searching you up in the sky, shining star is what you are',\n", + " 'now i be cracking and rolling',\n", + " \"all my niggas totin'\",\n", + " 'got bad bitches with sew-ins, all these hoes be going',\n", + " \"rock trues, and robin's, dreads so they jockin\",\n", + " 'i got the fe-fe rocking',\n", + " 'tron, flats, and molly',\n", + " \"like get money, we spend it, shake it open catchin'\",\n", + " 'this kush i bring we hit it, rolling kush i been it',\n", + " \"it’s cracking i'm rolling, all my niggas totin'\",\n", + " 'got bad bitches with sew-ins',\n", + " 'all these hoes be going',\n", + " 'say sicko what’s popping, ball like the houston rockets',\n", + " \"all i know is swerve and swag, and tall money is knockin'\",\n", + " 'and our bullets are so vicious',\n", + " 'got your ass stop wishing i’m on you like a mission',\n", + " 'like a mess is in here, we can’t lose so we winning',\n", + " 'that’s why i be grinning i’m popping all the ectasy',\n", + " 'my night is just beginning rolling stone tatted',\n", + " 'speak country, what’s happening?',\n", + " 'these bitch niggas be whining, cause contracts i be signing',\n", + " 'my gucci hat is linen all my hoes they out here get it',\n", + " 'on my pimping if you with it',\n", + " 'hope this sk make them ribbit',\n", + " 'till they stop it, bullets hitting',\n", + " 'like wayne with no ceilings',\n", + " 'and we mobbing, mobbing, say sicko yeah we coming',\n", + " 'all my homies rising, i be asap mobbing',\n", + " 'in miami colors, chilling with some hoes',\n", + " 'all my money powder, all my shoes italian',\n", + " \"bruh bruh i ain't lying, it's gucci on my toes\",\n", + " 'ksubi all in my clothes, big ass booty all in my hoes',\n", + " \"light skin cutie, supermodel, she ain't worried 'bout my dawg\",\n", + " \"girl you 'bout to miss your show, shake that candy out of your nose\",\n", + " \"jeremy scott gon' be mad, why he pay your ass to walk\",\n", + " 'we about to head to new york, might just hit up nicki minaj',\n", + " \"tired of trinidad and be wildin', but i'm finna have a ball\",\n", + " \"can't forgot about sicko, head to chiraq and be lo'\",\n", + " 'might just hit up 300 for the smoke',\n", + " 'cause otf can get it for the low',\n", + " 'the hole it be rocking, i got bands in my pocket, and sicko steady mobbing',\n", + " 'got hella rocks and robins i’m tatted like a mexican',\n", + " 'these hoes know i be flexing man',\n", + " \"i’m on the end no checking in and i don’t do no flodgin'\",\n", + " \"out west we be cuttin' though, we see little thots in booty shorts\",\n", + " 'they hop out in a vino, and you know we be doing us',\n", + " 'they hit up the liquor store, then we hit the fifi up',\n", + " 'we bail out and they jocking us, cause my whole team be dreaded up',\n", + " 'sicko and them be guccied up, sicko and them be louied up',\n", + " 'got these bitches going crazy, that’s the word around our town',\n", + " 'big bands in my pocket, i don’t carry no wallet get out my dick',\n", + " 'i’m stunting, got the baddest bitches watching',\n", + " 'yeah',\n", + " 'yeah',\n", + " 'yeah',\n", + " \"your man on the road, he doin' promo\",\n", + " 'you said, \"keep our business on the low-low\"',\n", + " \"i'm just tryna get you out the friend zone\",\n", + " \"'cause you look even better than the photos\",\n", + " \"i can't find your house, send me the info\",\n", + " \"drivin' through the gated residential\",\n", + " \"found out i was comin', sent your friends home\",\n", + " 'keep on tryna hide it, but your friends know',\n", + " \"i only call you when it's half-past five\",\n", + " \"the only time that i'll be by your side\",\n", + " 'i only love it when you touch me, not feel me',\n", + " \"when i'm fucked up, that's the real me\",\n", + " \"when i'm fucked up, that's the real me, yeah\",\n", + " \"i only call you when it's half-past five\",\n", + " \"the only time i'd ever call you mine\",\n", + " 'i only love it when you touch me, not feel me',\n", + " \"when i'm fucked up, that's the real me\",\n", + " \"when i'm fucked up, that's the real me, babe\",\n", + " \"i'ma let you know and keep it simple\",\n", + " \"tryna keep it up don't seem so simple\",\n", + " \"i just fucked two bitches 'fore i saw you\",\n", + " \"and you gon' have to do it at my tempo\",\n", + " 'always tryna send me off to rehab',\n", + " \"drugs started feelin' like it's decaf\",\n", + " \"i'm just tryna live life for the moment\",\n", + " 'and all these motherfuckers want a relapse',\n", + " \"i only call you when it's half-past five\",\n", + " \"the only time that i'll be by your side\",\n", + " 'i only love it when you touch me, not feel me',\n", + " \"when i'm fucked up, that's the real me\",\n", + " \"when i'm fucked up, that's the real me, yeah\",\n", + " \"i only call you when it's half-past five\",\n", + " \"the only time i'd ever call you mine\",\n", + " 'i only love it when you touch me, not feel me',\n", + " \"when i'm fucked up, that's the real me\",\n", + " \"when i'm fucked up, that's the real me, babe\",\n", + " 'hills have eyes, the hills have eyes',\n", + " 'who are you to judge? who are you to judge?',\n", + " 'hide your lies, girl, hide your lies (hide your lies, oh, baby)',\n", + " 'only you to trust, only you',\n", + " \"i only call you when it's half-past five\",\n", + " \"the only time that i'll be by your side\",\n", + " 'i only love it when you touch me, not feel me',\n", + " \"when i'm fucked up, that's the real me\",\n", + " \"when i'm fucked up, that's the real me, yeah\",\n", + " \"i only call you when it's half-past five\",\n", + " \"the only time i'd ever call you mine\",\n", + " 'i only love it when you touch me, not feel me',\n", + " \"when i'm fucked up, that's the real me\",\n", + " \"when i'm fucked up, that's the real me, babe\",\n", + " 'ewedihalehu',\n", + " 'yene konjo, ewedihalehu',\n", + " 'yene fikir, fikir, fikir, fikir',\n", + " 'yene fikir, fikir, fikir, fikir',\n", + " 'ewedihalehu',\n", + " 'yene konjo, ewedihalehu...',\n", + " 'illuminati at the door',\n", + " 'and when it rains it fucking pours',\n", + " 'and when it pours it fucking rains',\n", + " 'the fake versace leaves a stain',\n", + " \"i've seen a christian kill a baby, inhumane\",\n", + " 'in this world where we struggle just to love',\n", + " 'and obstain, from the greed and the sex - equanimity can lay',\n", + " 'and if i died right now, would you still remember the name',\n", + " 'would you still remember the name',\n", + " 'painted the picture, picture painted perfectly',\n", + " 'confessional confessions, tend to be the burden see',\n", + " \"it's blasphemy, but it's honesty over everything\",\n", + " 'walk with a gun and let the murder be the remedy and',\n", + " \"hennessy on melody's,i'm starring at the enemy\",\n", + " \"illuminati grab the shotty, look it's rejjie (check check)\",\n", + " \"illuminati grab the shotty, look it's rejjie\",\n", + " 'because the kid is unpredicteble',\n", + " \"i came from a jungle where there's animals and miracles\",\n", + " 'nah, im trying to be the first to make it',\n", + " 'and make a broke boy rich and religion,have a pay check',\n", + " 'and make a pig see the dick of this convict',\n", + " 'vietnam veteran slaying rappers with dillegence',\n", + " \"and that's a predicament for your intelect\",\n", + " \"the black boy's hungry, no pigs on a babies back\",\n", + " \"illuminati that's the real enemy (x3)\",\n", + " \"yea i know you ain't gotta be telling me\",\n", + " \"put some henny in my tee, that's the remedy\",\n", + " \"that's the remedy, hennesy on melodies (x2)\",\n", + " \"slurpin' ribena, burnin' my reefer\",\n", + " 'sip a henny, let me turn up my speaker',\n", + " \"billin cheese, blowing out soliloquy's dilla beats\",\n", + " 'chilly in the window breeze',\n", + " \"feel at ease, pizza, all a nigga need's\",\n", + " \"but when the streets -, darker than the lenses on your shade's\",\n", + " 'cold nights through december, man surrender to the page',\n", + " 'plain and simple, plain and sinful',\n", + " 'blowing blunts just remembering the days',\n", + " 'fell into a maze of thought -, never been away for more',\n", + " 'then a couple beats -, love from my street and love for the peeps',\n", + " 'reminiscing on a relevant mistake',\n", + " \"on the cold corner tryna' sell a man my pain\",\n", + " 'and this...',\n", + " 'right there, she like yeah right there',\n", + " 'she like yeah, right there, i like it right there',\n", + " 'right there',\n", + " 'well look i like a bad bitch, on the back bitch',\n", + " 'i go down there, you can hold on to my hair',\n", + " \"clit on my lip, i don't trip i spit\",\n", + " \"i just want to eat you til i know you won't forget\",\n", + " \"now you all wet, it's all on my face\",\n", + " \"i don't wipe it off, i know you like the taste\",\n", + " \"spit in my mouth and i'll spit into yours\",\n", + " 'sit on my face when im laying on the floor',\n", + " 'cold complain, make that pussy rain, til you',\n", + " 'say that you just came, sheets got stains',\n", + " 'i keep my mouth right on her pussy french kissing',\n", + " 'breathing all heavy and she quiet so she listen',\n", + " \"i don't wanna hurt her, i just wanna bite her\",\n", + " \"don't she know i want her, don't she know i like her\",\n", + " 'suck her pussy juice real loud so she hear it',\n", + " \"all up on my face and it's wet so she smear it\",\n", + " 'i eat more pussy, i eat more pussy',\n", + " 'i eat more pussy, i eat more pussy',\n", + " 'she like it when i eat her pussy',\n", + " 'love it when i eat her pussy',\n", + " 'i eat more pussy, i eat more pussy',\n", + " 'i eat more pussy',\n", + " 'if it cold ill go under the sheets',\n", + " 'put my mouth on it like a motha fuckin freak,',\n", + " \"i'm a suck your pussy til you can't even speak\",\n", + " \"i'm a suck your pussy til you knees feel weak\",\n", + " 'shaken, awaken, there you go baby',\n", + " 'my tongue is all wet and does it make it go crazy',\n", + " 'how bout this, im gonna sit on the floor',\n", + " 'and im gonna make you stand on my face',\n", + " \"i'm gonna make that pussy drip on my face\",\n", + " 'move back and forth real slow pace',\n", + " 'i want it, i need it, i own it, i eat it',\n", + " 'i just want her to believe it',\n", + " 'i spit it back on it then i suck it all up',\n", + " 'i spit it back on it, i suck it back up',\n", + " \"don't get it fucked up, this is what i love\",\n", + " \"you mutha fuckas don't do it enough, eat it enough\",\n", + " 'baby come, i want to see what i can do with my tongue',\n", + " 'put my lips on my your clit, and i hum',\n", + " \"you gonna love it it's a beautiful one\",\n", + " 'i should never front, i love kissing cunt',\n", + " 'til that cunt come, and i can taste some',\n", + " 'yeah i like it bitch yum, lick it off my tongue',\n", + " 'lick it off my chin, where should i begin',\n", + " 'i eat more pussy, i eat more pussy',\n", + " 'i eat more pussy, i eat more pussy',\n", + " 'she like it when i eat her pussy',\n", + " 'love it when i eat her pussy',\n", + " 'i eat more pussy, i eat more pussy',\n", + " 'i eat more pussy',\n", + " \"i'm the son of the god, none higher than the lord\",\n", + " \"you'll never find any demonic signs in my video's, nor times i record\",\n", + " 'i can see the blood in the dark',\n", + " 'you gotta draw the line in the yard',\n", + " \"it's for the cream i play, they picking teams\",\n", + " 'and you boy look at mean like he wanna take the ball',\n", + " 'belly of the beast and the brawl',\n", + " \"street's no leash on the dog\",\n", + " 'they running for safety, he probably got rabies',\n", + " 'foam leak from the jaws',\n", + " 'who really behind it all?',\n", + " 'the labels making the call, the artists give it its all',\n", + " \"the internet is a fool, they're using it for a tool re-modifying us all\",\n", + " \"guess i'm on my lupe shit, they don't listen to my lupe shit\",\n", + " 'you can have it all but soon as you hit the wall',\n", + " \"i wonder if the coupe gon' fit\",\n", + " '18 on the graveyard shift, die for nothing',\n", + " 'mel gibson braveheart kilt',\n", + " \"we standing in the lane y'all built\",\n", + " 'society made me and i just blame myself',\n", + " 'no pitty for the boy, you could put the city on the boy',\n", + " \"i'mma be gon' for a sec\",\n", + " 'but i better come back with the ceiling off the toy',\n", + " \"i'm good, i'm good\",\n", + " \"i'm good, i'm good\",\n", + " 'just pray for me, just pray for me',\n", + " 'just pray for me, just pray for me',\n", + " \"you know i ain't ranting no niggas\",\n", + " 'i know you figure kanye and jigga',\n", + " 'but look, they got an answer to they own',\n", + " \"plus this is my song and who sin's are bigger\",\n", + " 'so how am i any different',\n", + " \"i'm still talking this money, live fast, fuck bitches\",\n", + " 'that night life is vicious',\n", + " \"there's no such thing as magic but we all superstitious\",\n", + " 'that jailhouse is full of us, the courtroom is null to us',\n", + " 'we better off as bull runners',\n", + " 'the devil in blue dress is making love to us',\n", + " 'sunglasses and bc powder',\n", + " \"can't sleep the dreams getting even louder\",\n", + " 'sweating up in my palms, neck getting all warm',\n", + " \"i'mma probably need another shower\",\n", + " 'marriage is like the last thing, loving is like a past fling',\n", + " \"they just want some respect like never call 'em a bitch\",\n", + " \"i'm cold like nat king\",\n", + " 'my vision told me to fall back',\n", + " 'i used to think it was all that',\n", + " \"i'd never throw in my towel, i been knew they was foul\",\n", + " 'but this what you call rap?',\n", + " 'how sad are we?',\n", + " 'and how sad have we been?',\n", + " \"we'll let you know, we'll let you know\",\n", + " \"oh, but only if you're really interested\",\n", + " 'you wonder how',\n", + " \"we've stayed alive 'til now\",\n", + " \"we'll let you know, we'll let you know\",\n", + " \"but only if you're really interested\",\n", + " \"we're all smiles\",\n", + " \"then, honest, i swear, it's the turnstiles\",\n", + " 'that make us hostile',\n", + " 'ohuoh, ohuoh, ohuoh, ohuoh, ohuoh',\n", + " 'we will descend',\n", + " 'on anyone unable to defend',\n", + " 'themselves',\n", + " 'ohuoh, ohuoh, ohuoh, ohuoh, ohu-',\n", + " 'and the songs we sing',\n", + " \"they're not supposed to mean a thing\",\n", + " 'la, la, la, la, la, la, la, la, la, la, la, la, la, la',\n", + " \"you're lonely, oh ... you're lonely\",\n", + " 'oh ...',\n", + " 'get off the roof!',\n", + " 'oh ... your arsenal!',\n", + " 'we may seem cold, or',\n", + " 'we may even be',\n", + " \"the most depressing people you've ever known\",\n", + " \"at heart, what's left, we sadly know\",\n", + " \"that we are the last truly british people you'll ever know\",\n", + " 'we are the last truly british people you will ever know',\n", + " \"you'll never never want to know\",\n", + " 'wake up, wake up',\n", + " 'gotta get this paper, get this cake up',\n", + " 'gotta do my hair, gotta put on makeup',\n", + " 'gotta act like i care about this fake stuff',\n", + " 'straight up what a waste of my day',\n", + " \"if i had it my way i'd roll out of bed\",\n", + " 'say bout 2:30 mid day',\n", + " 'hit the blunt then, hit you up to come over to my place',\n", + " 'you show up right away',\n", + " 'we make love and then we fuck',\n", + " \"and then you'd give me my space\",\n", + " 'yeah',\n", + " 'what i am trying to say is',\n", + " 'that love is ours to make so we should make it',\n", + " 'everything else can wait',\n", + " 'the time is ours to take so we should take it',\n", + " 'wake up, wake up, bake up',\n", + " 'gotta heat the vape up',\n", + " 'lets get faded',\n", + " \"gotta call your job tell em' you won't make it\",\n", + " \"ain't nobody here baby lets get wasted\",\n", + " 'we should just get naked',\n", + " 'cause i be working hard and i know you be on that same shit',\n", + " \"every other day's a different game that you just can't win\",\n", + " 'i just want to ease your mind and make you feel all right',\n", + " 'so go head tell your baby mama you gon be with me tonight',\n", + " 'right',\n", + " 'what i am trying to say is',\n", + " '(what i am trying to say is)',\n", + " 'that love is ours to make so we should make it',\n", + " '(we should make it, we should make it)',\n", + " 'everything else can wait',\n", + " '(everything else can wait)',\n", + " 'the time is ours to take so we should take it',\n", + " \"it's not love, but it's pretty close\",\n", + " 'hot fudge and a little smoke',\n", + " \"i didn't mean it means nothing to you\",\n", + " 'hands locked on my black couch with nothing to do',\n", + " \"can't stop on cloud 20\",\n", + " 'buried in the drugs, but the feels keeps coming',\n", + " 'finally stop crying, but your nose is still running',\n", + " 'wipe it on my shirt, (haha, on my sleeve)',\n", + " 'you tell me that you wanna do it big',\n", + " 'i love it when you say \"guess what?\" (what? what?)',\n", + " 'reading stories to some other nigga kid',\n", + " \"and i wonder why i'm all messed up (up up up up)\",\n", + " 'cause we gotta be responsible sometimes',\n", + " 'being a class act nevermind my alumni',\n", + " \"i don't wanna be around a baby so dumb high\",\n", + " \"that i don't see the beauty of a momma on insides\",\n", + " 'curled up with my head on your chest',\n", + " \"it's the best remedy for the pain and the stress\",\n", + " \"if the world doesn't change then we'll never get dressed\",\n", + " 'it will be like this to the kiss of the death',\n", + " 'of my soul, bowl of the blue dream, no',\n", + " 'not a good team, once soul, two halves',\n", + " 'no joke, who laughs?',\n", + " 'just us (just us, just us)',\n", + " 'okay, got this oj and jose',\n", + " 'mixed it up with that rose',\n", + " \"we gon' do this our own way\",\n", + " 'alright, okay',\n", + " \"what is it that you're smoking?\",\n", + " 'piece it up with this peace and love',\n", + " 'and this peace and love like the old days',\n", + " 'what i am trying to say is',\n", + " '(what i am trying to say is)',\n", + " 'that love is ours to make so we should make it',\n", + " '(we should make it, we should make it)',\n", + " 'everything else can wait',\n", + " '(everything else can wait)',\n", + " 'the time is ours to take so we should take it',\n", + " 'we should stay right here',\n", + " 'we should lay right here',\n", + " 'cause everything is okay right here',\n", + " 'you should stay right here',\n", + " 'we should lay right here',\n", + " 'cause everything is okay right here',\n", + " \"i idolize no man who's confined to time\",\n", + " \"i only idolize the sun cause he's always lit\",\n", + " \"and it's a fuck load of stars in the sky\",\n", + " 'but it take one of a kind to really even bring the squad with it',\n", + " 'nod with it',\n", + " \"another one of god's sons like nas\",\n", + " \"and y'all didn't even see it comin', still profited\",\n", + " 'and give it to you for the fre.99',\n", + " \"feelin' like mj pre '99\",\n", + " 'woke up, dick on carpenter',\n", + " \"that's a hard, harbinger, takin' no bargains\",\n", + " 'niggas hate you one day, then next day they love you',\n", + " \"i take it with a grain of salt, it make 'em so salty\",\n", + " 'in my nigga chad jeep, wit the doors off it',\n", + " '40 hours, no doze off, no coffee',\n", + " 'i feel like i neglect my natural needs so often',\n", + " \"every other mornin' wakin' up caughin', it's so costly, but...\",\n", + " 'let me call your attention to our greatest power',\n", + " 'which is under your control',\n", + " 'a power which is greater than poverty, greater than the lack of education',\n", + " 'greater than all of your fears and superstitions combined',\n", + " 'it is the power to take the station of your own mind and direct to whatever ends you may desire',\n", + " \"i'm learnin' patience and embracin' every moment\",\n", + " 'for the view and the vibe',\n", + " 'fuck pressure, feel the texture of the room',\n", + " \"livin' life underscored, put it all on the line\",\n", + " \"i'm a mic connoisseur with the extras\",\n", + " 'they play for them cameras',\n", + " 'lower their standards to raise their chances to ball',\n", + " \"and it's fear cause it's the system that raised 'em that did 'em wrong\",\n", + " \"in the hood prayin' bullets just graze 'em, but never take 'em\",\n", + " 'like a dead beat daddy who lied about all vacations',\n", + " \"i skate on these high vibrations and ride 'em out\",\n", + " \"i idolize no nothing, it's bone dry, this shit give me cotton mouth\",\n", + " \"niggas so 'bout a dollar, they forget what their problems 'bout\",\n", + " \"dropped out of college and conning' and beef with his mama now\",\n", + " 'he mixed the goop with of the soda, so qualms gets drowned out',\n", + " \"be mashing the muscle and movin' counter counts\",\n", + " 'so who do we look up to when the image on the canvas is',\n", + " 'pigs reciting niggas they mirandas',\n", + " 'o divine providence, i ask not for more riches but',\n", + " 'more wisdom with which to make wiser use of the',\n", + " 'riches you gave me at birth, consisting in the power to',\n", + " 'control and direct my own mind to whatever ends i',\n", + " 'might desire',\n", + " 'now you see why it is important that you recognize that all success begins with definiteness of purpose, with a clear picture in your mind of precisely what you want from life',\n", + " 'p-p-p-p-p-party, party',\n", + " 'that smile on your face',\n", + " 'makes it easy to trust you',\n", + " 'those in— (yeah), those in— (yeah, oh), those in— (yeah, oh)',\n", + " \"this what 'sauga feels like in the night time (ooh)\",\n", + " \"watch what she doin' when the light shine (ooh)\",\n", + " 'drunk niggas tryna talk in the strip club',\n", + " 'shawty silhouette looks like a dollar sign (ooh)',\n", + " 'caught-caught up (caught up)',\n", + " \"that's just how a nigga brought up (brought up)\",\n", + " 'blow ones for you loony ass niggas (ass niggas)',\n", + " 'straight bills for you toonie ass niggas (ass niggas)',\n", + " 'm-m-my niggas bigger than the bouncer',\n", + " 'roll up in the bitch still smell like an ounce (like a ounce)',\n", + " 'right quick, right quick',\n", + " 'tight jeans on so she feel my shit, ayy (feel my shit)',\n", + " \"tell me somethin' good baby\",\n", + " \"tell me somethin', tell me somethin' good shawty (yeah)\",\n", + " 'come bring it to the hood baby',\n", + " 'bring it-bring it back to hood, shawty (ooh, ooh, ooh)',\n", + " \"this what 'sauga feels like in the night time (night time)\",\n", + " 'bust it open, shawty when the light shine (the lights shine)',\n", + " \"still fuckin' with the same ass niggas (niggas)\",\n", + " 'i know you want a break',\n", + " 'i-i-i know you want a break from toronto',\n", + " 'oh, girl',\n", + " 'west side',\n", + " 'oh-oh, ooh, girl (know you want a break)',\n", + " 'oh, girl (that smile on your face)',\n", + " 'those in, those in',\n", + " 'face, face',\n", + " 'those in, those in',\n", + " 'yeah, yeah, yeah',\n", + " 'yeah, dont this sound so soothing',\n", + " 'if them hoes choosing they losing',\n", + " 'yeah, and dont this sound extra soothing',\n", + " \"if them girls ain't choosing they losing\",\n", + " 'yeah, and dont this sound so soothing',\n", + " 'if them hoes choosing they losing',\n", + " 'yeah',\n", + " 'no record deal',\n", + " 'im fresh as hell',\n", + " 'new car paid for',\n", + " 'they catchin hell',\n", + " 'when i pull up',\n", + " 'with all they hoes',\n", + " 'foggy as fuck',\n", + " 'all that smoke',\n", + " 'im huey newton',\n", + " 'black dynamite',\n", + " 'fuck these hoes',\n", + " 'with all my might',\n", + " 'heads or tails',\n", + " 'to each his own',\n", + " 'i call it mona lisa',\n", + " 'cause i make lisa moan',\n", + " \"and anytime you ain't smokin you should be\",\n", + " 'call of duty, battlefield thats how my hood be',\n", + " 'yeah, a little bit of this',\n", + " 'a little bit of that',\n", + " 'kill ‘em with the flow',\n", + " 'kill ‘em with the mac',\n", + " 'now you did',\n", + " 'and i got yo bitch',\n", + " 'i in your grave',\n", + " 'piss on that bitch',\n", + " 'me and her just met',\n", + " 'now we goin in',\n", + " 'she chose me',\n", + " 'now she gon’ win',\n", + " 'yeah, and dont this sound so soothing',\n", + " \"if girls ain't choosing they losing\",\n", + " 'yeah, and dont this sound extra soothing',\n", + " \"if them bitches ain't choosing they losing\",\n", + " 'yeah, and dont this sound so soothing',\n", + " \"if them girls ain't choosing they losing\",\n", + " 'yeah, and dont this sound so soothing',\n", + " 'im extra fresh',\n", + " 'you know i is',\n", + " 'whats this song called',\n", + " 'i have no idea',\n", + " 'its fresh doe',\n", + " 'so is this club',\n", + " 'lets have a drink',\n", + " 'lets make love',\n", + " 'back at my place',\n", + " 'i just bought you ace',\n", + " 'thats more than your rent',\n", + " 'gimme some face',\n", + " 'these random thoughts',\n", + " 'dont mean no harm',\n", + " 'im tryna get in your car',\n", + " 'hit the alarm',\n", + " 'permission to enter',\n", + " 'that velvet center',\n", + " 'dont need no pictures just to make this a night to remember',\n", + " 'you niggas is hoes',\n", + " 'transvestite',\n", + " 'im so bored can some of yall girls please excite',\n", + " 'roll that weed ignite',\n", + " 'sit back and chill',\n", + " 'look what time it is',\n", + " 'time to get real',\n", + " 'you know wassup',\n", + " 'fuckin games',\n", + " 'its three in the morning im supposed to hittin that shit like whats my name',\n", + " 'bitch quit playin’',\n", + " 'yeah, and dont this sound so soothing',\n", + " \"if them girls ain't choosing they losing\",\n", + " 'yeah, and dont this sound so soothing',\n", + " \"if them girls ain't choosing they losing\",\n", + " 'yeah, and dont this sound so soothing',\n", + " \"if them girls ain't choosing they losing\",\n", + " 'yeah, dont this sound so soothing',\n", + " 'hodgy beats!',\n", + " \"just in case you didn't know\",\n", + " \"i've been around the world\",\n", + " \"like misplaced grocey's, i'm a go back\",\n", + " 'those memories are kodak',\n", + " 'take a snap for the throwback',\n", + " 'my snapback is my hat',\n", + " 'track is on a throw back',\n", + " \"my city's behind be the highest\",\n", + " 'climbing up the fucking rope back',\n", + " \"twisting off the cat, i'mma roll up swishers\",\n", + " \"blow that weed like , first make a couple wish'es\",\n", + " 'in 2005 i was putting in 5 to get high',\n", + " 'now we get on just to get fly',\n", + " \"how does it feel to be the best, i'm in my way to be next\",\n", + " 'you bought to push my way through',\n", + " \"so money come's with paids due\",\n", + " 'mellowhype jersey, felling worthy',\n", + " \"who cut that paid due's, odd future reigning terror\",\n", + " 'better weigh your rain',\n", + " \"man it's great when you the shit\",\n", + " \"but when it's turning your thing's get drained in\",\n", + " 'you running for the chair, you run your job, campaigning',\n", + " 'swear an under oath protecting',\n", + " \"like an umbrella when it's raining\",\n", + " \"got america on her toes so much her toe nail's breaking\",\n", + " \"ain't no love, in the heart of the city\",\n", + " \"ain't no love, in the heart of time\",\n", + " 'i wanna be the perfect pops to my son',\n", + " 'and him look at me like;',\n", + " 'daddy you the greatest, i wanna be just like you',\n", + " 'i tell him; be like me, but with a higher iq',\n", + " 'so he can cut the water cut fat',\n", + " 'and cut the water',\n", + " \"i bump my head a couple time's\",\n", + " 'putting my hammer to the screw',\n", + " 'but i fix my situation, what about you',\n", + " \"swallong the simulating nigga's fake\",\n", + " 'jealousy begins to generatethe bit of hate',\n", + " \"it's the wat it spreads all through the niggas face\",\n", + " 'acting like his girlfriend slept with me',\n", + " 'now he got some shit to say',\n", + " 'he recieved the tone of def from me, respectfully',\n", + " 'disrespecting me results in weaponry',\n", + " 'check your speed and all your',\n", + " 'before you are left to bleed',\n", + " '(mumbling.....)',\n", + " 'nothing is wrong',\n", + " \"now we're all alone...\",\n", + " \"and now we're all alone\",\n", + " 'your friends are all long gone',\n", + " \"they're already home, you're already wrong\",\n", + " \"you're alle alone...\",\n", + " \"come here girl, you ain't walkning straight\",\n", + " \"close your mouth, cause you ain't talking straight\",\n", + " \"i know it's hard to concentrate\",\n", + " 'you must think something on to me',\n", + " \"that your pain ain't mine to take\",\n", + " 'we can find another way',\n", + " \"trynna see something, that i've never seen before\",\n", + " \"i said, i'm tryna see something, that i've never seen before\",\n", + " 'just show me girl, just show me girl',\n", + " \"something that i've never seen before\",\n", + " \"so now she's down on all fours\",\n", + " 'still trying to see wrong',\n", + " 'cause i did that already',\n", + " 'you did already, yea we can do it better baby',\n", + " 'but i think i know better way',\n", + " \"gotta promise you won't hesitate\",\n", + " 'she said: you gotta promise you will never tell',\n", + " \"i said: it's pussy girl, what the fuck is to dwell\",\n", + " ...]},\n", + " 'non-music': {'meta': {'train_data': ['tracklist:1. ignorantro',\n", + " '2. butterfly stance',\n", + " '3. fahrenheit 99 (feat. liz vice)',\n", + " '4. so fly (feat. beleaf)',\n", + " '5. 10 2 get in (feat. odd thomas)',\n", + " '6. attack of the clones (feat. john givez & jackie hill perry)',\n", + " '7. fly exam',\n", + " '8. lost in space (feat. marz ferrer)',\n", + " '9. hummingbird stance',\n", + " '10. super lowkey',\n", + " '11. take off with me (feat. john givez)',\n", + " '12. march 10th and a third (feat. braille)',\n", + " \"13. they said there'd be jetpacks (feat. propaganda)\",\n", + " 'album artwork:\"ignorantro\" cover art:\"lost in space\" cover art:\"super lowkey\" cover art:',\n", + " 'she was alone in the bathroom',\n", + " 'eyes fixed like a statue',\n", + " 'wrists sore and her face bruised',\n", + " \"she's just waiting for more bad news\",\n", + " \"now she's white like a full moon\",\n", + " \"as she can't bear what the test proves\",\n", + " 'at a crossroads, need a rescue',\n", + " \"'cause what she gonna do\",\n", + " 'hold on',\n", + " \"she's waiting between worlds\",\n", + " \"wish she could tell 'em hold on\",\n", + " \"i'm waiting between worlds\",\n", + " 'he was looking at a pale sun rise',\n", + " 'thinking back on the time gone by',\n", + " 'how he loved and he laughed and he cried',\n", + " 'how it was a blink of an eye',\n", + " \"now he's looking at the shake in his hand\",\n", + " 'thinking, \"how much more of life can he stand?\"',\n", + " 'and how many years can he cram',\n", + " \"before his fate gives way and he's ash in the sand\",\n", + " 'and is it the last stop on the road',\n", + " 'or the next step in a path—grand and unknown',\n", + " 'a milestone formed from the fruits of his ways',\n", + " 'okay in what comes with the end of his days',\n", + " \"but the sun's rays shine on a face so divine\",\n", + " '\"an angel of mine\" goes the phrase in his mind',\n", + " 'wise to the signs, knowing soon is the time',\n", + " \"but he isn't ready to say goodbye\",\n", + " 'hold on',\n", + " \"he's waiting between worlds\",\n", + " \"wish he could tell 'em hold on\",\n", + " \"i'm waiting between worlds\",\n", + " '4 a.m., when she woke to the sound',\n", + " 'walked to the door in her bedtime gown',\n", + " \"policeman said that her son's been found\",\n", + " 'he was shot in the head near a club downtown',\n", + " 'and the terror in her heart was profound',\n", + " 'her legs broke down, she collapsed to the ground',\n", + " 'as the walls were spinning all around',\n", + " 'he said \"ma\\'am, please you need to come right now\"',\n", + " \"so she's sitting down dazed in a cop car\",\n", + " 'swerving through lanes in a maze where the crazed are',\n", + " 'and locked in a haze from the shock',\n", + " 'thoughts frayed as they stop with here stomach in knots',\n", + " '\"lord please end the nightmare\", are the words in her mind as they raced inside',\n", + " '\"lord please end the nightmare\"',\n", + " 'in the hospital ward in the eye of the storm',\n", + " '\"miss, i regret to say',\n", + " \"there's not much hope i can give today\",\n", + " 'the assault took much of his brain away',\n", + " \"we've done all we can but his state is grave\",\n", + " \"best case here is he'll live on machines\",\n", + " 'with a vegetable quality of life foreseen',\n", + " 'or instead we can pull out the feed',\n", + " 'let him live his last moments and he\\'ll pass in a dream\"',\n", + " 'hold on',\n", + " \"we're waiting between worlds\",\n", + " \"wish she could tell 'em hold on\",\n", + " \"we're waiting between worlds\",\n", + " 'waiting between worlds that divide through a choice undefined',\n", + " 'a break in the line where all paths intertwine',\n", + " 'and no roads lead or progress behind',\n", + " 'and all signs read: \"know the way, decide\"',\n", + " 'they say all things never truly die',\n", + " 'but change in existence and switch design',\n", + " \"like a drain to an ocean in which we're blind\",\n", + " 'we remain set in motion from worlds combined',\n", + " 'so if i had one thought that would last and hold',\n", + " 'amass and fold over as it fastly grows',\n", + " 'and fuse into life like a fabric sewn',\n", + " 'clasp the vast field whence existence flows',\n", + " \"i'd say settle down, of your grief let go\",\n", + " \"this world's nothing more than a magic show\",\n", + " 'though tragic at times and encased in woe',\n", + " 'it all works out, of this truth i know',\n", + " 'i was told there was something, something',\n", + " 'even though there was nothing, nothing',\n", + " 'i was told there was something, something',\n", + " 'even though there was nothing, nothing',\n", + " 'and oh, even though there was nothing',\n", + " 'i was told i could meet you somewhere',\n", + " \"even though i couldn't find you anywhere\",\n", + " 'i was told i could meet you somewhere',\n", + " \"even though i couldn't find you anywhere\",\n", + " 'come burn out and i',\n", + " \"and we'll fly out of time\",\n", + " 'come turn on the light',\n", + " \"and then we'll fly out of time\",\n", + " 'i was told it could happen to me',\n", + " \"even though it couldn't actually be\",\n", + " 'i was told it could happen to me',\n", + " \"even though it couldn't actually be\",\n", + " 'come burn out and i',\n", + " \"and we'll fly out of time\",\n", + " 'come turn on the light',\n", + " \"and then we'll fly out of time\",\n", + " 'come burn out and i',\n", + " \"and we'll fly out of time\",\n", + " 'come turn on the light',\n", + " \"and then we'll fly out of time\",\n", + " 'the courteous pagan shall condemn',\n", + " 'uncourteous englishmen,',\n", + " 'who live like foxes, bears and wolves,',\n", + " 'or lion in his den.',\n", + " 'let none sing blessings to their souls,',\n", + " 'for that they courteous are:',\n", + " 'the wild barbarians with no more',\n", + " 'than nature, go so far.',\n", + " 'if nature’s sons both wild and tame,',\n", + " 'humane and courteous be,',\n", + " 'how ill becomes it sons of god',\n", + " 'to want humanity!',\n", + " '————',\n", + " 'if birds that neither sow nor reap',\n", + " 'nor store up any food,',\n", + " 'constantly find to them and theirs',\n", + " 'a maker kind and good!',\n", + " 'if man provide eke for his birds,',\n", + " 'in yard, in coops, in cage,',\n", + " 'and each bird spends in songs and tunes',\n", + " 'his little time and age!',\n", + " 'what care will man, what care will god,',\n", + " 'for ’s wife and children take?',\n", + " 'millions of birds and worlds will god',\n", + " 'sooner than his forsake.',\n", + " '————',\n", + " 'years thousands since god gave command,',\n", + " 'as we in scripture find,',\n", + " 'that earth and trees and shrubs should bring',\n", + " 'forth fruits each in his kind.',\n", + " 'the wilderness remembers this;',\n", + " 'the wild and howling land',\n", + " 'answers the toiling labor of',\n", + " 'the wildest indian’s hand.',\n", + " 'but man forgets his maker, who',\n", + " 'framed him in righteousness,',\n", + " 'a paradise in paradise now worse',\n", + " 'than indian wilderness.',\n", + " '————',\n", + " 'when sun doth rise the stars do set,',\n", + " 'yet there ’s no need of light,',\n", + " 'god shines a sun most glorious,',\n", + " 'when creatures all are night.',\n", + " 'the very indian boys can give',\n", + " 'to many stars their name,',\n", + " 'and know their course, and therein do',\n", + " 'excel the english tame.',\n", + " 'english and indians none inquire,',\n", + " 'whose hand these candles hold,',\n", + " 'who gives these stars their names, himself',\n", + " 'more bright ten thousand-fold.',\n", + " 'we see the billboard girl',\n", + " 'the one devoted to ritual',\n", + " 'standing in the rain',\n", + " 'holding all her pain inside',\n", + " \"i know you're hurting now\",\n", + " \"but i can't point my finger at the\",\n", + " \"words i should or shouldn't say\",\n", + " 'anything to take the pain away',\n", + " 'to walk alone on the streets tonight',\n", + " 'and fear nothing',\n", + " 'to choose to love what we are in this life',\n", + " 'and shine brighter',\n", + " \"don't let the crosses and dollar signs, symbols of man, unkind\",\n", + " \"make you feel that you're not real\",\n", + " 'all this time, walk out',\n", + " 'out of the shadows',\n", + " 'we see the lines in chalk',\n", + " 'the warning sign for where we walk',\n", + " \"in the shadows of the city's maze\",\n", + " 'to try and fight for better days',\n", + " 'walk alone on the streets tonight',\n", + " 'and fear nothing',\n", + " 'choose to love what we are in this life',\n", + " 'and shine brighter',\n", + " \"don't let the crosses and dollar signs, symbols of man, unkind\",\n", + " \"make you feel that you're not real\",\n", + " 'all this time, walk out',\n", + " 'out of the shadows',\n", + " \"yeah, we're ungrateful\",\n", + " \"yeah, we're ungrateful for...\",\n", + " 'holy books, religious men',\n", + " 'values of beauty, and original sin',\n", + " 'and all this time we unwind it',\n", + " \"i won't give up, i'm not afraid\",\n", + " 'reisister, go as long as it takes',\n", + " 'to reverse the hypocrisy, challenge the stakes',\n", + " 'of your safety and survival at the heart',\n", + " \"of women's voices, women's art\",\n", + " 'to walk alone on the streets tonight',\n", + " 'and fear nothing',\n", + " 'to choose to love what we are in this life',\n", + " 'and shine brighter',\n", + " \"don't let the crosses and dollar signs, symbols of man, unkind\",\n", + " \"make you feel that you're not real\",\n", + " 'all this time, walk out',\n", + " 'out of the shadows',\n", + " 'if we take our strength',\n", + " 'to market, to trade',\n", + " 'for their',\n", + " 'ugly beauty',\n", + " 'watch us grow up to war',\n", + " 'watch us grow up to war',\n", + " 'watch us grow up to war',\n", + " 'watch us grow up to war',\n", + " 'watch us grow up to war',\n", + " 'no more!',\n", + " 'i was hot',\n", + " 'i went to parties a lot',\n", + " '(spoken)',\n", + " \"y'know?\",\n", + " '(sung)',\n", + " 'i was driving lamborghinis',\n", + " 'sipping super-dry martinis',\n", + " 'in the tiniest bikinis on a yacht',\n", + " 'but i was depressed',\n", + " 'oh so completely obsessed',\n", + " 'an unhappy beauty queen',\n", + " 'who dreamed to be miss argentina',\n", + " 'i had such low self-esteem',\n", + " 'i was a mess',\n", + " 'so i gave it all up for the netherworld',\n", + " \"i've been here forever, girl\",\n", + " 'if i was more clever, girl',\n", + " \"i would've stuck it out\",\n", + " \"knowing what life's about\",\n", + " 'pain and joy and suffering',\n", + " 'failing but recovering',\n", + " \"i'll tell you another thing\",\n", + " 'everyone here is alone',\n", + " 'so if you are breathing',\n", + " 'go home!',\n", + " 'if i knew then',\n", + " 'what i know now',\n", + " 'i would have looked within and let love in somehow',\n", + " 'if i only knew',\n", + " 'the truth back then',\n", + " 'i wouldn\\'t have had my little \"accident\"',\n", + " \"don't be blind\",\n", + " 'you left your whole life behind',\n", + " 'see a shrink',\n", + " 'call a priest',\n", + " 'ask the recently deceased',\n", + " 'death is final and you cannot press rewind',\n", + " \"don't jump when the light is red\",\n", + " 'toasters should be used for bread',\n", + " 'never smoke cigars in bed',\n", + " \"nietzsche was right, y'know, to live is to suffer, bro\",\n", + " \"don't cheat on the one you wed\",\n", + " 'never whip a thoroughbred',\n", + " 'angry pygmies shrunk his head',\n", + " 'why did it take death to see',\n", + " 'happiness was up to me?',\n", + " 'if i knew then',\n", + " 'what i know now',\n", + " \"i would've laughed and danced\",\n", + " 'and lanced every sacred cow',\n", + " 'i thought i knew',\n", + " 'but i was wrong',\n", + " \"'cause life is short\",\n", + " 'but death is super long',\n", + " 'i exploded!',\n", + " 'if i knew then',\n", + " '(if i knew)',\n", + " 'what i know now',\n", + " \"i would've crossed every line\",\n", + " 'and drank all the wine',\n", + " 'before my final bow',\n", + " 'if i knew (if i knew)',\n", + " 'the things that now i know',\n", + " 'i would ride the highs and cherish the lows',\n", + " \"knowing it's a quick trick 'round the rodeo\",\n", + " 'so before they lower the curtain, be certain to enjoy the show',\n", + " \"that's what i know!\",\n", + " 'life is short but death is long',\n", + " \"here, one minute then it's gone\",\n", + " 'thought i knew but i was wrong',\n", + " 'if i only knew what i know now!',\n", + " 'in between',\n", + " 'wools and weaves',\n", + " 'knots and ties',\n", + " 'unhinged eyes',\n", + " 'constantly',\n", + " 'panicky',\n", + " \"he's hunting me\",\n", + " 'fa, la, la, la',\n", + " 'quite quieter than spiders',\n", + " 'either one',\n", + " 'none will numb',\n", + " 'what to use',\n", + " 'to misuse?',\n", + " 'walls to climb',\n", + " 'fangs to hide',\n", + " 'immobilize',\n", + " 'and i remember each hang',\n", + " 'with decent clarity for me',\n", + " 'the foods we ate the songs we jammed',\n", + " 'the people in the street',\n", + " \"the the times that we'd touch\",\n", + " 'almost always accidents',\n", + " 'but to share a hammock with you girl',\n", + " 'it leaves my heart content',\n", + " \"so i'm sorry that once\",\n", + " 'when you tried to hold my hand',\n", + " 'i knew you meant it friendly',\n", + " 'but i could not mean it friendly',\n", + " 'no i wanted it real',\n", + " \"so i bailed i couldn't deal\",\n", + " 'and i wished to ditch the part of me',\n", + " 'that knew how you made me feel',\n", + " 'but then i thought better',\n", + " 'instead i just wished that you',\n", + " 'would split in two so i could date you too',\n", + " \"but 'til my wish comes true what do i do?\",\n", + " \"i think i'll keep them\",\n", + " 'i think i have to hold my feelings',\n", + " \"cause your boyfriend rules and i'm just a fool\",\n", + " 'who shows up every 2 months',\n", + " 'so can i freaking chill once?',\n", + " 'i think my dreams could be enough',\n", + " 'to be the band i always wanted',\n", + " 'fall in love with everything',\n", + " 'and run this awesome road',\n", + " \"'ti my legs give out\",\n", + " 'cause i was born to rage on stage girl',\n", + " \"it's the one thing i'm sure about\",\n", + " 'but just know that when the distance gets me',\n", + " 'i recall when you were with me',\n", + " 'the drive in movies, forts we built',\n", + " \"and blasting drake 'til our hearts filled\",\n", + " 'oh what more could i need?',\n", + " 'i love every single moment i got to receive',\n", + " 'oh forgive me if i was distant after that',\n", + " \"i've never been a boy who can give only half\",\n", + " 'i could feel us getting closer with each day',\n", + " \"i was so tired of being selfish i couldn't remain\",\n", + " \"there were so many times i didn't text you\",\n", + " 'to tell you how bad i missed you',\n", + " 'knowing you is the best dream',\n", + " \"oh darling you're cake and ice cream\",\n", + " 'i know everything for all that i know',\n", + " \"but there's always two sides to the way to the bulk of the stories go\",\n", + " 'sometimes things better off less spoken, should be shouted, written down & quoted',\n", + " \"these hands can't hold the time\",\n", + " \"better use them wisely while they're still all mine\",\n", + " 'hold on and hope for the best',\n", + " 'hold on and hope for the best',\n", + " \"seems like a voices that'll sing to me\",\n", + " \"all come here through to tell me the things i couldn't see\",\n", + " \"when my eyes have woken to the things i've broken\",\n", + " \"i'll be gone distracted by something else\",\n", + " \"these hands can't hold the time\",\n", + " \"better use them wisely while they're still all mine\",\n", + " 'hold on and hope for the best',\n", + " 'hold on and hope for the best',\n", + " \"think i'll pause here awhile instead\",\n", + " \"to reflect on what i've done and the things i never said\",\n", + " \"and when i'm good and acquainted with the problem\",\n", + " \"i'll continue down the way that i started\",\n", + " \"these hands can't hold the time\",\n", + " \"better use them wisely while they're still all mine\",\n", + " 'hold on and hope for the best',\n", + " 'hold on and hope for the best',\n", + " 'blood money money by all means',\n", + " 'instead of 2p call me young triple beam',\n", + " 'got fishscale got oil base',\n", + " 'lawyer paid up in case i catch a sell case',\n", + " \"nah i ain't stuntin' them crackas\",\n", + " 'magician with the work call it dope boy magic',\n", + " \"dey he go stuntin' again\",\n", + " 'top laid back put the dro in the wind',\n", + " \"oh did i mention i was shinin'\",\n", + " 'blue, white, yellow, black',\n", + " 'pink diamonds (you already know)',\n", + " 'that my favorite line',\n", + " 'if your shit shined like mine',\n", + " \"you'd say it everytime\",\n", + " 'frostbit neck, and my wrist froze',\n", + " 'you can see my damn watch with your eyes closed',\n", + " 'blue, white, yellow, black, pink diamonds',\n", + " 'shawty shinnin, still grindin',\n", + " \"i know they watchin'\",\n", + " 'i pose for the photograph',\n", + " 'those indictment papers',\n", + " 'hope you want my autograph',\n", + " \"we don't trip, we just live life\",\n", + " 'trying to dodge them handcuffs',\n", + " 'and them blue lights',\n", + " 'frostbit neck and my wrist froze',\n", + " 'you can see my damn watch with your eyes closed',\n", + " 'ask them hoes, with the extra blow',\n", + " 'the nigga with the louie luggage down in mexico',\n", + " 'in a a-town fitted cap',\n", + " \"i'm so hot tower\",\n", + " 'i think i need a thermostat',\n", + " 'give a fuck about a player hater',\n", + " 'hit him with the tool, flush his whole radiator',\n", + " \"i'm 24,with 24 figures\",\n", + " '24 triggers, 24 inches',\n", + " \"but i keep 'em clean\",\n", + " 'so they pass for sixes',\n", + " \"stunnin' on you pussy ass niggas\",\n", + " \"72' dope rally straight shoot pass you in it\",\n", + " 'flat screens',\n", + " \", 18's, i don't hear shit\",\n", + " 'pocket full of stones',\n", + " \"i got 'em beatin' strong threw my speakers bitch\",\n", + " 'young boss shit',\n", + " \"oh you didn't hear 4th generation\",\n", + " 'my grand daddy used to sell birds',\n", + " 'who am i to fuck tradition up',\n", + " 'i got my ass in the kitchen',\n", + " 'water whip me bently chip',\n", + " '200k off my block bitch',\n", + " \"i know you thinkin' rap\",\n", + " \"i'm thinkin' laundry mat\",\n", + " 'clean money homie',\n", + " 'stop all this talk, turn off the telephone',\n", + " 'open up another bottle, send those people home',\n", + " 'let it get real quiet, turn that lamp way down low',\n", + " \"i'm gonna float down this river of tears\",\n", + " 'i remember how we spoke on the days he was dry',\n", + " \"even now that he's gone he can make a woman cry\",\n", + " 'but he saw through me deaf dumb and blind',\n", + " 'he knew his way down this river of tears',\n", + " '\"dashed hopes and best intentions\" people say',\n", + " 'he could sit and drink the way a monk could pray',\n", + " 'so grab that silver flask, pour yourself another glass and',\n", + " 'watch me rage down this river of tears',\n", + " 'turn out the stars now, darken every one',\n", + " 'watch the clouds cover that big yellow moon',\n", + " 'close the blinds, mute the sun',\n", + " \"there's nowhere left to run\",\n", + " 'picked up that old decanter that he used to drink from',\n", + " 'turned on his stereo just to hear it hum',\n", + " \"daddy i'm gonna wrap myself in blankets and listen to you sing\",\n", + " \"and i'm gonna float down this river of tears\",\n", + " 'came to the city,',\n", + " 'came in your circle and you wrote my thoughts.',\n", + " 'sex on the bits and sex on the streets,',\n", + " 'what you take me for,',\n", + " 'i should have known.',\n", + " 'you give me work until later by later,',\n", + " 'you changed my mind',\n", + " 'i should have known',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'maybe you smile everytime i cry.',\n", + " \"what's your problem, you have problem with me?\",\n", + " 'it makes you stronger,',\n", + " 'when i am in (your) bed with.',\n", + " 'when i am in (your) bed with.',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'mix on the bid and sex in the streets,',\n", + " 'what you take me for,',\n", + " 'i should have known.',\n", + " 'you give me work until later by later,',\n", + " 'you changed my mind,',\n", + " 'i should have known.',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'maybe you smile everytime i cry.',\n", + " \"what's your problem, you have problem with me?\",\n", + " 'it makes you stronger,',\n", + " 'when i am in (your) bed with.',\n", + " 'when i am in (your) bed with.',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'fall in the water,',\n", + " 'you keep me down.',\n", + " 'oh life is bigger, bigger than you',\n", + " 'and you are not me',\n", + " 'the lengths that i would go to',\n", + " 'the distance in your eyes',\n", + " \"oh no i've said too much\",\n", + " 'i said it all',\n", + " 'that’s me in the corner',\n", + " 'that’s me in the spotlight',\n", + " 'losing my religion',\n", + " 'trying to keep up with you',\n", + " 'and i don’t if i could do it',\n", + " \"oh no i've said too much\",\n", + " 'haven’t said enough',\n", + " 'i thought that i heard you laughing',\n", + " 'i thought that i heard you sing',\n", + " 'i think i thought i saw you try',\n", + " 'every whisper of every waking hour',\n", + " \"i'm choosing my confessions\",\n", + " 'trying to keep an eye on you',\n", + " 'like a hurt, lost and blinded fool',\n", + " \"oh no i've said too much\",\n", + " 'i said it all',\n", + " 'consider this',\n", + " 'consider this the hint of the century',\n", + " 'consider this',\n", + " 'the slip, that brought me to my knees, failed',\n", + " 'what if all these fantasies all flaring round',\n", + " \"and now i've said, way too much\",\n", + " 'i thought that i heard you laughing',\n", + " 'i thought that i heard you sing',\n", + " 'i think i thought i saw you try',\n", + " 'wa da da daaa da da daa dum',\n", + " 'wa da da daaa da da daa dum',\n", + " 'wa da da daaa da da daa dum',\n", + " 'but that was just a dream',\n", + " 'trying crying while trying',\n", + " 'that was just a dream',\n", + " 'it was just a dream it was just a dream',\n", + " 'dream that was just a dream',\n", + " 'trying crying while trying',\n", + " 'that was just a dream',\n", + " 'it was just a dream it was just a dream',\n", + " 'dream',\n", + " 'wa da da daaa da da daa dum',\n", + " 'wa da da daaa da da daa dum',\n", + " 'wa da da daaa da da daa dum',\n", + " 'wa da da daaa da da daa dum',\n", + " 'wa da da daaa da da daa dum',\n", + " 'wa da da daaa da da daa dum',\n", + " 'it was just a dream',\n", + " 'now here come the counteraction to',\n", + " \"don't be like the blasted bagiboo\",\n", + " 'i yellow man deal with special request to you',\n", + " 'and you and god knows who',\n", + " 'do it jah',\n", + " \"ca me chi gon' to tell you about shirt and blouses\",\n", + " 'me a go tell you why the girls wear shorties',\n", + " 'they want yellow man to see their legs-es',\n", + " 'the other time i see those creases',\n", + " 'but when the breeze blow it exposes',\n", + " 'the other time me have to cock up me noses',\n", + " 'cause it full of diseases, man it full of diseases',\n", + " 'worser than the pink eye diseases',\n", + " \"some of dem don't mind their own business\",\n", + " 'just a watch what yellow man wears-es',\n", + " \"them say me don't wear up the trousers\",\n", + " 'everyday me a dress up in a sweatsuit',\n", + " 'also bobby sock and track shoes-es',\n", + " 'the other time they say it expensive',\n", + " 'like me garment also me jewelry',\n", + " 'you fe mind your own business',\n", + " 'before me wet you with a guinness',\n", + " 'you fe mind your own business',\n", + " 'before me wet you with a guinness',\n", + " 'through certain circumstances',\n", + " 'people have to pay up the taxes',\n", + " 'to pay all the soldier and polices',\n", + " 'to pave all roads and houses',\n", + " 'to pay all the doctors and nurses',\n", + " 'me no fear fe chat this pon aces',\n", + " 'you fe mind your own business',\n", + " 'me will wet you with a guinness',\n", + " 'you fe mind your own business',\n", + " 'me will wet you with a guinness',\n", + " 'some of them talk about a eases and squeezes',\n", + " 'what about the hugging and kisses',\n", + " 'i gonna tell you bout the boys and girls-es',\n", + " 'when them go to school have sex in the classes',\n", + " 'some of dem they also watches',\n", + " 'some of dem they carry pure newses',\n", + " 'are some of dem they chat their umm',\n", + " \"it's the eases and squeezes\",\n", + " \"it's the eases and squeezes\",\n", + " 'what about the hugging and kissing',\n", + " 'me no fraid fe chat upon aces',\n", + " 'through certain circumstances',\n", + " 'nuff of them come from white horses',\n", + " 'some of them come listen me at aces',\n", + " 'and when me chat them a wind up their waist-es',\n", + " 'some of dem just come to watches',\n", + " 'they watch what me and fathead we wears-es',\n", + " \"and some of dem say we don't wear trousers\",\n", + " 'everyday we dress up in a track shoes-es',\n", + " \"it's the eases and squeezes\",\n", + " 'you fe mind your own business',\n", + " 'before me wet you with a guinness',\n", + " 'god sent the gentle breezes',\n", + " 'that blow through the trees-es',\n", + " 'and lift up the young girls-es dresses',\n", + " 'and lift it up above their kneeses',\n", + " 'and so that yellow man sees-es',\n", + " 'that thing between their legs-es',\n", + " 'and them we have little sex in the bushes',\n", + " 'some of dem roll out the wrath of moses',\n", + " 'the other time we push it through those creases',\n", + " 'some time they give us diseases',\n", + " 'some time they give us diseases',\n", + " 'only can cure by doctors and nurses',\n", + " 'this are the eases and squeezes',\n", + " 'ya the the eases and squeezes',\n", + " 'well you fe mind your own business',\n", + " 'you fe mind your own business',\n", + " 'through certain circumstances',\n", + " 'people a pay up the taxes',\n", + " 'to pay all the doctors and nurses',\n", + " 'to pay all soldier and police-es',\n", + " 'to build roads, street and houses',\n", + " 'you fe mind your own business',\n", + " 'jah will lick you with diseases',\n", + " 'worses than the pink eye diseases',\n", + " 'this are the eases and squeezes.',\n", + " 'god sent the gentle voices',\n", + " \"that's yellow man started deejays-es\",\n", + " 'and all the girls dem pleases',\n", + " 'this are the eases and squeezes',\n", + " 'this are the eases and squeezes',\n", + " 'me a go tell why they wear up the shorts-es',\n", + " 'they want yellow man to see their legs-es',\n", + " 'the other time i see those creases',\n", + " 'but when the breeze started to blows-es',\n", + " 'the other time it start exposes',\n", + " 'me have to cock up all me noses',\n", + " \"and i like your hair, but they're\",\n", + " 'pulling it out from the furniture.',\n", + " 'you left the lake on a lighter note,',\n", + " 'but i could tell you were crying home.',\n", + " 'and i felt different lying on the sand',\n", + " 'while you washed out.',\n", + " 'you pulled my foot to let the water rush',\n", + " 'around my chest.',\n", + " 'all you ever wanted to do was prove me wrong.',\n", + " 'all you ever wanted to do was prove me wrong.',\n", + " \"and i'll hold your hair, but you're\",\n", + " 'throwing up all on the furniture.',\n", + " 'you pulled my shirt off alone again,',\n", + " 'but i could tell you were caving in.',\n", + " 'it would almost seem that the gitanos and gitanas, or male and female gipsies, had been sent into the world for the sole purpose of thieving. born of parents who are thieves, reared among thieves, and educated as thieves, they finally go forth perfected in their vocation, accomplished at all points, and ready for every species of roguery. in them the love of thieving, and the ability to exercise it, are qualities inseparable from their existence, and never lost until the hour of their death.',\n", + " 'now it chanced that an old woman of this race, one who had merited retirement on full pay as a veteran in the ranks of cacus, brought up a girl whom she called preciosa, and declared to be her granddaughter. to this child she imparted all her own acquirements, all the various tricks of her art. little preciosa became the most admired dancer in all the tribes of gipsydom; she was the most beautiful and discreet of all their maidens; nay she shone conspicuous not only among the gipsies, but even as compared with the most lovely and accomplished damsels whose praises were at that time sounded forth by the voice of fame. neither sun, nor wind, nor all those vicissitudes of weather, to which the gipsies are more constantly exposed than any other people, could impair the bloom of her complexion or embrown her hands; and what is more remarkable, the rude manner in which she was reared only served to reveal that she must have sprung from something better than the gitano stock; for she was extremely pleasing and courteous in conversation, and lively though she was, yet in no wise did she display the least unseemly levity; on the contrary, amidst all her sprightliness, there was at the same time so much genuine decorum in her manner, that in the presence of preciosa no gitana, old or young, ever dared to sing lascivious songs, or utter unbecoming words.',\n", + " 'the grandmother fully perceived what a treasure she had in her grandchild; and the old eagle determined to set her young eaglet flying, having been careful to teach her how to live by her talons. preciosa was rich in hymns, ballads, seguidillas, sarabands, and other ditties, especially romances, which she sang with peculiar grace; for the cunning grandmother knew by experience that such accomplishments, added to the youth and beauty of her granddaughter, were the best means of increasing her capital, and therefore she failed not to promote their cultivation in every way she could. nor was the aid of poets wanting; for some there are who do not disdain to write for the gipsies, as there are those who invent miracles for the pretended blind, and go snacks with them in what they gain from charitable believers.',\n", + " 'during her childhood, preciosa lived in different parts of castile; but in her sixteenth year her grandmother brought her to madrid, to the usual camping-ground of the gipsies, in the fields of santa barbara. madrid seemed to her the most likely place to find customers; for there everything is bought and sold. preciosa made her first appearance in the capital on the festival of santa anna, the patroness of the city, when she took part in a dance performed by eight gitanas, with one gitano, an excellent dancer, to lead them. the others were all very well, but such was the elegance of preciosa, that she fascinated the eyes of all the spectators. amidst the sound of the tambourine and castanets, in the heat of the dance, a murmur of admiration arose for the beauty and grace of preciosa; but when they heard her sing—for the dance was accompanied with song—the fame of the gitana reached its highest point; and by common consent the jewel offered as the prize of the best dancer in that festival was adjudged to her. after the usual dance in the church of santa maria, before the image of the glorious santa anna, preciosa caught up a tambourine, well furnished with bells, and having cleared a wide circle around her with pirouettes of exceeding lightness, she sang a hymn to the patroness of the day. it was the admiration of all who heard her. some said, \"god bless the girl!\" others, \"\\'tis a pity that this maiden is a gitana: truly she deserves to be the daughter of some great lord!\" others more coarsely observed, \"let the wench grow up, and she will show you pretty tricks; she is closing the meshes of a very nice net to fish for hearts.\" another more good-natured but ill-bred and stupid, seeing her foot it so lightly, \"keep it up! keep it up! courage, darling! grind the dust to atoms!\" \"never fear,\" she answered, without losing a step; \"i\\'ll grind it to atoms.\"',\n", + " 'at the vespers and feast of santa anna preciosa was somewhat fatigued; but so celebrated had she become for beauty, wit, and discretion, as well as for her dancing, that nothing else was talked of throughout the capital. a fortnight afterwards, she returned to madrid, with three other girls, provided with their tambourines and a new dance, besides a new stock of romances and songs, but all of a moral character; for preciosa would never permit those in her company to sing immodest songs, nor would she ever sing them herself. the old gitana came with her, for she now watched her as closely as argus, and never left her side, lest some one should carry her off. she called her granddaughter, and the girl believed herself to be her grandchild.',\n", + " 'the young gitanas began their dance in the shade, in the calle de toledo, and were soon encircled by a crowd of spectators. whilst they danced, the old woman gathered money among the bystanders, and they showered it down like stones on the highway; for beauty has such power that it can awaken slumbering charity. the dance over, preciosa said, \"if you will give me four quartos, i will sing by myself a beautiful romance about the churching of our lady the queen doña margarita. it is a famous composition, by a poet of renown, one who may be called a captain in the battalion of poets.\" no sooner had she said this, than almost every one in the ring cried out, \"sing it, preciosa; here are my four quartos;\" and so many quartos were thrown down for her, that the old gitana had not hands enough to pick them up. when the gathering was ended, preciosa resumed her tambourine, and sang the promised romance, which was loudly encored, the whole audience crying out with one voice, \"sing again, preciosa, sing again, and dance for us, girl: thou shalt not want quartos, whilst thou hast the ground beneath thy feet.\"',\n", + " 'whilst more than two hundred persons were thus looking on at the dance, and listening to the singing of the gitana, one of the lieutenants of the city passed by; and seeing so many people together, he asked what was the occasion of the crowd. being told that the handsome gitana was singing there, the lieutenant, who was not without curiosity, drew near also to listen, but in consideration of his dignity, he did not wait for the end of the romance. the gitanilla, however, pleased him so much, that he sent his page to tell the old crone to come to his house that evening with her troop, as he wished his wife doña clara to hear them. the page delivered the message, and the old gitana promised to attend.',\n", + " 'after the performance was ended, and the performers were going elsewhere, a very well-dressed page came up to preciosa, and giving her a folded paper, said, \"pretty preciosa, will you sing this romance? it is a very good one, and i will give you others from time to time, by which you will acquire the fame of having the best romances in the world.\"',\n", + " '\"i will learn this one with much willingness,\" replied preciosa; \"and be sure, señor, you bring me the others you speak of, but on condition that there is nothing improper in them. if you wish to be paid for them, we will agree for them by the dozen; but do not expect to be paid in advance; that will be impossible. when a dozen have been sung, the money for a dozen shall be forthcoming.\"',\n", + " '\"if the señora preciosa only pays me for the paper,\" said the page, \"i shall be content. moreover, any romance which does not turn out so well shall not be counted.\"',\n", + " '\"i will retain the right of choice,\" said preciosa; and then she continued her way with her companions up the street, when some gentlemen called and beckoned to them from a latticed window. preciosa went up and looked through the window, which was near the ground, into a cheerful, well-furnished apartment, in which several cavaliers were walking about, and others playing at various games. \"will you give me a share of your winnings, señors?\" said preciosa, in the lisping accent of the gipsies, which she spoke not by nature but from choice. at the sight of preciosa, and at the sound of her voice, the players quitted the tables, the rest left off lounging, and all thronged to the window, for her fame had already reached them. \"come in! let the little gipsies come in,\" said the cavaliers, gaily; \"we will certainly give them a share of our winnings.\"',\n", + " '\"but you might make it cost us dear, señors,\" said preciosa.',\n", + " '\"no, on the honour of gentlemen,\" said one, \"you may come in, niña, in full security that no one will touch the sole of your shoe. i swear this to you by the order i wear on my breast;\" and as he spoke he laid his hand on the cross of the order of calatrava which he wore.',\n", + " '\"if you like to go in, preciosa,\" said one of the gitanillas who were with her, \"do so by all means; but i do not choose to go where there are so many men.\"',\n", + " '\"look you, christina,\" answered preciosa, \"what you have to beware of is one man alone; where there are so many there is nothing to fear. of one thing you may be sure, christina; the woman who is resolved to be upright may be so amongst an army of soldiers. it is well, indeed, to avoid occasions of temptation, but it is not in crowded rooms like this that danger lurks.\"',\n", + " '\"well then, let us go in, preciosa,\" said her companion, \"you know more than a witch.\"',\n", + " 'the old gipsy also encouraged them to go in, and that decided the question. as soon as they had entered the room, the cavalier of the order, seeing the paper which preciosa carried, stretched out his hand to take it. \"do not take it from me,\" she said: \"it is a romance but just given to me, and which i have not yet had time to read.\"',\n", + " '\"and do you know how to read, my girl?\" said one of the cavaliers.',\n", + " '\"ay, and to write too,\" said the old woman. \"i have brought up my grandchild as if she was a lawyer\\'s daughter.\"',\n", + " 'the cavalier opened the paper, and finding a gold crown inclosed in it, said, \"truly, preciosa, the contents of this letter are worth the postage. here is a crown inclosed in the romance.\"',\n", + " '\"the poet has treated me like a beggar,\" said preciosa; \"but it is certainly a greater marvel for one of his trade to give a crown than for one of mine to receive it. if his romances come to me with this addition, he may transscribe the whole romancero general and send me every piece in it one by one. i will weigh their merit; and if i find there is good matter in them, i will not reject them. read the paper aloud, señor, that we may see if the poet is as wise as he is liberal.\" the cavalier accordingly read as follows:—',\n", + " \"sweet gipsy girl, whom envy's self\",\n", + " 'must own of all fair maids the fairest,',\n", + " 'ah! well befits thy stony heart',\n", + " 'the name thou, preciosa,',\n", + " 'bearest.',\n", + " 'if as in beauty, so in pride',\n", + " 'and cruelty thou grow to sight,',\n", + " 'woe worth the land, woe worth the age',\n", + " 'which brought thy fatal charms to light.',\n", + " 'a basilisk in thee we see,',\n", + " 'which fascinates our gaze and kills.',\n", + " 'no empire mild is thine, but one',\n", + " \"that tyrannises o'er our wills.\",\n", + " \"how grew such charms 'mid gipsy tribes,\",\n", + " 'from roughest blasts without a shield?',\n", + " 'how such a perfect chrysolite',\n", + " 'could humble manzanares yield?',\n", + " 'river, for this thou shalt be famed,',\n", + " 'like tagus with its golden show,',\n", + " 'and more for preciosa prized',\n", + " 'than ganges with its lavish flow.',\n", + " 'in telling fortunes who can say',\n", + " 'what dupes to ruin thou beguilest?',\n", + " \"good luck thou speak'st with smiling lips.\",\n", + " 'but luckless they on whom thou smilest!',\n", + " \"tis said they're witches every one,\",\n", + " 'the women of the gipsy race;',\n", + " 'and all men may too plainly see',\n", + " 'that thou hast witchcraft in thy face.',\n", + " 'a thousand different modes are thine',\n", + " 'to turn the brain; for rest or move,',\n", + " 'speak, sing, be mute, approach, retire,',\n", + " 'thou kindlest still the fire of love.',\n", + " 'the freest hearts bend to thy sway,',\n", + " 'and lose the pride of liberty;',\n", + " 'bear witness mine, thy captive thrall,',\n", + " 'which would not, if it could, be free.',\n", + " 'these lines, thou precious gem of love,',\n", + " 'whose praise all power of verse transcend,',\n", + " 'he who for thee will live or die,',\n", + " 'thy poor and humble lover sends.',\n", + " '\"the poem ends with \\'poor\\' in the last line,\" said preciosa; \"and that is a bad sign. lovers should never begin by saying that they are poor, for poverty, it strikes me, is a great enemy to love.\"',\n", + " '\"who teaches you these things, girl?\" said one of the cavaliers.',\n", + " '\"who should teach me?\" she replied. \"have i not a soul in my body? am i not fifteen years of age? i am neither lame, nor halt, nor maimed in my understanding. the wit of a gipsy girl steers by a different compass from that which guides other people. they are always forward for their years. there is no such thing as a stupid gitano, or a silly gitana. since it is only by being sharp and ready that they can earn a livelihood, they polish their wits at every step, and by no means let the moss grow under their feet. you see these girls, my companions, who are so silent. you may think they are simpletons, but put your fingers in their mouths to see if they have cut their wise teeth; and then you shall see what you shall see. there is not a gipsy girl of twelve who does not know as much as one of another race at five-and-twenty, for they have the devil and much practice for instructors, so that they learn in one hour what would otherwise take them a year.\"',\n", + " 'the company were much amused by the gitana\\'s chat, and all gave her money. the old woman sacked thirty reals, and went off with her flock as merry as a cricket to the house of the señor lieutenant, after promising that she would return with them another day to please such liberal gentlemen. doña clara, the lieutenant\\'s lady, had been apprised of the intended visit of the gipsies, and she and her doncellas and dueñas, as well as those of another señora, her neighbour, were expecting them as eagerly as one looks for a shower in may. they had come to see preciosa. she entered with her companions, shining among them like a torch among lesser lights, and all the ladies pressed towards her. some kissed her, some gazed at her; others blessed her sweet face, others her graceful carriage. \"this, indeed, is what you may call golden hair,\" cried doña clara; \"these are truly emerald eyes.\" the señora, her neighbour, examined the gitanilla piecemeal. she made a pepetoria of all her joints and members, and coming at last to a dimple in her chin, she said, \"oh, what a dimple! it is a pit into which all eyes that behold it must fall.\" thereupon an esquire in attendance on doña clara, an elderly gentleman with a long beard, exclaimed, \"call you this a dimple, señora? i know little of dimples then if this be one. it is no dimple, but a grave of living desires. i vow to god the gitanilla is such a dainty creature, she could not be better if she was made of silver or sugar paste. do you know how to tell fortunes, niña?\"',\n", + " '\"that i do, and in three or four different manners,\" replied preciosa.',\n", + " '\"you can do that too?\" exclaimed doña clara. \"by the life of my lord the lieutenant, you must tell me mine, niña of gold, niña of silver, niña of pearls, niña of carbuncles, niña of heaven, and more than that cannot be said.\"',\n", + " '\"give the niña the palm of your hand, señora, and something to cross it with,\" said the old gipsy; \"and you will see what things she will tell you, for she knows more than a doctor of medicine.\"',\n", + " 'the señora tenienta put her hand in her pocket, but found it empty; she asked for the loan of a quarto from her maids, but none of them had one, neither had the señora her neighbour. preciosa seeing this, said, \"for the matter of crosses all are good, but those made with silver or gold are best. as for making the sign of the cross with copper money, that, ladies, you must know lessens the luck, at least it does mine. i always like to begin by crossing the palm with a good gold crown, or a piece of eight, or at least a quarto, for, i am like the sacristans who rejoice when there is a good collection.\"',\n", + " '\"how witty you are,\" said the lady visitor; then turning to the squire, \"do you happen to have a quarto about you, señor contreras? if you have, give it me, and when my husband the doctor comes you shall have it again.\"',\n", + " '\"i have one,\" replied contreras, \"but it is pledged for two-and-twenty maravedis for my supper; give me so much and i will fly to fetch it.\"',\n", + " '\"we have not a quarto amongst us all,\" said doña clara, \"and you ask for two-and-twenty maravedis? go your ways, contreras, for a tiresome blockhead, as you always were.\"',\n", + " 'one of the damsels present, seeing the penury of the house, said to preciosa, \"niña, will it be of any use to make the cross with a silver thimble?\"',\n", + " '\"certainly,\" said preciosa; \"the best crosses in the world are made with silver thimbles, provided there are plenty of them.\"',\n", + " '\"i have one,\" said the doncella; \"if that is enough, here it is, on condition that my fortune be told too.\"',\n", + " '\"so many fortunes to be told for a thimble!\" exclaimed the old gipsy. \"make haste, granddaughter, for it will soon be night.\" preciosa took the thimble, and began her sooth saying.',\n", + " 'pretty lady, pretty lady,',\n", + " 'with a hand as silver fair,',\n", + " 'how thy husband dearly loves thee',\n", + " \"'tis superfluous to declare.\",\n", + " \"thou'rt a dove, all milk of kindness;\",\n", + " 'yet at times too thou canst be',\n", + " 'wrathful as a tiger, or a',\n", + " 'lioness of barbary.',\n", + " 'thou canst show thy teeth when jealous;',\n", + " \"truly the lieutenant's sly;\",\n", + " 'loves with furtive sports to vary',\n", + " 'magisterial gravity.',\n", + " 'what a pity! one worth having',\n", + " \"woo'd thee when a maiden fair.\",\n", + " 'plague upon all interlopers!',\n", + " \"you'd have made a charming pair.\",\n", + " 'sooth, i do not like to say it,',\n", + " 'yet it may as well be said;',\n", + " 'thou wilt be a buxom widow;',\n", + " 'twice again shalt thou be wed.',\n", + " 'do not weep, my sweet senora;',\n", + " 'we gitanas, you must know,',\n", + " 'speak not always true as gospel',\n", + " 'weep not then sweet lady so.',\n", + " 'if the thought is too distressing,',\n", + " 'losing such a tender mate,',\n", + " 'thou hast but to die before him,',\n", + " \"to escape a widow's fate.\",\n", + " \"wealth abundant thou'lt inherit,\",\n", + " 'and that quickly, never fear:',\n", + " 'thou shalt have a son, a canon,',\n", + " '—of what church does not appear;',\n", + " \"not toledo; no, that can't be;\",\n", + " 'and a daughter—let me see—',\n", + " \"ay, she'll rise to be an abbess;\",\n", + " '—that is, if a nun she be.',\n", + " 'if thy husband do not drop off',\n", + " 'from this moment in weeks four,',\n", + " 'burgos him, or salamanca,',\n", + " 'shall behold corregidor.',\n", + " 'meanwhile keep thyself from tripping:',\n", + " 'where thou walkest, many a snare',\n", + " 'for the feet of pretty ladies',\n", + " 'naughty gallants lay: beware!',\n", + " 'other things still more surprising',\n", + " 'shall on friday next be told,',\n", + " 'things to startle and delight thee,',\n", + " \"when i've crossed thy palm with gold.\",\n", + " 'preciosa having finished this oracular descant for the lady of the house, the rest of the company were all eager to have their fortunes told likewise, but she put them off till the next friday, when they promised to have silver coin ready for crossing their palms. the señor lieutenant now came in, and heard a glowing account of the charms and accomplishments of the leading gitana. having made her and her companions dance a little, he emphatically confirmed the encomiums bestowed on preciosa; and putting his hand in his pocket he groped and rummaged about in it for a while, but at last drew his hand out empty, saying, \"upon my life i have not a doit. give preciosa a real, doña clara; i will give it you by and by.\"',\n", + " '\"that is all very well, señor,\" the lady replied; \"but where is the real to come from? amongst us all we could not find a quarto to cross our hands with.\"',\n", + " '\"well, give her some trinket or another, that preciosa may come another day to see us, when we will treat her better.\"',\n", + " '\"no,\" said doña clara, \"i will give her nothing to-day, and i shall be sure she will come again.\"',\n", + " '\"on the contrary,\" said preciosa, \"if you give me nothing. i will never come here any more. sell justice, señor lieutenant, sell justice, and then you will have money. do not introduce new customs, but do as other magistrates do, or you will die of hunger. look you, señor, i have heard say that money enough may be made of one\\'s office to pay any mulets that may be incurred, and to help one to other appointments.\"',\n", + " '\"so say and do those who have no conscience,\" said the lieutenant; \"but the judge who does his duty will have no mulet to pay; and to have well discharged his office, will be his best help to obtain another.\"',\n", + " '\"your worship speaks like a very saint,\" replied preciosa; \"proceed thus, and we shall snip pieces off your old coats for relics.\"',\n", + " '\"you know a great deal, preciosa,\" said the lieutenant; \"say no more, and i will contrive that their majesties shall see you, for you are fit to be shown to a king.\"',\n", + " '\"they will want me for a court fool,\" said the gitanilla, \"and as i never shall learn the trade, your pains will be all for nothing. if they wanted me for my cleverness, they might have me; but in some palaces fools thrive better than the wise. i am content to be a gitana, and poor, and let heaven dispose of me as it pleases.\"',\n", + " '\"come along, niña,\" said the old gipsy; \"say no more, you have said a great deal already, and know more than i ever taught you. don\\'t put too fine a point to your wit for fear it should get blunted; speak of things suitable to your years; and don\\'t set yourself on the high ropes, lest you should chance to have a fall.\"',\n", + " '\"the deuce is in these gitanas,\" said the delighted lieutenant, as they were taking their leave. the doncella of the thimble stopped them for a moment, saying to preciosa, \"tell me my fortune, or give me back my thimble, for i have not another to work with.\"',\n", + " '\"señora doncella,\" replied preciosa, \"count upon your fortune as if it were already told, and provide yourself with another; or else sew no more gussets until i come again on friday, when i will tell you more fortunes and adventures than you could read in any book of knight errantry.\"',\n", + " 'the gipsies went away, and falling in with numerous workwomen returning from madrid to their villages as usual at the ave maria, they joined company with them, as they always did for the greater security; for the old gipsy lived in perpetual terror lest some one should run away with her granddaughter.',\n", + " 'one morning after this as they were returning to madrid to levy black mail along with other gitanas, in a little valley about five hundred yards from the city, they met a handsome young gentleman richly dressed; his sword and dagger were a blazo of gold; his hat was looped with a jewelled band, and was adorned with plumes of various colours. the gitanas stopped on seeing him, and set themselves to observe his movements at their leisure, wondering much that so fine a cavalier should be alone and on foot in such a place at that early hour. he came up to them, and addressing the eldest gitana, said, \"on your life, friend, i entreat you do me the favour to let me say two words in private to you and preciosa. it shall be for your good.\"',\n", + " '\"with all my heart,\" said the old woman, \"so you do not take us much out of our way, or delay us long;\" and calling preciosa, they withdrew to some twenty paces distance, where they stopped, and the young gentleman thus addressed them: \"i am so subdued by the wit and beauty of preciosa, that after having in vain endeavoured to overcome my admiration, i have at last found the effort impossible. i, señoras (for i shall always give you that title if heaven favours my pretensions), am a knight, as this dress may show you;\" and opening his cloak he displayed the insignia of one of the highest orders in spain; \"i am the son of——\" (here he mentioned a personage whose name we suppress for obvious reasons), \"and am still under tutelage and command. i am an only son, and expect to inherit a considerable estate. my father is here in the capital, looking for a certain post which by all accounts he is on the point of obtaining. being then of the rank and condition which i have declared to you, i should yet wish to be a great lord for the sake of preciosa, that i might raise her up to my own level, and make her my equal and my lady. i do not seek to deceive; the love i bear her is too deep for any kind of deception; i only desire to serve her in whatever way shall be most agreeable to her; her will is mine; for her my heart is wax to be moulded as she pleases but enduring as marble to retain whatever impression she shall make upon it. if you believe me i shall fear no discouragement from any other quarter, but if you doubt me, i shall despond. my name is——; my father\\'s i have already given you; he lives in such a house in such a street and you may inquire about him and me of the neighbours, and of others also; for our name and quality are not so obscure but that you may hear of us about the court, and every, where in the capital. i have here a hundred crowns in gold to present to you, as earnest of what i mean to give you hereafter; for a man will be no niggard of his wealth who has given away his very soul.\"',\n", + " 'whilst the cavalier was speaking, preciosa watched him attentively, and doubtless she saw nothing to dislike either in his language or his person. turning to the old woman, she said, \"pardon me, grandmother, if i take the liberty of answering this enamoured señor myself.\"',\n", + " '\"make whatever answer you please, granddaughter,\" said the old woman, \"for i know you have sense enough for anything.\" so preciosa began.',\n", + " '\"señor cavalier,\" she said, \"though i am but a poor gitana and humbly born, yet i have a certain fantastic little spirit within me, which moves me to great things. promises do not tempt me, nor presents sap my resolution, nor obsequiousness allure, nor amorous wiles ensnare me; and although by my grandmother\\'s reckoning i shall be but fifteen next michaelmas, i am already old in thought, and have more understanding than my years would seem to promise. this may, perhaps, be more from nature than from experience; but be that as it may, i know that the passion of love is an impetuous impulse, which violently distorts the current of the will, makes it dash furiously against all impediments, and recklessly pursue the desired object. but not unfrequently when the lover believes himself on the point of gaining the heaven of his wishes, he falls into the hell of disappointment. or say that the object is obtained, the lover soon becomes wearied of his so much desired treasure, and opening the eyes of his understanding he finds that what before was so devoutly adored is now become abhorrent to him. the fear of such a result inspires me with so great a distrust, that i put no faith in words, and doubt many deeds. one sole jewel i have, which i prize more than life, and that is my virgin purity, which i will not sell for promises or gifts, for sold it would be in that case, and if it could be bought, small indeed would be its value. nor is it to be filched from me by wiles or artifices; rather will i carry it with me to my grave, and perhaps to heaven, than expose it to danger by listening to specious tales and chimeras. it is a flower which nothing should be allowed to sully, even in imagination if it be possible. nip the rose from the spray, and how soon it fades! one touches it, another smells it, a third plucks its leaves, and at last the flower perishes in vulgar hands. if you are come then, señor, for this booty, you shall never bear it away except bound in the ties of wedlock. if you desire to be my spouse, i will be yours; but first there are many conditions to be fulfilled, and many points to be ascertained.',\n", + " '\"in the first place i must know if you are the person you declare yourself to be. next, should i find this to be true, you must straightway quit your father\\'s mansion, and exchange it for our tents, where, assuming the garb of a gipsy, you must pass two years in our schools, during which i shall be able to satisfy myself as to your disposition, and you will become acquainted with mine. at the end of that period, if you are pleased with me and i with you, i will give myself up to you as your wife; but till then i will be your sister and your humble servant, and nothing more. consider, señor, that during the time of this novitiate you may recover your sight, which now seems lost, or at least disordered, and that you may then see fit to shun what now you pursue with so much ardour. you will then be glad to regain your lost liberty, and having done so, you may by sincere repentance obtain pardon of your family for your faults. if on these conditions you are willing to enlist in our ranks, the matter rests in your own hands; but if you fail in any one of them, you shall not touch a finger of mine.\"',\n", + " 'the youth was astounded at preciosa\\'s decision, and remained as if spell-bound, with his eyes bent on the ground, apparently considering what answer he should return. seeing this, preciosa said to him, \"this is not a matter of such light moment that it can or ought to be resolved on the spot. return, señor, to the city, consider maturely what is best for you to do; and you may speak with me in this same place any week-day you please, as we are on our way to or from madrid.\"',\n", + " '\"when heaven disposed me to love you, preciosa,\" replied the cavalier, \"i determined to do for you whatever it might be your will to require of me, though it never entered my thoughts that you would make such a demand as you have now done; but since it is your pleasure that i should comply with it, count me henceforth as a gipsy, and put me to all the trials you desire, you will always find me the same towards you as i now profess myself. fix the time when you will have me change my garb. i will leave my family under pretext of going to flanders, and will bring with me money for my support for some time. in about eight days i shall be able to arrange for my departure, and i will contrive some means to get rid of my attendants, so as to be free to accomplish my purpose. what i would beg of you (if i might make bold to ask any favour) is that, except to-day for the purpose of inquiring about me and my family, you go no more to madrid, for i would not that any of the numerous occasions that present themselves there, should deprive me of the good fortune i prize so dearly.\"',\n", + " '\"not so, señor gallant,\" said preciosa: \"wherever i go i must be free and unfettered; my liberty must not be restrained or encumbered by jealousy. be assured, however, that i will not use it to such excess, but that any one may see from a mile off that my honesty is equal to my freedom. the first charge, therefore, i have to impose upon you is, that you put implicit confidence in me; for lovers who begin by being jealous, are either silly or deficient in confidence.\"',\n", + " '\"you must have satan himself within you, little one,\" said the old gipsy; \"why you talk like a bachelor of salamanca. you know all about love and jealousy and confidence. how is this? you make me look like a fool, and i stand listening to you as to a person possessed, who talks latin without knowing it.\"',\n", + " '\"hold your peace, grandmother,\" replied preciosa; \"and know that all the things you have heard me say are mere trifles to the many greater truths that remain in my breast.\"',\n", + " 'all that preciosa said, and the sound sense she displayed, added fuel to the flame that burned in the breast of the enamoured cavalier. finally, it was arranged that they should meet in the same place on that day sennight, when he would report how matters stood with him, and they would have had time to inquire into the truth of what he had told them. the young gentleman then took out a brocaded purse in which he said there were a hundred gold crowns, and gave it to the old woman; but preciosa would by no means consent that she should take them.',\n", + " '\"hold your tongue, niña,\" said her grandmother; \"the best proof this señor has given of his submission, is in thus having yielded up his arms to us in token of surrender. to give, upon whatever occasion it may be, is always the sign of a generous heart. moreover, i do not choose that the gitanas should lose, through my fault, the reputation they have had for long ages of being greedy of lucre. would you have me lose a hundred crowns, preciosa? a hundred crowns in gold that one may stitch up in the hem of a petticoat not worth two reals, and keep them there as one holds a rent-charge on the pastures of estramadura! suppose that any of our children, grandchildren, or relations should fall by any mischance into the hands of justice, is there any eloquence so sure to touch the ears of the judge as the music of these crowns when they fall into his purse? three times, for three different offences, i have seen myself all but mounted on the ass to be whipped; but once i got myself off by means of a silver mug, another time by a pearl necklace, and the third time with the help of forty pieces of eight, which i exchanged for quartos, throwing twenty reals into the bargain. look you, niña, ours is a very perilous occupation, full of risks and accidents; and there is no defence that affords us more ready shelter and succour than the invincible arms of the great philip: nothing beats the plus ultra. for the two faces of a doubloon, a smile comes over the grim visage of the procurator and of all the other ministers of mischief, who are downright harpies to us poor gitanas, and have more mercy for highway robbers than for our poor hides. let us be ever so ragged and wretched in appearance, they will not believe that we are poor, but say that we are like the doublets of the gavachos of belmont, ragged and greasy and full of doubloons.\"',\n", + " '\"say no more, for heaven\\'s sake, grandmother,\" said preciosa; \"do not string together so many arguments for keeping the money, but keep it, and much good may it do you. i wish to god you would bury it in a grave out of which it may never return to the light, and that there may never be any need of it. we must, however, give some of it to these companions of ours, who must be tired of waiting so long for us.\"',\n", + " '\"they shall see one coin out of this purse as soon as they will see the grand turk,\" the old woman replied. \"the good señor will try if he has any silver coin or a few coppers remaining, to divide amongst them, for they will be content with a little.\"',\n", + " '\"yes, i have,\" he said, and he took from his pocket three pieces of eight which he divided among the gitanas, with which they were more delighted than the manager of a theatre when he is placarded as victor in a contest with a rival. finally it was settled that the party should meet there again in a week, as before mentioned, and that the young man\\'s gipsy name should be andrew caballero, for that was a surname not unknown among the gipsies. andrew (as we shall henceforth call him) could not find courage to embrace preciosa, but darting his very soul into her with a glance, he went away without it, so to speak, and returned to madrid. the gipsies followed soon after; and preciosa, who already felt a certain interest in the handsome and amiable andrew, was anxious to learn if he was really what he said.',\n", + " 'they had not gone far before they met the page of the verses and the gold crown. \"welcome, preciosa,\" he said, coming up to her. \"have you read the lines i gave you the other day?\"',\n", + " '\"before i answer you a word,\" said she, \"you must, by all you love best, tell me one thing truly.\"',\n", + " '\"upon that adjuration,\" he replied, \"i could not refuse an answer to any question, though it should cost me my head.\"',\n", + " '\"well, then, what i want to know is this: are you, perchance, a poet?\"',\n", + " '\"if i were one, it would certainly be perchance,\" said the page; \"but you must know, preciosa, that the name of poet is one which very few deserve. thus i am not a poet, but only a lover of poetry; yet for my own use i do not borrow of others. the verses i gave you were mine, as are these also which i give you now; but i am not a poet for all that—god forbid.\"',\n", + " '\"is it such a bad thing to be a poet?\" preciosa asked.',\n", + " '\"it is not a bad thing,\" he answered; \"but to be a poet and nothing else i do not hold to be very good. we should use poetry like a rich jewel, the owner of which does not wear it every day, or show it to all people, but displays it only at suitable times. poetry is a beautiful maiden, chaste, honest, discreet, reserved, and never overstepping the limits of perfect refinement. she is fond of solitude; she finds pleasure and recreation among fountains, meadows, trees, and flowers; and she delights and instructs all who are conversant with her.\"',\n", + " '\"i have heard for all that,\" said preciosa, \"that she is exceedingly poor; something of a beggar in short.\"',\n", + " '\"it is rather the reverse,\" said the page, \"for there is no poet who is not rich, since they all live content with their condition; and that is a piece of philosophy which few understand. but what has moved you, preciosa, to make this inquiry?\"',\n", + " '\"i was moved to it, because, as i believe all poets, or most of them, to be poor, that crown which you gave me wrapped up with the verses caused me some surprise; but now that i know that you are not a poet, but only a lover of poetry, it may be that you are rich, though i doubt it, for your propensity is likely to make you run through all you have got. it is a well-known saying, that no poet can either keep or make a fortune.\"',\n", + " '\"but the saying is not applicable to me,\" said the page. \"i make verses, and i am neither rich nor poor; and without feeling it or making a talk about it, as the genoese do of their invitations, i can afford to give a crown, or even two, to whom i like. take then, precious pearl, this second paper, and this second crown enclosed in it, without troubling yourself with the question whether i am a poet or not. i only beg you to think and believe that he who gives you this would fain have the wealth of midas to bestow upon you.\"',\n", + " 'preciosa took the paper, and feeling a crown within it, she said, \"this paper bids fair to live long, for it has two souls within it, that of the crown and that of the verses, which, of course, are full of souls and hearts as usual. but please to understand, señor page, that i do not want so many souls; and that unless you take back one of them, i will not receive the other on any account. i like you as a poet and not as a giver of gifts; and thus we may be the longer friends, for your stock of crowns may run out sooner than your verses.\"',\n", + " '\"well,\" said the page, \"since you will have it that i am poor, do not reject the soul i present to you in this paper, and give me back the crown, which, since it has been touched by your hand, shall remain with me as a hallowed relic as long as i live.\"',\n", + " \"preciosa gave him the crown, and kept the paper, but would not read it in the street. the page went away exulting in the belief that preciosa's heart was touched, since she had treated him with such affability.\",\n", + " 'it being now her object to find the house of andrew\\'s father, she went straight to the street, which she well knew, without stopping anywhere to dance. about half way down it, she saw the gilded iron balcony which andrew had mentioned to her, and in it a gentleman of about fifty years of age, of noble presence, with a red cross on his breast. this gentleman seeing the gitanilla, called out, \"come up here, niñas, and we will give you something.\" these words brought three other gentlemen to the balcony, among whom was the enamoured andrew. the instant he cast his eyes on preciosa he changed colour, and well nigh swooned, such was the effect her sudden appearance had upon him. the girls went up stairs, whilst the old woman remained below to pump the servants with respect to andrew. as they entered the room, the elder gentleman was saying to the others, \"this is no doubt the handsome gitanilla who is so much talked of in madrid.\"',\n", + " '\"it is,\" said andrew; \"and she is unquestionably the most beautiful creature that ever was seen.\"',\n", + " '\"so they say,\" said preciosa, who had overheard these remarks as she came in; \"but indeed they must be half out in the reckoning. i believe i am pretty well, but as handsome as they say—not a bit of it!\"',\n", + " '\"by the life of don juanico, my son,\" said the elder gentleman, \"you are far more so, fair gitana.\"',\n", + " '\"and who is don juanico, your son?\" said preciosa.',\n", + " '\"that gallant by your side,\" said the cavalier.',\n", + " '\"truly, i thought your worship had sworn by some bantling of two years old,\" said preciosa. \"what a pretty little pet of a don juanico! why he is old enough to be married; and by certain lines on his forehead, i foresee that married he will be before three years are out, and much to his liking too, if in the meantime he be neither lost nor changed.\"',\n", + " '\"ay, ay,\" said one of the company; \"the gitanilla can tell the meaning of a wrinkle.\"',\n", + " 'during this time, the three gipsy girls, who accompanied preciosa, had got their heads together and were whispering each other. \"girls,\" said christina, \"that is the gentleman that gave us the three pieces of eight this morning.\"',\n", + " '\"sure enough,\" said they; \"but don\\'t let us say a word about it unless he mentions it. how do we know but he may wish to keep it secret?\"',\n", + " 'whilst the three were thus conferring together, preciosa replied to the last remark about wrinkles. \"what i see with my eyes, i divine with my fingers. of the señor don juanico, i know without lines that he is somewhat amorous, impetuous, and hasty; and a great promiser of things that seem impossible. god grant he be not a deceiver, which would be worse than all. he is now about to make a long journey; but the bay horse thinks one thing, and the man that saddles him thinks another thing. man proposes and god disposes. perhaps he may think he is bound for oñez, and will find himself on the way to gaviboa.\"',\n", + " '\"in truth, gitana,\" said don juan, \"you have guessed right respecting me in several points. i certainly intend, with god\\'s will, to set out for flanders in four or five days, though you forebode that i shall have to turn out of my road; yet i hope no obstacle will occur to frustrate my purpose.\"',\n", + " '\"say no more, señorito,\" the gipsy replied; \"but commend yourself to god, and all will be well. be assured i know nothing at all of what i have been saying. it is no wonder if i sometimes hit the mark, since i talk so much and always at random. i wish i could speak to such good purpose as to persuade you not to leave home, but remain quietly with your parents to comfort their old age; for i am no friend to these flanders expeditions, especially for a youth of your tender years. wait till you are grown a little more and better able to bear the toils of war; and the rather as you have war enough at home, considering all the amorous conflicts that are raging in your bosom. gently, gently with you, madcap! look what you are doing before you marry; and now give us a little dole for god\\'s sake and for the name you bear; for truly i believe you are well born, and if along with this you are loyal and true, then i will sing jubilee for having hit the mark in all i have said to you.\"',\n", + " '\"i told you before, niña,\" said don juan, otherwise andrew caballero, \"that you were right on every point except as to the fear you entertain that i am not quite a man of my word. in that respect you are certainly mistaken. the word that i pledge in the field i fulfil in the town, or wherever i may be, without waiting to be asked; for no man can esteem himself a gentleman, who yields in the least to the vice of falsehood. my father will give you alms for god\\'s sake and for mine; for in truth i gave all i had this morning to some ladies, of whom i would not venture to assert that they are as obliging as they are beautiful, one of them especially.\"',\n", + " 'hearing this, christina said to her companions, \"may i be hanged, girls, if he is not talking of the three pieces of eight he gave us this morning.\"',\n", + " '\"no, that can\\'t be,\" one of them observed; \"for he said they were ladies, and we are none; and being so true-spoken as he says he is, he would not lie in this matter.\"',\n", + " '\"oh, but,\" said christina, \"that is not a lie of any moment that is told without injury to anybody, but for the advantage and credit of him who tells it. be that as it may, i see he neither gives us anything, nor asks us to dance.\"',\n", + " 'the old gipsy now came into the room and said, \"make haste, granddaughter; for it is late, and there is much to be done, and more to be said.\"',\n", + " '\"what is it, grandmother?\" said preciosa, \"a boy or a girl?\"',\n", + " '\"a boy, and a very fine one. come along, preciosa, and you shall hear marvels.\"',\n", + " '\"god grant the mother does not die of her after pains,\" said the granddaughter.',\n", + " '\"we will take all possible care of her. she has had a very good time, and the child is a perfect beauty.\"',\n", + " '\"has any lady been confined?\" said andrew\\'s father.',\n", + " '\"yes, señor,\" replied the old gitana: \"but it is such a secret, that no one knows of it except preciosa, myself, and one other person. so we cannot mention the lady\\'s name.\"',\n", + " '\"well, we don\\'t want to know it,\" said one of the gentlemen present; \"but god help the lady who trusts her secret to your tongues, and her honour to your aid.\"',\n", + " '\"we are not all bad,\" replied preciosa; \"perhaps there may be one among us who piques herself on being as trusty and as true as the noblest man in this room. let us begone, grandmother; for here we are held in little esteem, though in truth we are neither thieves nor beggars.\"',\n", + " '\"do not be angry, preciosa,\" said andrew\\'s father. \"of you at least i imagine no one can presume anything ill, for your good looks are warrant for your good conduct. do me the favour to dance a little with your companions. i have here a doubloon for you with two faces, and neither of them as good as your own, though they are the faces of two kings.\"',\n", + " 'the moment the old woman heard this she cried, \"come along, girls: tuck up your skirts, and oblige these gentlemen.\" preciosa took the tambourine, and they all danced with so much grace and freedom, that the eyes of all the spectators were riveted upon their steps, especially those of andrew, who gazed upon preciosa as if his whole soul was centred in her; but an untoward accident turned his delight into anguish. in the exertion of the dance, preciosa let fall the paper given her by the page. it was immediately picked up by the gentleman who had no good opinion of the gipsies. he opened it, and said, \"what have we here? a madrigal? good! break off the dance, and listen to it; for, as far as i can judge from the beginning, it is really not bad.\" preciosa was annoyed at this, as she did not know the contents of the paper; and she begged the gentleman not to read it, but give it back to her. all her entreaties, however, only made andrew more eager to hear the lines, and his friend read them out as follows:—',\n", + " 'who hath preciosa seen',\n", + " 'dancing like the fairy queen?',\n", + " 'ripplets on a sunlit river',\n", + " 'like her small feet glance and quiver.',\n", + " 'when she strikes the timbrel featly,',\n", + " 'when she warbles, oh how sweetly!',\n", + " 'pearls from her white hands she showers,',\n", + " 'from her rosy lips drop flowers.',\n", + " 'not a ringlet of her hair',\n", + " 'but doth thousand souls ensnare.',\n", + " 'not a glance of her bright eyes',\n", + " \"but seems shot from love's own skies.\",\n", + " 'he in obeisance to this sovereign maid,',\n", + " 'his bow and quiver at her feet hath laid.',\n", + " '\"por dios!\" exclaimed the reader, \"he is a dainty poet who wrote this.\"',\n", + " '\"he is not a poet, señor,\" said preciosa, \"but a page, and a very gallant and worthy man.\"',\n", + " '\"mind what you say, preciosa,\" returned the other; \"for the praises you bestow on the page are so many lance-thrusts through andrew\\'s heart. look at him as he sits aghast, thrown back on his chair, with a cold perspiration breaking through all his pores. do not imagine, maiden, that he loves you so lightly but that the least slight from you distracts him. go to him, for god\\'s sake, and whisper a few words in his ear, that may go straight to his heart, and recall him to himself. go on receiving such madrigals as this every day, and just see what will come of it.\"',\n", + " 'it was just as he had said. andrew had been racked by a thousand jealousies on hearing the verses; and was so overcome that his father observed it, and cried out, \"what ails you, don juan? you are turned quite pale, and look as if you were going to faint.\"',\n", + " '\"wait a moment,\" said preciosa, \"let me whisper certain words in his ear, and you will see that he will not faint.\" then bending over him she said, almost without moving her lips, \"a pretty sort of gitano you will make! why, andrew, how will you be able to bear the torture with gauze, when you are overcome by a bit of paper?\" then making half-a-dozen signs of the cross over his heart, she left him, after which andrew breathed a little, and told his friends that preciosa\\'s words had done him good.',\n", + " \"finally, the two-faced doubloon was given to preciosa, who told her companions that she would change it, and share the amount honourably with them. andrew's father intreated her to leave him in writing the words she had spoken to his son, as he wished by all means to know them. she said she would repeat them with great pleasure; and that though they might appear to be mere child's play, they were of sovereign virtue to preserve from the heartache and dizziness of the head. the words were these:—\",\n", + " 'silly pate, silly pate,',\n", + " 'why run on at this rate?',\n", + " 'no tripping, or slipping, or sliding!',\n", + " 'have trusty assurance,',\n", + " 'and patient endurance',\n", + " 'and ever be frank and confiding.',\n", + " 'to ugly suspicion',\n", + " 'refuse all admission,',\n", + " 'nor let it your better sense twist over.',\n", + " 'all this if you do',\n", + " \"you'll not rue,\",\n", + " 'for excellent things will ensue,',\n", + " 'with the good help of god and st. christopher.',\n", + " '\"only say these words,\" she continued, \"over any person who has a swimming in the head, making at the same time six signs of the cross over his heart, and he will soon be as sound as an apple.\"',\n", + " 'when the old woman heard the charm, she was amazed at the clever trick played by her granddaughter; and andrew was still more so when he found that the whole was an invention of her quick wit. preciosa left the madrigal in the hands of the gentleman, not liking to ask for it, lest she should again distress andrew; for she knew, without any one teaching her, what it was to make a lover feel the pangs of jealousy. before she took her leave, she said to don juan, \"every day of the week, señor, is lucky for beginning a journey: not one of them is black. hasten your departure, therefore, as much as you can; for there lies before you a free life of ample range and great enjoyment, if you choose to accommodate yourself to it.\"',\n", + " '\"it strikes me that a soldier\\'s life is not so free as you say,\" replied andrew, \"but one of submission rather than liberty. however, i will see what i can do.\"',\n", + " '\"you will see more than you think for,\" said preciosa; \"and may god have you in his keeping, and lead you to happiness, as your goodly presence deserves.\"',\n", + " 'these farewell words filled andrew with delight; the gitanas went away no less gratified, and shared the doubloon between them, the old woman as usual taking a part and a half, both by reason of her seniority, as because she was the compass by which they steered their course on the wide sea of their dances, pleasantry, and tricks.',\n", + " 'at last the appointed day of meeting came, and andrew arrived in the morning at the old trysting place, mounted on a hired mule, and without any attendant. he found preciosa and her grandmother waiting for him, and was cordially welcomed by them. he begged they would take him at once to the rancho, before it was broad day, that he might not be recognised should he be sought for. the two gitanas, who had taken the precaution to come alone, immediately wheeled round, and soon arrived with him at their huts. andrew entered one of them, which was the largest in the rancho, where he was forthwith assisted by ten or twelve gitanos, all handsome strapping young fellows, whom the old woman had previously informed respecting the new comrade who was about to join them. she had not thought it necessary, to enjoin them to secrecy; for, as we have already said, they habitually observed it with unexampled sagacity and strictness. their eyes were at once on the mule, and said one of them, \"we can sell this on thursday in toledo.\"',\n", + " '\"by no means,\" said andrew; \"for there is not a hired mule in madrid, or any other town, but is known to all the muleteers that tramp the roads of spain.\"',\n", + " '\"por dios, señor andrew,\" said one of the gang, \"if there were more signs and tokens upon the mule than are to precede the day of judgment, we will transform it in such a manner that it could not be known by the mother that bore it, or the master that owned it.\"',\n", + " '\"that maybe,\" said andrew; \"but for this time you must do as i recommend. this mule must be killed, and buried where its bones shall never be seen.\"',\n", + " '\"put the innocent creature to death!\" cried another gipsy. \"what a sin! don\\'t say the word, good andrew; only do one thing. examine the beast well, till you have got all its marks well by heart; then let me take it away, and if in two hours from this time you are able to know, it again, let me be basted like a runaway negro.\"',\n", + " '\"i must insist upon the mule\\'s being put to death,\" said andrew, \"though i were ever so sure of its transformation. i am in fear of being discovered unless it is put under ground. if you object for sake of the profit to be made by selling it, i am not come so destitute to this fraternity but that i can pay my footing with more than the price of four mules.\"',\n", + " '\"well, since the señor andrew caballero will have it so,\" said the other gitano, \"let the sinless creature die, though god knows how much it goes against me, both because of its youth, for it has not yet lost mark of mouth, a rare thing among hired mules, and because it must be a good goer, for it has neither scars on its flank nor marks of the spur.\"',\n", + " \"the slaughter of the mule was postponed till night, and the rest of the day was spent in the ceremonies of andrew's initiation. they cleared out one of the best huts in the encampment, dressed it with boughs and rushes, and seating andrew in it on the stump of a cork tree, they put a hammer and tongs in his hands, and made him cut two capers to the sound of two guitars. they then bared one of his arms, tied round it a new silk ribbon through which they passed a short stick, and gave it two turns gently, after the manner of the garotte with which criminals are strangled. preciosa was present at all this, as were many other gitanas, old and young, some of whom gazed at andrew with admiration, others with love, and such was his good humour, that even the gitanos took most kindly to him.\",\n", + " 'these ceremonies being ended, an old gipsy took preciosa by the hand, and setting her opposite andrew, spoke thus: \"this girl, who is the flower and cream of all beauty among the gitanas of spain, we give to you either for your wife or your mistress, for in that respect you may do whatever shall be most to your liking, since our free and easy life is not subject to squeamish scruples or to much ceremony. look at her well, and see if she suits you, or if there is anything in her you dislike; if there is, choose from among the maidens here present the one you like best, and we will give her to you. but bear in mind that once your choice is made, you must not quit it for another, nor make or meddle either with the married women or the maids. we are strict observers of the law of good fellowship; none among us covets the good that belongs to another. we live free and secure from the bitter plague of jealousy; and though incest is frequent amongst us there is no adultery. if a wife or a mistress is unfaithful, we do not go ask the courts of justice to punish; but we ourselves are the judges and executioners of our wives and mistresses, and make no more ado about killing and burying them in the mountains and desert places than if they were vermin. there are no relations to avenge them, no parents to call us to account for their deaths. by reason of this fear and dread, our women learn to live chaste; and we, as i have said, feel no uneasiness about their virtue.',\n", + " '\"we have few things which are not common to us all, except wives and mistresses, each of whom we require to be his alone to whom fortune has allotted her. among us divorce takes place, because of old age as well as by death. any man may if he likes leave a woman who is too old for him, and choose one more suitable to his years. by means of these and other laws and statutes we contrive to lead a merry life. we are lords of the plains, the corn fields, the woods, mountains, springs, and rivers. the mountains yield us wood for nothing, the orchards fruit, the vineyards grapes, the gardens vegetables, the fountains water, the rivers fish, the parks feathered game; the rocks yield us shade, the glades and valleys fresh air, and the caves shelter. for us the inclemencies of the weather are zephyrs, the snow refreshment, the rain baths, the thunder music, and the lightning torches. for us the hard ground is a bed of down; the tanned skin of our bodies is an impenetrable harness to defend us; our nimble limbs submit to no obstacle from iron bars, or trenches, or walls; our courage is not to be twisted out of us by cords, or choked by gauze, or quelled by the rack.',\n", + " '\"between yes and no we make no difference when it suits our convenience to confound them; we always pride ourselves more on being martyrs than confessors. for us the beasts of burden are reared in the fields, and pockets are filled in the cities. no eagle or other bird of prey pounces more swiftly on its quarry than we upon opportunities that offer us booty. and finally, we possess many qualities which promise us a happy end; for we sing in prison, are silent on the rack, work by day, and by night we thieve, or rather we take means to teach all men that they should exempt themselves from the trouble of seeing where they put their property. we are not distressed by the fear of losing our honour, or kept awake by ambition to increase it. we attach ourselves to no parties; we do not rise by day-light to attend levees and present memorials, or to swell the trains of magnates, or to solicit favours. our gilded roofs and sumptuous palaces are these portable huts; our flemish pictures and landscapes are those which nature presents to our eyes at every step in the rugged cliffs and snowy peaks, the spreading meads and leafy groves. we are rustic astronomers, for as we sleep almost always under the open sky, we can tell every hour by day or night. we see how aurora extinguishes and sweeps away the stars from heaven, and how she comes forth with her companion the dawn, enlivening the air, refreshing the water, and moistening the earth; and after her appears the sun gilding the heights, as the poet sings, and making the mountains smile. we are not afraid of being left chilly by his absence, when his rays fall aslant upon us, or of being roasted when they blaze down upon us perpendicularly. we turn the same countenance to sun and frost, to dearth and plenty. in conclusion, we are people who live by our industry and our wits, without troubling ourselves with the old adage, \\'the church, the sea, or the king\\'s household.\\' we have all we want, for we are content with what we have.',\n", + " '\"all these things have i told you, generous youth, that you may not be ignorant of the life to which you are come, and the manners and customs you will have to profess, which i have here sketched for you in the rough. many other particulars, no less worthy of consideration, you will discover for yourself in process of time.\"',\n", + " 'here the eloquent old gitano closed his discourse, and the novice replied, that he congratulated himself much on having been made acquainted with such laudable statutes; that he desired to make profession of an order so based on reason and politic principles; that his only regret was that he had not sooner come to the knowledge of so pleasant a life; and that from that moment he renounced his knighthood, and the vain glory of his illustrious lineage, and placed them beneath the yoke, or beneath the laws under which they lived, forasmuch as they so magnificently recompensed the desire he had to serve them, in bestowing upon him the divine preciosa, for whom he would surrender many crowns and wide empires, or desire them only for her sake.',\n", + " 'preciosa spoke next: \"whereas these señores, our lawgivers,\" she said, \"have determined, according to their laws that i should be yours, and as such have given me up to you, i have decreed, in accordance with the law of my own will, which is the strongest of all, that i will not be so except upon the conditions heretofore concerted between us two. you must live two years in our company before you enjoy mine, so that you may neither repent through fickleness, nor i be deceived through precipitation. conditions supersede laws; those which i have prescribed you know; if you choose to keep them, i may be yours, and you mine; if not, the mule is not dead, your clothes are whole, and not a doit of your money is spent. your absence from home has not yet extended to the length of a day; what remains you may employ in considering what best suits you. these señores may give up my body to you, but not my soul, which is free, was born free, and shall remain free. if you remain, i shall esteem you much; if you depart, i shall do so no less; for i hold that amorous impulses run with a loose rein, until they are brought to a halt by reason or disenchantment. i would not have you be towards me like the sportsman, who when he has bagged a hare thinks no more of it, but runs after another. the eyes are sometimes deceived; at first sight tinsel looks like gold; but they soon recognise the difference between the genuine and the false metal. this beauty of mine, which you say i possess, and which you exalt above the sun, and declare more precious than gold, how do i know but that at a nearer view it will appear to you a shadow, and when tested will seem but base metal? i give you two years to weigh and ponder well what will be right to choose or reject. before you buy a jewel, which you can only get rid of by death, you ought to take much time to examine it, and ascertain its faults or its merits. i do not assent to the barbarous licence which these kinsmen of mine have assumed, to forsake their wives or chastise them when the humour takes them; and as i do not intend to do anything which calls for punishment, i will not take for my mate one who will abandon me at his own caprice.\"',\n", + " '\"you are right, preciosa,\" said andrew; \"and so if you would have me quiet your fears and abate your doubts, by swearing not to depart a jot from the conditions you prescribe, choose what form of oath i shall take, or what other assurance i shall give you, and i will do exactly as you desire.\"',\n", + " '\"the oaths and promises which the captive makes to obtain his liberty are seldom fulfilled when he is free,\" returned preciosa; \"and it is just the same, i fancy, with the lover, who to obtain his desire will promise the wings of mercury, and the thunderbolts of jove; and indeed a certain poet promised myself no less, and swore it by the stygian lake. i want no oaths or promises, señor andrew, but to leave everything to the result of this novitiate. it will be my business to take care of myself, if at any time you should think of offending me.\"',\n", + " '\"be it so,\" said andrew. \"one request i have to make of these señores and comrades mine, and that is that they will not force me to steal anything for a month or so; for it strikes me that it will take a great many lessons to make me a thief.\"',\n", + " '\"never fear, my son,\" said the old gipsy; \"for we will instruct you in such a manner that you will turn out an eagle in our craft; and when you have learned it, you will like it so much, that you will be ready to eat your hand, it will so itch after it. yes, it is fine fun to go out empty-handed in the morning, and to return loaded at night to the rancho.\"',\n", + " '\"i have seen some return with a whipping,\" said andrew.',\n", + " '\"one cannot catch trouts dry shod,\" the old man replied: \"all things in this life have their perils: the acts of the thief are liable to the galleys, whipping, and the scragging-post; but it is not because one ship encounters a storm, or springs a leak, that others should cease to sail the seas. it would be a fine thing if there were to be no soldiers, because war consumes men and horses. besides, a whipping by the hand of justice is for us a badge of honour, which becomes us better worn on the shoulders than on the breast. the main point is to avoid having to dance upon nothing in our young days and for our first offences; but as for having our shoulders dusted, or thrashing the water in a galley, we don\\'t mind that a nutshell. for the present, andrew, my son, keep snug in the nest under the shelter of our wings; in duo time, we will take you out to fly, and that where you will not return without a prey; and the short and the long of it is, that by and by you will lick your fingers after every theft.\"',\n", + " '\"meanwhile,\" said andrew, \"as a compensation for what i might bring in by thieving during the vacation allowed me, i will divide two hundred gold crowns among all the members of the rancho.\"',\n", + " 'the words were no sooner out of his mouth, than several gitanos caught him up in their arms, hoisted him upon their shoulders, and bore him along, shouting, \"long life to the great andrew, and long life to preciosa his beloved!\" the gitanas did the same with preciosa, not without exciting the envy of christina, and the other gitanillas present; for envy dwells alike in the tents of barbarians, the huts of shepherds, and the palaces of princes; and to see another thrive who seems no better than oneself is a great weariness to the spirit.',\n", + " \"this done, they ate a hearty dinner, made an equitable division of the gift money, repeated their praises of andrew, and exalted preciosa's beauty to the skies. when night fell, they broke the mule's neck, and buried it, so as to relieve andrew of all fear of its leading to his discovery; they likewise buried with it the trappings, saddle, bridle, girths and all, after the manner of the indians, whose chief ornaments are laid in the grave with them.\",\n", + " 'andrew was in no small astonishment at all he had seen and heard, and resolved to pursue his enterprise without meddling at all with the customs of his new companions, so far as that might be possible. especially he hoped to exempt himself, at the cost of his purse, from participating with them in any acts of injustice. on the following day, andrew requested the gipsies to break up the camp, and remove to a distance from madrid; for he feared that he should be recognised if he remained there. they told him they had already made up their minds to go to the mountains of toledo, and thence to scour all the surrounding country, and lay it under contribution. accordingly they struck their tents, and departed, offering andrew an ass to ride; but he chose rather to travel on foot, and serve as attendant to preciosa, who rode triumphantly another ass, rejoicing in her gallant esquire; whilst he was equally delighted at finding himself close to her whom he had made the mistress of his freedom.',\n", + " 'o potent force of him who is called the sweet god of bitterness—a title given him by our idleness and weakness—how effectually dost thou enslave us! here was andrew, a knight, a youth of excellent parts, brought up at court, and maintained in affluence by his noble parents; and yet since yesterday such a change has been wrought in him that he has deceived his servants and friends; disappointed the hopes of his parents; abandoned the road to flanders, where he was to have exercised his valour and increased the honours of his line; and he has prostrated himself at the feet of a girl, made himself the lackey of one who, though exquisitely beautiful, is after all a gitana! wondrous prerogative of beauty, which brings down the strongest will to its feet, in spite of all its resistance!',\n", + " \"in four days' march, the gipsies arrived at a pleasant village, within two leagues of the great toledo, where they pitched their camp, having first given some articles of silver to the alcalde of the district, as a pledge that they would steal nothing within all his bounds, nor do any other damage that might give cause of complaint against them. this done, all the old gitanas, some young ones, and the men, spread themselves all over the country, to the distance of four or five leagues from the encampment. andrew went with them to take his first lesson in thievery; but though they gave him many in that expedition, he did not profit by any of them. on the contrary, as was natural in a man of gentle blood, every theft committed by his masters wrung his very soul, and sometimes he paid for them out of his own pocket, being moved by the tears of the poor people who had been despoiled. the gipsies were in despair at this behavior: it was in contravention, they said, of their statutes and ordinances, which prohibited the admission of compassion into their hearts; because if they had any they must cease to be thieves,—a thing which was not to be thought of on any account. seeing this, andrew said he would go thieving by himself; for he was nimble enough to run from danger, and did not lack courage to encounter it; so that the prize or the penalty of his thieving would be exclusively his own.\",\n", + " 'the gipsies tried to dissuade him from this good purpose, telling him that occasions might occur in which he would have need of companions, as well to attack as to defend; and that one person alone could not make any great booty. but in spite of all they could say, andrew was determined to be a solitary robber; intending to separate from the gang, and purchase for money something which he might say he had stolen, and thus burden his conscience as little as possible. proceeding in this way, in less than a month, he brought more gain to the gang than four of the most accomplished thieves in it. preciosa rejoiced not a little to see her tender lover become such a smart and handy thief; but for all that she was sorely afraid of some mischance, and would not have seen him in the hands of justice for all the treasures of venice; such was the good feeling towards him which she could not help entertaining, in return for his many good offices and presents. after remaining about a month in the toledan district, where they reaped a good harvest, the gipsies entered the wealthy region of estramadura.',\n", + " \"meanwhile andrew frequently held honourable and loving converse with preciosa, who was gradually becoming enamoured of his good qualities; while, in like manner, his love for her went on increasing, if that were possible: such were the virtues, the good sense and beauty of his preciosa. whenever the gipsies engaged in athletic games, he carried off the prize for running and leaping: he played admirably at skittles and at ball, and pitched the bar with singular strength and dexterity. in a short while, his fame spread through all estramadura, and there was no part of it where they did not speak of the smart young gitano andrew, and his graces and accomplishments. as his fame extended, so did that of preciosa's beauty; and there was no town, village, or hamlet, to which they were not invited, to enliven their patron saints' days, or other festivities. the tribe consequently became rich, prosperous, and contented, and the lovers were happy in the mere sight of each other.\",\n", + " 'it happened one night, when the camp was pitched among some evergreen oaks, a little off the highway, they heard their dogs barking about the middle watch, with unusual vehemence. andrew and some others got up to see what was the matter, and found a man dressed in white battling with them, whilst one of them held him by the leg. \"what the devil brought you here, man,\" said one of the gipsies, after they had released him, \"at such an hour, away from the high road? did you come to thieve? if so, you have come to the right door?\"',\n", + " '\"i do not come to thieve; and i don\\'t know whether or not i am off the road, though i see well enough that i am gone astray,\" said the wounded man. \"but tell me, señores, is there any venta or place of entertainment where i can get a night\\'s lodging, and dress the wounds which these dogs have given me?\"',\n", + " '\"there is no venta or public place to which we can take you,\" replied andrew; \"but as for a night\\'s lodging, and dressing your wounds, that you can have at our ranchos. come along with us; for though we are gipsies, we are not devoid of humanity.\"',\n", + " '\"god reward you!\" said the man: \"take me whither you please, for my leg pains me greatly.\" andrew lifted him up, and carried him along with the help of some of the other compassionate gipsies; for even among the fiends there are some worse than others, and among many bad men you may find one good.',\n", + " 'it was a clear moonlight night, so that they could see that the person they carried was a youth of handsome face and figure. he was dressed all in white linen, with a sort of frock of the same material belted round his waist. they arrived at andrew\\'s hut or shed, quickly kindled a fire, and fetched preciosa\\'s grandmother to attend to the young man\\'s hurts. she took some of the dogs\\' hairs, fried them in oil, and after washing with wine the two bites she found on the patient\\'s left leg, she put the hairs and the oil upon them, and over this dressing a little chewed green rosemary. she then bound the leg up carefully with clean bandages, made the sign of the cross over it, and said, \"now go to sleep, friend and with the help of god your hurts will not signify.\"',\n", + " 'whilst they were attending to the wounded man, preciosa stood by, eyeing him with great curiosity, whilst he did the same by her, insomuch that andrew took notice of the eagerness with which he gazed; but he attributed this to the extraordinary beauty of preciosa, which naturally attracted all eyes. finally, having done all that was needful for the youth, they left him alone on a bed of dry hay, not caring to question him then as to his road, or any other matter.',\n", + " 'as soon as all the others were gone, preciosa called andrew aside, and said to him, \"do you remember, andrew, a paper i let fall in your house, when i was dancing with my companions, and which caused you, i think, some uneasiness?\"',\n", + " '\"i remember it well,\" said andrew; \"it was a madrigal in your praise, and no bad one either.\"',\n", + " '\"well, you must know, andrew, that the person who wrote those verses is no other than the wounded youth we have left in the hut. i cannot be mistaken, for he spoke to me two or three times in madrid, and gave me too a very good romance. he was then dressed, i think, as a page,—not an ordinary one, but like a favourite of some prince. i assure you, andrew, he is a youth of excellent understanding, and remarkably well behaved; and i cannot imagine what can have brought him hither, and in such a garb.\"',\n", + " '\"what should you imagine, preciosa, but that the same power which has made me a gitano, has made him put on the dress of a miller, and come in search of you? ah, preciosa! preciosa! how plain it begins to be that you pride yourself on having more than one adorer. if this be so, finish me first, and then kill off this other, but do not sacrifice both at the same time to your perfidy.\"',\n", + " '\"god\\'s mercy, andrew, how thin-skinned you are! on how fine a thread you make your hopes and my reputation hang, since you let the cruel sword of jealousy so easily pierce your soul. tell me, andrew, if there were any artifice or deceit in this case, could i not have held my tongue about this youth, and concealed all knowledge of him? am i such a fool that i cannot help telling you what should make you doubt my integrity and good behaviour? hold your tongue, andrew, in god\\'s name, and try to-morrow to extract from this cause of your alarm whither he is bound, and why he is come hither. it may be that you are mistaken in your suspicion, though i am not mistaken in what i told you of the stranger. and now for your greater satisfaction—since it is come to that pass with me that i seek to satisfy you—whatever be the reason of this youth\\'s coming, send him away at once. all our people obey you, and none of them will care to receive him into their huts against your wish. but if this fails, i give you my word not to quit mine, or let myself be seen by him, or by anybody else from whom you would have me concealed. look you, andrew, i am not vexed at seeing you jealous, but it would vex me much to see you indiscreet.\"',\n", + " '\"unless you see me mad, preciosa,\" said andrew, \"any other demonstration would be far short of showing you what desperate havoc jealousy can make of a man\\'s feelings. however, i will do as you bid me, and find out what this señor page-poet wants, whither he is going, and whom he is in search of. it may be, that unawares he may let me get hold of some end of thread which shall lead to the discovery of the whole snare which i fear he is come to set for me.\"',\n", + " '\"jealousy, i imagine,\" said preciosa, \"never leaves the understanding clear to apprehend things as they really are. jealousy always looks through magnifying glasses, which make mountains of molehills, and realities of mere suspicions. on your life, andrew, and on mine, i charge you to proceed in this matter, and all that touches our concerns, with prudence and discretion; and if you do, i know that you will have to concede the palm to me, as honest, upright, and true to the very utmost.\"',\n", + " 'with these words she quitted andrew, leaving him impatient for daylight, that he might receive the confession of the wounded man, and distracted in mind by a thousand various surmises. he could not believe but that this page had come thither attracted by preciosa\\'s beauty; for the thief believes that all men are such as himself. on the other hand, the pledge voluntarily made to him by preciosa appeared so highly satisfactory, that he ought to set his mind quite at ease, and commit all his happiness implicitly to the keeping of her good faith. at last day appeared: he visited the wounded man; and after inquiring how he was, and did his bites pain him, he asked what was his name, whither he was going, and how it was he travelled so late and so far off the road. the youth replied that he was better, and felt no pain so that he was able to resume his journey. his name was alonzo hurtado; he was going to our lady of the peña de francia, on a certain business; he travelled by night for the greater speed; and having missed his way, he had come upon the encampment, and been worried by the dogs that guarded it. andrew did not by any means consider this a straightforward statement: his suspicions returned to plague him; and, said he, \"brother, if i were a judge, and you had been brought before me upon any charge which would render necessary such questions as those i have put to you, the reply you have given would oblige me to apply the thumb-screw. it is nothing to me who you are, what is your name, or whither you are going: i only warn you, that if it suits your convenience to lie on this journey, you should lie with more appearance of truth. you say you are going to la peña de francia, and you leave it on the right hand more than thirty leagues behind this place. you travel by night for sake of speed, and you quit the high road, and strike into thickets and woods where there is scarcely a footpath. get up, friend, learn to lie better, and go your ways, in god\\'s name. but in return for this good advice i give you, will you not tell me one truth? i know you will, you are such a bad hand at lying. tell me, are you not one i have often seen in the capital, something between a page and a gentleman? one who has the reputation of being a great poet, and who wrote a romance and a sonnet upon a gitanilla who some time ago went about madrid, and was celebrated for her surpassing beauty? tell me, and i promise you, on the honour of a gentleman gipsy, to keep secret whatever you may wish to be so kept. mind you, no denial that you are the person i say will go down with me; for the face i see before me is unquestionably the same i saw in madrid. the fame of your talents made me often stop to gaze at you as a distinguished man, and therefore your features are so strongly impressed on my memory, though your dress is very different from that in which i formerly saw you. don\\'t be alarmed, cheer up, and don\\'t suppose you have fallen in with a tribe of robbers, but with an asylum, where you may be guarded and defended from all the world. a thought strikes me; and if it be as i conjecture, you have been lucky in meeting me above all men. what i conjecture is, that being in love with preciosa—that beautiful young gipsy, to whom you addressed the verses—you have come in search of her; for which i don\\'t think a bit the worse of you, but quite the reverse: for gipsy though i am, experience has shown me how far the potent force of love reaches, and the transformations it makes those undergo whom it brings beneath its sway and jurisdiction. if this be so, as i verily believe it is, the fair gitanilla is here.\"',\n", + " '\"yes, she is here; i saw her last night,\" said the stranger. this was like a death-blow to andrew; for it seemed at once to confirm all his suspicions.',\n", + " '\"i saw her last night,\" the young man repeated; \"but i did not venture to tell her who i was, for it did not suit my purpose.\"',\n", + " '\"so, then,\" said andrew, \"you are indeed the poet of whom i spoke.\"',\n", + " '\"i am: i neither can nor will deny it. possibly it may be that where i thought myself lost i have come right to port, if, as you say, there is fidelity in the forests, and hospitality in the mountains.\"',\n", + " '\"that there is, beyond doubt,\" said andrew; \"and among us gipsies the strictest secrecy in the world. on that assurance, señor, you may unburden your breast to me: you will find in mine no duplicity whatever. the gitanilla is my relation, and entirely under my control. if you desire her for a wife, myself and all other relations will be quite willing; and if for a mistress, we will not make any squeamish objections, provided you have money, for covetousness never departs from our ranchos.\"',\n", + " '\"i have money,\" the youth replied; \"in the bands of this frock, which i wear girt round my body, there are four hundred gold crowns.\"',\n", + " 'this was another mortal blow for andrew, who assumed that the stranger could carry so large a sum about him for no other purpose than to purchase possession of the beloved object. with a faltering tongue he replied, \"that is a good lump of money; you have only to discover yourself, and go to work: the girl is no fool, and will see what a good thing it will be for her to be yours.\"',\n", + " '\"o friend,\" exclaimed the youth, \"i would have you know that the power which has made me change my garb is not that of love, as you say, nor any longing for preciosa; for madrid has beauties who know how to steal hearts and subdue souls as well as the handsomest gitanas, and better; though i confess that the beauty of your kinswoman surpasses any i have ever seen. the cause of my being in this dress, on foot, and bitten by dogs, is not love but my ill luck.\"',\n", + " \"upon this explanation, andrew's downcast spirit began to rise again; for it was plain that the wind was in quite a different quarter from what he had supposed. eager to escape from this confusion, he renewed his assurances of secrecy, and the stranger proceeded thus:—\",\n", + " '\"i was in madrid, in the house of a nobleman, whom i served not as a master but as a relation. he had an only son and heir, who treated me with great familiarity and friendship, both on account of our relationship, and because we were both of the same age and disposition. this young gentleman fell in love with a young lady of rank, whom he would most gladly have made his wife, had it not been for his dutiful submission to the will of his parents, who desired him to marry into a higher family. nevertheless, he continued furtively to pay court to the lady of his choice, carefully concealing his proceedings from all eyes but mine. one night, which ill luck must have especially selected for the adventure i am about to relate to you, as we were passing by the lady\\'s house, we saw ranged against it two men of good figure apparently. my kinsman wished to reconnoitre them, but no sooner had he made a step towards them than their swords were out, their bucklers ready, and they made at us, whilst we did the same on our side, and engaged them with equal arms. the fight did not last long, neither did the lives of our two opponents; for two thrusts, urged home by my kinsman\\'s jealousy and my zeal in his defence, laid them both low—an extraordinary occurrence, and such as is rarely witnessed. thus involuntarily victorious, we returned home, and taking all the money we could, set off secretly to the church of san geronimo, waiting to see what would happen when the event was discovered next day, and what might be the conjectures as to the persons of the homicides.',\n", + " '\"we learned that no trace of our presence on the scene had been discovered, and the prudent monks advised us to return home, so as not by our absence to arouse any suspicion against us. we had already resolved to follow their advice, when we were informed that the alcaldes of the court had arrested the young lady and her parents; and that among their domestics, whom they examined, one person, the young lady\\'s attendant, had stated that my kinsman visited her mistress by night and by day. upon this evidence they had sent in search of us; and the officers not finding us, but many indications of our flight, it became a confirmed opinion throughout the whole city, that we were the very men who had slain the two cavaliers, for such they were, and of very good quality. finally, by the advice of the count, my relation, and of the monks, after remaining hid a fortnight in the monastery, my comrade departed in company with a monk, himself disguised as one, and took the road to aragon, intending to pass over to italy, and thence to flanders, until he should see what might be the upshot of the matter. for my part, thinking it well to divide our fortunes, i set out on foot, in a different direction, and in the habit of a lay brother, along with a monk, who quitted me at talavera. from that city i travelled alone, and missed my way, till last night i reached this wood, when i met with the mishap you know. if i asked for la peña de francia, it was only by way of making some answer to the questions put to me; for i know that it lies beyond salamanca.\"',\n", + " '\"true,\" observed andrew, \"you left it on your right, about twenty leagues from this. so you see what a straight road you were taking, if you were going thither.\"',\n", + " '\"the road i did intend to take was that to seville; for there i should find a genoese gentleman, a great friend of the count my relation, who is in the habit of exporting large quantities of silver ingots to genoa; and my design is, that he should send me with his carriers, as one of themselves, by which means i may safely reach carthagena, and thence pass over to italy; for two galleys are expected shortly to ship some silver. this is my story, good friend: was i not right in saying it is the result of pure ill luck, rather than disappointed love? now if these señores gitanos will take me in their company to seville, supposing they are bound thither, i will pay them handsomely; for i believe that i should travel more safely with them, and have some respite from the fear that haunts me.\"',\n", + " '\"yes, they will take you,\" said andrew; \"or if you cannot go with our band—for as yet i know not that we are for andalusia—you can go with another which we shall fall in with in a couple of days; and if you give them some of the money you have about you, they will be able and willing to help you out of still worse difficulties.\" he then left the young man, and reported to the other gipsies what the stranger desired, and the offer he had made of good payment for their services.',\n", + " 'they were all for having their guest remain in the camp; but preciosa was against it; and her grandmother said, that she could not go to seville or its neighbourhood, on account of a hoax she had once played off upon a capmaker named truxillo, well known in seville. she had persuaded him to put himself up to his neck in a butt of water, stark naked, with a crown of cypress on his head, there to remain till midnight, when he was to step out, and look for a great treasure, which she had made him believe was concealed in a certain part of his house. when the good cap-maker heard matins ring, he made such haste to get out of the butt, lest he should lose his chance, that it fell with him, bruising his flesh, and deluging the floor with water, in which he fell to swimming with might and main, roaring out that he was drowning. his wife and his neighbours ran to him with lights, and found him striking out lustily with his legs and arms. \"help! help!\" he cried; \"i am suffocating;\" and he really was not far from it, such was the effect of his excessive fright. they seized and rescued him from his deadly peril. when he had recovered a little, he told them the trick the gipsy woman had played him; and yet for all that, he dug a hole, more than a fathom deep, in the place pointed out to him, in spite of all his neighbours could say; and had he not been forcibly prevented by one of them, when he was beginning to undermine the foundations of the house, he would have brought the whole of it down about his ears. the story spread all over the city; so that the little boys in the streets used to point their fingers at him, and shout in his ears the story of the gipsy\\'s trick, and his own credulity. such was the tale told by the old gitana, in explanation of her unwillingness to go to seville.',\n", + " \"the gipsies, knowing from andrew that the youth had a sum of money about him, readily assented to his accompanying them, and promised to guard and conceal him as long as he pleased. they determined to make a bend to the left, and enter la mancha and the kingdom of murcia. the youth thanked them cordially, and gave them on the spot a hundred gold crowns to divide amongst them, whereupon they became as pliant as washed leather. preciosa, however, was not pleased with the continuance among them of don sancho, for that was the youth's name, but the gipsies changed it to clement. andrew too was rather annoyed at this arrangement; for it seemed to him that clement had given up his original intention upon very slight grounds; but the latter, as if he read his thoughts, told him that he was glad to go to murcia, because it was near carthagena, whence, if galleys arrived there, as he expected, he could easily pass over to italy. finally, in order to have him more under his own eye, to watch his acts, and scrutinise his thoughts, andrew desired to have clement for his own comrade, and the latter accepted this friendly offer as a signal favour. they were always together, both spent largely, their crowns came down like rain; they ran, leaped, danced, and pitched the bar better than any of their companions, and were more than commonly liked by the women of the tribe, and held in the highest respect by the men.\",\n", + " 'leaving estramadura they entered la mancha, and gradually traversed the kingdom of murcia. in all the villages and towns they passed through, they had matches at ball-playing, fencing, running, leaping, and pitching the bar; and in all these trials of strength, skill, and agility andrew and clement were victorious, as andrew alone had been before. during the whole journey, which occupied six weeks, clement neither found nor sought an opportunity to speak alone with preciosa, until one day when she and andrew were conversing together, they called him to them, and preciosa said, \"the first time you came to our camp i recognised you, clement, and remembered the verses you gave me in madrid; but i would not say a word, not knowing with what intention you had come among us. when i became acquainted with your misfortune, it grieved me to the soul, though at the same time it was a relief to me; for i had been much disturbed, thinking that as there was a don juan in the world who had become a gipsy, a don sancho might undergo transformation in like manner. i speak this to you, because andrew tells me he has made known to you who he is, and with what intention he turned gipsy.\" (and so it was, for andrew had acquainted clement with his whole story, that he might be able to converse with him on the subject nearest to his thoughts.) \"do not think that my knowing you was of little advantage to you, since for my sake, and in consequence of what i said of you, our people the more readily admitted you amongst them, where i trust in god you may find things turn out according to your best wishes. you will repay me, i hope, for this good will on my part, by not making andrew ashamed of having set his mind so low, or representing to him how ill he does in persevering in his present way of life; for though i imagine that his will is enthralled to mine, still it would grieve me to see him show signs, however slight, of repenting what he has done.\"',\n", + " '\"do not suppose, peerless preciosa,\" replied clement, \"that don juan acted lightly in revealing himself to me. i found him out beforehand: his eyes first disclosed to me the nature of his feelings; i first told him who i was, and detected that enthralment of his will which you speak of; and he, reposing a just confidence in me, made his secret mine. he can witness whether i applauded his determination and his choice; for i am not so dull of understanding, preciosa, as not to know how omnipotent is beauty; and yours, which surpasses all bounds of loveliness, is a sufficient excuse for all errors, if error that can be called for which there is so irresistible a cause. i am grateful to you, señora, for what you have said in my favour; and i hope to repay you by hearty good wishes that you may find a happy issue out of your perplexities, and that you may enjoy the love of your andrew, and andrew that of his preciosa, with the consent of his parents; so that from so beautiful a couple there may come into the world the finest progeny which nature can form in her happiest mood. this is what i shall always desire, preciosa; and this is what i shall always say to your andrew, and not anything which could tend to turn him from his well-placed affections.\"',\n", + " \"with such emotion did clement utter these words, that andrew was in doubt whether they were spoken in courtesy only, or from love; for the infernal plague of jealousy is so susceptible that it will take offence at the motes in the sunbeams; and the lover finds matter for self-torment in everything that concerns the beloved object. nevertheless, he did not give way to confirmed jealousy; for he relied more on the good faith of his preciosa than on his own fortune, which, in common with all lovers, he regarded as luckless, so long as he had not obtained the object of his desires. in fine, andrew and clement continued to be comrades and friends, their mutual good understanding being secured by clement's upright intentions, and by the modesty and prudence of preciosa, who never gave andrew an excuse for jealousy. clement was somewhat of a poet, andrew played the guitar a little, and both were fond of music. one night, when the camp was pitched in a valley four leagues from murcia, andrew seated himself at the foot of a cork-tree, and clement near him under an evergreen oak. each of them had a guitar; and invited by the stillness of the night, they sang alternately, andrew beginning the descant, and clement responding.\",\n", + " 'andrew.',\n", + " 'ten thousand golden lamps are lit on high,',\n", + " 'making this chilly night',\n", + " \"rival the noon-day's light;\",\n", + " 'look, clement, on yon star-bespangled sky,',\n", + " 'and in that image see,',\n", + " 'if so divine thy fancy be,',\n", + " 'that lovely radiant face,',\n", + " 'where centres all of beauty and of grace.',\n", + " 'clement',\n", + " 'where centres all of beauty and of grace,',\n", + " 'and where in concord sweet',\n", + " 'goodness and beauty meet,',\n", + " 'and purity hath fixed its dwelling-place.',\n", + " 'creature so heavenly fair,',\n", + " 'may any mortal genius dare,',\n", + " 'or less than tongue divine,',\n", + " 'to praise in lofty, rare, and sounding line?',\n", + " 'andrew',\n", + " 'to praise in lofty, rare, and sounding line',\n", + " 'thy name, gitana bright!',\n", + " \"earth's wonder and delight,\",\n", + " 'worthy above the empyrean vault to shine;',\n", + " 'fain would i snatch from fame',\n", + " 'the trump and voice, whose loud acclaim',\n", + " 'should startle every ear,',\n", + " ...]},\n", + " 'data': ['how happy we are today...',\n", + " 'this could be the best we got',\n", + " 'concrete rubble for concrete dreams',\n", + " 'concrete rubble for concrete dreams',\n", + " 'sooner or later it’s all',\n", + " 'sooner or later it’s all',\n", + " 'sooner or later it’s all',\n", + " 'sooner or later it’s all',\n", + " 'in the past',\n", + " 'aah',\n", + " 'hands over head',\n", + " 'where do we go?',\n", + " 'we run too fast',\n", + " \"and we're moving away too slow\",\n", + " \"but your heartbeat's fast\",\n", + " \"and my heartbeat's fast\",\n", + " 'eyes and lips',\n", + " 'too close for me',\n", + " 'i still dont know who i really want to be',\n", + " 'but your heartbeats fast',\n", + " 'and my heartbeats fast',\n", + " 'shoot it up',\n", + " 'ready to take a pill, juice the cup',\n", + " 'phenobarbital, loosen up',\n", + " 'drift away in the bottom bunk',\n", + " 'quench your love',\n", + " \"don't you want to get close to god?\",\n", + " 'evolutionary level above',\n", + " 'this wasteland of human',\n", + " \"when you wanna go it's you\",\n", + " \"when you wanna go it's you\",\n", + " 'ready for a different view',\n", + " 'different view, whoah',\n", + " \"you forget tomorrow's never gonna come again\",\n", + " 'you regret your sorrow, never could make amends',\n", + " 'you relied',\n", + " 'one by one',\n", + " 'three days later thy will be done',\n", + " 'evacuate all modern dumb',\n", + " \"they've prepared, now time has come\",\n", + " 'yes, this is what it seems',\n", + " 'isolate eternal dream',\n", + " 'wish i could kiss your cheek and cover you in that purple sheet',\n", + " \"you forget tomorrow's never gonna come again\",\n", + " 'you regret your sorrow, never could make amends',\n", + " \"you forget tomorrow's never gonna come again\",\n", + " 'you regret your sorrow, never could make amends',\n", + " \"you've forever known it's only about the ride\",\n", + " \"you've told others that it's coming in the night\",\n", + " \"you're going to the other side\",\n", + " \"you've took refuge in the plenty of their empty lives\",\n", + " 'or is this the other side?',\n", + " \"you forget tomorrow's never gonna come again\",\n", + " 'you regret your sorrow, never could make amends',\n", + " \"you forget tomorrow's never gonna come again\",\n", + " 'you regret your sorrow, never could make amends',\n", + " \"you forget tomorrow's never gonna come again\",\n", + " 'the blue around the morning noon',\n", + " 'the color of your eyes',\n", + " 'i remember holding you',\n", + " 'fall through summer skies',\n", + " \"you're everything that i've become, every word i say\",\n", + " 'i need a bell, book and candle to keep your ghost away',\n", + " 'white horses on a troubled sea',\n", + " 'your smile will flash through time',\n", + " \"up ahead a blackbird's wing\",\n", + " 'your hair will come to mind',\n", + " 'every night i see your face when i have to pray',\n", + " 'i need a bell, book and candle to keep your ghost away',\n", + " 'keep your ghost away, keep your ghost away',\n", + " 'i need a bell, book and candle to keep your ghost away',\n", + " 'just before the thunder roars',\n", + " 'i sense you next to me',\n", + " 'and as i move through nature',\n", + " 'i know where you will be',\n", + " \"so i must keep myself apart,here is where i'll stay\",\n", + " 'with a bell, book and candle to keep your ghost away',\n", + " 'subpart 519.70—gsa mentor-protégé program',\n", + " '519.7001 scope of subpart.',\n", + " 'more gsa news http://bit.do/geniuspoint',\n", + " 'the gsa mentor-protégé program is designed to encourage and motivate gsa prime contractors to assist small businesses concerns, small disadvantaged businesses concerns, women-owned small businesses concerns, veteran-owned small business concerns, service-disabled veteran-owned small businesses concerns, and hubzone small businesses concerns, and enhance their capability of performing successfully on gsa contracts and subcontracts, foster the establishment of long-term business relationships between these small business entities and gsa prime contractors, and increase the overall number of small business entities that receive gsa contract and subcontract awards.',\n", + " '519.7002 definitions.',\n", + " 'the definitions of small business concern, small disadvantaged business concern, hubzone small business concern, women-owned small business concern, veteran-owned small business concern, and service-disabled veteran-owned small business concern are the same as found in far 2.101. also see 13 cfr 121, 124, 125 and 126.',\n", + " '(a) “mentor” as used in the gsa mentor-protégé program, is a prime contractor that elects, on a specific gsa contract, to promote and develop small business subcontractors by providing developmental assistance designed to enhance the business success of the protégé.',\n", + " '(b) “mentor-protégé program manager” means an employee in the office of small business utilization (osbu) (e) designated by the associate administrator of osbu to manage the mentor-protégé program.',\n", + " '(c) “protégé” as used in the gsa mentor-protégé program is a small business concern that is the recipient of developmental assistance pursuant to a mentor-protégé arrangement on a specific gsa contract.',\n", + " '519.7003 general policy.',\n", + " '(a) a large business prime contractor that meets the requirements at section 519.7006, and is approved as a mentor firm by the mentor-protégé program manager, may enter into an agreement with a small business concern, small disadvantaged business concern, women-owned small business concern, veteran-owned small business concern, service-disabled veteran-owned small business concern or hubzone small business concern that meets the requirements for being a protégé (see 519.7007) in order to provide appropriate developmental assistance to enhance the capabilities of the protégé to perform successfully as a subcontractor and supplier.',\n", + " '(b) a small business prime contractor that is capable of providing developmental assistance to protégés, may also be approved as a mentor.',\n", + " '(c) an active mentor-protégé arrangement requires the protégé to either be a current or newly selected subcontractor under the mentor’s prime contract with gsa.',\n", + " '(d) a small business concern’s status as a protégé under a gsa contract shall not have an effect on its ability to seek other prime contracts or subcontracts.',\n", + " '(e) potential mentors may submit an application for admittance to the mentor-protégé program at any time as long as the requirements at section 519.7006 are met.',\n", + " '(f) the determination of affiliation is a function of the sba.',\n", + " '519.7004 incentives for prime contractors.',\n", + " '(a) under the small business act, 15 u.s.c. 637(d)(4)(e), the gsa is authorized to provide appropriate incentives to prime contractors in order to encourage subcontracting opportunities for small business concerns consistent with the efficient and economical performance of the contract. this authority is limited to negotiated procurements, including the gsa multiple award schedule contracts and the gsa governmentwide acquisition contracts. it does not include orders under any gsa contracts.',\n", + " '(b) costs incurred by a mentor to provide developmental assistance, as described in section 519.7012 to fulfill the terms of their agreement(s) with a protégé firm(s), are not reimbursable as a direct cost under a gsa contract. if gsa is the mentor’s responsible audit agency under far 42.703-1, gsa will consider these costs in determining indirect cost rates. if gsa is not the responsible audit agency, mentors are encouraged to enter into an advance agreement with their responsible audit agency on the treatment of such costs when determining indirect cost rates.',\n", + " '(c) in addition to paragraph (b) of this section, contracting officers may give mentors evaluation credit during the source selection process for subcontracts awarded under their subcontracting plans pursuant to their mentor-protégé agreements. (see far 15.101-1). therefore:',\n", + " '(1) contracting officers may evaluate proposals with subcontracting plans containing mentor-protégé agreements more favorably than proposals with subcontracting plans that do not include mentor-protégé agreements; and',\n", + " \"(2) contracting officers may assess the prime contractor's compliance with the subcontracting plans submitted in previous contracts as a factor in evaluating past performance under certain circumstances (see far 15.304(c)(3) and 15.305(a)(2)(v)) and determining contractor responsibility far section 19.705-5(a)(1).\",\n", + " '(d) osbu mentoring award. a non-monetary award may be presented annually to the mentoring firm providing the most effective developmental support of a protégé. the mentor-protégé program manager will recommend an award winner to the administrator of gsa.',\n", + " '(e) osbu mentor-protégé annual conference. at the conclusion of each year in the mentor-protégé program, mentor firms will be invited to brief contracting officers, program leaders, office directors, and other guests on their experience and progress under the program. participation is voluntary.',\n", + " '519.7005 measurement of program success.',\n", + " 'the overall success of the gsa mentor-protégé program encompassing all participating mentors and protégés will be measured by the extent to which it results in:',\n", + " '(a) an increase in the number, dollar value, and percentage of subcontracts awarded to protégés by mentor firms under gsa contracts since the date of entry into the program. the baseline that demonstrates an increase is determined by comparing the number and total dollar amount of subcontract awards made to the identified protégé firm(s) during the two preceding fiscal years (if any) that are listed in application;',\n", + " '(b) an increase in the number and dollar value of contract and subcontract awards (including percentage of subcontract awards) to protégé firms since the date of the protégé’s entry into the program (under gsa contracts and contracts awarded by other federal agencies);',\n", + " '(c) an increase in the number and dollar value of subcontracts awarded to a protégé firm by its mentor firm; and',\n", + " '(d) an increase in subcontracting with protégé firms in industry categories where they have not traditionally participated within the mentor firm’s activity (i.e., the protégé is expanding its field of expertise or is increasing its opportunities in areas where it has not traditionally performed).',\n", + " '(e) assessments of the semi-annual reports submitted by the mentors and “lessons learned” evaluation submitted by the mentors and protégés to the gsa mentor-protégé program manager.',\n", + " '519.7006 mentor firms.',\n", + " '(a) mentors must be:',\n", + " '(1) a large business prime contractor that is currently performing under an approved subcontracting plan as required by far 19.7 - small business mentors are exempted; or',\n", + " '(2) a small business prime contractor that can provide developmental assistance to enhance the capabilities of protégés to perform as contractors, subcontractors, and suppliers;',\n", + " '(b) must be eligible (not listed in the “excluded parties list system”) for u.s. government contracts and not excluded from the mentor-protégé program under section 519.7014(b);',\n", + " '(c) must be able to provide developmental assistance that will enhance the ability of protégés to perform as contractors and subcontractors; and',\n", + " '(d) must provide semi-annual reports detailing the assistance provided and the cost incurred in supporting protégés.',\n", + " '519.7007 protégé firms.',\n", + " '(a) for selection as a protégé, a firm must be:',\n", + " '(1) a small business concern, small disadvantaged business concern, veteran-owned small business concern, service-disabled veteran-owned small business concern, hubzone small business concern, or women-owned small business concern;',\n", + " '(2) small for the naics code the prime contractor/mentor assigns to the subcontract; and',\n", + " '(3) eligible (not listed in the “excluded parties list system”) for u.s. government contracts and not excluded from the mentor-protégé program under section 519.7014(b).',\n", + " '(b) a protégé firm may self-represent to a mentor firm that it meets the requirements set forth in paragraph (a) of this section. mentors may check the central contractor registration (ccr) at www.ccr.gov to verify that the self-representation of the potential protégé meets the specified small business and socioeconomic category eligibility requirements (see far 19.703(b) and (d)). hubzone and small disadvantaged business status eligibility and documentation requirements are determined according to 13 cfr parts 124 and 126.',\n", + " '(c) a protégé firm must not have another formal, active mentor-protégé relationship under gsa’s mentor-protégé program but may have an active mentor-protégé relationship under another agency’s program.',\n", + " '519.7008 selection of protégé firms.',\n", + " '(a) mentor firms will be solely responsible for selecting protégé firms. mentors are encouraged to select from a broad base of small business concerns including small disadvantaged business concerns, women-owned small business concerns, veteran-owned small business concerns, service-disabled veteran-owned small business concerns, and hubzone small business concerns. a protégé must be either a current subcontractor or a newly selected subcontractor for the prime contractor’s gsa contract.',\n", + " '(b) mentor firms may have more than one protégé. gsa reserves the right to limit the number of protégés participating under each mentor firm.',\n", + " '(c) the selection of protégé firms by mentor firms is not protestable, except for a protest regarding the size or eligibility status of an entity selected by a mentor to be a protégé. such protests shall be handled in accordance with far 19.703(b). the contracting officer shall notify the office of small business utilization (osbu) of the protest.',\n", + " '519.7009 application process.',\n", + " '(a) prime contractors interested in becoming a mentor firm must apply in writing by submitting the gsa form 3695 to the gsa mentor-protégé program manager, at gsa office of small business utilization (e), washington, dc 20405. the application shall include the mentor-protégé agreement and will be evaluated for approval based on the extent to which the company plans to provide developmental assistance.',\n", + " '(b) the application must contain:',\n", + " '(1) a statement that the mentor firm is currently performing under at least one active approved subcontracting plan (small business exempted) and the firm is eligible, as of the date of application, for the award of federal contracts;',\n", + " '(2) the number of proposed protégé arrangements;',\n", + " '(3) data on all current gsa contracts, and subcontracts including the contract/subcontract number(s), type of contract(s), period of performance (including options), contract/subcontract value(s) including options, technical program effort(s) (program title), name of gsa project manager or contracting officer’s representative (including contact information), name of contracting officer(s) and contact information, and awarding gsa installation;',\n", + " '(4) data on total number and dollar value of subcontracts awarded under gsa prime contracts within the past 2 years and the number and dollar value of such subcontracts awarded to entities who are proposed protégés;',\n", + " '(5) information on the proposed types of developmental assistance. for each proposed mentor-protégé relationship include information on the company’s ability to provide developmental assistance to the identified protégé firm and how that assistance will potentially increase subcontracting opportunities for the protégé firm, including subcontracting opportunities in industry categories where these entities are not dominant in the company’s current subcontractor base; and',\n", + " '(6) agreement information as listed in 519.7010.',\n", + " '519.7010 agreement contents.',\n", + " 'the contents of the agreement must contain:',\n", + " '(a) names, addresses (including facsimile, e-mail, and homepage) and telephone numbers of mentor and protégé firms and the name, telephone number, and position title within both firms of the person who will oversee the agreement.',\n", + " '(b) an eligibility statement from the protégé stating that it is a small business, its primary naics code, and when applicable the type of small business (small disadvantaged business concern, hubzone small business concern, women-owned small business concern, veteran-owned small business concern, or service-disabled veteran-owned small business concern).',\n", + " '(c) a description of the type of developmental assistance that will be provided by the mentor firm to the protégé firm (see 519.7012).',\n", + " '(d) milestones for providing the identified developmental assistance.',\n", + " '(e) factors to assess the protégé firm’s developmental progress under the program.',\n", + " '(f) the anticipated dollar value and type of subcontracts that may be awarded to the protégé firm consistent with the extent and nature of mentor firm’s business, and the period of time over which they may be awarded.',\n", + " '(g) program participation term: state the period of time over which the developmental assistance will be performed.',\n", + " '(h) mentor termination procedures: describe the procedures applicable to the mentor firm when notifying the protégé firm, in writing and at least 30 days in advance, of the mentor firm’s intent to voluntarily withdraw its participation in the program, or to terminate the agreement.',\n", + " '(i) protégé termination procedures: describe the procedures applicable to the protégé firm when notifying the mentor firm, in writing at least 30 days in advance, of the protégé firm’s intent to terminate the mentor-protégé agreement.',\n", + " '(j) plan for accomplishing contract work should the mentor-protégé agreement be terminated or a party excluded under 519.7014(b). the mentor’s prime contract with gsa continues even if the mentor-protégé agreement or the mentor-protégé program is discontinued.',\n", + " '(k) the protégé must agree to provide input into the mentor firm’s semi-annual reports (see 519.7015). the protégé must submit a “lessons learned” evaluation along with the mentor firm at the conclusion of the mentor-protégé agreement.',\n", + " '(1) other terms and conditions as specified by the mentor-protégé manager on a case-by-case basis.',\n", + " '519.7011 application review.',\n", + " '(a) the mentor-protégé program manager will review the information specified in section 519.7009(b) and 519.7010 to establish the mentor’s and protégé’s eligibility and to ensure all necessary information is included. if the application relates to a specific contract, then the mentor-protégé program manager will consult with the applicable contracting officer regarding the adequacy of the proposed agreement, as appropriate. the mentor-protégé program manager will complete its review no later than 30 days after receipt of the application. the contracting officer must provide feedback to the program manager no later than 10 days after receipt of the application.',\n", + " '(b) after the mentor-protégé program manager completes its review and provides written approval, the mentor may execute the agreement and implement the developmental assistance as provided under the agreement. the mentor-protégé program manager will provide a copy of the mentor-protégé agreement to the gsa contracting officer for any gsa contracts affected by the agreement.',\n", + " '(c) the agreement defines the relationship between the mentor and the protégé firms only. the agreement itself does not create any privity of contract or contractual relationship between the mentor and gsa nor the protégé and gsa.',\n", + " '(d) if the agreement is disapproved, the mentor may provide additional information for reconsideration. the mentor-protégé program manager will complete the review of any supplemental information no later than 30 days after its receipt. upon finding deficiencies that gsa considers correctable, the mentor-protégé program manager will notify the mentor and protégé and request correction of the deficiencies to be provided within 15 days.',\n", + " '519.7012 developmental assistance.',\n", + " 'the forms of developmental assistance a mentor can provide to a protégé include:',\n", + " '(a) management guidance relating to—',\n", + " '(1) financial management;',\n", + " '(2) organizational management;',\n", + " '(3) overall business management/planning; and',\n", + " '(4) business development.',\n", + " '(b) engineering and other technical assistance.',\n", + " '(c) loans.',\n", + " '(d) rent-free use of facilities and/or equipment.',\n", + " '(e) temporary assignment of personnel to the protégé for purpose of training.',\n", + " '(f) any other types of developmental assistance approved by the gsa mentor-protégé program manager.',\n", + " '519.7013 obligation.',\n", + " '(a) the mentor or protégé may terminate the agreement in accordance with 519.7010. the mentor will notify the mentor-protégé program manager and the contracting officer, in writing, at least 30 days in advance of the mentor firm’s intent to voluntarily withdraw from the program or to terminate the agreement, or upon receipt of a protégé’s notice to withdraw from the program.',\n", + " '(b) mentor and protégé firms will submit a “lessons learned” evaluation to the gsa mentor-protégé program manager at the conclusion or termination of each mentor-protégé agreement or withdrawal from the mentor-protégé program.',\n", + " '519.7014 internal controls.',\n", + " '(a) the gsa mentor-protégé program manager will manage the program. internal controls will be established by the mentor-protégé program manager to achieve the stated program objectives (by serving as checks and balances against undesired actions or consequences) such as:',\n", + " '(1) reviewing and evaluating mentor applications for realism, validity and accuracy of provided information;',\n", + " '(2) monitoring each mentor-protégé agreement by reviewing semi-annual progress reports submitted by mentors and protégés on protégé development to measure protégé progress against the master plan contained in the approved agreement;',\n", + " '(3) monitoring milestones in the agreement (see 519.7010); and',\n", + " '(4) evaluating “lessons learned” submitted by the mentor and the protégé as required by section 519.7013 to improve the gsa mentor-protégé program.',\n", + " '(b)(1) gsa has the authority to exclude mentor or protégé firms from participating in the gsa program.',\n", + " '(2) gsa may rescind approval of an existing mentor-protégé agreement if it determines that such action is in gsa’s best interest. the rescission shall be in writing and sent to the mentor and protégé after approval by the director of osbu. rescission of an agreement does not change the terms of any subcontract between the mentor and the protégé.',\n", + " '(3) exclusion from the program does not constitute a termination of the subcontract between the mentor and the protégé.',\n", + " '519.7015 reports.',\n", + " '(a) semi-annual reports shall be submitted by the mentor to the gsa mentor-protégé program manager to include information as outlined in section 552.219-76(c).',\n", + " '(b) protégés must agree to provide input into the mentor firm’s semi-annual reports detailing the assistance provided and goals achieved since agreement inception. however, for cost reimbursable contracts, costs associated with the preparation of these reports are unallowable costs under these government contracts and will not be reimbursed by the government.',\n", + " '(c) the gsa contracting officer, or if applicable the technical program manager, shall include an assessment of the prime contractor’s (mentor’s) performance in the mentor-protégé program in a quarterly “strengths and weaknesses” evaluation report. a copy of this assessment will be provided to the mentor-protégé program manager and to the mentor and protégé.',\n", + " '519.7016 program review.',\n", + " 'at the conclusion of each year in the mentor-protégé program (anniversary date of the mentor-protégé program), the prime contractor and protégé, as appropriate, will formally brief the gsa mentor-protégé program manager, the technical program manager, and the contracting officer regarding mentor-protégé program accomplishments pertaining to the approved agreement.',\n", + " '519.7017 contract clauses.',\n", + " '(a) the contracting officer shall insert the clause at 552.219-75, gsa mentor-protégé program, in all unrestricted solicitations (not set aside) and contracts that exceed the simplified acquisition threshold that offer subcontracting opportunities or in the case of a small business, that can offer developmental assistance to a small business protégé.',\n", + " '(b) the contracting officer shall insert the clause at 552.219-76, mentor requirements and evaluation, in contracts anticipated to exceed the simplified acquisition threshold where the prime contractor has signed a mentor-protégé agreement with gsa.',\n", + " 'i cannot live',\n", + " 'i will not die without you',\n", + " 'i cannot live',\n", + " 'i will not die without you',\n", + " 'i cannot live',\n", + " 'i will not die without you',\n", + " 'i will not die without you',\n", + " 'i will not die without you',\n", + " 'i will not die without you',\n", + " 'dream in warmth',\n", + " 'dream in warmth',\n", + " 'dream in warmth',\n", + " 'dream in warmth',\n", + " 'dream in warmth',\n", + " 'dream in warmth',\n", + " 'dream in warmth',\n", + " \"'till winter comes\",\n", + " 'dream in warmth',\n", + " \"'till winter comes\",\n", + " 'dream in warmth',\n", + " \"'till winter comes\",\n", + " 'dream in warmth',\n", + " \"'till winter comes\",\n", + " 'dream in warmth',\n", + " \"'till winter comes\",\n", + " 'tears me down like fall',\n", + " 'dream in warmth',\n", + " \"'till winter comes\",\n", + " 'tears me down like fall',\n", + " 'dream in warmth',\n", + " \"'till winter comes\",\n", + " 'tears me down like fall',\n", + " 'dream in warmth',\n", + " \"'till winter comes\",\n", + " 'tears me down like fall',\n", + " 'beware of the things hibernating in your skull',\n", + " 'the world was young, the mountains green,',\n", + " 'no stain yet on the moon was seen,',\n", + " 'no words were laid on stream or stone',\n", + " 'when durin woke and walked alone.',\n", + " 'he named the nameless hills and dells;',\n", + " 'he drank from yet untasted wells;',\n", + " 'he stooped and looked in mirrormere,',\n", + " 'and saw a crown of stars appear,',\n", + " 'as gems upon a silver thread,',\n", + " 'above the shadows of his head.',\n", + " 'the world was fair, the mountains tall,',\n", + " 'in elder days before the fall',\n", + " 'of mighty kings in nargothrond',\n", + " 'and gondolin, who now beyond',\n", + " 'the western seas have passed away:',\n", + " \"the world was fair in durin's day.\",\n", + " 'a king he was on carven throne',\n", + " 'in many-pillared halls of stone',\n", + " 'with golden roof and silver floor,',\n", + " 'and runes of power upon the door.',\n", + " 'the light of sun and star and moon',\n", + " 'in shining lamps of crystal hewn',\n", + " 'undimmed by cloud or shade of night',\n", + " 'there shone for ever fair and bright.',\n", + " 'there hammer on the anvil smote,',\n", + " 'there chisel clove, and graver wrote;',\n", + " 'there forged was blade, and bound was hilt;',\n", + " 'the delver mined, the mason built.',\n", + " 'there beryl, pearl, and opal pale,',\n", + " \"and metal wrought like fishes' mail,\",\n", + " 'buckler and corslet, axe and sword,',\n", + " 'and shining spears were laid in hoard.',\n", + " \"unwearied then were durin's folk;\",\n", + " 'beneath the mountains music woke:',\n", + " 'the harpers harped, the minstrels sang,',\n", + " 'and at the gates the trumpets rang.',\n", + " 'the world is grey, the mountains old,',\n", + " \"the forge's fire is ashen-cold;\",\n", + " 'no harp is wrung, no hammer falls:',\n", + " \"the darkness dwells in durin's halls;\",\n", + " 'the shadow lies upon his tomb',\n", + " 'in moria, in khazad-dûm.',\n", + " 'but still the sunken stars appear',\n", + " 'in dark and windless mirrormere;',\n", + " 'there lies his crown in water deep,',\n", + " 'till durin wakes again from sleep.',\n", + " 'i’m a celebrated skier, folks, and qualified to smirk',\n", + " 'i’ve skied more hills than any man from frisco to new york',\n", + " 'but talkin’ about the skiin’ i’ve done is my one and only quirk',\n", + " '‘specially when i’m standin’ in the barroom',\n", + " 'i’ll ski any hill that stands, my friends, regardless of the pitch',\n", + " 'on any kind of skis at all, i really don’t care which',\n", + " 'i could ski the cliffs of dover with nary a bloody hitch',\n", + " 'and haven’t i often proved it in the barroom',\n", + " 'i ski straight down the hill, you know, i never need traverse',\n", + " 'i ski every style of skiin’ from the arlberg to reverse',\n", + " 'i’m one of the finest skiers in the whole darn universe',\n", + " 'especially when i’m standin’ in the barroom',\n", + " 'i’ve looked for powered skiin’ all around the world, you know',\n", + " 'and when the powder’s really deep i’m first one on the tow',\n", + " 'with just my head above the top, that’s how i like my snow',\n", + " 'and i love to tell about it in the barroom',\n", + " 'the search for higher mountains has become my lifelong quest',\n", + " 'but i find a hill in asia that i really think is best',\n", + " 'so if anyone wants to find me i’ll be schussin’ everest',\n", + " 'as soon as i’ve had a couple in the barroom',\n", + " 'now when it comes to racin’ i’m the finest of the crop',\n", + " 'i can memorize a slalom course from bottom to the top',\n", + " 'i come roarin’ through the finish gate and i barely make a stop',\n", + " 'just in time to have a couple in the barroom',\n", + " 'and now my song has ended and i hope you will agree',\n", + " 'that if you need some pointers, why, you’d better send for me',\n", + " 'but i’m not worth a damn, you know, till i’ve emptied two or three',\n", + " 'of the very biggest schooners in the barroom',\n", + " 'the very biggest schooners in the barroom',\n", + " \"i've lost a life\",\n", + " 'again out of time',\n", + " \"and i don't see the way\",\n", + " \"but it's okay\",\n", + " \"this time i'm just a throwaway\",\n", + " \"you're free, the begging millions\",\n", + " 'i hear the awakening call, the age-old song',\n", + " \"i can't see\",\n", + " \"why can't you see\",\n", + " 'the poor machines',\n", + " 'cry/rise',\n", + " 'what a defeat',\n", + " 'what a shame',\n", + " 'now, the hindus do say that the self—the great self—is consciousness. but of course, that does not mean consciousness in the sense of our ordinary everyday consciousness. ordinary everyday consciousness is indeed a form of this kind of consciousness—shall we say, a manifestation of it?—but then there’s also consciousness which doesn’t notice, but nevertheless is highly responsive. the way your heart beats, the way you breathe, the way you grow your hair: you’re doing it, but you don’t know how it’s done.',\n", + " 'so therefore, just in the same way that conscious attention is not aware of all the other operations of the body, so in just that way we are not aware of our connection—indeed, our identity—with the fundamental self. when the leaves die and fall off the trees, or the fruit drops—next year: more leaves, more fruit. so, in the same way, when you and i die: more babies later. if the whole human race dies, you bet your life there are all kinds of things that feel that they’re human scattered throughout the multiplicity of galaxies. because this universe is a peopling universe, just as an apple tree apples. but because we are unconscious of the intervals we are not aware of the self with our conscious attention when conscious attention isn’t operating. but still, just as you don’t notice what your pineal gland, say, is doing at the moment, so in the same way you don’t notice the connections which tie us all together—not only here and now, but forever and ever and ever and ever.',\n", + " 'the difficulty, the basic reason why we don’t notice the self, is that the self doesn’t need to look at itself. a knife doesn’t need to cut itself. fire doesn’t need to burn itself. water doesn’t need to quench itself, and a light doesn’t need to shine on itself. so this is the fundamental problem of having some sort of awareness of the self. nevertheless, it is the whole contention of indian philosophy, especially what we call vedānta, that it is possible—in a certain way—to become aware of oneself in this deepest sense; to know that you are the totality.',\n", + " 'and this experience is the real substance of indian philosophy as a whole, both hindu and buddhist. it is called mokṣa, which roughly means ‘liberation.’ liberation from the hallucination that you are just poor little me. to wake up from that kind of hypnosis and discover that you are simply something—your organism, your physical body, your conscious attention (which is your ego)—that you are something being done by this vast, indescribable self, which is out of time, which has no beginning, no end, it neither continues nor discontinues. it’s beyond all categorization whatsoever, and so the upanishads say, all we can say of it positively is the negative. neti neti; ‘it is not this, not that.’ anything, therefore, you can formulate—imagine, picture—will not be the self.',\n", + " 'so when you are trying to know the self you have to get rid of every idea in your head. it doesn’t mean, as some people seem to think, that you have to get rid of every sense-impression. it isn’t as if you had to go into a catatonic state of total absorption. of course that can be done, but the full mokṣa—the full liberation—is when you come back out of absorption and see this everyday world just as it looks now, but see as clearly as clearly can be that it is all the self. you can become aware of this tremendous interconnectedness of everything, and that is what somebody who is mokṣa—who is liberated—sees. he sees, shall we say, that everything goes together.',\n", + " 'and that is, in a way, what we mean by ‘relativity.’ because relativity means ‘relatedness,’ just as fronts go with backs and tops with bottoms, insides with outsides, solids with spaces. so everything that there is goes together. and it makes no difference whether it lasts a long time or whether it lasts a short time. a galaxy goes together with all the universe just as much as a mosquito, which has a very short life. from the standpoint of the self, time is completely relative. you can have, if you scale it down, as much time between two of those very rapid drumbeats as you can in eons and eons and eons, and it’s all a question of point of view. or—to use a scientific expression—level of magnification.',\n", + " 'change your magnification and you see molecules. and we know by other methods of observation that it can get smaller and smaller and smaller, and that the spaces between these minute units are so vast that they’re comparable to the distances between the sun and the planets, in scale. so, also, with time. so, in this sense, there could be vast, vast universes full of empires, and battleships, and palaces, and brothels, and restaurants, and orchestras in the tip of your fingernail. and, on the other hand, we could be all going on in the tip of somebody else’s fingernail.',\n", + " 'it’s very important to understand not only the relativity of size and of time, but also of what there is. now, as you know, the human senses respond only to a very small band of the known spectrum of vibrations. we know, through instruments, of quite a vast spectrum, but we—as i say, with our senses—see only a little of it. if our senses were in some way altered we would see a rather different looking world we can do this, of course—we can put on special lenses to enable us to see heat, and then we see all the heat radiations coming out of people. and we say, well, i never noticed that about you before! but so, in the same way, you see, there are infinitely many possibilities of vibration, and of organs sensitive to those vibrations, so that there could be world within worlds within worlds, spaces within spaces, just like the many, many wavelengths of radio and television going on forever and ever in all directions. the possibilities are infinite.',\n", + " 'but having senses and noticing is a selective process. it picks out only certain ones, just as when you play the piano. you don’t take both arms and slam down all keys at once, you select. and so perception is a kind of piano-playing; it is picking out certain things as significant—that is to say, as constituting patterns. and the whole universe seems to be a process of playing with different patterns. but whatever it does, whatever it plays, in whatever dimension, on whatever scale of time or space, it’s all on the self.',\n", + " 'he was a great dog, a great friend best dog a kid could have',\n", + " \"he'll always be there, victor\",\n", + " 'when you lose someone you love, they never really leave you',\n", + " 'they just move into a special place in your heart',\n", + " \"i don't want him in my heart - i want him here with me\",\n", + " 'mr whiskers had a dream about you last night',\n", + " \"it's an omen\",\n", + " 'if mr whiskers dreams about you',\n", + " 'something big is gonna happen',\n", + " 'rise from your tomb!',\n", + " 'rise colossus, rise',\n", + " 'we shall be reunited once again',\n", + " 'come! come! welcome!',\n", + " \"you're alive! sparky, you're alive!\",\n", + " 'your dog is alive',\n", + " 'i thought that you were gone i never wanna lose you',\n", + " 'you brought an animal back from the dead?',\n", + " '4, 3, 2, 1',\n", + " 'boom!',\n", + " 'this man is in the way',\n", + " 'ahhh',\n", + " 'boom!',\n", + " 'ahhh',\n", + " 'it has something to do with the lightning',\n", + " \"i don't really understand it\",\n", + " 'with lightning and boom and hiss',\n", + " 'lightning is simply electricity',\n", + " 'the cloud is angry, making storms',\n", + " 'when the two ladders meet',\n", + " 'boom! the circuit is complete.',\n", + " 'we are wires and springs and cables',\n", + " 'to send the messages',\n", + " 'even after death, the wiring remains',\n", + " 'watch as the muscles respond to the electricity',\n", + " 'soon you shall be awakened',\n", + " 'tonight, we shall bring the dead to life!',\n", + " 'mr whiskers had a dream about you last night',\n", + " \"it's an omen\",\n", + " 'if mr whiskers dreams about you',\n", + " 'something big is gonna happen',\n", + " 'rise from your tomb!',\n", + " 'rise colossus, rise',\n", + " 'we shall be reunited once again',\n", + " 'come! come! welcome!',\n", + " \"you're alive! sparky, you're alive!\",\n", + " 'your dog is alive',\n", + " 'i thought that you were gone',\n", + " 'i never wanna lose you',\n", + " \"promise you'll never go running off, okay?\",\n", + " 'i want you to get down on your knees',\n", + " 'and i want you to ask me:',\n", + " 'what is my name',\n", + " 'what is my name',\n", + " 'what is my name',\n", + " 'what is my name',\n", + " 'what is my',\n", + " 'what is',\n", + " 'your name',\n", + " 'i have been looking for a killer',\n", + " \"and i'm not talking about meatballs\",\n", + " 'i am talking about steak',\n", + " 'steak',\n", + " 'steak',\n", + " 'yes...killer',\n", + " 'i commend myself to a death of no importance',\n", + " 'to the amputation of all seeking hands',\n", + " 'pulling, grasping, with the might of nations',\n", + " 'of sirens, in a never ending bloody-bliss',\n", + " 'to the death of mere savagery',\n", + " 'and the birth of pearly, white terror',\n", + " 'wild women with veins slashed and wombs spread',\n", + " 'singing songs of the death instinct',\n", + " 'in voices yet unheard',\n", + " 'praising nothing but the promise of death on earth',\n", + " 'laughing seas of grinning red, red eyes',\n", + " 'all washed ashore and devoured',\n", + " 'by hard and unseeing spiders',\n", + " 'i commend myself to a death beyond all hope of',\n", + " 'redemption',\n", + " 'beyond the desire for forgetfulness',\n", + " 'beyond the desire to feel all things at every moment',\n", + " 'but to never forget',\n", + " 'to kill for the sake of killing',\n", + " 'and with a pure and most happy heart',\n", + " 'extoll and redeem disease',\n", + " 'she was hanging...',\n", + " 'and her...',\n", + " 'and i asked you: well, well',\n", + " 'and ask you: well, well',\n", + " 'what would you do',\n", + " 'angel in the house tonight',\n", + " 'washed-up, on shore, the old yellow notebook',\n", + " 'out again',\n", + " 'i write from the bed',\n", + " 'as i did last',\n", + " 'year.',\n", + " 'will see the doctor,',\n", + " 'monday.',\n", + " '\"yes, doctor, weak legs, vertigo, head-',\n", + " 'aches and my back',\n", + " 'hurts.\"',\n", + " '\"are you drinking?\" he will ask.',\n", + " '\"are you getting your',\n", + " 'exercise, your',\n", + " 'vitamins?\"',\n", + " 'i think that i am just ill',\n", + " 'with life, the same stale yet',\n", + " 'fluctuating',\n", + " 'factors.',\n", + " 'even at the track',\n", + " 'i watch the horses run by',\n", + " 'and it seems',\n", + " 'meaningless.',\n", + " 'i leave early after buying tickets on the',\n", + " 'remaining races.',\n", + " '\"taking off?\" asks the motel',\n", + " 'clerk.',\n", + " '\"yes, it\\'s boring,\"',\n", + " 'i tell him.',\n", + " '\"if you think it\\'s boring',\n", + " 'out there,\" he tells me, \"you oughta be',\n", + " 'back here.\"',\n", + " 'so here i am',\n", + " 'propped up against my pillows',\n", + " 'again',\n", + " 'just an old guy',\n", + " 'just an old writer',\n", + " 'with a yellow',\n", + " 'notebook.',\n", + " 'something is',\n", + " 'walking across the',\n", + " 'floor',\n", + " 'toward',\n", + " 'me.',\n", + " \"oh, it's just\",\n", + " 'my cat',\n", + " 'this',\n", + " 'time.',\n", + " 'you have been waiting for this plastic hedonism all your life',\n", + " 'your life is bound by tragic masochism and i am the knife',\n", + " \"i am the chisel smuggled into the dadrock prison you're trapped in\",\n", + " \"and now it's time that we had a drastic schism where the fabulous win\",\n", + " 'because i am the boy of your dreams (“yeah, right!”)',\n", + " 'and my band makes you scream - but you are dead',\n", + " \"i'm well aware that this magic given to you will leave you aghast\",\n", + " 'ever since i was a child, i have had this rhythm playing loud and fast',\n", + " \"i couldn't handle it, went and smashed up lytham, hit up boys and girls\",\n", + " 'these beats and rhymes are the magic algorithm that will change the world',\n", + " 'i am the boy of your dreams (“yeah, right!”)',\n", + " 'and my band makes you scream - but you are dead',\n", + " 'farnsworth',\n", + " \"good news, everyone. we've got a very special delivery today.\",\n", + " 'fry',\n", + " \"who's it going to?\",\n", + " 'farnsworth',\n", + " 'me.',\n", + " 'bender',\n", + " 'another job well done.',\n", + " 'farnsworth',\n", + " \"no, i need it shipped to my office at mars university. it's a little experiment that may well win me the nobel prize.\",\n", + " 'leela',\n", + " 'in what field?',\n", + " 'farnsworth',\n", + " \"i don't care, they all pay the same.\",\n", + " 'fry',\n", + " 'is it dangerous?',\n", + " 'farnsworth',\n", + " 'oh, my, no. off we go!',\n", + " 'fry',\n", + " 'very impressive. back in the 20th century we had no idea there was a university on mars.',\n", + " 'farnsworth',\n", + " 'well, in those days mars was just a dreary, uninhabitable wasteland, uh, much like utah. but unlike utah, it was eventually made liveable, when the university was founded in 2636.',\n", + " 'leela',\n", + " 'they planted traditional college foliage: ivy, trees, hemp. soon the whole planet was terraformed.',\n", + " 'fry',\n", + " \"does that mean it's safe to breathe the air?\",\n", + " 'farnsworth',\n", + " 'of course.',\n", + " 'farnsworth',\n", + " 'over here is wong library. it has the largest collection of literature in the western universe.',\n", + " 'bender',\n", + " \"hey look. there's a chapter of my old robot fraternity; epsilon rho rho.\",\n", + " 'leela',\n", + " 'you went to college?',\n", + " 'bender',\n", + " \"of course, i'm bender. i went to bending college. i majored in bending.\",\n", + " 'fry',\n", + " 'what was your minor?',\n", + " 'bender',\n", + " 'robo-american studies.',\n", + " 'fratbot #1',\n", + " 'are you here to fumigate the moose head?',\n", + " 'bender',\n", + " \"uh, no, actually i'm an epsilon from way back.\",\n", + " 'fratbot #1',\n", + " \"eh, close enough. c'mon in.\",\n", + " 'bender',\n", + " \"thanks. here's your finger back.\",\n", + " 'bender',\n", + " 'all the coolest robots are in this fraternity.',\n", + " 'fratbot #2',\n", + " 'mate in 143 moves.',\n", + " 'fratbot #3',\n", + " 'oh, poo, you win again!',\n", + " 'bender',\n", + " 'uh-oh, nerds!',\n", + " 'fratbot #1',\n", + " \"allow me to introduce myself. i'm gearshift, chapter president. this is oily, and this here is fatbot.\",\n", + " 'bender',\n", + " \"you're all losers. my name's bender.\",\n", + " 'oily',\n", + " \"bender from bending state bender? wow, you're a legend around here!\",\n", + " 'fatbot',\n", + " 'i heard that in one single night you drank a whole keg, streaked across campus and crammed 58 humans into a phone booth.',\n", + " 'bender',\n", + " \"(modest) yeah, well, a lot of 'em were children. anyway i should get going.\",\n", + " 'gearshift',\n", + " \"no, bender, wait. we're the lamest frat on campus. even hillel has better parties than us. please, you've gotta stay and teach us how to be cool.\",\n", + " 'bender',\n", + " \"hmm, ok. but i'll need 10 kegs of beer, a continuous tape of louie louie and a regulation two-storey panty-raid ladder.\",\n", + " 'fatbot',\n", + " 'oh, boy! oh, boy! oh, boy!',\n", + " 'fry',\n", + " 'i tell you, being here really takes me back to my college days.',\n", + " 'man #1',\n", + " 'step right up, who wants to learn physics?',\n", + " 'man #2',\n", + " 'keep your hands inside the car at all time.',\n", + " 'fry',\n", + " 'good old coney island college! go whitefish!',\n", + " 'leela',\n", + " \"don't take this the wrong way, fry, but you don't seem like the educated type.\",\n", + " 'fry',\n", + " \"oh, yeah? read it and weep. i'm a certified college dropout.\",\n", + " 'leela',\n", + " 'please! everyone knows 20th century colleges were basically expensive daycare centres.',\n", + " 'farnsworth',\n", + " \"that's true. by current academic standards, you're merely a high school dropout.\",\n", + " 'fry',\n", + " \"what?! that's not fair. i deserve the same respect any other college dropout gets. by god, i'm gonna enroll here at mars university and drop out all over again!\",\n", + " 'leela',\n", + " \"you won't last two weeks.\",\n", + " 'fry',\n", + " 'aww, thanks for believing in me.',\n", + " 'amy',\n", + " \"yo, classmate. what you takin'?\",\n", + " 'fry',\n", + " \"oh, i don't know. hey, professor, what are you teaching this semester?\",\n", + " 'farnsworth',\n", + " 'same thing i teach every semester: the mathematics of quantum neutrino fields. i made up the title so that no student would dare take it.',\n", + " 'fry',\n", + " \"mathematics of wanton burrito meals. i'll be there!\",\n", + " 'farnsworth',\n", + " \"please, fry, i don't know how to teach; i'm a professor!\",\n", + " 'fry',\n", + " 'see you in class!',\n", + " 'farnsworth',\n", + " 'oh!',\n", + " 'fatbot',\n", + " 'this is gonna be great!',\n", + " 'bender',\n", + " 'bingo!',\n", + " 'fatbot',\n", + " 'oh, mama!',\n", + " 'bender',\n", + " \"oh, yeah! someone's been a bad computer! get a load of that!\",\n", + " 'meiderneyer',\n", + " \"i say, you've damaged our servants' quarters... and our servants.\",\n", + " 'chet',\n", + " 'this time robot house has gone too far.',\n", + " 'bender',\n", + " 'cheese it!',\n", + " 'fatbot',\n", + " \"(screaming) they're gonna catch us!\",\n", + " 'fry',\n", + " 'hey, pretty nice for a single. two desks, two chairs, a couple of beds. a woodpecker.',\n", + " 'leela',\n", + " \"i think that's probably your roommate.\",\n", + " 'fry',\n", + " \"oh, right, cool. (shouting) c'mon in, roomie! (talking) what the--?\",\n", + " 'monkey',\n", + " 'i call top bunk! ahh!',\n", + " 'fry',\n", + " \"my roommate's a monkey?\",\n", + " 'monkey',\n", + " \"(sarcastic) brilliant deduction, you're a credit to your species.\",\n", + " 'farnsworth',\n", + " \"ah, fry, i see you've met guenter!\",\n", + " 'fry',\n", + " 'you know each other?',\n", + " 'farnsworth',\n", + " 'guenter is my experiment. he was the top secret contents of this stinking crate.',\n", + " 'guenter',\n", + " \"i'd rather live in a crate than share a room with this dork.\",\n", + " 'leela',\n", + " 'so what makes guenter talk?',\n", + " 'fry',\n", + " 'is he genetically engineered?',\n", + " 'farnsworth',\n", + " \"oh, please! that's preposterous science-fiction mumbo-jumbo. guenter's intelligence actually lies in his electronium hat which harnesses the power of sunspots to produce cognitive radiation.\",\n", + " 'guenter',\n", + " \"you're wasting your breath, professor. he'll never understand a word of it.\",\n", + " 'fry',\n", + " 'i understood the word \"hat\"!',\n", + " 'farnsworth',\n", + " \"please, stop bickering. i arranged that you be roommates for a reason: so i'd only have to remember one phone number. now shake hands and make up.\",\n", + " 'fry',\n", + " 'you want a banana?',\n", + " 'guenter',\n", + " \"i don't eat bananas. i prefer banana-flavoured energy bars made from tofu.\",\n", + " 'fry',\n", + " \"i don't like you.\",\n", + " 'fry',\n", + " 'this is gonna be a cakewalk!',\n", + " 'teacher',\n", + " 'welcome to the history of the 20th century. look to your left, then to your right. then in nine other directions. one of the 12 of you will not pass this class.',\n", + " 'amy',\n", + " \"boring. let's hear about walter mondale already!\",\n", + " 'teacher',\n", + " 'be forewarned: the only sure way to get an a in this class is to have lived in the 20th century.',\n", + " 'fry',\n", + " 'swish!',\n", + " 'teacher',\n", + " 'you were saying, mr. fry?',\n", + " 'fry',\n", + " \"i'm from the 20th century. go ahead, ask me anything.\",\n", + " 'teacher',\n", + " 'very well. what device invented in the 20th century allowed people to view broadcast programmes in their own homes?',\n", + " 'fry',\n", + " 'ooh... i know this... whatyya call it? lite brite!',\n", + " 'guenter',\n", + " 'i believe the answer is the television.',\n", + " 'teacher',\n", + " 'very good mr... guenter.',\n", + " 'amy',\n", + " '(impressed) wow! smart and cute!',\n", + " 'vernon',\n", + " \"what i love about being dean of students is the peace and quiet and the respect i receive. now what's all this about?\",\n", + " 'woman',\n", + " 'dean vernon, the students from robot house are here.',\n", + " 'vernon',\n", + " 'robot house!',\n", + " 'bender',\n", + " 'hey, dean, nice looking model.',\n", + " 'vernon',\n", + " \"you keep away from it. you robots are a disgrace to this university. whenever a fire alarm is pulled, it's robot house. whenever the campus liquor store is looted, robot house. whenever a human corpse is desecrated--\",\n", + " 'bender',\n", + " 'now, i can explain that.',\n", + " 'vernon',\n", + " \"that's enough out of you. from this day forth, robot house is on dodecatupple-secret probation!\",\n", + " 'bender',\n", + " 'no fair!',\n", + " 'fatbot',\n", + " 'my mom is gonna kill me!',\n", + " 'vernon',\n", + " \"now if you'll excuse me, i have to get back to the one thing that's kept me sane these past eight years: my model ship.\",\n", + " 'gearshift',\n", + " 'fatbot! no!',\n", + " 'fatbot',\n", + " 'when i get nervous i get hungry.',\n", + " 'bender',\n", + " 'cheese it!',\n", + " 'vernon',\n", + " '(shouting; from inside) robot house!',\n", + " 'fry',\n", + " \"so, chrissy, we seem to be hitting it off. if you're not doing anything later might i escort you to a kegger?\",\n", + " 'chrissy',\n", + " 'not even if you were the last man on mars.',\n", + " 'guenter',\n", + " '(shouting) hey! you like banas?',\n", + " 'guenter',\n", + " '(shouting; from outside) i got her number. how do you like them bananas?',\n", + " 'farnsworth',\n", + " 'and therefore, by process of elimination, the electron must taste like grapeade.',\n", + " 'fry',\n", + " 'sorry, i overslept.',\n", + " 'farnsworth',\n", + " 'until 5pm?',\n", + " 'fry',\n", + " \"it's that obnoxious monkey. he kept me up all night with his constant thinking. just thinking and thinking. he's trying to make me look like an idiot.\",\n", + " 'farnsworth',\n", + " \"don't be jealous. without his special hat, guenter might be no more intelligent than you.\",\n", + " 'fry',\n", + " 'i hate that rodent!',\n", + " 'farnsworth',\n", + " \"fry, that monkey is my most important experiment. if you two don't stop fighting i'll have you both neutered.\",\n", + " 'fry',\n", + " \"that'll show him.\",\n", + " 'amy',\n", + " \"dean vernon, i'd like you to meet my parents, leo and inez.\",\n", + " 'vernon',\n", + " \"ah, mr. and mrs. wong, i'm so glad we could admit amy in exchange for your generous contribution.\",\n", + " 'mr. wong',\n", + " 'how much more for phi beta kappa?',\n", + " 'vernon',\n", + " 'how much you got?',\n", + " 'guenter',\n", + " \"sorry i'm late, i was off at a study session... with chrissy!\",\n", + " 'farnsworth',\n", + " \"oh, i'm glad you made it, guenter, because in honour of parents weekend i have a special surprise for you.\",\n", + " 'guenter',\n", + " '(horrified) mom? dad? what are you doing here? this is so humiliating.',\n", + " 'fry',\n", + " \"now these monkeys i like! what's that? you wanna come out?\",\n", + " 'guenter',\n", + " 'no! stop!',\n", + " 'chet',\n", + " 'i say.',\n", + " 'farnsworth',\n", + " \"what's that they're flinging at us?\",\n", + " 'guenter',\n", + " 'oh, dear lord, all over the dean!',\n", + " 'fry',\n", + " \"hey, uh, guenter? why don't you get up on the chandelier with your parents and i'll take a picture?\",\n", + " 'bender',\n", + " \"well, looks like the party's winding down. let's take a road trip to tijuana and get fatbot some action.\",\n", + " 'fatbot',\n", + " \"it's my first time, i'm really nervous.\",\n", + " 'vernon',\n", + " '(shouting) robot house!',\n", + " 'leela',\n", + " 'what you did to guenter was cruel. at the risk of sounding like an after-school special, i think we learned who the real animal was today.',\n", + " 'fry',\n", + " 'you mean peer pressure?',\n", + " 'fry',\n", + " \"look out! he's got a gun!\",\n", + " 'guenter',\n", + " '(crying) leave me alone.',\n", + " 'leela',\n", + " \"hey, what's going on? i thought you didn't like bananas.\",\n", + " 'guenter',\n", + " \"(crying) of course i do. i try so hard to fit in but seeing my parents act like that made me realise i'm just a primative beast.\",\n", + " 'fry',\n", + " 'hey, hey, cheer up. not everyone turns out like their parents. i mean, look at me. my folks were honest hardworking people.',\n", + " 'leela',\n", + " \"besides, guenter, you're not like other monkeys. you've got the hat.\",\n", + " 'guenter',\n", + " \"(crying) so what? i mean, sure, it looks cool and it makes me smart but it doesn't make me happy.\",\n", + " 'leela',\n", + " \"that's so sad. i didn't even know monkeys could cry.\",\n", + " 'guenter',\n", + " \"(crying) they can't. it's all the hat.\",\n", + " 'fry',\n", + " \"look, guenter, if you're so miserable here, maybe you should just go back to the jungle.\",\n", + " 'guenter',\n", + " \"the jungle. but i couldn't do that to the professor. i'm his prize experiment, and he's like a father to me.\",\n", + " 'leela',\n", + " \"but he's not your father. that guy in the punch bowl was your father.\",\n", + " 'farnsworth',\n", + " \"look at him, i'm so proud.\",\n", + " 'fry',\n", + " 'thanks, professor!',\n", + " 'farnsworth',\n", + " 'not you.',\n", + " 'fry',\n", + " '(screaming) ow!',\n", + " 'student',\n", + " 'hey!',\n", + " 'farnsworth',\n", + " \"oh, i always feared he might run off like this. why? why? why didn't i break his legs?\",\n", + " 'farnsworth',\n", + " '(crying) oh, poor guenter.',\n", + " 'leela',\n", + " 'so he just ran away in the middle of the exam?',\n", + " 'farnsworth',\n", + " \"i'm afraid so. all he handed in was a paper smeared with feces. he tied with fry.\",\n", + " 'fry',\n", + " 'i guess he realised i was right when i told him to go back to the jungle.',\n", + " 'farnsworth',\n", + " 'you what? after i spent months slaving over a hot monkey brain?',\n", + " 'fry',\n", + " \"hey, don't blame me. you tried to force guenter to be a human but he's an animal. he belongs in the wild. or in the circus on one of those tiny tricycles. now that's entertainment.\",\n", + " 'farnsworth',\n", + " \"but guenter's obviously better off being intelligent. tell him, leela.\",\n", + " 'leela',\n", + " \"nuh-uh, i'm staying out of this. now here's my opinion: what we should do is...\",\n", + " 'farnsworth',\n", + " 'what?',\n", + " 'leela',\n", + " \"i said we'll go to the jungle and let guenter decide once and for all.\",\n", + " 'farnsworth',\n", + " 'what?',\n", + " 'vernon',\n", + " 'you all know the rules. whichever house wins the regatta becomes head of the greek council. and should that house currently be on any type of multiple secret probation, it will be lifted and i will be forced to serve as grand marshal of a parade honouring them.',\n", + " 'chet',\n", + " 'i say, robot house, your water craft is as ill-designed as you yourselves.',\n", + " 'meiderneyer',\n", + " 'good one, chet!',\n", + " 'bender',\n", + " 'oh, yeah? watch this!',\n", + " 'chet',\n", + " 'well, i never!',\n", + " 'vernon',\n", + " 'fraternities, on your marks.',\n", + " 'bender',\n", + " 'hey!',\n", + " 'fry',\n", + " 'wow, the jungles on mars look just like the jungles on earth.',\n", + " 'farnsworth',\n", + " 'jungles? on earth?',\n", + " 'leela',\n", + " \"i see some movement up there. i think it's him.\",\n", + " 'farnsworth',\n", + " 'stand back.',\n", + " 'leela',\n", + " 'oops.',\n", + " 'farnsworth',\n", + " \"don't worry. they'll be fine once the tranquiliser wears off.\",\n", + " 'fry',\n", + " \"there's our man!\",\n", + " 'leela',\n", + " \"professor, you'll offer guenter the hat and fry, you'll offer him the banana. we'll let him choose whether he wants to be intelligent or just a mindless animal.\",\n", + " 'farnsworth',\n", + " 'come on, guenter, take the hat.',\n", + " 'fry',\n", + " 'no, the banana, the banana!',\n", + " 'farnsworth',\n", + " 'consider the philosophical and metaphysical ramifications of the--',\n", + " 'fry',\n", + " 'banana, banana, banana!',\n", + " 'leela',\n", + " \"wait, what's that sound?\",\n", + " 'gearshift',\n", + " '(shouting) hey, bender, you sure this is a short-cut?',\n", + " 'bender',\n", + " '(shouting) not as sure as i was an hour ago!',\n", + " 'vernon',\n", + " 'and the winner is... robot house?!',\n", + " 'farnsworth',\n", + " 'oh, dear lord!',\n", + " 'leela',\n", + " 'no! no!',\n", + " 'farnsworth',\n", + " \"thank god this log is sturdy. (shouting) put on the hat, guenter! you're the only one who can save us! (muttering) stupid monkey.\",\n", + " 'fry',\n", + " 'no.',\n", + " 'leela',\n", + " 'not there.',\n", + " 'farnsworth',\n", + " 'keep trying.',\n", + " 'guenter',\n", + " \"eureka! the hat goes on the head. it's all so obvious now!\",\n", + " 'leela',\n", + " '(shouting) help us, guenter!',\n", + " 'guenter',\n", + " 'oh, my goodness. (shouting) hang on. i need to do some calculations. got it! grab on!',\n", + " 'farnsworth',\n", + " \"we're saved!\",\n", + " 'fry',\n", + " \"'preciate it guenter!\",\n", + " 'leela',\n", + " 'oh, no! hurry, guenter, climb up the vine. you can still save yourself.',\n", + " 'guenter',\n", + " \"why bother? i've got nothing to live for. i was miserable as a genius, and as a monkey, i was so dumb i tried to wear a hat on my butt. (sadly) there's just no place for me in this world. (normal) although, on the other hand...\",\n", + " 'farnsworth',\n", + " \"oh, that poor, sweet monkey. well let's go gather him up. there's no sense letting him go to waste.\",\n", + " 'fry',\n", + " \"guenter! you're alive!\",\n", + " 'guenter',\n", + " 'i guess the hat must have broke my fall.',\n", + " 'farnsworth',\n", + " 'it seems to be working at only half-capacity, but i can fix it.',\n", + " 'guenter',\n", + " 'no, wait! i like it like this. i actually feel sort of happy.',\n", + " 'farnsworth',\n", + " 'but what about your super-intelligence?',\n", + " 'guenter',\n", + " \"when i had that there was too much pressure to use it. all i want out of life is to be a monkey of moderate intelligence who wears a suit. that's why i've decided to transfer to business school!\",\n", + " 'farnsworth',\n", + " '(screaming) nooo!',\n", + " 'bender',\n", + " '(shouting) come on, everyone! big party in robot house!',\n", + " 'the end',\n", + " 'oh i thought i saw you',\n", + " 'working on the night shift',\n", + " 'talking to a one-way radio',\n", + " 'laughing at the dancers, jumping out the spaceships',\n", + " 'out into the fleek white studio',\n", + " 'back when we were hot shit we used to play with matches',\n", + " 'we were living like a couple criminals',\n", + " 'remember when you broke it',\n", + " 'running through the tall grass',\n", + " 'thought that you could always be an animal',\n", + " 'pulling from an apple core',\n", + " 'nothing mattered more',\n", + " 'phased out, driving with the brakes out',\n", + " 'slipping through the deep end',\n", + " \"you're waking up on the shore\",\n", + " 'no doubt, sleeping high with the wrong crowd',\n", + " 'now we twist, now we shout',\n", + " \"it's easy living in a glass house\",\n", + " 'no more doubt, no more outs',\n", + " 'but we can never go back there',\n", + " 'but we can never go back there',\n", + " 'to the golden daze',\n", + " 'to the golden daze',\n", + " 'looking through a fishbowl',\n", + " 'back into the deep blue',\n", + " \"like you're in a blurred out video\",\n", + " 'always got the best view',\n", + " 'leaning out the window',\n", + " 'falling back into your stereo',\n", + " 'listening to crossroads',\n", + " 'talking in our own cults',\n", + " 'feeling like the kings of the carnival',\n", + " 'shook it up and tossed it',\n", + " 'caught it then we lost it',\n", + " 'we were missing fundamental particles',\n", + " 'now we twist, now we shout',\n", + " \"it's easy living in a glass house\",\n", + " 'no more doubt, no more outs',\n", + " 'but we can never go back there',\n", + " 'but we can never go back there',\n", + " 'to the golden daze',\n", + " 'to the golden daze',\n", + " 'crashed on the highway shoulder',\n", + " 'when you left and nobody got sober',\n", + " 'cut the lights kill the truth',\n", + " 'flash from a polaroid camera',\n", + " 'silence in the night getting louder',\n", + " \"oh they're not coming for you\",\n", + " 'we can never go',\n", + " 'we can never go',\n", + " 'we can never go',\n", + " 'we can never go',\n", + " 'we can never go',\n", + " 'we can never go',\n", + " 'we can never go',\n", + " 'we can never go back there',\n", + " 'but we can never go back there',\n", + " 'to the golden daze',\n", + " 'to the golden daze',\n", + " 'to the golden daze',\n", + " 'to the golden daze',\n", + " 'to the golden daze',\n", + " 'batman',\n", + " 'batman',\n", + " 'this is batman.',\n", + " 'and robin',\n", + " 'with exclusive news for khj listeners',\n", + " \"it's the batphone secret number contest presented by boss radio\",\n", + " \"there's a terrific prize for the first khj listener to guess the secret number of our batphone.\",\n", + " \"you've seen us answering the batphone on tv. it's a special hotline commissioner gordon uses to contact us whenever there's trouble\",\n", + " \"there's seven digits in the batphone's secret number. listen to what you'll win if yours is the first correct answer received by khj.\",\n", + " \"you'll visit batman and me at 20th century fox and be our guest for lunch at the studio\",\n", + " \"then you'll ride to the batcave in the batmobile, where robin and i will present you with a 1966 console color television set\",\n", + " 'to visit us and win the color tv, just guess the secret batphone number',\n", + " \"watch for robin and me on channel 7, wednesday and thursday nights, and keep it on khj for more clues in the batphone's secret number contest\",\n", + " 'oh i should of kept',\n", + " 'my mouth shut',\n", + " \"and i don't sleep\",\n", + " 'i begin hyperventilating',\n", + " \"because i'm crazy\",\n", + " \"i'm crazy\",\n", + " \"i'm crazy\",\n", + " 'i know it baby',\n", + " \"i'm crazy\",\n", + " \"i'm crazy\",\n", + " \"i've it said it once again\",\n", + " \"you're cheating on me\",\n", + " 'but look what i found',\n", + " 'her red sock on the ground',\n", + " \"because i'm crazy\",\n", + " \"i'm crazy\",\n", + " \"i'm crazy\",\n", + " 'i know it baby',\n", + " \"i'm crazy\",\n", + " \"i'm crazy\",\n", + " \"so why don't you look the other way?\",\n", + " \"talkin' to me the way you did\",\n", + " \"i've it said it once again\",\n", + " \"you're cheating on me\",\n", + " 'but look what i found',\n", + " 'her red sock on the ground',\n", + " \"because i'm crazy\",\n", + " \"i'm crazy\",\n", + " \"i'm crazy\",\n", + " 'i know it baby',\n", + " \"i'm crazy\",\n", + " \"i'm crazy\",\n", + " ...]},\n", + " 'pop': {'meta': {'train_data': ['when i love you, do you feel it?',\n", + " 'i know it makes you happy when i say \"alright\"',\n", + " 'when i love you, do you feel it?',\n", + " \"when i hold you, we're an island\",\n", + " 'and you know it makes me happy when you say \"alright\"',\n", + " \"when i hold you, we're an island\",\n", + " \"i know the road's a hard one\",\n", + " \"but it's easy when you're not alone\",\n", + " 'so help me to remember, please',\n", + " \"lady, i believe we'll get home\",\n", + " 'when i love you, do you feel it?',\n", + " 'you know it makes me happy when you say \"alright\"',\n", + " 'when i love you, do you feel it?',\n", + " \"i know the road's a hard one\",\n", + " \"but it's easy when you're not alone\",\n", + " 'so help me to remember, please',\n", + " \"lady, i believe we'll get home\",\n", + " 'when i love you, do you feel it?',\n", + " 'you know it makes me happy when you say \"alright\"',\n", + " \"when i love you, we're an island\",\n", + " \"i know the road's a hard road\",\n", + " \"but it's easy when you're not alone\",\n", + " 'help me to remember',\n", + " \"lady, i believe we'll make it home, get home\",\n", + " \"well, i rollin' 'n' tumbled\",\n", + " 'i cried the whole night long',\n", + " \"oh well, i rollin' 'n' tumbled\",\n", + " 'i cried the whole night long',\n", + " \"oh well, i had the feelin', baby\",\n", + " \"something's goin' on wrong\",\n", + " 'oh well, i really love you, baby',\n", + " \"come on and say you'll be mine\",\n", + " 'oh well, i really love you, baby',\n", + " \"come on and say you'll be mine\",\n", + " \"well, if you don't like my taters\",\n", + " \"don't you dig up my vine\",\n", + " 'oh well, i cried last night, mama',\n", + " 'i cried the night before',\n", + " 'oh well, i cried last night, mama',\n", + " 'i cried the night before',\n", + " \"oh well, i had the feelin', baby\",\n", + " \"you don't love me no more\",\n", + " 'well, if the river was whiskey',\n", + " \"i was a divin' duck\",\n", + " 'well, if the river was whiskey',\n", + " \"i was a divin' duck\",\n", + " 'well, i would swim to the bottom',\n", + " \"baby, i wouldn't come up\",\n", + " \"oh well, i rollin' 'n' tumbled\",\n", + " 'i cried the whole night long',\n", + " \"oh well, i rollin' 'n' tumbled\",\n", + " 'i cried the whole night long',\n", + " \"oh well, i had the feelin', baby\",\n", + " \"something's goin' on wrong\",\n", + " 'the duprees \"have you heard\" track 7',\n", + " 'from the cd \"the best of the duprees\"',\n", + " 'copyright 1990 collectables records corp',\n", + " 'box 35 narberth, pa 19072',\n", + " 'have you heard?',\n", + " '(ahah ahh...ahah ahh....ahah ahh...ahhh)',\n", + " 'have you heard',\n", + " '(wahh...wahh...ahh)',\n", + " \"who's kissing her now?\",\n", + " '(doo...doo...ooo)',\n", + " \"do you think she's blue?\",\n", + " \"did she say we're through?\",\n", + " 'has she found someone new?',\n", + " '(ahhh...ahhh...ahhh)',\n", + " 'have you seen',\n", + " '(ahh...ahhh...ahh)',\n", + " 'the way she looks now?',\n", + " '(doo..doo...ooo)',\n", + " 'does she act the same?',\n", + " 'when she hears my name?',\n", + " \"does she say who's to blame?\",\n", + " 'my arms are empty',\n", + " 'my nights are long and lonely',\n", + " 'i miss her so',\n", + " '(miss her so)',\n", + " 'each new tomorrow',\n", + " 'can only bring me sorrow',\n", + " 'i love her sooooooo',\n", + " 'have you heard',\n", + " '(ahhh...ahhh...ahh)',\n", + " 'of their wedding day?',\n", + " '(doo...doo..ooo)',\n", + " 'rumors come and go',\n", + " \"still i'd like to know\",\n", + " \"if it's true, won't you tell me?\",\n", + " 'have you heard?',\n", + " 'have you heard',\n", + " '(ahhh...ahhh...ahhh)',\n", + " 'of their wedding day?',\n", + " '(doo...doo...ooo)',\n", + " 'rumors come and go',\n", + " \"still i'd like to know\",\n", + " \"if it's true won't you tell me?\",\n", + " 'have you heard?',\n", + " 'the least wishes are orders',\n", + " 'born, raised and cornered',\n", + " 'i was kept, fed and watered',\n", + " 'they tied me to the radiator',\n", + " 'i was kicked around and locked down',\n", + " 'left in the cold to self-harm',\n", + " 'this is all that i know',\n", + " 'naked but safe and lifelessly yours',\n", + " 'the least wishes are orders',\n", + " 'born, raised and cornered',\n", + " 'i was kept, fed and watered',\n", + " 'they tied me to the radiator',\n", + " 'i was kicked around and locked down',\n", + " 'left in the cold to self-harm',\n", + " 'this is all that i know',\n", + " 'naked but safe and lifelessly yours',\n", + " 'keep me fed, keep me watered',\n", + " 'naked but safe',\n", + " 'keep me fed, keep me watered',\n", + " 'naked but safe',\n", + " 'keep me fed, keep me watered',\n", + " 'naked but safe',\n", + " 'keep me fed, keep me watered',\n", + " 'naked but safe',\n", + " 'naked but safe',\n", + " 'naked but safe',\n", + " 'naked but safe',\n", + " 'keep me fed, keep me watered',\n", + " 'keep me fed, keep me watered',\n", + " 'keep me fed, keep me watered',\n", + " 'keep me fed, keep me watered',\n", + " 'i know nothing is endless',\n", + " \"so please my love, don't let it go\",\n", + " 'time is fading away',\n", + " \"and i atone for what i've done\",\n", + " 'so give it a try',\n", + " \"and we'll be together maybe\",\n", + " 'give it a try',\n", + " 'and this pain will have to end',\n", + " \"don't let it go\",\n", + " 'lady love, where did you go?',\n", + " 'my heart is turning black',\n", + " 'i divert myself with nothing',\n", + " 'forsaking the things we shared',\n", + " 'so give it a try',\n", + " \"and we'll be together maybe\",\n", + " 'give it a try',\n", + " 'and this pain will have to end',\n", + " \"don't let it go\",\n", + " \"i don't let it go\",\n", + " 'you will always be so far away',\n", + " 'too far away to stay',\n", + " 'i remember all the things we said',\n", + " \"there's no more meaning\",\n", + " 'find a way, find a sense to be',\n", + " \"to feel i'm worthy\",\n", + " 'day to day i live',\n", + " 'and all remains the same',\n", + " 'give it a try',\n", + " \"and we'll be together maybe\",\n", + " 'give it a try',\n", + " 'and this pain will have to end',\n", + " 'give it a try',\n", + " \"and we'll be together maybe\",\n", + " 'give it a try',\n", + " 'and this pain will have to end',\n", + " \"don't let it go\",\n", + " 'i know',\n", + " 'i know',\n", + " 'i know',\n", + " \"i don't let it go\",\n", + " 'take me away from here',\n", + " 'up where the air is clear',\n", + " \"and there's nothing to do\",\n", + " 'and nothing to say',\n", + " 'you say all men are good',\n", + " 'well i would be if i could',\n", + " \"but there's nothing to see\",\n", + " \"so don't get in my way\",\n", + " 'so sit and talk some more',\n", + " \"if you want i'll give you all\",\n", + " \"but they don't even think\",\n", + " \"they'll just take it away\",\n", + " 'why do you bother',\n", + " 'if you see the world that way?',\n", + " 'why does it matter',\n", + " 'if you see the world that way?',\n", + " 'why do you bother?',\n", + " 'nothing left to brave',\n", + " \"nobody's listening\",\n", + " 'well you gotta believe',\n", + " \"that it's all just a game\",\n", + " 'so take me away from here',\n", + " 'and take me away from fear',\n", + " 'and take me away',\n", + " \"things ain't just the same\",\n", + " 'why do you bother',\n", + " 'if you see the world that way?',\n", + " 'why does it matter',\n", + " 'if you see the world that way?',\n", + " 'why do you bother',\n", + " 'if you see the world that way?',\n", + " 'why do you bother?',\n", + " 'got a feeling that i should be leaving',\n", + " 'got a notion to stay',\n", + " \"there's a feeling that just won't turn you away\",\n", + " 'do i turn the lights out',\n", + " 'and dare to take a step outside',\n", + " \"honey, all that we've got\",\n", + " 'is the night and the day',\n", + " 'why do you bother',\n", + " 'if you see the world that way?',\n", + " 'why does it matter',\n", + " 'if you see the world that way?',\n", + " 'why do you bother',\n", + " 'if you see the world that way?',\n", + " 'i remember you said when you were free',\n", + " 'shall i go to suburbia, or stay here and take it easy?',\n", + " 'but, back you came and suddenly aged',\n", + " 'a keeper of cages',\n", + " 'a slave to your wages',\n", + " \"you'd say you'd got most out your education\",\n", + " \"but that's just not good enough\",\n", + " \"you could say that it's me but\",\n", + " 'chorus:',\n", + " 'the trouble is',\n", + " \"it's just like us\",\n", + " 'it now seems quaint',\n", + " 'so much time has passed',\n", + " \"now that we've grown up\",\n", + " \"we've got to own up at last\",\n", + " 'you were ambitious',\n", + " 'you knew what was there',\n", + " \"now it's the cab fare and nowhere to take the aurprayer (sic)\",\n", + " 'like the sound of shouting out side my room',\n", + " \"that's just not cool enough\",\n", + " \"i could say that it's you but\",\n", + " 'chorus',\n", + " 'my body likes routine',\n", + " \"my brain can't take it\",\n", + " 'and i never trust my luck',\n", + " \"you could say that it's me but\",\n", + " 'chorus',\n", + " \"you could say that it's useless\",\n", + " 'but at least i keep in touch',\n", + " 'crack me open with a brick',\n", + " 'and see the yuck come spilling out',\n", + " 'a years worth of hopelessness',\n", + " 'depression and unrestrained self doubt',\n", + " 'my mood ring is always black',\n", + " 'i feel so cracked',\n", + " \"my mode's always on attack\",\n", + " 'i feel so cracked',\n", + " \"i've got something for your back\",\n", + " 'i feel so cracked',\n", + " 'when i said i\\'d \"rip your heart out\"',\n", + " 'did you think i was talking about you?',\n", + " 'spare me your vanity',\n", + " 'i was talking to myself',\n", + " 'i feel so cracked',\n", + " 'my mood ring is always black',\n", + " 'i feel so cracked',\n", + " 'shine on, you crazy asshole',\n", + " 'shine on',\n", + " 'the love of my life is a shady lady',\n", + " 'tearin me up just to bring me down',\n", + " \"she used to be calm but now she's crazy\",\n", + " 'i dont mind',\n", + " 'tearin me down like a jungle monkey',\n", + " 'cuttin me up like a jungle cat',\n", + " \"she used to be fine but now she's funky\",\n", + " \"i don't mind\",\n", + " \"she's not the love of my life anymore\",\n", + " 'the love of my life takes my lunch to breakfast',\n", + " 'nary a thought that a man might starve',\n", + " \"she used to smoke dope but now she's x-ing\",\n", + " \"i don't mind\",\n", + " 'tearing me down like a full length mirror',\n", + " 'praying for death as her beauty fades',\n", + " \"she'll go anywhere any man will lead her\",\n", + " \"i don't mind\",\n", + " \"she's not the love of my life anymore\",\n", + " 'i hurt, you walk',\n", + " \"there ain't no looking for an answer\",\n", + " \"when the question's come and gone\",\n", + " \"i'll stay, you'll go\",\n", + " \"there ain't no hoping for tomorrow\",\n", + " \"so i'll pack up all my sorrow\",\n", + " 'and find some hope that i can borrow',\n", + " \"i'm just trying to save my sanity and my soul (x2)\",\n", + " 'the love of my life is a shady lady',\n", + " 'tearin me up just to bring me down',\n", + " \"she used to be calm but now she's crazy\",\n", + " 'i dont mind',\n", + " \"she's not the love of my life anymore\",\n", + " 'i can show you the world',\n", + " 'shining, shimmering, splendid',\n", + " 'tell me, princess, now when did',\n", + " 'you last let your heart decide?',\n", + " 'i can open your eyes',\n", + " 'take you wonder by wonder',\n", + " 'over sideways and under',\n", + " 'on a magic carpet ride',\n", + " 'a whole new world',\n", + " 'a new fantastic point of view',\n", + " 'no one to tell us \"no\"',\n", + " 'or where to go',\n", + " \"or say we're only dreaming\",\n", + " 'a whole new world',\n", + " 'a dazzling place i never knew',\n", + " 'but now from way up here',\n", + " 'it’s crystal clear',\n", + " \"that now i'm in a whole new world with you\",\n", + " 'unbelievable sights',\n", + " 'indescribable feeling',\n", + " 'soaring, tumbling, freewheeling',\n", + " 'through an endless diamond sky',\n", + " 'a whole new world',\n", + " \"don't you dare close your eyes\",\n", + " 'a hundred thousand things to see',\n", + " 'hold your breath - it gets better',\n", + " 'i’m like a shooting star',\n", + " \"i've come so far\",\n", + " \"i can't go back to where i used to be\",\n", + " 'a whole new world',\n", + " 'with new horizons to pursue',\n", + " \"i'll chase them anywhere\",\n", + " \"there's time to spare\",\n", + " 'let me share this whole new world with you...you...you...',\n", + " 'a whole new world',\n", + " '(a whole new world)',\n", + " 'a new fantastic point of view',\n", + " 'no one to tell us \"no\"',\n", + " 'or where to go',\n", + " \"or say we're only dreaming\",\n", + " 'a whole new world',\n", + " 'every turn a surprise',\n", + " 'with new horizons to pursue',\n", + " 'every moment, red letter',\n", + " \"i'll chase them anywhere\",\n", + " \"there's time to spare\",\n", + " 'anywhere',\n", + " 'there’s time to spare',\n", + " 'let me share this whole new world with you',\n", + " 'a whole new world',\n", + " 'a whole new world',\n", + " \"that’s where we'll be\",\n", + " 'where we will be',\n", + " 'a thrilling chase',\n", + " 'a wondrous place',\n", + " 'for you and me',\n", + " \"freedom rider...though you've tried\",\n", + " 'words are not enough for you now...',\n", + " \"it's hard on your pride\",\n", + " \"i can't find you...though i know you\",\n", + " 'you are just a step out of line...',\n", + " 'come closer to me',\n", + " 'when the lines are drawn',\n", + " 'and no one comes to break us down',\n", + " 'and the walls that stood between us',\n", + " 'tumble to the ground',\n", + " \"it's time to find someone to run to\",\n", + " \"i've got a place in mind\",\n", + " \"it's known as conscience point\",\n", + " \"it's where the clouds roll by\",\n", + " \"they say that nothin' really matters\",\n", + " \"i'm goin' out to find\",\n", + " 'why people come this way',\n", + " 'and put the past behind',\n", + " 'you know there really is a reason',\n", + " 'changing faces...trading places',\n", + " \"nothing lasts anymore...it's hard when you try\",\n", + " 'star-crossed lovers run for cover',\n", + " \"i don't know if it's right...but i know how i feel\",\n", + " \"when you're tired of all those things\",\n", + " 'you never said before',\n", + " \"and although you've tried you never opened that door\",\n", + " \"it's time to find someone to run to\",\n", + " \"we'll run the roads tonite\",\n", + " \"we'll meet at conscience point\",\n", + " 'i look into your eyes',\n", + " \"you say that nothin' really matters\",\n", + " 'if i could change your mind',\n", + " 'if you would look my way',\n", + " 'and leave it all behind',\n", + " \"you'd know you really mean so much to me\",\n", + " \"when you've tired of all those things\",\n", + " \"you've never done before\",\n", + " 'and you never took the time',\n", + " 'to fall in love before',\n", + " \"you've got to find someone to...yea\",\n", + " \"we'll run the roads tonite\",\n", + " \"we'll meet at conscience point\",\n", + " \"i'll look into your eyes\",\n", + " \"and know that somethin' really matters\",\n", + " \"'cause we can change our minds\",\n", + " 'and we can find our way',\n", + " 'and leave it all behind',\n", + " \"'cause you really mean that much to me\",\n", + " 'conscience point...take a walk with me',\n", + " 'and put it all behind',\n", + " \"we'll make some history\",\n", + " 'old mr. kringle is soon gonna jingle',\n", + " \"the bells that'll tingle all your troubles away\",\n", + " \"everybody's waiting for the man with the bag\",\n", + " \"'cause christmas is coming again\",\n", + " \"he's got a sleigh full, it's not gonna stay full\",\n", + " \"he's got stuff that to drop at every stop of the way\",\n", + " \"everybody's waiting for the man with the bag\",\n", + " \"'cause christmas is coming again\",\n", + " \"he'll be here with the answer to the prayers\",\n", + " 'that you made through the year',\n", + " \"you'll get yours\",\n", + " \"if you've done everything\",\n", + " 'you should extra special good',\n", + " \"he'll make this december the one you'll remember\",\n", + " 'the best and the merriest you ever did have',\n", + " \"everybody's waitin' for the man with the bag\",\n", + " \"'cause christmas is here again\",\n", + " 'old mr. kringle is soon gonna jingle',\n", + " \"the bells that'll tingle all your troubles away\",\n", + " \"everybody's waitin' for the man with the bag\",\n", + " \"'cause christmas is coming again\",\n", + " \"he's got a sleigh full\",\n", + " \"and it's not gonna stay full\",\n", + " \"he's got stuff that he's dropping every stop of the way\",\n", + " \"everybody's waiting for the man with the bag\",\n", + " 'christmas is here again',\n", + " \"he'll be here with the answer to the prayers\",\n", + " 'that you made through the year',\n", + " \"you'll get yours\",\n", + " \"if you've done everything\",\n", + " 'you should extra special good',\n", + " \"he'll make this december the one you'll remember\",\n", + " 'the best and the merriest you ever did have',\n", + " \"everybody's waitin,'\",\n", + " \"they're all congregating\",\n", + " \"waitin' for the man with the bag\",\n", + " 'open that bag',\n", + " \"please don't question if i stop and stare\",\n", + " \"'cause i see your beauty floating everywhere\",\n", + " \"and i'd like to blink my eyes but i don't dare\",\n", + " \"'cause i don't wanna miss the show\",\n", + " 'see your form is floating next to me',\n", + " \"when i'm in a borderline reality\",\n", + " 'so i try to burn this in my memory',\n", + " 'so i never have to see you go',\n", + " \"'cause all your beauty, well it shines from within\",\n", + " 'and you leave me with no words to begin',\n", + " 'when i see you in the moons glow',\n", + " 'and all your beauty well, it shines from within',\n", + " 'and you leave me with no words to begin',\n", + " 'if you never know, well now you know, you know',\n", + " 'your silhouette is blessed with form and grace',\n", + " 'and you every more can never be replaced as you',\n", + " 'wrap around me in your misty ways',\n", + " 'and i never wanna see you go',\n", + " 'the way you play with me is mischievous',\n", + " 'as you float around my mind like angel dust',\n", + " \"and you'll never know the sweetness of our love\",\n", + " \"'cause you're never here long enough to know\",\n", + " 'that all your beauty, well it shines from within',\n", + " 'and you leave me with no words to begin',\n", + " 'when i see you in the moons glow',\n", + " 'and all your beauty, well it shines from within',\n", + " 'and you leave me with no words to begin',\n", + " 'if you never know, well now you know, you know',\n", + " 'oh, this crazy winter has followed me to this angry sea',\n", + " \"and i'm waiting for the balance to come and to carry me to sleep\",\n", + " 'and if i choose this garden to be the place that i call my home',\n", + " \"then i'll always be challenged to know that i will always walk alone\",\n", + " \"please don't go\",\n", + " 'away from me',\n", + " 'never leave',\n", + " 'oh no',\n", + " \"please don't go\",\n", + " \"say you'll love me so\",\n", + " 'so i will know',\n", + " \"baby, please don't go\",\n", + " 'if i could just explain',\n", + " 'the death of all my name',\n", + " 'my tears would fall like rain, oh',\n", + " \"but you don't understand\",\n", + " \"don't believe it hurts a man\",\n", + " 'oh no, oh no',\n", + " \"1 - please don't go\",\n", + " \"don't take your love from me\",\n", + " \"just say you'll never leave\",\n", + " 'just promise and believe',\n", + " \"please don't go\",\n", + " \"just say you'll love me so\",\n", + " \"so love me then i'll know\",\n", + " 'that you will never go',\n", + " \"baby please don't go\",\n", + " 'if i could keep you near',\n", + " 'you would love me with out fear',\n", + " 'and live a thousand years',\n", + " 'yes we would',\n", + " 'but you said you want to go',\n", + " 'and why, i do not know',\n", + " 'oh no, oh no',\n", + " 'repeat 1',\n", + " 'no no no no no no',\n", + " \"don't go baby\",\n", + " 'no no no no no no',\n", + " 'please',\n", + " 'no no no no no no',\n", + " \"please don't go\",\n", + " 'say you love me baby',\n", + " \"say you'll stay\",\n", + " \"don't go\",\n", + " 'repeat 1 with ad libs until fade',\n", + " \"when it's cold outside\",\n", + " 'am i here in vain?',\n", + " 'hold on to the night',\n", + " 'there will be no shame',\n", + " 'open your eyes i see',\n", + " 'your eyes are open',\n", + " 'wear no disguise for me',\n", + " 'come into the open',\n", + " 'melting the ice for me',\n", + " 'jump into the ocean',\n", + " 'hold back the tide i see',\n", + " 'your love in motion',\n", + " '(your love in motion)',\n", + " '(your love in motion)',\n", + " '(your love in motion)',\n", + " '(your love in motion)',\n", + " '(motion)',\n", + " '(motion)',\n", + " '(motion)',\n", + " '(motion)',\n", + " \"when it's cold outside\",\n", + " 'am i here in vain?',\n", + " 'hold on to the night',\n", + " 'there will be no shame',\n", + " 'always (harmony, harmony oh love)',\n", + " 'always (harmony, harmony oh love)',\n", + " 'always',\n", + " 'always (harmony, harmony oh love)',\n", + " 'open your eyes i see',\n", + " 'your eyes are open',\n", + " 'wear no disguise for me',\n", + " 'come into the open',\n", + " 'melting the ice for me',\n", + " 'jump into the ocean',\n", + " 'hold back the tide i see',\n", + " 'your love in motion',\n", + " \"when it's cold outside\",\n", + " 'am i here in vain?',\n", + " 'hold on to the night',\n", + " 'there will be no shame',\n", + " 'always (harmony, harmony oh love)',\n", + " 'always (harmony, harmony oh love)',\n", + " 'always',\n", + " 'always (harmony, harmony oh love)',\n", + " 'always, i want to be with you',\n", + " 'and make believe with you',\n", + " 'and live in harmony, harmony oh love',\n", + " 'always, i want to be with you',\n", + " 'and make believe with you',\n", + " 'and live in harmony, harmony oh love',\n", + " 'always, i want to be with you',\n", + " 'and make believe with you',\n", + " 'and live in harmony, harmony oh love',\n", + " 'always, i want to be with you',\n", + " 'and make believe with you',\n", + " 'and live in harmony, harmony oh love',\n", + " 'look ahead, ahead and bend low',\n", + " 'to the only one, the all, the merciful',\n", + " \"look ahead, ahead and then you'll see\",\n", + " 'the only one, the merciful',\n", + " 'cave mountain stream',\n", + " 'stopped awhile this morning on my way back home',\n", + " \"i had to realize this time that i'd be all alone\",\n", + " 'cause she is moving somewhere far away not slow',\n", + " 'and though i tried so hard to please her',\n", + " 'she said she really had to go',\n", + " 'even though this time it really hurts me bad',\n", + " \"i've been thru similarities it's not the first break i've had\",\n", + " \"and i just can't let it bring me down too low\",\n", + " 'and though i tried so hard to please her',\n", + " 'there must be something more to know',\n", + " 'never thought that we would end this way',\n", + " 'it seemed that everything was going fine',\n", + " 'still with all the things that i can do or say',\n", + " \"it won't change the fate i know so well is mine\",\n", + " \"so i'll stop and look right past the pain\",\n", + " \"cause i've been in love before and i can love again\",\n", + " 'while she is moving somewhere far away not slow',\n", + " 'and though i tried so hard to please her',\n", + " 'she said she really had to go',\n", + " 'a place not far from your inner most fear',\n", + " 'whisper, your innocence lost in a tear',\n", + " \"a place not far from a dead man's rest\",\n", + " \"your soul for a kingdom, you're given the test\",\n", + " 'walk with me child, walk through your past',\n", + " 'your trust in me and your spirit will last',\n", + " 'i give you life, dreams unforeseen',\n", + " 'exchange for your soul, spirit come clean',\n", + " 'take me to your castle, take me away',\n", + " 'show me to your victim, where you led him astray',\n", + " \"whisper to your god, cause you can't say no\",\n", + " \"can't blame myself ,cause i can't say no\",\n", + " 'when they stole your life, did they to listen?',\n", + " 'clown denies love, calls himself christian',\n", + " 'alone in the ground, alone in this earth',\n", + " 'from your death, a sin given birth',\n", + " 'come to my castle, unforsaken breed',\n", + " 'my story rings out, the liar take heed',\n", + " 'i give you life, eternity of sin',\n", + " 'fuck with my children, you could never win',\n", + " 'take me to your castle, take me away',\n", + " 'show me to your victim, where you led him astray',\n", + " \"whisper to your god, cause you can't say no\",\n", + " \"i can't blame myself ,cause i can't say no\",\n", + " \"i can't say no\",\n", + " \"i can't say no\",\n", + " 'i feel, i feel',\n", + " 'under the gun',\n", + " 'and everything i say',\n", + " 'is always wrong',\n", + " 'sometimes being your friend',\n", + " \"is more work than it's worth\",\n", + " 'and do you think',\n", + " 'before you speak',\n", + " 'that your words can hurt',\n", + " 'i feel, i feel',\n", + " 'so alone',\n", + " 'everyone around but',\n", + " \"there's no place for me to go\",\n", + " 'to hide, hide',\n", + " \"i will start talkin'\",\n", + " \"won't say nothing\",\n", + " 'so you can see',\n", + " \"what's on my mind\",\n", + " 'in and out',\n", + " 'you drift in my life',\n", + " 'you leaving me stranded',\n", + " 'like the low, waste up tides',\n", + " 'i get, i get',\n", + " 'but i get nothing',\n", + " 'just mixed signals',\n", + " 'that you bound delivering',\n", + " \"she doesn't mean a thing\",\n", + " \"she's just a friend\",\n", + " 'i speak easy',\n", + " \"cause it's really nothing\",\n", + " \"she doesn't mean a thing\",\n", + " \"she's just a friend\",\n", + " 'we have a lot, a lot, a lot in common',\n", + " 'why do you hide?',\n", + " 'you hide',\n", + " 'you could start talking',\n", + " \"don't say nothing\",\n", + " \"i can't see who's on your mind\",\n", + " 'you hide, hide',\n", + " 'you could start talking',\n", + " \"don't say nothing\",\n", + " \"i can't see what's inside\",\n", + " 'you hide',\n", + " 'hide',\n", + " 'hide',\n", + " 'hide, hide',\n", + " 'intro:',\n", + " 'you opened my eyes',\n", + " 'you make me believe',\n", + " 'that there is a chance for a guy like me',\n", + " 'you opened my eyes',\n", + " 'to a whole new world for me',\n", + " 'verse 1:',\n", + " \"baby don't you know\",\n", + " 'that all i wanted was to be by your side',\n", + " 'to find a way to the light through the dark',\n", + " 'you saw the man that i was deep inside',\n", + " 'ahaaa',\n", + " \"there's a voice\",\n", + " 'that was screaming inside of my head',\n", + " \"now it's quiet and peaceful instead\",\n", + " \"'cause i have learned from the things that you've said\",\n", + " 'ahaaa',\n", + " 'chorus:',\n", + " 'you opened my eyes',\n", + " 'you make me believe',\n", + " 'that there is a chance for a guy like me',\n", + " 'you opened my eyes',\n", + " 'you showed me someone that no one else has seen',\n", + " 'you opened my eyes',\n", + " 'you bring in the sun',\n", + " 'you make me believe i am someone',\n", + " 'you opened my eyes',\n", + " 'to a whole new world for me',\n", + " 'verse 2:',\n", + " 'i was lost',\n", + " 'and i was scared i was losing my mind',\n", + " 'running away from myself all the time',\n", + " \"'cause there was something i was waiting to find\",\n", + " 'ahaaa',\n", + " 'there you were',\n", + " 'the sky has send me an angel from above',\n", + " 'you gave me strengt and you showed me how to love',\n", + " \"for that i'm thankful for the rest of my life\",\n", + " 'ahaa',\n", + " 'chorus:',\n", + " 'you opened my eyes',\n", + " 'you make me believe',\n", + " 'that there is a chance for a guy like me',\n", + " 'you opened my eyes',\n", + " 'you showed me someone that no one else has seen',\n", + " 'you opened my eyes',\n", + " 'you bring in the sun',\n", + " 'you make me believe i am someone',\n", + " 'you opened my eyes',\n", + " 'to a whole new world for me',\n", + " 'bridge:',\n", + " \"now you're gone\",\n", + " \"and though it hurts to know you're with someone new\",\n", + " 'you know i always wanted the best for you',\n", + " 'you deserve to get the best in life too',\n", + " \"i'm grateful for the time with you\",\n", + " 'chorus:',\n", + " 'you opened my eyes',\n", + " 'you make me believe',\n", + " 'that there is a chance for a guy like me',\n", + " 'you opened my eyes',\n", + " 'you showed me someone that no one else has seen',\n", + " 'you opened my eyes',\n", + " 'you bring in the sun',\n", + " 'you make me believe i am someone',\n", + " 'you opened my eyes',\n", + " 'to a whole new world for me',\n", + " 'you opened my eyes',\n", + " 'you opened my eyes',\n", + " 'you opened my eyes',\n", + " 'you opened my eyes',\n", + " 'i wanna be a transparency live my life so that you can see elohim',\n", + " \"no longer see a little boy in his teens getting by tryin' to fit in like an og\",\n", + " \"but looking back it doesn't make any sense\",\n", + " \"to me how i could be 19 yet so na've\",\n", + " 'i never really thought about eternity i just did at the',\n", + " 'time what felt good to me',\n", + " 'chorus',\n", + " 'yesterday are just memories in my head',\n", + " 'he paid the way and delivered me of my debt',\n", + " \"my hindsight's 20/20 now so it's said\",\n", + " 'can you believe it',\n", + " \"after the day that i graduated that's when\",\n", + " 'it set in being faded and inebriated',\n", + " \"dealing with the pains of my mom and dad's divorce\",\n", + " \"but that was '81 now i'm showing no remorse\",\n", + " 'and all those people that i used to know then',\n", + " \"i've changed my ways and i just live for him\",\n", + " 'at 4:20 everyday you wanted me to blaze with you',\n", + " \"but at the same time everyday i'm just gonna pray for you\",\n", + " \"i changed my ways i'm never goin' back again\",\n", + " \"i'm never going back again\",\n", + " 'mistakes, done over and over again',\n", + " 'voices, heard over and over again',\n", + " \"escape from one's self\",\n", + " 'escape into salvation',\n", + " 'one word - one gesture and everything is over',\n", + " 'long silence - empty thoughts',\n", + " 'escape into another phase',\n", + " 'escape from reality',\n", + " 'an other life - an other death - an other destination - an',\n", + " 'other self',\n", + " 'an other life - an other death - an other destination - an',\n", + " 'other self',\n", + " 'an other life - an other death - an other destination - an',\n", + " 'other self',\n", + " 'an other life - an other death - an other destination - an',\n", + " 'other self',\n", + " 'the leprous sign branded onto the forehead',\n", + " 'like stricken by disease',\n", + " \"guilt sought by one's self\",\n", + " 'the guilt of salvation',\n", + " 'the night passes - silence remains',\n", + " 'unsolved questions remain as a wall',\n", + " 'the guilt of the other phase',\n", + " 'the guilt out of fear of reality',\n", + " 'an other life - an other death - an other destination - an',\n", + " 'other self',\n", + " 'an other life - an other death - an other destination - an',\n", + " 'other self',\n", + " 'an other life - an other death - an other destination - an',\n", + " 'other self',\n", + " 'an other life - an other death - an other destination - an',\n", + " 'other self',\n", + " \"there's a street of light\",\n", + " 'a long dark night',\n", + " 'restaurant sences and dark machines',\n", + " 'a woman in the shadow and a man in a suit',\n", + " 'a cut away shot of the avenue',\n", + " 'so he stands by a rake as the camera pans accross',\n", + " 'then he checks his watch, cause he feels like time has stopped',\n", + " \"there's a street where he almost meet, this is the place\",\n", + " 'we come to the scene where we almost see her face',\n", + " 'and the telephone rings',\n", + " 'she swims in the lake, as the shadow on the wall in the final take',\n", + " 'cigarette smoke and somebody spoke',\n", + " \"and the light goes up and the cinema's closed\",\n", + " 'so he plays the film, he plays the film again',\n", + " 'so he plays the film, he plays the film again',\n", + " '(child)',\n", + " 'lather was thirty-years-old today',\n", + " 'they took away all of his toys',\n", + " 'his mother sent newspaper clippings to him',\n", + " \"about his old friends who'd stopped being boys\",\n", + " 'there was howard c. green',\n", + " 'just turned thirty-three',\n", + " 'his leather chair waits at the bank',\n", + " 'and sergeant dow jones',\n", + " 'twenty-seven-years-old',\n", + " 'commanding his very own tank',\n", + " 'but lather still finds it',\n", + " 'a nice thing to do',\n", + " 'to lie about nude in the sand',\n", + " 'drawing pictures of mountains',\n", + " 'that look like bumps',\n", + " 'and thrashing the air with his hands',\n", + " \"but wait, oh lather's productive, you know\",\n", + " 'he produces the finest of sound',\n", + " 'putting drumsticks on either side of his nose',\n", + " 'snorting the best licks in town',\n", + " \"but that's all over\",\n", + " '(child)',\n", + " 'lather was thirty-years-old today',\n", + " 'and lather came foam from his tongue',\n", + " 'he looked at me, eyes wide, and plainly said',\n", + " '\"is it true that i\\'m no longer young?\"',\n", + " 'and the children call him famous',\n", + " 'what the old men call insane',\n", + " \"and sometimes he's so nameless\",\n", + " 'that he hardly knows what game to play',\n", + " 'which words to say?',\n", + " 'and i should have told him',\n", + " '\"no, you\\'re not old\"',\n", + " 'and i should have let him go on',\n", + " 'smiling baby-wide',\n", + " 'black, fuzzy, matted heart',\n", + " 'hears the wonderful seed',\n", + " 'blue, pretty, feathered bird',\n", + " 'eats up the need',\n", + " \"bright, blazin' sun burns up\",\n", + " 'thick, crowded vine chokes out',\n", + " \"they'll getcha, they'll getcha, they'll getcha\",\n", + " \"they'll getcha, and then they'll forgetcha\",\n", + " 'wined and dined and feeling oh so fine',\n", + " \"treasures towered, don't need the divine\",\n", + " 'smart and sure in thine own eye',\n", + " 'with these you are dead inside',\n", + " \"didn't they tell you? didn't they tell you?\",\n", + " \"they'll getcha, they'll getcha, they'll getcha\",\n", + " \"they'll getcha, and then they'll forgetcha\",\n", + " 'i know this is wrong',\n", + " \"should stay away but it won't do\",\n", + " \"i've lost control to that old song\",\n", + " \"and i don't mind what i'll go through\",\n", + " 'giving it up',\n", + " \"i'm giving it all up 4x\",\n", + " '(bright lies big city)',\n", + " \"lights are bright and i'm moving\",\n", + " \"the rhythm ain't right who am i fooling\",\n", + " '(bright lies big city)',\n", + " \"i'm drawing into your arms into your heart\",\n", + " \"where i don't feel ...lone\",\n", + " '(bright lies big city)',\n", + " \"the rhythm ain't right but i am moving\",\n", + " 'heart break feels. oh',\n", + " 'when something new',\n", + " 'like this comes around',\n", + " 'when not to blame',\n", + " \"it's not our fault\",\n", + " 'but since we touch',\n", + " 'we have left the ground',\n", + " '(bright lies big city)',\n", + " \"lights are bright and i'm moving\",\n", + " \"the rhythm ain't right who am i fooling\",\n", + " '(bright lies big city)',\n", + " \"i'm drawing into your arms into your heart\",\n", + " \"where i don't feel ...lone\",\n", + " '(bright lies big city)',\n", + " \"the rhythm ain't right but i am moving\",\n", + " 'bright lies big city',\n", + " 'giving it up',\n", + " \"i'm giving it all up 4x\",\n", + " '(bright lies big city)',\n", + " \"lights are bright and i'm moving\",\n", + " \"the rhythm ain't right who am i fooling\",\n", + " '(bright lies big city)',\n", + " \"i'm drawing into your arms into your heart\",\n", + " \"where i don't feel ...lone\",\n", + " '(bright lies big city)',\n", + " \"the rhythm was right but we're not moving\",\n", + " 'i have your postcard and some magazine',\n", + " \"there's no hope, just a tear, ooh your magic\",\n", + " 'is desire burning in my heart',\n", + " 'i need someone who is there for me',\n", + " \"and the feelin' comes again when i touch you\",\n", + " \"ooh i can't sleep at night\",\n", + " 'nowhere to run',\n", + " \"still standin' in the rain - standin' in the rain\",\n", + " 'no place to hide',\n", + " \"it's still the shadow play\",\n", + " 'nowhere to run',\n", + " \"i'm hypnotized\",\n", + " \"i'm on fire\",\n", + " 'you got the key to my heart',\n", + " 'nowhere to run',\n", + " \"i'm hypnotized\",\n", + " \"i'm out on the streets\",\n", + " 'and i wish that you were here',\n", + " \"walkin' down the boulevard\",\n", + " \"i get the feelin' that you can't be far and i wonder\",\n", + " \"if there's too much fancination\",\n", + " \"it's hard enough in the danger streets\",\n", + " \"forget the trouble if you won't believe, i've got my pride\",\n", + " 'and i just stay alive',\n", + " 'nowhere to run',\n", + " \"still standin' in the rain - standin' in the rain\",\n", + " 'no place to hide',\n", + " \"it's still the shadow play\",\n", + " 'nowhere to run',\n", + " \"i'm hypnotized\",\n", + " \"i'm on fire\",\n", + " 'you got the key to my heart',\n", + " 'nowhere to run',\n", + " \"i'm hypnotized\",\n", + " \"i'm out on the streets\",\n", + " 'and i wish that you were here',\n", + " 'baby baby i want you to know',\n", + " 'how much i love you',\n", + " \"how far i'd go\",\n", + " 'just to be with you',\n", + " 'just to be near',\n", + " 'my sweet sweet goddess',\n", + " 'of love and beer',\n", + " 'you stand in your castle',\n", + " 'you stand all alone',\n", + " 'locked in your world',\n", + " 'full of heartache and foam',\n", + " 'listen to me baby',\n", + " 'my words soft and clear',\n", + " 'my sweet sweet goddess',\n", + " 'of love and beer',\n", + " 'sweet goddess',\n", + " 'oh yeah',\n", + " 'sweet goddess of love and beer...x3',\n", + " \"baby baby i'm down on my knees\",\n", + " 'i need your lovin baby',\n", + " 'gotta quench my thirst please',\n", + " 'a drink of your lovin',\n", + " 'makes my pain disappear',\n", + " 'my sweet sweet goddess',\n", + " 'of love and beer',\n", + " 'take time to see the wonders of the world',\n", + " \"to see the things you've only ever heard of\",\n", + " 'dream life the way you think it ought to be',\n", + " \"see things you thought you'd never ever see\",\n", + " 'take a cruise to china or a train to spain',\n", + " \"go 'round the world again and again\",\n", + " 'meet a girl on a boat, meet a boy on a train',\n", + " 'and fall in love without the pain',\n", + " 'everybody needs love and adventure',\n", + " 'everybody needs cash to spend',\n", + " 'everybody needs love and affection',\n", + " 'everybody needs 2 or 3 friends',\n", + " 'these are the things, these are the things',\n", + " 'the things that dreams are made of',\n", + " 'these are the things, these are the things',\n", + " 'the things that dreams are made of',\n", + " 'take a lift to the top of the empire state',\n", + " 'take a drive across the golden gate',\n", + " 'march, march, march across red square',\n", + " \"do all the things you've ever dared\",\n", + " 'everybody needs love and adventure',\n", + " 'everybody needs cash to spend',\n", + " 'everybody needs love and affection',\n", + " 'everybody needs 2 or 3 friends',\n", + " 'these are the things, these are the things',\n", + " 'the things that dreams are made of',\n", + " 'these are the things, these are the things',\n", + " 'the things that dreams are made of',\n", + " 'like fun and money and food and love',\n", + " 'and things you never thought of',\n", + " 'these are the things, these are the things',\n", + " 'the things that dreams are made of',\n", + " 'new york, ice cream, tv, travel, good times',\n", + " 'norman wisdom, johnny, joey, dee dee, good times',\n", + " 'these are the things, these are the things',\n", + " 'the things that dreams are made of',\n", + " 'these are the things, these are the things',\n", + " 'the things that dreams are made of',\n", + " 'these are the things (everybody needs love and adventure)',\n", + " 'these are the things',\n", + " 'the things that dreams are made of',\n", + " 'these are the things (everybody needs love and adventure)',\n", + " 'these are the things',\n", + " 'the things that dreams are made of',\n", + " 'these are the things (everybody needs love and adventure)',\n", + " 'these are the things',\n", + " 'the things that dreams are made of',\n", + " ...]},\n", + " 'data': ['i stare at the sky and see',\n", + " \"what i've tried to see so many years\",\n", + " 'the purity of space and time',\n", + " 'to see it all through intoxicated tears',\n", + " 'cratinf a trip through hexagonal space',\n", + " 'im fighting the laws of gravity',\n", + " 'burning my eyes to understand',\n", + " \"blind agitation 'gainst my own sanity\",\n", + " 'you can fool a man forever',\n", + " 'fill him with you lies',\n", + " 'you can fool mankind once',\n", + " 'drawing a web of lies',\n", + " 'burning their eyes to understand',\n", + " \"you can't fool mankind forever\",\n", + " \"i've never tried to embrace myself tight\",\n", + " \"it's not how i want it to be\",\n", + " 'and i found in my head that i always did right',\n", + " 'even thoguh you speak angry with me',\n", + " 'spiraling confusing appears',\n", + " 'as the world keeps coming back',\n", + " 'what i felt is description of all',\n", + " 'and madness is my only friend',\n", + " 'you can fool a man forever',\n", + " 'fill him with you lies',\n", + " 'you can fool mankind once',\n", + " 'drawing a web of lies',\n", + " 'burning their eyes to understand',\n", + " \"you can't fool mankind forever\",\n", + " 'bye bye blackbird, days are getting cold',\n", + " 'snakes and lizards are sucking up the gold',\n", + " 'chrome-plated plastic they give you in return',\n", + " \"and teach you a lesson you shouldn't have to learn\",\n", + " 'bye bye blackbird',\n", + " 'bye bye blackbird',\n", + " 'i remember now who i was supposed to be',\n", + " 'oh, but how do you get an octopus up a tree',\n", + " 'up a tree',\n", + " 'bye bye blackbird, time to leave the nest',\n", + " 'the sun is overhead on its way out west',\n", + " 'follow that sun to a blood-red sea',\n", + " 'and sleep in the arms of a coconut tree',\n", + " 'bye bye blackbird',\n", + " 'bye bye blackbird',\n", + " 'bye bye blackbird, fly into the sun',\n", + " \"the money's all gone and your time is done\",\n", + " 'suddenly awake in the middle of the night',\n", + " 'cover up my head with a blanket of light',\n", + " 'bye bye blackbird',\n", + " 'bye bye blackbird',\n", + " \"i've got no time to drop lsd\",\n", + " \"i guess i've still got time for dmt\",\n", + " 'dmt',\n", + " 'back on the road again',\n", + " 'no money no food and dirty clothes',\n", + " \"don't know which way to go\",\n", + " \"or if we'll even make the show?\",\n", + " 'crashed into a petrol pump there goes my insurance lump',\n", + " 'i just want out of here',\n", + " 'someone gives me a fucking beer',\n", + " \"tonight, tonight...it'll be alright\",\n", + " \"tonight, tonight...i'm gonna make it right\",\n", + " 'someone get me out of here',\n", + " \"next day we're up again\",\n", + " 'slept rough yet again',\n", + " \"heading into no man's land\",\n", + " 'with a tongue that feels like desert sand',\n", + " '6 stitches from a bicycle ride',\n", + " \"it's a shame i cannot hide\",\n", + " '3 pasta meals per day',\n", + " 'and a pittance for our fucking pay but...',\n", + " \"now we're on our way back home\",\n", + " 'still no signal on the phone',\n", + " 'just wanna eat some grub',\n", + " 'and have a night out down the pub',\n", + " 'here i stare at the van again',\n", + " 'everyone is sleeping on everything',\n", + " 'they all gonna feel the same',\n", + " 'homeward bound from where we came cos...',\n", + " 'true love',\n", + " 'a silver heart upon a chain',\n", + " 'in 1980 was engraved',\n", + " 'a heart so innocent',\n", + " 'before you knew a world of pain',\n", + " 'before you learned to be afraid',\n", + " 'and lived through times so cruel',\n", + " 'but you can start again',\n", + " 'for what you mean to me',\n", + " 'no words they can explain',\n", + " \"i've been trying to discover\",\n", + " 'something that can last forever',\n", + " \"we're two fools who stand divided\",\n", + " 'you and i should be united',\n", + " 'true, true love',\n", + " 'i watch you dance across the room',\n", + " 'your eyes are closed, so beautiful',\n", + " \"you're in another place\",\n", + " 'the music has enraptured you',\n", + " 'so free of cares, i wish that you',\n", + " 'could always feel this way',\n", + " 'oh we can start again',\n", + " 'for what you mean to me',\n", + " \"i'll never walk away\",\n", + " \"i've been trying to discover\",\n", + " 'something that can last forever',\n", + " \"we're two fools who stand divided\",\n", + " 'you and i should be united',\n", + " \"don't be scared of your emotions\",\n", + " 'i will give you my devotion',\n", + " 'true, true love',\n", + " 'true love',\n", + " 'a silver heart upon a chain',\n", + " 'in 1980 was engraved',\n", + " 'a heart so innocent',\n", + " 'yeah we can start again',\n", + " 'for what you mean to me',\n", + " 'no one could take your place',\n", + " \"i've been trying to discover\",\n", + " 'something that can last forever',\n", + " \"we're two fools who stand divided\",\n", + " 'you and i should be united',\n", + " \"i've been trying to discover\",\n", + " 'something that can last forever',\n", + " \"don't be scared of your emotions\",\n", + " 'i will give you my devotion',\n", + " 'true, true love',\n", + " 'well i came down here from manhattan',\n", + " 'to see the lights on the mall',\n", + " 'but when i got here early this morning',\n", + " \"well i couldn't see any at all\",\n", + " 'so i walked a little further',\n", + " 'and much to my surprise',\n", + " 'there was a hot cool woman',\n", + " 'in a chevy staring into my eyes',\n", + " \"i've just got to see the lights\",\n", + " \"i've just got to see the lights\",\n", + " \"i've just got to see the lights\",\n", + " 'alright',\n", + " \"she said now don't walk any further\",\n", + " 'just jump into my car',\n", + " 'and we can head on down the highway',\n", + " \"but you'd better not go too far\",\n", + " \"'cos my daddy he's big business\",\n", + " \"so we've gotta be back by tonight\",\n", + " 'but we can still have some fun now',\n", + " 'if we head on downtown to see the lights',\n", + " \"i've just got to see the lights\",\n", + " \"i've just got to see the lights\",\n", + " \"i've just got to see the lights\",\n", + " \"i've just got to see the lights\",\n", + " \"i've just got to see the lights\",\n", + " \"i've just got to see the lights\",\n", + " 'well, we ended up in this cafe',\n", + " \"'bout twenty-five minutes to one\",\n", + " 'see, she took me to this nightclub',\n", + " 'and the music went on and on',\n", + " 'well we were set down to get coffee',\n", + " 'when in walked her old man',\n", + " 'no matter how we tried to explain it well',\n", + " \"we couldn't make him understand\",\n", + " \"i've just got to see the lights\",\n", + " \"i've just got to see the lights\",\n", + " \"i've just got to see the lights\",\n", + " \"don't you know that this is the beginning (just a game)\",\n", + " \"don't you know that this is just a game (just a game, it's just a game)\",\n", + " '(chorus)',\n", + " 'stand tough (stand tough)',\n", + " 'never gonna get me down',\n", + " 'gotta get up to get up',\n", + " 'enough is enough',\n", + " 'stand tough (stand tough)',\n", + " \"i'm never gonna give it up\",\n", + " 'gotta get up to get up and up and up',\n", + " 'stand tough',\n", + " \"this world is changing and the pressure's got me going down\",\n", + " 'my feet are walking from this sad and lonely one-horse town',\n", + " \"don't try and stop me 'cos i'm hurting from the cold outside\",\n", + " \"my heart is jumpin', jumpin', jumpin' and i don't know why\",\n", + " '(bridge)',\n", + " 'so what ya gonna do when it all comes down',\n", + " 'tell me (tell me), tell me (tell me)',\n", + " 'what ya gonna do when it hits the ground (woah)',\n", + " '(chorus)',\n", + " 'had enough of everybody, telling me just what to do',\n", + " \"i've got to get this message through the wire and straight to you\",\n", + " 'bringing on the good times for the bitter ones are sure to end',\n", + " \"we've got to make a stand 'cos on this world we all depend\",\n", + " '(bridge)',\n", + " '(chorus)',\n", + " \"don't you know that this is the beginning (just a game)\",\n", + " \"don't you know that this is just a game (just a game, just a game)\",\n", + " 'stand tough (stand tough)',\n", + " 'never gonna get me down (come on)',\n", + " 'gotta get up to get up',\n", + " 'enough is enough',\n", + " 'stand tough (stand tough - huh)',\n", + " \"i'm never gonna give it up (get down)\",\n", + " 'gotta get up to get up (come on) and up (come on) and up (come on)',\n", + " 'stand tough (stand tough)',\n", + " 'never gonna get me down (get down)',\n", + " 'gotta get up to get up',\n", + " 'enough is enough',\n", + " 'stand tough (stand tough)',\n", + " \"i'm never gonna give it up\",\n", + " 'gotta get up to get up and up and up',\n", + " 'stand tough (stand tough)',\n", + " 'never gonna get me down',\n", + " 'gotta get up to get up',\n", + " 'enough is enough',\n", + " 'stand tough (stand tough)',\n", + " \"i'm never gonna give it up\",\n", + " 'gotta get up to get up and up and up',\n", + " 'stand tough (stand tough)',\n", + " 'it is a day of so much bliss, in the gathering that we all stand',\n", + " 'under the blue sky we all celebrate, husband and wife hand-in-hand',\n", + " 'there are children cheering, and the birds are chirping',\n", + " 'oh the happiness that fill the air',\n", + " 'and the angels descend, bringing blessings from allah',\n", + " 'that we can feel everywhere',\n", + " '(x2)',\n", + " \"oh it's a day of rejoicing, a day of peace\",\n", + " 'a day when a pair fulfil, half of their deen',\n", + " 'let us all spend some time together, remembering allah most high',\n", + " 'let not the evil of shaytan, get the better of us in this life',\n", + " 'and of the creatures of allah, we are created the best',\n", + " 'on this earth from the rest',\n", + " 'remember allah always, in remembering him',\n", + " 'our hearts will find its rest',\n", + " '(x2)',\n", + " 'oh it’s a day of rejoicing, a day of peace',\n", + " 'a day when a pair fulfil, half of their deen',\n", + " 'turn wherever you want in life, but never forget the almighty',\n", + " 'remember he is the sustainer, of you and your family',\n", + " 'there may be hardship on your way',\n", + " 'llive them, content and with patience',\n", + " 'no matter how deep they may be',\n", + " 'remember allah always, in remembering him',\n", + " 'your hearts will find its peace',\n", + " '(x8)',\n", + " \"oh it's a day of rejoicing, a day of peace\",\n", + " 'a day when a pair fulfil, half of their deen',\n", + " 'yea',\n", + " 'yea yea yea',\n", + " 'i can only be me my nigga',\n", + " \"i'm not onyx nigga\",\n", + " \"yea c'mon man\",\n", + " \"i ain't big homie\",\n", + " \"i ain't jay-z\",\n", + " \"i can't do it like snoop\",\n", + " \"baby that ain't me\",\n", + " 'i can be me',\n", + " \"i'm a be me\",\n", + " \"i can't copy no man\",\n", + " \"i'm a be me\",\n", + " 'look how diddy dance',\n", + " \"i can't do that\",\n", + " \"and i don't wear my clothes\",\n", + " 'like jim jones',\n", + " 'you know that',\n", + " 'i can only be me',\n", + " \"i'm a be me\",\n", + " \"i can't be what i'm not\",\n", + " \"i'm a be me\",\n", + " \"i don't immitate\",\n", + " 'i initiate',\n", + " \"and i dson't sound like no body\",\n", + " \"let's set it straight\",\n", + " \"i don't rap like jadakiss\",\n", + " \"i'm different\",\n", + " \"and i ain't just talkin our records\",\n", + " \"i'm really livin it\",\n", + " \"i ain't wayne\",\n", + " \"i ain't game\",\n", + " \"ain't none of em\",\n", + " \"i'm a be myself\",\n", + " \"i'm trying to be like none of em\",\n", + " 'look how we done it crack',\n", + " 'we gone do the same rap',\n", + " \"homie i ain't fab\",\n", + " 'nigga shoot me i shot him back',\n", + " 'so forgive me',\n", + " \"if i ain't your favorite rapper\",\n", + " \"i'm just a thug on a song\",\n", + " \"i don't play with rappers\",\n", + " \"the second of none it's the first to me\",\n", + " 'and to put it more blunt',\n", + " \"i'm a be me\",\n", + " \"i ain't nas, baby\",\n", + " \"i ain't mob deep\",\n", + " 'i know you lookin for jeezy',\n", + " \"but that ain't me\",\n", + " 'i can be me',\n", + " \"i'm a be me\",\n", + " \"i can't copy no man\",\n", + " \"i'm a be me\",\n", + " 'kanye make beats',\n", + " \"i can't do that\",\n", + " \"you can't expect me to be 50\",\n", + " 'and you know that',\n", + " 'i can only be me',\n", + " \"i'm a be me\",\n", + " \"i can't be what i'm not\",\n", + " \"i'm a be me\",\n", + " 'this is me respect me for who i am',\n", + " \"don't expect me to immolate another man\",\n", + " \"i'm not the next pac\",\n", + " \"i ain't the next big\",\n", + " \"i'm just me my nigga\",\n", + " 'i get it how i live',\n", + " 'you hear that pain in me',\n", + " \"ain't nothing fake with me\",\n", + " \"i can't be what i'm not\",\n", + " \"dog that ain't in me\",\n", + " \"i'm the truth\",\n", + " \"it's hard for me to live a lie\",\n", + " \"i can't sound like i'm from the south\",\n", + " \"i'm from the star\",\n", + " 'real niggas they love me for doing what i do',\n", + " \"the streets know i don't make songs like common do\",\n", + " \"i don't jump around like in busta video\",\n", + " 'but i lay a nigga down like a busta video',\n", + " 'my nigga b.g',\n", + " 'my nigga t.i.p',\n", + " 'i know they love outkast',\n", + " \"but that ain't me\",\n", + " 'i could be me',\n", + " \"i'm a be me\",\n", + " \"i can't copy no man\",\n", + " \"i'm a be me\",\n", + " 'look how akon sing',\n", + " \"i can't do that\",\n", + " \"and i don't make songs like tylin\",\n", + " 'you know that',\n", + " 'i can only be me',\n", + " \"i'm a be me\",\n", + " \"i can't be what i'm not\",\n", + " \"i'm a be me\",\n", + " 'i make my music',\n", + " 'shit that i like music',\n", + " 'me being me',\n", + " 'original fight music',\n", + " 'our street music',\n", + " 'stayin to beef music',\n", + " 'see a nigga shoot',\n", + " 'you poppin your heat music',\n", + " 'this not cam music',\n", + " 'nigga this is man music',\n", + " 'first day home',\n", + " 'fresh out of the can music',\n", + " 'straight music',\n", + " 'none of that mase music',\n", + " 'black bandana tied to your face music',\n", + " \"thug music nigga i'm not ludacris\",\n", + " \"drunk music listen to how i'm doing this\",\n", + " 'real music accept or refuse it',\n", + " \"and ya'll already know exactly who it is\",\n", + " \"i ain't big homie\",\n", + " \"i ain't jay-z\",\n", + " \"i can't do it like snoop\",\n", + " \"baby that ain't me\",\n", + " 'i can be me',\n", + " \"i'm a be me\",\n", + " \"i can't copy no man\",\n", + " \"i'm a be me\",\n", + " 'look how diddy dance',\n", + " \"i can't do that\",\n", + " \"and i don't wear my clothes\",\n", + " 'like jim jones',\n", + " 'you know that',\n", + " 'i can only be me',\n", + " \"i'm a be me\",\n", + " \"i can't be what i'm not\",\n", + " \"i'm a be me\",\n", + " 'i see your fingerprints',\n", + " 'the work of your hands',\n", + " \"it's all in your hands\",\n", + " 'i see the evidence',\n", + " 'leaving nothing to chance',\n", + " \"the world's in your hands\",\n", + " 'so i rest in your promises',\n", + " \"now i am sure of this, i'm yours\",\n", + " 'let the waters rise',\n", + " 'i will stand as the oceans roar',\n", + " 'let the earth shake beneath me',\n", + " 'let the mountains fall',\n", + " 'you are god over the storm',\n", + " 'and i am yours',\n", + " 'i hear the voice of love',\n", + " 'calling me home',\n", + " 'to where i belong',\n", + " 'it cripples every fear',\n", + " 'and the ones who will kneel',\n", + " 'will walk away healed',\n", + " 'so i rest in your promises',\n", + " \"now i am sure of this, i'm yours\",\n", + " 'no power is strong enough',\n", + " \"to separate me from your love, i'm yours\",\n", + " 'so let the waters rise',\n", + " 'i will stand as the oceans roar',\n", + " 'let the earth shake beneath me',\n", + " 'let the mountains fall',\n", + " 'you are god over the storm',\n", + " 'and i am yours',\n", + " 'even the thunder and the wind obey',\n", + " 'at the command of my father, father',\n", + " 'i set my feet upon your mighty name',\n", + " 'so let the rain fall harder, harder',\n", + " 'so take my everything, my flesh and blood',\n", + " \"i'll lay me down on the altar, altar\",\n", + " 'i am forever covered in your love',\n", + " 'so let the rain fall',\n", + " 'so let the waters rise',\n", + " 'i will stand as the oceans roar',\n", + " 'let the earth shake beneath me',\n", + " 'let the mountains fall',\n", + " 'you are god over the storm',\n", + " 'and i am yours',\n", + " 'let the waters rise',\n", + " 'i will stand as the oceans roar',\n", + " 'let the earth shake beneath me',\n", + " 'let the mountains fall',\n", + " 'you are god over the storm',\n", + " 'and i am yours',\n", + " 'you are god over the storm',\n", + " 'and i am yours',\n", + " 'right away!! oh, we gonna tell you',\n", + " \"right away!! it's open fire\",\n", + " 'we gotta, gotta put more fight',\n", + " 'we were born to be hell fire soldier',\n", + " '* look out!! gonna kick your ass',\n", + " 'carry on!! what you wanna do',\n", + " 'we gotta, gotta put more fight',\n", + " 'we were born to be hell fire soldier',\n", + " '** fantastic lovely emotion',\n", + " 'we feel like communication',\n", + " \"can't you see? can't you feel it?\",\n", + " 'we gotta do it, baby',\n", + " 'all right',\n", + " '(fight! fight! your more fight!)',\n", + " 'we are ready for a fight',\n", + " 'we gonna give you a fight',\n", + " 'we gotta, gotta put more fight',\n", + " 'we were born to be hell fire soldier',\n", + " '* repeat',\n", + " '** repeat',\n", + " 'sensation! ooh baby! sensation!',\n", + " 'put your more fight!',\n", + " 'sensation! ooh baby! sensation!',\n", + " 'put youre more fight!',\n", + " 'fantastic lovely emotion',\n", + " 'we feel like communication',\n", + " '** repeat',\n", + " '(fight! fight! your more fight!)',\n", + " '(intro sample:)',\n", + " \"how dare you? how dare you say such filthy, disgusting things? you filthy upstart! you come into the house, drunk, filthy drunk, you're filthy. you talk filth, you are the filth\",\n", + " 'oh, you tell me you feel changed, /',\n", + " \"so you're packing up and leaving me, /\",\n", + " \"and you've met some other girl, /\",\n", + " 'whose love can set you free. /',\n", + " 'think twice, / baby, /',\n", + " 'think twice, / baby, /',\n", + " 'think twice, / baby, /',\n", + " \"don't turn / your back / on the love / you've known, / ooh, no. /\",\n", + " 'if i could turn back the hands of time, /',\n", + " \"i'd build a love strong enough for two. /\",\n", + " \"no, i won't deny i've lied, /\",\n", + " 'but the trouble with me is you. /',\n", + " 'think twice, / baby, /',\n", + " 'think twice, / baby, /',\n", + " 'think twice, / baby, /',\n", + " \"don't turn / your back / on the love / you've known, / ooh, no. /\",\n", + " 'oh, take some time to grow, /',\n", + " \"you've only known her a week or two. /\",\n", + " 'use your head, not just your heart, /',\n", + " \"when you tell me that we're through. /\",\n", + " 'think twice, / baby, /',\n", + " 'think twice, / baby, /',\n", + " 'think twice, / baby, /',\n", + " \"don't turn / your back / on the love / you've known, / ooh, no. /\",\n", + " 'think twice before you leave, /',\n", + " \"that's my advice, / baby, / baby, / baby. /\",\n", + " \"don't keep love in waiting, / baby, baby\",\n", + " '(outro sample:)',\n", + " \"six o'clock on radios one and two, my name's tom brown, this is the top twenty as compiled for the bbc by the british market research bureau\",\n", + " 'five, four, three, two, one, we have lift off!',\n", + " '(segue into studio kinda filthy)',\n", + " 'you won‘t slow down my pace',\n", + " 'i‘m gonna win this race',\n", + " 'life taught me it’s a chase',\n", + " 'i won‘t be switching lanes',\n", + " 'you liars out my way',\n", + " 'i’m gonna make it one day',\n", + " 'i picture you being lonely',\n", + " 'they feel the urge to control me',\n", + " 'the lie you tell is so cheap',\n", + " 'begged you for the word i need',\n", + " 'got the best ones around me',\n", + " 'hell of a man and i’m still free',\n", + " 'no gold‘ s to far i dig deep',\n", + " 'for what you wish to receive',\n", + " 'face to the sun and my heart',\n", + " 'face to the sun and my heart goes...',\n", + " 'as the sun hits my face',\n", + " 'all sorrow goes away',\n", + " 'they tell me take a break',\n", + " 'but i move my own way',\n", + " 'acknowledge it and stay',\n", + " 'or better get away',\n", + " 'i got a deadbeat dad',\n", + " 'and he won’t care',\n", + " 'about the past and that i’ve been so scared',\n", + " 'i dropped my hopes so low',\n", + " 'bagged you for the words you owe',\n", + " 'me imma go solo',\n", + " 'i know you never come home though',\n", + " 'your heart‘s to far i won’t dig deep',\n", + " 'for what they wish to receive',\n", + " 'face to the sun and my heart',\n", + " 'face to the sun and my heart goes...',\n", + " 'tonight’s the night we’re gonna make the stars alive',\n", + " 'we were never meant to be but you and me can make it alright',\n", + " 'cause i especially love you when the stars are above you (stars above you)',\n", + " 'said i especially love you when the stars are above you',\n", + " '(x5)',\n", + " 'i lay you down,down,down,down by the tabletop',\n", + " 'i lay you down,down,down,down by the tabletop',\n", + " 'and i’m not going anywhere',\n", + " '(x4)',\n", + " 'and even if the sun burns out and the stars fall down',\n", + " 'i’ll be standing there waiting for you',\n", + " 'and when the sky just can’t get any higher',\n", + " 'i’ll be laying there saying to you',\n", + " 'you feel the hunger for terminal beat',\n", + " 'the heart is sinking',\n", + " 'i live my days by hearing your dreams',\n", + " 'and will to pain',\n", + " 'no waiting until the dawn',\n", + " 'your bleeding empty soul',\n", + " 'the real lies of friendly mind',\n", + " \"can't touch your face\",\n", + " 'i came in peace but i leave this',\n", + " 'place with war inside of me',\n", + " 'so come and realize',\n", + " 'look through my mind and see',\n", + " \"i can feel the fuckin' things\",\n", + " 'that burn inside of me',\n", + " \"cannot feel i'm freezin' more\",\n", + " 'the hate of dream with ultimate scream',\n", + " 'to get my pride back',\n", + " 'i have a lust for deadly deed',\n", + " 'curious to find me',\n", + " 'so you say you like the heat',\n", + " \"can't slow down to kick up your feet\",\n", + " 'comes a time for letting go',\n", + " \"everything that you don't know\",\n", + " 'cool your jets, just take some time',\n", + " 'cool your jets, relax and unwind',\n", + " \"cool your jets, and you'll be fine\",\n", + " 'cool your jets, cool your jets',\n", + " 'battles won and battles lost',\n", + " 'war has come and war has passed',\n", + " 'work so hard to get ahead',\n", + " 'lighten up be here instead and...',\n", + " 'cool your jets, just take some time',\n", + " 'cool your jets, relax and unwind',\n", + " \"cool your jets, and you'll be fine\",\n", + " 'cool your jets, cool your jets',\n", + " 'cool your jets, just take some time',\n", + " \"cool your jets, you'll be fine\",\n", + " 'you work so hard you forget to pause',\n", + " 'and take a moment to enjoy it all',\n", + " \"what's the point of pushing ahead?\",\n", + " 'wait to sleep when you are dead?',\n", + " 'the time is now to take a break',\n", + " 'kick back and take some time to',\n", + " 'cool your jets, just take some time',\n", + " 'cool your jets, relax and unwind',\n", + " 'cool your jets, leave your troubles behind',\n", + " 'cool your jets, cool your jets',\n", + " 'cool your jets, just take some time',\n", + " 'cool your jets, relax and unwind',\n", + " \"cool your jets, and you'll be fine\",\n", + " 'cool your jets, cool your jets',\n", + " 'you taught me love',\n", + " 'you taught me how to breathe',\n", + " 'you taught me love',\n", + " 'you taught me how to see the world',\n", + " 'bright and shine',\n", + " 'everything that new to me',\n", + " 'you taught me love',\n", + " 'you taught me everything except for',\n", + " 'how to forget you',\n", + " 'erase you in my mind',\n", + " 'i can’t forget you',\n", + " 'you will always be here',\n", + " 'our home',\n", + " 'our place',\n", + " 'now it’s empty with the silence',\n", + " 'your bed',\n", + " 'your clothes',\n", + " 'they lost someone who owns it',\n", + " 'you taught me love',\n", + " 'you taught me love',\n", + " 'you taught me lovе',\n", + " 'you taught me love',\n", + " 'and now your gone',\n", + " 'and i’m alonе',\n", + " 'i miss you',\n", + " 'still love you',\n", + " 'i can’t forget you',\n", + " 'you taught me love',\n", + " 'you taught me love',\n", + " 'you taught me love',\n", + " 'hey, how was your day',\n", + " 'mine was a rainy day',\n", + " 'raining inside of my mind',\n", + " 'you were my girl',\n", + " 'you were my friend',\n", + " 'you were my teacher',\n", + " 'and it’s gonna fade away the one who i loved',\n", + " 'i never thought the days without you',\n", + " 'memories we drew',\n", + " 'without you baby i can’t stand it right',\n", + " 'i can’t just end this over i’m still here',\n", + " 'you are the only one',\n", + " 'i beg you right now i’m dying',\n", + " 'oh please come back to me',\n", + " 'our home',\n", + " 'our place',\n", + " 'now it’s empty with the silence',\n", + " 'your bed',\n", + " 'your clothes',\n", + " 'they lost someone who owns it',\n", + " 'you taught me love',\n", + " 'you taught me love',\n", + " 'you taught me love',\n", + " 'you taught me love',\n", + " 'and now you’re gone',\n", + " 'and i’m alone',\n", + " 'i miss you still love you',\n", + " 'i can’t forget you',\n", + " 'you taught me love',\n", + " 'you taught me love',\n", + " 'you taught me love',\n", + " 'why am i in love in stereo',\n", + " 'with a girl on either side',\n", + " 'you might well look on and envy me',\n", + " 'but this feelin` isn`t so hi-fi',\n", + " 'just a boy in love in stereo',\n", + " 'when we dance it`s not much fun',\n", + " 'i can`t choose `cause they`re identical',\n", + " 'and i can`t move without the other one',\n", + " 'one wants to stay at home the other wants the night out',\n", + " 'one wants to read in bed the other wants the light out',\n", + " 'i really don`t know what to do `cause i`m in love with you...',\n", + " 'and you...and you',\n", + " 'why am i in love in stereo',\n", + " 'where to start, i can`t decide',\n", + " '`cause makin` love is two dimentional',\n", + " 'and i`m much more a mono man inside',\n", + " 'now that i`m in love in stereo',\n", + " 'there`s one thing i can`t deny',\n", + " 'oo when we kiss, we reach hi frequency',\n", + " 'but i prefer the reproduction side',\n", + " 'one wants to stay at home the other wants the night out',\n", + " 'one wants to read in bed the other wants the light out',\n", + " 'one wants to marry me the other wants to break up',\n", + " 'one wants to call it off the other wants to make up',\n", + " 'i really don`t know what to do, `cause i`m in love with you...',\n", + " 'and you, and you',\n", + " 'why am i, in love in stereo',\n", + " 'oo why am i, in love in stereo',\n", + " 'i said why am i in love in stereo',\n", + " 'why am i in love in stereo',\n", + " 'why am i in love in stereo',\n", + " 'repeat and fade.....',\n", + " \"i'm afraid to die\",\n", + " \"i'm nearly old\",\n", + " \"i'm almost young\",\n", + " \"or so i'm told\",\n", + " 'they say, time is a healer',\n", + " 'faith is death',\n", + " 'or left to die',\n", + " \"i won't put a strain on another broken chain\",\n", + " 'or so i lie',\n", + " 'so i lie',\n", + " \"i'm floading down\",\n", + " 'like a long lost dream',\n", + " 'my savier flew from',\n", + " 'his stitched up scene',\n", + " \"and i'm afraid to die\",\n", + " \"i'm nearly old\",\n", + " \"i'm almost young\",\n", + " \"or so i'm told\",\n", + " 'they say, i would be better',\n", + " 'far from here, and left alone',\n", + " \"but now my luck isn't cheaper\",\n", + " \"my faith i'll buy traffic drones\",\n", + " \"'cause i'still alone\",\n", + " 'nowhere to go',\n", + " \"i'm floading down\",\n", + " 'like a long lost dream',\n", + " 'my savier flew from',\n", + " 'his stitched up scene',\n", + " 'my friends they cry',\n", + " 'will be the first to die',\n", + " \"i'm far, far to scared to asking why\",\n", + " \"'cause i'm afraid to die\",\n", + " \"i'm nearly old\",\n", + " \"i'm almost young\",\n", + " \"or so i'm told\",\n", + " \"living in a word of what's been said\",\n", + " 'what i know is i feel dead',\n", + " 'alone and in this world so cold',\n", + " \"emptying the urn of all that'(s left\",\n", + " 'burning the candle at both ends',\n", + " 'one less flame awaits the dawn',\n", + " 'would i walk right down to the end',\n", + " 'and then push my soul right in',\n", + " 'as i watch the remains of my soul',\n", + " 'lost in a crimson flow',\n", + " \"seated on the edge of all that's left\",\n", + " 'an empty shell full of regret',\n", + " 'and the burden of life goes on',\n", + " 'praying for the shining light beyond your life',\n", + " 'to put an end to your forever lnight',\n", + " 'embraced upon the sorrow razorborn smile',\n", + " 'so i walk right down to the end',\n", + " 'and i push my soul right in',\n", + " 'as i watch the remains of my soul',\n", + " 'lost in a crimson flow',\n", + " 'and i watch the remains of my soul',\n", + " 'my soul is shut',\n", + " 'my soul is shut',\n", + " 'my soul is shut',\n", + " 'my soul is shut',\n", + " 'so i walk right down to the end',\n", + " 'and i push my soul right in',\n", + " 'as i watch the remains of my soul',\n", + " 'lost in a crimson flow',\n", + " 'and i feel that i might be dead',\n", + " 'and i know it might be said',\n", + " 'free from this world so dark and cold',\n", + " '(it starts with one)',\n", + " \"one thing, i don't know why\",\n", + " \"it doesn't even matter how hard you try\",\n", + " 'keep that in mind, i designed this rhyme',\n", + " 'to explain in due time that',\n", + " 'all i know',\n", + " 'time is a valuable thing',\n", + " 'watch it fly by as the pendulum swings',\n", + " 'watch it count down to the end of the day',\n", + " 'the clock ticks life away',\n", + " \"it's so unreal\",\n", + " \"didn't look out below\",\n", + " 'watch the time go right out the window',\n", + " \"trying to hold on but didn't even know\",\n", + " 'wasted it all just to',\n", + " 'watch you go',\n", + " 'i kept everything inside',\n", + " 'and even though i tried, it all fell apart',\n", + " 'what it meant to me will eventually be a memory',\n", + " 'of a time...',\n", + " 'i tried so hard, and got so far',\n", + " \"but in the end, it doesn't even matter\",\n", + " 'i had to fall, to lose it all',\n", + " \"but in the end, it doesn't even matter\",\n", + " 'i am a light sleeper',\n", + " 'but i am a heavy dreamer',\n", + " 'my imagination gives me wings',\n", + " 'and i can go anywhere',\n", + " 'and when i wander away',\n", + " 'to some other place',\n", + " \"i'm suddenly there\",\n", + " 'way up in the air',\n", + " 'where passenger trains',\n", + " 'catch fire and fill the sky with flames',\n", + " 'and that black rabbit of death',\n", + " 'wakes up in a breath',\n", + " 'of beautiful dreams',\n", + " 'my heartache, it seems',\n", + " 'so terribly vain',\n", + " 'where fire and diamonds fall like rain',\n", + " 'do you believe',\n", + " 'in endless miracles?',\n", + " 'do you believe',\n", + " 'in the impossible?',\n", + " 'do you believe',\n", + " 'sleep is a time machine?',\n", + " 'do you believe',\n", + " 'in curiosity?',\n", + " 'do you believe',\n", + " 'in what you cannot see?',\n", + " 'do you believe',\n", + " 'life is a lucid dream?',\n", + " 'that’s how you study the stars',\n", + " 'that’s how you study the stars',\n", + " 'and that’s how you know them by heart',\n", + " 'life is a lucid dream',\n", + " 'such is the path of a dreamer',\n", + " 'i find my way by moonlight',\n", + " 'my imagination gives me wings',\n", + " 'and i can go anywhere',\n", + " 'and when i wander away',\n", + " 'to some other place',\n", + " \"i'm suddenly there\",\n", + " 'way up in the air',\n", + " 'where passenger trains',\n", + " 'catch fire and fill the sky with flames',\n", + " 'and that black rabbit of death',\n", + " 'wakes up in a breath',\n", + " 'of beautiful dreams',\n", + " 'my heartache, it seems',\n", + " 'so terribly vain',\n", + " 'where fire and diamonds fall like rain',\n", + " 'do you believe',\n", + " 'in endless miracles?',\n", + " 'do you believe',\n", + " 'in the impossible?',\n", + " 'do you believe',\n", + " 'sleep is a time machine?',\n", + " 'do you believe',\n", + " 'in curiosity?',\n", + " 'do you believe',\n", + " 'in what you cannot see?',\n", + " 'do you believe',\n", + " 'life is a lucid dream?',\n", + " 'well, that’s how you study the stars',\n", + " 'that’s how you study the stars',\n", + " 'and that’s how you know them by heart',\n", + " 'life is a lucid dream',\n", + " 'well, that’s how you study the stars',\n", + " 'that’s how you study the stars',\n", + " 'and that’s how you know them by heart',\n", + " 'life is a lucid dream',\n", + " 'i am a light sleeper',\n", + " 'but i am a heavy dreamer',\n", + " 'we fight battles in the chaos waste',\n", + " 'crushing and routing the enemy',\n", + " 'battle for supremacy',\n", + " 'slaughtering, hammering, polluting',\n", + " 'hordes of chaos',\n", + " 'hordes of chaos',\n", + " 'hordes of chaos',\n", + " 'hordes of chaos',\n", + " 'marching to the south in mail clad ranks',\n", + " 'searching for eternal butchery',\n", + " 'armies on the way are defeated',\n", + " 'war is coming down from the north',\n", + " 'hordes of chaos',\n", + " 'hordes of chaos',\n", + " 'hordes of chaos',\n", + " 'hordes of chaos',\n", + " 'torture',\n", + " 'perverse slaughter',\n", + " 'eternal butchery',\n", + " 'endless insanity',\n", + " 'causing mayhem',\n", + " 'false redemption',\n", + " 'licking gore',\n", + " 'spilling blood',\n", + " 'hordes of chaos',\n", + " 'hordes of chaos',\n", + " 'hordes of chaos',\n", + " 'hordes of chaos',\n", + " 'from the north',\n", + " 'i whisper softly but the words no longer say',\n", + " 'so now we watch it gently drift away',\n", + " 'blasted with the sigh, surrounded with tears',\n", + " 'so upon this mountain,i rest my fears',\n", + " 'brother,am i a fool?',\n", + " 'you can cry me a river,cry me a river',\n", + " 'i could be swimming in your sea when you cry me a river',\n", + " 'i cried a river for you',\n", + " \"what kind of fool am i to think that you'd stay?\",\n", + " 'i hold the cup against my lips and i taste',\n", + " 'fills me with desire,fills me with hate',\n", + " \"so upon my knees i'll wait\",\n", + " 'you can cry me a river,cry me a river',\n", + " 'i could be swimming in your sea when you cry me a river',\n", + " 'i cried a river for you',\n", + " 'there are rivers to be filled',\n", + " \"that doesn't change the way that i choose to live\",\n", + " 'all you said were lies',\n", + " \"now you're only waiting for rivers to be cried\",\n", + " 'cry me a river cuz a cried one for you',\n", + " \"there ain't no mountain i wouldn't climb for you\",\n", + " \"what kinda fool am i to think that you'll stay\",\n", + " 'i hold the cup cuz i miss the taste',\n", + " \"it's hard to be tender\",\n", + " \"it's hard to stay open\",\n", + " \"when you're dizzy with anger\",\n", + " 'and your dreams have been broken',\n", + " \"lying with you 'neath the sky\",\n", + " 'the country is so green in the light',\n", + " \"loving you's the key to my survival\",\n", + " 'now you have gone away',\n", + " 'the skies turned grey, the rivers froze',\n", + " 'i remember how you held me close',\n", + " 'and i shiver',\n", + " \"it's hard to be tender\",\n", + " \"it's hard to stay open\",\n", + " 'when the woods are on fire',\n", + " 'and the river is frozen',\n", + " 'swore on my knees as a child',\n", + " 'never to forsake god above',\n", + " 'never to betray the ones who love me',\n", + " 'now years have come and gone',\n", + " 'i find the strength to carry on',\n", + " 'but the blood that ran so fast and warm',\n", + " 'has grown colder',\n", + " 'now my heart has turned to ice',\n", + " 'is it just the price of growing older?',\n", + " \"it's hard to be tender\",\n", + " \"but i'm tired of defending\",\n", + " 'i know that i love you',\n", + " \"so i'll write my own ending\",\n", + " 'living battle faces on',\n", + " 'masking actions in the wrong',\n", + " 'superheroes imitate',\n", + " \"and come around when it's too late\",\n", + " \"i know that we'll make time\",\n", + " 'and set this right, tonight',\n", + " 'tonight',\n", + " 'thankful for this, fame we take',\n", + " 'for the complication we create',\n", + " 'and i know, somehow',\n", + " \"we'll be fine, tonight\",\n", + " 'tonight',\n", + " \"i'm in the wrong, uh, octave for that one, let's try this\",\n", + " \"oh, that's the octave of sales right there\",\n", + " 'there it is',\n", + " 'is it in the sales key? otherwise...',\n", + " 'we took a whole internet correspondence course on jingle writing and they told us to put a song in this key',\n", + " 'oh, okay',\n", + " 'industry secret',\n", + " 'late at night, all alone',\n", + " \"after i'm finished\",\n", + " 'kleenex is there for me',\n", + " 'you can never have enough kleenex',\n", + " 'give it to me, give it to me',\n", + " 'give it to me, give it to me',\n", + " 'give it to me, give it to me',\n", + " 'give it to me, give it to me',\n", + " 'give it to me',\n", + " 'yeah, my durango, number 95',\n", + " 'kick boots and ultra live',\n", + " 'see heaven, flash a horror show',\n", + " 'knock it nice and smooth',\n", + " 'step back and watch it flow, yeah',\n", + " 'never gonna stop',\n", + " 'never gonna stop',\n", + " 'never gonna stop',\n", + " 'never gonna stop',\n", + " 'give it to me, give it to me',\n", + " 'give it to me, give it to me',\n", + " 'give it to me, give it to me',\n", + " 'yeah, the devil, ride a dinosaur',\n", + " 'he paint the monster red',\n", + " \"so the blood don't stain the floor\",\n", + " 'in and out, real savage show',\n", + " 'sorry as a shot, came sickness',\n", + " 'watch it flow, yeah',\n", + " 'never gonna stop',\n", + " 'never gonna stop',\n", + " 'never gonna stop',\n", + " 'never gonna stop',\n", + " 'intermission',\n", + " 'use my body to keep you alive',\n", + " 'use my body to keep you alive',\n", + " \"i don't care what you do to me\",\n", + " 'use my body to keep you alive',\n", + " \"i don't care what you do to me\",\n", + " 'use my body to keep you alive',\n", + " 'yeah, my durango, number 95',\n", + " 'kick boots and ultra live',\n", + " 'see heaven, flash a horror show',\n", + " 'knock it nice and smooth',\n", + " 'step back and watch it flow, yeah',\n", + " 'never gonna stop',\n", + " 'never gonna stop',\n", + " 'never gonna stop',\n", + " 'never gonna stop',\n", + " 'not a tree on the skyline',\n", + " 'nor a bird in the wing',\n", + " 'whispers frozen for all time',\n", + " \"no man's land will be king\",\n", + " 'left deserted, a cold smile',\n", + " \"from the way they've been served\",\n", + " 'virgin mother and her child',\n", + " 'turn their face from the world',\n", + " \"just for a moment, they're only men\",\n", + " 'on christmas day',\n", + " \"there'll be no killing or fighting\",\n", + " 'on christmas day',\n", + " \"there'll be no thunder and lighting\",\n", + " 'on christmas day',\n", + " 'on christmas day',\n", + " \"many years they'll remember\",\n", + " \"and they'll toast absent friends\",\n", + " 'on that cold day december',\n", + " ...]},\n", + " 'r-b': {'meta': {'train_data': ['no, you just do your thing',\n", + " 'stop playing with your body, lady',\n", + " \"stop feeling like you're not enough\",\n", + " 'stop feeding into the haters',\n", + " 'stop and give yourself some love, woah',\n", + " 'stop staring at the mirror getting faded',\n", + " \"saying you won't fall in love\",\n", + " 'stop trusting all those fake idiots',\n", + " \"trust me they don't give a fuck, woah\",\n", + " \"i'm tired of seeing it\",\n", + " \"i'm tired of feeling this\",\n", + " 'the world says beauty is changing',\n", + " \"fuck that, it's fake expectation of the real shit\",\n", + " \"let's get naked\",\n", + " 'start meditating',\n", + " 'feel elevated and say',\n", + " 'i love my body, i love my skin',\n", + " 'i am a goddess, i am a queen',\n", + " 'i love my body, i love my skin',\n", + " 'i am a goddess, i am a queen',\n", + " 'stop chasing all the hype, my girl',\n", + " 'stop trying to change who you are',\n", + " 'stop cutting yourself up on the outside',\n", + " 'when the inside is left with scars',\n", + " \"it can't be healed with something materialistic\",\n", + " \"can't be healed by a man who stays distant\",\n", + " \"it's deeper\",\n", + " 'save yourself, before you betray yourself',\n", + " 'oh, oh-oh-oh, oh-oh, hey',\n", + " \"i'm tired of seeing it\",\n", + " \"i'm tired of feeling this\",\n", + " 'the world says beauty is changing',\n", + " \"fuck that, it's fake expectation of the real shit\",\n", + " \"let's get naked\",\n", + " 'start meditating',\n", + " 'feel elevated and say',\n", + " 'i love my body, i love my skin',\n", + " 'i am a goddess, i am a queen',\n", + " 'i love my body, i love my skin',\n", + " 'i am a goddess, i am a queen',\n", + " 'yes',\n", + " 'i love my body, i love my skin',\n", + " 'i am a goddess, i am a queen',\n", + " 'i love my body, i love my skin',\n", + " 'i am a goddess, i am a queen, oh',\n", + " 'i love my, i love my',\n", + " 'i am a, i am a',\n", + " 'i love my, i love my, huh',\n", + " 'i am a, i am a',\n", + " 'i love my body, i love my skin',\n", + " 'i am a goddess, i am a queen',\n", + " 'i love my body, i love my skin, yeah',\n", + " 'i am a goddess, i am a queen, hm',\n", + " 'i am a queen, queen, queen, queen',\n", + " 'i am a queen',\n", + " 'i am a queen',\n", + " 'skies of blue and birds of yellow',\n", + " 'flowers growing just to bloom',\n", + " 'a million chances of our glances',\n", + " 'catching eyes across the room',\n", + " 'if time stands still',\n", + " 'move i will to you',\n", + " \"this world's filled\",\n", + " 'somehow i see you',\n", + " 'move i will to you',\n", + " 'rain could pour upon your face now',\n", + " 'and yet your beauty would still shine',\n", + " 'i would live a thousand lifetimes',\n", + " \"if it's you i'm sent to find\",\n", + " 'if time stands still',\n", + " 'move i will to you',\n", + " \"this world's filled\",\n", + " 'somehow i see you',\n", + " 'move i will to you',\n", + " 'move all the water, babe',\n", + " 'lift the rocks up, tide getting stuck',\n", + " 'nothing can stop us',\n", + " 'move all the water, babe',\n", + " 'lift the rocks up, tide getting stuck',\n", + " 'nothing can stop us',\n", + " 'if time stands still',\n", + " 'move i will to you',\n", + " \"this world's filled\",\n", + " 'somehow i see you',\n", + " 'if time stands still (if time stands still)',\n", + " 'move i will to you (move i will to you)',\n", + " \"this world's filled\",\n", + " 'somehow i see you (some how i see you)',\n", + " 'move i will to you',\n", + " 'ooh-ooh-ooh-ooh, ooh-ooh, ooh-ooh-ooh',\n", + " 'ooh-ooh-ooh, ooh-ooh-ooh, ooh-ooh-ooh',\n", + " \"there's a light\",\n", + " 'a certain kind of light',\n", + " \"that's never shown on me\",\n", + " 'i want my whole life to be',\n", + " 'lived with you',\n", + " 'lived with you',\n", + " \"there's a way\",\n", + " 'everybody say',\n", + " 'to do every, every little thing',\n", + " 'what good does it bring',\n", + " \"if i ain't got you?\",\n", + " \"if i ain't got you\",\n", + " \"you don't (you don't know what it's like)\",\n", + " \"you don't know what it's like\",\n", + " \"honey, you don't know what it's like\",\n", + " 'to love somebody (to love somebody)',\n", + " 'to love somebody',\n", + " 'the way that i love you (the way that i love you)',\n", + " 'in my brain',\n", + " 'i see your face again',\n", + " 'and i know my frame, my frame of mind',\n", + " \"you don't have to be so blind\",\n", + " \"oh, but i'm blind\",\n", + " \"yes, i'm so blind\",\n", + " \"i'm a woman\",\n", + " \"can't you see what i am?\",\n", + " 'i live and i breathe, i live and breathe for you',\n", + " 'and what good, what good does it do',\n", + " \"if i ain't got you?\",\n", + " \"if i ain't got you\",\n", + " \"you don't (you don't know what it's like)\",\n", + " \"you don't know what it's like\",\n", + " \"honey, you don't (you don't know what it's like)\",\n", + " \"you don't know what it's like\",\n", + " 'to love somebody (to love somebody)',\n", + " 'to love somebody',\n", + " 'the way i love you (the way i love you)',\n", + " 'yeh, ey',\n", + " 'to love somebody (oh, to love somebody)',\n", + " 'to love somebody (oh, no, no, oh)',\n", + " 'the way i love you (the way i love ya)',\n", + " '(the way i love you)',\n", + " 'hey (to love somebody)',\n", + " \"you don't know what it's like (to love somebody)\",\n", + " \"oh, you don't know what it's like\",\n", + " 'to love somebody the way i love you',\n", + " 'somebody that i need',\n", + " 'somebody that i need',\n", + " 'i get you what you want when you need it',\n", + " 'i gave you what you want and you paid me, yeah',\n", + " \"now i'm movin’\",\n", + " \"tell me who you were, are you bein' real, yeah\",\n", + " 'i can play nice, do it how you like, oh yeah, yeah, yeah',\n", + " 'play dress up for the night, get it how you like, oh yeah, yeah, yeah',\n", + " 'we can catch a flight, only for a night, oh yeah, yeah, yeah',\n", + " \"i'm over you\",\n", + " 'but i used somebody i need',\n", + " 'i used somebody i need',\n", + " 'i used somebody i need',\n", + " 'i used somebody to me',\n", + " 'i used somebody i need',\n", + " 'i used somebody i need',\n", + " 'but i used somebody i need',\n", + " 'i used somebody to me',\n", + " 'i don’t really want nobody',\n", + " \"that don't know what they want, oh yeah\",\n", + " 'but i really want you body',\n", + " 'closer than i want i suppose',\n", + " \"and i'm on your vibe, yeah\",\n", + " 'so if you want my time, babe show me',\n", + " 'babe, show me (show me)',\n", + " 'oh yeah, yeah, yeah',\n", + " 'i can play nice, do it how you like, oh yeah, yeah, yeah',\n", + " 'play dress up for the night, get it how you like, oh yeah, yeah, yeah',\n", + " 'we can catch a flight, only for a night, oh yeah, yeah, yeah',\n", + " \"i'm over you\",\n", + " 'but i used somebody i need',\n", + " 'i used somebody i need',\n", + " 'i used somebody i need',\n", + " 'i used somebody to me',\n", + " 'i used somebody i need',\n", + " 'i used somebody i need',\n", + " 'but i used somebody i need',\n", + " 'i used somebody to me',\n", + " '(somebody that i need)',\n", + " 'show you what i need know',\n", + " 'to money low, too money low',\n", + " 'show me to work for me',\n", + " 'to work for me, to work for me',\n", + " 'somebody that i need',\n", + " 'i need somebody',\n", + " 'i need somebody, yeah',\n", + " 'somebody that i need',\n", + " 'i used somebody, somebody that i need',\n", + " 'i used somebody, somebody that i need',\n", + " 'everybody dance, do-do-do',\n", + " 'clap your hands, clap your hands',\n", + " 'everybody dance, do-do-do',\n", + " 'clap your hands, clap you hands',\n", + " 'everybody dance, do-do-do',\n", + " 'clap your hands, clap your hands',\n", + " 'everybody dance, do-do-do',\n", + " 'clap your hands, clap your hands',\n", + " 'music never lets you down',\n", + " 'puts a smile on your face any time, any place',\n", + " 'dancing helps relieve the pain',\n", + " 'soothes your mind, makes you happy again',\n", + " 'listen to those dancing feet',\n", + " 'close your eyes and let go',\n", + " \"but it don't mean a thing if it ain't got that swing\",\n", + " 'spinning all around the floor just like rogers and astaire',\n", + " 'who found love without a care stepping to our favorite tune',\n", + " 'the good times always end too soon',\n", + " \"everybody's dancing lift your feet, have some fun\",\n", + " 'come on everybody, get on your feet',\n", + " \"clap your hands everybody's screaming\",\n", + " '(x2)',\n", + " 'everybody dance',\n", + " 'everybody dance',\n", + " 'everybody dance',\n", + " 'everybody dance',\n", + " 'everybody dance',\n", + " 'everybody dance',\n", + " 'everybody dance',\n", + " 'everybody dance',\n", + " 'everybody dance, do-do-do',\n", + " 'clap your hands, clap your hands',\n", + " 'everybody dance, do-do-do',\n", + " 'clap your hands, clap you hands',\n", + " '(x4)',\n", + " 'i know better than anybody how it feels',\n", + " 'to want somebody so bad after you break up',\n", + " 'still looking for that phone call',\n", + " \"still, even when they don't call\",\n", + " \"still ain't ready to walk away and call it all over\",\n", + " \"act like you wasn't listening when they told you\",\n", + " \"they don't want to be with you anymore\",\n", + " 'stuck in your ways, you choose to ignore',\n", + " \"'cause in your mind, you're still together\",\n", + " \"thought it would last, but there's no forever\",\n", + " 'walked out on you with no call, no letter',\n", + " \"when he realize it don't get no better\",\n", + " \"he'll be back to make up for the lonely days\",\n", + " \"he'll be back when things ain't working out his way\",\n", + " \"he'll be back when he sees that it's not the same\",\n", + " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", + " \"he knows he's gonna need his lady\",\n", + " \"he'll be back when his boys say he must be crazy\",\n", + " \"he'll be back, he'll know he made a big mistake\",\n", + " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", + " \"you don't want to believe it but you see it happening\",\n", + " \"wakes you up out of your sleep, out of the dreams you're having\",\n", + " 'still looking for his return',\n", + " \"still hoping that he's gonna learn\",\n", + " 'wake up, and realize the truth',\n", + " 'make some time for you',\n", + " 'what is he trying to do to you?',\n", + " 'miss him more as days go by',\n", + " 'try your hardest not to cry and keep hope alive',\n", + " \"'cause in your mind, you're still together\",\n", + " \"thought it would last, but there's no forever\",\n", + " 'walked out on you with no call, no letter',\n", + " \"when he realize it don't get no better\",\n", + " \"he'll be back to make up for the lonely days\",\n", + " \"he'll be back when things ain't working out his way\",\n", + " \"he'll be back when he sees that it's not the same\",\n", + " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", + " \"he knows he's gonna need his lady\",\n", + " \"he'll be back when his boys say he must be crazy\",\n", + " \"he'll be back, he'll know he made a big mistake\",\n", + " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", + " 'thinking, oh, oh, every, ooh, wanting, haunting',\n", + " 'thinking, oh, oh, every, ooh, wanting, haunting',\n", + " \"he'll be back, thinking, oh, oh, every, ooh, wanting, haunting\",\n", + " 'thinking, oh, oh, every, ooh, wanting, haunting',\n", + " \"he'll be back to make up for the lonely days\",\n", + " \"he'll be back when things ain't working out his way\",\n", + " \"he'll be back when he sees that it's not the same\",\n", + " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", + " \"he knows he's gonna need his lady\",\n", + " \"he'll be back when his boys say he must be crazy\",\n", + " \"he'll be back, he'll know he made a big mistake\",\n", + " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", + " \"your heart is so heavy you don't know where to turn\",\n", + " \"and there's a fire in your mind there, forever seems to burn\",\n", + " \"but one morning you'll wake up, feeling alive and free\",\n", + " 'singing \"oh happy days, peace be still, let it be\"',\n", + " 'and that means',\n", + " 'love is taking over',\n", + " 'love is taking over',\n", + " \"love is taking over and hate don't live here no more\",\n", + " 'love is taking over',\n", + " 'love is taking over',\n", + " \"love is taking over and hate don't live here no more\",\n", + " 'we try to get around it, but still we see',\n", + " 'little black and white children, lord',\n", + " 'taking it on the knee',\n", + " 'you see they call it reflection',\n", + " 'when you see yourself',\n", + " 'in the mirror of somebody else',\n", + " 'and i know that',\n", + " 'love is taking over, yeah',\n", + " \"love is taking over, 'cause i feel it!\",\n", + " \"love is taking over and hate don't live here no more\",\n", + " 'love is taking over, yeah, yeah',\n", + " 'love is taking over',\n", + " \"love is taking over and hate don't live here no more\",\n", + " 'giant steps are being taken',\n", + " 'to bring about peace today',\n", + " 'little children are being trapped',\n", + " 'and i see a change in man',\n", + " 'and i know that',\n", + " 'love is taking over, yeah',\n", + " 'love is taking over',\n", + " \"love is taking over and hate don't live here no more\",\n", + " 'now you close your eyes so you can see',\n", + " \"said it scared ya half to death now don't it, what you used to be\",\n", + " 'but if feels good to wake, knowing you got a friend',\n", + " 'saying everything you lived for, thank god, amen',\n", + " 'and i know that',\n", + " 'love is taking over, oh yeah',\n", + " 'love is taking over',\n", + " \"love is taking over and hate don't live here no more\",\n", + " 'no, no, no!',\n", + " 'love is taking over',\n", + " 'love is taking over, now i can feel it with !',\n", + " \"love is taking over and hate don't live here no more\",\n", + " 'no, no, no!',\n", + " \"love is taking over, yeah, yes it's taking over, yeah!\",\n", + " \"love is taking over, my, my my it's taking over me\",\n", + " \"love is taking over (whoa i feel it) and hate don't live here no more\",\n", + " 'terrace of the nightclub, cigarette butts, white wearing young boys',\n", + " 'all the things you would like, all the highs, dancing, not hearing own voice',\n", + " 'the crowd is so tight that you’re gasping for air, only to inhale smoke',\n", + " 'if i don’t see you tomorrow, can you take care of this one hope?',\n", + " 'take care of my lyrics, that’s where i put the meaning when it seemed to be meaningless',\n", + " 'take care of my enemies, i never wanted beef, so it’s time to get some quiet peace',\n", + " 'let my father know i tried be a mountain, placed in an ocean, water all around me',\n", + " 'couldn’t stand tall so i started drowning, and now you found me',\n", + " 'tell me you won’t leave me, i want you to see this',\n", + " 'moment of my weakness, smallest that i’ve been yet',\n", + " 'leaning on you selfishly, even though i’m leaving',\n", + " 'asking for your blindness as i attempt to seize it',\n", + " 'apathy is killing me, getting hard to fight it',\n", + " 'don’t remember what it feels like to be inspired',\n", + " 'wind and water overhead, taking out the fire',\n", + " 'red coal flickering underneath the pyre',\n", + " 'step inside it i hear from the other side now',\n", + " 'lord of light claiming just another damn liar',\n", + " 'tongues of flames are licking me, blazing even higher',\n", + " 'now the mask is ripping off, showing what i’m hiding',\n", + " \"i-i-i-i hear you talkin' but i'm not listenin' (listenin')\",\n", + " \"it's been about a hour, you ain't finished yet (finished yet)\",\n", + " \"so what's it gonna be? catch your time to think\",\n", + " \"shouldn't be that hard when it comes to this\",\n", + " \"i-i-i was your rock when you ain't have it (have it)\",\n", + " \"now you actin' brand new. what's the deal here? (deal here)\",\n", + " \"i may run in the streets, i'm reaching a break\",\n", + " 'i done had enough',\n", + " \"so now it's time to go\",\n", + " \"baby, that's your queue to leave\",\n", + " \"ain't feelin' you no more\",\n", + " \"if that's how it's gonna be\",\n", + " 'tell me why do you deserve another second chance (a second chance)',\n", + " \"now i'm gonna want to take a better man\",\n", + " \"so now it's time to go\",\n", + " 'time to go, time to go',\n", + " \"you-you-you-you-you think you prove but you're a little boy\",\n", + " \"little boy, screamin' and shoutin'\",\n", + " \"makin' all this noise\",\n", + " \"don't even know what we're fightin' for\",\n", + " 'it makes no sense to me',\n", + " \"but damn i thought i've told you to move to the left (to the left)\",\n", + " \"you playin' these games, i've got nothing else (i've got nothing else)\",\n", + " 'it is obvious and clear to me',\n", + " \"i can't get through to you anymore\",\n", + " \"so now it's time to go\",\n", + " \"baby, that's your queue to leave\",\n", + " \"ain't feelin' you no more\",\n", + " \"if that's how it's gonna be\",\n", + " 'tell me why do you deserve another second chance (a second chance)',\n", + " \"now i'm gonna want to take a better man\",\n", + " 'time to go',\n", + " 'time to go, time to go',\n", + " 'you can spy the settle thought of this one',\n", + " 'no more lies',\n", + " \"you're at the door\",\n", + " \"so now it's time to go (time to go)\",\n", + " \"baby, that's your queue to leave\",\n", + " \"ain't feelin' you no more (ain't feelin' you no more)\",\n", + " \"if that's how it's gonna be\",\n", + " 'tell me why do you deserve another second chance (a second chance)',\n", + " \"now i'm gonna want to take a better man\",\n", + " 'time to go',\n", + " \"time to go, time to go (and it's time to go)\",\n", + " 'time to go (go), time to go (go)',\n", + " 'time to go (go), time to go (go)',\n", + " 'ooh, ooh ooh',\n", + " 'ooh, ooh ooh',\n", + " 'are you ready for the time of your life',\n", + " \"it's time to stand up and fight\",\n", + " \"(it's alright) it's alright (it's alright, it's alright)\",\n", + " \"hand in hand we'll take a caravan\",\n", + " 'to the motherland',\n", + " \"one by one we're gonna stand with the pride\",\n", + " \"one that can't be denied\",\n", + " '(stand up, stand up, stand up)',\n", + " 'from the highest mountain, and valley low',\n", + " \"we'll join together with hearts of gold\",\n", + " 'now the children of the world can see',\n", + " \"there's a better way for us to be\",\n", + " 'the place where mankind was born is so neglected and torn',\n", + " 'torn apart',\n", + " 'every woman, every man',\n", + " 'join the caravan of love',\n", + " '(stand up, stand up, stand up)',\n", + " 'everybody take a stand',\n", + " 'join the caravan of love',\n", + " \"i'm your brother\",\n", + " \"i'm your brother, don't you know\",\n", + " \"i'm your brother\",\n", + " \"i'm your brother, don't you know\",\n", + " \"we'll be living in a world of peace\",\n", + " 'in a day when everyone is free',\n", + " \"we'll bring the young and the old\",\n", + " \"won't you let your love flow from your heart\",\n", + " 'every woman, every man',\n", + " 'join the caravan of love',\n", + " '(stand up, stand up, stand up)',\n", + " 'everybody take a stand',\n", + " 'join the caravan of love',\n", + " \"i'm your brother\",\n", + " \"i'm your brother, don't you know\",\n", + " \"i'm your brother\",\n", + " \"i'm your brother, don't you know\",\n", + " 'now the children of the world can see',\n", + " \"there's a better way for us to be\",\n", + " 'the place where mankind was born',\n", + " 'is so neglected and torn',\n", + " 'torn apart',\n", + " 'every woman, every man',\n", + " 'join the caravan of love',\n", + " '(stand up, stand up, stand up)',\n", + " 'everybody take a stand',\n", + " 'join the caravan of love',\n", + " 'are you ready for the time of your life?',\n", + " '(are you ready? are you ready?)',\n", + " 'are you ready for the time of your life?',\n", + " '(are you ready? are you ready?)',\n", + " 'come go with me',\n", + " '(are you ready? are you ready?)',\n", + " 'come go with me',\n", + " '(are you ready? are you ready?)',\n", + " 'every woman, every man',\n", + " 'join the caravan of love',\n", + " '(are you ready? are you ready?)',\n", + " 'everybody take a stand',\n", + " 'join the caravan of love',\n", + " '(are you ready? are you ready?)',\n", + " 'every woman, every man',\n", + " 'join the caravan of love',\n", + " '(are you ready? are you ready?)',\n", + " 'everybody take a stand',\n", + " 'join the caravan of love',\n", + " '(are you ready? are you ready?)',\n", + " 'in a dream',\n", + " \"you came to me and i don't know what to say\",\n", + " 'you got me wrapped around your finger with everything you do so',\n", + " \"and that's the truth\",\n", + " 'in the dark days',\n", + " 'we gonna be alright',\n", + " 'in the night time',\n", + " \"i'll lead you to the light\",\n", + " 'and cross my heart',\n", + " \"don't you think about it just know i always got you babe\",\n", + " 'i got you babe',\n", + " \"you don't ever have to walk alone\",\n", + " 'i know we can always find a way',\n", + " \"you are the queen that's on the throne\",\n", + " 'i need you to stay with me',\n", + " \"you've given me lifelines\",\n", + " \"you've given me lifelines\",\n", + " 'i tried',\n", + " 'to think about all the things you mean to me',\n", + " 'all the little ways you guided me to be everything i am oh',\n", + " \"girl that's the truth\",\n", + " 'and i think about the days',\n", + " 'tears falling down my face',\n", + " 'so let me take the time',\n", + " \"now before it's too late\",\n", + " \"crying, yelling there's no telling where i'd be without your love\",\n", + " 'just wanna thank you, love',\n", + " 'i carry your name and your lineage',\n", + " 'i carry the flame and my intention is to keep it ablaze until somebody gets wind of it',\n", + " 'and tries to blow it out',\n", + " 'sorry i have my doubts',\n", + " \"sorry i have my bouts in the cesspool it's stressful i wanna shout\",\n", + " 'preacher play it again',\n", + " 'lucky i got a friend',\n", + " 'as long as you live within',\n", + " \"i won't never go without\",\n", + " 'tigallo out',\n", + " 'you know you want me',\n", + " 'and i know i need you',\n", + " \"it's just me and you\",\n", + " \"so watchu gon' do about it?\",\n", + " 'eh-eh, eh-eh',\n", + " \"eh-eh, eh-eh, watchu gon' do about it?\",\n", + " 'eh-eh, eh-eh',\n", + " \"eh-eh, eh-eh, watchu gon' do about it?\",\n", + " 'you know you want me',\n", + " 'and i know i need you',\n", + " \"it's just me and you\",\n", + " \"so watchu gon' do about it?\",\n", + " 'you know you want me',\n", + " 'and i know i need you',\n", + " \"it's just me and you\",\n", + " \"eh-eh, eh-eh, so watchu gon' do about it?\",\n", + " 'eh-eh, eh-eh',\n", + " 'eh-eh, eh-eh',\n", + " \"eh-eh, eh-eh, watchu gon' do about it?\",\n", + " 'eh-eh, eh-eh',\n", + " 'you know you want me',\n", + " 'and i know i need you',\n", + " \"it's just me and you\",\n", + " \"so watchu gon' do about it?\",\n", + " \"i don't want to be without you\",\n", + " 'only want to stand beside you',\n", + " \"i don't care who came before me\",\n", + " 'holy water cures all envy',\n", + " 'but boy i can only fall deeper in with you',\n", + " 'so please be forgiving let me baptize you',\n", + " 'water coming down like (ooh)',\n", + " 'water coming down like (ooh)',\n", + " 'water coming down like (ooh)',\n", + " 'water coming down like (ooh)',\n", + " 'with the power i surrender',\n", + " \"come it's time to go out singing\",\n", + " \"don't be frightened by the thunder\",\n", + " 'let the water wash all over',\n", + " 'but boy i can only fall deeper in with you (you)',\n", + " 'so please be forgiving let me baptize you (ooh)',\n", + " 'oh boy, i can only fall deeper in with you (ooh)',\n", + " 'so please be forgiving let me baptize you',\n", + " 'water coming down like (ooh)',\n", + " 'water coming down like (ooh)',\n", + " 'water coming down like (ooh)',\n", + " 'water coming down like (ooh)',\n", + " 'water, let me come and baptize you, ooh',\n", + " 'water, let me come and baptize you, baby',\n", + " 'water, let me come and baptize you, ooh',\n", + " 'water, let me come and baptize you',\n", + " \"you're bringing the bagels on a tray of cheese\",\n", + " 'smoke up the cables as we moving east',\n", + " 'i think i get you now',\n", + " \"you ain't supposed to be figured out\",\n", + " 'fixing the bagels for a minor feast',\n", + " 'taking the dip, just for a quick release',\n", + " 'we making the sound unique',\n", + " \"don't wanna fall asleep\",\n", + " \"you can see me stallin'\",\n", + " 'busy solving something',\n", + " \"i'm not in a rush but i'm honest to leave you know\",\n", + " 'but i call balling',\n", + " \"in a way, i'm crawling in the mud\",\n", + " 'just for the rush',\n", + " 'at the end of going on and on, yeah',\n", + " 'always on the run',\n", + " 'busy doing nothing, just too fun',\n", + " 'skinny-dipping, all these colored swirls',\n", + " 'floating on the fog, yeah',\n", + " 'in the fall',\n", + " 'smell of cigarettes and hot old love',\n", + " 'just a bunch of creatures having fun',\n", + " 'thinking we balance in the run',\n", + " \"you can see me stallin'\",\n", + " \"'cause i'm busy solving something\",\n", + " \"i'm not in a rush but i'm honest to leave you know, yeah\",\n", + " 'but i call balling',\n", + " \"in a way, i'm crawling in the mud\",\n", + " 'just for the rush',\n", + " 'at the end of going on and on',\n", + " '(yeah, yeah, yeah, yeah)',\n", + " 'i wait a minute, any minute now',\n", + " \"don't try to kill it though, it's been a while\",\n", + " 'oh no my',\n", + " \"i won't waste it all\",\n", + " 'just for fifteen',\n", + " \"if you see me stallin'\",\n", + " \"it's 'cause i'm busy solving something\",\n", + " \"i'm not in a rush but i'm honest to leave you know\",\n", + " 'but i call balling',\n", + " \"in a way, i'm crawling in the mud\",\n", + " 'just for the rush',\n", + " 'at the end of going on and on, yeah',\n", + " 'ooh-ooh, ah',\n", + " 'ooh-ooh, ah',\n", + " 'ooh-ooh, ah',\n", + " \"(i don't need you anymore)\",\n", + " \"i can't imagine how you be getting through the day\",\n", + " 'it must be hard when you be carrying all the weight',\n", + " 'but even with that i see you rarely do complain',\n", + " \"you give your heart and soul and still they don't appreciate you\",\n", + " 'man or woman i got nothing but respect for you',\n", + " 'just knowing you got to deal with all the things we put you through',\n", + " 'so i give a standing o to you',\n", + " 'i raise my glass to you',\n", + " \"i won't pretend to know\",\n", + " \"i can't begin to know\",\n", + " \"i'm fascinated on the daily how you do the things you do\",\n", + " \"man or woman i ain't got a clue\",\n", + " 'oh no',\n", + " \"girl i'm so mesmerized\",\n", + " \"i'm even mystified\",\n", + " 'your affection shows in everything and anything you do',\n", + " \"man or woman i ain't got a clue no\",\n", + " \"it's amazing how you do all that you do\",\n", + " 'suffice to say my hat goes off to you',\n", + " 'a standing ovation',\n", + " 'ovation',\n", + " 'and i just want to give a standing o to you',\n", + " 'a standing ovation',\n", + " \"i can't imagine myself walking in your shoes\",\n", + " \"it's not even worth the challenge, i know i would lose\",\n", + " \"you're just extraordinary, way above the ordinary\",\n", + " \"there ain't no conversation, been that way since god's creation\",\n", + " \"man or woman i can't help but be in awe of you\",\n", + " 'no matter what the deal somehow you always make it through',\n", + " 'so',\n", + " 'i give a standing o to you',\n", + " 'i raise my glass to you',\n", + " 'man to woman i got nothing but respect for you',\n", + " 'just knowing you got to deal with all the things we put you through',\n", + " 'so i give a standing o to you',\n", + " 'i raise my glass to you',\n", + " 'an ovation',\n", + " 'i just wanna give a standing o to you',\n", + " 'an ovation',\n", + " 'a standing ovation',\n", + " 'ovation',\n", + " 'a standing ovation',\n", + " 'ovation',\n", + " 'i just want to give a standing o to you',\n", + " \"i've spend so much money on cigarettes and weed\",\n", + " \"i've spend so much time on shit that i don't need\",\n", + " \"'cause all i need is just my gum, my gram and you\",\n", + " 'every drink or two',\n", + " \"it's all good tho, it's all good tho\",\n", + " \"it's all good tho, it's all good tho\",\n", + " \"it's all good tho, it's all good tho\",\n", + " \"this gon' be your favorite song\",\n", + " 'yeah, why you still texting my mama?',\n", + " \"you can let it go, she ain't calling back\",\n", + " 'why you still tryna start drama?',\n", + " \"we ain't even together, where they do that at\",\n", + " 'why you still calling my niggas bro?',\n", + " \"i'm just tryna get to way it was before\",\n", + " 'back in the day, when you had your own friends',\n", + " 'where them bitches at? you should go and hang with some of them',\n", + " \"'cause this shit is just awkward, yeah\",\n", + " 'girl, this shit is just awkward, oh woah',\n", + " \"baby, you don't see me, hanging with your sister\",\n", + " \"baby, you don't see me, liking all her pictures\",\n", + " \"baby, you don't see me\",\n", + " 'so tell why everywhere i look i see you?',\n", + " 'girl, this shit is just awkward',\n", + " 'let it go, baby lig',\n", + " 'girl, this shit is just awkward',\n", + " 'let it go, baby lig',\n", + " \"girl, i understand you're tryna get it popping\",\n", + " \"but just understand with me, it ain't an option\",\n", + " \"and if you're tryna holla at someone i introduced you to\",\n", + " \"baby, it's gon' be a problem\",\n", + " \"'cause they gon' choose up\",\n", + " \"'cause they know i'm that nigga\",\n", + " 'and my bank america account got six figures',\n", + " 'word to yg, my nigga, my nigga',\n", + " 'man, this shit is just awkward, yeah',\n", + " 'girl, this shit is just awkward, oh woah',\n", + " \"baby, you don't see me, hanging with your sister\",\n", + " \"baby, you don't see me, liking all her pictures\",\n", + " \"baby, you don't see me\",\n", + " 'so tell why everywhere i look i see you?',\n", + " 'girl, this shit is just awkward',\n", + " 'let it go, baby lig',\n", + " 'girl, this shit is just awkward',\n", + " 'let it go, baby lig',\n", + " 'you know i, you know i, you know i',\n", + " 'you know i hate to break your heart like this',\n", + " \"plus we ain't start like this\",\n", + " 'we started up a maybach together',\n", + " 'used to lay back together',\n", + " 'we go way back together',\n", + " \"don't know why you at my mama door\",\n", + " \"all in my dm's\",\n", + " \"all these niggas walkin' past you left and right\",\n", + " \"you don't see them?\",\n", + " \"we can't be friends 'cause this the end\",\n", + " \"let's make amends, instead of actin' crazy\",\n", + " 'i recommend you see other men',\n", + " \"it's other fish in the sea, so take a swim\",\n", + " 'she tryna work it out, i told her save that for the gym',\n", + " \"your attitude's a 5, and this bitch i'm with's a 10\",\n", + " 'and i just brought a straitjacket for you, so get in',\n", + " 'man, this shit is just awkward, yeah',\n", + " 'girl, this shit is just awkward, oh woah',\n", + " \"baby, you don't see me, hanging with your sister\",\n", + " \"baby, you don't see me, liking all her pictures\",\n", + " \"baby, you don't see me\",\n", + " 'so tell why everywhere i look i see you?',\n", + " 'girl, this shit is just awkward',\n", + " 'let it go, baby lig',\n", + " 'girl, this shit is just awkward',\n", + " 'let it go, baby lig',\n", + " 'you should lig',\n", + " 'let it go, baby',\n", + " \"'cause you're looking crazy\",\n", + " \"yeah, you're looking crazy, girl\",\n", + " 'if you only knew what i wanna give to you',\n", + " \"baby, it's everything your little heart desires\",\n", + " 'your little heart desires',\n", + " 'if you only knew how good i could make you feel',\n", + " 'we could make this real',\n", + " 'we could make this real',\n", + " 'what are you afraid of?',\n", + " 'what are you afraid of?',\n", + " 'what are you afraid of?',\n", + " \"i've been waiting for a chance just to talk to you\",\n", + " 'i wanna blow your mind and all over your body too',\n", + " 'cause when i notice you',\n", + " 'girl let me worship you',\n", + " 'girl let me worship you',\n", + " 'what are you afraid of?',\n", + " 'what are you afraid of?',\n", + " 'what are you afraid of?',\n", + " 'let me worship you',\n", + " 'let me worship you',\n", + " 'let me worship you',\n", + " 'baby let me love you',\n", + " \"promise i'll do it right\",\n", + " \"promise i'll do it right\",\n", + " \"promise i'll do it right\",\n", + " \"promise i'll do it right\",\n", + " 'if you only knew how i could make you feel',\n", + " 'we could make this real',\n", + " 'what are you afraid of?',\n", + " 'it’s not the place, not the place, not the place, no!',\n", + " 'i’m concentrated, concentrated, concentrated, so!',\n", + " 'don’t try to take me out of what i’m doing',\n", + " 'i don’t have time',\n", + " 'tomorrow morning’s finals!',\n", + " 'don’t tell me to, tell me to, tell me to stop!',\n", + " 'this attitude, attitude, attitude blocks',\n", + " 'me from doing what i should do',\n", + " 'i should be learning, not watching you doom!',\n", + " 'alright, let’s go for a ride',\n", + " 'tell me what’s going on tonight',\n", + " 'the street is full, the street is loud!',\n", + " 'alright, take me for a ride',\n", + " '1, 2, 3, see me—i‘m about',\n", + " 'to disappear, you’ll find me in the crowd!',\n", + " '(it’s not a good time to start this...)',\n", + " '(it’s not a good time to try this...)',\n", + " 'i took the chance, took the chance, took the chance, oh!',\n", + " 'now it depends, it depends on you!',\n", + " 'between the devil and the angel',\n", + " 'you made me drop it off',\n", + " 'now both are in danger!',\n", + " 'i hope you‘re ready for the night',\n", + " 'if i‘m coming out',\n", + " 'it must be your highlight!',\n", + " 'we go, we go, we go without',\n", + " 'we go, we go without a doubt!',\n", + " 'alright, let’s go for a ride',\n", + " 'tell me what’s going on tonight',\n", + " 'the street is full, the street is loud!',\n", + " 'alright, take me for a ride',\n", + " '1, 2, 3, see me—i‘m about',\n", + " 'to disappear, you’ll find me in the crowd!',\n", + " 'alright, let’s go for a ride',\n", + " 'tell me what’s going on tonight',\n", + " 'the street is full, the street is loud',\n", + " 'alright, take me for a ride',\n", + " '1, 2, 3, see me—i‘m about',\n", + " 'to disappear, you’ll find me in the crowd!',\n", + " 'alright, let’s go for a ride',\n", + " 'tell me what’s going on tonight',\n", + " 'the street is full, the street is loud!',\n", + " 'alright, take me for a ride',\n", + " '1, 2, 3, see me—i‘m about',\n", + " 'to disappear, you’ll find me in the crow',\n", + " 'there she goes, pulling up',\n", + " \"hoppin' out the latest beamer truck\",\n", + " \"makeup running, that's alright\",\n", + " 'pretty face, nice thighs',\n", + " \"bad' than a motherfucker\",\n", + " \"fire bomb, can't nobody else touch her\",\n", + " \"can't believe what i'm seeing\",\n", + " \"shawty's amazing, i ain't playin' when i'm sayin'\",\n", + " \"she's sophisticated, get it, yeah\",\n", + " \"she's sophisticated, get it, yeah\",\n", + " 'but she says she likes the bad boys',\n", + " \"well baby i'm a bad boy\",\n", + " \"she's sophisticated, jaded, and headed out to vegas\",\n", + " 'with her louis v bags and her matching suite cases',\n", + " \"and i know your heart is breakin' but baby what you waiting for\",\n", + " 'we out here, we out here',\n", + " \"she won't be sophisticated when we get a little faded, we out here\",\n", + " 'another martini, one for the pyt goes well with the scenery',\n", + " \"she can look fly whippin' a hyundai or a goddamn lamborghini\",\n", + " \"baby love why you lookin' so sad\",\n", + " \"make a night that you won't forget, we out here, fuck yeah\",\n", + " \"if you're sophisticated baby put ya hands up\",\n", + " 'if you fancy and you know it got your louis bag to show it',\n", + " \"your hair and nails done, man somebody should of told me she's so sophisticated\",\n", + " 'baby, stop running',\n", + " 'baby, stop running around',\n", + " 'baby, stop running',\n", + " 'baby, stop running around',\n", + " '1)',\n", + " 'i was just a young boy',\n", + " 'still playing with my toys',\n", + " 'hanging out with the guys',\n", + " 'until i realized',\n", + " 'you were something more',\n", + " 'that i never knew before',\n", + " 'you came around that day',\n", + " 'and all my games i put away',\n", + " 'i will love you everyday',\n", + " 'and each and every night i pray',\n", + " 'that you will always stay',\n", + " 'until my dying day',\n", + " '()',\n", + " '(baby, stop running around) with me girl',\n", + " '(baby, stop running) round my honey',\n", + " '(baby, stop running around) with me girl',\n", + " '(baby, stop running) round my hun',\n", + " '(2)',\n", + " 'always did the best i can',\n", + " \"i never thought i'd see you with another man\",\n", + " \"there's been talk going around\",\n", + " \"saying you're gonna put me down\",\n", + " \"i don't care what they say\",\n", + " \"i'm gonna love you anyway\",\n", + " 'just like mama said',\n", + " \"don't ever walk away\",\n", + " 'now when i see your eyes',\n", + " 'something has changed inside',\n", + " \"i don't know the reason that\",\n", + " \"you're giving me a heart attack\",\n", + " 'out of all the tears i cried',\n", + " 'along with the hurt inside',\n", + " \"i'll never leave you till\",\n", + " 'till you say good bye',\n", + " '()',\n", + " '(bridge)',\n", + " \"i'm gonna take a stand\",\n", + " \"cause i'm a fighting man\",\n", + " \"i'll do the best i can to make you understand\",\n", + " 'baby',\n", + " 'ohh, baby',\n", + " 'ohh, baby stop running',\n", + " 'oh oh',\n", + " 'baby baby baby',\n", + " 'ahhhh',\n", + " '()',\n", + " 'make it stop girl',\n", + " 'make it stop girl',\n", + " 'cause i need you baby',\n", + " 'i need you baby',\n", + " '(fade out)',\n", + " '...',\n", + " '*children laughing/playing*',\n", + " \"while i'm gone\",\n", + " \"you'll still sit at home\",\n", + " \"while i'm gone\",\n", + " \"you'll still sit at home\",\n", + " \"while i'm gone\",\n", + " \"you'll still sit at home\",\n", + " \"while i'm gone\",\n", + " \"you'll still sit at home\",\n", + " 'yeah',\n", + " 'come on',\n", + " 'come on',\n", + " 'come on',\n", + " '(darling)',\n", + " '(i love you)',\n", + " '(forever)',\n", + " '(and ever)',\n", + " 'yes i know times have changed',\n", + " \"i'll be straight up with you\",\n", + " \"it's so hard to explain why i feel the way i do\",\n", + " 'for you',\n", + " \"we've had ups and downs\",\n", + " \"long as love's still around yeah\",\n", + " 'we can make it last forever',\n", + " \"if we're not too proud to say\",\n", + " 'i love you',\n", + " '(darling)',\n", + " 'i love you',\n", + " '(i love you)',\n", + " 'forever',\n", + " '(forever)',\n", + " 'you make my dreams come true',\n", + " '(dreams come true)',\n", + " 'you know',\n", + " '(you know)',\n", + " 'and i know',\n", + " '(and i know)',\n", + " \"we'll be together\",\n", + " '(together)',\n", + " 'until the end of time',\n", + " '(until the end of time)',\n", + " \"it's so hard for a man\",\n", + " 'in this world full of trials',\n", + " 'tell me how can i get',\n", + " 'all the things that i want',\n", + " 'that i need',\n", + " 'if we both believe',\n", + " 'we can accomplish anything',\n", + " 'just think of all we could achieve',\n", + " \"'cause i'll be yours and you'll be mine\",\n", + " 'until the end of time',\n", + " '(darling)',\n", + " '(i love you)',\n", + " '(forever)',\n", + " 'forever',\n", + " '(dreams come true)',\n", + " 'you make my dreams come true',\n", + " '(you know)',\n", + " '(and i know)',\n", + " 'i know',\n", + " '(together)',\n", + " 'until the end of time',\n", + " '(until the end of time)',\n", + " '(darling)',\n", + " 'i love',\n", + " '(i love you)',\n", + " 'you',\n", + " '(forever)',\n", + " 'you make my dreams come true',\n", + " '(dreams come true)',\n", + " 'baby',\n", + " '(you know)',\n", + " 'you know',\n", + " '(and i know)',\n", + " \"we'll be together\",\n", + " '(together)',\n", + " 'until the end of time',\n", + " '(until the end of time)',\n", + " 'come on',\n", + " 'come on',\n", + " 'come on',\n", + " 'do it like this',\n", + " 'do it like this',\n", + " 'do it like this',\n", + " 'do it like this',\n", + " 'do it like this',\n", + " 'do it like this',\n", + " '(darling)',\n", + " 'time',\n", + " '(i love you)',\n", + " 'you',\n", + " '(forever)',\n", + " 'you make my dreams come true',\n", + " '(dreams come true)',\n", + " 'baby',\n", + " '(you know)',\n", + " 'you know',\n", + " '(and i know)',\n", + " \"we'll be together\",\n", + " '(together)',\n", + " 'until the end of time',\n", + " '(until the end of time)',\n", + " '(darling)',\n", + " 'i love',\n", + " '(i love you)',\n", + " 'i love you',\n", + " '(forever)',\n", + " 'i love you babe',\n", + " '(dreams come true)',\n", + " '(you know)',\n", + " 'oh baby',\n", + " '(and i know)',\n", + " 'oh baby',\n", + " '(together)',\n", + " 'you know',\n", + " '(until the end of time)',\n", + " 'that i love you',\n", + " '(darling)',\n", + " 'i love',\n", + " '(i love you)',\n", + " 'you',\n", + " '(forever)',\n", + " 'till the end of time',\n", + " '(dreams come true)',\n", + " '(you know)',\n", + " 'till the end of time',\n", + " '(and i know)',\n", + " '(together)',\n", + " 'till the end of time',\n", + " '(until the end of time)',\n", + " 'till the end of time',\n", + " 'time',\n", + " 'time',\n", + " 'time',\n", + " 'time babe',\n", + " \"that's all we need\",\n", + " 'in order to make a relationship work',\n", + " ...]},\n", + " 'data': [\"i've got money, and now i need love\",\n", + " \"i've got money, and now i need love\",\n", + " \"when i get my lovin', i'll be the happy one\",\n", + " \"i've got money now, no more money i need\",\n", + " 'oh, i got money, no more money i need',\n", + " \"hey, i don't have to worry\",\n", + " \"i don't have to let my heart leave\",\n", + " 'hey, come on now',\n", + " 'i need your love now',\n", + " 'i need your love so bad',\n", + " \"you're the best thing i ever had\",\n", + " 'oh yeah',\n", + " \"hey, i've got money now, no more money i want\",\n", + " \"oh, but love, don't leave me, don't\",\n", + " \"when i get my lovin', i'll be the happy one\",\n", + " 'oh, oh, yeah yeah yeah',\n", + " 'i need your love so bad',\n", + " 'i need your love so bad',\n", + " 'turn your love-light on me',\n", + " 'and ease my misery',\n", + " \"hey, i believe i'll sing the blues one more time\",\n", + " \"i'll believe i'll blow it one more 'gain\",\n", + " \"i've got to try it one more time\",\n", + " \"i'm going insane\",\n", + " 'hey, come on',\n", + " 'oh, oh, i got to sing the blues',\n", + " \"best thing i've ever had\",\n", + " 'i need your love so bad',\n", + " 'and oh...oh, tell the truth',\n", + " 'tell the truth, tell the truth',\n", + " 'i gotta sing the blues',\n", + " 'goodbye, so long',\n", + " \"that's all, i'm gone...ahhh\",\n", + " \"i like workin' in the dark\",\n", + " 'when i can get down and nobody can see how i get down',\n", + " 'cause then they try to copy how you get down',\n", + " 'and they they wanna turn it around and say \"i get down like this, kashif doesn\\'t get down like this, but i get down like this\"',\n", + " 'but you know i take the best of both worlds, i take it with a grain of salt, and i say \"to heck with it\"',\n", + " 'have you heard the latest word',\n", + " \"i'm supposed to be disturbed\",\n", + " \"it's just a rumor\",\n", + " 'just the other night',\n", + " 'someone said i lost my mind',\n", + " 'those crazy rumors',\n", + " \"talk 'bout me\",\n", + " 'all the time',\n", + " \"they don't know\",\n", + " \"what's on my mind\",\n", + " 'girl you haunt',\n", + " 'me every night',\n", + " 'those dreams of you',\n", + " 'and swee desire',\n", + " 'rumors of love',\n", + " \"tell 'em that it's true\",\n", + " \"that it's really me and you\",\n", + " 'rumors, this love',\n", + " \"tell 'em that it's us\",\n", + " \"that it's really us in love\",\n", + " 'rumor, rumor, rumor, rumor',\n", + " 'do you have a crush on me',\n", + " 'is it true, or could it be',\n", + " 'is it a rumor',\n", + " \"it's not fair for them to spread\",\n", + " 'things they make up in their head',\n", + " 'those crazy rumors',\n", + " 'i live in fear',\n", + " 'the walls have ears',\n", + " 'they repeat',\n", + " 'just what they hear',\n", + " 'the jezebels',\n", + " 'they kiss and tell',\n", + " 'kind of tricks',\n", + " 'i know too well',\n", + " 'rumors of love',\n", + " \"tell 'em that it's true\",\n", + " \"that it's really me and you\",\n", + " 'rumors, this love',\n", + " \"tell 'em that it's us\",\n", + " \"that it's really us in love\",\n", + " 'rumor, rumor, rumor, rumor',\n", + " 'rumors of love, baby',\n", + " \"tell 'em that it's true\",\n", + " \"it's really me and you\",\n", + " 'rumors, this love',\n", + " 'tell those jezebels',\n", + " 'that they can go to hell',\n", + " 'rumors of love, baby',\n", + " \"tell 'em that it's true\",\n", + " \"that it's really me and you\",\n", + " 'rumors, this love',\n", + " \"baby tell 'em that it's true\",\n", + " \"it's really me and you\",\n", + " 'rumors of love, baby',\n", + " \"tell 'em that it's true\",\n", + " \"that it's really me and you\",\n", + " 'rumors, this love',\n", + " \"tell 'em that it's true\",\n", + " \"that it's really me and you\",\n", + " 'rumor, rumor, rumor, rumor',\n", + " 'rumors of love',\n", + " \"tell 'em that it's true\",\n", + " \"it's really me and you\",\n", + " 'no more rumors, this love',\n", + " \"tell 'em that it's true\",\n", + " \"that it's really me and you\",\n", + " 'no more rumors',\n", + " 'rumors, rumors rumors rumors',\n", + " 'when you feel down and out',\n", + " \"sing a song (it'll make your day)\",\n", + " \"for you, here's the time to shout\",\n", + " \"sing a song (it'll make a way)\",\n", + " \"sometimes it's hard to care\",\n", + " \"sing a song (it'll make your day)\",\n", + " 'a smile is so hard to bear',\n", + " \"sing a song (it'll make a way)\",\n", + " 'sing a song',\n", + " 'sing a song',\n", + " 'sing a song',\n", + " 'sing a song',\n", + " 'well, bring your heart to believing',\n", + " \"sing a song (it'll make your day)\",\n", + " \"life ain't about no retrieving\",\n", + " \"oh yeah (it'll make a way)\",\n", + " 'give yourself what you need',\n", + " \"sing a song (it'll make your day)\",\n", + " 'smile, smile, smile and believe',\n", + " \"sing a song (it'll make a way)\",\n", + " 'sing a song',\n", + " 'sing a song',\n", + " 'sing a song',\n", + " 'sing a song',\n", + " 'sing a song',\n", + " 'sing a song',\n", + " 'sing a song',\n", + " 'sing a song',\n", + " 'if you sing a song a day',\n", + " 'you will make a better way',\n", + " 'yeah yeah yeah yeah',\n", + " 'yeah yeah yeah yeah, uh huh',\n", + " 'yeah, huh, this is t. carter',\n", + " \"yeah, c'mon, baby i got something to say\",\n", + " 'you know you give me pleasures',\n", + " \"that i know my heart just can't refuse\",\n", + " \"i mean, it's true--you look so damn cute\",\n", + " 'would you give me an attitude?',\n", + " \"but i'm talking through, especially when\",\n", + " 'the super-known ? was feeling loose',\n", + " 'we can fight our guest waves',\n", + " 'might as well take our crews',\n", + " 'because the ocean can come between us',\n", + " 'and what would you do if i was any yours?',\n", + " 'would you settle for the less, uh?',\n", + " \"i can garantee i'm nowhere rich boy\",\n", + " \"i'm a man, don't get me wrong\",\n", + " \"i'm not bragging about myself\",\n", + " \"it's just that i think we were wrong\",\n", + " \"and likewise, your body's like your (?)\",\n", + " 'touch me, girl (no, no)',\n", + " 'touch me, girl',\n", + " \"i don't want nobody else\",\n", + " 'to touch me like you',\n", + " 'touch me, girl',\n", + " 'touch me, girl',\n", + " 'touch me, girl',\n", + " 'and they call me trevy',\n", + " 'i love it when you touch me',\n", + " 'oh, shawdy, you a bad girl',\n", + " 'your fingers in my hands, making me shiver, shaking my world',\n", + " \"i'm tracing your lips across my neck and taking me down\",\n", + " \"i love that when i'm with you i can be myself\",\n", + " \"but i ain't never been this nervous, no\",\n", + " 'oh, you pull your hands, i swear you do this on purpose',\n", + " 'yeah, i kind of it like it',\n", + " \"ain't gotta rush it, we can take time\",\n", + " 'and if you give me yours, you can take mine',\n", + " 'you is an angel, but tonight just be my devil',\n", + " 'we can rule it out, would you take control if i let you?',\n", + " \"oh, i'm gonna lay you down on this bed\",\n", + " \"rose petals, your scent's the sweetest flowers\",\n", + " \"and i swear it's got me tripping\",\n", + " 'and let my hands slide up your thighs, kissing up your body',\n", + " \"that's the end of time, this room is getting hotter\",\n", + " \"your nails are in my back, i swear you're getting tighter\",\n", + " 'and we gonna hit the times',\n", + " \"but i can't get any higher unless you\",\n", + " 'touch me, girl',\n", + " 'touch me, girl',\n", + " \"i don't want nobody else\",\n", + " 'to touch me like you',\n", + " 'touch me, girl',\n", + " 'touch me, girl',\n", + " 'touch me, girl',\n", + " 'ride, baby, ride, baby, ride',\n", + " \"and i think it's time for that little devil\",\n", + " \"it's time to come out and play all night\",\n", + " \"and now on this day we're on cloud nine\",\n", + " \"but you don't have to be an angel all the time\",\n", + " 'so tonight (?)',\n", + " 'touch me, girl (just touch me, girl)',\n", + " 'touch me, girl',\n", + " \"i don't want nobody else (i don't want no)\",\n", + " 'to touch me like you',\n", + " 'touch me, girl (woo)',\n", + " \"touch me, girl (c'mon)\",\n", + " 'touch me, girl',\n", + " 'touch me, you',\n", + " 'you know you want to',\n", + " 'you know you want to, yeah',\n", + " 'touch, touch me',\n", + " 'yeah',\n", + " \"ain't really no other way to put it babe\",\n", + " \"ain't really no other way to put it babe\",\n", + " '(said you gotta) you gotta come and stay',\n", + " 'gotta come and stay baby',\n", + " 'said you gotta come and stay',\n", + " 'said you gotta come and stay (stay)',\n", + " \"ain't really no other way to put it baby\",\n", + " 'if you gotta come you gotta stay',\n", + " \"you ain't gotta stay for good babe\",\n", + " 'just stay a little late',\n", + " '(yeah yeah yeah)',\n", + " \"ain't really no other way to put it babe\",\n", + " \"ain't really no other way to put it babe\",\n", + " '(waa, waa)',\n", + " 'you gotta come and stay',\n", + " \"don't you know\",\n", + " \"don't you know\",\n", + " \"don't you know\",\n", + " \"it's the real thing, girl\",\n", + " \"they say it's popcorn love\",\n", + " \"but it's more than that to me\",\n", + " 'popcorn love',\n", + " 'just wait, they will see',\n", + " \"it's popcorn love\",\n", + " 'every morning, noon and night',\n", + " 'popcorn love',\n", + " \"don't you know, don't you know\",\n", + " \"it's the real thing, girl\",\n", + " 'when we go on those special dates',\n", + " \"we're always holding hands\",\n", + " \"we're never, ever late\",\n", + " \"you're on my mind all the time\",\n", + " '(i keep thinking)',\n", + " 'i keep thinking',\n", + " '(thinking)',\n", + " 'i keep thinking',\n", + " '(i keep thinking)',\n", + " 'thinking of you',\n", + " 'popcorn love',\n", + " \"but it's more than that to me\",\n", + " 'popcorn love',\n", + " 'just wait, they will see',\n", + " 'popcorn love',\n", + " 'every morning, noon and night',\n", + " 'popcorn love',\n", + " \"don't you know, don't you know\",\n", + " \"it's the real thing, girl\",\n", + " 'i go to school',\n", + " 'and then i come straight home',\n", + " 'the first thing that i do is call you on the phone',\n", + " 'the things you say',\n", + " 'a-really make my day',\n", + " 'i need you, girl',\n", + " 'in every kind of way',\n", + " 'i keep thinking',\n", + " \"i'm just thinking\",\n", + " 'i keep thinking (thinking)',\n", + " 'thinking (thinking)',\n", + " 'thinking (thinking)',\n", + " 'thinking',\n", + " \"that's right\",\n", + " \"that's right\",\n", + " \"that's right\",\n", + " \"that's right\",\n", + " 'ah!',\n", + " '\"p\" is for her personality',\n", + " 'i said the \"o\" is for originality',\n", + " 'and the other \"p\" is',\n", + " 'for the perfect love she gives to me',\n", + " 'the \"c\" is just \\'cause she loves me',\n", + " 'and the \"o\" means she\\'s the only love i got',\n", + " 'and the \"r\" and the \"n\"',\n", + " 'our love will never end',\n", + " 'well, i know',\n", + " \"i know it's the real thing\",\n", + " 'because she told me so',\n", + " 'and i know',\n", + " \"i know it's the real thing\",\n", + " \"and i'll never let her go\",\n", + " 'i just got to',\n", + " 'i just got to have your love',\n", + " 'popcorn love',\n", + " \"but it's more than that to me\",\n", + " 'popcorn love',\n", + " 'just wait, they will see',\n", + " \"it's popcorn love\",\n", + " 'every morning, noon and night',\n", + " 'popcorn love',\n", + " 'popcorn love',\n", + " \"but it's more than that to me\",\n", + " 'popcorn love',\n", + " 'just wait, they will see',\n", + " \"it's popcorn love\",\n", + " 'every morning, noon and night',\n", + " 'popcorn love',\n", + " 'popcorn love',\n", + " \"but it's more than that to me\",\n", + " 'popcorn love',\n", + " 'if i could',\n", + " \"i'd protect you from the sadness in your eyes\",\n", + " 'give you courage in a world of compromise',\n", + " 'yes, i would',\n", + " 'if i could',\n", + " \"i would teach you all the things i've never learned\",\n", + " \"and i'd help you cross the bridges that i've burned\",\n", + " 'yes, i would',\n", + " 'if i could',\n", + " 'i would try to shield your innocence from time',\n", + " \"but the part of life i gave you isn't mine\",\n", + " \"i've watched you grow, so i could let you go\",\n", + " 'if i could',\n", + " 'i would help you make it through the hungry years',\n", + " 'but i know that i could never dry your tears',\n", + " 'but i would if i could',\n", + " 'yes, if i live',\n", + " \"in a time and place where you don't wanna be\",\n", + " \"you don't have to walk along this road with me\",\n", + " \"my yesterday won't have to be your way\",\n", + " 'if i knew',\n", + " 'i would try to change the world i brought you to',\n", + " \"and there isn't very much that i could do\",\n", + " 'but i would if i could',\n", + " 'oh baby',\n", + " 'daddy wants to protect you',\n", + " 'and help my baby through the hungriest',\n", + " \"because you're part of me\",\n", + " 'and if you ever ever need',\n", + " 'said a shoulder to cry on',\n", + " 'or just someone to talk to',\n", + " \"i'll be there, i'll be there\",\n", + " \"i didn't change the world\",\n", + " 'but i would if i could',\n", + " 'oh darling, i love you, baby',\n", + " '(\"look...shout mikos da gawd, quick with the assist\")',\n", + " 'baby, please, baby, oh baby',\n", + " 'please don’t walk away',\n", + " 'what i gotta do, to make you stay?',\n", + " 'like, maybe, just maybe there’s something that i can say',\n", + " 'to make you stick around',\n", + " 'i’d love it if you stick around',\n", + " 'didn’t i treat you right, and love you good?',\n", + " 'didn’t i do what a good woman should?',\n", + " 'why you wanna step out, and leave me left out?',\n", + " 'but if you gotta go, i get it',\n", + " 'but if we start, might as well just finish',\n", + " 'can we talk it out?',\n", + " 'don’t say there’s nothing to talk about',\n", + " 'and it hurts, i know',\n", + " 'but baby, please don’t make it personal',\n", + " 'why you wanna go and do that, love, oh, hey',\n", + " '(why you wanna, why you wanna, why you wanna go?)',\n", + " 'said why you wanna go and do that, love, oh, hey',\n", + " '(why you wanna, why you wanna, why you wanna go?)',\n", + " 'you got wintertime cold on me',\n", + " 'i mean your heart just froze on me',\n", + " 'can you tell me how you really feel?',\n", + " 'at least tell me that you love me still',\n", + " 'we used to romance and hold hands and slow dance while the world spins',\n", + " 'now it’s just lowlands and no chance we’ll make it out this whirlwind',\n", + " 'see, i watched my world, and yours restart a hundred times',\n", + " 'and you’re left with the best of me, and i’m left with this heart of mine',\n", + " 'so baby, please, baby, oh baby, if you walk away',\n", + " 'let’s make me sure we leave with nothing else to say',\n", + " 'can we talk it out?',\n", + " 'don’t say there’s nothing to talk about',\n", + " 'and it hurts, i know',\n", + " 'but baby, please don’t make it personal',\n", + " 'why you wanna go and do that, love, oh, hey',\n", + " '(why you wanna, why you wanna, why you wanna go?)',\n", + " 'said why you wanna go and do that, love, oh, hey',\n", + " '(why you wanna, why you wanna, why you wanna go?)',\n", + " 'like a lonesome stream',\n", + " 'i keep running towards a dream',\n", + " 'and on trusty road',\n", + " 'getting weary from the load',\n", + " \"'cause they are wasting all their time\",\n", + " 'glorifying days behind',\n", + " \"'cause they've been wasting most their days\",\n", + " 'in rememberance of praise, again',\n", + " \"we're living in the past time,\",\n", + " \"we're living in the past\",\n", + " \"we're living in the past time,\",\n", + " \"we're living in the past\",\n", + " 'like the sand upon the shore',\n", + " \"like we've never dreamt before\",\n", + " \"'cause it's an evil sight to see\",\n", + " 'all the things that bring you grief',\n", + " \"we're living in the past time,\",\n", + " \"we're living in the past\",\n", + " \"we're living in the past time,\",\n", + " \"we're living in the past\",\n", + " \"we're living in the past time,\",\n", + " '(two fingers up)',\n", + " '(two fingers up)',\n", + " '(two fingers up)',\n", + " '(two fingers up)',\n", + " 'caught her eye in the corner store',\n", + " 'grab a rum bottle to split with the boys',\n", + " 'found out that her name was tina',\n", + " 'said i was the only man that could please her',\n", + " 'but every time that we were alone',\n", + " 'she hid the screen when she checked her phone',\n", + " 'thought our love was running deep',\n", + " 'but tina always kept me at her arms reach (two fingers)',\n", + " \"she ain't a fan of monogamy\",\n", + " 'she never said those words to me',\n", + " 'she had a man in every borough, oh',\n", + " 'and as soon as i discovered',\n", + " 'i was like, two fingers up to you',\n", + " \"i don't want to fuck with you\",\n", + " \"don't you even say my name\",\n", + " \"karma's killed your game\",\n", + " 'lost my trust',\n", + " 'so, two fingers up to you',\n", + " \"don't wanna hear a word outta you\",\n", + " \"don't you even say my name\",\n", + " \"love don't feel the same\",\n", + " 'never trust again',\n", + " 'met a girl called alice',\n", + " 'from the west end, she lives in a palace',\n", + " \"parents got money, but she couldn't care less\",\n", + " 'works 100 hours for the nhs',\n", + " 'we saw each other every now and then',\n", + " 'not quite lovers but more than friends',\n", + " \"she's got a bit of a crazy streak\",\n", + " \"she's ocd, ott neat, oh\",\n", + " 'she believes in monogamy',\n", + " \"it's been a week she ain't the only girl i see\",\n", + " 'she caught me lying by lying',\n", + " 'i was on my worst behaviour',\n", + " \"now she's like\",\n", + " 'two fingers up to you',\n", + " \"i don't want to fuck with you\",\n", + " \"don't you even say my name\",\n", + " \"karma's killed your game\",\n", + " 'lost my trust',\n", + " 'so, two fingers up to you',\n", + " \"don't wanna hear a word outta you\",\n", + " \"don't you even say my name\",\n", + " \"love don't feel the same\",\n", + " 'never trust again, again',\n", + " 'never trust again',\n", + " 'done with you my friend',\n", + " 'never trust again',\n", + " \"there ain't no morals to these stories\",\n", + " \"we're all just searching for somebody\",\n", + " \"and ya know it's hard\",\n", + " \"when you're living in the city\",\n", + " 'where nobody trusts nobody',\n", + " 'and i was like',\n", + " 'two fingers up to you',\n", + " \"i don't want to fuck with you\",\n", + " \"don't you even say my name\",\n", + " \"karma's killed your game\",\n", + " 'lost my trust',\n", + " 'so, two fingers up to you',\n", + " \"don't wanna hear a word outta you\",\n", + " \"don't you even say my name\",\n", + " \"love don't feel the same\",\n", + " 'never trust again, again',\n", + " 'never trust again',\n", + " 'done with you my friend',\n", + " 'and i was like',\n", + " 'two fingers up to you',\n", + " \"i don't want to fuck with you\",\n", + " \"don't you even say my name\",\n", + " \"love don't feel the same\",\n", + " 'never trust again',\n", + " 'rock on it like you a milly, yeah',\n", + " 'bounce on it like you from philly, yeah',\n", + " 'so dope how you cut it up, yeah',\n", + " \"servin' a fiend i can’t get enough\",\n", + " 'let that thang take me on a trip',\n", + " 'to every private place inside of it',\n", + " 'every private place i wanna fit',\n", + " 'inside the kinda places i won’t forget, yeah',\n", + " 'you got permission to do it',\n", + " 'you got permission to lose it',\n", + " 'if you really gon’ put me through it',\n", + " 'do it, oh no',\n", + " 'fuck it up',\n", + " 'fuck it up',\n", + " 'fuck it up',\n", + " 'fuck it up',\n", + " 'i need you to',\n", + " 'fuck it up',\n", + " 'fuck it up',\n", + " 'you can do it anyway your body wants you to do',\n", + " 'switch up on it like four seasons',\n", + " 'that thang get hot then it rain for no reason',\n", + " 'break all the rules like a convict, eah',\n", + " 'i got some tools you can start wit’',\n", + " 'some hard shit, oh ooh',\n", + " 'let that thang take me on a trip',\n", + " 'to every private place inside of it',\n", + " 'every private place i wanna fit',\n", + " 'inside the kinda places i won’t forget, yeah',\n", + " 'you got permission to do it',\n", + " 'you got permission to lose it',\n", + " 'if you really gon’ put me through it',\n", + " 'do it, oohhhhh',\n", + " 'fuck it up',\n", + " 'fuck it up',\n", + " 'fuck it up',\n", + " 'fuck it up',\n", + " 'i need you to',\n", + " 'fuck it up (yeah, yeah)',\n", + " 'fuck it up',\n", + " 'you can do it anyway your body wants you to do',\n", + " 'want it like you a killa',\n", + " 'black and white girl you a thrilla',\n", + " 'i promise too much ain’t enough',\n", + " 'i’ll need you to be a savage',\n", + " 'girl let me have it',\n", + " 'fuck it up',\n", + " 'fuck it up',\n", + " 'fuck it up',\n", + " 'fuck it up',\n", + " 'i need you to',\n", + " 'fuck it up',\n", + " 'fuck it up',\n", + " 'you can do it anyway your body wants you to do',\n", + " \"when i'm weary and so worn out\",\n", + " \"ooh, when my mind's clouded and filled with doubt\",\n", + " \"that's when i feel the most alive\",\n", + " 'masochistic kisses are how i thrive',\n", + " '(thrive, thrive, thrive, thrive, thrive, thrive, thrive)',\n", + " 'hmm (hmm)',\n", + " 'a stiffness inside my neck, and',\n", + " \"bangin' my head against the desk (woah)\",\n", + " \"if there's no pain, is there any progress?\",\n", + " \"that's when i feel, yeah, the most alive, woah\",\n", + " 'endurance is the source of my pride (source of my pride)',\n", + " 'might not be healthy for me, but seemingly i need (uh, hmm, hmm)',\n", + " 'what cuts me, cuts me, cuts me, cut me, cut me, cut me',\n", + " 'uh',\n", + " \"guess i'm a true immigrant son\",\n", + " 'no vacancies, no vacations',\n", + " 'sure, i could do better than this',\n", + " \"but i don't (i don't), i won't (i don't), i don't\",\n", + " \"no, i don't\",\n", + " 'uh, might not be healthy for me but seemingly i need (no, mm)',\n", + " 'uh, what cuts me, cuts me, cuts me, cut me, cut me, cut me',\n", + " 'ooh-ooh-oh',\n", + " '(might not be healthy for me but seemingly i need)',\n", + " 'ooh-ooh-oh',\n", + " '(what cuts me, cuts me, cuts me, cut me, cut me, cut me)',\n", + " 'hurt me, hurt me',\n", + " 'me',\n", + " 'hurt me, hurt me',\n", + " 'and your gaze still lasting on my brain',\n", + " 'sleeping in on venezuela trains',\n", + " \"i won't be the one to tell you\",\n", + " 'i can never find the perfect time to say that i',\n", + " \"won't be the one to tell you\",\n", + " \"i won't be the one\",\n", + " \"i won't be the one to tell you\",\n", + " 'i can never find the perfect line to say that',\n", + " 'i will be the one to fail you',\n", + " 'i will be the one',\n", + " 'mark my words, i hope you understand',\n", + " \"if i had my way you'd be my major plan\",\n", + " 'mark my words, i hope you understand',\n", + " \"if i had my way you'd be my major plan\",\n", + " 'tell me if your world is falling',\n", + " \"you will be the one i'm calling\",\n", + " 'tell me if your world is falling',\n", + " \"you will be the one i'm calling\",\n", + " 'you will be the, you will be the...',\n", + " \"...one i'm calling for\",\n", + " \"you will be the one i'm calling for\",\n", + " \"if you should unpack and never look back i'm on the train tracks, so...don't ever call back\",\n", + " \"you always call back when the sun's down and the night's black, you need to move back\",\n", + " \"you're on the train...tracks\",\n", + " \"tell me if the world is falling (i will never find the perfect time to say that i won't be the one to tell you)\",\n", + " \"you will be the one i'm calling\",\n", + " 'you will be the, you will be the (i will be the one)',\n", + " \"tell me if the world is falling (i will never find the perfect time to say that i won't be the one to tell you)\",\n", + " \"you will be the one i'm calling\",\n", + " 'you will be the, you will be the (i will be the one)',\n", + " 'i hope you will understand',\n", + " 'i hope you will understand',\n", + " 'i know this is a trying time',\n", + " 'you cried until your tears have run dry',\n", + " 'your tears have run dry',\n", + " 'so why not take mine',\n", + " \"running and you can't go on\",\n", + " \"pretending when you don't have your smile\",\n", + " \"you've lost your smile\",\n", + " 'so why not take mine',\n", + " 'woah',\n", + " 'take mine',\n", + " 'take mine',\n", + " \"i'll give you anything you need\",\n", + " \"you don't have to beg and plead\",\n", + " 'to take mine',\n", + " 'take some of mine',\n", + " \"i'll give you all you're asking me\",\n", + " 'take my eyes so you can see',\n", + " 'and i can listen to you honey',\n", + " 'and if you ask, i can give my advice',\n", + " 'take some of mine',\n", + " \"i'll shine my light\",\n", + " 'and in your darkest time',\n", + " 'take mine',\n", + " 'take mine',\n", + " \"i'll give you anything you need\",\n", + " \"you don't have to beg and plead\",\n", + " 'to take mine',\n", + " 'take some of mine',\n", + " 'when you find it hard to speak',\n", + " 'take my voice so you can sing',\n", + " 'take mine',\n", + " \"i've been down that road before\",\n", + " 'forgot what i was looking for',\n", + " 'all i really needed was to trust someone more',\n", + " \"you don't need to ask\",\n", + " 'just take mine',\n", + " 'anybody else',\n", + " 'just take mine, whoa',\n", + " 'all you really need is just someone to realize',\n", + " 'all you really need is just a , oh',\n", + " 'take mine',\n", + " 'take mine',\n", + " \"i'll give you anything you need\",\n", + " \"you don't have to beg and plead\",\n", + " 'to take mine',\n", + " 'take some of mine',\n", + " 'when you find it hard to speak',\n", + " 'take my voice so you can sing',\n", + " 'take mine',\n", + " ':',\n", + " 'ooh-ooh-ooh-ooh-oooh',\n", + " 'ooh-ooh-ooh-ooh-oooh',\n", + " ':',\n", + " \"there's a time for me to mention\",\n", + " \"there's a time for me to say\",\n", + " 'if you have the right intention',\n", + " 'we sure could find a way',\n", + " ':',\n", + " 'raiders in the valley',\n", + " 'raiders on the sea',\n", + " 'raiders on the open plains',\n", + " 'this sure could be the death',\n", + " ':',\n", + " 'i saw the reign fall',\n", + " 'and the war was won',\n", + " 'i saw the reign fall',\n", + " 'and the war was won, won, won, won, won',\n", + " ':',\n", + " \"there's a time for your surrender\",\n", + " \"there's a time to clear your head\",\n", + " 'from this day tomorrow',\n", + " \"the nights won't be the same\",\n", + " ':',\n", + " 'raiders in the mountains',\n", + " 'raiders on the sea',\n", + " \"raiders makin' all the claims\",\n", + " 'you heard the news today',\n", + " ':',\n", + " 'i saw the reign fall',\n", + " 'and the war was won',\n", + " 'i saw the reign fall',\n", + " 'and the war was won, won, won, won, won',\n", + " ':',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " ':',\n", + " 'can you make it out of love?',\n", + " 'can you make it out of love?',\n", + " 'can you make it out of love?',\n", + " 'can you make it out of love?',\n", + " ':',\n", + " 'i saw the reign fall',\n", + " 'and the war was won',\n", + " 'i saw the reign fall',\n", + " 'and the war was won',\n", + " '(can you make it out of love?)',\n", + " 'i saw the reign fall',\n", + " '(can you make it out of love?)',\n", + " 'and the war was won',\n", + " '(can you make it out of love?)',\n", + " 'i saw the reign fall',\n", + " '(can you make it out of love?)',\n", + " 'and the war was won, won, won, won, won',\n", + " '(can you make it out of love?)',\n", + " ':',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " 'i saw the reign',\n", + " 'we are nowhere',\n", + " 'sleepless and still and tight',\n", + " \"maybe we shouldn't fall asleep\",\n", + " 'saving what was left behind',\n", + " 'standing outside the chalk outline',\n", + " 'beside ourselves in time',\n", + " 'the only thing i want is the last thing i need',\n", + " 'awake and sleepless as stars shine',\n", + " 'sinking slowly in the tide',\n", + " 'silent strangers on the side',\n", + " 'lies are dripping off your face',\n", + " 'take me to a noble place',\n", + " \"and i'm not helping anymore\",\n", + " \"you don't know what you're looking for\",\n", + " 'i just know how weak you are',\n", + " \"you're gonna find another star\",\n", + " 'sinking slowly in the tide',\n", + " 'starlit strangers on the side',\n", + " 'lies are dripping off your face',\n", + " 'take me to a lower place',\n", + " 'sinking slowly in the tide',\n", + " 'silent strangers on the side',\n", + " 'lies are dripping off your face',\n", + " 'take me to a noble place',\n", + " \"i'm not helping anymore\",\n", + " \"you don't know what you're looking for\",\n", + " 'i just know how weak you are',\n", + " \"you're gonna find another star\",\n", + " 'in the end, we are nowhere',\n", + " 'sleepless and still and tight',\n", + " \"maybe we shouldn't fall asleep\",\n", + " 'saving what was left behind',\n", + " 'standing outside the chalk outline',\n", + " 'beside ourselves in time',\n", + " 'the only thing i want is the last thing i need',\n", + " 'awake and sleepless as stars shine',\n", + " 'you didn’t want it before',\n", + " 'so why are you here waiting?',\n", + " 'i don’t understand why you',\n", + " 'think i am contemplating',\n", + " 'on ways for you to love again',\n", + " 'everything that your missin’',\n", + " 'sayin’ a premonition’s',\n", + " 'got you a-changin’ your mind',\n", + " 'boy, stop your reminiscin’',\n", + " '‘cause i won’t play the fool again',\n", + " 'every day you’re gone',\n", + " 'every day i move on',\n", + " '‘cause it is plain to see',\n", + " 'that you weren’t meant for me',\n", + " '‘cause i…',\n", + " 'i ain’t got the time to lose',\n", + " 'on you',\n", + " 'on you, no',\n", + " 'i ain’t got the time to lose',\n", + " 'on you',\n", + " 'on you, no',\n", + " 'you didn’t need me before',\n", + " 'so why are you here begging?',\n", + " 'looks like you didn’t think of',\n", + " 'everything before letting',\n", + " 'me out of sight, ‘cause now you’re like',\n", + " '“can i come around?”',\n", + " 'say you’re missin’ the sound',\n", + " 'of my everyday',\n", + " 'you can stay away',\n", + " '‘cause i…',\n", + " 'i ain’t got the time to lose',\n", + " 'on you',\n", + " 'on you, no',\n", + " 'i ain’t got the time to lose',\n", + " 'on you',\n", + " 'on you, no',\n", + " 'i ain’t got the time to lose',\n", + " 'on you',\n", + " 'on you, no',\n", + " 'i ain’t got the time to lose',\n", + " 'on you',\n", + " 'on you, no',\n", + " 'no, no, no, no, no, no, no, no',\n", + " \"i ain't got the time to lose\",\n", + " 'on the likes of you',\n", + " 'you, you, you, you, you',\n", + " 'god sun',\n", + " 'shine your love and light on everyone',\n", + " 'god sun',\n", + " 'make this world a brighter place for all',\n", + " 'god sun',\n", + " 'send your warmth and brilliance to the world',\n", + " 'god sun',\n", + " 'touch every man and woman boy and girl',\n", + " 'you make possible the day’s dawning',\n", + " 'you bring life to every living thing',\n", + " 'you provide renewal in the spring',\n", + " 'i know who you are',\n", + " 'salute from afar',\n", + " 'without question you’re the star',\n", + " 'god sun',\n", + " 'rise and show your magnificent smile',\n", + " 'god sun',\n", + " 'bless the tender heart of every child',\n", + " 'god sun',\n", + " 'radiate your peace to all mankind',\n", + " 'god sun',\n", + " 'guide us through the darkness of our time',\n", + " 'you provide the earth enlightenment',\n", + " 'nourish us and keep our spirits fed',\n", + " 'you, i’ll never take for granted no',\n", + " 'i know who you are',\n", + " 'love you with all my heart',\n", + " 'without question you’re the star',\n", + " 'through loving you i seem to feel a spirit',\n", + " 'deep inside of me',\n", + " 'preciously guiding me',\n", + " 'my woman of all women, dear to me',\n", + " 'forever love me',\n", + " 'for i need you constantly',\n", + " 'and still, you hold me close indeed',\n", + " 'helping to keep this love i need',\n", + " 'feels so much like your touch divine',\n", + " 'drinking and getting high on wine',\n", + " 'wanting to love you, all the time',\n", + " 'just love to keep you in my mind',\n", + " 'just love to keep you in my mind',\n", + " 'your face is so mysteriously kind',\n", + " 'i bet that love is',\n", + " 'partial to your sign',\n", + " 'somehow i do believe that you are mine',\n", + " 'proving in a natural way',\n", + " 'things that i could never think to say',\n", + " 'and still, you hold me close indeed',\n", + " 'helping to keep this love i need',\n", + " 'feels so much like your touch divine',\n", + " 'drinking and getting high on wine',\n", + " 'wanting to love you all the time',\n", + " 'just love to keep you in my mind',\n", + " 'just love to keep you in my mind',\n", + " 'the magic that you secretly possess',\n", + " 'ooh, i must confess',\n", + " 'must be working at its best',\n", + " \"my love for you is one you'll always know\",\n", + " 'wherever we may go',\n", + " 'you will find that it is so',\n", + " 'and still, you hold me close indeed',\n", + " 'helping to keep this love i need',\n", + " 'feels so much, like your touch divine',\n", + " 'drinking and getting high on wine',\n", + " 'wanting to love you all the time',\n", + " 'just love to keep you in my mind',\n", + " 'i just love to keep you in my mind',\n", + " 'when we first met',\n", + " 'stole my heart away',\n", + " 'your love was incredible, wonderful',\n", + " 'then you began to change',\n", + " 'you used to make me feel special',\n", + " 'now all you do is make me cry',\n", + " 'i gave you my everything, baby',\n", + " 'but all you gave me was lies',\n", + " 'i, i',\n", + " 'try to be the one',\n", + " 'for baby',\n", + " 'you',\n", + " 'never was enough in',\n", + " 'what i do, do',\n", + " 'that’s why i’m leaving',\n", + " \"'cause it’s all about you\",\n", + " 'and not about me',\n", + " 'when we get in a fight',\n", + " 'i’m always the first to apologize',\n", + " 'even if it was you who did wrong',\n", + " 'i never do enough to please you',\n", + " 'that’s why i can’t go on',\n", + " 'no matter what i do for you',\n", + " 'it’s never any good for you',\n", + " 'you always got to complain',\n", + " 'that’s why i got to say',\n", + " 'i can’t stay',\n", + " 'i, i try to be the one for baby',\n", + " \"you, you never was into nothin'\",\n", + " 'what i do, do',\n", + " 'selfish baby',\n", + " 'anything you want',\n", + " 'i do',\n", + " 'i never understand',\n", + " 'how you could treat me bad',\n", + " 'and be so cruel',\n", + " 'you’re begging me to come back to you',\n", + " 'baby, i gave you all my love',\n", + " 'but what i had was not enough',\n", + " 'you turned around',\n", + " 'broke my trust',\n", + " 'got the nerve to ask me',\n", + " '\"what about us?\"',\n", + " 'i know a place',\n", + " \"where there ain't nobody cryin'\",\n", + " \"ain't nobody worried\",\n", + " \"ain't no smilin' faces lyin' to the races\",\n", + " 'help me, come on, come on',\n", + " 'somebody help me now',\n", + " \"(i'll take you there)\",\n", + " \"help me, y'all\",\n", + " \"(i'll take you there)\",\n", + " 'somebody, help me now',\n", + " \"(i'll take you there)\",\n", + " 'please, help me now',\n", + " \"(i'll take you there)\",\n", + " \"why don't you, why don't you\",\n", + " 'help me now',\n", + " \"(i'll take you there)\",\n", + " 'oh, oh',\n", + " 'mercy, oh yeah',\n", + " 'oh, oh, let me, let me take you there',\n", + " 'i know a place',\n", + " \"(i'll take you there)\",\n", + " \"where ain't nobody cryin'\",\n", + " \"(i'll take you there)\",\n", + " \"ain't nobody cryin'\",\n", + " \"(i'll take you there)\",\n", + " \"ain't no smilin' faces\",\n", + " \"(i'll take you there)\",\n", + " \"lyin' to the races\",\n", + " 'let me, come on',\n", + " \"(i'll take you there)\",\n", + " 'let me lead you there',\n", + " 'let me take you there',\n", + " \"(i'll take you there)\",\n", + " \"ain't no smilin' faces\",\n", + " \"(i'll take you there)\",\n", + " \"ain't nobody worried\",\n", + " \"(i'll take you there)\",\n", + " 'come on, come on, come on',\n", + " 'i will take you there',\n", + " \"(i'll take you there)\",\n", + " 'come on, come on, come on',\n", + " 'i will lead you there',\n", + " \"(i'll take you there)\",\n", + " \"ain't nobody worried\",\n", + " \"(i'll take you there)\",\n", + " \"i, i, i, i'll take you there\",\n", + " \"(i'll take you there)\",\n", + " 'let me, let me, let me',\n", + " 'let me lead you there',\n", + " 'we’ve been divided by an ocean',\n", + " 'had a hundred things in motion',\n", + " 'said you barely recognize me (clap)',\n", + " 'yeah, i’ve been gone for quite a while',\n", + " 'but can we just reconcile',\n", + " 'no, i never meant to leave you',\n", + " 'i was busy but i promise you the next time',\n", + " 'you won’t feel like i forgot about you (clap)',\n", + " 'i know it’s far but just remember',\n", + " 'i’ll be back home in november',\n", + " 'i won’t miss you ‘til i see the smoke',\n", + " 'call it blowback (clap), call it blowback',\n", + " 'call it blowback, call it blowback',\n", + " 'call it blowback (clap), call it blowback',\n", + " 'call it blowback, call it blowback',\n", + " 'ooh, it seems like a mighty long time',\n", + " 'shoo-bop, shoo-bop, my baby',\n", + " 'ooh, it seems like a mighty long time',\n", + " 'shoo-bop, shoo-bop, my baby',\n", + " 'ooh, it seems like a mighty long time',\n", + " 'shoo-bop, shoo-bop, my baby',\n", + " 'ooh, it seems like a mighty long time',\n", + " 'your mind would disagree, i could tell',\n", + " 'when you smile does it let you wish me well?',\n", + " 'bore a cyclone every time you exhale',\n", + " 'i cut off the ground and now i’m unbounded',\n", + " 'but miss you around it',\n", + " 'that’s why you should come and',\n", + " 'sit me all about the mountains',\n", + " 'you used to kiss me like your lips',\n", + " 'have caught fire, but no ties',\n", + " 'that smoke gets my eyes',\n", + " 'blowback (clap), call it blowback',\n", + " 'call it blowback, call it blowback',\n", + " 'call it blowback (clap), call it blowback',\n", + " 'call it blowback, call it blowback',\n", + " 'ooh, it seems like a mighty long time',\n", + " 'shoo-bop, shoo-bop, my baby',\n", + " 'ooh, it seems like a mighty long time',\n", + " 'shoo-bop, shoo-bop, my baby',\n", + " 'ooh, it seems like a mighty long time',\n", + " 'shoo-bop, shoo-bop, my baby',\n", + " 'ooh, it seems like a mighty long time',\n", + " 'shoo-bop, shoo-bop, my baby',\n", + " 'shoo-bop, shoo-bop',\n", + " 'hello stranger',\n", + " '(ooh) it seems so good to see you back again',\n", + " 'how long has it been?',\n", + " 'ooh, it seems like a mighty long time',\n", + " ...]},\n", + " 'rap': {'meta': {'train_data': ['get active',\n", + " 'if he really wants this, he can have this',\n", + " 'trapfit',\n", + " \"taking mans girl in my air force 1's boot man in my reebok classics\",\n", + " 'peng ting she called pamela',\n", + " \"she ain't moving like an amateur\",\n", + " \"she said i can't handle her\",\n", + " \"but i'm two rounds in, i've got stamina\",\n", + " 'tell a bitch bye',\n", + " 'swear down man i tell a bitch bye',\n", + " \"and i'm so sorry ms jackson\",\n", + " 'never meant to make your daughter cry',\n", + " 'but i swear, she was fucking up the grind',\n", + " \"trip done trap like i've got to get mine\",\n", + " \"trip done trap can't waste no time\",\n", + " \"man i can't waste no time\",\n", + " 'st she wants to know man',\n", + " 'my big boxers off and slow jams',\n", + " 'bill up a yardman spliff and go ham',\n", + " \"oh man, she's bopping the tip with no hands\",\n", + " 'peng ting she called pamela',\n", + " \"she ain't moving like an amateur\",\n", + " \"she said i can't handle her\",\n", + " \"but i'm two rounds in, i've got stamina\",\n", + " \"not gonna lie i don't know you\",\n", + " \"chilling with narsty but i'm not zone 2\",\n", + " \"don't be surprised when i go through\",\n", + " 'told you',\n", + " \"hardest my age i'm like cold yute\",\n", + " 'them man are rapping for bands',\n", + " \"i know that i'm hard but it's bants\",\n", + " \"she's talking about her and her man\",\n", + " \"oh damn when she's done, she's offing her pants\",\n", + " 'tell a bitch bye',\n", + " 'swear down man i tell a bitch bye',\n", + " \"and i'm so sorry ms jackson\",\n", + " 'never meant to make your daughter cry',\n", + " 'but i swear, she was fucking up the grind',\n", + " \"trip done trap like i've got to get mine\",\n", + " \"trip done trap can't waste no time\",\n", + " \"man i can't waste no time\",\n", + " 'like, get active',\n", + " 'if he really wants this, he can have this',\n", + " 'trapfit',\n", + " \"taking mans girl in my air force 1's boot man in my reebok classics\",\n", + " 'more time, skully just chat shit',\n", + " 'but if you try violate man get wacked',\n", + " 'roll round, tryna duck duck goose',\n", + " 'let me just quack this',\n", + " \"but i'm sick\",\n", + " \"i ain't riding out with no snitch\",\n", + " 'she done love the way that we fit',\n", + " \"marga yute but your girl can't hack this\",\n", + " \"(can't hack this)\",\n", + " 'like man do a madness',\n", + " \"man's been out, man's been out\",\n", + " \"man's been way too trapfit\",\n", + " 'tell a bitch bye',\n", + " 'swear down man i tell a bitch bye',\n", + " \"and i'm so sorry ms jackson\",\n", + " 'never meant to make your daughter cry',\n", + " 'but i swear, she was fucking up the grind',\n", + " \"trip done trap like i've got to get mine\",\n", + " \"trip done trap can't waste no time\",\n", + " \"man i can't waste no time\",\n", + " 'get active',\n", + " 'if he really wants this, he can have this',\n", + " 'trapfit',\n", + " \"taking mans girl in my air force 1's boot man in my reebok classics\",\n", + " 'peng ting she called pamela',\n", + " \"she ain't moving like an amateur\",\n", + " \"she said i can't handle her\",\n", + " \"but i'm two rounds in, i've got stamina\",\n", + " \"rolling in the city where i'm from\",\n", + " 'bitches love money, niggas love guns',\n", + " 'swear to god nothing doing down the sun',\n", + " \"suckers playing in the do and it's already been done\",\n", + " 'i got a el camino and the bitch run',\n", + " 'got it painted polo green',\n", + " 'got a hilfiger windbreaker on',\n", + " 'smelling like versace and weed, bitch please',\n", + " 'imma ride on these niggas til they gone',\n", + " 'cause i never let a sucker nigga breathe',\n", + " 'cause they twisting up the game on roam',\n", + " \"and this exactly what the set don't need\",\n", + " 'now check it, four lowriders front your house',\n", + " 'the engines is running but lights it out',\n", + " 'you already know what thats about',\n", + " 'got one foot in and one foot out',\n", + " \"ain't nothing but the lifer\",\n", + " \"ain't nothing but the lifer\",\n", + " \"ain't nothing but the lifer\",\n", + " \"blue '65 on a set of gold d's\",\n", + " 'nothing but the motherfucking lifer in me',\n", + " 'high as a motherfucker, still rolling weed',\n", + " \"ain't nothing but the motherfucking la, la, la\",\n", + " \"i'm worried bout the paper, fuck some hip hop\",\n", + " 'jumping out the slab in some flip flops',\n", + " \"ain't too many build the way we put together\",\n", + " 'frame solid, paint way wetter',\n", + " \"i'm thinking bout the days i used to need ride home\",\n", + " 'now the passenger a ten and she bopping off chrome',\n", + " 'living off some nigga playing ball in the league',\n", + " \"she gon' give me what i want and gon' leave without a knee\",\n", + " \"i'm running the streets like 20 on the lions\",\n", + " 'get my stats right and i think about retiring',\n", + " 'the way i play the game bet i see the hall of fame',\n", + " \"defenders can't see em only know his last name\",\n", + " 'from the back of my jersey, i blew pass',\n", + " \"all that trash i'll be hyping, fuck fashion\",\n", + " 'need to focus on your writing',\n", + " 'you clashing with the titans, play it wise lil nigga',\n", + " \"you see you ain't ready in your eyes lil nigga\",\n", + " \"ain't nothing but the lifer\",\n", + " 'nothing but the lifer',\n", + " \"ain't nothing but the lifer\",\n", + " 'nothing but the lifer',\n", + " 'in a pearl cadillac and the vogues stay clean',\n", + " 'nothing but the motherfucking lifer in me',\n", + " 'coming down slow, mix the sprite with the lean',\n", + " \"ain't nothing but the motherfucking\",\n", + " \"iceberg slim, pulling bitches on 'em\",\n", + " 'still cruise the city with my blinky on me',\n", + " \"on a money train, i'm on a mission homie\",\n", + " 'had a half a ounce and a half a ticket on me',\n", + " 'i miss curfew, my momma started bitching at me',\n", + " 'living in a hood where they was trigger happy',\n", + " 'riding in a classic bumping the classics',\n", + " 'fuck a bitch, i rather keep money under my mattress',\n", + " 'plan it out, draw it up and make it happen',\n", + " 'this young boy genius with his mathematics',\n", + " 'saw my uncle in a regal smoking on reefer',\n", + " 'saw a bad ass bitch in some white adidas',\n", + " \"stack bread, still ain't nothing different homie\",\n", + " 'this rap niggas divas, need i mention homie',\n", + " \"let that bullshit in the past, i'm on some major shit\",\n", + " 'my niggas in the pen call it checking in',\n", + " \"ain't nothing but the lifer\",\n", + " 'nothing but the lifer',\n", + " \"ain't nothing but the lifer\",\n", + " 'nothing but the lifer',\n", + " 'lil nigga, in wide body shit sitting mean',\n", + " \"ain't nothing but the motherfucker lifer in me\",\n", + " 'leather seats, 20 racks in my jeans',\n", + " \"ain't nothing but the motherfucker lifer in me\",\n", + " '{trina}',\n", + " 'da bitch is back',\n", + " 'i say the bitch is back',\n", + " 'yeah the bitch is back',\n", + " \"i got the keys i'm fen to drive come on let's ride\",\n", + " 'back seat phantom dark tents rolled down',\n", + " \"didn't want to see her look at me now\",\n", + " \"say she couldn't rap but i'm still here standing\",\n", + " 'da baddest bitch is what the fuck they yelling',\n", + " \"she's not real that one's fake\",\n", + " 'i step in the booth kill a track one take',\n", + " \"trina won't break i'm so heavy weight\",\n", + " \"look at the map, i'm from the gun shaped state\",\n", + " \"don't nann bitch want it, bitch tighten up\",\n", + " 'only bitch with a deal slip n slide what',\n", + " 'swam across the atlantic, back stroked back',\n", + " \"just mark my words i'm a take that back\",\n", + " 'gon burn these charts stack every lock',\n", + " 'gon grace every cover dis bitch here hot',\n", + " 'to give you all a lesson',\n", + " 'let me put it on the dresser',\n", + " 'where i put my damn shoes i will not lose',\n", + " '(hook)',\n", + " \"ya'll gon learn to respect the queen yesterday it was all a dream\",\n", + " \"ya'll gon learn to respect the queen, yesterday it was all a dream\",\n", + " \"i'm still da baddest bitch (ah)\",\n", + " \"i'm still da baddest bitch (ah)\",\n", + " \"ain't another i'm da baddest bitch (ah)\",\n", + " \"damn right i'm da baddest bitch (ah)\",\n", + " \"it was all a dream, thinking she'll be gone like that\",\n", + " \"wake up this ain't a dream your worst nightmares back\",\n", + " \"b. a. d. bitch i'm bad to the bone\",\n", + " 'home wrecker number 1 and queen of ringtones',\n", + " 'now observer the persona, fuck the feedback',\n", + " \"i'm equavalent to none you punks is lab rats\",\n", + " 'experimentin myspace searching for a hit',\n", + " 'i bet ya price gon double with they drop dis shit',\n", + " 'skybox pimping break through all door',\n", + " \"i'm hurricane katrina, when it rains it pours\",\n", + " 'taking no paycheck watin over bitches, niggas can get it too',\n", + " \"cause i ain't nowhere through\",\n", + " \"hood that'show you want it, hood cuz i'mma give it\",\n", + " 'since i heard a motherfucker say the sky is the limit',\n", + " \"yeah i know you want, yeah cuz i'mma give it\",\n", + " 'since i heard a motherfucker say that sky is the limit',\n", + " \"i'm out\",\n", + " '(hook)',\n", + " 'yep',\n", + " \"it's da baddest bitch. (giggles)\",\n", + " 'i know bitches they hatin',\n", + " 'let me find out',\n", + " '(hook) fade out',\n", + " 'bullet holes through the pillowcase, you slept to death',\n", + " 'bullet holes through the pillowcase, you slept to death',\n", + " 'we up, we jets, stay baked and fresh, look at how i step',\n", + " \"out these air max blending with my sweats, live like '95\",\n", + " 'tv in the pathfinder, watch new jersey drive',\n", + " 'thinking about a heist, thinking about my life, getting high',\n", + " \"this shit nice, i can't lie, but it came from a grind\",\n", + " \"this wasn't overnight, this was over an extended period of time\",\n", + " 'they tried to throw me in the box, cover it with rocks',\n", + " \"i expanded on my house, purchased some mo' drops\",\n", + " 'legal hustle, andretti og the cash crop',\n", + " 'throat the smoke in the spot, come and see us, we out',\n", + " 'i need you to spot, low rider no top, three wheel up the block',\n", + " 'throw up a jet life, a peace sign and then an east side',\n", + " 'stare in the mirror, turn the lights off and say me name three times',\n", + " 'and i appear through the smoke: andretti, andretti, andretti and a nissan',\n", + " 'skyline, we often missed the child crazy high',\n", + " 'me and statik got them coupes in traffic',\n", + " \"them bitches looking at us but we duck 'em if they goofy acting\",\n", + " \"baby i'm a hundred, everywhere your dude be lacking\",\n", + " 'any time you see me, you witnessing magic happen',\n", + " 'sycamore died, my wallet still perfectly matching my phantom',\n", + " 'yeah, ayy',\n", + " 'bullet holes through the pillowcase, you slept to death',\n", + " 'rookie of the year still be moving with the vets',\n", + " 'stizzy from the bottom, how we out there with the jets',\n", + " \"cause he don't be impressed, he was always thinking next\",\n", + " 'low riders, that spitta style i need more exotic',\n", + " 'you make foes when you hold profit',\n", + " 'you make business and you make millions',\n", + " 'you lose money when you chase women',\n", + " \"and i ain't tripping long as fam eat like thanksgiving\",\n", + " \"ain't willing to let up the motor\",\n", + " \"my moms said it'll move slower but that ain't gon' hold us over\",\n", + " \"your bitch fell in love cause the ice i'm rocking polar\",\n", + " \"she know where i'm from, ain't no way i'm getting colder\",\n", + " 'keep the car running, homie if you pulled us over',\n", + " 'i lost my brother that way, a lesson from the corner',\n", + " 'one minute you here, the next day you a goner',\n", + " \"so i'ma sing your favorite song whenever i ain't sober\",\n", + " 'real life',\n", + " 'my girlfriend hates you but i love your stuff',\n", + " \"i listen to it all the time, i can't get enough\",\n", + " 'i dig your first cd (your debut)',\n", + " 'and \"society of people named elihu.\"',\n", + " 'and \"making love\" is fresh, this much is true',\n", + " 'but \"redefining music\" is funky and new',\n", + " 'and so i crank it up, turn it up, and pump up the bass',\n", + " \"the package's synth lines are up in my face\",\n", + " 'i listen to it when i drive any place',\n", + " \"up yours to anyone who says i've got bad taste!\",\n", + " \"atom's music rocks, with nerdy soul\",\n", + " 'his new-wave-synth-punk is never dull',\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " 'i had a dream when i was in grade school',\n", + " 'that rob halford, he kissed me, see fool',\n", + " 'and i was welcomed to the family with connor',\n", + " 'it was undercover funny just like a longer',\n", + " 'keyboard that enya played',\n", + " 'so i pumped iron and i got paid',\n", + " 'when i owned the redskins with the ghetto boys',\n", + " 'breaking down the walls with kilogram toys',\n", + " 'and we sang to madonna, all night long',\n", + " 'i opened up my heart, i opened it strong',\n", + " \"to tim allen (who's not that funny)\",\n", + " 'in philadelphia where i made lots of money',\n", + " 'as a goalie, sixteen-hundred pounds',\n", + " 'chilling on the ice rink so profound',\n", + " 'upside down from here on the map',\n", + " 'sick of people who give me crap',\n", + " 'so i put them on an island in the middle of the sea',\n", + " 'and it was just atom, atom and me',\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome. (atom, you're awesome.)\",\n", + " \"atom, you're awesome\",\n", + " \"atom, you're awesome. (atom, you're awesome.)\",\n", + " \"atom, you're awesome\",\n", + " 'going out nigga',\n", + " 'big guns and sharp knifes',\n", + " \"revolvers cause automatics jam at the wrong time(i'm going out)\",\n", + " 'like fights with the brass knuckles',\n", + " \"swinging belts catching niggas with the buckle now fuck it(i'm going out)\",\n", + " \"like i ain't got nothing to live\",\n", + " 'like as if u had guns to my kids fuck it (going all out)',\n", + " 'yo you know the type that style and shit that rise my dick',\n", + " 'pop me a nigga quicker than police',\n", + " 'leave more wombs than a whole room full of chicks',\n", + " \"you running while i'm gunning cause you a bitch\",\n", + " 'i heard niggas talking like they going to dead mines',\n", + " 'i got enough guns we can make the headlines',\n", + " \"i'm from a place where the realeast niggas get murdered\",\n", + " 'and the illest niggas try to avoid it',\n", + " \"but can't call it\",\n", + " \"it's a cold world bundle up\",\n", + " 'keep your heat on at all times',\n", + " 'and never freeze up',\n", + " 'and your eyes blink you could catch a hole in your tank',\n", + " 'have you leaking all over the place',\n", + " 'watch how you speak',\n", + " 'and watch how you move through the streets',\n", + " 'i got a mob with niggas with heat',\n", + " \"we liable to squeeze 'fore we think\",\n", + " \"breath 'fore is too late\",\n", + " 'uph you fucked up and got laid to sleep',\n", + " \"(i'm going out)\",\n", + " 'with big guns and sharp knifes',\n", + " \"revolvers cause automatics jam at the wrong time(i'm going out)\",\n", + " 'like fights with the brass knuckles',\n", + " \"swinging belts catching niggas with the buckle now fuck it(i'm going out)\",\n", + " \"like i ain't got nothing to live\",\n", + " 'like as if you had guns at my kids fuck it (going all out)',\n", + " 'for the big checks and large faces mansions',\n", + " 'and my duns would do the same for me',\n", + " \"i'm going out like a nigga that ain't never have nothing\",\n", + " \"fuck it i ain't frontin'\",\n", + " 'if i want to know i got to go out like a navy seal',\n", + " 'label me ill you sling thrills',\n", + " 'meet you on top of the hills screaming dollar bill',\n", + " 'going out like a nigga you just smacked',\n", + " 'his moms in the cut plotting patient and calm',\n", + " 'putting on everything that i love and stand for',\n", + " \"getting bent up in the pub 'till five in the morn\",\n", + " 'going out like a nigga with six days to live',\n", + " \"and like a single parents raising a kid now that's a bid\",\n", + " 'going out like a nigga with shit touching his rib',\n", + " 'you got more than nesessary dun a nigga went dead',\n", + " 'going out for my niggas see this gat in my hand',\n", + " \"you better back the fuck up what part didn't you understand\",\n", + " 'have a nine aimed straight at your thyroid glands',\n", + " \"must've not been really your men them niggas that ran (i'm going out)\",\n", + " 'we do it well, clip niggas like nails',\n", + " 'catch cases, skip bails',\n", + " 'i lie before i ti-dell, die in a ci-del',\n", + " \"pop guns with the shi-dell, fuck a bitch 'til she yi-zell\",\n", + " 'rap style smoother than c.l., in the k on the dl',\n", + " 'line for line you can detail, choked more niggas than sprewell',\n", + " 'rap style p.l.o., watch me blow, like tornadoes',\n", + " 'clear the block out with just an echo',\n", + " \"trust me, niggas don't want me see let go\",\n", + " \"niggas don't want to see the tech blow\",\n", + " 'watch me move the crowd like techno music, nigga',\n", + " 'when it come to murder, you know we do it for the cause',\n", + " \"fuck relyin' on the law, ain't worth dyin' for\",\n", + " 'i rather die fucking raw',\n", + " \"or walkin' on a mine in the cold war\",\n", + " 'my dogs got my shoulders, fatigued up machine guns',\n", + " 'all my niggas soldiers',\n", + " 'with big grenades, throw them in your rover',\n", + " \"send prodigy to check the scene when it's over\",\n", + " \"niggas animals comin' back for leftovers (all out nigga)\",\n", + " \"i'm going out\",\n", + " \"i'm going out\",\n", + " \"i'm going out\",\n", + " \"it's your boy lil b, you feel me\",\n", + " 'shouts out to all the girls, yeah',\n", + " \"girl when i want you, ain't nothing that i won't do\",\n", + " 'met a fine girl on the westside',\n", + " \"everybody know i'm from the westside\",\n", + " \"she said i got a lot game, i'm from the best side\",\n", + " \"bitch, i told you i'm from the westside\",\n", + " 'keep all my hoes on a thin line',\n", + " 'everybody know about the thin line (figaro!)',\n", + " 'everybody know about the westside',\n", + " \"so why the fuck you ask me what's the best side?\",\n", + " 'smash all my girls on the front seat',\n", + " \"domestic violence case don't want me\",\n", + " 'if you got money, put it on me',\n", + " \"i'm stacking up cases and trophies\",\n", + " 'you already know fuck the *censored*',\n", + " 'i said they not your homie',\n", + " 'i said money, put it on me',\n", + " 'lil b',\n", + " 'a girl that i love started hoeing',\n", + " \"now i'm thinking where my life going\",\n", + " 'every girl wanna fuck me is hoeing',\n", + " 'i never been a pimp, bitch you know this',\n", + " 'so why every girl start hoeing',\n", + " 'wanna come around me with that ho shit',\n", + " 'asking me for my money and golden',\n", + " \"lucky that my nose ain't open\",\n", + " \"bitches choosing up, that's ho shit\",\n", + " \"i need a real girl that's focused\",\n", + " \"bitch thinks i'm a pimp for how i look\",\n", + " 'stupid ass bitch, get that pussy took',\n", + " 'thirsty ass bitch tryna get a look',\n", + " 'fuck a hundred dudes then she write a book',\n", + " \"now you know that ain't cool\",\n", + " 'wonder why niggas beat up these hoes',\n", + " 'feel me',\n", + " 'hey man, these hoes tryna have fucking kids and never break up',\n", + " \"you feel me, i can't respect that\",\n", + " \"it's lil boss\",\n", + " \"minneapolis today, with it's charred remnants of last night's\",\n", + " 'rioting, the fury evident at every corner. overnight, demonstrators',\n", + " 'have rampaged. the violence, the anger, and the flames, at times',\n", + " 'well out of control, continued until dawn-',\n", + " 'police officers handcuffed demonstrators seeking answers and',\n", + " 'justice at every corner. as the frustration continued, the officers',\n", + " 'involved have all been violent, excruciating violence',\n", + " 'the anger- flames- the anger, flames-',\n", + " 'minnesota nice was a myth',\n", + " 'we stock bombs, got arms along with the rest',\n", + " \"shelter pawn killer cops who'll ponder arrest\",\n", + " 'sentences lesser when under duress',\n", + " 'that lunatic in blue, gets a crush and then he says',\n", + " '\"this ticket\\'s for you, miss, for that \\'fine\\'-ass dress',\n", + " \"won't ask for your phone cuz i'll find your address\",\n", + " 'i\\'ll look it up, so hook me up, if only as a friend,\" look',\n", + " \"troll soldier's toll, parkin' bold on the sidewalk\",\n", + " \"argument is old, it rolls with seein' eye dogs\",\n", + " \"armor cars clickin' jaws tonight near the skywalk\",\n", + " \"law shippin' bars like the lockup was a dry dock\",\n", + " \"by god, this entire town's on fire\",\n", + " \"housekeepers freakin' out 'bout the wrong virus\",\n", + " 'loudspeakers drown out the eight minute silence',\n", + " \"sound sleepers wakin', mouth around the dick of tyrants\",\n", + " \"rollin' down lindau, got no shotgun\",\n", + " 'people yellin\\' \"fuck the cops\"',\n", + " \"the cue cards got the new guard sayin'\",\n", + " \"rollin' down lindau, got no shotgun\",\n", + " 'people yellin\\' \"fuck the cops\"',\n", + " 'they\\'re callin\\' that \"a riot\"',\n", + " \"- showed some of the last few minutes of george floyd's life\",\n", + " 'stopped on suspicion on passing counterfeit money',\n", + " 'what seems a straightforward arrest, somehow devolves into this-',\n", + " \"support hong kong? 'course ya do\",\n", + " \"in your back yard now, who's confused 'bout the bad guys?\",\n", + " \"kids with plastic or pigs givin' glass eyes?\",\n", + " \"handpickin' innocents, kick 'em into van sides\",\n", + " 'fantasize a little more, want some more warcraft?',\n", + " '\"real fuckin\\' war\\'s been crafted for that poor ass\"',\n", + " 'backhanded tactics, candid theatrics',\n", + " \"lettin' looters loot, usin' news as a tactic\",\n", + " '\"so what?\", that\\'s it, suck that little titty',\n", + " \"what's happened in this city's bein' backed in a committee\",\n", + " \"that'll grab at power, lynch these witty little literates\",\n", + " 'lab an ad, shift their meaning, feed on your indifference',\n", + " 'and filter it and nurture it, turn on one another',\n", + " \"confederates are back, but they're mackin' undercover\",\n", + " \"they're killing blacks, fact, and it matters that they're colored\",\n", + " 'or else it\\'s just stats and another \"massive number\"',\n", + " \"rollin' down lindau, got no shotgun\",\n", + " 'people yellin\\' \"fuck the cops\"',\n", + " \"the cue cards got the new guard sayin'\",\n", + " \"rollin' down lindau, got no shotgun\",\n", + " 'people yellin\\' \"fuck the cops\"',\n", + " 'they\\'re callin\\' that \"a riot\"...',\n", + " 'to make sure that his death will not be in vain...',\n", + " \"to make sure that he is more than another face on a t-shirt, more than another name on a list that won't stop growing...\",\n", + " 'he was mild-mannered, he didn\\'t fight back. the man who took his life, who suffocated him for 8 minutes and 46 seconds... he still called him \"sir\" as he begged for his life',\n", + " \"i can't tell you the kind of pain you feel when you watch something like that...\",\n", + " 'the pain you feel when you watch something like that. when you watch your big brother, who you looked up to your whole life, die, die begging for his mom?',\n", + " 'people of all backgrounds, genders and races, have come together to demand change',\n", + " \"the people marchin' in the street are telling you enough is enough\",\n", + " 'enough is enough',\n", + " \"jungle rule - can't be no fool\",\n", + " \"jungle rule - can't be no fool\",\n", + " '(i needed a little taste to that)',\n", + " 'twisting joints like a contortionist',\n", + " 'laid in the porsche',\n", + " 'my father driving',\n", + " 'days been sunny since i started rhyming',\n", + " \"no denying me; i'm known to keep a fresh foot like podiatry\",\n", + " 'nobody high as me',\n", + " \"green timbs, in vegas i'm like steve wynn\",\n", + " 'at the same time, fellatio from three twins',\n", + " \"those are triplets; i've been wilding since the rabbi snipped it\",\n", + " 'then they laughed, and ate brisket, fuck!',\n", + " 'on my behalf, he had a meeting at the neptune',\n", + " 'had little daddy hide the heater in the restroom',\n", + " 'guns drawn like my bath by my lady friend',\n", + " 'mesothelioma money: drop mercedes-benz',\n", + " \"and i ain't never left, you know i'm still here\",\n", + " 'spit the shit to bring a cripple out the wheelchair',\n", + " 'bite a bitch like george whipple in the stair case',\n", + " 'long as she got big nipples and a tan face',\n", + " \"jungle rule - can't be no fool\",\n", + " \"(yeah, you're in the concrete right now)\",\n", + " 'devil is on the loose, no coop',\n", + " 'foul living like sandusky and paterno',\n", + " \"i've been husky, motherfuckers couldn't touch me\",\n", + " \"'lo rugby with an asian model so ugly\",\n", + " 'celebration 1987, no bubbly',\n", + " \"facially, i'm like a young john kennedy\",\n", + " 'more obscenity; ebt in genovese',\n", + " 'go to ock, get 70 for 100',\n", + " 'i want the 75 from ocky but he fronted',\n", + " 'take the money, cop 5 dimes, 2 chicken sandwiches, 9 limes',\n", + " 'for the canada dry; pose for the cameras by the banister, \"hi\"',\n", + " 'in the summer, rock the vest set – salmon kani',\n", + " \"flex the three-quarter cream fi's\",\n", + " 'we some esteemed gs; steamed red snapper – vietnamese',\n", + " 'catch a case, get a jewish lawyer, beat it with cheese',\n", + " \"fuck the beef cause it don't go together, read em and weep\",\n", + " \"it's very easy, make you disappear now, kid\",\n", + " 'make your paper, but you need to stay grounded',\n", + " 'eyes wide like a chick that got the dick in the butt',\n", + " \"we're out here, trying to get the money, baby, live it up\",\n", + " 'talk about me if you please, but i must be hercules',\n", + " 'hercules',\n", + " 'i must be hercules!',\n", + " 'zan with that lean',\n", + " 'nuthin but irene',\n", + " \"hoes going crazy when i'm on the scene\",\n", + " 'souljaaaaa',\n", + " \"i'm in my zan with the lean\",\n", + " 'nuthin but irene',\n", + " \"them hoes going crazy when i'm on the scene\",\n", + " 'racks still on waist, busting out them jeans',\n", + " \"i keep the hammer on me, i ain't worried bout a thing\",\n", + " 'i got all these bandz on me, all this ice on me, all these racks on me',\n", + " 'everything on me',\n", + " 'zan with that lean',\n", + " 'nuthin but irene',\n", + " \"hoes going crazy when i'm on the scene\",\n", + " 'gotta go to the mall',\n", + " 'i gotta throw a band',\n", + " \"fall off in the club, and i'm leaning like kick stand\",\n", + " 'soulja boy my name',\n", + " 'bitch you know the gang',\n", + " 'sod money gang put that shit straight to your face',\n", + " 'boy i got them racks',\n", + " 'boy i got them tats',\n", + " 'album just went platinum, so i got them plaques',\n", + " 'lambo jet black',\n", + " 'bentley fire flame',\n", + " 'soulja boy in the club',\n", + " 'bitch you know my name',\n", + " 'every where i go',\n", + " \"bitch i'm bout to blow\",\n", + " 'ounce of that dro',\n", + " 'smoke it up on low',\n", + " 'every where i go',\n", + " 'they takin pictures',\n", + " 'oh my god dawg, i got purp in that swisher',\n", + " 'stupid bandz on me',\n", + " 'stupid racks on me',\n", + " \"ridin down i-20, i'm lookin for some freaks\",\n", + " 'lil tony on the beat',\n", + " \"can't forget the camp\",\n", + " 'everywhere we go dawg, they knowin who we at',\n", + " 'they knowin who we are',\n", + " 'bottles in the car',\n", + " \"all i am is super star, i'm smokin a cigar\",\n", + " 'everywhere i go dawg, my lambo is swerving',\n", + " 'girls say i look good, i look better in person',\n", + " 'swervin out the lane, smokin up the lane',\n", + " 'standin on that couch, in the club makin it rain',\n", + " \"soulja boy go hard, bitch i'll pull your card\",\n", + " \"niggas dissin sod, but really ain't got heart\",\n", + " '(you must be crazy)',\n", + " \"one day, let's just say that i was bored\",\n", + " 'i went for a ride in my new accord',\n", + " \"sucker mc's were standin outside\",\n", + " 'talkin bout, \"yo ed, let me get a ride\"',\n", + " 'i said, \"you\\'re already ridin on mine\"',\n", + " 'he raised his tone, and out came the chrome from behind',\n", + " '(better back up, nigga) \"now continue with yourself',\n", + " \"and don't step any further, cause it's bad for your health\",\n", + " 'and your wealth and your future',\n", + " 'cause i don\\'t wanna have to shoot ya\" - (booya!)',\n", + " 'and then i went into the store',\n", + " \"i wanted some chips, it's a dollar for 4\",\n", + " 'i gotta get some juice and a loosey',\n", + " \"i used to smoke, now it's only 1 or 2, see?\",\n", + " \"i'm not a bad guy, but i got bad habits\",\n", + " 'i was raised in the place where they grab it',\n", + " \"if they want it (brooklyn) but i'm not a thief\",\n", + " \"plus i'm not a punk, so don't pop junk or beef\",\n", + " 'what?',\n", + " 'you must be crazy',\n", + " '(you must be crazy)',\n", + " 'i pay for the goods and i make my exit',\n", + " 'i walked out the door, and i saw some legs, it',\n", + " 'looked like cheese that i knew',\n", + " ']from around the way or maybe from my brother drew',\n", + " \"it can't be the rest, because the others are older\",\n", + " 'looked like a nice slice, tapped her on the shoulder',\n", + " '(excuse me) she turned around, started to stare',\n", + " 'grabbed at my hat, said, \"let me see your hair!\"',\n", + " 'i said, \"there won\\'t be none of that, at least not here\"',\n", + " 'she said, \"my man is always snoring, and he\\'s boring\"',\n", + " 'i said, \"so what? you\\'re out here whoring?',\n", + " \"what you think you're doing?\",\n", + " \"i ain't tryin to ruin no relationship\",\n", + " 'honey dip, get a grip\"',\n", + " \"cause that's the kinda fan i can't stand\",\n", + " 'when she wanna get wreck and still got a man',\n", + " 'so if you got a girl, you better watch her',\n", + " 'because love is blind (got that ass) gotcha',\n", + " \"(think i'm crazy)\",\n", + " '(you must be crazy)',\n", + " \"well now, i got around the way and i just couldn't wait\",\n", + " '(why?) today mom said that she was cookin peppered steak',\n", + " 'i parked the ride, and as i stride down the ave',\n", + " 'i said, \"oh my, what big thighs you have\"',\n", + " 'to a slice of cheese and cut-off shorts',\n", + " 'she said, \"ain\\'t you special ed?,\" i said, \"but of course',\n", + " \"but that's not the matter at hand\",\n", + " 'do you have a man? do you understand?',\n", + " \"what i'm tryin to say is, well, ??? i'm a little shy\",\n", + " 'she said, \"why, you\\'re an attractive guy',\n", + " 'plus i seen your videos, all four of them',\n", + " 'can i be in one of them if you have more of them?\"',\n", + " 'i said, \"yes, there\\'s one next week',\n", + " 'come to the crib so we can speak\"',\n", + " 'she came over 3 days later',\n", + " 'and i laid her',\n", + " '(you must be crazy)',\n", + " \"in my city, that's where god belongs\",\n", + " 'in my city, cause he run it anyway, he run it',\n", + " 'look, psalms 14 uno, you know',\n", + " \"he says in his heart god don't exist, fool though\",\n", + " 'who created the stars? planets like ours?',\n", + " 'pluto and mars?',\n", + " 'you need the proof, though?',\n", + " 'the truth is so in the art',\n", + " 'this the living god that i serve',\n", + " 'made everything in a minute with a single word',\n", + " 'he be taking care of the bees and even the birds',\n", + " 'cause the truth is taking care of the people who are in the word',\n", + " \"don't you see our sin brought a curse?\",\n", + " 'christ redeemed us, now i know my prayers work since we believe he interceded',\n", + " 'we are soldiers, an army, our sergeant is he',\n", + " 'our weapons are not carnal, yo, we start on our knees',\n", + " \"we are a movement of the young, on fire and we zealous for the honor of our father that's in heaven\",\n", + " 'bring him',\n", + " 'in my city',\n", + " \"that's where god belongs\",\n", + " 'in my city, cause he run it anyway, he run it',\n", + " \"in my city, that's where god belongs\",\n", + " 'in my city, cause he run it anyway, he run it',\n", + " \"god, i'm so unashamed\",\n", + " 'this world thinks we insane',\n", + " \"cause we be living like in this life it's about christ and to die is gain\",\n", + " \"we denying the fame, don't retire we aim\",\n", + " \"'til our last breath to go and confess the messiah's name\",\n", + " 'so thy kingdom come, will be done',\n", + " \"in our city until 'til we see him in the holy one\",\n", + " '(new york, new york)',\n", + " \"that's where the homie from, but i know i can't be the only one\",\n", + " 'any believers in here? show me some',\n", + " 'get your hands up for the holy son',\n", + " 'fought death beat it, now you know we can defeat it',\n", + " 'go and read it, man, we already know we won',\n", + " \"there's power when your people\",\n", + " 'will gather just to come seek ya',\n", + " 'then ask for your forgiveness, admitting we truly need ya',\n", + " 'taking the gospel to the ends of the earth',\n", + " 'searching for hearts, but first i think we going start right',\n", + " 'in my city',\n", + " \"that's where god belongs\",\n", + " 'in my city, cause he run it anyway, he run it',\n", + " \"in my city, that's where god belongs\",\n", + " 'in my city, cause he run it anyway, he run it',\n", + " 'so father teach us how to pray, not just ramble off with a wishlist',\n", + " 'make us still and listen',\n", + " 'give us holy ambitions',\n", + " \"we're called and commissioned\",\n", + " \"your work here isn't finished\",\n", + " \"while we're living then we'll never ever fit in, misfits\",\n", + " 'blessing those who hate us',\n", + " 'praise you in our affliction',\n", + " 'the way the see us love one another is our distinction',\n", + " 'they take you off our dollars and out the pledge of allegiance',\n", + " \"but they'll never take praise out the mouth of believers\",\n", + " 'in my city',\n", + " \"that's where god belongs\",\n", + " 'in my city, cause he run it anyway, he run it',\n", + " \"in my city, that's where god belongs\",\n", + " 'in my city, cause he run it anyway, he run it',\n", + " 'in my city.. he run it, he he he run it, he run it, he he he run it',\n", + " 'in my city.. he run it, he he he run it, yeah',\n", + " '(here, in new york city, we will not be silent) in my city..',\n", + " '(the capital of the world, we are the light of this world) in my city...',\n", + " 'he run it, he he he run it, yeah, he run it',\n", + " 'cause he run it anyway, he run it',\n", + " \"my girlfriend's getting on my nerves\",\n", + " 'the arguments are hurting my head',\n", + " 'so i ring up the mandem asap',\n", + " \"cause i heard there's a rave in west\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " 'yo',\n", + " 'i tell my girl straight like kendrick',\n", + " 'please stop killing my vibe off',\n", + " \"right now i've got the type of domestics\",\n", + " 'i will jump in my car then drive off',\n", + " \"i'm not saying i wanna take time off\",\n", + " \"i've never been a stranger to hard work\",\n", + " \"but you're getting on my last nerve\",\n", + " \"you wanna argue with me cuh you can't get the last word?\",\n", + " \"that's so dead\",\n", + " 'best ting i fall back instead',\n", + " \"i don't want to say something i'll later regret\",\n", + " \"so i put on my chain and my crep and i'm gone again\",\n", + " 'the arguments are making me vexed',\n", + " \"you carry on when it's done like a outtake\",\n", + " \"now i'm out frass in a house rave\",\n", + " 'this one night you pissed me off',\n", + " \"so i ain't coming home til i see sunlight\",\n", + " \"my girlfriend's getting on my nerves\",\n", + " 'the arguments are hurting my head',\n", + " 'so i ring up the mandem asap',\n", + " \"cause i heard there's a rave in west\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " \"my girlfriend's getting on my nerves\",\n", + " 'the arguments are hurting my head',\n", + " 'so i ring up the mandem asap',\n", + " \"cause i heard there's a rave in west\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " \"i don't know if it's something i did\",\n", + " \"i don't know if it's something i said\",\n", + " 'but this girl is like a shit barber',\n", + " 'always trying to fuck with my head',\n", + " 'i told her to leave it and put the problems under the bed',\n", + " 'keep the shouting levels under the red',\n", + " \"but she don't want to hear so the next name i call her ain't going to be one to forget\",\n", + " 'get dressed, call shorty',\n", + " 'phone ez, pick up my door key',\n", + " 'or the next time any of my niggas see me',\n", + " \"i'll be sitting on the stage with maury\",\n", + " \"now i'm in the vip with a band on my wrist\",\n", + " 'popping a bottle of cris',\n", + " \"want to know what i'm celebrating? i'll tell them this\",\n", + " \"i'm on my 'hate my girlfriend' shit\",\n", + " \"my girlfriend's getting on my nerves\",\n", + " 'the arguments are hurting my head',\n", + " 'so i ring up the mandem asap',\n", + " \"cause i heard there's a rave in west\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " \"my girlfriend's getting on my nerves\",\n", + " 'the arguments are hurting my head',\n", + " 'so i ring up the mandem asap',\n", + " \"cause i heard there's a rave in west\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " 'if i walk out now like i wanna do',\n", + " \"the argument won't be over\",\n", + " \"but i can't take it so i pick up my keys\",\n", + " 'and put my coat over my shoulder',\n", + " 'when me and her clash in the hallway',\n", + " \"we'll say enough stuff to last us all day\",\n", + " \"but not this time, i'm switching off\",\n", + " \"turn the bitching off, that's it, i'm slipping off\",\n", + " 'then i switch back into my night',\n", + " \"cause her right ain't the same as my right\",\n", + " \"and we can be wrong but it won't get solved\",\n", + " 'before i hit the bar and take flight',\n", + " \"she's still in my mind, i'm an idiot though\",\n", + " 'cause i got gyal in the dark peeping though',\n", + " 'then i, then i started thinking',\n", + " 'is she the one that i wanna be with though?',\n", + " \"my girlfriend's getting on my nerves\",\n", + " 'the arguments are hurting my head',\n", + " 'so i ring up the mandem asap',\n", + " \"cause i heard there's a rave in west\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " \"my girlfriend's getting on my nerves\",\n", + " 'the arguments are hurting my head',\n", + " 'so i ring up the mandem asap',\n", + " \"cause i heard there's a rave in west\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " \"raving tonight, man's raving tonight\",\n", + " \"raving tonight, i'm going raving tonight\",\n", + " 'all around',\n", + " \"the world there's an echo\",\n", + " 'as he takes',\n", + " 'a bow, and they all know',\n", + " 'all the girls, the boys',\n", + " 'they chase the noise',\n", + " 'through the highs and through the lows',\n", + " 'they will follow the echo',\n", + " 'echo, echo, echo',\n", + " 'they will follow the echo',\n", + " 'echo, echo',\n", + " \"it seems like no matter what i do, i just can't get away from them\",\n", + " 'get away from what?',\n", + " 'the voices',\n", + " \"i can hear 'em callin', callin', callin', callin', callin'\",\n", + " \"i eat rappers, with the rhyme, consume 'em\",\n", + " \"the only fucking thing that you consume is time, i'm super human\",\n", + " \"my world is like a rubik's cube, it's too complex girl\",\n", + " \"you assuming, cupid's looming, my mentality's caveman stupid woman\",\n", + " 'my life is truman show, all i have is music, ho',\n", + " 'i stopped chasing every chick under the sun many moons ago, so pretend my dick is a balloon and blow',\n", + " 'but you better put a fork in it if you think i’ma lay here just spooning, yo',\n", + " \"oh, you think you the shit 'cause i just said you was beautiful?\",\n", + " 'diabolical to my last molecule, down to my last hair follicle and cuticle',\n", + " 'rotten to the core to the bone cold all the way down to my soul from my head to my toe',\n", + " 'ever since i was 13 i learned how to sew and sewed shut my own bootyhole',\n", + " \"'cause i ain't took no shit since i looked down to my nuts and saw my first pubic grow\",\n", + " 'i told these stupid hoes when i come back i’ma set this bitch on fire!',\n", + " \"and this time i don't mean i'ma pour gasoline on some chick and light her\",\n", + " \"'cause this time when i fuck this world i’ma put the whole goddamn dick inside her\",\n", + " \"i ain't even put my tip in that hole yet, i'ma go get nickel and try to rip it wider\",\n", + " 'all around',\n", + " \"the world there's an echo\",\n", + " 'as he takes',\n", + " 'a bow, and they all know',\n", + " 'all the girls, the boys',\n", + " 'they chase the noise',\n", + " 'through the highs and through the lows',\n", + " 'they will follow the echo',\n", + " 'echo, echo, echo',\n", + " 'they will follow',\n", + " 'the echo, echo, echo',\n", + " 'shh!',\n", + " 'did you hear that? somebody just said something',\n", + " 'is anybody there?',\n", + " \"i can hear 'em callin', callin', callin', callin', callin'\",\n", + " 'classical poems, battle my own demons, i need a glass of patron',\n", + " \"bad as i need a horn stabbing my clavicle bone, i'm matador prone\",\n", + " 'first time i seen a desert eagle i was letting the .44 buss, the .44 pop',\n", + " 'the first time you seen one, you was eating coco puffs, looking at robocop',\n", + " \"i am not a man, i'm a logo, i'm a such thang\",\n", + " \"in order to clean my veins you need saleen, i'm never referring to the solution, i’m talking about more like the mustang\",\n", + " 'vroom! get respect from the get-go, hello! step to the echo, echo, echo',\n", + " 'pen got a mind of its own, got to write my rhymes with a timer',\n", + " 'otherwise i’ll probably vibe out to a nine minute song',\n", + " 'as the echo follows the maserati, as the petrol swallows',\n", + " \"i'm a thousand bodies away from a skeleton, check your bible inside it\",\n", + " \"it'll say this guy's an elephant, i’m fly like i’m killing the scene like\",\n", + " 'i’m a villain with wings, i’ll sleep when i’m 6 feet deep',\n", + " 'right now i’m living a dream, though we may be reckless',\n", + " 'the ladies check us, they whisper shady records, baby echo!',\n", + " \"all, around, the world, there's an echo\",\n", + " 'as, he takes, a bow, and they all know',\n", + " 'all the girls, the boys, they chase the noise',\n", + " 'through the highs and through the lows',\n", + " 'they will follow the echo, echo, echo, echo',\n", + " \"it's akon, man (joell ortiz), my man p (p-money what's good?)\",\n", + " \"it's the magic city baby (new york city baby)\",\n", + " 'i think we got one on this one (yeah)',\n", + " \"so when them haters (man listen y'all), wanna scream my name\",\n", + " \"let them keep on callin' (gotta keep callin' man)\",\n", + " \"and they wasn't supporting us before and they wanna scream now (na man)\",\n", + " \"let them keep on callin', we gonna just let them keep on calling baby\",\n", + " \"so keep on calling, as for our supporters, y'all know you can just keep on calling for as long as you want, keep on calling\",\n", + " \"if anybody's road was hard dawg, it was mine\",\n", + " 'no pops and mommy nose finished more than a dime',\n", + " 'only child so my hands was active',\n", + " 'i used to get jumped and still yell \"but your man\\'s a faggot!\"',\n", + " 'no name jeans with the grass stains and wack zipper',\n", + " 'tucked up under the button up for the class picture',\n", + " \"eatin' twice in the lunch room\",\n", + " \"already feast with mom but some food just (keep on callin')\",\n", + " \"hey, ain't no shame in my game, i'm from the ps too\",\n", + " 'felt had to act tough for a piece too',\n", + " 'yes it was that serious',\n", + " 'back then',\n", + " 'empty refrigerators and back rent',\n", + " 'do me a favor and ask quinn if i could borrow some sugar',\n", + " \"joell knockin' down the hall with a note, and nose full of boogers\",\n", + " \"can't forget that\",\n", + " 'now that i spit crack',\n", + " \"the phones keep ringin'\",\n", + " \"nah, don't let 'em get that, let 'em keep on callin'\",\n", + " \"so when you hear them callin' out akon\",\n", + " \"let them keep on callin'\",\n", + " \"when you hear the world callin' out\",\n", + " '(joell ortiz)',\n", + " \"let them keep on callin'\",\n", + " 'cause we went through hell and back to get here',\n", + " \"so keep on callin'\",\n", + " 'let me hear you now',\n", + " 'let me hear you now',\n", + " \"let me hear you just keep on callin'\",\n", + " \"i love it when i hear y'all voice\",\n", + " \"y'all gotta understand i ain't drop them tears by choice\",\n", + " \"another man couldn't have dealt with the cruel jokes\",\n", + " 'winter time, feathers flying out my blue coat',\n", + " \"the girls ain't like me\",\n", + " \"cause i ain't have nike's\",\n", + " \"my hair wasn't spicy\",\n", + " 'a cut was five beans, i only had like three',\n", + " 'so i bought an ice',\n", + " \"hopin' it would cool me down\",\n", + " 'i was heated, all my friends had wifeys',\n", + " 'easter day, everybody got fresh',\n", + " 'me? i just tried to look my best',\n", + " 'poked out my chest',\n", + " 'never let them see me sweat',\n", + " 'these are the things i used to wanna forget',\n", + " \"now i'm glad i remember\",\n", + " 'you kept me on my toes, it was cold in december',\n", + " \"the roof on my building ain't have no chimney\",\n", + " \"maybe that's why santa skipped me\",\n", + " 'and his hotline was always busy',\n", + " \"i used to keep on callin'\",\n", + " \"c'mon\",\n", + " \"yeah i've been through hell and back\",\n", + " 'chris, theresa, edwin, joseph, michelle and pat',\n", + " \"that's my uncle, aunt, her husband, my pops, moms and other aunt\",\n", + " 'shit, all up in one apartment',\n", + " 'grandmoms let us stay there',\n", + " 'did she complain? yeah',\n", + " 'yellin\\' \"listen, this ain\\'t no daycare\"',\n", + " \"my cousins ain't play fair\",\n", + " 'we used to wrestle',\n", + " 'knock the phone off the hook and let it hang there',\n", + " \"like, keep on callin'\",\n", + " \"keep on callin'\",\n", + " \"keep on callin'\",\n", + " \"just keep on callin'\",\n", + " \"yo, jaytee rack 'em up, hazard productions\",\n", + " 'you done it again, son',\n", + " \"ethnicity irrelevant, black and white they all bangin' it\",\n", + " \"steel capped boot to the brains that i'm hammerin'\",\n", + " 'face hurt from the backhand',\n", + " '(congratulations) you just met the milkman',\n", + " 'he was all that, more than you thought',\n", + " 'got a following like brothablack up in a store (security!)',\n", + " \"lacks quality, you've heard it all before?\",\n", + " 'with a bad move like a white dude on a dancefloor',\n", + " \"and that's funny, fucking with briggs\",\n", + " 'is like fucking with shep, another bad move sonny',\n", + " \"sayin shit i know i'll get in trouble for:\",\n", + " '\"fuck rolf harris and his\\ufeff dumb cunt wobble board!\"',\n", + " 'feed the liquor to the bigger figure',\n", + " \"don't leave me to be the babysitter\",\n", + " \"'cause your kid might learn some bad words and bad terms;\",\n", + " 'ah fuck it, they growing up quick, ha?',\n", + " \"fuck around with me, that's a bad move\",\n", + " \"bad mouth the team, that's a bad move\",\n", + " \"disrespectin' me, and then you goin' to sleep?\",\n", + " \"you better believe that's a bad move\",\n", + " '\"i don\\'t even care\"',\n", + " '\"makin\\' a bad move\"',\n", + " '\"everybody can\\'t lose\"',\n", + " '\"that\\'s a bad move\"',\n", + " \"briggs disk is the shit, your shit gets skipped 'cause\",\n", + " \"your disc don't sound like this\",\n", + " 'and if it did, nobody would hear',\n", + " \"'cause you're doing what i've done, i done did it last year\",\n", + " \"no doubt, i'm the best cunt goin'\",\n", + " \"sociopath, i killed this without knowin'\",\n", + " 'outgrown, too big for their boots',\n", + " 'smash it up, wrap it up, too bad for the booth',\n", + " 'and these cats, they far from par',\n", + " 'like me on a friday, staggering bar to bar',\n", + " 'you half as hard, you half retard',\n", + " 'say your piece like um and uh',\n", + " \"fuckin' spit it out, cough it up, son, get it out\",\n", + " 'just sit back and get now',\n", + " 'and talk about how you gonna bring the brigga down;',\n", + " 'huh? yeah, well \"bring \\'em out, bring \\'em out\"',\n", + " \"fuck around with me, that's a bad move\",\n", + " \"bad mouth the team, that's a bad move\",\n", + " \"disrespectin' me, and then you goin' to sleep?\",\n", + " \"you better believe that's a bad move\",\n", + " '\"i don\\'t even care\"',\n", + " '\"makin\\' a bad move\"',\n", + " '\"everybody can\\'t lose\"',\n", + " '\"that\\'s a bad move\"',\n", + " \"i'm twice the size, ten times as nice\",\n", + " 'one mic, one night, one',\n", + " 'six times the cunt, nine times as fly',\n", + " 'eight times the drunk; gin laced with lime',\n", + " \"and i'm better: today, tomorrow, forever\",\n", + " \"don't act like you can stand next to the second letter\",\n", + " \"be about your wits 'cause you're about to lose\",\n", + " 'your chick, and start to wish that briggs had never met her',\n", + " 'if i were you probably hate me too',\n", + " \"check the stats, son, i'm supposed to lose\",\n", + " 'so i move with a chosen few',\n", + " 'make sure that you can trust those who are close to you',\n", + " \"now turn it up, it's a homemade bomb movement\",\n", + " \"let 'em know who it is when you do this\",\n", + " 'stamp yor name on it, plant your frame on it',\n", + " \"and make 'em feel the wrath when you move it\",\n", + " \"fuck around with me, that's a bad move\",\n", + " ...]},\n", + " 'data': ['(supah mario)',\n", + " 'thugger, skater',\n", + " 'once again, and again and again, ya dig?',\n", + " 'i want, i want, i want this one to be history, lil bro, ya dig',\n", + " \"let's get it\",\n", + " 'i was, i was tryna fuck her on a trampoline',\n", + " 'yeah, yeah, yeah, syrup, syrup, syrup, syrup',\n", + " \"yeah, i was leanin', drinkin' codeine mixed with promethazine\",\n", + " 'oh god, need a perc, perc, perc (i need a perc!)',\n", + " \"yeah yeah, nigga shitted on 'em (shit, hey)\",\n", + " \"yeah, nigga pass the olly, nigga pass the molly, watch me dip it on 'em\",\n", + " \"yeah, nigga pass the keys to them foreign cars, i'ma whip it on 'em\",\n", + " \"yeah, nigga play with me, you know them slime balls pull up trippin' on you\",\n", + " \"yeah, i'ma trick 'em on you, like a virus\",\n", + " 'i got eight legs like a octopus',\n", + " \"fuck a stop sign, ain't no stoppin' us\",\n", + " \"i don't see popos behind us\",\n", + " \"i don't see none, let's go find 'em\",\n", + " \"i'm a lyor, i'm a lion\",\n", + " \"i'm smoking on trees and i'm climbin'\",\n", + " \"he cookin' up fish and it's salmon\",\n", + " 'i got on some water, no fountain',\n", + " 'i need a new dew like a mountain',\n", + " \"'bout to make me cut off your allowance\",\n", + " 'i cut rapidly like accountants',\n", + " \"my rollie iced out and it's glisten\",\n", + " \"my neck is iced up and it's crowded\",\n", + " \"my momma tellin' me she proud of it\",\n", + " \"my bitch is bad and she with all the fuckery, you better keep runnin' and duckin'\",\n", + " 'and i, i know (i know it, i know it)',\n", + " 'and they know i love you down to your bones (they all know it)',\n", + " \"i said i do, ain't ever gon' do you wrong (i swear to god)\",\n", + " \"i don't know 'bout you, but i'ma take lil' mama home\",\n", + " \"uh, i tell 'em\",\n", + " \"sippin' lean, real clean\",\n", + " 'diamonds gleam, swag on triple beam, yeah',\n", + " 'fingernails clean',\n", + " \"i only got money, i don't break down weed\",\n", + " 'breaking down weed, come from breaking down, plead',\n", + " 'get-get-get that bitch a flight so i can take her down please',\n", + " \"don't you make a sound, please\",\n", + " \"it's a shake down, please, yeah\",\n", + " 'put your hands where i can see, yeah',\n", + " \"stick up, don't know 'bout these moves\",\n", + " 'make your body move',\n", + " 'clothes down to your shoes',\n", + " \"now baby don't move, cause maybe i'll shoot (yeah, haha)\",\n", + " \"cause maybe i'll shoot you\",\n", + " \"baby don't you move, baby i will shoot\",\n", + " 'and i, i know',\n", + " 'a-a-and they know i love you down to your bones',\n", + " \"i said i do, ain't ever gon' do you wrong\",\n", + " \"i don't know 'bout you, but i'ma take lil' mama home\",\n", + " 'way too hollywood to be in hollywood (shh)',\n", + " 'you done did it now',\n", + " \"heard the dope was good and, well, a hood's a hood, fuck (shh)\",\n", + " \"you gon' get it now\",\n", + " \"they said she gon' get you, right? they said she got all the juice\",\n", + " \"they said keep her happy though or she'd be coming after you\",\n", + " 'but shit, you get invincible when you get high',\n", + " 'and them sticky fingers never stopped to wonder why',\n", + " \"so now you sprintin' by that fish market tryin' to make it to summer\",\n", + " 'the blood in the ears is drumming, the heart is a cable jumper',\n", + " \"the brain is flippin' the language, the lungs are probably toast\",\n", + " \"but everybody who ever stopped runnin' is now a ghost\",\n", + " \"you ain't seen them headlights in a minute so it might be cool\",\n", + " \"night is fallin' gently and there ain't no one in sight for you\",\n", + " \"stop trippin', stop trippin', stop trippin', but don't stop movin', ho\",\n", + " \"not givin' the visions a minute to make a move, let's go\",\n", + " 'ho, get it right, get out of sight',\n", + " \"she on the street, run fo' your life\",\n", + " \"don't you know that she ain't 'fraid to shoot?\",\n", + " \"you ain't scared, is ya?\",\n", + " \"you fucked up and she comin' for you\",\n", + " \"you ain't scared, is ya?\",\n", + " 'ho, get it right, get out of sight',\n", + " \"she on the street, run fo' your life\",\n", + " \"don't you know that she cut you for fun?\",\n", + " \"you ain't scared, is ya?\",\n", + " \"if she comin' fo' you, better run\",\n", + " \"you ain't scared, is ya?\",\n", + " \"turnt into a alley quick, just a wall that's made of brick\",\n", + " 'with a dirty mattress leaning up against, it smell like piss',\n", + " 'big green dumpster to the right, color rusted, look like wine',\n", + " \"lid is heavy, but it's creakin' open, that'll do just fine\",\n", + " \"bags of trash with bites took out, coffee grounds are spillin' down\",\n", + " 'duck and slam, the lid close, damn, that metal echo hella loud',\n", + " 'quiet, sit, the plastic swish with every tiny move or twitch',\n", + " \"liquid all across the bottom, probably 'bout a quarter inch\",\n", + " \"shiver all up in the bones, the body feelin' crazy\",\n", + " \"face is streaked with tears and dirt, the vision goin' hazy\",\n", + " \"fuck it, it's too dark to see, cannot cry and can't be weak\",\n", + " \"it's a code of honor, gotta keep it gangster in the streets\",\n", + " 'og (og), og, og (og), og, oh jesus',\n", + " 'slap that koopsta all day, you knew just how this would be',\n", + " \"this the devil's playground, ain't for play, but you was born into it\",\n", + " \"now far in the distance creepin' up is that underground music\",\n", + " 'ho, get it right, get out of sight',\n", + " \"she on the street, run fo' your life\",\n", + " \"don't you know that she ain't 'fraid to shoot?\",\n", + " \"you ain't scared, is ya?\",\n", + " \"you fucked up and she comin' for you\",\n", + " \"you ain't scared, is ya?\",\n", + " 'ho, get it right, get out of sight',\n", + " \"she on the street, run fo' your life\",\n", + " \"don't you know that she cut you for fun?\",\n", + " \"you ain't scared, is ya?\",\n", + " \"if she comin' fo' you, better run\",\n", + " \"you ain't scared, is ya?\",\n", + " \"it's la chat, the killer, the murderer, the bitch they love to hate\",\n", + " \"yeah, you tried to run, but i caught you, you know it's no escape\",\n", + " 'burn up both your legs, split your head, but yeah, your mouth alright',\n", + " 'throw your garbage ass in the dumpster and now shit on your grave',\n", + " \"blood, i'm so addicted to blood, i'm cuttin' your body up\",\n", + " 'never know your name, your remains is scattered through the mud',\n", + " \"yeah, they should have warned you, la chat, bitch, man, she don't give a fuck\",\n", + " \"put you in the ground and relapse, gon' dig yo' ass back up\",\n", + " \"ain't no word, i had 'em psychotic, you haters gotta die\",\n", + " \"schizophrenic bipolar bitch, i'll feed my pits yo' ass\",\n", + " \"drama queen, i'm bringing this drama, don't fuck with me, i'll hunt you\",\n", + " \"cut you up like meat, take yo' kids, a very tasty luncheon\",\n", + " 'body you bitches for fun, punch a big hole through your lungs',\n", + " \"cut out your muhfuckin' tongue, bury you real quick and we're done\",\n", + " \"boostin' up the murder rate, hannibal lecter your face\",\n", + " 'chainsawed your rib cage, another missing person case, ho',\n", + " 'ho, get it right, get out of sight',\n", + " \"she on the street, run fo' your life\",\n", + " \"don't you know that she ain't 'fraid to shoot?\",\n", + " \"you ain't scared, is ya?\",\n", + " \"you fucked up and she comin' for you\",\n", + " \"you ain't scared, is ya?\",\n", + " 'ho, get it right, get out of sight',\n", + " \"she on the street, run fo' your life\",\n", + " \"don't you know that she cut you for fun?\",\n", + " \"you ain't scared, is ya?\",\n", + " \"if she comin' fo' you, better run\",\n", + " \"you ain't scared, is ya?\",\n", + " 'hoo-bangers (wassup!!!)',\n", + " \"y'all ready? (fo' sho'!!!!)\",\n", + " \"well let's do this shit\",\n", + " \"i'ma start this bitch off, and y'all run it, check it, uhh\",\n", + " 'on your marks, get set, go for what you know',\n", + " \"it's the #1 crew in your area, dough for dough\",\n", + " 'i keep it thuggish with my dickies on sag',\n", + " \"i buy my '57 rag until my '98 jag\",\n", + " 'and just roll all over the town on 20 inch wheels',\n", + " 'and just, brag all about the mill’s i made on mic skills',\n", + " 'i slang and do my thang keepin niggas on amp',\n", + " \"it's mack 10 kickin shit from the hoo-bangin camp\",\n", + " 'haha (nigga)',\n", + " \"i just, wake up and ball y'all (whattup k-mac?)\",\n", + " \"comrade criminals and y'know we fades em all (that's right)\",\n", + " \"i'm hittin six on the teatley\",\n", + " \"and i'm ridin on you busters cuz that's how it gotta be (it got to be)\",\n", + " 'niggas please, cadillacs on deez (on deez)',\n", + " \"and in the middle of the winter, it's still 89 degrees (that's right)\",\n", + " \"we's die hard, pullin job nigga's whole cards\",\n", + " \"best to check our records cos we's ??? ??? (that's right)\",\n", + " 'i kill a nigga ten times, before he hit the concrete (whattup techniec?)',\n", + " 'tight shit that make ya say \"damn, tech got bomb heat\" (hahaha)',\n", + " 'first nigga that speak like \"i don\\'t believe you\"',\n", + " 'first nigga who face touch asphalt before his knees do (god damn!)',\n", + " \"nigga, i ain't tryin to please you, know that\",\n", + " \"i'm no joke, black, you can quote that, i wrote that\",\n", + " \"i hold mac's with 2-1's\",\n", + " \"plus the deuce-5's at my side so i got two guns (that's right)\",\n", + " 'chorus:',\n", + " \"it don't stop til the casket drop\",\n", + " \"quick to handle them thangs, hoo-bang's the gang\",\n", + " 'on the corner with this rap tryin to regulate cheese',\n", + " \"y'know we represent them straight b's and c's\",\n", + " \"g'yeah (wassup? whattup eiht?)\",\n", + " 'ready to go to war, i take you to war',\n", + " 'hoo-bangin as i buck thru your passenger door (buck buck)',\n", + " 'bust, grab your bitch and tell her hit the floor (hit the deck, bitch)',\n", + " \"give it a fuck, blood pour, what we came here for (that's right)\",\n", + " \"til i die, why camouflage? i'm in a dodge (wassup nigga?)\",\n", + " \"your homies can't see me, i'm greedy, call me idi\",\n", + " 'speedy, the fire spits, kicks like the last dragon',\n", + " \"connects the clock with the glocks, g'yeah\",\n", + " \"i'm a motherfuckin westside gangbang, low ride nigga (yeah)\",\n", + " 'a 600 benz ride, cristal sipper (nigga)',\n", + " \"you don't wanna fuck with me, you're high, nigga (what?)\",\n", + " 'fuck with this here, you disappear, listen to me clear',\n", + " '6-double 0 bang, ace double o gang',\n", + " \"run up in banks and run trancs, what's my fuckin name? (what's my name?)\",\n", + " 'cj l-a-richwold, right here for the scrap',\n", + " 'less risk for the roller, killin niggas over',\n", + " 'so-so crackin, steady and packin on chrome, up under the hood',\n", + " 'slingin packages from s-c to inglewood',\n", + " 'runnin up on ya, puttin em on ya wit these knuckle hammers, mayne',\n", + " \"it's the shadiest ridah loc, quick to let the barrel flame\",\n", + " \"dub-c, one of the last niggas you wanna get wit, with these things i'm\",\n", + " \"'quipped with\",\n", + " \"bitch, i'm a couple of sandwiches away from a picnic\",\n", + " \"clippin nothin but hogs, i'm from the seaside of the walls\",\n", + " \"what's connectin with these doggs? nigga, ballin til we fall\",\n", + " \"b’s and c's, slangin cd's\",\n", + " 'overseas, the vietnamese and japanese (uhh)',\n", + " \"ya get got, your ass'll get shot\",\n", + " 'have you on your hands and knees like you was makin sulac',\n", + " \"what's the plot? nigga, from here to reno\",\n", + " 'boo kapone got three cases up in chino (nigga)',\n", + " 'i smash, i blast for the cash, i smoke hash',\n", + " \"i ripped your ass in half, don't niggas do the math? (niggas)\",\n", + " 'chorus',\n", + " \"y'all don't wanna get down! fuck y'all fools\",\n", + " 'ya best laydown! get clowned when we spray your whole town',\n", + " 'the jock coon aka binky mac, nigga!',\n", + " 'porsche or gat? put you flat then i ditch my strap (throw it away)',\n", + " \"what's the haps, mayn? jockin a whole crap game\",\n", + " 'mack 10 put a nigga on in, so now i hoo-bang (get yours, nigga)',\n", + " 'new jordans with my usual p hat',\n", + " \"b-mac, if i ever go broke i'm grabbin my ski mask\",\n", + " \"nigga, i'm a baller, inglewood dweller, ho seller\",\n", + " 'schemin for the pussy four times, do your duty',\n", + " 'bustle up in this and tatted up',\n", + " \"live and die for the west, but ain't had enough\",\n", + " 'it\\'s a hoo-bang thang, they say a \"nigga, where ya homie be?\" like',\n", + " \"(don't slow your roll) too late i'm banged out\",\n", + " \"i'm livin crucial, through this here ???\",\n", + " 'i live for violence and motherfuckers feel the terror',\n", + " 'rise up when you other fools is fallin',\n", + " \"the dawgs is who you gon' call, we on the ball like spalding\",\n", + " \"trick, it's the infamous macs from the i\",\n", + " 'hit the switch, in the lac, and go from low-to-high',\n", + " 'drive by, yeah g loves swamp rat and thug dumpin',\n", + " 'bumpin, see me from roadawgs, always into somethin',\n", + " 'like nwa, hoo-bangin, the r-e-c-i-p-e, yeah',\n", + " 'we fades em all, like jamal',\n", + " \"it's westside connect bang or ball? (nigga)\",\n", + " \"just ask the lil' homie do dirty\",\n", + " 'we get drunk and start beatin fools up at the pool party',\n", + " 'chorus (x2)',\n", + " 'yeah, gettin ours, westside connect ogz',\n", + " 'hoo-bang for the cheese, nigga',\n", + " 'you know about this crew',\n", + " 'try to see it or l-i-g it, nigga, wuz happenin?',\n", + " 'cook that shit up, quay',\n", + " 'baby',\n", + " '4 pockets',\n", + " \"yeah, that's my dawg, yeah\",\n", + " \"yeah, that's my dawg for sure (my dawg)\",\n", + " \"yeah, that's my dawg (my dawg)\",\n", + " \"yeah, that's my dawg for sure (my dawg)\",\n", + " \"yeah, that's my dawg (my dawg)\",\n", + " 'me and my dawg (me and my dawg)',\n", + " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", + " 'me and my dawg (me and my dawg)',\n", + " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", + " \"deja keep on callin' (callin')\",\n", + " 'she say she ready to pull up (pull up)',\n", + " 'as soon as i get there, walk in',\n", + " \"i'ma put her in a full nelson (yeah)\",\n", + " \"i'm on my way, i'm goin' fast\",\n", + " \"i'm comin' home to get you (i'm comin' home to get you)\",\n", + " \"i'm on my way, i'm goin' fast\",\n", + " \"i'm comin' home to get you (i'm on my way)\",\n", + " 'hundred thousand dollars on my neck',\n", + " \"'nother fifty thousand on my wrist\",\n", + " 'every nigga with me real rich',\n", + " \"niggas havin' pressure 'bout a bitch\",\n", + " 'i got all my cases dismissed',\n", + " \"i don't go back and forth on the internet\",\n", + " \"real niggas don't get into that\",\n", + " \"i'm tryna get in her mouth, for real\",\n", + " \"i'm tryna get in her mouth (yeah)\",\n", + " 'me and my dawgs, me and my dawgs',\n", + " 'we tryna run in your house (yeah, yeah)',\n", + " 'we want them bricks, we want the money (give me that)',\n", + " 'you can keep all of the pounds (give me that)',\n", + " \"i can't be fuckin' these lil bitty bitches\",\n", + " \"'cause they be runnin' they mouth (yeah)\",\n", + " \"i'm really runnin' this town\",\n", + " 'frank mueller watch for my wrist',\n", + " \"'nother thirty thousand in my fit\",\n", + " 'codeine all in my piss (ooh)',\n", + " \"i don't take drugs no more\",\n", + " \"baby mama trippin' 'bout a bitch\",\n", + " \"i'm just tryna take care my kid\",\n", + " \"i been in the trenches gettin' rich\",\n", + " \"i don't know another way to go\",\n", + " \"yeah, that's my dawg for sure (my dawg)\",\n", + " \"yeah, that's my dawg (my dawg)\",\n", + " \"yeah, that's my dawg for sure (my dawg)\",\n", + " \"yeah, that's my dawg (my dawg)\",\n", + " 'me and my dawg (me and my dawg)',\n", + " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", + " 'me and my dawg (me and my dawg)',\n", + " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", + " \"deja keep on callin' (callin')\",\n", + " 'she say she ready to pull up (pull up)',\n", + " 'as soon as i get there, walk in',\n", + " \"i'ma put her in a full nelson (yeah)\",\n", + " \"i'm on my way, i'm goin' fast\",\n", + " \"i'm comin' home to get you (i'm comin' home to get you)\",\n", + " \"i'm on my way, i'm goin' fast\",\n", + " \"i'm comin' home to get you (i'm on my way)\",\n", + " 'bust down rollies for the clique',\n", + " 'got these bitches dancing on the dick',\n", + " \"they gon' wait in line for this drip\",\n", + " \"i'ma give her mine, then dip\",\n", + " \"i'ma try to kill her for the real\",\n", + " 'thirty thousand dollars in my ear',\n", + " \"i ain't gotta sign no deal\",\n", + " \"made a half a mil' last year\",\n", + " 'i just came home from the can',\n", + " '20 days, whole hundred bands',\n", + " \"got a nigga feelin' like the man\",\n", + " \"all these bitches knowin' who i am\",\n", + " \"hit the ground runnin', i ain't playin'\",\n", + " 'put a hundred bricks in the van',\n", + " 'give a thousand pounds to my man',\n", + " 'blow the money fast as i can',\n", + " 'signed to the streets, no advance',\n", + " 'bitches tryna rip me out my pants',\n", + " \"'cause they heard a youngin' gettin' bands\",\n", + " \"they don't know that i ain't goin' for nothin'\",\n", + " 'only gave the bitch a couple hundred',\n", + " 'big dawg, nigga, you a runner',\n", + " 'run off on the plug, change my number',\n", + " 'drop top coupes for the summer',\n", + " \"yeah, that's my dawg for sure (my dawg)\",\n", + " \"yeah, that's my dawg (my dawg)\",\n", + " \"yeah, that's my dawg for sure (my dawg)\",\n", + " \"yeah, that's my dawg (my dawg)\",\n", + " 'me and my dawg (me and my dawg)',\n", + " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", + " 'me and my dawg (me and my dawg)',\n", + " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", + " \"deja keep on callin' (callin')\",\n", + " 'she say she ready to pull up (pull up)',\n", + " 'as soon as i get there, walk in',\n", + " \"i'ma put her in a full nelson (yeah)\",\n", + " \"i'm on my way, i'm goin' fast\",\n", + " \"i'm comin' home to get you (i'm comin' home to get you)\",\n", + " \"i'm on my way, i'm goin' fast\",\n", + " \"i'm comin' home to get you (i'm on my way)\",\n", + " 'dawgs',\n", + " 'just me and my dawgs',\n", + " \"we gon' take 'em down two in a row\",\n", + " \"we gon' take 'em down two in a row\",\n", + " \"we gon' take 'em down two in a row\",\n", + " 'just me and my dawgs',\n", + " \"i'ma put her in a full nelson\",\n", + " \"as soon as i get there, i'ma put her in a full nelson\",\n", + " 'oh shut the front door come on',\n", + " 'i might drive out to dmv for some peace shit',\n", + " \"i might hide out you won't see me for a week shit\",\n", + " \"took a time out but it wasn't for tv shit\",\n", + " \"oh please. throwing g's at the preakness\",\n", + " 'filets beer battered, back shots get your rear shattered',\n", + " 'bodies on deck, yet he never tear tatted',\n", + " 'matted, murdered out all black heard through word of mouth',\n", + " \"he's a burden now it's a fact, fuck it.. speak\",\n", + " 'wet a beak with the poland spring',\n", + " 'delving deep with the freaks eating boneless wings',\n", + " 'trop called him pederico',\n", + " 'pop gushy, pop clicquot',\n", + " 'puffin leak on the church steeple',\n", + " 'creeps slow on the willem dafoe -',\n", + " \"looking trolls can't kill him gotta will him to go\",\n", + " \"we in manila bumpin' willa ford\",\n", + " 'thank you lord for the smorgasboard',\n", + " 'we bluetooth never aux cord',\n", + " '(oh pls oh pls)',\n", + " \"you ain't never heard no rhymes like these\",\n", + " '(oh pls oh pls)',\n", + " 'tryna charge him with additional fees',\n", + " '(oh pls oh pls)',\n", + " 'federalees wanna search and seize',\n", + " '(oh pls oh pls oh pls oh pls)',\n", + " \"ayo shut the fuck up when i'm talking you through it\",\n", + " 'you fucks blew it and he knew it',\n", + " '3 percent tint in the buick',\n", + " 'its congruent',\n", + " 'dollars and yen, euros he fluent',\n", + " \"she polishing men, shinin' the unit\",\n", + " 'i know you got a man but like we could still do shit',\n", + " \"i know you got a plan but like it's not really too lit\",\n", + " 'known to be a nuisance to crews new chicks dudes and neighbors',\n", + " \"do me a favor don't do me no favors (shiet!)\",\n", + " 'tell me one thing that might have gave us, pause',\n", + " 'and they think, might cause him to drink but never play us',\n", + " \"serving him up, don't survey us\",\n", + " 'the gang on surveillance, eating paellas and pan roasts',\n", + " \"damn every time your man boasts it's saran for you folks\",\n", + " 'slam from the post eating jam with the toast',\n", + " \"dip the ham in the yolks. it's not a hoax\",\n", + " 'got boats in roanoke',\n", + " '(oh pls oh pls)',\n", + " \"you ain't never heard no rhymes like these\",\n", + " '(oh pls oh pls)',\n", + " 'tryna charge him with additional fees',\n", + " '(oh pls oh pls)',\n", + " 'federalys wanna search and seize',\n", + " '(oh pls oh pls, oh pls oh pls)',\n", + " 'hey hows it going eric',\n", + " 'um you got your phone bro',\n", + " 'remember the big paintball game today?',\n", + " \"that's today bro\",\n", + " '..so um, i dont know if your hun- hungover or',\n", + " 'just so.. im just chillin out',\n", + " 'hey give us a call back',\n", + " 'you know, maybe.. maybe, call scooby he called you too',\n", + " \"alright bro! see you later man. hope every thing's well. alright. bye bye\",\n", + " '(oh pls)',\n", + " '(oh pls)',\n", + " '------------------------------',\n", + " 'scum gang!',\n", + " \"niggas runnin' out they mouth, but they never pop out\",\n", + " 'i got the drop on your spot, everybody watch out',\n", + " 'all my niggas on 50, so you know we hopped out',\n", + " \"mobbed out, opps out, we gon' show what we about\",\n", + " 'all my niggas really gang bang, talk that damn slang',\n", + " 'rap about it, do the same thing, let your nuts hang',\n", + " \"we gon' pull up, nigga, ¡ándale!, on sangre\",\n", + " \"we post up, we don't do the race, you gon' die today\",\n", + " 'in the spot, blow 50 bands, shit, 100 bands',\n", + " \"shit, my pockets on a runnin' man, fuck a rubberband\",\n", + " \"i'ma fuck her in a handstand, she a fan, man\",\n", + " \"need the drugs? i'm the xan man, i'm the damn man\",\n", + " \"i roll up, i'm gon' be booted, stupid, and shootin' stupid\",\n", + " 'brought a knife, i brought a ruger, stupid, i really do this',\n", + " \"if i tote it then you know i'll shoot it and i'ma prove it\",\n", + " \"back, back, don't be movin', stupid, or i'ma use it (squad)\",\n", + " 'dicky stiffy, uh, bet she give some licky, uh',\n", + " 'lil bitty, uh, bust all on her titties, uh',\n", + " \"she a skeezer, uh, really don't need her, uh\",\n", + " 'bust then i leave her, uh, she a little eater, uh',\n", + " 'get back, kickback, blow your shit back, uh',\n", + " 'rip that, take that, flip that, send that, uh',\n", + " '.223 hit, where your clothes at? uh',\n", + " \"scum gang 'bout that fendi, fin-act, uh\",\n", + " \"niggas runnin' out they mouth, but they never pop out\",\n", + " 'i got the drop on your spot, everybody watch out',\n", + " 'all my niggas on 50, so you know we hopped out',\n", + " \"mobbed out, opps out, we gon' show what we about\",\n", + " 'all my niggas really gang bang, talk that damn slang',\n", + " 'rap about it, do the same thing, let your nuts hang',\n", + " \"we gon' pull up, nigga ¡ándale!, on sangre (it's koncept p, the beat knockin')\",\n", + " \"we post up, we don't do the race, you gon' die today\",\n", + " 'you can talk hot on the internet, boy',\n", + " \"that's that goofy shit, we ain't into that, boy\",\n", + " 'black van, pull up to your momma crib, boy',\n", + " 'tie her up, drive that shit off a bridge, lil boy',\n", + " 'you can talk hot on the internet, boy',\n", + " \"that's that goofy shit, we ain't into that, boy\",\n", + " 'black van, pull up to your momma crib, boy',\n", + " 'tie her up, drive that shit off a bridge, lil boy',\n", + " \"niggas runnin' out they mouth, but they never pop out\",\n", + " 'i got the drop on your spot, everybody watch out',\n", + " 'all my niggas on 50, so you know we hopped out',\n", + " \"mobbed out, opps out, we gon' show what we about (it's koncept p, the beat knockin')\",\n", + " 'all my niggas really gang bang, talk that damn slang',\n", + " 'rap about it, do the same thing, let your nuts hang',\n", + " \"we gon' pull up, nigga ¡ándale!, on sangre\",\n", + " \"we post up, we don't do the race, you gon' die today\",\n", + " 'get them vocals, nigga',\n", + " \"yeah, this is w somethin-somethin-somethin'\",\n", + " 'uh, yeah',\n", + " 'violation, violation',\n", + " 'you supposed to be my brown sugar like sanaa lathan',\n", + " \"i'm down to chase the pussy all through the town, jason\",\n", + " \"reality hit like a blunt, girl it's time to face it\",\n", + " \"i'm just the right amount of wit to get your mind racin'\",\n", + " 'i asked you one thing you could bring if you went outerspace and',\n", + " \"i tell you all about the shit i like and the shit i hatin'\",\n", + " \"you share your demons, don't be scared, i promise i can take it\",\n", + " \"i feel like overton or dwayne, girl, i'm all for pain\",\n", + " \"you gon' get a ring\",\n", + " \"i'ma even listen to you sing knowin' you can't sing\",\n", + " \"fuck it, it sound beautiful to me, go 'head do ya thang\",\n", + " 'bring a fifth of henny to the beach and i hate the sand',\n", + " 'and you not just sexy but you woke, we both hate the man',\n", + " \"yeah, we both crazy, but i think i'm crazy more\",\n", + " 'but she\\'d love to prove me wrong, lookin\\' up like \"what\\'s the score?\"',\n", + " 'brown sugar, spice, and everything nice',\n", + " 'mix it with whatever i like',\n", + " 'i wrote this love letter tonight',\n", + " \"hopin' i can get a bite\",\n", + " 'she so sassy, ooh',\n", + " 'she so sassy, turn immature every time she walk past me',\n", + " 'brown sugar, spice, and everything nice',\n", + " 'mix it with whatever i like',\n", + " \"i'm holdin' back my tweets, i ain't slept good all week\",\n", + " \"i'm waitin' till i see her, i put on my best sneakers\",\n", + " \"i'm in the mirror like mary, i need to smoke my reefer\",\n", + " \"i'm sweatin' hard, tryn chill, dreamin' yours in the grill\",\n", + " \"why can't it all be real?\",\n", + " \"i better have my baby and she gon' have my baby\",\n", + " \"we gon' ball like brady, y'all think i'm all types crazy\",\n", + " \"don't care 'bout none of the lately, i ain't write a song in a minute\",\n", + " \"just waitin' for a notification, this could be us but you playin'\",\n", + " \"i'm really up, i be prayin' for bigger bucks in my hand, to grip on a butt while i'm layin'\",\n", + " \"breathe nigga, breathe, you can fly like the matrix, and you startin' to believe it\",\n", + " \"say she love you more and i'm startin' to believe her\",\n", + " 'love the tiger stripes on her ass like adidas',\n", + " \"hit the shmoney dance after crackin', she crashin'\",\n", + " \"she wake up, make her late for work and we laughin' 'bout what happened\",\n", + " 'she had that',\n", + " 'brown sugar, spice, and everything nice',\n", + " 'mix it with whatever i like',\n", + " 'i wrote this love letter tonight',\n", + " \"hopin' i can get a bite\",\n", + " 'she so sassy, ooh',\n", + " 'she so sassy, turn immature every time she walk past me',\n", + " 'brown sugar, spice, and everything nice',\n", + " 'mix it with whatever i like',\n", + " 'i like, i like, i like',\n", + " 'champion me a di champion boy (x4)',\n", + " 'one bag a gold medal pon me, enuh',\n", + " 'champion bwoy you know how the damn thing go',\n", + " 'pon a podium a sing the anthem too',\n", + " '(yellow moon)',\n", + " 'man a born sheller',\n", + " 'me a the god damn bwoy',\n", + " 'that’s why everybody hate the champion bwoy',\n", + " 'have a rich gyal inna di hamptons bwoy',\n", + " 'dem wish a never me did a the champion bwoy',\n", + " 'if a nuh norman a dung sangsters bwoy',\n", + " 'fly out every week me a the god damn bwoy',\n", + " 'just buss and buy a mansion bwoy',\n", + " 'champion, me a the champion bwoy',\n", + " 'have me own a name, and me have me own a fame',\n", + " 'and me nuh need no more hype',\n", + " 'me need a money counter',\n", + " 'counting a get annoying sometime',\n", + " 'me cyaa tek dis life',\n", + " 'dem artist a rate me nuh fuck',\n", + " 'every song weh dem sing me name in a the title',\n", + " 'cause a yesterday me spend a hour pon the phone',\n", + " 'a gi me financial advisor advise to',\n", + " 'me wish some a dem yute yah never so frighten fi pussy',\n", + " 'every chance dem get dem go wife up',\n", + " 'me fuck you gyal, cum pon her belly',\n", + " 'and me might go a second round if me idle',\n", + " 'dem nuh have a hot song',\n", + " 'cyaa left the caribbean',\n", + " 'sometime me wonder how dem survive',\n", + " 'dem did a seh me career soon dead',\n", + " 'a two years now and me never feel more alive',\n", + " 'god damn boy',\n", + " \"and that's why everyone hate the champion boy\",\n", + " 'dis a iphone a no samsung boy',\n", + " 'you nuh see seh a me a the champion boy?',\n", + " 'me go ardenne a never campion boy',\n", + " 'fly out every week me a di god damn bwoy',\n", + " 'post a picture nuh caption bwoy',\n", + " 'everyone know me a the champion bwoy',\n", + " 'dem yah story yah cyaa come pon er',\n", + " 'it haffi go-go pon profile',\n", + " 'me never get no right fi a mash up the place',\n", + " 'and a kill dem wid bare style',\n", + " 'me would a be dem favorite if me chat up wid dem',\n", + " 'and gossip up wid dem and smile up',\n", + " 'and a who fa mother this?',\n", + " 'yow a who fa father this?',\n", + " 'somebody need fi come get dem, dem time up',\n", + " 'the table dem turn to the pot dem turn down',\n", + " 'and it look like dem wash up to me',\n", + " 'what that dem waan fia do it or not',\n", + " 'me nuh ask dem nuh stop study me',\n", + " 'cyaa member dem, yow me don’t memba dem',\n", + " 'but a everyday dem memba me',\n", + " 'unless you name jody-anne maxwell you cyaa chat to me (champion bwoy)',\n", + " 'man a born sheller',\n", + " 'me a the god damn bwoy',\n", + " 'that’s why everybody hate the champion bwoy',\n", + " 'have a rich gyal inna di hamptons bwoy',\n", + " 'dem wish a never me did a the champion bwoy',\n", + " 'if a nuh norman a dung sangsters bwoy',\n", + " 'fly out every week me a the god damn bwoy',\n", + " 'just buss and buy a mansion bwoy',\n", + " 'champion, me a the champion bwoy',\n", + " 'ever since i was a kid',\n", + " 'on the backs of my two eyelids',\n", + " 'i hid two teleprompters there',\n", + " 'transmitting words from who knows where',\n", + " 'walkie-talkie on a mission',\n", + " 'roger, roger will i listen',\n", + " 'or will i just pass it along',\n", + " 'in the form of a sing-a-long',\n", + " 'whammies and noids be void and null',\n", + " 'i feel a tingle in my skull',\n", + " 'like ticker tape the words appear',\n", + " 'there’s a parade between my ears',\n", + " 'i preach self-love i know it’s true',\n", + " 'it’s easier to say than do',\n", + " 'i send these messages to you',\n", + " 'but now i need to hear them too',\n", + " 'i am beautiful i am powerful i am strong and i am loveable',\n", + " 'i am beautiful i am powerful i am strong and i am loveable',\n", + " 'i was laying bricks in a line',\n", + " 'yap full of dog toy',\n", + " 'picturing a life beyond that of a protocol droid',\n", + " 'bleep bloop boy ox boycott pea soup',\n", + " 'first learn to eat paint at st. peter’s preschool-yum',\n", + " 'now that’s a painkiller i can speak through',\n", + " 'airbrush letters on a pristine gene pool',\n", + " 'see my mother said her father drew a ton',\n", + " \"but all his cartoons had been swallowed by the susquehanna flood in '72\",\n", + " 'the year that he would subsequently pass',\n", + " 'i know he had a stroke but i assume that’s only half',\n", + " 'and now i’m signing up for finger-drawing class in a tux like a gentleman',\n", + " 'marrying his ash to his dust',\n", + " 'last on the kickball team draft pick-list',\n", + " 'first to the king kullen practicing his kickflips',\n", + " 'i’d like to say it’s ‘cause i was a rebel',\n", + " 'truthfully it’s easier to say “oh hell” instead of “hello”',\n", + " '(hi, you need to get out more)',\n", + " 'i dunno, i don’t wanna be there when the geometry domino',\n", + " '(you need to get out more)',\n", + " 'maybe, or maybe his pace is better suited for pacing',\n", + " '(you need to get out more)',\n", + " 'never i am nailed to the floor-i am snail under pressure',\n", + " '(you need to get out more)',\n", + " 'fine',\n", + " 'ever since i was a kid',\n", + " 'on the backs of my two eyelids',\n", + " 'i hid two teleprompters there',\n", + " 'transmitting words from who knows where',\n", + " 'and this is why when i’m on stage',\n", + " 'my eyes are closed i’m in a haze',\n", + " 'i look like i’m made out of clay',\n", + " 'i’m overwhelmed and under-glazed',\n", + " 'i’m making vases out of snakes',\n", + " 'i’m a kiln half-full of mistakes',\n", + " 'when kneading it, air’s overlooked',\n", + " 'it’s gonna crack when it gets cooked',\n", + " 'so self-forgiveness is the key',\n", + " 'to re-sculpting my sanity',\n", + " 'mindfulness, humility',\n", + " 'and taking time to care for me',\n", + " 'i preach self-love i know it’s true',\n", + " 'it’s easier to say than do',\n", + " 'i sing these messages to you',\n", + " 'but now i need to hear them too',\n", + " 'i am beautiful i am powerful i am strong and i am loveable',\n", + " 'i am beautiful i am powerful i am strong and i am loveable',\n", + " 'i was laying bricks in a line',\n", + " 'yap full of copper-top',\n", + " 'picturing a life beyond that of a dish-washer bot',\n", + " 'buzz ping',\n", + " 'criss-crossed arms in a tub ring',\n", + " 'learned heartbreak on a zelda-1 sub screen-numb',\n", + " 'learned dark days by the scent of poached dove meat',\n", + " 'some part ways and it’s fugly',\n", + " 'maybe the sum of the parts became lesser',\n", + " 'that each individually making the same gesture',\n", + " 'and you don’t wanna interrupt the overlapping network',\n", + " 'so you throw a bag together and elope with cabin pressure',\n", + " 'to disappear instead of interfere with nutty customs',\n", + " 'and differing definitions of liberty and justice',\n", + " 'big dummy dig a hole in the dirt',\n", + " 'he put his head in the hole; he is alone in this world',\n", + " 'and dying slowly from the comfort of his home full of worms',\n", + " 'until you hear a little voice say “yo let’s go get dessert”',\n", + " 'wait-what?',\n", + " 'you need to get out more',\n", + " 'i dunno-over 2 million dead bats in ny alone',\n", + " 'you need to get out more',\n", + " 'maybe, maybe not',\n", + " \"maybe i'll just stay back and survey the lot\",\n", + " 'you need to get out more',\n", + " 'never i am nailed to the walls in a jail made of deserts',\n", + " 'you need to get out more',\n", + " 'ok',\n", + " 'i dedicate this to my man 2pac',\n", + " 'rest in peace boy',\n", + " \"you know it's all love\",\n", + " 'who holds jurisdiction over my twisted thoughts?',\n", + " \"and am i to blame for what's happened off in this game?\",\n", + " \"i'm do or die about my scratch but i know\",\n", + " \"this dope game 4 me just ain't the way to go\",\n", + " \"but i'm still there grinin' and winnin' just like the next foldin' paper\",\n", + " \"thinkin' of ways to load another caper\",\n", + " \"it's a cold twist to know that i can slang all night\",\n", + " 'and slang all day but never have the courage to pray',\n", + " \"believe i know better but somehow i feel i'm lost\",\n", + " 'at the crossroads but am i scared to move across',\n", + " \"could it be what i'm drinkin'? it got me thinkin' like i'm thinkin'\",\n", + " '\"lord i need help but i can\\'t help myself\"',\n", + " \"awaken to the sound of sirens, niggas dyin'\",\n", + " 'kids in the street wit no food to eat',\n", + " \"prostitutes gettin' money in they only profession\",\n", + " 'but lord i only got one question',\n", + " '(bo rock)',\n", + " \"do g's go to heaven? cause i don't wanna die\",\n", + " \"(i know it's wrong and i know what's right)\",\n", + " \"but if so i'd like to know do g's go to heaven? (3x)\",\n", + " '(will i get to heaven if i die tonight)',\n", + " 'and if i took a life or perhaps sold some dope',\n", + " 'would you discriminate upon my entry to the gate?',\n", + " \"i need to know my fate 'cuz now my life ain't straight\",\n", + " 'but just look it the place where i live is oh so crooked',\n", + " \"i didn't shoot that man but i watched him die\",\n", + " \"and saw the pain and the struggle in his eye and didn't cry\",\n", + " 'so when i start to hear the thunder',\n", + " \"are you takin' me under or is my sin just as bad as the gunner?\",\n", + " 'for every time i walked by, and every time i got high',\n", + " 'for every man i watched die',\n", + " 'lord i need to know do gs get to go?',\n", + " 'for all the women that i ran through',\n", + " \"and those that i did and didn't plan to\",\n", + " 'for every scam i ran my hands through',\n", + " 'lord i need to do gs get to go?',\n", + " 'and if they get to go, when its time to meet my maker',\n", + " 'will he understand that i am only a man',\n", + " 'flesh and bone born to live and die in the zone',\n", + " 'and gets loney trying to make it on ya own',\n", + " 'and when my baby crys my intentions are to feed',\n", + " 'and fufill tha needs of my one and only seed',\n", + " 'and if i rob and steal let it read in my will',\n", + " '\"payback from tha ones that who fell victims to my guns\"',\n", + " \"on tha run but knowin i can't hide\",\n", + " 'why do i feel tha way i feel inside?',\n", + " 'its like my soul is leavin me',\n", + " 'are you decieving me ? i hear voices, sayin believe in me',\n", + " 'is it you? i hear theres a man named god',\n", + " 'that can fix it, when its twisted',\n", + " \"i'm not sayin i'm all that bad but i can use a lil help\",\n", + " \"cause at times i can't help myself\",\n", + " \"do g's go to heaven? cause i don't wanna die\",\n", + " \"but if so i'd like to know do g's go to heaven? (6x)\",\n", + " 'flocka!',\n", + " 'triple f life, man: friends, fans, and family',\n", + " 'aye, aye, aye, aye, aye',\n", + " 'aye, aye...',\n", + " \"i can't trust myself, so hell no, i can't trust you\",\n", + " \"i'm ballin', you can call me bill russell\",\n", + " \"point me to the court, coach it's my turn\",\n", + " \"i swear to god to dribble base and don't cross over\",\n", + " \"cause i'm ready, cause i'm ready\",\n", + " \"cause i'm readyyyyyyyyyyy\",\n", + " \"cause i'm ready, cause i'm ready\",\n", + " \"cause i'm readyyyyyyyyyyy\",\n", + " 'i remember selling nicks, dimes, and them vickies',\n", + " 'i got no love, i swear to god, my heart empty',\n", + " 'i remember when a nigga was young',\n", + " \"going in auntie and grandma's pocketbooks\",\n", + " 'even my mama pocketbook, even stealing out the stores',\n", + " \"now i'm getting thirty five thousand for a show\",\n", + " 'i can buy my own store right now',\n", + " \"joke's on you, bitch!\",\n", + " 'i remember uncle joe talking to me',\n", + " \"saying everybody in this world's some hungry man\",\n", + " \"so prepare your dinner, so you don't be supper\",\n", + " 'my hood like pearl harbor, green like the jungle',\n", + " 'cool with them ex lions and them tigers',\n", + " 'hell yeah, you can call me a party animal',\n", + " 'eat a rap nigga, call me hannibal',\n", + " \"dump 'em out the rear\",\n", + " '(2x)',\n", + " 'i came here to talk back, i-i came here to fuck shit up',\n", + " 'i came here to talk smack, i-i came here to fuck shit up',\n", + " 'i came here to talk back, i-i came here to fuck shit up',\n", + " 'i came here to talk smack, i-i came here to fuck shit up',\n", + " 'i came here to talk back, i-i came here to fuck shit up',\n", + " 'i came here to talk smack, i-i came here to fuck shit up',\n", + " 'i came here to talk back, i-i came here to fuck shit up',\n", + " 'i came here to talk smack, i-i came here to fuck shit up',\n", + " 'i came here to talk back, i-i came here to fuck shit up',\n", + " \"i know y'all seeing that we back again\",\n", + " \"everybody happy that we jumpin' in\",\n", + " \"two times a charm and we goin' in\",\n", + " 'me and my amigo back at it again',\n", + " \"i know y'all seeing that we back again\",\n", + " \"everybody happy that we jumpin' in\",\n", + " \"two times a charm and we goin' in\",\n", + " 'me and my amigo back at it again',\n", + " \"we stomping on your lawn, you can't keep up (say it again)\",\n", + " \"we stomping on your lawn, you can't keep up (say it again)\",\n", + " \"we stomping on your lawn, you can't keep up (say it again)\",\n", + " \"we stomping on your lawn, you can't keep up (say it again)\",\n", + " 'chicka chicka bang, chicka chicka bom bom',\n", + " \"i'm lookin' at the paper, checkin' on my\",\n", + " 'think i wanna spend my cash on a trip to the moon',\n", + " \"i might be the first but we really don't know\",\n", + " 'i came here to talk smack, i-i came here to fuck shit up',\n", + " 'i came here to talk back, i-i came here to fuck shit up',\n", + " 'chicka chicka bang, chicka chicka bom bom',\n", + " \"i'm lookin' at the paper, checkin' on my\",\n", + " 'think i wanna spend my cash on a trip to the moon',\n", + " \"i might be the first but we really don't know\",\n", + " 'i came here to talk smack, i-i came here to fuck shit up',\n", + " 'i came here to talk back, i-i came here to fuck shit up',\n", + " \"you see, baby? i'm sitting here and i'm laughing at you\",\n", + " \"i'm laughing cause you're thinking too hard\",\n", + " 'you need to just let go and have some fun',\n", + " \"it ain't that serious, just do you, boo\",\n", + " \"join in, everybody who's with me\",\n", + " \"let's start this movement\",\n", + " \"i know y'all seeing that we back again\",\n", + " \"i know y'all seeing that we back again\",\n", + " \"i know y'all seeing that we back again\",\n", + " \"i know y'all, know y'all, know y'all\",\n", + " \"i know y'all seeing that we back again\",\n", + " \"everybody happy that we jumpin' in\",\n", + " \"two times a charm and we goin' in\",\n", + " 'me and my amigo back at it again',\n", + " \"we stomping on your lawn, you can't keep up (say it again)\",\n", + " \"we stomping on your lawn, you can't keep up (say it again)\",\n", + " \"we stomping on your lawn, you can't keep up (say it again)\",\n", + " \"we stomping on your lawn, you can't keep up (say it again)\",\n", + " 'chicka chicka bang, chicka chicka bom bom',\n", + " \"i'm lookin' at the paper, checkin' on my\",\n", + " 'think i wanna spend my cash on a trip to the moon',\n", + " \"i might be the first but we really don't know\",\n", + " 'i came here to talk smack, i-i came here to fuck shit up',\n", + " 'i came here to talk back, i-i came here to fuck shit up',\n", + " \"just what you think you're doing?\",\n", + " \"every day i'm going insane\",\n", + " \"i'm like if rage and animosity had sex and a child\",\n", + " 'and got a great big house up on a mountain made of doubt and hate',\n", + " 'and then just burned it all down, so they could start it again',\n", + " 'burn, everything, to, the, ground',\n", + " 'uh, born alone living life on my own',\n", + " 'death grabbed a hold of me, my heart turned to stone',\n", + " 'my blood is cold and my thoughts not my own',\n", + " \"i can't remember, but i know that you know\",\n", + " \"everyone's lost\",\n", + " 'everybody a fake',\n", + " 'stuck in a rat race in a world full of snakes',\n", + " 'fuck everything',\n", + " 'fuck the lies on your tv screen',\n", + " 'fuck everyone',\n", + " \"i'ma die so your fate can be no more, no more, no more, no more\",\n", + " \"(don't let me go out alone)\",\n", + " \"(don't let me go out alone)\",\n", + " 'uh, i watched the world fall apart from me',\n", + " 'i looked as far as my eyes can see',\n", + " \"don't wanna know why i feel this way\",\n", + " 'i wanna die for steal your pain',\n", + " 'i watched the world fall apart from me',\n", + " 'i looked as far as my eyes can see',\n", + " \"don't wanna know why i feel this way\",\n", + " 'i wanna die for steal your pain',\n", + " \"every day i'm going insane\",\n", + " \"i'm like if rage and animosity had sex and a child\",\n", + " 'and got a great big house up on a mountain made of doubt and hate',\n", + " 'and then just burned it all down, so they could start it again',\n", + " 'burn, everything, to, the, ground',\n", + " \"some birds don't deserve to be caged\",\n", + " 'they gotta fly away and search for the waves',\n", + " 'being locked up is worse than the grave',\n", + " 'i live by the words on the page - i know!',\n", + " \"some birds don't deserve to be caged\",\n", + " 'they gotta fly away and search for the waves',\n", + " 'bein held down is worse than the grave',\n", + " 'i live by the words on the page - i say!',\n", + " 'i jumped on the planet and i landed on both feet',\n", + " 'tippy-toed across the continent, on the dope beat',\n", + " 'settled in the mainland ghetto by the sand trap',\n", + " 'rocked to a handclap until i got my band back',\n", + " 'thoughts came thick in a ball of confusion',\n", + " \"a wall of belusion it's all so amusin\",\n", + " 'i laughed at the pain sometimes with a straight face',\n", + " 'just another hate case, you control your fate ace!',\n", + " 'long walks down the lonely road turned path paved',\n", + " 'bask in the cascade, grey clouds circle me',\n", + " 'tuned to the channel so their energy will work on me',\n", + " 'all in the cut like surgery and burnt to the third degree',\n", + " 'internally, avoid an away story',\n", + " '40 and slip of tongue, tryin to bring the poison noise',\n", + " \"step in the spot like i'm not that popular\",\n", + " \"eyes like binoculars, i'm so hip-hopular\",\n", + " 'been on the air since greg had a mac attack',\n", + " \"now they all crackerjack, that's a fact, smell me\",\n", + " \"how can you tell me what i haven't already heard\",\n", + " 'forty-three, 43rd, listen and observe',\n", + " 'first flew the coop when they tried to cage a rocking bird',\n", + " 'lookin for the truth in the booth when i serve',\n", + " 'never clip the wings if they seem a little out of touch',\n", + " \"let 'em fly free please, don't try to box 'em up\",\n", + " 'i open a lot cause i smash it with brute force',\n", + " 'flew over the roof, headed north on a crash course',\n", + " \"eagle eyes spot 'em all, groundhog peekin out\",\n", + " 'stickin out against the whack world while they freakin out',\n", + " \"wasn't 'sposed to go but i just didn't wanna wait\",\n", + " \"been had a ticket but the chattanooga's runnin late\",\n", + " 'hate never had a lover good as i been to her',\n", + " \"couldn't put an end to her, cause she got followers\",\n", + " 'whole flock of spitters and swallowers, wow',\n", + " \"intregrity didn't have a home 'til i gave him one\",\n", + " '{?} and diamonds, god said say no more',\n", + " 'find a piece of mind like a needle in the haystack',\n", + " 'grind on the real on the playback, ready for the at-tack',\n", + " 'seatack, cry me a riverboat',\n", + " \"if i don't fly back, still gotta give 'em hope\",\n", + " 'stand and delivery, first class rain or shine',\n", + " 'pain of mine in a pantomime glass chilled',\n", + " 'where was your genie when you needed her for real',\n", + " 'buildin my art from the parts that they overlooked',\n", + " 'fuse lit from the last match in the book',\n", + " 'stand in adrenaline, pumped through the resevoir',\n", + " \"plucked out the air cause he didn't sit duck\",\n", + " \"pretty as the peacock who can't even leave the ground\",\n", + " \"let the heart glide on, don't buy the muck\",\n", + " 'what?',\n", + " 'where my dogs at?',\n", + " 'where my dogs at?',\n", + " 'where my dogs at?',\n", + " 'where my dogs at?',\n", + " \"you can try but i do fight, just can't seem to do right\",\n", + " \"can't run with the big dogs, his jeans is too tight\",\n", + " \"i've been doing this for too long, plus dog is too strong\",\n", + " 'let you catch, fight me off the map with a new song',\n", + " 'man you know you wrong, trying that shit there',\n", + " 'yeah a nigga went there, all you do is sit there',\n", + " \"i've been rapping for 20 years and you 20 years old\",\n", + " 'x back on the block nigga, you lucky if you go gold',\n", + " \"there's a new sheriff in town, just been re-elected\",\n", + " \"you ain't gonna like it, but respect, nigga check it\",\n", + " \"i'mma get it in till the nigga wins with the dividends\",\n", + " \"we gon' walk these dogs 'til the bitter end\",\n", + " \"you like, oh it's him again, i knew that's how you felt\",\n", + " \"pussy, i knew that's how you smelt\",\n", + " 'but you cats still playing around with just beats',\n", + " \"talking about what you got, ain't air in the teeth\",\n", + " \"you can put on a vest, but i'mma still stop it\",\n", + " 'cause i got a chopper that sound like a helicopter',\n", + " \"and niggas really don't want me to pop the trunk\",\n", + " \"we gon' either chop or slump when i cock and dump\",\n", + " \"whether the glock or pump, cats ain't ready\",\n", + " 'half from here to here, lookin like spaghetti',\n", + " 'pull out the machete, hack off the limbs',\n", + " 'bag up the pieces, wipe off the timbs',\n", + " 'jump in the benz, five cars deep',\n", + " \"4 o'clock in the morning, riders still asleep\",\n", + " 'shut shit down whenever we hit town',\n", + " 'give a nigga pass! i lay my dick down',\n", + " 'you can, bring out the best or, bring out the worst',\n", + " \"you gon' bring out the worst, we gon' bring out the hearse\",\n", + " 'niggas play poker, i play poke-her',\n", + " 'hit her from ear to ear make her smile like the joker!',\n", + " 'yeah!',\n", + " 'put you motherfuckins titties in the air!',\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " 'get crunk in the streets, back it up like \"beep\"!',\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " 'get crunk in the streets, back it up like \"beep\"!',\n", + " 'oh yeah, i got my hurr did nicely',\n", + " 'high-top nikes, always in my white tee',\n", + " 'oh god, you know your girlfriend likes me',\n", + " \"i'll wax that ass, we go fast like lightning (yeah)\",\n", + " \"baby, i'ma break your back, girl\",\n", + " \"and after we have sex, you'll probably get attached, girl\",\n", + " \"pay me, i don't fuck for free\",\n", + " 'you know all of these scene bitches wanna fuck with me',\n", + " \"let's get crunk, baby girl! (go shake that thing)\",\n", + " 'get crunk, baby girl! (go shake that thing)',\n", + " 'get crunk, baby girl! (go shake that thing)',\n", + " \"put your booty in the air like it ain't no thing\",\n", + " \"let's get crunk, baby girl! (go shake that thing)\",\n", + " 'get crunk, baby girl! (go shake that thing)',\n", + " 'get crunk, baby girl! (go shake that thing)',\n", + " \"put your booty in the air like it ain't no thing\",\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " \"get crunk in the streets, back it up like 'beep'!\",\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " \"get crunk in the streets, back it up like 'beep'!\",\n", + " 'beats to make you skeet, making the ladies leak',\n", + " \"and legs be wobbling weak 'cause phat j's the freak of the week (oh yeah!)\",\n", + " 'orgasm spasm making her peak, making her cream',\n", + " 'leaving the scene addicted to what the dick did',\n", + " 'sick kid and it was fucking wicked',\n", + " 'take a smoke break to get lifted damn right, i hit it',\n", + " 'shortie been gifted by a veteran crunk kid',\n", + " 'shortie been gifted by a veteran crunk kid!',\n", + " \"let's get crunk, baby girl! (go shake that thing)\",\n", + " 'get crunk, baby girl! (go shake that thing)',\n", + " 'get crunk, baby girl! (go shake that thing)',\n", + " \"put your booty in the air like it ain't no thing\",\n", + " \"let's get crunk, baby girl! (go shake that thing)\",\n", + " 'get crunk, baby girl! (go shake that thing)',\n", + " 'get crunk, baby girl! (go shake that thing)',\n", + " \"put your booty in the air like it ain't no thing\",\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " \"get crunk in the streets, back it up like 'beep'!\",\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", + " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", + " \"get crunk in the streets, back it up like 'beep'!\",\n", + " \"(skeet, skeet) i'm all up your in your face, girl\",\n", + " 'now open your mouth and tell me how i taste, girl',\n", + " 'peaches and cream dripping down your waist, girl',\n", + " \"now give it to me, i don't like fake girls\",\n", + " \"she'll be my fuck affair!\",\n", + " 'skeet, skeet up in her hair!',\n", + " ...]},\n", + " 'rock': {'meta': {'train_data': ['ow, yeah',\n", + " 'wow',\n", + " 'ah yeah',\n", + " 'whoo',\n", + " 'empty pockets never stopped me from a-singing a blue streak, no',\n", + " \"and i don't think the devil's ever gonna give me back\",\n", + " \"i don't think so\",\n", + " \"and stayin' 'round here takes patience\",\n", + " \"it's like a full time occupation\",\n", + " \"i've become a diplomaniac\",\n", + " 'yes i did, baby',\n", + " 'hey mean old gal',\n", + " 'you know the crosstown bus just rolled',\n", + " \"yeah i'm the same old number\",\n", + " 'but we still got time to go, oh, sing it babe',\n", + " \"oh, i say mama, living ain't a luxury, no\",\n", + " \"oh, i say mama, and a lil' ain't enough for me\",\n", + " \"no it ain't, no it ain't, baby\",\n", + " \"yeah, i'm believing that you're needin' your relaxation, whoa\",\n", + " 'but honey, tell me can you tell that story twice?',\n", + " \"i don't think so, mama\",\n", + " \"'cause there's a function at the junction\",\n", + " 'think you better get it all ready girl',\n", + " 'see i was born without a silver spoon',\n", + " \"but i'm gonna make a stir, yes i am\",\n", + " 'was vaccinated with a phonograph needle one summer break, oh',\n", + " \"then i kissed her on her daddy's boat and shot across the lake\",\n", + " \"and i was singin', babe\",\n", + " \"oh, i say mama, living ain't a luxury, no\",\n", + " \"oh, i say mama, and a lil' ain't enough for me, no\",\n", + " \"oh, i say mama, living ain't a luxury, no oh\",\n", + " \"oh, i say mama, and a lil' ain't enough for me\",\n", + " \"no it ain't baby, no it ain't\",\n", + " \"mmm, said a little ain't enough, baby\",\n", + " 'baby, please',\n", + " \"little ain't enough, ow\",\n", + " 'heh, heh',\n", + " 'whoo',\n", + " 'was vaccinated with a phonograph needle one summer break',\n", + " \"same summer that i kissed her on her daddy's boat\",\n", + " 'and shot across the lake',\n", + " 'yeah',\n", + " \"oh, i say mama, say living ain't a luxury, oh\",\n", + " \"oh, i say mama, that's a lil' ain't enough for me, oh yeah\",\n", + " \"oh, i say mama, living ain't a luxury\",\n", + " \"(oh, i say mama) say, say a lil' ain't enough\",\n", + " \"a lil' ain't enough for me, oh\",\n", + " 'someone take me down to the river',\n", + " 'and leave no trail for which to return',\n", + " 'let the muddy water fill my lungs',\n", + " 'fill my lungs',\n", + " 'and leave no trail for which to return',\n", + " 'let the muddy water fill my lungs',\n", + " 'fill my lungs',\n", + " 'fill my lungs',\n", + " 'fill my lungs',\n", + " 'the invincibility of our youth has just given away',\n", + " '(and i hope it does)',\n", + " 'to the inevitability of our death, yeah',\n", + " 'the invincibility of our youth has just given away',\n", + " '(and i hope it does)',\n", + " 'to the inevitability of our death',\n", + " \"so don't raise your glass\",\n", + " \"don't raise your glass\",\n", + " \"don't raise your glass\",\n", + " 'redemption wears a red dress but carries a white flag',\n", + " \"i'll wear that red dress for you\",\n", + " 'the invincibility of our youth has just given away',\n", + " '(and i hope it does)',\n", + " 'to the inevitability of our death, of our death',\n", + " 'the invincibility of our youth has just given away',\n", + " '(and i hope it does)',\n", + " 'to the inevitability of our death',\n", + " \"so don't raise your glass\",\n", + " \"don't raise your glass\",\n", + " 'death is a living partner',\n", + " 'a consummate consummate one',\n", + " 'a consummate consummate one',\n", + " 'consummate consummate one',\n", + " 'consummate consummate one',\n", + " 'destined to face the ominous specter of death',\n", + " 'harvester of souls severs the tie that binds body and spirit',\n", + " 'punishment of the damned',\n", + " 'judged for their grievous suns',\n", + " 'culmination in a surge of fury',\n", + " 'unbaptized children drowned in the river styx',\n", + " 'punishment of the damned',\n", + " 'righteous indignation',\n", + " 'punishment of the damned',\n", + " 'righteous indignation',\n", + " 'punishment of the damned',\n", + " 'assessing damage done',\n", + " 'their bodies fused and worn',\n", + " 'inside they lay within',\n", + " 'a path of unforgiven sins',\n", + " 'blotting out the sky',\n", + " 'these fiends are forged from fire',\n", + " 'violence against the cross',\n", + " 'contain their devious lust',\n", + " 'their anger burns so hot',\n", + " 'full of mud and filth',\n", + " 'once pacified, tangled in the web of lies',\n", + " 'assessing damage done',\n", + " 'their bodies fused and worn',\n", + " 'inside they lay within',\n", + " 'a path of unforgiven sins',\n", + " 'destined to face the ominous specter of death',\n", + " 'harvester of souls severs the tie that binds body and spirit',\n", + " 'punishment of the damned',\n", + " 'punishment of the damned',\n", + " 'righteous indignation',\n", + " 'punishment of the damned',\n", + " 'righteous indignation',\n", + " 'punishment of the damned',\n", + " \"never thought i'd be at this moment\",\n", + " \"never thought i'd get a go\",\n", + " \"never thought i'd be standing here\",\n", + " 'with my boots next to yours on the floor',\n", + " 'fuck all those who ever doubt you',\n", + " 'fuck those who make you feel small',\n", + " 'spit on your shit record',\n", + " \"'cause to me you are nothing at all\",\n", + " \"you're the heartbeat kick of the bass drum\",\n", + " \"you're the power chord chorus hall\",\n", + " 'you take my place right up front',\n", + " \"oi! ellis , take 'em all\",\n", + " 'this is what angels sound like',\n", + " 'to my ears anyway',\n", + " 'look in my eyes',\n", + " 'grab my hand',\n", + " 'i just want this rhythm to stay',\n", + " \"and it's clear (right now)\",\n", + " 'made you feel (right now)',\n", + " 'in a fear (right now)',\n", + " \"and it's real (right now)\",\n", + " \"it's right now (right now)\",\n", + " \"it's right now (right now)\",\n", + " \"it's right now\",\n", + " \"never thought i'd be at this moment\",\n", + " \"never thought i'd get a go\",\n", + " \"never thought i'd be standing here\",\n", + " 'with my boots next to yours on the floor',\n", + " \"never thought i'd be at this moment\",\n", + " \"never thought i'd get a go!\",\n", + " \"never thought i'd be standing here\",\n", + " 'with my boots next to yours on the floor',\n", + " 'with my boots next to yours on the floor',\n", + " 'rise from the depths of hell',\n", + " \"destroying all that's good\",\n", + " 'crush christianity and let satan loose',\n", + " 'fake your ways',\n", + " 'and give us a sound',\n", + " 'and let us know the time in here',\n", + " 'in dark religion',\n", + " 'those who never sacrifice are killed',\n", + " 'the true believer',\n", + " 'when no one is alive',\n", + " 'the real freedom',\n", + " 'to let one die',\n", + " 'the path will lead me there',\n", + " 'the way from the darkness',\n", + " 'and there i will stay',\n", + " 'to fulfill my own dark life',\n", + " 'who completes the long lost journey',\n", + " 'will rule through history',\n", + " 'the one prophet depends on the walk',\n", + " 'with souls of death is near?',\n", + " 'the earth will be like a dungeon',\n", + " 'hell will rise through the sand',\n", + " 'my life with always protection',\n", + " 'as long as they hate you',\n", + " 'the true believer...',\n", + " 'the path will lead me there',\n", + " 'the way, the path to babylon',\n", + " 'and there i will stay',\n", + " 'to fulfill my own dark life',\n", + " 'i can walk the bed of nails',\n", + " \"i'm not the only one\",\n", + " 'but some, they cannot walk the jagged line',\n", + " 'callous, concentrating',\n", + " 'for nails are sharp as lies',\n", + " 'i run the jagged line',\n", + " 'from years and years of practice',\n", + " 'i know just how to stand',\n", + " 'alone with perfect balance, hand in hand',\n", + " 'prepared with boards and hammers',\n", + " 'and several bags of nails',\n", + " 'i could build a wall to lean on',\n", + " 'roof above my mind',\n", + " \"i can see you've got your own plans\",\n", + " \"please don't drive your nails into this heart of mine\",\n", + " 'i can walk the bed of nails',\n", + " 'grin and bear the pain',\n", + " 'but some, they cannot deal with all things',\n", + " 'always sacrificing',\n", + " 'for lies are sharp as nails',\n", + " 'and all the pain it brings',\n", + " 'sometimes i just pretend that all the lies are true',\n", + " 'and i know i might depend on you',\n", + " 'but if my concentration breaks',\n", + " \"i'm washed away with pain\",\n", + " 'and then my feet begin to bleed upon my only bed of nails',\n", + " \"and i'm stuck here in the middle of a sea of lies\",\n", + " 'inside my bed of nails',\n", + " 'from years and years of practice',\n", + " 'i know just how to stand',\n", + " 'alone with perfect balance, hand in hand',\n", + " 'prepared with boards and hammers',\n", + " 'and several bags of nails',\n", + " 'i could build a wall to lean on',\n", + " 'roof above my mind',\n", + " \"i can see you've got your own plans\",\n", + " \"please don't drive your nails into this heart of mine\",\n", + " 'i will not cease from mental fight',\n", + " 'nor shall my sword sleep at my side',\n", + " 'till we have built jerusalem',\n", + " 'jerusalem',\n", + " 'bring me my bow of burning gold!',\n", + " 'bring me my spear!',\n", + " 'bring me my chariot of fire!',\n", + " 'i will not cease from mental fight',\n", + " 'nor shall my sword sleep at my side',\n", + " 'till we have built jerusalem',\n", + " '...of fire',\n", + " 'i will not cease...',\n", + " '...sword sleep at my...',\n", + " 'till we have built jerusalem',\n", + " 'jerusalem',\n", + " '(verse)',\n", + " 'social potions',\n", + " 'we just keep knocking them back',\n", + " 'anxious feelings',\n", + " 'you know they grow in the gap',\n", + " 'laying dormant',\n", + " 'ready to make their attack',\n", + " \"between the suits and don'ts, dude and that\",\n", + " \"i'm not a suicide bomber\",\n", + " 'but the effects of this bomb could look like suicide',\n", + " 'i feel my courage getting stronger',\n", + " 'all expect for my ego (?)',\n", + " 'gotta make like a cauldron',\n", + " 'concoction of chemicals that alter your mind',\n", + " 'through the midst of a trip',\n", + " 'momentary enlightenment that is lost in the night',\n", + " '(chorus)',\n", + " 'social potions',\n", + " 'we need another',\n", + " 'social potion',\n", + " 'overdosing',\n", + " 'is not an option',\n", + " 'but keep on going',\n", + " 'gotta keep on going',\n", + " '(verse)',\n", + " 'just keep going and going',\n", + " 'three days on the trot',\n", + " \"and sometimes that ain't enough\",\n", + " 'galloping off into the distance',\n", + " \"what's the locals\",\n", + " 'who just sit there and watch',\n", + " 'new era of mind dislocation',\n", + " \"experimentation if you're ready or not\",\n", + " \"let's get my halo\",\n", + " 'no matter how hard i try',\n", + " 'it will never come off',\n", + " '(chorus)',\n", + " 'social potions',\n", + " 'we need another',\n", + " 'social potion',\n", + " 'overdosing',\n", + " 'is not an option',\n", + " 'but keep on going',\n", + " 'gotta keep on going',\n", + " '(bridge)',\n", + " \"we're getting older\",\n", + " 'but none the wiser',\n", + " \"we're getting older\",\n", + " 'but none the wiser',\n", + " \"we're getting older\",\n", + " 'but none the wiser (why?)',\n", + " \"we're getting older\",\n", + " 'but none the wiser (why)',\n", + " \"we're getting older\",\n", + " 'but none the wiser (why)',\n", + " \"we're getting older\",\n", + " 'but none the wiser (why)',\n", + " \"we're getting older\",\n", + " 'but none the wiser (why)',\n", + " \"we're getting older\",\n", + " 'but none the wiser (why)',\n", + " \"we're getting older\",\n", + " 'but none the wiser (why)',\n", + " \"we're getting older\",\n", + " 'but none the wiser (why)',\n", + " '(chorus)',\n", + " 'social potions',\n", + " 'we need another',\n", + " 'social potion',\n", + " 'overdosing',\n", + " 'is not an option',\n", + " 'but keep on going',\n", + " 'gotta keep on going',\n", + " 'there are no answers left',\n", + " 'only puzzles remain',\n", + " 'forcing themselves',\n", + " 'onto every page',\n", + " 'and if i fix this',\n", + " 'i can go home again',\n", + " 'and i will leave behind',\n", + " 'these questions that have carried me here',\n", + " 'i see the problem in this peeling wall',\n", + " 'for every crack hides a thousand more',\n", + " 'i want to break from the grip that',\n", + " 'my pen holds me in',\n", + " 'i want to work it out and leave now',\n", + " 'before i am ruined',\n", + " '(i swear they’ve poisoned my meals)',\n", + " 'i have never seen figures move like this',\n", + " 'an endless string of numbers that refuse to fit',\n", + " 'in the distance i hear them listening in',\n", + " 'they have to be sure that some problems aren’t solved',\n", + " 'for my own peace of mind lets not talk on this line',\n", + " 'i want to break from the grip',\n", + " 'that my pen holds me in',\n", + " 'i want to work it out and leave now',\n", + " 'before i am ruined',\n", + " '(they can’t make me swallow)',\n", + " 'i have never seen figures move like this',\n", + " 'an endless string of numbers that refuse to fit',\n", + " 'i swear they’ve poisoned my meals',\n", + " 'but they can’t make me swallow',\n", + " 'where there were once proofs there’s dust',\n", + " 'where there once was a person',\n", + " 'a machine talks',\n", + " 'a machine talks...',\n", + " 'i held my breath as time stood still',\n", + " 'just for you',\n", + " 'my eyes ran dry',\n", + " 'to my surprise',\n", + " 'just for you',\n", + " 'these promises that have been made',\n", + " 'just for you',\n", + " \"the world flies by but i'll take my time\",\n", + " \"it's all good\",\n", + " 'just for you, just for you',\n", + " \"you're the best mistake that i made\",\n", + " \"one that i won't take for granted\",\n", + " 'i watch you sleep',\n", + " 'my heart skips beat',\n", + " 'just for you',\n", + " \"i'm nervous still but i'll come through\",\n", + " 'just for you',\n", + " \"the world flies by but i'll take my time\",\n", + " \"it's all good\",\n", + " 'just for you, just for you',\n", + " \"you're the best mistake that i made\",\n", + " \"one that i won't waste\",\n", + " 'just for you, just for you',\n", + " \"you're the best mistake that i made\",\n", + " \"one that i won't take for granted\",\n", + " 'just for you, just for you',\n", + " \"you're the best mistake that i made\",\n", + " \"one that i won't take for granted\",\n", + " \"you're the best mistake that i made (x8)\",\n", + " 'cut down by your knife',\n", + " 'i found a garden after life',\n", + " 'cut down by your knife',\n", + " 'i found a garden',\n", + " 'cut down by your knife',\n", + " 'i found a garden after life',\n", + " 'it’s not enough for me',\n", + " 'it’s not enough for me to die',\n", + " 'don’t look back, it’s alright',\n", + " 'coming up roses, yeah',\n", + " 'take my hand, you’ll be fine',\n", + " 'coming up roses',\n", + " 'don’t look back, sweet darlin’',\n", + " 'chasing down doses, yeah',\n", + " 'shadows fall on yesterday',\n", + " 'coming up roses',\n", + " 'cut down by your knife',\n", + " 'i found a god by your bedside',\n", + " 'kept my eyes on the divine',\n", + " 'got a better place to hide',\n", + " 'we’ll fly on wings of precious things',\n", + " 'that shine like diamond rings',\n", + " 'i can’t find my peace',\n", + " 'can’t wake from dreams',\n", + " 'don’t look back, it’s alright',\n", + " 'coming up roses, yeah',\n", + " 'take my hand, you’ll be fine',\n", + " 'coming up roses',\n", + " 'don’t look back, sweet darlin’',\n", + " 'chasing down doses, yeah',\n", + " 'shadows fall on yesterday',\n", + " 'coming up roses',\n", + " 'don’t look back, it’s alright',\n", + " 'coming up roses, yeah',\n", + " 'take my hand, you’ll be fine',\n", + " 'everybody’s broken',\n", + " 'don’t look back, sweet darlin’',\n", + " 'felling psychosis, yeah',\n", + " 'shadows fall',\n", + " 'coming up roses',\n", + " 'cut down by your knife',\n", + " 'i found a garden after life',\n", + " 'cut down by your knife',\n", + " 'i found a garden',\n", + " 'everyone lying around me',\n", + " 'heads around, my feet leaving their bodies',\n", + " 'fast asleep',\n", + " 'search hard and you might find me',\n", + " \"we're there when we're needed\",\n", + " \"i'm so far gone it won't be easy\",\n", + " \"i'm breaking inside\",\n", + " 'a centralwing surrounded by the sea',\n", + " 'shrivelling in the heat, there for all to see',\n", + " 'fast asleep',\n", + " 'search hard and you might find me',\n", + " \"we're there when we're needed\",\n", + " \"i'm so far gone it won't be easy\",\n", + " \"i'm breaking inside\",\n", + " \"it's getting\",\n", + " \"it's getting old\",\n", + " 'pour some colour into this hole',\n", + " 'search hard and you might find me',\n", + " \"we're there when we're needed\",\n", + " \"i'm so far gone it won't be easy\",\n", + " \"i'm breaking inside\",\n", + " 'whoa, yeah, yeah, yeah, yeah, yeah',\n", + " 'yeah, yeah',\n", + " \"honey, i can tell what you're lookin' for\",\n", + " \"but can't you see it's getting late?\",\n", + " 'if you want, we could go to my place',\n", + " \"where we could rock 'n roll all night\",\n", + " \"you say you're looking for material things\",\n", + " \"don't you know what you're missin'?\",\n", + " \"i don't have money, but believe me, babe\",\n", + " \"i could make millions with my kissin'\",\n", + " \"hey, babe, i'll never give you diamonds\",\n", + " \"i'll never take you out\",\n", + " 'hey, babe, i sure know how to please you',\n", + " \"i'll make you scream and shout\",\n", + " 'i never had a home (never had a home)',\n", + " 'always out of money (always out of money)',\n", + " 'never had a car',\n", + " \"but i've got atomic sex\",\n", + " 'i never had a home (never had a home)',\n", + " 'always out of money (always out of money)',\n", + " 'never had a car',\n", + " \"but i've got atomic sex appeal\",\n", + " 'goddamn, looking good tonight',\n", + " \"because you're wearing next to nothin'\",\n", + " \"i don't know how to handle myself\",\n", + " \"'cause my attraction keeps on growin'\",\n", + " 'come on, baby, feel that bulge',\n", + " 'you call love and make me shiver',\n", + " 'oh, honey, forget about the money',\n", + " 'what i got goes so much deeper',\n", + " 'hey, babe, i might not have a million dollars',\n", + " \"don't have the cash to pay your bills\",\n", + " \"but hey, babe, i got one thing that you'll die for\",\n", + " \"i'll show you just how good it feels\",\n", + " 'i never had a home (never had a home)',\n", + " 'always out of money (always out of money)',\n", + " 'never had a car',\n", + " \"but i've got atomic sex\",\n", + " 'i never had a home (never had a home)',\n", + " 'always out of money (always out of money)',\n", + " 'never had a car',\n", + " \"but i've got atomic sex appeal\",\n", + " 'all right',\n", + " 'do it',\n", + " 'do it now',\n", + " 'i never had a home (never had a home)',\n", + " 'always out of money (always out of money)',\n", + " 'never had a car',\n", + " \"but i've got atomic sex\",\n", + " 'i never had a home (never had a home)',\n", + " 'always out of money (always out of money)',\n", + " 'never had a car',\n", + " \"but i've got atomic sex\",\n", + " 'i never had a home (never had a home)',\n", + " 'always out of money (always out of money)',\n", + " 'never had a car',\n", + " 'i never had a home (never had a home)',\n", + " 'always out of money (always out of money)',\n", + " 'never had a car',\n", + " \"but i've got atomic sex appeal\",\n", + " 'mercury is rising still',\n", + " 'turn the fan on high',\n", + " \"i won't step on my own shadow\",\n", + " 'no-one wants to cry',\n", + " 'someone put a pox on me',\n", + " \"i'll spit in their eyes\",\n", + " 'summer turns to high',\n", + " 'with my bedsheet cape and sandals',\n", + " 'circle citronella candles',\n", + " \"summer's here the light is raising hopes and dragonflies\",\n", + " 'if those hopes are overshadowed by cotton-candy, caramel-apple',\n", + " 'summer turns to high',\n", + " 'summer turns to high',\n", + " 'summer turns to high',\n", + " 'summer high',\n", + " 'after wine and nectarines the fireflies in time',\n", + " 'move like syrup through the evening with a sweet resign',\n", + " \"i won't pine for what could have been\",\n", + " \"i'm preoccupied\",\n", + " 'summer turns to high',\n", + " 'summer turns to high',\n", + " 'summer turns to high',\n", + " 'summer high',\n", + " 'spare the bullshit of your saviors love for me, take thy words and indulge in his misery',\n", + " \"finding out that you're just a lamb of rot, no one cares in this world of god forgot\",\n", + " 'his belief in us long been said and gone, in our age where there is no fear of god',\n", + " 'i forsake you and i hate you holy one give us life just to take it when were done',\n", + " 'behead you with the bible, the book of god and failing son',\n", + " 'there is no resurrection for god has left us to satan',\n", + " 'reach out in desperation receive his empty words of love',\n", + " 'revel in mans creation; the light of god has turned to shit',\n", + " \"mad at god for the things he's done to me, for this life of regrets and his agony\",\n", + " 'in his name i do blame and wish his death, all my life has been pain and nothing else',\n", + " 'curse you god for the life you left me with, everyday is a fight to want to live',\n", + " 'cross of christ i despise and hate the lord, mad at god for the world he has ignored',\n", + " 'my life is not religion, salvation or his bastard son',\n", + " 'annihilate the bible; remove it from this world at once',\n", + " 'in total desecration, the house of god has been destroyed',\n", + " 'at last the truth will triumph, free will and blasphamation',\n", + " 'i hate you lord, forgot i exist, resent your ways that will not be forgived',\n", + " 'waller in hatred i blame you for all, slashing and stabbing your christians i maul',\n", + " 'mad at god revenge in my heart wanting you dead will never depart',\n", + " 'when i was born, marked with your cross, only to suffer and deal with my loss',\n", + " 'dead in my thoughts prey to myself, not to show mercy for nobody else',\n", + " 'i am for me, need not from god, my heart is stone and will never be loved',\n", + " 'mad at god and mad at you, believing in something that cannot be true',\n", + " 'think for yourself, free from his lies, trample the cross and smash jesus christ',\n", + " 'die!!!!!!!!!!!',\n", + " 'mad at god!!!!! mad at god!!!!!mad at god!!!!!!mad at god!!!!!!',\n", + " 'my life is not religion, salvation or his bastard son',\n", + " 'annihilate the bible; remove it from this worldat once',\n", + " 'in total desecration, the house of god has been destroyed',\n", + " 'at last the truth will triumphed, free will and blasphamation one',\n", + " 'oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi',\n", + " 'see me ride out of the sunset',\n", + " 'on your colored tv screen',\n", + " 'out for all that i can get',\n", + " 'if you know what i mean',\n", + " 'women to the left of me',\n", + " 'women to the right',\n", + " \"ain't got no gun\",\n", + " 'got no knife',\n", + " \"don't you start no fight\",\n", + " \"cos i'm\",\n", + " 't.n.t',\n", + " \"i'm dynamite\",\n", + " 't.n.t',\n", + " \"and i'll win the fight\",\n", + " 't.n.t',\n", + " \"i'm a power-load\",\n", + " 't.n.t',\n", + " 'watch me explode',\n", + " \"i'm dirty, mean and mighty unclean\",\n", + " \"i'm a wanted man\",\n", + " 'public enemy number one',\n", + " 'understand',\n", + " 'so lock up your daughter',\n", + " 'and lock up your wife',\n", + " 'lock up your back door',\n", + " 'and run for your life',\n", + " 'the man is back in town',\n", + " \"so don't you mess with around\",\n", + " 't.n.t. oi oi oi',\n", + " 't.n.t. oi oi oi',\n", + " 't.n.t. oi oi oi',\n", + " 't.n.t. oi oi oi',\n", + " 't.n.t',\n", + " \"i'm dynamite (oi oi oi)\",\n", + " 't.n.t',\n", + " \"and i'll win the fight (oi oi oi)\",\n", + " 't.n.t',\n", + " \"i'm a power-load (oi oi oi)\",\n", + " 't.n.t',\n", + " 'watch me explode',\n", + " 'who is it you want to be?',\n", + " 'where is it you need to be?',\n", + " 'you are not here, i’m alone',\n", + " 'you know that you left',\n", + " 'it’s really sad',\n", + " 'you know it was wrong',\n", + " 'at least admit that',\n", + " 'i simply can’t stop questioning',\n", + " 'why you left here oh, so suddenly',\n", + " 'but who am i to question things?',\n", + " 'you say i’m merely a boy',\n", + " 'i say you’re half a man',\n", + " 'you’re not a man',\n", + " 'you know i am',\n", + " 'you are not here, i’m alone',\n", + " 'you know that you left',\n", + " 'it’s really sad',\n", + " 'you know it was wrong',\n", + " 'at least admit that',\n", + " 'you are not me, i’m not you',\n", + " 'not everything faced can be changed',\n", + " 'but nothing can change until you face this',\n", + " 'wait',\n", + " 'don’t turn away',\n", + " 'just stay',\n", + " 'stay',\n", + " 'wait',\n", + " 'don’t turn away',\n", + " 'why can’t you stay?',\n", + " 'stay',\n", + " 'why does it pain you to stay?',\n", + " 'why does it pain you to stay?',\n", + " 'you are not here, i’m alone',\n", + " 'you know that you left',\n", + " 'it’s really sad',\n", + " 'you know it was wrong',\n", + " 'at least admit that',\n", + " 'you are not me, i’m not you',\n", + " 'not everything faced can be changed',\n", + " 'but nothing can change until it’s faced',\n", + " 'the spark in your eye sets my, soul on fire',\n", + " 'your voice is like a angel above',\n", + " 'the touch of your hand woman drives me insane',\n", + " 'but baby, i wants to be loved',\n", + " \"i'm crazy about every little, thing you do\",\n", + " 'i even cherish your hug',\n", + " \"your kisses so sweet, honey, they can't be beat\",\n", + " 'but baby i wants to be loved',\n", + " 'well, well, well',\n", + " 'every time i ask you for a date',\n", + " \"you don't come at all or you awful late\",\n", + " 'i ask you to dance a little spin',\n", + " 'you said wait a minute daddy, here come my friend',\n", + " 'i love the way you walk when you pass me by',\n", + " 'even when you trying to snub',\n", + " 'the touch of your hand, honey, drives me insane',\n", + " 'but baby i wants to be loved',\n", + " 'yeah',\n", + " 'yeah',\n", + " 'calm down, c-c-calm down',\n", + " 'some dippers in the sky, acacias in the ground',\n", + " 'love loud, l-l-love loud',\n", + " 'all the bad blood bleed out, bleed out, bleed out',\n", + " \"we're spinning 'round and 'round\",\n", + " \"around and 'round, 'round and 'round\",\n", + " 'around the sun we go, getting too close',\n", + " \"i hope we don't spin out of control\",\n", + " 'peace signs',\n", + " \"we're throwing at the dark times\",\n", + " 'peace signs',\n", + " 'to counteract the bad vibes',\n", + " 'ever gaze deep into my neon psyche?',\n", + " 'yellow and black a certain fuchsia kind of lime green',\n", + " 'the push the pull and just how quick the change',\n", + " 'from a two finger symbol to one',\n", + " \"we're spinning 'round and 'round\",\n", + " \"around and 'round, 'round and 'round\",\n", + " 'around the sun we go, getting too close',\n", + " \"i hope we don't spin out of control\",\n", + " 'peace signs',\n", + " \"we're throwing at the dark times\",\n", + " 'peace signs',\n", + " 'to counteract the bad vibes',\n", + " 'peace signs',\n", + " \"we're throwing as we pass by\",\n", + " 'peace signs',\n", + " 'live in the back of my mind',\n", + " 'sound waves',\n", + " 'scent of rain',\n", + " 'the feeling that it makes, light cutting the grey',\n", + " 'a melt your heart melancholy melody, yeah',\n", + " 'peace signs',\n", + " \"we're throwing at the dark times\",\n", + " 'peace signs',\n", + " 'to counteract the bad vibes',\n", + " 'peace signs',\n", + " \"we're throwing as we pass by\",\n", + " 'peace signs',\n", + " 'live in the back of my mind',\n", + " 'peace signs',\n", + " \"it's a white door, that's never locked\",\n", + " \"so i'm never stuck outside\",\n", + " 'we came in after msoe jocks',\n", + " \"it's a hardwood floor that used to look nice\",\n", + " 'we left our lives on newhall and locust',\n", + " 'we moved out just to be more productive',\n", + " \"but that's the thing cuz now there's spray paint on the wall\",\n", + " 'and beer on the ceiling',\n", + " 'i graduated from the green line',\n", + " 'i take the 15 now at least most of the time',\n", + " \"this is just where i'm at\",\n", + " 'i spent the whole year in transit',\n", + " 'so with the new year',\n", + " \"i'll find the right track\",\n", + " \"i'll shed the bad parts\",\n", + " \"it wasn't always like that\",\n", + " \"i need to get a better grip on where i'm going\",\n", + " \"cuz it's a brave new world on holton\",\n", + " \"i'll get the dishes done\",\n", + " 'find some time to run',\n", + " 'anything to get me out of this rut',\n", + " 'cuz when the snow melts',\n", + " \"there's gonna be a ton of cigarette butts to clean up\",\n", + " 'i graduated from the green line',\n", + " 'i spend days in the van',\n", + " 'but not enough of the time',\n", + " \"this is just where i'm at\",\n", + " \"i'll spend this whole year in traffic\",\n", + " \"i'm on this seven hour driving shift\",\n", + " \"i'll pump the brakes on the way i live\",\n", + " \"cuz i'm afraid that if i don't work hard now\",\n", + " \"i'll never figure it out\",\n", + " 'no',\n", + " 'so here i am in tennessee traffic',\n", + " 'i traded up from the milwaukee transit',\n", + " 'i finally feel like i’m where i’m supposed to be',\n", + " 'i travelled with him in uncontrolled dimensions',\n", + " 'i knew the forbidden plateau of length',\n", + " 'kuntath the freezing desert',\n", + " 'beyond the gate of silver key',\n", + " 'i arrived to kythal near to arcturo',\n", + " 'up to mnar and the lake of hall',\n", + " 'up to ky-yian and the mythical karkassa',\n", + " \"up to yantith and y'xa-nulei\",\n", + " 'near to insmuth',\n", + " 'inside the eye of algond',\n", + " 'i saw from distance',\n", + " 'down the zodiac',\n", + " 'inside the secret eye',\n", + " 'the star of famelot',\n", + " 'touch the top of down of tree',\n", + " \"it's late and the tv is glowing\",\n", + " \"you're watching without even knowing\",\n", + " 'those people are having good feelings',\n", + " 'those colors all look so appealing',\n", + " 'wishing the places were traded, after the picture is faded',\n", + " 'you like to watch beavis and butt-head',\n", + " \"it seems there's just never enough said\",\n", + " \"you're staying inside, and you're basking in the light\",\n", + " \"there's dust everywhere, irridescent in your hair\",\n", + " 'wishing the places were traded, after the picture is faded',\n", + " 'and if the tv is busted, can anyone else be trusted?',\n", + " 'of all these memories, which one of them is yours?',\n", + " \"and is it them or me? wonder you're not sure\",\n", + " \"you'd like to go out, but they say it's freaky out\",\n", + " \"you've been everywhere, and you've never left your chair\",\n", + " 'wishing the places were traded, after the picture is faded',\n", + " 'and if the tv were busted, can anyone else be trusted?',\n", + " 'i went to an all-night party',\n", + " 'i stayed out half past 5',\n", + " \"don’t know why i ain't sleepin’\",\n", + " 'i stay blue all the time',\n", + " 'when i’m happy, when i’m laughin’',\n", + " 'even when gotta worried mind',\n", + " 'even when i’m with my baby',\n", + " 'i stay blue all the time',\n", + " 'left my home late september',\n", + " 'be somewhere never been before',\n", + " 'i know i got to go farther',\n", + " 'cuz i stay blue everywhere i go',\n", + " 'i may be used and mistreated',\n", + " 'someday i’ll have my time',\n", + " 'i’ve always had this feeling',\n", + " 'i stay blue all the time',\n", + " 'the hall was dark',\n", + " 'no one would ever know',\n", + " 'late afternoon, the plot unwinds',\n", + " 'the trigger pulled, another life let go',\n", + " 'the victim just a boy of nine',\n", + " 'children close the door and hide away',\n", + " 'building the walls that hide away the pain',\n", + " 'when their tears are dried',\n", + " \"it's cold outside\",\n", + " \"there's a place she goes\",\n", + " 'to pull her trick for a spot of wine',\n", + " \"and for a price she'll keep him warm\",\n", + " \"she knows she'll have to show his friends\",\n", + " 'a real good time',\n", + " 'children close the door and hide away',\n", + " 'building the walls that hide away the pain',\n", + " 'when their tears are dried',\n", + " 'can you tell me will they survive?',\n", + " '(our future is so unclear)',\n", + " 'all in our lives',\n", + " \"(where do we stand when there's no peace at hand?)\",\n", + " 'can you tell me will they survive?',\n", + " '(all of this in our lives)',\n", + " 'all in our lives',\n", + " 'there is a light around you',\n", + " 'it is your life',\n", + " \"i feel empty and alone. i’ve been floating for so long. i’ve never fought against the wind that has brought me down. i am stagnant in hell. i have no reason to live. except for what i am writing down, what i’m yelling out. i ended up being lost in vain. all the efforts i have put to feel better with myself have given nothing. how can i pretend to be someone when i'm seeking for approval? i tried to stand up, i tried my hardest but i may not be good enough to carry on. i know that i must find the strength in myself to stop trying to please everyone. what matters to me will never expire. i’ll quit being passive and meaningless. i have been floating for so long. i've become weakness. i'm lost after all those years. i'm just a lost potential. i am dying to change this fucking miserable situation i’m in beginning with opening my eyes and stop acting like everything’s fine. i know that i must find the strength in myself to stop trying to please and be accepted by everyone surrounding me. i have always been i will ever be. i’m just a lost potential. this shell is broken. please show me how to completely disappear please do me a favour and never ask me how i feel again. watch me fade away. i have always been i will ever be. i have become weakness, i’m lost after all those years. what matters to me will never expire, but i’m just a lost potential\",\n", + " 'books and covers and part time lovers',\n", + " 'spinning in rooms in cities of rust',\n", + " \"i'm stranded, struck out on this line\",\n", + " \"there's smoke and fire and steel and wire\",\n", + " 'and glass and spire and dust',\n", + " 'one to the floor at dawn with lips tied and drawn',\n", + " 'sleepless nights spent, with angels heaven sent',\n", + " 'stay with me, lay with me, lay down by my side',\n", + " 'stay with me, lay with me, take me deep inside',\n", + " 'lay with me, stay with me, lay with me',\n", + " 'stay, with me',\n", + " 'stay, with me',\n", + " 'all of us lying there in the dreams',\n", + " 'speak of days and another place',\n", + " 'i wander as the gypsy under a beckoning moon',\n", + " 'speak of time, and another face',\n", + " 'they would in languid cry a fleeting furtive sigh',\n", + " 'from the cradle to the grave love to desire and crave',\n", + " 'stay with me, lay with me, lay down by my side',\n", + " 'stay with me, lay with me, take me deep inside',\n", + " 'lay with me, stay with me, lay with me',\n", + " 'stay, with me',\n", + " 'stay, with me',\n", + " \"i'll laugh for you, and i'll dance for you\",\n", + " \"but don't ask me to she'd any tears when i have to go\",\n", + " 'you are a joy and a pleasure to love and to hold',\n", + " 'your promises, are as pure as the driven snow',\n", + " 'passing shapes in the night the touch distraut and light',\n", + " 'as you brightly shine, your love tonight is mine',\n", + " 'stay with me, lay with me, lay down by my side',\n", + " 'stay with me, lay with me, take me deep inside',\n", + " 'lay with me, stay with me, lay with me',\n", + " 'stay, with me',\n", + " 'stay, with me',\n", + " 'when we make up, in your makeup',\n", + " \"i start to laugh, i'm mr. natural\",\n", + " 'i fluff your tv at night',\n", + " 'you got a hard, hard bed',\n", + " 'i say their names, say their names',\n", + " 'waste the alphabet',\n", + " '9 to 5, look in the mirror',\n", + " 'i can see china from here',\n", + " 'i say their names, say their names',\n", + " 'and they disappear',\n", + " 'oh natalie, we sparkle',\n", + " 'but you want to take it gradually',\n", + " \"i've been thinking about the way to hell\",\n", + " 'and this carpet under me',\n", + " 'and this remote under me',\n", + " 'oh natalie, we party',\n", + " 'and try, try, try gradually',\n", + " \"i've been thinking about my way to hell\",\n", + " 'and this remote under me',\n", + " 'and this lipstick under me',\n", + " \"you're keeping in step\",\n", + " 'in the line',\n", + " 'got your chin held high and you feel just fine',\n", + " 'cause you do',\n", + " \"what you're told\",\n", + " \"but inside your heart it is black and it's hollow and it's cold\",\n", + " 'just how deep do you believe?',\n", + " 'will you bite the hand that feeds?',\n", + " 'will you chew until it bleeds?',\n", + " 'can you get up off your knees?',\n", + " 'are you brave enough to see?',\n", + " 'do you want to change it?',\n", + " \"what if this whole crusade's\",\n", + " 'a charade',\n", + " \"and behind it all there's a price to be paid\",\n", + " 'for the blood',\n", + " 'which we dine',\n", + " 'justified in the name of the holy and the divine',\n", + " 'just how deep do you believe?',\n", + " 'will you bite the hand that feeds?',\n", + " 'will you chew until it bleeds?',\n", + " 'can you get up off your knees?',\n", + " 'are you brave enough to see?',\n", + " 'do you wanna change it?',\n", + " 'so naïve',\n", + " 'i keep holding on to what i want to believe',\n", + " 'i can see',\n", + " 'but i keep holding on and on and on and on',\n", + " 'will you bite the hand that feeds you?',\n", + " 'will you stay down on your knees?',\n", + " 'will you bite the hand that feeds you?',\n", + " 'will you stay down on your knees?',\n", + " 'will you bite the hand that feeds you?',\n", + " 'will you stay down on your knees?',\n", + " 'will you bite the hand that feeds you?',\n", + " 'will you stay down on your knees?',\n", + " 'will you bite the hand that feeds you?',\n", + " 'will you stay down on your knees?',\n", + " 'will you bite the hand that feeds you?',\n", + " 'will you stay down on your knees?',\n", + " 'will you bite the hand that feeds you?',\n", + " 'will you stay down on your knees?',\n", + " 'will you bite the hand that feeds you?',\n", + " 'will you stay down on your knees?',\n", + " 'you can call it a decision',\n", + " \"i say it's how we're made\",\n", + " \"there's no point in shouting from your island\",\n", + " 'proclaiming only jesus saves',\n", + " 'there will always be suffering',\n", + " 'and there will always be pain',\n", + " \"but because of it there'll always be love\",\n", + " 'and love, we know, it will remain',\n", + " 'everybody gets lonely',\n", + " \"feel like it's all too much\",\n", + " 'reaching out for some connection',\n", + " 'or maybe just their own reflection',\n", + " 'not everybody finds it',\n", + " 'not like the two of us',\n", + " 'sometimes all anybody needs',\n", + " 'is a human touch',\n", + " 'everybody wants a holiday',\n", + " 'everybody wants to feel the sun',\n", + " 'get outside and run around',\n", + " \"live like they're forever young\",\n", + " 'everybody wants to be beautiful',\n", + " 'and live life their own way',\n", + " 'no one ever wants to let it go',\n", + " 'no matter what they do or say',\n", + " 'everybody gets lonely',\n", + " \"feel like it's all too much\",\n", + " 'reaching out for some connection',\n", + " 'or maybe just their own reflection',\n", + " 'not everybody finds it',\n", + " 'not like the two of us',\n", + " 'sometimes all anybody needs',\n", + " 'is a human touch',\n", + " 'sometimes all anybody needs',\n", + " 'is a human touch',\n", + " 'everybody gets lonely',\n", + " \"feel like it's all too much\",\n", + " 'reaching out for some connection',\n", + " 'or maybe just their own reflection',\n", + " 'not everybody finds it',\n", + " 'not like the two of us',\n", + " 'sometimes all anybody needs',\n", + " 'is a human touch',\n", + " 'sometimes all anybody needs',\n", + " 'is a human touch',\n", + " \"they've come to bring us gifts\",\n", + " \"they've come to make us whole\",\n", + " \"they've come to bring us god\",\n", + " 'their gift of heaven',\n", + " \"they've come to make us civil\",\n", + " 'their gifts as ransom',\n", + " 'their god comes with a cost',\n", + " 'we must give up all',\n", + " 'for prayers in a foreign tongue',\n", + " 'to a foreign throne',\n", + " 'erase our traditions',\n", + " 'erase our way of being',\n", + " \"erase our elders' teachings\",\n", + " 'erase, replace these ways',\n", + " 'generations of wisdom',\n", + " 'in exchange for ransom',\n", + " 'your god comes with a cost',\n", + " 'a cost to us all',\n", + " 'prayers in a foreign tongue to',\n", + " 'a god unknown',\n", + " 'from demons, you will never see',\n", + " 'prayers that will save your soul',\n", + " 'blessed are the children',\n", + " 'we have come to save them all',\n", + " 'we came to cure disease',\n", + " 'that has never made you ill',\n", + " 'we came to make you clean',\n", + " 'to protect you from yourself',\n", + " \"they've come to bring us hope\",\n", + " \"they've come to save our souls\",\n", + " \"they've come to make us holy\",\n", + " \"they've come to give us heaven\",\n", + " \"they've come to make us civil\",\n", + " 'just like them',\n", + " 'their god comes with a cost',\n", + " 'and we must give up',\n", + " 'all of our traditions',\n", + " 'erase our way of being',\n", + " \"erase our elders' teachings\",\n", + " 'erase, replace these ways',\n", + " 'generations of wisdom',\n", + " 'they have taken away',\n", + " 'our culture has been erased',\n", + " 'bring every child they blessed',\n", + " \"with the needle's mark\",\n", + " 'chop off every little arm',\n", + " 'let the children bleed',\n", + " 'the thickest smog withers beside me',\n", + " 'the naked flame that warms the face',\n", + " 'draw in the wildfire of the forest deep within',\n", + " 'tread carefully or lose your way',\n", + " \"you gotta' fight to keep the demon in\",\n", + " 'far too long taunting my soul',\n", + " 'forever stumble down the endless road',\n", + " 'struggling to regain control',\n", + " 'consume my soul',\n", + " 'turn my body to stone',\n", + " 'the blackened path was paved before me',\n", + " 'two crooked eyes follow me alone',\n", + " 'the sound of footsteps drawing ever closer',\n", + " 'pallid ghosts turn my body to stone',\n", + " \"you gotta' fight to keep the demon in\",\n", + " 'far too long taunting my soul',\n", + " 'forever stumble down the endless road',\n", + " 'struggling to regain control',\n", + " ...]},\n", + " 'data': ['the lengths i go to hide my smile',\n", + " 'more than just the color on her lips',\n", + " 'i give an inch then take a mile',\n", + " \"it's the distance of my favorite trip\",\n", + " 'why should i need to accommodate action?',\n", + " \"when it's never thought out, never old\",\n", + " 'i have my own agenda gaining traction',\n", + " 'one that might just strip me to the bone',\n", + " 'me, we, you, she',\n", + " 'sweet (sweet)',\n", + " 'me, we, you, she',\n", + " 'sweet (sweet)',\n", + " 'my teeth are sharp and armor bristling',\n", + " 'shaking loose, unwarranted concern',\n", + " 'i understand my questions, i am listening',\n", + " \"but it's time to set the world to burn\",\n", + " 'understand, my eyes are focused',\n", + " \"it's what i always planned to do\",\n", + " \"because for once i'm being honest\",\n", + " 'there is nothing left for me to prove',\n", + " 'me, we, you, she',\n", + " 'sweet (sweet)',\n", + " 'me, we, you, she',\n", + " 'sweet (sweet)',\n", + " 'me, we, you, she',\n", + " 'sweet (sweet)',\n", + " 'me, we, you, she',\n", + " 'sweet (sweet, sweet, sweet, sweet)',\n", + " 'time goes by as they feed the fire',\n", + " \"the future now shows us what's to come\",\n", + " 'vermin set in as they spawn the mire',\n", + " 'yet we anguish and more is done',\n", + " 'the infection continues to demoralize',\n", + " 'what is left will someday soon be nothing more',\n", + " 'our water and air slowly deteriorate',\n", + " 'just a mere shadow of what was there before',\n", + " \"we've been overcome\",\n", + " 'helping hand they wield a vice',\n", + " 'degrade our lives to iniquity',\n", + " 'these are taxes hard at work',\n", + " \"so why aren't they helping me?\",\n", + " 'the toxins destroy consume malevolance',\n", + " \"and the politicians still can't compromise\",\n", + " 'future youth are put forth in this vile world',\n", + " 'in our society we still are brutalized',\n", + " \"we've been overcome\",\n", + " 'contamination',\n", + " \"it's our future\",\n", + " 'abomination',\n", + " 'we must rise',\n", + " 'i feel your pain, being stuck in one place',\n", + " 'could never find the strength to move or take that leap of faith',\n", + " 'but i told you once, i’ll tell you twice, gotta play to roll the dice and i',\n", + " 'could show you everything (could show you everything)',\n", + " 'i just can’t tell if you’re dreaming or not',\n", + " 'this might sound crazy in thought',\n", + " 'so level the fear that’s in your heart',\n", + " 'untangle the words that keep us apart',\n", + " 'lemme take you away, away, away, away from here',\n", + " 'but if you could break away, sell your things and change your name',\n", + " \"you'll never leave this place, and take your chances to the grave\",\n", + " \"but if i had to choose, i'd take you to the moon\",\n", + " \"cause you've got cinder blocks for shoes, and i'm just trying to make you move\",\n", + " 'i just can’t tell if you’re dreaming or not',\n", + " 'this might sound crazy in thought',\n", + " 'so level the fear that’s in your heart',\n", + " 'untangle the words that keep us apart',\n", + " 'lemme take you away, away, away, away from here',\n", + " 'lemme take you away, away, away, away from here',\n", + " 'lemme take you away, away, away, away from here',\n", + " 'lemme take you away, away, away, away from here',\n", + " 'i just can’t tell if you’re dreaming or not',\n", + " 'this might sound crazy in thought',\n", + " 'so level the fear that’s in your heart',\n", + " 'untangle the words that keep us apart',\n", + " 'lemme take you away, away, away, away from here',\n", + " \"it's a terrible love and i'm walking with spiders\",\n", + " \"it's a terrible love and i'm walking in\",\n", + " \"it's a terrible love and i'm walking with spiders\",\n", + " \"it's a terrible love and i'm walking in\",\n", + " 'this quiet company',\n", + " 'this quiet company',\n", + " \"it's a terrible love and i'm walking with spiders\",\n", + " \"it's a terrible love and i'm walking in\",\n", + " \"it's a terrible love and i'm walking with spiders\",\n", + " \"it's a terrible love and i'm walking in\",\n", + " 'this quiet company',\n", + " 'this quiet company',\n", + " 'this quiet company',\n", + " \"and i can't fall asleep\",\n", + " 'without a little help',\n", + " 'it takes a while to settle down',\n", + " 'my shivered bones',\n", + " \"until the panic's out\",\n", + " 'it takes an ocean not to break',\n", + " 'it takes an ocean not to break',\n", + " 'it takes an ocean not to break',\n", + " 'it takes an ocean not to break',\n", + " 'company',\n", + " 'this quiet company',\n", + " 'this quiet company',\n", + " \"but i won't follow you\",\n", + " 'into the rabbit hole',\n", + " 'i said i would but then i saw',\n", + " 'your shivered bones',\n", + " \"they didn't want me to\",\n", + " \"it's a terrible love and i'm walking with spiders\",\n", + " \"it's a terrible love and i'm walking in\",\n", + " \"it's a terrible love and i'm walking with spiders\",\n", + " \"it's a terrible love and i'm walking in\",\n", + " 'it takes an ocean not to break',\n", + " 'it takes an ocean not to break',\n", + " 'it takes an ocean not to break',\n", + " 'hear me - the breath of ocean',\n", + " 'see me - the shape of grace',\n", + " \"touch me - but you can't find me\",\n", + " 'feel me - the cold of death',\n", + " 'like a shell on the bottom i lay and decay',\n", + " 'under shimmering stars of your heaven',\n", + " \"i've been waiting too long for this day and\",\n", + " 'i feel it has come to me now...',\n", + " 'if you pass away in the wing fortress',\n", + " 'the time divider, a technical team will be',\n", + " 'at your services, for what that matters',\n", + " \"the mirror shatters, it's harder for me to see\",\n", + " \"if there are any answers here we haven't searched for\",\n", + " 'just type in your code and say a prayer',\n", + " 'how could it be, we were so secure',\n", + " \"cause nothing you've ever planned on\",\n", + " 'ever turned out the way you planned',\n", + " \"what i tried to say this couldn't feel more wrong\",\n", + " \"i can't believe it's happening or lasting this long\",\n", + " 'if we know each other then why should it be so hard',\n", + " 'why should it be so hard to make it stop',\n", + " \"if there are any answers here we haven't searched for\",\n", + " 'just type in your code and say a prayer',\n", + " 'how could it be, we were so secure',\n", + " \"cause nothing you've ever planned on\",\n", + " 'ever turned out the way you planned',\n", + " \"what i tried to say, this isn't real\",\n", + " \"and i feel ashamed that i don't think that i could heal\",\n", + " \"it's a shame that i would pretend\",\n", + " 'before making amends',\n", + " \"it's a shame that i can't\",\n", + " 'but nothing you ever planned on ever turns out',\n", + " \"but nothing you've ever planned on\",\n", + " 'ever turned out the way you planned',\n", + " \"you're still disappointing them\",\n", + " \"you're still disappointing\",\n", + " \"you're still disappointing them\",\n", + " \"if there are any answers here we haven't searched for\",\n", + " 'just type in your code and say a prayer',\n", + " 'how could it be, we were so secure',\n", + " 'nothing you ever planned on ever turned out the way you planned',\n", + " 'you speak of violence and mindless hate',\n", + " 'well, i ask what constitutes our state?',\n", + " 'present to me another fucking way',\n", + " 'or unveil a lack of democracy',\n", + " 'if you take me down',\n", + " \"i won't hide my face\",\n", + " 'tell the whole world',\n", + " \"i'm a disgrace\",\n", + " \"i'm a disgrace\",\n", + " 'we will not be ignored',\n", + " \"we're not violent\",\n", + " 'you wage this war',\n", + " 'peaceful protest is dead',\n", + " 'what did you expect',\n", + " 'what did you',\n", + " 'what did you expect',\n", + " 'what did you expect',\n", + " 'what did you expect',\n", + " 'what did you expect',\n", + " 'y’all can’t let me be alone tonight',\n", + " 'i’m broken down and i’m not gonna be alright',\n", + " 'i need someone to lean on',\n", + " 'and something to glean from my strife',\n", + " 'remember back a few years ago?',\n", + " 'we would line ‘em up but we didn’t have nothin’ to show',\n", + " 'we passed the time',\n", + " 'we was sluggin’ wine or colt',\n", + " 'if you’ve fallen lonely on your cause',\n", + " 'i got the rank and the file here to even the odds',\n", + " 'if johnny’s at the door won’t ya let em in',\n", + " 'i rang him up but i don’t know where to begin',\n", + " 'we need a taste of the action',\n", + " 'we’re at 9th & jackson if you’re in',\n", + " 'the sinning night has set my soul on fire',\n", + " 'as long as we’re out we might as well drink a while',\n", + " 'am i losin’ or winning?',\n", + " 'i just keep on forgetting… meanwhile',\n", + " 'when i’m on the mend it makes the difference to lend',\n", + " 'the fist inside of the glove',\n", + " 'and no matter what they say they can’t take away',\n", + " 'the honesty of our love',\n", + " 'stare into a mirror facade, as you kneel to a porcelain god',\n", + " 'wipe your ass with material things, hell is what everlife will bring',\n", + " 'i will stand on heaven\\'s shore, and hold a sign saying \"fuck the world!\"',\n", + " \"we're all sinners, so they say\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " \"we're all sinners so let us pray\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " 'fill your mouth with my sick hope, as it grows you love to choke',\n", + " 'tears of lust, like pearls will fall, slut, slut, slut, slut, slut, after all',\n", + " 'dress your pigs in robes of black, the pigs just wails when you turn your back',\n", + " \"we're all sinners, so they say\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " \"we're all sinners so let us pray\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " \"we're all sinners on all saint's day\",\n", + " 'let them pray, let them praise, while we hate, while we rage yeah',\n", + " 'read my mind, by the look of my face',\n", + " 'cut out your soul just to spite your faith',\n", + " '(despite your faith, despite your faith)',\n", + " \"you're sick sick sick, 6, 6, 6\",\n", + " \"we're all sinners on all saint's day, we're all sinners now\",\n", + " \"we're all sinners, so they say\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " \"we're all sinners so let us pray\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " \"(we're all sinners on all saint's day)\",\n", + " \"we're all sinners on all saint's day\",\n", + " \"we're all sinners on all saint's day\",\n", + " \"we're all sinners on all saint's day\",\n", + " \"we're all sinners on all saint's day\",\n", + " \"we're all sinners on all saint's day\",\n", + " \"we're all sinners now\",\n", + " 'open up your eyes',\n", + " 'see how life time flies',\n", + " 'open up and let the light back in',\n", + " 'open up your heart',\n", + " 'let the loving start',\n", + " 'open up and let the light back in',\n", + " 'i was thinking of you and me',\n", + " 'making love beneath the tree',\n", + " 'and now i wonder could it be',\n", + " \"thinking 'bout the times we had\",\n", + " 'some were good and some were bad',\n", + " 'guitar fighting the t.v',\n", + " 'i was thinking about you and me',\n", + " 'i was thinking about you and me',\n", + " 'i was thinking of you and me',\n", + " 'i was thinking about you and me',\n", + " 'looking at you just the other night',\n", + " 'dancing in the evening light',\n", + " 'true love conquers all',\n", + " 'old man sitting there',\n", + " \"touch of grey, but he don't care\",\n", + " 'when he hears his children call',\n", + " 'i was thinking about you and me',\n", + " 'i was thinking about you and me',\n", + " 'i was thinking of you and me',\n", + " 'i was thinking about you and me',\n", + " 'open up your eyes',\n", + " 'see how life time flies',\n", + " 'open up and let the light back in',\n", + " 'open up your heart',\n", + " 'let the loving start',\n", + " 'open up and let the light back in',\n", + " \"it's the spring of your time\",\n", + " 'and the time has come',\n", + " 'the open road will seize you',\n", + " \"won't you roll to a stop\",\n", + " \"won't you gaze at the drop\",\n", + " 'and the awful miles before you?',\n", + " 'take care where you step',\n", + " \"don't you know that it stifled\",\n", + " 'the life above you strangle',\n", + " 'stay right if you can',\n", + " 'oh, you poor old man',\n", + " 'you were born to be in battle',\n", + " \"in the summer you'll find\",\n", + " 'that you rolled us aside',\n", + " 'a tangled man-made thicket',\n", + " \"take care you don't lean\",\n", + " 'with your toes in a string',\n", + " 'that sweeps away the river',\n", + " 'survey all you see',\n", + " \"'cause there's still time to leave\",\n", + " 'the prior hand of ramble',\n", + " 'stay right if you can',\n", + " 'oh, you poor old man',\n", + " 'you were born to be in battle',\n", + " 'in the fall of your time',\n", + " \"you're astounded to find\",\n", + " 'so much is now behind you',\n", + " 'with tears of your own',\n", + " \"you'll be scared 'fore you know\",\n", + " 'just walk the dark and',\n", + " 'tell them what i told you',\n", + " 'in days of your youth',\n", + " \"what's well within the travel\",\n", + " 'stay right if you can',\n", + " 'oh, you poor old man',\n", + " 'you were born to be in battle',\n", + " 'in the winter of life',\n", + " \"you'll be asked for your life\",\n", + " 'lay down, all forts surrender',\n", + " 'and all that is you',\n", + " 'that is precious and true',\n", + " \"as your full price, you'll tender\",\n", + " 'and i will look on',\n", + " 'but i long for you, son',\n", + " \"don't\",\n", + " 'stay right if you can',\n", + " 'oh, you poor old man',\n", + " 'you were born to be in battle',\n", + " 'butcher bows',\n", + " 'sparse trails of haunted conquests',\n", + " 'through gales of spotless sunsets boon',\n", + " \"o' gentlemen who suffer bright\",\n", + " \"it's so here we divvy up the blight\",\n", + " 'to speak while irons spark',\n", + " 'mark maids, my spoils are given rot',\n", + " 'take me as i am',\n", + " 'take me as i am',\n", + " 'take me as i am',\n", + " 'fearing aught',\n", + " 'upswept to unlaced bodice',\n", + " 'to furies, i gave notice sight',\n", + " 'filled dragoons full of graves',\n", + " \"with pretty-8's we cried out of grace\",\n", + " 'till past was all but kept',\n", + " \"'tis strange, the felled and their effects\",\n", + " 'given blood, yet nothing of the best',\n", + " 'mistook the misdeeds of the blessed',\n", + " 'take me as i am',\n", + " 'take me as i am',\n", + " 'take me as i am',\n", + " \"through these city streets you've been wandering\",\n", + " 'last man to be alive',\n", + " \"with a prophet's state of mind\",\n", + " 'and your hands are on fire',\n", + " 'a million faces waste in the dark slow',\n", + " 'chasing stars but you',\n", + " \"you'll be out this place\",\n", + " 'you believers sleep a lonely night',\n", + " 'no banners, just an insight',\n", + " 'you walk around with no eye for the common',\n", + " 'you feel correct to the alleys you watch',\n", + " 'arrested in their ways with no case to complain',\n", + " \"but did you know you're just another number waiting in assembly?\",\n", + " \"through the summertime you've been weathering\",\n", + " 'the questions that arise',\n", + " 'but you turn your head',\n", + " 'instead of facing the fire',\n", + " 'no surprise that the others arent listening',\n", + " 'your screams echo in the quiet',\n", + " 'must get out this place',\n", + " 'for believers sleep a lonely night',\n", + " 'you run for a forest',\n", + " 'where nothing, nobody to despair',\n", + " \"your opinions they're gunning\",\n", + " \"the bullets pierce the armor of skin you've thickened\",\n", + " 'your face explodes with the rage of a hundred',\n", + " 'for these men will never know the meaning behind your living',\n", + " \"you know they've thrown their pride\",\n", + " 'and hide behind opinions',\n", + " \"but did you know you're just another number waiting to be called in assembly?\",\n", + " 'when i was a boy my momma used to say',\n", + " 'son don’t you ever let em see you run away',\n", + " 'well i tried to obey the words she said that day',\n", + " 'but now i’m rotten and i just can’t get away',\n", + " 'my father drifted away, my mother’s dead and gone',\n", + " 'my sister died of shame, my brother never came home',\n", + " 'i hear the voice of an angel singing my last song',\n", + " 'lord i never thought i would live this long',\n", + " 'i never thought i would live this long',\n", + " 'and i never thought i’d be this strong',\n", + " 'i been running so long i can’t run no more',\n", + " 'lord i been running since the day that i was born',\n", + " 'the strip mall takes the land and leaves it bare',\n", + " 'and all of the trees that were there',\n", + " 'get shipped off to factories where',\n", + " \"they're turned into paper or chairs\",\n", + " 'i sit here at my wooden desk',\n", + " \"makin' up non-sentences\",\n", + " \"tryin' to do some justice\",\n", + " 'to the trees that have died in the path of my pen',\n", + " \"but love songs aren't easy to write\",\n", + " 'this one kept me up all night',\n", + " \"so did you, so i guess it's alright\",\n", + " 'at least it seems fitting',\n", + " \"i've been wishing on every\",\n", + " \"star that i've seen since the day that we met\",\n", + " 'maybe somewhere down the road',\n", + " 'we can be three things: happy, together and old',\n", + " 'i know that our chances are slim',\n", + " 'hearts are so easily broken',\n", + " 'and it might be one in a million',\n", + " 'but so are you',\n", + " 'so i think that we should',\n", + " 'add up all of our failures',\n", + " \"see if it's an even number\",\n", + " \"if it is, then let's just consider\",\n", + " 'all those as practice',\n", + " 'make this the first',\n", + " 'the seconds turn into hours',\n", + " 'the hours will turn into years',\n", + " 'and my heart just beats louder and louder',\n", + " 'each time that you kiss me',\n", + " \"i've been wishing on every\",\n", + " \"star that i've seen since the day that we met\",\n", + " 'maybe somewhere down the road',\n", + " 'we can be three things: happy, together and old',\n", + " 'the water below us was dark',\n", + " 'at the foot of the rock quarry wall',\n", + " 'we were surrounded by stars',\n", + " 'as we watched for the next one to fall',\n", + " 'then with a smile on your face',\n", + " 'you caught me completely off guard',\n", + " 'i felt my heart skip a beat',\n", + " 'i was scared it might not beat at all',\n", + " 'but as it turns out',\n", + " 'it was just switching from a march to a waltz',\n", + " \"come with me, i'll pay for you, i'll pay for you all day\",\n", + " \"drink for free, i'll pay for you, i'll pay for you all day\",\n", + " \"come with me, i'll pay for you, i'll pay for you all day\",\n", + " \"drink for free, i'll wait for you,\",\n", + " 'cast the spells',\n", + " 'abomination',\n", + " 'evil rites',\n", + " 'and celebration',\n", + " 'on this night',\n", + " 'invoke the power',\n", + " 'gather around',\n", + " 'a funeral pyre',\n", + " 'skies are filled',\n", + " 'with spirits and plague',\n", + " 'in chasms beneath they eternally dwell',\n", + " 'sent down in fire now burning in hell',\n", + " 'tormented screams marked by a spell',\n", + " 'now fall into the pits, down in the deep',\n", + " 'die by the spells of the dead',\n", + " 'scream, now it’s too late',\n", + " 'suffer your fate',\n", + " 'die by the spells of the dead',\n", + " 'burning sinner',\n", + " 'keep on burning',\n", + " 'skies are filled',\n", + " 'with spirits and plague',\n", + " 'in chasms beneath they eternally dwell',\n", + " 'sent down in fire now burning in hell',\n", + " 'tormented screams marked by a spell',\n", + " 'now fall into the pits, down in the deep',\n", + " 'die by the spells of the dead',\n", + " 'scream, now it’s too late',\n", + " 'suffer your fate',\n", + " 'and die by the spells of the dead',\n", + " 'spells of the dead – on this wicked night',\n", + " 'spells of the dead',\n", + " 'spells of the dead – take away your life',\n", + " 'spells of the dead',\n", + " 'alright!',\n", + " 'cast the spells',\n", + " 'abomination',\n", + " 'evil rites',\n", + " 'and celebration',\n", + " 'on this night',\n", + " 'invoke the power',\n", + " 'gather around',\n", + " 'a funeral pyre',\n", + " 'now fall into the pits, down in the deep',\n", + " 'die by the spells of the dead',\n", + " 'scream, now it’s too late',\n", + " 'suffer your fate',\n", + " 'die by the spells of the dead',\n", + " 'you say it’s our fault that the kids aren’t learning',\n", + " 'you subtract encouragement to make us feel worthless',\n", + " 'you steal our supplies and treat us like criminals',\n", + " 'while pleading for band-aids and glue',\n", + " 'yet all you give us are higher demands',\n", + " 'and daily trainings are just reprimands',\n", + " 'modern education is a sweatshop',\n", + " 'throw the wrenches in the cogs to make this machine stop',\n", + " 'i won’t teach by your standards',\n", + " 'so i’m not your kind of teacher',\n", + " 'fuck this abuse',\n", + " 'to comply, i refuse',\n", + " 'working for free ain’t working for me',\n", + " 'for someone who spits on and on about accountability',\n", + " 'i see you owning up to nothing',\n", + " 'exploit children who need help most for your own avail',\n", + " 'while you dissolve the services that should be entailed',\n", + " 'teaching is not ink on paper',\n", + " 'learning is not submissive',\n", + " 'half off teachers, defeated and abused',\n", + " 'half off education, tired and used',\n", + " \"i'm gonna write a little letter, gonna mail it to my local dj\",\n", + " \"it's a rockin' little record i want my jockey to play\",\n", + " 'roll over beethoven, gotta hear it again today',\n", + " \"you know my temperature's rising, the jukebox is blowing a fuse\",\n", + " \"my heart's beatin' rhythm and my soul keeps a-singin' the blues\",\n", + " 'roll over beethoven, tell tchaikovsky the news',\n", + " \"i got the rockin' pneumonia, i need a shot of rhythm and blues\",\n", + " \"i got the rockin' arthritis sittin' down at the rhythm reviews\",\n", + " 'roll over beethoven, tell tchaikovsky the news, wah!',\n", + " 'well, if you feel like you like it, go get your lover',\n", + " 'then you reel and rock it, roll it over',\n", + " 'then you move on up just a trifle further',\n", + " 'then reel and rock it, roll it over',\n", + " 'roll over beethoven, tell tchaikovsky the news, wah!',\n", + " \"well, early in the morning i'm giving you the warning\",\n", + " \"don't you step on my blue suede shoes\",\n", + " 'hey diddle-diddle, i will play my fiddle',\n", + " \"ain't got nothing to lose\",\n", + " \"roll over beethoven, we're rockin' in two by two\",\n", + " 'you know she wiggles like a glow worm, spin like a spinning top',\n", + " \"she's got a crazy partner, ought to see them reel and rock\",\n", + " \"long as she's got a dime, the music won't ever stop\",\n", + " 'roll over beethoven, roll over beethoven',\n", + " 'roll over beethoven, roll over beethoven',\n", + " 'roll over beethoven, and dig these rhythm and blues',\n", + " \"i'll be your codependent\",\n", + " \"you're my cute little enabler\",\n", + " \"together we'll make time to kill\",\n", + " 'and save the rest for later',\n", + " 'and i say lather, rinse, repeat',\n", + " \"'cause this is my philosophy\",\n", + " 'i change my mind, my brain is smoking',\n", + " \"can't live without my remote control\",\n", + " 'remote control',\n", + " 'what do you want?',\n", + " \"it's too complicated\",\n", + " 'what do you mean?',\n", + " \"it's too hard to state it\",\n", + " 'what do you do?',\n", + " \"it's not what but whether\",\n", + " 'who do you love?',\n", + " \"i'm in love with leather\",\n", + " 'so call me kid compulsive',\n", + " \"'cause i'm crawling on the concrete\",\n", + " 'and meet me at the laundromat',\n", + " \"that's where i do my laundry\",\n", + " \"'cause you know i can hardly wait\",\n", + " 'danger is my middle name',\n", + " \"there's always something going on\",\n", + " 'until it sort of grinds to a halt',\n", + " 'what do you want?',\n", + " \"i don't know, what is it?\",\n", + " 'what do you need?',\n", + " 'i just need a minute',\n", + " \"what'll it take?\",\n", + " \"it'll take forever\",\n", + " 'who do you love?',\n", + " \"i'm in love with lethargy\",\n", + " \"now sit right back, and you'll hear a tale\",\n", + " 'of all my twisted motives',\n", + " 'of coffee, jolt, and classic coke',\n", + " 'and delicious blue cream sodas',\n", + " 'blue cream soda brings a smile',\n", + " \"and that's what makes it all worthwhile\",\n", + " \"there's something more important somewhere\",\n", + " 'but blue cream soda sure is up there',\n", + " 'what do you want?',\n", + " \"that's for me to know and you to find out\",\n", + " \"and that's where i'm going\",\n", + " \"what'll it take?\",\n", + " \"it'll take forever\",\n", + " 'who do you love?',\n", + " \"i'm in love with leather\",\n", + " 'what do you want?',\n", + " 'what do you mean?',\n", + " \"what'll you do?\",\n", + " \"it's not what but whether\",\n", + " 'who do you love?',\n", + " \"i'm in love with lethargy\",\n", + " \"i got a stiff upper lip because i'm half-dead!\",\n", + " 'the walls of my life are crumbling around me!',\n", + " \"i'm running and i can't hide\",\n", + " 'and i might try fucking suicide!',\n", + " \"so i can't see\",\n", + " \"i try to be straight but it's not me\",\n", + " \"don't touch my body, listen to us\",\n", + " 'no, no, no, no no no',\n", + " \"i'm running, baby\",\n", + " 'get away',\n", + " 'somebody to go to, man',\n", + " 'back then',\n", + " \"walking tall, i won't be long\",\n", + " 'with matching on telephone',\n", + " 'and in my dreams, see the dust',\n", + " 'no, no, no, no no no',\n", + " 'so watch it, woman',\n", + " 'no place to hide',\n", + " 'get a god complex',\n", + " 'suicide!',\n", + " \"i can't breathe!\",\n", + " 'do you, baby',\n", + " 'i will be fine',\n", + " 'suicide',\n", + " \"look, it's time to stop this pain\",\n", + " \", i'm half-insane\",\n", + " \"i've done it now, kill the pain\",\n", + " 'so get back, world',\n", + " 'on my head',\n", + " \"'cept for the donkey, man (?)\",\n", + " 'half dead',\n", + " \"walking tall and i won't be long\",\n", + " 'with matching on telephone',\n", + " 'and in my dreams, see the dust',\n", + " 'no, no, no, no no no',\n", + " 'so watch it, woman',\n", + " 'no place to hide',\n", + " 'get a god complex',\n", + " 'suicide!',\n", + " \"i'm not fucking kidding, man, it hurts!\",\n", + " 'i can be so strong',\n", + " 'like a lion on a mission',\n", + " 'i can do no wrong',\n", + " 'i can fight day and night',\n", + " \"that's my decision!\",\n", + " 'because the world is...',\n", + " '(so bad) like diet soda',\n", + " \"(so bad) i'm counting 37 wars\",\n", + " '(so bad) user friendly',\n", + " '(so bad) we lost the singer of the doors',\n", + " '(so bad) the u.f.o. conspiracy',\n", + " '(so bad) starvation and depressy',\n", + " '(so bad) hiroshima tomsk tschernobyl',\n", + " \"(so bad) it's never gonna heal\",\n", + " 'i can be so good',\n", + " 'like a goddess',\n", + " \"plus, i'm modest\",\n", + " 'i...i have no fear',\n", + " 'i will go all the way',\n", + " 'i can show you how to pray',\n", + " 'because the world is...',\n", + " '(so bad) deadly chemotherapy',\n", + " '(so bad) the lies about hiv',\n", + " \"(so bad) we've lost our last chance\",\n", + " \"(so bad) and we're all dancing shiva's dance\",\n", + " '(so bad) genetic obsession',\n", + " '(so bad) misused atomic energy',\n", + " '(so bad) surprise, surprise, the culture industry',\n", + " '(so bad) helmut kohl!',\n", + " 'you can do no wrong',\n", + " 'if you fight on my side',\n", + " 'if you make that decision',\n", + " 'because the world is...',\n", + " '(so bad) i.r.a. and r.a.f',\n", + " '(so bad) are we really blind and deaf',\n", + " '(so bad) the yugoslavian rape',\n", + " '(so bad) and no-one can escape',\n", + " '(so bad) the nazi lunacy',\n", + " '(so bad) artificial ecstasy',\n", + " '(so bad) i hate my t.v',\n", + " 'so bad..bad...bad...',\n", + " 'fronting time, in a on going change',\n", + " 'breathing hard and slow',\n", + " 'capture life on the thinnest line',\n", + " 'stimulate the roots',\n", + " 'my eyes white stare',\n", + " 'heated hand, who returns from sweat and lust',\n", + " 'breathing power and moans of lust, i surround myself so delicately within',\n", + " 'reaching for the sky i harvest upon the key',\n", + " 'i am swirling upon the key',\n", + " 'like a forcing bloom i repeat act',\n", + " 'performing, for an utter final',\n", + " 'i give to me the most sacred and holy',\n", + " 'i give to thee my own reflection',\n", + " 'as i see myself repeated inside out, there is no longer distance',\n", + " 'i hold the torch',\n", + " 'i surround my hand, with fire',\n", + " 'like a frocing bloom i repeated act',\n", + " 'stimulate the roots',\n", + " 'my eyes white stare',\n", + " 'heated hand, who returns from sweat and lust',\n", + " 'breathing power and moans of lust, i surround myself so delicately within',\n", + " 'reaching for the sky i harvest upon the key',\n", + " 'i am swirling upon the key',\n", + " 'for the the one gazing at the altar shall not see',\n", + " \"this blood has not run far till it's dry\",\n", + " 'when rising above in pleasure, i smear myself upon thee',\n", + " 'in this foggy confusion',\n", + " 'the whole image comes dear',\n", + " 'for this is the demon within me',\n", + " 'like a forcing bloom i repeated act',\n", + " 'still swirling above and beneath the key, blue eyes stare',\n", + " 'return to me with a conscious mind, i do behold the greater of gifts',\n", + " 'breathing power and moans of lust, i surround myself so delicately within',\n", + " 'reaching for the sky i harvest upon the key',\n", + " 'i am swirling upon the key',\n", + " 'like a forcing bloom i repeated act',\n", + " 'i smear myself upon thee',\n", + " 'i took your body home with me',\n", + " 'and shed a plate',\n", + " 'and framed all that weight',\n", + " \"i couldn't care less\",\n", + " 'but you cared for me',\n", + " 'the flew into the plates',\n", + " 'bursting crystal feathers flamed',\n", + " 'i frame them all, the weight',\n", + " 'and shed a plate',\n", + " \"i couldn't care less\",\n", + " 'but you cared for me, unless',\n", + " 'the flew into the plates',\n", + " 'i took all of the earrings and your jewels',\n", + " 'i wore all of your earrings and your jewels',\n", + " 'we come from a world beyond your stars',\n", + " 'from a silver stream hidden in the nebula',\n", + " 'outlaws and strangers, the last one of our kind',\n", + " 'on the way to new home through the galaxy we ride',\n", + " 'we are sailing the dark to find a star',\n", + " 'a planet to go on, live and see a new dawn',\n", + " 'we need to survive',\n", + " 'and seed a new life to save our tribe',\n", + " 'can you see the future, riding on the wings of destiny',\n", + " 'far away from the universe we come',\n", + " 'travel galaxies far beyond',\n", + " 'sons of orion',\n", + " 'far away from an ancient aeon stream',\n", + " 'born to be strong, to carry on',\n", + " 'sons of orion',\n", + " 'were crossing the space to dawn a new age',\n", + " 'the universe has born a new face',\n", + " 'we bring the evolution, new technologies',\n", + " 'we settle the fields for a new century',\n", + " 'we are facing the earth to build a new world',\n", + " 'the time has come there is no return',\n", + " 'we can stand as one, children of the sun',\n", + " 'hand in hand we carry on',\n", + " 'where do we go?',\n", + " 'where we belong',\n", + " 'in search for new hope',\n", + " 'set the sails and carry on... we stand as one',\n", + " 'home, is this a quiet place where you should be alone?',\n", + " 'is this where the tortured and the troubled find their own?',\n", + " \"i don't know, but i can tell this isn't you, your cover's blown\",\n", + " \"oh no, don't you dare hang up this phone\",\n", + " 'hey!',\n", + " 'give me space so i can breathe',\n", + " 'give me space so i can sleep',\n", + " 'give me space so you can drown in this with me',\n", + " 'in this place, a lonely escapade in outer space',\n", + " \"there's no antidote for irony, you say\",\n", + " \"that you have when you know that you don't\",\n", + " \"and you say that you can when you know that you won't\",\n", + " 'hey!',\n", + " 'give me space so i can breathe',\n", + " 'give me space so i can sleep',\n", + " 'give me space so you can drown in this with me',\n", + " 'hey!',\n", + " \"give me space but i can't breathe\",\n", + " \"give me space but i can't sleep\",\n", + " \"give me just one inch, i swear that's all i need\",\n", + " 'these padded walls and tv screens',\n", + " 'sometimes they make me want to scream',\n", + " 'ahhhh!',\n", + " 'hey!',\n", + " 'give me space so i can breathe',\n", + " 'give me space so i can sleep',\n", + " 'give me space so you can drown in this with me',\n", + " 'hey!',\n", + " \"give me space but i can't breathe\",\n", + " \"give me space but i can't sleep\",\n", + " \"give me just one inch, i swear that's all i need\",\n", + " \"well, i'm so tired of cryin' but i'm out on the road again\",\n", + " \"i'm on the road again\",\n", + " \"well, i'm so tired of cryin' but i'm out on the road again\",\n", + " \"i'm on the road again\",\n", + " \"i ain't got no woman just to call my special friend\",\n", + " 'you know the first time i traveled out in the rain and snow',\n", + " 'in the rain and snow',\n", + " 'you know the first time i traveled out in the rain and snow',\n", + " 'in the rain and snow',\n", + " \"i didn't have no payroll, not even no place to go\",\n", + " 'and my dear mother left me when i was quite young',\n", + " 'when i was quite young',\n", + " 'and my dear mother left me when i was quite young',\n", + " 'when i was quite young',\n", + " 'she said \"lord, have mercy on my wicked son\"',\n", + " \"take a hint from me, mama, please, don't you cry no more\",\n", + " \"don't you cry no more\",\n", + " \"take a hint from me, mama, please, don't you cry no more\",\n", + " \"don't you cry no more\",\n", + " \"'cause it's soon one morning down the road i'm going\",\n", + " \"but i ain't going down that long, old lonesome road\",\n", + " 'all by myself',\n", + " \"but i ain't going down that long, old lonesome road\",\n", + " 'all by myself',\n", + " \"i can't carry you, baby, gonna carry somebody else\",\n", + " 'young man, take a look at your time',\n", + " 'i said young man',\n", + " 'hollywood, very good, punch the clock, dominoes',\n", + " \"you beat me up, don't get a gun, talk to a counsellor\",\n", + " 'skydeck, pretty cheap, whispers with the doom time',\n", + " \"but i'm\",\n", + " \"i'm on fire\",\n", + " \"but i'm\",\n", + " \"i'm on fire\",\n", + " \"hot lips, she's a dreamy type, talk to a counsellor\",\n", + " 'cool guys, never try, tried it on, talk to a counsellor',\n", + " 'hollywood, very good, punch the clock, talk to a counsellor',\n", + " 'skydeck, pretty cheap, talk to a counsellor',\n", + " 'when the night returns just like a friend',\n", + " 'when the evening comes to set me free',\n", + " 'when the quiet hours',\n", + " 'that wait beyond the day',\n", + " 'make peaceful sounds in me',\n", + " 'took a drag from my last cigarette',\n", + " 'took a drink from a glass of old wine',\n", + " 'i closed my eyes and i could make it real',\n", + " 'and feel it one more time',\n", + " 'can you hear it, babe',\n", + " 'can you hear it, babe',\n", + " 'from another time, from another place',\n", + " 'do you remember it, babe',\n", + " 'and the radio played like a carnival tune',\n", + " 'as we lay in our bed in the other room',\n", + " 'when we gave it away',\n", + " 'for the sake of a dream in a penny arcade',\n", + " 'if you know what i mean',\n", + " 'if you know what i mean, babe',\n", + " \"and here's to the songs we used to sing\",\n", + " \"and here's to the times we used to know\",\n", + " \"it's hard to hold them in our arms again\",\n", + " 'but hard to let them go',\n", + " 'do you hear it, babe',\n", + " 'do you hear it, babe',\n", + " 'it was another time',\n", + " 'it was another place',\n", + " 'do you remember it, babe',\n", + " 'and the radio played like a carnival tune',\n", + " 'as we lay in our bed in the other room',\n", + " 'when we gave it away',\n", + " 'for the sake of a dream in a penny arcade',\n", + " 'if you know what i mean',\n", + " 'if you know what i mean',\n", + " 'if you know what i mean',\n", + " 'if you know what i mean',\n", + " 'if you know what i mean, babe',\n", + " 'if you know what i mean',\n", + " 'can you do the milano mosh?',\n", + " \"you think that you're really hard\",\n", + " 'you think that you can mosh',\n", + " 'got your suspenders and got your boots',\n", + " \"you'd better wear armor, you fuckin' fool\",\n", + " 'we mosh until we die',\n", + " 'we mosh until you fry',\n", + " 'you think that you can try',\n", + " 'but can you do the milano mosh?',\n", + " \"you think that you're really hard\",\n", + " 'you think that you can mosh',\n", + " 'got your suspenders and got your boots',\n", + " \"you'd better wear armor, you fuckin' fool\",\n", + " 'we mosh until we die',\n", + " 'we mosh until you fry',\n", + " 'you think that you can try',\n", + " 'but can you do the milano mosh?',\n", + " 'mosh',\n", + " 'mosh',\n", + " 'mosh',\n", + " 'mosh',\n", + " \"hey babe don't act so scared\",\n", + " 'all i want is some special care',\n", + " 'on the run from some institution',\n", + " 'all i want is some constellation',\n", + " 'and i can tell by his face',\n", + " 'i am a total disgrace',\n", + " 'put me inside this place',\n", + " 'move over for a damage case',\n", + " 'hey baby wait a minute, stop',\n", + " \"don't run away, don't call a cop\",\n", + " 'i am not looking to victimize you',\n", + " 'all i want to do is tantalize you',\n", + " 'i can tell by your face',\n", + " 'i am all over this place',\n", + " 'i can tell by your face',\n", + " 'got no time for a damage case, no time baby',\n", + " \"hey babe don't turn away\",\n", + " 'i am here tomorrow, gone today',\n", + " \"i don't know what you think your game is\",\n", + " \"i don't care if you want your name is\",\n", + " 'and i can tell by this face',\n", + " 'you are all over the place',\n", + " 'i can tell by his face',\n", + " 'move over for a damage case',\n", + " 'get the fuck over man',\n", + " 'what will be? our legacy',\n", + " 'lazy acceptance of the norm',\n", + " 'what will it be if our will is free?',\n", + " 'silent acceptance of the form',\n", + " 'vestiges and claws',\n", + " 'fight for a common cause',\n", + " 'what will it be? our legacy',\n", + " 'faith in dogma or reasoning',\n", + " 'what will it be if our will is free?',\n", + " 'refine our tools and use our wings',\n", + " 'vestiges and claws',\n", + " 'fight for a common cause',\n", + " 'refining without pause',\n", + " 'fight for a common cause',\n", + " 'what will, what will',\n", + " 'will it be?',\n", + " 'what will, what will',\n", + " 'will it be?',\n", + " 'what will, what will',\n", + " 'will it be?',\n", + " 'what will, what will',\n", + " 'will it be?',\n", + " 'what will, what will',\n", + " 'will it be?',\n", + " 'what will, what will',\n", + " 'will it be?',\n", + " 'what will, will it be?',\n", + " 'what will, what will',\n", + " 'will it be?',\n", + " 'petty thievery, tribal rivalry',\n", + " 'envy or generosity?',\n", + " 'wishful thinking or reality?',\n", + " 'what will, what will',\n", + " 'will it be?',\n", + " 'what will, what will',\n", + " 'will it be?',\n", + " 'what will, will it be?',\n", + " 'what will, what will',\n", + " 'will it be?',\n", + " 'vestiges and claws',\n", + " 'fight for a common cause',\n", + " 'free your mind to leave dogma behind',\n", + " 'vestiges and claws',\n", + " 'fight for a common cause',\n", + " 'free your mind to leave dogma behind',\n", + " 'vestiges and claws',\n", + " 'vestiges and claws',\n", + " 'free your mind to leave dogma behind',\n", + " \"there's nothing new around the sun\",\n", + " 'everything you think of has been done',\n", + " 'all been done before your time',\n", + " 'sometime or another by someone and his brother, yeah yeah',\n", + " 'yeah, yeah',\n", + " 'yeah, yeah',\n", + " 'from the poison comes a flower',\n", + " 'butterfly for just an hour',\n", + " 'but it burns ecstatic fire',\n", + " 'the kind of life we all desire',\n", + " 'desire! fire!',\n", + " \"white is the color of night when there's nobody there\",\n", + " 'and you sit in your chair and get drunk on despair',\n", + " \"red is the color, it's said, that can drive you insane\",\n", + " 'with pleasure or pain, it depends on your head',\n", + " \"brown is the color of skin that i'd like to be in\",\n", + " \"as it doesn't seem right to be colored so white\",\n", + " \"blue is the color of sky, and i won't even try\",\n", + " 'to explain how or why i could show you the sky',\n", + " 'just show you the sky',\n", + " \"i'm with them\",\n", + " 'but never on the weekend',\n", + " \"it's a problem\",\n", + " \"i'm the one when it's all gone\",\n", + " \"it's a new thing\",\n", + " \"you're an a-team\",\n", + " \"so what's the problem?\",\n", + " \"i'm the one when it's all gone\",\n", + " 'go and leave then',\n", + " 'best believe them',\n", + " \"it's not a problem\",\n", + " 'ten bodies in the back',\n", + " 'heart attack',\n", + " 'had about four',\n", + " 'tryna add one more',\n", + " 'but only on the weekend',\n", + " \"i'll be so bold to say you are the only one i've ever really known\",\n", + " \"oh, my love, you're soft\",\n", + " 'and i know these roads like a hall from my home but i never settle down',\n", + " 'except my word is yours',\n", + " \"you'll see, you'll see\",\n", + " \"i'm just no good for me\",\n", + " \"you'll see, yeah, you'll see\",\n", + " \"that i'm just no good for me\",\n", + " 'good for me, good for me',\n", + " 'good for me',\n", + " \"take what you can from the back of your hand in all words i've seen\",\n", + " 'change your meal and your tune',\n", + " 'and despite what you say, every dog has its day, every night finds its home',\n", + " 'are you happy being alone?',\n", + " \"you'll see, you'll see\",\n", + " \"i'm just no good for me\",\n", + " \"you'll see, yeah, you'll see\",\n", + " \"i'm just no good for me\",\n", + " \"you'll see, yeah you'll see\",\n", + " \"that i'm just no good for me\",\n", + " 'good for me, good for me',\n", + " 'good for me',\n", + " 'her head is in a bitter way',\n", + " \"her brain's on fire\",\n", + " \"she's just looking for the perfect wave\",\n", + " \"it's her brain's desire\",\n", + " \"i'll think of her when i walk the strand\",\n", + " 'on this true hermosa night',\n", + " 'ah-ah-ah-ah-ah-ah-ah',\n", + " 'ed is dead',\n", + " 'ed is dead',\n", + " 'ed is dead, ha huh, huh',\n", + " ...]},\n", + " 'varnell-15-16-12th': {'meta': {'train_data': ['two young people without a thing',\n", + " 'say some vows and spread their wings',\n", + " 'and settle down with just what they need',\n", + " \"livin' on love\",\n", + " \"she don't care 'bout what's in style\",\n", + " 'she just likes the way he smiles',\n", + " 'it takes more than marble and tile',\n", + " \"livin' on love\",\n", + " \"livin' on love, buyin' on time\",\n", + " \"without somebody nothing ain't worth a dime\",\n", + " 'just like an old fashion story book rhyme',\n", + " \"livin' on love\",\n", + " \"it sounds simple, that's what you're thinkin'\",\n", + " \"but love can walk through fire without blinkin'\",\n", + " \"it doesn't take much when you get enough\",\n", + " \"livin' on love\",\n", + " 'two old people without a thing',\n", + " 'children gone but still they sing',\n", + " 'side by side in that front porch swing',\n", + " \"livin' on love\",\n", + " \"he can't see anymore\",\n", + " 'she can barely sweep the floor',\n", + " \"hand in hand they'll walk through that door\",\n", + " \"just livin' on love\",\n", + " \"livin' on love, buyin' on time\",\n", + " \"without somebody nothing ain't worth a dime\",\n", + " 'just like an old fashion story book rhyme',\n", + " \"livin' on love\",\n", + " \"it sounds simple that's what you're thinkin'\",\n", + " \"but love can walk through fire without blinkin'\",\n", + " \"it doesn't take much when you get enough\",\n", + " \"livin' on love\",\n", + " \"livin' on love, buyin' on time\",\n", + " \"without somebody nothing ain't worth a dime\",\n", + " 'just like an old fashion story book rhyme',\n", + " \"livin' on love\",\n", + " \"but, it sounds simple that's what you're thinkin'\",\n", + " \"but love can walk through fire without blinkin'\",\n", + " \"it doesn't take much when you get enough\",\n", + " \"livin' on love\",\n", + " \"no it doesn't take much when you get enough\",\n", + " \"livin' on love\",\n", + " 'yeah, yeah, yeah',\n", + " \"it's good\",\n", + " 'oh shit',\n", + " 'mushrooms, lsd, marijuana',\n", + " 'light that shit',\n", + " 'oh shit',\n", + " \"this is every heavy drug, that's known at every level\",\n", + " \"this assault with deadly metal bumpin' heavy metal\",\n", + " 'do this for myself, across my hood and every ghetto',\n", + " \"paper pushin', paper petal, cause i heavy petal\",\n", + " \"it's real nigga flowin' through my blood and every vessel\",\n", + " 'time is money, so i saved the load on every bezel',\n", + " 'i just had a dream, i dipped my watch canary yellow',\n", + " 'i woke up and then i bought that bitch in every yellow',\n", + " 'let go back to business, my fits prada for my devil',\n", + " \"cause life's a bitch with red lipstick and high stilettos\",\n", + " \"flacko jumpin' fences from pigs, with 'em them biscuits\",\n", + " 'i hypnotized my sig, but my .38 was kinda special',\n", + " 'what a life this is, what a sight this is',\n", + " 'where the darks and the light skin kids',\n", + " 'get along with the white persons',\n", + " 'all alike when the lights get dim',\n", + " \"on a righteous pass, where you don't look back\",\n", + " 'nigga spark your cig, niggas light your hash',\n", + " \"niggas light your spliff, where you puff, don't pass, just sip it\",\n", + " 'i just had an epic dream like dr. king',\n", + " 'police brutality was on my tv screen',\n", + " 'harmony, love, drugs, and peace is all we need',\n", + " 'harmony, love, drugs, and peace is all we need',\n", + " \"out on the streets i'm stalking the night\",\n", + " 'i can hear my heavy breathing',\n", + " \"paid for the kill, but it doesn't seem right\",\n", + " \"something there i can't believe in\",\n", + " 'voices are calling from inside my head',\n", + " 'i can hear them, i can hear them',\n", + " 'vanishing memories of things that were said',\n", + " \"they can't try to hurt me now\",\n", + " 'but a shot in the dark',\n", + " 'one step away from you',\n", + " 'just a shot in the dark',\n", + " 'always creeping up on you',\n", + " 'all right',\n", + " 'taught by the powers that preach over me',\n", + " 'i can hear their empty reasons',\n", + " \"i wouldn't listen, i learned how to fight\",\n", + " 'i opened up my mind to treason',\n", + " \"but just like the wounded, and when it's too late\",\n", + " \"they'll remember, they'll surrender\",\n", + " 'never a care for the people who hate',\n", + " 'underestimate me now',\n", + " 'but a shot in the dark',\n", + " 'one step away from you',\n", + " 'just a shot in the dark',\n", + " 'nothing that you can do',\n", + " 'just a shot in the dark',\n", + " 'always creeping up on you',\n", + " 'all right',\n", + " \"but just like the wounded, and when it's too late\",\n", + " \"they'll remember, they'll surrender\",\n", + " 'never a care for the people who hate',\n", + " 'underestimate me now',\n", + " 'but a shot in the dark',\n", + " 'one step away from you',\n", + " 'just a shot in the dark',\n", + " 'nothing that you can do',\n", + " 'just a shot in the dark',\n", + " 'always creeping up on you',\n", + " 'all right',\n", + " 'just a shot in the dark',\n", + " 'just a shot in the dark',\n", + " 'just a shot in the dark',\n", + " 'just a shot in the dark',\n", + " 'nyc or p.d. you can see them on the streets',\n", + " 'all over new york city kicking the punks all around',\n", + " 'police brutality - for you and me',\n", + " 'police brutality - they are on the streets',\n", + " \"police brutality - they're all around\",\n", + " 'police brutality - for the punx',\n", + " 'nyc or p.d. i call them the fucking pigs',\n", + " 'all around new york city kicking the punx all around',\n", + " '(repeat chorus)',\n", + " 'oh',\n", + " 'yeah',\n", + " 'yeah',\n", + " 'yeah, yeah',\n", + " 'oh',\n", + " 'oh',\n", + " 'do you know how it feels',\n", + " 'to wake up with someone that you love?',\n", + " 'it feels so real',\n", + " 'my angel was sent from above',\n", + " 'i like to see her smile',\n", + " 'even when i look in her eyes',\n", + " 'i get butterflies (flies)',\n", + " \"i don't wanna change\",\n", + " \"i don't wanna change\",\n", + " \"i don't wanna change her love\",\n", + " 'i wanna change her last name',\n", + " 'give her mine, onto her',\n", + " \"but feelings first baby girl you're my world\",\n", + " 'no other girl',\n", + " 'i just wanna make this last forever',\n", + " \"my queen she's next to me\",\n", + " \"she's next to me\",\n", + " 'i need',\n", + " 'her loving feel',\n", + " 'her loving feel',\n", + " 'just stay right by my side',\n", + " 'just you and i',\n", + " 'just you and i',\n", + " 'just you and i',\n", + " 'just you and i',\n", + " 'baby girl you can tell your friends about us',\n", + " 'no other girl',\n", + " \"what's love if we don't fall in trust\",\n", + " \"i'm not trying to be the most perfect guy\",\n", + " 'but do right in your eyes',\n", + " \"i know you're tired\",\n", + " \"i know you're tired\",\n", + " \"i know you're tired of the losers\",\n", + " \"but when love come my way, beggars can't be choosers\",\n", + " 'i just want to make you mine forever',\n", + " 'ever',\n", + " 'ever',\n", + " 'ever',\n", + " 'forever',\n", + " \"my queen she's next to me\",\n", + " \"she's next to me\",\n", + " 'i need',\n", + " 'her loving feel',\n", + " 'her loving feel',\n", + " 'just stay right by my side',\n", + " 'just you and i',\n", + " 'just you and i',\n", + " 'just you and i',\n", + " 'just you and i',\n", + " 'little mama, you the, you the best',\n", + " 'baby girl, you, you the best',\n", + " 'baby girl, you the, you the best',\n", + " 'my queen!!!! oh!!!!',\n", + " '...just you and i',\n", + " 'forever',\n", + " 'ever',\n", + " 'ever',\n", + " 'ever',\n", + " 'oh',\n", + " 'oh, oh',\n", + " 'ohh',\n", + " 'ohhhhh',\n", + " 'just you and i',\n", + " 'just you and i',\n", + " 'just you and i',\n", + " \"there's a fire burning bright at our house tonight\",\n", + " 'slow music playing and soft candlelight',\n", + " 'on her lips i keep tasting the warm red wine',\n", + " \"i'm there in her arms but it's all in my mind\",\n", + " 'the snow is piled high on the highway tonight',\n", + " \"i'm a ship lost at sea on this ocean of white\",\n", + " 'eighteen wheels anchored somewhere out of dover',\n", + " 'i wish i could hold her instead of hugging this old cold shoulder',\n", + " 'this old highway us like a woman',\n", + " 'sometimes she can be your best friend',\n", + " \"but she's the real jealous kind\",\n", + " \"she's the lady that leads me to the life i dream of\",\n", + " \"she's the mistress that keeps me from the ones that i love\",\n", + " 'god, i wish i could hold her instead of hugging this old cold shoulder',\n", + " 'friday is when you left me',\n", + " 'so i drank myself to sleep',\n", + " \"and sunday is when i'll wake up\",\n", + " 'not to remember a thing',\n", + " 'my friends all say the same thing',\n", + " \"i don't know my new girl too well\",\n", + " '(i know)',\n", + " 'that all this lying gets to me',\n", + " 'and no one seems to give a shit',\n", + " '(the way)',\n", + " 'she talks to every guy in the bar',\n", + " '(i guess)',\n", + " \"it should've raised some kind of alarm\",\n", + " \"who'd ever think i'd go in and end up\",\n", + " \"like all the other guys that you're gunning for\",\n", + " \"well it ain't no surprise\",\n", + " \"that you'd turn me on and leave\",\n", + " \"it ain't no surprise\",\n", + " \"that you'd turn it around on me\",\n", + " \"i don't know why\",\n", + " \"you won't give me what i need\",\n", + " \"it ain't no surprise\",\n", + " \"that that bitch is leavin' me\",\n", + " 'my friends are mean to me',\n", + " \"they say i don't break up too well\",\n", + " '(they know)',\n", + " 'all this crying gets to me',\n", + " 'and no one seems to give a shit',\n", + " 'well i know you want to',\n", + " 'so go on and say it',\n", + " 'just go on and say it',\n", + " 'just go on and say it',\n", + " \"well it ain't no surprise\",\n", + " \"that you'd turn me on and leave\",\n", + " \"it ain't no surprise\",\n", + " \"that you'd turn it around on me\",\n", + " \"i don't know why\",\n", + " \"you won't give me what i need\",\n", + " \"it ain't no surprise\",\n", + " \"that that bitch is leavin' me\",\n", + " \"(leavin' me)\",\n", + " 'friday is when you left me',\n", + " 'so i drank myself to sleep',\n", + " 'and sunday i never woke up',\n", + " \"well it ain't no surprise\",\n", + " \"that you'd turn me on and leave\",\n", + " \"it ain't no surprise\",\n", + " \"that you'd turn it around on me\",\n", + " \"i don't know why\",\n", + " \"you won't give me what i need\",\n", + " \"it ain't no surprise\",\n", + " \"that that bitch is leavin' me\",\n", + " \"that that bitch is leavin' me\",\n", + " 'i dreamed i walked in a field of flowers',\n", + " 'oh, what a dream',\n", + " 'the houses all were silver towers',\n", + " 'oh, what a dream',\n", + " 'beside the road an angel sat',\n", + " 'i said hello and tipped my hat',\n", + " 'and stopped when i saw her smile',\n", + " 'and set me down a while',\n", + " 'i set me down a while',\n", + " 'you dreamer you',\n", + " 'i tried the angel for a kiss',\n", + " 'oh, what a dream',\n", + " 'but she turned away and my lips missed',\n", + " 'oh, what a dream',\n", + " 'she said, \"sir, i\\'ll have you know',\n", + " 'i met you just a while ago',\n", + " \"you're welcome for to sit\",\n", + " 'but calm yourself a bit, sir',\n", + " 'calm yourself a bit',\n", + " 'you dreamer you',\n", + " 'i fell in love like one, two, three',\n", + " 'oh, what a dream',\n", + " 'i asked the angel to marry me',\n", + " 'oh, what a dream',\n", + " 'she said, \"sir, i can\\'t marry you',\n", + " \"but i'm a dream that can come true\",\n", + " 'there are dreams of much my worth',\n", + " 'that live upon the earth, sir',\n", + " 'live upon the earth',\n", + " 'you dreamer you\"',\n", + " 'then i awoke and found my love',\n", + " 'oh, what a dream',\n", + " 'as heavenly as the one above',\n", + " 'oh, what a dream',\n", + " \"we'll marry in a sea of flowers\",\n", + " 'home will be a silver tower',\n", + " \"there'll be heaven in my life\",\n", + " 'with an angel for a wife',\n", + " 'with an angel for a wife',\n", + " 'you dreamer you',\n", + " 'you dreamer you']},\n", + " 'data': ['hat to the front',\n", + " \"lookin' like i'm lightin' up a bat for a blunt\",\n", + " \"i'm stickin' to the script, tryna kick it like a punt\",\n", + " 'my life is like a movie and i do my own stunts',\n", + " \"i'm the birdman jr., call me young baby\",\n", + " 'coulda been a killer but cash money saved me',\n", + " 'remember i was little but the cash money made me',\n", + " 'big dog bitch, no tramp, no lady',\n", + " 'young ass nigga had a thing for old ladies',\n", + " \"but as i got older i began to like 'em younger\",\n", + " 'to heavens where i brung her, my wing she was under',\n", + " 'she said \"daddy they, daddy they, daddy they, daddy they',\n", + " 'daddy they can\\'t do it like you can\"',\n", + " 'i get chips like vegas and i am not blue man',\n", + " 'too much ice on my wrist and now i got a blue hand',\n", + " \"and if i sing prostitute she gon' need some new pants\",\n", + " \"and if i sing pussy monster she gon' need a new man\",\n", + " 'hello world, i would you all to meet me, her new man',\n", + " 'i vow to stay on top of my somers like suzanne',\n", + " 'and i hustle everyday, everyday, everyday, everyday',\n", + " \"everyday i'm hustlin', fillin' up my cup again\",\n", + " \"wit that purple stuff again, i can't get enough of it\",\n", + " \"point me in the direction of a swisher and i'm stuffin' it\",\n", + " \"with that purple stuff again, i'm on some same color shit\",\n", + " \"after you do wayne, it's time to do wayne's brothers bitch\",\n", + " \"i get money like a fuckin' wayans brother bitch\",\n", + " 'i get good with gorillas and stay away from the rattlesnakes',\n", + " 'and the jakes, and the fake, and the hate',\n", + " 'interstate 10, no cops in sight',\n", + " \"and i'm coming back with a whole flock tonight\",\n", + " \"lord, don't let me get stopped tonight\",\n", + " \"or i'mma have to shoot it out with the cops tonight\",\n", + " 'i swear, and tell the jack boys not tonight',\n", + " \"cause i ain't 'n sync, but i will pop tonight\",\n", + " \"yeah, that's right, if you ain't got that price\",\n", + " 'then go thataway, not a way we can even negotiate',\n", + " \"big money heavyweight, on my way to heaven's gate\",\n", + " 'so if that be them open gates, flow so appropriate',\n", + " \"don't associate me with the bullshit\",\n", + " 'one wish, i wish a motherfucker would trip',\n", + " 'like a engine, i come from under the hood bitch',\n", + " \"but now a nigga gettin' paper like a booklet\",\n", + " \"they ain't help me with it, but i took it\",\n", + " 'and now they never get it, never get it, never get it, never get it',\n", + " \"never get it back, yeah that's my word\",\n", + " '\"bling-bling\" in the dictionary, yeah that\\'s my word',\n", + " 'and for me ja rule made it just like irv',\n", + " 'sometimes i still go through the hood just to kiss my curb',\n", + " 'cause i love that block nigga, eagle and apple',\n", + " \"old g's, young g's, leaders and barrels\",\n", + " 'but god found me like a needle in a barrel',\n", + " \"and i'm so ready for war cause i'm a jesus for the battle\",\n", + " \"money on my mind, that's all i think of\",\n", + " 'married to the game, never takin my ring off',\n", + " \"m.o.b., yeah that's my theme song\",\n", + " \"smokin' two l's, rockin' bells like ding-dong\",\n", + " 'haha, yeah i got my wings on',\n", + " \"flyer than the rest, i don't rest i keep goin\",\n", + " \"i just i-g-nore 'em\",\n", + " 'like anyway, anyway, anyway, anyway',\n", + " \"anyway it goes, i'mma get gold\",\n", + " \"and i could see the top, the way i'm climbin this pole\",\n", + " \"a nigga with the flu ain't rhyming this cold\",\n", + " 'and nigga i\\'m hotter than a \"fire in the hole\"',\n", + " \"steppin' out my shower like a lion in a robe\",\n", + " \"eyin' these hoes, iron in my hol-ster\",\n", + " 'surp, purp, sure',\n", + " \"let's elevate and get away, accelerate and never hate\",\n", + " 'dedicate this, to the blue eyes and blonde hair',\n", + " \"i'm on top of my green like a lawn chair\",\n", + " \"don't worry, i'm straight like arm hair\",\n", + " \"don't worry, i'm straight like combed hair\",\n", + " 'this world fucked my pops and i was born here',\n", + " 'from the cell to a jet, call it con-air',\n", + " 'i told my niggas that we would see',\n", + " 'better days yesterday, and today is a better day',\n", + " 'celebrate',\n", + " 'oh man',\n", + " 'oh man, oh man',\n", + " 'not again',\n", + " 'yeah, i learned the game from william wesley, you can never check me',\n", + " \"back to back for the niggas that didn't get the message\",\n", + " \"back to back, like i'm on the cover of lethal weapon\",\n", + " \"back to back, like i'm jordan '96, '97\",\n", + " 'woah—very important and very pretentious',\n", + " 'when i look back, i might be mad that i gave this attention',\n", + " \"yeah, but it's weighin' heavy on my conscience\",\n", + " 'yeah, and fuck, you left the boy no options',\n", + " 'i wanna see my niggas go insane',\n", + " \"you gon' make me step out of my fuckin' frame\",\n", + " \"you gon' make me buy bottles for charlamagne\",\n", + " \"you gon' make me go out of my fuckin' way\",\n", + " \"i waited four days, nigga, where y'all at?\",\n", + " \"i drove here in the wraith playin' ar-ab\",\n", + " \"i'm not sure what it was that really made y'all mad\",\n", + " \"but i guess this is what i gotta do to make y'all rap\",\n", + " \"i mean woah, can't fool the city, man, they know what's up\",\n", + " \"second floor at tootsies, gettin' shoulder rubs\",\n", + " \"this for y'all that think that i don't write enough\",\n", + " \"they just mad 'cause i got the midas touch\",\n", + " 'you love her, then you gotta give the world to her',\n", + " \"is that a world tour or your girl's tour?\",\n", + " 'i know that you gotta be a thug for her',\n", + " \"this ain't what she meant when she told you to open up more\",\n", + " 'yeah, trigger fingers turn to twitter fingers',\n", + " \"yeah, you gettin' bodied by a singin' nigga\",\n", + " \"i'm not the type of nigga that'll type to niggas\",\n", + " \"and shout-out to all my boss bitches wifin' niggas\",\n", + " 'make sure you hit him with the prenup',\n", + " 'then tell that man to ease up',\n", + " 'i did another one, i did another one',\n", + " \"you still ain't did shit about the other one\",\n", + " 'i got the drink in me going back to back',\n", + " 'yeah, going back to back',\n", + " 'i got the drink in me going back to back',\n", + " \"yeah, i'm going back to back\",\n", + " \"i don't wanna hear about this ever again\",\n", + " 'not even when she tell him that they better as friends',\n", + " 'not even when you saying, \"drizzy, tell \\'em again!\"',\n", + " \"i been puttin' on a show, it was a sell-out event\",\n", + " \"oh, you need better seatin'\",\n", + " \"i didn't wanna do it, gave me every reason\",\n", + " \"the point i'm tryin' to make is i don't ever need 'em\",\n", + " \"seen what you'd do for fame, what would you do for freedom?\",\n", + " \"please, check 'em for a wire or a earpiece\",\n", + " 'please, please do not let these niggas near me',\n", + " 'please, think before you come for the great one',\n", + " \"please, who's a real nigga and who ain't one?\",\n", + " 'please, somebody stop me',\n", + " \"i'm talkin' boasy and gwanin wassy\",\n", + " \"i got the fest in five days and it's my shit\",\n", + " \"soon as a nigga hit the stage, they gon'\",\n", + " \"they gon' ask if i can play this shit back to back\",\n", + " 'yeah, they want it back to back',\n", + " \"they gon' ask if i can play this shit back to back\",\n", + " \"i took a break from views, now it's back to that, nigga (six)\",\n", + " 'when i need motivation',\n", + " 'my one solution is my queen',\n", + " \"'cause she stay strong (yeah, yeah)\",\n", + " 'she is always in my corner',\n", + " 'right there when i want her',\n", + " 'all these other girls are tempting',\n", + " \"but i'm empty when you're gone\",\n", + " 'and they say',\n", + " 'do you need me?',\n", + " \"do you think i'm pretty?\",\n", + " 'do i make you feel like cheating?',\n", + " \"and i'm like no, not really, 'cause\",\n", + " 'oh, i think that i found myself a cheerleader',\n", + " 'she is always right there when i need her',\n", + " 'oh, i think that i found myself a cheerleader',\n", + " 'she is always right there when i need her',\n", + " 'she walks like a model',\n", + " 'she grants my wishes like a genie in a bottle (yeah, yeah)',\n", + " \"'cause i'm the wizard of love\",\n", + " 'and i got the magic wand',\n", + " 'all these other girls are tempting',\n", + " \"but i'm empty when you're gone\",\n", + " 'and they say',\n", + " 'do you need me?',\n", + " \"do you think i'm pretty?\",\n", + " 'do i make you feel like cheating?',\n", + " \"and i'm like no, not really 'cause\",\n", + " 'oh, i think that i found myself a cheerleader',\n", + " 'she is always right there when i need her',\n", + " 'oh, i think that i found myself a cheerleader',\n", + " 'she is always right there when i need her',\n", + " 'she gives me love and affection',\n", + " \"baby, did i mention, you're the only girl for me\",\n", + " \"no, i don't need a next one\",\n", + " 'mama loves you too, she thinks i made the right selection',\n", + " \"now all that's left to do\",\n", + " 'is just for me to pop the question',\n", + " 'oh, i think that i found myself a cheerleader',\n", + " 'she is always right there when i need her',\n", + " 'oh, i think that i found myself a cheerleader',\n", + " 'she is always right there when i need her']}}},\n", + " 'eo': {'sentence': {'pop': {'meta': {'train_data': ['aaa',\n", + " 'abb',\n", + " 'abc',\n", + " 'abn',\n", + " 'abs',\n", + " 'aeg',\n", + " 'afl',\n", + " 'afx',\n", + " 'amc',\n", + " 'amd',\n", + " 'amp',\n", + " 'ana',\n", + " 'aol',\n", + " 'asa',\n", + " 'ati',\n", + " 'atm',\n", + " 'aux',\n", + " 'avi',\n", + " 'bal',\n", + " 'bbc',\n", + " 'bbq',\n", + " 'bet',\n", + " 'bic',\n", + " 'bit',\n", + " 'bmg',\n", + " 'bmw',\n", + " 'bmx',\n", + " 'bpm',\n", + " 'bse',\n", + " 'bvg',\n", + " 'c++',\n", + " 'cbf',\n", + " 'cbs',\n", + " 'cdg',\n", + " 'cdr',\n", + " 'ceo',\n", + " 'cia',\n", + " 'cnn',\n", + " 'csa',\n", + " 'cue',\n", + " 'd&b',\n", + " 'dac',\n", + " 'daf',\n", + " 'dat',\n", + " 'dax',\n", + " 'dbu',\n", + " 'dbv',\n", + " 'ddd',\n", + " 'ddm',\n", + " 'den',\n", + " 'dfa',\n", + " 'dhl',\n", + " 'din',\n", + " 'dmx',\n", + " 'dna',\n", + " 'dos',\n", + " 'dpa',\n", + " 'dfm',\n", + " 'dsp',\n", + " 'dvd',\n", + " 'dwg',\n", + " 'ean',\n", + " 'ecg',\n", + " 'elf',\n", + " 'elo',\n", + " 'emi',\n", + " 'ems',\n", + " 'eps',\n", + " 'eta',\n", + " 'eur',\n", + " 'fax',\n", + " 'fbi',\n", + " 'fox',\n", + " 'fpm',\n", + " 'ftp',\n", + " 'gps',\n", + " 'grm',\n", + " 'hal',\n", + " 'hbo',\n", + " 'hdv',\n", + " 'hi8',\n", + " 'hiv',\n", + " 'hmv',\n", + " 'htc',\n", + " 'ibm',\n", + " 'ice',\n", + " 'idm',\n", + " 'ifa',\n", + " 'ion',\n", + " 'ira',\n", + " 'iso',\n", + " 'itc',\n", + " 'itv',\n", + " 'jal',\n", + " 'jbl',\n", + " 'jcb',\n", + " 'jfk',\n", + " 'jpg',\n", + " 'jvc',\n", + " 'kfc',\n", + " 'kgb',\n", + " 'klf',\n", + " 'lan',\n", + " 'lax',\n", + " 'led',\n", + " 'lfo',\n", + " 'lsd',\n", + " 'mac',\n", + " 'mam',\n", + " 'man',\n", + " 'mao',\n", + " 'mgm',\n", + " 'mia',\n", + " 'mic',\n", + " 'mid',\n", + " 'mmm',\n", + " 'mov',\n", + " 'mp3',\n", + " 'mph',\n", + " 'mri',\n", + " 'mtv',\n", + " 'naa',\n", + " 'nbc',\n", + " 'nec',\n", + " 'nex',\n", + " 'ngo',\n", + " 'nhk',\n", + " 'nin',\n", + " 'nsa',\n", + " 'omd',\n", + " 'omg',\n", + " 'p2p',\n", + " 'pal',\n", + " 'pan',\n", + " 'pbs',\n", + " 'pda',\n", + " 'pdf',\n", + " 'pfl',\n", + " 'pil',\n", + " 'pin',\n", + " 'ppc',\n", + " 'pvc',\n", + " 'pwr',\n", + " 'raf',\n", + " 'rai',\n", + " 'ram',\n", + " 'rbb',\n", + " 'rbi',\n", + " 'rca',\n", + " 'rec',\n", + " 'rev',\n", + " 'rfe',\n", + " 'rgb',\n", + " 'rtl',\n", + " 'rza',\n", + " 'saa',\n", + " 'sal',\n", + " 'sat',\n", + " 'sdk',\n", + " 'sis',\n", + " 'sms',\n", + " 'snd',\n", + " 'sol',\n", + " 'sos',\n", + " 'suv',\n", + " 'sxf',\n", + " 'tdk',\n", + " 'tf1',\n", + " 'tgl',\n", + " 'thx',\n", + " 'tlc',\n", + " 'tnt',\n", + " 'trs',\n", + " 'tv5',\n", + " 'twa',\n", + " 'txl',\n", + " 'txt',\n", + " 'ufo',\n", + " 'uhu',\n", + " 'uno',\n", + " 'upn',\n", + " 'ups',\n", + " 'usa',\n", + " 'usb',\n", + " 'usd',\n", + " 'usr',\n", + " 'vca',\n", + " 'vga',\n", + " 'vhr',\n", + " 'vhs',\n", + " 'vst',\n", + " 'xfm',\n", + " 'xlr',\n", + " 'xxx',\n", + " 'zip',\n", + " \"sempire d'amor\",\n", + " 'sumo lideo',\n", + " 'en mi altera',\n", + " 'ilo cante di amor',\n", + " 'infanatibo',\n", + " 'sensore moni',\n", + " \"sempire d'amor\",\n", + " 'sempire mi adore',\n", + " \"sempire d'amor\",\n", + " 'sumo lideo',\n", + " 'en mi altera',\n", + " 'sempire mi adore',\n", + " 'infanatibo',\n", + " 'sensore moni',\n", + " \"sempire d'amor\",\n", + " 'sempire mi adore',\n", + " \"sempire d'amor\",\n", + " 'sumo lideo',\n", + " 'en mi altera',\n", + " 'ilo cante di amor',\n", + " 'infanatibo',\n", + " 'sensore moni',\n", + " \"sempire d'amor\",\n", + " 'sempire mi adore',\n", + " 'infanatibo',\n", + " 'sensore mori',\n", + " \"sempire d'amor\",\n", + " 'sempire mi adore',\n", + " \"sempire d'amor\",\n", + " 'sumo lideo',\n", + " 'en mi altera',\n", + " 'sempire mi adore',\n", + " \"sempire d'amor\",\n", + " 'sempire mi adore',\n", + " \"sempire d'amor\",\n", + " 'sumo lideo',\n", + " 'en mi altera',\n", + " 'ilo cante di amor. (fade out)',\n", + " 'how did we ever go this far?',\n", + " 'you touch my hand and start the car',\n", + " 'and for the first time in my life',\n", + " \"i'm crying\",\n", + " 'are we in space? do we belong?',\n", + " 'someplace where no one calls it wrong',\n", + " 'and like the stars we burn away',\n", + " 'the miles',\n", + " 'ya zvezda, ty zvezda',\n", + " \"nas prikazano szhech'\",\n", + " 'kto-to sdal i dostal',\n", + " 'adresa nashikh vstrech',\n", + " 'potolki po glazam',\n", + " 'i nikto ne naidyet',\n", + " \"soskol'znut golosa\",\n", + " 'i slomayetsya lyod',\n", + " \"i nich'ya bez klyucha\",\n", + " \"i mogila postel'\",\n", + " \"i pora vyklyuchat'\",\n", + " 'i oni na khvoste',\n", + " \"ulybnis', razvyazhi\",\n", + " \"zanaves' zerkala\",\n", + " 'razorvi, i skazhi',\n", + " 'umerla, umerla',\n", + " 'zamykai i lizhi',\n", + " \"stanovis' nikakoi\",\n", + " 'i ruka ne drozhit',\n", + " 'vse v poryadke s rukoi',\n", + " \"mozhno mstit, 'dvazhdy dva\",\n", + " 'na taksi i sosi',\n", + " \"a prostit' nikogda\",\n", + " 'nikogda ne prosi',\n", + " 'khorosho, khorosho',\n", + " \"ya pridumala mest'\",\n", + " \"poroshok vse chto est'\",\n", + " \"umnozhayu na shest'\",\n", + " 'ne zvoni, ne zvoni',\n", + " 'ya ustala, ya ustala',\n", + " 'ya tebya ne khochu',\n", + " 'ty menya',\n", + " 'how did we ever get this far?',\n", + " \"it shouldn't have to be this hard\",\n", + " 'now for the first time in my life',\n", + " \"i'm flying\",\n", + " 'are we in love? do we deserve',\n", + " 'to bear the shame of this whole world?',\n", + " 'and like the night we camouflage',\n", + " 'denial',\n", + " 'nikogda nichego',\n", + " \"nichego ne nachat'\",\n", + " 'nikogda nikogo',\n", + " \"umirat' i molchat'\",\n", + " \"ne iskat', ne lyubit'\",\n", + " \"ne zhalet' i ne spat'\",\n", + " 'nikogda nikuda',\n", + " \"nikogo ne puskat'\",\n", + " \"ne vdvoem, i ub'em\",\n", + " \"im prisnit'sya voda\",\n", + " 'ne tvoe, ne moe',\n", + " 'provoda, provoda',\n", + " \"geroin, pul'sa net\",\n", + " \"tol'ko ti ne pri chem\",\n", + " 'abonent otklyucen',\n", + " 'how did we ever go this far?',\n", + " 'you touch my hand and start the car',\n", + " 'and for the first time in my life',\n", + " \"i'm crying\",\n", + " 'are we in love? do we deserve',\n", + " 'to bear the shame of this whole world?',\n", + " 'and like the night we camouflage',\n", + " 'denial',\n", + " 'how did we ever go this far?',\n", + " 'ya zvezda, ty zvezda',\n", + " 'nas prikazano szech',\n", + " 'kto-to sdal i dostal',\n", + " 'you touch my hand and start the car',\n", + " 'adresa nashikh vstrech',\n", + " 'potolki po glazam',\n", + " 'i nikto ne naidyet',\n", + " \"soskol'znut golosa\",\n", + " 'and for the first time in my life',\n", + " 'i slomayetsya lyod',\n", + " \"i nich'ya bez klyucha\",\n", + " \"i mogila postel'\",\n", + " \"i pora vyklyuchat'\",\n", + " 'i oni na khvoste',\n", + " \"i'm crying\",\n", + " \"ulybnis', razvyazhi\",\n", + " \"zanaves' zerkala\",\n", + " 'razorvi, i skazhi',\n", + " 'umerla, umerla',\n", + " 'are we in love, do we deserve',\n", + " 'zamykai i lizhi',\n", + " \"stanovis' nikakoi\",\n", + " 'i ruka ne drozhit',\n", + " 'vse v poryadke s rukoi',\n", + " 'to bear the shame of this whole world?',\n", + " \"mozhno mstit, 'dvazhdy dva\",\n", + " 'na taksi i sosi',\n", + " \"a prostit' nikogda\",\n", + " 'nikogda ne prosi',\n", + " 'and like the night we camouflage',\n", + " 'khorosho, khorosho',\n", + " \"ya pridumala mest'\",\n", + " \"poroshok vse chto est'\",\n", + " \"umnozhayu na shest'\",\n", + " 'denial',\n", + " 'ne zvoni, ne zvoni',\n", + " 'ya ustala, ya ustala',\n", + " 'ya tebya ne khochu',\n", + " 'ty menya',\n", + " 'cherna luna se izdiga v yuzhnoto nebe..',\n", + " 'kichest yavor, vpiva koreni v zemyata velika..',\n", + " 'horoto na ptici, krasivi, dulboko v gorata',\n", + " 'lunata se oglezhda v tihia yazovir',\n", + " 'neka vsichki bulgarski yunaci da se saberat',\n", + " 'da dignat mecha si za znaka na bulgarskiyat rod',\n", + " 'veliki, mrachni planini...',\n", + " 'veliki, mrachni planini...',\n", + " 'puteki prez hulmove na drevni gradove',\n", + " 'i kreposti na bulgarskata sila',\n", + " 'uyutno legnala v kamenna pregrudka',\n", + " 'na moite snezhni i tumni vurhove',\n", + " 'when the forest dreams eternally, my winds gather beyond the moon. dark balkan silence, cold majestic silhouttes',\n", + " 'a winter marriage, the mountains drapped in mist',\n", + " 'shivering moonlight above the ancient fields',\n", + " '1000 partisans against the overwhelming enemy',\n", + " 'hidden in the velvet dress of vitosha',\n", + " 'these are my old frostbitten mountains',\n", + " 'slunceto trepti, zaoda, v syankata na chernia vruh',\n", + " 'i gorata shepne (vika me), da grabna trona na vitosha',\n", + " 'dgeo gadiddi',\n", + " 'tovli gaadne',\n", + " 'visac ufro sescivda gamit , is metad gaatbe',\n", + " 'guli sxvisi bednierebit gaaxare',\n", + " 'mze amosvlas ar agvianebs',\n", + " 'sitbos achukebs adamianebs',\n", + " 'da dedamitsa sikvarulit trialebs',\n", + " 'sxvisi gaigo , sxvistvis gaigo',\n", + " 'guli ra aris cxrajer cxrad tu ar gaiko',\n", + " 'sxva kvelaferi, qarma tsaigo',\n", + " 'sheni mxolod is aris, rasac sxvistvis tmob',\n", + " 'dge atenebs games',\n", + " 'tu shens gverdit var me',\n", + " 'ragac mtavrdeba, ragac itskeba',\n", + " 'qvekanad sikete iko, aris da iqneba',\n", + " 'sheni gulistvis',\n", + " 'sikvarulistvis',\n", + " 'tundac erti tsutistvis',\n", + " 'isev vagrzelebt gzas',\n", + " 'rasaca gascem shenia',\n", + " 'kitao paies fotografies',\n", + " 'mikres dikes mas istories',\n", + " \"xamogela pou klistikan s' ena xarti\",\n", + " 'diavazo kartes, gramata sou',\n", + " 'ke sto psigio simiomata sou',\n", + " \"ki ap' o, ti se thimizi peron zoi\",\n", + " 'ma den teliosame',\n", + " 'den ginete sou leo, den teliosame',\n", + " 'to xrono apla gia ligo ton pagosame',\n", + " 'afto thimame, afto ipes prin xathis',\n", + " 'ke mou to orkistikes',\n", + " \"ma ap' ti zoi mou tora eksafanistikes\",\n", + " 'gia tin agapi mou pote den pistikes',\n", + " 'ma akoma den teliosame emis',\n", + " 'tragoudia grafo pou ponane',\n", + " 'ki apo ta matia mou kilane',\n", + " 'dio kategides dakria pou se zitoun',\n", + " 'ki otan i nixta ksimeroni',\n", + " 'tromazo an den ise moni',\n", + " \"ki an ala kili gia 'kalimera' se filoun\",\n", + " 'ma andexo akoma ke as ginome lioma',\n", + " 'pligomeni kardia mou kane ipomoni',\n", + " 'ma andexo sou leo ki as xtipieme ki as kleo',\n", + " \"mesa stin angalia mou kapia mera tha' rthi\",\n", + " 'greedo:',\n", + " 'oonta goota, solo?',\n", + " 'jabba wanin cheeco-wa rush anye katanye wanaruska',\n", + " 'enjaya kul a intekun kuthuow',\n", + " 'cheskopokuta klees ka tlanko ... ya oska',\n", + " 'han solo:',\n", + " \"yes, i'll bet you have\",\n", + " 'c-3po:',\n", + " 'r2, wait! oh dear...',\n", + " \"r2! r2, i really don't think we should rush into all of this\",\n", + " 'greedo:',\n", + " 'jabba wanin cheeco-wa rush anye katanye wanaruska',\n", + " 'enjaya kul a intekun kuthuow',\n", + " 'cheskopokuta klees ka tlanko ... ya oska',\n", + " '...rush anye katanye wanaruska',\n", + " 'oonta goota, solo?',\n", + " 'paroles de manal bk \"taj\"',\n", + " 'hey, b9a tem fblasstek w 7ssabek tawik',\n", + " 'ha, ana dakchi dyalhom makandirch, chkon galha lik',\n", + " 'ghandir ghi dakchi li gali bali',\n", + " 'ey, li gali bali',\n", + " '3arfa rassi ra makinch b7ali',\n", + " 'ey, makinch b7ali',\n", + " 'ra taji ghali, ey 7bibi ra taji ghali',\n", + " 'ey, ey, dertini rkhissa mali ra ghandir dakchi li bali',\n", + " 'ratata, b7al chi 9ortass (b7al chi 9ortass)',\n", + " 'b9aw tab3ini (b9aw tab3ini)',\n", + " 'khodo hadi face (khodo hadi face)',\n", + " 'li gad ybali aji nchof chkon li fina ydir l7ala',\n", + " 'ra 3arfa rassi maghandir ghi 9yassi fin ntoma fin ana',\n", + " 'hey, b9a tem fblasstek w 7ssabek tawik',\n", + " 'ha, ana dakchi dyalhom makandirch',\n", + " 'safi gha nssa li fat, dakchi libghitoni ndiro ra maghandiroch',\n", + " \"daba ra kolchi ban, disk dyali li 9bel hada ra dreb l'million\",\n", + " 'film dyalkom khawi tla3 gha maghchoch',\n", + " 'fake, fake, fake, makanchamouch',\n", + " 'hanya, hanya, hanya maknchamouch',\n", + " 'wakha t3icho 7yatkom tab3in maghatchadoch',\n", + " 'ratata, b7al chi 9ortass (b7al chi 9ortass)',\n", + " 'b9aw tab3ini (b9aw tab3ini)',\n", + " 'khodo hadi face (khodo hadi face)',\n", + " 'li gad ybali aji nchof chkon li fina ydir l7ala',\n", + " 'ra 3arfa rassi maghandir ghi 9yassi fin ntoma fin ana',\n", + " 'hey, b9a tem fblasstek w 7ssabek tawik',\n", + " 'ha, ana dakchi dyalhom makandirch, chkon galha lik',\n", + " 'ghandir ghi dakchi li gali bali',\n", + " 'ey, li gali bali',\n", + " '3arfa rassi ra makinch b7ali',\n", + " 'ey, makinch b7ali',\n", + " 'ra taji ghali, ey 7bibi ra taji ghali',\n", + " 'ey, ey, dertini rkhissa mali ra ghandir dakchi li bali',\n", + " 'om mani padme hum',\n", + " 'om mani padme hum',\n", + " 'om mani padme hum',\n", + " 'om mani padme hum',\n", + " 'om mani padme hum',\n", + " 'om mani padme hum',\n", + " 'om mani padme hum',\n", + " 'the sound of silence, the diamond in the',\n", + " 'lotus',\n", + " '(miten/deva premal)',\n", + " 'alla thelo ki alla kano pos na sou to po',\n", + " 'elega pernoun ta hronia tha simmorfotho',\n", + " 'ma einai doro adoro n’ allakseis haraktira',\n", + " 'tzaba kratas logariasmo tzaba sostos me to stanio',\n", + " 'ekso fisaei aeras ki omos mesa mou',\n", + " 'mesa s’ avto to spiti prigipesa mou',\n", + " 'to fos sou kai to fos horevoun giro mas',\n", + " 'apisteftos o kosmos ki o haraktiras mas',\n", + " 'alla thelo ki alla kano ki eftasa os edo',\n", + " 'lathi strava kai pathi m’ evgalan sosto',\n", + " 'ksimeromata sto dromo rihno petonia',\n", + " 'piano ton eavto mou kai hano to mialo mou',\n", + " 'ekso fisaei aeras ki omos mesa mou',\n", + " 'mesa s’ avto to spiti prigipesa mou',\n", + " 'to fos sou kai to fos horevoun giro mas',\n", + " 'apisteftos o kosmos ki o haraktiras mas']},\n", + " 'data': ['de trado trado',\n", + " 'de lungone dromença',\n", + " 'meg chi reso dade',\n", + " 'de lungone dromença',\n", + " 'meg chi reso dade',\n", + " 'de meg chi reso le praloren',\n", + " 'te le pralen reso',\n", + " 'duj ges mulatino',\n", + " 'te pinjaren mande',\n", + " 'duj ges mulatino',\n", + " 'te pinjaren mande',\n", + " 'de kon i la romano chavo',\n", + " 'ej de ma devla',\n", + " 'duj edjer koroni',\n", + " 'hot te kerav devlam',\n", + " 'duj edjer koroni',\n", + " 'hot te kerav devlam',\n", + " 'hot te kerav muri voja',\n", + " 'zotar mamo zotar',\n", + " 'lungone dromença',\n", + " 'de kaj me mamo raklo',\n", + " 'lungone dromença',\n", + " 'de kaj me mamo raklo',\n", + " 'feri mure le praloren',\n", + " 'me piav mulatinav',\n", + " 'le but romença',\n", + " 'maj sig le tchirença',\n", + " 'le bute romença',\n", + " 'maj sig le tchirença',\n", + " 'apal chore mamo le hralença',\n", + " 'gieokhani himdeureot deon shigandeul',\n", + " 'myeot beonigo pogi hago shipdeon nanal deul',\n", + " 'jeo muni yeolligo bichi nae nuneul balgge bichulttae',\n", + " 'kkum kkweo wasseotdeon sungan',\n", + " 'this is my dream, gakkeumsshik hime buchyeo sseureo jigo shipeulttae',\n", + " 'it was my dream, myeot beoneul neomeo jyeodo nal dashi seweo jungeon',\n", + " \"you're my dream, you're my soul, you're my reason\",\n", + " 'saragari iu baro neo, i need you girl, niga nawi kkum',\n", + " 'shwipji anheun gireul georeo gandedo',\n", + " 'eonjekkaji nawa hamkke georeo julsu itgetni',\n", + " 'jeo muni yeolligo bichi nae nuneul balgge bichulttae',\n", + " 'neoreul bolsuga isseo',\n", + " 'this is my dream, gakkeumsshik hime buchyeo sseureo jigo shipeulttae',\n", + " 'it was my dream, myeot beoneul neomeo jyeodo nal dashi seweo jungeon',\n", + " \"you're my dream, you're my soul, you're my reason\",\n", + " 'saragari iu baro neo, i need you girl, niga nawi kkum',\n", + " 'pogihago shipeul ttaedo neomu manhat jiman',\n", + " 'dashi narireu kyeojun geon',\n", + " 'meomchul su eobseo neol wihae norae haneun geol',\n", + " \"igeon nawi kkum, you're my dream\",\n", + " 'this is my dream, gakkeumsshik hime buchyeo sseureo jigo shipeulttae',\n", + " 'it was my dream, myeot beoneul neomeo jyeodo nal dashi seweo jungeon',\n", + " \"you're my dream, you're my soul, you're my reason\",\n", + " 'saragari iu baro neo, i need you girl, niga nawi kkum',\n", + " 'arirang, arirang, arariyo',\n", + " 'arirang gogaero neomeoganda',\n", + " 'arirang, arirang, arariyo',\n", + " 'arirang gogaero neomeoganda',\n", + " 'nareul beorigo gasineun nimeun',\n", + " 'simnido motgaseo balbbyeongnanda',\n", + " \"i'm always on the run and i hate copy paste for god's sake\",\n", + " 'arirang, arirang, arariyo',\n", + " 'arirang gogaero neomeoganda',\n", + " 'arirang, arirang, arariyo',\n", + " 'arirang gogaero neomeoganda',\n", + " 'cheongcheonghaneuren chanbyeoldo manko',\n", + " 'urine gaseumen huimangdo manta',\n", + " 'oblache, ne se surdi, u doma te chaka domakinya',\n", + " 'cyal svyat si vidyal, i vse si stoish snezhno byal',\n", + " 'zvezdite na nebeto pak shepnat po mezhdu si',\n", + " 'i pletat noshtno cherzhe s koprinena mugla',\n", + " 'nebeto staro tiho pada i se sriva v moite dlani',\n", + " 'nebeto gulta cherni pari i zatrupva kashturki pod snega',\n", + " 'oblache, ne se plashi, tozi batalyon ot buri ti e druzhina',\n", + " 'da veesh dobre nad tezi sela, pyasakut na kusnata zima',\n", + " 'snezhni demoni stoyat na kreposti po vitosha',\n", + " 'mracni bolyari revat i preryazvat noshtnata aura',\n", + " 'old clouds and winds of the south, open the gates of the gloomy balkan. so the fog can pass, into the fields of tracia, into the valleys of tundzha, struma and marica',\n", + " 'poleto razhda tikvi',\n", + " 'planinata geroi']}}},\n", + " 'es': {'sentence': {'pop': {'meta': {'train_data': ['(sen dog)',\n", + " \"don't be like, uh, a cubano\",\n", + " 'be like ? stoned marijuano',\n", + " 'esta capitan pingolete',\n", + " 'swing is here with the force of a machete',\n", + " 'kick mad lingo from spain to tijuana',\n", + " 'real hijo de puta homeboy ask yo mama',\n", + " 'no me importa pinga mi niña',\n", + " \"all i wanna know que 'ta bueno cinga\",\n", + " \"don't be scared echate pa' ca\",\n", + " \"what's the play dog homeboy goin' on\",\n", + " 'ni**as o.g. straight veterano',\n", + " 'master the spanglish style encojonao',\n", + " \"y'all fools know aqui no se juega\",\n", + " \"don't act a fool y no rompa las reglas\",\n", + " 'we bien crazy ass asesino',\n", + " 'get your guns ready aqui viene peligro',\n", + " '(chorus: tego calderon)',\n", + " 'salte con tego',\n", + " 'llegaron los mero mero',\n", + " 'cuba, borinquen, mexico entero',\n", + " 'los angeles, como arriba, andale',\n", + " 'prende la mota, pero lo que quiero es cule',\n", + " 'salte con tego',\n", + " 'llegaron los mero mero',\n", + " 'cuba, borinquen, mexico entero',\n", + " 'los angeles',\n", + " '(b-real)',\n", + " 'they call me papi chulo',\n", + " \"you know i'm puro\",\n", + " 'i never fade away',\n", + " \"you see me comin' get your ass runnin i know you hate away\",\n", + " 'hit the leño harder than most niggas you idolize',\n", + " 'get it started quicker and hit you before you try to hide',\n", + " '(sen dog)',\n", + " 'latin thug roll deep pandillero',\n", + " 'puro los angeles south side ghetto',\n", + " 'carpet, car black y perro loco',\n", + " 'keep an eye on that fiend, porque yo me la cojo',\n", + " \"'e pingado, poca lita\",\n", + " 'saco mi pinga y me singo la pista',\n", + " \"can't get enough of them l.a. skonka\",\n", + " 'get a little wild y me como la chocha',\n", + " 'listen up compa the big cypress loma',\n", + " 'still right here y todavia te controla',\n", + " \"this ain't no telemundo special\",\n", + " 'the homies that i roll with for real will come wet you',\n", + " '(chorus)',\n", + " '(tego calderon)',\n", + " 'hey who the fuck is that',\n", + " 'otro negro loco, daddy',\n", + " 'y necolado, uno de lo pato malo',\n", + " \"mucha mucha bala pa' los raton e desmaya\",\n", + " 'que moriran seguro sin faya',\n", + " \"i ain't neva scared you heard\",\n", + " 'otro bobo, esta jodienda yo la controlo',\n", + " 'vete manso, vete easy, quedate vivo',\n", + " 'como quiera que te ponga lo que hay es castigo',\n", + " 'soy vivo latino, pistola, cuchillo',\n", + " \"pa' defendenlo de los enemigos\",\n", + " 'esto son maligno, no tienen tiqueta ni singo',\n", + " 'pero to dicen lo mismo',\n", + " 'siiiimon, tegon, el de pajon, ese si que un cabron',\n", + " \"un majon, blastin' all these motherfuckers\",\n", + " 'envidiosos, sapos y chotas',\n", + " \"tirale pa' la cabeza, si se va, no regresa\",\n", + " \"eh pa' que suban y ja sepa\",\n", + " 'otro mas, de circulacion se va papa',\n", + " 'y no lloro y ni la mama...',\n", + " 'so many signs so little time',\n", + " \"i can't rush love\",\n", + " \"don't go away say what you say\",\n", + " \"but say that you'll stay\",\n", + " 'no puedo hablar estoy pensando en ti',\n", + " 'ay mi morena you quero hoir tu vos',\n", + " 'suigo mirandote todas las noches',\n", + " 'ay mi morena mi nombre es...',\n", + " 'so many signs so little tïme',\n", + " \"i can't rush love\",\n", + " \"don't go away say what you say\",\n", + " \"but say that you'll stay\",\n", + " 'he recorrido el mundo reventando burbujas con el pang',\n", + " 'y me acabé el double dragon usando el codazo nada más',\n", + " 'con ryu y ken reventé los dientes a chun-li y a blanka',\n", + " 'para que quieres skyrim si es mejor el golden axe',\n", + " 'ya me he gastado mil pelas continuando al metal slug',\n", + " 'me duele el brazo y me suda el escroto',\n", + " 'estoy a punto de matar al monstruo del final',\n", + " 'se ha ido la luz cago en satán',\n", + " 'game over – do you wish to continue',\n", + " 'game over – insert coin and press player one',\n", + " 'me convalidaron la mili por acabarme el combat school',\n", + " 'y saqué el cinturón negro chapeando al yie-ar kung fu',\n", + " 'apretadicos cabemos 4 jugando al gauntlet',\n", + " 'para que juegas al need for speed si ya tienes el out run',\n", + " 'mirones te rodean esperando tu final',\n", + " 'te echan el humo y te soplan la nuca',\n", + " 'igual que en el altered beast me empiezo a cabrear',\n", + " 'van a llover ostias a lo final fight',\n", + " 'game over – do you wish to continue',\n", + " 'game over – insert coin and press player one',\n", + " 'esperando la ficha roja al tetris me pongo tenso',\n", + " 'aquel en 3 dimensiones era un truño inmenso',\n", + " 'corrí en gallumbos los cementerios del ghost and goblins',\n", + " 'déjate de call of duty y juega al operation wolfgreen beret, cabal y arkanoid',\n", + " 'pacman y wonderboy',\n", + " 'black tiger, snow bros y enduro racer',\n", + " 'space invaders, asteroids',\n", + " 'moon patrol, mario bros',\n", + " 'ya me han matao, mecagoenrros',\n", + " 'game over – do you wish to continue',\n", + " 'game over – insert coin and press player one',\n", + " '….? so high',\n", + " 'down to this underworld',\n", + " 'plant the steps and later rest',\n", + " 'in fields of dreams with big country greens',\n", + " 'déjame estar que yo hablo;',\n", + " 'y por detrás un sol no mayor que el corazón y el sueño valor;',\n", + " 'de querer un mundo mejor;',\n", + " 'de creer en ver tu y yo en un futuro menos duro y de más valor',\n", + " 'déjame estar que yo lo hago',\n", + " 'camino tu sueño',\n", + " 'we’ve no regret',\n", + " 'to watch the phase burn, old trees',\n", + " 'welcome rebirth, new leaf, turn',\n", + " '…?',\n", + " 'ring of dedication',\n", + " 'laid on foundation',\n", + " 'grist the coffle of memories',\n", + " 'and slowly fade wondery turns',\n", + " 'lo que pasó pasó',\n", + " 'y lo que fue de paso pasó',\n", + " 'y lo que fue el pasado pasó',\n", + " 'y lo de ayer un paso y hoy otro paso en un trazo en el espacio de un tiempo',\n", + " 'somos pasos en un camino antiguo',\n", + " 'nada más',\n", + " 'we’ve no regret',\n", + " 'to watch the phase burn, old trees',\n", + " 'welcome rebirth, new leaf, turn',\n", + " 'todo el trabajo de un pasado tan amado/amargo',\n", + " 'todo este sufrir por mí',\n", + " 'llámame nacer',\n", + " 'llámame viejo por nacer',\n", + " 'llámame hijo del nacer',\n", + " 'semilla de un mundo por hacer',\n", + " 'llámame crecer',\n", + " 'semilla de un mundo por ver',\n", + " 'semilla del ir y sentir',\n", + " 'llámame morir',\n", + " '…? i choose',\n", + " 'thralled waters',\n", + " 'and feed the roost that i clean',\n", + " 'find the reason for being',\n", + " 'and watch the seeds grow',\n", + " 'razón de ir y razón de seguir',\n", + " 'corazón de vivir',\n", + " 'los que han de venir vendrán a pedir una razón de vivir;',\n", + " 'un camino a seguir, y a donde ir apuntaremos adonde venir; corazón',\n", + " 'we’ve no regret',\n", + " 'to watch the phase burn, old trees',\n", + " 'welcome rebirth, new leaf, turn',\n", + " 'yeah (uoh-oh-oh-oh)',\n", + " 'rasel!',\n", + " '(uoh-oh-oh-oh)',\n", + " 'featuring (uoh-oh-oh-oh)',\n", + " 'baby noel',\n", + " \"let's go!\",\n", + " \"let's dance, everybody on the dance for dance\",\n", + " \"all night long, so let's getting on dance\",\n", + " 'todo el mundo on fire (dance)',\n", + " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", + " 'tu forma de moverte te desata',\n", + " 'cuando bailas haces tuyas las miradas',\n", + " 'eres fuego y cuando empiezas ya no paras',\n", + " 'vamos a bailar (uoh-oh-oh-oh)',\n", + " \"yo', ha llegado el momento\",\n", + " 'tu cuerpo te pide más de un movimiento',\n", + " 'hazlo suave, tú báilalo lento',\n", + " 'eres una loca lo llevas dentro',\n", + " 'you wanna start to dance tonight',\n", + " 'and no matter where you are',\n", + " 'barcelona, sevilla, madrid, new york',\n", + " \"let's go!\",\n", + " \"let's dance, everybody on the dance for dance\",\n", + " \"all night long, so let's getting on dance\",\n", + " 'todo el mundo on fire (dance)',\n", + " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", + " '(put your hands up)',\n", + " \"let's dance, everybody on the dance for dance\",\n", + " \"all night long, so let's getting on dance\",\n", + " 'todo el mundo on fire (dance)',\n", + " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", + " \"let's dance\",\n", + " 'jajaja',\n", + " \"yo! are you ready let's go\",\n", + " 'one, two, three tu tienes flow',\n", + " 'esto es mejor que ningún colocón',\n", + " 'te mueves sexy en la pista bombón',\n", + " 'si tu cuerpo quiere bailar',\n", + " 'tu mente le sigue sin más',\n", + " 'vive la noche, el momento, el lugar',\n", + " 'around the world',\n", + " 'tu forma de moverte te desata',\n", + " 'cuando bailas haces tuyas las miradas',\n", + " 'eres fuego y cuando empiezas ya no paras',\n", + " 'vamos a bailar (uoh-oh-oh-oh)',\n", + " \"let's go!\",\n", + " \"let's dance, everybody on the dance for dance\",\n", + " \"all night long, so let's getting on dance\",\n", + " 'todo el mundo on fire (dance)',\n", + " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", + " '(put your hands up)',\n", + " \"let's dance, everybody on the dance for dance\",\n", + " \"all night long, so let's getting on dance\",\n", + " 'todo el mundo on fire (dance)',\n", + " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", + " '(put your hands up)',\n", + " \"let's dance\",\n", + " 'haz el favor y suelta lo que llevas',\n", + " 'todos sabemos que tu estas bien',\n", + " 'tus labios brillan en la noche ciega',\n", + " 'y te mueves como una pantera',\n", + " 'báilalo oeh, oh!, báilalo oeh, oh!',\n", + " 'miami levanta la mano al sol (uoh-oh-oh-oh)',\n", + " \"let's dance, everybody on the dance for dance\",\n", + " \"all night long, so let's getting on dance\",\n", + " 'todo el mundo on fire (dance)',\n", + " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", + " '(put your hands up)',\n", + " \"let's dance, everybody on the dance for dance\",\n", + " \"all night long, so let's getting on dance\",\n", + " 'todo el mundo on fire (dance)',\n", + " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", + " \"let's dance\",\n", + " 'when the rainbow is rising up',\n", + " 'all the stars shine in the sky',\n", + " 'i remember now your love',\n", + " 'and my mermaid dreams come true',\n", + " 'my prince is blue',\n", + " \"and a hero'll come\",\n", + " 'when i sing my song',\n", + " 'my fantasy love',\n", + " 'oyes cantos en el mar',\n", + " 'las estrellas ves brillar',\n", + " 'sientes algo en tu interior',\n", + " 'sensaciones mágicas recordarás',\n", + " 'que viajó en el tiempo',\n", + " 'fue ancestral, fue perfecto...',\n", + " 'soy una pony',\n", + " 'y en mis sueños podrás encontrar',\n", + " 'todas las respuestas que no lográs hallar',\n", + " 'ansias entender el porqué de este amor',\n", + " 'amor de fantasía en nuestro corazón',\n", + " 'guardado para siempre en las olas del mar',\n", + " 'mi alma de sirena te quiero entregar',\n", + " 'cepillo mis cabellos mientras te canto',\n", + " 'regresa a mí, vuelve por favor',\n", + " 'when the rainbow is rising up',\n", + " 'all the stars shine in the sky',\n", + " 'i remember now your love',\n", + " 'and my mermaid dreams come true',\n", + " 'my prince is blue',\n", + " \"and a hero'll come\",\n", + " 'when i sing my song',\n", + " 'my fantasy love',\n", + " 'i was born a pony once upon a time',\n", + " \"my dreams are full of answers you don't understand\",\n", + " 'dolphins in the ocean keep this memory',\n", + " 'myself, my heart, my mind have a fantasy',\n", + " 'i remember all your answers while i comb my hair',\n", + " 'the story that we play is a fairy tale',\n", + " 'you are the perfect prince what i always want',\n", + " 'and summer after summer we are all we want',\n", + " \"what happened? i don't know\",\n", + " 'me dicen que por borracho josé en la acera quedó',\n", + " \"what happened? i don't know\",\n", + " 'they tell me that drunken joe while drinking fell on his nose',\n", + " 'josé yo le decía deja de estar bebiendo',\n", + " 'porque esas borracheras no dan na',\n", + " 'y el me contestaba: \"ah! yo se lo que estoy haciendo\"',\n", + " 'y en una acera en broadway fue a parar',\n", + " \"what happened? i don't know\",\n", + " 'me dicen que por borracho josé en la acera quedó',\n", + " \"what happened? i don't know\",\n", + " 'they tell me that drunken joe while drinking fell on his nose',\n", + " 'many times i told him:',\n", + " '\"hey joe, man, why don\\'t you stop drinking?\"',\n", + " 'cause in the end you might just come on down',\n", + " 'every time he answered me',\n", + " '\"hey go mind your own business.\"',\n", + " 'and yesterday on broadway he came down.... i beg you...',\n", + " \"what happened? i don't know\",\n", + " 'me dicen que por borracho josé en la acera quedó',\n", + " \"what happened? i don't know\",\n", + " 'they tell me that drunken joe while drinking fell on his nose',\n", + " 'me dicen que por borracho josé en la acera quedó',\n", + " 'they told me that drunken joe while drinking fell on his nose',\n", + " 'coro:',\n", + " \"what happened? i don't know\",\n", + " 'me dicen que por borracho josé en la calle quedó',\n", + " 'lo vi pasar cabizbajo por una calle en downtown',\n", + " 'yo regresaba al trabajo y el comenzaba jumao',\n", + " \"you're pulling quarters from people\",\n", + " 'for coffees you never drink',\n", + " \"you're always hanging on corners\",\n", + " \"drinking, drinking so you won't think\",\n", + " '~',\n", + " 'durmiendo en los callejones del manhattan nocturnal',\n", + " 'buscando en los zafacones desayuno al despertar',\n", + " \"pidiendo plata a la gente pa' poder alcohol comprar\",\n", + " 'con el cuento del hamburguer, josé el alcohol te va a tragar',\n", + " 'josé no tiene familia nadie sabe a donde nació',\n", + " 'nadie sabe donde duerme, ni desde donde bajó',\n", + " '~',\n", + " 'josé ya suelta la esquina y la botella de ron',\n", + " 'cógelo suave molina dale un descanso al riñón',\n", + " 'ya ya ya ya no quiere trabajar allá en la panadería',\n", + " 'sin embargo te amaneces en after hours todos los días',\n", + " 'new york que es una manzana muy difícil de probar',\n", + " 'la cosa ahora esta mas dura con el koch en city hall',\n", + " 'te entregué mi piel',\n", + " 'me mudé en tu ser',\n", + " 'sólo quise ser ésa mujer',\n", + " '(siempre te cuidé',\n", + " 'nunca te fui infiel',\n", + " 'y te amé, te juro',\n", + " 'como a nadie)',\n", + " 'i wanna know',\n", + " 'just let me know',\n", + " 'how could you let me walk away?',\n", + " '(i wanna know',\n", + " 'i gotta know',\n", + " 'how could you just take my love away?',\n", + " 'after all that we made',\n", + " 'somebody please explain!)',\n", + " 'te perdiste mi amor y yo',\n", + " 'y yo te estaba amando',\n", + " '(te perdiste mi amor and you don’t know',\n", + " 'dejaste mi cama llorando)',\n", + " 'cada uno perdió lo que muchos no han logrado',\n", + " 'ni soñando',\n", + " 'saliste a buscar',\n", + " 'y no sabían igual',\n", + " 'ésos besos que yo te entregaba',\n", + " '(no pudiste hallar la felicidad',\n", + " 'ésa que tanto deseabas)',\n", + " 'i wanna know',\n", + " 'just let me know',\n", + " 'how could you let me walk away?',\n", + " '(i wanna know',\n", + " 'i gotta know',\n", + " 'how could you just take my love away?',\n", + " 'after all that we made',\n", + " 'somebody please explain!)',\n", + " 'te perdiste mi amor y yo',\n", + " 'y yo te estaba amando',\n", + " '(te perdiste mi amor and you don’t know',\n", + " 'dejaste mi cama llorando)',\n", + " 'cada uno perdió lo que muchos no han logrado',\n", + " 'ni soñando',\n", + " 'royce',\n", + " 'lady t',\n", + " 'te perdiste mi amor y yo',\n", + " 'y yo te estaba amando',\n", + " '(te perdiste mi amor and you don’t know',\n", + " 'dejaste mi cama llorando)',\n", + " 'te perdiste mi amor, oh no',\n", + " 'nunca supiste cuándo',\n", + " 'te perdiste mi amor y hoy',\n", + " 'hoy podemos remediarlo',\n", + " 'no sé qué nos pasó',\n", + " '¿por qué no lo intentamos de nuevo?',\n", + " 'moving, all the people moving',\n", + " 'one move for just one dream',\n", + " 'we see moving, all the people moving',\n", + " 'one move for just one dream',\n", + " 'tiempos de pequeños movimientos... movimientos en reacción',\n", + " 'una gota junto a otra hace oleajes, luago, mares... océanos',\n", + " 'nunca una ley fue tan simple y clara: acción, reacción, repercusión',\n", + " 'murmullos se unen forman gritos, juntos somos evolución',\n", + " 'moving, all the people moving',\n", + " 'one move for just one dream',\n", + " 'we see moving, all the people moving',\n", + " 'one move for just one dream',\n", + " 'escucha la llamada de \"mama tierra\", cuna de la creación',\n", + " 'su palabra es nuestra palabra, su \"quejío\" nuestra voz',\n", + " 'si en lo pequeño está la fuerza, si hacia lo simple anda la destreza',\n", + " 'volver al origen no es retroceder, quizás sea andar hacia el saber',\n", + " 'moving, all the people moving',\n", + " 'one move for just one dream',\n", + " 'we see moving, all the people moving',\n", + " 'one move for just one dream...',\n", + " 'el chico apresura el paso...',\n", + " '...ura el...',\n", + " '...sura el paso para evi...',\n", + " '..con los con...',\n", + " '...luni...',\n", + " '...idamente...',\n", + " '...pasa...',\n", + " '...pasa frente de la casa de su maestra la señorita tic',\n", + " '...la se...',\n", + " '...la seño...',\n", + " '...la señori...',\n", + " 'tic tic tic tic tic...',\n", + " '...la serita tic...',\n", + " '...y que despues...',\n", + " '...calle...',\n", + " 'brillantina music',\n", + " 'one, two, three, four, five',\n", + " 'brillantina mu...',\n", + " '...two, three, four, five',\n", + " 'brillan',\n", + " 'brillan',\n", + " 'brillan',\n", + " 'brillantina',\n", + " 'telefunka',\n", + " 'brillantina music',\n", + " 'brillan',\n", + " 'brillantina',\n", + " 'telefunka',\n", + " 'brillantina oshalala',\n", + " 'brillantina music',\n", + " 'brillantina music',\n", + " 'brillantina music',\n", + " '...two, three, four, five',\n", + " 'brillantina music',\n", + " 'brillantina music',\n", + " 'brillantina music',\n", + " '...three, four, five',\n", + " 'telefunka',\n", + " 'brillantina oshalala',\n", + " 'brillantina music',\n", + " 'brillantina music',\n", + " 'brillantina music',\n", + " '...two, three, four, five',\n", + " 'brillantina music',\n", + " 'brillantina music',\n", + " 'brillantina music',\n", + " '...three, four, five',\n", + " 'vento mas siento... te quiero decir',\n", + " 'que ya tus juegos... no son para me (no!)',\n", + " 'sabia a no un precipo qien en mentias y por eso cambien',\n", + " 'sabias que me en dias sateverme perdon y asi fue',\n", + " 'ya no soy igual todo cambio (noo!)',\n", + " 'la luz desde amor ya ser fino (oh!)',\n", + " \"quien loco playa, playa fa sho' (playa fa sho')\",\n", + " \"you're dealing with a pimp, i'm a pro (pimp, i'm a pro)\",\n", + " 'gave you more than enough, kept you iced out you loved it',\n", + " \"now that it's done no more fuss, girl i've been there and done it\",\n", + " 'shhh!',\n", + " 'shut it up!',\n", + " 'lemme let you know whats on my mind',\n", + " 'give it up! (give it up!)',\n", + " 'what we had was all of waste of time (oh my)',\n", + " \"mentira remiedio estoy no se va' regar\",\n", + " 'yo soy bandolero no me vaya provocar',\n", + " 'ya no soy igual todo cambio',\n", + " 'la puerta desde amor y haces centro',\n", + " \"quien loco playa, playa fa sho' (playa fa sho')\",\n", + " \"you're dealing with a pimp, i'm a pro (pimp, i'm a pro)\",\n", + " 'gave you more than enough, kept you iced out you loved it',\n", + " \"now that it's done no more fuss, girl i've been there and done it\",\n", + " \"quien loco playa, playa fa sho' (playa fa sho')\",\n", + " \"you're dealing with a pimp, i'm a pro (pimp, i'm a pro)\",\n", + " 'gave you more than enough, kept you iced out you loved it',\n", + " \"now that it's done no more fuss, girl i've been there and done it\",\n", + " 'he he ha! i told you i was coming!.. toby love... you know...',\n", + " \"now that i've changed 'cause of your games\",\n", + " \"i'll give you back all my heart-ache and pain\",\n", + " 'la masta dejaste girl, eres tu canos yo',\n", + " \"quien loco playa, playa fa sho' (playa fa sho')\",\n", + " \"you're dealing with a pimp, i'm a pro (pimp, i'm a pro)\",\n", + " 'gave you more than enough, kept you iced out you love it',\n", + " \"now that it's done no more fuss, girl i've been there and done it\",\n", + " \"quien loco playa, playa fa sho' (playa fa sho')\",\n", + " \"you're dealing with a pimp, i'm a pro (pimp, i'm a pro)\",\n", + " 'gave you more than enough, kept you iced out you love it',\n", + " \"now that it's done no more fuss, girl i've been there and done it\",\n", + " 'you feel the magic',\n", + " 'get emotion, feel your body',\n", + " \"and you're all the things, you can do\",\n", + " 'cuanto necesitaba un respiro, desabrocharme el vestido',\n", + " 'perder sentido',\n", + " 'cuanto necesitaba',\n", + " 'unas manos que se alzaran al aire',\n", + " 'y es que todo lo que quiero esta a puntito de caer',\n", + " 'y cuando creo que lo tengo no lo puedo retener',\n", + " 'hay que pena',\n", + " 'se van los problemas',\n", + " 'se van los dilemas',\n", + " 'me quedo serena',\n", + " 'y se va llevando, te va embaucando',\n", + " 'you feel the magic',\n", + " 'get emotion',\n", + " \"feel you're body\",\n", + " \"and you're all the things you can do\",\n", + " 'cuanto necesitaba un respiro',\n", + " 'sin pedir nada a cambio',\n", + " 'es dar y probarlo',\n", + " 'para ver que se siente',\n", + " 'ocupando otro ambiente',\n", + " 'y se va llevando',\n", + " 'te va embaucando',\n", + " 'y vas pensado',\n", + " 'en lo que quieres despejar',\n", + " 'now you feel the magic',\n", + " 'get emotion',\n", + " \"feel you're body\",\n", + " \"and you're all the things you can do\",\n", + " 'feel the magic (feeling the magic)',\n", + " 'get emotion (feeling the magic)',\n", + " \"feel you're body\",\n", + " \"and you're all the things, you can do\",\n", + " 'feel',\n", + " 'feeling the magic',\n", + " 'feeling the magic',\n", + " 'y que importa la incognita:',\n", + " 'cuántica',\n", + " 'química',\n", + " 'física',\n", + " 'matematica',\n", + " 'si te veo en el fondo',\n", + " 'con cara de asombro',\n", + " 'me das un minuto',\n", + " 'me das un minuto',\n", + " 'me das un minuto (you feel the magic)',\n", + " 'me das un minuto',\n", + " 'me das un minuto (get emotion)',\n", + " 'me das un minuto',\n", + " \"me das un minuto(feel you're body)\",\n", + " 'me das un minuto',\n", + " \"me das un minuto(and you're all the things, you can do)\",\n", + " 'me das un minuto(you feel the magic)',\n", + " 'me das un minuto',\n", + " 'me das un minuto',\n", + " 'me das un minuto(get emotion)',\n", + " 'me das un minuto',\n", + " 'me das un minuto',\n", + " \"me das un minuto(feel you're body)\",\n", + " 'me das un minuto',\n", + " \"me das un minuto(and you're all the things, you can do)\",\n", + " 'feel the magic (feeling the magic)',\n", + " 'get emotion (feeling the magic)',\n", + " \"feel you're body\",\n", + " \"and you're all the things you can do\",\n", + " 'morrocoyo…',\n", + " 'un, dos, tres, cua!',\n", + " 'lo que te vengo a cantar en un poco slow',\n", + " 'para que tu te lo aprendas te tiro mi flow',\n", + " 'tengo tanto que decir',\n", + " \"and you don't have to know\",\n", + " \"pero si you need the feelin' con mi stereo boom\",\n", + " 'y si tu quiere gozarlo solo espicha on',\n", + " \"asi comienza el vacile pa que you don't go\",\n", + " 'que repique, que repique bien duro el …',\n", + " 'y que se cierre la cuadra porque llegue yo',\n", + " \"i know you feelin' right now\",\n", + " 'hay corre corre morrocoyo',\n", + " 'que te coje el perico ligero',\n", + " 'hay brinca morrocoyo',\n", + " 'and im feeling right now',\n", + " 'hay corre corre morrocoyo',\n", + " 'que te coje el perico ligero',\n", + " 'hay brinca',\n", + " 'people dancing in the street all the night tonight',\n", + " 'y comienzan a beber a todo el mundo high',\n", + " 'cuando la cosa esta buena empieza the fight',\n", + " \"pero todo es cultura and and im feelin' right\",\n", + " 'la música esta buena con stereo …',\n", + " 'and some people … in the other side',\n", + " 'cuando piensas que se acaba el aire at morning five',\n", + " 'te toma la sopita and vuelva y juega men',\n", + " 'óyelo men',\n", + " 'óyelo men',\n", + " 'óyelo men',\n", + " \"i know you feelin' right now\",\n", + " 'hay corre corre morrocoyo',\n", + " 'que te coje el perico ligero',\n", + " 'hay brinca morrocoyo',\n", + " \"and im feelin' right now\",\n", + " 'hay corre corre morrocoyo',\n", + " 'que te coje el perico ligero',\n", + " 'hay brinca',\n", + " 'feeling right tonight',\n", + " 'cause everything is right',\n", + " 'pero quiero que me digas si te gusta my style',\n", + " 'no es de united ni de miami vice',\n", + " 'de la china, de argentina ni tampoco de uruguay',\n", + " 'es de acá y de bogotá y de la costa pa que te sientas bien high',\n", + " 'ayayay yo no me vo a queja',\n", + " 'pero si tu no baila',\n", + " 'me vo a pone a llora',\n", + " 'tonight tonight tonight tonight',\n", + " 'morrocoyo',\n", + " 'morrocoyo',\n", + " 'morrocoyo',\n", + " 'morrocoyo',\n", + " 'morrocoyo',\n", + " 'every chance',\n", + " 'every chance that i take',\n", + " 'i take it on the road',\n", + " 'those kilometres and the red lights',\n", + " 'i was always looking left and right',\n", + " \"oh, but i'm always crashing\",\n", + " 'in the same car',\n", + " 'jasmine, i saw you peeping',\n", + " 'as i pushed my foot down to the floor',\n", + " 'i was going round and round the hotel garage',\n", + " 'must have been touching close to 94',\n", + " \"oh, but i'm always crashing\",\n", + " 'in the same car',\n", + " 'en cada oportunidad',\n", + " 'todas las oportunidades que tomo',\n", + " 'supongo que en el camino',\n", + " 'los kilómetros y las luces rojas',\n", + " 'siempre estaba mirando a izquierda y derecha',\n", + " 'oh, pero yo siempre estoy rompiendo',\n", + " 'en el mismo coche',\n", + " 'jasmine, te vi espiando',\n", + " 'al empujar el pie hacia el suelo',\n", + " 'estaba dando vueltas y más vueltas en el garaje del hotel',\n", + " 'debe de haber estado tocando cerca de 94',\n", + " 'oh, pero yo siempre estoy rompiendo',\n", + " 'en el mismo coche',\n", + " 'si se',\n", + " 'puede',\n", + " 'si se',\n", + " 'puede',\n", + " 'tierra',\n", + " 'y libertad',\n", + " 'tierra',\n", + " 'y libertad',\n", + " 'si se',\n", + " 'puede',\n", + " 'si se',\n", + " 'puede',\n", + " 'yes we',\n", + " 'yes we can',\n", + " 'yes we',\n", + " 'yes we can',\n", + " 'si se',\n", + " 'puede',\n", + " 'si se',\n", + " 'puede',\n", + " 'libertad',\n", + " 'y libertad',\n", + " 'y libertad',\n", + " 'yes we',\n", + " 'yes we can',\n", + " 'yes we',\n", + " 'yes we can',\n", + " 'si la vida la das',\n", + " 'a quien te pide ayuda',\n", + " 'why en tu alma no hay',\n", + " 'una sombra de maldad',\n", + " 'rezas una oración',\n", + " 'es el credo que esperaba',\n", + " 'busco la dirección',\n", + " 'que no pude encontrar',\n", + " 'why me abandono a ti',\n", + " 'a una paz estable en mí',\n", + " 'que está repleta de quietud',\n", + " \"you'll always be a part of me\",\n", + " 'quédate',\n", + " 'en el viento que ha soplado',\n", + " \"you'll always be inside of me\",\n", + " 'quédate por favor',\n", + " 'suspendida en el cielo',\n", + " 'ligera why sin cadenas',\n", + " 'cuando estas junto a mí',\n", + " 'me entiendo mucho más',\n", + " 'solamente seré',\n", + " 'esclava del silencio',\n", + " 'contemplándote a ti',\n", + " 'comienzo a revivir',\n", + " 'why me abandono a ti',\n", + " 'a una paz serena en mí',\n", + " 'que esta repleta de quietud',\n", + " \"you'll always be a part of me\",\n", + " 'quédate',\n", + " 'en el sitio al que has llegado',\n", + " \"you'll always be inside of me\",\n", + " 'quédate por favor',\n", + " 'why me abandono a ti',\n", + " 'a una paz tranquila en mí',\n", + " 'que esta repleta de quietud',\n", + " \"you'll always be a part of me\",\n", + " 'sigo aquí',\n", + " 'en el viento que ha soplado',\n", + " \"you'll always be inside of me\",\n", + " 'quédate por favor',\n", + " \"you'll always be a part of me\",\n", + " 'sigo aquí',\n", + " 'en el sitio que he encontrado',\n", + " \"you'll always be inside of me\",\n", + " 'me quedo aquí con mi amor',\n", + " 'quédate por favor',\n", + " 'sigo aquí',\n", + " \"...you'll always be a part of me\",\n", + " 'tani',\n", + " \"tú ere' un diamante, tú ere' una estrella\",\n", + " 'yo nunca había visto una mujer tan bella',\n", + " 'todo el tiempo yo pienso en ti (tiempo)',\n", + " \"y en las cosa' que te haría baby\",\n", + " 'para mí no es fácil',\n", + " \"saber que tú ere' de él\",\n", + " 'que despierta contigo en la mañana',\n", + " 'en tu cama, tocando tu piel',\n", + " \"y es que tú eres'tan sexy\",\n", + " 'que te lo quiero hacer',\n", + " \"devorarte to'a, matar tus gana'\",\n", + " \"yo 'entro de tu piel\",\n", + " 'girl, if you want',\n", + " 'i can be your refuge',\n", + " \"i'll come to your rescue\",\n", + " \"girl l'm here to impress you, yeah\",\n", + " 'and if you need',\n", + " 'i can be your refuge',\n", + " \"l'll come to your rescue\",\n", + " 'but first',\n", + " 'girl, you got to let him go',\n", + " 'oh-oh-oh-oh-oh-ooh',\n", + " 'you should let him go',\n", + " 'oh-oh-oh-oh-oh-ooh',\n", + " 'girl, you got to let him go',\n", + " 'oh-oh-oh-oh-oh-ooh',\n", + " 'you should let him go',\n", + " 'oh-oh-oh-oh-oh-ooh',\n", + " 'only if you let him go',\n", + " 'la boca se nos hace agua (ah)',\n", + " \"al imaginarno' que estamo' tocándono' (na, na, na)\",\n", + " 'baby, me gusta mucho, la verdad mucho',\n", + " 'pienso en ti hasta cuando me ducho',\n", + " \"todo el tiempo quiero saber dónde está y qué hace'\",\n", + " 'y eso que no la conozco hace mucho',\n", + " 'black jack, baby tell me why, why, why',\n", + " 'why you look sad every time',\n", + " 'why you just go and tell him bye, bye, bye',\n", + " 'the same guy makes you cry, cry, cry',\n", + " 'black jack, baby tell me why, why, why',\n", + " 'why you look sad every time',\n", + " 'why you just go and tell him bye, bye, bye',\n", + " 'the same guy makes you cry, cry, cry',\n", + " \"tú ere' un diamante, tú ere' una estrella\",\n", + " 'yo nunca había visto una mujer tan bella',\n", + " 'todo el tiempo yo pienso en ti (tiempo)',\n", + " \"y en las cosa' que te haría feliz\",\n", + " 'para mí no es fácil',\n", + " \"saber que tú ere' de él\",\n", + " 'que despierta contigo en la mañana',\n", + " 'en tu cama, tocando tu piel',\n", + " \"y es que tú eres'tan sexy\",\n", + " 'que te lo quiero hacer',\n", + " \"devorarte to'a, matar tus gana'\",\n", + " \"yo 'entro de tu piel\",\n", + " 'girl, you got to let him go',\n", + " 'oh-oh-oh-oh-oh-ooh',\n", + " 'you should let him go',\n", + " 'oh-oh-oh-oh-oh-ooh',\n", + " 'girl, you got to let him go',\n", + " 'oh-oh-oh-oh-oh-ooh',\n", + " 'you should let him go',\n", + " 'oh-oh-oh-oh-oh-ooh',\n", + " 'only if you let him go',\n", + " 'black jack, baby tell me why, why, why',\n", + " 'why you look sad every time',\n", + " 'why you just go and tell him bye, bye, bye',\n", + " 'the same guy makes you cry, cry, cry',\n", + " 'hook:',\n", + " 'why does your love hurt so much?',\n", + " 'tell me why!',\n", + " 'tell me why!',\n", + " 'does your love hurts so much?',\n", + " 'tell me why!',\n", + " 'tell me why!',\n", + " 'verse 1:',\n", + " 'sabes que me gusta de ti',\n", + " 'me gusta la forma en que se arruga tu nariz',\n", + " 'cuando me mientes y me dices que sí me quieres',\n", + " 'y luego vas con otros, uh-baby',\n", + " '¿sabes que más odio de ti?',\n", + " 'dices que te gusto, luego pasas de mi',\n", + " 'ya mi corazón tiene una gran cicatriz',\n", + " 'y en vez de dejárselo un tatuaje en tu nombre',\n", + " 'pero',\n", + " 'hook:',\n", + " 'why does your love hurt so much?',\n", + " 'tell me why!',\n", + " 'tell me why!',\n", + " 'does your love hurts so much?',\n", + " 'tell me why!',\n", + " 'tell me why!',\n", + " 'hook:',\n", + " 'why does your love hurt so much?',\n", + " 'tell me why!',\n", + " 'verse 2:',\n", + " 'sabes que me gusta de ti',\n", + " 'cierras los ojos cuando dices que sí',\n", + " 'me vuelvo un loco, no respondo por mí',\n", + " 'estoy desahuciado y no lo notas, uh-baby',\n", + " '¿sabes que más odio de ti?',\n", + " 'me dicen que tu amor ya tiene precio por ahí',\n", + " 'estoy hustlereando peleando para estar junto a ti',\n", + " 'oro y diamantes que iluminen tu noche, pero',\n", + " 'hook:',\n", + " 'why does your love hurt so much?',\n", + " 'tell me why!',\n", + " 'tell me why!',\n", + " 'does your love hurts so much?',\n", + " 'tell me why!',\n", + " 'tell me why!',\n", + " 'does your love hurts so much?',\n", + " 'tell me why!',\n", + " 'tell me why!',\n", + " 'does your love hurts so much?',\n", + " 'tell me why!',\n", + " 'the sluts on my street wear stilettos on big feet',\n", + " 'they hang out at le bar and never go far',\n", + " 'la accion los espera aunque nadie los quiera',\n", + " 'y les falta something a big wedding ring',\n", + " 'gorditas, nopales el vende en las calles',\n", + " 'le da mucha bronca porque nadie compra',\n", + " 'and he just needs something to make him legit',\n", + " 'and he just needs something to make him legit',\n", + " 'a la mode, a la mode, quiero estar a la mode!',\n", + " 'me casare contigo quiero mucha lana',\n", + " 'no me da verguenza las mil exigencies',\n", + " 'que me pide a mi la globalizacion',\n", + " 'que me pice a mi la globalizacion',\n", + " 'a la mode, a la mode, quiero estar a la mode!',\n", + " 'el padre',\n", + " 'silenciado artista',\n", + " 'refugiado comunista',\n", + " 'calzones de guía',\n", + " 'pa los yanqui caía',\n", + " 'en barco de llanta',\n", + " 'rezando por vida',\n", + " 'en la tierra chocó',\n", + " '\"american citizen?\"',\n", + " 'hermano cubano',\n", + " 'en país mexicano',\n", + " 'buscando salida',\n", + " 'de ser comunista',\n", + " 'hermanos balseros',\n", + " 'mickey mouse marineros',\n", + " 'mi papi chingón',\n", + " 'me comió tiburón',\n", + " 'méxico me liberó',\n", + " 'cuando castro ganó',\n", + " '\"no soy \\'american\\'\"',\n", + " 'viva méxico cabrón',\n", + " 'gobierno cubano',\n", + " 'por que tan culero',\n", + " 'con nada de nuevo',\n", + " 'aguantan o muero',\n", + " 'hoy soy! anti-castro!!',\n", + " 'the father',\n", + " 'silenced artist',\n", + " 'communist refugee',\n", + " 'underwear for a sail',\n", + " 'to the yankees he bailed',\n", + " 'in a boat made of tires',\n", + " 'praying for his life',\n", + " 'as he crashed onto land',\n", + " '\"american citizen?\"',\n", + " 'my cuban brother',\n", + " 'on mexican soil',\n", + " 'looking for an out',\n", + " 'from being communist',\n", + " 'fellow inner-tube riders',\n", + " 'mickey mouse sailors',\n", + " 'my bitchen dad',\n", + " 'became shark bait',\n", + " 'mexico set me free',\n", + " \"during castro's victory\",\n", + " 'i\\'m not \"american\"',\n", + " 'long live mexico mother fucker!',\n", + " 'cuban government',\n", + " 'why such assholes',\n", + " 'with no new ideas',\n", + " 'deal with it-or die!',\n", + " \"today, i'm anti-castro\",\n", + " 'get out coyote and leave my soul',\n", + " 'get out, get out , get out carbón',\n", + " 'come together!',\n", + " '!mil coyotes sediciosos',\n", + " 'boicoteando tu pinche fiesta!',\n", + " '¡mil coyotes mariguanos',\n", + " 'bailando en comuna!',\n", + " 'el rock steady, rock ska (you',\n", + " 'wanna dance all night)',\n", + " 'rock steady rock, retro ska',\n", + " 'rock setady rock ska',\n", + " '(pachanga del coyote)',\n", + " 'ya viene otra vez la veintitres',\n", + " 'descomposicion del jugo gastrico',\n", + " 'eliminacion toxica estomacal',\n", + " 'mecanismo de vomitos',\n", + " 'desechos de tuberculosis',\n", + " 'abscesos y heridas',\n", + " 'invasion bacteriana',\n", + " 'linfagitis precoz',\n", + " 'se practica la sona gastrica',\n", + " 'eructos acidos',\n", + " 'hemorragia,vomitos',\n", + " 'heces teñidos de sangre',\n", + " 'ulcera hacia la cavidad estomacal',\n", + " 'grotesca hematemesis',\n", + " 'enzima enuresis',\n", + " 'cronico dolor',\n", + " 'virus asociados a linfadenopatia',\n", + " 'acrosianosis y eritromelalgia',\n", + " 'paracoccidioidomicosisproctitissarcomucosis',\n", + " 'blastomicosis y ficomicosis',\n", + " 'cromomicosis y esporotricosis',\n", + " 'padecimiento linfadenopatia',\n", + " 'mugre oral',\n", + " 'sudores nocturnos',\n", + " 'diarrea cronica',\n", + " 'condilomas rectales',\n", + " 'enflaquecimiento y asco',\n", + " 'pneumocystis carinii',\n", + " 'criptosporidiosis cronica',\n", + " 'toxoplasmosis',\n", + " 'estrongiloidiasis extriintestinal',\n", + " 'isosporiasis',\n", + " 'esofagica bronquial',\n", + " 'criptosis histoplasmosial',\n", + " 'infeccion micobacteriana',\n", + " '(...goza la vida mi socio...)',\n", + " 'algo excitante va a pasar',\n", + " 'ya comienzan a llegar',\n", + " 'los invitados...',\n", + " 'a sexy-party we gona start!',\n", + " 'she got a beauty bloody ass!',\n", + " \"i'm sex hungry beast...\",\n", + " 'es para mi...',\n", + " 'a disco-blood vamos a ir!',\n", + " 'fight!',\n", + " 'dance!',\n", + " 'blood!',\n", + " 'saturado esta el lugar',\n", + " 'seres y bestias al azar',\n", + " 'comienza el show',\n", + " 'perversos a desfilar!',\n", + " 'sex & gore aqui es normal',\n", + " 'y el sadomasoquismo igual',\n", + " 'quieres probar',\n", + " 'a new sensation in your ass',\n", + " 'fight!',\n", + " 'dance!',\n", + " 'blood!',\n", + " 'en esta caverna',\n", + " 'la mas bizarra',\n", + " 'acoge a engendros',\n", + " 'de nuestra camada',\n", + " 'solo de noche',\n", + " 'y desde el pantano',\n", + " 'mi hogar mas cercano',\n", + " 'ya vienen llegando',\n", + " 'she got a beauty bloody ass!',\n", + " \"i'm sex hungry beast...\",\n", + " 'es para mi...',\n", + " 'a disco-blood vamos a ir',\n", + " 'hibrido es el caminar',\n", + " 'hidra! hidra! a bailar',\n", + " 'disco blood!',\n", + " 'desfile del mas alla!',\n", + " 'fight!',\n", + " 'dance!',\n", + " 'blood!',\n", + " 'now hear this (now hear this)',\n", + " 'ah, rodeo!',\n", + " 'in come the thing they call remix program',\n", + " 'sean paul alongside farruko and akon',\n", + " \"you don't know? we run it strong all night long\",\n", + " 'biri banban, banbanbang',\n", + " 'dy',\n", + " 'farruko',\n", + " 'sean paul',\n", + " 'akon',\n", + " 'inolvidable (¡fuego!)',\n", + " \"esa manera 'e besar (biri banban, banbanban)\",\n", + " \"esa manera 'e bailar (akon!)\",\n", + " 'inolvidable',\n", + " \"esa manera 'e besar\",\n", + " \"esa manera 'e bailar\",\n", + " '(yeah! d-d-dy! go!)',\n", + " 'ponte el cinturón, bebé',\n", + " 'a dos manos agarrate, será un viaje inolvidable',\n", + " 'tú nunca olvidaras mi nombre (no)',\n", + " 'seré un tatuaje en tu piel (¡fuego!)',\n", + " 'los botes en palomino, con todo el barrio fino',\n", + " \"veintidós libras de billetes si es conmigo, na', se activó\",\n", + " 'aquí en el calentón la rumba es a millón',\n", + " 'porque a ella le gusta agresivo (¡súper!)',\n", + " \"que rico fueron to' los besos que me diste (¡ey-ey!)\",\n", + " 'pero tú nunca olvidaras mi nombre (no, no)',\n", + " 'seré un tatuaje en tu piel, baby (¡zumba!)',\n", + " 'por ahí comentan que tú eres una diablita',\n", + " ...]},\n", + " 'data': ['if blood will flow, when flesh and steel are one ... drying in the colour of the evening sun',\n", + " 'tomorrows rain, will wash the stains away .... but something in our minds will always stay',\n", + " \"perhaps this final act was meant, to clinch a lifetime's argument\",\n", + " 'that nothing comes from violence, and nothing ever could',\n", + " 'for all those born beneath an angry star, lets we forget how fragile we are...',\n", + " 'on and on the rain will fall...',\n", + " 'like tears from a star ... like tears from a star...',\n", + " 'on and on the rain will say...',\n", + " 'how fragile we are ... how fragile we are...',\n", + " 'la sangre que el acero derramó, se seca bajo el último rayo de sol',\n", + " 'la lluvia al fin, las huellas borrará. pero algo en las conciencias quedará',\n", + " 'quizás un acto así trató, de rematar la discusión. que nada logra la violencia',\n", + " 'ni nunca logrará, que los nacidos bajo un sol brutal, no se olviden de su fragilidad',\n", + " 'como lágrimas de sal',\n", + " 'la lluvia caerá ... la lluvia caerá',\n", + " 'cada gota cantará ... mi fragilidad ... tu fragilidad (x2)',\n", + " 'j balvin, man',\n", + " 'liam payne',\n", + " 'my g',\n", + " \"it's simple, you dip low\",\n", + " 'your hips roll, you do the calypso',\n", + " 'an intro is all that i need, oh, yeah',\n", + " 'y empiezo primero',\n", + " 'tú sabes lo que me refiero',\n", + " \"de cero, sabes que estoy pa' ti\",\n", + " 'oh, ooh, i just wanted to get your name (ah)',\n", + " \"but if it's cool, i wanna get inside your brain\",\n", + " 'can we get famili-famili-famili-familiar? (yeah)',\n", + " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya (hey)\",\n", + " \"what's on your mind for later tonight? (ah)\",\n", + " 'let me be the one to fill it up',\n", + " 'can we get famili-famili-famili-familiar?',\n", + " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya (hey)\",\n", + " \"what's on your mind for later tonight? (woo)\",\n", + " 'let me be the one to fill it up',\n", + " 'can we get',\n", + " 'your waistline, the bassline (bass)',\n", + " \"in real life, don't wanna no facetime\",\n", + " \"'cause great minds, they think just the same (hey, yeah)\",\n", + " \"you're shaped like vibrato\",\n", + " 'a model or some kind of bottle',\n", + " \"well, pour up 'cause i want a taste, a taste\",\n", + " 'oh, ooh, i just wanted to get your name',\n", + " 'sólo quería tu nombre, bebé',\n", + " \"but if it's cool, i wanna get inside your brain\",\n", + " 'can we get famili-famili-famili-familiar? (familiar)',\n", + " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya (familiar)\",\n", + " \"what's on your mind for later tonight?\",\n", + " 'let me be the one to fill it up (okay)',\n", + " 'can we get famili-famili-famili-familiar? (woo)',\n", + " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya (feelin' ya)\",\n", + " \"what's on your mind for later tonight? (ooh)\",\n", + " 'let me be the one to fill it up',\n", + " 'can we get',\n", + " 'ah (solamente tú y yo)',\n", + " 'ah, ah, ah (solamente tú y yo)',\n", + " 'ah (yeah)',\n", + " 'let me be the one to fill it up',\n", + " 'can we get',\n", + " 'quisiera que tú y yo nos familiaricemos',\n", + " 'un poco de química y el party prendemos',\n", + " 'olvida las criticas, así nos entendemos',\n", + " '¿qué tú crees si en tu mente nos metemos?',\n", + " 'señorita, qué necesita',\n", + " 'sería mucho mejor si participa',\n", + " 'así de lejos no, mejor cerquita',\n", + " 'yo voy a hacerte todo lo que me permita',\n", + " 'y sabes que lo que te pones te queda bien (te queda bien)',\n", + " 'y me caes mucho mejor que un billete de cien',\n", + " 'can we get famili-famili-famili-familiar?',\n", + " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya\",\n", + " \"what's on your mind for later tonight?\",\n", + " 'let me be the one to fill it up',\n", + " 'can we get famili-famili-famili-familiar?',\n", + " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya\",\n", + " \"what's on your mind for later tonight?\",\n", + " 'let me be the one to fill it up',\n", + " 'can we get',\n", + " 'ah (baby, can we get familiar?)',\n", + " 'ah, ah, ah (i just wanna get to know ya)',\n", + " 'ah (baby, can we get familiar?)',\n", + " 'let me be the one to fill it up',\n", + " 'can we get',\n", + " 'ah (baby, can we get familiar?)',\n", + " 'ah, ah, ah (i just wanna get to know ya)',\n", + " 'ah (baby, can we get familiar?)',\n", + " 'let me be the one to fill it up (ooh)',\n", + " 'can we get',\n", + " 'i wanna give it to you',\n", + " 'as long you give it to me',\n", + " 'just keep my body pumpin',\n", + " 'just keep my body pumpin',\n", + " 'i wanna give it to you',\n", + " 'as long you give it to me',\n", + " 'just keep my body pumpin',\n", + " 'just keep my body pumpin',\n", + " 'i wanna give it to you',\n", + " 'as long you give it to me',\n", + " 'just keep my body pumpin',\n", + " 'all night baby!',\n", + " 'i wanna give it to you',\n", + " 'as long you give it to me',\n", + " 'just keep my body pumpin',\n", + " 'just keep my body pumpin',\n", + " 'i wanna give it to you',\n", + " 'as long you give it to me',\n", + " 'just keep my body pumpin',\n", + " 'all night baby',\n", + " 'yo quiero ver la .. que mata',\n", + " 'rompe el ritmo et dame mas',\n", + " 'muestra mi como juegas',\n", + " 'mueve tu cuerpo',\n", + " 'baila así mami',\n", + " 'aquí estoy por ti',\n", + " 'porque te estoy mirando',\n", + " 'tú sientes el ritmo',\n", + " 'te gusta',\n", + " 'estoy loco por ti',\n", + " 'no puedo sentar sin ti',\n", + " 'i wanna give it to you',\n", + " 'as long you give it to me',\n", + " 'just keep my body pumpin',\n", + " 'just keep my body pumpin',\n", + " 'i wanna give it to you',\n", + " 'as long you give it to me',\n", + " 'just keep my body pumpin',\n", + " 'just keep my body pumpin',\n", + " 'i wanna give it to you',\n", + " 'as long you give it to me',\n", + " 'just keep my body pumpin',\n", + " 'all night baby!',\n", + " 'i wanna give it to you',\n", + " 'as long you give it to me',\n", + " 'just keep my body pumpin',\n", + " 'just keep my body pumpin',\n", + " 'i wanna give it to you',\n", + " 'as long you give it to me',\n", + " 'just keep my body pumpin',\n", + " 'just keep my body pumpin',\n", + " 'i wanna give it to you',\n", + " 'as long you give it to me',\n", + " 'just keep my body pumpin',\n", + " 'all night baby!',\n", + " 'kizutsuku koto ni naresugiteru awai sunday',\n", + " 'sabitsuiteru kusari ni, mada shibararenagara',\n", + " 'furueta yubi, daremokaremo shinjirarezu',\n", + " 'sugaru koto mo yurusarenai genjitsu sae, wakatteiru kara',\n", + " 'kazaritsuketa kagami no naka, dark monday',\n", + " 'akaku somaru naifu nigirishimeta, yoru wa nagaku',\n", + " 'koboreochita namida nante imi wa motazu',\n", + " 'sakebu koe mo kareteshimau naze ni hakanasa wo tou',\n", + " 'sabitsuita kokoro ni wa, kamoku no uta wo sasage',\n", + " 'umaku waraezuni iru, mou modorenai',\n", + " 'dakara motto kurushimagire ansemu wo',\n", + " 'kurayami ni saku bara wo semete kono kokoro ni dakasete',\n", + " 'soshite kitto tasuke wo yobu koe wa todokanai',\n", + " 'kizu darake no kono karada ni somaku yaiba tsukisashitekure',\n", + " 'zankokushoku ni somari hajimeta, kurutta genzai',\n", + " 'tsuiraku shita sora wo nagame, wasurerarenai kairi no torauma',\n", + " 'sabitsuita kokoro ni wa, kamoku no uta wo sasage',\n", + " 'umaku waraenai hibi, shinjitakunai',\n", + " 'dakara zutto kirisaita koe hibikasete',\n", + " 'kurayami ni chiru bara wo semete kono kokoro ni dakasete',\n", + " 'soshite motto kurushimagire no ano kotoba wo',\n", + " 'hirakikaketa kono kokoro ni fukaku yaiba, tsukisashitekure',\n", + " '(fukaku, tsukisashitekure)',\n", + " '--------------------------------english--------------------------------',\n", + " 'a faint sunday that has grown too accustomed to getting hurt',\n", + " 'while still being bound, with chains that are rusting together',\n", + " 'fingers that were trembling, not believing in anyone at all',\n", + " \"because i understand even the reality that doesn't even permit clinging\",\n", + " 'in the middle of the arranged mirror, dark monday',\n", + " 'the night in which i was tightly clasping a knife that was being dyed red was long',\n", + " \"the scattering tears and the such don't bear significance\",\n", + " 'also the voice that shouts will end up withering, i question ephemerality about why',\n", + " 'to the heart that rusted together offer up a silent song',\n", + " 'i am here, without being able to laugh properly, unable to turn back anymore',\n", + " 'therefore, an anthem in even deeper desperation',\n", + " 'at least let the rose that blooms in the darkness be held by this heart',\n", + " \"and, surely the voice that calls for help won't reach\",\n", + " 'please, into this body that is nothing but wounds, thrust the blade deeply',\n", + " 'the now that has gotten out of order, has begun to be dyed in cruelty',\n", + " 'i gaze at the sky that crashed down, a trauma of an estrangement i cannot forget',\n", + " 'to the heart that rusted together, offer up a silent song',\n", + " \"the days when i'm not able to laugh properly, i don't want to believe in them\",\n", + " 'therefore, let the voice that completely teared into peaces, resound',\n", + " 'at least, let the rose that scatters in the darkness be held by this heart',\n", + " 'and, those words in even deeper desperation',\n", + " 'please, into this heart that started to open up, thrust the blade deeply',\n", + " 'thrust the blade deeply',\n", + " '--------------------------------español--------------------------------',\n", + " 'un domingo débil que ha crecido demasiado acostumbrado a hacerse daño',\n", + " 'mientras aún sigue atado, con cadenas que se están oxidando juntas',\n", + " 'dedos que temblaban, no creyendo en nadie',\n", + " 'porque entiendo que ni siquiera en la realidad está permitido aferrarse',\n", + " 'en medio del espejo arreglado, lunes oscuro',\n", + " 'la noche en la cual estuve presionado sujetando un cuchillo que se teñia rojo fue larga',\n", + " 'las lágrimas y su dispersión no tienen importancia',\n", + " 'también la voz que grita terminará marchitándose, me pregunto la efimeridad del por que?',\n", + " 'para el corazón que se oxidó junto, ofresco una canción silenciosa',\n", + " 'estoy aquí, sin ser capaz de reír adecuadamente, incapáz de dar marcha atras nunca más',\n", + " 'por eso, un himno en la desesperación más profunda',\n", + " 'al menos deja que la rosa que florece en la oscuridad sea poseída por este corazón',\n", + " 'y, seguramente la voz que pide ayuda no culminará',\n", + " 'por favor, en este cuerpo que no es nada más que heridas, empuja la espada profundamente',\n", + " 'el ahora ha salido de control, ha comenzado a teñirse de crueldad',\n", + " 'contemplo el cielo que se desplomó, un trauma de un distanciamiento que no puedo olvidar',\n", + " 'para el corazón que se oxidó junto, ofresco una canción silenciosa',\n", + " 'los días en que no soy capaz de reír correctamente, no quiero creer en ellos',\n", + " 'por eso, deja que la voz que se lleno de lágrimas en paces, resuene',\n", + " 'al menos deja que la rosa que se dispersa en la oscuridad sea poseída por este corazón',\n", + " 'y, aquellas palabras en la desesperación más profunda',\n", + " 'por favor, en este corazón que comenzó a abrise, empuja la espada profundamente',\n", + " 'empuja la espada profundamente',\n", + " 'decidí dejar ser parte',\n", + " 'ser parte de esta farsa',\n", + " 'decidí pelear y así darte',\n", + " 'más que fe, una esperanza',\n", + " 'lo desconocido no es más que',\n", + " 'tan sólo una oportunidad',\n", + " 'para crear y poder entender',\n", + " 'que todo en este mundo es tuyo',\n", + " 'get the money, money, get the money, run',\n", + " 'get the money, run, get the money',\n", + " 'get up and go!',\n", + " 'get the money, money, get the money, run',\n", + " 'get the money run, get the money',\n", + " 'rise up and go!',\n", + " 'this is the voice of a new generation',\n", + " 'this is the meeting of the minds',\n", + " 'this is the dawn of a new revelation',\n", + " 'this is the story of our lives',\n", + " 'promete creer y así vencer',\n", + " 'ser parte de una alianza',\n", + " 'donde puedan todos mantener',\n", + " 'más que fe, una esperanza',\n", + " 'toma asiento estáte atento a mí',\n", + " 'no existe otra oportunidad',\n", + " 'no podremos nunca coexistir',\n", + " 'más que justicia es vengaza',\n", + " 'get the money, money, get the money, run',\n", + " 'get the money, run, get the money',\n", + " 'get up and go!',\n", + " 'get the money, money, get the money, run',\n", + " 'get the money, run, get the money',\n", + " 'rise up and go!',\n", + " 'this is the voice of a new generation',\n", + " 'this is the meeting of the minds',\n", + " 'this is the dawn of a new revelation',\n", + " 'this is the story of our lives',\n", + " 'of our lives',\n", + " 'of our lives',\n", + " 'of our lives',\n", + " \"do you think that you've become someone, someone with understanding\",\n", + " \"do you think that you've become someone, whos not afraid to beat the system\",\n", + " \"do you think that you've become someone\",\n", + " \"do you think that you've become someone\",\n", + " \"do you think that you've become someone, whos not afraid to beat the system\",\n", + " 'okay, okay',\n", + " 'desperté',\n", + " 'sin entender mis palabras',\n", + " 'hablé',\n", + " 'preguntando por ti',\n", + " 'desde ayer',\n", + " 'que no recuerdo mi nombre',\n", + " 'tal vez',\n", + " 'yo sólo me confundí',\n", + " \"and tell me what about it (it's confidential)\",\n", + " 'tell me what you like about me (it’s confidential)',\n", + " \"and tell what about your smile (it's confidential)\",\n", + " \"tell me what's all about! (it’s confidential)\",\n", + " \"it's confidential\",\n", + " \"it's confidential\",\n", + " \"it's confidential\",\n", + " \"it's confidential\",\n", + " 'it is confidential, baby',\n", + " 'it is confidential, baby',\n", + " 'ya qué',\n", + " 'sí sé que yo estoy perdido',\n", + " 'entre',\n", + " 'tu boca y tu brasier',\n", + " 'y dime',\n", + " 'si en verdad lo disfrutas',\n", + " 'porque yo no me quiero detener',\n", + " \"and tell me what about it (it's confidential)\",\n", + " \"tell me what you like about me (it's confidential)\",\n", + " \"and tell what about your smile (it's confidential)\",\n", + " 'tell me what’s all about! (it’s confidential)',\n", + " \"it's confidential\",\n", + " 'it’s confidential',\n", + " \"it's confidential\",\n", + " \"it's confidential\",\n", + " 'it is confidential, baby',\n", + " 'it is confidential, baby',\n", + " 'let me know, let me know, let me know',\n", + " 'let me know, let me know, let me know',\n", + " 'let me know, let me know, let me know',\n", + " 'let me know, let me know, let me know',\n", + " 'it is confidential, baby',\n", + " 'it is confidential, baby',\n", + " 'it is confidential, baby',\n", + " 'it is confidential, baby',\n", + " \"it's confidential\",\n", + " 'it’s confidential',\n", + " \"it's confidential\",\n", + " '(do we have a plan b, general?',\n", + " 'just in case the earth population discover that this is a conspirancy',\n", + " \"that's not a concern lieutenant\",\n", + " 'the truth has been in front of them all these years',\n", + " 'but they are not able to see it.)',\n", + " 'fuego',\n", + " 'kumbia kings baby, yeah',\n", + " 'kings of kumbia',\n", + " 'koo-kooo',\n", + " \"(commin' at ya!)\",\n", + " 'ya llegaron los reyes',\n", + " 'quien mas, kumbia kings',\n", + " 'agarrate los pantalones',\n", + " 'luego si te los quemas,porque aqui',\n", + " 'ya viene, puro fuego, pura candela',\n", + " '(chores)',\n", + " 'fuego, fuego, the roof is on fire',\n", + " \"we don't need no water let the mutha' -- burn\",\n", + " 'fuego, fuego, the roof is on fire',\n", + " \"we don't need no water let the mutha' -- burn\",\n", + " 'se siente, caliente, tu cuerpo, me enciende, te mueves, tan fuerte, parece que el calor me va quemar',\n", + " 'mi cuerpo te quiere, se muere por verte, espera impaciente que esperes, dame tu calor mamà',\n", + " 'kumbia kings',\n", + " 'koo koo',\n", + " 'fuego, fuego, the roof is on fire',\n", + " \"we don't need no water let the mutha' -- burn\",\n", + " 'fuego, fuego, the roof is on fire',\n", + " \"we don't need no water let the mutha' -- burn\",\n", + " 'zaa!',\n", + " 'me tienes caliente tanto moverte,no pares, me prendes,me gusta,el fuego que tu me das',\n", + " 'entiende, me enciendes, me quemas, muy fuerte, mi cuerpo se muere por verte, dame fuego una vez màs',\n", + " 'kumbia kings',\n", + " 'koo koo',\n", + " 'fuego, fuego, the roof is on fire',\n", + " \"we don't need no water let the mutha' -- burn\",\n", + " 'fuego, fuego, the roof is on fire',\n", + " \"we don't need no water let the mutha' -- burn\",\n", + " 'burn!',\n", + " 'burn!',\n", + " '...',\n", + " 'hola que tal esto es my kilino shortino en el microphone, y esto es un permiso, un segundito para la chica sexy',\n", + " 'esto va especialmente para tì, chica sexy... (say what), chica sexy (say what)',\n", + " 'mejor te digo de una vez improvisando con esta chica, me esta volviendo loco, me esta matando, ya estoy alcanzando un',\n", + " '(dj)ay, ay y sigo alcanzando, y sigo ardiendo, mira, mira, mira, me estoy entreteniendo, me estoy enloqueciendo...yeah',\n", + " 'fuego, fuego, the roof is on fire',\n", + " \"we don't need no water let the mutha' -- burn\",\n", + " 'fuego, fuego, the roof is on fire',\n", + " \"we don't need no water let the mutha' -- burn\",\n", + " 'burn!',\n", + " 'burn!',\n", + " 'come on now...',\n", + " 'carnaval',\n", + " 'y mi corazón',\n", + " 'carnaval',\n", + " 'que, que, que cuente conmigo',\n", + " 'carnaval',\n", + " \"y va paya' paca'\",\n", + " \"it's on the latin flavor, go tell a neighbor\",\n", + " 'la mesa te invita a gozar conocer',\n", + " 'es fresca, y tu cuerpo te va a remecer',\n", + " 'es que la garra de este ritmo no te va a soltar',\n", + " \"y tu vida en tre' minutos te va a alegrar\",\n", + " 'no hay ni un ritmo solo inventado para las chicas, ricas, mijas',\n", + " 'que mueve el culo en sus falditas',\n", + " 'es algo global, es algo inmenso',\n", + " 'y en esta escena con ustedes comienzo',\n", + " 'this is, for real, you will believe',\n", + " 'y tu veras!',\n", + " \"'cause it knocks you off your feet in a single hearbeat\",\n", + " \"c'mon c'mon!\",\n", + " 'carnaval',\n", + " 'all night long',\n", + " 'y mi corazn',\n", + " 'carnaval',\n", + " \"can't go wrong\",\n", + " 'que, que, que cuente conmigo',\n", + " 'carnaval',\n", + " 'as long as we live and breathe',\n", + " \"y va paya', paca'\",\n", + " \"it's on the latin flavor, go tell a neighbor now\",\n", + " 'es rico dulce como la miel',\n", + " 'y olvida el color que tienes en la piel',\n", + " 'y yo como latino te lo hago asi',\n", + " \"tu ya lo encontraras no te me apresuri'\",\n", + " 'no paro si pa eso la wea invente',\n", + " \"ah, and you don't know?, y loco nunca cambiare\",\n", + " 'this is, for real, you will believe',\n", + " 'y tu veras',\n", + " \"'cause it knocks you off your feet in a single hearbeat\",\n", + " \"c'mon c'mon!\",\n", + " 'carnaval...',\n", + " 'yeh yeh yeh',\n", + " 'carnaval',\n", + " 'y mi corazn (corazon)',\n", + " 'carnaval',\n", + " 'que que que cuente conmigo (conmigo)',\n", + " 'carnaval',\n", + " \"y va paya' (y va paya')\",\n", + " \"it's on the latin flavor, go tell a neighbor now\",\n", + " 'yeh yeh yeh!',\n", + " 'carnaval...',\n", + " 'yeh yeh yeh!',\n", + " 'carnaval!',\n", + " 'all night long',\n", + " 'y mi corazon (yeah!)',\n", + " 'carnaval',\n", + " \"can't go wrong\",\n", + " '(yeh) que cuente conmigo',\n", + " 'carnaval',\n", + " 'as looong as we live and breathe (ooooh)',\n", + " \"it's on the latin flavor, go tell a neighbor now!\",\n", + " '-buenas tardes señor',\n", + " \"-pero que mejores las tenga aste' señor\",\n", + " '-su licencia por favor',\n", + " '-con su licencia yo me retiro',\n", + " '-!aha, vuelve, vuelve, vuelve, vuelve, ya se me pelo, ya se me...!',\n", + " '(cuando menos 3 veces por semana)',\n", + " 'n´can you bring me la caguama',\n", + " 'de repente mucha banda',\n", + " 'i holding mi barrio me paro en la cama',\n", + " 'déjala calmada, bring me la cebada',\n", + " 'pinchi barato, no aguantas el rato',\n", + " 'y voy por la ciudad, just chillin´ al vato',\n", + " 'ando pasado, lamiendo el clavo',\n", + " 'justo yesterday cantaba la radio',\n", + " 'my troubles faded away, vamos al mandado',\n", + " 'paro en revolución, mi tropa volando',\n", + " 'veo mucho oficial, inhale y me aguanto',\n", + " 'justo, faded away, revolución',\n", + " 'inhale y me aguanto',\n", + " '(pues tiene que echar el aire fuera)',\n", + " 'no ando borracho, i just had a cerveza',\n", + " 'i was hanggin´ around en la camioneta',\n", + " 'la mionca que corre just like the wind',\n", + " 'flowing and flowing and feeling the rythm',\n", + " 'and get to the barrio, you know im a warrior',\n", + " 'compra el mundo with a centavo',\n", + " 'barato y bien harto feel like a payaso',\n", + " 'me muero de coraje que muestra el barrio',\n", + " 'estas ca´ me dicen si le sigo otro rato',\n", + " 'straight to the point, inhale y me aguanto',\n", + " 'justo, faded away, revolución',\n", + " 'inhale y me aguanto',\n", + " 'n´can i got to the bathroom',\n", + " 'tengo que hacer el alto',\n", + " 'y cierran la puerta, me clavo en el cuarto',\n", + " 'leave it in blanco, my hands apalanco',\n", + " 'pendejo güero, no chingues, te atraco',\n", + " '(jotos con poder)',\n", + " 'bajo en realidad del virtual del payaso',\n", + " 'anda manchado, he thinks que trae sancos',\n", + " '(la solución en mexico el cambio)',\n", + " 'junto al sensei, one movie del santo',\n", + " 'parte del ritual, del mexico sagrado',\n", + " 'sigo al locochon que viene y ando',\n", + " 'fuckin´ puto sigue norteado',\n", + " 'justo, faded away, revolución',\n", + " 'inhale y me aguanto',\n", + " 'n´can i tell you the truth',\n", + " 'yo anda extaviado',\n", + " 'unos de a peso, los otros más caros',\n", + " 'waiting al primo que sigue dormido',\n", + " 'just another night y yo tan tranquilo',\n", + " 'sigo en calidad de trapo usado',\n", + " 'sigo escuchando la maldito radio',\n", + " 'cuando una luz brilló de a lado',\n", + " 'todo estaba obscuro, come back to mi estado',\n", + " 'poco batallón is passing cornado',\n", + " 'sigue el reventón, inhale y me aguanto',\n", + " 'justo, faded away, revolución',\n", + " 'inhale y me aguanto',\n", + " 'justo, faded away, revolución',\n", + " 'inhale y me aguanto',\n", + " 'justo, faded away, revolución',\n", + " 'inhale y me aguanto',\n", + " 'justin, faded away, revolución',\n", + " 'inhale y me aguanto',\n", + " 'justin, faded away, revolución',\n", + " 'inhale y me aguanto',\n", + " 'justo, faded away, revolución',\n", + " 'inhale y me aguanto',\n", + " 'now hear this (now hear this)',\n", + " 'ah, rodeo',\n", + " 'now, all sexy girls report to the dance floor',\n", + " '(pu-pu-pu-pum!)',\n", + " \"you don't know?\",\n", + " \"it's a dancehall ting!\",\n", + " 'carbon fiber music',\n", + " 'inolvidable',\n", + " \"esa manera 'e besar\",\n", + " \"esa manera 'e bailar (you hear!?)\",\n", + " 'inolvidable (¡farru!)',\n", + " \"esa manera 'e besar (tell them!)\",\n", + " \"esa manera 'e bailar (alright, alright)\",\n", + " \"me gusta cuando te pone' provocativa\",\n", + " \"cuando escucha' el reggae y rápido tú te me activa'\",\n", + " 'me gusta esa faldita corta, mami, me motiva',\n", + " 'a bailar contigo sin importar lo que me pidas',\n", + " 'pégate lento (slow motion)',\n", + " 'quiero tu cuerpo (whine your body)',\n", + " 'besarte el cuello suavemente (why you so slow?)',\n", + " 'sin importar lo que diga la gente (you know!)',\n", + " 'pégate lento (slow motion)',\n", + " 'quiero tu cuerpo (whine your body)',\n", + " 'besarte el cuello suavemente (why you so slow?)',\n", + " 'sentirte para mí es suficiente (you know!)',\n", + " 'inolvidable',\n", + " \"esa manera 'e besar\",\n", + " \"esa manera 'e bailar\",\n", + " 'inolvidable (¡farru!)',\n", + " \"esa manera 'e besar\",\n", + " \"esa manera 'e bailar\",\n", + " 'aún recuerdo cuando yo te hacía mía',\n", + " 'que estábamos en mi carro y me decías que ahí querías',\n", + " 'que bajara el asiento, que ibas a treparte encima de mí',\n", + " 'qué rico, mami, tenerte aquí arriba de mí',\n", + " 'pégate lento (slow motion)',\n", + " 'quiero tu cuerpo (whine your body)',\n", + " 'besarte el cuello suavemente (why you so slow?)',\n", + " 'sin importar lo que diga la gente (you know!)',\n", + " 'pégate lento (slow motion)',\n", + " 'quiero tu cuerpo (whine your body)',\n", + " 'besarte el cuello suavemente (why you so slow?)',\n", + " 'sentirte para mí es suficiente (wou know!)',\n", + " 'inolvidable',\n", + " \"esa manera 'e besar\",\n", + " \"esa manera 'e bailar\",\n", + " 'inolvidable (¡farru!)',\n", + " \"esa manera 'e besar\",\n", + " \"esa manera 'e bailar (pu-pu-pu-pum!)\",\n", + " 'the way you whine',\n", + " \"the way you whine pa' mí\",\n", + " 'mash up mi mind',\n", + " 'mash up mi body',\n", + " 'the way you whine',\n", + " 'the way you give it to me',\n", + " 'give it to me, give it to me',\n", + " 'give it to me, baby',\n", + " 'inolvidabe (turn up farruko!)',\n", + " \"esa manera 'e besar\",\n", + " \"esa manera 'e bailar\",\n", + " 'inolvidable (¡farru!)',\n", + " \"esa manera 'e besar (esa manera 'e besar)\",\n", + " \"esa manera 'e bailar (esa manera 'e bailar, pu-pu-pu-pum!)\",\n", + " '¡farru!',\n", + " 'dímelo flow (leggo!)',\n", + " 'la monarquía',\n", + " 'carbon fiber music',\n", + " 'laramercy gang',\n", + " 'pégate lento (slow motion)',\n", + " 'quiero tu cuerpo (whine your body)',\n", + " 'besarte el cuello suavemente (why you so slow?)',\n", + " 'sin importar lo que diga la gente (gangalee; you know!)',\n", + " 'nice and slow',\n", + " 'slow and easy',\n", + " 'gyal, rock your body',\n", + " 'give it to me',\n", + " 'will this tune go worldwide?',\n", + " 'i wanna hear you tonight',\n", + " 'i wanna feel you just touch the sky',\n", + " 'i wanna hear you tonight',\n", + " 'all the angels, come on let’s ride!',\n", + " 'bang her!',\n", + " 'come on, don’t stop!',\n", + " 'sake your booties ladies',\n", + " 'this great!',\n", + " 'come on, listen to me!',\n", + " 'te echo de menos todo el fin de semana',\n", + " 'vamos a tomar una copa',\n", + " 'y la vida esta loca, loca',\n", + " 'yo soy fuego del tiempo',\n", + " 'y solo con tigo lo siento',\n", + " 'mi casa, mi amor para siempre',\n", + " 'estoy aqui, me quedo con padre!',\n", + " 'poco a poco, mi mundo esta loco',\n", + " 'quiero ver a toda la gente',\n", + " 'a bailar, a gritar!',\n", + " 'una belleza como tu, aqui la puedo encontrar!',\n", + " 'somo iguales y lo sabes',\n", + " 'dame tu amor una vez mas!',\n", + " 'i wanna hear you tonight',\n", + " 'i wanna feel you just touch the sky',\n", + " 'i wanna hear you tonight',\n", + " 'all the angels, come on let’s ride!',\n", + " '(x2)',\n", + " 'come on!',\n", + " 'don’t stop!',\n", + " 'this is how we do it tonight!',\n", + " 'bang her!',\n", + " 'this is how we do it tonight!',\n", + " 'disfrutalo y baila hasta el final de la fiesta',\n", + " 'esta cancion es de club',\n", + " 'vamos arriba en el top!',\n", + " 'i wanna hear you tonight',\n", + " 'i wanna feel you just touch the sky',\n", + " 'i wanna hear you tonight',\n", + " 'all the angels, come on let’s ride!',\n", + " '(x2)',\n", + " 'calipso global',\n", + " 'skin-reggae mas que tropical',\n", + " 'anti-political rock',\n", + " 'hardcore de taiwan white-soul made in senegal',\n", + " 'ska-punk oriental ¡oh no!',\n", + " 'hip-hop en beirut',\n", + " 'raggamufin en singapur',\n", + " 'musica vasca en nueva york',\n", + " 'global musik revolution',\n", + " 'rebel musik',\n", + " '¡¡revolucion!!',\n", + " 'global musik revolution',\n", + " 'rebel musik',\n", + " 'nueva generacion',\n", + " 'rude boys en bagdad',\n", + " 'rock girls en un kebab',\n", + " 'oi!-punk esquimal ¡oh no!',\n", + " 'psychobilly en latinoamérica',\n", + " 'rancheras en catalá',\n", + " 'por todo el mundo',\n", + " 'global musik revolution',\n", + " 'rebel musik',\n", + " '¡¡revolucion!!',\n", + " 'rebel musik',\n", + " 'a la música',\n", + " 'global musik',\n", + " 'nova generació',\n", + " 'global musik',\n", + " 'per il mondo',\n", + " 'rebel musik',\n", + " 'rivoluzione',\n", + " 'global musik',\n", + " 'herriz herri',\n", + " 'global musik',\n", + " 'iraultza berria',\n", + " 'global musik revolution!!',\n", + " 'rebel musik',\n", + " 'revolucion!!',\n", + " 'baby, ¿dónde tú estás?',\n", + " 'quiero verte una vez más',\n", + " 'tus manos tocando mi piel',\n", + " 'no sé si esto fue puro placer',\n", + " 'mi amor, esto me asusta',\n", + " 'a mí el rechazo no me gusta',\n", + " 'me tiene loca',\n", + " 'y yo ya no sé qué hacer',\n", + " 'qué hacer',\n", + " 'qué hacer',\n", + " 'i sit and wait for the phone to ring',\n", + " 'praying this was not a one time thing',\n", + " 'cuz i been cherishing the memory',\n", + " 'and i play it again and again in my mind',\n", + " \"it's like a movie from finish to start\",\n", + " 'a murder mystery your fingerprints are on my heart, yeah',\n", + " \"fantasy i'm locked in my head\",\n", + " 'cuz you been fucking with my mind, baby',\n", + " 'yo no puedo entender',\n", + " 'que estás haciendo sin mí',\n", + " 'lo que tuvimos fue tan mágico que no creo que en verdad lo viví',\n", + " 'me dijiste que yo era lo que más deseabas',\n", + " 'me besaste tan rico y me dejaste queriendo más',\n", + " 'mi amor, ¿dónde estás?',\n", + " 'me dejaste obsesionada, bebé',\n", + " 'cuando te volveré a ver, no sé',\n", + " 'tus labios besándome',\n", + " 'tus manos tocándome',\n", + " 'fue una noche de terror',\n", + " 'regalándote calor',\n", + " 'tus dedos mordiéndote',\n", + " 'en tu boca escupiéndote',\n", + " 'fue una noche de terror',\n", + " 'regalándote calor',\n", + " 'tus dedos mordiéndote',\n", + " 'en tu boca escupiéndote',\n", + " 'i sit and wait for the phone to ring',\n", + " 'praying this was not a one time thing',\n", + " 'cuz i been cherishing the memory',\n", + " 'and i play it again and again in my mind',\n", + " \"it's like a movie from finish to start\",\n", + " 'a murder mystery your fingerprints are on my heart, yeah',\n", + " \"fantasy i'm locked in my head\",\n", + " 'cuz you been fucking with my mind, baby',\n", + " 'fucking with my mind',\n", + " 'was it just a one time thing?',\n", + " 'fucking with my mind',\n", + " 'was it just a one time thing?',\n", + " 'fucking with my mind',\n", + " 'was it just a one time thing?',\n", + " 'entre un aliento',\n", + " 'y un trazo de fe',\n", + " 'tomo mi amado',\n", + " 'pluma y papel',\n", + " 'y al rendirse al frio de su piel',\n", + " 'escribio en lenguas',\n", + " 'que no puedo entender',\n", + " 'y no, nadie lo ve',\n", + " 'y no, nadie lo cree',\n", + " 'cuando un sueno',\n", + " 'se empieza a romper',\n", + " 'tiemblan las venas y arden las voces',\n", + " 'la ciudad que me ha visto crecer',\n", + " 'estalla en lagrimas',\n", + " 'antes de caer',\n", + " 'y no, nadie lo ve',\n", + " 'y no, nadie lo cree',\n", + " 'el temor nadie lo ve',\n", + " 'el dolor nadie lo ve',\n", + " 'la ley universal de la locomocion no puede fallar en este momento',\n", + " 'moving, all the people moving, one move for just one dream',\n", + " 'we see moving, all the people moving, one move for just one dream',\n", + " 'tiempos de pequeños movimientos...movimientos en reacción',\n", + " 'una gota junto a otra hace oleajes, luago mares...océanos',\n", + " 'nunca una ley fue tan simple y clara: acción, reacción, repercusión',\n", + " 'murmullos se unen forman gritos, juntos somos evolución',\n", + " 'moving, all the people moving, one move for just one dream',\n", + " 'we see moving, all the people moving, one move for just one dream',\n", + " 'escucha la llamada de \"mama tierra\", cuna de la creación',\n", + " 'su palabra es nuestra palabra, su \"quejío\" nuestra voz',\n", + " 'si en lo pequeño está la fuerza, si hacia lo simple anda la destreza',\n", + " 'volver al origen no es retroceder, quizás sea andar hacia el saber',\n", + " 'moving, all the people moving, one move for just one dream',\n", + " 'we see moving, all the people moving, one move for just one dream',\n", + " 'hola amigos',\n", + " 'ahora escucha los acompanamientoe para',\n", + " 'los principales ritmos latinos',\n", + " 'hello friends',\n", + " 'now listen to the rhythm section',\n", + " 'for the main latin beat',\n", + " 'español',\n", + " 'estoy cerca de alcanzar mi cielo',\n", + " 'desafiando la gravedad',\n", + " 'nada puede detener este sueño que es tan real',\n", + " 'sé que no existe el miedo, oh',\n", + " 'si no dejo de intentar',\n", + " 'la emoción que me mueve es la fuerza de un huracán',\n", + " 'esto que hay en mi interior es mágico',\n", + " 'porque todo puede suceder',\n", + " 'y si caigo, vuelvo',\n", + " 'voy, yo voy',\n", + " 'y vuelvo, y voy',\n", + " 'y si no hay vuelta atrás',\n", + " 'hay que arriesgarlo todo',\n", + " 'bajo mis pies no hay gravedad',\n", + " 'sólo hay alas',\n", + " 'nunca hay que dudar',\n", + " 'no está prohibido nada',\n", + " 'cuando un sueño es real',\n", + " 'solo hay alas',\n", + " '¡hey! ¡hey!',\n", + " 'ah, ah, ah',\n", + " 'ah, ah, ah',\n", + " 'ah, ah, ah',\n", + " 'ah, ah, ah',\n", + " '¡hey! ¡hey!',\n", + " 'y no espero más de lo que siento',\n", + " 'es un reto para enfrentar',\n", + " 'algo quiere despertar',\n", + " 'mi destino es tan real',\n", + " '(oh, oh, real, tan real)',\n", + " 'sé que no existe el miedo, oh',\n", + " 'si no dejo de avanzar',\n", + " 'la emoción que me mueve es la fuerza de un huracán',\n", + " '(ooh ooh ooh ooh)',\n", + " 'esto que hay en mi interior es mágico',\n", + " 'porque todo puede suceder',\n", + " 'y si caigo, vuelvo',\n", + " 'voy, yo voy',\n", + " 'y vuelvo, y voy',\n", + " 'y si no hay vuelta atrás',\n", + " 'hay que arriesgarlo todo',\n", + " 'bajo mis pies no hay gravedad',\n", + " 'sólo hay alas',\n", + " 'nunca hay que dudar',\n", + " 'no está prohibido nada',\n", + " 'cuando un sueño es real',\n", + " 'sólo hay alas',\n", + " 'es real, sólo hay alas',\n", + " 'con un puente en mi interior',\n", + " 'deslizándome lejos',\n", + " 'lejos',\n", + " 'es real, sólo hay alas',\n", + " 'en mi mundo libertad',\n", + " 'deslizándome lejos',\n", + " 'cada vez más lejos!',\n", + " 'y si no hay vuelta atrás',\n", + " 'hay que arriesgarlo todo',\n", + " 'bajo mis pies no hay gravedad',\n", + " 'sólo hay alas',\n", + " 'nunca hay que dudar',\n", + " 'no está prohibido nada',\n", + " 'cuando un sueño es real',\n", + " 'sólo hay alas',\n", + " '¡hey! ¡hey!',\n", + " 'ah, ah, ah',\n", + " 'ah, ah, ah',\n", + " 'ah, ah, ah',\n", + " 'ah, ah',\n", + " 'english translation',\n", + " \"i'm about to reach my sky\",\n", + " 'challenging the gravity',\n", + " 'nothing can detain this dream that is so real',\n", + " \"(i) know that there's no fear, oh\",\n", + " \"if (i) don't stop attempting\",\n", + " 'the emotion that moves me is the force of a hurricane',\n", + " 'this that is in my interior is magical',\n", + " 'because everything can happen',\n", + " 'and if (i) fall, (i) get back',\n", + " 'go, i go',\n", + " 'and get back, and go',\n", + " \"and if there's no going back\",\n", + " '(you) have to risk everything',\n", + " \"under my feet there's no gravity\",\n", + " 'there are only wings',\n", + " '(you) never have to doubt',\n", + " 'nothing is prohibited',\n", + " 'when a dream is real',\n", + " 'there are only wings',\n", + " 'hey! hey!',\n", + " 'ah, ah, ah',\n", + " 'ah, ah, ah',\n", + " 'ah, ah, ah',\n", + " 'ah, ah, ah',\n", + " 'hey! hey!',\n", + " \"and i don't expect anything else than what (i) feel\",\n", + " '(it) is a challenge to be faced',\n", + " 'something wants to awake',\n", + " 'my destiny is to real',\n", + " '(oh, oh, real, so real)',\n", + " \"(i) know that there's no fear, oh\",\n", + " \"if (i) don't stop moving forward\",\n", + " 'the emotion that moves me is the force of a hurricane',\n", + " '(ooh ooh ooh ooh)',\n", + " 'this that is in my interior is magical',\n", + " 'because everything can happen',\n", + " 'and if (i) fall, (i) get back',\n", + " 'go, i go',\n", + " 'and get back, and go',\n", + " \"and if there's no going back\",\n", + " '(you) have to risk everything',\n", + " \"under my feet there's no gravity\",\n", + " 'there are only wings',\n", + " '(you) never have to doubt',\n", + " 'nothing is prohibited',\n", + " 'when a dream is real',\n", + " 'there are only wings',\n", + " '(it) is real, there are only wings',\n", + " 'with a bridge in my interior',\n", + " 'sliding (me) far away',\n", + " 'away',\n", + " '(it) is real, there are only wings',\n", + " 'in my world, freedom',\n", + " 'sliding (me) far away',\n", + " 'every time further!',\n", + " \"and if there's no going back\",\n", + " '(you) have to risk everything',\n", + " \"under my feet there's no gravity\",\n", + " 'there are only wings',\n", + " '(you) never have to doubt',\n", + " 'nothing is prohibited',\n", + " 'when a dream is real',\n", + " 'there are only wings',\n", + " 'hey! hey!',\n", + " 'ah, ah, ah',\n", + " 'ah, ah, ah',\n", + " 'ah, ah, ah',\n", + " 'ah, ah',\n", + " 'uno, dos y tres',\n", + " 'cuento emocionada',\n", + " 'inicia un grande amor',\n", + " 'yo quiero cantarle así: lalalalalala laaa',\n", + " 'notas de color',\n", + " 'surgen de mis labios',\n", + " 'e inundan el salón',\n", + " 'que bello es cantarle así: lalalalalala laaaaa',\n", + " 'hey, i`m your babe, not a stranger, make it better',\n", + " 'hey, i`m your lover, not another sexy story, sing with me',\n", + " 'hey, you`re my babe, pretty babe, si!',\n", + " 'puede que esta vez',\n", + " 'la cadencia acabe',\n", + " 'y marchite este amor',\n", + " 'yo quise cantarle así: lalalalala laaa',\n", + " 'tu no tienes la culpa',\n", + " 'yo me quiero ir',\n", + " 'es que sola canto y yo así',\n", + " 'prefiero partir',\n", + " 'hey, i`m your babe, not a stranger, make it better',\n", + " 'hey, i`m your lover, not another sexy story, sing it please',\n", + " 'hey, you`re my babe, lovely babe yeah, yes indeed',\n", + " 'ohhh',\n", + " 'hey i do love you',\n", + " 'you do love me, si?',\n", + " 'pa pa ra pa pa ra pa',\n", + " 'you do love me, si?',\n", + " 'mmh, mmh, mmh',\n", + " 'yeah, ye-eah, ye-eah',\n", + " 'gyal, you a leader',\n", + " 'make me a believer',\n", + " \"you're my santa maría\",\n", + " 'yeah, ye-eah, ye-eah',\n", + " 'sweet like the sativa',\n", + " 'make me a believer',\n", + " \"you're my santa maría\",\n", + " 'wine and kotch, gyal bubble non stop',\n", + " 'tip pon yuh toe to the top',\n", + " 'jiggle up yuh body fimi, mek the sitten clap',\n", + " 'you know mi like it like that (uh)',\n", + " 'wine and brace fimi gyal (uh)',\n", + " 'mashup the place fimi gyal (uh)',\n", + " 'number one, you a the best, from the east to the west',\n", + " '(hot like fire)',\n", + " \"you don't want a regular gyal, you need a leader\",\n", + " 'se me pone tonto cuando fumo sativa',\n", + " 'sabe que conmigo esta polla está bendecida',\n", + " '(bad gyal)',\n", + " 'él me llama santa, santa maría',\n", + " \"porque mi coño está apretao' como el primer día\",\n", + " 'este coño te hace bajar down low',\n", + " \"él es jamaicano pero se lo come to'\",\n", + " 'yeah, ye-eah, ye-eah',\n", + " 'gyal, you a leader',\n", + " 'make me a believer',\n", + " \"you're my santa maría\",\n", + " 'yeah, ye-eah, ye-eah',\n", + " 'sweet like the sativa',\n", + " 'make me a believer',\n", + " \"you're my santa maría\",\n", + " 'tú querías que a la oreja te llamase papá',\n", + " 'no sabía dónde se metía, vaya',\n", + " \"le tuve en la cama todo el día sin descansa'\",\n", + " 'y después que me lo hacía se ponía a rezar (zar)',\n", + " 'dice \"you a real, bad gyal',\n", + " 'show me the spanish style\"',\n", + " 'pues le tuve que enseñar',\n", + " 'y ahora a otra no quiere probar',\n", + " \"no quiere a otra, no hay na' más bueno\",\n", + " 'le gusta mi cara, mi cuerpo y mi pelo',\n", + " \"le tengo enganchao' que hasta les tiene celos (celos)\",\n", + " 'aunque él es el primero',\n", + " 'nene, tú me das de todo en exceso',\n", + " 'cuando lo hacemos yo también siento de eso',\n", + " 'vuelos, conexiones y te veo entre medio',\n", + " 'pasamos 24 horas en una suite imperio',\n", + " 'yeah, ye-eah, ye-eah',\n", + " 'gyal, you a leader',\n", + " 'make me a believer',\n", + " \"you're my santa maría\",\n", + " 'yeah, ye-eah, ye-eah',\n", + " 'sweet like the sativa',\n", + " 'make me a believer',\n", + " \"you're my santa maría\",\n", + " \"i'm your santa maría (weh you say)\",\n", + " \"papi, i'm your santa maría (-ría) (weh you say)\",\n", + " 'weh you say',\n", + " 'weh you say',\n", + " 'look it my style',\n", + " \"they i'm cool, don't cheek a cheek\",\n", + " \"'cause i'm not fool\",\n", + " 'look it my style',\n", + " \"they i'm cool, don't cheek a cheek\",\n", + " \"'cause i'm not fool\",\n", + " \"'cause i'm not fool, 'cause i'm not fool\",\n", + " '¡espera! cuándo mires desde afuera',\n", + " 'no me juzgues con tu pena',\n", + " 'resisto el paso, el tiempo vuela',\n", + " 'no hagas trampa se sincera',\n", + " 'jah apacigüa la tormenta, que hay en tu alma',\n", + " 'and look it my style',\n", + " \"they i'm cool, don't cheek a cheek\",\n", + " \"'cause i'm not fool\",\n", + " 'and look it my style',\n", + " \"they i'm cool, don't cheek a cheek\",\n", + " \"'cause i'm not fool\",\n", + " \"'cause i'm not fool, 'cause i'm not fool\",\n", + " 'look it my style',\n", + " \"'cause i'm not fool\",\n", + " 'look it my style',\n", + " '¡espera! cuándo mires desde afuera',\n", + " 'no me juzgues con tu pena',\n", + " 'resisto el paso, el tiempo vuela',\n", + " 'no hagas trampa se sincera',\n", + " 'jah apacigüa la tormenta, que hay en tu alma',\n", + " 'look it my style',\n", + " \"they i'm cool\",\n", + " \"don't cheek a cheek 'cause i'm not fool\",\n", + " 'look it my style',\n", + " \"they i'm cool\",\n", + " \"don't cheek a cheek 'cause i'm not fool\",\n", + " \"'cause i'm not fool\",\n", + " 'look it my style',\n", + " \"'cause i'm not fool\",\n", + " 'look it my style',\n", + " \"they i'm cool\",\n", + " 'and look it my style',\n", + " \"they i'm cool\",\n", + " \"don't cheek a cheek\",\n", + " \"'cause i'm not fool\",\n", + " \"'cause i'm not fool\",\n", + " ...]},\n", + " 'r-b': {'meta': {'train_data': [\"i know that i'm young and i'm dumb\",\n", + " 'but i know what i want',\n", + " 'and what i want is you baby girl',\n", + " \"when you're coming over to my place\",\n", + " 'i miss your face and the way you move your waist',\n", + " 'is kinda amazing',\n", + " \"i know that you've got shit to say\",\n", + " 'when my back is turned',\n", + " \"but that don't get to me anymore\",\n", + " 'the people in this world are so fake',\n", + " 'a second face',\n", + " 'and the way you move your waist',\n", + " 'is kinda amazing',\n", + " \"i swear that you won't see me around\",\n", + " 'and i just want to get away from this town',\n", + " \"i would if i could, but i don't know how\",\n", + " 'siguió aprendiendo sobre el ayer',\n", + " 'maestro de lo mismo pero de algo sabe',\n", + " 'la vista tras los cristales o al revés',\n", + " 'pocos te miran como lo hacían antes',\n", + " 'repitiendo encuentras la diferencia',\n", + " 'invasión de la impotencia si ves que no puedes ganar',\n", + " 'infancia lenta, baja latencia',\n", + " \"tira del ánima porque hay veces que no hay ganas de na'\",\n", + " 'vida detrás del as',\n", + " 'se trunca tu plan',\n", + " 'me lleva a la inercia sin acelerar',\n", + " 'buscando hacia dónde tengo que girar',\n", + " 'es cuando solo veo rectas',\n", + " 'gestos serios sin la mueca',\n", + " 'reventándome las tuercas',\n", + " 'mis salidas se conectan',\n", + " 'mis circuitos se retroalimentan',\n", + " 'lo suyo sería revertir el proceso',\n", + " 'librarse del atrezzo, potenciar el seso',\n", + " 'vivir los fallos pero en retroceso',\n", + " 'contar con la sabiduría sin cargar el peso',\n", + " 'en mi trayecto a la luna no faltan besos',\n", + " 'aunque el amor lleve al odio y éste al reverso',\n", + " 'tiempo atrás fuimos ya seres espesos',\n", + " 'contaminados por el estrés y los excesos',\n", + " 'y ahora, vuelta al mundo musicado',\n", + " 'a ver el mundo en este lado',\n", + " 'el de los huesos, donde al corazón lo ilumina el flexo',\n", + " 'la energía vacía y todo eso lo he dejado en el otro puesto',\n", + " 'el de los locos y los muertos',\n", + " 'no sé dónde fui un intruso, pero me siento de lejos',\n", + " 'tal vez me mirase un tuerto al llegar a este puerto o algo',\n", + " 'de momento me concentro en hacer que se me haga largo',\n", + " 'aunque me sienta extraño, quizá encuentre hogar en otro cuerpo',\n", + " 'baby i want to go',\n", + " 'fly away, and let you go',\n", + " 'out of my head, get out of my head',\n", + " 'stuck in limbo',\n", + " \"not allowed at heaven's door\",\n", + " 'we imagined, we became magic',\n", + " 'x2',\n", + " \"baby i've been shot down\",\n", + " 'took a bullet with your name',\n", + " 'and now i am hellbound',\n", + " \"go tell 'em i'm no longer afraid\",\n", + " \"lately you're not coming around\",\n", + " 'and i cannot remember your face, but darling',\n", + " \"i'm no longer thinkin' about it\",\n", + " 'both of us have died by the blade',\n", + " \"and soon we'll go down in flames\",\n", + " 'burning inside of me',\n", + " \"and soon we'll go down in flames\",\n", + " \"and soon we'll go down in flames\",\n", + " 'burning inside of me',\n", + " 'cannot remember your face',\n", + " \"i know that i'm young and i'm dumb\",\n", + " 'but i know what i want',\n", + " 'and what i want is you baby girl',\n", + " \"when you're coming over to my place\",\n", + " 'i miss your face and the way you move your waist',\n", + " 'is kinda amazing',\n", + " \"i know that you've got shit to say\",\n", + " 'when my back is turned',\n", + " \"but that don't get to me anymore\",\n", + " 'the people in this world are so fake',\n", + " 'a second face',\n", + " 'and the way you move your waist',\n", + " 'is kinda amazing',\n", + " \"i swear that you won't see me around\",\n", + " 'and i just want to get away from this town',\n", + " \"i would if i could, but i don't know how\",\n", + " 'pop ur pussy like this',\n", + " '(pop, pop, pop ur pussy like—)',\n", + " '(pop, pop, pop ur pussy like—)',\n", + " '(pop, pop, pop ur pussy like—)',\n", + " 'pop it, pot it',\n", + " 'pop ur pussy like—',\n", + " \"como si hubiera estao' atao' de pies y manos\",\n", + " 'como un disparo, como cabreado',\n", + " 'como un hambriento que por fin agarra un plato',\n", + " \"como después un amaño, como pa' hacerte daño\",\n", + " \"pa' que tú me entiendas, mi amiga\",\n", + " 'como un cuchillo atravesando tu piel',\n", + " \"pa' que tú me entiendas, mi amiga\",\n", + " 'como si algo en mi cabeza ya no fuera bien',\n", + " 'como dando un volantazo',\n", + " 'como queriendo romperte en pedazos',\n", + " 'como un cristal que se quiebra',\n", + " 'como un fuego descontrolado',\n", + " 'como si nuestro tiempo hubiera acabado',\n", + " 'como loco y desesperado',\n", + " 'como un disparo',\n", + " 'i wanna pop ur pussy like—',\n", + " 'pop, pop, pop ur pussy like— (pop it, pop it)',\n", + " 'pop ur pussy like—',\n", + " 'pop, pop, pop ur pussy like— (pop it, pop it)',\n", + " 'i wanna pop ur pussy like this',\n", + " 'pop ur pussy like this',\n", + " 'pop ur pussy like this',\n", + " 'pop ur pussy like— (pop it, pop it)',\n", + " 'i wanna pop ur pussy like— (i wanna pop ur pussy like this)',\n", + " 'como una montaña al caer',\n", + " 'como queriéndote romper',\n", + " 'como algo que siempre quisiste y nunca pudiste hacer',\n", + " 'como una línea y un carnet (pop it, pop it)',\n", + " 'como si fuera la última vez (pop it, pop it)',\n", + " 'i wanna pop ur—, i wanna pop ur—',\n", + " 'i wanna pop ur pussy like (¡ey!)',\n", + " \"pa' que tú me entiendas, mi amiga\",\n", + " 'como un cuchillo atravesando tu piel',\n", + " \"pa' que tú me entiendas, mi amiga\",\n", + " 'como si algo en mi cabeza ya no fuera bien',\n", + " 'como dando un volantazo',\n", + " 'como queriendo romperte en pedazos',\n", + " 'como un cristal que se quiebra',\n", + " 'como un fuego descontrolado (pop ur pussy like—)',\n", + " 'como si nuestro tiempo hubiera acabado',\n", + " 'como loco y desesperado',\n", + " 'como un disparo',\n", + " '(pop ur pussy like this)',\n", + " 'pop, pop, pop ur pussy like— (pop it, pop it)',\n", + " 'pop ur pussy like—',\n", + " 'pop, pop, pop ur pussy like— (pop it, pop it)',\n", + " 'i wanna pop ur pussy like this',\n", + " 'pop ur pussy like this',\n", + " 'pop ur pussy like this',\n", + " 'pop ur pussy like— (pop it, pop it)',\n", + " 'i wanna pop ur pussy like— (i wanna pop ur pussy like this)',\n", + " 'sé que te gusta when i pop it, pop it',\n", + " 'when i pop it, pop it',\n", + " 'sé que te gusta when i pop it, pop it',\n", + " 'when i pop it, when i pop your pussy like—',\n", + " 'i pop it, pop it',\n", + " 'sé que te gusta when i pop it, pop it',\n", + " 'when i pop it, pop it',\n", + " 'ay, ay, ay',\n", + " 'nobody likes being played',\n", + " 'oh, beyoncé, beyoncé',\n", + " 'oh, y sasha, y sasha (hey)',\n", + " \"he said, i'm worth it, his one desire\",\n", + " '(yo conozco cosas del que tu no quieres ni saber)',\n", + " 'he kissed me, his one and only',\n", + " '(yes) beautiful liar',\n", + " '(solo por placer nuestra amistad no vamos a perder)',\n", + " 'a mi también',\n", + " 'why are we the ones who suffer?',\n", + " 'no hay que caer',\n", + " \"he won't be the one to cry\",\n", + " \"(ay) let's not kill the karma\",\n", + " \"(ay) let's not start a fight\",\n", + " \"(ay) it's not worth the drama\",\n", + " 'for a beautiful liar',\n", + " '(oh) nos va dividir?',\n", + " '(oh) no nos va a excitar',\n", + " '(oh) vamos a sufrir?',\n", + " '(oh) por un bello embustero',\n", + " 'confiaba en el',\n", + " 'mas cuando lo que encontré',\n", + " 'besándote el cuello',\n", + " \"(i didn't know about you then 'till i saw you with him again)\",\n", + " 'por que a ti?',\n", + " 'si hay mil por ahí',\n", + " 'el es un perro',\n", + " '(you stole everything, how can you say i did you wrong?)',\n", + " 'a mi también',\n", + " \"when the pain and heartbreak's over\",\n", + " 'no hay que caer',\n", + " 'the innocence is gone',\n", + " \"(ay) let's not kill the karma\",\n", + " \"(ay) let's not start a fight\",\n", + " \"(ay) it's not worth the drama\",\n", + " 'for a beautiful liar',\n", + " '(oh) nos va dividir?',\n", + " '(oh) no nos va a excitar',\n", + " '(oh) vamos a sufrir?',\n", + " '(oh) por un bello embustero',\n", + " 'lo creía tan mio',\n", + " 'yo vivía por el',\n", + " 'and i wish could free you',\n", + " 'of the hurt and the pain',\n", + " 'es un hombre muy frío',\n", + " 'no es de una mujer',\n", + " 'ya no nos puede engañar',\n", + " 'haremos con su juego, ya basta...de sus mentiras',\n", + " 'dile adiós.....por las dos',\n", + " \"(ay) let's not kill the karma\",\n", + " \"(ay) let's not start a fight\",\n", + " \"(ay) it's not worth the drama\",\n", + " 'for a beautiful liar',\n", + " '(oh) nos va dividir?',\n", + " '(oh) no nos va a excitar',\n", + " '(oh) vamos a sufrir?',\n", + " '(oh) por un bello embustero',\n", + " 'this is the remix',\n", + " 'cha, cha, cha (yeah)',\n", + " 'y por eso te amo',\n", + " 'si ya sabes como me traes, pero te haces',\n", + " 'you gonna love me',\n", + " 'a mi amore, he-he, love me',\n", + " 'y por favor because you love me',\n", + " \"i'm gonna love you 'til the sun burns up\",\n", + " 'yeah, he-he',\n", + " \"i'll hold back the moon\",\n", + " 'in case you want a little more afternoon',\n", + " \"i'll be your cover in a rainy monsoon\",\n", + " \"i'll be your sombrilla, eh-eh, ole, ole\",\n", + " 'contigo voy a bailar, el ritmo no va a parar',\n", + " 'tu y yo hasta el final, ole, ole (ole)',\n", + " \"contigo me vo' a qudar, nunca te voy a soltar (hey)\",\n", + " \"can't let the one get away, ole\",\n", + " 'you gonna love me (yeah, eh-eh)',\n", + " 'a mi amore, he-he, love me (love mi amor)',\n", + " 'y por favor because you love me (because you love me)',\n", + " \"i'm gonna love you 'til the sun burns up (burns up)\",\n", + " 'yeah, he-he',\n", + " 'now all you lovers wave (wave)',\n", + " 'uh, wave, every lover wave (wave)',\n", + " \"uh, wave, if you got love let's see you wave (you wave)\",\n", + " \"wave, 'til the sun burns up\",\n", + " 'uh, wave',\n", + " '(oye, me dijeron que)',\n", + " '(ay ya)',\n", + " 'le gusta fumar y yo en ro-lo',\n", + " 'ella ofrece y prefiere los cho-los',\n", + " 'pero va a salir con el c-kan porque sabe que todo el barrio lo contro-lo',\n", + " 'maría llegó tu josé, del niñito dios yo no sé',\n", + " 'yo la besé, después de realicé, cómo amanecí, debajo de usted',\n", + " 'se',\n", + " 'que el infierno diera',\n", + " 'si le hablo la conociera',\n", + " 'vaya y pida lo que quiera',\n", + " 'que aferre la billetera',\n", + " 'yo no quiero que me quiera',\n", + " 'y tu no quieras con cualquiera',\n", + " 'que la quiera tansiquira',\n", + " 'la mitad que yo la quiero (yeah eh yeah)',\n", + " 'ole, hola hola',\n", + " 'deja primero dejar la pistola',\n", + " 'luego me baila, la pista esta sola',\n", + " 'subele wey que me gusta esta rola',\n", + " 'you gonna love me (you gonna love me)',\n", + " 'a mi amore, he-he, love me (love mi amore)',\n", + " 'y por favor because you love me (hey hey)',\n", + " \"i'm gonna love you 'til the sun burns up (burns up, eh)\",\n", + " 'yeah, he-he',\n", + " 'now all you lovers wave',\n", + " 'uh, wave, every lover wave',\n", + " \"uh, wave, if you got love let's see you wave (see you wave)\",\n", + " 'wave, till the sun burns up (till the sun burns up)',\n", + " 'uh, wave',\n", + " '(hasta que salga el sol)',\n", + " '(hasta que salga el sol)',\n", + " '(bésame, bésame mucho)',\n", + " 'ole',\n", + " 'no more war, no more war',\n", + " 'what are we even fighting for',\n", + " 'el dolor que trae el fracaso',\n", + " 'de la duda y la traición',\n", + " 'veo una vida hecha pedazos',\n", + " 'y ahí es donde nace un campeón',\n", + " \"i'll fight for my country\",\n", + " 'you fight for your country',\n", + " 'we see the victory',\n", + " \"they'll get the victory\",\n", + " 'man a man, heart to heart',\n", + " 'face to face but worlds apart',\n", + " \"you and i, we're champions\",\n", + " \"we're champions, we're champions\",\n", + " 'you fight for my country',\n", + " \"i'll fight for your country\",\n", + " 'we see the victory',\n", + " \"they'll get that victory\",\n", + " 'man a man, heart to heart',\n", + " 'face to face but worlds apart',\n", + " \"you and i we're champions\",\n", + " \"we're champions, we're champions\",\n", + " 'de amarguras y esperanzas',\n", + " 'de las penas y el dolor',\n", + " 'de una fé que todo alcanza',\n", + " 'de allí es como nace un campeón',\n", + " 'no more blood, no more pain',\n", + " 'no más ven watch the way',\n", + " \"wave your flag, and i'll wave mine\",\n", + " 'we gotta shift the paradigm',\n", + " \"i'll fight for my country\",\n", + " 'you fight for your country',\n", + " 'we see the victory',\n", + " \"they'll get the victory\",\n", + " 'man a man, heart to heart',\n", + " 'face to face but worlds apart',\n", + " \"you and i, we're champions\",\n", + " \"we're champions, we're champions\",\n", + " 'you fight for my country',\n", + " \"i'll fight for your country\",\n", + " 'we see the victory',\n", + " \"they'll get that victory\",\n", + " 'man a man, heart to heart',\n", + " 'face to face but worlds apart',\n", + " \"you and i we're champions\",\n", + " \"we're champions, we're champions\",\n", + " \"in the end it's all love\",\n", + " 'you can',\n", + " 'sometimes life will beat you up',\n", + " \"but in the end it's all love\",\n", + " 'campeones en panamá',\n", + " 'champions in américa',\n", + " 'campeones champions campeones champions',\n", + " 'campeones en panamá',\n", + " 'champions in américa',\n", + " 'campeones champions campeones champions',\n", + " 'campeones en panamá',\n", + " 'champions in américa',\n", + " 'campeones champions campeones champions',\n", + " 'de la condición más dura',\n", + " 'de allí es donde nace un campeón',\n", + " 'y nos hicimos luchando',\n", + " 'y eso no fue coincidencia',\n", + " 'campeones en panamá',\n", + " 'champions in américa',\n", + " 'campeones champions campeones champions',\n", + " 'campeones en panamá',\n", + " 'champions in américa',\n", + " 'campeones champions campeones champions',\n", + " 'te echo de menos, no sé ni dónde estás',\n", + " 'te echo de menos y no te puedo llamar',\n", + " \"i'm on my shit now, i'm going to the top\",\n", + " 'i miss you baby, so i wish you coming back',\n", + " 'i got my town and my money on my mind',\n", + " 'i got my town and my money on my mind',\n", + " 'yo te perdí, ya no sé ni dónde estás',\n", + " 'yo te perdí, ya no sé ni a dónde vas',\n", + " 'recuerdo baby cuando estábamos tú y yo',\n", + " 'lo siento baby porque no supe tratarte',\n", + " 'estaba perdido mami, yo vengo de marte',\n", + " 'y no lo sé, no sé, nunca supe amarte',\n", + " \"i'm on my shit now, i'm going to the top\",\n", + " 'now i got hoes and my homies have the guap',\n", + " \"now, where are you?, where's you by my side?\",\n", + " \"she was my baby now don't even recognize me\",\n", + " \"i don't even feel that my heart is not alone\",\n", + " 'me drogué mucho, estoy tratando de olvidarte',\n", + " \"all i know is that i'm going to the sky\",\n", + " \"y no estás tú aquí, pero ¿qué le vamo' a hacer?\",\n", + " \"ey, ¿qué le vamo' a hacer?\",\n", + " \"si no estás tú a mi lado, ¿qué le vamo' a hacer?\",\n", + " \"si no estás tú a mi lado, ¿qué le vamo' a hacer?\",\n", + " \"si no estás tú a mi lado, ¿qué le vamo' a hacer?\",\n", + " 'yo te quería, tú te me marchaste',\n", + " \"y ya no sé ni pa' dónde ir a buscarte\",\n", + " 'y yo estoy roto',\n", + " 'ya sé ir tirando poco a poco',\n", + " \"now is this, now i'm going to the top\",\n", + " 'i miss you baby, and i need you by my side',\n", + " \"now is this, now i'm going to the top\",\n", + " 'you miss me baby, but you are never by my side no more',\n", + " 'no on my side, no more',\n", + " 'ya no estás por aquí, ey',\n", + " 'ya no estás por aquí',\n", + " 'siento que la perdí',\n", + " 'ya no estás por aquí, mi mamá me pregunta',\n", + " 'que qué fue de ti y que no me eche la culpa',\n", + " 'que si haces algo, que qué tal, que si algo estudias',\n", + " \"esa no era pa' ti, keo, ya encontrarás la tuya\",\n", + " 'te echo de menos, no sé ni dónde estás',\n", + " 'te echo de menos y no te puedo llamar',\n", + " \"i'm on my shit now, i'm going to the top\",\n", + " 'i miss you baby, so i wish you coming back',\n", + " 'i got my town and my money on my town',\n", + " 'i got my town and my money on my town',\n", + " 'yo te perdí, ya no sé ni dónde estás',\n", + " 'yo te perdí, ya no sé ni a dónde vas',\n", + " '¡los líderes!',\n", + " 'akon!',\n", + " 'aventura',\n", + " 'w, yandel (hey)',\n", + " \"it's all up to you (hey)\",\n", + " 'all up to you (hey)',\n", + " '(all up to you)',\n", + " 'si mañana te vas, mañana te olvido',\n", + " \"te olvido, te olvido (i'll forget you, girl)\",\n", + " \"si mañana me amas, me escapo contigo (contigo; that's right)\",\n", + " 'jamás me limito, no le temo al destino (destino)',\n", + " 'o te quedas o te vas, elige el camino (elige el camino, camino)',\n", + " '(ey)',\n", + " 'vete, al fin eres dueña de tus sentimientos (ajá)',\n", + " 'pero si te quedas yo te ofrezco hasta el cielo',\n", + " 'es tu decisión',\n", + " 'dime en este momento',\n", + " 'una decisión bien tuya',\n", + " 'oh-oh-oh, eh',\n", + " \"tú me dice'\",\n", + " \"i'mma always keep it true\",\n", + " 'and i must still do my thing even if it is not with you (hey)',\n", + " \"and i hope you're prepared to be heartbroken forever\",\n", + " \"'cause no one can be compared to me\",\n", + " 'nobody can fuck you like i can',\n", + " 'or handcuff you like i can',\n", + " 'will he be there when shit hit the fan like i can',\n", + " \"but it's all up to you (hey)\",\n", + " 'all up to you (hey)',\n", + " 'all up to you (hey, hey)',\n", + " \"it's all up to you (hey)\",\n", + " 'all up to you (hey)',\n", + " 'all up to you (hey, hey, hey-hey)',\n", + " 'si mañana te vas, mañana te olvido',\n", + " \"te olvido, te olvido (won't forget you, girl)\",\n", + " 'si mañana me amas, me escapo contigo, contigo, oh, oh',\n", + " 'tú sabes que eres es mía, mía, mía',\n", + " 'no se trata de orgullo ni de hombría (woh-woh-woh-woh)',\n", + " 'se trata de que en la cama tú me decías',\n", + " 'que no habías sentido lo que conmigo sentías (uh-uh)',\n", + " 'y todo era preciso, ahora todo es indeciso',\n", + " 'que me muero por tocar tu pelo liso',\n", + " 'o darle besitos a tu abdomen liso',\n", + " \"y me dice' que te vas y me das contra el piso\",\n", + " 'vete si tú piensas que te irá mejor con un nuevo amor',\n", + " '(es el momento de la decisión)',\n", + " 'amor (yes, sir; heh)',\n", + " 'vete y te aseguro que regresas lamentando tu error',\n", + " 'tu error',\n", + " \"it's all up to you (hey)\",\n", + " 'all up to you (hey)',\n", + " 'all up to you (hey, hey)',\n", + " \"it's all up to you (hey)\",\n", + " 'all up to you (hey)',\n", + " 'all up to you (hey, hey)',\n", + " 'romeo',\n", + " 'si mañana te vas, mañana te olvido (mañana te olvido)',\n", + " '¡w!',\n", + " 'si mañana me amas, me escapo contigo (contigo, contigo, contigo)',\n", + " 'yandel',\n", + " 'jamás me limito, no le temo al destino (no le temo al destino, oh)',\n", + " 'o te quedas o te vas, elige el camino',\n", + " 'bye-bye, touché',\n", + " 'the kid is gonna be ok!',\n", + " '¡vete!',\n", + " 'oh, nights like these, i live for nights like these, yeah',\n", + " 'start me up a vodka tonic',\n", + " \"sittin' at the bar in a\",\n", + " 'hole in the wall on the east side',\n", + " \"and the drinks don't cost me much\",\n", + " \"and there's never anybody there\",\n", + " 'incognito suits me just fine, yeah, yeah',\n", + " 'a man with a guitar, not tryna be a star',\n", + " \"stool in a small stage, singin' the pain away\",\n", + " 'señorita get up and dance',\n", + " 'oh, nights like these, i live for nights like these',\n", + " \"when you ain't nobody but you and i'm just me, ayy\",\n", + " 'not the lights, no glitz and glam, just good vibes and good company',\n", + " 'oh, nights like these, i live for nights like these',\n", + " \"sírvame un trago 'e negroni\",\n", + " 'la ocasión está perfecta, puedo ser normal',\n", + " 'hoy deseo ser humano y desacatarme sin nadie opinar',\n", + " 'con la morena del vestido colorado quisiera bailar',\n", + " '(hey, sólo escucha)',\n", + " 'una noche sin ser romeo',\n", + " 'y me doy un baño del pueblo',\n", + " 'bailo, sudo, me emborracho',\n", + " 'yo bailaría una bachata',\n", + " 'quemo a todas con un perreo',\n", + " 'sería algo tan especial',\n", + " 'noches así que me hacen sentir',\n", + " 'son momentos que me incitan a vivir',\n", + " 'no hay glamour, nadie es estrella, nadie pide ni un autógrafo',\n", + " 'por noches así me escapo y soy feliz',\n", + " 'just tryna have a good night',\n", + " \"where ain't nobody worried 'bout a spotlight\",\n", + " \"i'm nobody, you nobody and it's alright\",\n", + " \"it's alright, it's alright, ayy\",\n", + " \"i'm just tryna have a good night\",\n", + " \"where ain't nobody worried 'bout a spotlight\",\n", + " \"i'm nobody, you nobody and it's alright\",\n", + " \"it's alright, it's alright, oh woah, oh\",\n", + " 'oh, nights like these, i live for nights like these (hey, i live for nights like these, oh, woah)',\n", + " \"when you ain't nobody but you and i'm just me, ayy (nobody but you and i'm just me, oh)\",\n", + " 'not the lights, no glitz and glam, just good vibes and good company (woo, hey)',\n", + " 'oh, nights like these, i live for nights like these (nights like these, i live for nights like these)',\n", + " 'noches así que me hacen sentir',\n", + " 'son momentos que me incitan a vivir',\n", + " 'no hay glamour, nadie es estrella, nadie pide ni un autógrafo',\n", + " 'por noches así me escapo y soy feliz',\n", + " 'oh, nights like these, i live for nights like these']},\n", + " 'data': ['part i: \"someone\"',\n", + " 'i love you like when we began',\n", + " 'friends, lovers, friends, lovers, end',\n", + " 'now you got yourself a man',\n", + " \"i been busy makin' other plans\",\n", + " 'you put it on me now and then',\n", + " \"he's a sweetie kinda understands\",\n", + " 'i cooked and lit the candles man',\n", + " 'i thought that we were doing it again',\n", + " \"it's so peculiar\",\n", + " 'this game that we play, hey, hey',\n", + " 'and i pray that we do',\n", + " 'i want it all the way, yeah',\n", + " 'oh, i needed you',\n", + " \"i don't know what to do, you\",\n", + " \"took your lovin' from me\",\n", + " 'and you gave it to someone new',\n", + " \"let's just forget the worst, hey\",\n", + " 'and then forget the world',\n", + " 'i needed you',\n", + " \"i don't know what to do\",\n", + " 'you, you, you',\n", + " 'part ii: \"agüita\"',\n", + " 'yeah, yeah (agua, agua, agua)',\n", + " 'ye-yeah (cauca flo)',\n", + " \"semejante' gotita', agüita, agüita\",\n", + " \"lo' que e'tamos activo' movemo' lo' pie' rené higuita\",\n", + " 'un pasito muy fino, y el flow ‘ta divino',\n", + " 'de mi mami l’estilo, todito caliente, me salto lo tibio',\n", + " \"agüita, agüita, me llueven diosita'\",\n", + " \"la' má' fina' se agitan, me caen distinta', gracias a la vida\",\n", + " 'es que soy un berraco salvaje, pero suave chinchilla',\n", + " \"me meto a rumba con tacón en pie, a vece' me maquilla'\",\n", + " \"se me’ acerca una nena chimbita, no' pegamo' en seguida\",\n", + " \"un pasito tun-tun, ¡hey! hacemo' la vuelta, agüita, agüita\",\n", + " \"recuerdo lo' tiempo' difícile', cuando yo no tenía\",\n", + " \"ando embamba'o esto' día', ¡qué frío!\",\n", + " 'ojalá no me de pulmonía, yeah, yeah',\n", + " 'desde el barrio de brooklyn lo mueven, lo mueven, la sa-san basilio',\n", + " \"en atlanta s’escucha totó, en bogotá ponen migo'\",\n", + " 'cada loca en su tema, yo al peluche en el río',\n", + " \"a ver si le' muestro un nuevo estilo, ‘toy emparama'o, dio' mío\",\n", + " \"diferente la pinta, salpican gotita'\",\n", + " 'agüita, agüita, agüita, agüita, agüita, agüita',\n", + " \"la lluvia bendita (la lluvia bendita), la' lágrima' limpian\",\n", + " 'agüita, agüita, agüita, agüita, agüita, agüita',\n", + " \"diferente la pinta, salpican gotita'\",\n", + " 'agüita, agüita, agüita, agüita, agüita, agüita',\n", + " \"la lluvia bendita, la' lágrima' limpian\",\n", + " 'agüita, agüita, agüita, agüita, agüita, agüita',\n", + " 'part iii: \"bloom\"',\n", + " 'bloom',\n", + " 'beat into a simple tool',\n", + " 'opening without a clue',\n", + " 'blush to taste your sweet perfume',\n", + " 'bloom, all you ever do',\n", + " 'wipe the bloom from your fruits and leaves',\n", + " 'carefully, tenderly',\n", + " 'wipe the bloom from your fruits and leaves',\n", + " 'carefully, tenderly',\n", + " 'mind the glare',\n", + " \"blink, it's all you see\",\n", + " 'baby, breathe',\n", + " 'especially',\n", + " 'wipe the bloom from your fruits and leaves',\n", + " 'carefully, tenderly',\n", + " 'mind the glare',\n", + " \"blink, it's all you see\",\n", + " 'and, baby, breathe',\n", + " 'especially',\n", + " 'wipe the bloom from your fruits and leaves',\n", + " 'carefully, tenderly',\n", + " 'mind the glare',\n", + " \"blink, it's all you see\",\n", + " 'baby, breathe',\n", + " 'especially',\n", + " '(feat. fat joe)',\n", + " 'ts sound (hey baby)',\n", + " 'yeah, come on (nadie más podría)',\n", + " 'you want me to track the dawn thalía, ah... (nadie más podría)',\n", + " 'tm (amarte como lo hago yo)',\n", + " \"you're just another winner (risa)\",\n", + " 'woo, yeah, umh, yeah, umh, terror',\n", + " 'come on, woo, oh, oh...',\n", + " 'que pasó en mi vida',\n", + " 'para merecer un amor así?',\n", + " 'cuanto lloré y sufrí',\n", + " 'día y noche esperando',\n", + " 'a que vinieras por mi',\n", + " 'y ahora estás aquí...',\n", + " 'tan galán que me haces vibrar',\n", + " 'con tu piel tostada siempre tan sensual',\n", + " 'y todas esas cosas que piensas hablar',\n", + " 'me pones sexy, sexy...',\n", + " 'baby, nadie más puede amarte más que yo',\n", + " \"i'm feelin' love in the deepest fall, give you the keys and all\",\n", + " 'you even when helped me when the beef was on',\n", + " 'dime si quizás este amor es de verdad',\n", + " 'i feel the same way, you make the don say',\n", + " 'girl, i want you, girl, i need you',\n", + " 'qué no ves?',\n", + " 'esta historia llena de amor',\n", + " 'nunca tendrá fin',\n", + " 'y puedo jurar que nadie más hará',\n", + " 'los juegos que inventamos a la mar',\n", + " 'comernos los labios hasta sangrar (ah..)',\n", + " 'tan galán que me hace vibrar',\n", + " 'con tu piel tostada siempre tan sensual',\n", + " 'y todas esas cosas que piensas hablar',\n", + " 'me pones sexy, sexy...',\n", + " 'baby, nadie más puede amarte más que yo',\n", + " \"i'm feelin' love in the deepest fall, give you the keys and all\",\n", + " 'you even when helped me when the beef was on',\n", + " 'dime si quizás este amor es de verdad',\n", + " 'i feel the same way, you make the don say',\n", + " 'girl, i want you, girl, i need you',\n", + " '(uh...) slow down, love',\n", + " \"don't you see me with my girl, what you thinkin' it was\",\n", + " \"i know you're used to seein' me in the clubs\",\n", + " \"different chicks, sippin' cris', just a million in dubs\",\n", + " \"but i've changed, only got eyes for her\",\n", + " \"believe me, ain't no girl dividin' us\",\n", + " 'we could maybe elope, have a baby and all',\n", + " \"‘cause i don't wanna be a player no more\",\n", + " 'baby, nadie más puede amarte más que yo',\n", + " 'i feel the same way, you make the don say',\n", + " 'girl, i want you, girl, i need you',\n", + " 'dime si quizás este amor es de verdad',\n", + " \"‘cause i'm feeling something real\",\n", + " 'i feel the same way, you make the don say',\n", + " 'girl, i want you, girl, i need you',\n", + " 'baby, nadie más puede amarte más que yo',\n", + " 'i feel the same way, you make the don say',\n", + " 'girl, i want you, girl, i need you',\n", + " 'dime si quizás este amor es de verdad',\n", + " \"‘cause i'm feeling something real\",\n", + " 'i feel the same way, you make the don say',\n", + " 'girl, i want you, girl, i need you',\n", + " 'baby... baby... baby... baby...',\n", + " 'baby... baby... baby... baby...',\n", + " 'agujerito del cielo',\n", + " 'cuelando el brillo de dios',\n", + " \"un rayo cayó en tus ojo'\",\n", + " 'y me partió el corazón',\n", + " 'agujerito del cielo',\n", + " 'díctame por dónde ir',\n", + " 'para yo no equivocarme',\n", + " 'y así ver mi porvenir',\n", + " \"when you're done with me\",\n", + " 'i see a negative space',\n", + " \"what you've done for me\",\n", + " 'who needs to hallucinate?',\n", + " 'who needs to pray? who?',\n", + " \"who needs balance? i'll see you every day\",\n", + " 'barefoot in the park',\n", + " 'you start rubbing off on me',\n", + " 'barefoot in the park',\n", + " 'you start rubbing off on me',\n", + " \"ya tengo to' lo que quiero\",\n", + " \"ya no puedo pedir má'\",\n", + " \"cuando te tengo a mi la'o\",\n", + " \"lo pasa'o se queda atrá'\",\n", + " 'si te apartan de mi vera',\n", + " 'y te tuviera que encontrar',\n", + " 'hasta allá te encontraría',\n", + " 'como el río va a la mar',\n", + " 'barefoot in the park',\n", + " 'you start rubbing off on me',\n", + " 'barefoot in the park',\n", + " 'you start rubbing off on me',\n", + " 'saturn starts turning off each ring',\n", + " \"sky's locking up i think\",\n", + " 'i call off the chase',\n", + " \"who needs balance? i'll see you every day\",\n", + " 'barefoot in the park',\n", + " 'you start rubbing off on me',\n", + " 'barefoot in the park',\n", + " 'you start rubbing off on me',\n", + " 'you start-you start rubbing off-rubbing off on me-off on me',\n", + " 'barefoot in-barefoot in the park-in the park',\n", + " 'you start-you start rubbing off-rubbing off on me-off on me']},\n", + " 'rap': {'meta': {'train_data': ['fvck vibes on the beat',\n", + " 'yeyo en mi iphone',\n", + " 'yeyo en mi iphone, yeyo en mi iphone',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah',\n", + " 'esta noche creo que me voy a morir',\n", + " 'baby, tranqui estoy tomando tranki no voy a sufrir (voy a sufrir)',\n", + " 'no quiero verte si voy a salir (yeah)',\n", + " 'subo mi dosis ahora solo pienso en mí, yeah',\n", + " 'ten-tengo un demonio en la cabeza que te va a joder',\n", + " \"tengo trato pa' que me proteja' si me va a doler (yeah)\",\n", + " \"esta vez quieo' que vaya todo bien\",\n", + " \"nos vestimos to' de negro, funeral, yeah\",\n", + " 'hoy no tengo a nadie cerca que me alegre, yeah, yeah',\n", + " 'no es tan fácil cuando quiero verte, yeah',\n", + " 'otra vez veo tus ojos en la gente, yeah',\n", + " \"yo ya nunca pueo' volver a casa baby, yeah\",\n", + " 'cabe un pollo en mi iphone',\n", + " 'cuando estás llamando está todo nevado (yeah, yeah)',\n", + " 'cabe un pollo en mi iphone',\n", + " 'cuando estás llamando está todo nevado y no puedo contestar',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah',\n", + " 'problemas en mi iphone, bitches on my iphone',\n", + " 'yeyo en mi iphone, yeyo en mi iphone',\n", + " 'problemas en mi iphone, bitches on my iphone',\n", + " 'yeyo en mi iphone, yeyo en mi iphone',\n", + " 'yeyo en mi iphone, zorras en el iphone',\n", + " 'yeyo en mi iphone, me odias en el iphone',\n", + " 'yeyo en mi iphone, zorras en el iphone',\n", + " 'yeyo en mi iphone, me odias en el iphone (oh-oh)',\n", + " 'tengo yeyo en el iphone, el corazón helado',\n", + " 'esa coca brilla como diamantes bailando',\n", + " 'me siento solo aunque tenga todo un planeta a mi lado (oh-oh)',\n", + " 'porque ya no eres la misma, ya no me quieres tanto (oh-oh)',\n", + " 'ya no puedo controlarlo, el mundo cae a mi lado',\n", + " 'nadie te olvida cuando tienes cocaína en el iphone',\n", + " 'ya no puedo controlarlo, el mundo cae a mi lado',\n", + " 'nadie te olvida cuando tienes cocaína en el iphone',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", + " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah',\n", + " 'yeyo en mi iphone, yeah',\n", + " 'tengo yayo en mi iphone, yeah, yeah',\n", + " '?? muerte, ?? siempre',\n", + " '?? pobre o rebelde',\n", + " 'no sé cómo empezar',\n", + " 'otro guerrillero!',\n", + " 'más pobreza, más violencia',\n", + " 'estos son las consecuencias',\n", + " 'no sé donde va para',\n", + " 'otra guerrillera!',\n", + " 'de repente me parado y empecé piensar',\n", + " 'pensamiento de protesta de el lago a mar',\n", + " 'están in lucha',\n", + " 'lo quieren disparar',\n", + " 'en la carcel, en solitario , como alcatraz',\n", + " 'tío keko, no te quiero',\n", + " '??',\n", + " '??',\n", + " '??',\n", + " 'in los annos los ochentos ??',\n", + " 'siempre in la lucha con compañero harold',\n", + " 'las mujeres in la lucha no pueden ??',\n", + " '??, vamos representar',\n", + " 'un gobierno ??',\n", + " '??',\n", + " '??',\n", + " '??',\n", + " '??',\n", + " '??',\n", + " '??',\n", + " 'para una nueva vida',\n", + " 'apúrate, apúrate',\n", + " 'rush, rush',\n", + " '?? they reside in the streets??',\n", + " 'guerrilleros están presente all the days of my life',\n", + " '??, jardinero',\n", + " '??',\n", + " 'sandinistas guerrilleros están en nicaragua',\n", + " 'farabundo, marti, miguel enriquez',\n", + " 'simón bolivar, guevara en la montaña',\n", + " 'he got killed in bolivia',\n", + " 'fred hampton, huey p, and malcolm x',\n", + " 'zapatistas in the jungle holding tecs for respect',\n", + " 'apúrate, apúrate',\n", + " 'rush, rush',\n", + " \"i'm getting my guerrillas on\",\n", + " 'ready to die',\n", + " 'for all my people',\n", + " \"after we done, there's gon' be no sequel\",\n", + " 'bringing our lyrics of mass destruction',\n", + " 'fighting corruption',\n", + " 'this is my introduction',\n", + " \"i'm getting my guerrillas on\",\n", + " 'ready to die',\n", + " 'for all my people',\n", + " \"after we done, there's gon' be no sequel\",\n", + " 'free molly! (skii-skii-skii)',\n", + " 'prrra (molly gratis)',\n", + " 'jaja, cipollo',\n", + " 'mamá, dime kelowhat',\n", + " 'que sus fucken',\n", + " 'ba-ba-baby',\n", + " '¡dale seco!',\n", + " 'why you flex?',\n", + " 'why you flex?',\n", + " \"¿quiere' un tiro o keloke?\",\n", + " 'why you flex?',\n", + " 'why you flex?',\n", + " 'que ni tú mismo te lo crees (mátalo)',\n", + " 'why you flex?',\n", + " 'why you flex? (arrgh, arrgh; pussy)',\n", + " 'why you flexing?',\n", + " '¿eh? imbe-imbécil',\n", + " 'why you flex?',\n", + " 'why you flex?',\n", + " \"¿quiere' un tiro o keloke? (lileta)\",\n", + " 'why you flex?',\n", + " 'why you flex?',\n", + " 'ni tú mismo te lo crees (jaja)',\n", + " 'why you flexing?',\n", + " 'finesse shit, finesse shit, que lo qué',\n", + " 'why you flexing?',\n", + " 'imbécil (ah, ¡prra!)',\n", + " 'primo, kelowa (kelowa)',\n", + " 'esa chain no es de verdad, jaja (oh, wow)',\n", + " 'a ver, déjamela',\n", + " '(arrgh, arrgh, arrgh; prra-prra-prra-prra, los primos, baby)',\n", + " 'prr-rá',\n", + " 'pxxr gvng (pxxr gvng!)',\n", + " \"hemo' empeza'o a facturar (sí)\",\n", + " \"las putas vienen pa' los bolos y se van preñá' (¡prra!)\",\n", + " \"no es de extrañar es que con nosotros van tralla's\",\n", + " 'dile al palomo de tu gato que se calle ya (tato)',\n", + " \"que me conoce de cuando íbamo' a atracar\",\n", + " \"y es que han pasa'o 10 años y todavia me quie' trinca' (pam-pam)\",\n", + " \"me quie' coger perdi'o\",\n", + " 'puestos en un ancracká (mátalo)',\n", + " 'pero si me tira con odio se le va a atrancar',\n", + " \"es asi, to' de negro así\",\n", + " 'estamos en el traffic',\n", + " 'moviendo bricks fácil',\n", + " 'la cosa está así',\n", + " 'mi dinero euros',\n", + " 'mi puta brasil',\n", + " 'why you flex?',\n", + " 'why you flex?',\n", + " \"¿quiere' un tiro o keloke? (arrgh, arrgh)\",\n", + " 'why you flex?',\n", + " 'why you flex?',\n", + " 'ni tú mismo te lo crees',\n", + " 'why you flex?',\n", + " 'why you flex?',\n", + " 'why you flexing?',\n", + " \"¿eh? imbe-imbécil (sois to' unos imbécil)\",\n", + " 'why you flex?',\n", + " 'why you flex?',\n", + " \"¿quiere' un tiro o keloke?\",\n", + " 'why you flex?',\n", + " 'why you flex?',\n", + " 'ni tú mismo te lo crees',\n", + " 'why you flexing?',\n", + " 'finesse shit, que lo qué (jaja)',\n", + " 'why you flexing? imbécil',\n", + " 'qué lo que, what you flex? (arrgh, arrgh)',\n", + " 'khaled paga la cuenta con billetes de 100 (prra)',\n", + " 'yo no joseo (no) porque estoy a otro nivel (jaja)',\n", + " 'reparto el bacalao y me llaman cada mes (¡dale primo!)',\n", + " 'elegant, elegant como mercedes benz (arrgh)',\n", + " 'khaled ça va bien',\n", + " 'mi vida no se puede corregir (no, arrgh, arrgh)',\n", + " 'tengo escrito en mi cara agressif (arrgh, arrgh)',\n", + " 'why you flex',\n", + " 'why you flex?',\n", + " \"a vacila' y keloke\",\n", + " '(y keloke; arrgh, arrgh, arrgh)',\n", + " '(come on now, come on now, come on now)',\n", + " 'come on now, come on now, come on now',\n", + " 'hey, pero es evidente que toda la gente me sigue por el occidente',\n", + " '¿qué pasó? todo el carácter para que paralice la gente',\n", + " 'se mete en mi mente muy fuerte, se siente la gente',\n", + " 'pendiente al sonido, ¿qué es lo que tú esperas?, y yo sonando muy retundente',\n", + " 'muy acá, no pare en ningún momento',\n", + " 'por pensar en la perfección, mera, yo soy casi perfecto',\n", + " 'en el arte de cantarte para que suenen en todas las partes y lugares',\n", + " 'no existe prueba que no venza mi ritmo que sale',\n", + " 'de los niveles que le somete cada persona',\n", + " 'mi boca no tiene seguro y la misma casi ya explota',\n", + " 'te azota, pero no le temas,',\n", + " 'pues tiene su contenido, en la versión bien adquirido',\n", + " 'mi ritmo haze un enlace con la lírica que termine',\n", + " 'en el juego entre cada hombre',\n", + " 'seguro la misma viene de una alta calidad si es que conlleva al movimiento',\n", + " 'permite unos segundos para llevarte mi dialecto',\n", + " 'no quiero que me persiga la gente que no son amigos',\n", + " 'hablando a mis espaldas prefiero yo un enemigo',\n", + " 'contigo camino, pero si no andas pues yo te castigo (prr)',\n", + " \"sigo hot, y comienzo trayendo cada impulso pa' mayoría\",\n", + " 'porque hacer que brinque la gente seguro veo es mi teoria',\n", + " 'mira rima se ve severa cada cada vez que se improvise',\n", + " 'y destruye y destruye, y les hago mi resumen',\n", + " 'que mi música si es para la gente que se goza la pista bailando',\n", + " 'fuerte ruge este sonido',\n", + " 'a la vez te está tomando a un camino de fortaleza que comienza a surgir',\n", + " 'ragga moofin, aquí dentro usted me tiene que perseguir',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now-now',\n", + " 'como va la no mercy, pregunta la gente ahora \"can you kick it?\"',\n", + " 'seguro que puedo patearlo porque la versión es algo wicky',\n", + " 'acá yo soy full lyrics, tus trilly',\n", + " 'le digo que nunca lo intente, su intención será difí-difícil',\n", + " 'y para las chicas el movimiento sí es bien crazy',\n", + " 'you know i got the flow, you gotta take this',\n", + " 'for the , party',\n", + " ', hey!',\n", + " 'pasa la voz que yankee ya llegó',\n", + " 'espero que tengas la fecha para seguirme',\n", + " 'y es mejor que no se detenga (what?), y se lo presento',\n", + " 'los buenos records para que lo estudie',\n", + " 'el fucking beat que tengo yo, mi gente',\n", + " 'loco, tú menor (no)',\n", + " 'you know i got the and the',\n", + " \"i'm microphone, and on, and on\",\n", + " 'no me rivalise contender',\n", + " 'porque no da lo tallaré',\n", + " 'como lanza en el calibre tampoco yo fallaré (nah)',\n", + " 'el ritmo ragga moofin que pediste te dare',\n", + " \"con permiso un minuto (come on, y'all)\",\n", + " 'que no pueden emitir',\n", + " 'movida es la pista y te hace sacudir',\n", + " 'hacia arriba, donde el ritmo no lo puedes eludir',\n", + " 'ragga moofin, aquí dentro usted me tiene que perseguir',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now-now',\n", + " 'hey! y como lo quieras, de cualquier manera',\n", + " 'mi y a la ves que va subiendo pues la fuerza la constituye',\n", + " 'siente cerca, la lírica combinada con la mezcla',\n", + " 'mi caracter instiga, así que mi música es cara',\n", + " 'el impacto rotundo (wow), que te va azotando',\n", + " 'el daddy yankee es que tira, atacando',\n", + " \"a la kaboom! hey! watch out! ¡cuida'o!\",\n", + " 'daddy yankee sigue atacando con su underground, so, wow-pow',\n", + " 'voy recetando cada barrio hasta el fin',\n", + " 'ragga moofin, aquí dentro usted me tiene que perseguir',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now-now',\n", + " 'the yankee-man has come, get with the dancehall',\n", + " 'the yankee-man has come, get with the dancehall (come on!)',\n", + " 'the yankee-man has come, get with the dancehall',\n", + " 'the yankee-man has come, get with the dancehall, y dice',\n", + " 'yankee-man te viene a exponer-a',\n", + " 'una reggae, tienes tú que entenderla',\n", + " 'son como de la posición, yo primer-a',\n", + " 'todo el mundo baila el',\n", + " 'tú sabes que persevera',\n", + " 'tiene las habilidades, siempre prevalecera',\n", + " 'toda la furia lleva, no puede contenerla',\n", + " 'toda mi grandeza que se viene a imponer-a',\n", + " 'the yankee-man has come, get with the dancehall',\n", + " 'the yankee-man has come, get with the dancehall (come on!)',\n", + " 'the yankee-man has come, get with the dancehall',\n", + " 'the yankee-man has come, get with the dancehall, y dice',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " 'run, come, follow me now',\n", + " 'follow me now, come, follow me',\n", + " \"come on, y'all (come on now)\",\n", + " \"come on, y'all (come on now)\",\n", + " \"come on, y'all (come on now)\",\n", + " \"come on, y'all (come on now)\",\n", + " \"come on, y'all (come on now)\",\n", + " \"come on, y'all (come on now)\",\n", + " \"come on, y'all (come on now)\",\n", + " \"come on, y'all (come on now)\",\n", + " 'wow',\n", + " 'pido una botella de don periñón (oh-oh, oh-oh)',\n", + " 'un par de tragos de bacardi y limón (oh-oh, oh-oh)',\n", + " 'se enciende el party (ouh)',\n", + " 'nena, move your body (ouh)',\n", + " \"sigue y no pare' (ouh)\",\n", + " 'no, no, no, no, no',\n", + " \"i came the party, so let's get started (oh)\",\n", + " 'wanna dance? you just let me know (yeah)',\n", + " \"knock what you movin'\",\n", + " \"girl you're the ? (aha)\",\n", + " 'has kills, gotta let you know (come on)',\n", + " \"you make a pen ? (yo')\",\n", + " \"from the rain, are you shakin' at? (wisin and yandel)\",\n", + " 'get ?',\n", + " 'let me know you wanna it, aha',\n", + " 'hi everybody, people in america',\n", + " 'say \"?\", say \"?\"',\n", + " 'mami call me \"papi loco\"',\n", + " 'now in miami, baby like \"dale, gordo\"',\n", + " 'mama, yo no te conozco (eh-eh)',\n", + " 'se enciende el party (eh-eh)',\n", + " 'nena, move your body (eh-eh)',\n", + " \"sigue y no pare' (tra-tra-tra-tra-tra-tra)\",\n", + " 'no, no, no, no, no (eh-eh)',\n", + " 'se enciende el party (eh-eh)',\n", + " 'nena, move your body (eh-eh)',\n", + " \"sigue y no pare' (ouh)\",\n", + " 'no, no, no, no, no (tra-tra-tra-tra-tra-tra; eh-eh)',\n", + " \"i came the party, so let's get started (oh)\",\n", + " 'wanna dance? you just let me know (yeah)',\n", + " \"knock what you movin'\",\n", + " \"girl you're the ? (aha)\",\n", + " 'has kills, gotta let you know (come on)',\n", + " \"you make a pen ? (yo')\",\n", + " \"from the rain, are you shakin' at? (wisin and yandel)\",\n", + " 'get ?',\n", + " 'let me know you wanna it, aha (¡w; duro!)',\n", + " 'mami, no se case (hah)',\n", + " 'que llegó el que la complace (ajá)',\n", + " \"sin disfrace', que pase lo que pase (ajá)\",\n", + " 'a usted, mami chula, no va a haber quien la reemplace (¡w!)',\n", + " 'la base, y no me rechace (plah)',\n", + " 'y ataque como cuando ella come espinaca',\n", + " 'mi flaca, a toditas opaca (ajá)',\n", + " 'y si no quiero janguear, mami, yo soy, me sonsaca (plah)',\n", + " 'ella se destaca, nunca tiene resaca (plah)',\n", + " 'pido una botella de don periñón (oh-oh, oh-oh)',\n", + " 'un par de tragos de bacardi y limón (oh-oh, oh-oh)',\n", + " 'se enciende el party (ouh)',\n", + " 'nena, move your body (ouh)',\n", + " \"sigue y no pare' (ouh)\",\n", + " 'no, no, no, no, no',\n", + " \"i came the party, so let's get started (oh)\",\n", + " 'wanna dance? you just let me know (yeah)',\n", + " \"knock what you movin'\",\n", + " \"girl you're the ? (aha)\",\n", + " 'has kills, gotta let you know (come on)',\n", + " \"you make a pen ? (yo')\",\n", + " \"from the rain, are you shakin' at? (wisin and yandel)\",\n", + " 'get ?',\n", + " 'let me know you wanna it, aha (ouh)',\n", + " 'el junte de los guerreros',\n", + " 'track',\n", + " 'w',\n", + " 'yandel',\n", + " 'fat-fat joe',\n", + " 'wisin, yandel',\n", + " 'nosotros controlamos esto',\n", + " 'vaya, bori',\n", + " 'súbelo',\n", + " 'yeah, para no agobiarme y no caer en olvido',\n", + " 'para sentir que todavía estoy vivo, te escribo',\n", + " 'mi hombre quiroga al beat, yeah',\n", + " 'dueña de mi mente al despertar',\n", + " 'dueña de mi mente, mas todavía está presente',\n", + " 'este pequeño sueño adolescente',\n", + " 'dueña de mis fantasías de amar',\n", + " 'dueña de mis putas fantasías',\n", + " \"i'm taking my freedom, pulling it off the shelf\",\n", + " 'putting it on my chain, wearing it around my neck',\n", + " 'i’m taking my freedom, putting it in my car',\n", + " 'wherever i choose to go it will take me far',\n", + " \"i'm living my life like it's golden\",\n", + " \"livin’ my life like it's golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden, golden\",\n", + " 'livin’ my life like it’s golden',\n", + " \"livin' my life like it’s golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it’s golden, golden\",\n", + " 'hay nebulosa en mi cerebro, y el alma ya no me fía',\n", + " 'y el ebro sigue tan negro, y la nevera está vacía, mercancía',\n", + " 'mi corazón ya casi ni latía',\n", + " 'un millón de versos ya forman mi dinastía',\n", + " 'sigo en la inopia, en mi propia filosofía',\n", + " 'soy el quebradero certero de la utopía',\n", + " 'no, no seré al más fiero puto dueño de la esfera',\n", + " 'pero puedo ser \"te quiero\" en tus labios, vivo a la espera',\n", + " 'cuando es tan dura la vida, muero en tu seda',\n", + " 'cuando no esta el folio o el hombro de algún colega',\n", + " 'ya no sé llorar y escribo todo lo que llega',\n", + " 'a este pobre corazón maldito que navega',\n", + " 'entre sus mentes, urgentes sus gentes',\n", + " 'llevan la verdad del corazón entre los dientes',\n", + " 'benditos inocentes',\n", + " 'todavía me duele tanto el alma',\n", + " 'que ya no soy capaz de rehabilitar mi karma',\n", + " 'y cada vez que me acuesto',\n", + " 'me arrepiento de no acostarme contigo',\n", + " 'pero escribo el sentimiento',\n", + " 'y salgo del pozo del agua contaminada',\n", + " 'donde evaporan los sueños, los que no sueñan con nada',\n", + " 'así escapo del ruido de los coches, días sin tus noches',\n", + " 'todos tus reproches, así escapo',\n", + " 'de todos los problemas que me invaden, del fruto del amor',\n", + " 'el desamor que me ahoga, ya ustedes saben',\n", + " 'dueña de mi mente (dueña de mi mente al despertar)',\n", + " 'dueña de mis sueños (dueña de mis sueños, yeah yeah)',\n", + " 'dueña de mis fantasías de amar (fantasías de amar)',\n", + " 'perdida en el viento (perdida en el viento)',\n", + " \"i'm taking my freedom, pulling it off the shelf\",\n", + " 'putting it on my chain, wearing it around my neck',\n", + " \"i'm taking my freedom, putting it in my car\",\n", + " 'wherever i choose to go it will take me far',\n", + " \"i'm living my life like it's golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden, golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden, golden\",\n", + " \"i'm holdin on to my freedom, can't take it from me\",\n", + " 'i was born into it, it comes naturally',\n", + " \"i'm strumming my own freedom in the god in me\",\n", + " 'reverence in his glory, hope he proud of me',\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden, golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden\",\n", + " \"livin' my life like it's golden, golden\",\n", + " \"livin' my life like it's golden, golden\",\n", + " 'golden, golden, golden, golden',\n", + " \"livin' my life like it's golden, golden\",\n", + " 'golden, golden, golden, golden',\n", + " \"livin' my life like it's golden, golden\",\n", + " 'golden, golden, golden, golden',\n", + " \"living my life like it's golden, golden\",\n", + " 'living my life, living my life',\n", + " \"living my life like it's golden, it really matters to me oh!\",\n", + " \"livin' my life like it's golden, golden\",\n", + " 'golden, golden, golden, golden',\n", + " \"livin' my life like it's golden, golden\",\n", + " 'golden, golden, golden, golden',\n", + " 'gang',\n", + " \"esto es para to' el que habla de lo que habla\",\n", + " \"pero no sabe de que habla, pa' que sepáis de qué hablo\",\n", + " 'money, troubles, commas, hoes',\n", + " \"killers, hustlers, dope shit, i'm load\",\n", + " 'puta, droga, fama, shows',\n", + " 'coca, haters, la vida de un boss, you',\n", + " 'damn my trap life, damn my trap life, damn my trap life',\n", + " 'fuck your whole life, ooh',\n", + " 'damn my trap life, damn my trap life, damn my trap life',\n", + " 'i said fuck your whole life',\n", + " \"cada vez más convencio' que yo vivo para esto\",\n", + " 'estáis todos escocios porque tengo el primer puesto',\n", + " \"he mandao' mi vida de antes a tomar por culo\",\n", + " 'el keo es diferente, nunca va sobre seguro',\n", + " 'ahora hay putas, droga, nalgas en pompa',\n", + " 'flashes, dinero, ferrari testarossa',\n", + " 'feka, shotta, sliding como cobra (snakes)',\n", + " \"poli por la zona, trappin' mercadona (trap)\",\n", + " \"esto es para tol' que dice que yo soy un feka (¿qué?)\",\n", + " 'primo a estas alturas recogimos la cosecha',\n", + " 'esta vida no es penalti, esta vida es cosa hecha (posser)',\n", + " \"yo elegí to' esto, me gusta meter cabeza\",\n", + " 'quiero rolls-royce, phantom, all black like venom',\n", + " \"ballin', speedy! puta, soy veneno (yeah!)\",\n", + " 'benjis (money), cuero, pollo calimero',\n", + " 'hundred en el suelo, trending por el ghetto (gang)',\n", + " 'yo no soy un gangster, yo no soy un guerrillero',\n", + " \"a mí me gusta vacila' con mi cara 'e niño bueno\",\n", + " \"controversia, controversio, el keo siempre está a fuego (ten cuidao')\",\n", + " 'sed inteligentes, no caigáis en mi juego',\n", + " 'esto es money, troubles, commas, hoes',\n", + " \"killers, hustlers, dope shit, i'm load\",\n", + " 'esto es putas, droga, fama, shows',\n", + " 'coca, haters, la vida de un boss',\n", + " 'damn my trap life, damn my trap life, damn my trap life',\n", + " 'fuck your whole life',\n", + " 'esta es my trap life, damn my trap life, damn my trap life',\n", + " 'fuck your whole life',\n", + " 'me lo tienen dicho que la cabra tira al monte',\n", + " \"drogao' como profesión, sanao' como deporte (flex)\",\n", + " \"sé que estoy jodio', que hay un precio por mi nombre\",\n", + " \"tol' mundo quiere pisar dentro de la casa 'el conde (keo)\",\n", + " \"yo soy real shit, don't fuck with my clique (no)\",\n", + " 'demasiado puro, honey, better take a pic',\n", + " 'i got a bad bitch waiting on my whip (skrrt)',\n", + " 'voy medio dormido, baby conduce por mí',\n", + " 'tengo peso en la cartera, beso en todo el cuello',\n", + " \"mírame mi vida por lo que he mojao' en tus sueños\",\n", + " \"trappin' for the pesos, make me feel un bandolero\",\n", + " 'soy la voz como héctor y de abajo como tego (bandolero)',\n", + " 'mírame bien mami, estoy flexeando como nunca (never)',\n", + " \"'tábamo' en la mierda, ahora soy la mierda pura (shit!)\",\n", + " 'tengo una morena que me baila como rumba (tango)',\n", + " \"la traigo loca enamora' de como el blanco zumba (a cuatro)\",\n", + " \"you ain't even know it what the hell bitch i've been through\",\n", + " \"baby you still love me 'cause you're turning to addict for\",\n", + " \"keo never doubt, all this shit ain't go stop me\",\n", + " \"but no pasa na', el keo se adapta fácil\",\n", + " 'esto es money, troubles, commas, hoes',\n", + " \"killers, hustlers, dope shit, i'm load\",\n", + " 'esto es puta, droga, fama, shows',\n", + " 'coca, haters, la vida de un boss, yo',\n", + " 'damn my trap life, damn my trap life, damn my trap mmm...',\n", + " 'mmm...',\n", + " 'i said damn my trap life, damn my trap life, damn my trap life',\n", + " '(fuck you) fuck your whole life, ohh (boss)',\n", + " 'letra de \"666\" ft. blade',\n", + " 'blade, zenit, 2006',\n", + " '6.6.6',\n", + " 'guerrilla tactics, babel tower',\n", + " 'el día que plasmé esto un papel viajaba en tren',\n", + " 'era el tercer aniversario de una guerra en oriente próximo',\n", + " 'que puso un ambiente tóxico en mi sien',\n", + " 'para siempre desde mi punto óptico ya ven',\n", + " 'vengo y lo suelto en esta pista',\n", + " 'si oscuro es el futuro que el auguro',\n", + " 'no es porque sea pesimista',\n", + " 'es que ya es oscuro el cristal a través del que se tiene que mirar',\n", + " 'lanzo dardos que se claven en tu mente al rapear es de cronista',\n", + " 'tengo una espinita clavada en el corazón y se me enquista',\n", + " 'pues sueños se pueden hacer realidad',\n", + " 'y si soñé ser terrorista y acabar',\n", + " 'con el culpable de la invasión de irak es culpa mía que aun exista',\n", + " 'se me escapó la ira, me atrapó y nubló mi vista',\n", + " 'cagada tras cagada de un gobernante aumenta la lista',\n", + " 'el daño irreparable aun perdura y aun así tienen la cara dura',\n", + " 'de exigir soluciones después de permitir las acciones',\n", + " 'más irresponsables de la historia',\n", + " \"si no falla mi memoria usted tiene una trayectoria pa' olvidar\",\n", + " 'señor aznar usted de franco poco dista',\n", + " 'usted y blair son ratas, busco en hamelín el flautista',\n", + " 'diabólico con el rap de antagonista',\n", + " 'lideres de el gobierno de un infierno eterno',\n", + " 'solo en mi cuaderno continua siendo invierno',\n", + " 'soy realista, ese trío de demonios es fascista',\n", + " 'yo solo un artista, no hay mas que decir',\n", + " 'esto no es una entrevista de revista',\n", + " 'en la que insista un periodista',\n", + " 'no voy a mentir, el rap es mi exorcista',\n", + " 'instead of starting a war, come on, feat the people',\n", + " 'get your head up your ass and listen to the people',\n", + " 'gobernantes solo piensan en petróleo, no en el pueblo',\n", + " 'yo plasmo en este folio lo que pienso lo que piensa el pueblo',\n", + " 'you supose to gobern a war where everybody is equal',\n", + " 'but you think the states is king and nobody is equal',\n", + " 'nada es igual si gobernantes todo de mierda cubren',\n", + " 'debería ser igual, aprendan del hip-hop movement',\n", + " 'let me explain what the triple 6 means',\n", + " 'is the time of the devil, the goberment that can close it',\n", + " 'dreams, they dry out into enemies',\n", + " 'floud the earth without nomanaties',\n", + " 'drain your energies, separate flamilies',\n", + " 'segregate the universe',\n", + " 'so for the rice or oil, material game',\n", + " 'the world is now destroyed, everybody is in creen',\n", + " 'the eagle and the triangles',\n", + " 'simbol of the power that control the earth',\n", + " 'watching every move you make on canorous',\n", + " \"rain, carry on, in isn't gorgeaus\",\n", + " \"the simbol shouldn't be an eagle\",\n", + " \"it should be a vulture cause they're poltorous\",\n", + " 'who will they culture next, what nation would they invade',\n", + " 'who the fuck game in the power to treat people to slaves',\n", + " 'god help us, so to step in to war again',\n", + " 'biernabil, revisited like a tournament',\n", + " 'invasion for the cost and threath',\n", + " 'drains flow into buildings, in the hope of decanate',\n", + " 'and in a split second of world changes, nothing is the same',\n", + " \"puss the warm manga, the goberment's the blame\",\n", + " 'he might us wall high up fleed the fly',\n", + " 'those planition to the twin towers',\n", + " 'they abused their powers',\n", + " 'the last day of closening and how the hell',\n", + " 'are were suppose to win',\n", + " \"when their isn't no wing, situation is the sin\",\n", + " 'the dark angels is on this throne, laughing is the world',\n", + " \"conversiting, garden, threaten to control the earth, he's winning\",\n", + " 'yo, bush, blair, leaders of the world',\n", + " \"you ain't here for the people\",\n", + " 'nobody wants a war, stop that now',\n", + " 'everybody wants peace',\n", + " 'talk to the people and you find out',\n", + " \"that's what they want\",\n", + " 'peace, no more war',\n", + " 'instead of starting a war, come on, feat the people',\n", + " 'get your head up your ass and listen to the people',\n", + " 'gobernantes solo piensan en petróleo, no en el pueblo',\n", + " 'yo plasmo en este folio lo que pienso lo que piensa el pueblo',\n", + " 'you supose to gobern a war where everybody is equal',\n", + " 'but you think the states is king and nobody is equal',\n", + " 'nada es igual si gobernantes todo de mierda cubren',\n", + " 'debería ser igual, aprendan del hip hop movement',\n", + " 'fuck the goberment, fuck the goberment',\n", + " 'fuck the goberment, fuck the goberment',\n", + " 'fuck the goberment, fuck the goberment',\n", + " 'fuck the goberment, fuck the goberment',\n", + " 'fuck the goberment, fuck the goberment',\n", + " 'fuck the goberment, fuck the goberment',\n", + " 'ah.. no more war!',\n", + " \"mmm... i don't know, no se na', que ha pasa'o\",\n", + " 'el dinero solo cero es transacción',\n", + " \"esos g's tan violentos, thanks my bro\",\n", + " 'in my grillz, in my grillz brilla el gold',\n", + " \"i don't know, no se na', que ha pasa'o\",\n", + " \"i don't know, no se ná, de verdad\",\n", + " 'lo mataron, yo lo vi, pero ná',\n", + " \"i don't know, i don't know, no se ná brow\",\n", + " \"i don't know, no se ná, que ha pasao brow\",\n", + " 'y esa bitchi te ha dejao en calentón, wo',\n", + " 'microondas, microondas en acción, wo',\n", + " 'no se nada, no se nada, de verdad brow',\n", + " \"i don't know, no se ná, que ha pasao brow\",\n", + " 'tamos locos y dispuestos pa la acción brow',\n", + " \"ya mis labios 'tan cerraos yo no ha-bló\",\n", + " 'mueven kilos, mueven gramos se creen pa-blo',\n", + " \"i don't know, no se na', de verdad brow\",\n", + " 'yo soy serio nunca juego ni habló mal, wo',\n", + " \"soy el hijo del segura' del sicario\",\n", + " 'entra muerto, pero así es el barrio',\n", + " 'tu eres puta y chupas a diario',\n", + " 'no tengo armas tengo diccionario',\n", + " \"mmm... i don't know, no se ná, que ha pasao brow\",\n", + " \"i don't know, no se ná, que ha pasao brow\",\n", + " \"i don't know, no se ná, que ha pasao brow\",\n", + " \"i don't know, no se ná, que ha pasao brow\",\n", + " 'tynastii on it so you know it’s lit',\n", + " 'slow down for me i’m about to go all in',\n", + " '3 hoes on me everyday of the week',\n", + " \"tu sabe' que si, no se lo que pasa\",\n", + " 'no entiendo una shit, no speak español',\n", + " 'what do you mean, explain to me',\n", + " 'colabore please',\n", + " \"somos gente sería pa' q voy a mentir\",\n", + " 'meme dan la street ca parle ap',\n", + " 'je traine avec le vrai tú me voit pas',\n", + " 'keep it a hunned on ce connais pas',\n", + " 'estaba contigo la chupo igual',\n", + " \"la cosa está seria don't panic man\",\n", + " 'si no quiere colaborar que se vaya ya',\n", + " 'toujours dan la street gotta get this cash',\n", + " 'thé popos on me they don’t know where to find',\n", + " 'if they ask me some i don’t know man',\n", + " 'yo estaba en la granja con my yegua',\n", + " 'colaboraciones por el barrio all day bro',\n", + " 'what going on que ha pasado oh my lord',\n", + " \"nose na', nose na', nose na' no\",\n", + " 'je sais rien je sais rien bro',\n", + " 'je sais rien je sais rien bro',\n", + " 'no lo sé no lo sé no lo sé no',\n", + " \"i dont know, i don't know, i don't know na'\",\n", + " \"no se na', no se na', no se na', no\",\n", + " \"i don't know si es mi flow\",\n", + " \"'tamos skuad con mis boys\",\n", + " 'give a fuck tengo bloc',\n", + " 'dile a esa rawchet que coja mi cock',\n", + " \"i don't know pierdo el control\",\n", + " 'tú tienes uno yo tengo a monton',\n", + " \"i don't know no fui yo\",\n", + " 'estaba en el parque y sacaron la glock',\n", + " \"yo soy mejor que to's estos raperos\",\n", + " 'negro arrogante les follo a pelo',\n", + " 'fume la mula con papel de celo',\n", + " 'si juegas conmigo te quemas con hielo',\n", + " 'dije a la jueza que esto es un señuelo',\n", + " 'te rompo los dientes y te doy un pañuelo',\n", + " 'señor agente yo estaba en un vuelo',\n", + " 'destino el infierno hago escala en el cielo',\n", + " 'yo nunca pido ayuda',\n", + " 'estoy esquizo,veo al mundo comiendo basura',\n", + " 'esto es epidemia, señor yo no tengo cura',\n", + " 'los menores poseídos, quieren hacer locuras',\n", + " \"mmm... i don't know, no se na', que ha pasa'o bro\",\n", + " \"i don't know, no se na', de verdad bro\",\n", + " \"i don't know, no se na',que ha pasa'o\",\n", + " \"i don't know, (no sé na')\",\n", + " \"mmm, i don't know, no se na', que ha pasa'o bro\",\n", + " \"i don't know, no se na', de verdad bro\",\n", + " \"let's do it let's do it let's do it let's do it\",\n", + " 'come on now',\n", + " 'ah ah ah ah ah ah',\n", + " 'come on now',\n", + " 'ah ah ah ah ah ah',\n", + " 'come on come on',\n", + " 'yeah yeah',\n", + " 'vuelve el invierno',\n", + " 'nesesito tocarte',\n", + " 'para calentarme',\n", + " 'tu no sabes toas las ganaz que yo tengo de tocarte!',\n", + " 'tu no sabes toas las ganaz que yo tengo de tocarte!',\n", + " 'nesesito amarte',\n", + " 'para yo calentarme',\n", + " 'asi asi...',\n", + " 'uuh uuh uuh uuuuuuuuhhhh',\n", + " 'heeeeeeeeyy calorrrr',\n", + " 'nesesita mi cuerpo para enceder esta lava de amor',\n", + " 'nesesita mi cuerpo para entender que dice el corazon!',\n", + " \"let's do it let's do it let's do it let's do it\",\n", + " 'come on now',\n", + " 'ah ah ah ah ah ah',\n", + " 'come on now',\n", + " 'ah ah ah ah ah ah',\n", + " 'come on come on',\n", + " 'yeah yeah',\n", + " \"let's do it let's do it let's do it let's do it\",\n", + " 'come on now',\n", + " 'ah ah ah ah ah ah',\n", + " 'come on now come on come on',\n", + " 'yeah yeah',\n", + " 'come on now come on come on',\n", + " 'yeah yeah',\n", + " 'salgo yo en un flow moderno',\n", + " 'en pleno invierno',\n", + " 'la temperatura baja y piel pierdo',\n", + " 'me pongo bien tierno',\n", + " 'quiero que me hagaz sentir como en el infierno!',\n", + " 'calor calor sudadera!',\n", + " 'ya que el frio me desespera',\n", + " 'hasme sentir',\n", + " 'sofocao sofocao de calor por ti',\n", + " 'vamoz hacerlo',\n", + " 'dale vamoz hacerlo ya',\n", + " \"let's do it ma'\",\n", + " 'vamoz hacerlo ya',\n", + " '(vamoz hacerlo ya)',\n", + " '(vamoz hacerlo ya)',\n", + " \"let's do it ma'\",\n", + " 'vamoz hacerlo ya',\n", + " 'nesesito que tu me calientes',\n", + " \"maaaa'... con ese cuerpo ardiente!\",\n", + " 'en o en candela!',\n", + " 'en este frio quien me conjela!',\n", + " 'calorrrr',\n", + " 'nesesita mi cuerpo para enceder esta lava de amor',\n", + " 'nesesita mi cuerpo para entender que dice el corazon!',\n", + " 'do it... ven do it... do it... ven do it... do it... ven do it',\n", + " '(demoz nuestras partes y hagamoslo ya)',\n", + " 'do it... ven do it... do it... ven do it... do it... ven do it',\n", + " '(demoz nuestras partes y hagamoslo ya)',\n", + " 'do it... ven do it... do it... ven do it... do it... ven do it',\n", + " '(demoz nuestras partes y hagamoslo ya)',\n", + " \"let's do it baby let's do it baby\",\n", + " \"let's do it baby let's do it baby\",\n", + " 'calorrrr',\n", + " 'nesesita mi cuerpo para enceder esta lava de amor',\n", + " 'nesesita mi cuerpo para entender que dice el corazon!',\n", + " \"let's do it baby let's do it baby\",\n", + " \"let's do it baby let's do it baby\",\n", + " \"let's do it let's do it let's do it let's do it\",\n", + " 'come on now',\n", + " 'ah ah ah ah ah ah',\n", + " 'come on now',\n", + " 'ah ah ah ah ah ah',\n", + " 'come on come on',\n", + " 'yeah yeah',\n", + " \"let's do it let's do it let's do it let's do it\",\n", + " 'come on now',\n", + " 'ah ah ah ah ah ah',\n", + " 'come on now come on come on',\n", + " 'yeah yeah',\n", + " 'come on now come on come on',\n", + " 'yeah yeah',\n", + " 'sinceramente no estan listos para este nuevo nivel... aaaiiight!',\n", + " '(jowel y randy)',\n", + " 'evolucion diario!',\n", + " 'dj blazz',\n", + " 'dj jam',\n", + " 'dexter',\n", + " 'dejala caer!',\n", + " \"(...) they're not on my level. you gotta have to have size, reach, length, you gotta have some attributes, if you come to me in any way equal to me i'm gonna rip your whole head off, and that's it, it happens every time (...) i've ridiculed everyone on the roster (...) this is what i dreamed into reality! oooooh, that looks good! ooooh!\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " \"it's no love, pa' mama estamos en la droga\",\n", + " 'si quieres joder, tranqui, que habrá joda',\n", + " 'si quieres jugar, hay que entender la rola',\n", + " 'si quieres tragar, hay que tragarla toda',\n", + " \"nueva supa', supernova\",\n", + " '¿qué hablas puta? ¿quién te ha dado coba?',\n", + " \"estamos en la droga, to'l día veneno\",\n", + " 'el combo del momento con el toterreno',\n", + " 'yo vivo ya en un cuento',\n", + " 'me despierto y follo, me levanto y prendo',\n", + " 'de lo demás no entiendo',\n", + " 'ni quién se está tirando, ni quién se está vendiendo',\n", + " '¿quién se lo rockea así, loco?',\n", + " 'tirando barras como yo, no hay otro',\n", + " 'agüita con el flaco que le mete al coco',\n", + " 'tragando birra, quemando choco',\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'los ciegos ven esto, los sordos lo oyen',\n", + " 'los mudos lo dicen: ceerre y lone',\n", + " 'clientes vienen, no buscan bromas',\n", + " 'vuelan como el diente de isaiah thomas',\n", + " 'soy mi mejor versión tras la actualización',\n", + " '¿clavos en tus manos de tu creador no responden?',\n", + " \"vente pa' mi la'o entonces\",\n", + " 'traigo leña a la ciudad como green a golden',\n", + " 'lo que tú esnifas lo saco con receta',\n", + " \"mato el game como el sida en los '80\",\n", + " 'mi cara es una mierda, pero escucha ¡cojones!',\n", + " 'subo tanto las líneas que son el surco de aviones',\n", + " 'vivo al raso a lo vasco hernández',\n", + " 'no te creen como al batman de affleck',\n", + " 'tiro 3 como un yugoslavo',\n", + " 'y sólo hago colabos con quien comparto tragos',\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " \"you can't catch me, cabrón, crossover\",\n", + " 'a esos rappers los pongo a ver wizadora',\n", + " 'microphone, original controler',\n", + " 'una mano en los huevos y otra en el mando y game over',\n", + " 'esos chiquitines, el recreo es un concierto',\n", + " 'yo no oigo esa mierda ni con las orejas de un muerto',\n", + " 'en la luz el bufón, en la sombra el arquitecto',\n", + " 'mi curro, mi kely, mi chica; chico, estoy perfecto',\n", + " 'oye agente, si no hay cuerpo, no hay delito',\n", + " 'barras en tu puta cara, manny a margarito',\n", + " 'odio el juico moral, no soy perito',\n", + " 'tu piba dice que soy un cabrón, mi madre un bendito',\n", + " 'si entran por la puerta you better run',\n", + " \"con más estilo que tú hasta pa' comprar el pan\",\n", + " 'fuera del patrón, fuera del qué dirán',\n", + " 't-o-t-e, ready for the payback',\n", + " \"marcus is hurt! (...) lookin' to finish it here\",\n", + " 'this is why everyone has been talking about conor mcgregor!',\n", + " \"it's all over! another first round win! wow!\",\n", + " \"that is exactly why he's so dangerous, mike, and he took some big shots, but guess what? he's got a huge chin as well\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " 'back por aquí, mira el game is over',\n", + " \"it's no love, mira el game is over\",\n", + " '¡daddy!',\n", + " \"el fuego del caribe, ma'\",\n", + " 'daddy yankee',\n", + " 'nicole',\n", + " 'yeah',\n", + " 'you are the king of my heart',\n", + " 'and i was yours from the start',\n", + " \"so don't you ever go far\",\n", + " 'papi lover!',\n", + " \"there ain't no other like you\",\n", + " 'no other lover than you',\n", + " 'so does not mean what you do',\n", + " 'papi lover!',\n", + " 'soy rey de los corazones, en todas las relaciones',\n", + " 'despierto mil emociones y no tengo comparaciones',\n", + " 'sé cómo tú te pones, tú no tienes limitaciones',\n", + " 'viajando en las dimensiones de sensación y pasiones (oh)',\n", + " 'llamame rápido, le llego tranquilo',\n", + " \"mami, sólo tu y yo, formamo' el vacilón\",\n", + " '¿qué tú quieres?, ¿whu-whu-what?',\n", + " 'yo lo tengo, ¿whu-whu-what?',\n", + " \"mucho cariñito ma'\",\n", + " 'el papi lover te lo da',\n", + " \"i'll be there as soon as you call me\",\n", + " 'te estoy esperando',\n", + " \"baby i won't leave you lonely\",\n", + " \"you know i got you, ma'\",\n", + " 'you are the king of my heart',\n", + " 'and i was yours from the start',\n", + " \"so don't you ever go far\",\n", + " 'papi lover!',\n", + " \"there ain't no other like you\",\n", + " 'no other lover than you',\n", + " 'so does not mean what you do',\n", + " 'papi lover!',\n", + " 'when i look in your eyes',\n", + " 'i see a heat in your fire',\n", + " 'i know your every desire',\n", + " 'papi lover!',\n", + " 'el jefe de mi amor',\n", + " 'you are the one i adore',\n", + " 'like no one ever before',\n", + " 'papi lover!',\n", + " \"responde, vamo' a determinar quién en tu vida te corresponde\",\n", + " 'esa felina quién la domina y la pone en orden',\n", + " 'ponte fresca y te tumbo el fronte',\n", + " 'así es mi corte, you know, girl',\n", + " 'todas esas cositas quien te las enseñó',\n", + " 'quien es tu amigo y tu amor incógnito',\n", + " 'el que convierte tu inocencia en la pasión',\n", + " 'tu perdición, tú sabes',\n", + " \"i'll be there as soon as you call me\",\n", + " 'te estoy esperando',\n", + " \"baby i won't leave you lonely\",\n", + " \"yo no te suelto, ma'\",\n", + " 'you are the king of my heart',\n", + " 'and i was yours from the start',\n", + " \"so don't you ever go far\",\n", + " 'papi lover!',\n", + " \"there ain't no other like you\",\n", + " 'no other lover than you',\n", + " 'so does not mean what you do',\n", + " 'papi lover!',\n", + " 'when i look in your eyes',\n", + " 'i see a heat in your fire',\n", + " 'i know your every desire',\n", + " 'papi lover!',\n", + " 'el jefe de mi amor',\n", + " 'you are the one i adore',\n", + " 'like no one ever before',\n", + " 'papi lover!',\n", + " \"i don't care whatever people say\",\n", + " \"'cause you've always been there for me\",\n", + " \"i don't care 'cause they don't know your way\",\n", + " \"'cause you've been treatin me like a queen\",\n", + " 'and no mather what i can depend on you (i can depend on you)',\n", + " 'to be giving me what i want (top of the world, baby!)',\n", + " \"to be giving me what i need (daddy! let's go get 'em, ma'!)\",\n", + " 'what i need',\n", + " 'you are the king of my heart',\n", + " 'and i was yours from the start',\n", + " \"so don't you ever go far\",\n", + " 'papi lover!',\n", + " \"there ain't no other like you\",\n", + " 'no other lover than you',\n", + " 'so does not mean what you do',\n", + " 'papi lover!',\n", + " 'when i look in your eyes',\n", + " 'i see a heat in your fire',\n", + " 'i know your every desire',\n", + " 'papi lover!',\n", + " 'el jefe de mi amor',\n", + " 'you are the one i adore',\n", + " 'like no one ever before',\n", + " 'papi lover!',\n", + " '¿qué tú quieres mamá? ven a donde papá',\n", + " 'tú sabes que el papi lover soy yo',\n", + " '¿qué tú quieres mamá? ven a donde papá',\n", + " 'tú sabes que el papi lover soy yo',\n", + " 'you are, you are, you are, you are',\n", + " 'you are, you are, you are, you are my papi lover',\n", + " 'you are, you are, you are, you are',\n", + " 'you are, you are, you are, you are my papi lover',\n", + " 'you are, you are, you are, you are',\n", + " 'you are, you are, you are, you are my papi lover',\n", + " 'you are, you are, you are, you are',\n", + " 'you are, you are, you are, you are my papi lover',\n", + " 'oh!',\n", + " 'yeah',\n", + " '¡da-ddy-yan-kee!',\n", + " ...]},\n", + " 'data': ['attention all the ladies',\n", + " 'get on the dance floor',\n", + " \"cause it's going down, it's a party tonight, baby\",\n", + " 'voltio (residente calle 13)',\n", + " 'featuring',\n", + " 'three 6 mafia',\n", + " 'hook: three 6 mafia',\n", + " 'shake',\n", + " 'shake it like a rattlesnake (move)',\n", + " 'move it like a rattlesnake (shake)',\n", + " 'shake it like a rattlesnake (move)',\n", + " 'move it like a rattlesnake (shake)',\n", + " 'shake it like a rattlesnake (move)',\n", + " 'move it like a rattlesnake (shake)',\n", + " 'shake it like a rattlesnake (move)',\n", + " 'move it like a rattlesnake (shake)',\n", + " 'chorus:',\n", + " 'con tu chulin culin cunflai',\n", + " 'abro la boca y mi lengua se cae',\n", + " 'ojalai',\n", + " 'ojalai',\n", + " 'ojalai',\n", + " 'ojalai',\n", + " 'ojalai',\n", + " 'ojalai que tu seas mi mai!',\n", + " '(verse 1)',\n", + " 'cuando te huelo, caigo en el anzuelo',\n", + " 'con tu perfume',\n", + " 'con tu colonia',\n", + " 'tu eres una diabla',\n", + " 'una demonia',\n", + " 'vamos a casarnos, pero sin ceremonia',\n", + " 'vamos a casarnos a la mala',\n", + " 'en la cocina, y el bano, y la sala',\n", + " 'conmigo no seas chic',\n", + " 'come mierdera',\n", + " 'conmigo, te casas a lo parcelera',\n", + " 'llego la jinetera',\n", + " 'la que te roba la cartera',\n", + " 'con sus nalgas de brasilera',\n", + " 'con mucha salsa, salsa salsera',\n", + " 'a tomates no huele',\n", + " 'huele a bellaquera',\n", + " \"como palma de coco pega'o a la penca\",\n", + " 'gato silvestre detras de la renca',\n", + " 'afueguillo, el rastrillo de todas las realengas',\n", + " \"les tengo algo aqui pa' que se entretengan\",\n", + " \"pon las manos en el piso y las nalgas pa' arriba\",\n", + " 'vamonos underground, no se cohiba',\n", + " 'te gusta el bandidaje, si tu eres una diva',\n", + " '{*sheep*}',\n", + " 'no te hagas la chiva',\n", + " 'vaya',\n", + " 'repeat hook & chorus',\n", + " '(three 6 mafia in background)',\n", + " 'que paso, shorty, what you gonna do',\n", + " 'deja mojar el palitroque en salsa ragu',\n", + " \"pa' mojarte los deditos en baby food (what, what, what, what)\",\n", + " 'hey, no me patees que esto no es kung-fu (what, what, what, what)',\n", + " \"it's the mafia\",\n", + " 'and voltio',\n", + " 'in the club, full of roll, with some bad ass hoes',\n", + " \"it's a polaroid moment cause we flashy in here\",\n", + " \"with so many diamonds, it don't even look real (yeah)\",\n", + " 'break: juicy j',\n", + " \"we three 6 mafia stayin' fly, ah-ah-ah\",\n", + " \"chasin' latina girls til we die, ah-ah-ah\",\n", + " 'and we love the way they shake it, oh, my, ah-ah-ah',\n", + " 'please let me get get a piece of that pie, ah-ah-ah',\n", + " '(verse 4)',\n", + " 'se te ve la raya, la partidura',\n", + " 'la que divide la blancura de tu nalgura, dura',\n", + " 'tu eres pura sangre, sangre pura',\n", + " 'por ti dejo el celibato y me quito de cura',\n", + " 'me lo juras?',\n", + " \"nah, ni pa' tanto\",\n", + " 'bueno, después de que me des el canto',\n", + " 'yo voy a todas contra cualquier santo',\n", + " 'asalto cuatro bancos y me tiro de un barranco',\n", + " 'yo a veces me tranco',\n", + " 'pero aunque me quede manco',\n", + " 'le guayo el calanco en su pantaloncito blanco',\n", + " 'en el cual',\n", + " 'se le brota la pandorca',\n", + " 'abusadora',\n", + " 'después que la cría la ahorca',\n", + " \"la tiene a dieta, pero como quiera 'ta gorda\",\n", + " 'no come maíz, pero le encanta la mazorca',\n", + " 'si se prende en fuego, hay que pegarle la manguera',\n", + " 'seguimos la pichaera',\n", + " 'repeat hook & chorus',\n", + " '(dj paul in background) {three 6 mafia in background}',\n", + " 'con tu',\n", + " 'chulin culin cunflai, ah-ah-ah (wave your hands up)',\n", + " 'ah-ah, ah-ah (wave your hands up)',\n", + " 'con tu',\n", + " 'chulin culin cunflai, ah-ah-ah (wave your hands up)',\n", + " \"ah-ah, ah-ah (it's goin' down)\",\n", + " \"it's goin' down\",\n", + " \"it's goin' down {what, what}\",\n", + " \"it's goin' down {what, what}\",\n", + " \"it's goin' down {what, what}\",\n", + " \"it's goin' down {what, what}\",\n", + " 'residente calle 13 y julio voltio {what, what}',\n", + " 'con el three 6 mafia {what, what}',\n", + " \"it's goin' down {what, what}\",\n", + " \"it's goin' down {what, what}\",\n", + " 'i wonder how you could tell her',\n", + " 'that you would give her everything and more',\n", + " \"'cause i'm just thinking how it seems a bit crazy\",\n", + " \"that you got your act together but i know it's for the better\",\n", + " 'why life you are a beautiful thing?',\n", + " \"nine times out of ten you're unbelievable\",\n", + " \"write in all these things you haven't seen\",\n", + " 'find everything you want and more',\n", + " \"pieces, i'm making peace with\",\n", + " 'with you, with you',\n", + " 'pieces, i am making my peace with',\n", + " 'with you, with you',\n", + " 'me despierto con cara de otro',\n", + " \"avanzo pixela'o, perdiendo trozos\",\n", + " 'hace un sol de puta madre',\n", + " 'y ni benicio me saca del pozo',\n", + " 'no levanto el culo si tocan el timbre',\n", + " \"solo pa' poner la cara b\",\n", + " 'le hecho unas hojillas al grinder, grindo con el finger',\n", + " 'una nube de humo de cabeza a pies (wow)',\n", + " 'lo que hay en mi pecho no es decoración (¡qué va!)',\n", + " 'sobre tu tejado, lloviendo a pulmón',\n", + " \"estoy cala'o hasta sus huesos, wet bones\",\n", + " 'el pasillo no es estrecho si pasamos los dos',\n", + " 'antes de hablar asómate al retrovisor',\n", + " 'y pregúntate si lo harías mejor',\n", + " 'tiro lo que sobra y pillo combustible',\n", + " \"pa' cruzar este universo de papel y cartón\",\n", + " \"pieces, i'm making piece with (na, na)\",\n", + " 'with you (yeah), with you (¡oh!)',\n", + " 'pieces, i am making my piece with',\n", + " 'with you, with you',\n", + " 'pelusa flama, ¡ajá!',\n", + " '(oddliquor, you know)',\n", + " 'everything you need i got, papi! ¡ajá!',\n", + " 'kung fu, tarantino en las sábanas',\n", + " 'lenguaje mixto, descifrables secuencias',\n", + " 'sexual, rítmico, relativo, aceptable',\n", + " \"ahora te vas, veo lejos, 'niquilable\",\n", + " \"la fonética 'e tu lengua, imprevisible\",\n", + " \"suenan dentro 'e los boricuas\",\n", + " \"inestable, capicúa, it's a over\",\n", + " 'hazme en el cuerpo espuma for discover',\n", + " 'circunferencias en tu centro',\n", + " 'minimalismo, espaguetis',\n", + " \"clásico, olímpico, así metía'\",\n", + " 'nos mezclamos, escapamos',\n", + " 'de lo básico, histórico',\n", + " 'cinco dimensiones',\n", + " 'matices y superhéroes',\n", + " 'pero sí el síndrome, atmósfera',\n", + " \"it's slay\",\n", + " \"when you want i'm ready for slay, babe\",\n", + " \"when you want i'm ready for slay, babe\",\n", + " \"when you want i'm ready for slay, babe\",\n", + " \"when you want i'm ready for slay, babe\",\n", + " 'ey yo, ajá',\n", + " 'you are my fresh light',\n", + " 'i need a hurt time',\n", + " 'i get the pleasure',\n", + " 'how i get now?',\n", + " 'you are my fresh light',\n", + " 'i need a hurt time',\n", + " 'i get the pleasure',\n", + " 'how i get now?',\n", + " 'for you too my party',\n", + " 'i got just sound, papi',\n", + " 'for you too my party',\n", + " 'i got just sound, papi',\n", + " 'tres horas más tarde en el abismo',\n", + " 'las uñas largas, sin esmalte',\n", + " 'vos sos el mismo, sin city de esa',\n", + " 'transiciones, los clasifican canciones viejas',\n", + " \"y vo' vacilando en tus cejas\",\n", + " 'rejas de tu óptica mística, azulada',\n", + " 'tengo una virgen blanca, helada, que te devora',\n", + " 'por dos monedas de oro respiran mis poros',\n", + " 'en tu panal de carne',\n", + " 'give me your sugar, pendejo',\n", + " 'shy wondering',\n", + " '¿por qué persigues al conejo, alicia?',\n", + " 'los azulejos so clean brillan, ajá, ah',\n", + " '¡shake your little culo, flaca, ajá!',\n", + " 'you are my fresh light',\n", + " 'i need a hurt time',\n", + " 'i get the pleasure',\n", + " 'how i get now?',\n", + " 'you are my fresh light',\n", + " 'i need a hurt time',\n", + " 'i get the pleasure',\n", + " 'how i get now?',\n", + " 'for you too my party',\n", + " 'i got just sound, papi',\n", + " 'for you too my party',\n", + " 'i got just sound, papi',\n", + " 'escaleras, habítame lentito las caderas',\n", + " 'no sé hasta qué punto me esperas',\n", + " 'pegando chicle debajo del asiento',\n", + " 'yo sé que a vos te pone mi acento clandestino',\n", + " 'te conviertes en mi guarida',\n", + " 'estás conmigo planeando la huida',\n", + " 'dividida, rendida a tus pies siendo hembra',\n", + " 'siendo hombre, siendo humana, siendo hambre',\n", + " 'siete sentidos y el fiambre, la mesada',\n", + " 'no me gusta como huele mi almohada',\n", + " 'biggie suena en la zona, video-vigilada',\n", + " 'la de tu cuello supura y buda mira, ah',\n", + " 'you are my fresh light',\n", + " 'i need a hurt time',\n", + " \"thinkin' in pleasure\",\n", + " \"get party to my world, i've been here\",\n", + " 'get party to my world, here, here',\n", + " 'get party to my world, here, here',\n", + " 'to my, to my world, here, here',\n", + " 'i got so hot, fuck me',\n", + " 'i gotta so hot, fuck me',\n", + " 'i gotta so hot, fuck me',\n", + " 'oh, oh, yo so fuck me',\n", + " '(dímelo)',\n", + " 'top down in the window with the ac set, all by ourselves now',\n", + " 'and you know what i want and i want that shit right now',\n", + " 'and the shit that i do in the street i do for you',\n", + " 'but i know you know',\n", + " 'i give it up, give it up, give it up, give it up for you',\n", + " 'give it up, give it up, give it up, give it up for you',\n", + " 'give it up, give it up, give it up, give it up for you',\n", + " 'give it up, give it up, give it up, give it up for you',\n", + " 'all this for you',\n", + " 'all this for you, todo esto para ti',\n", + " 'pide lo que quiera baby, solo tú me pone así',\n", + " 'dale mami entonces pide lo que quieras',\n", + " '¿quieres zapato o tú quiere una cartera?',\n", + " 'en mi lista tú eres la primera',\n", + " '¿quieres mi banco?, yo te doy la cuenta entera',\n", + " \"to' lo que tú quieras, tú te lo mereces\",\n", + " 'tú eres la más dura, la que me enloquece',\n", + " 'baby girl yo soy tu loquito',\n", + " \"de todito' el favorito\",\n", + " 'de tu sexo un adicto',\n", + " 'yo quiero cuidarte un chamaquito',\n", + " 'boricua, morena, americana',\n", + " 'me hacen coro adonde sea',\n", + " 'dominicana, colombiana',\n", + " \"i want to give it to you to' los día de la semana\",\n", + " 'i give it up, give it up, give it up, give it up for you',\n", + " 'give it up, give it up, give it up, give it up for you',\n", + " 'give it up, give it up, give it up, give it up for you',\n", + " 'give it up, give it up, give it up, give it up for you',\n", + " \"como no sabía que cartera comprarte, te las compré to'as\",\n", + " \"baby, tú sabes que por ti me voy a to'a\",\n", + " \"por ti le picheo a to'as\",\n", + " \"me ves llegar de versace y te mojas to'a, yeh\",\n", + " 'dime como corre la bm en la carretera',\n", + " 'chequea si la corta cabe en tu carolina herrera',\n", + " 'si quieres en tu closet monto una boutique de zapato y cartera',\n", + " \"y chingando, bebé, hago to'o lo que tú quieras\",\n", + " 'tú eres exclusiva, como ella ya no vienen',\n", + " 'las otras no suenan igual cuando se vienen',\n", + " 'con tu totito me comprometí',\n", + " \"la llevé pa' francia como se lo prometí\",\n", + " 'con vista a la torre eiffel se lo metí',\n", + " 'i give it up, give it up, give it up, give it up for you',\n", + " 'give it up, give it up, give it up, give it up for you',\n", + " 'give it up, give it up, give it up, give it up for you',\n", + " 'give it up, give it up, give it up, give it up for you',\n", + " 'all this for you',\n", + " 'yeh, yeh, yeh, yeh, yeh, yeh',\n", + " 'bad bunny baby, baby',\n", + " 'díselo luian',\n", + " 'hear this music, hear this music',\n", + " 'messiah',\n", + " 'tory lanez',\n", + " 'tunicolo',\n", + " 'hip-hop nonstop',\n", + " \"en attendant c'que le futur nous va proposer\",\n", + " 'car jamais la tête baissée',\n", + " \"ma clique dans un état de haute estime 'vec les diables du ciel\",\n", + " 'lddc, toujours en cavale, ouais',\n", + " 'mi hermano, te llevaré siempre profundo en mi corazón',\n", + " 'recordaré tu sonrisa y recordaré tu voz',\n", + " \"recordaré todo' los tiempos que me diste\",\n", + " \"recordaré to' lo que me dijiste antes de irte\",\n", + " \"recordaré y to' los recuerdos los anoto\",\n", + " 'para jamás en mi vida olvidar esе tiempo loco',\n", + " 'que ahora el tiеmpo es otro, el tiempo es duro y triste',\n", + " 'y me da una dificultad increíble aceptar que tú te fuiste',\n", + " 'es increíble, inaceptable la realidad',\n", + " 'pero esta confraternidad dura hasta la eternidad, de pronto ya no estás',\n", + " 'siempre te llevaré conmigo, siempre seguirás',\n", + " 'siendo parte de mi vida, todavía me irás a ayudar',\n", + " 'que nunca iré a olvidar tu manera de pensar, hermano, nunca',\n", + " 'tu manera respetaré y apreciaré ante tu tumba',\n", + " 'me arrodillo y te empiezo a hablar',\n", + " 'te empiezo a cantar',\n", + " \"tunicolo, we always gon' remember you\",\n", + " \"reminiscin' about the times we went through\",\n", + " 'always grateful, we respectful',\n", + " 'just to have met you, have met you, yeah',\n", + " \"tunicolo, we always gon' remember you\",\n", + " \"reminiscin' about the times we went through\",\n", + " 'always grateful, we respectful',\n", + " 'just to have met you, have met you',\n", + " 'bro, i remember your irresistible smile',\n", + " \"like i've seen you yesterday even though it's been much more time\",\n", + " 'brother, i remember how many times you make me laugh',\n", + " 'you brought me happiness no matter how bad the mood was that i had',\n", + " 'you were there for me, down with me, yes, you make me feel',\n", + " \"a brother's love for real, forever prime is concealed\",\n", + " 'your name is written on my heart, my love for you sincere',\n", + " \"mi hermano, te extraño, life isn't the same sin ti\",\n", + " 'i know you were a happy man even though you went through hell',\n", + " 'i know you loved the ones around you like you loved yourself',\n", + " 'you gave unconditional love to your girl like a role model for a man',\n", + " \"but why you had to leave i'll never understand\",\n", + " \"i'm just glad that i had the chance to know your soul\",\n", + " \"and i'm sorry that i can't yet follow you, bro\",\n", + " \"i will go, i'll always keep it in my mind, we'll go fo' sho'\",\n", + " \"'cause we always have you with us, we told you so\",\n", + " \"tunicolo, we always gon' remember you\",\n", + " \"reminiscin' about the times we went through\",\n", + " 'always grateful, we respectful',\n", + " 'just to have met you, have met you, yeah',\n", + " \"tunicolo, we always gon' remember you\",\n", + " \"reminiscin' about the times we went through\",\n", + " 'always grateful, we respectful',\n", + " 'just to have met you, have met you',\n", + " 'solo recordar tu sonrisa y dejar de lado el destino',\n", + " 'que en el corazón tenemos tu carisma que nos muestra el camino',\n", + " 'miro tus fotos, videos de conciertos y sigo esperando que el día de mi muerte, volveré a estar contigo',\n", + " 'may you always accompany your brothers for real, yeah',\n", + " 'may you got us until we reach the top of the hill, yeah',\n", + " 'may your charisma reach out to all the people',\n", + " 'hermano, fue un placer haberte conocido',\n", + " 'es dura la realidad y aunque tú ya no estás',\n", + " 'nuestra confraternidad durará hasta la eternidad',\n", + " \"tunicolo, we always gon' remember you\",\n", + " \"reminiscin' about the times we went through\",\n", + " 'always grateful, we respectful',\n", + " 'just to have met you, have met you, yeah',\n", + " \"tunicolo, we always gon' remember you\",\n", + " \"reminiscin' about the times we went through\",\n", + " 'always grateful, we respectful',\n", + " 'just to have met you, have met you',\n", + " 'yeah, eh',\n", + " 'yeah, always cool, bro, yeah',\n", + " 'goa',\n", + " \"yeah (i'm a punkstar)\",\n", + " 'woah, check (bitch, i feel like fish narc)',\n", + " 'i need a pop now (i need a pop)',\n", + " 'i just need some love right now (i just need some love)',\n", + " \"i said i’m up now (i said i'm up now)\",\n", + " \"baby won't you please come hold me down (please come hold me down)\",\n", + " 'i need a pop now (i need a pop)',\n", + " 'i just need some love right now (i just need some love)',\n", + " \"i said i’m up now (i said i'm up now)\",\n", + " \"baby won't you please come hold me down (please come hold me down)\",\n", + " 'no entiendes nada',\n", + " '¿cómo con lo que te drogas, pides ensalada?',\n", + " 'necesito más tiempo contigo',\n", + " 'de momento la droga es mi mejor amigo',\n", + " 'no siento la cara y yo no vengo del dentista',\n", + " \"me he queda'o dormido conduciendo en la autopista\",\n", + " 'estoy vomitando y tengo nublada la vista',\n", + " \"y he bota'o unos cuantos puntos que había en mi lista\",\n", + " \"baby fuck, 'toy broke\",\n", + " 'porque quemo el money como una estrella de rock',\n", + " 'si algún día me muero, bitch, celébralo',\n", + " 'de momento mami dame, dame, dame, dame, dame, dame más amor (check)',\n", + " 'i need a pop now (i need a pop)',\n", + " 'i just need some love right now (i just need some love)',\n", + " \"i said i'm up now (i said i'm up now)\",\n", + " 'baby won’t you please come hold me down (please come hold me down)',\n", + " 'i need a pop now (i need a pop)',\n", + " 'i just need some love right now (i just need some love)',\n", + " \"i said i’m up now (i said i'm up now)\",\n", + " 'baby won’t you please come hold me down (please come hold me down)',\n", + " 'ayy, ayy, woah',\n", + " 'ayy, soy un adicto de tu amor',\n", + " 'your pussy feel better than drugs',\n", + " 'you, me and my bonnie and clyde, oh (yeah)',\n", + " 'i got my money, i got more hoes (eh-eh; ayy)',\n", + " 'si quiero ahora lloro cocaína',\n", + " 'no siento nada si tú me miras',\n", + " 'ahora es ayer en new york, babe (york, babe)',\n", + " 'te veo en cada una que me mira, yeah',\n", + " 'molly, fucking adderall and messing with the coca (eh)',\n", + " 'contigo no, no duermo solo',\n", + " 'no le eches la culpa a la droga de que esté loco (eh)',\n", + " 'contigo no, hazte otro',\n", + " 'molly, fucking adderall and messing with the coca (with the coca)',\n", + " 'contigo no, no duermo solo',\n", + " 'no le eches la culpa a la droga de que esté loco',\n", + " 'contigo no (check)',\n", + " 'i need a pop now (i need a pop)',\n", + " 'i just need some love right now (i just need some love)',\n", + " \"i said i'm up now (i said i'm up now)\",\n", + " \"baby won't you please come hold me down (please come hold me down)\",\n", + " 'i need a pop now (i need a pop)',\n", + " 'i just need some love right now (i just need some love)',\n", + " \"i said i’m up now (i said i'm up now)\",\n", + " \"baby won't you please come hold me down (please come hold me down)\",\n", + " 'hey yo',\n", + " \"you know who's this\",\n", + " 'daddy yankee',\n", + " 'desde la isla del cangrinaje',\n", + " 'you know how we do man, come on!',\n", + " 'ooh, ooh',\n", + " \"ten cuida'o con el pirata del caribe\",\n", + " 'ooh, ooh',\n", + " \"vamo'a ver si tú tienes calibre\",\n", + " 'ooh, ooh',\n", + " 'aquí en la calle el más fuerte sobrevive',\n", + " 'ooh, ooh',\n", + " 'entre los grandes mi nombre se escribe',\n", + " 'zona de gangstas',\n", + " 'esto sí es el mundo real',\n", + " \"mai' llegaron los players (daddy!)\",\n", + " 'gyal muevelo, oh-ooh-oh (come on!)',\n", + " 'zona de gangstas (what!?)',\n", + " \"todos mis soldados let's ride\",\n", + " 'por eso ellas se pegan',\n", + " \"ma' muevelo, oh-ooh, oh-ooh (come on! come on!)\",\n", + " 'damas y caballeros, voy a paso ligero',\n", + " 'ayer estaba pobre y hoy camino con dinero',\n", + " 'la fama no me importa, mi hermano, soy sincero',\n", + " 'gracias a mi señor que me dio el alma de un guerrero',\n", + " 'calle, ya que me llama, camino con calma',\n", + " 'si actuas de bravo nosotros te damos en llama',\n", + " 'calle, sigo cazando, a las damas dandole flama',\n", + " \"muévete chama', c'mon, shake it up, mama\",\n", + " \"shorty dale, mai' go!, rapido muevelo\",\n", + " 'saca la fiera que tú tienes, no te detengas, go! go!',\n", + " 'tú sabes quienes son, yankee-man con el dogg',\n", + " 'abran paso que por ahí viene da-ddy!',\n", + " 'zona de gangstas',\n", + " \"esto sí es el mundo real (nos fuimos lejos, pa')\",\n", + " \"mai' llegaron los players (¿quiénes?)\",\n", + " 'gyal muevelo, oh-ooh-oh (come on!)',\n", + " 'zona de gangstas (what!?)',\n", + " \"todos mis soldados let's ride\",\n", + " 'por eso ellas se pegan',\n", + " \"ma' muevelo, oh-ooh, oh-ooh (come on! come on!)\",\n", + " 'one for the money and two for the gangstas',\n", + " 'three hot shots that pop for the wankstas',\n", + " 'top dogg, s-n-double o-p',\n", + " 'the gangsta mac, a g from the l.b.c',\n", + " \"i'm on the go, i get the dough\",\n", + " \"i let 'em know, i bust a ho\",\n", + " \"i'm shakin' up the chaperones\",\n", + " \"that's everywhere a nigga go\",\n", + " 'this will be',\n", + " 'the day that we will always g',\n", + " \"turn around, get 'em up\",\n", + " \"put 'em down, i fall back\",\n", + " 'take my hand',\n", + " 'we could have a little fun in the van',\n", + " \"i'm the man with the gun in his hand\",\n", + " \"i don't plan on stayin' around\",\n", + " \"i'm playin' around\",\n", + " \"i'm all about layin' it down\",\n", + " 'now ge-get up (get up)',\n", + " \"or i'ma have to hit up (hit up)\",\n", + " \"and if you say the wrong set, i'm get you you lit up (lit up)\",\n", + " 'the deal?, you know the trill',\n", + " 'kick rocks, motherfucker',\n", + " 'and tell your bitch to come here, for real',\n", + " 'zona de gangstas',\n", + " \"esto sí es el mundo real (nos fuimos lejos, pa')\",\n", + " \"mai' llegaron los players (¿quiénes?)\",\n", + " 'gyal muevelo, oh-ooh-oh (come on!)',\n", + " \"shorty dale, mai' go!, rapido muevelo\",\n", + " 'saca la fiera que tú tienes, no te detengas, go! go!',\n", + " 'tú sabes quienes son, yankee-man con el dogg',\n", + " 'abran paso que por ahí viene da-ddy!',\n", + " 'zona de gangstas',\n", + " \"esto sí es el mundo real (nos fuimos lejos, pa')\",\n", + " \"mai' llegaron los players (¿quiénes?)\",\n", + " 'gyal muevelo, oh-ooh-oh (come on!)',\n", + " 'zona de gangstas (what!?)',\n", + " \"todos mis soldados let's ride\",\n", + " 'por eso ellas se pegan',\n", + " \"ma' muevelo, oh-ooh, oh-ooh (come on! come on!)\",\n", + " 'hey yo',\n", + " 'meet the paisa',\n", + " \"conquistando lo' estados unidos\",\n", + " 'snoop dogg',\n", + " 'daddy yankee, el cangri',\n", + " 'the real gangstas',\n", + " 'traficando música por toneladas',\n", + " 'oh-ooh-oh!',\n", + " 'oh-ooh-oh!',\n", + " 'the union, yeah',\n", + " 'real trap shit',\n", + " \"i told spiff i'm talking reckless\",\n", + " 'real hasta la muerte',\n", + " 'dímelo, spiff, yeh',\n", + " 'the runners',\n", + " 'esta es la unión',\n", + " 'future',\n", + " 'anuel',\n", + " '¡bad bunny, baby, bebé!',\n", + " 'i fuck reality stars, her pussy is good',\n", + " 'i make a r&b broad, suck on that wood',\n", + " \"i drive foreign cars, and that's understood\",\n", + " \"i drop 80 on one pinky ring, what the hell i was thinkin'?\",\n", + " \"i had to pull over an agressive mercedes, the hell i was drinkin'?\",\n", + " \"i fuck all these hoes, i be gettin' all this money\",\n", + " \"i turn 'em to demons\",\n", + " \"what the hell i was thinkin'?\",\n", + " \"what the hell i was thinkin'?\",\n", + " \"what the hell i was thinkin'? (yeh, yeh, yeh)\",\n", + " \"what the hell i was thinkin'?\",\n", + " 'yeh',\n", + " 'yo muero guerreando como mussolini (wuh)',\n", + " 'ando con spiff en un lamborghini (skrt)',\n", + " 'díselo luian, que hace tiempo que ya tú le metiste a mimi',\n", + " 'sólo totitos de televisión (yeh), porque saben más rico (rico, rico, rico)',\n", + " \"ando buscando putas en miami porque ya les di a to'a las de puerto rico (prra), yeah\",\n", + " 'siempre ando en el aire como jet blue (¡blue!)',\n", + " \"las botella' son de möet o de don peri, yo no quiero blue (¡no!)\",\n", + " 'codeína con sprite o con mountain dew (dew)',\n", + " \"las baby no se despegan pa' mí que en el bicho tengo krazy glue (glue-glue)\",\n", + " 'codeine y ciclón (¡-clón!), coca y un blunt (¡wuh!)',\n", + " 'no sé qué puñeta yo pienso, tengo un arrebato cabrón (arrebato cabrón)',\n", + " 'jangueando con future, obama y lebron (yeh, yeh, yeh)',\n", + " \"gastando 300 mil peso' que tenía guarda'o en un dron (wuh-uh)\",\n", + " \"diosa canale' en venezuela, giulia arane en italia\",\n", + " \"y en p.r, lo siento por francis, pero estoy puesto pa' darle a natalia (chin, chin, chin)\",\n", + " 'i fuck reality stars, her pussy is good',\n", + " 'i make a r&b broad, suck on that wood',\n", + " \"i drive foreign cars, and that's understood\",\n", + " \"i drop 80 on one pinky ring, what the hell i was thinkin'?\",\n", + " \"i had to pull over an agressive mercedes, the hell i was drinkin'?\",\n", + " \"i fuck all these hoes, i be gettin' all this money\",\n", + " \"i turn 'em to demons\",\n", + " \"what the hell i was thinkin'?\",\n", + " \"what the hell i was thinkin'?\",\n", + " \"what the hell i was thinkin'? (ey)\",\n", + " \"what the hell i was thinkin'?\",\n", + " 'ey-ey-ey-ey',\n", + " 'tatuajes en mi piel',\n", + " 'yo estoy en la nba, magic johnson con el 32, seh',\n", + " 'me muero como un tiburón, antes de sobrevivir como un pez',\n", + " 'empecé joseando, ahora estoy clavando putas en el yate y en el jet',\n", + " \"fendi y giuseppe, antes joseaba pa' comprarme las bred\",\n", + " \"rebota esas nalga', baby (baby)\",\n", + " \"como si tú trabajara' en el strip club (-trip club)\",\n", + " \"vo'a comerme ese totito, bon appétit\",\n", + " \"'tamos fumando como do' hippie' y chingando como actore' de porno (ey)\",\n", + " \"rebota esas nalga', baby (baby)\",\n", + " \"como si tú trabajara' en el strip club (-trip club)\",\n", + " \"vo'a comerme ese totito, bon appétit\",\n", + " \"'tamos fumando como do' hippie' y chingando como actore' de porno (ey)\",\n", + " 'post up, i smoke on the gas state (ey-ey-ey-ey)',\n", + " 'fuck off, i smoke on the gas (ey)',\n", + " 'post up, i smoke on the gas station',\n", + " 'post up, i smoke on the gas (wuh)',\n", + " 'post up, i smoke on the gas station (yeh)',\n", + " 'post up, i smoke on the gas (ey)',\n", + " 'post up, i smoke on the gas station (¡blue!)',\n", + " 'post up, i smoke on the gas (¡rrr!)',\n", + " 'bad bunny, baby, bebé, bebé, ¡bebé!, jeje',\n", + " 'anuel',\n", + " 'yeh-eh',\n", + " 'la doble a',\n", + " 'dí-dí-dí-díselo luian',\n", + " 'dímelo, spiff, jeje (ey)',\n", + " 'yeh-yeh',\n", + " 'future',\n", + " 'future, yeh',\n", + " 'the union, esta es la unión',\n", + " 'hear this musi-¡ih!',\n", + " 'real hasta la muerte, yeh, yeh, yeh',\n", + " 'trap kingz, baby, trap kingz, baby',\n", + " \"cabrones, ustede' no pueden roncarno' de trap a nosotro', jejeje\",\n", + " 'esta es la unión',\n", + " 'para la supa sexy gyal que se ve fenomenal',\n", + " 'y se puso pretty pal dansall',\n", + " 'y para cada rudebwaya, los que piden more fyah',\n", + " 'especial dedicación para su clan!',\n", + " 'da one a fi di gal dem, sí, para la cadera!',\n", + " 'combina las miles de maneras, chica si te enteras',\n", + " 'sabes que para moverte siempre tuviste madera',\n", + " 'me vuelves loco en la playa, el campo y en la carretera',\n", + " 'y a cada supasexygal',\n", + " 'dan dáselo',\n", + " 'la que se ve fenomenal',\n", + " 'dan dáselo',\n", + " 'si se arregló para el dansall',\n", + " 'dan dáselo',\n", + " 'y el que no sepa como suena sólo manda…',\n", + " 'we love gyal fat, we love them slim',\n", + " 'we love them thick and we love them thin',\n", + " 'wether indian gyal or a african ting',\n", + " 'send them in my wa you send them in',\n", + " 'we love gyal fat, we love them slim',\n", + " 'we love them thick and we love them thin',\n", + " 'wether indian gyal or a african ting',\n", + " 'any nation at all just send them in',\n", + " 'them call mi di prince of persia',\n", + " 'paint di gyal them gud mi own bergia',\n", + " 'di gyal dem love wen me n dem mergia',\n", + " 'dweet suh gud gyal a bawl out fi murda',\n", + " \"gi them style's weh dem never yet hearda\",\n", + " 'but sum bwoy yow a we them scureda',\n", + " 'wen dem see me n fyah bwoy dem a merma',\n", + " 'cause wi tek weh dem gyal cause wi nuh one burner',\n", + " 'we love gyal fat, we love them slim',\n", + " 'we love them thick and we love them thin',\n", + " 'wether indian gyal or a african ting',\n", + " 'send them in my wa you send them in',\n", + " 'we love gyal fat, we love them slim',\n", + " 'we love them thick and we love them thin',\n", + " 'wether indian gyal or a african ting',\n", + " 'any nation at all just send them in',\n", + " 'y cuando pasa por delante se presiente el edén',\n", + " 'y esos andares con estilo, chica, siempre se ven',\n", + " 'y si pones a levitar pero mira, a más de cien!',\n", + " 'a toda su familia y a sus friend!',\n", + " 'andas siempre con encanto, reclamando la atención',\n", + " 'y sabes cómo poner a toda la gente en vibración',\n", + " 'y si no puede, no pueden ya sostener la situación',\n", + " 'cada vez que das un paso causas la revolución',\n", + " 'chica tan riquita, tan electrizante como cítrica',\n", + " 'los deja de piedra monolíticos',\n", + " 'fluyo como liquido, chico de fuego mítico raquítico',\n", + " 'no chiki, no somos estereotípicos',\n", + " 'we love gyal fat, we love them slim',\n", + " 'we love them thick and we love them thin',\n", + " 'wether indian gyal or a african ting',\n", + " 'send them in my wa you send them in',\n", + " 'we love gyal fat, we love them slim',\n", + " 'we love them thick and we love them thin',\n", + " 'wether indian gyal or a african ting',\n", + " 'send them in my wa you send them in',\n", + " 'we a di sound bwoys killa',\n", + " 'chica vigila en primera fila',\n", + " 'manda de hawai o de manila',\n", + " 'suku con el fyahbwoy',\n", + " 'te digo, en esta liga no vacilan',\n", + " 'no te daré detalles y espabila',\n", + " 'tira palante y el corazón le roba al lover',\n", + " 'y en cada city cada gyal le daba coba al lover',\n", + " 'y alguna que no cae en gracia y oye, no va, no va',\n", + " 'otra se pone loca, chica sólo sóbalo, va?',\n", + " 'dem call me di prince of persya',\n", + " 'di gal dem good be wont virgin',\n", + " 'di gal dem love when me and dem merge',\n", + " 'dweet a good gal a bawl out fi murder',\n", + " 'give dem styles whe dem neva yet heard',\n", + " 'but some bwoy out di gal dem scared',\n", + " 'when dem see me and fyahbwoy dem a mermaid',\n", + " 'cause dem nuh seh we tek whe dem gal, cause we no want burn nah',\n", + " 'we love gyal fat, we love them slim',\n", + " 'we love them thick and we love them thin',\n", + " 'wether indian gyal or a african ting',\n", + " 'send them in my wa you send them in',\n", + " 'we love gyal fat, we love them slim',\n", + " 'we love them thick and we love them thin',\n", + " 'wether indian gyal or a african ting',\n", + " 'send them in my wa you send them in',\n", + " 'cat, bird, snake, horse',\n", + " 'we all bleed the same colour',\n", + " 'south, east, west, north',\n", + " 'we all cry joy and sorrow',\n", + " 'cat (cats), bird (birds), snake (snakes), horse (horses)',\n", + " 'we all bleed the same colour',\n", + " 'south (south), east (east), west (west), north (north)',\n", + " 'we all cry joy and sorrow',\n", + " 'we can share our tears',\n", + " 'we can bathe our fears',\n", + " \"we're heading towards love\",\n", + " \"we're children of the deeds\",\n", + " 'watering in the seeds',\n", + " \"we're heading towards love\",\n", + " 'hacia el amor',\n", + " 'saravá, ibeyi! (saravá, emicida!) saravá!',\n", + " 'seja como água, bruce lee, kung fu',\n", + " 'sem trégua, trago a régua voodoo',\n", + " 'mil légua, mil língua, tipo busuu',\n", + " 'e o som do tambor, como primeiro bluetooth (connection)',\n", + " 'ano de xangô; licença, exu',\n", + " 'elégua leva as mágoa tudo, tudo, tudo, tudo!',\n", + " 'tamo no caminho, eu não ando sozinho',\n", + " 'quando oxum me traz as flores',\n", + " 'nanã me tira os espinhos',\n", + " 'orun acima do avião, rico galeão',\n", + " 'tipo daileon, modo \"baile on\"',\n", + " 'canta enquanto encanta',\n", + " 'hermano de los animales y las plantas',\n", + " 'pra quem crê em oxalá, mano',\n", + " 'toda sexta é santa',\n", + " 'la noche en mi color, por toda la suerte',\n", + " 'ojos de atahualpa en mi mapa tumbó la muerte',\n", + " 'mamacita enseña: \"hijo, sea fuerte\"',\n", + " 'invisible a los problemas, mi poemas son el puente',\n", + " 'libre, cuerpo, mente, anti boina-verde',\n", + " 'traje en el camuflaje, soldado en la calle 13',\n", + " 'enemigos tienen ojos, pero no pueden verme',\n", + " 'sus muslos, piernas y brazos no pueden alcanzarme',\n", + " 'nunca!',\n", + " 'we can share our tears',\n", + " 'we can bathe our fears',\n", + " \"we're heading towards love\",\n", + " \"we're children of the deeds\",\n", + " 'watering in the seeds',\n", + " \"we're heading towards love\",\n", + " 'we can share our tears',\n", + " 'we can bathe our fears',\n", + " \"we're heading towards love\",\n", + " \"we're children of the deeds\",\n", + " 'watering in the seeds (grow up)',\n", + " \"we're heading towards love\",\n", + " 'hacia el amor',\n", + " 'hook',\n", + " 'he ask for your number you was doing yoo hee, yo hee, now he looking at your girlfriend, waaa, you can men go bullshit, hit dont care (dont care) now he looking at your girlfriend waaa(dile tego)',\n", + " 'una de esas jevitas me miro atravesao(its ok) pero la otra esta mirandome fácil, una de jevita me miro atravesao(its ok), pero la otra esta chekeandome fácil',\n", + " 'fast and furious are gonna just cars(mirandome)',\n", + " 'can hope can just can now(chekeandome)',\n", + " 'fast and furious are gonna just cars (mirandome)',\n", + " 'can hope i gonna telephone show(chekeandome)',\n", + " 'dale going on like that believe me',\n", + " 'primero dice no despues si y asi (si, si)',\n", + " 'de to´color cada pais por eso me llaman el lliguiri',\n", + " 'el mejor de todos los tiempos, como ali, ya estoy aqui pa hacerte feliz, te veo en mtv y en bet, que tal estrellas de un dia pa otro, nadie va a saber yo no hablo a lo loco (a lo loco), tengo raperos lo mio es a ojo yo las azoto y les bajo el moco dale going on like that belive me, primero dice no despues si y asi(y asi)me gustan las jevitas rapiditas, rapiditas, come on, dile dile',\n", + " 'hook',\n", + " 'he ask for your number you was doing yoo hee, yo hee, now he looking at your girlfriend, waaa, you can men go brush, she hit dont care (dont care) now you looking at you girlfriend waaa(dile tego)',\n", + " 'una de esas jevitas me miro atravesao(its ok) pero la otra esta mirandome fácil, esa jevita me miro atravesao(its ok), pero la otra esta chekeandome fácil',\n", + " 'fast and furious are gonna just cars(mirandome)',\n", + " 'can hope can just can now(chekeandome)',\n", + " 'fast and furious are gonna just cars (mirandome)',\n", + " 'can hope i gonna telephone show(chekeandome)',\n", + " '(uuuu) (jaja)',\n", + " 'el que tiene tienda que la atienda sino, sino , sino que la venda, mami you slip, she grip coz she all on me',\n", + " 'now every go ahead in deep for me, im a full for that you know, puerto rico judo ooh you dont know cutie culo (como) tego a beat don king go wrong a sk8 board the song, (wooo)',\n", + " 'a chase some my reflexion you know the song, mama is too fast swatter no doubt digale tacaña tu reparte ahora mueve tu bate y salte, yo soy amiguito noamante, en este trio, eee que es mas aguante you no doubt mami is cool its allright cuz you´re friend',\n", + " 'hook',\n", + " 'he ask for your number you was doing yoo hee, yo hee, now he looking at your girlfriend, waaa, you can men go brush, she hit dont care (dont care) now you looking at you girlfriend waaa(dile tego)',\n", + " 'una de esas jevitas me miro atravesao(its ok) pero la otra esta mirandome fácil, esa jevita me miro atravesao(its ok), pero la otra esta chekeandome fácil',\n", + " 'fast and furious are gonna just cars(mirandome)',\n", + " 'can hope can just can now(chekeandome)',\n", + " 'fast and furious are gonna just cars (mirandome)',\n", + " 'can hope i gonna telephone show(chekeandome)',\n", + " '(vamos encontrando en el party)',\n", + " \"everybody let's party\",\n", + " \"everybody let's party\",\n", + " \"everybody let's party\",\n", + " 'mr. worldwide, and micha',\n", + " 'dale',\n", + " '(vamos encontrando en el party)',\n", + " 'i like to party',\n", + " '(que voy a darte un beso en el party)',\n", + " 'she like to party',\n", + " '(vamos para mi casa despues del party)',\n", + " 'we like to party',\n", + " '(pero no le digas a nadie)',\n", + " 'la-di-da-di',\n", + " '(vamos encontrando en el party)',\n", + " 'i like to party',\n", + " '(que voy a darte un beso en el party)',\n", + " 'she like to party',\n", + " '(vamos para mi casa despues del party)',\n", + " 'we like to party',\n", + " '(pero no le digas a nadie)',\n", + " 'la-di-da-di',\n", + " 'mami la fietas en el bote y todo el mundo viene',\n", + " 'y todos los días para mi son viernes',\n", + " 'billete ya yo veo que no lo tienen',\n", + " 'cojones yo ya veo que no lo tienen',\n", + " 'micha, que le va hacer',\n", + " 'que tu saques la moquilla rebatando la mujer',\n", + " 'te lo digo armando perez, con nosotros no pueden hacer',\n", + " 'yo no soy comelon pero me la como',\n", + " 'no soy ladrón pero me la robo',\n", + " 'no soy cupido pero me la enamoro',\n", + " 'viene el coro',\n", + " '(x2)',\n", + " '(vamos encontrando en el party)',\n", + " 'i like to party',\n", + " '(que voy a darte un beso en el party)',\n", + " 'she like to party',\n", + " '(vamos para mi casa despues del party)',\n", + " 'we like to party',\n", + " '(pero no le digas a nadie)',\n", + " 'la-di-da-di',\n", + " 'sin freno con el carro lleno',\n", + " 'con el antídoto y con el veneno',\n", + " 'no le digas nada para que la feta se repita',\n", + " 'que soy fría también enfría a cualquier fetesita',\n", + " 'matando a papeles',\n", + " 'bogando a papeles',\n", + " 'saca mucho le duele',\n", + " 'aunque lo cone mal y le pica',\n", + " 'oye que quien te invito',\n", + " 'eso no se invita',\n", + " 'oye primero llego tu muchachita',\n", + " 'yo no soy comelon pero me la como',\n", + " 'no soy ladrón pero me la robo',\n", + " 'no soy cupido pero la enamoro',\n", + " 'viene el coro',\n", + " '(x2)',\n", + " '(vamos encontrando en el party)',\n", + " 'i like to party',\n", + " '(que voy a darte un beso en el party)',\n", + " 'she like to party',\n", + " '(vamos para mi casa despues del party)',\n", + " 'we like to party',\n", + " '(pero no le digas a nadie)',\n", + " \"(dale mami bota, baby don't stop\",\n", + " 'move that ass so vuelvo a contar',\n", + " 'we came from the bottom but we go to the top',\n", + " 'relics in the city motherfucker we are)',\n", + " \"dale mami bota, baby don't stop\",\n", + " 'move that ass so vuelvo a contar',\n", + " 'we came from the bottom but we go to the top',\n", + " 'relics in the city motherfucker we are',\n", + " \"dale mami bota, baby don't stop\",\n", + " 'move that ass so vuelvo a contar',\n", + " 'we came from the bottom but we go to the top',\n", + " 'relics in the city motherfucker we are',\n", + " 're-relics in the city',\n", + " \"i'll be rap for the milly\",\n", + " \"rap for the money, i'mma catch it, i'mma kill it\",\n", + " 'drive so fast back wheels so spitty',\n", + " 'told your bitch, stay you, my business',\n", + " \"tengo a todo el mundo siempre puesto pa' mi nombre\",\n", + " 'cuida lo que dices, cuida como a mí me nombres',\n", + " 'pronto soy leyenda y casi nadie me conoce',\n", + " 'en verdad conmigo ni uno de ellos quiere roce',\n", + " \"vamo' a ser honesto: quién de verdad tiene el puesto\",\n", + " \"i'll be on the money desde chico y con lo puesto\",\n", + " \"siempre vamo' a juego, vamo' a dar, vamo' a dentro\",\n", + " \"ya lo dije ma': acabo rico, acabo muerto\",\n", + " '(acabo rico, acabo muerto',\n", + " 'acabo rico, acabo muerto',\n", + " 'acabo rico, acabo muerto)',\n", + " \"dale mami bota, baby don't stop\",\n", + " 'move that ass so vuelvo a contar',\n", + " 'we came from the bottom but we go to the top',\n", + " 'relics in the city motherfucker we are',\n", + " \"dale mami bota, baby don't stop\",\n", + " 'move that ass so vuelvo a contar',\n", + " 'we came from the bottom but we go to the top',\n", + " 'relics in the city motherfucker we are',\n", + " 'baby now i brought that green and i smoke that shit',\n", + " \"'cause i'm celebrating, we go to the top, we gettin' rich\",\n", + " 'now i used to trap, i used to live quick',\n", + " \"'till i put my man on ground has i had get this\",\n", + " \"ahora estamos prendíos', por eso tú habla' mierda\",\n", + " 'yo estaba en la cocina pero estaba haciendo letras',\n", + " \"yo estaba puesto en esto desde antes que naciera'\",\n", + " 'yo iba para arriba, mama, vine de una estrella',\n", + " 'show me the money, enséñame la feria',\n", + " 'no quiero hablar contigo, sólo llena mi cartera',\n", + " 'young, designer, hot trap insane',\n", + " 'follow the trap, la rompo donde quiera',\n", + " 'changing the game, estoy cambiando el juego',\n", + " \"making my money, i don't talk, hasta luego\",\n", + " \"she wants my money, clap aha, i'mma let her\",\n", + " 'mueve esa chapa al ritmo de mis huevos',\n", + " \"dale mami bota, baby don't stop\",\n", + " 'move that ass so vuelvo a contar',\n", + " 'we came from the bottom but we go to the top',\n", + " 'relics in the city motherfucker we are',\n", + " \"dale mami bota, baby don't stop\",\n", + " 'move that ass so vuelvo a contar',\n", + " 'we came from the bottom but we go to the top',\n", + " 'relics in the city motherfucker we are',\n", + " 'gang',\n", + " 'shootas ready with the flag (pff, pff)',\n", + " 'is wartime, man, i put that on my neck (gang, ja)',\n", + " 'papo, dime ¿keloké? (work)',\n", + " \"estamo' haciendo trap, o no, ¿o es que no lo ves? (gang)\",\n", + " 'married with the war (war)',\n", + " \"somos solda'os en esta jungla de cristal (agh)\",\n", + " \"ando enamora'o 'e la guerra (uh)\",\n", + " '¿cómo no voy a ser un pitbull cuando la vida es tan perra? (bang)',\n", + " 'keo getting bigger (what?)',\n", + " 'supported by the narcos y los killers (and the dealers)',\n", + " \"look, estamo' en otra liga (work), la bandera pirata bien arriba\",\n", + " 'you promote prostitution, you living an illusion (fuck)',\n", + " \"you hated on me, this one you gon' die executed (prr)\",\n", + " 'yo tengo reputación los ángeles me cuidan (argh)',\n", + " 'visten con bandana y tienen instinto suicida (pff)',\n", + " 'tú no tienes sangre azul, la mía es codeína (hey)',\n", + " 'yo soy un rey bastardo, yo no vengo desde arriba (what?)',\n", + " \"you a hoe, you a snitch, sólo ere' un bufón (fuck him)\",\n", + " \"yo he libra'o mil batallas can'tándole a mi legión (pff, pff, pff, pff)\",\n", + " 'shootas ready with the flag (pff)',\n", + " 'is wartime, man, i put that on my neck (bang)',\n", + " 'papo, dime ¿keloké? (work)',\n", + " \"estamo' haciendo trap, o no, ¿o es que no lo ves? (¿o es que no lo ves?)\",\n", + " 'married with the war',\n", + " \"somos solda'os en esta jungla de cristal\",\n", + " \"ando enamora'o 'e la guerra\",\n", + " '¿cómo no voy a ser un pitbull cuando la vida es tan perra?',\n", + " 'coronando en tu rola, diego maradona',\n", + " 'llegó el barco pirata con los diablos de la zona (skrr)',\n", + " 'trap alert, mi mierda es la corona (keo)',\n", + " \"tengo un par de barras pa' que saquen la fregona (pff, pff, pff)\",\n", + " 'tú no eres mi enemigo, yo aquí soy la ley (woah)',\n", + " \"acabarán callando porque vine pa' ser rey (work)\",\n", + " \"eres doble, no eres puro, más duplica'o que figo (pff)\",\n", + " \"prefieren mi reina'o a to'a tu corona de testigos\",\n", + " 'i got plug with the devil, make it out the bando',\n", + " 'no puedes ser el diablo cuando no has sentido el fuego',\n", + " 'yo estoy muerto por dentro, de aspecto como nuevo',\n", + " \"sólo sois plebellos, 'táis encerra'os en mi juego\",\n", + " 'yo cumplí la profecía, hice lo que dije (oh)',\n", + " \"yo crié mariposas pa' comerme las lombrices (oh)\",\n", + " \"ahora viene tiempo 'e guerra (oh)\",\n", + " \"saco mi acuarela y pinto poesía pa' mis soldados en tierra (agh)\",\n", + " 'shootas ready with the flag (pff)',\n", + " 'is wartime, man, i put that on my neck (keo is good)',\n", + " 'papo, dime ¿keloké?',\n", + " \"estamo' haciendo trap, o no, ¿o es que no lo ves? (sellah)\",\n", + " 'married with the war (gang)',\n", + " \"somos solda'os en esta jungla de cristal (agh)\",\n", + " \"ando enamora'o 'e la guerra\",\n", + " '¿cómo no voy a ser un pitbull cuando la vida es tan perra? (agh)',\n", + " 'gang, gang, gang',\n", + " 'gang, ey, ey',\n", + " 'all my bitches 10, yeah they centerfolds',\n", + " 'you know what it is if they ever fold',\n", + " \"i got so much paper we ain't acting right\",\n", + " \"swimmin' in this money man, we livin' nice\",\n", + " '(ale-alemán)',\n", + " 'nos miran con gucci y con prada',\n", + " 'porque tenemos la plaza comprada',\n", + " 'pura calidad, nunca de la cortada',\n", + " 'yo soy el jefe, caracortada',\n", + " 'estar en la fiesta es lo que más me agrada',\n", + " 'pero más me agrada estar haciendo feria',\n", + " 'porque conozco muy bien la miseria',\n", + " 'venir desde abajo aquí mucho cuesta',\n", + " 'trabajo bien y de forma honesta',\n", + " 'sé que a los contras les pica y molesta',\n", + " 'cuando ingresa dinero en la empresa',\n", + " 'dinero, dinero, esto nunca cesa',\n", + " 'mami, confiesa, estás enamorada',\n", + " 'la traigo loca con pura morada',\n", + " 'toda mareada, pero mojada',\n", + " 'sin su tajada se hace la enojada',\n", + " 'all my bitches 10, yeah they centerfolds',\n", + " 'you know what it is if they ever fold',\n", + " \"i got so much paper we ain't acting right\",\n", + " \"swimmin' in this money man, we livin' nice\",\n", + " 'all my bitches 10, yeah they centerfolds',\n", + " 'you know what it is if they ever fold',\n", + " \"i got so much paper we ain't acting right\",\n", + " \"swimmin' in this money man, we livin' nice\",\n", + " 'aquellos que maldicen no dejo que pisen',\n", + " 'mi nombre respetan, mejor analicen',\n", + " 'con quienes se meten, bola de aprendices',\n", + " 'nosotros movemos en varios países',\n", + " 'feliz el negocio, feliz sus narices',\n", + " 'la muerte compa, llega sin que avise',\n", + " 'por eso siempre vivo como quise',\n", + " 'con polvos mágicos para que hechice',\n", + " 'gasolina y diesel pa’ que más te envicie',\n", + " 'ahorita no se me ofrece que tu bitch me acaricie',\n", + " 'a mí dame billetes que bitches tengo miles',\n", + " '(we got the bitches by the millions)',\n", + " 'el perico en los calcetines',\n", + " 'all my bitches 10, yeah they centerfolds',\n", + " 'you know what it is if they ever fold',\n", + " \"i got so much paper we ain't acting right\",\n", + " \"swimmin' in this money man, we livin' nice\",\n", + " 'que chingue a su madre el perro que me ladre y juro por mi padre',\n", + " 'cuido el negocio y ando de traje y cargo con un sastre',\n", + " 'anduve en la calle, dormí en el suelo, también en un catre',\n", + " 'antes era un desastre, hoy hago millones vendiendo zacate',\n", + " 'all my bitches 10, yeah they centerfolds (all my bitches 10 yeah)',\n", + " 'you know what it is if they ever fold (if they ever fold baby)',\n", + " \"i got so much paper we ain't acting right (we ain't acting bae no no)\",\n", + " \"swimmin' in this money man, we livin' nice\",\n", + " 'all my bitches 10, yeah they centerfolds',\n", + " 'you know what it is if they ever fold',\n", + " \"i got so much paper we ain't acting right\",\n", + " \"swimmin' in this money man, we livin' nice\",\n", + " 'relax, relax (relax, relax)',\n", + " 'relax, relax (relax, relax)',\n", + " 'blowing good with my bitch, i get high (i get high)',\n", + " 'relax, relax (relax, relax)',\n", + " 'relax, relax (relax, relax)',\n", + " \"blowing kush with my fuckin' bitch, i get high (i get high)\",\n", + " 'relax, relax (relax, relax)',\n", + " 'relax, relax (relax, relax)',\n", + " 'blowing kush with my bitch, i get high (i get high)',\n", + " 'relax, relax, relax',\n", + " 'relax, relax, relax (relax, relax)',\n", + " 'blowing good with my bitch',\n", + " 'arriba, abajo, nunca en el medio, no seré uno más (más)',\n", + " ...]},\n", + " 'rock': {'meta': {'train_data': ['baila, let me see you dance, baby',\n", + " 'yeah',\n", + " 'let me see you dance, baby',\n", + " 'come on',\n", + " 'creo en los milagros desde que te vi',\n", + " 'en esta noche de tequila boom-boom',\n", + " 'eres tan sexy, eres sexy thing',\n", + " 'mis ojos te persiguen sólo a ti',\n", + " 'yeah',\n", + " 'ohh',\n", + " 'y debe haber un caos dentro de ti',\n", + " 'para que brote así una estrella que baila',\n", + " 'infierno y paraíso dentro de ti',\n", + " 'la luna es un sol, mira cómo brilla',\n", + " 'baby, the night is on fire',\n", + " 'seamos fuego en el cielo',\n", + " 'llamas en lo oscuro',\n", + " 'what you say (woo!)',\n", + " 'baila (yeah), baila morena (yeah)',\n", + " 'bajo esta luna llena (yes)',\n", + " \"under the moonlight (come on, y'all)\",\n", + " 'under the moonlight',\n", + " 'ven chica, ven loca, dame tu boca (yeah)',\n", + " 'que en esta noche cualquier cosa te toca (woo!)',\n", + " 'mi corazon se revienta y no aguanto',\n", + " 'morena rebuena te quiero yo tanto',\n", + " 'baby, the night is on fire',\n", + " 'seamos fuego en el cielo',\n", + " 'llamas en lo oscuro',\n", + " 'what you say (woo!)',\n", + " 'baila (yeah), baila morena (yeah)',\n", + " 'bajo esta luna llena (yes)',\n", + " 'under the moonlight (come on)',\n", + " 'yeah',\n", + " 'hey baila (hey baila)',\n", + " 'under the moonlight (come on)',\n", + " 'bajo esta luna llena (you got it)',\n", + " \"baila morena (you got it goin', come on girl)\",\n", + " 'yeah, yeah, yeah',\n", + " 'hey yeah, yeah, yeah',\n", + " 'uhh-uuh-uuh-uuh',\n", + " 'hey yeah, yeah, yeah',\n", + " 'set me free, set me free',\n", + " \"you got me hurtin' so bad, so bad\",\n", + " '(oh, no, no, no, no, no)',\n", + " 'you got me so, so bad',\n", + " 'what you say?',\n", + " '(what you say?)',\n", + " 'baila (yeah), baila morena (yeah)',\n", + " 'bajo esta luna llena (one more time)',\n", + " 'under the moonlight',\n", + " '(under moonlight)',\n", + " 'hey baila (baila)',\n", + " \"under the moonlight (you got it goin', girl)\",\n", + " 'bajo esta luna llena (baila morena)',\n", + " 'baila morena (come on, girl, come on)',\n", + " 'bajo esta luna llena (yeah)',\n", + " 'bajo esta luna llena (yeah, yeah, yeah)',\n", + " 'bajo esta luna llena (yeah, set me free, yeah)',\n", + " 'under the moonlight',\n", + " 'yeah',\n", + " \"come on, y'all\",\n", + " 'los problemas del futuro',\n", + " 'ya los tuve ayer',\n", + " 'caminando con mi madre',\n", + " 'a la orilla del mar',\n", + " 'y los diagramas del futuro',\n", + " 'ya los vi ayer',\n", + " 'danzando en el techo de mi cuarto',\n", + " 'mientras yacía inmóvil sintiendo',\n", + " 'la tierra girar',\n", + " 'en mis venas',\n", + " 'en mis huesos',\n", + " 'en mi cabeza',\n", + " 'los problemas del futuro',\n", + " 'ya los tuve ayer',\n", + " 'los diagramas del futuro',\n", + " 'de camino a la escuela',\n", + " 'conocí al anciano',\n", + " 'que me mostró el recorrido',\n", + " 'por los cuerpos sagrados',\n", + " 'y las matanzas del futuro',\n", + " 'ya las vi ayer',\n", + " 'el amanecer de las máquinas',\n", + " 'aplastando a los campesinos',\n", + " 'y en un mar de neón',\n", + " 'nos ahogamos',\n", + " 'los últimos días',\n", + " 'en los cielos del futuro',\n", + " 'en las ruinas dеl futuro',\n", + " 'los problemas del futuro ya los tuve ayеr',\n", + " 'en los cielos del futuro',\n", + " 'en las ruinas del futuro',\n", + " 'los problemas del futuro ya los tuve ayer',\n", + " 'en los cielos del futuro',\n", + " 'en las ruinas del futuro',\n", + " 'en las montañas del futuro',\n", + " 'la puerta al ayer',\n", + " 'the problems of the future',\n", + " 'the problems of the future',\n", + " 'i had them yesterday',\n", + " 'hand in hand with my mother',\n", + " 'walking by the sea',\n", + " 'the diagrams of the future',\n", + " 'i saw them yesterday',\n", + " 'dancing in the ceiling of my room',\n", + " 'while i was laying still',\n", + " 'feeling the earth spin',\n", + " 'in my veins',\n", + " 'in my bones',\n", + " 'in my head',\n", + " 'the problems of the future',\n", + " 'i got them yesterday',\n", + " 'the diagrams of the future',\n", + " 'on my way to the school',\n", + " 'i met the old man',\n", + " 'that showed me the path',\n", + " 'through the holy bodies',\n", + " 'and the massacres of the future',\n", + " 'i saw them yesterday',\n", + " 'the dawn of the machines',\n", + " 'crushing the peasants',\n", + " 'and in a neon sea',\n", + " 'we drowned the last days',\n", + " 'in the skyes of the future',\n", + " 'in the ruins of the future',\n", + " 'the problems of the future i got them yesterday',\n", + " 'in the skies of the future',\n", + " 'in the ruins of the future',\n", + " 'the problems of the future i got them yesterday',\n", + " 'in the skies of the future',\n", + " 'in the ruins of the future',\n", + " 'in the mountains of the future',\n", + " 'the door to yesterday',\n", + " 'mama, mamate a un cabron',\n", + " 'le vole la choya con un pistolón',\n", + " 'mama, con el dedo en el gatillo',\n", + " 'le meti 6 balas al cabrón por el fundillo',\n", + " 'mama, sabes si vienes por ahí',\n", + " 'te digo \"que te pasa?\" si te metes con mi pussy',\n", + " 'my man, you better get a job',\n", + " 'porque este espacio pertenece al molotov',\n", + " 'muy muy tarde que le llego la hora',\n", + " 'pero ese culero tenia que morirse ahora',\n", + " 'y chilla que chilla y llora que llora',\n", + " 'solo se encontenta cuando esta con su señora',\n", + " 'yo tengo a mi clika que esta pocasumadre',\n", + " 'y tu no tienes nada, ni perro que te ladre',\n", + " 'mama mama mamate esta',\n", + " 'mama mama nada te cuesta',\n", + " 'mama mama mate a una perra',\n", + " 'era morena pero se pinto de guera',\n", + " \"le subi la falda, man you should've seen it\",\n", + " 'el tapete no combinaba con la cortina',\n", + " 'what am i gonna do? oh tell me mama',\n", + " 'cuz i cut her into pieces',\n", + " 'like my name is jeffrey dahmer',\n", + " 'now they wanna hunt me down',\n", + " \"butah in méxico you won't see me around\",\n", + " 'mama, mama, sabe tu que pasa?',\n", + " 'mama, mama, molotov esta en la casa',\n", + " 'vi la silueta de una verga',\n", + " 'in the bush in the bush',\n", + " 'would you do the fandango',\n", + " 'thunderbolts and lightning',\n", + " 'very very frightening me',\n", + " 'guacareo, guacareo, guacareo miralo',\n", + " 'yo soy el mondra y nadie me ama',\n", + " 'pobre gordito, tiene almorranas',\n", + " 'sperm in your wife in her mouth and chichis',\n", + " 'easy cum easy go wouldya gimme a blow',\n", + " 'it smells like \"ohh\" would you just gimme a blow',\n", + " 'it smells like \"ohh\" would you just gimme a blow',\n", + " 'gimme one more blow blow',\n", + " 'me babaluba',\n", + " 'mamalamia mamalamia',\n", + " 'ya me hartaste, por favor',\n", + " 'miguel seguro gotta pepa put aside for me',\n", + " 'for me, for me!',\n", + " 'if you think you can score with me kiss my ass!',\n", + " 'el que no se la jale sera un animal!',\n", + " \"ohhh baby can't do this to me baby\",\n", + " 'i just gotta get out, i just gotta get out',\n", + " 'i just gotta get right outta here!',\n", + " 'silence is torture, is torture',\n", + " 'when we don’t say how we feel',\n", + " '(when we don’t say how we feel)',\n", + " 'if we don’t learn to communicate',\n", + " 'things are gonna fall apart',\n", + " '(things are gonna fall apart)',\n", + " 'all i ask is for you to please give us just one chance',\n", + " 'to start something that we both never had',\n", + " 'until then we won’t know what it would be like',\n", + " 'to have something real for the first time',\n", + " 'let me know when it’ll be a good time to give you medicine',\n", + " 'a little dose, a little remedy of true tenderness',\n", + " 'don’t you know that true love is all we need',\n", + " 'don’t give up ‘cause i won’t give up on you',\n", + " 'no',\n", + " 'no, no',\n", + " 'no, no',\n", + " 'no',\n", + " 'si te encuentras en silencio, llegará la obscuridad',\n", + " '(llegará la obscuridad)',\n", + " 'aprende a comunicarte pa’ que sepas la verdad',\n", + " '(pa’ que sepas la verdad)',\n", + " 'sólo pido que nos des esa oportunidad',\n", + " 'quiero que sepas que de mi sí aprenderás',\n", + " 'te llevaré por buen camino lo verás',\n", + " 'sobrarán buenas memorias sin parar',\n", + " 'let me know when it’ll be a good time to give you medicine',\n", + " 'a little dose, a little remedy of true tenderness',\n", + " 'don’t you know that true love is all we need',\n", + " 'don’t give up ‘cause i won’t give up on you',\n", + " 'no',\n", + " 'vamos nena no te me hagas de rogar',\n", + " 'lo que quiero es poderte conquistar',\n", + " 'cada noche y día solo estoy pensando',\n", + " 'pues tu amor ya lo sigo yo añorando',\n", + " 'como quisiera poder tenerte a mi lado',\n", + " 'darte un beso para seguirte yo amando',\n", + " 'ya no puedo dejar de pensar en ti',\n", + " 'mira que loco me traes tú a mi',\n", + " 'sólo pido que nos des esa oportunidad',\n", + " 'quiero que sepas que de mi sí aprenderás',\n", + " 'te llevaré por buen camino lo verás',\n", + " 'sobrarán buenas memorias sin parar',\n", + " 'let me know when it’ll be a good time to give you medicine',\n", + " 'a little dose, a little remedy of true tenderness',\n", + " 'don’t you know that true love is all we need',\n", + " 'don’t give up ‘cause i won’t give up on you',\n", + " 'no',\n", + " 'no, no',\n", + " 'no, no',\n", + " 'no',\n", + " 'mi amor',\n", + " 'corazón',\n", + " 'beauty and lies hide in plain sight',\n", + " 'enters the eyes but distorts the view',\n", + " 'passion and fire, leaving behind',\n", + " 'emotional scars and exit wounds',\n", + " 'i am the word of god',\n", + " 'i have a will that cannot be stopped',\n", + " 'i am the bringer of shame',\n", + " 'i am a force that cannot be tamed',\n", + " 'i am the law of nature, break me and meet your maker',\n", + " 'all that is taken shall return to us all',\n", + " \"i am the smoke and mirror, i'm the the saint among sinners\",\n", + " 'all that is evil will make good of us all',\n", + " 'i am the curse of love',\n", + " 'i have a will that cannot be stopped',\n", + " 'i am the ash and flame',\n", + " 'i am the one that cannot be named',\n", + " 'bésame amor. deseo es todo lo que llena mi corazón',\n", + " 'estoy girando fuera de control contigo y tus ojos',\n", + " 'por qué no nos escapamos juntos aquí y ahora, sí?',\n", + " 'no necesitamos mirar atrás nunca más, mi querido',\n", + " 'todo lo que necesitamos es el uno para el otro',\n", + " 'i am the law of nature, break me and meet your maker',\n", + " 'all that is taken shall return to us all',\n", + " 'blood will be drawn by rose and thorns',\n", + " \"she's got a pretty persuasion\",\n", + " 'podemos estar juntos por siempre, vivir una buena vida',\n", + " \"i am the smoke and mirror, i'm the the saint among sinners\",\n", + " 'all that is evil will make good of us all',\n", + " 'lovers are torn, names will be scorned',\n", + " 'caught in a dangerous liaison',\n", + " 'i am the word of god, i cannot be stopped',\n", + " 'mi amor',\n", + " 'corazón',\n", + " 'the news of your deceit rips out the world from beneath my feet',\n", + " 'i gave you all the world and more - you lying, fucking whore',\n", + " 'la multitud a nuestro alrededor, con ojos fijos en nuestra danza',\n", + " 'aliento nervioso, todos hipnotizados al ritmo de nuestra romanza',\n", + " 'el júbilo en sus rostros, parpadean bajo la luz de las velas',\n", + " 'la pasión nos atrapa, coge mi mano querido, casi vuelas',\n", + " 'y las bebidas fluyen aún más rápido, todo explotando en el ardor de la canción',\n", + " 'ya nadie puede resistirse, todos impulsados siguen nuestro son',\n", + " 'de pronto, en el ardor del momento, se hace el silencio',\n", + " 'la puerta se abre de par en par, revelando al hombre violento',\n", + " 'sus ojos llameantes con la furia de un lunático',\n", + " 'camina hacia nosotros, pistola en mano, a reimponer su edicto',\n", + " 'tomando el arma, apunta al pecho de mi querido',\n", + " 'gatillo apretado, la bala vuela, roto el hechizo',\n", + " 'y atraviesa el pecho de mi amado, dejando su corazón de muerte herido',\n", + " 'atrás su espalda ya, otro pecho atraviesa, esta vez, el mío',\n", + " 'mi amor',\n", + " 'corazón',\n", + " 'hola, holala, holala',\n", + " 'hola, just come as you are',\n", + " 'matadero matadero',\n", + " 'cuentame tu historia ya',\n", + " 'ganadero, ganadero',\n", + " \"en un lazo ven pa'ca\",\n", + " 'ya la negra está bailando',\n", + " 'y está libre de empezar',\n", + " 'en tus ojos está la gloria',\n", + " 'me amor me va a llevara',\n", + " 'hola, holala, holala',\n", + " 'hola, just come as you are',\n", + " 'hola, holala, holala',\n", + " 'hola, just come as you are',\n", + " 'matadero matadero',\n", + " 'cuentame tu historia ya',\n", + " 'ganadero,ganadero',\n", + " \"en un lazo ven pa'ca\",\n", + " 'ya la negra está bailando',\n", + " 'y está libre de empezar',\n", + " 'en tus ojos está la gloria',\n", + " 'me amor me va a llevara',\n", + " 'hola, holala, holala',\n", + " 'hola, just come as you are',\n", + " 'hola, holala, holala',\n", + " 'hola, just come as you are',\n", + " 'hola, holala, holala',\n", + " 'hola, just come as you are',\n", + " 'hola, holala, holala',\n", + " 'hola, just come as you are',\n", + " 'hola, holala, holala',\n", + " 'hola, just come as you are',\n", + " 'hola, holala, holala',\n", + " 'hola, just come as you are',\n", + " 'al pastor me echo una gringa',\n", + " 'mas lechuga a la pechuga',\n", + " 'muslo aquí muslo acá y papas',\n", + " 'a la francesa',\n", + " 'quisiera comer mas de esa',\n", + " 'pero esta mas buena la hamburguesa',\n", + " 'ella quiere un king de polla',\n", + " 'sushilitto no la llena',\n", + " 'traiga un caldo pal tlalpeño',\n", + " 'un spagetti al albañil',\n", + " 'tráele un trío de mac a anita',\n", + " 'y tráete un combo para mi',\n", + " 'pero mira nomas que tortas',\n", + " 'oh se ven tan horrorosas',\n", + " 'cubana o una hawaiana',\n", + " 'sin chile y sin cebollas',\n", + " 'no quiero comer mas kentuchy chota',\n", + " 'o pincho a la española',\n", + " 'la de sanders mas discreta',\n", + " 'no revela su receta',\n", + " 'están muy buenas sus garnachas',\n", + " 'pero quiero echar bailón',\n", + " 'quiere su chorizo en papas',\n", + " 'o en barras de camarón',\n", + " 'changuich a changuich a',\n", + " 'changuich a la chichona...',\n", + " \"now if you're hungry for some bologna\",\n", + " 'and you got some buns that you wanna show me',\n", + " 'open up wide you can eat',\n", + " \"this oscar meyer that's really boney\",\n", + " 'i want to get down into your juju bees',\n", + " \"and i think i'm gonna flick em'\",\n", + " 'you tities are smelin like chocolate chip',\n", + " \"ice-cream n' i think i wanna lick em\",\n", + " 'i got some hot beef for that rump roast',\n", + " 'but you gotta say please',\n", + " \"i'll dig into that thigh everytime but\",\n", + " 'but hold the cottage cheese',\n", + " 'and for dessert we can do the works',\n", + " \"i'll put my whip cream in your pie hole\",\n", + " \"and don't flinch when you feel a pinch on\",\n", + " 'that pretty litlle taco',\n", + " \"cuz i've tried to pry\",\n", + " 'a bearded clam that would no budge',\n", + " 'so i went around the corner to keep on trying',\n", + " 'and i got a little fudge',\n", + " 'changuich a changuich a',\n", + " 'changuich a la chichona',\n", + " 'changuich a changuich a',\n", + " 'changuicha la chichona',\n", + " 'para papas las de randy',\n", + " 'pero no las presta',\n", + " 'mas mueve un par de tetas',\n", + " 'que un chinguero de carretas',\n", + " 'traiga un espaggeti al burro',\n", + " 'con una cerveza en lata',\n", + " 'la de malas que en la horchata',\n", + " 'le pisen su quinta pata',\n", + " 'guardenle unos chilaquiles',\n", + " \"pa' mañana el desayuno\",\n", + " 'y unos huevos divorciados',\n", + " 'no queremos enredarnos',\n", + " 'bimbo blanco o integral',\n", + " 'no me importa me da igual',\n", + " 'papa chapata mama chapata',\n", + " 'y aquí están sus chapatines',\n", + " 'dinotriple o brontodoble',\n", + " 'quarter pounder whopper doble',\n", + " 'quiero hacerle un sandwichito',\n", + " 'baile mas apretadito',\n", + " 'mejor que la lambada',\n", + " 'una picada a la italiana',\n", + " 'quiero bailar con la bola',\n", + " 'pero con la mas chichona',\n", + " 'changuich a changuich a',\n", + " 'changuich a la chichona',\n", + " '(changuich) changuich a (changuich) changuicha',\n", + " '(changuich) changuicha la chichona',\n", + " 'verdes y negras espesuras, parajes pelados',\n", + " 'río vegetal en sí mismo anudado',\n", + " 'entre plomizos edificios transcurre sin moverse',\n", + " 'y allá donde la misma luz se vuelve duda',\n", + " 'y la piedra quiere ser sombra',\n", + " 'se disipa central park',\n", + " \"don't cross central park at night\",\n", + " 'en central park',\n", + " \"don't cross central park at night\",\n", + " 'cae el día, cae el día',\n", + " 'la noche se enciende',\n", + " 'alexinsky traza un rectángulo imantado',\n", + " 'trampa de líneas coral de tinta',\n", + " 'adentro hay una bestia caída',\n", + " 'dos ojos y una rabia enroscada',\n", + " 'en central park',\n", + " \"don't cross central park at night\",\n", + " 'en central park',\n", + " \"don't cross central park at night\",\n", + " 'no hay puertas de entrada y salida',\n", + " 'encerrada en un anillo de luz',\n", + " 'la bestia de hierba duerme con los ojos abiertos',\n", + " 'la luna desentierra y con navajas',\n", + " 'el agua de las sombras se ha vuelto fuego verde',\n", + " 'en central park',\n", + " \"don't cross central park at night\",\n", + " 'en central park',\n", + " \"don't cross central park at night\",\n", + " 'no hay puertas de entrada pero todos',\n", + " 'en mitad de la frase colgada del teléfono',\n", + " 'de lo alto del chorro del silencio o la risa',\n", + " 'de la jaula de vidrio del ojo que nos mira',\n", + " 'todos vamos cayendo en el espejo',\n", + " 'es central park',\n", + " 'el espejo es de piedra y la piedra ya es sombra',\n", + " 'hay dos ojos del color de la cólera',\n", + " 'un anillo de frío, un cinturón de sangre',\n", + " 'hay el viento que esparce los reflejos',\n", + " 'de alicia desmembrada en el estanque',\n", + " 'decentral park',\n", + " \"don't cross central park at night\",\n", + " 'en central park',\n", + " \"don't cross central park at night\",\n", + " 'abre los ojos ya estás adentro de ti mismo',\n", + " 'en un barco de monosílabos navegas',\n", + " 'por el estanque espejo y desembarcas',\n", + " 'en el muelle de cobra es un taxi amarillo',\n", + " 'que te lleva al país de las llamas',\n", + " 'a través de central park',\n", + " \"don't cross central park at night\",\n", + " 'central park en la noche',\n", + " \"don't cross central park at night\",\n", + " \"don't cross central park at night\",\n", + " \"don't cross central park at night\",\n", + " \"don't cross central park at night\",\n", + " \"don't cross central park at night\",\n", + " \"don't cross central park at night\",\n", + " \"don't cross central park at night\",\n", + " \"don't cross central park at night\",\n", + " \"don't cross central park at night\",\n", + " \"don't cross central park at night\",\n", + " \"don't cross central park at night\",\n", + " 'estoy mirando al cielo pero está nublado',\n", + " 'estas son mis vistas, dime ¿cuáles son las tuyas?',\n", + " 'perdí la paciencia, no tengo carisma',\n", + " 'no soy tu mesías, icono del underground',\n", + " 'esta mierda no se puede salvar',\n", + " 'vine a por un aplauso, la cosa se torció',\n", + " 'más adictivo que la cocaína y no sé yo',\n", + " 'me augura un gran un futuro, me espera algo mejor',\n", + " 'una delante y otra atrás',\n", + " 'bien puesto el cinturón',\n", + " 'la calle está vacía y mi cama también',\n", + " 'creo que vamos a invadirlas',\n", + " 'ambas opciones me complacen',\n", + " 'si es comiendo de su boca de león',\n", + " 'la mente bien agitada y muy frío el corazón',\n", + " 'esta mierda no se puede salvar',\n", + " '// english',\n", + " 'bellavista',\n", + " \"i'm looking at the sky but it's cloudy\",\n", + " 'these are my views, tell me, what are yours?',\n", + " 'i lost my patience, i’m not charismatic',\n", + " \"i'm not your messiah nor an underground icon\",\n", + " 'this shit is not to be saved',\n", + " 'i was looking for an applause but everything messed up',\n", + " \"it became more addictive than cocaine and i don't know if\",\n", + " 'a great future portends me, something better awaits me',\n", + " 'empty-handed but well dressed',\n", + " 'streets are empty, as well as my bed',\n", + " 'i think it’s time to invade them',\n", + " 'both options please me',\n", + " \"if it's eating from her lion mouth\",\n", + " 'an agitated mind and very cold heart',\n", + " 'this shit is not to be saved',\n", + " 'mama, mamate a un cabron',\n", + " 'le vole la choya con un pistolón',\n", + " 'mama, con el dedo en el gatillo',\n", + " 'le meti 6 balas al cabrón por el fundillo',\n", + " 'mama, sabes si vienes por ahí',\n", + " 'te digo \"que te pasa?\" si te metes con mi pussy',\n", + " 'my man, you better get a job',\n", + " 'porque este espacio pertenece al molotov',\n", + " 'muy muy tarde que le llego la hora',\n", + " 'pero ese culero tenia que morirse ahora',\n", + " 'y chilla que chilla y llora que llora',\n", + " 'solo se encontenta cuando esta con su señora',\n", + " 'yo tengo a mi clika que esta pocasumadre',\n", + " 'y tu no tienes nada, ni perro que te ladre',\n", + " 'mama mama mamate esta',\n", + " 'mama mama nada te cuesta',\n", + " 'mama mama mate a una perra',\n", + " 'era morena pero se pinto de guera',\n", + " \"le subi la falda, man you should've seen it\",\n", + " 'el tapete no combinaba con la cortina',\n", + " 'what am i gonna do? oh tell me mama',\n", + " 'cuz i cut her into pieces',\n", + " 'like my name is jeffrey dahmer',\n", + " 'now they wanna hunt me down',\n", + " 'butah in mexico you won’t see me around',\n", + " 'mama mama sabe tu que pasa?',\n", + " 'mama mama molotov esta en la casa',\n", + " 'vi la silueta de una verga',\n", + " 'in the bush in the bush',\n", + " 'would you do the fandango',\n", + " 'thunderbolts and lightning',\n", + " 'very very frightening me',\n", + " 'guacareo, guacareo, guacareo miralo',\n", + " 'magnifico yo soy un naco y nadie me ama',\n", + " 'pinche chamaco no tienes lana',\n", + " 'sperm in your wife in her mouth and chichis',\n", + " 'easy cum easy go wouldya gimme a blow',\n", + " 'it smells like \"ohh\" would you just gimme a blow',\n", + " 'it smells like \"ohh\" would you just gimme a blow',\n", + " 'gimme one more blow blow',\n", + " 'me babaluba',\n", + " 'mamalamia mamalamia',\n", + " 'ya me hartaste, por favor',\n", + " 'miguel seguro gotta pepa put aside for me',\n", + " 'for me, for me!',\n", + " 'if you think you can score with me kiss my ass!',\n", + " 'el que no se la jale sera un animaaal!',\n", + " \"ohhh baby can't do this to me baby\",\n", + " 'i just gotta get out, i just gotta get out',\n", + " 'i just gotta get right outta here!',\n", + " 'no me pidas que llore por ti',\n", + " 'alguna vez te vi sometido',\n", + " 'tus ojos caen y flotan en la oscuridad',\n", + " 'alúmbrame que estoy bien perdido',\n", + " 'y fue una vez, sí, solo una vez',\n", + " 'que te dije la verdad',\n", + " 'sí, solo una vez, hinchado en alcohol',\n", + " 'perdido en la noche, soñando con volver',\n", + " 'con volver',\n", + " 'y solo quiero que me des un poco de sinceridad',\n", + " 'y solo quiero que me des un poco de sinceridad',\n", + " 'déjame verte caer',\n", + " 'déjame entrar en tus sueños, no',\n", + " 'no, no es cierto que',\n", + " 'robaste el grito final',\n", + " 'que está a la orilla del viento, no',\n", + " 'deja me conecto',\n", + " 'déjame verte caer',\n", + " 'déjame entrar en tus sueños, no',\n", + " 'no, no es cierto que',\n", + " 'robaste el grito final',\n", + " 'que está a la orilla del viento, no',\n", + " 'deja me conecto',\n", + " 'no me pidas que llore por ti',\n", + " 'alguna vez te vi sometido',\n", + " 'tus ojos caen y flotan en la oscuridad',\n", + " 'alúmbrame que estoy bien perdido',\n", + " 'y fue una vez, sí, solo una vez',\n", + " 'que te dije la verdad',\n", + " 'sí, solo una vez, hinchado en alcohol',\n", + " 'perdido en la noche, soñando con volver',\n", + " 'con volver',\n", + " 'y solo quiero que me des un poco de sinceridad',\n", + " 'solo quiero que me des un poco de sinceridad',\n", + " 'déjame verte caer',\n", + " 'déjame entrar en tus sueños, no',\n", + " 'no, no es cierto que',\n", + " 'robaste el grito final que está a la orilla del viento, no',\n", + " 'deja me conecto',\n", + " 'déjame verte caer',\n", + " 'déjame entrar en tus sueños, no',\n", + " 'no, no es cierto que',\n", + " 'robaste el grito final',\n", + " 'que está a la orilla del viento, no',\n", + " 'deja me conecto',\n", + " '(shine on you people of the earth)',\n", + " 'déjame verte caer',\n", + " 'déjame entrar en tus sueños, no',\n", + " 'no, no es cierto que',\n", + " '(try to make it right, love is the way)',\n", + " 'robaste el grito final que está a la orilla del viento, no',\n", + " 'deja me conecto',\n", + " '(shine on you people of the earth)',\n", + " 'déjame verte caer',\n", + " 'déjame entrar en tus sueños, no',\n", + " 'no, no es cierto que',\n", + " '(try to make it right, love is the way)',\n", + " 'robaste el grito final que está a la orilla del viento, no',\n", + " 'deja me conecto',\n", + " '(shine on you people of the earth)',\n", + " 'déjame verte caer',\n", + " 'déjame entrar en tus sueños, no',\n", + " 'no, no es cierto que',\n", + " '(try to make it right, love is the way)',\n", + " 'robaste el grito final que está a la orilla del viento, no',\n", + " 'deja me conecto',\n", + " '(shine on you people of the earth)',\n", + " 'déjame verte caer',\n", + " 'déjame entrar en tus sueños, no',\n", + " 'no, no es cierto que',\n", + " '(try to make it right, love is the way)',\n", + " 'robaste el grito final que está a la orilla del viento, no',\n", + " 'deja me conecto',\n", + " '(shine on you people of the earth)',\n", + " 'déjame verte caer',\n", + " 'déjame entrar en tus sueños, no',\n", + " 'no, no es cierto que',\n", + " '(try to make it right, love is the way)',\n", + " 'robaste el grito final que está a la orilla del viento, no',\n", + " 'deja me conecto',\n", + " '(shine on you people of the earth)',\n", + " 'déjame verte caer',\n", + " 'déjame entrar en tus sueños, no',\n", + " 'no, no es cierto que',\n", + " '(try to make it right, love is the way)',\n", + " 'robaste el grito final que está a la orilla del viento, no',\n", + " 'deja me conecto',\n", + " '(shine on you people of the earth)',\n", + " 'déjame verte caer',\n", + " 'déjame entrar en tus sueños',\n", + " '\"je vais employer des mots de cette expression de tendresse. tout ça est faux: c\\'est seulement ce que la musique elle-même est.\"',\n", + " '\"?\"',\n", + " 'poison made our days and we slept',\n", + " 'and we slept into the sulfur',\n", + " 'whispering words in the black sands',\n", + " 'whispering worlds in the dark stands',\n", + " 'away, at men’s last days',\n", + " 'with a heavy walk',\n", + " 'those traces will last',\n", + " 'in these lands opened to the depths, we run',\n", + " \"who will outlive us to tell what we've been?\",\n", + " \"away, at men's last days\",\n", + " 'with a heavy walk',\n", + " '\" parce que n’oubliez pas une chose, parce que la grande inspiratrice, c\\'est la mort... si vous ne mettez pas votre peau sur la table, vous n\\'avez rien. il faut payer.\"',\n", + " 'i too will disappear',\n", + " 'in the holes of piss and cum',\n", + " 'wrote at any price a letter',\n", + " 'on the wall of my years',\n", + " \"we'll disappear\",\n", + " 'poison made our days and we slept',\n", + " 'and we slept into the sulfur',\n", + " 'whispering words in the black sands',\n", + " 'whispering worlds in the dark stand',\n", + " 'dark stand!',\n", + " '\"cada noche al crepúsculo, un pájaro se encaramaba sobre la rama más alta. tejía su nido, cantaba, y cuando llegaba la noche, planeo se lleva. una noche después de que el pájaro se fue, un espectro entró en el cuarto y despertó el niño. le dijo: “súbete sobre esta rama muy arriba, y tráeme el nido que encontrarás.” el niño se subió, tomó el nido, y lo puso debajo de su camisa. el nido contra su piel era suave. volvió a bajar, se lo dio al espectro qui le murmuró: \\'mira… este nido está tejido con los cabellos de una difunta amada. quémalo ahora para mí.\\'\"',\n", + " 'we fade, we run]',\n", + " \"don't give up, lake keepers\",\n", + " 'we will swim again',\n", + " 'we will swim again',\n", + " \"don't give up, lake keepers\",\n", + " 'we will swim again',\n", + " 'watchmen, watchmen on the banks',\n", + " '\"el nido chisporroteó, brilló en la noche, y cuando un soplo de aire disipó las últimas cenizas, el espectro desapareció. el niño supo que en él también, un muerto había tejido su nido.\"',\n", + " 'letra de \"tons qué (so what)\"',\n", + " 'usted con semejante reino y no lo pone a gobernar',\n", + " \"¿enton's qué mamita? (so what)\",\n", + " '¿me va a coronar o no me va a coronar? (so what)',\n", + " 'usted con semejante panela y no la pone a derretir',\n", + " \"¿enton's qué mamita? (so what)\",\n", + " '¿me da de usted y yo le doy de mí? (so what)',\n", + " 'usted con semejante máquina y no la pone a moler',\n", + " \"¿enton's qué mamita? (so what)\",\n", + " '¿me va a romper o no me va a romper? (so what)',\n", + " 'usted con semejante bocachico y no lo pone a sudar',\n", + " \"¿enton's que bizcocho? (so what)\",\n", + " '¿me va a secar o no me va a secar? (so what)',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'en el éxtasis del flash',\n", + " 'con la estrella omnisexual',\n", + " 'y el glamour acomodado',\n", + " 'a la lujuria de hotel',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'psicodélica alborada',\n", + " 'con amantes entrenadas',\n", + " 'preguntándome en silencio',\n", + " 'en qué ciudad estaré',\n", + " 'desperté con odio y resquemor',\n", + " 'la sombra de la frustración',\n", + " 'se cierne sobre mi cara',\n", + " 'resentido y agrio sin porqué',\n", + " 'fui recordando el drama que soñé',\n", + " 'soñé ser crítico de rock',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'si querés un empujón',\n", + " 'te invito a mi camarín',\n", + " 'con hermosas mujeres',\n", + " 'que regalan desnudez',\n", + " 'desperté con odio y resquemor',\n", + " 'la sombra de la frustración',\n", + " 'se cierne sobre mi cara',\n", + " 'resentido y agrio sin porqué',\n", + " 'fui recordando el drama que soñé',\n", + " 'soñé ser crítico de rock',\n", + " 'ser el vapor de fantasías',\n", + " 'no me dejará llorar',\n", + " 'la fiesta que nunca termina',\n", + " 'y la amistad artificial',\n", + " 'pobre infeliz, nunca descansará',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'quiero ser',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'tan freak, tan freak',\n", + " 'tan freak y tan popular quiero ser',\n", + " 'letra de \"frijolero (mtv unplugged)\"',\n", + " 'verso 1: (paco ayala)',\n", + " 'yo ya estoy hasta la madre',\n", + " 'de que me pongan sombrero',\n", + " 'escucha entonces cuando digo',\n", + " 'no me llames frijolero',\n", + " 'y aunque exista algún respeto',\n", + " 'y no metamos las narices',\n", + " 'nunca inflamos la moneda',\n", + " 'haciendo guerra a otros países',\n", + " 'te pagamos con petróleo',\n", + " 'e intereses nuestra deuda',\n", + " 'mientras tanto no sabemos',\n", + " 'quien se queda con la feria',\n", + " 'aunque nos hagan la fama',\n", + " 'de que somos vendedores',\n", + " 'de la droga que sembramos',\n", + " 'ustedes son consumidores',\n", + " 'coro:',\n", + " \"don't call me gringo\",\n", + " 'you fucking beaner',\n", + " 'stay on your side',\n", + " 'of that goddamn river',\n", + " \"don't call me gringo\",\n", + " 'you beaner',\n", + " 'no me digas beaner',\n", + " 'mr. puñetero',\n", + " 'te sacaré un susto',\n", + " 'por racista y culero',\n", + " 'no me llames frijolero',\n", + " 'pinche gringo puñetero',\n", + " 'outro:',\n", + " 'arriba méxico, chingadamadre',\n", + " 'verso 2: (randy ebright)',\n", + " 'now i wish i had a dime',\n", + " 'for every single time',\n", + " \"i've gotten stared down\",\n", + " 'for being in the wrong side of town',\n", + " \"and a rich man i'd be\",\n", + " 'if i had that kind of chips',\n", + " 'lately i wanna smack the smiles',\n", + " 'off these racists',\n", + " 'podrás imaginarte desde afuera',\n", + " 'ser un mexicano cruzando la frontera',\n", + " 'pensando en tu familia mientras que pasas',\n", + " 'dejando todo lo que conoces atrás',\n", + " 'si tuvieras tú que esquivar las balas',\n", + " 'de unos cuantos gringos rancheros',\n", + " 'les seguirás diciendo good for nothing wetbacks',\n", + " 'si tuvieras tú que empezar de cero?',\n", + " \"now why don't you look down\",\n", + " 'to where your feet is planted',\n", + " 'that u.s. soil that makes you take shit for granted',\n", + " 'if not for santa ana, just to let you know',\n", + " 'that where your feet are planted would be mexico (correcto)',\n", + " 'coro:',\n", + " \"don't call me gringo\",\n", + " 'you fuckin beaner',\n", + " 'stay on your side',\n", + " 'of that goddamn river',\n", + " \"don't call me gringo\",\n", + " 'you beaner',\n", + " 'no me digas beaner',\n", + " 'mr. puñetero',\n", + " 'te sacaré un susto',\n", + " 'por racista y culero',\n", + " 'no me llames frijolero',\n", + " 'pinche gringo puñetero',\n", + " 'solo de acordeón',\n", + " 'coro:',\n", + " \"don't call me gringo\",\n", + " 'you fuckin beaner',\n", + " 'stay on your side',\n", + " 'of that goddamn river',\n", + " \"don't call me gringo\",\n", + " 'you beaner',\n", + " 'no me digas beaner',\n", + " 'mr. puñetero',\n", + " 'te sacaré un susto',\n", + " 'por racista y culero',\n", + " 'no me llames frijolero',\n", + " 'pinche gringo puñetero',\n", + " '¿pinche gringo que?',\n", + " 'puñetero',\n", + " 'quiero un helado con sabor a tu piel',\n", + " 'quiero pecar con tus pecas de miel',\n", + " 'quiero sentir el limón de tu ser',\n", + " 'tan antojado, no puedo estar de pie',\n", + " \"i don't ever wanna change your mind\",\n", + " 'i wanna be with you the way that you are',\n", + " \"i don't ever wanna change your mind\",\n", + " 'i wanna be with you the way that you are',\n", + " 'yeah-yeah, yeah',\n", + " 'yeah-yeah, yeah',\n", + " 'yeah-yeah, yeah',\n", + " 'yeah-yeah, yeah',\n", + " 'yeah-yeah, yeah',\n", + " 'yeah-yeah, yeah',\n", + " 'yeah-yeah, yeah',\n", + " 'yeah-yeah, yeah',\n", + " 'quiero tocar tus memorias de ayer',\n", + " 'pintar orgasmos rojos en tu pared',\n", + " 'quiero enterrar mi girasol en tu cielo',\n", + " 'quiero yo ser una cana en tu pelo',\n", + " \"i don't ever wanna change your mind\",\n", + " 'i wanna be with you the way that you are',\n", + " \"i don't ever wanna change your mind\",\n", + " 'i wanna be with you the way that you are',\n", + " 'los violan en tantas partes',\n", + " 'en américa latina',\n", + " 'domingo, lunes y martes',\n", + " 'nos imponen militares',\n", + " 'para sojuzgar los pueblos',\n", + " 'dictadores, asesinos',\n", + " 'gorilas y generales',\n", + " 'you kill us all, kill my friends, kill my father, kill my dad',\n", + " 'kill my friends, kill my father, kill my mom, yeah yeah',\n", + " 'in a night of 78',\n", + " 'men of general camps',\n", + " 'kill and panic on the streets',\n", + " 'get us off the goal',\n", + " 'you kill my destiny',\n", + " 'all the days, all the days',\n", + " 'you kill my destiny',\n", + " 'you kill my destiny',\n", + " 'all the days, all the days',\n", + " 'you kill my destiny',\n", + " 'you kill my destiny',\n", + " 'all the days, all the days',\n", + " 'you kill my destiny',\n", + " 'you kill my destiny',\n", + " 'all the days, all the days',\n", + " 'you kill my destiny',\n", + " 'kill my destiny',\n", + " 'you kill my dad, kill my friends, kill my futurе, get out and kill',\n", + " 'kill my friends, kill my dad, kill my future, kill and kill',\n", + " 'in a night of 78',\n", + " 'mеn of general camps',\n", + " 'kill my parents on the streets',\n", + " 'get us off the goal',\n", + " 'you kill my destiny',\n", + " 'all the days, all the days',\n", + " 'you kill my destiny...',\n", + " 'siempre que te pregunto',\n", + " 'que, cuándo, cómo y dónde',\n", + " 'tú siempre me respondes',\n", + " 'quizás, quizás, quizás',\n", + " 'y así pasan los días',\n", + " 'y yo, desesperada',\n", + " 'y tú, tú contestando',\n", + " 'quizás, quizás, quizás',\n", + " \"if you can't make your mind up\",\n", + " \"we'll never get started\",\n", + " \"and i don't want to wind up\",\n", + " 'being parted, broken hearted',\n", + " 'y así pasan los días',\n", + " 'y yo, desesperada',\n", + " 'y tú, tú contestando',\n", + " 'quizás, quizás, quizás',\n", + " 'i am on the rock and then i check a stock',\n", + " 'i have to run like a fugitive to save the life i live',\n", + " \"i'm going to be iron like a lion in zion\",\n", + " \"i'm going to be iron like a lion in zion\",\n", + " 'iron lion zion',\n", + " 'iron lion zion',\n", + " 'lion',\n", + " \"i'm on the run but i have got no gun\",\n", + " 'see they want to be the star',\n", + " 'so they fighting tribal war',\n", + " 'and they saying iron like a lion in zion',\n", + " 'iron like a lion in zion',\n", + " 'iron lion zion',\n", + " 'iron lion zion',\n", + " \"i'm on the rock, running and you running\",\n", + " 'still pappa take a stock, running like a fugitive',\n", + " 'i had to run like a fugitive just to save the life i live, ooh yes',\n", + " \"i've got to be iron like a lion in zion\",\n", + " 'i am going to be iron like a lion in zion',\n", + " 'iron lion zion',\n", + " 'iron lion zion, iron lion zion',\n", + " 'con el valor que me alienta, sobrevivir',\n", + " 'me da fuerzas para combatir',\n", + " 'lucho como un soldado, escribo historias',\n", + " 'revolucionario en busca de victoria',\n", + " 'primero cruzando y alegría',\n", + " 'le ofrezco a la vida victoria divina',\n", + " 'nadie nos para ni nos separa',\n", + " 'somos rayos de luz bailando en la eternidad',\n", + " 'bailando en la eternidad',\n", + " 'ziggy, ziggy, ziggy, ziggy, ziggy',\n", + " 'iron like a lion in zion, iron like a lion in zion',\n", + " 'iron like a lion in zion',\n", + " 'you got to be iron like a lion in zion',\n", + " 'iron lion zion',\n", + " 'iron lion zion',\n", + " 'iron lion zion',\n", + " 'iron lion zion',\n", + " 'if you were around',\n", + " \"i'm safe and sound\",\n", + " \"i'm present\",\n", + " 'but be gone',\n", + " 'and let her pass',\n", + " \"although it's not pleasant\",\n", + " 'i fear what is to come',\n", + " 'so i sing a sad song',\n", + " 'about the things that went wrong',\n", + " 'hola juno es leonor la mama de natalie',\n", + " 'en estos días llame y te deje mensaje',\n", + " 'pero como no he recibido noticias de ustedes',\n", + " 'no se que habrá pasado',\n", + " 'por favor, que natalie llame',\n", + " 'es leonor, natalie que llame',\n", + " 'ciao, gracias',\n", + " 'if you were around',\n", + " \"i'm safe and sound\",\n", + " \"i'm present\",\n", + " 'but be gone',\n", + " 'and let her pass',\n", + " \"although it's not pleasant\",\n", + " 'i fear what is to come',\n", + " 'so i sing a sad song',\n", + " 'about the things that went wrong',\n", + " 'guardián de piedra',\n", + " 'guardián de piedra',\n", + " 'déjame pasar',\n", + " 'esperé por tantos años',\n", + " 'a las puertas de tu morada',\n", + " 'caras alineadas',\n", + " 'vestidas de negro',\n", + " 'quieren ver mi cuerpo en el suelo',\n", + " 'quieren verme caer',\n", + " 'guardián de piedra',\n", + " 'guardián de piedra',\n", + " 'déjanos pasar',\n", + " 'esperamos tantos años',\n", + " 'a las puertas de tu ciudad',\n", + " 'caras alineadas',\n", + " 'vestidas de negro',\n", + " 'quieren ver mi clase en el suelo',\n", + " 'quieren vernos caer',\n", + " 'guardián de piedra',\n", + " 'guardián de piedra',\n", + " 'mi tiempo se acaba',\n", + " 'una esvástica cubre el cielo',\n", + " 'el arco iris negro',\n", + " 'stone guardian',\n", + " 'stone guardian',\n", + " 'let me go through',\n", + " 'i waited so many years',\n", + " 'at the door of your dwelling',\n", + " 'faces in alignment',\n", + " 'dressed in black',\n", + " 'they want to see my body on the ground',\n", + " 'they want to see me fall',\n", + " 'stone guardian',\n", + " 'let us go through',\n", + " 'we waited so many years',\n", + " 'at the door of your city',\n", + " 'faces in alignment',\n", + " 'dressed in black',\n", + " 'they want to see my class on the ground',\n", + " 'they want to see us fall',\n", + " 'stone guardian',\n", + " 'my time is running out',\n", + " 'a swastika covers the sky',\n", + " ...]},\n", + " 'data': ['(inglés)',\n", + " 'row, row, row your boat',\n", + " 'gently down the stream',\n", + " 'merrily',\n", + " 'merrily',\n", + " 'merrily',\n", + " 'merrily',\n", + " 'life is but a dream',\n", + " 'canción infantil',\n", + " '(español)',\n", + " 'rema, rema, rema tu barco',\n", + " 'suavemente corriente abajo',\n", + " 'feliz',\n", + " 'feliz',\n", + " 'feliz',\n", + " 'feliz',\n", + " 'la vida es sólo un sueño',\n", + " \"in the end it's not that easy\",\n", + " 'to breath in',\n", + " 'it’s not that easy',\n", + " \"in the end it's not that easy\",\n", + " 'to breath in',\n", + " \"it's not that easy\",\n", + " 'a new chemtrail',\n", + " 'in the end, to breath in',\n", + " 'something new that makes you',\n", + " 'belicoso',\n", + " 'belicoso',\n", + " 'we are belicosos',\n", + " 'belicoso',\n", + " 'we are belicosos',\n", + " \"i don’t see it, i don't smell it\",\n", + " \"but it's going to my head\",\n", + " \"i don't see it, i don't smell it\",\n", + " \"but it's going to my head\",\n", + " \"i don't see it, i don't smell it\",\n", + " 'but it’s going to my head',\n", + " 'no me hables de conspiración',\n", + " 'porque siento la disnea en mi respiración',\n", + " 'que yo crea lo que crea, nadie dice lo que piensa',\n", + " 'porque ni siquiera piensan',\n", + " 'solamente se molestan',\n", + " 'en el manicomio de la sanidad',\n", + " 'donde te inyectan sin que puedas rechazar',\n", + " 'porque tu rabia conviene y tu odio',\n", + " 'mantiene el orden belicoso',\n", + " 'belicoso',\n", + " 'we are belicosos',\n", + " 'belicoso',\n", + " 'we are belicosos',\n", + " \"i don’t see it, i don't smell it\",\n", + " 'but it’s going to my head',\n", + " \"i don't see it, i don't smell it\",\n", + " \"but it's going to my head\",\n", + " \"i don’t see it, i don't smell it\",\n", + " \"but it's going to my head\",\n", + " \"i don't see it, i don't smell it\",\n", + " \"but it's going to my head\",\n", + " \"i don't see it, i don't smell it\",\n", + " \"but it's going to my head\",\n", + " \"i don't see it, i don't smell it\",\n", + " \"but it's going to my fucking head\",\n", + " 'belicoso',\n", + " 'belicoso',\n", + " 'we are belicosos',\n", + " 'belicoso',\n", + " 'we are belicosos',\n", + " 'belicoso',\n", + " 'we are belicoso',\n", + " 'belicoso',\n", + " \"we are belico'\",\n", + " 'en ese beat natural en que baila la belleza',\n", + " 'se oía un disco girar que volaba tu cabeza',\n", + " 'y en ese sitio algo más volaba por el aire',\n", + " 'tres cuadras atrás en una pequeña calle',\n", + " 'i can feel tonight',\n", + " \"wherever we go, we'll...\",\n", + " 'i can feel tonight',\n", + " \"wherever we go, we'll hide\",\n", + " 'tonight',\n", + " 'en ese beat espiral en que danza la belleza',\n", + " 'hay un latido viral que toca la tornamesa',\n", + " 'y en un impulso animal salimos a la calle',\n", + " 'el espacio total es ahora nuestro valle',\n", + " 'i can feel tonight',\n", + " \"wherever we go, we'll...\",\n", + " 'i can feel tonight',\n", + " \"wherever we go, we'll hide\",\n", + " 'tonight',\n", + " 'tonight',\n", + " \"wherever we go, we'll hide\",\n", + " \"wherever we go, we'll hide\",\n", + " \"wherever we go, we'll...\",\n", + " 'tonight',\n", + " \"wherever we go, we'll hide\",\n", + " \"wherever we go, we'll hide\",\n", + " \"wherever we go, we'll...\",\n", + " 'tonight',\n", + " \"wherever we go, we'll hide\",\n", + " \"wherever we go, we'll hide\",\n", + " \"wherever we go, we'll...\",\n", + " 'roots me again!',\n", + " 'so come listen to di one',\n", + " \"mi a go' mash up on di plan\",\n", + " 'now dis, now dis is a message from di alluland',\n", + " 'hoy es un día de aquellos',\n", + " 'en que miro hacia el cielo',\n", + " 'tratando de descifrar el que estés',\n", + " 'de vez en cuando lejos',\n", + " 'y de vez en cuando cerca',\n", + " 'unas veces subir y otras caer',\n", + " 'y yo cuando tú te me acercas',\n", + " 'no respondo de mis actos',\n", + " 'siento que aquí voy',\n", + " 'de odiarte, a quererte',\n", + " 'de principio a fin',\n", + " 'buscando un poco de amor',\n", + " 'you gotta rock it out and rock it in',\n", + " 'from dublin to babylon',\n", + " '(buscando un poco de amor)',\n", + " 'jump it out and jump it in',\n", + " 'from kingston to providenceland',\n", + " '(buscando un poco de amor)',\n", + " 'hay cosas en la vida',\n", + " 'en que no encuentras salida',\n", + " 'y ante tus ojos se cierra el telón',\n", + " 'y tapas la boquilla del volcán que se hace lava',\n", + " 'que hace mil años esta aquí dentro',\n", + " 'y yo tejiendo redecillas',\n", + " 'para ver si puedo atraparte',\n", + " 'y aquí voy colando la masilla',\n", + " 'en medio de este trópico mortal',\n", + " 'roots and creation, come again!',\n", + " 'so mi guardian, mi guardian mi lift up di plan',\n", + " \"now everybody a go' do dis one\",\n", + " 'like in down di caribbean',\n", + " 'san andrés, providence island',\n", + " 'live it up, make it love sensation',\n", + " \"say goodbye to di world's segregation\",\n", + " 'dis a di age of di new generation',\n", + " 'lift it up to di high revelation',\n", + " 'y aquí voy tejiendo redecillas',\n", + " 'para ver si puedo atraparte',\n", + " 'y aquí estoy colando la masilla',\n", + " 'en medio de este trópico mortal',\n", + " 'todo por un poco de amor',\n", + " '(buscando un poco de amor)',\n", + " 'we gotta rock it out and rock it in',\n", + " 'from dublin to babylon',\n", + " '(buscando un poco de amor)',\n", + " 'jump it out and jump it in',\n", + " '(jump it out and jump it in)',\n", + " '(jump it out and jump it in)',\n", + " 'from brasilia to medellín',\n", + " '(buscando un poco de amor)',\n", + " 'rock it out and rock it in',\n", + " '(oh, yeah)',\n", + " 'from aruba to panamá',\n", + " '(por un poquito de tu amor)',\n", + " '(buscando un poco de amor)',\n", + " 'jump it out and jump it in',\n", + " 'from kingston to providenceland',\n", + " '(¿dónde estás?)',\n", + " '(buscando un poco de amor)',\n", + " 'you gotta rock it out and rock it in',\n", + " 'from dublin to babylon',\n", + " '(por un poquito de tu amor)',\n", + " '(buscando un poco de amor)',\n", + " 'jump it out and jump it in',\n", + " '(oh, oh, oh, oh, oh, yeah)',\n", + " 'from brasilia to medellín',\n", + " '(buscando un poco de amor)',\n", + " 'rock it out and rock it in',\n", + " '(oh, yeah)',\n", + " 'from aruba to panamá',\n", + " '(por un poquito de tu amor)',\n", + " '(buscando un poco de amor)',\n", + " 'yo ya estoy hasta la madre',\n", + " 'de que me pongan sombrero',\n", + " 'escucha entonces cuando digo',\n", + " 'no me llames frijolero',\n", + " 'y aunque exista algún respeto',\n", + " 'y no metamos las narices',\n", + " 'nunca inflamos la moneda',\n", + " 'haciendo guerra a otros países',\n", + " 'te pagamos con petróleo',\n", + " 'e intereses nuestra deuda',\n", + " 'mientras tanto no sabemos',\n", + " 'quien se queda con la feria',\n", + " 'aunque nos hagan la fama',\n", + " 'de que somos vendedores',\n", + " 'de la droga que sembramos',\n", + " 'ustedes son consumidores',\n", + " \"don't call me gringo\",\n", + " 'you fucking beaner',\n", + " 'stay on your side',\n", + " 'of that goddamn river',\n", + " \"don't call me gringo\",\n", + " 'you beaner',\n", + " 'no me digas beaner',\n", + " 'mr. puñetero',\n", + " 'te sacaré un susto',\n", + " 'por racista y culero',\n", + " 'no me llames frijolero',\n", + " 'pinche gringo puñetero',\n", + " 'now i wish i had a dime',\n", + " 'for every single time',\n", + " \"i've gotten stared down\",\n", + " 'for being in the wrong side of town',\n", + " \"and a rich man i'd be\",\n", + " 'if i had that kind of chips',\n", + " 'lately i wanna smack the smiles',\n", + " 'off these racists',\n", + " 'podrás imaginarte desde afuera',\n", + " 'ser un mexicano cruzando la frontera',\n", + " 'pensando en tu familia mientras que pasas',\n", + " 'dejando todo lo que conoces atrás',\n", + " 'si tuvieras tú que esquivar las balas',\n", + " 'de unos cuantos gringos rancheros',\n", + " 'les seguirás diciendo good for nothing wetbacks',\n", + " 'si tuvieras tú que empezar de cero?',\n", + " \"now why don't you look down\",\n", + " 'to where your feet is planted',\n", + " 'that u.s. soil that makes you take shit for granted',\n", + " 'if not for santa ana, just to let you know',\n", + " 'that where your feet are planted would be mexico (correcto)',\n", + " \"don't call me gringo\",\n", + " 'you fuckin beaner',\n", + " 'stay on your side',\n", + " 'of that goddamn river',\n", + " \"don't call me gringo\",\n", + " 'you beaner',\n", + " 'no me digas beaner',\n", + " 'mr. puñetero',\n", + " 'te sacaré un susto',\n", + " 'por racista y culero',\n", + " 'no me llames frijolero',\n", + " 'pinche gringo puñetero',\n", + " \"don't call me gringo\",\n", + " 'you fuckin beaner',\n", + " 'stay on your side',\n", + " 'of that goddamn river',\n", + " \"don't call me gringo\",\n", + " 'you beaner',\n", + " 'no me digas beaner',\n", + " 'mr. puñetero',\n", + " 'te sacaré un susto',\n", + " 'por racista y culero',\n", + " 'no me llames frijolero',\n", + " 'pinche gringo puñetero',\n", + " '¿pinche gringo que?',\n", + " 'puñetero',\n", + " 'generație',\n", + " 'aspirație',\n", + " 'interdicție',\n", + " 'demonstrație',\n", + " 'revoluție',\n", + " 'figurație',\n", + " 'emanație',\n", + " 'aberație',\n", + " 'informație',\n", + " 'deformație',\n", + " 'opoziție',\n", + " 'conspirație',\n", + " 'instituție',\n", + " 'separație',\n", + " 'prostituție',\n", + " 'decorație',\n", + " 'declarație',\n", + " 'perorație',\n", + " 'legislație',\n", + " 'lamentație',\n", + " 'retribuție',\n", + " 'imitație',\n", + " 'satisfacție',\n", + " 'beție',\n", + " 'ocupație',\n", + " 'populație',\n", + " 'consignație',\n", + " 'saturație',\n", + " 'emigrație',\n", + " 'circulație',\n", + " 'constituție',\n", + " 'nație',\n", + " 'compensație',\n", + " 'alocație',\n", + " 'subnutriție',\n", + " 'implicație',\n", + " 'explicație',\n", + " 'complicație',\n", + " 'educație',\n", + " 'malformație',\n", + " 'restricție',\n", + " 'miliție',\n", + " 'protecție',\n", + " 'poliție',\n", + " 'pretenție',\n", + " 'corecție',\n", + " 'atenție',\n", + " 'detenție',\n", + " 'producție',\n", + " 'reducție',\n", + " 'construcție',\n", + " 'distrucție',\n", + " 'seducție',\n", + " 'deducție',\n", + " 'vocație',\n", + " 'hoție',\n", + " 'democrație',\n", + " 'intenție',\n", + " 'tehnocrație',\n", + " 'direcție',\n", + " 'birocrație',\n", + " 'infecție',\n", + " 'bogăție',\n", + " 'frecție',\n", + " 'letra de \"paz\"paz en todo lo que dices',\n", + " 'paz en todo lo que haces',\n", + " 'paz en todo lo que piensas',\n", + " 'paz en forma de silencio',\n", + " 'paz en forma de afecto',\n", + " 'paz en todo el universo',\n", + " 'paz y se detiene el tiempo',\n", + " 'paz cuando uno esta contento',\n", + " 'paz cuando uno monta al viento',\n", + " 'paz cuando hago lo que siento',\n", + " 'paz cuando suelto lo que aferro',\n", + " 'paz aunque suene muy ingenuo',\n", + " 'si estás',\n", + " 'si estás mal',\n", + " 'si estás lejos',\n", + " 'si estás',\n", + " 'si estás mal',\n", + " 'si estás lejos',\n", + " 'you see the world',\n", + " 'you see the face',\n", + " 'you see the pain behind the smile',\n", + " 'where does the enemy hide?',\n", + " 'you see the world',\n", + " 'you see the face',\n", + " 'you see the pain behind the smile',\n", + " 'where does the enemy hide?',\n", + " 'you see the world',\n", + " 'you see the face',\n", + " 'you see the pain behind the smile',\n", + " 'where does the enemy hide?',\n", + " 'you see the world',\n", + " 'you see the face',\n", + " 'you see the pain behind the smile',\n", + " 'where does the enemy hide?',\n", + " 'you see the world',\n", + " 'you see the face',\n", + " 'you see the pain behind your smile',\n", + " 'where does the enemy hide?',\n", + " 'todas sus cosas son me marca',\n", + " 'se compra todo, nuna corazon, nada',\n", + " 'must be tough',\n", + " \"it's never enough\",\n", + " 'chicara no tan bien chicada',\n", + " 'no derilla, no requenta nada',\n", + " 'she wants more',\n", + " 'yeah, she wants more, and more, and more and more and more and more',\n", + " 'pobre, pobre niña rica',\n", + " 'pobre, pobre niña rica, oh, sí',\n", + " 'pobre, pobre niña rica',\n", + " 'pobre, pobre niña, what does she need?',\n", + " 'yeah',\n", + " 'no aqui da su medicina',\n", + " 'su sonrisa, bien informa de partida',\n", + " 'she wants more',\n", + " 'yeah, she wants more, and more, and more and more and more and more',\n", + " 'pobre, pobre niña rica',\n", + " 'pobre, pobre niña rica, oh, sí',\n", + " 'pobre, pobre niña rica',\n", + " 'pobre, pobre niña, what does she need?',\n", + " \"let's go\",\n", + " 'pobre, pobre niña rica',\n", + " 'pobre, pobre niña rica, oh, sí',\n", + " 'pobre, pobre niña rica',\n", + " 'pobre, pobre niña, what does she need?',\n", + " 'yeah',\n", + " 'te he visto llorar más de una vez',\n", + " 'sabes? yo no presume de sensatez',\n", + " 'me tomo el tiempo como licor',\n", + " 'y soy propensa a la decepción',\n", + " \"there's no time\",\n", + " \"there's no time\",\n", + " \"there's no time... it's showtime\",\n", + " \"there's no time\",\n", + " \"there's no time\",\n", + " \"there's no time\",\n", + " \"there's no time for me\",\n", + " 'tú me has visto llorar más de una vez',\n", + " 'si estoy contigo las manecillas van al revés',\n", + " 'somos eléctrica confusión',\n", + " 'distorsionamos la situación',\n", + " \"there's no time\",\n", + " \"there's no time\",\n", + " \"there's no time... it's showtime\",\n", + " \"there's no time\",\n", + " \"there's no time\",\n", + " \"there's no time\",\n", + " \"there's no time for me\",\n", + " \"there's no time for me\",\n", + " \"'cause we got no answer at all\",\n", + " 'and we got no answer at all',\n", + " \"'cause we got no answer at all\",\n", + " 'and we got no answer at all',\n", + " \"'cause we got no answer at all\",\n", + " 'and we got no answer at all',\n", + " 'sobre el tumulto de tus decisiones',\n", + " 'sobre el tumulto de tus decisiones',\n", + " 'sobre el tumulto de tus decisiones voy, woah!',\n", + " 'alzo la lata al cielo',\n", + " 'desde la otra punta del mundo brindamos y me pongo a pensar',\n", + " 'celebro que la distancia funcione una vez más',\n", + " 'le veo apuntar con el dedo: ikebukuro sunshine',\n", + " 'no supe tomar la curva y ahora es tarde',\n", + " 'pero deja de guiñarme el ojo, no es tan abstracto ¿no?',\n", + " 'cambian las estaciones pero nunca los problemas',\n", + " 'ni estas necesidades especiales que tratar',\n", + " 'los aeropuertos, nuevos mapas, los mismos dilemas',\n", + " 'me muestro vulnerable, etcétera, etcétera',\n", + " 'y tus emojis, que quieren acabar conmigo',\n", + " 'por eso a veces me pongo un poquito visceral',\n", + " 'creo que esta noche no vamos a acabar muy bien',\n", + " '¿quieres dejar de cantar? mira, por aquí pasa otro tren',\n", + " 'esta ciudad me asfixia un poco, tal vez necesite un trago',\n", + " 'creo que esta noche no vamos a acabar bien',\n", + " '// english',\n", + " 'ikebukuro sunshine',\n", + " 'i lift the can up to the sky',\n", + " 'from the other side of the world we toast and i start thinking',\n", + " 'i celebrate that distance is working yet again',\n", + " 'i watch him point with his finger: ikebukuro sunshine',\n", + " \"i didn't know how to drive the curve and now it's late\",\n", + " \"but stop winking at me, it's not so abstract isn't it?\",\n", + " 'seasons change but problems won’t',\n", + " 'nor these special needs to deal with',\n", + " 'airports, new maps, the same dilemmas',\n", + " 'i show myself vulnerable, etcetera, etcetera',\n", + " 'and your emojis, that want to finish me',\n", + " \"that's why sometimes i get a little visceral\",\n", + " 'i think tonight were not gonna end very well',\n", + " 'do you want to stop singing? look, another train is passing by',\n", + " 'this city suffocates me a little, perhaps i need a drink',\n", + " 'i think tonight we’re not gonna end up well',\n", + " 'mjes si o to seto dollas',\n", + " 'il westorpuer noemer warnaar',\n", + " 'eres sito iso una',\n", + " 'position corper frontiaar',\n", + " 'cinco de mayo',\n", + " 'dia de arboejo',\n", + " 'soldados para yentes',\n", + " 'cinco de mayo',\n", + " 'fouares wakavade',\n", + " 'indenpendensia',\n", + " 'casa del miourpok',\n", + " '( ) justitia',\n", + " 'cinco de mayo',\n", + " 'dia de arboejo',\n", + " 'soldados para yentes',\n", + " 'cinco de mayo',\n", + " 'mechico vargos mido do',\n", + " 'yeah',\n", + " 'solo',\n", + " 'mechico mechico',\n", + " 'di er ela avinidad',\n", + " 'i demos pro',\n", + " 'el enes si dia',\n", + " 'cinco de mayo',\n", + " 'dia de arboejo',\n", + " 'soldados para yentes',\n", + " 'cinco de mayo',\n", + " 'mechico vargos tribo do',\n", + " 'el desarrollo mental del miedo a todas las experiencias limitadas... el olor nauseabundo de mis visiones extremas, la locura unitaria de un mundo revuelto, la infinidad inalcanzable de mi propio interior, el desarrollo imperfecto de hombres y arboles caidos, un infiemo de color turquesa sobre un cielo envuelto en llamas: significado en tus ojos de hipocresia, fantasia y complejidad, el miedo a lo desconocido.. la muerte y todas sus enfermedades, cien pensamientos en un solo segundo sobre un monte repleto de animalillos filosoficos, la cabeza me estalla y no alcanzo las respuestas, sus lagrimas son esa pistola en tus manos, la diversidad aniquilada en un mundo cada vez mas artifical... la descripion perfecta de un desastre real',\n", + " 'the mental development of the fear of all the limited experiences... the nauseous scent of my extreme visions, the unitary madness of a shaken world, the unattainable infinity of my own interior, the imperfect development of men and you hoist caidos, infiemo of turquesa color on a sky surrounded in flames: meaning in your eyes of hipocresia, fantasy and complexity, the fear to the stranger. the death and all its diseases, one hundred thoughts in a single second on a mount filled with philosophical animalillos, the head explodes to me and i do not reach the answers, its tears are that pistol in your hands, the diversity annihilated in a more and more artifical world... the perfect descripion of a real disaster',\n", + " 'arráncame de raíz',\n", + " 'para eludir nuestro cruel provenir',\n", + " 'arrastrando tu recuerdo iré',\n", + " 'por encima del mar;',\n", + " 'no sé si la lluvia ajena',\n", + " 'la hará daño',\n", + " 'mother, help',\n", + " 'please, take me back to the start',\n", + " 'in a twist of fate',\n", + " 'an ocean pulled us apart',\n", + " 'but one day we’ll meet again',\n", + " 'en brazos de esta tierra hostil',\n", + " 'toro me habla de ti',\n", + " 'remendado tu recuerdo iré',\n", + " 'cada paso que doy',\n", + " 'pero no sé si te reconoceré',\n", + " 'al volver',\n", + " 'mother, help',\n", + " 'please, take me back to the start',\n", + " 'in a twist of fate',\n", + " 'an ocean pulled us apart',\n", + " 'but one day we’ll meet again',\n", + " 'oh, one day we’ll meet again',\n", + " 'mother, help',\n", + " 'please, take me back to the start',\n", + " 'in a twist of fate',\n", + " 'an ocean pulled us apart',\n", + " 'but one day we’ll meet again',\n", + " 'oh, one day we’ll meet again',\n", + " 'dias enteros caminando en silencio',\n", + " 'apuro mis pasos para dejar todo atrás;',\n", + " 'busco en la soledad el espacio para olvidar esa voz que me atormenta',\n", + " 'i live in fear when the shadows reappear',\n", + " 'unleashing all their might',\n", + " \"i never thought i'd face the demons on my own\",\n", + " 'make it stop! haunted, hunted',\n", + " 'un suspiro que penetra mi alma',\n", + " 'un pensamiento constante e hiriente',\n", + " 'sé que estás ahi, aunque no puedo verte',\n", + " 'nunca he podido escapar del yugo de tus ojos',\n", + " 'with every breathe i take',\n", + " 'my heart beats faster',\n", + " 'no matter how hard i try to unwind',\n", + " 'tears keep falling from my eyes',\n", + " \"haunted, hunted, i'm down on my knees;\",\n", + " \"forever i'll mourn the loss of my innocence\",\n", + " 'papi, papi, ven y bésame',\n", + " 'papi, papi, wipe off my sweat',\n", + " 'papi, papi, ven y bésame',\n", + " \"papi, papi, you're the best\",\n", + " 'no te detengas, no no',\n", + " 'no pares nunca, no no',\n", + " 'no te detengas',\n", + " \"don't stop for anything\",\n", + " 'no te detengas, no no',\n", + " 'no pares nunca, no no',\n", + " 'no te detengas',\n", + " \"don't stop for anything at all\",\n", + " 'tengo tu nombre tatuado en mi piel en esa parte que solo tú ves',\n", + " 'la noche sigue y ya no me puedo aguantar',\n", + " 'ya no me quiero aguantar',\n", + " 'no te detengas, no no',\n", + " 'no pares nunca, no no',\n", + " 'no te detengas',\n", + " \"don't stop for anything\",\n", + " 'no te detengas, no no',\n", + " 'no pares nunca, no no',\n", + " 'no te detengas',\n", + " \"don't stop for anything at all\",\n", + " 'no te detengas, no no',\n", + " 'no pares nunca, no no',\n", + " 'no te detengas',\n", + " \"don't stop for anything\",\n", + " 'no te detengas, no no',\n", + " 'no pares nunca, no no',\n", + " 'no te detengas',\n", + " \"don't stop for anything at all\",\n", + " 'papi, papi, ven y bésame',\n", + " 'papi, papi, wipe off my sweat',\n", + " 'papi, papi, ven y bésame',\n", + " \"papi, papi, you're the best\",\n", + " 'no te detengas, no no',\n", + " 'no pares nunca, no no',\n", + " 'no te detengas',\n", + " \"don't stop for anything\",\n", + " 'no te detengas, no no',\n", + " 'no pares nunca, no no',\n", + " 'no te detengas',\n", + " \"don't stop for anything at all\",\n", + " 'tengo tu nombre tatuado en mi piel en esa parte que tú solo ves',\n", + " 'la noche sigue y ya no me puedo aguantar',\n", + " 'ya no me quiero aguantar',\n", + " 'tu nombre tatuado en mi piel en esa parte que solo tú ves',\n", + " 'la noche sigue y ya no me puedo aguantar',\n", + " 'ya no me quiero aguantar',\n", + " 'no te detengas, no no',\n", + " 'no pares nunca, no no',\n", + " 'no te detengas',\n", + " \"don't stop for anything\",\n", + " 'no te detengas, no no',\n", + " 'no pares nunca, no no',\n", + " 'no te detengas',\n", + " \"don't stop for anything at all\",\n", + " 'yo ya estoy hasta la madre',\n", + " 'de que me pongan sombrero',\n", + " 'escucha entonces cuando digo',\n", + " 'no me llames frijolero',\n", + " 'y aunque exista algún respeto',\n", + " 'y no metamos las narices',\n", + " 'nunca inflamos la moneda',\n", + " 'haciendo guerra a otros países',\n", + " 'te pagamos con petróleo',\n", + " 'e intereses nuestra deuda',\n", + " 'mientras tanto no sabemos',\n", + " '¿quién se queda con la feria?',\n", + " 'aunque nos hagan la fama',\n", + " 'de que somos vendedores',\n", + " 'de la droga que sembramos',\n", + " 'ustedes son consumidores',\n", + " \"don't call me gringo\",\n", + " 'you fucking beaner',\n", + " 'stay on your side',\n", + " 'of that goddamn river',\n", + " \"don't call me\",\n", + " 'gringo, you beaner',\n", + " 'no me digas beaner',\n", + " 'mr. puñetero',\n", + " 'te sacaré un susto',\n", + " 'por racista y culero',\n", + " 'no me llames frijolero',\n", + " 'pinche gringo puñetero',\n", + " 'chingao',\n", + " 'now i wish i had a dime',\n", + " 'for every single time',\n", + " \"i've gotten stared down\",\n", + " 'for being in the wrong side of town',\n", + " \"and a rich man i'd be\",\n", + " 'if i had that kind of chips',\n", + " 'lately i wanna smack the smiles',\n", + " 'off these racists',\n", + " 'podrás imaginarte desde afuera',\n", + " 'ser un mexicano cruzando la frontera',\n", + " 'pensando en tu familia mientras que pasas',\n", + " 'dejando todo lo tu que conoces atrás',\n", + " 'si tuvieras tú que esquivar las balas',\n", + " 'de unos cuantos gringos rancheros',\n", + " 'les seguirás diciendo good for nothing wetbacks',\n", + " 'si tuvieras tú que empezar de cero?',\n", + " \"now why don't you look down\",\n", + " 'to where your feet is planted',\n", + " 'that u.s. soil that makes you take shit for granted',\n", + " 'if not for santa ana, just to let you know',\n", + " 'that where your feet are planted would be mexico',\n", + " 'correcto!',\n", + " \"don't call me gringo\",\n", + " 'you fucking beaner',\n", + " 'stay on your side',\n", + " 'of that goddamn river',\n", + " \"don't call me\",\n", + " 'gringo, you beaner',\n", + " 'no me digas beaner',\n", + " 'mr. puñetero',\n", + " 'te sacaré un susto',\n", + " 'por racista y culero',\n", + " 'no me llames frijolero',\n", + " 'pinche gringo puñetero',\n", + " \"don't call me gringo\",\n", + " 'you fucking beaner',\n", + " 'stay on your side',\n", + " 'of that goddamn river',\n", + " \"don't call me\",\n", + " 'gringo, you beaner',\n", + " 'no me digas beaner',\n", + " 'mr. puñetero',\n", + " 'te sacaré un susto',\n", + " 'por racista y culero',\n", + " 'no me llames frijolero',\n", + " 'pinche gringo',\n", + " '¿pinche gringo qué?',\n", + " 'puñetero',\n", + " 'migra, migra, pinche migra dejame en paz',\n", + " 'migra, migra, pinche migra dejame en paz',\n", + " 'malicia veo en tus ojos desprecio en tu corazon',\n", + " 'malicia veo en tus ojos desprecio en tu corazon',\n", + " 'es hora de reconocer que todos somas una voz',\n", + " 'abrasa el concepto venimos de la misma voz',\n", + " 'me necesitas tu a mi mas y mas que yo a ti',\n", + " 'me necesitas tu a mi mas y mas que yo a ti',\n", + " 'me necesitas tu a mi mas y mas que yo a ti',\n", + " 'me necesitas tu a mi mas y mas que yo a ti',\n", + " \"people, people, let's start together, let's do it right\",\n", + " \"people, people, let's love one another\",\n", + " 'i know we know how',\n", + " 'me necesitas tu a mi mas y mas que yo a ti',\n", + " 'me necesitas tu a mi mas y mas que yo a ti',\n", + " 'me necesitas tu a mi mas y mas que yo a ti',\n", + " 'me necesitas tu a mi mas y mas que yo a ti',\n", + " 'migra, migra, pinche migra dejame en paz',\n", + " \"people, people, let's love one another\",\n", + " 'i know we know how',\n", + " 'estaba pensando sobreviviendo con mi sister en new jersey',\n", + " 'ella me dijo que es una vida buena allá',\n", + " 'bien rica bien chévere',\n", + " 'y voy!',\n", + " 'puñeta!',\n", + " \"we'll keep well-bred, we'll stay well-fed\",\n", + " \"we'll have all sons, they will be all well hung\",\n", + " \"they'll come and play, their friends will say\",\n", + " \"your daddy's rich, your mamma's a pretty thing\",\n", + " \"that maid maria, she's really ok\",\n", + " 'vamos a jugar por la playa',\n", + " 'vamos a jugar por la playa',\n", + " 'vamos a jugar por la playa',\n", + " 'vamos a jugar por la playa',\n", + " 'vamos a jugar por la playa',\n", + " 'ay! muñeca cabrona! maricona! cabrona!',\n", + " 'ah!',\n", + " 'ah!',\n", + " 'ah!',\n", + " \"i keep gettin' friends looking like lesbians\",\n", + " \"if we get bored we'll move to california\",\n", + " \"they'll come and play, their friends will say\",\n", + " \"your daddy's rich, your mamma's a pretty thing\",\n", + " \"that maid maria, she's really ok\",\n", + " 'vamos a jugar por la playa',\n", + " 'vamos a jugar por la playa',\n", + " 'vamos a jugar por la playa',\n", + " 'vamos a jugar por la playa',\n", + " 'vamos a jugar por la playa',\n", + " 'no miré lo sabio del presente',\n", + " 'gozo para disipar, la calma es indeleble',\n", + " 'no miré lo sabio del presente',\n", + " 'gozo para disipar, la calma es indeleble',\n", + " 'no miré lo sabio del presente',\n", + " 'gozo para disipar, la calma es indeleble',\n", + " 'no miré lo sabio del presente',\n", + " 'gozo para disipar, la calma es indeleble',\n", + " 'no miré lo sabio del presente',\n", + " 'gozo para disipar, la calma es indeleble',\n", + " 'no miré lo sabio del presente',\n", + " 'gozo para disipar, la calma es indeleble',\n", + " 'no hay futuro y sé que es duro ver que no queda más',\n", + " 'no hay futuro, sé que es duro ver que no queda más',\n", + " 'es lo que siento, debo confesar',\n", + " 'ya está aquí',\n", + " 'hey, let the music shake you',\n", + " 'let the rythm take you to a place called home',\n", + " 'no hay futuro y sé que es duro ver que no queda más',\n", + " 'no hay futuro y sé que es duro ver que no queda más',\n", + " 'es lo que siento, debo confesar',\n", + " 'ya está aquí',\n", + " 'ya está aquí',\n", + " 'hey, let the music shake you',\n", + " 'let the rythm take you to a place called home',\n", + " 'hey, let the music shake you',\n", + " 'let the rythm take you to a place called home',\n", + " '(tus insultos pasados de moda, tus muecas innecesarias',\n", + " 'tu manera en que sumes la panza,... me provoca un ataque de náusea)',\n", + " 'whoo!',\n", + " 'in the beginning, the spirit of the lord',\n", + " 'oh, it moved upon the water',\n", + " 'in the beginning, the spirit of the lord',\n", + " 'oh, it moved upon the water',\n", + " \"but now he's moving\",\n", + " \"now he's moving\",\n", + " 'now he moves within my heart',\n", + " \"now he's moving\",\n", + " \"now he's moving\",\n", + " 'now he moves within my heart',\n", + " 'en el principio el espíritu de dios',\n", + " 'se movía sobre las aguas',\n", + " 'se movía sobre las aguas',\n", + " 'y más ahora está moviendo',\n", + " 'dentro de mi corazón',\n", + " 'dentro de mi corazón',\n", + " 'y más ahora está moviendo',\n", + " 'dentro de mi corazón',\n", + " 'dentro de mi corazón',\n", + " 'can you feel the spirit moving? (yes, we can)',\n", + " 'can you feel the spirit moving? (yes, we can)',\n", + " 'oh, can you feel the spirit moving? (yes, we can)',\n", + " 'oh (yes, we can)',\n", + " 'oh-oh, oh!',\n", + " 'oh, woah!',\n", + " 'oh, the spirit moves',\n", + " 'and he say...',\n", + " '...',\n", + " 'oh my golly! oh my golly!',\n", + " 'tantas veces, tantas veces dice',\n", + " 'oh my golly! oh my golly!',\n", + " 'la vida total es un porquería',\n", + " 'oh my golly! oh my golly!',\n", + " 'pero siempre dice',\n", + " 'oh my golly! oh my golly!',\n", + " 'rosa, oh oh, oh, rosa!',\n", + " 'rosa, oh oh, oh, rosa!',\n", + " 'huh huh!',\n", + " '...',\n", + " 'oh my golly! oh my golly!',\n", + " 'tantas veces, tantas veces dice',\n", + " 'oh my golly! oh my golly!',\n", + " 'la vida total es un porquería',\n", + " 'oh my golly! oh my golly!',\n", + " 'pero siempre dice',\n", + " 'oh my golly! oh my golly!',\n", + " 'rosa, oh oh, oh, rosa!',\n", + " 'rosa, oh oh, oh, rosa!',\n", + " 'huh huh!',\n", + " 'and i say, and i say, and i say',\n", + " 'and i say',\n", + " 'rosa, oh oh, ohh rosa!',\n", + " 'rosa, oh oh, ohh rosa!',\n", + " 'huh huh!']}}},\n", + " 'et': {'sentence': {'pop': {'meta': {'train_data': [\"i'm from a land called secret estonia\",\n", + " \"(nobody knows where it's at, no\",\n", + " \"nobody knows where it's at, oh\",\n", + " \"nobody knows where it's at, no)\",\n", + " \"i'm from a land called secret estonia\",\n", + " \"(nobody knows where it's at, no\",\n", + " \"nobody knows where it's at, oh\",\n", + " \"nobody knows where it's at, no)\",\n", + " 'welcome to the freakshow (call in the night)',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the...',\n", + " 'welcome to the... (will you survive?)',\n", + " 'welcome to the freakshow',\n", + " 'wеlcome to the freakshow',\n", + " \"i'm from a land callеd secret estonia\",\n", + " \"(nobody knows where it's at, no\",\n", + " \"nobody knows where it's at, oh\",\n", + " \"nobody knows where it's at, no)\",\n", + " \"i'm from a land called secret estonia\",\n", + " \"(nobody knows where it's at, no\",\n", + " \"nobody knows where it's at, oh\",\n", + " \"nobody knows where it's at, no)\",\n", + " 'welcome to the freakshow (call in the night)',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the...',\n", + " 'welcome to the... (will you survive?)',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the freakshow',\n", + " 'põdral maja metsa sees',\n", + " 'väiksest aknast välja vaatab',\n", + " 'jänes jookseb kõigest väest',\n", + " 'lävel seisma jääb',\n", + " 'kopp-kopp lahti tee',\n", + " 'metsas kuri jahimees',\n", + " 'jänes tuppa tule sa',\n", + " 'anna käppa ka',\n", + " '(drop!)',\n", + " 'welcome to the freakshow (call in the night)',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the...',\n", + " 'welcome to the... (will you survive?)',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the freakshow (call in the night)',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the...',\n", + " 'welcome to the... (will you survive?)',\n", + " 'welcome to the freakshow',\n", + " 'welcome to the freakshow',\n", + " 'still believe in you',\n", + " 'still believe in your promise',\n", + " 'kootta ame ga kimi ni furisosogu...',\n", + " 'miss you',\n", + " 'how could we be apart?',\n", + " 'in that place, what happened to you?',\n", + " 'i can imagine, can imagine well',\n", + " 'kitai suru furi o shite ugokanu yubisaki',\n", + " 'ki wa shinai tayori to shittemo',\n", + " 'still believe in you',\n", + " 'still believe in your promise',\n", + " 'mada ano kotoba o matsu no',\n", + " \"can't believe in you at all\",\n", + " 'but, what do i want?',\n", + " 'mata ame ga furidashita',\n", + " \"it's you who taught me to love\",\n", + " \"but it's wrong. that's a kind of curse\",\n", + " \"i can't break it, can't break it well\",\n", + " 'tsugihagi no firumu de ushinatta sutoorii wa',\n", + " 'omoidasu tabi surikireteiku',\n", + " 'still calling you',\n", + " 'still calling you in my head',\n", + " 'donna hitokoto datte ii no',\n", + " 'now you are fading out',\n", + " \"don't go away from me\",\n", + " 'ame ga kudakeru oto ga hibiku',\n", + " 'kimi no koe ga kieru',\n", + " \"now i'm still loving you\",\n", + " 'wanna see you again',\n", + " 'mou ame ga yamanakutemo',\n", + " \"loving you, i'm still loving you\",\n", + " 'still believe in you, still believe in you',\n", + " 'phir le aaya dil majboor kya keeje',\n", + " 'raas na aaya rehna door kya keeje',\n", + " 'dil keh raha use maqammal kar bhi aao',\n", + " 'wo jo adhoori si baat baaki hai',\n", + " 'wo jo adhoori si yaad baaki hai',\n", + " 'wo jo adhoori si yaad baaki hai',\n", + " 'karte hain hum aaj qabool kya keeje',\n", + " 'ho gayi thi jo humse bhool kya keeje',\n", + " 'dil keh raha use mayassar kar bhi aao',\n", + " 'wo jo dabi si aas baaki hai',\n", + " 'wo jo dabi si aanch baaki hai',\n", + " 'wo jo dabi si aanch baaki hai',\n", + " 'wo jo dabi si... aanch baaki hai',\n", + " 'kismat ko hai yeh manzoor kya keeje',\n", + " 'milte rahe hum badastoor kya keeje',\n", + " 'dil keh raha hai use musalsal kar bhi aao',\n", + " 'wo jo ruki si raah baaki hai',\n", + " 'wo jo ruki si chaah baaki hai',\n", + " 'wo jo ruki si chaah baaki hai',\n", + " 'wo jo ruki si chaah baaki hai',\n", + " 'be charming, be loved, be chaalu, be crazy, be happy, be in love be barfi!',\n", + " 'pruumptje auge staunde boi, leva stahn dela veenum bronenbezhtebahh. ala fundegahh, ama arzhklahh, ala olgevezh neda ist gedau doin. smolebas, pruzhnaveeda pruumptje alabes oi, oi, oi! pruzhnaveeda rohm nebestahh. robesta indegedan stahn',\n", + " 'no one understood him no one understood him at all (i understood him)',\n", + " 'inna keesta binhol stan istanna boshne bollabista bohlla inna bolstamist brumistavaston olgesty boshtenbolest estinna lostinmist motsnivolsha ozhgalah',\n", + " 'no one comprehended no one comprehended at all',\n", + " 'brrrnigaiy moshdebazne bohldepebahdne voshnemahdne inmahnne bohzhdul mohnezhdevozht mohneshdepulcher ohbdestulul oshdne blol oshgala ohgevai olgevezh olgevezh',\n", + " 'no one understood him no one understood him at all veeshtehne krauden de vazh veeshtehn lauden de taut',\n", + " 'hib blauud und mistdowht jumgaider destaht',\n", + " \"bistragavohhnt ... (he's shouting)... (repeats the first part?)... (then he shouts again, ozhnaveeda?)\",\n", + " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", + " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", + " 'raat bhar dhuaan chale',\n", + " 'jaanoon na jaanoon na jaanoon na sakhi re',\n", + " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", + " 'jiya jale jo jale',\n", + " 'dekhte hain tan mera mann mein chubhti hai nazar',\n", + " 'dekhte hain tan mera mann mein chubhti hai nazar',\n", + " 'honth sil jaate unke naram honthon se magar',\n", + " 'ginti rehti hoon main apni karvaton ke silsile',\n", + " 'kya karoon kaise kahoon raat kab kaise dhale',\n", + " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", + " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", + " 'raat bhar dhuaan chale',\n", + " 'jaanoon na jaanoon na jaanoon na sakhi re',\n", + " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", + " 'jiya jale jo jale',\n", + " 'ang ang mein jalti hai dard ki chingaariyaan',\n", + " 'masle phoolon ki mehek mein titliyon ki kyaariyaan',\n", + " 'raat bhar bechaari mehndi pisti hai peiron taley',\n", + " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", + " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", + " 'raat bhar dhuaan chale',\n", + " 'jaanoon na jaanoon na jaanoon na sakhi re',\n", + " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", + " 'jiya jale jo jale',\n", + " 'jiya jale',\n", + " 'jiya jale',\n", + " 'version -2',\n", + " 'jiya jale, jaan jale - 2',\n", + " 'nainon tale dhuaan chale dhuaan chale',\n", + " '(jiya jale, jaan jale)',\n", + " 'nainon tale dhuaan chale dhuaan chale',\n", + " 'raat bhar dhuaan chale',\n", + " 'jaanoon na jaanoon na jaanoon na sakhi ri) - 2',\n", + " 'jiya jale, jaan jale',\n", + " 'dekhte hai tan mera mann mein chubhti hai nazar - 2',\n", + " 'hont sil jaate unke narm honton se magar',\n", + " 'ginti rehti hoon main apni karvaton ke silsile',\n", + " 'kya karoon, kaise kahoon raat kab kaise dhale',\n", + " '(jiya jale, jaan jale',\n", + " 'nainon tale dhuaan chale dhuaan chale',\n", + " 'raat bhar dhuaan chale',\n", + " 'jaanoon na jaanoon na jaanoon na sakhi ri) - 2',\n", + " 'jiya jale, jaan jale',\n", + " 'ang ang mein jalti hai dard ki chingaariyaan',\n", + " 'masle phoolon ki mahek mein titliyon ki kyaariyaan',\n", + " 'raat bhar bechaari mehndi pisti hai pairon tale',\n", + " 'kya karoon, kaise kahoon raat kab kaise dhale',\n", + " 'ends',\n", + " 'jiya jale, jaan jale',\n", + " 'nainon tale dhuaan chale dhuaan chale',\n", + " 'dhuaan chale dhuaan chale',\n", + " 'raat bhar dhuaan chale',\n", + " '(dhuaan chale)',\n", + " 'jaanoon na jaanoon na jaanoon na sakhi ri',\n", + " 'jiya jale, jaan jale',\n", + " 'nainon tale dhuaan chale dhuaan chale',\n", + " 'raat bhar dhuaan chale',\n", + " 'jaanoon na jaanoon na jaanoon na sakhi ri',\n", + " 'sen mash ver kos',\n", + " 'sen mash ver kos',\n", + " 'sen mash ver kos',\n", + " 'sen mash ver kos',\n", + " 'kore novortso',\n", + " 'lofer nyoroyo',\n", + " 'aana vor falnaa',\n", + " 'faarla alu farlafa',\n", + " 'faarala alu kas anesara',\n", + " 'shtah ara fur',\n", + " 'san mas veh for',\n", + " 'san mas veh for',\n", + " 'san mas veh for',\n", + " 'san mas veh for far',\n", + " 'varva alu valnaa',\n", + " 'sarala alu fa nofer',\n", + " 'sarala alu kas vaaraa os',\n", + " 'shtah ara fur',\n", + " 'san mas veh for',\n", + " 'san mas veh for',\n", + " 'san mas veh for',\n", + " 'san mas veh for far',\n", + " '(zara zara bahekta hai, mahekta hai',\n", + " 'aaj to mera tan badan, main pyaasi hoon',\n", + " 'mujhe bhar le apni baahon mein) - 2',\n", + " 'hai meri kasam tujhko sanam, door kahin na jaa',\n", + " 'yeh doori kehti hai paas mere aaja re',\n", + " 'yunhi baras baras kaali ghata barse',\n", + " 'hum yaar bheeg jaaye is chaahat ki baarish mein',\n", + " 'meri khuli khuli laton ko suljhaaye',\n", + " 'tu apni ungliyon se main to hoon isi khwaahish mein',\n", + " 'sardi ki raaton mein hum soye rahe ek chaadar mein',\n", + " 'hum dono tanha ho, na koi bhi rahe is ghar mein',\n", + " 'zara zara bahekta hai, mahekta hai',\n", + " 'aaj to mera tan badan, main pyaasi hoon',\n", + " 'mujhe bhar le apni baahon mein',\n", + " 'aaja re aa re',\n", + " 'tadpaaye mujhe teri sabhi baatein',\n", + " 'ek baar ae deewane jhootha hi sahi pyaar to kar',\n", + " 'main bhooli nahin haseen mulaaqaatein',\n", + " 'bechain karke mujhko mujhse yun na pher nazar',\n", + " 'roothega na mujhse, mere saathiya yeh vaada kar',\n", + " 'tere bina mushkil hai jeena mera mere dil mein',\n", + " '(zara zara bahekta hai, mahekta hai',\n", + " 'aaj to mera tan badan, main pyaasi hoon',\n", + " 'mujhe bhar le apni baahon mein',\n", + " 'hai meri kasam tujhko sanam, door kahin na jaa',\n", + " 'yeh doori kehti hai paas mere aaja re',\n", + " 'aaja re, aaja re, aaja re',\n", + " 'fbi, cia, emi, tdk',\n", + " \"it's the n-n-n-n-n-n-new song\",\n", + " 'kgb, pot, bmg, mit',\n", + " \"it's the n-n-n-n-n-n-new song\",\n", + " 'cuz this is d-a-t-a. r-o-c-ks',\n", + " 'n-n-n-n-n-n-new song',\n", + " \"it's a s-s-s-s-s-s-s-s-song\",\n", + " 'i said, cuz this is d-a-t-a, r-o-c-ks',\n", + " 'n-n-n-n-n-n-new song',\n", + " \"it's a s-s-s-s-s-s-s-s-song\",\n", + " 'fbi, cia, emi, tdk',\n", + " \"it's the n-n-n-n-n-n-new song\",\n", + " 'kgb, pot, bmg, mit',\n", + " \"it's the n-n-n-n-n-n-new song\",\n", + " 'cuz this is d-a-t-a. r-o-c-ks',\n", + " 'n-n-n-n-n-n-new song',\n", + " \"it's a s-s-s-s-s-s-s-s-song\",\n", + " 'i said, cuz this is d-a-t-a, r-o-c-ks',\n", + " 'n-n-n-n-n-n-new song',\n", + " \"it's a s-s-s-s-s-s-s-s-song\",\n", + " 'aala re aala simmba aala!',\n", + " 'cha cha cha k’chikkum',\n", + " 'cha cha cha k’chikkum',\n", + " 'cha cha cha k’cha… (x2)',\n", + " 'aye… simmba!',\n", + " 'machinga machinga dhol abhi bajinga',\n", + " 'dhina dhin dhaap dekho aaj raja nachinga',\n", + " 'nachinga nachinga aaj raja nachinga',\n", + " 'machinga machinga dhol abhi bajinga',\n", + " 'dhina dhin dhaap dekho aaj raja nachinga',\n", + " 'aaya tera aaya raja',\n", + " 'naach mere saath aaja',\n", + " 'bhool ke tu baaju waali khidki ki',\n", + " 'lene aaya lene aaya simmba teri firki',\n", + " 'rak tiki rak tiki tiki tiki…',\n", + " 'lene aaya lene aaya simmba teri firki',\n", + " 'rak tiki rak tiki tiki tiki…',\n", + " 'melody!',\n", + " 'ek dooni do, do dooni chaar',\n", + " 'raja naachega saara nachega bazaar',\n", + " 'teen tikke nau, nau nukke marah*',\n", + " 'saare mohalle mein sabka hai pyara',\n", + " 'aaya tera aaya raja',\n", + " 'naach mere saath aaja',\n", + " 'khol ke tu baaju waali khidki ki',\n", + " 'pa pa pa..',\n", + " 'rat ‘k tiki rak tiki…',\n", + " 'lene aaya lene aaya simmba teri firki',\n", + " 'rat ‘k tiki rak tiki…',\n", + " 'pa pa pa..',\n", + " 'aala re aala simmba aala!',\n", + " '* catch your dreams',\n", + " 'uhn duhk ae o la ga sae sahng ae soh ri chyuh',\n", + " 'ki wuht dun jahk eun bah raem eul',\n", + " 'nan nae ga ees neun goht uh de la hae do',\n", + " 'young won hee bi chwuh jool',\n", + " \"i'll be your angel\",\n", + " 'ji chin kil eul cham ah ga myun da ga o la eun nal chuh rum',\n", + " 'nae mahm do nuh ei ga seum ahn ei seul peum uhn',\n", + " 'jen ga moh doo eej kil hahm sahng ki do hae',\n", + " 'juhl mahng eul gam choo ji moht hae',\n", + " 'go gae sook in nuh ei so kkeu tae',\n", + " 'juhn hae jool he mahng eul chah ah',\n", + " 'close your eyes',\n", + " 'nae kkum eul chaj ah ga ah peum ae da ga ga',\n", + " 'soh mahng eul ji ki go shi puh',\n", + " 'joo moo neul da meun beet',\n", + " 'ah moo do mohl rae kkeut ups ee bi chwuh jool',\n", + " \"i'll be your angel\",\n", + " 'hwan hahn mi soh ma juh muhm choom',\n", + " 'shi gan sohk ae suh',\n", + " 'o neun gun dan ji on ja la neun hyun shil go gae',\n", + " 'ei bah neul na nool na reul ki uhk hae',\n", + " 'shi go eul ahn kin sae sahng gwah',\n", + " 'dduh na buh rin sarang kka ji do',\n", + " 'soom shi myuh sahl ji ahn do rohk',\n", + " '* repeat',\n", + " '(you are gonna be free)',\n", + " 'bah rahm ae shil uh gal nuhl whi hahn cho bok eul',\n", + " '(sarang eul ) noon tul myun bol soo ees do rohk uhn jae na',\n", + " 'geu kyu tae gul uh ro eul gae',\n", + " '(nuh mah neul saeng gak hae) nae so kil da eul soo ees gae',\n", + " 'geu uh dduhn mi no jo chah do',\n", + " 'nam eul soo ups gae nae kkum eul chaj ah ga',\n", + " 'ah soo ae da ga ga soh mahng eul ji ki go shi puh',\n", + " 'joo moo neul da meun beet',\n", + " 'ah moo do mohl rae kkeut ups ee bi chwuh jool',\n", + " \"i'll be your angel\",\n", + " 'fakerni ha aatbak',\n", + " 'wa loomak, wa hasbak',\n", + " 'fakerni ha aatbak',\n", + " 'wa loomak, wa hasbak',\n", + " \"bokra el shoo' yanadik\",\n", + " 'wa shoufak',\n", + " 'maaya',\n", + " 'w totlob, ridaya',\n", + " 'bokra tshoof baaeinek ya habibi',\n", + " \"law faker ahsasi laaba foo' li nafsak foo'\",\n", + " \"bokra el baad y aazeb albak wit dboob min el shoo'\",\n", + " \"law faker ahsasi laaba foo' li nafsak foo'\",\n", + " \"bokra el baad y aazeb albak wit dboob min el shoo'\",\n", + " 'wa shoufak',\n", + " 'maaya',\n", + " 'w totlob, ridaya',\n", + " 'bokra tshoof baaeinek ya habibi',\n", + " 'lama ha teshar baad layali w albak dayeb nar',\n", + " 'ha thess bkol elli garalli wet gilli mehtar',\n", + " 'lama ha teshar baad layali w albak dayeb nar',\n", + " 'ha thess bkol elli garalli wet gilli mehtar',\n", + " 'wa shoufak',\n", + " 'maaya',\n", + " 'w totlob, ridaya',\n", + " 'bokra tshoof baaeinek ya habibi',\n", + " 'fakerni ha aatbak',\n", + " 'wa loomak, wa hasbak',\n", + " 'fakerni ha aatbak',\n", + " 'wa loomak, wa hasbak',\n", + " \"bokra el shoo' yanadik\",\n", + " 'wa shoufak',\n", + " 'maaya',\n", + " 'w totlob, ridaya',\n", + " 'bokra tshoof baaeinek ya habibi',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too',\n", + " 'and you want me too, and you want me too',\n", + " 'and you want me too, and you want me too',\n", + " 'and you want me, want me...',\n", + " 'i want you and you want me too',\n", + " 'i want you want you want you want',\n", + " 'too',\n", + " 'too (too)',\n", + " 'too',\n", + " 'i want you and you want me too too too',\n", + " 'too',\n", + " 'i want you and you want me',\n", + " 'i want you you you you you you you you you you you',\n", + " 'i want you you you you you you you you you you you',\n", + " 'i - want - you, i - want - you, i - want',\n", + " 'i - want - you, i - want - you',\n", + " 'i want you and you want me too',\n", + " 'i want you and you want me too (and you want me)',\n", + " 'i want you and you want me too (and you want me)',\n", + " 'i want you and you want me too (and you want me)',\n", + " 'i want you and you want me too',\n", + " 'i want you want you want',\n", + " 'too (brrrap)',\n", + " 'too (too)',\n", + " 'too',\n", + " 'i want you and you want me too too too',\n", + " 'too',\n", + " 'i want you and you want me too',\n", + " 'i want you you you you you you you you you you you',\n", + " 'i want you you you you you you you you you you you',\n", + " 'i - want - you, i - want - you, i - want',\n", + " 'i - want - you, i - i - want - you',\n", + " 'i want you',\n", + " \"mat'ouleesh abadan maho inti saybani saat\",\n", + " 'wala yom mana mehtaglik konti shaghlaki hagat',\n", + " \"aalashen kan hobak shaglitne kol el ow'at\",\n", + " \"wana kol ma a'arablik santi tibaad masafat\",\n", + " 'gawibni skti leh?',\n", + " 'ana kont aamelt eih?',\n", + " 'law mertah fi el baad ya habibi',\n", + " 'oli ezzay ansak',\n", + " 'gawibni skti leh?',\n", + " 'ana kont aamelt eih?',\n", + " 'law mertah fi el baad ya habibi',\n", + " 'oli ezzay ansak',\n", + " \"shaklak mesh fakir ana fakira lehefiti bi lo'ak\",\n", + " \"law oultili tab shofik bokrah tile'eeni sab'ak\",\n", + " 'w keman bil marra wa aala fekra mesh aarfa ansak',\n", + " \"ma ana koli ma dowar aala fakra bala'eeha maaak\",\n", + " 'gawibni skti leh?',\n", + " 'ana kont aamelt eih?',\n", + " 'law mertah fi el baad ya habibi',\n", + " 'oli ezzay ansak',\n", + " 'gawibni skti leh?',\n", + " 'ana kont aamelt eih?',\n", + " 'law mertah fi el baad ya habibi',\n", + " 'oli ezzay ansak',\n", + " 'gawibni skti leh?',\n", + " 'ana kont aamelt eih?',\n", + " 'law mertah fi el baad ya habibi',\n", + " 'oli ezzay ansak',\n", + " 'gawibni skti leh?',\n", + " 'ana kont aamelt eih?',\n", + " 'law mertah fi el baad ya habibi',\n", + " 'oli ezzay ansak',\n", + " \"no i didn't wanna let it go\",\n", + " 'atte atarimae da to...',\n", + " 'donna ni furukutemo',\n", + " \"it's my sweet home (taisetsu na mono)\",\n", + " 'kawari nado doko ni mo nai',\n", + " 'toki ga sugite kawarihateta kedo',\n", + " 'kaze ga fuku yasashiku tsutsumu',\n", + " 'nagusameru you ni...',\n", + " '* good bye... kisetsu kawattemo',\n", + " 'mata sugu ni kuru kedo',\n", + " 'ano keshiki wa mou mirenai mama...',\n", + " 'omoide bakari ga utsuru',\n", + " 'arubamu wo mekuru tabi ni',\n", + " 'genjitsu ga tsurakutemo',\n", + " 'gomakasanai you ni',\n", + " 'jibun no ashi de tateru you ni',\n", + " '\"mae wo mite susumu n\\' da\" to',\n", + " 'kazoekirenai kurai i told myself...',\n", + " 'kaze ga fuku \"daijoubu da yo...\" to',\n", + " 'sasayaku you ni...',\n", + " '* repeat',\n", + " 'donna toki mo',\n", + " 'you were there for me',\n", + " 'so i found my dream',\n", + " 'i really wanna thank you',\n", + " \"i'm really gonna miss you\",\n", + " 'oh? my sweet home',\n", + " 'kisetsu kawattemo',\n", + " 'mata sugu ni kuru kedo',\n", + " 'ano keshiki wa mou mirenai mama...',\n", + " 'omoide bakari ga utsuru',\n", + " 'sukoshi zutsu i gotta let it go',\n", + " 'let it go yeah',\n", + " 'kisetsu kawattemo',\n", + " 'mata sugu ni kuru kedo',\n", + " 'ano keshiki wa mou mirenai mama...',\n", + " 'omoide bakari ga utsuru',\n", + " 'but it will always be my sweet home',\n", + " 'tere bina zindagi se koi',\n", + " 'shikwa to nahin',\n", + " 'shikwa nahin shikwa nahin',\n", + " 'shikwa nahin',\n", + " 'tere bina zindagi bhi lekin',\n", + " 'zindagi to nahin',\n", + " 'zindagi nahin zindagi nahin',\n", + " 'zindagi nahin',\n", + " 'tere bina zindagi se...',\n", + " 'kaash aisa ho tere kadmo se',\n", + " 'chun ke manzil chale',\n", + " 'aur kahii door kahii',\n", + " 'kaash aisa ho tere kadmo se',\n", + " 'chun ke manzil chale',\n", + " 'aur kahii door kahii',\n", + " 'tum agar saath ho',\n", + " 'manzilo ki kami to nahii',\n", + " 'tere bina zindagi se...',\n", + " 'jee mein aata hai',\n", + " 'tere daaman mein',\n", + " 'sar jhuka ke hum',\n", + " 'rothe rahee rothe rahee',\n", + " 'jee mein aata hai',\n", + " 'tere daaman mein',\n", + " 'sar jhuka ke hum',\n", + " 'rothe rahe rothe rahee',\n", + " 'teri bhi aankho mein',\n", + " 'aansuon ki nami to nahii',\n", + " 'tere bina zindagi se...',\n", + " 'tum jo keh do to',\n", + " 'aaj ki raat',\n", + " 'chaand doobega nahii',\n", + " 'raath koo rok loo',\n", + " 'tum jo keh do to',\n", + " 'aaj ki raat',\n", + " 'chaand doobega nahii',\n", + " 'raath koo rok loo',\n", + " 'raath ki baath hai',\n", + " 'aur zindagi baaki to nahii',\n", + " 'tere bina zindagi se...',\n", + " 'yo.. poya peela udaatha',\n", + " 'yei.. venna reela suthadha',\n", + " 'yo.. poyah peela udaatha',\n", + " 'yei.. venna reela suthadha',\n", + " 'peela peela peela peela',\n", + " 'peela udaatha',\n", + " 'reela reela reela reela',\n", + " 'reela suthatha',\n", + " 'peela peela peela peela',\n", + " 'peela udaatha',\n", + " 'vena vena venave vena',\n", + " 'scena podatha..',\n", + " 'dai romeo',\n", + " 'neeyum naanum jodi yo',\n", + " 'vare vaava vare vaava',\n", + " 'my maamiyo en babies-ku mumm yo',\n", + " 'vare vaava vare vaava',\n", + " 'antha nilava irakki',\n", + " 'alva surukki naan thaaren',\n", + " 'antha megatha madakki',\n", + " 'kayila adichitten paaren',\n", + " 'peela peela peela peela',\n", + " 'peela udaatha',\n", + " 'reela reela reela reela',\n", + " 'reela suthatha',\n", + " 'peela peela peela peela',\n", + " 'peela udaatha',\n", + " 'vena vena venave vena',\n", + " 'scena podatha..',\n", + " 'nirma sundariye',\n", + " 'poppins pal azhage',\n", + " 'ujala iduppathaan ulukuriye',\n", + " 'lifebouy arokiyame',\n", + " 'boostu energiye',\n", + " 'goldspot nenjukkulla izukkuriye',\n", + " 'vaa vaa en rasnave, i love you',\n", + " 'konjam pakkathale neeyum vantha',\n", + " 'dhagam theerudhe',\n", + " 'dynora raasave love you too',\n", + " 'un kawasaki bike-u seatil',\n", + " 'ukkarathaan kathurukken',\n", + " 'aaja aaja',\n", + " 'aaja aa aa aaja',\n", + " 'aja aaja aaja',\n", + " 'honey attam podalam',\n", + " 'peela peela peela peela',\n", + " 'peela udaatha',\n", + " 'vena vena venave vena',\n", + " 'scena podatha..',\n", + " 'dai romeo',\n", + " 'neeyum naanum jodi yo',\n", + " 'vare vaava vare vaava',\n", + " 'my maamiyo en babies-ku mumm yo',\n", + " 'vare vaava vare vaava',\n", + " 'antha nilava irakki',\n", + " 'alva surukki naan thaaren',\n", + " 'antha megatha madakki',\n", + " 'kayila adichitten paaren',\n", + " 'appa kitta sollama vaa',\n", + " 'attam podalaam',\n", + " 'amma kitta sollama va',\n", + " 'appeet agalaam',\n", + " 'appa kitta sollama va',\n", + " 'attam podalaam',\n", + " 'amma kitta sollama va',\n", + " 'abscond agalaam',\n", + " 'peela peela peela peela',\n", + " 'peela udaatha',\n", + " 'reela reela reela reela',\n", + " 'reela suthatha',\n", + " 'peela peela peela peela',\n", + " 'peela udaatha',\n", + " 'vena vena venave vena',\n", + " 'scena podatha..',\n", + " 'my roots my roots my roots my roots my roots on fire',\n", + " 'my roots my roots my roots my roots my roots on fire',\n", + " 'my roots my roots my roots my roots my roots on fire',\n", + " 'my roots my roots my roots my roots my roots on fire',\n", + " 'are ruk ja are thum ja',\n", + " 'are ruk ja re bandhe are thum ja re bandhe ki kudrat has padegi ho - 3',\n", + " 'are neendein hai jakhmi',\n", + " 'are sapne hai bhooke',\n", + " 'ki karvat phat padegi ho',\n", + " 'are ruk ja re bandhe are thum ja re bandhe ki kudrat has padegi ho - 2',\n", + " 'are mandir ye chup hai are masjid ye gumsum',\n", + " 'ibadat thak padegi ho',\n", + " 'samay ki lal aandhi kabristan ke raaste',\n", + " 'are latpath chalegi ho',\n", + " 'are ruk ja re bandhe are thum ja re bandhe ki kudrat has padegi ho - 2',\n", + " 'kise kafir kahega kise kayar kahega',\n", + " 'teri kab tak chalegi ho',\n", + " 'kise kafir kahega kise kayar kahega',\n", + " 'teri kab tak chalegi ho',\n", + " 'are ruk ja re bandhe are thum ja re bandhe ki kudrat has padegi ho - 2',\n", + " 'are mandir ye chup hai are masjid hai gumsum',\n", + " 'ibadat thak padegi ho',\n", + " 'samay ki lal aandhi kabristan ye raste',\n", + " 'are latpath chalegi ho',\n", + " 'are ruk ja re bandhe are thum ja re bandhe ki kudrat has padegi ho - 2',\n", + " 'are neendein hai jakhmi are sapne hai bhooke',\n", + " 'ki karvat phat padegi ho',\n", + " 'yeh andhi chot teri kabhi ki sukh jaati',\n", + " 'magar ab pak chalegi',\n", + " 'koit kerkib',\n", + " 'pдaw peaseb',\n", + " 'tagane waenlane',\n", + " 'sigenego terwis',\n", + " 'sest jumal kuuleb',\n", + " 'marja marja markeb',\n", + " 'taganego wastased',\n", + " 'marja marja markeb',\n", + " 'taganego wastased',\n", + " 'siis ma sortsin so sooned',\n", + " 'siis ma waalin so woolmed',\n", + " 'sigenego terwis',\n", + " 'marja marja tagane',\n", + " 'marjy waenlane',\n", + " 'nijamellam maranthu pochu penne unnale',\n", + " 'ninaivellam kanava pochu penne unnale',\n", + " 'nirai matham nilaivai kaanum',\n", + " 'pennae unnale pennae unnale',\n", + " 'nijamellam maranthu pochu penne unnale',\n", + " 'ninaivellam kanava pochu penne unnale',\n", + " 'nirai matham nilaivai kaanum',\n", + " 'pennae unale pennae unnale',\n", + " 'hey paakaamal paakathe penne pothum',\n", + " 'baarangal thaangathe penne pothum',\n", + " 'bothaigal thangaathu penne pothum',\n", + " 'penne pothum',\n", + " 'go!',\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, dont give a heck about the witch\",\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, don't give a heck about the witch\",\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, dont give a heck about the witch\",\n", + " 'd and a!',\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, dont give a heck about the witch\",\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, don't give a heck about the witch\",\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, dont give a heck about the witch\",\n", + " 'oorellam onnaga seruthamma',\n", + " 'naan mattum en orama',\n", + " 'yethetho nenjukkul vechuruka nan barama',\n", + " 'koodatha ennangal kooduthamma',\n", + " 'thaangaathu en koodu ma',\n", + " 'pattalum kettalum ketkaathuma en perama',\n", + " 'oh vitil poochi en vilaka suduthu',\n", + " 'vevaram puriyama velakum azhuthu',\n", + " 'nyaa nyaaa...',\n", + " 'en paarkaamal paakatha penne pothum',\n", + " 'baarangal thaangathu penne pothum',\n", + " 'bothaigal tharathe penne pothum',\n", + " 'nijamellam maranthu pochu',\n", + " 'ninaivellam kanava pochu',\n", + " 'nirai matham nilaivai kaanum',\n", + " 'penne unnale!!',\n", + " 'go!',\n", + " '(nyaa nyaa nyaa nyaa nyaa nyaa aaah...)',\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, dont give a heck about the witch\",\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, don't give a heck about the witch\",\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, dont give a heck about the witch\",\n", + " 'd and a!',\n", + " '(naa naa naa naa naa naa aaah...)',\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, dont give a heck about the witch\",\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, don't give a heck about the witch\",\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, dont give a heck about the witch\",\n", + " 'nyaaaa... nyaaaa.nyaa nyaa nyaa nyaa',\n", + " 'put your fucking hands up',\n", + " \"don't give a fuck about the witch\",\n", + " \"don't give a, dont give a fuck about the witch\",\n", + " \"don't give a heck about the witch\",\n", + " \"don't give a, dont give a fuck about the witch\",\n", + " 'ratsatsaa ja ripidabi dilla',\n", + " 'beritstan dillan dellan doo',\n", + " 'a baribbattaa baribbariiba',\n", + " 'ribiribi distan dellan doo',\n", + " 'ja barillas dillan deia dooa',\n", + " 'daba daba daba daba daba duvja vuu',\n", + " 'baristal dillas dillan duu ba daga',\n", + " 'daiga daida duu duu deiga dou',\n", + " 'yo!',\n", + " 'ratsatsaa ja ripidabi dilla',\n", + " 'beritstan dillan dellan doo',\n", + " 'a baribbattaa baribbariiba',\n", + " 'ribiribi distan dellan doo',\n", + " 'ja barillas dillan deia dooa',\n", + " 'ja barillas dillan deia dooa',\n", + " 'ja barillas dillan',\n", + " '-rillas dillan',\n", + " '-rillas-rillas-ri-ri-ri-ri-ri',\n", + " 'ratsatsaa ja ripidabi dilla',\n", + " 'beritstan dillan dellan doo',\n", + " 'a baribbattaa baribbariiba',\n", + " 'ribiribi distan dellan doo',\n", + " 'ja barillas dillan deia dooa',\n", + " 'daba daba daba daba daba duvja vuu',\n", + " 'baristal dillas dillan duu ba daga',\n", + " 'daiga daida duu duu deiga dou',\n", + " 'hra-tsa-tsa, ia ripi-dapi dilla barits tad dillan deh lando',\n", + " 'aba rippadta parip parii ba ribi, ribi, ribiriz den teahlando',\n", + " 'la barillaz dillan deiallou ara va reve reve revydyv dyvjavuo',\n", + " \"bariz dah l'llavz dei lando dabaoke dagae gadae due due dei ia do\",\n", + " 'hra-tsa-tsa, ia ripi-dapi dilla barits tad dillan deh lando',\n", + " 'aba rippadta parip parii ba ribi, ribi, ribiriz den teahlando',\n", + " 'la barillaz dillan deiallou ara va reve reve revydyv dyvjavuo',\n", + " \"bariz dah l'llavz dei lando dabaoke dagae gadae due due dei ia do\",\n", + " 'yeah',\n", + " 'yeaaaaah...',\n", + " 'yeah',\n", + " '3: 30 am',\n", + " 'yeah',\n", + " 'dekhe the jo sapne, aaj unke paas hu',\n", + " 'aankho me chamak hai, pahle the aansu',\n", + " 'baaki sab wahi hai saala kuchh nahi badla...',\n", + " 'haa pahle main aam tha, aaj thoda khaas hu...',\n", + " 'raaz hu ek aisa jise sab janna chaahe',\n", + " 'suni apne baare me kitni afwahe...',\n", + " 'baate karne waalo ka kaam baate karna',\n", + " 'karte hain kuchh baaki dete bas salaheeeee...',\n", + " 'pen mere haath me',\n", + " 'zindagi hai kaali tab bhi likhu kaali raat me',\n", + " 'top pe khada akela koi nahi saath me...',\n", + " 'jalne waale jalte lekin rahte aukat me',\n", + " 'yeah...',\n", + " 'meri lagan... meri mehnat aur upar waale ka karam...',\n", + " 'paise kamaye maine sacchai batake...',\n", + " 'jise dikkat aake pakde mera',\n", + " 'unhe bakwaas karne do, jo bakwaas karte hain...',\n", + " 'khaali bartan hi jyada awaaz karte hain',\n", + " 'main note ginta hu, wo haath malte hain',\n", + " 'kheloge jo aag se to haath jalte hain',\n", + " 'kamyabi aur jalan saath saath chalte hain...',\n", + " 'tabhi log yaha lekar hathiyaar chalte hain',\n", + " 'par main unn chutiyo me se nahi',\n", + " 'kyunki jinka dimaag nahi chalta',\n", + " 'unke haath chalte hain...',\n", + " 'mere saath chalte hain',\n", + " 'mujhse pyaar karte hain... mere fan, meri jaan, meri kaum, meri shaan',\n", + " 'jaake puchho kisi se bhi galiyon me hai sambhaali kisne, hindustani hiphop ki kamaan badshaah... badshaah... hai bas ek hi naam',\n", + " 'badshaah... badshaah ka bas ek hi kaam likhna aur likhte hi jaana...',\n", + " 'chalu aage aage aur mere pichhe pichhe hain zamana...',\n", + " 'sabki nazre hain mujhpe, ab kya karega yeh?',\n", + " 'ek flop gaana aate hi marega yeh...',\n", + " 'bla bla... bak bak sun ke main gaya thak...',\n", + " 'mere paas unhe dene ke liye nahi hai fuck... fackar hai mujhe bas apni kala pe',\n", + " 'main hu asli... baaki saare nakli yaha pe',\n", + " 'maine masli hain naslo ki nasle, nakli rap roki rap jinke nahi hai bas me yaha pe bas...',\n", + " 'teri phatne hi waali hai...',\n", + " 'sabko pata hai tu jaali hai, chemist se lele bete nind ki goliyaa... kuchh hi dino me meri album aane waali hai... album aane waali hai... meri album aane waali hai... chemist se lele bete nind ki goliyaa... kuchh hi dino me meri album aane waali hai...',\n", + " 'ish yo boy... mood is off... original never ends... original never dies...',\n", + " 'teri phatne hi waali hai...',\n", + " '...the end...',\n", + " '...the end...',\n", + " 'ore manwa tu to baawra hai',\n", + " 'tu hi jaane tu kya sochta hai',\n", + " 'tu hi jaane tu kya sochta hai, baaware',\n", + " 'kyun dikhaye sapne tu sote-jaagte?',\n", + " 'jo barsein sapne boond-boond',\n", + " 'nainon ko moond-moond',\n", + " '(nainon ko moond-moond)',\n", + " 'jo barsein sapne boond-boond',\n", + " 'nainon ko moond-moond',\n", + " 'kaise main chaloon, dekh na sakoon anjaane raaste',\n", + " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara',\n", + " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara',\n", + " 'dheeme bole koi iktara-iktara, dheeme bole koi iktara',\n", + " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara',\n", + " 'sun rahi hoon sudh-budh kho ke, koi main kahani',\n", + " 'puri kahani hai kya kisi hai pata',\n", + " 'main to kisiki hoke ye bhi na jaani',\n", + " 'ruth hai ye do pal ki ya rahegi sada',\n", + " '(kise hai pata, kise hai pata, kise hai pata)',\n", + " 'jo barsein sapne boond-boond',\n", + " 'nainon ko moond-moond',\n", + " '(nainon ko moond-moond)',\n", + " 'jo barsein sapne boond-boond',\n", + " 'nainon ko moond-moond',\n", + " 'kaise main chaloon, dekh na sakoon anjaane raaste',\n", + " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara',\n", + " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara',\n", + " 'dheeme bole koi iktara-iktara, dheeme bole koi iktara',\n", + " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara']},\n", + " 'data': ['o bade ok soke chada hai fitoor',\n", + " \"leke do-pe sho-pe hoja mash'hoor\",\n", + " 'mujhe masti chadhi hai from head-to-toe',\n", + " 'jinhe nachna hai nache',\n", + " 'jo na nache f.o',\n", + " 've-ve-velle mat betho gand paao in the club',\n", + " 'ch-ch-chill to machao ruk jaaye beat jab chal le le stance',\n", + " 'ready to dance',\n", + " 'aane wala hai gaane ka',\n", + " '. hook. hook. hook...',\n", + " 'hook hook hook hook...',\n", + " 'ho nacho saare g phaad ke',\n", + " 'hil ke nacho-nacho',\n", + " 'hil dul ke nacho-nacho',\n", + " 'hil ke nacho-nacho',\n", + " 'nacho saare g phaad ke aa ha. aa ha. aa ha',\n", + " 'ho nacho saare g phaad ke',\n", + " 'aa ha',\n", + " 'sarphira hai tu, sarphiri hu main',\n", + " 'ya hum dono hain sahi',\n", + " 'aur sarphire hain saare',\n", + " 'behki-behki main aur behka-behka tu',\n", + " 'behke-behke lag rahe kyu aaj ye nazare',\n", + " 'chal sarka dena pare zamaane ko',\n", + " 'kisko fikar hai ye kiska qasoor',\n", + " 'ho okay sokay hua set mood',\n", + " 'ek feeling bole ca-ca-carry on dude',\n", + " 'mujhe masti chadi hai from head to toe',\n", + " 'jinhe nachna hai nache',\n", + " 'jo na nache f.o',\n", + " 've-ve-velle mat betho gand paao in the club',\n", + " 'ch-ch-chill to machao ruk jaaye beat jab chal le le stance',\n", + " 'ready to dance',\n", + " 'aane wala hai gaane ka',\n", + " '. hook. hook. hook...',\n", + " 'hook hook hook hook...',\n", + " 'ho nacho saare g phaad ke',\n", + " 'hil ke nacho-nacho',\n", + " 'hil dul ke nacho-nacho',\n", + " 'hil ke nacho-nacho',\n", + " 'nacho saare g phaad ke aa ha. aa ha. aa ha',\n", + " 'ho nacho saare g phaad ke',\n", + " 'aa ha',\n", + " 'ho nacho saare g phaad ke!',\n", + " 'har singh, nar singh',\n", + " 'neel naaraayan',\n", + " 'gur sikh, gur singh',\n", + " 'har har gaayan',\n", + " 'wahe, guru, wahe, guru',\n", + " 'har har dhiaaian',\n", + " 'saakhat nindak dusht',\n", + " 'mathaayan',\n", + " 'har singh, nar singh',\n", + " 'neel naaraayan',\n", + " 'gur sikh, gur singh',\n", + " 'har har gaayan',\n", + " 'wahe, guru, wahe, guru',\n", + " 'har har dhiaaian',\n", + " 'saakhat nindak dusht',\n", + " 'mathaayan',\n", + " 'har singh, nar singh',\n", + " 'neel naaraayan',\n", + " 'gur sikh, gur singh',\n", + " 'har har gaayan',\n", + " 'wahe, guru, wahe, guru',\n", + " 'har har dhiaaian',\n", + " 'saakhat nindak dusht',\n", + " 'mathaayan',\n", + " 'har singh, nar singh',\n", + " 'neel naaraayan',\n", + " 'gur sikh, gur singh',\n", + " 'har har gaayan',\n", + " 'wahe, guru, wahe, guru',\n", + " 'har har dhiaaian',\n", + " 'saakhat nindak dusht',\n", + " 'mathaayan',\n", + " 'har singh, nar singh',\n", + " 'neel naaraayan',\n", + " 'gur sikh, gur singh',\n", + " 'har har gaayan',\n", + " 'wahe, guru, wahe, guru',\n", + " 'har har dhiaaian',\n", + " 'saakhat nindak dusht',\n", + " 'mathaayan',\n", + " 'har singh, nar singh',\n", + " 'neel naaraayan',\n", + " 'gur sikh, gur singh',\n", + " 'har har gaayan',\n", + " 'wahe, guru, wahe, guru',\n", + " 'har har dhiaaian',\n", + " 'saakhat nindak dusht',\n", + " 'mathaayan',\n", + " 'har singh, nar singh',\n", + " 'neel naaraayan',\n", + " 'gur sikh, gur singh',\n", + " 'har har gaayan',\n", + " 'wahe, guru, wahe, guru',\n", + " 'har har dhiaaian',\n", + " 'saakhat nindak dusht',\n", + " 'mathaayan',\n", + " 'har singh, nar singh',\n", + " 'neel naaraayan',\n", + " 'gur sikh, gur singh',\n", + " 'har har gaayan',\n", + " 'wahe, guru, wahe, guru',\n", + " 'har har dhiaaian',\n", + " 'saakhat nindak dusht',\n", + " 'mathaayan',\n", + " 'har singh, nar singh',\n", + " 'neel naaraayan',\n", + " 'gur sikh, gur singh',\n", + " 'har har gaayan',\n", + " 'wahe, guru, wahe, guru',\n", + " 'har har dhiaaian',\n", + " 'saakhat nindak dusht',\n", + " 'mathaayan',\n", + " 'saakhat nindak dusht',\n", + " 'mathaayan',\n", + " 'aaj jaane ki zidd na karo',\n", + " 'yoonhi pahlu mein baiṭhe raho',\n", + " 'yoonhi pahlu mein baiṭhe raho',\n", + " 'aaj jaane ki zidd na karo',\n", + " 'haaye mar jaaen ge ham to luṭ jaaen ge',\n", + " 'aisi baaten kiya na karo',\n", + " 'aaj jaane ki zidd na karo',\n", + " 'tum hi socho zara kyoon na roken tumhen',\n", + " 'jaan jaati hai jab uṭh ke jaate ho tum',\n", + " 'jaan jaati hai jab uṭh ke jaate ho tum',\n", + " 'tum ko apni qasam jaan-i jaan',\n", + " 'baat itni miri maan lo',\n", + " 'aaj jaane ki zidd na karo',\n", + " 'waqt ki qaid mein zindagi hai magar',\n", + " 'chand ghaṛiyaan yahi hain jo aazaad hain',\n", + " 'chand ghaṛiyaan yahi hain jo aazaad hain',\n", + " 'in ko kho kar miri jaan-i jaan',\n", + " 'umr bhar na taraste raho',\n", + " 'aaj jaane ki zidd na karo',\n", + " 'aaj jaane ki zidd na karo',\n", + " 'kizutsukeau kurai ai shiteita',\n", + " 'yume wa zetsubou ni natta shiranuuchi ni',\n", + " 'sashikomu hikari ga sukimakaze g',\n", + " 'nureta hoo ni itaku shimiiru you',\n", + " 'douse ashita to iu hi wa atte',\n", + " 'nanika ga mitashite yuku no itsu no hi ka',\n", + " 'konkyo no nai chiisana atarashii yume',\n", + " 'te no hira ni kanjiteru no wo yeah',\n", + " \"i'm feeling myself again\",\n", + " \"i'm feeling better now...\",\n", + " 'yurikago wo yusaburu kaze',\n", + " \"i'm feeling myself again\",\n", + " \"i'm feeling better yeah...\",\n", + " 'furikaeru you ni',\n", + " 'yume kara sameta',\n", + " 'kiyoraka na kokoro de bu tsubushitai',\n", + " 'yume mo kibou mo suteta jibun no te de',\n", + " 'osoreteita mono nani dattakke sou',\n", + " 'ima wa mou wakaranai shiwakaritaku mo nai',\n", + " 'koko kara mata hi wa nobotte',\n", + " 'kono sora ni tsuusetsu ni nanika kanjitemo',\n", + " 'omoide to setsunaku katarao koto ga',\n", + " 'nan no yaku ni tatsu tte yuu no',\n", + " \"i'm feeling myself again\",\n", + " \"i'm feeling better now...\",\n", + " 'taisetsu ni kowashitai',\n", + " \"i'm feeling myself again\",\n", + " \"i'm feeling better yeah...\",\n", + " 'tsumetai hana wo kerichirasu you ni',\n", + " \"oh, i'm feeling myself again\",\n", + " \"i'm feeling better now...\",\n", + " 'yurikago wo yusaburu kaze',\n", + " \"i'm feeling myself again\",\n", + " \"i'm feeling better yeah...\",\n", + " 'furikaeru you ni yume kara sameta',\n", + " \"i'm feeling myself again\",\n", + " \"i'm feeling myself again\",\n", + " \"i'm feeling better yeah...\",\n", + " 'tsumetai hana wo kerichirasu you ni',\n", + " \"let's get on let's get on let's get on yo!! let's get on this wind let's get on let's get on\",\n", + " \"yo!! let's go to your side with these wings\",\n", + " 'kakushita uso wo doko ni sute you',\n", + " 'soko no umibe made hon no sukoshi',\n", + " 'itsudatte kimi wa yasashi sugita yo',\n", + " 'modoranai to kimeta no ni... soba ni itai',\n", + " \"(i'd like to feel you now)\",\n", + " 'negai ga',\n", + " '(if you stay by my side)',\n", + " 'kanau nara hibike ai no inori',\n", + " '(get on the wind)',\n", + " 'imademo',\n", + " '(i wish i were a bird.)',\n", + " 'maniau youni akai buutsu haita',\n", + " 'kimi no moto he',\n", + " '(i still wish now. i still hope now. stay by my side.)',\n", + " \"let's get on let's get on let's get on yo!! let's get on this wind let's get on let's get on yo!! let's go to your side with these wings\",\n", + " 'kanashii uta wo shitteiru tori ga',\n", + " 'madobe de utatte wa boku wo semeru',\n", + " 'itoshiki mono to ai wo hagukumi',\n", + " 'yagate su wo tsukuri yume wo utau',\n", + " '(yeah, i sing like a bird)',\n", + " 'negai ga',\n", + " '(if you stay by my side.)',\n", + " 'kanau nara sono tsubasa wo karite',\n", + " '(get on the wind.)',\n", + " 'tobitatou',\n", + " '(i wish i were a bird.)',\n", + " 'imasugu ni nidoto hanasanai yo',\n", + " 'kimi no moto he',\n", + " '(i still wish now. i still hope now. stay by my side.)',\n", + " 'miageta haruka oozora he inori sasagete',\n", + " '(i fly, and go.)',\n", + " 'tomaru koto no nai toki wo yamete',\n", + " 'get on yeah yeah. i really wanna see your red boots. i really want the wings of a bird',\n", + " 'if i could go to your sidec if you were by my sidec that would be wonderful',\n", + " 'i wish i were a bird',\n", + " 'negai ga',\n", + " '(if you stay by my side.)',\n", + " 'kanau nara hibike ai no inori',\n", + " '(get on the wind.)',\n", + " 'negai ga',\n", + " '(i wish i were a bird.)',\n", + " 'kanau youni tsubasa sei ni hiroagete',\n", + " '(get on the wind.)',\n", + " 'tobitatou',\n", + " '(if you stay by my side.)',\n", + " 'imasugu ni nidoto hanasanai yo',\n", + " '(get on the wind.)',\n", + " 'imademo',\n", + " '(i wish i were a bird.)',\n", + " 'maniau nara akai buutsu haita',\n", + " 'kimi no moto he',\n", + " '(i still wish now. i still hope now. stay by my side.)',\n", + " \"let's get on let's get on let's get on yo!!\",\n", + " \"let's get on this wind.let's get on let's get on yo!!\",\n", + " \"let's go to your side with these wings\",\n", + " 'kodawatte kita mono wa dare',\n", + " 'ayamatte kita hito wa nani',\n", + " 'warikitte kita koto wa tsumi',\n", + " 'samekitte mita yume wa sube',\n", + " 'ayamachi wa okashitemo',\n", + " 'okasarete hajimete wakaru',\n", + " 'demo mata wasurete shimau',\n", + " 'sonna fuu ni kono yo wa dekiteru',\n", + " 'feel like the wind',\n", + " 'kaze no you ni',\n", + " 'watashi wo watashi to tsutaecha ikenai',\n", + " 'jidai wa wagamama na noni watashi dake',\n", + " 'namae sae tsugeru koto ??(kaze) ga saegiru',\n", + " 'yoake made ni nimotsu wo matomete',\n", + " 'akaku samishige na passport',\n", + " 'nan no kachi sae midasenaide',\n", + " 'futo hitori de mujou ni nagamete',\n", + " '* feel like the wind',\n", + " 'toki wa nagasarete',\n", + " 'sougen wo hashiru ??(kaze) wo matte iru',\n", + " 'feel like the wind',\n", + " 'itsuka anata ni',\n", + " 'sotto todoku you na ??(kaze) ni noritai',\n", + " 'la la la...',\n", + " '* repeat',\n", + " 'why did you break my heart?',\n", + " 'why did we fall in love?',\n", + " 'why did you go away, away, away, away?',\n", + " '(dil mera churaaya kyoon',\n", + " 'jab yeh dil todna hi tha',\n", + " 'humse dil lagaaya kyoon',\n", + " 'humse munh modna hi tha) - 2',\n", + " 'why did you break my heart?',\n", + " 'why did we fall in love?',\n", + " 'why did you go away, away, away, away?',\n", + " 'ho, dil ko dhadakna tune sikhaaya',\n", + " 'dil ko tadapna tune sikhaaya',\n", + " 'aankhon mein aansu chhupe the kahin',\n", + " 'inko chhalakna tune sikhaaya',\n", + " 'seene mein basaaya kyoon',\n", + " 'dil se jab khelna hi tha',\n", + " 'humse dil lagaaya kyoon',\n", + " 'humse munh modna hi tha',\n", + " 'dil mera churaaya kyoon',\n", + " 'why did you break my heart?',\n", + " 'why did we fall in love?',\n", + " 'why did you go away, away, away, away?',\n", + " 'ho, milti thi nazrein jab bhi nazar se',\n", + " 'uthte the shole jaise jigar se',\n", + " 'saanson se nikla jaise dhuaan sa',\n", + " 'banta tha mujhse jeete na marte',\n", + " 'aag kyoon lagaayi jab',\n", + " 'bujhaaye dil chhodna hi tha',\n", + " 'humse dil lagaaya kyoon',\n", + " 'humse munh modna hi tha',\n", + " 'dil mera churaaya kyoon',\n", + " 'jab yeh dil todna hi tha',\n", + " 'humse dil lagaaya kyoon',\n", + " 'humse munh modna hi tha',\n", + " 'why did you break my heart?',\n", + " 'why did we fall in love?',\n", + " 'why did you go away, away, away, away?',\n", + " 'jinke sar ho ishq ki chaaon',\n", + " 'paaon ke neeche jaanat hogi',\n", + " 'jinke sar ho ishq ki chaaon',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'saare ishq ki chhaaon chal chaiyya chaiyya',\n", + " 'saare ishq ki chhaaon chal chaiyya',\n", + " 'pau janat chale chal chaiyya chaiyya',\n", + " 'pau janat chale chal chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'wo yaar hai jo khushboo ki tarah',\n", + " 'wo jiski zubaan urdu ki tarah',\n", + " 'meri shaam raat, meri kaayanat',\n", + " 'wo yaar mera sainya-sainya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'gulposh kabhi itraaye kahin, mehke to nazar aa jaaye kahin',\n", + " 'gulposh kabhi itraaye kahin, mehke to nazar aa jaaye kahin',\n", + " 'taaveez banaake pehnoon usse, aayat ki tarah mil jaaye kahin',\n", + " 'taaveez banaake pehnoon usse, aayat ki tarah mil jaaye kahin',\n", + " 'gulposh kabhi itraaye kahin, mehke to nazar aa jaaye kahin',\n", + " 'taaveez banaake pehnoon usse, aayat ki tarah mil jaaye kahin',\n", + " 'woh yaar hai jo imaan ki tarah, mera nagma wohi, mera qalma wohi',\n", + " 'mera nagma nagma, mera qalma qalma',\n", + " 'mera nagma nagma, mera qalma qalma',\n", + " 'mera nagma nagma mera qalma qalma',\n", + " 'mera nagma nagma mera qalma qalma',\n", + " 'yaar misaale ous dhale',\n", + " 'paaon ke tale firdous chale',\n", + " 'kabhi daal daal kabhi paat paat',\n", + " 'main hava pe dhoondhoon uske nishaan',\n", + " 'saare ishq ki chaaon chal chaiyya chaiyya',\n", + " 'saare ishq ki chaaon chal chaiyya',\n", + " 'pau janat chale chal chaiyya chaiyya',\n", + " 'pau janat chale chal chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'main uske roop ka shehdaai, wo dhoop chhanv se harjaai',\n", + " 'wo shokh hai rang badalta hai, main rangroop ka saudaai',\n", + " 'main rangroop ka saudaai',\n", + " 'jinke sar ko ishq ki chhaaon, paaon ke neeche jannat hogi',\n", + " 'jinke sar ko ishq ki chhaaon, paaon ke neeche jannat hogi',\n", + " 'shaam raat meri kaaynaat, wo yaar mera sainyaa sainyaa',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'saare ishq ki chaaon chal chaiyya chaiyya',\n", + " 'saare ishq ki chaaon chal chhaiya',\n", + " 'pau janat chale chal chaiyya chaiyya',\n", + " 'pau janat chale chal chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'wo yaar hai jo khushboo ki tarah',\n", + " 'wo jiski zubaan urdu ki tarah',\n", + " 'meri shaam raat, meri kaayanat',\n", + " 'wo yaar mera sainya-sainya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'chal chaiyya chaiyya chaiyya chaiyya',\n", + " 'tak ta tak ta tak, tik thai',\n", + " 'tak ta tak ta tak, mm hm',\n", + " 'san sanana nan, san sanana nan - 2',\n", + " 'tak ta tak ta tak, tik thai',\n", + " 'tak ta tak ta tak, tak tak',\n", + " 'tak ta tak ta tak, tik thai, tak tak',\n", + " '(san sanana nana, san sanana nan',\n", + " 'jaa jaa re jaa re jaa re, jaa re pawan) - 2',\n", + " 'mere jaisa dhoondke laa mera sajan',\n", + " 'san sanana nana, san sanana nan',\n", + " 'jaa jaa re jaa re jaa re, jaa re pawan',\n", + " 'aisa kahin koi nahin - 2',\n", + " 'aisa ho to shaayad main kar loon milan - 2',\n", + " 'jaa jaa, jaa re pawan, jaa re pawan',\n", + " 'san sanana nana, san sanana nan',\n", + " 'jaa jaa re jaa re jaa re, jaa re pawan',\n", + " 'aakaash hai koi prem kavi',\n", + " 'main uski likhi kavita',\n", + " 'oh, aakaash hai koi prem kavi',\n", + " 'main uski likhi kavita',\n", + " 'mere jaisa koi nahin aaya jag mein yug beeta',\n", + " 'chhoo na sake koi mujhe - 2',\n", + " 'chhoo le to haai lag jaaye aggan - 2',\n", + " 'jaa jaa re jaa, jaa re pawan, jaa re pawan',\n", + " 'san sanana nana, san sanana nan',\n", + " 'jaa jaa re jaa re jaa re, jaa re pawan',\n", + " 'yea yea yea yea, yea yea yea yea',\n", + " 'main aap hi apni premika',\n", + " 'main aap hi apni saheli',\n", + " 'haan, main aap hi apni premika',\n", + " 'main aap hi apni saheli',\n", + " 'aur nahin koi apne jaise, bas main ek akeli',\n", + " 'main aaoon to, main jaaoon to - 2',\n", + " 'mujhko dekhe jhuk ke gagan - 2',\n", + " 'jaa jaa, jaa re pawan, jaa re pawan',\n", + " 'san sanana nana, san sanana nan',\n", + " 'jaa jaa re jaa re jaa re, jaa re pawan',\n", + " 'mere jaisa dhoondke laa mera sajan',\n", + " '(san sanana nana, san sanana nan',\n", + " 'jaa jaa re jaa re jaa re, jaa re pawan) - 2',\n", + " 'saawali si raat ho, khamoshi ka saath ho',\n", + " 'hmm, saawali si raat ho, khamoshi ka saath ho',\n", + " 'bin kahe bin sune, baat ho teri meri',\n", + " 'neend jab ho laapata, udasiyaan zara hata',\n", + " 'khwabon ki razaai mein, raat ho teri meri',\n", + " 'jhilmil taaron si aankhein teri',\n", + " 'khaare-khaare paani ki jheelein bhare',\n", + " 'hardam yunhi tu hansti rahe',\n", + " 'har pal hai dil mein khwahishein',\n", + " 'khamoshi ki loriyaan sun to raat so gayi',\n", + " 'bin kahe bin sune, baat ho teri meri',\n", + " 'saawali si raat ho khamoshi ka saath ho',\n", + " 'bin kahe bin sune, baat ho teri meri',\n", + " 'barfi ke tukde sa, chanda dekho aadha hai',\n", + " 'dheere dheere chakhna zara',\n", + " 'hmm, hansne-rulane ka aadha-pauna vaada hai',\n", + " 'kankhi se takna zara',\n", + " 'ye jo lamhe hain lamhon ki behti nadi mein',\n", + " 'haan bheeg loon, haan bheeg loon',\n", + " 'ye jo aankhen hain aankhon ki gumsum zubaan ko',\n", + " 'main seekh loon, haan seekh loon',\n", + " 'ankahee si guftagu, ansuni si justajoo',\n", + " 'bin kahe, bin sune, apni baat ho gay',\n", + " 'saawali si raat ho khamoshi ka saath ho',\n", + " 'bin kahe bin sune, baat ho tеri meri']}}},\n", + " 'eu': {'sentence': {'pop': {'meta': {'train_data': ['baile de san vito',\n", + " 'manhattan boogie-woogie',\n", + " 'vals de viena',\n", + " 'la marsellesa',\n", + " 'menea, menea, menea el bullarengue',\n", + " 'adagio de albinoni',\n", + " 'in-a-gadda-da-vida',\n", + " 'jota aragonesa',\n", + " 'el cóndor pasa',\n", + " 'menea, menea, menea el bullarengue',\n", + " 'himno de riego',\n", + " 'smoke on the water',\n", + " 'pájaro chogüí',\n", + " 'himno a la alegría',\n", + " 'menea, menea, menea el bullarengue',\n", + " 'alehop',\n", + " 'ombra mai fu',\n", + " 'di vegetabile',\n", + " 'cara ed amabile',\n", + " 'soave più',\n", + " 'di vegetabile',\n", + " 'cara ed amabile',\n", + " 'soave più',\n", + " 'ombra mai fu',\n", + " '(desia rire)',\n", + " 'di vegetabile',\n", + " 'cara ed amabile',\n", + " 'soave più',\n", + " 'di vegetabile',\n", + " 'cara ed amabile',\n", + " 'soave dio',\n", + " '(ofeli deum)',\n", + " '(sonia care)',\n", + " '(el fano)',\n", + " 'e no maria',\n", + " 'ofeli deum',\n", + " 'sonia vereno',\n", + " '(o mani)',\n", + " 'el fano...',\n", + " 'aaaaaaaaa...',\n", + " 'sarigenai jo-ku tobashite',\n", + " 'waratteta,wakeeatta,shinjitata',\n", + " 'usonante naihazudatte,omotta',\n", + " 'dou kakushitetano',\n", + " 'one tear ago',\n", + " 'kokoroga tsuuji atteita',\n", + " 'you were the only one',\n", + " 'one tear ago',\n", + " 'i loved you',\n", + " 'mou mukashi no koto',\n", + " 'kizutsuita yakusoku tashi wa',\n", + " 'mamorarezu,kanaerarezu,nanimokamo',\n", + " 'mou nidoto o futaride',\n", + " 'irukotowa nainddayone',\n", + " 'one tear ago',\n", + " 'kokoroga tsuuji atteita',\n", + " 'you were the only one',\n", + " 'one tear ago',\n", + " 'i loved you',\n", + " 'mou mukashi no koto',\n", + " 'one tear ago',\n", + " 'kokoroga tsuuji atteita',\n", + " 'you were the only one',\n", + " 'one tear ago',\n", + " 'i loved you',\n", + " 'mou mukashi no koto',\n", + " 'atarashii koi ni mukaukara',\n", + " 'zutto sutekinahitotone',\n", + " 'hitomi ni utsuru subete o shinjiteta',\n", + " 'anata* no yasashisa ni kitsukazu toki ga sugi',\n", + " 'mou modorenai no?',\n", + " 'toikakete yume no naka samadou**',\n", + " 'sosogi komu hikari no hate ni',\n", + " 'yobi sa mashita kono kioku',\n", + " 'i remember this place nani mo mienai kedo',\n", + " 'futari chikatta kotoba to negai o',\n", + " 'tsuyoku dakishime atte',\n", + " 'nemuri kara sameta tsumikasaneta omoi',\n", + " 'dare mo ga iki isogu nagare no hayasa o tome',\n", + " 'namida ni yadoru kanjou to kokyuu ni oborete',\n", + " 'yuru ginai kakushin o mune ni himete sora he habataku',\n", + " 'i remember this place shinjiteru mata aeru to',\n", + " 'futari chikatta kotoba to negai o mamori tsusukete',\n", + " \"you'll just follow one's heart nani mo osorenai yo\",\n", + " 'namida no kase dake tsuyoku nareru to',\n", + " 'aruki tsuzuke tadori tsuita!',\n", + " 'hoshizora no moto kagayaki',\n", + " 'hi no hikari ni terasarete',\n", + " 'kako mo mirai mo nai sekai',\n", + " 'atarashii tabi o',\n", + " 'i remember this place kono itami nagasarete yuku',\n", + " 'habuka mukashi no ijin ga tsutaeta kotoba ni kasaneru',\n", + " \"you'll just follow one's heart hikari ni tsutsumarete\",\n", + " 'umare kawaru goto ga de kata naraba anata totomoni?',\n", + " 'i remember this place',\n", + " \"you'll just follow one's heart\",\n", + " 'i remember this place',\n", + " \"you'll just follow one's heart\",\n", + " 'atarashii jidai o...',\n", + " 'koe ni nara nai omoi o dore dake tsutaerareru darou',\n", + " 'kizutsuketa tsugunai o mune ni kizami anata to',\n", + " 'meguri aeru to shinjite',\n", + " 'semete dakishimete omoi ga todoita nara',\n", + " 'mezameru no sa tobira wo akete',\n", + " 'hibike itsu made mo samishi sa wo tsuranuite',\n", + " 'mune wo kogashi tsuzukete ite',\n", + " 'takai kabe ni fusagareteru sekai de',\n", + " 'tooku kasumu hikari kiete shimatte mo',\n", + " 'wasurenaide itsu mo soba ni iru yo',\n", + " 'wasurenaide kono merodi',\n", + " 'semete dakishimete aenai hi ga atte mo',\n", + " 'yumemiru koto osorenaide',\n", + " 'semete dakishimete omoi ga todoita nara',\n", + " 'mezameru no sa tobira wo akete',\n", + " 'hibike itsu made mo samishi sa ha',\n", + " 'kimi kara mezameta',\n", + " 'tsuyoku dakishimete kono ai ga',\n", + " 'samete shimau mae ni',\n", + " \"now, i'll hold you with love\",\n", + " 'bye bye c-boy',\n", + " 'anata no nozomi wa',\n", + " 'okiku narukara',\n", + " 'tsutsumiki renai no',\n", + " 'itsuka mata',\n", + " 'aeru toki made',\n", + " 'bye bye c-boy',\n", + " 'nani mo iwanaide',\n", + " 'bye bye c - boy',\n", + " 'ochi wa dokonano',\n", + " 'kizutsuki sa ma yoni',\n", + " 'nani ka ni obieteru',\n", + " 'kono mama de wa',\n", + " 'kigakari dakedo',\n", + " 'bye bye c-boy',\n", + " 'nani mo iwanaide',\n", + " 'bye bye c-boy',\n", + " 'bye bye c-boy',\n", + " 'bye bye c-boy',\n", + " 'c-boy',\n", + " '(she said to know',\n", + " 'this is the sign of covenant',\n", + " 'which i make between myself,?',\n", + " 'c-boy, c-boy, c-boy...)',\n", + " 'bye bye c-boy',\n", + " 'anata wa wakasugite',\n", + " 'hontō no watashi o',\n", + " 'wakattemoraenai',\n", + " 'kono sekai ga',\n", + " 'kawaru toki made',\n", + " 'bye bye c-boy',\n", + " 'nani mo iwanaide',\n", + " 'bye bye c-boy',\n", + " 'bye bye c-boy',\n", + " 'bye bye c-boy',\n", + " 'c-boy',\n", + " 'bye bye c-boy',\n", + " 'bye bye c-boy',\n", + " 'bye bye c-boy',\n", + " 'good bye bye bye',\n", + " \"i just can't stop hearing your laughter\",\n", + " \"you can't hide your eyes of pity\",\n", + " 'sleep! my friend',\n", + " 'god only knows my fate',\n", + " 'there burns my soul!',\n", + " 'kumo ni nokotta kizuato tsuki no akari ga kazoeru owari',\n", + " 'nemure shoujo ni modotte',\n", + " 'moeru hikari o matotte',\n", + " 'kuruizaita hanabira aoi tsuki',\n", + " 'anata ha iki nagara yakare',\n", + " 'sono karada ga hanatsu hikari ga mabushi sugite',\n", + " 'sleep! my friend',\n", + " 'shibarareta no ha \"yowasa\" de nui-awaseta shinjitsu o kataru',\n", + " 'soko ni nikushimi ha nakatta',\n", + " 'soko ni ai dake ga atta',\n", + " 'dare darou to kegasu no ha yurusanai',\n", + " 'tatoe anata datoshite mo',\n", + " 'kizuki-ageta kono ai dake ha',\n", + " 'karesasenai sleep! my friend',\n", + " 'wakare o kimeta yozora ni asa ha michizure o koban deru',\n", + " 'kitto shinjite iru kara',\n", + " 'soko ni ai ga aru koto o',\n", + " 'kuruizaita hanabira aoi tsuki',\n", + " 'anata ha iki nagara yakare',\n", + " 'yoake ga ima, hanatsu hikari ga mabushi sugite',\n", + " 'sleep! my friend',\n", + " 'dare darou to kegasu no ha yurusanai',\n", + " 'tatoe anata datoshite mo',\n", + " 'kizuki-ageta kono ai dake ha',\n", + " 'karesasenai sleep! my friend',\n", + " \"now you've got everything i gave to\",\n", + " \"i'm so proud of time spend with you, baby\",\n", + " 'grand pain',\n", + " \"i'm gonna fling you to the wind\",\n", + " \"now you've got everything i gave to\",\n", + " \"i'm so proud of time spend with you, baby\",\n", + " 'grand pain',\n", + " \"i'm gonna fling you to the wind\",\n", + " 'must build it now sameta koko kara',\n", + " 'i must break it now aishita mono wo',\n", + " 'i must leave it now subete wo koroshite',\n", + " 'i must confess it now soto he dekakeyou',\n", + " \"i'm just building that omou ga mama no\",\n", + " \"i'm just breaking that rakuen mezasu\",\n", + " \"i'm just leaving that setsunai keredo\",\n", + " 'i must confessing that mune ha takanaru',\n", + " 'asa, mezameta toki',\n", + " 'ore no ryouude ha hikichigirareteita',\n", + " 'sou sa, buzama na you de',\n", + " 'kamen hazuseba shozen konna mon sa',\n", + " 'dakedo dakara koso, narifuri kamawazu',\n", + " 'imadani soko de matsu kimi ni ai ni ikeru',\n", + " 'doredake no kizu wo kizamikomareyou to',\n", + " 'kioku no kanata ni kieta ano hi wo sagasou',\n", + " 'anata no sugata nara donna hitogomi demo',\n", + " 'hanarete ite mo kanarazu mitsuketeta',\n", + " 'dakedo ima konna ni chikaku ni iru no ni',\n", + " 'anata no kokoro sukoshi mo mie nai',\n", + " \"we can't go back, but if we could, we will get same answer\",\n", + " \"we close to the edge, it can't be help, i won't see your heart again ×2\",\n", + " 'futashika na kokoro no kyori fuan darake da yo',\n", + " 'doredake futari wa tsunagatte iru no darou',\n", + " 'tsukuri warai ga itai yo',\n", + " 'sukoshi no koto de sugu kimochi ga shizun de',\n", + " 'yowaki ni natteku jibun ga iyada yo',\n", + " \"we can't go back, but if we could, we will get same answer\",\n", + " \"we close to the edge, it can't be help, i won't see your heart again ×2\",\n", + " 'naze motto futari umakui ka nain darou ne',\n", + " 'sore demo anata wo omotte iru, dakara',\n", + " 'make nai yo kurushikute mo',\n", + " 'sure chigau futari wa ima shabon-dama no you ni',\n", + " 'ware sou ni natte na ni nimo ie nai mama iru yo',\n", + " 'futari susumu michi wa mou wakatterunda',\n", + " 'demo norikoetai anata to tomo ni',\n", + " 'tatoe muri dato shite mo',\n", + " 'kitto',\n", + " 'hegoak ebaki banizkio',\n", + " 'neria izango zen',\n", + " 'ez zuen aldegingobainan, honela',\n", + " 'ez zen gehiago txoria izango',\n", + " 'eta nik...txoria nuen maite',\n", + " 'the bird which is a bird',\n", + " 'if i had cut the wings to her',\n", + " 'she would have been mine',\n", + " 'she would not be flees',\n", + " 'but,thus',\n", + " 'she would not have been anymore a bird',\n", + " \"and me...it's the bird which i loved\",\n", + " 'raining natsu no gogo ni tōriame kasa no shita',\n", + " 'kissing nureta hō ni sotto kuchizuketa',\n", + " 'ano kisetsu ni mada kogarete iru',\n", + " 'miss you mado no soto ni tōzakaru keshiki-tachi',\n", + " 'breezing niji ga mieta sugu ni kie sō de',\n", + " 'ame ashita wa furanakere ba ī',\n", + " 'nani mo te ni tsukazu ni uwanosora no hibi',\n", + " \"nothing but you're the part of me\",\n", + " 'mada tarinakute',\n", + " 'mada kienakute',\n", + " 'kasaneta tenohira kara osana-sa ga',\n", + " 'what a good thing we lose?',\n", + " 'what a bad thing we knew',\n", + " 'sonna fureizu ni nureteku ame no naka',\n", + " 'tada tarinakute',\n", + " 'mada ienakute',\n", + " 'kazoeta hi no yume kara sayonara ga',\n", + " 'what a good thing we lose?',\n", + " 'what a bad thing we knew',\n", + " 'furerarezu ni iretara waraeta ka na?',\n", + " 'calling shiroi iki ga maiagaru sora no shita',\n", + " 'freezing tsuyoi kaze ni sukoshi kajikanda te to',\n", + " 'yowa-sa o poketto no naka ni',\n", + " 'doko o miwatashite mo tōrisugita hibi',\n", + " \"nothing but you're the part of me\",\n", + " 'mata furetakute',\n", + " 'tada mabushiku te',\n", + " 'omowasu me o sorashita yasashi-sa ni',\n", + " 'i wanna sleep in your feel',\n", + " 'i wanna see you in the deep',\n", + " 'sonna fureizu o narabeta uta o ima',\n", + " 'ano kaerimichi basu ni yurarete',\n", + " 'kanau hazu mo nai yō na yume o mite',\n", + " 'i wanna sleep in your feel',\n", + " 'i wanna see you in the deep',\n", + " 'kurikaesu kisetsu ni narenai mama',\n", + " 'mō sukoshi kurai otona de iretara',\n", + " 'nan te ietadarō',\n", + " 'mada tarinakute',\n", + " 'mada kienakute',\n", + " 'kasaneta tenohira kara osana-sa ga',\n", + " 'what a good thing we lose?',\n", + " 'what a bad thing we knew',\n", + " 'sonna fureizu ni nureteku ame no naka',\n", + " 'tada tarinakute',\n", + " 'mada ienakute',\n", + " 'kazoeta hi no yume kara sayonara ga',\n", + " 'what a good thing we lose?',\n", + " 'what a bad thing we knew',\n", + " 'furerarezu ni iretarawaraeta ka na?',\n", + " 'iruñeako reggae-ska taldeak klub ska aurkezten dizue',\n", + " 'du pays basque, skalariak',\n", + " 'comment ça va, beti ska, és bienvenido a este lugar',\n", + " 'welcome, welcome, ongi etorri to the klub ska',\n", + " 'welcome, welcome, ongi etorri to the klub ska',\n", + " 'peitus lorta star',\n", + " 'ratu kapyu wa',\n", + " 'teni priktu pyor',\n", + " 'irnri kus vorchia tvoirta',\n", + " 'no pis isu ra',\n", + " 'hrisus viktura',\n", + " 'kenih karta kui',\n", + " 'mei a kwonti kunra chi',\n", + " 'sofeila nomeia',\n", + " 'shurkaio duri nana',\n", + " 'chukara furwana',\n", + " 'orlano somarago',\n", + " 'rise',\n", + " 'why am i here nowhere ?',\n", + " 'why am i here nowhere ?',\n", + " 'my dis your dis',\n", + " 'why am i here nowhere ?',\n", + " 'why am i here nowhere ?',\n", + " 'why am i here nowhere ?',\n", + " 'my dis your dis',\n", + " 'inori sasagu maria mou nido to modorenai',\n", + " 'omoi tsugeru maria mou hitori no kioku ni',\n", + " 'forbidden relation with love',\n", + " 'my dis love',\n", + " 'why am i here nowhere ?',\n", + " 'why am i here nowhere ?',\n", + " 'why am i here nowhere ?',\n", + " 'my dis your dis',\n", + " 'my dis your dis',\n", + " 'inori sasagu maria mou nido to modorenai',\n", + " 'omoi tsugeru maria mou hitori no kioku ni',\n", + " 'forbidden relation with love',\n", + " 'toki no naka e maria mou nido to modorenai',\n", + " 'to eien ni nemuru maria mou hitori no kioku ni',\n", + " 'forbidden relation with love',\n", + " 'anata e...',\n", + " 'fui ni mikakete shimatta yo (yeah, i saw him)',\n", + " 'machikado de kimi no kareshi o (i told you)',\n", + " \"tanoshi-sō ni hoka no on'nanoko to ude o\",\n", + " \"kun detakedo koreijō wa (i don't wanna hurt you)\",\n", + " 'hanashite mo dōse okorushi ne (why?)',\n", + " '\"kare wa son\\'na hito janai\" tte (sure you\\'re right)',\n", + " 'dakara kimi no kaoiro ukagainagara',\n", + " '\"ki no seidatta\" tte itta (i\\'m sorry)',\n", + " 'oh, naze wakatte kurenai no?',\n", + " 'saki no nai mirai o hitori de mattete (no)',\n", + " 'kimi no kanashimu toko nante mitakunai nda, baby',\n", + " \"an'na yatsu yori mo ore no kata ga\",\n", + " 'kimi no koto shiawase ni deki-sō sa',\n", + " 'kimi o aishi tenai koto wa',\n", + " 'shitterunoni itsu made nai teru no sa?',\n", + " \"son'na kare no koto kataru kimi wa (you look happy)\",\n", + " \"terete ukare-gimina koe de (i'm happy)\",\n", + " '\"isshōgai itsu made mo issho ni doko made mo',\n", + " 'tsuite ku\" ttе (i don\\' t know what to say no more)',\n", + " 'iukedo mawari no tomodachi ni wa (yup, they know)',\n", + " \"barеteruyo kare no chara-sa wa (it's you)\",\n", + " 'they say love is blind, oh, baby, you so blind',\n", + " 'teokure ni naru mae ni',\n", + " 'oh, naze wakatte kurenai no?',\n", + " 'iiwake nanka wa kiki akitekita',\n", + " 'shinsō o sake teru dake',\n", + " 'nanoha o mitōshi, baby',\n", + " \"an'na yatsu yori mo ore no kata ga\",\n", + " 'zutto kiminotonari ga niai-sō sa',\n", + " 'ore wa baka mite mo ī no sa',\n", + " 'kono kimochi kakushi teru kurainara',\n", + " 'yeah, miss sunshine itsu demo',\n", + " 'saikōna smile doko demo',\n", + " 'saikōna life shika niawanai',\n", + " 'saiakuna yatsu wa… niawanai',\n", + " 'ura ga ari-sō ore no kan kara',\n", + " \"yatsu wa maji fakin' dakara\",\n", + " 'kimi no menomaede',\n", + " 'me ga oyoi deru nante hiku no teihen',\n", + " 'kimi o nakaseru nante majiarienai, baby',\n", + " 'koko kara kimidake o ubai satte ikitai, baby',\n", + " 'demo kekkyoku shōjiki-sha-tachi wa baka o miru, uh',\n", + " 'but you know what?',\n", + " \"an'na yatsu yori mo ore no kata ga\",\n", + " 'kimi no koto shiawase ni deki-sō sa',\n", + " 'kimi o aishi tenai koto wa',\n", + " 'shitterunoni itsu made nai teru no sa?',\n", + " \"an'na yatsu yori mo ore no kata ga\",\n", + " 'zutto kiminotonari ga niai-sō sa',\n", + " 'ore wa baka mite mo ī no sa',\n", + " 'kono kimochi kakushi teru kurainara',\n", + " \"i was alone... i can't get to the sky...\",\n", + " \"alone for all time! i can't get to the sky...\",\n", + " 'kawaki kuzure ochita hitoaku no negai',\n", + " 'naguritsukeru suna no ame ga subete wo saratta',\n", + " \"alone for all time! i can't get to the sky...\",\n", + " 'grow worse',\n", + " 'alone for all time! with scars...',\n", + " 'kawaki mizu motomete ubaiau sekai',\n", + " 'sakeru kizu wo umeteku no wa yuganda yokubou datta',\n", + " \"alone for all time! i can't get to the sky...\",\n", + " 'grow worse',\n", + " 'alone for all time! with scars...',\n", + " 'sabaku wo tobitatsu gensou, hiai hane ni kae',\n", + " 'tsuiraku suru sora ni wakare tsugete hatenaku',\n", + " 'shiroku kagayaku tatoe moetsukite mo...',\n", + " 'the vain world...',\n", + " 'besides... dareka ga ochiru yura yurete',\n", + " 'desire... hitori de wa sora ni fukaku oboresou de...',\n", + " 'sabaku wo tobitatsu gensou, hiai hane ni kae',\n", + " 'tsuiraku suru sora ni wakare tsugete hatenaku',\n", + " 'tatoe tsukite mo hane wo hirogete miseyou',\n", + " 'asu wo nugutte shimai sou na kurayami no naka mieta mono',\n", + " 'sotto fureta hoho tsutau namida',\n", + " 'kizamu toki no iro',\n", + " 'soko ni kimi ga ita',\n", + " 'ano hibi no kaze wa',\n", + " 'kimi no kakera mune ni oita',\n", + " 'i want, i want to stay alive',\n", + " 'kimi to sugoshita hibi ni',\n", + " \"i'm walking to one side\",\n", + " 'futari no michi chigau nanika wo mite ita kara',\n", + " 'our pieces fit all wrong',\n", + " 'kamiawazu ni kizuku koto dekinakatta',\n", + " 'asu wo nugutte shimai souna kurayami no naka me wo korashita',\n", + " 'sotto fureta hoho tsutau namida',\n", + " 'kkizamu toki no iro',\n", + " 'soko ni kimi ga ita',\n", + " 'moshi boku ga ano hi chigau mirai eranda nara...',\n", + " 'sotto yureru mado utsuru jibun toikaketa',\n", + " \"i'm picking up pieces\",\n", + " 'arifurete mo modoreru no nara kimi wo hanasanai',\n", + " 'you broke my confusion',\n", + " 'onaji yume ni se wo mukezu irareru you ni',\n", + " 'moshi kasukana hikari de sae mo',\n", + " 'sono saki ni aru mirai nara',\n", + " 'hatenai kanashimi norikoete',\n", + " 'shinjitai ima wo',\n", + " 'kimi to mita hibi wo',\n", + " 'wasure kaketeta kawaranu kioku no kaze',\n", + " 'kieta negai wo nosete',\n", + " 'asu wo nugutte shimai sou na kurayami no naka me wo korashita',\n", + " 'sotto fureta hoho tsutau namida',\n", + " 'kizamu toki no iro',\n", + " 'shinjitai ima wo',\n", + " 'kimi to mita hibi wo',\n", + " 'aitakute furetakute',\n", + " 'me no mae ni iru no ni',\n", + " 'ima ko yatte dakiatsu tete mo',\n", + " 'your eyes off on me',\n", + " 'boku wo mite boku dake wo mite',\n", + " 'kizukeba kyo mo mata aiso warai',\n", + " 'where are you?',\n", + " 'where are you?',\n", + " 'where are you?',\n", + " 'where is your heart?',\n", + " 'where are you?',\n", + " 'where are you?',\n", + " 'where are you?',\n", + " 'where is your heart?',\n", + " 'where are you?',\n", + " 'where are you?',\n", + " 'where are you?',\n", + " 'where is your heart?',\n", + " \"kon'na sugu-gawa ni iru no ni\",\n", + " 'kurushikute tsumetakute',\n", + " 'mune ga kishimu dakenanoni',\n", + " 'ne doshite, ne doshite',\n", + " 'why my skin acts like this?',\n", + " 'kasane atte nagusame atte oshimai',\n", + " 'kao mo mitakunai hodo aishiteru',\n", + " 'i love you, i love you, i love you, and i hate you',\n", + " 'i love you, i love you, i love you, and i hate you',\n", + " 'i love you, i love you, i love you, and i hate you',\n", + " 'mo kimi ni wa kikoenai',\n", + " 'i love you, i love you, i love you, and i hate you',\n", + " 'i love you, i love you, i love you, and i hate you',\n", + " 'i love you, i love you, i love you, and i hate you',\n", + " 'mo kimi ni wa kikoenai',\n", + " 'mo kimi ni wa kikoenai',\n", + " 'kalekantoian jira, auzo zarrean',\n", + " 'banabil, banabil, beste norabait noa',\n", + " 'plazaren gibelean, indatxiki bateik hurbil',\n", + " 'hor zegonk! fundi nadila!',\n", + " 'biba karrika ska',\n", + " '¡viva la kalle ska!',\n", + " '¡viva la kalle ska!',\n", + " 'turned a corner in old district',\n", + " \"keepin' walkin' my own way\",\n", + " 'after the square, near the alley',\n", + " 'there it is, fucking hell',\n", + " '¡viva la kalle ska!',\n", + " '¡viva la kalle ska!',\n", + " '¡viva la kalle ska!',\n", + " 'anar donant voltes, sense un nord clar',\n", + " 'pel laberint que és aquesta ciutat',\n", + " 'ja edc ser-hi a prop \"oita!\" ja l\\'he trobat!',\n", + " 'que bé! visca la terra, visca el carrer ska!',\n", + " '¡viva la kalle ska!',\n", + " '¡viva la kalle ska!',\n", + " 'la gente di strada passo sicuro',\n", + " 'si lascia dietro le ferite e la censura',\n", + " \"seguendo l'istinto di un ritmo in levare\",\n", + " 'e vivere gridando viva la kalle ska!',\n", + " '¡viva la kalle ska! ¡viva la kalle ska!',\n", + " '¡viva la kalle ska! ¡viva la kalle ska!',\n", + " '¡viva la kalle ska! ¡viva la kalle ska!',\n", + " '¡viva la kalle ska! (¡está en la calle!) ¡viva la',\n", + " 'kalle ska!',\n", + " '¡viva la kalle ska! ¡viva la kalle ska!',\n", + " 'hayareba sutaru to iwa reru sekai de',\n", + " 'doko e mukaeba ii toyuu no ka?',\n", + " 'do sunda? do sunda?',\n", + " 'shika reta reru wo kakenukeru dake ja',\n", + " 'nanika monotarinai to omou nda',\n", + " 'donanda? donanda?',\n", + " 'mujun wo kakaeta kokoro no sakebi ga kikoeru kai?',\n", + " 'chigau tte iwa reta tte ii',\n", + " 'boku ra no beat de hashiru dake sa',\n", + " \"we live just like rock'n'roll\",\n", + " 'dare mo ga tayasuku yume wo utaukedo',\n", + " 'nagusame ni shika kikoenai nda',\n", + " \"nan'nanda? nan'nanda?\",\n", + " 'nagare ga arunara yudanete miyou ka?',\n", + " 'nariyuki makase demo kamawanai',\n", + " 'sonanda sonanda',\n", + " 'korogari tsuzukete doko made ikeru ka',\n", + " 'kigatsukeba boku ra no mezasu bashoda',\n", + " 'sono saki no koto wa kangaezu ni',\n", + " \"we live just like rock'n'roll\",\n", + " 'detatokoshobu de',\n", + " 'me no mae no kabe wo buchikowase',\n", + " 'ikioi tsukete susume',\n", + " \"son'na ikikata ni akogare teta\",\n", + " 'zutto kitto motto',\n", + " 'mujun wo kakaeta kokoro no sakebi ga kikoeru kai?',\n", + " 'chigau tte iwa reta tte ii boku ra no beat de hashiru dake sa',\n", + " \"we live just like rock'n'roll\"]},\n", + " 'data': [\"kiss kiss kissin' noise love love lost my love\",\n", + " \"kiss kiss kissin' noise love love lost my love\",\n", + " 'puraido wo sutete yaru sa ai no nai anata no tame ni',\n", + " 'sono kao no yasashisa wa uso darou',\n", + " 'good luck sabireta kage ga anata ga jealousy sae mo kizu tsuketa',\n", + " 'saigo made sono saigo no toki made wa futari wa totemo yurusenai kara',\n", + " 'return to our mother close my close my life',\n", + " 'urusai kiss nakushita ai sore mo jinsei',\n", + " 'motome au mono nani mo katarazu ooinaru kage ima wa sabirete',\n", + " 'sutereotaipu yoru ni dakareteru dakara',\n", + " 'puraido wo sutete yaru sa ai no nai anata no tame ni',\n", + " 'sono kao no yasashisa wa uso darou',\n", + " 'noise anata no kiss kara nogare',\n", + " 'noise itsuka ano basho ni kaeru',\n", + " 'noise darake karamawari shite itemo',\n", + " 'good luck sabireta kage ga anata ga jealousy sae mo kizu tsuketa',\n", + " 'saigo made sono saigo no toki made wa futari wa totemo yurusenai',\n", + " 'i and love',\n", + " \"don't kiss me noisy love don't kiss me only you\",\n", + " \"don't kiss me lost my love\",\n", + " 'chikara makase no sono te wo hodoite',\n", + " 'nozondeta no wa anata no hou desho?',\n", + " 'kamawanai de ye, ye, yei',\n", + " 'suki ni sasete ye, ye, yei',\n", + " \"now i'm on my way, way, way\",\n", + " \"ima nara dekiru wa i'll say good-bye\",\n", + " 'mou modorenai just broken heart',\n", + " 'moetsukita no true love is gone',\n", + " 'tsuyogaru mune sakebu kedo',\n", + " 'just broken heart',\n", + " 'nee kirai ni naru mae ni',\n", + " 'senaka mukete get outta here',\n", + " 'namida nanka misetakunai',\n", + " 'just broken heart',\n", + " 'torimidashite sugaru no wa yamete',\n", + " 'ii kagen ni kakugo wo kimete yo',\n", + " 'kao wo agete ye, ye, yei',\n", + " 'arukidashite ye, ye, yei',\n", + " 'you can find your way, way, way',\n", + " \"kizutsukeau yori let's say good-bye\",\n", + " 'mou modorenai just broken heart',\n", + " 'moetsuktia no true love is gone',\n", + " 'tsuyogaru mune sakebu kedo',\n", + " 'just broken heart',\n", + " 'nee kirai ni naru mae ni',\n", + " 'senaka mukete get outta here',\n", + " 'namida nanka misetakunai',\n", + " 'just broken heart',\n", + " \"go where you wanna go don't chase me anymore×3\",\n", + " 'go where you wanna go',\n", + " 'mou modorenai just broken heart',\n", + " 'moetsuktia no true love is gone',\n", + " 'tsuyogaru mune sakebu kedo',\n", + " 'just broken heart',\n", + " 'nee kirai ni naru mae ni',\n", + " 'senaka mukete get outta here',\n", + " 'namida nanka misetakunai',\n", + " 'just broken heart',\n", + " \"go where you wanna go don't chase me anymore×2\",\n", + " 'go where you wanna go',\n", + " 'nami ga uneru musuu no ude ga ikite iku sube o kime kanete iru',\n", + " 'zen to aku ga enshutsu-sarete iki o nomu you na entertainment',\n", + " 'nou ga uneru tanin no ishi ga subliminal de ori-komarete iku',\n", + " 'sou ne kimi o tatoeru nara ba jikken case no shiroi mouse',\n", + " 'hoho o tsutatte ochita namida no shizuku sae mo tasuuketsu ni yotte kyakka-sareru',\n", + " 'ayatsutte kimi no kido-airaku gouriteki ni muda no nai you ni',\n", + " 'dare mo ga shinji aeru sekai madowasarezu ni nagare o midasazu ni',\n", + " 'kankaku ni mebaeta wazuka na gimon sae mo tasuuketsu ni yotte kyakka sareru',\n", + " 'ayatsutte kimi no kido-airaku gouriteki ni muda no nai you ni',\n", + " 'sentaku no yurusare nai sekai mimi o fusaite shikou mo tomete',\n", + " 'ayatsutte kimi no kido-airaku seishin ga kowarenai you ni',\n", + " 'utagai no yochi na donai sekai muri ni waratte sono te o sashi-nobete',\n", + " 'mistake, escape, \"responsibility\"',\n", + " 'despair, death way, \"all is to hope\"',\n", + " \"it's grown into a scream\",\n", + " 'kedarui music unzari',\n", + " \"it's grown into a scream\",\n", + " 'gaiken dake nakami karappo',\n", + " 'genkai wo toppashite fly away',\n", + " 'sekai igamasu vol. de',\n", + " 'sorezore no bakkuguraundo output',\n", + " 'kore ga umarete new rock',\n", + " 'is everybody going crazy?',\n", + " 'kane ni doku sareta melody',\n", + " 'is everybody going crazy?',\n", + " 'sore ni muragaru kado ni miihaa',\n", + " 'kudaranai baka na kategoraizu',\n", + " 'sono kabe buchi kowashitakute',\n", + " 'hibikaseru bakkingu to cool beat',\n", + " 'nori okureru na new wave',\n", + " 'dare mo mane ga dekinai music maikurofon kara digital input',\n", + " 'dare mo mane ga dekinai music todokeru ultimate na energy',\n", + " 'kono chiki zutto itsumademo toi wo kasaneru \"ima no haya\" ni',\n", + " 'odori odorasarete ataru isshun no eikou wa iranai',\n", + " 'genkai wo toppashite fly away',\n", + " 'sekai igamasu vol. de',\n", + " 'sorezore no bakkuguraundo output',\n", + " 'kore ga umarete new rock',\n", + " 'kudaranai baka na kategoraizu',\n", + " 'sono kabe buchi kowashitakute',\n", + " 'hibikaseru bakkingu to cool beat',\n", + " 'nori okureru na new wave',\n", + " 'ano hi boku ga nigirishimeteta yume',\n", + " 'ima wa koko ni atte',\n", + " 'hitori ni natte doko ni itatte',\n", + " 'omotteru kimi ni',\n", + " 'mune wo tsuki sasu itami sae mo',\n", + " 'wasuretaku nai yo',\n", + " 'to tsutae nai no wa',\n", + " 'semete no kimochi',\n", + " 'bariki wo saidai ni kiipu',\n", + " 'koko kara wa',\n", + " 'iya kitto hitori de ikeru to',\n", + " 'madamada faito',\n", + " 'ushinatta koto mo kate ni natte',\n", + " 'ikite ikeru to',\n", + " 'ii kikaseru',\n", + " 'subete nagedashi',\n", + " 'ima sugu ni kimi wo kono te ni tada',\n", + " 'daki yosetai yo to negau koe mo',\n", + " 'hanareteku kyori ni todoka nai kimi no nioi',\n", + " 'tada kaze ni yurete kieteku',\n", + " 'yume no daishou ni...',\n", + " 'osanai hi ni oboeta kanashimi ga',\n", + " 'ima mo wasurerare nai to',\n", + " 'uchi akete kureta',\n", + " 'kako no kizu de sae mo',\n", + " 'itoshi sugita kara',\n", + " 'kimochi ga tsutawari sugite',\n", + " 'koware nai you ni kie nai de',\n", + " 'sou te wo tsunageba yokatta',\n", + " 'its not so easy to be consistent',\n", + " 'ibara demo',\n", + " 'tomaru koto no nai',\n", + " 'toki no naka hashiri tsuzukeru',\n", + " 'furikaeru hibi nante imi nai kara',\n", + " 'te no todoku kyori ni ita kimi no nukumori sae',\n", + " 'omoidase nai de ikiteku',\n", + " 'wasuretaku nai no ni...',\n", + " 'kotoba mo ie nai mama ni',\n", + " 'kanjou wo kiipu',\n", + " 'saisho wa daitai',\n", + " 'iron wa same nai mama ni',\n", + " 'daionryou kiipu',\n", + " 'bai bai bai bai',\n", + " 'iou to zutto omotteta mono',\n", + " 'kotoba tte nande tsutaekirezu ni',\n", + " 'matte tatte modotte ko nai',\n", + " 'wakare tokatte wasureteku kara',\n", + " 'subete nagedashi',\n", + " 'ima sugu ni kimi wo kono te ni tada',\n", + " 'daki yosetai yo to negau koe mo',\n", + " 'hanareteku kyori ni todoka nai kimi no nioi',\n", + " 'tada kaze ni yurete kieteku',\n", + " 'yume no daishou ni...',\n", + " 'tsutaetai kedo',\n", + " 'bariki wo saidai ni kiipu',\n", + " 'koko made wa',\n", + " 'iya kitto kimi ga ita kara',\n", + " 'madamada faito',\n", + " 'kimi no kotoba ga kate ni natte hashiri tsudukeru',\n", + " 'hashiri tsuzukeru',\n", + " 'ikutsumono toki no naka de kimi no yume o miteitai',\n", + " 'ikutsumono yume o koete kimi ni aeru sono hi made',\n", + " 'ikutsumono toki no naka de kimi no yume o miteitai',\n", + " 'kimi wa karen na hana no youni',\n", + " 'sotto boku no mune no naka saiteiru yo',\n", + " 'kimi ni aitakute aenakute kurushikute',\n", + " 'ima mo kimi dake o kimi dake o omou',\n", + " 'kimi to tooku hanarete itemo zutto',\n", + " 'karezu boku dake ni hohoendeite',\n", + " 'kaze ga hakondekita ano kaori wa',\n", + " 'kitto kimi kara todoita messeeji',\n", + " 'kimi ga itoshikute itoshikute itai hodo',\n", + " 'kimi ni tsutaetai tsutaetai omoi',\n", + " 'ikutsumono yume o koete kimi ni aeru sono hi made',\n", + " 'ikutsumono toki no naka de kimi no yume o miteitai',\n", + " 'kimi ga itoshikute itoshikute itai hodo',\n", + " 'kimi ni tsutaetai tsutaetai omoi',\n", + " 'kimi ni aitakute aenakute kurushikute',\n", + " 'ima mo kimi dake o kimi dake o omou',\n", + " 'hagureta kizu darake no tori wo miteta',\n", + " 'kimi naraba nani wo omoudarou?',\n", + " 'usorona kimi no me ga sabishi kute',\n", + " 'iroaseta...marude owari wo miteru you ni',\n", + " 'yureta sora no shita kimi no te ni nukumori wo tada tsutaete itai taeru made...',\n", + " 'moe yuku aoki umi ga chiheisen mo',\n", + " 'hora sakeru marude owari he to mukau you ni',\n", + " 'ima umi wo koe furisosogu shikisai ga engakidasu chi de',\n", + " 'karenai omoi ga ima kudakechiru kimi no soba he...kono uta nose',\n", + " 'wataru tori ga tabi no owari wo yume mite ita sono hitomi wa dore dake jyoukei mitsumeta?',\n", + " 'wareta sora no naka kimi no te ni nukumori wo tada tsutaete itai',\n", + " 'kimi to me ni utsusou ikuoku no iro ga tokekomu keshiki wo',\n", + " 'kono uta wo kuchiguse no you ni kimi dake ni afuredasu koto no ba wo tsunagi omoi wo todokete...',\n", + " 'iro wa kie onto mo naku shizuka ni yuki ga furu',\n", + " 'kaze no ugokanai mori no naka de nemutte itan dayo',\n", + " 'we’re discouraged',\n", + " 'we’re discouraged',\n", + " 'stillness in time',\n", + " 'we’re discouraged',\n", + " 'we’re discouraged',\n", + " 'stillness in time',\n", + " 'iro no narabi ga chigau niji ga sora ni kakaru',\n", + " 'gyaku nu nakareru jikan no naka de mezamerun darou',\n", + " 'we’re discouraged',\n", + " 'we’re discouraged',\n", + " 'stillness in time',\n", + " 'we’re discouraged',\n", + " 'we’re discouraged',\n", + " 'stillness in time',\n", + " 'we’re discouraged',\n", + " 'stillness in time',\n", + " 'we’re discouraged',\n", + " 'stillness in time',\n", + " 'we’re discouraged',\n", + " 'we’re discouraged',\n", + " 'stillness in time',\n", + " 'we’re discouraged',\n", + " 'we’re discouraged',\n", + " 'stillness in time',\n", + " 'we’re discouraged',\n", + " 'stillness in time',\n", + " 'we’re discouraged',\n", + " 'stillness in time',\n", + " 'bazkaldurikan bapo-bapo',\n", + " 'goazen bai plazara',\n", + " 'hantxen egingo degu',\n", + " 'gogotik algara',\n", + " 'oraindikan, mutilak',\n", + " 'tragotxo bat bota',\n", + " 'bota, bota beste bat',\n", + " 'oraindikan bota',\n", + " 'bazkaldurikan bapo-bapo',\n", + " 'goazen bai plazara',\n", + " 'hantxen egingo degu',\n", + " 'gogotik algara',\n", + " 'tragoarekin zaigu, zaigu',\n", + " 'barrena pixkortu',\n", + " 'ez zan gizon makala',\n", + " 'hau zuena sortu',\n", + " 'oraindikan, neskatxak',\n", + " 'tragotxo bat bota',\n", + " 'bota, bota beste bat',\n", + " 'oraindikan bota',\n", + " 'bazkaldurikan bapo-bapo',\n", + " 'goazen bai plazara',\n", + " 'hantxen egingo degu',\n", + " 'gogotik algara',\n", + " 'oraindikan, mutilak',\n", + " 'tragotxo bat bota',\n", + " 'bota, bota beste bat',\n", + " 'oraindikan bota',\n", + " 'din don',\n", + " '(c. m. alberdi)',\n", + " 'din don, din don, din don',\n", + " 'orain hameikak',\n", + " 'din don, din don, din don',\n", + " 'laster hamabixek',\n", + " 'dun! jo dik ordu bata',\n", + " 'din don ordu bixek',\n", + " 'holako erlojurik',\n", + " 'ez zaukek azpeitixek',\n", + " 'mi tío procurador',\n", + " 'mi padre alkate',\n", + " 'mis hermanas maestras',\n", + " 'conmigo cásate',\n", + " 'ai! mírame, gaxua!',\n", + " 'erantzun ezazute',\n", + " 'zertarako hoiekin',\n", + " 'ezkontzen zerate?',\n", + " 'din don...',\n", + " 'mi aittitte relojero',\n", + " 'mi tía jostune',\n", + " 'mi hermano mixionero',\n", + " 'conmigo cásate',\n", + " 'ai! mírame, gaxua!',\n", + " 'erantzun ezazute',\n", + " 'zertarako hoiekin',\n", + " 'ezkontzen zerate?',\n", + " 'din don...',\n", + " 'gipuzkoa erdian',\n", + " 'izarraitz menpian',\n", + " 'urola barrenian',\n", + " 'azkoitiko herrian',\n", + " 'ai! mírame, gaxua!',\n", + " 'erantzun ezazute',\n", + " 'zertarako hoiekin',\n", + " 'ezkontzen zerate?',\n", + " 'din don...',\n", + " 'después de almorzar bien a gusto',\n", + " 'vámonos a la plaza',\n", + " 'allí montaremos',\n", + " 'una buena juerga',\n", + " 'esperad, chicos',\n", + " 'echemos todavía otro traguito',\n", + " 'echemos, echemos uno más',\n", + " 'echemos todavía',\n", + " 'después de almorzar bien a gusto',\n", + " 'vámonos a la plaza',\n", + " 'allí montaremos',\n", + " 'una buena juerga',\n", + " 'el trago nos ha reanimado',\n", + " 'el interior',\n", + " 'no fue un hombre cualquiera',\n", + " 'quien esto inventó',\n", + " 'venga, chicas',\n", + " 'echemos el último traguito',\n", + " 'echemos, echemos uno más',\n", + " 'echemos todavía',\n", + " 'después de almorzar bien a gusto',\n", + " 'vámonos a la plaza',\n", + " 'allí montaremos',\n", + " 'una buena juerga',\n", + " '--',\n", + " '(c. m. alberdi)',\n", + " 'din-don, din-don',\n", + " 'ahora son las once',\n", + " 'din-don, din-don',\n", + " 'pronto las doce',\n", + " '¡dun! dió la una',\n", + " 'din-don, las dos',\n", + " 'azpeitia no tiene',\n", + " 'un reloj como éste',\n", + " 'mi tío procurador',\n", + " 'mi padre alcalde',\n", + " 'mis hermanas maestras',\n", + " 'cásate conmigo',\n", + " '¡ay! mírame, pobrecilla',\n", + " 'contestadme:',\n", + " '¿cómo os casáis',\n", + " 'con esa gente?',\n", + " 'din-don...',\n", + " 'mi abuelo relojero',\n", + " 'mi tía costurera',\n", + " 'mi hermano misionero',\n", + " 'cásate conmigo',\n", + " '¡ay! mírame pobrecilla',\n", + " 'y contestadme:',\n", + " '¿cómo os casáis',\n", + " 'con esa gente?',\n", + " 'din-don...',\n", + " 'en el centro de gipuzkoa',\n", + " 'bajo el izarraitz',\n", + " 'bien entrado el valle de urola',\n", + " 'en el pueblo, pobrecilla',\n", + " 'y contestadme:',\n", + " '¿cómo os casáis',\n", + " 'con esa gente?',\n", + " 'din don...',\n", + " '--',\n", + " 'after having a delicious lunch',\n", + " 'we go to the square',\n", + " 'and there we start up a great party',\n", + " \"guys, wait! let's take another drink\",\n", + " 'come on, one more drink',\n", + " 'we have to have',\n", + " 'after having a delicious lunch',\n", + " 'we go to the square',\n", + " 'and there we start up a great party',\n", + " 'our interior has',\n", + " 'revived with the drink',\n", + " 'not just any ordinary person',\n", + " 'has invented this',\n", + " 'hurry up, girls!',\n", + " \"let's have our last drink\",\n", + " 'come on, just one more drink,we must have',\n", + " 'after having a delicious lunch',\n", + " 'we go the square',\n", + " 'and there we start up a great party',\n", + " '--',\n", + " 'ding-dong, ding-dong, ding-dong',\n", + " 'now it is eleven',\n", + " 'ding dong, ding dong',\n", + " 'soon it will be noon, (twelve)',\n", + " \"dong, it's one\",\n", + " 'ding -dong, two',\n", + " 'azpeitia has not',\n", + " 'a watch like this',\n", + " 'my uncle, attorney',\n", + " 'my father, mayor',\n", + " 'my sisters, teachers',\n", + " 'marry me!',\n", + " 'oh, just look at me you poor thing',\n", + " 'answer me',\n", + " 'how is it possible you have married to those people?',\n", + " 'ding-dong...',\n", + " 'my grandfather, watchmaker',\n", + " 'my aunt, seamstress',\n", + " 'my brother, missionary',\n", + " 'marry me!',\n", + " 'oh, just look at me you poor thing',\n", + " 'and answer me:',\n", + " 'how is it possible you have married to those people?',\n", + " 'ding-dong...',\n", + " 'at the heart of gipuzkoa',\n", + " 'under the izarraitz',\n", + " 'deep inside the valley of urola',\n", + " 'in the village, you poor thing',\n", + " 'answer me;',\n", + " 'how is it possible you have married to those people?',\n", + " 'ding-dong...']}}},\n", + " 'fi': {'sentence': {'pop': {'meta': {'train_data': ['maanwäen maanportti',\n", + " 'alas wartta',\n", + " 'kastesienen rihmastoista',\n", + " 'niwosköyde',\n", + " 'wyöltä wuolos',\n", + " 'katkerkyynel',\n", + " 'kiwen loween',\n", + " 'kaiwa kannon alle',\n", + " 'kynsin kynnä',\n", + " 'wäsy wäsy',\n", + " 'deep deep',\n", + " 'ether earth alive',\n", + " 'yet deeper still',\n", + " 'stoned heart',\n", + " 'a triumph over flesh',\n", + " 'meander like mushroom roots',\n", + " 'in the meridian of the spheres',\n", + " 'eloign fears beyond reason',\n", + " 'therefore deep deep',\n", + " 'yet deeper still',\n", + " 'katariina koissa kulki',\n", + " 'ilma vyt valehti',\n", + " 'siit vki miettimhn',\n", + " 'ukot, akat arvomahan',\n", + " 'kyln vki kuiskimahan',\n", + " 'juorummt urkkimah',\n", + " 'kyln vki kuiskimahan',\n", + " 'mmt urkkimah',\n", + " 'mik meijn minjll',\n", + " 'mik meijn minill',\n", + " 'mik meijn minjll',\n", + " 'mik meijn minill',\n", + " 'vytt valehtii',\n", + " 'ilman vyt valehtii',\n", + " 'vytt valehtii',\n", + " 'ilman vyta valehtii',\n", + " 'katariina koissa kulki',\n", + " 'ilman vyt valehti',\n", + " 'siit vki miettimhn',\n", + " 'ukot akat arvomahan:',\n", + " 'mik meijn minjll',\n", + " 'mik meijn minill',\n", + " 'mik meijn minjll',\n", + " 'mik minill',\n", + " 'vytt valehtii',\n", + " 'ilman vyt valehtii',\n", + " 'vytt valehtii',\n", + " 'ilman vyt valehtii',\n", + " 'oisko ollu asialla',\n", + " 'kyln pojat pontevimmat',\n", + " 'aitan ovell iltasella',\n", + " 'katariinan kynnyksell',\n", + " 'mik meijn minjll',\n", + " 'mik meijn minill',\n", + " 'mik meijn minjll',\n", + " 'mik meijn minill',\n", + " 'vytt valehtii',\n", + " 'ilman vyt valehtii',\n", + " 'vytt valehtii',\n", + " 'ilman vyt valehtii',\n", + " 'mik meijn minjll...',\n", + " 'katariina wandered through the house',\n", + " 'and her belt was missing',\n", + " 'that set the people thinking',\n", + " 'the men, the women wondering',\n", + " 'all the villagers whispering',\n", + " 'the scandal-mongers snooping',\n", + " 'all the villagers whispering',\n", + " 'the nosy women snooping',\n", + " \"what's up with the girl\",\n", + " \"what's up with the girl?\",\n", + " \"what's up with the girl\",\n", + " \"what's up with the girl?\",\n", + " 'without a belt she wandered there',\n", + " 'and her belt was missing',\n", + " 'without a belt she wandered there',\n", + " 'and her belt was missing',\n", + " 'katariina wandered through the house',\n", + " 'and her belt was missing',\n", + " 'that set the people thinking',\n", + " 'the men, the women wondering',\n", + " \"what's up with the girl\",\n", + " \"what's up with the girl?\",\n", + " \"what's up with the girl\",\n", + " \"what's up with the gir\",\n", + " 'like maggots we crawl here',\n", + " 'in search for our purpose',\n", + " 'the taste of virgin oil in our mouth',\n", + " 'explain this',\n", + " 'explain that',\n", + " 'can’t understand why',\n", + " 'this can’t be all',\n", + " \"and i'm not giving up\",\n", + " 'destroy and dominate!',\n", + " 'i need more in my life',\n", + " 'destroy and dominate!',\n", + " 'we all want to be gods',\n", + " 'i... am... the... god...',\n", + " 'i... am... what... i... want',\n", + " 'you must hurt to believe',\n", + " 'you must kill to receive',\n", + " 'go to work',\n", + " 'get paid',\n", + " 'and then just hope to get laid',\n", + " 'explain this',\n", + " 'and explain that',\n", + " 'still don’t know why',\n", + " \"this can’t be all that i'm going to have\",\n", + " 'tätä mieltä et sinä tahtonut',\n", + " 'mutta päähäsi se istutetaan',\n", + " 'tätä kieltä et sinä toivonut',\n", + " 'mutta suuhusi se ommellaan',\n", + " 'sinä sanot mitä me sanomme',\n", + " 'sinä teet rumat tekomme',\n", + " 'sinä kärsit... minä nautin',\n", + " 'sinä häviät... minä vaadin',\n", + " 'sinä teet... minä käsken',\n", + " 'siitä puuttuu kolme käskyä!',\n", + " 'mutta silti... minä jatkan',\n", + " 'sinä alistut... sen parempi',\n", + " 'law ta3rafoh',\n", + " 'law yom ye2abilko s2aloh',\n", + " 'leih el2ayam yaakhdoh',\n", + " 'law ta3rafoh',\n", + " 'law yom choftoh kallemoh',\n", + " '3a nnas hena bihebooh',\n", + " 'ou fakkaroh fatni ou bastanah',\n", + " 'ou kaman ba2a 3arrafoh',\n", + " 'min fat habibo taah',\n", + " 'ou b2o s2aaloh',\n", + " 'ezzayo we zay halo',\n", + " 'fe balo aw mech fe baalo',\n", + " 'mansach hawana w 2amaana',\n", + " 'kolli li t2al 2oloooh',\n", + " 'ou b2o s2aaloh',\n", + " 'ezzayo we zzay halo',\n", + " 'fe balo aw mech fe baalo',\n", + " 'mansach hawana w 2amaana',\n", + " 'kolli li t2al 2oloooh',\n", + " 'ou fakkaroh fatni ou bastanah',\n", + " 'ou kaman ba2a 3arrafoh',\n", + " 'min fat habib ou taah',\n", + " 'law ta3rafoh',\n", + " 'law kan fi binkom kalam',\n", + " 'had ysallem li 3aleiih',\n", + " 'law ta3rafoh',\n", + " '2ouloulou bab3at lou salam',\n", + " 'le3nih we l2albo liih',\n", + " 'law ta3rafoh',\n", + " 'law kan fi binkom kalam',\n", + " 'had ysallem li 3aleiih',\n", + " 'law ta3rafoh',\n", + " '2ouloulou bab3at lou salam',\n", + " 'le3nih we l2albo liih',\n", + " 'ou fakkaroh fatni ou bastanah',\n", + " 'ou kaman ba2a 3arrafoh',\n", + " 'min fat habibo taah',\n", + " 'ou b2o s2aaloh',\n", + " 'ezzayo we zzay halo',\n", + " 'fe balo aw mech fe baalo',\n", + " 'mansach hawana w 2amaana',\n", + " 'kolli li t2al 2oloooh',\n", + " 'ou b2o s2aaloh',\n", + " 'ezzayo we zzay halo',\n", + " 'fe balo aw mech fe baalo',\n", + " 'mansach hawana w 2amaana',\n", + " 'kolli li t2al 2oloooh',\n", + " 'ou fakkaroh fatni ou bastanah',\n", + " 'ou kaman ba2a 3arrafoh',\n", + " 'min fat habib ou taah',\n", + " 'juosten kylmässä käyt',\n", + " 'askelin alastomin',\n", + " 'viiman talvisen purressa',\n", + " 'luihin ja ytimiin',\n", + " 'jumalan sokea sisar',\n", + " 'kutsuu sinua',\n", + " 'kutsuu kuiskaten',\n", + " 'toiselta unohdetulta rannalta...',\n", + " 'kaadut juoksuaskeliin',\n", + " 'vaan et tunne, kun viiltää jää',\n", + " 'hiuksensa kauniit piirtää',\n", + " 'verivanaa sinulle seurata...',\n", + " 'maailmastaan kumuaa',\n", + " 'vahva sointi rummun',\n", + " 'aalloista kaikuu',\n", + " 'kaikuu rannasta',\n", + " 'lyö samaan tahtiin',\n", + " 'kanssa sydämesi',\n", + " 'vaan lakkaa',\n", + " 'ellet saavukaan...',\n", + " 'blind sister',\n", + " 'you run in the cold',\n", + " 'with naked steps',\n", + " 'as the winter draught bites',\n", + " 'to the bone and to the core',\n", + " 'the blind sister of god',\n", + " 'calls you',\n", + " 'calls you whispering',\n", + " 'from another forgotten shore...',\n", + " 'you fall whilst running',\n", + " \"but you don't feel the ice cutting you\",\n", + " 'her beautiful hair draws',\n", + " 'a bloody line for you to follow...',\n", + " 'from her world stems',\n", + " 'a pounding of a drum',\n", + " 'it reflect from the waves',\n", + " 'from the shore',\n", + " 'it beats in syncopation',\n", + " 'with your heart',\n", + " 'but it will stop',\n", + " 'if you do not come...',\n", + " 'tuuli harhaa',\n", + " 'pyhätöt kasvavat lehdot',\n", + " 'silmäten lehtii',\n", + " 'saapuu keväin haie',\n", + " 'viljavalti parveilee',\n", + " 'spring wind strays',\n", + " 'rinses and dyes the leafs',\n", + " 'morning is stirred',\n", + " 'äärellä veden luodolla istuen',\n", + " 'polviin päänsä painaneena',\n", + " 'laineet kolean tuulen syleilyssä',\n", + " 'taakkansa saavat kantaakseen',\n", + " 'nähnyt on tulta, nähnyt on kuolemaa',\n", + " 'mies petojen kasvattama',\n", + " 'nähnyt on hävityksen kansansa',\n", + " 'nähnyt mitä ei voi unohtaa',\n", + " 'taivaille vannonut ikuista vihaa',\n", + " 'kantaja miekan ruosteisen',\n", + " 'kantaja kiven kironnut kuninkaita',\n", + " 'polttanut maat takanaan',\n", + " 'laaksoihin kärsimysten',\n", + " 'virtaan vetten katkeruuden',\n", + " 'polkuja seuraamatta',\n", + " 'painon alle musertuen',\n", + " 'äärellä veden kurjalla karilla',\n", + " 'hahmo raskain aatoksin',\n", + " 'yksin kiroaa, hiekalle laskee',\n", + " 'kiveenhakatun kohtalon',\n", + " 'ei aukene taivas, ei nouse tuuli',\n", + " 'pilvet rantaa varjostavat',\n", + " 'hiljaisuudessa kiroaa ja odottaa',\n", + " 'matkaaja tyhjään huomiseen',\n", + " 'sitä surua ei voi unohtaa',\n", + " 'ei kiveä jalkoihin laskea',\n", + " 'sitä vihaa ei voi tukahduttaa',\n", + " 'on hulluus kiven painona',\n", + " 'sitting on a rock by the sea',\n", + " 'with head bown to his knees',\n", + " 'caressed by the coldest wind',\n", + " 'the silent waves receive his burden',\n", + " 'fire has he seen and death as well',\n", + " 'man grown up by beasts',\n", + " 'destruction has he seen, of his own people',\n", + " 'seen what cannot be unmade',\n", + " 'eternal hatred to all heavens',\n", + " 'by a corroded blade he swore',\n", + " 'the bearer of stone, cursed has he kings',\n", + " 'and burnt all the land behind',\n", + " 'to valleys of suffering',\n", + " 'into the stream of bitter rivers',\n", + " 'aside paths made by man',\n", + " 'ever under crushing weight',\n", + " 'on an isolated rock by the sea',\n", + " 'there sits a grief-stricken man',\n", + " 'alone he curses and lays on the sand',\n", + " 'a weighing fate carved in stone',\n", + " \"yet skies don't open, no wind shall rise\",\n", + " 'and clouds they shadow the shore',\n", + " 'in silence a roamer curses and waits',\n", + " 'until another tomorrow',\n", + " 'an unforgotten grief',\n", + " 'ever carried with the stone',\n", + " 'an unforsaken hatred',\n", + " 'madness weighing down the stone',\n", + " 'kuuletko tuulen vuoria jдytдvдn?',\n", + " 'jддlinnoissa talven yksin se ulvoo',\n", + " 'vapautettu pakkanen pian meidдt saavuttaa',\n", + " 'rautaportit avautuu, on aika kuoleman',\n", + " '... kun syksy vaihtuu talveen',\n", + " 'ei kylmyys tunne armoa',\n", + " 'ei pakkanen vдisty... koskaan!',\n", + " 'tunnetko poltteen jдisen peitteen',\n", + " 'hyytдvдn sisimpддsi?',\n", + " 'дlд katso valkeutta vaan kohtaa pakkanen',\n", + " 'tuhoava lempeдn taivahan',\n", + " '... kun saapuu talvi ikuinen',\n", + " 'ei kylmyys tunne armoa',\n", + " 'ei pakkanen vдisty... koskaan!',\n", + " 'kaikki lдmpвђ\" katoaa, talvi tekee tuloaan',\n", + " 'vihreд saa vaipan valkoisen',\n", + " 'pohjoisissa hoveissa on lumipeite ikuinen',\n", + " 'et kesдд enдд nдhdд saa, vain taivaan kalvenneen',\n", + " 'kylmд henkдys sammuttaa liekin',\n", + " 'ikuisen',\n", + " 'pohjoisen hoveissa on talvi armoton',\n", + " 'jдinen kiille metsissд pian heikot lannistaa',\n", + " 'talvilinnain siimeksessд aikamme on koittanut!',\n", + " 'pakkanen on nдlissддn',\n", + " 'taivaanne se verhoaa',\n", + " 'ei kylmyys tunne armoa',\n", + " 'ei pakkanen vдisty... koskaan!',\n", + " 'ei kylmyys tunne armoa',\n", + " 'ei pakkanen vдisty... koskaan!',\n", + " 'jo saapuu talvi ikuinen',\n", + " 'vihreд saa vaipan valkoisen',\n", + " 'siivet katkaistaan, vastarinta murretaan',\n", + " 'ei yksikддn enkeli eloon jдд',\n", + " 'viiltдvд pakkanen voiton saa',\n", + " 'lumi on peittдvд pohjoisen maan',\n", + " 'lehdet kalpenee, valittaen kuolee',\n", + " 'pilvet kerддntyvдt katselemaan',\n", + " 'paholaiset temmeltдvдt sydдmessд',\n", + " 'talven',\n", + " 'vдsymдttд tanssivat valkoisissa saleissa',\n", + " 'jo ikuinen talvi vallitsee',\n", + " 'sen loppua turha on odottaa',\n", + " 'kuulkaa!',\n", + " 'lapset pakkasen!',\n", + " 'kuulkaa!',\n", + " 'tдmд talvi on ikuinen!',\n", + " 'can you hear the wind gnawing the mountains?',\n", + " 'in the ice castles of winter it howls alone',\n", + " 'the frost now unleashed soon shall us reach',\n", + " \"the iron gates are opening, 'tis the time for death\",\n", + " '.... when autumn turns to winter',\n", + " 'coldness knows no mercy',\n", + " 'the frost does not stand aside... ever!',\n", + " 'can you feel the icy crust piercing through your',\n", + " 'skin',\n", + " 'burning you deep inside?',\n", + " 'quit staring at the light and encounter the frost',\n", + " 'that shall lay waste the tender sky',\n", + " '.... when the winter eternal arrives',\n", + " 'coldness knows no mercy',\n", + " 'the frost does not stand aside... ever!',\n", + " \"all warmth is vanishing, the winter's drawing\",\n", + " 'nigh',\n", + " 'green is enshrouded by white',\n", + " \"in the northern courts there's an eternal crust of snow\",\n", + " 'no summer you shall ever see, only a sky ran pale',\n", + " 'the eternal flame is blown out by a breeze so',\n", + " 'cold;',\n", + " 'the winter is unmerciful in the courts of the north',\n", + " 'the icy glitter in the forests soon puts the weak to death',\n", + " \"in the heart of the winter's stronghold our time has finally come!\",\n", + " 'the hunger of the frost is growing',\n", + " 'your heaven it enshrouds with fury',\n", + " 'coldness knows no mercy',\n", + " 'the frost does not stand aside... ever!',\n", + " 'coldness knows no mercy',\n", + " 'the frost never stands aside!',\n", + " 'welcome the winter eternal',\n", + " 'green enshrouded by white',\n", + " 'all wings are cut and the resistance is broken',\n", + " 'none of the angels shall survive',\n", + " 'the sharp cutting frost is the victor',\n", + " 'and snow shall veil the northern ground',\n", + " 'leaves are turning pale, dying in lament',\n", + " 'and the clouds are gathering to witness',\n", + " \"'tis tumult of demons in the heart of winter\",\n", + " \"with no signs of exhaust they're dancing in the white halls\",\n", + " \"at last it's the reign of the eternal winter\",\n", + " 'a vain hope that it will end',\n", + " 'hear me!',\n", + " 'children of the frost!',\n", + " 'hear me!',\n", + " 'this winter is forever!',\n", + " 'olemme onnettomuus',\n", + " 'rutto ja kulkutauti',\n", + " 'olemme suvaitsemattomuus',\n", + " 'kuivuus ja nälänhätä',\n", + " 'murha',\n", + " 'olemme tuho ja hävitys',\n", + " 'tulva ja tuli',\n", + " 'olemme viha ja väkivalta',\n", + " 'sydämmesi pimeys',\n", + " 'ilmestyskirjan ratsastajat',\n", + " 'tuomiopäivän airuet',\n", + " 'ilmestyskirjan ratsastajat',\n", + " 'sota, nälkä, taudit ja kuolema!',\n", + " 'murha',\n", + " 'olemme epätoivo joka jäätää sydämmesi',\n", + " 'myrkky verenkierrossasi',\n", + " 'olemme varjo silmäkulmassasi',\n", + " 'terä yössä, joka viiltää kurkkusi',\n", + " '(english translation:)',\n", + " 'riders of the apocalypse',\n", + " 'we are calamity',\n", + " 'plague and epidemic',\n", + " 'we are intolerance',\n", + " 'drought and famine',\n", + " 'we are destruction and havoc',\n", + " 'flood and fire',\n", + " 'we are hate and violence',\n", + " 'the darkness of your heart',\n", + " 'riders of the apocalypse',\n", + " 'heralds of the coming doomsday',\n", + " 'riders of the apocalypse',\n", + " 'war, famine, calamity and death!',\n", + " 'we are the desperation that freezes your heart',\n", + " 'we are the poison in your circulation',\n", + " 'we are the shadow in the corner of your eye',\n", + " 'we are the knife in the night that cuts your throat',\n", + " 'nousetko vielä',\n", + " 'makea ruusun tuoksu',\n", + " 'virtaatko vielä',\n", + " 'kuulas meden juoksu',\n", + " 'nousetko vielä',\n", + " 'vain pursuna suoksi',\n", + " 'ja kuihdut kumaraan',\n", + " 'surun vuoksi',\n", + " 'nousetko vielä',\n", + " 'taimesta tuoksi',\n", + " 'virtaatko vielä',\n", + " 'joen juoksuna luokse',\n", + " 'nousetko vielä',\n", + " 'vai painutko suoksi',\n", + " 'ja peität rantaani',\n", + " 'surun vuoksi',\n", + " '(english translation:)',\n", + " 'wavery',\n", + " 'would you rise again',\n", + " 'sweet lure of a rose',\n", + " 'would you flow again',\n", + " 'run of honey sparkle',\n", + " 'would you grow again',\n", + " 'on mire and marshes',\n", + " 'or bend and perish',\n", + " 'to woe burned ashes',\n", + " 'would you rise again',\n", + " \"hope's seedling\",\n", + " 'would you flow again',\n", + " 'or descend to depths',\n", + " 'and drown my shore',\n", + " 'wavering misery',\n", + " 'tulkaapa äijät, nyt ryypätään kun minun hautajaiseni on',\n", + " 'itse kun tänne kuoppaan suistuin seuraksenne vain taivu en',\n", + " 'kuten sinä, kuten minä, vaikka te taikka me;',\n", + " 'kunhan vain saamme juodaksemme',\n", + " 'hei tulehan ja kuule kuinka iloisesti kilahtaa',\n", + " 'se malja juoka nyt tyhjennämme',\n", + " 'tulkaapa markus, mitja, marko ja henri',\n", + " 'hilpeät veikot riimukivelle',\n", + " 'kun tässä kerran jo istuttu on niin reilut kännit kiskaiskaamme',\n", + " 'hautakiveeni saa kaivertaa tilaisuus kun siihen on:',\n", + " '\"tässä lepää ja aikaansa viettää juoppolalli verraton.\"',\n", + " \"come along fellows, let's booze all night for it is now my funeral\",\n", + " \"i just slipped into this grave and can't keep you company\",\n", + " 'just like you as well as me, just like any of us near;',\n", + " 'as long as we get to drink our beer',\n", + " 'hey stop by to listen how merrily it clinks',\n", + " 'as we raise a chalice to be emptied here',\n", + " 'come now markus, mitja, marko and henri',\n", + " 'the merry men on my burial ground',\n", + " 'now that we1ve sat here for long enough',\n", + " 'it would be time to get real drunk',\n", + " 'i would be glad if someone carved these honest words on my tombstone:',\n", + " '\"underneath you lies and rests one excellent, unrivalled sot.\"',\n", + " 'hands up. clap clap. hands up. everybody clap clap',\n", + " 'kim ga ima sonna chiisa na te de gyutto nigirishimete hanasanai no wa',\n", + " 'kono saki ni machiuketeru mirai e no chiketto (ticket) kana?',\n", + " 'konna umareta bakari no inochi ni takusareta yume',\n", + " '\"yasashiku, soshite shiawase ni sodachimasu you ni\"',\n", + " 'yogore kitta kono sekai e to tobidashite',\n", + " 'kokkara hajimatte iku kimi dake no sutoorii (story) (everybody clap clap)',\n", + " 'itsuka yume de miteita you na yoake wo',\n", + " 'kimi wa miretara ii na (everybody clap clap)',\n", + " 'itsuka kimi ga boku mitai na otona ni',\n", + " 'natte hoshiku wa nai kara (everybody clap clap)',\n", + " 'hands up. clap clap. hands up. everybody clap clap',\n", + " 'mazariau hito no kokoro to kokoro shinjitsu to uso kakehiki shite wa',\n", + " 'sono originaru (original) no kimi ga nurikaerarete iku',\n", + " 'yatto dareka wo keotoshite made te ni ireta manee (money)',\n", + " 'soshite tsuini temoto ni nokotta no wa nani?',\n", + " 'hontou ni taisetsu da to omou mono made hanarete iku baddo endingu (bad ending) na monogatari',\n", + " 'daremo mita koto ga nai you na yoake wo',\n", + " 'kimi wa miretara ii na (everybody clap clap)',\n", + " 'itsuka kimi ga boku mitai na otona ni',\n", + " 'natte hoshiku wa nai kara (everybody clap clap)',\n", + " \"saigen'naku azayaka ni irodorareta sekai sae monokuro (monochrome) ni utsushidasu hitomi\",\n", + " 'shoukkoi garasu (glass) tama no you ni toumei na ano koro ni wa',\n", + " \"mou modorenai n' da to shitte ite mo mada,,\",\n", + " 'itsuka yume de miteita you na yoake wo',\n", + " 'kimi to miretara ii na (everybody clap clap)',\n", + " 'itsuka boku mo kimi mitai na hitomi wo',\n", + " 'mata torimodoseru no kana (everybody clap clap)',\n", + " 'daremo mita koto nai you na yoake wo',\n", + " 'kimi to miretara ii na (everybody clap clap)',\n", + " 'soshitara boku mo kimi mitaku kagayakeru',\n", + " \"sonna ki sae shiteru n' da (everybody clap clap)\",\n", + " 'hands up. clap clap. hands up. everybody clap clap',\n", + " 'hail to the king',\n", + " 'hail to the queen',\n", + " 'hail to the house, maidens and squires',\n", + " 'one for the sun',\n", + " 'one for the moon',\n", + " 'one for every star in the sky!',\n", + " 'drink for the living',\n", + " 'drink for the dead',\n", + " 'drink for the keepers of otherworld',\n", + " 'hail to the elven',\n", + " 'hail to the dwarfs:',\n", + " 'hail to the goblins - hell to the orcs!',\n", + " 'drink for the fire',\n", + " 'drink for the cold:',\n", + " \"drink for the winter's frost father old\",\n", + " 'drink for spring',\n", + " \"(let's) drink for her, for sweet\",\n", + " \"thighs of eostre and sun's return\",\n", + " 'hail to my left foot',\n", + " 'hail to your right',\n", + " 'hail to the mighty one in the middle',\n", + " 'drink for the ladies -',\n", + " 'ah! indeed...',\n", + " 'also (one) to some very special sheep',\n", + " 'toinen mulle kaatakaa, malja meille nostakaa',\n", + " 'tänä yönä pimeys meitä väistää!',\n", + " 'hullun lailla tanssikaa, lailla hullun naurakaa',\n", + " 'huomispäivä jos ees nousee, ken voi titää!',\n", + " 'lailla juopuneiden jumalten, viinin hengen, humalten',\n", + " 'vaaraa, pimeyttä hurmio uhmaa',\n", + " \"kuolema voi odottaa, unhdus - ket' kiinnostaa?\",\n", + " 'on lyhyt elontie, siis pitäkäämme hauskaa!',\n", + " 'one for the fallen, one for the pure',\n", + " 'one for the wicked and one for the true',\n", + " 'drink to the virgins!',\n", + " 'drink to the whores',\n", + " '(drink) to all blessed mothers and all their chores',\n", + " 'one for you, sire!',\n", + " 'one for me own',\n", + " 'one for you all and one for...',\n", + " 'drink for the ceiling',\n", + " 'drink for the floor',\n", + " '(for) all between and much much more!',\n", + " 'tuure kilpeläinen',\n", + " 'lisätään lämpöä',\n", + " 'armoton maa / such a harsh land',\n", + " 'ei hymyile suotta / not often smiling',\n", + " 'sen viimassa tarpoo / one walks in the wind',\n", + " 'tarjoo kassalla kuittia / must offer you receipt',\n", + " 'armoton maa / such a harsh land',\n", + " 'ei tervehdi vieraita / not talking to strangers',\n", + " 'se kaappiinsa kätkee / it hides in the closet',\n", + " 'kaikkein kauneimmat astiat / all that is beautiful',\n", + " 'anna sun kätesi / please let me hold your hand',\n", + " 'ota minut vastaan / please let me come inside',\n", + " 'kun ulkona kylmentynyt / when it is so cold outside',\n", + " 'nyt ihmiset / now, fellow men',\n", + " \"lisätään lämpöä / let's get a bit warmer\",\n", + " 'sylillinen / one more armful',\n", + " 'halkoja nuotioon / of wood for the fire',\n", + " 'niin kaunis on maa / such lovely a land',\n", + " 'viaton leikki lapsien / the play of the innocent',\n", + " 'ne oppia saa / they shall be learning',\n", + " 'laulut pohjolan tulvien / the songs of the bitter north',\n", + " 'hetki on syntyä / one moment to be born',\n", + " 'kasvaa ja kuolla / to grow and then to die',\n", + " 'hetki on haaveilla / one moment for dreaming',\n", + " 'haavoja nuolla / for caring the hurting',\n", + " 'pelätä, empiä / to fear and to hesitate',\n", + " 'hehkua lempeä / to love and to embrace',\n", + " 'niin, että kipinät lyö / so that the fire is born',\n", + " 'ihmiset / fellow men',\n", + " \"lisätään lämpöä / let's get a bit warmer\",\n", + " 'vielä sylillinen / one more armful',\n", + " 'halkoja nuotioon / of wood for the fire',\n", + " 'siis ihmiset / now please, fellow men',\n", + " \"lisätään lämpöä / let's get a bit warmer\",\n", + " 'vielä kourallinen / one more handful',\n", + " 'arvoa tuokioon / of worth for the moment',\n", + " 'ja mä katson tätä maisemaa / and i look at the landscape',\n", + " 'se sulkeutuu tai aukeaa / its closing, its opening',\n", + " \"se mitä mieli heijastaa / it's what the mind reflects\",\n", + " 'on kaikki mitä nään / is all that i can see',\n", + " \"lisätään lämpöä / let's get warmer\",\n", + " 'sylillinen / one more armful',\n", + " 'halkoja nuotioon / of wood for the fire',\n", + " 'siis ihmiset / now please, fellow men',\n", + " \"lisätään lämpöä / let's get a bit warmer\",\n", + " 'vielä kourallinen / one more handful',\n", + " 'arvoa tuokioon / of worth for the moment',\n", + " 'katson tätä maisemaa / i look a t the landscape',\n", + " \"se sulkeutuu tai aukeaa / it's closing or opening\",\n", + " \"se mitä mieleni heijastaa / it's what the mind reflects\",\n", + " 'on kaikki mitä nään / is all that i can see',\n", + " 'ihmiset / fellow men',\n", + " \"lisätään lämpöä / let's get warmer\",\n", + " 'vielä sylillinen / one more armful',\n", + " 'halkoja nuotioon. / of wood for the fire',\n", + " 'english translation by panze',\n", + " 'sataa',\n", + " 'don’t ask me why',\n", + " 'sä kikatat liian kovaa',\n", + " 'don’t ask me why',\n", + " 'voi puhua kaikesta',\n", + " 'don’t ask me why',\n", + " 'rottinkituolit',\n", + " 'mee pois',\n", + " 'don’t ask me why',\n", + " 'eiku tuu sittenkin takas',\n", + " 'don’t ask me why',\n", + " 'ilahduttavuus',\n", + " 'don’t ask me why',\n", + " 'menetä tämä päivä',\n", + " 'harmaa sävytön paiste',\n", + " 'valkoisten kärpästen suvi',\n", + " 'iltapäivä ankeaa kesää',\n", + " 'matka kiveen kuvaa',\n", + " 'hymyile 7 toivo',\n", + " 'suuntaa vene hyvään ajoon',\n", + " 'väkevä taimi kasva täällä',\n", + " 'vie meidät mailta',\n", + " 'tuonne kohti',\n", + " 'vapaa saattaja',\n", + " 'seitsen sarvi haara',\n", + " 'hirvi vie rajoille',\n", + " 'kuolleen ajo hiljaa',\n", + " 'laske väsynyt vesi',\n", + " 'saata hautaan laulu',\n", + " 'elä uusi verso',\n", + " 'vehreys täällä kalmistossa',\n", + " 'kanna pois',\n", + " 'väli kasvaa',\n", + " 'viimein ajo',\n", + " 'äären halki',\n", + " 'lose this thin day',\n", + " 'grey shine of june',\n", + " 'mid-summer of white flies',\n", + " 'dreary afternoon',\n", + " 'trail carved in stone',\n", + " \"bliss' path\",\n", + " 'burial-boats blaze',\n", + " \"in summer's ceremony\",\n", + " 'takes us there',\n", + " 'to seasons feast',\n", + " 'seven spiked elk',\n", + " 'let us sway',\n", + " 'to the shadow',\n", + " 'of the grave-meadows',\n", + " 'prepare the dead',\n", + " 'rinse the grey skin',\n", + " 'sprouts growing',\n", + " 'in burial-grove',\n", + " 'spirit carriages',\n", + " 'through the vale',\n", + " '-sataa-',\n", + " 'sataakohan',\n", + " 'silloin lunta',\n", + " 'kun tulet hiljaa huoneeseen',\n", + " 'en ole vielä valmis',\n", + " 'ja joka hetki kuin viimeistään',\n", + " 'sun sydän lyö',\n", + " '(kertosäe)',\n", + " 'niin taivaltaa',\n", + " 'niin taivaltaa',\n", + " 'hän halki tuntemattoman',\n", + " 'sataakohan',\n", + " 'vai onko lehdet',\n", + " 'jo puista maahan pudonneet',\n", + " 'et ole vielä valmis',\n", + " 'ja joka askeleella',\n", + " 'sua pelko syö',\n", + " '(kertosäe)',\n", + " '-it snows -',\n", + " 'does it snow',\n", + " 'snow (then)',\n", + " 'when you silently enter the room',\n", + " \"i'm not ready yet\",\n", + " 'and every moment, like its last',\n", + " 'your heart beats',\n", + " '(chorus)',\n", + " 'so wanders/journeys',\n", + " 'so wanders/journeys',\n", + " 'he/she through the unknown',\n", + " 'does it rain,',\n", + " 'or have the leaves',\n", + " 'already fallen down (to the ground) from the trees',\n", + " \"you're not ready yet\",\n", + " 'and on every step',\n", + " 'fear consumes you',\n", + " '(chorus) x2',\n", + " 'part 1: erämaajärvi',\n", + " 'kautta erämaajärven',\n", + " 'matkaa kulkuri yksinäinen',\n", + " 'näkee lammella joutsenparven',\n", + " 'vapauttaan itkevän',\n", + " 'kaipuu menneisyyteen',\n", + " 'kiirii ilmassa huutoina kotkien',\n", + " 'ikijärveltä turvatulta',\n", + " 'käy matka vuorten taa',\n", + " 'part 2: witchdrums',\n", + " 'instrumental',\n", + " 'part 3: this moment is eternity',\n", + " 'day possesses no key here',\n", + " 'where moon sheds the cold twilight',\n", + " 'this moment is eternity',\n", + " 'land of beauty',\n", + " 'cold and cruel',\n", + " 'fjeld chants echoing',\n", + " 'reflecting the melancholy',\n", + " 'trust the wind',\n", + " 'trust the fire',\n", + " 'call for the hermit',\n", + " 'the hermit of the night',\n", + " 'land of raven',\n", + " 'land of bear',\n", + " 'land of eagle',\n", + " 'and wolverine',\n", + " 'dismal are the mirrors of a wolf',\n", + " 'part 4: etiäinen',\n", + " 'instrumental',\n", + " '\"aurinko ja kuu',\n", + " 'syttyneet kaukana sieltä',\n", + " 'missä lehväin suoja yllein kumartuu',\n", + " 'kai vuosia olen jo kulkenut',\n", + " 'muassa metsien kansojen',\n", + " 'olen oppinut viisautta susilta',\n", + " 'ja nukkunut karhujen kanssa',\n", + " 'yhtään ihmistä en ole kohdannut',\n", + " 'kylänkään liepeille sattunut',\n", + " 'tiedä en matkaani kotoa',\n", + " 'kohtalo sanelee minne johtaa tie.\"',\n", + " 'kaukana tyvenessä',\n", + " 'vehreä polku verelle johdattaa',\n", + " 'yllä maan, taivas kattona',\n", + " 'loppunsa on kaikella',\n", + " '\"kai vuosia olen jo kulkenut',\n", + " 'miettien veljeni lähtöä',\n", + " 'kunpa tietäisin minne hän päätyy',\n", + " 'jumalat suojelkoot häntä matkallaan.\"',\n", + " 'järkähtävät vankat kalliot',\n", + " 'vaeltavat kuu ja aurinko',\n", + " 'tuulet yltyvät, myrskyt tyyntyvät',\n", + " 'laivojansa aallot etsivät',\n", + " '\"taivaalla tähdet valaiskaa',\n", + " 'tulen vain minä tarvitsen',\n", + " 'luonnosta olen syntynyt',\n", + " 'edessäs\\' mitään pelkää en.\"',\n", + " '\"the sun and the moon',\n", + " 'lit so far from where',\n", + " 'the shelter of branches does bend over me',\n", + " \"i count it as years that i've wandered\",\n", + " 'amongst the folk of the woods',\n", + " \"wisdom i've learned from wolves\",\n", + " 'and i have slept in the beds of bears',\n", + " \"no other man i've met on my way\",\n", + " \"no village i've walked past by\",\n", + " \"i couldn't tell my way from home\",\n", + " 'destiny dictates where my road shall turn. \"',\n", + " 'far far away in the still',\n", + " 'a verdant path once leads to blood',\n", + " 'above the earth with heavens as vault',\n", + " 'there is an end to all',\n", + " '\"i count it as years that i\\'ve wandered',\n", + " \"just thinking of my brother's departure\",\n", + " 'oh i wish i was told where he would end up',\n", + " 'may the gods guard him on his journey. \"',\n", + " 'and the steady rocks stir',\n", + " 'the moon and the sun do rove',\n", + " 'winds are rising, storms abate',\n", + " 'their ships the waves still seek',\n", + " '\"stars on the sky come out',\n", + " 'only the fire i need',\n", + " 'from the nature i have born',\n", + " 'before thee nothing i fear. \"',\n", + " 'aamuinen pystyvä viha',\n", + " 'aamuinen päivä ei loista',\n", + " 'kun sä meet petiin',\n", + " 'ylhäältä ohut sade',\n", + " 'syvempi kuin leveä',\n", + " 'alastonta tuo',\n", + " 'sarastus aamu ja koitto',\n", + " 'yltäpäältä sateessa',\n", + " 'sä meet petiin',\n", + " 'frail',\n", + " 'fury at dawn',\n", + " 'ride the early light',\n", + " 'she slithers undress',\n", + " 'frail rain above',\n", + " 'deeper than wide',\n", + " 'stripped bare',\n", + " 'cathedral-sunrise',\n", + " 'soaked in rain',\n", + " 'she slips undress',\n", + " 'yksi on \"one\", kaksi on \"two\"',\n", + " 'vanha on \"old\" ja uusi on \"new.\"',\n", + " 'mitä on \"what?\", kuka on \"who?\"',\n", + " 'minä on \"me\" ja sinä on \"you.\"',\n", + " 'kolme on \"three\", neljä on \"four\"',\n", + " 'katto on \"ceiling\", lattia \"floor.\"',\n", + " 'vähemmän on \"less\", enemmän on \"more\"',\n", + " 'shakki on \"chess\" ja ovi on \"door.\"',\n", + " 'kävellä on \"walk\", jutella on \"talk\"',\n", + " 'lusikka on \"spoon\" ja haarukka on \"fork.\"',\n", + " 'korkki on \"cork\", possu on \"pork\"',\n", + " 'valmis on \"ready\" ja raaka on \"raw.\"',\n", + " 'naama on \"face\", paikka on \"place\"',\n", + " 'rumpu on \"drum\" ja basso on \"bass.\"',\n", + " 'ässä on \"ace\", avaruus \"space\"',\n", + " '\"to start\" on aloitus ja \"stop\" on seis!',\n", + " 'tiedän, \"i know\", kasvaa on \"grow\"',\n", + " 'nopee on \"fast\" ja hidas on \"slow.\"',\n", + " 'läppä on \"joke\" virta on \"flow\"',\n", + " 'kyllä on \"yes\" ja ei on \"no.\"',\n", + " 'lyhyt on \"short\", pitkä on \"long\"',\n", + " 'soittaa on \"play\" ja laulu on \"song.\"',\n", + " 'mieto maku \"mild\", vahva on \"strong\"',\n", + " 'oikein on \"right\" ja väärin on \"wrong.\"',\n", + " 'tykätä on \"like\", fillari on \"bike\"',\n", + " 'levysoitin \"turntable\", mikrofoni \"mic.\"',\n", + " 'yrittää on \"try\", miksi on \"why?\"',\n", + " 'märkä on \"wet\" ja kuiva on \"dry.\"',\n", + " 'valhe on \"lie\", ujo on \"shy\"',\n", + " 'nauraa on \"laugh\" ja itkee on \"cry.\"',\n", + " 'minä olen \"i\" ja riimi on \"rhyme\"',\n", + " 'kello on \"clock\" ja aika on \"time.\"',\n", + " 'hip hoppii englantii, siit oppii englantii',\n", + " 'hip hoppii englantii, siit oppii englantii',\n", + " 'tytöt on \"girls\", pojat on \"boys\"',\n", + " 'hiljaisuus on \"silence\", melu on \"noise.\"',\n", + " 'valinta on \"choice\", ääni on \"voice\"',\n", + " 'huone on \"room\" ja lelut on \"toys.\"',\n", + " 'sisko on \"sister\", veli on \"brother\"',\n", + " 'tämä on \"this\" ja toinen on \"other.\"',\n", + " 'kylmempi \"colder\", kuumempi \"hotter\"',\n", + " 'leipä on \"bread\" ja voi on \"butter.\"',\n", + " 'kuulla on \"hear\", pelko on \"fear\"',\n", + " 'kaukana \"far\" ja lähellä \"near.\"',\n", + " 'kyynel on \"tear\", korva on \"ear\"',\n", + " 'nenä on \"nose\" ja täällä on \"here.\"',\n", + " 'missä on \"where?\" no, siellä on \"there.\"',\n", + " 'pöytä on \"table\" ja tuoli on \"chair.\"',\n", + " 'reilu on \"fair\", karhu on \"bear\"',\n", + " 'kynnet on \"nails\" ja tukka on \"hair.\"',\n", + " 'vuoro on \"turn\", oppia \"learn\"',\n", + " 'kastua \"get wet\", palaa on \"burn.\"',\n", + " 'hattu on \"hat\", rotta on \"rat\"',\n", + " 'koira on \"dog\" ja kissa on \"cat.\"',\n", + " 'isi on \"dad\", surullinen \"sad\"',\n", + " 'iloinen on \"happy\", vihainen on \"mad.\"',\n", + " 'vähentää on \"substract\", lisätä on \"add\"',\n", + " 'hyvä on \"good\" ja paha on \"bad.\"',\n", + " 'raha on \"money\", hassu on \"funny\"',\n", + " 'sateinen on \"rainy\", aurinkoinen \"sunny.\"',\n", + " 'äiti on \"mom\", \"mother\" tai \"mummy\"',\n", + " 'vatsa on \"belly\", \"stomach\" tai \"tummy.\"',\n", + " 'pöljä on \"dummy\", herkku on \"yummie!\"',\n", + " '\"nothing\" ei oo mitään ja jotain on \"something.\"',\n", + " 'hip hoppii englantii, siit oppii englantii',\n", + " 'hip hoppii englantii, siit oppii englantii',\n", + " 'hip hoppii englantii, siit oppii englantii. eka on \"first\", jano on \"thirst\"',\n", + " 'paras on \"best\" ja huonoin on \"worst.\"',\n", + " 'kolmas on \"third\", lintu on \"bird\"',\n", + " 'toinen on \"second\" ja sana on \"word.\"',\n", + " 'lapsi on \"child\", villi on \"wild\"',\n", + " 'vahva on \"strong\" ja mieto on \"mild.\"',\n", + " 'silmät on \"eyes\", kaks kertaa \"twice\"',\n", + " 'tuhma on \"naughty\" ja kiltti on \"nice.\"',\n", + " 'veitsi on \"knife\", elämä on \"life\"',\n", + " 'sulhanen on \"husband\" ja vaimo on \"wife.\"',\n", + " 'vauva on \"baby\", ehkä on \"maybe\"',\n", + " 'laiska on \"lazy\" ja hullu on \"crazy.\"',\n", + " 'tavata on \"meet\", kuumuus on \"heat\"',\n", + " 'juoda on \"drink\" ja syödä on \"eat.\"',\n", + " 'kädet on \"hands\" ja jalat on \"feet\"',\n", + " 'rytmi on \"rhythm\" ja isku on \"beat.\"',\n", + " 'kylmä on \"cold\", myyty on \"sold\"',\n", + " 'nuori on \"young\" ja vanha on \"old.\"',\n", + " 'kun tarina on kerrottu, tarina on \"told\"',\n", + " 'päästää irti \"let go\", pidä kiinni \"hold.\"',\n", + " 'taivuttaa \"bend\", korjata \"mend\"',\n", + " 'säästää \"save\", tuhlata \"spend.\"',\n", + " 'lähettää \"send\", ystävä \"friend\"',\n", + " 'alku on \"beginning\" ja loppu on \"the end.\"',\n", + " 'yume ni mita machi doko ni aru no ka',\n", + " 'tadoritsukitai dareka oshiete',\n", + " 'spark jet city',\n", + " 'hashiru choppaa mitoreteta',\n", + " 'spark jet city venus punk no',\n", + " 'sea side jet city',\n", + " 'mune no oku kara komiagetekuru',\n", + " 'jisoku gohyaku no metaru kurisutaru (metal crystal)',\n", + " 'spark jet city gairoju ni wa saru ga ite',\n", + " \"spark jet city chotto kiken'na kanji no\",\n", + " 'sea side jet city',\n", + " 'ah... chiri biinzu (chilli beans) wo kai ni ikou',\n", + " 'ah... kizu darake no ponteiakku (pontiac) de',\n", + " 'machi no akari wa miraa booru (mirror ball) de touitsu sareta',\n", + " 'atarashii seido',\n", + " 'spark jet city sangoshou uri mo iru shi',\n", + " 'spark jet city sora tobu beddo (bed)',\n", + " 'sea side jet city',\n", + " 'spark jet city ai shiteiru toka inai toka',\n", + " 'spark jet city dou demo ii ze sonna kotogara',\n", + " 'ah... mune no oku kara komiagete kuru',\n", + " 'ah... kono kimochi de ikiteiku yo',\n", + " 'doko ni aru no ka yume ni mita machi tadoritsukitai',\n", + " 'yume ni mita machi yeah!',\n", + " 'spark jet city hashiru choppaa mitoreteta',\n", + " 'spark jet city tama ni ikou ze piip shou (peep show)',\n", + " 'spark jet city cherii sooda (cherry soda) to cherii pai (cherry pie)',\n", + " 'spark jet city hachikiresouna body ni',\n", + " 'spark jet city ai shiteiru toka inai toka',\n", + " 'spark jet city sore hodo suukou janai ze',\n", + " 'spark jet city sora tobu beddo',\n", + " 'sea side jet city',\n", + " 'veljet sekд siskot',\n", + " 'kokoontukaamme yhteen pцytддn!',\n", + " 'on meidдn malja nostettava',\n", + " 'uudelle jumalalle',\n", + " 'tдhden alla syntynyt',\n", + " 'meidдn seuraamme nyt liittyy',\n", + " 'hдn syц kaikki pцydдn antimet',\n", + " 'ja vapahtajaksemme ilmoittautuu',\n", + " 'ketkд asettivat sankarinsa juhlittaviksi',\n", + " 'aina meidдn pyhiemme aikaan?',\n", + " 'ja he toistuvasti julkeavat puhua meistд hдpдisijцinд!',\n", + " 'juopot eivдt ulos astu lain',\n", + " 'valvova isдntд vaihtuu vain',\n", + " \"sillд jok' ikistд pдivдд kuluvaa\",\n", + " 'seuraa loputon pimeд yц',\n", + " 'pian suden uneen',\n", + " 'taas vaipua saa...',\n", + " 'brothers and sisters',\n", + " 'gather around the table!',\n", + " 'a chalice we have to raise',\n", + " 'to a god of an unknown faith',\n", + " 'the one born under a star',\n", + " 'now joins our company',\n", + " 'he eats all yield of the festive table',\n", + " 'and declares himself our savior',\n", + " 'who did arrange the celebration of their holy',\n", + " 'always on the days of our feasts?',\n", + " 'and again and again they dare speak of us as blasphemers!',\n", + " 'drunkards never step out of the door',\n", + " 'observing masters alone taking turns',\n", + " 'for every passing day in human life',\n", + " 'is followed by an endless dark of night',\n", + " \"into a wolf's dream\",\n", + " 'we soon may fall again...',\n", + " \"you get used to hangin' if you hang long enough\",\n", + " \"you get used to hangin' if you hang long enough\",\n", + " \"you get used to hangin' if you hang long enough\",\n", + " \"you get used to hangin' if you hang long enough\",\n", + " 'now i have two or three whiskey sodas',\n", + " 'massakkut tusarnaarparsi kalaallit nunaata radioa, i lytter til grønlands radio',\n", + " \"you get used to hangin' if you hang long enough\",\n", + " \"you get used to hangin' if you hang long enough\",\n", + " 'ehhhh, breath. (...)',\n", + " 'you hang long enough, you get used to hangin',\n", + " \"c'mon, ha\",\n", + " 'now i have two or three whiskey sodas',\n", + " \"you're forty-five and almost blind\",\n", + " \"you get used to hangin' if you hang\",\n", + " 'tämän puun jokaisella juurella haluaisin istua',\n", + " 'kaunein polte somija syissä',\n", + " 'tämän puun jokaisella oksalla sydän löystyy',\n", + " 'kipu ei satu varpuspäivä',\n", + " 'sparrow-day',\n", + " 'i would like to sit on every root of this tree',\n", + " 'with kindled curling flame',\n", + " 'on each bough of this tree a heart loosens',\n", + " \"pain won't hurt on a sparrow day\",\n", + " 'saitei datta kisetsu wa soro soro owatte',\n", + " 'kono goro sanpo to ka tanoshiku natteru',\n", + " 'mukashi itta pasta no omise mo itta yo',\n", + " 'kaki kake no aburae mo iro tashiteru',\n", + " 'doushite hito wa arasoi ya nikushimi dattari',\n", + " 'wakatte mo raitakattari bride mottari',\n", + " 'lion wa kyou ashita ikiru tame tatakau',\n", + " 'watashi wa jibun ga aishita hito wo wasure you',\n", + " 'you make a toy of you he makes a fool of you',\n", + " 'she makes a mess of you itsumo i make a peace with you',\n", + " 'ganbatteta dakedo mou modorenai',\n", + " 'torieaezu no toriaezu no romance janakatta',\n", + " 'datte tomodachi yori shinjireteta',\n", + " 'doushite kono goro yasashii kyoku ga suki na no',\n", + " 'atatakai yukkuri na oto ga kikitai',\n", + " 'shiryoku ga mata waruku naru kamoshirenai',\n", + " 'yakyuu no night game zutto mite iru',\n", + " 'kateru toki mo makeru toki mo te nuki na wake janai',\n", + " 'subete no balance ga bimyou ni ugoite',\n", + " 'ai suru koto no hou ga mada game yomeru kamo',\n", + " 'kesa mo mata terebi ya news ga hora saki yomi',\n", + " 'you make a toy of you he makes a fool of you',\n", + " 'she makes a mess of you itsumo i make a peace with you',\n", + " 'ganbatteta dakedo mou modorenai',\n", + " 'torieaezu no toriaezu no romance janakatta',\n", + " 'datte tomodachi yori shinjiteta',\n", + " 'aseisiin, oi pohjoisen soturit!',\n", + " 'isiemme pyhдllд maalla',\n", + " 'vihollinen meitд vastaan',\n", + " 'kruunataan vain kuolemallaan',\n", + " 'kristityt karkoitetaan',\n", + " 'taivaansa porteilla',\n", + " 'verellдn kastetaan',\n", + " 'te kurjat, heikot kддnnyttдjдt',\n", + " 'jotka astutte meidдn tiellemme',\n", + " 'kadotukseen, taivaan lapset',\n", + " ...]},\n", + " 'data': ['ruusut tieni varrelta',\n", + " 'anteeksi kaikki suokaa',\n", + " 'teille joku antoi elämän',\n", + " 'antoi lämmön, kantoi huolen',\n", + " 'vain lyhyt hetki ja nautin',\n", + " 'tuon pitkän työn hedelmän',\n", + " 'annoin enemmän kuin kaiken',\n", + " 'vähemmän kuin tyhjää...',\n", + " 'huudan tyhjyyteen',\n", + " 'missä kukaan ei kuule, ei käsitä',\n", + " 'voihkeessa vailla vastausta',\n", + " 'tuo tuuli tuoksun sinusta...',\n", + " 'fleeting epiphany',\n", + " 'roses, along the way',\n", + " 'forgive me for everything',\n", + " 'somebody gave you life',\n", + " 'gave you warmth, cared for you...',\n", + " 'in only a short moment, i enjoy',\n", + " 'the fruit of that long labour',\n", + " 'i gave you more than everything',\n", + " 'less than nothing...',\n", + " 'i scream into the emptiness',\n", + " 'to where no one hears or understands',\n", + " 'along with a moan without reponse',\n", + " 'the wind brings me your scent...',\n", + " 'lehtoon luille makaan',\n", + " 'aukeaa maahan',\n", + " 'makaan selätysten',\n", + " 'lehtiä seassa',\n", + " 'pysähtyy tänne niitylle ja kevätaukiolle',\n", + " 'lehdistä kuule maata',\n", + " 'voi tuntea mistä luut alkaa',\n", + " 'tuntea kun puotoaa läpi ja syvempään',\n", + " 'ainoat kukat sinä kesänä',\n", + " 'odottaa täällä kesänhiessä',\n", + " 'through bloom-blades',\n", + " 'in a grave grove',\n", + " 'lay on the bones',\n", + " 'feel deep with the leaves',\n", + " 'linger in meadows and spring-plains',\n", + " 'through bloom-blades the dead utter',\n", + " 'hear the bones collide',\n", + " 'feel when night runs through into deeper shadows',\n", + " 'only flowers this july',\n", + " \"wait here in summer's breath\",\n", + " 'synnyin tappamaan, aiheuttamaan tuhoa',\n", + " 'tuottamaan tuskaa, moderni messias',\n", + " 'kylvän kuolemaa, sadonkorjuun aika',\n", + " 'raiskaan ja kidutan, moderni messias',\n", + " '(chorus:)',\n", + " 'haudattuani teidät vedin käteen ja huusin että olen jumala!',\n", + " 'lopunalku lähenee, viikatteeni heiluu',\n", + " 'päitä putoilee ja sperma haisee',\n", + " '(chorus)',\n", + " '(and the same in english:)',\n", + " '(pissed to the utter maximum)',\n", + " 'i was born to kill, to cause destruction',\n", + " 'to cause pain, modern messiah',\n", + " 'i spread death, time for the harvest',\n", + " 'i rape and torture, modern messiah',\n", + " '(chorus:)',\n", + " 'after i buried you i jerked myself off and shouted that i am a god!',\n", + " 'the beginning of the end draws near, my scythe swings',\n", + " 'heads are falling and sperm smells',\n", + " '(chorus)',\n", + " 'kauan sitten kylän päässä syntyi kaksi poikaa',\n", + " 'kaksi perillistä sodanjumalan karhuntaljoin verhotun',\n", + " 'jo kolmen iästä, sanovat, toisiansa alkoivat harjoittaa',\n", + " 'ja kun teräksensä yhteen kalahti, saattoi kuulla ukkosen',\n", + " 'kauan sitten kylän päässä varttui kaksi poikaa',\n", + " 'kaksiko vain typerystä kuolemaa pilkkaamaan?',\n", + " 'ei yksikään haava vielä ollut tehnyt',\n", + " 'tehtäväänsä',\n", + " 'ja siksi kai sitä miekasta vihollisen täytyi anoa',\n", + " 'aina kunnia houkuttaa nuorta kansaa',\n", + " '(ryöstöretki merten taa) ja taistelu sitäkin enemmän',\n", + " 'varmaan turmaan rientävän tielle',\n", + " 'vain toinen hullu uskaltautuu',\n", + " 'kun kenttä hohkaa kärsimystä ja kirveet lentävät',\n", + " 'leikki kanssa kuoleman vain yltyy',\n", + " 'niin riemukasta lapsien on päitä pudottaa',\n", + " 'kuunnellessaan sotajoukkoa hurraavaa',\n", + " \"usein käykin vain niin et' vertaisesta tulee alempi\",\n", + " 'tarinan kulku voitoista kääntyy',\n", + " 'ja maine ihmisen helposti antaa veljensä unohtaa',\n", + " 'ylpeys, tuo kavalin tauti päällä maan',\n", + " 'näin on vienyt taas yhden uhrin muassaan',\n", + " 'kumpi lie se epatto, kilpi alhaalla ja miekka koholla',\n", + " 'teilleen mennyt vaiko hän joka hautoja kaivaa saa?',\n", + " \"heikompaa voima mik' riepottaa;\",\n", + " 'kotinsa on iäksi jättänyt tahtoen vielä surmata',\n", + " 'kunniaton moinen työ',\n", + " 'long ago a village away there were born two sons',\n", + " 'two heirs of the god of war dressed in bearskins',\n", + " 'from the age of three, they say, each other they did train',\n", + " 'and when their steel did clash thunder could be heard',\n", + " 'long ago a village away there did grow two sons',\n", + " 'or were they just two fools born to mock their deaths?',\n", + " \"still they hadn't got a wound that would've hurt'd enough\",\n", + " 'to prevent them from begging such from a foreign blade',\n", + " 'honour always tempts the young blood',\n", + " '(plundering across the seas) and battles even more',\n", + " 'into the way of the one rushing to his doom',\n", + " 'only another insane dares step',\n", + " 'when the field emits pain and axes fly about',\n", + " 'play with death is on the increase',\n", + " 'such a joy for children the dropping of heads is',\n", + " 'as long as their army cheers',\n", + " 'yet so often equality becomes inferiority',\n", + " 'the course of a story twists at triumphs',\n", + " 'and fame so easily lets a man forsake his kin',\n", + " 'thus pride, that most insidious illness on all earth',\n", + " 'once again has taken its prey',\n", + " 'which one might be the failure, he who left with a lowered',\n", + " 'shield and sword held high or he who has to dig the graves?',\n", + " 'tossed about is the weaker by what force;',\n", + " 'his home he has left, gained just more will to slay',\n", + " 'what a disgrace is such work',\n", + " \"i'm a working man saenai mo ningu taimu\",\n", + " 'tsukare torenai in shite y shirt boy',\n", + " \"kaisha ni ikeba mata shikararete warukunakutemo i'm sorry\",\n", + " 'three. two. one. go wo ruweizu zangyou yasumi mo henjou weekend',\n", + " 'kaserareta shimei wo rippa ni hatasutame',\n", + " 'in the sky kumo wo tobikoete',\n", + " 'hateshinai daichie',\n", + " 'sukoshi yoreta nekutai wo kyu tto shimenaoshite',\n", + " 'kokontoko (saikin) tsuitenai',\n", + " 'kanojo ni furare kuruma jikotte hoken ni wa ittenai',\n", + " 'saikoro nigitte ore no jinsei ge-mu itsudatte furidashi ni modoru',\n", + " 'irotoridori no aisu kuri mu wo katate ni de to shitatte',\n", + " 'itsumo no merodi nagaretara ibi dashida !',\n", + " 'in the sky kumo wo tobikoete',\n", + " 'hateshinai daichie',\n", + " 'ki ga tsukeba teppen mawatteru mystic moonlight',\n", + " 'mou yameteyarunante iwanaide ganbarou !',\n", + " 'kutabireta sono su-tsu wo hokorashiku matotte',\n", + " 'hi-ro- nante hodotooikedo hokorashii mainichisa i can fly',\n", + " 'in the sky kumo wo tobikoete',\n", + " 'hateshinai daichie',\n", + " 'ki ga tsukeba teppen mawatteru mystic moonlight',\n", + " 'mou yameteyarunante iu monka bakayaro !',\n", + " 'sousa ore wa tori da hikouki da ! iya supaman da !!',\n", + " 'just go ! hang in there !!',\n", + " '*kimi no mune de naka nai',\n", + " 'kimi ni mune kogasa nai',\n", + " \"i'm looking for a perfect sky\",\n", + " \"i'm looking for a perfect sky\",\n", + " 'gozen rei-ji sotto uchi wo nukete',\n", + " 'hitori de nonda gimuretto',\n", + " 'chottodake me ga sameta yo',\n", + " 'koujichuu no douro ni habamarete',\n", + " 'kimi he to tsuduku ai mo',\n", + " 'tachigiete shimau no ka na',\n", + " 'ikichigau omoi darake ne',\n", + " 'asayake ga ao ni kawaru goro',\n", + " '*repeat',\n", + " '**sunahama de kamoshika no taan',\n", + " 'atsui natsu wa kaasute de dansu',\n", + " \"i'm looking for a perfect sky\",\n", + " \"i'm looking for a perfect sky\",\n", + " 'wakaregi ni satto kawasu kuchiduke',\n", + " 'hitori ni naritakutte',\n", + " 'chotto dake uso tsuita ne',\n", + " 'kimi ga omou hodo kodomo ja nai',\n", + " 'kidui tatte iwa nai',\n", + " 'sore wa kiken na kakehiki ka na',\n", + " 'wakari aeru hi ga kuru hazu',\n", + " 'niji no o ga umi ni tokeru you',\n", + " '*repeat',\n", + " 'ten wo aoide maameido janpu',\n", + " 'ichido kiri no shakunetsu romansu',\n", + " \"i'm looking for a perfect sky\",\n", + " \"i'm looking for a perfect sky\",\n", + " 'sono mama de ii kedo',\n", + " \"hey,baby,when you're lonely\",\n", + " 'kokoro hiraite',\n", + " 'naminori mo ii kedo',\n", + " 'hey,baby,talk to me',\n", + " 'anata to mitai kanpeki na sora wo',\n", + " '*repeat',\n", + " '**repeat',\n", + " 'taikan rosuto byuutii',\n", + " 'katakata warau sutuupiddo',\n", + " 'nengan ronsou heretikku',\n", + " 'jakusha ni banzai rabu mii',\n", + " 'shitai ga zekkei remurikku',\n", + " 'koukai jii nara noorimuzu',\n", + " 'star of nic',\n", + " '「did you love me?」',\n", + " '\"did you love me?\"',\n", + " 'hey hey hey baby, i love you',\n", + " 'and if you love me too, then i love you three four five',\n", + " \"hey can't you see that's me\",\n", + " 'do you know lumiland? do you know poroland?',\n", + " 'do you know ruskaland, and dangerous dangerous love?',\n", + " 'made in finland, made in finland',\n", + " 'hakkaa päälle suomen poika, ettei meitä toiset voita',\n", + " 'sibelius, sauna ja sisu',\n", + " 'ne on made in finland',\n", + " 'hey hey hey lady, i want you',\n", + " 'and if you want me too, bring two tea to thirty-two',\n", + " 'i wait for you, you, you',\n", + " 'do you know vihtaland? do you know untoland?',\n", + " 'do you know urkkiland, and dangerous, dangerous love?',\n", + " 'made in finland, made in finland',\n", + " 'hakkaa päälle suomen poika, ettei meitä toiset voita',\n", + " 'höyhenet, terva ja viina',\n", + " 'ne on made in finland',\n", + " 'hey hey hey baby, i talk to you',\n", + " 'and if you talk me too, then i talk you three four five',\n", + " \"hey can't you see that's me\",\n", + " 'do you know lätkäland? do you know mölliland?',\n", + " 'do you know härmäland, and dangerous, dangerous love?',\n", + " 'made in finland, made in finland',\n", + " 'hakkaa päälle suomen poika, ettei meitä toiset voita',\n", + " 'pursiainen, salin ja viren',\n", + " 'ne on made in finland',\n", + " 'sisu in finland',\n", + " 'sauna in finland',\n", + " 'verta pakkiin suomen poika, ettei meitä toiset voita',\n", + " 'dangerous love and me, ne on made in finland',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sunato karta',\n", + " 'pekhat karta',\n", + " 'adrishto karta',\n", + " 'drishto karta',\n", + " 'upat karta',\n", + " 'parlo karta',\n", + " 'biaapat karta',\n", + " 'alapato karta',\n", + " 'bakato karta',\n", + " 'boojat karta',\n", + " 'aavat karta',\n", + " 'jaat bhee karta',\n", + " 'nirgun karta',\n", + " 'sirgun karta',\n", + " 'gur prasaad',\n", + " 'naanak samdrishtaa',\n", + " 'gur prasaad',\n", + " 'naanak samdrishtaa',\n", + " 'gur prasaad',\n", + " 'naanak samdrishtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sunato karta',\n", + " 'pekhat karta',\n", + " 'adrishto karta',\n", + " 'drishto karta',\n", + " 'upat karta',\n", + " 'parlo karta',\n", + " 'biaapat karta',\n", + " 'alapato karta',\n", + " 'bakato karta',\n", + " 'boojat karta',\n", + " 'aavat karta',\n", + " 'jaat bhee karta',\n", + " 'nirgun karta',\n", + " 'sirgun karta',\n", + " 'gur prasaad',\n", + " 'naanak samdrishtaa',\n", + " 'gur prasaad',\n", + " 'naanak samdrishtaa',\n", + " 'gur prasaad',\n", + " 'naanak samdrishtaa',\n", + " 'gur prasaad',\n", + " 'naanak samdrishtaa',\n", + " 'gur prasaad',\n", + " 'naanak samdrishtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " \"if you don't see god\",\n", + " 'in all',\n", + " 'you won’t see god',\n", + " 'at all',\n", + " 'at all',\n", + " \"if you don't see god\",\n", + " 'in all',\n", + " \"you won't see god\",\n", + " 'at all',\n", + " 'at all',\n", + " 'if you don’t see god',\n", + " 'in all',\n", + " \"you won't see god\",\n", + " 'at all',\n", + " 'at all',\n", + " 'ah',\n", + " 'ah ah ah',\n", + " 'ah ah ah',\n", + " 'ah ah ah ah ah',\n", + " 'ah ah ah ah ah ah',\n", + " 'sunato karta',\n", + " 'pekhat karta',\n", + " 'adrishto karta',\n", + " 'drishto karta',\n", + " 'upat karta',\n", + " 'parlo karta',\n", + " 'biaapat karta',\n", + " 'alapato karta',\n", + " 'bakato karta',\n", + " 'boojat karta',\n", + " 'aavat karta',\n", + " 'jaat bhee karta',\n", + " 'nirgun karta',\n", + " 'sirgun karta',\n", + " 'gur prasaad',\n", + " 'naanak samdrishtaa',\n", + " 'gur prasaad',\n", + " 'naanak samdrishtaa',\n", + " 'gur prasaad',\n", + " 'naanak samdrishtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " 'sabh karta',\n", + " 'sabh bhugtaa',\n", + " \"if you don't see god\",\n", + " 'in all',\n", + " \"you won't see god\",\n", + " 'at all',\n", + " 'at all',\n", + " \"if you don't see god\",\n", + " 'in all',\n", + " \"you won't see god\",\n", + " 'at all',\n", + " 'at all',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'sabh karta',\n", + " 'ole uloin saari',\n", + " 'minkä tavoittaa levossa',\n", + " 'ole veen lakeus',\n", + " 'aava levon soutaa',\n", + " 'ole silmän tyyni',\n", + " 'veneenä livu',\n", + " 'ole riemun nuotta',\n", + " 'veestäni viety saalis',\n", + " 'ole salassa luoto',\n", + " 'paolla ulapalla',\n", + " 'ole pinnan kuva',\n", + " 'maailman nurja',\n", + " 'ole aamu laaksoon',\n", + " 'seppelöivä piennar',\n", + " 'ole heinän törmä',\n", + " 'tuoksuna teillä',\n", + " 'ole pellon puntarpää',\n", + " 'mittumaaren seppel',\n", + " 'ole nitty tuolla',\n", + " 'aho toisaalla',\n", + " 'ole nupulla kohti',\n", + " 'keltaa tänne tuoma',\n", + " 'ole ryytien tuoksuva',\n", + " 'pelkän ilon valli',\n", + " 'ole päivänkaaren sali',\n", + " 'huomenen holvi',\n", + " 'ole illan aavuus',\n", + " 'yön paino rintaan',\n", + " 'ole karkelo pisaroita',\n", + " 'laskeudu sateisena',\n", + " 'ole kuulaalla kaste',\n", + " 'solistessasi lähde',\n", + " 'rakasta niin rakastan',\n", + " 'rakastan tulessa',\n", + " 'täällä mä palan',\n", + " 'poltan lempeä',\n", + " 'mut lempes okaa',\n", + " 'ja lusias sammuu',\n", + " 'jään karrelle',\n", + " 'jään tuhkaa',\n", + " '(english translation:)',\n", + " 'furthest',\n", + " 'be the furthest island',\n", + " 'reached asleep',\n", + " 'be vast waters',\n", + " 'widths to row',\n", + " 'be calm eyes',\n", + " 'glide of an oar',\n", + " \"be blithe's seine\",\n", + " 'a catch from my water',\n", + " 'be an arcane islet',\n", + " 'fled afar',\n", + " \"be lake's reflection\",\n", + " 'adverse of the world',\n", + " 'be dawn pouring into a valley',\n", + " 'laurels lining the lane',\n", + " 'be a bank of hay',\n", + " 'scent on a road',\n", + " 'be a field of foxtails',\n", + " \"mid summer's mirth\",\n", + " 'be a meadow there',\n", + " 'a glade elsewhere',\n", + " 'be blossoms reaching',\n", + " 'view of their yellow',\n", + " \"be herb's thriumph\",\n", + " 'fragnance rampart',\n", + " \"be day's hallway\",\n", + " 'arching tomorrow',\n", + " \"be evening's ease\",\n", + " 'weight of night on chest',\n", + " 'be feasting drops',\n", + " 'descending rainy',\n", + " 'be morning dew',\n", + " 'rippling fount',\n", + " 'love me so love i feel',\n", + " 'love in pyre',\n", + " 'here in fire',\n", + " 'sear with love',\n", + " 'but your love is thorned',\n", + " 'and light fails',\n", + " 'i am left scorched',\n", + " 'i am left in ashes',\n", + " 'well the party was jumpin, the place was packed',\n", + " 'snoop dogg is on the microphone ready to rap',\n", + " 'elastinen, kimmo, an elastino',\n", + " \"up in the sky, you've never seen tho\",\n", + " \"up in the air, you've never seen tho\",\n", + " \"that's what she said, straight to the head\",\n", + " \"so real and it's the truth\",\n", + " 'rocking with big snoop',\n", + " 'koko yö',\n", + " 'ainakun kunnolla nollataan',\n", + " 'siinä menee koko yö',\n", + " 'jengi ja fiilis on kohdallaan',\n", + " \"everybody's just dancing and drinking\",\n", + " 'and having a good time',\n", + " 'just dancing and drinking, hands up in the air',\n", + " 'mittasuhteet paisuu, illast tuli isompi ku luulinkaa oon liikkeellä snoopin kaa',\n", + " 'kaikki on mahollista tää on todiste siit',\n", + " 'mul o pinkkaa, ja kaverit otin messiin',\n", + " 'menee holia huolel, olin jo nuoren vipeis en suomessa koskaan kolikko puolel',\n", + " 'ainutlaatusii hetkii ei tuu paluuta tähän, nyt menee myöhäsee tai aikasee, miten haluut sen nähä',\n", + " 'tytöt tanssii, pojat palleja paukuttelee',\n", + " 'mä vasta alottelen älä ala haukottelee',\n", + " 'minne jatkoille, pidetää poow-woow',\n", + " 'mul koiruudet mieles oon stadin snadi bowwow',\n", + " 'pannaa puntarii, kokemuksii vai unta niin',\n", + " 'ei mun tarvii miettii, ei aikaa kumpaankin',\n", + " 'viikonloppuyöt unettomii, koska sillon jos mä rupeen hommiin',\n", + " 'siinä menee koko yö',\n", + " 'aina kun kunnolla nollataan',\n", + " 'siinä menee koko yö',\n", + " 'jengi ja fiilis on kohdallaan',\n", + " \"everybody's just dancing and drinking\",\n", + " 'and having a good time',\n", + " 'just dancing and drinking, hands up in the air',\n", + " 'just niinkun meilläpäin on tapana',\n", + " 'takuu varmasti, menee aamun asti',\n", + " 'me voidaa nukkua sit, ku hiipu kuasi',\n", + " 'viikon lepää et taas loppuviikon tullen mä jaksan, jos tiiät mist mä puhun nii tää on sulle',\n", + " 'ja sulle',\n", + " 'for you, and you, and you, and you too',\n", + " \"'cause this is all that i do\",\n", + " 'i make it bang, hang and i swang, do my thang',\n", + " 'and let the music play louder',\n", + " \"i'm a show yo how to\",\n", + " 'conduct the crowd, move around',\n", + " 'how you like me now',\n", + " 'koko yö',\n", + " 'aina kun kunnolla nollataan',\n", + " 'siinä menee koko yö',\n", + " 'jengi ja fiilis on kohdallaan',\n", + " \"everybody's just dancing and drinking and having a good time\",\n", + " 'just dancing and drinking',\n", + " 'hands up in the air-air-air-yea',\n", + " 'antaa virrata sateen',\n", + " 'pian se hahmoja nostattaa',\n", + " 'kun luonnonhelma henkii',\n", + " 'verettömiä utulintuja',\n", + " 'kuin häilyviä perhoja',\n", + " 'väreilisi pinta maan',\n", + " 'niin auer hiljaa vierii',\n", + " 'viljan yllä laineilee',\n", + " 'let the rain fall',\n", + " 'after the grey clouds',\n", + " 'colourless songbirds',\n", + " 'rise without a tune',\n", + " 'like fluttering butterflies',\n", + " 'the ground is filled',\n", + " 'with odd shapes',\n", + " 'and fog that flourishes in the wind',\n", + " 'clear tamei',\n", + " 'nï stei pah lekka shi sonna kamei',\n", + " 'memma xēi ast wana famei',\n", + " 'dora geh slā ay dessa wanna balei inu',\n", + " 'chung ma tella ka',\n", + " 'kei massa wanna kar xēi tamei wa',\n", + " 'xao void mogu ta se wing yalasa',\n", + " \"wit' a see through body chema ki sonola\",\n", + " 'clear tamei',\n", + " 'nï stei pah lekka shi sonna kamei',\n", + " 'memma xēi ast wana famei',\n", + " 'dora geh slā ay dessa wanna balei inu',\n", + " 'chung ma tella ka',\n", + " 'kei massa wanna kar xēi tamei wa',\n", + " 'xao void mogu ta se wing yalasa',\n", + " \"wit' a see through body chema ki sonola\",\n", + " 'chen mi pi la ka',\n", + " 'mei nu ah so we',\n", + " 'tami wenna sung',\n", + " 'putno kasson me',\n", + " 'men no sawa figh sowa kama nu',\n", + " 'tami wenna sung',\n", + " 'putno kasson me',\n", + " 'chung ma tella ka',\n", + " 'kei massa wanna kar xēi tamei wa',\n", + " 'xao void mogu ta se wing yalasa',\n", + " \"wit' a see through body chema ki sonola\",\n", + " 'di mi pi la ka!',\n", + " 'wi lu pressu win',\n", + " 'tami wenna sung',\n", + " 'putno kasson me',\n", + " 'winnu sawer fi sonnu callu ni',\n", + " 'honnu sallu ta bollu nattu wei',\n", + " 'chen mi pi la ka mei nu ah so we',\n", + " 'tami wenna sung putno kasson me',\n", + " 'men no sawa figh sowa kama nu',\n", + " 'tami wenna sung putno kasson me',\n", + " 'chen mi pi la ka mei nu ah so we',\n", + " 'tami wenna sung putno kasson me',\n", + " 'men no sawa figh sowa kama nu',\n", + " 'tami wenna sung putno kasson me',\n", + " 'tami wenna sung putno kasson me',\n", + " 'men no sawa figh sowa kama nu',\n", + " 'tami wenna sung putno kasson me',\n", + " 'men no sawa figh sowa kama nu',\n", + " 'tami wenna sung putno kasson me',\n", + " 'men no sawa figh sowa kama nu',\n", + " 'tami wenna sung putno kasson me',\n", + " 'men no sawa figh sowa kama nu',\n", + " 'mustan surman veljeskunta',\n", + " 'kuningas ruton airuet',\n", + " 'kylmän tulen kantajat',\n", + " 'hänen viestinsä sanansaattajat',\n", + " 'lailla saatanan vasaran',\n", + " 'iskemme vihan voimalla',\n", + " 'ruosteiset naulat ja koukut',\n", + " 'lailla saatanan vasaran',\n", + " 'vitsauksin ja kirouksin',\n", + " 'siunaan tätä maailmaa',\n", + " 'tämä on lahjani sinulle:',\n", + " 'verta ja tuhkaa!',\n", + " 'mustan tulen palvelijat',\n", + " 'saatanan apostolit',\n", + " 'kaaoksesta syntyneet',\n", + " 'kunniassa nousseet',\n", + " 'verta ja tuhkaa!',\n", + " 'painajaisin ja manauksin',\n", + " 'siunaan tätä maailmaa',\n", + " 'tämä on lahjani sinulle:',\n", + " 'totaalinen kuolema!',\n", + " 'black terror metal hell!',\n", + " 'blood and ashes',\n", + " 'brotherhood of the black death',\n", + " 'heralds of the great king pest',\n", + " 'carriers of the cold fire',\n", + " 'harbringers of his message',\n", + " \"like satan's hammer\",\n", + " 'we strike with force of hatred',\n", + " 'rusty nails and hooks',\n", + " \"like satan's hammer\",\n", + " 'with curses and plagues',\n", + " 'i bless this world',\n", + " 'this is my gift to humankind:',\n", + " 'blood and ashes',\n", + " 'servants of the black fire',\n", + " 'apostoles of satan',\n", + " 'from the chaos born',\n", + " 'risen in honour',\n", + " 'with nightmares and oaths',\n", + " 'i bless this world',\n", + " 'this is my gift to you:',\n", + " 'total death!',\n", + " 'black terror metal hell!',\n", + " 'kun syksyn vienot lehvät',\n", + " 'vaitonaisena liitää varisparvi',\n", + " 'etäiseen pilvenlonkaan',\n", + " 'ihmisten luota ne kaikkoavat',\n", + " 'unten kultalaan',\n", + " 'like fine leaves in autumn',\n", + " 'silently the crows fly',\n", + " 'beyond distant clouds',\n", + " 'far away from where man dwells',\n", + " 'to the golden pasture of dreams',\n", + " 'yeah 1-2..',\n", + " 'wu-tang.. killa beez..',\n", + " 'bobby steeles.. cilvaringz.. beretta 9..',\n", + " 'killah ganz..',\n", + " 'aiyo my sword is equivalent to the 7 headed dragon',\n", + " \"blowin' fire we be stompin' finnish streets like a fuckin' giant\",\n", + " 'the red kiyaffa rocks the mental, my ill kinda darts ripping shit apart',\n", + " 'and bombing instrumentals apart',\n", + " 'enter my chamber, 3rd door, 1st floor, the slayer',\n", + " \"it's the rzarectah student from the deserts of arabia\",\n", + " \"i've been around since born born rockin' wu-tang songs\",\n", + " \"and choppin' niggas off like i'm mowin' lawn\",\n", + " \"appearin' from the dark under bobby's light\",\n", + " 'went through lobby fights to elevate myself to clan copyright',\n", + " \"i'm probably right and left, to swing a sword in finland\",\n", + " \"bringin' forth the name and chop the feet of rumpelstiltskin\",\n", + " \"wu-tang's the name, it's forever and you know it\",\n", + " \"tryin' to come across, you got somethin' to prove? better show it\",\n", + " 'johnny bro the song will blow hard in hellsinki',\n", + " 'peace from wu-tang, cilvaringz and bob digi',\n", + " 'sä et saa mua, mun niskat ei katkee vaik et ostas',\n", + " 'ei tuu aamua jolloin heräisin viemää mun roskat',\n", + " 'sun saastasee laatikkoo, joka on kun aavikko',\n", + " 'täynnä kangastuksii joil o valmiit raamit jo',\n", + " 'puhumalla selvii, juoksemal jää henkii',\n", + " 'mut miten näille pärjää ku nää istuu vaan penkil',\n", + " 'tuun tekee kaikkeni että jengi näkis',\n", + " 'anna mun elää vaik et tykkääkään räpist',\n", + " 'sinä päivänä ku tiput joni ei oo säälimäs',\n", + " 'sokee pärjää vaa uskol ja kuuntelemal ääniä',\n", + " 'sä et tee kumpaakaan sä loit mulle taakan',\n", + " 'ai tää o muka raakaa? vittu tsiigaa mun naamaa',\n", + " 'se hymyilee vaa jos oikeesti o aihetta',\n", + " 'tunteet ajelee, vaikee tuntee välivaihetta',\n", + " 'ja jos kelaa et musa on ilmasta niin näkee',\n", + " 'et nii on terveydenhuoltoki ku katkasen sun kätes',\n", + " \"yo hip bone's connected to ya knee bone\",\n", + " \"yo knee bone's connected to ya leg bone\",\n", + " \"ya leg bone's connected to ya feet bone\",\n", + " 'my lips is connected to this tree bone',\n", + " \"describe life to you, in a bird's eye view\",\n", + " \"understand why the water is wet, the sky's blue\",\n", + " 'why the earth sinks in a quake, the weight of a snowflake',\n", + " \"but you can't trace back the original black man's birthdate\",\n", + " \"it's like countin' ever sand in the sahara desert\",\n", + " 'the potential, every band of the parametric',\n", + " 'heavy watts of volts used by the world electric',\n", + " \"every molecule of shit dropped in the world's septics\",\n", + " 'islam is older than sun, moon and stars',\n", + " 'wisdom more powerful than gun, platoon and bombs',\n", + " \"words of sun tzu bein' used when they're harmed\",\n", + " 'in the midst of the batu, kid i stay calm',\n", + " 'the ring on my pinky, who would ever think bobby digi',\n", + " \"would be flowin' over hip hop tracks in helsinki?\",\n", + " 'with my man cilvaringz from the land of the genie',\n", + " 'b.m.g. put that cream in the middle, like the twinkee',\n", + " \"we poppin' it off, with rockin' da north\",\n", + " \"ganz cockin' the 4, beretta's blockin' the door\",\n", + " \"we dropped the tour, fuck that, we stoppin' the war\",\n", + " \"you heads of the snakes we be choppin' 'em off\",\n", + " 'deep in my mental, a weekend residential rental',\n", + " \"was the scannin', hotel enter continental\",\n", + " 'room 7-6-8, ringz brought the mixtape',\n", + " 'of jonny bro beats that he pulled from a sick crate',\n", + " 'i laid my verse in 20 minutes, nigga time is money',\n", + " 'so we call that money minutes',\n", + " \"a killa bee's on this track, about to put that honey in it\",\n", + " 'known to rock the magic black cap without the bunny in it',\n", + " 'females hit me up on the email',\n", + " 'sayin\\', \"bobby we scared to climb the killa bee sales\"',\n", + " 'i said, \"bitch, record companies won\\'t ship me',\n", + " \"cuz i only speak the truth and they can't politic me\",\n", + " 'i got a big fat dick so come and lick me',\n", + " \"got a stack of cream but no nigga won't stick me\",\n", + " \"know these contracts so these labels can't vick me\",\n", + " 'put me in a line-up watch the c-ciphers pick me\"',\n", + " \"as the world's greatest niggas hate us\",\n", + " \"cuz they can't fuck with our status, we on a hiatus\",\n", + " 'from america to eu wrote \"oh bobbito\"',\n", + " \"and y'all groupies hope y'all could do me ho\",\n", + " \"yo hip bone's connected to ya knee bone\",\n", + " \"yo knee bone's connected to ya leg bone\",\n", + " \"ya leg bone's connected to ya feet bone\",\n", + " 'my lips be connected to this weed bone',\n", + " 'deflate the hate, bring back the love that was given',\n", + " \"a day of birth i lost while livin'\",\n", + " \"got no priorities after drinkin' 40's and smoke blunts\",\n", + " 'block wisdom and look at the world with a blurried vision',\n", + " \"cuz plan's born as i open my eyes\",\n", + " 'see the jewels and diamonds pass by in the skies',\n", + " 'create a masterpiece with the full capacity',\n", + " 'acknowledge of the truth and the truth is what i promise (to the people)',\n", + " 'and i shall be honest and i shall destroy evil',\n", + " 'with no commas in between my sentences',\n", + " 'with no man attempted murder on examiners',\n", + " 'the abbott rza and the cabinet will civilize you savages!',\n", + " 'mul o rytmi veres ja luis, kulkee mun selkäytimee',\n", + " 'mä seison pikku-robal näytän ykköst kytille',\n", + " 'räkis vaik voissa paistas, näkyy kaikes minkä tekee',\n", + " 'innovatiivisii tapoi vetää verottaja rekee',\n", + " 'jos sul on ennakkoluuloi, aika kytkee ne vekee',\n", + " 'mä raivaan kaiken mikä tulee eteen, tuut sä megee',\n", + " 'friedil paukuttaa, messis joni ja wu-ampiaisii',\n", + " 'ja mä oon se koala jonka squadi hoitaa kampis naisii',\n", + " 'ei enää märkäkorvii, rima korkeel ei aikaa lorvii',\n", + " 'ilman lentolupakirjaa mä tähtään korkeimpaan tornii',\n", + " 'valkkaa sanat tai rysty, mul ei oo tarvet ystävystyy',\n", + " 'täysii päähän ja paareil pois nii pitkälle kun ikin pystyy',\n", + " 'plus mun koko crew spittaa vaan spittaamisen ilost',\n", + " 'ja kittaan mut jos feattaan niin feattaan, mis ne hillot?',\n", + " 'jos wu on fölis nii voit pitää sun baxit, koska rähinää',\n", + " \"ei oo mitää ( ...?... ) c'mon\",\n", + " 'verellä kirjoitettu kirja elämän',\n", + " 'käsissä sodan maailman luojan',\n", + " 'yli kuluvan talven voiko kuoleva jaksaa',\n", + " 'haavoittuneenakin susia kutsuen',\n", + " 'eikä miekka paranna metsien haavoja',\n", + " 'näin kirjoitettua ei verettä päätetä',\n", + " 'kuuntele, kuinka huudot kaikuvat',\n", + " 'vastarannalla aamuun ei odoteta',\n", + " 'maasta savea, taivaalta tuhkaa',\n", + " 'tulesta uhrit poltetun maan',\n", + " 'merestä aallot, taivaalta pisarat',\n", + " 'tulen henget rauhoittamaan',\n", + " 'ei kukaan meihin ole katsonut aikoihin',\n", + " 'on ruoska repinyt pilvet halki',\n", + " 'rotat juoksevat kannella maailman',\n", + " 'kauna saaliiden silmist leiskuu',\n", + " 'kun idän varjo lännestä lankeaa',\n", + " 'ja saastunut mieli kunniaa hakee',\n", + " 'jäästä syntynyt on ajettu tuleen',\n", + " 'tulen tekijät mustaan hukkuneet',\n", + " 'ei kukaan sano että näkisi tulevan',\n", + " 'ei kukaan sano jos pelkää',\n", + " 'kallioihin pirstokaa kirveet',\n", + " 'päätänne riiputtakaa, heikot polvistukaa',\n", + " 'syvään lihaan nahkanne luokaa',\n", + " 'ryveten häpeässä lapsenne uhratkaa',\n", + " 'ihmisen tahto kuin rauta taivuttamaton',\n", + " 'riiputtaa päätään kurja luotu virheetön',\n", + " 'se pelkää, mutta kuolee taistellen',\n", + " 'puolesta jumalten joita itse tunne ei',\n", + " 'odottaa voittajan täytyy',\n", + " 'voidakseen sanansa tuuleen heittää',\n", + " 'vuoret liikkuvat harvoin',\n", + " 'ei niitä siirrä yksin vahvinkaan',\n", + " 'vain hetken teidän liekkinne roihuaa',\n", + " 'katso, se hiljaa hiipuu, maan tuhkin koristaa',\n", + " 'syvyys kylmä viimeisen hehkun tukahduttaa',\n", + " 'kutsutko kuoleman sen vielä kerran herättämään',\n", + " 'sitä vielä itket kun synkän vieraan taloosi laskit',\n", + " 'siipensä levittämään kauniin elämäsi ylle',\n", + " 'sen yhdellä henkäyksellä poistamaan',\n", + " 'aseisiin, sen te kuulette aina',\n", + " 'teidän verellänne tämä maa peitetään',\n", + " 'se on polku, jota pitkin teitä seurataan',\n", + " 'niin kauas kuin pimeys jaksaa kantaa',\n", + " 'paikkanne lunastakaa, ette koskaan ole vapaita',\n", + " 'arkuissanne lapsenne kannetaan',\n", + " 'sataa ihmisen viha jumalten niskaan',\n", + " 'vahvemman oikeus vahvemman tappaa',\n", + " 'puolusta kotiasi, tuholle uhraa rakkaasi',\n", + " 'polta maa takanasi ennen kuin poltat itsesi',\n", + " 'sataa ihmisen viha jumalten niskaan',\n", + " 'punaiset pilvet sumentavat taivaan',\n", + " 'näin kaikki päättyy, kuumuus maan tyhjiin imee',\n", + " 'näin kaikki päättyy, näen sen nyt',\n", + " 'punainen taivas rotat saartaa',\n", + " 'verellä kirjoitettu kirja elämän',\n", + " 'käsistä sodan maailman luojan',\n", + " 'kansi hiiltyneenä laskettu maahan',\n", + " 'sanat sanomattomiksi tehty',\n", + " 'näin kaikki päättyy, näen sen nyt',\n", + " 'tämä sivu on viimeinen',\n", + " 'näin kaikki päättyy, tyhjään ja unohdukseen',\n", + " 'eikä kukaan tänne palaa',\n", + " 'a land driven into the fire',\n", + " 'the book of life written in blood',\n", + " 'lies in the hands of the lord of the world of war',\n", + " 'this lasting winter could the dying endure',\n", + " 'still calling the wolves when wounded',\n", + " \"the sword doesn't heal the forests' wounds\",\n", + " 'what is written is undone by blood',\n", + " 'hearken to the echoes of warcries',\n", + " 'the opposing shore will not wait for the dawn',\n", + " 'clay from the earth, ash from the sky',\n", + " 'offerings of the burnt soil from flames',\n", + " 'waves from the sea, drops from the sky',\n", + " 'to calm the spirits of fire',\n", + " 'no one has looked at us from above',\n", + " 'the scourge has ripped through the clouds',\n", + " 'race of rats on the deck of the world',\n", + " 'grudge flames in the eyes of the prey',\n", + " 'when the west casts a shadow on east',\n", + " 'whilst a poisoned mind desires glory',\n", + " 'which was born of ice is now driven into fire',\n", + " 'the firemakers all drowned in black',\n", + " 'no man will say he sees the coming',\n", + " 'no man will say he fears',\n", + " 'splinter your axes against the rocks',\n", + " 'hang your heads and kneel',\n", + " 'shed your skin to reveal your flesh',\n", + " 'wallow in shame to sacrifice your kin',\n", + " 'the will of man like iron unbent',\n", + " 'who was created flawless may hang his head',\n", + " 'he fears, but will die fighting',\n", + " 'in honour of gods he has never known',\n", + " 'the victor must wait for his moment',\n", + " 'to cast his words into the wind',\n", + " 'rarely the mountais do move',\n", + " \"even the strongest won't shift them alone\",\n", + " 'your flame is ablaze but once',\n", + " 'behold as it wanes to veil the earth in ash',\n", + " 'last sparkles die out in the depths of cold',\n", + " 'death itself you may invite to find and fan them',\n", + " 'and so you shall weep, for the somber guest in your stay',\n", + " 'spreads its wings over your beautiful life',\n", + " 'blowing it out with one single breath',\n", + " 'to arms, you shall always hearken',\n", + " 'with your blood they veil the ground',\n", + " \"it's a path you will be followed on\",\n", + " 'as long as the darkness may reach',\n", + " 'claim your positions, you shall never be free',\n", + " 'in your coffins your children are carried',\n", + " 'the wrath of man cast upon the gods',\n", + " 'right through strength kills the strong',\n", + " 'defend your home, offer your loved to the ruin',\n", + " 'burn the land left behind before burning yourself',\n", + " 'the wrath of man cast upon the gods',\n", + " 'red clouds blur over the sky',\n", + " 'this is how it ends, heat sweeps the earth',\n", + " 'this is how it ends, i can see it now',\n", + " 'red sky to encircle the rats',\n", + " 'the book of life written in blood',\n", + " 'from the hands of the lord of the world of war',\n", + " 'lay down on earth with bindings charred',\n", + " 'and with all words made unsaid',\n", + " 'this is how it ends, i can see it now',\n", + " 'this page will be the last',\n", + " 'this is how it ends, to emptiness, to oblivion',\n", + " 'and none will ever return',\n", + " 'chotto dake de ii kanjite what i feel',\n", + " 'tsurete yuku kara hi nichijou made let go',\n", + " 'oto ni yurarete flow',\n", + " 'dekakeyou time to ride saa eye to eye',\n", + " 'kyouyuu suru jikan to kono shunkan wo',\n", + " 'key to life shiritai ? tonight',\n", + " 'oshiete ageru but i want you to',\n", + " 'feel the beat, feel the beat unaru beesu no ue',\n", + " 'feel the heat, feel the heat atsuku moeagaru',\n", + " 'oto ga subete wo tsutsumikonda toki bokura wa hitotsu ni naru',\n", + " 'sing it loud motto tooku made todoku you ni',\n", + " 'sing it loud kimi ga doko no dare demo ii',\n", + " \"you're the one, you're the one\",\n", + " 'kikasete yo',\n", + " 'now sing it loud minna hitori hitori ga superstar',\n", + " 'sing it loud arittake no koe de ima',\n", + " 'o-wi-oh o-wi-oh',\n", + " 'sora no mukou made',\n", + " 'get the party started',\n", + " 'shake your town',\n", + " 'get the party started',\n", + " 'shake it upside down',\n", + " 'tsuki ga chuu ni ukabu time to get crazy now',\n", + " 'dare nitotte mo nichijou wa so full of blues',\n", + " 'nukedasou yo city cruise',\n", + " 'moonlight terasu daitokai alright, alright',\n", + " 'aisu beki jikan to kyou ni raise your glass',\n", + " 'key to life mitsukeru tonight',\n", + " 'kimi no naka ni aru',\n", + " 'sing it loud motto tooku made todoku you ni',\n", + " 'sing it loud kimi ga doko no dare demo ii',\n", + " \"you're the one, you're the one\",\n", + " 'kikasete yo',\n", + " 'now sing it loud minna hitori hitori ga superstar',\n", + " 'sing it loud arittake no koe de ima',\n", + " 'o-wi-oh o-wi-oh',\n", + " 'sora no mukou made',\n", + " 'feel the beat, feel the beat',\n", + " 'feel the heat, feel the heat',\n", + " 'feel the beat, feel the beat',\n", + " 'feel the heat, feel the heat',\n", + " 'sing it loud tatoe kono koe karete mo',\n", + " 'sing it loud owaru koto no nai uta wo',\n", + " 'errbody scream it tonight',\n", + " 'sing it loud motto tooku made todoku you ni',\n", + " 'sing it loud kimi ga doko no dare demo ii',\n", + " \"you're the one, you're the one\",\n", + " 'kikasete yo',\n", + " 'now sing it loud minna hitori hitori ga superstar',\n", + " 'sing it loud arittake no koe de ima',\n", + " 'o-wi-oh o-wi-oh',\n", + " 'sora no mukou made',\n", + " 'o-wi-oh o-wi-oh',\n", + " 'sora no mukou made',\n", + " 'sora no mukou made',\n", + " 'get the party started',\n", + " 'shake your town',\n", + " 'get the party started',\n", + " 'shake it upside down',\n", + " \"just come'n dance with me baby\",\n", + " 'put your best dress on',\n", + " \"cause tonight i'm gonna take you away\",\n", + " 'konya wa kimi wo shinju ni shiyou',\n", + " 'we can dance our cares away',\n", + " 'karei na doresu matoi ai ni kite',\n", + " 'yami nante tori haratte shimaou',\n", + " 'yume no you na yuki ni futari somarou',\n", + " 'we can dance our cares away, away',\n", + " 'baby suteki na basho he tsurete tte ageru',\n", + " 'kimi ga motto kagayaki masu you ni cause baby',\n", + " 'mai odorasetai ai to hane ga aru',\n", + " 'kono omoi, uke tomete',\n", + " 'because tonight hitorikiri ja dekinai',\n", + " 'yorokobi wo kimi to kanjitai yo',\n", + " \"so just come'n dance with me baby\",\n", + " 'put your best dress on',\n", + " \"cause tonight i'm gonna take you away\",\n", + " 'konya wa kimi wo shinju ni shiyou',\n", + " 'we can dance our cares away, away',\n", + " 'dadadodadadadoda',\n", + " 'dadadoda dadadoda, yeah',\n", + " \"tonight we'll fankii na paatii ni shiyou\",\n", + " 'omoi no mama ni haato wo yurashi aou yo baby',\n", + " 'subete wo boku ni makasete oite',\n", + " 'torokeru you ni tanoshi mou',\n", + " 'because tonight',\n", + " 'hitorikiri ja dekinai',\n", + " 'yorokobi wo kimi to kanjitai yo',\n", + " \"so just come'n dance with me baby\",\n", + " 'put your best dress on',\n", + " \"cause tonight i'm gonna take you away\",\n", + " 'konya wa kimi wo shinju ni shiyou',\n", + " 'we can dance our cares away, away',\n", + " 'dadadodadadadoda',\n", + " 'dadadoda dadadoda, yeah',\n", + " 'dadadodadadadoda',\n", + " 'dadadoda dadadoda, yeah',\n", + " 'because tonight',\n", + " 'hitorikiri ja dekinai',\n", + " 'yorokobi wo kimi to kanjitai yo',\n", + " \"so just come'n dance with me baby\",\n", + " 'put your best dress on',\n", + " \"cause tonight i'm gonna take you away\",\n", + " 'konya wa kimi wo shinju ni shiyou',\n", + " 'we can dance our cares away, away',\n", + " \"so just come'n dance with me baby\",\n", + " 'put your best dress on',\n", + " \"cause tonight i'm gonna take you away\",\n", + " 'konya wa kimi wo shinju ni shiyou',\n", + " 'we can dance our cares away, away',\n", + " \"so just come'n dance with me baby\",\n", + " 'put your best dress on',\n", + " \"cause tonight i'm gonna take you away\",\n", + " 'konya wa kimi wo shinju ni shiyou',\n", + " 'we can dance our cares away, away',\n", + " 'mataleena neito nuori',\n", + " 'neito nuori ja nurja',\n", + " \"sill'on synkkää syämessä\",\n", + " 'pahan mennehen maa',\n", + " 'kun ol kolme poikalasta',\n", + " 'kolme lasta laitettu',\n", + " 'kolme kääröä kerällä',\n", + " 'omaksi annettu',\n", + " 'mataleena neito nuori',\n", + " 'neito nuori ja nurja',\n", + " \"sill'on synkkää syämessä\",\n", + " ...]},\n", + " 'rock': {'meta': {'train_data': ['here i scream in agony, in loneliness and pain',\n", + " 'the world around forsaken me- my life has gone insane',\n", + " 'here i scream in misery, frustration all around',\n", + " 'i can’t heal all the wounds they sliced- just can be myself',\n", + " 'i cannot change your destiny, can only help you think',\n", + " 'as far as my horizons lead- your thoughts will be more deep',\n", + " 'hope inside is torturing me- keeps painfully alive',\n", + " 'a light inside, a knowledge deep, that shines so bright!',\n", + " 'tartu käteeni ja livu kanssani autuuteen- avaa silmäsi uuteen kirkkauteen',\n", + " 'kyyneleet valuvat silmistä luomettomista',\n", + " 'jotka valaistumisen tulet ovat siunanneet... siunanneet...',\n", + " 'voisiko todella tämä raadeltu liha – olla hänen ruma kuvansa – elämä tässä painajaisessa – tahdon herätä',\n", + " 'see the darkness take my heart – see it drown in the black lake – where’s no beginning – where’s no start – heart...',\n", + " 'epätoivo ja hämmennys – sanat jotka kaikuvat – itsevihani raunioissa – suruni vuorilla huudan tuskaani – tahdon herätä...',\n", + " 'wach auf... wach auf... tahdon herätä... wach auf... wach auf... herätä...',\n", + " 'i long to find that grandiose stream – the esoteric source of thoughts – hear the forbidden tongue',\n", + " 'see the darkness – take our hearts – see the blackness – drowns us apart',\n", + " 'i long to hear the answer to mysteries – that riddle my mind',\n", + " 'askel askeleelta etenen – yhä syvemmälle pimeyteen...',\n", + " 'hyvää yötä kaikki hyppyläiset!',\n", + " 'yks kaks kol nel, kaks kaks kol nel...',\n", + " 'sitting here waiting for your call',\n", + " 'is it coming now, is it coming at all',\n", + " 'at all baby, at all baby',\n", + " 'yes is it coming now',\n", + " 'call me on your telephone girl',\n", + " 'call me on your telephone girl',\n", + " 'call me on your telephone now',\n", + " 'i’ve been waiting, waiting so long',\n", + " 'is it coming now, is it coming along',\n", + " 'coming along, are you coming along',\n", + " 'along with me darling',\n", + " 'call me on your telephone girl',\n", + " 'call me on your telephone girl',\n", + " 'call me on your telephone now',\n", + " 'call me on your telephone girl',\n", + " 'call me on your telephone girl',\n", + " 'call me on your telephone now',\n", + " 'sitting here just waiting for your call',\n", + " 'is it coming now, is it coming at all',\n", + " \"at all baby, won't you call me, call me\",\n", + " 'call me, call me baby',\n", + " 'call me on your telephone girl',\n", + " 'call me on your telephone girl',\n", + " 'call me on your telephone now',\n", + " 'girl, i said girl',\n", + " 'hey!',\n", + " 'kun vielä nousen tästä ylös',\n", + " 'pyyhin kuoleman harteiltani',\n", + " 'suoristan selkäni',\n", + " 'ja tapan itseni',\n", + " 'heitän hyvästit',\n", + " 'maailman melulle',\n", + " 'anna anteeksi',\n", + " 'se, että hengitin',\n", + " 'kuolema ylivuotinen',\n", + " 'saavuttaa jo minut',\n", + " 'ei olisi pitänyt',\n", + " 'päästä näin pitkälle',\n", + " 'kuolema ylivuotinen',\n", + " 'saavuttaa jo minut',\n", + " 'murhamieli madaltuu',\n", + " 'lähestyessä ratkaisun lopullisen',\n", + " 'ei enää viivytyksiä',\n", + " 'ei turhia tekosyitä',\n", + " 'kuolema ylivuotinen',\n", + " 'saavuttaa jo minut',\n", + " 'when i finally get up from here',\n", + " 'i’ll brush death of my shoulders',\n", + " 'straighten my back',\n", + " 'and… kill myself',\n", + " 'i bid farewell',\n", + " 'to the noise of the world',\n", + " 'forgive me',\n", + " 'that i breathed',\n", + " 'death long overdue',\n", + " 'catches up with me',\n", + " 'i shouldn´t have',\n", + " 'gotten this far',\n", + " 'death long overdue',\n", + " 'catches up with me',\n", + " 'murderous mind sinks',\n", + " 'at the dawn of the final solution',\n", + " 'no more delays',\n", + " 'no futile excuses',\n", + " 'death long overdue',\n", + " 'catches up with me',\n", + " 'olen aukaissut uuden silmän',\n", + " 'ja katsonut tyhjyyteen',\n", + " 'olen aukaissut uuden avaruuden',\n", + " 'ja se on aukaissut itsensä minuun',\n", + " 'i have opened a new eye',\n", + " 'i have opened a new eye',\n", + " 'and gazed into the void',\n", + " 'i have opened a new space',\n", + " 'and it has opened itself in me',\n", + " 'tausender monde sterne schein – blutüberströmt und ganz allein – tausender monde sternenglut – blutüberströmt und voller wut',\n", + " 'äänet ohjaavat veistä ihollani – kylmä teräs suutele lihaa',\n", + " 'carving through the gates of night – morning breeze alive – never saw this life before – same way like tonight',\n", + " 'terä kulkee, nuolee syviä uurteita – kehoni itkee kauneudessaan',\n", + " 'carving through the gates of night – morning breeze alive – never saw this live before – same way like tonight',\n", + " 'avoimet viillot saastaa rykivät – oksentaen, sylkien pahoinvointiani',\n", + " 'carving through the gates of night – morning breeze alive – never saw this life before – same way like tonight',\n", + " \"darling it's me, don't you know this is me?\",\n", + " \"i said i will come and show what you've done\",\n", + " \"the moon is my guide there's no other light\",\n", + " \"i'm staring at you, your eyes in the night\",\n", + " 'now enter the dream. can you hear the wild scream?',\n", + " 'deep in the night i breath by your side',\n", + " 'hunting you down it gives me this heat',\n", + " \"for now you can breathe, i'll wait till you're weak\",\n", + " 'whispering voices surrounding you',\n", + " \"you're starting to fear what you're going to see in the moon glow\",\n", + " \"darling, she's been hiding inside me\",\n", + " '\"odotan iltaa ja yötä sen viimeistä työtä',\n", + " '-se vapauttaa, vie pimeyden taa',\n", + " 'voimaa antaa. turvaa haet sä turhaan!',\n", + " 'lupasin ain sinut saavuttaavain, nyt on aika tullut!\"',\n", + " \"i'm hunting your dreams, i'm taking them down\",\n", + " 'destroying your heart by draining your love!',\n", + " 'now you will feel how my life has been',\n", + " 'living a dream as a living dead being',\n", + " 'whispering voices surround you',\n", + " \"you're starting to fear what you're going to see in the moon glow\",\n", + " \"darling, she's been hiding inside me\",\n", + " '\"odotan iltaa ja yötä sen viimeistä työtä',\n", + " '-se vapauttaa, vie pimeyden taa',\n", + " 'voimaa antaa. turvaa haet sä turhaan!',\n", + " 'lupasin ain sinut saavuttavain, nyt on aika!\"',\n", + " '\"turhaan haet sa turvaa!',\n", + " 'lupaisin ain sinut saavuttavain',\n", + " 'nyt on aika!\"',\n", + " '\"tämä on se uni',\n", + " 'puhdistava tuli.\"',\n", + " 'oooooooooooooh, fight!',\n", + " 'oh baby, nooooo-ooh-oohh',\n", + " 'oh baby, nooooo-ooh-oohh',\n", + " 'togisumasu eyes',\n", + " 'kiki aki ta phrase ya',\n", + " 'dare ka no copy jya mitasarenai n da yo',\n", + " 'spark! kiete kure mata tora no i o karite, fuiteku n daro',\n", + " 'makki no dosu kuro no best play, in the house daiissen no stage de',\n", + " 'koreppocchi mo makeru kigashi nee na',\n", + " '24/7, come on, fight it out',\n", + " 'shosen ao no sekai ni',\n", + " 'tojikome rare te warau',\n", + " 'taiyou o ushinatte boku wa',\n", + " 'tsuki no ari ka o sagasu',\n", + " 'miete ita mono made miushinatte bokura wa',\n", + " 'omoide no umi no naka, obore te iku noni',\n", + " 'doushite? (doushite?)',\n", + " 'chikai atta koto made',\n", + " 'nakatta koto ni shite tsugi no passport',\n", + " 'oh baby...',\n", + " 'cloudy...',\n", + " 'ushinaware insistence',\n", + " 'nareai no everyday flater ni tsuite n da yo',\n", + " 'spark... kie souda',\n", + " 'hakusha wa kakara zu tomo omoi ni',\n", + " 'utsuroi wa nai',\n", + " 'oooooooooooooh, fight!',\n", + " 'makki no dosu kuro no best play, in the house daiissen no stage de',\n", + " 'kozotte sagasu elysion no tobira mokuzen de nogasu',\n", + " 'tenohira kara waratte ochite iku kirei ni',\n", + " 'hisshi de atsume houkou tta karappo no story',\n", + " 'taisetsu na omoide mo sukoshi oiteikou',\n", + " 'subete seotta mama jya wataru ni wa omoku te',\n", + " 'soushite (soushite)',\n", + " 'mata deatta toki ni wa',\n", + " 'sukoshi irokoku atatame te kure',\n", + " 'oooooooooooooh, fight!',\n", + " 'rebel one! (rebel one!)',\n", + " 'towa no koe again',\n", + " 'kokoro ni i tsu todoku',\n", + " 'rebel one! (rebel one!)',\n", + " 'towa no koe again',\n", + " 'kika sete',\n", + " 'rebel one! (rebel one!)',\n", + " 'towa no koe again',\n", + " 'kokoro ni i tsu todoku',\n", + " 'rebel one! (rebel one!)',\n", + " 'turning point...',\n", + " 'oooooooooooooh, fight!',\n", + " 'g9, ichi keta de miseru',\n", + " 'gekidou no nou nai kakumei',\n", + " 'oooooooooooooh, fight!',\n", + " 'uh... base, ability, mind',\n", + " 'oooooooooooooh, fight!',\n", + " 'round 1 dassee ichi kara hoe te na',\n", + " 'kuratta zasetsu purasu honki no shunkan da',\n", + " 'g9 hebii no punch!',\n", + " 'miseru gekidou ichi keta de nou nai kakumei',\n", + " 'rebel one... (rebel one...)',\n", + " 'shake violently, again',\n", + " 'rebel one... (rebel one...)',\n", + " 'shake violently, again',\n", + " 'taiyou o ushinatte shimatta boku no hitomi wa',\n", + " 'tsuki o utsushi kagayaku koto wa nai yo',\n", + " 'tsuki nai yoku to ganbou ni ate rare te',\n", + " 'kitto doko ni mo nai mono o sagashi te',\n", + " 'aruku yo...',\n", + " 'miete ita mono made miushinatte bokura wa',\n", + " 'omoide no umi no naka, obore te iku noni',\n", + " 'doushite? (doushite?)',\n", + " 'chikai atta koto made',\n", + " 'nakatta koto ni shite tsugi no passport',\n", + " 'taisetsu na omoide mo sukoshi oiteikou',\n", + " 'subete seotta mama jya wataru ni wa omoku te',\n", + " 'soushite (soushite)',\n", + " 'mata deatta toki ni wa',\n", + " 'sukoshi irokoku atatame te kure',\n", + " 'oooooooooooooh, fight!',\n", + " 'umaku oiteike tara, obore nai de, sute nai de, mata aeru kara',\n", + " 'rebel one! (rebel one!)',\n", + " 'towa no koe again',\n", + " 'kokoro ni i tsu todoku',\n", + " 'rebel one! (rebel one!)',\n", + " 'turning point...',\n", + " 'revi',\n", + " 'algoritmi',\n", + " 'ajattele',\n", + " 'haluja',\n", + " 'unohda',\n", + " 'sajien rajat',\n", + " 'räjähdä eloon',\n", + " 'molten uranium',\n", + " 'tear',\n", + " 'the algorithm',\n", + " 'think of',\n", + " 'the urges',\n", + " 'forget',\n", + " 'the boundaries of species',\n", + " 'explode to life',\n", + " 'näkki laulaa lauluaan',\n", + " 'luokseen sävelet houkuttavat',\n", + " 'kylmään järveen nukkumaan',\n", + " 'ihmislasta tuudittaa',\n", + " 'kauas sävelet kantautuvat',\n", + " 'kohti kylmää kuolemaa',\n", + " 'järven selälle tanssimaan',\n", + " 'lumoutuneena vaeltaa',\n", + " 'näkki chants a song',\n", + " 'its tunes fill the air',\n", + " 'shivers of chillness',\n", + " 'cradle a human child',\n", + " 'fading to trance',\n", + " 'on a starlit lake',\n", + " 'enchantment',\n", + " 'of stony loneliness',\n", + " 'lonely and black – you sit there alone – peaceful and sad – feeling well, feeling down',\n", + " 'in this magical dark world – still so warm, still so filled – with melancholy',\n", + " 'ei, et kuulu tähän maailmaan – vien sinut mukanani kylmään hautaan... kylmään hautaan...',\n", + " 'ehkä hulluuden mustissa syövereissä – viimeinkin saat silmäsi auki... saat silmäsi auki... saat silmäsi auki...',\n", + " 'i see love where you see hate – no longer try to make you understand – i just go my way... my way...',\n", + " 'kimi no rippa na souzou rinen to',\n", + " 'boku no katte na bousou risou wo',\n", + " 'masete konete yaite sukoshi hoshite itamete nitsumete',\n", + " 'supaisu ni hitosashi kanashimi wo',\n", + " 'ai no sousu wo nishizuku tarashitara',\n", + " 'dekiagatta saigo no bansan chuu ni matta supuun to shousan',\n", + " 'this light bgm rewinds gmt',\n", + " 'power station had become inhumanity',\n", + " 'i’ll fly to fall down, ignore your logic',\n", + " 'july 20, may steal melodic encores',\n", + " 'i am painting their ufo scarlet and powder blue',\n", + " 'by piles of technologies of radio she created',\n", + " 'i am making the x-rated music to carry it off',\n", + " 'by forbidden experiments',\n", + " 'that is maybe…',\n", + " 'shikou to sakugo no cheisu',\n", + " 'sore wa tsumari kako to ima no reasu',\n", + " 'migi hidari migi de migite agetan jya mou akashingou',\n", + " 'odoridasu aidea',\n", + " 'damarikomu seorii',\n", + " 'ichi juu haku sen kurikaeshiteiru',\n", + " 'i am painting their ufo scarlet and powder blue',\n", + " 'by piles of technologies of radio she created',\n", + " 'i am making the x-rated music to carry it off',\n", + " 'by forbidden experiments',\n", + " 'so…',\n", + " 'i am painting their ufo scarlet and powder blue',\n", + " 'by piles of technologies of radio she created',\n", + " 'i am making the x-rated music to carry it off',\n", + " 'by forbidden experiments',\n", + " 'that is maybe…',\n", + " 'enban hirai kagaku no yoru mirai to souguu',\n", + " 'idai na koushin',\n", + " 'enban hirai kakuu no yoru mikaimei no nazo',\n", + " 'subete ga mu ni mukatteiru tashika ni dareka ga sou itteita',\n", + " 'sore wa dareshimo ga shitteite dareshimo ga shiranu furi wo shita koto',\n", + " 'yoru wa gunjou iyoiyo da iyoiyo taiyou ga gyakuryuu suru',\n", + " 'makkuro de kouketsu na hikari ni terasarete',\n", + " 'kindan no chougou',\n", + " 'mujinzou no tankyuushin',\n", + " 'abc no kyoiku',\n", + " 'aijou no hi ikkansei',\n", + " 'kindan no chougou',\n", + " 'mujinzou no tankyuushin',\n", + " 'abc no kyoiku',\n", + " 'aijou no hi ikkansei',\n", + " 'owari ka, owari ka, owari ka, owari ka',\n", + " 'owari da, owari da, owari da, owari da ne',\n", + " 'hän katsoi maan reunalta tähteä putoavaa',\n", + " 'nyt kauniit kasvot neitosen peittää karu maa',\n", + " 'jokaisen tytyy katsoa silmiin totuuden',\n", + " 'sill aika ompi voittoisa, mutt tämä maa on ikuinen',\n", + " 'hän katsoi maan reunalta tähteä putoavaa',\n", + " 'nyt kauniit kasvot neitosen peittää karu maa',\n", + " 'jokaisen tytyy katsoa silmiin totuuden',\n", + " 'sill aika ompi voittoisa, mutt tämä maa on ikuinen',\n", + " \"there's a place in the north, far, far away\",\n", + " 'home for the wandering man',\n", + " 'dreaming fells with skies so pale',\n", + " 'calm is the glorious land',\n", + " 'flames will send the sign to the sky',\n", + " 'that we have come to feast tonight',\n", + " 'the lakes are echoing with our song',\n", + " 'shadows are dancing on the forest walls',\n", + " 'shadows are dancing on the forest walls',\n", + " 'enchantment of the fire and moon',\n", + " 'lost in the whispering night',\n", + " \"the raven's magic enthralls the woods\",\n", + " \"it's crawling in the sweet starlight\",\n", + " 'we have gathered in this distant land',\n", + " 'full of wisdom, secrets and tales',\n", + " 'morning will never rise again',\n", + " 'roaming wolves are howling for the dead',\n", + " 'roaming wolves are howling for the dead, oh yeah',\n", + " 'la la la',\n", + " '(lai lai hei)',\n", + " 'la la la',\n", + " '(lai lai hei)',\n", + " 'hän katsoi maan reunalta tähteä putoavaa',\n", + " 'nyt kauniit kasvot neitosen peittää karu maa',\n", + " 'jokaisen tytyy katsoa silmiin totuuden',\n", + " 'sill aika ompi voittoisa, mutt tämä maa on ikuinen',\n", + " 'la la la',\n", + " '(lai lai hei)',\n", + " 'la la la',\n", + " '(lai lai hei)',\n", + " 'kutsu verestä',\n", + " 'käskemättä',\n", + " 'orgaanisia',\n", + " 'bakteerien haluja',\n", + " 'hyväile vieraita muotoja',\n", + " 'askew sprout',\n", + " 'call from the blood',\n", + " 'uncommanding',\n", + " 'organic',\n", + " 'bacterial desires',\n", + " 'embrace alien shapes',\n", + " 'voit astua kesdelle täaydellistä ympyrää',\n", + " 'silti se on vain piirretty viiva tomussa',\n", + " 'voit viiltää halki pelokkaiden silmien',\n", + " 'silti se sinut löytää',\n", + " 'sen nälkäiset kasvot',\n", + " 'unenmustan käytävän syvyydessä',\n", + " 'a circle is a line in the dust',\n", + " 'you can enter the center of a perfect circle',\n", + " 'still it is only a drawn line in the dust',\n", + " 'you can slice through fearful eyes',\n", + " 'seill it will find you',\n", + " 'its hungry face',\n", + " 'in the depths of a passage black as a dream',\n", + " 'te verestä kiimaiset murhamiehet!',\n", + " 'kiimaiset kiimaiset miehet',\n", + " \"rock 'n' roll\",\n", + " \"rock 'n' roll\",\n", + " \"rock 'n' roll\",\n", + " \"rock 'n' roll\",\n", + " \"rock 'n' roll\",\n", + " \"rock 'n' roll\",\n", + " \"rock 'n' roll\",\n", + " \"rock 'n' roll\",\n", + " 'fbi',\n", + " \"rock 'n' roll\",\n", + " 'kgb',\n", + " \"rock 'n' roll\",\n", + " 'cia',\n", + " \"rock 'n' roll\",\n", + " 'tnt',\n", + " \"rock 'n' roll\",\n", + " 'plo',\n", + " \"rock 'n' roll\",\n", + " 'ira',\n", + " \"rock 'n' roll\",\n", + " 'thx',\n", + " \"rock 'n' roll\",\n", + " 'xxx',\n", + " \"rock 'n' roll\",\n", + " 'mtv dna!',\n", + " 'mtv dna!',\n", + " 'fbi',\n", + " \"rock 'n' roll\",\n", + " 'kgb',\n", + " \"rock 'n' roll\",\n", + " 'cia',\n", + " \"rock 'n' roll\",\n", + " 'tnt',\n", + " \"rock 'n' roll\",\n", + " 'plo',\n", + " \"rock 'n' roll\",\n", + " 'ira',\n", + " \"rock 'n' roll\",\n", + " 'thx',\n", + " \"rock 'n' roll\",\n", + " 'xxx',\n", + " \"rock 'n' roll\",\n", + " 'ddr',\n", + " \"rock 'n' roll\",\n", + " 'rpm',\n", + " \"rock 'n' roll\",\n", + " 'bpm',\n", + " \"rock 'n' roll\",\n", + " 'mtv',\n", + " \"rock 'n' roll\",\n", + " 'dna',\n", + " \"rock 'n' roll\",\n", + " 'kkk',\n", + " \"rock 'n' roll\",\n", + " 'thc',\n", + " \"rock 'n' roll\",\n", + " \"abc rock 'n' roll!\",\n", + " 'mtv dna!',\n", + " 'mtv dna!',\n", + " 'mtv dna!',\n", + " 'mtv dna!',\n", + " 'fbi',\n", + " 'kgb',\n", + " 'cia',\n", + " 'tnt',\n", + " 'plo',\n", + " 'ira',\n", + " 'thx',\n", + " 'xxx',\n", + " 'ddr',\n", + " 'rpm',\n", + " 'bpm',\n", + " 'mtv',\n", + " 'dna',\n", + " 'kkk',\n", + " 'thc',\n", + " \"abc rock 'n' roll!\",\n", + " 'mtv',\n", + " 'dna',\n", + " 'kkk',\n", + " \"rock 'n' roll!\",\n", + " '38 saturnal wars',\n", + " 'still the same old never-ending ache',\n", + " 'forever this solitude going on',\n", + " 'forever alone',\n", + " 'kolmekymmentäyksi mustan linnun kehää',\n", + " 'kahdeksan siiveniskua vaille seitsemää',\n", + " 'kunnes taas sukeltaa pimeään',\n", + " 'olemassaolon hämärään',\n", + " 'so sick and tired of this world',\n", + " 'this promised land of decadence',\n", + " 'so sick and tired of this life',\n", + " 'this never-ending misery',\n", + " 'endless streams of empty shells',\n", + " 'towards the gates of nothingness',\n", + " 'kun usva nielee syksyn tulta',\n", + " 'livun toiseen maailmaan',\n", + " 'täällä olen vain kuori',\n", + " 'jota eksynyt aave asuttaa',\n", + " 'flaming chalice of the golden horizon',\n", + " 'fumes of the bitter wine of age',\n", + " 'burns within revealing the true form',\n", + " 'rarely witnessed by the human eye',\n", + " '- taikatalvi',\n", + " 'lapsistain rakkain tää näyttämö on',\n", + " 'mis kuutamo kujillaan kulkee',\n", + " 'taipunut havu, kesä hoivassa sen',\n", + " 'valkomeren niin aavan',\n", + " 'joka aavekuun siivin',\n", + " 'saapuu mut kotiin noutamaan',\n", + " 'päällä talvisen maan hetki kuin ikuisuus',\n", + " 'mi pienen kissan jaloin luokseni hiipii',\n", + " 'tääl tarinain lähteellä asua saan mis',\n", + " 'viulu valtavan kaihon',\n", + " 'ikisäveltään maalaa',\n", + " 'laulullaan herättää maan',\n", + " '- enchanted winter',\n", + " 'this stage is the dearest of my children',\n", + " 'where moonlight moves through alleys',\n", + " 'a bent twig, a summer in its care',\n", + " 'white vast open sea',\n", + " 'on the wings of a phantom moon',\n", + " 'comes to take me home',\n", + " 'in winterland a moment is an eternity',\n", + " 'creeps to me on kitten paws',\n", + " 'i get to live here where the story begins',\n", + " 'where a violin echoes the eternal melody of immense longing',\n", + " 'waking up the earth with its song',\n", + " 'mikään joki ei meitä',\n", + " 'lähemmäs voi tuoda',\n", + " 'mikään joki ei meitä',\n", + " 'pidemmäs voi viedä',\n", + " 'juoksee puro',\n", + " 'solistessaan sateisena',\n", + " 'virrat palaa',\n", + " 'aina aamuun',\n", + " 'harhan teiltä',\n", + " 'virrat palaa',\n", + " 'tehneinä matkaa',\n", + " 'aalloilla harjanteina',\n", + " '(english translation:)',\n", + " 'rivers return',\n", + " 'no river',\n", + " 'could bring closer',\n", + " 'no river',\n", + " 'could take further',\n", + " 'for rivers run',\n", + " 'when led with rain',\n", + " 'currents return',\n", + " 'from strayed',\n", + " 'paths to rest',\n", + " 'currents return',\n", + " 'having crowned',\n", + " 'billows with crests',\n", + " 'chaban ni buingu renchuu',\n", + " 'boke jama na party',\n", + " 'ano wana bara su kiha koreppochimonee',\n", + " 'tsumi ikura? tsumi stare n hannin ga renga nage',\n", + " 'bake ta neko no furan shitai renchuu pork & bits',\n", + " 'blood! blood! blood! love!',\n", + " \"rock 'n' roll chainsaw\",\n", + " \"rock 'n' roll chainsaw\",\n", + " \"rock 'n' roll chainsaw\",\n", + " \"rock 'n' roll chainsaw\",\n", + " 'japan risk rebel brand',\n", + " 'bubble bubble bouri',\n", + " 'global benri bu ranbou ore ga okite',\n", + " 'surippa senpuu rokku subete manabe ramen',\n", + " 'suteki na ban kubaru na pan kubetsu v.i.p',\n", + " 'blood! blood! blood! love!',\n", + " \"rock 'n' roll chainsaw\",\n", + " \"rock 'n' roll chainsaw\",\n", + " \"rock 'n' roll chainsaw\",\n", + " \"rock 'n' roll chainsaw\",\n", + " 'fan! ikansan! ika sane!',\n", + " 'keikan! ika sane!',\n", + " 'zeni ka? ikari ka? zenbu!',\n", + " 'jii ie ika sen!',\n", + " 'jii ie ika sen!',\n", + " 'bonbon inkan kanekashi seyo boku',\n", + " 'paan!!oshiekisa o? oyoke bou',\n", + " 'boro make sa people!',\n", + " 'hana makka kade kechonchonchonchon!',\n", + " 'hana makka kade kechonchonchonchon!',\n", + " 'kechonchonchonchon!',\n", + " 'kechonchonchonchon!',\n", + " 'away! away! away! chainsaw away!',\n", + " 'away! away! chainsaw!',\n", + " 'pinkiri fudou mane',\n", + " 'ore kutsuu ha sukuwa rene',\n", + " 'ikiume naka fuantei ibuki ki kaeshi tara fanfare',\n", + " 'janpu no manga ni mi furuu eikyou baramake boke! suppin gazou',\n", + " 'binbou na janba genba ja aga njan',\n", + " 'pipopo repiso 2papa ranbasa',\n", + " 'tontoro bakkani bora renna toppi paredo',\n", + " 'blood! blood! blood! love!',\n", + " \"rock 'n' roll chainsaw\",\n", + " 'ta tataratta tattatta chainsaw!',\n", + " 'ta tataratta tattatta chainsaw!',\n", + " \"rock 'n' roll chainsaw!\",\n", + " 'tatta ima waratta yatsu karahatsu taosu!!!!!!!!',\n", + " 'hakaba karada dangan ga tsukan da hakkekkyuu',\n", + " 'zanpai sutanbai akkenaku nankan datsu ha!',\n", + " 'zanpai sutanbai akkenaku datsu ha!',\n", + " 'away! away! away! chainsaw away!',\n", + " 'away! away! chainsaw!',\n", + " 'pinkiri fudou mane',\n", + " 'ore kutsuu ha sukuwa rene',\n", + " 'kenjuu de juuman rei',\n", + " 'noroi kutsuu fabric',\n", + " 'away! away! away! chainsaw away!',\n", + " 'away! away! chainsaw!',\n", + " 'pinkiri fudou mane',\n", + " 'ore kutsuu ha sukuwa rene',\n", + " 'denki isu te maneku son piku',\n", + " 'saraba rabameitsu']},\n", + " 'data': ['luutahoilla hiljaa kuljen, kuulostelen pohjantuutla',\n", + " 'kaavin maata kourillani tarpeiksi tulevan päivän',\n", + " 'huomenna tulen takaisin, juodaan malja, juodaan toinen',\n", + " 'multaa viskon viinaksiisi, maistaa saat manalan mahdin',\n", + " 'niin sovin ja niin myös teenkin',\n", + " 'valvoin yötä, äänen kuulin',\n", + " 'sjövereistä mustan mielen',\n", + " 'kätköistä kamalan laulun',\n", + " 'ruumiinmultaa aana sulle',\n", + " 'ruumiinmultaa vihmon sulle',\n", + " 'niin rikastun, niin rakastun',\n", + " 'otan riskin, katson kortit',\n", + " 'juotuasi multiani',\n", + " 'ruumiinjätteitä, muruja',\n", + " 'näät maailman uusin silmin',\n", + " 'näät maailman hullun silmin',\n", + " 'jollet juokaan multaa kalman, jollet maista mustaa maata',\n", + " 'menetän mä sillion kaiken, rahat, mielen hengen',\n", + " 'huomenna tulen takaisin, juodaan malja, juodaan toinen',\n", + " 'multaa viskon viinaksiisi, maistaa saat manalan mahdin',\n", + " 'ruumiinmultaa, ruumiinmultaa, ruumiinmultaa',\n", + " 'pääsi kääntyy, vääntyy mieli',\n", + " 'hukut tuskaan, kaadut haahan!',\n", + " 'kuolema on kohtalosi',\n", + " 'tuonelasta saat kotisi',\n", + " 'niin sovin ja niin myös teenkin',\n", + " 'valvoin yötä, äänen kuulin',\n", + " 'syövereistä mustan mielen',\n", + " 'kätköista kamalan laulun',\n", + " 'ruumiinmultaa, ruumiinmultaa, ruumiinmultaa',\n", + " '(english translation:)',\n", + " 'soil of the corpse',\n", + " 'calmly i walk in the bone gardens',\n", + " 'i listen to the wind of north',\n", + " 'i dig soil with my hands',\n", + " 'for the good of the day to come',\n", + " 'tomorrow i will be back again',\n", + " \"we'll drink a cup and another\",\n", + " \"i'll toss soil in your spirits\",\n", + " 'you are to taste the might of death',\n", + " 'so i agreed and so will do',\n", + " 'i stayed up nights, heard a sound',\n", + " 'from the depths of the dark mind',\n", + " 'from the caches of the horrible song',\n", + " 'soil of the corpse, i give it to you',\n", + " 'i sprinkle it around for you',\n", + " 'to get rich, to fall in love',\n", + " 'i take a risk, i check my cards',\n", + " 'as you drink the soil like wine -',\n", + " 'crumbs, remnants, the corpse of mine -',\n", + " 'you will see the world with new eyes',\n", + " 'you will see the world with insane eyes',\n", + " \"if you don't drink the soil of death\",\n", + " \"if you don't taste the black earth\",\n", + " 'i will then lose everything -',\n", + " 'my money, mind and spirit',\n", + " 'tomorrow i will be back again',\n", + " \"we'll drink a cup and another\",\n", + " \"i'll toss soil in your spirits\",\n", + " 'you are to taste the might of death',\n", + " 'your head will turn, your mind will twist',\n", + " \"you'll sink in pain, and you'll fall down\",\n", + " 'your destiny is death',\n", + " 'the underworld will be your home',\n", + " 'so i agreed and so will do',\n", + " 'i stayed up nights, i heard a sound',\n", + " 'from the depths of the dark mind',\n", + " 'from the caches of the horrible song',\n", + " 'at war with myself',\n", + " 'mieleni ainainen sotatanner',\n", + " 'once again in this hell',\n", + " 'ristitulessa raunioina',\n", + " 'at war with myself',\n", + " 'riutuneet kädet kaivavat',\n", + " 'fucking war in my head',\n", + " 'hedelmätönä maaperää',\n", + " 'on my knees, shattered',\n", + " 'waiting for the fury to settle',\n", + " 'to find the haven in this madness',\n", + " 'and see the storm to calm',\n", + " 'tired, empathy my torturer',\n", + " \"only choice whom i'll hurt this time\",\n", + " 'torture, empathy, a hurtful choice',\n", + " 'nourishing my true self',\n", + " 'altruistic deprivation',\n", + " 'inside your hearts rest my past',\n", + " 'which kneels to my regrets',\n", + " 'through all the chaos, in the middle of silence',\n", + " 'all the burial pits, shelters of my shadow',\n", + " 'to perish into nothingness',\n", + " 'through the veils of life and death',\n", + " 'frei',\n", + " 'puhdistuneena erillisenä kaikesta',\n", + " 'in die unendlichkeit',\n", + " 'katson universumiani keskellä aikaa',\n", + " 'im selben moment wie es mir das herz zerschneidet',\n", + " 'neues glück erwacht',\n", + " 'in mir aus der asche der vergangenheit',\n", + " 'ei saastainen sielu enää ryömi',\n", + " 'befreit',\n", + " 'ulos onnettomasta ruumiista',\n", + " \"was there something i didn't say\",\n", + " 'was there anything undone',\n", + " \"i saw you drown but i couldn't help\",\n", + " 'lost it all, saved myself',\n", + " 'just wanted you to stay',\n", + " 'pieces of you left behing',\n", + " \"didn't i want you to leave\",\n", + " 'a hurtful trail of memories',\n", + " 'just wanted you to be',\n", + " 'what leads to your remains',\n", + " 'here with me',\n", + " 'not a sign of what you used to be',\n", + " 'why?',\n", + " 'miksi sirpaleet lankeavat rakkaitteni edessä?',\n", + " 'why?',\n", + " 'miksi kätensä torjuvat, työntävät kauemmas?',\n", + " 'menneisyytesi irvikuva kasvotusten kanssani',\n", + " 'avuttomana, huurtuvat lasin takana',\n", + " 'vaikka haluaisin silittää hiuksiasi',\n", + " 'etäännyn ja käännän selkäni',\n", + " 'break the silence in me',\n", + " 'take the sorrow from me',\n", + " 'why?',\n", + " 'miksi sirpaleet lankeavat rakkaitteni edessä?',\n", + " 'why?',\n", + " 'miksi kätensä torjuvat, työntävät kauemmas?',\n", + " \"please don't strip that mask off\",\n", + " \"i don't want to see the wicked truth\",\n", + " 'let it be',\n", + " 'leave me my illusion',\n", + " 'nail it to the bone',\n", + " 'usein painaa ja valvottaa',\n", + " 'omatunto kun kolkuttaa',\n", + " 'se on varmaa, joka kahlaa synnissä',\n", + " 'rauhaa ei hän saa',\n", + " 'tämän hetken voin unohtaa',\n", + " 'sitä velkaa taas maksetaan',\n", + " 'siihen harhaan koko maailma on koukussa',\n", + " 'huutaa tuskissansa:',\n", + " 'miksi herra sallit pahan lyöda ihmistä taas',\n", + " 'kaikkivaltiaana kaiken estää sä voisit',\n", + " 'paaduttaa voinhan itseni jälleen',\n", + " 'kaivaa kuoppaa tippua päälleen',\n", + " 'toistaa lauseen tunnetun ääneen:',\n", + " 'parannuksen huomenna teen',\n", + " 'taikka laulaa:',\n", + " 'katkaista saan siteet valheen',\n", + " 'nyt irroittaa vihdoinkin kahleen',\n", + " 'jeesus auttaa toivottomuudesta',\n", + " 'ja rauhan saan sydämeen',\n", + " 'aamen',\n", + " 'kovan koulun sain aloittaa',\n", + " 'herra laittoi mut huomaamaan',\n", + " 'omat synnit:',\n", + " 'miten hirret silmissä on niin korkeat',\n", + " 'ennen etsin vain taivaalta',\n", + " 'joka vuoristosta ja huipulta',\n", + " 'tuli jeesus, joka olikin jo pohjalla',\n", + " 'armo syntiselle',\n", + " 'jospa pahan poistais herra oisin ensimmäinen',\n", + " 'sinä toinen myöskin kaiki ihmiset maan',\n", + " 'english translation:',\n", + " \"it often weighs me down and doesn't let me sleep\",\n", + " 'when my conscience beats me',\n", + " \"it's certain that the one who wades trough sin\",\n", + " \"can't have peace\",\n", + " 'i can forget this moment',\n", + " \"that's the debt that's being paid again\",\n", + " \"that's the illusion the whole world is depending on\",\n", + " 'shouting in agony',\n", + " 'why do you let evil hit people again, lord?',\n", + " 'as the almighty you could prevent it all',\n", + " 'i can still harden myself',\n", + " 'dig a hole, fall on my head',\n", + " 'repeat the often-heard sentence aloud:',\n", + " \"i'm going to make an amendment.... tomorrow\",\n", + " 'or sing:',\n", + " 'i can finally cut the restrains of lies',\n", + " 'and cast off the chain',\n", + " \"jesus helps when i'm in despair\",\n", + " 'and i can have peace in my heart',\n", + " 'amen',\n", + " 'i was made to start the hard lessons',\n", + " 'lord made me to see',\n", + " 'my own sins:',\n", + " 'how the beams in my eyes are so high',\n", + " 'before this i only searched the sky',\n", + " 'every mountain and every peak',\n", + " 'then came jesus, who already was at the bottom',\n", + " 'the forgiveness for a sinner',\n", + " 'if the lord would remove the evil, i would be the first',\n", + " 'you the second and then every people on earth',\n", + " 'suuri tyhjyys odottaa',\n", + " 'sillähän on aikaa',\n", + " 'aina kulman takana',\n", + " 'odottaa kuolema',\n", + " 'loputon mustuus avaruuden',\n", + " 'ei halua mitään muuta',\n", + " 'kuin tappaa meidät kaikki',\n", + " 'se odottaa siellä, joka puolella',\n", + " 'se on minussa',\n", + " 'odotus ikuinen',\n", + " 'se loppuu vielä',\n", + " 'odotus ikuinen',\n", + " 'vielä kuolema voittaa',\n", + " 'tyhjyyteen',\n", + " 'kotiin',\n", + " 'pimeyteen',\n", + " 'olemattomuuteen',\n", + " 'minun nimeni',\n", + " 'unholaan katoaa, niin kuin sinäkin',\n", + " 'tyhjyys odottaa',\n", + " 'me olemme tuhkaa',\n", + " 'lopultakin',\n", + " 'the great emptiness awaits',\n", + " 'well, it has time',\n", + " 'always around the corner',\n", + " 'waits death',\n", + " 'endless blackness of space',\n", + " 'does not want anything else',\n", + " 'than to kill us all',\n", + " 'it waits there, all around us',\n", + " 'it is in me',\n", + " 'endless wait',\n", + " 'it will still end',\n", + " 'endless wait',\n", + " 'death will prevail',\n", + " 'into the void',\n", + " 'to home',\n", + " 'into darkness',\n", + " 'into oblivion',\n", + " 'my name, will be forgotten, just like you',\n", + " 'emptiness awaits',\n", + " 'we are ashes',\n", + " 'finally',\n", + " 'ravaged from inside',\n", + " 'by these thoughts i struggle to hide',\n", + " 'while the radiant cinstellations',\n", + " 'of my mind',\n", + " 'slowly diminish - into obscurity',\n", + " 'gradually extinguishing',\n", + " 'the will to hold on',\n", + " 'this perpetual repetition',\n", + " 'turns one into mindless drone -',\n", + " 'hollow inside',\n", + " 'kuinka jaksaisin enää yrittää',\n", + " 'käsien haroessa aina tyhjää?',\n", + " 'ylittääkö suru ilon vai ilo surun',\n", + " 'kun tärkempää olisi edes',\n", + " 'tuntea jotain....tuntea jotain',\n", + " 'tuntea jotain',\n", + " 'pysäyttäkää maailma',\n", + " 'jäisin tässä pois',\n", + " \"'cause you loose all... perkele\",\n", + " 'yeah yeah yeah yeah yeah yeah',\n", + " 'oh yeah yeah yeah yeah yeah yeah',\n", + " 'i think i did it again',\n", + " \"i made you believe we're more than just friends\",\n", + " 'oh baby',\n", + " 'it might seem like a crush',\n", + " \"but it doesn't mean that i'm serious\",\n", + " \"'cause to lose all my senses\",\n", + " 'that is just so typically me',\n", + " 'oh baby, baby',\n", + " 'oops!... i did it again',\n", + " 'i played with your heart',\n", + " 'got lost in the game',\n", + " 'oh baby, baby',\n", + " \"oops!... you think i'm in love\",\n", + " \"that i'm sent from above\",\n", + " \"i'm not that innocent\",\n", + " 'you see my problem is this',\n", + " \"i'm dreaming away\",\n", + " 'wishing that heroes, they truly exist',\n", + " 'i cry, watching the days',\n", + " \"can't you see i'm a fool in so many ways\",\n", + " 'but to lose all my senses',\n", + " 'that is just so typically me',\n", + " 'oops!... i did it again',\n", + " 'i played with your heart, got lost in the game',\n", + " 'oh baby, baby',\n", + " \"oops!... you think i'm in love\",\n", + " \"that i'm sent from above\",\n", + " \"i'm not that innocent\",\n", + " '\"jätkät hei, mä lähen meneen ny ihan oikeesti\"',\n", + " '\"hei ankku hei, ennen ku lähet ni kato mitä mä toin sulle\"',\n", + " '\"ei jumalauta, hyvännäkönen. siis eiks tää oo siis....\"',\n", + " '\"on on, sixpack, kyllä\"',\n", + " '\"eihän sun ois tarvinnu hyvä mies, sitä paitsi meill\\' on noita väkeviä\"',\n", + " '\"nii nii, mut aamuks!\"',\n", + " 'oops!... i did it again',\n", + " \"i've played with your heart, got lost in this game, oh baby, baby\",\n", + " \"oops!... you think i'm in love, that i'm sent from above\",\n", + " \"i'm not that innocent\",\n", + " \"it's hot, it's mean, summer, to me\",\n", + " \"green grass, won't last, sky blue, me too\",\n", + " \"it's hot, it's mean, summer, to me\",\n", + " \"green grass, won't last, sky blue, me too\",\n", + " \"it's hot, it's mean, summer, to me\",\n", + " \"green grass, won't last, sky blue, me too\",\n", + " \"it's hot, it's mean, summer, to me\",\n", + " \"green grass, won't last, sky blue, me too\",\n", + " \"it's hot, it's mean, summer, to me\",\n", + " \"green grass, won't last, sky blue, me too\",\n", + " \"it's hot, it's mean, summer, to me\",\n", + " \"green grass, won't last, sky blue, me too\",\n", + " \"it's hot, it's mean, summer, to me\",\n", + " \"green grass, won't last, sky blue, me too\"]}}},\n", + " 'fr': {'sentence': {'pop': {'meta': {'train_data': ['i say money',\n", + " 'everyday think of my money',\n", + " 'everyday want have some money',\n", + " 'doing it do it for money',\n", + " \"l'argent, money\",\n", + " 'cedis, cfa',\n", + " 'euro, dollar',\n", + " 'naira, naira',\n", + " \"l'argent, money\",\n", + " 'cedi, cfa',\n", + " 'euro, dollar',\n", + " 'naira, naira',\n", + " 'uhhmmm quand je passe, on me salue',\n", + " \"parce que j'ai trop d'argent\",\n", + " 'quand je salue, tous gesticulent',\n", + " \"parce que j'ai trop d'argent\",\n", + " 'quand je souris, tout le monde rit',\n", + " \"parce que j'ai trop l'argent\",\n", + " \"quand je suis là, c'est jour de fête\",\n", + " \"parce qu'il y a trop d'argent\",\n", + " 'aaah chérie coco, follow me go oh',\n", + " \"parce qu'il y a trop l'argent\",\n", + " 'elle me dit: \"je t’aime, bara style eh\"',\n", + " 'a cause de mon argent oh',\n", + " 'elle me dit: \"master, tu es frais dis\"',\n", + " 'a cause de mon argent',\n", + " 'eeeh tout le monde trinquer (trinquer)',\n", + " 'à la santé de mon argent oh',\n", + " \"l'argent, money\",\n", + " 'cedis, cfa',\n", + " 'euro, dollar',\n", + " 'naira, naira',\n", + " \"l'argent, money\",\n", + " 'cedis, cfa',\n", + " 'euro, dollar',\n", + " 'naira, naira',\n", + " 'eh père de famille, pas respecté',\n", + " \"parce que j'ai plus d'argent\",\n", + " 'on me zappe, on boutte, on me *****',\n", + " \"parce que j'ai pas l'argent oh\",\n", + " 'et dans le quartier, j’suis la peste',\n", + " \"parce que j'ai pas d'argent\",\n", + " 'aaah quand je parle, ça sent mauvais',\n", + " \"parce que j'ai pas l'argent oh\",\n", + " 'ah chérie coco tu veux me quitter',\n", + " \"parce que j'ai plus d'argent\",\n", + " 'ahh elle m’dit: \"monsieur, la marmite est vide\"',\n", + " \"il faut donner l'argent\",\n", + " 'everyday money no dey',\n", + " 'anytime money no dey',\n", + " 'mama is tired oooh',\n", + " 'go to your daddy',\n", + " \"l'argent, money\",\n", + " 'cedis, cfa',\n", + " 'euro, dollar',\n", + " 'naira, naira',\n", + " \"l'argent, money\",\n", + " 'cedi, cfa',\n", + " 'euro, dollar',\n", + " 'naira, naira',\n", + " 'i say money',\n", + " 'everyday want have some money',\n", + " 'moi je veux, tu veux la money',\n", + " 'doing it do it for money',\n", + " 'everyday money no dey',\n", + " 'anytime money no dey',\n", + " 'mama is tired oooh',\n", + " 'go to your daddy',\n", + " 'everyday money no dey',\n", + " 'anytime money no dey',\n", + " 'mama is tired oooh',\n", + " 'go to your daddy',\n", + " \"l'argent, money\",\n", + " 'cedis, cfa',\n", + " 'euro, dollar',\n", + " 'naira, naira',\n", + " \"l'argent, money\",\n", + " 'cedi, cfa',\n", + " 'euro, dollar',\n", + " 'naira, naira',\n", + " 'dangerous guy (dangerous guy)',\n", + " 'supiscious eyes, je hais tout ce que tu est (supiscious eyes)',\n", + " 'dangerous guy, supiscious eyes',\n", + " \"énervé, tu m'as blessée (you hurt me)\",\n", + " 'un duel (revenge)',\n", + " 'un duel au sommet',\n", + " 'oh make it till i hurt you till i kill you till someone go away',\n", + " \"don't hurt me\",\n", + " \"don't hurt me\",\n", + " \"don't hurt me\",\n", + " \"don't hurt me\",\n", + " \"don't hurt me\",\n", + " \"don't hurt me\",\n", + " \"don't hurt me magical ennemy\",\n", + " 'dangerous guy (the chaos is sweet darling)',\n", + " 'prêt aux délations (dangerous guy)',\n", + " 'dangerous guy (dangerous guy)',\n", + " 'mon cœur au galop (my heart in a galope)',\n", + " \"toute seule tu m'a laissée (you left me)\",\n", + " 'toute seule je me vengerai (revenge)',\n", + " 'dangerous guy (dangerous guy)',\n", + " 'supiscious eyes, je hais tout ce que tu est',\n", + " '(supiscious eyes, i hate all that you are)',\n", + " 'dangerous guy, supiscious eyes',\n", + " \"énervé, tu m'as blessée (you hurt me)\",\n", + " 'un duel (revenge)',\n", + " 'un duel au sommet',\n", + " 'oh make it till i hurt you till i kill you till someone go away',\n", + " \"don't hurt me\",\n", + " \"don't hurt me\",\n", + " \"don't hurt me\",\n", + " \"don't hurt me\",\n", + " \"don't hurt me\",\n", + " \"don't hurt me\",\n", + " 'd-d-double x on the track, bitch',\n", + " 'bitch, bitch, bitch, bitch',\n", + " \"hey, my oh my, baby why you're mine\",\n", + " 'you are something nice to see (see)',\n", + " 'where you are, you have slayed my mind',\n", + " 'come and take my heart and leave, hey',\n", + " 'she just want a little touch and go',\n", + " 'baby she be tryna let me know',\n", + " 'baby girl, you can pour some more',\n", + " 'anywhere where you want, hey oh',\n", + " 'omo wagba condo, yeah',\n", + " 'wagba condo, yeah',\n", + " 'omo wagba condo, yeah',\n", + " 'wagba condo, yeah',\n", + " 'she just want a little touch and go',\n", + " 'she trying to let me know',\n", + " 'baby girl, you can pour some more',\n", + " 'anywhere where you want we go, yeah',\n", + " 'wagba condo, yeah',\n", + " 'omo wagba condo, yeah',\n", + " 'omo wagba condo, yeah',\n", + " 'omo wagba condo, yeah',\n", + " \"and i'mma put you in a goyard bag (hey)\",\n", + " 'put you on some louis swag',\n", + " 'everything that you want',\n", + " \"i'mma gucci gucci gang\",\n", + " 'tu vas bomber à gucci gang',\n", + " 'trop de mala à gucci gang',\n", + " 'tu vas couler à gucci gang',\n", + " 'gucci gucci gang, gang',\n", + " \"non mais là c'est trop, j'pête un cable\",\n", + " \"j'ai l'air piquée, attends mais comment ça ?\",\n", + " \"fais belek, c'est contagieux\",\n", + " \"j'fais la bombe, ouais j'fais la bombe\",\n", + " 'abana, abana, dès maintenant abana, ouais',\n", + " \"j'donnerai tout, tu connais mes phases\",\n", + " \"j'suis pépère, tu connais mes bails\",\n", + " \"abana, abana yeah, j'suis solo dans ma bulle\",\n", + " \"t'as voulu tout changer, t'es zéro big oh\",\n", + " \"le mec est à bout, d'toute façon j'm'en fous\",\n", + " \"à tes côtés j'vois flou, les autres sont jaloux, ouais yeah yeah\",\n", + " \"and i'mma put you in a goyard bag (hey)\",\n", + " 'put you on some louis swag',\n", + " 'everything that you want',\n", + " \"i'mma gucci gucci gang\",\n", + " 'tu vas bomber à gucci gang',\n", + " 'trop de mala à gucci gang',\n", + " 'tu vas couler à gucci gang',\n", + " 'gucci gucci gang, gang',\n", + " 'hey, show you i kill somebody',\n", + " \"we don't kill somebody\",\n", + " \"my guys and me are rockin'\",\n", + " 'show you i kill somebody, yeah',\n", + " 'tu veux rider dans paris',\n", + " 'tu vas te perdre, on parie ?',\n", + " \"j'suis gucci-sée dans paris, yeah yeah yeah\",\n", + " 'il faut faire des choix',\n", + " 'le bendo ou la merco',\n", + " 'il faut faire des choix, yeah',\n", + " 'le bendo ouais, ou la merco',\n", + " \"i'll go up for you, oh no\",\n", + " \"i'll go down for you\",\n", + " \"and i'mma put you in a goyard bag (hey)\",\n", + " 'put you on some louis swag',\n", + " 'everything that you want',\n", + " \"i'mma gucci gucci gang\",\n", + " 'tu vas bomber à gucci gang',\n", + " 'trop de mala à gucci gang',\n", + " 'tu vas couler à gucci gang',\n", + " 'gucci gucci gang, gang',\n", + " 'hey, show you i kill somebody',\n", + " \"we don't kill somebody\",\n", + " \"my guys and me are rockin'\",\n", + " 'show you i kill somebody, yeah',\n", + " 'tu veux rider dans paris',\n", + " 'tu vas te perdre, on parie ?',\n", + " \"j'suis gucci-sée dans paris, yeah yeah yeah\",\n", + " 'si tu tombes beaucoup trop bas',\n", + " 'si tu perds confiance tourne-toi vers moi',\n", + " 'feel the wind blow softly through my hair',\n", + " \"i'm invincible whenever you are there\",\n", + " 'et comme un défi, tu te lèves pour aimer la vie',\n", + " 'love life ( la la la la la... )',\n", + " 'love life ( la la la la la... )',\n", + " \"it's you and i ( la la la la la... )\",\n", + " 'love life ( la la la la la... )',\n", + " 'si un chagrin casse ta voix',\n", + " 'perdue sur les chemins tend une main vers moi',\n", + " 'i feel the sun shine breeze upon my face',\n", + " \"when i hear your voice i know i'll be ok\",\n", + " 'et comme un défi, tu te lèves pour aimer la vie',\n", + " 'love life ( la la la la la... )',\n", + " 'love life ( la la la la la... )',\n", + " \"it's you and i ( la la la la la... )\",\n", + " 'love life ( la la la la la... )',\n", + " 'et pour que tu sois',\n", + " 'toujours plus, toujours plus forte',\n", + " 'et que le vend de la vie',\n", + " 'soulève tes ailes et te transporte',\n", + " 'love life...',\n", + " 'love life ( la la la la la... )',\n", + " 'love life ( la la la la la... )',\n", + " 'love life ( la la la la la... )',\n", + " \"c'est toi et moi ( la la la la la... )\",\n", + " 'love life ( la la la la la... )',\n", + " '( siffle )',\n", + " 'tu me déchires, tu me répares',\n", + " \"tu m'opères à coeur ouvert\",\n", + " 'tu me déportes, tu me grand large',\n", + " 'je te détache, tu me dérives',\n", + " 'oooooh tues moi encore',\n", + " 'oh tu me tues',\n", + " 'assassine de la nuit',\n", + " 'assassine de la nuit',\n", + " \"je t'espionne, tu me soupçonnes\",\n", + " \"je t'alarme, tu me cambrioles\",\n", + " 'je te vise, tu me cibles',\n", + " 'je me rends, tu me descends',\n", + " 'oooooh tues moi encore',\n", + " 'oh tu me tues',\n", + " 'assassine de la nuit',\n", + " 'assassine de la nuit',\n", + " 'assassine de la nuit',\n", + " 'assassine de la nuit',\n", + " 'oh oh',\n", + " 'je te haut, tu me noies',\n", + " 'je te coule, tu me bois',\n", + " \"je t'asphyxe, tu me félines\",\n", + " 'je te démon, tu me divines',\n", + " 'oooooh tues moi encore',\n", + " 'oh tu me tues',\n", + " 'assassine de la nuit',\n", + " 'assassine de la nuit',\n", + " 'assassine de la nuit',\n", + " 'assassine de la nuit',\n", + " 'assassine de la nuit',\n", + " 'assassine',\n", + " 'tu me déchires, tu me répares',\n", + " \"tu m'opères à coeur ouvert\",\n", + " 'tu me déportes, tu me grand large',\n", + " 'je te détache, tu me dérives',\n", + " 'oooooh tues moi encore',\n", + " 'oh tu me tues',\n", + " 'assassine de la nuit',\n", + " 'le pudding et le shetland',\n", + " 'david bailey, mary quant',\n", + " 'jerk and radio caroline',\n", + " '\"caroline\" no \"caroline\"',\n", + " \"it's made in england\",\n", + " 'accordéon qui balance',\n", + " 'les gauloises et la pétanque',\n", + " 'tour eiffel et camembert',\n", + " 'et maurice chevalier',\n", + " \"c'est made in france\",\n", + " 'les français les anglais',\n", + " 'peuvent toujours essayer',\n", + " 'ils ne seront jamais',\n", + " 'jamais pareils, pareils, pareils, pareils, pareils',\n", + " 'les beatniks aux cheveux longs',\n", + " 'like the young napoléon',\n", + " 'les dollies pas compliquées',\n", + " 'difficult à expliquer',\n", + " \"it's made in england\",\n", + " 'les guitares romantiques',\n", + " 'the sono no terrific',\n", + " 'oh ! my darling i love you',\n", + " 'mon amour, mon amour',\n", + " \"c'est made in france\",\n", + " 'entre londres et calais',\n", + " 'il y a un fossé',\n", + " 'un si petit bateau',\n", + " \"et puis de l'eau, de l'eau, de l'eau, de l'eau, de l'eau\",\n", + " 'mini jupes et maxi bottes',\n", + " \"liberty jusqu'à non-stop\",\n", + " 'burlington, julie christie',\n", + " 'and the salvation army',\n", + " \"it's made in england\",\n", + " 'le beaujolais, le pastis',\n", + " 'les british promènent à nice',\n", + " 'et le tunnel sous la manche',\n", + " 'but the tunnel sous la manche',\n", + " \"c'est made in france\",\n", + " 'no, made in england',\n", + " 'non, made in france',\n", + " 'no, made in england',\n", + " 'non, made in france...',\n", + " 'mesdames et messieurs',\n", + " 'etes-vous preets a bouger',\n", + " 'quands daddy car il est la',\n", + " 'pour tout controler',\n", + " 'etes-vous preets pour ca',\n", + " 'etes-vous preets pour ca',\n", + " 'you recognise the sound?',\n", + " \"well, it's the underground\",\n", + " 'you recognise the sound?',\n", + " \"well, it's the underground\",\n", + " 'le soir comme la journee',\n", + " 'tu traines dans les rues',\n", + " 'la journee comme le soir',\n", + " \"la drogue est a l'affut\",\n", + " 'a laffut du neaut',\n", + " 'toujours besoin de perfs',\n", + " 'maudis tel jour',\n", + " 'ou cette drogue est apparue',\n", + " 'ah, je suis selected',\n", + " 'selected, collected',\n", + " 'ah, je suis selected',\n", + " 'to be collected',\n", + " 'ah, je suis selected',\n", + " 'selected, collected',\n", + " 'ah, je suis selected',\n", + " 'to be collected',\n", + " 'you recognise the sound?',\n", + " \"well, it's the underground\",\n", + " 'ah, je suis selected',\n", + " 'ah, je suis selected',\n", + " 'you recognise the sound?',\n", + " \"well, it's the underground\",\n", + " 'you recognise the sound?',\n", + " \"well, it's the underground\",\n", + " 'le soir comme la journee',\n", + " 'tu traines dans les rues',\n", + " 'la journee comme le soir',\n", + " \"la drogue est a l'affut\",\n", + " 'a laffut du neaut',\n", + " 'toujours besoin de perfs',\n", + " 'maudis tel jour',\n", + " 'ou cette drogue est apparue',\n", + " 'ah, je suis selected',\n", + " 'selected, collected',\n", + " 'ah, je suis selected',\n", + " 'to be collected',\n", + " 'in the darkest night',\n", + " \"we're all waiting for a sign\",\n", + " 'for a wake-up call',\n", + " 'saying peace is coming back',\n", + " \"we don't wanna the fear\",\n", + " \"we won't burst into tears\",\n", + " 'cauz this desert town',\n", + " 'is still the place we feel like home',\n", + " 'and our kids will play in front of the house',\n", + " 'and my hands will be shaking in a concert hall',\n", + " 'and the sirens will be silent all night',\n", + " 'when we celebrate life',\n", + " 'toi te souviens-tu',\n", + " 'comment tout était si calme',\n", + " 'avant que la nuit',\n", + " 'que la nuit ne dresse les armes',\n", + " 'toi te souviens-tu',\n", + " 'de ces visages qui se mêlent',\n", + " 'un instant vécu',\n", + " 'lorsque la nuit était belle',\n", + " 'dans les rues dans nos quartiers',\n", + " 'il y a comme un arrière-goût de liberté',\n", + " 'dans le fond de nos pensées',\n", + " 'cette nuit tous enfermés',\n", + " 'dans les rues de nos quartiers',\n", + " 'il y a comme un arrière-goût de liberté',\n", + " 'dans le fond de nos pensées',\n", + " 'cette nuit tous éveillés',\n", + " 'would you please pass my hat',\n", + " \"it's gettin late, i've got to go\",\n", + " \"you're momma she's already tired\",\n", + " 'your daddy he is getting mad',\n", + " 'say goodnight to your momma',\n", + " 'the dinner it was very good',\n", + " 'kiss me quick then pass my hat',\n", + " \"your daddy's mad i've got to go\",\n", + " \"s'il vous plaît remettez mon chapeau\",\n", + " 'cela est gettin tard, je dois aller',\n", + " 'vous momma, elle a fatigué déjà votre lalo',\n", + " 'il se fâchera',\n", + " 'on parle(disent) goodnight à votre momma le déjeuner',\n", + " \"c'était très bon\",\n", + " \"m'embrasseront rapide\",\n", + " 'alors remettent mon chapeau votre ïàïà fou',\n", + " 'je dois aller',\n", + " 'would you please pass my hat',\n", + " \"it's gettin late, i've got to go\",\n", + " \"you're momma she's already tired\",\n", + " 'your daddy he is getting mad',\n", + " 'say goodnight to your momma',\n", + " 'the super it was very good',\n", + " 'kiss me quick then pass my hat',\n", + " \"your daddy's mad i've got to go\",\n", + " \"d'autres larmes chaudes\",\n", + " 'de ce corps seul',\n", + " \"suintaient d'un ?il de marbre...\",\n", + " \"d'un ?il fissuré...\",\n", + " 'fendu par la lumière',\n", + " 'ô combien cruelle...',\n", + " 'de toute une vie passée',\n", + " \"a chercher l'obscurité...\",\n", + " \"d'autres larmes chaudes\",\n", + " 'de cet être oublié',\n", + " 'coulaient comme pour fuir',\n", + " 'la mort venant...',\n", + " 'telles des gouttes de pluie',\n", + " \"fuyant l'orage\",\n", + " \"fuyant la foudre d'un dieu\",\n", + " 'certes, en colère',\n", + " 'mais bien impuissant',\n", + " 'face au courage',\n", + " \"d'un être usé par la vie...\",\n", + " 'les muscles se tendaient, se bloquaient...',\n", + " \"sans nervosité aucune, comme s'ils savaient...\",\n", + " \"comme s'ils attendaient l'instant présent...\",\n", + " 'depuis de longs moments...',\n", + " 'le sang prenait peur et se concentrait',\n", + " \"auprès d'un c?ur sans regrets...\",\n", + " 'sans remords aucun...',\n", + " \"auprès d'un c?ur\",\n", + " 'oublié par la vie...',\n", + " 'haïssant ce fluide, (ce sang)',\n", + " 'qui fait vivre les humains...',\n", + " \"l'?il de marbre brillait\",\n", + " 'malgré la tristesse de la scène',\n", + " \"l'?il de marbre admirait\",\n", + " 'le miroir face à lui...',\n", + " \"le reflet d'un corps qui le porta\",\n", + " 'ces années durant...',\n", + " 'oubliant la douleur infligée, la honte apportée...',\n", + " \"fuyant le passé regretté , autant que l'avenir renié...\",\n", + " '(translation)',\n", + " '(tears of the one despised...)',\n", + " 'other warm tears',\n", + " \"this lone body's\",\n", + " 'were oozing from a marble eye...',\n", + " 'from a fissured eye...',\n", + " 'cracked by the light',\n", + " '-oh, how cruel !-',\n", + " 'of a whole life spent',\n", + " 'searching for darkness...',\n", + " 'other warm tears',\n", + " \"this forgotten being's\",\n", + " 'were running as to flee',\n", + " 'from the coming death...',\n", + " 'as drops of rain',\n", + " 'fleeing from the storm',\n", + " 'fleeing from the thunderbolt of a god',\n", + " 'angry indeed',\n", + " 'but still powerless',\n", + " 'before the courage of a being',\n", + " 'that life had worn away...',\n", + " 'muscles were stretching, blocking...',\n", + " 'without any nervousness, as if they knew...',\n", + " 'as if they had been waiting for this very moment',\n", + " 'for a long time...',\n", + " 'blood got scared and was concentrating',\n", + " 'around a regretless heart...',\n", + " 'deprived of any remorse...',\n", + " 'around a heart',\n", + " 'that had been neglected by life...',\n", + " 'hating that fluid -that blood-',\n", + " 'which makes humans live...',\n", + " 'the marble eye was sparkling',\n", + " 'despite the sadness of the scene',\n", + " 'the marble eye was admiring',\n", + " 'in front of the mirror...',\n", + " 'the reflection of a body that',\n", + " 'had carried him all these years...',\n", + " 'forgetting the pain inflected, the shame brought...',\n", + " 'fleeing from the regretted past',\n", + " 'as much as from the denied future...',\n", + " '(translated from french by aries)',\n", + " \"you say you don't like the music on the radio (mmh yeah)\",\n", + " 'the people, they try too hard to be original (mmh yeah)',\n", + " \"what if i told you, that we can't get get get away, away\",\n", + " 'this is not a pop song, honey',\n", + " 'this is what the cool kids like (cool kids like)',\n", + " \"can you feel the beat? it's funky\",\n", + " 'this is what the cool kids like (cool kids like)',\n", + " \"yo, ça dit quoi les jeunes ? moi j'ai glandé tout l'été\",\n", + " \"rien à faire, la météo m'a beaucoup aidé\",\n", + " \"j'aimerais sortir avec cette meuf, j'attends qu'elle me dise oui\",\n", + " \"j'te kiffe plus que fifa 18\",\n", + " \"c'est nous les plus forts, c'est nous les beaux gosses\",\n", + " \"ta maman m'écoute entre deux injections de botox\",\n", + " \"donald, on t'aime pas, t'es qu'une pourriture\",\n", + " \"jj, caba et todi, c'est la coolitude\",\n", + " \"what if i told you, that we can't get get get away, away (on va le faire, on va le faire)\",\n", + " 'this is not a pop song honey (on va le faire, on va le faire)',\n", + " 'this is what the cool kids like (on va le faire, on va le faire)',\n", + " 'cools kids like',\n", + " \"can you feel the beat? it's funky (on va le faire, on va le faire)\",\n", + " 'this is what the cool kids like',\n", + " 'cools kids like',\n", + " \"j'ai éteint ma télé, elle ne parle que de choses terribles\",\n", + " 'je ne la rallume que pour voir le foot et ma série (vrai)',\n", + " \"ouais, j'ai rdv (quoi ?), j'ai mis des nike et un polo neuf\",\n", + " \"elle s'en fout que j'ai des milliers de followers\",\n", + " 'elle est vraie, elle est fraîche, elle est groovy',\n", + " \"je remercie le ciel de l'avoir trouvé\",\n", + " \"baby, baby, toi et moi, c'est pour la vie\",\n", + " 'excepté ce soir, je serais avec mes reufs toute la nuit',\n", + " \"what if i told you, that we can't get get get away, away (on va le faire, on va le faire)\",\n", + " 'this is not a pop song, honey (on va le faire, on va le faire)',\n", + " 'this is what the cool kids like (on va le faire, on va le faire)',\n", + " 'cool kids like',\n", + " \"can you feel the beat? it's funky (on va le faire, on va le faire)\",\n", + " 'this is what the cool kids like',\n", + " 'cool kids like',\n", + " 'on se voit, on se connait',\n", + " \"quand nos regards se croisent on s'attire\",\n", + " 'on se promet les plus belles phrases',\n", + " 'je te dirai que moi la préface je la connais',\n", + " \"la nation s'embrase\",\n", + " 'on se cherche de ville en ville par amour on se trouve',\n", + " 'on laisse les âmes futiles écrire de beaux discours',\n", + " \"simplicité la nation s'y engage\",\n", + " 'et complicité, on fera des ravages',\n", + " 'we are from the north',\n", + " 'we came from the south',\n", + " 'we are all the nation',\n", + " 'we are from the north',\n", + " 'we came from the south',\n", + " 'we are all the nation',\n", + " 'yes we are',\n", + " 'yes we are',\n", + " 'je, tu, elle, il, on a la rage au coeur',\n", + " \"nos langages subtils viennent d'ici et d'ailleurs\",\n", + " 'nous ferons face et grâce à nos esprits',\n", + " \"la nation s'embrasse, la nation guérit\",\n", + " 'we are from the north',\n", + " 'we came from the south',\n", + " 'we are all the nation',\n", + " 'we are from the north',\n", + " 'we came from the south',\n", + " 'we are all the nation',\n", + " 'yes we are',\n", + " 'yes we are',\n", + " 'est-ce que tu le sens le bonheur',\n", + " \"qui se dessine à l'horizon ?\",\n", + " 'est-ce que tu la sens la chaleur ?',\n", + " 'la nation devient ta maison',\n", + " 'tout se donner',\n", + " 'embrasser le monde entier',\n", + " 'we are from the north',\n", + " 'we came from the south',\n", + " 'we are all the nation',\n", + " 'we are from the north',\n", + " 'we came from the south',\n", + " 'we are all the nation',\n", + " 'yes we are',\n", + " 'yes we are',\n", + " 'yes we are',\n", + " 'yes we are',\n", + " \"comme, comme j'ai dit une fois\",\n", + " \"long, c'est le jour sans toi\",\n", + " \"besoins s'enflament\",\n", + " 'mes sentiments',\n", + " 'je me réclame',\n", + " \"passé s'est fait\",\n", + " \"silence m'enforce\",\n", + " 'je ne répens',\n", + " 'qui mal',\n", + " 'doux, chaque battement du coeur',\n", + " 'fortes, les frissons du peur',\n", + " \"j'ai mal du coeur\",\n", + " \"et mal d'esprit\",\n", + " \"ma vie s'en va\",\n", + " 'la voix emue',\n", + " 'perdue, échue',\n", + " 'et je denoue',\n", + " 'sans moi',\n", + " 'translation ::',\n", + " 'as, as i once said',\n", + " 'long, is the day without you',\n", + " 'needs inflame',\n", + " 'my sentiments',\n", + " 'i shout complaints',\n", + " 'the past is done',\n", + " 'silence burys me',\n", + " 'i repent',\n", + " 'soft, each beat of the heart',\n", + " 'strong, the shivers of fear',\n", + " 'my heart bleeds',\n", + " \"and i can't think\",\n", + " 'my life is disappearing',\n", + " 'with emotional voice',\n", + " 'lost, expired',\n", + " 'i am unravelling',\n", + " 'without you',\n", + " 'aye!',\n", + " 'this song is just for ya',\n", + " 'ya know this is',\n", + " 'haha!',\n", + " 'drop this',\n", + " 'jakku wae neon',\n", + " 'osi jagajyeotda tudeolgeoryeo',\n", + " 'tto tudeolgeoryeo ( hey baby wae tto geurae)',\n", + " 'hangsang wae neon',\n", + " 'jakku sari jjyeotda tudeolgeoryeo',\n", + " '( neomu yeppeunde nae nuneneun hangsang',\n", + " 'you are the prettiest girl)',\n", + " 'niga eotteon oseul ibeodo',\n", + " 'naegen hangsang beautiful',\n", + " '( baby let me do wannado just let me do wanna do)',\n", + " 'sesang modeun geol da gajyeodo',\n", + " 'niga eobseumyeon an dwae my girl',\n", + " 'you‘re the only one for me yeah',\n", + " 'nan niga jeil joha',\n", + " 'niga jeil yeppeo',\n", + " 'jinaganeun got-got maeryeogi da heulleo',\n", + " 'niga jeil joha',\n", + " 'neo hanamyeon dwae',\n", + " 'gaseume saegyeo dwo',\n", + " 'niga sesangeseo jeil sojunghae',\n", + " 'every time i like you',\n", + " 'woah~,woah~',\n", + " 'oh my love for you',\n", + " 'neobakken eobseo nan',\n", + " 'i belong with you',\n", + " 'woah~,woah~',\n", + " 'crazy love for you',\n", + " 'neobakken eobseo nan',\n", + " 'gilgeorireul georeul ttae',\n", + " 'neol boneun namjadeurui',\n", + " 'siseoni neukkyeojine',\n", + " 'geotneun moseupjocha neomuna yeppeun geol',\n", + " 'happiness',\n", + " 'is what i feel now ( now i’m gonna kiss you',\n", + " 'now i just wanna kiss you now)',\n", + " 'dareun nuga naege ondaedo',\n", + " 'chyeodabojido anha my love',\n", + " '( baby let me do wanna',\n", + " 'wanna do just let me do wanna, wanna do)',\n", + " 'sesang modeun geol da jundaedo',\n", + " 'neo hanamyeon chungbunhae my love',\n", + " 'you‘re the only one for me yeah',\n", + " 'nan niga jeil joha',\n", + " 'niga jeil yeppeo',\n", + " 'jinaganeun got-got maeryeogi da heulleo',\n", + " 'niga jeil joha',\n", + " 'neo hanamyeon dwae',\n", + " 'gaseume saegyeo dwo',\n", + " 'niga sesangeseo jeil sojunghae',\n", + " 'geunyang idaero',\n", + " 'isseojumyeon dwae yeah',\n", + " 'ireoke areumdaun neoinde',\n", + " 'you gotta know that you’re the prettiest for me',\n", + " 'niga jeil joha nan niga jeil yeppeo, yeah',\n", + " 'mareun chehyeonge jom jageun ki',\n", + " 'jogeuman eolgure budeureoun meoritgyeol',\n", + " 'neol gatgo sipeo tto ango sipeo',\n", + " 'everywhere neol yeope dugo sipeo',\n", + " 'eoneu nuga neol yokhaedo areumdaume ttareun daegail ppun',\n", + " 'geureon geon singyeongsseul pillyo eobtji',\n", + " 'you and i just fall in love all night long',\n", + " 'nan niga jeil joha',\n", + " 'niga jeil yeppeo',\n", + " 'jinaganeun got-got maeryeogi da heulleo',\n", + " 'niga jeil joha',\n", + " 'neo hanamyeon dwae',\n", + " 'gaseume saegyeo dwo',\n", + " 'niga sesangeseo jeil sojunghae',\n", + " 'every time i like you',\n", + " 'woah~,woah~',\n", + " 'oh my love for you',\n", + " 'neobakken eobseo nan',\n", + " 'i belong with you',\n", + " 'woah~,woah~',\n", + " 'crazy love for you',\n", + " 'neobakken eobseo nan',\n", + " 'traduction:',\n", + " 'aye!',\n", + " 'this song is just for ya',\n", + " 'ya know this is',\n", + " 'haha!',\n", + " 'drop this',\n", + " \"pourquoi est-ce que tu n'arrêtes pas\",\n", + " 'de te plaindre que tes vêtements rapetissent',\n", + " 'et tu te plains encore',\n", + " 'hé bébé pourquoi es-tu comme ça',\n", + " 'toujours, tu te plains que tu deviens plus joufflus',\n", + " 'a mes yeux, you are the prettiest girl',\n", + " \"n'importe quels vêtements que tu portes\",\n", + " 'pour moi tu es beautiful',\n", + " 'baby let me do wanna wanna do',\n", + " 'just let me do wanna wanna do',\n", + " \"même si j'ai tout dans le monde, si je ne t'ai pas\",\n", + " 'alors je ne peux ma girl',\n", + " 'you are the only one for me yeah',\n", + " \"je t'aime le plus, tu es la plus jolie\",\n", + " \"n'importe où tu passe, ton charme se répands\",\n", + " \"je t'aime le plus et j'ai seulement besoin de toi\",\n", + " 'je vais te graver dans mon cœur',\n", + " 'tu es la plus importante dans ma vie',\n", + " 'every time i like you',\n", + " 'oh my love for you',\n", + " \"je n'ai seulement que toi\",\n", + " 'i belong with you',\n", + " \"crazy love for you, sans toi je n'existe pas\",\n", + " 'quand tu marches sur le trottoir, les hommes qui te regardent',\n", + " 'je sens leurs regards, même ta démarche est belle',\n", + " 'happiness is what i feel now',\n", + " 'now i’m gonna kiss you now',\n", + " 'i just wanna kiss you now',\n", + " \"si quelqu'un d'autre vient à moi\",\n", + " 'je ne la regarderait même pas, ma love',\n", + " 'baby let me do wanna wanna do',\n", + " 'just let me do wanna wanna do',\n", + " \"même si elle me dit qu'elle me donnera le monde\",\n", + " 'je suis simplement heureux avec toi ma love',\n", + " 'you are the only one for me yeah',\n", + " \"je t'aime le plus, tu es la plus jolie\",\n", + " \"n'importe où tu passe, ton charme se répands\",\n", + " \"je t'aime le plus et j'ai seulement besoin de toi\",\n", + " 'je vais te graver dans mon cœur',\n", + " 'tu es la plus importante dans ma vie',\n", + " \"tout ce que tu as à faire c'est de rester comme ça yeah\",\n", + " 'tellement si belle, toi',\n", + " 'you gotta know that you’re the prettiest for me',\n", + " \"je t'aime le plus, tu es la plus jolie\",\n", + " 'avec une petite taille et une petite taille',\n", + " 'un petit visage et des cheveux doux',\n", + " \"je te veux et je veux t'enlacer\",\n", + " 'everywhere je veux te garder à mes côtés',\n", + " 'quiconque te parles mal',\n", + " \"c'est simplement un autre prix pour toi d'être magnifique\",\n", + " \"tu n'as pas besoin de t'inquiéter de toutes ces choses\",\n", + " 'you and i just fall in love all night long',\n", + " \"je t'aime le plus, tu es la plus jolie\",\n", + " \"n'importe où tu passe, ton charme se répands\",\n", + " \"je t'aime le plus et j'ai seulement besoin de toi\",\n", + " 'je vais te graver dans mon cœur',\n", + " 'tu es la plus importante dans ma vie',\n", + " 'every time i like you',\n", + " 'oh my love for you',\n", + " \"je n'ai seulement que toi\",\n", + " 'i belong with you',\n", + " \"crazy love for you, je n'ai seulement que toi\",\n", + " \"voir des enfants de l'amitié\",\n", + " \"venu d'un pays\",\n", + " 'jadis très fort',\n", + " \"ils cherchent l'étoile\",\n", + " 'arrivent à temps',\n", + " 'ils viennent chez vous',\n", + " 'ouvrent les portes',\n", + " 'un rêve pour tous',\n", + " \"europe c'est nous\",\n", + " 'les noirs les blancs',\n", + " 'les jeunes les vieux',\n", + " 'les grands petits',\n", + " 'forts ou malades',\n", + " 'un grand asile',\n", + " 'pour tous les hommes',\n", + " 'ceux qui contestent',\n", + " 'regardent les gens passer',\n", + " 'expirent en enfer',\n", + " \"important pour l'avenir\",\n", + " 'ceux qui contestent',\n", + " 'regardent les gens passer',\n", + " 'expirent en enfer',\n", + " 'le prêtre dira',\n", + " 'hear children cry',\n", + " 'and parents sigh',\n", + " 'running away',\n", + " \"leave sorrow's days\",\n", + " 'follow the star',\n", + " 'touching the dream',\n", + " 'longing for hope',\n", + " 'drown in the sea',\n", + " 'when will they sing',\n", + " \"and joy who'll bring\",\n", + " 'learning to guide',\n", + " 'not to divide',\n", + " 'send rays of light',\n", + " 'to darkened lands',\n", + " 'will we remain',\n", + " 'in strangling hands',\n", + " 'those who deny',\n", + " 'who make you die',\n", + " 'will pay in hell',\n", + " 'the preacher will tell',\n", + " 'ceux qui contestent',\n", + " 'regardent les gens passer',\n", + " 'expirent en enfer',\n", + " \"important pour l'avenir\",\n", + " 'those who deny',\n", + " 'who make you die',\n", + " 'will pay in hell',\n", + " 'the preacher will tell',\n", + " \"j'te vois, tu joues, t'es pas si mal, j'avoue\",\n", + " \"l'air un peu froid, le regard plutôt doux\",\n", + " \"mais je danse, je danse, t'es pas le premier fou\",\n", + " \"mon ange, oublie l'idée du rendez-vous\",\n", + " \"and you don't even know my name\",\n", + " 'but i can just rock with you',\n", + " \"and you don't even know my name\",\n", + " 'but i can just play with you',\n", + " 'oh, lentement',\n", + " \"i'll make you feel good all night long\",\n", + " \"j'peux jouer avec toi\",\n", + " 'et même danser pour toi',\n", + " 'te laisser croire que tes beaux yeux',\n", + " \"pourraient m'laisser sans voix\",\n", + " 'tu tournes autour de moi, parais bien sûr de toi',\n", + " 'i can even let you play with me if i want, want',\n", + " 'baby (baby)',\n", + " 'if you want me',\n", + " 'you got, you got',\n", + " 'baby (you gotta work it)',\n", + " 'you gotta work it (you gotta work it baby)',\n", + " \"baby (i know, i know that we're tonight)\",\n", + " 'if you want me (i know, i know you had to try)',\n", + " 'you got, you got',\n", + " \"baby (i know, i know that we're tonight)\",\n", + " 'you gotta work it (i know, i know you had to try)',\n", + " \"l'air est humide et flou, je me noie dans la foule\",\n", + " \"plus je m'éloigne et plus tu deviens fou\",\n", + " \"tu vois, je n'ai que faire de tes mots doux, mon loup\",\n", + " \"l'affaire est claire, je n'aime pas les déjà-vu\",\n", + " \"and you don't even know my name\",\n", + " 'but i can just rock with you',\n", + " \"and you don't even know my name\",\n", + " 'but i can just play with you',\n", + " 'oh, lentement',\n", + " \"i'll make you feel good all night long (i'll make you feel good)\",\n", + " \"j'peux jouer avec toi\",\n", + " 'et même danser pour toi',\n", + " 'te laisser croire que tes beaux yeux',\n", + " \"pourraient m'laisser sans voix\",\n", + " 'tu tournes autour de moi, parais bien sûr de toi',\n", + " 'i can even let you play with me if i want, want',\n", + " 'baby (baby)',\n", + " 'if you want me',\n", + " 'you got, you got',\n", + " 'baby (you gotta work it)',\n", + " 'you gotta work it (you gotta work it baby)',\n", + " \"baby (i know, i know that we're tonight)\",\n", + " 'if you want me (i know, i know you had to try)',\n", + " 'you got, you got',\n", + " \"baby (i know, i know that we're tonight)\",\n", + " 'you gotta work it (i know, i know you had to try) (you gotta work it baby)',\n", + " 'you play with tammy, tammy, tammy, tammy',\n", + " 'done now?',\n", + " 'you play with tammy, tammy, tammy',\n", + " 'done now?',\n", + " 'you play with tammy, tammy, tammy, tammy',\n", + " 'done now?',\n", + " \"je vois tes yeux, je sens c'que tu veux, j'ai inventé le jeu\",\n", + " 'you play with tammy, tammy, tammy, tammy',\n", + " 'done now?',\n", + " 'you play with tammy, tammy, tammy',\n", + " 'done now?',\n", + " 'you play with tammy, tammy, tammy, tammy',\n", + " 'done now?',\n", + " \"je vois tes yeux, je sens c'que tu veux, j'ai inventé le jeu\",\n", + " 'baby (baby)',\n", + " 'if you want me',\n", + " 'you got, you got',\n", + " 'baby (you gotta work it)',\n", + " 'you gotta work it (you gotta work it baby)',\n", + " \"baby (i know, i know that we're tonight)\",\n", + " 'if you want me (i know, i know you had to try)',\n", + " 'you got, you got',\n", + " \"baby (i know, i know that we're tonight)\",\n", + " 'you gotta work it (i know, i know you had to try)',\n", + " \"and you don't even know my name (don't even know my name)\",\n", + " 'i know, i know you had to try',\n", + " \"and you don't even know my name (and you don't even know my name)\",\n", + " 'i know, i know you had to try',\n", + " 'baby',\n", + " \"je vois tes yeux, je sens c'que tu veux, j'ai inventé le jeu\",\n", + " 'baby',\n", + " \"je vois tes yeux, je sens c'que tu veux, j'ai inventé le jeu\",\n", + " 'missikara djarati wari!! wari!!',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'angné bin kélé man, me badé lou eh!',\n", + " 'angné bin kélé man!!',\n", + " 'angné bin kélé man, me badé lou eh!',\n", + " 'angné bin kélé man you',\n", + " 'multipartism it is not tribalism',\n", + " 'multipartism yeah, it is not tribalism',\n", + " 'nor-kouibé kouman oh! keep silent yourself, keep silent dioula',\n", + " 'nor-kouibé kouman oh! keep silent yourself, keep silent bété',\n", + " 'nor-kouibé kouman oh! keep silent yourself, keep silent baoulé',\n", + " 'i kouibé kouman dôni conceal to you bôyôrôdjan!!',\n", + " 'the soldiers are annoyed',\n", + " 'because they are badly paid',\n", + " 'the police officers are annoyed',\n", + " 'because they are badly paid',\n", + " 'the professors are annoyed',\n", + " 'their baffoulés syndacaux rights',\n", + " 'the annoyed students cont',\n", + " 'they want more freedom',\n", + " '\"paper longuer\" the mourouti',\n", + " 'because they were knocked',\n", + " 'the doctors are annoyed',\n", + " 'because they are badly paid',\n", + " 'the workmen are annoyed',\n", + " 'because they were compressed',\n", + " 'the government is annoyed',\n", + " 'cases of the state emptied... emptied...',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'missikara djarati wari!! wari!!',\n", + " 'abidjan ya cloth',\n", + " 'in cotonou ya cloth',\n", + " 'in bamako bastard cloth',\n", + " 'in lome ya cloth',\n", + " 'in conakry ya cloth',\n", + " 'in monravia bastard cloth',\n", + " 'in lome ya cloth',\n", + " 'in kinshasa ya cloth oh!',\n", + " 'addis ababa bastard cloth...',\n", + " 'abidjan ya cloth oh!',\n", + " 'in cotonou ya cloth',\n", + " 'in bamako bastard cloth',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", + " 'angné bin kélé man, me badé lou eh!',\n", + " 'angné bin kélé man!!',\n", + " 'angné bin kélé man, me badé lou eh!',\n", + " 'angné bin kélé man you',\n", + " 'nor-kouibé kouman oh! conceal pdci',\n", + " 'nor-kouibé kouman oh! conceal pit',\n", + " 'nor-kouibé kouman oh! conceal usd',\n", + " 'i-kouibé kouman dôni oh! conceal fpi',\n", + " \"tout' l world is annoyed, fâché, fâché\",\n", + " 'quand tout va mal, when life goes wrong',\n", + " 'try for a little french song',\n", + " 'french songs are maybe démodées mais si douces à fredonner',\n", + " \"french songs are tender à l'envi, nostalgiques à l'infini\",\n", + " 'et quand on ne sait plus where to belong',\n", + " 'try for a little french song',\n", + " \"french song will take you to paris, to pigalle ou l'île saint-louis\",\n", + " 'french song are dancing sous la pluie, de bastille aux tuileries',\n", + " 'because we have de quoi frimer, we have brassens, brel and ferré',\n", + " 'we have boris vian, barbara, gainsbourg, trenet, prévert, kosma',\n", + " 'because we have de quoi choisir we have aznavour, reggiani',\n", + " 'bécaud, nougaro, moustaki, édith piaf cloclo and johnny',\n", + " 'oui, oui, oui, oui',\n", + " \"bien sûr ce n'est pas duke ellington\",\n", + " \"ce n'est pas eivis ni jackson\",\n", + " \"ce n'est pas fitzgerald ou armstrong\",\n", + " \"c'est just a little french song\",\n", + " 'mais quand le chagrin reste too iong',\n", + " 'moi je chante une little french song',\n", + " 'because we have de quoi frimer, we have brassens, brel and ferré',\n", + " 'we have boris vian, barbara, gainsbourg, trenet, prévert, kosma',\n", + " 'because we have de quoi choisir we have aznavour, reggiani',\n", + " 'bécaud, nougaro, moustaki, edith piaf cloclo and johnny',\n", + " 'oui, oui, oui, oui',\n", + " \"et qu'on soit de londres ou de hong kong, qu'on soit trois feuilles\",\n", + " 'ou shu-bang',\n", + " \"qu'on soit djellabah ou sarong, try for a little french song\",\n", + " 'quand les méchants sonnent leur gong',\n", + " 'moi je chante une little french song',\n", + " 'ooooh oh oooh oh ooooh oh ooooh oh oooooh',\n", + " \"aïe aïe aïe c'est les jumo, les jumoooo\",\n", + " 'momomohombii',\n", + " \"c'est chaud ça brûle\",\n", + " 'tout le monde tout le monde',\n", + " 'sexy the way you move that body',\n", + " \"i'm standing here\",\n", + " \"i'm ready\",\n", + " \"c'est parti pour le show\",\n", + " \"hey girl t'es sexy\",\n", + " 'the way you move that body',\n", + " \"i'm standing here\",\n", + " \"i'm ready\",\n", + " \"c'est parti pour le show oh oh\",\n", + " 'mon coeur fait \"boum\" quand tu passes devant moi',\n", + " '\"boum boum\" quand il entend ta voix',\n", + " \"c'est toi la plus belle tu es ma reine\",\n", + " \"aussi ravissante qu'un couché d'soleil\",\n", + " 'docta lova',\n", + " \"j'adore ton déhanché\",\n", + " \"ta beauté m'a charmé\",\n", + " 'apprends moi à lover',\n", + " 'et dans ta tête ça fait ti ki ti ki pam pam',\n", + " 'ooooh oh oooh oh ooooh oh ooooh oh oooooh',\n", + " \"les demoiselles vont bouger les massoko c'est ça!\",\n", + " 'zouker zouker',\n", + " 'ti ki ti pam pam',\n", + " 'sexy the way you move that body',\n", + " \"i'm standing here\",\n", + " ...]},\n", + " 'data': ['mar-an-tette, leverette',\n", + " 'lannette, lafayette, livernois',\n", + " 'labrosse, louis, mettetal',\n", + " 'rochelle, marseilles',\n", + " 'riopelle, manistique, armour',\n", + " 'mercier, lemay',\n", + " 'tournier, saliotte et leroy',\n", + " 'montlieu, cadieux',\n", + " 'neveaux, avenue en detroit',\n", + " \"well, i'm ready\",\n", + " \"i'm ready\",\n", + " \"i'm ready, ready, ready to\",\n", + " 'rock and roll',\n", + " 'lamphere, belle terre',\n", + " 'marseilles, mettetal, et',\n", + " 'rouge, le blanc',\n", + " 'shine you’re the light',\n", + " 'nae mame',\n", + " 'deureo on geoni',\n", + " 'malhaejwo',\n", + " 'eonjebuteonji',\n", + " 'gogaereul dollimyeon',\n", + " 'ni nuni tteoolla',\n", + " 'can i could',\n", + " 'i be your man',\n", + " 'siganeun neol hyanghae',\n", + " 'heureuna bwa',\n", + " 'amu mal eomneun',\n", + " 'neoui sonjise',\n", + " 'nan nuneul gamji motae',\n", + " 'niga deo seonmyeonghaejyeo ga',\n", + " 'so give me the light',\n", + " 'give me the light',\n", + " 'bitnaneun ni misoga',\n", + " 'nal nogyeo',\n", + " 'sesangeul barkhyeo',\n", + " 'nae apeul bichwo',\n", + " 'na modu byeonhago',\n", + " 'sarajindago haedo',\n", + " 'neomanui bichi neukkyeojyeo',\n", + " 'light in my eye',\n", + " 'i, i, i',\n", + " 'nege dagaga',\n", + " 'piharyeogo haebwado',\n", + " 'andwae deo gidaril sun eobseo',\n", + " 'you, you, you',\n", + " 'nae soneul jaba',\n", + " 'pihaegal suneun eobseo',\n", + " 'jigeum geu bicheul gatgesseo',\n", + " 'bitnaneun ni misoga',\n", + " 'nal nogyeo',\n", + " 'sesangeul barkhyeo',\n", + " 'nae apeul bichwo',\n", + " '(you light up my night',\n", + " 'you make me so right)',\n", + " 'modeun geoseul boge hae',\n", + " 'give me the light',\n", + " 'nae apeul eonjena',\n", + " 'barkhineun bit',\n", + " 'i wanna kiss you',\n", + " 'i wanna hold you tight',\n", + " 'neowa nanugo sipeo',\n", + " 'ni modeungeol',\n", + " 'naege gidaegil',\n", + " 'you, you, you',\n", + " 'naege dagawa',\n", + " 'i sunganeul jiwodo',\n", + " 'naneun neoreul nochi anha',\n", + " 'i, i, i',\n", + " 'ne soneul jaba',\n", + " 'can’t let you go',\n", + " 'wanna make you feel my love',\n", + " 'lady, lady',\n", + " 'cuz you are the one for me',\n", + " 'sigani jinado',\n", + " 'wanna be love',\n", + " 'your love',\n", + " 'ne mamdo mangseoriji anke',\n", + " 'josimseureopge jogeumssik dagaga',\n", + " 'jayeonseureopge neoege boyeojulge',\n", + " 'french translation :',\n", + " \"shine you're the light\",\n", + " 'es-tu venue dans mon cœur ?',\n", + " 'dis-moi, depuis quand ?',\n", + " 'quand je tourne la tête',\n", + " 'je penses à tes yeux',\n", + " 'can i could i be your man ?',\n", + " 'le temps semble flotter autour de toi',\n", + " 'a tes gestes sans mots',\n", + " 'je ne peux pas fermer mes yeux',\n", + " 'je deviens encore plus clair',\n", + " 'so give me the light',\n", + " 'give me the light',\n", + " 'ton sourire scintillant me fait fondre',\n", + " 'il révéle le monde, il brille devant moi',\n", + " 'même si tout change et disparaît',\n", + " 'je ne sens que ta lumière',\n", + " 'light in my eye',\n", + " \"i, i, i, j'irais vers toi\",\n", + " \"j'essaye de l'éviter\",\n", + " 'mais je ne peux pas',\n", + " 'je ne peux plus attendre',\n", + " 'you, you, you tiens ma main',\n", + " \"tu ne peux pas l'éviter\",\n", + " 'je vais avoir cette lumière',\n", + " 'ton sourire scintillant me fait fondre',\n", + " 'il révèle le monde',\n", + " 'il brille devant moi',\n", + " '(you light up my night',\n", + " 'you make me so right)',\n", + " 'tu me fais tout voir',\n", + " 'give me the light',\n", + " 'la lumière qui brille toujours devant moi',\n", + " 'i wanna kiss you',\n", + " 'i wanna hold you tight',\n", + " 'je veux tout partager avec toi',\n", + " \"j'espère que tu te reposeras sur moi\",\n", + " 'you, you, you, viens vers moi',\n", + " 'même si le moment est effacé',\n", + " 'je ne te laisserais pas partir',\n", + " 'i, i, i, tiens ta main',\n", + " \"can't let you go\",\n", + " 'wanna make you feel my love',\n", + " 'lady, lady',\n", + " 'cuz you are the one for me',\n", + " 'même après que le temps soit passé',\n", + " 'wanna ba love your love',\n", + " \"alors ton cœur n'hésitera pas\",\n", + " \"j'irais prudemment vers toi\",\n", + " 'petit à petit',\n", + " 'naturellement, je vais te montrer',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'tu veux... millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'tu veux... millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'tu veux... millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'millions, millions, millions, millions... cash, cash, cash',\n", + " 'tu veux... ah... cash... testarossa',\n", + " 'ah... cash... bahamas',\n", + " 'ah... cash... des millions...',\n", + " \"ah... cash... f-dans l'illicite\",\n", + " 'tu veux... ah... cash... testarossa',\n", + " 'ah... cash...',\n", + " 'ah... cash... des millions...',\n", + " 'ah... cash...',\n", + " 'ah...',\n", + " 'ah...',\n", + " 'cash... ca-cash...',\n", + " 'cash... ca-cash...',\n", + " 'cash... ca-cash...',\n", + " 'cash... ca-cash...',\n", + " 'cash... ca-cash...',\n", + " 'cash... ca-cash...',\n", + " 'cash... ca-cash...',\n", + " 'cash... ca-cash...',\n", + " 'des millions, millions, millions, millions... cash, cash, cash',\n", + " 'des millions, millions, millions, millions... cash, cash, cash',\n", + " 'des millions, millions, millions, millions... cash, cash, cash',\n", + " 'des millions, millions, millions, millions... cash, cash, cash',\n", + " 'des millions, millions, millions, millions... cash, cash, cash',\n", + " 'des millions, millions, millions, millions... cash, cash, cash',\n", + " 'des millions, millions, millions, millions... cash, cash, cash',\n", + " 'des millions, millions, millions, millions... cash, cash, cash',\n", + " 'ahi, amors, com dure departie',\n", + " 'me convenra faire de la millor',\n", + " 'ki onques fust amee ne servie!',\n", + " 'dieus me ramaint a li par sa douçour',\n", + " \"si voirement ke m'en part a dolor\",\n", + " \"las, k'ai je dit? ja ne m'en part je mie:\",\n", + " 'se li cors va servir nostre signor',\n", + " 'li cuers remaint del tot en sa baillie',\n", + " \"por li m'en vois sospirant en surie\",\n", + " 'car je ne doi faillir mon creator:',\n", + " \"ki li faura a cest besoing d'aïe\",\n", + " 'saciés ke il li faura a grignor',\n", + " 'et saicent bien li grant et li menor',\n", + " 'ke la doit on faire chevallerie',\n", + " 'ou on conquierl paradis et honor',\n", + " \"et pris et los, et l'amor de s'amie\",\n", + " 'dieus, tant a avons este preus par huiseuse!',\n", + " 'or verra on ki a certes iert preus:',\n", + " \"s'irons vengier la honte dolereuse\",\n", + " 'dont chascuns doit estre iriés et honteus',\n", + " 'car a no tans est perdusl li saint lieus',\n", + " 'ou dieus soffri por nos mort glorïeuse;',\n", + " \"s'or i laissons nos anemis morteus\",\n", + " 'a tos jors mais iert no vie honteuse',\n", + " 'on a pris quelques affaires un tricot',\n", + " 'plus un kit de couturière au cas où',\n", + " 'on avait fait un tremplin au veillis',\n", + " \"un grand tremplin pour partir loin d'ici\",\n", + " 'johnny welcome home',\n", + " 'johnny welcome',\n", + " 'oh les jours de neige de neige au veillis',\n", + " 'quelques bonnes longueurs de ficelle au cas où',\n", + " 'en bas claquent les portes du pénitencier',\n", + " 'mais bon dieu bon dieu elle va pas tout gâcher',\n", + " 'johnny welcome home',\n", + " 'johnny welcome',\n", + " 'elle chantait plutôt sunday afternoon',\n", + " 'il était plutôt du genre barstool blues',\n", + " 'comment faire entre eux et eux, eux et nous',\n", + " \"se faire un tremplin pour partir n'importe où\",\n", + " 'johnny welcome home',\n", + " 'johnny welcome',\n", + " 'radio activity , radio activity , ra-ra-ra-radio activity',\n", + " \"we're on a mission for orientation\",\n", + " 'radio activity , radio activity , ra-ra-ra-radio activity',\n", + " \"we're on a mission for orientation\",\n", + " 'ordre tombé de tout en haut',\n", + " 'politique du politburo',\n", + " 'playlist on the radio',\n", + " 'sous menace du',\n", + " 'single bubble gum',\n", + " \"enrichie à l'uranium\",\n", + " 'titre , hit , bombe atomique',\n", + " 'radio activity , radio activity , ra-ra-ra-radio activity',\n", + " \"we're on a mission for orientation\",\n", + " 'fabriqué au fond du labo',\n", + " 'musique pour robot',\n", + " \"encodage dans l'cerveau\",\n", + " 'mp3 + h2o',\n", + " 'e=2mc propagé dans circuit',\n", + " 'track hit buzz clash code fanatique',\n", + " 'matraquage en réseaux sociaux',\n", + " 'perfusion dans tous les tuyaux',\n", + " \"objectif thune à l'auto-tune\",\n", + " 'on a marché sur la lune',\n", + " 'phénomène hiro chimique',\n", + " 'hit para tchernobylique',\n", + " 'titre , hit , bombe atomique',\n", + " 'radio activity , radio activity , ra-ra-ra-radio activity',\n", + " \"we're on a mission for orientation\",\n", + " 'marx marx marx planète',\n", + " 'marx planète stargate',\n", + " 'marx marx marx planète',\n", + " 'marx planète stargate',\n", + " 'marx marx marx planète',\n", + " 'marx planète stargate',\n", + " 'marx marx marx planète',\n", + " 'marx planète stargate',\n", + " 'radio activity , radio activity , radio activity',\n", + " \"we're on a mission for orientation\",\n", + " 'radio activity , radio activity , radio activity',\n", + " \"we're on a mission for orientation\",\n", + " 'marx marx marx planète',\n", + " 'marx marx marx planète',\n", + " 'marx marx',\n", + " 'marx planète stargate',\n", + " 'marx marx',\n", + " 'marx planète stargate',\n", + " 'un,deux,trois',\n", + " \"elle n'est pas de moi\",\n", + " 'mais je peux',\n", + " 'le voir dans ses yeux',\n", + " 'un, deux, trois',\n", + " \"elle n'est pas de moi\",\n", + " 'mais je peux',\n", + " 'le voir dans ses yeux',\n", + " 'i shout',\n", + " \"what i'm saying\",\n", + " \"'cos less is more\",\n", + " 'save me',\n", + " 'if you save me',\n", + " 'then less is more',\n", + " 'less is more',\n", + " \"dans l'obscurité\",\n", + " 'je cherche ton son',\n", + " 'pour me guider',\n", + " 'pour éclairer',\n", + " 'mon horizon',\n", + " 'telle est la vie',\n", + " \"qu'on m'a donné\",\n", + " 'je dois errer',\n", + " 'dans les ténèbres',\n", + " \"pour l'éternité\",\n", + " \"j'ai parfois envie\",\n", + " \"d'autres plaisirs\",\n", + " 'de petites joies',\n", + " 'des raisons de vivre',\n", + " \"ou d'exister\",\n", + " 'mais je reste seul',\n", + " 'dans mes pensées',\n", + " 'mon univers',\n", + " 'reste fermé',\n", + " 'a tout jamais',\n", + " 'ecoute moi',\n", + " 'entends moi',\n", + " \"c'est mon cri\",\n", + " \"qui t'appelle\",\n", + " 'emmène moi',\n", + " 'entraîne moi',\n", + " 'dans ces lieux',\n", + " 'interdits',\n", + " 'prends ma main',\n", + " 'prends ma main',\n", + " 'guide mes pas',\n", + " 'dans cette vie',\n", + " 'prends mon âme',\n", + " 'prends mon âme',\n", + " \"c'est mes rêves\",\n", + " \"qui s'éclairent\",\n", + " \"j'ai aimé\",\n", + " \"tant d'idées\",\n", + " \"que j'ai dû\",\n", + " 'inventer',\n", + " 'seul le bruit',\n", + " \"m'a compris\",\n", + " 'et me mon-',\n", + " '-tre ma vie',\n", + " 'vois mes larmes',\n", + " 'vois mes larmes',\n", + " \"qui s'écoulent\",\n", + " 'de la mort',\n", + " \"c'est mon c? ur\",\n", + " \"c'est mon coeur\",\n", + " 'qui attend',\n", + " 'la lumière',\n", + " 'in darkness',\n", + " 'i search your sound',\n", + " 'to guide me',\n", + " 'to enlighten',\n", + " 'my horizon',\n", + " 'this is the life',\n", + " 'they gave me',\n", + " 'i have to wander',\n", + " 'in darkness',\n", + " 'forever',\n", + " 'i sometimes need',\n", + " 'some other pleasures',\n", + " 'some small joies',\n", + " 'some reasons to live',\n", + " 'or to exist',\n", + " 'but i stay alone',\n", + " 'with my thoughts',\n", + " 'my world',\n", + " 'stay closed',\n", + " 'forever',\n", + " 'listen to me',\n", + " 'hear me',\n", + " 'this is my cry',\n", + " 'which is calling you',\n", + " 'take me',\n", + " 'lead me away',\n", + " 'to these forbidden',\n", + " 'places',\n", + " 'take my hand',\n", + " 'take my hand',\n", + " 'guide me',\n", + " 'in this life',\n", + " 'take my soul',\n", + " 'take my soul',\n", + " \"that's my dreams\",\n", + " 'which are enlightening me',\n", + " \"i've loved\",\n", + " 'so many ideas',\n", + " 'that i had',\n", + " 'to invent',\n", + " 'only the noise',\n", + " 'understood me',\n", + " 'and showed me',\n", + " 'my life',\n", + " 'behold my tears',\n", + " 'behold my tears',\n", + " 'which are flowing',\n", + " 'out of death',\n", + " \"that's my heart\",\n", + " \"that's my heart\",\n", + " 'which is waiting for',\n", + " 'the light',\n", + " 'ninaaaa',\n", + " \"je t'attendrai comme avant\",\n", + " 'sans faire de bruit sans faire semblant',\n", + " \"juste parce que tu es celle, celle qui m'a donné des ailes\",\n", + " \"on a gravé des souvenirs sur l'écorce de nos 20 ans\",\n", + " 'depuis, nina, tu es partie, et ça me bouffe la vie',\n", + " 'nina nina, nina nina',\n", + " \"i'm still waiting\",\n", + " 'nina nina nina',\n", + " 'je sais que tu ne viendras pas',\n", + " \"and i'm still waiting\",\n", + " 'nina nina nina',\n", + " \"mais je t'attendrai là-bas\",\n", + " 'so far away from...',\n", + " 'nina nina nina',\n", + " 'je sais que tu ne viendras pas',\n", + " \"and i'm still waiting\",\n", + " 'nina nina nina',\n", + " \"mais je t'attendrai là-bas\",\n", + " 'so far away from...',\n", + " 'je garderai sur mes lèvres, le goût sucré de tes baisers',\n", + " 'la douceur de ton corps, le parfum de ta peau bronzée',\n", + " \"j'emporterai avec moi l'étoile de ton regard de braise\",\n", + " 'et tous ces petits mots que tu me criais tout bas',\n", + " 'nina nina, nina nina',\n", + " \"i'm still waiting\",\n", + " 'nina nina nina',\n", + " 'je sais que tu ne viendras pas',\n", + " \"and i'm still waiting\",\n", + " 'nina nina nina',\n", + " \"mais je t'attendrai là-bas\",\n", + " 'so far away from...',\n", + " 'nina nina nina',\n", + " 'je sais que tu ne viendras pas',\n", + " \"and i'm still waiting\",\n", + " 'nina nina nina',\n", + " \"mais je t'attendrai là-bas\",\n", + " 'one day',\n", + " \"i've been back to that town you know\",\n", + " 'in this place where you came my way',\n", + " 'the last time just before you go',\n", + " 'one day',\n", + " 'i heard your voice talking to me',\n", + " 'remember all the words you say',\n", + " \"there's something that will always be\",\n", + " 'forever and ever',\n", + " 'nina nina, nina nina',\n", + " \"i'm still waiting\",\n", + " 'nina nina nina',\n", + " 'je sais que tu ne viendras pas',\n", + " \"and i'm still waiting\",\n", + " 'nina nina nina',\n", + " \"mais je t'attendrai là-bas\",\n", + " 'so far away from...',\n", + " 'nina nina nina',\n", + " 'je sais que tu ne viendras pas',\n", + " \"and i'm still waiting\",\n", + " 'nina nina nina',\n", + " \"mais je t'attendrai là-bas\",\n", + " '(musique: daniel mongrain & pier-luc lampron)',\n", + " '(paroles: françois mongrain)',\n", + " \"(espérer peut faire très mal, surtout face à des illusions. échec après échec, l'on se réfugie dans la réclusion et le mépris. toutefois, la vie sans désir ne peut pas valoir la peine d'être vécue.)\",\n", + " '(dm-) nothing ever compared to',\n", + " 'the pain delivered by hope',\n", + " 'this reassuring derision',\n", + " 'to believe in illusions',\n", + " 'abstraction of all desires',\n", + " 'that is the way to suicide',\n", + " 'in a world nourished by lies',\n", + " 'no one can fulfil his life',\n", + " 'failure after failure',\n", + " 'more than the heart can endure',\n", + " 'life becomes a slow torture',\n", + " 'until the grand departure',\n", + " 'aging faster than time passes',\n", + " \"don't implore to start over\",\n", + " 'wishes rarely ever come true',\n", + " 'when youth grows old too fast',\n", + " '(lead: pier-luc lampron)',\n", + " 'failure after failure',\n", + " 'until the grand departure',\n", + " 'failure after failure',\n", + " 'until the grand departure',\n", + " '(lead: daniel mongrain)',\n", + " 'janvier :',\n", + " '- 01/01 : 3010 - zones (ep)',\n", + " '- 01/01 : solat - dealers de rêves (ep)',\n", + " '- 06/01 : sameer ahmad - ne mourez jamais seul (ep)',\n", + " '- 10/01 : youssoupha - boma yé (ep)',\n", + " '- 12/01 : bazoo - évolution',\n", + " '- 13/01 : the shin sekai - the shin sekai vol.2',\n", + " '- 20/01 : alpha wann - alph lauren (ep)',\n", + " \"- 20/01 : mydriase (le bon nob & clem beat'z) - grosse tête (ep)\",\n", + " \"- 20/01 : seiya & ben maker - tristesse d'un mélomane\",\n", + " '- 20/01 : shtar academy - shtar academy',\n", + " '- 27/01 : zbatata - vrais reconnaissent vrais',\n", + " '- 27/01 : pepso stavinsky - météorites (ep)',\n", + " '- 30/01 : rgf - rap genius net tape',\n", + " '- 31/01 : l’exécuteur de hong kong - l’envol du caméléon',\n", + " 'février :',\n", + " \"- 03/02 : deen burbigo - fin d'après minuit (ep)\",\n", + " '- 03/02 : sp (s-krim) - criminology',\n", + " \"- 08/02 : t.i.s & tum'soul - soulitude (vol.1)\",\n", + " '- 09/02 : dr kimble, débill sass, gaïden & tidess - grandline',\n", + " \"- 10/02 : abe 2 l'shefa - c ash misere\",\n", + " '- 10/02 : arkanson - 20 ans après (ep)',\n", + " '- 10/02 : mister you - le prince',\n", + " '- 10/02 : diomay - le gaucher',\n", + " \"- 16/02 : swatt's - l'amorce\",\n", + " '- 17/02 : crown - pieces to the puzzle',\n", + " \"- 17/02 : missak - l'adultère est un jeu d'enfant (ep)\",\n", + " '- 21/02 : rgf - the big three vol.1',\n", + " '- 22/02 : gwad - entre les lignes',\n", + " '- 24/02 : fossoyeur et guyle - mic en main',\n", + " '- 24/02 : grems - buffy (ep)',\n", + " '- 24/02 : jul - dans ma paranoia',\n", + " '- 24/02 : indila - mini world',\n", + " '- 24/02 : team bs - team bs',\n", + " '- 24/02 : bhati - patchwork',\n", + " 'mars :',\n", + " \"- 02/03 : l'artmature - second souffle\",\n", + " '- 02/03 : jcr - rudimentaire',\n", + " '- 03/03 : kaaris - or noir part. ii',\n", + " '- 03/03 : disiz - transe-lucide',\n", + " \"- 10/03 : dj mosko - prouesses de l'ombre vol.2\",\n", + " '- 10/03 : lim - violences urbaines 4',\n", + " '- 10/03 : mz - mz music vol. 3',\n", + " '- 10/03 : r.e.d.k. - chant de vision',\n", + " '- 10/03 : tunisiano - marqué à vie',\n", + " \"- 12/03 : lucio bukowski & haymaker - l'homme vivant\",\n", + " '- 17/03 : beeby - ad hominem',\n", + " '- 19/03 : sadek - en attendant #jnnmj',\n", + " '- 20/03 : fixpen sill, caballero, lomepal, meyso - fixpen singe (ep)',\n", + " '- 21/03 : rgf - the big three vol.2',\n", + " '- 24/03 : furax barbarossa - testa nera',\n", + " '- 30/03 : bazoo & goune - terminus',\n", + " '- 31/03 : black m - les yeux plus gros que le monde',\n", + " '- 31/03 : grödash - bandana & purple haze',\n", + " '- 31/03 : mac tyer - banger 2',\n", + " '- 31/03 : seyté et el chileno - a ciel ouvert',\n", + " 'avril :',\n", + " '- 02/04 : s.pri noir - 0.0.s. licence to kill',\n", + " '- 04/04 : tom kingue - cogito avant ergo sum',\n", + " \"- 06/04 : alkpote - l'orgasmixtape\",\n", + " '- 07/04 : loko & karna - décalages horaires',\n", + " '- 08/04 : vii - culte',\n", + " '- 09/04 : senamo et neshga - sennes',\n", + " '- 14/04 : dinos punchlinovic - apparences',\n", + " '- 14/04 : utopie - quid pro quo',\n", + " \"- 18/04 : davodka - l'art tisant (ep)\",\n", + " \"- 21/04 : ayna - héritage en attendant l'album #msml (ep)\",\n", + " '- 21/04 : bigflo & oli - le trac (ep)',\n", + " '- 21/04 : orgasmic & fuzati - grand siècle',\n", + " '- 25/04 : gros mo - fils de pute',\n", + " '- 28/04 : melan - vagabond de la rime ii',\n", + " '- 28/04 : metek - paris 75021 (mixtape)',\n", + " '- 28/04 : zekwe ramos - seleção 2',\n", + " '- 29/04 : beny le brownies - pre dora (ep)',\n", + " 'mai :',\n", + " '- 05/05 : révolution urbaine - cheval de troie',\n", + " '- 12/05 : abis - hall in',\n", + " '- 12/05 : coloquinte\\ufeff - camouflage studio',\n", + " '- 12/05 : dany dan & ol kainry - saison 2',\n", + " '- 12/05 : la smala - un murmure dans le vent',\n", + " '- 12/05 : le bon son - du bon son #1',\n", + " '- 12/05 : patee gee - oracle',\n", + " '- 12/05 : yo.k - optimum',\n", + " '- 13/05 : mani deïz - the cassette sunday',\n", + " '- 15/05 : eklips - monster',\n", + " '- 19/05 : beeby - quatre saisons vol. 1',\n", + " \"- 19/05 : georgio - à l'abri (ep)\",\n", + " \"- 19/05 : s-pi - les chroniques d'un gesteur & gentleman\",\n", + " '- 19/05 : tiers monde - toby or not toby',\n", + " '- 19/05 : visions sonores - visions sonores',\n", + " '- 20/05 : espiiem - cercle privé',\n", + " '- 26/05 : a2h - art de vivre',\n", + " \"- 26/05 : l'entourage - jeunes entrepreneurs\",\n", + " '- 26/05 : metek - riski',\n", + " '- 26/05 : odezenne - rien (en digital)',\n", + " \"- 26/05 : pand'or - dans ma boîte, vol.2\",\n", + " '- 26/05 : volts face - face à volts',\n", + " '- 29/05 : lucio bukowski & haymaker - golgotha (ep)',\n", + " '- 30/05 : ritzo - point zéro',\n", + " 'juin :',\n", + " '- 02/06 : joke - ateyaba',\n", + " '- 09/06 : kalif hardcore - vendredi 13',\n", + " '- 09/06 : niro - miraculé',\n", + " '- 09/06 : odezenne - rien (ep)',\n", + " '- 09/06 : la mannschaft - doucement mais sûrement',\n", + " '- 10/06 : 20syl - motifs (ep)',\n", + " '- 16/06 : luidji - station 999',\n", + " '- 16/06 : veerus - minuit',\n", + " '- 16/06 : mlc - vendetta',\n", + " '- 16/06 : jul - lacrizeomicmek',\n", + " '- 19/06 : juicy p - certifié vrai 2',\n", + " '- 20/06 : i.n.c.h. - ni saint ni sauf',\n", + " '- 21/06 : asocial club - toute entrée est définitive',\n", + " '- 27/06 : gaïden, kimble, faderbeaz & raheem - rorschach',\n", + " '- 27/06 : sadek - en attendant #jnnmj2',\n", + " '- 30/06 : fixpen sill - on verra plus tard',\n", + " '- 30/06 : kenyon - nouvel air',\n", + " \"- 30/06 : pand'or - dans ma boite (édition collector)\",\n", + " '- 30/06 : monstre marin corporation - la monster party - chapitre 1',\n", + " 'juillet :',\n", + " '- 02/07 : jeanjass & le seize - jean xvi',\n", + " '- 07/07 : taïro - street tape vol.4',\n", + " \"- 10/07 : l'argent de la drogue - no future\",\n", + " '- 13/07 : cause commune - i.a',\n", + " \"- 23/07 : lucio bukowski & nestor kéa - l'art raffiné de l'ecchymose\",\n", + " 'août :',\n", + " '-',\n", + " 'septembre :',\n", + " '- 01/09 : lacrim - corleone',\n", + " '- 03/09 : maj trafyk - petite prophétie',\n", + " '- 05/09 : give me five - dès le dépar vol.2',\n", + " '- 08/09 : soulkast - memento mori',\n", + " '- 15/09 : les chroniques du wati boss, vol.2 (compilation)',\n", + " '- 15/09 : lomepal - seigneur',\n", + " '- 29/09 : swift guad - la chute des corps',\n", + " '- 29/09 : chapsy - 3u',\n", + " '- 29/09 : stick - 1 mc 2 plus',\n", + " 'octobre :',\n", + " '- 03/10 : lacraps - machine à écrire',\n", + " '- 05/10 : lago de feu - lago lacuisse lebiff',\n", + " '- 06/10 : katana - le fourreau',\n", + " \"- 06/10 : l'algerino - aigle royal\",\n", + " '- 12/10 : népal - 16par16',\n", + " \"- 13/10 : hologram lo' - deeplodocus\",\n", + " '- 13/10 : soprano - cosmopolitanie',\n", + " '- 13/10 : paco - paco-errant',\n", + " '- 15/10 : reeno - en attendant mon album',\n", + " '- 19/10 : la race canine - k7k9',\n", + " '- 19/10 : lucio bukowski & mani deïz - ...',\n", + " '- 19/10 : ysha - ces gars: derrière les masques',\n", + " '- 20/10 : black kent - the college blackout (mixtape)',\n", + " '- 20/10 : criks - le calme avant la tempête (mixtape)',\n", + " '- 20/10 : maska - espace temps',\n", + " '- 20/10 : mr ogz - battements',\n", + " '- 24/10 : tito prince - les prémices de totination (ep)',\n", + " '- 27/10 : aladin 135 - a peine majeur',\n", + " '- 27/10 : greg frite - les gros mots de greg frite',\n", + " '- 27/10 : mer2crew - remise à flow',\n", + " '- 27/10 : quincy - point g (ep)',\n", + " '- 27/10 : vald - nqnt (ep)',\n", + " 'novembre :',\n", + " '- 02/11 : cultiz - cultiz ton beat',\n", + " '- 03/11 : akhenaton - je suis en vie',\n", + " '- 03/11 : jeanjass - goldman',\n", + " '- 03/11 : marin monster - marin monster',\n", + " '- 07/11 : ned - setup',\n", + " \"- 10/11 : hologram lo' & darryl zeuja - inner city\",\n", + " '- 14/11 : bazoo & goune - home tape',\n", + " '- 17/11 : black m - le monde plus gros que mes yeux',\n", + " \"- 17/11 : ibrahim maalouf & oxmo puccino - au pays d'alice\",\n", + " \"-17/11 : gueule d'ange - classico micro\",\n", + " '- 19/11 : lucio bukowski - tchouen (la difficulté initiale) (ep)',\n", + " '- 20/11 : phases cachées - phases b vol.2',\n", + " '- 24/11 : busta flex - soldat (ep)',\n", + " '- 24/11 : la fouine - capitale du crime vol.4',\n", + " '- 24/11 : jarod - frappe préventive',\n", + " '- 26/11 : nem - lignes de fuite',\n", + " 'décembre :',\n", + " '- 01/12 : black kent & dj myst - la kentessence vol.1 (mixtape)',\n", + " '- 01/12 : skreally boy - karma (ep)',\n", + " '- 01/12 : caballero - le pont de la reine (ep)',\n", + " '- 01/12 : rochdi - blue tape',\n", + " '- 01/12 : xv barbar - instinct animal',\n", + " '- 08/12 : mani deiz - cupcakes',\n", + " '- 10/12 : sameer ahmad - perdants magnifiques',\n", + " '- 14/12 : romeo elvis - famille nombreuse',\n", + " '- 15/12 : guizmo - dans ma ruche',\n", + " \"- 18/12 : sam's - gestelife révolution\",\n", + " '- 25/12 : népal - 16par16 (remix)',\n", + " 'wight is wight',\n", + " 'dylan is dylan',\n", + " 'wight is wight',\n", + " 'viva donovan',\n", + " \"c'est comme un soleil\",\n", + " 'dans le gris du ciel',\n", + " 'wight is wight',\n", + " 'hippie, hip hip hip',\n", + " 'hip hip hip',\n", + " 'hip hip hip',\n", + " \"ils sont arrivés dans l'île nue\",\n", + " 'sans un bagages et les pieds nus',\n", + " 'comme un cyclone inattendu',\n", + " 'comme une fleur avant la saison',\n", + " 'comme une pluie de papillons',\n", + " 'a laquelle on a jamais cru',\n", + " 'wight is wight',\n", + " 'dylan is dylan',\n", + " 'wight is wight',\n", + " 'viva donovan',\n", + " \"c'est comme un soleil\",\n", + " 'dans le gris du ciel',\n", + " 'wight is wight',\n", + " 'hippie, hip hip hip',\n", + " 'hip hip hip',\n", + " 'hip hip hip',\n", + " \"toi qui a voulu t'emprisonner\",\n", + " 'as-tu le droit de condamner',\n", + " \"celui qui cherche à s'évader ?\",\n", + " 'chacun mène sa vie comme il veut',\n", + " 'tu ne peux plus baisser les yeux',\n", + " 'car aussi vrai que tu es né',\n", + " 'wight is wight',\n", + " 'dylan is dylan',\n", + " 'wight is wight',\n", + " 'viva donovan',\n", + " \"c'est comme un soleil\",\n", + " 'dans le gris du ciel',\n", + " 'wight is wight',\n", + " 'hippie, hip hip hip',\n", + " 'hip hip hip',\n", + " 'hip hip hip',\n", + " 'wight is wight',\n", + " 'dylan is dylan',\n", + " 'wight is wight',\n", + " 'viva donovan',\n", + " \"c'est comme un soleil\",\n", + " 'dans le gris du ciel',\n", + " 'wight is wight',\n", + " 'hippie, hip hip hip',\n", + " 'hip hip hip',\n", + " 'hip hip hip',\n", + " 'wight is wight',\n", + " 'dylan is dylan',\n", + " 'wight is wight',\n", + " 'viva donovan',\n", + " \"c'est comme un soleil\",\n", + " 'dans le gris du ciel',\n", + " 'wight is wight',\n", + " 'hippie, hip hip hip',\n", + " 'hip hip hip',\n", + " 'hip hip hip...',\n", + " 'riding on the city of new orleans',\n", + " 'illinois central monday morning rail',\n", + " 'fifteen cars and fifteen restless riders',\n", + " 'three conductors and twenty-five sacks of mail',\n", + " 'all along the southbound odyssey',\n", + " 'the train pulls out at kankakee',\n", + " 'rolls along past houses, farms and fields',\n", + " \"passin' trains that have no names\",\n", + " 'freight yards full of old black men',\n", + " 'and the graveyards of the rusted automobiles',\n", + " 'good morning america how are you?',\n", + " \"don't you know me i'm your native son\",\n", + " \"i'm the train they call the city of new orleans\",\n", + " \"i'll be gone five hundred miles when the day is done\",\n", + " 'les matins se suivent et se ressemblent',\n", + " \"quand l'amour fait place au quotidien\",\n", + " \"on n'était pas fait pour vivre ensemble\",\n", + " \"ça n'suffit pas de toujours s'aimer bien\",\n", + " \"c'est drôle, hier, on s'ennuyait\",\n", + " \"et c'est à peine si l'on trouvait\",\n", + " 'des mots pour se parler du mauvais temps',\n", + " \"et maintenant qu'il faut partir\",\n", + " 'on a cent mille choses à dire',\n", + " \"qui tiennent trop à c'ur pour si peu de temps\",\n", + " \"on s'est aimé comme on se quitte\",\n", + " 'tout simplement sans penser à demain',\n", + " 'a demain qui vient toujours un peu trop vite',\n", + " 'aux adieux qui quelques fois se passent un peu trop bien',\n", + " \"on s'est aimé comme on se quitte\",\n", + " 'tout simplement sans penser à demain',\n", + " \"i'm the train they call the city of new orleans\",\n", + " \"i'll be gone five hundred miles when the day is done\",\n", + " \"girl, don't you wanna dance right now?\",\n", + " 'je sais que je peux le faire',\n", + " \"don't you wanna dance right now?\",\n", + " \"avec toi je m'envole, je quitte la terre\",\n", + " \"je n'ai plus peur de prendre la lumière\",\n", + " 'tu poses un regard sur moi, je me révèle',\n", + " \"je pourrais défier le monde si c'est toi qui m'appelles\",\n", + " 'et si je, et si je tombe',\n", + " 'je sais que tu pardonneras tous mes faux pas',\n", + " 'même à bout de bras',\n", + " \"c'est toi qui me relèveras\",\n", + " \"j'ai toujours eu si peur\",\n", + " 'et quand je danse pour toi, pour nous',\n", + " \"don't make me say it again\",\n", + " \"(don't you wanna dance right now?)\",\n", + " '(get up)',\n", + " \"tu m'aides à briser chaînes\",\n", + " \"(don't you wanna dance right now?)\",\n", + " '(get up)',\n", + " 'nothing can stop you',\n", + " 'but you, you , you',\n", + " \"tu m'aides à briser chaînes\",\n", + " 'parce que je danse pour nous, nous, nous',\n", + " 'je sais que je peux le faire',\n", + " 'i see it inside you',\n", + " \"i know that it's there\",\n", + " 'i know that you want it',\n", + " '(you know that i want it)',\n", + " \"i can tell that you're scared\",\n", + " \"(je n'ai plus peur)\",\n", + " \"but we're already here\",\n", + " \"it's all ready now\",\n", + " 'and you gotta get up',\n", + " 'if you wanna get down',\n", + " 'you can dance',\n", + " '(i can dance)',\n", + " 'if you wanna dance',\n", + " '(i wanna dance)',\n", + " 'get up and dance',\n", + " '(i get up and dance)',\n", + " 'you can move',\n", + " '(i can move)',\n", + " 'all you gotta do',\n", + " '(i gotta do)',\n", + " 'is get up and move',\n", + " \"don't make me say it again\",\n", + " \"(don't you wanna dance right now?)\",\n", + " '(get up)',\n", + " \"tu m'aides à briser chaînes\",\n", + " \"(don't you wanna dance right now?)\",\n", + " '(get up)',\n", + " 'nothing can stop you',\n", + " 'but you, you , you',\n", + " \"tu m'aides à briser chaînes\",\n", + " 'parce que je danse pour nous, nous, nous',\n", + " 'see this battle that you fight',\n", + " 'and this enemy you face is yourself',\n", + " \"said it's all on you girl\",\n", + " 'if your victory is yours',\n", + " 'then you gotta go and get it',\n", + " \"it's not up to me already or anyone else\",\n", + " \"it's gotta be you you you\",\n", + " \"j'ai toujours eu si peur\",\n", + " 'et quand je danse pour toi, pour nous',\n", + " \"don't make me say it again\",\n", + " \"don't make me say it again\",\n", + " \"(don't you wanna dance right now?)\",\n", + " '(get up)',\n", + " \"tu m'aides à briser chaînes\",\n", + " \"(don't you wanna dance right now?)\",\n", + " '(get up)',\n", + " 'nothing can stop you',\n", + " 'but you, you , you',\n", + " \"tu m'aides à briser chaînes\",\n", + " 'parce que je danse pour nous, nous, nous',\n", + " 'on ne recule devant rien, ni le mal, ni le bien',\n", + " \"c'est une histoire sans fin à chaque fois\",\n", + " \"cette sensation d'indifférence, soif de reconnaissance\",\n", + " \"qu'on traine depuis l'enfance à chaque fois\",\n", + " \"it's about you, it's about me, it's behind you, it's behind me\",\n", + " \"it's about you, it's about me, last zoom on our love\",\n", + " \"it's about you, it's about me, because of you, because of me\",\n", + " \"it's about you, last zoom on our love\",\n", + " 'on ne se souvient de rien, on prend le même chemin',\n", + " 'on pousse encore plus loin à chaque fois',\n", + " \"cette sensation d'enfermement, de vide et d'isolement\",\n", + " \"entre nous l'océan à chaque fois\",\n", + " \"it's about you, it's about me, it's behind you, it's behind me\",\n", + " \"it's about you, it's about me, last zoom on our love\",\n", + " \"it's about you, it's about me, because of you, because of me\",\n", + " \"it's about you, last zoom on our love\",\n", + " 'des mots dans ma bouche que tes yeux me soufflent',\n", + " \"redessinent à l'encre noir les contours de notre histoire\",\n", + " 'l’euphorie des jours est passée par nous déjà',\n", + " 'on a fait le tour, on a franchi le delta',\n", + " 'y-a-t-il un antidote au poison des détails?',\n", + " 'nos cœurs qui s’érodent',\n", + " 'c’est le temps qui les entaille, entaille, entaille',\n", + " 'plus rien ne m’agite',\n", + " 'une étincelle, ou je m’éteins sans toi',\n", + " 'plus rien ne m’agite',\n", + " 'si ta peau hésite',\n", + " 'prends moi la flamme et je brûle avec toi',\n", + " 'si ta peau hésite',\n", + " 'and i know',\n", + " 'your fire took away my pride',\n", + " \"and it's burning down inside\",\n", + " 'and i know',\n", + " 'that only you can turn the tide',\n", + " 'lift me up and make me glide',\n", + " 'oh oh oh oh',\n", + " 'viens le temps des anges',\n", + " 'qui nous ramène en arrière',\n", + " 'on goûte aux mensonges',\n", + " 'la vérité est amère, amère, amère',\n", + " 'juste à la limite',\n", + " 'entre la queue et les envies d’encore',\n", + " 'juste à la limite',\n", + " 'si ta peau me quitte',\n", + " 'que reste-t-il pour faire chanter mon corps',\n", + " 'si ta peau me quitte',\n", + " 'x3',\n", + " 'and i know',\n", + " 'that only you can turn the tide',\n", + " 'lift me up and make me glide',\n", + " 'that only you can turn the tide',\n", + " 'lift me up and make me glide',\n", + " 'la.i.la.i.la.i.la.i.la.i.la.i.la',\n", + " \"tire tire l'aiguille ma fille\",\n", + " 'la.i.la.i.la.i.la.i.la.i.la.i.la',\n", + " \"tire tire l'aiguille ma fille\",\n", + " \"tire tire l'aiguille ma fille\",\n", + " \"tire tire tire l'aiguille ma fille\",\n", + " 'demain demain tu te marie mon amie',\n", + " \"tire tire tire l'aiguille ma fille\",\n", + " 'ta robe doit etre finie',\n", + " 'sous tes doigts naissent des fleurs',\n", + " 'lettres de paillettes, de diamants',\n", + " \"diademe d'orangers porte par mere\",\n", + " 'est entre les mains de ta maman',\n", + " 'ta chambre est couverte de petits bouts de soie',\n", + " \"le chat sur le tapis s'en donne a coeur joie\",\n", + " 'pres du feu qui danse, le fauteuil se balance',\n", + " 'et berce ton pere endormi',\n", + " 'ta maman sans dire mot',\n", + " 'acheve de plier ton trousseau',\n", + " 'ton papa saura demain, apres le bal',\n", + " \"qu'un mariage coute bien du mal\",\n", + " 'la lumiere de la lampe fume et chancelle',\n", + " \"tes yeux se couvrent d'un rideau de dentelles\",\n", + " 'ne les laisse pas se fatiguer mon amie',\n", + " 'demain, il faut etre jolie',\n", + " \"et quand l'orgue chantera\",\n", + " \"lorsqu'enfin tu lui prendras le bras\",\n", + " \"puissent des millions d'etoiles au fil des heures\",\n", + " 'semer votre route de bonheur',\n", + " 'mon général?',\n", + " 'oui',\n", + " 'si la france est envahie, que faites-vous?',\n", + " 'et bien, je pars immédiatement à londres',\n", + " 'a londres? mais pourquoi?',\n", + " 'ben pour faire un appel',\n", + " 'et vous diriez quoi?',\n", + " 'mon général (mon général, mon général)',\n", + " 'i am the général bébé',\n", + " 'come on and join my army',\n", + " 'you, my little soldier',\n", + " 'come on and make a war of love with me',\n", + " 'i am your général, général of love',\n", + " 'come on my little soldier',\n", + " \"let's play together\",\n", + " 'a war of love',\n", + " 'come on and join me in my army',\n", + " 'come on and join me in my army',\n", + " 'mon général (mon général, mon général)',\n", + " 'you my little love soldier',\n", + " 'my little love soldier',\n", + " '(war of love)',\n", + " 'you are my little love',\n", + " '(war of love)',\n", + " \"let's play together soldier\",\n", + " '(libre, libre)',\n", + " \"let's play my love\",\n", + " 'the war of love',\n", + " '(car il est absurde de considérer la lutte comme perdue)',\n", + " 'my love soldier',\n", + " 'i am your général baby',\n", + " 'come on and join me in my army',\n", + " 'you are my little love soldier',\n", + " \"let's play together a war of love\",\n", + " 'just fuck, just fuck, just fuck',\n", + " 'the look in her eyes',\n", + " 'the blush on her cheeks',\n", + " \"she's got the sexiest lips\",\n", + " 'the way that she tromps',\n", + " 'reveals her perfect hips',\n", + " \"she's really a beauty\",\n", + " 'ohhhh i think i love you, ouahouh',\n", + " \"ohhhh i don't know how to, ouahouh\",\n", + " 'écoute-moi bien chéri',\n", + " \"je n'ai pas toute la nuit\",\n", + " 'toi tu parles depuis des heures',\n", + " \"et moi je pars dans un quart d'heure\",\n", + " \"j'dois prendre l'avion, j'rentre à new york\",\n", + " \"so, why don't we just fuck ?\",\n", + " 'just fuck, just fuck, just fuck',\n", + " \"so, why don't we just fuck ?\",\n", + " 'just fuck, just fuck, fuck',\n", + " 'écoute-moi bien garçon',\n", + " \"t'es plutôt bien mignon\",\n", + " 'sers-moi un dernier verre',\n", + " \"qu'on puisse commencer nos affaires\",\n", + " \"tout c'que tu dis, tu sais j'm'en moque\",\n", + " \"so, why don't we just fuck ?\",\n", + " 'just fuck, just fuck, fuck',\n", + " 'ça me monte dans la tête',\n", + " 'ce, ce soir je vais te faire la fête',\n", + " \"allez bébé, partons d'ici\",\n", + " \"s'te plait appelle-nous un taxi\",\n", + " \"si tu savais comme j'ai envie\",\n", + " 'ohhhh i think i love you, ouahouh',\n", + " \"ohhhh i don't know how to, ouahouh\",\n", + " \"attends je donne l'adresse\",\n", + " 'mais tu regardes pas mes fesses',\n", + " \"t'as la chance bébé ce soir\",\n", + " \"regarde j'ai pris mes accessoires\",\n", + " \"allez, viens, j't'ammène à new york\",\n", + " \"so, why don't we just fuck ?\",\n", + " 'just fuck, just fuck, allez, just fuck, viens',\n", + " \"so, why don't we just fuck ?\",\n", + " 'just fuck, just fuck, just fuck',\n", + " \"so, why don't we just fuck ?\",\n", + " 'i went down to the river',\n", + " 'but the river was dry',\n", + " 'i went down to the sea',\n", + " 'but it was not the place to be',\n", + " 'so i climbed the highest mountain',\n", + " 'and i climbed to the mountaintop',\n", + " 'girl, i found me a home',\n", + " \"and i don't have to roam\",\n", + " 'au bord de la riviére',\n", + " 'mais la riviére était sèche',\n", + " 'au bord de la mer gras',\n", + " \"n'était pas la place pour moi\",\n", + " 'je trouve la plus haute montagne',\n", + " 'mais la montagne était trop haute',\n", + " \"oh j'ai trouvé mon foyer\",\n", + " 'il faut plus me promener',\n", + " 'well i went down to the river',\n", + " 'but the river was dry',\n", + " 'i went down to the sea',\n", + " 'but it was not the place to be',\n", + " 'so i climbed the highest mountain',\n", + " ...]},\n", + " 'r-b': {'meta': {'train_data': ['...mais je ne veux pas marcher avec toi sur mon dos',\n", + " \"c'est difficile pour moi de respirer\",\n", + " 'tous les garçons sont comme les chiens',\n", + " 'et tous les chiens sont les mêmes',\n", + " \"je n'écoute plus ce que tu as à dire\",\n", + " 'bloody marie antoinette',\n", + " \"i'm just tryna build a marie and a vet\",\n", + " \"'cause all the boys bark like dogs\",\n", + " \"and the cats grabbin' palms\",\n", + " \"i'm just tryna find a fairy and a jet\",\n", + " 'bloody marie antoinette',\n", + " \"i'm just tryna build a marie and a vet\",\n", + " \"'cause all the boys bark like dogs\",\n", + " \"and the cats grabbin' palms\",\n", + " \"i'm just tryna find a fairy and a jet\",\n", + " 'bloody marie antoinette',\n", + " \"i'm just tryna build a marie and a vet\",\n", + " \"'cause all the boys bark like dogs\",\n", + " \"and the cats grabbin' palms\",\n", + " \"i'm just tryna find a fairy and a jet\",\n", + " 'had to call my momma off the weekend',\n", + " 'let me be with you',\n", + " 'let me be with you',\n", + " 'avec toi je me sens bien, oh je me sens moi',\n", + " 'je me réveille chaque matin en pensant à toi',\n", + " 'je veux bâtir un monde à nous, tu seras mon roi',\n", + " \"je remercie le ciel de m'avoir guidée jusqu'à toi\",\n", + " \"avec toi je me sens forte, je n'ai peur de rien\",\n", + " 'peu importe qui se mettra sur notre chemin',\n", + " \"c'est avec toi que je me vois grandir chaque jour\",\n", + " \"dans tes bras j'aime me blottir, et ça pour toujours\",\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " \"avec toi le temps qui passe ne m'effraie pas\",\n", + " 'il me suffit de fermer les yeux et tu es là',\n", + " 'avec toi je veux croire aux promesses',\n", + " 'que la vie me fait',\n", + " \"j'ai l'impression de te connaître\",\n", + " 'depuis des années',\n", + " \"je n'ai pas assez de mots pour te dire oh combien je t'aime\",\n", + " 'chaque mot que tu prononces sonne comme un poème',\n", + " 'comme un ange tombé du ciel, tu veilles sur moi',\n", + " 'je ne veux plus jamais, plus jamais, plus jamais, être loin de toi',\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " 'just you and me, love will always love forever',\n", + " \"just you and me, i just hope we'll stay together\",\n", + " 'just you and me, you my one and only lover',\n", + " 'just you and me, just you and me',\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " 'let me be with you, let me be with you',\n", + " 'let me be with you',\n", + " \"j'ai pas ma place dans tes nuits solitaires\",\n", + " 'tes sourires amères',\n", + " \"j'essaie de capter ton atmosphère\",\n", + " 'je retombe en arrière',\n", + " \"comme une ombre , une éclipse tu t'éloignes de moi\",\n", + " 'et mon âme se consume, je me noie',\n", + " 'je deviens fou',\n", + " 'and i feel like i can go on',\n", + " 'and i feel like it’s going strong',\n", + " 'and i wonder, and i wonder',\n", + " 'and i feel like i can go on',\n", + " 'and i feel like it’s going strong',\n", + " 'and i wonder, and i wonder',\n", + " \"j'ai pas trouvé mon chemin dans ton brouillard\",\n", + " \"et j'en crève encore\",\n", + " \"je t'ai cherchée si longtemps au hasard\",\n", + " 'que je perds le nord',\n", + " 'comme une histoire qui glisse, tu t’éloignes de nous',\n", + " \"tu me condamnes et j'assume mais j'avoue\",\n", + " 'je deviens fou',\n", + " 'and i feel like i can go on',\n", + " 'and i feel like it’s going strong',\n", + " 'and i wonder, and i wonder',\n", + " 'and i feel like i can go on',\n", + " 'and i feel like it’s going strong',\n", + " 'and i wonder, and i wonder',\n", + " \"comme une ombre , une éclipse tu t'éloignes de moi\",\n", + " 'et mon âme se consume, je me noie',\n", + " 'comme une histoire qui glisse, tu t’éloignes de nous',\n", + " \"tu me condamnes et j'assume mais j'avoue\",\n", + " 'je deviens fou',\n", + " 'and i feel like i can go on',\n", + " 'and i feel like it’s going strong',\n", + " 'and i wonder, je deviens fou, and i wonder',\n", + " 'and i feel like i can go on',\n", + " 'and i feel like it’s going strong',\n", + " 'and i wonder, je deviens fou, and i wonder',\n", + " 'and i feel like i can go on',\n", + " 'and i feel like it’s going strong',\n", + " 'and i wonder, and i wonder',\n", + " 'couplet 1 (youcef dark)',\n", + " 'yeah , makech salem alikoum majitch anaya nveyes',\n", + " 'manich jdid alikoum ki tchoufni sur tmeyez',\n", + " \"b'klam masmoum baroud, f'sma makech houdoud\",\n", + " \"b'akliya jdida chriki rassek yahbet fi my hood\",\n", + " 'maken hata kanoun men ghir hamou rabi',\n", + " 'maken hata protocole, ta3ref el monopole',\n", + " 'klami klam chari3 , ta3ref sira bera',\n", + " 'khatina kho lakhlaye3 yek machi rojlat el hamra',\n", + " 'manich number one bessah wlid rap',\n", + " 'tal3ouni mes principes, tay7atni kothrat las7ab',\n", + " 'so7ba el kemya sahbi, takhles fe cendrier',\n", + " 'soumtek fe soug rkhissa, kima les faux billet',\n", + " 'twaswissek khalih andek kamel malade mentale',\n", + " \"navigué toul nhar fe'lil n'viser les étoiles\",\n", + " 'zawali wlid trig mechni wlid général',\n", + " 'zankawi youcef dark à la malala yousafzai',\n", + " 'couplet 2 (youcef dark)',\n", + " 'yeah, makech la démocratie, kayen la demo-écraser',\n", + " 'makech el vide fi rassi mana3refch la diplomatie',\n", + " \"mani nhawes 3el'visa, nhawes ana 3la el-3iza\",\n", + " \"khali nza3ef denia ou nfare7 yema la'3ziza\",\n", + " \"yek lazem t'combaté kima torro fi la corrida\",\n", + " 'kbel ma tazdem contrôler bech tivité alik les dégâts',\n", + " 'kima la vida loca, ma vie kanet mahlouka',\n", + " 'khali ton avi andek ana natle3 douga douga',\n", + " 'takhmemi bezaf el fou9a, mana3yech kayen espoir',\n", + " 'kelma kima rssassa haba wahda fi bit nar',\n", + " 'koulma derna kalma jamra mekra fe les bâtards',\n", + " \"yel mas'oul y on a mare, mel hogra y on a mare\",\n", + " 'fe zanka nebka dima machikitch ana na7mel',\n", + " 'dhel capable haka nahbel nkamel sem yamchi fe dem',\n", + " \"b'zbel za3ma haka nakder hareb f9or wana mkhader\",\n", + " 'matatweder fel hem takhder ou tetkerker fiha bel mor',\n", + " 'couplet 3 (maglive)',\n", + " 'denia dhi welat mghabra, les jeunes mkhadra',\n", + " \"el'biban msakra, el'3aklia mwadra\",\n", + " \"m3abia zetla, el'blad hadi\",\n", + " 'makech li hab el khir gharka fi bir',\n", + " 'on cherche le bonheur on trouve le malheur',\n", + " 'we come in smooth, with hard decibels',\n", + " 'my guns will shoot',\n", + " 'they will shoot you down, shoot you down',\n", + " 'if you try to move, try to be deceiving',\n", + " 'my guns will shoot',\n", + " 'they will shoot you down, shoot you down',\n", + " 'pedro',\n", + " 'are you scared to walk alone, eu caminho contigo',\n", + " 'no, you can stand on your own, mas és o meu amigo',\n", + " 'that means i bleed when you do',\n", + " \"i care for my crew, if they ever come out and it's blu samu\",\n", + " 'hello hello, how do you do-oh-oh',\n", + " 'you better not come in here being blue',\n", + " 'acabo contigo',\n", + " 'isto é a minha família',\n", + " 'castiga',\n", + " 'quem não nos quer bem',\n", + " 'but i walk with kings',\n", + " 'we sting and buy back',\n", + " 'if you bring your ass',\n", + " 'to a cartier, with disrespect',\n", + " 'lay down bitch, you made your bet',\n", + " 'hi',\n", + " 'e lembra-se de todos, da blu e o sete sete',\n", + " 'todos',\n", + " 'suerte, la suerte no existe',\n", + " 'cambiar mi vida para estar el jefe',\n", + " 'mi corazon esta formando siete siete',\n", + " 'blu, morgan, rayan, félé flingue tu vas respecter',\n", + " \"depuis tout petit j'suis dans l'ciel\",\n", + " 'comme darrell, on veut tous la présidentielle',\n", + " \"j'marche droit, j'suis clean à part des bières et quelques bédos\",\n", + " \"mais plus j'grandis plus j'pense à faire du sale pour faire plus de zéros\",\n", + " \"j'lâcherai pas l’affaire j'continuerai à chanter\",\n", + " \"toutes les langues qu’on pourra réunir sur l'papier\",\n", + " \"j'lâcherai pas l’affaire j'continuerai à chanter\",\n", + " \"toutes les langues qu’on pourra réunir sur l'papier\",\n", + " 'a minha mãe me dizia',\n", + " 'quando era pequena',\n", + " 'até ao último dia',\n", + " 'se protege a família ah-ah-ah',\n", + " 'we come in smooth, with hard decibels',\n", + " 'my guns will shoot',\n", + " 'they will shoot you down, shoot you down',\n", + " 'if you try to move, try to be deceiving',\n", + " 'my guns will shoot',\n", + " 'they will shoot you down, shoot you down',\n", + " 'ouuuuh!',\n", + " 'el rey mago',\n", + " 'appelle wizkid',\n", + " 'chérie na ngai eh (go go !)',\n", + " 'chérie na ngai eh (go go !)',\n", + " 'chérie na ngai eh',\n", + " 'go chérie, go baby, allez maman',\n", + " 'le matin, la journée, même le soir',\n", + " 'la piscine, la voiture et avion tu kiffes ça',\n", + " \"mon bébé, t’inquiètes pas j'assure tes arrières\",\n", + " \"regarde-moi et dis-moi fally yak'o boire jus !\",\n", + " 'tala ngai na misu appelle-moi bébé',\n", + " 'wana ngai na komi zoba aaaaaah !',\n", + " 'when you give me love, i give you love too',\n", + " 'when you do me good, i do you good too',\n", + " 'when you hold me down, i hold you down too',\n", + " 'never leave me alone, never leave me alone (never)',\n", + " 'yo chérie na ngai (cherie na ngai eeh)',\n", + " 'yo bébé na ngai (cherie na ngai eeh)',\n", + " 'yo cherie na ngai (cherie na ngai eeh)',\n", + " 'oza bébé na ngai',\n", + " 'love you, love you, love you',\n", + " \"when you touch me girl i'm outta control\",\n", + " \"when you hold me girl i'm straight in the zone\",\n", + " \"when you kiss me gyal you killin' me so\",\n", + " \"when you leave me gyal i'm gone\",\n", + " \"love the way you dancin' no way\",\n", + " \"baby gyal don't leave me no way\",\n", + " 'gimme that love you today',\n", + " 'let you go got no way (starboy)',\n", + " 'when you give me love, i give you love too',\n", + " 'when you do me good, i do you good too',\n", + " 'when you hold me down, i hold you down too',\n", + " 'never leave me alone, never leave me alone (never)',\n", + " 'yo chérie na ngai (cherie na ngai eeh)',\n", + " 'yo bébé na ngai (cherie na ngai eeh)',\n", + " 'yo cherie na ngai (cherie na ngai eeh)',\n", + " 'oza bébé na ngai',\n", + " 'mon bébé est devenu maestro (mama na kufi eh)',\n", + " 'mon bébé est devenu yakuza eh (mama na kufi eh)',\n", + " 'my baby become maestro (mama na kufi eh)',\n", + " 'my baby become yakuza eh (mama na kufi eh)',\n", + " 'chérie a bongwani elingani oh nga eh (mama na kufi eh)',\n", + " 'a lemboli ngai na nzoto (mama na kufi eh)',\n", + " 'a komisi ngai piscine (mama na kufi eh)',\n", + " 'mon bébé est devenu maestro ooh',\n", + " 'when you give me love, i give you love too',\n", + " 'when you do me good, i do you good too',\n", + " 'when you hold me down, i hold you down too',\n", + " 'never leave me alone, never leave me alone (never)',\n", + " 'yo chérie na ngai (cherie na ngai eeh)',\n", + " 'yo bébé na ngai (cherie na ngai eeh)',\n", + " 'yo cherie na ngai (cherie na ngai eeh)',\n", + " 'oza bébé na ngai',\n", + " '(intro)',\n", + " 'we wanna sing a song for love',\n", + " 'for love',\n", + " 'it’s all about the real love !',\n", + " '(refrain)',\n", + " 'love is the meaning, oh just a feeling yeah',\n", + " 'everything and more',\n", + " 'your heart is perfect',\n", + " 'twisted and manic',\n", + " 'open up the door !',\n", + " 'love i know',\n", + " 'eager to survive',\n", + " 'all alone and where you go',\n", + " 'means to stay alive !',\n", + " '(couplet 1)',\n", + " \"même l'âme en peine, je ne baisse jamais les bras\",\n", + " \"car partager l'amour au final c'est ce qu'on fait là !\",\n", + " 'chacun sa part, même infime, en agissant autour de soi',\n", + " \"tous maîtres d'une part du monde donc responsables de son état\",\n", + " \"chaque battement d'ailes a ses conséquences\",\n", + " \"comme l'effet papillon toutes nos actions ont un sens\",\n", + " 'même un regard a son influence',\n", + " 'tout peut se provoquer même la moindre coïncidence',\n", + " 'love this life, open your heart!',\n", + " 'ouvrir son cœur, c’est peut être le but de notre existence ?',\n", + " 'free your mind, open your eyes !',\n", + " \"partir ailleurs c'est laisser à l'inconnu une chance\",\n", + " \"je veux croire en l'humain malgré nos déceptions\",\n", + " 'pas besoin de leurs bouquins pour juger nos actions',\n", + " \"ceux qui veulent faire le bien n'ont pas de distinctions\",\n", + " \"viens refaire ce refrain qu'ils comprennent bien la chanson!\",\n", + " '(refrain)',\n", + " 'love is the meaning',\n", + " 'or just a feeling',\n", + " 'everything and more',\n", + " 'your heart is perfect',\n", + " 'twisted and manic',\n", + " 'open up the door !',\n", + " 'love i know',\n", + " 'eager to survive',\n", + " 'all alone and where you go',\n", + " 'means to stay alive !',\n", + " '(couplet 2)',\n", + " 'see, the stars not far away',\n", + " 'start walking slowly, stop sailing in vain, like a boat in a mayday',\n", + " 'surrender your soul, life’s a mystery',\n", + " 'love let your heart loose, wild in the storm and shackles free !',\n", + " 'all in your head, it’s all in your head !',\n", + " 'you know, you are your own worst enemy',\n", + " 'you think you’re dead',\n", + " 'just smash up your meds !',\n", + " 'trust yourself to give up, finally',\n", + " 'you’re writing your story',\n", + " 'concealing so much pain, you’re on the run',\n", + " 'guilty and sorry',\n", + " 'don’t stop breathing, dancing, having fun !',\n", + " 'et tous ces sentiments qui restent nous accompagnent',\n", + " 'ce qu’il y a dans nos cœurs tu sais jamais ne fane',\n", + " 'fermés depuis longtemps il faut ouvrir les vannes',\n", + " 'et ne plus avoir peur du temps qui s’éloigne',\n", + " 'love this life, open your heart !',\n", + " 'feel the vibes, move pon dis freestyle !',\n", + " 'free your mind, open your eyes, feel the vibes !',\n", + " '(refrain)',\n", + " 'love is the meaning',\n", + " 'or just a feeling',\n", + " 'everything and more',\n", + " 'your heart is perfect',\n", + " 'twisted and manic',\n", + " 'open up the door !',\n", + " 'love i know',\n", + " 'eager to survive',\n", + " 'all alone and where you go',\n", + " 'means to stay alive !',\n", + " '(outro)',\n", + " 'we wanna sing a song for love (bis)',\n", + " 'it’s all about the real love ! (bis)',\n", + " 'love is the meaning, oh just a feeling yeah',\n", + " 'everything and more',\n", + " 'your heart is perfect',\n", + " 'twisted and manic',\n", + " 'open up the door !',\n", + " 'love i know',\n", + " 'eager to survive',\n", + " 'all alone and where you go',\n", + " 'go to stay alive !',\n", + " 'they say you better run',\n", + " 'now you know you better run',\n", + " 'running for this place',\n", + " 'searching for my home',\n", + " 'gonna leave my mother land',\n", + " 'finding my own space',\n", + " 'i believe in tomorrow',\n", + " 'what else can i say ?',\n", + " 'and my road is so narrow',\n", + " \"there's no run away\",\n", + " 'wake up in the morning',\n", + " 'must find a shelter everyday',\n", + " \"today i'm crying\",\n", + " 'but tomorow is another day',\n", + " 'i hope now',\n", + " 'my family will settle down',\n", + " 'i know now',\n", + " 'the road will be long',\n", + " 'tous citoyens du monde mais je repose la question :',\n", + " 'qui a posé ces frontières, qui prend les décisions ?',\n", + " \"qui légitime qu'un peuple soit accepté ou non ?\",\n", + " 'quelle échelle de valeur entre civilisations ?',\n", + " 'car laisser tous les siens pour fuir sa condition',\n", + " 'se perdre sur le chemin de ses rêves et ambitions',\n", + " 'risquer sa vie chaque pas pour garder sa direction',\n", + " \"reste le quotidien d'un homme quittant sa nation\",\n", + " 'les gens sont si étranges quand tu es étranger',\n", + " \"et le regard de l'autre est si souvent sans pitié !\",\n", + " 'sentir que tu déranges, personne ne veut se mélanger',\n", + " 'et à la moindre faute, se laisser submerger',\n", + " \"traverser l'océan, les tempêtes\",\n", + " \"le souffle du vent jamais ne s'arrête\",\n", + " \"refugees my people don't give up\",\n", + " 'struggle everyday',\n", + " \"can't you see, poor people raise up\",\n", + " 'find their way to a better day',\n", + " 'keeping strong they never give up, i say',\n", + " 'struggle everyday',\n", + " 'no matter what they say',\n", + " 'wake up in the morning',\n", + " 'must find a shelter everyday',\n", + " \"i'm crying\",\n", + " 'tomorow is another day',\n", + " 'i hope now',\n", + " 'my family will settle down',\n", + " 'i know now',\n", + " 'the road will be long']},\n", + " 'data': ['oh-ooh, oh, oh, oh, oh, oh-ooh, oh',\n", + " 'la semaine est longue',\n", + " 'oui le temps me manque',\n", + " 'je veux voir du monde',\n", + " \"l'adrénaline monte\",\n", + " \"j'ai l'impression d'être le chaînon manquant\",\n", + " 'il me faut caresser la liberté sans gants',\n", + " 'il me faut un dj monstrueux ce soir',\n", + " 'danser pour sortir le stress de mon corps',\n", + " \"on ne vit qu'une fois\",\n", + " \"c'est ce qu'on m'a dit\",\n", + " 'je veux donner de la voix',\n", + " \"la piste m'attire\",\n", + " 'un son nostalgique pour voyager hier',\n", + " \"t'as pas rêvé de planer jette moi la première pierre\",\n", + " \"j'appelle les filles on se comprend comme des jumelles\",\n", + " 'on est fraîches, folles et belles',\n", + " \"et les lumières nous douchent on s'éclate\",\n", + " 'je veux des \"oh\"',\n", + " 'je veux des \"hey\"',\n", + " 'je veux des',\n", + " 'avec mon groupe',\n", + " 'on fait le mystères',\n", + " 'on est les masters',\n", + " 'du step by step',\n", + " 'music is the odyssey (yeah)',\n", + " \"it's here for you for me\",\n", + " 'just listen from the magic key',\n", + " 'music is the odyssey (yeah)',\n", + " \"it's here for you for me\",\n", + " 'just listen, let your life be free',\n", + " 'ils sont la pour pecho',\n", + " 'on est là pour faire le show',\n", + " 'il commence à se faire tard',\n", + " 'il commence à faire chaud',\n", + " 'i text my man, i lost my mind',\n", + " \"hands up le dj sait ce qu'il fait\",\n", + " \"on s'est même retrouvé en face to face\",\n", + " 'au milieu de la piste les spot-lights me flashent',\n", + " 'je danse le mirroir me flatte',\n", + " 'le dj nous passe les bo de nos vies',\n", + " 'magic music, magic movie',\n", + " 'et nous on se repasse les films de nos vies',\n", + " 'magic music, magic movie',\n", + " 'music is the odyssey (yeah)',\n", + " \"it's here for you for me\",\n", + " 'just listen from the magic key',\n", + " 'music is the odyssey (yeah)',\n", + " \"it's here for you for me\",\n", + " 'just listen, let your life be free',\n", + " 'missing you, missing you, missing you, magic crew',\n", + " 'missing you, missing you, missing you, magic crew',\n", + " 'en musique on se déhanche',\n", + " \"on va vibrer jusqu'au 'bout tonight\",\n", + " \"oh-uh, oh, oh, oh, oh, oh (jusqu'au bout de la night)\",\n", + " 'en musique on se déhanche',\n", + " \"on va vibrer jusqu'au 'bout tonight\",\n", + " 'oh-uh, oh, oh, oh, oh, oh...',\n", + " 'music is the odyssey (yeah)',\n", + " \"it's here for you for me\",\n", + " 'just listen from the magic key',\n", + " 'music is the odyssey (yeah)',\n", + " \"it's here for you for me\",\n", + " 'just listen like your life be free',\n", + " 'en musique on se déhanche',\n", + " \"on va vibrer jusqu'au 'bout tonight\",\n", + " \"oh-uh, oh, oh, oh, oh, oh (jusqu'au bout de la night)\",\n", + " 'en musique on se déhanche',\n", + " \"on va vibrer jusqu'au 'bout tonight\",\n", + " 'oh-uh, oh, oh, oh, oh, oh...',\n", + " 'i was a liar, i gave into the fire',\n", + " \"i know i should've fought it\",\n", + " \"at least i'm being honest\",\n", + " \"feel like a failure 'cause i know that i failed you\",\n", + " \"i should've done you better\",\n", + " \"'cause you don't want a liar\",\n", + " 'and i know, and i know, and i know',\n", + " \"she gives you everything but boy, i couldn't give it to you\",\n", + " 'mon amour, mon amour, mon amour',\n", + " 'sans toi, plus rien ne brille, plus aucun rêve ne me tient debout',\n", + " 'so one last time',\n", + " 'i need to be the one who takes you home',\n", + " 'one more time',\n", + " \"i promise after that, i'll let you go\",\n", + " \"baby, i don't care if you got her in your heart\",\n", + " 'all i really care is you wake up in my arms',\n", + " 'one last time',\n", + " 'i need to be the one who takes you home',\n", + " 'tout seul je dérive',\n", + " 'si de ta peau tu me prives',\n", + " 'les minutes sont des années',\n", + " 'quand le cœur se laisse aller',\n", + " 'viens, on recommence',\n", + " \"on s'accorde une deuxième chance\",\n", + " 'rattrapons le temps gâché',\n", + " 'arrêtons de nous cacher',\n", + " 'mon amour, mon amour, mon amour',\n", + " \"j'pourrais changer d'avis mais tu resteras mon seul amour\",\n", + " 'and i know, and i know, and i know',\n", + " 'that you got everything, but i got nothing here without you, baby',\n", + " 'oui, attends-moi',\n", + " \"si tu t'enfuis, je suis juste un fantôme (juste un fantôme)\",\n", + " 'attends-moi',\n", + " 'sans toi, je suis sans vie, sans idéaux',\n", + " \"je sais qu'on ne peut jamais remonter le temps\",\n", + " \"pourquoi ne pas s'apprendre à s'aimer au présent ?\",\n", + " 'attends-moi',\n", + " \"si tu t'enfuis, je suis juste un fantôme\",\n", + " \"i know i should've fought it\",\n", + " \"at least i'm being honest, yeah...\",\n", + " 'but stay with me a minute',\n", + " \"i swear i'll make it worth it, yeah\",\n", + " \"'cause i don't wanna be without you (oh...)\",\n", + " 'so one last time',\n", + " 'i need to be the one who takes you home (who takes you home, babe!)',\n", + " 'one more time (oh yeah)',\n", + " \"i promise after that, i'll let you go (i promise that, i'll let you go)\",\n", + " \"baby, i don't care if you got her in your heart, babe\",\n", + " 'all i really care is you wake up in my arms, oh!',\n", + " 'one last time',\n", + " 'i need to be the one who takes you home, yeah (ooh!)',\n", + " 'attends-moi',\n", + " \"si tu t'enfuis, je suis juste un fantôme\",\n", + " \"sporting all your favorite brands you're deep into details\",\n", + " 'tell me just how deep is too deep',\n", + " 'sipping on your sweetest beverage let me levitate',\n", + " \"don't call me, don't call me now i'm\",\n", + " 'sleeping for another year',\n", + " 'learning how to concentrate',\n", + " 'working for another key',\n", + " 'running in circles',\n", + " \"don't think these days will return\",\n", + " 'romance and playgrounds left behind',\n", + " 'acid and purple',\n", + " \"don't think these days will return\",\n", + " 'romance and playgrounds left behind',\n", + " 'la lumière est entière (simplement)',\n", + " \"plus belle est l'entrée (simplement)\",\n", + " \"j'ai la chance d'avoir des amis comme collègues\",\n", + " \"thérapie d'hommes posés\",\n", + " \"c'est ma vie j’reconnais\",\n", + " \"j'ai pas toujours pris la voie sans problème\",\n", + " \"et dans l'élan on perd des renforts\",\n", + " 'pour gagner un peu de légèreté',\n", + " 'parfois il faudrait simplement se délester',\n", + " 'sans pour autant se lâcher ou se détester',\n", + " 'cette vie est plein de puterie',\n", + " 'faut la baiser pour éviter de la subir',\n", + " 'je m’apprêtais à me punir',\n", + " \"et puis j'ai rencontré ulysse (ulysse)\",\n", + " \"et puis j'ai rencontré une fille (yeah yeah)\",\n", + " 'running in circles',\n", + " \"don't think these things will return\",\n", + " 'romance and playgrounds left behind',\n", + " 'romance and playgrounds left behind',\n", + " 'running in circles (simplement)',\n", + " 'acid and purple (simplement)',\n", + " 'romance and playgrounds left behind',\n", + " 'romance and playgrounds left behind']},\n", + " 'rap': {'meta': {'train_data': ['yeah, come on',\n", + " 'listen',\n", + " 'willing to stay cool',\n", + " \"we're both single\",\n", + " 'sending out signals',\n", + " 'let me sink, han',\n", + " 'willing to stay cool',\n", + " 'we have the same goals',\n", + " \"we're both single\",\n", + " 'sending out signals',\n", + " 'let me sink, han',\n", + " 'step forward (come on, listen)',\n", + " 'step forward',\n", + " 'step forward',\n", + " 'step forward',\n", + " 'come through, come through (come on)',\n", + " 'come get wild and lose',\n", + " 'go and move the shoulders',\n", + " 'when i look at you',\n", + " 'come through, come through (come on)',\n", + " 'come get wild and lose',\n", + " 'go and move the shoulders',\n", + " 'when i look at you',\n", + " 'j’suis dans le club en mode : le boss tourne la tête, les femmes tournent la tête, le club tourne la tête',\n", + " \"dégaine trop puissante, t’as le mouv' d’avant\",\n", + " \"tu crois que c’est le mouv' du jour mais j’ai le mouv' d’après\",\n", + " 'je brille encore plus que les dents de gucci mane',\n", + " 'les photographes se bousculent, comme sur un pogo, dans un concert de di-meh',\n", + " 'tu veux encore ? danse sur le beat, danse sur le beat, hein',\n", + " 'danse sur le beat, danse sur le beat, hein',\n", + " 'j’suis sur le dancefloor et j’remue les fesses fort quand je danse sur le beat, danse sur le beat, hein',\n", + " 'fruit de mes efforts, fruit de la passion',\n", + " 'j’en ai mis un peu trop à ma façon',\n", + " 'et puisque j’étais complètement bourré',\n", + " 'est-ce qu’on peut dire que ça s’est pas passé ?',\n", + " 'come through, come through',\n", + " 'come get wild and lose',\n", + " 'go and move that shoulders',\n", + " 'when i look at you',\n", + " 'come through, come through',\n", + " 'come get wild and lose',\n", + " 'go and move that shoulders',\n", + " 'when i look at you',\n", + " 'look at you',\n", + " 'when i look at you (yeah, yeah, yeah)',\n", + " 'look at you',\n", + " 'go and move that shoulders',\n", + " 'when i look at you',\n", + " 'i dont even remember how we got here...',\n", + " \"j'pense même pas que j'ai éteint la tv avant de partir...\",\n", + " \"j'ai juste fait des kilomètres et des kilomètres\",\n", + " \"dans une kia hybride singing bitch don't kill my vibe\",\n", + " \"j'ai passé les douanes, made it down to tijuan\",\n", + " 'dans une piscine full of liquor looking for some peace of mind',\n", + " \"j'ai fait des kilomètres et des kilomètres\",\n", + " \"j'avais même pas de permis mais j'me suis permis moi même\",\n", + " \"j'ai passé les douanes only one thing in mind\",\n", + " \"j'veux même pas savoir où j'vais atterrir\",\n", + " 'i just gotta get the fuck out of here',\n", + " 'je repense à ma carrière les deux pieds dans le sable',\n", + " \"j'm'apprête à sell out le métropolis\",\n", + " \"tu croyais que ma carrière s'en allait go south\",\n", + " 'i landed in south by south-west',\n", + " \"on est partis en tournée, ç'a tourné dans chambre d’hôtel\",\n", + " \"3 jeunes blancs with attitude straight outta canton de l'est\",\n", + " 'i just woke up this morning sur cette fucking chanson thème',\n", + " 'we gotta get the fuck out of here',\n", + " \"j'ai juste fait des kilomètres et des kilomètres\",\n", + " \"dans une kia hybride singing bitch don't kill my vibe\",\n", + " \"j'ai passé les douanes, made it down to tijuan\",\n", + " 'dans une piscine full of liquor looking for some peace of mind',\n", + " \"(that's right)\",\n", + " \"i just woke up in la (that's right)\",\n", + " \"i just woke up in la (that's right)\",\n", + " \"i got to pick up the phone (that's right)\",\n", + " \"tell some people i'm gonna be late (that's right)\",\n", + " \"won't make it to none of your fake shit (that's right)\",\n", + " \"won't make it to none of your fake shit (that's right)\",\n", + " \"j'serai pas là si vous me cherchez (that's right)\",\n", + " \"won't make it to none of your fake shit (that's right)\",\n", + " \"(that's right)\",\n", + " 'baby',\n", + " \"please don't try to save me\",\n", + " \"mêle-toi donc tes business, me i'm feeling kind of wavy\",\n", + " 'appelle donc ta best girl, she might be my next girl',\n", + " \"attache-toi les cheveux comme j't'ai appris, check pas mes text girl\",\n", + " \"attache-toi les cheveux comme j't'ai appris, comme toute le reste girl\",\n", + " \"tu sais que je suis le best girl, grâce a moi t'es quelqu'un\",\n", + " \"j'suis toujours en tournée, toute le reste j'm'en calisse\",\n", + " \"i'm be on some futurist, nouvelle date sur ces clive shit\",\n", + " '(hold up)',\n", + " \"l'ennui c'est la conscience du temps\",\n", + " \"pis j'ai pas de temps a perdre\",\n", + " \"j'm'ennuie du temps perdu, c'est bien tout ce que je me rappelle\",\n", + " \"tant qu'on a la démence pour nous protéger, we good\",\n", + " \"mais j'ai peur de mes idées quand je suis seul sur la route\",\n", + " \"i'm feeling so alone, j'm'ennuie de ma maison\",\n", + " \"mon gérant au bout du fil and i'm screaming on the phone\",\n", + " 'i want my money, yeah',\n", + " 'i want my money, yeah',\n", + " 'colt 45 sur la white powder',\n", + " 'i got few girls dans la limousine',\n", + " 'toutes gelées sur la ketamine',\n", + " 'they love it when i rap about it, i know',\n", + " \"my life's a mess and i'm broke\",\n", + " \"chaque fin de semaine i'm on the road\",\n", + " 'these rappers queb are on the chokehold',\n", + " 'cause we the best',\n", + " \"and i'm so gone (that's right)\",\n", + " \"j'ai pu de conscience (that's right)\",\n", + " \"that's why im sippin' lean (that's right)\",\n", + " \"mixed with ecstasy (that's right)\",\n", + " \"so she came through j'ai dit (that's right)\",\n", + " \"elle voulait fuck pis j'ai dit (that's right)\",\n", + " \"keep it on the low yeah (that's right)\",\n", + " 'if you do it big i just might',\n", + " \"(that's right)\",\n", + " 'contrôle, contrôle',\n", + " 'contrôle, contrôle',\n", + " 'perte de contrôle totale',\n", + " 'tellement de choses ont changé',\n", + " \"now i'm on some shit that got a youngin' unconscious\",\n", + " 'fuckboy sur le campus',\n", + " \"yeah that's me, yeah that's me, bitch\",\n", + " 'ma vie a pris un tournant real triste',\n", + " \"no lie, mo'fucker on some real shit\",\n", + " 'toujours des histoires de cœur',\n", + " \"i don't care, man i'm cursed\",\n", + " \"pis j'ai ma main au-dessus du killswitch\",\n", + " \"all alone sur la plaza st-hubert, sippin' on pabst\",\n", + " 'reminiscing all about the good days',\n", + " \"fait que les bands c'tait le good pay\",\n", + " \"mon salaire de l'époque t'aurait laissé bouche bée\",\n", + " 'what you know about going out on tour pis ramener des gros dollars ?',\n", + " 'bonjour, au revoir, tôt ou tard',\n", + " 'ton tour viendra, faut y croire',\n", + " 'big bottles, rollies and audemars',\n", + " \"j'étais parti sur un faux départ\",\n", + " \"shit, y'a fallu j'lui dise que je l'aime plus\",\n", + " 'damn, she broke down après mon départ',\n", + " \"en voyant les photos de tout ce que j'ai perdu\",\n", + " \"while the whole world's falling appart\",\n", + " \"you see me moving on to the next broad, c'est wrong\",\n", + " \"mon âge a pu rapport, j'suis mort\",\n", + " \"la tolérance est infinie dans l'impasse\",\n", + " \"bienvenue dans ma perte de contrôle, j'suis out\",\n", + " 'contrôle, contrôle',\n", + " 'le motel, elvis roméo, morale, 2016, hey !',\n", + " \"j'ai pas fini ! morale, chut ! morale, voilà\",\n", + " 'tais-toi ! mais tais-toi toi..',\n", + " 'mais tais-toi aussi toi !',\n", + " \"mais qu'est-ce que c'est qu'ce bordel ?!\",\n", + " 'ta-t-t-ta-taaa',\n", + " \"moi aussi, j'sais faire de la trompette !\",\n", + " '*hurlements et aboiements de chiens*',\n", + " 'ah voilà des chiens maintenant, putain',\n", + " 'ta gueule le clebs !',\n", + " \"c'est quoi qu- d-, oh ! allez une grognasse maintenant !\",\n", + " \"*rires d'un large public*\",\n", + " \"ha-ha, ha-haha ouais, c'est pas bientôt fini ?!\",\n", + " '*deux femmes se disputent en anglais*',\n", + " 'what is ?! hey ! stop, stop talking in english !',\n", + " 'ce projet musical représente le bonheur et la gaieté, bravo !',\n", + " 'happy new year !',\n", + " 'hahahahahaha, ahahahaha !',\n", + " 'risk on bob, sick engineering',\n", + " 'pa announcement : ...',\n", + " 'oui, everything is controlled, sun',\n", + " 'tous les boutons sont opérationnels',\n", + " 'for final approach, kanye',\n", + " 'capitaine moustache',\n", + " 'docteur dubois',\n", + " 'nous pouvons décoller',\n", + " \"sampling from our world's lines and phrases\",\n", + " 'and s-, and sampling from the world size effective',\n", + " 'what else to say ?',\n", + " 'taxi !',\n", + " 'taxi ! en direction le 1630, taxi',\n", + " 'all aboard ! for real',\n", + " 'amenez-nous à linkebeek !',\n", + " 'oh, pardon',\n", + " 'where did you get that ?',\n", + " 'oh..',\n", + " 'ah..',\n", + " 'mais où est le strauss ? où est le strauss, jimmy ?',\n", + " \"je sais que c'est toi qui l'a caché, jimmy\",\n", + " \"*pleurs d'un enfant*\",\n", + " 'tobesektesheuneuvonevraktinigen',\n", + " \"that's an offer you can't refuse\",\n", + " 'my name is elvis',\n", + " \"i'm a, uh, rapper\",\n", + " \"don't worry\",\n", + " \"and i want to say, there's going to be ? in this\",\n", + " \"so be nice with ? and please don't forget to see the ?\",\n", + " 'thank you !',\n", + " \"ok, c'est disiz et nneka\",\n", + " \"c'est disiz et nneka\",\n", + " \"ok, c'est disiz qui arrive, c'est nneka et sérigne\",\n", + " \"nos prénoms sont 'cains-fri', ça joue pas les 'cains-ri'\",\n", + " \"de dakar à ouari', de hambourg à paris\",\n", + " 'hannibal et mata hari dans ta ville en charivari',\n", + " 'afrique-occident, la géométrie varie',\n", + " 'les puissants nous pétrissent et nous roulent dans la farine',\n", + " 'le gringo fixe les prix, le peuple paye le tarif',\n", + " \"sauf qu'à la place tahrir, ils ont shooté le chérif\",\n", + " \"l'afrique a une bonne étoile\",\n", + " 'je prends sa jeunesse dans sa trajectoire',\n", + " 'les ventres gargouillent mais on perd pas espoir',\n", + " \"cette vie, c'est la nuit, on a la shining star\",\n", + " 'oh shining star, will you smile down on me!',\n", + " 'oh, what you are',\n", + " 'when you look down on me ?',\n", + " 'beautiful star, do keep your eyes on me!',\n", + " 'oh,oh,oh,oh what you are',\n", + " 'when you smile down on me ?',\n", + " 'this time i great you, would you trust me',\n", + " 'pulls your heart strings, do you love me',\n", + " 'i appreciate you baby!',\n", + " 'and though you seem so far away',\n", + " 'you pursuit me i can feel you',\n", + " 'lighted well within my mind',\n", + " 'and i know you’re sometimes lonely',\n", + " 'oh, i wish that i could change it',\n", + " 'oh then i know you still got me',\n", + " 'and i pray my love will give you life',\n", + " 'to help you free to keep you smile',\n", + " 'you’re my shining star, to take my love and live!',\n", + " 'ma jolie, jolie, jolie, jolie, jolie petite étoile',\n", + " \"a toi je m'agrippe quand je tombe ou perds les pédales\",\n", + " 'depuis la position fœtale, mon cœur a trop de pétales',\n", + " \"ringard si tu veux mais, pour l'amour, j'suis intraitable !\",\n", + " 'oh shining star, please look down for me!',\n", + " 'oh, what you are ?',\n", + " 'when you look down at me',\n", + " 'with you, i, i feel love',\n", + " 'when you, place your light on me',\n", + " 'i feel warm !',\n", + " 'oh shining star, will you smile down on me!',\n", + " 'oh, what you are',\n", + " 'when you look down on me ?',\n", + " 'beautiful star, do keep your eyes on me!',\n", + " 'oh,oh,oh,oh what you are',\n", + " 'when you smile down on me ?',\n", + " 'this one for the crew',\n", + " 'this one, this one for the crew',\n", + " 'yeah, big respect to the break, motherfucker, man',\n", + " 'check the flow, man, check the flow',\n", + " \"check the flow pour l'outro\",\n", + " 'check the flow, man, check the flow',\n", + " 'check the flow, man, check the flow',\n", + " 'check the flow',\n", + " 'spéciale dédicace à tous les gens qui supportent le hip-hop',\n", + " 'spéciale touch à tous les groupes qui roulent au top en bas',\n", + " \"spéciale touch à l'underground parisien\",\n", + " 'et à tous les gens qui défoncent encore des trains',\n", + " 'check the flow, man, check the flow',\n", + " 'check the flow () karim',\n", + " 'check the flow, man, check the flow',\n", + " 'check the flow pour mon frère',\n", + " \"arsène, toujours dans l'arène\",\n", + " 'big up, big up aussi à mon homie, p.s.o',\n", + " 'check the flow, man, check the flow',\n", + " 'check the flow pour',\n", + " 'check the flow, , check the flow, solo',\n", + " 'check the flow, pour mon frère de-clau',\n", + " 'big up, big up pour la divine ludivine',\n", + " 'big up, big up pour mon homeboy thierry, yes',\n", + " \"un tas d'big up à monsieur et à mon frère\",\n", + " 'spéciale dédicace à , et get busy',\n", + " 'check the flow, man, check the flow',\n", + " 'check the flow, man, check the flow ()',\n", + " 'check the flow, big red, check the flow',\n", + " 'check the flow, , check the flow (rakim)',\n", + " \"check the flow pour l'upside psycho\",\n", + " 'the flow',\n", + " 'check the flow pour toutes les banlieues',\n", + " 'check the flow pour toutes les banlieues',\n", + " 'check the flow pour toutes les banlieues',\n", + " 'check the flow pour toutes les banlieues',\n", + " 'check the flow',\n", + " 'yeah, yeah',\n", + " \"je sais, j'étais juste un musicien parmi tant d'autres\",\n", + " \"pis t'étais juste une muse, mais c't'assez pour un tango\",\n", + " \"comme des poissons dans l'eau quand on allait down low\",\n", + " \"manteaux d'armée assortis, on peut sortir commando\",\n", + " 'break up in a sec sans même break a sweat',\n", + " 'wake up, café écossais, make up sex',\n", + " 'nos humeurs changeaient comme notre trame sonore',\n", + " 'ipod en mode shuffle',\n", + " 'bone thugs-n-harmonium',\n", + " 'a beach house by the frank ocean',\n", + " 'nos esprits dérivent pendant que les joints se consument',\n", + " 'binge fucking and chain smoking',\n", + " \"j'fais pu de drogues de même ces jours-ci\",\n", + " \"c'est pu comme avant\",\n", + " \"j'avais les rêves de visionnaire\",\n", + " \"j'faisais les cauchemars d'une vie honnête\",\n", + " \"tu m'as dit: «tu peux pas rester pour me voir foutre ma vie en l'air»\",\n", + " 'but i told you we would be alright, right',\n", + " \"i guess t'as raccroché trop vite\",\n", + " \"maintenant tu m'appelles sur mon new phone\",\n", + " 'looking for the old me',\n", + " \"maintenant tu m'appelles sur mon new phone\",\n", + " 'looking for the old me',\n", + " \"maintenant que t'as compris que j'ai move on\",\n", + " \"c'est là que t'essayes de mettre tes moves on me\",\n", + " \"maintenant tu m'appelles sur mon new phone\",\n", + " 'looking for the old me',\n", + " 'mais tu vas chercher longtemps',\n", + " 'garde l’œil ouvert, on va pull up en subaru',\n", + " 'à nous la rue, pas de carrés rouges',\n", + " \"on est sur le cas des avocats parce qu'on veut les k de kamaro\",\n", + " \"donne-moi ma cut, donne-moi l'alcool\",\n", + " 'ça prend pas la tête à papa roach',\n", + " 'my music was born in america',\n", + " \"baby, that's rock 'n roll\",\n", + " \"uh, mon étoile, je l'ai gagnée\",\n", + " 'si je dois recommencer, je répéterai mes exploits comme mike jones',\n", + " 'on pédale, on pédale, on pédale, on veut',\n", + " 'que des médailles et des maillots jaunes',\n", + " \"mais qu'est-ce que j'entends?\",\n", + " \"que y'a des rappeurs qui s'inventent des vies tout droit sortis des asiles\",\n", + " \"qu'est-ce que j'entends? c'est mon petit doigt qui me dit que j'suis à deux doigts de sortir le troisième\",\n", + " 'que des hommes de parole dans ma clique',\n", + " 'aucun rappeur, on est quinze sur la scène',\n", + " 'coup de théâtre, aucun acteur',\n", + " 'on arrive dans ta ville',\n", + " \"on fait tout sauter en trois quarts d'heure\",\n", + " 'même pas défait mes valises',\n", + " \"j'refais ma vie à chaque 24 heures, tour life\",\n", + " \"une main vers le ciel, on a fait le serment d'honneur\",\n", + " 'la vérité, que la vérité, si on ment, on meurt, ah',\n", + " 'promis sur mes amis, juré sur mes enfants terribles',\n", + " \"bon dieu voit, sur ma mère, sur l'amérique\",\n", + " 'man i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " \"tout c'qu'on fait, c'est officiel (yeah)\",\n", + " 'mon salon est officiel (yeah)',\n", + " \"mon jacket, c't'un officiel (yeah)\",\n", + " \"ta copine est pas si belle (but i'd still hit that tho!)\",\n", + " \"i pull up au fme (sup')\",\n", + " \"tout' gelé sur l'éphédrine (what's up)\",\n", + " \"tu nous vois, t'es comme : « fml »\",\n", + " 'ta carrière sera éphémère (aaah)',\n", + " 'ah! minimum trois milles par show',\n", + " \"j'en fais-tu du bread à ton avis, ben oui!\",\n", + " \"sex, drugs and rock 'n' roll\",\n", + " 'le pocket swollen à cause du rap queb, oui',\n", + " 'had this girl up in the condo',\n", + " 'je lui ai mis dans le wrong hole',\n", + " \"reconduit sa petite fille au camp d'jour\",\n", + " 'fuck boy, lary kidd, ben oui!',\n", + " 'shout-out à big jo la légende, on est là, mon gars, dans des édifices',\n", + " 'les gars font leur bitch depuis quelques temps. who knows? i just might be féministe',\n", + " \"à part mon avance de dix milles que j'ai blow, je n'ai vu aucun bénéfice\",\n", + " \"shout-out au p'tit patnais rowjay, mais surtout shout-out au boy médéric\",\n", + " 'who the fuck wants it right now? que tous mes real ones se manifestent',\n", + " 'regarde-moi maman, j’suis à prague en train de chiller avec des ballerines',\n", + " \"so j'pull up dans les 5 à 7, high as fuck parce j'ai rien à perdre\",\n", + " 'mes goons faisaient des home invasions, sylvain cossette (hahaha)',\n", + " \"une main vers le ciel, on a fait le serment d'honneur\",\n", + " 'la vérité, que la vérité, si on ment, on meurt, ah',\n", + " 'promis sur mes amis, juré sur mes enfants terribles',\n", + " \"bon dieu voit, sur ma mère, sur l'amérique\",\n", + " 'man i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " 'garde l’œil ouvert m’en va pull up en bugatti (skrr, skrr)',\n", + " 'dans mes bons habits comme un sultan d’abu dhabi',\n", + " 'fais tourner les têtes ébahis when they look at me (look at me now)',\n", + " 'i’ll be comin’ straight up pour le milk and honey',\n", + " \"and i'm rockin' them glasses comme buddy holly\",\n", + " 'when i pull up, pull up j’donne un torticoli (aw!)',\n", + " 'promis, promis, sur la tête de mommy',\n", + " 'si j’ai un doubt ‘bout it, j’d’mande au man above me',\n", + " 'and i’m thinking imma go with that',\n", + " 'm’a prendre un lease sur l’avant-garde',\n", + " 'oùssé qu’on s’en va, ça nous r’garde',\n", + " 'so shut the fuck up pis er’garde',\n", + " 'look at me now (look at me)',\n", + " '20 y est pu like he used to',\n", + " 'now they clownin’, comme mr. bean en mini cooper',\n", + " 'pendant qu’moi j’finis dans l’whip d’une jeune virginie coosa',\n", + " 'fais comme martin lawrence, woosah-woosah',\n", + " 'to check imma do so',\n", + " 'dead o in town, sont comme où ça, où ça?',\n", + " 'les deux yeux ouverts comme le hibou du hooters',\n", + " 'we sippin’ only sur le grey goose et mousseux, nah!',\n", + " 'j’pop jamais d’champagne sans t’éclabousser',\n", + " 'bitch, i’m no whale, j’viens pas d’tadoussac',\n", + " 'you suck it down, yeah baby that’s what’s up',\n", + " 'you running in circles dans l’carrousel',\n", + " 'yo! c’est confirmé, we loopin’ and loopin’ d’un circuit fermé',\n", + " 'on va frapper la route, faire le tour du québec',\n", + " 'i mean, combien d’loops avant d’être riches et célèbres?',\n", + " \"fa' que on fait d’la vitesse, baby c’t’un euphémisme\",\n", + " 'j’sur les amphétamines avec philippe fehmiu',\n", + " 'imma keep it poppin’, fuck up le showb’iness',\n", + " 'imma keep it hundred, vas-y, fais-le, fais mieux',\n", + " \"peek-a-boo, c'est moi le mc au parcours impeccable\",\n", + " \"shout-out à adam, i'm smokin' on medical (on medical weed now)\",\n", + " \"si t'es pas down, tu peux suck sur mon edible\",\n", + " 'arrogant miracle boy in america',\n", + " '500 chevaux dans ma chevy, go merry-go-round (round)',\n", + " 'man, i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " 'que des hommes de parole dans ma clique',\n", + " 'man i swear it on my life',\n", + " 'on my life, on my life',\n", + " 'man i swear it',\n", + " 'hey man, do you think you could lend me a bit of cash?',\n", + " \"12 for two bottles of red wine 10 for a ben's of hash\",\n", + " 'you could buy some k and we could make it through the night',\n", + " 'something in my head has made me scared of what’s inside',\n", + " \"i've had an awful day, i'm feeling sorry for myself\",\n", + " \"don’t tell me to stop, i didn't come to you for help\",\n", + " 'just to get a loan to buy myself some wine and beer',\n", + " 'fill this hole of mine and let my troubles disappear',\n", + " \"belle bouteille, viens ici que j'te caresse\",\n", + " \"tu me plais et j'ai un peu de monnaie donc allons à la caisse\",\n", + " 'prends ma main, on va se balader et dépêche toi ça presse',\n", + " 'laisse-moi reposer mes lèvres, faut se saouler en express',\n", + " \"j'ai un boulot qui me pèse, laisse moi apaiser mes peines\",\n", + " 'on peut appeler tes potes',\n", + " 'moretti pas heineken',\n", + " 'plus de cœur entre mes côtes',\n", + " 'comprends-tu petite en verre, tout le rouge que tu contiens laisse le couler dans mes veines...',\n", + " '(le chat est parti dansant dans la rue',\n", + " \"mais plus de battement de cœur on s'en tape de ton châtiment)\",\n", + " 'et à la main une belle ‘teille de vin',\n", + " 'tu me gardes maladroit',\n", + " 'et je te garderai frais sous les ombres noires des bâtiments',\n", + " \"on me dit que j'abuse\",\n", + " 'je joue albert camus',\n", + " \"je veux des femmes nues, de la bouffe, un peu d'art\",\n", + " 'et je battis mon chemin',\n", + " 'c’est pour ça que j’suis puni',\n", + " 'entre collines faites de vin',\n", + " \"je dirais que j'suis bien loti\",\n", + " 'motor city hella class in the night',\n", + " 'heavy hand serves nicely when the pelican arrives',\n", + " 'half-ass lights act as candles for a blanche',\n", + " 'when desire for the use of double-bedding comes to mind',\n", + " 'swig a bit of house, it embellishes the night',\n", + " 'let the liquor in the wine be the flicker in the glass frame',\n", + " 'wizard took the pulse that resided in my cage',\n", + " 'saino’s £4,99 be the red flow in my veins',\n", + " \"life in motor city kinda pricey, but if you're feeling lucky\",\n", + " \"there's a couple mecca bingos\",\n", + " 'win a bit of copper dough',\n", + " 'spend it on a bottle go',\n", + " \"linger by the wide-eyed in need of a lighter (guy comes up n' says)\",\n", + " '\"i’m in need of some guidance, why would a guy so mighty delight in my suffering, what a shoddy kingdom',\n", + " 'driven by my wille zum leben;',\n", + " 'i\\'m sad and i\\'m lonely again\"',\n", + " \"i said: hey man! (quoi qu'est ce qu'il y a ?) take a walk on the wild side (qu'est ce qu'il veut ce bouffon, tu veux une claque ou quoi ?)\",\n", + " \"no. hey man, (quoi je te jure, j'vais te gifler) take a walk on the wild side (arrête avec ton wild side de merde là)\",\n", + " \"no, and chill man, hey man, (hey man, ouais j'ai compris) take a walk on the wild side. (aaaah! ah oui)\",\n", + " 'there you go',\n", + " 'hey man, take a walk on the wild side. (and the moon man says…)',\n", + " 'hey, man do you think you could lend me a bit of cash?',\n", + " \"12 for two bottles of red wine 10 for a ben's of hash\",\n", + " 'you could buy some k and we could make it through the night',\n", + " \"something in my head has made me scared of what's inside\",\n", + " \"i've had an awful day, i'm feeling sorry for myself\",\n", + " \"don't tell me to stop i didn't come to you for help\",\n", + " 'just to get a loan to buy myself some wine and beer',\n", + " 'fill this hole of mine and let my troubles disappear',\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " \"love with no meaning, don't want it\",\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " 'love without feeling',\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " 'love with no meaning',\n", + " 'woh ooh oh ooh woy, woy',\n", + " \"c'qui t'intéresse, c'est son poste\",\n", + " \"et tout c'que celui-ci t'offre\",\n", + " \"pour ainsi dire, tout c'que tu désires\",\n", + " \"elle pense qu'elle a trouvé son autre\",\n", + " 'celui qui lui fera des gosses',\n", + " \"pour ainsi dire, l'homme de sa vie\",\n", + " 'mais pour lui il en est tout autrement',\n", + " \"c'est pas de son cœur mais de son compte dont il est dépendant\",\n", + " \"son rôle de prince charmant bwoy, ça n'a duré qu'un temps\",\n", + " \"ses seules motivations, c'est les voyages et l'argent\",\n", + " 'we talk about love',\n", + " \"en vérité, elle sait qu'ça t'intéresse pas\",\n", + " 'toi tu cherches autre chose',\n", + " \"love you never give and that's a natural fact\",\n", + " 'so tu parles lo-ooo-ove',\n", + " \"this bring to see you're not interested in that\",\n", + " 'searching for love',\n", + " 'elle cherche avec toi en vain mais ne trouve pas',\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " 'love without meaning',\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " 'love with no feeling',\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " 'love with no meaning',\n", + " 'woh ooh oh ooh woy, woy',\n", + " \"xxx you're makin' love\",\n", + " \"you're just fakin' love\",\n", + " \"your love is not real, it's just a tainted love\",\n", + " 'you do anything to get what you want',\n", + " \"to love her today and tomorrow you're gone\",\n", + " \"if that's the game you play\",\n", + " 'this gonna conovking you one day, hey',\n", + " \"you know you're just a fake\",\n", + " 'all you give to her is your xxx',\n", + " 'tu parles lo-ove',\n", + " \"this bring to see you're not interested in that\",\n", + " 'researching for love',\n", + " 'elle cherche avec toi en vain mais ne trouve pas',\n", + " 'you talk about love',\n", + " \"en vérité, elle sait qu'ça t'intéresse pas\",\n", + " 'toi tu cherches autre cho-o-ose',\n", + " \"love you never give and that's a natural fact\",\n", + " \"boy, elle t'a toujours donné d'l'amour\",\n", + " 'les beaux tout comme les mauvais jours',\n", + " 'certes en doutant, sans jamais vraiment faillir',\n", + " 'elle a gardé confiance en toi',\n", + " 'malgré tes faux pas',\n", + " 'en parlant de toi elle garde toujours le sourire',\n", + " 'disrespecting your mama',\n", + " 'your style and your fellow',\n", + " \"now you're in big trouble, for her you were xxx\",\n", + " 'with all the things you do',\n", + " 'mama still there for you',\n", + " 'and you talk about love',\n", + " \"en vérité, elle sait qu'ça t'intéresse pas\",\n", + " 'toi tu cherches autre cho-o-ose',\n", + " \"with love you never give and that's a natural fact\",\n", + " 'so, tu parles lo-ooo-ove',\n", + " 'this bring to see not interested in that',\n", + " \"and you're searching for love\",\n", + " 'elle cherche avec toi en vain mais ne trouve pas',\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " 'love with no meaning',\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " 'love without feeling',\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " 'love with no meaning',\n", + " 'woh ooh oh ooh woy, woy',\n", + " 'love with no feeling',\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " 'talk about love',\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " 'love with no meaning',\n", + " 'woh ooh oh ooh oh, ooh yeah',\n", + " 'talk about love',\n", + " 'woh ooh oh ooh woy, woy',\n", + " \"oh j'ai connu l'amour fou\",\n", + " 'oh oh oh oh',\n", + " 'talalalalalala',\n", + " 'i never saw it coming anyway you lied',\n", + " 'cause you never believed any word that you said',\n", + " 'and i walked all day trying to find out',\n", + " 'what this is all about',\n", + " 'yeah, you say that you want to know',\n", + " 'tu as dit, tu as dit, tu as dit',\n", + " 'you want to get better',\n", + " \"tu veux que j'sois l'meilleur, tu veux que j'sois l'meilleur\",\n", + " 'so come here if you really want to see, yeah',\n", + " 'what is wrong with me',\n", + " \"à c'qui p' entre nous deux, ça allait l'faire\",\n", + " 'it’s the prime of your life, it’s the prime of my life',\n", + " \"c'était mieux avant mais j'me porte bien mieux maintenant, ouais\",\n", + " 'it’s the prime of your life, she was the pride of my life',\n", + " \"c'était mieux avant mais j'me porte bien mieux maintenant, ouais\",\n", + " \"ensemble, on a fait des choses, j'aimais bien quand tu filais en douce\",\n", + " \"y a pas d'problème, y a plusieurs causes, moi j'étais là quoi qu'il en coûte\",\n", + " \"toujours en pleine symbiose, on s'donnait du sexe intense\",\n", + " \"j'le fais comme un virtuose, quand elle crie, ça fait mes ambiances\",\n", + " 'je nous voyais faire du biff dans la ville ensemble, on voulait devenir une entité',\n", + " 'oh, une entité, une entité',\n", + " 'it’s the prime of your life, it’s the prime of my life',\n", + " \"c'était mieux avant mais j'me porte bien mieux maintenant, ouais\",\n", + " 'it’s the prime of your life, she was the pride of my life',\n", + " \"c'était mieux avant mais j'me porte bien mieux maintenant, ouais\",\n", + " 'it’s the prime of your life, it’s the prime of my life',\n", + " \"j'ai connu l'amour fou, j'ai connu l'amour fou\",\n", + " 'it’s the prime of your life, she was the pride of my life',\n", + " 'j’ai connu l’amour fou, j’ai connu l’amour fou',\n", + " 'j’ai connu l’amour fou, j’ai connu l’amour fou',\n", + " \"j’ai connu l'amour fou\",\n", + " 'it’s the prime of your life',\n", + " 'it’s the prime of your life, it’s the prime of my life',\n", + " \"j'ai connu l'amour fou, j'ai connu l'amour fou\",\n", + " 'it’s the prime of your life, she was the pride of my life',\n", + " \"c'était mieux avant mais j'me porte bien mieux maintenant ouais\",\n", + " \"et j'ai connu l'amour fou oh\",\n", + " 'it’s the prime of your life, it’s the prime of my life',\n", + " \"et j'ai connu l'amour fou oh, j’ai connu l'amour fou\",\n", + " 'it’s the prime of your life, she was the pride of my life',\n", + " '(mac keller/eyst)',\n", + " 'apolloïd, yeah, yeah, apolloïd',\n", + " 'here it comes, yeah',\n", + " 'back in the desert, (ouh), homie, yo',\n", + " '(eyst)',\n", + " 'ooh, in our times',\n", + " \"we're givin'up our lives\",\n", + " 'still when the sun rise',\n", + " '(on the sahara)',\n", + " 'ooh, we fire rhymes',\n", + " 'below the giant thrives',\n", + " 'we watch as love dies',\n", + " '(to the sahara)',\n", + " '(eyst)',\n", + " \"ooh, 'round the world\",\n", + " \"i've been wanderin' in search\",\n", + " \"of a peace, but i'm the first\",\n", + " \"'cause i want us to learn\",\n", + " 'if the govеrnments observe, that',\n", + " 'with a bit of work (work)',\n", + " \"and if thеy ain't sold, (huh)\",\n", + " \"we'll erase the thirst, (yeah)\",\n", + " 'for power and gold',\n", + " 'take this shit from the worse',\n", + " \"'cause, we in the worst situation\",\n", + " '\\'till it changes let\\'s be patient\"',\n", + " 'and watch money eat our passions?',\n", + " 'guess, there must be a reason',\n", + " \"why we're fighting for the easin'\",\n", + " 'of getting through all the seasons, man',\n", + " 'in these bloody streets',\n", + " \"everywhere there's misery\",\n", + " \"people don't give shits\",\n", + " 'stay away from these areas',\n", + " 'with the fear of being beaten, stolen, (stolen)',\n", + " \"criminals 'till the beat is ballin' (ballin')\",\n", + " 'media reports',\n", + " 'satan gets the wizardry',\n", + " 'funding being short',\n", + " \"it's always a shit story\",\n", + " \"now we forced to stayin' hidden, fallin', (feelin' for them)\",\n", + " \"giving all to get the children holdin', (and love 'em)\",\n", + " '(mac keller)',\n", + " \"j'me sens seul et vois mes semblables maigrir, (maigrir)\",\n", + " \"au fond n'est c'pas une excuse pour souffrir et utiliser la douleur pour s'aigrir\",\n", + " \"je marche et je erre jusqu'à n'plus sentir mes nerfs , (nerfs)\",\n", + " 'dans la foule je me perd en faisant tout pour leur plaire , (plaire)',\n", + " 'je serai donc bien le dernier grain du sablier',\n", + " \"je me noierai dans l'océan de sable pour oublier\",\n", + " 'que la vie est une chienne qui te bouffe sans tablier',\n", + " \"que le diable peut être en prada sans pour autant s'habiller , (s'habiller)\",\n", + " \"j'suis né l'cordon au cou la nature m'a laissé vivre\",\n", + " \"j'espère n'pas agoniser dans un ravin un peu ivre\",\n", + " \"j'suis mort je n'fais que rapper ma vie passée\",\n", + " 'mais rapper ne fait que raviver et ressasser de vieux souvenirs entassés , (entassés)',\n", + " \"j'incarne ce qu'ils craignent : un jeune nègre aigre\",\n", + " 'écourtant leur règne et restant toute sa vie intègre',\n", + " \"plus d'romance littéraire, c'est la délinquance urbaine\",\n", + " \"j'cherche mon itinéraire, et ma douleur est ébène\",\n", + " 'tempête de sable ce monde est opaque et peu aimable',\n", + " \"ici pas de fable de toute la misère je m'accable\",\n", + " 'univers macabre, sahara inarretable',\n", + " \"l'environnement s'délabre mais les grains sont intouchables\",\n", + " 'comme un peul ou un touareg',\n", + " 'la nature dicte mes règles',\n", + " 'marron est le nèg',\n", + " 'noir et noble comme un aigle',\n", + " 'germons comme le seigle',\n", + " \"c'monde est rempli d'easter egg\",\n", + " 'prends ce que je lègue',\n", + " \"j'suis plus ce garçon espiègle\",\n", + " '(eyst)',\n", + " 'ooh, in our times',\n", + " \"we're givin'up our lives\",\n", + " 'still when the sun rise',\n", + " '(on the sahara)',\n", + " 'ooh, we fire rhymes',\n", + " 'below the giant thrives',\n", + " 'we watch as love dies',\n", + " '(to the sahara)',\n", + " 'yeah, in our days',\n", + " 'we gave up our ways',\n", + " 'now as the sun sets',\n", + " '(on the sahara)',\n", + " \"no, we're silent, right\",\n", + " \"we fed the giant's bite\",\n", + " 'helpless as love died',\n", + " '(mac keller/eyst)',\n", + " 'eh, eh, eh, eh',\n", + " '(on the sahara), hmm',\n", + " 'eh, eh, eh, eh',\n", + " '(to the sahara), hmm',\n", + " 'mets ça sur le vire de bord',\n", + " 'un peu psylo dans mon cinéma',\n", + " 'dans mon exhaust de char y’a des ministres morts',\n", + " 'dans ma poubelle j’bump du biggie smalls',\n", + " \"we there obligés d'get le dough\",\n", + " 'mais laissez faire les jeunes aujourd’hui make it on their own',\n", + " 'from the ceiling to the floor stacké comme du gold biche',\n", + " 'they say they livin’ by the code pis y get ce mullah',\n", + " \"we there obligés d'get le dough\",\n", + " 'mais laissez faire les jeunes aujourd’hui make it on their own',\n", + " 'from the ceiling to the floor stacké comme du gold biche',\n", + " 'they say they livin’ by the code pis y get ce mullah',\n", + " 'qu’est-ce tu veux que j’t’apporte j’veux dire',\n", + " 'on a tous une idée propre à nous de c’qu’on veut qu’y arrive devant ‘a porte',\n", + " 'pis chu pas là pour être meilleur ou pire que c’qu’on rêve ou soupire quand c’est',\n", + " 'bof',\n", + " 'but i think i love you so much',\n", + " 'j’serais capable d’endurer les pires souffrances su’l globe',\n", + " \"juste pour être devant toi pis être là à me d’mander what's love\",\n", + " 'our love is no pain we love love love love',\n", + " 'our love is no pain we love love love love',\n", + " \"i said this feeling's so good that it can't be the last time\",\n", + " \"i rhyme jumping off like i'm hopping a rail line\",\n", + " \"cause i'm comin' up for the paper with that\",\n", + " 'here to the royalties on this track',\n", + " 'milk coffee and the sugar check the blind',\n", + " \"these captains on the side still thinkin' i slip\",\n", + " \"i see the rhyme's fortified\",\n", + " \"haters they try to throw a wrench in my closet there's no stopping my strive\",\n", + " \"cause i'm, down to ride 'til the cops shut us down\",\n", + " 'and when they show, they better chase your boy out of town cause',\n", + " \"i'm dedicated to this rap shit\",\n", + " 'similar to jay when they wanna pull the gat quick',\n", + " \"you can get hit with the rhythm that the sound break 'em down\",\n", + " \"cause they didn't say nothing when the beat start to pound\",\n", + " \"yo this ain't the first time that i'm stepping on the mic\",\n", + " 'if you breakers gonna drop, then you better drop it wise',\n", + " 'so what you want, yo?',\n", + " 'un peu de cha-cha-cha',\n", + " 'and what you want, yo?',\n", + " 'un peu de sucre de cachaça',\n", + " \"i said this ain't my first time\",\n", + " \"and this ain't my first rhyme\",\n", + " \"c'est du hip hop on donne ça\",\n", + " 'version makossa',\n", + " \"c'est quoi ton style, man?\",\n", + " 'i want some hip-hop shit',\n", + " \"mais qu'est ce qu'tu veux man?\",\n", + " 'i want some hip-hop shit',\n", + " \"si c'est vrai que t'assailles le beat\",\n", + " \"j'te passe du papier, un bic\",\n", + " 'you know coffee and the sugar cats rap every week',\n", + " 'paris première, la ville de lumière',\n", + " 'on marque le teint cireux sous un réverbère',\n", + " 'je veux parler pour vous faire taire',\n", + " \"dans cette pollution je rappe : une bouffée d'air\",\n", + " 'je fédère autour de notes éphémères',\n", + " 'de quelques accords binaires ou ternaires',\n", + " 'la terre mère à chaque fin de mes vers',\n", + " 'je suis soleil, vous êtes mon univers',\n", + " 'un flow bobo pour les gosses de prolétaires',\n", + " 'dire les valeurs du hip-hop avant que je les perde',\n", + " \"avant qu'on m'enterre entre le cap et le caire\",\n", + " \"entre la cape et l'épée je suis le\",\n", + " 'la première sera surement la dernière',\n", + " 'paris première sur une ambiance printanière',\n", + " 'beat assaillant, milk coffee sugar',\n", + " 'la première fois que tu goûtes le soda',\n", + " 'so what you want, yo?',\n", + " 'un peu de cha-cha-cha',\n", + " 'and what you want, yo?',\n", + " 'un peu de sucre de cachaça',\n", + " \"i said this ain't my first time\",\n", + " \"and this ain't my first rhyme\",\n", + " \"c'est du hip hop on donne ça\",\n", + " 'version makossa',\n", + " \"c'est quoi ton style, man?\",\n", + " 'i want some hip-hop shit',\n", + " \"mais qu'est ce qu'tu veux man?\",\n", + " 'i want some hip-hop shit',\n", + " \"si c'est vrai que t'assailles le beat\",\n", + " \"j'te passe du papier, un bic\",\n", + " 'you know coffee and the sugar cats rap every week',\n", + " 'les premiers mots pour dire \"c\\'est la guerre\" c\\'est l\\'instru',\n", + " \"l'encre sur l'écume, le sucre moisi et forcément l'or sans l'écu\",\n", + " \"la mort dans l'vécu, la première larme avec son lot de consolation\",\n", + " \"mais j'vends pas ma tristesse comme un produit d'consommation\",\n", + " 'mon premier sourire comme un texte pour me révolter',\n", + " 'récolter le vote des sans-voix laissés sur le bas coté',\n", + " 'au rez des chaussées, au gré des fossés',\n", + " 'entre va-nu-pieds et mocassins weston à déchausser',\n", + " 'mon premier shoot, mes dribbles, écrivain du ballon rond',\n", + " \"j'voulais m'amuser dans un sport, j'y ai trouvé une profession\",\n", + " 'une hiérarchie, mes premiers doutes, déboires de mes premières routes',\n", + " \"j'me suis craché sur de grandes joutes... verbales\",\n", + " 'mes premiers clashs, ma première femme, mon premier show',\n", + " 'picaflore mon premier album, mon premier feat',\n", + " 'atlanta, belleville dans un salon',\n", + " \"a recevoir l'inspiration un peu comme une première chanson\",\n", + " 'so what you want, yo?',\n", + " 'un peu de cha-cha-cha',\n", + " 'and what you want, yo?',\n", + " 'un peu de sucre de cachaça',\n", + " \"i said this ain't my first time\",\n", + " \"and this ain't my first rhyme\",\n", + " \"c'est du hip hop on donne ça\",\n", + " 'version makossa',\n", + " \"c'est quoi ton style, man?\",\n", + " 'i want some hip-hop shit',\n", + " \"mais qu'est ce qu'tu veux man?\",\n", + " 'i want some hip-hop shit',\n", + " \"si c'est vrai que t'assailles le beat\",\n", + " \"j'te passe du papier, un bic\",\n", + " 'you know coffee and the sugar cats rap every week',\n", + " 'the same album comes back to your first time, your first line',\n", + " \"cause this is how, it's going down, i gotta say\",\n", + " 'that it all comes back to your first time, your first rhyme',\n", + " \"cause this is how, it's going down, i gotta say\",\n", + " 'woo-oohh',\n", + " 'sugar sugar',\n", + " 'yeah, yeah, baby',\n", + " 'i (i) think about you (think about you), everyday, everynight, baby',\n", + " \"i (i) think about you (think about you), i know sometimes it ain't right, baby\",\n", + " 'i (i) think about you (think about you), woo-woo-woah',\n", + " 'i (i) think about you (think about you, baby)',\n", + " \"j'les compare toutes avec toi, même si j'attends la bonne\",\n", + " \"j'visualise ton corps même sans te mater, damn\",\n", + " \"faut que tu sortes de ma tête, ça fait quatre titres où je parle de toi dans l'album (sans compter l'interlude)\",\n", + " \"tu m'as blessé beauté, mais pour moi tu n'étais que majesté\",\n", + " \"paris me rappelle à toi, donc j'suis parti voir dave dans un petit club de manchester\",\n", + " 'on a posé o.d, on a croisé des dj',\n", + " \"sans m'étaler, on a froissé le budget\",\n", + " 'on a déconné sous le ciel étoilé, quand même on est allés voir le concert de bj',\n", + " \"me voilà à chicago, loin de la où t'as vu naître mes peines\",\n", + " 'dans un quartier du sud, où les blancs normalement ne peuvent pas mettre les pieds',\n", + " \"mais je pense encore à toi, je suis parti sans savoir où j'allais\",\n", + " \"il ne me restait de ta bouche qu'un mot d'amour tracé sur mon miroir avec ton rouge à lèvres\",\n", + " 'et je pense encore à toi (toi)',\n", + " 'i (i) think about you (think about you), everyday, everynight, baby',\n", + " \"i (i) think about you (think about you), i know sometimes it ain't right, baby\",\n", + " 'i (i) think about you (think about you), woo-woo-woah',\n", + " '(i (i) think about you (toi)',\n", + " 'yeah yeah yeah yeah yeah)',\n", + " \"thinkin' 'bout you, thinkin' 'bout you\",\n", + " \"all day, all night, steady thinkin' 'bout you\",\n", + " \"make my money, then i'm thinkin' 'bout you\",\n", + " \"all day, all night, steady thinkin' 'bout you\",\n", + " \"thinkin' 'bout you, after i make money\",\n", + " 'if i want the tea, you know i want the honey',\n", + " 'like a hundred fifty thousand, just for the drumset',\n", + " 'if you niggas wanna fuck off, nigga come for the drama',\n", + " \"i know you want that lovin', yeah\",\n", + " \"the love ain't on the way (southside)\",\n", + " \"southside, yeah, the love ain't on the way\",\n", + " \"the love ain't on the way (lovin', yeah)\",\n", + " \"southside, yeah the love ain't on the way\",\n", + " '(yah, yah, yah, yah)',\n", + " \"j'étais sur un gros business, mais comme t'étais dans ma tête j'suis parti voir des copines à tokyo (sugoi!)\",\n", + " 'mon associé m\\'a dit \"reviens dans la capitale, tu peux pas planter ton client\"',\n", + " \"alors je suis revenu pardi, là j'suis dans l'stud', j'vais bientôt partir et quitter paris\",\n", + " \"c'est plus facile de trouver d'la pure qu'une putain d'place de parking\",\n", + " \"donc l'équipe débarque en amérique dans un tie-quar de riches\",\n", + " 'en studio les cain-ri font des sheitanneries',\n", + " 'mes gars viennent de chicago, les chaînes en or brillent',\n", + " 'personne ne comprend rien sauf les schémas de rimes',\n", + " \"car ce truc est universel, comme l'étude des versets\",\n", + " 'ce truc est universel, y a pas de diversion',\n", + " \"mon feu est deversé, j'enregistre dix versions\",\n", + " \"i know you want that lovin', yeah\",\n", + " 'paris on the way (southside)',\n", + " 'southside, you know that paris on the way (paris sud, paris sud, paris sud, eh)',\n", + " \"paris on the way (lovin', yeah)\",\n", + " 'southside, you know that paris on the way',\n", + " '(yah)',\n", + " \"thinkin' 'bout you, thinkin' 'bout you\",\n", + " \"all day, all night, still thinkin' 'bout you\",\n", + " \"bake my money, (ouais, ouais) then i'm thinkin' 'bout you (ouais ouais)\",\n", + " \"all day, all night, still thinkin' 'bout you\",\n", + " \"- i wanna' go, like, when you... man, bro, let me just put one track to the whole song, you can still keep cut- ya mean ?\",\n", + " '- ok ok ok... yeah yeah',\n", + " '- how it used to be, like the old school records was man, it feel like it was like this bro',\n", + " '- yeah yeah yeah',\n", + " '- it was a marriage, it was a marriage',\n", + " '- yeah yeah',\n", + " \"- that's what i die for\",\n", + " 'feeling my love, feeling my love',\n", + " \"n'approchez pas my sweet baby love #wheresay\",\n", + " 'sexy banana wait and see',\n", + " 'ohh my love, ohh my love',\n", + " 'feeling my love, feeling my love',\n", + " \"n'approchez pas my sweet baby love\",\n", + " 'sexy banana wait and see',\n", + " 'ohhh my love, ohh my love',\n", + " 'est-ce que tu veux nye bras? (ma girl)',\n", + " \"faut pas l'approcher dèh (ma girl)\",\n", + " \"that's ma girl girl girl girl (ma girl)\",\n", + " 'feeling ma girl girl girl girl (ma girl)',\n", + " 'est-ce que tu veux nye bras oooh? (my girl)',\n", + " \"faut pas l'approcher dèh (ma girl)\",\n", + " \"that's ma girl girl girl girl (ma girl)\",\n", + " 'feeling ma girl girl girl girl (ma girl)',\n", + " 'under you dey my skyfall',\n", + " 'like to use',\n", + " 'loving chilling you end of time (boom boom boom boom)',\n", + " \"girl with you we've special time (boom boom boom boom)\",\n", + " 'wanna see you everytime (boom boom boom boom)',\n", + " '(boom boom boom boom)',\n", + " 'est-ce que tu veux nye bras? (ma girl)',\n", + " \"faut pas l'approcher dèh (ma girl)\",\n", + " \"that's ma girl girl girl girl (ma girl)\",\n", + " 'feeling ma girl girl girl girl (ma girl)',\n", + " 'est-ce que tu veux nye bras oooh? (my girl)',\n", + " \"faut pas l'approcher dèh (ma girl)\",\n", + " \"that's ma girl girl girl girl (ma girl)\",\n", + " 'feeling ma girl girl girl girl (ma girl)',\n", + " 'finalement je suis un commando',\n", + " 'je suis son body garde dans le game',\n", + " 'trop de sniper tourne autour de mon bébé',\n", + " 'mais moi je ne laisse pas le way (sodja)',\n", + " 'ah, que voulez-vous?',\n", + " \"ah, mais qu'est-ce que voulez-vous?\",\n", + " 'reculez, que voulez-vous?',\n", + " \"ah, mais qu'est-ce que voulez-vous vous?\",\n", + " 'oh boboé ya dra wo',\n", + " 'oh boboé ya dra wo',\n", + " 'dra comme ça',\n", + " 'oh boboé ya dra wo',\n", + " 'oh boboé ya dra wo',\n", + " 'dra comme ça',\n", + " 'oh bobobobobo bobo fiãfi tɔ',\n", + " 'oh bobobobobo bobo',\n", + " 'oh bobobobobo bobo fiãfi tɔ',\n", + " 'oh bobobobobo bobo',\n", + " 'est-ce que tu veux nye bras? (ma girl)',\n", + " \"faut pas l'approcher dèh (ma girl)\",\n", + " \"that's ma girl girl girl girl (ma girl)\",\n", + " 'feeling ma girl girl girl girl (ma girl)',\n", + " 'est-ce que tu veux nye bras oooh? (my girl)',\n", + " \"faut pas l'approcher dèh (ma girl)\",\n", + " \"that's ma girl girl girl girl (ma girl)\",\n", + " 'feeling ma girl girl girl girl (ma girl)',\n", + " 'elle est my girl girl girl girl girl',\n", + " \"moi je l'aime l'aime l'aime l'aime\",\n", + " 'elle est dans mon cœur coeur coeur',\n", + " 'lover girl ohhh',\n", + " 'girl girl girl girl girl',\n", + " \"please girl don't come around my girl\",\n", + " 'i love my girl girl girl girl girl',\n", + " \"she's one eh eh eh\",\n", + " 'a real type a real type i love',\n", + " 'a real type a real type i love oh my gosh',\n", + " 'a real type a real type i love',\n", + " 'a real type a real type i love oh my gosh',\n", + " 'feeling my love, feeling my love',\n", + " \"n'approchez pas my sweet baby love\",\n", + " 'sexy banana wait and see',\n", + " 'ohh my love, ohh my love',\n", + " 'feeling my love, feeling my love',\n", + " 'sexy banana wait and see',\n", + " 'ohhh my love, ohh my love',\n", + " 'ehhhhhhhh',\n", + " '(french romance (ouh~)',\n", + " 'bonjour)',\n", + " 'hello stranger, younkie, touriste',\n", + " 'bienvenue, welcome, to visit paris',\n", + " \"pour vous j'allume la grande ville de lumière\",\n", + " 'paris froufrou, paris mystère',\n", + " 'very typique, la french teuteuch',\n", + " 'il fait tatache, titi gavroche',\n", + " 'quand walt disney prend la bastoche',\n", + " 'paris musée fait les popoches',\n", + " 'chorus :',\n", + " '(if you need a tourist guy for french romance',\n", + " 'we are your last chance, so hello donny and say manu chao)',\n", + " 'what you need is what i say',\n", + " 'so typique is so français',\n", + " 'so paris is so cliché',\n", + " 'shubilabab ah (x2)',\n", + " 'what you need is what i say',\n", + " 'so typique is so français',\n", + " '(fronguy, french kiss is so bouloub',\n", + " 'please kiss me malibiboup)',\n", + " '(french romance)',\n", + " 'fait chauffé la visa à défaut des méninges',\n", + " \"à saint germain des prés, y'en a du beau linges\",\n", + " 'entre zadigue, voltaire, bhl et gap',\n", + " 'ainsi parlait zara chez jean-paul sap',\n", + " \"j't'emmène à bical voir amélie poulain\",\n", + " 'récupéré ma com, dans son bar à tapin',\n", + " \"tu veux du gay paris, des clichés d'zazou\",\n", + " \"faites cheese c'est pique-poquet à pompompidou\",\n", + " 'chorus :',\n", + " '(if you need a tourist guy for french romance',\n", + " 'we are your last chance, shabalibaloum dop (x2))',\n", + " 'what you need is what i say',\n", + " 'so typique is so français',\n", + " ...]},\n", + " 'data': ['just give me that smile',\n", + " 'oh, baby ! come on',\n", + " \"i can't live without it, no, i can't\",\n", + " 'i need that one, that twice, that three',\n", + " 'just give me that smile (donne-moi ce sourire)',\n", + " 'oh, baby ! come on (donne)',\n", + " \"i can't live without it, no, i can't\",\n", + " 'i need that one (yeah), that twice (han), that three',\n", + " 'but just give me that smile',\n", + " \"donne-moi ce sourire que je l'ajoute à ma collec'\",\n", + " 'un de plus dans ma smilothèque avec celui qui dessine tes fossettes',\n", + " 'say cheese ! car le petit oiseau va sortir',\n", + " 'trois, deux, un et immortaliser ce sourire',\n", + " 'just give me that smile',\n", + " \"laisse-moi te tirer le portrait, j'suis un maniaque d'images\",\n", + " 'un sourire à chaque mot, sourire à chaque note, sourire à chaque visage',\n", + " '36 poses pour figer le temps, faire kiffer les gens',\n", + " 'et voir briller, briller, briller les dents',\n", + " 'just give me that smile (donne-moi ce sourire)',\n", + " 'oh, baby ! come on (donne)',\n", + " \"i can't live without it, no, i can't\",\n", + " 'i need that one (yeah), that twice (han), that three',\n", + " 'but just give me that smile',\n", + " 'oublie tes états d’âmes, je zoome',\n", + " 'lâche ta plus belle arme, ça tourne',\n", + " \"j'veux pas de maquillage de clowns\",\n", + " 'de masques ou de personnages, cartoon',\n", + " 'développer les négatifs de ces moments positifs',\n", + " \"fixer, fixer, fixer, fixer l'objectif\",\n", + " 'just give me that smile',\n", + " 'donne moi ce sourire, ce contraste',\n", + " 'ce pigment sur film noir et blanc, smile',\n", + " 'technicolor, ultra brite',\n", + " \"édenté ou émail diamants, c'est dans la boite\",\n", + " \"en peloch' ou polar ou pixels\",\n", + " \"j'veux pas du small... mais du smile xxl\",\n", + " 'just give me that smile (donne-moi ce sourire)',\n", + " 'oh, baby ! come on (donne)',\n", + " \"i can't live without it, no, i can't\",\n", + " 'i need that one (yeah), that twice (han), that three',\n", + " 'but just give me that smile',\n", + " 'just give me that smile (allez, donne-moi ce sourire)',\n", + " 'oh, baby ! come on (allez, juste un)',\n", + " \"i can't live without it, no, i can't\",\n", + " 'i need that one (yeah), that twice (han), that three',\n", + " 'just give me that smile (donne-moi ce sourire)',\n", + " 'oh, baby ! come on (donne)',\n", + " \"i can't live without it, no, i can't\",\n", + " 'i need that one (yeah), that twice (han), that three',\n", + " 'but just give me that smile',\n", + " 'i need that one, that twice, that tree',\n", + " 'but just give me that smile',\n", + " 'yeah yeah, yeah',\n", + " 'yeah yeah, yeah yeah',\n", + " 'ana w 3chiri west marina',\n", + " 'chella satat chafo fina',\n", + " 'we7da fihom sayga bina',\n", + " 'galt liha ma tfreini 7ta lmarina (yeah)',\n", + " 'wella agadir oufella, oufella',\n", + " 'oufella oufella',\n", + " '7ta l agadir oufella oufella',\n", + " 'mabaghich ntfella, ntfella',\n", + " 'ana w 3chiri west marina',\n", + " 'kantlowto 3la sata smiytha katrina',\n", + " 'qué pasa mi gasolina',\n", + " 'matkhafich menni ga3 ma dareb kina',\n", + " 'yeah yeah, jaya l chi 3am ma kawina',\n", + " 'kmina semm bach ydawina, yeah yeah',\n", + " 'f kolla track flow assassinant, yeah yeah',\n", + " 'f kolla scène public d san siro',\n", + " 'kolchi mkhellet lfer7a f sirop yeah yeah',\n", + " 'gha kanlowwi lowwi, w nbda ntfekker gha b lil louis v, margiela',\n", + " \"cc d'rif f nif, la sa7bi gha bsa7tek khellini ndozi ghir b kherdala\",\n", + " 'yeah yeah, wakha kberna m3a lmja7em',\n", + " 'ja men lor w 9olbni cupidon',\n", + " 'sur mon 31, je suis dans mon élément, choufni...',\n", + " 'ana w 3chiri west marina',\n", + " 'chella satat chafo fina',\n", + " 'we7da fihom sayga bina',\n", + " 'galt liha ma tfreini 7ta lmarina (yeah)',\n", + " 'wella agadir oufella, oufella',\n", + " 'oufella oufella',\n", + " '7ta l agadir oufella oufella',\n", + " 'mabaghich ntfella, ntfella',\n", + " 'ana w 3chiri west marina',\n", + " 'zit argan, berrad atay',\n", + " 'gddam lmarina kanfekker f lghorba every single day',\n", + " 'f sofitel massage, finition gommage',\n", + " 'bg, trop mimi bla crimi bla dopage',\n", + " 'hdi shibtek la 3achratni fchi pausage',\n", + " \"toto ga3 ma khalwh kho c'est dommage\",\n", + " \"b9a 7adi l'calculette tal ghedwa, bnj li ghaterte9 ton décodage\",\n", + " 'jeune déséquilibré sauvage makina kinka7kom kamlin f chi sarcophage',\n", + " 'loca vida f marina, double tour ga3 ma 3yina, yeah yeah',\n", + " 'ch7al ch7al sebbo fina melli doublnahom visaw fina, yeah yeah',\n", + " \"c'est l'heure de l'enquête, c'est l'amitié qui t'inquiète\",\n", + " \"dima nefs l'concept, ya\",\n", + " 'nwelli international b7al skepta',\n", + " 'rap maghribi kamel bin yeddi, machi b7alk nta rih li kayji yddik',\n", + " 'bo7di m9atale l rassi ji tchoufna...',\n", + " 'ana w 3chiri west marina',\n", + " 'chella satat chafo fina',\n", + " 'we7da fihom sayga bina',\n", + " 'galt liha ma tfreini 7ta lmarina (yeah)',\n", + " 'wella agadir oufella, oufella',\n", + " 'oufella oufella',\n", + " '7ta l agadir oufella oufella',\n", + " 'mabaghich ntfella, ntfella',\n", + " 'ana w 3chiri west marina',\n", + " \"cette nuit j'ai pas dormi, on m'a appris un décès\",\n", + " 'un ange nous a laissé',\n", + " 'j’repense à toutes les fois ou j\\'ai dit : \"je suis pressé\"',\n", + " 'au lieu de la voir quand je zonais sur le pc',\n", + " \"7h du mat', la lumière commence à m'agresser\",\n", + " 'je tourne dans paris sud comme la mafia trece',\n", + " \"j'ai dit à cette fille de ne pas m'adresser la parole\",\n", + " 'elle est vexée mais mon cœur est blessé',\n", + " 'j’me suis toujours dressé contre ceux qui veulent me dresser',\n", + " 'même s’il pleut ici le ton des gens est très sec',\n", + " 'noyé dans les excès, dans le mal on excelle',\n", + " \"un mec cède à l'abandon, il se tue dans les wc\",\n", + " 'une famille de réfugiés crie, étendue par terre',\n", + " 'elle finit rapatriée dans des charters',\n", + " 'j’m’en tape des chattes mal maquillées',\n", + " 'ou de briller dans les charts frère',\n", + " 'j’sors le magma qui est dans mes artères',\n", + " '7h du matin, mes démons complotent',\n", + " \"vu que ce monde nous monte l'un contre l'autre\",\n", + " \"pour aider l'oubli, y’a des moyens d'pression\",\n", + " 'un journal tenu par des lobbys ça fait bonne impression',\n", + " 'pendant qu’les dirigeants resserrent les liens avec ces gens',\n", + " 'des mômes meurent dans les territoires annexés',\n", + " 'pendant qu’les dirigeants resserrent les liens avec ces gens',\n", + " 'des mômes meurent dans les territoires annexés',\n", + " 'got me thinkin about the changes that i didn’t make',\n", + " 'all night, all night, all night',\n", + " 'they just wanna run your life, fuck what they say',\n", + " 'all night, all night, all night',\n", + " \"on dit qu'on veut changer, ça veut pas dire qu'on essaie\",\n", + " 'all night, all night, all night',\n", + " \"c'est pour ceux qui étaient là quand personne me connaissait\",\n", + " 'all night, all night, all night',\n", + " '\"another day another dollar\", that\\'s what they say',\n", + " 'i just wanna get paid',\n", + " 'all we see is that the world is out to get me',\n", + " \"but maybe that's me\",\n", + " 'i gotta get a job just to find another job',\n", + " \"this life don't fuck with me\",\n", + " 'all on tv is the things that i should never buy',\n", + " 'lord knows i tried',\n", + " 'wake up in the morning and i ask myself',\n", + " 'with everybody hurting, should i love thy wealth ?',\n", + " 'love these hoes and buy new clothes',\n", + " \"maybe ain't enough to do these shows\",\n", + " 'give that hope wearing all this gold',\n", + " 'smoke this dope while i save these souls',\n", + " \"the world so cold that i'm on a roll\",\n", + " \"keep her on the road while she's diggin' like a troll\",\n", + " 'gotta take it where they never took it',\n", + " 'catch a flight but i never book it',\n", + " \"now i'm livin' like i never wasn't\",\n", + " \"money matters but it really doesn't\",\n", + " 'imma make it till the day i die',\n", + " \"don't believe in death from life i have\",\n", + " 'we wanna change it but we never do it',\n", + " 'do what you want if it feels alright',\n", + " '×2',\n", + " 'got me thinkin about the changes that i didn’t make',\n", + " 'all night, all night, all night',\n", + " 'they just wanna run your life, fuck what they say',\n", + " 'all night, all night, all night',\n", + " \"on dit qu'on veut changer, ça veut pas dire qu'on essaie\",\n", + " 'all night, all night, all night',\n", + " \"c'est pour ceux qui étaient là quand personne me connaissait\",\n", + " 'all night, all night, all night',\n", + " '×3',\n", + " '7 heures 77',\n", + " 'now they wanna ride with us',\n", + " 'now they wanna shine with us',\n", + " 'uh, my young niggas in the building',\n", + " 'my dopeboys in the building',\n", + " 'got bad bitches in the building',\n", + " 'goddamn',\n", + " \"better tell them bitches, it's going down\",\n", + " 'what the fuck them niggas want?',\n", + " 'who the hell them bitches was?',\n", + " \"my nigga was only tryna' get a couple dollars in his pockets\",\n", + " 'coucou flow, murdering beats',\n", + " 'now you know how a nigga rocking',\n", + " 'rollie on, got my gun',\n", + " \"you know a nigga really robbin'\",\n", + " 'rollie on, got my gun',\n", + " 'in case a nigga try to rob me',\n", + " \"told them pussy niggas better keep my name out they motherfuckin' mouth\",\n", + " 'i guess they love the way it taste',\n", + " \"cause them niggas always bitchin' now\",\n", + " \"my city gon' blow\",\n", + " \"my city gon' blow\",\n", + " \"my city gon' blow, my city gon' blow\",\n", + " \"i'm talkin' bout' the four\",\n", + " \"my city gon' blow, my city gon' blow\",\n", + " \"my city gon' blow\",\n", + " \"my city gon' blow, my city gon' blow\",\n", + " \"i'm talkin' bout the four\",\n", + " \"my city gon' blow\",\n", + " \"c'est pour les parasites qu'on a sortis payback\",\n", + " 'ouais, si tu nous payes pas, gros tu connais la suite',\n", + " \"à ma gauche y'a lk qui tire l'white beretta\",\n", + " 'à ma droite enima, ouais gros surveille ta fille',\n", + " \"j'le fais pour la monnaie, non pas pour les pétasses\",\n", + " \"si, si j'parle de pétard, c'est qu'on vient prendre ta vie\",\n", + " 'tous une enfance délicate',\n", + " \"j'le fais pour mon 514\",\n", + " \"j'le fais pour mes bandits, j'le fais pour ma ville\",\n", + " 'rafale sur toute la ville',\n", + " \"on nettoie tout l'calibre\",\n", + " \"l'alibi est préparé (ratatataw)\",\n", + " \"t'as vendu la drogue toute ta vie\",\n", + " \"t'es encore là à déballer (ratatata)\",\n", + " \"arrête d'faire le tron-pa\",\n", + " \"t'as beau nous mentir, mais le regard ne trompe pas\",\n", + " 'toujours coulé mes maths, jamais tourné en rond comme un compas',\n", + " \"si j'meurs, j'meurs au combat\",\n", + " \"mes frères, c'pas mes contacts\",\n", + " \"si j'roule un backwood, c'est pour m'canaliser\",\n", + " \"ces rappeurs jouent les faux, en vrai ils n'le sont pas\",\n", + " 'devant la kalash, y sont tous paralysés',\n", + " 'tous vécu la galère, dealé pour un salaire',\n", + " 'toutes mes têtes cramées finissent en couvre-feu',\n", + " 'tes gars ouvrent leurs grandes gueules, les miens ouvrent le feu',\n", + " 'ma mère m’a dit : \"respecte le coran et ton dieu\", yeah',\n", + " \"j'ai dit tant qu'tu seras proche du hood, moi j'm'en fou d’eux, yea\",\n", + " \"c'matin j’ai prié pour qu'ma nouvelle bitch fasse deux, yea\",\n", + " 'maman, ton fils sait faire du feu même quand il pleut, yea',\n", + " \"j'veux qu'mes ennemis et les traitres viennent à ma mort\",\n", + " \"j'sais qu'le devil m'laissera rentrer dans leur corps\",\n", + " \"pussyboy, j'peux pas relaxer, j'suis d'jà mort, yea\",\n", + " \"pussyboy, j'fais des billets tous les soirs, yea\",\n", + " \"my city gon' blow\",\n", + " \"my city gon' blow\",\n", + " \"my city gon' blow, my city gon' blow\",\n", + " \"i'm talkin' bout' the four\",\n", + " \"my city gon' blow, my city gon' blow\",\n", + " \"my city gon' blow\",\n", + " \"my city gon' blow, my city gon' blow\",\n", + " \"i'm talkin' bout' the four\",\n", + " \"my city gon' blow\",\n", + " \"let me, let me in, or else we shuttin' it down\",\n", + " 'we came to make it rain',\n", + " \"poppin' bottles, droppin' liquors around\",\n", + " \"if them niggas actin' up, we gon' meet them outside\",\n", + " 'loudest niggas in the room',\n", + " 'but still weakest outside',\n", + " 'fully loaded magazine',\n", + " \"can't forget about the beam\",\n", + " 'one on your knuclehead',\n", + " 'watch this nigga do the dead',\n", + " \"i wanna see you do the talkin' now\",\n", + " \"probably won't cause this nigga dead\",\n", + " 'welcome to my city buddy, where them niggas really dying everyday',\n", + " \"bitches sellin' pussy, police watchin', nigga we gon' do it anyway\",\n", + " \"shout-out to them young niggas gettin' pay\",\n", + " 'gotta double up the k',\n", + " 'foreign whips, we roll out',\n", + " \"i'm iced up and i'm gold out\",\n", + " \"if you ask about us, they'll tell you\",\n", + " 'them young niggas, they on now',\n", + " \"my city gon' blow\",\n", + " \"my city gon' blow\",\n", + " \"my city gon' blow, my city gon' blow\",\n", + " \"i'm talkin' bout' the four\",\n", + " \"my city gon' blow, my city gon' blow\",\n", + " \"my city gon' blow\",\n", + " \"my city gon' blow, my city gon' blow\",\n", + " \"i'm talkin' bout' the four\",\n", + " \"my city gon' blow\",\n", + " 'back to the future',\n", + " 'yeah (huh)',\n", + " 'freebandz!',\n", + " '9.3',\n", + " 'future hendrix for homage future the world (sevran)',\n", + " \"cause you knw what i'm sayin' fbg we global (rgt)\",\n", + " 'orh click',\n", + " \"i won't trust these bitches, these bitches gon' tell\",\n", + " \"we don't trust no snitch around, none of these bitches, these bitches gon' tell\",\n", + " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", + " 'motherfuck these police, nigga, my niggas they shooting at 12 (niggas shooting at police, boy)',\n", + " 'je me devais de les kalashnikover, je me balade au cimetière avec mes trophées (therapy)',\n", + " \"je fume un joint de beuh pour me doper, la guerre on va la faire, y'a r, je suis opé\",\n", + " 'je leur pisse dessus comme sur une aire de repos, les couilles se voient même de dos (2-7)',\n", + " \"balayette en traître, j'suis pas ton te-po, ici tous les coups sont vrais, t'es pas au rt-spo\",\n", + " \"ce qui te touche ne m'effleure pas (kaa-ris), j'rentre dans le carré comme bobby shmurda\",\n", + " \"ak chargé et tu smurferas, crystal, ck-cra, j'mélange dans la cuisine, tes implants, ton legging\",\n", + " \"sur le siège chauffant, ce n'est pas un leasing,mon gang est sur le listing (okay)\",\n", + " \"tu m'attaques il parait, rafale et ta chatte disparait\",\n", + " \"j'augmente la dose dans le trafic (pute), et la criminalité sur le graphique\",\n", + " \"même dans la saleté faut que je m'applique,j'fais des hat tricks, je viens d'afrique (fuck)\",\n", + " \"j'prends le pouvoir comme napoléon, roi soleil éclairé par les rayons\",\n", + " \"t'es ébloui par mes xénons, la gifle te donne les oreillons\",\n", + " \"i won't trust these bitches, these bitches gon' tell\",\n", + " \"we don't trust no snitch around, none of these bitches, these bitches gon' tell\",\n", + " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", + " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", + " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", + " \"we don't carry no snitch around, none of these bitches, these bitches gon' tell\",\n", + " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", + " 'got the molly, got white, got the lean, got the kush, got the purp and the pills',\n", + " \"j'suis dans le bunker comme oussama,psychogun, rayon gamma\",\n", + " 'tout droit, direct dans vos tarmas en même temps que la jordan 11 blue gamma',\n", + " 'depuis \"vendeur de nah nah\", organisés comme le fatah',\n", + " 'je défouraille tous ces bâtards, je les mange en steak tartare',\n", + " \"tu veux rapper comme moi, t'es cloné, j'fais du liquide, de la monnaie\",\n", + " \"je passe devant toi, t'es sonné, tout se passe sous ton gros nez (s-e)\",\n", + " \"j'suis pépère, bttf, zanotti (wouh)\",\n", + " 'armes de guerre, je possède toute la panoplie',\n", + " \"i won't trust these bitches (sevran), these bitches gon' tell\",\n", + " \"we don't trust no snitch around, none of these bitches, these bitches gon' tell\",\n", + " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", + " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", + " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", + " \"we don't carry no snitch around, none of these bitches, these bitches gon' tell\",\n", + " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", + " 'got the molly, got white, got the lean, got the kush, got the purp and the pills',\n", + " 'selling bricks on deck like jackie chan, got them hoes on deck like shoestrings',\n", + " \"with a brand new lambo shoestring, i'm a gutter ass nigga i don't do 'caine\",\n", + " \"got a whole lot of autotune on it, no t-pain, 36 o's in the whip, no keychain\",\n", + " 'young ass white bitch, amy grant, nigga,young rich nigga hanging with penitentiary niggas',\n", + " 'motherfuck the feds, fuck illuminati',\n", + " \"nigga we ain't scared, this a kamikaze\",\n", + " 'order more bitches, order more bottles, we doing this shit, we might not see tomorrow',\n", + " 'two hundred bitches from paris on my timeline, they might have went all the way this time',\n", + " \"treat a nigga like a one of a kind, diamonds hanging, i'm in sierra leone\",\n", + " \"fuck with a rich nigga if that's what you want, come fuck a rich nigga, that's what you want\",\n", + " \"ace of spades and kush, oh that's what we on, you niggas trying to buy me? know they some clones\",\n", + " 'drink your molly, mix it all on up, these persian bitches know they all want us',\n", + " \"i won't trust these bitches (2-7), these bitches gon' tell\",\n", + " \"we don't trust no snitch around, none of these bitches, these bitches gon' tell\",\n", + " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", + " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", + " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", + " \"we don't carry no snitch around, none of these bitches, these bitches gon' tell\",\n", + " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", + " 'got the molly, got white, got the lean, got the kush, got the purp and the pills',\n", + " 'therapy !',\n", + " 'kaaris !',\n", + " 'kaaris !',\n", + " 'kaaris !',\n", + " \"féfé west la cité, survêt' pp kimpembe\",\n", + " 'ntiy7o ay bambina, vite fait bien fait ki mbappé',\n", + " 'tabac west lpipa, kharej pila men dari',\n", + " 'olifly, sandale fila, jay sakhet ki l3asifa dial katrina',\n", + " \"wallah, wesh, c'est comment double to riina\",\n", + " 'finma y7et lkhedma ka ykoun assassinat',\n", + " 'gallek rapper dareb selfie m3a sina',\n", + " '3ali f derbi, f lgame grande ibnu sina',\n", + " 'wakha lglb 9asse7, mama li touchina',\n", + " 'salsa brésilienne m3a draga f lcouzina',\n", + " 'respecté b7al chi baleine f lcasino',\n", + " 'weld bnj city block tale9 zino',\n", + " \"légende dl'époque, mezzikti médoc\",\n", + " 'vero pazzo marocchino west lblock',\n", + " 'mezzikti solo, ma 3endi ta colloc',\n", + " \"caméléon c'est du jamais vu, hadchi kollo déjà-vu\",\n", + " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", + " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", + " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", + " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", + " 'fiesta loca with la mifa',\n", + " 'ambiance romance, danse amicale',\n", + " 'double to 3onsori askip, ga3 maham tkoun dareb salib wella kippa',\n", + " 'gjami wasel l costa rica',\n", + " \"gha tchofni m'isolé f chi zona tropical\",\n", + " 'caramelo west lbocal',\n", + " 'jamais hna had lila, aji nichan w 9sed local',\n", + " 'vida scénario mkherbe9 ki babel',\n", + " 'bayet n7elmo b l3a9t casa de papel',\n", + " \"ga3 ma ntsenna ordre d'exécution, opérationnel\",\n", + " 'gjam w flow exceptionnel',\n", + " 'kolhom ka yt3awdo',\n", + " 'gha ndiwha kolha gha nkhelliwhom ka ytwa3do',\n", + " 'wakha ga3 ma ytwad3o',\n", + " 'ma f jibhom ta dinero w barkin ka yt3ando',\n", + " '(x2)',\n", + " \"légende dl'époque, mezzikti médoc\",\n", + " 'vero pazzo marocchino west lblock',\n", + " 'mezzikti solo, ma 3endi ta colloc',\n", + " \"caméléon c'est du jamais vu, hadchi kollo déjà-vu\",\n", + " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", + " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", + " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", + " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", + " \"so j'ai cette hipster broad, elle se prend pour kirsten dunst\",\n", + " 'au salon off avec ses talons hauts sur la piste de danse',\n", + " \"jacket de jeans pis l't-shirt de kill 'em all\",\n", + " \"mais parle-s'y pas de james hetfield, elle sait même pas si y'est mort\",\n", + " \"okay, j'ai cette scientifique, chimie, physique and all\",\n", + " 'elle étudie les plantes, elle connait tous les dinosaures',\n", + " \"elle aime pas la musique qu'j'écoute, elle dit que c'est vide de sens, que ça fait la glorification de l'ignorance\",\n", + " \"donc bref, c'est richard strauss quand qu'on chill ensemble, rick ross dès qu'j'la crisse dehors (boss)\",\n", + " \"j'sur t'es capable de compter jusqu'à six milliards\",\n", + " \"t'es peut-être ben bonne en chimie, mais tu manques de shimmy shimmy ya\",\n", + " \"faut qu'tu comprennes qu'on est bad boy for life, baby\",\n", + " 'so parle-moi pas de même, baby',\n", + " \"elle peut chiller dans notre élément tant qu'est assez smart pour comprendre qu'elle l'est moins qu'moi\",\n", + " \"first off all, flip un deux dollars, pile ou face, fucking get it back, arrête de jouer avec ton bread p'tit pit\",\n", + " 'fucking joue avec, pousse le souped-up touareg, crash le whip, fucking fous la merde',\n", + " \"fucking blow d'la fucking peinture off la table\",\n", + " 'yeah, shout-out au mont tremblant versant nord',\n", + " 'nasale, i do it',\n", + " \"strapped, i'm nice with the fifth, fucking tapette, toi t'es nice avec les fifs, how stupid\",\n", + " \"super smash bros, crazy whips, le grand prix à a-justice, jus d'tomate sous le capot\",\n", + " \"la vieille benz à mon autre boy, j'l'appelle grand daddy\",\n", + " 'intérieur blanc et sièges noirs, elle a cinq carries',\n", + " \"best believe le duster à cody c'est pas un balai\",\n", + " \"best believe ta bouche c't'un bol de toilette (ace)\",\n", + " \"best believe que quand tu m'vois m'frotter les deux mains, j'pull un hand rub comme birdman, so stupid, just holla at me\",\n", + " 'yeah, on veut that james hyndman money',\n", + " 'les sciences occultes, make a stupid white bitch your slave',\n", + " \"type money, j'rap avec la drive d'un proxénète\",\n", + " '(ah) prends ta tête to make money',\n", + " \"quand y'a d'la bisbille le whole crew d'vient michael bisping (bong!)\",\n", + " \"cnn, on veut that bloody money, faut qu'ça saigne\",\n", + " \"parce que j't'about mes vieux hommes comme les résidences soleil\",\n", + " 'yeah, vas-y, snuff-moi pour mon iphone',\n", + " 'vas-y, cogne-moi pour mon iphone',\n", + " 'vas-y, stab-moi pour mon iphone',\n", + " 'pull out un duster chrome, appelez david butler-jones',\n", + " \"j'pull un christian bale si tu hate, swing une hache dans un salon, les sofas plastifiés\",\n", + " \"but i doubt it man, j'suis nice with it, j'spend ce jeune bread, call me bryan williams\",\n", + " \"sept heure qui c'est\",\n", + " \"qui c'est\",\n", + " 'et cette habitant avec',\n", + " \"qu'est ce qu'il attend fait?\",\n", + " 'smoking',\n", + " \"je t'aimé, mon amour joli\",\n", + " \"what's the difference between smoking and drinking?\",\n", + " \"je t'aimé, mon amour joli\",\n", + " 'a nigga bout to take flight',\n", + " 'made it through the storms',\n", + " \"it's only right to get my light\",\n", + " 'danm right !',\n", + " 'nigga bout to take flight',\n", + " 'i made it through the storms',\n", + " \"it's only right to get my light\",\n", + " 'danm right !',\n", + " 'made it through the storms (x3)',\n", + " \"i was just jumpin' off the head of a bowser\",\n", + " \"now these old folks yellin' tellin' me pick up my trousers\",\n", + " \"man but i can't\",\n", + " 'gotta show my ass off to all of these doubters',\n", + " 'gimme credit or debt it or regret it when i be sending out flowers',\n", + " \"nigga i'm the, truth. excellence in a black form\",\n", + " 'martin luther king with a semi-automatic weapon screaming out \"nigga bring it on\"',\n", + " \"i got that, power. and nigga i be power trippin'\",\n", + " 'keep peace with folks in our position',\n", + " 'only good math up in our division huh',\n", + " \"some of y'all go where the wind blow\",\n", + " 'keep the noisy ? out the window cause in case a nigga tryna skeem on a ?',\n", + " \"nigga, don't, do it\",\n", + " \"i ain't a killer but don't push it\",\n", + " \"i got a lot of older cousins that care about me that ain't afraid to serve time behind a bullet\",\n", + " 'click click click click',\n", + " \"and that's my last warning\",\n", + " \"i know a lot of y'all want me out of here\",\n", + " 'go ahead do with the cash warrants',\n", + " \"i'm in a four corner room, nigga\",\n", + " 'four candles lit, nigga',\n", + " 'ill temped move, nigga',\n", + " 'bad news',\n", + " 'a nigga bout to take flight',\n", + " 'made it through the storms',\n", + " \"it's only right to get my light\",\n", + " 'danm right !',\n", + " 'nigga bout to take flight',\n", + " 'i made it through the storms',\n", + " \"it's only right to get my light\",\n", + " 'danm right !',\n", + " 'made it through the storms (x3)',\n", + " 'faut que je vise mon négro',\n", + " \"il faut que j'ai l'air un peu pro\",\n", + " 'il y a pas de vice, cesse de viser les plus faibles',\n", + " 'ils me méprisent comme calimero',\n", + " 'je suis haïs par leurs sentiments',\n", + " 'ils sont parmi tous ces gens qui me mentent',\n", + " \"j'ai la flemme de m'expliquer, je ne cesse de les piquer, oui j'ai tilté\",\n", + " 'fuck vos putains de manips, rester moi pour cette vie',\n", + " 'unique dans mon art de vie',\n", + " \"vont-ils me reprocher d'être utile ?\",\n", + " \"je n'ai pas de limite négro dans le jeu\",\n", + " 'des tas de lyrics un peu dangereux',\n", + " 'guette les enjeux jeune loup',\n", + " \"dans le calme on est frais qu'à nous deux\",\n", + " 'et vrai que mes putains de loups pèsent',\n", + " \"on se place pendant qu'eux ne font que jacter\",\n", + " \"j'ai lâché des vrais seize\",\n", + " 'pas de message, on est venu tout rafler',\n", + " 'les meufs nous collent car elles savent qui on est',\n", + " 'elles crient nos places car trop loin est le sommet',\n", + " 'une vie de dingue, un rythme trop effréné',\n", + " 'je ne suis pas bilingue mais les cainris aiment ce que je fais',\n", + " \"pas très loin de vivre ce dont j'ai rêvé\",\n", + " \"la meute debout pendant que d'autres vont pioncer\",\n", + " \"mon ex regrette maintenant qu'elle sait que j'ai percé\",\n", + " \"je l'insulte en lui disant ses quatre vérités\",\n", + " 'ce que ces négros peuvent jacter',\n", + " 'ciblent les miens et ça en secret',\n", + " 'je vous ai tous démasqué',\n", + " 'les visages tombent pas en toute sincérité',\n", + " \"ce soir j'éteins l'impatience\",\n", + " 'je tromperai la vigilance',\n", + " \"de cette douleur qui m'assiège\",\n", + " \"j'apprivoiserai l'aurore\",\n", + " \"le coeur brûlant d'effort\",\n", + " \"d'avoir déjoué tant de pièges\",\n", + " \"soyons tout ce que l'on a promis\",\n", + " \"soyons tout ce qu'on s'est promis (x 2)\",\n", + " 'yeah yeah everybody get down rock the planet',\n", + " 'yeah yeah rock the planet tout le monde debout',\n", + " 'et rock the planet, un, deux, trois come on',\n", + " '(refrain):',\n", + " \"took us so long (x 2) it won't be long\",\n", + " \"but we're going strong\",\n", + " \"it won't be longe (x 2) go on and on\",\n", + " \"we'll going on and on (x 2)\",\n", + " 'je suis un monde échoué',\n", + " 'je suis un monde à sauver',\n", + " \"fait à l'échelle de tes mains\",\n", + " 'les hommes sont comme des navires',\n", + " \"conscients du danger c'est dire\",\n", + " 'la tristesse de notre destin',\n", + " \"soyons tout ce qu'on a perdu\",\n", + " \"soyons tout ce que l'on a cru (x 2)\",\n", + " 'yeah yeah everybody get down rock the planet',\n", + " 'yeah yeah rock the planet tout le monde debout',\n", + " 'et rock the planet, un, deux, trois come on',\n", + " '(refrain):',\n", + " \"took us so long (x 2) it won't be long\",\n", + " \"but we're going strong\",\n", + " \"it won't be longe (x 2) go on and on\",\n", + " \"we'll going on and on (x 2)\",\n", + " 'rock the planet (x 4)',\n", + " \"it won't be longe\",\n", + " 'go on and on (x 2)',\n", + " 'ce soir je suis moi à nouveau',\n", + " 'un peu jean-françois bizot',\n", + " 'paris est redevenu le monde',\n", + " \"réveiller l'espoir qui dort\",\n", + " 'assis au pas de la porte',\n", + " 'calmer la rage qui déjà gronde',\n", + " 'yeah yeah everybody get down rock the planet',\n", + " 'yeah yeah rock the planet tout le monde debout',\n", + " 'et rock the planet, un, deux, trois come on',\n", + " '(refrain):',\n", + " \"took us so long (x 2) it won't be long\",\n", + " \"but we're going strong\",\n", + " \"it won't be longe (x 2) go on and on\",\n", + " \"we'll going on and on (x 2)\",\n", + " 'paroles rédigées et annotées par la communauté française de rap genius',\n", + " '(girl laughing)',\n", + " 'vibrer, une corde, une inspiration, un cil',\n", + " \"un cheveux, des antennes d'insectes\",\n", + " 'vibration, le son, la vie',\n", + " '(are you there, are you there?',\n", + " 'where are you?)',\n", + " 'un souffle, une veine qui bat, un frisson',\n", + " 'chaire de poule, les lèvres qui tressailles',\n", + " 'tressaillir, trembler brièvement',\n", + " \"sursauter a cause d'une émotion\",\n", + " '(can you see me?)',\n", + " 'une paupière qui cligne, un regard profond',\n", + " '(can you feel me?)',\n", + " 'une émotion vive, un amour impossible',\n", + " 'une sensation essentielle, inéluctable, inébranlable',\n", + " '(do you love me?)',\n", + " 'les hommes viennent de mars',\n", + " '(i love you)',\n", + " 'et les femmes viennent de vénus',\n", + " 'essentialiste',\n", + " '(let me in)',\n", + " 'nature féminine et masculine, différente par essence',\n", + " '(love me as i have loved you, as i have love you',\n", + " 'love me as i have loved you',\n", + " 'are you ready?)',\n", + " 'whoa, oh whoa, oh whoa, oh, oh whoa, oh',\n", + " 'hold my hand(hold my hand)',\n", + " 'sean paul, girl you know i care',\n", + " 'zaho, whoa, oh whoa, oh whoa, oh, oh whoa, oh',\n", + " 'yo, yo, yo(yo, yo, yo)',\n", + " 'alright then(hé, hé)',\n", + " 'so make me tell you this',\n", + " 'girl you know i care',\n", + " 'so if you ever seem to lose your way',\n", + " \"don't have no fear\",\n", + " 'hold my hand',\n", + " \"i'll be there girl, you know i care girl\",\n", + " \"'cause this love that we share\",\n", + " 'i will stay within ah de right direction',\n", + " \"don't have no fear\",\n", + " 'hold my hand',\n", + " \"i'll be there girl, you know i care girl, 'cause i care\",\n", + " '(zaho)',\n", + " \"oh, oh, le temps que j'ai me parait trop court\",\n", + " \"j'ai perdu trop de plumes parmi les vautours\",\n", + " \"combien de fois la vie m'a fait la cour\",\n", + " \"et combien de fois elle m'a joué des tours\",\n", + " \"j'ai crié(crié)\",\n", + " 'crié conne de mon amour',\n", + " \"je n'ai entendu que mon écho en retour\",\n", + " 'comme un boomerang, comme ta voix me manques',\n", + " 'tu me consoles quand tu chantes',\n", + " 'girl you know i care',\n", + " 'so if you ever seem to lose your way',\n", + " \"don't have no fear\",\n", + " 'hold my hand',\n", + " \"i'll be there girl, you know i care girl, cause i care\",\n", + " \"'cause this love that we share\",\n", + " 'i will stay within ah de right direction',\n", + " \"don't have no fear\",\n", + " 'hold my hand',\n", + " \"i'll be there girl, you know i care girl\",\n", + " 'all my love, all my heart',\n", + " 'well, this is what you getting girl from the start',\n", + " 'on the run, on the job',\n", + " 'me never yet keep a beat make it fall apart',\n", + " 'sweet is love but love is hard',\n", + " 'sometime you got to work pon it right round the clock',\n", + " 'never let it flop, never let it stop',\n", + " 'give thanks for what we got, me tell you this',\n", + " 'girl you know i care',\n", + " \"so if you ever seem to lose your way, don't have no fear\",\n", + " 'hold my hand',\n", + " \"i'll be there girl, you know i care girl\",\n", + " \"'cause this love that we share\",\n", + " \"i will stay within ah de right direction, don't have no fear\",\n", + " 'hold my hand',\n", + " \"i'll be there girl, you know i care girl, 'cause i care\",\n", + " '(zaho)',\n", + " 'tu as touché la cible, et je connais bien la suite',\n", + " 'pas moyen de fuire',\n", + " \"ce n'est pas qu'un feu de paille\",\n", + " \"j'ai tellement peur du vide\",\n", + " \"je veux fonçer, mais j'hésite mais mon coeur bât de plus\",\n", + " 'en plus vite boy',\n", + " \"j'aimerais tellement pouvoir te dire que loin de toi c'est\",\n", + " 'trop dure',\n", + " 'petit à petit je me fanne',\n", + " 'viens déposser tes ailes autour',\n", + " \"pour m'emmener loin de tout\",\n", + " 'girl you know i care',\n", + " 'so if you ever lose your way',\n", + " \"don't have no fear\",\n", + " 'hold my hand',\n", + " 'it is the right minute, the right hour to show my power',\n", + " 'so, let me shine, bloom like a flower',\n", + " 'for those who got too much self esteem',\n", + " 'keep in mind that knowledge reigns supreme',\n", + " \"i used to live fast, i knew you wouldn't last\",\n", + " 'so i changed and broke a bond with the past',\n", + " 'i saw the things clear: life is a nightmare',\n", + " 'you make money for a year then you out of there',\n", + " 'too bad in school you were so brillant',\n", + " 'street life and drugs sunk you into oblivion',\n", + " 'you should dig in your brain',\n", + " 'girls are really hard to entertain?',\n", + " 'no, yours like to be served',\n", + " \"ain't she greedy, don't you think she deserves\",\n", + " \"a smack: she's the arrow, you're the target\",\n", + " \"can't you see she's inloved with your wallet\",\n", + " \"so heed the world of a brother who don't eat swine\",\n", + " 'in a positive line, and my mind is divine',\n", + " 'explode in a flow of melody',\n", + " 'open your eyes fight the tragedy, brother wake up',\n", + " 'wake up',\n", + " \"dieu, allah n'ont jamais dit : tuez pour nous\",\n", + " 'alors pourquoi des pleurs, des cris, des morts partout',\n", + " 'les religions se veulent apôtres de la paix',\n", + " \"mais en leur nom combien d'enfants sont tombés?\",\n", + " 'combien de petits corps chétifs ont plié',\n", + " \"sous le poids d'une croix qu'il n'ont jamais portée\",\n", + " \"par la faute d'un homme qui s'est cru entité\",\n", + " 'qui rassembla ses fils et leur cria : tuez',\n", + " 'inutile de dire leurs armes, qui les fournissait?',\n", + " 'la vie de mille hommes vaut bien moins que ses propres intérêts',\n", + " 'la croyance est donc utilisée',\n", + " \"pour soutirer de l'argent, au peuple berné\",\n", + " 'alors se retourne dans sa tombe st vincent de paul',\n", + " \"en voyant que l'église est devenu un jeu de monopole\",\n", + " \"pour le rôle principal à présent c'est la course\",\n", + " \"bientôt l'ostie sera cotée en bourse\",\n", + " 'monde réveille-toi, va au-delà de ta foi',\n", + " \"et prend conscience du fait que l'on abuse de toi\",\n", + " 'tu dois arrêter dès à présent de fixer les cieux',\n", + " 'et regarder enfin la réalité dans les yeux',\n", + " \"il est aberrant qu'au nom de ça, il ait coulé tant de sang\",\n", + " \"qu'il se soit déifié en affluant leurs dents\",\n", + " \"faut-il qu'on vous secoue comme des shakers\",\n", + " \"pour comprendre qu'à ce problème, il n'y a qu'une solution:\",\n", + " 'wake up',\n", + " 'wake up',\n", + " 'you wake up in a world of combinations',\n", + " 'where is the future of the next generation',\n", + " 'you go to school to get a good education',\n", + " 'work to live and live to strive for your nation',\n", + " 'down with my possee we refused to dig that',\n", + " 'to admit that get played like \"pitty pack\"',\n", + " 'the asiatic automatic akhénaton, might be raw',\n", + " 'but is a better paragon',\n", + " 'than any other rhymer unstable',\n", + " 'remains green like a ping pong table',\n", + " 'than any politician, i teach revelation',\n", + " 'all kind of diss is a weak manifestation',\n", + " 'some say my brain is an encyclopedia',\n", + " \"i guess it's why i don't lie like a media\",\n", + " 'i break the wrath of the evil in half',\n", + " 'strickliy science in this paragraph',\n", + " 'ulema iam soul of islam',\n", + " 'listen, you will come to no harm',\n", + " 'by the way in the light we rest',\n", + " 'while the evil is plinged in the darkside of the mooncrest',\n", + " 'a.k.h.e.n.a.t.o.n. is a pro and',\n", + " 'elaborates a battle plan with no end',\n", + " \"this is the tongue of the truth, no fakin', no make up\",\n", + " 'get up and stand up, fight for your rights, brother',\n", + " 'wake up',\n", + " 'm o n d a y',\n", + " 'monday you love me',\n", + " 'tuesday you make me cry',\n", + " 'monday you lovely',\n", + " 'tuesday you say good bye',\n", + " 'i don’t wanna see you',\n", + " 'on your bad days',\n", + " 'nonono…',\n", + " 'telly*',\n", + " 'today you dry my tears',\n", + " 'ooooooh',\n", + " 'tomorrow you don’t care',\n", + " 'girl i bless the day',\n", + " 'that you came inna mi life',\n", + " 'and i swear to the stars',\n", + " 'that you have to be my wife',\n", + " 'but ah sometime winter',\n", + " 'sometime summer and',\n", + " 'our love it gonna last',\n", + " 'forever',\n", + " 'girl of my dreams',\n", + " 'don’t be my worst nightmare',\n", + " 'we’ve got so much loving to share',\n", + " 'today you dry my tears',\n", + " 'ooooooh',\n", + " 'pour le meilleur pour le pire',\n", + " 'pour le meilleur pour le pire',\n", + " 'monday you love me',\n", + " 'tuesday you make me cry',\n", + " 'monday you lovely',\n", + " 'tuesday you say good bye',\n", + " 'i don’t wanna see you',\n", + " 'on your bad days',\n", + " 'nonono…',\n", + " 'akhenaton',\n", + " 'les soirs ou tu n’es pas la',\n", + " 'mon poste joue ses ballades',\n", + " 'mon souffle est court tout tourne autour',\n", + " 'mon coeur est malade',\n", + " 'alors on vient dancer comme autrefois',\n", + " 'rappelles moi ces bon moments',\n", + " 'avant que la vie nous trace une autre voie',\n", + " 'quand tu souriais que tes mains douces enlacées',\n", + " 'mon cou',\n", + " 'es-tu bien la ? quels sont ces doigts qui prennent mon pouls ?',\n", + " 'je n’ai pas vu passer tout ces étés',\n", + " 'pendant l’hiver ma plume s’est asséchée',\n", + " 'm’ont blessé',\n", + " 'recite mes rubaïyat',\n", + " 'nos épopées vaillantes',\n", + " 'depuis le zénith de nos heures',\n", + " 'jusqu’a l’instant si silencieux',\n", + " 'des lumières vacillantes',\n", + " 'monday you love me',\n", + " 'tuesday you make me cry',\n", + " 'monday you lovely',\n", + " 'tuesday you say good bye',\n", + " 'i don’t wanna see you',\n", + " 'on your bad days',\n", + " 'nonono…',\n", + " 'oh, oh oh balance balance gal',\n", + " 'one di dance wall it wall them me three man',\n", + " 'oh, oh, oh de paname à kingston',\n", + " 'kossity and capelli i make them bouncy',\n", + " 'oh, oh, oh bouge sur le riddim man',\n", + " 'after the coke di one the powerly san',\n", + " 'oh, oh, oh lady lady',\n", + " 'oh, oh, oh faut que tu remues ton body',\n", + " 'faut que tu te sentes bien dans tes sapes, dans ta jupe et dans tes bottines',\n", + " 'soirée coquine, sors de ta routine',\n", + " 'oublie ton ex et ramène tes copines',\n", + " 'dancehall fever xxx routine',\n", + " \"prends pas le taxi on t'envoie la limousine\",\n", + " 'appelle tes sistas, tes voisines et tes cousines',\n", + " \"factory, enchaîne les tubes comme à l'usine\",\n", + " \"kossity capelli c'est la dancehall cuisine\",\n", + " 'oh, oh oh balance balance gal',\n", + " 'one di dance wall it wall them me three man',\n", + " 'oh, oh, oh de paname à kingston',\n", + " 'kossity and capelli i make them bouncy',\n", + " 'oh, oh, oh bouge sur le riddim man',\n", + " 'after the coke di one the powerly san',\n", + " 'oh, oh, oh lady lady',\n", + " 'oh, oh, oh faut que tu remues ton body',\n", + " 'and dancing oh, and dancing me show',\n", + " 'crusy na busy in nady slow',\n", + " 'shawn ken a po, po tunner get now',\n", + " 'forget your body for you gever cow',\n", + " 'no sexy a bet dem finer no oh',\n", + " 'dem gal a puss am fever get blow',\n", + " 'please no cross di dogter sweet did he but so',\n", + " 'grouv in a next so, whoow a say so',\n", + " 'gal all bal oh',\n", + " 'oh, oh oh balance balance gal',\n", + " 'one di dance wall it wall them me three man',\n", + " 'oh, oh, oh de paname à kingston',\n", + " 'kossity and capelli i make them bouncy',\n", + " 'oh, oh, oh bouge sur le riddim man',\n", + " 'after the coke di one the powerly san',\n", + " 'oh, oh, oh lady lady',\n", + " 'oh, oh, oh faut que tu remues ton body',\n", + " 'wil he band so, will he band',\n", + " 'will he band, will he band so, will he band',\n", + " 'wakédé, tout le monde doit danser le wakédé',\n", + " 'wakédé, tout le monde doit danser le wakédé',\n", + " 'au cul jadé, allume ton lighta, allume ton lighta',\n", + " 'allume ton lighta, allume ton lighta',\n", + " 'play so di i jo, président, play so di i jo',\n", + " 'gal all bal oh',\n", + " 'oh, oh oh balance balance gal',\n", + " 'one di dance wall it wall them me three man',\n", + " 'oh, oh, oh de paname à kingston',\n", + " 'kossity and capelli i make them bouncy',\n", + " 'oh, oh, oh bouge sur le riddim man',\n", + " 'after the coke di one the powerly san',\n", + " 'oh, oh, oh lady lady',\n", + " 'oh, oh, oh faut que tu remues ton body',\n", + " 'appelle suzy, caroline, asma et pauline',\n", + " 'dancehall folie, ici il y a que des xxx',\n", + " 'elles sont toutes jolies, toutes catégories',\n", + " 'même si on reste poli, jamais ça xxx',\n", + " 'one fast to slow, bouge sur le tempo',\n", + " \"ce soir tu l'as dans la peau tu sais qui sont les capos\",\n", + " \"allume ton zippo, nous on a tout ce qu'il faut\",\n", + " \"si t'as aucun défaut, allez vas-y fais ton show\",\n", + " 'oh, oh oh balance balance gal',\n", + " 'one di dance wall it wall them me three man',\n", + " 'oh, oh, oh de paname à kingston',\n", + " 'kossity and capelli i make them bouncy',\n", + " 'oh, oh, oh bouge sur le riddim man',\n", + " 'after the coke di one the powerly san',\n", + " 'oh, oh, oh lady lady',\n", + " 'oh, oh, oh faut que tu remues ton body',\n", + " \"seven years ago, but it's yesterday\",\n", + " \"i'm watching the sky but it's all grey\",\n", + " \"now i'm all alone i can feel the pain\",\n", + " \"you're still in my mind and you're still in my brain\",\n", + " \"seven years ago, but it's yesterday\",\n", + " \"i'm watching the sky but it's all grey\",\n", + " \"now i'm all alone i can feel the pain\",\n", + " \"you're still in my mind and you're still in my brain\",\n", + " \"seven years ago, but it's yesterday\",\n", + " \"seven years ago, but it's yesterday\",\n", + " \"seven years ago, but it's yesterday\",\n", + " \"seven years ago, but it's yesterday\",\n", + " \"i'm watching the sky but it's all grey\",\n", + " \"now i'm all alone i can feel the pain\",\n", + " \"you're still in my mind and you're still in my brain\",\n", + " \"seven years ago, but it's yesterday\",\n", + " \"seven years ago, but it's yesterday\",\n", + " 'octobre 2003',\n", + " 'le crou connait de sérieux dysfonctionnement',\n", + " 'pop hip se désintéresse du rock',\n", + " 'et commence à écrire des chansons pour florent pagny',\n", + " '\"l\\'agonie en patagonie\"',\n", + " 'king ju qui a fait copain copain',\n", + " 'avec le show business',\n", + " 'commence à fréquenter ...',\n", + " \"tandis que flip voudrait le beurre et l'argent du beurre (monté à l'envers)\",\n", + " \"c'est à cette époque\",\n", + " \"qu'mc salo et cadillac\",\n", + " 'rejoignent le crou in-extrémis',\n", + " 'accompagnant l’abominable ju',\n", + " 'dans une série de concerts',\n", + " 'que ça fait rigoler tout le monde',\n", + " \"alors qu'en fait c'est pas drole\",\n", + " 'ride dans ma ville comme jacques vill’',\n", + " 'j’viens de stack up trente mille tranquille',\n", + " 'j’veux toucher le million avant trente-six',\n", + " 'gotta catch up, shit, faut que je pense vite',\n", + " 'jamais spill de ketchup sur la banquette',\n", + " 'avec shabbo sur un newave mais j’pas jean-luc',\n", + " \"j'veux pas 'ton amitié j'm'en calice\",\n", + " 'i got new friends and they’re all dead',\n", + " 'alexander mcqueen payé hors-taxes',\n", + " \"j'm'allumes un russian cream back à l’hôtel\",\n", + " 'never faked it, j’ai des principes',\n", + " 'vingt-six, bitch i gotta have it',\n", + " 'bitch i gotta have it, bitch i gotta have it',\n", + " \"j'ride dans ma ville comme jacques vill’\",\n", + " 'si j’réponds pas au phone laisses moi tranquille',\n", + " 'j’veux juste remplir les poches de mon balmain',\n", + " 'thirty bands et je les stack up',\n", + " 'recomptes pour le fun quand j’suis high as fuck',\n", + " 'étape par étape comme si j’étais à l’école',\n", + " 'j’vais tout les renvoyer à l’école',\n", + " 'if i wanna bail, its all for best',\n", + " 'pockets are filled, poppin a pill if i get a chill',\n", + " 'king of the hill, i’m willing and able',\n", + " 'i keep my hands on the wheel, my foot on the stables',\n", + " 'look ma im gone',\n", + " 'pop drop it lock n load',\n", + " 'i gotta go south, make sure you fill up the whole bag',\n", + " 'cuz i dont consider ever going back',\n", + " 'ride dans ma ville comme jacques vill’',\n", + " 'j’viens de stack up trente mille tranquille',\n", + " 'j’veux toucher le million avant trente-six',\n", + " 'gotta catch up, shit, faut que je pense vite',\n", + " 'jamais spill de ketchup sur la banquette',\n", + " 'avec shabbo sur un newave mais j’pas jean-luc',\n", + " \"j'veux pas 'ton amitié j'm'en calice\",\n", + " 'i got new friends and they’re all dead',\n", + " 'j’ai pas made it bitch, j’ai made it happen',\n", + " 'j’ai pas l’choix d’flex comme un athlète',\n", + " 'c’pour ça j’fuck around, dépense le cash vite',\n", + " 'get it back quick, mula fait des backflips',\n", + " 'esskedit mane, clean cut, helmut lang',\n", + " 'ou bien philipp plein, cliqued up on s’est mis bien',\n", + " 'dans ma ville dans un range and i’m switching lanes',\n", + " 'laisse-moi shine, bling-bling, juste comme lil’ wayne',\n", + " 'on the ball, yeh, i been on the road',\n", + " 'j’ai la sauce, j’la laisse couler comme de l’eau',\n", + " 'ils riaient d’nous, maintenant ils veulent que j’reste humble',\n", + " 'so c’est \"f you\" quand j’pull up en f1 \\'skuur\\'',\n", + " 'ride dans ma ville comme jacques vill’',\n", + " 'j’viens de stack up trente mille tranquille',\n", + " 'j’veux toucher le million avant trente-six',\n", + " 'gotta catch up, shit, faut que je pense vite',\n", + " 'jamais spill de ketchup sur la banquette',\n", + " 'avec shabbo sur un newave mais j’pas jean-luc',\n", + " \"j'veux pas 'ton amitié j'm'en calice\",\n", + " 'i got new friends and they’re all dead',\n", + " 'this is a dj underground exclusive',\n", + " 'qui font le droit? la justice pourquoi?',\n", + " 'la justice nique sa mère',\n", + " 'le dernier juge que j’ai vu avait le plus de vices',\n", + " 'que le dealer de ma rue',\n", + " 'one, two, three, four',\n", + " \"woop woop that's the sound of da police\",\n", + " 'ah ah ni-nique la police',\n", + " \"woop woop that's the sound of da police\",\n", + " 'nique nique nique nique la police',\n", + " \"woop woop that's the sound of da police\",\n", + " 'ah ah nique la police',\n", + " \"woop woop that's the sound of da police\",\n", + " 'ah ah nique nique nique la police',\n", + " 'non rien de rien',\n", + " 'nique la police',\n", + " 'non je ne regrette rien',\n", + " 'nique la police',\n", + " 'non rien de rien',\n", + " 'nique la police',\n", + " 'non je ne regrette rien',\n", + " 'nique la police',\n", + " 'justice nique sa mère',\n", + " 'justice nique sa mère',\n", + " 'justice nique sa mère',\n", + " 'justice nique sa mère',\n", + " 'justice nique sa mère',\n", + " 'justice nique sa mère',\n", + " 'justice nique ta mère',\n", + " 'justice nique ta mère',\n", + " \"woop woop that's the sound of da police\",\n", + " 'nique la police',\n", + " \"woop woop that's the sound of da police\",\n", + " 'nique la police',\n", + " \"woop woop that's the sound of da police\",\n", + " 'nique la police',\n", + " \"woop woop that's the sound of da police\",\n", + " 'nique nique nique nique la police',\n", + " 'justice nique sa mère',\n", + " \"le dernier juge que j'ai vu\",\n", + " 'avait plus de vices',\n", + " 'que le dealer de ma rue',\n", + " 'ju-stice ni-que ta mere',\n", + " 'ta ni-que ta me-re',\n", + " 'ju-stice ni-que ta me-re me-re',\n", + " 'justice nique ta mère',\n", + " \"le dernier juge que j'ai vu\",\n", + " 'avait plus de vices',\n", + " 'que le dealer de ma rue',\n", + " \"woop woop that's the sound of da police\",\n", + " 'fuck the police',\n", + " \"woop woop that's the sound of da police\",\n", + " 'nique la police',\n", + " \"woop woop that's the sound of da police\",\n", + " ...]},\n", + " 'rock': {'meta': {'train_data': ['elle',\n", + " 'avait dix-huit ans',\n", + " 'les cheveux au vent',\n", + " 'la ligne',\n", + " \"d'un cygne\",\n", + " 'qui depliait ses...',\n", + " 'elle',\n", + " 'avait les accents',\n", + " \"d'un oiseau chantant\",\n", + " 'et tous les musiciens',\n", + " 'se retournaient sur...',\n", + " 'elle',\n", + " \"avait tout l'eclat\",\n", + " 'de ce siecle-la',\n", + " 'ou la valse',\n", + " 'etait reine',\n", + " \"ou l'amour etait roi\",\n", + " 'dans un ciel',\n", + " 'de dentelles',\n", + " 'irre...',\n", + " 'elle',\n", + " 'promenait ses mains',\n", + " 'sur un clavecin',\n", + " 'et chopin la trouvait',\n", + " 'b...elle',\n", + " \"n'avait qu'a sourire\",\n", + " 'pour le faire ecrire',\n", + " 'ecoutez',\n", + " 'les preludes',\n", + " \"qu'il composait pour elle\",\n", + " 'elle',\n", + " \"j'ai tant reve d'elle\",\n", + " 'parle avec elle',\n", + " 'que souvent',\n", + " 'je me prends',\n", + " 'pour elle',\n", + " 'elle',\n", + " 'est mon ideal',\n", + " 'la plus grande etoile',\n", + " 'et je veux',\n", + " 'ressembler',\n", + " 'a son portrait fidele',\n", + " \"il n'y a qu'elle\",\n", + " \"et c'est elle\",\n", + " 'mon mod...',\n", + " 'elle',\n", + " 'avait dix-huit ans',\n", + " 'les cheveux au vent',\n", + " 'la magie',\n", + " 'des folies',\n", + " \"que l'on faisait pour elle\",\n", + " \"c'etait la plus belle\",\n", + " 'je voudrais etre...elle!',\n", + " 'toi qui ne vit que pour être',\n", + " 'une image perdue dans la masse!',\n", + " 'sache que nous sommes doués',\n", + " 'du pouvoir de vie ou de mort et',\n", + " \"que tu n'es rien sauf un pion perdu\",\n", + " 'dans la grandeur de notre jeu',\n", + " 'feel your radiant glory',\n", + " 'for the ultimate time',\n", + " 'you will be forced to accept',\n", + " 'the fire which burns you is the same',\n", + " 'to which you should grant respect and life',\n", + " 'primitive thoughtless human!',\n", + " 'prostitue toi pour ton dieu!',\n", + " 'les larmes du christ sauront',\n", + " 'laver définitivement ton ame!',\n", + " \"tu n'es qu'une bataille inutile\",\n", + " \"dans une guerre gagnée d'avance\",\n", + " \"je t 'ai vu comprendre et apprendre\",\n", + " \"l'essence de notre supériorité\",\n", + " 'mais tu n\\'es qu\\' \" holy and weak \"',\n", + " \"avide de croyance et d'illusion!\",\n", + " 'and finally you will perish',\n", + " 'by fire and blood',\n", + " 'unfit for the \" satanik generation \"',\n", + " 'and return to your origin!',\n", + " 'from ashes to ashes',\n", + " 'here is your fate!',\n", + " 'prostitute yourself for your god!',\n", + " 'the tears of christ will surely know',\n", + " 'how to wash your soul!',\n", + " 'du gehst den weg zu dir selbst, und an dir selbst',\n", + " 'geht der weg vorbei',\n", + " 'und an deinen sieben teufeln!',\n", + " 'verbrennen musst du dich wollen, in deiner',\n", + " 'eigenen flamme; wie wolltest du neu werden',\n", + " 'wenn du nicht erst asche geworden bist? und',\n", + " 'hüte dich vor den anfällen deiner liebe',\n", + " 'lust ist tiefer noch als herzeleid',\n", + " 'ihr höheren menschen, ihr lernt es nicht',\n", + " 'lust will ewigkeit',\n", + " 'wandering through the refuge of my dreams',\n", + " 'nightmarish blessings to speak',\n", + " 'decay in shrouds and fragments',\n", + " 'this place steams in the mist of butchered mind',\n", + " 'i became nothingness',\n", + " 'i became abyss of expression',\n", + " 'embracing the poison',\n", + " 'as hunger that keeps me awake',\n", + " 'crushing eleos and pride',\n", + " 'through reign of contradiction',\n", + " 'clasping the dusty ruins',\n", + " 'reclaiming the throne of bones',\n", + " 'commanding a legion',\n", + " 'composed of tainted words and symbols',\n", + " 'erupting abyssal volcanism',\n", + " 'raising the omega of mind',\n", + " 'reasons to justify',\n", + " 'the fall seems eternal',\n", + " 'crumbling in rays of light',\n", + " 'blinding the clearest sight',\n", + " 'chaque matin, quand le soleil se lève pour les',\n", + " 'autres, en répandant la joie et la chaleur dans',\n", + " 'toute la nature, tandis qu’aucun de mes traits',\n", + " 'ne bouge, en regardant fixement l’espace plein',\n", + " 'de ténèbres, accroupi vers le fond de ma caverne',\n", + " 'aimée, dans un désespoir qui m’enivre comme le',\n", + " 'vin, je meurtris de mes puissantes mains ma',\n", + " 'poitrine en lambeaux',\n", + " 'objet de mes vœux',\n", + " 'je n’appartenais plus à l’humanité',\n", + " 'et je ne demanderais pas mieux que de ne pas',\n", + " 'épuiser mon esprit à réfléchir continuellement',\n", + " 'rappelle-toi-le bien; nous sommes sur ce vaisseau',\n", + " 'démâté pour souffrir',\n", + " 'embracing the poison',\n", + " 'as hunger that keeps me awake',\n", + " 'embracing the poison',\n", + " 'as hunger that keeps me addicted',\n", + " 'for i consciously perish in the bright shining',\n", + " 'embers of the golden sun',\n", + " 'one poisoned well to bail from, may be more',\n", + " 'effective than countless jars of venomous',\n", + " 'liquid',\n", + " 'why would i destroy myself on purpose, while',\n", + " 'speaking insensate curses against all that',\n", + " 'breathes and crying oceans of acid?',\n", + " 'for what i still fear the most is myself',\n", + " 'for lust burns deeper still than heartache',\n", + " 'until the poison devours me',\n", + " 'until the poison devours me',\n", + " 'until the poison devours you',\n", + " 'until the poison devours us',\n", + " 'la force des choses',\n", + " \"la force de l'âme\",\n", + " 'la force du vent',\n", + " 'la force des innocents',\n", + " 'the force of things',\n", + " 'the force of the soul',\n", + " 'the force of the winds',\n", + " 'the force of the innocents',\n", + " 'la force des mots',\n", + " 'la force des riens',\n", + " 'la force de tes yeux',\n", + " 'la force et ça va mieux !',\n", + " 'the force of words',\n", + " 'the force of nothing',\n", + " 'the force of your eyes',\n", + " 'the force it goes well !',\n", + " 'la force des forces',\n", + " \"la force de l'ordre\",\n", + " 'la force de ton nom',\n", + " \"la force d'une chanson\",\n", + " 'the force of forces',\n", + " 'the force of order',\n", + " 'the force of your name',\n", + " 'the force of a song',\n", + " 'la force du soleil',\n", + " 'la force des marins',\n", + " 'la force des ouvriers',\n", + " 'la force des patronniers',\n", + " 'the force of the suns',\n", + " 'the force of sailers',\n", + " 'the force of workers',\n", + " 'company force',\n", + " 'la force des tigres',\n", + " 'la force des fous',\n", + " 'la force de toi',\n", + " 'la force et ça ira !',\n", + " 'the force of tigers',\n", + " 'the force of fools',\n", + " 'the force of you',\n", + " \"the force then it's ok !\",\n", + " 'de kracht !',\n", + " 'de kracht !',\n", + " 'de kracht !',\n", + " 'de kracht !',\n", + " 'la force beaucoup',\n", + " 'la force de la passion',\n", + " 'la force libre',\n", + " 'la force en équilibre',\n", + " \"la force de l'hiver\",\n", + " 'la force de ta peau',\n", + " \"la force d'une main\",\n", + " 'la force et je vais bien !',\n", + " 'the force very much',\n", + " 'the force of passion',\n", + " 'the free force',\n", + " 'the hanging in a balance force',\n", + " 'the force of winter',\n", + " 'the force of the skin',\n", + " 'the force of the hands',\n", + " 'the force and i feel good !',\n", + " 'oh my weakness, oh my weakness !',\n", + " 'oh my weakness, oh my weakness !',\n", + " 'oh ma faiblesse, tu me blesses !',\n", + " 'oh my weakness, oh my weakness !',\n", + " 'oh ma faiblesse, tu me blesses !',\n", + " 'oh my weakness, you hurt me...',\n", + " 'oh ma faiblesse, tu me blesses !',\n", + " 'the force of silence',\n", + " 'the force of age',\n", + " 'the force of time',\n", + " 'the force of sentiments',\n", + " 'la force du silence',\n", + " \"la force de l'âge\",\n", + " 'la force du temps',\n", + " 'la force des sentiments',\n", + " 'the force of walls',\n", + " 'the force of cries',\n", + " 'the force of your mouth',\n", + " 'the force that laid me down !',\n", + " 'la force des murs',\n", + " 'la force des cris',\n", + " 'la force de ta bouche',\n", + " 'la force qui me couche !',\n", + " 'the force again',\n", + " 'the force of your bones',\n", + " 'the political force',\n", + " 'atomic force',\n", + " 'la force encore',\n", + " 'la force de tes os',\n", + " 'la force politique',\n", + " 'la force atomique',\n", + " 'the force of police',\n", + " 'the force of blows',\n", + " 'the military force',\n", + " 'the force of prayers',\n", + " 'la force des corps',\n", + " 'la force des coups',\n", + " 'la force militaire',\n", + " 'la force des prières',\n", + " 'the force of titans',\n", + " 'the force of fears',\n", + " 'the force of us',\n", + " 'the « we are standing up » force',\n", + " 'la force des titans',\n", + " 'la force des phobies',\n", + " 'la force de nous',\n", + " 'la force on tient debout !',\n", + " 'de kracht !',\n", + " 'de kracht !',\n", + " 'de kracht !',\n", + " 'de kracht !',\n", + " 'the force of the stars',\n", + " 'the force of the moment',\n", + " 'the force of love',\n", + " 'the force i still believe it !',\n", + " 'the force of ideas',\n", + " 'the force of nothingness',\n", + " 'the force to end it all',\n", + " 'the force to keep us smiling',\n", + " 'la force des étoiles',\n", + " \"la force de l'instant\",\n", + " \"la force de l'amour\",\n", + " \"la force j'y crois toujours !\",\n", + " 'la force des idées',\n", + " 'la force du néant',\n", + " \"la force d'en finir\",\n", + " \"la force d'en sourire\",\n", + " 'oh ma faiblesse',\n", + " 'oh my weakness, oh my weakness !',\n", + " 'oh ma faiblesse',\n", + " 'oh my weakness, oh my weakness !',\n", + " 'oh ma faiblesse, tu me blesses !',\n", + " 'oh ma faiblesse',\n", + " 'oh ma faiblesse, tu me blesses !',\n", + " 'de kracht !',\n", + " 'de kracht !',\n", + " 'de kracht !',\n", + " 'de kracht !',\n", + " 'aaaaaaaaaaah',\n", + " 'ooooooooooh',\n", + " 'aaaaaaaaaaah',\n", + " 'oooooooooh',\n", + " 'bring the sun, spins around and around and around',\n", + " 'bring the sun, spins around and around and around',\n", + " 'bring the sun, spins around and around and around',\n", + " 'bring the sun, spins around and around and around',\n", + " 'is it mine, is it mine, is it mine, is it mine',\n", + " 'is it mine, is it mine, is it mine, is it mine',\n", + " 'is it mine, is it mine, is it mine, is it mine',\n", + " 'is it mine, is it mine, is it mine, is it mine',\n", + " 'spins around and around and around and around',\n", + " 'spins around and around and around and around',\n", + " 'spins around and around and around and around',\n", + " 'spins around and around and around and around',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " \"toussaint l'ouverture\",\n", + " 'freedom!',\n", + " 'from!',\n", + " 'home!',\n", + " 'home!',\n", + " '*horse galloping and neighing*',\n", + " 'toussaint!',\n", + " \"toussaint l'ouvеrture!\",\n", + " 'toussaint!',\n", + " \"toussaint l'ouverture!\",\n", + " 'libеrté!',\n", + " 'egalité!',\n", + " 'fraternité!',\n", + " 'sangre de dios!',\n", + " 'hijo de dios!',\n", + " 'amor de dios!',\n", + " 'sangre es vida!',\n", + " 'vida es sangre!',\n", + " 'sangre es amor!',\n", + " 'amor es sangre!',\n", + " 'toussaint!',\n", + " \"toussaint l'ouverture!\",\n", + " \"toussaint l'ouverture!\",\n", + " 'freedom!',\n", + " 'freedom!',\n", + " 'ellos!',\n", + " 'sepultura, tambours du bronx',\n", + " 'absurdité, absurdity, absurdo',\n", + " 'tragédie, tragedy, tragédia',\n", + " 'les doigts sont sur les déclencheurs du changement',\n", + " 'the fingers are on the triggers of change',\n", + " 'os dedos estão no gatilho da mudança',\n", + " \"un pouvoir de changement à d'autres mains\",\n", + " 'a power of change to other hands',\n", + " 'mudança de poder pra outras mãos',\n", + " 'now is the time!',\n", + " 'fallen dictators step down, step down',\n", + " 'instigators step down, step down',\n", + " 'aggravators step down, step down',\n", + " 'structure violence',\n", + " 'égalité, equality, igualdade',\n", + " 'la démocratie, democracy, a democracia',\n", + " 'dictateurs dépôts, instigateurs',\n", + " 'fallen dictators, instigators',\n", + " 'ditadores depostos, instigadores',\n", + " 'aggravateurs démissionnent',\n", + " 'aggravators step down',\n", + " 'agitadores estão caindo',\n", + " 'now is the time!',\n", + " 'fallen dictators step down, step down',\n", + " 'instigators step down, step down',\n", + " 'aggravators step down, step down',\n", + " 'structure violence',\n", + " 'a storm has formed and fills the air',\n", + " 'feel the weight of catastrophe',\n", + " 'kept the needs from humanity',\n", + " 'the total greed, the absurdity',\n", + " 'fallen dictators step down, step down',\n", + " 'instigators step down, step down',\n", + " 'aggravators step down, step down',\n", + " 'structure violence',\n", + " 'structure violence',\n", + " \"« religion: une alimentation intellectuelle malsaine ... avec un arrière-goût désagréable. l'emballage est souvent beau, mais le contenu est dépourvu de valeur nutritive »\",\n", + " 'aussi bien manger ses propres excréments',\n", + " 'guilt flesh, moist sermons',\n", + " 'lethal devotion',\n", + " 'obedience trickling',\n", + " 'holy insertion',\n", + " 'fuck my head',\n", + " 'indecent',\n", + " 'pernicious flesh, moist gospel',\n", + " 'intemperate repent',\n", + " 'pastoral febrile',\n", + " 'divine insertion',\n", + " 'fuck my head',\n", + " 'indecent',\n", + " \"what'll we do with the baby?\",\n", + " \"what'll we do with the baby-o?\",\n", + " \"what'll we do with the baby?\",\n", + " \"what'll we do with the baby-o?\",\n", + " 'wrap him up in a tablecloth',\n", + " 'throw him up in the old hayloft',\n", + " \"that's what we do with the baby\",\n", + " \"that's what we do with the baby-o\",\n", + " 'every time the baby grins',\n", + " 'give my baby another bottle of gin',\n", + " \"that's what we do with the baby\",\n", + " \"that's what we do with the baby-o\",\n", + " 'every time the baby cries',\n", + " 'stick my finger in the babies eyes',\n", + " \"that's what we do with the baby\",\n", + " \"that's what we do with the baby-o\",\n", + " '\"]',\n", + " '\"]',\n", + " 'mon ami! mon ami! coco, coco, le petit singe…',\n", + " \"le bon roi dagobert, le bon roi dagobert, a, le bon roi dagobert, a mis sa culotte à l'envers, le grand saint eloi lui dit: “o mon roi, votre majesté est mal culottée!” “cest vrai, lui dit le roi, je vais la remettre à l'endroit!” c'était un idiot. j'ai vu coco, coco le petit singe, hier au zoo de toronto dans sa petite cage. il m’a dit si tu veux on va jouer. attention! mon ami, mon ami! fa-lala-lala-la-la…\",\n", + " '\"]',\n", + " \"je sais qu'il me traite\",\n", + " 'comme il traite les autres',\n", + " 'on dirait presque',\n", + " \"qu'il ne m'aime pas\",\n", + " 'quand vous me dites',\n", + " \"tu devrais t'en aller\",\n", + " \"mem'si c'est vrai\",\n", + " \"ca ne m'aide pas\",\n", + " 'je comprends vos raisons',\n", + " \"vous voyez sur'ment mieux que moi\",\n", + " 'oui mais',\n", + " 'ne me plaignez pas',\n", + " 'ma vie est plutot belle',\n", + " 'et quand ca ne va pas',\n", + " \"tous mes amis m'appellent\",\n", + " 'je vous remercie',\n", + " 'de votre sympathie',\n", + " 'non ne me plaignez pas',\n", + " 'mais restez la',\n", + " 'quand je suis seule',\n", + " 'je suis bien dans ma chambre',\n", + " 'avec un livre',\n", + " 'ou un film ancien',\n", + " 'et pour ma fete',\n", + " \"si c'est vrai qu'il m'oublie\",\n", + " \"j'ai vos cadeaux\",\n", + " 'pour me chauffer le coeur',\n", + " 'je comprends vos raisons',\n", + " \"vous voyez sur'ment mieux que moi\",\n", + " 'pourtant...',\n", + " 'this foreign face that is looking at me',\n", + " 'in absence, i am hanging alone',\n", + " 'this lifeless nakedness that devours me',\n", + " 'which is this eye that is looking at me',\n", + " 'i see nakedness',\n", + " 'i see silence',\n", + " 'i can hear you',\n", + " 'i hear blood',\n", + " 'that screams and swims in reverse',\n", + " 'i can hear it now',\n", + " 'sand, please help me',\n", + " \"don't turn back\",\n", + " 'i hear blood',\n", + " 'that screams and swims in reverse',\n", + " 'i can hear it now',\n", + " 'in the air there is a poison that kills you]',\n", + " 'sand, sand, sand please help me',\n", + " 'do not turn back, back',\n", + " \"'cause this is the air that penetrates you\",\n", + " 'sand, sand, sand please help me',\n", + " 'do not turn back, back',\n", + " 'in the air there is a poison that kills you',\n", + " '\"mais qu\\'est-ce que vous nous foutez là m. artaud? et savez-vous ce que c\\'est au juste que la cruauté?',\n", + " \"c'est l'homme qu'il faut maintenant se décider à émasculer\",\n", + " 'dieu, le hasard bestial de l\\'animalité inconsciente humaine, partout où on peut le rencontrer.\"',\n", + " 'in the air there is a poison that kills you]',\n", + " '\"lorsque vous lui aurez fait un corps sans organes, alors vous l\\'aurez délivré de tous ses automatismes et rendu à sa véritable et immortelle liberté.\"',\n", + " 'when, when we hear the eye open',\n", + " 'there, there in that place',\n", + " 'there, a whisper is a scream',\n", + " 'breathing there, into that place',\n", + " \"i know you'll stay\",\n", + " 'loneliness is not the same here',\n", + " \"it's over for today\",\n", + " 'now, again...',\n", + " 'now again...',\n", + " 'when, when we hear the eye open',\n", + " 'there, there in that place',\n", + " 'there, a whisper is a scream',\n", + " 'breathing there, into that place',\n", + " 'breathing there, into that place',\n", + " 'when, when we hear the eye open',\n", + " 'there, there in that place',\n", + " 'there, a whisper is a scream',\n", + " 'breathing there, into that place',\n", + " 'when, when we hear the eye open',\n", + " 'there, there in that place',\n", + " 'there, a whisper is a scream',\n", + " 'breathing there, into that place',\n", + " 'now again, now again, now again',\n", + " 'now!',\n", + " 'now again, now again, now again',\n", + " 'now...',\n", + " 'everybody stand as one',\n", + " 'we don’t care where you come from',\n", + " 'you’ll never be alone',\n", + " 'can you feel it ? it’s coming from your mind',\n", + " 'you know all your dreams could be mine',\n", + " 'there’s nothing left behind us, walk with me',\n", + " 'figure it out, be what you wanna be !',\n", + " 'everybody stand as one',\n", + " 'we don’t care where you come from',\n", + " 'you’ll never be alone',\n", + " 'du coup on fait avec ce qui nous reste',\n", + " 'du culot, de l’enthousiasme, et un sourire face aux crs',\n", + " 'une main tendue et c’est tout ton pays qui se reveille',\n", + " 'faut qu’on se bouge pour que nos gamins s’émerveillent',\n", + " 'alors on se rassemble, sans savoir si on se ressemble',\n", + " 'comme un seul peuple, un seul homme',\n", + " 'le regard fier et les mains qui tremblent',\n", + " 'ces graines qu’on sème pour tout une vie',\n", + " 'a toutes ces secondes qu’on apprécie',\n", + " 'everybody stand as one',\n", + " 'we don’t care where you come from',\n", + " 'you’ll never be alone',\n", + " 'we gonna start tonight',\n", + " 'we gonna start tonight',\n", + " 'we will be proud',\n", + " 'we are the voice of a generation',\n", + " 'we gonna be the ones',\n", + " 'we gonna be the ones',\n", + " 'ho yeah we will be proud',\n", + " 'i’m proud',\n", + " 'everybody stand as one',\n", + " 'we don’t care where you come from',\n", + " 'you’ll never be alone',\n", + " '\"le vent, qui roule un coeur sur le pavé des cours... un ange qui sanglote accroché dans un arbre... la colonne d’azur qu’entortille le marbre font ouvrir dans ma nuit des portes de secours.\"',\n", + " 'no one ever came',\n", + " '(no one ever came) no one ever came',\n", + " 'no one, no one',\n", + " 'i watched in your eyes',\n", + " 'which never looked in mine',\n", + " 'and i saw this white poison',\n", + " 'slowly spread',\n", + " 'of the world outside]',\n", + " 'no one ever came',\n", + " '\"i will pass,\" she said',\n", + " 'but no one ever came',\n", + " 'my eyes were turned into ashes',\n", + " 'day one ; the one percent gain global control',\n", + " 'within the shadows they pull the strings of major assets',\n", + " 'with phantom enemies they divided us',\n", + " 'to implement their ultimate masterplan',\n", + " 'worldwide, widespread',\n", + " 'a manmade pandemic',\n", + " 'worldwide, widespread',\n", + " 'buy the antidote or die',\n", + " 'worldwide, widespread',\n", + " 'a manmade pandemic',\n", + " 'worldwide, widespread',\n", + " 'choose between life or death',\n", + " 'present day ; the virus spread to a global scale',\n", + " 'the one percent decides who lives and who dies',\n", + " 'they locked away the antidote - top secret',\n", + " 'under the umbrella the masterplan is in place',\n", + " 'au détriment de la vie humaine, les cadavres peuplent la terre interdite',\n", + " 'dans la folie, la boîte de pandore fut ouverte - un chemin sans retour',\n", + " \"le fléau s'est répandu sur le monde\",\n", + " 'seuls les cendres et le sang sont laissés derrière',\n", + " 'les morts règnent désormais sur l\\'ombre de ce qui était nommé autrefois \"humanité\"',\n", + " 'worldwide, widespread',\n", + " 'a manmade pandemic',\n", + " 'worldwide, widespread',\n", + " 'buy the antidote or die',\n", + " 'worldwide, widespread',\n", + " 'a manmade pandemic',\n", + " 'worldwide, widespread',\n", + " 'choose between life or death',\n", + " 'on prend un verre, un revolver',\n", + " \"c'est drôle pourtant de faire semblant\",\n", + " \"c'est une grande gueule et souvent seule\",\n", + " 'oh non, je me sens à contretemps',\n", + " 'hello, hello, hello, how low?',\n", + " 'hello, hello, hello, how low?',\n", + " 'hello, hello, hello, how low?',\n", + " 'hello, hello... un, deux, trois !',\n", + " \"with the lights out, it's less dangerous\",\n", + " 'here we are now, entertain us',\n", + " 'i feel stupid and contagious',\n", + " 'here we are now, entertain us',\n", + " 'a mulatto',\n", + " 'an albino',\n", + " 'a mosquito',\n", + " 'my libido',\n", + " 'yeah, hey, yay',\n", + " 'je suis le pire de mon meilleur',\n", + " \"et j'en suis fière, merci à ma mère\",\n", + " 'on est ensemble depuis toujours',\n", + " \"et il me semble que c'est ça l'amour\",\n", + " 'hello, hello, hello, how low?',\n", + " 'hello, hello, hello, how low?',\n", + " 'hello, hello, hello, how low?',\n", + " 'hello, hello, hello...',\n", + " \"with the lights out, it's less dangerous\",\n", + " 'here we are now, entertain us',\n", + " 'i feel stupid and contagious',\n", + " 'here we are now, entertain us',\n", + " 'a mulatto',\n", + " 'an albino',\n", + " 'a mosquito',\n", + " 'my libido',\n", + " 'yeah, hey, yay',\n", + " 'je perds le sens et ma conscience',\n", + " 'et ça me fait rire, y a rien à dire',\n", + " 'comme on est bien',\n", + " \"quoi? j'en sais rien\",\n", + " \"c'est pas facile d'être indélébile\",\n", + " 'hello, hello, hello, how low?',\n", + " 'hello, hello, hello, how low?',\n", + " 'hello, hello, hello, how low?',\n", + " 'hello, hello... un, deux, trois !',\n", + " \"with the lights out, it's less dangerous\",\n", + " 'here we are now, entertain us',\n", + " 'i feel stupid and contagious',\n", + " 'here we are now, entertain us',\n", + " 'a mulatto',\n", + " 'an albino',\n", + " 'a mosquito',\n", + " 'my libido',\n", + " 'a denial, a denial',\n", + " 'a denial, a denial',\n", + " 'a denial, a denial',\n", + " 'a denial, a denial',\n", + " 'a denial',\n", + " '(musique: daniel mongrain & stéphane bélanger)',\n", + " '(paroles: françois mongrain)',\n", + " \"(la nature est souvent prise pour acquise et à la légère. les éléments, lorsque déchainés, sont incontrôlables, ne montrant jamais de pitié. arrêtons de penser à notre petite personne. nous ne sommes qu'un simple grain de sable comparé au pouvoir des sources primaires.)\",\n", + " '(fm-) calcination',\n", + " '(dm-) elementals unleashed',\n", + " '- blow the nations down',\n", + " '- hidden forces revealed',\n", + " '- engulf the titans',\n", + " '- main sources of power',\n", + " '- tremors',\n", + " '- will defeat the leaders',\n", + " '(fm-) falling empire',\n", + " 'absolute failure',\n", + " 'neglected nature',\n", + " 'a foreseen disaster',\n", + " \"the elements'masters\",\n", + " 'shall exult their anger',\n", + " 'in this trial without lawyers',\n", + " \"don't expect to be spared...\",\n", + " '..by the four primal sources',\n", + " '- calcination',\n", + " '- elementals unleashed',\n", + " '- blow the nations down',\n", + " '- hidden forces revealed',\n", + " '- engulf the titans',\n", + " '- main sources of power',\n", + " '- tremors',\n", + " '- will defeat the leaders',\n", + " '(lead: pier-luc lampron)',\n", + " '(lead: daniel mongrain)',\n", + " \"i can see you i can't see you\",\n", + " \"i can see you i can't see you\",\n", + " \"i can't see you i can see you again\",\n", + " \"i can' see you i can't see you again\",\n", + " \"i can see you i can't see you\",\n", + " \"i can see you i can't see you\",\n", + " \"i can't see you i can see you again\",\n", + " \"i can see you i can't see you my friend\",\n", + " \"i can give you i can't tell you\",\n", + " \"i can't give you i can tell you\",\n", + " \"i can't give you i can give you again\",\n", + " \"i can't tell you i can't tell you my name\",\n", + " 'je voudrais du temps',\n", + " 'je voudrais te sentir près de moi',\n", + " 'contre des temps morts',\n", + " \"est ce que tu m'aimes encore ?\",\n", + " 'je voudrais du temps',\n", + " 'et te sentir encore près de moi',\n", + " 'contre des plus forts',\n", + " \"est ce que tu m'aimes encore ?\",\n", + " \"i can't love you i can love you\",\n", + " \"i can't love you i can love you\",\n", + " \"i can't love you i can love you again\",\n", + " \"i can't kiss you i can't kiss you again\",\n", + " \"i can't feel you i can't see you\",\n", + " \"i can't feel you i can't see you\",\n", + " \"i can't feel you\",\n", + " \"i can't feel you again...\",\n", + " 'play that song for me',\n", + " 'sounds so supernatural',\n", + " \"that's how it has to be\",\n", + " 'play that song for me',\n", + " 'sounds so supernatural',\n", + " \"that's how it has to be\",\n", + " 'play that song for me',\n", + " 'sounds so supernatural',\n", + " \"that's how it has to be\",\n", + " 'play that song for me',\n", + " 'sounds so supernatural',\n", + " \"that's how it has to be\",\n", + " 'oubliez-ça jamais',\n", + " \"quand j'avais quinze ans\",\n", + " 'un petit commençait',\n", + " 'african music',\n", + " 'a consumé',\n", + " \"jusque d'aujourd'hui\",\n", + " \"c'est ma vie\",\n", + " 'play that song for me',\n", + " 'sounds so supernatural',\n", + " \"that's how it has to be\",\n", + " 'play that song for me',\n", + " 'sounds so supernatural',\n", + " \"that's how it has to be\",\n", + " 'avec mes amis',\n", + " 'on a beaucoup tourné',\n", + " 'je jouais les congas',\n", + " \"c'est le vrai, le reggae\",\n", + " 'ça me fait pas peur',\n", + " 'les musiques depuis que',\n", + " 'vont me donner bonheur',\n", + " 'play that song for me',\n", + " 'sounds so supernatural',\n", + " \"that's how it has to be\",\n", + " 'play that song for me',\n", + " 'sounds so supernatural',\n", + " \"that's how it has to be\",\n", + " 'sounds so supernatural',\n", + " 'sounds so supernatural',\n", + " \"that's how it has to be\",\n", + " 'negative ed',\n", + " \"don't play my bassline wrong, dickhead\",\n", + " 'negative ed',\n", + " \"he's a naysayer of his neg\",\n", + " 'negative ed',\n", + " 'lives in my brain, out of his head',\n", + " 'negative ed',\n", + " \"he's not ok and i'm just dead\",\n", + " 'ned',\n", + " \"don't fuck with negative ed\",\n", + " \"don't fuck with negative ed\",\n", + " \"don't fuck with negative ed\",\n", + " 'wow',\n", + " 'negative ed',\n", + " 'yeah yeah yeah yeah',\n", + " 'oh why you so negative?',\n", + " \"eh mais putain, mais pourquoi t'es si négatif ?\",\n", + " \"non mais tu te fous de ma gueule, ça fait combien de jours que tu t'es pas lavé ?\",\n", + " \"lave-toi putain (...) tu pues ! ta gueule putain ! ferme ta gueule ! arrête de t'plaindre ! putain ferme ta gueule ! tu m'saoules ! dégage ! sors de chez moi ! j'te déteste !\",\n", + " 'negative ed',\n", + " \"don't play my bassline wrong dickhead!\",\n", + " 'negative ed',\n", + " 'my adversariel dickhead',\n", + " 'negative ed',\n", + " 'he does cocaine & i make bread',\n", + " 'negative ed',\n", + " 'out of his way',\n", + " \"he's anti-dead\",\n", + " 'ned',\n", + " \"don't fuck with negative ed\",\n", + " \"don't fuck with negative ed\",\n", + " \"don't fuck with negatory\",\n", + " 'negatory negatory',\n", + " 'ya ya ya ya',\n", + " 'negative ed',\n", + " 'yeah yeah yeah yeah',\n", + " 'why you so negative?',\n", + " 'ta gueule!',\n", + " \"tu sers à rien, tu passes tes journées à t'branler après tu veux même pas m'baiser, putain mais sors de chez moi!\",\n", + " \"cent a l'heure\",\n", + " \"sur un long ruban d'argent\",\n", + " 'la pluie fait briller la route allegrement',\n", + " 'et la radio, et la radio',\n", + " 'hurle a tout vent',\n", + " 'ce jour la',\n", + " 'le bonheur etait au bout',\n", + " \"mon coeur avait l'air d'un fou\",\n", + " 'je me revois',\n", + " 'foncant comme une fleche',\n", + " 'au rendez-vous',\n", + " 'amoureuse, amoureuse',\n", + " \"j'avais mis ma vie en musique\",\n", + " 'amoureuse, amoureuse',\n", + " \"j'etais l'enfant d'une chanson\",\n", + " \"amoureuse (sur un ruban d'argent)\",\n", + " 'amoureuse (la pluie fait le beau temps)',\n", + " 'et la radio, et la radio',\n", + " \"hurle a tout vent (sur un ruban d'argent)\",\n", + " \"amoureuse (j'entends courir mon coeur)\",\n", + " 'amoureuse (je vois courir les fleurs)',\n", + " \"et l'autoroute qui se deroule\",\n", + " \"a cent a l'heure\",\n", + " 'amoureuse, amoureuse',\n", + " \"j'avais mis ma vie en musique\",\n", + " 'amoureuse, amoureuse',\n", + " \"j'etais l'enfant d'une chanson\",\n", + " \"en roulant j'avais fait dix fois le tour\",\n", + " \"de tout un roman d'amour pour un garcon\",\n", + " 'qui me telephonait',\n", + " 'depuis trois jours',\n", + " 'amoureuse, amoureuse',\n", + " \"j'avais mis ma vie en musique\",\n", + " 'is there anybody here',\n", + " \"searchin' for the last trance ?\",\n", + " 'loopy bones and skeletons breathe',\n", + " 'into the winds of nonsense',\n", + " \"dancing the death's dance\",\n", + " \"she's coming fast...\",\n", + " \"fondus dans l'ébène pour d'étranges parades nuptiales\",\n", + " 'cadavres exquis et ravers célèbrent le grand tout',\n", + " \"trémoussent leur cul dans l'infusoire des sociétés macabres\",\n", + " 'foire aux vanités au chant du hibou',\n", + " 'salvation',\n", + " 'by hard beats',\n", + " 'when they will take you by your cold hands',\n", + " \"for the death's dance\",\n", + " 'is there anybody here',\n", + " \"searchin' for the last trance ?\",\n", + " 'loopy bones and skeletons breathe',\n", + " 'into the winds of nonsense',\n", + " \"dancing the death's dance\",\n", + " \"she's coming fast...\",\n", + " 'tes neuf vies se sont écoulées, bébé ...ils approchent',\n", + " 'leurs tambours roulent la galoche des loteries infernales',\n", + " \"demi-dieux grotesques, joyeux et glaçants face aux psychés, crachent l'écume des lunes\",\n", + " 'et des queues de comètes dans tes annales',\n", + " 'salvation',\n", + " 'by hard kicks',\n", + " 'when they will take you by your jelly brains',\n", + " \"for the death's dance\",\n", + " 'is there anybody here',\n", + " \"searchin' for the last trance ?\",\n", + " 'loopy bones and skeletons breathe',\n", + " 'into the winds of nonsense',\n", + " \"dancing the death's dance\",\n", + " 'and maquabir exhorted:',\n", + " '\"what we were, you are\"',\n", + " '\"what we are, you will be\"',\n", + " \"passé le scalpel des jours, c'est un essaim de poignards-cristal\",\n", + " \"qui bourdonne sous l'pick-up des dj's en mains anonymes des ruches noires\",\n", + " 'ça y est, la rumeur du vent efface ton monde, tu es ce crâne au sourire sans fin',\n", + " 'oh infini éjaculatoire',\n", + " 'salvation',\n", + " 'beats your ears',\n", + " 'when they will take you by your cold hands',\n", + " \"for the death's dance\",\n", + " 'is there anybody here',\n", + " \"searchin' for the last trance ?\",\n", + " 'loopy bones and skeletons breathe',\n", + " 'into the winds of nonsense',\n", + " \"dancing the death's dance\",\n", + " \"she's coming fast...\",\n", + " '(nicola sirchis / dominique nicolas)',\n", + " '55, les 7 jours de pekin',\n", + " \"c'est guerre froide tout autour du tonkin\",\n", + " '57, buddy holly rocker',\n", + " \"eddy cochran rock'n roller\",\n", + " '55, les 7 jours de pekin',\n", + " \"c'est guerre froide tout autour du tonkin\",\n", + " '57, buddy holly rocker',\n", + " \"eddy cochran rock'n roller\",\n", + " 'you!',\n", + " \"voila un recit maudit que t'oublies\",\n", + " \"place d'italie\",\n", + " \"voila un recit maudit que t'oublies\",\n", + " \"place d'italie\",\n", + " \"voila un recit maudit que t'oublies\",\n", + " \"place d'italie\",\n", + " 'a coup de be-bop',\n", + " 'au golf drouop',\n", + " 'a coup de be-bop',\n", + " 'au golf drouop',\n", + " 'a coup de be-bop',\n", + " 'au golf drouop',\n", + " '55, tu jouais pour dien bien phu',\n", + " \"ho chi minh se fout de toi - t'es cocu\",\n", + " '58, presley se contortionne',\n", + " \"rock'n roll il nous en donne\",\n", + " '55, tu jouais pour dien bien phu',\n", + " \"ho chi minh se fout de toi - t'es cocu\",\n", + " '58, presley se contortionne',\n", + " \"rock'n roll il nous en donne\",\n", + " 'you!',\n", + " \"voila un recit maudit que t'oublies\",\n", + " \"place d'italie\",\n", + " \"voila un recit maudit que t'oublies\",\n", + " \"place d'italie\",\n", + " \"voila un recit maudit que t'oublies\",\n", + " \"place d'italie\",\n", + " 'a coup de be-bop',\n", + " 'au golf drouop',\n", + " 'a coup de be-bop',\n", + " 'au golf drouop',\n", + " 'a coup de be-bop',\n", + " 'au golf drouop',\n", + " \"voila un recit maudit que t'oublies\",\n", + " \"place d'italie\",\n", + " \"voila un recit maudit que t'oublies\",\n", + " \"place d'italie\",\n", + " \"voila un recit maudit que t'oublies\",\n", + " \"place d'italie\",\n", + " 'a coup de be-bop',\n", + " 'au golf drouop',\n", + " 'a coup de be-bop',\n", + " 'au golf drouop',\n", + " 'a coup de be-bop',\n", + " 'au golf drouop',\n", + " 'a coup de be-bop',\n", + " 'au golf drouop',\n", + " 'a coup de be-bop',\n", + " 'be-bop',\n", + " 'be-bop',\n", + " 'be-bop',\n", + " 'oi',\n", + " 'original:',\n", + " 'do you need me ?',\n", + " 'do you need me to punish you for all of your sins ?',\n", + " 'oh i need you!',\n", + " 'do you want me ?',\n", + " 'do you want me to break up the animal in you ?',\n", + " 'oui je te veux !',\n", + " 'oui je te veux toi pour réveiller tous mes démons',\n", + " 'je ne peux plus me passer de toi !',\n", + " 'tu es mon seul désir',\n", + " 'besoin de toi pour, éveiller mes désirs',\n", + " 'my angel slept with a devil',\n", + " 'he stole her wings',\n", + " 'my angel burns for ever',\n", + " 'her lust made her weak',\n", + " 'do you want me ?',\n", + " 'do you me to bring out the animal in you ?',\n", + " 'j’ai besoin de toi !',\n", + " 'j’ai besoin de toi pour ne plus rire de tous mes vices',\n", + " 'you can’t ignore me',\n", + " 'i am the only one',\n", + " 'i know you need me',\n", + " 'i’m the one that wakes up your lust',\n", + " 'my angel slept with a devil',\n", + " 'he stole her wings',\n", + " 'my angel burns for ever',\n", + " 'her lust made her weak',\n", + " 'j’ai rencontré le diable',\n", + " 'il m’a brisé les ailes',\n", + " 'perdu pour toujours',\n", + " 'mon désir fera ma perte',\n", + " '...made her weak',\n", + " 'je ne peux plus me passer de toi',\n", + " 'tu es mon seul désir',\n", + " 'besoin de toi pour',\n", + " 'éveiller mes désirs',\n", + " 'j’ai rencontré le diable',\n", + " 'il m’a brisé les ailes',\n", + " 'perdu pour toujours',\n", + " 'mon désir fera ma perte',\n", + " 'j’ai rencontré le diable',\n", + " 'il m’a brisé les ailes',\n", + " 'perdu pour toujours',\n", + " 'mon désir fera ma perte',\n", + " 'english:',\n", + " 'do you need me?',\n", + " 'do you need me to punish you for all of your sins?',\n", + " 'oh i need you!',\n", + " 'do you want me?',\n", + " 'do you want me to break up the animal in you?',\n", + " 'yes i want you!',\n", + " 'yes i want you to wake up all of my demons',\n", + " 'i can’t go without you!',\n", + " 'you are my only desire',\n", + " 'i need you to wake up my desires',\n", + " 'my angel slept with a devil',\n", + " 'he stole her wings',\n", + " 'my angel burns forever',\n", + " 'her lust made her weak',\n", + " 'do you want me?',\n", + " 'do you me to bring out the animal in you?',\n", + " 'i need you!',\n", + " 'i need you to stop laughing about my “vices”',\n", + " 'you can’t ignore me',\n", + " 'i am the only one',\n", + " 'i know you need me',\n", + " 'i’m the one that wakes up your lust',\n", + " 'my angel slept with a devil',\n", + " 'he stole her wings',\n", + " 'my angel burns forever',\n", + " 'her lust made her weak',\n", + " 'i met the devil',\n", + " 'he broke my wings',\n", + " 'lost forever',\n", + " 'my desire will lead to my loss',\n", + " '...made her weak',\n", + " 'i can’t go without you!',\n", + " 'you are my only desire',\n", + " 'i need you to wake up my desires',\n", + " 'i met the devil',\n", + " 'he broke my wings',\n", + " 'lost forever',\n", + " 'my desire will lead to my loss',\n", + " 'i met the devil',\n", + " 'he broke my wings',\n", + " 'lost forever',\n", + " 'my desire will lead to my loss',\n", + " 'oh oh, oh oh oh',\n", + " 'so jetlagged',\n", + " 'quelle heure est-il, où tu es?',\n", + " 'un autre avion et tu repars',\n", + " ...]},\n", + " 'data': ['y tombe des bombes',\n", + " 'ça boume, surboum, sublime',\n", + " \"des plombe qu'ça tombe\",\n", + " \"un monde immonde s'abîme\",\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " \"c'est l'hécatombe\",\n", + " 'ça retombe en trombe, ça fume',\n", + " 'tout flambe, les tombes',\n", + " 'les temples, exemple, sublime',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'infâme napalm',\n", + " \"les flammes surplombent l'abîme\",\n", + " 'goddamn, tout crame',\n", + " 'tout tremble et tombe en ruine',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'rock around the bunker',\n", + " 'rock around, rock around',\n", + " 'bring the sun',\n", + " 'aaaaaaaaaaah',\n", + " 'ooooooooooh',\n", + " 'aaaaaaaaaaah',\n", + " 'oooooooooh',\n", + " 'bring the sun, spins around and around and around',\n", + " 'bring the sun, spins around and around and around',\n", + " 'bring the sun, spins around and around and around',\n", + " 'bring the sun, spins around and around and around',\n", + " 'is it mine, is it mine, is it mine, is it mine',\n", + " 'is it mine, is it mine, is it mine, is it mine',\n", + " 'is it mine, is it mine, is it mine, is it mine',\n", + " 'is it mine, is it mine, is it mine, is it mine',\n", + " 'spins around and around and around and around',\n", + " 'spins around and around and around and around',\n", + " 'spins around and around and around and around',\n", + " 'spins around and around and around and around',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " 'sun, sun, bring the sun',\n", + " \"toussaint l'ouverture\",\n", + " 'freedom!',\n", + " 'from!',\n", + " 'home!',\n", + " 'home!',\n", + " '*horse galloping and neighing*',\n", + " 'toussaint!',\n", + " \"toussaint l'ouverture!\",\n", + " 'toussaint!',\n", + " \"toussaint l'ouverture!\",\n", + " 'liberté!',\n", + " 'egalité!',\n", + " 'fraternité!',\n", + " 'sangre de dios!',\n", + " 'hijo de dios!',\n", + " 'amor de dios!',\n", + " 'sangre es vida!',\n", + " 'vida es sangre!',\n", + " 'sangre es amor!',\n", + " 'amor es sangre!',\n", + " 'toussaint!',\n", + " \"toussaint l'ouverture!\",\n", + " \"toussaint l'ouverture!\",\n", + " 'freedom!',\n", + " 'freedom!',\n", + " 'ellos!',\n", + " \"feuilles oh, sauvez la vie moi, j'ai de la misère oh\",\n", + " \"feuilles oh, sauvez la vie moi, j'ai de la misère oh\",\n", + " 'pitie moi malade, je cours à la maison du gangan similo',\n", + " 'pitie moi malade, je cours à la maison du gangan , si gangan est bon',\n", + " \"il me sauvera la vie , j'ai de la misère oh\",\n", + " 'actual haitian creole lyrics:',\n", + " 'fèy, o! sove lavi mwen. nan mizè mwen ye, o!',\n", + " 'fèy, o! sove lavi mwen. nan mizè mwen ye, o!',\n", + " 'pitit mwen malad, mwen kouri kay gangan similo',\n", + " 'pitit mwen malad, mwen kouri kay gangan. si li bon gangan',\n", + " 'sove lavi mwen, nan mizè mwen ye, o!',\n", + " 'english translation:',\n", + " \"oh leaves, save my life. i'm in misery. oh!\",\n", + " \"oh leaves, save my life. i'm in misery. oh!\",\n", + " 'little me is sick. i run to the house of similo (the spiritual healer)',\n", + " \"little me is sick. i run to the house of the spiritual healer. if he's a good one\",\n", + " \"he'll save my life. i'm in misery. oh!\",\n", + " 'drum & bass – right in yer face',\n", + " 'in a movie place we gotta give it no stress',\n", + " 'wicked and liquid – wicked – wicked and liquid',\n", + " 'one / one, two / two, give it to the rest – come on ! x2',\n", + " \"j'ai comme l’impression parfois qu'mes subs te foutent la pression\",\n", + " \"t'es à 120 pulsations fais tésau l’bouton pression\",\n", + " \"j'aime quand ça glisse, quand le beat déboule le long de tes cuisses\",\n", + " 'ma langue frétille et mon index est relax',\n", + " 'drum & bass – right in your face',\n", + " \"la grosse caisse qui tabasse même si le dancefloor s'affaisse\",\n", + " 'ça fait wicked and liquid – wicked – wicked and liquid',\n", + " \"one / one, two / two, j'aime quand ça fait hoo ! hoo !\",\n", + " 'i could be you, you could be me',\n", + " 'two raindrops in the same sea',\n", + " 'you could be me, i could be you',\n", + " 'two angles of the same view',\n", + " 'and we share the same blood',\n", + " 'comme deux gouttes d’eau',\n", + " 'on se ressemble',\n", + " 'comme provenant de la même mère',\n", + " 'comme deux ruisseaux (you could be me)',\n", + " 'qui se rassemblent (i could be you)',\n", + " 'pour faire les grandes rivières',\n", + " 'and we share the same blood',\n", + " 'yeah, we share the same blood',\n", + " 'and we share the same blood',\n", + " 'yeah, we share the same blood',\n", + " 'music is the weapon, music is the weapon of the future',\n", + " 'music is the weapon, music is the weapon of the future',\n", + " 'music is the weapon, music is the weapon of the future',\n", + " 'same fucking blood',\n", + " 'same fucking blood',\n", + " 'au 56, 7, 8, peu importe',\n", + " 'de la rue x, si vous frappez à la porte',\n", + " \"d'abord un coup, puis trois autres, on vous laisse entrer\",\n", + " 'seul et parfois même accompagné',\n", + " 'une servante, sans vous dire un mot, vous précède',\n", + " 'des escaliers, des couloirs sans fin se succèdent',\n", + " \"décorés de bronzes baroques, d'anges dorés\",\n", + " \"d'aphrodites et de salomés\",\n", + " \"s'il est libre, dites que vous voulez le quarante-quatre\",\n", + " \"c'est la chambre qu'ils appellent ici de cléopâtre\",\n", + " 'dont les colonnes du lit de style rococo',\n", + " 'sont des nègres portant des flambeaux',\n", + " \"entre ces esclaves nus taillés dans l'ébène\",\n", + " 'qui seront les témoins muets de cette scène',\n", + " 'tandis que là-haut un miroir nous réfléchit',\n", + " \"lentement j'enlace melody\",\n", + " 'melody',\n", + " 'melody',\n", + " 'english translation - \"the private mansion\"',\n", + " \"at number fifty-six, seven, eight, it doesn't matter\",\n", + " 'on x street, if you knock on the door',\n", + " 'first one time, then three more, they let you in',\n", + " 'alone and sometimes even with a friend',\n", + " 'a servant, without a word, before you went his way',\n", + " 'long endless passages, spiral stairways',\n", + " 'decorated with baroque bronzes, golden angels',\n", + " 'aphrodites and salomés',\n", + " \"if it's free, say you want number fourty-four\",\n", + " 'it\\'s the room they call \"the cleopatra\"',\n", + " 'around the four-posted rococo-style bed',\n", + " 'stand black statues holding torches',\n", + " 'between these naked slaves, carved from ebony',\n", + " 'who are the silent witnesses of this scene',\n", + " 'while up on the ceiling, a mirror reflects us',\n", + " 'slowly, i embraced melody',\n", + " \"ça m'a pris par surprise\",\n", + " \"quand j'étais qu'un gamin\",\n", + " \"j'regardais tomber mes nuits\",\n", + " \"et j'en attendais rien\",\n", + " 'moi à springfield, massachusetts',\n", + " \"la vie coulait comme de l'eau\",\n", + " \"un matin j'ai pris perpète\",\n", + " 'en ouvrant la radio',\n", + " \"ça s'appelait rock and roll\",\n", + " \"moi ça m'a rendu folle\",\n", + " \"moi j'y ai rien compris\",\n", + " \"sauf que c'était ma vie\",\n", + " 'tu comprends rien mais que ça sonne',\n", + " 'ça faisait un, deux, trois, pretty mama',\n", + " 'quatre, cinq, six, i miss you',\n", + " \"sept, huit, neuf, can't get enough\",\n", + " \"dix, onze, douze, i ain't got the blues\",\n", + " 'one, two, three, come on baby',\n", + " 'four, five, six, a kiss',\n", + " \"seven, eight, ninе, you're on my mind\",\n", + " 'ten, elеven, twelve, tell me when',\n", + " \"il paraît qu'il y en aurait qui se damnent\",\n", + " \"pour du pouvoir, pour de l'or\",\n", + " 'chacun sa façon de brader son âme',\n", + " \"on les plaint pour ce qu'ils ignorent\",\n", + " 'moi quand j\\'entends l\\'intro de \"hey joe\"',\n", + " \"oh je comprends mieux qu'aucun mot\",\n", + " 'et rien ne me met dans le même état',\n", + " \"que la voix d'aretha\",\n", + " \"ça s'appelait rock and roll rock, rock and roll\",\n", + " \"moi ça m'a rendu folle ça m'a rendu, rendu folle\",\n", + " \"moi j'y ai rien compris rien compris\",\n", + " \"sauf que c'était ma vie c'était ma vie\",\n", + " 'tu comprends rien mais que ça sonne',\n", + " 'ça faisait',\n", + " 'ça faisait un, deux, trois, pretty mama',\n", + " 'quatre, cinq, six, i miss you',\n", + " \"sept, huit, neuf, can't get enough\",\n", + " \"dix, onze, douze, i ain't got the blues\",\n", + " 'one, two, three, come on baby baby',\n", + " 'four, five, six, a kiss a kiss',\n", + " \"seven, eight, nine, you're on my mind\",\n", + " 'ten, eleven, twelve, tell me when',\n", + " \"et c'était plus qu'une musique\",\n", + " 'un langage, une communion',\n", + " 'une religion laïque',\n", + " 'notre façon de dire non',\n", + " \"des cheveux longs jusqu'au blouson\",\n", + " 'mêmes idoles et mêmes temples',\n", + " 'nous allions tous même direction',\n", + " 'nulle part, oui, mais ensemble',\n", + " \"et c'est un, deux, trois, pretty mama\",\n", + " 'quatre, cinq, six, i miss you miss you',\n", + " \"sept, huit, neuf, can't get enough\",\n", + " \"dix, onze, douze, i ain't got the blues\",\n", + " 'one, two, three, come on baby baby',\n", + " 'four, five, six, a kiss',\n", + " \"seven, eight, nine, you're on my mind\",\n", + " 'ten, eleven, twelve, tell me when tell me when',\n", + " 'un, deux, trois, pretty mama pretty mama',\n", + " 'quatre, cinq, six, i miss you miss you',\n", + " \"sept, huit, neuf, can't get enough can't get enough\",\n", + " \"dix, onze, douze, i ain't got the blues\",\n", + " 'one, two, three, come on baby yeah-ah',\n", + " 'four, five, six, a kiss give me a kiss',\n", + " \"seven, eight, nine, you're on my mind on my mind\",\n", + " 'ten, eleven, twelve, tell me when come on baby',\n", + " 'un, deux, trois, pretty mama pretty mama',\n", + " 'quatre, cinq, six, i miss you i miss you',\n", + " \"sept, huit, neuf, can't get enough i can't get enough\",\n", + " \"dix, onze, douze, i ain't got the blues got the blues\",\n", + " 'come on baby',\n", + " 'hey yeah yeah',\n", + " 'alright-right',\n", + " 'alright, pretty mama',\n", + " 'here now lies the immaturity of verity',\n", + " 'in a rotten reality that relies on deception',\n", + " 'and nourishes lies since its inception',\n", + " 'i no longer choke on the smoke screen',\n", + " 'and a chaotic stream with extreme means',\n", + " 'yet in the meantime my mind is blown away',\n", + " 'cast astray',\n", + " 'castrer et incarcérer car',\n", + " 'je ne sais plus trop quoi penser',\n", + " 'ni par ou passer pour aller outre la route toute tracée',\n", + " 'qui nous est: désignée, destinée, pavée, érigée et régis',\n", + " 'par les mécaniques économiques souillées sous',\n", + " \"l'influence de l'opinion de ces véreux et vicieux\",\n", + " \"vice rois de la haute finance qui font fit d'autrui\",\n", + " \"qui font l'autruche alors que\",\n", + " 'gaz en main ils gèrent la ruche',\n", + " 'but here still lies the immaturity of verity',\n", + " 'in a rotten reality that relies on deception',\n", + " 'and nourishes lies since its inception',\n", + " 'but to unveil those misfit deeds',\n", + " 'would indeed deaden the dubious nature of the beast',\n", + " 'a childish fantasy, my forlorn fetish of verity',\n", + " 'utopian immaturity',\n", + " '\"a counter-progress towards economy',\n", + " 'and a felony against the ill-will\"',\n", + " 'of an elitist society',\n", + " \"ci-gît céans l'immaturité de la vérité\",\n", + " 'dans une réalité tarie qui se fie à la tromperie',\n", + " \"face à la fantaisie infantile d'un fétiche masochiste\",\n", + " \"pour le fin fond de l'histoire, la vérité, puis le savoir\",\n", + " 'ainsi fûmes nous ostracisés, des lors subjugués',\n", + " \"et intoxiqués par l'épais écran de fumée\",\n", + " 'it is night',\n", + " \"it's not night\",\n", + " \"i'm happy\",\n", + " \"i'm not happy\",\n", + " \"i'm sad\",\n", + " \"i'm not sad\",\n", + " \"it's early\",\n", + " \"it's late\",\n", + " 'je marche',\n", + " 'je marche pas',\n", + " 'bonsoir monsieur',\n", + " 'tu viens avec moi ?',\n", + " 'tu viens mon chéri ?',\n", + " 'oui monsieur, viens',\n", + " 'tu es prêt ?',\n", + " 'viens…',\n", + " \"ça m'est égal\",\n", + " 'what do you want me to do?',\n", + " 'je veux - je veux pas',\n", + " \"i touch you - et c'est dur monsieur\",\n", + " \"it's not like that\",\n", + " \"i'll show you…\",\n", + " 'show you love… love…',\n", + " 'let me sink…',\n", + " 'ohhh…',\n", + " \"je dois manger - n'importe quoi\",\n", + " 'i break off the corner of your mind and eat it',\n", + " \"i'm eating your mind\",\n", + " \"i'm eating your body\",\n", + " 'viens ici ici',\n", + " 'come i want your body',\n", + " \"viens, viens faire l'amour\",\n", + " \"faire l'amour\",\n", + " \"faire l'amour\",\n", + " 'come into my arms',\n", + " 'i kiss your lips',\n", + " 'you die',\n", + " 'i want your body',\n", + " 'i do not want your body',\n", + " \"de quoi s'agit-il ?\",\n", + " 'bonne nuit - good night',\n", + " \"bonjour - mornin'\",\n", + " \"it's night - it's day\",\n", + " \"it's morning\",\n", + " \"c'est ça, non?\",\n", + " \"i love you, you're so well read\",\n", + " 'blue stockings well spread',\n", + " 'your carnal knowledge knocks me dead',\n", + " \"i love you, you're so well read\",\n", + " 'blue stocking give head',\n", + " \"i love you, you've read:\",\n", + " \"ovid, anaïs nin, the song of solomon, the perfumed garden and georges bataille's the story of the eye\",\n", + " 'the petronius satyricon, the arabian nights, the decameron',\n", + " \"the marquis de sade's 120 days\",\n", + " 'and serge gainsbourg singing songs to sweet jane b',\n", + " \"i love you, you've read:\",\n", + " 'sacher-masoch and dhl',\n", + " \"portnoy's complaint and mine as well\",\n", + " 'frank harris, the life and loves',\n", + " 'lusts of a moron, wings of a dove',\n", + " 'the latins of the silver age',\n", + " 'the triolets of paul verlaine',\n", + " 'lautreamont and g. cabrera infante',\n", + " 'mishima yukio and sweet jane b',\n", + " \"i love you, you're so well read\",\n", + " 'blue stocking give head',\n", + " 'whisper what they said:',\n", + " \"'le silence de la chambre est profond\",\n", + " \"aucun bruit n'arrive plus\",\n", + " 'ni des routes, ni de la ville, ni de la mere',\n", + " 'la nuit est a son terme, partout limpide et noir',\n", + " 'la lune a disparu',\n", + " 'ils ont peur',\n", + " 'il ecoute, les yeux au sol',\n", + " 'son silence effrayante',\n", + " 'il parle de sa beauté',\n", + " 'les yeux fermees',\n", + " \"il peut revoir encore l'image dans sa perfection'\",\n", + " \"c'est le malaise du moment\",\n", + " \"l'épidémie qui s'étend\",\n", + " 'la fête est finie on descend',\n", + " 'les pensées qui glacent la raison',\n", + " 'paupières baissées, visage gris',\n", + " 'surgissent les fantomes de notre lit',\n", + " 'on ouvre le loquet de la grille',\n", + " \"du taudit qu'on appelle maison\",\n", + " 'protect me from what i want',\n", + " 'protect me from what i want',\n", + " 'protect me from what i want',\n", + " 'protect me',\n", + " 'protect me',\n", + " 'protège-moi, protège-moi',\n", + " 'protège-moi, protège-moi',\n", + " 'protège-moi, protège-moi',\n", + " 'protège-moi, protège-moi',\n", + " 'sommes nous les jouets du destin',\n", + " 'souviens toi des moments divins',\n", + " 'planants, éclatés au matin',\n", + " 'et maintenant nous sommes tout seuls',\n", + " \"perdus les reves de s'aimer\",\n", + " 'les temps où on avait rien fait',\n", + " 'il nous reste toute une vie pour pleurer',\n", + " 'et maintenant nous sommes tout seuls',\n", + " 'protect me from what i want',\n", + " 'protect me from what i want',\n", + " 'protect me from what i want',\n", + " 'protect me',\n", + " 'protect me',\n", + " 'protect me from what i want (protège-moi, protège-moi)',\n", + " 'protect me from what i want (protège-moi, protège-moi)',\n", + " 'protect me from what i want (protège-moi, protège-moi)',\n", + " 'protect me',\n", + " 'protect me',\n", + " 'protège-moi, protège-moi',\n", + " 'protège-moi, protège-moi',\n", + " 'protect me from what i want',\n", + " 'protect me from what i want',\n", + " 'protect me from what i want',\n", + " 'protect me',\n", + " 'protect me',\n", + " 'protect me from what i want',\n", + " 'protect me from what i want',\n", + " 'protect me from what i want',\n", + " 'protect me',\n", + " 'protect me',\n", + " 'protect me from what i want',\n", + " 'protect me from what i want',\n", + " 'protect me from what i want',\n", + " 'protect me',\n", + " 'protect me',\n", + " 'disconnected from what we used to be',\n", + " 'reaching once and for all the point of no return',\n", + " 'overthinking we redefined our kind',\n", + " \"a failed attempt to rewrite nature's law\",\n", + " 'we sacrified our spirituality',\n", + " 'on the altar of superficiality',\n", + " \"lost far from our elder's way\",\n", + " 'so far away',\n", + " 'disciples of transhumanism',\n", + " 'a shattered icon of our legacy',\n", + " \"lost far from our elder's way\",\n", + " 'so far away',\n", + " 'we soiled our land on planetary scale',\n", + " 'reaching once and for all the point of no return',\n", + " 'a foolish matricide of mother earth',\n", + " 'an attempt to rise as a new maker',\n", + " 'des millénaires nous avons vécu selons nos traditions',\n", + " \"dans le respect de nos ancêtres jusqu'à ce que les cultures de masse\",\n", + " \"n'atrophient notre intellect pour sombrer dans un monde envahi du vide\",\n", + " \"malgré l'urgence d'agir maintenant, avant qu'il ne soit trop tard\",\n", + " 'dociles, les brebis bien domptées se sont mutilé la raison, abandonnant leur liberté',\n", + " 'on comptera nos morts abandonnés, on comptera les corps des crucifiés. de connards en',\n", + " 'prisonniers, de sévices en amitiés ,de bâtards en tisonniers : des supplices alambiqués',\n", + " 'years passing by',\n", + " 'your mind messed up, so is life',\n", + " 'where did this come from?',\n", + " 'struggling through the night',\n", + " 'with only clouds on your side',\n", + " \"it's not true though\",\n", + " \"it's not true\",\n", + " 'to bleed',\n", + " 'is to feel',\n", + " 'in your core',\n", + " 'dreams',\n", + " 'fall apart',\n", + " \"don't you ever\",\n", + " \"don't you ever close your heart to me\",\n", + " \"don't you ever\",\n", + " \"don't you ever close your heart to me\",\n", + " 'things always fall apart',\n", + " 'rips your heart out thousand times',\n", + " \"it's not the end though\",\n", + " 'falling through the sunken skies',\n", + " 'with your words by my side',\n", + " \"it's not the end though\",\n", + " \"it's not the end\",\n", + " 'to bleed',\n", + " 'is to feel',\n", + " 'dreams',\n", + " 'fall apart',\n", + " \"don't you ever\",\n", + " \"don't you ever close your heart to me\",\n", + " 'dreams',\n", + " 'fall apart',\n", + " \"don't you ever\",\n", + " 'never say never',\n", + " \"it's not over now\",\n", + " '\"que les cieux noirs d\\'orage',\n", + " 'chassent le voile devant tes yeux',\n", + " \"ainsi que tu as chuté tu t'élèveras\",\n", + " 'tombant au travers des miroirs de ton espirit',\n", + " \"qui t'ont gardé sauf et aveugle\",\n", + " 'une chute libre dont tu ne vois pas la fin',\n", + " \"à présent laisse l'air caresser ta peau\",\n", + " 'gisent encore des fragments épars',\n", + " 'dans la fissure entre les marées',\n", + " 'mais la vérité seule survivra',\n", + " 'tout le reste périra par le feu',\n", + " 'sous des nuages de pluie sombres',\n", + " 'à travers ton océan de douleur',\n", + " 'le soleil de nouveau percera',\n", + " 'et tu verras un autre jour\"',\n", + " '\"c\\'était le moment du départ. il me venait des vilaines pensées, des sensations bien sinistres... toute la moche incohérence des vapeurs, des foules, des sifflets, ça stupéfie... je voyais là-bas au loin les rails qui foutaient le camp dans le tunnel. moi aussi j’allais disparaître...\"',\n", + " 'memory',\n", + " 'on the memories trail',\n", + " 'we rise and fall',\n", + " 'all fails, we carry on',\n", + " 'for years of falling, falling and fall...',\n", + " 'memory',\n", + " 'on the memories trail',\n", + " 'we rise and fall',\n", + " 'all fails, we carry on',\n", + " 'for years of falling, falling and fall...',\n", + " 'lay down',\n", + " 'let the river flow',\n", + " 'flow in',\n", + " 'in a place far',\n", + " 'so far from here',\n", + " 'so far',\n", + " 'all fails, we carry on',\n", + " 'for years of falling, falling, falling...',\n", + " '\"moi aussi j\\'allais disparaître...\"',\n", + " 'dans les camps de concentrations',\n", + " 'block, h, block, h block h',\n", + " 'service torture, service mental',\n", + " 'service secret, service fasciste',\n", + " 'en sibérie occidentale',\n", + " 'torture, torture mentale',\n", + " 'dans les pays sous-developpés',\n", + " \"la dictature s'est imposée\",\n", + " 'les militaires sont au pouvoir',\n", + " 'dans les camps rien de beau à voir',\n", + " 'service torture, service nada',\n", + " \"c'etait un gamin un gosse de paris\",\n", + " 'sa seule famille etait sa mere',\n", + " 'une pauvre fille aux grands yeux fletris',\n", + " 'par le chagrin et la misere',\n", + " 'elle aimait les fleurs, les roses surtout',\n", + " 'et le cher bambin, le dimanche',\n", + " 'lui apportait des roses blanches',\n", + " \"au lieu d'acheter des joujoux\",\n", + " 'la calinant bien tendrement',\n", + " 'il disait en les lui donnant',\n", + " 'tiens ma jolie maman',\n", + " 'voici des roses blanches',\n", + " 'toi qui les aimes tant',\n", + " 'va quand je serai grand',\n", + " \"j'acheterai au marchand\",\n", + " 'toutes ses roses blanches',\n", + " 'pour toi jolie maman',\n", + " 'au dernier printemps le destin brutal',\n", + " 'vint frapper la blonde ouvriere',\n", + " \"elle tomba malade et pour l'hopital\",\n", + " 'le gamin vit partir sa mere',\n", + " \"un matin d'avril parmi les promeneurs\",\n", + " \"n'ayant plus un sous dans sa poche\",\n", + " 'sur un marche le pauvre gosse',\n", + " 'furtivement vola quelques fleurs',\n", + " \"la fleuriste l'ayant surpris, en baissant la tete il lui dit\",\n", + " 'la marchande emue doucement lui dit',\n", + " \"elle l'embrassa et l'enfant partit\",\n", + " \"tout rayonnant qu'on le pardonne\",\n", + " \"puis a l'hopital il vint en courant\",\n", + " 'pour offrir les fleurs a sa mere',\n", + " 'mais en le voyant une infirmiere',\n", + " 'lui dit:',\n", + " \"et le gamin s'agenouillant, dit devant le petit lit blanc\",\n", + " 'leurs bouches grande ouvertes ne laissant paraître de son et prenant ma place',\n", + " 'je serai la dissonance dans la mélodie de ton existence',\n", + " 'grinçante, spectrale, remontant dans ta voie spinale',\n", + " \"pour te hanter et t'obséder, comme jamais tu ne l’avais été\",\n", + " 'un enfer à en faire pâlir le porteur de lumière',\n", + " 'où je déciderai et ne serai plus ton esclave',\n", + " \"mais, d'une manière ou d'une autre, nous nous reverrons!\",\n", + " 'je ferai le pas afin de rejoindre cette danse',\n", + " 'macabre et hypnotique',\n", + " 'prendre la main de la décharnée et me laisser tourner',\n", + " 'dans cette ronde sans fin comme l’apothéose de mon chemin',\n", + " \"un point culminant dont je ne sais si je dois redouter la chute ou l'ascension!\",\n", + " 'ne pouvant déterminer. de quel côté tu es',\n", + " \"et quelle route je suis sur le point d'emprunter!\",\n", + " \"and what happen if i don't want to choose between the two paths?\",\n", + " 'and if the one on my back becomes a part of the crossroads?',\n", + " 'to see the whole and break the chains of duality',\n", + " 'an alternative against antagonism to find and to fulfill myself',\n", + " 'being more complete through the loss than ever before',\n", + " 'i can even feel the delicate caress of the three graces',\n", + " 'but another thing touches my skin, cold and dangerous',\n", + " 'striking in the most complete silence, like a winter wind',\n", + " 'as far as my eyes can see, behind the thick veil of memory',\n", + " 'striking in the most complete silence, for the void in my heart',\n", + " 'and i shout, to express the suffering, to find and to fulfill myself',\n", + " 'as my heart will beat as a voice in the land of stars',\n", + " 'que vienne le froid',\n", + " 'et l’armée du seigneur de l’hiver',\n", + " 'de givre, de neige et de glace',\n", + " 'les guerriers des montagnes oubliées',\n", + " 'oh!',\n", + " 'mettons nous en marche',\n", + " 'sous cette lune de marbre',\n", + " 'que retentissent nos pas',\n", + " 'i reign on the kingdom of the moon',\n", + " 'i sit upon the secret throne',\n", + " 'and my soul vanishes in lost hopes',\n", + " 'for now i know i am the last human soul',\n", + " 'from the summits i observe',\n", + " 'these mighty and majestic landscapes',\n", + " 'from the highest mountains i contemplate',\n", + " 'the last ashes of the human race',\n", + " 'par le sang de nos ancètres',\n", + " 'viendra notre force',\n", + " 'et l’esprit du dieu de l’hiver',\n", + " 'guidera nos pas',\n", + " 'dans ce royaume',\n", + " 'sombre et solitaire',\n", + " 'nous attendons',\n", + " 'et préparons cette guerre',\n", + " 'i live in the kingdom of sorrow',\n", + " 'in eternal landscapes of sepulchral snow',\n", + " 'i reign on the kingdom of the moon',\n", + " 'i sit upon the secret throne',\n", + " 'and my soul vanishes in lost hopes',\n", + " 'for now i know i am the last human soul',\n", + " 'from the summits i observe',\n", + " 'these mighty and majestic landscapes',\n", + " 'from the highest mountains i contemplate',\n", + " 'the last ashes of the human race',\n", + " 'déchire la peau épaisse',\n", + " 'qui pèse sur mes épaules',\n", + " 'détache-la pour moi',\n", + " 'membre par membre',\n", + " 'pièce par pièce',\n", + " 'je veux te montrer qui je suis',\n", + " 'au delà de mon corps',\n", + " 'au delà de ma chair',\n", + " 'te laisser entrevoir',\n", + " 'mes éctats limpides',\n", + " 'non humains',\n", + " 'regarde-moi',\n", + " 'tel que je suis',\n", + " 'et accepte-moi',\n", + " 'ne les laisse pas',\n", + " 'me voler mon âme',\n", + " 'ne les laisse pas la ternir',\n", + " 'pierce the thick skin',\n", + " 'that weighs upon my shoulders',\n", + " 'tear it off of me',\n", + " 'limb by limb',\n", + " 'piece by piece',\n", + " 'so i may show you who i am',\n", + " 'beyond my body',\n", + " 'beyond my flesh',\n", + " 'so you may catch a glimpse',\n", + " 'of my non-human',\n", + " 'shards of light',\n", + " 'behold me',\n", + " 'as i am',\n", + " 'and embrace me',\n", + " 'do not let them',\n", + " 'rob me of my soul',\n", + " 'do not let them tarnish it',\n", + " 'nekrah el khaliji',\n", + " 'ma 3ndich accent missri',\n", + " 'man dirch clip fl b7ar ou derriate ki brralenti',\n", + " 'man behdelch 3omri ftee-shirt diesel moulé',\n", + " 'ou chi ray ban gucci b7al chi raiman gauchi',\n", + " 'ou nekrah el markat men nhar joe strummer mat',\n", + " 'ou maranich bou7di',\n", + " 'lli 7ebb lboite à rythme',\n", + " 'lli 7ebb lplayback',\n", + " 'ych3al el itm, ytferrej fba7ibbak',\n", + " '3ndna batteur 3rguane, chanteur sekhfane',\n", + " 'rasta chadd el mizane ou la basse fi yedd 9azam',\n", + " 'ou guercifi za3fane, ou mdigouti liyyam',\n", + " 'ou maranich bou7di',\n", + " 'kayn barry',\n", + " 'barry wl maticha, darga wl hendia',\n", + " 'oul7al lbouhali wl7al lcasawi',\n", + " 'dial hafssa 3issawa h-kayne',\n", + " 'hazzou l3emmariyya',\n", + " 'w7na jina',\n", + " 'ou maranich bou7di',\n", + " '\"wla kenti baghi ddir che3bi, dir che3bi',\n", + " 'tkoun tl3eb lgherbi l3eb lgherbi',\n", + " 'mat9derch tkhellethoum bjouj',\n", + " 'koulla 7aja wl9awa3ed dialha',\n", + " 'sincèrement le niveau',\n", + " 'le niveau des paroles par exemple',\n", + " 'le niveau de la musique',\n", + " \"c'est pas un niveau\",\n", + " \"c'est pas un niiiveau\",\n", + " 'maranich bou7di',\n", + " 'ntouma hnaya',\n", + " '3awnouna newdo had rroubla',\n", + " 'rappeur rasta gnawa surfeur df3 jbha ou nif',\n", + " 'men aourioura l guercif',\n", + " 'maranich bou7di',\n", + " 'marakch bou7dek',\n", + " 'maranich bou7di',\n", + " 'wahya aourioura...',\n", + " 'confusion indicible',\n", + " 'la raison est impuissante',\n", + " 'tant de mots inutiles',\n", + " 'pour exprimer la tourmente',\n", + " 'le plaisir et la douleur',\n", + " \"se partagent l'univers\",\n", + " 'font mourir ou font peur',\n", + " 'nous emprisonnent dans la chair',\n", + " 'vingt mille feux sous les nerfs',\n", + " 'je me noie dans la souffrance',\n", + " 'comme un jeu, ou comme une guerre',\n", + " 'rien à voir avec la chance',\n", + " 'la tourmente est la rage',\n", + " 'qui ne connait pas de cible',\n", + " 'revenant du fond des âges',\n", + " 'comme une armée invincible',\n", + " \"je n'attendrai plus en vain\",\n", + " 'le matin des magiciens',\n", + " 'je ne crois plus au destin',\n", + " \"il ne reste que l'incertain\",\n", + " 'english translation:',\n", + " 'indescribable confusion',\n", + " 'the reason is powerless',\n", + " 'so many unnecessary words',\n", + " 'to express the turmoil',\n", + " 'pleasure and pain',\n", + " 'share the universe',\n", + " 'are dying or are afraid',\n", + " 'imprison us in the flesh',\n", + " 'twenty thousand fires under the nerves',\n", + " \"i'm drowning in suffering\",\n", + " 'as a game or as a war',\n", + " 'nothing to do with luck',\n", + " 'the turmoil is the rage',\n", + " 'who does not know the target',\n", + " 'coming back from the depths',\n", + " 'as an invincible army',\n", + " 'i wait in vain',\n", + " 'morning of the magicians',\n", + " 'i no longer believe in fate',\n", + " 'there are only uncertain',\n", + " '\"?\"',\n", + " 'suicide man must breed, it never ended',\n", + " 'he keeps a war in him, he dreams of other skies',\n", + " 'in the city of dead leaves, was born tragic',\n", + " 'with her body of dark bells, the lady of dreams',\n", + " 'awake everything is beyond',\n", + " 'putrified fury carried in me',\n", + " 'you carry them, those nights',\n", + " 'those unique lights',\n", + " 'darkness is completed',\n", + " '\"depuis quand brûlais-tu, feu?\"',\n", + " 'with this cross of dust',\n", + " 'and those faces, are they gods?',\n", + " 'are we gods?',\n", + " '\"oh, s\\'il te plaît, sois mon père! sois ma maison!',\n", + " 'il faut oublier tout cela, répond le géant, à voix basse. il faut oublier ces mots. il faut oublier les mots',\n", + " 'il a repris dans sa main la petite jambe, qui est immense déjà, et de son bras libre il nage dans cet espace sans fin de courants qui s\\'entrechoquent, d\\'abîmes qui s\\'entrouvrent, d\\'étoiles.\"',\n", + " 'putrified fury',\n", + " 'inside, in our deaf lands',\n", + " 'landed on your blood swell',\n", + " 'on all your flesh breakers',\n", + " 'in our deaf lands',\n", + " '\"il faut oublier ces mots. il faut oublier les mots',\n", + " 'il a repris dans sa main la petite jambe, qui est immense déjà, et de son bras libre il nage dans cet espace sans fin de courants qui s\\'entrechoquent, d\\'abîmes qui s\\'entrouvrent, d\\'étoiles.\"',\n", + " 'look at the ground, littering genocide',\n", + " 'lick and eat the corpses of previous nights',\n", + " 'close her eyes',\n", + " 'she carries them among the sky',\n", + " 'close her clock eyes',\n", + " 'make the day disappear',\n", + " 'of us, nobody can say anything',\n", + " 'awake, anyone left?',\n", + " '\"merde, j\\'serai jamais tranquille...',\n", + " 'j\\'vous demande rien bordel de dieu!\"',\n", + " '\"qui tue le soleil pour installer le royaume de la nuit noire, et qui crève la croix afin que les espaces de l’espace ne puissent plus jamais se rencontrer.\"',\n", + " 'putrified fury',\n", + " 'inside, in our deaf lands',\n", + " 'landed on your blood swell',\n", + " 'on all your flesh breakers',\n", + " 'in our deaf lands',\n", + " '\"ce qui m\\'a précédé, je ne le saisirai jamais',\n", + " 'ils appartiennent tous à la nuit, à cette nuit sans image',\n", + " 'moi aussi je suis là, plongé dans cette nuit',\n", + " 'je la désire, cette nuit, comme mon père l’a désirée sans doute',\n", + " 'je m\\'en vais.\"',\n", + " \"i'm this blade in men's eyes\",\n", + " 'their revolted eyes will marry me',\n", + " \"they won't dance anymore\",\n", + " 'they will rave and ramble, run and dance',\n", + " '\"j\\'ai toujours vécu dans des contradictions et n\\'en ai jamais souffert. si j\\'avais été un être systématique, j\\'aurai du mentir pour pouvoir trouver une solution. or, non seulement, j\\'ai accepté ce caractère insoluble des choses, mais j\\'y ai même trouvé une certaine volupté : la volupté de l\\'insoluble. je n\\'ai jamais cherché à aplanir, à réunir, ou à réconcilier l\\'irréconciliable. j\\'ai toujours pris les contradictions comme elles venaient, aussi bien dans ma vie privée que dans la théorie. je n\\'ai jamais eu de but, je n\\'ai cherché à trouver aucun résultat, je crois qu\\'il ne peut y avoir, aussi bien en général que pour soi, ni résultat, ni but. tout est non pas sans sens, le mot me dégoûte un peu, mais sans nécessité.\"',\n", + " 'yesterday',\n", + " 'she smiled already, before he came',\n", + " 'on his suicided horse, full of blood',\n", + " 'yesterday',\n", + " 'a road that took us back there',\n", + " 'in a place far, so far from here',\n", + " \"we'll be back there\",\n", + " '\"je ne suis pas un être de joie.\"',\n", + " 'putrified fury',\n", + " 'inside, in our deaf lands',\n", + " 'landed on your blood swell',\n", + " 'on all your flesh breakers',\n", + " 'in our deaf lands',\n", + " 'in our deaf lands',\n", + " \"gagner à naître, avoir faim d'exister\",\n", + " 'prêcher le beau et se déshabiller',\n", + " \"perdre une guerre pour gagner bien d'autres choses\",\n", + " 'oh! boy, le beau portrait',\n", + " \"si on s'y mettait, si on s'y mettait\",\n", + " 'trouver son île dans un ananas',\n", + " 'déchirer les murs et les almanachs',\n", + " 'servir des gâteaux dans tous les autobus',\n", + " 'oh! boy, le beau banquet',\n", + " \"si on s'y mettait, si on s'y mettait, si on s'y mettait\",\n", + " 'on donnerait plus de poils à saint-jean-baptiste',\n", + " \"l'été viendrait peut-être le vingt et un de mai\",\n", + " \"le bonheur se demanderait pas s'il est catholique\",\n", + " \"et mes chansons seraient de l'an prochain\",\n", + " \"si on s'y mettait, si on s'y mettait\",\n", + " \"si on s'y mettait, si on s'y mettait\",\n", + " \"si on s'y mettait, si on s'y mettait\",\n", + " \"si on s'y mettait, si on s'y mettait\",\n", + " \"si on s'y mettait, si on s'y mettait\",\n", + " \"si on s'y mettait, si on s'y mettait\",\n", + " \"si on s'y mettait, si on s'y mettait\",\n", + " \"si on s'y mettait, si on s'y mettait\",\n", + " \"si on s'y mettait, si on s'y mettait...\"]}}},\n", + " 'ga': {'sentence': {'pop': {'meta': {'train_data': ['imtheochaidh soir is siar',\n", + " 'a dtainig ariamh',\n", + " 'an ghealach is an ghrian',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the doh fol the day',\n", + " \"imtheochaidh an ghealach's an ghrian\",\n", + " \"an daoine og is a chail 'na dhiadh\",\n", + " 'fol lol the doh fol the day',\n", + " 'fol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the doh fol the day',\n", + " 'imtheochaidh a dtainig ariamh',\n", + " 'an duine og is a chail ne dhiadh',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the doh fol the day',\n", + " 'translation',\n", + " 'i will go east and go west',\n", + " 'from whence came',\n", + " 'the moon and the sun',\n", + " 'the moon and the sun will go',\n", + " 'and the young man',\n", + " 'with his reputation behind him',\n", + " 'i will go wherever he came from -',\n", + " 'the young man with his reputation behind him',\n", + " 'hi-ri, hi-ra',\n", + " 'hi',\n", + " 'hoireann is o-ho',\n", + " 'hi, ro ho, oh ho ro',\n", + " 'hoireann is o-ho',\n", + " 'him-o, ro ho, oh ho ro',\n", + " 'hi-ri, hi-ra',\n", + " 'hi-ri, hi-ra',\n", + " 'saol na saol',\n", + " 'tús go deireadh',\n", + " 'tá muid beo',\n", + " 'go deo',\n", + " 'saol na saol',\n", + " 'tús go deireadh',\n", + " 'tá muid beo',\n", + " 'go deo',\n", + " 'hoireann is o-ho',\n", + " 'hi, ro ho, oh ho ro',\n", + " 'hoireann is o-ho',\n", + " 'him-o, ro ho, oh ho ro',\n", + " 'hi-ri, hi-ra',\n", + " 'hi-ri, hi-ra',\n", + " 'hoireann is o-ho',\n", + " 'hi-ri, him ho-ro ho',\n", + " 'thuirt an gobha fuirighidh mi (the blacksmith said, \"i\\'ll wait\")',\n", + " '\\'s thuirt an gobha falbhaidh mi (the blacksmith said, \"i\\'ll go\"(',\n", + " \"'s thuirt an gobha leis an othail (the blacksmith said, in his confusion)\",\n", + " \"a bh' air an dòrus an t-sàbhail (standing at the door of the barn)\",\n", + " 'gu rachadh e a shuirghe (that he was going to go courting)',\n", + " 'sèist: chorus (after each verse):',\n", + " \"'si eilean nam bothan nam bothan (island of bothies, of bothies)\",\n", + " 'eilean nam bothan nam bothan (island of bothies, of bothies)',\n", + " 'eilean nam bothan nam bothan (island of bothies, of bothies)',\n", + " \"am bothan a bh' aig fionnghuala (fingal's bothies)\",\n", + " \"'si eilean nam bothan nam bothan (island of bothies, of bothies)\",\n", + " 'eilean nam bothan nam bothan (island of bothies, of bothies)',\n", + " 'eilean nam bothan nam bothan (island of bothies, of bothies)',\n", + " \"am bothan a bh' aig fionnghuala (fingal's bothies)\",\n", + " \"bheirinn fead air fulmairean (i'd knock spots off the birds)\",\n", + " \"bheirinn fead air falmairean (i'd knock spots off the hakes)\",\n", + " 'liuthannan beaga na mara (little lythes of the sea)',\n", + " 'bheireamaid greis air an tarrainn (we would take a while hauling them in)',\n", + " 'na maireadh na duirgh dhuinn (if our hand lines last)',\n", + " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", + " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", + " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", + " 'bheireamaid greis air an tarrainn (we would take a while hauling them in)',\n", + " 'na maireadh na duirgh dhuinn (if our hand lines last)',\n", + " \"bheirinn fead air fulmairean (i'd knock spots off the birds)\",\n", + " \"bheirinn fead air falmairean (i'd knock spots off the hakes)\",\n", + " 'liuthannan beaga na mara (little lythes of the sea)',\n", + " 'bheireamaid greis air an tarrainn (we would take a while hauling them in)',\n", + " 'na maireadh na duirgh dhuinn (if our hand lines last)',\n", + " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", + " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", + " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", + " 'bheireamaid greis air an tarrainn (we would take a while hauling them in)',\n", + " 'na maireadh na duirgh dhuinn (if our hand lines last)',\n", + " 'thuirt an gobha fuirighidh mi (the blacksmith said, \"i\\'ll wait\")',\n", + " '\\'s thuirt an gobha falbhaidh mi (the blacksmith said, \"i\\'ll go\")',\n", + " \"'s thuirt an gobha leis an othail (the blacksmith said, in his confusion)\",\n", + " \"a bh' air an dòrus an t-sàbhail (standing at the door of the barn)\",\n", + " 'gu rachadh e a shuirghe (that he was going to go courting)',\n", + " '(irish verse)',\n", + " \"buachaill ón eirne mé's bhréagfainn féin cailín deas óg\",\n", + " \"né iarfainn bó spré léithe tá mé saibhir go leor 's liom\",\n", + " \"corcaigh a mhéid e, dhá thaobh a ghleanna's tír eoghain\",\n", + " \"'s mur n-athraí mé béasaí 's mé n' t-oibhr ar chontae mhaigh eo\",\n", + " 'come by the hills to the land where fancy is free',\n", + " 'and stand where the peaks meet the sky and the loughs meet the sea',\n", + " 'where the rivers run clear and the bracken is gold in the sun',\n", + " 'and the cares of tomorrow can wait till this day is done',\n", + " 'come by the hills to the land where life is a song',\n", + " 'and stand where the birds fill the air with their joy all day long',\n", + " 'where the trees sway in time and even the wind sings in tune',\n", + " 'and the cares of tomorrow can wait till this day is done',\n", + " 'come by the hills to the land where legend remains',\n", + " 'the stories of old fill our hearts and may yet come again',\n", + " 'where the past has been lost and the future is still to be won',\n", + " 'and the cares of tomorrow can wait till this day is done',\n", + " 'and the cares of tomorrow can wait till this day is done',\n", + " 'do you hear what i hear?',\n", + " 'do you hear what i hear?',\n", + " 'do you hear what i hear?',\n", + " 'said the little lamb to the shepherd boy',\n", + " '\"do you hear what i hear',\n", + " 'ringing through the sky, shepherd boy?',\n", + " 'do you hear what i hear?',\n", + " 'a song, a song high above the trees',\n", + " 'with a voice as big as the sea',\n", + " 'with a voice as big as the sea\"',\n", + " 'said the shepherd boy to the mighty king',\n", + " '\"do you know what i know',\n", + " 'in your palace warm, mighty king?',\n", + " 'do you know what i know?',\n", + " 'a child, a child shivers in the cold',\n", + " 'let us bring him silver and gold',\n", + " 'let us bring him silver and gold\"',\n", + " 'do you hear what i hear?',\n", + " 'don oíche úd i mbeithil',\n", + " 'beidh tagairt faoi ghrian go brách',\n", + " 'don oíche úd i mbeithil',\n", + " 'go dtáinig an briathar slán',\n", + " 'tá gríosghrua ar spéartha',\n", + " \"'s an talamh 'na chlúdach bán\",\n", + " 'féach íosagán sa chléibhín',\n", + " \"'s an mhaighdean in aoibhneas grá\",\n", + " 'said the king to the people everywhere',\n", + " '\"listen to what i say',\n", + " 'pray for peace, people everywhere',\n", + " 'listen to what i say',\n", + " 'the child, the child sleeping in the night',\n", + " 'he will bring us goodness and light',\n", + " 'he will bring us goodness and light\"',\n", + " 'listen to what i say',\n", + " 'do you know what i know?',\n", + " 'do you hear what i hear?',\n", + " 'do you hear what i hear?',\n", + " \"chuamar'na síos go inneall an chré / we went down to the engine of the earth\",\n", + " \"chuamar'na síos go imeall an bhrí / we went down to the edge of meaning\",\n", + " \"chuamar'na síos go preamhacha an tsaoil / we went down to the roots of experience\",\n", + " \"d'oscail mo shúil / my eyes were opened\",\n", + " \"d'árdaigh mo chroi / my heart was lifted\",\n", + " \"d'athuraigh an bhrí / all sense was twisted\",\n", + " 'is dfháuraigh mé go buan / and i was left forever wounded',\n", + " 'cuimhnín ar mo mháthair / i think of my mother',\n", + " \"cuimhnín ar m'athair / i think of my father\",\n", + " 'cuimhnín ar na déithe / i think of the gods',\n", + " 'cuimhnín ar mo mháthair / i think of my mother',\n", + " \"cuimhnín ar m'athair / i think of my father\",\n", + " 'cuimhnín ar mo chéile / i think of my woman',\n", + " 'a derdriu menidera már',\n", + " 'diamsa ceomainech cloth bán',\n", + " 'cesfaitit ulaid rit ré',\n", + " 'a ingen fial feidlimthe!',\n", + " 'dogena gnim n-grannin-garg',\n", + " 'ar feirg ri rig n-ulad n-ard',\n", + " 'biaid do lectan innach dú',\n", + " 'bid scel n-airdaire a dderdriu',\n", + " 'biaid etach cid iartain',\n", + " 'dot draig a be forlassair',\n", + " 'is it amsir cluinti se',\n", + " 'longes tri mac n-ard n-uisle',\n", + " 'dogena gnim n-grannin-garg',\n", + " 'ar feirg ri rig n-ulad n-ard',\n", + " 'biaid do lectan innach dú',\n", + " 'bid scel n-airdaire a dderdriu',\n", + " 'hups, a sheáin, a bhráthair',\n", + " 'fuair do mháthair bás',\n", + " 'ó, ní bhfuair, ní bhfuair',\n", + " 'chuaigh sí suas an tsráid',\n", + " 'hups, a sheáin, a bhráthair',\n", + " 'fuair do mháthair bás',\n", + " 'ó, ní bhfuair in aon chor',\n", + " 'chuaigh sí suas an tsráid',\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'portín sheáin an tsíoda',\n", + " 'is iníon philib an cheoil',\n", + " \"he didn't dance 'n' dance\",\n", + " \"he didn't dance today\",\n", + " \"he didn't dance 'n' dance\",\n", + " 'no, nor yesterday',\n", + " \"he didn't dance 'n' dance\",\n", + " \"he didn't dance today\",\n", + " \"he didn't dance 'n' dance\",\n", + " 'walked all after the',\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'portín sheáin an tsíoda',\n", + " 'is iníon philib an cheoil',\n", + " 'throw him up, up',\n", + " 'throw him up high',\n", + " 'throw him up, up',\n", + " \"he'll come down by and by\",\n", + " 'throw him up, up',\n", + " 'throw him up high',\n", + " 'throw him up, up',\n", + " \"he'll come down by and by\",\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'portín sheáin an tsíoda',\n", + " 'is iníon philib an cheoil',\n", + " 'piper sell your pipes',\n", + " 'buy your wife a gown',\n", + " 'piper sell your pipes',\n", + " 'buy your wife a gown',\n", + " 'piper sell your pipes',\n", + " 'buy your wife a gown',\n", + " \"i wouldn't never sell me pipes\",\n", + " 'for all the wives in town',\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'cuc-a-neandí-neandí',\n", + " 'cuc-a-neandí-ó',\n", + " 'portín sheáin an tsíoda',\n", + " 'is iníon philib an cheoil',\n", + " 'hm, die-yeh ro',\n", + " 'hm, die-yeh',\n", + " 'hm, die-yeh ro',\n", + " 'hm, die-yeh',\n", + " 'hm-o-ro-ho',\n", + " 'hm, die-yeh ro',\n", + " 'hm, die-yeh',\n", + " 'hm, die-yeh ro',\n", + " 'hm, die-yeh',\n", + " 'hm, die-yeh ro',\n", + " 'hm, die-yeh',\n", + " 'hoireann is o-ro',\n", + " 'tá muid beo',\n", + " 'him ho-ro-ho',\n", + " 'go deo na ndeor',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'him ho-ro-ho',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'him ho-ro-ho',\n", + " 'hi-ri-hu, ho-ro-hu',\n", + " 'him ho-ro-ho',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'him ho-ro-ho',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'hoireann is o-ro',\n", + " 'tá muid beo',\n", + " 'him ho-ro-ho',\n", + " 'go deo na ndeor',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'him ho-ro-ho',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'him ho-ro-ho',\n", + " 'hi-ri-hu, ho-ro-hu',\n", + " 'him ho-ro-ho',\n", + " 'hm, die-yeh ro',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'hm, die-yeh',\n", + " 'him ho-ro-ho',\n", + " 'hm, die-yeh ro',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'hm, die-yeh',\n", + " 'him ho-ro-ho',\n", + " 'hm, die-yeh ro',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'hm, die-yeh',\n", + " 'him ho-ro-ho',\n", + " 'hm, die-yeh ro',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'hm, die-yeh',\n", + " 'him ho-ro-ho',\n", + " 'hm, die-yeh ro',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'hm, die-yeh',\n", + " 'him ho-ro-ho',\n", + " 'hm, die-yeh ro',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'hm, die-yeh',\n", + " 'hm ho-ro-ho',\n", + " 'hm, die-yeh ro',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'hm, die-yeh',\n", + " 'him ho-ro-ho',\n", + " 'hm, die-yeh ro',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'hm, die-yeh',\n", + " 'him ho-ro-ho',\n", + " 'hm, die-yeh ro',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'hm, die-yeh',\n", + " 'him ho-ro-ho',\n", + " 'hm, die-yeh ro',\n", + " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", + " 'hm, die-yeh',\n", + " 'him ho-ro-ho',\n", + " 'éirigh suas a stóirin mura bfhuil tu do shui',\n", + " 'foscail a\\x92 doras agus lig mise \\x91un ti',\n", + " 'ta buidéal im aice bhéarfas deoch',\n", + " 'do mhnaoi an ti',\n", + " 'a\\x92s ta suil \\x91gam nach ndiultuigheann',\n", + " 'tu mé fa do nion',\n", + " 'nuair a éirighim amach ar maidin',\n", + " 'agus dearcaim uaim siar',\n", + " 'is dearcaim ar a\\x92bhaile ud a bhfuil',\n", + " 'agam le ghabhail ann',\n", + " 'tuiteann na deóra na sróite liom sios',\n", + " 'agus gniomh se mile osna a',\n", + " 'ta cosuil le cumhaidh',\n", + " 'i ngleanntain na coilleadh uaigni',\n", + " 'is lag brónach a bim',\n", + " 'ó dhomnach go domhnach \\x91s',\n", + " 'mé ag cathamh mo shaol',\n", + " '\\x91mé feitheamh gach trathnóna ce',\n", + " 'shiuluil \\x91n ród no cé thiocfadh \\x91n ti',\n", + " '\\x91s gan duine ar an domhan mhór a thiocfadh',\n", + " '\\x91s thógfadh mo chroi',\n", + " 'a mhaili a chéadsearc na',\n", + " 'tréig thusa mé go brach',\n", + " 'nach bhfuil mé do dhiaidh gachaon la',\n", + " 'fa mhalaidh na n-ard',\n", + " 'is tu cruithneach ar mhna éireann',\n", + " 'is tu an péarla \\x91ta doiligh \\x91fhail',\n", + " 'is dar mhoinna mo bhéil ni bréag é',\n", + " 'go bhfuil mé leatsa i ngra',\n", + " 'idir ann is idir as',\n", + " 'idir thuaidh is idir theas',\n", + " 'idir thiar is idir thoir',\n", + " 'idir am is idir áit',\n", + " 'as an sliogán',\n", + " 'amhrán na farraige',\n", + " 'suaimhneach ná ciúin',\n", + " 'ag cuardú go damanta',\n", + " 'mo ghrá',\n", + " 'tá mé idir ghrá',\n", + " 'between the winds, between the waves',\n", + " 'between the sands, between the shore',\n", + " 'from the shell',\n", + " 'a song of the sea',\n", + " 'neither quiet nor calm',\n", + " 'searching for love again',\n", + " 'mo ghrá',\n", + " 'tá mé idir ghrá',\n", + " \"who is that there, that's rapping the door to me? (x3)\",\n", + " '“only meself,” says cúnla',\n", + " \"who is that there, that's tapping the windowpane? (x3)\",\n", + " '“only meself,” says cúnla',\n", + " 'chorus',\n", + " 'cúnla, cúnla, cúnla, don’t come any near’r to me! (x3)',\n", + " '“maybe i shouldn’t,” says cúnla',\n", + " 'cé hé siúd thíos atá ag leagadh na gclathacha? (x3)',\n", + " '\"mise mé féin,\" a deir cúnla',\n", + " 'chúnla chaoin ná tara níos giorra dhom (x3)',\n", + " '\"maise mur\\' dtaga,\" a deir cúnla',\n", + " 'chorus',\n", + " \"who is that there, that's climbing the stairs to me? (x3)\",\n", + " '“only meself,” says cúnla',\n", + " \"who is that there, that's tickling the toes of me? (x3)\",\n", + " '“only meself,” says cúnla',\n", + " 'chorus',\n", + " 'who’s that there? rapping the door to me?',\n", + " 'who’s that there?',\n", + " 'who’s that there? tapping the windowpane?',\n", + " 'who’s that there?',\n", + " 'don’t come any near’r to me!',\n", + " 'don’t come any near’r to me!',\n", + " 'cé hé siúd thíos atá ag tochas mo bhonnacha? (x3)',\n", + " '\"mise mé féin,\" a deir cúnla',\n", + " 'cé hé siúd thíos ag tarraingt na pluide dhíom? (x3)',\n", + " '\"mise mé féin,\" a deir cúnla',\n", + " '\"mise mé féin,\" a deir cúnla',\n", + " 'chorus',\n", + " '“maybe i shouldn’t,” says cúnla',\n", + " '“i shouldn’t,” says cúnla',\n", + " '“maybe i shouldn’t,” says cúnla',\n", + " 'why spend your leisure bereft of pleasure?',\n", + " 'amassing treasure, why scrape and save?',\n", + " 'why look so canny at every penny?',\n", + " \"you'll take no money within the grave\",\n", + " 'landlords and gentry with all their plenty',\n", + " \"must still go empty where e'er they're bound\",\n", + " \"so to my thinking we'd best be drinking\",\n", + " 'our glasses clinking and round and round',\n", + " 'is iomaí slí sin do bhíos ag daoine',\n", + " 'ag cruinniú píosaí is ag déanamh stóir',\n", + " \"'s a laghad a smaoiníos ar ghiorra a’ tsaoil seo\",\n", + " 'go mbeidh siad sínte faoi an leac go fóill',\n", + " 'más tiarna tíre, diúc no rí thú',\n", + " 'ní cuirfear pingin leat ‘s tú ‘dul faoin bhfód',\n", + " 'mar sin is dá bhrí sin, níl beart níos críonna',\n", + " 'ná bheith go síoraí ag cur preab san ól',\n", + " \"king solomon's glory, so famed in story\",\n", + " \"was far outshone by the lily's guise\",\n", + " 'but hard winds harden both field and garden',\n", + " 'pleading for pardon, the lily dies',\n", + " \"life's but a bauble of toil and trouble\",\n", + " \"the feathered arrow, once shot ne'er found\",\n", + " 'so lads and lasses, because life passes',\n", + " 'come fill your glasses for another round',\n", + " 'is gearr an saol ‘tá ag an lílí sciamhach',\n", + " 'cé gur buí agus gur geal a ghabháil',\n", + " 'is solamh críonna ina chulaith riúil',\n", + " 'nach bhfuil baol air in áille dhó',\n", + " 'níl sa tsaol seo ach mar soinneán gaoithe',\n", + " 'ga a scaoiltear nó slám de cheo',\n", + " 'mar sin ‘s dá bhrí sin, níl beart níos críonna',\n", + " 'ná bheith go síoraí ag cur preab san ól',\n", + " 'the huckster greedy, he blinds the needy',\n", + " 'their strifes unheeding, shouts \"money down!\"',\n", + " 'his special vices, his fancy prices',\n", + " \"for a florin's value he'll charge a crown\",\n", + " \"with hump for trammel, the scripture's camel\",\n", + " \"missed the needle's eye and so came to ground\",\n", + " \"why pine for riches, while still you've stitches\",\n", + " 'to hold your britches up? another round!',\n", + " 'buain nam bairnich, nam bairnich, nam bairnich',\n", + " 'buain nam bairnich air creagan rubh nan cudaigean',\n", + " 'buain nam bairnich, nam bairnich, nam bairnich',\n", + " \"'s goilidh sinn na bairnich 'san taigh air rubh nan cudaigean\",\n", + " 'goilidh sinn na bairnich, na bairnich, na bairnich',\n", + " \"goilidh sinn na bairnich 'san taigh air rubh nan cudaigean\",\n", + " 'goilidh sinn na bairnich, na bairnich, na bairnich',\n", + " \"'s cagnaidh sinn na bairnich air cladach rubh nan cudaigean\",\n", + " 'cagnaidh sinn na bairnich, na bairnich, na bairnich',\n", + " 'cagnaidh sinn na bairnich air cladach rubh nan cudaigean',\n", + " 'cagnaidh sinn na bairnich, na bairnich, na bairnich',\n", + " \"'s sgaoiligh sinn na bairnich air muir rubh nan cudaigean\",\n", + " 'sgaoiligh sinn na bairnich, na bairnich, na bairnich',\n", + " 'sgaoiligh sinn na bairnich air muir rubh nan cudaigean',\n", + " 'sgaoiligh sinn na bairnich, na bairnich, na bairnich',\n", + " \"'suidhidh sinn le tabh ann air creagan rubh nan cudaigean\",\n", + " 'be hileam bo horam bo eirich is ithibh ith',\n", + " 'be hileam bo horam bo feitheamh air na cudaigean',\n", + " 'be hileam bo horam bo eirich is ithibh ith',\n", + " 'nach ith sibh na bairnich is ithidh mi na cudaigean',\n", + " '/',\n", + " '--ooo--',\n", + " 'rubh nan cudaigean (headland of the cuddy fish)',\n", + " 'harvest of the limpets , of the limpets, of the limpets',\n", + " 'harvest of the limpets on the rocks of the headland....',\n", + " 'harvest of the limpets, of the limpets, of the limpets',\n", + " 'and we will boil the limpets in the house on the headland of the cuddy fish',\n", + " 'we will boil the limpets, the limpets, the limpets',\n", + " 'we will boil the limpets in the house on the headland',\n", + " 'we will boil the limpets, the limpets, the limpets',\n", + " 'and we will chew the limpets on the shore of the headland…',\n", + " 'we will chew the limpets, the limpets, the limpets',\n", + " 'we will chew the limpets on the shore of the headland…',\n", + " 'we will chew the limpets, the limpets, the limpets',\n", + " 'and we will scatter the limpets on the sea at the headland…',\n", + " 'we will scatter the limpets, the limpets, the limpets',\n", + " 'we will scatter the limpets on the sea at the headland…',\n", + " 'we will scatter the limpets, the limpets, the limpets',\n", + " 'and we will sit with nets on the rocks of the headland…',\n", + " 'be hileam bo horam bo, rise and eat, eat',\n", + " 'be hileam bo horam bo, waiting on the cuddy fish',\n", + " 'be hileam bo horam bo, rise and eat ,eat',\n", + " 'won’t you eat the limpets, and i will eat the cuddy fish',\n", + " 'tuirse mo chroí ar a phósadh',\n", + " \"'s ar bhuachaillí óige an tsaiol\",\n", + " 'nár bhfearr daoife cailín deas leofa',\n", + " 'na bean a mbeadh puntaí léi',\n", + " 'oíche mhór fhada bheith dúcaí',\n", + " 'nár dheas a bheith ag súgradh léi',\n", + " \"b'faras a chaillteach bhíos srannfaí\",\n", + " 'is ag tarraingt an phlaincéad léi',\n", + " 'nuair a théim go tí faire ná tórraimh',\n", + " \"'sé d'fiafras an óig bhean díom\",\n", + " \"'chormaic a bhfuil tú do phósadh\",\n", + " \"nó nach n'aithníonn tú an óig fhear groí\",\n", + " \"'sé duirt se 'gus deirim féin leofa\",\n", + " 'go minic go mór faraor',\n", + " \"'s an mhéid acu 'tá gan pósadh\",\n", + " \"gur acu 'tá spóirt a' tsaiol\",\n", + " \"ó rachaidh mé scilleadh 's a chaitheadh\",\n", + " 'go baile na hiarr fhad siar',\n", + " \"'s bhéarfaidh mé 'n ruaig sin go hárainn\",\n", + " \"'s ar and ainnir chráidh mo chroí\",\n", + " 'dár a leoga mar rinneadh mo phósadh',\n", + " 'ní mó ná gur cealgadh mo chroí',\n", + " \"'s rachaidh mé arís na róimhe\",\n", + " 'go bhfaigh mé cead pósta arís',\n", + " \"i'm tired to my heart of marriage\",\n", + " 'and of the young men of this world',\n", + " \"they'd be better off with a nice girl\",\n", + " 'than a woman who had money',\n", + " 'to stay awake the whole long night',\n", + " \"wouldn't it be fine to be sporting with her\",\n", + " 'instead of the old woman who snores',\n", + " 'and pulls the blanket to her',\n", + " 'when i go to a wake-house or funeral',\n", + " 'all the young women ask me',\n", + " 'cormac, are you getting married',\n", + " 'or do you see that youth is wearing away?',\n", + " 'i said to them and i still say',\n", + " 'that i do indeed see it, alas',\n", + " \"and those who aren't married\",\n", + " 'have all the fun in life',\n", + " 'i will go complaining and chattering',\n", + " 'to far in the west',\n", + " \"i'll take a trip to aron\",\n", + " 'to the young woman who has tormented my heart',\n", + " 'by the book, if my marriage has been made',\n", + " \"it's not that my heart has been bound\",\n", + " \"and i'll go off to rome\",\n", + " 'to get permission to marry again',\n", + " 'ës e ceap breatuinn tir mo, ghráidh',\n", + " 'tïr nan craobh ë s nan beanntan árd',\n", + " 'ës e ceap breatuinn tir mo, ghráidh',\n", + " 'tïr ëas áillidh leinn air thalamh',\n", + " '(it is cape breton the land of my love',\n", + " 'the land of the trees and high mountains',\n", + " 'it is cape breton the land of my love',\n", + " 'the most beautiful land on earth to us.)',\n", + " '(from the chorus of a song composed by',\n", + " 'dan alex macdonald, framboise, cape breton)',\n", + " 'reel:',\n", + " 'a null thar nan eileanan , gu dhíameireaga gun teid sinn',\n", + " 'a null thar nan eileanan , gu dhíameireaga gun teid sinn',\n", + " 'a null thar nan eileanan , gu dhíameireaga gun teid sinn',\n", + " 'a null rathad shasuinn agus dhachaidh rathad eirinn',\n", + " '(over across the islands, to america we will go',\n", + " 'over across the islands, to america we will go',\n", + " 'over across the islands, to america we will go',\n", + " 'over by way of england and home by way of ireland)',\n", + " 'imtheochaidh soir is siar',\n", + " 'a dtainig ariamh',\n", + " 'an ghealach is an ghrian',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " \"imtheochaidh an ghealach's an ghrian\",\n", + " \"an daoine og is a chail 'na dhiadh\",\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " 'imtheochaidh a dtainig ariamh',\n", + " 'an duine og is aa chail ne dhiadh',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " 'idir dhá láimh',\n", + " 'daoine fíuntach',\n", + " 'scríobh an ogham',\n", + " 'i mbanba óir',\n", + " 'i nglas héinne',\n", + " 'fial ó nádúir',\n", + " 'fonn ceoil',\n", + " 'i mbanba óir',\n", + " 'lios na aileach',\n", + " 'draicht draiotheach',\n", + " 'tuamai rithe',\n", + " 'i mbanba oir',\n", + " 'clochán naofa',\n", + " 'cill is caisléain',\n", + " 'truit na gceilteach',\n", + " 'i mbanba óir',\n", + " 'translation',\n", + " 'both two hands',\n", + " 'of noble people',\n", + " 'write the ogham',\n", + " 'in golden ireland',\n", + " 'in young company',\n", + " 'noble of nature',\n", + " 'desire of music',\n", + " 'in golden ireland',\n", + " 'ring forts of rock',\n", + " 'the magic of the druids',\n", + " 'tombs of kings',\n", + " 'in golden ireland',\n", + " 'holy clochan*',\n", + " 'churchyards and castles',\n", + " 'sound of the celtic (or secret?) language**',\n", + " 'in golden ireland',\n", + " 'imtheochaidh soir is siar',\n", + " 'a dtainig ariamh',\n", + " 'an ghealach is an ghrian',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " \"imtheochaidh an ghealach's an ghrian\",\n", + " \"an daoine og is a chail 'na dhiadh\",\n", + " 'fol lol the doh fol the day',\n", + " 'fol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the doh fol the day',\n", + " 'imtheochaidh a dtainig ariamh',\n", + " 'an duine og is aa chail ne dhiadh',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the doh fol the day',\n", + " 'chorus:',\n", + " \"'sí do mhaimeo í, 'sí do mhaimeo í\",\n", + " \"'sí do mhaimeo í, cailleach an airgid\",\n", + " \"'sí do mhaimeo í, ó bhaile inis mhóir í\",\n", + " \"'s chuirfeadh sí cóistí ar bhóithre cois fharraige\",\n", + " 'dá bhfeicfeá\\' an \"steam\" \\'ghabhail siar tóin uí loin\\'',\n", + " \"'s na rothaí 'ghabhail timpeall siar ó na ceathrúnaí\",\n", + " \"chaithfeadh sí 'n stiúir naoi n-vair' ar a cúl\",\n", + " \"'s ní choinneodh sí siúl le cailleach an airgid\",\n", + " '(chorus)',\n", + " \"'measann tú, 'bpósfa', 'measann tú 'bpósfa'\",\n", + " \"'measann tú, 'bpósfa', cailleach an airgid?\",\n", + " \"tá's a'm nach 'bpósfa', tá's a'm nach 'bpósfa'\",\n", + " \"mar tá sé ró-óg 'gus d'ólfadh sé'n t-airgead\",\n", + " '(chorus twice)',\n", + " \"'s gairid go 'bpósfaidh, 's gairid go 'bpósfaidh\",\n", + " \"'s gairid go 'bpósfaidh, beirt ar an mbaile seo\",\n", + " \"'s gairid go 'bpósfaidh, 's gairid go 'bpósfaidh\",\n", + " 'séan shéamais mhóir agus máire ní chathasaigh',\n", + " '(chorus three times)',\n", + " 'translation',\n", + " 'chorus:',\n", + " 'she is your granny, she is your granny',\n", + " \"she's your granny, the hag with the money\",\n", + " 'she is your granny, from the town of nishmore',\n", + " 'and she would put coaches on the roads of cois farraige',\n", + " \"if you'd see the steam going past toin ui loin'\",\n", + " 'and the wheels turning speedily out from her flanks',\n", + " \"she'd scatter the stoor nine times to the rear\",\n", + " \"but she'd never keep pace with the hag with the money\",\n", + " '(chorus)',\n", + " \"do you reckon he'd marry, do you reckon he'd marry\",\n", + " \"do you reckon he'd marry the hag with the money?\",\n", + " \"i know he'll not marry, i know he'll not marry\",\n", + " \"'cause he is too young and he'll squander the money\",\n", + " '(chorus twice)',\n", + " \"we'll soon have a wedding, we'll soon have a wedding\",\n", + " \"we'll soon have a wedding, by two in the village\",\n", + " \"we'll soon have a wedding, we'll soon have a wedding\",\n", + " 'between sean seamais mhoir and maire ni chathasaigh',\n", + " '(chorus three times)',\n", + " 'imtheochaidh soir is siar',\n", + " 'a dtainig ariamh',\n", + " 'an ghealach is an ghrian',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the doh fol the day',\n", + " \"imtheochaidh an ghealach's an ghrian\",\n", + " \"an daoine og is a chail 'na dhiadh\",\n", + " 'fol lol the doh fol the day',\n", + " 'fol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the doh fol the day',\n", + " 'imtheochaidh a dtainig ariamh',\n", + " 'an duine og is a chail ne dhiadh',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the doh fol the day',\n", + " 'thíos cois na trá domh, in ndoimhneacht na h-oíche',\n", + " \"an saol mhor ina gcodhladh, 's mise liom féin\",\n", + " 'na h-éanacha mara ag scairtigh go léanmhar',\n", + " 'cosúil le h-anamnacha bochta i bpéin',\n", + " \"iomlán gealaí 's iomlán rabharta\",\n", + " \"aoibhneas 's ciúineas, 's áilleacht sa domhain\",\n", + " 'crónán na fairrige ag dul siar ar mo chluasa',\n", + " 'bog-cheol an uisce ag sileadh san abhainn',\n", + " 'istigh ar na h-inseáin tá sean-reilig bheannaithe',\n", + " 'an áit inar mhaireadh naoimh san aimsir fadó',\n", + " 'tá daoine istigh ann ag chaith seal go h-aerach',\n", + " 'ní shiúlfaidh siad thar fán chladaigh níos mó',\n", + " \"bhuail uaigneas m'intínn 's mé ag amharc ar an reilig\",\n", + " \"'s mé ag meadhradh ar dhaoine istigh ann ina luí\",\n", + " \"fir a's mná óga, seandaoine 's páistí\",\n", + " \"muintir mo mhuintir 's cairde mo chroí\",\n", + " \"tá na coiligh ag glaoch 's na réalta ag bánú\",\n", + " \"tá an ghealach ina luí 's ní fada go lá\",\n", + " 'slán agat anois a shean-reilig bheannaithe',\n", + " \"'s na daoine a shiúlfadh liom síos cois na trá\",\n", + " 'english translation from jason carns',\n", + " 'down by the beach, in the deep of night',\n", + " 'the big world is sleeping and i am alone',\n", + " 'the sea-birds are calling sorrowfully',\n", + " 'like poor souls in pain',\n", + " 'total purity and total abundance',\n", + " 'bliss and calmness and beauty in the world',\n", + " 'the murmur of the sea going into my ears',\n", + " 'the soft song of the water flowing in the river',\n", + " 'above on the headland* there is a blessed old cemetery',\n", + " 'the place in which saints lived in times long ago',\n", + " 'there are people within spending a while carefree',\n", + " 'the will not walk round on the shore any more',\n", + " 'loneliness strikes my spirits as i look at the cemetery',\n", + " \"and i'm thinking about the people in there sleeping\",\n", + " 'men and young women, old people and children',\n", + " 'people of my people and friends of my heart',\n", + " 'the cocks are crowing and the stars are fading',\n", + " \"the moon is setting and it's not long until day\",\n", + " 'goodbye now blessed old cemetery',\n", + " 'and to the people who walked with me down by the beach',\n", + " '(above...)* a rough translation. couldn\\'t find the word \"inseáin\", but think',\n", + " 'it means something like this',\n", + " 'by: traditional',\n", + " 'from: \"clannad\"',\n", + " \"tá mo chleamhnas 'a dhéanamh inniu agus inné\",\n", + " \"'s ní mó ná go dtaitníonn an bhean udaí liom féin\",\n", + " \"ach fuígfidh mé mo dhiaidh í, 's rachaidh mé leat féin\",\n", + " 'síos fána coille craobhaigh',\n", + " 'a match was a-making here last night',\n", + " \"and it isn't with the girl that i love the best\",\n", + " \"i'll leave her behind and i'll go along with you\",\n", + " 'down by the banks of the ocean',\n", + " \"'mo codladh go h-eadarshuth b'aite liom féin\",\n", + " 'leabaí luachair a bheith faoi mo thaobh',\n", + " 'buideal brandaí a bheith faoi mo cheann',\n", + " \"'s mo chailín deas óg 'bheith ar lámh' liom\",\n", + " 'sleeping to milking time is my delight',\n", + " 'a bed of green rushes underneath my side',\n", + " 'a bottle of brandy underneath my head',\n", + " 'and a charming young maid in my arms',\n", + " 'shiúil mise thoir agus shiúil mise thiar',\n", + " \"shiúil mise corcaigh 'gus sráideanna bhaile' cliath\",\n", + " 'macasamhail mo chailín ní fhaca mise riamh',\n", + " \"'sí 'n bhean í a d'fhág mo chroí cráite\",\n", + " 'oh i walked east and i walked west',\n", + " \"i walked cork and dublin's streets\",\n", + " \"an equal to my love i didn't meet\",\n", + " \"she's the wee lass that's left my heart broken\",\n", + " 'guinea pig',\n", + " 'pig, pig, pig, pig',\n", + " 'guinea pig',\n", + " 'pig, pig, pig, pig',\n", + " 'guinea pig',\n", + " 'pig, pig, pig, pig',\n", + " \"i don't wanna be your guinea pig, pig, pig\",\n", + " 'guinea pig',\n", + " 'pig, pig, pig, pig',\n", + " 'guinea pig',\n", + " 'pig, pig, pig, pig',\n", + " 'guinea pig',\n", + " 'pig, pig, pig, pig',\n", + " \"i don't wanna be your guinea pig, pig, pig\",\n", + " 'beady eyes, fuzzy hair',\n", + " 'beady eyes, fuzzy hair',\n", + " 'beady eyes, fuzzy hair',\n", + " 'beady eyes, fuzzy hair',\n", + " 'guinea pig (guinea pig)',\n", + " 'pig, pig, pig, pig',\n", + " 'guinea pig (guinea pig)',\n", + " 'pig, pig, pig, pig',\n", + " 'guinea pig (guinea pig)',\n", + " 'pig, pig, pig, pig',\n", + " \"i don't wanna be your guinea pig, pig, pig\"]},\n", + " 'data': ['imtheochaidh soir is siar',\n", + " 'a dtainig ariamh',\n", + " 'an ghealach is an ghrian',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " \"imtheochaidh an ghealach's an ghrian\",\n", + " \"an daoine og is a chail 'na dhiadh\",\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " 'imtheochaidh a dtainig ariamh',\n", + " 'an duine og is a chail ne dhiadh',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " 'ged bhiodh ann cur is cathadh',\n", + " 'is sìde nan seachd sian',\n", + " 'gheibheadh griogair dhomsa cnacan',\n", + " \"'san caidlimid fo dhìon\",\n", + " 'sèist:',\n", + " 'ochain ochain ochain uiridh',\n", + " 'ochain uiridh ó',\n", + " 'ochain ochain ochain uiridh',\n", + " \"'s mór mo mhulad 's mór\",\n", + " \"is mór a b'annsa bhith aig griogair\",\n", + " 'fo bhrata ruibeach ròin',\n", + " 'na bhith aig baran crìon na dalach',\n", + " 'ag giùlan sìoda is sròil',\n", + " '(sèist)',\n", + " 'chuir iad a cheann air ploc daraich',\n", + " 'is dhòirt iad fhuil ma làr',\n", + " 'nam biodh agamsa an sin cupan',\n", + " \"dh'òlainn dith mo shàth\",\n", + " '(sèist)',\n", + " 'ged tha mnathan chàich aig baile',\n", + " \"'nan laighe is 'nan cadal sàmh\",\n", + " 'is ann bhios mise bruaich mo leapa',\n", + " \"a' bualadh mo dhà làimh\",\n", + " '(sèist)',\n", + " 'ba hu, ba hu, ba mo leanabh',\n", + " 'ba mo leanabh, ba',\n", + " 'ba hu, ba hu, ba mo leanabh',\n", + " 'chan eil thu ach tlàth',\n", + " 'chan eil thu ach tlàth',\n", + " 'english translation:',\n", + " 'even in the drifting snow',\n", + " 'with all seven elements abounding',\n", + " 'gregor would find a crevice for me',\n", + " 'and we would sleep in its shelter',\n", + " 'chorus:',\n", + " 'ochain ochain ochain uiridh',\n", + " 'ochain uiridh ó',\n", + " 'ochain ochain ochain uiridh',\n", + " 'oh great is my lamentation',\n", + " 'i would rather be with gregor',\n", + " 'under a hairy sealskin rug',\n", + " 'than with the withered baron of dal',\n", + " 'with silk and satin to wear',\n", + " '(chorus)',\n", + " 'they put his head on an oaken stump',\n", + " 'and spilled blood on the ground',\n", + " 'if i had had a wee cup there',\n", + " 'i would have drunk my fill',\n", + " '(chorus)',\n", + " 'although the rest of the women of the village',\n", + " 'are lying in their peaceful sleep',\n", + " 'i myself am beside my bed',\n", + " 'beating with my two hands',\n", + " '(chorus)',\n", + " 'lullabye, my little one',\n", + " 'lullabye, my little one',\n", + " 'lullabye, my little one',\n", + " 'you are just so delicate',\n", + " 'you are just so delicate',\n", + " 'source: celtic lyrics corner',\n", + " 'bha dà phiuthar ann ’s lad a’ coiseachd sios an t-sràid',\n", + " 'o an t-uisge is a’ ghaoth',\n", + " 'phut an tè bu shine an tè eile dhan an t-sruth',\n", + " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", + " 'there were two sisters came walking down the street',\n", + " 'oh the wind and rain',\n", + " 'older one pushed the younger one in',\n", + " 'crying oh the dreadful wind and rain',\n", + " 'oir thug seonaidh dhan tè b’ òige fàinne àlainn òir',\n", + " 'o an t-uisge is a’ ghaoth',\n", + " 'cha d’ fhuair an tè eile aon sian dhe chuid',\n", + " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", + " 'so she pushed her into the river to drown',\n", + " 'oh the wind and rain',\n", + " 'watched her as she floated down',\n", + " 'crying oh the dreadful wind and rain',\n", + " 'flodradh gus an d’ rànaig i linne mhòr a’ chasg',\n", + " 'o an t-uisge is a’ ghaoth',\n", + " 'athair, o ahtair, seall an eala air an t-snàmh',\n", + " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", + " 'then out of the woods came a fiddler fair',\n", + " 'oh the wind and rain',\n", + " 'he plucked thirty strands of her long yellow hair',\n", + " 'crying oh the dreadful wind and rain',\n", + " 'is rinn e bogha grinn dhen gaoisnean bàn',\n", + " 'oh the wind and rain',\n", + " 'then he made a fiddle bow of her long yellow hair',\n", + " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", + " 'agus rinn e cnagan-fidhle dhe a corragan caola',\n", + " 'oh the wind and rain',\n", + " 'and he made fiddle pegs of her long finger bones',\n", + " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", + " 'and he made a little fiddle of her own breast bone',\n", + " 'o an t-uisge is a’ ghaoth',\n", + " 'which sound would melt a heart of stone',\n", + " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", + " 'is an aona phort a thigeadh a-mach às an fhidheall',\n", + " 'o an t-uisge is a’ ghaoth',\n", + " 'only tune that the fiddle would play',\n", + " 'was oh the dreadful wind and rain',\n", + " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", + " 'hallelujah, hallelu',\n", + " 'hallelujah, hallelu',\n", + " 'oíche chiúin, oíche mhic dé',\n", + " 'cách na suan go héiri an lae',\n", + " 'dís is dílse ag faire le spéis',\n", + " 'glór binn aingeal le clos insan aer',\n", + " 'críost ag teacht ar an saol',\n", + " 'críost ag teacht ar an saol',\n", + " 'hallelujah, hallelu',\n", + " 'hallelujah, hallelu',\n", + " 'hallelujah, hallelu',\n", + " 'hallelujah, hallelu',\n", + " 'silent night, holy night',\n", + " 'shepherds quake at the sight',\n", + " 'glories stream from heaven afar',\n", + " 'heavenly hosts singing alleluia',\n", + " 'christ the savior is born',\n", + " 'christ the savior is born',\n", + " 'hallelujah, hallelu',\n", + " 'hallelujah, hallelu',\n", + " 'hallelujah, hallelu',\n", + " 'silent night, holy night',\n", + " \"son of god, love's pure light\",\n", + " 'radiant beams from thy holy face',\n", + " 'with the dawn of redeeming grace',\n", + " 'jesus, lord at thy birth',\n", + " 'jesus, lord at thy birth',\n", + " 'jesus, lord at thy birth',\n", + " 'hallelujah, hallelu',\n", + " 'hallelujah, hallelu',\n", + " 'hallelujah, hallelu',\n", + " 'hallelujah, hallelujah',\n", + " 'oscail mo shúile',\n", + " 'nìos mò èist è sin',\n", + " 'ar an tsáile snámha',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'open my eyes saltwater rain',\n", + " 'oscail mo shúil in that way',\n", + " 'ãˆist tù in that way',\n", + " 'ãˆist tù in that way',\n", + " 'missing part in that way',\n", + " 'ãˆist tù oscail mo shùil',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'open my eyes, saltwater rain',\n", + " 'oscail mo shùil, no more inside',\n", + " 'saltwater rain, oscail mo shùil',\n", + " 'english translation, open my eyes',\n", + " 'bigger, listen to us',\n", + " 'swimming in saltwater',\n", + " 'open my eyes, saltwater rain',\n", + " 'open my eyes in that way',\n", + " 'you listen in that way',\n", + " 'you listen in that way',\n", + " 'missing part, in that way',\n", + " 'you listen open my eyes',\n", + " 'no more inside, saltwater rain',\n", + " 'open my eyes',\n", + " 'ar chonnlaigh ghlais an fhoghmhair',\n", + " 'a stóirín gur dhearc mé uaim',\n", + " 'ba deas do chos i mbróig',\n", + " \"'sba ró-dheas do leagan siubhail\",\n", + " 'do ghruaidh ar dhath na rósaí',\n", + " \"'sdo chúirníní bhí fighte dlúith\",\n", + " \"monuar gan sinn 'ár bpósadh\",\n", + " \"nó'r bórd luinge 'triall 'un siubhail\",\n", + " 'tá buachaillí na h-áite seo',\n", + " \"a' gartha 'gus ag éirghe teann\",\n", + " 'is lucht na gcochán árd',\n", + " \"a' deánamh fáruis do mo chailín donn\",\n", + " 'dá ngluaiseadh rí na spáinne',\n", + " \"thar sáile 's a shlóighte cruinn\",\n", + " 'bhrúighfinn féar is fásach',\n", + " \"'s bhéinn ar láimh le mo chailín donn\",\n", + " \"ceannacht buaibh ar aontaigh'\",\n", + " 'dá mbínn agus mo chailín donn',\n", + " 'gluais is tar a chéad-searc',\n", + " \"nó go dtéidh muid thar ghaoth-bearra 'nonn\",\n", + " 'go sgartar ó n-a chéile',\n", + " \"bárr na gcraobh 's an eala ón tuinn\",\n", + " 'ní sgarfar sin ó chéile',\n", + " \"'s níl ach baois díbh á chur 'n mur gcionn\",\n", + " 'english to the above:',\n", + " 'on the green stubble-fields of autumn',\n", + " 'i saw you, my sweetheart',\n", + " 'nice were your feet in shoes',\n", + " 'and wonderful your nimble gait',\n", + " 'your two cheeks the color of roses',\n", + " 'and your ringlets tightly plaited',\n", + " \"alas that we're not married\",\n", + " 'or on board ship sailing away',\n", + " 'the boys around here are',\n", + " 'laughing and getting bold',\n", + " 'and the people of the high straw?',\n", + " 'are making ?? of my brown girl',\n", + " 'if the king of spain would',\n", + " 'go abroad with his assembled men',\n", + " 'i would flatten grass and rank grass',\n", + " 'and i would be with my brown girl',\n", + " 'buying cows at the fair',\n", + " 'if i were ? and my brown girl',\n", + " 'go and come first love',\n", + " 'until we go over to gaoth-bearra',\n", + " 'until we separate from each other',\n", + " 'the tops of the branches and the swan from the waves ?',\n", + " \"that won't separate us\",\n", + " \"and it's only folly for you to put it ??\",\n", + " 'i wrote a letter',\n", + " 'to my sweetheart and a sharp complaint',\n", + " 'she sent it back to me',\n", + " 'that her heart was inside me',\n", + " 'like the sweetest swan?',\n", + " 'finer than silk or bird feathers',\n", + " 'heavy is my sigh',\n", + " 'when i think of being apart from her',\n", + " 'what i heard on sunday',\n", + " 'as conversation among the women',\n", + " 'that she was going to be married',\n", + " 'to a young man from the place',\n", + " 'sweetheart take my advice',\n", + " 'and this autumn stay as you are',\n", + " \"and don't tell anyone, my love\",\n", + " 'that you are my love',\n", + " 'imtheochaidh soir is siar',\n", + " 'a dtainig ariamh',\n", + " 'an ghealach is an ghrian',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " \"imtheochaidh an ghealach's an ghrian\",\n", + " \"an daoine og is a chail 'na dhiadh\",\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " 'imtheochaidh a dtainig ariamh',\n", + " 'an duine og is a chail ne dhiadh',\n", + " 'fol lol the doh fol the day',\n", + " 'fol the day fol the day',\n", + " 'translation',\n", + " 'i will go east and go west',\n", + " 'from whence came',\n", + " 'the moon and the sun',\n", + " 'the moon and the sun will go',\n", + " 'and the young man',\n", + " 'with his reputation behind him',\n", + " 'i will go wherever he came from -',\n", + " 'the young man with his reputation behind him',\n", + " 'oscail mo shúile',\n", + " 'nìos mò',\n", + " 'èist è sin',\n", + " 'ar an tsáile snámha',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'open my eyes',\n", + " 'saltwater rain',\n", + " 'oscail mo shúil',\n", + " 'in that way',\n", + " 'èist tù',\n", + " 'in that way',\n", + " 'èist tù',\n", + " 'in that way',\n", + " 'missing part',\n", + " 'in that way',\n", + " 'èist tù',\n", + " 'oscail mo shùil',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'fol lol the doh fol the day',\n", + " 'open my eyes',\n", + " 'saltwater rain',\n", + " 'oscail mo shùil',\n", + " 'no more inside',\n", + " 'saltwater rain',\n", + " 'oscail mo shùil',\n", + " 'english translation',\n", + " 'open my eyes',\n", + " 'bigger',\n", + " 'listen to us',\n", + " 'swimming in saltwater',\n", + " 'open my eyes',\n", + " 'saltwater rain',\n", + " 'open my eyes',\n", + " 'in that way',\n", + " 'you listen',\n", + " 'in that way',\n", + " 'you listen',\n", + " 'in that way',\n", + " 'missing part',\n", + " 'in that way',\n", + " 'you listen',\n", + " 'open my eyes',\n", + " 'no more inside',\n", + " 'saltwater rain',\n", + " 'open my eyes',\n", + " 'my love, more dear than this life you are to me',\n", + " 'your kiss more clear than the crystal of the sea',\n", + " \"please save me, i've fallen here\",\n", + " 'i’m lost and alone',\n", + " 'an angel weeps',\n", + " 'i hear him cry',\n", + " 'a lonely prayer',\n", + " 'a voice so high',\n", + " 'dry all your tears',\n", + " 'come what may',\n", + " 'and in the end, the sun will rise on one more day',\n", + " 'hey...',\n", + " 'céile mo chroí, do croíse, ar shlánaitheoir',\n", + " 'is císte mo chroí, do chroí sábhálaim comh thíar',\n", + " \"o 's follas gur líon do chroí\",\n", + " 'dom grása, a stór',\n", + " \"athair ré's a íosa aicí lag bás, is mé in pian\",\n", + " 'dry all your tears',\n", + " 'come what may',\n", + " 'and in the end, the sun will rise on one more day',\n", + " 'hey...',\n", + " 'the sun will rise on one more day',\n", + " 'fraoch a rònaigh, muran a bhàlaigh',\n", + " 'fraoch a rònaigh, muran a bhàlaigh',\n", + " 'crois iar nan cliar, crois iar sholais',\n", + " 'crois iar nan cliar, crois iar sholais',\n", + " 'crois iar nan cliar, crois iar sholais',\n", + " \"beinn dubh sholais, aird a' bhorrain\",\n", + " 's fhada bhuam grìminis, lìrinis, càrinis...',\n", + " 'fraoch a rònaigh, muran a bhàlaigh',\n", + " 'fraoch a rònaigh, muran a bhàlaigh',\n", + " 'crois iar nan cliar, crois iar sholais',\n", + " 'crois iar nan cliar, crois iar sholais',\n", + " 'crois iar nan cliar, crois iar sholais',\n", + " \"beinn dubh sholais, aird a' bhorrain\",\n", + " \"beinn dubh sholais, aird a' bhorrain\",\n", + " 'translation:',\n", + " 'heather from rona, sea-bent from vallay',\n", + " 'heather from rona, sea-bent from vallay',\n", + " 'western cross of the clergy, western cross of sollas',\n", + " 'western cross of the clergy, western cross of sollas',\n", + " 'western cross of the clergy, western cross of sollas',\n", + " 'black mountain of sollas, height of morran',\n", + " 'far from me are griminish, lirinish, cairnish...',\n", + " 'heather from rona, sea-bent from vallay',\n", + " 'heather from rona, sea-bent from vallay',\n", + " 'western cross of the clergy, western cross of sollas',\n", + " 'western cross of the clergy, western cross of sollas',\n", + " 'western cross of the clergy, western cross of sollas',\n", + " 'black mountain of sollas, height of morran',\n", + " 'black mountain of sollas, height of morran',\n", + " 'ná bí ag troid liom anois',\n", + " 'nó ní do namhaid mé;',\n", + " 'ná bí ag troid liom anois',\n", + " 'tuigfidh tú sa deireadh thiar thall nach do namhaid mé',\n", + " 'ó taobh tuathail amach',\n", + " 'níor mhaith liom troid arís',\n", + " 'ón taobh tuathail amach',\n", + " 'mar throid mé liom féin',\n", + " 'throid mé le dé',\n", + " 'throid mé le mo shaol',\n", + " 'agus throid mé léi',\n", + " 'throid mé le mo chéile',\n", + " 'throid mé é\\x92',\n", + " 'throid mé chomh minic sin gur chuir mé',\n", + " 'eagla orm féin',\n", + " 'na cuir ag troid mé arís',\n", + " 'ní chun mo leasa é',\n", + " 'ná cuir ag troid mé arís',\n", + " 'mar níl aon fhonn orm an t-anam atá agam',\n", + " 'a chur amú i mo shaol',\n", + " 'ó taobh tuathail amach',\n", + " 'níor mhaith liom troid arís',\n", + " 'ón taobh tuathail amach',\n", + " 'ó, in ainm dé',\n", + " 'coinnigí an tsíocháin',\n", + " 'déanfaidh muidne fás i ngach aon slí',\n", + " 'coinnigí an tsíocháin',\n", + " 'tá dóthain le déanamh cheana féin;',\n", + " 'coinnigí an tsíocháin',\n", + " 'tá athrú ar an domhan amuigh le déanaí',\n", + " 'coinnigí an tsíocháin',\n", + " 'sara nglacann muid an dara céim',\n", + " 'ó taobh tuathail amach',\n", + " 'níor mhaith liom troid arís',\n", + " 'ón taobh tuathail amach']}}},\n", + " 'hr': {'sentence': {'pop': {'meta': {'train_data': ['mister yuppie diže sistem',\n", + " 'počinje još jedan dan',\n", + " 'čisti zubi, čisti nokti',\n", + " 'kao puppy poslušan',\n", + " 'nosi smješak uz kravatu',\n", + " 'naceren i kad je sam',\n", + " 'on je corporate man',\n", + " 'on je nas business plan',\n", + " 'on je office ken',\n", + " 'on je bang, bang, bang',\n", + " 'mister yuppie, daj pokaži im',\n", + " 'danas nisi samo man machine',\n", + " 'mister yuppie, daj pokaži im',\n", + " 'danas nisi business rin tin tin',\n", + " 'pusti malo telefon',\n", + " \"obuci se k'o elton john\",\n", + " 'i pleši s nama disko',\n", + " 'o-o-o',\n", + " 'kava točno tri minute',\n", + " 'za pet ručak proguta',\n", + " 'efikasnost prije svega',\n", + " 'i dve lajne s laptopa',\n", + " 'troši happy derm',\n", + " 'happy meal',\n", + " 'happy pill, happy kill',\n", + " \"he's happy - is he?\",\n", + " \"he's a bang\",\n", + " \"he's got it\",\n", + " \"he's a bang\",\n", + " \"i don't think so\",\n", + " 'mister yuppie, daj pokaži im',\n", + " 'danas nisi samo man machine',\n", + " 'mister yuppie, daj pokaži im',\n", + " 'danas nisi business rin tin tin',\n", + " 'pusti malo telefon',\n", + " \"obuci se k'o elton john\",\n", + " 'i pleši s nama disko',\n", + " 'o-o-o',\n", + " 'srce je moje zagrlio muk',\n", + " 'sa violina više ne dolazi zvuk',\n", + " 'tama je prekrila potonuli grad',\n", + " 'time has become my worst enemy',\n", + " 'all through the years there was nobody to set me free',\n", + " 'for this pain, captured me forever',\n", + " 'ref:',\n", + " 'nikad više moje oči neće jutra vidjeti',\n", + " 'bez tebe nikad više neću disati',\n", + " \"loosing our sacred love is what i'll never forgive myself\",\n", + " 'and i will never, never be the same',\n", + " 'you are the bliss of my memory',\n", + " 'when i close my eyes the only thing that i see',\n", + " \"now i know, you were kissin' a fool\",\n", + " 'siva je boja moje ljubavi',\n", + " 'u meni sreća već odavno ne postoji',\n", + " 'zadnji si osmijeh u meni slomio ti',\n", + " 'ref:',\n", + " \"loosing our sacred love is what i'll never forgive myself\",\n", + " \"'cause there is no one that could ever take your place\",\n", + " 'nikad vise moje oči neće jutra vidjeti',\n", + " 'bez tebe nikad više neću disati',\n", + " 'ja radim na plantaži pamuka',\n", + " 'berem ga po cijeli dan',\n", + " 'pamučne gaće što ih nosiš ti',\n", + " 'od pamuka su što sam brao ja',\n", + " 'u zemlji gdje živiš ti',\n", + " 'blagostanje je i dobro se živi',\n", + " 'a ja radim teško cijeli dan',\n", + " 'a nisam glup nego radostan',\n", + " 'brao pamuk ili banane',\n", + " 'svejedno je, ti nisi za me',\n", + " 'ti si lijepa i zgodna',\n", + " 'i zgodna i lijepa',\n", + " 'kad te se sjetim, muka mi je',\n", + " 'od pamuka je',\n", + " 'muka mi je',\n", + " 'od pamuka je',\n", + " 'muka mi je',\n", + " 'od pamuka je',\n", + " 'muka mi je',\n", + " 'od pamuka je',\n", + " 'because i live in a banana state',\n", + " \"it doesn't mean that i'm banana man\",\n", + " 'because i live in the ass of the world',\n", + " \"it doesn't mean that i am less worth\",\n", + " 'because i live in a banana state',\n", + " \"it doesn't mean that i'm banana man\",\n", + " 'because i live in the ass of the world',\n", + " \"it doesn't mean that i am less worth\",\n", + " 'i work hard on cotton fields',\n", + " \"pickin' cotton every day\",\n", + " 'underwear that you wear',\n", + " \"is of the cotton that i've made\",\n", + " 'in the country where you live',\n", + " 'rules the harmony and prosperity',\n", + " \"you don't know me\",\n", + " \"you don't know me\",\n", + " \"you don't know me\",\n", + " 'because i live in a banana state',\n", + " \"it doesn't mean that i'm banana man\",\n", + " 'because i live in the ass of the world',\n", + " \"it doesn't mean that i am less worth\",\n", + " 'to što živim u banana stejt',\n", + " 'ne znači da sam glup i da sam strejt',\n", + " 'to što živim u šupku svijeta',\n", + " 'ne znači da sam manje vrijedan',\n", + " 'hey mr.taliman tally me banana',\n", + " 'daylight come and i want to go home',\n", + " 'hey mr.taliman tally me banana',\n", + " 'daylight come and i want to go home',\n", + " 'hej gospodine talimane tali mi bananu',\n", + " 'zora sviće i ja moram poć',\n", + " 'hej gospodine talimane tali mi bananu',\n", + " 'zora sviće i ja moram poć',\n", + " 'zora sviće i ja moram poć',\n", + " 'zora sviće i ja moram poć',\n", + " 'telegram sam',\n", + " 'telegram sam je moj superman',\n", + " 'kratkorepi tom, kratkorepi tom',\n", + " 'ima staklene oči i živčani slom',\n", + " 'tetka beladona, tetka beladona',\n", + " 'u bijeloj kupaoni on je bio ona',\n", + " 'telegram sam je moj superman',\n", + " 'telegram sam je moj superman',\n", + " 'bobi je u redu, bobi je u redu',\n", + " 'dok ga momci u plavom opet ne odvedu',\n", + " 'psihomodo je lud, psihomodo je lud',\n", + " 'svaka žena u gradu s njim počinila bi blud',\n", + " 'telegram sam je moj superman',\n", + " 'telegram sam je moj superman',\n", + " 'plastik fantastik, plastik fantastik',\n", + " 'hiper sintetik i automatik',\n", + " 'ja prodajem snove',\n", + " 'a ti trebaš uvijek nove',\n", + " 'telegram sam je moj superman',\n", + " 'telegram sam je moj superman',\n", + " 'telegram sam je moj superman',\n", + " 'telegram sam',\n", + " 'telegram sam',\n", + " 'telegram sam',\n", + " 'vooooo',\n", + " 'telegram sam',\n", + " 'telegram sam',\n", + " 'telegram sam',\n", + " 'vooooo',\n", + " 'telegram sam',\n", + " 'telegram sam',\n", + " 'telegram sam',\n", + " 'telegram sam baby',\n", + " 'telegram sam',\n", + " 'ja sam ja jeremija',\n", + " 'i am i, jeremija',\n", + " 'prezivam se krstic',\n", + " 'krstic is my last name',\n", + " 'selo mi je toponica',\n", + " 'toponica is my village',\n", + " 'drvena mi dvokolica',\n", + " 'my chariots are wooden',\n", + " 'sluzio sam stari kadar',\n", + " 'i served in the old staff',\n", + " 'artiljerija',\n", + " 'artillery',\n", + " 'ja sam ja jeremija',\n", + " 'i am i, jeremija',\n", + " 'prezivam se krstic',\n", + " 'krstic is my last name',\n", + " 'imam sito i karlicu',\n", + " 'i have sieve and pelvis',\n", + " 'imam zenu vracaricu',\n", + " 'i have witch woman',\n", + " 'sluzio sam stari kadar',\n", + " 'i served in the old staff',\n", + " 'artiljerija',\n", + " 'artillery',\n", + " 'ja sam ja jeremija',\n", + " 'i am i, jeremija',\n", + " 'prezivam se krstic',\n", + " 'krstic is my last name',\n", + " 'imam njivu i livadu',\n", + " 'i have filed and meadow',\n", + " 'vodenicu valjanicu',\n", + " 'water mill (???)',\n", + " 'sluzio sam starii kadar',\n", + " 'i served in the old staff',\n", + " 'artiljerija',\n", + " 'artillery',\n", + " 'ja sam ja jeremija',\n", + " 'i am i, jeremija',\n", + " 'prezivam se krstic',\n", + " 'krstic is my last name',\n", + " 'vise kuca prijalica',\n", + " 'more houses (???)',\n", + " 'preko puta udovica',\n", + " 'across the street a widow',\n", + " 'sluzio sam stari kadar',\n", + " 'i served in the old staff',\n", + " 'artiljerija...',\n", + " 'atrillery',\n", + " 'there is no reason for you to turn around',\n", + " \"it's pity for you to waste your time\",\n", + " 'all the things you could are real good done',\n", + " 'so will you listen to me, my son',\n", + " 'there is no reason for you to turn around',\n", + " \"it's pity for you to waste your time\",\n", + " 'all the things you could are real good done',\n", + " 'so will you listen to me, my son',\n", + " 'take money',\n", + " 'there is no reason for you to turn around',\n", + " \"it's pity for you to waste your time\",\n", + " 'all the things you could do are real good done',\n", + " 'so will you listen to me, my son',\n", + " 'there is no reason for you to turn around',\n", + " \"it's pity for you to waste your time\",\n", + " 'all the things you could do are real good done',\n", + " 'so will you listen to me, my son',\n", + " 'take money and run',\n", + " 'take money and run',\n", + " 'you must be hurry boy',\n", + " 'your shadow is catching you',\n", + " \"it's getting closer and closer\",\n", + " 'you must be hurry boy',\n", + " 'your shadow is catching you',\n", + " \"it's getting colder and colder\",\n", + " 'you must be hurry boy',\n", + " 'your shadow is catching you',\n", + " \"it's getting closer and closer\",\n", + " 'you must be hurry boy',\n", + " 'your shadow is catching you',\n", + " \"it's getting colder and colder\",\n", + " 'take money and run',\n", + " 'take money and run',\n", + " 'ne okreći se sine',\n", + " 'nema razloga',\n", + " 'šteta je, gubiš vrijeme',\n", + " 'sve što si mogao učiniti, učinio si dobro',\n", + " 'zato me poslušaj sinko',\n", + " 'uzmi novce i bježi',\n", + " 'uzmi novce i bježi',\n", + " 'uzmi novce i bježi',\n", + " 'uzmi novce i bježi',\n", + " 'take money and run',\n", + " 'take money and run',\n", + " 'take money and run',\n", + " 'take money and run',\n", + " 'beži',\n", + " 'ma, beži',\n", + " \"bu te ulovil'\",\n", + " \"bu te ulovil'\",\n", + " 'vrag ti mater',\n", + " \"bu te ulovil'\",\n", + " 'sota mono tratao no trateja mon',\n", + " 'uto traja satija totaja tom',\n", + " 'ima toja satao no trateja mon',\n", + " 'uto traja satija tom satija tom',\n", + " 'sadom sadom',\n", + " 'sadom sadom',\n", + " 'una torti sadom',\n", + " 'una parki sadom',\n", + " 'suta mono tratao na trateja ton',\n", + " 'uto traja satija totaja ton',\n", + " 'ima toja satao uno trateja ton',\n", + " 'uto traja satija tom satija tom',\n", + " 'sadom sadom',\n", + " 'sadom sadom',\n", + " 'una torti sadom',\n", + " 'una parki sadom',\n", + " 'suta mono tratao na trateja ton',\n", + " 'uto traja satija totaja ton',\n", + " 'ima toja satao no trateja ton',\n", + " 'uto traja satija tom satija tom',\n", + " 'sadom sadom',\n", + " 'sadom sadom',\n", + " 'una torti sadom',\n", + " 'una parki sadom',\n", + " 'ya mnogo let pidzhak noshu',\n", + " 'davno potersya i ne nov on',\n", + " 'i ya zovu k sebe portnogo',\n", + " 'i pereshit pidzhak proshu',\n", + " 'ya govoryu emu shutya:',\n", + " '\"perekroite vse inache',\n", + " 'sulit mne novyie udachi',\n", + " 'iskusstvo kroyki i shitya\"',\n", + " 'ya poshutil. a on pidzhak',\n", + " 'serezno tak pereshivaet',\n", + " 'a sam-to vse perezhivaet:',\n", + " 'vdrug chto ne tak. takoy chudak',\n", + " 'odna zabota nayavu',\n", + " 'v ego userde molchalivom:',\n", + " 'chtobyi ya vyiglyadel schastlivyim',\n", + " 'v tom pidzhake. poka zhivu',\n", + " 'on predstavlyaet eto tak:',\n", + " 'edva lish ya pidzhak primeryu -',\n", + " 'opyat v tvoyu lyubov poveryu',\n", + " 'kak byi ne tak. takoy chudak',\n", + " 'opyat v tvoyu lyubov poveryu',\n", + " 'kak byi ne tak. takoy chudak',\n", + " 'pure and white, her skin is so inviting',\n", + " 'like a new, unbeaten snow',\n", + " 'eyes of blue, so beautiful and blinding',\n", + " 'like the sky over moscow',\n", + " 'jas makedonec, a ona rusinka',\n", + " 'jas dobredojden kako muzika',\n", + " 'muzika! muzika!',\n", + " 'što ne ja razbiram',\n", + " 'ni \"kakalin\", ni \"kamaja\"',\n", + " 'ma ništo ne ja razbiram',\n", + " 'ni \"kakalin\", ni \"kamaja\"',\n", + " 'za nea se kje naučam',\n", + " 'ni \"kakalin\", ni \"kamaja\"',\n", + " 'ma ništo ne ja razbiram',\n", + " 'ni \"kakalin\", ni \"kamaja\"',\n", + " 'za nea se kje naučam',\n", + " 'jas makedonec, a ona rusinka',\n", + " 'dajte i votka a mene rakija',\n", + " 'muzika! muzika!',\n", + " 'što ne ja razbiram',\n", + " 'ni \"kakalin\", ni \"kamaja\"',\n", + " 'ma ništo ne ja razbiram',\n", + " 'ni \"kakalin\", ni \"kamaja\"',\n", + " 'za nea se kje naučam',\n", + " 'laj laj laj la la laj laj laj la la...',\n", + " 'laj laj laj la la laj laj laj la la...',\n", + " 'laj laj laj la la laj laj laj la la...',\n", + " 'laj laj la la laj...',\n", + " 'ni \"kakalin\", ni \"kamaja\"',\n", + " 'ma ništo ne ja razbiram',\n", + " 'ni \"kakalin\", ni \"kamaja\"',\n", + " 'za nea se kje naučam',\n", + " 'ni \"kakalin\", ni \"kamaja\"',\n", + " 'ma ništo ne ja razbiram',\n", + " 'ni \"kakalin\", ni \"kamaja\"',\n", + " 'za nea se kje naučam',\n", + " 'za nea se kje naučam',\n", + " 'uvijek sam bila, kaže',\n", + " 'out of your league',\n", + " 'od prvog dana, bejbe, skačeš',\n", + " 'na svaki moj mig',\n", + " 'to je baš tako unsexy, dear',\n", + " 'ovo je zadnji đir za nas',\n", + " 'pronađi spas, now',\n", + " 'go, go, go, go',\n", + " 'on kaže stani, honey',\n", + " 'samo loš dan',\n", + " 'volimo se ludo',\n", + " \"al' je možda premali stan\",\n", + " 'mi smo dva slonića roza',\n", + " 'u sto hiljada poza',\n", + " 'reci nismo li',\n", + " 'molim te, reci, reci',\n", + " 'o ne',\n", + " 'miss. right and mr. wrong',\n", + " 'ovo je sing-a-long',\n", + " 'o-o-o, samo se smiješi',\n", + " 'miss. right and mr. wrong',\n", + " 'ovo je so-long-see-you',\n", + " 'o-o-o, broji 1, 2, 3, 4',\n", + " 'ti si italic, a ja volim bold',\n", + " 'volim boogie-woogie',\n", + " 'disco, speed',\n", + " 'ti voliš stoned',\n", + " 'mrzim dah tvoj dok spavaš',\n", + " 'kako me obožavaš',\n", + " 'kako ljubiš me',\n", + " 'na tebi mrzim sve',\n", + " 'miss. right and mr. wrong',\n", + " 'ovo je sing-a-long',\n", + " 'o-o-o, samo se smiješi',\n", + " 'miss. right and mr. wrong',\n", + " 'ovo je so-long-see-you',\n", + " 'o-o-o, broji 1, 2, 3, 4',\n", + " 'miss right, and mr. wrong again...',\n", + " '(dobro veče dragi slušaoci, naša večerašnja emisija u cjelosti je posvečena najvećoj zvijezi rock n rolla, gospodinu elvisu j. kurtoviću i njegovom pratećem sastavu meteorcima. za naše mlađe slušaoce evo nekoliko osnovnih biografskih podataka o elvisu. elvis je rođen kao dijete iz mješovitog braka, od oca crnca i majke bijelkinje. od majke je nasljedio ljubav prema country-ju. pa kao i staciju poslušamo elvisom jedan country napjev; \"in our country\")',\n", + " 'in our country',\n", + " 'in our country people are good',\n", + " 'in our country nobody work',\n", + " 'in our country brena is big star',\n", + " 'in our country everybody has a good car',\n", + " \"on concerts and gallеries', there arе no public\",\n", + " 'some people in my country wanted republic',\n", + " \"on concerts and galleries', there are no public\",\n", + " 'some people in my country still want republic',\n", + " 'in our country',\n", + " 'in our country mountains are hot',\n", + " 'in our country people make good book',\n", + " 'in our country boys play basketball',\n", + " \"on concerts and galleries', there are no public\",\n", + " 'some people in my country wanted republic',\n", + " \"on concerts and galleries', there are no public\",\n", + " 'some people in my country still want republic',\n", + " 'ты balkanizer, миран оратор',\n", + " 'я energizer - русификатор',\n", + " 'дистрибуира',\n", + " 'добро поруку',\n", + " 'дружба приятель',\n", + " 'пока дышу я - люблю и верю',\n", + " 'буду любить когда постарею',\n", + " '(ћу) волети и веровати',\n", + " 'истина eдна',\n", + " 'дружба приятель',\n", + " 'welcome my friend this is the best part of the game',\n", + " 'when people come together just to feel the same',\n", + " \"and when you need a friend to feel like you're at home\",\n", + " 'just turn around, watch the crowd',\n", + " 'you’re not alone',\n", + " '(ooh)',\n", + " \"you're not alone\",\n", + " '(ooh)',\n", + " 'zdravo russkaja, traktor mašina',\n", + " 'sviramo skupa, mala nam bina',\n", + " 'pije se šljiva, loče se votka',\n", + " 'za zdravlje russkaja, razvaljotka',\n", + " 'first time we met, we smoked marijuana',\n", + " 'drinking rakija, stage was kafana',\n", + " 'whole night long, singing this song',\n", + " 'not gonna stop this until mañana',\n", + " 'welcome my friend this is the best part of the game',\n", + " 'when people come together just to feel the same',\n", + " \"and when you need a friend to feel like you're at home\",\n", + " 'just turn around, watch the crowd',\n", + " 'you’re not alone',\n", + " '(ooh)',\n", + " \"you're not alone\",\n", + " '(ooh)',\n", + " 'pjevamo glasno, pravi se šutka',\n", + " \"ovaj će dernek trajat' do jutra\",\n", + " \"ovaj će dernek trajat' do jutra\",\n", + " 'jer nam je život od danas do sutra',\n", + " '(ooh)',\n", + " \"you're not alone\",\n", + " '(ooh)',\n", + " \"you're not alone\",\n", + " 'дружба приятель',\n", + " 'pogled mili',\n", + " 'jedini dušu smiri',\n", + " 'o volim te',\n", + " 'noć je duga',\n", + " 'bez tebe tuga',\n", + " 'ruku mi daj',\n", + " 'nikad ne puštaj',\n", + " 'everything for you',\n", + " 'i give myself to you',\n", + " 'neka me svet čuje sad',\n", + " 'životom branim te ja',\n", + " 'neka nas svi vide sad',\n", + " 'svako nek zna, da zauvek',\n", + " 'tvoja sam ja',\n", + " 'kruna je tvoja',\n", + " 'ljubavi moja',\n", + " 'želim da znaš',\n", + " 'da tebi pripada',\n", + " 'everything for you',\n", + " 'i give myself to you',\n", + " 'neka me svet čuje sad',\n", + " 'životom branim te ja',\n", + " 'neka nas svi vide sad',\n", + " 'svako nek zna, da zauvek',\n", + " 'tvoja sam ja',\n", + " 'svako nek zna, da zauvek',\n", + " 'volim te ja']},\n", + " 'data': ['stvari se polako vrcaju na mjesto',\n", + " 'ovako ne\\x8ato se ne dogaða cesto',\n", + " 'premda, priznajem ponekad pretjeram',\n", + " 'i nekud otplovim sam',\n", + " 'i tad slike izblijede sve',\n", + " 'i tad zatvaram se u sebe',\n", + " 'i tad nisi mi potrebna',\n", + " 'kazaljke i dalje krugove crtaju',\n", + " 'umjesto zvijezda ki\\x8ane kapi na grad padaju',\n", + " 'prazno mjesto u mom krevetu sjeca me',\n", + " 'bila si tu',\n", + " 'tko zna , kuda si oti\\x8ala',\n", + " 'tko zna ,zbog cega se ne vraca\\x8a',\n", + " 'tko zna ,sve pi\\x8ae u zvijezdama',\n", + " 'jo\\x8a jucer poljupcima mi smo se borili',\n", + " 'i dodirom smo jedno drugom tajne otkrivali',\n", + " '\\x8ato se dogodilo gdje je ta kap \\x8ato je',\n", + " 'prelila ca\\x8au , \\x8ato te natjerala da odnese\\x8a',\n", + " 'sve \\x8ato sam volio , a tebe sam volio',\n", + " 'sve \\x8ato sam sanjao, a tebe sam sanjao',\n", + " 'ma zar sam pogrije\\x8aio \\x8ato sam se smijao',\n", + " 'kad su mi govorili da sve su \\x8eene kurve',\n", + " 'kad bi zauvijek zaspao ovaj grad',\n", + " 'kao u bajci prekriven trnjem i travama',\n", + " 'sve dok se ti ne vrati\\x8a,a vratit ce\\x8a se znam',\n", + " 'i sve dok tvoja ruka ne dotakne moj dlan',\n", + " 'do me ne zagrli\\x8a',\n", + " 'dok me ne poljubi\\x8a',\n", + " 'dok me ne zagrije tvoj dah',\n", + " '(da vidim ruke)',\n", + " \"volim te k'o, volim te k'o\",\n", + " \"volim te k'o, volim te k'o\",\n", + " 'video, dvd, kompjuterske igrice',\n", + " \"volim te k'o, volim te k'o\",\n", + " \"volim te k'o, volim te k'o\",\n", + " 'sladoled i kokice',\n", + " 'casio i šljokice',\n", + " \"volim te k'o, volim te k'o\",\n", + " \"volim te k'o, volim te k'o\",\n", + " \"k'o konana, dilana, alana\",\n", + " 'ona dva partizana',\n", + " \"volim te k'o, volim te k'o\",\n", + " \"volim te k'o, volim te k'o\",\n", + " 'lcd, bpm, h&m, s/m',\n", + " \"volim te k'o, volim te k'o\",\n", + " \"volim te k'o, volim te k'o\",\n", + " 'kristl i aleksis',\n", + " 'domačica keksiz',\n", + " \"volim te k'o, volim te k'o\",\n", + " \"volim te k'o, volim te k'o\",\n", + " \"kao tarzan čitu, k'o jovanka titu\",\n", + " \"volim te k'o, volim te k'o\",\n", + " \"volim te k'o, kao plivadone\",\n", + " 'bombone, trodone',\n", + " 'žvakače i toblerone',\n", + " \"volim te k'o, volim te k'o\",\n", + " \"volim te k'o, volim te k'o\",\n", + " 'car sex, fast sex, last sex with the ex',\n", + " 'honey pie, honey pie',\n", + " 'sakrit ću te u zube kao žvaku',\n", + " 'honey pie, honey pie',\n", + " 'nitko te neće pronači u mraku',\n", + " 'welcome brother and neighbor',\n", + " 'in my house of labour',\n", + " 'in my city of pain',\n", + " 'country of the insane',\n", + " '- german -',\n", + " '... lies to my people',\n", + " 'lies to my ...',\n", + " 'raditi, hraniti, spavati',\n", + " 'voliti, gubiti, plakati',\n", + " 'grabiti, stvoriti, stušiti',\n", + " 'roditi se i živjeti',\n", + " 'ljubiti, grliti, želiti',\n", + " 'mrziti, pucati, ( )',\n", + " 'otići ili ostati',\n", + " 'ostariti i najzad umrijeti',\n", + " 'aman, aman ...',\n", + " 'odlazi dan',\n", + " 'ti polako za njim kreni ali sam',\n", + " 'jer izgubiti ćeš igru',\n", + " 'ovu igru koju odavno već znam',\n", + " '(sava raka tika taka, bija baja buf)',\n", + " 'ne brini, ne brini za mene',\n", + " 'laž mi ništa ne može',\n", + " 'kaži, kaži kako je',\n", + " 'kada se gubi sve',\n", + " 'pred svima govoriš da ništa ne patiš',\n", + " 'i da me ne voliš, baby (baby)',\n", + " 'sad, važi, pokaži',\n", + " 'da možeš bez mene',\n", + " 'jer samo dvije riječi',\n", + " 'danas ti želim reći:',\n", + " 'bar (bar), bar (bar) za kraj',\n", + " 'ne brini, ne brini za mene',\n", + " 'laž mi ništa ne može',\n", + " 'kaži, kaži kako je',\n", + " 'kada se gubi sve',\n", + " 'ne brini, ne brini za mene',\n", + " 'laž mi ništa ne može',\n", + " 'kaži, kaži kako je',\n", + " 'kada se gubi sve',\n", + " \"i couldn't stand the lie\",\n", + " 'now you are doomed to cry',\n", + " \"bye (bye), bye (don't ever), don't lie\",\n", + " '(could it be, could it be, is it true?)',\n", + " '(i was fool that could die for you)',\n", + " \"tell me, tell me, can't you see?\",\n", + " \"you'll never die for me\",\n", + " 'could it be, could it be, is it true? (is it true?)',\n", + " 'i was fool that could die for you',\n", + " '(you know that i could die for you)',\n", + " \"tell me, tell me, can't you see?\",\n", + " \"you'll never die for me\",\n", + " 'could it be, could it be, is it true?',\n", + " 'i was fool that could die for you',\n", + " \"tell me, tell me, can't you see?\",\n", + " \"you'll never die for me\",\n", + " \"tell me, tell me, can't you see?\",\n", + " \"you'll never die for me\",\n", + " 'i got this one thing',\n", + " 'something for nothing',\n", + " 'its really something',\n", + " 'oh sweet nothing',\n", + " 'my little secret',\n", + " \"yeah i'll keep it\",\n", + " 'its so convenient',\n", + " 'even at my weakest',\n", + " 'let it go',\n", + " 'let it grow',\n", + " 'play the casio',\n", + " 'to the radio',\n", + " 'i got this one thing',\n", + " 'something for nothing',\n", + " 'its really something',\n", + " 'oh sweet nothing',\n", + " 'čuvao sam ljubav',\n", + " 'samo za tebe',\n", + " 'čuvao sam ljubav',\n", + " 'samo za tebe',\n", + " 'čuvao sam ljubav',\n", + " 'samo za tebe',\n", + " 'let it go',\n", + " 'let it grow',\n", + " 'dolazi stari dobrih mir',\n", + " 'donosi vrijeme ljubavi',\n", + " 'opijah me dah proljeća',\n", + " 'bolji život predosjećam',\n", + " 'ding ding dong čujte zvona zvon',\n", + " 'u ritmu cijeli svijet zvoni, svaka kuća, svaki dom',\n", + " \"sad svi ruke gore nek 'se čuje zvon\",\n", + " 'ding dong diri diri dam diri dong',\n", + " \"budi tu uz nas i nek' se čuje glas\",\n", + " \"nek' se čuje jasno i nek' se čuje glasno\",\n", + " 'da u miru i dobru trebamo svi poć',\n", + " 'stigla nam je tiha noć',\n", + " 'čestit božić dobrim ljudima i sretna nova, nova godina',\n", + " 'čestit božić dobrim ljudima i sretna nova, nova godina',\n", + " 'ding ding dong here comes the song',\n", + " \"it's colonia gang coming on strong\",\n", + " 'just lift your hands in the air',\n", + " 'ding dong diri diri dam diri de',\n", + " \"if you're a girl, boy, woman or a man\",\n", + " 'just sing with us the best you can',\n", + " 'singing and dancing is not a crime',\n", + " \"just tell the world it's christmas time\",\n", + " 'merry christmas wish you everyone and a happy, happy new year',\n", + " 'merry christmas wish you everyone and a happy, happy new year',\n", + " 'čestit božić dobrim ljudima i sretna nova, nova godina',\n", + " 'čestit božić dobrim ljudima i sretna nova, nova godina',\n", + " 'merry christmas wish you everyone and a happy, happy new year',\n", + " 'merry christmas wish you everyone and a happy, happy new year']}}},\n", + " 'id': {'sentence': {'pop': {'meta': {'train_data': ['jangankan biar hilang semua yang telah diberi',\n", + " 'jangankan pergi rasa manusiawi dan naluri diri',\n", + " 'biar bumi tetap bersinar di bawah mentari',\n", + " 'agar kita tetap bersinar di bawah mentari',\n", + " 'let there be joy and harmony',\n", + " 'from the roof sky above to the deep blue sea',\n", + " 'all that we have under the sun',\n", + " 'singing loud in unheard sounds',\n", + " 'telling us that we are one',\n", + " 'jangankan biar hilang semua yang telah diberi',\n", + " 'jangankan pergi rasa manusiawi dan naluri diri',\n", + " 'biar bumi tetap bersinar di bawah mentari',\n", + " 'agar kita tetap bersinar di bawah mentari',\n", + " 'let there be joy and harmony',\n", + " 'from the roof sky above to the deep blue sea',\n", + " 'all that we have under the sun',\n", + " 'singing loud in unheard sounds',\n", + " 'telling us that we are one',\n", + " 'let there be joy and harmony',\n", + " 'from the roof sky above to the deep blue sea',\n", + " 'all that we have under the sun',\n", + " 'singing loud in unheard sounds',\n", + " 'telling us that we are one',\n", + " 'jangankan lenyap keindahan diri',\n", + " 'kesucian hati',\n", + " 'joy and harmony',\n", + " 'di bawah mentari',\n", + " 'joy and harmony',\n", + " 'let there be joy and harmony',\n", + " 'from the roof sky above to the deep blue sea',\n", + " 'all that we have under the sun',\n", + " 'singing loud in unheard sounds',\n", + " 'telling us that we are one',\n", + " 'let there be joy and harmony',\n", + " 'from the roof sky above to the deep blue sea',\n", + " 'all that we have under the sun',\n", + " 'singing loud in unheard sounds',\n", + " 'telling us that we are one',\n", + " 'jangankan lenyap keindahan diri',\n", + " 'kesucian hati',\n", + " 'dum must qalandar must must, dam must qalandar must',\n", + " 'dum must qalandar must must, dam must qalandar must',\n", + " 'mera vird hai dam dam ali ali',\n", + " 'mera vird hai dam dam ali ali',\n", + " 'sakhi laal qalandar must must',\n", + " 'sakhi laal qalandar must must',\n", + " 'jhole laal qalandar must must',\n", + " 'dum must qalandar must must, dam must qalandar must',\n", + " 'mera vird hai dam dam ali ali',\n", + " 'mera vird hai dam dam ali ali',\n", + " 'sakhi laal qalandar must must',\n", + " 'sakhi laal qalandar must must',\n", + " 'jhole laal qalandar must must',\n", + " 'dum must qalandar must must, dam must qalandar must',\n", + " 'dum must qalandar must must, dam must qalandar must (chorus)',\n", + " 'sufi chants (nfak)',\n", + " 'dum must qalandar must must, dam must qalandar must',\n", + " 'qawwali vocables (nfak)',\n", + " 'dum must qalandar must must, dam must qalandar must',\n", + " 'qawwali vocables',\n", + " 'akhi ja malanga akhi da malanga akhi ja malanga tu ali ali ali ali',\n", + " 'akhi ja malanga akhi da malanga akhi ja malanga',\n", + " 'akhi ja malanga sajia pe mun lain k',\n", + " 'akhi ja malanga sajia pe mun lain k',\n", + " 'aj nai te kal saray ali ali kehn gay',\n", + " 'must must must must dam must qalandar must must',\n", + " 'dum must qalandar must must, dam must qalandar must',\n", + " 'dum must qalandar must must, dam must qalandar must',\n", + " 'ta sumamente magnifiko bo ta',\n", + " 'ku bo kurpa sexy bo ta kana kara na laira',\n", + " 'shake bo body e sodanan ta maria',\n", + " 'bendishon di jah',\n", + " 'paso ta sumamente magnifiko bo ta',\n", + " 'ku bo kurpa sexy bo ta kana kara na laira',\n", + " 'shake bo body e sodanan ta maria',\n", + " 'ta sumamente magnifiko bo ta',\n", + " 'ku bo kurpa sexy bo ta kana kara na laira',\n", + " 'shake bo body e sodanan ta maria',\n", + " 'bendishon di jah',\n", + " 'paso ta sumamente magnifiko bo ta',\n", + " 'ku bo kurpa sexy bo ta kana kara na laira',\n", + " 'shake bo body e sodanan ta maria',\n", + " 'bendishon di jah bo ta',\n", + " 'sumamente, sumamente magnifiko',\n", + " 'ora e angel jega aparese den mi sonjo',\n", + " 'di e fortalesa i mi ke ta e donjo',\n", + " 'pa mi jega ba den kaja shine ku bo',\n", + " 'ta sumamente magnifiko bo ta',\n", + " 'ku bo kurpa sweety bo ta show bo kara',\n", + " 'mi no por warda pa hanja bo den mi gara',\n", + " 'cocktail special di jah bo ta',\n", + " 'paso ta sumamente',\n", + " 'ej, bin serka mi',\n", + " 'bo sa bon bon ku ta bo te exsistentia',\n", + " 'di henter mi kurason mi ke bo kompronde mi',\n", + " 'bo sa muchu bon ku ta bo ta mi bida, mi amor',\n", + " 'ai, bo ta magnifiko',\n", + " 'unda ku bo bai bo ta steal tur e show',\n", + " 'amor di mi so',\n", + " 'hasi bo kos mi ta basha un pida kos',\n", + " 'mi ta bai te shelu bin ku strea pa bo',\n", + " 'luna ku solo ta brija pa bo',\n", + " 'awa ta kai ku tur sorti kolo',\n", + " 'bo ta magnifiko',\n", + " 'mi kurason su topiko',\n", + " 'mi ta hura te na morto ku no tin niun otro kos',\n", + " 'ta sumamente magnifiko bo ta',\n", + " 'ku bo kurpa sexy bo ta kana kara na laira',\n", + " 'shake bo body e sodanan ta maria',\n", + " 'bendishon di jah',\n", + " 'paso ta sumamente magnifiko bo ta',\n", + " 'ku bo kurpa sexy bo ta kana kara na laira',\n", + " 'shake bo body e sodanan ta maria',\n", + " 'bendishon di jah bo ta',\n", + " 'den mi kurason bo te pieda importante',\n", + " 'mi ta kla para pa shoot e bala den bo wante',\n", + " 'pa mi kaba di forme puzzle bo te pieda importante',\n", + " 'tantu sensual hopi elegante',\n", + " 'unda bo ta bai bo bo ta brija',\n", + " 'special selecta pa bo kuida e simija',\n", + " 'si mi no hanja bo pa mi so',\n", + " 'mi kabes no ta frija',\n", + " 'ta bo te medaja mi ke gana tur dia tende awor',\n", + " 'ej, bin serka mi',\n", + " 'bo sa bon bon ku ta bo te exsistentia',\n", + " 'di henter mi kurason mi ke bo kompronde mi',\n", + " 'bo sa muchu bon ku ta bo ta mi bida, mi amor',\n", + " 'ai, bo ta magnifiko',\n", + " 'unda ku bo bai bo ta steal tur e show',\n", + " 'amor di mi so',\n", + " 'hasi bo kos mi ta basha un pida kos',\n", + " 'mi ta bai te shelu bin ku strea pa bo',\n", + " 'luna ku solo ta brija pa bo',\n", + " 'awa ta kai ku tur sorti kolo',\n", + " 'bo ta magnifiko',\n", + " 'mi kurason su topiko',\n", + " 'mi ta hura te na morto ku no tin niun otro kos',\n", + " 'ta sumamente magnifiko bo ta',\n", + " 'ku bo kurpa sexy bo ta kana kara na laira',\n", + " 'shake bo body e sodanan ta maria',\n", + " 'bendishon di jah',\n", + " 'paso ta sumamente magnifiko bo ta',\n", + " 'ku bo kurpa sexy bo ta kana kara na laira',\n", + " 'shake bo body e sodanan ta maria',\n", + " 'bendishon di jah bo ta',\n", + " 'ta sumamente magnifiko bo ta',\n", + " 'cool down! monday',\n", + " 'yaru ki no nai',\n", + " 'kedarui to itsumo no',\n", + " 'tuesday wednesday',\n", + " 'mukashi no to nomeba',\n", + " 'onaji omoidebanashi after 5 mo munashikute',\n", + " 'tabin kitto daremo ga',\n", + " 'kanashii genjitsu to risou no naka de kurushinde yume miteru',\n", + " 'please! please get me shaking! remember dream',\n", + " 'nanimo kowakunakatta ano koro wo torimodoshite',\n", + " 'just forget the bad feelings! remember dream',\n", + " 'tachidomattenai de imasugu wake up! my soul!',\n", + " 'thursday friday',\n", + " 'tokei ki ni shite bakari',\n", + " 'yuuitsu no otanoshimi wa no',\n", + " 'welcome! weekend',\n", + " 'oyasumi no kimari koto',\n", + " 'hiru made ne te itoshi no to',\n", + " 'hontou wa kitto daremo ga',\n", + " 'ikutsumono fuan ya omoi wo oshi koroshite yume miteru',\n", + " 'please! please get me shaking! remember dream',\n", + " 'ashita dake wo mitsumete kagayaki hanatsu mirai e',\n", + " 'just forget the bad feelings! remember dream',\n", + " 'hora kusubuttenai de hajikero! blazing passion!',\n", + " 'tabin kitto daremo ga',\n", + " 'kanashii genjitsu to risou no naka de kurushinde yume miteru',\n", + " 'please! please get me shaking! remember dream',\n", + " 'ashita dake wo mitsumete kagayaki hanatsu mirai e',\n", + " 'just forget the bad feelings! remember dream',\n", + " 'hora kusubuttenai de hajikero! blazing passion!',\n", + " 'please! please get me shaking! remember dream',\n", + " 'nanimo kowakunakatta ano koro wo torimodoshite',\n", + " 'just forget the bad feelings! remember dream',\n", + " 'tachidomattenai de imasugu wake up! my soul!',\n", + " 'bghit ngoul lik ch7al man kalma',\n", + " 'bghit nghani lik ch7al man naghma',\n", + " \"bghitak tchouf datak f'9albi wtarta7\",\n", + " 'bghit nachhad lik wangoul ch7al tanbghik',\n", + " 'm3ak 3acht o7lamt otmanit o7a9a9t omazal',\n", + " 'bghit ntof onchof m3ak boldan wa b7or a rassi wa jbal',\n", + " 'a lyoum hani wa9fa fat7a ro7i lik',\n", + " \"a lyoum hani w'kol ma fia hdito lik\",\n", + " \"d3it l'rabbi kamal lik kol matatmanah\",\n", + " 'tmanit koun yamkan n9arab lik ma testenna',\n", + " 'm3ak ghanit wa chta7t wa d7akt wabkit wa l3abt omazal',\n", + " \"bghit n7ass wa ndo9 o na7yi rou7 nraya7 l'bal\",\n", + " 'm3ak 3acht o7lamt otmanit o7a9a9t omazal',\n", + " 'bghit ntof onchof m3ak boldan wa b7or a rassi wa jbal',\n", + " 'a lyoum hani wa9fa fat7a ro7i lik',\n", + " \"a lyoum hani w'kol ma fia hdito lik\",\n", + " '7abit nor li sakna fi 3inik',\n", + " '7alit ktab maktabi wa ktabt 7rouf smitak nta fih',\n", + " 'a lyoum hani wa9fa fat7a ro7i lik',\n", + " \"a lyoum hani w'kol ma fia hdito lik\",\n", + " 'a lyoum hani wa9fa fat7a ro7i lik',\n", + " \"a lyoum hani w'kol ma fia hdito lik\",\n", + " 'sugisaru kisetsu no you ni bokura wa kawari yuku',\n", + " 'namae wo yonda anata no kioku ga usurenai you ni',\n", + " 'my heart is screaming your name',\n", + " 'these hands reaching for you',\n", + " 'unmei no imi wo wasurenaidene',\n", + " 'itsumo uso bade waratte',\n", + " 'kimi to futari de yume mita basho e ochitai',\n", + " 'ima hanasanaide',\n", + " 'anata no inai sekai ni modoritakunai',\n", + " 'demo yume wa mada yume no mama de',\n", + " 'shizuka ni subete wa kieru',\n", + " 'yeah',\n", + " 'fukai ne muri ni kimi ga iru kara',\n", + " 'hitori janai',\n", + " 'your heart is screaming my name',\n", + " 'your hands reaching for me',\n", + " 'unmei no imi wo wasurenaidene',\n", + " 'itsumo uso bade waratte',\n", + " 'kimi to futari de yume mita basho e ochitai',\n", + " 'ima hanasanaide',\n", + " 'anata no inai sekai ni modoritakunai',\n", + " 'demo yume wa mada yume no mama de',\n", + " 'tashika ni subete wa owaru',\n", + " 'itsu no hika kono yume mo owaru ka na',\n", + " 'afure deta namida wo hirotta',\n", + " 'jag jagar drömmen som blev sann',\n", + " 'kimi ga itta',\n", + " 'kimi to futari de yume mita basho e ochitai',\n", + " 'ima hanasanaide',\n", + " 'anata no inai sekai ni modoritakunai',\n", + " 'demo yume wa mada yume no mama de',\n", + " 'tashika ni subete wa owaru',\n", + " 'me wo tojireba soko ni roses & the crosses',\n", + " 'umetsukushiteku',\n", + " 'atashi marude frozen',\n", + " 'code red',\n", + " 'atashi melting down',\n", + " 'ring the alarm',\n", + " 'mezamenai',\n", + " 'yume no naka',\n", + " 'furasshubakku no nami',\n", + " 'kioku sura subete arai nagashite yuku no',\n", + " 'itsuwari no jibun naraba',\n", + " 'umaku yareru kedo',\n", + " 'ari no mama ja hitorikiri... ?',\n", + " \"i can't get you out of my head\",\n", + " 'kono mama ja dame my handle',\n", + " \"i can't get you out of my head\",\n", + " 'fever',\n", + " 'me ga kuramu',\n", + " 'tatenai kamo',\n", + " 'hitorigoto tsubuyaku nante bom',\n", + " 'kokoro no naka no angel to devil',\n", + " 'atashi hold me down',\n", + " 'ring the alarm',\n", + " 'mezamenai',\n", + " 'yume no naka',\n", + " 'furasshubakku no nami',\n", + " 'kioku sura subete arai nagashite yuku no',\n", + " 'itsuwari no jibun naraba',\n", + " 'umaku yareru kedo',\n", + " 'ari no mama ja hitorikiri... ?',\n", + " \"i can't get you out of my head\",\n", + " 'kono mama ja dame my handle',\n", + " \"i can't get you out of my head\",\n", + " 'namida no umi in oboreru koto mo nai',\n", + " 'anata to hanarereba...',\n", + " \"but i can't get you out of my head\",\n", + " \"i can't get you out of my head\",\n", + " 'kono mama ja dame my handle',\n", + " \"i can't get you out of my head\",\n", + " 'sukāto no tsubasa hiroge teru',\n", + " 'kanojo wa kōsha no okujō de',\n", + " 'boku wa momoiro no yume haita',\n", + " 'boku wa momoiro no koi haita',\n", + " 'shinita gari-darake no kyōshitsu de',\n", + " 'shindasakananome de oborete ku',\n", + " 'zetsutaiteki mono o shiryo kōryo',\n", + " 'zetsutaiteki mono o dōkei su',\n", + " 'takai fensu no ue aruku',\n", + " 'teikū hikō-chū metoroporisu',\n", + " \"boku no nagasu chi wa nan'notame?\",\n", + " 'boku no nagasu chi wa kimi no tame',\n", + " 'yoiyami no yoru ni neonsain',\n", + " \"sekai wa fujun'na iro-darake\",\n", + " 'shian baioretto burū bura',\n", + " 'shian baioretto burakku',\n", + " 'fill up heat',\n", + " 'running to you',\n", + " 'under dark sky',\n", + " 'without your love',\n", + " 'i never win in the game',\n", + " 'fill up heat',\n", + " 'running to you',\n", + " 'under dark sky',\n", + " 'without your love',\n", + " 'i never win in the game',\n", + " 'on the evil linе',\n", + " 'sukāto no tsubasa hirogetara',\n", + " 'kanojo ga waratte tobitatta',\n", + " 'boku wa momoiro no yume no tochū',\n", + " 'boku wa momoiro no koi no tochū',\n", + " 'takai fеnsu o norikoeta',\n", + " 'panorama no machi ni towairaito',\n", + " 'azayakana hodo ni tōmeide',\n", + " 'nigiyakana hodo no shijima',\n", + " 'fill up heat',\n", + " 'running to you',\n", + " 'under dark sky',\n", + " 'without your love',\n", + " 'i never win in the game',\n", + " 'fill up heat',\n", + " 'running to you',\n", + " 'under dark sky',\n", + " 'without your love',\n", + " 'i never win in the game',\n", + " 'on the evil line',\n", + " 'joudan ja nai sonnan ja nai',\n", + " 'do- yu- no?',\n", + " 'mada mada ne tarinain da yo',\n", + " 'kotaete yo no no no 1-2-3',\n", + " 'kaze no naka gensou no naka',\n", + " 'watashi no genkai dare mo shiranai iki wo kirashite',\n", + " 'blade runner',\n", + " 'kako ni wa nai mirai ni mo nai',\n", + " 'ima tsukandeku mono',\n", + " 'keep your mind',\n", + " 'kimi to no story tsunagatteku story story',\n", + " 'itsuka mita you na yume wo',\n", + " 'kinarenai iro demo one more try',\n", + " 'kinou yori ashita yori',\n", + " 'toomawashi no no no 1-2-3',\n", + " 'yaranai yori yaru hou ga ii',\n", + " 'mi wo noridashite tobidashita haato wo daite',\n", + " 'beautiful world',\n", + " 'utsukushiku saite ne hokorashiku waratte',\n", + " 'tsukamitai ima ga aru',\n", + " 'keep your dream',\n", + " 'dore kurai naite ne dore kurai waratte',\n", + " 'ima kimi to mitsukeyou',\n", + " 'itsuka yumemita sekai wo mitakute',\n", + " \"* it's gonna be a start for myself\",\n", + " \"it's gonna be a goal for myself\",\n", + " '* = repeat x 3',\n", + " 'blade runner',\n", + " 'hashiritsuzuke kodoku datte ne',\n", + " 'tsukamitai ima ga aru',\n", + " 'keep your mind',\n", + " 'kimi to no story tsunagatteku story story',\n", + " 'itsuka mita you na yume wo',\n", + " 'jangan kau cari conversation, uh',\n", + " 'bila tak ingin sebuah nation, wohoho yehehe yeah...',\n", + " 'lelah kudengar demoralization',\n", + " 'tatap negri ucap valediction',\n", + " 'wo ho ho..',\n", + " '(bang bang!)',\n", + " 'pergi loe (bang bang!)',\n", + " 'pergi loe (bang bang!)',\n", + " 'wo ooow...',\n", + " '(bang bang!)',\n", + " 'pergi loe (bang bang!)',\n", + " 'pergi loe (bang bang!)',\n", + " 'pergi loe',\n", + " '(bang bang!)',\n", + " 'pergi loe (bang bang!)',\n", + " 'pergi loe (bang bang!)',\n", + " 'wo ho hou ye he he he hey yeah..',\n", + " '(bang bang!)',\n", + " '(bang bang!)',\n", + " 'pergi loe (bang bang!)',\n", + " 'you better go to hell!',\n", + " '(bang bang!)',\n", + " '(bang bang!)',\n", + " \"anyway i don't like you!\",\n", + " '(bang bang!)',\n", + " '(bang bang!)',\n", + " '(bang bang!)',\n", + " '(bang bang!)',\n", + " '(bang bang!)',\n", + " '(bang bang!)',\n", + " '(bang bang!)',\n", + " 'aruku dashita muzyou no kami huminizitta zennin o',\n", + " 'sube o nakusu genzitsu ni sube o nakusu genzitsu o',\n", + " 'kawakikitta notomoto ni sosogi konda aku no tama',\n", + " 'hukaku shizumu kankaku ni hukaku shizumu kakaku o',\n", + " 'i feel tonight',\n", + " 'inside dream',\n", + " 'the voice heals me',\n", + " 'urusare zaru mono ni hizamazuite ita',\n", + " 'suna o kamu zibun ga ita',\n", + " 'urusarzaru mono ni obiete ita kara',\n", + " 'kyouki to kyouhu ni hurueru',\n", + " 'ahure dashita muti no saru dore o mite mo onazi kao',\n", + " 'teashi o mo gareta tidaruma ni ......',\n", + " 'teashi o mo gareta tidaruma o ......',\n", + " '*say oh-oh, let me blow',\n", + " 'mawaru mawaru mira-bo-ru',\n", + " 'kuru? konai ka wa kimi shidai',\n", + " 'say oh-oh, let me show',\n", + " \"furasshu abi shootin' pose\",\n", + " 'choose it, crazy, sexy, kawaii?',\n", + " 'girl in the mirror',\n", + " 'kagami no naka wa fushigi na sekai',\n", + " 'nan ni demo henshin dekiru no',\n", + " 'itsumo no jibun yori mo daitan',\n", + " 'mitsukete yo honmono no watashi',\n", + " 'bad girl...actress...super model?',\n", + " 'whatever you want',\n", + " '**say oh-oh, make me glow',\n", + " 'kira-chun hade ni roll',\n", + " 'noru? noranai wa kimi shidai',\n", + " 'say oh-oh, make it hot',\n", + " 'agatte yuku kodou',\n", + " \"feelin' so good, we got no limit\",\n", + " 'girl in the mirror',\n", + " 'kagami no naka ni hanashikakeru no',\n", + " 'kyou no watashi wa donna kibun?',\n", + " 'tokidoki chotto wakannaku naru',\n", + " 'mou hitori no watashi ga hohoemu',\n", + " 'rock star...sniper...celebrities?',\n", + " 'whatever you want',\n", + " 'repeat *',\n", + " 'dare datte kagami no mae egao tsukuru no wa',\n", + " 'misetakunai kanjou',\n", + " 'tojikomeru tame nan ja nai?',\n", + " 'talk to myself',\n", + " 'repeat **',\n", + " 'repeat *',\n", + " 'from coast to coast, north to south',\n", + " \"i've gotta keep moving to see what is going on\",\n", + " 'hitori de arukitai no ima wa',\n", + " 'coast to coast, east to west',\n", + " \"i've gotta keep moving to be who i really want to be\",\n", + " 'dare ni mo tayorenai no ima wa',\n", + " 'kido airaku ga aimai sonna nichijou ni akite',\n", + " 'kaaten wo aketa totan kokoro no koe wo kiita',\n", + " 'hontou wa ima ni mo kowarete shimaisou',\n", + " 'anata ni yasashiku naritai kara koso',\n", + " 'jibun wo migaki ni iku no',\n", + " 'dakara let me go for now, for now',\n", + " 'from coast to coast, north to south',\n", + " \"i've gotta keep moving to see what is going on\",\n", + " 'hitori de kangaetai no ima wa',\n", + " 'coast to coast, east to west',\n", + " \"i've gotta keep moving to be who i really want to be\",\n", + " 'jibun wo sagashitai no ima wa',\n", + " 'dare mo kare mo ga ai de umarete wa kesarete',\n", + " 'kaaten wo tojita totan kokoro no ana ni ochita',\n", + " 'hontou wa anata ni yorikakatte itai no',\n", + " 'kawaru anata wo miokuttari son na yakumawari',\n", + " 'chotto bouken shitai dake',\n", + " 'anata nashi de korondemo anata nashi de tatanakucha',\n", + " \"don't ask me why for now, for now\",\n", + " 'from coast to coast, north to south',\n", + " \"i've gotta keep moving to see what is going on\",\n", + " 'hitori de arukitai no ima wa',\n", + " 'coast to coast, east to west',\n", + " \"i've gotta keep moving to be who i really want to be\",\n", + " 'dare ni mo tayorenai no ima wa',\n", + " 'from coast to coast, north to south',\n", + " \"i've gotta keep moving to see what is going on\",\n", + " 'hitori de kangaetai no ima wa',\n", + " 'coast to coast, east to west',\n", + " \"i've gotta keep moving to be who i really want to be\",\n", + " 'jibun wo sagashitai no ima wa',\n", + " 'one day anata ga ireba to koukai mo suru deshou',\n", + " 'suna wo kamu you na omoi',\n", + " 'one day anata no kureta kotoba ni nagasu namida de',\n", + " 'kajikanda te wo atatameru wa',\n", + " 'corocodo',\n", + " 'corocodocodo',\n", + " 'cerecedeng',\n", + " 'cerecedegedeng',\n", + " 'cisaingeng',\n", + " 'cisaingengeng',\n", + " 'cirikidzing',\n", + " 'cirikidzkidzing',\n", + " 'corocodo',\n", + " 'corocodocodo',\n", + " 'cerecedeng',\n", + " 'cerecedegedeng',\n", + " 'cisaingeng',\n", + " 'cisaidengeng',\n", + " 'cirikidzkidzing',\n", + " 'corocodo',\n", + " 'corocodocodo',\n", + " 'cerecedeng',\n", + " 'cerecedegedeng',\n", + " 'cisaingeng',\n", + " 'cisaingengeng',\n", + " 'cirikidzing',\n", + " 'cirikidzkidzing',\n", + " 'corocodo',\n", + " 'corocodocodo',\n", + " 'cerecedeng',\n", + " 'cerecedegedeng',\n", + " 'cisaingeng',\n", + " 'cisaidengeng',\n", + " 'cirikidzing',\n", + " 'corocodo',\n", + " 'corocodocodo',\n", + " 'cerecedeng',\n", + " 'cerecedegedeng',\n", + " 'cisaingeng',\n", + " 'cisaingengeng',\n", + " 'cirikidzing',\n", + " 'cirikidzkidzing',\n", + " 'corocodo',\n", + " 'corocodocodo',\n", + " 'cerecedeng',\n", + " 'cerecedegedeng',\n", + " 'cisaingeng',\n", + " 'cisaidengeng',\n", + " 'cirikidzing',\n", + " 'jū o motsu shōnen sakebu',\n", + " 'no way , no way , no way , leave me alone',\n", + " 'sotto dakishime te tsubuyaku',\n", + " 'no need to worry, baby...',\n", + " 'moeru sora yakeru kokyō ( machi )',\n", + " \"we don't know “why”\",\n", + " 'yōsha naku tsubusare te ku my heart',\n", + " 'always my wish is only one, “ just want to see your smile”',\n", + " 'just do it! go there to be alive',\n", + " 'fujōri na kanashimi o koe te yuke',\n", + " 'kotae o motome te',\n", + " 'just do it! go there to be alive',\n", + " 'arehate ta daichi ni saku hana wa',\n", + " 'kimi daro u ka',\n", + " 'boku daro u ka',\n", + " \"stop killing now! c'mon! that ‘ s enough!\",\n", + " \"why don't you see the flowers with her smile?\",\n", + " 'gotta stop killing now! c‘mon! that‘s enough!',\n", + " 'why don‘t you see the flowers with her smile? ah ah',\n", + " 'pan o motsu shōjo hohoemu',\n", + " 'okay, okay, okay, how can i say...',\n", + " 'kitsuku kuchibiru kamishime te',\n", + " 'no need to change, baby',\n", + " 'ubaiau sono hate de will we get the love?',\n", + " 'rikutsu ( rojikku ) ni kowasare te ku my mind',\n", + " 'always my wish is only one, “ just want to save your dream”',\n", + " 'todoke kono negai yo',\n", + " 'tachikire nai kanashimi o koe te yuke',\n", + " 'kotae o motome te',\n", + " 'ano sai ta hana wa',\n", + " 'dare no “yume” “kibō” datta no daro u',\n", + " 'kimi daro u ka',\n", + " 'boku daro u ka',\n", + " 'just do it! go there to be alive',\n", + " 'fujōri na kanashimi o koe te yuke',\n", + " 'kotae o motome te',\n", + " 'just do it! go there to be alive',\n", + " 'arehate ta daichi ni saku hana wa',\n", + " 'kimi daro u ka',\n", + " 'boku daro u ka',\n", + " \"stop killing now! c'mon! that ‘ s enough!\",\n", + " \"why don't you see the flowers with her smile?\",\n", + " 'gotta stop killing now! c‘mon! that‘s enough!',\n", + " 'why don‘t you see the flowers with her smile? ah ah',\n", + " 'beri aku kesempatan untuk bisa merindukanmu',\n", + " 'jangan datang terus',\n", + " 'beri juga aku ruang bebas dan sendiri',\n", + " 'jangan ada terus',\n", + " 'aku butuh tahu seberapa kubutuh kamu',\n", + " 'percayalah rindu itu baik untuk kita',\n", + " 'pagi melihatmu menjelang siang kau tahu',\n", + " 'aku ada di mana sore nanti',\n", + " 'tak pernah sekali pun ada malam yang dingin',\n", + " 'hingga aku lupa rasanya sepi',\n", + " 'tak lagi sepi bisa kuhargai',\n", + " 'baik buruk perubahanku tak akan kau sadari',\n", + " 'kita berevolusi',\n", + " 'bila kita ingin tahu seberapa besar rasa yang kita punya',\n", + " 'kita butuh ruang',\n", + " 'pagi melihatmu menjelang siang kau tahu',\n", + " 'aku ada di mana sore nanti',\n", + " 'tak pernah sekali pun ada malam yang dingin',\n", + " 'hingga aku lupa rasanya sepi',\n", + " 'tak lagi sepi bisa kuhargai',\n", + " 'kita tetap butuh ruang sendiri-sendiri',\n", + " 'untuk tetap menghargai rasanya sepi',\n", + " 'pagi melihatmu menjelang siang kau tahu',\n", + " 'aku ada di mana sore nanti',\n", + " 'tak pernah sekali pun ada malam yang dingin',\n", + " 'hingga aku lupa rasanya sepi',\n", + " 'tak lagi sepi bisa kuhargai',\n", + " 'tak lagi sepi bisa kuhargai',\n", + " 'english',\n", + " 'give me a chance to miss you',\n", + " \"don't always come\",\n", + " 'give me a free space to be alone',\n", + " \"don't always be here\",\n", + " 'i need to know how much i need you',\n", + " 'trust me, yearning is good for us',\n", + " 'in the morning i see you, as noon come you know',\n", + " 'where will i be in the evening',\n", + " \"never once there's a cold night\",\n", + " 'and now i forget how solitude feels like',\n", + " \"i can't appreciate solitude anymore\",\n", + " 'good or bad my changes are, you will not notice',\n", + " 'we evolute',\n", + " 'if we want to know how deep our feelings are',\n", + " 'we need space',\n", + " 'in the morning i see you, as noon come you know',\n", + " 'where will i be in the evening',\n", + " \"never once there's a cold night\",\n", + " 'and now i forget how solitude feels like',\n", + " \"i can't appreciate solitude anymore\",\n", + " 'we still need each of our own space',\n", + " 'to keep appreciating how solitude feels like',\n", + " 'in the morning i see you, as noon come you know',\n", + " 'where will i be in the evening',\n", + " \"never once there's a cold night\",\n", + " 'and now i forget how solitude feels like',\n", + " \"i can't appreciate solitude anymore\",\n", + " \"i can't appreciate solitude anymore\",\n", + " 'kata-kata dari mulutmu memang berbahaya',\n", + " 'kau permainkan oh hatiku dengan berbagai cara',\n", + " 'mata, bibirmu sentuhku sampai ku tak bersuara',\n", + " 'lihat arogansimu, ku malah lemah tak berdaya',\n", + " 'kau pikirku mudah bagimu',\n", + " 'namun bersamamu tabu bagiku',\n", + " 'now baby boy listen to me, boy show me',\n", + " \"how you're gonna get me paralyzed\",\n", + " 'this is me now tell me',\n", + " \"when you're gonna get me paralyzed\",\n", + " 'this is me boy get me',\n", + " \"how you're gonna get me paralyzed\",\n", + " 'imma let you slide',\n", + " 'cuz i wont lie',\n", + " 'i want you to get me paralyzed',\n", + " \"how you're gonna get me paralyzed\",\n", + " \"when you're gonna get me paralyzed\",\n", + " \"how you're gonna get me paralyzed\",\n", + " 'are you gonna get me paralyzed',\n", + " 'oh kau bawa aku lagi sampai ku hampir mati',\n", + " 'caramu kagumiku, kau kejar aku sampai mati',\n", + " 'memang ku kagumimu dari atas sampai hati',\n", + " 'tak perlu ku ragu, dari hati sampai kaki',\n", + " 'kau pikirku mudah bagimu',\n", + " 'namun bersamamu tabu bagiku',\n", + " 'now baby boy listen to me, boy show me',\n", + " \"how you're gonna get me paralyzed\",\n", + " 'this is me now tell me',\n", + " \"when you're gonna get me paralyzed\",\n", + " 'this is me boy get me',\n", + " \"how you're gonna get me paralyzed\",\n", + " 'imma let you slide',\n", + " 'cuz i wont lie',\n", + " 'i want you to get me paralyzed',\n", + " \"how you're gonna get me paralyzed\",\n", + " \"when you're gonna get me paralyzed\",\n", + " \"how you're gonna get me paralyzed\",\n", + " 'are you gonna get me paralyzed',\n", + " \"how you're gonna get me paralyzed\",\n", + " \"how you're gonna get me paralyzed\",\n", + " \"how you're gonna get me paralyzed\",\n", + " 'now baby boy listen to me, boy show me',\n", + " \"how you're gonna get me paralyzed\",\n", + " 'this is me now tell me',\n", + " \"when you're gonna get me paralyzed\",\n", + " 'this is me boy get me',\n", + " \"how you're gonna get me paralyzed\",\n", + " 'imma let you slide',\n", + " 'cuz i wont lie',\n", + " 'i want you to get me paralyzed',\n", + " \"how you're gonna get me paralyzed\",\n", + " \"when you're gonna get me paralyzed\",\n", + " \"how you're gonna get me paralyzed\",\n", + " 'are you gonna get me paralyzed',\n", + " 'semalam i call you, you tak answer',\n", + " 'you kata you keluar pergi dinner',\n", + " 'you kata you keluar dengan kawan you',\n", + " \"but when i called tommy he said it wasn't true\",\n", + " 'so i drove my car pergi damansara',\n", + " 'tommy kata maybe you tengok bola',\n", + " 'tapi bila i sampai, you tak ada',\n", + " 'lagilah i jadi gila!',\n", + " 'so i called and called sampai you answer',\n", + " \"you kata, 'sorry, sayang. tadi tak dengar\",\n", + " 'my phone was on silent, i was at the gym.\"',\n", + " 'tapi latar belakang suara perempuan lain',\n", + " \"sudahlah, sayang, i don't believe you\",\n", + " \"i've always known that your words were never true\",\n", + " 'why am i with you? i pun tak tahu',\n", + " 'no wonderlah my friends pun tak suka',\n", + " \"so i guess that's the end of our story\",\n", + " 'akhir kata she accepted his apology',\n", + " 'tapi last-last kita dapat tahu she was cheating too',\n", + " \"with her ex-boyfriend's best friend...\",\n", + " 'tommy',\n", + " \"t'lah kucoba melupakanmu\",\n", + " 'namun bayangmu terus menggangguku',\n", + " 'ingin ku lari dari kenyataan',\n", + " 'yang selalu saja meresahkanku',\n", + " 'adakah cara tuk hilang darimu',\n", + " 'karna ku tahu kau bukan milikku',\n", + " 'ingin ku lari dari kenyataan',\n", + " 'yang selalu saja meresahkanku',\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " \"i don't know what to do yeah\",\n", + " 'adakah cara tuk hilang darimu',\n", + " 'karna ku tahu kau bukan milikku',\n", + " 'ingin ku lari dari kenyataan',\n", + " 'yang selalu saja meresahkanku',\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " \"i don't know what to do yeah\",\n", + " \"don't you know that evеrytime\",\n", + " 'i see your smile',\n", + " \"therе's a part of me\",\n", + " \"i can't deny\",\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " \"i don't know what to do yeah\",\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " 'everytime i see you smile, laugh and cry',\n", + " \"i can't get you out of my mind girl\",\n", + " \"i don't know what to do yeah\",\n", + " 'tubuh saling bersandar',\n", + " 'ke arah mata angin berbeda',\n", + " 'kau menunggu datangnya malam',\n", + " 'saat ku menanti fajar',\n", + " 'sudah coba berbagai cara',\n", + " 'agar kita tetap bersama',\n", + " 'yang tersisa dari kisah ini',\n", + " 'hanya kau takut kuhilang',\n", + " 'perdebatan apapun menuju kata pisah',\n", + " 'jangan paksakan genggamanmu',\n", + " 'izinkan aku pergi dulu',\n", + " 'yang berubah hanya',\n", + " 'tak lagi kumilikmu',\n", + " 'kau masih bisa melihatku',\n", + " 'kau harus percaya',\n", + " 'kutetap teman baikmu',\n", + " 'sudah coba berbagai cara',\n", + " 'agar kita tetap bersama',\n", + " 'yang tersisa dari kisah ini',\n", + " 'hanya kau takut kuhilang',\n", + " 'perdebatan apapun menuju kata pisah',\n", + " 'jangan paksakan genggamanmu',\n", + " 'yang berubah hanya',\n", + " 'tak lagi kumilikmu',\n", + " 'kau harus percaya',\n", + " 'kutetap teman baikmu',\n", + " 'izinkan aku pergi dulu',\n", + " 'yang berubah hanya',\n", + " 'tak lagi kumilikmu',\n", + " 'kau masih bisa melihatku',\n", + " 'kau harus percaya',\n", + " 'kutetap teman baikmu',\n", + " 'english',\n", + " 'each of us is inclined',\n", + " 'to different cardinal directions',\n", + " 'you are expecting night to come',\n", + " 'while i am waiting for dawn',\n", + " 'we have tried every ways',\n", + " 'for us to stay together',\n", + " 'what is left from this story is',\n", + " 'your apprehensiveness of me disappearing',\n", + " \"whatever the disputation, is leading to the word 'separation'\",\n", + " \"don't force your hold\",\n", + " 'let me go first',\n", + " 'what will change is only',\n", + " \"that i'm not yours anymore\",\n", + " 'you still can see me',\n", + " 'you must believe',\n", + " \"i'm still your good friend\",\n", + " 'we have tried every ways',\n", + " 'for us to stay together',\n", + " 'what is left from this story is',\n", + " 'your apprehensiveness of me disappearing',\n", + " \"whatever the disputation, is leading to the word 'separation'\",\n", + " \"don't force your hold\",\n", + " 'you must believe',\n", + " \"i'm still your good friend\",\n", + " 'let me go first',\n", + " 'what will change is only',\n", + " \"that i'm not yours anymore\",\n", + " 'you still can see me',\n", + " 'you must believe',\n", + " \"i'm still your good friend\",\n", + " 'ku tuliskan kenangan tentang',\n", + " 'caraku menemukan dirimu',\n", + " 'tentang apa yang membuatku mudah',\n", + " 'berikan hatiku padamu',\n", + " 'takkan habis sejuta lagu',\n", + " 'untuk menceritakan cantikmu',\n", + " \"'kan teramat panjang puisi\",\n", + " \"'tuk menyuratkan cinta ini\",\n", + " 'telah habis sudah cinta ini',\n", + " 'tak lagi tersisa untuk dunia',\n", + " 'karena telah ku habiskan',\n", + " 'sisa cintaku hanya untukmu',\n", + " 'aku pernah berpikir tentang',\n", + " 'hidupku tanpa ada dirimu',\n", + " 'dapatkah lebih indah dari',\n", + " 'yang ku jalani sampai kini',\n", + " 'aku selalu bermimpi tentang',\n", + " 'indah hari tua bersamamu',\n", + " 'tetap cantik rambut panjangmu',\n", + " 'meskipun nanti tak hitam lagi',\n", + " 'bila habis sudah waktu ini',\n", + " 'tak lagi berpijak pada dunia',\n", + " 'telah aku habiskan sisa hidupku',\n", + " 'hanya untukmu',\n", + " 'dan telah habis sudah cinta ini',\n", + " 'tak lagi tersisa untuk dunia',\n", + " 'karena telah ku habiskan sisa cintaku',\n", + " 'hanya untukmu',\n", + " 'untukmu',\n", + " 'hidup dan matiku..',\n", + " 'bila musim berganti',\n", + " 'sampai waktu terhenti',\n", + " 'walau dunia membenci',\n", + " 'ku kan tetap di sini',\n", + " 'bila habis sudah waktu ini',\n", + " 'tak lagi berpijak pada dunia',\n", + " 'telah aku habiskan sisa hidupku',\n", + " 'hanya untukmu',\n", + " 'telah habis sudah cinta ini',\n", + " 'tak lagi tersisa untuk dunia',\n", + " 'karena telah ku habiskan sisa cintaku',\n", + " 'hanya untukmu',\n", + " 'karena telah ku habiskan sisa cintaku',\n", + " 'hanya untukmu',\n", + " 'i wrote about memories',\n", + " 'on how i found you',\n", + " 'about what made it easy',\n", + " 'giving you my heart',\n", + " \"a million songs, won't be enough\",\n", + " 'to tell the story about your beauty',\n", + " 'this poem will extremely long',\n", + " 'to tell about this love',\n", + " 'this love runs out already',\n", + " 'no longer left for the world',\n", + " 'because i have spent the rest of my love',\n", + " 'only for you',\n", + " 'i ever thought about',\n", + " 'how my life would be without you',\n", + " 'could it be more beautiful',\n", + " 'then i had lived until now?',\n", + " 'i always dream about',\n", + " 'how fine the old days with you',\n", + " 'your long hair still remains beautiful',\n", + " \"although it won't stay black\",\n", + " 'if the time runs out already',\n", + " 'no longer rests to the world',\n", + " 'i have spent the rest of my life',\n", + " 'just for you',\n", + " 'if this love runs out already',\n", + " 'no longer left to the world',\n", + " 'because i have spent the rest of my love',\n", + " 'only for you',\n", + " 'for you...',\n", + " 'my life, and my death',\n", + " 'when the seasons changed',\n", + " 'until the time stops',\n", + " 'even though the world hates',\n", + " 'i will stay, right here',\n", + " 'when the time runs out already',\n", + " 'no longer rests on the world',\n", + " 'because i have spent the rest of my love',\n", + " 'only for you',\n", + " 'this love runs out already',\n", + " 'no longer left for the world',\n", + " 'because i have spent the rest of my love',\n", + " 'only for you',\n", + " 'because i have spent the rest of my love',\n", + " 'only for you',\n", + " 'kanji',\n", + " 'oh ready or not',\n", + " 'show の幕開け',\n", + " 'are you ready or not',\n", + " '乗り込んで行け レッドゾーン',\n", + " 'just go 曝け出せ本性',\n", + " 'ready or not',\n", + " 'yes or no じゃママゴト 俺ならpunkしてる',\n", + " 'keep going life は do or die',\n", + " '選んだ道なら 逃げず 信じて貫けよ',\n", + " 'it.s your choice yup',\n", + " '“今を超えるため 問いかけろ 過去の自分へ”',\n", + " '先駆者の言葉に感謝 uh',\n", + " 'are you ready or not',\n", + " '準備できたなら その拳掲げろ',\n", + " 'like mike tyson wow',\n", + " '恐れないで この手をとってよ (とってよ)',\n", + " '心配はいらないから just let it go (let it go)',\n", + " 'きっと世界中、誰も',\n", + " '完璧な人生じゃないから',\n", + " '今の君を信じて',\n", + " 'oh ready or not',\n", + " 'show の幕開け',\n", + " 'are you ready or not',\n", + " '乗り込んで行け レッドゾーン',\n", + " 'just go 曝け出せ本性',\n", + " 'ready or not',\n", + " 'impossible',\n", + " '不可能など 俺にはないな i.m possible',\n", + " 'marathon',\n", + " '片道切符 1秒後もすでに過去',\n", + " '人生というドラマ 主人公じゃなきゃ',\n", + " 'やりたいことをやって 毎日がbirthday',\n", + " '魂は絶えず燃え 輝き続けて朽ちないさ',\n", + " '恐れないで この手をとってよ (とってよ)',\n", + " '心配はいらないから just let it go (let it go)',\n", + " '答えなんて出ないよ',\n", + " '何度転んでも立ち上がれば',\n", + " 'いつか光が差して',\n", + " 'oh ready or not',\n", + " 'show の幕開け',\n", + " 'are you ready or not',\n", + " '乗り込んで行け レッドゾーン',\n", + " 'just go 曝け出せ本性',\n", + " 'ready or not',\n", + " '未来は誰もわからない winding road',\n", + " '本能を信じて進むのさ',\n", + " '振り返るにはまだ少し早すぎるから',\n", + " 'oh you don’t need to worry',\n", + " 'oh ready or not',\n", + " 'show の幕開け',\n", + " 'are you ready or not',\n", + " '乗り込んで行け レッドゾーン',\n", + " 'just go 曝け出せ本性',\n", + " 'ready or not',\n", + " 'romaji',\n", + " 'oh ready or not',\n", + " 'show no makuake',\n", + " 'are you ready or not',\n", + " 'norikon de ike reddo zōn',\n", + " 'just go taku ke dase honshō',\n", + " 'ready or not',\n", + " 'yes or no ja mamagoto ore nara punk shiteru',\n", + " 'keep going life wa do or die',\n", + " 'eran da michi nara nige zu shinji te tsuranukeyo',\n", + " 'it . s your choice yup',\n", + " '“ima o koeru tame toikakero kako no jibun e”',\n", + " 'senku sha no kotoba ni kansha uh',\n", + " 'are you ready or not',\n", + " 'junbi deki ta nara sono kobushi kakagero',\n", + " 'like mike tyson wow',\n", + " 'osore nai de kono te o totte yo (totte yo)',\n", + " 'shinpai wa ira nai kara just let it go (let it go)',\n", + " 'kitto sekaijū, dare mo',\n", + " 'kanpeki na jinsei ja nai kara',\n", + " 'ima no kimi o shinji te',\n", + " 'oh ready or not',\n", + " 'show no makuake',\n", + " 'are you ready or not',\n", + " 'norikon de ike reddo zōn',\n", + " 'just go taku ke dase honshō',\n", + " 'ready or not',\n", + " 'impossible',\n", + " 'fukanō nado ore ni wa nai na i . m possible',\n", + " 'marathon',\n", + " 'katamichi kippu 1 byō go mo sudeni kako',\n", + " 'jinsei toyuu dorama shujinkō ja nakya',\n", + " 'yari tai koto o yatte mainichi ga birthday',\n", + " 'tamashī wa taezu moe kagayakitsuzuke te kuchi nai sa',\n", + " 'osore nai de kono te o totte yo (totte yo)',\n", + " 'shinpai wa ira nai kara just let it go ( let it go)',\n", + " 'kotae nante de nai yo',\n", + " 'nan do koron de mo tachiagare ba',\n", + " 'itsuka hikari ga sashi te',\n", + " 'oh ready or not',\n", + " 'show no makuake',\n", + " 'are you ready or not',\n", + " 'norikon de ike reddo zōn',\n", + " 'just go taku ke dase honshō',\n", + " 'ready or not',\n", + " 'mirai wa dare mo wakara nai winding road',\n", + " 'honnō o shinji te susumu no sa',\n", + " 'furikaeru ni wa mada sukoshi haya sugiru kara',\n", + " 'oh you don ‘ t need to worry',\n", + " 'oh ready or not',\n", + " 'show no makuake',\n", + " 'are you ready or not',\n", + " 'norikon de ike reddo zōn',\n", + " 'just go taku ke dase honshō',\n", + " 'ready or not',\n", + " '20th century ato chotto de',\n", + " 'hi ga kureru hyakunenkan no nagakatta',\n", + " 'sono chotto dake saigo no yonen de',\n", + " ...]},\n", + " 'data': ['oh, yep',\n", + " 'j-flow right here',\n", + " 'vidi, drop the voice, come on',\n", + " 'oh, tiada yang hebat dan mempesona',\n", + " 'ketika kau lewat di hadapanku',\n", + " 'biasa saja',\n", + " 'waktu perkenalan lewatlah sudah',\n", + " 'ada yang menarik pancaran diri',\n", + " 'terus mengganggu',\n", + " 'mendengar cerita sehari-hari',\n", + " 'yang wajar tapi tetap mengasyikkan',\n", + " 'kini terasa sungguh',\n", + " 'semakin engkau jauh',\n", + " 'semakin terasa dekat',\n", + " 'akan kukembangkan',\n", + " 'kasih yang kau tanam',\n", + " 'di dalam hatiku',\n", + " 'right here baby',\n", + " 'break it down, break it down',\n", + " 'vidi, come on, oh',\n", + " 'oh, tiada kejutan pesona diri',\n", + " 'pertama kujabat jemari tanganmu',\n", + " 'biasa saja',\n", + " 'masa pertalian terjalin sudah',\n", + " 'ada yang menarik bayang-bayangmu',\n", + " 'tak mau pergi',\n", + " 'dirimu nuansa-nuansa ilham',\n", + " 'hamparan laut tiada bertepi',\n", + " 'kini terasa sungguh',\n", + " 'semakin engkau jauh',\n", + " 'semakin terasa dekat',\n", + " 'akan kukembangkan',\n", + " 'kasih yang kau tanam',\n", + " 'di dalam hatiku',\n", + " 'ah, ah, you know, the further that you go',\n", + " 'the close that it feels',\n", + " 'the feeling that you show, is that how heaven feels',\n", + " 'seconds gone by, minute after minute',\n", + " 'i was too shy, my words',\n", + " 'words have been deleted',\n", + " 'ku terdiam dan hanya bisa bla bla bla',\n", + " 'like a shooting star, i',\n", + " 'make a wish like la la la',\n", + " 'my pressure is gone',\n", + " 'my treasure is found',\n", + " 'my baby girl you really',\n", + " 'make my world can go around',\n", + " 'menatap nuansa, (aha) nuansa bening',\n", + " 'break it down v',\n", + " 'jelasnya doa bercinta',\n", + " 'sing for the ladies come on',\n", + " 'kini terasa sungguh',\n", + " 'semakin engkau jauh',\n", + " 'semakin terasa dekat',\n", + " 'just the far as we go, just the closer that we feel',\n", + " 'akan kukembangkan',\n", + " 'kasih yang kau tanam',\n", + " 'right here in my heart, right here in my mind',\n", + " 'di dalam hatiku',\n", + " 'kini terasa sungguh',\n", + " 'semakin engkau jauh',\n", + " 'semakin terasa dekat',\n", + " 'akan kukembangkan',\n", + " 'kasih yang kau tanam',\n", + " 'di dalam hatiku',\n", + " 'right here, baby',\n", + " 'right here, baby',\n", + " 'vidi come, on',\n", + " 'kini terasa sungguh',\n", + " 'come on boy',\n", + " 'break it down, break it down',\n", + " 'come on',\n", + " 'kini terasa sungguh',\n", + " 'j-flow right here',\n", + " 'desperate girl',\n", + " 'kanashimi iro no sora derision madoromu glass mado wa twilight',\n", + " 'furishikiru ame no naka overnight',\n", + " 'kurushi magire ni sakebu silent boyaketa shikai dake ga pleasure',\n", + " 'koe wo age nakijakuru oh mad girl',\n", + " 'kurui dashita shisen chi wo nagasu hitomi no misery',\n", + " 'yumemite ina yo itsumo dead time kono te wo nigirishime without',\n", + " 'you',\n", + " 'kono mama jafutaritomo crumble down',\n", + " 'musaboru karada yoru wo make up kake hiki darake konna love game',\n", + " 'itsu no aida ni kawari hate oh mad girl',\n", + " 'kurui dashita shisen chi wo nagasu hitomi wa misery',\n", + " 'midare sugita kioku doko kara ka tsumahajiku melody',\n", + " 'only lonely my girl mitsumete ageru',\n", + " 'itsuwaru sono mune kiekaketara',\n", + " 'only lonely my girl nemure nu yoru wa',\n", + " 'suteki wo matoi moeagareyo',\n", + " 'kurui dashita shisen chi wo nagasu hitomi wa misery',\n", + " 'midare sugita kioku doko kara ka tsumahajiku melody',\n", + " 'only lonely my girl mitsumete ageru',\n", + " 'itsuwaru sono mune kiekaketara',\n", + " 'only lonely my girl nemure nu yoru wa',\n", + " 'suteki wo matoi moeagareyo',\n", + " 'only lonely my girl mitsumete ageru',\n", + " 'itsuwaru sono mune kiekaketara',\n", + " 'only lonely my girl nemure nu yoru wa',\n", + " \"suteki wo matoi i'm just loving you\",\n", + " 'der yek goshe in donya ma oftadim mesle do barg',\n", + " 'der ye jangale bozorg va bivafa',\n", + " 'faghad man o to, faghad mah faghad, man o to, faghad mah dotah',\n", + " 'sheshmata vaz kon, (manaaa) mana negah kon',\n", + " 'sheshmata vaz kon, mano negah kon',\n", + " 'ghalbe manam mesle khodet gom shodeh',\n", + " 'na injast o na onja keh bozorg shodeh',\n", + " 'bego be man be man bego, koja beram',\n", + " 'bego be man kojast, khoneje man',\n", + " 'bego be man be man bego, koja beram',\n", + " 'bego be man kojast khoneje man',\n", + " 'shajad poshteh setahreha ghajem shode',\n", + " 'na injast o na onja ke bozorg shodeh',\n", + " 'na injast o na onja keh bozorg shodeh',\n", + " 'sheshmata vaz kon, (manaaa) mana negah kon',\n", + " 'sheshmata vaz kon, mano negah kon',\n", + " 'kojast khoneje man, haminjahst vakhti pishe to hast',\n", + " 'kusadari apa maumu',\n", + " 'saat kau memujaku',\n", + " 'cobaiku saja tapi diriku tak bodoh',\n", + " 'godai hatiku, ku takkan melihatmu',\n", + " 'diamkan diriku, ku kan lari mengejarmu',\n", + " 'ooh.. ooh.. irama dan musikku',\n", + " 'ooh.. ooh.. mulai merasukmu',\n", + " 'ooh.. ooh.. tak perlu kamu gundah',\n", + " 'ooh.. ooh.. siap! jangan lengah',\n", + " 'shake it off, shake it off',\n", + " 'buat iramaku',\n", + " 'shake it off, shake it off',\n", + " 'jadi ekstasimu',\n", + " 'shake it off, shake it off',\n", + " 'ikuti aku',\n", + " 'shake it off, shake it off',\n", + " 'everyone now shake it off',\n", + " 'shake it off, shake it off',\n", + " 'shake it off, shake it off',\n", + " 'shake it off, shake it off',\n", + " 'shake',\n", + " 'i see your sexy body want me to the floor and let it go',\n", + " \"your lips don't say a word but your eyes saying let it flow, ow ow\",\n", + " 'naughty that i will be, seize your mind and let it blow',\n", + " \"you can't handle it cause now\",\n", + " \"i'm in my tight jean's pretty low, ow ow\",\n", + " 'ooh.. ooh.. i want you on the front row',\n", + " \"ooh.. ooh.. cuz i'm about to show\",\n", + " \"ooh.. ooh.. boy you behave and don't\",\n", + " 'ooh.. ooh.. shut up! my turn to move',\n", + " 'shake it off, shake it off',\n", + " 'i wanna dance with you',\n", + " 'shake it off, shake it off',\n", + " 'i wanna fly with you',\n", + " 'shake it off, shake it off',\n", + " 'wanna move with you',\n", + " 'shake it off, shake it off',\n", + " 'everyone now shake it off',\n", + " 'shake it off, shake it off',\n", + " 'shake it off, shake it off',\n", + " 'shake it off, shake it off',\n", + " 'shake',\n", + " 'shake it off, shake it off',\n", + " 'shake it off, shake it off',\n", + " 'shake it off, shake it off',\n", + " 'shake',\n", + " 'shake, shake, shake it off, shake',\n", + " 'shake, shake, shake it off, shake',\n", + " 'shake, shake, shake it off, shake',\n", + " 'shake, shake, shake it off, shake',\n", + " '(sexy body want me to the floor and let it go)',\n", + " \"(your lips don't say a word, saying let it flow)\",\n", + " 'shake it off, shake it off',\n", + " 'buat iramaku',\n", + " 'shake it off, shake it off',\n", + " 'jadi ekstasimu',\n", + " 'shake it off, shake it off',\n", + " 'ikuti aku',\n", + " 'shake it off, shake it off',\n", + " 'everyone now shake it off',\n", + " 'shake it off, shake it off',\n", + " 'i wanna dance with you',\n", + " 'shake it off, shake it off',\n", + " 'i wanna fly with you',\n", + " 'shake it off, shake it off',\n", + " 'wanna move with you',\n", + " 'shake it off, shake it off',\n", + " 'everyone now shake it off',\n", + " 'shake it off, shake it off',\n", + " 'buat iramaku',\n", + " 'shake it off, shake it off',\n", + " 'jadi ekstasimu',\n", + " 'shake it off, shake it off',\n", + " 'ikuti aku',\n", + " 'shake it off, shake it off',\n", + " 'everyone now shake it off',\n", + " '(sexy body want me to the floor and let it go)',\n", + " 'i wanna dance with you',\n", + " \"(your lips don't say a word, saying let it flow)\",\n", + " 'i wanna fly with you',\n", + " '(sexy body want me to the floor and let it go)',\n", + " 'wanna move with you',\n", + " \"(your lips don't say a word, saying let it flow)\",\n", + " 'everyone now shake it off',\n", + " '(sexy body want me to the floor and let it go)',\n", + " 'i wanna dance with you',\n", + " \"(your lips don't say a word, saying let it flow)\",\n", + " 'i wanna fly with you',\n", + " '(sexy body want me to the floor and let it go)',\n", + " 'wanna move with you',\n", + " \"(your lips don't say a word, saying let it flow)\",\n", + " 'raise your flag , the only one',\n", + " \"don't look back! you don't let me down\",\n", + " 'rushing out to rising sun',\n", + " 'nothing but the heart or crown',\n", + " 'raise your flag , the only one',\n", + " \"don't look back! you don't let me down\",\n", + " 'rushing out to rising sun',\n", + " 'nothing but the heart or crown',\n", + " 'itsuka no one two step odotte i ta',\n", + " 'on & on de yurashi te',\n", + " 'two-five-one de narashi te',\n", + " \"dondon tōku hirogatte you're the one\",\n", + " '(raise your flag , the only one',\n", + " \"don't look back! you don't let me down\",\n", + " 'rushing out to rising sun',\n", + " 'nothing but the heart or crown)',\n", + " 'kimi wa itsu datte koe o karashi te',\n", + " 'waratte nai te utatte',\n", + " 'one by one de kizan de',\n", + " 'yūkan de i tai to negau',\n", + " 'sōzō ijō ni igan da sekai datta toshite',\n", + " 'starting over mukō e',\n", + " 'kakage ta te o orosa nai de',\n", + " 'namida wa shimatte oi te',\n", + " 'takaraka ni koe age te ii yo',\n", + " 'kimi dake no hata furikazashi te',\n", + " 'ashita o osore nai de',\n", + " 'kawara nai ashidori o you keep on',\n", + " 'utae... (raise your flag , the only one)',\n", + " \"susume... (don't look back! you don't let me down)\",\n", + " 'todoke... (rushing out to rising sun)',\n", + " \"you're the one (nothing but the heart or crown)\",\n", + " '(raise your flag , the only one',\n", + " \"don't look back! you don't let me down)\",\n", + " 'kimi wa itsu datte mune o kogashi te',\n", + " 'amaku te chotto nigaku te',\n", + " 'kyōshitsu no soto ni mukatte',\n", + " 'dondon sore wa fukuran de',\n", + " 'dare ka ga kime ta kimi no “kimi rashi sa” nante',\n", + " 'turning over sugao de',\n", + " 'ao sa wa mugen no one way e',\n", + " 'tenohira sora ni oi te',\n", + " 'akogare wa koe ni shi te ii yo',\n", + " 'asahi no mukō no one day e',\n", + " 'sukoshi dake senobi shi te',\n", + " 'kimi dake ni hanataba o you beam on',\n", + " 'warae... (raise your flag , the only one)',\n", + " \"hazume... (don't look back! you don't let me down)\",\n", + " 'odore... (rushing out to rising sun)',\n", + " \"you're the one (nothing but the heart or crown)\",\n", + " 'furidashi kara fumidasu ichi ho wa',\n", + " 'mae yori mo zutto tsuyoi kara',\n", + " 'kakage ta te o orosa nai de',\n", + " 'namida mo sarakedashi te',\n", + " 'takaraka ni koe age te ii yo',\n", + " 'kanae tai yume shitsu kusa nai de',\n", + " 'kagayakeru sono hi made',\n", + " 'kawara nai ashidori o you keep on',\n", + " 'utae... (raise your flag , the only one)',\n", + " \"susume... (don't look back! you don't let me down)\",\n", + " 'todoke... (rushing out to rising sun)',\n", + " \"you're the one (nothing but the heart or crown)\",\n", + " '(raise your flag , the only one',\n", + " \"don't look back! you don't let me down\",\n", + " 'rushing out to rising sun',\n", + " 'nothing but the heart or crown)',\n", + " 'dekkyanshi dera ritchere cherira',\n", + " 'boreborebore we keraponi',\n", + " 'chorape chorapenape yutcho morabinyu',\n", + " 'megeparapi gera weriweriweriweri bora',\n", + " 'megeparacho gera merimerimerimeri nyu',\n", + " 'chore chorekkira pakerati deritchon nyurumeru',\n", + " 'rikkyorakkyore wiriwiri nyu',\n", + " 'nyuru me me meremerenyu',\n", + " 'dekkyanshi dera ritchere cherira',\n", + " 'boreborebore we keraponi',\n", + " 'chorape chorapenape yutcho morabinyu',\n", + " 'dekkyanshi dere ritchere cherira',\n", + " 'geregeregere meranyuru',\n", + " 'chorape chorape yoritche nyurumeri',\n", + " 'megeparapi gera weriweriweriweri bora',\n", + " 'megeparacho gera merimerimerimeri nyu',\n", + " 'chore chorekkira pakerati deritchon nyurumeru',\n", + " 'rikkyorakkyore wiriwiri nyu',\n", + " 'nyuru me me meremerenyu',\n", + " 'dekkyanshi dera ritchere cherira',\n", + " 'boreborebore we keraponi',\n", + " 'chorape chorapenape yutcho morabinyu',\n", + " 'dekkyanshi dere ritchere cherira',\n", + " 'geregeregere meranyuru',\n", + " 'chorape chorape yoritche nyurumeri',\n", + " 'megeparapi gera weriweriweriweri bora',\n", + " 'megeparacho gera merimerimerimeri nyu',\n", + " 'chore chorekkira pakerati deritchon nyurumeru',\n", + " 'rikkyorakkyore wiriwiri nyu',\n", + " 'nyuru me me meremerenyu',\n", + " 'dekkyanshi dera ritchere cherira',\n", + " 'boreborebore we keraponi',\n", + " 'chorape chorapenape yutcho morabinyu',\n", + " 'dekkyanshi dere ritchere cherira',\n", + " 'geregeregere meranyuru',\n", + " 'chorape chorape yoritche nyurumeri',\n", + " 'megeparapi gera weriweriweriweri bora',\n", + " 'megeparacho gera merimerimerimeri nyu',\n", + " 'chore chorekkira pakerati deritchon nyurumeru',\n", + " 'rikkyorakkyore wiriwiri nyu',\n", + " 'nyuru me me meremerenyu',\n", + " 'dekkyanshi dera ritchere cherira',\n", + " 'boreborebore we keraponi',\n", + " 'chorape chorapenape yutcho morabinyu',\n", + " 'dekkyanshi dere ritchere cherira',\n", + " 'geregeregere meranyuru',\n", + " 'chorape chorape yoritche nyurumeri',\n", + " 'indonesian original',\n", + " 'setidaknya punya tujuh puluh tahun',\n", + " 'tak bisa melompat kumahir berenang',\n", + " 'bahagia melihat kawanan betina',\n", + " 'berkumpul bersama sampai ajal',\n", + " 'besar dan berani berperang sendiri',\n", + " 'yang aku hindari hanya semut kecil',\n", + " 'otak ini cerdas kurakit berangka',\n", + " 'wajahmu tak akan pernah aku lupa',\n", + " 'waktu kecil dulu mereka menertawakan',\n", + " 'mereka panggilku gajah',\n", + " '(ku marah) ku marah',\n", + " 'kini baru ku tahu puji di dalam olokan',\n", + " '(mereka ingat ku marah)',\n", + " 'jabat tanganku panggil aku gajah',\n", + " 'kau temanku kau doakan aku',\n", + " 'punya otak cerdas aku harus tangguh',\n", + " 'bila jatuh gajah lain membantu',\n", + " 'tubuhmu di situasi rela jadi tamengku',\n", + " 'kecil kita tak tahu apa-apa',\n", + " 'wajar bila terlalu cepat marah',\n", + " 'kecil kita tak tahu apa-apa',\n", + " 'yang terburuk kelak bisa jadi yang terbaik',\n", + " 'yang terburuk kelak bisa jadi yang terbaik',\n", + " 'kau temanku kau doakan aku',\n", + " 'punya otak cerdas aku harus tangguh',\n", + " 'bila jatuh gajah lain membantu',\n", + " 'tubuhmu di situasi rela jadi tamengku',\n", + " 'kau temanku kau doakan aku',\n", + " 'punya otak cerdas aku harus tangguh',\n", + " 'bila jatuh gajah lain membantu',\n", + " 'tubuhmu disituasi rela jadi tamengku',\n", + " 'english translation',\n", + " 'at least i have 70 years',\n", + " \"although i can't jump, i can swim\",\n", + " \"i'm happy to flirt with female herds\",\n", + " 'we will be together until we die',\n", + " \"big and brave, i'm fighting my war alone\",\n", + " \"what i'm afraid of is just small ants\",\n", + " 'my brain is clever, i assemble and count',\n", + " 'your face, i will never forget it',\n", + " 'when i was young, they laugh at me',\n", + " 'they called me an elephant',\n", + " '(i was angry) i was angry',\n", + " 'now i know there is compliments beneath mockeries',\n", + " '(they remember i was angry)',\n", + " 'shake my hand, call me an elephant',\n", + " 'you are my friend, you pray for me',\n", + " 'i have a smart brain, i have to be tough',\n", + " 'if i fall, other elephants will help me',\n", + " 'you will use your body as my shield during dangers',\n", + " \"when we were young we don't know anything\",\n", + " \"it's normal to be angry\",\n", + " \"when we were young we don't know anything\",\n", + " 'the worst can soon be the best',\n", + " 'the worst can soon be the best',\n", + " 'you are my friend, you pray for me',\n", + " 'i have a smart brain, i have to be tough',\n", + " 'if i fall, other elephants will help me',\n", + " 'you will use your body as my shield during dangers',\n", + " 'you are my friend, you pray for me',\n", + " 'i have a smart brain, i have to be tough',\n", + " 'if i fall, other elephants will help me',\n", + " 'you will use your body as my shield during dangers',\n", + " 'kutahu kau sudah ada yang punya',\n", + " 'tapi ku takkan pedulikan itu',\n", + " 'ku yakin kau rasakan hal yang sama',\n", + " 'terlihat dari caramu menatap aku',\n", + " 'and i’ll fly away to be with you',\n", + " 'saat kau putus tinggalkan dirinya',\n", + " 'i’ll fly away to be with you',\n", + " 'detak jantungku secepat peluru',\n", + " 'saat kau tersenyum kepadaku',\n", + " 'sudah tinggalkan saja pacarmu',\n", + " 'karna kutahu kau suka aku',\n", + " 'and i’ll fly away to be with you',\n", + " 'saat kau putus tinggalkan dirinya',\n", + " 'i’ll fly away to be with you',\n", + " 'and i’ll fly away to be with you',\n", + " 'saat kau putus tinggalkan dirinya',\n", + " 'i’ll fly away to be with you',\n", + " 'and i’ll fly away to be with you',\n", + " 'and i’ll wait for you to be with me',\n", + " 'and i’ll fly away to be with you',\n", + " 'and i’ll wait for you to be with me',\n", + " 'and i’ll fly away to be with you',\n", + " 'saat kau putus tinggalkan dirinya',\n", + " 'i’ll fly away to be with you',\n", + " 'i’ll fly away to be with you',\n", + " 'i’ll fly away to be with you',\n", + " 'chorus:',\n", + " 'shibaraku no aida',\n", + " 'mata hanarebanare',\n", + " 'moh sukoshi shitara',\n", + " 'say goodbye',\n", + " 'nanbyakunen no toki wo koe',\n", + " 'enkyori renai',\n", + " 'jikanyo',\n", + " 'tomareyo itsumademo',\n", + " 'refrain:',\n", + " 'heart to heart',\n", + " 'in the middle of nowhere',\n", + " 'times apart',\n", + " 'yume no sekai',\n", + " 'gone so far',\n", + " \"and i`m tryn' to go there\",\n", + " 'where the stars',\n", + " 'will always shine',\n", + " 'heart to heart',\n", + " 'in a dream that`s forever',\n", + " 'times apart',\n", + " 'hoshi no sekai',\n", + " 'in the dark',\n", + " 'i will love you forever',\n", + " 'heart to heart',\n", + " 'as tears go by',\n", + " 'heart to heart',\n", + " 'heart to heart',\n", + " 'chorus:',\n", + " 'kagayaku tsukiyo',\n", + " 'hoshizorano time mashine',\n", + " 'genjitsu ni mezame',\n", + " 'hikimodosareru',\n", + " 'tooi kamakura jidai kara',\n", + " 'syunkanidoh',\n", + " 'owakare',\n", + " 'kondo aeru hi made',\n", + " 'refrain:',\n", + " 'heart to heart',\n", + " 'in the middle of nowhere',\n", + " 'times apart',\n", + " 'yume no sekai',\n", + " 'gone so far',\n", + " \"and i`m tryn' to go there\",\n", + " 'where the stars',\n", + " 'will always shine',\n", + " 'heart to heart',\n", + " 'in a dream that`s forever',\n", + " 'times apart',\n", + " 'hoshi no sekai',\n", + " 'in the dark',\n", + " 'i will love you forever',\n", + " 'heart to heart',\n", + " 'as tears go by',\n", + " 'kondo aeru hi made',\n", + " 'refrain:',\n", + " 'heart to heart',\n", + " 'in the middle of nowhere',\n", + " 'times apart',\n", + " 'yume no sekai',\n", + " 'gone so far',\n", + " \"and i`m tryn' to go there\",\n", + " 'where the stars',\n", + " 'will always shine',\n", + " 'heart to heart',\n", + " 'in a dream that`s forever',\n", + " 'times apart',\n", + " 'hoshi no sekai',\n", + " 'in the dark',\n", + " 'i will love you forever',\n", + " 'heart to heart',\n", + " 'as tears go by',\n", + " 'heart to heart',\n", + " 'ku ingin cinta hadir untuk selamanya',\n", + " 'bukan hanya lah untuk sementara',\n", + " 'menyapa dan hilang',\n", + " 'terbit tenggelam bagai pelangi',\n", + " 'yang indahnya hanya sesaat',\n", + " 'tuk ku lihat dia mewarnai hari',\n", + " 'tetaplah engkau disini',\n", + " 'jangan datang lalu kau pergi',\n", + " 'jangan anggap hatiku',\n", + " 'jadi tempat persinggahanmu',\n", + " 'untuk cinta sesaat',\n", + " 'mengapa ku tak bisa jadi',\n", + " 'cinta yang tak akan pernah terganti',\n", + " '(ku hanya menjadi) cinta yang tak akan terjadi',\n", + " 'lalu mengapa kau masih disini',\n", + " 'memperpanjang harapan',\n", + " 'tetaplah engkau disini',\n", + " 'jangan datang lalu kau pergi',\n", + " 'jangan anggap hatiku',\n", + " 'jadi tempat persinggahanmu',\n", + " 'untuk cinta sesaat',\n", + " 'kau bagai kata yang terus melaju',\n", + " 'di luasnya ombak samudera biru',\n", + " 'namun sayangnya kau tak pilih aku',\n", + " 'jadi pelabuhanmu',\n", + " 'tetaplah engkau disini',\n", + " 'jangan datang lalu kau pergi',\n", + " 'jangan anggap hatiku',\n", + " 'jadi tempat persinggahanmu',\n", + " 'bila tak ingin disini',\n", + " 'jangan berlalu lalang lagi',\n", + " 'biarkanlah hatiku',\n", + " 'mencari cinta sejati',\n", + " 'wahai cintaku',\n", + " 'wahai cinta sesaat',\n", + " 'english',\n", + " 'i would like for love to exist forever',\n", + " 'not only for a moment',\n", + " 'to greet me and then leave',\n", + " 'to rise and set like the sun',\n", + " 'which beauty is ephemeral',\n", + " 'only for me to see it brighten the day',\n", + " 'please stay here',\n", + " \"don't just come and then leave\",\n", + " \"don't assume my heart\",\n", + " 'is a place for your stopover',\n", + " \"why can't i be\",\n", + " 'a love that is irreplaceable',\n", + " '(i only am) a love that would never occur',\n", + " 'then why are you still here?',\n", + " 'elevating my hopes up?',\n", + " 'please stay here',\n", + " \"don't just come and then leave\",\n", + " \"don't assume my heart\",\n", + " 'is a place for your stopover',\n", + " 'you are like the word that keeps going',\n", + " 'in the vast blue ocean',\n", + " \"but unfortunately you don't pick me\",\n", + " 'to be your harbor',\n", + " 'please stay here',\n", + " \"don't just come and then leave\",\n", + " \"don't assume my heart\",\n", + " 'is a place for your stopover',\n", + " \"if you don't want to be here\",\n", + " \"don't roam here again\",\n", + " 'please let my heart',\n", + " 'search for true love',\n", + " 'oh my love',\n", + " 'oh ephemeral love',\n", + " 'you! soro soro teki fuyashite',\n", + " 'kyōgōsha no teki fuyashite',\n", + " 'mō soro soro teki fuyashite',\n", + " 'sore ni makenai jibun wo tsukure',\n", + " 'hiyowa na shisutemu kudaite yaru no sa isoge break it down',\n", + " 'break a system',\n", + " 'sonna hanashi wa nomi komenai ze',\n", + " 'manyuaru goshi ni nani ga mieru?',\n", + " 'noruma konashite mita sekai wa',\n", + " 'ashiato darakedo owatteita',\n", + " 'omaera no shisutemu kudake ochiru dake sa jiki ni break it down',\n", + " 'break a system',\n", + " 'break out',\n", + " 'go! mad! outsider!',\n", + " 'go! mad! outsider!',\n", + " 'go! mad! outsider!',\n", + " 'i’m the outsider!',\n", + " '------------------------------------------',\n", + " 'you! slowly get more enemies',\n", + " 'get more powerful enemies',\n", + " 'gradually get more enemies',\n", + " \"then create a self that won't lose to them\",\n", + " 'break down the weak system, hurry up, break it down',\n", + " 'b-r-e-a-k a s-y-s-t-e-m',\n", + " \"i won't swallow that kind of story\",\n", + " 'what can you see beyond the manual?',\n", + " \"after doing your share the world you'll\",\n", + " 'see has ended full of footprints',\n", + " 'just break down your system, immediately break it down',\n", + " 'b-r-e-a-k a s-y-s-t-e-m',\n", + " 'break out',\n", + " 'go! mad! outsider!',\n", + " 'go! mad! outsider!',\n", + " 'go! mad! outsider!',\n", + " \"i'm the outsider!\",\n", + " 'disampingmu',\n", + " 'temani dirimu',\n", + " 'demi cintanya, serahkan jiwaku',\n", + " 'meski tiada banyak waktu',\n", + " 'tersisa untuk cinta',\n", + " 'tetap aku...',\n", + " 'love you, baby i do',\n", + " 'i never find someone like you',\n", + " 'love you yess i still do*',\n", + " 'better or worst i will be there',\n", + " \"yes i'll be there for you\",\n", + " 'tak perlu kau ragu',\n", + " 'kumelupakanmu',\n", + " 'meski tiada banyak waktu tersisa untuk cinta',\n", + " 'tetap aku',\n", + " 'love you, baby i do',\n", + " 'i never find someone like you',\n", + " 'love you yes i still do*',\n", + " 'better or worst i will be there',\n", + " \"yes i'll be there for you\",\n", + " 'disiniku ku memelukmu',\n", + " 'hingga tiba akhir masa',\n", + " 'menjemputmu',\n", + " 'i love you, baby i do',\n", + " 'i never find someone like you',\n", + " 'love you yes i still do*',\n", + " 'better or worst i will be there',\n", + " \"yes i'll be there for you\",\n", + " 'oboete iru kana?',\n", + " 'oh babe deatta koro wa',\n", + " 'mitsumeau dake de egao koboreteta',\n", + " 'bokura wa \"nagatsudzuki shinai yo\" nante',\n", + " 'hito ni iwareta yo ne...',\n", + " 'sukunai kotoba ni',\n", + " 'gokai tokenu mama',\n", + " 'toozakaru futari',\n", + " 'hitomi ni miete kuru ki ga shite',\n", + " 'bokura wa masaka... sonna fuu ni tanin no',\n", + " 'sasayaki ni madowasarenai yo ne?...',\n", + " \"you're still my only one\",\n", + " 'mou ichido sagashite yo',\n", + " 'futari de egaita yume wo',\n", + " \"is it too much i'm asking for?\",\n", + " 'oh ima demo daiji na mono wa',\n", + " \"mada kiete'nai kara\",\n", + " \"don't let go\",\n", + " 'futari no kokoro wo',\n", + " 'tsunagitomeru mono',\n", + " 'ima mata the two of us',\n", + " 'omoidashite miyou yo',\n", + " 'bokura wa toomawari wo shita keredo',\n", + " 'tashikameatte ikeba ii deshou',\n", + " \"you're still my only one\",\n", + " 'mou ichido modoshite yo',\n", + " 'futari dake no jikan wo',\n", + " \"is it too much i'm asking for?\",\n", + " 'oh ima demo taisetsu na mono',\n", + " \"iroasete'nai kara\",\n", + " \"don't let go\",\n", + " 'oh baby no...',\n", + " 'koukai dake wa shitaku wa nai kara',\n", + " 'sono mama motto soba ni ite',\n", + " 'kono fukai omoi wakatte hoshii',\n", + " 'hayaku kokoro no tobira wo akete mite yo',\n", + " \"baby can't you see\",\n", + " \"you're still my only one\",\n", + " 'mou ichido sagashite yo',\n", + " 'futari de egaita yume wo',\n", + " \"is it too much i'm asking for?\",\n", + " 'oh ima demo daiji na mono wa',\n", + " \"mada kiete'nai kara\",\n", + " \"don't let go\",\n", + " \"you're still my only one\",\n", + " 'mou ichido modoshite yo',\n", + " 'futari dake no jikan wo',\n", + " \"is it too much i'm asking for?\",\n", + " 'oh ima demo always know i feel for you',\n", + " \"iroasete'nai kara\",\n", + " \"don't let go\",\n", + " \"no i don't ever wanna lose my baby\",\n", + " \"don't let go... oh...\",\n", + " \"don't let go...\",\n", + " 'ku hitung detik waktu',\n", + " 'memikirkanmu tiada habisnya',\n", + " 'kau di detak jantungku',\n", + " 'di setiap nafasku tiada gantinya',\n", + " \"kau s'galanya\",\n", + " 'yang bermakna',\n", + " 'i just wanna hold you',\n", + " 'i just wanna kiss you',\n", + " 'i just wanna love you all my life',\n", + " \"i normally wouldn't say this\",\n", + " \"but i just can't contain it\",\n", + " 'i want you here forever right here',\n", + " 'by my side',\n", + " 'all the fears you feel inside',\n", + " \"and all the tears you've cried\",\n", + " \"they're ending right here\",\n", + " \"i'll heal your hardened soul\",\n", + " \"i'll keep you oh so close\",\n", + " \"don't worry i'll never let you go\",\n", + " \"you're all i need\",\n", + " \"you're everything\",\n", + " 'i just wanna hold you',\n", + " 'i just wanna kiss you',\n", + " 'i just wanna love you all my life',\n", + " \"i normally wouldn't say this\",\n", + " \"but i just can't contain it\",\n", + " 'i want you here forever right here',\n", + " 'by my side',\n", + " 'siapa yang kan menyangka',\n", + " 'aku tergila-gila',\n", + " 'dengarlah sekali lagi',\n", + " 'i love you',\n", + " 'tiada yang lain lagi',\n", + " \"hatiku t'lah terkunci\",\n", + " 'cuma kamu',\n", + " 'i just wanna hold you',\n", + " 'i just wanna kiss you',\n", + " 'i just wanna love you all my life',\n", + " \"i normally wouldn't say this\",\n", + " \"but i just can't contain it\",\n", + " 'i want you here forever right here',\n", + " 'by my side']}}},\n", + " 'is': {'sentence': {'pop': {'meta': {'train_data': [\"05. tjet (doesn't mean anything):\",\n", + " 'ef þú reynir (if you try)',\n", + " 'að halda lífsins takti (to keep the rhythm of life)',\n", + " 'í sama sama horfinu (in the same same path)',\n", + " 'takti dag eftir nótt (rhythm day after night)',\n", + " 'ef þú reynir (if you try)',\n", + " 'að halda lífsins takti (to keep the rhythm of life)',\n", + " 'dag eftir dag eftir nótt eftir nótt (day after day after night after night)',\n", + " 'í sama horfinu (in the same path)',\n", + " 'teikna þríhyrninga abcd (drawing triangles abcd)',\n", + " 'teikna þríhyrninga abcd (drawing triangles acbd)',\n", + " 'teikna ferhyrninga abcd (drawing squares abcd)',\n", + " 'jafnarma trapísu (isosceles trapezium)',\n", + " 'og mér finnst (and i think)',\n", + " 'svo mikið af hlaupum (so much running)',\n", + " 'hann á jafnframt hlut í þér (he owns also a part of you)',\n", + " 'hann svífur (he glides)',\n", + " 'þú reynir (you try)',\n", + " 'að halda lífsins takti (to keep the rhythm of life)',\n", + " 'dag eftir dag nótt eftir nótt (day after day after night after night)',\n", + " 'í sama horfinu (in the same path)',\n", + " 'en hvað er hann að segja? (but what is he saying?)',\n", + " '(?)',\n", + " 'teikna þríhyrninga abcd (drawing triangles abcd)',\n", + " 'teikna ferhyrninga abcd (drawing squares abcd)',\n", + " 'teikna trapísu abcd (drawing trapezium abcd)',\n", + " 'jafnarma trapísu (isosceles trapezium)',\n", + " 'trúin á guðina, fylgjendur siðanna',\n", + " 'sannsemi sjálfs síns, hreinskilni og tryggð',\n", + " 'afrakstur vopnadauða, ei sigur né tap',\n", + " 'samkoma jafningja í blóði eða anda',\n", + " 'í ragnarökum berjast, uns enginn mun standa',\n", + " 'eftir dauða ávalt velkomnir í hátíðarhöld',\n", + " 'ei sól né máni, dagur né kvöld',\n", + " 'kristur svo kom og tók öll völd',\n", + " 'en ei hafa allir fallist á hans trú',\n", + " 'haldist sjálfum sér sannir, nú fram á 20stu öld',\n", + " 'þrjóskan við kristni dofnar en helst',\n", + " 'ei sjá þeir blekkinguna sem í henni felst',\n", + " 'trúin á guðina, varðveiting siðanna',\n", + " 'mun koma á ný, með krist farin fyrir bý',\n", + " 'aðalbjörn tryggvason',\n", + " 'mars 1997',\n", + " 'english:',\n", + " 'in blood and spirit',\n", + " 'the believe in the gods, followers of the old ways',\n", + " 'the truth of one self, honesty and loialty',\n", + " 'to die by a wepon, neither victory nor defeat',\n", + " 'the gathering of equials in blood or spirit',\n", + " 'in ragnarök will fight, untill no man stands',\n", + " 'after death always welcome in a celebration',\n", + " 'neither sun nor moon, day nor night',\n", + " 'christ then came and took over',\n", + " 'but not everyone has submittet to his belief',\n", + " 'stayed true to themselfs,now untill the 20th century',\n", + " 'the resistance against christianity fades but stayes',\n", + " 'blind are they to the illusion within it',\n", + " 'the believe in the gods, perservation of the culture',\n", + " 'will come again, with christianity thrown for the dogs',\n", + " 'aðalbjörn tryggvason',\n", + " 'mars 1997',\n", + " 'transilation by pálmason',\n", + " 'ek man jötna',\n", + " 'ár of borna',\n", + " 'þá er forðum mik',\n", + " 'fædda höfðu;',\n", + " 'níu man ek heima',\n", + " 'níu íviðjur',\n", + " 'mjötvið mæran',\n", + " 'fyr mold neðan',\n", + " 'ár var alda',\n", + " 'þar er ekki var',\n", + " 'var-a sandr né sær',\n", + " 'né svalar unnir;',\n", + " 'jörð fannsk æva',\n", + " 'né upphiminn',\n", + " 'gap var ginnunga',\n", + " 'en gras hvergi',\n", + " 'áðr burs synir',\n", + " 'bjöðum of yppðu',\n", + " 'þeir er miðgarð',\n", + " 'mæran skópu;',\n", + " 'sól skein sunnan',\n", + " 'á salar steina',\n", + " 'þá var grund gróin',\n", + " 'grænum lauki',\n", + " 'sól varp sunnan',\n", + " 'sinni mána',\n", + " 'hendi inni hægri',\n", + " 'um himinjöður;',\n", + " 'sól þat né vissi',\n", + " 'hvar hon sali átti',\n", + " 'máni þat né vissi',\n", + " 'hvat hann megins átti',\n", + " 'stjörnur þat né vissu',\n", + " 'hvar þær staði áttu',\n", + " 'þá gengu regin öll',\n", + " 'á rökstóla',\n", + " 'ginnheilög goð',\n", + " 'ok um þat gættusk;',\n", + " 'nótt ok niðjum',\n", + " 'nöfn of gáfu',\n", + " 'morgin hétu',\n", + " 'ok miðjan dag',\n", + " 'undorn ok aftan',\n", + " 'árum at telja',\n", + " 'hittusk æsir',\n", + " 'á iðavelli',\n", + " 'þeir er hörg ok hof',\n", + " 'hátimbruðu;',\n", + " 'afla lögðu',\n", + " 'auð smíðuðu',\n", + " 'tangir skópu',\n", + " 'ok tól gørðu',\n", + " 'ár var alda',\n", + " 'þar er ekki var',\n", + " 'var-a sandr né sær',\n", + " 'né svalar unnir;',\n", + " 'jörð fannsk æva',\n", + " 'né upphiminn',\n", + " 'gap var ginnunga',\n", + " 'en gras hvergi',\n", + " 'áðr burs synir',\n", + " 'bjöðum of yppðu',\n", + " 'þeir er miðgarð',\n", + " 'mæran skópu;',\n", + " 'sól skein sunnan',\n", + " 'á salar steina',\n", + " 'þá var grund gróin',\n", + " 'grænum lauki',\n", + " 'sól varp sunnan',\n", + " 'sinni mána',\n", + " 'hendi inni hægri',\n", + " 'um himinjöður;',\n", + " 'sól þat né vissi',\n", + " 'hvar hon sali átti',\n", + " 'máni þat né vissi',\n", + " 'hvat hann megins átti',\n", + " '(i \"fadingen\":)',\n", + " 'stjörnur þat né vissu',\n", + " 'hvar þær staði áttu',\n", + " 'i remember jötnar',\n", + " 'borned before time',\n", + " 'in primeal time',\n", + " 'they fostered me;',\n", + " 'nine worlds i remember',\n", + " 'nine jötunn -maidens (who dwells in the wood)',\n", + " 'before the measure-tree',\n", + " 'grew from the mold',\n", + " 'before time itself',\n", + " 'there was nothing',\n", + " 'no sand, nor sea',\n", + " 'nor cool waves;',\n", + " 'earth existed not at all',\n", + " 'nor the sky above',\n", + " 'just the gaping abyss',\n", + " 'but vegetation nowhere',\n", + " 'until borrs sons',\n", + " 'raised the lands',\n", + " 'they created midgard',\n", + " 'our praised world;',\n", + " 'the sun shone from the south',\n", + " 'onto their stone halls',\n", + " 'then the ground grew',\n", + " 'green with plants',\n", + " 'the sun hurled from the south',\n", + " 'with the moon',\n", + " 'her right hand landed',\n", + " 'over the sky horizon;',\n", + " 'the sun did not know',\n", + " 'where her hall was',\n", + " 'the moon did not know',\n", + " 'what his stenght was',\n", + " 'the stars did not know',\n", + " 'where their places was',\n", + " 'then all powers went',\n", + " 'to the judgment-chairs',\n", + " 'the most holy gods;',\n", + " 'and they declared that;',\n", + " 'night and hours',\n", + " 'should be given names',\n", + " 'morning also',\n", + " 'and midday',\n", + " 'afternoon and evening',\n", + " 'to tell time',\n", + " 'the æsir met',\n", + " 'at ithavoll',\n", + " 'they made sanctuaries and high',\n", + " 'temples;',\n", + " 'made forges',\n", + " 'precious treasures',\n", + " 'shaped tongs',\n", + " 'and similar tools',\n", + " 'before time itself',\n", + " 'there was nothing',\n", + " 'no sand, nor sea',\n", + " 'nor cool waves;',\n", + " 'earth existed not at all',\n", + " 'nor the sky above',\n", + " 'just the gaping abyss',\n", + " 'but vegetation nowhere',\n", + " 'until borrs sons',\n", + " 'raised the lands',\n", + " 'they created midgard',\n", + " 'our praised world;',\n", + " 'the sun shone from south',\n", + " 'onto their stone halls',\n", + " 'then the ground grew',\n", + " 'green with plants',\n", + " 'the sun hurled from the south',\n", + " 'with the moon',\n", + " 'her right hand landed',\n", + " 'over the sky horizon;',\n", + " 'the sun did not know',\n", + " 'where her hall was',\n", + " 'the moon did not know',\n", + " 'what his stenght was',\n", + " '(in \"the fading\" : )',\n", + " 'the stars did know know',\n", + " 'where their places was',\n", + " 'stúlka mín litla, sem leikur þér dátt',\n", + " 'liðinn er dagur og komin er nátt',\n", + " 'tími að fara nú fötunim úr',\n", + " 'fingurna þvo, en hvað segir þú?',\n", + " 'gefðú mér kodda og gefðú mér sæng',\n", + " 'gefðú mér rúm sem á tvöfaldan veng',\n", + " 'þar mun ég fljúga í hugarins heim',\n", + " 'og halda í draum út í víðfeðman geim',\n", + " 'fljúgðú þá vina min huganum í',\n", + " 'heimsóttu venus og merkúkry',\n", + " \"þar muntu hitt'eina fallega frú\",\n", + " 'sem færir þér gjafir, en hvað segir þu?',\n", + " 'frá jörðinni liggur svó leiðin til mars',\n", + " 'lækir þar ida af silung og lax',\n", + " 'töff er að reikna um júpiters tungl',\n", + " 'og taka þar lagið, en hvað segir þu?',\n", + " 'gefðú mér kodda og gefðú mér sæng',\n", + " \"á satúrnus dansa þeir klukkun'um kring\",\n", + " 'kólfunum skjóta með úranus swíng',\n", + " 'í neptunus borg má svo byggja sér bú',\n", + " 'sér bregða til pluto, en hvað segir þú?',\n", + " 'my little girl, who plays so well',\n", + " 'the day has passed and the night has come',\n", + " 'time now to take your clothes off',\n", + " 'wash the fingers, or what do you think?',\n", + " 'give me a pillow and give me a blanket',\n", + " 'give me a bed that has two sets of wings',\n", + " 'there i will fly in the home of my mind',\n", + " 'and go in a dream to the huge universe',\n", + " 'then fly my friend in the mind',\n", + " 'visit venus and mercury',\n", + " 'there you will meet a beautiful wife',\n", + " 'who brings you presents, or what do you think?',\n", + " 'from earth the the route leads to mars',\n", + " 'where shoals of trouts and salmon play',\n", + " \"delays are expected at jupiter's moon\",\n", + " 'and, or what do you think?',\n", + " 'give me a pillow and give me a blanket',\n", + " 'in saturn they dance around the clock',\n", + " 'shot the clubs with a uranus swing',\n", + " 'in neptune city you may build your home',\n", + " 'and travel to pluto, or what do you think?',\n", + " 'the fimbulvetr prays the blast of death from north',\n", + " '3 years of frost, 3 years of night',\n", + " 'the final breath evaporates to the sky',\n", + " 'to the stars up high',\n", + " 'skali and hati chase the moon',\n", + " 'stars drop from the canopy',\n", + " 'fenris crashs his chains',\n", + " 'naglfar appears during night',\n", + " 'the end of all no one to escape',\n", + " 'muspells sons are on their way',\n", + " 'odens son, thor awaits them',\n", + " 'to fight – to strike',\n", + " 'þá kemur inn ríki',\n", + " 'að regindómi',\n", + " 'öflugur ofan',\n", + " 'sá er öllu ræður',\n", + " 'þar kemur inn dimmi',\n", + " 'dreki fljúgandi',\n", + " 'naður fránn, neðan',\n", + " 'frá niðafjöllum;',\n", + " 'ber sér í fjöðrum',\n", + " 'flýgur völl yfir',\n", + " 'niðhöggur nái',\n", + " 'nú mun hún sökkvast',\n", + " 'hwær cwóm helm? hwær cwóm byrn(e)?',\n", + " 'hwær cwóm feax flówende?',\n", + " 'hwær cwóm helm? hwær cwóm byrn(e)?',\n", + " 'hwær cwóm feax flówende?',\n", + " 'hwær cwóm hand on hearpestrenge?',\n", + " 'hwær cwóm fýr (scin)ende?',\n", + " 'hwær cwóm hand on hearpestrenge?',\n", + " 'hwær cwóm fýr (scin)ende?',\n", + " 'hwær cwóm helm? hwær cwóm byrn(e)?',\n", + " 'hwær cwóm feax flówende?',\n", + " 'hwær cwóm helm? hwær cwóm byrn(e)?',\n", + " 'hwær cwóm feax flówende?',\n", + " 'hwær cwóm hand on hearpestrenge?',\n", + " 'hwær cwóm fýr (scin)ende?',\n", + " 'hwær cwóm hand on hearpestrenge?',\n", + " 'hwær cwóm fýr (scin)ende?',\n", + " 'hwær cwóm helm hwær cwóm byrn(e)',\n", + " 'hwær cwóm feax flówende?',\n", + " 'hwær cwóm helm? hwær cwóm byrn(e)?',\n", + " 'hwær cwóm feax flówende?',\n", + " 'hwær cwóm hand on hearpestrenge?',\n", + " 'hwær cwóm fýr (scin)ende?',\n", + " 'hwær cwóm hand',\n", + " 'hwær cwóm fýr',\n", + " 'vi er vikinger, i nord vi sejler fra',\n", + " 'kyst til fremmed land, vi kæmper alle mand',\n", + " 'æsir giv os mod, til valhal efter død',\n", + " 'i den mørke muld, vi skåler frydefuldt',\n", + " 'þat mælti mín móðir',\n", + " 'at mér skyldi kaupa fley ok fagrar árar',\n", + " 'fara á brott með víkingum',\n", + " 'standa upp í stafni, stýra dýrum knerri',\n", + " 'halda svá til hafnar höggva mann ok annan',\n", + " 'höggva mann ok annan',\n", + " 'þél höggr stórt fyr stáli stafnkvígs á veg jafnan út með éla meitli andærr jötunn vandar',\n", + " 'en svalbúinn selju sverfr eirar vanr þeiri gestils ölpt með gustum gandr of stál fyr brandi',\n", + " 'we are vikings, from the north, we are sailing from',\n", + " 'from coast to foreign land, vi are figting every man',\n", + " 'æsir give us currage, to valhal after death',\n", + " 'in the dark soil, we cheer joyfully',\n", + " 'that said my mother',\n", + " 'that i should buy',\n", + " 'fley and beautiful years',\n", + " 'go away with vikings',\n", + " 'stand up in the letter',\n", + " 'steer animals knierri',\n", + " 'keep going to the harbor',\n", + " 'chop man and another',\n", + " 'chop a man and another',\n", + " 'it knocks a big steel head',\n", + " 'pimple on the way evenly',\n", + " 'out with a little girl',\n", + " 'anderr jotunn vandar',\n", + " 'a cool selling',\n", + " 'they swear their names',\n", + " 'gestils swallowed with gusts',\n", + " 'gandr or steel fire brandi',\n", + " 'fastir fyrir',\n", + " 'saxið þyrstir, heimtar blóð',\n", + " '(stand tall',\n", + " 'my blade yearns for courageous blood)',\n", + " 'ljóð eg þau kann er kann-at þjóðans kona og mannskis mögur',\n", + " 'hjálp heitir eitt, en það þér hjálpa mun við sökum og sorgum og sútum görvöllum',\n", + " 'það kann eg annað er þurfu ýta synir, þeir er vilja læknar lifa',\n", + " 'það kann eg hið þriðja: ef mér verður þörf mikil hafts við mína heiftmögu, eggjar eg deyfi minna andskota, bíta-t þeim vopn né velir',\n", + " 'það kann eg ið fjórða: ef mér fyrðar bera bönd að bóglimum, svo eg gel að eg ganga má, sprettur mér af fótum fjötur, en af höndum haft. það kann eg ið fimmta: ef eg sé af fári skotinn flein í fóki vaða, fýgur-a hann svo stinnt að eg stöðvig-a-g, ef eg hann sjónum of sé’g',\n", + " 'það kann eg ið sétta: ef mig særir þegn á rótum rás viðar, og þann hal er mig heifta kveður, þann eta mein heldur en mig',\n", + " 'það kann eg ið sjöunda: ef eg sé hávan loga sal um sessmögum, brennur-at svo breitt, að eg honum bjargig-a-g. þann kann eg galdur að gala',\n", + " 'það kann eg ið átta, er öllum er nytsamlegt að nema: hvar er hatur vex með hildings sonum það má eg bæta brátt',\n", + " 'það kann eg ið níunda: ef mig nauður um stendur að bjarga fari mínu á floti, vind eg kyrri vogi á og svæfi’g allan sæ',\n", + " 'those songs i know, which nor sons of men nor queen in a king’s court knows; the first is help which will bring thee help in all woes and in sorrow and strife',\n", + " 'a second i know, which the son of men must sing, who would heal the sick',\n", + " 'a third i know: if sore need should come of a spell to stay my foes; when i sing that song, which shall blunt their swords, nor their weapons nor staves can wound',\n", + " 'a fourth i know: if men make fast in chains the joints of my limbs, when i sing that song which shall set me free, spring the fetters from hands and feet. a fifth i know: when i see, by foes shot, speeding a shaft through the host, flies it never so strongly i still can stay it, if i get but a glimpse of its flight',\n", + " 'a sixth i know: when some thane would harm me in runes on a moist tree’s root, on his head alone shall light the ills of the curse that he called upon mine. a seventh i know: if i see a hall high o’er the bench-mates blazing, flame it ne’er so fiercely i still can save it, — i know how to sing that song',\n", + " 'an eighth i know: which all can sing for their weal if they learn it well; where hate shall wax ‘mid the warrior sons, i can calm it soon with that song',\n", + " 'a ninth i know: when need befalls me to save my vessel afloat, i hush the wind on the stormy wave, and soothe all the sea to rest',\n", + " 'fram á rauða nótt',\n", + " 'fram í rauðan dauðann',\n", + " 'enginn veit sinn næturstað',\n", + " '(our steps, to the night',\n", + " 'if we shall not return',\n", + " 'we shall not be forgotten)',\n", + " 'hljóðs bið ek allar',\n", + " 'helgar kindir',\n", + " 'meiri ok minni',\n", + " 'mögu heimdallar;',\n", + " 'viltu at ek, valföðr',\n", + " 'vel fyr telja',\n", + " 'forn spjöll fira',\n", + " 'þau er fremst of man',\n", + " 'attention i demand from all',\n", + " 'sacred families',\n", + " 'greater and lesser',\n", + " 'children of heimdallr;',\n", + " 'you want me, valfather',\n", + " 'to well recite',\n", + " 'the ancient tales',\n", + " 'those which i remember best',\n", + " 'eyes open wide, blinded by the sun now',\n", + " 'orange and white, dark red, green and yellow',\n", + " 'rainbow colors! do not hide, see the view!',\n", + " 'step aside, go through!',\n", + " 'against the light, too strong, blow a fuse now',\n", + " 'everything bright, new songs, burning shoes',\n", + " 'the look in your eyes! break our bones into half!',\n", + " 'scream and shout and do laugh!',\n", + " 'let yourself... go (oh oh oh)',\n", + " 'let yourself... go (oh oh oh)',\n", + " 'stay close to me',\n", + " 'count one, two and three',\n", + " 'up in through your sleeves',\n", + " 'bursting through the seams',\n", + " \"open your eyes and see - you'll see\",\n", + " 'inn um ermar, upp hryggjarsúluna',\n", + " 'yfir skóg, flæðir niður brekkuna',\n", + " 'allt upp í loft! ég mun aldrei gleyma!',\n", + " 'því ég mun aldrei!',\n", + " 'hleypur um, rífur, leysir flækjurnar',\n", + " '(upp með rótum) með blik í augum!',\n", + " 'stórmerki, undur, brjótum bein í sundur!',\n", + " 'let yourself... go (oh oh oh)',\n", + " 'let yourself... go (oh oh oh)',\n", + " 'stay close to me',\n", + " 'count one, two and three',\n", + " 'up in through your sleeves',\n", + " 'bursting through the seams',\n", + " 'open your eyes and see',\n", + " 'stay close to me',\n", + " 'count one, two and three',\n", + " 'up in through your sleeves',\n", + " 'right beyond the trees',\n", + " \"show you how you'll be\",\n", + " 'stay close to me',\n", + " 'count one, two and three',\n", + " 'up in through your sleeves',\n", + " 'bursting through the seams',\n", + " 'open your eyes and see',\n", + " \"you'll see\",\n", + " 'stay close to me',\n", + " 'count one, two, three',\n", + " 'up in your sleeves',\n", + " \"you're right beyond trees\",\n", + " 'stay close to me',\n", + " 'count one, two, three',\n", + " 'up in your sleeves',\n", + " 'burst through the seams',\n", + " 'open your eyes and see',\n", + " \"you'll see, you'll see\",\n", + " 'thad lenti í drætti, - it was quite a delay',\n", + " 'ad módir mín mig ætti, - when my mother had me',\n", + " \"thvi hún var svo gískid grey. - but then she's such a slender sort\",\n", + " 'en læknrinn var sóttur, - the doctor was fetched',\n", + " 'og loksins ól hún dóttur, - and finally her daughter was born',\n", + " 'og thád sést ekki sætari mey. - and none had ever seen a sweeter girl',\n", + " 'en pabbi var sjaálfur, - my father spent usually',\n", + " 'á sjónum alltaf hálfur, - his time at sea half-drunk',\n", + " 'svo hann gat ekki lengur sagt nei. - but he could not deny me',\n", + " 'fyrst var hann mjög sleginn, - at first he was rather shocked',\n", + " 'en seinna sagdi hann feginn. - but then he said, relieved',\n", + " 'ad thad sést ekki sætari mey. - none shall ever see a sweeter girl',\n", + " 'sætari mey, - such a sweet girl',\n", + " 'sætari mey, - such a sweet girl',\n", + " 'nei thad sést ekki sætari mey. - there is no sweeter girl',\n", + " 'og fyrr en mig vardi, - before i knew it',\n", + " 'hver strákur á mig stardi, - every boy would gaze at me',\n", + " 'eins og stelpur á gleym-mér-ei. - as girls gaze at forget-me-nots',\n", + " \"their fóru ad skjálfa, - they'd shiver\",\n", + " 'og sögdu vid sig sjálfa, - and say to themselves',\n", + " \"hún er sorglega stygg, - she's hard to get -\",\n", + " 'en mjóg trygg, ad ég hygg, - but very loyal, i think',\n", + " 'og thad sést ekki sætari mey. - and there is no sweeter girl',\n", + " 'ég lærdi i bernsku, - i learned quite early',\n", + " 'ad blikkaá finni ensku, - to speak proper english',\n", + " 'og min söngrödd var sweet and gay. - and my song was sweet and gay',\n", + " 'en vestur á landi, - but while out west',\n", + " 'ég lenti í hjónabandi. - i stumbled into marriage',\n", + " 'thad er sorglegt fyrir sidprúda mey - it was sad for such a nice girl',\n", + " 'hann lagdi í sinn vana, - he was used to',\n", + " 'ad elska* ameríkana, - loving american girls',\n", + " 'svo ég kyssti hann og sagdi ok. - so i kissed him and said ok',\n", + " 'en illt var í efni, - then i discovered deceit',\n", + " 'hann var ódamála í svefni, - when he spoke in his sleep',\n", + " 'og thá reyndist hann, - and i found out',\n", + " 'ramm islenskt grey. - he was very icelandic after all',\n", + " 'islenskt grey, - just a poor icelander',\n", + " 'islenskt grey, - just a poor icelander',\n", + " 'sem ásædist islenska mey. - who wanted an icelandic girl',\n", + " 'en nú er önnur öldin, - everything has since changed',\n", + " 'ég dansa kát á kvöldin, - now i go dancing every night',\n", + " 'og thiy kalla mig gleym-mér-ei. - and boys call me forget-me-not',\n", + " 'og piltarnir their skjálfa, - and they shiver',\n", + " 'their segja vid sig sjálfa, - they say to themselves',\n", + " 'nei, thú setydir mér blossandi ást. - no, you send me currents of love',\n", + " 'thvílíkt hnoss! - such luck!',\n", + " 'thvi thad sést ekki sætari mey. - since there is no sweeter girl',\n", + " 'gling gló, klukkan sló, - tic toc, the clock chimed',\n", + " 'máninn ofar skyum hló, - moon smiled above the clouds',\n", + " 'lysti upp gamli gótuslód, - lighting the old trail',\n", + " 'thar gladleg lína stód. - there lina gaily stood',\n", + " 'gling gló, klukkan sló, - tic toc, the clock chimed',\n", + " 'máninn ofar skyum hló,- moon smiled above the clouds',\n", + " 'leitar lási var á leid, - lasi from leiti was on his way',\n", + " 'til lína hanns er beid. - to lina awaiting him',\n", + " 'unnendum er máninn kær, - to sweethearts the moon is dear',\n", + " 'umm thau tófraljóma slær. - around them falls its magic light',\n", + " \"lási á bidilsbuxum var, - lasi wore his suitor's breeches\",\n", + " 'brátt frá línu fær hann svar. - soon from lina came his reply',\n", + " 'gling gló, klukkan sló, - tic toc, the clock chimed',\n", + " 'máninn ofar skyum hló. - moon smiled above the clouds',\n", + " 'lási vard svo hyr á brá, - lasi wore a happy smile',\n", + " 'thvi lína sagdi \"já\". - for lina answered \"yes\"',\n", + " 'ég bý við sjóinn',\n", + " 'og á nóttunni',\n", + " 'þá kafa ég níður',\n", + " 'alveg á hafsbotninn',\n", + " 'undir allar iður',\n", + " 'og sett akkerið mitt út',\n", + " 'hér vill ég vera',\n", + " 'hér á ég heima',\n", + " 'i live by the ocean',\n", + " 'and during the night',\n", + " 'i dive into it',\n", + " 'down to the bottom',\n", + " 'underneath all currents',\n", + " 'and drop my anchor',\n", + " \"this is where i'm staying\",\n", + " 'this is my home',\n", + " 'í valhöll til fórna fagran dreng',\n", + " 'þeir færðú fjötra í',\n", + " \"þeir neglð'ann svo hátt á krýsukross\",\n", + " \"og þeir kölluð'ann þræla þý\",\n", + " 'óliver - kæri',\n", + " 'óliver - mæri',\n", + " 'óliver - nú rakna þín bönd',\n", + " 'óliver - ljúfi',\n", + " 'óliver - prúði',\n", + " 'óliver - nú skjálfa öll lönd',\n", + " 'enginn mun skilja þrautir þær',\n", + " 'er þola mátti hann',\n", + " 'hann gerði það fyrir mig og þig',\n", + " 'fyrir allan sannleikann',\n", + " 'óliver - kæri',\n", + " \"sál þínn er heimur and'og álfa\",\n", + " 'hinn fyrsti og síðasti',\n", + " 'kjarninn í hugum mannanna sjálfra',\n", + " 'þú gafst þeim vísindi - óh, óh, óh',\n", + " 'stóðst eins og máttarstólpi stinnur',\n", + " 'sterkur á svellinu',\n", + " 'nú heyrast mun hátt í skýjunum',\n", + " 'á helgafellinu',\n", + " 'óliver - þú færð sígurlaun',\n", + " 'þú færð sígurlaun',\n", + " 'þó köld sé þín hönd',\n", + " 'óliver - þú færð sígurlaun',\n", + " 'þú færð sígurlaun',\n", + " 'mín elskandi ónd - brjóttú böndin nú!',\n", + " 'in valhalla a long time ago a beautiful boy',\n", + " 'they put in chains',\n", + " 'they nailed him so high upon a cross',\n", + " 'and they called him a slave',\n", + " 'oliver - lovely',\n", + " 'oliver - glorious',\n", + " 'oliver - your bonds are untied now',\n", + " 'oliver - pleasant',\n", + " 'oliver - modest',\n", + " 'oliver - all the lands quiver now',\n", + " 'no one will understand the trials that',\n", + " 'he had to endure',\n", + " 'he did it for me and you',\n", + " 'for all the truth',\n", + " 'oliver - lovely',\n", + " 'you soul is home to spirit and elves',\n", + " 'the first and the last',\n", + " 'the essence is in the minds of the men themselves',\n", + " 'you gave them the knowledge - oh, oh, oh',\n", + " 'piled like a rigid stack of power',\n", + " 'strong on the ice',\n", + " 'you can hear high in the skies now',\n", + " 'about your legend',\n", + " 'oliver - you get your victorious reward',\n", + " 'you get your victorious reward',\n", + " 'though your hand is cold',\n", + " 'oliver - you get your victorious reward',\n", + " 'you get your victorious reward',\n", + " 'my beloved hand - break the ties now!',\n", + " 'valði henni herföðr',\n", + " 'hringa ok men',\n", + " 'fekk spjöll spaklig',\n", + " 'ok spá ganda',\n", + " 'sá hon vítt ok of vítt',\n", + " 'of veröld hverja',\n", + " 'sá hon valkyrjur',\n", + " 'vítt of komnar',\n", + " 'görvar at ríða',\n", + " 'til goðþjóðar;',\n", + " 'skuld helt skildi',\n", + " 'en skögul önnur',\n", + " 'gunnr, hildr, göndul',\n", + " 'ok geirskögul',\n", + " 'nú eru talðar',\n", + " 'nönnur herjans',\n", + " 'görvar at ríða',\n", + " 'grund valkyrjur',\n", + " 'ek sá baldri',\n", + " 'blóðgum tívur',\n", + " 'óðins barni',\n", + " 'örlög folgin;',\n", + " 'stóð of vaxinn',\n", + " 'völlum hæri',\n", + " 'mjór ok mjök fagr',\n", + " 'mistilteinn',\n", + " 'varð af þeim meiði',\n", + " 'er mær sýndisk',\n", + " 'harmflaug hættlig',\n", + " 'höðr nam skjóta;',\n", + " 'baldrs bróðir var',\n", + " 'of borinn snemma',\n", + " 'sá nam óðins sonr',\n", + " 'einnættr vega',\n", + " 'þó hann æva hendr',\n", + " 'né höfuð kembði',\n", + " 'áðr á bál of bar',\n", + " 'baldrs andskota;',\n", + " 'en frigg of grét',\n", + " 'í fensölum',\n", + " 'vá valhallar',\n", + " 'vituð ér enn - eða hvat?',\n", + " 'óthinn opened my eyes',\n", + " 'to rings and necklaces',\n", + " 'to the things men own, things the wise know',\n", + " 'to prophecy',\n", + " 'i saw more and more',\n", + " 'looking out over all the worlds',\n", + " 'i saw valkyrjur',\n", + " 'saddled all around',\n", + " 'ready to ride',\n", + " 'to the homes of the gods',\n", + " 'skuld held a shield',\n", + " 'and skǫgul another',\n", + " 'gunnr, hildr, gǫndul',\n", + " 'and geirskǫgul',\n", + " 'now are counted',\n", + " 'the valkyrjur',\n", + " 'ready to ride',\n", + " 'to the earth, the valkyrjur',\n", + " 'i saw baldr',\n", + " 'the bloodied victim',\n", + " 'óthinn’s son',\n", + " 'resigned to his fate',\n", + " 'there stood',\n", + " 'the mistletoe',\n", + " 'grown slender and fair',\n", + " 'high above the plain',\n", + " 'that tree',\n", + " 'which seemed harmless',\n", + " 'caused a terrible sorrow',\n", + " 'when hǫthr took a shot',\n", + " 'baldr’s brother',\n", + " 'was born soon thereafer',\n", + " 'óthinn’s son; he took vengeance',\n", + " 'when one night old',\n", + " 'he had never washed his hands',\n", + " 'nor combed his hair',\n", + " 'when he put baldr’s slayer',\n", + " 'on the funeral pyre',\n", + " 'frigg wept',\n", + " 'in fensalir',\n", + " 'for the woe of valhǫll',\n", + " 'have you learned enough yet, allfather?']},\n", + " 'data': ['grjót og stál opna gáttir',\n", + " 'sem hönd hefur læst',\n", + " '(from the shouting of rocks',\n", + " 'his eyes finally opened)',\n", + " 'ðá cóm of more',\n", + " 'under misthleoþum',\n", + " 'grendel gongan',\n", + " 'godes yrre bær•',\n", + " 'mynte se mánscaða',\n", + " 'manna cynnes',\n", + " 'sumne besyrwan',\n", + " 'in sele þám héan•',\n", + " 'né þæt se áglaéca',\n", + " 'yldan þóhte',\n", + " 'ac hé geféng hraðe',\n", + " 'forman síðe',\n", + " 'slaépendne rinc',\n", + " 'slát unwearnum•',\n", + " 'bát bánlocan',\n", + " 'blód édrum dranc•',\n", + " 'synsnaédum swealh',\n", + " 'sóna hæfde',\n", + " 'unlyfigendes',\n", + " 'ealgefeormod',\n", + " 'fét ond folma',\n", + " 'lícsár gebád',\n", + " 'atol aéglaéca',\n", + " 'him on eaxle wearð',\n", + " 'syndolh sweotol',\n", + " 'seonowe onsprungon',\n", + " 'burston bánlocan',\n", + " 'béowulfe wearð',\n", + " 'gúðhréð gyfeþe',\n", + " 'scolde grendel þonan',\n", + " 'feorhséoc fléön',\n", + " 'under fenhleoðu',\n", + " 'sécean wynléas wíc',\n", + " 'gryreléoð galan',\n", + " 'godes andsacan',\n", + " 'sigeléasne sang',\n", + " 'sár wánigean',\n", + " 'helle hæfton',\n", + " 'héold hine fæste',\n", + " 'sé þe manna wæs',\n", + " 'mægene strengest',\n", + " 'on þaém dæge',\n", + " 'þysses lífes',\n", + " 'hwær cwóm helm? hwær cwóm byrne?',\n", + " 'hwær cwóm feax flówende?',\n", + " \"7. fafa (doesn't mean anything):\",\n", + " 'þú kemur skríðandi inn í eyðimörkina (you come crawling into the desert)',\n", + " 'þú sérð ei með hvað (?) ljós (you see not with (?) light)',\n", + " 'hann bíður bara dagsins í dag (he only waits for today)',\n", + " 'sykurlaus (sugarless)',\n", + " 'kjarna(?) (core of something)',\n", + " 'þennan hring (?) (this circle (?))',\n", + " 'bíð ég þín (i wait for you)',\n", + " 'þú kemst ei áfram fafafafa (you cannot go forward fafafafa)',\n", + " 'hann er þar og fafafa (he is there and fafafa)',\n", + " 'fáðu fafa fáðu fafa (get fafa get fafa)',\n", + " '(?)',\n", + " 'fáðu fafa (get fafa)',\n", + " 'heill dagr',\n", + " 'heilir dags synir',\n", + " 'heil nótt ok nift',\n", + " 'óreiðum augum',\n", + " 'lítið okkr þinig',\n", + " 'ok gefið sitjöndum sigr',\n", + " 'heilir æsir',\n", + " 'heilar ásynjur',\n", + " 'heil sjá in fjölnýta fold',\n", + " 'mál ok mannvit',\n", + " 'gefið okkr mærum tveim',\n", + " 'ok læknishendr, meðan lifum',\n", + " '\"hail, day!',\n", + " 'hail, sons of day!',\n", + " 'and night and her daughter now!',\n", + " 'look on us here',\n", + " 'with loving eyes',\n", + " 'that waiting we victory win',\n", + " '\"hail to the gods!',\n", + " 'ye goddesses, hail',\n", + " 'and all the generous earth!',\n", + " 'give to us wisdom',\n", + " 'and goodly speech',\n", + " 'and healing hands, life-long',\n", + " 'starálfur staring elf',\n", + " 'blá nótt yfir himininn blue night over the sky',\n", + " 'blá nótt yfir mér blue night over me',\n", + " 'horf-inn út um gluggann dis-appeared out of the window',\n", + " 'minn með hendur me with hands',\n", + " 'faldar undir kinn hidden under my cheek',\n", + " 'hugsum daginn minn i think about my day',\n", + " 'í dag og í gær today and yesterday',\n", + " 'blá náttfötin klæða mig í i put on my blue nighties',\n", + " 'beint upp í rúm go straight to bed',\n", + " 'breiði mjúku sængina i pull the soft covers over',\n", + " 'loka augunum close my eyes',\n", + " 'ég fel hausinn minn undir sæng i hide my head under the covers',\n", + " 'starir á mig lítill álfur a little elf stares at me',\n", + " \"hleypur að mér en hreyfist ekki runs towards me but doesn't move\",\n", + " 'úr stað - sjálfur from place - himself',\n", + " 'starálfur a staring elf',\n", + " 'opna augun i open my eyes',\n", + " 'stírurnar úr take the crusts out',\n", + " \"teygi mig og tel (hvort ég sé ekki) stretch myself and check (if i haven't)\",\n", + " 'kominn aftur og alltalltílæ returned again and everything is okay',\n", + " 'samt vantar eitthvað still there is something missing',\n", + " 'eins og alla vegginna like all the walls',\n", + " 'verðug dróttning stór',\n", + " 'hjarta af gulli skína',\n", + " 'kronum þik med vánum, ást ok trú',\n", + " 'fagra, grýttur land, heimr árnadalr',\n", + " 'fylgið dróttningu ljóssins',\n", + " 'worthy queen of ages',\n", + " 'the heart of gold shines',\n", + " 'we crown thee with hope, love, and faith',\n", + " 'beautiful, stony land, home arendelle',\n", + " 'follow the queen of light',\n", + " 'fyrir ofan vatnajökul',\n", + " 'ekki langt frá ódáðahraun',\n", + " 'þar á fúsi hreindýr heima',\n", + " 'þá ferðast hann á laun',\n", + " 'hann fúsi hreindýr syngur',\n", + " 'við fossanið og kvak',\n", + " 'hann leikur sér hjá læknum',\n", + " 'lengst inn við fjallabak',\n", + " 'húllum hæ, húllum hæ - fúsi hreindýr syngur æ',\n", + " 'þegar klukkan slær - einn, tveir, þrír',\n", + " 'já þá er hann ekki seinn',\n", + " 'er hann ekki seinn',\n", + " 'er hann ekki seinn að stinga sér í volgan hver',\n", + " 'húllum hæ, húllum hæ - fúsi hreindýr syngur æ',\n", + " 'þegar klukkan slær - einn, tveir, þrír',\n", + " 'þá vill hann tala við geir',\n", + " 'vill hann tala við geir',\n", + " 'vill hann tala við geir um það',\n", + " 'hve gaman sé á þessum stað',\n", + " 'fyrir ofan vatnajökul',\n", + " 'húllum hæ, húllum hæ - fúsi hreindýr syngur æ',\n", + " 'þegar klukkan slær - einn, tveir, þrír',\n", + " 'takk, nú eru góð ráð dýr',\n", + " 'eru góð ráð dýr',\n", + " 'eru góð ráð dýr af þvi',\n", + " 'hann fúsi vill fara í sumarfrí',\n", + " 'húllum hæ, húllum hæ - fúsi hreindýr syngur æ',\n", + " 'þegar klukkan slær - einn, tveir, þrír',\n", + " 'nú er hann fúsi stór',\n", + " 'er hann fúsi stór',\n", + " 'er hann fúsi stærsta dýr sem',\n", + " 'ekur um í fjórða gír',\n", + " 'far above the vatnajökull glacier',\n", + " 'not far away from the ódáðahraun lavafield',\n", + " 'there is where fúsi reindeer lives',\n", + " 'he wanders there alone',\n", + " 'fúsi reindeer sings',\n", + " 'by the waterfalls and bird-songs',\n", + " 'he plays by the stream',\n", + " 'all the way furthest in by fjállabak',\n", + " 'hullum hey, hullum hey - fúsi reindeer always sings',\n", + " 'when the clock strikes - one, tock, three',\n", + " 'yes then he is never late',\n", + " 'he is never late',\n", + " 'he is never late to dive into a warm spring',\n", + " 'hullum hey, hullum hey - fúsi reindeer always sings',\n", + " 'when the clock strikes - one, tock, three',\n", + " 'yes then he wants to talk to geir',\n", + " 'he wants to talk to geir',\n", + " 'he wants to talk to geir about',\n", + " 'what fun there is to be had in this town',\n", + " 'far avbove the vatnajökull glacier',\n", + " 'hullum hey, hullum hey - fúsi reindeer always sings',\n", + " 'when the clock strikes - one, two, three',\n", + " 'tock, now good advices are dear',\n", + " 'good advises are dear',\n", + " 'good advises are dear because',\n", + " 'fúsi wants to go on a summer holiday',\n", + " 'hullum hey, hullum hey - fúsi reindeer always sings',\n", + " 'when the clock strikes - one, two, three',\n", + " 'now fúsi, he is big',\n", + " 'fúsi, he is big',\n", + " 'fúsi, he is the biggest animal that',\n", + " 'rides around with four gears']}}},\n", + " 'it': {'sentence': {'pop': {'meta': {'train_data': ['alegria',\n", + " 'come un lampo di vita',\n", + " 'alegria',\n", + " 'come un pazzo gridar',\n", + " 'alegria',\n", + " 'del delittuoso grido',\n", + " 'bella ruggente pena, seren',\n", + " 'come la rabbia di amar',\n", + " 'alegria',\n", + " 'come un assalto di gioia',\n", + " 'alegria',\n", + " 'i see a spark of life shining',\n", + " 'alegria',\n", + " 'i hear a young minstrel sing',\n", + " 'alegria',\n", + " 'beautiful roaring scream',\n", + " 'of joy and sorrow',\n", + " 'so extreme',\n", + " 'there is a love in me raging',\n", + " 'alegria',\n", + " 'a joyous, magical feeling',\n", + " 'alegria',\n", + " 'come un lampo di vita',\n", + " 'alegria',\n", + " 'come un pazzo gridar',\n", + " 'alegria',\n", + " 'del delittuoso grido',\n", + " 'bella ruggente pena, seren',\n", + " 'come la rabbia di amar',\n", + " 'alegria',\n", + " 'come un assalto di gioia',\n", + " 'del delittuoso grido',\n", + " 'bella ruggente pena, seren',\n", + " 'come la rabbia di amar',\n", + " 'alegria',\n", + " 'come un assalto di gioia',\n", + " 'alegria',\n", + " 'como la luz de la vida',\n", + " 'alegria',\n", + " 'como un payaso que grita',\n", + " 'alegria',\n", + " 'del estupendo grito',\n", + " 'de la tristeza loca',\n", + " 'serena',\n", + " 'como la rabia de amar',\n", + " 'alegria',\n", + " 'como un asalto de felicidad',\n", + " 'del estupendo grito',\n", + " 'de la tristeza loca',\n", + " 'serena',\n", + " 'como la rabia de amar',\n", + " 'alegria',\n", + " 'como un asalto de felicidad',\n", + " 'there is a love in me raging',\n", + " 'alegria',\n", + " 'a joyous, magical feeling',\n", + " 'arivam terda a la sira',\n", + " 'coi strumeint in dal bavol',\n", + " \"a g'am al bas e la chitara e po al viulein\",\n", + " \"a g'am dal machini ch'i an fat toti la guera\",\n", + " \"a gh' quala ed lucio\",\n", + " \"c'la g'ha un cartoun a tac a la purtera\",\n", + " 'eh - oh a sam la banda',\n", + " 'a sam gnu che par suner',\n", + " \"an's ciapa gnanc un sold\",\n", + " \"ma a gh' da fer dal gran casein\",\n", + " 'a sam la banda i sunador',\n", + " 'con du tambur e gnanc un sold',\n", + " 'a sam gnu par fer baraca tota sira',\n", + " 'a sam la banda i sunador',\n", + " 'qui dal viulein e qui dal folk',\n", + " 'a sam gnu par fer baraca tota sira',\n", + " \"a gh' i delinqueint ed modna\",\n", + " 'i delinqueint ed modna',\n", + " \"a gh' i delinqueint ed modna\",\n", + " 'i delinqueint ed modna',\n", + " 'a sam visti c** di puvret',\n", + " \"a g'am dal ghegni ch'i fan spaveint\",\n", + " \"a gh' un bancari, a gh' un dutor e di sfigh\",\n", + " \"ma eh - oh quand a's partes\",\n", + " \"a'g vin d'la mosa, a'g vin dal fes\",\n", + " \"e un, du, tri, quater la gint i d'vinten mat\",\n", + " \"a's va in gir par la muntagna\",\n", + " 'e par la basa ad oc sbare',\n", + " \"al prem c'a'l s'indurmeinta\",\n", + " 'al ciapa un sciaf a tac i deint',\n", + " 'a sam la banda i sunador',\n", + " 'con du tambur e gnanc un sold',\n", + " 'a sam gnu par fer baraca tota sira',\n", + " 'a sam la banda i sunador',\n", + " 'qui dal viulein e qui dal folk',\n", + " 'a sam gnu par fer baraca tota sira',\n", + " \"a gh' i delinqueint ed modna\",\n", + " 'i delinqueint ed modna',\n", + " \"a gh' i delinqueint ed modna\",\n", + " 'i delinqueint ed modna',\n", + " \"will you ever see that i couldn't turn a blind eye?\",\n", + " 'the day that we said goodbye',\n", + " \"it's true that someday your honesty will pay\",\n", + " \"now who's gonna say?\",\n", + " 'da quando non mi hai più cercato',\n", + " 'mi sembra molto più difficile',\n", + " 'credevo di essere più forte',\n", + " 'di quella sera e tutte le parole',\n", + " 'ed è bastato un solo sguardo',\n", + " 'solo una volta non lo scordi più',\n", + " 'rincontrarsi nei pensieri',\n", + " 'ritrovarsi come ieri',\n", + " 'anche se non può più tornare',\n", + " 'basta una volta e non lo scordi più',\n", + " 'quella sera e tutte le parole (scordi più)',\n", + " \"will you ever see that i couldn't turn a blind eye?\",\n", + " 'the day that we said goodbye',\n", + " \"it's true that someday your honesty will pay\",\n", + " 'and i paid my dues',\n", + " \"now who's gonna say?\",\n", + " 'win or lose',\n", + " 'senza ormai più chiedersi',\n", + " 'se mai ce la farò',\n", + " 'e se domani domani forse ritornerò',\n", + " 'magari un giorno poi',\n", + " 'poi me ne pentirò',\n", + " 'ma ne valeva la pena rischiare tutto o no?',\n", + " 'never seems so really ended',\n", + " \"no i can't really forget it\",\n", + " \"no i can't forget you\",\n", + " \"will you ever see that i couldn't turn a blind eye?\",\n", + " 'the day that we said goodbye',\n", + " \"it's true that someday your honesty will pay\",\n", + " 'and i paid my dues',\n", + " \"now who's gonna say?\",\n", + " 'win or lose',\n", + " 'ahhh',\n", + " \"will you ever see that i couldn't turn a blind eye?\",\n", + " 'the day that we said goodbye',\n", + " \"it's true that someday your honesty will pay\",\n", + " 'and i paid my dues',\n", + " \"ed era l'ultimo saluto\",\n", + " 'e non ci penso più...',\n", + " 'cadono giù stalle - stelle',\n", + " 'lacrima (il) tramonto',\n", + " 'gocce di luce dagli occhi',\n", + " 'nella notte cieca',\n", + " 'è qui che a casa mia ormai ritorno',\n", + " \"c'incontreremo stasera\",\n", + " 'menta e rosmarino',\n", + " 'che ho preso a calci le notti',\n", + " 'per starti più vicino',\n", + " \"amor, d'amor sia l'amor perduto!!\",\n", + " 'i feel so lonely tonight',\n", + " 'se per farmi male ti amai',\n", + " 'i feel so lonely tonight',\n", + " \"se per farmi vivo t'amai\",\n", + " 'cadono giù stalle - stelle',\n", + " 'e una monetina',\n", + " 'i miei pensieri in farfalle dentro la mattina',\n", + " 'è qui che a casa mia ormai ritorno',\n", + " 'i feel so lonely tonight',\n", + " 'se per farmi male ti amai',\n", + " 'i feel so lonely tonight',\n", + " 'se per farmi vivo ti amai',\n", + " \"con l'anima in piena\",\n", + " 'mi sgominai',\n", + " 'mi smemorai',\n", + " 'i feel so lonely tonight',\n", + " 'se per farmi male ti amai',\n", + " 'i feel so lonely tonight',\n", + " 'se per farmi vivo ti amai',\n", + " 'i feel so lonely tonight',\n", + " 'se per farmi male ti amai',\n", + " 'i feel so lonely tonight',\n", + " 'se per farmi vivo ti amai',\n", + " \"e t'amo ancora\",\n", + " 'mi piace andare forte',\n", + " \"un po' tra la pazzia e il blues\",\n", + " \"e po mannaggia 'a morte\",\n", + " 'mi sparo due panini al cheese',\n", + " \"a te che te ne 'mporta\",\n", + " \"'a vita è 'a mia\",\n", + " \"it's all right\",\n", + " 'ti chiamerò stanotte',\n", + " 'non ho più schede e sono giù',\n", + " \"'o ssaje ca sotto sotto\",\n", + " 'sta vita nun me piace cchiù',\n", + " 'i believe in you',\n", + " 'i believe in you',\n", + " 'living on the road',\n", + " 'fra la sicilia e il mare',\n", + " 'qualcosa poi succederà',\n", + " 'comprerò il giornale',\n", + " \"it's all right\",\n", + " 'i believe in you',\n", + " 'i believe in you',\n", + " 'living on the road',\n", + " 'adesso non fumare',\n", + " 'guarda le luci andiamo là',\n", + " 'hai paura di volare',\n", + " \"it's all right\",\n", + " 'i believe in you',\n", + " 'i believe in you',\n", + " \"se e' ilegal el fumo\",\n", + " \"no e' certo parche' manca el consumo\",\n", + " 'epur i vende le cartine',\n", + " 'tabachi a scatoloni che resta nee cantine',\n", + " 'da senpre i dise che fa mal',\n", + " 'de gente che se spara',\n", + " \"e' senpre pien el giornal\",\n", + " 'da senpre ritenuo na rovina',\n", + " \"l'alcoismo e' legal ma cuanta\",\n", + " \"gente l'assassina\",\n", + " \"in olanda e' legal\",\n", + " \"cua' invesse no'\",\n", + " \"par la gente e' normal\",\n", + " \"cua' invesse no'\",\n", + " \"e' torna' me amigo da l'olanda\",\n", + " \"e cua' co un caneo i ne spranga\",\n", + " \"in olanda e' legal\",\n", + " \"cua' invesse no'\",\n", + " \"forse le tronbe e' normal\",\n", + " \"cua' invesse no'\",\n", + " \"e' torna' me amigo da l'olanda\",\n", + " \"e cua' co un caneo i ne spranga\",\n", + " 'cuante i ghe ne dise sul fumar',\n", + " 'cuanta gente che no vol gnanca scoltar',\n", + " \"un rito che no e' de sta cultura\",\n", + " \"e la mafia se fa i sche'i\",\n", + " \"sora un clima de pau'ra\",\n", + " \"li insegna che l'alcol fa sangue, vitamine\",\n", + " \"e no' pal vostro ben\",\n", + " \"parche' i ve roba le medissine\",\n", + " \"no e' tanto meio meso litro in ostaria\",\n", + " \"de bever un cafe' o fumar un ciospo de maria\",\n", + " \"in olanda e' legal\",\n", + " \"cua' invesse no'\",\n", + " \"par la gente e' normal\",\n", + " \"cua' invesse no'\",\n", + " \"e' torna' me amigo da l'olanda\",\n", + " \"e cua' co un caneo i ne spranga\",\n", + " \"in olanda e' legal\",\n", + " \"cua' invesse no'\",\n", + " \"forse le tronbe e' normal\",\n", + " \"cua' invesse no'\",\n", + " \"e' torna' me amigo da l'olanda\",\n", + " \"e cua' co un caneo i ne spranga\",\n", + " \"par certa gente e' ilegal fumar\",\n", + " 'la stessa gente giustifica copar',\n", + " \"ligarte se ti fumi, cuea e' la so civilta'\",\n", + " \"a venessia sconto in cae a ansterdan senta'\",\n", + " 'pensa che ben poderte far trancuio i to canoni',\n", + " 'gnente para in giro e ronpimenti de coioni',\n", + " \"se cua' fusse cussi' pensa\",\n", + " 'i turisti che vegnaria',\n", + " \"par inpossibile ma rilanciaria l'economia\",\n", + " \"in olanda e' legal\",\n", + " \"cua' invesse no'\",\n", + " \"par la gente e' normal\",\n", + " \"cua' invesse no'\",\n", + " \"e' torna' me amigo da l'olanda\",\n", + " \"e cua' co un caneo i ne spranga\",\n", + " \"in olanda e' legal\",\n", + " \"cua' invesse no'\",\n", + " \"forse le tronbe e' normal\",\n", + " \"cua' invesse no'\",\n", + " \"e' torna' me amigo da l'olanda\",\n", + " \"e cua' co un caneo i ne spranga\",\n", + " 'sorridi provocandomi',\n", + " 'con gli occhi mi incateni qui',\n", + " 'mi lasci andare tanto sai',\n", + " 'che puoi riprendermi',\n", + " \"you're drowning in the deep for me (sei sabbie mobili)\",\n", + " \"i love the way i'm drawn to you (tu sai accendermi)\",\n", + " 'just like oceans rise to kiss the moon',\n", + " \"it's gravity, our love is like gravity\",\n", + " 'tu che mi dai vita completamente',\n", + " 'calmami e di colpo pretendimi',\n", + " 'mani come nodi stringono noi',\n", + " 'che attraversiamo sabbie mobili',\n", + " 'bring me back to life when you light my fire',\n", + " 'makes me feel so high never coming down',\n", + " \"it's more than just fantasy come true\",\n", + " 'i feel your love rising from deep inside of me',\n", + " \"up to ecstasy, fino all'estasi\",\n", + " \"your desire's pulling me\",\n", + " 'to exaclty where i need to be',\n", + " \"it's so good that i can hardly breathe\",\n", + " 'i feel it take over me',\n", + " \"mi lasci ancora immergere (you give me all you've got)\",\n", + " 'sei acqua che sa spegnermi (you make me feel so free)',\n", + " 'e il tuo sapore diventerà forza di gravità',\n", + " 'bring me back to life when you light my fire',\n", + " 'makes me feel so high never coming down',\n", + " 'take control and show me how it feels',\n", + " 'to go from heaven up to ecstasy',\n", + " 'sento ogni battito del tuo cuore',\n", + " 'stringere i miei sensi immobili',\n", + " 'un sospiro appeso a un brivido qui',\n", + " 'che così intenso dal profondo sale su',\n", + " \"fino all'estasi\",\n", + " \"you're drowning in the deep for me\",\n", + " \"don't fight it just let it be (fino all'estasi)\",\n", + " \"now your desire's pulling me\",\n", + " \"our love is like gravity, it's gravity, baby\",\n", + " 'tu che mi dai vita completamente',\n", + " 'calmami e di colpo pretendimi',\n", + " 'take control and show me how it feels',\n", + " 'to go from heaven up to ecstasy',\n", + " 'sento ogni battito del tuo cuore',\n", + " 'stringere i miei sensi immobili',\n", + " \"it's more than just fantasy come true\",\n", + " 'i feel your love rising from deep inside of me',\n", + " \"up to ecstasy, fino all'estasi\",\n", + " 'up to ecstasy',\n", + " 'mr. e. jones, il sole è alto tirati su',\n", + " 'mr. e. jones, se stai sognando svegliati',\n", + " \"mr. e. jones dai resti a letto forse un po' di più\",\n", + " 'mr. e. jones prepara il tuo caffè',\n", + " 'mr. e. jones, sei già in ritardo, sempre così',\n", + " 'mr. e. jones, non perder tempo, vestiti',\n", + " \"mr. e. jones c'è già in cucina odore di caffè (ricordi tua madre)\",\n", + " 'mr. e. jones lo preparava lei',\n", + " 'e, ti svegliava, il suo profumo',\n", + " 'e, ti piaceva, il suo profumo',\n", + " 'mr. e. jones, vestito in grigio, bene così',\n", + " 'mr. e. jones, sei quasi pronto, sbrigati',\n", + " 'mr. e. jones la porta è aperta, scendi giù un città (corri in ufficio)',\n", + " 'mr. e. jones prendi il cappello e vai',\n", + " 'mr. e. jones la porta è aperta, scendi giù un città',\n", + " 'mr. e. jones la porta è aperta, scendi giù un città',\n", + " 'mr. e. jones',\n", + " 'so fatte u frikkettone a botte de triusche',\n", + " 'e me so devertute che coline e francische',\n", + " \"ma mo so pendite e che le terrise me ne 'a sci\",\n", + " 'e de fa u frikkettone non ne vogghie chiù sapè',\n", + " 'non ne vogghie chiù sapè',\n", + " 'de fa u frikkettone',\n", + " 'e de fa u frikkettone',\n", + " 'non ne vogghie chiù sapè',\n", + " 'a japige so sciute p’u fume sci a’ccattà',\n", + " 'e a cudde ce so ditte non te pozze pagà',\n", + " 'jidde me pigghie a sckaffe, \"dammille le terrise',\n", + " 'e vattinne da do c’ non vuè jesse accise\"',\n", + " 'non ne vogghie chiù sapè...',\n", + " 'so assute dalla palde vindemila lilre',\n", + " 'e u chernute che chidde vattinne da u verviire',\n", + " '\"le terrise so picche però fasce nudde',\n", + " 'mo vene la madame e c’avà frecà a tutte\"',\n", + " 'non ne vogghie chiù sapè...',\n", + " 'o centre sociale stonne nu muerse sckattate',\n", + " 'le chempagne a dorme tu le vide scettate',\n", + " 'la destra a venciute e nu ce stame a chiamendà',\n", + " 'e u fume da a la cape ce fasce stetà',\n", + " 'non ne vogghie chiù sapè...',\n", + " \"mo j'a sci a tezzuà da mammà e da tatà\",\n", + " \"p'cé lore secure robba bbone m'anna dà\",\n", + " '\"al pettuccio fa bene una tazza di tè\"',\n", + " 'e de fa u frikkettone non ne vogghie chiù sapé',\n", + " 'non ne vogghie chiù sapè...',\n", + " 'i sing ammore',\n", + " 'per dirti: \"darling, i love you',\n", + " 'sto inguaiato, ti amo very much',\n", + " 'purtroppo però non lo so dir\"',\n", + " 'do you capire?',\n", + " 'my love, tu dare solo un kiss',\n", + " 'io pregare, tu credermi perché',\n", + " 'desidero te for me',\n", + " 'e non sapendo \"catarì\"',\n", + " 'né \"torna a surriento\"',\n", + " 'canto \"only you\"',\n", + " 'solo per te',\n", + " 'i sing ammore',\n", + " 'do you capire oppure no?',\n", + " 'voglio dirti \"i love you, i love you so',\n", + " 'e resta così with me\"',\n", + " 'e non sapendo \"catarì\"',\n", + " 'né \"torna a surriento\"',\n", + " 'canto \"only you\"',\n", + " 'solo per te',\n", + " 'i sing ammore',\n", + " 'do you capire oppure no?',\n", + " 'voglio dirti \"i love you, i love you so',\n", + " 'e resta così accanto a me\"',\n", + " 'i sing ammore',\n", + " 'i sing ammore',\n", + " 'voglio essere gainsbourg',\n", + " 'voglio una lolita al mou',\n", + " 'ay marieke mon amour',\n", + " 'dammi quello che vuoi tu',\n", + " 'se con gli altri balli il twist',\n", + " 'se con gli altri prendi il trip',\n", + " 'dove vado non lo so',\n", + " 'quanto male ti farò',\n", + " 'voglio essere gainsbourg',\n", + " 'voglio una lolita al mou',\n", + " 'ay marieke mon amour',\n", + " 'dammi quello che vuoi tu',\n", + " 'voglio il ciuffo di de andré',\n", + " 'e una bimba come te',\n", + " 'build the modern chansonnier',\n", + " 'build the modern chansonnier',\n", + " 'build the modern chansonnier',\n", + " 'build the modern chansonnier',\n", + " 'certi giorni penso che',\n", + " 'voglio odiare i want to hate',\n", + " 'copulare in hit parade',\n", + " 'ammazzarmi insieme a te',\n", + " 'forse un giorno morirò',\n", + " 'amplificatore vox',\n", + " 'if i die juliette greco',\n", + " \"all'inferno brucerò\",\n", + " 'certi giorni penso che',\n", + " 'voglio odiare i want to hate',\n", + " 'copulare in hit parade',\n", + " 'suicidarmi insieme a te',\n", + " 'il tabacco di de andré',\n", + " 'e una fica come te',\n", + " 'build the modern chansonnier',\n", + " 'build the modern chansonnier',\n", + " 'build the modern chansonnier',\n", + " 'build the modern chansonnier',\n", + " 'ho visto un sogno',\n", + " \"l'ho visto c'è\",\n", + " 'oltre le stelle',\n", + " 'è acceso in me',\n", + " \"l'ho visto in terra\",\n", + " \"l'ho visto in te\",\n", + " \"l'ho visto dove\",\n", + " \"visto dov'è\",\n", + " 'love is',\n", + " 'love is all around',\n", + " \"l'ho visto altrove\",\n", + " \"l'ho visto qua\",\n", + " 'nel sole giallo',\n", + " \"io l'ho visto già\",\n", + " \"l'ho visto al buio\",\n", + " 'con gli occhi tuoi',\n", + " 'quando i miei occhi',\n", + " 'erano stanchi ormai',\n", + " 'love is',\n", + " 'love is',\n", + " \"it's all around\",\n", + " 'love is love',\n", + " \"it's all around\",\n", + " 'stiamo ballando',\n", + " 'tra le rovine',\n", + " 'sulle macerie',\n", + " 'cercando amore',\n", + " 'fino alla fine',\n", + " 'tra le nostre miserie',\n", + " 'love is all around',\n", + " \"l'ho visto nero\",\n", + " \"l'ho visto in me\",\n", + " 'credevo allora',\n", + " 'che fossi tu',\n", + " 'ho visto un sogno',\n", + " 'sembrava vero',\n", + " 'ci credo ancora',\n", + " 'e ancora spero',\n", + " 'love is love',\n", + " 'is all around',\n", + " 'love is love',\n", + " \"it's all around\",\n", + " 'stiamo ballando',\n", + " 'tra le rovine',\n", + " 'sulle macerie',\n", + " 'cercando amore',\n", + " 'fino alla fine',\n", + " 'tra le nostre miserie',\n", + " 'love is all around',\n", + " 'love is all around',\n", + " 'love is',\n", + " 'i think love is',\n", + " \"it's all around\",\n", + " 'love is love',\n", + " \"it's all around\",\n", + " 'i say love love',\n", + " \"it's all around\",\n", + " 'love is love',\n", + " \"it's all around\",\n", + " 'i feel the knife at my throat',\n", + " 'and it cuts and it burns',\n", + " 'have you no mercy',\n", + " 'i feel the knife at my throat',\n", + " 'and it cuts and it burns',\n", + " 'have you no mercy',\n", + " 'you laugh as i twist and i turn',\n", + " 'crushing the air in my chest',\n", + " 'till there is no air to breathe',\n", + " \"pray there's a way to escape\",\n", + " 'but the joke is on me',\n", + " 'show me some hope',\n", + " 'show me some light',\n", + " 'cause i got nothing left in me tonight',\n", + " \"if i don't go\",\n", + " 'if i say no',\n", + " 'is it the end?',\n", + " 'scappo perché so che non saprei dirti di no',\n", + " 'vorrei giurarti che tornerò presto ma no',\n", + " 'non posso dirtelo lasciarti in bilico mai',\n", + " 'mai o mai',\n", + " \"piuttosto insultami con tutto l'odio che hai\",\n", + " 'quello che so',\n", + " 'è che vorrei',\n", + " 'star dentro tutte le cose che sei',\n", + " \"if i don't go\",\n", + " 'if i say no',\n", + " 'is it the end?',\n", + " 'graffi che parlano e mi ricordano che',\n", + " 'ci sei',\n", + " 'dentro i miei guai',\n", + " 'nel buio tu sei luce per sempre',\n", + " 'dentro i miei guai',\n", + " 'nel buio tu sei',\n", + " 'luce per sempre',\n", + " 'luce per sempre',\n", + " \"if i don't go\",\n", + " 'if i say no',\n", + " 'is it the end?',\n", + " 'graffi che parlano e mi ricordano che',\n", + " 'ci sei',\n", + " 'dentro i miei guai',\n", + " 'nel buio tu sei luce per sempre',\n", + " 'fa così freddo',\n", + " 'fa così freddo',\n", + " \"lanciami un'ancora di salvezza\",\n", + " 'luce per sempre',\n", + " \"un'ancora di salvezza\",\n", + " 'luce per sempre',\n", + " 'se la vita che dai',\n", + " 'a chi ti chiede aiuto',\n", + " 'se il pensiero che hai',\n", + " \"e' gi concreto in me\",\n", + " 'la preghiera che fai',\n", + " \"e' il credo che ho cercato\",\n", + " 'un sapore che ormai io non baciavo piu',\n", + " 'e mi abbandono a te',\n", + " 'la mia pace stabile',\n", + " 'ed abbandono tutti i miei se',\n", + " \"you'll always be a part of me\",\n", + " 'resta qui, nel vento che ha soffiato',\n", + " \"you'll always be inside of me\",\n", + " \"resta qui per un po'\",\n", + " 'se il rispetto che dai',\n", + " \"e' darti senza fiato\",\n", + " 'se la scelta che fai',\n", + " \"e' una carezza in pi\",\n", + " 'se nel tempo che hai',\n", + " 'il tuo vero alleato',\n", + " 'un sentiero che ormai',\n", + " 'io non passavo pi',\n", + " 'io mi abbandono a te',\n", + " 'ad una pace affabile',\n", + " 'ed abbandono tutti i miei se',\n", + " \"you'll always be a part of me\",\n", + " 'resta qui',\n", + " 'nel posto che hai trovato',\n", + " \"you'll always be inside of me\",\n", + " \"resta qui per un po'\",\n", + " 'e mi abbandono a te',\n", + " 'a una pace immobile',\n", + " 'poi ti abbandoni su di me',\n", + " \"you'll always be a part of me\",\n", + " 'resto qui',\n", + " 'nel vento che hai portato',\n", + " \"you'll always be inside of me\",\n", + " \"resta qui per un po'\",\n", + " \"you'll always be a part of me\",\n", + " 'reti qui',\n", + " 'nel posto che ho cercato',\n", + " \"you'll always be inside of me\",\n", + " \"resto qui per un po'\",\n", + " \"resta qui per un po'\",\n", + " \"you'll always be a part of me\",\n", + " '--alessandro safina:',\n", + " 'vive il ricordo',\n", + " 'di quel primo momento',\n", + " 'magico incontro',\n", + " 'in un giorno di vento',\n", + " 'e le parole che non ho trovato mai',\n", + " 'come per miracolo per te le trovai',\n", + " 'io ti chiamai passione',\n", + " 'incanto ed armonia',\n", + " 'parole antiche',\n", + " 'parole nuove',\n", + " 'venute da chissà dove',\n", + " 'ti dissi che sei un sogno',\n", + " 'che sempre sognerò',\n", + " 'tu sei aria e memoria',\n", + " 'e sempre ti amerò',\n", + " 'aria e memoria',\n", + " 'è storia di una storia',\n", + " 'respiro e sento',\n", + " 'che tu mi vivi dentro',\n", + " \"e l'infinito adesso esiste e so cos'è\",\n", + " 'è saper amare come io amo te',\n", + " 'ti chiamerò passione',\n", + " 'incanto ed armonia',\n", + " 'parole in piena',\n", + " 'che come un fiume',\n", + " 'si getteranno nel cuore',\n", + " \"ti parlerò d'amore\",\n", + " 'finchè non dormirai',\n", + " 'sarai aria e memoria',\n", + " 'non mi lasciare mai',\n", + " '--chrissie hynde:',\n", + " 'your voice is all i hear',\n", + " 'your smile is all i see',\n", + " 'wishes come true',\n", + " 'i know why',\n", + " 'i see the passion in your eyes',\n", + " 'you casted a spell upon me',\n", + " 'your voice',\n", + " \"i'm your trust\",\n", + " \"we'll be together\",\n", + " 'you are the leading on my dreams',\n", + " 'and we will dream forever',\n", + " 'you are the song in my heart',\n", + " \"and i'll always love you\",\n", + " 'your touch tell me this',\n", + " 'heaven does exist',\n", + " 'i know you will be there',\n", + " 'come what may',\n", + " 'i see the passion in your eyes',\n", + " 'you casted a spell upon me',\n", + " 'your voice',\n", + " \"i'm your trust\",\n", + " \"we'll be together\",\n", + " 'and i will sing to you of love',\n", + " 'untill you save the night',\n", + " 'you are the song in my heart',\n", + " \"and i'll always love you (2x)\",\n", + " 'ohh-ohh, ah',\n", + " \"wide awake, can't think straight\",\n", + " \"i'm alright, it's too late, yeah\",\n", + " 'at night i am light, i am bright in the night',\n", + " \"out of sight, i'll be bright\",\n", + " \"like a star, i'll go far\",\n", + " \"like a star we'll go far in the dark\",\n", + " \"when the night i can't sleep\",\n", + " 'wide awake, fighting dreams',\n", + " 'they are huge, earth to moon',\n", + " \"and i know they'll become true\",\n", + " \"soon as bright, i'm alive\",\n", + " \"like a star, i'll go far\",\n", + " \"like a star we'll go far in the dark\",\n", + " \"sfumature dell'anima (anima)\",\n", + " 'sono cresciute in camera (cresciute in camera)',\n", + " 'sono sei personalità (personalità)',\n", + " 'siamo il tempo che passerà (passerà)',\n", + " \"sì, ricordi lontani, ma' (lontani, ma')\",\n", + " 'due ragazzini in macchina (macchina)',\n", + " 'morire è matematica (matematica)',\n", + " 'come pioggia che poi cadrà (poi cadrà)',\n", + " 'la vita che non capirai',\n", + " 'siamo noi, luna pallida',\n", + " 'e ad amarsi ti ammalerai',\n", + " 'sì, cuori di ceramica',\n", + " 'si guarisce metà e metà',\n", + " 'la vita è una metafora',\n", + " 'cinematografica',\n", + " 'come una videocamera',\n", + " \"when the night i can't sleep\",\n", + " 'wide awake, fighting dreams',\n", + " 'they are huge, earth to moon',\n", + " \"and i know they'll become true\",\n", + " \"soon as bright, i'm alive\",\n", + " \"like a star, i'll go far\",\n", + " \"like a star we'll go far in the dark\",\n", + " 'quando la notte non riesco a dormirci',\n", + " 'quando finirà tu, ti prego, stringimi',\n", + " 'vita toglie senza darci motivi, sì',\n", + " 'crisi ed instabili tratti emotivi, sì',\n", + " 'quando non ci sarai, ti prego, fingi di',\n", + " 'quando la notte non potrò più stringerti',\n", + " \"resta stanotte, sì, anche s'è egoista, sì\",\n", + " 'anche se guarissi, solo per finta, sì',\n", + " \"when the night i can't sleep\",\n", + " 'wide awake, fighting dreams',\n", + " 'they are huge, earth to moon',\n", + " \"and i know they'll become true\",\n", + " \"soon as bright, i'm alive\",\n", + " \"like a star, i'll go far\",\n", + " \"like a star we'll go far in the dark\",\n", + " \"wide awake, can't think straight\",\n", + " \"i'm alright, it's too late, yeah\",\n", + " 'at night i am light, i am bright in the night',\n", + " \"out of sight, i'll be bright\",\n", + " \"like a star, i'll go far\",\n", + " \"like a star we'll go far in the dark\",\n", + " 'in the night, hey',\n", + " 'ricordo feste di schiuma',\n", + " \"di te l'odore che respirai\",\n", + " 'mi segue come una piuma',\n", + " \"'cause i'm still loving you\",\n", + " 'forse non lo sai ma è vero',\n", + " \"'cause i'm still loving you\",\n", + " 'forse non ci credi ma spero',\n", + " \"'cause i'm still loving you\",\n", + " 'ricordo pioggia che passa',\n", + " 'mi manchi e tu non passi mai',\n", + " 'mi segue come una carezza',\n", + " \"'cause i'm still loving you\",\n", + " 'forse non lo sai ma è vero',\n", + " \"'cause i'm still loving you\",\n", + " 'forse non ci credi ma spero',\n", + " \"'cause i'm still loving you\",\n", + " 'forse non lo sai ma è vero',\n", + " \"'cause i'm still loving you\",\n", + " 'dimmi che ci credi, lo spero',\n", + " \"'cause i'm still loving you\",\n", + " \"'cause i'm still loving you\",\n", + " \"i'm still loving you!!!\",\n", + " '(grazie a ornella291289 per questo testo)',\n", + " 'johnny, el pagante esta muy loco!',\n", + " 'zio, te ne pentirai',\n", + " 'north face, snake, volcom style',\n", + " 'booster, nike, iuter',\n", + " 'magazza non si discute',\n", + " 'timberland, air max',\n", + " 'pass per il wapp',\n", + " 'pass pass pass',\n", + " 'vodka menta al magenta',\n", + " 'poi dal pusher compro un penta',\n", + " \"la serata è un po' spenta\",\n", + " 'ma la pupa la fomenta',\n", + " 'zio no!',\n", + " 'minchia frate cannonate',\n", + " 'le serate sempre pagate',\n", + " 'le impennate sopra il rello',\n", + " 'minchia zibo che bordello',\n", + " 'johnny, el pagante esta muy loco!',\n", + " 'entro in pass al lime',\n", + " 'tuta adidas e nike',\n", + " 'cazzo me ne sai, i got a feeling tonight',\n", + " 'entro in pass al lime',\n", + " 'tuta adidas e nike',\n", + " 'cazzo me ne sai, i got a feeling tonight',\n", + " 'prima aber poi guastalla',\n", + " 'la mia vita è sempre a palla',\n", + " 'qui al tumi ci si scialla',\n", + " 'e al rattazzo ci si sballa',\n", + " 'poi al reef, altro spliff',\n", + " 'con i soci sempre in trip',\n", + " 'strappo un drink alla goccia',\n", + " 'mi ubriaco come... boh?',\n", + " 'vodka menta, al magenta',\n", + " 'poi dal pusher compro un penta',\n", + " \"la serata è un po' spenta\",\n", + " 'ma la pupa la fomenta',\n", + " 'johnny el pagante esta muy loco!',\n", + " 'zio no!',\n", + " 'entro in pass al lime',\n", + " 'tuta adidas e nike',\n", + " 'cazzo me ne sai, i got a feeling tonight',\n", + " 'entro in pass al lime',\n", + " 'tuta adidas e nike',\n", + " 'cazzo me ne sai, i got a feeling tonight',\n", + " 'tarzan, dean, boogie e penny lane',\n", + " 'hanno rubato i sogni ai tempi miei',\n", + " 'la musica leggera oggi',\n", + " 'nelle classifiche dei dischi impera',\n", + " 'good good-bye, hollywood',\n", + " \"non lo so, cos'è importante o no\",\n", + " 'helmut newton, greta aveva stile',\n", + " 'cerco un vestito tutto nero',\n", + " \"passa un'auto in corsa\",\n", + " \"e' come un film da un finestrino chiuso\",\n", + " 'good good-bye, dancing night',\n", + " \"still the rain, i'll see your face again\",\n", + " 'good good-bye, hollywood',\n", + " \"non lo so, cos'è importante o no\",\n", + " 'fashion vogue nei jardins de mode',\n", + " 'un telefilm anche a natale sempre',\n", + " \"la neve e l'aria insieme\",\n", + " 'che io ti scriva o no non cambia',\n", + " 'al cavern club del roxy music entro',\n", + " 'ti ho scritto già una cartolina',\n", + " 'e penso ancora ai miei parenti',\n", + " 'che svernavano a rapallo insieme',\n", + " 'good good-bye, amsterdam',\n", + " \"still the rain, i'll see your face again\",\n", + " 'good good-bye, amsterdam',\n", + " \"still the rain, i'll see your face again\",\n", + " 'al cavern club del roxy music entro',\n", + " 'ti ho scritto già una cartolina',\n", + " 'e penso ancora ai miei parenti',\n", + " 'che svernavano a rapallo insieme',\n", + " 'good good-bye, amsterdam',\n", + " \"still the rain, i'll see your face again\",\n", + " 'good good-bye ciao',\n", + " 'good good bye ciao',\n", + " 'good good bye ciao',\n", + " 'good good bye ciao',\n", + " 'good good bye ciao',\n", + " 'good good bye ciao',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'donkey tonkey people',\n", + " \"spero, che fai l'asino sul serio per un po'\",\n", + " \"e se fai il ballo dell'asino, io ci sto\",\n", + " 'xchè le tue parole, sembrino raggi di sole (oh)',\n", + " 'e per ricordarti, di dimenticare',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'donkey tonkey people',\n", + " \"ora, giù in città, c'è una blue crayola\",\n", + " 'è di cioccolata ya e si chiama lola',\n", + " 'xchè i tuoi occhi adesso sembrino raggi di sole (oh)',\n", + " 'chiameremo felicità, la disperazione',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'donkey tonkey people',\n", + " 'uh na na na, voglio bere',\n", + " 'uh na na na, bere te',\n", + " 'uh na na na, e la tua bocca di miele',\n", + " 'uh na na na, bere te',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'do the donkey people',\n", + " 'do the donkey people',\n", + " 'do the donkey people',\n", + " 'do the donkey people',\n", + " 'uh na na na, voglio bere',\n", + " 'uh na na na, bere te',\n", + " 'uh na na na, e la tua luna di fiele',\n", + " 'uh na na na, bere te',\n", + " 'do the donkey, donkey, donkey',\n", + " 'do the donkey, donkey, donkey',\n", + " 'do the donkey, donkey, tonkey',\n", + " 'do the donkey people',\n", + " 'do the donkey people',\n", + " 'do the donkey people',\n", + " 'do the donkey people',\n", + " 'always pokémon',\n", + " 'gotta catch ‘em all',\n", + " 'you gotta catch ‘em all (all)',\n", + " 'you gotta catch ‘em all (all)',\n", + " 'you gotta catch ‘em all',\n", + " 'always pokémon',\n", + " 'il mondo è grande, grande ma',\n", + " 'chi viaggia poi cammina col cuore un po’ più in là',\n", + " 'scoprendo cos’è la libertà, libertà',\n", + " 'la forza della volontà (volontà)',\n", + " 'ti porta dove va',\n", + " 'la tua curiosità',\n", + " 'muovendoti con agilità',\n", + " 'per noi (per noi)',\n", + " 'l’avventura non finisce mai',\n", + " 'se ci segui ti divertirai',\n", + " 'dai partiamo tutti insieme',\n", + " 'per un grande pokémon tour',\n", + " 'you gotta catch ‘em all',\n", + " 'gira, gira il mondo',\n", + " 'gira la tua sfera',\n", + " 'quando hai già lanciato',\n", + " 'la tua pokèball!',\n", + " 'gira, gira il mondo',\n", + " 'pianta la bandiera',\n", + " 'dove sei arrivato',\n", + " 'coi tuoi amici pokémon',\n", + " 'gira, gira il mondo, (gira il mondo)',\n", + " 'gira la tua sfera',\n", + " 'grida a perdifiato',\n", + " '“gotta catch ‘em all!” (gira il mondo)',\n", + " 'gira la tua sfera',\n", + " 'yes you gotta catch ‘em all',\n", + " 'catch, catch!',\n", + " 'you gotta catch ‘em all!',\n", + " 'gotta catch ‘em all',\n", + " 'you gotta catch ‘em all (all)',\n", + " 'you gotta catch ‘em all (all)',\n", + " 'you gotta catch ‘em all',\n", + " 'always pokémon',\n", + " 'lancia la tua sfera poké',\n", + " 'e l’avventura non finirà!',\n", + " 'con ogni lancio sei più forte perché',\n", + " 'puoi catturare nuovi pokémon!',\n", + " 'you gotta catch ‘em all!',\n", + " 'gira, gira il mondo',\n", + " 'pianta la bandiera',\n", + " 'dove sei arrivato coi tuoi amici pokémon',\n", + " 'gira, gira il mondo, (gira il mondo)',\n", + " 'gira la tua sfera',\n", + " 'grida a perdifiato',\n", + " '“gotta catch ‘em all!” (gira il mondo)',\n", + " 'gira la tua sfera',\n", + " 'yes you gotta catch ‘em all!',\n", + " 'catch, catch!',\n", + " 'you gotta catch’em all!',\n", + " 'you gotta catch ‘em all (all)',\n", + " 'you gotta catch ‘em all (all)',\n", + " 'you gotta catch ‘em all',\n", + " 'always pokémon',\n", + " 'you gotta catch ‘em all (all)',\n", + " 'you gotta catch ‘em all (all)',\n", + " 'you gotta catch ‘em all',\n", + " 'always pokémon',\n", + " 'come on johnny johnny johnny kiss me',\n", + " 'johnny johnny kiss me',\n", + " 'baciami baciami baciami johnny please',\n", + " \"tutte le ragazze dell'oklahoma\",\n", + " 'sono innamorate di johnny kiss',\n", + " 'ogni signorina lo ferma e dice',\n", + " 'baciami baciami johnny please',\n", + " 'con accento italo americano',\n", + " 'masticando gomma risponde yeah',\n", + " 'più nessuna donna lo lascia in pace',\n", + " 'baciami baciami very well',\n", + " \"c'è persino quella miss che gli grida\",\n", + " \"johnny kiss se mi baci, ti regalo l'automobile\",\n", + " \"c'è quell'altra che gli dà la miniera di papà\",\n", + " 'per avere i baci in esclusività',\n", + " \"tutte le ragazze dell'oklahoma\",\n", + " 'sono innamorate di johnny kiss',\n", + " 'johnny sei il mio tipo quanto mi piaci',\n", + " 'baciami baciami johnny please',\n", + " \"c'è persino quella miss che gli grida\",\n", + " \"johnny kiss se mi baci, ti regalo l'automobile\",\n", + " \"c'è quell'altra che gli dà la miniera di papà\",\n", + " 'per avere i baci in esclusività',\n", + " \"tutte le ragazze dell'oklahoma\",\n", + " 'sono innamorate di johnny kiss',\n", + " 'johnny sei il mio tipo quanto mi piaci',\n", + " 'baciami baciami johnny please',\n", + " 'baciami baciami johnny please',\n", + " 'baciami baciami johnny please',\n", + " 'baciami baciami',\n", + " 'baciala!',\n", + " 'johnny please',\n", + " 'le nostre anime inseparabili',\n", + " 'ora non coincidono, i percorsi cambiano',\n", + " 'come se le stelle che ci illuminavano',\n", + " 'da lassù ormai non si rivelano',\n", + " 'da un tempo che ci lascia andare via',\n", + " 'mirror, mirror on the wall',\n", + " 'can’t you see you’re losing control?',\n", + " 'non ho più paura di te',\n", + " 'è il riflesso ormai di un altra me',\n", + " 'mirror, mirror on the wall',\n", + " 'can’t you see you’re losing it all?',\n", + " 'non mi fai paura perché',\n", + " 'ogni mio difetto ora è perfetto',\n", + " 'anche se non risponderai',\n", + " 'anche se ogni luce è spenta',\n", + " 'ammetti che non mi perderai, perché sarò',\n", + " 'sarò la musica che non sa andar via',\n", + " 'mirror, mirror on the wall',\n", + " 'can’t you see you’re losing control?',\n", + " 'non ho più paura di te',\n", + " 'è il riflesso ormai di un altra me',\n", + " 'mirror, mirror on the wall',\n", + " 'can’t you see you’re losing it all?',\n", + " 'non mi fai paura perché',\n", + " 'ogni mio difetto ora è perfetto',\n", + " 'anche se non vorrai',\n", + " 'tu sarai con me e io sarò con te per sempre',\n", + " 'anche se non lo sai',\n", + " 'ora sono qui e sono invulnerabile',\n", + " 'mirror, mirror on the wall',\n", + " 'can’t you see you’re losing control?',\n", + " 'non ho più paura di te',\n", + " 'è il riflesso ormai di un altra me',\n", + " 'mirror, mirror on the wall',\n", + " 'can’t you see you’re losing it all?',\n", + " 'non mi fai paura perché',\n", + " 'ogni mio difetto ora è perfetto',\n", + " 'duorme, nennella mia',\n", + " 'fino a che vene juorno',\n", + " 'duorme, nennella mia',\n", + " 'che è ancora notte',\n", + " \"e strigneme 'e dete\",\n", + " 'sempe cchiù forte',\n", + " \"si vene 'o mammone\",\n", + " \"e si vene 'o mammone\",\n", + " \"chiudimmo 'a porta\",\n", + " 'duorme, nennella mia',\n", + " \"fora sta 'o malotiempo\",\n", + " 'duorme, nennella mia',\n", + " 'meglio ca nun siente',\n", + " \"e strigneme 'e dete\",\n", + " 'sempe cchiù forte',\n", + " \"si vene 'o mammone\",\n", + " \"e si vene 'o mammone\",\n", + " \"chiudimmo 'a porta\",\n", + " 'ninnnàninnanoè',\n", + " 'ninnanàninnanoè',\n", + " 'ninnnàninnanoè',\n", + " 'ninnanàninnanoè',\n", + " \"e strigneme 'e dete\",\n", + " 'sempe cchiù forte',\n", + " \"si vene 'o mammone\",\n", + " \"e si vene 'o mammone\",\n", + " \"chiudimmo 'a porta\",\n", + " '\"a commissà, so\\' io maciste!\"',\n", + " '\"ohu, questo qui è diventato matto!\"',\n", + " '- pim pum pam -',\n", + " '\"parla! parla! dov\\'è? parla!!!\"',\n", + " ...]},\n", + " 'data': [\"ecco cos'è quello che ho dentro di me\",\n", + " 'strega di chi, tu che non sei fantasia',\n", + " \"vattene via, c'è ipocrisia\",\n", + " 'quella che brucia i sogni',\n", + " 'fotti chi vuoi, fotti chi puoi, ma fottiti dai!',\n", + " 'questa città con regole senza pietà',\n", + " 'spogliati qui, spogliati da ogni bugia',\n", + " 'poi vattene via, poi vattene via',\n", + " 'senza non sei piã\\x99 niente',\n", + " 'fotti chi vuoi, fotti chi puoi, ma fottiti dai!',\n", + " 'non pensare che delusa e sola, io ti aspetti quü',\n", + " 'provo senso anche se ho un nodo in gola, vattene da quü',\n", + " \"c'è una scusa dietro ogni parola\",\n", + " \"mentre il fiato e l'urlo ti divora\",\n", + " 'urlo solo una parola sola fottiti!!',\n", + " \"copriti dall'incubo della bugia, parlo di te\",\n", + " 'perchè tu sei la bugia',\n", + " 'vattene via, vattene via',\n", + " \"da dire non c'è piã\\x99 niente\",\n", + " 'fotti chi vuoi, fotti chi puoi, ma fottiti dai!',\n", + " 'non pensare che delusa e sola, io ti aspetti quü',\n", + " 'provo senso anche se ho un nodo in gola, vattene da quü',\n", + " \"c'è una scusa in ogni tua parola\",\n", + " \"quando il fiato e l'urlo ti divora\",\n", + " 'urlo solo una parola sola fottiti!!',\n", + " \"ecco cos'è lurida dentro di te\",\n", + " 'strega chi sei, proprio non hai fantasia',\n", + " \"c'è ipocrisia, l'ipocrisia\",\n", + " 'quella che gela il sangue',\n", + " 'fotti chi vuoi, fotti chi puoi, ma fottiti dai....',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'i love you, i love you, i love you (i love you)',\n", + " 'i love you, i love you, i love you',\n", + " 'i love you, i love you, i love you (i love you)',\n", + " 'i love you, i love you, i love you',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, nicola, alessandra',\n", + " 'lorenza, nicola, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'i love you, i love you, i love you (i love you)',\n", + " 'i love you, i love you, i love you',\n", + " 'i love you, i love you, i love you (i love you!)',\n", + " 'i love you, i love you, i love you',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'i love you, i love you, i love you (i love you)',\n", + " 'i love you, i love you, i love you',\n", + " 'i love you, i love you, i love you (i love you!)',\n", + " 'i love you, i love you, i love you',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'i love you, i love you, i love you (i love you)',\n", + " 'i love you, i love you, i love you',\n", + " 'i love you, i love you, i love you (i love you)',\n", + " 'i love you, i love you, i love you',\n", + " 'lorenza, nicola, alessandra',\n", + " 'lorenza, giada, nicola',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'i love you, i love you, i love you',\n", + " 'i love you, i love you, i love you',\n", + " 'i love you, i love you, i love you',\n", + " 'i love you, i love you, i love you',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra (ahhh!)',\n", + " 'lorenza, giada, alessandra',\n", + " 'lorenza, giada, alessandra',\n", + " 'i love you, i love you, i love you (i love you)',\n", + " 'i love you, i love you, i love you',\n", + " 'i love you, i love you, i love you (i love you)',\n", + " 'i love you, i love you, i love you',\n", + " 'so beautiful so beautiful so beautiful eh!',\n", + " 'lega le mie mani',\n", + " 'lega le mie gambe',\n", + " 'apri le mie mani...',\n", + " 'apri le mie gambe',\n", + " 'entra nel mio mondo',\n", + " 'dove adesso io ti perdo',\n", + " 'se io sto fingendo tu non soffrirai',\n", + " 'so beautiful so beautiful so beautiful',\n", + " 'so beautiful eh!',\n", + " 'lega le mie mani mostrami il tuo onore',\n", + " 'dammi una ragione per sentirmi bene',\n", + " \"non fermarti all'apparenza\",\n", + " 'e mangiami anche il cuore',\n", + " 'entra in questa dignità di donna sorridente',\n", + " 'tu vedi solo te stesso',\n", + " 'e non ti accorgi che adesso',\n", + " 'io non sono qui con te',\n", + " 'so beautiful so beautiful so beautiful',\n", + " 'so beautiful eh!',\n", + " 'basterebbe una carezza',\n", + " \"solo un po' di tenerezza\",\n", + " 'per ascoltare il battito di una creatura',\n", + " 'la forza ed il piacere',\n", + " 'tu sei qui che vuoi godere',\n", + " 'fammi vedere chi sei',\n", + " \"li' dietro agli occhi, cosa cerchi?\",\n", + " 'so beautiful so beautiful',\n", + " 'you are so beautiful eh',\n", + " 'eh',\n", + " 'lega le mie mani',\n", + " 'lega le mie gambe',\n", + " 'cogli tutti i fiori che vuoi possedere',\n", + " \"maledetta primavera di quest'abbandono\",\n", + " 'cerchi la divinità',\n", + " 'e... resti solo un uomo',\n", + " 'lemandorle suonano',\n", + " 'la pizza, il pop, la musica elettronica',\n", + " 'la pizza, il pop, la musica elettronica',\n", + " 'la pizza, il pop, la musica elettronica',\n", + " 'la pizza, il pop, la musica elettronica',\n", + " 'la pizza, il pop, la musica elettronica',\n", + " 'la pizza, il pop, la musica elettronica',\n", + " 'la pizza, il pop, la musica elettronica',\n", + " 'la pizza, il pop, la musica elettronica',\n", + " 'la pizza, il pop, la musica elettronica',\n", + " 'la pizza, il pop, la musica elettronica',\n", + " 'la pizza, il pop, la musica elettronica',\n", + " \"chiara come un bel sole d'inverno\",\n", + " \"e trasparente stella all'imbrunire\",\n", + " 'succhia questo bellissimo giorno',\n", + " 'e tutte quante insieme le mie paure',\n", + " 'you make me feel loved',\n", + " 'you make me feel all loved (x2)',\n", + " 'dolce e cara domenica',\n", + " 'dai tuoi solai io sento le campane',\n", + " \"e sulla scia di un'elica\",\n", + " 'i miei ricordi di seghe, fossi e rane!',\n", + " 'you make me feel...',\n", + " 'you make me feel loved',\n", + " 'you make me feel all loved',\n", + " 'you make me feel loved',\n", + " 'you make me feel...',\n", + " 'you make me feel loved',\n", + " 'col mal di denti nel cuore sorrido a te',\n", + " 'you make me feel loved',\n", + " 'col cuore in fiamme di sera ripenso a te',\n", + " 'down, down, down',\n", + " 'down, down, down',\n", + " 'down, down, down',\n", + " \"oh, don't let me down\",\n", + " \"chiara come un bel sole d'inverno\",\n", + " \"e stella rossa lontana all'imbrunire\",\n", + " 'succhia questo bellissimo giorno',\n", + " \"che l'amore non ha niente da capire\",\n", + " 'you make me feel loved',\n", + " 'you make me feel all loved',\n", + " 'you make me feel loved',\n", + " 'you make me feel...',\n", + " 'you make me feel loved',\n", + " 'col mal di denti nel cuore sorrido a te',\n", + " 'you make me feel loved',\n", + " 'col cuore in fiamme di sera io incendio te',\n", + " 'you make me feel loved',\n", + " 'belle parole insonni che dedico a te',\n", + " 'you make me feel loved',\n", + " \"femmine folli e albe d'oro io dedico a te\",\n", + " 'you make me feel loved',\n", + " 'you make me feel all loved',\n", + " 'as far wrengo',\n", + " 'delta cento',\n", + " 'elto rebishow',\n", + " 'novish tama',\n", + " 'esto rama',\n", + " 'cento rebishlow',\n", + " 'now bella rema',\n", + " 'bella suma',\n", + " 'zappa retisgo',\n", + " 'as far wrengo',\n", + " 'delta cento',\n", + " 'elto rebishow',\n", + " 'novish tama',\n", + " 'esto rama',\n", + " 'cento rebishlow',\n", + " 'bella rema',\n", + " 'bella suma',\n", + " 'zappa retisgo',\n", + " 'as far wrengo',\n", + " 'delta cento',\n", + " 'elto rebishow',\n", + " 'novish tama',\n", + " 'esto rama',\n", + " 'cento rebishlow',\n", + " 'as far wrengo',\n", + " 'delta cento',\n", + " 'elto rebishow',\n", + " 'novish tama',\n", + " 'esto rama',\n", + " 'cento rebishlow',\n", + " \"generazione che và lotta per la sua identità un' altra ne arriverà sicuro che nn mollerà corona e democrazia maschera dell'ipocrisia partiti e socetà fuori dalla legalitaà\",\n", + " \"la txalaparta insiste nel suo antico su e giu'un suono magico che non viene da nord ne da sud\",\n", + " \"belfast falls road today la social non ti basta mai welcome in derry bogside per strada non e' tutto ok red hand volunteer force e' l'odio che se ne va' nn so se partiro' la tregua quanto durera'\",\n", + " 'la musica irlandese che esce dai pub dice nn siamo una colonia nn lo saremo mai',\n", + " 'twenty six & six british troops now',\n", + " \"l'europa dei cowboy cavalca il dollaro e' in iraq\",\n", + " 'berlusconi blair aznar i servi del garande croupier black hawks and vody bags sul tavolo come le fiches tra le macerie a bagdad giocano la mano col morto',\n", + " \"l'europa dei perdenti tra colonie a poverta'\",\n", + " \"l'europa potenti insegue un 'altro vietnam\",\n", + " 'nether oil for blood',\n", + " 'nor oil for blood',\n", + " '(grazie a fidiox per questo testo)',\n", + " 'non posso più aspettare',\n", + " 'non voglio stare qui',\n", + " 'rinchiuso dentro a un video spento',\n", + " 'canzone per juke-box che non vorrei ascoltare mai',\n", + " 'grida babylon keep you satisfied',\n", + " 'sorda babylon musica play so high',\n", + " 'rit:nero su nero si avvicina il mattino',\n", + " 'let me tell you about that thing',\n", + " 'la notte rimbomba un suono vicino',\n", + " 'nero su nero is still outside',\n", + " 'si scalda nel fuoco di un profumo latino',\n", + " 'come again come again till the sun will rise up',\n", + " 'nero su nero è arrivato il mattino',\n", + " \"right in the morning i'm gettin high\",\n", + " 'qui il tempo si è fermato',\n", + " 'cosa sei cosa fai dove vai',\n", + " 'stai con me',\n", + " \"qui nel cuore del mio mondo, se c'è amore sarà per te\",\n", + " 'non so nasconderlo',\n", + " 'rit:...',\n", + " 'i’ve left to find a follow go home',\n", + " 'the thousand miles you are alone, are alone',\n", + " 'i’m going away with a learing anyway',\n", + " 'you came back home someday',\n", + " 'the wind will still a follow go home',\n", + " 'and feel the eyes will bright inside with a sand',\n", + " 'no star will shine away',\n", + " 'and the one will say a pray',\n", + " 'you came back home someday',\n", + " 'you went away forever',\n", + " 'you went away alone',\n", + " 'but someone always waiting four you at home today',\n", + " 'no star will shine away',\n", + " 'and the one will say a pray',\n", + " 'you came back home someday',\n", + " 'you went away forever',\n", + " 'you went away alone',\n", + " 'but someone always waiting for you at home today',\n", + " 'you left to find a pot of gold',\n", + " 'a thousand miles you rode alone, all alone!',\n", + " 'oh, the long and lonely way will not lead you anywhere...',\n", + " \"you'll come back home some day;\",\n", + " \"you'll come back home some day\",\n", + " \"the wind will steal your 'pot of gold'\",\n", + " 'and fill your eyes with burning sand, bitter sand!',\n", + " 'no star will show the way and no one will hear your prayer...',\n", + " \"you'll come back home some day;\",\n", + " \"you'll come back home some day\",\n", + " 'you went away forever;',\n", + " 'you went away alone',\n", + " \"but someone's always waiting\",\n", + " 'for you... at home... today!',\n", + " \"ti resta da trovare la pentola d'oro\",\n", + " 'mille miglia hai cavalcato da solo, tutto solo',\n", + " 'sulla lunga strada solitaria',\n", + " 'che non ti porterà da nessuna parte',\n", + " 'un giorno ritornerai a casa',\n", + " \"il vento ruberà la tua pentola d'oro\",\n", + " 'e riempirà i tuoi occhi di sabbia che brucia, sabbia amara',\n", + " 'nessuna stella segnerà il tuo cammino',\n", + " 'e nessuno ascolterà le tue preghiere',\n", + " 'un giorno tornerai a casa',\n", + " 'sei andato via per sempre',\n", + " 'sei andato via da solo',\n", + " 'ma qualcuno ti sta ancora aspettando',\n", + " 'oggi a casa',\n", + " 'rit',\n", + " 'row row to lampedusa we go',\n", + " 'go go for a better life we row',\n", + " 'oohhho dolce musa portami a lampedusa',\n", + " 'oohhho dolce musa bring me to lampedusa',\n", + " 'ieu suntu quiddrhu ca sfida li leoni puru lu desertu e la siccità',\n", + " 'ieu suntu quiddrhu ca parla cu le tigria a mienzu la savana e sutta nu baobab',\n", + " 'ieu suntu alfa e omegaca scise della valle dellu paradisu e la terra popolau',\n", + " 'ieu suntu creatore de danzee solitudinie su na zattera nu sacciu a du sta bbau',\n", + " 'the waters are terbulent',\n", + " \"raging hard with the disperate rave's all sinking for better meant\",\n", + " 'putting the own lives in a detriment',\n", + " 'leaving loved was behind',\n", + " 'koping that they could find',\n", + " 'in the slice of paradise',\n", + " 'making the ultimate sacrifice',\n", + " 'la speranza de ddrha gente ca intra lu disagiu ha nata',\n", + " 'a su na barca alla deriva ene mannata',\n", + " \"perch'è fonte de guadagnu pe ci dice ca la iuta\",\n", + " 'ma è sulu sfruttamento pe ci rischia la vita',\n", + " 'pe nu giurnu migliore forte imu remare',\n", + " 'la strada è ancora longa a lampedusa imu riare',\n", + " 'rit',\n", + " \"e la pelle mia s'ha spusata cu lu sule\",\n", + " 'mi conforterà perchè sta bau versu la notte',\n", + " \"nun c'è casa mia lu mare se stà face forte\",\n", + " 'chissà se dormirò,chissà se dormirò senza te',\n", + " 'human souls are constantly',\n", + " 'reaching hard for survival',\n", + " 'seeking better perpetualy',\n", + " 'preserving life is essential',\n", + " \"though they don't know\",\n", + " 'what the future home',\n", + " 'yet still they go',\n", + " 'searching for better show',\n", + " 'rit',\n", + " 'aston martin, lamborghini',\n", + " 'sui sedili a far bocchini',\n", + " 'profumato da gaultier',\n", + " 'ma il degrado è dentro me',\n", + " 'freak & chic!',\n", + " 'freak & chic!',\n", + " '(such a bitch)',\n", + " 'la vuitton è da duemila',\n", + " 'vai in giro a far la figa',\n", + " 'col collier di van cleef',\n", + " 'succhi, succhi in autogrill',\n", + " 'freak & chic',\n", + " 'freak & chic',\n", + " 'vieni ora, vieni qui',\n", + " 'vuitton, coca e gin',\n", + " 'ketamina e chanel',\n", + " 'noi queen del trash and glam',\n", + " 'vieni ora, vieni qui',\n", + " 'a bere in d&g',\n", + " 'freak & chic',\n", + " 'freak & chic',\n", + " 'vivi e muori così!',\n", + " 'tutti su di me',\n", + " 'voglio una gang bang',\n", + " 'bulgari e cartier',\n", + " 'freak & chic',\n", + " 'freak & chic',\n", + " 'vivi e muori così!',\n", + " 'tutti su di me',\n", + " 'voglio una gang bang',\n", + " 'bulgari e cartier',\n", + " 'freak & chic',\n", + " 'freak & chic',\n", + " 'vivi e muori così!',\n", + " 'a noi piace il dolore',\n", + " \"l'alcool a tutte le ore\",\n", + " 'vomitiamo lo champagne',\n", + " 'sulle scarpe yves saint laurent',\n", + " 'freak & chic',\n", + " 'freak & chic',\n", + " 'sotto i nostri occhiali prada',\n", + " 'noi restiam troie da strada',\n", + " 'vesto oscar de la ren',\n", + " 'ma il degrado è dentro me',\n", + " 'freak & chic',\n", + " '(what a freak)',\n", + " 'fish and chips',\n", + " '(such a bitch)',\n", + " 'vieni ora, vieni qui',\n", + " 'vuitton, coca e gin',\n", + " 'ketamina e chanel',\n", + " 'noi queen del trash and glam',\n", + " 'vieni ora, vieni qui',\n", + " 'a bere in d&g',\n", + " 'freak & chic',\n", + " 'freak & chic',\n", + " 'vivi e muori così!',\n", + " 'tutti su di me',\n", + " 'voglio una gang bang',\n", + " 'bulgari e cartier',\n", + " 'freak & chic',\n", + " 'freak & chic',\n", + " 'vivi e muori così!',\n", + " 'tutti su di me',\n", + " 'voglio una gang bang',\n", + " 'bulgari e cartier',\n", + " 'freak & chic',\n", + " 'freak & chic',\n", + " 'vivi e muori così!',\n", + " 'se mi porti in una gita',\n", + " 'sul tuo motoscafo riva',\n", + " \"tolgo l'intimo dior\",\n", + " 'doggystyle, sì, io ci sto!',\n", + " 'freak & chic',\n", + " '(ma quanto siamo troie!)',\n", + " 'freak & chic',\n", + " 'vieni ora, vieni qui',\n", + " 'ketamina e chanel',\n", + " 'vieni ora, vieni qui',\n", + " 'freak & chic',\n", + " 'freak & chic',\n", + " 'vivi e muori così!',\n", + " 'tutti su di me',\n", + " 'voglio una gang bang',\n", + " 'bulgari e cartier',\n", + " 'freak & chic',\n", + " 'freak & chic',\n", + " 'vivi e muori così!',\n", + " 'tutti su di me',\n", + " 'voglio una gang bang',\n", + " 'bulgari e cartier',\n", + " 'freak & chic',\n", + " 'freak & chic',\n", + " 'vivi e muori così!',\n", + " 'se mi porti in una gita',\n", + " 'sul tuo motoscafo riva',\n", + " \"tolgo l'intimo dior\",\n", + " 'doggystyle, sì, io ci sto',\n", + " 'freak & chic',\n", + " 'la nausea di vivere con quella massa di coglioni /',\n", + " 'uscire ogni volta per accumulare delusioni /',\n", + " 'lo sbocco quando sale... il marcio a pezzettoni /',\n", + " 'rigurgitare il blocco e far finta di esser buoni',\n", + " 'in una società in cui esprimersi é sbagliato /',\n", + " 'senza regole - niente lavoro /',\n", + " 'sono uno zero, uno squilibrato /',\n", + " 'non voglio più pensarci ma non posso lasciar stare /',\n", + " 'ti vomito tutto addosso, mi devo liberare /',\n", + " 'nausea to live with that mass of bollocks /',\n", + " 'going out every time to accumulate disillusions /',\n", + " 'vomit when it rises up... the taste of rot in bits /',\n", + " 'regurgitate the block and pretend to be good. /',\n", + " 'in a society where expressing ourselves is wrong /',\n", + " \"with no rules - no job / i'm a zero, a deranged one /\",\n", + " \"don't wanna think about it, but i can't f*ckin' give up /\",\n", + " 'i puke it all on you, i need to relieve myself /',\n", + " \"n'fus è a strada\",\n", + " \"e n'fus so e'pensieri ca te faje\",\n", + " 'tu nun jesce a tre mis',\n", + " \"n'fus è a strada\",\n", + " \"e n'fus so e'pensieri ca te faje\",\n", + " 'tu nun jesce a tre mis',\n", + " 'e nun tien niente a fa',\n", + " \"quanta scuse t'truov pe nun te\",\n", + " 'ntussecà',\n", + " \"e na luce s'appiccia\",\n", + " 'ma tu nun vuò chiù turnà',\n", + " 'dimme ca è overo',\n", + " 'ca nun è cagnato niente',\n", + " 'e tutto se move',\n", + " 'perché sta smania ca se sente',\n", + " 'e se more',\n", + " 'mentre stanotte na jastemma',\n", + " 'se ne va',\n", + " 'paura e sta',\n", + " \"comme quando nun c'a faje\",\n", + " 'hai paura si',\n", + " 'si vai reritt e resti a per',\n", + " 'comme faje po a turnà',\n", + " 'ma na vota ce creriv',\n", + " 'e mo nun saje comme fà',\n", + " 'e dimme addo stiv',\n", + " 'quann cagnav o viento',\n", + " \"nun c'a faciv a pensà\",\n", + " 'a tutto chest',\n", + " 'quann beviv e annascunniv',\n", + " \"rint o vin l'anema\",\n", + " \"vesto all'occidentale\",\n", + " 'con un senso di colpa micidiale',\n", + " \"vesto all'occidentale\",\n", + " 'come i miei genitori, come il mio cane',\n", + " 'cerco le mie radici',\n", + " 'cerco le mie narici',\n", + " 'nello specchietto retrovisore',\n", + " 'aaaah... aaah...',\n", + " \"vesto all'occidentale\",\n", + " 'una vita prolungata e innaturale',\n", + " \"vesto all'occidentale\",\n", + " 'con un pizzico di colore meridionale',\n", + " 'cerco le mie radici',\n", + " 'cerco le mie narici',\n", + " 'nello specchietto retrovisore',\n", + " 'aaaah... aaah...',\n", + " 'aaaah... aaah...',\n", + " 'aaaah... aaah...',\n", + " 'eh!',\n", + " \"vesto all'occidentale\",\n", + " 'una vita prolungata e innaturale',\n", + " \"vesto all'occidentale\",\n", + " 'come i miei genitori, come il mio cane',\n", + " \"vesto all'occidentale\",\n", + " \"vesto all'occidentale\",\n", + " \"vesto all'occidentale\",\n", + " \"vesto all'occidentale\",\n", + " \"vesto all'occidentale\",\n", + " '(- ma secondo te? quello che stiamo dicendo...',\n", + " '- eh...',\n", + " '- è vero?)',\n", + " 'e poi svegliarsi',\n", + " \"essendo l'alba\",\n", + " 'addormentarsi essendo notte',\n", + " 'volare essendo cielo',\n", + " 'un sogno vascello',\n", + " 'una realtà di luna',\n", + " 'una sponda immaginaria',\n", + " 'aspirazione luce',\n", + " \"do you need somebody - e c'è ancora mare\",\n", + " 'do you love somebody - mare nelle mani',\n", + " \"do you need somebody - e c'è ancora mare\",\n", + " 'somebody',\n", + " 'e navigare',\n", + " 'ma dove andare',\n", + " 'andare avanti essendo vita',\n", + " 'magari fino al tibet',\n", + " 'una stella negra',\n", + " 'un amore nuova guinea',\n", + " \"l'universo in un tepee\",\n", + " 'aspirazione sì',\n", + " \"do you need somebody - e c'è ancora cielo\",\n", + " 'do you love somebody - cielo sotto i piedi',\n", + " \"do you need somebody - e c'è ancora cielo\",\n", + " 'e volare, volare, volare',\n", + " 'dove sei tu',\n", + " 'e tornare, tornare',\n", + " 'con le tue ali',\n", + " \"do you need somebody - e c'è ancora mare\",\n", + " 'do you love somebody - dove siamo veri',\n", + " 'do you need somebody',\n", + " 'scaldare il mondo essendo sole',\n", + " 'magari in fondo al cuore',\n", + " 'un giorno normale',\n", + " 'qualche cosa che rimane',\n", + " 'una vibrazione presto',\n", + " 'aspirazione everest',\n", + " \"do you need somebody - e c'è ancora cielo\",\n", + " 'do you love somebody - cielo sotto i piedi',\n", + " \"do you need somebody - e c'è ancora cielo\",\n", + " 'e volare, volare, volare',\n", + " 'dove sei tu',\n", + " 'e tornare, tornare',\n", + " 'e volare, volare, volare',\n", + " 'dove sei tu',\n", + " 'e tornare, tornare',\n", + " 'con le tue ali',\n", + " \"do you need somebody - e c'è ancora cielo\",\n", + " 'do you love somebody - cielo sotto i piedi',\n", + " \"do you need somebody - e c'è ancora cielo\",\n", + " 'do you love somebody - dove siamo veri',\n", + " \"do you need somebody - e c'è ancora cielo\",\n", + " 'do you love somebody - cielo sotto i piedi',\n", + " \"do you need somebody - e c'è ancora mare\",\n", + " 'do you love somebody - mare nelle mani',\n", + " \"questa è l'ombra della mia croce\",\n", + " \"e si espande a vista d'occhio\",\n", + " 'sbavando scuro affronta il tempo',\n", + " 'poi darà un senso al male trascorso...',\n", + " 'hai deturpato anni di limpidezza',\n", + " 'troncato i passi di un eterno solo',\n", + " 'ma non dai un senso al male trascorso',\n", + " 'non rendi conto al vuoto che ti sovrasta...',\n", + " 'sono mani che si rafforzano incassando e sfregiando',\n", + " 'microtraumi che vietano il sorriso ai miei specchi',\n", + " 'guarda come mi hai ridotto - in cosa ricado ancora',\n", + " 'continuo a rialzarmi e ferire a caso anche morendo',\n", + " 'a pezzi, senza te',\n", + " 'un elastico tenuto in tiro sotto marziali ginocchiate inferte',\n", + " \"un bambino sempre chiuso al buio - dall'angoscia scalcia contro cosa?\",\n", + " \"immortalità è reagire al pungolo dell'esaurimento\",\n", + " 'e far vedere a chi aveva vinto che il traguardo non era lã¬...',\n", + " 'contro la tecnica del non voler mai dare risposte',\n", + " 'contro il murare nel ghiaccio ogni mia attenzione',\n", + " \"contro l'acidità del mondo-fuori a cui ti allinei\",\n", + " 'patibolo dove finisci con chi esercita su di te',\n", + " 'dietro alla durezza del tuo rapportarti',\n", + " 'quel ritmo bulimico che non sai scansare...',\n", + " 'castrato a fuoco mi hai pressato a terra',\n", + " 'ma ora chi va avanti e chi annega qui??',\n", + " 'ora chi va avanti e chi annega qui?? (x 4)',\n", + " \"questa è l'ombra della tua croce\",\n", + " 'da un esile cero sempre sottovento',\n", + " 'nel suo restringersi perde diottrie',\n", + " 'rattoppata in vano da due fondi in vetro..',\n", + " 'hai deturpato anni di limpidezza',\n", + " 'troncato i passi di un eterno solo',\n", + " 'ma non dai un senso al male trascorso',\n", + " 'non rendi conto al vuoto che ti sovrasta...',\n", + " '(contemplo ulcere che si dilatano, autoimmuni)',\n", + " \"stritolato dall'infierire della tensione psichica\",\n", + " 'ma i lineamenti che plasma tanta ingiustizia',\n", + " 'consacrano il mito della vendicatività',\n", + " '\"redemption karma\"',\n", + " \"here's the shadow of my cross\",\n", + " 'rolling as far as the eye can see',\n", + " 'smudging darkness to face time',\n", + " \"then it'll make some sense of past evil ...\",\n", + " \"you've defaced years of purity\",\n", + " 'slashing the steps of who has been alone forever',\n", + " 'but you give no meaning to past evil',\n", + " \"you don't give account to the emptiness above you ...\",\n", + " 'hands give each other strength as they take and scar',\n", + " 'microtraumas that want no smiles in my mirrors',\n", + " \"look what you've done to me - down again\",\n", + " 'i keep getting up and lash out even as i die',\n", + " 'shattered, without you',\n", + " 'elastic pulled taut as knees kick in killer blows',\n", + " 'a child always shut in the dark - kicking out at what in anguish?',\n", + " 'immortality means reacting to the spur of exhaustion',\n", + " 'showing the winner that the finishing line was somewhere else ...',\n", + " 'against the tactic of giving no replies',\n", + " 'against the walling in ice of all my gestures',\n", + " 'against the acidity of the world-outside of which you stand',\n", + " 'the gallows where you end up with those who influence you',\n", + " 'behind the hard manner you have',\n", + " \"the bulimic pace you can't shrug off ...\",\n", + " \"i'm fire-castrated as you press me to the ground\",\n", + " 'but now who goes on and who drowns here??',\n", + " 'now who goes on and who drowns here?? (',\n", + " \"here's the shadow of your cross\",\n", + " \"from a slim candle that's always downwind\",\n", + " 'losing dioptres as it narrows',\n", + " 'patched in vain between two glass layers ...',\n", + " \"you've defaced years of purity\",\n", + " 'slashing the steps of the only everlasting',\n", + " 'but you give no meaning to past evil',\n", + " \"you don't give account to the emptiness above you ...\",\n", + " '(i contemplate autoimmune gaping ulcers)',\n", + " 'throttled by the pressure of mental tension',\n", + " 'but the features that so much injustice is shaping',\n", + " 'consecrate the myth of vengeance',\n", + " \"simmo turnate chiù arraggiate r'ajere\",\n", + " \"chiù passa 'o tiempo e chiù ce facimmo scure\",\n", + " 'simmo terrune e cià facimmo chè nire',\n", + " \"parlammo n'faccia e nun tenimmo problemi\",\n", + " 'al mukawama, al mukawama',\n", + " 'badder than the bite of the baddest tarantula',\n", + " 'al mukawama, al mukawama',\n", + " 'keep resisting yo, resistencia global',\n", + " 'al mukawama, al mukawama',\n", + " 'badder than the bite of the baddest tarantula',\n", + " 'al mukawama, al mukawama',\n", + " 'keep resisting yo, resistencia global',\n", + " 'fydaije fydaije ithaura thaura shaabje',\n", + " '(guerrieri, guerrieri, è una rivoluzione, una rivoluzione popolare)',\n", + " 'intifada intifada thaura shaabje',\n", + " \"al mukawama ammischiato 'mmiezzo 'a genta mia\",\n", + " \"' a palestina ce l'insegna stù sistema è pazzia\",\n", + " \"resistenza popolare tutte quante 'mmiezzo 'a via\",\n", + " 'intifada intifada thaura shaabje',\n", + " \"al mukawama ammischiato 'mmiezzo 'a genta mia\",\n", + " \"' a palestina ce l'insegna stù sistema è pazzia\",\n", + " \"resistenza popolare tutte quante 'mmiezzo 'a via al mukawama, al mukawama\",\n", + " 'badder than the bite of the baddest tarantula',\n", + " 'al mukawama, al mukawama',\n", + " 'keep resisting yo, resistencia global',\n", + " 'al mukawama, al mukawama',\n", + " 'badder than the bite of the baddest tarantula',\n", + " 'al mukawama, al mukawama',\n", + " 'keep resisting yo, resistencia global',\n", + " 'al mukawama, resistencia popular, like the people in filastin',\n", + " 'the resistance should never give in…',\n", + " 'clown, perdona, clown',\n", + " 'se non si ride e non si applaude qui',\n", + " 'clown, capisci, clown',\n", + " 'clown, perdona, clown',\n", + " 'se non si ride e non si applaude qui',\n", + " 'clown, capisci, clown',\n", + " 'siamo insensibili',\n", + " 'clown, guardaci, clown',\n", + " 'siamo sicuri di non esserci',\n", + " 'clown, capisci, clown',\n", + " 'siamo invisibili',\n", + " 'via, via, vieni via di qui',\n", + " 'niente più ti lega a questi luoghi',\n", + " 'neanche questi fiori azzuri',\n", + " 'via, via, neanche questo tempo grigio',\n", + " 'pieno di musiche',\n", + " 'e di uomini che ti son piaciuti',\n", + " \"it's wonderful, it's wonderful, it's wonderful\",\n", + " 'good luck my baby',\n", + " \"it's wonderful, it's wonderful, it's wonderful\",\n", + " 'i dream of you',\n", + " 'chips chips',\n", + " 'du-du du-du-du',\n", + " 'ci-bum ci-bum-bum',\n", + " 'du-du du-du-du',\n", + " 'ci-bum ci-bum-bum',\n", + " 'du-du du-du-du',\n", + " 'via, via, vieni via con me',\n", + " 'entra in questo amore buio',\n", + " 'non perderti per niente al mondo',\n", + " 'via, via, non perderti per niente al mondo',\n", + " \"lo spettacolo d'arte varia\",\n", + " 'di uno innamorato di te',\n", + " \"it's wonderful, it's wonderful, it's wonderful\",\n", + " 'good luck my baby',\n", + " \"it's wonderful, it's wonderful, it's wonderful\",\n", + " 'i dream of you',\n", + " 'chips chips',\n", + " 'du-du du-du-du',\n", + " 'ci-bum ci-bum-bum',\n", + " 'du-du du-du-du',\n", + " 'ci-bum ci-bum-bum',\n", + " 'du-du du-du-du',\n", + " 'via, via, vieni via con me',\n", + " 'entra in questo amore buio',\n", + " 'pieno di uomini',\n", + " 'via, entra e fatti un bagno caldo',\n", + " \"c'è un accappatoio azzurro\",\n", + " 'fuori piove, è un mondo freddo',\n", + " \"it's wonderful, it's wonderful, it's wonderful\",\n", + " 'good luck my baby',\n", + " \"it's wonderful, it's wonderful, it's wonderful\",\n", + " 'i dream of you',\n", + " 'chips chips chips',\n", + " 'du-du du-du-du',\n", + " 'ci-bum ci-bum-bum',\n", + " 'du-du du-du-du',\n", + " 'ci-bum ci-bum-bum',\n", + " 'du-du du-du-du',\n", + " 'cinque limoni 1000 mila euro!!!!!! ooohhhhh!!!',\n", + " \"la nuova europa eccola quà, e sai qual'è la novità?\",\n", + " 'che ci han fottuti, tutto quà, perchè in euro tutto raddoppia!',\n", + " \"e kissà come finirà, forse a pagare anche l'aria..\",\n", + " '\"se poi lei mi consentirà\", facciam la fine dell\\'america!',\n", + " 'questa è la società che ci impongono qua',\n", + " 'questa è la società che ci vendono gia',\n", + " 'e ora viviamo per pagare, ma lo stipendio è sempre uguale',\n", + " 'questo sistema fa cagare, non li possiamo lasciar fare!!!',\n", + " \"e la massa che fa', la testa abbasserà...\",\n", + " 'non farti omologare come una macchina...',\n", + " 'm-a c-c-h-i-n-a m-a-c-c-h-i-n-a di merda!!! oooohhhh!!!!',\n", + " 'questa è la società che ci vendono quà',\n", + " 'e tu non lamentarti piã\\x99...',\n", + " 'se non ce la fai piã\\x99!',\n", + " 'consumisti, arrivisti, nel cemento a sprofondar!! soffocar!!',\n", + " \"you remember?i'm your saro tuo cugino in brooklino tanto tempo è gia passato ti lasciai da picculino mow iu tengo lot of money e nun fazzu u piscaturi cu much business ho incassato stare qui è un bell'affare! certo che mi sono accorto che il pensiero is differenti non mi importa del creato prendi money assai potenti mangia vivi and futti futti ca poi dio perdona a tutti car and beatures night and club ma non chiedermi il perchè!what you see is what you get fuck and story italiano in usa what you see is what you get back to square mother brother sorry scuse me once again what you see you gotta sing it what you see you gotta move it\",\n", + " \"e' fin troppo facile mostrarsi ai propri simili col fare prepotente e intransigente a volte idifferente di chi solo con i soldi riesce ad esaltare il proprio ego fottuta appartenenza di una specie un pò cogliona e un pò animale che non ci serve a niente o perlomeno fa incazzare coloro che continuano a lavorare sulle proprie spalle mentre chi fa il capo mangia pane a tradimento\",\n", + " 'ohi cuginu!bella storia!iu mi sentu americano quando tu sarai più grande ti darò na grossa mano se verrai qui a brooklino posso farti un gran favore!di restare lì in italia senti a me cu to fa fari?!certu che mi sono accorto che il pensiero is differenti non mi importa del creato prendi money assai potenti mangia vivi and futti futti ca poi dio perdona a tutti car and beatures night and club ma non chiedermi il perchè!',\n", + " 'what you see is what you get fuck and story italiano in usa what you see is what you get back to square mother brother sorry scuse me once again what you see you gotta sing it what you see you gotta move it',\n", + " \"tutta questa potenza di chi si sente un dio grazie al denaro degenera in violenza controllata,mirata,studiata così come se fosse di cultura da quelli che manovrano le fila di questa enorme pagliacciata di chi vuol farci credere che qui è tutt'apposto ma è solo una illusione e ci continuano a fregare col sogno americano di chi col falso inganno vuole solo comandare\",\n", + " \"what you see is what you get fuck and story italiano in usa what you see is what you get back to square mother brother sorry scuse me once again(x2)please don't aske me one i'm dead!\",\n", + " '(grazie a lorella per questo testo)',\n", + " 'colgo un fiorellino di montagna',\n", + " 'perché sei tu il mio amor',\n", + " 'perché con questo fiore, raccolto su in montagna',\n", + " 'spero di portarti in montagna',\n", + " 'perché la più bella sei per me',\n", + " 'yes i love you in the sky forever, forever',\n", + " 'yes i love you in the sky forever, forever',\n", + " 'quando guarderai il mio fiorellino',\n", + " 'tu penserai a me',\n", + " 'io penserò che tu mi stai pensando',\n", + " 'poi, domani, tornerò in montagna',\n", + " 'spero di portarti insieme a me',\n", + " 'yes i love you in the sky forever, forever',\n", + " 'yes i love you in the sky forever, forever',\n", + " 'yes i love you in the sky forever, forever',\n", + " 'yes i love you in the sky forever, forever',\n", + " 'fu il percorso e il percorso',\n", + " 'fu maledetto',\n", + " 'fu il destino e il destino',\n", + " 'fu contraddetto',\n", + " 'e non ci credo ancora',\n", + " 'e non voglio parlarne',\n", + " 'e ci credo al paradiso',\n", + " 'ma non può bastarmi',\n", + " 'ora voglio un’altra vita',\n", + " 'ora voglio stare meglio',\n", + " 'ora voglio il ricordo non lo mitighi il tempo',\n", + " 'baby bring down all the rain',\n", + " 'if that’s what it’s gonna take',\n", + " 'to make it epic',\n", + " 'gotta make it epic',\n", + " 'who’s got tomorrow if you don’t own today',\n", + " 'to make it epic, gonna make it epic',\n", + " 'fu perfetto e tremendo',\n", + " 'fu un tradimento',\n", + " 'fu crudele e cruciale',\n", + " 'e fermò il tempo',\n", + " 'e ci provo anche adesso a cambiare i fatti',\n", + " 'nello specchio il viso di chi sa che è tardi',\n", + " 'perché hai lasciato un segno',\n", + " 'perché posso fare meglio',\n", + " 'perché la mia vita valga un po’ di orgoglio',\n", + " 'baby bring down all the rain',\n", + " 'if that’s what it’s gonna take',\n", + " 'to make it epic',\n", + " 'gotta make it epic',\n", + " 'who’s got tomorrow if you don’t own today',\n", + " 'to make it epic, gonna make it epic',\n", + " 'una vita in bilico',\n", + " 'un libro epico',\n", + " 'la mia vita in bilico',\n", + " 'un libro epico: fine primo capitolo',\n", + " 'baby bring down all the rain',\n", + " 'if that’s what it’s gonna take',\n", + " 'to make it epic',\n", + " 'gotta make it epic',\n", + " 'se tu, se tu voli insieme a me, sali queste scale alte fin lassù',\n", + " \"lo so, lo so è solo rock'n'roll, lasciami provare se sono un jolly o un re\",\n", + " 'se vuoi, se vuoi ballare insieme a me, più in alto andrò più in alto se sono un jolly o un re',\n", + " \"yeah ... rock'n'roll city, angeli dannati, i know it's only rock'n'roll\",\n", + " \"love you, love you baby, i'm arlequin baby, i know it's only rock'n'roll\",\n", + " \"oh yeah.....! i' m mister rock\",\n", + " \"viva, viva, viva rock' n ' roll\",\n", + " \"viva, viva, viva rock' n ' roll\",\n", + " 'viva, viva, viva mister rock',\n", + " 'oh yeah ......! mister rock!',\n", + " \"lo so, lo so è solo rock'n'roll, lasciami provare se sono un jolly o un re\",\n", + " \"rock'n'roll city, angeli dannati, i know it's only rock'n'roll\",\n", + " \"love you, love you baby, i'm arlequin baby, i know it's only rock'n'roll\",\n", + " 'lavoro tutto il giorno, mi sbatto come un gatto, la sera non ne posso più',\n", + " \"mi arrabbio te ne freghi, grido, grido senti, adesso non m'importa più\",\n", + " 'adios alla city',\n", + " 'nei bicchieri di pastis',\n", + " 'dentro il vortice del twist',\n", + " 'nei quartieri a luci rosse danno un film',\n", + " 'si chiama \"supernicotin\"',\n", + " 'tu sei la festa di halloween',\n", + " \"nell'autobus bruciato delle drag queen\",\n", + " 'mi dicono: \"francisco vieni qui\"',\n", + " 'kill me baby please',\n", + " 'you are my lady heroin chic',\n", + " 'take me to the beach',\n", + " 'jamaica thc',\n", + " 'ti do la mia saudade',\n", + " 'che sono fiori avvelenati',\n", + " 'ti fanno sesso i pirati',\n", + " 'ti do le mie parole',\n", + " 'nella noche quando piove',\n", + " 'due signore nude ubriache',\n", + " 'mi parlano di te, baby',\n", + " 'love me baby please',\n", + " 'you are my lady heroin chic',\n", + " 'take me to the beach',\n", + " 'jamaica thc',\n", + " 'kill me baby please',\n", + " 'you are my lady heroin chic',\n", + " 'take me to the beach',\n", + " 'jamaica thc',\n", + " 'love me baby please',\n", + " 'you are my lady heroin chic',\n", + " 'take me to the beach',\n", + " 'caraibi, napoli',\n", + " '(bing bang being be, bing bang being be, bing bang being be destiny)',\n", + " \"essere illusioni fantasmi avere immagini e sogni d'essere\",\n", + " '(oh ah ah oh oh oh, oh ah ah eh eh eh, e sei solo kyrie eleison)',\n", + " 'cosa credi credi di avere mille cose è ciò che hai che ti ha è ciò che hai che ti ha',\n", + " '(bing bang being be bing bang being be bing bang being be destiny)',\n", + " '(oh ah ah oh oh oh, oh ah ah eh eh eh, e sei solo kyrie eleison)',\n", + " 'cosa credi di avere il massimo del sesso',\n", + " 'ma è il sesso che ti ha è il sesso che ti ha',\n", + " '(bing bang being be, bing bang being be, bing bang being be destiny)',\n", + " \"essere illusioni fantasmi avere immagini e sogni d'essere\",\n", + " \"essere illusioni fantasmi avere immagini e sogni d'essere\",\n", + " '(oh ah ah oh oh oh, oh ah ah eh eh eh, e sei solo kyrie eleison)',\n", + " 'cosa credi di essere un uomo',\n", + " \"e' quel che sei che ti ha\",\n", + " 'to be or not to be, to be or not to be, to be or not to be',\n", + " '(bing bang being be, bing bang being be, bing bang being be destiny)',\n", + " '(oh ah ah oh oh oh, oh ah ah eh eh eh, e sei solo kyrie eleison)',\n", + " 'cosa credi che si ripeta la canzone',\n", + " 'ma il denaro non mi ha, il denaro non mi avrà',\n", + " '(bing bang being be, bing bang being be, bing bang being be destiny)',\n", + " '(oh ah ah oh oh oh, oh ah ah eh eh eh, e sei solo kyrie eleison)',\n", + " 'guarda fuori è già mattina',\n", + " 'questo è un giorno che ricorderai',\n", + " \"alzati in fretta e vai, c'è chi crede in te\",\n", + " 'non ti arrendere',\n", + " 'once in every life there comes a time',\n", + " 'we walk out all alone and into the light',\n", + " \"the moment won't last but then\",\n", + " 'we remember it again when we close our eyes',\n", + " 'like stars across the sky',\n", + " 'e per avvincere tu dovrai vincere',\n", + " 'we were born to shine',\n", + " 'all of us here because we believe',\n", + " 'non arrenderti',\n", + " 'qualcuno è con te',\n", + " 'like stars across the sky',\n", + " 'we were born to shine',\n", + " 'e per avvincere dovrai vincere',\n", + " 'e allora vincerai',\n", + " 'caravan petrol!...',\n", + " 'caravan petrol!...',\n", + " 'caravan petrol!...',\n", + " 'caravan petrol!...',\n", + " 'caravan...',\n", + " \"mm'aggio affittato nu camello\",\n", + " \"mm'aggio accattato nu turbante\",\n", + " 'nu turbante â rinascente',\n", + " \"cu 'o pennacchio russo e blu...\",\n", + " \"cu 'o fiasco 'mmano e 'o tammurriello\",\n", + " \"cerco 'o ppetrolio americano\",\n", + " \"mentre abballano 'e beduine\",\n", + " \"mentre cantano 'e ttribbù...\",\n", + " \"comme si' bello\",\n", + " 'a cavallo a stu camello',\n", + " \"cu 'o binocolo a tracolla\",\n", + " \"cu 'o turbante e 'o narghilè...\",\n", + " \"gué, si' curiuso\",\n", + " 'mentre scave stu pertuso...',\n", + " 'scordatello, nun è cosa:',\n", + " \"ccá, 'o ppetrolio, nun ce sta...\",\n", + " 'alláh! alláh! alláh!',\n", + " 'ma chi tha ffatto fá?',\n", + " \"comme si' bello\",\n", + " 'a cavallo a stu camello',\n", + " \"cu 'o binocolo a tracolla\",\n", + " \"cu 'o turbante e 'o narghilè!...\",\n", + " \"cu 'o fiasco 'mmano e cu 'o camello\",\n", + " \"cu 'e gguardie 'nnanze e 'a folla arreto\",\n", + " \"'rrevutá faccio tuleto:\",\n", + " 'nun se pò cchiù cammená...',\n", + " \"jammo, è arrivato 'o pazzariello!\",\n", + " \"s'è travestuto 'a menelicche...\",\n", + " \"'mmesca 'o ppepe cu 'o ttabbacco...\",\n", + " \"chi sarrá st'alí babbá!?...\",\n", + " \"comme si' bello\",\n", + " 'a cavallo a stu camello',\n", + " \"cu 'o binocolo a tracolla\",\n", + " \"cu 'o turbante e 'o narghilè...\",\n", + " \"gué, si' curiuso\",\n", + " 'mentre scave stu pertuso...',\n", + " 'scordatello, nun è cosa:',\n", + " \"ccá, 'o ppetrolio, nun ce sta...\",\n", + " 'alláh! alláh! alláh!',\n", + " 'ma chi tha ffatto fá?',\n", + " \"comme si' bello\",\n", + " 'a cavallo a stu camello',\n", + " \"cu 'o binocolo a tracolla\",\n", + " \"cu 'o turbante e 'o narghilè!...\",\n", + " 'finale:',\n", + " 'alláh! alláh! alláh!',\n", + " 'ma chi mmha ffatto fá?',\n", + " \"comme só' bello\",\n", + " 'a cavallo a stu camello',\n", + " \"cu 'o binocolo a tracolla\",\n", + " \"cu 'o turbante e 'o narghilè!...\",\n", + " 'e se penso a te…',\n", + " 'mi faccio male',\n", + " 'ma invecchierò…',\n", + " 'pensando a te',\n", + " 'e se me ne andai…',\n", + " 'fu per amore',\n", + " 'che un giorno sai…',\n", + " 'ucciderò',\n", + " 'oh babe',\n", + " 'ci vuole tempo',\n", + " 'oh',\n", + " 'tutta una vita… lo so',\n", + " 'because i love you… more than i need you',\n", + " '‘cos i feel so bad, feel so bad',\n", + " 'because i need you, more than i want you',\n", + " 'cos i feel so bad, feel so bad',\n", + " 'così resterai…',\n", + " 'di puro amore',\n", + " 'che un giorno sai',\n", + " 'ammazzerò',\n", + " 'oh babe',\n", + " 'ma è un’altra storia',\n", + " 'oh',\n", + " 'quella che sai',\n", + " 'che so',\n", + " 'because i love you… more than i need you',\n", + " '‘cos i feel so bad, feel so bad',\n", + " 'because i need you, more than i want you',\n", + " 'cos i feel so bad, feel so bad',\n", + " 'uhhhhhhhh',\n", + " 'ma non è vero',\n", + " 'che il cielo è nero',\n", + " 'che il cielo è nero',\n", + " 'neeeeeero',\n", + " 'tornerai',\n", + " 'amerò',\n", + " 'uhhhhhhhh',\n", + " 'ma è un’altra storia',\n", + " 'la nostra storia',\n", + " 'e’ un’altra storia',\n", + " 'yeeeeah',\n", + " 'ma non è vero',\n", + " 'che il cielo è nero',\n", + " 'che porti via',\n", + " 'la nostra storia',\n", + " 'e’ un’altra storia',\n", + " 'yeeeeah',\n", + " 'because i love you more than i need you',\n", + " 'cos i feel so bad',\n", + " 'sei proprio un grasso menefregista',\n", + " 'sei dal lontano il piu',\n", + " 'coatto uomo nel mondo',\n", + " 'sei una testa di cazzo-',\n", + " 'lato di ferro',\n", + " 'sei una testa di cazzo',\n", + " 'guardo la tivu ogni pomeriggio',\n", + " \"quando l'accendo, vedo\",\n", + " \"un gran cazzo - l'odio e l'amo\",\n", + " 'che dio-sei magico',\n", + " \"sure he's had his share of problems\",\n", + " 'his life has been tough',\n", + " \"but that's no excuse to be so fucking gruff\",\n", + " \"mark sanger serves him ham, though he doesn't like pork\",\n", + " \"he'd rather eat his own shit with a knife and a fork\",\n", + " 'basta con lo stronzo - non lo mangia, prego!',\n", + " 'lato di ferro - ti voglio bene',\n", + " 'lato di ferro, una domanda',\n", + " 'puoi dirmi se il tuo piatto e buono',\n", + " 'mi domandavo',\n", + " 'you are really a fat person who does not give a fuck',\n", + " ...]},\n", + " 'rap': {'meta': {'train_data': ['g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'seeh',\n", + " \"mai più ore in un vicolo pe' alza' uno spicciolo\",\n", + " 'non sono più un pesce piccolo',\n", + " 'ma un pescecane',\n", + " \"in quest'acque non puoi nuotare\",\n", + " \"la società ti c'infila\",\n", + " 'questo tipo di vita non la scegli mica',\n", + " 'lei seleziona',\n", + " 'come funziona',\n", + " 'elementi, luoghi e ora',\n", + " 'la zona di guerra è roma',\n", + " 'che non è sazia ancora',\n", + " 'sarà razzia allora',\n", + " \"visto che tutti siam uomini d'affari\",\n", + " \"noi s'affidam a quelli coi prezzi meno cari\",\n", + " \"non lo sto a fà pe' aricchimme\",\n", + " \"unicamente per sopravvive'\",\n", + " \"spero poter continuare a scrive'\",\n", + " \"de 'sta vita vissuta al limite\",\n", + " \"brucerò da giovane pe' non arrivare a vecchio\",\n", + " 'guardarsi la mattina a uno specchio',\n", + " 'fare i conti con se stesso:',\n", + " '\"come ho campato fino adesso?\"',\n", + " 'al domani non ci penso',\n", + " 'la coscienza che ho perso',\n", + " 'la società del resto',\n", + " 'ne sono il riflesso',\n", + " 'droga, soldi, potere e sesso',\n", + " \"ora è unita l'europa\",\n", + " 'ognuno beve, fuma e scopa',\n", + " \"co' zuretti like mezz'etti i buy organi faggot\",\n", + " 'by use too big in cap by the abbot',\n", + " 'benassati rap mind the gap i shake your fake culo adottato',\n", + " 'i do business with satana mascherato',\n", + " \"accanna con la canna 'mazza e mollazza il tuo vicino\",\n", + " 'fanculo ai rappers wannabe gambino',\n", + " 'esclusivo istante like noyz diamante',\n", + " 'dj kimo in the limo ti sderenava',\n", + " 'commento esilarante like ugo francica nava',\n", + " 'i play bowling with madonna',\n", + " 'smoke blunt with cappadonna',\n", + " 'i spit with flamì from milano',\n", + " 'pimp cap tarango mia rap tuscolano',\n", + " 'macareno de treno with montana',\n", + " 'like fontana concettuale',\n", + " 'paga shit andrò su in verticale',\n", + " 'respect me man',\n", + " 'tha shit never arrend bombe di notte extralarge',\n", + " 'i do the shit al contrario like savage',\n", + " 'i stop your glory your memory',\n", + " 'benassa the glassa walk alone',\n", + " 'make lo sport like ski ma with malone!',\n", + " 'ascolto il cole fumo il touch tacci il tuo strazio di smokkare',\n", + " \"you can't fuck with the gemellare\",\n", + " 'è okay che il mio dj tocca smokka per ripicca',\n", + " 'mega involvet with the ambrogio splikka',\n", + " 'gemello with benassa the glassa',\n", + " 'sopra il beat di mobb deep que te pasa?',\n", + " 'i have my man tozzi ti fa a pezzi re david',\n", + " 'mentre lo guardavi',\n", + " \"l'italiano che vi rende schiavi\",\n", + " 'we mix imprese',\n", + " 'with inglese',\n", + " 'with my man paper mi er double p portese',\n", + " 'nigga scolorati like benassati devasto il tuo canestro a mestiere',\n", + " 'vendo droga pesante nel tuo quartiere',\n", + " 'paghi in spicci',\n", + " 'like massicci',\n", + " 'ma non credi',\n", + " 'se non vedi',\n", + " 'truceklan nane ti rimane svasticato',\n", + " 'stilizzato like mamone',\n", + " 'i rap parioli, coppedè and alberone',\n", + " 'i do the storia with chicoria',\n", + " 'selling dope and coke with ammonia',\n", + " 'check it!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'ah-ah, check it! in the panchine, 2004',\n", + " 'g-mellow, benassa the glassa, chicoria mc gregorio vii',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'g-mellow!',\n", + " 'allo stadio e in un bar... na-na-na na-na-ne',\n", + " 'allo stadio e in un bar... na-na-na na-na-ne',\n", + " 'this is nane',\n", + " 'in the panchine',\n", + " 'check-check it',\n", + " \"te riesco a fa' na rockaz da medio grammo\",\n", + " 'check-check it',\n", + " 'the spiccio messo male, narco non settimanale',\n", + " 'turn in the kefiah in your mercato rionale',\n", + " 'venticinque a settimana, io e chicoria incastrati',\n", + " 'in front of the giudice freestyle amplificati',\n", + " 'i stolen rolex fasulli, fanciulli',\n", + " 'i rap terza media plus my man ciccio nulli',\n", + " 'my people speak dialetto nel localetto',\n", + " 'ti caghi sotto quando senti il grilletto',\n", + " 'you find me in the panchine baby very well',\n", + " 'bomb three points like latrell sprewell',\n", + " 'col gel i drink by the spina, we make rapina',\n", + " 'in the panchina with the baionetta marocchina',\n", + " 'impanicati, we are pirati in prati',\n", + " 'benassati pay cauzione, we never arrestati',\n", + " 'nessuno ti vuole in casa, come la droga scrausa',\n", + " 'le tue pussy colorate got the menopausa',\n", + " 'vita illegale, contromano, i do frontale',\n", + " 'bombe a castelletto, fuck your rap omosessuale',\n", + " \"tangenziale, that's deadly combination\",\n", + " 'traffik records, we ready for the compilation',\n", + " 'playstation, my man noyz tell me \"spegni tutto\"',\n", + " 'allarmi fake, get away with the farabutto',\n", + " 'imbratto ritratti sui tuoi muri appena rifatti',\n", + " 'vandals inside fighting with the piedipiatti',\n", + " 'strength approach with my man armando',\n", + " 'we smoke blunt with petrarca, ludovico, orlando',\n", + " 'with lorenzo we cook rockaz da medio grammo',\n", + " 'we organizzati, are you ready for the scambio?',\n", + " 'in the panchine got more fans than the knicks',\n", + " 'i love savage boys plus free bloody tricks',\n", + " 'in the tasca cole stolen posca',\n", + " 'with halo 4 solo, drinking caipiroska',\n", + " 'chilling at hungaria, i robbery fondiaria',\n", + " 'dropped off parioli borough the scena sanguinaria',\n", + " 'dropping bomba incendiaria, destroy the polizia',\n", + " 'you looking for prove, testimoni, disappear',\n", + " 'sputo sangue io tra voi',\n", + " 'in the panchina più truceboys',\n", + " 'e-e-e-e-ecco che vuoi',\n", + " 'chissà se starò tra voi',\n", + " 'sputo sangue io tra voi',\n", + " 'in the panchina più truceboys',\n", + " 'e-e-e-e-ecco che vuoi',\n", + " 'chissà se starò tra voi',\n", + " \"e-e-e-e-ecco che c'è, sta g-mel\",\n", + " 'truceklan: ta gueule',\n", + " 'slk, pappa magnaccia',\n", + " 'ztk minaccia pizza in faccia',\n", + " 'che prendo io, sono re del porcoddio',\n", + " 'camuffo la voce, ti denuncio io',\n", + " \"l'avocat, je pense, petit pois\",\n", + " \"tre anni fa ricevetti l'immortalità\",\n", + " \"truceklan, l'armata degli zombie\",\n", + " 'je suis la tagliola, tu es bambi, soccombi',\n", + " 'trombi, dandy, superga, invicta, champion, finto dandy spendi',\n", + " 'guadagni sogni ma magni a scrivere',\n", + " 'rapisco il figlio sopravvivere',\n", + " \"bodega t'aime, et le problème\",\n", + " \"chi l'ha vu, déjà-vu, truce: la crème\",\n", + " 'perisco ma non capisco',\n", + " 'like pessoa lontano da me in me esisto',\n", + " \"di fronte al palco t'ho visto, insisto\",\n", + " 'agonizzante like gesù cristo',\n", + " 'i have in my head a chiodo fisso',\n", + " 'alone with myself mi crocifiggo',\n", + " 'put me in the croces',\n", + " 'look my apostoli look, roces',\n", + " 'feroce we make bodega with cormega',\n", + " 'in the panchine ti strega',\n", + " 'rap dei quartieri alti',\n", + " 'ai cerchi diamanti',\n", + " 'avanti, mai più, carry up your santi',\n", + " 'vendo droga a tua sorella',\n", + " 'mafioso come uno dei fratelli sbarella',\n", + " 'in della, gun blade with pistola a molla',\n", + " 'i sniff the colla, kidnap baby in the culla',\n", + " 'happiness like chi se trastulla',\n", + " 'in the panchine this is shit i device',\n", + " 'hip hop terrorism, we make the ride',\n", + " 'is divine of columbine',\n", + " 'sono un ragazzo, giornatacce sprecate senza fare un cazzo',\n", + " \"di mattina un bowling e nel pomeriggio m'ammazzo\",\n", + " '\"c\\'era una volta in america\", tra un omicidio e un razzo',\n", + " 'abusi like christiane f., jt leroy and laura palmer',\n", + " 'with pugnale tradizionale santa sangre',\n", + " 'inquietante like \"mangiati vivi!\"',\n", + " 'umberto lenzi esclusivi',\n", + " \"cogne come twin peaks, scopri l'assassino\",\n", + " 'our time to , speaks al contrario come er nano',\n", + " 'in bedroom mi drogo con bob sul divano',\n", + " 'to the darkness the future pass',\n", + " 'the magician long to see',\n", + " 'fottiti stronzo, fire walk with me',\n", + " 'chest è pe wuaglijun ca stann a ind e a for ro sistem',\n", + " 'napoli bros, dope one, clementin, lirical drugs',\n", + " 'fratellì purtamml a sott cu nuij oh, oh',\n", + " 'e man aizat wuagliju',\n", + " 'put your hands in the sky',\n", + " 'p chi ven a ind e fogn',\n", + " 'put your hands in the sky',\n", + " 'p chi ven a ind e fogn',\n", + " 'put your hands in the sky',\n", + " 'p chi ven a ind e fogn',\n", + " 'cunusc a vit ro pal?',\n", + " \"tutt e jurnat cu l'uocchij sbarrat quand occor lanc e signal\",\n", + " 'ha la sorella bella in cella dalla pasquetta!',\n", + " 'la panetta nella sella della lambretta!',\n", + " 'cap kist è figli a me',\n", + " 'mò t pigl ca currè',\n", + " 'napl pentit e re',\n", + " \"at ca carlito's way\",\n", + " 'vatt comm a triple h',\n", + " \"p v cuntà tutt e guaj v' essà fa nu medley\",\n", + " 'cari cumpar re miei',\n", + " 'nata puntat e natu frat puntat che fierr',\n", + " \"chi è appena nat e già è catapultati int a 'uerr\",\n", + " 'ma vuò ra bon ca sto vnenn ro giappon?',\n", + " 'passm sett pacchett!',\n", + " \"fatt nu gir e po' aspett!\",\n", + " 'circ e nu m chiedr cartin',\n", + " 'men trash na scen e silent hill',\n", + " 'pigl e flash?',\n", + " 'è a machin e clementin!',\n", + " 'quann iesc ammacchij int e cazttin!',\n", + " \"close your eyes, don't cry!\",\n", + " 'guard quanti guaij!',\n", + " 'p chi ver a vit bianc e ner comm a sin city!',\n", + " 'ten o nir ra mort, o bianc ra coc',\n", + " \"luatv alloc, ca abbasc n's joc\",\n", + " 'drog int e vasc, a gent fatic',\n", + " 'e sord s fann aret a nu vic',\n", + " 'chest è a vit e chi viv a jurnat abbandunat',\n", + " 'wapp cu na cap spustat',\n", + " \"nun s'accuntent ra mullic\",\n", + " 'si s parl e cash addvient nu nemic!',\n", + " \"p nient po' piglià nu gripp\",\n", + " \"t ferm p wuardà s si e l'antiscipp\",\n", + " 'ha cercat e cagnà strad',\n", + " \"ha pruat n'è cos\",\n", + " \"mamm r'acopp o barcon ca lancn e dos\",\n", + " 'ognun ten nu ruol e mann annanz o srvizij',\n", + " \"o pal ha rat l'allarm e po scatt nu blitz!\",\n", + " 'sang ca schizz si sbagl p vizij',\n", + " \"t'aiz e renar ma mai t realizz!\",\n", + " \"close your eyes, don't cry!\",\n", + " 'guard quanti guaij!',\n", + " 'p chi ver a vit bianc e ner comm a sin city!',\n", + " \"e scol elementar puntav all'univers\",\n", + " \"ma o futur cu l'uocchij a criatur s ver divers!\",\n", + " 'fors s fann kiù sord cu nu lavor onest',\n", + " \"po' si va ngann na cord e o cor ca s'arrest!\",\n", + " 'la malafama porta tanta grana',\n", + " 'parla la campagna e inala bamba amara',\n", + " 'ma la trama già è sgamata',\n", + " 'sotto la madonna è pronta già la bara!',\n", + " \"it's a city of drugs, superstar\",\n", + " 'quant tras è ò cas ca stut e far!',\n", + " \"e capit, o falc c'ha cuntrullat\",\n", + " \"stev vstut stran, chi s'è sntut mal?\",\n", + " \"e quatt a nott st'o sol\",\n", + " \"po' pigl e bott a cuntror\",\n", + " \"si zomp o'cuntator\",\n", + " \"ma che v'cont a signor rò sicond pian?\",\n", + " \"a puzz e sgang sott o' balcon?\",\n", + " 'signò sincerament simm buoni wuagliun!',\n", + " 'soe creschiu caminande in custas carrerasa',\n", + " 'in bichinaos e prattasa nugoresas',\n", + " 'e a sos chi mi dimandana dae ube benzo e chie soe',\n", + " 'rispondo chi soe nugoresu de nugoro!',\n", + " 'custa est pro nugoro mama de cada cantone chi iscribo',\n", + " 'de cada contu chi conto de cada tassa chi bibo',\n", + " 'de cada rima chi serro de cada base chi pisto',\n", + " 'de sa limba chi faveddo de sa domo in ube isto',\n", + " \"sa nugoro de eris cussa chi m' at bidu creschere\",\n", + " 'cussa chi appo serrau a lucchette in coro pro sempere',\n", + " 'sa nugoro chi banto in cada locu a arta boche',\n", + " 'mama de chie est nachiu paschiu creschiu inoche',\n", + " 'sa nugoro in iberru nibada in istiu brusiada',\n", + " 'cussa de zente mala isfidiada chi zirat armada',\n", + " \"cussa chi at connottu s'odiu ma cheret amore\",\n", + " 'cussa chi est mudada meda dae cando fippo minore',\n", + " 'e commo chi apereo sa bentana de domo e pompio iffora',\n", + " \"pesso a issa comente siete una sennora m'abbizzo\",\n", + " 'canta est galana e cantu so istau fortunau',\n", + " \"de aere custu sambene e l'aere rappresentau\",\n", + " 'custa est pro tottu sas bortas chi fieru mi so intesu',\n", + " \"de negossiare in sardu chi'n s'azzentu nugoresu\",\n", + " \"in mesu asos amicos chi m'ant sempere diffesu e cumpresu\",\n", + " \"chi'n piachere in tzilleri mi so trattesu\",\n", + " \"m'allugo una zicca saludo ghiro in bichinau\",\n", + " 'mi firmo a pompiare sos murales chi ant pintau',\n", + " \"sa luche de s'impuddile m'accumpazzat in sa janna\",\n", + " 'solu durches paragulas pro tene mama manna',\n", + " 'soe creschiu caminande in custas carrerasa',\n", + " 'in bichinaos e prattasa nugoresas',\n", + " 'e a sos chi mi dimandana dae ube benzo e chie soe',\n", + " 'rispondo chi soe nugoresu de nugoro!',\n", + " 'chin tottu s’affettu, nugoro, custa cantone este pro tene',\n", + " 'pro ti narrere sinzeru, chi abberu ti cherio bene!',\n", + " 'ti lu deppo pro sos durches ammentos de pitzinnia',\n", + " \"chi tue m'as pintau chin sas menzus tintas chi aias\",\n", + " 't’appo torrau s’amore e su profundu sentimentu',\n", + " 'cando appo iscrittu nugoro in cudd’artu muru‘e tzimentu',\n", + " 'inube cada manzanu colabo pro andare a iscola',\n", + " 'chin su walkman alluttu e s’urtima mea cantone noba',\n", + " 'su pessamentu bolat e che abba de ribu mi trisinat',\n", + " 'in cuddos ammentos de cando istabo in bia mughina',\n", + " 'fippo galu minore ma est incue chi appo cumpresu',\n", + " 'chi no est dae su sambenau chi si biete su nugoresu',\n", + " 'ma dae su sensu de appartenenzia a custa zitade',\n", + " 'pro custa limba e pro custa manna comunidade',\n", + " 'de zente chi appo perdiu o zente chi si ch’est andada',\n", + " 'zente chi est abbarrada e a fiancu meu est sempere istada',\n", + " 'dae sa punta ‘e su monte ortobene t’appo ammirada',\n", + " 'in cussas nottes craras tottu canta illucherada',\n", + " 'chin seuna e su nurache, santu predu e pred’istrada',\n", + " 'bibende intro ‘e unu zilleri chin sa serranda abbassiada',\n", + " 'm’ammento cada contu, cada locu, cada boche',\n", + " 'cada cara de sas pessones chi appo connottu inoche',\n", + " 'in su bene e in su male ses unu donu de deu',\n", + " 'custu ti cherio narrere, nugoro, sambene meu!',\n", + " 'soe creschiu caminande in custas carrerasa',\n", + " 'in bichinaos e prattasa nugoresasa',\n", + " 'e a sos chi mi dimandana dae ube benzo e chie soe',\n", + " 'rispondo chi soe nugoresu de nugoro!',\n", + " 'castaman! (caparezza) oh yeah',\n", + " '(listen) legalize your seed (alborosie)',\n", + " 'lega-legalize him, lega-legalize him',\n", + " 'tell you me, tell you me, tell you me, tell you me if you lega-legalize him',\n", + " 'lega-legalize him, lega-legalize him',\n", + " 'tell you me, tell you me, tell you me, tell you me if you lega-legalize him',\n", + " 'lega-legalize him, lega-legalize him',\n", + " 'tell you me, tell you me, tell you me, tell you me if you lega-legalize him',\n", + " 'lega-legalize him, lega-legalize him',\n", + " 'i want to rammande',\n", + " 'mando in fumo denaro perché sono un castaman',\n", + " 'io mando in fumo denaro pure con la canasta al bar',\n", + " \"lo champagne, la pelliccia d'astrakan\",\n", + " 'a chi mi chiede come si fa dico che basta amar',\n", + " 'ed io amo fare il premier, mi gasa come perrier',\n", + " \"quand'ero bambino vestivo come un manichino dell'atelier\",\n", + " 'avevo le bburago, vetri scuri e chauffeur',\n", + " 'otto babysitter con auricolari e tailleur',\n", + " 'ed alla scuola elementare, furbetto e lesto',\n", + " 'trafficavo sotto banco quello e questo',\n", + " 'una volta condannato ricorrevo in appello',\n", + " 'poi venivo protetto dal mio gran maestro',\n", + " 'divenuto adolescente la prima intuizione',\n", + " \"ogni capo deve avere un capo d'imputazione\",\n", + " 'sono un presidente in erba ma me ne fotto della maria',\n", + " 'perché io lotto ma per la mia legalizzazione',\n", + " 'legalize (lega-legalize him)',\n", + " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", + " 'legalize (lega-legalize him)',\n", + " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", + " 'sensimilla e ganja no, ma il mio seme spargerò',\n", + " 'io mi legalize (lega-legalize him)',\n", + " 'pratico lo sport e non mi fermo mai, man',\n", + " 'gare offshore alle isole cayman',\n", + " 'scalo le spa, non il mont blanc',\n", + " 'e salgo di livello come un super saiyan',\n", + " 'mi atteggio da messia ma non mi fido di pietro',\n", + " 'io mi fido solo di chi dice: \"firmo il decreto\"',\n", + " 'ma se vengo più indagato di pedine a cluedo',\n", + " 'rimangio tutto come un ruminante nel carrubeto',\n", + " 'così ricco che i miei soldi io li do alle fiamme',\n", + " 'li do alle fiamme, le fiamme gialle',\n", + " 'invece di arrestarmi, saltano alle spalle',\n", + " 'di chi ha la piantagiona come bobbe malle',\n", + " 'chi mi accusa di tangente diventa secante',\n", + " 'chi doveva stare zitto diventa squillante',\n", + " 'ma vado dal mio medico curante',\n", + " 'che mi prescrive più di un antimicotico per il glande',\n", + " 'legalize (lega-legalize him)',\n", + " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", + " 'legalize (lega-legalize him)',\n", + " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", + " 'sensimilla e ganja no, ma il mio seme spargerò',\n", + " 'io mi legalize (boomba, sienteme a me)',\n", + " 'pasta and mandolino plus nuff party at ciampino (oh)',\n", + " 'me bigga than the pope and redda than cremlino',\n", + " 'me buy out italy, me have a deep borsellino',\n", + " \"i'm the hypest prime minister, hyper than al pacino\",\n", + " 'some people call me dumb, some call me malandrino',\n", + " \"of the likkle politicians i'm the real principino\",\n", + " 'me gnam the biggest food, plus biscotti del mulino',\n", + " 'and the youngest set a gal them call me ercolino (legali-li-li-)',\n", + " 'hasta! me no finish yet',\n", + " 'me want a tv station so me buy that',\n", + " 'me want a football team so me buy that',\n", + " 'and if me break the law, me change that',\n", + " \"and nobody can say nothin' to bomboclaat\",\n", + " \"i'm uplifted and so charmin' and me belly phat\",\n", + " 'and me link up with the crème of america',\n", + " 'so me buy left and right, so me account never dry',\n", + " 'so me buy, buy, buy, then me bye, bye, bye',\n", + " 'legalize (legalize)',\n", + " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", + " 'legalize (legalize)',\n", + " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", + " 'sensimilla e ganja no, ma il mio seme spargerò',\n", + " 'io mi legalize',\n", + " 'ora che sei castaman hai caste amanti',\n", + " 'hai qualche minorenne nei tuoi tanti party',\n", + " 'mai sposarti ma fai tagli ai nastri',\n", + " 'delle intercettazioni per i grandi appalti',\n", + " 'e se capita che un giorno starai male male',\n", + " 'vedrai leccaculo al tuo capezzale',\n", + " 'darai una buona parola per farli entrare',\n", + " 'nel tuo paradiso fiscale',\n", + " '*cori angelici*',\n", + " 'me lo ripeto in testa giusto per non dormire',\n", + " 'resta sveglio perché il meglio deve ancora svanire',\n", + " 'per poi sognare un altro modo per potersi rialzare',\n", + " 'come la pioggia che cade senza mai farsi male',\n", + " '\"da dove siete usciti?\", dice una voce incerta',\n", + " 'non lo so, ma siamo entrati da una ferita aperta',\n", + " 'le cicatrici dicono di starcene fra i deboli',\n", + " 'parliamo col linguaggio dei segni indelebili',\n", + " \"come ieri, tu non c'eri\",\n", + " 'disturbi ereditari, sfortunati ereditieri',\n", + " 'perché spesso chi ti giudica è il primo che poi ti trucida',\n", + " 'quando lanciare un sasso vale più di una supplica',\n", + " 'ci hanno detto: \"non è tutto oro ciò che luccica\"',\n", + " \"ma l'hanno detto perché è tutto loro ciò che luccica\",\n", + " 'ora voglio gridare fortissimo',\n", + " 'la vita fa schifo, il panorama è bellissimo',\n", + " \"it's a beautiful disaster\",\n", + " \"it's a beautiful disaster\",\n", + " \"i get this feeling i can't miss\",\n", + " \"you're getting harder to resist\",\n", + " 'and maybe by the time i know',\n", + " \"it'll be too late to let you go\",\n", + " 'who knew my heart could beat so quick',\n", + " 'my life i gave away for this',\n", + " \"don't care what anybody sees\",\n", + " \"i know i'm doing this for me\",\n", + " 'prendo quei pezzi di vita che ho vissuto per sbaglio',\n", + " 'e li cambio in emozioni di piccolo taglio',\n", + " 'chi vive sempre e comunque, chi vive chiuso in un bunker',\n", + " \"chi vive sotto la luce e vede l'inizio del tunnel\",\n", + " 'io con il cuore di pietra, tu con la coda di paglia',\n", + " 'stanchi di nascondere la testa sotto la rabbia',\n", + " 'mangiare la polvere, condirsi la terra',\n", + " 'noi che cerchiamo la pace a costo di farvi la guerra',\n", + " 'con ventiquattro mila baci probabilmente giuda ci avrebbe sterminati',\n", + " 'sentirsi inadeguati, sentirsi uno dei tanti',\n", + " \"l'occasione persa fa l'uomo ladro di rimpianti\",\n", + " \"rapaci nati con l'animo colpevole\",\n", + " 'denuncia la tua vita per felicità ingannevole',\n", + " 'a tutti noi cresciuti dentro camere oscure',\n", + " 'dove ogni stronzo mente, la verità pure',\n", + " \"it's a beautiful disaster\",\n", + " \"it's a beautiful disaster\",\n", + " \"i get this feeling i can't miss\",\n", + " \"you're getting harder to resist\",\n", + " 'and maybe by the time i know',\n", + " \"it'll be too late to let you go\",\n", + " 'who knew my heart could beat so quick',\n", + " 'my life i gave away for this',\n", + " \"don't care what anybody sees\",\n", + " \"i know i'm doing this for me\",\n", + " 'i can be your butterfly',\n", + " 'love you so hard that i could die',\n", + " 'well, i can make it worth it all',\n", + " 'what a beautiful way to fall',\n", + " \"it's a beautiful disaster\",\n", + " 'beautiful disaster',\n", + " \"i get this feeling i can't miss\",\n", + " \"you're getting harder to resist\",\n", + " 'and maybe by the time i know',\n", + " \"it'll be too late to let you go\",\n", + " 'who knew my heart could beat so quick',\n", + " 'my life i gave away for this',\n", + " \"don't care what anybody sees\",\n", + " \"i know i'm doing this for me\",\n", + " 'beautiful disaster',\n", + " \"it's a beautiful disaster\",\n", + " 'life on the earth is not fun anymore',\n", + " 'bitches fighting bitches like a world war',\n", + " \"what's your name?\",\n", + " 'she looks so young, she wants cocaine',\n", + " 'per quanto ti amo cancello tinder',\n", + " \"c'è chi cucina, c'è chi pulisce\",\n", + " 'per quanto ti amo mi prostituisco',\n", + " 'ho più paura di una troia che del terrorismo',\n", + " 'ho un problema con la droga e con il turismo',\n", + " 'vado in vacanza in colombia e poi mi trasferisco',\n", + " 'per quanto ti amo mi trasferisco',\n", + " 'mi fa paura più la droga che il terrorismo',\n", + " \"c'ho problemi con 'sta troia e con il turismo\",\n", + " 'vado in vacanza in colombia e mi prostituisco',\n", + " \"hey, hey, hey, what's your name?\",\n", + " 'she looks so young, she wants cocaine',\n", + " \"ah, it's ok. ah, it's ok\",\n", + " \"hey, hey, hey, what's your name?\",\n", + " 'she looks so young, she wants cocaine',\n", + " \"what's your name?\",\n", + " 'sto per dirti qualcosa di ridicolo',\n", + " 'per quanto ti amo ti compro il gianicolo',\n", + " 'per quanto ti amo ti compro il gianicolo',\n", + " 'per quanto ti amo ti compro il gianicolo',\n", + " \"what's your name?\",\n", + " \"what's your name? what's your name?\",\n", + " \"hey, hey, hey, what's your name?\",\n", + " \"what's your name? what's your name?\",\n", + " 'life on the earth is not fun anymore',\n", + " 'fun anymore, fun anymore, fun anymore',\n", + " 'fun anymore, fun anymore, fun anymore',\n", + " 'ztk, vandals inside',\n", + " 'tutto il mio crew, man',\n", + " '(exclusive!)',\n", + " 'te smonto especially quando conto',\n", + " 'te lascio perplesso',\n", + " 'like benassa the glassa sconnesso',\n", + " \"adesso, 'cause my man got fretta, vendetta\",\n", + " 'sulle panchine la tua testa rotta',\n", + " 'che infetta le tue pussy esclusive',\n", + " 'esilio like solo rime sieropositive',\n", + " 'bravo rossa pick me up mega',\n", + " 'my boys jump high when i say bodega',\n", + " 'mi frega, il nostro mostro ad incastro',\n", + " 'ti strega, riavvolgi il nastro, the next canestro, un destro',\n", + " 'my man furetti the maestro',\n", + " 'a testaccio, ti rintraccio, alley-oop di loris quando schiaccio',\n", + " 'i do the mafia, te scucio la kefiah',\n", + " 'i fuck with sushi, i do cocaine with john belushi',\n", + " 'ti strusci, when i got droghe da sniffare',\n", + " 'cole, chicoria, gemello a.k.a. \"the gemellare\"',\n", + " '25 a settimana, da assaggio a acchittata',\n", + " 'una linea che non va sorpassata',\n", + " 'oltrepassata calcolo veloce come un computer',\n", + " 'un lavoro truce come il pusher',\n", + " 'matematica materia scolastica insegnata',\n", + " \"l'unica che uso in pratica\",\n", + " 'moltiplicazioni di notti insonni',\n", + " \"passando a rincore' 'sti milioni\",\n", + " \"che c'hai nei pantaloni?\",\n", + " 'svuota la tasca e capovolgila',\n", + " \"fai la figura dell'idiota\",\n", + " 'te ne do la prova',\n", + " 'se cerchi la droga',\n", + " 'chi cerca trova',\n", + " 'cerca, cerca, cerca bene',\n", + " \"pe' me potemo stacce un mese\",\n", + " \"intero, pe' davero\",\n", + " 'io col gemello e benassa',\n", + " 'la meglio mollazza, più il cole',\n", + " 'ciò che la gente non vuole',\n", + " 'truceboys, truceklan, in the panchine',\n", + " \"noi c'avemo le meglio rime\",\n", + " \"'e più gonfie le bustine\",\n", + " 'se il mio pasto non venisse dal crimine',\n", + " 'io a voi, non ve lascerei nemmeno le briciole',\n", + " 'got hip hop, lucio fulci',\n", + " 'put diamanti on my bara',\n", + " \"don't stay close to me\",\n", + " 'when i trip mario bava',\n", + " 'the whip and the body',\n", + " 'try to fix my nodi',\n", + " 'nobody is like my baby stickly chiodi',\n", + " 'from sado to maso, i got carichi pendenti',\n", + " 'plus film escrementi with sangue redenti',\n", + " 'mettimi il j from my immagini sacre',\n", + " 'when i go out, i gonna leave the massacre',\n", + " 'i stay in the panchine far away from problemi',\n", + " 'you stay in your place i got metodi estremi',\n", + " 'cole benassa, put you in the cassa',\n", + " 'gmellow chicoria, ammonia and the roccias',\n", + " 'bravo rossa, i pick you up mega',\n", + " 'push up al crew fast like the moto in piega',\n", + " 'veteranos mix your shit for the scena',\n", + " 'i stay in front of you like nema problema',\n", + " 'benassa! yes benassa!',\n", + " 'oh shit we forget of benassa!',\n", + " 'not me stronzo, i kill you bonzo',\n", + " \"fuck'd up in assenzio, silenzio shh\",\n", + " 'smell of incenso durante il tuo incesto',\n", + " 'ti detesto, i wanna be pretesto',\n", + " 'come noyz ti molesto, nel cesso, without nesso',\n", + " 'i got sconnesso',\n", + " 'you say stronzate, like a palate',\n", + " 'chilati de dosi de eroina',\n", + " \"io mi buco solo co' la stricnina\",\n", + " 'like a vagina cosparsa de cocaina',\n", + " 'te do la caccia come un setter',\n", + " 'anche berlusconi is a gangsta rapper',\n", + " 'i met-tri with the dado',\n", + " 'my only story is only sado-maso',\n", + " 'peace to my man gel, corrado',\n", + " '(exclusive)',\n", + " 'street king man',\n", + " \"siete all'ascolto del machete mixtape volume due\",\n", + " 'salmolebon',\n", + " 'belzabass',\n", + " 'yeh, yeh, yeh, yeh',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up',\n", + " 'yeah, ah',\n", + " 'con questa boccia di vodka potrei ballare samba',\n", + " 'soffio nel palloncino, la festa dei caramba',\n", + " 'apro il portabagagli, a saperlo',\n", + " 'ci mettevo un serpente a sonagli, un black mamba',\n", + " 'aggiornati sui termini chiede se ho bamba',\n", + " 'sembri un tipo a posto, un tipo in gamba',\n", + " 'eh, insomma, non sono mica un terrorista',\n", + " 'anche se in tasca ho una bomba',\n", + " 'fate turni di ronda, solo sbirri in giro, è notte fonda',\n", + " 'vuoi levarmi la patente per mezza bionda',\n", + " 'chiede qual è il mio mestiere (il musicista)',\n", + " 'ride come fosse un dovere (oh)',\n", + " 'e allora sono un anticonformista e in due sere',\n", + " 'lo stipendio di un carabiniere e di un finanziere messi insieme (ah-ah)',\n", + " 'puoi prestarmi il cappello che poi',\n", + " 'ho bisogno della fiamma per accendermi il joint',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up',\n", + " 'yeah',\n", + " 'apro la busta perché',\n", + " 'ho saputo da maria che \"c\\'è posta per me\"',\n", + " 'potresti rovinarmi e mandarmi in clinica',\n", + " \"levarmi l'appetito e la fame chimica (bu-bu-bu)\",\n", + " 'fumo sali da bagno, almeno così',\n", + " 'vengo a mangiarti la faccia come eugene (eugene)',\n", + " \"per voi è routine, fammi 'sta perquisa\",\n", + " 'quando fumo mi trasformo in un mostro come arisa',\n", + " \"faccio arrivare un pacco bomba dall'alabama\",\n", + " 'supera i raggi-x della dogana',\n", + " \"ti preparano il blitz 'sti figli di puttana\",\n", + " 'portati il paracadute perché saltiamo in aria',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", + " 'if my train goes off the track',\n", + " 'pick it up, pick it up, pick it up',\n", + " 'bleah',\n", + " 'sex, sex',\n", + " 'sex, sex',\n", + " 'sex, sex',\n", + " 'sex, sex',\n", + " 'sick luke, sick luke',\n", + " 'ti offro un drink, via da qui',\n", + " 'uber drive, limousine',\n", + " \"rock'n’roll nella suite\",\n", + " \"metti l'ice, togli i jeans\",\n", + " 'sex, sex, sex on the beach',\n", + " 'con la dark va così',\n", + " 'sex, sex, sex on the beach',\n", + " 'nuovo ice, nuovi jeans',\n", + " 'sex, sex, sex on the beach',\n", + " 'sex, sex, sex on the beach',\n", + " 'sex, sex, sex on the beach',\n", + " 'nuovo ice, nuovi jeans',\n", + " 'tony',\n", + " 'vieni, ti ho scelto (okay)',\n", + " 'oggi ti porto a letto',\n", + " 'è tardi, fai presto',\n", + " 'la uso e poi la getto',\n", + " 'lei dice sempre: \"sì\" (uh)',\n", + " 'vuole me, ma è una bitch (bitch)',\n", + " 'nuovo ice, nuovi jeans (ice)',\n", + " 'la nostra vita è un film (ehi, ehi, uoh)',\n", + " 'sex, sex, sex on the beach',\n", + " 'sex, sex, sex on the beach',\n", + " 'sex, sex, sex on the beach',\n", + " 'nuovo ice, nuovi jeans',\n", + " 'mi offre un drink, via da qui',\n", + " 'uber drive, limousine',\n", + " \"rock'n’roll nella suite\",\n", + " \"metti l'ice, togli i jeans\",\n", + " 'sex, sex, sex on the beach',\n", + " 'con la dark va così',\n", + " 'sex, sex, sex on the beach',\n", + " 'nuovo ice, nuovi jeans',\n", + " 'sex, sex, sex on the beach',\n", + " 'sex, sex, sex on the beach',\n", + " 'sex, sex, sex on the beach',\n", + " 'nuovo ice, nuovi jeans',\n", + " 'volo sopra un jet, no economy (no economy)',\n", + " 'non voglio la tua tipa, no economy (no basic)',\n", + " 'lei mi offre un drink, andiamo via da qui',\n", + " 'sex, sex on the beach',\n", + " 'estate calda, bollente (hot, hot)',\n", + " 'troppo ghiaccio, ho la febbre (ecciù)',\n", + " 'lei si connette come il bluetooth',\n", + " 'ho una nuova auto, fa \"skrrt-skrrt\"',\n", + " 'bella hadid, amiri jeans',\n", + " 'giuro che mi sento come justin',\n", + " 'iced out, rischio di affogarmi',\n", + " 'vvs1 tutti i miei diamanti',\n", + " 'sex, sex, sex on the beach',\n", + " 'lei dice sempre sì',\n", + " 'sex, sex, sex on the beach',\n", + " 'nuovo ice, nuovi jeans',\n", + " 'mi offre un drink, via da qui',\n", + " 'uber drive, limousine',\n", + " \"rock'n'roll nella suite\",\n", + " \"metti l'ice, togli i jeans\",\n", + " 'sex, sex, sex on the beach',\n", + " 'con la dark va così',\n", + " 'sex, sex, sex on the beach',\n", + " 'nuovo ice, nuovi jeans',\n", + " 'sex, sex, sex on the beach',\n", + " 'sex, sex, sex on the beach',\n", + " 'sex, sex, sex on the beach',\n", + " 'nuovo ice, nuovi jeans',\n", + " \"portatemi i vostri soldi che convinco un'amica\",\n", + " 'e ci trascorro un mese disteso alla deriva',\n", + " 'quando tornerò a casa racconterò agli amici',\n", + " 'che il mondo è solo danno, rimpianti e sacrifici',\n", + " 'e sacrifici, e sacrifici, e sacrifici, e sacrifici',\n", + " 'e sacrifici, e sacrifici, e sacrifici, e sacrifici',\n", + " 'vote who you want daddy',\n", + " 'but you can vote who you want daddy',\n", + " 'you can vote who you want daddy',\n", + " 'but you can vote who you want daddy',\n", + " 'but your money belongs to jd',\n", + " 'but your money belongs to jd',\n", + " 'but your money belongs to jd',\n", + " 'but your money belongs to jd',\n", + " 'ah!',\n", + " \"quann' facc' rap 'o frat' vac in overdose\",\n", + " \"cos cos cos cos cos 'o frat cos'?\",\n", + " \"quann' facc' rap 'o frat' a capa na rapos'\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"quann' facc' rap 'o frat' so' pericolos'\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"(cos cos cos cos cos o'frat cos'?)\",\n", + " 'viviamo tra pareti che si chiudono e tu in mezzo (ahh)',\n", + " 'uso il rap apposta per non fare il tipo grezzo',\n", + " 'super funk in una busta sound pittoresco',\n", + " 'un lavoratore col datore disonesto',\n", + " \"ma sta metropolitan a vint' an'n scavat'\",\n", + " \"ma 'a stat' facenn'\",\n", + " \"o 'a stat' cercann'?\",\n", + " \"'o stat' c'ingann'\",\n", + " \"ma quant' pigliamm'?\",\n", + " \"tre nummer' pu' banculott' che ca' nun c'stamm'\",\n", + " \"rint' i post staj facend' 'a fila a quattr' semman'\",\n", + " \"stamm' april' ma me vuless' fa' natal' a cas'\",\n", + " \"rint' 'e trasmission' fra' ce' stann' e criminal'\",\n", + " \"quirinale, viminale e tutt'italia che 'rinal'\",\n", + " \"guardo 'a television', so' tutt' ugual'\",\n", + " \"'sti programm' aro' se chiagne, pur' se mor' a zanzara\",\n", + " \"na' città che sta incazzat', ch'ha 'chiappat' mazzat'\",\n", + " \"'o sang' 'e san gennaro a stu gir' s'è ghiacciat'! (mamm' e che fridd!)\",\n", + " 'ah!',\n", + " \"quann' facc' rap 'o frat' vac in overdose\",\n", + " \"cos cos cos cos cos 'o frat cos'?\",\n", + " \"quann' facc' rap 'o frat' a capa na rapos'\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"quann' facc' rap 'o frat' so' pericolos'\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"(cos cos cos cos cos o'frat cos'?)\",\n", + " \"tu nun hai fatt a'manovr', hai fatt' 'a retromarc'\",\n", + " \"ma n'hai guardat' 'u specchiett', e aret' a chist è schiacc'\",\n", + " \"ta racuord' 'e sta città tra mandulin' è limun'\",\n", + " \"e c'hai lasciat' int' 'a giungla, ma n'hai pavat' l'imu?\",\n", + " \"fridd' comm' l'igloo pur' se 'u sol' è sicur'\",\n", + " \"tu tien' 'a facc' è c**** rap ca' facc' paur'\",\n", + " \"ehi pur' tu nata carta conosciut'\",\n", + " \"'na vacanza addo' 'sto mar' 'u vir' ancor' tutt' scur'\",\n", + " \"ngopp' a sti muntagn', sull' fiamm', sull' tanf'\",\n", + " 'hai magnat\" e t\\'ha liccat\\' e baff\\' \\'o frat\\' fatt\\' \\'u selfie',\n", + " \"mentr' car' 'o cornicione a galleria\",\n", + " \"ver' chiù mangià rint' 'a tv ca dint' tutt' 'o frig' mij\",\n", + " 'internet è nato a napoli e lo sai',\n", + " \"dalle signore sui balconi 'nciucio web wifi\",\n", + " \"come pino e troisi part' ro' nient' 'o frat'\",\n", + " \"e come alessandro siani 'na risat' c'ha semp' salvat'! (te voglio fa' capì)\",\n", + " 'ah!',\n", + " \"quann' facc' rap 'o frat' vac in overdose\",\n", + " \"cos cos cos cos cos 'o frat cos'?\",\n", + " \"quann' facc' rap 'o frat' a capa na rapos'\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"quann' facc' rap 'o frat' so' pericolos'\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"(cos cos cos cos cos o'frat cos'?)\",\n", + " \"ramm' 'o tiemp' che t' faccio capì fra' qual è 'o problem'\",\n", + " \"masterchef, 'o mar' ca è velen'\",\n", + " \"ngopp 'o beat certament' spir' tant' sentiment'\",\n", + " \"tutt' boss, buc' 'n front', tutt' salvator' cont'\",\n", + " \"rat' c' 'na man' pe' n'asci'\",\n", + " \"part' ra luntan' a' casa mi'\",\n", + " \"ca cap' rint' 'o sol c'asciuttamm'\",\n", + " \"fratelli' tu sai mo ch'aspettamm'\",\n", + " \"è nu' miracol' pa' gent'\",\n", + " \"signo' tien' m' present'\",\n", + " \"fall' pe' chi mo' t' sta senter' ma 'o mezz' sa rallent'\",\n", + " \"è nu' miracol pa' gent'\",\n", + " \"signo' tien'm present'\",\n", + " \"fall' pe' chi mo t' sta senter ma tutt' sa rallent'\",\n", + " 'ah!',\n", + " \"quann' facc' rap 'o frat' vac in overdose\",\n", + " \"cos cos cos cos cos 'o frat cos'?\",\n", + " \"quann' facc' rap 'o frat' a capa na rapos'\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"quann' facc' rap 'o frat' so' pericolos'\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"cos cos cos cos cos o'frat cos'?\",\n", + " \"(cos cos cos cos cos o'frat cos'?)\",\n", + " 'non per la politica dovete odiarmi',\n", + " 'non per la voce nasale',\n", + " 'ma per questo pezzo',\n", + " 'adesso avete un motivo, avete un motivo! (ahah)',\n", + " 'in fight club edward norton ha le turbe',\n", + " 'non esiste nessun tyler durden',\n", + " 'in shutter island di caprio è un malato mentale',\n", + " 'capace di architettare trame assurde',\n", + " 'nel sesto senso bruce willis è un morto',\n", + " 'nelle 12 scimmie è il morto',\n", + " '\"ehi ragazzi ma che fine ha fatto bruce willis?',\n", + " 'sapete se un film è in porto?\"',\n", + " 'the others: sono loro gli spettri!',\n", + " 'beh, dopo il sesto senso cosa cazzo ti aspetti?',\n", + " 'hai presente kevin spacey? (sì!)',\n", + " 'bene, è lui kaiser souse nei soliti sospetti! (no)',\n", + " 'serial killer di se7en? kevin spacey!',\n", + " 'cattivo di superman? kevin spacey!',\n", + " 'perfetto criminale? kevin spacey!',\n", + " \"''ho capito, non c'è bisogno che mi stressi!''\",\n", + " 'and the winner is kevin spacey!',\n", + " 'two time academy award kevin spacey is coming back to the big screen this week',\n", + " 'and the winner is kevin spacey!',\n", + " 'kevin spacey, kevin, kevin, kevin, kevin spacey',\n", + " \"l'enigmista è il cadavere della prima scena (no)\",\n", + " 'nel codice da vinci il graal è la maddalena (no)',\n", + " 'blair witch project non è una storia vera (no)',\n", + " 'decidi tu se ne vale la pena',\n", + " 'io & marley? alla fine il cane muore',\n", + " 'nel film hachiko (hachiko) il cane muore',\n", + " 'bruce willis in the jackal muore (e te pareva)',\n", + " 'come il cinema col cinepanettone',\n", + " \"in profondo rosso l'assassino è la madre\",\n", + " \"in psycho norman è l'assassino della madre\",\n", + " 'se ti interessa il genere ti basterà guardare',\n", + " 'porta a porta, primo canale',\n", + " 'in sid & nancy sid uccide nancy',\n", + " \"'sti decessi, sempre lì nei cessi\",\n", + " 'il colonnello di american beauty è gay, sì',\n", + " 'ed uccide kevin spacey!',\n", + " 'and the winner is kevin spacey!',\n", + " 'kevin spacey blitz',\n", + " 'and the winner is kevin spacey!',\n", + " 'senti, se ti infastidisco skippa e vai oltre',\n", + " \"sentiti 'sto disco o skippa e vai oltre\",\n", + " 'non hai visto star wars? dai, forte!',\n", + " 'darth vader è il padre di luke skywalker',\n", + " 'e il mago di prestige ha un gemello',\n", + " 'the game non è un tranello, è un gioco del fratello',\n", + " 'la moglie del soldato ha il pisello',\n", + " 'e bruce willis muore in armageddon',\n", + " 'passione di cristo? pensione di gibson',\n", + " 'è un robot quello messo sul crocifisso',\n", + " 'ti disturba? beh, a me disturba che la trama',\n", + " 'di disturbia sia la stessa di hitchcock',\n", + " 'il curioso caso di benjamin button',\n", + " 'lo vedi al contrario ed è un film come un altro',\n", + " 'ma... ma... ma che ti aspettavi ti dicessi?',\n", + " '\"and the winner is kevin spacey!\"',\n", + " 'and the winner is kevin spacey!',\n", + " \"this is kevin spacey's second academy award\",\n", + " 'he won an oscar in 1995 for supporting role in the usual suspects',\n", + " 'and the winner is kevin spacey!',\n", + " 'kevin spacey',\n", + " 'dopo di che, penso che non ne sentirete mai più parlare',\n", + " 'pick up the phone',\n", + " \"i'm calling the plug\",\n", + " 'you know the plug, provides me the drugs, fuck with a thug',\n", + " \"i can't fuck with no frauds\",\n", + " 'my bitch on diet. she snortin the coke. pick up the phone',\n", + " \"i'm calling the plug\",\n", + " 'you know the plug, provides me the drugs, fuck with a thug',\n", + " \"i can't fuck with no frauds\",\n", + " 'my bitch on diet. she snortin the coke...',\n", + " 'sei di mattina col plug!',\n", + " 'mi chiede \"perché mi tradisci?\"',\n", + " 'lei non sa chi sia il plug',\n", + " 'sei solo una troia che cazzo capisci',\n", + " 'mi danno del misogino, mi sento bocconi',\n", + " 'vieni visto come un delinquente quando ti opponi',\n", + " 'attualmente sposato col money, money money money',\n", + " 'ragazzi di strada per strada appendiamo le scarpe al posto dei panni',\n", + " 'il mio plug si chiama julio',\n", + " 'io fotto con i plug messicani',\n", + " 'oscar continua a chiamarmi',\n", + " 'lui è il plug per le armi',\n", + " 'un saluto ai miei plug africani',\n", + " 'mi fido di loro per rivotrill',\n", + " 'scarcerate mio fratello, e scarcerate pure timothy',\n", + " 'big up al mio plug per la ganja',\n", + " 'direttamente dalla francia',\n", + " 'scende sempre con la prome la mischiamo con la fanta',\n", + " 'la mia bitch sniffa bamba, la mia bitch sniffa bamba',\n", + " 'bianca come la barba di gandalf',\n", + " 'un saluto al mio plug che la manda',\n", + " 'pick up the phone',\n", + " \"i'm calling the plug\",\n", + " 'you know the plug, provides me the drugs, fuck with a thug',\n", + " \"i can't fuck with no frauds\",\n", + " 'my bitch on diet uh she snortin the coke, pick up the phone',\n", + " \"i'm calling the plug\",\n", + " 'you know the plug, provides me the drugs, fuck with a thug',\n", + " \"i can't fuck with no frauds\",\n", + " 'my bitch on diet. she snortin the coke...',\n", + " 'she snortin the coke uh. she snortin the coke',\n", + " 'pick up the phone bitch',\n", + " 'calling the plug',\n", + " \"i'm calling the plug nigga\",\n", + " \"i'm calling the plug\",\n", + " \"it's lit, mh!\",\n", + " 'check-check it, real recognize real',\n", + " 'ztk, truceklan',\n", + " 'chicoria, g-mellow, noyz',\n", + " 'se fumamo tutta la skunk',\n", + " 'deadly combination',\n", + " 'benassa (pow, pow), cole, pow-pow check it',\n", + " 'fanculo tutto, ah, ah',\n", + " 'ti devasta itp, check it',\n", + " 'two thousand and four, traffik records',\n", + " 'il pusher più trucido',\n", + " 'oh, check it esclusivo',\n", + " 'uno sparo nel culo di chi parla di quello che scrivo',\n", + " 'gundeleros, we do the patto di sangue',\n", + " 'with my man g-mellow we still smoking piante',\n", + " 'get borbuka sell out from commercio',\n", + " 'show you talento play like suono marcio',\n", + " 'benetti, noyz, carter, gel, kimo, chico',\n", + " 'g-mellow, benassa the glassa amico',\n", + " \"truceklan con l'esercito affiliato\",\n", + " 'colpo di stato, fiamme nel commissariato',\n", + " 'in the panchine, baby, say what?',\n", + " 'sex every day, why not?',\n", + " 'in the audi, too fast for polizia',\n", + " 'show me paletta, i disappear, santa maria',\n", + " 'chilling with tarango, sto fatto al mare',\n", + " 'peace to santino, (man) che te lo dico a fare?',\n", + " 'er pusher più trucido: mariuccio de \"amore tossico\"',\n", + " \"l'anni '70 co' 'na spada tra 'e braccia conficcata (ah)\",\n", + " \"e la pezza de brown che nun t'accanna\",\n", + " \"'na rapina pe' ventimila, c'era ancora 'a lira\",\n", + " 'pistole puntate non le far sparare',\n", + " 'cesare e compare',\n", + " \"usciti dal ser.t vonno i soldi pe' 'l dessert\",\n", + " '38 e 7 sessantacinque',\n", + " \"su 'a tempia te la spinge (dai, dai)\",\n", + " 'er fero è freddo',\n", + " \"ma brucia quanno te manna all'inferno\",\n", + " \"mo so' io che all'angolo discuto\",\n", + " \"pe' tera sputo, non ti illudo\",\n", + " 'il lavoro più lurido',\n", + " 'trarmi in arresto, togliermi di mezzo',\n", + " 'hai fatto peggio',\n", + " \"adesso so' tre come me sur cemento\",\n", + " \"un mare do' marcia er piede\",\n", + " 'e nulla, nulla devi chiedere',\n", + " 'te lo ricordo, non me, stronzo',\n", + " \"i'll be sordo when i stay sbronzo\",\n", + " 'from parioli borough to torre maura squad',\n", + " 'we do mafia with borbuka stock',\n", + " 'benassa the glassa, truceklan rappresenta',\n", + " 'we be the infamous like nane rape chi si lamenta',\n", + " 'come una corona di spine che ci tenta',\n", + " 'in the panchine, the boys of roma violenta',\n", + " 'senza sentenza, we are going to the hell',\n", + " 'figli della violenza like luis buñuel',\n", + " 'we sell morfina a bela lugosi with cocaina',\n", + " 'we mix the dosi like chicoria and g-mellow',\n", + " 'we are mafiosi, in this jungle you are lost',\n", + " 'cole, fulci, sodoma ghost',\n", + " 'i wanna be a rockstar',\n", + " 'i wanna be a crackstar',\n", + " 'i wanna be, itp ti devasta',\n", + " ...]},\n", + " 'data': ['basta, nessuna ipocrisia',\n", + " 'i lupi non ballano più, non ballano nella prateria',\n", + " 'basta, nessuna ipocrisia',\n", + " 'oggi nella prateria ammazza la gente la polizia',\n", + " 'si muore per la strada col fucile nella mano',\n", + " 'ma questo non si dice questo è poco hollywoodiano',\n", + " 'in galera per la vita per difendere un sentiero',\n", + " 'non ci fermerete mai, non si ferma mai un guerriero',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'gente a’ ge’ venite a cca’',\n", + " 'nun vennite ’a storia',\n", + " 'sul sentiero di guerra',\n", + " 'oggi come allora',\n", + " 'gente a’ ge’ voglio allucca’',\n", + " 'finacché so’ vivo ancora',\n", + " 'è preziosa ’a libertà',\n", + " 'ma vale assaje e cchiù ’a memoria',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'gli spiriti senza pace di coloro che morirono invano',\n", + " 'che accantonarono le leggi dell’uomo abbastanza a lungo',\n", + " 'da permettere alla loro coscienza di essere la loro guida',\n", + " 'oggi chiedono la comprensione di tutto il mondo',\n", + " 'c’è una nazione che sta morendo',\n", + " 'la cui sacralità è stata tradita, sfruttata, svenduta',\n", + " 'da chi non la rispettava, né la capiva',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'no way, the black hills are not for sale',\n", + " 'good pretesto, droga pesante for antipasto',\n", + " 'in front of carrarmato remix this manifesto',\n", + " 'fat dj gorilla, light up the scintilla',\n", + " 'i shut-up your sister mentre si dimena, strilla',\n", + " \"goa stolen gemello, shit-man, i don't forget\",\n", + " 'loris do guardiano, i trip with ketavet',\n", + " 'respect me and mi familia primo',\n", + " 'respect in the panchine, respect dj kimo',\n", + " 'i stay away from campo di fave gay',\n", + " \"i need frangetta i'm the pussy-sensei\",\n", + " 'pussy fastidiosa je frantumo la mucosa',\n", + " 'i make fall love four bitches under bridge acquacetosa',\n", + " 'we are teppisti, we trust in the obelischi',\n", + " 'we sniff droga on the top of giradischi',\n", + " 'mischio roba buona con roba da equino',\n", + " 'k-hole in centocelle near forte prenestino',\n", + " 'your destino, i control the burattino',\n", + " 'i stolen the piante down in the sgabuzzino',\n", + " 'with tarango i eat pizza in the obitorio',\n", + " 'we sell pillolette at the consultorio',\n", + " 'a mortorio, we fishing with the esplosivo',\n", + " 'we put some psicofarmaco in your aperitivo',\n", + " 'i do calzino appizz, carabinieri blitz',\n", + " 'ciampino get away, with tozzi in via ritz',\n", + " 'mi zona, we gossip from the quartiere',\n", + " 'mama is in the street, dad is a contrabbandiere',\n", + " 'better than carabiniere, fuck the piedipiatti',\n", + " \"never do the spia, 'cause i kill you mentecatti\",\n", + " 'mi zona, we gossip from the quartiere',\n", + " 'mama is in the street, dad is a contrabbandiere',\n", + " 'better than carabiniere, fuck the piedipiatti',\n", + " \"never do the spia, 'cause i kill you mentecatti\",\n", + " 'piove a dirotto (merda), mi riparo sotto la tettoia',\n", + " 'gente come me, sempre in cerca de rogna',\n", + " 'sguazza nella fogna',\n", + " \"co' un piede appoggiato al muro e l'altro sull'asfalto\",\n", + " 'scompaio quando è troppo caldo',\n", + " \"come quanno ero rimasto l'unico pusher romano al villaggio\",\n", + " \"autunno '97\",\n", + " 'un circolo di serie che non rivedrò più',\n", + " 'johnny manco fumava, gli faccio il tè con la marijuana',\n", + " 'saluto mamma, faccio bagagli',\n", + " 'ad amsterdam sto per arrivarci',\n", + " \"sai che al bakker's teg, homegrown fantasy man\",\n", + " \"scenno da casa mia, c'ho 'na puttana in vetrina\",\n", + " \"diciassett'anni, venti metri quadrati, in dieci ammucchiati\",\n", + " \"diciassett'anni, in dieci ammucchiati\",\n", + " \"uno accanto all'altro, addormentati\",\n", + " 'mi zona, we gossip from the quartiere',\n", + " 'mama is in the street, dad is a contrabbandiere',\n", + " 'better than carabiniere, fuck the piedipiatti',\n", + " \"never do the spia, 'cause i kill you mentecatti\",\n", + " 'mi zona, we gossip from the quartiere',\n", + " 'mama is in the street, dad is a contrabbandiere',\n", + " 'better than carabiniere, fuck the piedipiatti',\n", + " \"never do the spia, 'cause i kill you mentecatti\",\n", + " 'can you feel the bongo? questa merda è pongo',\n", + " 'ovunque vai questa nostra musica è proprio lì intorno',\n", + " 'mental delay, special trip to luna giusta per licantropia',\n", + " \"è giunta l'ora di portarti via\",\n", + " 'gemello say goodbye to yesterday finalmente',\n", + " 'show the jolly cerca wally tra la gente',\n", + " 'from ashes rise doppio petto nella limo like lavino ci stai stretto questa volta ti fa effetto',\n", + " \"we come from the scuola nun ve n'è\",\n", + " \"bloody rotten fans tell me who's the next\",\n", + " \"who's the best on this track\",\n", + " 'mira mira il panorama double dragon della strada',\n", + " 'dimmi tu come si impara a farne a meno bada',\n", + " 'vai con dios maricón took the sky',\n", + " 'between the nuvole di fumo, la città e il suo profumo',\n", + " 'perché sono awake from the sleep live and tour',\n", + " \"boys don't cry that's the only cure\",\n", + " \"yes my click sad but true sniffin' glue abbastanza\",\n", + " 'da trasformare questo cielo nero in una stanza',\n", + " 'gem gem blues band back con cole bang bang',\n", + " 'exclusive slang, slang, slang, canzone',\n", + " 'ho nulla in testa, niente addosso e castlevania frusta',\n", + " 'serve un sun niente sole dopo la tempesta',\n", + " 'my man batistuta do mitraglia',\n", + " 'metti una mela sulla testa di gem e poi sbaglia',\n", + " 'anyway but today is the billie holiday',\n", + " 'still the greatest motherfucker of this rap game',\n", + " \"it's fucked up the giornali like sole 24 ore\",\n", + " 'since you start to listen truceklan sei uno splendore',\n", + " 'bad propose, speaker boss, per portarti su più in alto',\n", + " 'in the cloud e non scendere più manco',\n", + " 'this pezzo was ricordi vari mi costano danari',\n", + " 'itp da una vita bloody hell safari',\n", + " 'vuoi clarence seedorf is to dress ciabatte',\n", + " \"why she's french on the bench si combatte\",\n", + " 'vedi i throbbing gristle e io lo amo cristo',\n", + " 'the new kid on the block is born imprevisto',\n", + " 'we no dancing lento in a sketch di flamenco mama',\n", + " 'e vola via tutto i hate this panorama',\n", + " \"it's like no tomorrow, smoking gettin' borrow\",\n", + " 'è come quando esco e poi da te non torno',\n", + " \"let's comin' out in giro per compound\",\n", + " 'why you wanna live without the truce sound',\n", + " 'now pensami sgargiante adesso in questo istante',\n", + " 'guido verso il mare e niente è più importante',\n", + " 'the sorry man this say in the lane come back again',\n", + " 'i stay in the maze with borbuka and haze',\n", + " 'the tetra eyes smoke full mix grosse bolle',\n", + " 'fegatello with molte zolle',\n", + " 'dream and smoke put on the poltrona',\n", + " 'nulla mi lega neanche una persona',\n", + " 'itp dream team è questa è la conferma',\n", + " 'the crew more requested on this terraferma',\n", + " 'can you feel the botta avoid capotta',\n", + " 'mixin all the shit sotto il sole a capocotta',\n", + " 'i erase the t from the cartello ostia',\n", + " 'looking for the spot you must say \"ostia\"',\n", + " 'sai mega crew più itp bless ya',\n", + " 'scrive ti devasta',\n", + " 'stolen p qui con gem plus benassa',\n", + " 'chico free que te pasa?',\n", + " \"boys don't cry come stai? parli con la radio\",\n", + " 'se mi dai ciò che hai mentre me ne vado',\n", + " \"texturizzo gemellare tutto l'armadio\",\n", + " 'metto nello scrigno ogni disco registrato',\n", + " 'cassaforte passa con le corde e via',\n", + " 'pianoforte spacciamorte donna nostalgia',\n", + " \"sgattaiolando lascio l'oro in the via\",\n", + " 'infilando fili blunt per la fumeria',\n", + " '\"mi sento qua, mi sento il quadricipite, praticamente che... siccome mi sta uscendo il muscolo nuovo, praticamente c\\'ho tutti i dolori proprio sento i muscoli nuovi che non c\\'avevo, capito, che stanno a usci\\' proprio\"',\n", + " '\"sì, sì...\"',\n", + " 'oh well this is jabbering',\n", + " 'oh well this is jabbering',\n", + " 'too much jabbering was going on',\n", + " 'too much jabbering was going on',\n", + " 'jabbering was going on, was going on',\n", + " 'president and prime ministers',\n", + " 'all in a breath of life',\n", + " 'promises you made just to jump from the fools',\n", + " 'you built more than braking down the schools...',\n", + " 'too much jabbering was going on',\n", + " 'too much jabbering was going on',\n", + " 'jabbering was going on, was going on.:',\n", + " 'loro fanno troppe chiacchiere lo sai:',\n", + " 'politici corrotti che mettono un pianeta nei guai',\n", + " 'fan pubblicità anche su la rai',\n", + " 'ma apparte la campagna elettorale non si vedono mai',\n", + " 'babaman capisce e si fa forza di un pensiero',\n", + " 'so solamente che per me nessuno è straniero',\n", + " 'too much jubbering',\n", + " 'questo è quello che fan e tutta la gente si è stancata per davvero',\n", + " 'qui conta solo il dinero',\n", + " 'io sfamerei i bambini del mondo con i soldi del clero',\n", + " 'non credo a quello che vedo:',\n", + " 'un papa ricco parla della povertà',\n", + " 'mi seguon da',\n", + " 'little things that you say to hunt your campaign',\n", + " 'that you seem you forget and the people are treat to geal...',\n", + " \"why am i only's spreading for battles...\",\n", + " 'you promise to built more denident to fix some on the roads...',\n", + " 'too much jabbering was going on',\n", + " 'too much jabbering was going on',\n", + " 'jabbering was going on, was going on...:',\n", + " 'oh mama mama la società degrada',\n", + " 'e la gente non fa niente per cambiarla',\n", + " 'babaman se...',\n", + " 'continuano a menarla',\n", + " 'vedo la faccia di un politico che parla',\n", + " 'e mi chiedo perchè',\n", + " 'la società non cambia',\n", + " 'io sono un granello nella sabbia',\n", + " 'io vedo troppa rabbia',\n", + " 'vogliono la mia mente in gabbia',\n", + " 'io li combatto perchè medito in jah rastafarai',\n", + " 'little things that you say to hunt your campaign',\n", + " 'that you seem you forget and the people are treat to gee...',\n", + " \"why am i only's spreading for battles...\",\n", + " 'you promise to built more denidentt to fix some of the roads...',\n", + " 'too much jabbering was going on',\n", + " 'too much jabbering was going on',\n", + " 'jabbering was going on, was going on...',\n", + " 'too many questions and no answers while cancer advances',\n", + " 'but now the two the devil dances in the mantis kind of stances',\n", + " \"i look straight deep in the panther's eyes, i fantasize and realize\",\n", + " 'the same glances from the other side, no chances to get out alive',\n", + " 'i dive back into hell, back in the same shell, getting the same smell',\n", + " 'standing in front of the same door, same bell',\n", + " 'traces of blood up on the ceiling, no healing',\n", + " 'my face is pealing, my flesh is torn apart',\n", + " 'his fingers across my heart',\n", + " \"i'm ready to witness my own execution, i start freaking out\",\n", + " \"i hear he's coming up, this time there won't be waking up, no doubt\",\n", + " 'for the first time i bend down on my knees and pray for family',\n", + " 'pray for my friends, i even pray for my enemies',\n", + " \"i'm terrorized, i'm petrified, i look through the demon's eyes\",\n", + " \"i'm about to die, so a fear for my life, what the fuck, i begin to cry\",\n", + " \"i'm caught by a strange kind of thought and brought to a sort of attraction to death...\",\n", + " 'for god sake! i take my last breath',\n", + " 'reflections of the demon in me',\n", + " \"i see my face traced all over the place, no gravity, my body's floating in space\",\n", + " 'i wonder if this shit is real, it might just be a dream',\n", + " \"i take a piece of glass and cut my throat, that's when i start to scream\",\n", + " 'i bash my face against my knees, at this point nothing really fears me',\n", + " 'i scream as loud as i can, but nobody really hears me',\n", + " 'blood flows, pain grows, the scene is now completely red',\n", + " \"i realize i cannot die, 'cause i'm already dead\",\n", + " \"cause i'm already dead...\",\n", + " \"cause i'm already dead...\",\n", + " 'oggi no, la malasorte non perseguita',\n", + " 'oggi è così ma per domani zero replica',\n", + " \"i'm sick hell, smashed, i can't get out alive\",\n", + " \"i can't breathe, i sang into the other side\",\n", + " 'oggi no, la malasorte non perseguita',\n", + " 'oggi è così ma per domani zero replica',\n", + " \"i fell dead, sick hell, i can't move\",\n", + " \"i crash into a pond of blood, i'm paralyzed\",\n", + " 'contaci tra più rischi e sbagli, scontri più deragli',\n", + " 'se vuoi l’hardcore in versione senza tagli',\n", + " 'qua sta, qui ci si slega a vicenda in pieno k.o',\n", + " 'fanculo i contro e i pro e se sei pronto o no',\n", + " 'da mo veleno invade l’aria, spore di muscaria',\n", + " 'l’impatto tira giù dato che sdraia',\n", + " 'collisioni tra psicosomati, multi-previsioni trip',\n", + " 'manda in ceneri i neuroni, sbra',\n", + " 'mentre tot pressione al top grado massimo di sclero',\n", + " '(stress davvero!) non stop',\n", + " 'per restare intero la parte tipo crash test',\n", + " 'ma se sbocci a caso la piazza è tipo far west',\n", + " '(now niggas contest!) tra gentaglia da saloon guerriglia',\n", + " 'tipo platoon, samurai senza uno shogun',\n", + " '() panorama a tre-e-sessanta, diavolo e acqua santa',\n", + " 'mentre sta terra va a puttane, chico',\n", + " 'per sempre todo o nada, chico',\n", + " 'vada come vada, chico',\n", + " 'quel che non sai tu lo sa la strada, chico',\n", + " 'se lo dico è perchè è un tot sono le volte che ho lasciato il foglio in bianco',\n", + " 'e per orgoglio non ho pianto',\n", + " 'lacrime e ghiaccio, qua è così che va',\n", + " \"c'è qualcosa che spinge la sfida fino al di là\",\n", + " 'certi match tra me e me sono harakiri',\n", + " 'finché respiri chiedono sangue più dei vampiri',\n", + " 'sangue nel sangue...',\n", + " 'sangue nel sangue...',\n", + " 'oggi no, la malasorte non perseguita',\n", + " 'oggi è così ma per domani zero replica',\n", + " \"i'm sick hell, smashed, i can't get out alive\",\n", + " \"i can't breathe, i sang into the other side\",\n", + " 'oggi no, la malasorte non perseguita',\n", + " 'oggi è così ma per domani zero replica',\n", + " \"i fell dead, sick hell, i can't move\",\n", + " \"i crash into a pond of blood, i'm paralyzed\",\n", + " \"sembra che tutto sia l'opposto di quello che credi, procedi per gradi\",\n", + " 'camminando a piedi nudi su chiodi se gridi',\n", + " 'qualcuno ascolta, chiedi aiuto',\n", + " \"ma anche stavolta nessuno è venuto l'ennesimo rifiuto\",\n", + " 'il vuoto è già occupato da un altro più scaltro, più furbo',\n", + " 'scusa il disturbo, sarò cieco, muto, sordo ma più bastardo',\n", + " 'perché è così che va nel mondo, amigo',\n", + " 'sarò in castigo in compagnia del mio alter-ego',\n", + " 'sayonara mama! la via del vuoto mi reclama (bring the drama!)',\n", + " 'occhi immobili sul panorama',\n", + " \"già scomparso il tempo trascorso nell'attesa\",\n", + " \"l'impresa si è già conclusa, la porta resta chiusa\",\n", + " 'qualcosa che non torna, realtà che appare drastica',\n", + " 'gas di piombo, cibo finto e sesso in plastica',\n", + " \"c'è da pensare a un disegno preciso, nascosto\",\n", + " 'mi sono spesso chiesto se era già tutto stato previsto',\n", + " 'predisposto al tradimento come giuda',\n", + " 'ora in strada inquisizione in stile torquemada',\n", + " \"lascia che accada, c'è ancora un giorno da aspettare\",\n", + " 'perché oggi è andata solo perché doveva andare',\n", + " 'resta solo un giorno per trovare il modo...',\n", + " 'resta solo un giorno per trovare il modo...',\n", + " 'oggi no, la malasorte non perseguita',\n", + " 'oggi è così ma per domani zero replica',\n", + " \"i'm sick hell, smashed, i can't get out alive\",\n", + " \"i can't breathe, i sang into the other side\",\n", + " 'oggi no, la malasorte non perseguita',\n", + " 'oggi è così ma per domani zero replica',\n", + " \"i fell dead, sick hell, i can't move\",\n", + " \"i crash into a pond of blood, i'm paralyzed\",\n", + " \"tutta 'sta gente deve stare a casa, hai capito? se la cosa non la senti, non la vivi, non ci credi, che cazzo lo vai a fare? perché?\",\n", + " 'perchè perdere tempo',\n", + " \"va ragà, io di tutto 'sto discorso vi posso dire solo una cosa\",\n", + " 'eh cosa?',\n", + " \"che non c'è niente di peggio di gente che si vende la propria cultura\",\n", + " 'words manifest, layin in the rest',\n", + " 'one to the chest, two to the flash',\n", + " 'three in the back on the attack',\n", + " 'funerals and gotta to be like that',\n", + " '(chief e soci)',\n", + " '\"why\\'d you wanna front\"',\n", + " \"when you're not for real\",\n", + " '(se non sei vero)',\n", + " '\"why\\'d you wanna front\"',\n", + " \"when you're not in the deal\",\n", + " '(se non sai la cosa)',\n", + " '\"why\\'d you wanna front\"',\n", + " \"just playin' a part\",\n", + " '(giocando un ruolo)',\n", + " '\"why\\'d you wanna front\"',\n", + " \"not comin' from the heart\",\n", + " '(se non ti viene dal cuore)',\n", + " 'non ci si crede, più fastidioso di quando mi pestano un piede',\n", + " 'o nel deserto avvolto dalla sete',\n", + " \"l'adrenalina sale, tocca il massimo\",\n", + " 'mi trasforma in un soggetto pessimo, cavalco il lessico',\n", + " 'verso chi tenta di sfumare il mio passato prossimo',\n", + " 'un classico, ma in questa direzione trova solo',\n", + " 'tempo critico, sopra il campo ritmico',\n", + " 'gigolò di turno non ne vuole più di fronte',\n", + " 'neanche fossi caronte, preparo il mio trapasso su diverse sponde',\n", + " 'senza nessuno sconto il viaggio del non-ritorno',\n", + " 'faccio volentieri il tre per due per averne meno attorno',\n", + " 'perché nessuno può bruciare la mia vita',\n", + " 'il suo nome scompare come sul bagnasciuga',\n", + " '\"mc\\'s act like they don\\'t know\"',\n", + " '\"just don\\'t understand\"',\n", + " 'questo è chief e soci, non pavarotti and friends',\n", + " 'homicidal on arrival, massacration, no survivor',\n", + " 'termination, devastation, devastation, termination',\n", + " 'homicidal on arrival, massacration, no survivor',\n", + " 'termination, devastation, devastation, termination',\n", + " '\"why\\'d you wanna front\"',\n", + " \"when you're not for real\",\n", + " 'se non sei vero',\n", + " '\"why\\'d you wanna front\"',\n", + " \"when you're not in the deal\",\n", + " 'se non sai la cosa',\n", + " '\"why\\'d you wanna front\"',\n", + " \"just playin' a part\",\n", + " 'giocando un ruolo',\n", + " '\"why\\'d you wanna front\"',\n", + " \"not comin' from the heart\",\n", + " 'se non ti viene dal cuore',\n", + " 'basta con la plastica, giù la maschera',\n", + " 'il tuo gioco dura poco come la tua vita sulla sedia elettrica',\n", + " \"e non c'è tecnica che regge come mille schegge\",\n", + " 'le mie parole cariche come i quesiti della sfinge',\n", + " 'da ogni direzione potenza di fuoco come un plotone',\n", + " \"d'esecuzione, giro un cannone con una cartina gigante\",\n", + " \"dentro c'è qualcuno che piange mentre brucia lentamente\",\n", + " 'alte le mura che mi separano dal costo',\n", + " 'profonde le radici che mi legano al contesto',\n", + " 'che di stile mi contagia tipo epidemia',\n", + " 'divento ciò che il mondo non vuole che io sia',\n", + " 'il mio credo non ha prezzo, il mio silenzio è caro',\n", + " 'in tasca cash ma in bocca il sapore amaro',\n", + " \"why'd you wanna play the role?\",\n", + " 'and i got love agose the cohose the pose and knows',\n", + " 'they even got no souls',\n", + " \"i'm goin' in the death and that and yes i rhyme the best\",\n", + " 'time for the life i live',\n", + " 'so been the gots to play the gots to pay',\n", + " \"and pain it's all i gots to give\",\n", + " 'homicidal on arrival, massacration, no survivor',\n", + " 'termination, devastation, devastation, termination',\n", + " 'homicidal on arrival, massacration, no survivor',\n", + " 'termination, devastation, devastation, termination',\n", + " '\"why you wanna front?\"',\n", + " '\"know \\'m sayin\\'?\"',\n", + " 'homicidal get on arrival, massacration, no survivor',\n", + " 'termination, devastation, devastation, termination',\n", + " 'homicidal, homicidal, homicidal, homicidal',\n", + " 'homicidal, homicidal, homicidal',\n", + " 'words manifest, layin in the rest',\n", + " 'one to the chest, two to the flash',\n", + " 'words manifest, layin in the rest',\n", + " 'one to the chest, two to the flash',\n", + " 'words manifest, layin in the rest',\n", + " 'one to the chest, two to the flash',\n", + " 'massacration, massacration, massacration',\n", + " 'e questo vi volevo dire',\n", + " 'yo yo, welcome to the gates of hell',\n", + " 'noyz narcos, duke montana',\n", + " 'truceklan in the motherfucking house',\n", + " \"connected with the street mentality, you know what i'm saying?\",\n", + " 'this is real shit hardcore',\n", + " 'come on, ah ah ah',\n", + " \"it's the gates of hell motherfucker\",\n", + " 'welcome to the gates of hell',\n", + " \"it's the gates of hell motherfucker\",\n", + " 'welcome to the gates of hell',\n", + " 'where the demons play, where the motherfucking devil plays',\n", + " 'yeah, enjoy the silence',\n", + " 'seh! è quello che vorrei fare adesso',\n", + " \"ma tu, me spari le cazzate nell'orecchio\",\n", + " \"me mandi in paranoia e rovini 'sto viaggio\",\n", + " 'in questo mondo sempre caldo',\n", + " \"pure d'inverno chiuso dentro al ministero dell'inferno\",\n", + " \"te dovevano spara', fuck rec\",\n", + " \"dovresti fa 'n duet co' platinette\",\n", + " 'mentre io sputo fatti, squaglio microfoni',\n", + " 'e sulle basi lascio ceneri',\n", + " \"siete afoni co' la paura de' parla'\",\n", + " \"dei cazzi vostri, dei cazzi miei non te impiccia'\",\n", + " \"pe' svolta' tocca vende' dischi\",\n", + " \"ho pagato la siae con i soldi de l'impicci\",\n", + " 'rischi, se ti metti contro narcos and duke montana',\n", + " \"du' figli di puttana\",\n", + " 'we ought brutalize',\n", + " \"y'all better recognize\",\n", + " 'real role boy still alive',\n", + " 'noyz narcos, duke montana',\n", + " 'them are tell no lies',\n", + " 'and the gates of hell',\n", + " 'of hell spirit never dies',\n", + " 'we ought brutalize',\n", + " \"y'all better recognize\",\n", + " 'real role boy still alive',\n", + " 'noyz narcos, duke montana',\n", + " 'them are tell no lies',\n", + " 'and the gates of hell',\n", + " 'of hell spirit never dies',\n", + " \"brutto figlio di puttana questo è l'inferno\",\n", + " \"narcos rap, duke montana, sbraga 'sto perno\",\n", + " 'nella cabrio d\\'inverno, \"trucelife\" sullo sterno',\n", + " 'truceboys live in eterno',\n", + " 'non mi fermo più e non mi fermi tu',\n", + " 'il più affilato, truceklan il crew',\n", + " 'più affiliato sotto al suolo al quadraro',\n", + " 'entra sano dentro al ministero e ne esci deviato',\n", + " 'faccio gang bang nel letto, lo slang del campetto',\n", + " 'porto il rap criminale al clubbetto',\n", + " 'truceklan il progetto, cospirazione occulta',\n", + " 'ultra formazione in combutta',\n", + " 'butta su le lame, notti corte e orge',\n", + " \"truceklan crew del male, morte all'infame\",\n", + " 'sotto a chi tocca',\n", + " \"cuciti la bocca quando fotti co' 'sta roba brutale\",\n", + " 'duke montana, noyz narcos, t.klan connect',\n", + " 'we ought brutalize',\n", + " \"y'all better recognize\",\n", + " 'real role boy still alive',\n", + " 'noyz narcos, duke montana',\n", + " 'them are tell no lies',\n", + " 'and the gates of hell',\n", + " 'of hell spirit never dies',\n", + " 'we ought brutalize',\n", + " \"y'all better recognize\",\n", + " 'real role boy still alive',\n", + " 'noyz narcos, duke montana',\n", + " 'them are tell no lies',\n", + " 'and the gates of hell',\n", + " 'of hell spirit never dies',\n", + " 'prisoner 709 did a bad thing',\n", + " 'prisoner 709 did a bad thing',\n", + " 'prisoner 709 did a bad thing',\n", + " 'he did a bad thing, he did a bad thing',\n", + " 'il rap è psicoterapia, quindi materia mia',\n", + " 'block notes, penna a sfera, via!',\n", + " 'parto confuso come se portassi a cena mia wallace',\n", + " 'divento acuto, beh, maria callas',\n", + " 'fantasia a galla sopra fogli, sotto un lumicino',\n", + " 'ricordi con più decolli dei trolley a fiumicino',\n", + " 'passo le ore al micro, mi è più vicino',\n", + " 'del mio migliore amico',\n", + " 'porto una chaise longue nella studio session',\n", + " 'rap autospurgo del mio lato oscuro, manson',\n", + " 'scrivo finché faccio fumo denso',\n", + " 'finché perdo il braccio, futuro nelson',\n", + " 'ti liberi se parli il rap',\n", + " 'e non puoi dire il contrario, tanto è \"parli il rap\"',\n", + " 'ogni sputo mentre canto è una tavola rorschach',\n", + " 'ho un nemico immaginario, tu chiamami john nash',\n", + " \"i'm jung\",\n", + " 'forever jung, forever jung, forever jung',\n", + " 'forever jung, forever jung, forever jung',\n", + " 'i veri padri del rap sono freud e jung',\n", + " 'prima di dj kool herc e del folle boom',\n", + " 'prima che la vecchia scuola ci abbia messo rime su',\n", + " 'potere alla parola prima di francesco di gesù',\n", + " 'guarda chi lo pratica',\n", + " 'ha seri problemi, non basta la chiropratica',\n", + " 'nah, gente prolissa col primo che a tiro capita',\n", + " \"già, l'analista ha la biro carica\",\n", + " 'tra erotomani come solo tinder sa, finte star',\n", + " \"quarantenni che seguono l'iter da peter pan\",\n", + " 'narcisi con ai piedi mille fan, timberland',\n", + " 'marciti nella bipolarità, yin e yang',\n", + " 'il rap ha reso potente la gioventù',\n", + " 'a carte scoperte la poker room',\n", + " 'diventi paziente e dottore tu',\n", + " 'ringrazia la mente di freud e jung',\n", + " 'sì, jung',\n", + " 'forever jung, forever jung, forever jung (still jung)',\n", + " 'forever jung, forever jung, forever jung (still jung)',\n", + " 'forever jung, forever jung, forever jung (still jung)',\n", + " 'forever jung, forever jung, forever jung (still jung)',\n", + " 'me and my adidas we be the original',\n", + " 'trying to defeat us is gonna take a miracle',\n", + " 'for 35 years they been trying to get rid of me',\n", + " 'now i appear here rhyming in italy',\n", + " 'king dmc is always gonna sing',\n", + " 'all the little kids are kings and queens',\n", + " 'positivity is all that he brings',\n", + " 'with all this negative bullshit it’s time for a change',\n", + " 'let it be known on every continent',\n", + " 'i’m coming to the show and stomping shit',\n", + " 'byford and bannah told me not to quit',\n", + " 'i put my mind to it and accomplish it',\n", + " 'i rock it like sha from the funky 4',\n", + " 'i’m grand like the wizard called theodore',\n", + " 'a lot like god so praise the lord',\n", + " 'forever young, forever more',\n", + " 'forever young!',\n", + " 'forever jung, forever jung, forever jung',\n", + " 'forever jung, forever jung, forever jung',\n", + " 'forever jung, forever jung, forever jung',\n", + " 'forever jung, forever jung, forever jung']},\n", + " 'rock': {'meta': {'train_data': ['cappuccino',\n", + " 'macchiato',\n", + " 'affogato',\n", + " 'cortado',\n", + " 'cappuccino',\n", + " 'macchiato',\n", + " 'affogato',\n", + " 'cortado',\n", + " 'kafe mania!',\n", + " \"i'm kafe mania\",\n", + " 'looking for perfect roasting, you know',\n", + " \"i'm kafe mania\",\n", + " 'looking for bono coffee, you know',\n", + " 'cappuccino',\n", + " 'macchiato',\n", + " 'affogato',\n", + " 'cortado',\n", + " 'cappuccino',\n", + " 'macchiato',\n", + " 'affogato',\n", + " 'cortado',\n", + " 'i want to fly',\n", + " 'i need to fly',\n", + " 'i want to fly',\n", + " \"but i don't have the wings\",\n", + " 'i want to fly',\n", + " 'i need to fly',\n", + " 'i want to fly',\n", + " \"but i don't have the wings\",\n", + " 'the wings, the wings',\n", + " 'the wings, the wings',\n", + " 'the wings, the wings',\n", + " 'the wings',\n", + " 'the wings, the wings',\n", + " 'the wings, the wings',\n", + " \"i don't have the wings\",\n", + " 'i want to fly',\n", + " 'i need to fly',\n", + " 'i want to fly',\n", + " \"but i don't have the wings\",\n", + " 'chucho is my friend',\n", + " 'he have the wings',\n", + " 'chucho is my friend',\n", + " 'he have the wings',\n", + " 'the wings, the wings',\n", + " 'the wings, the wings',\n", + " 'the wings, the wings',\n", + " 'the wings',\n", + " 'the wings, the wings',\n", + " 'the wings, the wings',\n", + " \"i don't have the wings\",\n", + " 'io ho bisogno dite come la barca',\n", + " 'bisogna dеl mare per poter andarе',\n", + " 'la primavera bisogna del sole',\n", + " 'per poter fiorire',\n", + " 'la farfalladun fiore',\n", + " \"un bimbo d'una mano\",\n", + " 'che lo acompagni',\n", + " \"un cane d'un pedrone\",\n", + " 'e del vento la quilone',\n", + " 'per poter volare',\n", + " 'the wings, the wings',\n", + " 'the wings, the wings',\n", + " 'the wings, the wings',\n", + " 'the wings',\n", + " 'the wings, the wings',\n", + " 'the wings, the wings',\n", + " \"i don't have the wings\",\n", + " 'my name is greta thunberg',\n", + " \"i'm 15 years old and i'm from sweden\",\n", + " 'you are never too small to make a difference',\n", + " 'to make a difference, to make a difference',\n", + " 'piccola guerriera, scesa dalla luna',\n", + " 'come una nave di vichinghi nella notte scura',\n", + " 'alla casa bianca, forte come un manga',\n", + " \"you've ignored us in the past\",\n", + " 'and you will ignore us again',\n", + " 'ignore us again',\n", + " \"picnic all'inferno\",\n", + " 'siamo cotti a fuoco lento',\n", + " 'siamo carne per avvoltoi',\n", + " 'che gira e gira, siamo sempre noi',\n", + " \"picnic all'inferno\",\n", + " 'mangio plastica e cemento',\n", + " 'siamo nudi e siamo armati',\n", + " 'siamo quelli che si sono alzati',\n", + " \"picnic sull'ascensore per l'inferno\",\n", + " 'piccola guerriera, figlia della luna',\n", + " \"l'uomo è l'animale più feroce sulla terra\",\n", + " \"siamo sempre in guerra contro l'indifferenza\",\n", + " \"you've ignored us in the past\",\n", + " 'and you will ignore us again',\n", + " \"picnic all'inferno\",\n", + " 'siamo cotti a fuoco lento',\n", + " 'siamo carne per avvoltoi',\n", + " 'che gira e gira siamo sempre noi',\n", + " \"picnic all'inferno\",\n", + " 'mangio plastica e cemento',\n", + " 'siamo nudi e siamo armati',\n", + " 'siamo quelli che si sono alzati',\n", + " \"picnic sull'ascensore per l'inferno\",\n", + " \"trash girl, il mio futuro me lo prendo (you've ignored us in the past, and you will ignore us again)\",\n", + " 'il mio futuro me lo prendo',\n", + " \"(you've ignored us in the past, and you will ignore us again)\",\n", + " 'il mio futuro non lo vendo (non lo vendo)',\n", + " \"picnic all'inferno\",\n", + " 'mangio plastica e cemento',\n", + " 'siamo carne per avvoltoi',\n", + " 'che gira e gira siamo sempre noi',\n", + " \"picnic all'inferno\",\n", + " 'siamo cotti a fuoco lento',\n", + " 'siamo nudi e siamo armati',\n", + " 'siamo quelli che si sono alzati',\n", + " 'you are never too small to make a difference',\n", + " 'thank you',\n", + " 'vivere male, vivere tutti',\n", + " '(we just wanna live)',\n", + " 'per nostro signore dei compromessi',\n", + " '(we just wanna live)',\n", + " 'nel vangelo di giuda è scritto così',\n", + " '(we just wanna live)',\n", + " 'che tu sia maledetto, tu che regnerai',\n", + " '(we just wanna die)',\n", + " 'soffici e pie, malizia sua',\n", + " '(we just wanna live)',\n", + " 'grazie signore, ci insegni a soffrire',\n", + " '(we just wanna live)',\n", + " 'ho una macchia nera sul cuore, lo sai',\n", + " '(we just wanna live)',\n", + " 'che pagano son io e pagani i miei dei',\n", + " '(we just wanna die)',\n", + " 'tuo figlio dorme nel letto della coerenza',\n", + " '(we just wanna live)',\n", + " 'i discepoli in terra nella pazienza',\n", + " '(we just wanna live)',\n", + " 'io non dormo per niente, che coscienza non ho',\n", + " '(we just wanna live)',\n", + " 'questo poco tempo è tutto quello che hai',\n", + " '(we just wanna die)',\n", + " 'e se il domani venisse a prenderci tutti',\n", + " '(we just wanna live)',\n", + " 'a calci nel culo per sterminarci',\n", + " '(we just wanna live)',\n", + " 'i destini son salici e per versi lo sai',\n", + " '(we just wanna live)',\n", + " 'perché il tuo nome è presagio di morte e di guai',\n", + " '(we just wanna die)',\n", + " 'we just wanna live',\n", + " 'we just wanna live',\n", + " 'we just wanna live',\n", + " 'we just wanna die',\n", + " 'we just wanna die',\n", + " 'we just wanna...',\n", + " 'parlami',\n", + " 'il tuo silenzio guarda dentro',\n", + " 'non resisterò',\n", + " 'è un attimo, nel tuo vuoto sento che',\n", + " 'io non ce la farò',\n", + " 'walk on by',\n", + " 'you walk on by',\n", + " 'walk on by',\n", + " 'wondering why...',\n", + " 'wandering from you',\n", + " 'falling at your side',\n", + " 'wandering from you',\n", + " 'healing my desire',\n", + " 'stumble in your soul',\n", + " 'give yourself to me',\n", + " 'hurting your desire',\n", + " 'healing mine',\n", + " 'slegami',\n", + " 'dal mio rimorso, sei diverso',\n", + " 'mentre muoio e poi',\n", + " 'risorgo dentro te',\n", + " 'finché vivrò',\n", + " 'ricordarti così',\n", + " 'sarà una colpa eterna su di me...',\n", + " 'walk on by',\n", + " 'you walk on by',\n", + " 'walk on by',\n", + " 'wondering why...',\n", + " 'wandering from you',\n", + " 'falling at your side',\n", + " 'wandering from you',\n", + " 'healing my desire',\n", + " 'stumble in your soul',\n", + " 'give yourself to me',\n", + " 'hurting your desire',\n", + " 'healing mine',\n", + " 'wandering from you',\n", + " 'falling at your side',\n", + " 'wandering from you',\n", + " 'healing my desire',\n", + " 'stumble in your soul',\n", + " 'give yourself to me',\n", + " 'hurting your desire',\n", + " 'healing mine...',\n", + " 'healing mine...',\n", + " 'healing mine...',\n", + " '(stumble in your heart again)',\n", + " '(healing my eyesight...)',\n", + " 'give yourself to me...',\n", + " '(healing mine, healing mine...)',\n", + " '(healing my eyesight ...)',\n", + " 'stumble in your arms again',\n", + " '(healing mine)',\n", + " 'healing my eyesight...',\n", + " 'come sai puoi vincere',\n", + " 'così guardami so fingere',\n", + " 'come sai non ho fame',\n", + " 'come vuoi lo so non fa male',\n", + " 'guardami puoi fendere',\n", + " 'voli dentro me so fingere',\n", + " 'come sai non ho fame',\n", + " 'come vuoi lo so non fa male',\n", + " 'come sai non ho fame',\n", + " 'come vuoi lo so non fa male',\n", + " 'come sai qui sto bene',\n", + " 'legami se vuoi non fa male',\n", + " 'cassago... arin... camponogara...',\n", + " 'xente che verxe el finestrin e sgatara...',\n", + " 'ocio! ocio! ara che sbara!!! areo',\n", + " 'da bocia fionda e cerbotana',\n", + " 'tiravo drio ae gaine i baini',\n", + " 'dea coeana de me mama',\n", + " 'se tirava a coa ai gati',\n", + " 'se tirava sassi',\n", + " 'se se tirava sege co vaeanghe de pornassi',\n", + " 'tute de flanea, panini coa nutea',\n", + " 'giri coa grasiea e casa in barea',\n", + " 'pai campi al pomerijio',\n", + " 'co jijio e cajio',\n", + " 'in caiffo pai fossi e su pal sarajio',\n", + " \"se 'ndava vendemare e spanociare\",\n", + " 'sensa farse mae',\n", + " 'tuto par zogare molto naturae',\n", + " 'e i toseti in cità sofegai dal cemento',\n", + " 'i gà da scoresare par sentire un fià de vento',\n", + " 'i tosi de campagna poenta e ossi magna',\n", + " 'te i cati ae sagre sora el paeo dea cucagna',\n", + " 'i tosi de campagna co pissa i se bagna',\n", + " \"i porta pasegiare su pa l'arzare a cagna\",\n", + " 'i tosi de campagna mai visto che i se eagna',\n", + " 'bisogna te i conossi pa becarli in castagna',\n", + " 'i tosi de campagna al mare o in montagna',\n", + " 'i tosi de campagna xe tosi de campagna',\n", + " 'el spris col gin... hu! ma dove?',\n", + " 'a padova dal cinesin - che bon!',\n", + " 'qua i o tajia col grinton e tre olive sul baston',\n", + " 'qua in zona - see!',\n", + " 'a xente quea bona',\n", + " 'quea co un fià de sae dentro soa meona',\n", + " 'tra tosi se capimo',\n", + " 'se no se conossemo',\n", + " 'femo sempre a gara',\n", + " 'a chi fa pì el semo',\n", + " 'no ghemo pei soa lengua',\n", + " 'e no semo schissinosi',\n", + " 'signore pareceve',\n", + " 'semo tuti bravi tosi',\n", + " 'e seto chi se incassa',\n", + " 'pa farse i cassi mii?',\n", + " 'ti! nialtri semo massa tranquii',\n", + " 'nissuni xé cativo',\n", + " 'par queo te o digo',\n", + " 'te si cressuo cussì',\n", + " 'te si pa forsa me amigo',\n", + " 'me amigo',\n", + " 'te si pa forsa me amigo',\n", + " 'se se se se se',\n", + " 'i tosi de campagna poenta e ossi magna',\n", + " 'te i cati ae sagre sora el paeo dea cucagna',\n", + " 'i tosi de campagna co pissa i se bagna',\n", + " \"i porta pasegiare su pa l'arzare a cagna\",\n", + " 'i tosi de campagna mai visto che i se eagna',\n", + " 'bisogna te i conossi pa becarli in castagna',\n", + " 'i tosi de campagna al mare o in montagna',\n", + " 'i tosi de campagna xe tosi de campagna',\n", + " 'e co i vede e tete fora',\n", + " 'do minuti e i se inamora',\n", + " 'pò i va casa e i se fa seghe pa tre dì',\n", + " \"cò se ora 'ndare in figa\",\n", + " \"gà l'oseo in carne viva\",\n", + " \"ma i ghe conta tuti che i xé 'ndai\",\n", + " 'a gà ciavà',\n", + " 'ha ha ha ha ha ha ha ha!',\n", + " 'i tosi de campagna poenta e ossi magna',\n", + " 'te i cati ae sagre sora el paeo dea cucagna',\n", + " 'i tosi de campagna co pissa i se bagna',\n", + " \"i porta pasegiare su pa l'arzare a cagna\",\n", + " 'i tosi de campagna mai visto che i se eagna',\n", + " 'bisogna te i conossi pa becarli in castagna',\n", + " 'i tosi de campagna al mare o in montagna',\n", + " 'i tosi de campagna xe tosi de campagna',\n", + " 'i tosi de campagna in giro e sucche ragna',\n", + " 'se! se! se! se!',\n", + " 'i tosi de campagna i risi in testa magna',\n", + " 'se! se! se! se!',\n", + " 'i tosi de campagna mai vista na magagna',\n", + " 'se! se! se! se!',\n", + " 'i tosi de campagna xé tosi de campagna',\n", + " 'se! se! se! seeeee!',\n", + " 'se se se!',\n", + " 'i tosi de campagna.... campagna lupia??',\n", + " \"nun te perdere cu e' mane toje\",\n", + " 'tanta vote staraje sulo',\n", + " 'quanne triemme t’annascunne',\n", + " \"l'aie sapè ca' po’ te truovano\",\n", + " \"a parlà sempe d'e guai 'e ll'ate\",\n", + " 'cuorpe allerte senza vita',\n", + " \"nun te servono e' cumpagne\",\n", + " \"si staje sulo ind'a na' stanza\",\n", + " \"nun te perdere int'e’ mane toje\",\n", + " 'e tanta vote staraje sulo',\n", + " 'nuje simme vivi dinto e’ mane noste',\n", + " \"nuje simme vivi dinto e' mane noste\",\n", + " \"a parlà sempe d’e guai 'e ll'ate\",\n", + " 'cuorpe allerte senza vita',\n", + " \"nuje simme vivi dinto e' mane noste\",\n", + " 'nuje simme vivi dinto e’ mane noste',\n", + " 'nun ce ne sapimme ascì',\n", + " \"uno 'nguollo a n'ato\",\n", + " \"premme ppe nun ji' cchiu' 'nfunno\",\n", + " \"nun simme comm e' nonni nuoste\",\n", + " \"ca' se accuntentano da terra lloro\",\n", + " 'nun ce ne sapimme ascì',\n", + " \"a' famma e' arrivà ca' c'ha resi mostri\",\n", + " 'maronna mò me sento male',\n", + " \"eppure nun m'arrenne maje\",\n", + " 'uh, la mia cadillac',\n", + " 'la mia rolls royce, oh yeah',\n", + " 'marlboro',\n", + " 'blue jeans gucci',\n", + " 'yeah, yeah, yeah, yeah',\n", + " 'cowboy, mio amor',\n", + " 'la mia puledra chic',\n", + " 'oh no, no, no',\n", + " 'maledetto me',\n", + " 'maledetto posto',\n", + " 'maledetta te',\n", + " 'maledetto mostro',\n", + " 'amami senza chiedere in cambio',\n", + " 'lucifero il ribelle, la giacca di pelle, luci sul selvaggio',\n", + " 'ra-pa-pa-pa',\n", + " 'wow, da una cadillac',\n", + " 'uff, è una cadillac, yeah',\n", + " 'ra-pa-pa-pa, pa-pa',\n", + " 'ra-pa-pa-pa, pa-pa',\n", + " 'ra-pa-pa-pa, pa-pa',\n", + " 'ra-pa-pa-pa, pa-pa',\n", + " 'è una cadillac, yeah',\n", + " 'rock and roll, blue suede shoes',\n", + " 'popstar rock, ah, sid vicious',\n", + " \"anni '70, ma rum e cola\",\n", + " 'rosa come la cadillac, la mia camicia a pois',\n", + " \"sono vestito strano, ma'\",\n", + " 'maledetto me',\n", + " 'maledetto posto',\n", + " 'maledetta te',\n", + " 'maledetto mostro',\n", + " 'amami senza chiedere in cambio',\n", + " 'lucifero il ribelle, la giacca di pelle, luci sul selvaggio',\n", + " 'ra-pa-pa-pa',\n", + " 'wow, da una cadillac',\n", + " 'uff, è una cadillac, yeah',\n", + " 'ra-pa-pa-pa, pa-pa',\n", + " 'ra-pa-pa-pa, pa-pa',\n", + " 'ra-pa-pa-pa, pa-pa',\n", + " 'ra-pa-pa-pa, pa-pa',\n", + " \"sono vestito strano, ma'\",\n", + " 'sono vestito strano',\n", + " \"sono vestito strano, ma'\",\n", + " 'vestito strano',\n", + " \"sono vestito strano, ma'\",\n", + " 'sono vestito strano',\n", + " \"sono vestito strano, ma'\",\n", + " 'è una cadillac, yeah',\n", + " 'ra-pa-pa-pa, pa-pa (la mia cadillac)',\n", + " 'ra-pa-pa-pa, pa-pa (la mia puledra chic, la mia cadillac)',\n", + " 'ra-pa-pa-pa, pa-pa (la mia puledra chic, la mia cadillac)',\n", + " 'ra-pa-pa-pa, pa-pa (la mia puledra chic, la mia cadillac)',\n", + " 'è una cadillac, yeah',\n", + " 'pobblemi pobblemi besteme pobblemi',\n", + " 'sveja bonora, so xa in ritardo ma',\n", + " 'corro de fora, senti che fredo fa',\n", + " 'tiro na scora, me inciodo e torno in drio',\n", + " 'xe vegnuo fora calcossa pal dadrio',\n", + " 'co xe caldo co xe fredo co no parte el motorin',\n", + " 'quando a femena me rompe i cojoni pa 3 dì',\n", + " 'quando a festa xe finia',\n", + " \"quando sara l'ostaria\",\n", + " 'quando in man so pien de briscoe ma perdo ea partia',\n", + " 'pobblemi pobblemi besteme pobblemi',\n", + " 'e se me incasso perdo el serveo',\n", + " 'voria spaccare tutto e far masseo',\n", + " 'sfogarme un fià tirare su un casin',\n", + " 'calmarme con na tromba o un bel pompin',\n", + " 'el ga vuo a meningite da picoeo...',\n", + " 'so pare e so mare no se ga incorto...',\n", + " 'pobblemi! vai!',\n", + " 'pobblemi pobblemi besteme pobblemi',\n", + " \"e facc sempe chell ca' nun se putess fa', e dic 'na buscia\",\n", + " \"quanta penzier ca' me faccio e vuless cagnà, e dic 'na buscia. è chiamml co' nomm suoj, addà senti' can un è bbuon. ca' nun ce stann cchiù uommene, uommene\",\n", + " 'e nun se parlan uommene e uommene',\n", + " 'e se vennen uommene e uommene',\n", + " 'e se cantan uommene e uommene',\n", + " \"e s'acciren uommene e uommene\",\n", + " \"e po' chiagnen uommene, uommene\",\n", + " 'l’unico omme er sul papà!',\n", + " \"si vuo' rispett, e nun si' omme\",\n", + " \"vinnel a chi sò fa' fa' è sul 'na buscia\",\n", + " \"i' teng 'a storia mij ca' nun è 'a toj\",\n", + " \"è chest è 'a vita mij\",\n", + " \"è chiamml co' nomm suoj, addà senti' can un è bbuon\",\n", + " \"ca' nun ce stann cchiù uommene uommene\",\n", + " 'e nun se parlan uommene e uommene',\n", + " 'e se vennen uommene e uommene',\n", + " 'e se cantan uommene e uommene',\n", + " \"e s'acciren uommene e uommene\",\n", + " \"e po' chiagnen uommene, uommene\",\n", + " 'l’unico omme er sul papà!',\n", + " 'uommene, uommene',\n", + " 'uommene e uommene',\n", + " \"ca' nun ce stann cchiù uommene uommene\",\n", + " 'e nun se parlan uommene e uommene',\n", + " 'e se vennen uommene e uommene',\n", + " 'l’unico omme er sul papà!',\n", + " 'one and two and three and four',\n", + " 'one and two and three and four five',\n", + " 'che cosa è successo? abbiamo perso',\n", + " \"tutti il controllo, c'è da resettare il sistema\",\n", + " 'nei nostri bagagli si racchiudono',\n", + " 'dei mondi diversi e lontani dal vostro',\n", + " 'jaspersound, jaspersound',\n", + " 'qui nessuno ha vergogna, né tanto meno starà',\n", + " \"a giudicare che c'è nei vostri cannoni\",\n", + " 'one and two and three and four',\n", + " 'one and two and three and four five',\n", + " 'one and two and three',\n", + " 'so one a two b three c four d',\n", + " 'jaspersound, jaspersound',\n", + " 'so one and two and three for the jaspers',\n", + " 'un deux trois pour le jaspers',\n", + " 'so one and two and three',\n", + " 'jaspersound',\n", + " 'someday prendo un nastro rosso',\n", + " 'sarà come tu lo vuoi',\n", + " 'il mio cerchio azzurro e verde',\n", + " 'non traspare limiti',\n", + " 'someday prendo un pesce rosso',\n", + " 'involucri di plastica',\n", + " 'vado in centro e mi rifletto',\n", + " 'in lenti divergenti blu',\n", + " 'someway walking nelle piazze',\n", + " \"watchin' cielo elettrico\",\n", + " 'sotterraneo e silenzioso',\n", + " 'corre un cavo verso sud',\n", + " 'something splitting in fase neutro',\n", + " 'fast connection - subito',\n", + " \"l'elio è sazio e sta inglobando atomi di idrogeno\",\n", + " 'god bless me',\n", + " 'tungsteno e aria',\n", + " 'painting mondo sopra tela',\n", + " 'zooming in togliattigrad',\n", + " 'reaching bunker sotterraneo',\n", + " \"stepping nell'oscurità\",\n", + " 'pulling filo interruttore noting luce unusual',\n", + " 'satellites as lampadine',\n", + " 'bruciano in the universe',\n", + " 'forget the pain and all the games we play',\n", + " 'forget the worry and the shame',\n", + " \"i don't want no more\",\n", + " 'the gates of hell are waiting',\n", + " 'let them wait a little more',\n", + " '(ah-ah, ah...)',\n", + " 'where, where i go',\n", + " \"my spirit is free, i'm coming home\",\n", + " 'where, where i go (oh, where i...)',\n", + " 'remember me, but let me go...',\n", + " 'with no regrets i lay down all my blame',\n", + " \"the fate, the hate, it's all the same\",\n", + " '(you will become who you are...)',\n", + " \"i don't care no more\",\n", + " '(oh-oh, oh-oh, oh...)',\n", + " 'the gates of hell are waiting',\n", + " 'let them wait a little more',\n", + " '(ah-ah, ah...)',\n", + " 'where, where i go',\n", + " \"my spirit is free, i'm coming home\",\n", + " 'where, where i go (oh, where i...)',\n", + " 'remember me, but let me go...',\n", + " 'senza rimpianti abbandono la colpa',\n", + " \"il destino e l'odio sono una cosa sola\",\n", + " \"i cancelli dell'inferno ci stanno aspettando\",\n", + " 'lascia che attendano',\n", + " 'ovunque stia andando',\n", + " 'il mio spirito è libero',\n", + " 'sto tornando a casa',\n", + " 'conserva il ricordo',\n", + " 'ma lascia che io vada',\n", + " '(hey-ey-ey-ey-ey...)',\n", + " 'where, where i go',\n", + " \"my spirit is free, i'm coming home\",\n", + " 'where, where i go',\n", + " 'remember me, remember me',\n", + " 'remember me, but let me go...',\n", + " 'i can feel i can fly...',\n", + " 'where, where i go',\n", + " 'i can feel i can fly',\n", + " 'where, where i go...',\n", + " '\"clamoroso, nuova grande impresa del rock and roll che batte il rap, la techno e si insedia stabilmente al primo posto nella classifica dei generi musicali preferiti dai giovani italiani',\n", + " 'nuove accuse per il rock and roll sospettato per aver orinato sul palco e di aver mangiato la testa di un pipistrello; coinvolto - e sarebbe incredibile - anche il rock and roll acrobatico',\n", + " 'clamorosi sviluppi nella vicenda che vede coinvolti da una parte il rock and roll e dall\\'altra le forze anti rock and roll, i cosiddetti matusa; dopo i recenti attacchi di questi ultimi, il rock ha risposto con un indecoroso rumore molesto, vediamo:\"',\n", + " 'il rap non mi va',\n", + " \"l'hip hop proprio non mi va\",\n", + " 'la techno è una merda',\n", + " 'ma il rock and roll, il rock and roll',\n", + " 'sì che mi piace',\n", + " 'non ha mai scontentato nessuno',\n", + " 'il rock and roll, il rock and roll',\n", + " 'facile da suonare:',\n", + " 'rock, rock, rock, rock and roll',\n", + " 'rock and roll',\n", + " 'il jazz, troppi assoli',\n", + " 'la fusion è complicata',\n", + " 'ma il rock and roll',\n", + " 'il rock and roll sì che mi piace',\n", + " 'non ha mai deluso nessuno',\n", + " 'il rock and roll',\n", + " 'il rock and roll, facile da suonare:',\n", + " 'rock, rock, rock, rock and roll',\n", + " 'rock and roll, rock and roll',\n", + " 'rock and roll, rock and roll',\n", + " 'non mi va, non ci sto, rock and roll',\n", + " 'io vorrei solo rock and roll!',\n", + " 'ma il rock and roll, il rock and roll',\n", + " 'sì che mi piace',\n", + " 'il rock and roll. il rock and roll',\n", + " 'facile da suonare',\n", + " 'maledetto rock and roll',\n", + " 'tu spacchi gli alberghi e orini sul mondo',\n", + " 'rock and roll',\n", + " 'mamma mia, mamma mia, rock and roll',\n", + " 'rock!',\n", + " 'rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " 'rock and roll. rock and roll',\n", + " '\"clamoroso: nuova grande impresa del rockandroll, che batte il rap, la techno e si insedia stabilmente al primo posto nella classifica dei generi musicali preferiti dai giovani italiani',\n", + " 'il rock and roll braccato su tutto il territorio nazionale dalle forze dell\\'ordine, dopo le recenti devastazioni di camere d\\'albergo.\"',\n", + " 'e datemi il rock and roll!',\n", + " '\"ecco, secondo l\\'agenzia transpress, il rock si starebbe aggirando ubriaco urlando come un pazzo, in compagnia, purtroppo, del rock and roll acrobatico, che sarebbe suo ostaggio!\"',\n", + " '(in sottofondo, sottovoce:)',\n", + " 'ti piace! ti piace tanto il rock and roll!',\n", + " 'ecco! ti sborro!',\n", + " 'yeah, and this is mister rock and roll!',\n", + " '\"suo ostaggio! suo ostaggio! suo ostaggio!\"',\n", + " '\"rock and roll!',\n", + " 'arriva, arriva una bomba... arriva il migliore...',\n", + " 'roooock and roooooooooooooll... aaaaaaaaah!\"',\n", + " 'i’m gonna kill you!',\n", + " 'sono la bestia, il male che si presta per l’inchiesta',\n", + " 'la voce di chi bluffa e ti pesta su richiesta!',\n", + " 'armi a terra prima che l’ansia mi prenda',\n", + " 'sotterro l’ascia di guerra sulla tua faccia di merda!',\n", + " 'la storia è questa: chi sei e cosa vuoi?',\n", + " 'straight to the point, pass pass me the joint!',\n", + " 'i nostri sogni vanno in pasto agli avvoltoi',\n", + " 'perché se non li inventiamo i veri mostri siamo noi',\n", + " 'nella blacklist siamo depressi per colpa di una finta bad bitch',\n", + " 'vuole farmi a pezzi come la strega di blair witch!',\n", + " 'boy band ‘n sync, finti come il wrestling',\n", + " 'scemi fottete contro van helsing!',\n", + " 'rest in peace, corazzato come un kantus',\n", + " 'ho fatto un altro album, tu stai silente, albus!',\n", + " 'capo di sto cazzo, sei grande come un quantum',\n", + " 'fatti un autoscatto col .44 magnum!',\n", + " 'bellimbusti senza requisiti giusti',\n", + " 'cambiano i tuoi gusti in base a quale cazzo succhi!',\n", + " 'posso mangiarti cruda come il sushi',\n", + " 'push me, pussy, ti strusci, no time for your bullshit',\n", + " 'parli con chi conta?',\n", + " 'riempiti la bocca con i soldi che ti porti nella tomba',\n", + " 'mi prendo la colpa se l’odio mi somiglia',\n", + " 'ma se tocco il fondo cambio bottiglia!',\n", + " \"i'm a killer!\",\n", + " 'no excuses, i was born this way!',\n", + " \"i'm a killer!\",\n", + " \"no solution, ain't no word to say\",\n", + " \"i'm a killer!\",\n", + " 'no excuses, i was born this way!',\n", + " \"i'm a killer!\",\n", + " \"no solution, ain't no word to say\",\n", + " 'i got a little bit a anger to vent',\n", + " \"stick a faggot rapper's pretty head in cement\",\n", + " \"i don't give a shit if you are a g or a gent\",\n", + " \"this is rock 'n roll now you see what i meant\",\n", + " 'give me that hard guitar riff',\n", + " 'your nursery bars is garbage',\n", + " 'my samurai swords the sharpest',\n", + " \"slice 'em, dice 'em, put them in a box quick!\",\n", + " 'i cock back and spill your brain',\n", + " 'machete to your neck bitch, feel the pain',\n", + " \"money ain't changed skits, still the same!\",\n", + " 'give me that fat check, bills to pay!',\n", + " \"ugly mug and i'm sick since evil\",\n", + " 'rub me wrong and i turn ezekiel',\n", + " 'needles, pins, pins and needles',\n", + " 'vicious, nitro, porco d-!',\n", + " \"i'm a killer!\",\n", + " 'no excuses, i was born this way!',\n", + " \"i'm a killer!\",\n", + " \"no solution, ain't no word to say\",\n", + " \"i'm a killer!\",\n", + " 'no excuses, i was born this way!',\n", + " \"i'm a killer!\",\n", + " \"no solution, ain't no word to say\",\n", + " 'perché cerchi di essere ciò che non sei?',\n", + " 'la realtà è un insieme di specchi deformi',\n", + " 'perché non posso essere ciò che vorrei?',\n", + " 'non ho tempo sono intento a decompormi',\n", + " 'perché vorresti avere quello che non hai?',\n", + " 'hai ciò che serve non parlo di soldi',\n", + " 'perché mi vuoi insegnare quello che non sai?',\n", + " \"i can't stand none of your lies!\",\n", + " 'so let the blood come down!',\n", + " 'ehi, attenti che i bambini sono pazzi',\n", + " 'i giocattoli li fanno stare matti',\n", + " 'loro giocano e poi ridono di niente',\n", + " 'è un pericolo, pericolo costante',\n", + " 'attention, deficit hyperactivity disorder',\n", + " 'attention, deficit hyperactivity',\n", + " 'con la testa demoliscono i palazzi',\n", + " 'se li sgridi si buttan dai terrazzi',\n", + " 'loro vedono un mondo strabiliante',\n", + " 'i bambini, i bambini sono pazzi!!',\n", + " 'attention, deficit hyperactivity disorder',\n", + " 'attention, deficit hyperactivity',\n", + " 'disorder, disorder!',\n", + " 'ah, ah',\n", + " 'come sai puoi vincere',\n", + " 'così guardami, so fingere',\n", + " 'come sai non ho fame',\n", + " 'come vuoi, lo so, non fa male',\n", + " 'guardami, puoi fendere',\n", + " 'voli dentro me, so fingere',\n", + " 'come sai non ho fame',\n", + " 'come vuoi, lo so, non fa male',\n", + " 'come sai non ho fame',\n", + " 'come vuoi, lo so, non fa male',\n", + " 'come sai qui sto bene',\n", + " 'legami se vuoi non fa male, uh',\n", + " 'come sai',\n", + " 'come sai',\n", + " \"tuto l'ano stemo qua\",\n", + " \"a spetar che vegna ista'\",\n", + " 'sensa pressa ndemo pian',\n", + " 'sempre co na bira in man',\n", + " 'ti ga voja de spiagion',\n", + " 'monta su sol me vespon',\n", + " 'na sopressa e un chio de pan',\n", + " 'femo festa fin doman',\n", + " 'vien co mi che qua se sua',\n", + " 'e se no sta casa tua',\n", + " 'no sta romparme e toe',\n", + " 'poe vegnire chi che voe',\n", + " 'no sta fare el goldon',\n", + " 'ndemo via a baeton',\n", + " \"varda mi che so s-ciopa'\",\n", + " 'me ne ciavo de sti qua',\n", + " 'che xe quei tuti esaltai',\n", + " 'e fa i fighi paestrai',\n", + " 'quante mone che ghe xe',\n", + " 'pa ogni parte che te ve',\n", + " 'co xe sera carburar',\n", + " 'e po via a pasturar',\n", + " 'vien co mi che qua se sua',\n", + " 'e se no sta casa tua',\n", + " 'no sta romparme e toe',\n", + " 'poe vegnire chi che voe',\n", + " 'no sta fare el goldon',\n", + " 'ndemo via a baeton',\n", + " 'vien co mi che qua se sua',\n", + " 'e se no sta casa tua',\n", + " 'no sta romparme e toe',\n", + " 'poe vegnire chi che voe',\n", + " 'no sta fare el goldon',\n", + " 'ndemo via a baeton',\n", + " 'ci sparavamo quei video',\n", + " 'ci guardavamo quei video',\n", + " 'delle fettine panate',\n", + " \"dopo aver fatto l'amore\",\n", + " 'ci sparavamo quei video',\n", + " 'ci guardavamo quei video',\n", + " 'delle fettine panate',\n", + " \"dopo aver fatto l'amore\",\n", + " \"delle fettine pa' (x16)\",\n", + " 'ci sparavamo quei video',\n", + " 'ci guardavamo quei video',\n", + " 'la mattina, la sera',\n", + " 'era la stessa storia',\n", + " 'ci guardavamo quei video',\n", + " 'ci sparavamo nei video',\n", + " 'delle fettine panate',\n", + " \"dopo aver fatto l'amore\",\n", + " \"delle fettine pa' (x16)\",\n", + " 'ci sparavamo quei video',\n", + " 'ci guardavamo quei video',\n", + " 'delle fettine panate',\n", + " \"dopo aver fatto l'amore\",\n", + " 'ci sparavamo quei video',\n", + " 'ci facevamo dei video',\n", + " 'delle fettine panate',\n", + " \"dopo aver fatto l'amore\",\n", + " \"delle fettine pa' (x16)\",\n", + " 'ci facevamo quei video',\n", + " 'ci facevamo nei video',\n", + " 'delle fettine panate',\n", + " \"dopo aver fatto, dopo aver fatto l'amore\"]},\n", + " 'data': ['hooligan, parlo cockney',\n", + " 'in macchina in sette, tafferugli',\n", + " 'oh sì, cresciuti nel parco, hyde park',\n", + " 'sto mettendo benzina, irish pub',\n", + " 'da una stalla alle stelle, al bar delle star',\n", + " 'la giacca di pelle, in paradiso con kurt',\n", + " 'baby, come on',\n", + " 'figlio di un dio, figlio di un bar',\n", + " 'non mi far litigare (come on)',\n", + " 'figlio di un dio, figlio di un bar (come on)',\n", + " 'non mi far litigare (baby, come on)',\n", + " 'figlio dei jeans, figlio dei club (come on)',\n", + " 'lasciatemi stare (baby, come on)',\n", + " \"figlio di tro', figli di star (come on)\",\n", + " 'posso ancora guidare (baby, come on)',\n", + " 'figlio di un dio, figlio di un bar (come on)',\n", + " 'lasciatemi stare',\n", + " 'bomber black (come on)',\n", + " 'stivaletto (baby, come on)',\n", + " 'domenica a messa (come on)',\n", + " 'sigaretta (baby, come on)',\n", + " 'oh, sì, cintura di pelle (oh, yeah)',\n", + " 'serpente',\n", + " 'camicia aperta (oh, dio)',\n", + " 'delinquente',\n", + " 'occhiaie e porsche',\n", + " 'kate moss',\n", + " 'paradiso di star (oh, yeah)',\n", + " 'su una rolls (baby, come on)',\n", + " 'figlio di un dio, figlio di un bar',\n", + " 'non mi far litigare (come on)',\n", + " 'figlio di un dio, figlio di un bar (come on)',\n", + " 'non mi far litigare (baby, come on)',\n", + " 'figlio dei jeans, figlio dei club (come on)',\n", + " 'lasciatemi stare (baby, come on)',\n", + " \"figlio di tro', figli di star (come on)\",\n", + " 'posso ancora guidare (baby, come on)',\n", + " 'figlio di un dio, figlio di un bar (come on)',\n", + " 'lasciatemi stare (baby, come on)',\n", + " '(figlio di un dio, figlio di un bar)',\n", + " '(figlio di un dio, figlio di un bar)',\n", + " 'non mi far litigare (baby, come on)',\n", + " '(figlio di un dio, figlio di un bar)',\n", + " '(figlio di un dio, figlio di un bar)',\n", + " 'lasciatemi stare (come on)',\n", + " 'figlio di un dio, figlio di un bar (come on)',\n", + " 'non mi far litigare (baby, come on)',\n", + " 'figlio dei jeans, figlio dei club (come on)',\n", + " 'lasciatemi stare (baby, come on)',\n", + " \"figlio di tro', figli di star (come on)\",\n", + " 'posso ancora guidare (baby, come on)',\n", + " 'figlio di un dio, figlio di un bar (come on)',\n", + " 'lasciatemi stare (baby, come on)',\n", + " 'vai vai vai olio lubrifica',\n", + " 'che sta sera vago co na tosa magnifica',\n", + " 'anca se ea no lo sa',\n", + " 'borgellissimo e feice so xa mexo suà',\n", + " 'cossà ghe xe de mae, tutti se vergogna',\n", + " 'a dire che ghe voe a dire che bisogna',\n", + " 'fa ridare a xente coe recie delicae',\n", + " 'che pensa che sta qua sia na canson demensiae',\n", + " \"l'amore in do xe complicà\",\n", + " 'te poe far stare mae',\n", + " 'ghe xe chi preferisse',\n", + " 'stare a ramenarse e bae',\n", + " 'ai ai ai ai ai ai ai',\n", + " 'menandome el cuco no go sbaglià mai',\n", + " 'mi vago a memoria no serve giornai',\n", + " 'coe principesse, coe streghe e xo seghe',\n", + " 'no sta ciaparne massa sul serio ma semo seri',\n", + " 'chi che ga el cuco sempre in man no ga pensieri',\n", + " 'o forse ghe na anca massa e xe sidià',\n", + " 'a nostra società voe che te pensi a pinciare se sa',\n", + " 'de amore se more come julietta e romeo',\n", + " \"no xe mai morto nissuni co se menava l'oseo\",\n", + " 'e noialtri xoghemo, xoghemo a carte scoverte',\n", + " 'altro che va in letto e man sora e coverte',\n", + " \"l'amore in do xe complicà\",\n", + " 'te poe far stare mae',\n", + " 'ghe xe chi preferisse',\n", + " 'stare a ramenarse e bae',\n", + " 'ai ai ai ai ai ai ai',\n", + " 'menandome el cuco no go sbaglià mai',\n", + " 'mi vago a memoria no serve giornai',\n", + " 'coe principesse, coe streghe e xo seghe',\n", + " 'ai ai ai ai ai ai ai',\n", + " 'a voia de figa no passarà mai',\n", + " 'sta tento che quei che xe scandaixai',\n", + " 'xe pexo de ti co i va casa e xo seghe',\n", + " 'ai ai ai ai ai ai ai',\n", + " 'menandome el cuco no go sbaglià mai',\n", + " 'mi vago a memoria no serve giornai',\n", + " 'coe principesse, coe streghe e xo seghe',\n", + " 'ai ai ai ai ai ai ai',\n", + " 'a voia de figa no passarà mai',\n", + " 'sta tento che quei che xe scandaixai',\n", + " 'xe pexo de ti co i va casa e xo seghe',\n", + " 'ho visto prati muoversi',\n", + " 'come il mare',\n", + " 'nel grano d’inverno',\n", + " 'e uccelli liberi',\n", + " 'tuffarsi',\n", + " 'per non tornare, per non tornare…',\n", + " 'l’amore sa',\n", + " 'ho visto senza luce',\n", + " 'domeniche di gospel nell’aria',\n", + " 'e giorni luminosi',\n", + " 'solo di te, solo di te',\n", + " 'l’amore sa',\n", + " 'e tutto brilla',\n", + " 'let it shine, shine, shine',\n", + " 'shine on me',\n", + " 'let it shine, shine, shine',\n", + " 'shine on me',\n", + " 'se perdo la mia fede',\n", + " 'che avevo in te',\n", + " 'ritornera’ il buio',\n", + " 'perché di te',\n", + " 'io mi illumino',\n", + " 'solo di te, solo di te',\n", + " 'l’amore fa',\n", + " 'e tutto brilla',\n", + " 'let it shine, shine, shine',\n", + " 'shine on me',\n", + " 'let it shine, shine, shine',\n", + " 'shine on me',\n", + " 'let it shine, shine, shine',\n", + " 'shine on me',\n", + " 'let it shine, shine, shine',\n", + " 'shine on me',\n", + " 'e’ tutto qui',\n", + " 'eppure e’ tutto qui',\n", + " 'let it shine, shine, shine',\n", + " 'let it shine',\n", + " 'let it shine, shine, shine',\n", + " 'let it shine',\n", + " 'ho visto il mississippi',\n", + " 'come un mare',\n", + " 'andare all’inferno',\n", + " 'e un angelo',\n", + " 'tuffarsi',\n", + " 'per non tornare, per non tornare…',\n", + " 'l’amore sa',\n", + " 'se colpa de so mama che se na bea dona',\n", + " 'so pare anca lu col ghe la vede al dise bona',\n", + " 'dopo na bea serata dopo anca i biciarini',\n", + " \"e una e do e tre', po' vien vanti i fantuini\",\n", + " 'picinin, vogio tornar picinin',\n", + " 'de dormir in pase desso ti ga finio',\n", + " 'tuta la note in pie a sentir che pianse el fio',\n", + " 'ogni ocasion se bona par far casin',\n", + " 'e se el fio se lagna no te digo el me vissin...',\n", + " 'che co gero picinin no vardavo el taquin',\n", + " \"coi tempi che coreva 'andavo drito de bain\",\n", + " 'perché co sincue franchi me compravo e figurine',\n", + " \"co diese franchi tutto l'album de stampine\",\n", + " 'co vinti franchi ma',\n", + " 'e magnavo un stic',\n", + " 'co trenta franchi ghe robavo na bic',\n", + " 'co mie franchi, che gera un tesoro',\n", + " \"compravo tre' grami de libano oro...\",\n", + " 'sei molto avara ed altrettanto sei crudele',\n", + " 'se penso a te nella bocca ho solo fiele',\n", + " 'non capisci che qua si soffre',\n", + " 'tu non capisci che siamo ombre',\n", + " 'pronte a sciogliersi dentro al crepuscolo',\n", + " 'ci spazzi via come fossimo pulviscolo',\n", + " 'il tuo gelo inquietante mi imprigiona',\n", + " 'ma tu non sei più mia padrona',\n", + " 'ho visto gente disperarsi tutti per la stessa causa',\n", + " 'ho visto quanto il mondo è avaro e da allora ne ho la nausea',\n", + " 'è una gara senza tregua',\n", + " 'vince chi più spende il contagio cresce in fretta',\n", + " 'questa malattia si espande',\n", + " 'è una battaglia che perdiamo nessuno ha il tuo potere',\n", + " 'tutti pronti a fottersi per poterti avere',\n", + " 'interpreto sto mondo come merce da mercato',\n", + " 'impreco contro dio che da qua non ci ha salvato',\n", + " 'vita balorda e ingorda ti parlo ma sei sorda',\n", + " 'il domani è già arrivato ciò che è stato non si scorda',\n", + " 'due corpi pieni di te ma tu sei venuta meno',\n", + " \"e allora dammi un perché a 'sto ritmo non c'è freno\",\n", + " \"loro ignoravano che era l'ultimo dei giorni\",\n", + " 'tu abbandoni per sempre e già so che non ritorni',\n", + " 'vita fuggitiva esperienza punitiva',\n", + " 'qualunque sia il tuo senso posizione o prospettiva',\n", + " 'oh my life you make me cry again',\n", + " 'you sweep me away like ash',\n", + " \"and now i'm going to crash i'm breakin' down\",\n", + " 'oh my life you make me cry again',\n", + " 'you sweep me away like ash',\n", + " \"and now i'm going to crash i'm breakin' down\",\n", + " 'oh my life you make me cry again',\n", + " 'you sweep me away like ash',\n", + " \"and now i'm going to crash\",\n", + " \"i'm breakin' down\",\n", + " 'oh my life you make me cry again',\n", + " 'you sweep me away like ash',\n", + " \"and now i'm going to crash\",\n", + " \"i'm breakin' down\",\n", + " \"so i'll live every day like the last of my life\",\n", + " 'i saw too brothers die',\n", + " \"and i know we'll always cry\",\n", + " 'work and make your empire',\n", + " 'no question no reason',\n", + " 'keep quiet will be come the harvest season',\n", + " 'fanatici del business persi nei loro affari',\n", + " 'scarseggiano i denari effetti collaterali',\n", + " 'manicheismo tra ricchezza e povertà',\n", + " 'e continuiamo a non capire quale sia la realtà',\n", + " \"so i'll live every day like the last of my life\",\n", + " \"i saw too brothers die and i know we'll always cry\",\n", + " 'work and make your empire no question no reason',\n", + " 'keep quiet will be come the harvest season',\n", + " 'è un incastro meccanismo',\n", + " 'agite con tempismo',\n", + " \"vi arricchite per la gioia ma perdete l'umorismo\",\n", + " 'ennesimo incantesimo sogni per gli ingordi',\n", + " 'più cresci e più ti accorgi che hanno un prezzo anche i tuoi sogni',\n", + " \"so i'll live every day like the last of my life\",\n", + " \"i saw too brothers die and i know we'll always cry\",\n", + " 'work and make your empire',\n", + " 'no question no reason',\n", + " 'keep quiet will become the harvest season',\n", + " \"if your mind is standing by you don't think you don't realize\",\n", + " 'that is high the bloody price',\n", + " 'you become colder than ice',\n", + " 'lend your blow even if you bleed',\n", + " 'take your time that you really need',\n", + " 'you must get up from this filthy shit',\n", + " 'live your life and go on free',\n", + " 'oh my life you make me cry again',\n", + " 'you sweep me away like ash',\n", + " \"and now i'm going to crash\",\n", + " \"i'm breakin' down\",\n", + " 'oh my life you make me cry again',\n", + " 'you sweep me away like ash',\n", + " \"and now i'm going to crash\",\n", + " \"i'm breakin' down\",\n", + " 'oh my life you make me cry again',\n", + " 'you sweep me away like ash',\n", + " \"and now i'm going to crash\",\n", + " \"i'm breakin' down\",\n", + " 'oh my life you make me cry again',\n", + " 'you sweep me away like ash',\n", + " \"and now i'm going to crash\",\n", + " \"i'm breakin' down\",\n", + " 'life bitch',\n", + " 'you make me cry',\n", + " 'life bitch',\n", + " 'you make me cry life bitch',\n", + " 'you make me cry life bitch',\n", + " 'you make me cry',\n", + " 'xe istà! e semo tuti pronti a fare merdon',\n", + " 'xe istà! poenta ossi e vin soto el baraccon',\n", + " 'xe istà! mi no avevo a machina scapotà',\n", + " 'coea moea a disco a go cavà!',\n", + " 'xe istà! co sento caldo me par tuto pì beo',\n", + " \"xe istà! canotierine che me tira l'oseo\",\n", + " 'xe istà! sempre col brasso fora dal finestrin',\n", + " 'scolto i pomata e i angelstrip',\n", + " 'a cassago massa caldo fa, eora',\n", + " 'vago',\n", + " 'a butarme dentro in tergoea',\n", + " 'a cassago',\n", + " \"appuntamento fisso pà l'istà\",\n", + " 'co gossosparty e rumatera',\n", + " 'fasemo merda e te spetemo qua!',\n", + " 'cassago sitis laif',\n", + " 'cassago sitis laif',\n", + " 'cassago sitis laif',\n", + " \"dai che 'ndemo uoooh!\",\n", + " \"dai che 'ndemo uoooh!\",\n", + " \"dai che 'ndemo uoooh!\",\n", + " \"dai che 'ndemoooooooo!\",\n", + " 'a cassago massa caldo fa, eora',\n", + " 'vago a butarme dentro in tergoea',\n", + " 'a cassago',\n", + " \"appuntamento fisso pà l'istà\",\n", + " 'co gossosparty e rumatera',\n", + " 'fasemo merda e te spetemo qua',\n", + " 'cassago sitis laif',\n", + " 'cassago sitis laif',\n", + " 'cassago sitis laif',\n", + " \"l sol l'è da un pezz già tramuntaa\",\n", + " 'e numm semm chi intorn al foeugh adrè a balaa',\n", + " \"la luna adess l'è già alta soo in del ciel\",\n", + " 'e numm semm chi ammò adrè a bev',\n", + " 'on oltra bira, on alter gir intorn al foeugh',\n", + " 'on oltra volta e poeu se turna indré anmò',\n", + " 'cantem la téra, i montagn, i noster bosch',\n", + " \"festa pagana da la matina a quand l'è fosch!!\",\n", + " 'yes i know my way',\n", + " \"ma nun' è addò m'aie purtato tu\",\n", + " 'yes i know my way',\n", + " \"mo' nun me futte cchiù\",\n", + " \"mo' nun me futte cchiù\",\n", + " \"tu vaje deritto e i' resto a pere\",\n", + " \"và tu va tant'io sbareo\",\n", + " 'yes i know my way',\n", + " \"'e guaie mie 'e saccio i'\",\n", + " 'ma chi me crede',\n", + " 'yes i know my way',\n", + " \"ma tu nun puo' venì\",\n", + " \"ma tu nun puo' venì\",\n", + " \"ij m'arreseco sulo si vale 'a pena 'e tentà\",\n", + " \"ma po' chi mm'o ffa' fa\",\n", + " \"siente fa' accussì nun dà retta a nisciuno\",\n", + " \"fatte 'e fatte tuoie\",\n", + " \"ma si aje suffrì caccia 'a currea\",\n", + " \"siente fa' accussì\",\n", + " \"miette 'e creature 'o sole\",\n", + " \"pecchè hanna sapè' addò fà friddo\",\n", + " 'e addò fà cchiù calore',\n", + " 'yes i know my way',\n", + " \"ma nun' è addò m'aie purtato tu\",\n", + " 'yes i know my way',\n", + " \"mo' nun me futte cchiù\",\n", + " \"mo' nun me futte cchiù\",\n", + " \"tu vaje deritto e i' resto a pere\",\n", + " \"và tu va tant'io sbareo\",\n", + " 'yes i know my way',\n", + " \"'e guaie mie 'e saccio ij\",\n", + " 'ma chi me crede',\n", + " 'yes i know my way',\n", + " \"ma tu nun puo' venì\",\n", + " \"ma tu nun puo' venì\",\n", + " \"i' m'arreseco sulo si vale 'a pena 'e tentà'\",\n", + " \"ma po' chi mm'o ffa' fa\",\n", + " \"siente fa' accussì nun dà retta a nisciuno\",\n", + " \"fatte 'e fatte tuoie\",\n", + " \"ma si aje suffrì caccia 'a currea\",\n", + " \"siente fa' accussì\",\n", + " \"miette 'e creature 'o sole\",\n", + " 'pecchè hanna sapè addò fà friddo',\n", + " 'e addò fà cchiù calore',\n", + " 'yes i know my way',\n", + " 'yes i know my way',\n", + " 'my way',\n", + " 'my way']}}},\n", + " 'ja': {'sentence': {'pop': {'meta': {'train_data': ['see the world is in your hands',\n", + " 'and you don’t need to pretend',\n", + " 'that you fit fine in this',\n", + " 'i’m gonna take you on a trip',\n", + " 'somewhere where the sea is clear',\n", + " 'where the sun burns your skin',\n", + " 'feel the wind inside your hair',\n", + " 'and take a deep breath',\n", + " 'smell the sand',\n", + " 'embrace the mess',\n", + " '何でも,何でも,できるからのに',\n", + " '何度も,何度も,花見の踊り',\n", + " '見せたい!',\n", + " '心の中にわかりますか?',\n", + " '私の気持ちを聞こえたますか?',\n", + " 'i just need tenderness',\n", + " 'あなたのところはどこにありますか',\n", + " '私の場所にある日くるのか',\n", + " 'i just see emptiness',\n", + " 'どうしてあなたに全部あげたいよ',\n", + " 'feel the sea upon your face',\n", + " 'and make your own way',\n", + " 'see it shines',\n", + " 'as it’s your quest',\n", + " '何でも,何でも,できるからのに',\n", + " '何度も,何度も,花見の踊り',\n", + " '見せたい!',\n", + " '一度 踏み外した',\n", + " '見えない階段があって',\n", + " '恐くなって',\n", + " '大きく感じていたんだ',\n", + " '(oh) 嫌いになって',\n", + " '(oh) 投げ出したって',\n", + " '自分からは逃げらんないから',\n", + " 'so i bring me some new sox',\n", + " '磨いたクツで',\n", + " 'もう一回 出直したって',\n", + " \"they can't say like\",\n", + " '\"アハハハ\" no, \"アハハハ\" no, no',\n", + " 'i believe myself',\n", + " 'so! burn it man, burn it man',\n", + " 'life is a bit like the tournament',\n", + " 'たいがいの場合 自分次第',\n", + " 'やりきったら後悔なんてない',\n", + " 'get it all together',\n", + " '練って 待って',\n", + " 'yes 戦闘モード ok',\n", + " 'ネバギバでしょ?',\n", + " 'テンション 上がってんなら 皆',\n", + " 'clap your hand',\n", + " '巻いて like this',\n", + " 'リズムに乗ってstop!!',\n", + " 'うらはらドキッて、息をきって',\n", + " 'bounce now! and stop!!',\n", + " \"don't know what's comin' up\",\n", + " 'but i make it through',\n", + " '根拠なんて無いけど',\n", + " 'as long as we keep all',\n", + " 'our dreams alive',\n", + " 'then we gonna make it there, right!?',\n", + " 'bring me some new sox',\n", + " '服を着替えて',\n", + " 'もう一回 出直したって',\n", + " \"they can't say like\",\n", + " '\"アハハハ\" no, \"アハハハ\" no, no (hell no!)',\n", + " 'so watch out now (watch out now)',\n", + " 'bring me my sunglasses',\n", + " '助走付けて',\n", + " 'もう一回戦 挑んだって',\n", + " 'we can sing like (say what?)',\n", + " '\"アハハハ\" no, \"アハハハ\" no, no (hell yeah!)',\n", + " 'so believe yourself',\n", + " 'dark cloud, loneliness',\n", + " 'no helping hand',\n", + " 'can you handle this?',\n", + " 'i make you say \"uh uh uh\"',\n", + " 'i know you can do it',\n", + " 'what? dark cloud, rainy day',\n", + " \"no one's around\",\n", + " 'can you handle this?',\n", + " \"oops! baby then you'll know\",\n", + " 'your life will go on',\n", + " 'oh yeah?',\n", + " 'never give yourself up!',\n", + " 'oh, oh, ok!',\n", + " 'go and keep your hand up!',\n", + " 'keep your hand up feel me?',\n", + " \"oh i'll take you there now\",\n", + " 'why! you ready? hold on',\n", + " 'now we gonna rock the house!!!',\n", + " 'bring me some new sound',\n", + " '襟をつめて',\n", + " 'もう一回 出直したって',\n", + " \"they can't say like\",\n", + " '\"アハハハ\" no, \"アハハハ\" no, no (hell no!)',\n", + " 'so watch out now (watch out now)',\n", + " 'bring me my sunglasses',\n", + " '空を目指して',\n", + " 'もう一回戦 挑んだって',\n", + " 'we can sing like (say what?)',\n", + " '\"アハハハ\" no, \"アハハハ\" no, no (oh yeah)',\n", + " 'so believe yourself (yourself)',\n", + " 'いつだって',\n", + " 'あの雲抜け出すためなら',\n", + " 'どんな風向きでも',\n", + " \"it's not mine\",\n", + " \"but it's alright, yeah (yeah)\",\n", + " 'here we go now everybody say',\n", + " 'our (our)',\n", + " 'say ooh (ooh)',\n", + " 'ok, say oh yeah (oh yeah)',\n", + " 'bring me some new sound',\n", + " '顔をあげて (yeah)',\n", + " 'もう一回出直したって',\n", + " \"they can't say like\",\n", + " '\"アハハハ\" no, \"アハハハ\" no, no (hell no)',\n", + " 'いつだって',\n", + " '間違いなんて',\n", + " '笑い飛ばし',\n", + " '迷惑だってかけちゃって',\n", + " '何遍だってやり直せる',\n", + " 'you can make it right',\n", + " \"'cause i know it\",\n", + " 'bring me my sunglasses',\n", + " '空を目指して (yeah)',\n", + " 'もう一回戦挑んだって',\n", + " 'we can sing like (say what?)',\n", + " '\"アハハハ\" no, \"アハハハ\" no, yeah',\n", + " 'so believe yourself',\n", + " '弾んだ気持ち止まんない',\n", + " 'love me love me love me love me love me baby',\n", + " 'you&i 秘密(ナイショ)のメッセージ',\n", + " 'tell me tell me tell me now',\n", + " 'キミの人気はナンバーワン',\n", + " 'love me love me love me love me love me baby',\n", + " 'でも僕だけ見ていてよ',\n", + " 'show me show me show me now',\n", + " 'wait! ちょっと危険だな。 好きになり過ぎた',\n", + " 'no! ソッコーout of control アメージングなmy lover',\n", + " 'ok, girl キミには yes man 毎日がheavenly',\n", + " 'ok, girl すでにトリコさ i love you',\n", + " '完ぺきな 恋人に なるから ok, girl',\n", + " 'だから笑ってよ i love you',\n", + " 'baby i don’t have some time',\n", + " 'even though, you make me shine',\n", + " 'but i’m knock out from your appeal',\n", + " 'i wanna get yours be mine(so hot)',\n", + " '?',\n", + " '涙もlucky も半分こ',\n", + " 'love me love me love me love me love me baby',\n", + " 'ぜんぶシェアして歩こう',\n", + " 'tell me tell me tell me now',\n", + " 'wait! なんか焦るんだ。かわい過ぎるから',\n", + " 'no! ホントout of control アメージングなmy lover',\n", + " 'ok, girl キミには yes man 毎日がheavenly',\n", + " 'ok, girl すでにトリコさ i love you',\n", + " '完ぺきな 恋人に なるから ok, girl',\n", + " 'だから笑ってよ i love you',\n", + " 'i need you i’ll never let you go',\n", + " 'telling me whisper',\n", + " 'i’m a super man to you',\n", + " 'would you love me?',\n", + " 'i’ll never wanna leave you, kiss me now',\n", + " 'i’ll never wanna leave you, kiss me now',\n", + " '? ok!',\n", + " 'キミが 誰か 奪われないように',\n", + " 'you 抱きしめていたい!',\n", + " 'ok, girl キミには yes man 毎日がheavenly',\n", + " 'ok, girl すでにトリコさ i love you',\n", + " '完ぺきな 恋人に なるから ok, girl',\n", + " 'だから笑ってよ i love you',\n", + " 'ok, girl キミには yes man 毎日がheavenly',\n", + " 'ok, girl すでにトリコさ i love you',\n", + " 'ひざまずいても 奪ってでも',\n", + " '手に入れないと 気が済まない',\n", + " \"boy, you're so so fly とめられない\",\n", + " 'まるで fire みたいなdesire',\n", + " 'speed it up, boy',\n", + " \"誰にも 乗らせない you're my fast car\",\n", + " '手に負えないけど hot (speed it up, speed it up, speed it up now)',\n", + " 'give me the key',\n", + " 'たまらない let me drive you down the love street',\n", + " '息も出来ぬほどに (gimme that, gimme that gimme that now)',\n", + " '四六時中 そう一晩中',\n", + " '囁いてしまう oh boy, i need you',\n", + " '幻のヴィンテージ まさに exclusive',\n", + " '逃したら次はないから',\n", + " 'speed it up, boy',\n", + " \"誰にも 乗らせない you're my fast car\",\n", + " '手に負えないけど hot (speed it up, speed it up, speed it up now)',\n", + " 'give me the key',\n", + " 'たまらない let me drive you down the love street',\n", + " '息も出来ぬほどに (gimme that, gimme that gimme that now)',\n", + " 'もう熱すぎてオーバーヒート',\n", + " '狂いそうなほど your heart beats',\n", + " 'slow it down, slow it down, just slow it down (baby baby)',\n", + " '任せてよ let me control you',\n", + " '落ち着いてもう一度',\n", + " 'gimme that, gimme, gimme that',\n", + " 'i know what you want, yeah',\n", + " 'speed it up, boy',\n", + " \"誰にも 乗らせない you're my fast car\",\n", + " '手に負えないけど hot (speed it up, speed it up, speed it up now)',\n", + " 'give me the key',\n", + " 'たまらない let me drive you down the love street',\n", + " '息も出来ぬほどに (gimme that, gimme that gimme that now)',\n", + " 'speed it up, boy',\n", + " \"誰にも 乗らせない you're my fast car\",\n", + " '手に負えないけど hot (speed it up, speed it up, speed it up now)',\n", + " 'give me the key',\n", + " 'たまらない let me drive you down the love street',\n", + " '息も出来ぬほどに (gimme that, gimme that gimme that now)',\n", + " 'still in the mood for a melody',\n", + " 'それでも朝日は語る',\n", + " '幼さを捨てる時に',\n", + " '前触れも知らせもないと',\n", + " 'i cannot fly away, i want to cry today',\n", + " '願いは遠く',\n", + " 'but i will try real hard, maybe i can be tough',\n", + " '歩き出すことの意味を知る',\n", + " 'floating feathers in the spring',\n", + " 'i feel the soothing breeze',\n", + " \"i hear it, “don't stay”\",\n", + " '目を閉じればこの背に',\n", + " 'i am ready to get ready',\n", + " 'for my longest journey',\n", + " 'far away, far away',\n", + " 'そっと進み出す',\n", + " 'still in the juvenile memories',\n", + " '今でも響く笑い声',\n", + " 'やさしい日々にも今は',\n", + " '短い別れを告げて',\n", + " 'as the autumn sky',\n", + " 'the scenery surrounds me keep changing',\n", + " 'and, day by day',\n", + " '親しきものたちさえ',\n", + " 'yes, i won’t lose it, believing',\n", + " \"what i've grew in my mind\",\n", + " 'the new day is today',\n", + " 'なにも迷わずに',\n", + " 'forever i will be, whatever i can be',\n", + " '一人ではなく',\n", + " 'so i can fly anywhere, i mean it everywhere',\n", + " '誰かと共に行く意味を知る',\n", + " 'floating feathers in the spring',\n", + " 'i feel the soothing breeze',\n", + " \"i hear it,“don't stay”\",\n", + " '目を閉じればこの背に',\n", + " 'i am ready to get ready',\n", + " 'for my longest journey',\n", + " 'far away, far away',\n", + " 'そっと進み出す',\n", + " 'いつしか風は止んで',\n", + " '視界はただただ広く',\n", + " 'それでも歩は進んで',\n", + " 'きっとこれが 始まりの終わり',\n", + " 'please break my heart',\n", + " 'please break me down',\n", + " 'please break my heart',\n", + " 'please break me down',\n", + " \"sorry sorry, i'm sorry so much\",\n", + " '何もかも捨てた過去は',\n", + " 'baby, baby, i loved you',\n", + " '独りで生きていくから',\n", + " 'sonic, sonic, boom, super sonic',\n", + " 'すぐに忘れられない your face',\n", + " 'baby, baby, i loved you',\n", + " '一人じゃ生きていけないでしょ',\n", + " \"i'm so fine\",\n", + " \"私なら it's okay\",\n", + " \"不意に i'm so crying\",\n", + " '愛に飢えてるの',\n", + " '誰にもきっと近づかないように',\n", + " 'might change my mind',\n", + " \"like 'my oh my'\",\n", + " '間違いだけを照らす moonlight',\n", + " 'もう二度と戻れない good night',\n", + " '望みは一つ so far',\n", + " 'お願いだからどうか',\n", + " 'あなただけなの time goes by',\n", + " '好きなだけ嫌って more',\n", + " 'like gallows-bird',\n", + " '繰り返した',\n", + " 'love makes me…',\n", + " 'bad',\n", + " '誰にも止められない',\n", + " 'why',\n", + " '(please break my heart)',\n", + " '(please break me down)',\n", + " 'ごめんねじゃ足りない',\n", + " 'あなたを愛してる',\n", + " 'そのままこのまま midnight',\n", + " '自由に飛び立て fly more',\n", + " \"sorry sorry, i'm sorry so much\",\n", + " '何もかも捨てた過去は',\n", + " 'baby, baby, i loved you',\n", + " '独りで生きていくから',\n", + " 'sonic, sonic, boom, super sonic',\n", + " 'すぐに忘れられない your face',\n", + " 'baby, baby, i loved you',\n", + " '一人じゃ生きていけないでしょ',\n", + " \"i'm in fan-fan-fantasy\",\n", + " '(i feel blue blue)',\n", + " 'これは fan-fan-fantasy',\n", + " '(i feel blue blue)',\n", + " 'キャパオーバーしそうに',\n", + " 'あなたが したいように',\n", + " 'まだ夢から覚めないみたいに',\n", + " '回る回る時計が tick tack',\n", + " '好きなだけ笑って more',\n", + " '油断しないで',\n", + " \"don't let me go before\",\n", + " 'love makes me…',\n", + " 'bad',\n", + " '始まらないように',\n", + " 'bye',\n", + " '(please break my heart)',\n", + " '(please break me down)',\n", + " 'ごめんねじゃ足りない',\n", + " 'あなたを愛してる',\n", + " 'そのままこのまま midnight',\n", + " '自由に飛び立て fly more',\n", + " 'please break my heart',\n", + " 'please break me down',\n", + " 'please break my heart',\n", + " 'please break me down',\n", + " 'please break my heart',\n", + " 'please break me down',\n", + " 'please break my heart',\n", + " 'please break me down',\n", + " \"sorry sorry, i'm sorry so much\",\n", + " '何もかも捨てた過去は',\n", + " 'baby, baby, i loved you',\n", + " '独りは寂しいけど',\n", + " 'sonic, sonic, boom, super sonic',\n", + " '会いたいわ すぐにそばに来てよ',\n", + " 'baby, baby, i loved you',\n", + " '一人じゃ生きていけないけど',\n", + " 'please break my heart',\n", + " 'please break me down',\n", + " 'please break my heart',\n", + " 'please break my heart',\n", + " 'please break me down',\n", + " 'please break my heart',\n", + " 'please break my heart',\n", + " 'please break me down',\n", + " 'please break my heart',\n", + " 'please break me down',\n", + " '安室奈美恵「interlude〜don’t wanna cry symphonic style」の歌詞',\n", + " \"go! go! go! let's go!\",\n", + " \"that's right!\",\n", + " 'フォルムに目が眩んで完全なるloser',\n", + " 'どうやって取り返しにいこうかmy way',\n", + " 'endlessな毎日が退屈なら',\n", + " 'もうひとつの星で巡り逢おうか',\n", + " '未知なるyou&i',\n", + " '揺れ動くto my heart',\n", + " 'closer closer',\n", + " '深い海の底',\n", + " '高い空の果て',\n", + " 'so tell me are you ready',\n", + " \"let's go let's go let's go go go go\",\n", + " \"let's go let's go let's go let's go\",\n", + " \"go go go let's go\",\n", + " 'android syndrome',\n", + " 'キミだけに従う',\n", + " '導いて in your voice',\n", + " \"―you're my adrenalin―\",\n", + " 'android syndrome',\n", + " '感情もコントロール',\n", + " 'キミ以外は不可能',\n", + " \"―you're my adrenalin―\",\n", + " 'u―ah―yessir!',\n", + " '有能なキミはdeveloper',\n", + " 'u―ra―ra―ra',\n", + " 'クレイジーなほどアン・ドゥ・トロワ',\n", + " '支配の先で理解して',\n", + " 'すべてを巧みに操作して',\n", + " 'エラーを解除してほしい',\n", + " 'その指先で',\n", + " '未知なるyou&i',\n", + " '揺れ動くto my heart',\n", + " 'closer closer',\n", + " '深い孤独の闇',\n", + " '高い理想の果て',\n", + " 'so tell me are you ready',\n", + " \"let's go let's go let's go go go go\",\n", + " \"let's go let's go let's go let's go\",\n", + " \"go go go let's go\",\n", + " 'android syndrome',\n", + " 'キミだけのandroid',\n", + " '気がついてin my voice',\n", + " \"―you're my adrenalin―\",\n", + " 'android syndrome(syndrome)',\n", + " '感覚をlet it go',\n", + " '愛はここにあるよ',\n", + " \"―you're my adrenalin―\",\n", + " 'baby, you give me the soul',\n", + " 'so, ボクはキミのもの',\n", + " \"i can do it! don't worry\",\n", + " \"―you're my adrenalin―\",\n", + " 'baby, you give me hope',\n", + " '永遠にlet me know',\n", + " \"完全にキミのもの(go! go! go! let's go!)\",\n", + " \"―you're my adrenalin―\",\n", + " 'android syndrome',\n", + " 'キミだけに従う',\n", + " '導いて in your voice',\n", + " \"―you're my adrenalin―\",\n", + " 'android syndrome',\n", + " '感情もコントロール',\n", + " 'キミ以外は不可能',\n", + " \"―you're my adrenalin―\",\n", + " 'android syndrom',\n", + " 'キミだけのandroid',\n", + " '気がついてin my voice',\n", + " \"―you're my adrenalin―\",\n", + " 'android syndrome',\n", + " \"感覚をlet's go\",\n", + " '愛はここにあるよ',\n", + " \"―you're my adrenalin―\",\n", + " \"―you're my adrenalin―\",\n", + " '微かに羽ばたきするbutterfly',\n", + " 'let go, let grow, let spread out',\n", + " 'like a water-drop ripple out in waves',\n", + " '今ここから始まる連鎖',\n", + " 'chain (brra) reaction (hey, oh, woah, yeah, yeah, yeah), 拡がる連鎖',\n", + " 'chain reaction (brra, yeah), 繋がる連鎖 (yeah)',\n", + " 'この世界中 轟かす 全てが so effectiveな',\n", + " 'rhythm, beat, melody, we make you so crazy, now',\n", + " \"what's up? flash!\",\n", + " '反応するaffective 変化はelectric',\n", + " \"yeah, it's so electric, yeah (oh-oh-oh)\",\n", + " \"まだほんの生まれたてのfactor (it's a factor)\",\n", + " '共鳴しだす心がmedium *by the medium*',\n", + " 'make a wish, 現実に変えていく *we want to*',\n", + " '(get me started, 今始まる連鎖)',\n", + " 'chain reaction, 拡がる連鎖',\n", + " 'chain reaction, 今ここから世界が繋がる',\n", + " 'ding-ding, 心が hit, hit 繋がる drill, drill',\n", + " \"邪魔するwall, let's break it down (chain)\",\n", + " 'make a wish, 現実に変えていく',\n", + " 'get me started, 今始まる連鎖',\n", + " 'we make it, 未来を make it',\n", + " '小さな蝶が 起こす奇跡',\n", + " '羽ばたきを嵐へ we can change',\n", + " 'stop waiting, get ready, we can make the story',\n", + " 'baby, now you gonna be crazy',\n", + " \"今を don't waste it and choose it, yeah\",\n", + " 'yeah, 信じて just do it',\n", + " '(隔離された世界に 風穴空けるその意思)',\n", + " '何度も打ち込めよ決意 殻を破れ',\n", + " 'ビリビリ痺れる beat が',\n", + " '轟く世界を揺るがす どこまでも',\n", + " '小さな一歩も step by step',\n", + " 'yeah, bass to the beat, going \"brra, brra, brra\"',\n", + " 'hey, are you ready to go?',\n", + " 'yeah, there is no fear',\n", + " 'yeah, there is no fear (yeah)',\n", + " \"まだほんの生まれたてのfactor (it's a factor)\",\n", + " '共鳴しだす心がmedium *by the medium*',\n", + " 'make a wish, 現実に変えていく *we want to*',\n", + " '(get me started, 今始まる連鎖)',\n", + " 'ding-ding, 心が hit, hit 繋がる drill, drill',\n", + " \"邪魔するwall, let's break it down (chain)\",\n", + " 'make a wish, 現実に変えていく',\n", + " 'get me started, 今始まる連鎖',\n", + " '散らばる点を 結んだ線が (oh, yeah)',\n", + " '円になり (touch me right) 縁となる, oh yeah',\n", + " '僕らは new age (through the dark)',\n", + " '(we will become the one, ひとつになれる)',\n", + " '世界が 生まれ変わろうとしてる',\n", + " 'do you feel it? (make the chain)',\n", + " 'we are the one',\n", + " 'chain reaction, 拡がる連鎖',\n", + " 'chain (yeah, eh-eh-eh) reaction, 繋がる連鎖 (chain)',\n", + " 'ding-ding, 心が hit, hit 繋がる drill, drill',\n", + " \"邪魔するwall, let's break it down (chain)\",\n", + " 'make a wish, 現実に変えていく',\n", + " 'get me started, 今始まる連鎖',\n", + " '(ah-ah-ah-ah-ah)',\n", + " 'i wanna see ya, you do, so fine, yeah (yeah, yeah)',\n", + " 'sync dreams, the one makes you start (oh-ooh, yeah)',\n", + " 'i wanna see',\n", + " '(get me started) *今始まる連鎖*',\n", + " 'what’cha gonna do tonight? ギラツイテル floor',\n", + " '制御不能の launcher 不敵の all-rounder',\n", + " '一心不乱に spinning around 楽しいことしよう',\n", + " '閉じ込めた情熱 yeah 出口探してる yeah',\n", + " 'ハダける理性 脱ぎ捨てていいんじゃない?',\n", + " 'let’s party',\n", + " 'get over right away, come on',\n", + " 'we’re gonna make it our story',\n", + " '勇敢で fool 降りしきる laser beam yeah',\n", + " '颯爽と回避(かわ)し go there',\n", + " '1 2 3',\n", + " 'dance dance dance',\n", + " 'dance dance dance',\n", + " 'we just gotta make it grove',\n", + " 'dance dance dance baby',\n", + " 'dance dance dance',\n", + " 'dance dance dance',\n", + " 'dance dance dance',\n", + " 'your kiss make me wanna move',\n", + " 'dance dance dance baby',\n", + " 'dance dance dance',\n", + " '欲望のままに火花散らそう',\n", + " '忘却の yesterday 桃源郷まで dive',\n", + " 'そう come on',\n", + " 'dance dance dance',\n", + " 'dance dance dance tonight',\n", + " 'people gather on the floor ほらビリビリしてるんだ',\n", + " '思惑と 欲望が 激しく渦巻いてるんだ',\n", + " 'そう dance dance dance dance',\n", + " '闇の向こうのストロボの光が',\n", + " '正体を暴く 甘いだけの夜なら興味ない',\n", + " '流れる汗 止めなくていいんじゃない?',\n", + " 'let’s party',\n", + " 'get over right away, come on (yeah)',\n", + " 'we’re gonna make it our story',\n", + " '空前の boom 望み通りの rule yeah',\n", + " '誘い込む事件性',\n", + " '1 2 3 (whoa whoa whoa yeah)',\n", + " 'dance dance dance',\n", + " 'dance dance dance',\n", + " 'we just gotta make it grove',\n", + " 'dance dance dance baby (ooh)',\n", + " 'dance dance dance (ooh)',\n", + " 'dance dance dance (dance)',\n", + " 'dance dance dance',\n", + " 'your kiss make me wanna move',\n", + " 'dance dance dance baby (ooh yeah)',\n", + " 'dance dance dance (oh)',\n", + " '欲望のままに火花散らそう (uh uh yeah)',\n", + " '忘却の yesterday 桃源郷まで dive',\n", + " 'そう come on',\n", + " 'dance dance dance (yeah yeah)',\n", + " 'dance dance dance tonight (yeah)',\n", + " 'ハダける理性 脱ぎ捨てていいんじゃない?',\n", + " '(we’re gonna party)',\n", + " '流れる汗 止めなくていいんじゃない?',\n", + " '(don’t stop the party)',\n", + " 'go crazy party people',\n", + " 'yeah, we’re never gonna stop',\n", + " '振り乱す このカラダ',\n", + " 'get up and get up (hey)',\n", + " 'むき出しの hero 溢れ落ちる soul',\n", + " 'this is our world now',\n", + " 'everybody dance',\n", + " 'dance dance dance',\n", + " 'dance dance dance',\n", + " 'we just gotta make it grove (yeah)',\n", + " 'dance dance dance baby',\n", + " 'dance dance dance',\n", + " 'dance dance dance',\n", + " 'dance dance dance',\n", + " 'your kiss make me wanna move',\n", + " 'dance dance dance baby',\n", + " 'dance dance dance (everybody)',\n", + " '欲望のままに 火花散らそう (dance yeah)',\n", + " '忘却の yesterday 桃源郷まで dive',\n", + " 'そう come on',\n", + " 'dance dance dance (yeah)',\n", + " 'dance dance dance tonight',\n", + " '(whoa) そう come on',\n", + " '(oh) dance dance dance',\n", + " 'dance dance dance tonight',\n", + " \"let's do dreaming\",\n", + " \"let's do dreaming\",\n", + " 'hello, hello, hello, hello',\n", + " 'atlantis, we find the people. atlantis, we pray for a new world',\n", + " 'hello, hello, hello, hello 失われた都市の希望たどる',\n", + " '大地は沈み 言葉もわからない',\n", + " 'でもようやく思い出した',\n", + " '僕ら失った都市の夢みつける',\n", + " 'イルカの声に耳澄まし',\n", + " '砕けた記憶を取り戻す',\n", + " \"let's do dreaming\",\n", + " \"let's do dreaming\",\n", + " 'hello, hello, hello, hello',\n", + " 'atlantis, we find the people. atlantis, we pray for a new world',\n", + " 'hello, hello, hello, hello',\n", + " 'atlantis, we find the people. atlantis, we pray for a new world',\n", + " 'amazing 溢れる想い君はきっと堪えて',\n", + " 'amazing 叶えたいから忘れないよずっと',\n", + " \"君はどこでも (like i'm in the bottom of the world)\",\n", + " \"前を向いてた (there's nothing of the protection)\",\n", + " '光り輝く (even this conflict is wasting time)',\n", + " '夜明けを求めて まだ遠くて',\n", + " '希望に疲れた心はもう二度と 姿亡きもの求め',\n", + " '空へ',\n", + " 'amazing (you remember) 溢れる想い君はきっと堪えて',\n", + " 'amazing (you remember) 叶えたいから忘れないよずっと',\n", + " '波は静まり (my emotion is already burst)',\n", + " '無音の彼方へ消えてく',\n", + " '月夜に浮かべた面影まだ今も 姿亡きもの求め',\n", + " '空へ',\n", + " 'amazing (you remember) 溢れる想いひとり涙をこらえて',\n", + " 'amazing (you remember) 叶えたいから忘れないよずっと',\n", + " '“believe in yourself and the present',\n", + " 'whatever happened you can get over”',\n", + " 'you said, so i can believe myself',\n", + " 'this environment and this moment',\n", + " \"ready go! i don't wanna anymore\",\n", + " 'you have gone away to the neo universe',\n", + " 'like a bomb! everything is already burst',\n", + " \"but i don't cry, cause you will rebirth\",\n", + " 'amazing 愛しき友よ君は帰らぬ旅人',\n", + " 'amazing 出逢えたこと忘れないよ',\n", + " 'amazing (you remember) 溢れる想い君にサヨナラ告げても',\n", + " 'amazing (you remember) 叶えたいから忘れないよ',\n", + " '生まれ変わるだろう',\n", + " 'you remember',\n", + " \"ready go! i don't wanna anymore\",\n", + " 'you have gone away to the neo universe',\n", + " 'like a bomb. everything is already burst',\n", + " \"but i don't cry, cause you will rebirth\",\n", + " 'clap your hands everybody! everybody さあ clap your hands!',\n", + " \"clap your hands everybody! don't stop さあ clap your hands!\",\n", + " 'clap your hands everybody! everybody さあ clap your hands!',\n", + " 'clap your hands everybody! bring it up, bring it up, bring it up!',\n", + " 'freaky cheeky party time アガってく all the time, yeah uh huh!',\n", + " 'freaky cheeky party time 飛ばしてく all the time, yeah hot hot!',\n", + " '終わらない夏が 眩しく胸に煌めく (sexy i!)',\n", + " 'こうして君と 出逢えた奇跡は feel so fine! (can i sexy!?)',\n", + " '全部オーライな季節到来 問題ない',\n", + " '予定は free はじけすぎ アピリすぎ ei yo!',\n", + " 'はまる傾向もうすでに k.o. play my song',\n", + " 'lose my mind! shake shake your thang! shake shake!',\n", + " 'tail lamp 横目に たどり着いたのは絶景な beach',\n", + " 'cool biz shapely 逆ハートの brazilian がいい!',\n", + " \"drink up 陽気に踊りはしゃぐ君は freakin' me\",\n", + " '季節のせい 何か始まりそうな you and me',\n", + " 'freaky cheeky party time アガってく all the time, yeah uh huh!',\n", + " 'freaky cheeky party time 飛ばしてく all the time, yeah hot hot!',\n", + " '終わらない夏が 眩しく胸に煌めく (sexy i!)',\n", + " 'こうして君と 出逢えた奇跡は feel so fine! (can i sexy!?)',\n", + " \"今日はオールナイト let's dance all night, you and i\",\n", + " 'もうすでに lock on! つまり君にゾッコン! ya know!',\n", + " '雰囲気に浮かれ気味 見渡してもそう やっぱり君 uh!',\n", + " 'lose my mind! shake shake your thang! shake shake!',\n", + " 'サンセットバックに rainbow に変わる crazy な beach',\n", + " 'dj turn it up! 最高の瞬間を instagram',\n", + " \"drink up 陽気に踊りはしゃぐ君は freakin' me\",\n", + " '季節のせい 何か始まりそうな you and me',\n", + " 'freaky cheeky party time アガってく all the time, yeah uh huh!',\n", + " 'freaky cheeky party time 飛ばしてく all the time, yeah hot hot!',\n", + " '終わらない夏が 眩しく胸に煌めく (sexy i!)',\n", + " 'こうして君と 出逢えた奇跡は feel so fine! (can i sexy!?)',\n", + " 'oh~~~~~~~~~~ party time! 4x',\n", + " 'clap your hands everybody! everybody さあ clap your hands!',\n", + " \"clap your hands everybody! don't stop さあ clap your hands!\",\n", + " 'clap your hands everybody! everybody さあ clap your hands!',\n", + " 'clap your hands everybody! bring it up, bring it up, bring it up!',\n", + " 'freaky cheeky party time アガってく all the time, yeah uh huh!',\n", + " 'freaky cheeky party time 飛ばしてく all the time, yeah hot hot!',\n", + " '終わらない夏が 眩しく胸に煌めく (sexy i!)',\n", + " 'こうして君と 出逢えた奇跡は feel so fine! (can i sexy!?)',\n", + " 'oh~~~~~~~~~~ party time! 8x',\n", + " 'さみしい曖昧な期待で「いつかは何かが起きる…」と',\n", + " '満たされないこの想い嘆き悲しんでいた日々',\n", + " 'when i 時に事がうまく運べたとき壊したくてそれを全部',\n", + " \"その繰り返しの毎日は心なしか…it's a sad day\",\n", + " '錆びた屋根の上の夕日がボクを円く包み込んだんだ',\n", + " \"it's just a little routine\",\n", + " 'i do to make me feel like my friend and fam are with me',\n", + " '押し寄せるこの想いが描く未来変えていく...',\n", + " 'oshiyoseru kono omoi ga egaku mirai kaete yuku',\n", + " '※i wanna thank you and tell you that i miss you',\n", + " '毎日歩いたこの道grateful',\n", + " 'ボクを導く出会いが優しく背中押すよ',\n", + " 'i wanna thank you and tell you that i miss you',\n", + " 'いままで感じた全てがgrateful',\n", + " \"いまボクがここにいるのはfrom time after time i'd like to thank you※\",\n", + " 'いつでも見失いそうな時それを教えてくれたのは',\n", + " 'そうさ年と共に増えていく数えきれない大切な...',\n", + " 'その一人一人の声が聞こえてくるのさ',\n", + " \"livin' it up, breakin' it up, working it up, i need to go now\",\n", + " 'yeah! i need to go now',\n", + " \"i'm happy i'm makin' it breakin' it looking it up on the internet\",\n", + " 'taking the time to evaluate',\n", + " \"hoping that everything goes to plan, that's the plan!\",\n", + " \"hoping i can, rockin' the island called japan, you're the man!\",\n", + " \"i've been livin' in it so long, i wanna understand\",\n", + " \"i love it so much i don't think that i could ever leave\",\n", + " \"i've made it my own, and yeah it's home, so please stop asking me\",\n", + " \"it's just a iil something that i call the busy life\",\n", + " 'but maybe everyday is not much of a busy life',\n", + " '(※くり返し×2)',\n", + " 'early morning, turn that alarm right off',\n", + " 'running for that packed train, no time to turn down',\n", + " '人混みをすり抜けてさぁ',\n", + " 'いつも通りの笑顔でおはよう',\n", + " '可愛いあの子は、シャッチョサンにおべっかです',\n", + " '否定はしないが僕にはできそうにない',\n", + " '頭をクリアに今宵は繰り出そう',\n", + " 'たまにゃいいでしょ シャンパンでパーティータイム',\n", + " 'i wanna move so good like the hottest pop star',\n", + " 'dancing in the rain, not a care in the world',\n", + " \"'cause you 人生一度きり\",\n", + " \"まだまだ can't get enough 夜はこれから\",\n", + " \"not gonna stop, we dancing till the sun's up\",\n", + " \"you won't keep me on the clock\",\n", + " \"now that i'm getting it out\",\n", + " 'you asking too much, you know i got that new touch',\n", + " \"and now i'm not gonna stop 'cause now i'm getting it out\",\n", + " 'boys ambitious. 大志を抱きなさい',\n", + " '校長先生がそんな事言ってた',\n", + " 'アメニモマケズ ノルマ達成だ',\n", + " '忘れてないぜ上昇志向と好奇心',\n", + " \"i'm popping um up popping um up drink the champagne up tonight\",\n", + " \"and i'm singing it up singing it up, karaoke prince in the house\",\n", + " 'ストレス クリアに今宵は繰り出そう',\n", + " 'たまにゃいいでしょ エンジョイだ friday night',\n", + " 'i wanna move so good like the hottest pop star',\n", + " 'dancing in the rain, not a care in the world',\n", + " \"'cause you 人生一度きり\",\n", + " \"まだまだ can't get enough 夜はこれから\",\n", + " \"i'm living it up, i don't want to be afraid\",\n", + " \"when it's all said and done, i hit the ground and run\",\n", + " 'i wanna move so good like thе hottest pop star',\n", + " 'dancing in the rain, not a care in thе world',\n", + " \"'cause you 人生一度きり\",\n", + " \"まだまだ can't get enough 夜はこれから\",\n", + " 'woo (cosmic explorer)',\n", + " '星を離れて 何世代の夢',\n", + " '幾千の時を 紡いできたから',\n", + " '炎の雨も どこか安らぐ',\n", + " '暖かさだけを 求めて',\n", + " 'break new ground (break new ground)',\n", + " 'space explorer (space explorer)',\n", + " 'break new ground (break new ground)',\n", + " 'seek new field',\n", + " 'woo (cosmic explorer)',\n", + " '月の明かりも 海の香りも',\n", + " '氷の大地も 僕は知らないけど',\n", + " '静かの夜が 周りを包む',\n", + " '光の力は ここにある',\n", + " 'break new ground (break new ground)',\n", + " 'space explorer (space explorer)',\n", + " 'break new ground (break new ground)',\n", + " 'seek new field',\n", + " 'woo (cosmic explorer)',\n", + " '現実味のない距離 超えていく break new ground',\n", + " '魂だけが永遠 cosmic explorer',\n", + " 'woo (cosmic explorer)',\n", + " '(cosmic explorer)',\n", + " '(cosmic explorer)',\n", + " '浜崎あゆみ「pieces of seven」の歌詞',\n", + " \"you're just like a ...\",\n", + " '暁の明星',\n", + " 'hung up on your ... ah',\n", + " '暁の表情',\n", + " \"don't tell me why 欲望も度を越しゃ武器になる\",\n", + " '身の程知らず',\n", + " '騙し騙され 敵無しじゃいられない 不屈のfighter',\n", + " 'heavenly ... feel fine ... all or nothing',\n", + " '過乗な空想 追っ掛けて',\n", + " 'falling out ... give me, glorious kiss',\n", + " \"彷徨う本能 don't back out!\",\n", + " 'hung up on どうしたって 永遠のbump',\n", + " 'oh! hey, super soul',\n", + " 'hung up on どう見たって 人生はtrap',\n", + " 'give me a chance',\n", + " 'hung up on どうしたって 葛藤のfunk',\n", + " 'oh my god! help me just now, hung up on there is no way out!',\n", + " \"shakin' heart, shakin' heart cry!\",\n", + " \"don't tell me why 一心不乱に霧の中もがいては\",\n", + " '息切らしてる',\n", + " 'そう 補充すべきは 柔らかな君の愛 所詮common boy',\n", + " \"forever ... lovin' ... but we're alone\",\n", + " '冷めない愛を 欲しがって',\n", + " 'everyday ... call you in a daydream',\n", + " \"oh 幻想 後悔 ... don't back out!\",\n", + " 'hung up on どうしたって 永遠のbump',\n", + " 'oh, give me your love',\n", + " 'hung up on どう見たって 人生はtrap',\n", + " 'tell me a truth',\n", + " 'hung up on どうしたって 葛藤のfunk',\n", + " \"don't look back, i never need any of mercy what a joke!\",\n", + " 'shout it out, shout it out now!',\n", + " 'hung up on どうしたって 永遠のbump',\n", + " 'oh! hey, super soul',\n", + " 'hung up on どう見たって 人生はtrap',\n", + " 'give mе a chance',\n", + " 'hung up on どうしたって 葛藤のfunk',\n", + " 'oh my god! help me just now, hung up on thеre is no way out!',\n", + " \"shakin' heart, shakin' heart cry!\",\n", + " '見つめ合う 一瞬のかけひき',\n", + " 'めぐり会う 偶然のparty night',\n", + " '背を向けた ぎりぎりの強がり',\n", + " 'あなたから言わせたい \"still i love you…\"',\n", + " 'なくしてわかる 愛の意味が 今胸に熱い',\n", + " 'come on baby come on my love',\n", + " '今すぐ take on my heart',\n", + " 'come on baby come on my love',\n", + " \"揺らめく lookin' for dream\",\n", + " 'come on baby come on my love',\n", + " \"ため息 missin' your love\",\n", + " 'come on baby come on my love',\n", + " '激しく crazy for you',\n", + " 'サヨナラを告げたのは あやまち',\n", + " 'あの頃へ帰りたい \"catch my true heart…\"',\n", + " '淋しさ抱いて 愛の中へ そっと誘って',\n", + " 'come on baby come on my love',\n", + " 'やさしく take on my heart',\n", + " 'come on baby come on my love',\n", + " \"まぶしく lookin' for dream\",\n", + " 'come on baby come on my love',\n", + " \"素直に missin' your love\",\n", + " 'come on baby come on my love',\n", + " 'ささやく crazy for you',\n", + " 'come on baby come on my love',\n", + " '今すぐ take on my heart',\n", + " 'come on baby come on my love',\n", + " \"揺らめく lookin' for dream\",\n", + " 'come on baby come on my love',\n", + " \"ため息 missin' your love\",\n", + " 'come on baby come on my love',\n", + " '激しく crazy for you',\n", + " 'ここ最近の trend は #wildandfree',\n", + " '見られるほど',\n", + " 'あふれ出す extasy',\n", + " 'i know you checking me out (a-ha)',\n", + " 'i know you checking me out (a-ha)',\n", + " 'show window では 売ってナイ originality',\n", + " '眠る前欠かせない ootd',\n", + " 'i know you checking me out (a-ha)',\n", + " 'i know you checking me out (a-ha)',\n", + " 'あっという間に 過ぎていく everyday life',\n", + " '私らしく 生きなきゃ もったいないじゃナイ',\n", + " 'come on follow me now',\n", + " 'everytime you checking me out',\n", + " 'freeze しちゃうくらい hot',\n", + " '私のスベテが',\n", + " 'lookbook lookbook yeah',\n", + " 'everyone so click and shout',\n", + " '目指すは常に top',\n", + " '上から下まで',\n", + " 'lookbook lookbook yeah',\n", + " '輝きたいなら',\n", + " '磨かなきゃでしょ',\n", + " 'everytime you checking me out',\n", + " '飛び出す killing shot',\n", + " '私のスベテが',\n", + " 'lookbook lookbook yeah',\n", + " 'take a quick look, my lookbook',\n", + " '気になるコト 必須',\n", + " '一瞬で トリコに high quality',\n", + " 'and you keep on starring till eternity',\n", + " 'i know you checking me out (a-ha)',\n", + " 'i know you checking me out (a-ha)',\n", + " '気になるなら 迷わずに like me',\n", + " \"毎日が update 挑むと i'm hype\",\n", + " '批判には “whatever”',\n", + " '楽しむのが style',\n", + " 'come on follow me now',\n", + " 'everytime you checking me out',\n", + " 'freeze しちゃうくらい hot',\n", + " '私のスベテが',\n", + " 'lookbook lookbook yeah',\n", + " 'everyone so click and shout',\n", + " '目指すは常に top',\n", + " '上から下まで',\n", + " 'lookbook lookbook yeah',\n", + " '最高の自分でいたい',\n", + " '美しき perfect lies',\n", + " 'come on follow me now',\n", + " 'everytime you checking me out',\n", + " 'freeze しちゃうくらい hot',\n", + " '私のスベテが',\n", + " 'lookbook lookbook yeah',\n", + " 'everytime you checking me out',\n", + " 'freeze しちゃうくらい hot',\n", + " '私のスベテが',\n", + " 'lookbook lookbook yeah',\n", + " 'everyone so click and shout',\n", + " '目指すは常に top',\n", + " '上から下まで',\n", + " 'lookbook lookbook yeah',\n", + " '輝きたいなら',\n", + " '磨かなきゃでしょ',\n", + " 'everytime you checking me out',\n", + " '飛び出す killing shot',\n", + " '私のスベテが',\n", + " 'lookbook lookbook yeah',\n", + " 'lookbook lookbook yeah',\n", + " 'lookbook lookbook yeah',\n", + " 'dance all night もう止められない',\n", + " 'so hold me tight 回るこの世界',\n", + " 'dance all night いつまでも君と',\n", + " 'one more time 踊り続けたい',\n", + " '真夜中過ぎのtaxi',\n", + " '片手で見せるid',\n", + " '弾むビートとrydeen',\n", + " '私を招くparty',\n", + " 'デカめのサングラス',\n", + " 'ネオンカラーのネイル',\n", + " 'イビザのカーニバル',\n", + " 'きらめきが on the floor',\n", + " 'dance all night もう止められない',\n", + " 'so hold me tight 回るこの世界',\n", + " 'dance all night いつまでも君と',\n", + " 'one more time 踊り続けたい',\n", + " 'dance with me please',\n", + " 'till we call the police',\n", + " 'never gonna leave',\n", + " 'till di sun come down',\n", + " 'sun come down',\n", + " 'time ta bounce',\n", + " 'we takin ova and ova',\n", + " \"we're takin ova and ova and ova\",\n", + " \"it's never ova\",\n", + " 'if you move with me',\n", + " 'we can drink chablis',\n", + " 'you can feed me diamonds all night, yeah',\n", + " \"and now it's on to the next one\",\n", + " 'to the nеxt one',\n", + " 'to the next onе (to the afterparty...)',\n", + " 'to the next one',\n", + " 'to the next one',\n", + " 'and the next one',\n", + " 'dance all night 目覚める星たち',\n", + " \"it's time to shine この想い胸に\",\n", + " 'dance all night どこまでも君と',\n", + " 'in my eyes 今を映したい',\n", + " '少し焼けた肌を濡らして',\n", + " '降り注ぐ音浴びたら',\n", + " 'グラス置いて朝日抱いて',\n", + " '指と指を絡め合う',\n", + " \"変わらないで it's just like paradise\",\n", + " 'またここで惹かれ合おう',\n", + " 'dance all night...',\n", + " 'dance all night もう止められない',\n", + " 'just you & i なんにもいらない',\n", + " 'dance all night いつまでも君と',\n", + " 'feel the light 輝き続けたい',\n", + " 'dance all night...',\n", + " '浜崎あゆみ「bridge to the sky」の歌詞',\n", + " '浜崎あゆみ「the judgment day」の歌詞',\n", + " \"it's my only desire\",\n", + " \"am i chasin' devils?\",\n", + " 'to an ending i call my own, call my own',\n", + " \"it's my only desire\",\n", + " \"now, i got the feelin' again\",\n", + " 'i just had to feel it again',\n", + " 'and now',\n", + " \"now, i got the feelin' again\",\n", + " 'now, i saw the light of the end',\n", + " 'i just saw the light of the end',\n", + " 'just now',\n", + " 'now, i saw the light of the end',\n", + " \"it's my only desire\",\n", + " 'i kiss hello my blinded eyes',\n", + " 'and reach for final ecstasy',\n", + " 'good-bye to heroes',\n", + " 'good-bye to heroes',\n", + " 'time to tell you so',\n", + " 'no parachute, no big surprise',\n", + " \"and now the future's chasin' me\",\n", + " 'good-bye to heroes',\n", + " 'good-bye to heroes',\n", + " \"i'm gonna let you go\",\n", + " \"can't get it outta my head\",\n", + " \"i can't get it outta my head\",\n", + " \"no, i can't\",\n", + " \"can't get it outta my head\",\n", + " 'now, i saw the light of the end',\n", + " 'i just saw the light of the end',\n", + " 'just now',\n", + " 'now i saw the light of the end',\n", + " \"it's my only desire\",\n", + " 'i kiss hello my blinded eyes',\n", + " 'and reach for final ecstasy',\n", + " 'good-bye to heroes',\n", + " 'good-bye to heroes',\n", + " 'time to tell you so',\n", + " 'no parachute, no big surprise',\n", + " \"and now the futures chasin' me\",\n", + " 'good-bye to heroes',\n", + " 'good-bye to heroes',\n", + " \"i'm gonna let you go\",\n", + " 'dark and light and live and die',\n", + " \"and war and peace and truth and lyin'\",\n", + " \"it's not falling, it's not flyin'\",\n", + " \"there's no tellin' there's no askin'\",\n", + " 'black and white and love and hate',\n", + " 'and yes and no and real and faking',\n", + " \"it's not starting, it's not ending\",\n", + " \"there's no comin', there's no goin'\",\n", + " 'dark and light and live and die',\n", + " \"and war and peace and truth and lyin'\",\n", + " \"it's not falling, it's not flyin'\",\n", + " \"there's no tellin' there's so askin' myself\",\n", + " 'will it be beautiful?',\n", + " '<和訳>',\n", + " 'それは俺の欲望',\n", + " '悪魔でも追いかけてるみたいに',\n", + " '最後まで自分を呼び続ける',\n", + " 'そう、それが俺の願いさ',\n", + " ...]},\n", + " 'data': ['baby baby 冗談なのね 口付けは',\n", + " 'feeling feeling 探ってるの 唇で',\n", + " 'タッチしてるだけで 充たされてる',\n", + " 'そう キミの鼓動',\n", + " 'baby baby そうなのね 雨の中で',\n", + " 'feeling feeling 泣いてるみたいな 眼差しで',\n", + " 'こっちみてうなずく ふりをして',\n", + " 'そう 感じているの',\n", + " \"i'm feeling u\",\n", + " \"i'm feeling u\",\n", + " 'baby i just wanna feel you',\n", + " 'take me high, so i melt with you',\n", + " \"i'm feeling u\",\n", + " \"i'm feeling u\",\n", + " 'baby i just wanna feel you',\n", + " 'take me high, so i melt with you',\n", + " \"i'm feeling u\",\n", + " 'baby baby 冗談なのね 口付けは',\n", + " 'feeling feeling 探ってるの 唇で',\n", + " 'タッチしてるだけで 充たされてる',\n", + " 'そう キミの鼓動',\n", + " \"i'm feeling u\",\n", + " \"i'm feeling u\",\n", + " 'baby i just wanna feel you',\n", + " 'take me high, so i melt with you',\n", + " \"i'm feeling u\",\n", + " \"i'm feeling u\",\n", + " 'baby i just wanna feel you',\n", + " 'take me high, so i melt with you',\n", + " \"i'm feeling u\",\n", + " \"i'm feeling u\",\n", + " \"i'm feeling u\",\n", + " 'the morning of machine civilization',\n", + " '赤い楯 影迷い',\n", + " '灰色の服纏い',\n", + " 'リズムに囚われた朝',\n", + " 'いつもと同じ瞬間',\n", + " '止めない生産ライン',\n", + " '何かが欠けてる',\n", + " 'in the twilight of machinery',\n", + " \"where's the world going\",\n", + " \"won't somebody tell me\",\n", + " 'are these thoughts illusion',\n", + " 'are we all one',\n", + " 'この世界は変われるのか',\n", + " 'この想いは幻か',\n", + " 'people find work to be done',\n", + " '人は働き 鳥歌う',\n", + " '眠りに落ちた夢',\n", + " '目を覚ませ 彼叫ぶ',\n", + " 'いつもと同じ瞬間',\n", + " 'この刹那に生きる',\n", + " 'いつか革命求め',\n", + " 'in the twilight of machinery',\n", + " \"where's the world going\",\n", + " \"won't somebody tell me\",\n", + " 'are these thoughts illusion',\n", + " 'are we all one',\n", + " 'この想いを変えられるのか',\n", + " 'いつも夢に笑いかける',\n", + " 'break through',\n", + " 'paradigm',\n", + " 'in your mind',\n", + " 'revolution',\n", + " 'desire',\n", + " 'science',\n", + " 'ascension',\n", + " 'thirteen',\n", + " 'white shirt',\n", + " 'white shirt',\n", + " 'white shirt',\n", + " 'black shirt',\n", + " 'black shirt',\n", + " 'singularity',\n", + " 'we are all one',\n", + " 'are we all one',\n", + " \"baby baby, don't look so sad\",\n", + " \"there's gonna be a better tomorrow\",\n", + " '重い扉の向こうは',\n", + " 'いつでも 青空さ',\n", + " '昨日と同じ一日が暮れて',\n", + " '彼女は深い溜息とともに眠る',\n", + " '果せなかった約束',\n", + " 'またひとつ増えただけ',\n", + " 'それでも明日を夢見る',\n", + " 'baby baby, close your eyes',\n", + " 'go back into your endless dream',\n", + " '目覚める頃はとっくに',\n", + " '笑顔が戻ってる',\n", + " 'いい事だけを信じてるうちに',\n", + " 'すべてを許せる自分に会える いつか',\n", + " 'あんなに愛した人も',\n", + " '愛してくれた人も',\n", + " '振り向けば ただの幻',\n", + " \"baby baby, don't think you're lonely\",\n", + " \"don't give up loving somebody new\",\n", + " '繰り返される別れに',\n", + " '臆病にならないで',\n", + " 'ah,淋しいなんて',\n", + " 'ah,感じるひまもないくらい',\n", + " '果たせなかった約束',\n", + " 'またひとつ増えただけ',\n", + " 'それでも明日を夢見る',\n", + " \"baby baby, don't look so sad\",\n", + " \"there's gonna be a better tomorrow\",\n", + " '重い扉の向こうは',\n", + " 'いつでも 青空さ',\n", + " 'baby baby, close your eyes',\n", + " 'go back into your endless dream',\n", + " '果てしない夢の続き',\n", + " '見させてあげるから',\n", + " \"just believe someday you'll find your hard time's gone\",\n", + " 'try not to look back on your yesterday',\n", + " 'so keep on dreaming of tomorrow',\n", + " \"don't you think you're lonely\",\n", + " \"don't give up on loving\",\n", + " \"somebody's waiting just for you\",\n", + " \"just believe someday you'll find your hard time's gone\",\n", + " 'try not to look back on your yesterday',\n", + " 'so keep on dreaming of tomorrow',\n", + " \"don't you look so sad, girl\",\n", + " 'there will be a fine thing',\n", + " 'everything will be all right',\n", + " \"just believe someday you'll find your hard time's gone\",\n", + " 'try not to look back on your yesterday',\n", + " 'so keep on dreaming of tomorrow',\n", + " 'baby, close your brown eyes',\n", + " 'go back to your dreaming',\n", + " 'you can see the blue sky spread',\n", + " 'michi madness',\n", + " 'michi madness',\n", + " 'michi madness',\n", + " 'まだあなたの隣にいるのは why?',\n", + " 'i decided not to call you',\n", + " 'もう会わない',\n", + " '何度も決めたのに',\n", + " 'また thinking about you all the time',\n", + " '二人が出会ったこと',\n", + " \"won't you tell me why?\",\n", + " '複雑なlove',\n", + " 'いらない',\n", + " 'でも一人の time',\n", + " '聞こえてくるの your voice',\n", + " 'why are you running away from this?',\n", + " 'you should be true to your feelings',\n", + " 'i say 落ちたくないの no way',\n", + " 'but is it already too late',\n", + " 'kiss kiss kiss',\n", + " '初めての this feeling',\n", + " 'kiss kiss kiss',\n", + " '止まりそうになる my heart',\n", + " '誰よりも',\n", + " '何よりも',\n", + " '感じ合ってる気がするから',\n", + " \"no i just can't stop\",\n", + " 'kiss kiss kiss',\n", + " '忘れたい this feeling',\n", + " 'kiss kiss kiss',\n", + " '心が痛いから',\n", + " \"but i'm blinded\",\n", + " \"i'm addicted\",\n", + " '現実から逃げ切れない',\n", + " '一瞬のour happiness',\n", + " '一緒にいない時間 oh it feel so long',\n", + " '常に confusion',\n", + " 'is this wrong?',\n", + " 'こんな situation',\n", + " 'どうしようもないの',\n", + " 'もし誰かが傷つくなら',\n", + " \"let's stop right now\",\n", + " '行かないで please',\n", + " \"don't leave me\",\n", + " 'ほんとは言いたいよ',\n", + " 'but 強がるしかないの',\n", + " 'why are you running away from this?',\n", + " 'you should be true to your feelings',\n", + " 'i say 落ちたくないの no way',\n", + " 'but is it already too late',\n", + " 'kiss kiss kiss',\n", + " '初めての this feeling',\n", + " 'kiss kiss kiss',\n", + " '止まりそうになる my heart',\n", + " '誰よりも',\n", + " '何よりも',\n", + " '感じ合ってる気がするから',\n", + " \"no i just can't stop\",\n", + " 'kiss kiss kiss',\n", + " '震える唇に',\n", + " 'kiss kiss kiss',\n", + " '最後にもう一度',\n", + " '涙味',\n", + " '噛み締めた',\n", + " '残念なタイミング',\n", + " '予想してたエンディング',\n", + " 'kiss kiss kiss',\n", + " 'every time i try to turn away',\n", + " 'kiss kiss kiss',\n", + " 'my heart feels like its gonna stop',\n", + " 'kiss kiss kiss',\n", + " \"and i just don't know why\",\n", + " 'kiss kiss kiss',\n", + " 'but i really want to see you again',\n", + " 'kiss kiss kiss',\n", + " 'am i doing the wrong thing',\n", + " 'kiss kiss kiss',\n", + " \"oh, i really don't know\",\n", + " 'kiss kiss kiss',\n", + " \"but right now, i don't care\",\n", + " 'kiss kiss kiss',\n", + " 'why are you running away from this?',\n", + " 'you should be true to your feelings',\n", + " 'i say 落ちたくないの no way',\n", + " 'but is it already too late',\n", + " 'kiss kiss kiss',\n", + " '初めての this feeling',\n", + " 'kiss kiss kiss',\n", + " '止まりそうになる my heart',\n", + " '誰よりも',\n", + " '何よりも',\n", + " '感じ合ってる気がするから',\n", + " \"no i just can't stop\",\n", + " 'kiss kiss kiss',\n", + " '震える唇に',\n", + " 'kiss kiss kiss',\n", + " '最後にもう一度',\n", + " '涙味',\n", + " '噛み締めた',\n", + " '残念なタイミング',\n", + " '予想してたエンディング',\n", + " '真夜中 泡立つ血が騒いでる',\n", + " \"i can't stop this 上向く三日月\",\n", + " '誰も知らないの somebody tell me about it',\n", + " '教えてやるよ 惹かれてる your perfume',\n", + " '思うままに!',\n", + " 'そう激しく!',\n", + " \"can't you feel me?\",\n", + " 'going crazy!',\n", + " 'this gravity 互いに feel good',\n", + " 'キツめの timing 全て見たいんだ',\n", + " '夢ならば じらし過ぎ i know you lied',\n", + " '強引だね 腰つきで引きよせる',\n", + " '鼓動が acceleration たまらない attraction',\n", + " 'excited condition もう我慢出来ない',\n", + " '感じるままに!',\n", + " 'もっと熱く!',\n", + " \"can't you feel me?\",\n", + " 'going crazy!',\n", + " '止められない oh, you take me higher',\n", + " \"からまり shake you let's fly into the night!\",\n", + " \"p・a・r・a・d・o・x i'm gonna make you stop it baby\",\n", + " \"p・a・r・a・d・o・x i'm gonna make you stop it\",\n", + " \"p・a・r・a・d・o・x i'm gonna make you keep on baby\",\n", + " 'p・a・r・a・d・o・x',\n", + " '窓枠に伸びる影から裸の彼方',\n", + " '時を刻む月灯りと数多の朝が',\n", + " '未だにまだまとわりつく貴方の最中(さなか)',\n", + " '露わな儚き頭と身体の狭間',\n", + " 'oh yeah! can you make me fly high?',\n", + " '思うままに!',\n", + " 'そう激しく!',\n", + " \"can't you feel me?\",\n", + " 'going crazy!',\n", + " 'this gravity 互いに feel good',\n", + " 'きつめの timing 全て見たいんだ',\n", + " \"p・a・r・a・d・o・x i'm gonna make you stop it baby\",\n", + " \"p・a・r・a・d・o・x i'm gonna make you stop it\",\n", + " \"p・a・r・a・d・o・x i'm gonna make you keep on baby\",\n", + " 'p・a・r・a・d・o・x',\n", + " '安室奈美恵「shine more」の歌詞',\n", + " 'check it out…',\n", + " 'music come on. you were gone',\n", + " '無言と不安の',\n", + " '理由とリアルを知ってるboth of us',\n", + " '鼓動のリズムはずっと',\n", + " '生きてる…tellin’ you why',\n", + " '会いたい i can’t tonight',\n", + " 'moon is so bright',\n", + " 'many seasons, many scenes',\n", + " 'でもclose my eyes',\n", + " 'この愛は',\n", + " '永遠にto you',\n", + " 'baby remember to shine',\n", + " '遠い日のyour mind',\n", + " '通り雨じゃない',\n", + " '尊いmany nights',\n", + " 'baby remember to shine',\n", + " 'こんなにevery time',\n", + " 'un-でも追わない',\n", + " 'believe that you’re my baby',\n", + " 'i wanna shine',\n", + " 'music come on あの記憶',\n", + " '聴いてたアナログ',\n", + " 'フレーズ繰り返す 頭の奥',\n", + " '夜明けのようにlet go',\n", + " '明日へwhy should cry',\n", + " 'あんなに泣いたのは最初で最後',\n", + " 'many reasons, many things',\n", + " '今close my eyes',\n", + " 'この愛は…oh',\n", + " 'many seasons, many scenes',\n", + " 'ねぇclose your eyes',\n", + " 'あの愛は…oh',\n", + " 'baby remember to shine',\n", + " '消えないknowing pain',\n", + " '昨日のmorning rain',\n", + " '綺麗な思い出',\n", + " 'baby remember to shine',\n", + " 'こんなにevery time',\n", + " 'un-でも追わない',\n", + " 'believe that you’re my baby',\n", + " 'everybody’s here everybody hears',\n", + " 'and nobody can’t stop music',\n", + " 'you were gone so i will go',\n", + " 'everybody’s here everybody hears',\n", + " 'and nobody can’t stop music',\n", + " 'you were gone so i will go',\n", + " '永遠にto you',\n", + " 'baby remember to shine',\n", + " '遠い日のyour mind',\n", + " '通り雨じゃない',\n", + " '尊いmany nights',\n", + " 'baby remember to shine',\n", + " '消えないknowing pain',\n", + " '昨日のmorning rain',\n", + " '綺麗な思い出',\n", + " 'baby remember to shine',\n", + " 'こんなにevery time',\n", + " 'un-でも追わない',\n", + " 'i wanna shine yeah-ya',\n", + " 'baby remember to shine',\n", + " 'あなたを忘れない',\n", + " 'un-でも追わない',\n", + " 'oh, i wanna shine more',\n", + " \"安室奈美恵「let's do the motion」の歌詞\",\n", + " 'right now, rising sun',\n", + " 'be a believer, be a dreamer',\n", + " \"let's do the motion\",\n", + " \"let's do the motion\",\n", + " \"let's do the action\",\n", + " 'feel the vibration',\n", + " 'join the revolution',\n", + " 'everybody wants see the sun',\n", + " 'everybody wants see the moon',\n", + " \"we're the motion\",\n", + " 'dangerous motion',\n", + " '廃墟の底 そこから生まれだし',\n", + " '回顧主義だけが眠りさまし',\n", + " '「ドウゾ ヨロシク」',\n", + " 'これがうわさの',\n", + " '昔誰もが よく使っていたうそ',\n", + " '革命の前夜共存しよう',\n", + " 'いつかまた細胞分裂',\n", + " 'かなりいいんじゃない?',\n", + " '何も悪くないんじゃない?',\n", + " '誰もこわれてくんじゃない',\n", + " '何に頼る訳じゃない!!',\n", + " '太いワイヤーのフェンスよじ登り',\n", + " '戦いが始まる',\n", + " '身体中が fight 叫ぶように',\n", + " '嘆くように',\n", + " '狂いそう いたく高鳴る夜',\n", + " 'i need a second',\n", + " \"and i'll be in it\",\n", + " 'i need a vision higher and higher',\n", + " 'ooh, right now!',\n", + " \"let's do the motion\",\n", + " \"let's do the action\",\n", + " 'feel the vibration',\n", + " 'join the revolution',\n", + " '光を手に入れたい resistance',\n", + " '終わりのない calculation',\n", + " 'できてるんじゃない?',\n", + " 'でてくるんじゃない?',\n", + " 'やればいいんじゃない?',\n", + " 'キラメクんじゃない?',\n", + " 'サイレンが鳴り響く時 待ち',\n", + " '磨き上げてる 銀の knife',\n", + " '空を舞うサーチライト',\n", + " '夜空彩る花火!',\n", + " 'あがるころ 奇跡わき上がる!!',\n", + " 'i need a second',\n", + " \"and i'll be in it\",\n", + " 'i need a vision higher and higher',\n", + " 'ooh, right now!',\n", + " \"lеt's do the motion\",\n", + " \"let's do the action\",\n", + " 'feel thе vibration',\n", + " 'join the revolution',\n", + " \"let's do the motion\",\n", + " '(brighter days! brighter nights!)',\n", + " \"let's do the action\",\n", + " '(brighter days! brighter nights!)',\n", + " 'feel the vibration',\n", + " '(brighter days! brighter nights!)',\n", + " 'join the revolution',\n", + " '(brighter days! brighter nights!)',\n", + " 'right now!!',\n", + " 'right now!!',\n", + " 'そんな視線で 何を期待している?',\n", + " '予想は出来ている でも応えてあげない',\n", + " '吐息がかかる 瞳を閉じて',\n", + " '今触れそうで触れないこの距離が tonight',\n", + " 'i like it',\n", + " \"悪戯に tease! how's my love?\",\n", + " '君に tease! something wrong?',\n", + " '気まぐれに tease!',\n", + " '君の 燃え上がる fire 心の desire',\n", + " 'i know you want it bad bad bad, my love',\n", + " 'i want it bad bad bad, your love',\n", + " 'you know i like it',\n", + " \"tease! i'm devious\",\n", + " '裏腹の愛が 疼いている my heart',\n", + " 'my honey, baby',\n", + " '潤んだ目が もっともっと見たくなる',\n", + " '子猫みたいな 無邪気さが堪らない',\n", + " '指先なぞる 素肌を 噛んでみたい yeah',\n", + " 'まだ刺激が欲しいと囁いて tonight',\n", + " 'i like it',\n", + " \"悪戯に tease! how's my love?\",\n", + " '君に tease! something wrong?',\n", + " '気まぐれに tease!',\n", + " '君の 燃え上がる fire 心の desire',\n", + " 'i know you want it bad bad bad, my love',\n", + " 'i want it bad bad bad, your love',\n", + " 'you know i like it',\n", + " \"tease! i'm devious\",\n", + " '裏腹の愛が 疼いている my heart',\n", + " 'my honey, baby',\n", + " 'this is so dangerous. yeah, yeah',\n", + " 'this is so dangerous. ooh',\n", + " '止められないほど 惹かれている am i?',\n", + " \"悪戯に tease! how's my love? (焦らして)\",\n", + " '君に tease! something wrong? (woo-woo-woo)',\n", + " '気まぐれに tease!',\n", + " '君の 燃え上がる fire 心の desire (woo-hu)',\n", + " 'i know you want it bad bad bad, my love (my love)',\n", + " 'i want it bad bad bad, your love (baby, your love)',\n", + " 'you know i like it',\n", + " \"tease! i'm devious\",\n", + " '裏腹の愛が 疼いている my heart',\n", + " 'my honey, baby',\n", + " 'we don’t need',\n", + " 'we don’t get the things in order',\n", + " 'no time to waste そうきっと',\n", + " '右へ 左へ turn, turning over',\n", + " 'no side でもういいよね?',\n", + " 'make a noise and louder',\n", + " 'そのセリフは柄じゃないけど いいや',\n", + " 'we will find out 飽きがくるまで',\n", + " '朝が来るまで all right',\n", + " 'we cool! what a cool sound!',\n", + " '目を閉じて鳴らすの the good song',\n", + " 'we fool! what a fool dance!',\n", + " '手を取って踊るよ anyone can’t stop',\n", + " 'cool, so fool, we two',\n", + " 'melody loops とびきりのセンスで',\n", + " 'give me your sound to dance',\n", + " 'we don’t need',\n", + " 'we don’t get the things in order',\n", + " 'no time to waste そうきっと',\n", + " '西へ 東へ 手の鳴るほうへ',\n", + " 'no side でもういいよね?',\n", + " 'ずっと響くナンバー',\n", + " 'その名前は忘れてるけど いいや',\n", + " 'we will find out? i can’t tell the end',\n", + " '朝が来るまで all right',\n", + " 'we cool! what a cool sound!',\n", + " '目を閉じて鳴らすの the good song',\n", + " 'we fool! what a fool dance!',\n", + " '手を取って踊るよ anyone can’t stop',\n", + " 'cool, so fool, we two',\n", + " 'melody first 意味なんてないよね',\n", + " '君の sound to dance',\n", + " 'make a noise and louder',\n", + " 'そのセリフは柄じゃないけど いいや',\n", + " 'we will find out 飽きがくるまで',\n", + " '朝が来るまで all right',\n", + " 'we cool! what a cool sound!',\n", + " '目を閉じて鳴らすの the good song',\n", + " 'we fool! what a fool dance!',\n", + " '手を取って踊るよ anyone can’t stop',\n", + " 'cool, so fool, we two',\n", + " 'melody loops とびきりのセンスで',\n", + " 'give me your sound to dance',\n", + " '倖田來未「won’t be long ~red cherry version~」の歌詞',\n", + " 'oly oly oly oh!',\n", + " 'yely yely yely yeah!!',\n", + " 'the up-town tokio',\n", + " \"slamin' night!!\",\n", + " 'oly oly oly oh!',\n", + " 'yely yely yely yeah!!',\n", + " 'the up-town tokio',\n", + " \"slamin' night!!\",\n", + " 'たりない頭なら、知恵を盗みゃいい',\n", + " 'ちょうじり合わすなら、',\n", + " 'うそも必要さ',\n", + " \"won't be long, won't be long\",\n", + " 'もうすぐさ、とどくまで',\n", + " \"won't be long, won't be long\",\n", + " 'あなたのためにすべて',\n", + " 'いつのまにか覚えた',\n", + " \"(da)smokin' day\",\n", + " 'もう忘れはしない、愛がtripしても',\n", + " \"won't be long, won't be long\",\n", + " 'もうすぐさ、とどくまで',\n", + " \"won't be long, won't be long\",\n", + " 'あなたのためにすべて',\n", + " '恥もかいてきた たどりつくために',\n", + " 'でもそばには あなたがいる',\n", + " '何もこわくない',\n", + " 'いつのまにかみつけた',\n", + " '(da)sun-shine day',\n", + " 'もうなくしはしない、',\n", + " '心がcrushしても',\n", + " \"won't be long, won't be long\",\n", + " 'もうすぐさ、笑えるのは',\n", + " \"won't be long, won't be long\",\n", + " 'あなたのためにすべて',\n", + " 'oly oly oly oh!',\n", + " 'yely yely yely yeah!!',\n", + " 'the up-town tokio',\n", + " \"slamin' night!!\",\n", + " 'oly oly oly oh!',\n", + " 'yely yely yely yeah!!',\n", + " 'the up-town tokio',\n", + " \"slamin' night!!\",\n", + " \"won't be long, won't be long\",\n", + " 'もうすぐさ、とどくまで',\n", + " \"won't be long, won't be long\",\n", + " 'あなたのためにすべて',\n", + " \"won't be long, won't be long\",\n", + " 'もうすぐさ、笑えるのは',\n", + " \"won't be long, won't be long\",\n", + " 'あなたのためにすべて',\n", + " 'oly oly oly oh!',\n", + " 'yely yely yely yeah!!',\n", + " 'the up-town tokio',\n", + " \"slamin' night!!\",\n", + " 'oly oly oly oh!',\n", + " 'yely yely yely yeah!!',\n", + " 'the up-town tokio',\n", + " \"slamin' night!!\",\n", + " 'stars in sky lullabyおやすみよ',\n", + " '街を食べ尽くした闇 midnight',\n", + " '愛なき街に生まれて思うことは何?',\n", + " '同じゆりかごで育ったことを',\n", + " 'いつの日から僕ら忘れてしまったの?',\n", + " '自分のことばかりで',\n", + " 'everybody working hard walking hard everyday',\n", + " 'i forgot the goal of life. oh my god',\n", + " 'what is right and what is wrong?',\n", + " 'worry about it everyday',\n", + " 'everybody lost the way but life still goes on',\n", + " 'lullaby for tokyo city',\n", + " 'おやすみ tokyo city',\n", + " 'birds in sky waking up はじまるよ',\n", + " '街を塗りつぶしたような morning croud',\n", + " '終わりなき波に揺られて思うことはなに?',\n", + " 'デカい夢抱いて育ったことを',\n", + " 'いつの日から僕ら忘れてしまったの?',\n", + " '心に嘘ばかりで',\n", + " 'everybody working hard walking hard everyday',\n", + " 'i forgot the goal of life. oh my god',\n", + " 'what is right and what is wrong?',\n", + " 'worry about it everyday',\n", + " 'everybody lost the way but life still goes on',\n", + " 'lullaby for tokyo city',\n", + " 'おやすみ tokyo city',\n", + " 'japanese',\n", + " 'watching all the',\n", + " 'watching all the',\n", + " 'watching all the girls gone by',\n", + " '照らす太陽みたい 眩しすぎるよbaby cute',\n", + " 'ボクらを誘ってすまし顔でmodel walking',\n", + " 'i like a ショートパンツ! やっぱりワンピース!',\n", + " 'i like a ロングヘアー!',\n", + " 'でもショートもpretty girl!',\n", + " 'いつだって みとれて',\n", + " 'おぼれてcrazy foolish boy',\n", + " 'だってねthere is the world',\n", + " 'thanks to amazing girl♪',\n", + " '一緒に踊ろう 笑ってよ oh baby',\n", + " 'watching all the',\n", + " 'watching all the girls go by',\n", + " 'イジワルしないで こっち向いてよ baby',\n", + " 'watching all the',\n", + " 'watching all the',\n", + " 'watching all the girls go by',\n", + " 'oh oh oh',\n", + " '強気なgirls go by',\n", + " 'oh oh oh',\n", + " '蒼い空の下で声かけたなら',\n", + " '(思い切って)',\n", + " 'ゆっくり振り向いた目もくらむような',\n", + " 'shinee girlsとびっきりさ',\n", + " 'i like a blond hair! black hair! no border!',\n", + " 'i like a sexy girl! pretty girl! cutie girl!',\n", + " 'いつだって みとれて',\n", + " 'おぼれてcrazy foolish boy',\n", + " 'だってねbeautiful girls all over the worldでしょ♪',\n", + " '一緒に騒ごう 笑ってよ oh baby',\n", + " 'watching all the',\n", + " 'watching all the girls go by',\n", + " 'ソッポ向かないで こっち向いてよ baby',\n", + " 'watching all the',\n", + " 'watching all the',\n", + " 'watching all the girls go by',\n", + " 'everything is shining',\n", + " 'you want to rock to shine',\n", + " '惚れさせてトリコにしてください',\n", + " 'ボクらをずっと照らし続けて',\n", + " '(照らし続けて)',\n", + " '一緒に踊ろう 笑ってよ oh baby',\n", + " 'watching all the',\n", + " 'watching all the girls go by',\n", + " 'イジワルしないで こっち向いてよ baby',\n", + " 'watching all the',\n", + " 'watching all the',\n", + " 'watching all the girls go by',\n", + " 'oh oh oh',\n", + " 'ボクらのgirls go by',\n", + " 'oh oh oh',\n", + " '輝き続けて',\n", + " 'blow you away!',\n", + " 'blow you away!',\n", + " 'yeah!',\n", + " \"let's get started 聞こえるbeatに\",\n", + " 'バンドのrhythmに',\n", + " '身をゆだねたら',\n", + " \"yeah! it's a party 案内するよ\",\n", + " 'take a bow どうぞ',\n", + " '皆さんこちら',\n", + " 'i got your ハート一瞬で奪うphantom',\n", + " '目疑うワザのパレード',\n", + " 'shall we dance? ゾクゾクしたいなら follow me',\n", + " \"it's a spectacle!!!!\",\n", + " 'oh!',\n", + " 'clap for me! clap for me!',\n", + " 'applauseに! applauseに!',\n", + " 'ovationに ovationに',\n", + " '今夜は',\n", + " 'すべてを捧げに',\n", + " 'アナタのために ご招待v.i.p',\n", + " 'are you ready?',\n", + " 'ほら、',\n", + " 'ここからshow time',\n", + " 'baby,ついてこれるかい?',\n", + " 'もっと',\n", + " 'oh! (oh!) oh!(oh!) oh!(oh!) oh! ooooh',\n", + " 'blow you away',\n", + " 'blow you away',\n", + " 'girl, so take you another world',\n", + " '見た事ないよな世界 oh!',\n", + " '身震いするようなentertainment 知ってるかい',\n", + " 'そう高くget lifted',\n", + " 'you worth to me',\n", + " 'どんな色に染/ま/り/た/い?',\n", + " 'oh!',\n", + " 'clap for me! clap for me!',\n", + " 'applauseに! applauseに!',\n", + " 'ovationにovationに',\n", + " '溺れて',\n", + " 'すべてを捧げに',\n", + " 'アナタのために 期待に応えに',\n", + " 'shout it loud yeah',\n", + " 'ほら、',\n", + " 'ここからshow time',\n", + " 'baby,ついてこれるかい?',\n", + " 'もっと',\n", + " 'oh! (oh!) oh!(oh!) oh!(oh!) oh! ooooh',\n", + " 'blow you away',\n", + " 'blow you away',\n", + " '今夜は 溺れて',\n", + " 'clap for me! clap for me!',\n", + " 'applauseに! applauseに!',\n", + " 'ovationに ovationに',\n", + " '今夜は',\n", + " 'すべてを捧げに',\n", + " 'アナタのために ご招待v.i.p',\n", + " 'are you ready?',\n", + " 'clap for me! clap for me!',\n", + " 'applauseに! applauseに!',\n", + " 'ovationにovationに',\n", + " '溺れて',\n", + " 'ほら、',\n", + " 'ほら、',\n", + " 'ここからshow time',\n", + " 'baby,ついてこれるかい?',\n", + " 'もっと',\n", + " 'oh! (oh!) oh!(oh!) oh!(oh!) oh! ooooh',\n", + " 'blow you away',\n", + " 'blow you away',\n", + " '黒のストッキング。純白のエプロン。そして、メイドカチューシャ。',\n", + " '萌え萌えキュン!',\n", + " 'pardon me あなたを見てると crazy',\n", + " 'suddenly あの時出逢うまで',\n", + " '寂しい気持ちはただ',\n", + " 'きまぐれに',\n", + " 'ひとの やさしさ奪う',\n", + " '悲しいone-man dance... ow!',\n", + " 'is it true',\n", + " '信じられないことよ oh baby',\n", + " 'i see you',\n", + " 'あなたに輝く my eyes',\n", + " 'wish i knew',\n", + " '心がほどけてゆく oh baby',\n", + " 'is it true',\n", + " 'あなたの腕のなか uh!',\n", + " 'wish i knew....',\n", + " 'ecchi till i die (till i die, till i die)',\n", + " 'shawty so kawaii (so kawaii, so kawaii)',\n", + " 'a-cup is just fine, with onii (onii)',\n", + " 'a-cup is just-just fine with onii (onii)',\n", + " 'ecchi till i die (till i die, till i die)',\n", + " 'shawty so kawaii (so kawaii, so kawaii)',\n", + " 'a-cup is just fine, with onii (onii)',\n", + " 'a-cup is just-just fine with onii (onii)',\n", + " 'onii-chan',\n", + " 'tu tu turu,tu tu ru turu',\n", + " 'tu tu turu,tu tu ru tu',\n", + " \"all my ladies n'my fellas sing along wit me\",\n", + " \"1 2 3 we gon' boogie\",\n", + " '誘ってみる 連れ出しに行く',\n", + " '一人でなんて部屋にいたりしていないで',\n", + " 'スペシャルな夜 終わらないparty',\n", + " 'my people up in here',\n", + " \"(com'on evybody)\",\n", + " '迎えに行くよ codillac 飛ばして',\n", + " '今日はどうしても一緒に過ごしたい',\n", + " 'out fits なんて気にしないでok',\n", + " '早く急いで',\n", + " '回り続けるプリズムが照らす',\n", + " '少し寂しい横顔にmm oh oh oh',\n", + " 'どうしようもないくらいに',\n", + " '奪われるから so i so i...',\n", + " 'i gonna be with you',\n", + " 'you got me steppin up to ya',\n", + " 'すきまもないほど cling to ya',\n", + " \"i'mma show you how to rock my body all night\",\n", + " '目と目が合う度に深まるように',\n", + " 'we gonna boogie',\n", + " '(why dont we hook up and have a good time,oh baby)',\n", + " 'step to right side,step to left side',\n", + " '見つめる瞳そらさずに踊る',\n", + " 'もっと合わせて二人のタイミング',\n", + " 'shake shake shake and pose',\n", + " '流れていく時も忘れて',\n", + " 'いっそこのまま次のステップへ',\n", + " '滑り込むのもいいかも',\n", + " 'ねえどう思う?',\n", + " 'ゆれる体に伝わる灼熱',\n", + " 'シャイな振りは止めて隠さず oh oh oh',\n", + " 'とめられないくらい',\n", + " '夢中になるから so i so i...',\n", + " 'wanna hold you',\n", + " 'you got me steppin up to ya',\n", + " 'すきまもないほど cling to ya',\n", + " \"i'mma show you how to rock my body all night\",\n", + " '目と目が合う度に深まるように',\n", + " 'we gonna boogie',\n", + " '(why dont we hook up and have a good time,oh baby)',\n", + " 'tu tu turu,tu tu turu',\n", + " 'tu tu turu,tu tu ru tu',\n", + " \"all my ladies n'my fellas sing along wit me\",\n", + " \"1 2 3 we gon' boogie\",\n", + " 'tu tu turu,tu tu turu',\n", + " 'tu tu turu,tu tu ru tu',\n", + " \"all my ladies n'my fellas sing along wit me\",\n", + " \"1 2 3 we gon' boogie\",\n", + " 'そのままテンポ',\n", + " 'くるわさないで',\n", + " 'センシュアルなモーション',\n", + " '(hey.do you like it?)',\n", + " 'babe.捕まる腕に込めるmy heart',\n", + " '(can you feel it?)',\n", + " \"let's dance! dance! dance!\",\n", + " 'you got me steppin up to ya',\n", + " 'すきまもないほど cling to ya',\n", + " \"i'mma show you how to rock my body all night\",\n", + " '目と目が合う度に深まるように',\n", + " 'we gonna boogie',\n", + " '(why dont we hook up and have a good time,oh baby)',\n", + " 'you got me steppin up to ya',\n", + " 'すきまもないほど cling to ya',\n", + " \"i'mma show you how to rock my body all night\",\n", + " '目と目が合う度に深まるように',\n", + " 'we gonna boogie',\n", + " '(why dont we hook up and have a good time,oh baby)',\n", + " 'たまに香る甘いscent',\n", + " '何気ない仕草さえも',\n", + " 'everything you do',\n", + " \"it's like a magic\",\n", + " '全てがso specialで',\n", + " 'これ以上距離なんて',\n", + " '縮めること無理なくらいに',\n", + " 'i just wanna be',\n", + " 'even closer babe',\n", + " '既に制御不能みたい',\n", + " 'when you touch me tenderly',\n", + " \"it's like i'm in outer space\",\n", + " '肌越しで聴く響く鼓動が',\n", + " 'when you look into my eyes',\n", + " 'i just fall so deep in love',\n", + " 'もっともっと深くハマってしまいそう',\n", + " \"you're my love love love love\",\n", + " 'いつだって',\n", + " \"you're my love love love love\",\n", + " 'wanna hold you kiss you hug you',\n", + " \"you're my love love love love\",\n", + " '落ち込んでも',\n", + " \"you're my love love love love\",\n", + " '包み込んでくれる',\n", + " 'a.s.a.p.今すぐ',\n", + " '会いたいの この気持ちは',\n", + " \"you're the only one\",\n", + " 'who makes me feel this way',\n", + " '今さら隠さなくてもイイでしょ?',\n", + " '少しシャイなところも',\n", + " '不器用なところさえも',\n", + " 'oh the way you talk',\n", + " 'oh the way you walk',\n", + " '全て好きかも what can i do!?',\n", + " 'when you touch me tenderly',\n", + " \"it's like i'm in outer space\",\n", + " '肌越しで聴く響く鼓動が',\n", + " 'when you look into my eyes',\n", + " 'i just fall so deep in love',\n", + " 'もっともっと深くハマってしまいそう',\n", + " \"you're my love love love love\",\n", + " 'いつだって',\n", + " \"you're my love love love love\",\n", + " 'wanna hold you kiss you hug you',\n", + " \"you're my love love love love\",\n", + " '落ち込んでも',\n", + " \"you're my love love love love\",\n", + " '包み込んでくれる',\n", + " '理解しているの',\n", + " 'ちょっと私が“love is blind”気味って…',\n", + " \"everyday and night i'm thinkin' bout you\",\n", + " '何も手につかないくらいに',\n", + " 'でも少しくらい ねぇ baby',\n", + " '溺れてみてもアリなんじゃない?',\n", + " \"i'm in the mood so just baby turn the lights down (okay!)\",\n", + " \"don't have to be shy so just baby drive me around (okay!)\",\n", + " 'ハマってしまいそう',\n", + " \"you're my love love love love\",\n", + " 'いつだって',\n", + " \"you're my love love love love\",\n", + " 'wanna hold you kiss you hug you',\n", + " \"you're my love love love love\",\n", + " '落ち込んでも',\n", + " \"you're my love love love love\",\n", + " '包み込んでくれる',\n", + " '椎名林檎「浴室」の歌詞',\n", + " '新宿のカメラ屋さんの階段を降りた茶店は',\n", + " 'ジッポの油とクリーム あんたの台詞が香 った',\n", + " '云ったでしょ?「俺を殺して」',\n", + " '今日は特別に笑ってばかりのあたしは丁度',\n", + " 'さっき一度夢で死んだあんたを仕方無く愛す',\n", + " 'どうか 見捨てたりしないで',\n", + " '洗って 切って 水の中',\n", + " '呼吸器官は冒される',\n", + " 'あたしが完全に乾くのいまきちんと見届けて',\n", + " '磨いて 裂いて 水の中',\n", + " '無重力に委される',\n", + " 'あたしが完全に溶けたらすぐきちんと召し上がれ',\n", + " 'あんたが目の前で絶えて嗚咽を止められなかった',\n", + " '何だか浮世の全て恋しくて堪 らなかった',\n", + " 'あんな夢を見させないで',\n", + " 'a scent so sweet that it got me dirty',\n", + " 'the troops to protect me were out on patrol',\n", + " 'please watch me closely and do check to see',\n", + " 'i dry out completely, i dry through and through',\n", + " 'a lie so big that it got me dirty',\n", + " 'as soon as i said it a wound opened up',\n", + " 'and when i do melt down entirely immediately, bon appetit',\n", + " 'you said it did not you? \"just do it kill me\"',\n", + " \"so wash me cut me i'm underwater\",\n", + " 'my lungs and breathing are quite affected',\n", + " 'please watch me closely and do check to see',\n", + " 'i dry out completely, i dry through and through',\n", + " 'come shine me tear me, i am underwater',\n", + " 'relying completely on zero gravity',\n", + " 'and when i do melt down entirely immediately, bon appetit',\n", + " \"i'm not afraid of a little boredom\",\n", + " 'why did the two of them ever chance to meet?',\n", + " \"i'm not afraid of a little boredom\",\n", + " 'why did the two of them ever chance to meet?',\n", + " 'i..',\n", + " 'each day we live could be our last, from now on',\n", + " 'important thing is how you live it, embrace your life',\n", + " '悲しみが溢れたら微笑んで',\n", + " 'いくつもの終わりを越えた',\n", + " \"i don't wanna stay this way\",\n", + " '止まりたくない',\n", + " 'i might be wrong (僕が間違っているのかもしれない)',\n", + " 'それでもまだ',\n", + " \"where's the end?\",\n", + " 'what is the end?',\n", + " 'so tell me how do you see me in your eyes?',\n", + " \"you see a sad look on my face, don't worry about it\",\n", + " '孤独に襲われたら頷いて',\n", + " '一緒に月の光を辿ろう',\n", + " 'i just stay a step ahead',\n", + " '見ていてほしい',\n", + " 'i might hate myself',\n", + " 'それでもまだ',\n", + " \"where's the end?\",\n", + " 'what is the end?',\n", + " \"where's the end?\",\n", + " '探し求めoh end of line',\n", + " '疲れて目を閉じる前に',\n", + " '歩みを止めるその前に',\n", + " 'i just wanna find my true self',\n", + " \"where's the end?\",\n", + " 'what is thе end?',\n", + " \"where's thе end?\",\n", + " '探し求めoh end of line',\n", + " 'no way, your deep hate',\n", + " \"it's quench doubt voice\",\n", + " 'no way, your deep hate',\n", + " 'get away, god bless no stars',\n", + " 'break me, sad grey',\n", + " 'there is my god to carry me',\n", + " 'nowhere, my sick',\n", + " 'but in this world, you need me',\n", + " '(forlorn skies)',\n", + " 'nothing to live for',\n", + " '(forlorn lights)',\n", + " 'nothing to die for',\n", + " '冷たい唇なぞる様に交わした嘘',\n", + " '音が途切れても響きだけは重く痛く残って',\n", + " '冷たい唇なぞる様に交わした嘘',\n", + " '音が途切れても響きだけは重く痛い',\n", + " '冷たい言葉で満たして',\n", + " '乾いた心を癒して',\n", + " '風なびく黄金の羽 軽やかに踊る様',\n", + " '揺れる穂に包まれて 蘇るあの光景',\n", + " '緋色の絨毯は 赤く頬染めてゆく',\n", + " '君の横顔に触れて recall me that sight',\n", + " '風なびく黄金の羽 軽やかに駈けてゆく',\n", + " '揺れる穂に包まれて 蘇るあの予感',\n", + " \"she's waiting to see the light ephemeral world\",\n", + " \"she's dreaming to see the light ephemeral world\",\n", + " 'i see you in my heart beautiful feeling',\n", + " 'i see you in my world beautiful feeling',\n", + " '夏草の揺れる丘 軽やかに駈けてゆく',\n", + " '雨の後の余韻に あなたを想い留める',\n", + " '空想と現実の 間で揺れる記憶',\n", + " \"僅かな光を辿り i'm looking for you\",\n", + " \"she's waiting to see the light ephemeral world\",\n", + " \"she's dreaming to see the light ephemeral world\",\n", + " 'i see you in my heart beautiful feeling',\n", + " 'i see you in my world beautiful feeling',\n", + " '風なびく黄金の羽 軽やかに駈けてゆく',\n", + " '揺れる穂に包まれて 蘇るあの予感',\n", + " '緋色の絨毯は 赤く頬染めてゆく',\n", + " '君の横顔に触れて recall me that sight',\n", + " \"she's waiting to see the light ephemeral world\",\n", + " \"she's dreaming to see the light ephemeral world\",\n", + " 'i see you in my heart beautiful feeling',\n", + " 'i see you in my world beautiful feeling',\n", + " \"yeah, we back again, let's go\",\n", + " 'throw ya fist in the air now, come on',\n", + " 'throw ya fist in the air',\n", + " '不屈のplayer 跳ね除ける play back',\n", + " '一度しかない tonight',\n", + " '決してブレない 見てるのは way up',\n", + " '試されるなら smack it down',\n", + " '諦めたら終わりの game',\n", + " 'ゲンカイなんて out of my way',\n", + " 'nobody gonna stop me now',\n", + " '迷わずただ scream & shout',\n", + " '超えるボーダー 全て blow up',\n", + " 'この瞬間 everything... my everything 燃やそう',\n", + " 'もっと上に (alright)',\n", + " \"外すブレーキ (let's ride)\",\n", + " '目指すは前人未到の ground',\n", + " '高く高く in the air 拳上げて hold up',\n", + " 'stand up',\n", + " 'throw ya fist up to the sky',\n", + " 'stand up',\n", + " \"come on come on let's go high\",\n", + " 'just get up 光差す方に',\n", + " \"どこまでも we don't stop\",\n", + " 'さぁ stand up (come on stand up)',\n", + " '突き進んでいく my way',\n", + " 'throw ya fist in the air now, come on',\n", + " 'throw ya fist in the air',\n", + " '立ち止まれば その時点でエラー',\n", + " '下を向く暇はない',\n", + " '答えなら明白 確実に raise up',\n", + " '乗りこなしてく up & down',\n", + " 'タフに切り拓く my days',\n", + " '越されても we do it again',\n", + " 'nobody gonna stop me now',\n", + " 'まだまだ gotta push it up',\n", + " '見える closer gotta be stronger',\n", + " \"あともう少し... もう少し i'm looking for\",\n", + " 'もっと上に (alright)',\n", + " ...]},\n", + " 'r-b': {'meta': {'train_data': ['(ラップ)yo shorty',\n", + " 'the way we flow is オシャレ',\n", + " 'you better watch yourself!',\n", + " 'yo baller, we about to hit yo 頭',\n", + " \"and that's how we gon' party\",\n", + " '(ラップ)yo shorty',\n", + " 'the way we flow is オシャレ',\n", + " 'you better watch yourself!',\n", + " 'yo baller, we about to hit yo 頭',\n", + " 'uh huh, no doubt',\n", + " 'i really really like it, let me show you',\n", + " 'baby this is how we do',\n", + " 'だからもっと(遅くまで)もっと',\n", + " 'あそびたいんじゃない',\n", + " 'i really really like it, let me tell you',\n", + " '何言われても やりたいことまだあるから',\n", + " \"you ain't going home tonight\",\n", + " 'i like it (you like it)',\n", + " 'he likes it (she likes it)',\n", + " 'we like it (they like it)',\n", + " '朝まで かえさない',\n", + " 'i love it (you love it)',\n", + " 'he loves it (she loves it)',\n", + " 'we love it (they love it)',\n", + " 'そのままjust work that thang',\n", + " \"(ラップ)重い腰上げなよ、it's been a whileお待ちどおさま\",\n", + " 'we back to holla、まだ行くぜ、待たせたな',\n", + " 'go pop-pa-pop-pop 感じてるなら',\n", + " 'say what-wa-what-what! きょうの目玉は',\n", + " 'extraordinary man、仮眠とるヒマもねえ',\n", + " 'ワキガよりfunkyです、並外れてる、セン?',\n", + " \"うなぎ上り、ノリノリi'm rollin'\",\n", + " 'yoぞうきんよりもdown and dirtyなstyleで阻止する',\n", + " \"stop! the hatin' and the negativity\",\n", + " 'and slow down…そんなやつはお呼びじゃねえ…だから',\n", + " 'stop! わからなくてもfollow me',\n", + " 'here we go now! (oh my!) beats beふくよか',\n", + " \"今日もまたi'm here alone\",\n", + " 'まだ誰からも電話ないし',\n", + " 'でも tonight 出かけたい',\n", + " 'そしてやな事leave it behind',\n", + " \"彼女's in the front 手を上げて\",\n", + " '周り気にしないで',\n", + " \"イケメン's in the back 声上げて 朝まで騒いで\",\n", + " \"今夜はparty time, baby can't you see\",\n", + " '楽しみに来たんだし',\n", + " '明日の事はforgetしてもいいよ',\n", + " 'i really really like it, let me show you',\n", + " 'baby this is how we do',\n", + " 'だからもっと(遅くまで)もっと',\n", + " 'あそびたいんじゃない',\n", + " 'i really really like it, let me tell you',\n", + " '何言われても やりたいことまだあるから',\n", + " \"you ain't going home tonight\",\n", + " \"夜も 明け it's time to go\",\n", + " \"でも まだ i'm in the mood so 踊ろう\",\n", + " 'あと one more 曲をplay',\n", + " 'してよ追い出されるまで',\n", + " '(ラップ)ベロアのジャージ rock a fat gold じゃらじゃら',\n", + " 'stars オシャレ泥棒 the fashionista',\n", + " '一粒300meter、俺等leaders',\n", + " 'これ保証、guaranteed to rock the show',\n", + " \"hey yo i stash mo' cash flow私の 活動\",\n", + " 'asteroid peopleの心 コチョコチョ',\n", + " \"oh my…mr.dj won't you rewind(yoクリ!)\",\n", + " 'ごめんあそばせ、i bust it、そう朝まで',\n", + " \"if you feel what i'm sayin' then この指止まれ\",\n", + " 'ow! supreme イケテすぎ committee',\n", + " 'そこのfine君、少してれ気味',\n", + " '全てgimme gimme! すでにseventeen',\n", + " 'yo r-e-s-p-e-c-t',\n", + " \"どんな感じ?tell me what's the issue?\",\n", + " 'ここの水甘い しかたがない we so fly!',\n", + " 'the boys look soooo good (next!)',\n", + " '常に逃げてるfrom the press (yes!)',\n", + " \"it's クリfrom the hama、\",\n", + " 'm-flo bring the drama',\n", + " 'who shot ya? 知らねえやつあ、',\n", + " 'go ask your mama',\n", + " '(ラップ)yo shorty',\n", + " 'the way we flow is オシャレ',\n", + " 'you better watch yourself!',\n", + " 'yo baller, we about to hit yo 頭',\n", + " 'uhhuh',\n", + " '(ラップ)yo shorty',\n", + " 'the way we flow is オシャレ',\n", + " 'you better watch yourself!',\n", + " 'yo baller, we about to hit yo 頭',\n", + " 'uh huh, no doubt',\n", + " 'strobelight 照らしてる you and me',\n", + " '今日からmore than 友達',\n", + " '時間も忘れるくらい',\n", + " 'keep me moving to your beat',\n", + " 'make you say 「ooh wee!」',\n", + " 'when i hit the scene',\n", + " 'shine しに来たんだし',\n", + " 'つまらないことはforgetしてもいいよ',\n", + " 'i really really like it、let me tell you',\n", + " 'これからがいいとこ',\n", + " \"初めてでも it don't matter so\",\n", + " 'そのまま act like you know',\n", + " 'i really really like it, let me show you',\n", + " 'baby this is how we do',\n", + " 'だからもっと(遅くまで)もっと',\n", + " 'あそびたいんじゃない',\n", + " 'i really really like it, let me tell you',\n", + " '何言われても やりたいことまだあるから',\n", + " \"you ain't going home tonight\",\n", + " 'i like it (you like it)',\n", + " 'he likes it (she likes it)',\n", + " 'we like it (they like it)',\n", + " \"まだまだdon't hit the lights\",\n", + " 'i love it (you love it)',\n", + " 'he loves it (she loves it)',\n", + " 'we love it (they love it)',\n", + " \"終わらないthis party's vibe\",\n", + " 'i just wanna be myself',\n", + " 'そう簡単に首を縦には振らないの(no!!)',\n", + " '自分のやりたいように 動いてなきゃ',\n", + " 'どうも気が済まない 言いなりは嫌!',\n", + " 'なのに 君の前では何故 別人に変わったみたいに',\n", + " 'いい子ちゃんになりたくなるわ',\n", + " \"whenever you're beside me...\",\n", + " 'all i can say is...',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes!! my man...',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes!! my man...',\n", + " '“yes.” 君の為なら',\n", + " '“yes.” いつでも言うわ',\n", + " 'just wanna be real. みんなは言うわ',\n", + " '宏実は頑固 言う事聞かない(ワガママね)',\n", + " '伝えたい事も 見せたいものも溢れる程',\n", + " '届けたいだけなのに baby',\n", + " '君からの説教なら',\n", + " 'お膝抱えて 聞きたいの ダメな私をねぇ叱って…',\n", + " \"whenever you're beside me\",\n", + " 'all i can say is...',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes!! my man...',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes!! my man...',\n", + " '“yes.” 君の為なら',\n", + " '“yes.” いつでも言うわ',\n", + " 'when i come to you the only thing',\n", + " 'that i can say is “yes, yes.”',\n", + " '君にだけなら誠実 誰よりも従順に',\n", + " '“yes, yes.”',\n", + " 'when i come to you the only thing',\n", + " 'that i can say is “yes, yes.”',\n", + " '君にだけなら誠実 誰よりも従順に',\n", + " '“yes, yes.”',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes!! my man...',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes!! my man...',\n", + " '“yes.” 君の為なら',\n", + " '“yes.”',\n", + " '“yes.” いつでも言うわ',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes!! my man...',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes!! my man...',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes!! my man...',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes, yes, my man',\n", + " 'yes!! my man...',\n", + " '倖田來未「feel」の歌詞',\n", + " '車の中そっと',\n", + " '髪をなでてくれた',\n", + " '君の手のぬくもり',\n", + " '今胸を熱くしてく',\n", + " '二人だけの空間',\n", + " '秘密の時間(トキ)がそっと',\n", + " '走り出す気持ち',\n", + " '私を置いたままで・・・',\n", + " 'why tell me why',\n", + " '何度も君からのmailを',\n", + " '読み返しても不安が襲う',\n", + " 'why tell me why',\n", + " '君への想い',\n", + " '言葉なんかで伝えられないから',\n", + " 'now i know the way that i take the music',\n", + " 'you know something happened and dancing inside me',\n", + " 'yes i want you to feel my heart',\n", + " 'close your eyes',\n", + " 'feel it feel it feel it',\n", + " 'remember everything',\n", + " 'yes the way that i take the music',\n", + " 'you know something happened and dancing inside me',\n", + " \"feeling free and just close to me that's all\",\n", + " \"now you know what i'm saying\",\n", + " \"it's easy thing to get my feel\",\n", + " '「どうすればいいの?」',\n", + " 'また君を困らせてる',\n", + " '本当は君とこのまま',\n", + " '一緒に居たいだけの口実・・・',\n", + " '無器用なせいだね',\n", + " '本当の気持ちなんて簡単に伝わらない',\n", + " 'それが恋愛なのかな?',\n", + " 'why tell me why',\n", + " 'お揃いでつけてる指輪があるのに',\n", + " 'why tell me why',\n", + " 'つまらないことで機嫌悪くして後悔で',\n", + " 'now i know the way that i take the music',\n", + " 'you know something happened and dancing inside me',\n", + " 'yes i want you to feel my heart',\n", + " 'close your eyes',\n", + " 'feel it feel it feel it',\n", + " 'remember everything',\n", + " 'yes the way that i take the music',\n", + " 'you know something happened and dancing inside me',\n", + " \"feeling free and just close to me that's all\",\n", + " \"now you know what i'm saying\",\n", + " \"it's easy thing to get my feel\",\n", + " '「これからもずっと一緒にいようね」',\n", + " '素直に言えた日',\n", + " '君からの返事は「いつもそばに居るよ」',\n", + " 'when you walking to the door',\n", + " \"i' m looking for your next door\",\n", + " '目から知るdaylight',\n", + " '肌で知るcold night',\n", + " '同じように君感じていたい (daylight)',\n", + " 'i wanna know i wanna know',\n", + " '未だ知らない 暗号',\n", + " 'will you stay?',\n", + " 'このままkeeping',\n", + " 'tell me what are you thinking?',\n", + " \"you'd better 君にplug in\",\n", + " '泳ぐシナプスのpool',\n", + " \"it's so good good way\",\n", + " 'feel like dreaming',\n", + " '君のなかをcrusing',\n", + " 'you say you say you say',\n", + " 'hate it like it move it take it',\n", + " '全て 集め collection',\n", + " '迷う direction',\n", + " '僕のimage',\n", + " '君の持つimageとをblending',\n", + " '鳴り響くようなmusic',\n", + " '言葉では言えないfeeling',\n", + " 'all around the sea like all around the sea',\n", + " 'このままdreaming このままdreaming',\n", + " \"宇宙船みたいに i can't feel the gravity\",\n", + " 'もう溶け合うvision まるでillusion',\n", + " 'get off the ground down like that',\n", + " '触れて知る正解',\n", + " '潜れば明解',\n", + " 'どこまでも積み重ね停滞',\n", + " 'i wanna go i wanna go',\n", + " '未だ知らない 邂逅',\n", + " 'will you stay?',\n", + " 'このままwaving',\n", + " 'i know you are feeling',\n", + " 'you got it 君にplug in',\n", + " '泳ぐシナプスのpool',\n", + " \"it's so good good way\",\n", + " 'what a wonderful な stimulation!',\n", + " '脳内は自由に',\n", + " '理性の枷外せ',\n", + " 'hate it like it 交換 多幸感',\n", + " '前へ 深く connection',\n", + " '心 reaction',\n", + " '僕のimage',\n", + " '君の持つimageとblending',\n", + " '鳴り響くようなmusic',\n", + " 'ことばでは言えないfeeling',\n", + " 'all around the sea like all around the sea',\n", + " 'このままdreaming このままdreaming',\n", + " '僕らはdreaming',\n", + " \"宇宙船みたいに i can't feel the gravity\",\n", + " 'もう溶け合うvision まるでillusion',\n", + " 'get off the ground down like that',\n", + " 'just be friends; all we gotta do',\n", + " \"just be friends; it's time to say goodbye\",\n", + " 'just be friends; all we gotta do',\n", + " 'just be friends; just be friends...',\n", + " '浮かんだんだ昨日の朝早くに',\n", + " '割れたグラスかき集めるような',\n", + " 'これは一体なんだろう切った指からしたたる滴',\n", + " '僕らはこんなことしたかったのかな',\n", + " '分かってたよ心の奥底では 最も辛い選択がベスト',\n", + " 'それを拒む自己愛と結果自家撞着の繰り返し',\n", + " '僕はいつになれば言えるのかな',\n", + " '緩やかに朽ちてゆくこの世界で足掻く僕の唯一の活路',\n", + " '色褪せた君の微笑み刻んで栓を抜いた',\n", + " '声を枯らして叫んだ反響残響空しく響く',\n", + " '外された鎖のその先はなにひとつ残ってやしないけど',\n", + " 'ふたりを重ねてた偶然暗転断線儚く千々に',\n", + " '所詮こんなものさ呟いた枯れた頬に伝う誰かの涙',\n", + " 'all we gotta do; just be friends',\n", + " \"it's time to say goodbye; just be friends\",\n", + " 'all we gotta do; just be friends',\n", + " 'just be friends just be friends...',\n", + " 'the night before, i realized inside my lonely heart',\n", + " 'as i am watching petals fall into my open hands',\n", + " 'our love is like a rose in bloom the beauty is just so fleeting',\n", + " 'i wish that we could stop the time together just this once',\n", + " \"remember now, it's there inside, the season that we met\",\n", + " 'the gentle smile you gave to me still lingers in my head',\n", + " \"but it's time to let you go, it's a new page in our storybook\",\n", + " 'the days are past, our hearts were young',\n", + " 'we were never meant to be',\n", + " 'all of the promises we never ever meant to keep',\n", + " \"nothing is changing, there's nothing to talk about\",\n", + " 'even though i love you, even though i need you',\n", + " \"it's time for me to say\",\n", + " 'the rain the pours inside of my broken heart',\n", + " 'an emptiness that stretches forever inside of me',\n", + " \"i thought i knew what i'd be facing when you walk away\",\n", + " \"but every inch of me's screaming against the pain that's inside\",\n", + " 'now all these scars that remain between us',\n", + " 'unraveling the memories',\n", + " 'we tried so hard to forget',\n", + " 'cause this could be the very moment we say our goodbyes',\n", + " 'we take a step and try to move on, there is no turning back',\n", + " 'just one more time, i pray just more time',\n", + " 'that if only i could return to those days',\n", + " \"i'd sacrifice everything that i have now\",\n", + " 'just to feel the warmth of your smile again',\n", + " '声を枯らして叫んだ反響残響空しく響く',\n", + " '外された鎖のその先はなにひとつ残ってやしないけど',\n", + " 'ふたりを繋いでた絆綻び解け日常に消えてく',\n", + " 'さよなら愛した人ここまでだもう振り向かないで歩き出すんだ',\n", + " 'これでおしまいさ',\n", + " 'just be friends; all we gotta do just be friends',\n", + " \"it's time to say goodbye\",\n", + " '触れてみたい 嗅いでみたい',\n", + " '君の空気 and heart is make high time',\n", + " '身体の芯まで 燃やしてみたい',\n", + " \"時が止まって be stoned it's so cool\",\n", + " 'everything is green 風を掴める',\n", + " 'もっと高い所にいたい',\n", + " 'silverのかおり 頭が冴える',\n", + " '鮮やかな色で塗り潰す',\n", + " '塗り潰す 塗り潰す',\n", + " \"i'm so cool he's so cool she's so cool\",\n", + " 'we cool and you?',\n", + " \"i'm so cool he's so cool she's so cool\",\n", + " 'we cool and you?',\n", + " '赤い光の 溢れる部屋で',\n", + " 'happy brothers get together with m.r',\n", + " 'grindしたら 心たかぶる',\n", + " 'please let me stand next your fire, jimi',\n", + " '吐息が響く 目線を交わす',\n", + " 'こぼれるsmile a-ha-ha-ha',\n", + " 'いつも以上に 繋がり合える',\n", + " 'oh, let me go great kingdom throne',\n", + " 'kingdom throne, kingdom throne',\n", + " \"i'm so cool he's so cool she's so cool\",\n", + " 'we cool and you?',\n", + " \"i'm so cool he's so cool she's so cool\",\n", + " 'we cool and you?',\n", + " 'pre-hook:',\n", + " \"baby i'm tryna recover our relationship\",\n", + " 'こんな意味ない口論 i never wanna fight like this',\n", + " \"don't you know why i'm tryna recover our relationship\",\n", + " 'baby i wish you to realize it 毎週同じ言い争い',\n", + " 'verse1:',\n", + " 'こんな風に重い空気',\n", + " '感じたのいつからだろう',\n", + " '見つめ合えばちょっとくらいなら',\n", + " 'すれ違い平気だった(今はもう)',\n", + " '繋いでた手は今',\n", + " \"嘘みたいでboy i'm gettin' tired\",\n", + " 'このわだかまりoh baby please tell me why',\n", + " 'このままじゃ解消せず',\n", + " 'pre-hook:',\n", + " \"baby i'm tryna recover our relationship\",\n", + " 'こんな意味ない口論 i never wanna fight like this',\n", + " \"don't you know why i'm tryna recover our relationship\",\n", + " 'baby i wish you to realize it 毎週同じ言い争い',\n", + " 'hook:',\n", + " '何度も何度も何度もそう',\n", + " 'その手を離そうとしたけれど',\n", + " \"don't you know i don't want to lose your love\",\n", + " 'we have to be strong, we gotta stay together',\n", + " '中身のない意地固い絆',\n", + " 'どっちが大事? (ねぇ教えて)',\n", + " 'promise, pair-ring, our relationship',\n", + " 'how can i, how can i recover it',\n", + " 'verse2:',\n", + " \"it's more precious than anything when we're alone\",\n", + " 'いつも一緒に聴いたour favorite love song',\n", + " 'ねえどうして亀裂埋めれずもうすぐ消える全部',\n", + " 'そんな結末はいや',\n", + " \"まるで別人you're such a lier\",\n", + " \"胸の温もりoh baby tell me it's real?\",\n", + " '2年前のあなたは何処?',\n", + " 'pre-hook:',\n", + " \"baby i'm tryna recover our relationship\",\n", + " 'こんな意味ない口論 i never wanna fight like this',\n", + " \"don't you know why i'm tryna recover our relationship\",\n", + " 'baby i wish you to realize it 毎週同じ言い争い',\n", + " 'hook:',\n", + " '何度も何度も何度もそう',\n", + " 'その手を離そうとしたけれど',\n", + " \"don't you know i don't want to lose your love\",\n", + " 'we have to be strong, we gotta stay together',\n", + " '中身のない意地固い絆',\n", + " 'どっちが大事? (ねぇ教えて)',\n", + " 'promise, pair-ring, our relationship',\n", + " 'how can i, how can i recover it',\n", + " 'bridge:',\n", + " \"baby i don't know where the hell did we go wrong?\",\n", + " 'we got no communication',\n", + " '答えを一緒に探していたはずなのに',\n", + " '繋いだ手離して全て',\n", + " '記憶から消すことなど出来ない',\n", + " 'how can i do it, how can i do it',\n", + " 'how can i recover it',\n", + " 'hook:',\n", + " '何度も何度も何度もそう',\n", + " 'その手を離そうとしたけれど',\n", + " \"don't you know i don't want to lose your love\",\n", + " 'we have to be strong, we gotta stay together',\n", + " '中身のない意地固い絆',\n", + " 'どっちが大事? (ねぇ教えて)',\n", + " 'promise, pair-ring, our relationship',\n", + " 'how can i, how can i recover it',\n", + " 'ending:',\n", + " 'our days, our love, our promise',\n", + " 'our words, our hearts, our pair-ring',\n", + " 'our time, our kiss, our memories',\n", + " 'how can i, how can i recover it',\n", + " 'hey sweetie boy',\n", + " 'あまり焦らないでいい like a candy',\n", + " 'あまく ゆるく 語るだけでいい like a tasty cherry',\n", + " 'ゆっくり時間かけてみて 気持ち込めて突然',\n", + " '離さないで do your way, love drip down from us',\n", + " '言葉なんかじゃ伝わらない 見つめ合うだけじゃ物足りない',\n", + " '分かるでしょ want you to take off my lip gloss',\n", + " 'to take off my all oh oh oh',\n", + " '「愛してる」じゃ伝えきれない 手の平の熱じゃ物足りない',\n", + " '分かるでしょ want you to take off my all',\n", + " \"(i i i i i i) can't stop do it again\",\n", + " 'hey spicy boy 少し力づくでいい like a curry',\n", + " '辛く 強く 話すだけでいい like a tasty kimchee',\n", + " 'ぜんぶをゆだねさせて 思うがまま突然',\n", + " '壊さないで do your way, love drip down from us',\n", + " '言葉なんかじゃ伝わらない 見つめ合うだけじゃ物足りない',\n", + " '分かるでしょ want you to take off my lip gloss',\n", + " 'to take off my all, oh oh oh',\n", + " 'じゃ伝えきれない 手の平の熱じゃ物足りない',\n", + " '分かるでしょ want you to take off my all',\n", + " \"(i i i i i i) can't stop do it again\",\n", + " \"everybody say 'j' , can you hear me say a?\",\n", + " \"さぁ皆で 's' all my bitches say yes\",\n", + " \"motherfucker say 'm' all my boys say 'i'\",\n", + " \"everybody say 'n' 'e' just kiss me baby\",\n", + " \"everybody say 'j' can you hear me say 'a'\",\n", + " \"さぁ 皆で 's'\",\n", + " 'i am the best, yes! do you want my lips?',\n", + " 'should i shake my hips?',\n", + " 'i want you to kiss my l.i.p.s',\n", + " '言葉なんかじゃ伝わらない 見つめ合うだけじゃ物足りない',\n", + " '分かるでしょ want you to take off my lip gloss',\n", + " 'to take off my all, oh oh oh',\n", + " '「愛してる」じゃ伝えきれない 手の平の熱じゃ物足りない',\n", + " '分かるでしょ want you to take of my all',\n", + " \"(i i i i i i) can't stop do it again!\",\n", + " \"everybody say 'j' can you hear me say 'a'\",\n", + " \"さぁ皆で 's' all my bitches say yes\",\n", + " \"motherfucker say 'm' all my boys say 'i'\",\n", + " \"every body say 'n' 'e' just kiss me baby\",\n", + " \"everybody say 'j' can you hear me say 'a'\",\n", + " \"さぁ 皆で 's'\",\n", + " \"(i i i i i i) can't stop do it again!\"]},\n", + " 'data': ['i wanna love i wanna touch',\n", + " 'can you feel me through the night? i make you mine',\n", + " 'かじかむその手を離さぬように握るよ',\n", + " '去年よりも寒い冬になると 朝のニュースでは言っていたけど',\n", + " '凍える夜でも二人なら i will make you alright',\n", + " '寒くはない',\n", + " \"so be my girlfriend it's gonna be so fun\",\n", + " '今宵 雨が雪に変わるから 転ばぬように二人で歩こう',\n", + " 'cause you are you are the only one for me baby',\n", + " \"every night i'll get you love\",\n", + " '冷めない愛で誰よりも温めてあげる',\n", + " \"every morning i'll give a kiss\",\n", + " '目覚めた時から誰よりも笑わせてあげる',\n", + " 'i wanna see your everything',\n", + " \"i will never let you down let's start it now\",\n", + " 'このまま二人で遠くの街で暮らそう',\n", + " '今も忘れられない恋の痛みも 癒えることのない心の傷も',\n", + " 'これからは僕にあずけてよ i can take it away',\n", + " 'もう独りじゃない',\n", + " \"so be my girlfriend it's gonna be so fun\",\n", + " '今宵 雨が雪に変わるから 転ばぬように二人で歩こう',\n", + " 'cause you are you are the only one for me baby',\n", + " \"every night i'll get you love\",\n", + " '冷めない愛で誰よりも温めてあげる',\n", + " \"every morning i'll give a kiss\",\n", + " '目覚めた時から誰よりも笑わせてあげる',\n", + " 'snow is falling, let me love you',\n", + " 'i will make you make you so happy',\n", + " 'i will stand by you forever',\n", + " 'i will make you make you so happy',\n", + " \"so be my girlfriеnd it's gonna be so fun\",\n", + " '今宵 雨が雪に変わるから 転ばぬように二人で歩こう',\n", + " 'cause you are you arе the only one for me baby',\n", + " \"every night i'll get you love\",\n", + " '冷めない愛で誰よりも温めてあげる',\n", + " \"every morning i'll give a kiss\",\n", + " '目覚めた時から誰よりも笑わせてあげる',\n", + " 'snow is falling, let me love you',\n", + " 'i will make you make you so happy',\n", + " 'i will stand by you forever',\n", + " 'i will make you make you so happy',\n", + " '倖田來未「atomic energy」の歌詞',\n", + " 'baby, baby',\n", + " 'baby, baby...',\n", + " '今日も独り朝が来るまで 眠れそうにないよ',\n", + " 'ベッドの中で思い出している oh darling 君のコトを',\n", + " 'i want you back',\n", + " 'もう一度だけ just give me one more chance',\n", + " \"let me tell you baby i'm sorry\",\n", + " '戻りたいよ 君との愛しい朝に',\n", + " \"cause i love you baby i'm sorry\",\n", + " '戻れるなら 他には何も要らない oh darling',\n", + " 'カラダだけじゃ満たせないモノを君は持ち合わせているのに',\n", + " 'あの日の僕はどうかしていたよ oh darling i wanna say sorry',\n", + " 'i need your love',\n", + " '君の理想に近づくから',\n", + " \"let me tell you baby i'm sorry\",\n", + " '戻りたいよ 君との愛しい朝に',\n", + " \"cause i love you baby i'm sorry\",\n", + " '償うから アナタのそばにいさせて',\n", + " 'i really want you back i really want you back',\n", + " 'i really want you back just give me a second chance',\n", + " 'i really want you back i really want you back',\n", + " 'i really want you back just give me a second chance',\n", + " '許して欲しいとは言わない でも必要なんだ',\n", + " '君がいなきゃ生きていけない',\n", + " \"i'm going crazy baby i'm feeling broken down\",\n", + " 'please call me back',\n", + " \"let me tell you baby i'm sorry\",\n", + " '戻りたいよ 君との愛しい朝に',\n", + " \"cause i love you baby i'm sorry\",\n", + " '戻れるなら 他には何も要らない',\n", + " \"let me tell you baby i'm sorry\",\n", + " '戻りたいよ 君との愛しい朝に',\n", + " \"cause i love you baby i'm sorry\",\n", + " '償うから アナタのそばにいさせて oh darling',\n", + " 'i really want you back i really want you back',\n", + " 'i really want you back just give me a second chance',\n", + " 'i really want you back i really want you back',\n", + " 'i really want you back just give me a second chance',\n", + " 'we are treasure, we are forever',\n", + " '共に未来を描くのさ',\n", + " 'we are treasure, we all together',\n", + " 'memories memories make your memories',\n", + " 'あの丘めがけ走り抜けよう',\n", + " '目指すなら何処へでもいけるさ',\n", + " '振り返らず未来を見据えて',\n", + " \"let's get together and run\",\n", + " 'let me try try try it again one more time',\n", + " '間違っていても後悔はしない',\n", + " 'if you wanna make, make your smile one more night',\n", + " 'i believe the way we go',\n", + " 'because',\n", + " 'we are, we are treasurе, we are forevеr',\n", + " '共に未来を描くのさ',\n", + " 'we are treasure, we all together',\n", + " 'memories memories make your memories',\n", + " '今からでも遅くはないから',\n", + " '秘めてたもの曝け出してくれ',\n", + " '眩しいぐらい光解き放て',\n", + " \"let's get together and shine\",\n", + " 'let me try try try it again one more time',\n", + " 'つまずいたくらいなら問題ない',\n", + " 'if we could be, be the one, much more fun',\n", + " 'i believe the way we go',\n", + " 'because',\n", + " 'we are, we are treasure, we are forever',\n", + " '君と夢をみたいから',\n", + " 'we are treasure, we all together',\n", + " '胸の奥に刻むのさ',\n", + " 'you are not alone',\n", + " 'you are not alone',\n", + " 'you are not alone',\n", + " 'make your memories',\n", + " '<×2>',\n", + " '大切なモノでも 無くしてしまうから',\n", + " '信じたモノだけは 離さずに抱えて',\n", + " '僕らはこの先も独りじゃないから',\n", + " 'i believe that i could be the one',\n", + " \"i'm gonna sing for my lover, sing for my pleasure\",\n", + " 'sing for my memories',\n", + " 'because',\n", + " 'we are treasure, we are forever',\n", + " '共に未来を描くのさ',\n", + " 'we are treasure, we all together',\n", + " '共に今を生きるのさ',\n", + " 'we are, we are treasure, we are forever',\n", + " '君と夢をみたいから',\n", + " 'we are treasure, we all together',\n", + " '胸の奥に刻むのさ',\n", + " 'you are not alone',\n", + " 'you are not alone',\n", + " 'you are not alone',\n", + " 'make your memories',\n", + " 'you are not alone',\n", + " 'you are not alone',\n", + " 'you are not alone',\n", + " 'make your memories']},\n", + " 'rap': {'meta': {'train_data': [\"yo, yo, what you talkin' 'bout? (what?)\",\n", + " \"yo, what you talkin' 'bout?\",\n", + " \"waht, ayy, let's go!\",\n", + " \"we talkin' 'bout bitches and money (bitches and money)\",\n", + " \"we talkin' 'bout bitches and money (bitches and money)\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " '大金と女の子たち (ayy)',\n", + " '大金と女の子たち',\n", + " '大金と女の子たち',\n", + " \"we talkin' 'bout bitches and money (woo!)\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " 'bitches and money, ayy',\n", + " \"we talkin' 'bout bitches and money\",\n", + " 'bitches and money, ayy',\n", + " '大金と女の子たち (bitches and money)',\n", + " '大金と女の子たち',\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " 'boys jealous looking so ugly',\n", + " 'six street, yeah, we party (party)',\n", + " 'open it shit up, we mosh pit',\n", + " 'take a flight by jet blue',\n", + " \"just touch down pull wit' bentley coupe\",\n", + " 'in london spend all my euro (euro)',\n", + " 'check my poster out in soho',\n", + " \"i sippin' henney on the rock\",\n", + " \"i sippin' henney on the rock\",\n", + " '巡演到美国我工作的时候也感觉我像在度假',\n", + " 'do not disturb',\n", + " \"ain't no time for your turn\",\n", + " 'ice so freezing got me rocking my fur',\n", + " \"she said i'm such a jerk\",\n", + " '对了的 照这个样子做对了的',\n", + " '在看一下在坐的废物些',\n", + " '在我面前永远是脆弱的',\n", + " '对了的 照这个样子做对了的',\n", + " '在看一下在坐的废物些',\n", + " '在我面前永远是脆弱的',\n", + " 'sheesh!',\n", + " \"we talkin' 'bout bitches and money\",\n", + " 'bitches and money, ayy',\n", + " \"we talkin' 'bout bitches and money\",\n", + " 'bitches and money, ayy, woo',\n", + " '大金と女の子たち (bitches and money)',\n", + " '大金と女の子たち',\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " 'お金と女のことが好き',\n", + " '裸の動画送ってくるし',\n", + " '体綺麗で顔も美人',\n", + " '100万以上の時給を稼ぎ',\n", + " 'すぐに使い車2台',\n", + " 'いつまでも欲のかたまり',\n", + " '馬鹿に付ける薬はない',\n", + " 'なんで君hoe達にやる為払う?',\n", + " 'アフターパーティのクラブ',\n", + " 'ビッチズやりたがる',\n", + " 'vipん中に花火つくシャンパンボトル',\n", + " '数分で手にする誰かの一ヶ月分',\n", + " \"let's go!\",\n", + " \"we talkin' 'bout bitches and money (bitches and money)\",\n", + " \"we talkin' 'bout bitches and money (bitches and money)\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " '大金と女の子たち',\n", + " '大金と女の子たち',\n", + " '大金と女の子たち',\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " 'bitches and money, ayy',\n", + " \"we talkin' 'bout bitches and money\",\n", + " 'bitches and money, ayy',\n", + " '大金と女の子たち (bitches and money)',\n", + " '大金と女の子たち',\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"this is normal, don't worry\",\n", + " '他们从来不敢当面作对',\n", + " '躲在背后 多嘴 always',\n", + " '我在食物链的顶端他们排在末尾',\n", + " '我的地盘我做主像是一只鲨鱼活在水里',\n", + " '当个男人不要当个窝囊废',\n", + " '我的规矩就是没有规矩',\n", + " '害怕就远离这里 台下充满太多未知数',\n", + " '人群像wave, ayy, everyone face to face',\n", + " '下一秒开始祈祷不要被我们给遇到',\n", + " '在你身体划个伤口留下记号',\n", + " '流出来的血染红我的皮草',\n", + " 'higher gang无处不在 就像被网络覆盖',\n", + " '没有搞不定的问题 就像神秘的达芬奇',\n", + " 'ha ha ha ha每个国家都能找到属于我的踪迹',\n", + " '过得生活总是那么有趣那么充裕',\n", + " '拿到海贼王的宝藏就在这个冬季',\n", + " \"let's go!\",\n", + " \"we talkin' 'bout bitches and money (bitches and money)\",\n", + " \"we talkin' 'bout bitches and money (bitches and money)\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " '大金と女の子たち, ayy',\n", + " '大金と女の子たち',\n", + " '大金と女の子たち',\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " 'bitches and money, ayy',\n", + " \"we talkin' 'bout bitches and money\",\n", + " 'bitches and money, ayy',\n", + " '大金と女の子たち (bitches and money)',\n", + " '大金と女の子たち',\n", + " \"we talkin' 'bout bitches and money\",\n", + " \"we talkin' 'bout bitches and money\",\n", + " 'whats good',\n", + " 'ゲリラ豪雨',\n", + " 'ゲリラ豪雨',\n", + " 'ゲリラ豪雨',\n", + " 'ゲリラ豪雨',\n", + " 'get it out get it out get it out',\n", + " 'きみがgive me now ゲリラ',\n", + " 'スタイル時代カルチャー',\n", + " '超えてきたぜゲリラ',\n", + " 'リメンバー 気づけば',\n", + " 'ヤバイのはヤバイ',\n", + " 'マッカートニー',\n", + " 'ジャンル関係ない音落ちてきたゲリラ',\n", + " 'フーのトミー',\n", + " 'ナンバガブランキー',\n", + " 'm.i.aムー&タイラー',\n", + " 'ピュアとクズのミルフィーユ',\n", + " '音がなればfeel',\n", + " 'アイマ music ピッチ',\n", + " 'oh get it out',\n", + " 'ドンストップ',\n", + " '降り止まないこの music',\n", + " '(傘も何もいらないよ)',\n", + " 'ドンストップ',\n", + " '鳴り止まないこの music',\n", + " '(君と同じ場所にしたい',\n", + " '身体中満たす感じてる喜び)',\n", + " 'ドンストップ',\n", + " '降り止まないこの music',\n", + " 'ブリーズ more for me',\n", + " 'あれはそうだ',\n", + " '天才テレビくん',\n", + " 'でみたドラムセット',\n", + " 'あのときからわたし',\n", + " '壊れてる',\n", + " 'ドラム&ラッパー',\n", + " '昔リメンバー',\n", + " '土砂降りもリズムに聞こえたなまるで',\n", + " 'ゲリラ豪雨 ゲリラ豪雨',\n", + " 'あれから一度も降り止まぬrain',\n", + " 'ゲリラ豪雨 ゲリラ豪雨',\n", + " '降れよ音で濡らしてくれよヘロー',\n", + " '大人たちが話すことは',\n", + " '僕らにとっては古いことで',\n", + " '楽しもうbaby 無我夢中に',\n", + " '始まりはみんな同じとこ',\n", + " 'let me hear say eh eh eh',\n", + " 'everybody eh eh eh',\n", + " 'like aゲリラ みんな上げていけば',\n", + " '悲しむ暇もなくつれていく今すぐ',\n", + " 'ドンストップ',\n", + " '降り止まないこのmusic',\n", + " '(傘も何もいらないよ)',\n", + " 'ドンストップ',\n", + " '止まることのないmusic',\n", + " '(君と全て分け合いたい',\n", + " '身体中満たす感じてる喜び)',\n", + " 'ドンストップ',\n", + " 'もっと降れよmore music',\n", + " 'please more for',\n", + " 'whats good',\n", + " \"what's good\",\n", + " 'guerrilla heavy rain',\n", + " 'guerrilla heavy rain',\n", + " 'guerrilla heavy rain',\n", + " 'guerrilla heavy rain',\n", + " 'get it out get it out get it out',\n", + " 'you give me now guerrilla',\n", + " 'style, era, culture',\n", + " 'i got beyond, guerrilla',\n", + " 'remember, when you realize',\n", + " 'danger is danger',\n", + " 'the sounds that doesn’t take any genre falls, guerrilla',\n", + " 'mccartney',\n", + " 'tomy in the who',\n", + " 'nanbagablanky',\n", + " 'm.i.a moo & tyler',\n", + " 'millefeuille of pure and trashes',\n", + " 'if there’s no music, then feel',\n", + " 'i’m a music bitch',\n", + " 'don’t stop',\n", + " 'this music doesn’t stop falling',\n", + " 'there’s no umbrella or anything is needed',\n", + " 'don’t stop',\n", + " 'this music doesn’t stop',\n", + " 'i want to stay at the same place with you',\n", + " 'it ãlls my whole body, the joy of feeling it',\n", + " 'don’t stop',\n", + " 'the music doesn’t stop falling',\n", + " 'please, more for me',\n", + " 'that is it',\n", + " 'mr.genius tv',\n", + " 'the drum set that i saw in that show',\n", + " 'from that moment, i',\n", + " 'have been broken',\n", + " 'drum & rappers',\n", + " 'remember the old time',\n", + " 'even the heavy rain started sounded as rhythms, it’s just like',\n", + " 'guerrilla heavy rain, guerrilla heavy rain',\n", + " 'ever since that day, it has never stopped, rain',\n", + " 'guerrilla heavy rain, guerrilla heavy rain',\n", + " 'fall on me, web me with the noise, hello',\n", + " 'stuff grown ups talk about is',\n", + " 'old stuff for us',\n", + " 'baby, let’s enjoy, lose your mind',\n", + " 'the start is the same for everyone',\n", + " 'let me hear say eh eh eh',\n", + " 'everybody eh eh eh',\n", + " 'like a guerrilla, if we all start lifting it together',\n", + " 'it’ll be taken without any time to feel sad, now',\n", + " 'don’t stop',\n", + " 'this music never stop falling',\n", + " 'there is no umbrella or other stuff needed',\n", + " 'don’t stop',\n", + " 'the music will never end',\n", + " 'i want to share everything with you',\n", + " 'it’s filling my whole body, joy from this feeling',\n", + " 'don’t stop',\n", + " 'let it fall more music',\n", + " 'please, more for me',\n", + " \"what's good\",\n", + " '皆がそろそろ寝る時間だな',\n", + " '準備をはじめる louis vuitton から',\n", + " 'snapback cap 組み合わせて今日も',\n", + " '鏡越し確認する swag(i got it)',\n", + " '今夜の partyは ladies free だろ',\n", + " '誰となるかな親密に',\n", + " '03 エリアー流ハンター',\n", + " '狙いを定める一番 fly girl',\n", + " 'いろんな展開あるなんだかんだ',\n", + " 'i got some mad bitches working',\n", + " 'under cover',\n", + " 'i got my iphone charged フルパワーで',\n", + " 'ひたすら増えてく番号、番号',\n", + " \"we're just having a party\",\n", + " \"there's no need to hurry\",\n", + " 'あるがままに騒げば',\n", + " 'freedom all over the building',\n", + " '心拍数あがっても心配いらないって',\n", + " \"we're going hard\",\n", + " 'keep the music going all night',\n", + " 'keep the ladies shining all night',\n", + " 'keep the bottles popping all night',\n", + " 'going pm to am、pm to am',\n", + " 'keep the music going all night',\n", + " 'keep the ladies shining all night',\n", + " 'keep the bottles popping all night',\n", + " 'going pm to am、pm to am',\n", + " '今夜は朝まで弾けたい(blow it)',\n", + " 'party が無いと life は味気ない(no no)',\n", + " '爆音で流れる最新 leak(what is it)',\n", + " '待てない正式な配信日(dig it)',\n", + " '世の中のルールは意味不明だよ',\n", + " 'それを守るとかありえねーだろ',\n", + " 'club で踊るだけ風営法とか',\n", + " '出直してこい cops 10年後、マジ',\n", + " \"世界中の music lovers what's up\",\n", + " 'デカめのスピーカーを爆音でならす',\n", + " '俺等絶対負ける気ないから',\n", + " 'we will never stop the party keep',\n", + " 'the ladies(come on in)',\n", + " \"we're just having a party\",\n", + " \"there's no need to hurry\",\n", + " 'あるがままに騒げば',\n", + " 'freedom all over the building',\n", + " '心拍数あがっても心配いらないって',\n", + " \"we're going hard\",\n", + " 'keep the music going all night',\n", + " 'keep the ladies shining all night',\n", + " 'keep the bottles popping all night',\n", + " 'going pm to am、pm to am',\n", + " 'keep the music going all night',\n", + " 'keep the ladies shining all night',\n", + " 'keep the bottles popping all night',\n", + " 'going pm to am、pm to am',\n", + " '明日の予定とか忘れたいてか',\n", + " '時すでに遅し忘れたかも',\n", + " 'ここは不思議なオレ等のパラダイス',\n", + " '1日24時間じゃぜんぜんたりないす no',\n", + " '普通に行きてちゃつまらない(yeah)',\n", + " '騒ぎたいならdo it tonight(i do it)',\n", + " \"何が何でも楽しむ主義(that's me)\",\n", + " 'なにが悪いんだ huh?fuck the police',\n", + " \"we're just having a party\",\n", + " \"there's no need to hurry\",\n", + " 'あるがままに騒げば',\n", + " 'freedom all over the building',\n", + " '心拍数あがっても心配いらないって',\n", + " \"we're going hard\",\n", + " 'keep the music going all night',\n", + " 'keep the ladies shining all night',\n", + " 'keep the bottles popping all night',\n", + " 'going pm to am、pm to am',\n", + " 'keep the music going all night',\n", + " 'keep the ladies shining all night',\n", + " 'keep the bottles popping all night',\n", + " 'going pm to am、pm to am',\n", + " '(ceschi)',\n", + " 'walking on tippy toes',\n", + " 'through rubble and debris',\n", + " 'towards a brighter light',\n", + " 'i feel my grandmother calling me',\n", + " 'over to the window',\n", + " 'we can go',\n", + " 'wherever the wind blows',\n", + " 'in a moment',\n", + " 'any possibility can happen',\n", + " 'in a moment',\n", + " 'we can be forgotten or remembered',\n", + " 'in a moment',\n", + " 'worlds can change',\n", + " 'those moments when hope remains',\n", + " 'are the precious porcelain pieces of power',\n", + " 'that so many people crave',\n", + " 'i am not afraid',\n", + " 'to say',\n", + " 'that i got a little bit of hope and',\n", + " 'ima stay this way',\n", + " 'whenever the happiness eventually',\n", + " 'fades away',\n", + " \"i'll find my way to the top of the mountains peak\",\n", + " 'with a falcons beak on my face',\n", + " 'pecking away at the dark when life is bleak',\n", + " 'these heartbeats can move so slow',\n", + " 'like rain droplets down car windows',\n", + " 'and pockets are empty holes',\n", + " 'where stress only grows and grows',\n", + " 'in a moment',\n", + " 'any possibility can happen',\n", + " 'in a moment',\n", + " 'we can be forgotten or remembered',\n", + " 'in a moment',\n", + " 'worlds can change',\n", + " \"but i'll love you til the grave\",\n", + " \"and i'll struggle to become a better person every minute every day\",\n", + " \"i don't play\",\n", + " \"this ain't no fucking game\",\n", + " \"i'm saying\",\n", + " 'that the human race can overcome all this pain',\n", + " 'anyway',\n", + " 'so as long hope remains',\n", + " \"i'ma struggle to become a better person every minute every day\",\n", + " 'between our shoulder blades',\n", + " 'between our shoulder blades',\n", + " \"there's a power sprouting\",\n", + " 'deeply',\n", + " 'between our shoulder blades',\n", + " '(kaigen)',\n", + " '過去を漂う箱舟の中で身篭った御子の名は望み/',\n", + " '下書きのまま保存した明日に溢した悲しみの染み抜き/',\n", + " 'なけなしを分けあい再び開花を誓うにこやかな蕾/',\n", + " '爪痕へ一人一人のあと一息が吹き寄せる寿/',\n", + " '焦土と化した郷土は想像すら容易に参上できぬ程の惨状/',\n", + " '逃げ延びた事実や生かされている実感はできるものならいっそ返上/',\n", + " 'してしまおうかと思うぐらい重く、あまりに無力/',\n", + " 'な自分自身に理不尽なまでにのしかかる 死に底ない一同/',\n", + " '心因性の被災により 額に開いた 負い目に覆い被せる罪滅ぼしを創作(捜索)中/',\n", + " '電波には乗らぬ数多の現場、 情報の瓦礫を除去すれば、/',\n", + " '捌き切れずに持て余した善意が転移すべき先は一目瞭然/',\n", + " '大は小を兼ねず、大と小を兼ね備える当意即妙の共同戦線/',\n", + " 'この期に及んで組織図を広げ、つまらん利害に迂回を促され後手に/',\n", + " '回るご対応 一命を落っことしても延命させたい慣例とその恩恵/',\n", + " '知ってか知らずか日常的に担いでいた片棒の全貌が露出/',\n", + " 'ひいては視野を囲うべく加工された建屋もよもやの爆発/',\n", + " '我田引水を使用しての冷却に腐心しようなら容赦なく付着する不信感/',\n", + " '都合よく括った高をほどく耐用年数をとうに超過した依存心のメルトダウン/',\n", + " '起こりえた想定外という人災に際して差し迫る俺たちの判断/',\n", + " 'や行動が怠慢な想定内を押し流したって構いやしない/',\n", + " '同じ傷が築いた絆がおいそれと倒壊/',\n", + " 'する恐れなど到底なく、空回りする縦割りの頭を勝ち割り/',\n", + " '苦しい時のお上頼みからの立ち退き、 分かち合える労り/',\n", + " 'の炊き出し係 はもちろん持ち回りで繋げる踏ん張り/',\n", + " 'in an ark drifting among the past a child was conceived',\n", + " 'and was named hope',\n", + " 'spilt sorrow on a tomorrow saved as a draft',\n", + " 'now we clean the stains out',\n", + " 'a smiling bud, sharing pennies and swearing to bloom again',\n", + " 'toward a scar, each one’s “one more step”',\n", + " 'pushes together a day of celebration',\n", + " 'our birthplace turned to scorched earth',\n", + " 'a terrible spectacle beyond imagination’s reach',\n", + " 'reality of our escape and the feeling of being kept alive are so heavy',\n", + " 'on my incompetent shoulders it’s absurd, i’d give it back if i could',\n", + " 'a group of survivors, stricken by a psychogenic disaster',\n", + " 'which opened eyes of debt on our foreheads',\n", + " 'so we quest and create for atonement',\n", + " 'many scenes that do not travel on radio waves',\n", + " 'if the rubble of information is cleaned out',\n", + " 'will only take one look to see where the over flowing goodwill will spread to',\n", + " 'not “better bigger than small” but both “big and small” united front repartee',\n", + " 'still trying to spread that organization chart',\n", + " 'responses delayed by detours caused of useless interests',\n", + " 'they put people’s lives on the line',\n", + " 'just to keep alive conventions and the fruit it bears',\n", + " 'the acts we took part in either consciously or not',\n", + " 'have exposed in its entirety like fuel rods',\n", + " 'in addition, a structure was constructed to engulf our view',\n", + " 'only soon to explode',\n", + " 'every miller draws water to his own mill to cool down',\n", + " 'if one takes pains in this then distrust will attach to those relentlessly',\n", + " 'a meltdown of dependency well beyond its service life',\n", + " 'which was overestimated for convenience sake',\n", + " 'our decisions face a man-made disaster beyond expectations',\n", + " 'which could happen there is no problem if',\n", + " 'our actions push aside the expectations built on laziness',\n", + " 'crush the hierarchical heads just spinning wheels and never assuming',\n", + " 'that the bond tied by shared scars could collapse',\n", + " 'retreat from reliance on authority in times of crisis',\n", + " 'compassion shared at soup kitchens',\n", + " 'this connection is our firm stand',\n", + " '(ceschi)',\n", + " 'between our shoulder blades',\n", + " 'between our shoulder blades',\n", + " \"there's a power sprouting\",\n", + " 'deeply',\n", + " 'between our shoulder blades',\n", + " \"don't panic don't don't panic(×3)\",\n", + " 'ドタバタ慌てふためくブレイクス',\n", + " \"don't panic don't don't panic(×3)\",\n", + " 'party, start it! くれぐれも warning',\n", + " \"don't panic\",\n", + " 'とっくのとうアッつ間に始まってるゼ',\n", + " '御機嫌は如何?',\n", + " '落ち着いてハニー 今まだスパーリング',\n", + " '本番はこんなんじゃすまないゼ バーニング',\n", + " \"don't panic\",\n", + " '堂々とリクライニング倒してリラックス',\n", + " '宇宙へダイビング',\n", + " '心の準備ができたら打ち上げ開始',\n", + " '冷ましそっと待機',\n", + " \"don't panic\",\n", + " 'クラシックで言やタイタニック',\n", + " '大船に乗ったつもりでドラマティック',\n", + " 'rip... シンフォニックな5人',\n", + " '肩並べクロマティックに降臨',\n", + " \"don't panic\",\n", + " '神経が過敏 まずは深呼吸',\n", + " '慌てるな民 我ら五天王 制定せし憲法',\n", + " '高い危険度 願うご清聴',\n", + " \"don't panic don't don't panic(×3)\",\n", + " 'ドタバタ慌てふためくブレイクス',\n", + " \"don't panic don't don't panic(×3)\",\n", + " 'party, start it! くれぐれも warning',\n", + " 'i shoot from the hip',\n", + " \"i'm quick on the draw\",\n", + " '16 in the clip and the \"yes, yes, y\\'all\"',\n", + " 'i treat the crowd like a firing squad',\n", + " \"trigger happy like a postman who's lost his job (he's got a gun!)\",\n", + " 'better run for the exits',\n", + " \"i'm young and i'm reckless, fidgeting and restless\",\n", + " 'my lips shoot the gift that my teeth are on',\n", + " 'but no need for alarm, i mean no harm',\n", + " \"i'm cool, calm, collected\",\n", + " 'when times is hectic',\n", + " 'move to the set, diffuse bombs detected',\n", + " \"roll to any show, i'm in full control\",\n", + " \"to get dough, keep movin' like soul ii soul\",\n", + " \"please, no panickin'\",\n", + " 'freeze like a mannequin',\n", + " \"east of the line, i won't leave, i'm not anakin\",\n", + " \"i'm bringin' the love, call me gavin macleod\",\n", + " \"with the crowd, like james brown, yell i'm black and i'm proud\",\n", + " 'maaaaan, we gotta go back to japan!',\n", + " 'i know, i hope the people there remember our band!',\n", + " 'well incase they forgot, how ud can rock',\n", + " 'we got young einstein, blowing up the spot!',\n", + " \"don't panic don't don't panic(×3)\",\n", + " 'ドタバタ慌てふためくブレイクス',\n", + " \"don't panic don't don't panic(×3)\",\n", + " 'party, start it! くれぐれも warning',\n", + " '御乗車注意 特別なクルージング',\n", + " 'お乗り遅れのないようにグルーヴィング',\n", + " '空気読む読まないすら無い エビバリとっくに side to side',\n", + " 'ほらスタンバイ 焦らずクオンタイズ合わせてタイトなセット',\n", + " '出発はオンタイム ベルト着用のサイン',\n", + " 'lights camera サクサクとaction',\n", + " \"don't panic\",\n", + " '大好きです',\n", + " '(kaigen)',\n", + " '敵地のアンチも味方のベンチも総立ち/',\n", + " '腕比べの行方は紙一重 奇跡よ 集え/',\n", + " '劇的な幕切れの仕入先/',\n", + " 'all stand, from the haters in enemy land to the bench of my fam',\n", + " 'a thin line divides the outcome of battle. gather here miracles',\n", + " 'the supplier of a dramatic curtain fall',\n", + " '(myka 9)',\n", + " '(kaigen)',\n", + " '記録を残そうが、記憶に残ろうが/',\n", + " '決めれば一躍頼みの綱、 外せば一夜で刺身のつま/',\n", + " 'つまりのるかそるか、万事休すか九死に一生を得るか/',\n", + " '手に汗握る窮地の心地よさに酔いしれる/',\n", + " '筋金入りの勝負師の見せ場が押寄せる/',\n", + " '固唾を飲む土俵際で巻きこす/',\n", + " '歓喜と失意の渦はカオスの図/',\n", + " '向かい風が強くなれば、自ずと預かる仲間の信頼/',\n", + " '脳裏に取り付く懲りずに重ねたみじめで無様な失敗/',\n", + " 'の後味は問われる真価に難なく応えるために/',\n", + " '積み立てた備えと思えば憂えなし/',\n", + " 'デッドライン直前 疑心と自信のトレードが合意に達し/',\n", + " '新規の伝説をお膳立て 流れを変える弾数 /',\n", + " '残りは果たして何発? のしかかる重圧/',\n", + " 'は率先して担いでごらん 天王山で充実/',\n", + " 'した景観を満喫するには、それに見合うだけの負荷が不可欠/',\n", + " 'either you hit a new record or remain in memory',\n", + " 'if it works, spring into becoming the last hope',\n", + " 'if not, turn into garnish for sashimi in one night',\n", + " 'sink or swim, it’s “the end” or an “escape from death”',\n", + " 'a hardcore gambler ecstatic in the pleasant sweaty palm tight squeeze',\n", + " 'here comes the flood of highlights',\n", + " 'paint a picture of chaos, a vortex of rapture and despair',\n", + " 'among the breathless at the edge of the ring',\n", + " 'when the headwind’s strong look after the trust of friends',\n", + " 'miserable awkward mistakes repeated and layered in the back of mind',\n", + " 'nothing to worry about, think of the aftertaste as savings',\n", + " 'a preparation for the right answer to the question of true value',\n", + " 'right before deadline, set the stage for a new legend',\n", + " 'through the trading agreement of doubt and confidence',\n", + " 'bullets to change momentum, how many shots left in the chamber?',\n", + " 'the pressure is on, so take the initiative to carry the ball',\n", + " 'the weight you carry must correspond',\n", + " 'in order to fully enjoy the view from the top of mount make-or-break',\n", + " '約束された将来/',\n", + " 'においても挫折は執拗に出場機会/',\n", + " 'に恵まれる。 逃した魚の大きさを計量し、踏ん張りどころ/',\n", + " 'で感傷にひたるよりかは、どん底で捕れた泥んこ/',\n", + " 'の成果を認め、磨けば光る穴埋めの育成に精を/',\n", + " '出していくほうがより正解。 苦節何年かかっても/',\n", + " '度々後ろ指を差され、情熱が少々荒んでも/',\n", + " 'あの日の衝動でくるんだ信念が芯まで腐るもんか/',\n", + " '花道を飾る役目をおめおめと諦めに譲るなんざ/',\n", + " 'まっぴらごめん。 末路すら貫通する渇望が活路に/',\n", + " '抜擢され、忘れ物をした古巣へ電撃復帰/',\n", + " '色違いの夢が返り咲き、過去の脚本を捨てた働き /',\n", + " 'が続きを演出するが、取り戻す結末は原作に忠実に/',\n", + " '来世まで語り継がれる名場面のライセンスを独占/',\n", + " '和洋折衷の番狂わせの詰め合わせ。 myka9, kaigen /',\n", + " 'の二枚看板。 西海岸からジパングへ通すアリウープパス/',\n", + " 'この曲の終了のブザーと同時に灯すヒップホップの明日/',\n", + " 'even for a promised future',\n", + " 'defeat is persistent with its chances to play',\n", + " 'rather than measuring the size of the fish that escaped',\n", + " 'and becoming sentimental in a time for final effort',\n", + " 'the correct answer is to acknowledge the muddy fruits',\n", + " 'picked at the bottom of the pit',\n", + " 'and hustle to make up the deficit which shines if polished',\n", + " 'no matter how many criticisms and years of hardship it takes',\n", + " 'and the passion goes rough, conviction wrapped with that one day’s',\n", + " 'impulse will never rot to the core',\n", + " 'no way will i give way to giving up when my role is',\n", + " 'to walk down the runway. thirst, strong enough penetrate even fate',\n", + " 'was chosen as the path for a',\n", + " 'speedy return to the old place where i left something',\n", + " 'a dream in a different color blooms and',\n", + " 'the work continues to perform without the script of the past',\n", + " 'but the ending i retrieve is faithful to the original',\n", + " 'monopolized the licenses for the highlights',\n", + " 'to be passed down to the next life',\n", + " 'surprise package of styles compiled from the east and west',\n", + " 'myka9 and kaigen double headliner',\n", + " 'alley oop pass complete from the west coast to zipang',\n", + " 'light up hiphop’s future as the buzzer signals the end of this jam',\n", + " '(myka 9)',\n", + " '(kaigen)',\n", + " '来世まで語り継がれる名場面のライセンスを独占/',\n", + " '和洋折衷の番狂わせの詰め合わせ。 myka9, kaigen /',\n", + " 'の二枚看板。 西海岸からジパングへ通すアリウープパス/',\n", + " 'この曲の終了のブザーと同時に灯すヒップホップの明日/',\n", + " 'monopolized the licenses for the highlights',\n", + " 'to be passed down to the next life',\n", + " 'surprise package of styles compiled from the east and west',\n", + " 'myka9 and kaigen double headliner',\n", + " 'alley oop pass complete from the west coast to zipang',\n", + " 'light up hiphop’s future as the buzzer signals the end of this jam',\n", + " 'husky studio',\n", + " 'you should go the fuck home and meditate on this shit boy',\n", + " 'we’re living intuitively',\n", + " 'purely knowing it',\n", + " 'a.w.c',\n", + " 'お前の弱いマフィア',\n", + " '出直して古いサティアン',\n", + " 'rappersの目には涙',\n", + " '何人が失うのそのキャリア?',\n", + " '欲しいの全部買う',\n", + " '売られてない喧嘩も買う',\n", + " '予算管理しなくても',\n", + " 'i bounce back like a balloon',\n", + " '同じ土俵無理',\n", + " 'ザコいその頭ん中熟知',\n", + " 'give the whole thing to me',\n", + " 'i have been been through it',\n", + " '当然の報い',\n", + " 'your boyfriend 惚れ込む',\n", + " '媚びないエロス',\n", + " '腐ったシーンを解毒',\n", + " '選ばれし女神のゲノム',\n", + " 'まじお前誰?',\n", + " '(who r u?)',\n", + " 'マジでお前誰?',\n", + " '(who r u?)',\n", + " 'give me the whole ting man',\n", + " 'i reign on these bitches',\n", + " 'ノらないと負け',\n", + " 'ay yo, chaki why they testing me?',\n", + " 'i got anarchy to the left of me',\n", + " 'i got young killaz steady check for me',\n", + " 'and i rep the rock',\n", + " 'till the death of me',\n", + " '街の喧嘩小僧',\n", + " 'ダチは前科者',\n", + " '見てきた色んなもの',\n", + " 'chanelに取り憑かれた女の子',\n", + " '物が溢れてる',\n", + " '影にいい物が隠れてる',\n", + " 'どれもまがいもん',\n", + " '売れたらダサくても',\n", + " 'いいんじゃないの?',\n", + " 'リアルって何?',\n", + " 'まじリアルって何?',\n", + " 'てかお前誰?',\n", + " 'なー?',\n", + " 'お前は誰?',\n", + " 'coolな奴ら',\n", + " '1%もいないんじゃない?',\n", + " '三つ数えるから泣き止め',\n", + " 'デニムでも履いてれば味が出る',\n", + " 'まじお前誰?',\n", + " '(who r u?)',\n", + " 'マジでお前誰?',\n", + " '(who r u?)',\n", + " 'give me the whole ting man',\n", + " 'i reign on these bitches',\n", + " 'ノらないと負け',\n", + " 'ay yo, chaki why they testing me?',\n", + " 'i got anarchy to the left of me',\n", + " 'i got young killaz steady check for me',\n", + " 'and i rep the rock',\n", + " 'till the death of me',\n", + " 'you can’t make me respect you man',\n", + " 'that shit is earned',\n", + " 'you used to love me',\n", + " 'but you now hating?',\n", + " 'shit is \"learned\"',\n", + " 'you don’t know what to feel about me',\n", + " 'you don’t know what you doing',\n", + " 'but we knowing it',\n", + " \"まずslip off the rules what's poppin my dogg\",\n", + " 'dogear originoo so patarn 今宵も',\n", + " 'budamunk make sound parfectなbrother',\n", + " '奴の音楽をnextに上げる money maker',\n", + " 'changin talk このgameも俺がstickふれば風向きも変わるぜ see you bitch next time',\n", + " '奴らには未来が見えた',\n", + " '肩の荷降ろして風切る cool men grap plant',\n", + " 'last dance 常にsupplyする master',\n", + " \"let's flyt backで落とし込むdog style\",\n", + " 'flash輝き続けてるbroに愛',\n", + " 'backs今動きをとめる気はない',\n", + " 'ten commandments 俺なら一度でpop out',\n", + " 'for life borderはシカトでmake right',\n", + " 'thats the buglers 地下からheat vibe',\n", + " 'fallin down 試す crunch must clip mine',\n", + " 'just take it 俺はすぐそこにいる',\n", + " 'world wide tokaidopeness check rigght?',\n", + " 'まぁこれで業界の足も固まる 過ぎるブームに踊るfuckin bitchならpass',\n", + " '限界はとっくに越えたこれが新たなmusicの扉',\n", + " '即効take&over across the street trip everywhere',\n", + " 'women in the mirror uknow',\n", + " '閉じこもったgirlsもノブを捻るniceなrapのskillを持つkillеr meets buda',\n", + " 'why now?',\n", + " 'why you price down?',\n", + " 'why you leveling your shit with these rundowns?',\n", + " 'あの子たちにはまだわかんない',\n", + " '欲しくても深いとこまで掘れない no',\n", + " 'but baby i can もっと気づかせる存在価値',\n", + " \"何でもさらけ出して don't hide\",\n", + " 'what you wanna do to me? 何も怖くない',\n", + " 'what you wanna do bae?',\n", + " 'what you wanna do to me bae?',\n", + " 'you know i can love you',\n", + " 'you know i can love you bae',\n", + " 'what you wanna do bae?',\n", + " 'what you wanna do to me bae?',\n", + " 'you know i can love you',\n", + " 'you know i can love you bae',\n", + " '後ろ見ず来たここまで',\n", + " \"let's get started その言葉も面影\",\n", + " '増えた money けどいまだ走る city',\n", + " 'mama told me relax i said i’m sorry',\n", + " 'look at my squad bigchain 光らす neck',\n", + " 'we just playing 勝ち続けるこの game',\n", + " '嘘みたいな speed 駆け上がる top',\n", + " '嘘つける girl といる夜もある',\n", + " 'everything crazy 脱ぎ捨てるまた heavy weight hoodie ya',\n", + " \"feel like 80's 綺麗事を片付けるbaby ya\",\n", + " '気づかぬふりしてればfree',\n", + " 'i’m busy you know だから trust me',\n", + " '何で言う気は無いただ別に',\n", + " 'want you wanna do? 本当の俺は君に・・・',\n", + " 'what? you & me...',\n", + " '\"me & you\" ? 夜中の♡、既読スルー',\n", + " '大事なもの突き放した痛みで測る true value?',\n", + " 'そんなに怖い of a broken heart?',\n", + " '溺れそうになれば掛ける歯止めを?',\n", + " 'それで失うモメンタム i need you to hear 心の声を・・・',\n", + " 'they don’t make them like you no more nowadays',\n", + " 'なのにそんなに簡単にあげちゃうのはなぜ?',\n", + " '出会い、別れ、泣かせ、そんなのただの流れ',\n", + " 'i know you want to go deeper',\n", + " 'いいよ。私の中で',\n", + " 'what you wanna do bae?',\n", + " 'what you wanna do to me bae?',\n", + " 'you know i can love you',\n", + " 'you know i can love you bae',\n", + " 'what you wanna do bae?',\n", + " 'what you wanna do to me bae?',\n", + " 'you know i can love you',\n", + " 'you know i can love you bae',\n", + " 'i’m swift swift swift. no taylor',\n", + " 'i serve serve serve. no waiter',\n", + " 'i’m a full course meal',\n", + " 'mad flavors you ain’t satisfied with that bitch',\n", + " 'she is a wafer',\n", + " 'you are 限定盤 なかなか手に入らん少数生産',\n", + " \"you're limited edition. you're king\",\n", + " 'you come through shut shit down. 閉館',\n", + " \"baby go hard, we don't need no brake\",\n", + " \"we ain't gonna stop 朝までshake\",\n", + " \"turn up all night, we don't need no brake\",\n", + " \"we ain't gonna stop 朝までshake\",\n", + " '展示会でつけた最新のclothing',\n", + " 'looking fly you know my style いつも通り',\n", + " 'real is what i do always 妥協は許さない',\n", + " '未来的すぎな完璧主義',\n", + " '入るやいなやvip直行no id check',\n", + " '足下はnike id yeah',\n", + " \"i'm ill mother fucker i'm ill\",\n", + " 'ハイヒールのbi***s wanna f**k me',\n", + " 'マジでcrazyなシチュエーションがいつの間にか',\n", + " '俺の3dimension',\n", + " 'やっぱlifeは楽しまなきゃ意味ねえっしょ',\n", + " '独自のstyle a to z heads to toe',\n", + " 'always keep it fresh no イミテーション',\n", + " 'be original恐れはno good',\n", + " 'sky is the limit man一人で操縦',\n", + " '今日中出来る事明日にまわすな',\n", + " '今夜がpartyならnever遊び逃すな',\n", + " \"turn up baby go hard, we don't need no brake\",\n", + " \"we ain't gonna stop 朝までshake\",\n", + " \"turn up all night, we don't need no brake\",\n", + " \"we ain't gonna stop 朝までshake\",\n", + " \"turn up baby go hard, we don't need no brake\",\n", + " \"we ain't gonna stop 朝までshake\",\n", + " \"turn up all night, we don't need no brake\",\n", + " \"we ain't gonna stop 朝までshake\",\n", + " '(turn up)',\n", + " 'まるで今夜が最後のようにみなturn up',\n", + " \"i'm in the building\",\n", + " 'ladies you gotta turn up',\n", + " 'yeah you gotta turn up 次から次へと',\n", + " \"i'm poppin' bottles turn up\",\n", + " 'work hard play hard日々自己啓発',\n", + " '今日も乾杯セレブレイト互いの成果',\n", + " '価値観分かり合う腹違いbrothersと',\n", + " 'party like a rock star',\n", + " 'give me more give me more',\n", + " '止まらぬ状況',\n", + " 'ネガティブマインド早めに消去',\n", + " \"その心配事we don't need\",\n", + " '先に行くだけgo like hiromi',\n", + " 'だってヘイター気にしちゃ切りないし',\n", + " 'きっとどうせloserの意見意味ないし',\n", + " '良さげなバイブスだけでただ過ごす',\n", + " 'ヘイトやジェラス who cares 全部タイムロス',\n", + " 'party 楽しんだもん勝ちってのはガチ',\n", + " '騒ぎまくるのも一つの形',\n", + " 'やるなら全力いつかはみなrip',\n", + " '地獄か天国 turn up',\n", + " \"turn up baby go hard, we don't need no brake\",\n", + " \"we ain't gonna stop 朝までshake\",\n", + " \"turn up all night, we don't need no brake\",\n", + " \"we ain't gonna stop 朝までshake\",\n", + " \"turn up baby go hard, we don't need no brake\",\n", + " \"we ain't gonna stop 朝までshake\",\n", + " \"turn up all night, we don't need no brake\",\n", + " \"we ain't gonna stop 朝までshake\",\n", + " '(turn up)',\n", + " 'まるで今夜が最後のようにみなturn up',\n", + " \"i'm in the building\",\n", + " 'ladies you gotta turn up',\n", + " 'yeah you gotta turn up 次から次へと',\n", + " \"i'm poppin' bottles turn up\"]},\n", + " 'data': ['忘れて black out',\n", + " 'black out',\n", + " 'bla-bla-bla-black out',\n", + " 'black out',\n", + " 'black out',\n", + " 'bla-bla-bla-bla-bla-bla',\n", + " '夢つかみたきゃ',\n", + " '攻める時は now',\n", + " 'ヤツの game リセットして',\n", + " 'black out',\n", + " 'トロけるほど hot',\n", + " 'な body 照らして',\n", + " 'つまらないこと',\n", + " '忘れて black out (yeah, uh)',\n", + " 'i see ladies, lazers, bottles with chasers',\n", + " 'and i see ladies, lazers, lots of bottles with chasers',\n", + " 'yes, they call me visionair',\n", + " '先々が見える',\n", + " 'i can take you anywhere',\n", + " '未来教えてあげる',\n", + " 'あなたにもあげたい チェルシー',\n", + " 'take a shot',\n", + " 'あともう一つグイッと行けば',\n", + " '仲良くなれる',\n", + " 'だから why? why?',\n", + " 'なんて聞かず',\n", + " 'ワイワイしてようぜ',\n", + " 'bye-bye なんて言わず',\n", + " '倍々に楽しむ方法',\n", + " 'let me tell you how do it',\n", + " 'つま先から頭のてっぺんまで',\n", + " 'dipped in 新品 fashion',\n", + " 'ギラギラ ambush',\n", + " '片手に cash',\n", + " 'もう片方には magnum',\n", + " '今日の mission 今日のこと',\n", + " '忘れて black out',\n", + " '時計仕掛けのハートの',\n", + " 'タイムリミットが',\n", + " '迫って来たから',\n", + " 'black out',\n", + " 'ハデにしたいなら',\n", + " '後戻りはなし',\n", + " '未来までのカウントダウン to',\n", + " 'black out',\n", + " 'i prefer that you would just call me weezy - eastside gangsta’',\n", + " 'and i be runnin’ this shit like a flanker',\n", + " 'black card banker',\n", + " 'hanker in the back pocket',\n", + " 'and i wear them skinny jeans so you see my fat wallet',\n", + " 'that’s right i’m a big shot',\n", + " 'call me little cannonball',\n", + " 'mister gets up in your girl’s mouth like some anbesol',\n", + " 'hip-hop president',\n", + " 'ain’t my girl eloquent?',\n", + " \"don't she got more junk in her trunk than a elephant?\",\n", + " 'i-i-i’m an animal',\n", + " 'watch me i examine you',\n", + " 'and my chucks are old, but i swear that my flannel new',\n", + " 'man, i get money manual',\n", + " 'then i just man you',\n", + " 'bitch, i’m gone like my lam’ roof (young money)',\n", + " '夢つかみたきゃ',\n", + " '攻める時は now',\n", + " 'ヤツの game リセットして',\n", + " 'black out',\n", + " 'トロけるほど hot',\n", + " 'な body 照らして',\n", + " 'つまらないこと',\n", + " '忘れて black out',\n", + " '3, 2, 1, 逃げないで',\n", + " 'wait and see',\n", + " '明日を変えたいなら',\n", + " '全て black out',\n", + " '3, 2, 1, その気になれば',\n", + " 'you can wipe the city out so fast just like a',\n", + " 'black out',\n", + " 'black out',\n", + " '時計仕掛けのハートの',\n", + " 'タイムリミットが',\n", + " '迫って来たから',\n", + " 'black out',\n", + " 'ハデにしたいなら',\n", + " '後戻りはなし',\n", + " '未来までのカウントダウン to',\n", + " 'black out',\n", + " 'nana-nana-nana-nana black out',\n", + " 'nana-nana-nana-nana black out',\n", + " 'nana-nana-nana-nana black out',\n", + " 'nana-nana-nana-nana black out',\n", + " '(black out)',\n", + " 'black out',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " '女の子とベッドでfly',\n", + " 'たまに外国人とskype',\n", + " '普段はスタンプ送るline',\n", + " '友達いっぱい',\n", + " '嫌いな人には電話しない',\n", + " '携帯鳴ったら出る',\n", + " 'こっちから用があったらかける',\n", + " 'プルルル',\n", + " 'ナイスなクローズ買ったらフレックス',\n", + " 'ナイスなキックス買ったらフレックス',\n", + " 'なんでもかんでもみんなフレックス',\n", + " 'インスタグラムに写真載せる',\n", + " 'おー、格好いいね',\n", + " 'facebookとtwitter見て',\n", + " 'pop that pussy like that',\n", + " 'そうやって人生も楽しめ',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " '君はまだiphone4',\n", + " 'ぶっちゃ変わんないほとんど',\n", + " 'あの子はドモのスマートフォン',\n", + " 'なんでもいいからまず遊ぼう',\n", + " 'so pussy in my iphone',\n", + " 'iphone in my pocket',\n", + " '女の子と原宿に出かける',\n", + " 'ブーティコールはやりたいだけ',\n", + " 'bad bi-i-itch fuck it',\n", + " '記念に写真を撮ろう',\n", + " 'いけてる女いけてる男',\n", + " 'あの子もこの子も',\n", + " 'yellow t20 follow me',\n", + " '番号交換する',\n", + " '翼を授ける like red bull',\n", + " 'fly boy fly chick 空に浮く',\n", + " 'new pussy 登録する',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in your iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " 'pussy in my iphone5',\n", + " '大事な事第一',\n", + " '血は水よりも濃い',\n", + " \"that's what mama told me\",\n", + " 'でも泥水は血よりも濃い',\n", + " '多分それにやられちゃったmy daddy',\n", + " 'yeah he always told me',\n", + " 'not to sell work',\n", + " '17.5 same color t-shirts',\n", + " 'ママの勇気で生き延びた8ヶ月',\n", + " 'daddy came home',\n", + " '3日後にすぐ破裂した胎包',\n", + " '稀に見る安産',\n", + " 'love child 5 pound 8 ounces',\n", + " '生まれはアトランタ so',\n", + " 'やりたいことやるのは条件反射',\n", + " 'enfant terrible',\n", + " '私はスターだと教えてくれた父上',\n", + " '“jah”は神“mirror\"は鏡',\n", + " 'このミドルネームが唯一の形見',\n", + " 'only jah love blessed me through my days',\n", + " 'only jah love',\n", + " 'so i hafi give thanks and praise',\n", + " 'only jah love blessed me through my days',\n", + " 'only jah love',\n", + " 'so i hafi give thanks and praise',\n", + " '大事な事第一',\n", + " '血は水よりも濃いjust the theory',\n", + " '慣れないこともある最初は',\n", + " 'だからhands out your pockets',\n", + " 'head out your ass',\n", + " 'never focus on your past',\n", + " 'always keep it moving',\n", + " '枠にハマらず 難関もくぐり',\n", + " '抜けてきた',\n", + " 'we are some trooping commandos',\n", + " '腹ん中の時から波乱万丈',\n", + " '学校 病院に面会室',\n", + " '家に帰れば積まれた督促状',\n", + " '危険な目にも合わせた',\n", + " 'but you stayed strong',\n", + " 'a smile can go miles',\n", + " 'you taught me that',\n", + " 'そんなやだからこそゆっときな',\n", + " 'どんなとこでも気持ちでutopia',\n", + " 'he never gave me up and you gave me love',\n", + " 'どん底からここまで',\n", + " 'you held me up',\n", + " 'only jah love blessed me through my days',\n", + " 'only jah love',\n", + " 'so i hafi give thanks and praise',\n", + " 'only jah love blessed me through my days',\n", + " 'only jah love',\n", + " 'so i hafi give thanks and praise',\n", + " 'me and my baby',\n", + " 'riding thru constant spree',\n", + " 'all eyes on we',\n", + " 'and we not pop no style',\n", + " 'i said i said',\n", + " 'me and my baby',\n", + " 'riding thru constant spree',\n", + " 'all eyes on we',\n", + " 'and they not know a ting',\n", + " 'love is all we bring',\n", + " '忘れて black out',\n", + " 'black out',\n", + " 'black out',\n", + " 'black out',\n", + " 'black out',\n", + " '夢つかみたきゃ',\n", + " '攻める時は now',\n", + " 'ヤツの game リセットして',\n", + " 'black out',\n", + " 'トロけるほど hot',\n", + " 'な body 照らして',\n", + " 'つまらないこと',\n", + " '忘れて black out (yeah, uh)',\n", + " 'i see ladies, lazers, bottles with chasers',\n", + " 'and i see ladies, lazers, lots of bottles with chasers',\n", + " 'yes, they call me visionair',\n", + " '先々が見える',\n", + " 'i can take you anywhere',\n", + " '未来教えてあげる',\n", + " 'あなたにもあげたい チェルシー',\n", + " 'take a shot',\n", + " 'あともう一つグイッと行けば',\n", + " '仲良くなれる',\n", + " 'だから why? why?',\n", + " 'なんて聞かず',\n", + " 'ワイワイしてようぜ',\n", + " 'bye-bye なんて言わず',\n", + " '倍々に楽しむ方法',\n", + " 'let me tell you how do it',\n", + " 'つま先から頭のてっぺんまで',\n", + " 'dipped in 新品 fashion',\n", + " 'ギラギラ ambush',\n", + " '片手に cash',\n", + " 'もう片方には magnum',\n", + " '今日の mission 今日のこと',\n", + " '忘れて black out',\n", + " '時計仕掛けのハートの',\n", + " 'タイムリミットが',\n", + " '迫って来たから',\n", + " 'black out',\n", + " 'ハデにしたいなら',\n", + " '後戻りはなし',\n", + " '未来までのカウントダウン to',\n", + " 'black out',\n", + " 'i prefer that you would just call me weezy - eastside gangsta’',\n", + " 'and i be runnin’ this shit like a flanker',\n", + " 'black card banker',\n", + " 'hanker in the back pocket',\n", + " 'and i wear them skinny jeans so you see my fat wallet',\n", + " 'that’s right i’m a big shot',\n", + " 'call me little cannonball',\n", + " 'mister gets up in your girl’s mouth like some anbesol',\n", + " 'hip-hop president',\n", + " 'ain’t my girl eloquent?',\n", + " \"don't she got more junk in her trunk than a elephant?\",\n", + " 'i-i-i’m an animal',\n", + " 'watch me i examine you',\n", + " 'and my chucks are old, but i swear that my flannel new',\n", + " 'man, i get money manual',\n", + " 'then i just man you',\n", + " 'bitch, i’m gone like my lam’ roof',\n", + " '(young money)',\n", + " '夢つかみたきゃ',\n", + " '攻める時は now',\n", + " 'ヤツの game リセットして',\n", + " 'black out',\n", + " 'トロけるほど hot',\n", + " 'な body 照らして',\n", + " 'つまらないこと',\n", + " '忘れて black out',\n", + " '3, 2, 1, 逃げないで',\n", + " 'wait and see',\n", + " '明日を変えたいなら',\n", + " '全て black out',\n", + " '3, 2, 1, その気になれば',\n", + " 'you can wipe the city out so fast just like a',\n", + " 'black out',\n", + " 'black out',\n", + " '時計仕掛けのハートの',\n", + " 'タイムリミットが',\n", + " '迫って来たから',\n", + " 'black out',\n", + " 'ハデにしたいなら',\n", + " '後戻りはなし',\n", + " '未来までのカウントダウン to',\n", + " 'black out',\n", + " 'nana-nana-nana-nana black out',\n", + " 'nana-nana-nana-nana black out',\n", + " 'nana-nana-nana-nana black out',\n", + " 'nana-nana-nana-nana black out',\n", + " '(black out)',\n", + " 'black out',\n", + " '(orko eloheim)',\n", + " 'when the satellites move around the earth like the death star',\n", + " \"the planet's spinning faster, now you're feeling the free fall\",\n", + " 'ancient future primitive, vocabulary unlimited',\n", + " \"we fall through time and space, be at one with the bass, y'all\",\n", + " 'when the satellites move around the earth like the death star',\n", + " \"the planet's spinning faster, now you're feeling the free fall\",\n", + " 'ancient future primitive, vocabulary unlimited',\n", + " \"we fall through time and space, now you're feeling the bass, y'all\",\n", + " '(kaigen)',\n", + " '進化の蜃気楼を目指し、科学の砂漠から打ちあげられた希望が/',\n", + " '巡り巡って不時着した先は、人が欲に征服された惑星だった/',\n", + " '首輪を付けたホモサピエンスの手前味噌を立ち入り禁止の/',\n", + " '領域で極度に熟成させ、更なる人知が開けても/',\n", + " '内なる陣地を閉ざしていれば未来は未開/',\n", + " '少々面倒ではありますが心を通わせる術は事足りているのに/',\n", + " 'その勤めを怠り、性懲りもなくお決まりの稚拙な捌け口/',\n", + " 'から感情を排泄する愚かな傾向に加え、年々複雑に/',\n", + " '枝分かれしていく背景 植え込みに立てる大義名分の捏造はお茶の子さい/',\n", + " 'さい しかしエゴという根っこは古今東西ご健在 競い合い/',\n", + " 'が本能であろうとなかろうと、煩悩のペースに釣られて走ればいずれ/',\n", + " '共倒れ。 紛れ込んだ子猿に自らの乳を分け与える/',\n", + " '母犬のように軋轢や国益に拘束されぬ無償/',\n", + " 'の愛情が、滞納中の宇宙船地球号の入場料/',\n", + " '何世紀経とうが、暴力の応酬の踏襲は依然有史以前と同じ/',\n", + " '顔や名前を変えても戦争はしぶとい醜い伝統行事/',\n", + " 'aiming for the mirage of evolution, hope launched from the desert of science',\n", + " 'went round and round and crash landed on a planet where people were occupied by greed',\n", + " 'even if human knowledge is further expanded',\n", + " 'through, taking a chained homo sapience brain and',\n", + " 'age it to an extreme in a territory off limits',\n", + " 'if the internal encampment is closed the future remains primitive',\n", + " 'although troublesome to a degree, we possess the tools to communicate minds',\n", + " 'but we neglect our job and in spite of repeated failures return to cheap outlets',\n", + " 'to excrete emotions through foolish tendencies',\n", + " 'in addition, year after year the background increases',\n", + " 'complexity through branching',\n", + " 'fabrication of good reason in the shrubbery is a piece of cake',\n", + " 'however the root known as ego is in good health in all ages and countries',\n", + " 'no matter if competition is our instinct or not, running at the rate of the bait of worldly desire will lead us to cutting each other’s throat',\n", + " 'unconditional love, unbound by national interest and friction',\n", + " 'like a mother sharing breast milk to a lost enemy’s child',\n", + " 'is the overdue entrance fee to starship earth',\n", + " 'centuries have passed but the continuous exchange of violence is the same as that of the prehistoric days',\n", + " 'no matter how they change the name and face, war is an ugly unyielding traditional event',\n", + " '(orko eloheim)',\n", + " '(orko eloheim)',\n", + " 'when the satellites move around the earth like the death star',\n", + " \"the planet's spinning faster, now you're feeling the free fall\",\n", + " 'ancient future primitive, vocabulary unlimited',\n", + " \"we fall through time and space, be at one with the bass, y'all\",\n", + " '(kaigen)',\n", + " '何世紀経とうが、暴力の応酬の踏襲は依然有史以前と同じ/',\n", + " '顔や名前を変えても戦争はしぶとい醜い伝統行事/',\n", + " 'centuries have passed but the continuous exchange of violence is the same as that of the prehistoric days',\n", + " 'no matter how they change the name and face, war is an ugly unyielding traditional event']},\n", + " 'rock': {'meta': {'train_data': ['oh, baby, so young cd スタイル (yeah, yeah, yeah)',\n", + " 'ウォークマン片手にhead phone スタイル (yeah, yeah, yeah)',\n", + " 'wow, black, r&b キラリ スマイル (yeah, yeah, yeah)',\n", + " 'ただ そういうアナタの理解しだい (yeah, yeah, yeah)',\n", + " \"ooh, let's format 飽和状態\",\n", + " \"dead zone, let's go! 息がつけない\",\n", + " 'アウ! アウ! アウ! アウ!',\n", + " 'アウ! アウ! アウ! アウ!',\n", + " 'tokyo cityにdcスタイル (yeah, yeah, yeah)',\n", + " 'あー tokyoは二人を抱いてるスタイル (yeah, yeah, yeah)',\n", + " 'ooh-ビタミンb.d.やけにスパイス (yeah, yeah, yeah)',\n", + " 'ただそういうアナタのミライ不在 (yeah, yeah, yeah)',\n", + " \"ooh, let's format! なんかlo-fi!\",\n", + " \"red zone, let's go! 針はふれない\",\n", + " 'アウ! アウ! アウ! アウ!',\n", + " 'アウ! アウ! アウ! アウ!',\n", + " 'for young electric pop',\n", + " 'for young electric pop',\n", + " 'for young electric pop',\n", + " \"let's format! 飽和状態\",\n", + " \"let's forget! なんかlo-fi\",\n", + " 'cool, cool, cool! 息がつけない',\n", + " 'アウ! アウ! アウ! アウ!',\n", + " 'アウ! アウ! アウ! アウ!',\n", + " 'アウ',\n", + " 'for young electric pop',\n", + " 'for young electric pop',\n", + " 'for young electric pop',\n", + " 'for young electric pop',\n", + " 'for young electric pop',\n", + " 'for young electric pop',\n", + " 'for young electric pop',\n", + " 'for young electric pop',\n", + " 'for young electric pop (アウ! アウ!)',\n", + " 'for young electric pop (アウ!)',\n", + " 'for young electric pop',\n", + " 'for young electric pop',\n", + " 'red green white green red red white',\n", + " 'red green white green red red white',\n", + " 'red green white green red red white',\n", + " 'red green white green red red white',\n", + " '今夜はこれが三原色 世界にあふれる holy christmas time',\n", + " 'red green white green red red white',\n", + " 'red red white green green white red',\n", + " 'white white red green blue red white',\n", + " 'red red pink pink white green white',\n", + " 'ひとりでゴロゴロいいんじゃない',\n", + " 'ふたりでうとうとアリじゃない?',\n", + " '恋人 友達 ファミリーに',\n", + " '今年いちばんのありがとう',\n", + " '今夜はこれが三原色 世界にあふれる holy christmas time',\n", + " '老いも若きも最大級 世界は丸ごと holy christmas time',\n", + " '今夜をつつむ三原色 世界にあふれる holy christmas time',\n", + " 'あなたに愛を 私に愛を 少しの愛を しみ込む愛を',\n", + " '丸い世界を いばれる世界を love love love',\n", + " 'かなしいことも たのしいことも この夜だけは 忘れらんないよ',\n", + " 'どんな時代も これしかないよ love love love love',\n", + " 'red green white green red red white',\n", + " 'red green white green red red white',\n", + " 'red green white green red red white',\n", + " 'red green white green red red white',\n", + " 'red green white green red red white',\n", + " 'red green white green red red white',\n", + " \"i don't know why\",\n", + " \"i don't know reason to fight\",\n", + " \"it's just for joy\",\n", + " \"i don't know why\",\n", + " \"i don't know reason to die\",\n", + " \"it's just for show\",\n", + " '想像していたような everything is imitation',\n", + " 'die inside, おどけて笑う',\n", + " \"they don't know what you want\",\n", + " 'the sacrifice is never knowing',\n", + " 'dawn dawn',\n", + " 'what should i do?',\n", + " 'ding‐dong',\n", + " 'i hear sound of the bell',\n", + " 'abracadabra',\n", + " 'i said words',\n", + " '簡単に全部リセットできたら',\n", + " 'こうやって泣いちゃいないよ',\n", + " 'give me',\n", + " 'and i know',\n", + " 'give me',\n", + " 'and you know',\n", + " '理想とか期待では',\n", + " '明日は変わらない',\n", + " 'give me',\n", + " 'and i know',\n", + " 'give me',\n", + " 'and you know',\n", + " '少しでも描いたら',\n", + " 'その希望を',\n", + " '離さないで',\n", + " 'ほら',\n", + " \"i don't know why\",\n", + " \"i don't know reason to try\",\n", + " \"it's just for fame\",\n", + " \"i don't know why\",\n", + " \"i don't know reason to hide\",\n", + " \"it's just for fun\",\n", + " 'give me',\n", + " 'and i know',\n", + " 'give me',\n", + " 'and you know',\n", + " '理想とか期待では',\n", + " '明日は変わらない',\n", + " 'give me',\n", + " 'and i know',\n", + " 'give me',\n", + " 'and you know',\n", + " '痛いくらい悩んでも',\n", + " '離さないで',\n", + " 'いつだって考えて',\n", + " '足を止めてさまよった',\n", + " '曖昧なこの心情は息を止めた',\n", + " 'give me',\n", + " 'and i know',\n", + " 'give me',\n", + " 'and you know',\n", + " '理想とか期待では',\n", + " '明日は変わらない',\n", + " 'give me',\n", + " 'and i know',\n", + " 'give me',\n", + " 'and you know',\n", + " '“居たい”願いを繋いだら',\n", + " 'その希望を',\n", + " '離さないで',\n", + " '景色よ色褪せてゆけ',\n", + " 'カラカラにのどは渇いて',\n", + " '運び込む恋人達は僕だけの物だよ',\n", + " 'foreverキスをすれば甘くgood taste',\n", + " '服を脱がし今確かめよう',\n", + " 'パパやママには内緒だよ',\n", + " 'いずれ分る時が来るから',\n", + " 'i feel so good inside',\n", + " 'i feel so good inside',\n", + " 'tonight songs sing a song',\n", + " 'dissonance boogie',\n", + " 'tonight songs sing a song',\n", + " 'dissonance boogieめくるめく溺愛の歌は',\n", + " '不協和音のブギーであなたにもあげたい',\n", + " '欲望が殺意へと変われば',\n", + " 'i feel so good inside',\n", + " 'i feel so good inside',\n", + " 'tonight songs sing a song dissonance boogie',\n", + " 'tonight songs sing a song dissonance boogie',\n", + " 'tonight songs sing a song dissonance boogie',\n", + " 'tonight songs sing a song [dissonance boogie]',\n", + " '夜よこの破廉恥な想像を綺麗に包んでよ',\n", + " \"criminal dreaming, you're chelsea girl\",\n", + " '甘く鋭利な瞬間[しゅんかん]',\n", + " '小生意気な君の目にも',\n", + " \"criminal dreaming, you're chelsea girl\",\n", + " 'ah… uh… ah…',\n", + " '深く 濁った 底辺を蠢き',\n", + " '認められない羽を生やした俺は「素敵かい?」',\n", + " '「無様」な振る舞いがお似合いだろ?それでい',\n", + " \"俺は生きる腐ったvery fuck'in doubter!\",\n", + " 'natural born trash human',\n", + " 'natural born worthless fellow',\n", + " 'natural born rebel spirit',\n", + " 'it is good as orange rotted',\n", + " '手を伸ばし 届く筈もない壁を睨む',\n", + " 'do you see this muzzle that aims at your head now?',\n", + " 'now by this hand in a free cockroach some time',\n", + " 'do you see this muzzle that aims at your head now?',\n", + " 'i am seen. in the future when you fall on ground...',\n", + " '手を伸ばせば 届くと信じていたい',\n", + " 'natural born trash human',\n", + " 'natural born worthless fellow',\n", + " 'natural born rebel spirit',\n", + " 'it is good as orange rotted!',\n", + " 'don’t you give me your love and passion?',\n", + " '(believe in love, even though',\n", + " 'there are borders and disturbance and more',\n", + " 'i’m the only one who loves you',\n", + " 'because i’m crazy about you)',\n", + " 'let’s ride to hell, 追従してgo',\n", + " '一緒なら寧ろ死にたいじゃない',\n", + " 'beyond the line 果てなんかない',\n", + " 'i swear, i’m gonna be so fxxking grateful',\n", + " 'blessing word 貴方は至高',\n", + " '命令に your highness 忠実にfollow',\n", + " 'you give orders 渡しはしない',\n", + " '何より尊い存在(もの)よ',\n", + " 'you don’t know why my love is crying',\n", + " '凝着したい 過剰なくらい',\n", + " '永遠(とわ)になりたい don’t wanna cry',\n", + " '嫉妬妄想狂いそうよ',\n", + " 'don’t you give me your love and passion?',\n", + " '愛とは暴動衝動 let go',\n", + " '精神(こころ)以上に本能、心臓(ハート)まで more 要求したい',\n", + " 'i don’t want to live in a world without you',\n", + " '貴方以外のこの未来を kill it, kill it',\n", + " 'i would be happy to kill it for my love',\n", + " 'go till the end 視線は lock',\n", + " '遮られずに遂げたい願い',\n", + " 'straight to you 純心は fly',\n", + " 'above the star and sun… so fxxking wonderful',\n", + " 'hey, get out 冗談じゃない',\n", + " '視界の dirty は排除してtrash',\n", + " 'kick them out 容赦など無い',\n", + " '誰より譲れぬ存在(もの)よ',\n", + " 'i’m in the dark, can’t see your eyes',\n", + " '暗い視えない 孤独は痛い',\n", + " '共に居たい no more. time!',\n", + " '窒息もう苦しいよ',\n", + " 'won’t you come and hold me tight',\n", + " '愛とは純情結晶 get all',\n", + " '想像以上の恩情、hard な応え要望してる',\n", + " 'i wanna make it with you, baby',\n", + " '貴方の愛を得られるなら risk it, risk it',\n", + " 'i’m gonna risk it all what’s for two of us',\n", + " '狂う愛憎模様 marble に溶解して',\n", + " '1(one) and all、融合 焦燥さえも',\n", + " '形状は悲壮 自由に細胞単位で',\n", + " 'you don’t know why my love is crying',\n", + " '凝着したい 過剰なくらい',\n", + " '永遠(とわ)になりたい don’t wanna cry',\n", + " '抱擁してよもっと',\n", + " 'don’t you give me your love and passion?',\n", + " '貴方の全て頂戴',\n", + " '理由なんて要らない 唯愛し愛されてたい',\n", + " 'i don’t want to live in a world without you',\n", + " '貴方以外何も要らない get it, get it',\n", + " 'i can’t resist it. get it for my love',\n", + " 'i’ll spend my life for loving you',\n", + " 'kill it, kill it',\n", + " '(i’m imaging now, if you’re mine',\n", + " 'it’s like a paradise and haven and more',\n", + " 'you’re the only man who i love',\n", + " 'in my life and destiny and all)',\n", + " 'don’t you give me your love and passion?',\n", + " 'i know the border. it should be wrecked, go',\n", + " 'are you fucking with me?',\n", + " 'bomb! bomb! bomb!',\n", + " 'bring it on!! bring it on!!',\n", + " \"why you trippin' boy, you ain’t shit\",\n", + " 'motherfucker!',\n", + " 'pop rock, rap sell out',\n", + " 'business talk shit. oh shit',\n", + " 'come on mother fucking japanese',\n", + " '脳天突き刺す覚醒 high zone',\n", + " '反乱分子 mad terrorist',\n", + " '「yellow monkey」「japanese culture」「propaganda」「rape」',\n", + " '自虐 nadir motherfucker',\n", + " 'you scum sucker',\n", + " 'loser負け犬の烙印',\n", + " '枷を解くドクドク脈打つ鼓動に問い掛ける',\n", + " '侵食された現状に順応(fuck)',\n", + " '虐げられた現状に順応(fuck)',\n", + " '踠き足掻く気高き遠吠え轟かす',\n", + " 'are you fuckin ready or guys?',\n", + " 'stand up!!',\n", + " 'take back control',\n", + " 'stand up!!',\n", + " 'take this shit by force',\n", + " 'stand up!!',\n", + " \"that's how i roll\",\n", + " 'stand up!!',\n", + " 'take this shit by force',\n", + " 'do-or-die!砕け散る一縷の望み',\n", + " '蛇の道這いずる弱きはfuckin die!!',\n", + " 'break it down!救いはない報いを受けろ',\n", + " 'motherfucker hustler 発火 die in a fire',\n", + " 'do-or-die!砕け散る一縷の望み',\n", + " '蛇の道這いずる弱きはfuckin die!!',\n", + " '「道無き未知の道 導き行き着く先',\n", + " 'カタチ無き 価値あるモノ求めて唄う」',\n", + " 'stand up!!',\n", + " 'take back control',\n", + " 'stand up!!',\n", + " 'take this shit by force',\n", + " 'stand up!!',\n", + " \"that's how i roll\",\n", + " 'stand up!!',\n", + " 'take this shit by force',\n", + " 'light the truth together',\n", + " 'find it out remember',\n", + " 'wow oh oh oh oh wow',\n", + " 'wow oh oh oh oh wow',\n", + " 'wow oh oh oh oh wow',\n", + " 'wow oh oh oh oh wow',\n", + " 'あの日 約束を信じて',\n", + " 'ずっと時を重ねて来た',\n", + " 'そう君だけの夢や希望',\n", + " '決して消させやしないため',\n", + " '誰かを救うその強さも',\n", + " '戸惑い嘆くその弱さも',\n", + " '今この時この場所が',\n", + " '明日を描く事信じて',\n", + " 'remember me',\n", + " 'whatever this result means',\n", + " 'remember me',\n", + " \"we're living in a split screen\",\n", + " 'remember me',\n", + " 'along again you will see, will see, will see, with me',\n", + " 'light the truth together',\n", + " '何かそう届きそうな気がした',\n", + " 'find it out remember',\n", + " 'こんな星の夜は きっと',\n", + " 'ランタンを灯し',\n", + " '暗闇に道標照らし出し',\n", + " 'find it out remember',\n", + " '夢抱き叫んでいた',\n", + " 'light the truth and shine your life',\n", + " 'wow oh oh oh oh wow',\n", + " 'wow oh oh oh oh wow',\n", + " 'wow oh oh oh oh wow',\n", + " 'wow oh oh oh oh wow',\n", + " '僕が生きる今日その意味を',\n", + " 'ただこの手で掴むまで',\n", + " 'ほんの僅かな後悔も',\n", + " '残さず歩き続けて行く',\n", + " '誰かの大切な笑顔が',\n", + " 'あるべき場所にあるために',\n", + " 'いろんな色や形 匂い',\n", + " '1つも 見落とさぬ様に',\n", + " 'remember me',\n", + " 'whatever this result means',\n", + " 'remember me',\n", + " \"we're living in a split screen\",\n", + " 'remember me',\n", + " 'along again you will see, will see, will see, with me',\n", + " 'find it our remember',\n", + " 'find it our remember',\n", + " 'light the truth together',\n", + " '何かそう届きそうな気がした',\n", + " 'find it out remember',\n", + " 'こんな星の夜は きっと',\n", + " 'ランタンを灯し',\n", + " '暗闇に道標照らし出し',\n", + " 'find it out remember',\n", + " '夢抱き叫んでいた',\n", + " 'light the truth and shine your life',\n", + " 'wow oh oh oh oh wow',\n", + " 'wow oh oh oh oh wow',\n", + " 'wow oh oh oh oh wow',\n", + " 'wow oh oh oh oh wow',\n", + " 'light the truth together ooh',\n", + " 'find it out remember',\n", + " 'light the truth together ooh',\n", + " 'find it out remember ooh',\n", + " \"sun will come out. i'm so happy now\",\n", + " 'because i have the treasure',\n", + " 'well, do you know what?',\n", + " \"no, it's not fortune and it's not the fame\",\n", + " 'when i fall down it picks me up',\n", + " 'yes! the thing is you!',\n", + " '答えはいつでも君の声にあった',\n", + " '転んでしまっても手を取り笑ってくれたね',\n", + " 'いつでも いつでも',\n", + " 'その声を聴かせてよ',\n", + " \"i won't like you and you won't like me\",\n", + " \"but you're the only one\",\n", + " 'i… i want in this world',\n", + " \"when you hear this. you'll know it's your song\",\n", + " 'i mean to say this “thanks to you',\n", + " \"won't let no one hurt you!\",\n", + " '答えはいつでも君の声にあった',\n", + " '僕の全部を僕より分かってくれたね',\n", + " 'いつでも いつでも',\n", + " 'その声を守るから',\n", + " 'when i close my eyes. i always float your face',\n", + " \"it's just another day. but i keep trying so hard\",\n", + " 'when i close my eyes. i always float your face',\n", + " \"i've never seen one like you\",\n", + " \"i'm so glad i met\",\n", + " '答えはいつでも君の声にあった',\n", + " '転んでしまっても手を取り笑ってくれたね',\n", + " 'いつでも いつでも',\n", + " 'その声を聴かせてよ',\n", + " 'その声を守るから',\n", + " 'その声を聴かせてよ',\n", + " 'その声を守るから',\n", + " 'play in the circle',\n", + " 'come pay for your filthiness',\n", + " 'the bloody scaffold and bitch',\n", + " 'please die… before i die',\n", + " '虚偽と嘯く目',\n", + " 'evil fame',\n", + " 'inside #2',\n", + " '完全に歪んだinsane',\n", + " 'death to traitors',\n", + " 'scaffold and bitch',\n", + " '憎悪鳴らせ 侵した数だけ',\n", + " 'death to traitors',\n", + " 'scaffold and bitch',\n", + " '忘却願うcrime',\n", + " 'この痛みは届かない',\n", + " '嘘と生きる君へ',\n", + " '眠れぬ俺の傍で',\n", + " 'are you still alive?',\n", + " 'play in the circle',\n", + " 'come pay for your filthiness',\n", + " 'the bloody scaffold and bitch',\n", + " 'please die…before i die',\n", + " '虚偽と嘯く目',\n", + " 'evil fame',\n", + " 'inside #2',\n", + " '完全に歪んだinsane',\n", + " 'fxxk',\n", + " 'traitors',\n", + " 'scaffold and bitch',\n", + " '憎悪鳴らせ 侵した数だけ',\n", + " 'death to traitors',\n", + " 'scaffold and bitch',\n", + " '忘却願うcrime',\n", + " '罪と転がり変われない',\n", + " '醜さと散る君は',\n", + " '今でも死の淵に立つ',\n", + " 'are you still alive?',\n", + " 'death to traitors',\n", + " 'scaffold and bitch',\n", + " '憎悪鳴らせ 侵した数だけ',\n", + " 'death to traitors',\n", + " 'scaffold and bitch',\n", + " '忘却願うcrime',\n", + " 'アイドンビリーブマイ母性',\n", + " '他人事じゃないよ児童虐待',\n", + " 'アイドンビリーブマイ母性',\n", + " '他人事じゃないよ児童虐待',\n", + " 'アイドンビリーブマイ母性',\n", + " '他人事じゃないよ児童虐待',\n", + " 'アイドンビリーブマイ母性',\n", + " '他人事じゃないよ児童虐待',\n", + " 'カームダウンマイ情緒',\n", + " 'カームダウンマイ情緒',\n", + " 'カームダウンマイ情緒',\n", + " 'ホルモンバランスに深く敬礼',\n", + " '犬がすきわたし犬がすきわたし犬がすき',\n", + " 'わたし産むとしたら犬',\n", + " '犬がすきわたし犬がすきわたし犬がすき',\n", + " 'わたし産むとしたら犬',\n", + " 'アイドンビリーブマイ母性',\n", + " '他人事じゃないよ児童虐待',\n", + " 'アイドンビリーブマイ母性',\n", + " '他人事じゃないよ児童虐待',\n", + " 'アイドンビリーブマイ母性',\n", + " '他人事じゃないよ児童虐待',\n", + " 'アイドンビリーブマイ母性',\n", + " '他人事じゃないよ児童虐待',\n", + " 'カームダウンマイ情緒',\n", + " 'カームダウンマイ情緒',\n", + " 'カームダウンマイ情緒',\n", + " 'カームダウンマイ情緒',\n", + " 'カームダウンマイ情緒',\n", + " 'カームダウンマイ情緒',\n", + " 'カームダウンマイ情緒',\n", + " 'ホルモンバランスに深く敬礼',\n", + " '孫の顔見せて孫の顔見せて孫の顔見せて',\n", + " '見せてから戻す',\n", + " '孫の顔見せて孫の顔見せて孫の顔見せて',\n", + " '見せてから戻す',\n", + " '先祖代々 至極自己実現',\n", + " '先祖代々 至極自己実現',\n", + " '先祖代々 至極自己実現',\n", + " '先祖代々 地獄!自己実現',\n", + " 'i don’t believe in my maternal instinct',\n", + " \"it's not none of my business! child abuse!\",\n", + " 'i don’t believe in my maternal instinct',\n", + " \"it's not none of my business! child abuse!\",\n", + " 'i don’t believe in my maternal instinct',\n", + " \"it's not none of my business! child abuse!\",\n", + " 'i don’t believe in my maternal instinct',\n", + " \"it's not none of my business! child abuse!\",\n", + " 'please calm down my emotional instability',\n", + " 'please calm down my emotional instability',\n", + " 'please calm down my emotional instability',\n", + " 'take a deep bow to my hormone balance',\n", + " 'i love dogs, i love dogs, i love dogs',\n", + " 'i deliver a puppy, not a baby',\n", + " 'i love dogs, i love dogs, i love dogs',\n", + " 'i deliver a puppy, not a baby',\n", + " 'i don’t believe in my maternal instinct',\n", + " \"it's not none of my business! child abuse!\",\n", + " 'i don’t believe in my maternal instinct',\n", + " \"it's not none of my business! child abuse!\",\n", + " 'i don’t believe in my maternal instinct',\n", + " \"it's not none of my business! child abuse!\",\n", + " 'i don’t believe in my maternal instinct',\n", + " \"it's not none of my business! child abuse!\",\n", + " 'please calm down my emotional instability',\n", + " 'please calm down my emotional instability',\n", + " 'please calm down my emotional instability',\n", + " 'please calm down my emotional instability',\n", + " 'please calm down my emotional instability',\n", + " 'please calm down my emotional instability',\n", + " 'please calm down my emotional instability',\n", + " 'take a deep bow to my hormone balance',\n", + " 'having let my parents meet their grandkid',\n", + " 'their grandkid, their grandkid',\n", + " 'i immediately put it back in my belly',\n", + " 'through generations sheer pleasures! self-realization',\n", + " 'through generations sheer pleasures! self-realization',\n", + " 'through generations sheer pleasures! self-realization',\n", + " 'through generations sheer agony! self-realization',\n", + " 'tears filled on the sky',\n", + " 'it is ready to cry',\n", + " 'their spirits to fly',\n", + " 'it will spill from sky rim',\n", + " 'my eyes could see crack on sky',\n", + " 'heavy weather will come to near',\n", + " 'under the sky that seems to come fall any moment',\n", + " \"you're very kind\",\n", + " 'you have good mind',\n", + " \"i don't find any correct\",\n", + " 'was not pleased with that one',\n", + " 'my eyes could see crack on sky',\n", + " 'heavy weather will come to near',\n", + " 'under the sky that seems to come fall any moment',\n", + " 'tears filled on the sky',\n", + " 'it is ready to cry',\n", + " 'their spirits to fly',\n", + " 'it will spill from sky rim',\n", + " 'my eyes could see crack on sky',\n", + " 'heavy weather will come to near',\n", + " 'under the sky that seems to come fall any moment',\n", + " '涙が空を埋め尽くし 泣き出す寸前だ',\n", + " '彼らの魂が飛び交い 空の淵からこぼれる',\n", + " '私の目に空の亀裂が映る',\n", + " '暗雲が立ち込める',\n", + " '今にも落ちてきそうだ',\n", + " '君はやさしい \"よき心\"を携えている',\n", + " '私は\"正解\"を見つけられない それに満足できない',\n", + " '私の目に空の亀裂が映る',\n", + " '暗雲が立ち込める',\n", + " '今にも落ちてきそうだ',\n", + " '涙が空を埋め尽くし 泣き出す寸前だ',\n", + " '彼らの魂が飛び交い 空の淵からこぼれる',\n", + " '私の目に空の亀裂が映る',\n", + " '暗雲が立ち込める',\n", + " '今にも落ちてきそうだ',\n", + " 'check check check target, how many?',\n", + " 'hey hey! ダダダダダディガディディディラッタッタッタタラー',\n", + " \"ready to go, let's run away 1-2-3 yeah! yeah!\",\n", + " 'there to go, fire bison 全てを突き飛ばしburst!',\n", + " 'rush! fire bison',\n", + " 'rush! fire bison',\n", + " 'rush! fire bison',\n", + " 'rush! fire bison',\n", + " 'check check check microphone, how is it?',\n", + " 'hey hey! ドゥダドゥダドゥヤイヤイヤイヤイルットゥトゥトゥル',\n", + " 'ok go, are you tired already? yeah! yeah!',\n", + " 'boo boo boo rolling bison 全てをなぎ倒しblast!',\n", + " 'rush! rolling bison',\n", + " 'rush! rolling bison',\n", + " 'rush! rolling bison',\n", + " 'rush! rolling bison',\n", + " '逆に恐くて叫べないよ',\n", + " '思い切り蹴っ飛ばす蹴っ飛ばす',\n", + " '止まるな助かるまで',\n", + " '周りはジャマするな自分次第で',\n", + " 'check check check target, how many?',\n", + " 'hey hey! ダダダダダディガディディディラッタッタッタタッター',\n", + " \"ready to go, let's run away 1-2-3 yeah! yeah!\",\n", + " '大爆破 fire bison それではさようなら bye!',\n", + " 'rush! fire bison',\n", + " 'rush! fire bison',\n", + " 'rush! fire bison',\n", + " 'rush! fire bison',\n", + " 'fire bison',\n", + " 'fire bison',\n", + " 'fire bison',\n", + " 'fire bison',\n", + " '木漏れ日に手を翳して',\n", + " 'with my headphone 歩き出した',\n", + " 'will you talk to me',\n", + " 'in front of the garden gate',\n", + " 'lately, are you feeling unhappy again',\n", + " \"cold winter's day, and she cried again\",\n", + " 'walking and thinking about',\n", + " \"what's inside your head\",\n", + " 'with my shoes on',\n", + " '軽快なステップ刻んで',\n", + " '始まりは 終わりだって',\n", + " '雨上がって 気付いたんだ',\n", + " 'wake me up',\n", + " 'when you feel like talking',\n", + " 'when you feel like walking',\n", + " '始まりを 怖れたのは',\n", + " '幼かっただけじゃない',\n", + " 'broken in million',\n", + " 'when you feel like singing',\n", + " 'can you feel me right now',\n", + " 'let me know',\n", + " '人は何か手に入れた時',\n", + " '同時に何失うのかな?',\n", + " '空想で積み上げたストーリー',\n", + " '目の前に広がった庭で',\n", + " '今まで選んだこの道も',\n", + " 'people usually do not find something',\n", + " \"until it's gone\",\n", + " 'i know where you come from',\n", + " '始まりは 終わりだって',\n", + " '雨上がって 気付いたんだ',\n", + " 'wake me up',\n", + " 'when you feel like talking',\n", + " 'when you feel like walking',\n", + " '冬の空に 思い馳せて',\n", + " '歌い出して 探してるのさ',\n", + " 'where are you now',\n", + " 'when you feel like singing',\n", + " 'can you feel me right now',\n", + " 'let me know',\n", + " 'handed something',\n", + " 'loosing something again',\n", + " 'wonder if everyone is living like this?',\n", + " 'tell me why',\n", + " 'drop in from time to time',\n", + " 'can you hear my story',\n", + " '冬の空に 思い馳せて',\n", + " '歌い出して 探してるのさ',\n", + " 'where are you now',\n", + " 'when you feel like smiling',\n", + " 'can you feel me right now',\n", + " '始まりは 終わりだって',\n", + " '雨上がって 気付いたんだ',\n", + " 'wake me up',\n", + " 'when you feel like talking',\n", + " 'can you feel me right now',\n", + " 'let me know',\n", + " 'where are we now?',\n", + " \"it's never too late\",\n", + " 'coming in',\n", + " 'coming out',\n", + " '周り 見てみな',\n", + " 'ノイズ まみれで',\n", + " 'you can’t see me but you hear me loud',\n", + " 'don’t that make you crazy now',\n", + " 'don’t that make you crazy now',\n", + " '目を凝らせ この世界は',\n", + " 'it’s all upside down',\n", + " 'coming in',\n", + " 'coming out',\n", + " '周り 見てみな',\n", + " 'ノイズ まみれで',\n", + " 'you can’t see me but you hear me loud',\n", + " 'don’t that make you crazy now',\n", + " 'don’t that make you crazy now',\n", + " '目を凝らせ この世界は',\n", + " 'it’s all upside down',\n", + " 'don’t stop 戻れない flashback',\n", + " 'look up 気づけば it’s all past',\n", + " 'too fast 引き裂かれそうさ sa',\n", + " 'don’t stop 戻れない flashback',\n", + " 'look up 気づけば it’s all past',\n", + " 'too fast 引き裂かれそうさ sa',\n", + " 'don’t stop 戻れない flashback',\n", + " 'look up 気づけば it’s all past',\n", + " 'too fast 引き裂かれそうさ sa',\n", + " 'don’t stop 戻れない flashback',\n", + " 'look up 気づけば it’s all past',\n", + " 'too fast 引き裂かれそうさ sa',\n", + " 'don’t stop 戻れない flashback',\n", + " 'look up 気づけば it’s all past',\n", + " 'too fast 引き裂かれそうさ sa',\n", + " 'don’t stop 戻れない flashback',\n", + " 'look up 気づけば it’s all past',\n", + " 'too fast 引き裂かれそうさ sa',\n", + " 'don’t stop 戻れない flashback',\n", + " 'look up 気づけば it’s all past',\n", + " 'too fast 引き裂かれそうさ sa',\n", + " 'don’t stop 戻れない flashback',\n", + " 'look up 気づけば it’s all past',\n", + " 'too fast 引き裂かれそうさ sa',\n", + " 'don’t stop 戻れない flashback',\n", + " 'look up 気づけば it’s all past',\n", + " 'too fast 引き裂かれそうさ sa',\n", + " 'here with you now i am good, still miss you',\n", + " \"i don't know what i can do, we can't be true\",\n", + " '満たされる事なく二人の距離',\n", + " '縮まっていく度切ない',\n", + " '溢れ出した想いつのるだけで',\n", + " \"uh it's hard for me to say\",\n", + " \"'cause we, we can see how it's gonna end\",\n", + " 'but i got my love for you',\n", + " 'もしもこのまま君を忘れる事ができたら',\n", + " 'なんて思えば思うほどに',\n", + " '君を忘れることなんて僕にはできるはずもなくて',\n", + " 'we always wish tonight could last forever',\n", + " 'i can be your side',\n", + " \"i shouldn't be in your heart\",\n", + " 'either the time we have spent',\n", + " 'and i want you to know what the truth is',\n", + " 'but sometimes it makes me feel so sick, oh no',\n", + " \"i just can't say to you, no i won't\",\n", + " \"'cause we, we can see how it's gonna end\",\n", + " 'but i got my love for you',\n", + " 'もしもこのまま君を忘れてしまったら',\n", + " '二度と愛する事もないかな?',\n", + " '僕は本当にそれで心から幸せと言えるかな?',\n", + " 'yes, we always wish tonight could last forever',\n", + " 'i can be your side',\n", + " '空を見つめては (staring at an empty sky)',\n", + " 'そっとうずくまる (crouch down gently)',\n", + " '空をうずめてく (buried in an empty sky)',\n", + " '石を積む右手 (right hand gains a jewel)',\n", + " '空をうずめてく (buried in an empty sky)',\n", + " 'きっと雨が濡らす (surely the rain will dampen)',\n", + " 'この土砂降りのハレルヤ (hallelujah for this downpour)',\n", + " '積まれた嘘流して (piled lies wash away)',\n", + " '彼に唱えた 風 (distant cries wind)',\n", + " '髪の隙間をぬけた (passes through hair)',\n", + " 'その滴りを (those drops)',\n", + " '奪って (steal away steal away)',\n", + " '空を見つめて (staring at the sky)',\n", + " '知ったふりをする (pretend to have known)',\n", + " '空を見つめて (staring at the sky)',\n", + " 'ずっと意味は濡れる (the meaning of the wetness all along)',\n", + " 'いくつものずるさを (so many dishonest things)',\n", + " '積もうとして (become the burden)',\n", + " 'いつ終えると知れず (when will it finish and be known)',\n", + " '幾重にもずらす (over and over pushed away)',\n", + " '雨は止むの? (a break in the rain?)',\n", + " 'アナタを道連れに (you unwilling fellow traveler)',\n", + " 'あの空にいた (in the distant sky)',\n", + " '雨音 (the sound of rain)',\n", + " 'バンドメイド 「alive-or-dead」 歌詞',\n", + " 'why?',\n", + " '姿眩ませて why?',\n", + " '膨らむ代償 why?',\n", + " 'who said? you said?',\n", + " \"i don't know that\",\n", + " 'lie? 見定め確証',\n", + " 'lie? 刻むブロック the truth',\n", + " 'getting growing',\n", + " 'a chain reaction',\n", + " 'i feel it coming, i feel it coming',\n", + " '迷路みたいな 意図をほどいて',\n", + " 'i feel it coming',\n", + " 'caught in the undertow',\n", + " 'believe in fate',\n", + " 'please 罫線を超えて昇ってく もっと',\n", + " '動く変化に予測不能 future',\n", + " '保証の有無など 気にしてちゃ',\n", + " \"you don't get it 奇跡はない\",\n", + " '呪文の様に 羅列するborder',\n", + " '溶けない様に 繰り返し to pile up',\n", + " \"i'll take you with me to the other side\",\n", + " \"i'll take you with me to the other side\",\n", + " '蠢く欲望',\n", + " '灯すよ blackに',\n", + " '一息で 吹き消す炎に oh, oh',\n", + " \"'cause now we are\",\n", + " 'partners in crime',\n", + " 'check',\n", + " '与える影響 check',\n", + " '焦げ付く心理に face',\n", + " 'to live or to die, a choice you make',\n", + " 'i feel it coming, i feel it coming',\n", + " '転がすように 未来紡いで',\n", + " 'i feel it coming',\n", + " 'caught in the undertow',\n", + " 'believe in fate',\n", + " 'please ピリオド壊して創っていく 今日を',\n", + " \"遮られても 切り開け make one's way\",\n", + " '見えないリスクを 閉じ込めて',\n", + " 'watch your step 踏み外すな',\n", + " '奇術の様に 泡になるnose dive',\n", + " 'もがいてもがいて 掴み取る foggy night',\n", + " \"i'll take you with me to the other side\",\n", + " \"i'll take you with me to the other side\",\n", + " 'i feel it coming, i feel it coming',\n", + " '迷路みたいな 意図をほどいて',\n", + " 'i feel it coming',\n", + " 'caught in the undertow',\n", + " 'believe in fate',\n", + " 'virtual reality space',\n", + " 'please 罫線を超えて昇ってく もっと',\n", + " '動く変化に予測不能 future',\n", + " '保証の有無など 気にしてちゃ',\n", + " \"you don't get it 奇跡はない\",\n", + " '呪文の様に 羅列するborder',\n", + " '溶けない様に 繰り返し to pile up',\n", + " \"i'll take you with me to the other side\",\n", + " \"i'll take you with me to the other side\",\n", + " 'japanese:',\n", + " 'うちひしがれてるとき お前は来た',\n", + " 'うちのめされてるとき お前は来た',\n", + " 'やさしく寄りそうように 笑いかける',\n", + " '妙なもの売るために お前は来た',\n", + " 'みんな待ちこがれている 救いの手を',\n", + " 'みんな待ちつづけている 救いの手を',\n", + " 'みんな待ちつかれたとき 誘ってくる',\n", + " '妙に耳障りよく 甘い溶けそうな言葉で',\n", + " '(めちゃくちゃ悪い男) 誘ってくる',\n", + " '(めちゃくちゃ悪い男) 誘ってくる',\n", + " '(めちゃくちゃ悪い男) 誘ってくる',\n", + " '妙なもの売るために お前は来た',\n", + " '(みんな待ちこがれている) 救いの手を',\n", + " '(みんな待ちつづけている) 救いの手を',\n", + " '(みんな待ちつかれたとき) 誘ってくる',\n", + " '妙に耳障りよく 甘い溶けそうな言葉で',\n", + " '(めちゃくちゃ悪い男) お前は来た',\n", + " '(めちゃくちゃ悪い男) お前は来た',\n", + " '(めちゃくちゃ悪い男) お前は来た',\n", + " '(めちゃくちゃ悪い男) お前は来た',\n", + " 'romaji:',\n", + " 'uchi hishigareteru toki omae wa kita',\n", + " 'uchinomesareteru toki omae wa kita',\n", + " 'yasashiku yori sōyō ni waraikakeru',\n", + " 'myōna mono uru tame ni omae wa kita',\n", + " 'minna machikogareteiru sukui no te o',\n", + " 'minna machitsuzuketeiru sukui no te o',\n", + " 'minnamachi tsukareta toki sasottekuru',\n", + " 'myō ni mimizawari yoku amai toke sōna kotoba de',\n", + " '( mechakucha warui otoko ) sasottekuru',\n", + " '( mechakucha warui otoko ) sasottekuru',\n", + " '( mechakucha warui otoko ) sasottekuru',\n", + " 'myōna mono uru tame ni omae wa kita',\n", + " '( minna machikogareteiru ) sukui no te o',\n", + " '( minna machitsuzuketeiru ) sukui no te o',\n", + " '( minnamachi tsukareta toki ) sasottekuru',\n", + " 'myō ni mimizawari yoku amai toke sōna kotoba de',\n", + " '( mechakucha warui otoko ) omae wa kita',\n", + " '( mechakucha warui otoko ) omae wa kita',\n", + " '( mechakucha warui otoko ) omae wa kita',\n", + " '( mechakucha warui otoko ) omae wa kita',\n", + " 'english:',\n", + " 'you are crazy when you are out',\n", + " 'you are caught when you are scolded me',\n", + " 'laughing so as to gently drift away',\n", + " 'you came to sell strange things',\n", + " 'everyone is waiting for the helping hand',\n", + " 'everyone waits for the helping hand',\n", + " 'everyone invites me when they are waiting',\n", + " 'strangely harsh and sweet with melting words',\n", + " '(insanely bad guy) invited',\n", + " '(insanely bad guy) invited',\n", + " '(insanely bad guy) invited',\n", + " 'you came to sell strange things',\n", + " '(everyone is longing for) a helping hand',\n", + " '(everyone is keeping on) a helping hand',\n", + " '(when everyone waits) i invite you',\n", + " 'strangely harsh and sweet with melting words',\n", + " '(insanely bad guy) you came',\n", + " '(insanely bad guy) you came',\n", + " '(insanely bad guy) you came',\n", + " '(insanely bad guy) you came',\n", + " '日本語 / japanese',\n", + " '世界の誰よりも輝ける',\n", + " 'そう信じて生きてきたのは確かなんだ',\n", + " 'でも世界の誰もがそう輝ける',\n", + " 'そう信じてこれから生きていけたらどれだけ',\n", + " '素敵なんだろう?',\n", + " '僕らの住む世界は',\n", + " 'きっときっと素敵なハズ',\n", + " 'でもなんで今日も僕らはみな自分が',\n", + " '一番可愛いんだろ?',\n", + " 'say my name',\n", + " \"i've got to take my chance to change your heart\",\n", + " 'everything will be alright tonight',\n", + " 'yes i am',\n", + " 'so keep on walking, go out through the door',\n", + " '後ろ振り向かずに行こう',\n", + " '何のために産声をあげる?',\n", + " 'この世界にきっと何かを訴えるためで',\n", + " '僕らのこの両手がもっともっと救いの手に',\n", + " '変わっていって願ってみて 明日の景色が動いていく',\n", + " 'say my name',\n", + " \"i've got to take my chance to change your heart\",\n", + " 'everything will be alright tonight',\n", + " 'yes i am',\n", + " 'so keep on walking, go out through the door',\n", + " '後ろ振り向かずに行こう',\n", + " 'you say my name',\n", + " 'you take my hand',\n", + " \"let's start it now\",\n", + " \"it's not too late\",\n", + " 'you say my name',\n", + " 'you take my hand',\n", + " \"let's start it now it's not too late\",\n", + " 'say my name',\n", + " \"i've got to take my chance to change your heart\",\n", + " 'everything will be alright tonight',\n", + " 'yes i am',\n", + " 'so keep on walking, go out through the door',\n", + " '前だけを見続けよう',\n", + " 'say my name',\n", + " \"let's start it now\",\n", + " \"it's not too late\",\n", + " 'yes i am',\n", + " '(hey lady, are you going up or do-do-do-do-do-down?)',\n", + " 'hey lady, are you going up or do-do-do-do-do-down?',\n", + " 'no matter what you say or what you do',\n", + " \"you're going do-do-do-do-do-down\",\n", + " 'are you going up or going down?',\n", + " 'hey lady, are you going up or do-do-do-do-do-down?',\n", + " '上へ参ります',\n", + " '下へ参ります',\n", + " '閉まるドアにお気をつけください',\n", + " '次は地獄に止まります',\n", + " 'going up, going down',\n", + " 'going up, going down',\n", + " 'hell yeah!',\n", + " '地下2000階',\n", + " '真っ逆さま',\n", + " '火あぶり針地獄のフロアです',\n", + " 'だからいつも命がけ',\n", + " 'going up, going down',\n", + " 'going up, going down',\n", + " 'hell yeah!',\n", + " 'hey lady, are you going up or do-do-do-do-do-down?',\n", + " 'no matter what you say or what you do',\n", + " 'you’re going do-do-do-do-do-down',\n", + " '上へ参ります',\n", + " '下へ参ります',\n", + " '閉まるドアにお気をつけください',\n", + " '次は地獄に止まります',\n", + " 'going up, going down',\n", + " 'going up, going down',\n", + " 'hell yeah!',\n", + " '地下2000階',\n", + " '真っ逆さま',\n", + " '火あぶり針地獄のフロアです',\n", + " 'だからいつも命がけ',\n", + " 'going up, going down',\n", + " 'going up, going down',\n", + " 'hell yeah!',\n", + " '上へ参ります',\n", + " '下へ参ります',\n", + " '上へ参ります',\n", + " '下へ参ります',\n", + " 'going up, going down',\n", + " 'going up, going down',\n", + " 'hell yeah!',\n", + " '上へ参ります',\n", + " '下へ参ります',\n", + " 'だからいつも命がけ',\n", + " 'going up, going down',\n", + " 'going up, going down',\n", + " 'hell yeah!',\n", + " 'i’m not interested in any betting like in pokers',\n", + " 'what’s the point of guessing which is which of them’s the jokers',\n", + " 'plenty of guessing and cheating, already right preachers?',\n", + " 'some say it’s a microcosm of this world, but who cares?',\n", + " 'i guess you’ve just chose the different planet all you haters',\n", + " 'this one’s not created for men like you, only dreamers',\n", + " 'i would kindly ask you not to bother me you creatures',\n", + " 'i’ll be good and you go home we’ll meet you in next century',\n", + " 'もう少しだけ乗ってけ',\n", + " '痛い痛いのは飛んでけ',\n", + " 'そして また恋しよう',\n", + " 'スカしてるやつぁほっとけ',\n", + " 'i guess i’m not old enough to understand my grade card',\n", + " 'first of all, how well you know about me mr. teacher?',\n", + " \"if i were you, it'd take a couple of years to give me grades\",\n", + " 'now, it’s my turn to give you one what can you do to cheer me',\n", + " 'もしかしたら僕だけ?',\n", + " 'って思った その数だけ',\n", + " '君は輝いてる',\n", + " 'ヤツらはもうほっとけ',\n", + " '冷めて固まった頭はまずチンして',\n", + " 'そのあと冷凍庫で3時間半冷やして',\n", + " '待つその間にキスでもしようか',\n", + " 'ah ah ah 脳はおいといてさ',\n", + " 'もう少しだけ乗ってけ',\n", + " '痛い痛いのは飛んでけ',\n", + " '何度でも恋しよう',\n", + " 'スカしてるやつぁほっとけ',\n", + " 'the world was silent',\n", + " 'i covered eyes and ears',\n", + " 'and fell asleep again to avoid awaking',\n", + " '夜の憂鬱を 振り解くように',\n", + " '僕をいつも そっと揺り起こすように',\n", + " 'as you did it to me',\n", + " 'ah, i wanna wake you in the same way',\n", + " \"i'll stay beside you as you stayed beside me\",\n", + " 'like you gave me love, i will give it back to you',\n", + " '君がくれたように 君に触れ',\n", + " 'ただ糧となっていられるように',\n", + " \"i'm here beside you\",\n", + " 'the world is empty',\n", + " 'if your laughter breaks off',\n", + " 'and i would never find the reason to sing here',\n", + " '日々の普通を 書き留めるように',\n", + " '君の苦痛を そっと抱き寄せるように',\n", + " 'as you did it to me',\n", + " 'ah, i wanna hold you in the same way',\n", + " 'i will stay beside you as you stayed beside me',\n", + " 'like you gave me love, i will give it back to you',\n", + " '君がくれたように 君に触れ',\n", + " 'ただ糧となっていられるように',\n", + " \"i'm here beside you\",\n", + " 'beside you, ah...',\n", + " '夜は明日の朝を迎えて',\n", + " '僕らは今を昨日に変えて',\n", + " 'ただ暮れるように 戯れるように',\n", + " '互いの日々を繋いで',\n", + " 'i will stay beside you as you stayed beside me',\n", + " 'like you gave me love, i will give it back to you',\n", + " '君がくれたように 君に触れ',\n", + " 'ただ糧となっていられるように',\n", + " 'stay beside you',\n", + " 'i will stay beside you',\n", + " 'i will stay beside you',\n", + " 'i will stay beside you',\n", + " ...]},\n", + " 'data': ['once upon a time',\n", + " 'there was an old man',\n", + " 'he went gathering firewood in the mountains',\n", + " 'and came upon a big bamboo dazzling in the woods',\n", + " 'he split the bamboo',\n", + " 'a beautiful girl appeared',\n", + " 'pale as moonlight',\n", + " 'pale as moonlight',\n", + " '可愛い男たちが',\n", + " '好きな揺れる煙',\n", + " '蜃気楼憧れた あぁ あの日の言葉忘れてさ',\n", + " 'i wish i could be free',\n", + " \"but that's just a dream\",\n", + " 'floating like a paper balloon',\n", + " 'not trapped in a cage ah',\n", + " '玉のかんざし落ち',\n", + " 'クルクル回る風車 ah',\n", + " '梅雨の雨に濡れて',\n", + " '触れてみたいは天の向こう',\n", + " 'i long to return to the moon',\n", + " 'i wanted a place to stay but',\n", + " 'i think, i like it here too',\n", + " 'when men lust for me',\n", + " 'i feel so happy',\n", + " '傷をなめあうなら',\n", + " '許してあげてもいい',\n", + " '欲しいものなど ah',\n", + " 'あたいにはない',\n", + " 'a droplet falls',\n", + " 'like a moment from forever',\n", + " 'precious, sweet and tender',\n", + " \"as a baby's heart\",\n", + " 'fall from grace',\n", + " 'into the raging darkness',\n", + " 'just to find the way',\n", + " \"back to its lover's arms\",\n", + " 'and through this fate they never understand',\n", + " 'just how endless the sea',\n", + " '終りのない世界の中 すべては生まれ変わり続け',\n", + " '形のない世界の中 目をとじれば何か見えるでしょう',\n", + " \"it's hard to find\",\n", + " 'that silent peace of mind',\n", + " 'they die to be',\n", + " 'そして何か見つけたら 手をのばしてごらん',\n", + " '怖くはない',\n", + " 'alive in an asian sky',\n", + " 'alive in an asian sky',\n", + " 'あなたが いっしょにさわいだなら',\n", + " '美しい明かり 道にともる',\n", + " '足りないのは ちょっとの勇気でしょう',\n", + " 'さぁ押してくれ 小さな背中を',\n", + " \"and this god they don't understand\",\n", + " 'why what is should be',\n", + " '僕も消えて 君も消えて 空のかなたに 登ってって',\n", + " '雨になって 大地に落ちて 命をあげて また始まる',\n", + " 'try to hide',\n", + " 'in the illusion that they fight',\n", + " 'and die to be',\n", + " 'そして花が咲いたなら ほほえんでごらん',\n", + " 'さみしくはない',\n", + " 'alive in an asian sky',\n", + " 'alive in an asian sky',\n", + " 'alive in an asian sky',\n", + " 'so high to forever fly',\n", + " '(solo)',\n", + " 'いつの頃だったか、まだ生まれたばかりの頃',\n", + " 'どんなことでも恐れずにやる勇気があった',\n", + " 'そしてそこでは、どんな境界もなく',\n", + " '見渡す限り、すべての自由があった',\n", + " '少しでも思い出して・・・',\n", + " \"i'll never know if i even knew the difference\",\n", + " 'between what is and what should never be',\n", + " 'yeah, but my hands are reaching up into the heavens',\n", + " \"'cause i wanna know what i could be\",\n", + " 'alive in an asian sky',\n", + " 'alive in an asian sky',\n", + " 'alive in an asian sky',\n", + " 'so high to forever fly',\n", + " 'alive in an asian sky',\n", + " 'alive in an asian sky',\n", + " 'alive in an asian sky',\n", + " 'so high to forever fly',\n", + " 'alive in an asian sky',\n", + " 'alive in an asian sky',\n", + " 'alive in an asian sky',\n", + " 'so high to forever fly',\n", + " \"it's not the world\",\n", + " \"but it's me that's near the end\",\n", + " 'losing you was losing everything i had',\n", + " \"it's been a while since i've noticed the first crack\",\n", + " 'but your eyes just locked me up',\n", + " 'and just have to watch myself fall',\n", + " '勝手 生きたら 離れて 必要なのは',\n", + " '間と君の心を戻すこと',\n", + " \"but i can't\",\n", + " \"i'm breaking down\",\n", + " '散らばっている少しずつ消えていく',\n", + " 'in the dark',\n", + " 'いつか 滑って 壊れたら',\n", + " 'please find my pieces and put me into one',\n", + " 'you seem just fine, almost better on your own',\n", + " \"i don't blame you cause hearts never break the same\",\n", + " 'もう一度 僕を呼んでくれれば',\n", + " '恋しかった 会いたかったと',\n", + " '涙を流すだろう',\n", + " '勝手 生きたら 離れて 必要なのは',\n", + " '時間と君の心を戻すこと',\n", + " \"but i can't\",\n", + " \"i'm breaking down\",\n", + " '散らばっている少し ずつ消え ていく',\n", + " 'in the dark',\n", + " 'いつか 滑って 壊れたら',\n", + " 'please find my pieces and put me into one',\n", + " \"i'm breaking down\",\n", + " '散らばっている少しずつ消えていく',\n", + " 'in the dark',\n", + " 'いつか 滑って壊れたら',\n", + " 'please find my pieces and put me into one',\n", + " 'like a shooting star, you came and went',\n", + " 'from the moment you fell into my atmosphere',\n", + " 'when you touched my air, you sparked with the verve',\n", + " 'like nothing i’ve ever seen',\n", + " 'my world lit up in your colours',\n", + " 'seemed so graceful, so beautiful',\n", + " 'for the first time in my life',\n", + " 'i wasn’t scared to show myself',\n", + " 'under such a radiant hope',\n", + " 'did i even have a chance',\n", + " 'to make a wish for it to last forever?',\n", + " 'you left me here mesmerized all alone',\n", + " 'when i realized, the star has faded away',\n", + " 'all that remains in my hands',\n", + " 'are the stardusts of you',\n", + " 'still floating in globe',\n", + " 'all that remains in my hands',\n", + " 'are the stardusts of you',\n", + " 'still glowing with hope',\n", + " '輝く君は僕を貫き',\n", + " '瞬く間に消え去っていった',\n", + " '残された僕は何もできずに',\n", + " 'ただひたすら君の放つ光を',\n", + " '僕は彷徨う君を求め永遠に',\n", + " '君が残した星の砂を追って',\n", + " '僕らを包むこの世界がある限り',\n", + " 'きっと君を見つけ出す',\n", + " 'その時君はまた微笑んで',\n", + " 'くれるだろうか',\n", + " 'この記憶の中で鮮やかに光り生き続ける君を',\n", + " '見つけ出すまで僕はこの体を決っして止める ことはない',\n", + " '君がくれた無限の喜びを',\n", + " 'kanji',\n", + " '有り余す程の 鳴り止まぬ音の',\n", + " '直中に立って 生まれた物を',\n", + " '100の感情を 殺せないよ',\n", + " 'music goes round',\n", + " 'the beat goes on, make a loud sound',\n", + " 'such freedom is not to be found',\n", + " 'let me blow your mind for a while',\n", + " \"i want you to realize that you're alive\",\n", + " \"don't suppress your emotions\",\n", + " 'bare all your feelings',\n", + " \"don't suppress your emotions\",\n", + " 'bare all your feelings',\n", + " 'let me see your joy',\n", + " 'show me your anger',\n", + " 'let me see your grief',\n", + " 'and show me your pleasure',\n", + " '止めどなく鳴らす rock の様に自由で',\n", + " 'それぞれ晒す 僕の様に夢中で',\n", + " '解き放て 蒸せ返ったlove and hate',\n", + " '解き放て 全て溢れ出すまで',\n", + " '100の感情を 消せやしないよ',\n", + " 'music goes round',\n", + " 'the beat goes on, make a loud sound',\n", + " 'such freedom is not to be found',\n", + " 'let me blow your mind for a while',\n", + " \"i want you to realize that you're alive\",\n", + " \"don't suppress your emotions\",\n", + " 'bare all your feelings',\n", + " \"don't suppress your emotions\",\n", + " 'bare all your feelings',\n", + " 'let me see your joy',\n", + " 'show me your anger',\n", + " 'let me see your grief',\n", + " 'and show me your pleasure',\n", + " '止めどなく鳴らす rock の様に自由で',\n", + " 'それぞれ晒す 僕の様に夢中で',\n", + " '音楽は鳴り止まない',\n", + " '感情はやり場がない',\n", + " '日々を音楽が助け出す様に',\n", + " '君の感情が溢れ出す様に',\n", + " 'a hundred emotions',\n", + " '止めどなく鳴らす rock の様に自由',\n", + " 'rock の様に',\n", + " '暗いだけの部屋 不定期 パッシングライト',\n", + " 'めまいするほど まばゆい パッシングライト',\n", + " 'ほめ合うムード どこか観たようなスタイル',\n", + " 'けなさないジョークも いつか観たようなスタイル',\n", + " 'to flash, flash, flash',\n", + " 'i know how that feels',\n", + " '見えないものが見えないよ',\n", + " 'ありのまま 気のまま なんだろう?',\n", + " '少し眩しい',\n", + " '少し眩しい',\n", + " '少し眩しい',\n", + " 'light!',\n", + " 'imitation, strobe, come on',\n", + " 'imitation, strobe, come on',\n", + " 'imitation, strobe, come on',\n", + " 'imitation, strobe, come on',\n", + " 'imitation',\n", + " 'imitation, strobe',\n", + " 'imitation',\n", + " 'imitation, strobe, come on',\n", + " 'to flash, flash, flash',\n", + " 'i know how that feels',\n", + " '見せたいもの早く見せてよ',\n", + " 'ありのままって言うのなんだろう?',\n", + " '少し眩しい',\n", + " '少し眩しい',\n", + " '少し眩しい',\n", + " '少し眩しい',\n", + " '少し眩しい',\n", + " 'light!',\n", + " 'imitation, strobe, come on',\n", + " 'imitation, strobe, come on',\n", + " 'imitation, strobe, come on',\n", + " 'imitation, strobe, come on',\n", + " 'imitation, strobe, come on (yeah-yeah-yeah, yeah-yeah-yeah)',\n", + " 'imitation, strobe, come on (yeah-yeah-yeah-yeah-yeah-yeah)',\n", + " 'imitation, strobe, come on (yeah-yeah-yeah, yeah-yeah-yeah)',\n", + " 'imitation, strobe, come on (yeah-yeah-yeah-yeah-yeah-yeah)',\n", + " '(yeah-yeah-yeah, yeah-yeah-yeah)',\n", + " '(yeah-yeah-yeah-yeah-yeah-yeah)',\n", + " 'imitation, strobe, come on (yeah-yeah-yeah, yeah-yeah-yeah)',\n", + " 'imitation, strobe, come on (yeah-yeah-yeah-yeah-yeah-yeah)',\n", + " 'imitation, strobe, come on',\n", + " 'imitation, strobe, come on',\n", + " '独房の闇消された強者、地獄の底から蘇れ',\n", + " 'your soul is living now',\n", + " \"fuckin' unreasonable world\",\n", + " '魂売った人類ども、地獄の底で裁かれてくれ',\n", + " 'he said \"we won\\'t live under the law\"',\n", + " 'i say \"come off it!\" to an unreasonable world',\n", + " 'go, for violent paradise',\n", + " '荒野を走る事6マイル',\n", + " 'ついにかの人をば探しあてる',\n", + " 'その男マントをひるがえし',\n", + " '威風堂々たるそのいでたち',\n", + " '「僕らの村を救ってよ、',\n", + " '今大変な騒ぎになってる助けが欲しい」',\n", + " '「そればらば」と取り出す優待券',\n", + " '「報酬は礼金ということで」',\n", + " '走る事忘れた老いた馬',\n", + " '早く戻らなければいけないのに',\n", + " 'ようやく僕らの村に着く',\n", + " '銃声が聞こえるやいなや',\n", + " '顔つき変わり oh yeah!',\n", + " 'good times he here comes',\n", + " 'good times he here comes',\n", + " '(good times he here comes)',\n", + " 'good times he here comes',\n", + " 'good times he here comes',\n", + " '(good times he here comes)',\n", + " 'good times he here comes',\n", + " 'good times he here comes',\n", + " '(good times he here comes)',\n", + " 'good times he here comes',\n", + " 'good times he here comes',\n", + " 'show me the way',\n", + " '彼の目に炎が宿り',\n", + " '敵か味方か分からぬ内に',\n", + " 'マシンガン oh no!',\n", + " 'bad time he here comes',\n", + " 'bad time he here comes',\n", + " '(bad time he here comes)',\n", + " 'bad time he here comes',\n", + " 'bad time he here comes',\n", + " '(bad time he here comes)',\n", + " 'bad time he here comes',\n", + " 'bad time he here comes',\n", + " '(bad time he here comes)',\n", + " 'bad time he here comes',\n", + " 'bad time he here comes',\n", + " 'take me away',\n", + " 'japanese:',\n", + " 'ゆっくり溶け出していく 大切な物がひとつづつ',\n", + " 'ああ それを見ている 何もできずに',\n", + " '快楽を求めるあまり こんなにいびつに進化した',\n", + " '大人たちが立っている こけしみたいに',\n", + " '義務のように美しく',\n", + " '義務のように夢見がち',\n", + " '義務のようにほほえんで',\n", + " '義務のように虚ろ',\n", + " 'もしもこんな世の中で',\n", + " '君のようになれるなら',\n", + " 'もしもこんな世の中で',\n", + " '君がいなくなったら',\n", + " '義務のように美しく',\n", + " '義務のように語らない',\n", + " '義務のように愛し合い',\n", + " '義務のように眠る',\n", + " 'もしもこんな世の中で',\n", + " '君のようになれるなら',\n", + " 'もしもこんな世の中で',\n", + " '君がいなくなったら',\n", + " 'キャンドルがゆれる部屋で センスのいい曲がかかり',\n", + " '大人たちが泣いている 何も感じない',\n", + " '義務のように美しい',\n", + " '義務のように愛し合う',\n", + " '義務のように美しい',\n", + " '義務のように愛し合う',\n", + " 'romaji:',\n", + " 'yukkuri tokedashiteiku taisetsuna mono ga hitotsu zutsu',\n", + " 'ā sore o miteiru nani mo dekizu ni',\n", + " 'kairaku o motomeru amari konnani ibitsu ni shinka shita',\n", + " 'otonatachi ga tatteiru kokeshi mitai ni',\n", + " 'gimu no yō ni utsukushiku',\n", + " 'gimu no yō ni yumemi gachi',\n", + " 'gimu no yō ni hohoende',\n", + " 'gimu no yō ni utsuro',\n", + " 'moshimo konna yononaka de',\n", + " 'kun no yō ni narerunara',\n", + " 'moshimo konna yononaka de',\n", + " 'kun ga inaku nattara',\n", + " 'gimu no yō ni utsukushiku',\n", + " 'gimu no yō ni kataranai',\n", + " 'gimu no yō ni aishiai',\n", + " 'gimu no yō ni nemuru',\n", + " 'moshimo konna yononaka de',\n", + " 'kun no yō ni narerunara',\n", + " 'moshimo konna yononaka de',\n", + " 'kun ga inaku nattara',\n", + " 'kyandoru ga yureru heya de sensu no ī kyoku ga kakari',\n", + " 'otonatachi ga naiteiru nani mo kanjinai',\n", + " 'gimu no yō ni utsukushī',\n", + " 'gimu no yō ni aishiau',\n", + " 'gimu no yō ni utsukushī',\n", + " 'gimu no yō ni aishiau',\n", + " 'english:',\n", + " 'important things slowly melting out one by one',\n", + " 'i can not do anything watching it ah',\n", + " 'i have evolved into such an irregular so much that i want pleasure',\n", + " 'like a kid that adults are standing',\n", + " 'beautiful like duty',\n", + " 'dreaming like duty',\n", + " 'smile like an obligation',\n", + " 'like a duty empty',\n", + " 'if this is the case',\n", + " 'if you can be like you',\n", + " 'if this is the case',\n", + " 'if you are gone',\n", + " 'beautiful like duty',\n", + " 'i do not talk like a duty',\n", + " 'like a duty to love each other',\n", + " 'sleep like duty',\n", + " 'if this is the case',\n", + " 'if you can be like you',\n", + " 'if this is the case',\n", + " 'if you are gone',\n", + " 'a good song is taken in the room where the candle shakes',\n", + " 'adults are crying i do not feel anything',\n", + " 'beautiful like duty',\n", + " 'i love each other like duty',\n", + " 'beautiful like duty',\n", + " 'i love each other like duty',\n", + " 'please yesterday 悩殺の everyday',\n", + " '開拓者の labyrinth',\n", + " '未来図のストロボ さかしまなbaby face',\n", + " '道しるべは no thanks 君と close my eyes',\n", + " 'ah, snail job……',\n", + " 'night snails & plastic boogie',\n", + " 'はがい絞めのstory',\n", + " 'night snails & plastic boogie',\n", + " 'please yesterday',\n", + " 'please yesterday',\n", + " \"願い事が神秘を抱きしめたら let's start again\",\n", + " '泥だらけのsensational beginners',\n", + " 'かたつむりは今夜モザイクを映さない',\n", + " '泡まみれのspiritual game',\n", + " 'mindのroller star',\n", + " 'stand up invaders!',\n", + " 'night snails & plastic boogie',\n", + " '腐りかけのmusic',\n", + " 'night snails & plastic boogie',\n", + " '群れなすかたつむり',\n", + " 'snail……',\n", + " '殻を破るstatus',\n", + " 'snail……',\n", + " 'please yesterday',\n", + " 'please yesterday',\n", + " 'please yesterday',\n", + " '甘いときめき 今狂い咲き',\n", + " '全て吐き出せ night mare',\n", + " '唇求め 喜び求め',\n", + " '旋律乱し 優れた機能で passion',\n", + " '頭に湧き出る 海の水を飲み',\n", + " '広がる imagination',\n", + " '最高のkissと 最低のmissを',\n", + " '思い出したら frenzy',\n", + " '愛しき火花散らして 幻想を手に入れ泣いても',\n", + " \"それに夢中なら… don't be cried\",\n", + " 'your body!',\n", + " 'la la la la... talking with my lips',\n", + " 'la la la la... i like your lips lips',\n", + " 'la la la la... velvet your lips',\n", + " 'la la la la... talking with my lips yeah!',\n", + " '冷蔵庫にはつめたいmilk',\n", + " 'のどをうるおすための',\n", + " '指についたmilkを吸いながら',\n", + " 'いつまでも待つ baby',\n", + " '夜ごと髪を乱して 思考回路に守られて',\n", + " '喜ぶ身体と fry tonight',\n", + " 'your body!',\n", + " 'la la la la... talking with my lips',\n", + " 'la la la la... i like your lips lips',\n", + " 'la la la la... velvet your lips',\n", + " 'la la la la... talking with my lips yeah!',\n", + " '触れ合う指先 暴れる誘惑に',\n", + " '二度と騙されはしない…',\n", + " '舌を出す genocideが',\n", + " 'きれいごとで 夢を見たら',\n", + " 'もうそれで このまま砕いて 今さらもがいて',\n", + " 'それを絡めた 羽を広げて!',\n", + " 'la la la la... talking with my lips',\n", + " 'la la la la... i like your lips lips',\n", + " 'la la la la... velvet your lips ah',\n", + " 'la la la la... talking with my lips',\n", + " 'talking with my lips talking with my lips',\n", + " 'i like your lips velvet your lips',\n", + " 'talking with my lips i like your lips',\n", + " 'sleepless imagination sleepless imagination',\n", + " 'sleepless imagination sleepless imagination',\n", + " 'sleepless sleepless sleepless sleepless',\n", + " 'sleepless sleepless sleepless sleepless',\n", + " 'if it is a sin',\n", + " \"where's my existance?\",\n", + " 'if it is a sin',\n", + " \"where's my existance?\",\n", + " '何処にも無いのよ私の灯火',\n", + " 'ずるいわこのまあなたは知らない',\n", + " \"i'm falling down and down\",\n", + " \"i'm falling down and down\",\n", + " \"i'm falling down and down\",\n", + " \"i'm falling down and down\",\n", + " '戸惑い切なさ苦しさ寂しさも',\n", + " 'すべて縺れて思わず',\n", + " 'あいしてるなんて呟けたら',\n", + " 'if it is a sin',\n", + " \"where's my existance?\",\n", + " 'if it is a sin',\n", + " \"where's my existance?\",\n", + " 'あなたの煙草の煙が近付く',\n", + " 'あたしを酷く拒絶して許さない',\n", + " \"i'm falling down and down\",\n", + " \"i'm falling down and down\",\n", + " \"i'm falling down and down\",\n", + " \"i'm falling down and down\",\n", + " '朽ち果てて消えて',\n", + " 'しまう果実のように今も',\n", + " '虚しくあなたを',\n", + " '想えば想うほど溶け墜ちて',\n", + " 'somebody tell me. is this',\n", + " 'a sin by loving him?',\n", + " 'i want you i need you',\n", + " \"i can't stand it\",\n", + " \"don't know what to do\",\n", + " '眩暈悪い夢胸騒ぎ怯えているの',\n", + " '私の唇が思わず漏らしてた罪を',\n", + " 'お願いあなたの腕の中にはまだ今も',\n", + " '私の居場所が隠されているから',\n", + " 'ねぇ許して',\n", + " 'if it is a sin',\n", + " \"where's my existance?\",\n", + " 'if it is a sin',\n", + " \"where's my existance?\",\n", + " 'if it is a sin',\n", + " \"where's my existance?\",\n", + " 'if it is a sin',\n", + " \"where's my existance?\",\n", + " 'another step up',\n", + " \"it's takin' takin' takin' takin' long\",\n", + " 'always digging',\n", + " \"it's gettin' getting' getting' get it on\",\n", + " 'wherever you stand just start to walk',\n", + " 'everywhere you go goes round and round',\n", + " \"it's coming back to what i know\",\n", + " 'the deep deep deeper we go',\n", + " \"feeling alone, but it's oh so simple\",\n", + " 'let it go',\n", + " \"dim dim dim the light's low\",\n", + " 'but not blind, i can see the symbol',\n", + " 'let it show',\n", + " 'mighty story',\n", + " \"don't hide it from me\",\n", + " 'いつだって人は迷うんだって',\n", + " '気付いちゃったって知らんぷりしていよう',\n", + " 'そしてgood good days',\n", + " '僕らは生まれてからso多くを学び',\n", + " '死に近づくにつれて多くを忘れ',\n", + " '気付いた時にゃもう灰になってる',\n", + " '生きた証を残しておくにはモノじゃ無くて',\n", + " '「誰かの記憶に残るような人生をお薦めします」',\n", + " 'the deep deep deeper we go',\n", + " \"feeling alone, but it's oh so simple\",\n", + " 'let it go',\n", + " \"dim dim dim the light's low\",\n", + " 'but not blind, i can see the symbol',\n", + " 'let it show',\n", + " 'mighty story',\n", + " \"don't hide it from me\",\n", + " 'いつだって人は迷うんだって',\n", + " '気付いちゃったって知らんぷりしていよう',\n", + " 'そしてgood good days',\n", + " '物事にはsoどんな時だって',\n", + " 'オマケのノビシロがついていて',\n", + " '何かを築きそして変えて越えて',\n", + " '奇跡と言う名の必然を繰り返して! 上へ',\n", + " 'we never, we never',\n", + " 'we will not stop right here',\n", + " 'we never, we never',\n", + " 'we will not stop right here',\n", + " 'we never, we never',\n", + " 'we will not stop right here',\n", + " 'we never, we never',\n", + " 'we will not stop right here',\n", + " 'we never, we never',\n", + " 'we will not stop right here',\n", + " 'we never, we never',\n", + " 'we will not stop right here',\n", + " 'we never, we never',\n", + " 'we will not stop right here',\n", + " 'we never, we never',\n", + " 'we will not stop right here (so choose wisely)',\n", + " 'do what you do gotta get through',\n", + " 'へたれてる時間なんて微塵も無いぞ',\n", + " '後悔しないように生きる',\n", + " 'そんな風に生きたって悔いは残るさ',\n", + " '長いものに巻かれて終わる?',\n", + " 'いやそれどころか巻いて終わるのさ',\n", + " '予測すらできやしない猛スピードで',\n", + " 'ほらgood, good-bye',\n", + " '(raise your hands, now!)',\n", + " \"“let's get it going”さあ始めよう…\",\n", + " '(raise your hands, now!)',\n", + " 'so, 僕らの名の下に',\n", + " '(raise your hands, now!)',\n", + " 'bring it, bring it on',\n", + " '(raise your hands, now!)',\n", + " \"can't stop!!!\",\n", + " '目障りな喧騒にはget out',\n", + " '挑発するよう舌出して bye now',\n", + " '不撓不屈 唯々昇るさ',\n", + " '余所見出来るの?出来ない you see',\n", + " \"risk 伴った愉快さがdon't stop\",\n", + " 'play out 朽ちてゆけ お前が',\n", + " '逆巻く熱を帯びて 全身全霊 checkmate',\n", + " '意思表示する叫びの 金輪際容赦しない condition',\n", + " '僕ら色の scenario は never end…ahhhhh!',\n", + " '(raise your hands, now!)',\n", + " 'i will win against!',\n", + " '運命は僕らさ 魂を魂で穿って',\n", + " 'i know(you know?) you know?(i know)',\n", + " '“we get to the top”(3, 2, 1, jump!)',\n", + " 'i will win against!',\n", + " '前人未踏の地へ 絶対的な存在へと',\n", + " 'i know(you know?) you know?(i know)',\n", + " 'a declaration of ××× 此処に…聴け!',\n", + " '(raise your hands, now!)',\n", + " \"例え声を枯らしてもdon't care\",\n", + " '喉の奥から求めてsing it',\n", + " '不承不承 生きるのはやめろよ',\n", + " '姦しく鳴る戯言go away',\n", + " '鼓膜揺るがせ 脊髄で feeling',\n", + " 'play out 後は見下ろすだけ',\n", + " '激情の渦が示す 未来の姿 showing up',\n", + " '支配する eye contact 世界中を切り裂いてゆけ',\n", + " '僕ら色の memory は never die…ahhhhh!',\n", + " '(raise your hands, now!)',\n", + " 'i will win against!',\n", + " '運命が僕らさ 魂を魂で掴んで',\n", + " 'i know(you know?) you know?(i know)',\n", + " '“we get to the top”(3, 2, 1, jump!)',\n", + " 'i will win against!',\n", + " '前人未踏の地で 負け知らずの微笑みを',\n", + " 'i know(you know?) you know?(i know)',\n", + " 'a declaration of ××× 此処に…聴け!',\n", + " '(raise your hands, now!)',\n", + " \"“let's get it going”さあ始めよう…\",\n", + " 'so, 僕らの名の下に',\n", + " '(raise your hands, now!)',\n", + " 'bring it, bring it on',\n", + " '(raise your hands, now!)',\n", + " \"can't stop!!!\",\n", + " '(raise your hands, now!)',\n", + " 'i will win against!',\n", + " '運命は僕らさ 魂を魂で穿って',\n", + " 'i know(you know?) you know?(i know)',\n", + " '“we get to the top”(3, 2, 1, jump!)',\n", + " 'i will win against!',\n", + " '前人未踏の地へ 絶対的な存在へと',\n", + " 'i know(you know?) you know?(i know)',\n", + " 'a declaration of ××× 此処に…聴け!',\n", + " '(raise your hands, now!)',\n", + " '偽物 不確かな黒 imitation uncertain black',\n", + " '正義 残酷な赤 justice brutal red',\n", + " '途切れた色 paranoia broken colors paranoia',\n", + " '角膜に刻むスローモーション slow motion engraved in my cornea',\n", + " '全てが終わるこの場所で everything ends in this place',\n", + " '何が残るか俺は知らない i have no idea what could remain',\n", + " '願望 騙し続け desires continue to deceive',\n", + " '審判 逃げ込んだ影 judgement take refuge in the shadows',\n", + " '歪んだ色 paranoia distorted colors paranoia',\n", + " '角膜に刻むスローモーション slow motion engraved in my cornea',\n", + " '全てが終わるこの場所で everything ends in this place',\n", + " '何が残るか俺は知らない i have no idea what could remain',\n", + " '刹那の夢 白昼夢 moment of dreams daydream',\n", + " '眼に焼き付くスローモーション slow motion burned into my eyes',\n", + " '刹那の夢 その記憶 moment of dreams that memory',\n", + " '脳裏に刻むスローモーション engraved into my mind slow motion',\n", + " '切れかけた街灯に照らされて 明滅繰り返す人々の影',\n", + " 'ゴムの匂いと空気の湿り気 静寂と呼ぶには、はなはだ多弁',\n", + " 'したがって 定まらぬ視点 星を滑って 東北に流転',\n", + " '蛾が群がって どうせ無駄だって 夢に焼け落ちて あとは何もねえ',\n", + " '行き先のない乗車券 此岸の終わりの夕景',\n", + " '地球の裏の荒野へ 早く連れてってくれ',\n", + " '夏の庭に犬の骨 死屍累々の日付',\n", + " 'それを踏んづけて明日へ 気管支炎の音符で',\n", + " '血を吐くまでは歌え 放射状 北の山背',\n", + " 'そこに咲いた花でさえ 冒涜は許されて',\n", + " '僕は舌打ちをしたこの街へ いや、舌打ちしたのは街の方で',\n", + " '砂場に子供らの神話体系 その一粒ごと神は宿って',\n", + " '絡まって 切れぬ社会性 みだりに越えて 唾を吐き掛け',\n", + " '我が塞がって 来世疑って 無様に燃えて あとは何もねえ',\n", + " '獣と人の分岐点 命にたかる銀蠅',\n", + " '精子は霊地の巡礼 死ぬには早い降雪',\n", + " '国道沿いのラブホテル トワイライト純潔で',\n", + " '言葉足らずの夜明け 吃音的な世の果て',\n", + " 'それを飲み込んでは咽せる 結露に滴るカーテン',\n", + " '命が今焼け落ちて 車道に冬の銀河系',\n", + " 'トラックの荷台に跨がって 歳月が通り過ぎた',\n", + " '交差点で横転して 血を流していた',\n", + " '窓越しにそれを見ていたら 命がじりじりと焦げる音を聞いた',\n", + " 'スピードと摩擦 火花を散らして',\n", + " 'スピードと摩擦 内臓を焦がして',\n", + " '体内に発車の汽笛 血液は逃避の路線',\n", + " '旅立っては近づいて 離れてくのはどうして?',\n", + " '苛立ちは尚叫んで ひび割れた今日の風景',\n", + " '地表にうがつささくれ 二月は無垢な難破船',\n", + " 'スピードと摩擦 内臓を焦がして',\n", + " 'english lyrics',\n", + " 'shadows dance atop both the cement and asphalt, moved by the flicker of the lights hanging above them',\n", + " 'the scent of rubber and encroaching humidity arrests my attention and steals away the quiet',\n", + " 'my eyesight flies between the stars in the sky, on a pilgrimage to a single northeastern light',\n", + " 'those pitiable moths, ensnared by their dreams, fly towards the open flame and burn ‘til nothing’s left',\n", + " 'in the station at the dusk of life, holding a one-way ticket to nowhere',\n", + " 'i only hope that this bullet train is on a non-stop course to hell',\n", + " 'dog bones lay strewn among summer flowers next to fresh time-stamped corpses',\n", + " 'throat stricken with heavy bronchitis, i march upon them both towards the end',\n", + " 'carried along by the northern gales, i sing even as i vomit blood',\n", + " 'there’s nobody left to condemn me, even as i crush flowers underfoot',\n", + " \"i wrap my hands around the town’s neck and squeeze hard, but it feels like i’m the one who's suffocating\",\n", + " 'when children speak of their many myths and legends, the gods only exist when they live alongside them',\n", + " 'i spit full force, in my struggle to persist, at this utterly tangled and impregnable society',\n", + " \"there’s no path to the future, and afterlife uncertain, yet in desperation i burn 'til nothing's left\",\n", + " 'flies swarm around all those yet living, forming a line between beasts and mankind',\n", + " 'sperm journey to a nearby graveyard; death in the form of a fierce blizzard',\n", + " 'twilight shines without a clue on the dirty old love hotel down the road',\n", + " 'so much left unspoken at dawn that by the end all the world does is stutter',\n", + " 'the curtains are soaked through with dew, enough that i very nearly drowned',\n", + " 'life is engulfed and turns to ashes on this road born of the milky way',\n", + " 'a lifetime seems to pass me by as i sit on the bed of this pickup truck',\n", + " 'a trail of blood follows in its wake as it crosses the intersection',\n", + " 'as my eyes stare straight ahead through the rear windshield, i hear the sounds of lives combusting all around me',\n", + " 'speed and friction. sparks flying everywhere',\n", + " 'speed and friction. my insides are on fire',\n", + " 'my soul sounds the departing train. my blood is the only escape i have left',\n", + " 'i can feel myself leaving the station. wait a minute, where’s everyone gone?',\n", + " 'looking out over arid plains, i keep screaming ‘til my lungs give out',\n", + " 'i strike the ground and it splits open, revealing all the abandoned shipwrecks',\n", + " 'speed and friction. my insides are on fire',\n", + " 'i bought a one way ticket',\n", + " 'もう戻らない',\n", + " 'あとは have fun それだけでいい',\n", + " 'i need to go this way',\n", + " 'time flies away',\n", + " 'いつか全部思い出',\n", + " 'so take my time and rest',\n", + " 'そっと呟いた my heart said',\n", + " \"i'm not slacking off\",\n", + " '大切なだけ',\n", + " 'like a bottle of wine',\n", + " 'その時がくるまで',\n", + " \"the nights i've been through\",\n", + " 'tells only the truth',\n", + " 'もらった birthday',\n", + " 'あとはマイペースで',\n", + " 'everything i was given',\n", + " 'and everything i earned',\n", + " '無くさないように描いた場所まで walk',\n", + " 'ねぇそのままで',\n", + " \"we're almost there\",\n", + " '急がないでいい',\n", + " 'たまに cry with me',\n", + " 'wait for the storm to go away',\n", + " 'with a favorite book in my hand',\n", + " '壊れないように',\n", + " 'また晴れるまで',\n", + " 'see off today…',\n", + " 'if we stay together',\n", + " 'ただそれだけで',\n", + " 'it looks much better',\n", + " '怖いもの全部 go out',\n", + " 'can you heat up the soup',\n", + " \"i'll put in 欲しいだけの love\",\n", + " 'and stir it up',\n", + " 'あとは humming together その時まで',\n", + " 'sorry できない無理に run',\n", + " 'pick it up one by one',\n", + " '運ぶものがある we have many',\n", + " '落とさないように walk',\n", + " 'ねぇそのままで',\n", + " \"we're almost there\",\n", + " '急がないでいい',\n", + " 'たまに cry with me',\n", + " 'wait for the storm to go away',\n", + " 'with a favorite book in my hand',\n", + " '壊れないように',\n", + " 'また晴れるまで',\n", + " 'see off today…',\n", + " \"ain't nobody coming\",\n", + " 'but somethings got me humming',\n", + " '長い一日の終わりにまた誰かが singing',\n", + " \"you did just fine it's okay\",\n", + " '明日はもっと better day',\n", + " \"we're almost there\",\n", + " 'my dear let it be',\n", + " \"we're almost there\",\n", + " '急がないでいい',\n", + " 'たまに cry with me',\n", + " 'wait for the storm to go away',\n", + " 'with a favorite book in my hand',\n", + " 'また晴れるまで',\n", + " 'sitting up on the bed',\n", + " 'ねぇそのままで',\n", + " \"we're almost there\",\n", + " '急がないでいい',\n", + " 'たまに cry with me',\n", + " 'wait for the storm to go away',\n", + " 'with a favorite book in my hand',\n", + " '壊れないように',\n", + " 'また晴れるまで',\n", + " 'see off today…',\n", + " 'my first story - 虚言neurose',\n", + " '日本語 / japanese',\n", + " 'kill me the person way so back',\n", + " 'kill me the person long ago',\n", + " 'what am i doing with them at this time',\n", + " 'why do i have to go along',\n", + " 'when is the time i come to be this way',\n", + " 'yeah, be just as now',\n", + " '虚言に染まりきった世界 歩き出した',\n", + " '紙クズだけを手にして',\n", + " '僕だけは迷わないように 火を灯した',\n", + " '誰かが目を覚ます前に',\n", + " '(i want to wake up)',\n", + " 'nobody cares about me (i will not stand up)',\n", + " 'nobody knows about me (i will not wake up)',\n", + " 'いつだって僕の絡まる感情は',\n", + " '連鎖的不完全状態',\n", + " 'いつまで? どこまで?',\n", + " 'i will always standing here from now on',\n", + " 'they just talk among the will forever',\n", + " \"tell me the reason why you're alive\",\n", + " \"tell me the reason why you're proud\",\n", + " '今僕が僕じゃなくなって',\n", + " 'もう愛も夢も消え去った',\n", + " '何もかも意味がないの',\n", + " 'yeah nothing i wanna know',\n", + " \"tell me the reason why you're alive\",\n", + " 'be just as now',\n", + " '夢を見る事が出来たならそれは叶う?',\n", + " 'じゃあ不幸な人は居ないね',\n", + " '意味なんてあってないような',\n", + " '言葉が今 バカなアリスを迷わせる',\n", + " 'get lost in yourself',\n", + " 'nobody cares about me (i will not stand up)',\n", + " 'nobody knows about me (i will not wake up)',\n", + " 'they just talk among their will forever',\n", + " \"tell me the reason why you're alive\",\n", + " \"tell me the reason why you're proud\",\n", + " '今僕が僕じゃなくなって',\n", + " 'もう愛も夢も消え去った',\n", + " '何もかも意味がないの',\n", + " 'kill me the person away so back',\n", + " 'kill me the person long ago',\n", + " '今誰が僕を名乗ってんの?',\n", + " 'もうドレもコレも同じだった',\n", + " 'これからも変わらないの',\n", + " 'nothing i wanna know',\n", + " 'nothing i wanna know',\n", + " 'nothing i wanna know',\n", + " 'nothing i wanna know woah',\n", + " '(what am i living for? what am i living for?)',\n", + " '(what am i living for? what am i living for?)',\n", + " 'living for!',\n", + " '誰」にでも同じ世界を見せるの',\n", + " '僕を夢の国の中の',\n", + " 'ドブネズミとでも思ってんの?',\n", + " 'こんなの今だけだから',\n", + " \"(tell me the reason why you're alive)\",\n", + " \"tell me the reason why you're alive\",\n", + " \"tell me the reason why you're proud\",\n", + " '今僕が僕じゃなくなって',\n", + " 'そう僕は虚言neurose',\n", + " 'これからも変わらないの',\n", + " 'yeah nothing i wanna know',\n", + " 'ok?',\n", + " 'sometimes with my heart',\n", + " 'i feel like just runnning away',\n", + " 'どこでもない、どこか',\n", + " 'my pretty sadness',\n", + " '受け止めて',\n", + " 'hi! pretty princess',\n", + " \"let's have a tea together\",\n", + " 'get ready?',\n", + " 'then if you come!',\n", + " \"i'll sing for you\",\n", + " '…& just for me',\n", + " '何かが変わるまで',\n", + " 'yeah baby',\n", + " '何にも言わないで',\n", + " '声を殺して飲み込んで',\n", + " 'ok?',\n", + " 'もう少しだけそばにいるのなら',\n", + " '心をみせてもいい',\n", + " 'my pretty sadness',\n", + " 'この夜に',\n", + " 'hey,dreamy princess',\n", + " \"let's make a wish together\",\n", + " 'get ready?',\n", + " 'i can tell fairy tales for you',\n", + " '…& just for me',\n", + " '涙がこぼれても',\n", + " '今は',\n", + " '何にも聞かないで',\n", + " \"it's ok…\",\n", + " '何かが崩れても',\n", + " '気にしないで',\n", + " 'can you come to get',\n", + " 'some ice creams with me',\n", + " 'can you bake a pinky cup cakes',\n", + " 'with me together',\n", + " 'get ready?',\n", + " 'then if you come!',\n", + " \"i'll sing for you\",\n", + " '…& just for me',\n", + " '何かが壊れても',\n", + " 'yeah baby',\n", + " '何にも言わないで',\n", + " '声を殺して飲み込んで',\n", + " 'get ready?',\n", + " 'i can tell fairy tales for you',\n", + " '…& just for me',\n", + " '涙がこぼれても',\n", + " '今は',\n", + " '何にも聞かないで',\n", + " \"it's ok…\",\n", + " '何かが崩れても',\n", + " \"(hey,don't say anything!)\",\n", + " \"it's just for you\",\n", + " 'japanese:',\n", + " '地震 水害 台風 大火災',\n", + " '見舞われるたんびにもうやめよう',\n", + " 'と思った でもやめられない俺は',\n", + " 'あれを',\n", + " '殺されそうになったって',\n", + " '殺されない限りまだだ',\n", + " 'やれるさ もうやめられない俺は',\n", + " 'あれを',\n", + " '分かってる そんなことぐらい',\n", + " '異常だ これは',\n", + " '分かってる でもやめられない',\n", + " 'なぜだか 今日もあれを',\n", + " '病 貧困 戦争 大飢饉',\n", + " '見舞われるたんびにもう無理だ',\n", + " 'と思った でもやめられない俺は',\n", + " 'あれを',\n", + " '分かってる そんなことぐらい',\n", + " '異常だ これは',\n", + " '分かってる でもやめられない',\n", + " 'なぜだか 今日もあれを',\n", + " '殺されそうになったって',\n", + " '殺されない限りまだだ',\n", + " 'やれるさ もうやめられない俺は',\n", + " 'あれを',\n", + " '楽しくもないのに',\n", + " 'romaji:',\n", + " 'jishin suigai taifū dai kasai',\n", + " 'mimawareru tanbi ni mō yameyō',\n", + " 'to omotta demo yamerarenai ore wa',\n", + " 'are o',\n", + " 'korosare sō ni nattatte',\n", + " 'korosarenai kagiri madada',\n", + " 'yarerusa mō yamerarenai ore wa',\n", + " 'are o',\n", + " 'wakatteru sonna koto gurai',\n", + " 'ijōda kore wa',\n", + " 'wakatteru demo yamerarenai',\n", + " 'nazeda ka kyō mo are o',\n", + " 'yamai hinkon sensō dai kikin',\n", + " 'mimawareru tanbi ni mō murida',\n", + " 'to omotta demo yamerarenai ore wa',\n", + " 'are o',\n", + " 'wakatteru sonna koto gurai',\n", + " 'ijōda kore wa',\n", + " 'wakatteru demo yamerarenai',\n", + " 'nazeda ka kyō mo are o',\n", + " 'korosare sō ni nattatte',\n", + " 'korosarenai kagiri madada',\n", + " 'yarerusa mō yamerarenai ore wa',\n", + " 'are o',\n", + " 'tanoshiku mo nainoni',\n", + " 'english:',\n", + " 'earthquake flood typhoon great fire',\n", + " \"let's stop it at once\",\n", + " 'i thought but i can not quit',\n", + " 'that',\n", + " 'i was about to be killed',\n", + " 'it is still unless it is killed',\n", + " 'i can do it i can not quit',\n", + " 'that',\n", + " 'i know that much',\n", + " 'this is abnormal',\n", + " 'i know but i can not stop it',\n", + " 'for some reason today',\n", + " 'disease poverty war famine',\n", + " 'i can not take it any more',\n", + " 'i thought but i can not quit',\n", + " 'that',\n", + " 'i know that much',\n", + " 'this is abnormal',\n", + " 'i know but i can not stop it',\n", + " 'for some reason today',\n", + " 'i was about to be killed',\n", + " 'it is still unless it is killed',\n", + " 'i can do it i can not quit',\n", + " 'that',\n", + " \"even though it's not fun\",\n", + " 'ah-ra-la-oh la',\n", + " 'don’t go away 逃げ場はない ah-ra-oh la-t-ah-oh la',\n", + " 'oh why? you’re crying 嗤え 狂え ah-ra-oh la-t-ah-oh la',\n", + " 'coming up… coming up…',\n", + " '嗚呼、殺意の眼 粋な獲物 昂ぶる 昂ぶる',\n", + " 'not enough… not enough…',\n", + " 'まだその命 愉悦に足りはしない',\n", + " 'we all are the jingoes oh-oh-oh',\n", + " '獣じみた欲を貪れ',\n", + " 'we are in the jungle oh-oh-oh',\n", + " 'さあ牙を研げ 死の数を競おう ah',\n", + " 'go on your way 容赦もなく',\n", + " 'no one is left 奪い尽くす',\n", + " 'showing up… showing up…',\n", + " '大義と似せたそれは私刑 甚振(いたぶ)る 甚振る',\n", + " 'you’re the same… you’re the same…',\n", + " '善と言い張る醜さこそが本性',\n", + " 'we all are the jingoes oh-oh-oh',\n", + " '弱き者を慈悲も残さず',\n", + " 'we are in the jungle oh-oh-oh',\n", + " '喰い尽くすのは 獣より人間(ひと)の性(さが)',\n", + " 'dance it up u-ra-ra',\n", + " 'o-o-o-o-o-o-o',\n", + " 'hurry up i-ya-ya',\n", + " 'o-a-o-a-o-a-o',\n", + " 'the world will be colorful, painful, beautiful',\n", + " 'when your life is lost',\n", + " 'we all are the jingoes oh-oh-oh',\n", + " '獣じみた欲を貪れ',\n", + " 'we are in the jungle oh-oh-oh',\n", + " 'さあ牙を研げ 死の数を競え',\n", + " 'the jingoes oh-oh-oh',\n", + " '嬲(なぶ)り倒す 味を舐めては',\n", + " 'we are in the jungle oh-oh-oh',\n", + " 'また舌を出す 狂った人間(とも)たちよ ah',\n", + " 'we all are the jingoes oh-oh-oh…',\n", + " 'we are in the jungle oh-oh-oh…',\n", + " '色を重ねて',\n", + " '嘘を重ねて',\n", + " '綺麗なままじゃいられない',\n", + " '輝きたくて 羽が欲しくて',\n", + " '気づけば溺れていた',\n", + " 'butterfly, butterfly, i',\n", + " 'butterfly, i wish that i could hide',\n", + " 'in a purple sky, no one see me cry',\n", + " 'butterfly',\n", + " 'butterfly',\n", + " '愛したくても',\n", + " '愛せないのは',\n", + " '汚れを知らないだけだと',\n", + " '雲の流れが 羨ましくて',\n", + " ...]}}},\n", + " 'ko': {'sentence': {'pop': {'meta': {'train_data': ['hangul',\n", + " '언제부턴가 네가',\n", + " '보고 싶지 않았고',\n", + " '그 어느 샌가 네가',\n", + " '더 이상 필요한지 몰랐어',\n", + " '그래서 너는 떠났고',\n", + " '그렇게 갈라져버렸어',\n", + " '어쩌면 우린',\n", + " '아무런 감정도 없이',\n", + " '이별을 준비해야 했나 봐',\n", + " '서로 아플 것만 생각했지만',\n", + " '그랬던 기억마저도',\n", + " '이제는 사라지나 봐',\n", + " '돌이킬 수 없는 일을',\n", + " '내가 자초하고',\n", + " '모든 상황을 잔인하게 만들었어',\n", + " '똑같을 거란 그 말을',\n", + " '그 말을 인정해버렸어',\n", + " '끝났다는 그 말에',\n", + " '우리는 갈라져버렸어',\n", + " '어쩌면 우린',\n", + " '아무런 감정도 없이',\n", + " '이별을 준비해야 했나 봐',\n", + " '서로 아플 것만 생각했지만',\n", + " '그랬던 기억마저도',\n", + " '이제는 사라지나 봐',\n", + " '어쩌면 우린',\n", + " '아무런 조건도 없이',\n", + " '사랑만 했어야 했나 봐',\n", + " '먼저 아플걸 생각하는 것도',\n", + " '나눈 모든 얘기들도',\n", + " '그렇게 떠나가나 봐',\n", + " '어쩌면 우린',\n", + " '아무런 조건도 없이',\n", + " '사랑만 했어야 했나 봐',\n", + " '먼저 아플걸 생각하는 것도',\n", + " '나눈 모든 얘기들도',\n", + " '그렇게 떠나가나 봐',\n", + " '어쩌면 우린',\n", + " '미안한 감정도 없이',\n", + " '서로를 떠나야 했나 봐',\n", + " '사랑했던 우리의 추억들도',\n", + " '좋았던 기억마저도',\n", + " '그렇게 지나가나 봐',\n", + " 'romanization',\n", + " 'eonjebuteonga nega',\n", + " 'bogo sipji anhassgo',\n", + " 'geu eoneusaenga nega',\n", + " 'deo isang piryohanji mollasseo',\n", + " 'geuraeseo neoneun tteonassgo',\n", + " 'geureohge gallajyeo beoryeosseo',\n", + " 'eojjeomyeon urin',\n", + " 'amureon gamjeongdo eopsi',\n", + " 'ibyeoreul junbihaeya',\n", + " 'haessna bwa',\n", + " 'seoro apeul geosman',\n", + " 'saenggakhaessjiman',\n", + " 'geuraessdeon gieokmajeodo',\n", + " 'ijeneun sarajina bwa',\n", + " 'dorikil su eopsneun ireul',\n", + " 'naega jachohago',\n", + " 'modeun sanghwangeul',\n", + " 'janinhage mandeureosseo',\n", + " 'ttokgateul georan',\n", + " 'geu mareul',\n", + " 'geu mareul injeonghae',\n", + " 'beoryeosseo',\n", + " 'kkeutnassdaneun',\n", + " 'geu mare',\n", + " 'urineun gallajyeo',\n", + " 'beoryeosseo',\n", + " 'eojjeomyeon urin',\n", + " 'amureon gamjeongdo eopsi',\n", + " 'ibyeoreul junbihaeya',\n", + " 'haessna bwa',\n", + " 'seoro apeul geosman',\n", + " 'saenggakhaessjiman',\n", + " 'geuraessdeon gieokmajeodo',\n", + " 'ijeneun sarajina bwa',\n", + " 'eojjeomyeon urin',\n", + " 'amureon jogeondo eopsi',\n", + " 'sarangman haesseoya',\n", + " 'haessna bwa',\n", + " 'meonjeo apeulgeol',\n", + " 'saenggakhaneun geosdo',\n", + " 'nanun modeun yaegideuldo',\n", + " 'geureohge tteonagana bwa',\n", + " 'eojjeomyeon urin',\n", + " 'amureon jogeondo eopsi',\n", + " 'sarangman haesseoya',\n", + " 'haessna bwa',\n", + " 'meonjeo apeulgeol',\n", + " 'saenggakhaneun geosdo',\n", + " 'nanun modeun yaegideuldo',\n", + " 'geureohge tteonagana bwa',\n", + " 'eojjeomyeon urin',\n", + " 'mianhan gamjeongdo eopsi',\n", + " 'seororeul tteonaya',\n", + " 'haessna bwa',\n", + " 'saranghaessdeon',\n", + " 'uriui chueokdeuldo',\n", + " 'johassdeon gieokmajeodo',\n", + " 'geureohge jinagana bwa',\n", + " 'english translation',\n", + " 'at some point, i stopped missing you',\n", + " 'at some point, i didn’t know if i even needed you',\n", + " 'so you left',\n", + " 'and we split ways like that',\n", + " 'maybe we had to prepare for a breakup',\n", + " 'without any emotions',\n", + " 'we thought about how we would hurt',\n", + " 'but even memories of that are disappearing',\n", + " 'i brought it upon myself',\n", + " 'something that couldn’t be undone',\n", + " 'i made everything so cruel',\n", + " 'i ended up admitting',\n", + " 'that it’ll all be the same',\n", + " 'when i said it was over',\n", + " 'we split apart',\n", + " 'maybe we had to prepare for a breakup',\n", + " 'without any emotions',\n", + " 'we thought about how we would hurt',\n", + " 'but even memories of that are disappearing',\n", + " 'maybe we had to love without any conditions',\n", + " 'thinking that i’ll be the first to hurt',\n", + " 'all the things we talked about',\n", + " 'it’s leaving just like that',\n", + " 'maybe we had to love without any conditions',\n", + " 'thinking that i’ll be the first to hurt',\n", + " 'all the things we talked about',\n", + " 'it’s leaving just like that',\n", + " 'maybe we had to leave each other',\n", + " 'without any sorry feelings',\n", + " 'our memories of love',\n", + " 'even our good memories',\n", + " 'it’s all passing just like that',\n", + " 'yeah, hey girl',\n", + " 'you know my name',\n", + " 'sensitive thug',\n", + " \"i'm a sensitive thug\",\n", + " \"yeah i'm sensitive\",\n", + " \"i'm a sensitive thug\",\n", + " \"i'm love\",\n", + " '액션영화를 봤어, 악당이 죽었어',\n", + " \"눈물을 흘렸어, cause i'm sensitive\",\n", + " \"i'm sensitive thug\",\n", + " '우리의 사랑은 아직도 불타고 있어',\n", + " \"cause i'm sensitive, i'm a sensitive thug\",\n", + " '오늘은 기념일 사랑하는 그녀에게',\n", + " '장미 100송이를 쏴 like brrrah',\n", + " \"cause i'm sensitive, i'm a sensitive thug\",\n", + " '약속시간에 좀 늦었어',\n", + " '그녀가 좀 섭섭해 했나봐, 웃어, baby',\n", + " \"i'm a sensitive thug\",\n", + " \"i'm a sensitive thug\",\n", + " \"i'm a sensitive thug\",\n", + " '피도 눈물도 없는 sensitive thug',\n", + " \"가끔 몰래 울어 cause i'm a sensitive thug\",\n", + " \"yeah, i'm a sensitive thug\",\n", + " '친구들 몰래 멜로 영화를 봐',\n", + " \"cause i'm a sensitive\",\n", + " '아직도 엄마한테 용돈받아',\n", + " '그래도 부끄럽지 않아',\n", + " \"i'm a sensitive thug\",\n", + " \"i'm a thug\",\n", + " 'b. 1. a. 4',\n", + " '숨이 멎을 것만 같아',\n", + " '사랑이 온 것만 같아',\n", + " '모르겠어 모르겠어',\n", + " '모르겠어 모르겠어',\n", + " '모르겠어 모르겠어',\n", + " 'like it like it like it',\n", + " 'drop it',\n", + " 'oh my beautiful target 헤이',\n", + " 'you zoom zoom heart like a rocket 호',\n", + " 'oh my beautiful target 헤이',\n", + " 'you zoom zoom heart like a rocket 호',\n", + " 'i like it like it like it',\n", + " 'i like it like it like it',\n", + " 'i like it like it like it',\n", + " '내 맘은 boom boom boom boom',\n", + " '너땜에 숨 숨 숨 숨',\n", + " '을 못쉬어 난 슬 슬 슬 슬쩍',\n", + " '다가가 너에게 빠져버렸어 어',\n", + " '내 스타일에 적합해',\n", + " '난 네게 반해서 허우적대',\n", + " '너와 함께라면 언제나 나',\n", + " '서울 뉴욕 로마 프라하',\n", + " 'oh my beautiful target 헤이',\n", + " 'you zoom zoom heart like a rocket 호',\n", + " 'oh my beautiful target 헤이',\n", + " 'you zoom zoom heart like a rocket 호',\n", + " 'i like it like it like it',\n", + " 'i like it like it like it',\n", + " 'i like it like it like it',\n", + " 'oh my beautiful target',\n", + " 'you zoom zoom my heart like a rocket',\n", + " '내 뜨거운 심장이 그대를 기다려요',\n", + " '미쳐버릴 것만 같아 i like it',\n", + " '녹아버릴 것만 같아',\n", + " '너 때문에 너 때문에',\n", + " '너 때문에 너 때문에',\n", + " '너 때문에 너 때문에',\n", + " 'oh oh i’m up &high',\n", + " '내 눈에 띄었어 넌 내 style yeah',\n", + " '더 이상은 내게 묻지도 마 날',\n", + " '놀리지 마 나 어떡하나',\n", + " '마른침이 고여온다 yeah',\n", + " 'ma target is you 날아가 후',\n", + " 'i’m like a robin hood',\n", + " 'what’s you gon’ make me do',\n", + " 'oh yes! sir!! gotta shoot!!',\n", + " 'oh my beautiful target',\n", + " 'you zoom zoom my heart like a rocket',\n", + " '내 뜨거운 심장이 그대를 기다려요',\n", + " 'oh my beautiful lady',\n", + " '난 너만 보여 나 어떡해',\n", + " '내 뜨거운 사랑을 그대여 받아줘요',\n", + " 'oh my beautiful target 헤이',\n", + " 'you zoom zoom heart like a rocket 호',\n", + " 'oh my beautiful target 헤이',\n", + " 'you zoom zoom heart like a rocket 호',\n", + " 'i like it like it like it',\n", + " 'i like it like it like it',\n", + " 'i like it like it like it',\n", + " 'come into 내 맘 닷 컴',\n", + " '아이디 패스워드 너의 luv',\n", + " '내 맘을 꼭 담아서',\n", + " 'i love you like a love song',\n", + " 'i like it like it like it',\n", + " 'i like it like it like it',\n", + " 'i like it like it like it',\n", + " 'come into 내 맘 닷 컴',\n", + " '아이디 패스워드 너의 luv',\n", + " '내 맘을 꼭 담아서',\n", + " 'i love you like a love song',\n", + " '뜨거운 사랑을 그대가 받아줘요',\n", + " 'i like it like it like it',\n", + " 'spread the love 반짝이게',\n", + " \"네게 보여 줄래 let's have a good time\",\n", + " '지금부터 더 신나게',\n", + " 'celebrate your happiness, celebrate your happiness',\n", + " \"come on let's take a ride\",\n", + " '꼭 해 줄 말이 있어',\n", + " '걱정 따윈 떨쳐 버리고',\n", + " '네 맘을 펼쳐봐',\n", + " '어제 생각은 마 이 밤을 느껴봐',\n", + " \"i'll show you how to rock baby\",\n", + " 'ooh, 노력 할 필요 없어 그냥 그저 이대로',\n", + " \"enjoy yourself, now let's get down, ooh...\",\n", + " 'spread the love 반짝이게',\n", + " \"네게 보여 줄래 let's have a good time\",\n", + " '지금부터 더 신나게',\n", + " 'celebrate your happiness, celebrate your happiness',\n", + " '기다려 온 tonight',\n", + " '리듬에 몸을 맡겨 버리고',\n", + " '바로 이 느낌이야',\n", + " 'oh let the groove get into you',\n", + " '어제 생각은 마 이 밤을 느껴봐',\n", + " \"i'll show you how to rock baby\",\n", + " 'ooh, 노력 할 필요 없어 그냥 그저 이대로',\n", + " \"enjoy yourself, now let's get down, ooh...\",\n", + " 'spread the love 반짝이게',\n", + " '네게 보여 줄래 have a good time',\n", + " '지금부터 더 신나게',\n", + " 'celebrate your happiness, celebrate your happiness',\n", + " 'sit back, enjoy the ride',\n", + " '맘 가는 대로 하면 돼',\n", + " '이젠 네 시간이야',\n", + " 'let love grow and last forever, ooh...',\n", + " 'spread the love 반짝이게 (oh)',\n", + " \"네게 보여 줄래 let's have a good time\",\n", + " '지금부터 더 신나게',\n", + " 'celebrate your happiness, celebrate your happiness (oh)',\n", + " 'free your mind',\n", + " \"i'll show you how to have a good time (show you how to have a good time)\",\n", + " 'celebrate your happiness, yeah',\n", + " \"i want you to shine, let's have a good time, yeah\",\n", + " 'ooh, have a good time',\n", + " 'ooh ooh ooh ooh...',\n", + " 'yeah, let it, let it shine',\n", + " 'free your, free your mind',\n", + " 'woo~ baby',\n", + " '멍하니 널 바라만 보게만 돼',\n", + " '마치 니가 내 여자가 맞는 건지 아닌지',\n", + " '니 어깨를 감싸고 너의 눈을 맞출때면',\n", + " 'i can’t control my feeling because of you',\n", + " 'you are so precious, oh my baby',\n", + " '누구에게도 이렇게 빠져본적이 없어',\n", + " 'i wanna make love with you',\n", + " 'i wanna make love with you',\n", + " '너를 더 알고 싶어서',\n", + " '아침해가 뜰 때 까지',\n", + " '너와 나 단둘이',\n", + " 'it’s gonna be a sweet night baby, i swear',\n", + " 'we’re making love all night baby it feels so right',\n", + " '너와 함께라면 내 기분은 막 날아가',\n", + " '한시라도 눈떼기 싫어 baby we making love',\n", + " '네게서 빠질 수 없어 we making love',\n", + " 'oh baby 너와 있는 이 시간에 난',\n", + " '나른하게 누워만 있고 싶어 my love is so true',\n", + " 'oh baby i will cherish your love all night yeah',\n", + " '내게서 빠져나오지 못하도록',\n", + " 'i wanna make love with you',\n", + " 'i wanna make love with you',\n", + " '너를 더 알고 싶어서',\n", + " '아침해가 뜰 때 까지',\n", + " '너와 나 단둘이',\n", + " 'it’s gonna be a sweet night baby, i swear',\n", + " '믿어줘 너 같은 여자 없다는',\n", + " '내 속삭임 you have to trust',\n", + " '너와 눈맞추는',\n", + " '순간 순간 들을 간직해 my love',\n", + " 'i wanna make love with you',\n", + " 'i wanna make love with you',\n", + " '너를 더 알고 싶어서',\n", + " '아침해가 뜰 때 까지',\n", + " '너와 나 단둘이',\n", + " 'it’s gonna be a sweet night baby, i swear',\n", + " 'all day, all day, all day~ no no, make love~',\n", + " 'make love, make love, yeah~',\n", + " 'we are, we are, we are',\n", + " 'we are, we are, we are',\n", + " '처음 알게 됐어 이렇게 연인도 아닌데',\n", + " '사람이 사람을 이만큼 좋아할 수 있단 걸',\n", + " 'you make me laugh 이 험하고 거친 세상에',\n", + " '우린 안식처야 내게 내게',\n", + " 'home sweet home, baby',\n", + " 'baby no matter where we are',\n", + " '항상 함께 일거야 we are',\n", + " \"'cause you make me strong\",\n", + " 'you don’t make me feel alone',\n", + " 'baby no matter whatever we do',\n", + " '더 빛나고 아름다울 거야',\n", + " \"'cause we're star\",\n", + " '항상 기억해 we have each other now',\n", + " 'we are, we are, we are',\n", + " 'we are, we are, we are',\n", + " 'we are, we are, we are',\n", + " 'we are, we are, we are',\n", + " 'ay, 청담 to 옥수 힘들었던 시간 지나',\n", + " '여기까지 왔지 성수 (hey)',\n", + " '우리의 찬란했던 20대 함께해준',\n", + " '내 fan, 내 staff, 내 fam 모두 thank you',\n", + " '고마운 사람들이 너무 많아',\n", + " '바닥친 내 자존감 올려준 너 말야',\n", + " '수백번을 말해도 해도 모자라',\n", + " '알잖아 우린 flower',\n", + " '너 없인 절대로 못 자라',\n", + " 'baby no matter where we are',\n", + " '변하지 않을 거야 we are',\n", + " '슬퍼하지마 언제나 함께일 테니까',\n", + " '다른 각자의 삶에서',\n", + " '함께 많은 걸 배웠어 사랑해',\n", + " '항상 기억해 we have each other',\n", + " 'we are, we are, we are',\n", + " 'we are, we are, we are',\n", + " 'we are, we are, we are',\n", + " 'we are, we are, we are',\n", + " '우리를 우리가 될 수 있도록',\n", + " '만들어줘서 고마운 마음 뿐이야 내겐',\n", + " '앞으로도 소중히 기억할게',\n", + " '늘 언제 어디에 있던지 우리',\n", + " 'we are, we are, we are (ooh...)',\n", + " 'we are, we are, we are (yeah, yeah)',\n", + " 'we are, we are, we are',\n", + " 'we are, we are, we are',\n", + " '너와 나와 우리 (me and you and we are)',\n", + " '너와 나와 우리 (me and you and we are)',\n", + " '너와 나와 우리 (me and you and we are)',\n", + " '너와 나와 우리',\n", + " 'we are heaven',\n", + " 'we are together',\n", + " 'we are love, we are love',\n", + " 'we are unending',\n", + " '(we are yours, yeah)',\n", + " 'hey guys, do you want to be cool?',\n", + " 'do you want to learn how to',\n", + " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", + " 'so what u gonna do',\n", + " '쉿, it’s wonder girls',\n", + " 'what’s my name? (l.i.m) wonder girls 막내 (here i am)',\n", + " '내가 혜림이다 혹시 모르면 테레비 봐',\n", + " '그래도 모르면 이거나 적어라 조심히 받아라 옛다 내 랩이다',\n", + " '\"tell me\" 누가 나처럼 \"so hot\", \"nobody\"',\n", + " '왜 불만 있어? 뭘 봐',\n", + " '모두 잘 알 듯 나 뒤늦게 합류',\n", + " '그래서 어쩌라고 솔직히 말해 봐 혜림이 멋져 라고',\n", + " '다른 여자 랩퍼 솔직히 싱겁네',\n", + " '착한 척만 하기도 이젠 피곤해',\n", + " '유빈언니도 내 랩 듣고 이러네',\n", + " '난 니가 얌전하고 착한 줄만 알았지',\n", + " '한국말로 랩하고 i can rap in english',\n", + " '我会唱中文饶舌 speaking foreign languages',\n", + " 'i sing, i dance, talking 쉿 about me?',\n", + " 'it ain’t cool, shut up and dance boy',\n", + " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", + " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", + " 'so whatchu gonna do? so whatchu gonna do?',\n", + " 'shh, it’s still wonder girls',\n", + " 'you foxes acting like kings in the jungle, watch out!',\n", + " 'the tiger is back for real',\n", + " 'we wonder girls we back to spread the wonder',\n", + " '현재 우리 전적 보자면 한국에서 먼저',\n", + " 'triple crown 먹고 went to america',\n", + " 'billboard hot 100 진입 now we’re movie stars',\n", + " '근데 뭐라구 감히 누가 갔다구',\n", + " '다시 한 번 말해 봐 없지 깡다구',\n", + " '내 이름과 얼굴 전 세계로 나가',\n", + " '급이 달라 전세기로 날아',\n", + " '내가 노는 물 넌 마시면 탈 나',\n", + " '맛있다고 또 먹어 또 먹음 배탈 나',\n", + " '한국말로 랩하고 i can rap in english',\n", + " '我会唱中文饶舌 speaking foreign languages',\n", + " 'i sing, i dance, talking 쉿 about me?',\n", + " 'it ain’t cool, shut up and dance boy',\n", + " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", + " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", + " 'so whatchu gonna do? so whatchu gonna do?',\n", + " 'shh, 쉿, stop shushing me',\n", + " '난 하고 싶은대로 할 거야',\n", + " '이 쌩뚱맞은 반주처럼 아무도 예상하지 못하게',\n", + " '내 비행을 막을 순 없어 because i am a wonder girl',\n", + " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", + " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", + " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", + " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", + " '달이 차고 내 마음도 차고',\n", + " '이대로 담아 두기엔 너무 안타까워 너를 향해 가는데',\n", + " '달은 내게 오라 손짓하고',\n", + " '귓속에 얘길 하네 지금 이 순간이 바로 그 순간이야',\n", + " '제일 마음에 드는 옷을 입고 노란 꽃 한 송이를 손에 들고',\n", + " '널 바라 보다 그만 나도 모르게 웃어버렸네',\n", + " '이게 아닌데 내 마음은 이게 아닌데',\n", + " '널 위해 준비한 오백가지 멋진 말이 남았는데',\n", + " '사랑 한다는 그 흔한 말이 아니야',\n", + " '그 보단 더욱더 로맨틱하고 달콤한 말을 준비했단 말이야',\n", + " '숨이 차고 밤 공기도 차고',\n", + " '두 눈을 감아야만 네 모습이 보여 걸을 수가 없는데',\n", + " '구름 위를 걷는다는 말이 과장이 아니란 걸 알게 됐어',\n", + " '널 알게 된 후부터 나의 모든 건 다 달라졌어',\n", + " '이게 아닌데 내 마음은 이게 아닌데',\n", + " '널 위해 준비한 오백가지 멋진 말이 남았는데',\n", + " '사랑한다는 그 흔한 말이 아니야',\n", + " '그 보단 더욱더 로맨틱하고 달콤한 말을 준비했단 말이야',\n", + " '나를 봐줘요 내 말을 들어봐 줘요',\n", + " '아무리 생각을 하고 또 해도 믿어지지 않을 만큼 사랑해',\n", + " 'translation',\n", + " 'the moon seems cold, so is my heart',\n", + " 'to leave it like this',\n", + " 'i feel it could be so regrettable',\n", + " 'i find my way toward you',\n", + " 'the moon says, gestures me to come towards it',\n", + " 'and it whispers to me',\n", + " 'right now is the moment you wanted',\n", + " 'i put on my favorite clothes',\n", + " 'i take a single yellow rose in my hand while i stared at you',\n", + " 'without me knowing, i gave out a laugh',\n", + " 'this wasn’t it',\n", + " 'this wasn’t what my heart had planned',\n", + " 'for you the things i’ve prepared, i have over 500 cool things to say',\n", + " 'i love you, not something cheesy like that',\n", + " 'it is more, i’ve prepared something romantic and sweet',\n", + " 'my breath seems cool, so does the breeze outside',\n", + " 'only when i close both of my eyes i see you',\n", + " 'but i can’t walk blindfolded',\n", + " 'the phrase “feels like walking on a cloud”',\n", + " 'i knew it wasn’t just a metaphor the moment i saw you',\n", + " 'this isn’t it, this wasn’t what my heart had planned',\n", + " 'for you, the things i’ve prepared, i have over 500 cool things to say to you',\n", + " '“i love you,” it isn’t something so cheesy like that',\n", + " 'it is more, i’ve prepared something romantic and sweet',\n", + " 'do look at me, do listen to me',\n", + " 'no matter how many times i think about it, over and over again to where',\n", + " 'i can’t believe it exists, that’s how much i love you',\n", + " 'credit:',\n", + " 'translation: twirly @ youtube.com',\n", + " 'korean original',\n", + " '한 없이 웃기만 하네요 그녀도',\n", + " '아무렇지 않게 시간은',\n", + " '그댈 잡고 또 흘러가네요',\n", + " '꿈에 그대와 손을 잡고 함께하죠',\n", + " '잔인하게 난 해가 뜨면',\n", + " '인사를 하죠 베갤 적시며',\n", + " 'oh 너와 나 같은 하늘 아래 있어도',\n", + " '만날 순 없지만 나를 믿어줘',\n", + " 'i’ll be there for you',\n", + " '기다려 지금 너에게로 갈 테니까',\n", + " '어디에 있건 갈 테니까',\n", + " 'wait for me hey 시간아 더 빨리 가',\n", + " '기다려 너 있는 곳으로 갈 테니까',\n", + " '시간을 달려 갈 테니까 wait for me yeah',\n", + " '그녀에게 내 맘이 닿을 수 있도록',\n", + " '시간아 가라 가라 더 빨리',\n", + " '시간아 가라 가라 그녀에게',\n", + " '내가 닿을 수 있도록',\n", + " '머리에 아무것도 안 담겨',\n", + " '생각에 눈이 감겨',\n", + " '한 숨을 뱉고 내 두 손',\n", + " '머리 위에서 깍지 잡혀',\n", + " '다 거기서 거긴 듯해',\n", + " '내 삶이 반으로 접힌 듯해',\n", + " '꿈에 아름다운 네 모습',\n", + " '아직도 심장이 멈춘 듯 해',\n", + " '눈부신 햇살 아래',\n", + " '너와 얼굴을 마주하고',\n", + " '말하고 싶어 지금의 날',\n", + " '살게 해줘서 고맙다고',\n", + " '그리웠어 목소리 표정',\n", + " '가녀린 숨결까지도',\n", + " '이제 어디 안가 곁에 있을게',\n", + " '세상이 끝나는 순간까지도',\n", + " 'oh 너와 나 같은 하늘 아래 있어도',\n", + " '만날 순 없지만 나를 믿어줘',\n", + " 'i’ll be there for you',\n", + " '기다려 지금 너에게로 갈 테니까',\n", + " '어디에 있건 갈 테니까',\n", + " 'wait for me hey 시간아 더 빨리 가',\n", + " '기다려 너 있는 곳으로 갈 테니까',\n", + " '시간을 달려 갈 테니까 wait for me yeah',\n", + " '그녀에게 내 맘이 닿을 수 있도록',\n", + " '시간아 가라 가라 더 빨리',\n", + " '시간아 가라 가라 그녀에게',\n", + " '내가 닿을 수 있도록',\n", + " 'time passed and the spring flowers have bloomed',\n", + " '추웠던 날들을 보내 기억해',\n", + " '난 너에게만 속해',\n", + " 'i can only breathe when i’m next to you',\n", + " '준비됐어 너 하나면 족해',\n", + " 'i ain’t gonna leave 나 약속해',\n", + " '기다려 (기다려) 이제 우린 영원할 테니까',\n", + " '(and i’m coming for you, baby)',\n", + " '네가 없으면 난 안되니까 (yeah)',\n", + " 'wait for me hey 시간아 더 빨리 가',\n", + " '기다려 너 있는 곳으로 갈 테니까',\n", + " '시간을 달려 갈 테니까 wait for me yeah',\n", + " '그녀가 날 기억할 수 있도록',\n", + " '시간아 가라 가라 더 빨리',\n", + " 'english translation',\n", + " 'she keeps smiling on and on',\n", + " 'as if it’s nothing, time holds onto you as it ticks away',\n", + " 'in my dreams, i’m with you as i hold your hand',\n", + " 'but cruelly, i say goodbye',\n", + " 'when the sun rises',\n", + " 'as my pillow gets wet',\n", + " 'oh you and me, we’re under the same sky',\n", + " 'but we can’t meet, but believe in me',\n", + " 'i’ll be there for you',\n", + " 'wait (wait) because i’ll go to you right now',\n", + " 'wherever you are, i’ll go',\n", + " 'wait for me, hey, time is ticking faster',\n", + " 'wait (wait) because i’ll go to you right now',\n", + " 'i’ll run against time and go to you, wait for me yeah',\n", + " 'so that my heart can reach her',\n", + " 'time go faster',\n", + " 'time go to her',\n", + " 'so i can reach her',\n", + " 'i can’t put anything in my head',\n", + " 'my eyes close at the thought of you',\n", + " 'i let out a sigh',\n", + " 'and put my hands behind my head',\n", + " 'everything seems the same',\n", + " 'it’s like my life folded in half',\n", + " 'you still look beautiful in my dreams',\n", + " 'it’s like my heart stopped',\n", + " 'i want to look into your face',\n", + " 'under the dazzling sunlight',\n", + " 'and tell you, thank you',\n", + " 'for making me live as the me right now',\n", + " 'i missed you, your voice',\n", + " 'your face, even your soft breathing',\n", + " 'i won’t go anywhere now, i’ll be by your side',\n", + " 'even until the moment the world ends',\n", + " 'oh you and me, we’re under the same sky',\n", + " 'but we can’t meet, but believe in me',\n", + " 'i’ll be there for you',\n", + " 'wait (wait) because i’ll go to you right now',\n", + " 'wherever you are, i’ll go',\n", + " 'wait for me, hey, time is ticking faster',\n", + " 'wait (wait) because i’ll go to you right now',\n", + " 'i’ll run against time and go to you, wait for me yeah',\n", + " 'so that my heart can reach her',\n", + " 'time go faster',\n", + " 'time go to her',\n", + " 'so i can reach her',\n", + " 'time passed and the spring flowers have bloomed',\n", + " 'i’m letting go of the cold days, i remember',\n", + " 'i’m only inside of you',\n", + " 'i can only breathe when i’m next to you',\n", + " 'i’m ready for this, you alone are enough for me',\n", + " 'i ain’t gonna leave, i promise you',\n", + " 'wait (wait) because we’re gonna be forever now',\n", + " '(and i’m coming for you, baby)',\n", + " 'because i can’t go on without you (yeah)',\n", + " 'wait for me hey time go faster',\n", + " 'wait because i’ll go to you right now',\n", + " 'i’ll run against time and go to you, wait for me yeah',\n", + " 'so she can remember me',\n", + " 'time go faster',\n", + " 'breathe in',\n", + " 'breathe in and out and in and out and out',\n", + " 'breathe in',\n", + " 'breathe in and out and (out and out)',\n", + " 'breathe in',\n", + " 'breathe in and out and in and out and out',\n", + " 'breathe in',\n", + " 'breathe in and out and (out and out)',\n", + " '호흡은 비정상',\n", + " '심박수 비정상',\n", + " '시력은 괜찮고',\n", + " '혈압도 비정상',\n", + " '이렇게 뛰는데 정상일 리 없지',\n", + " '이렇게 뛰다가 저 세상 가겠지',\n", + " '지금 뛰는 게 난지',\n", + " '나인지 심장인지',\n", + " '파 파파파파파파팟',\n", + " '막 나를 앞서가네',\n", + " '너 땜에 너 땜에',\n", + " '내 맘이 심장이',\n", + " '내 숨이 숨이 숨이 숨이',\n", + " '(학 학)',\n", + " 'breathe in and out',\n", + " 'out of control',\n", + " 'breathe in and out',\n", + " 'breathe in and out, and out',\n", + " '웬만한 thrill에도 무덤덤했는데',\n", + " '나 치느님을 봐도 끄떡없었는데',\n", + " '들었다 놨다 놨다 들었다',\n", + " 'breathe in and out, and out',\n", + " 'breathe in',\n", + " 'breathe in and out, and in and out, and out',\n", + " 'breathe in',\n", + " 'breathe in and out, and (out and out)',\n", + " '걷잡을 수 없이',\n", + " '날뛰는 heart rate',\n", + " '이럴 줄 몰랐어',\n", + " 'oh i’m so overrated',\n", + " '자, 당겨졌어 trigger',\n", + " '시작 전에 breathe out',\n", + " '심장보다 빨리 달려',\n", + " 'speed up and catch you up',\n", + " '지금 뛰는 게 난지',\n", + " '나인지 심장인지',\n", + " '파 파파파파파파팟',\n", + " '막 나를 앞서가네',\n", + " '너 땜에 너 땜에',\n", + " '내 맘이 심장이',\n", + " '내 숨이 숨이 숨이 숨이',\n", + " '(학 학)',\n", + " 'breathe in and out',\n", + " 'out of control',\n", + " 'breathe in and out',\n", + " 'breathe in and out, and out',\n", + " '웬만한 thrill에도 무덤덤했는데',\n", + " '나 치느님을 봐도 끄떡없었는데',\n", + " '들었다 놨다 놨다 들었다',\n", + " 'breathe in and out, and out',\n", + " '아무 약도 안 드네',\n", + " '심각한 거 같아',\n", + " '아무래도 널 봐야',\n", + " 'good for my mind, my soul, my heart',\n", + " '(breathe out)',\n", + " 'breathe in and out',\n", + " 'out of control',\n", + " 'breathe in and out',\n", + " 'breathe in and out, and out',\n", + " '웬만한 thrill에도 무덤덤했는데',\n", + " '나 치느님을 봐도 끄떡없었는데',\n", + " '들었다 놨다 놨다 들었다',\n", + " 'breathe in and out, and out',\n", + " 'breathe in',\n", + " 'breathe in and out and in and out and out',\n", + " 'breathe in',\n", + " 'breathe in and out and (out and out)',\n", + " '다른 공간 같은 하늘 아래',\n", + " '마주쳤던 우리',\n", + " '알 수 없는 공기',\n", + " '가득 채웠던 기운들이',\n", + " '눈을 감으며 너를 꿈꾸며 빠져들어',\n", + " '스며들어 한걸음 너에게',\n", + " '숨을 내쉬며 천천히 다가갈게',\n", + " '내 손을 잡아 forever my love',\n", + " '너의 미소만이 나를 움직여',\n", + " '기분 좋은 하루를 시작하는 이유',\n", + " '너의 모습들이 나를 웃게 해',\n", + " '어딜 가도 너와 함께 있는 기분',\n", + " 'if it’s a dream',\n", + " '꿈에서 깨지 않길 바라',\n", + " '행복한 기억은 슬플 때 기억하라고 있는 건데',\n", + " '알 수 없는 내일이라 해도 너와 함께면 돼',\n", + " '저 끝까지 달려 see the sunrise, you and me',\n", + " '어딜 가도 너와 함께 있는 기분',\n", + " '그게 내가 살아가는 이유',\n", + " '지친 하루에 힘든 날들에 지금처럼',\n", + " '다가와 줘 내 맘을 안아줘',\n", + " '매일 기록해 너와의 시간들을',\n", + " '너를 꼭 담아 forever my love',\n", + " '너의 미소만이 나를 움직여',\n", + " '기분 좋은 하루를 시작하는 이유',\n", + " '너의 모습들이 나를 웃게 해',\n", + " '어딜 가도 너와 함께 있는 기분',\n", + " '숨을 쉬어도 너와 함께 있는 기분',\n", + " '내 맘속에 네가 살고 있는 이유',\n", + " '이 행복이 가끔은 겁이 나 all mine',\n", + " '눈 뜨면 아침이 널 데려갈까 afraid',\n", + " '영원이라는 헛된 꿈들은 나를 깨워',\n", + " '숨어있던 불안한 마음을',\n", + " '알려주지만 난 포기할 수 없어',\n", + " '내 손을 꼭 잡아 you are my love',\n", + " '너의 미소만이 나를 움직여',\n", + " '기분 좋은 하루를 시작하는 이유',\n", + " '너의 모습들이 나를 웃게 해',\n", + " '어딜 가도 너와 함께 있는 기분',\n", + " '숨을 쉬어도 너와 함께 있는 기분',\n", + " '내 맘속에 네가 살고 있는 이유',\n", + " '이 행복이 가끔은 겁이 나 all mine',\n", + " '눈뜨면 아침이 널 데려갈까 afraid',\n", + " 'english translation',\n", + " 'in different places, under the same sky',\n", + " 'we came together',\n", + " 'felt like a mysterious air',\n", + " 'was all around us',\n", + " 'i close my eyes, dreaming of you, falling for you',\n", + " 'seeping into you, taking a step toward you',\n", + " 'i’ll let out a breath and slowly go to you',\n", + " 'hold my hand, forever my love',\n", + " 'only your smile moves me',\n", + " 'it’s the reason i start my day',\n", + " 'all of you makes me smile',\n", + " 'wherever i go, feels like i’m with you',\n", + " 'if it’s a dream',\n", + " 'i hope i never wake up',\n", + " 'happy memories are there to remember when you’re sad',\n", + " 'even if tomorrow is unknown, it’ll be ok if i’m with you',\n", + " 'let’s go till the end, see the sunrise, you and me',\n", + " 'wherever i go, feels like i’m with you',\n", + " 'that’s the reason i live',\n", + " 'when the days are tiring and long',\n", + " 'come to me like you are now, embrace my heart',\n", + " 'i wanna record each moment with you',\n", + " 'placing you in each one, forever my love',\n", + " 'only your smile moves me',\n", + " 'it’s the reason i start my day',\n", + " 'all of you makes me smile',\n", + " 'wherever i go, feels like i’m with you',\n", + " 'even when i breathe, feels like i’m with you',\n", + " 'it’s the reason you live in my heart',\n", + " 'sometimes, i get scared of this happiness, all mine',\n", + " 'what if the morning takes you away, afraid',\n", + " 'pointless dreams of eternity wake me up',\n", + " 'the hidden anxieties tell me',\n", + " 'but i can’t give you up',\n", + " 'so hold my hand tight, you are my love',\n", + " 'only your smile moves me',\n", + " 'it’s the reason i start my day',\n", + " 'all of you makes me smile',\n", + " 'wherever i go, feels like i’m with you',\n", + " 'even when i breathe, feels like i’m with you',\n", + " 'it’s the reason you live in my heart',\n", + " 'sometimes, i get scared of this happiness, all mine',\n", + " 'what if the morning takes you away, afraid',\n", + " '손끝에 쥔 light, i want more oh, oh',\n", + " '두 눈을 떠 inside out 솔직한 널 보여',\n", + " '두 눈 감고 feels like 익숙한 곳 dreams i',\n", + " 'now i can go breath like',\n", + " '이대로 go scream like',\n", + " 'i got a feeling 소리쳐 louder',\n", + " '이게 바로 나의 fantasy야',\n", + " 'i got a felling i know you want it',\n", + " '원한다면 언제든 everyday야',\n", + " '지겨운 건 shit 이제 그만 stop it',\n", + " \"i don't care, oh, oh\",\n", + " \"i'll be there, oh, oh\",\n", + " 'i got a feeling 소리쳐 louder',\n", + " '미쳐라 널 위한 melody야',\n", + " \"i don't need to say anymore, oh, oh\",\n", + " '다가와 더 priceless 진짜 원하는 그대로',\n", + " '두 눈 감고 feels like 익숙한 곳 dreams i',\n", + " 'now i can go breath like',\n", + " '이대로 go scream like',\n", + " 'i got a feeling 소리쳐 louder',\n", + " '이게 바로 나의 fantasy야',\n", + " 'i got a felling i know you want it',\n", + " '원한다면 언제든 everyday야',\n", + " '지겨운 건 shit 이제 그만 stop it',\n", + " \"i don't care, oh, oh\",\n", + " \"i'll be there, oh, oh\",\n", + " 'i got a feeling 소리쳐 louder',\n", + " '미쳐라 널 위한 melody야',\n", + " '떨려오는 목소리 그 무대위의 내가',\n", + " \"i can't control, i see the light to the star\",\n", + " '익숙한 곳 끝이 없는 노래',\n", + " \"너 원하고 있잖아 i can't control\",\n", + " '이대로 go scream like',\n", + " 'i got a feeling 소리쳐 louder',\n", + " '이게 바로 나의 fantasy야',\n", + " 'i got a felling i know you want it',\n", + " '원한다면 언제든 everyday야',\n", + " '지겨운 건 shit 이제 그만 stop it',\n", + " \"i don't care, oh, oh\",\n", + " \"i'll be there, oh, oh\",\n", + " 'i got a feeling 소리쳐 louder',\n", + " '미쳐라 널 위한 melody야',\n", + " '사람들 나 보고 what a player',\n", + " '여기도 거기도 full of haters',\n", + " 'i’ll live my way',\n", + " 'and i’ll be like',\n", + " 'da dada da dada say what',\n", + " '매일 똑같은 하루 난 지쳐',\n", + " '거짓뿐인 삶 don’t look back',\n", + " 'can’t stop it',\n", + " 'no i can’t stop it what',\n", + " '모든 게 날 미치게 만들어',\n", + " '숨이 막혀 벗어나고 싶어',\n", + " '더 이상은 못 참아 나 이젠',\n", + " 'do it like do it like',\n", + " 'we only live once',\n", + " 'wolo wolo',\n", + " 'wolo wolo',\n", + " 'imma show you',\n", + " 'we only live once',\n", + " 'imma show you',\n", + " 'we only live once',\n", + " 'yeah',\n", + " 'do it do it',\n", + " \"we don't give a what so do it\",\n", + " '오늘 밤 끝까지 달려',\n", + " 'we movin’ on it',\n", + " '이제 everyday and any day',\n", + " \"don't have to do that work\",\n", + " '우리 마음대로 달려볼까',\n", + " '멈추지 말아 skrrt',\n", + " '원하지 않아 그냥 내버려 둬',\n", + " '그냥 hustling and hustling',\n", + " '한 번뿐인 인생',\n", + " 'imma do it 억제하는 널 잘 봐',\n", + " 'let me do it',\n", + " '중요한 걸 잊지마 oh no',\n", + " '모든 게 날 미치게 만들어',\n", + " '숨이 막혀 벗어나고 싶어',\n", + " '더 이상은 못 참아 나 이젠',\n", + " 'do it like do it like',\n", + " 'we only live once',\n", + " 'wolo wolo',\n", + " 'wolo wolo',\n", + " 'imma show you',\n", + " 'we only live once',\n", + " 'imma show you',\n", + " 'we only live once',\n", + " 'we only live once',\n", + " 'we only live once',\n", + " '설익은 나 점점 붉어져 뜨거워져',\n", + " '시간이 지날수록 달달하고',\n", + " '혀끝에 남은 새콤함은',\n", + " '밤새 널 잊지 못하게 해',\n", + " 'so sweet answer like this',\n", + " 'so sweet answer like this',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " 'so sweet answer like this',\n", + " 'so sweet answer like this',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " '씹히는 딸기씨처럼',\n", + " '예상치 못한 입안 즐거움은 너와 나',\n", + " '날 씻기는 단비처럼',\n", + " '조심스레 살며시 너',\n", + " '스며들어와 baby baby',\n", + " '입이 닿을 때 난 녹아버려',\n", + " '내가 닿을 때 넌 놓아버려',\n", + " '아무도 모르게 이렇게 훔치고 싶어',\n", + " 'i wanna steal you baby',\n", + " 'i wanna eat you up baby',\n", + " 'so sweet answer like this',\n", + " 'so sweet answer like this',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " 'so sweet answer like this',\n", + " 'so sweet answer like this',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " '그대를 만나고 바라보고',\n", + " '내 전불 맡기게 돼버린',\n", + " '이 모든 것이 꿈인 듯이',\n", + " '기적과도 같은 선물인 걸',\n", + " '그 긴 나의 어두움 속에',\n", + " '따스히 날 비춰주던',\n", + " '그대에게나 넘치는 이 맘',\n", + " '모두 담아 보낼게',\n", + " 'so sweet answer like this',\n", + " 'so sweet answer like this',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " 'so sweet answer like this',\n", + " 'so sweet answer like this',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " 'like a strawberry',\n", + " '복잡한 이 도시를 깨워 회색 빛 거리',\n", + " '저 신호등 아래 어깨를 익숙하게 흔들어',\n", + " '어깨를 빨리 더 빨리',\n", + " '손 끝의 울림 더 깊이 더 깊이',\n", + " 'i just want to feel good',\n", + " 'all night long oh',\n", + " '이 순간이 good thing good thing',\n", + " '날 보는 너 good thing good thing',\n", + " 'good thing good thing',\n", + " '이 시간은 good thing good thing',\n", + " 'good thing good thing babe',\n", + " '더 가볍게 good thing good thing',\n", + " 'good thing good thing',\n", + " '더 아래로 이 리듬에',\n", + " '밤새도록 너와 함께 더 신나게',\n", + " '우린 밤새 놀아 together 우린',\n", + " '터지는 마음에 밤새 뜨거워진 공기',\n", + " '음악은 널 채운 treasure',\n", + " '내 마음의 treasure',\n", + " '느끼는 데로 조금 더 신나게 널 멈추지 마',\n", + " 'give me what you got',\n", + " 'because you know that i can take it',\n", + " 'give me what you got',\n", + " '여긴 나의 place space ship',\n", + " 'whipping cream 가볍게 up to the sky',\n", + " '나아가 flex flex one’s muscles',\n", + " 'step up if you can keep up',\n", + " 'keep up with me',\n", + " '숨 크게 한 번 쉬고 들어가자 really deep',\n", + " '시끄럽게 춤을 추는 거야 daily',\n", + " 'until we get that good thing babe',\n", + " 'i just want to feel good',\n", + " 'all night long oh',\n", + " '이 순간이 good thing good thing',\n", + " '날 보는 너 good thing good thing',\n", + " 'good thing good thing',\n", + " '이 시간은 good thing good thing',\n", + " 'good thing good thing babe',\n", + " '더 가볍게 good thing good thing',\n", + " 'good thing good thing',\n", + " '더 아래로 이 리듬에',\n", + " '밤새도록 너와 함께 더 신나게',\n", + " 'i just want to feel good',\n", + " 'all night long oh',\n", + " '이 순간이 good thing good thing',\n", + " '날 보는 너 good thing good thing',\n", + " '이 시간은 good thing good thing',\n", + " 'good thing good thing babe',\n", + " '더 가볍게 good thing good thing',\n", + " '더 아래로 이 리듬에',\n", + " '밤새도록 너와 함께 더 신나게',\n", + " '더 신나게 더 신나게 더 신나게',\n", + " 'can you keep that secret?',\n", + " '(yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah)',\n", + " 'secret',\n", + " '(yeah, yeah, yeah, yeah, yeah, yeah)',\n", + " 'tell me',\n", + " '니 옆에 있는 남자',\n", + " '걔넨 빈 깡통이야 no, no, no (no)',\n", + " '내 점퍼 입고 나와',\n", + " \"i'ma 'bout to jump off with you, you, you (you)\",\n", + " '니 친구한테 말해',\n", + " '오늘 니 마음 도난당했다고 oh girl (oh girl)',\n", + " '너와 나 너와 나 둘이만',\n", + " 'we can go slow',\n", + " '(ay)',\n", + " '파격적인 몸매',\n", + " '가짜들과는 비교할게 nothing',\n", + " '오늘 밤에는 party',\n", + " \"너와 나 빼곤 no one's invited\",\n", + " '비밀로 로 로 로',\n", + " 'keep it low, low, low',\n", + " '밤공기에 설레는 이 밤',\n", + " '알아가자 너와 나 like',\n", + " '너의 향수 chocolate (chocolate)',\n", + " 'skinny jeans with high heels',\n", + " 'wanna get to know ya (oh)',\n", + " 'tell me',\n", + " 'can you keep that secret?',\n", + " '움직여봐 baby',\n", + " '오늘 다 보여줄게 boy (boy)',\n", + " 'can you keep that secret?',\n", + " '다가와 내 곁에',\n", + " '데려가 줘 아무도 찾지 않게',\n", + " 'can you keep that secret?',\n", + " '(nobody gotta know ya, nobody gotta know)',\n", + " 'can you keep that secret?',\n", + " '(nobody gotta know ya, nobody gotta know no no)',\n", + " 'can you keep that secret?',\n", + " '(nobody gotta know ya, nobody gotta know)',\n", + " 'can you keep that secret?',\n", + " '(nobody gotta know ya, nobody gotta know no, no)',\n", + " '다가와 줘 천천히',\n", + " '밤은 아직 젊어 boy (skrrt)',\n", + " '집에 가기 싫은 밤이야',\n", + " 'wanna get to know you more (ya)',\n", + " '니 곁에 앉아 아무 생각 없이 wanna ride bae',\n", + " ...]},\n", + " 'data': ['yes, i’m in love',\n", + " '아무 말 없이 있을 때',\n", + " '그 때 난',\n", + " 'yes, you’re in love',\n", + " '아무 표정이 없을 때',\n", + " '딱히 억지로 뭔가를 안 해도',\n", + " 'we got the fire',\n", + " '정적 그 안에서 타올라',\n", + " 'we gonna fire (yeah, yeah, yeah)',\n", + " '매 순간마다 커져 가',\n", + " '터질 듯한 이 느낌',\n", + " 'deep, deep, deep in love',\n", + " '눈빛으로 말하고 있어',\n", + " '깊 깊 깊어져',\n", + " '자연스럽게 빠져들어',\n", + " 'give, give, give me love',\n", + " '말 없이도 난 다 알아',\n", + " '(deep, deep, deep in love)',\n", + " 'i know what you want',\n", + " 'and you know what i want',\n", + " 'it’s love',\n", + " 'love',\n", + " 'love',\n", + " 'yes, i’m in love',\n", + " '그저 손만 닿아 있을 때',\n", + " '그 때 난',\n", + " 'yes, you’re in love',\n", + " '그저 편하게 누운 채',\n", + " '서로 바라보고 있기만 해도',\n", + " 'we got the fire',\n", + " '고요함 속 뜨거운 외침 (yeah, yeah, yeah)',\n", + " 'we gonna fire',\n", + " '매 순간마다 커져 가',\n", + " '터질 듯한 이 느낌',\n", + " 'deep, deep, deep in love',\n", + " '눈빛으로 말하고 있어',\n", + " '깊 깊 깊어져',\n", + " '자연스럽게 빠져들어',\n", + " 'give, give, give me love',\n", + " '말 없이도 난 다 알아',\n", + " '(deep, deep, deep in love)',\n", + " 'i know what you want',\n", + " 'and you know what i want',\n", + " 'it’s love',\n", + " 'oh, 아마도 끝이 없이 계속될 거야',\n", + " '서로를 향한 발걸음은',\n", + " 'deep, deep, deep in love',\n", + " '눈빛으로 말하고 있어',\n", + " '깊 깊 깊어져',\n", + " '자연스럽게 빠져들어',\n", + " 'give, give, give me love',\n", + " '말 없이도 난 다 알아',\n", + " '(deep, deep, deep in love)',\n", + " 'i know what you want',\n", + " 'and you know what i want',\n", + " 'it’s love',\n", + " 'deep, deep, deep in love',\n", + " '오렌지 빛 저녁 노을이 물들 때',\n", + " '왠지 니가 너무 보고 싶어',\n", + " '내 낡은 보드를 타고 달릴 때',\n", + " '왠지 너의 숨결 부는 것 같아',\n", + " 'touch my body',\n", + " \"except you there ain't nobody\",\n", + " 'oh honey now touch my body',\n", + " \"except you there ain't nobody\",\n", + " 'eh break down',\n", + " 'baby 나 너의 update 궁금할 때',\n", + " '생각나 너의 좋은 perfume',\n", + " \"i'm so in love\",\n", + " '오늘 밤 널 만나러 가는 길에',\n", + " '널 닮은 예쁜 꽃을 주고 싶어',\n", + " 'touch my body',\n", + " \"except you there ain't nobody\",\n", + " 'oh honey now touch my body',\n", + " \"except you there ain't nobody\",\n", + " 'eh break down',\n", + " '넌 나를 태워 너무 좋아 미워',\n", + " '가끔 너땜에 미치는 날 알잖아',\n", + " 'you are the best',\n", + " '나는 oh oh 후딜 입은 니 모습',\n", + " 'oh oh 어지러워',\n", + " '내 방에 침댈 주고 싶어',\n", + " '내 모둘 주고 싶어',\n", + " '솔직히 널 보고 싶어',\n", + " \"baby you know that you're my world\",\n", + " '너를 원한다고 하면',\n", + " '넌 뭐라고 말할까',\n", + " 'where you at what you doing',\n", + " 'baby come inside',\n", + " '끝없이 생각나 잠이 오질 않는걸',\n", + " '오늘 밤 너와 나 만나자',\n", + " 'oh baby oh baby oh baby',\n", + " 'touch my body',\n", + " \"except you there ain't nobody\",\n", + " 'oh honey now touch my body',\n", + " \"except you there ain't nobody\",\n", + " 'eh',\n", + " \"i'm so in love\",\n", + " \"touch my body ain't nobody\",\n", + " \"except you there ain't nobody\",\n", + " 'touch my body',\n", + " 'oh honey now touch my body',\n", + " \"except you there ain't nobody\",\n", + " 'eh break down',\n", + " 'you worth it, you perfect',\n", + " 'deserve it, just work it',\n", + " '넌 귀티나 귀티',\n", + " '또 pretty야 pretty',\n", + " '빛이나 빛이 넌 진리이자 이치',\n", + " '혹시 누가 너를 자꾸 욕해 욕해',\n", + " \"tell 'em you're my lady\",\n", + " '가서 전해 전해',\n", + " '딴 놈들이 뭐라건',\n", + " '이 세상이 뭐라건',\n", + " '넌 내게 최고 너 그대로',\n", + " '절대 쫄지 말아',\n", + " '누가 뭐래도 넌 괜찮아 alright',\n", + " '강해 너는 말야',\n", + " 'you say yes or no, yes or no',\n", + " '20세기 소녀들아',\n", + " 'live your life',\n", + " 'live your life come on baby',\n", + " '21세기 소녀들아',\n", + " \"you don't mind\",\n", + " \"you don't mind that new lady\",\n", + " '말해 너는 강하다고',\n", + " '말해 넌 충분하다고',\n", + " 'let you go, let you go, let you go',\n", + " 'let it go oh',\n", + " 'all my ladies put your hands up',\n", + " '21세기 소녀',\n", + " 'hands up',\n", + " 'all my ladies put your hands up',\n", + " 'now scream',\n", + " '너 지나가네 남자들이 say',\n", + " 'oh yeah 쟤 뭐야 대체 누구야',\n", + " '넋이 나가네 여자들이 say',\n", + " '어 얘는 또 뭐야 대체 누구야',\n", + " 'oh bae 절대 낮추지 마',\n", + " 'okay 쟤들에 널 맞추진 마',\n", + " \"you're mine\",\n", + " '넌 충분히 아름다워',\n", + " \"don't worry, don't worry\",\n", + " \"baby you're beautiful\",\n", + " 'you, you, you',\n", + " '20세기 소녀들아',\n", + " 'live your life',\n", + " 'live your life come on baby',\n", + " '21세기 소녀들아',\n", + " \"you don't mind\",\n", + " \"you don't mind that new lady\",\n", + " '말해 너는 강하다고',\n", + " '말해 넌 충분하다고',\n", + " 'let you go, let you go, let you go',\n", + " 'let it go oh',\n", + " 'all my ladies put your hands up',\n", + " '21세기 소녀',\n", + " 'hands up',\n", + " 'all my ladies put your hands up',\n", + " 'now scream',\n", + " 'everybody wanna love you',\n", + " 'everybody gonna love you',\n", + " '다른 건 걱정하지 마',\n", + " 'everybody wanna love you bae',\n", + " 'everybody gonna love you bae',\n", + " '넌 사랑 받아 마땅해',\n", + " 'all my ladies put your hands up',\n", + " '21세기 소녀',\n", + " 'hands up',\n", + " 'all my ladies put your hands up',\n", + " 'now scream',\n", + " 'all my ladies put your hands up',\n", + " '21세기 소녀',\n", + " 'hands up',\n", + " 'all my ladies put your hands up',\n", + " 'now scream',\n", + " '넌 철저해 나 아니면 절대 너를 못 당해',\n", + " '난 담을 넘고',\n", + " '뻠뻠뻠뻠뻠',\n", + " '뻠뻠 뻠뻠뻠뻠뻠',\n", + " '철벽같은 너의 맘을 열어 (uh)',\n", + " '나타날 땐 바람처럼 사라질 땐',\n", + " '연기처럼 너의 눈을 속이고',\n", + " '다가갈 땐 꽃잎처럼 파고들 땐',\n", + " '가시처럼 네 심장을 노리고',\n", + " '(danger) 오늘 밤에 오늘 밤에',\n", + " '오늘 밤에 오늘 밤에',\n", + " '(danger) 널 훔쳐가요 훔쳐가요',\n", + " '(훔쳐가요)',\n", + " 'stay, 손끝이 널 따라간 순간',\n", + " '세상에서 너만 빛나',\n", + " 'stay, 어둠이 다 삼켜버린 밤',\n", + " \"it's my show time\",\n", + " '(danger) 나와 함께 나와 함께',\n", + " '나와 함께 나와 함께',\n", + " '(danger) 사라져요 사라져요',\n", + " '(사라져요 사라져요)',\n", + " '난 신중해 내 타깃은 오직 하나뿐인데',\n", + " '난 초를 세고',\n", + " '뻠뻠뻠뻠뻠',\n", + " '뻠뻠 뻠뻠뻠뻠뻠',\n", + " '완벽했던 나의 시나리오 (uh)',\n", + " '바라볼 땐 미로처럼 잡았을 땐',\n", + " '모래처럼 시간은 더 흐르고',\n", + " '머릿속엔 안개처럼 흐트러진',\n", + " '퍼즐처럼 알다가도 모르고',\n", + " '(danger) 오늘 밤에 오늘 밤에',\n", + " '오늘 밤에 오늘 밤에',\n", + " '(danger) 널 훔쳐가요 훔쳐가요',\n", + " '(훔쳐가요)',\n", + " 'stay, 투영한 네 함정 속에 난',\n", + " '다시 한 번 몸을 던져',\n", + " 'stay, 너만이 날 볼 수 있는 밤',\n", + " \"it's my show time\",\n", + " '(danger) 나와 함께 나와 함께',\n", + " '나와 함께 나와 함께',\n", + " '(danger) 사라져요 사라져요',\n", + " '사라져요 사라져요',\n", + " '(danger) 너는 전부 알고 있어',\n", + " 'oh baby, yeah',\n", + " '또 나를 움직여 조증하고 있어',\n", + " 'oh, baby, yeah',\n", + " '(danger) 오늘 밤에 오늘 밤에',\n", + " '오늘 밤에 오늘 밤에',\n", + " '(danger) 널 훔쳐가요 훔쳐가요',\n", + " '훔쳐가요 훔쳐가요',\n", + " '(danger) 나와 함께 나와 함께',\n", + " '나와 함께 나와 함께',\n", + " '(danger) 사라져요 사라져요',\n", + " '(사라져요 사라져요)',\n", + " 'stay, 모든게 네 계 획대로야',\n", + " '진실은 네 손에 있어',\n", + " 'stay, 세상을 다 가진 듯한 밤',\n", + " \"it's my show time\",\n", + " '(danger) 오늘 밤에 오늘 밤에',\n", + " '오늘 밤에 오늘 밤에',\n", + " '(danger) 널 훔쳐가요 훔쳐가요',\n", + " '훔쳐가요 훔쳐가요',\n", + " '(danger) 나와 함께 나와 함께',\n", + " '나와 함께 나와 함께',\n", + " '(danger) 사라져요 사라져요',\n", + " '사라져요 사라져요',\n", + " 'taemin \"괴도 (danger)\" english translation',\n", + " \"you're so intense, if it's not me, no one can win you\",\n", + " \"i can't hold it anymore\",\n", + " 'bbum, bbum, bbum, bbum, bbum',\n", + " 'open your iron-like heart',\n", + " \"i'll appear like the wind, disappear like smoke\",\n", + " 'deceiving your eyes',\n", + " \"i'll approach you like a flower, dig into you like a thorn\",\n", + " 'going after your heart',\n", + " 'danger, tonight, tonight',\n", + " 'tonight, tonight',\n", + " \"danger, i'll steal you, i'll steal you away\",\n", + " '(steal you)',\n", + " 'stay, when my fingers follow you',\n", + " \"you're the only one who shines in this world\",\n", + " 'stay, on this night that swallowed all the darkness',\n", + " \"it's my show time\",\n", + " 'danger, with me, with me',\n", + " 'with me, with me',\n", + " 'danger, disappear, disappear',\n", + " '(disappear disappear)',\n", + " \"i'm very careful, my target is only you\",\n", + " \"i'll count the seconds and\",\n", + " 'bbum, bbum, bbum, bbum, bbum',\n", + " 'my perfect scenario',\n", + " \"i'm like a maze when you look at me\",\n", + " \"i'm like sand when you catch me\",\n", + " 'scattered like the fog',\n", + " 'mysterious like a puzzle',\n", + " 'danger, tonight, tonight',\n", + " 'tonight, tonight',\n", + " \"danger, i'll steal you, i'll steal you away\",\n", + " '(steal you)',\n", + " 'stay, into your transparent trap',\n", + " \"i'll throw myself again\",\n", + " 'stay, only you can see me tonight',\n", + " \"it's my show time\",\n", + " 'danger, with me, with me',\n", + " 'with me, with me',\n", + " 'danger, disappear, disappear',\n", + " '(disappear disappear)',\n", + " 'danger, you know everything',\n", + " 'oh baby yeah',\n", + " 'you move me and control me again',\n", + " 'oh, baby, yeah',\n", + " 'danger, tonight, tonight',\n", + " 'tonight, tonight',\n", + " \"danger, i'll steal you, i'll steal you away\",\n", + " 'steal you',\n", + " 'danger, with me, with me',\n", + " 'with me, with me',\n", + " 'danger, disappear, disappear',\n", + " '(disappear disappear)',\n", + " 'stay, everything is going as you planned',\n", + " 'the truth is in your hands',\n", + " 'stay, like you have the whole world tonight',\n", + " \"it's my show time\",\n", + " 'danger, tonight, tonight',\n", + " 'tonight, tonight',\n", + " \"danger, i'll steal you, i'll steal you away\",\n", + " 'steal you',\n", + " 'danger, with me, with me',\n", + " 'with me, with me',\n", + " 'danger, disappear, disappear',\n", + " 'disappear, disappear',\n", + " '아쉬울 것도 없어',\n", + " '진짜 할 만큼 했어',\n", + " '난 어차피 너 따위 있으나 없으나 똑같아',\n", + " '매번 약속은 번복',\n", + " '또 셀 수 없이 반복',\n", + " '너란 남자 딱 그 정도 내 마음 다 줬지만 no',\n", + " '빈 깡통 같은 네 sorry',\n", + " '이젠 그저 개 짖는 소리',\n", + " '정신을 차리고 보니 네 모든 게 오글거려',\n", + " '널 버려줄 게 recycle',\n", + " '네 옆에 그녀는 바보',\n", + " \"오늘 난 말할 게 i don't want you no more\",\n", + " 'hold up 영원할 거라 했어?',\n", + " '근데 결론은 또 you messed up',\n", + " '왔다 갔다 가벼운 넌 ping-pong',\n", + " '난 지금 너를 차는 거야, ding-dong',\n", + " \"player, you ain't know\",\n", + " '사람 잘못 골랐어',\n", + " '나만을 바라보고 위해 받들어 줬어야 해',\n", + " '여왕벌처럼 (woo!)',\n", + " 'see you later, boy, see you later',\n", + " 'see you later, boy, see you later, later',\n", + " 'see you later, boy, see you later',\n", + " \"would've, could've, should've, didn't\",\n", + " 'see you later, boy, see you later',\n", + " 'see you later, boy, see you later, later',\n", + " 'see you later, boy, see you later',\n", + " 'see you later, maybe never',\n", + " '콩깍지 벗겨졌어',\n", + " '잡아도 소용없어',\n", + " '또 이랬다저랬다 이러쿵저러쿵 구차해',\n", + " \"이제는 you ain't got no best friend (ew)\",\n", + " '외로울 거야 weekend (he-he!)',\n", + " '그래 넌 loser 외톨이 못된 양아치, ha-ah-ah',\n", + " '빈 깡통 같은 네 sorry',\n", + " '이젠 그저 개 짖는 소리',\n", + " '정신을 차리고 보니 네 모든 게 못나 보여',\n", + " '널 버려줄 게 recycle',\n", + " '네 옆에 그녀는 바보',\n", + " \"오늘 난 말할 게 i don't want you no more\",\n", + " '아픔도 모르게 빨랐던 시간만큼 (hey)',\n", + " '너는 훅 간 거야 지금 방금 (hey)',\n", + " '내가 누군지 까먹었니 똑바로 기억해',\n", + " \"i'm a boss bitch\",\n", + " '너 정도는 바로 정돈',\n", + " '이미 지웠어 네 전화번호',\n", + " \"설렘을 향해 다시 심장의 시동을 걸고 boomin'\",\n", + " 'pedal to the metal like',\n", + " 'see you later, boy, see you later',\n", + " 'see you later, boy, see you later, later',\n", + " 'see you later, boy, see you later',\n", + " \"would've, could've, should've, didn't\",\n", + " 'see you later, boy, see you later',\n", + " 'see you later, boy, see you later, later',\n", + " 'see you later, boy, see you later',\n", + " 'see you later, maybe never',\n", + " 'goodbye, baby 내가 네 곁에 있었을 때 잘하지 왜',\n", + " 'why you wanna go and do that, do that, why?',\n", + " '내 뒷모습을 좋아하던 너',\n", + " '지금 실컷 보고 잘 기억해',\n", + " 'bye-bye, bye-bye, bye',\n", + " 'see you later, boy, see you later',\n", + " 'see you later, boy, see you later, later',\n", + " 'see you later, boy, see you later',\n", + " \"would've, could've, should've, didn't\",\n", + " 'see you later, boy, see you later (hey!)',\n", + " 'see you later, boy, see you later, later (woo!)',\n", + " 'see you later, boy, see you later',\n", + " 'see you later, maybe never',\n", + " \"(would've, would've, would've)\",\n", + " \"would've, could've, should've, didn't\",\n", + " \"(would've, would've, would've)\",\n", + " \"would've, could've, should've, didn't\",\n", + " \"(would've, would've, would've)\",\n", + " \"would've, could've, should've, didn't\",\n", + " 'see you later, boy, see you later',\n", + " 'see you later, boy, see you later',\n", + " \"would've, could've, should've, didn't\",\n", + " 'see you later, boy, see you later',\n", + " 'see you later, boy, see you later, later',\n", + " 'see you later, boy, see you later',\n", + " 'see you later, maybe never',\n", + " 'you’re finally coming to me',\n", + " '네가 없으면 난 lonely',\n", + " '네가 없으면 난 nothing',\n", + " 'we gotta 계속 get going',\n", + " '오래 걸렸어 널 찾는 게',\n", + " '신이 내려준 것 같이',\n", + " 'on and on',\n", + " 'on and on',\n", + " 'baby don’t go',\n", + " 'you think about my love again i know babe',\n", + " 'a man that cares about you baby that’s me',\n", + " 'oh baby 진심 담은 노래 this is your song',\n", + " 'you better know i never let you down',\n", + " '누가 우리 막아도 상관없어',\n", + " \"love again, we'll love again, love till we die\",\n", + " 'we gotta hit it up live it up feel the love',\n", + " 'all day and night',\n", + " '너와 나 너와 나 우주에서',\n", + " '완벽하지 않아도 is it okay?',\n", + " '나 같은 남자 사랑해줘 alright',\n", + " '실수해도 baby is it okay?',\n", + " '날 위로해줄 사람 네가 돼줄래',\n", + " '믿어줘 믿어줄래',\n", + " 'wake up from now you’ll never be alone',\n", + " '믿어줘 믿어줄래',\n", + " 'on and on you will know',\n", + " '사랑 흘러 in my body',\n", + " 'baby no baby don’t',\n", + " 'don’t you say i’m not ready',\n", + " 'i can see the color of you',\n", + " '날 믿고 손을 잡아 girl you know it',\n", + " 'we don’t have no time to play',\n", + " 'i got you baby no worries',\n", + " '항상 옆에 있을게',\n", + " 'don’t know 뭐가 이렇게 좋은지',\n", + " '그냥 이유 없이 난 원해',\n", + " 'don’t you know that yeah',\n", + " '우리 잘 어울려',\n", + " 'yeah',\n", + " '완벽하지 않아도 is it okay?',\n", + " '나 같은 남자 사랑해줘 alright',\n", + " '실수해도 baby is it okay?',\n", + " '날 위로해줄 사람 네가 돼줄래',\n", + " '믿어줘 믿어줄래',\n", + " 'wake up from now you’ll never be alone',\n", + " '믿어줘 믿어줄래',\n", + " '우린 서로를 선택했어',\n", + " '나랑 같은 길로 걷는 게',\n", + " '절대 후회하지 않게 i’ll do my best',\n", + " '나만 믿고 따라와 줄래',\n", + " 'don’t need to worry',\n", + " 'trust me don’t worry',\n", + " '완벽하지 않아도 is it okay?',\n", + " '나 같은 남자 사랑해줘 alright',\n", + " '실수해도 baby is it okay?',\n", + " '날 위로해줄 사람 네가 돼줄래',\n", + " '믿어줘 믿어줄래',\n", + " 'wake up from now you’ll never be alone',\n", + " '비춰줘 비춰줄래',\n", + " 'ye ye~ ye ye~ ye! ye! ye! ye ye~ 1,2,3 ye~',\n", + " 'if you wanna pretty every wanna pretty',\n", + " '안된다는 맘은 no no no no',\n", + " 'if you wanna pretty every wanna pretty',\n", + " '어디서나 당당하게 걷기',\n", + " '나와 맞는 옷에 또 받쳐주는 말투',\n", + " '센스있는 포즈 그냥 되지는 않죠',\n", + " '생활 상식은 기본 시사 상식은',\n", + " '선택 다 끊임 없는 노력이죠',\n", + " 'girl! pretty girl!',\n", + " 'pretty girl! 조금도 망설일 것 없죠',\n", + " '난 beautiful girl!',\n", + " 'beautiful girl! beautiful! ye ye ye ye',\n", + " 'girl! pretty girl!',\n", + " 'pretty girl! 그냥 되진 않는거죠',\n", + " '난 beautiful girl!',\n", + " 'beautiful! ye ye ye ye common beautiful girl!',\n", + " 'if you wanna pretty every wanna pretty',\n", + " '안된다는 맘은 no no no no',\n", + " 'if you wanna pretty every wanna pretty',\n", + " '어디서나 당당하게 걷기',\n", + " 'girl! pretty girl!',\n", + " 'pretty girl! 조금도 망설일 것 없죠',\n", + " '난 beautiful girl!',\n", + " 'beautiful girl! beautiful! ye ye ye ye',\n", + " 'girl! pretty girl!',\n", + " 'pretty girl! 그냥 되진 않는거죠',\n", + " '난 beautiful girl!',\n", + " 'beautiful! ye ye ye ye common beautiful girl!',\n", + " '마음은 예쁘게 표정은 산뜻하게',\n", + " '하루를 시작하면서 잊지 말아야 하죠',\n", + " '두 눈을 깜박이며 살짝 미소 지으면',\n", + " '이젠 모든게 완벽하죠',\n", + " 'girl! pretty girl!',\n", + " 'pretty girl! 누구라도 될수있죠',\n", + " '난 beautiful girl!',\n", + " 'beautiful! ye ye ye ye ye ye ye ye',\n", + " 'girl! pretty girl!',\n", + " 'pretty girl! 그냥 되진 않는거죠',\n", + " '난 beautiful girl!',\n", + " 'beautiful girl ye~',\n", + " 'if you wanna pretty every wanna pretty',\n", + " '안된다는 말은 no no no no',\n", + " 'if you wanna pretty every wanna pretty',\n", + " '어디서나 당당하게 걷기',\n", + " 'korean',\n", + " '난 왜 니가 가진 것들을 부러워하는 걸까',\n", + " '감당하지도 못할 것들을 손에 꼭 쥐고서',\n", + " '여기서 무얼 얼만큼 더 나아지고픈 걸까',\n", + " '너도 똑같은 거 다 아는데 내가 이기적인 걸까',\n", + " '많이 가져도 난 아직 너 같진 않아',\n", + " '아픈 기억들 위로 매일 혼자 걸어 난',\n", + " '아플걸 알아도 자꾸 마음이 가나 봐',\n", + " '그래서 자꾸 네게 욕심을 내나 봐',\n", + " '나의 나의 나의 그대여',\n", + " '이름만 불러봐도 맘이 벅차요',\n", + " '난 더욱 더욱 더욱 크게 되어',\n", + " '널 가득 안고 싶고 그래요',\n", + " '하고 싶은 말을 하는 게 불안해서',\n", + " '너를 밀어내고서 불편하게 만들어',\n", + " '듣고 싶은 말이 너무나 많은데도',\n", + " '바라지를 못하고 마음 아프게 기다려',\n", + " '나의 나의 나의 그대여',\n", + " '이름만 불러봐도 맘이 벅차요',\n", + " '난 더욱 더욱 더욱 크게 되어',\n", + " '널 가득 안고 싶고 그래요',\n", + " 'english translation',\n", + " 'why am i jealous of what you have',\n", + " 'holding tight onto things i’ll never manage',\n", + " 'how much better do i want to be',\n", + " 'i know you’re the same, maybe i’m just being selfish',\n", + " 'although i have a lot, i’m still not quite like you',\n", + " 'every day i walk alone, over the painful memories',\n", + " 'i know it’ll hurt but i can’t help noticing',\n", + " 'maybe that’s why i keep longing for you',\n", + " 'my my my darling',\n", + " 'just calling your name makes my heart full',\n", + " 'i want to get bigger, bigger, and bigger',\n", + " 'so i can give you a big armful of hugs',\n", + " 'cuz i’m afraid to say things i want to say',\n", + " 'i push you away and make things uncomfortable',\n", + " 'although there is so much i want to hear',\n", + " 'i cannot dare to desire and just wait painfully',\n", + " 'my my my darling',\n", + " 'just calling your name makes my heart full',\n", + " 'i want to get bigger, bigger, and bigger',\n", + " 'so i can give you a big armful of hugs',\n", + " '정말 이기적이야 넌',\n", + " '너무 예쁜 걸',\n", + " '내 입 꼬리가 헤퍼지잖아 girl',\n", + " 'oh special girl',\n", + " '뭘 해도 뭘 해도 나는 녹아',\n", + " '누가 뭐래도 뭐래도 니가 일상',\n", + " '뻔하지만 이건 널 위한 고백',\n", + " '이건 널 위한 고백 이지만 가끔',\n", + " '혼자 하는 사랑 같아 가슴이 따끔',\n", + " '지금 너의 감정은 어때',\n", + " '아직도 너의 답을 기다리잖아 여태',\n", + " '친구들이 같이 한 자리에서도',\n", + " '둘이 심상치 않은 기류 눈치 챘었고',\n", + " '우연히 거리에서 마주칠 때',\n", + " '어색한 눈빛 교환이 버릇이 돼 uh',\n", + " '너의 마음이 나와 똑같다면',\n", + " '이대로 그 맘이 계속 자라면',\n", + " '절대로 겁먹지 말기 더 많이',\n", + " '사랑해주기',\n", + " '한 발 물러서면 잡아주기',\n", + " '더 미루지 말고',\n", + " '오늘 한번 kiss 해 줄래',\n", + " '종일 너만 바라보는데',\n", + " '이게 장난 같니',\n", + " 'only you only you',\n", + " '그만 밀당 하고',\n", + " '더 미루지 말고',\n", + " '오늘 한번 넘어가줄래',\n", + " '지금 내가 하는 말들이',\n", + " '너는 장난 같니',\n", + " 'love is you love is you',\n", + " '오늘 한번만 받아줘',\n", + " '저기도 왜 여기도 왜',\n", + " '온통 연인 들 뿐이고',\n", + " '우리도 저들과 같을 수 있다고',\n", + " 'oh special girl',\n", + " '뭘 해도 뭘 해도 나는 녹아',\n", + " '누가 뭐래도 뭐래도 니가 일상',\n", + " '뻔하지만 이건 널 위한 고백',\n", + " '못 참아 나도 더 이상',\n", + " '이것도 저것도 아닌 우리 사이',\n", + " '여기서 멀어지는 건 순식간',\n", + " '이제 내가 당길 테니까 제발 놓지 마',\n", + " '자 입술은 가볍게 힘 풀어줘',\n", + " '그다음은 내게 다 맡겨줄래',\n", + " '시간이 금이란 속담이 맞았네',\n", + " '오늘따라 흘러가는 시간이 야속해',\n", + " '더 미루지 말고',\n", + " '오늘 한번 kiss 해 줄래',\n", + " '종일 너만 바라보는데',\n", + " '이게 장난 같니',\n", + " 'love is you love is you',\n", + " '오늘 한번만 받아줘',\n", + " '여전히 둘의 사이 어색해 어떡해',\n", + " '너만 괜찮다면 내가 지켜줄게 ooh',\n", + " '불안함은 잠시 접을래 yeah ooh',\n", + " '더 미루지 말고',\n", + " '오늘 한번 kiss 해 줄래',\n", + " '종일 너만 바라보는데',\n", + " '이게 장난 같니',\n", + " 'only you only you',\n", + " '그만 밀당 하고',\n", + " '더 미루지 말고',\n", + " '오늘 한번 넘어가줄래',\n", + " '지금 내가 하는 말들이',\n", + " '너는 장난 같니',\n", + " 'love is you love is you',\n", + " '오늘 한번만 받아줘',\n", + " 'english translation',\n", + " '------------------------------------------',\n", + " 'you’re so selfish',\n", + " '(you’re so pretty)',\n", + " 'my lips are being so easy girl',\n", + " '(oh special girl)',\n", + " 'whatever you do, you melt me',\n", + " 'whatever anyone says, you’re #1',\n", + " 'it’s obvious but this is a confession for you',\n", + " 'this is a confession for you',\n", + " 'but sometimes, i feel like it’s a typical love',\n", + " 'how do you feel right now?',\n", + " 'i’m still waiting for your answer',\n", + " 'when we were all hanging out',\n", + " 'my friends already noticed the weird air between us',\n", + " 'when i randomly run into you on the street',\n", + " 'the awkward exchange of looks became a habit',\n", + " 'if you feel the same way as me',\n", + " 'if your feelings are growing',\n", + " 'don’t be scared, let’s love even more',\n", + " 'if someone takes a step back, let’s catch each other',\n", + " 'don’t push it back any more',\n", + " 'i wanna kiss you today',\n", + " 'all day, i’m only looking at you',\n", + " 'do you think this is a joke?',\n", + " 'only you only you',\n", + " 'stop playing games with me',\n", + " 'don’t push it back any more',\n", + " 'will you fall for me today?',\n", + " 'what i’m saying right now',\n", + " 'do you think it’s a joke?',\n", + " 'love is you love is you',\n", + " 'accept me today',\n", + " 'here and there',\n", + " 'this place is filled with couples',\n", + " 'we can be like them',\n", + " '(oh special girl)',\n", + " 'whatever you do, you melt me',\n", + " 'whatever anyone says, you’re #1',\n", + " 'it’s obvious but this is a confession for you',\n", + " 'i can’t wait anymore',\n", + " 'we’re not this or that',\n", + " 'it’ll only take a moment for us to grow apart',\n", + " 'now i’ll do the pulling',\n", + " 'so please don’t let go',\n", + " 'relax your lips',\n", + " 'then just trust me',\n", + " 'it’s true when they say time is gold',\n", + " 'time passing feels even crueller today',\n", + " 'don’t push it back any more',\n", + " 'i wanna kiss you today',\n", + " 'all day, i’m only looking at you',\n", + " 'do you think this is a joke?',\n", + " 'love is you love is you',\n", + " 'accept me today',\n", + " 'it’s still awkward between us',\n", + " 'if it’s alright with you, i’ll protect you',\n", + " 'i wanna put away my anxiety for a moment',\n", + " 'don’t push it back any more',\n", + " 'i wanna kiss you today',\n", + " 'all day, i’m only looking at you',\n", + " 'do you think this is a joke?',\n", + " 'only you only you',\n", + " 'stop playing games with me',\n", + " 'don’t push it back any more',\n", + " 'will you fall for me today?',\n", + " 'what i’m saying right now',\n", + " 'do you think it’s a joke?',\n", + " 'love is you love is you',\n", + " 'accept me today',\n", + " 'perception, illusion, your vision',\n", + " 'perception, illusion, your vision',\n", + " 'out of light but i see',\n", + " '이리 오라 말하지만 넌 의미 없지',\n", + " '널 버리라 말하지만',\n", + " 'but you see',\n", + " 'but you see',\n", + " 'but you see',\n", + " '넌 그때 어렸다 믿지만 난 알았지',\n", + " '거친 편견들이 둘러싸여',\n", + " '멋진 품격들을 우린 놓쳐',\n", + " 'we lay our real feelings here and there',\n", + " 'and here and there',\n", + " 'perception and here and there',\n", + " 'illusion and here and there',\n", + " 'your vision and here and there',\n", + " 'perception and here and there',\n", + " 'illusion and here and there',\n", + " 'your vision',\n", + " 'perception, illusion, your vision',\n", + " 'perception, your vision',\n", + " 'illusion, perception',\n", + " 'hours of trying and i say',\n", + " '이해하려는 하지만 더 힘이 없지',\n", + " \"잃어버린 너를 찾지만 can't you see\",\n", + " '너를 찾아다니지만 사실은 아니지',\n", + " 'digital version of yourself',\n", + " 'is only part of yourself',\n", + " '다 지난 너를 버리고 니 감정을 입어',\n", + " 'you may let your feelings appear',\n", + " 'you may let your feelings appear',\n", + " 'and here and there',\n", + " 'and here and there',\n", + " 'and here and there',\n", + " 'and here and there',\n", + " '이리 오라 말하지만 넌 의미 없지',\n", + " '이리 오라 말하지만 넌 의미 없지',\n", + " 'earthquake in the club',\n", + " 'stage 는 갈라지고',\n", + " '술은 흘러내리고 있어',\n", + " '그러니까 옆에서 누가 춤을 추던',\n", + " '술에 취해 비틀거리던',\n", + " '너가 신경 쓸 필요 없어',\n", + " '그래 이 노랜 fuxkin 번지 shit',\n", + " '너무 wild 해',\n", + " '살아남는 방법을 알려줄 게',\n", + " 'ay 넌 왜 아직도 거기있어',\n", + " '여기 재밌는 게 더 많아',\n", + " '멍청한 애들은 모르네',\n", + " '썩어빠진 씬을 침수시킨 뒤에',\n", + " '물결을 완전히 바꿨지',\n", + " '하나부터 열까지 너넨',\n", + " '전부 틀에 박혔으니',\n", + " '뭐라는지 하나도',\n", + " '알아들을 수 없는 너의',\n", + " '가사 속에 살고 있는 너조차도',\n", + " '너를 모르지',\n", + " 'fuckyall 전부 때려 부시지',\n", + " '부디 이 영감이 내 맘속에 영원하길',\n", + " '그러니까 답이 없는 그래 너네 concept',\n", + " '같은 것들 그냥 집어치우고 세탁기에 넣어 bish',\n", + " '세탁기에 넣어 swish',\n", + " '세탁기에 넣어 swish',\n", + " 'new wave new wave new wave -',\n", + " 'everybody comin’ yayayayaya comin’ ya ya',\n", + " 'everyday we movin’ yayayayaya movin’ yaya',\n", + " 'everybody comin’ yayayayaya comin’ ya ya',\n", + " 'everyday we movin’ yayayayaya movin’ yaya',\n", + " 'i wanna make you groove',\n", + " '조명이 어두워질 때',\n", + " 'the way your body move',\n", + " '아침이 밝을때 까지',\n", + " 'i wanna make you groove',\n", + " '우리가 만든 물결은',\n", + " 'the way your body move',\n", + " '뭐든지 가능하게 해',\n", + " 'hey wait baby mama oou',\n", + " 'i don’t want no drama ya',\n", + " 'makin some fuxking money',\n", + " 'move to yokohama',\n", + " 'gq magazine',\n", + " 'you gotta let me in',\n", + " 'omega off the beam',\n", + " 'be on binge and i cut the scene',\n", + " 'and i’m going crazy wavy',\n", + " 'bottles poppin got me daydream',\n", + " 'ice so colde and got a frostbite',\n", + " '너무 추워서 이빨이 딱딱 ya',\n", + " 'what all over my shoe oou',\n", + " 'giving me neck in the coupe ya',\n", + " 'babygirl gotta get loose poppin a perc and i holla at you',\n", + " 'she wanna ride along hmm got a bish mad at you hmmm',\n", + " 'flame hachoo seoul to baton rouge',\n", + " 'and i’m so wavy',\n", + " 'noddin devils dancin',\n", + " 'smoothest of the century',\n", + " 'yo mama call me baby',\n", + " 'ya ya shix is goin fuxkin crazy',\n", + " 'ya ya everybody everybody',\n", + " 'yayayayaya comin ya ya',\n", + " 'everyday we movin yayayayaya movin yaya',\n", + " 'everybody comin yayayayaya comin ya ya',\n", + " 'everyday we movin yayayayaya movin yaya',\n", + " 'i wanna make you groove',\n", + " '조명이 어두워질 때',\n", + " 'the way your body move',\n", + " '아침이 밝을때 까지',\n", + " 'i wanna make you groove',\n", + " '우리가 만든 물결은',\n", + " 'the way your body move',\n", + " '뭐든지 가능하게 해',\n", + " 'so baby don’t cry so baby don’t cry',\n", + " 'so baby don’t cry baby don’t cry',\n", + " 'baby don’t cry baby don’t cry',\n", + " '다 말해줄래 하나도 빠짐없이 (why you leave me now) tell me (오오 에워)',\n", + " '변명 하지마 내가 너를 잘 알잖아 내 눈보고 말해봐 (워워 워워)',\n", + " 'so baby don’t cry baby tell me why',\n", + " 'you’re leaving me tonight you’re leaving me tonight',\n", + " 'so baby don’t cry baby tell me why',\n", + " '떠나는 건 너야 날 버린 건 너야',\n", + " 'rewind, rewind돌아갈 거야 우리 처음 만났던 바로 그 날',\n", + " '다시 시작하고 싶어 죽어도 이렇게는 싫어',\n", + " 'come on, come on 그 놈이 대체 뭐가 더 잘났니',\n", + " '나보다 널 사랑하니 singing (오오 에워)',\n", + " 'so baby don’t cry look into my eyes you know that',\n", + " 'i love you don’t tell me goodbye (why why)',\n", + " 'why do you wanna walk away',\n", + " 'so baby don’t cry baby tell me why',\n", + " 'you’re leaving me tonight you’re leaving me tonight',\n", + " 'so baby don’t cry baby tell me why',\n", + " '떠나는 건 너야 날 버린 건 너야',\n", + " 'you know me 너도 내 성격 잘 알잖아 끝까지 착한 척은 안 해',\n", + " 'you know me 잘 지내 그딴 말은 안해 불행하길 빌꺼야',\n", + " 'so baby don’t cry baby tell me why',\n", + " 'you’re leaving me tonight you’re leaving me tonight',\n", + " 'so baby don’t cry baby tell me why',\n", + " '떠나는건 너야 날 버린건 너야',\n", + " '매일 밤마다 널 그려 넣어',\n", + " '날 항상 밝은 빛으로 물들여 주는 너 so ma su',\n", + " 'so baby don’t cry baby tell me',\n", + " 'why you’re leaving me tonight you’re leaving me tonight',\n", + " 'so baby don’t cry',\n", + " 'i draw you in my dream',\n", + " '꿈속의 너를 계속 그려가',\n", + " '눈 뜨면 잃을까',\n", + " '지금 이대로 모든 게 멈추길',\n", + " 'ay 깊은 안갯속에 난 길을 잃어가',\n", + " '너란 빛을 따라가 네게 닿을지 몰라',\n", + " \"i'm falling down 끝이 없는 걸\",\n", + " '어서 baby 나를 깨워줘',\n", + " 'oh 너만 떠올라',\n", + " '태양이 구름 위를 걸을 때',\n", + " '달이 너를 비출 때',\n", + " 'girl you make me wonder',\n", + " '매일 봐도 모르겠어 baby',\n", + " '네가 보고 싶어 oh crazy',\n", + " '또 네게 빠져나올 수 없어',\n", + " \"i don't know how you do it\",\n", + " 'you wake me up with your mind',\n", + " 'you wake me up with your mind',\n", + " 'you wake me up with your',\n", + " '이건 마치 bright light',\n", + " '순간의 패러다임',\n", + " 'you wake me up with your',\n", + " 'you wake me up with your mind',\n", + " \"i'm on your side\",\n", + " \"you'll be my sign\",\n", + " '조금씩 빠져들 거야 더',\n", + " '흐릿하던 날들은 너로 선명해져',\n", + " 'i got you now 널 보면 lose my mind',\n", + " '너의 향기로 차올라 eh',\n", + " '나의 맘은 벅차올라 eh',\n", + " '잡은 두 손 꼭 놓지 마 eh',\n", + " 'i never let you go',\n", + " 'girl you make me wonder',\n", + " '매일 봐도 모르겠어 baby',\n", + " '네가 보고 싶어 oh crazy',\n", + " '또 네게 빠져나올 수 없어',\n", + " \"i don't know how you do it\",\n", + " 'you wake me up with your mind',\n", + " 'you wake me up with your mind',\n", + " 'you wake me up with your',\n", + " '이건 마치 bright light',\n", + " '순간의 패러다임',\n", + " 'you wake me up with your',\n", + " 'you wake me up with your mind',\n", + " '나를 잡아 놓지 말아 줘',\n", + " \"i'm doin' it all yeah\",\n", + " \"i'd do it all for you\",\n", + " '내가 바래온 너라서',\n", + " \"i think i'm in love, yeah\",\n", + " \"i've fallin' for you\",\n", + " '끝이 안 보여 난, ah',\n", + " '매일 새로운 날, ah',\n", + " 'yeah, i think that you know',\n", + " '너를 본 순간',\n", + " '굳이 말하지만, ah',\n", + " '매일 눈부셔 넌, ah',\n", + " 'yeah, i think that you know',\n", + " \"so please don't let me go\",\n", + " 'you wake me up with your mind',\n", + " 'you wake me up with your mind',\n", + " 'you wake me up with your',\n", + " '이건 마치 bright light',\n", + " '순간의 패러다임',\n", + " 'you wake me up with your',\n", + " 'you wake me up with your mind',\n", + " 'you wake me up with your mind',\n", + " 'you wake me up with your',\n", + " '이건 마치 bright light',\n", + " '순간의 패러다임',\n", + " 'you wake me up with your',\n", + " 'you wake me up with your mind',\n", + " '온종일 몰아친 너무 바쁜 일',\n", + " '걸음걸이까지 내 게 아닌데',\n", + " '밤이 너무 멋진걸 집에 가기엔',\n", + " '아직 계획한 건 아무것도 없지만, 기분만큼은 high지 (ha)',\n", + " '별 약속 없는데, 전화하면 좀 어때?',\n", + " \"what you think 'bout that? (ooh)\",\n", + " \"what you think 'bout that, that? (ha)\",\n", + " '저 달이 미치게 우릴 불러 대는데',\n", + " \"what you think 'bout that?\",\n", + " \"what you think 'bout that, that? (woah, woah, woah, ooh)\",\n", + " 'hey, mama, 지금 바로 이 순간',\n", + " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", + " 'just you and i (ooh, woah-ooh, woah-oh)',\n", + " 'hey, mama, 특별할 것 없는 밤',\n", + " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", + " 'just you and i (ooh, woah-ooh, woah-oh)',\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", + " '모두 잊고 여기 모여 봐',\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", + " '지금 바로 놀라게 해 봐 날',\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", + " '밤을 딛고 별에 올라 봐',\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", + " '지금 네게 뛰어드는 날 봐 (that’s right)',\n", + " 'ya, 때깔나게 차려입을 필요 없어 (oh, yeah)',\n", + " '일하다 말고 온 게 뭐가 어때?',\n", + " '얼레벌레 차려입고 꾸미다 밤새',\n", + " '이미 넌 클라스가 다른 모태 (alright!)',\n", + " '넌 뭘 입어도 사실 hot해 (hot해)',\n", + " '계획 짜고 그래 봤자 뻔해',\n", + " '여유 부릴 틈이 없잖아',\n", + " '해가 짧아지고 있다고 (woo, ha!)',\n", + " '별 약속 없는데, 전화하면 좀 어때?',\n", + " \"what you think 'bout that? (ooh)\",\n", + " \"what you think 'bout that, that? (ha)\",\n", + " '저 달이 미치게 우릴 불러 대는데',\n", + " \"what you think 'bout that?\",\n", + " \"what you think 'bout that, that? (woah, woah, woah, ooh)\",\n", + " 'hey, mama, 지금 바로 이 순간',\n", + " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", + " 'just you and i (ooh, woah-ooh, woah-oh)',\n", + " 'hey, mama, 특별할 것 없는 밤',\n", + " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", + " 'just you and i (ooh, woah-ooh, woah-oh)',\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", + " '모두 잊고 여기 모여 봐',\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", + " '지금 바로 놀라게 해 봐 날',\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", + " '밤을 딛고 별에 올라 봐',\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", + " '지금 네게 뛰어드는 날 봐 (that’s right)',\n", + " 'ah-yeah, are you ready? (that’s right)',\n", + " 'everybody, put your hands up!',\n", + " 'now, one, two, three',\n", + " '일상을 모두 같이 뒤집어 (뒤집어 모두 뒤집어)',\n", + " 'everyday is a party day (it’s a party day, it’s a party day)',\n", + " '세상을 다 뒤집어 다 쓰러질 때까지 all night',\n", + " 'hey, mama, 지금 바로 이 순간',\n", + " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", + " 'just you and i (ooh, woah-ooh, woah-oh)',\n", + " 'hey, mama, 특별할 것 없는 밤',\n", + " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", + " 'just you and i (ooh, woah-ooh, woah-oh)',\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", + " '모두 잊고 여기 모여 봐',\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", + " \"지금 바로 놀라게 해 봐 날 (let's make a night, baby)\",\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", + " '밤을 딛고 별에 올라 봐',\n", + " 'that’s right (ooh, whoo-ooh, ooh, ooh; 별에 올라 봐, oh-oh)',\n", + " '지금 네게 뛰어드는 날 봐 (that’s right)',\n", + " 'one, two, three, joosuc and epik high, yo',\n", + " \"one, two, three, we livin' street life\",\n", + " 'this is street life, i was born in the city',\n", + " \"this is street love, i'll be mourned by the city\",\n", + " \"this is street life, livin' in the seoul city\",\n", + " \"it's me the t, listen closely\",\n", + " '이 땅의 culture 문화를 수많은 방에 가둔 것 (a dark future)',\n", + " '나와 널 둘러싼 사방은 벽',\n", + " '깔린 것은 bar와 night club (where you love to go)',\n", + " '틀에 박힌 이 좁은 곳은 prison to you a soul (oh no)',\n", + " '날개를 펴보지도 못하고',\n", + " '자신의 soul 고립의 십자가로 못박고',\n", + " 'now get up, stand up, 붐비는 거리로',\n", + " '숨쉬는 도시 속에 수많은 people 사이로',\n", + " \"it's the crossroad, 신과 사람의 교차로\",\n", + " \"you've got to know, 지상낙원은 따로 없다고\",\n", + " 'this is u a barrio, car audio 볼륨을 더 위로',\n", + " 'everybody say oh!',\n", + " \"it's a streetparty, e-p-i-k, yo\",\n", + " 'everybody 거리로, capital j',\n", + " \"it's a streetparty, all day\",\n", + " \"it's a streetparty, e-p-i-k, yo\",\n", + " 'everybody 거리로, capital j',\n", + " \"it's a streetparty, all day, all night\",\n", + " 'okay, you, move you a body',\n", + " 'this street i told ya 바로 어머니',\n", + " '이 거리 말했지 바로 아버지, 그래',\n", + " '우연이 아닌 필연이다 싶었지',\n", + " '절대 돈으로 환산할 수 없는 값어치',\n", + " '지금으로부터 약 8년 전',\n", + " '나와 깊은 사랑에 빠지게 된 이 culture와의 만남',\n", + " '700만화소를 훨씬 뛰어넘는',\n", + " 'digital camera 보다 생생히 기억이 살아나',\n", + " 'oh ma sweety, 고향은 거리',\n", + " '태어나서 자라나서 clean or dirty',\n", + " 'whatever 상관없어',\n", + " '있는 그대로 솔직하게 살아가',\n", + " 'hip-hop 내 사랑아',\n", + " 'paris, london, tokyo, japan',\n", + " '소리없어 퍼져 번식해 세계를 제패',\n", + " 'ayo, epik high, keep it tite',\n", + " \"다 함께 거리로 나가 지금, let's get high\",\n", + " ...]},\n", + " 'r-b': {'meta': {'train_data': ['i’m looking for your ice',\n", + " 'i’m looking for your eyes',\n", + " 'i’m looking for your heart',\n", + " 'heart, heart, heart, heart',\n", + " 'i’m looking for your ice',\n", + " 'i’m looking for your eyes',\n", + " 'i’m looking for your heart',\n", + " 'heart, heart, heart, heart',\n", + " 'you and i, mm-mm',\n", + " 'i’m looking for your mind',\n", + " 'you and i, mm-mm',\n", + " 'i’m looking for your mind',\n", + " 'ah-ah-ah-ah',\n", + " 'ah-ah-ah-ah',\n", + " 'ah-ah-ah-ah',\n", + " 'ah-ah-ah-ah',\n", + " 'heart, heart, heart',\n", + " '난 너의 눈매를 살피고 싶어 매일',\n", + " '넌 눈이 제일 예쁜 것 같아 난 수영해 yeah-eh',\n", + " '남의 눈에 어떻다 한들',\n", + " '너의 친절함과 네 눈빛이',\n", + " '순수한 걸 알아 난 (yeah)',\n", + " '날 바라보는 네 눈빛이 너무 고와 (고와)',\n", + " '날 향해 밀려오는 너의 파란 파도와',\n", + " '난 소금이 될래',\n", + " '너에게 섞여 함께 녹아들게',\n", + " '함께 녹아들게',\n", + " '네가 날 분리하지 못하게',\n", + " '태양이 지고 달이 뜨면 활동해',\n", + " '이 느낌은 오로지 너만 느낄 수 있어 날 통해',\n", + " '기억해줘 우린 이랬다는 걸 yeah',\n", + " '멀리 있는 별도 우릴 빛내주는 걸',\n", + " '너와 나의 약속 (yeah)',\n", + " '너와 나의 약속',\n", + " 'yeah, yeah, yeah, yeah',\n", + " 'i’m looking for your ice',\n", + " 'i’m looking for your eyes',\n", + " 'i’m looking for your heart',\n", + " 'heart, heart, heart, heart',\n", + " 'i’m looking for your ice',\n", + " 'i’m looking for your eyes',\n", + " 'i’m looking for your heart',\n", + " 'heart, heart, heart, heart',\n", + " 'you and i, mm-mm',\n", + " 'i’m looking for your mind',\n", + " 'you and i, mm-mm',\n", + " 'i’m looking for your mind',\n", + " 'ah-ah-ah-ah',\n", + " 'ah-ah-ah-ah',\n", + " 'ah-ah-ah-ah',\n", + " 'ah-ah-ah-ah',\n", + " 'heart, heart, heart',\n", + " 'i need touch',\n", + " 'i need love',\n", + " 'you need touch',\n", + " 'you need love (yeah, yeah, yeah)',\n", + " 'we need love',\n", + " 'let’s make love',\n", + " '뜨거워 해가 없는데도',\n", + " '우린 무브 파도 물을 저어서 (yeah)',\n", + " '지구 반대편에 갈래 (brr)',\n", + " '지구 반대편에 갔을 땐',\n", + " 'starting on a blank page',\n", + " '무슨 말 할까',\n", + " '내가 아니라면',\n", + " '긴장 안 할까',\n", + " '머릿속엔 온통',\n", + " '생각이 너무 많다',\n", + " 'so just take a deep deep breath',\n", + " '숨을 쉬어',\n", + " \"i promise it'll be okay\",\n", + " '어디로 가게 될지 모르지만',\n", + " 'every little thing will be alright',\n", + " '걷고 있다는 게 중요하잖아',\n", + " 'every little thing',\n", + " 'will be just fine',\n", + " '하루가 너무 느려',\n", + " '내일도 이럴까',\n", + " '하나도 기대 안 돼',\n", + " '다를 것 없으니까',\n", + " '마음만 너무 급해',\n", + " \"i know you know what i'm saying\",\n", + " 'so just take a deep deep breath',\n", + " '숨을 쉬어',\n", + " \"i promise it'll be okay\",\n", + " '무릎 꿇고 포기하고 싶지 않아',\n", + " '잠을 자면서도 꿈을 놓지 않아',\n", + " '못할 것 같을 때',\n", + " \"prove to myself that i'll\",\n", + " 'make it through this',\n", + " 'at the end of the day',\n", + " '무릎 꿇고 포기하고 싶지 않아',\n", + " '잠을 자면서도 꿈을 놓지 않아',\n", + " '못할 것 같을 때',\n", + " 'remind myself that there’s',\n", + " 'always a reason',\n", + " 'for feeling this way',\n", + " 'every little thing',\n", + " 'will be alright',\n", + " 'every little thing',\n", + " 'every little thing',\n", + " 'every little thing',\n", + " 'will be alright',\n", + " 'everything will be alright',\n", + " '어디로 가게 될지 모르지만',\n", + " 'every little thing will be alright',\n", + " '걷고 있다는 게 중요하잖아',\n", + " 'evеry little thing',\n", + " 'will be just fine',\n", + " 'evеry little thing',\n", + " 'every little thing',\n", + " 'will be alright',\n", + " 'will be alright',\n", + " 'starting on a blank page',\n", + " '무슨 말 할까',\n", + " '멈출 수 없어 난',\n", + " '널 통해서',\n", + " '색다른 눈을 떠',\n", + " '여태 못 느껴봤던',\n", + " '새로운 감정',\n", + " '네 맘 안에서',\n", + " 'feel so good feel so good',\n", + " '자유로이 날아',\n", + " 'you got me i got you',\n", + " \"that's good\",\n", + " '예민해진 감각들이',\n", + " '온종일 나를 깨워 끝이 없이',\n", + " '상상 그 이상으로',\n", + " '꿈을 꾸는 것 같아',\n", + " 'open up your senses',\n", + " 'open up your senses',\n", + " 'open up your senses',\n", + " 'fly high fly high',\n", + " 'open up your senses',\n", + " 'fly high fly high',\n", + " 'open up your senses',\n", + " '달라져 난',\n", + " '다른 감각',\n", + " '널 더 원하게 돼',\n", + " '너만의 색으로 날',\n", + " '채워가 줘',\n", + " '네 맘 안에서',\n", + " 'feel so good feel so good',\n", + " '자유로이 날아',\n", + " 'you got me i got you',\n", + " \"that's good\",\n", + " '예민해진 감각들이',\n", + " '온종일 나를 깨워 끝이 없이',\n", + " '상상 그 이상으로',\n", + " '꿈을 꾸는 것 같아',\n", + " 'open up your senses',\n", + " \"i'll never let you go\",\n", + " 'you’ll always be in my heart',\n", + " \"i'll never let you go\",\n", + " 'you’ll always be in my heart',\n", + " 'open up your senses',\n", + " 'open up your senses',\n", + " 'fly high fly high',\n", + " 'open up your senses',\n", + " 'fly high fly high',\n", + " 'open up your senses',\n", + " \"girl won't you bring it back (yeah)\",\n", + " '가까이 와 what you waiting for?',\n", + " '내 맘을 알잖아 baby (yeah)',\n", + " '처음인 것처럼 feel this',\n", + " '아직 남아있는 너의 첫 느낌 너의 느낌',\n", + " 'i wanna love like the first time',\n", + " 'rewind it back 시간이 없어 난',\n", + " \"won't you bring that ass over\",\n", + " \"아침이 오기 전에 let's go\",\n", + " \"넌 위험해 취한 듯 even when i'm sober\",\n", + " \"내 몸이 너를 원해 let's go\",\n", + " '나도 잘 알아 너의 떨림을 느끼고 있어',\n", + " \"i ain't trippin cause this real love, this is real love\",\n", + " 'girl, i got it 매일 밤 너를 상상해 (baby)',\n", + " '완벽한 body, i know you gonna hurt somebody',\n", + " '처음이자 마지막 같은 느낌만 줄게',\n", + " \"that's why i need your number\",\n", + " \"top of the list (you're the top)\",\n", + " '그 많고 많은 여자들 사이에 제일 으뜸은 바로 너야',\n", + " \"i’m gon' work for that kiss, muah\",\n", + " '제일 좋아, 연락해, 널 데리러 와 asap',\n", + " '네 옆에 널 집적대는 놈들',\n", + " '위협해 but don’t be afraid, i got you',\n", + " '기억해 내 이름 내 모습',\n", + " '여긴 너무 정신없어 let’s relocate',\n", + " '천천히 해 느끼고 싶어 난',\n", + " \"i'mma make you come over\",\n", + " \"그 다음 알잖아 let's go\",\n", + " '너의 뒤에 있을게 cause when you bend over',\n", + " \"i'll hit it from the back so let's go\",\n", + " '이젠 잘 알아 너의 몸짓을 느끼고 있어',\n", + " \"i ain't trippin' cause this is real love, this is real love\",\n", + " 'girl, i got it 매일 밤 너를 상상해 (baby)',\n", + " '완벽한 body, i know you gonna hurt somebody',\n", + " '처음이자 마지막 같은 느낌만 줄게',\n", + " \"that's why i need your number\",\n", + " 'shawty ride with your baby',\n", + " '너의 하얀 mercedes 비교할 수가 없지',\n", + " '너의 그림 같은 body 너 내게 1 of 1',\n", + " \"we gon' have some fun tonight\",\n", + " '모두가 널 원하지만',\n", + " '그래도 내 옆에 있는 이유',\n", + " 'girl, i got it 매일 밤 너를 상상해 (baby)',\n", + " '완벽한 body, i know you gonna hurt somebody',\n", + " '처음이자 마지막 같은 느낌만 줄게',\n", + " \"that's why i need your number\",\n", + " 'all i want is your digits',\n", + " \"call you even when i'm busy\",\n", + " \"you and i, it's that ride or die\",\n", + " \"i'mma pull up in a minute\",\n", + " 'all i want is your digits',\n", + " \"call you even when i'm busy\",\n", + " \"you and i, it's that ride or die\",\n", + " \"i'mma pull up in a minute\",\n", + " '하루가 지나도 울리지 않는 phone',\n", + " '이젠 이런 기다림이 더 익숙해진걸',\n", + " '모래시계처럼 쌓이는 한숨관 반대로',\n", + " '너에 대한 내 기댄 서서히 줄어들어',\n", + " '믿었었어, 바빴다면서',\n", + " '어색한 핑계를 늘어놓는 널 봐도',\n", + " '몰랐었어, 내심 알았는지도',\n", + " '그저 네가 변했다는 사실을',\n", + " '믿기 싫었을 뿐',\n", + " 'tell me what to do',\n", + " \"i don't know what to do\",\n", + " 'your love is just a memory',\n", + " \"baby, it's your last time\",\n", + " 'to give me your best try',\n", + " 'and to give your heart to me',\n", + " '대체 왜 이래? 그만해, 이제',\n", + " '이별 노래의 가사처럼 변해 가는 너의 말',\n", + " 'it seems like over to us',\n", + " '잦은 다툼 속 의미 없는 상철 남기고',\n", + " '전불 되돌리기엔 너무 늦은 듯해',\n", + " '부질없어, 전불 쏟아도',\n", + " '결국엔 채워지지 않을 너처럼, oh oh',\n", + " '이젠 알겠어, 원래 알았는지도',\n", + " '이별은 예정된 결말처럼',\n", + " '우리 앞에 놓인걸 (yeah yeah)',\n", + " 'tell me what to do',\n", + " \"i don't know what to do\",\n", + " 'your love is just a memory',\n", + " '(your love is just a memory, yeah)',\n", + " \"baby, it's your last time\",\n", + " 'to give me your best try',\n", + " 'and to give your heart to me',\n", + " '(take it to the bridge)',\n", + " 'yeah, yeah, yeah (ay you know?)',\n", + " '얼마나 많은 생각이 오갔는지, baby',\n", + " 'yeah, yeah, yeah',\n", + " 'yeah, yeah, yeah',\n", + " '누군간 마지막을 말해야겠지, ooh',\n", + " 'tell me what to do',\n", + " \"i don't know what to do\",\n", + " 'your love is just a memory (ooh yeah, yeah, yeah, yeah)',\n", + " \"baby, it's your last time to\",\n", + " 'give me your best try (no more, ooh)',\n", + " 'and to give your heart to me (this love is over)',\n", + " 'tell me what to do',\n", + " \"i don't know what to do (i don't know what to say, no more, yeah)\",\n", + " 'your love is just a memory (yeah) (whatever you want)',\n", + " \"baby, it's your last time (whatever you say)\",\n", + " 'to give me your best try',\n", + " \"and to give your heart to me (we know it's over)\",\n", + " '넌 언제나 내게',\n", + " '새로운 걸 보여줘서',\n", + " '대신할 수 없어',\n", + " '다른 어떤 것도 yeah',\n", + " 'let me teach you baby',\n", + " '나의 모든 걸',\n", + " '너의 마음에 담아줄게',\n", + " '춤이 끝나지 않게',\n", + " '사랑이 멈추지 않게',\n", + " 'my baby yeah',\n", + " 'late at night, i think of you',\n", + " 'baby late at night, i think of you',\n", + " 'late at night, i think of you',\n", + " 'baby late at night, i think of you',\n", + " 'killing me softly (woo woo woo)',\n", + " 'when i feel so lonely (woo woo woo)',\n", + " 'let me love you baby (woo woo woo)',\n", + " 'you are so lovely (woo woo woo)',\n", + " '밤이 찾아오면 나는 널 생각해',\n", + " '아니 사실 하루 종일 난 널 생각해',\n", + " 'you know',\n", + " 'everything every night',\n", + " 'so sensitive',\n", + " 'i’ll give it to you one more time hey',\n", + " '있을게 너의 옆에',\n", + " '있어줘 넌 나의 muse',\n", + " 'oops 나의 꿈을 가득 채운',\n", + " '너의 모습, 포즈',\n", + " 'i’ll take a picture of you',\n", + " '우리는 춤을 출 거야',\n", + " '그리고 새로운 세상을 볼 거야',\n", + " '다른 애들은 시시해서 넌 아마 이어폰을 낄 거고',\n", + " '내 노래를 듣게 될 거야',\n", + " '밤새 내 노래 안에서 쉬어도 돼',\n", + " '너가 없었으면 이 노래도 없기에',\n", + " '너가 없으면 이 노래는 없지',\n", + " 'baby 그러니까 춤을 추자 밤새 yeah',\n", + " 'late at night, i think of you',\n", + " 'baby late at night, i think of you',\n", + " 'late at night, i think of you',\n", + " 'baby late at night, i think of you',\n", + " 'killing me softly (woo woo woo)',\n", + " 'when i feel so lonely (woo woo woo)',\n", + " 'let me love you baby (woo woo woo)',\n", + " 'you are so lovely (woo woo woo)',\n", + " '다시 너를 보내기 전에',\n", + " '전화기를 꺼내기 전에',\n", + " 'you know i want more',\n", + " 'so do you want it',\n", + " 'all we gotta do',\n", + " 'one thing rewind it',\n", + " '넌 완벽해 내겐 정말',\n", + " '전화해 it is alright',\n", + " 'baby 너에게 익숙해져만 가',\n", + " '매일이 오늘 같기를',\n", + " '바라고 바래 난 baby',\n", + " 'you like dream',\n", + " \"but it's real life\",\n", + " 'baby you make me alive',\n", + " 'now i know',\n", + " 'that it is real my baby',\n", + " '너 때문에 realize',\n", + " '네가 나의 의미였나',\n", + " '주변의 시선들은',\n", + " '다 밖으로 미뤄놔',\n", + " '줄게 더 많이',\n", + " '거기 있어 가만히',\n", + " \"bae you say it's alright\",\n", + " 'and praise me all night',\n", + " '품에 안아도 함께 눈 감아지길',\n", + " '난 네 옆에서 널 보았을 때',\n", + " '너의 모든 것을 다 가졌으니',\n", + " 'i give enough time',\n", + " 'i give enough time',\n", + " 'i know that we feelin’ alright',\n", + " 'all you wanted is all i wanted',\n", + " 'so i give enough time',\n", + " 'i give enough time',\n", + " \"i know that we feelin' alright\",\n", + " 'all i wanted is all you wanted',\n", + " '아직은 널 보내긴 일러',\n", + " 'it ain’t unfamiliar',\n", + " 'i call you my real love',\n", + " '너와 나 둘 만의 방식',\n", + " '내일을 더 기다리는지',\n", + " 'we got no worries',\n", + " '우리 둘이 전부 완벽해 이미',\n", + " \"that's how i feel like\",\n", + " 'get high 더 준비해놔',\n", + " '5:30 너를 위해 나',\n", + " 'bae we gonna be alright',\n", + " '닮아가는 너의 그 모습',\n", + " '마음에 들기만 해',\n", + " '모든 걸 감안해도 나의',\n", + " \"bae you say it's alright\",\n", + " 'and praise me all night',\n", + " '품에 안아도 함께 눈 감아지길',\n", + " '난 네 옆에서 널 보았을 때',\n", + " '너의 모든 것을 다 가졌으니',\n", + " 'i give enough time',\n", + " 'i give enough time',\n", + " \"i know that we feelin' alright\",\n", + " 'all you wanted is all i wanted',\n", + " 'so i give enough time',\n", + " 'i give enough time',\n", + " \"i know that we feelin' alright\",\n", + " 'all i wanted is all you wanted',\n", + " '다시 너를 보내기 전에',\n", + " '전화가 울리기 전에',\n", + " 'you know i want more',\n", + " 'so do you want it',\n", + " 'all we gotta do',\n", + " 'one thing rewind it',\n", + " 'you acting so positive right',\n", + " '주말이 왔으니 기분은 high',\n", + " 'yeah i’m feelin’ alright',\n", + " '네 모든 것들이 이제',\n", + " 'makes me alive',\n", + " 'it’s hard for me to realize',\n", + " '익숙하지 않은 긴 밤',\n", + " '너와 계속해 걸어도 돼',\n", + " 'i’ll be dreaming',\n", + " 'in my real life',\n", + " '너와 단 둘이서 남아',\n", + " '너도 같은 마음 일걸 알아',\n", + " 'we here to feel alright',\n", + " 'i know we gonna spend all night',\n", + " '다시 너를 보내기 전에',\n", + " '전화가 울리기 전에',\n", + " 'you know i want more',\n", + " 'so do you want it',\n", + " 'all we gotta do',\n", + " 'one thing rewind it',\n", + " 'you acting so positive right',\n", + " '주말이 왔으니 기분은 high',\n", + " 'yeah i’m feelin’ alright',\n", + " '네 모든 것들이 이제',\n", + " 'makes me alive',\n", + " 'it’s hard for me to realize',\n", + " '익숙하지 않은 긴 밤',\n", + " '너와 계속해 걸어도 돼',\n", + " 'i’ll be dreaming in my real life',\n", + " '너와 단 둘이서 남아',\n", + " '너도 같은 마음 일걸 알아',\n", + " 'we here to feel alright',\n", + " 'i know we gonna spend all night',\n", + " '널 닮은 새하얀 리듬 속삭이듯 내 귓가를',\n", + " '우리의 그 추억들이 하나 둘 되살아나',\n", + " '이대로 멈춰도 좋아 아무래도 난 좋아',\n", + " '빛바랜 옛 기억들이 스쳐 지나네',\n", + " 'you and me 우리 둘이',\n", + " '시원한 바람 속 멜로디',\n", + " 'here with me, stay with me',\n", + " '따뜻한 너의 작은 목소리',\n", + " 'oh how much i love you',\n", + " '우리 여기 함께 있어',\n", + " '내 손을 잡고 두 눈을 감아',\n", + " 'this song is for you',\n", + " 'i wanna give love to you',\n", + " 'everyday i think of you',\n", + " 'i wanna make you feel good',\n", + " 'everywhere i think about you',\n", + " 'i wanna give love to you',\n", + " 'everyday i think of you',\n", + " 'i wanna make you feel good',\n", + " 'everyday, everyday',\n", + " 'you and me 우리 둘이',\n", + " '시원한 바람 속 멜로디',\n", + " 'here with me, stay with me',\n", + " '따뜻한 너의 작은 목소리',\n", + " 'oh how much i love you',\n", + " '우리 여기 함께 있어',\n", + " '내 손을 잡고 두 눈을 감아',\n", + " 'this song is for you',\n", + " 'i wanna give love to you',\n", + " 'everyday i think of you',\n", + " 'i wanna make you feel good',\n", + " 'everywhere i think about you',\n", + " 'i wanna give love to you',\n", + " 'everyday i think of you',\n", + " 'i wanna make you feel good',\n", + " 'everyday, everyday',\n", + " 'i wanna give love to you',\n", + " 'give my love to you',\n", + " '가끔씩',\n", + " '들리지 않는지',\n", + " '되묻지 내게',\n", + " '한번씩',\n", + " '보이지는 않는지',\n", + " '되묻지 네게 되묻지',\n", + " '우린 좀 멀어져도 서로를 잊지마',\n", + " '가끈은 기억에세 꺼내고 살아',\n", + " 'we will live separate lives',\n", + " \"but don't say bye\",\n", + " \"don't say bye\",\n", + " '구겨진옷들 사이에 널',\n", + " '넣고서 나는',\n", + " '또뭘 챙겨야 하는지',\n", + " '우린는 어디 있는지',\n", + " '시간은 계속 나를 보채',\n", + " '우린 좀 멀어져도 서로를 잊지마',\n", + " '가끈은 기억에세 꺼내고 살아',\n", + " 'we will live separate lives',\n", + " \"but don't say bye\",\n", + " \"don't say bye\",\n", + " 'always always comes and goes',\n", + " 'always always comes and goes',\n", + " \"we don't get it\",\n", + " 'always always comes and goes',\n", + " 'always always comes and goes',\n", + " \"we don't get it\",\n", + " 'my flight leaves in 4hours',\n", + " \"and i'm calling you\",\n", + " 'your flight leaves in 4hours',\n", + " \"and you're calling me\",\n", + " '우린 좀 멀어져도 서로를 잊지마',\n", + " '가끈은 기억에세 꺼내고 살아',\n", + " 'we will live separate lives',\n", + " \"but don't say bye\",\n", + " \"don't say bye\",\n", + " 'always always comes and goes',\n", + " 'always always comes and goes',\n", + " \"we don't get it\",\n", + " 'always always comes and goes',\n", + " 'always always comes and goes',\n", + " \"we don't get it\",\n", + " '난 알고있어 아주 먼 곳에 네가 있단걸',\n", + " '파란 별이 방안의 날 비추는 밤. 작은 창가에 기대 앉아',\n", + " '짙은 구름이 바람결에 흔들릴때 그때만을 기다려요',\n", + " '물에 잠긴 내 동공에 보름달이 일식 할 때',\n", + " 'talking to the moon',\n", + " '두 눈을 뜬채 밤을 지새워',\n", + " 'talking to the moon',\n", + " '혹시 그대도 저 달을 보며 내게 말 할까봐',\n", + " '바보같이 난 기대해',\n", + " '닿을수 없는 그대에게 나의 부름이 전해지게',\n", + " '부디, 제발 my baby',\n", + " '언젠가 네가 꿈속에서 내 음성을 듣는 날이 오게되면',\n", + " '입술을 열어. 망설이지 말고 대답해줘. 너도 날 그린다고',\n", + " '짙은 구름이 바람결에 흔들릴때 그때만을 기다려요',\n", + " '차오르는 그리움에',\n", + " '물에 잠긴 내 동공에 보름달이 일식 할 때',\n", + " 'talking to the moon',\n", + " '두 눈을 뜬채 밤을 지새워',\n", + " 'talking to the moon',\n", + " '혹시 그대도 저 달을 보며 내게 말 할까봐',\n", + " '바보같이 난 기대해',\n", + " '닿을수 없는 그대에게 나의 부름이 전해지게',\n", + " '부디, 제발 my baby',\n", + " 'talking to the moon',\n", + " '두 눈을 뜬채 밤을 지새워',\n", + " 'talking to the moon',\n", + " '혹시 그대도 저 달을 보며 내게 말 할까봐',\n", + " '바보같이 난 기대해',\n", + " '닿을수 없는 그대에게 나의 부름이 전해지게',\n", + " '부디, 제발 my baby, my baby',\n", + " \"i know. you're somewhere far away\",\n", + " 'the night when the blue star lights me up in the room. lean on the window',\n", + " 'wait for the clouds to wobble in the wind',\n", + " 'when the full moon gets a eclipse in my submerged pupil',\n", + " 'talking to the moon',\n", + " 'stay up all night with my eyes open',\n", + " 'talking to the moon',\n", + " \"maybe you'll see the moon and talk to me\",\n", + " 'i expect like a fool',\n", + " 'try to call you but can not reach',\n", + " 'please, oh please, my baby',\n", + " 'someday when you listen to my voice in your dreams',\n", + " 'open your lips. dont hesitate to answer. u miss me too',\n", + " 'wait for the clouds to wobble in the wind',\n", + " 'heart filled of longing',\n", + " 'when the full moon gets a eclipse in my submerged pupil',\n", + " 'talking to the moon',\n", + " 'stay up all night with my eyes open',\n", + " 'talking to the moon',\n", + " \"maybe you'll see the moon and talk to me\",\n", + " 'i expect like a fool',\n", + " 'try to call you but can not reach',\n", + " 'please, oh please, my baby',\n", + " 'talking to the moon',\n", + " 'stay up all night with my eyes open',\n", + " 'talking to the moon',\n", + " \"maybe you'll see the moon and talk to me\",\n", + " 'i expect like a fool',\n", + " 'try to call you but can not reach',\n", + " 'please, oh please, my baby',\n", + " '이 밤은 까맣고 고요해',\n", + " '차가운 공기만 메우네',\n", + " '너가 비운 자리를',\n", + " '채워줄 누군가를 또 찾네',\n", + " '내 밤은 그렇듯 여전해',\n", + " '뭐가 와도 난 허전해',\n", + " 'the days keep goin on',\n", + " 'and imma keep it straight it',\n", + " 'like as it was',\n", + " '뭐 또 그렇지 yeh',\n", + " '내가 그렇지 yeh',\n", + " '별 의심 없이 딴 여지없이',\n", + " '너를 내 안에 뒀지',\n", + " '난 또 속았지 yeah',\n", + " '난 다 줬으니 yeah',\n", + " '남은 건 없지',\n", + " '난 망가졌으니',\n", + " 'nothing to lose',\n", + " 'and nothing to proof',\n", + " \"cause you've got everything\",\n", + " \"you've got everything\",\n", + " 'nothing to lose',\n", + " 'and nothing to proof',\n", + " \"cause you've got everything\",\n", + " \"you've got everything\",\n", + " '이 밤은 까맣고 고요해',\n", + " '차가운 공기만 메우네',\n", + " '네 체취가 그리워져',\n", + " '행여 하는 마음에 또',\n", + " '널 드리우네',\n", + " '내 밤은 그렇듯 여전해',\n", + " '뭐가 와도 난 허전해',\n", + " '날 벼랑 끝에 모나봐',\n", + " '너를 담은 게 내 죄인듯해',\n", + " '뭐 또 그렇지 yeh',\n", + " '내가 그렇지 yeh',\n", + " '별 의심 없이 딴 여지없이',\n", + " '너를 내 안에 뒀지',\n", + " '난 또 속았지 yeah',\n", + " '난 다 줬으니 yeah',\n", + " '남은 건 없지',\n", + " '난 망가졌으니',\n", + " 'nothing to lose',\n", + " 'and nothing to proof',\n", + " \"cause you've got everything\",\n", + " \"you've got everything\",\n", + " 'nothing to lose',\n", + " 'and nothing to proof',\n", + " \"cause you've got everything\",\n", + " \"you've got everything\",\n", + " \"you've got everything\",\n", + " \"you've got everything\",\n", + " \"you've got everything\",\n", + " \"you've got everything\",\n", + " '다 가져가고 남은 건 없어',\n", + " '난 망가졌어 더 잃을 건 없어',\n", + " 'i think i’m lost i’m lost i’m lost',\n", + " 'i think i’m lost i’m lost i’m lost',\n", + " 'nothing to lose',\n", + " 'and nothing to proof',\n", + " \"cause you've got everything\",\n", + " \"you've got everything\",\n", + " 'nothing to lose',\n", + " 'and nothing to proof',\n", + " \"cause you've got everything\",\n", + " \"you've got everything\",\n", + " 'nothing to lose',\n", + " 'and nothing to proof',\n", + " 'nothing to lose',\n", + " 'and nothing to proof',\n", + " 'you know we had to do a remix',\n", + " 'for this one',\n", + " \"it's official\",\n", + " 'this is',\n", + " 'this the motherfucking remix baby',\n", + " 'shawty take a ride you a bad bitch',\n", + " '뒤로 back it up 여기까지',\n", + " 'lamborghini door suicide',\n", + " \"빨간 'raris on the floor\",\n", + " 'make a bitch automatic',\n", + " '이미 너의 몸 automatic',\n", + " '너의 touch 나의 drip automatic',\n", + " '알아서 올라가',\n", + " '말 안해도 하잖아',\n", + " 'i make a bitch automatic',\n", + " 'baby, link up',\n", + " \"you know it's automatic\",\n", + " 'let me do you like a savage',\n", + " 'i be in a casket',\n", + " \"'cause you looks kill\",\n", + " 'so let me get a taste',\n", + " \"i'm sure you're bored with these other guys\",\n", + " \"it's no surprise\",\n", + " 'so put it on me',\n", + " 'just feel the tides all up on your body',\n", + " \"soaking wet, i'll leave you\",\n", + " '내 취향은 입맛부터',\n", + " '너까지 비슷한 맛',\n", + " 'i like it, lick it like',\n", + " '대리 아저씨는 우리 뒷좌석만 봐',\n", + " '자꾸 흘끔흘끔대 just ride',\n", + " '원한다고 말해 내 어깨 무릎 발',\n", + " 'oh, daddy, daddy wanna slap my ass',\n", + " '손 까딱 uh 가까이와 uh',\n", + " '내가 아 하면 넌 어',\n", + " 'like automatics',\n", + " \"딱딱해 you're so naughty\",\n", + " 'full course mеal, umm, umm, yummy',\n", + " '규칙적인 반응이 더 야해',\n", + " '우린 안 멈춰 기계처럼 서서 해',\n", + " '한 번 두 번 그 뒤론 안 셌어',\n", + " '밤새워 (skrr, skrr)',\n", + " 'handprint and good grips',\n", + " '우리가 탄 머스탱 엔진과열',\n", + " 'she moves like',\n", + " \"shе's on motorcycle\",\n", + " \"give her lil' pow pow\",\n", + " 'on her baby maker',\n", + " '떨어트려 너의 oil',\n", + " '좋아서 어쩔 줄',\n", + " 'one zero one',\n", + " \"she's being automatic\",\n", + " 'no way to stop',\n", + " \"bitch i'm magnetic\",\n", + " '내가 쌩 하면 쓩 하고 날아갔지',\n", + " '슈퍼보드보다 짧은 너의 사정거리',\n", + " '나를 짧게 봤다면 니 손해',\n", + " '놀아나게 되는거야 내 손에',\n", + " \"i'm pretty lil' ching but i'm loco\",\n", + " 'and you start vibrating',\n", + " 'like automatic',\n", + " 'you lucky lucky to see',\n", + " 'an asian girl this tatted',\n", + " 'this girl has her personal magic',\n", + " \"when you're home\",\n", + " \"boys see me they fuckin' panic\",\n", + " '내 목소리 들음 지갑 열어 automatic',\n", + " 'quick bitch please',\n", + " \"i'm the one to fuckin' deal\",\n", + " \"they say i'm going to the top, top already\",\n", + " 'jamie 변했다 변했다',\n", + " 'the only time you get laid',\n", + " \"when there's packs of money\",\n", + " '변한건 너의 시선이',\n", + " '넌 또 억울함을 삼켜',\n", + " '불효자는 울어',\n", + " 'stop whining bish, stop',\n", + " 'stop',\n", + " 'come and take a ride with a bad bitch',\n", + " \"i'ma work it up 여기까지\",\n", + " 'drop the top down 뭐든지',\n", + " '어디든 bitches know who i be',\n", + " \"i'm a savage\",\n", + " '너의 모든 것 automatic',\n", + " 'that coupe that juice automatic',\n", + " '알아서 올라가',\n", + " '말 안해도 알잖아',\n", + " 'i make a, automatic',\n", + " \"don't you know?\",\n", + " 'i can do this thing all the time',\n", + " 'here i come',\n", + " '05 년부터 지금까지 i still put it down',\n", + " '혹시 모른다면 better do your homework',\n", + " \"mess with a og like me it's a real thing\",\n", + " '내가 데려다줄게',\n", + " \"'cause i can take you way up high\",\n", + " 'v twins and automatics',\n", + " '883 배기음 goes wild',\n", + " 'so you wanna be',\n", + " 'playa, playa',\n", + " '난 써내 오직 좋은 톤의 tracks',\n", + " '야자수 아래 시동걸린 hd',\n", + " '소리 아래 two wheels for life',\n", + " 'ride with me 차별 없이',\n", + " '나란히 지평 너머',\n", + " '감아 throttle wild',\n", + " 'on behalf of the misfits',\n", + " '변하고 있어',\n", + " 'this verse be the proof',\n", + " '나의 앞은 뚫려 있어',\n", + " 'you see my',\n", + " 'v twin on automatic',\n", + " \"dreaming falling in fantasy till i'm so high\",\n", + " '입술이 자연스레 뱉는 나의 멜로디',\n", + " \"dreaming falling in fantasy until i'm so high\",\n", + " '널 지배하지 my vibe',\n", + " 'what you waiting for oh, oh',\n", + " '그래 나는 자유롭지 super fly always',\n", + " 'positive, positive',\n", + " 'back up on ma real shit (yeah)',\n", + " 'what you waiting for oh, oh',\n", + " \"대기는 필요없지 i'm first in line\",\n", + " 'ready, set, automatic check',\n", + " \"now i'm taking off\",\n", + " 'let me take that ass home 준비되면 말해',\n", + " '시동은 걸려있어 벌써 밖에 valet',\n", + " '굳이 말하지 않아도',\n", + " '이미 내 이름 들어봤잖아 (babylon)',\n", + " 'oh 눈빛만 봐도 알어',\n", + " '넌 기계처럼 you a auto',\n", + " '더 빠르게 빠르게 make it clap',\n", + " 'girl you look good real good',\n", + " \"won't you back that\",\n", + " 'a-ut-oma-tic',\n", + " '달아올라 all night',\n", + " \"위험해 'cause she automatic\",\n", + " 'hold up',\n", + " '눈이 마주친 그 다음엔',\n", + " 'hold up',\n", + " '스치듯 손이 닿은 이 순간',\n", + " '너와 나는 이미 서로에게',\n", + " '녹아 하나가 된 듯한 기분',\n", + " '비 비 빙빙 취해 너에게 가고 싶어',\n", + " '닿기만 해 닿기만 해',\n", + " '어찌할 바를 모르게',\n", + " '당혹스럽게 널 압도하려고',\n", + " '애매하게 날 깨우면',\n", + " '아주 크게 소리내 널 물어버리고',\n", + " '떠날 지 몰라',\n", + " '다시 날 잊지 못하게',\n", + " '떠날 지 몰라',\n", + " '내게 어디서 왔냐 물어보면 난 모르지',\n", + " '나도 내가 어디서 튀어나온 건 지 모르니까',\n", + " '그게 뭐가 중요해',\n", + " '지금 내가 어딨는 지가 중요해',\n", + " '나랑 같이 내가 보고 있는 걸',\n", + " '같이 하고 싶으면',\n", + " '내 옆에 딱 달라붙어',\n", + " 'uh 달라붙어 uh 밀착해',\n", + " '넌 나의 친구도 좋고',\n", + " '더 뜨거워도 좋아',\n", + " \"told you i'm going down\",\n", + " 'no need to mess around',\n", + " '그래 baby 날 믿어',\n", + " '널 위해서 다 밀어',\n", + " \"i'll be your private eye\",\n", + " 'every need be satisfied',\n", + " 'wap, wap, licky, licky right there',\n", + " 'wap, wap, licky, licky right there',\n", + " \"don't be too shy\",\n", + " 'beautiful ones we know',\n", + " 'what what you do to me',\n", + " 'make me, ooh, yeah, wanna breathe',\n", + " 'wilding out for you',\n", + " 'what?',\n", + " \"let's all enjoy the ride\",\n", + " \"it's so automatic\",\n", + " \"can't tell me nothing\",\n", + " '혼자하는 사랑도 좋지만',\n", + " '누가 뭐래도 난 너랑 나눌 때가 제일 좋아',\n", + " \"i'm back on the microphone\",\n", + " 'with r&b 알고 있지',\n", + " '네가 뭘 원하는지',\n", + " 'i make it look easy 너무 쉽게',\n", + " '마치 do, re, mi, uh, do, re, mi',\n", + " 'ay chancellor you got my back homie',\n", + " '시동을 걸어 vroom 갈 시간이 됐어',\n", + " '흐름 타지 못하는 저 병신들은 제껴',\n", + " 'so smooth 이 트랙 위에선 아무도',\n", + " \"못 따라오지 let's work\",\n", + " \"이제서야 몸 풀었으니 let's work\",\n", + " 'drifting 해 drifting that s course',\n", + " '어디까지 갈지 몰라도 끝까지',\n", + " \"let's get retarded\",\n", + " '알고 있지 네가 뭘 원하는지',\n", + " '알고 있어 네가 뭘 더 원하는지',\n", + " 'move bitch get out the way',\n", + " 'get out the way 비켜',\n", + " '굳이 말 안 해도 yeah you already know',\n", + " 'this shit is automatic',\n", + " 'yeah when i skrrt, skrrt 로데오',\n", + " 'they be like automatic',\n", + " '니 옆에 그녈 내 옆에 옮기는 magic',\n", + " 'i make her drip, drip, drip 나를 조심해',\n", + " '눈 깜짝할 새 우린 호텔 로비에',\n", + " 'i put a key in my automatic',\n", + " '배기음 소리는 like a bad bitch',\n", + " 'giddy up, giddy up 너의 엔진',\n", + " '멈추지 마 보고 싶어 너의 flexing',\n", + " '속도를 올려 끝이 보이는 race',\n", + " 'she swerve on me 당연하다는 듯이',\n", + " '별이 비추는 천장 아래서 dance',\n", + " '검은 ghost make a bitch automatic',\n", + " \"oceanfromtheblue, yeah that's me\",\n", + " '시간이 없으니 옷은 안 벗고',\n", + " '작아도 커 보이는 나의 존재감',\n", + " '떠나면 느껴질 거야 나의 부재가',\n", + " 'oh 가이드는 필요 없어',\n", + " 'yeah 이건 프리스타일',\n", + " '난 생각 없이 뱉는 verse 에',\n", + " '벌써 다가오는 다음 step 준비할 뿐',\n", + " \"i'm so automatic when you do\",\n", + " 'and i hope you do too',\n", + " \"for my baby i'll do anything\",\n", + " 'and i hope you do too',\n", + " \"i'm so wavy not be lazy\",\n", + " 'for my baby trust me',\n", + " '요즘 그녈 위해 일하는 중',\n", + " '내 다음 수 안 보이지',\n", + " '절대 보일일 없지',\n", + " \"'cause i'm automatic\",\n", + " \"what's the next for me\",\n", + " '말이 좀 많은 것 같애',\n", + " 'want you to shut up for me',\n", + " 'fuck that fantasy',\n", + " '하고 싶은 걸 다 do it on me',\n", + " \"if you ain't about that bad bitch\",\n", + " \"you wouldn't be looking for me\",\n", + " '엑셀을 밟어 넌',\n", + " '멈추는 법이 없지',\n", + " '이미 넌 날 알듯이',\n", + " 'i got you automatic',\n", + " '너와 난 춤추듯이',\n", + " \"we goin' acrobatic\",\n", + " 'i love the power',\n", + " \"when i'm on top 꿰뚫어 보지\",\n", + " '언제나 니 마음 안아줄게 사랑으로',\n", + " \"매일 i'm full of love\",\n", + " '멀리봐 여긴 game',\n", + " '모두 원할 걸 다',\n", + " \"yes that's right babe\",\n", + " 'you wanna come inside?',\n", + " '지혜로운 사람되자',\n", + " \"진지하게 안해 it's automatic\",\n", + " '그냥 재밌게 해',\n", + " 'baby, just take a bite',\n", + " 'we talk more than we feel though',\n", + " \"but damn sixth sense ain't a thing to trust\",\n", + " \"girl i'll give time for you to relax\",\n", + " \"ain't no bitch can surpass you a lady\",\n", + " '꺼져가는 빛을 위해 thunder (volt)',\n", + " \"뒷말은 다 들려 don't you shut up\",\n", + " 'we need love and the peace and',\n", + " 'whatever',\n", + " '다 틀린게 없어 잠깐 동안만',\n", + " \"baby, won't you lose that smile\",\n", + " \"it ain't for the gram\",\n", + " \"it's just a game\",\n", + " \"why don't you play?\",\n", + " 'yeah',\n", + " \"5 o'clock in the morning\",\n", + " '시간이 지나면 평온한 밤이 오길',\n", + " '모두가 자는 중임',\n", + " '아무도 몰래 떠나 이 자리에서 멀리',\n", + " 'well, well, bump like odell',\n", + " '모두가 잠든 사이 호텔 로비에',\n", + " '다 쥐죽은듯이 조용해',\n", + " '이 밤이 가기 전에 널 초대해',\n", + " \"timeless tales you're too far away\",\n", + " 'from me it is rapunzel',\n", + " '난 잡힐 듯 잡히지 않겠지',\n", + " '쉬운 듯이 연기했었네',\n", + " \"12 o'clock, it's 12 o'clock\",\n", + " \"there's no way to find no way to find us\",\n", + " '내게 올라타 나를 따라오면 돼',\n", + " '빨리 아무도 모르게',\n", + " \"i've been giving rides to the bad bitches\",\n", + " '머리카락 발바닥 모두 fine creatures',\n", + " '혓바닥 쳐다봐 너네 lane switchers',\n", + " '촉촉했지만 이젠 dry swishers',\n", + " '보다 못해 빨리 타',\n", + " '내 생각에 너는 목이 타',\n", + " '뜨거워지고 땀이나',\n", + " 'takes some beads and take it off',\n", + " \"like it's mardi gras\",\n", + " '자전거 automatic',\n", + " '달리면 기분 좋아 automatic',\n", + " '네가 날 automatic',\n", + " 'ummm',\n", + " \"baby i'm a tesla autopilot\",\n", + " '소리없지만 innovative 해',\n", + " '각자의 삶을 풀어 우린',\n", + " '음악으로 너네들 귀를 놀리지',\n", + " '집밖으로 나가기는 아직 무리',\n", + " '이어폰을 꽂은 채',\n", + " '눈을 감아줘 please',\n", + " '이런 음악이 너네를 riding 하는',\n", + " '기분을 들게 만든다면 반 정도 succeed',\n", + " '이건 마치 새로 뽑은 nike 옷을 입고',\n", + " '한강 질주하는 기분 um i like this',\n", + " '사람들은 어디에서',\n", + " '뭘 하며 낙을 볼지 궁금해',\n", + " '너의 마음을 달래기 위해',\n", + " '이 멜로디가 약이 되었으면 해',\n", + " '이 멜로디가 너를 깨웠으면 해',\n", + " '우리 음악이 평화를 만들었으면 해',\n", + " '우린 많은게 바뀌게 될 거라고 man',\n", + " 'negative vibe, put it aside',\n", + " 'shout out to the ones',\n", + " 'who have rolled the dice',\n", + " 'we be balling never be falling',\n", + " \"i'ma go chase only good end\",\n", + " 'got your back we got mutual trust in',\n", + " '더 깊은 바다를 헤엄치길 원해',\n", + " '깊은 바다를 헤엄치길 원해',\n", + " \"think it's funny\",\n", + " 'how you always be complaining',\n", + " 'all you do is wait for the moment',\n", + " 'gotta hit your own scheme like',\n", + " 'boom boom pow',\n", + " \"if you run away it's a goodbye ciao\",\n", + " 'ayo bring that shit from the top',\n", + " 'all the way from the top',\n", + " '위험해 너의 몸 내 위에',\n", + " '빠르게 질주해 you crash it',\n", + " \"위험해 위험해 i don't mind\",\n", + " \"long as she got a bag i'll smash it\",\n", + " \"어디든 i'll smash it\",\n", + " \"여기 차 안에서 i'll smash it\",\n", + " 'brake for the pussy i park it',\n", + " 'then beat it up mike tyson',\n", + " \"shawty we ain't got no time\",\n", + " '시간이 없어 지금 당장 올라타',\n", + " \"i'm sitting down on the bed 우린 계속 가\",\n", + " '밤새 24/7 stay up all night',\n", + " '아직 갈 길이 너무 멀어',\n", + " \"baby, i'ma pop your body\",\n", + " '조명 아래 너의 허리 라인',\n", + " '나를 미치게 해 너의 거친 숨소리까지',\n", + " \"i'm feeling your vibe\",\n", + " 'you feeling my vibe',\n", + " 'oh i make a bitch automatic',\n", + " 'baby, want you to',\n", + " 'come up with that for me',\n", + " '나 모른 척 할게 속삭여줘 몰래',\n", + " 'you can drive up all night',\n", + " '너 다다를 때까지',\n", + " '널 데려가 어디든 다',\n", + " '자연스럽게 automatic',\n", + " 'but 따라오는 건 manual shit',\n", + " '난 사실 빠른 건 별로',\n", + " 'auto 보단 stick analog',\n", + " '조금씩 흔들리는 네 몸짓',\n", + " '창문은 열어둬 더워질 걸 automatic',\n", + " 'hey baby, in da coupe',\n", + " 'keep push it 더 쭉',\n", + " \"don't stop it baby\",\n", + " '발이 끝까지 닿을 때까지',\n", + " 'hey, give me that loop',\n", + " '위험해 보여도 난 with my whole crew',\n", + " \"yeah, it's automatic\",\n", + " '속도는 계속 dramatic',\n", + " '준비해 ready and get set go',\n", + " 'uno, dos and tres and four',\n", + " 'let me know what you waiting for',\n", + " \"don't mess it up, ready and get set go\",\n", + " '뒤에서 우릴 따라오지 못하게',\n", + " \"yeah, we gotta don't stop\",\n", + " '알아 나도 지금 우린 위험해',\n", + " ...]},\n", + " 'data': ['korean original',\n", + " '뻔한 노래 이제 끌래?',\n", + " '내가 느끼게 해 줄 새로운 설렘',\n", + " '눈을 감고 파도가 넘치는 바다로 가는, uh, 거야',\n", + " '넌 붉은 비키니를 입고 날 불러 (아아, 아아, 아-아)',\n", + " '난 내 두 눈을 어디에 놓을지 정확히 알고 있어 (빠빠)',\n", + " '그건 바로 (빠) 너의 (너의, 너의) 으아으으',\n", + " '네 입술과 (빠빠) 매끈한 엉덩이를 봐',\n", + " '아무것도 중요하지 않아, 지금 이 순간',\n", + " '아름다운 그대 (그대)',\n", + " '하나뿐인 그대 (그대, 그대, 밤은)',\n", + " '나 오늘 밤은 그대 품에 안기고 싶어',\n", + " 'ma lady, lady, lady',\n", + " 'ha, 네 입술은 빨개',\n", + " '깨물고 싶어져',\n", + " '달콤한 딸기 같애',\n", + " '이 순간 되고 싶어',\n", + " '네가 들고 있는 파란 레모네이드의 빨대',\n", + " 'ha, 해변에 누워서 잘 때',\n", + " '태닝 오일을 등에다 발라 달래',\n", + " '긴 생머리, 잘록한 허리를 부드럽게 스치는 내 손의 핑거 발레',\n", + " '눈동자는 수영장, 크고 깊고 투명해',\n", + " '난 지금 그 속에 푹 빠져서 계속 허우적대',\n", + " '네 미소는 내 기분 띄우는 부력',\n", + " '내 각막에 보물 지도를 그려',\n", + " '네 맘이 나침판, 어디로 갈까?',\n", + " '난 컴퍼스, 네 물음에는 원만 그려',\n", + " '네 입술과 (빠빠) 매끈한 엉덩이를 봐',\n", + " '아무것도 중요하지 않아, 지금 이 순간',\n", + " '아름다운 그대 (그대)',\n", + " '하나뿐인 그대 (그대, 그대, 밤은)',\n", + " '나 오늘 밤은 그대 품에 안기고 싶어',\n", + " 'ma lady, lady, lady',\n", + " '더운 여름도, woo yeah',\n", + " '추운 겨울도, woo yeah',\n", + " '우리 사이를 멈출 수가 없는걸',\n", + " \"you're the only one\",\n", + " '아름다운 그대 (그대)',\n", + " '하나뿐인 그대 (그대, 그대, 밤은) (oh, 그대, uh)',\n", + " '나 오늘 밤은 그대 품에 안기고 싶어 (그대, 그대, yeah yeah yeah)',\n", + " 'ma lady, lady, lady (uh)',\n", + " 'my lady, my lady, i want you, you, you (아무 말도 다 필요 없어)',\n", + " \"my lady, my lady, you're the only one, yeah (나 오늘을 기념할 키스나 할래)\",\n", + " 'english translation',\n", + " 'turn off the cliché music now',\n", + " 'i’ll make you feel a new kind of excitement',\n", + " 'close your eyes and we’ll go to the ocean with crashing waves',\n", + " 'you wear a red bikini and call out to me',\n", + " 'i know exactly where to put my eyes',\n", + " 'and that’s on your woo yeah',\n", + " 'i look at your lips and your sexy butt',\n", + " 'nothing is more important than this moment',\n", + " 'beautiful you',\n", + " 'only you',\n", + " 'i want to be in your arms tonight',\n", + " 'ma lady lady lady',\n", + " 'your lips are red',\n", + " 'i want to bite them, like sweet strawberries',\n", + " 'i want to be that blue straw in your lemonade right now',\n", + " 'when you’re laying on the beach',\n", + " 'you ask me to rub tanning oil on your back',\n", + " 'my fingers do a ballet as they softly touch your long straight hair and thin waist',\n", + " 'your eyes are as big and deep and clear as the swimming pool',\n", + " 'i’ve fallen deeply into them, splashing around',\n", + " 'your smile is the lifting power that raises my mood',\n", + " 'draw a treasure map on my eyes',\n", + " 'where will your heart’s compass point to?',\n", + " 'i’m a compass, only drawing a circle to your questions',\n", + " 'i look at your lips and your sexy butt',\n", + " 'nothing is more important than this moment',\n", + " 'beautiful you',\n", + " 'only you',\n", + " 'i want to be in your arms tonight',\n", + " 'ma lady lady lady',\n", + " 'in the hot summer woo yeah',\n", + " 'in the cold winter woo yeah',\n", + " 'nothing can stop us',\n", + " 'you’re the only one',\n", + " 'beautiful you',\n", + " 'only you',\n", + " 'i want to be in your arms tonight',\n", + " 'ma lady lady lady',\n", + " 'my lady my lady i want you you you',\n", + " 'my lady my lady',\n", + " 'you’re the only one yeah',\n", + " '(english translation below)',\n", + " 'hangul',\n", + " '어서 내게 달려와 이 긴 밤이 지나가기 전에',\n", + " 'us make warm on a cold 외로움이 혼내기 전에',\n", + " '어릴 때 안고 자던 그 인형처럼 내 품 품에 안겨줘',\n", + " '꼭 껴안고 자던 그 포근한 감촉 그 향기',\n", + " '너는 내게 원초적으로 내 사람 같아',\n", + " '이유는 몰라도 혈류에 네가',\n", + " '타고 흐르듯 내 몸속을 여행하듯',\n", + " '내 전부를 아는 것 같이 따뜻해서',\n", + " '기억 밑 서랍 간직해 두었지',\n", + " '어서 내게 달려와 이 긴 밤이 지나가기 전에',\n", + " 'us make warm on a cold 외로움이 혼내기 전에',\n", + " '목 놓아 길을 찾던 어린애처럼 내 품 품에 안겨줘',\n", + " '어릴 때 안고 자던 그 인형처럼 내 품 품에 안겨줘',\n", + " '내 품 품에 안겨줘 안겨줘',\n", + " '그래 네 품속이 네 숨 어떻게 그 짧은',\n", + " '두 팔의 둘레로 온 우주를 감싸 안아줄 수 있고',\n", + " '너의 품에만 안기면 원래 내가 있던 곳 같아',\n", + " '오래전 그 오래전',\n", + " '너에게 정해졌던 나 미칠 듯 영원하게 사랑해 줄 거라고',\n", + " '기억 밑 서랍 따뜻함 꺼내줄 그 품이 필요해',\n", + " '어서 내게 달려와 내 품속이',\n", + " '네 숨 내 품속이',\n", + " 'english translation',\n", + " 'hurry and run to me',\n", + " 'before this long night is over',\n", + " 'us make warm on a cold',\n", + " 'before loneliness scolds us',\n", + " 'like the doll you slept with when you were young',\n", + " 'come into my arms',\n", + " 'tightly wrapped around each other',\n", + " 'that cozy touch, that scent',\n", + " 'feels like you were always mine',\n", + " 'i don’t know why',\n", + " 'but as if you’re riding in my blood',\n", + " 'as if you’re traveling through my body',\n", + " 'it’s so warm as if you know everything about me',\n", + " 'so i kept you in the drawer underneath my memories',\n", + " 'hurry and run to me',\n", + " 'before this long night is over',\n", + " 'us make warm on a cold',\n", + " 'before loneliness scolds us',\n", + " 'like a lost child shouting for the way',\n", + " 'come into my arms',\n", + " 'like the doll you slept with when you were young',\n", + " 'come into my arms',\n", + " 'come into my arms',\n", + " 'come into my arms',\n", + " 'yeah your embrace',\n", + " 'your breath',\n", + " 'how can those short arms',\n", + " 'wrap around the entire universe?',\n", + " 'every time i’m in your arms',\n", + " 'feels like i was always supposed to be there',\n", + " 'long ago, that time long ago',\n", + " 'i was already decided for you',\n", + " 'that i would crazily, forever love you',\n", + " 'i need that embrace',\n", + " 'to take out that warmth from the drawer underneath my memories',\n", + " 'hurry and run to me',\n", + " 'my embrace',\n", + " 'your breath',\n", + " 'my embrace',\n", + " '내려오는 붉은 빛 사이로',\n", + " '느껴지는',\n", + " '그대 눈빛 ah-ah',\n", + " '내 흥얼거림에 한없이 빠져서',\n", + " '보내오는',\n", + " '달콤한 눈빛',\n", + " '열린 문틈으로 살며시 들어와 앉고선',\n", + " '그렇게 매일 바라만 보나요',\n", + " '두 눈을 마주치면',\n", + " '부르던 노래를 멈추고',\n", + " '다가가서 속삭이고 싶어져 oh, nah',\n", + " 'i feel i love you',\n", + " 'oh, i love you',\n", + " 'oh, i like you',\n", + " 'do i know you? oh, i',\n", + " 'i think i love you (love you)',\n", + " 'oh, i love you (love you)',\n", + " 'oh, i like you (like you)',\n", + " \"maybe you'll feel it too\",\n", + " '아주 작은 움직임조차',\n", + " '반응하게 돼 버렸어 난',\n", + " 'baby, you know it (know it)',\n", + " '알아 baby, you know it',\n", + " '어쩜 우린',\n", + " '비슷할지 모르죠',\n", + " '같은 생각을 하며',\n", + " '뭔갈 바라고 있는 것만 같아 ah-ah-ah-ah',\n", + " '열린 문틈으로 살며시 들어와 앉고선',\n", + " '그렇게 매일 바라만 보나요',\n", + " '두 눈을 마주치면',\n", + " '부르던 노래를 멈추고',\n", + " '다가가서 속삭이고 싶어져 oh, nah',\n", + " 'i feel i love you (you-ooh-ooh-ooh)',\n", + " 'oh, i love you (ooh, i love you)',\n", + " 'oh, i like you (ooh-ooh)',\n", + " 'do i know you? oh, i',\n", + " 'i think i love you (love you)',\n", + " 'oh, i love you (love you)',\n", + " 'oh, i like you (like you)',\n", + " \"maybe you'll feel it\",\n", + " '혹시 지금 그대',\n", + " '내게 다가올 거라면',\n", + " '망설이지 말고 와 줘',\n", + " '어색한 인사는',\n", + " '우리 하지 않기로 해요',\n", + " '오래된 연인처럼',\n", + " 'i feel i love you (hey-eh-eh-eh-eh)',\n", + " 'oh, i love you (eh-eh-eh-eh-eh)',\n", + " 'oh, i like you (do-roo-do-do-do)',\n", + " 'do i know you? oh, i',\n", + " 'i think i love you (love you)',\n", + " 'oh, i love you (love you)',\n", + " 'oh, i like you (like you)',\n", + " \"maybe you'll feel it too\",\n", + " '(i feel i love you)',\n", + " 'woo-ooh-ooh-ooh',\n", + " 'woo-ooh-ooh-ooh',\n", + " 'woo-ooh-ooh-ooh',\n", + " 'woo-ooh-ooh-ooh, whoa-oh',\n", + " '(i feel i love you)',\n", + " 'woo-ooh-ooh-ooh',\n", + " 'woo-ooh-ooh-ooh',\n", + " 'woo-ooh-ooh-ooh, woo-ooh-ooh-ooh',\n", + " 'ooh-ooh-ooh-ooh-ooh-ooh-ooh',\n", + " '예전 그날의 나를 보면',\n", + " '\"넌 잘하고 있어\" 그렇게 말을 해주고 싶어',\n", + " '늘 속상한 날들 불안한 네 하루',\n", + " '다 눈이 부시게 바뀔 거야',\n", + " '꼭 지금 내 모습처럼',\n", + " '어느 곳을 가던지 매번 헤매던 길',\n", + " '어딜 가도 똑같이 또 반복되던 얘기',\n", + " '너무 늦지 않게 너도 다 알게 될 테니',\n", + " \"you'll be shining, it's all timing\",\n", + " 'all your dreams come true',\n", + " 'make yourself brand new',\n", + " '널 믿어 dreams come true',\n", + " 'life is beautiful',\n", + " '귀를 기울여 네 안의 소릴 들어',\n", + " 'all your dreams come true',\n", + " 'life is beautiful',\n", + " 'it feels like love, la-la-la-la-love',\n", + " '알게 될 거야',\n", + " 'it feels like love, la-la-la-la-love',\n", + " '난 또 다른 너야',\n", + " 'yeah, yeah',\n", + " 'competition with myself, nobody else',\n", + " 'what a feeling, wish you well',\n", + " 'before i look in mirror in the morning, see a lion behind my iris',\n", + " '포기하지 말고 너는 너의 뜻대로 가길',\n", + " 'ooh, 나는 누군지 깊은 고민, ah-ah',\n", + " '믿어야 할 하난 나 또 너 우리',\n", + " '밤이 깊을수록 더 별은 빛나듯이',\n", + " '때론 보이지 않아도 느낄 수가 있지',\n", + " '분명 이 길 끝엔 찾던 답이 있을 테니',\n", + " \"you'll be shining, it's all timing\",\n", + " 'all your dreams come true (ooh, ooh)',\n", + " 'make yourself brand new',\n", + " '널 믿어 dreams come true (dreams come true)',\n", + " 'life is beautiful',\n", + " '귀를 기울여 네 안의 소릴 들어',\n", + " 'all your dreams come true (come true)',\n", + " 'life is beautiful',\n", + " 'it feels like love, la-la-la-la-love (it feels like love)',\n", + " '알게 될 거야',\n", + " 'it feels like love, la-la-la-la-love (it feels like love, yeah, yeah)',\n", + " '난 또 다른 너야',\n", + " '숨이 차올 때면 잠깐 앉아서 쉬어도 돼 (쉬어도 돼)',\n", + " '급할 건 없어',\n", + " '지금처럼 계속 포기하지 않으면',\n", + " \"finally, i'm happy, yeah\",\n", + " 'ya, 쳐진 입꼬리를 upside down',\n", + " \"i'mma smile for a while, who gon' stop me now? ayy\",\n", + " '맘의 목소리를 따르는 건',\n", + " '작은 걸음이지만 큰 변화야, uhm',\n", + " '지레 겁먹지 말기',\n", + " '모두 불완전해 네 탓하지 말기',\n", + " '행복한 상상을 매일 하기 (my everyday)',\n", + " '제일 중요한 건 네 자신을 믿기',\n", + " 'all my dreams come true (come true)',\n", + " \"i'm feeling brand new\",\n", + " \"'cause all my dreams come true (your dream too)\",\n", + " 'life is beautiful (hey)',\n", + " \"귀를 기울여 네 안의 소릴 들어 (that's for you)\",\n", + " 'all your dreams come true (come true)',\n", + " 'life is beautiful',\n", + " 'it feels like love, la-la-la-la-love (it feels like)',\n", + " '알게 될 거야 (ayy, ayy)',\n", + " 'it feels like love, la-la-la-la-love (feels like love)',\n", + " '난 또 다른 너야',\n", + " 'it feels like love, la-la-la-la-love',\n", + " '(ooh, feels like, feels like, yeah)',\n", + " '아름다운 너',\n", + " 'it feels like love, la-la-la-la-love (yeah)',\n", + " '아름다운 너야 (ooh)',\n", + " 'she’s working over time',\n", + " 'she working',\n", + " 'working over time she working',\n", + " '시험에 들고 있어',\n", + " '너의 아름다움 속에',\n", + " 'hold up hold up 비 내려',\n", + " 'money shower',\n", + " 'pour up pour up 느리게',\n", + " 'she grinding',\n", + " '매일 밤 매일 밤 every night',\n", + " 'she kill me like it’s murda',\n", + " 'murda murda murda murda',\n", + " 'she dancing like its murda',\n", + " 'murda murda murda murda',\n", + " 'she give love to the strangers',\n", + " '아무도 널 가질 수 없어',\n", + " '너란 여잔 danger',\n", + " 'they call you murda murda',\n", + " 'ooooh she killin it',\n", + " 'straight murder scene',\n", + " 'i can’t breath emergency',\n", + " 'no mercy no courtesy',\n", + " '네 말이라면 다 뭐든지',\n", + " '다 해야만 할 것만 같아',\n", + " '네께 난 돼야만 할 것만 같아',\n", + " '시간이 얼마가 지났든',\n", + " '다시 널 봬야 좀 살 것만 같아',\n", + " 'baby just hol up hol up girl',\n", + " 'where u goin',\n", + " '다 완벽한데 좀 외로워 보여',\n", + " '다 필요 없어 그대로만',\n", + " '옆자리만 빼고 그대로 와',\n", + " 'come get this love from me',\n", + " 'it’s yours bae you deserve it',\n", + " 'you and me 그래 너와 나',\n", + " '남잔 똑같대지 but no i’m not',\n", + " 'she kill me like it’s murda',\n", + " 'murda murda murda murda',\n", + " 'she dancing like its murda',\n", + " 'murda murda murda murda',\n", + " 'she give love to the strangers',\n", + " '아무도 널 가질 수 없어',\n", + " '너란 여잔 danger',\n", + " 'they call you murda murda',\n", + " 'murda murda she dancing',\n", + " 'in money shower',\n", + " '그 모습이 아름다워 날 죽여',\n", + " 'water water you thirsty',\n", + " 'and now you want her',\n", + " '난 너에게 목이 말라 시들어',\n", + " '눈을 감아 넌 다른 세상을 열어',\n", + " '꿈처럼 working every night',\n", + " '밤에 달처럼',\n", + " 'all the time all the time',\n", + " 'every night',\n", + " 'she kill me like it’s murda',\n", + " 'murda murda murda murda',\n", + " 'she dancing like its murda',\n", + " 'murda murda murda murda',\n", + " 'she give love to the strangers',\n", + " '아무도 널 가질 수 없어',\n", + " '너란 여잔 danger',\n", + " 'they call you murda murda',\n", + " '난 네 아름다움에 노예 너의',\n", + " '난 헤어 나올 수 없어 없어',\n", + " '헤어 나올 수 없어',\n", + " 'hangul',\n", + " '이건 세상에서 제일 비싼 단독 공연',\n", + " '가수는 나고 관객은 너 하나',\n", + " '화려한 막이 이제 곧 올라가기 전에',\n", + " '그저 몇 가지만 주의해줘요',\n", + " '세상에서 제일 편한 옷을 갈아 입고',\n", + " '제일 좋아하는 자리에 누워',\n", + " '배터리가 바닥나지 않게 조심하고',\n", + " '통화상태를 항상 유지해줘요',\n", + " '듣고 싶은 노래를 말 만해 everything',\n", + " '입이 심심할 때는 coffee, popcorn, anything',\n", + " '너무 부담주진 말고 편하게 들어줘',\n", + " '아님 내가 너무 떨리니까',\n", + " '오직 너에게만 감동적인 노래',\n", + " '오직 너를 웃게 하기 위한 코너',\n", + " '네가 너무 설레 잠 못 들게 만들 거야',\n", + " '지금이야 크게 소리 질러줘',\n", + " '누구보다 특별한 너의 취향을 알아',\n", + " '달콤한데 슬픈 듯 아찔하게 (맞지)',\n", + " '근데 다음 곡이 중요해 볼륨 높여봐',\n", + " '기억 나니 우리 그 날 그 노래',\n", + " '내가 너무 진지해 보여도 웃지마',\n", + " '누가 봐도 완벽한 노래는 아니지만',\n", + " '많이 연습한 부분을 너 때문에 틀리잖아',\n", + " '아직 나는 너무 떨리니까',\n", + " '오직 너에게만 감동적인 노래',\n", + " '오직 너를 웃게 하기 위한 코너',\n", + " '네가 너무 설레 잠 못 들게 만들 거야',\n", + " '지금이야 크게 소리 질러',\n", + " '이 공연은 거의 다 끝나 가고 있어',\n", + " '어땠는지 말해줘 문자로',\n", + " '너무나 아쉽지만 졸린 거 이미 알고 있어',\n", + " '기대해줘 마지막 곡 이 중에서도 제일',\n", + " '감동적인 노래',\n", + " '오직 너를 웃게 하기 위한 코너',\n", + " '네가 너무 설레 잠 못 들게 만들 거야',\n", + " '지금이야 제일 원하는 걸 말해 어떤 노래를',\n", + " '다시 듣고 싶어? 사실 내가 원해',\n", + " '네가 너무 설레 잠 못 들지 모르지만',\n", + " '앵콜이야 크게 소리 질러줘',\n", + " '이건 세상에서 제일 비싼 단독공연',\n", + " '가수는 나고 관객은 너 하나',\n", + " 'english translation',\n", + " 'this is the most expensive solo concert in the world',\n", + " 'i’m the singer and the audience is just you',\n", + " 'before the curtains are drawn',\n", + " 'just be careful of a few things',\n", + " 'change into the most comfortable clothes',\n", + " 'lay in your favorite spot',\n", + " 'careful that your battery doesn’t drain',\n", + " 'always be on the call',\n", + " 'tell me any song you want to hear, everything',\n", + " 'when you’re hungry, get coffee, popcorn, anything',\n", + " 'don’t give me too much pressure, just comfortably listen',\n", + " 'or else i’ll be too nervous',\n", + " 'a moving song only for you',\n", + " 'a corner that will only make you laugh',\n", + " 'i’m gonna make your heart flutter so much that you can’t sleep',\n", + " 'the time is now, shout out loud',\n", + " 'i know your special tastes better than anyone',\n", + " 'sweet yet sad and breathtaking (right?)',\n", + " 'but the next song is important, turn up the volume',\n", + " 'do you remember? that song from that day?',\n", + " 'even if i seem too serious, don’t laugh',\n", + " 'anyone can see it’s not a perfect song',\n", + " 'i practiced this part a lot but i’m making mistakes cuz of you',\n", + " 'because i’m still so nervous',\n", + " 'a moving song only for you',\n", + " 'a corner that will only make you laugh',\n", + " 'i’m gonna make your heart flutter so much that you can’t sleep',\n", + " 'the time is now, shout out loud',\n", + " 'this concert is almost over',\n", + " 'tell me how it was through text',\n", + " 'i don’t want to hang up but i know you’re sleepy',\n", + " 'be excited for this last song, the most important',\n", + " 'a moving song only for you',\n", + " 'a corner that will only make you laugh',\n", + " 'i’m gonna make your heart flutter so much that you can’t sleep',\n", + " 'the time is now, tell me what song you want',\n", + " 'wanna hear it again? honestly, i want you',\n", + " 'i don’t know if your heart will flutter and not go to sleep',\n", + " 'but this is the encore, shout out loud',\n", + " 'this is the most expensive solo concert in the world',\n", + " 'i’m the singer and the audience is just you',\n", + " 'korean original',\n", + " '일하는 사이 사이마다',\n", + " '니 생각이 나',\n", + " '건널목 앞에 설 때마다',\n", + " '난 너만 떠올라',\n", + " '너란 공기는',\n", + " '내 숨이 가쁘게',\n", + " '그렇게 사라져 가',\n", + " 'if you 내 사랑이 100이었다면',\n", + " '그 반을 남겨놓지 않았으면',\n", + " '내 곁에 아직까지 있을까',\n", + " '사랑은 하고 있을까 우린',\n", + " '다 주고 싶지',\n", + " '않아서가 아니었어 난',\n", + " '다만 시간이 필요했어',\n", + " '몇 번의 이별에',\n", + " '다친 내 기억에',\n", + " '다 주기 겁이 났어',\n", + " 'if you 만약 내 사랑이 100이었다면',\n", + " '그 반을 남겨놓지 않았으면',\n", + " '내 곁에 아직까지 있을까',\n", + " '사랑은 하고 있을까 우린',\n", + " '맘 속에 숨겨 둔 반쪽의 사랑',\n", + " '반까지 마저 꺼내 줄 수 있어 이제는',\n", + " '돌아와 줘 오늘은',\n", + " 'if you 만약 내 사랑이 100이었다면',\n", + " '그 반을 남겨놓지 않았으면',\n", + " '내 곁에 아직까지 있을까',\n", + " '사랑은 하고 있을까 우린',\n", + " '너란 곳에 살아보니까',\n", + " '다른 곳에서는 단 하루도',\n", + " '난 나로 살 수 없는 걸',\n", + " '안 되는 걸',\n", + " '다시 또 사랑한다면 그때도 니가 아니면',\n", + " '사랑은 못 해 나는',\n", + " 'english translation',\n", + " 'here and there, while i work',\n", + " 'i think about you',\n", + " 'every time i see a crossroad',\n", + " 'i can only think of you',\n", + " 'the air called you',\n", + " 'makes me run out of breath',\n", + " 'then you vanish like that',\n", + " 'if you, if my love was 100',\n", + " 'if i didn’t leave half of it remaining',\n", + " 'would you still be by my side?',\n", + " 'would we still be in love?',\n", + " 'i wasn’t that',\n", + " 'i didn’t want to give you my all',\n", + " 'i just needed some time',\n", + " 'because of my past break ups',\n", + " 'because of my scarred memories',\n", + " 'i was afraid to give you my all',\n", + " 'if you, if my love was 100',\n", + " 'if i didn’t leave half of it remaining',\n", + " 'would you still be by my side?',\n", + " 'would we still be in love?',\n", + " 'two halves of love',\n", + " 'that are hidden in my heart',\n", + " 'i can take out even the other half now',\n", + " 'come back to me today',\n", + " 'if you, if my love was 100',\n", + " 'if i didn’t leave half of it remaining',\n", + " 'would you still be by my side?',\n", + " 'would we still be in love?',\n", + " 'after living in a place of you',\n", + " 'i can’t live a single day',\n", + " 'in any other place',\n", + " 'i can’t',\n", + " 'if i love again and it’s not you',\n", + " 'i can’t love']},\n", + " 'rap': {'meta': {'train_data': [\"i'm born slacker but i need some estate\",\n", + " 'baking rappers alive',\n", + " 'cause i think i needed some bread',\n", + " '티들은 못 내도 모두가 나의 fan인 듯해',\n", + " \"cause i'm always breezy\",\n", + " '주의로 소문이 부는 듯해, ay',\n", + " \"i'm born slacker but i need some of that please\",\n", + " \"i'm working my ass off to make you work on my lap dance\",\n", + " '다시 말해 you my bitch, to come lick the tip off',\n", + " 'the kick off, 내 balls 너의 식사',\n", + " '취향이 니 기사 you so sentimental, woo',\n", + " '준비된 여자에게 털어, 지식이 식상',\n", + " '빈 집에 진상 자랑거리 하나 없네',\n", + " '이건 반 진심이야, 축하해, 너희 오디션 입상',\n", + " \"i'm a born slacker, still clapping\",\n", + " '아직도 나에게 인정받을 album 그건 한국엔 없으니',\n", + " '그럼 게으르게 두지, 연간 한 장씩 안내도',\n", + " '내 album을 이기는 건 새로운 내 album 뿐이었으니',\n", + " '내 하루는 기상, 기분 나쁜 새끼들',\n", + " '죽여버릴 곡 쓰는 게 내 평범한 면상에 seasoning',\n", + " '요즘은 이쁜 rap이 유행인가보네',\n", + " '뭐, 그런 것도 하나 내지 뭐',\n", + " 'but you know we have a problem here',\n", + " 'nobody claims it, i think they scared',\n", + " \"y'all know what it is, yeah, bruh, i think they scared\",\n", + " 'what you mad for, yeah, bruh, i think they scared',\n", + " '지금 은퇴해도 내 위치는 locked and good, yeah',\n", + " 'nobody claims it, i think they scared',\n", + " \"y'all know what it is, yeah, bruh, i think they scared\",\n", + " 'what you mad for, yeah, bruh, i think they scared',\n", + " '지금 은퇴해도 내 위치는 locked and good',\n", + " \"i bet they scared, yeah, bitch, i'm on to the next\",\n", + " '내 album이 나올때마다 i bet they switching they plans',\n", + " '충분한 balance',\n", + " '내가 불공평하다 말해도 간지를 버린 새끼들',\n", + " 'they be swinging they chains like, yeah',\n", + " 'what, karma be the reason',\n", + " '하도 까대서 내가 내 인상 찌푸리는 짓을',\n", + " '나도 신사나 가서 콧대 하늘 찔러버릴 시술 받고',\n", + " '내 콧대와 콧대를 맞춰보고 싶군',\n", + " 'but the only and always be the lonely',\n", + " '내 pace 맞춰 따라오는 새끼가 어째 한 명도 없으니',\n", + " '이건 step stone, 어쩌면 내 본판',\n", + " '어떤 건 손을 아무리 대도 어찌 좋아질 수가 없으니',\n", + " 'the bar so lifted, my diction gifted',\n", + " '갈겨써도 못 따라와, my clock still skipping',\n", + " \"더럽게 재미없지, i ain't playing no more\",\n", + " '대충해도 역사에 남겠어, 은퇴를 해도',\n", + " 'nobody claims it, i think they scared',\n", + " \"y'all know what it is, yeah, bruh, i think they scared\",\n", + " 'what you mad for, yeah, bruh, i think they scared',\n", + " '지금 은퇴해도 내 위치는 locked and good, yeah',\n", + " 'nobody claims it, i think they scared',\n", + " \"y'all know what it is, yeah, bruh, i think they scared\",\n", + " 'i think they scared',\n", + " 'umm, yeah',\n", + " 'okay, uh, yeah',\n", + " '벌어야겠네, 쉬었어 실컷',\n", + " '내 소비 습관 안 고침 아직',\n", + " '유지비 차이 땜에',\n", + " '누구 눈에 부자여도 내 기분 거지 같지',\n", + " '허리띠 졸라매는 건 싫어',\n", + " '어릴 때 보다 배때기 늘어났지',\n", + " '눈 높은 게 노답이라는데',\n", + " '난 10년 전에 이미 답찾았지',\n", + " '나 보는 눈이 달라지는 거 느껴',\n", + " '그때부터 생긴 radar, yeah',\n", + " '아마 그때부터 암세포같이',\n", + " '퍼져버린 나의 연예인 병',\n", + " '시발, who’s number one?',\n", + " 'i’m one and only',\n", + " '어느 곳이건 90프로 병신',\n", + " '난 10과 11 그 사이쯤',\n", + " '단점은 너무 겸손한 성격이지',\n", + " '나도 물론 love 얘기해',\n", + " '다만 나의 양극성이 문제',\n", + " '어느 날엔 다 이해되도',\n", + " '어느 날엔 심히 역겨움을 느껴',\n", + " '직업적 상담은 거부 (uh, yeah)',\n", + " '필요한 거 너의 품 (yeah, uh)',\n", + " '척 안 해 나는',\n", + " '내가 제일 잘 알아 내게 낀 거품',\n", + " 'no, no, no, mama i gotta go get it',\n", + " 'you see that telelelelele on my radar, bitch',\n", + " 'fuck anybody on my radar',\n", + " 'nothing but a part of my cater, bitch',\n", + " '덜어, 덜어, 덜어, 덜어, 덜어',\n", + " 'this gon never stop untill i make it, see that',\n", + " 'telelelelele, telelelelele on my radar',\n", + " 'no, no, no, mama i gotta go get it',\n", + " 'you see that telelelelele on my radar, bitch',\n", + " 'mama i gotta go get it',\n", + " 'you see that telelelelele on my radar, bitch',\n", + " 'mama i gotta go get it',\n", + " 'you see that telelelelele on my radar, bitch',\n", + " 'mama i gotta go get it',\n", + " 'you see that telelelelele on my radar',\n", + " 'tv 트니까 자존감 뭐, 지랄',\n", + " '강사짓 하네, 저 사기꾼 새끼',\n", + " '사진 몇 장하고 편집한 역사면',\n", + " '뭐든지 다 말이 되지',\n", + " '나도 저렇게 하자',\n", + " '야, 누군 저 말이 도움 됐다잖아',\n", + " '내 기준엔 크게 두 부류 같아',\n", + " '한탕 아니면 노가다 (yeah)',\n", + " 'lookin like a movie shit',\n", + " '근데 난 영화보단 부귀지',\n", + " '욕심엔 고통이 따라온대',\n", + " '근데 내 특기가 그거 다루기지 (uh, yeah)',\n", + " '허세 같대, 미친놈 같대',\n", + " '피곤하대, 누군 멋지다네',\n", + " '지랄하네, 너희 중 누구든지',\n", + " '내 근처라도 와보고 말해',\n", + " 'no, no, no, mama i gotta go get it',\n", + " 'you see that telelelelele on my radar, bitch',\n", + " 'fuck anybody on my radar',\n", + " 'nothing but a part of my cater, bitch',\n", + " '덜어, 덜어, 덜어, 덜어, 덜어',\n", + " 'this gon never stop untill i make it, see that',\n", + " 'telelelelele, telelelelele on my radar',\n", + " 'telelelelele on my radar, bitch',\n", + " 'telelelelele on my radar',\n", + " 'telelelelele on my radar, bitch',\n", + " 'telelelelele on my radar',\n", + " 'telelelelele on my radar, bitch',\n", + " 'telelelelele on my radar',\n", + " 'telelelelele on my radar, bitch',\n", + " 'telelelelele on my radar',\n", + " 'telelelelele on my radar, bitch',\n", + " 'telelelelele on my radar',\n", + " 'telelelelele on my radar, bitch',\n", + " 'telelelelele on my radar',\n", + " 'telelelelele on my radar, bitch',\n", + " 'telelelelele on my radar',\n", + " 'telelelelele on my radar, bitch',\n", + " 'telelelelele on my radar, bitch',\n", + " \"let's get it closer girl\",\n", + " 'i wanna know you right',\n", + " 'i got plenty of time to spend with you tonight',\n", + " \"let's get it closer girl\",\n", + " 'i wanna know you right',\n", + " 'i got plenty of time to spend with you tonight',\n", + " \"i'm a natural born hustler i hustle errday\",\n", + " '무대 또는 studio, each and eyway',\n", + " 'christian은 아니지만 christian dior',\n", + " 'christian louboutin sneakers 평소엔 편하게 ajs',\n", + " 'like play stations, 내가 쏘니',\n", + " '뭐든지 맘껏 집어, 이제부턴 다 니 꺼니',\n", + " '가고 싶음 말해 honolulu, vegas',\n", + " '어쩌면 tokyo or new york, 아니면 lakers',\n", + " '아침엔 바닷가, 점심엔 쇼핑몰',\n", + " '저녁은 근사한 뷔페, 아님 필렛미뇽',\n", + " \"밤엔 최고급 호텔에서 relaxin'\",\n", + " \"sexin' all night long 우리 둘만의 dancin'\",\n", + " \"hands in the air i just don't care\",\n", + " 'yeah, baby call me true playa',\n", + " '잠들어, 내 어깨에 기대',\n", + " \"술이 아닌 내게 기댄 너의 향기에 취해 (let's get high)\",\n", + " \"let's get it closer girl\",\n", + " 'i wanna know you right',\n", + " 'i got plenty of time to spend with you tonight',\n", + " \"let's get it closer girl\",\n", + " 'i wanna know you right',\n", + " 'i got plenty of time to spend with you tonight',\n", + " '가끔 내가 옆에 없어도 슬퍼 말아',\n", + " '당장 보기엔 좀 멀어도 갈게 바로',\n", + " '바뻐 몸은 많이 버려도 난 괜찮아',\n", + " '그래도 돈은 많이 벌어놓았으니까',\n", + " '평소 갖고 싶은 거 아니면 가고 싶은 곳',\n", + " '다 말해, 너의 미소를 볼 때면 나도 기쁜 걸',\n", + " 'yeah, baby you already know, wherever is dope',\n", + " \"어디든 갈게 널 데리고, so let's fly away\",\n", + " 'i want you to be on my side always',\n", + " '가끔 여자들이 날 유혹해도 내 머릿속엔 니 생각뿐',\n", + " \"don't you worry bout a thang stevie wonder girl i got you\",\n", + " 'your hips your thighs, 니 입술과',\n", + " 'when i kiss your body, 나만 아는 니 몸짓들까지도',\n", + " '오늘 밤 또 알고 싶어 더',\n", + " '오늘만큼은 got plenty of time to spend with you',\n", + " 'i wanna feel some love',\n", + " \"let's get it closer girl\",\n", + " 'i wanna know you right',\n", + " 'i got plenty of time to spend with you tonight',\n", + " \"let's get it closer girl\",\n", + " 'i wanna know you right',\n", + " 'i got plenty of time to spend with you tonight',\n", + " \"(watch out, ay) you don't know my style\",\n", + " \"you don't know bout me 'cause you don't bout moi\",\n", + " '(watch out, ay) 넌 내가 누군지 몰라',\n", + " '나의 이름을 알아도, 그래, 너는 날 몰라',\n", + " \"(watch out, ay) you don't know my style\",\n", + " \"you don't know bout me 'cause you don't bout moi\",\n", + " '(watch out, ay) 넌 내가 누군지 몰라',\n", + " '나의 이름을 알아도 나를 몰라',\n", + " 'i see no one in korea have swagger like mine',\n", + " \"뛰는 놈 위에 나는 다른 rapper, i'm fly\",\n", + " '아니면 제껴, 상관할 필요 없이',\n", + " '난 나의 길을 걷지 바삐 bust it baby like plies',\n", + " '내 rap은 돈 되지 so 맛있게 먹어',\n", + " '가진 게 없어 나는 오늘도 바쁘게 벌어',\n", + " 'tryna be thoro, 오늘이 마지막인 것처럼 살지',\n", + " '난 뒤돌아 보지 않고 앞으로 걸어, yeah',\n", + " \"it's the return of the young hustle\",\n", + " '8년째 낼름 거리는 king of the tongue tussle',\n", + " 'master of the flow puzzle',\n", + " '고집과 난 멋을 부리며 돈을 쓰는 동시에 돈 벌어',\n", + " '더 걸어, 더 뛰어, 뛰어난 swag',\n", + " '이건 위험한 rap, 그 흐름을 한 번 더 이어갈 track',\n", + " \"me i'm the best in this industry\",\n", + " '인정하기 싫겠지만 사실이야, boy please believe',\n", + " \"(watch out, ay) you don't know my style\",\n", + " \"you don't know bout me 'cause you don't bout moi\",\n", + " '(watch out, ay) 넌 내가 누군지 몰라',\n", + " '나의 이름을 알아도, 그래, 너는 날 몰라',\n", + " \"(watch out, ay) you don't know my style\",\n", + " \"you don't know bout me 'cause you don't bout moi\",\n", + " '(watch out, ay) 넌 내가 누군지 몰라',\n", + " '나의 이름을 알아도 나를 몰라',\n", + " \"you don't know, you don't know, you don't know me\",\n", + " \"i don't know, i don't know, i don't know you\",\n", + " \"so don't touch so don't judge don't approach me\",\n", + " \"you ain't got, you ain't got nuttin' on me\",\n", + " \"you don't know, you don't know, you don't know me\",\n", + " \"i don't know, i don't know, i don't know you\",\n", + " \"so don't touch so don't judge don't approach me\",\n", + " \"you ain't got, you ain't got nuttin' on me\",\n", + " '가-가-가지 말라는 길로 고집 피워 계속 끝없이 걸어',\n", + " '기나긴 시간 고생을 거듭해 견뎌낼 gutter',\n", + " '겁 없이 나를 걸어 결국 이겨낸 괴로움',\n", + " '때로는 외로움이 남아 가끔씩 눈물이 고여',\n", + " '고로 결론은 결코 포기하지 않는 것',\n", + " 'got some guts to be myself, 나로 살아가는 건',\n", + " '그 어떤 이에게는 그건 뿌리 깊은 gonzo',\n", + " '그 어떤 이에게는 이건 거지 같은 꼴',\n", + " '나는 dok2 the illest korean',\n", + " 'rapper들의 rapper 그 화두에 꼭 끼는',\n", + " \"악명 높은 어린이 i'm the dopest\",\n", + " '한국 hip-hop의 compass',\n", + " '내 rap에는 절대로 stop 버튼이 없어',\n", + " \"like broken ol' radio\",\n", + " '발등 찍힐 일도 없지, you already know',\n", + " '누구를 데리고 와도 난 끄떡없어',\n", + " \"그냥 이 beat를 따라 bounce 끄떡거려, get'em\",\n", + " \"(watch out, ay) you don't know my style\",\n", + " \"you don't know bout me 'cause you don't bout moi\",\n", + " '(watch out, ay) 넌 내가 누군지 몰라',\n", + " '나의 이름을 알아도, 그래, 너는 날 몰라',\n", + " \"(watch out, ay) you don't know my style\",\n", + " \"you don't know bout me 'cause you don't bout moi\",\n", + " '(watch out, ay) 넌 내가 누군지 몰라',\n", + " '나의 이름을 알아도 나를 몰라',\n", + " \"you don't know, you don't know, you don't know me\",\n", + " \"i don't know, i don't know, i don't know you\",\n", + " \"so don't touch so don't judge don't approach me\",\n", + " \"you ain't got, you ain't got nuttin' on me\",\n", + " \"you don't know, you don't know, you don't know me\",\n", + " \"i don't know, i don't know, i don't know you\",\n", + " \"so don't touch so don't judge don't approach me\",\n", + " \"you ain't got, you ain't got nuttin' on me\",\n", + " 'korean (original)',\n", + " '왜 그랬을까 왜 그랬을까',\n", + " '사랑 웃기지말라 그래',\n", + " 'yeah yeah',\n", + " '쓰디쓴 술과 and i',\n", + " '너땜에 끊었던 담배',\n", + " '다시 너땜에 물고',\n", + " 'goes out to you (goes out to you baby)',\n", + " '말 한마디 없이 떠나간 그대여',\n", + " '내 그대여 지금 이 노래 들리시나요',\n", + " '니가 없이 맞는 외로운 아침',\n", + " '그대 떠난 후 내 맘속 지도의',\n", + " '나침반은 길을 잃었어',\n", + " '내 삶을 다 망친',\n", + " '아무 준비도 못한',\n", + " '내게서 멀리 도망친',\n", + " '나의 비너스',\n", + " '널 미워하려고 난 신께 빌었어',\n", + " '너무 억울해서 내 자신이',\n", + " '너무나 한심해서',\n", + " '내 말투 행동 걸음걸이 하나까지',\n", + " '도배된 널 닮은',\n", + " '습관들이 날 괴롭혀',\n", + " '잊지 않아 어떻게 잊을까 나',\n", + " '내 모든 추억의',\n", + " '첫페이지에 네가 있잖아',\n", + " '생일 바닷가 깊은 사랑에 절벽 넘어',\n", + " '첫실연의 아픔을 내게준',\n", + " '첫번째 여자잖아',\n", + " '나 미친척 해 슬퍼도 웃어볼래',\n", + " '텅빈 네 맘 바라지 않아 we just too late',\n", + " '네꺼라며 네 맘대로 할거라며',\n", + " '이게 네 사랑방식 애초에 시작을',\n", + " '말았더라면',\n", + " '너와 한 시간은 너무나 힘들었어',\n", + " '맨날 전화기만 붙들고',\n", + " '나는 널 기다렸는데',\n", + " '항상 넌 아무런',\n", + " '잘못하나 없어 미안하다고 말하고서',\n", + " '나를 피하고 그대로 가버렸어',\n", + " 'but i love you girl',\n", + " '네가 있어줬으면 싶어',\n", + " 'but i love you girl',\n", + " '네가 잡아줬으면 싶어',\n", + " 'but i love you girl',\n", + " '말하지 않아도',\n", + " '서툰 내 맘 제발 놓지 말아줘요',\n", + " 'oh my girl',\n", + " '내 눈엔 그저 예쁘기만 해',\n", + " '너무 빠지지는 말란 친구의 말에',\n", + " '일단 화부터 내 그 애는 다르다고',\n", + " '누구보다 착하고 순수한 그런 아이라고',\n", + " 'uh 사 아니 정말로 좋아해',\n", + " '널 우린 변치 말자 행복하게 해줄게',\n", + " '넌 내 곁에 머물러 시간이 더 흘러',\n", + " '일 이년 지나고 나면',\n", + " 'more better than this year',\n", + " '힘들어 지쳐보여 네 목소리가',\n", + " '기댈 곳이 필요해 기대 제발',\n", + " '나 안보여 왜 너혼자 쓰러져',\n", + " '고갤 저어 가슴이 찢어지고 무너져',\n", + " '우리 처음 만났을땐 좋았는데',\n", + " '서로 보고만 있어도 행복했는데',\n", + " '사실 아직도 난 그래',\n", + " '근데 왜 너는 안그래',\n", + " '요즘 널 보면 예전 그 느낌이',\n", + " '네겐 없는데',\n", + " '너와 한 추억은 너무나 고달팠어',\n", + " '물론 내 잘못이겠지 이렇게 위로하겠지',\n", + " '세월이 가면 이 기억도',\n", + " '연기처럼 저멀리 날아가',\n", + " '새 사랑이 내게도 찾아올런지',\n", + " 'but i love you girl',\n", + " '너를 웃게 해주고 싶어',\n", + " 'but i love you girl',\n", + " '네 눈물 닦아주고 싶어',\n", + " 'but i love you girl',\n", + " 'nothing anymore',\n", + " '떠난 그대 맘 되돌릴수 없는걸',\n", + " 'i know girl',\n", + " '마지막 그대 얼굴',\n", + " '보고 싶어서 전화해~',\n", + " '끝까지 아무 대답없는 너지만~',\n", + " 'oh 왜 나를 피하는지',\n", + " '내게 말해줘요 girl',\n", + " '아직도 난 제자리에요',\n", + " 'but i love you girl',\n", + " '네가 있어줬으면 싶어',\n", + " 'but i love you girl',\n", + " '네가 잡아줬으면 싶어',\n", + " 'but i love you girl',\n", + " '말하지 않아도',\n", + " '서툰 내 맘 제발 놓지 말아줘요',\n", + " 'but i love you girl',\n", + " '너를 웃게 해주고 싶어',\n", + " 'but i love you girl',\n", + " '네 눈물 닦아주고 싶어',\n", + " 'but i love you girl',\n", + " 'nothing anymore',\n", + " '떠난 그대 맘 되돌릴수 없는걸',\n", + " 'i know girl',\n", + " 'english (translated)',\n", + " 'why did you do that? why did you do that?',\n", + " 'love? don’t make me laugh',\n", + " 'yeah yeah',\n", + " 'with bitter beer and i',\n", + " 'cigarettes that i quit because of you',\n", + " 'because of you i smoke them again',\n", + " 'goes out to you',\n", + " 'to you who left without one word',\n", + " 'can you hear this song right now',\n", + " 'this lonely morning i meet without you',\n", + " 'after you left, the compass of the map in my heart',\n", + " 'has lost its way',\n", + " 'my life is all ruined',\n", + " 'i was unprepared',\n", + " 'you ran far away from me',\n", + " 'my venus',\n", + " 'i’ve prayed to god to try to hate you',\n", + " 'because it was so unfair',\n", + " 'because my life felt so miserable',\n", + " 'my tone, actions, even my steps have gone away',\n", + " 'my habits that have copied yours',\n", + " 'are bothering me',\n", + " 'you can’t be forgotten, how can i forget you',\n", + " 'you’re on the first page',\n", + " 'of all of my memories',\n", + " 'birthdays, the beach, over the cliff of deep love',\n", + " 'you’re the first girl who’s given me the pain',\n", + " 'of a first broken heart',\n", + " 'even if in my craziness i feel sad i’ll try to smile',\n", + " 'i don’t want your empty feelings, we just too late',\n", + " 'uh if it’s your’s, if you’re going to do whatever you want',\n", + " 'this is the way you love?',\n", + " 'if i hadn’t started the beginning yeah',\n", + " 'the time i had with you was so hard',\n", + " 'everyday i waited for you',\n", + " 'by my phone',\n", + " 'and every time you have no blame',\n", + " 'you told me you were sorry',\n", + " 'and avoided me then left',\n", + " 'but i love you girl',\n", + " 'i wish you would stay here',\n", + " 'but i love you girl',\n", + " 'i wish you would hold onto me',\n", + " 'but i love you girl',\n", + " 'even if i don’t say it',\n", + " 'please don’t lose my eager heart',\n", + " 'ma girl',\n", + " 'in my eyes you are just beautiful',\n", + " 'my friend told me not to fall too deeply',\n", + " 'first i get mad that girl is different',\n", + " 'she is nicer and more pure than anybody',\n", + " 'i lo-… no, i really like you',\n", + " 'let’s not change i’ll make you happy, you',\n", + " 'stay by my side time flows by',\n", + " 'when 1, 2 years goes by',\n", + " 'more better than this year',\n", + " 'your voice seems so tired',\n", + " 'you need a place to lean, please lean on me',\n", + " 'don’t you see me? why do you fall alone?',\n", + " 'lower my head, my heart tears and breaks',\n", + " 'it was great when we first met',\n", + " 'we were happy just seeing each other',\n", + " 'actually i’m still like that',\n", + " 'but why aren’t you?',\n", + " 'lately when i see you',\n", + " 'i don’t get the same feelings yeah',\n", + " 'the memories with you were so hard',\n", + " 'of course it may be my fault',\n", + " 'i’ll probably comfort myself like this',\n", + " 'when time goes by this memory will be like smoke too',\n", + " 'fly far away, a new love may find me too',\n", + " 'but i love you girl',\n", + " 'i want to make you smile',\n", + " 'but i love you girl',\n", + " 'i want to wipe away your tears',\n", + " 'but i love you girl',\n", + " 'nothing anymore',\n", + " 'i can’t turn back your changed heart',\n", + " 'i know girl',\n", + " 'i call wanting to see your face',\n", + " 'one last time',\n", + " 'but till the end there’s no answer from you',\n", + " 'oh why are you avoiding me?',\n", + " 'please tell me girl',\n", + " 'i’m still standing still',\n", + " 'but i love you girl',\n", + " 'i wish you would stay here',\n", + " 'but i love you girl',\n", + " 'i wish you would hold onto me',\n", + " 'but i love you girl',\n", + " 'even if i don’t say it',\n", + " 'please don’t lose my eager heart',\n", + " 'but i love you girl',\n", + " 'i want to make you smile',\n", + " 'but i love you girl',\n", + " 'i wan to wipe away your tears',\n", + " 'but i love you girl',\n", + " 'nothing anymore',\n", + " 'i can’t turn back your changed heart',\n", + " 'i know girl',\n", + " '(uh! uh!) 그토록 해맑았던 너의 그 미소',\n", + " '까만 먹구름에 쌓인 내게로',\n", + " '살며시 내게 다가온 그대와의 노래로',\n", + " '우린 하나라는 느낌을 느끼고',\n", + " '사랑은 언제나 내 맘속에 (영원한)',\n", + " '그저 태지 말대로 너와 (함께 한)',\n", + " '시간들 속에서 포근해 지는 것',\n", + " 'everyday to the j and i keeps it hot can you get',\n", + " 'with that 소중한 넌 나의 ticket',\n", + " '힘들던 나의 삶에 고통을 잊게(show down sean)',\n", + " '세상에서 무엇보다도 내가 너를 좋아하게 된 이유',\n", + " '너무나 긴 방황의 길',\n", + " '그곳으로 내게 손을 내민 너의 손길',\n", + " '그대 왜 내게 이렇게 늦게 다가왔나 사랑해요 my love',\n", + " 'i know your eyes in the morning sun',\n", + " 'i feel you touch me in the pouring rain',\n", + " 'and the moment that you wander far from me',\n", + " 'i wanna feel you in my arms again',\n", + " 'how deep is your love',\n", + " '너만을 간직한 내 가슴만큼 커다란 슬픔',\n", + " '영원한 것이 될까 너의 마음',\n", + " '변하진 않았을까 얼마나 많은',\n", + " '사랑이 남아있나 불안한 지금',\n", + " '이 모든 게 쓸데없는 고민들',\n", + " '이젠 믿음만이 내 모든 아픔을 다 지워졌나',\n", + " '언제나 그건 반드시 절대로 변치 않듯이 널 지켜줄게 너의 두 눈 속에서 살아갈게',\n", + " '언제나 같이 할게 (what what)',\n", + " '너와 하나 맞나 내 인생에서 사는 이유하나 (uh!)',\n", + " '빛이 돼 나를 밝혀 줘 또 부셔 줘 너를 위해서',\n", + " '혹시 다른 곳 다시 태어난대도 오직 내겐 너 하나',\n", + " 'and you come to me on a summer breeze',\n", + " 'keep me warm in your love',\n", + " 'then you softly leave',\n", + " \"and it's me you need to show\",\n", + " 'how deep is your love?',\n", + " 'how deep is your love',\n", + " 'how deep is your love',\n", + " 'i really need to learn',\n", + " \"cause we're living in a world of fools\",\n", + " 'breakin’ us down',\n", + " 'when they all should let us be',\n", + " 'we belong to you and me',\n", + " 'uh! you hold me the key to my heart uh!',\n", + " 'yo! and we can never be apart boo',\n", + " 'we’ll ride dip and dive take you',\n", + " 'to a place as i’m by your side uh!',\n", + " 'two hearts falling deep inside uh!',\n", + " 'from start let me make you glide',\n", + " 'cause you got me open wide',\n", + " 'and you may not think i care for you',\n", + " 'when you know down inside',\n", + " 'that i really do',\n", + " \"and it's me you need to show\",\n", + " 'how deep is your love?',\n", + " '(how deep is your love',\n", + " 'how deep is your love)',\n", + " 'i really need to learn',\n", + " \"cause we're living in a world of fools\",\n", + " 'breakin’ us down',\n", + " 'when they all should let us be',\n", + " 'we belong to you and me',\n", + " 'coming to you live',\n", + " 'potential',\n", + " '질 거면, yeah',\n", + " '질 거면 왜 해?',\n", + " '깔끔한 계획',\n", + " '여기서 제외',\n", + " 'put on my jet pack',\n", + " '왜 계속 rap 해?',\n", + " '솔직히 no 이해',\n", + " '솔직히 널 위해',\n", + " 'bro 그냥 just get back',\n", + " 'back, back, back up',\n", + " 'world tour, trendsetter',\n", + " \"2 ep's, full album\",\n", + " \"you can't touch this\",\n", + " \"i'm just saying potential\",\n", + " 'your far from my lane your lame',\n", + " \"i'm on my space ship no safe shit, uh\",\n", + " 'album 냈어, 반응 좋았어',\n", + " \"but i don't care, 바로 다음 거\",\n", + " '섭외 전화, 모든 공연 리스트 준비해놔',\n", + " 'coming to you live',\n", + " '그 rolex, 그 money dance',\n", + " '어설퍼 너, 음, no thanks',\n", + " 'your favorite rapper, 걔 누구였지?',\n", + " 'just bars',\n", + " 'legacy',\n", + " 'legacy',\n", + " '왜 계속 rap 해?',\n", + " '솔직히 no 이해',\n", + " '왜 계속 rap 해?',\n", + " '솔직히 no 이해',\n", + " \"what? i ain't rapping it's all about the money\",\n", + " \"flexin'\",\n", + " '겨우 모은 돈으로 일단은 사러 가 brand',\n", + " '쓰고 나면 돈 얼마는 없어',\n", + " '괜찮아, look at my dab',\n", + " '남은 걸로 섭외해 model',\n", + " '당연히 한 손에는 bottle',\n", + " '이쪽 손은 내 사랑, 돈다발',\n", + " '귀에 대고 전화 통화로 convo, whoa, whoa',\n", + " '최대한 연습한 대로 하면',\n", + " '좀 벌게 해주세요, 제발요, 하나님 저 외로워요',\n", + " 'and i need money to cover my 부족한 외모',\n", + " 'so i can maybe maybe really get ladies, ladies',\n", + " 'till then i ooh, yuh (ay, ay, look at my dab)',\n", + " 'ooh, yuh (ay ay, ay, girl look at my dab)',\n", + " 'ooh, yuh (ay, ay, girl look at my dab)',\n", + " 'yuh, yuh, same adlibs',\n", + " 'how you rappers got no taste?',\n", + " \"가사에서 제발 '총' 빼\",\n", + " 'click clack, bang bang',\n", + " '잡아보지도 못한 총대',\n", + " \"your lame it's okay\",\n", + " '따라 하는 거야 못하면 원래',\n", + " \"i mean don't get it too twisted man\",\n", + " 'keep doing you so i can do me',\n", + " 'legacy',\n", + " 'dream perfect',\n", + " 'mmm, yeah',\n", + " 'f all your long talk',\n", + " '행동의 montage, 미래가 길어',\n", + " '우린 긴 말이 싫어 like f all the long talk',\n", + " 'mmm, yeah',\n", + " 'f all your long talk',\n", + " '행동의 montage, 미래가 길어',\n", + " '우린 긴 말이 싫어 like f all the long talk',\n", + " 'legacy',\n", + " 'legacy',\n", + " 'legacy',\n", + " 'legacy',\n", + " 'iite cool',\n", + " 'legacy',\n", + " 'legacy',\n", + " 'legacy',\n", + " 'legacy',\n", + " 'legacy (legacy)',\n", + " 'legacy (legacy)',\n", + " 'legacy (legacy)',\n", + " 'legacy (legacy)',\n", + " 'legacy (legacy)',\n", + " 'legacy (legacy)',\n", + " 'legacy (legacy)',\n", + " 'legacy',\n", + " '이젠 홍대마저 따라하는 gd 혹은 top',\n", + " '니 자신이 되어라. please be original',\n", + " '볼펜보다 칼을 얼굴에 댄 음악들은 그만 듣고파',\n", + " '뻑이 가기보단 빡',\n", + " '공연보다 공중파, 음악보다는 개인기',\n", + " '역사를 쓰기보단 image in the making',\n", + " 'rap이 옥의 티인 wack mc 대신',\n", + " '내 소개를 합니다. hi, my name is',\n", + " 'b, double e, n-z-i-n-o',\n", + " 'z를 g가 아닌 z로 발음하는 매너',\n", + " '연예인이 되게 해준다는 달콤한 말을 해도',\n", + " '구미가 안 땡기면 숟가락을 내려',\n", + " '내가 내키지 않음 내치고',\n", + " '내가 내키면 해, 그게 내 신념',\n", + " 'yeah, illionaire seems good',\n", + " 'the q, gonzo, isshoman, leggo!',\n", + " 'mr. independent, the real musician',\n", + " 'respect my walk, my talk, my ill decision',\n", + " \"let's ride (let's ride, let's ride)\",\n", + " \"let's ride (let's ride, let's ride)\",\n", + " 'mr. independent, the real musician',\n", + " 'respect my walk, my talk, my ill decision',\n", + " \"let's ride (let's ride, let's ride)\",\n", + " \"let's ride (let's ride, let's ride)\",\n", + " \"10 years in the game, i'm finally here\",\n", + " '지나간 날에 손 흔들고 이제 마무리 지어',\n", + " '멈출 순 없어, 더욱 세게 나아갈 뿐이지',\n", + " '밑바닥부터 외롭게 시작한 우리지',\n", + " \"it's illionaire, baby. put your hands up in the air, baby\",\n", + " '고1 때 재미 삼아 시작했던 내 rap이',\n", + " \"이 판을 완전히 바꿨지, yeah, the game's changed\",\n", + " '기억도 안 나, 놀아봤던 게 언제인지',\n", + " '그만큼 정말 부지런하게 일했지',\n", + " '그 결과 매일매일이 payday 됐지',\n", + " '그게 나의 hustle, i hustle real hard',\n", + " '그러니 너도 어서 니 것을 키워 봐',\n", + " '이제는 인정할 수밖에 없어 내 style',\n", + " \"실력과 돈, livin' like a fiesta\",\n", + " '훗날에 사람들은 날 이렇게 기억하겠지',\n", + " 'the quiett, 계약서 한 장 없이 탄생한 rap star',\n", + " 'mr. independent, the real musician',\n", + " 'respect my walk, my talk, my ill decision',\n", + " \"let's ride (let's ride, let's ride)\",\n", + " \"let's ride (let's ride, let's ride)\",\n", + " 'mr. independent, the real musician',\n", + " 'respect my walk, my talk, my ill decision',\n", + " \"let's ride (let's ride, let's ride)\",\n", + " \"let's ride (let's ride, let's ride)\",\n", + " \"i'm fienin' for a good life. yeah, i'm a dt fan\",\n", + " '음악이 내 직업이지만 난 tv엔 잘 안 나오는 rapper',\n", + " \"i'm an independent musician and i'm proud of it, i feel incredible\",\n", + " '난 어설프게 뛸 바엔 멋지게 걸어',\n", + " '반짝 벌고 떨어질 바엔 난 천천히 벌어',\n", + " \"gutter to the top, i made nothin' to somethin'\",\n", + " \"부정할 수 없지, yeah, i've been workin' and workin'\",\n", + " '적히고 적히는 내 rhyme in my 공책',\n", + " \"studio to venue, where all the microphone's at?\",\n", + " \"oh yeah, i'm everywhere like wi-fi. day time to night time\",\n", + " '거리부터 인터넷, 언제나 늘 tight한',\n", + " '스켸줄에 쫓겨 시간 가는 줄 몰라도',\n", + " \"방이 클럽 안인 듯 i be rockin' all night long\",\n", + " \"i'm on my own, the self made illionaire\",\n", + " '난 내 여자, 내 가족 땜에 일을 해',\n", + " '난 일을 배워왔지, 어렸을 떄부터',\n", + " '내 배는 내가 직접 잘 벌어서 안 굶겨',\n", + " 'put your illionaire signs up',\n", + " '내가 louis 선글라스 쓸 때 니들은 그냥 인상 써',\n", + " '계약서 난 안 써, 잔소리도 안 들어',\n", + " '100프로 내 얘기와 내 맘대로 난 만들어',\n", + " \"내 music, it's ill, i got diamonds on my grills\",\n", + " \"mo' real, mo' skills, mo' thrills, mo' deals\",\n", + " 'mr. independent, the real musician',\n", + " 'respect my walk, my talk, my ill decision',\n", + " \"let's ride (let's ride, let's ride)\",\n", + " \"let's ride (let's ride, let's ride)\",\n", + " 'mr. independent, the real musician',\n", + " 'respect my walk, my talk, my ill decision',\n", + " \"let's ride (let's ride, let's ride)\",\n", + " \"let's ride (let's ride, let's ride)\",\n", + " 'slo야 그거 틀어봐',\n", + " 'i want some roll',\n", + " 'i just want some roll cake',\n", + " 'i wanna go',\n", + " 'i just wanna go there',\n", + " 'i want some roll',\n", + " 'i just want some roll cake',\n", + " 'i wanna go',\n", + " 'i just wanna go there',\n", + " 'whippin’ and whippin’ and whippin’',\n", + " 'and whippin’ the paper',\n", + " 'yeah i call it roll cake',\n", + " 'i’m the best baker',\n", + " 'whippin’ and whippin’ and whippin’',\n", + " 'and whippin’ the paper',\n", + " 'yeah i call it roll cake',\n", + " 'i’m the best baker',\n", + " 'gochild',\n", + " '던져 버렸지 철 지게는 얼마 전에',\n", + " '먼저 물어 이제 넌 지금 얼마를 원해',\n", + " '솔직히 난 hunnit 없어',\n", + " '지금 내 안중엔',\n", + " 'this shit fresh 증명해',\n", + " '내 앞에 선 관중이',\n", + " 'hey yah what time is it now',\n", + " 'yah prime time 나를봐',\n", + " '작당모의한 내년은 ytc4lyf',\n", + " '틀어봐 당장 이런까라 박자는',\n", + " '우리 나와바리란 말이지',\n", + " 'make money',\n", + " 'make money',\n", + " '낱장은됐고 더 겹쳐서 불러',\n", + " 'bakery',\n", + " 'bakery',\n", + " '빳빳한 것들로 말아서 불러',\n", + " 'roll cake roll cake',\n", + " '더 많이 원해높게 높게',\n", + " 'for next birthday zilla',\n", + " 'no 스뎅 rolex',\n", + " 'i want some roll',\n", + " 'i just want some roll cake',\n", + " 'i wanna go',\n", + " 'i just wanna go there',\n", + " 'i want some roll',\n", + " 'i just want some roll cake',\n", + " 'i wanna go',\n", + " 'i just wanna go there',\n", + " 'whippin’ and whippin’ and whippin’',\n", + " 'and whippin’ the paper',\n", + " 'yeah i call it roll cake',\n", + " 'i’m the best baker',\n", + " 'whippin’ and whippin’ and whippin’',\n", + " 'and whippin’ the paper',\n", + " 'yeah i call it roll cake',\n", + " 'i’m the best baker',\n", + " '쩐이 필요 하지 난 꽤 배 고프지',\n", + " '울 엄빠 등골까지',\n", + " '펴 이젠 효도할 때지',\n", + " '이 새 소리로 그치 ppprrrrrr',\n", + " '뭉칫돈이 roll cake 이면',\n", + " '난 이미 제일가는 제빵사지',\n", + " '쇼미 빨이 빠지고나면',\n", + " '결국 내 주머니가 제일 꽉차지',\n", + " 'skrrrrr',\n", + " '곧 우린 전국을 refresh',\n", + " 'prrrrrr',\n", + " 'made by zene 이 소린 존나 lit 해',\n", + " '한참 앞서가지',\n", + " 'like my trap daddy bill stax',\n", + " '지금 이 순간부터',\n", + " '나오는 음악은 나와 비슷해져',\n", + " '가는걸 느낄수밖에',\n", + " '그럼 넌 누구를 들을거야',\n", + " '내가 선두에 서 있어',\n", + " '그럼 넌 누구를 찾을거야',\n", + " '난정말 배고파 가져와 뭉칫돈',\n", + " '더미를 i want some roll cake',\n", + " '아참 i’m the best baker',\n", + " 'i’ll put your money in my pocket',\n", + " 'i want some roll',\n", + " 'i just want some roll cake',\n", + " 'i wanna go',\n", + " 'i just wanna go there',\n", + " 'i want some roll',\n", + " 'i just want some roll cake',\n", + " 'i wanna go',\n", + " 'i just wanna go there',\n", + " 'whippin’ and whippin’ and whippin’',\n", + " 'and whippin’ the paper',\n", + " 'yeah i call it roll cake',\n", + " 'i’m the best baker',\n", + " 'whippin’ and whippin’ and whippin’',\n", + " 'and whippin’ the paper',\n", + " 'yeah i call it roll cake',\n", + " 'i’m the best baker',\n", + " 'okay i’m the best baker 야 야',\n", + " '너네들의 페이스메이커 야 야',\n", + " '내 목에다가 체인 세 겹 야 야',\n", + " '빛나는 미소 고마워 예권',\n", + " '멍청이들은 안 돼 아무리',\n", + " '따라해봐도 (never never)',\n", + " '나는 새꺄 제빵왕이야',\n", + " '김탁구간지로다가임마 (oh yeah)',\n", + " '소보루는 좆까 내 피부는',\n", + " '존나게 깔끔해 oh clean (clean)',\n", + " 'rollcake with some cream',\n", + " '존나게 달콤해 oh sweet (sweet)',\n", + " '핫 뜨거야 롤케익 수두룩 만들어놔',\n", + " '새끼들은 먹어보고 싶어도 못 먹어',\n", + " '내 지갑에 다 들어가 다 들어가 야',\n", + " '오 나 빵을 많이 구워',\n", + " '그 꼴이 마치 그 저 파리바게트',\n", + " '음 목걸이 아래루 목걸이 아래루',\n", + " '목걸이 한 개 더',\n", + " '에이 초까리하게 늘 더 많이 원해',\n", + " '두 손 바리바리루',\n", + " '예 난 카미카제 느낌으로다가',\n", + " '현금박치기 빡빡빡빡빡',\n", + " 'i want some roll',\n", + " 'i just want some roll cake',\n", + " 'i wanna go',\n", + " 'i just wanna go there',\n", + " 'i want some roll',\n", + " 'i just want some roll cake',\n", + " 'i wanna go',\n", + " 'i just wanna go there',\n", + " 'whippin’ and whippin’ and whippin’',\n", + " 'and whippin’ the paper',\n", + " 'yeah i call it roll cake',\n", + " 'i’m the best baker',\n", + " 'whippin’ and whippin’ and whippin’',\n", + " 'and whippin’ the paper',\n", + " 'yeah i call it roll cake',\n", + " 'i’m the best baker',\n", + " \"i'm on my beast mode\",\n", + " 'sipping on',\n", + " '난 절대 안 가르쳐줘 내 비법',\n", + " '내 모두 기겁',\n", + " '처럼 옷을 입어',\n", + " 'like big pun',\n", + " '날으는 bitches, 일으킨 기적',\n", + " '로또에 당첨,',\n", + " 'big blunts',\n", + " \"i'm like grim reaper\",\n", + " 'iphone trapping on a beeper',\n", + " '열두시 반을 넘긴 시간에',\n", + " '사람들의 열기로 열기 가득해',\n", + " '갖은 열정을 다 꺼낸 다음에',\n", + " '바닥에 담배처럼 비벼대',\n", + " '마음이 비어있을 때',\n", + " '어디에도 잘 안 달라 붙을 때',\n", + " '전기처럼 갑자기 올라',\n", + " '온 신경을 다 깨우는 너',\n", + " \"she's so hot 눈에 들어와\",\n", + " \"you'll be mine tonight\",\n", + " \"you're so special girl\",\n", + " '우리 둘이 do it everything',\n", + " \"you'll be like alright\",\n", + " \"i knew it that's my girl\",\n", + " 'what you want',\n", + " 'is more than 내 주머니 right?',\n", + " '오히려 넌 딴 게 궁금하지만',\n", + " '다들 뭔가 착각하고 있는지',\n", + " '안 보이나봐 널 못 꿰뚫어봐',\n", + " '따뜻이 널 데워준 뒤',\n", + " '조금씩 깊이 네게 침투한 뒤',\n", + " '전기처럼 널 자극하면',\n", + " '폭발해버릴지도 몰라',\n", + " \"she's so hot 눈에 들어와\",\n", + " \"you'll be mine tonight\",\n", + " \"you're so special girl\",\n", + " '우리 둘이 do it everything',\n", + " \"you'll be like alright\",\n", + " \"i knew it that's my girl\",\n", + " \"she's so hot 눈에 들어와\",\n", + " \"you'll be mine tonight\",\n", + " \"you're so special girl\",\n", + " '우리 둘이 do it everything',\n", + " \"you'll be like alright\",\n", + " \"i knew it that's my girl\",\n", + " '내 눈에 비친 널 반드시 데리구가',\n", + " \"girl i'mma make u mine tonite\",\n", + " \"내일의 일이 우릴 막아도 i just don't care\",\n", + " \"i'mma spend some time tonite\",\n", + " '그래 너와 함께 나와 같이',\n", + " '밤새 내일이 오면 아쉬움이 남지 않게',\n", + " 'money i got that honey how u like that',\n", + " '우리 둘이면 충분해 저 하늘에 닿기엔',\n", + " 'stay fly~ everydays a party',\n", + " \"젊은데 뭐 어때 let's get retarted\",\n", + " 'one for the money and 2 for the dough',\n", + " 'primary jinbo young king young boss',\n", + " \"she's so hot 눈에 들어와\",\n", + " \"you'll be mine tonight\",\n", + " \"you're so special girl\",\n", + " '우리 둘이 do it everything',\n", + " \"you'll be like alright\",\n", + " \"i knew it that's my girl\",\n", + " \"she's so hot 눈에 들어와\",\n", + " \"you'll be mine tonight\",\n", + " \"you're so special girl\",\n", + " '우리 둘이 do it everything',\n", + " \"you'll be like alright\",\n", + " \"i knew it that's my girl\",\n", + " \"let's dance on the floor, it's like netherlands\",\n", + " '모든 게 새로워 like travel man',\n", + " 'toilet? right over there',\n", + " \"ladies' room? 줄 서보세요\",\n", + " '여보세요, bartender man',\n", + " '목 좀 축이게 give me cocktail',\n", + " 'or lemonade? or gatorade?',\n", + " '\"음, lemonade로 할게\"하는 순간',\n", + " '내 눈에 든 검정색 finger nail (hello)',\n", + " 'hey, 내 이름은 beenzino에요',\n", + " '난 이상한 애 아니에요 not a player',\n", + " 'but i swear no other man is realer',\n", + " '입꼬리를 씰룩거리며 기다렸지',\n", + " '너의 답변 and she says \"스물셋\", \"대학생\"',\n", + " '\"fendi bag\" \"한잔 해\"',\n", + " \"let's dance\",\n", + " 'let me light you up like a candle',\n", + " 'yes, i know how to handle you',\n", + " 'you know that i can handle you',\n", + " 'you know that i can handle you',\n", + " \"let's roll, let's go, let's make some moves\",\n", + " \"baby, let's do some one on one\",\n", + " 'we can do a little one on one',\n", + " 'we can do a little one on one',\n", + " 'we had a little chitchat, 서로 서로 간봤지',\n", + " '이제는 충분해, so girl how you like me?',\n", + " '어린 티 팍팍 내봤자지',\n", + " '스물셋, 너도 알을 나이니',\n", + " '통금? ha, 말 다 했지, 아버진 주무신대',\n", + " '새벽 세 시 반이니까 마음 놔',\n", + " '아무도 널 안 찾아',\n", + " '니 친구는 내 친구한테 짱박혔지',\n", + " '이제 남은 건 너와 나 단둘',\n", + " '오늘은 빼도 박도 못한단 걸 알아둬',\n", + " '뭘 그리 망설이셔? 마음 편히 먹으라고',\n", + " 'you can make yourself at home',\n", + " '아무도 우릴 못봤어',\n", + " '이따 나갈 때 얼굴 가려도 돼 내 모자로',\n", + " \"i don't know you know\",\n", + " \"i don't know, you know\",\n", + " \"i don't know, you know\",\n", + " 'damn',\n", + " 'let me light you up like a candle',\n", + " 'yes, i know how to handle you',\n", + " 'you know that i can handle you',\n", + " 'you know that i can handle you',\n", + " \"let's roll, let's go, let's make some moves\",\n", + " \"baby, let's do some one on one\",\n", + " 'we can do a little one on one',\n", + " 'we can do a little one on one',\n", + " '다리 같이 꼬인 태도. 아까랑 딴판이지',\n", + " '넌 변해버렸어, before, after',\n", + " '참 못됐어, 넌, 차라리 말을 말지',\n", + " '건방지게 발음하지, \"get out of my way\"',\n", + " '음, 그만 가봐도 돼, 너는 가방을 매',\n", + " '난 인사를 건내며 또 담배를 태웠고 너털 웃음을 짓지',\n", + " '남자들아 들어라, 이때 울으면 gg',\n", + " '지기 싫어? 움직이셔',\n", + " '이대로 죽기 싫어서 계속된 내 show',\n", + " '미소로 꽉꽉 채워 놓은 얼굴로 등장했지, 내가',\n", + " '\"yo, ladies wassup?\" (hi)',\n", + " \"let's dance on the floor, 처음인 듯이\",\n", + " '고개를 끄덕이며 거울을 보지',\n", + " '얼음 녹이듯 홀을 누비는 내 태도는 불량해',\n", + " 'fuck the police',\n", + " 'let me light you up like a candle',\n", + " 'yes, i know how to handle you',\n", + " 'you know that i can handle you',\n", + " 'you know that i can handle you',\n", + " \"let's roll, let's go, let's make some moves\",\n", + " \"baby, let's do some one on one\",\n", + " 'we can do a little one on one',\n", + " 'we can do a little one on one',\n", + " 'sunny day sunny day',\n", + " '내리 쬐는 태양 아래 지금 무얼 찾아 헤매',\n", + " 'anywhere anywhere',\n", + " '그 어디가 됐든 떠나',\n", + " '지금 숨이 막혀 hottest',\n", + " \"i don't wanna sleep tonight\",\n", + " 'call me up baby',\n", + " \"i don't care i don't care\",\n", + " '더위만큼 지루한 시간을 날려버려',\n", + " 'right now',\n", + " '더 뜨겁게 high 타오르잖아',\n", + " '원해 난',\n", + " '더 과감해져',\n", + " '짜릿한 느낌 좋아',\n", + " '터트려줘 이 무드에 취해서',\n", + " 'i feel fine feel so fine',\n", + " 'so turn it up',\n", + " '하고 싶잖아 불태워봐 우리만의 party',\n", + " 'got no time to look at my eyes',\n", + " 'look at my eyes',\n", + " 'oh hold me baby',\n", + " 'somebody tell me tell me',\n", + " 'somebody help me help me',\n", + " 'i really want him want him',\n", + " 'call me call me call me call me',\n", + " 'want him want him like a grenade',\n", + " '나와 함께 해',\n", + " '지금 이 순간이 지나가기 전에',\n", + " '불어 시원하게',\n", + " '바람이 우리를 감싸 안아주네',\n", + " '같이하고 싶은 밤',\n", + " '어둠 속에서 난 피어나',\n", + " '서로에게 빛이 되어',\n", + " '더 기다려주지 않아',\n", + " '시간은 계속 지나 둘이',\n", + " 'got us two on fire 더는 참지 않을래',\n", + " '더 뜨겁게 high 타오르잖아',\n", + " '변해 난',\n", + " ...]},\n", + " 'data': ['everybody welcome to beverly hills',\n", + " 'where the dreams come true',\n", + " 'yeah, i’m at the top so high',\n", + " 'welcome to beverly hills',\n", + " '맑은 공기, 다른 시야',\n", + " '다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'yeah, i’m at the top so high',\n", + " 'welcome to beverly hills',\n", + " '맑은 공기, 다른 시야',\n", + " '다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " \"yo, i'm back on my grind, yeah\",\n", + " '긴 show는 끝났어, 난 집에 와서 다시 가방을 싸네',\n", + " 'featuring 녹음 몇 개 하고 공연하러 미국에 감에',\n", + " \"no rest, tour let's start the show like common and kanye\",\n", + " '솔직히 이제 촬영은 질렸지',\n", + " '내가 하고싶은 건 real show, real track과 rap',\n", + " \"yo, i'm outta death row, 이건 aftermath\",\n", + " '새 노래를 만들었지 어젯밤에',\n", + " '그리고 들어갈 거야 새 album에',\n", + " 'coming soon motherfucker new lp',\n", + " '그동안 찍고 있어 넌 selfie',\n", + " '11년 동안 11장의 album을 냈지만',\n", + " '어제 데뷔한 것처럼 kill shit, yeah',\n", + " '아직도 rap을 빠르게만 하면 잘하는 줄 아는 놈들',\n", + " '이건 100미터 달리기가 아냐, 느껴봐라, 이 음악의 영혼을',\n", + " '뭐 그렇다고 해도, you know, bewhy는 잘하지 물론',\n", + " '1ll recognize 1ll motherfucker',\n", + " \"we be chillin' at the motherfuckin'...\",\n", + " 'yeah, i’m at the top so high',\n", + " 'welcome to beverly hills',\n", + " '맑은 공기, 다른 시야',\n", + " '다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'yeah, i’m at the top so high',\n", + " 'welcome to beverly hills',\n", + " '맑은 공기, 다른 시야',\n", + " '다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'welcome to beverly hills, beverly hills',\n", + " '제3의 눈 덕분에 이미 난 너네 머리 위',\n", + " '500짜리 노예 계약에서 mr. indenpent',\n", + " '1llionaire motherfucker, 이게 내 길이지',\n", + " 'la scala beef bolognese beverly hills',\n", + " '수제 lemonade 한 잔이면 배부르지',\n", + " 'natural nine over eight - my gambling skill',\n", + " '날 엿 먹이는 놈들 입에 돼 물리지',\n", + " '개소리는 집어치우고 부자가 된 적 없듯',\n", + " '돈 벌어 달에 억이 이젠 average지',\n", + " 'hip-hop은 가난 하단 것은 깨버린지',\n", + " '오래, 보란 듯이 백만장자 돼버리기',\n", + " \"let's go get the money, go get the money\",\n", + " 'go get the money, go get the money, go',\n", + " '고갤 끄덕거려, 갤 끄덕거려',\n", + " '고갤 끄덕거려, 갤 끄덕거려, ohh',\n", + " '뭐든 쉽지 뭐를 하든 간에 난 안 지침',\n", + " 'rap은 그냥 미침, 뒷짐 지고 헛 기침하며',\n", + " \"꼰대같이 일침 할 때 i ain't bitchin'\",\n", + " \"i be eatin' rice, feeling nice\",\n", + " 'building price, killing guys',\n", + " \"in disguise, flip this dice, mill' on count\",\n", + " '1lly life, billing top, city lights, woah',\n", + " '요즘은 이런 track 위에 rap하며',\n", + " 'dab하면 하찮게 여기는 게 swag',\n", + " 'no benz, no chains, rolex, 스냅백',\n", + " '부끄러워하며 피하는 게 swag',\n", + " '닥쳐, 내 꼴리는 대로 하는 게 내 hip-hop',\n", + " 'trap이든 boom bap이든 어떤 rhythm이든',\n", + " '너희들보단 나니까',\n", + " 'yeah, i’m at the top so high',\n", + " 'welcome to beverly hills',\n", + " '맑은 공기, 다른 시야',\n", + " '다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'yeah, i’m at the top so high',\n", + " 'welcome to beverly hills',\n", + " '맑은 공기, 다른 시야',\n", + " '다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'yeah, i’m at the top so high',\n", + " 'welcome to beverly hills',\n", + " '맑은 공기, 다른 시야',\n", + " '다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " 'beverly hills, beverly hills',\n", + " '모두 다 welcome to beverly hills',\n", + " \"1llionaire, we're gettin' money outta here boy\",\n", + " 'spring, summer, fall, winter',\n", + " \"aye, yea let's get it\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " 'get money season, 봄, 여름, 가을, 겨울',\n", + " '풍요롭게 지내, uh, uh',\n", + " '나는 겨우 사거나 어려움을 겪지 않네',\n", + " '버는 돈이 니들 나이처럼 적지 않네',\n", + " '절대 먹지 않네 조금 식은 음식',\n", + " \"i'm gettin' hella cheese, 사진을 찍은 듯이\",\n", + " '난 십분도 쉬지 않고 뭐든 쉬운 듯 일하지',\n", + " '1lly, 1ll이 좀 많아, 그런 깊은 뜻이',\n", + " '막돼먹은 이런 hip-hop으로 돈을 잘 버네',\n", + " '외면하던 놈들 이제 와서 날 보네',\n", + " '그런 얌체 같은 놈들 이제 내가 깔보네',\n", + " '뭐든 뚜껑 열어 봐야 아는 법, calzone',\n", + " '알로에 한잔 마시고',\n", + " '5억짜리 귀신 차 시동',\n", + " '부릉 부릉 소리 나시고',\n", + " '서울에 비가 오면 날씨 좋은 곳으로',\n", + " \"뜨는 게 내 취미 i'mma ball\",\n", + " \"biggest man up in this game but i ain't tall\",\n", + " '뭐든 만족하지 못해 하나론',\n", + " '오늘도 열심히 돈 벌러 gotta go',\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " 'it’s like one rollie, two rollie, three rollie, four',\n", + " 'two chains, three chains, four and couple mo',\n", + " '차가 둘, 셋, 넷, 오늘 뭘 탈지 고르고',\n", + " '내 지갑은 늘 뚱뚱, my pocket gordo',\n", + " '어제는 fiji. 그저껜 홍콩',\n", + " '오늘은 van city, 다음은 toronto',\n", + " '새해론 dubai, 세계 방방곡곡 잘 돌아다니네',\n", + " '못 따라오지 홍길동도',\n", + " '난 통도 크게 기분 대로 맘껏 쏘지',\n", + " 'young king, young boss, young og',\n", + " 'in this motherfucker i be runnin shit',\n", + " '많은 걸 이뤄냈지만 아직도 어리지',\n", + " '어제보단 나은 오늘, 오늘보다 쩌는 내일',\n", + " \"mission complete well i ain't fuckin fail\",\n", + " '제일 잘 나가는 젊은 대한민국 대표 rapstar',\n", + " '여전히 연예인이 아닌 그냥 rapstar',\n", + " '내 style 대로 지키는 나의 품위',\n", + " '태권도 flow, 검은 띠, 니들은 품띠',\n", + " '이제 와서 hip-hop 한다 설치는 idol이나 rapper',\n", + " '너네들 다 늦었으, 이곳은 이미 내 꺼',\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"biatch, i'm riatch, ho\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " \"eyday i'm gettin' rich bish, rich bish\",\n", + " '난 놀면서도 돈을 버네 (난 놀면서도 돈을 버네)',\n", + " '자면서도 돈을 버네 (자면서도 돈을 버네)',\n", + " '돈을 쓰면서도 돈을 버네 (돈을 쓰면서도 돈을 버네)',\n", + " '돈을 벌면서도 돈을 버네 (돈을 벌면서도 돈을 버네)',\n", + " '난 놀면서도 돈을 버네 (난 놀면서도 돈을 버네)',\n", + " '자면서도 돈을 버네 (자면서도 돈을 버네)',\n", + " '돈을 쓰면서도 돈을 버네 (돈을 쓰면서도 돈을 버네)',\n", + " 'heh, whoop',\n", + " 'get up in the morning',\n", + " \"looked around and ain't nothing changed\",\n", + " \"and i can't be living like this\",\n", + " 'so this is what i said',\n", + " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", + " \"pedal to the metal, bitch, i'm all in\",\n", + " 'do the same if you winning fifty one (seoul)',\n", + " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", + " \"pedal to the metal, bitch, i'm all in\",\n", + " 'do the same if you winning fifty one',\n", + " 'uh, 첫째로 나를 알어? bitch',\n", + " 'no, 너는 반의 반을 알어, bitch',\n", + " '모른다면 오늘밤은 나를 안어',\n", + " '나를 닮은 애를 낳아, i know you fuck with this',\n", + " \"okay, now i'm startin' up\",\n", + " 'kush in the bong, hash in the pot',\n", + " \"okay, now i'm stirring up\",\n", + " 'tick to the tock, now the games locked',\n", + " \"no, i ain't welcoming y'all\",\n", + " '기회는 끼니와 달라',\n", + " '놓치면 싹 다 무너질 dominoes (yeah)',\n", + " '누구나 인생은 도박 아니면 도망',\n", + " '51%가 넘는다면 고민 말어, 걸어 몽땅 (okay)',\n", + " '돌을 던진다면 받아 성을 쌓아',\n", + " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", + " \"pedal to the metal, bitch, i'm all in\",\n", + " 'do the same if you winning fifty one',\n", + " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", + " \"pedal to the metal, bitch, i'm all in\",\n", + " 'do the same if you winning fifty one',\n", + " 'uh, 둘째로 칼을 갈어, bitch',\n", + " 'hah, 후회는 필요찮아, not a bit',\n", + " '모든 실패는 가르침 (okay)',\n", + " '무너진다면 여기에 영원히 잠들지 (for real)',\n", + " '남김없이 싹 다 걸어버려',\n", + " \"stake's high, still fuck the flop (fuck that shit)\",\n", + " '상상못해 다음장',\n", + " 'pocket rockets, 다음 단계는 주식상장 (yeah)',\n", + " '내 손에는 건전지처럼 double a, 쥐어졌지',\n", + " '그러니까 나는 겁없이 가진 전부를 걸었지 (okay)',\n", + " '한다리만 걸치고 눈치보는 새끼들 주머니를 털어',\n", + " '한국은 안돼? 얼마를 깔래? 네 혓바닥 걸어, bitch (seoul)',\n", + " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", + " \"pedal to the metal, bitch, i'm all in\",\n", + " 'do the same if you winning fifty one (seoul)',\n", + " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", + " \"pedal to the metal, bitch, i'm all in\",\n", + " 'do the same if you winning fifty one',\n", + " '이 바닥은 널 망하게 할 수 있는 강원랜드',\n", + " '재미보러 왔던 곳이었는데 또 어느새',\n", + " '항상 갇혀 있는 것만 같지, 마치 감옥에',\n", + " '조심해, 잘못하단 너도 빈털털이 돼',\n", + " 'slot machine을 땡기듯 한푼 두푼 땡기다',\n", + " '작품성이 아닌 오로지 수익만을 챙기다',\n", + " '술과 인기에 취해서 생각없는 냄비만',\n", + " '먹다보니 남는 것은 라면 먹는 냄비다',\n", + " '처음부터 이길 수가 없었던 사기',\n", + " '모든 것을 잃은 후엔 결국 영혼을 팔지',\n", + " '이건 바다 이야기가 너의 이야기',\n", + " '아니면 나의 이야기, 오늘도 전부를 걸지, yeah',\n", + " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", + " \"pedal to the metal, bitch, i'm all in\",\n", + " 'do the same if you winning fifty one (seoul)',\n", + " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", + " \"pedal to the metal, bitch, i'm all in\",\n", + " 'do the same if you winning fifty one',\n", + " '네가 바로 내 기쁨. 어린 아이 된 기분',\n", + " '네 생각 안 하고 버티기 길어봐야 10분',\n", + " '지금 너와 내 사이, 냉정과 열정 사이',\n", + " '어떻게라도 좋아 if i could keep you right beside me',\n", + " '네 얼굴은 조각 같이 너무 아름다워',\n", + " '너만 보면 난 동상 같이 얼어, my superstar',\n", + " '넌 한 마리 butterfly, 꽃밭의 나비효과',\n", + " '작은 미소에 내 맘 속에는 폭풍이 일잖아',\n", + " '더 달아나 봐. 날아가 봐. 이 참에 나를 좀 알아가 봐',\n", + " '남자는 애 아님 개라잖아. 다른 놈 매 같이 채가잖아 (ah)',\n", + " '지금까지 못 느껴 본 사랑 줄게',\n", + " \"i'll be your james bond. 끝까지 널\",\n", + " 'you got me losing my mind the way you got me fired up',\n", + " 'never give up, boy, even when they try us',\n", + " 'you and me against the world',\n", + " 'with you i ride or die tonight',\n", + " 'you have my heart like the beat the way you got me turned up',\n", + " 'never give up boy even when they try us',\n", + " 'you and me against the world',\n", + " 'with you i ride or die tonight',\n", + " 'ah, yep',\n", + " '내가 지루한 현실주의자라면 넌 몽상가',\n", + " '너 가는 곳이라면 꿈 속이라도 쫓아가',\n", + " '저 푸른 초원 위 그림 같은 집을 짓고',\n", + " '네 약지 손가락 위 엄지만한 다이아 찍고',\n", + " '세상을 선물할게. 넌 그 주인이 돼주면 돼',\n", + " '이건 미친 사랑 노래. 넌 그 주인공이 돼주면 돼',\n", + " \"내 달력은 새빨개. 왜? 'cause everyday is your birthday\",\n", + " \"내 달력은 새빨개. 왜? 'cause everyday is your birthday\",\n", + " '잘 들어나 봐. 들어와 봐. 제발 날 그만 좀 들었다 놔',\n", + " '한 입 가지고 두 말 할까 봐? 소꿉장난은 그만 할까 봐, nah',\n", + " 'we ride or die. 너는 bonnie, 나는 clyde',\n", + " '우리에게 내일은 없다. tonight',\n", + " 'you got me losing my mind the way you got me fired up',\n", + " 'never give up, boy, even when they try us',\n", + " 'you and me against the world',\n", + " 'with you i ride or die tonight',\n", + " 'you have my heart like the beat the way you got me turned up',\n", + " 'never give up boy even when they try us',\n", + " 'you and me against the world',\n", + " 'with you i ride or die tonight',\n", + " 'me and my girlfriend, we ride or die',\n", + " \"me and my girlfriend (i'm crazy)\",\n", + " 'me and my girlfriend, we ride or die',\n", + " \"me and my girlfriend (i'm crazy)\",\n", + " 'me and my girlfriend, we ride or die',\n", + " \"me and my girlfriend (i'm crazy)\",\n", + " 'me and my girlfriend, we ride or die',\n", + " \"me and my girlfriend (i'm crazy)\",\n", + " 'you got me losing my mind the way you got me fired up',\n", + " 'never give up, lady, even when they try us',\n", + " 'you and me against the world',\n", + " 'with you i ride or die tonight',\n", + " 'you have my heart like the beat the way you got me turned up',\n", + " 'never give up boy even when they try us',\n", + " 'you and me against the world',\n", + " 'with you i ride or die tonight',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'under rapper들의 연봉, 그건 내 손목의 시계 money',\n", + " '또 돈 벌러 갈 시간이네, 시곌 보니',\n", + " 'illionaire, 전국 길에 여기저기 매장 밖에 걸린 사진',\n", + " '우린 니네 머리 위에서 뛰어다니며 놀지',\n", + " '따라잡았다 싶을 때 또 앞서 가네 저 멀리',\n", + " 'at rodeo, beverly, 옷에 3천을 딱 걸지만',\n", + " '괜찮아. 뭐, 한두 달이면 썼던 돈을 다 벌지',\n", + " '내 몸값은 늘 올라, amigos',\n", + " 'versace, givenchy, balmain, yeah i need those',\n", + " '아직도 안 믿고 날 씹고 아니꼬워하는',\n", + " '놈들에겐 관심조차 없어. 난 뒤도 안돌아',\n", + " '스물하나에는 1억, 스물둘엔 거의 2억',\n", + " \"그럼 스물셋엔 더? hell yeah, i'm gettin' bigger\",\n", + " 'with the quiett and beenzino, we the illionaire gambino',\n", + " '다 물러나, 저 뒤로. 누가 감히들 댐비노?',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'i love my life, how about you?',\n", + " 'fuck the price, 일단 바구니에 담아둬',\n", + " \"분더샵 shopper, i don't shop in karmaloop\",\n", + " 'got rolex, already. 다음은 차라고',\n", + " 'i treat my girlfriend like it is her birthday',\n", + " '월요일에는 현대, 화요일에는 롯데',\n", + " '수요일에는 rodeo, 목요일에는 워커힐',\n", + " '금요일엔 10 corso como에 가서 comme des',\n", + " 'you can call me 지름신, or 힙합 입씨름신',\n", + " 'yves saint laurent 신을 신고 신고식을 치르지만',\n", + " \"alright, i don't give a shit. 언제나 어김 없이\",\n", + " '섭외가 끊임없지. 너무 좋아, 내 직업이',\n", + " 'and let the haters hate on me. 걔네가 늘상 해온 일',\n", + " '말릴 생각은 없어. 증오는 몸에 해롭지',\n", + " '난 좋은 것만 보고 듣고, 좋은 것만 배웠으니',\n", + " '이 자리에 왔지. my clique, you know what it is',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'fuck bad bitches, yeah, i fuck bad bitches',\n", + " 'good girl gone bad, gone bed with me',\n", + " 'illionaire, 여자들이 앵기지',\n", + " 'fuck love, 난 돈을 챙기지',\n", + " 'rap flow winner with chanel chain',\n", + " 'steaks for my dinner, 그게 내 웰빙',\n", + " 'dok2와 zino, illionaire gang',\n", + " \"yeah, we ballin' like lebron, dwayne wade\",\n", + " 'top class muhfuckas on one',\n", + " '우리 공연에 오는 게 그녀들의 소원',\n", + " '불과 몇십 초만에 매진되는 콘서트 티켓',\n", + " '다음날 딱 열 배 비싸게 파는 bitches',\n", + " \"이 얘긴 나에게는 현실, 허나 너에겐 swaggin'\",\n", + " 'illionaire the rap stars, 니넨 그냥 행인',\n", + " \"bitches actin', my money stackin'\",\n", + " \"rappers wackin', muhfucka i'm gangin', wussup\",\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'illionaire gang, illi-illionaire gang',\n", + " 'hahaaaha yea yeah',\n", + " 'i feel good right now',\n", + " 'just stay with me tonight girl',\n", + " \"let's go\",\n", + " \"girl girl baby don't leave tonight\",\n", + " 'i know you heard heard',\n", + " 'me stay with me tonight yeah',\n", + " \"girl girl baby don't leave tonight\",\n", + " 'i know you heard heard',\n", + " 'me stay with me tonight yeah',\n", + " 'girl girl girl girl',\n", + " 'baby girl girl girl girl bbaby',\n", + " 'girl girl girl girl baby',\n", + " 'girl girl girl girl',\n", + " 'check it out now',\n", + " 'girl girl',\n", + " '오늘따라 더 예뻐 보이는듯 해',\n", + " '더 가까이 내 옆으로 와',\n", + " '내 몸은 자동적으로 이끌려',\n", + " '니 곁으로 가',\n", + " '놀라 거울을 봐',\n", + " '놀라하지도 마',\n", + " '너와 함께라서 더 아름다운',\n", + " '오늘의 이 서울의 밤',\n", + " \"yeah let's do it right now\",\n", + " '우리의 사랑은 서로에게',\n", + " \"let's propin right now\",\n", + " \"let's make it groovin night ma\",\n", + " 'just say yes say yes',\n", + " '아니라고 말하지마',\n", + " 'just say yes say yes',\n", + " '우리에게 필요한 건 오직 우리 둘',\n", + " '물이 흐르는 것처럼 밤새',\n", + " 'i just wanna flow with you',\n", + " \"i'm luvin who\",\n", + " \"i'm luvin you\",\n", + " '두 말하면 잔소리',\n", + " '오늘따라 짙게 거칠게 느껴지는',\n", + " '니 숨소리와 숨냄새',\n", + " '그 향기에 취해',\n", + " \"cuz i'm a jk\",\n", + " \"i'll be drunken n a tiger\",\n", + " \"you ain't a t\",\n", + " \"but you're ma baby lady\",\n", + " '내 품에 안겨',\n", + " '조금 더 가까이 와',\n", + " '더 나를 당겨',\n", + " '이제 마음 비워',\n", + " '다시 말할게 한번',\n", + " 'listen',\n", + " \"girl girl baby don't leave tonight\",\n", + " 'i know you heard heard',\n", + " 'me stay with me tonight yeah',\n", + " \"girl girl baby don't leave tonight\",\n", + " 'i know you heard heard',\n", + " 'me stay with me tonight yeah',\n", + " 'girl girl girl girl baby',\n", + " 'girl girl girl girl bbaby',\n", + " 'girl girl girl girl baby',\n", + " 'girl girl girl girl',\n", + " '아직 가지마요',\n", + " 'stay with me tonight girl',\n", + " '조금만 더 있어줘',\n", + " 'never have a gonna miss you',\n", + " 'ma baby girl',\n", + " '내 곁으로 와',\n", + " 'just hold me down',\n", + " 'hold me down',\n", + " '아직 가지마요',\n", + " 'stay with me tonight girl',\n", + " '조금만 더 있어줘',\n", + " 'never have a gonna miss you',\n", + " 'ma baby girl',\n", + " '내 곁으로 와',\n", + " 'just hold me down',\n", + " 'i want you want you want you',\n", + " 'i want you want you want you',\n", + " 'i want you want you want you',\n", + " 'i want you want you want you',\n", + " 'the qay',\n", + " 'babe girl listen',\n", + " '난 오직 너 땜에 숨 쉬어',\n", + " '내일이 어떻게 되든',\n", + " '오늘 밤은 너와 함께해야 겠어',\n", + " '의심 하지마',\n", + " '절대 내 사랑은 거짓이 아냐',\n", + " '나 보다 멋진 놈 많아도',\n", + " '나 처럼 널 사랑할 수 있는 사람은',\n", + " '오직 나 하나',\n", + " '잠깐만 babe 이런 날 두고',\n", + " '대체 어딜 가려구',\n", + " '널 위한 내가 여기 있는데',\n", + " '곰인형 끌어안고 자려구',\n", + " 'hhh 굳이 말 안 해도 알고 있어',\n", + " 'you want me too',\n", + " \"girl you already know ain't nobody\",\n", + " 'luvs you like the quiett do',\n", + " '보여 줬지 지금껏',\n", + " '너도 느끼고 있을 걸',\n", + " '내 사랑은 어머니의 사랑만큼이나',\n", + " '넓고 깊은걸',\n", + " '걱정 같은 건 던져 버려',\n", + " 'babe 하룻밤 만에 식는 그런',\n", + " '사랑이 아냐 이건',\n", + " 'mary j 처럼 real love',\n", + " 'feel this luv',\n", + " '할 말은 더 많지만 잠시',\n", + " 'yeah 이제 우리가 움직일 차례지',\n", + " 'movin like hip hop kissin like rnb',\n", + " '보여줘 babe',\n", + " '니가 날 얼마나 원하는지',\n", + " \"girl girl baby don't leave tonight\",\n", + " 'i know you heard heard',\n", + " 'me stay with me tonight yeah',\n", + " \"girl girl baby don't leave tonight\",\n", + " 'i know you heard heard',\n", + " 'me stay with me tonight yeah',\n", + " 'girl girl girl girl baby',\n", + " 'girl girl girl girl bbaby',\n", + " 'girl girl girl girl baby',\n", + " 'girl girl girl girl baby',\n", + " '아직 가지마요',\n", + " 'stay with me tonight girl',\n", + " '조금만 더 있어줘',\n", + " 'never have a gonna miss you',\n", + " 'ma baby girl',\n", + " '내 곁으로 와',\n", + " 'just hold me down',\n", + " 'hold me down',\n", + " '아직 가지마요',\n", + " 'stay with me tonight girl',\n", + " '조금만 더 있어줘',\n", + " 'never have a gonna miss you',\n", + " 'ma baby girl',\n", + " '내 곁으로 와',\n", + " 'just hold me down',\n", + " 'i want you want you want you',\n", + " 'i want you want you want you',\n", + " 'i want you want you want you',\n", + " 'i want you want you want you',\n", + " 'got 20 plus models on and bitches mad',\n", + " 'well bitch you crazy, 걔넨 나한테 관심없어',\n", + " '예쁜 미소로 너를 반길 땐 only 탑승 전과 짐을 나를 때',\n", + " '아님 dishing out on 장거리 비행',\n", + " 'fake oxygen은 pumped, 옆자리 bitch bunch a cunts',\n", + " '중간에 껴서 창가 앉은 박아 새끼 내 팔걸이 거는 꼴이',\n", + " '아님 these babies fucking mad, 아님 옆자리 코골 때',\n", + " '아님 복도자리를 탐한 아주머니와 자리 바꿔드릴 때',\n", + " 'from fucking shanghai to melbourne to tennessee chattanooga',\n", + " 'i fucks with my city, my home town, my 송파, let’s get it, uh',\n", + " \"when i'm on that thang\",\n", + " \"i don't even think fucking i just want to land\",\n", + " '제발 같은 시차, 제발 같은 집에서',\n", + " '일어나서 일하러 가고 싶어',\n", + " \"fuck you know man, i don't like no changes\",\n", + " \"i don't need no class, wanna buy no more tickets\",\n", + " 'uh, flying 해외는 되도록 피해',\n", + " 'travel domestic them tickets you keep it',\n", + " '버스 아님 자가용 bitches i pick up',\n", + " \"and bitch they hate me and bitch they bitchin'\",\n", + " \"and chasing their dollars and bitch i ain't paying though\",\n", + " \"pay your shit i ain't eating that\",\n", + " '약빨 듣지도 않아 이 귀 밑엔, uh',\n", + " 'chicken or beef 난 안 먹어',\n", + " '승무원 좋지, 다들 tight한 skirt에',\n", + " '승무원 좋지, 다들 nice한 body',\n", + " '승무원 좋지, 다들 상냥한 게',\n", + " '내 꿈에 그리던 올백 머리 too',\n", + " '풍부해 보여 그녀들의 머리 숱',\n", + " \"when i'm on that thang\",\n", + " \"i don't even think fucking i just want to land\",\n", + " '제발 같은 시차, 제발 같은 집',\n", + " '제발 같은 시차, 집-',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'we go crazy like we just pop some molly',\n", + " '느낌이 아주 좋아, 대충 오지 감이',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'we go crazy like we just pop some molly',\n", + " '느낌이 아주 좋아, 대충 오지 감이',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'yelows mob, yeah, we the crew',\n", + " '얽매이지 않는 댔잖아, we fuck the rules',\n", + " '우린 잘하고 있어, fly like a bird',\n", + " '이미 다 알고있어 like we don’t need to learn anymore',\n", + " 'groovyroom track에 메세지를 보내',\n", + " '병신새끼들, 나가서 바람이나 좀 쐐',\n", + " '우리는 하고싶은 대로 다 하고',\n", + " '전부 다 가져갈 꺼야',\n", + " '우린 음악으로 보여줄 꺼라서',\n", + " '노래 만들고 또 작업하러 가',\n", + " 'we be yelows mobbin',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'we go crazy like we just pop some molly',\n", + " '느낌이 아주 좋아, 대충 오지 감이',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'we go crazy like we just pop some molly',\n", + " '느낌이 아주 좋아, 대충 오지 감이',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'yelows mob, yeah, we the fam',\n", + " '정성민, 정광민, 백재훈',\n", + " '이광민은 좀 위험해',\n", + " 'cause all they do is killing fashion',\n", + " '간지를 챙겨, 2009 jiggy fellaz',\n", + " '우린 너희랑 어울리는 일',\n", + " '자체를 못한다고 시시해서',\n", + " 'and we gotta keep it lowkey',\n", + " 'we be plottin and mobbin on the low',\n", + " 'even tho you trynna kill the music and the fashion',\n", + " '우리보다 어차피 멋없어',\n", + " '나는 기다리고 있지',\n", + " '우리들이 얻을 호화로운 것들',\n", + " '그리고 나는 기다리고 있지',\n", + " 'herr nayne이 한국에 돌아오는 거',\n", + " 'we be yelows mobbin',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'we go crazy like we just pop some molly',\n", + " '느낌이 아주 좋아, 대충 오지 감이',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'we go crazy like we just pop some molly',\n", + " '느낌이 아주 좋아, 대충 오지 감이',\n", + " 'now i’m with my homies we be yelows mobbin',\n", + " 'yeah',\n", + " 'yelows mobbin',\n", + " 'yelows mobbin',\n", + " 'yelows mobbin',\n", + " 'it’s a groovyroom track',\n", + " '11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " '11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " \"the world is ours, gettin' money and the power\",\n", + " 'turn down for nothing, a team of the hour',\n", + " '시간은 11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " \"sample clear는 다 됐고, i'm back in my studio\",\n", + " '다행히 pay는 아직도 예전 그대로네',\n", + " '역시 fan들 밖에 없다네, so fuck the haters out there',\n", + " '내가 싫다면 어서 나가, 여서 너가 건질 건 오직 질투 밖에',\n", + " \"i'm on another level, 여긴 딴 세상 같애 (woah)\",\n", + " \"내가 내뱉는 rap으로 i'm makin' big money, 내 계좌 안엔 (woah)\",\n", + " '늘 내 예상보다 더 많은 액수가 있어',\n", + " '난 매일 새 옷의 택을 뗄 수도 있어',\n", + " \"but i'm so ambitious, 매순간 있어 난 작업실에 (woah)\",\n", + " \"man, i don't give a shit about what you think, i like the life i live\",\n", + " 'no fake shit, 절대 하기 싫은 일 따윈 안 하지',\n", + " '또 내 철칙은 변치 않지 너와 달리',\n", + " '또 너흰 절대로 본 적 없지, 나 같은 놈을 봤니? (no!)',\n", + " \"i'm the fuckin' only one, and i don't pop molly, too\",\n", + " \"illionaire, we the fuckin' top threes\",\n", + " \"we on tour, what you waitin' for?\",\n", + " '수목금토일월화, 우리가 사는 방식',\n", + " \"swaggin' out for 24/7, 타협 같은 거 없이 we go straight\",\n", + " \"let's get it\",\n", + " '11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " '11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " \"the world is ours, gettin' money and the power\",\n", + " 'turn down for nothing, a team of the hour',\n", + " '시간은 11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " '1 for the money',\n", + " '2 for the bitches, 3 for the rolexes, 난 전부 다 원해',\n", + " '이미 다 있지 but 그보다 훨씬 더 많은 걸 원해',\n", + " '이제 내가 뭘 할지 너는 조금도 감 잡을 수 없어',\n", + " '그게 뭐든 간에, 알잖아, q에게 불가능은 없네',\n", + " '그건 하나의 견해',\n", + " '수십년 묵은 생각들은 변해',\n", + " '반대자들은 과민하게 행동해도 마음 한 켠에선 날 동경해',\n", + " 'hustle and hustle and hustle and grind',\n", + " 'rehearsal은 없어 임마, 현실을 봐',\n", + " '가끔씩 가사에 헛소릴 썼어도 잘 살고 있어, 내 현실을 봐',\n", + " 'fuck, maintain and shit',\n", + " \"this ballin' is real, ain't hashtag and shit\",\n", + " '이건 우리가 만든 인생이지, 니가 느끼는 건 시샘이지',\n", + " '괜찮아, 그건 자연스런 reaction, 니 걸 찾아 질투 시기 대신',\n", + " 'what the fuck is going on right now?',\n", + " \"countin' my 신사임당, 그녀는 나의 조상, now\",\n", + " 'a muhfucker came from the gutter',\n", + " \"더 큰 돈을 벌어, bish, shut up, i'm a don, now\",\n", + " '시간은 11시 11분, 발걸음을 무대에 올리지, illionaire time, now',\n", + " '11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " '11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " \"the world is ours, gettin' money and the power\",\n", + " 'turn down for nothing, a team of the hour',\n", + " '시간은 11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " '니가 쉽게 얻은 자린 누구든 쉽게 앉지',\n", + " '쉽게 등을 돌릴 너의 잘난 fan도',\n", + " '밑바닥에서 이뤄온 내 자리는 누구에게도 안 뺏겨',\n", + " \"real rap money, yain't know\",\n", + " '난 내일도 모레도 1분 1초가 멀다하게 위로 가, 제일로',\n", + " '굳이 설치지 않아도 알아줘, 알아서 그려진 머리 위 halo',\n", + " 'hello, wassup, what it do, aloha',\n", + " '난 너와 친군 안 해, 다 시간 낭비, 난 말 안 놓아',\n", + " '돈은 벌고 쓰고 쓴 돈보다 더 벌지, 너나 잘 모아',\n", + " '아직 뭐 젊은데 뭘 걱정하니, 맘 놓아',\n", + " \"let's get it then, 내 바람들은 스쳐가지 않고 현실이 돼\",\n", + " \"illionaire, million here, we be killin' em there\",\n", + " 'come fuck with me, yeah, hah',\n", + " 'worldwide stunna, 전 세계에서 내게 전활 걸어',\n", + " '늘 돈 잘 벌어, 매일 건방 떨어, 난 자신해 확실한 것만 열어',\n", + " '여러 rapper들 다 데려와서 물어',\n", + " 'rap 하나로 꿈을 이룬 그 사람이 누구?',\n", + " '부정할 수 없는 사실, 부러우면 꿇어',\n", + " '나는 불어, 줄어들지 않아, 매순간 또 늘어, get rich',\n", + " 'okay now, fuck with me, you know i got it',\n", + " \"if it ain't about money, bitch, 닥쳐 아가리\",\n", + " '11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " '11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " \"the world is ours, gettin' money and the power\",\n", + " 'turn down for nothing, a team of the hour',\n", + " '시간은 11시 11분',\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em\",\n", + " \"we don't move the crowd, we kill 'em, uh\",\n", + " 'my 2 chainz and rollies',\n", + " '2 chainz and rollies',\n", + " '2 chainz and rollies',\n", + " '2 chainz and rollies',\n", + " \"2 chainz and hol' up\",\n", + " \"rap star, flashlights, gettin' my cash right\",\n", + " 'i rap nice, her ass nice, my day date rolex nice',\n", + " 'all i got is 1 mic and 2 chainz and 3 chicks',\n", + " '1 rollie, 2 door mercedes, 300 kicks',\n", + " '그 누가 뭐래도 난 the best of the decade',\n", + " '몇 번의 성공, but still tryna get paid',\n", + " \"naysayers and playa haters can't tell me nothin'\",\n", + " '날 쬐끔도 따라 올 수 없지 너흰',\n", + " \"we illionaire, we doin' big. yeah, true indeed, 네겐 꿈이지\",\n", + " '사람들은 다들 우리 집이 원래 부자인 줄 알고 있지',\n", + " \"but my life's slumdawg illionaire movie shit\",\n", + " '그래, 지금은 vegas에서 다음 편을 찍고 있지',\n", + " '니 차보다 비싼 시계를 차고 있어 난',\n", + " '그게 뭐든 간에, hyundai, kia or nissan',\n", + " \"this fuckin' beat produced by q and prima vista\",\n", + " 'fuck these broke ass motherfuckers. peace out',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " \"2 chainz and a motherfuckin' rollie\",\n", + " '18k white gold full diamonds blue sapphire bustdown rollie',\n", + " '난 좋은 직장, 좋은 집, 차 가진 남자 one and only',\n", + " '니가 쉴 때 난 빡세게 일해 배로 벌어, 니가 뛸 때 난 놀지',\n", + " \"y'all be fallin' while i'm ballin'. shoppin' spree in vegas mallin'\",\n", + " '논리는 없지만 늘 완벽해, play the beat, 반복해',\n", + " 'illionaire, 이곳에선 제일 잘 나가, 탈옥해',\n", + " \"가격표, 가격대? 2ne1, i don't care\",\n", + " 'bada boom bada bang, 두 손 들어 내게 항복해',\n", + " 'i gotta spend my mula crazy, 돈뭉치를 날리지',\n", + " \"인천에서부터 world wide, get my fuckin' airline mileage\",\n", + " \"my street knowledge over 니 명문 fuckin' college\",\n", + " 'rap star, my life, two job으론 안 갈리지',\n", + " \"rolex, mo' sex, good life, no stress\",\n", + " \"don't test, go let's, dope, best, i'm so blessed\",\n", + " 'thank you',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " \"2 chainz and a motherfuckin' rollie\",\n", + " '애들이 그러는데 이 노래가 자랑이 너무 심하대',\n", + " '심한 정도가 아니지',\n", + " '미친 거 아니야?',\n", + " 'got my 2 chainz, no tity boi, illy boys get milly, boi',\n", + " \"늘 돈 되는 일이 모이는 길이 보여, let's get it, boi\",\n", + " '나를 향한 기립 박수, 진짜를 원하면 이리 와',\n", + " '우린 정말 질이 달라, 확실히 완전히 feel이 와, uh',\n", + " '재벌을 바라보는 부자, 넌 그지를 바라보는 loser',\n", + " '나를 따라 오는 여자 또 나를 따라하는 남자',\n", + " '니 질투와 시기는 좀 기집애 steelo',\n", + " '내 돈을 욕한 다음에 고민하지 진로',\n", + " '난 니가 평생 벌 돈을 미리 벌어',\n", + " '또 난 여전히 창창해, 갈 길이 멀어, uh',\n", + " 'okay, 성공은 내 mission, go harder, ambition',\n", + " 'sucker rapper들은 댐비지만 본전도 못 챙기지',\n", + " '너의 오래된 bad bitch는 내게 와서 앵기지',\n", + " '난 여자친구가 있어도 또 하나가 더 생기지',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and rollies, 2 chainz and rollies',\n", + " '2 chainz and a motherfuckin rollie',\n", + " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", + " \"i'm alive and doing what i love and plus i'm getting paid\",\n", + " \"push that peddle to the medel, we gon' never take a break\",\n", + " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", + " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", + " \"i'm alive and doing what i love and plus i'm getting paid\",\n", + " \"push that peddle to the medel, we gon' never take a break\",\n", + " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", + " \"i'm feeling good i'm feeling great\",\n", + " \"and ain't nobody, no hater gon' stop me not today\",\n", + " \"and i hope you understood what it is, i'm trying to say\",\n", + " \"if you ain't down to roll then get the fuck up out my way, uh\",\n", + " '나이를 먹다 보니까 돈도 좀 벌다보니까',\n", + " '가만 있는 시간이 아까워, 시계의 바늘은 계속 해 도니까',\n", + " \"밝은 날 꼭 오니까 i'ma work hard and believe in god\",\n", + " '환경탓 해봤자 넌 좆도 없지, 매일 먹고만 노니까',\n", + " 'look at my chain and look at my gold ring',\n", + " \"it's eighteen kerot gold, the proof that i do my thing\",\n", + " '내 반지를 고를 때 느낌 말로 표현 못해',\n", + " '지금 내가 부러워? 그럼 너도 노력해',\n", + " 'and we did it, 해냈네, 같이 성공을 기념해',\n", + " 'for my my fans and for friends, 난 힘들던 시절을 기억해',\n", + " '힘들어도 또 이겨네, 너도 반드시 이뤄내',\n", + " \"put your hands in the air 'cause you know we celebrate\",\n", + " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", + " \"i'm alive and doing what i love and plus i'm getting paid\",\n", + " \"push that peddle to the medel, we gon' never take a break\",\n", + " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", + " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", + " \"i'm alive and doing what i love and plus i'm getting paid\",\n", + " \"push that peddle to the medel, we gon' never take a break\",\n", + " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", + " 'celebrate, celebrate, 힘겨웠던 yesterday',\n", + " '때로는 걱정이 앞섰지만 헤쳐나왔고 해냈네',\n", + " 'better days, better days, 어떻게 될까 내년엔',\n", + " '자꾸만 나아지는 게 느껴져, 마음가짐을 더 새롭게',\n", + " '외제차는 아니지만 새 차를 장만해서 기뻐',\n", + " '물질이 전부는 아니지만 내가 가진 걸 누리고싶어',\n", + " '하고싶은 일을 한다는 게 얼마나 기쁜 일인지 알아?',\n", + " '하나둘씩 이뤄간다는 게 말처럼 쉬운 일은 결코 아냐',\n", + " '서른이 넘어도 rap을 해, 어린애 장난이 아닌데',\n", + " '자꾸만 tv에서 이상한 짓 하니까 모르는 사람들 헷갈리네',\n", + " '좋은 대학 나온 것도 아니고 미남이라 불리는 편도 아니지',\n", + " '그런데도 사람들이 반기고 내 음악을 귀에 달고 다니지',\n", + " '내 가치가 올라갔어, fan들과 하나님께 감사',\n", + " '이런 내가 자랑스럽다면 번쩍 들어봐 hi-lite sign',\n", + " '살아갈 자신없다면 내가 커가는 걸 보면서 기운내',\n", + " 'celebrate, celebrate, 우리 분위기는 완전 축제',\n", + " 'you know i do what i love and get money',\n", + " \"ball honey g's got big money\",\n", + " '내 rap 안의 얘깃거리',\n", + " '나 같이 하면 아퍼 니 머리',\n", + " '까맣기만 하던 내 가슴이',\n", + " '끄는 대로 더 줘 차가울 뿐이지',\n", + " '난 내가 뭘 하고 있는지를 알어',\n", + " '니 자신도 모르는 넌 뒤나 따라오다',\n", + " '넘어지는 situation get em',\n", + " 'rapper들의 situa-style',\n", + " '많아, 내 성공이나 바라보다 늙지',\n", + " '내 미래의 시간은 늘 바다보다 넓지',\n", + " '날 알아보는 멋진 illionaire gang',\n", + " '그건 바로 equal illionaire fans',\n", + " '주말마다 무대 위는 매일이요',\n", + " \"stumble the ladies' heart\",\n", + " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", + " \"i'm alive and doing what i love and plus i'm getting paid\",\n", + " \"push that peddle to the medel, we gon' never take a break\",\n", + " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", + " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", + " \"i'm alive and doing what i love and plus i'm getting paid\",\n", + " \"push that peddle to the medel, we gon' never take a break\",\n", + " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", + " 'let me inroduce loptimist',\n", + " \"i'm from the big deal dead'p\",\n", + " 'you know i mean',\n", + " 'yo, check it',\n", + " 'loptimist he was born in 1985',\n", + " 'he make flows goes to us cooly high',\n", + " 'for you better check this line',\n", + " 'this one goes out to your mind',\n", + " 'yo check it',\n", + " 'i introduce him 이혁기, 하',\n", + " '스무살 약관의 나이로 자각',\n", + " '힙합 나이롱',\n", + " '환자들을 치료한다는 사명을 해답으로',\n", + " '드디어 첫번째 앨범을 들고 나왔어',\n", + " '그건 관심 집중된 상태에서 완성',\n", + " \"'undisputed', 말할 필요도 없지\",\n", + " '드디어 발매될 loptimist 22 channels',\n", + " \"yo fuckin fake mc's and your fan\",\n", + " 'your fan and your money shit',\n", + " '다시 한번 우리가 싹쓸이해갈껄',\n", + " '병신, you better check it',\n", + " '모르겠어 난',\n", + " 'i can’t figure out',\n", + " '복잡한 내 맘',\n", + " '정리가 잘 안돼',\n", + " \"i'm waiting 'til i die\",\n", + " 'so i never have to be alone',\n", + " '내가 죽는다면',\n", + " '내 주머니 싹 다 비워줘',\n", + " '가진 것 하나 없지 i got nothing',\n", + " '뭐든 쌓아둘 걸 내 이름 앞에',\n", + " 'i’m too hard to love, and that’s my bad',\n", + " '떠나가도 돼 but please be right back',\n", + " 'fell in love',\n", + " 'you fell in love with me',\n", + " 'i don’t know what you see in me',\n", + " 'tripping up',\n", + " 'you telling me that i’m the one',\n", + " \"i’m 'bout to cut you like a bouncer\",\n", + " '내 앞에 있는다는 건 믿을 수가 없는 일',\n", + " '누가 봐도 네 손핸데 대체 왜 굳이',\n", + " 'i’ll probably cut you deep',\n", + " 'but love is still what you bleed',\n", + " '너에게 상처 남길 것만 같아 tattooist',\n", + " 'it hurts me when i see you smile',\n", + " '미소 짓지마',\n", + " '별로란 걸 알아 난',\n", + " 'i still wish that you were mine',\n", + " '이미 알고 있을까',\n", + " 'girl you’re wasting time',\n", + " '괜찮다 말하지만',\n", + " 'i wanna know why you',\n", + " 'like me',\n", + " 'like me',\n", + " 'like me',\n", + " '괜찮은 사람 많은데',\n", + " 'why me',\n", + " 'why me',\n", + " 'why me',\n", + " 'i wanna know why you',\n", + " 'like me',\n", + " 'like me',\n", + " 'like me',\n", + " '괜찮은 사람 많은데',\n", + " 'why me',\n", + " 'why me',\n", + " 'why me',\n", + " 'i wanna know',\n", + " 'patiently and instantly',\n", + " '뒤바뀐 삶에',\n", + " '한줄기 밝은 색의 원이 그림자를 채웠고',\n", + " '나를 둘러싸던 안개는 개였어',\n", + " '혼자였을 때의 발걸음은 계속 꼬여',\n", + " '내 기분은 rollercoaster',\n", + " 'up and down motions',\n", + " 'as you came to me a little closer',\n", + " '사소한 행복들이 조금 보여',\n", + " '아직 네가 보지 못한 좀 부족한 내 모습이',\n", + " '널 비워내고 밀어내',\n", + " 'that’s why i don’t want you calling me',\n", + " '그런 부분까지 좋다고 넌 말하지',\n", + " '의심이 워낙 많은 탓에 난 아직',\n", + " '이해 못 해 너란 멋진 사람이',\n", + " '착각한 건 아닌지',\n", + " 'confusing with another me',\n", + " 'it hurts me when i see you smile',\n", + " '미소 짓지마',\n", + " '별로란 걸 알아 난',\n", + " 'i still wish that you were mine',\n", + " '이미 알고 있을까',\n", + " 'girl you’re wasting time',\n", + " '괜찮다 말하지만',\n", + " 'i wanna know why you',\n", + " 'like me',\n", + " 'like me',\n", + " 'like me',\n", + " '괜찮은 사람 많은데',\n", + " 'why me',\n", + " 'why me',\n", + " ...]}}},\n", + " 'la': {'sentence': {'non-music': {'meta': {'train_data': ['latina',\n", + " 'ego sum abbas cucaniensis,',\n", + " 'et consilium meum est cum bibulis,',\n", + " 'et in secta decii voluntas mea est,',\n", + " 'et qui mane me quesierit in taberna,',\n", + " 'post vesperam nudus egredietur,',\n", + " 'et sic denudatus veste clamabit:',\n", + " 'wafna! wafna',\n", + " 'quid fecisti sors turpissima?',\n", + " 'nostre vite gaudia',\n", + " 'abstulisti omnia!',\n", + " 'haha!',\n", + " 'english',\n", + " 'i am the abbot of cockaigne',\n", + " 'and my assembly is one of drinkers,',\n", + " 'and i wish to be in the order of decius.',\n", + " 'and whoever searches me out at the tavern in the morning,',\n", + " 'after vespers he will leave naked,',\n", + " 'and thus stripped of his clothes he will call out:',\n", + " 'woe! woe!',\n", + " 'what have you done, vilest fate?',\n", + " 'the joys of my life',\n", + " 'you have taken all away!',\n", + " 'haha!',\n", + " 'abilify',\n", + " 'accuneb',\n", + " 'accupril',\n", + " 'aciphex',\n", + " 'actonel',\n", + " 'actos',\n", + " 'adderall',\n", + " 'advair diskus',\n", + " 'aldactone',\n", + " 'altace',\n", + " 'amaryl',\n", + " 'ambien',\n", + " 'amoxil',\n", + " 'apresoline',\n", + " 'aricept',\n", + " 'ativan',\n", + " 'augmentin',\n", + " 'avalide',\n", + " 'avapro',\n", + " 'avelox',\n", + " 'avodart',\n", + " 'bactrim ds/septra ds',\n", + " 'bactroban',\n", + " 'benicar hct',\n", + " 'bentyl',\n", + " 'biaxin',\n", + " 'boniva',\n", + " 'buspar',\n", + " 'cardura',\n", + " 'cartia xt',\n", + " 'catapres',\n", + " 'ceftin',\n", + " 'celebrex',\n", + " 'celexa',\n", + " 'chantix',\n", + " 'cheratussin ac',\n", + " 'cialis',\n", + " 'cipro',\n", + " 'cleocin',\n", + " 'cogentin',\n", + " 'colcrys',\n", + " 'combivent respimat',\n", + " 'concerta',\n", + " 'coreg',\n", + " 'coumadin/jantoven',\n", + " 'cozaar',\n", + " 'crestor',\n", + " 'cutivate',\n", + " 'cymbalta',\n", + " 'deltasone',\n", + " 'depakote',\n", + " 'desyrel',\n", + " 'detrol',\n", + " 'diabeta',\n", + " 'diflucan',\n", + " 'dilantin',\n", + " 'diovan',\n", + " 'diovan hct',\n", + " 'ditropan xl',\n", + " 'doryx',\n", + " 'duragesic',\n", + " 'dyazide',\n", + " 'effexor xr',\n", + " 'elavil',\n", + " 'evista',\n", + " 'fioricet',\n", + " 'flagyl',\n", + " 'flexeril',\n", + " 'flomax',\n", + " 'flonase',\n", + " 'flovent diskus',\n", + " 'flovent hfa',\n", + " 'folvite',\n", + " 'fosamax',\n", + " 'glucophage',\n", + " 'glucotrol',\n", + " 'humalog',\n", + " 'hytrin',\n", + " 'imdur',\n", + " 'imitrex',\n", + " 'inderal',\n", + " 'januvia',\n", + " 'k-dur',\n", + " 'keflex',\n", + " 'kenalog',\n", + " 'keppra',\n", + " 'klonopin',\n", + " 'lamictal',\n", + " 'lanoxin',\n", + " 'lantus',\n", + " 'lasix',\n", + " 'levaquin',\n", + " 'levitra',\n", + " 'levothroid/levoxyl/synthroid',\n", + " 'lexapro',\n", + " 'lidoderm',\n", + " 'lioresal',\n", + " 'lipitor',\n", + " 'loestrin 24 fe',\n", + " 'lopid',\n", + " 'lopressor',\n", + " 'lortab',\n", + " 'lotensin',\n", + " 'lovaza',\n", + " 'lunesta',\n", + " 'lyrica',\n", + " 'macrodantin',\n", + " 'maxzide',\n", + " 'medrol',\n", + " 'methadose',\n", + " 'mevacor',\n", + " 'microzide',\n", + " 'minocin',\n", + " 'mobic',\n", + " 'motrin',\n", + " 'namenda',\n", + " 'nasacort',\n", + " 'nasonex',\n", + " 'neurontin',\n", + " 'nexium',\n", + " 'niaspan',\n", + " 'nitrostat',\n", + " 'norvasc',\n", + " 'novolog',\n", + " 'omnicef',\n", + " 'ortho tri cyclen',\n", + " 'oxycontin',\n", + " 'pamelor',\n", + " 'paxil',\n", + " 'pen-vk',\n", + " 'percocet/roxicet',\n", + " 'peridex',\n", + " 'phenergan',\n", + " 'plaquenil',\n", + " 'plavix',\n", + " 'pravachol',\n", + " 'premarin',\n", + " 'prevacid',\n", + " 'prilosec',\n", + " 'prinivil/zestril',\n", + " 'proair hfa/ventolin hfa',\n", + " 'proscar',\n", + " 'protonix',\n", + " 'prozac',\n", + " 'reglan',\n", + " 'relafen',\n", + " 'remeron',\n", + " 'requip',\n", + " 'restoril',\n", + " 'rheumatrex',\n", + " 'risperdal',\n", + " 'robaxin',\n", + " 'rocaltrol',\n", + " 'roxicodone',\n", + " 'sarafem',\n", + " 'seroquel',\n", + " 'singulair',\n", + " 'soma',\n", + " 'spriva handihaler',\n", + " 'strattera',\n", + " 'suboxone',\n", + " 'tamiflu',\n", + " 'tenormin',\n", + " 'topamax',\n", + " 'toprol xl',\n", + " 'tricor',\n", + " 'tricor',\n", + " 'tylenol #3',\n", + " 'ultram',\n", + " 'valium',\n", + " 'valtrex',\n", + " 'vasotec',\n", + " 'verelan',\n", + " 'viagra',\n", + " 'vibramycin',\n", + " 'vicodin/norco',\n", + " 'vigamox',\n", + " 'vistaril',\n", + " 'voltaren',\n", + " 'vytorin',\n", + " 'vyvanse',\n", + " 'wellbutrin xl',\n", + " 'xalatan',\n", + " 'xanax',\n", + " 'yasmin/ocella',\n", + " 'yaz',\n", + " 'zanaflex',\n", + " 'zebeta',\n", + " 'zestoretic',\n", + " 'zetia',\n", + " 'zithromax',\n", + " 'zocor',\n", + " 'zofran',\n", + " 'zoloft',\n", + " 'zovirax',\n", + " 'zyloprim',\n", + " 'zyprexa',\n", + " '(screams)',\n", + " 'bash my intestines up my anus',\n", + " '(screams)',\n", + " 'diarrhoea on my penis',\n", + " '(screams)',\n", + " 'diarrhoea',\n", + " '(screams)',\n", + " 'passage',\n", + " 'diarrhoea on my penis',\n", + " '(screams)',\n", + " 'penis',\n", + " '(screams)',\n", + " 'latin',\n", + " 'english',\n", + " 'loquebantur variis linguis apostoli, alleluia,',\n", + " 'the apostles spoke in different tongues,',\n", + " 'magnalia dei, alleluia',\n", + " 'of the great works of god,',\n", + " 'repleti sunt omnes spiritu sancto,',\n", + " 'they were all filled with the holy spirit',\n", + " 'et ceperunt loqui variis linguis',\n", + " 'and began to speak in different tongues',\n", + " 'magnalia dei, alleluia',\n", + " 'of the great works of god,',\n", + " 'gloria patri et filio et spiritui sancto, alleluia',\n", + " 'glory be to the father and to the son and to the holy spirit,',\n", + " 'aynun marekegn sil, kenferu gelognal',\n", + " 'demo kemotkubet, fiqir yasnesagnal',\n", + " 'dear my love yilegnal, keziyam yenei fiqir',\n", + " 'sintun quanqua chiye, kesu lenegagir',\n", + " 'guramayle liju, guramayle quanquaw (2x)',\n", + " 'gunifein awuliqei, lebeskugn yibola',\n", + " 'guramayle liju, guramayle quanquaw (2x)',\n", + " 'gunifein awuliqei, lebeskugn yibola',\n", + " 'yeteqebaw shito, yegelaw terenn',\n", + " 'b’lugn, b’lugn yilal, yeqerebut endehonn',\n", + " 'kekenfer ketirsu, kaynu fiqir yizogn',\n", + " 'iwozawozalehu, ere man yastilegn',\n", + " 'guramayle liju, guramayle quanquaw (2x)',\n", + " 'emebeitei mariam, argeelign yegilei',\n", + " 'guramayle liju, guramayle quanquaw (2x)',\n", + " 'gunifein awuliqei, lebeskugn yibola',\n", + " 'ahkal sewunetu, inde’hitsan lijj',\n", + " 'abeit meleslesu, abeit siyasgomedj',\n", + " 'yenei egir endante, min aleseleseuw',\n", + " 'kenei beit, ante beit, yete’melaleseuw',\n", + " 'guramayle liju, guramayle quanquaw (2x)',\n", + " 'gunifein awuliqei, lebeskugn yibola',\n", + " 'guramayle liju, guramayle quanquaw',\n", + " 'guramayle libsu, guramayle quanquaw',\n", + " 'emebeitei mariam, argeelign yegilei',\n", + " 'beferensayochu quanqua, be’inglizegna beenager',\n", + " 'betalianegna beegetim, be’germenigna beefokir',\n", + " 'kaffu mar yifesal liju, lezza aleuw ahndebetu',\n", + " 'esti yichawot,yifendiq, kalesu aydemqim beitu',\n", + " 'chewatah yinafiqegnal, yarada lij qonjo seuw',\n", + " 'beleselesu ejochih, nah gebahin debabseuw?',\n", + " 'guramayle, guramayle, guramayle, guramayle',\n", + " 'guramayle, guramayle, guramayle, guramayle',\n", + " 'gura’maylee, gura’mayle, gura’mayle',\n", + " 'track list',\n", + " '1- pir shodim vali bozorg na',\n", + " '2- dorian gray (skit)',\n", + " '3- golosangam (ft. behzad leito)',\n", + " '4- pesare bad (ft. sohrab mj & cornellaa)',\n", + " '5- sobe sobe (ft. cornellaa)',\n", + " '6- har chi bade (ft. cornellaa)',\n", + " '7- +3:30 (tehran maserati) (ft. behzad leito)',\n", + " '8- mehmooni khodemoone (ft. erfan, sina mafee, sepehr khalse, behzad leito, paya, & magico)',\n", + " '9- woody allen (skit)',\n", + " '10- eyval eyval',\n", + " '11- jozvi az man',\n", + " 'album cover',\n", + " 'by momet shabani',\n", + " 'click cover for annotation',\n", + " 'album teaser',\n", + " 'youtube link',\n", + " 'phoenix suns 2016-17 roster',\n", + " '#0 marquese chriss',\n", + " '#1 devin booker',\n", + " '#2 eric bledsoe',\n", + " '#3 jared dudley',\n", + " '#4 tyson chandler',\n", + " '#8 tyler ulis',\n", + " '#10 derrick jones',\n", + " '#11 brandon knight',\n", + " '#12 t.j. warren',\n", + " '#14 ronnie price',\n", + " '#15 alan williams',\n", + " '#19 leandro barbosa',\n", + " '#21 alex len',\n", + " '#35 dragan bender',\n", + " 'phoenix suns 2016-17 jerseys',\n", + " 'home',\n", + " 'away',\n", + " 'alternates',\n", + " 'pride',\n", + " 'players traded',\n", + " 'in',\n", + " 'marquese chriss',\n", + " 'mike scott',\n", + " 'jared sullinger',\n", + " 'cenk akyol',\n", + " 'out',\n", + " 'skal labissière',\n", + " 'georgios papagiannis',\n", + " 'bogdan bogdanović',\n", + " 'p.j. tucker',\n", + " 'intestinal infectious diseases (001–009)(001) cholera',\n", + " '(002) typhoid and paratyphoid fevers',\n", + " '(003) other salmonella infections',\n", + " '(003.0) salmonella gastroenteritis',\n", + " '(004) shigellosis',\n", + " '(004.9) shigellosis, unspec.',\n", + " '(005) other poisoning (bacterial)',\n", + " '(005.0) staphylococcal food poisoning',\n", + " '(006) amoebiasis',\n", + " '(006.0) acute amoebic dysentery without mention of abscess',\n", + " '(006.1) chronic intestinal amoebiasis without mention of abscess',\n", + " '(006.2) amoebic nondysenteric colitis',\n", + " '(006.3) amoebic liver abscess',\n", + " '(006.4) amoebic lung abscess',\n", + " '(006.5) amoebic brain abscess',\n", + " '(006.6) amoebic skin ulceration',\n", + " '(006.8) amoebic infection of other sites',\n", + " '(006.9) amoebiasis, unspecified',\n", + " '(007) other protozoal intestinal diseases',\n", + " '(007.0) balantidiasis',\n", + " '(007.1) giardiasis',\n", + " '(007.2) coccidiosis',\n", + " '(007.3) intestinal trichomoniasis',\n", + " '(007.4) cryptosporidiosis',\n", + " '(007.5) cyclosporiasis',\n", + " '(007.9) unspecified protozoal intestinal disease',\n", + " '(008) intestinal infections due to other organisms',\n", + " '(008.61) enteritis due to rotavirus',\n", + " '(008.69) enteritis due to other viral enteritis',\n", + " '(008.8) intestinal infection due to other organism not elsewhere classified',\n", + " '(009) ill-defined intestinal infections',\n", + " '(009.1) colitis enteritis and gastroenteritis of presumed infectious origin',\n", + " 'tuberculosis (010–018)(010) primary tuberculous infection',\n", + " '(010.0) primary tuberculous infection',\n", + " '(010.1) tuberculous pleurisy in primary progressive tuberculosis',\n", + " '(010.8) other primary progressive tuberculosis',\n", + " '(010.9) primary tuberculous infection, unspecifed',\n", + " '(011) pulmonary tuberculosis',\n", + " '(011.0)',\n", + " '(011.1)',\n", + " '(011.2)',\n", + " '(011.3)',\n", + " '(011.4)',\n", + " '(011.5)',\n", + " '(011.6)',\n", + " '-any form',\n", + " '(011.7)',\n", + " '(011.8)',\n", + " '(011.9)',\n", + " '-respiratory tuberculosis',\n", + " '-tuberculosis of lung',\n", + " '(011.9)',\n", + " 'respiratory tuberculosis',\n", + " 'tuberculosis of lung',\n", + " '(012) other respiratory tuberculosis',\n", + " '(013) tuberculosis of meninges and central nervous system',\n", + " '(014) tuberculosis of intestines, peritoneum, and mesenteric glands',\n", + " '(015) tuberculosis of bones and joints',\n", + " '(015.0) tuberculosis of vertebral column',\n", + " \"-pott's disease\",\n", + " '(016) tuberculosis of genitourinary system',\n", + " '(017) tuberculosis of other organs',\n", + " '(017.1) erythema nodosum with hypersensitivity reaction in tuberculosis',\n", + " '-bazin disease',\n", + " '(017.2) tuberculosis of peripheral lymph nodes',\n", + " '-scrofula',\n", + " '(018) miliary tuberculosis',\n", + " 'zoonotic bacterial diseases (020–027)(020) plague',\n", + " '(020.0) bubonic plague',\n", + " '(021) tularemia',\n", + " '(022) anthrax',\n", + " '(023) brucellosis',\n", + " '(024) glanders',\n", + " '(025) melioidosis',\n", + " '(026) rat-bite fever',\n", + " '(027) other zoonotic bacterial diseases',\n", + " '(027.0) listeriosis',\n", + " '(027.1) erysipelothrix infection',\n", + " '(027.2) pasteurellosis',\n", + " 'other bacterial diseases (030–041)(030) leprosy',\n", + " '(031) diseases due to other mycobacteria',\n", + " '(032) diphtheria',\n", + " '(033) whooping cough',\n", + " '(034) streptococcal sore throat and scarlatina',\n", + " '(034.0) strep throat',\n", + " '(034.1) scarlet fever',\n", + " '(035) erysipelas',\n", + " '(036) meningococcal meningitis',\n", + " '(037) tetanus',\n", + " '(038) septicaemia',\n", + " '(038.2) pneumococcal septicemia',\n", + " '(038.4) septicemia, gram-negative, unspec.',\n", + " '(038.9) septicemia, nos',\n", + " '(039) actinomycotic infections',\n", + " '(040) other bacterial diseases',\n", + " '(041) bacterial infection in conditions classified elsewhere',\n", + " 'human immunodeficiency virus (hiv) infection (042–044)(042) human immunodeficiency virus infection with specified conditions',\n", + " '(043) human immunodeficiency virus infection causing other specified',\n", + " '(044) other human immunodeficiency virus infection',\n", + " 'poliomyelitis and other non-arthropod-borne viral diseases of central nervous system (045–049)(045) acute poliomyelitis',\n", + " '(046) slow virus infection of central nervous system',\n", + " '(046.0) kuru',\n", + " '(046.1) creutzfeld-jakob disease',\n", + " '(047) meningitis due to enterovirus',\n", + " '(048) other enterovirus diseases of central nervous system',\n", + " '(049) other non-arthropod-borne viral diseases of central nervous system',\n", + " 'viral diseases accompanied by exanthem (050–059)(050) smallpox',\n", + " '(050.0) variola major',\n", + " '(050.1) alastrim',\n", + " '(051) cowpox and paravaccinia',\n", + " '(051.0) cowpox',\n", + " '(051.1) pseudocowpox',\n", + " '(051.2) contagious pustular dermatitis',\n", + " '(052) chickenpox',\n", + " '(052.0) postvaricella encephalitis',\n", + " '(052.1) varicella (hemorrhagic) pneumonitis',\n", + " '(052.2) postvaricella myelitis',\n", + " '(052.7) chickenpox with other specified complications',\n", + " '(052.8) chickenpox with unspecified complication',\n", + " '(052.9) varicella without complication',\n", + " '(053) herpes zoster',\n", + " '(053.0) herpes zoster with meningitis',\n", + " '(053.1) herpes zoster with other nervous system complications',\n", + " '(053.10) herpes zoster with unspecified nervous system complication',\n", + " '(053.11) geniculate herpes zoster',\n", + " '(053.12) postherpetic trigeminal neuralgia',\n", + " '(053.13) postherpetic polyneuropathy',\n", + " '(053.14) herpes zoster myelitis',\n", + " '(053.2) herpes zoster with ophthalmic complications',\n", + " '(053.7) herpes zoster with other specified complications',\n", + " '(053.8) herpes zoster with unspecified complication',\n", + " '(053.9) herpes zoster without complication',\n", + " '(054) herpes simplex',\n", + " '(054.0) eczema herpeticum',\n", + " '(054.1) genital herpes',\n", + " '(054.2) herpetic gingivostomatitis',\n", + " '(054.3) herpetic meningoencephalitis',\n", + " '(054.4) herpes simplex with ophthalmic complications',\n", + " '(054.5) herpetic septicemia',\n", + " '(054.6) herpetic whitlow',\n", + " '(054.9) herpetic disease, uncomplicated',\n", + " '(055) measles',\n", + " '(056) rubella',\n", + " '(057) other viral exanthemata',\n", + " '(057.0) fifth disease',\n", + " '(057.9) exanthems, viral, unspec.',\n", + " '(058) other human herpesvirus',\n", + " '(058.1) roseola infantum',\n", + " '(058.2) other human herpesvirus encephalitis',\n", + " '(058.8) other human herpesvirus infections',\n", + " '(059) other poxvirus infections',\n", + " '(059.0) other orthopoxvirus infections',\n", + " '(059.01) monkeypox',\n", + " '(059.1) other parapoxvirus infections',\n", + " '(059.11) bovine stomatitis',\n", + " '(059.12) sealpox',\n", + " '(059.2) yatapoxvirus infections',\n", + " '(059.21) tanapox',\n", + " '(059.22) yaba monkey tumor virus',\n", + " '(059.8) other poxvirus infections',\n", + " '(059.9) poxvirus infections, unspecified',\n", + " 'arthropod-borne viral diseases (060–066)(060) yellow fever',\n", + " '(061) dengue fever',\n", + " '(062) mosquito-borne viral encephalitis',\n", + " '(062.9) encephalitis, mosquito, unspec.',\n", + " '(063) tick-borne viral encephalitis',\n", + " '(064) viral encephalitis transmitted by other and unspecified arthropods',\n", + " '(065) arthropod-borne hemorrhagic fever',\n", + " '(065.8) ebola, unspec.',\n", + " '(066) other arthropod-borne viral diseases',\n", + " '(066.4) west nile virus, unspec.',\n", + " 'other diseases due to viruses and chlamydiae (070–079)(070) viral hepatitis',\n", + " '(070.0) hepatitis a with hepatic coma',\n", + " '(070.0) hepatitis a with hepatic coma',\n", + " '(070.1) hepatitis a w/o coma',\n", + " '(070.2) hepatitis b with hepatic coma',\n", + " '(070.3) hepatitis b w/o coma, acute',\n", + " '(070.4) other specified viral hepatitis with mention of hepatic coma',\n", + " '(070.5) other specified viral hepatitis without mention of hepatic coma',\n", + " '(070.7) unspecified viral hepatitis c',\n", + " '(070.70) unspecified viral hepatitis c w/o hepatic coma',\n", + " '(070.71) unspecified viral hepatitis c with hepatic coma',\n", + " '(070.9) hepatitis, viral, nos',\n", + " '(071) rabies',\n", + " '(072) mumps',\n", + " '(072.9) mumps, uncomplicated',\n", + " '(073) ornithosis',\n", + " '(074) specific diseases due to coxsackie virus',\n", + " '(074.0) herpangina',\n", + " '(074.3) hand, foot, mouth disease',\n", + " '(075) mononucleosis',\n", + " '(076) trachoma',\n", + " '(077) other diseases of conjunctiva due to viruses and chlamydiae',\n", + " '(078) other diseases due to viruses and chlamydiae',\n", + " '(078.0) molluscum contagiosum',\n", + " '(078.1) warts, all sites',\n", + " '(078.11) condyloma acuminata',\n", + " '(078.2) sweating fever',\n", + " '(078.3) cat-scratch disease',\n", + " '(078.4) foot-and-mouth disease',\n", + " '(078.5) cmv disease',\n", + " '(079) viral infection in conditions classified elsewhere and of unspecified site',\n", + " '(079.3) rhinovirus',\n", + " '(079.4) hpv',\n", + " '(079.6) respiratory syncytial virus',\n", + " 'rickettsioses and other arthropod-borne diseases (080–088)(080) louse-borne (epidemic) typhus',\n", + " '(081) other typhus',\n", + " '(081.0) murine typhus (endemic typhus)',\n", + " \"(081.1) brill's disease\",\n", + " '(081.2) scrub typhus',\n", + " '(081.9) typhus unspecified',\n", + " '(082) tick-borne rickettsioses',\n", + " '(082.0) spotted fevers',\n", + " '(082.1) boutonneuse fever',\n", + " '(082.2) north asian tick fever',\n", + " '(082.3) queensland tick typhus',\n", + " '(082.4) ehrlichiosis',\n", + " '(082.40) unspecified ehrlichiosis',\n", + " '(082.41) ehrlichiosis chafeensis',\n", + " '(082.49) other ehrlichiosis',\n", + " '(082.8) other specified tick-borne rickettsioses',\n", + " '(082.9) tick-borne rickettsiosis unspecified',\n", + " '(083) other rickettsioses',\n", + " '(083.0) q fever',\n", + " '(083.1) trench fever',\n", + " '(083.2) rickettsialpox',\n", + " '(083.8) other specified rickettsioses',\n", + " '(083.9) rickettsiosis unspecified',\n", + " '(084) malaria',\n", + " '(085) leishmaniasis',\n", + " '(086) trypanosomiasis',\n", + " '(087) relapsing fever',\n", + " '(088) other arthropod-borne diseases',\n", + " '(088.8) other specified arthropod-borne diseases',\n", + " '(088.81) lyme disease',\n", + " '(088.82) babesiosis',\n", + " 'syphilis and other venereal diseases (090–099)(090) congenital syphilis',\n", + " '(091) early syphilis, symptomatic',\n", + " '(091.0) syphilis, primary, genital',\n", + " '(092) early syphilis, latent',\n", + " '(093) cardiovascular syphilis',\n", + " '(094) neurosyphilis',\n", + " '(095) other forms of late syphilis, with symptoms',\n", + " '(096) late syphilis, latent',\n", + " '(097) other and unspecified syphilis',\n", + " '(098) gonococcal infections',\n", + " '(098.0) gonorrhoea, acute, lower gu tract',\n", + " '(098.4) conjunctivitis, gonococcal',\n", + " '(098.8) gonococcal infection of other specified sites',\n", + " '(098.86) gonococcal peritonitis',\n", + " '(099) other venereal diseases',\n", + " '(099.0) chancroid',\n", + " '(099.1) lymphogranuloma venereum',\n", + " '(099.2) granuloma inguinale',\n", + " \"(099.3) reiter's disease\",\n", + " '(099.4) other nongonococcal urethritis',\n", + " '(099.5) other venereal diseases due to chlamydia trachomatis',\n", + " '(099.8) other specified venereal diseases',\n", + " '(099.9) venereal disease unspecified',\n", + " 'other spirochetal diseases (100–104)(100) leptospirosis',\n", + " \"(101) vincent's angina\",\n", + " '(102) yaws',\n", + " '(103) pinta',\n", + " '(104) other spirochaetal infection',\n", + " 'mycoses (110–118)(110) dermatophytosis',\n", + " '(110.0) dermatophytosis of scalp/beard',\n", + " '(110.1) onychomycosis',\n", + " '(110.2) dermatophytosis of hand',\n", + " '(110.3) tinea cruris',\n", + " '(110.4) tinea pedis',\n", + " '(110.9) tinea corporis, nos',\n", + " '(111) dermatomycosis, other and unspecified',\n", + " '(111.0) tinea versicolor',\n", + " '(111.9) dermatomycosis, unspec.',\n", + " '(112) candidiasis',\n", + " '(112.0) moniliasis, oral',\n", + " '(112.1) moniliasis, vulva/vagina',\n", + " '(112.2) monilial balanitis',\n", + " '(112.3) moniliasis, skin/nails',\n", + " '(114) coccidioidomycosis',\n", + " '(115) histoplasmosis',\n", + " '(115.0) histoplasma infection, unspec.',\n", + " '(116) blastomycotic infection',\n", + " '(117) other mycoses',\n", + " '(118) opportunistic mycoses',\n", + " 'helminthiases (120–129)(120) schistosomiasis (bilharziasis)',\n", + " '(121) other trematode infections',\n", + " '(122) echinococcosis',\n", + " '(123) other cestode infection',\n", + " '(124) trichinosis',\n", + " '(125) filarial infection and dracontiasis',\n", + " '(126) ancylostomiasis and necatoriasis',\n", + " '(127) other intestinal helminthiases',\n", + " '(127.0) ascariasis',\n", + " '(127.1) anisakiasis',\n", + " '(127.2) strongyloidiasis',\n", + " '(127.3) trichuriasis',\n", + " '(127.4) enterobiasis',\n", + " '(127.5) capillariasis',\n", + " '(127.6) trichostrongyliasis',\n", + " '(128) other and unspecified helminthiases',\n", + " '(129) intestinal parasitism, unspecified',\n", + " 'other infectious and parasitic diseases (130–136)(130) toxoplasmosis',\n", + " '(130.9) toxoplasmosis, unspec.',\n", + " '(131) trichomoniasis',\n", + " '(131.0) urogenital trichomoniasis',\n", + " '(131.01) trichomonal vaginitis',\n", + " '(131.02) trichomoniasis, urethritis',\n", + " '(132) pediculosis and phthirus infestation',\n", + " '(132.0) pediculosis, head lice',\n", + " '(132.1) pediculosis, body lice',\n", + " '(132.2) pediculosis, pubic lice',\n", + " '(132.9) pediculosis, unspec.',\n", + " '(133) acariasis',\n", + " '(133.0) scabies',\n", + " '(133.8) other acariasis',\n", + " '-chiggers',\n", + " '(133.9) acariasis unspecified',\n", + " '(134) other infestation',\n", + " '(134.0) myiasis',\n", + " '(134.1) other arthropod infestation',\n", + " '(134.2) hirudiniasis',\n", + " '(134.8) other specified infestations',\n", + " '(134.9) infestation unspecified',\n", + " '(135) sarcoidosis',\n", + " '(136) other and unspecified infectious and parasitic diseases',\n", + " '(136.0) ainhum',\n", + " \"(136.1) behcet's syndrome\",\n", + " '(136.3) pneumocystosis',\n", + " '(136.4) psorospermiasis',\n", + " '(136.5) sarcosporidiosis',\n", + " '(136.9) infectious/parasitic diseases, unspec.',\n", + " 'late effects of infectious and parasitic diseases (137–139)(137) tuberculosis, respiratory, late effects',\n", + " '(138) polio, late effects',\n", + " '(139) late effects of other infectious and parasitic diseases',\n", + " 'latina',\n", + " 'in trutina mentis dubia',\n", + " 'fluctuant contraria',\n", + " 'lascivus amor et pudicitia.',\n", + " 'sed eligo quod video,',\n", + " 'collum iugo prebeo;',\n", + " 'ad iugum tamen suave transeo.',\n", + " 'english',\n", + " 'in the wavering balance of my feelings',\n", + " 'set against each other',\n", + " 'lascivious love and modesty.',\n", + " 'but i choose what i see,',\n", + " 'and submit my neck to the yoke;',\n", + " 'i yield to the sweet yoke.',\n", + " 'latina',\n", + " 'veni, veni, venias,',\n", + " 'ne me mori facias,',\n", + " 'hyrca, hyrce, nazaza,',\n", + " 'trillirivos!',\n", + " 'pulchra tibi facies,',\n", + " 'oculorum acies,',\n", + " 'capillorum series,',\n", + " 'o quam clara species!',\n", + " 'rosa rubicundior,',\n", + " 'lilio candidior,',\n", + " 'omnibus formosior,',\n", + " 'semper in te glorior!',\n", + " 'english',\n", + " 'come, come, o come,',\n", + " 'do not let me die,',\n", + " 'hyrca, hyrce, nazaza,',\n", + " 'trillirivos!',\n", + " 'beautiful is your face,',\n", + " 'the gleam of your eye,',\n", + " 'your braided hair,',\n", + " 'what a glorious creature!',\n", + " 'redder than the rose,',\n", + " 'whiter than the lily,',\n", + " 'lovelier than all others,',\n", + " 'i shall always glory in you!',\n", + " 'chorus',\n", + " 'passio domini nostri jesu christi secundum joannem.',\n", + " 'the passion of our lord jesus christ according to st. john.',\n", + " 'evangelist',\n", + " 'haec cum dixisset jesus, egressus est cum discipulis suis trans torrentem cedron, ubi erat hortus, in quem introivit ipse, et discipuli ejus. sciebat autem et judas, qui tradebat eum, locum: quia frequenter jesus convenerat illuc cum discipulis suis. judas ergo cum accepisset cohortem, et a pontificibus et pharisaeis ministros, venit illuc cum laternis, et facibus, et armis. jesus itaque sciens omnia, quae ventura erant super eum processit, et dixit eis:',\n", + " 'when jesus had spoken these words, he went forth with his disciples over the brook cedron, where there was a garden, into which he entered with his disciples. and judas also, who betrayed him, knew the place: because jesus had often resorted thither together with his disciples. judas therefore having received a band of soldiers and servants from the chief priests and the pharisees, cometh thither with lanterns and torches and weapons. jesus therefore, knowing all things that should come upon him, went forth and said to them:',\n", + " 'jesus',\n", + " 'quem quaeritis?',\n", + " 'whom seek ye?',\n", + " 'evangelist',\n", + " 'responderunt ei:',\n", + " 'they answered him:',\n", + " 'chorus',\n", + " 'jesum nazarenum.',\n", + " 'jesus of nazareth.',\n", + " 'evangelist',\n", + " 'dicit eis jesus:',\n", + " 'jesus saith to them:',\n", + " 'jesus',\n", + " 'ego sum.',\n", + " 'i am he.',\n", + " 'evangelist',\n", + " 'stabat autem et judas, qui tradebat eum, cum ipsis. ut ergo dixit eis: ego sum, abierunt retrorsum, et ceciderunt in terram. iterum ergo interrogavit eos:',\n", + " 'and judas also, who betrayed him, stood with them. as soon therefore as he had said to them: i am he, they went backward and fell to the ground. again therefore he asked them:',\n", + " 'jesus',\n", + " 'quem quaeritis?',\n", + " 'whom seek ye?',\n", + " 'evangelist',\n", + " 'illi autem dixerunt:',\n", + " 'and they said:',\n", + " 'chorus',\n", + " 'jesum nazarenum.',\n", + " 'jesus of nazareth.',\n", + " 'evangelist',\n", + " 'respondit jesus:',\n", + " 'jesus answered:',\n", + " 'jesus',\n", + " 'dixi vobis, quia ego sum: si ergo me quaeritis, sinite hos abire.',\n", + " 'i have told you that i am he. if therefore you seek me, let these go their way;',\n", + " 'evangelist',\n", + " 'ut impleretur sermo, quem dixit: quia quos dedisti mihi, non perdidi ex eis quemquam. simon ergo petrus habens gladium eduxit eum: et percussit pontificis servum: et abscidit auriculam ejus dexteram. erat autem nomen servo malchus. dixit ergo jesus petro:',\n", + " 'that the word might be fulfilled which he said: of them whom thou hast given me, i have not lost anyone. then simon peter, having a sword, drew it and struck the servant of the high priest and cut off his right ear. and the name of the servant was malchus. jesus therefore said to peter:',\n", + " 'jesus',\n", + " 'mitte gladium in vaginam. calicem, quem dedit mihi pater, non bibam illum?',\n", + " 'put up thy sword in the scabbard. the chalice which my father hath given me, shall i not drink it?',\n", + " 'evangelist',\n", + " 'cohors ergo, et tribunus, et ministri judaeorum comprehenderunt jesum, et ligaverunt eum. et adduxerunt eum ad annam primum; erat enim socer caiphae, qui erat pontifex anni illius. erat autem caiphas, qui consilium dederat judaeis: quia expedit unum hominem mori pro populo. sequebatur autem jesum simon petrus, et alius discipulus. discipulus autem ille erat notus pontifici, et introivit cum jesu in atrium pontificis. petrus autem stabat ad ostium foris. exivit ergo discipulus alius, qui erat notus pontifici, et dixit ostiariae: et introduxit petrum. dicit ergo petro ancilla ostiaria:',\n", + " 'then the band and the tribune and the servants of the jews took jesus, and bound him. and they led him away to annas first, for he was father-in-law to caiphas, who was the high priest of that year. now caiphas was he who had given the counsel to the jews: that it was expedient that one man should die for the people. and simon peter followed jesus: and so did another disciple. and that disciple was known to the high priest and went in with jesus into the court of the high priest. but peter stood at the door without. the other disciple therefore, who was known to the high priest, went out and spoke to the portress and brought in peter. the maid therefore that was portress saith to peter:',\n", + " 'chorus',\n", + " 'numquid et tu ex discipulis es hominis istius?',\n", + " \"art not thou also one of this man's disciples?\",\n", + " 'evangelist',\n", + " 'dicit ille:',\n", + " 'he saith:',\n", + " 'petrus',\n", + " 'non sum.',\n", + " 'i am not.',\n", + " 'evangelist',\n", + " 'stabant autem servi, et ministri ad prunas: quia frigus erat, et calefiebant se: erat autem cum eis et petrus stans, et calefaciens se. pontifex ergo interrogavit jesum de discipulis suis, et de doctrina ejus. respondit ei jesus:',\n", + " 'now the servants and ministers stood at a fire of coals, because it was cold, and warmed themselves. and with them was peter also, standing, and warming himself. the high priest therefore asked jesus of his disciples and of his doctrine. jesus answered him:',\n", + " 'jesus',\n", + " 'ego palam locutus sum mundo: ego semper docui in synagoga, et in templo, quo omnes judaei conveniunt: et in occulto locutus sum nihil. quid me interrogas? interroga eos, qui audierunt quid locutus sim ipsis: ecce hi sciunt quae dixerim ego.',\n", + " 'i have spoken openly to the world. i have always, taught in the synagogue and in the temple, whither all the jews resort: and in secret i have spoken nothing. why asketh thou me? ask them who have heard what i have spoken unto them. behold they know. what things i have said.',\n", + " 'evangelist',\n", + " 'haec autem cum dixisset, unus assistens ministrorum dedit alapam jesu, dicens:',\n", + " 'and when he had said these things, one of the servants, standing by, gave jesus a blow, saying:',\n", + " 'chorus',\n", + " 'sic respondes pontifici?',\n", + " 'answerest thou the high priest so?',\n", + " 'evangelist',\n", + " 'respondit ei jesus:',\n", + " 'jesus answered him:',\n", + " 'jesus',\n", + " 'si male locutus sum, testimonium perhibe de malo: si autem bene, quid me caedis?',\n", + " 'if i have spoken evil, give testimony of the evil; but if well, why strikest thou me?',\n", + " 'evangelist',\n", + " 'et misit eum annas ligatum ad caipham pontificem. erat autem simon petrus stans et calefaciens se. dixerunt ergo ei:',\n", + " 'and annas sent him bound to caiphas the high priest. and simon peter was standing and warming himself. they said therefore to him:',\n", + " 'chorus',\n", + " 'numquid et tu ex discipulis ejus es?',\n", + " 'art not thou also one of his disciples?',\n", + " 'evangelist',\n", + " 'negavit ille, et dixit:',\n", + " 'he denied it and said:',\n", + " 'petrus',\n", + " 'non sum.',\n", + " 'i am not.',\n", + " 'evangelist',\n", + " 'dicit ei unus ex servis pontificis, cognatus ejus, cujus abscidit petrus auriculam:',\n", + " 'one of the servants of the high priest (a kinsman to him whose ear peter cut off) saith to him:',\n", + " 'chorus',\n", + " 'nonne ego te vidi in horto cum illo?',\n", + " 'did i not see thee in the garden with him?',\n", + " 'evangelist',\n", + " 'iterum ergo negavit petrus: et statim gallus cantavit. adducunt ergo jesum a caipha in praetorium. erat autem mane: et ipsi non introierunt in praetorium, ut non contaminarentur, sed ut manducarent pascha. exivit ergo pilatus ad eos foras, et dixit:',\n", + " \"again therefore, peter denied; and immediately the cock crew. then they led jesus from caiphas to the governor's hall. and it was morning; and they went not into the hall, that they might not be defiled, but that they might eat the pasch. pilate therefore went out to them, and said:\",\n", + " 'pilatus',\n", + " 'quam accusationem affertis adversus hominem hunc?',\n", + " 'what accusation bring you against this man?',\n", + " 'evangelist',\n", + " 'responderunt et dixerunt ei:',\n", + " 'they answered and said to him:',\n", + " 'chorus',\n", + " 'si non esset hic malefactor, non tibi tradidissemus eum:',\n", + " 'if he were not a malefactor, we would not have delivered him up to thee.',\n", + " 'evangelist',\n", + " 'dixit ergo eis pilatus:',\n", + " 'pilate therefore said to them:',\n", + " 'pilatus',\n", + " 'accipite eum vos, et secundum legem vestram judicate eum.',\n", + " 'take him you, and judge him according to your law.',\n", + " 'evangelist',\n", + " 'dixerunt ergo ei judaei:',\n", + " 'the jews therefore said to him:',\n", + " 'chorus',\n", + " 'nobis non licet interficere quemquam.',\n", + " 'it is not lawful for us to put any man to death.',\n", + " 'evangelist',\n", + " 'ut sermo jesu impleretur, quem dixit, significans qua morte esset moriturus. introivit ergo iterum in praetorium pilatus et vocavit jesum, et dixit ei:',\n", + " 'that the word of jesus might be fulfilled, which he said, signifying what death he should die. pilate therefore went into the hall again and called jesus and said to him:',\n", + " 'pilatus',\n", + " 'tu es rex iudaeorum?',\n", + " 'art thou the king of the jews ?',\n", + " 'evangelist',\n", + " 'respondit jesus:',\n", + " 'jesus answered:',\n", + " 'jesus',\n", + " 'a temet ipso hoc dicis, an alii dixerunt tibi de me?',\n", + " 'sayest thou this thing of thyself, or have others told it thee of me?',\n", + " 'evangelist',\n", + " 'respondit pilatus:',\n", + " 'pilate answered:',\n", + " 'pilatus',\n", + " 'numquid ego judaeus sum? gens tua et pontifices tradiderunt te mihi: quid fecisti?',\n", + " 'am i a jew? thine own nation and the chief priests have delivered thee up to me. what hast thou done?',\n", + " 'evangelist',\n", + " 'respondit jesus:',\n", + " 'jesus answered:',\n", + " 'jesus regnum meum non est de mundo. si ex hoc mundo esset regnum meum, ministri mei utique decertarent, ut non traderer judaeis: nunc autem regnum meum non est hinc.',\n", + " 'my kingdom is not of this world. if my kingdom were of this world, my servants would certainly strive that i should not be delivered to the jews: but now my kingdom is not from hence.',\n", + " 'evangelist',\n", + " 'dixit itaque ei pilatus:',\n", + " 'pilate therefore said to him:',\n", + " 'pilatus',\n", + " 'ergo rex es tu?',\n", + " 'art thou a king then?',\n", + " 'evangelist',\n", + " 'respondit jesus:',\n", + " 'jesus answered:',\n", + " 'jesus',\n", + " 'tu dicis quia rex sum ego. ego in hoc natus sum, et ad hoc veni in mundum, ut testimonium perhibeam veritati: omnis, qui est ex veritate, audit vocem meam.',\n", + " 'thou sayest that i am a king. for this was i born, and for this came i into the world; that i should give testimony of the truth. every one that is of the truth heareth my voice.',\n", + " 'evangelist',\n", + " 'dicit ei pilatus:',\n", + " 'pilate saith to him:',\n", + " 'pilatus',\n", + " 'quid est veritas?',\n", + " 'what is truth?',\n", + " 'evangelist',\n", + " 'et cum hoc dixisset, iterum exivit ad judaeos, et dicit eis:',\n", + " 'and when he had said this, he went out again to the jews and saith to them:',\n", + " 'pilatus',\n", + " 'ego nullam invenio in eo causam. est autem consuetudo vobis ut unum dimittam vobis in pascha: vultis ergo dimittam vobis regem judaeorum?',\n", + " 'i find no cause in him. but you have a custom that i should release one unto you at the pasch. will you, therefore, that i release unto you the king of the jews?',\n", + " 'evangelist',\n", + " 'clamaverunt ergo rursum omnes, dicentes:',\n", + " 'then cried they all again, saying:',\n", + " 'chorus non hunc, sed barabbam.',\n", + " 'not this man, but barabbas.',\n", + " 'evangelist',\n", + " 'erat autem barabbas latro.',\n", + " 'now barabbas was a robber.',\n", + " 'evangelist',\n", + " 'tunc ergo apprehendit pilatus jesum, et flagellavit. et milites plectentes coronam de spinis, imposuerunt capiti ejus: et veste purpurea circumdederunt eum. et veniebant ad eum, et dicebant:',\n", + " 'then therefore pilate took jesus and scourged him. and the soldiers plaiting a crown of thorns, put it upon his head; and they put on him a purple garment. and they came to him and said:',\n", + " 'chorus',\n", + " 'ave, rex iudaeorum.',\n", + " 'hail, king of the jews.',\n", + " 'evangelist',\n", + " 'et dabant ei alapas. exivit ergo iterum pilatus foras, et dicit eis:',\n", + " 'and they gave him blows. pilate therefore went forth again and saith to them:',\n", + " 'pilatus',\n", + " 'ecce adduco vobis eum foras, ut cognoscatis, quia nullam invenio in eo causam.',\n", + " 'behold, i bring him forth unto you, that you may know that i find no cause in him.',\n", + " 'evangelist',\n", + " '(exivit ergo jesus portans coronam spineam et purpureum vestimentum.) et dicit eis:',\n", + " '(jesus therefore came forth, bearing the crown of thorns and the purple garment.) and he saith to them:',\n", + " 'pilatus',\n", + " 'ecce homo.',\n", + " 'behold the man.',\n", + " 'evangelist',\n", + " 'cum ergo vidissent eum pontifices et ministri, clamabant, dicentes:',\n", + " 'when the chief priests, therefore, and the servants had seen him, they cried out, saying:',\n", + " 'chorus',\n", + " 'crucifige, crucifige eum.',\n", + " 'crucify him, crucify him.',\n", + " 'evangelist',\n", + " 'dicit eis pilatus:',\n", + " 'pilate saith to them:',\n", + " 'pilatus',\n", + " 'accipite eum vos, et crucifigite: ego enim non invenio in eo causam.',\n", + " 'take him you, and crucify him; for i find no cause in him.',\n", + " 'evangelist',\n", + " 'responderunt ei iudaei:',\n", + " 'the jews answered him:',\n", + " 'chorus',\n", + " 'nos legem habemus, et secundum legem debet mori, quia filium dei se fecit.',\n", + " 'we have a law, and according to the law he ought to die, because he made himself the son of god.',\n", + " 'evangelist',\n", + " 'cum ergo audisset pilatus hunc sermonem, magis timuit. et ingressus est praetorium iterum: et dixit ad jesum:',\n", + " 'when pilate, therefore, had heard this saying, he feared the more. and he entered into the hall again; and he said to jesus:',\n", + " 'pilatus',\n", + " 'unde es tu?',\n", + " 'whence art thou?',\n", + " 'evangelist',\n", + " 'jesus autem responsum non dedit ei. dicit ergo ei pilatus:',\n", + " 'but jesus gave him no answer. pilate therefore saith to him:',\n", + " 'pilatus',\n", + " 'mihi non loqueris? nescis quia potestatem habeo crucifigere te, et potestatem habeo dimittere te?',\n", + " 'speakest thou not to me? knowest thou not that i have power to crucify thee, and i have power to release thee?',\n", + " 'evangelist',\n", + " 'respondit jesus:',\n", + " 'jesus answered:',\n", + " 'jesus',\n", + " 'non haberes potestatem adversum me ullam, nisi tibi datum esset desuper. propterea, qui me tradidit tibi majus peccatum habet.',\n", + " 'thou shouldst not have any power against me, unless it were given thee from above. therefore, he that hath delivered me to thee hath the greater sin.',\n", + " 'evangelist',\n", + " 'et exinde quaerebat pilatus dimittere eum. judaei autem clamabant, dicentes:',\n", + " 'and from henceforth pilate sought to release him. but the jews cried out, saying:',\n", + " 'chorus',\n", + " 'si hunc dimittis, non es amicus caesaris. omnis enim, qui se regem facit, contradicit caesari.',\n", + " \"if thou release this man, thou art not caesar's friend. for whosoever maketh himself a king speaketh against caesar.\",\n", + " 'evangelist',\n", + " 'pilatus ergo cum audisset hos sermones, adduxit foras jesum, et sedit pro tribunali, in locum, qui dicitur lithostrotos, hebraice autem gabbatha. erat autem parasceve paschae, hora quasi sexta, et dicit judaeis:',\n", + " 'now when pilate heard these words, he brought jesus forth and sat down in the judgment seat, in the place that is called lithostrotos, and in hebrew gabbatha. and it was the parasceve of the pasch, about the sixth hour; and he saith to the jews:',\n", + " 'pilatus',\n", + " 'ecce rex vester.',\n", + " 'behold your king.',\n", + " 'evangelist',\n", + " 'illi autem clamabant:',\n", + " 'but they cried out:',\n", + " 'chorus',\n", + " 'tolle, tolle, crucifige eum.',\n", + " 'away with him. away with him: crucify him.',\n", + " 'evangelist',\n", + " 'dicit eis pilatus:',\n", + " 'pilate saith to them:',\n", + " 'pilatus',\n", + " 'regem vestrum crucifigam?',\n", + " 'shall i crucify your king?',\n", + " 'evangelist',\n", + " 'responderunt pontifices:',\n", + " 'the chief priests answered:',\n", + " 'chorus',\n", + " 'non habemus regem, nisi caesarem.',\n", + " 'we have no king but caesar.',\n", + " 'evangelist',\n", + " 'tunc ergo tradidit eis illum ut crucifigeretur. (!) susceperunt autem jesum, et eduxerunt. et bajulans sibi crucem, exivit in eum, qui dicitur calvariae, locum, hebraice autem golgotha: ubi crucifixerunt eum, et cum eo alios duos, hinc et hinc, medium autem jesum. scripsit autem et titulum pilatus: et posuit super crucem. erat autem scriptum: jesus nazarenus, rex judaeorum. hunc ergo titulum multi judaeorum legerunt, quia prope civitatem erat locus, ubi crucifixus est jesus. et erat scriptum hebraice, graece, et latine. dicebant ergo pilato pontifices judaeorum:',\n", + " 'then, therefore, he delivered him to them to be crucified. and they took jesus and led him forth. and bearing his cross, he went forth to that place which is called calvary but in hebrew golgotha; where they crucified him, and with him, two others one on each side and jesus in the midst. and pilate wrote a title also: and he put it upon the cross. and the writing was: jesus of nazareth, the king of the jews. this title therefore many of the jews did read: because the place where jesus was crucified was nigh to the city. and it was written in hebrew, in greek, and in latin. then the chief priests of the jews said to pilate:',\n", + " 'chorus',\n", + " 'noli scribere, rex judaeorum, sed quia ipse dixit: rex sum judaeorum.',\n", + " 'write not: the king of the jews; but that he said: i am the king of the jews.',\n", + " 'evangelist',\n", + " 'respondit pilatus:',\n", + " 'pilate answered:',\n", + " 'pilatus',\n", + " 'quod scripsi, scripsi.',\n", + " 'what i have written, i have written.',\n", + " 'evangelist',\n", + " 'milites ergo cum crucifixissent eum, acceperunt vestimenta ejus et fecerunt quatuor partes: unicuique militi partem, et tunicam. erat autem tunica inconsutilis, desuper contexta per totum. dixerunt ergo ad invicem:',\n", + " 'the soldiers therefore, when they had crucified him, took his garments (and they made four parts, to every soldier a part) and also his coat. now the coat was without seam, woven from the top throughout. they said then one to another:',\n", + " 'chorus',\n", + " 'non scindamus eam, sed sortiamur de illa cujus sit.',\n", + " 'let us not cut it, but let us cast lots for it, whose it shall be:',\n", + " 'evangelist',\n", + " 'ut scriptura impleretur, dicens: partiti sunt vestimenta mea sibi: et in vestem meam miserunt sortem. et milites quidem haec fecerunt. stabant autem juxta crucem jesu mater ejus, et soror matris ejus maria cleophae, et maria magdalene. cum vidisset ergo jesus matrem, et discipulum stantem, quem diligebat, dicit matri suae:',\n", + " \"that the scripture might be fulfilled which saith: they have parted my garments among them, and upon my vesture they have cast lots. and the soldiers indeed did these things. now there stood by the cross of jesus his mother, and his mother's sister, mary of cleophas and mary magdalen. when jesus therefore had seen his mother and the disciple standing whom he loved, he saith to his mother:\",\n", + " 'jesus',\n", + " 'mulier, ecce filius tuus.',\n", + " 'woman, behold thy son.',\n", + " 'evangelist',\n", + " 'deinde dicit discipulo:',\n", + " 'after that, he saith to the disciple.',\n", + " 'jesus',\n", + " 'ecce mater tua.',\n", + " 'behold thy mother.',\n", + " 'evangelist',\n", + " 'et ex illa hora accepit eam discipulus in sua. postea sciens jesus quia omnia consummata sunt, ut consummaretur scriptura, dixit:',\n", + " 'and from that hour, the disciple took her to his own. afterwards, jesus, knowing that all things were now accomplished, that the scripture might be fulfilled, said',\n", + " 'jesus',\n", + " 'sitio.',\n", + " 'i thirst.',\n", + " 'evangelist',\n", + " 'vas ergo erat positum aceto plenum. illi autem spongiam plenam aceto, hysopo circumponentes, obtulerunt ori ejus. cum ergo accepisset jesus acetum, dixit:',\n", + " 'now there was a vessel set there, full of vinegar. and they, putting a sponge full of vinegar about hyssop, put it to his mouth. jesus therefore, when he had taken the vinegar, said:',\n", + " 'jesus',\n", + " ...]},\n", + " 'data': ['cum tacent clament',\n", + " 'cum tacent clament',\n", + " 'serva ne',\n", + " 'servan tuter',\n", + " 'servan servan tuter',\n", + " 'dum inter homines',\n", + " 'sumus colamus',\n", + " 'humanitatem',\n", + " 'cum tacent clament',\n", + " 'dum inter homines',\n", + " 'sumus colamus',\n", + " 'humanitatem',\n", + " 'cum tacent clament',\n", + " 'notes',\n", + " 'the following brief notes are mainly based on those of m. brunschvicg. but those of mm. faugère, molinier, and havet have also been consulted. the biblical references are to the authorised english version. those in the text are to the vulgate, except where it has seemed advisable to alter the reference to the english version.',\n", + " 'p. 1, l. 1. the difference between the mathematical and the intuitive mind.—pascal is here distinguishing the logical or discursive type of mind, a good example of which is found in mathematical reasoning, and what we should call the intuitive type of mind, which sees everything at a glance. a practical man of sound judgment exemplifies the latter; for he is in fact guided by impressions of past experience, and does not consciously reason from general principles.',\n", + " 'p. 2, l. 34. there are different kinds, etc.—this is probably a subdivision of the discursive type of mind.',\n", + " 'p. 3, l. 31. by rule.—this is an emendation by m. brunschvicg. the ms. has sans règle.',\n", + " 'p. 4, l. 3. i judge by my watch.—pascal is said to have always carried a watch attached to his left wrist-band.',\n", + " 'p. 5, l. 21. scaramouch.—a traditional character in italian comedy.',\n", + " 'p. 5, l. 22. the doctor.—also a traditional character in italian comedy.',\n", + " 'p. 5, l. 24. cleobuline.—princess, and afterwards queen of corinth, figures in the romance of mademoiselle de scudéry, entitled artamène ou le grand cyrus. she is enamoured of one of her subjects, myrinthe. but she \"loved him without thinking of love; and remained so long in that error, that this affection was no longer in a state to be overcome, when she became aware of it.\" the character is supposed to have been drawn from christina of sweden.',\n", + " 'p. 6, l. 21. rivers are, etc.—apparently suggested by a chapter in rabelais: how we descended in the isle of odes, in which the roads walk.',\n", + " 'p. 6, l. 30. salomon de tultie.—a pseudonym adopted by pascal as the author of the provincial letters.',\n", + " 'p. 7, l. 7. abstine et sustine.—a maxim of the stoics.',\n", + " 'p. 7, l. 8. follow nature.—the maxim in which the stoics summed up their positive ethical teaching.',\n", + " 'p. 7, l. 9. as plato.—compare montaigne, essais, iii, 9.',\n", + " 'p. 9, l. 29. we call this jargon poetical beauty.—according to m. havet, pascal refers here to malherbe and his school.',\n", + " 'p. 10, l. 23. ne quid nimis.—nothing in excess, a celebrated maxim in ancient greek philosophy.',\n", + " \"p. 11, l. 26. that epigram about two one-eyed people.—m. havet points out that this is not martial's, but is to be found in epigrammatum delectus, published by port-royal in 1659.\",\n", + " 'lumine æon dextro, capta est leonilla sinistro,',\n", + " 'et potis est forma vincere uterque deos.',\n", + " 'blande puer, lumen quod habes concede parenti,',\n", + " 'sic tu cæcus amor, sic erit ilia venus.',\n", + " 'p. 11, l. 29. ambitiosa recidet ornamenta.—horace, de arte poetica, 447.',\n", + " 'p. 13, l. 2. cartesian.—one who follows the philosophy of descartes (1596-1650), \"the father of modern philosophy.\"',\n", + " 'p. 13, l. 8. le maître.—a famous french advocate in pascal\\'s time. his plaidoyers el harangues appeared in 1657. plaidoyer vi is entitled pour un fils mis en religion par force, and on the first page occurs the word répandre: \"dieu qui répand des aveuglements et des ténèbres sur les passions illégitimes.\" pascal\\'s reference is probably to this passage.',\n", + " 'p. 13, l. 12. the cardinal.—mazarin. he was one of those statesmen who do not like condolences.',\n", + " 'p. 14, l. 12. saint thomas.—thomas aquinas (1223-74), one of the greatest scholastic philosophers.',\n", + " 'p. 14, l. 16. charron.—a friend of montaigne. his traité de la sagesse (1601), which is not a large book, contains 117 chapters, each of which is subdivided.',\n", + " 'p. 14, l. 17. of the confusion of montaigne.—the essays of montaigne follow each other without any kind of order.',\n", + " 'p. 14, l. 27. mademoiselle de gournay.—the adopted daughter of montaigne. she published in 1595 an edition of his essais, and, in a preface (added later), she defends him on this point.',\n", + " 'p. 15, l. 1. people without eyes.—montaigne, essais, ii, 12.',\n", + " 'p. 15, l. 1. squaring the circle.—ibid., ii, 14.',\n", + " 'p. 15, l. 1. a greater world.—ibid., ii, 12.',\n", + " 'p. 15, l. 2. on suicide and on death.—ibid., ii, 3.',\n", + " 'p. 15, l. 3. without fear and without repentance.—ibid., iii., 2.',\n", + " 'p. 15, l. 7. (730, 231).—these two references of pascal are to the edition of the essais of montaigne, published in 1636.',\n", + " \"p. 16, l. 32. the centre which is everywhere, and the circumference nowhere.—m. havet traces this saying to empedocles. pascal must have read it in mlle de gournay's preface to her edition of montaigne's essais.\",\n", + " 'p. 18, l. 33. i will speak of the whole.—this saying of democritus is quoted by montaigne, essais, ii, 12.',\n", + " \"p. 18, l. 37. principles of philosophy.—the title of one of descartes's philosophical writings, published in 1644. see note on p. 13, l. 8 above.\",\n", + " 'p. 18, l. 39. de omni scibili.—the title under which pico della mirandola announced nine hundred propositions which he proposed to uphold publicly at rome in 1486.',\n", + " 'p. 19, l. 26. beneficia eo usque læta sunt.—tacitus, ann., lib. iv, c. xviii. compare montaigne, essais, iii, 8.',\n", + " 'p. 21, l. 35. modus quo, etc.—st. augustine, de civ. dei, xxi, 10. montaigne, essais, ii, 12.',\n", + " 'p. 22, l. 8. felix qui, etc.—virgil, georgics, ii, 489, quoted by montaigne, essais, iii, 10.',\n", + " 'p. 22, l. 10. nihil admirari, etc.—horace, epistles, i. vi. 1. montaigne, essais, ii, 10.',\n", + " 'p. 22, l. 19. 394.—a reference to montaigne, essais, ii, 12.',\n", + " 'p. 22, l. 20. 395.—ibid.',\n", + " 'p. 22, l. 22. 399.—ibid.',\n", + " 'p. 22, l. 28. harum sententiarum.—cicero, tusc., i, 11, montaigne, essais, ii, 12.',\n", + " 'p. 22, l. 39. felix qui, etc.—see above, notes on p. 22, l. 8 and l. 10.',\n", + " 'p. 22, l. 40. 280 kinds of sovereign good in montaigne.—essais, ii, 12.',\n", + " \"p. 23, l. 1. part i, 1, 2, c. 1, section 4.—this reference is to pascal's traité du vide.\",\n", + " 'p. 23, l. 25. how comes it, etc.—montaigne, essais, iii, 8.',\n", + " 'p. 23, l. 29. see epictetus, diss., iv, 6. he was a great roman stoic in the time of domitian.',\n", + " 'p. 24, l. 9. it is natural, etc.—compare montaigne, essais, i, 4.',\n", + " 'p. 24, l. 12. imagination.—this fragment is suggestive of montaigne. see essais, iii, 8.',\n", + " \"p. 25, l. 16. if the greatest philosopher, etc. see raymond sebond's apologie, from which pascal has derived his illustrations.\",\n", + " 'p. 26, l. 1. furry cats.—montaigne, essais, ii, 8.',\n", + " \"p. 26, l. 31. della opinione, etc.—no work is known under this name. it may refer to a treatise by carlo flori, which bears a title like this. but its date (1690) is after pascal's death (1662), though there may have been earlier editions.\",\n", + " 'p. 27, l. 12. source of error in diseases.—montaigne, essais, ii, 12.',\n", + " 'p. 27, l. 27. they rival each other, etc.—ibid.',\n", + " 'p. 28, l. 31. næ iste, etc.—terence, heaut., iv, i, 8. montaigne, essais, iii, 1.',\n", + " 'p. 28, l. 15. quasi quidquam, etc.—plin., ii, 7. montaigne, ibid.',\n", + " 'p. 28, l. 29. quod crebro, etc.—cicero, de divin., ii, 49.',\n", + " 'p. 29, l. 1. spongia solis.—the spots on the sun. pascal sees in them the beginning of the darkening of the sun, and thinks that there will therefore come a day when there will be no sun.',\n", + " 'p. 29, l. 15. custom is a second nature, etc.—montaigne, essais, i, 22.',\n", + " 'p. 29, l. 19. omne animal.—see genesis vii, 14.',\n", + " 'p. 30, l. 22. hence savages, etc.—montaigne, essais, i, 22.',\n", + " 'p. 32, l. 3. a great part of europe, etc.—an allusion to the reformation.',\n", + " \"p. 33, l. 13. alexander's chastity.—pascal apparently has in mind alexander's treatment of darius's wife and daughters after the battle of issus.\",\n", + " \"p. 34, l. 17. lustravit lampade terras.—part of cicero's translation of two lines from homer, odyssey, xviii, 136. montaigne, essais, ii, 12.\",\n", + " 'tales sunt hominum mentes, quali pater ipse',\n", + " 'jupiter auctiferas lustravit lampade terras.',\n", + " 'p. 34, l. 32. nature gives, etc.—montaigne, essais, i, 19.',\n", + " 'p. 37, l. 23. our nature consists, etc.—montaigne, essais, iii, 13.',\n", + " 'p. 38, l. 1. weariness.—compare montaigne, essais, ii, 12.',\n", + " 'p. 38, l. 8. cæsar was too old, etc.—see montaigne, essais, ii, 34.',\n", + " 'p. 38, l. 30. a mere trifle, etc.—montaigne, essais, iii, 4.',\n", + " 'p. 40, l. 21. advice given to pyrrhus.—ibid., i, 42.',\n", + " 'p. 41, l. 2. they do not know, etc.—ibid., i, 19.',\n", + " 'p. 44, l. 14. they are, etc.—compare montaigne, essais, i, 38.',\n", + " 'p. 46, l. 7. those who write, etc.—a thought of cicero in pro archia, mentioned by montaigne, essais, i, 41.',\n", + " 'p. 47, l. 3. ferox gens.—livy, xxxiv, 17. montaigne, essais, i, 40.',\n", + " 'p. 47, l. 5. every opinion, etc.—montaigne, ibid.',\n", + " 'p. 47, l. 12. 184.—this is a reference to montaigne, essais, i, 40. see also ibid., iii, 10.',\n", + " 'p. 48, l. 8. i know not what (corneille).—see médée, ii, vi, and rodogune, i, v.',\n", + " 'p. 48, l. 22. in omnibus requiem quæsivi.—eccles. xxiv, ii, in the vulgate.',\n", + " 'p. 50, l. 5. the future alone is our end.—montaigne, essais, i, 3.',\n", + " 'p. 50, l. 14. solomon.—considered by pascal as the author of ecclesiastes.',\n", + " 'p. 50, l. 20. unconscious of approaching fever.—compare montaigne, essais, i, 19.',\n", + " 'p. 50, l. 22. cromwell.—cromwell died in 1658 of a fever, and not of the gravel. the restoration took place in 1660, and this fragment was written about that date.',\n", + " 'p. 50, l. 28. the three hosts.—charles i was beheaded in 1649; queen christina of sweden abdicated in 1654; jean casimir, king of poland, was deposed in 1656.',\n", + " 'p. 50, l. 32. macrobius.—a latin writer of the fifth century. he was a neo-platonist in philosophy. one of his works is entitled saturnalia.',\n", + " 'p. 51, l. 5. the great and the humble, etc.—see montaigne, essais, ii, 12.',\n", + " 'p. 53, l. 5. miton.—a man of fashion in paris known to pascal.',\n", + " 'p. 53, l. 15. deus absconditus.—is. xiv, 15.',\n", + " 'p. 60, l. 26. fascinatio nugacitatis.—book of wisdom iv, 12.',\n", + " 'p. 61, l. 10. memoria hospitis, etc.—book of wisdom v, 15.',\n", + " 'p. 62, l. 5. instability.—compare montaigne, essais, iii, 12.',\n", + " 'p. 66, l. 19. foolishness, stultitium.—i cor. i, 18.',\n", + " 'p. 71, l. 5. to prove divinity from the works of nature.—a traditional argument of the stoics like cicero and seneca, and of rationalist theologians like raymond sebond, charron, etc. it is the argument from design in modern philosophy.',\n", + " \"p. 71, l. 27. nemo novit, etc.—matthew xi, 27. in the vulgate, it is neque patrem quis novit, etc. pascal's biblical quotations are often incorrect. many seem to have been made from memory.\",\n", + " 'p. 71, l. 30. those who seek god find him.—matthew vii, 7.',\n", + " 'p. 72, l. 3. vere tu es deus absconditus.—is. xiv, 15.',\n", + " 'p. 72, l. 22. ne evacuetur crux christi.—i cor. i, 17. in the vulgate we haveut non instead of ne.',\n", + " 'p. 72, l. 25. the machine.—a cartesian expression. descartes considered animals as mere automata. according to pascal, whatever does not proceed in us from reflective thought is a product of a necessary mechanism, which has its root in the body, and which is continued into the mind in imagination and the passions. it is therefore necessary for man so to alter, and adjust this mechanism, that it will always follow, and not obstruct, the good will.',\n", + " 'p. 73, l. 3. justus ex fide vivit.—romans i, 17.',\n", + " 'p. 73, l. 5. fides ex auditu.—romans x, 17.',\n", + " 'p. 73, l. 12. the creature.—what is purely natural in us.',\n", + " 'p. 74, l. 15. inclina cor meum, deus.—ps. cxix, 36.',\n", + " 'p. 75, l. 11. unus quisque sibi deum fingit.—see book of wisdom xv, 6, 16.',\n", + " 'p. 76, l. 34. eighth beatitude.—matthew v, 10. it is to the fourth beatitude that the thought directly refers.',\n", + " \"p. 77, l. 6. one thousand and twenty-eight.—the number of the stars according to ptolemy's catalogue.\",\n", + " 'p. 77, l. 29. saint augustine.—epist. cxx, 3.',\n", + " 'p. 78, l. 1. nisi efficiamini sicut parvuli.—matthew xviii, 3.',\n", + " 'p. 80, l. 20. inclina cor meum, deus, in....—ps. cxix, 36.',\n", + " 'p. 80, l. 22. its establishment.—the constitution of the christian church.',\n", + " 'p. 81, l. 20. the youths and maidens and children of the church would prophesy.—joel ii, 28.',\n", + " 'p. 83, l. 11. on what, etc.—see montaigne, essais, ii, 12.',\n", + " 'p. 84, l. 16. nihil amplius ... est.—ibid. cicero, de finibus, v, 21.',\n", + " 'p. 84, l. 17. ex senatus ... exercentur.—montaigne, essais, iii, 1. seneca, letters, 95.',\n", + " 'p. 84, l. 18. ut olim ... laboramus.—montaigne, essais, iii, 13. tacitus, ann., iii, 25.',\n", + " \"p. 84, l. 20. the interest of the sovereign.—the view of thrasymachus in plato's republic, i, 338.\",\n", + " 'p. 84, l. 21. another, present custom.—the doctrine of the cyrenaics. montaigne, essais, iii, 13.',\n", + " 'p. 84, l. 24. the mystical foundation of its authority.—montaigne, essais, iii, 13. see also ii, 12.',\n", + " 'p. 85, l. 2. the wisest of legislators.—plato. see republic, ii, 389, and v, 459.',\n", + " 'p. 85, l. 4. cum veritatem, etc.—an inexact quotation from st. augustine, de civ. dei, iv, 27. montaigne, essais, ii, 12.',\n", + " 'p. 85, l. 17. veri juris.—cicero, de officiis, iii, 17. montaigne, essais, iii, i.',\n", + " 'p. 86, l. 9. when a strong man, etc.—luke xi, 21.',\n", + " 'p. 86, l. 26. because he who will, etc.—see epictetus, diss., iii, 12.',\n", + " 'p. 88, l. 19. civil wars are the greatest of evils.—montaigne, essais, iii, 11.',\n", + " 'p. 89, l. 5. montaigne.—essais, i, 42.',\n", + " 'p. 91, l. 8. savages laugh at an infant king.—an allusion to a visit of some savages to europe. they were greatly astonished to see grown men obey the child king, charles ix. montaigne, essais, i, 30.',\n", + " \"p. 92, l. 8. man's true state.—see montaigne, essais, i, 54.\",\n", + " 'p. 95, l. 3. omnis ... vanitati.—eccles. iii, 19.',\n", + " 'p. 95, l. 4. liberabitur.—romans viii, 20-21.',\n", + " 'p. 95, l. 4. saint thomas.—in his commentary on the epistle of st. james. james ii, 1.',\n", + " 'p. 96, l. 9. the account of the pike and frog of liancourt.—the story is unknown. the duc de liancourt led a vicious life in youth, but was converted by his wife. he became one of the firmest supporters of port-royal.',\n", + " 'p. 97, l. 18. philosophers.—the stoics.',\n", + " 'p. 97, l. 24. epictetus.—diss., iv, 7.',\n", + " 'p. 97, l. 26. those great spiritual efforts, etc.—on this, and the following fragment, see montaigne, essais, ii, 29.',\n", + " 'p. 98, l. 3. epaminondas.—praised by montaigne, essais, ii, 36. see also iii, 1.',\n", + " 'p. 98, l. 17. plerumque gratæ principibus vices.—horace, odes, iii, xxix, 13, cited by montaigne, essais, i, 42. horace has divitibus instead of principibus.',\n", + " 'p. 99, l. 4. man is neither angel nor brute, etc.—montaigne, essais, iii, 13.',\n", + " 'p. 99, l. 14. ut sis contentus, etc.—a quotation from seneca. see montaigne, essais, ii, 3.',\n", + " 'p. 99, l. 21. sen. 588.—seneca, letter to lucilius, xv. montaigne, essais, iii, i.',\n", + " 'p. 99, l. 23. divin.—cicero, de divin., ii, 58.',\n", + " 'p. 99, l. 25. cic.—cicero, tusc, ii, 2. the quotation is inaccurate. montaigne, essais, ii, 12.',\n", + " 'p. 99, l. 27. senec.—seneca, epist., 106.',\n", + " 'p. 99, l. 28. id maxime, etc.—cicero, de off., i, 31.',\n", + " 'p. 99, l. 29. hos natura, etc.—virgil, georgics, ii, 20.',\n", + " 'p. 99, l. 30. paucis opus, etc.—seneca, epist., 106.',\n", + " 'p. 100, l. 3. mihi sic usus, etc.—terence, heaut., i, i, 28.',\n", + " 'p. 100, l. 4. rarum est, etc.—quintilian, x, 7.',\n", + " 'p. 100, l. 5. tot circa, etc.—m. seneca, suasoriæ, i, 4.',\n", + " 'p. 100, l. 6. cic.—cicero, acad., i, 45.',\n", + " 'p. 100, l. 7. nec me pudet, etc.—cicero, tusc., i, 25.',\n", + " 'p. 100, l. 8. melius non incipiet.—the rest of the quotation is quam desinet. seneca, epist., 72.',\n", + " 'p. 100, l. 25. they win battles.—montaigne, in his essais, ii, 12, relates that the portuguese were compelled to raise the siege of tamly on account of the number of flies.',\n", + " 'p. 100, l. 27. when it is said, etc.—by descartes.',\n", + " 'p. 102, l. 20. arcesilaus.—a follower of pyrrho, the sceptic. he lived in the third century before christ.',\n", + " 'p. 105, l. 20. ecclesiastes.—eccles. viii, 17.',\n", + " 'p. 106, l. 16. the academicians.—dogmatic sceptics, as opposed to sceptics who doubt their own doubt.',\n", + " 'p. 107, l. 10. ego vir videns.—lamentations iii, i.',\n", + " 'p. 108, l. 26. evil is easy, etc.—the pythagoreans considered the good as certain and finite, and evil as uncertain and infinite. montaigne, essais, i, 9.',\n", + " 'p. 109, l. 7. paulus æmilius.—montaigne, essais, i, 19. cicero, tusc., v, 40.',\n", + " 'p. 109, l. 30. des barreaux.—author of a licentious love song. he was born in 1602, and died in 1673. balzac call him \"the new bacchus.\"',\n", + " 'p. 110, l. 16. for port-royal.—the letters, a. p. r., occur in several places, and are generally thought to indicate what will be afterwards treated in lectures or conferences at port-royal, the famous cistercian abbey, situated about eighteen miles from paris. founded early in the thirteenth century, it acquired its greatest fame in its closing years. louis xiv was induced to believe it heretical; and the monastery was finally demolished in 1711. its downfall was no doubt brought about by the jesuits.',\n", + " 'p. 113, l. 4. they all tend to this end.—montaigne, essais, i, 19.',\n", + " 'p. 119, l. 15. quod ergo, etc.—acts xvii, 23.',\n", + " 'p. 119, l. 26. wicked demon.—descartes had suggested the possibility of the existence of an evil genius to justify his method of universal doubt. see his first meditation. the argument is quite cartesian.',\n", + " 'p. 122, l. 18. deliciæ meæ, etc.—proverbs viii, 31.',\n", + " 'p. 122, l. 18. effundam spiritum, etc.—is. xliv, 3; joel ii, 28.',\n", + " 'p. 122, l. 19. dii estis.—ps. lxxxii, 6.',\n", + " 'p. 122, l. 20. omnis caro fænum.—is. xl, 6.',\n", + " 'p. 122, l. 20. homo assimilatus, etc.—ps. xlix, 20.',\n", + " 'p. 124, l. 24. sapientius est hominibus.—1 cor. i, 25.',\n", + " 'p. 125, l. 1. of original sin.—the citations from the rabbis in this fragment are borrowed from a work of the middle ages, entitled pugio christianorum ad impiorum perfidiam jugulandam et maxime judæorum. it was written in the thirteenth century by raymond martin, a catalonian monk. an edition of it appeared in 1651, edited by bosquet, bishop of lodève.',\n", + " 'p. 125, l. 24. better is a poor and wise child, etc.—eccles. iv, 13.',\n", + " 'p. 126, l. 17. nemo ante, etc.—see ovid, met., iii, 137, and montaigne, essais, i, 18.',\n", + " 'p. 127, l. 10. figmentum.—borrowed from the vulgate, ps. ciii, 14.',\n", + " 'p. 128. l. 5. all that is in the world, etc.—first epistle of st. john, ii, 16.',\n", + " \"p. 128, l. 7. wretched is, etc.—m. faugère thinks this thought is taken from st. augustine's commentary on ps. cxxxvii, super flumina babylonis.\",\n", + " 'p. 129, l. 6. qui gloriatur, etc.—1 cor. i, 31.',\n", + " 'p. 130, l. 13. via, veritas.—john xiv, 6.',\n", + " 'p. 130, l. 14. zeno.—the original founder of stoicism.',\n", + " 'p. 130, l. 15. epictetus.—diss., iv, 6, 7.',\n", + " 'p. 131, l. 32. a body full of thinking members.—see i cor. xii.',\n", + " 'p. 133, l. 5. book of wisdom.—ii, 6.',\n", + " 'p. 134, l. 28. qui adhæret, etc.—1 cor. vi, 17.',\n", + " 'p. 134, l. 36. two laws.—matthew xxii, 35-40; mark xii, 28-31.',\n", + " 'p. 135, l. 6. the kingdom of god is within us.—luke xvii, 29.',\n", + " 'p. 137, l. 1. et non, etc.—ps. cxliii, 2.',\n", + " 'p. 137, l. 3. the goodness of god leadeth to repentance.—romans ii, 4.',\n", + " 'p. 137, l. 5. let us do penance, etc.—see jonah iii, 8, 9.',\n", + " 'p. 137, l. 27. i came to send war.—matthew x, 34.',\n", + " 'p. 137, l. 28. i came to bring fire and the sword.—luke xii, 49.',\n", + " 'p. 138, l. 2. pharisee and the publican.—parable in luke xviii, 9-14.',\n", + " 'p. 138, l. 13. abraham.—genesis xiv, 22-24.',\n", + " 'p. 138, l. 17. sub te erit appetitus tuus.—genesis iv, 7.',\n", + " 'p. 140, l. 1. it is, etc.—a discussion on the eucharist.',\n", + " 'p. 140, l. 34. non sum dignus.—luke vii, 6.',\n", + " 'p. 140, l. 35. qui manducat indignus.—i cor. xi, 29.',\n", + " 'p. 140, l. 36. dignus est accipere.—apoc. iv, ii.',\n", + " 'p. 141. in the french edition on which this translation is based there was inserted the following fragment after no. 513:',\n", + " '\"work out your own salvation with fear.\"',\n", + " 'proofs of prayer. petenti dabitur.',\n", + " 'therefore it is in our power to ask. on the other hand, there is god. so it is not in our power, since the obtaining of (the grace) to pray to him is not in our power. for since salvation is not in us, and the obtaining of such grace is from him, prayer is not in our power.',\n", + " 'the righteous man should then hope no more in god, for he ought not to hope, but to strive to obtain what he wants.',\n", + " 'let us conclude then that, since man is now unrighteous since the first sin, and god is unwilling that he should thereby not be estranged from him, it is only by a first effect that he is not estranged.',\n", + " 'therefore, those who depart from god have not this first effect without which they are not estranged from god, and those who do not depart from god have this first effect. therefore, those whom we have seen possessed for some time of grace by this first effect, cease to pray, for want of this first effect.',\n", + " 'then god abandons the first in this sense.',\n", + " 'it is doubtful, however that this fragment should be included in the pensées, and it has seemed best to separate it from the text. it has only once before appeared—in the edition of michaut (1896). the first half of it has been freely translated in order to give an interpretation in accordance with a suggestion from m. emile boutroux, the eminent authority on pascal. the meaning seems to be this. in one sense it is in our power to ask from god, who promises to give us what we ask. but, in another sense, it is not in our power to ask; for it is not in our power to obtain the grace which is necessary in asking. we know that salvation is not in our power. therefore some condition of salvation is not in our power. now the conditions of salvation are two: (1) the asking for it, and (2) the obtaining it. but god promises to give us what we ask. hence the obtaining is in our power. therefore the condition which is not in our power must be the first, namely, the asking. prayer presupposes a grace which it is not within our power to obtain.',\n", + " 'after giving the utmost consideration to the second half of this obscure fragment, and seeking assistance from some eminent scholars, the translator has been compelled to give a strictly literal translation of it, without attempting to make sense.',\n", + " 'p. 141, l. 14. lord, when saw we, etc.—matthew xxv, 37.',\n", + " 'p. 143, l. 19. qui justus est, justificetur adhuc.—apoc. xxii, ii.',\n", + " 'p. 144, l. 2. corneille.—see his horace, ii, iii.',\n", + " 'p. 144, l. 15. corrumpunt mores, etc.—i cor. xv, 33.',\n", + " 'p. 145. l. 25. quod curiositate, etc.—st. augustine, sermon cxli.',\n", + " 'p. 146, l. 34. quia ... facere.—i cor. i, 21.',\n", + " 'p. 148, l. 7. turbare semetipsum.—john xi, 33. the text is turbavit seipsum.',\n", + " 'p. 148, l. 25. my soul is sorrowful even unto death.—mark xiv, 34.',\n", + " 'p. 149, l. 3. eamus. processit.—john xviii, 4. but eamus does not occur. see, however, matthew xxvi, 46.',\n", + " 'p. 150, l. 36. eritis sicut, etc.—genesis iv, 5.',\n", + " 'p. 151, l. 2. noli me tangere.—john xx, 17.',\n", + " 'p. 156, l. 14. vere discipuli, etc.—allusions to john viii, 31, i, 47; viii, 36; vi, 32.',\n", + " 'p. 158, l. 41. signa legem in electis meis.—is. viii, 16. the text of the vulgate is in discipulis meis.',\n", + " 'p. 159, l. 2. hosea.—xiv, 9.',\n", + " 'p. 159, l. 13. saint john.—xii, 39.',\n", + " 'p. 160, l. 17. tamar.—genesis xxxviii, 24-30.',\n", + " 'p. 160, l. 17. ruth.—ruth iv, 17-22.',\n", + " 'p. 163, l. 13. history of china.—a history of china in latin had been published in 1658.',\n", + " 'p. 164, l. i. the five suns, etc.—montaigne, essais, iii, 6.',\n", + " 'p. 164, l. 9. jesus christ.—john v, 31.',\n", + " 'p. 164, l. 17. the koran says, etc.—there is no mention of saint matthew in the koran; but it speaks of the apostles generally.',\n", + " 'p. 165, l. 35. moses.—deut. xxxi, 11.',\n", + " 'p. 166, l. 23. carnal christians.—jesuits and molinists.',\n", + " 'p. 170, l. 14. whom he welcomed from afar.—john viii, 56.',\n", + " 'p. 170, l. 19. salutare, etc.—genesis xdix, 18.',\n", + " 'p. 173, l. 33. the twelve tables at athens.—there were no such tables. about 450 b.c. a commission is said to have been appointed in rome to visit greece and collect information to frame a code of law. this is now doubted, if not entirely discredited.',\n", + " 'p. 173, l. 35. josephus.—reply to apion, ii, 16. josephus, the jewish historian, gained the favour of titus, and accompanied him to the siege of jerusalem. he defended the jews against a contemporary grammarian, named apion, who had written a violent satire on the jews.',\n", + " 'p. 174, l. 27. against apion.—ii, 39. see preceding note.',\n", + " 'p. 174, l. 28. philo.—a jewish philosopher, who lived in the first century of the christian era. he was one of the founders of the alexandrian school of thought. he sought to reconcile jewish tradition with greek thought.',\n", + " 'p. 175, l. 20. prefers the younger.—see no. 710.',\n", + " 'p. 176, l. 32. the books of the sibyls and trismegistus.—the sibyls were the old roman prophetesses. their predictions were preserved in three books at rome, which tarquinius superbus had bought from the sibyl of erythræ. trismegistus was the greek name of the egyptian god thoth, who was regarded as the originator of egyptian culture, the god of religion, of writing, and of the arts and sciences. under his name there existed forty-two sacred books, kept by the egyptian priests.',\n", + " 'p. 177, l. 3. quis mihi, etc.—numbers xi, 29. quis tribuat ut omnis populus prophetet?',\n", + " 'p. 177, l. 25. maccabees.—2 macc. xi, 2.',\n", + " 'p. 177, l. 7. this book, etc.—is. xxx, 8.',\n", + " 'p. 178, l. 9. tertullian.—a christian writer in the second century after christ. the quotation is from his de cultu femin., ii, 3.',\n", + " 'p. 178, l. 16. (θεὸς), etc.—eusebius, hist., lib. v, c. 8.',\n", + " 'p. 178, l. 22. and he took that from saint irenæus.—hist., lib. x, c 25.',\n", + " 'p. 179, l. 5. the story in esdras.—2 esdras xiv. god appears to esdras in a bush, and orders him to assemble the people and deliver the message. esdras replies that the law is burnt. then god commands him to take five scribes to whom for forty days he dictates the ancient law. this story conflicted with many passages in the prophets, and was therefore rejected from the canon at the council of trent.',\n", + " 'p. 181, l. 14. the kabbala.—the fantastic secret doctrine of interpretation of scripture, held by a number of jewish rabbis.',\n", + " 'p. 181, l. 26. ut sciatis, etc.—mark ii, 10, 11.',\n", + " 'p. 183, l. 29. this generation, etc.—matthew xxiv, 34.',\n", + " 'p. 184, l. 11. difference between dinner and supper.—luke xiv, 12.',\n", + " 'p. 184, l. 28. the six ages, etc.—m. havet has traced this to a chapter in st. augustine, de genesi contra manichæos, i, 23.',\n", + " 'p. 184, l. 31. forma futuri.—romans v, 14.',\n", + " 'p. 186, l. 13. the messiah, etc.—john xii, 34.',\n", + " 'p. 186, l. 30. if the light, etc.—matthew vi, 23.',\n", + " 'p. 187, l. 1. somnum suum.—ps. lxxvi, 5.',\n", + " 'p. 187, l. 1. figura hujus mundi.—1 cor. vii, 31.',\n", + " 'p. 187, l. 2. comedes panem tuum.—deut. viii, 9. panem nostrum, luke xi, 3.',\n", + " 'p. 187, l. 3. inimici dei terram lingent.—ps. lxxii, 9.',\n", + " 'p. 187, l. 8. cum amaritudinibus.—exodus xii, 8. the vulgate has cum lacticibus agrestibus.',\n", + " 'p. 187, l. 9. singularis sum ego donec transeam.—ps. cxli, 10.',\n", + " 'p. 188, l. 19. saint paul.—galatians iv, 24; i cor. iii, 16, 17; hebrews ix, 24; romans ii, 28, 29.',\n", + " 'p. 188, l. 25. that moses, etc.—john vi, 32.',\n", + " 'p. 189, l. 3. for one thing alone is needful.—luke x, 42.',\n", + " 'p. 189, l. 15. and the christians, etc.—romans vi, 20; viii, 14, 15.',\n", + " 'p. 189, l. 17. when saint peter, etc.—acts xv. see genesis xvii, 10; leviticus xii, 3.',\n", + " 'p. 189, l. 27. fac secundum, etc.—exodus xxv, 40.',\n", + " 'p. 190, l. 1. saint paul.—1 tim. iv, 3; 1 cor. vii.',\n", + " 'p. 190, l. 7. the jews, etc.—hebrews viii, 5.',\n", + " 'p. 192, l. 15. that he should destroy death through death.— hebrews ii, 14.',\n", + " 'p. 192, l. 30. veri adoratores.—john iv, 23.',\n", + " 'p. 192, l. 30. ecce agnus, etc.—john i, 29.',\n", + " 'p. 193, l. 15. ye shall be free indeed.—john viii, 36.',\n", + " 'p. 193, l. 17. i am the true bread from heaven.—ibid., vi, 32.',\n", + " 'p. 194, l. 27. agnus occisus, etc.—apoc. xiii, 8.',\n", + " 'p. 194, l. 34. sede a dextris meis.—ps. cx, 1.',\n", + " 'p. 195, l. 12. a jealous god.—exodus xx, 5.',\n", + " 'p. 195, l. 14. quia confortavit seras.—ps. cxlvii, 13.',\n", + " 'p. 195, l. 17. the closed mem.—the allusions here are to certain peculiarities in jewish writing. there are some letters written in two ways, closed or open, as the mem.',\n", + " 'p. 199, l. 1. great pan is dead.—plutarch, de defect. orac., xvii.',\n", + " 'p. 199, l. 2. susceperunt verbum, etc.—acts xvii, 11.',\n", + " 'p. 199, l. 20. the ruler taken from the thigh.—genesis xlix, 10.',\n", + " 'p. 208, l. 6. make their heart fat.—is. vi, 10; john xii, 40.',\n", + " 'p. 209, l. 1. non habemus regem nisi cæsarem.—john xix, 15.',\n", + " 'p. 218, l. 17. in horeb, etc.—deut. xviii, 16-19.',\n", + " 'p. 220, l. 34. then they shall teach, etc.—jeremiah xxxi, 34.',\n", + " 'p. 221, l. 1. your sons shall prophesy.—joel ii, 28.',\n", + " 'p. 221, l. 20. populum, etc.—is. lxv, 2; romans x, 21.',\n", + " 'p. 222, l. 25. eris palpans in meridie.—deut. xxviii, 29.',\n", + " 'p. 222, l. 26. dabitur liber, etc.—is. xxix, 12. the quotation is inaccurate.',\n", + " 'p. 223, l. 24. quis mihi, etc.—job xix, 23-25.',\n", + " \"p. 224, l. 1. pray, etc.—the fragments here are pascal's notes on luke. see chaps. xxii and xxiii.\",\n", + " 'p. 225, l. 20. excæca.—is. vi, 10.',\n", + " 'p, 226, l. 9. lazarus dormit, etc.—john xi, 11, 14.',\n", + " 'p. 226, l. 10. the apparent discrepancy of the gospels.—to reconcile the apparent discrepancies in the gospels, pascal wrote a short life of christ.',\n", + " 'p. 227, l. 13. gladium tuum, potentissime.—ps. xlv, 3.',\n", + " 'p. 228, l. 25. ingrediens mundum.—hebrews x, 5.',\n", + " 'p. 228, l. 26. stone upon stone.—mark xiii, 2.',\n", + " 'p. 229, l. 20. jesus christ at last, etc.—see mark xii.',\n", + " 'p. 230, l. 1. effundam spiritum meum.—joel ii, 28.',\n", + " 'p. 230, l. 6. omnes gentes ... eum.—ps. xxii, 27.',\n", + " 'p. 230, l. 7. parum est ut, etc.—is. xlix, 6.',\n", + " 'p. 230, l. 7. postula a me.—ps. ii, 8.',\n", + " 'p. 230, l. 8. adorabunt ... reges.—ps. lxxii, 11.',\n", + " 'p. 230, l. 8. testes iniqui.—ps. xxv, 11.',\n", + " 'p. 230, l. 8. dabit maxillam percutienti.—lamentations iii, 30.',\n", + " 'p. 230, l. 9. dederunt fel in escam.—ps. lxix, 21.',\n", + " 'p. 230, l. 11. i will bless them that bless thee.—genesis xii, 3.',\n", + " 'p. 230, l. 12. all nations blessed in his seed.—ibid., xxii, 18.',\n", + " 'p. 230, l. 13. lumen ad revelationem gentium.—luke ii, 32.',\n", + " 'p. 230, l. 14. non fecit taliter, etc.—ps. cxlvii, 20.',\n", + " 'p. 230, l. 20. bibite ex hoc omnes.—matthew xxvi, 27.',\n", + " 'p. 230, l. 22. in quo omnes peccaverunt.—romans v, 12.',\n", + " 'p. 230, l. 26. ne timeas pusillus grex.—luke xii, 32.',\n", + " 'p. 230, l. 29. qui me, etc.—matthew x, 40.',\n", + " 'p. 230, l. 32. saint john.—luke i, 17.',\n", + " 'p. 230, l. 33. jesus christ.—ibid., xii, 51.',\n", + " 'p. 231, l. 5. omnis judæa, etc.—mark i, 5.',\n", + " 'p. 231, l. 7. from these stones, etc.—matthew iii, 9.',\n", + " 'p. 231, l. 9. ne convertantur, etc.—mark iv, 12.',\n", + " 'p. 231, l. 11. amice, ad quid venisti?—matthew xxvi, 50.',\n", + " 'p. 231, l. 31. what is a man, etc.—luke ix, 25.',\n", + " 'p. 231, l. 32. whosoever will, etc.—ibid., 24.',\n", + " 'p. 232, l. 1. i am not come, etc.—matthew v, 17.',\n", + " 'p. 232, l. 2. lambs took not, etc.—see john i, 29.',\n", + " 'p. 232, l. 4. moses.—ibid., vi, 32; viii, 36.',\n", + " 'p. 232, l. 15. quare, etc.—ps. ii, 1, 2.',\n", + " 'p. 233, l. 8. i have reserved me seven thousand.—1 kings xix, 18.',\n", + " 'p. 234, l. 27. archimedes.—the founder of statics and hydrostatics. he was born at syracuse in 287 b.c., and was killed in 212 b.c. he was not a prince, though a relative of a king. m. havet points out that cicero talks of him as an obscure man (tusc, v, 23).',\n", + " 'p. 235, l. 33. in sanctificationem et in scandalum.—is. viii, 14.',\n", + " 'p. 238, l. 11. jesus christ.—mark ix, 39.',\n", + " 'p. 239, l. 7. rejoice not, etc.—luke x, 20.',\n", + " 'p. 239, l. 12. scimus, etc.—john iii, 2.',\n", + " 'p. 239, l. 25. nisi fecissem ... haberent.—ibid., xv, 24.',\n", + " 'p. 239, l. 32. the second miracle.—ibid., iv, 54.',\n", + " 'p. 240, l. 6. montaigne.—essais, ii, 26, and iii, 11.',\n", + " 'p. 242, l. 9. vatable.—professor of hebrew at the collège royal, founded by francis i. an edition of the bible with notes under his name, which were not his, was published in 1539.',\n", + " 'p. 242, l. 19. omne regnum divisum.—matthew xii, 25; luke xi, 17.',\n", + " 'p. 242, l. 23. si in digito ... vos.—luke xi, 20.',\n", + " \"p. 243, l. 12. q. 113, a. 10, ad. 2.—thomas aquinas's summa, pt. i, question 113, article 10, reply to the second objection.\",\n", + " 'p. 243, l. 18. judæi signa petunt, etc.—i cor. i, 22.',\n", + " 'p. 243, l. 23. sed vos, etc.—john x, 26.',\n", + " 'p. 246, l. 15. tu quid dicis? etc.—john ix, 17, 33.',\n", + " 'p. 247, l. 14. though ye believe not, etc.—john x, 38.',\n", + " 'p. 247, l. 25. nemo facit, etc.—mark ix, 39.',\n", + " \"p. 247, l. 27. a sacred relic.—this is a reference to the miracle of the holy thorn. marguerite périer, pascal's niece, was cured of a fistula lachrymalis on 24 march, 1656, after her eye was touched with this sacred relic, supposed to be a thorn from the crown of christ. this miracle made a great impression upon pascal.\",\n", + " 'p. 248, l. 23. these nuns.—of port-royal, as to which, see note on page 110, line 16, above. they were accused of calvinism.',\n", + " 'p. 248, l. 28. vide si, etc.—ps. cxxxix, 24.',\n", + " 'p. 249, l. 1. si tu, etc.—luke xxii, 67.',\n", + " 'p. 249, l. 2. opera quæ, etc.—john v, 36; x, 26-27.',\n", + " 'p. 249, l. 7. nemo potest, etc.—john iii, 2.',\n", + " 'p. 249, l. 11. generatio prava, etc.—matthew xii, 39.',\n", + " 'p. 249, l. 14. et non poterat facere.—mark vi, 5.',\n", + " 'p. 249, l. 16. nisi videritis, non creditis.—john iv, 8, 48.',\n", + " 'p. 249, l. 23. tentat enim, etc.—deut. xiii, 3.',\n", + " 'p. 249, l. 25. ecce prædixi vobis: vos ergo videte.—matthew xxiv, 25, 26.',\n", + " 'p. 250, l. 7. we have moses, etc.—john ix, 29.',\n", + " 'p. 250, l. 30. quid debui.—is. v, 3, 4. the vulgate is quis est quod debui ultra facere vineæ meæ, et non feci ei.',\n", + " 'p. 251, l. 12. bar-jesus blinded.—acts xiii, 6-11.',\n", + " 'p. 251, l. 14. the jewish exorcists.—ibid., xix, 13-16.',\n", + " 'p. 251, l. 18. si angelus.—galatians i, 8.',\n", + " 'p. 252, l. 10. an angel from heaven.—see previous note.',\n", + " 'p. 252, l. 14. father lingende.—claude de lingendes, an eloquent jesuit preacher, who died in 1660.',\n", + " 'p. 252, l. 33. ubi est deus tuus?—ps. xiii, 3.',\n", + " 'p. 252, l. 34. exortum est, etc.—ps. cxii, 4.',\n", + " 'p. 253, l. 6. saint xavier.—saint françois xavier, the friend of ignatius loyola, became a jesuit.',\n", + " 'p. 253, l. 9. væ qui, etc.—is. x, i.',\n", + " 'p. 253, l. 24. the five propositions.—see preface.',\n", + " 'p. 253, l. 36. to seduce, etc.—mark xiii, 22.',\n", + " 'p. 254, l. 6. si non fecissem.—john xv, 24.',\n", + " 'p. 255, l. 11. believe in the church.—matthew xviii, 17-20.',\n", + " 'p. 257, l. 14. they.—the jansenists, who believed in the system of evangelical doctrine deduced from augustine by cornelius jansen (1585-1638), the bishop of ypres. they held that interior grace is irresistible, and that christ died for all, in reaction against the ordinary catholic dogma of the freedom of the will, and merely sufficient grace.',\n", + " 'p. 258, l. 4. a time to laugh, etc.—eccles. iii, 4.',\n", + " 'p. 258, l. 4. responde. ne respondeas.—prov. xxvi, 4, 5.',\n", + " 'p. 260, l. 3. saint athanasius.—patriarch of alexandria, accused of rape, of murder, and of sacrilege. he was condemned by the councils of tyre, aries, and milan. pope liberius is said to have finally ratified the condemnation in a.d. 357. athanasius here stands for jansenius, saint thersea for mother angélique, and liberius for clement ix.',\n", + " 'p. 261, l. 17. vos autem non sic.—luke xxii, 26.',\n", + " 'p. 261, l. 23. duo aut tres in unum.—john x, 30; first epistle of st. john, v, 8.',\n", + " 'p. 262, l. 18. the fronde.—the party which rose against mazarin and the court during the minority of louis xiv. they led to civil war.',\n", + " 'p. 262, l. 25. pasce oves meas.—john xxi, 17.',\n", + " 'p. 263, l. 14. jeroboam.—i kings xii, 31.',\n", + " 'p. 265, l. 21. the servant, etc.—john xv, 15.',\n", + " 'p. 266, l. 4. he that is not, etc.—matthew xii, 30.',\n", + " 'p. 266, l. 5. he that is not, etc.—mark ix, 40.',\n", + " 'p. 266, l. 11. humilibus dot gratiam.—james iv, 6.',\n", + " 'p. 266, l. 12. sui eum non, etc.—john i, 11, 12.',\n", + " 'p. 266, l. 33. we will be as the other nations.—i sam. viii, 20.',\n", + " 'p. 268, l. 19. vince in bono malum.—romans xii, 21.',\n", + " 'p. 268, l. 26. montalte.—see note on page 6, line 30, above.',\n", + " 'p. 269, l. 11. probability.—the doctrine in casuistry that of two probable views, both reasonable, one may follow his own inclinations, as a doubtful law cannot impose a certain obligation. it was held by the jesuits, the famous religious order founded in 1534 by ignatius loyola. this section of the pensées is directed chiefly against them.',\n", + " 'p. 269, l. 22. coacervabunt sibi magistros.—2 tim. iv, 3.',\n", + " 'p. 270, l. 3. these.—the writers of port-royal.',\n", + " 'p. 270, l. 15. the society.—the society of jesus.',\n", + " 'p. 271, l. 15. digna necessitas.—book of wisdom xix, 4.',\n", + " 'chapter i',\n", + " 'the origins of the vampire',\n", + " 'throughout the whole vast shadowy world of ghosts and demons there is no figure so terrible, no figure so dreaded and abhorred, yet dight with such fearful fascination, as the vampire, who is himself neither ghost nor demon, but yet who partakes the dark natures and possesses the mysterious and terrible qualities of both. around the vampire have clustered the most sombre superstitions, for he is a thing which belongs to no world at all; he is not a demon, for the devils have a purely spiritual nature, they are beings without any body, angels, as is said in s. matthew xxv. 41, \"the devil and his angels.\" and although s. gregory writes of the word angel, \"nomen est officii, non naturae,\"--the designation is that of an office not of a nature, it is clear that all angels were in the beginning created good in order to act as the divine messengers (ἄγγελοι), and that afterwards the fallen angels lapsed from their original state. the authoritative teaching of the fourth lateran council under innocent iii in 1215, dogmatically lays down: \"diabolus enim et alii daemones a deo quidem natura creati sunt boni, sed ipsi per se facti sunt mali.\" and it is also said, job iv. 18: \"ecce qui seruiunt ei, non sunt stabiles, et in angelis suis reperit prauitatem.\" (behold they that serve him are not steadfast, and in his angels he found wickedness.)',\n", + " 'john heinrich zopfius in his dissertatio de uampiris seruiensibus, halle, 1733, says: \"vampires issue forth from their graves in the night, attack people sleeping quietly in their beds, suck out all their blood from their bodies and destroy them. they beset men, women and children alike, sparing neither age nor sex. those who are under the fatal malignity of their influence complain of suffocation and a total deficiency of spirits, after which they soon expire. some who, when at the point of death, have been asked if they can tell what is causing their decease, reply that such and such persons, lately dead, have arisen from the tomb to torment and torture them.\" scoffern in his stray leaves of science and folk lore writes: \"the best definition i can give of a vampire is a living, mischievous and murderous dead body. a living dead body! the words are idle, contradictory, incomprehensible, but so are vampires.\" horst, schriften und hypothesen über die vampyren, (zauberbibliothek, iii) defines a vampire as \"a dead body which continues to live in the grave; which it leaves, however, by night, for the purpose of sucking the blood of the living, whereby it is nourished and preserved in good condition, instead of becoming decomposed like other dead bodies.\"',\n", + " 'a demon has no body, although for purposes of his own he may energize, assume, or seem to assume a body, but it is not his real and proper body. so the vampire is not strictly a demon, although his foul lust and horrid propensities be truly demoniacal and of hell.',\n", + " 'neither may the vampire be called a ghost or phantom, strictly speaking, for an apparition is intangible, as the latin poet tells us:',\n", + " 'par leuibus uentis uolucrique simillima somno.',\n", + " 'and upon that first easter night when jesus stood in the midst of his disciples and they were troubled and frightened, supposing they had seen a spirit, he said: \"uidete manus meas, et pedes, quia ego ipse sum: palpate, et uidete: quia spiritus carnem, et ossa non habet, sicut ne uidetis habere.\" (see my hands and feet, that it is i myself; handle and see: for a spirit hath not flesh and bone, as you see me to have.)',\n", + " 'there are, it is true, upon record some few instances when persons have been able to grasp, or have been grasped by and felt the touch of, a ghost, but these phenomena must be admitted as exceptions altogether, if indeed, they are not to be explained in some other way, as for example, owing to the information of a body by some spirit or familiar under very rare and abnormal conditions.',\n", + " \"in the case of the very extraordinary and horrible hauntings of the old darlington and stockton station, mr. james durham, the night-watchman, when one winter evening in the porter's cellar was surprised by the entry of a stranger followed by a large black retriever. this visitor without uttering a word dealt him a blow and he had the impression of a violent concussion. naturally he struck back with his fist which seemed however to pass through the figure and his knuckles were grazed against the wall beyond. none the less the man uttered an unearthly squeak at which the dog gripped mr. durham in the calf of the leg causing considerable pain. in a moment the stranger had called off the retriever by a curious click of the tongue, and both man and animal hurried into the coal-house whence there was no outlet. a moment later upon examination neither was to be seen. it was afterwards discovered that many years before an official who was invariably accompanied by a large black dog had committed suicide upon the premises, if not in the very cellar, where at least his dead body had been laid. the full account with the formal attestation dated 9th december, 1890, may be read in w. t. stead's real ghost stories, reprint, grant richards, 1897, chapter xi, pp. 210-214.\",\n", + " 'major c. g. macgregor of donaghadee, county down, ireland, gives an account of a house in the north of scotland which was haunted by an old lady, who resided there for very many years and died shortly after the beginning of the nineteenth century. several persons who slept in the room were sensibly pushed and even smartly slapped upon the face. he himself on feeling a blow upon the left shoulder in the middle of the night turned quickly and reaching out grasped a human hand, warm, soft, and plump. holding it tight he felt the wrist and arm which appeared clothed in a sleeve and lace cuff. at the elbow all trace ceased, and in his astonishment he released the hand. when a light was struck nobody could be seen in the room.',\n", + " \"in a case which occurred at a cottage in girvan, south ayrshire, a young woman lost her brother, a fisher, owing to the swamping of his boat in a storm, when the body was recovered it was found that the right hand was missing. this occasioned the poor girl extraordinary sorrow, but some few nights later when she was undressing, preparatory to bed, she suddenly uttered a piercing shriek which immediately brought the other inmates of the house to her room. she declared that she had felt a violent blow dealt with an open hand upon her shoulder. the place was examined, and distinctly marked in livid bruises there was seen the impression of a man's right hand.\",\n", + " 'andrew lang in his dreams and ghosts (new edition, 1897), relates the story of \"the ghost that bit,\" which might seem to have been a vampire, but which actually cannot be so classed since vampires have a body and their craving for blood is to obtain sustenance for their body. the narrative is originally to be found in notes and queries, 3rd september 1864, and the correspondent asserts that he took it \"almost verbatim from the lips of the lady\" concerned, a person of tried veracity. emma s------ was asleep one morning in her room at a large house near cannock chase. it was a fine august day in 1840, but although she had bidden her maid call her at an early hour she was surprised to hear a sharp knocking upon her door about 3.30. in spite of her answer the taps continued, and suddenly the curtains of her bed were slightly drawn, when to her amaze she saw the face of an aunt by marriage looking through upon her. half unconsciously she threw out her hand, and immediately one of her thumbs was sensibly premed by the teeth of the apparition. forthwith she arose, dressed, and went downstairs, where not a creature was stirring. her father upon coming down rallied her a little upon being about at cockcrow and inquired the cause. when she informed him he determined that later in the day he would pay a visit to his sister-in-law who dwelt at no great distance. this he did, only to discover that she had unexpectedly died at about 3.30 that morning. she had not been in any way ailing, and the shock was fearfully sudden. on one of the thumbs of the corpse was found a mark as if it had been bitten in the last agony.',\n", + " 'the disturbances at the lamb hostelry, lawford\\'s gate, bristol, which aroused something more than local interest in the years 1761-62, were not improbably due to witchcraft and caused by the persecutions of a woman who trafficked in occultism of the lowest order, although on the other hand they may have been poltergeist manifestations. the two little girls, molly and debby giles, who were the subjects of these phenomena, were often severely bitten and pinched. the impressions of eighteen or twenty teeth were seen upon their arms, the marks being clammy with saliva and warm spittle, \"and the children were roaring out for the pain of the pinches and bites.\" on one occasion whilst an observer was talking to dobby giles she cried out that she was bitten in the neck when there suddenly appeared \"the mark of teeth, about eighteen, and wet with spittle.\" that the child should have nipped herself was wholly impossible, and nobody was near her save mr. henry durbin who recorded these events, and whose account was first printed in 1800, the year after his death, since he did not wish his notes to be given to the public during his lifetime. on 2nd january, 1762, mr. durbin notes: \"dobby cried the hand was about her sister\\'s throat, and i saw the flesh at the side of her throat pushed in, whitish as if done with fingers, though i saw none. her face grew red and blackish presently, as if she was strangled, but without any convulsion or contraction of the muscles.\" thursday, 7th january, 1762, we have: \"dobby was bitten most and with deeper impressions than molly. the impression of the teeth on their arms formed an oval, which measured two inches in length.\" all this certainly looks as if sorcery were at work. it may be remembered that in salem during the epidemic of witchcraft the afflicted persons were tormented \"by biting, pinching, strangling, etc.\" when goodwife corey was on trial, \"it was observed several times, that if she did but bite her under lip in time of examination, the persons afflicted were bitten on their arms and wrists, and produced the marks before the magistrates, minister, and others.\"',\n", + " 'in the proceedings of the national laboratory of psychical research, vol. i., 1927, will be found an account of the phenomena connected with eleonore zügun, a young rumanian peasant girl, who in the autumn of 1926, when only thirteen years old was brought to london by the countess wassilko-serecki, in order that the manifestations might be investigated at \"the national laboratory of psychical research,\" queensberry place, south kensington. the child was said to be persecuted by some invisible force or agent, which she knew as dracu, anglice the devil. there were many extraordinary happenings and she was continually being scratched and bitten by this unseen intelligence. it must suffice to give but two or three instances of the very many \"biting phenomena.\" on the afternoon of monday, 4th october, 1926, captain neil gow an investigator in his report, notes: \"3.20. eleonore cried out. showed marks on back of left hand like teeth-marks which afterwards developed into deep weals. . . . 4.12. eleonore was just raising a cup of tea to her lips, but suddenly gave a cry and put the cup down hastily: there was a mark on her right hand similar to that caused by a bite. both rows of teeth were indicated.\" of the same incident, mr. clapham palmer, an investigator who was also present writes: \"eleonore was in the act of raising the cup to her lips when she suddenly gave a little cry of pain, put down her cup and rolled up her sleeve. on her forearm i then saw what appeared to be the marks of teeth indented deeply in the flesh, as if she or someone had fiercely bitten her arm. the marks turned from red to white and finally took the form of white raised weals. they gradually faded but were still noticeable after an hour or so.\" such bitings not infrequently occurred, and photographs have been taken of the marks.',\n", + " 'it were an interesting question to discuss the cause of these indentations and no doubt it is sufficiently remarkable, but however that may be such inquiry were impertinent here, for it is clearly not vampirism, nor indeed cognate thereto. the object of the vampire is to suck blood, and in these cases if blood was ever drawn it was more in the nature of a scratch or slight dental puncture, there was no effusion. again the agent who inflicted these bites was not sufficiently material to be visible, at any rate he was able to remain unseen. the true vampire is corporeal.',\n", + " 'the vampire has a body, and it is his own body. he is neither dead nor alive; but living in death. he is an abnormality; the androgyne in the phantom world; a pariah among the fiends.',\n", + " 'even the pagan poet taught his hearers and his readers that death was a sweet guerdon of repose, a blessed oblivion after the toil and struggle of life. there are few things more beautiful and there are few things more sad than the songs of our modern pagans who console their aching hearts with the wistful vision of eternal sleep. although perhaps they themselves know it not, their delicate but despairing melancholy is an heritage from the weary yet tuneful singers of the last days of hellas, souls for whom there was no dawn of hope in the sky. but we have a certain knowledge and a fairer surety for \"now christ is risen from the dead, the first-fruits of them that sleep.\" yet gray, half greek, seems to promise to his rustics and his hinds as their richest reward after life of swink and toil dear forgetfulness and eternal sleep. swinburne was glad:',\n", + " 'that no life lives for ever',\n", + " 'that dead men rise up never;',\n", + " 'that even the weariest river',\n", + " 'winds somewhere safe to sea.',\n", + " '. . . . .',\n", + " 'only the eternal sleep',\n", + " 'in an eternal night.',\n", + " 'emily brontë lusted for mere oblivion:',\n", + " 'oh, for the time when i shall sleep',\n", + " 'without identity.',\n", + " 'and never care how rain may steep,',\n", + " 'or snow may cover me!',\n", + " 'flecker in utter despair wails out:',\n", + " 'i know dead men are deaf, and cannot hear',\n", + " 'the singing of a thousand nightingales . . .',\n", + " 'i know dead men are blind and cannot see',\n", + " 'the friend that shuts in horror their big eyes,',\n", + " 'and they are witless--',\n", + " 'even more beautifully than the poets have sung, a weaver of exquisite prose has written: \"death must be so beautiful. to lie in the soft brown earth, with the grasses waving above one\\'s head, and listen to silence. to have no yesterday, and no to-morrow. to forget time.\" poor sorry souls! how arid, how empty are such aspirations when we think of the ardent glowing phrase of the little flower: \"je veux passer mon ciel à faire du bien sur la terre!\" and \"even in the bosom of the beatific vision the angels watch over us. no, i shall never be able to take any rest until the end of the world. but when the angel shall have said \\'time is no more,\\' then i shall rest, then i shall be able to rejoice, since the number of the elect will be complete.\"',\n", + " 'so we see that even for those who take the most pagan, the most despairing, the most erroneous views, the ideal is oblivion and rest. how fearful a destiny then is that of the vampire, who has no rest in the grave, but whose doom it is to come forth and prey upon the living. in the first place it may briefly be inquired how the belief in vampirism originated, and here it is not impertinent to remark that the careful investigations in connexion with psychic phenomena which have been so fruitful of recent years, and even modern scientific discovery, have proved the essential truth of many an ancient record and old superstition, which were until yesterday dismissed by the level-headed as the wildest sensationalism of melodramatic romance. the origins of a belief in vampirism, although, of course, very shadowy, unformed and unrelated, may probably be said to go back to the earliest times when primitive man observed the mysterious relations between soul and body. the division of an individual into these two parts must have been suggested to man by his observation, however crude and rough, of the phenomenon of unconsciousness, as exhibited in sleep and more particularly in death. he cannot but have speculated concerning that something, the loss of which withdraws man for ever from the living and waking world. he was bound to ask himself if there was any continuance in any circumstances at present veiled from, and unknown to, him of that life and that personality which had obviously passed elsewhere. the question was an eternal one, and it was, moreover, a personal one which concerned him most intimately, since it related to an experience he could not expect to escape. it was clear to him before long that the process called death was merely a passage to another world, and naturally enough he pictured that world as being very like the one he knew, only man would there enjoy extended powers over the forces with which he waged such ceaseless war for the mastery during his period on earth. it might be that the world was not so very far away, and it was not to be supposed that persons who had passed over would lose their interest in and affection for those who for a little while had been left behind. relations must not be forgotten just because they did not happen to be visibly present, any more than to-day we forget one of the family who has gone on a voyage for a week or a month or a year. naturally those whose age and position during their lifetime had entitled them to deference and respect must be treated with the same consideration, nay, with even more ample honours since their authority had become mysteriously greater and they would be more active to punish any disrespect or neglect. hence as a family venerated the father of the house both in life and after death, which was the germ of ancestral worship, so the tribe would venerate the great men, the chieftains and the heroes, whose exploits had won so much not only for their own particular houses, but for the whole clan. the shilluk, a tribe who dwell upon the western bank of the white nile, and who are governed by a single king, still maintain the worship of nyakang, the hero who founded the dynasty and settled this people in their present territory. nyakang is conceived as having been a man, although he did not actually die but vanished from sight. yet he is not altogether divine, for the great god of the shilluk, the creator of mankind and the world, juok, is without form, invisible and omnipresent. he is far greater than and far above nyakang, and he reigns in those highest heavens where neither the prayers of man can reach his ears, nor can he smell the sweet savour of sacrifice.',\n", + " 'not only nyakang, but each of the shilluk kings after death is worshipped, and the grave of the monarch becomes a sanctuary, so that throughout the villages there are many shrines tended by certain old men and old women, where a ritual which is practically identical in each separate place is elaborately conducted. indeed, the principal element in the religion of the shilluk may be said to be the veneration of their dead kings.',\n", + " 'other african tribes also worship their dead kings. the baganda, whose country uganda lies at the actual source of the nile, think of their dead kings as being equal to the gods, and the temples of the deceased monarchs are built and maintained with the utmost care. formerly when a king died hundreds of men were killed so that their spirits might attend upon the spirit of their master, and what is very significant as showing that these people believe the king and his ghostly followers could return in forms sufficiently corporeal to perform the very material function of eating is that on certain solemn days at earliest dawn the sacred tomtom is beaten at the temple gates and crowds of worshippers bring baskets of food for the dead king and his followers lest being hungry he should become angered and punish the whole tribe.',\n", + " 'in kiziba, which lies on the western side of the lake victoria nyanza, the religion of the natives consists of the worship of their dead kings, although there is a supreme god rugada, who created the world, man and beasts, but even their hierarchs know little about him and he receives no sacrifice, the business of the priests being to act as intermediaries between the people and the dead monarchs.',\n", + " 'so the bantu tribes of northern rhodesia acknowledge a supreme deity, leza, whose power is manifested in the storm, in the torrential rain clouds, in the roar of thunder and the flash of lightning, but to whom there is no direct access by prayer or by sacrifice. the gods, then, whom these tribes worship are sharply divided into two classes, the spirits of departed chiefs, who are publicly venerated by the whole tribe, and the spirits of relations who are privately honoured by a family, whose head performs the sacerdotal functions upon these occasions. \"among the awemba there is no special shrine for these purely family spirits, who are worshipped inside the hut, and to whom family sacrifices of a sheep, a goat, or a fowl is made, the spirit receiving the blood spilt upon the ground, while all the members of the family partake of the flesh together. for a religious wemba man the cult of the spirit of his nearest relations (of his grandparents, or of his deceased father, mother, elder brother or maternal uncle) is considered quite sufficient. out of these spirit relatives a man will worship one whom he considers as a special familiar, for various reasons. for instance, the diviner may have told him that his last illness was caused because he had not respected the spirit of his uncle; accordingly he will be careful in the future to adopt his uncle as his tutelary spirit. as a mark of such respect he may devote a cow or a goat to one of the spirits of his ancestors.\" this custom is very significant, and two points should be especially noted. the first is that the deceased, or the spirit of the deceased, is not merely propitiated by, but partakes of, blood, which is spilt for his benefit. secondly, the deceased, if not duly honoured, can cause illness, and therefore is capable of exercising a certain vengeful or malevolent power. the essential conception that underlies these customs is not so very far removed from the tradition of a vampire who craves to suck blood and causes sickness through his malignancy.',\n", + " 'very similar ideas prevail among the herero, a bantu tribe of german south-west africa, who believe that ndjambi karunga, the great good god who dwells in heaven above is far too remote to be accessible, wherefore he neither receives nor requires worship and offerings. \"it is their ancestors (ovakuru) whom they must fear; it is they who are angry and can bring danger and misfortune on a man . . . it is in order to win and keep their favour, to avert their displeasure and wrath, in short to propitiate them, that the herero bring their many offerings; they do so not out of gratitude, but out of fear, not out of love, but out of terror.\" the rev. g. viehe, a missionary among the tribe writes: \"the religious customs and ceremonies of the ovaherero are all rooted in the presumption that the deceased continue to live, and that they have a great influence on earth, and exercise power over the life and death of man.\"',\n", + " 'the religion of the ovambo, another bantu tribe of german south-west africa, runs on practically the same lines. the supreme being, kalunga, the creator, desires neither adoration nor fear. the whole religion is the worship, or rather the propitiation, of the spirits of the dead. every man at death leaves behind him a phantom form which continues a certain kind of life (not very clearly defined) upon earth, and this spirit has power over the living. especially may it cause various kinds of sickness. the spirits of private persons can only exert their influence over the members of their own families; the souls of chiefs and great warriors have a much wider scope, they can influence the whole clan for weal or woe; they can even to some extent control the powers of nature and ensure a bountiful corn-crop by their careful provision of rain, since under their kindly direction there shall be neither too little nor too great an abundance. moreover, they can ward off disease, but if on the other hand they be offended they can visit the tribe with pestilence and famine. it may be particularly noted that among the ovambo the phantoms of dead magicians are dreaded and feared in no ordinary manner. the only way to prevent the increase of these dangerous spirit folk is by depriving the body of its limbs, a precaution which must be taken immediately after death. so it is customary to sever the arms and legs from the trunk and to cut the tongue out of the mouth, in order that the spirit may have no power either of movement or of speech, since the mutilation of the corpse has rendered a ghost, who would assuredly be both powerful and truculent, inoperative and incapable. it will later be seen that the mutilation, the cutting off of the head, and especially the driving of a stake through the body with other dismemberments, were resorted to as the most effective means, short of complete cremation, of dealing with a vampire, whilst according to theosophists only those become vampires who have during their lifetime been adepts in black magic, and miss jessie adelaide middleton says that the people who become vampires are witches, wizards and suicides.',\n", + " 'canon callaway has recorded some very interesting details of amatongo or ancestor worship among the zulus. a native account runs as follows: \"the black people do not worship all amatongo indifferently, that is, all the dead of their tribes. speaking generally, the head of each house is worshipped by the children of that house; for they do not know the ancients who are dead, nor their laud-giving names, nor their names. but their father whom they knew is the head by whom they begin and end in their prayer, for they know him best, and his love for his children; they remember his kindness to them whilst he was living, they compare his treatment of them whilst he was living, support themselves by it and say, \\'he will still treat us in the same way now he is dead. we do not know why he should regard others besides us; he will regard us only.\\' so it is then although they worship the many amatongo of their tribe, making a great fence around them for their protection; yet their father is far before all others when they worship the amatongo. their father is a great treasure to them even when he is dead.\" it would appear that among the zulus the spirits of those who are recently deceased, especially the fathers and mothers of families, are most generally venerated and revered. as is natural, the spirits of the remoter dead are forgotten, for time passes and their memory perishes when those who knew them and sang their praises follow them into the world beyond. as we have remarked, in nearly every case we find recognized the existence of a supreme being, who is certainly a high spiritual power that had never been a man, and the homage paid to whom (in those very rare instances where such worship is conceived of as desirable or even possible) differs entirely from the cult of the dead, be they family ancestors or some line of ancient kings. there are, of course, many other gods in the african pantheon, and although the natives will not allow that these were ever men, and indeed sharply differentiate in ritual practice their worship from the cult of the spirits and phantoms, yet in nearly all cases it is to be suspected, and in many cases it is certain, that these gods were heroes of old whose legend instead of becoming faint with years and dying away grew more and more splendid until the monarch or the warrior passed into pure deity. a similar process holds forth in heathen religions the wide world over. and with regard to the baganda polytheism the rev. j. roscoe remarks \"the principal gods appear to have been at one time human beings, noted for their skill and bravery, who were afterwards deified by the people and invested with supernatural powers.\"',\n", + " 'it is said that the caffres believe that men of evil life after death may return during the night in corporeal form and attack the living, often wounding and killing them. it seems that these revenants are much attracted by blood which enables them more easily to effect their purpose, and even a few red drops will help to vitalize their bodies. so a caffre has the greatest horror of blood, and will never allow even a spot fallen from a bleeding nose or a cut to lie uncovered, but should it stain the ground it must be instantly hidden with earth, and if it splotch upon their bodies they must purify themselves from the pollution with elaborate lustral ceremonies.',\n", + " 'there are, indeed, few if any peoples who have not realized the mysterious significance attached to blood, and examples of this belief are to be found in the history of every clime. it is expressed by the chinese writers on medicine; it was held by the arabs, and it is prominent among the traditions of the romans. even with regard to animals the soul or life of the animal was in the blood, or rather actually was the blood. so we have the divine command, leviticus xvii. 10-14: \"homo quilibet de domo israel, et de aduenis qui peregrinantur inter eos, si comederit sanguinem, obfirmabo faciem meam contra animam illius, et dispertam eam de populo suo. quia anima carnis in sanguine est: et ego dedi illum uobis, ut super altare in eo expietis pro animabus uestris, et sanguis pro animae piaculo sit. idcirco dixi filiis israel: omnis anima ex uobis non comedet sanguinem, nec ex aduenis, qui peregrinantur apud uos. homo quicumque ex filiis israel, et de aduenis, qui peregrinantur apud uos, si uenatione atque aucupio ceperit feram uel auem, quibus esci licitum est, fundat sanguinem eius, et operiat illum terra. anima enim omnis carnis in sanguine est: unde dixi filiis israel: sanguinem uniuersae carnis non comedetis, quia anima carnis in sanguine est: et quicumque comederit illum, interibit.\" (if any man whosoever of the house of israel, and of the strangers that sojourn among them, eat blood i will set my face against his soul, and will cut him off from among his people: because the life of the flesh is in the blood: and i have given it to you, that you may make atonement with it upon the altar for your souls, and the blood may be for an expiation for the soul. therefore i have said to the children of israel: no soul of you, nor of the strangers that sojourn among you, shall eat blood. any man whatsoever of the children of israel, and of the strangers that sojourn among you, if by hunting or by fowling, he take a wild beast or a bird, which is lawful to eat, let him pour out its blood, and cover it with earth. for the life of all flesh is in the blood: therefore i said to the children of israel: you shall not eat the blood of any flesh at all, because the life of the flesh is in the blood, and whosoever eateth it, shall be cut off.) the hebrew word which is translated \"life\" in this passage and particularly in the phrase \"because the life of the flesh is in the blood,\" also signifies \"soul,\" and the revised version has a marginal note: \"heb. soul.\" since then the very essence of life, and even more, the spirit or the soul in some mysterious way lies in the blood we have a complete explanation why the vampire should seek to vitalize and rejuvenate his own dead body by draining the blood from the veins of his victims.',\n", + " 'it will be remembered that in a famous necromantic passage in the odyssey, when ulysses calls up the ghosts from the underworld, in order that they may recover the power of speech, he has to dig deep a trench and therein pour the blood of sacrifice, black rams, and it is only after they have quaffed their fill of this precious liquor that the phantoms may converse with him and enjoy something of their human powers and mortal faculties.',\n", + " 'among the many references to funereal customs and the rites of mourning in holy writ there is one which has a very distinct bearing upon this belief that blood might benefit the deceased. the prophet jeremias in fortelling the utter ruin of the jews and the complete desolation of their land says: \"et morientur grandes, et parui in terra ista: non sepelientur neque plangentur, et non se incident, neque caluitium fiet pro eis.\" (both the great and little shall die in this land; they shall not be buried nor lamented, and men shall not cut themselves, nor make themselves bald for them.) and again the same prophet tells us that after the jews had been carried away in captivity of babylon: \"uenerunt uiri de sichem et de silo, et de samaria octoginta uiri: rasi barba, et scissis uestibus et squallentes: et munera, et thus habebant in manu, ut offerrent in domo domini.\" the word \"squallentes\" which the douai version renders \"mourning\" is translated by the authorised version as \"having cut themselves\" and the same rendering is given in the revised version. these customs of shaving part of the head and the beard which is referred to in the words \"nor make themselves bald for them\" and more particularly the practice of cutting or wounding the body in token of mourning were strictly forbidden as savouring of heathenish abuse. thus in leviticus xix. 28, we read: \"et super mortuo non incidetis carnem uestrum, neque figuras aliquas, aut stigmata facietis uobis. ego dominus.\" (you shall not make any cuttings in your flesh, for the dead, neither shall you make in yourselves any figures or marks: i am the lord.) and again (xxi. 5) the same command with regard to mourning is enforced: \"non radent caput, nec barbam, neque in carnibus suis facient incisuras.\" (neither shall they shave their head, nor their beard, nor make incisions in their flesh.) s. jerome, however, tells us that the custom persisted. for he says in his commentary on jeremias, xvi. 6, which may be dated 415-420: \"mos hic fuit apud ueteres, et usque hodie in quibusdam permanet iudaeorum, ut in luctibus incidant lacertos, et caluitium faciant, quod iob fecisse legimus.\" and yet these observances had been, as we saw, most sternly forbidden, nay, and that most emphatically and more than once. thus in deuteronomy they are sternly reprobated as smacking of the grossest superstition: \"non comedetis cum sanguine. non augurabimini, nec obseruabitis somnia. neque in rotundum attondebitis comam: nec radetis barbam. et super mortuo non incidetis carnem uestram, neque figuras aliquas, aut stigmata facietis uobis. ego dominus.\" (you shall not eat with blood. you shall not divine nor observe dreams. nor shall you cut your hair round-wise: nor shave your beard. you shall not make any cuttings in your flesh, for the dead, neither shall you make in yourselves any figures or marks: i am the lord.) \"filii estote domini dei uestri: non uos incidetis, nec facietis, caluitium super mortuo. quoniam populus sanctus es domino deo tuo: et te elegit ut sis ei in populum peculiarem de cunctis gentibus, quae sunt super terram.\" (be ye children of the lord your god: you shall not cut yourselves, nor make any baldness for the dead; because thou art a holy people to the lord thy god: and he chose thee to be his peculiar people of all nations that are upon the earth.)',\n", + " 'presumably these two customs were thus sternly prohibited as largely borrowed by the jews from the pagan people around them, who might indeed as having no hope make such extravagant and even indecent exhibition of their mourning for the departed, but which practices would at the least be highly unbecoming in the chosen people of jehovah. assuredly, even if they go no deeper, these observances are tainted with such savagery and seem so degrading that it is not surprising to find ordinances among other peoples, for instance the code of solon at athens, forbidding mourners to wound and scratch their faces and persons. the laws of the ten tables also which were largely based on this earlier legislation do not permit women to tear and disfigure their faces during the funeral rites. these two customs, shaving the head and lacerating the face, are found the whole world over at all times and among all races. the former hardly concerns us here, but it is interesting to inquire into the idea which lay at the root of this \"cuttings in the flesh for the dead.\" this practice existed in antiquity among the assyrians, the arabs, the scythians and such peoples as the moabites, the philistines, and the phoenicians. jordanes tells us that attila was lamented, \"not with womanly wailing, empty coronach and tears, but with the blood of warriors and strong men.\" among many african tribes, among the polynesians of tahiti, the sandwich islands and the whole pacific archipelago; among the aborigines of australia, new zealand and tasmania; among the patagonians; among the indians of california and north america; as. among very many other races, mourning for the dead is always accompanied by the laceration of the body until blood freely flows, and it is even not unknown for relatives of the deceased to inflict terrible mutilations upon themselves, and he who is most pitiless and most barbarous is esteemed to show the greater honour and respect to the departed. the important point lies in the fact, that blood must be shed, and this appears to constitute some covenant with the dead, so that by freely bestowing what he requires they prevent him from returning to deprive them of it forcibly and in the most terrifying circumstances. if they are not willing to feed him with their blood he will come back and take it from them, so naturally it is believed to be far better to give without demur and gain the protection of the ghost, rather than to refuse what the phantom will inevitably seize upon in vengeance and in wrath.',\n", + " 'many australian tribes considered blood to be the best remedy for a sick and weakly person, and there is, of course, no small modicum of truth in the idea when we consider the scientific transfusion of blood as is practised in certain cases by doctors at the present time, a remedy of which there are many examples in the middle ages and in later medicine. bonney, the australian traveller, tells us that among certain tribes on the darling river in new south wales, \"a very sick or weak person is fed upon blood which the male friends provide, taken from their bodies in the way already described\" that is to say by opening a vein of the forearm and allowing the blood to run into a wooden bowl or some similar vessel. \"it is generally taken in a raw state by the invalid, who lifts it to his mouth like jelly between his fingers and thumb.\" it must be remembered that the aborigines firmly believe in the existence of the soul after death, and since blood during the life proves the most helpful and sustaining nourishment it will communicate the same vitalizing qualities if bestowed upon one who has passed beyond, for they do not entertain the idea that death is any great severance and separation.',\n", + " 'this certainly gives us a clue to the belief underlying the practice of scratching the body and shedding blood upon the occasion of a death, and there can be no doubt that, although possibly the meaning was obscured and these lacerations came to evince nothing more than a proof of sorrow at the bereavment, yet fundamentally the blood was offered by mourners for the refreshment of the departed to supply him with strength and vigour under his new conditions. these practices, then, involved a propitiation of the dead; further, a certain intimate communication with the dead, and assuredly bear a necromantic character, and have more than a touch of vampirism, the essence of which consists in the belief that the dead man is able to sustain a semi-life by preying upon the vitality, that is to say, by drinking the blood of the living. accordingly we are fully able to understand why these customs, heathenish and worse, were so uncompromisingly denounced and forbidden in the mosaic legislation. it was no mere prohibition of indecorous lamentations tinged with paganism, but it went something deeper, for such observances are not free from the horrid superstition of black magic and the feeding of the vampire till he suck his full of hot salt blood and be gorged and replete like some demon leech.',\n", + " 'the word vampire (also vampyre) is from the magyar vampir, a word of slavonic origin occuring in the same form in russian, polish, czech, serbian, and bulgarian with such variants as bulgarian, vapir, vepir; ruthenian vepyr, vopyr, opyr; russian upir, upyr; south russian upuir; polish upier. miklosich suggests the turkish uber, witch, as a possible source. another derivation, which is less probable is from the root pi--to drink, with the prefix va, or av. from the root pi--come the greek πίνω i drink, some tenses of which are formed from the root po--, such as a perfect πέπωκα; a future passive ποθήσομαι; to which must be added the perfect infinitive πεπόσθαι which occurs in theognis. hence we have the aeolic πώνω, and also probably ποταμός, properly perhaps of fresh, drinkable water πότιμον ὕδωρ.',\n", + " 'the sanskrit is pâ, pî, pi-bâmi (bibo); pâ-nam (potus) pâ-tra (poculum); latin po-tus, po-to, po-culum, etc., with which are connected bibo and its many forms and compounds (root--bi-); slavonic, pi-tî (bibere); lithuanian, po-ta (ebriositas), and a vast number of other variants.',\n", + " 'ralston must certainly be quoted in this connexion, although it should be borne in mind that he is a little out of date in some details. the songs of the russian people from which (p. 410) i cite the following passage was published early in 1872. of vampires he writes: \"the name itself has never been satisfactorily explained. in its form of vampir , it has been compared with the lithuanian wempti = to drink, and wempti, wampiti = to growl, to mutter, and it has been derived from a root pi with the prefix u = av, va. if this derivation is correct, the characteristic of the vampire is a kind of blood-drunkenness. in accordance with this idea the croatians called the vampire pijauica; the servians say of a man whose face is coloured by constant drinking, that he is \\'blood-red as a vampire\\'; and both the servians and the slovaks term a hard drinker a vlkodlak. the slovenes and kashubes call the vampire vieszey, a name akin to that borne by the witch in our own language as well as in russian. the poles name him upior or upir, the latter being his designation among the czekhs also.\" the istrian vampire is strigon, and among the wallachians there is a vampire called murony. in greece there are some local names for the vampire, (cyprus), σαρκωμένος, \"the one who has put on flesh\"; (tenos), ἀναικαθούμενος, \"he who sits up in his grave\" in cythnos, ἄλυτος \"incorrupt\"; in cythera, ἀνάρραχο, λάμπασμα, and λάμπαστρο, three words of which i can suggest no satisfactory explanation and which ever so great an authority on greece as mr. j. c. lawson finds unintelligible. newton, travels and discoveries in the levant (i, p. 212) and more particularly pashley, travels in crete (ii, p. 207), mention a term used in rhodes and generally in crete, καταχανος, the derivation of which is uncertain. pashley thinks it may have meant a \"destroyer,\" but mr. lawson connects it with kara and the root χαν-, i gape or yawn, in allusion to the gaping mouth of the vampire, os hians, dentes candidi, says leone allacci.',\n", + " 'st. clair and brophy in their twelve years\\' study of the eastern question in bulgaria, 1877, have a note (p. 29, n. 1): \"the pure bulgarians call this being by the genuine slavonic name of upior, the gagaous (or bulgarians of mixed race) by that of obour, which is turkish; in dalmatia it is known as wrikodlaki, which appears to be merely a corruption of the romaic βρυκόλαξ.\"',\n", + " 'the word vampir, vampyr, is apparently unknown in greece proper and the general modem term is βρυκόλακας, which may be transliterated as vrykolakas (plural vrykolakes). tozer gives the turkish name as vurkolak, and hahn records that amongst some of the albanians βουρβολάκ-ου is used of the restless dead. it is true that in parts of macedonia where the greek population is in constant touch with slavonic neighbours, especially in melenik in the north-east, a form βάμπυρασ or βόμπυρασ has been adopted,\" and is there used as a synonym of vrykolakas in its ordinary greek sense, but strangely enough with this one exception throughout the whole of greece and the greek islands the form \"vampire\" does not appear. coraes denies the slavonic origin of the word vrykolakas, and he seeks to connect a local variant βορβόλακασ with a hypothetical ancient word μορμόλυξ alleged to be the equivalent of μορμολύκη which is used by the geographer strabo, and μορμολυκεία used by arrianus of nicomedia in his διατριβαὶ ἐπικτήτου and the more usual μορμολυκεῖον found in aristophanes, thesmophoriazuasae (417):',\n", + " 'εῖ᾽τα δια τοῦτον ταῖσ γυναικωνίτισιν',\n", + " 'σφραγῖδας ὲπιβάλλουσιν ἤδη καὶ μοχλούς,',\n", + " 'τηρο̃ῦντεσ ἡμᾶσ, καὶ προσέτι μολοττικοὺς',\n", + " 'τρέφουσι, μορμολυκε̑ῖα τοῖσ μοιχοῖς, κύνασ·',\n", + " 'the word occurs again in plato, phaedo: \"τοῦτον ὁῦν πειρώμεθα πείθειν μὴ δεδίεναι τὸν θάνατον ὥσπερ τὰ μορμολύκεια\". it is, of course, a derivation and diminutive of mormo (μορμώ), a hobgoblin, or worse, a ghoul of hideous appearance. the theory is patriotic and ingenious, but bernard schmidt and all other authorities agree that it is entirely erroneous and the modern greek word vrykolakas must undoubtedly be identified with a word which is common to the whole slavonic group of languages. this word slovenian volkodlak, vukodlak, vulkodlak, is a compound form of which the first half means \"wolf,\" whilst the second half has been identified, although the actual relation is not quite demonstrable, with blaka, which in old slavonic, new slavonic, and serbian signifies the \"hair\" of a cow or a horse or a horse\\'s mane. yet whatsoever the analytical signification of the compound may precisely be, the synthesis in the actual employment of all slavonic tongues, save one, is the equivalent of the english \"werewolf\"; scotch \"warwulf\"; german \"werwolf\" and french \"loup-garou.\" the one language in which this word does not bear this interpretation is the serbian, for here it signifies \"a vampire.\" but it should be remarked in this connexion that the slavonic peoples, and especially the serbians believe that a man who has been a werewolf in his life will become a vampire after death, and so the two are very closely related. it was even thought in some districts, especially elis that those who had eaten the flesh of a sheep killed by a wolf might become vampires after death. however, it must be remembered that although the superstitions of the werewolf and the vampire in many respects agree, and in more than one point are indeed precisely similar, there is, especially in slavonic tradition, a very great distinction, for the slavonic vampire is precisely defined and it is the incorrupt and re-animated dead body which returns from its grave, otherwise it cannot be said strictly to be a vampire. as we shall have occasion to observe it were, perhaps, no exaggeration to say that the conception of the vampire proper is peculiar to slavonic peoples, and especially found in the balkan countries, in greece, in russia, in hungary, bohemia, moravia, and silesia. there are, of course, many variants, both western and oriental; and other countries have tales of vampires which exactly fit the slavonic norm, but outside the districts we have specified the appearances of the vampire are rare, whilst in his own domain even now he holds horrid sway, and people fear not so much the ghost as the return of the dead body floridly turgescent and foully swollen with blood, endued with some abominable and devilish life.',\n", + " 'in danish and swedish we have vampyr; the dutch is vampir; the french le vampire; italian, spanish, portuguese, vampiro; modern latin, vampyrus. the oxford english dictionary thus defines vampire: \"a preternatural being of a malignant nature (in the original unusual form of the belief an animated corpse), supposed to seek nourishment and do harm by sucking the blood of sleeping persons; a man or woman abnormally endowed with similar habits.\" the first example which has been traced of the use of the word in literature seems to be that which occurs in the travels of three english gentlemen, written about 1734, which was printed in vol. iv. of the harleian miscellany, 1745, where the following passage occurs: \"we must not omit observing here, that our landlord seems to pay some regard to what baron valvasor has related of the vampyres, said to infest some parts of this country. these vampyres are supposed to be the bodies of deceased persons, animated by evil spirits, which come out of the graves, in the night-time, suck the blood of many of the living, and thereby destroy them.\" the word and the idea soon became quite familiar, and in his citizen of the world (1760-2) oliver goldsmith writes in every-day phrase: \"from a meal he advances to a surfeit, and at last sucks blood like a vampire.\"',\n", + " 'johnson, edited by latham, 1870, has: \"vampire. pretended demon, said to delight in sucking human blood, and to animate the bodies of dead persons, which, when dug up, are said to be found florid and full of blood.\" a quotation is given from forman\\'s observations on the revolution in 1688, 1741, which shows that so early the word had acquired its metaphorical sense: \"these are the vampires of the publick and riflers of the kingdom.\" david mallet in his zephyr, or the stratagem, has:',\n", + " 'can russia, can the hungarian vampire',\n", + " 'with whom call in the hordes and empire,',\n", + " 'can four such powers, who one assail',\n", + " 'deserve our praise should they prevail?',\n", + " \"a few travellers and learned authors had written of vampires in the seventeenth century. thus we have the famous de graecorum hodie quorundam opinationibus of leone allacci, published at cologne in 1645; there are some detailed accounts in the relation de ce qui s'est passé a sant-erini isle de l'archipel by father françois richard, a jesuit priest of the island of santorini (thera), whose work was published at paris in 1657; paul ricaut, sometime english consul at smyrna in his the present state of the greek and armenian churches anno christi, 1678, 8vo, london, 1679, mentions the tradition with a very striking example, but he does not actually use the word vampire. in 1679 philip rohr published at leipzig his thesis de masticatione mortuorum, which in the eighteenth century was followed by a number of academic treatises, such as the dissertatio de hominibus post mortem sanguisugis, uulgo dictis vampyren, by john christopher rohl and john hertel, leipzig, 17 32; the dissertatio de cadaueribus sanguisugis of john christian stock, published at jena in the same year; the dissertatio de uampyris seruiensibus of john heinrich zopfius and charles francis van dalen which appeared in the following year; all of which in some sense paved the way for john christian harenberg's von vampyren.\",\n", + " 'in 1744 was published at naples \"presso i fratelli raimondi\" the famous dissertazione sopra i vampiri of gioseppe davanzati, archbishop of trani. this book had already widely circulated in manuscript--\"la sua dissertazione sopra i vampiri s\\'era sparsa per tutta l\\'italia benchè manoscritta,\" says the anonymous biographer--and a copy had even been presented to the holy father, the learned benedict xiv, who in a letter of 12th january, 1743, graciously thanked the author with generous compliment upon his work. \"l\\'abbiamo subito letta con piacere, e nel medesimo tempo ammirata si per la dottrina, che per la vasta erudizione, di cui ella è fornita\"; wrote the pope. it will not then be unfitting here to supply some brief notice--of the dissertazione sopra i vampiri, which although it ran into a second edition, \"napoli. m.dcc.lxxxix. presso filippo raimondi,\" in england seems almost entirely unknown since strangely enough even the british museum library lacks a copy. we would premise that as the good archbishop\\'s arguments and conclusions are philosophical it is quite allowable for us, whilst fully recognizing his scholarship and skill in handling his points, not to accept these but rather to maintain the contrary.',\n", + " 'gioseppe davanzati was born at bari on 29th august, 1665. after having commenced his studies at the jesuit p. 24 college in his native town, he passed at the age of fifteen to the university of naples. already had he resolved to seek the priesthood, and after a course of three years, his parents being now dead, he entered the university of bologna, when he greatly distinguished himself in science and mathematics. some few years were next spent in travelling, during which period he made his headquarters at paris, \"essendo molto innamorato delle maniere, e de\\'costumi de\\' francesi.\" spain, portugal, the low countries, germany, switzerland were visited in turn, and we are told that he repeatedly expressed his wish to cross over to england, \"nobil sede dell \\'arti e delle scienze\" but that by some accident his desire was again and again frustrated. early in the reign of clement xi, (1700-1721) he was recalled to italy, and having been raised to the priesthood by the bishop of montemartino (salerno) he was appointed treasurer of the famous sanctuary of s. nicholas at bari. his genius speedily attracted attention, and before long he was sent by the pope as legate extraordinary to the emperor charles vi, to vienna, a difficult and important mission which he discharged so admirably well that upon his return he was rewarded with the archbishopric of trani and other honours. this noble prelate remained high in favour with the successors of clement xi, innocent xiii (1721-1724), benedict xiii (1724-1730), and clement xii (1730-1740), and when on the death of this latter pontiff cardinal prospero lorenzo lambertini was elected and took the title of benedict xiv an old and intimate friend of his own was sitting in the chair of s. peter. although five and seventy years of age, archbishop davanzati journeyed to rome to kiss the feet of the new pope by whom he was welcomed with the utmost kindness and every mark of distinction. upon the death of monsignor crispi, archbishop of ferrara, the supreme pontiff on 2nd august, 1746, preconized gioseppe davanzati as patriarch of alexandria, a dignity vacant by the aforesaid prelate\\'s decease. early in february, 1755, archbishop davanzati contracted a severe chill which turned to inflammation of the lungs. upon the night of the sixteenth of that month, having been fortified with the sacraments of the church be slept peacefully away, being aged 89 years, 5 months, and 16 days.',\n", + " 'the dissertazione sopra i vampiri owed its first suggestion to the various discussions which were held at rome during the years 1738-39 in the apartments of cardinal schrattembach, bishop of olmütz, and which arose from the official reports of vampirism submitted to him by the chapter of his diocese. the cardinal sought the advice and co-operation of various learned members of the sacred college and other prelates of high repute for experience and sagacity. amongst these was davanzati who frankly confesses that until the cardinal consulted him and explained the whole business at length he had no idea at all what a vampire might be. davanzati commences his work by relating various well-known and authenticated cases of vampires, especially those which had recently occurred in germany during the years 1720-1739. he shows a good knowledge of the literature of the subject, and decides that the phenomena cannot enter into the category of apparitions and ghosts but must be explained in a very different way, he finds that with but few exceptions both ancient and modern philosophers seem ignorant of vampirism, which he justly argues with pertinent references to the malleus maleficarum and to delrio must be diabolical in origin be it an illusion or no. he next considers at some length in several chapters of great interest the extent of the demon\\'s power. chapter xiii discusses \"della forza della fantasia,\" and in chapter xiv be argues \"che le apparizioni de\\'fantasmi, e dell\\' ombre de\\' morti, di cui fanno menzione gli storici, non siano altro che effetto di fantasia.\" here we take leave to join issue with him, and to-day it will very generally be agreed that his line of argument is at least perilous. nor can we accept \"che l\\'apparizione de\\' vampiri non sia altro che paro effetto di fantasia.\" the truth lies something deeper than that as leone allacci so well knew. yet with all its faults and limitations the dissertazione sopra i vampiri is deserving of careful consideration for there is much that is well presented, much that is of value, although in the light of fuller investigations and clearer knowledge the author\\'s conclusion cannot be securely maintained.',\n", + " \"even better known than the volume of davanzati is the dissertations sur les apparitions des anges, des démons et des esprits, et sur les revenants et vampires de hongrie, de bohême, de moravie, et de silésie, published at paris, chez debure l'ainé, 2 vols., 12mo, 1746. the work was frequently reprinted, and translated into english 1759; into german 1752; second edition 1757-8. in its day it exercised a very great influence, and as it is still constantly referred to, it may not be impertinent to give a brief account of the eminent authority, its author.\",\n", + " \"dom augustin calmet, who is so famous as a biblical exegetist, was born at ménil-la-horgne, near commercy, lorraine, on 26th february, 1672; and died at the abbey of senones, near saint-dié, 25th october, 1757. he was educated by the monks of the benedictine priory of breuil, and in 1688 he joined this learned order in the abbey of st. mansuy at toul, being professed in the following year, and ordained 17th march, 1696. at the abbey of moyen-moutier, where he taught philosophy and theology, he soon engaged the help of the whole community to gather the material for his vast work on the bible. the first volume of this huge commentary appeared at paris in 1707, commentaire littéral sur tous les livres de l'ancien et du nouveau testament; and the last of the twenty-three quarto volumes was published only in 1716. several most important reprints were issued throughout the eighteenth century, including two latin versions, the one by f. vecelli which came from houses at venice and frankfort, six volumes folio, 1730; the other by mansi, lucca, 9 vols., folio, 1730-1738 of which version there are at least two subsequent editions it is impossible that in some small points so encyclopædic a work should not be open to criticism, but its merits are permanent and the erudition truly amazing. yet this was only one of many learned treatises which dom calmet published on biblical subjects, and so greatly was their value esteemed that his dissertations were rapidly translated into latin and the principal modern european languages. when we add to these his historical and philosophical writings the output of this great scholar is well-nigh incredible. so remarkable a man could not fail to hold high honours in his own congregation, and it was only at his earnest prayer that pope benedict xiii refrained from compelling him to accept a mitre, since this pontiff on more than one occasion expressed himself anxious to reward the merits and the learning of the abbot of senones.\",\n", + " 'to-day, perhaps the best known of dom calmet\\'s works in his traité sur les apparitions des esprits, et sur les vampires, and in his preface he tells us the reasons which induced him to undertake this examination. one point which lie emphasizes must carefully be borne in mind and merits detailed consideration. vampires, as we have seen, particularly infest slavonic countries, and it does not appear that this species of apparition was well known in western europe until towards the end of the seventeenth century. there undoubtedly were cases of vampirism, as will be recorded in their due order, and certain aspects of witchcraft have much in common with the vampire tradition, especially the exercise of that malign power whereby the witch caused her enemies to dwindle, peak and pine, draining them dry as hay. but this is not vampirism proper. the fuller knowledge of these horrors reached western europe in detail during the eighteenth century, and it at once threw very considerable light upon unrelated cases that had been recorded from time to time, but which appeared isolated and belonging to no particular category. writing in 1746, dom calmet, who had long studied the subject, remarks that certain events, certain movements, certain fanaticisms, certain phenomena, it may be in the physical or in the supernatural order, distinguish and characterise certain several centuries. he continues: \"in this present age and for about sixty years past, we have been the hearers and the witnesses of a new series of extraordinary incidents and occurrences. hungary, moravia, silesia, poland, are the principal theatre of these happenings. for here we are told that dead men, men who have been dead for several months, i say, return from the tomb, are heard to speak, walk about, infest hamlets and villages, injure both men and animals, whose blood they drain thereby making them sick and ill, and at length actually causing death. nor can men deliver themselves from these terrible visitations, nor secure themselves from these horrid attacks, unless they dig the corpses up from the graves, drive a sharp stake through these bodies, cut off the heads, tear out the hearts; or else they burn the bodies to ashes. the name given to these ghosts is oupires, or vampires, that is to say, blood-suckers, and the particulars which are related of them are so singular, so detailed, accompanied with circumstances so probable and so likely, as well as with the most weighty and well-attested legal deposition that it seems impossible not to subscribe to the belief which prevails in these countries that these apparitions do actually come forth from their graves and that they are able to produce the terrible effects which are so widely and so positively attributed to them. . . . the brucolaques (vrykolakes) of greece and the archipelago are apparitions of quite a new kind.\" the author then says that he has solid reasons for treating the subject of vampires, and especially for dealing with those who infest hungary, moravia, silesia and poland, although he well knows that he is laying himself open to damaging criticism on both sides. many persons will accuse him of temerity and presumption for having dared to cast doubts upon certain details in these well-authenticated accounts, whilst others will attack him for having wasted his time in writing seriously on a subject which appears to them frivolous and inept. \"howbeit,\" he continues, \"whatever line anyone may choose to adopt, it is to my mind useful and indeed necessary to investigate a question which seems to have an important bearing upon religion. for if it be a truth that vampires may actually thus return from their graves, then it becomes necessary to write in defence of, and to prove, this truth; if it be an error and an illusion, it follows in the interests of religion that those who credit it must be undeceived and that we should expose a groundless superstition, a fallacy, which may easily have very serious and very dangerous consequences.\"',\n", + " 'in the first chapter of his second volume, which section directly discusses vampires,--the first volume being preliminary and generally concerned with apparitions of various kinds,--don calmet again defines a vampire, and at the risk of a certain amount of repetition his words must once again be quoted: the apparitions (revenans) of hungary, or vampires . . . are men who have been dead for some considerable time, it may be for a long period or it may be for a shorter period, and these issue forth from their graves and come to disturb the living, whose blood they suck and drain. these vampires visibly appear to men, they knock loudly at their doors and cause the sound to re-echo throughout the whole house, and once they have gained a foothold death generally follows. to this sort of apparition is given the name vampire or oupire, which in the slavonic tongues means a blood-sucker. the only way to obtain deliverance from their molestations is by disinterring the dead body, by cutting off the head, by driving a stake through the breast, by transfixing the heart, or by burning the corpse to ashes.\"',\n", + " 'it may be remarked here that although in the course of this book there will be occasion to deal with many ghosts of the vampire family and to treat of cognate superstitions and traditions the essential feature of the vampire proper lies in the fact that he is a dead body re-animated with an awful life, who issues from his tomb to prey upon the living by sticking their blood which lends him new vitality and fresh energies. since he is particularly found in greece it is to a greek writer we may go for a description of this pest. one of the earliest--if indeed he were not actually the first--of the writers of the seventeenth century who deals with vampires is leone allacci, (alacci), more commonly known as leo allatius. this learned scholar and theologian was born on the island of chios in 1586, and died at rome 19th january, 1669. at the age of fourteen he entered the greek college in rome, and when he had finished his academic course with most honourable distinction, returned to chios where he proved of the greatest assistance to the latin bishop marco giustiniani. in 1616 allacci received the degree doctor of medicine from the sapienza, and a little later, after having been attached to the vatican library, be professed rhetoric at the greek college. in 1622 pope gregory xv sent him to germany to superintend the transportation to rome of the palatinate library of heidelberg, which maximillian i had presented to the pope in return for large subsidies that enabled the war to be carried on against the federation of protestant princes. this important task, which owing to a disturbed state of the country was one of immense difficulty, allacci accomplished most successfully, and during the reigns of urban viii and innocent x he continued his work in the vatican library, especially concentrating upon the palatinate manuscripts. in 1661 alexander vi, as a recognition of his vast researches and eminent scholarship, appointed him custodian of the library. he was an earnest labourer for reunion, in which cause he wrote his great work de ecclesiae occidentalis atque orientalis perpetua consensione, published at cologne in 1648, a dissertation wherein all points of agreement are emphasized, whilst the differences are treated as lightly as possible.',\n", + " 'allacci, in his treatise de graecorum hodie quorundam opinationibus, cologne, 1645, discusses many traditions, and amongst others he deals at some length with the vampire, concerning whom he says: \"the vrykolakas is the body of a man of wicked and debauched life, very often of one who has been excommunicated by his bishop. such bodies do not like other corpses suffer decomposition after burial nor fall to dust, but having, so it seems, a skin of extreme toughness become swollen and distended all over, so that the joints can scarcely be bent; the skin becomes stretched like the parchment of a drum, and when struck gives out the same sound, from which circumstance the vrykolakas has received the name τυμπανιαῖος (\\'drum-like\\').\" according to this author a demon takes possession of such a body, which issues from the tomb, and, generally at night, goes about the streets of a village, knocking sharply upon doors, and summoning one of the household by name. but if the person called unwittingly answers he is sure to die on the following day. yet a vrykolakas never cries out a name twice, and so the people of chios, at all events, always wait to hear the summons repeated before they reply to anyone who raps at their door of a night.\" this monster is said to be so fearfully destructive to men, that it actually makes its appearance in the daytime, even at high noon, nor does it then confine its visits to houses, but even in fields and in hedged vineyards and upon the open highway it will suddenly advance upon persons who are labouring or travellers as they walk along, and by the horror of its hideous aspect it will slay them without laying hold on them or even speaking a word.\" accordingly a sudden death from no obvious cause is to be regarded with the gravest suspicion, and should there be any kind of molestation, or should any story of an apparition be bruited abroad they hasten to exhume the corpse which is often found in the state that has been described. thereupon without any delay \"it is taken up out of the grave, the priests recite the appointed prayers, and it is thrown on to a fiercely blazing pyre. before the orisons are finished skin will desquamate and the members fall apart, when the whole body is utterly consumed to ashes.\" allacci proceeds to point out that this tradition in greece is by no means new nor of any recent growth, for he tells us \"in ancient and modern times alike holy men and men of great piety who have received the confessions of christians have tried to disabuse them of such superstitions and to root this belief out of the popular imagination.\" indeed a nomocanon or authoritative ordinance of the greek church is cited to the following effect: \"concerning a dead man, if he be found whole, the which they call vrykolakas.',\n", + " '\"it is impossible that a dead man should become a vrykolakas, unless it be by the power of the devil who, wishing to mock and delude some that they may incur the wrath of heaven, causeth these dark wonders, and so very often at night he casteth a glamour whereby men imagine that the dead man whom they knew formerly, appears and holds converse with them, and in their dreams too they see strange visions. at other times they may behold him in the road, yea, even in the highway walking to and fro or standing still, and what is more than this he is even said to have strangled men and to have slain them.',\n", + " '\"immediately there is sad trouble, and the whole village is in a riot and a racket, so that they hasten to the grave and they unbury the body of the man . . . and the dead man--one who has long been dead and buried--appears to them to have flesh and blood . . . so they collect together a mighty pile of dry wood and set fire to this and lay the body upon it so that they burn it and they destroy it altogether.\"',\n", + " 'what is exceedingly curious is that after so emphatically declaring these phenomena to be a superstition and an idle fantasy, the nomocanon continueth as follows: \"be it known unto you, however, that when such an incorrupt body shall be discovered, the which, as we have said is the work of the devil, ye must without delay summon the priests to chant an invocation to the all holy mother of god . . . and solemnly to perform memorial services for the dead with funeral-meats.\" this provision is at any rate pretty clear evidence that the author or authors of this ordinance must have had some belief in the vrykolakas, and it appears to me that they would not have added so significant a cautel unless they had deemed it absolutely necessary, and having salved their consciences by speaking with rigid officialism, they felt it incumbent upon them to suggest precautions in case of the, expected happening and the consequence of difficulties and mistrust. in fact, they were most obviously safeguarding themselves.',\n", + " 'allacci, at any rate, had no hesitation about declaring his own views, and he thoroughly believed in the vampire. he says, and says with perfect truth: \"it is the height of folly to attempt to deny that such bodies are not infrequently found in their graves incorrupt and that by use of them the devil, if god permit him, devises most horrible complots and schemes to the hurt and harm of mankind.\" father françois richard, reference to whose important work has been made above, distinctly lays down that particularly in greece the devil may operate by means of dead bodies as well. as by sorcerers, all this being allowed by some inscrutable design of providence. and there can be no doubt that the vampire does act under satanic influence and by satanic direction. for the wise words of s. gregory the great, although on another occasion, may most assuredly be applied here: \"qui tamen non esse incredibilia ista cognoscimus, si in illo et alia facta pensamus. certe iniquorum omnium caput diabolus est: et huius capitis membra sunt omnes iniqui.\" all this, of course, under divine permission. the authors of the malleus maleficarum in the first part teach us how there are \"three necessary concomitants of witchcraft, which are the devil, a witch, and the permission of god.\" so are these three necessary concomitants of vampirism, to wit, the devil, the dead body, and the permission of god.\" father richard writes: \"the devil revitalizes and energizes these dead bodies which he preserves for a long time in their entirety; he appears with the actual face and in the likeness of the dead, stalking abroad up and down the streets, and presently he will parade the country roads and the fields; he bursts his way into men\\'s houses, filling many with awful fear, leaving others dumb with horror, whilst others are even killed; he proceeds to acts of violence and blood, and strikes terror into every heart.\" the good father proceeds to say that at first he believed these appearances to be merely ghosts from purgatory returning to ask for help, masses and pious prayers\"; but on learning the details of the case he soon found that he had to deal with something very other, for such ghosts never commit excesses, violent assaults, wreaking the destruction of cattle and goods, and even causing death. these appearances then are clearly diabolical, and the matter is taken in hand by the priests who assemble on a saturday, that being the only day of the week on which a vrykolakas rests in his grave and cannot walk abroad.',\n", + " 'it may be remembered that saturday was the one day of the week which was particularly avoided by witches for their assemblies, and that no sabbat was held on this day. for saturday is sacred to the immaculate mother of god. \"it is well known,\" says that great doctor s. alphonsus, \"that saturday is dedicated by holy church to mary, because, as s. bernard tells us, on that day, the day after the death of her son, she remained constant in faith.\" (per illud triste sabbatum stetit in fide, et saluata fuit ecclesia in ipsa sola; propter quod, aptissime tota ecclesia, in laudem et gloriam eiusdem uirginis, diem sabbati per totius anni circulum celebrare consueuit.) in england this excellent practice of devotion was known as early as anglo-saxon times, since in the leofric missal a special mass is assigned to saturdays in honour of our lady.',\n", + " 'mr. g. f. abbott, in his macedonian folklore, relates that in northern greece \"people born on a saturday (hence called σαββατιανοὶ or sabbatarians) are believed to enjoy the doubtful privilege of seeing ghosts and phantasms, and of possessing great influence over vampires. a native of socho assured the writer that such a one was known to have lured a vrykolakas into a barn and to have set him to count the grains of a heap of millet.\" while the demon was thus engaged, the sabbatarian attacked him and succeeded in nailing him to the wall . . . at liakkovikia it is held that the sabbatarian owes his power to a little dog, which follows him every evening and drives away the vrykolakas. it is further said that the sabbatarian on these occasions is invisible to all but the little dog.\"',\n", + " 'the priests then on a saturday go in procession to the grave where lies the body which is suspect. it is solemnly disinterred, \"and when they find it whole, they take it for certain that it was serving as an instrument of the devil.\"',\n", + " 'this abnormal condition of the dead is held to be a sure mark of the vampire, and is essential to vampirism proper. in the greek church it is often believed to be the result of excommunication, and this is indeed an accepted and definite doctrine of the orthodox church, which must be considered in turn a little later.',\n", + " 'it is not impossible, i think, that cases of catalepsy, or suspended animation which resulted in premature burial may have helped to reinforce the tradition of the vampire and the phenomenon of vampirism. some authorities consider catalepsy as almost entirely, if not wholly, psychic, and certainly not a disease in any correct sense of the word, although it may be a symptom of obscure diseases arising from nervous disorders. a celebrated medical authority has pronounced that \"in itself catalepsy is never fatal.\" it belongs to the domain of hypnotism, and is said to be refreshing to the subject, especially when he is exhausted by long mental exertion or physical toil. very often it arises from conscious or subconscious auto-suggestion, and it has been described as \"the supreme effort of nature to give the tired nerves their needed repose.\" no doubt the fatal mistake so often made in the past was that of endeavouring by drastic measures to hasten restoration to consciousness., instead of allowing nature to recuperate at will. if the attempt is successful it comes as a fearful shock to the nerves which are craving for rest; if the effort is seemingly without result the patient is in imminent danger of an autopsy or of being buried alive, a tragedy which, it is to be feared, has happened to very many. it is clear that as yet serious attention has not been adequately given to this terrible accident. a quarter of a century ago it was computed that in the united states an average of not less than one case a week of premature burial was discovered and reported. this means that the possibility of such danger is appalling. in past centuries when knowledge was less common, when adequate precautions were seldom, if ever, employed, the cases of premature burial, especially at such times as the visitation of the plague and other pestilences must have been far from uncommon. two or three examples of recent date, that is to say occuring at the end of the last century, may profitably be quoted as proving extremely significant in this connexion.',\n", + " 'a young lady, who resided near indianopolis, came to life after fourteen days of suspended animation. no less than six doctors had applied the usual tests, and all unhesitatingly signed certificates to witness that she was dead. her little brother against this consensus of opinion clung to her and declared that she had not died. the parents were in bitter agony, but at length it was necessary to remove the body. the boy endeavoured to prevent this, and in the excitement the bandage which tied up the jaw was loosened and pushed out of place, when it appeared that her lips were quivering and the tongue gently moving. \"what do you want, what do you want?\" cried the child. \"water,\" distinctly, if faintly, came the answer from the supposed corpse. water was administered, the patient revived, and lived her full span of years, healthy and normal until she was an old woman.',\n", + " 'a lady who is now the head matron of one of the largest orphan asylums in the united states has been given over as dead no less than twice by the physicians in attendance; her body has twice been shrouded in the decent cerements of the grave; and twice has she been resuscitated by her friends. on the second occasion, in view of the former experience, extraordinary precautions were taken. all known tests were applied by the physicians, and humanly speaking all possible doubt was set at rest. the doctors had actually left the house, and the undertaker was at his sad business. it chanced that the body was pierced by a pin, and to the joy of her friends it was noted that a small drop of blood shortly afterwards oozed from the puncture. the family insisted upon the preparations being stayed; vigorous treatment was unremittingly applied, and the patient returned to life. to-day she is an exceptionally active and energetic administratrix. it should be remarked that the lady declared that she had never for a moment lost consciousness, that she was fully cognizant of all that went on around her, that she perfectly understood the meaning of all the tests which were so assiduously employed, but that all the while she felt the utmost indifference with regard to the result. the verdict of the physicians that she was dead did not cause her either the slightest surprise or the smallest alarm. a very similar accident occurred to a gentleman of good estate, one of the most prominent citizens of harrisburg, in pennsylvania. after a long illness he apparently died from inflamatory rheumatism, which was complicated with heart trouble. all preparations were made for the funeral, but his wife determined that this should not take place for at i-east a week, so great was her fear of premature burial. in the course of two or three days it was noticed that the body had moved; the eyes were wide open, and one of the arms had altered the position in which it had been carefully placed. his wife shrieked out his name, upon which he slowly arose, and with assistance was supported to a chair. even before the arrival of the physicians, who were instantly summoned, he had regained a marked degree of strength, together with an ability of movement which had not been possible throughout the whole course of his illness. he was soon in excellent health, and what is very remarkable, he stated that during the time of suspended animation he was perfectly aware of everything that was going on all around, that the grief of his family filled him with terrible agony, and he dreaded the preparations for interment, but that he was unable to move a muscle or utter a word.',\n", + " \"the death of washington irving bishop, the well-known thought-reader, caused a great sensation at the time. on many occasions he had been in a cataleptic state for several hours, and once, at least, his trance was so long that two physicians pronounced him to be dead. there is little doubt that eventually the autopsy was performed with irregular haste, and that the unfortunate subject was not dead before the surgeon's knife had actually penetrated his brain.\",\n", + " 'although through the ages few cases have been actually recorded the incidents of premature burial and of autopsy performed on the living must be numberless. one such accident nearly occurred to the great humanist marc-antoine muret, who, falling ill upon a journey, was conveyed to the local hospital as a sick stranger, name unknown. whilst he lay, not even unconscious, upon the rough pallet, the physicians, who had been lecturing upon anatomy and were anxious to find a subject to illustrate their theories, gathered round in full force. they eagerly discussed the points to be argued, and deeming the patient dead, the senior physician gravely pronounced, pointing to the patient: \"faciamus experimentum in anima uili.\" the eyes of the supposed corpse opened widely, and a low, but distinct voice answered: \"uilem animam appellas pro qua christus non dedignatus est mori.\"',\n", + " 'as was customary in the case of prelates, when cardinal diego de espinosa, bishop of sigeunza and grand inquisitor of spain under philip ii died after a short illness, the body was embalmed before it lay in state. accordingly in the presence of several physicians the surgeon proceeded to operate for that purpose. he had made a deep incision, and it is said that the heart had actually been brought into view and was observed to beat. the cardinal recovered consciousness at the fatal moment, and even then had sufficient strength to grasp with his hand the scalpel of the anatomist. in the earlier years of the nineteenth century both cardinal spinola and the octogenarian cardinal della somaglia were prepared for embalmment before life was extinct.',\n", + " 'in the seventh book of the historia naturalis, (liii, 52, ed. brotier, barbou, 1779), pliny relates many instances of persons who, being deemed dead, revived. \"auiola consularis in rogo reuixit: et quoniam subueniri non potuerat præ ualente flamma, uiuus crematus est. similis causa in l. lamia prætorio uiro traditur. nam c. ælium tuberonem prætura functum a rogo relatum, messala rufus, et plerique tradunt. hæc est conditio mortalium: ad has, et eiusmodi occasiones fortunæ gignimur, uti de homine ne morti quidem debeat credi. reperimus inter exempla, hermotini clazomenii animam relicto corpore errare solitam, uagamque e longinquo multa annunitiare, quæ nisi a præsente nosci non possent, corpore interim semianimi: donec cremato eo inimici (qui cantharidæ uocabantur) remeanti animæ uelut uaginam ademerint. aristeæ etiam uisam euolantem ex ore in proconneso, corui effigie, magna quæ sequitur fabulositate. quam equidem et in gnossio epimenide simili modo accipio: puerum æstu et itinere fessum in specu septem et quinquaginta dormisse annis: rerum faciem mutationemque mirantem uelut postero experrectum die: hinc pari numero dierum senio ingruente, ut tamen in septimum et quinquagesimum atque centesimum uitæ duraret annum. feminarum sexus huic malo uidetur maxime opportunus, conuersione uuluæ: quæ si corrigatur, spiritus restituitur. hue pertinet nobile apud græcos uolumen heraclidis, septem diebus feminæ exanimis ad uitam reuocatæ.',\n", + " 'uarro quoque auctor est, xx. uiro se agros diuidente capuæ, quemdam qui efferretur, foro domum remaasse pedibus. hoc idem aquini accidisse. romæ quoque corsidium materteræ suæ maritum sumere locato reuixisse, et locatorem funeris ab eo elatum. adiicit miracula, quæ tota indicasse conueniat. e duobus fratribus equestris ordinis, corsidio maiori accidisse, ut uideretur exspirasse, apertoque testamento recitatum heredem minorem funeri institisse; interim cum, qui uidebatur extinctus, plaudendo conciuisse ministeria, et narrasse \"a fratre se uenisse, commendatum sibi filiam ab eo. demonstratum præterea, quo in loco defodisset aurum nullo conscio, et rogasse ut iis funebribus, quæ comparasset, efferretur.\" hoc eo narrante, fratris domestici propere annuntiauere exanimatum illum: et aurum, ubi dixerat, repertum est. plena præterea uita est his uaticiniis, sed non conferenda, cum sæpius falsa sint, sicut ingenti exemplo docebimus. bello siculo gabienus cæsaris classiarus fortissimus captus a sex. pompeio, iussu eius incisa ceruice, et uix cohærente, iacuit in litore toto die. deinde cum aduesperauisset, cum gemitu precibusque congregata multitudine petiit, uti pompeius ad se ueniret, aut aliquem ex arcanis mitteret: se enim ab inferis remissum, habere quæ nuntiaret. misit plures pompeius ex amicis, quibus gabienus dixit: \"inferis diis placere pompeii causas et partes pias: proinde euentum futurum, quem optaret: hoc se nuntiare iussum: argumentum fore ueritatis, quod peractis mandatis, protinus exspiraturus esset\": idque ita euenit. post sepulturam quoque uisorum exempla, sunt: nisi quod naturæ opera, non prodigia consectamur.',\n", + " 'it was truly said by pliny that \"such is the condition of humanity, and so uncertain is men\\'s judgement that they cannot determine even death itself.\" the words of the wise old roman have been re-echoed by many a modern authority. sabetti in his tractatus xvi, \"de extrema unctione,\" compendium theologiæ moralis, (ed. recognita t. barrett; pustet; 1916; p. 776) asks: \"quid sacerdoti agendum sit, si ad ægrotum accedat, eumque modo mortuum, ut uulgo dicitur, inueniat? in the course of resolving this, he lays down: \"iam age ex sententia plurimorum medicorum doctissimorum probabile est homines in omnibus ferme casibus post instans mortis, ut uulgo dicitur, seu post ultimam respirationem, intus aliquamdiu uiuere, breuius uel diutius, iuxta naturam causae quae mortem induxit. in casibus mortis ex morbis lenti progressus probabile est uitarn interne perdurare aliquot momenta, sex circiter, uel, iuxta quosdam peritos, unam dimidiam horam: in casibus uero mortis repentinae uita, interna perdurat longius, forte non improbabiliter, usque ad putrefactionem.\" professor huxley wrote: \"the evidence of ordinary observers on such a point as this (that a person is really dead) is absolutely worthless. and, even medical evidence, unless the physician is a person of unusual knowledge and skill, may have little more value.\" the british medical journal remarks: \"it is true that hardly any one sign of death, short of putrefaction, can be relied upon as infallible.\" sir henry thompson wrote: \"it should never be forgotten that there is but one really trustworthy proof that death has occurred in any given instance, viz., the presence of a manifest sign of commencing decomposition.\" and professor p. brouardel emphatically declares: \"we are obliged to acknowledge that we have no sign or group of signs sufficient to determine the moment of death with scientific certainty in all cases.\" colonel e. p. vollum, m.d., medical inspector of the united states army, and corresponding member of the new york academy of sciences, who himself was upon one occasion almost buried alive, most emphatically declared that \"even stoppage of the beating of the heart, and breathing, for a considerable time, with all other appearances of death, excepting decomposition, do not make it certain that a person is dead,\" and he also added the terrible warning that \"the suspended activity of life may return after the body has been interred.\" it is unnecessary to enter into these partial cases of premature burial, but there is overwhelming evidence that such accidents were far from uncommon. dr. thouret, who was present at the destruction of the famous vaults of les innocens, told mons. desgenettes that there could be no doubt many of the persons must have been interred alive, since the skeletons were found in positions which showed the dead must have turned in their coffins. kempner supplies similar particulars when describing disinterments which have taken place in new york and other districts of the united states, also in holland and elsewhere.',\n", + " 'the celebrated investigator, dr. franz hartmann, collected particulars of more than seven hundred cases of premature burial and of narrow escapes from it, some of which occurred in his own neighbourhood. in his great work premature burial he tells us of the terrible incident which happened to the famous french tragedienne, mile. rachel, who on 3rd january, 1858, \"died\" near cannes, and who was to be embalmed, but after the proceedings had commenced she suddenly returned to life, only to expire in reality some ten hours later from the shock and from the injuries which had been inflicted upon her. another case which is of particular interest as having occurred in moravia, where the belief in vampires is particularly strong, is that of the postmaster in a small town who, as it was thought, died in a fit of epilepsy. about a year afterwards it became necessary to disinter some of the bodies from the graveyard in order to enlarge one of the transepts of the parish church, and the dreadful fact was revealed that the unfortunate postmaster must have been buried whilst still alive, a discovery which so horrified the physician who had signed the death certificate that he lost his reason.',\n", + " 'in the chancel of s. giles, cripplegate, there is still to be seen a monument sacred to the memory of constance whitney, whose many virtues are described in somewhat rhetorical fashion upon a marble tablet. a figure above this scroll represents the lady in the act of rising from her coffin. this might be taken to be a beautiful symbolism, but such is not the case, for it represents an actual circumstance. the unfortunate lady had been buried while in a condition of suspended animation, and consciousness returned to her when the sexton opened the coffin and desecrated the body in order to steal a valuable ring which had been left upon one of her fingers. in former years when the rifling of tombs and body-snatching were by no means an infrequent practice, many similar cases came to light, and there can be no doubt that no inconsiderable proportion of persons were buried in a state of trance or catalepsy.',\n", + " \"the story of gabrielle de launay, a lady whose cause was tried before the high court of paris, about 1760, caused a profound sensation throughout the whole of france. when eighteen years of age gabrielle, the daughter of m. de launay, the president of the civil tribunal of toulouse, was betrothed to captain maurice de serres. unhappily the latter was suddenly ordered abroad to the indies on active service. the president, fearing that his child might die in a foreign land, refused to allow the marriage to be celebrated immediately so that she might accompany her husband under his protection. the lovers parted heart-broken, and in about two years' time news reached france of the gallant young soldier's death. p. 41 this, however, proved to be false, although his safety was not known until, after an absence of well-nigh five years, be presented himself once more in paris. here he happened to pass the church of s. roch, the entire facade of which was heavily draped with black and shrouded for the funeral of some person of distinction. upon enquiry, he learned that the mourning was on account of a young and beautiful lady who had died suddenly after two days' illness, the wife of the president du bourg, who before her marriage had been mlle. gabrielle de launay. it appeared that, owing to the report of the death of maurice de serres, m. de launay had compelled his daughter to marry this gentleman, who although nearly thirty years her senior was a figure of great wealth and importance. as may be imagined, the young captain was distracted with grief, but that night, taking a considerable sum in gold, he visited the sexton of the cemetery of s. roch and with great difficulty bribed him to exhume the corpse of madame du bourg in order that he might once more look upon the features of the woman whom he had so passionately loved. with every precaution, under the pale light of a waning moon, the terrible task was completed, the coffin was silently unscrewed, and the unhappy lover threw himself upon his, knees in an agony of grief. at last the grave-digger suggested that everything must be replaced in order, when with a terrible cry the young officer suddenly seized the cold, clay body and, before the bewildered sexton could prevent him, threading his rapid course among the tombs, with lightning speed he disappeared into the darkness. pursuit was useless, and nothing remained but for the poor man to replace the empty shell in the grave, to shovel back the earth and arrange the spot so that there might be no trace of any disturbance. he felt sure, at least, that his accomplice in so terrible a crime, a sacrilege which would inevitably bring the severest punishment upon those concerned in it, must maintain silence, if only for his own sake.\",\n", + " \"nearly five years had passed when m. du bourg, who upon the anniversary of his wife's death each june attended a solemn requiem, as he was passing through a somewhat unfrequented street in the suburbs of paris came face to face with a lady in whom he recognised none other than the wife whose death he had mourned so tenderly and so long. p. 42 as he attempted to speak, she with averted looks swept past him as swiftly as the wind and, leaping into a carriage with emblazoned panels, was driven quickly away before he could reach the spot. however, m. du bourg had noticed the arms of the noble house of de serres, and he determined that inquiry should at once be made. it was no difficult task for a man of his position to obtain an order that the grave of his wife might be examined, and when this was done the empty broken coffin turned suspicion into certainty. the fact that the sexton had resigned his post and had gone no one knew where, but seemingly in comfortable circumstances shortly after the funeral of madame du bourg lent its weight to the investigations which were now taken in hand. experienced lawyer that he was, m. du bourg accumulated evidence of the first importance. he found that it was said that captain maurice de serres had married his young and lovely wife, madame julie de serres, some five years previously and, as it was supposed, then brought her back with him from some foreign country, to paris.\",\n", + " 'the whole city was astounded when the president du bourg demanded from the high court the dissolution of the illegal marriage between captain maurice de serres and the pretended julie de serres, who, as the plaintiff steadfastly declared, was gabrielle du bourg, his lawful wife. the novelty of the circumstances caused the profoundest sensation, and vast numbers of pamphlets were exchanged by the faculty, many of whom maintained that a prolonged trance had given rise to the apparent death of madame du bourg, and it was stated that although she had continued to exist for a great number of hours in her grave, cases of similar lethargies had been recorded, and even if such fits were of the rarest, yet the circumstance was possible. madame julie de serres was summoned to appear in court and answer the questions of the judges. she stated that she was an orphan born in south america, and had never left her native country until her marriage. certificates were produced, and on every side lengthy arguments were heard, which it is unnecessary to detail. many romantic incidents ensued, but these, however interesting, must be passed over, for it shall suffice to say that eventually, mainly through the sudden introduction of her little daughter, amid a pathetic scene, the identity of julie',\n", + " 'p. 43',\n", + " 'de serres with gabrielle du bourg, née launay, was established and acknowledged. in vain did her advocate plead that her marriage to m. du bourg had been dissolved by death, although this fact most certainly ought to have been accepted as consonant with sound theology. none the less the result was that, in spite of her prayer to be allowed to enter a cloister, she was ordered to return to her first husband. two days after, the president du bourg awaited her arrival in the great hall of his mansion. she appeared, but could scarcely totter through the gates, for she had but a few moments previously drained a swift poison. crying \"i restore to you what you have lost,\" she fell a corpse at his feet. at the same moment captain de serres died by his own hands.',\n", + " 'it cannot escape notice that these events very closely resemble that novella of bandello (ii, 9), which relates the true history of elena and gerardo, adventures nearly resembling the tragic tale of romeo and juliet. elena and gerardo are the children of two nobles of venice, messer pietro and messer paolo, whose palaces fronted each other on the grand canal. gerardo chances to see elena at her window, and from that hour he knows neither happiness nor sleep until he has declared his consuming passion. a kindly nurse brings them together, and in her presence they exchange rings and vows of tenderest love before the statue of madonna the virgin, spending long nights in amorous ecstasy and bliss. for these unions were fast binding, although not a sacrament, indeed, until then had received the benison of holy church. it is a common saying to apply to any man: \"si, è ammogliato; ma il matrimonio non è stato benedetto.\" wherefore the spousals of the lovers remained a secret.',\n", + " \"in a little while messer paolo, thinking great things of his son's career in the world, dispatches the young man to beirut, and gerardo needs must go. but when he had been absent some six months messer pietro informs his daughter that he has appointed a day for her marriage with a young man of ancient house and fair estate, and not daring to tell her father what had passed, she sunk under her silent grief, and upon the evening before her new nuptials she fell into a swoon across her bed, so that in the morning she was found cold and stark as a stiffening corpse. the physicians assembled in numbers and talked learnedly; remedies of every sort were applied\",\n", + " 'p. 44',\n", + " \"without avail; and no one doubted she was dead. so they carried her to church for burial and not for marriage. that night they bore in sombre and silent procession upon a black gondola to the campo which is hard by san pietro in castello, where lies the sacred body of venice's great patriarch, san lorenzo giustiniani. they left her there in a marble sarcophagus outside the church, with torches blazing around.\",\n", + " 'now it happened that gerardo\\'s galley bad returned from syria, and was newly anchored at the port of lido. many friends came to greet him, and as they talked, marking the funeral cortège, he idly asked who was gone. when be learned it was elena, grief fell upon him like a cloud of night. but he dissembled until all had departed, when, calling his friend the captain of the galley, he told him the whole story of his love, and swore he would once again kiss his wife, even if he had to break open her monument. the captain tried in vain to dissuade him, but seeing it was of no avail the two men took a boat and rowed together to san pietro. it was long after midnight when they landed and made their way to the place of sepulture. pushing back the massive lid, gerardo flung himself upon the body of his elena. at length the good captain, who feared the signors of the night would visit the spot and put them under arrest, compelled the hapless lover to return to the boat, but he could no whit persuade him to leave elena\\'s body, and this gerardo bore in his arms and reverently laid it in the boat, himself clasping it in his arms with many a sad kiss and bitter sigh. the captain, much alarmed, scarce dared to make for the galley, but rowed up and down and out to the open lagoon, the dying husband yet laid by his dead wife. however, the sea-breezes freshened with their salt tang, and far over the waters the horizon lightened towards dawn. it was then that the spark of life awoke in elena\\'s face; she moved gently, and gerardo, starting from his grief, began to chafe her hands and feet. they carried her secretly to the house of the captain\\'s mother; here she was put in a warm bed, possets and food were administered; presently she opened her eyes, and lived. a gracious and lordly feast was made by messer paolo for his son\\'s return, and when all the company were assembled gerardo entered, leading elena in bridal array, and kneeling at his father\\'s feet he said: \"lo, my father, i bring you my wedded wife whom i have this day',\n", + " 'p. 45',\n", + " 'saved from death.\" great were the rejoicings, and messer pietro was summoned from his house of mourning to a home of gladness. so when the whole truth had been told him and he welcomed back not only his dead daughter but her husband also with a joyful heart and with thanksgiving, he blessed the young couple, and on the morrow morn holy church with solemn rite hallowed the bond of matrimony whose, joys had already been sweetly consummated.',\n", + " 'the parallels between the two adventures are very striking. our main interest in the sad story of de serres and his love, which assuredly might have ended far otherwise, lies in the fact that the unfortunate gabrielle du bourg was actually buried as dead in her coffin, and only restored to life after several days had passed. occasionally epitaphs may be seen both abroad and in england, which record some premature burial. such a one was placed over the tomb of a mrs. blunden in the cemetery of basingstoke, hampshire, and this tells how the unfortunate lady was prematurely interred, but the original inscription is to a large extent obliterated. unfortunately overwhelming evidence proves that such terrible accidents are far from rare, for mr. william tebb, in his authoritative work premature burial had collected of recent years from medical sources alone two hundred and nineteen narrow escapes from being buried alive; one hundred and forty-nine premature interments that actually took place; ten cases of bodies being dissected before life was extinct; three cases in which this shocking error was very nearly made; and two cases where the work of embalmment had already begun when consciousness returned.',\n", + " 'there is no greater mistake than to suppose that most cases of premature burial, and of escape from premature burial, happened long ago, and that even then the majority of these took place under exceptional conditions, and for the most part in small towns or remoter villages on the continent. amazing as it may appear in these days of enlightenment, the number of instances of narrowest escapes from premature burial, and also of this terrible fate itself, has not decreased of recent years, but it has, on the contrary, increased. in a letter on page 1,104 of the lancet, 14th june, 1884, the witness describes in detail the appearance presented by two bodies which he saw in the crypt of the cathedral of bordeaux, when',\n", + " 'p. 46',\n", + " 'part of the cemetery there had been dug up and many graves disinterred. in la presse médicale, paris, 17th august, 1904, there is an article, \"the danger of apparent death,\" by doctor icard of marseilles, whose study la mort réelle et la mort apparente when published in 1897 attracted great attention. the writer, an eminent figure in the medical world, describes in detail some twelve cases of the revival of persons who had been certified as dead by their doctors, the body in one instance recovering consciousness when several physicians were present and the funeral ceremonies had actually commenced. it should be remarked that dr. m. k. boussakis, professor of physiology at the faculty of medicine of athens, was one of the eye-witnesses upon that occasion, and a similar case is mentioned on the authority of dr. zacutus lusitanus, who was also present. it should be remembered that greece is the country where belief in the vampire still most strongly survives.',\n", + " 'a terrible case of actual interment whilst still alive is described in a letter published in the sunday times, 6th september, 1896. some years ago the paris figaro, in an article of some length considered the terrible possibilities of being buried alive, and within fifteen days the editor received over four hundred letters from different parts of france, and all these were from persons who had either themselves been buried alive, or been on the point of being so interred, or who had escaped a premature grave through some fortunate accident.',\n", + " 'in september, 1895, a boy named ernest wicks was found lying on the grass in regent\\'s park, apparently dead, and after being laid out in the s. marylebone mortuary was brought back to life by the keeper, mr. ellis. when the doctor arrived the lad was breathing freely though still insensible, and a little later he was removed to the middlesex hospital. here the surgeon pronounced him to be \"recovering from a fit.\" at an inquest held at wigan, 21st december, 1902, mr. brighouse, one of the county coroners for lancashire, remarked with great emphasis upon the extraordinary circumstances, for he informed the jury that the child upon whom they sat had \"died\" four times, and the mother had obtained no less than three medical certificates of death, any one of which would have been sufficient for the subject to have been buried. in 1905, a mrs. holden, aged twenty-eight, living at hapton, near accrington, \"died,\" and the doctor did not hesitate',\n", + " 'p. 47',\n", + " 'to give a certificate of death, when all the arrangements for the funeral were made. fortunately, the undertaker noticed a slight twitch of the eyelids, and eventually the woman\\'s life was saved, and she lived well and strong under perfectly normal conditions. on 7th january, 1907, the midland daily telegraph reported the case of a child who \"to all intents and purposes died\" whilst an operation was being performed upon it. however, the patient who had been certified dead more than half-an-hour before recovered. on 14th september, 1908, the papers published the details of an extraordinary trance of a mrs. rees, nora street, cardiff, who appeared to have had a very narrow escape from premature burial. to go back some forty years, there may be found fully reported in the british medical journal, 31st october, 1885, the famous case of a child at stamford hill who fell into convulsions and passing into a trance was supposed to have died, recovering consciousness only after five days. hufeland, dealing with these instances of trance, remarks that \"six or seven days are often required to restore such cases. dr. charles londe says that fits of this kind \"last for days and days together,\" and that \"it seems not improbable that people may have been buried in this state in mistake for death.\" a case of exceptional interest is described as occurring in 1883 by the professor of medicine in the university of glasgow, dr. w. t. gairdner. the person whom he was treating remained in a trance which lasted twenty-three consecutive weeks, and so remarkable a circumstance attracted very considerable attention at the time, giving rise to a lengthy controversy.',\n", + " 'it should be more widely known that the ordinary simulacra of death are utterly deceptive and dr. john oswald remarks in his profound work suspended animal life, \"in consequence of an ignorant confidence placed in them persons who might have been restored to life . . . have been consigned to the grave.\" in september, 1903, dr. forbes winslow emphasized the fact that \"all the appearances of death may be so strikingly displayed in a person in a cataleptic condition that it is quite possible for burial to take place while life is not extinct,\" and he added \"i do not consider that the ordinary tests employed to ascertain that life is extinct are sufficient; i maintain that the only satisfactory proof of death is decomposition.\"',\n", + " 'p. 48',\n", + " \"even from this very hasty review, and examples might be multiplied, indeed are multiplying in every direction almost daily, terrible truth though it may be, it is obvious that premature burial is by no means an uncommon thing, whilst recovery from catalepsy or deep trances, sometimes lasting very many days, is even more frequent, and such cases have been recorded in all ages, times without number. it is, i think, exceedingly probable that extraordinary accidents of this kind, which would have been gossiped and trattled throughout large districts, and, passing from old to young, whispered round many a winter's fireside, were bound soon to have assumed the proportions of a legend which must, consciously or unconsciously, have continually gathered fresh accretions of horror and wonder in its train. it is possible, i say, that hence may have been evolved some few details which notably helped to swell the vampire tradition. i do not for a moment wish to imply that these circumstances, which we have just considered at some length, however striking and ghastly, were in any way the foundation of the belief in vampires. i would rather emphasize that the tradition goes far deeper and contains far more dark and scathful reality than this. i would not even suggest that premature burial and resuscitation from apparent death added anything essentially material to the vampire legend, but i do conceive it probable that these macabre happenings, ill-understood and unexplained, did serve to fix the vampire tradition more firmly in the minds of those who had been actual witnesses of, or who by reliable report knew of similar occurrences, and were fearful and amazed.\",\n", + " 'there are to be read examples of persons who, after death, have given evident signs of life by their movements. one such case is related by tertullian, who tell s us that he himself witnessed it, \"de meo didici.\" a young woman, who had once been in slavery, a christian, after she had been married but a few months died suddenly in the very flower of her age and happiness. the body was carried to the church, and before it was entrusted to the earth, a service was held. when the priest, who was saying the requiem \"praesente cadauere,\" raised his hands in prayer, to the astonishment of all the young girl who was lying upon her bier with her hands laid in repose at her side, also lifted her hands and gently clasped them as if she too were taking part',\n", + " 'p. 49',\n", + " 'in the supplication of the mass, and then toward the end she refolded them in the original position.',\n", + " 'tertullian also says that on one occasion, when a body was about to be interred, a body which was already in the grave seemed to draw to one side as though to make place for the newcomer.',\n", + " 'in the life of s. john the almsgiver, patriarch of alexandria, written by leontius archbishop of cyprus, we are told that when the saint who was aged sixty-four, died at amanthus in cyprus, 11th november, 616, his body was brought with great veneration and holy observance to the principal church of that place. here was opened a magnificent tomb in which two bishops had already been buried. it is said that out of respect the two bodies drew one to the right and one to the left, and that this took place in the sight of all who were present, \"non unus, neque decem, neque centum uiderunt, sed omnis turba, quae conuenit ad eius sepulturam.\" it must be remembered that archbishop leontius had his facts from those who had actually been present at the interment, and the same account may be found in the menology of symeon metaphrastes.',\n", + " 'evagrius ponticus relates the legend of a certain anchorite named thomas, who died in the nosokomeion at daphne, a suburb of antioch, where was the shrine of the martyr s. babylas. the hermit, a stranger, was buried in that part of the cemetery used for beggars and the very poor. in the morning, however, the body was found to be lying by a rich mausoleum in the most honourable part of the grounds. it was again interred, but when on the following day it was found by the sexton that the same thing had happened a second time, the people hastened to the patriarch ephraim and told him of the marvel. thereupon the body was borne with great rejoicing with an attendance of wax flambeaux and fuming frankincense into the town, and honourably enshrined with worship meet in one of the churches, and for many years the city annually observed the festival of the translation of s. thomas eremita. the same story is related by the ascetical writer, the monk johannes moschus, in his very beautiful treatise δειμών pratum spirituale, \"the spiritual meadow,\" but moschus says that the remains of the hermit rested in his grave whilst in veneration for his',\n", + " 'p. 50',\n", + " 'sanctity the bodies of those who were buried near had been found to have issued forth and modestly lay at some considerable distance.',\n", + " 'in hagiology there are many instances of the dead hearing, speaking and moving. thus in the life of s. donatus, the patron of arezzo, who succeeded the first bishop s. satyrus towards the end of the third century, we are told that eustasius, receiver-general of the revenues of tuscany, being called away on a journey, for safety sake left the public funds in the hands of his wife, euphrosina. this lady, being afraid that her house might be robbed, secretly buried the chests in the earth. she told the matter to no one, but unhappily before her husband\\'s return she expired suddenly in the night, and it was quite unknown where she had concealed her charge. eustasius was beside himself with grief and fear, for it seemed inevitable that be should be accused of peculation by his enemies, and condemned to death. in his despair he betook himself to s. donatus, and the holy man asked him that they might visit the grave of euphrosina. a great company gathered in the church, when the saint, going up to the grave, said in a loud voice that might be heard by all: \"euphrosina, tell us we pray thee, where thou didst put the public funds.\" the woman answered from her tomb, and certainly her accents were heard revealing the hiding-place. s. donatus went with the receiver-general to the spot indicated, and there they found the money carefully secured.',\n", + " 'it is related in the life of the famous anchorite, s. macarius of egypt, who died a.d. 394, that one of the monks of his laura was accused of murder, and as those who lay the charge spoke with great gravity and sureness, s. macarius bade them all resort to the grave of the deceased, where, striking his staff upon the ground, he adjured the dead man in these words: \"the lord by me bids you tell us whether this man, who is now accused of your murder, in truth committed the crime, or was in any way consenting thereto?\" immediately a hollow voice issuing from the tomb declared: \"of a truth he is wholly innocent, and had no hand at all in my death.\" \"who then,\" inquired the saint, \"is the guilty one?\" the dead man replied: \"it is not for me, my father, to bear witness; let it suffice to know that he who has been accused is innocent. leave the guilty in the hands of god. who',\n", + " 'p. 51',\n", + " 'can say whether the all-holy and compassionate god may not have mercy upon him and bring him to repentance.\"',\n", + " 'in the history of s. rheticus, as related by c. vettius aquilinus juvencus, the latin poet of the fourth century, who was so popular in the middle ages, we are told that when the saint had expired,\" his body was carried in solemn procession to the grave of his deceased wife, and suddenly, to the amazement of all present, the dead mail arose on his bier and said: \"dost thou remember well, my dear wife, that which thou didst ask me upon thy death-bed? lo, here am i come to fulfil the promise made so long syne. receive me then whom you have sweetly expected all this while.\" at these words it appeared as if the deceased wife, who had been dead for many years, revived again, and breaking the linen bands which enswathed her, she stretched forth her hands to her husband. (deprensa est laeuam protendens femina palmam, inuitans socium gestu uiuentis amoris.) the corpse was lowered into the tomb, and there the twain lie in peace, awaiting the resurrection of the just.',\n", + " 'not unsimilar is the legend of s. injurieux, whose dead body moved out of its own grave to repose in that of his wife scholastica. injurieux was a noble senator of clermont in auvergne, who married in virgin wedlock a lady of rank, scholastica. s. gregory of tours, in his historia francorum, tells us that scholastica died first, and injurieux, standing by the coffin in which her body was laid, as she was about to be carried forth to burial said in the presence of all: \"i thank thee, o, god, for having bestowed upon me this maiden treasure, which i return into thy hands unspotted, even as i received it.\" the dead wife smiled at these words, and her voice was heard to reply: \"why dost thou speak, o my husband, of these things which concern no one but ourselves?\" hardly had the lady been buried in a magnificent tomb, when the husband died also, and for some reason was temporarily interred in a separate grave, at a distance from the monument of his wife. on the next morning it was found that injurieux had left the place where he had been laid, and his dead body reposed by the side of that of scholastica. no man dared disturb the two corpses, and to the present day the senator and his wife are popularly called \"the two lovers.\"',\n", + " 'in his vies des saints monsignor guérin relates the following',\n", + " 'p. 52',\n", + " 'story s. patrick: \"st. patrice commande à la mort de rendre ses victimes afin que leur propre bouche proclame devant le peuple la vérité des doctrines qu\\'il leur annonce; ou bien il s\\'assure si son ordre de planter une croix sur la tombe des chrétiens, et non des infidèles, a été fidélement exécuté, en interrogeant les morts eux-mêmes, et en apprenant de leur bouche s\\'ils ont mérité ce consolant hommage.\"',\n", + " 'in this connexion--the tradition of a dead person who speaks--the story of s. melor may be not impertinent. about the year 400 a.d., there was a certain duke of cornwall named melian, whose brother, rivold, conspired against him and put him to death. the duke had left a young son, melor, whom the usurper feared to slay, but sent to be brought up under the strictest rule in one of the cornish monasteries, where the novice continually edified the community by his holy life, having (so it is said) the gift of miracles. after a few years rivold, being afraid lest the boy should depose him, bribed a soldier named cerialtan to murder melor secretly. this was accordingly done. the assassin cut off the head of melor, and carried it to the duke. he had murdered the boy in the depths of the forest, whither he had enticed him, and as he was making his way through the thicket lie chanced to look back his eyes being attracted by a great light. and lo, all around the body stood a company of angels, robed in white albs, and holding in their hands tapers which glistered as golden stars. when he had gone a little further, the wretched murderer was overcome by parching thirst, and almost fainting on his path he cried out in an agony: \"wretched man that i am! i die for a draught of cool water.\" then the head of the murdered boy spoke to him, saving: \"cerialtan, strike upon the grass of this lawn with thy stick, and a fountain shall spring forth for thy need.\" the man did so, and having quenched his thirst at the miraculous well, be went swiftly on his way. now when the head was brought into the presence of duke rivold this evil tyrant smote it with his hand, but he instantly sickened, and three days afterwards he died. the head was then taken back to the body and was honourably buried with it. and not many years afterwards the relics were translated with great worship to the town of amesbury, which is in wiltshire.',\n", + " \"in his histoire hagiologique du diocèse de valence, l'abbé\",\n", + " 'p. 53',\n", + " 'nadal tells us that when s. paulus succeeded s. torquatus as bishop of st-paul-trois-châteaux, shortly after his consecration a certain jew, a common usurer, came up to him in the streets of the city and loudly demanded a large sum of money which, as he said, had been lent to bishop torquatus, the predecessor of paulus. in order to ascertain whether this claim was equitable or not, s. paulus, robed in full pontificals, visited the tomb of s. torquatus in the cathedral, and touching the place of sepulture with his crozier requested torquatus to declare whether the money had been repaid or no. the voice of the dead bishop immediately answered from the grave: \"verily hath the jew received his money, returned unto him at the appointed time, with interest, ay, and double interest.\" the chronicles tell us that this undoubtedly took place, for many were present and bear witness that they both saw and heard these things.',\n", + " 'eugippius, who succeeded the martyr s. vigilius in the see of trent, has left us a life of s. severinus, who was one of the last christian bishops among the roman inhabitants of the district of the danube, immediately before the withdrawal to italy. on one occasion s. severinus having watched all night by the bier of a priest named silvanus bade him at dawn once more speak to his brethren who longed to hear his voice, for he had been an eloquent and fervent preacher. silvanus opened his eyes and the saint asked him if he wished to return to life. but the dead man answered: \"my father, detain me no longer here i pray thee, nor delay for me that hour of everlasting rest which those who sleep in jesus most sweetly enjoy.\" and then, closing his eyes, in this world he woke no more.',\n", + " 'this happening must at once bring to mind the famous miracle of s. philip neri, who was the spiritual director of the massimo family. in 1583 the son and heir of prince fabrizio massimo died of a fever at the age of fourteen, and when, amid the lamentations of the bereaved parents and the weeping relatives, s. philip entered the room, he laid his hand upon the brow of the youth, and called him by name. upon this the dead boy returned to life, opened his eyes, and sat up in the bed. \"art thou unwilling to die?\" asked the saint. \"no,\" sighed the youth gently. \"art thou resigned to yield they soul?\" \"i am.\" \"then go,\" said s. philip. \"va,',\n", + " 'p. 54',\n", + " 'che sii benedetto, e prega dio per noi!\" the boy sank back on his pillow with a heavenly smile, and a second time expired. on 16th march every year a festa is held in the family chapel within palazzo massimo in memory of this miracle.',\n", + " 'it is related in the life of s. theodosius the cenobite, written by bishop theodore of petra (536), that a large sepulchre having been made near the monastery, s. theodosius said: \"the tomb is now finished indeed, but who will be the first among us to occupy it?\" whereupon a certain monk named basil, falling upon his knees, prayed that this honour might be his, and within the space of about a month, without pain or disease, he passed away as a man who takes his rest in sleep. yet for full forty days afterwards s. theodosius, at matins and at the other hours, saw the dead monk still occupying his place in the choir. it was he alone who saw the monk, but others, especially one aetius, heard his voice. whereupon theodosius prayed that all might see the apparition of basil, and assuredly the eyes of all were opened so that they beheld him in his wonted place in their midst. when aetius would joyfully have embraced the figure it vanished from his touch, saying the words: \"hold, aetius. god be with you, my father and my brethren. but me shall ye see and hear no more.\"',\n", + " 'it was the custom of s. gregory, bishop of langres, to rise from his bed at night, when everyone else was fast in repose, and going quietly into the church to spend several hours at his devotions. this was long unobserved, but it so happened that one night one of the brethren lay awake, and he observed the bishop on his way down the corridors. from curiosity he stole softly after him, and presently saw him enter the baptistry, the door of which seemed to open to him of its own accord. for some time there was silence; and then the voice of the bishop was heard chanting aloud the antiphon, when immediately afterwards many voices took up the psalm, and the singing, decani and cantori, continued for the space of three hours. \"i, for my part;\" says s. gregory of tours, \"think that the saints, whose relics were there venerated and preserved, revealed themselves to the blessed man, and hymned praises to god in company with him.\"',\n", + " 'examples of later date when under exceptional conditions dead persons have returned to life, are not infrequently to',\n", + " 'p. 55',\n", + " 'be found. s. stanislaus the martyr, bishop of cracow,',\n", + " 'a not dissimilar incident is said to have occurred in the life of s. antony of padua, whose father was accused at lisbon of having been privy to the death of a certain nobleman, even if he had not actually slain him, as was implied. the saint, having requested that the body of the murdered man should be brought into court, solemnly adjured him saying: \"is it true that my father in any way consented unto or contrived thy assassination?\" with a deep groan the body made reply: \"in no wise is the accusation true. it is altogether false and framed of malice.\" whereupon the magistrates convinced by this positive declaration set free the prisoner.',\n", + " 'on 9th march, 1463, s. catherine of bologna, a poor clare, died at the convent there, and so great was her reputation for sanctity that rather more than a fortnight after her burial, her body was disinterred and placed in the church upon an open bier for the veneration of all. the vast, crowds who came were struck with the fact that her face retained a fresh and glowing colour, far more lively, indeed, than during her life. amongst others who visited the remains was a little maid of eleven years old by name leonora poggi. as out of reverence she stood at some distance, it was noticed that the',\n", + " 'p. 56',\n", + " 'body not only opened wide its eyes, but made a sign with the hand, saying: \"leonora, come hither.\" the girl advanced trembling, but s. catherine added: \"do not be afraid; you will be a professed nun of this community, and all in the convent will love you. nay, more, you shall be the guardian of this, my body.\" eight years afterwards leonora refused the hand of a wealthy suitor of high rank, and took the veil in the house of corpus domini. here she lived for no less than five and fifty years, reaching an extreme old age with the love and respect of the whole sisterhood. she was indeed for half a century the guardian of the most holy relic of the body of s. catherine.',\n", + " 'immediately after the death of that great ecstatica, s. maria maddelena de pazzi, who expired 25th may, 1607, the body of the holy carmelite was honourably laid upon a catafalque in the nuns\\' church of s. maria degli angeli, whilst all florence thronged thither to kiss her feet and touch were it but her raiment with medals and rosaries. among the first who visited the convent and who were favoured by being allowed to venerate the body before the multitude won admittance was a certain pious jesuit, father seripandi, and in his company chanced to be a young man of noble family whom he was striving to turn from the most dissolute courses. whilst the good priest knelt in prayer the youth scanned intently the countenance of the saint, but she frowning slightly gently turned away her face as if offended at his gaze. he stood abashed and dumbfounded, when father seripandi said: \"verily, my son, this saint would not suffer your eyes to behold her, inasmuch as your life is so licentious and lewd.\" \"it is true,\" cried the young man, \"but god helping me i will amend my ways in every particular.\" he did so, and before long was distinguished by no ordinary piety and observance of religion.',\n", + " 'similar cases of the resuscitation of the dead, corpses that arose from their graves, the movement of dead bodies, might indeed be almost indefinitely multiplied. and it is not at all impossible that as these extraordinary circumstances happened in the lives of the saints, so they would be imitated and parodied by the demon, for, as tertullian has said, \"diabolus simia dei.\"',\n", + " 'it has been well remarked that man has always held the',\n", + " 'p. 57',\n", + " 'dead in respect and in fear. the christian faith, moreover, has its seal upon the sanctity of death. even from the very infancy of humanity the human intelligence, inspired by some shadow of the divine truth, has refused to believe that those whom death has taken are ought but absent for a while, parted but not for ever. it has been argued, and not without sound sense, that primitive man desired to keep the dead, to preserve the mortal shell, and what are the tomb, the cave of prehistoric man, the dolmen of the gaulish chieftain, the pyramid of pharaoh, but the final dwelling-place, the last home? as for the actual corpse, this still had some being, it yet existed in the primitive idea. there can be nothing more horrible, no crime more repellent, than the profanation of the dead.',\n", + " 'dr. épaulard says: \"les vraies et graves profanations, de veritables crimes, reconnaissent pour mobile les grandes forces impulsives qui font agir l\\'être humain. je nommerai cela vampirisme, quitte à expliquer par la suite l\\'origine de cette appellation.',\n", + " '\"l\\'instinct sexuel, le plus perturbateur de tons les instincts, doit être cité en première ligne comme, l\\'un des facteurs les plus importants du vampirisme.',\n", + " '\"la faim, besoin fondamental de tout être vivant, aboutit dans quelques circonstances à des actes du vampirisme. on pourait citer maint naufrage et maint siège célèbre on la nécessité fit loi. le cannibalisme du bien des tribes savages n\\'a pas d\\'autre origine que la faim à satisfaire.',\n", + " 'chez l\\'homme se développe énormément l\\'instinct de propriété. d\\'où le travail, d\\'où, chez certains, le vol. nous venons de voir que la coutume de tons les temps fut d\\'orner les morts de ce qu\\'ils aimaient à posséder. les voleurs n\\'ont pas hésité à dépouiller les cadavres. . . . les parlements et les tribunaux eurent assez souvent à châtier des voleurs sacrilèges.\"',\n", + " 'vampirism, then, in its extended and more modern sense, may be understood to mean any profanation of a dead body, and it must accordingly be briefly considered under this aspect. \"on doit, entendre par vampirisme toute profanation de cadavres, quel que soit son mode et quelle que soit son origine.\"',\n", + " 'in france there have been many cases of sacriligious theft from the dead. in 1664 jean thomas was broken on the wheel for having disinterred the body of a woman and stolen',\n", + " 'p. 58',\n", + " 'the jewels in which she was buried; and well-nigh a century before, in 1572, a grave-digger jean regnault was condemned to the galleys for having stolen jewels and even winding-sheets from corpses. in 1823, pierre renaud was sentenced at riom for having opened a tomb with intent to steal. not many years after, the police captured the band \"de la rue mercadier,\" seven ruffians who made it their business to violate graves and the vaults of rich families and who thus had stolen gems and gold to the value of no less than 300,000 francs. it is well-known that the notorious ravachol forced open the tomb of madame de rochetaillée in the expectation that she had been buried in her jewels, but found nothing of this kind, as the lady was merely wrapped in her shroud of lawn.',\n", + " 'on 12th july, 1663, the parliament of paris heavily sentenced the son of the sexton of the cemetery attached to saint-sulpice. this young wretch was in the habit of exhuming corpses and selling them to the doctors. in the seventeenth century the faculty of paris was allowed one dead body a year, and the famous physician, mauriccau lay under grave suspicion of having illegally procured bodies to dissect for his anatomical studies.',\n", + " \"in england the resurrection men added a new terror to death. even the bodies of the wealthy, when every precaution had been taken, were hardly safe against the burgling riflers of vault and tomb, whilst to the poor it was a monstrous horror as they lay on their sick beds to know that their corpses were ever in danger of being exhumed by ghouls, carted to the dissection theatre, sold to 'prentice doctors to hack and carve. in his novel, the mysteries of london, g. w. m. reynolds gives a terrible, but perhaps not too highly coloured, picture of these loathsome thefts. irregular practitioners and rival investigators in the anatomy schools were always ready to buy without asking too many questions. body-snatching became a regular trade of wide activities. one of the wretches who plied the business most successfully even added a word to the english language. william burke, of the firm burke and hare, who was hanged 28th january, 1829, began his career in november, 1827. this seems to have commenced almost accidentally. hare was the keeper of a low lodging-house in an edinburgh slum, and here died an old soldier owing a considerable amount for his rent. with\",\n", + " 'p. 59',\n", + " 'the help of burke, another of his guests, they carried the corpse to dr. robert knox, of 10 surgeon\\'s square, who promptly paid £7 10s. for it. the scotch had the utmost horror of resurrection men, and bodies were not always easy to procure, although the vile knox boasted that he could always get the goods he required. it is said that relations would take it in turns to stand guard over newly-dug graves, and the precaution was not unnecessary. another lodger at hare\\'s fell ill, and it was decided that he should be disposed of in the same way. but he lingered, and so burke smothered him with a pillow, hare holding the victim\\'s legs. dr. knox paid £10 for the remains. since money is so quickly earned they do not hesitate to supply the wares. a friendless beggar woman; her grandson, a dumb-mute; a sick englishman; a prostitute named mary paterson, and many more were enticed to the lodgings and murdered. quite callously burke confessed his method. he used to lie on the body while hare held nose and mouth; \"in a very few minutes the victims would make no resistance, but would convulse and make a rumbling noise in their bellies for some time. after they had ceased crying and making resistance we let them die by themselves.\" dr. knox contracted that he would pay £10 in winter and £8 in summer for every corpse produced. at last the whole foul business comes to light.',\n", + " 'up the close and down the stair,',\n", + " 'but and ben with burke and hare,',\n", + " \"burke's the butcher, hare's the thief,\",\n", + " 'knox the boy that buys the beef.',\n", + " \"so sang the street urchins. burke confessed, and was hanged. hare turned king's evidence, but it would seem that was hardly needed, for the suspicion which connected these ruffians with the numerous disappearances was overwhelming from the first, and soon became certainty. it was a grave scandal that both the villains and their paramours, together with dr. knox, who, in spite of his denials, undoubtedly was well aware of the whole circumstances, were not all five sent to the gallows. it is true that the mob endeavoured to catch them and would have torn them to pieces. to the mob they should have been duly thrown. that they escaped by some legal quibble or flaw speaks ill indeed for the age.\",\n", + " 'p. 60',\n", + " 'that species of vampirism known as necrophagy or necrophagism, which is cannibalism, is very often connected with the religious rites of savage people and also finds a place in the sabbat of the witches. sir spenser st. john, in his description of haiti, gives curious details of the voodoo cult when cannibalism mingles with the crudest debauchery. among the kwakiutl indians of british columbia the cannibals (hamatsas) are the most powerful of all the secret societies. they tear corpses asunder and devour them, bite pieces out of living people, and formerly they ate slaves who had been killed for their banquet. the haida indians of the queen charlotte islands practise a very similar religion of necrophagy. among the ancient mexicans the body of the youth whom they sacrificed in the character of the god tetzcatlipoca was chopped up into small pieces and distributed amongst the priests and nobles as a sacred food. in australia the bibinga tribe cut up the bodies of the dead and eat them in order to secure the reincarnation of the deceased. the same ceremony was observed by the arunta. casper, vierteljahrschrift, viii (p. 163) mentions the case of an idiot who killed and ate a baby in order to impart to himself the vitality of the child. it should be remarked that necrophagy enters very largely into the passions of the werewolf, and there are innumerable examples of lycanthropists who have devoured human flesh, and slain men to feed upon their bodies. boguet recounts that in the year 1538 four persons charged with sorcery, jacques bocquet, claude jamprost, clauda jamguillaume and thievenne paget, confessed that they had transformed themselves into wolves and in this shape had killed and eaten several children. françoise secretain, pierre gandillon and george gandillon also confessed that they had assumed the form of wolves and caught several children whom they had stripped naked and then devoured. the children\\'s clothes were found without rent or tear in the fields, \"tellement qu\\'il sembloit bien que ce fust vne personne, qui les leur eut deuestus.\"',\n", + " 'a remarkable instance of necrophagy which caused a great noise in the eighteenth century is said to have given de sade a model for minski, \"l\\'ermite des appenins,\" in juliette, iii (p. 313). the horrible abode of this muscovite giant is amply described. the tables and chairs are made of human bones,',\n", + " 'p. 61',\n", + " 'and the rooms are hung with skeletons. this monster was suggested by blaise ferrage, or seyé, who in 1779 and 1780 lived in the pyrenees, and captured men and women whom he devoured.',\n", + " 'one of the most terrible and extraordinary cases of cannibalism was that of sawney beane, the son of peasants in east lothian, who was born in a village at no great distance from edinburgh towards the close of the fourteenth century. he and a girl in the same district wandered away in company, and took up their abode in a cave on the coast of galloway. it is said this cavern extended nearly a mile under the sea. here they lived by robbing travellers, and carrying off their bodies to their lair they cooked and ate them. eight sons and six daughters they gendered, and the whole tribe used to set forth upon marauding expeditions, sometimes attacking as many as five and six persons travelling in company. grandchildren were born to this savage, and it is said that for more than five and twenty years these cannibals killed men on the highway and dragging the prey to their lair fed upon human flesh. suspicion was often aroused, and even panic ensued, but so skilfully had nature concealed the opening to the cave that it was long ere the gang could be traced and captured. the whole family were put to death amid the most horrible torments in the year 1435 at edinburgh. it is probable that in the first place beane and his female companion were driven to necrophagy by starvation, and the horrid craving for human flesh once tasted became a mad passion. the children born into such conditions would be cannibalistic as a matter of course.',\n", + " 'sawney beane was made the subject of a romance--sawney beane, the man-eater of midlothian, by thomas preskett prest, who, between the years 1840 and 1860 was the most famous and most popular purveyor of the \"shocker\" which circulated in immense numbers. prest\\'s greatest success was sweeney todd, a character who was once supposed actually to have lived, but who is almost certainly fiction. it will be remembered that todd\\'s victims disappeared through a revolving trap-door into the cellars of his house. their bodies, when stripped and rifled, were handed over to be used by mrs. lovett, who resided next door and kept a pie-shop which was greatly frequented. once it so happened that the supply ran short',\n", + " 'p. 62',\n", + " 'for a while, as todd for some reason was unable to dispatch his customers, and mutton was actually used in the pies. complaints were made that the quality of the pies had deteriorated, the meat had lost its usual succulence and flavour.',\n", + " 'in a manuscript, which has never been printed, written about 1625 by the brother of henry percy, ninth earl of northumberland, george percy, who was twice deputy-governor of virginia, and entitled a trewe relatyon of the proceedings and occurrences of momente which have happened in virginia from . . . 1609 untill 1612, details are given of the terrible conditions under which the early colonists had to live. starvation sometimes faced them, and not only were corpses then dug out of graves and eaten, but \"one of our colony murdered his wife . . . and salted her for his food, the same not being discovered before he had eaten part thereof, for which cruel and inhuman fact i adjudged him to be executed, the acknowledgment of the deed being enforced from him by torture, having hung by the thumbs, with weights at his feet a quarter of an hour before he would confess the same.\"',\n", + " 'as is often recorded in history during long and terrible sieges, starvation has driven the wretched citizens of a beleagured town to devour human flesh. an example of this may be found in the bible, which tells us of the horrors when jerusalem was encompassed by benadad of syria during the reign of king joram (b.c. 892), kings iv (a. v. kings ii), vi, 24-30: \"congregauit benadad rex syriae, uniuersum exercitum suum, et ascendit, et obsidebat samariam. factaque est fames magna in samaria: et tamdiu obsessa est, donec uenundaretur caput asini octoginta argenteis, et quarta pars cabi stercoris columbarum quinque argenteis. cumque rex israel transiret per murum, mulier quaedam exclamauit ad eum; dicens: salua me domine mi rex. qui ait: non te saluat dominus: unde te possum saluare? de area, uel de torculari? dixitque ad eam rex: quid tibi uis? quae respondit: mulier ista dixit mihi: da filium tuum, ut comedamus eum hodie, et filium meum comedemus eras. coximus ergo filium meum, et comedimus. dixique ei die altera: da filium tuum ut comedamus eum. quae abscondit filium suum. quod cum audisset rex, scidit uestimenta sua, et transibat per murum. uiditque omnis populus cilicium, quo uestitus erat ad carnem intrinsecus.\"',\n", + " 'p. 63',\n", + " \"(benadad king of syria gathered together all his army, and went up, and besieged samaria. and there was a great famine in samaria; and so long did the siege continue, till the head of an ass was sold for fourscore pieces of silver, and the fourth part of a cabe of pigeon's dung, for five pieces of silver. and as the king of israel was passing by the wall, a certain woman cried out to him, saying: save me, my lord o king. and he said: if the lord doth not save thee how can i save thee? out of the barnfloor, or out of the winepress? and the king said to her: what aileth thee? and she answered: this woman said to me: give thy son, that we may eat him to-day, and we will eat my son to-morrow. so we boiled my son, and ate him. and i said to her on the next day: give thy son that we may eat him. and she hath hid her son. when the king heard this, he rent his garments, and passed by upon the wall. and all the people saw the hair-cloth which he wore within next to his flesh.)\",\n", + " 'w. a. f. browne, sometime commissioner for lunacy in scotland, has a very valuable paper necrophilism, which was read at the quarterly meeting of the medico-psychological association, glasgow, 21st may, 1874. he points out that in ireland, under the savagery of queen elizabeth, when the rich pastures were burned into a wilderness, \"the miserable poor . . . out of every corner of the woods and glens came creeping forth upon thin hands, for their legs could not bear them, they looked like anatomes of death; they spoke like ghosts crying out of their graves; they did eat the dead carrions; happy when they could find them; yea, they did eat one another soon after; insomuch as the very carcasses they spared not to scrape out of their very graves.\" during the siege of jerusalem by titus, during the plague in italy in 450, cannibalism was rife. during a famine in france in the eleventh century \"human flesh was openly exposed for sale in the market-place of tournus.\" a man had built a hut in the forest of macon and here he murdered all whom he could entice within his doors, afterwards roasting the bodies and feeding on them. browne says that there came under his notice in the west indies two females who frequented graveyards at night. it does not appear that they exhumed bodies but they used to sleep among the tombs, and these dark wanderings, as might be expected, thoroughly scared',\n", + " 'p. 64',\n", + " 'the native population. he also adds: \"the abodes of the dead have been visited, violated; the exhumed corpses, or parts of them, have been kissed, caressed, or appropriated, and carried to the homes of the ravisher, although belonging to total strangers.\" he also says: \"i was much struck, when frequenting the parisian asylums as a student, with the numbers of anæmic, dejected females who obtruded upon me the piteous confession that they had eaten human flesh, devoured corpses, that they were vampires, etc.\" dr. legrande du saulle says that in many members of a scottish family there appeared connate necrophagism. prochaska mentions a woman of milan also tempted children to her house and ate them at her leisure. a girl of fourteen, belonging to puy de drôme, is described as having displayed on all occasions an extraordinary avidity for human blood and as sucking greedily recently inflicted wounds. the brigand gaetano mammone, who long terrorized south italy, was accustomed as a regular habit to drain with his lips the blood of his unhappy captives. in another instance a man who dwelt apart in a cave in the south of france seized a girl of twelve years old, strangled her, violated the corpse, and then inflicting deep gashes upon it with a knife drank the blood and devoured the flesh. he kept the remains in his retreat but subsequently interred them. he was judged insane.',\n", + " 'in the sixteenth century there dwelt in hungary a terrible ogress, the countess elisabeth ba\\'thory, who for her necro-sadistic abominations was known as \"la comtesse hongroise sanguinaire.\" the comte de charolais (1700-1760), \"de lugubre mémoire,\" loved nothing better than to mingle murder with his debauches, and many of the darkest scenes in juliette but reproduce the orgies he shared with his elder brother, the duke of burgundy.',\n", + " \"dr. lacassagne, in his study vacher l'éventreur et les crime's sadiques, lyon-paris, 1899, has collected many cases of necro-sadism. joseph vacher, who was born at beaufort (isère), 16th november, 1869, was guilty of a series of crimes which lasted from may, 1894, to august, 1897. he was tramping during those years up and down france, immediately after his release as cured from an asylum where be had been confined for attempting to rape a young servant who refused his hand in marriage. vacher's first crime seems to have been committed\",\n", + " 'p. 65',\n", + " \"19th may, 1894, when in a lonely place he killed a working girl of twenty-one. he strangled her and then violated the body. on 20th november of the same year he throttled a farmer's daughter aged sixteen at vidauban (var), violated the body and mutilated it with his knife. in the same way on 1st september, 1895 at bénonces (ain), he killed a lad of sixteen, victor portalier, and slashed open the stomach. three weeks later he strangled a shepherd boy of fourteen, pierre massot-pellet, and mutilated the body. in all some eleven murders with violation were traced to vacher, the last being that of a shepherd lad aged thirteen, pierre laurent, at courzieu (rhône), 18th june, 1897. the body was indescribably hacked and bitten. probably this maniac was guilty of many more assaults which did not come to light.\",\n", + " \"in england the sensation caused by the mysterious mutilations by jack the ripper will not easily be forgotten. the first body was found at whitechapel, 1st december, 1887; the second, which had thirty-nine wounds, 7th august, 1888. on 31st of the same month a woman's corpse was found horribly mutilated; 8th september a fourth body bearing the same marks, a fifth on 30th september; a sixth on 30th november. on the 1st june, 1889, human remains were dredged from the thames; 17th july a body still warm was discovered in a whitechapel slum; on 10th september of the same year the last body.\",\n", + " 'the classic instance of \"vampirism,\" serjeant bertrand, will be fully dealt with in a later chapter.',\n", + " 'andréas bickel killed women after having both raped and mutilated them in an indescribable manner. dr. épaulard quoting from feuerbach, ahtenmœsigen darstellung merkwürdzer verbrechen says that bichel declared: \"je puis dire qu\\'en ouvrant la poitrine, j\\'étais tellement, excité que je tressaillais et que j\\'aurais voulu trancher un morceau de chair pour le manger.\" in the year 1825 a vine-dresser named léger, a stalwart fellow of four and twenty, left his home to find work. he wandered about the woods for a week or more, and was then seized with a terrible craving to eat human flesh. \"il rencontre une petite fille de douze ans, la viole, lui déchire les organes génitaux, lui arrache le coeur, le mange et boit son sang, puis enterre le cadavre. arrêté peu après, il fait tranquillement l\\'aveu de son crime, est condamné et executé.\"',\n", + " 'p. 66',\n", + " 'a famous case was that of vincenzo verzeni, a necrophagist and necrosadist, who was born at bottanuco of an ailing and impoverished stock and arrested in 1872 for the following crimes: an attempt to strangle his cousin marianna, a girl of twelve years old; a similar attempt to throttle signora aruffi; aged twenty-seven; a similar attempt upon signora gala; the murder of giovanna motta (les viscères et les parties génitales sont arrachées du corps, les cuisses lacérées, un mollet detaché. le cadavre est nu); the murder and mutilation of signora frizoni, aged twenty-eight; an attempt to strangle his cousin maria previtali, aged nineteen. whilst he was committing these crimes \"pour prolonger le plaisir, il mutila ses victimes, leur suça le sang, et détacha même des lambeaux pour les manger.\"',\n", + " 'those vampirish atrocities which are urged by sexual mania are generally classified as necrophilia and necrosadism--\"la nécrophilie est la profanation qui tend à toute union sexuelle avec le cadavre: coït normal ou sodomique, masturbation, etc. le nécrosadisme est la mutilation des cadavres destinée à provoquer un éréthisme génital. le nécrosadisme diffère du sadisme en ce qu\\'il ne recherche pas la douleur, mais la simple destruction d\\'un corps humain. les nécrosadisme aboutit parfois à des actes de cannibalisme qui peuvent prendre le nom de nécrophagie . . . . nécrophiles et nécrosadiques sont la plupart du temps des dégénéres impulsifs on debiles mentaux, ce que prouvent lour vie antérieure et leurs tares héréditaires. ce sont en outre bien souvent des hommes auxquels un contact professionel avec le cadavre a fait perdre toute répugnance (fossoyeurs, prêtres, étudiants en médicine).\" the word nécrophilie seems, to have been first suggested by a belgian alienist of the nineteenth century, dr. guislain; nécrosadisme is used by dr. épaulard.',\n", + " \"necrophilia was not unknown in ancient egypt, and was carefully provided against as herodotus tells us, book ii, lxxxix: τὰσδε γυναῖκας τῶν ἐπιφάνεων ἀνδρῶν, ἐπεὰν τελευτήσωσι, οὐ παραυτίκα διδοῦσι ταριχεύειν οὐδὶ ὁ?`σαι ἀ?'ν ἑ?`ωσι εὐειδέες κάρτα καὶ λόγου πλεῦνος γυναῖκες?: ἀλλ᾽ὲπεὰν τριταῖαι ἡ?` τεταρτραῖαι γένωνται, οὑ?'τω παραδιδοῦσι τοῖσι ταριχεύουσι· το̃ῦτο δε ποιεῦσι οὐ?'τω τοῦδε εἱ?'νεκεν, ἱ?'να μὴ σφι οῖ ταριχευταὶ μίσγωνται τῇσι γυναιξί?: λαμφθῆναι γαρ τινὰ φασὶ μισγόμενον νεκρῷ προσφάτῳ γυναικός κατειπεῖν δὲ τὸν ὁμότεχνον· wives of noblemen and women\",\n", + " 'p. 67',\n", + " 'of great beauty and quality are not given over at once to the embalmers; but only after they have been dead three or four days; and this is done in order that the embalmers may not have carnal connexion with the corpse. for it is said that one was discovered in the act of having intercourse with a fair woman newly dead, and was denounced by his fellow-workman.\"',\n", + " 'it was said that after periander, tyrant of corinth, had slain his wife he entered her bed as a husband. in the praxis rerum criminalium of damhouder, at the end of the sixteenth century we have: \"casu incidit in memoriam execrandus ille libidinis ardor, quo quidam feminam cognoscunt mortuam.\"',\n", + " 'a very large number of cases of necrophilia has been collected by various authorities, of which it will suffice to give but a few examples. \"en 1787, près de dijon, à cîteaux, un mien aïeul, qui était médecin de cette célèbre abbaye, sortait un jour du convent pour aller voir, dans une cabane située au milieu des bois, la femme d\\'un bûcheron que la veille il avait trouvée mourante. le mari, occupé à de rudes travaux, loin de sa cabane, se trouvait forcé d\\'abandonner sa femme qui n\\'avait ni enfants, ni parents ni voisins autour d\\'elle. en ouvrant la porte du logis, mon grand-père fut frappé d\\'un spectacle monstrueux. un moine quêteur accomplissait l\\'acte du coït sur le corps de la femme qui n\\'était plus qu\\'un cadavre.\"',\n", + " 'in 1849 the following case was reported: \"il venait de mourir une jeune personne de seize ans qui appartenait a une des premières familles de la ville. une partie de la nuit s\\'était écoulée lorsqu\\'on entendit dans la chambre de la morte le bruit d\\'un meuble qui tombait. la mère, dont l\\'appartement était voisin, s\\'empressa d\\'accourir. en entrant, elle apperçut un homme qui s\\'échappait en chemise du lit de sa fille. son effroi lui fit pousser de grands cris qui réunirent autour d\\'elle toutes les personnes de la maison. on saisit l\\'inconnu qui ne répondait que confusément aux questions qu\\'on lui posait. la première pensée fut que c\\'était un voleur, mais son habillement, certains signes dirigèrent les recherches d\\'un autre côté et l\\'on reconnut bientôt que la jeune fille avait été déflorée et polluée plusiers fois. l\\'instruction apprit que la garde avait été gagnée à prix d\\'argent: et bientôt d\\'autres révélations prouvèrent que ce malheureux, qui avait',\n", + " 'p. 68',\n", + " 'reçu une éducation distinguée, jouissait d\\'une très grande aisance et était lui-même d\\'une bonne famille n\\'en était pas à son coup d\\'essai. les débats montrérent qu\\'il s\\'était glissé un assez grand nombre de fois dans le lit de jeunes filles mortes et s\\'y était livré à sa détestable passion.\"',\n", + " 'in 1857 the case of alexandre siméon, a necrophilist who was always feeble-minded--he was born in 1829, a foundling--and who eventually became wholly insane, attracted considerable attention. his habits were of the most revolting nature, and \"siméon, trompant la surveillance, s\\'introduisait dans la salle de morts quand il savait que le corps d\\'une femme venait d\\'y être déposé. là, il se livrait aux plus indignes profanations. il se vanta publiquement de ces faits.\"',\n", + " 'dr. morel, gazette hebdomadaire de médicine et de chirurgie, 13th march, 1857, relates: \"un acte semblable à, celui de siméon a été commis à la suite d\\'un pari monstrueux, par un élève d\\'une école secondaire de médicine, en présence de ses camarades. il est bon d\\'ajouter que cot individu, quelques années plus tard, est mort aliéné.\"',\n", + " 'dr. moreau, of tours, in his famous study aberrations du sens génésique, 1880, quoting from the evénement, 26th april, 1875, relates an extraordinary case at paris in which the culprit, l-----, was a married man and the father of six children. the wife of a neighbour having died, l-----undertook to watch in the death chamber, whilst the family were arranging the details of the interment. \"alors une idée incompréhensible, hors nature, passa par l\\'esprit du veilleur de la morte. il souffla, les bougies allumées près du lit, et ce cadavre, glacé, raidi, déjà, au décomposition fut le proie de ce vampire sans nom.\" the profanation was almost immediately discovered owing to the disorder of the bed and other signs. l----- fled, but at the instance of dr. pousson and the husband, who was half mad with grief and rage, he was arrested and inquiry made. a quel délire a-t-il obéi?',\n", + " 'in les causes criminelles et mondaines, 1886, albert bataille gives an account of henri blot, \"un assez joli garçon de vingt-six ans, à figure un peu blème. ses cheveux sont ramenés sur le front, à la chien. il porte à la lèvre supérieure une fine moustache soigneusement effilée. ses yeux, profondement noirs, enfoncés dans l\\'orbite, sont clignotants. il a quelque chose de félin dans l\\'ensemble de la physionomie; quelque',\n", + " 'p. 69',\n", + " 'chosi aussi de l\\'oiseau de nuit.\" \"le 25 mars, 1886, dans la soirée, entre 11 heures et minuit blot escalade une petite porte donnant dans le cimetière saint-ouen, se dirige vers la fosse commune, enlève la cloison qui retient la terre sur la dernierè bière de la rangée. une croix piquée au-dessus de la fosse lui apprend quo le cercueil est le corps d\\'une jeune femme de dix-huit ans, fernando méry, dite carmanio, figurante de théâtre, enterrée la veille.',\n", + " '\"il déplace la bière, l\\'ouvre, retire le corps de la jeune fille qu\\'il emporte à l\\'extremité de la tranchée, sur le remblai. là, il pose, par précaution, ses genoux sur des feuilles de papier blanc enlevées à des bouquets et pratique le colt sur le cadavre. ensuite, il s\\'endort probablement, et ne se réveille que pour sortir du cimitière assez à temps pour ne pas être vu, mais trop tard pour replacer le corps.\" a curious point is that when the profanation was discovered a man named duhamel wrote a letter avowing that he had committed the violation. he was confined at mazas, since he gave such full details that he was truly believed to have been guilty. whilst under the observation of two doctors he proved to be of unsound mind. on 12th june blot again violated a tomb, he fell asleep, was discovered and arrested. on 27th august, when brought to trial, and the judge expressed his horror of such acts, he replied callously: \"que voulez-vous, chacun a ses passions. moi le cadavre, c\\'est la mienne!\" dr. motet was unable to certify him insane, and he was sentenced to two years\\' imprisonment.',\n", + " 'dr. tiberius of athens communicated the following case. a young medical student, some seven years ago, made his way at night into the mortuary chapel where lay the body of a beautiful actress who had just died, and for whom he had long nourished an insensate passion. covering the cold clay with passionate kisses he violated the corpse of his inamorata. it should be remarked that the body had been dressed in the richest costume and covered with jewels, as it was to be carried thus in the funeral procession.',\n", + " 'necrophilia is said to be common in certain eastern countries. \"en turquie, dans les endroits où les cimetières sont mal gardés, on a souvent vu, parâit-il d\\'abjects individus, la lie du peuple, contenter sur des cadavres qu\\'ils exhumaient leurs désirs sexuels.\"',\n", + " 'p. 70',\n", + " 'the case of victor ardisson, who was called by the papers \"le vampire du muy,\" and who was arrested in 1901 upon multiplied charges of the exhumation and violation of dead bodies, was studied in great detail by dr. épaulard, who summed up his verdict in these words: \"ardisson est un débile mental inconscient des actes qu\\'il accomplit. il a violé des cadavres parce que, fossoyeur, il lui était facile de se procurer des apparences de femme sous forme de cadavres auxquels il prêtait une sorte d\\'existence.\"',\n", + " 'the motive of the leopold and loeb case which occurred at chicago, and which was so widely discussed throughout america in 1924 was necrosadism. having killed the unfortunate boy the two wretched degenerates violated the body. it may not untruly be said that this morbid crime sprang in the first place from a false philosophy. with ample money at their command, their minds rotted with the backwash of freud, these two young supermen conceived themselves above all laws. they had exhausted every erotic emotion, and sought something new to thrill their jaded nerves. these vilenesses and abominations would be ended by a return to the true philosophy, the lore of the schoolmen and doctors.',\n", + " 'there are not unknown--in fact there are not uncommon--amazing cases of what may be called \"mental necrophilia,\" a morbid manifestation for which suitable provision is made in the more expensive and select houses of accomodation.',\n", + " 'in his study la corruption fin-de-siècle léo taxil remarks: \"une passion sadiste des plus effrayantes est celle des détraqués auxquels on a donné le nom. de \\'vampire.\\' ces insensés veulent violer des cadavres. cette dépravation du sens génésique, dit le docteur paul moreau de tours constitue le degré le plus extrême des déviations de l\\'appetit vénérien.\" he also speaks of \"chambres funèbres\" as being not uncommon in certain brothels. \"d\\'ordinaire, on dispose, dans une pièce de l\\'établissement des tentures noires, un lit mortuaire, en un mot, tout un appareil lugubre. mais l\\'un des principaux lupanars de paris a, en permanence, une chambre spéciale, destinée aux clients qui désirent tâter du vampirisme.',\n", + " '\"les murs de la chambre sout tendus de satin noir, parsemi de larmes d\\'argent. au milieu est un catafalque, très riche. une femme, paraissant inerte, est là, couchée dans un cercueil découvert, la tête reposant sur un coussin de velours. tout',\n", + " 'p. 71',\n", + " \"autour, de longs cierges, plantés dans de grandes chandeliers d'argent. aux quatre coins de la pièce, des urnes funéraires et des cassolettes, brûlant, avec des parfums, un mélange d'alcool et de sel gris, dont les flammes blafardes, qui éclairent le catafalque, donnent à la chair de la pseudo-morte la couleur cadavérique.\",\n", + " '\"le fou luxurieux, qui a payé dix louis pour cette séance, est introduit. il y a un prie-dieu oû\\'il s\\' agenouille. un harmonium, placé dans un cabinet voisin, joue le dies irae ou le de profundis. alors, aux accords de cette musique de funérailles le vampire se rue sur la fille qui simule la défunte et qui a ordre de ne pas faire un mouvement, quoiqu\\'il advienne.\"',\n", + " 'it might not unreasonably be thought that the catafalque, the bier, the black pall, would arouse solemn thoughts and kill desire, but on the contrary this funeral pomp and the trappings of the dead are considered in certain circles the most elegant titillation, the most potent and approved of genteel aphrodisiacs.',\n", + " 'latina & mittelhochdeutsch',\n", + " 'uf dem anger',\n", + " 'floret silva nobilis',\n", + " 'floribus et foliis.',\n", + " 'ubi est antiquus',\n", + " 'meus amicus? ah!',\n", + " 'hinc equitavit',\n", + " 'eia, quis me amabit? ah!',\n", + " 'floret silva undique,',\n", + " 'nah mime gesellen ist mir wê.',\n", + " 'gruonet der walt allenthalben,',\n", + " 'swâ ist min geselle alse lange? ah!',\n", + " 'der ist geriten hinnen,',\n", + " 'o wî, wer sol mich minnen? ah!',\n", + " 'english',\n", + " 'on the green',\n", + " 'the noble woods are burgeoning',\n", + " 'with flowers and leaves.',\n", + " 'where is the lover',\n", + " 'i knew? ah!',\n", + " 'he has ridden off!',\n", + " 'oh! who will love me? ah!',\n", + " 'the woods are burgeoning all over,',\n", + " 'i am pining for my lover.',\n", + " 'the woods are turning green all over,',\n", + " 'why is my lover away so long? ah!',\n", + " 'he has ridden off,',\n", + " 'oh woe, who will love me? ah!']},\n", + " 'pop': {'meta': {'train_data': ['make a monkey out, make a monkey out',\n", + " \"don't make a monkey of me\",\n", + " 'make a monkey out, make a monkey out',\n", + " \"don't make a monkey of me\",\n", + " 'make a monkey out, make a monkey out',\n", + " \"don't make a monkey of me\",\n", + " 'make a monkey out, make a monkey out',\n", + " \"don't make a monkey of me\",\n", + " 'narippanashi no denwa wo yoso ni noizu darake no radio',\n", + " 'kousaten de wa ima tachi_oujou habamarete no toujou',\n", + " 'make a monkey out, make a monkey out',\n", + " \"don't make a monkey of me\",\n", + " 'make a monkey out, make a monkey out',\n", + " \"don't make a monkey of me\",\n", + " 'doko made tsuzuku? kono kaidan to kakato no toreta buutsu',\n", + " 'yagate sora ni wa hikari ga sashite boku no kokoro tokashite',\n", + " '*kimi to no conversation. good communication',\n", + " \"torete 'ru hazu darou i stand by you\",\n", + " \"furikaerazu tsukinukete _ikeba ii n' da\",\n", + " \"don't make a monkey of me\",\n", + " \"tobitateba miete kuru sonna mon' na n' da\",\n", + " 'kodou agete sakebe!!',\n", + " \"saa nansei no kaze wo uke (don't make a monkey out of me.)\",\n", + " \"aimai nante hatsutete (don't make a monkey out of me.)\",\n", + " \"passion, session, good condition. (don't make a monkey out of me.)\",\n", + " 'say yeah!! (yeah!!)',\n", + " 'say ho!! (ho!!)',\n", + " \"don't make a monkey out of me\",\n", + " '*chorus',\n", + " \"jibun wo shinjite nukete _ikeba ii n' da\",\n", + " 'taiyou no __ku atsuku',\n", + " \"toki tateba iete kuru sonna mon' na n' da\",\n", + " 'kodou agete sakebe!!',\n", + " 'make a monkey out, make a monkey out',\n", + " \"don't make a monkey of me\",\n", + " 'make a monkey out, make a monkey out',\n", + " \"don't make a monkey of me\",\n", + " 'make a monkey out, make a monkey out',\n", + " \"don't make a monkey of me\",\n", + " 'make a monkey out, make a monkey out',\n", + " \"don't make a monkey of me\",\n", + " 'neon kkum-cheoreom naege dagawaseo kkumman gateun haenbok kkul gatchi',\n", + " 'dalkomhage',\n", + " 'nal hollyeoseo (hamkkehamyeonseo) hangsang bulanhaesseo',\n", + " 'kkaenamyeon modeunge da nun apeseo sarajilkka bwa',\n", + " 'na mam jolyeosseo bulanhaesseo geu dongan',\n", + " 'nal gajyeoseo nan apa my dream girl maeil nat bam shido ddaedo eobshi',\n", + " 'gashi gateun neon (naege angigo) sangcheo nal geol almyeonseodo',\n", + " \"you're my dream girl meomchulsuga eobseo nan\",\n", + " 'jeomjeom deo jeomjeom deo nege bbayeodeuna bwa baby',\n", + " 'geumbangirado nokeul geot gata neon taeyang boda ddeugeobda',\n", + " 'ni hyanggi-neun dok cheoreom onmom-e peojyeo jungdokiran ge ireon geonga',\n", + " 'beoseonalsu eobtge geobuhalsu eobtge',\n", + " 'neoege gajyeo beorin geotman gat-a',\n", + " 'nal gajyeoseo nan apa my dream girl maeil nat bam shido ddaedo eobshi',\n", + " 'gashi gateun neon (naege angigo) sangcheo nal geol almyeonseodo',\n", + " \"you're my dream girl meomchulsuga eobseo nan\",\n", + " 'jeomjeom deo jeomjeom deo nege bbayeodeuna bwa baby',\n", + " \"girl, you're so hypnotizing, na nal ilijeori\",\n", + " 'jabgo heundeulji nae ap-e geudaeneun machi',\n", + " 'nalkaroun kkot gata jangmi nun-i meol goet gatchi areumdabji',\n", + " 'ooh ooh ooh you know that i love you, i love you',\n", + " \"ooh ooh ooh you know that i'll always be with you\",\n", + " 'nal gajyeoseo nan apa my dream girl maeil nat bam shido ddaedo eobshi',\n", + " 'gashi gateun neon (naege angigo) sangcheo nal geol almyeonseodo',\n", + " \"you're my dream girl meomchulsuga eobseo nan\",\n", + " 'jeomjeom deo jeomjeom deo nege bbayeodeuna bwa baby',\n", + " 'oh ma la oh oh me giova oh',\n", + " 'pe dolae gi? po va po',\n", + " 'e sha me co oh me gioma ah',\n", + " 'p? d? le pa tus dac',\n", + " 'e la fongo oh te de van',\n", + " 'pe a su mon ah tu na',\n", + " 'oh de salai tu ghe',\n", + " 'mani t?nai oh ye',\n", + " 'oh ni? pa eh eh pad? pa nar',\n", + " 'oh da ne pe se do oh',\n", + " 'e cha la co na cha me pa de',\n", + " 'sar male giac ef ma',\n", + " 'e ma pa co oh te do la ah',\n", + " 'cas do le pa ta',\n", + " 'pa',\n", + " 'gi reo jin ha ru ga nae gen him i deu reo',\n", + " 'i reon geon na bbun in ji',\n", + " 'ja peul su itt ji man geu reol su do eob deon',\n", + " 'ba bo i gi ddae mun ya oh',\n", + " 'dda seu hi nae ri neun haet sa ra rae do',\n", + " 'nae ma eum eun cha ga un son ggeut shi rin eo dum',\n", + " 'na neun neo mu yak hae eo dun bam e hon ja ul ji mo reu neun de',\n", + " 'mu shim hi do deung eul dol li ne yo',\n", + " 'nan jeol dae a nin de o jok geu dae bbun da reun sa ram eun a nin de',\n", + " 'eol gul ma jeo jeom jeom dal ma ga jan a',\n", + " 'geo jit mal cheo reom ddo da reun na ri wa do',\n", + " 'we ro un geon na bbun in ji',\n", + " 'nae ga geu dael wi han geu rim ja yeott deon',\n", + " 'geu ddae cheo reom sal su i sseul ji',\n", + " 'ma eum i ma rae yo ddeo na ga ra go',\n", + " 'nae du nun eun jjo ja yo geu dae mo seub man',\n", + " 'na neun neo mu yak hae eo dun bam e hon ja ul ji mo reu neun de',\n", + " 'mu shim hi do deung eul dol li ne yo',\n", + " 'nan jeol dae a nin de o jok geu dae bbun da reun sa ram eun a nin de',\n", + " 'eol gul ma jeo jeom jeom dal ma ga jan a',\n", + " 'ma eum i heun deul li neun bam nae gi eok ma jeo do ji weo ya ha na yo (so tell me)',\n", + " 'na neun neo mu yak hae eo dun bam e hon ja ul ji mo reu neun de',\n", + " 'mu shim hi do deung eul dol li ne yo',\n", + " 'nan jeol dae a nin de o jok geu dae bbun da reun sa ram eun a nin de',\n", + " 'eol gul ma jeo jeom jeom oh baby',\n", + " 'i reon nae gen geu dae man nae jeon bu jan a',\n", + " 'sumjocha swigi himdeun sigandeul',\n", + " 'nae mogeul joineun sesangeun',\n", + " 'amuri jiuryeo aesseobwado',\n", + " 'gyesok nareul jakkuman sseureojige haneunde',\n", + " 'naega gajin jeonbu ojik neo hanappunya',\n", + " 'neoreul nochi anheulge',\n", + " 'you are my last love neon nae majimak sarang',\n", + " 'you are my last love kkeuteul hamkkehal saram',\n", + " 'geochin sesangeseo badanaen hanaui seonmul',\n", + " 'nae nunape ttodareun gijeok',\n", + " 'you are the last love',\n", + " 'sumanheun sigakui sangcheodeuldo woo baby',\n", + " 'apeumi seororeul jjijeodo',\n", + " 'ssahigo ssahin i chueukdeuleun',\n", + " 'seoroui nunmuleul dagga juneun geol',\n", + " 'yeogi mureupkkulgo neoreul boneun nareul bwa',\n", + " 'neol wihae nareul geolge',\n", + " 'you are my last love neon nae majimak sarang',\n", + " 'you are my last love kkeuteul hamkkehal saram',\n", + " 'geochin sesangeseo badanaen hanaui seonmul',\n", + " 'nae nunape ttodareul gijeok',\n", + " 'you are the last love',\n", + " 'i jageun banjironeun malhalsu eobtjiman',\n", + " 'yaksokhalge modeun geol nan neoreul wihaeseo',\n", + " 'you are my last love you are the love of my life',\n", + " 'eodun gireul balkke bichuneun hanaui deungbul',\n", + " 'nae nunape ttodareun gijeok',\n", + " 'you are the last love',\n", + " '(verse 1)',\n", + " 'the red light meomchwobeorin',\n", + " 'sigan sok neomanui hyanggi',\n", + " 'ggaeji anheul kkumgyeolcheoreom',\n", + " 'jeomjeom deo ppajyeodeureo',\n", + " 'the green light michyeobeorin',\n", + " 'nan neoege jiljuhalkka',\n", + " 'teojil deuthan simjangsorin',\n", + " 'neoegeman ddwigo isseo',\n", + " 'like satellites and shootings stars',\n", + " 'taeyangeul bon byeolcheoreom',\n", + " 'ni juwireul dolgo dora',\n", + " 'ddeugeowodo dagaga',\n", + " 'neol machimnae angoseo (holding your heart)',\n", + " 'nunbusige taolla',\n", + " '(chorus)',\n", + " 'we live for this love (nanana nana nanana)',\n", + " 'we live for this love (nanana nana nanana)',\n", + " 'we live for this love',\n", + " '(verse 2)',\n", + " 'the firelight bultabeorin',\n", + " 'nunbiche gadhin sungan',\n", + " 'nal ggaewo jul han beonui kiseu',\n", + " 'on sesangeul da gajil geot gata',\n", + " 'like satellites and shootings stars',\n", + " 'ggochipeul bon beol cheoreom',\n", + " 'ni juwireul dolgo dora geochimeobsi dagaga',\n", + " 'neol machimnae angoseo (holding your heart)',\n", + " 'jeo nopi nara olla',\n", + " '(chorus)',\n", + " 'we live for this love (nanana nana nanana)',\n", + " 'we live for this love (nanana nana nanana)',\n", + " 'we live for this love',\n", + " '(rap part)',\n", + " 'i can’t get enough, i can’t get off of your love',\n", + " 'nan neoui sarang eobsineun mos sara',\n", + " 'jungdokdoeneun geol',\n", + " 'nun kkamppak hal sai i’m by your side',\n", + " 'ib matchwobomyeon i feel so high',\n", + " '(we live for this love)',\n", + " 'neoraneun solar system',\n", + " 'ane naneun shooting star',\n", + " 'ggeullyeoga, geobuhal su eobtneun black hole',\n", + " 'it’s automatic systematic in this universe',\n", + " 'nege ikkeullyeoga geobu hal su eobtneun black hole',\n", + " '(break)',\n", + " 'everytime i count 1 2 3',\n", + " 'uril dulleossan segyega meomchuji',\n", + " 'dugeundaen biteue matchugo',\n", + " '(chorus)',\n", + " 'we live for this love (everytime i count 1 2 3)',\n", + " 'it’s automatic it’s automatic systematic tematic',\n", + " 'we live for this love (urin ggeuteobsi sarangeul ggumkkuji)',\n", + " 'it’s automatic it’s automatic systematic tematic',\n", + " 'we live for this love',\n", + " 'ggum sogedo ggae-eonado eonjena gyeote isseo',\n", + " 'duryeowo ma nae son jaba naega neol jikyeojulge',\n", + " 'hey yeogil jom bwayo',\n", + " 'listen to me ladies',\n", + " 'hwaryeohan mudae wi',\n", + " 'nunbusige biccnaneun spotlight',\n", + " 'pay attention to me nal ttara hae',\n", + " 'what do you wanna',\n", + " 'ja sijakhae bwa',\n", + " 'hey hey hey hey oh',\n", + " 'sum makhineun yeolgi',\n", + " 'yeogin jigeum eodi',\n", + " 'modu soril jilleo bwa this is it',\n", + " 'it’s girls’ revolution',\n", + " 'sarangttaeme tto saramttaeme',\n", + " 'deoneun ulji malja',\n", + " 'neon nuguboda areumdaun',\n", + " 'geureon yeojanikka',\n", + " 'nawa ja yeogiro',\n", + " 'ttarawa mangseorijima',\n", + " 'yeogijeogi singyeong kkeugoseo',\n", + " 'neol wihae saneun geoya',\n", + " 'nal jom bwa meosjiji anhni',\n", + " 'woo nal ttara haebwa',\n", + " 'gibun up johajil geoya',\n", + " 'ladies pay attention come on',\n", + " 'ijebuteo dangdanghage',\n", + " 'gaseum pyeogo jasin issge',\n", + " 'modu nal ttarawa',\n", + " 'follow me follow me follow me ladies',\n", + " 'amu saenggak haji malgo',\n", + " 'tteugeopge oneureul jeulgyeo bwa alright',\n", + " 'modu hamkke nawa follow me',\n", + " 'i’m a fighter bureul jipyeora',\n", + " 'eheradiya chumchwora lady',\n", + " 'dara dara balkeun dara',\n", + " 'show me your super power',\n", + " 'nunbusige biccnaneun nalgae',\n", + " 'pyeolchyeoboneun geoya',\n", + " 'miss lady luck haengunui yeosin',\n", + " 'misoreul bonaejwoyo',\n", + " 'nawa ja yeogiro',\n", + " 'ttarawa mangseorijima',\n", + " 'yeogijeogi singyeong kkeugoseo',\n", + " 'neol wihae saneun geoya',\n", + " 'nal jom bwa meosjiji anhni',\n", + " 'woo nal ttara haebwa',\n", + " 'gibun up johajil geoya',\n", + " 'ladies pay attention come on',\n", + " 'ijebuteo dangdanghage',\n", + " 'gaseum pyeogo jasin issge',\n", + " 'modu nal ttarawa',\n", + " 'follow me follow me follow me ladies',\n", + " 'amu saenggakhaji malgo',\n", + " 'tteugeopge oneureul jeulgyeo bwa alright',\n", + " 'modu hamkke nawa follow me',\n", + " 'everybody moyeora',\n", + " 'let’s get together follow me',\n", + " 'say victory victory',\n", + " 'modu nareul ttaraseohae boneun geoya',\n", + " 'move',\n", + " 'x2',\n", + " 'ijebuteo dangdanghage',\n", + " 'gaseum pyeogo jasin issge',\n", + " 'modu nal ttarawa',\n", + " 'follow me follow me follow me ladies',\n", + " 'amu saenggak haji malgo',\n", + " 'tteugeopge oneureul jeulgyeo bwa alright',\n", + " 'modu hamkke nawa follow me',\n", + " 'pediculose insides my fibriconosis',\n", + " 'cavities dermatofied on lucerative',\n", + " 'piemia nephrosis i ingest sarnapyrosis',\n", + " 'on the gribled thryroided exudated',\n", + " 'corion necro feasted by citeiematized',\n", + " 'prostata connected by micosis croup',\n", + " 'the severed slug contains',\n", + " 'munching cutaneopsoriac abdominal',\n", + " 'blastoma grabs by insipid grotesque',\n", + " 'vasculose disentery like fetidness',\n", + " 'endamoebus flatulence on dermia',\n", + " 'i abuse and consume your fetal pregnant',\n", + " 'acarus scalpel',\n", + " 'on the process in anosmia',\n", + " 'connection of the maggotization frying',\n", + " 'tumorous devied mononeuclonicism',\n", + " 'only relics, dementia',\n", + " 'phorlorn effluviazed',\n", + " 'albumined trastorm',\n", + " 'denigrate, peptic ulcerous',\n", + " 'echlampse bladder',\n", + " 'frozen limbs on ecczema',\n", + " 'bizarreness on the dolency ectopy',\n", + " 'monochlonic scamose endosmosis',\n", + " 'foretic insides now aglutinized',\n", + " 'of renal donors of edemic',\n", + " 'neuroblastoma injerted by viral oestogena',\n", + " 'cephall extirp carcinoma infiltrates',\n", + " 'lynphomed clinicism in rectal masticate',\n", + " 'regurgitate',\n", + " 'segregate the abortive',\n", + " 'oncho seweds volvulus',\n", + " 'the pulverized chronic symptoms',\n", + " 'mince the gastric adeno carcinoma',\n", + " 'cysts',\n", + " 'by producing',\n", + " 'cervyx intestinal tissues',\n", + " 'teratomes penetrating the malign',\n", + " 'calcino embrionary excrete co foetal',\n", + " 'the scent of the inside bladder',\n", + " 'captor of dipomes reeks off',\n", + " 'the fetal crinoma',\n", + " 'and fertible possibilities',\n", + " 'engendred on hepaticrania excretor of comielitis',\n", + " 'in complexed with the maggotized',\n", + " 'cremate in',\n", + " 'the placent blasted',\n", + " 'sarno tumorose renal conditions',\n", + " 'frolic through',\n", + " 'vaginometric fistules',\n", + " 'anatomous frigteaned flebotomy',\n", + " 'flutter myocardiac dactille and muscle paptille',\n", + " 'griblling sinusad',\n", + " 'abortative',\n", + " 'etypathogenical',\n", + " 'reeconstructive',\n", + " 'degenerative liquor dysfunct',\n", + " 'dum, exercitus uruk devastat agres meridiane',\n", + " 'baazgor progressus exercitus nigrae pergit',\n", + " 'etiam in aeri, cum legione orkianis, domini draconum',\n", + " 'trux orcus equitat fulvum alatum',\n", + " 'horridum squamis osseis emicantem flammas',\n", + " 'ex faucibus ardentibus praeentem multitudinibus',\n", + " 'draconis tegentibus spectaculum solis alis membranaceis',\n", + " 'insputant ignem in vicis subiacentis ubi inantier',\n", + " 'gentae elficae incessunt scorpionibus, defendentes',\n", + " 'a morte alata devastanteque urente omnia',\n", + " 'invantier evocant in cavernis tum',\n", + " 'perfossis ab hobbit kaltag ut vultures, dracones',\n", + " 'iniciunt in cuniculis subterraneis elicantes',\n", + " 'unguibus incolas pavidas laniatas monstruosis',\n", + " 'draconibus',\n", + " \"(the legion of the orkian's dragons)\",\n", + " \"while uruk's army was ravaging the middle lands\",\n", + " \"baazgor's black armies raise up in the sky with\",\n", + " 'orkian, dragons master... a filthy ogre rides',\n", + " 'a monstrous black winged horse',\n", + " 'covered with bony plates, he vomited violent flames',\n", + " 'from the hot jaws',\n", + " 'an preceded a multitude of dragons with with',\n", + " 'membranous wings',\n", + " 'they spit fire on the below villages where the elfic',\n", + " 'people try to find an escape uselessly',\n", + " 'they defend themselves from the winged death which',\n", + " 'burns anything she meets',\n", + " 'in vain they look for a shelter in the caves dug by',\n", + " \"kaltag's hobbit since\",\n", + " 'like vultures, the dragons creep into the',\n", + " 'underground tunnels',\n", + " 'taking out the terrified habitants torn by the',\n", + " 'monstrous dragons',\n", + " 'romanization',\n", + " 'love my boy (ooh yeah)',\n", + " 'i love my boy (i love you my boy)',\n", + " 'i love my boy (duduru duru duru)',\n", + " 'i love my boy (i love you my boy)',\n", + " 'everybody scream!',\n", + " 'oneul bam maeil bam',\n", + " 'jakkuman ni saenggangman naneun',\n", + " 'geudaeye diva diva di di di diva',\n", + " 'oneul bam maeil bam',\n", + " 'jjaritjjaritan i sungan naneun',\n", + " 'geudaeye diva diva di di di diva',\n", + " 'jakkuman ni saenggagi na neoye dalkomhan hyanggi',\n", + " 'amureochi aneun cheok nan nege ppajeo beoryeosseo',\n", + " 'chagapge mareul handaedo naneun meomchul su eopseo',\n", + " 'nal bara bondago yaksokae naege',\n", + " 'i got ni mameul yeol su inneun master key',\n", + " 'neon naye masterpiece',\n", + " 'uri gachi machi hwansange tag team',\n", + " 'you know we are destiny',\n", + " 'sarangeun bul ta after this',\n", + " 'neomuna dalkomhan soksagim',\n", + " 'jjaritjjaritan kiss so sweet boy',\n", + " 'you are my favorite',\n", + " 'oneul bam maeil bam',\n", + " 'jakkuman ni saenggangman naneun',\n", + " 'geudaeye diva diva di di di diva',\n", + " 'oneul bam maeil bam',\n", + " 'jjaritjjaritan i sungan naneun',\n", + " 'geudaeye diva diva di di di diva',\n", + " 'just tell me what you wanna do',\n", + " 'nae mameul gajeogarago',\n", + " 'i don’t wanna let you go',\n", + " 'neon naman baraborago',\n", + " 'i just wanna get it done',\n", + " 'sarangeul mal hal georago',\n", + " 'apado joa niga eopshineun',\n", + " 'sal suga eomneunde nan',\n", + " 'i got big plans for you, love for you',\n", + " 'i don’t give a damn what people say',\n", + " 'sarangi jungyohae',\n", + " 'no matter what you are my man',\n", + " 'jakkuman jeomjeom nan beonjeo l o v e',\n", + " 'sarangiran gamjeong',\n", + " 'you’re so perfect neon naege manjeom',\n", + " 'come to me naege dagawa jweo',\n", + " 'oneul bam maeil bam',\n", + " 'jakkuman ni saenggangman naneun',\n", + " 'geudaeye diva diva di di di diva',\n", + " 'oneul bam maeil bam',\n", + " 'jjaritjjaritan i sungan naneun',\n", + " 'geudaeye diva diva di di di diva',\n", + " 'oneul bam ni gyeoteseo jamdeulgoman shipeo',\n", + " 'ireonge sarangilkka jakkuman tteollyeo',\n", + " 'ttatteutan neoye pume ankkigoman shipeo',\n", + " 'na ije eotteokae neoyege ppajeonnabwa',\n", + " 'oneul bam maeil bam',\n", + " 'jakkuman ni saenggangman naneun (oh oh)',\n", + " 'geudaeye diva diva di di di diva',\n", + " 'oneul bam maeil bam (oneul bam)',\n", + " 'jjarit jjaritan i sungan naneun (yeah)',\n", + " 'geudaeye diva diva di di di diva',\n", + " 'oneul bam maeil bam',\n", + " 'jakkuman ni saenggangman naneun',\n", + " 'geudaeye diva diva di di di diva',\n", + " 'oneul bam maeil bam',\n", + " 'jjaritjjaritan i sungan naneun',\n", + " 'geudaeye diva diva di di di diva',\n", + " 'na na na na na',\n", + " 'na na na na na',\n", + " 'na na na na na',\n", + " 'na na na na na',\n", + " 'diva diva di di di diva',\n", + " 'korean',\n", + " 'i love my boy (ooh yeah)',\n", + " 'i love my boy (i love you my boy)',\n", + " 'i love my boy (duduru duru duru)',\n", + " 'i love my boy (i love you my boy)',\n", + " 'everybody scream!',\n", + " '오늘 밤 매일 밤',\n", + " '자꾸만 니 생각만 나는',\n", + " '그대의 diva diva di di di diva',\n", + " '오늘 밤 매일 밤',\n", + " '짜릿짜릿한 이 순간 나는',\n", + " '그대의 diva diva di di di diva',\n", + " '자꾸만 니 생각이 나 너의 달콤한 향기',\n", + " '아무렇지 않은 척 난 네게 빠져 버렸어',\n", + " '차갑게 말을 한대도 나는 멈출 수 없어',\n", + " '날 바라 본다고 약속해 내게',\n", + " 'i got 니 맘을 열 수 있는 master key',\n", + " '넌 나의 masterpiece',\n", + " '우리 같이 마치 환상의 tag team',\n", + " 'you know we are destiny',\n", + " '사랑은 불 타 after this',\n", + " '너무나 달콤한 속삭임',\n", + " '짜릿짜릿한 kiss so sweet boy',\n", + " 'you are my favorite',\n", + " '오늘 밤 매일 밤',\n", + " '자꾸만 니 생각만 나는',\n", + " '그대의 diva diva di di di diva',\n", + " '오늘 밤 매일 밤',\n", + " '짜릿짜릿한 이 순간 나는',\n", + " '그대의 diva diva di di di diva',\n", + " 'just tell me what you wanna do',\n", + " '내 맘을 가져가라고',\n", + " 'i don’t wanna let you go',\n", + " '넌 나만 바라보라고',\n", + " 'i just wanna get it done',\n", + " '사랑을 말 할 거라고',\n", + " '아파도 좋아 니가 없이는',\n", + " '살 수가 없는데 난',\n", + " 'i got big plans for you, love for you',\n", + " 'i don’t give a damn what people say',\n", + " '사랑이 중요해',\n", + " 'no matter what you are my man',\n", + " '자꾸만 점점 난 번져 l o v e',\n", + " '사랑이란 감정',\n", + " 'you’re so perfect 넌 내게 만점',\n", + " 'come to me 내게 다가와 줘',\n", + " '오늘 밤 매일 밤',\n", + " '자꾸만 니 생각만 나는',\n", + " '그대의 diva diva di di di diva',\n", + " '오늘 밤 매일 밤',\n", + " '짜릿짜릿한 이 순간 나는',\n", + " '그대의 diva diva di di di diva',\n", + " '오늘 밤 니 곁에서 잠들고만 싶어',\n", + " '이런게 사랑일까 자꾸만 떨려',\n", + " '따뜻한 너의 품에 안기고만 싶어',\n", + " '나 이제 어떡해 너에게 빠졌나봐',\n", + " '오늘 밤 매일 밤',\n", + " '자꾸만 니 생각만 나는 (oh oh)',\n", + " '그대의 diva diva di di di diva',\n", + " '오늘 밤 매일 밤 (오늘 밤)',\n", + " '짜릿 짜릿한 이 순간 나는 (yeah)',\n", + " '그대의 diva diva di di di diva',\n", + " '오늘 밤 매일 밤',\n", + " '자꾸만 니 생각만 나는',\n", + " '그대의 diva diva di di di diva',\n", + " '오늘 밤 매일 밤',\n", + " '짜릿짜릿한 이 순간 나는',\n", + " '그대의 diva diva di di di diva',\n", + " 'na na na na na',\n", + " 'na na na na na',\n", + " 'na na na na na',\n", + " 'na na na na na',\n", + " 'diva diva di di di diva',\n", + " 'al lunedè meti deent la prema',\n", + " \"spazzeti'l muund cui tergicristai\",\n", + " 'pizzi i fanai per majà la cürva',\n", + " 'banana negra che la voer scapà',\n", + " 'ma me la ciapi cunt el vulaant',\n", + " 'el me mutuur la digerirà',\n", + " 'i cupertoni san giamò a memoria',\n", + " 'ogni chilometro de spetascià',\n", + " \"all'autogrill prima del gottardo\",\n", + " \"gh'è johnny cash che voe sultà soe\",\n", + " 'el voer un passagg fin in funt al tunnel',\n", + " 'verdi la porta el foe setà giò',\n", + " \"el paltò l'è negro cume la chitara\",\n", + " 'la facia düra cume sti muntagn',\n", + " 'el dis me spiàs sun dumà un fantasma',\n", + " 'ma svolza la radio che me canti amò',\n", + " 'hey johnny cash scià che vèmm scià che vèmm',\n", + " \"e tant anca 'l gottardo l'è un oltru anell de fööch\",\n", + " 'e canta cry cry cry ghost rider in the sky',\n", + " 'e visto che te seet te te lassi anca fümà',\n", + " \"in sull'autostrada a casalpusterlengo\",\n", + " \"gh'è una gran pulver se veed nagott\",\n", + " \"l'è menga nèbia l'è menga foemm\",\n", + " \"l'è tüta sabia e in mezz gh'è un omm\",\n", + " \"el gh'ha soe un capell che'el par quasi un strasc\",\n", + " \"el gh'ha i salopett i scarponi gross\",\n", + " \"el riid un zicc e po'l tussis\",\n", + " \"g'ha la tera in facia e in fuunt ai pulmòni\",\n", + " 'hey woody guthrie scià che vèmm scià che vèmm',\n", + " \"questa tèra l'è la tua tèra ma adess però mangen pioe\",\n", + " \"l'onda verde la diis nagott ma questa nigula finirà\",\n", + " \"de dree gh' è mia la california ma a cesenatico podum\",\n", + " 'ruva',\n", + " \"all'usteria visén a faenza gh'è un fio elegant cun't i\",\n", + " 'oecc de matt',\n", + " 'el beev gio whisky cume beev gazusa',\n", + " 'la sua chitara par che la va a tocch',\n", + " \"el g'ha i dii cume dees anguillla pèll maron\",\n", + " 'e la vuus de dona',\n", + " \"el me diis g'ho de scapà del diavul c\",\n", + " \"he'l me cerca cun scià el me cuntratt\",\n", + " 'hey robert johnson scià che vèmm scià che vèmm',\n", + " 'comacchio non è la louisiana ma i zanzar i henn püssèe catiiv',\n", + " \"gnanca el diavul el se fa vedè quaand l'è scià l'ura del tramuunt\",\n", + " 'e non temere per il crocevia che che in italia urmai i henn tücc rondò',\n", + " \"e rua voenn in fund alla pianüüra che l'è vestiì cume un arcubalen\",\n", + " \"la sua chitara a l'è incendiada de dre de lüü pasa el tempuraal\",\n", + " 'el dupèera i tron el dupèera i fulmin i a liga insema i a sona amo',\n", + " 'la tèra gialda la paar el so palco e tutt el cieel un amplificaduur',\n", + " 'hey jimi hendrix scià che vèmm scià che vèmm',\n", + " \"forli l'è menga woodstock e fra un po' brüset anca te\",\n", + " 'e a suon de purple haze little wing e woodoo child',\n", + " \"adess gh'è scià la grandin e i cuntadini i henn mea taant cunteent\",\n", + " \"e al casell de cesena nord la stradal l'ha ma fermà\",\n", + " \"fann el giir del camion varden l'abitacul\",\n", + " 'varden departutt e poe se varden luur',\n", + " '\"ma è strano sembravate in cinque',\n", + " 'dentro la cabina un minuto fa\"',\n", + " '\"ci son solo io con tutti i mei dischi ma prego pòduf cuntrulà\"',\n", + " 'promi ter re',\n", + " 'salutare',\n", + " 'coa gresco ba tu e re',\n", + " 'for meteno ven tusacredo',\n", + " 'fendere be la ri',\n", + " 'poli ceriona',\n", + " 'volare',\n", + " 'dimi kareche entu maredo',\n", + " 'beligerate ficu tanima',\n", + " 'dimi karache entu maredo',\n", + " 'beligerate ficu tanima',\n", + " '(oh, oh)',\n", + " 'mera',\n", + " '(ah)',\n", + " 'san guiva ni me de',\n", + " 'mi fen de re',\n", + " 'fu ga ve nu ma',\n", + " 'po li ce re da tana',\n", + " 'potesta confico',\n", + " 'malete venefico',\n", + " 'potesta facina',\n", + " 'malete peresona',\n", + " 'batura',\n", + " 'come and make feel cpu nun naui dunoe ja yogi ije',\n", + " 'turn on my head zero one zero one one one zero one',\n", + " 'ne momane kumtulde ne shilchenun sarajigo hosangiyo ready go',\n", + " 'come and have some fun ne nunun gomseg enjin jigu odidun',\n", + " 'yonghwachorom i can see it all memorinun ne shimjang keiburun',\n", + " 'ne pidjul noui momi neane hell yeah cloaking by fear',\n", + " 'welcome my slaves hwansange sesanguro norul deryogarira',\n", + " 'welcome my slaves tatuthan ni onginun ije piryochi anha',\n", + " 'welcome my slaves ne apheso yongwonhi nonun chumul churira',\n", + " 'welcome my slaves noui sumsorin ije amu uimiga obso',\n", + " 'chaos of the world chagabge byonhegago sum shwigi jocha bogcha',\n", + " 'gwanshim obshi saraji amuredo johachi nega gajin turaneso byorirobshi',\n", + " 'sarassoji king of the world modurul jojonghari boiji anun',\n", + " 'hisenge arumdabge mihwa doeri naui mogul joine salgi wihe',\n", + " 'dalline ochodaga irohgena help me cloaking by fear',\n", + " 'welcome my slaves hyonranhan ne mosubi norul yuhog harira',\n", + " 'welcome my slaves noui modun shiganul jonbu jomshigharira',\n", + " 'welcome my slaves dalkomhan gu dogiga noui mogul joerira',\n", + " \"welcome my slaves you can't get out can't get out\",\n", + " \"a shock is comin' down to me what is the real\",\n", + " \"i can't feel it anymore shockwave raving\",\n", + " 'raving in this glamorous cyberworld',\n", + " 'raving in this holly fancy lies illusions',\n", + " \"you're gonna be addicted\",\n", + " 'welcome you have just entered the frenzied place',\n", + " 'where yo can get the perfect ecstasy can you feel it',\n", + " 'your body and soul became so useless idiot',\n", + " 'est dues in nobis...omnibus',\n", + " 'deus absconditus',\n", + " 'dominus vobiscum',\n", + " 'eo domine diabolus',\n", + " 'we speak in tongues, for we are legion',\n", + " 'we speak in tongues, in nomine patris',\n", + " 'stultior stulto fuisti',\n", + " 'qui tabellis crederes',\n", + " 'stultorum infinitus',\n", + " 'est numerous',\n", + " \"i'm alone in the deep black space\",\n", + " 'i touch pieces of light around me',\n", + " \"i don't know why i feel fine in this cosmic way\",\n", + " 'follow me through the nebulous',\n", + " 'in my silver machine',\n", + " 'i realize my dream',\n", + " 'and i follow my destiny',\n", + " 'in ten thousand milliard',\n", + " 'i brush against the stars',\n", + " 'throughout all the galaxy',\n", + " \"i cross comets, i see quasar, it's fabulous\",\n", + " 'my garden is really endless',\n", + " 'and now the time is not my enemy, i am free',\n", + " 'welcome to my constellation',\n", + " 'welcome to my constellation',\n", + " 'andromeda coma berenices',\n", + " 'cassiopeia delphinus hercules',\n", + " 'aquarius corona australis',\n", + " 'cetus cygnus virgo aries phoenix',\n", + " 'chameleon lynx hydra serpens',\n", + " 'pisces orion aurica sextans',\n", + " 'ursa major taurus lupus leo',\n", + " 'fornax pictor aquila draco',\n", + " 'capricornus pegasus centaurus',\n", + " 'ara apus ophiocus perseus',\n", + " 'vela mensa sagitta antlia',\n", + " 'lepus libra monoceros musca',\n", + " 'katalave to makria sou echo thema',\n", + " \"oli i zoi mou kataligei s' ena psema\",\n", + " 'choris esena einai adynato na ziso',\n", + " 'pos na synechiso',\n", + " 'katalave to pia den xero ti na kano',\n", + " 'echo archisei tora meres na ta chano',\n", + " 'einai aximerota kai dyskola ta vradia',\n", + " 'zo mesa sta skotadia',\n", + " 'den tin palevo allo pia ti monaxia',\n", + " 'i apousia sou fotia, pou kaiei mera nychta stin kardia mou',\n", + " 'den tin palevo allo pos na sou to po',\n", + " 'to evales fainetai skopo, chilia kommatia na kopo',\n", + " 'po po po, poso se thelo',\n", + " 'po po po, poso mou leipeis',\n", + " 'po po po, poso ponao',\n", + " \"kai s' anazitao\",\n", + " \"oso zo tha to fonazo, pos s' agapo kai den s' allazo\",\n", + " \"na' soun edo na ginoume ena, ola ta dino gia sena\",\n", + " 'katalave to makria sou arrostaino',\n", + " \"ap' ton paradeiso stin kolasi pigaino\",\n", + " 'sou leo chanomai kai tipota den kaneis',\n", + " 'thes na me trelaneis',\n", + " 'katalave to einai provlima megalo',\n", + " \"na mi boro ap' to myalo mou na se vgalo\",\n", + " 'kai mono esy me dyo lexeis tha to lyseis',\n", + " 'pes pos tha gyriseis',\n", + " 'den tin palevo allo pia ti monaxia',\n", + " 'i apousia sou fotia, pou kaiei mera nychta stin kardia mou',\n", + " 'den tin palevo allo pos na sou to po',\n", + " 'to evales fainetai skopo, chilia kommatia na kopo',\n", + " 'po po po, poso se thelo',\n", + " 'po po po, poso mou leipeis',\n", + " 'po po po, poso ponao',\n", + " \"kai s' anazitao\",\n", + " \"oso zo tha to fonazo, pos s' agapo kai den s' allazo\",\n", + " \"na' soun edo na ginoume ena, ola ta dino gia sena\",\n", + " 'den tin palevo allo pia ti monaxia',\n", + " 'i apousia sou fotia, pou kaiei mera nychta stin kardia mou',\n", + " 'den tin palevo allo pos na sou to po',\n", + " 'to evales fainetai skopo, chilia kommatia na kopo',\n", + " 'po po po, poso se thelo',\n", + " 'po po po, poso mou leipeis',\n", + " 'po po po, poso ponao',\n", + " \"kai s' anazitao\",\n", + " \"oso zo tha to fonazo, pos s' agapo kai den s' allazo\",\n", + " \"na' soun edo na ginoume ena, ola ta dino gia sena\",\n", + " 'po po po',\n", + " 'terror serpit inter ordines orcorum',\n", + " 'silva ante eos incepit tremere',\n", + " 'sub terra gelida charcharon procedebat',\n", + " 'contra eos dispelans transitu eius omnia res',\n", + " 'adesti cum omnia sua vi demum apparet...',\n", + " 'nigra maxima species vomens flammas',\n", + " 'coperta aculeorum incepit igni concremare',\n", + " 'configgere et vorare',\n", + " 'exercitus dehiscit',\n", + " 'orkian ruinosum equum conscendit',\n", + " 'educatus nanis in spelunca iam dudum',\n", + " 'figens in eius oculos gladius',\n", + " 'inundans sanguine inter ululatum belvae',\n", + " 'terram infra positam',\n", + " '(charcharon (devastanting rage))',\n", + " 'the wood in front of them starting to shiver',\n", + " 'under the cold ground a charcharon proceeded toward them',\n", + " 'eradicating everything at his passage',\n", + " 'here he comes to reveal himself in all his power',\n", + " 'an enormous black figure, vomiting flames',\n", + " 'covered by auculeses, starting to incinerate, transfix',\n", + " 'tear to pieces',\n", + " 'the army flaked off',\n", + " 'orkian, jumped on the back of the devastating steed',\n", + " 'trained by dwarfs in the caves since hundreds of years',\n", + " 'thrusting, into his eyes, his broadsword',\n", + " 'flooding with blood the ground below between',\n", + " 'the screams of the beast',\n", + " '(exorcízó te, immundíssime spíritus, omnis incúrsio adversárii, omne phantásma, omnis legio:',\n", + " 'in nómine dómini nostri (jesu christi) eradicáre, et effugáre ab hoc plásmate dei',\n", + " 'ipse tibi ímperat, qui te de supérnis coelórum in inferióra terrae demérgi praecépit',\n", + " 'ipse tibi ímperat, qui mari, ventis, et tempestátibus imperávit.)',\n", + " 'accuser, accuser',\n", + " 'exhaustless fountain of poison divine',\n", + " 'i ate of death to cleanse my flesh of god',\n", + " 'to make me thy entrance to the veins of the world',\n", + " 'now as we turn to seek thy face',\n", + " 'pour down on us thy redeeming wrath',\n", + " 'for you will ascend into heaven',\n", + " 'and will exalt thy throne above god',\n", + " 'and you will sit also upon the mount of the congregation',\n", + " 'in the sides of the north',\n", + " 'and you will ascend above the heights of the clouds',\n", + " 'and will be like the most high',\n", + " 'yet where you brought down to the sides of the pit',\n", + " 'which we now must merge with the skies',\n", + " 'opposer, opposer',\n", + " 'core, marrow and essence of my will',\n", + " 'i renounce this flesh in the name of thy praise',\n", + " \"to kindle the coals of salvation's spring\",\n", + " 'i drank of hell to cleanse my soul of god',\n", + " 'to reach the light in which thou dwellest',\n", + " 'adversary, adversary',\n", + " \"glorious slanderer and everything's adversary\",\n", + " 'whose blade alone split the tongues of the world',\n", + " 'yet shall the highest of truths mark thy crown',\n", + " 'now as we turn to seek thy face',\n", + " 'pour down on us thy redeeming wrath',\n", + " 'romanized',\n", + " 'swipge bwatdeon i sesangi nae mamdaero gulleogaji anheul ttae',\n", + " 'honja gamdanghal su eomneun jeolmange jeomjeom muneojigo',\n", + " 'hyeonsiriraneun byeok ape jakku kkeutdo eobsi churakhaneun ge',\n", + " 'oh nan i sesangeul hechyeo nagayahal banghyangeul irheosseo',\n", + " 'daeche wae, wae, wae',\n", + " 'jeulgeoun komidi yeonghwareul bwado useumdaesin wae nunmuri naneunji',\n", + " 'naman wae, wae, wae',\n", + " 'gaseum hankyeon tteugeowojineun chaek hangwoneul bwado oeroume gonggami gaji nan',\n", + " 'mwongae hollindeutae modeun apeumdeuri nae yaegigachi moripdwae',\n", + " 'ireona han beon deo',\n", + " 'right now',\n", + " 'no more pain goodbye, goodbye',\n", + " 'yakhaejin nal beoseo deonjigo',\n", + " 'nareul igyeonaegesseo (bring me back to me)',\n", + " 'no more cry goodbye, goodbye',\n", + " 'i sesangeul ttwieo neomgesseo',\n", + " 'alright',\n", + " 'yeah',\n", + " 'pogiran mareun molla nan gwaenhi jogeuphaejil pillyon eobtjanha',\n", + " 'dwaesseo deo keun kkumeul wihae jigeum nan sumeul goreul ppunya',\n", + " 'neomeojimyeon ireoseogo silpae ttawi jeulgimyeon geumaningeol',\n", + " 'that’s right dasi sesangeun nae pyeoneuro doraseogo isseo',\n", + " 'never back, back, back',\n", + " 'wae manheun saramdeureun gippeumboda',\n", + " 'seulpeumeul deo deo keuge saenggakhaneunji',\n", + " 'run my way, way, way',\n", + " 'wae neomunado yarbeun gwi geokjeongppunya',\n", + " 'namdeul mare hwipsseullyeo georeoganeun gil',\n", + " 'geudeurui mameun gananhae hajiman beoseonal su isseo',\n", + " 'dasi tuktuk teoreonaego ttwieo gal su isseo',\n", + " 'ireona han beon deo',\n", + " 'right now',\n", + " 'no more pain goodbye, goodbye',\n", + " 'yakhaejin nal beoseo deonjigo',\n", + " 'nareul igyeonaegesseo (bring me back to me)',\n", + " 'no more cry goodbye, goodbye',\n", + " 'i sesangeul ttwieo neomgesseo',\n", + " 'alright',\n", + " 'yeah',\n", + " 'keuge sumeul hanbeon deurimasigo nae baeteo',\n", + " 'halsu isseo niga daheul su inneun huimang gyesokhaeseo georeo',\n", + " 'meomchuji ma sesangiran geuneureseon',\n", + " 'nuguboda deo deo deo neon jayurowo',\n", + " 'silpaeran geon nareul deo',\n", + " 'ganghage hago duryeoumeun',\n", + " 'nal deo ttwige haneungeol',\n", + " 'watch me now',\n", + " 'woah',\n", + " 'no more pain goodbye, goodbye',\n", + " 'yakhaejin nal beoseo deonjigo',\n", + " 'nareul igyeonaegesseo (bring me back to me)',\n", + " 'no more cry goodbye, goodbye',\n", + " 'i sesangeul ttwieo neomgesseo',\n", + " 'alright',\n", + " 'yeah',\n", + " 'let me say goodbye, goodbye',\n", + " 'nae gaseume bureul deonjigo',\n", + " 'jinjja naega doegesseo (nan dallajigesseo)',\n", + " 'one more say goodbye, goodbye',\n", + " 'kkeutdo eomneun tteugeoumeuro han beon deo',\n", + " 'alright',\n", + " 'yeah',\n", + " \"dansa in su 'entu 'e tramuntana\",\n", + " 'dansa umpare a mie',\n", + " \"dansa in su mare 'e s'avventura\",\n", + " 'dansa in custa die',\n", + " 'astrolicamus dae supra',\n", + " 'de custa altura',\n", + " 'narami de sa fortuna',\n", + " \"bola in 'entu 'e s'ingiustizia\",\n", + " 'bola umpare a mie',\n", + " \"vola in su mare 'e s'indifferentzia\",\n", + " 'bola in custa die',\n", + " 'astrolicamus chirchend su',\n", + " 'venidore',\n", + " 'namami de custu amore',\n", + " 'nois, sos ammentos',\n", + " 'nois, sos trabentos',\n", + " 'nois, che sirbones isperdidos',\n", + " 'in su ludu, nois',\n", + " \"tue e deo sutt'e una ferula\",\n", + " 'ube naschet sa chintula',\n", + " \"dansa in s'annu duamiza, fiza\",\n", + " 'dansa umpare a chie?',\n", + " \"dansa in su chelu chi t'assimiza\",\n", + " 'fortzis umpare a mie',\n", + " \"bola in su mundu 'e sas tempestas\",\n", + " 'bola in sas enas',\n", + " 'beni chi astrolicamus',\n", + " 'nois, sos ammentos',\n", + " 'nois, sos trabentos',\n", + " 'nois, che sirbones isperdidos',\n", + " 'in su ludu, nois',\n", + " \"tue e deo sutt'e una ferula\",\n", + " 'ube naschet sa chintula',\n", + " '(grazie a ivo per questo testo)',\n", + " 'salve',\n", + " 'salve',\n", + " 'salve',\n", + " 'salve',\n", + " 'salve',\n", + " 'salve',\n", + " 'salve',\n", + " 'o clements, o pia, o dulcis maria',\n", + " 'o clements, o pia, o dulcis maria',\n", + " 'o clements, o pia, o dulcis maria',\n", + " 'o clements, o pia, o dulcis maria',\n", + " 'o clements, o pia, o dulcis maria',\n", + " 'o clements, o pia, o dulcis maria',\n", + " 'salve regina, mater misericordiae',\n", + " 'mater misericordiae, salve regina',\n", + " 'salve regina, mater misericordiae',\n", + " 'salve regina',\n", + " 'salve',\n", + " 'salve',\n", + " 'salve',\n", + " 'salve',\n", + " 'salve',\n", + " 'salve',\n", + " 'salve',\n", + " 'salve regina',\n", + " 'eodum sogeseo deullineun jeolgyu',\n", + " 'gongpoe jillin sesangeul',\n", + " 'dwijibeobeorilgeoya da',\n", + " 'michyeobeorin sesang',\n", + " 'bakkwonoheulgeoya nan',\n", + " 'dongwa hyeopbage nun gamneun jadeul get out',\n", + " 'nyuseureul bwado jeonbu gonggongui jeogigo',\n", + " 'ssaikopaeseudeuri michyeo nalttwineun panigo',\n", + " 'igeon beomjoewaui jeonjaeng',\n", + " 'ttokgachi gapa julge',\n", + " 'ieneun i nuneneun nun i mareul gieokhae',\n", + " 'yongseoran eobseo urin jeoldae',\n", + " 'i gotta feeling',\n", + " 'chameul suga eobseo give it up',\n", + " 'i gotta feeling',\n", + " 'niga nuneul gamneun nal',\n", + " 'neoneun wiheomhae',\n", + " 'jalmot geondeuryeosseo get away',\n", + " 'becuz i’m cuz i’m dangerous',\n", + " 'i’m a badman',\n", + " 'eodum soge neoreul gadwojulge',\n", + " 'ah! ah! ah! ah!',\n", + " 'geobe jillin moseubeul bwa',\n", + " 'i’m a badman',\n", + " 'nideureul da sseureobeorilgeoya',\n", + " 'eotteon byeonmyeong ttawineun naege hajima in the end',\n", + " 'badman ( ya ya) badman ( ya ya)',\n", + " 'yeh guyz gamhi nuga uril mallyeo',\n", + " 'i dosiui gonggineun neomuna sum makhyeo',\n", + " 'cheoeumbuteo jalmotdoen neohui iriwa gangokhae',\n", + " 'deoreoun ssakdeureul da jallabeoril ttaekkaji an meomchwo',\n", + " 'nan dokhae',\n", + " 'ttokgachi nunmul heullyeobwa you got that?',\n", + " 'i gotta feeling',\n", + " 'da bul taewobeoryeo burn it up',\n", + " 'i gotta feeling',\n", + " 'niga ulbujitneun nal',\n", + " 'neoneun wiheomhae',\n", + " 'gal ttaekkaji gasseo get away',\n", + " 'becuz i’m cuz i’m dangerous',\n", + " 'i’m a badman',\n", + " 'eodum soge neoreul gadwojulge',\n", + " 'ah! ah! ah! ah!',\n", + " 'geobe jillin moseubeul bwa',\n", + " 'i’m a badman',\n", + " 'nideureul da sseureobeorilgeoya',\n", + " 'eotteon byeonmyeong ttawineun naege hajima in the end',\n", + " 'badman ( ya ya) badman ( ya ya)',\n", + " 'wae jakku geondeuryeo',\n", + " 'ja iri eopdeuryeo',\n", + " 'da mame an deureo',\n", + " 'neol bomyeon lose control',\n", + " 'badman',\n", + " 'wae jakku geondeuryeo',\n", + " 'ja iri eopdeuryeo',\n", + " 'da mame an deureo',\n", + " 'neol bomyeon lose control',\n", + " 'badman',\n", + " 'uril mannamyeon jebal jeori domang gajwo',\n", + " 'jeoldaero urin nideureul gamanhi mot nwadwo',\n", + " 'i’m a badman',\n", + " 'eodum soge neoreul gadwojulge',\n", + " 'ah! ah! ah! ah!',\n", + " 'geobe jillin moseubeul bwa',\n", + " 'i’m a badman',\n", + " 'nideureul da sseureobeorilgeoya',\n", + " 'eotteon byeonmyeong ttawineun naege hajima in the end',\n", + " '넌 나의 paradise',\n", + " '넌 나의 paradise paradise',\n", + " '넌 나의 paradise',\n", + " '넌 나의 paradise paradise',\n", + " '눈 앞에 펼쳐진 ocean view',\n", + " '거기에 어울리는 fashion look',\n", + " '너가 날 쳐다볼 때는 feel so good',\n", + " 'bye라는 말은 하지마',\n", + " '널 보내 긴 싫어 시간이 아까워',\n", + " '네 마음도 데칼코마니처럼',\n", + " '나와 같은 마음이라는걸 알고 있어',\n", + " 'so dangerous 다 보여 내 맘은 씨스루',\n", + " 'so beautiful 내 시선을 훔쳐가는 너',\n", + " 'so dangerous you’re driving me crazy baby',\n", + " '작은 손짓 하나에도 i’m done',\n", + " '(넌 나의 paradise) you’re beautiful girl',\n", + " '너는 보고 있는데 계속 보고 싶은',\n", + " 'you’re my only girl',\n", + " '(넌 나의 paradise) you’re beautiful girl',\n", + " '너를 생각하면 내입은 올라가',\n", + " '넌 나의 paradise 천국 같지',\n", + " '빛나는 피부와 sexy 한 your lips',\n", + " 'ice cream 같은 향기 너라면 다 줄게',\n", + " '내 손을 잡아 걸어볼까 꽃길',\n", + " '나는 여기서 널 계속 기다렸어 나',\n", + " '너 말고 안돼 나는 너고 너는 나 yeah',\n", + " 'so baby welcome to my zone',\n", + " '우리 둘 만에 공간에',\n", + " '같이 시간을 보내 영원히 forever',\n", + " 'so dangerous 다 보여 내 맘은 씨스루',\n", + " 'so beautiful 내 시선을 훔쳐가는 너',\n", + " 'so dangerous you’re driving me crazy baby',\n", + " '작은 손짓 하나에도 i’m done',\n", + " '(넌 나의 paradise) you’re beautiful girl',\n", + " '너는 보고 있는데 계속 보고 싶은',\n", + " 'you’re my only girl',\n", + " '(넌 나의 paradise) you’re beautiful girl',\n", + " '너를 생각하면 내입은 올라가',\n", + " '하늘 높이 올라가 구름 위에 떠있는',\n", + " '저 달이 되어줘 날 밝혀줘',\n", + " '이제는 상상하지마 너가 생각하는',\n", + " '것들 내가 풀어줄게',\n", + " 'i don’t know what you’re thinking right now',\n", + " 'it’s about that time we both go out',\n", + " 'and do something about it you know',\n", + " '넌 나의 paradise (paradise)',\n", + " '넌 나의 paradise paradise (you’re my paradise)',\n", + " '넌 나의 paradise',\n", + " '넌 나의 paradise paradise (paradise)',\n", + " '넌 나의 paradise (paradise)',\n", + " '넌 나의 paradise paradise (you’re my paradise)',\n", + " '넌 나의 paradise',\n", + " '넌 나의 paradise paradise',\n", + " 'you’re my paradise',\n", + " 'neon naui paradise',\n", + " 'neon naui paradise paradise',\n", + " 'neon naui paradise',\n", + " 'neon naui paradise paradise',\n", + " 'nun ape pyeolchyeojin ocean view',\n", + " 'geogie eoullineun fashion look',\n", + " 'neoga nal chyeodabol ttaeneun feel so good',\n", + " 'byeraneun mareun hajima',\n", + " 'neol bonae gin sireo sigani akkawo',\n", + " ...]},\n", + " 'data': ['my country is a state of mind',\n", + " 'my country is a state of mind',\n", + " 'my country is a state of mind',\n", + " 'my country is a state of mind',\n", + " 'country is a state of mind',\n", + " 'country is a state of mind',\n", + " 'country is a state of mind',\n", + " 'cunt is a state of mind',\n", + " 'cunt is a state of mind',\n", + " 't is a state of mind',\n", + " 't is a state of mind',\n", + " 'state of mind',\n", + " 'state of mind',\n", + " 'ate of mind',\n", + " 'ate of mind',\n", + " 'aeormine',\n", + " 'aeromine',\n", + " 'aeorium',\n", + " 'aeorium',\n", + " 'aeom',\n", + " 'aeom',\n", + " 'om',\n", + " 'om',\n", + " 'om',\n", + " 'om',\n", + " 'om',\n", + " 'om',\n", + " 'i am bound to past',\n", + " 'and stagnant presence',\n", + " 'sallow faces, seducers',\n", + " 'seize my threads of mind',\n", + " 'to suscipe pre animabus illis',\n", + " 'quarum hodie memoriam facimus',\n", + " 'yo, just thought i’d let you know',\n", + " 'no matter what day of the week it is',\n", + " 'you’re the only girl on my mind c’mon!',\n", + " 'nae nunul bol ddae ddokgati malhal ddae',\n", + " 'neol jeongmal anajugo sipeosseo',\n", + " 'na imanhamyun eoddae? ni namjaron eoddae?',\n", + " 'ddan aedeulboda',\n", + " 'neoreul akkyeojul geoya neowa hamkkehal geoya',\n", + " 'eonjena neohanaman bollae',\n", + " 'sunday, monday to sunday!',\n", + " 'bogo ddo bogo sipeo',\n", + " 'monday, sunday to monday!',\n", + " 'jakku ddo bogo sipeo',\n", + " 'maeil achimeul nan neowa nunddeugo sipeo',\n", + " 'niga isseo gomawo monday to sunday',\n", + " 'now i think it’s time girl oh!',\n", + " 'weol, hwa, su, mok, geum, to',\n", + " 'nun ddeumyeon ni saenggakbuteo',\n", + " 'ilyoil achimeneun neowa hamkke nunddeo',\n", + " 'uri dureul seokkneundamyeon hwansangui collabo',\n", + " 'neol wihae bureul bravo',\n", + " 'an chakhaedo dwae dodohamyeon eoddae',\n", + " 'naegen an geurae',\n", + " 'geuraeseo ggok yaksokhae neohanaman jikillae',\n", + " 'eonjena neohanaman bollae',\n", + " 'sunday, monday to sunday!',\n", + " 'bogo ddo bogo sipeo',\n", + " 'monday, sunday to monday! jakku ddo bogo sipeo',\n", + " 'maeil ahchimeul nan neowa nunddeugo sipeo',\n", + " 'niga isseo gomawo',\n", + " 'malhaettjanha geugeot bwa ni gyeote itjanha',\n", + " 'nae mameul aljanha',\n", + " 'neoege eoullineun saram geurae na yeogi itjanha',\n", + " 'ije nan modu ni ggeoya eonjena neohanaman bollae',\n", + " 'sunday, monday to sunday!',\n", + " 'bogo ddo bogo sipeo',\n", + " 'monday, sunday to monday!',\n", + " 'jakku ddo bogo sipeo',\n", + " 'maeil achimeul nan neowa nunddeugo sipeo',\n", + " '(nunddeugo sipeo)',\n", + " 'niga isseo gomawo monday to sunday',\n", + " 'sunday, monday to sunday!',\n", + " '(every single day you make my heart sway)',\n", + " 'monday, sunday to monday!',\n", + " '(every day i honjaran geon byeollonikkan)',\n", + " 'maeil achimeul nan neowa nunddeugo',\n", + " '(nunddeugo sipeo)',\n", + " 'sipeo',\n", + " 'niga isseo gomawo',\n", + " 'nawahamkke isseojwo monday to sunday',\n", + " 'hangul',\n", + " 'universe universe universe',\n", + " '집에 가는 길에 지하철에 앉아',\n", + " 'oh 니 목소리가',\n", + " '듣고 싶어 전화했는데',\n", + " '어디 갔니 그새 현기증이 나네',\n", + " 'oh 나는 니가 없인 잠시도 안돼',\n", + " '너의 목소리는 음악이 되고',\n", + " '나를 춤추게 해 넌 날 미치게 해',\n", + " '너의 숨소리는 나를 살게 해',\n", + " 'why is it beautiful',\n", + " 'why is it beautiful',\n", + " 'you are my universe',\n", + " '너만 들리네 보이네 너무 광대해',\n", + " 'you are my universe',\n", + " '너만을 상상해 너만을 그리네',\n", + " 'let me know how you’re doin’ now',\n", + " '니가 어디서 뭘 하는지 다 알고 싶어',\n", + " '나 이제 solo 아냐 너 이제 홀로',\n", + " '아냐 나만의 girl로 only ya',\n", + " 'we just keep on rolling',\n", + " '환상적인 moly hold up',\n", + " '여긴 어디야 universe',\n", + " '너와 내가 타고 있는 거야 우주선',\n", + " '더 이상 뭘 더 바래 너와 있음',\n", + " 'it’s done',\n", + " '아무도 우릴 막지 못해',\n", + " 'keep it going on',\n", + " '너의 목소리는 음악이 되고',\n", + " '나를 춤추게 해 넌 날 미치게 해',\n", + " '너의 숨소리는 나를 살게 해',\n", + " 'why is it beautiful',\n", + " 'why is it beautiful',\n", + " 'you are my universe',\n", + " '너만 들리네 보이네 너무 광대해',\n", + " 'you are my universe',\n", + " '너만을 상상해 너만을 그리네',\n", + " '난 안되겠어 without you',\n", + " '별처럼 쏟아져 너의 눈빛',\n", + " 'you and i universe',\n", + " '쏟아지는 별들의 universe',\n", + " '너만 있다면 함께라면',\n", + " '난 타오를 텐데',\n", + " 'you are my universe',\n", + " '너만 들리네 보이네 너무 광대해',\n", + " 'you are my universe',\n", + " '너만을 상상해 너만을 그리네',\n", + " 'you and i universe',\n", + " '쏟아지는 별들의 universe',\n", + " '너와 함께라면 어딜 가든 paradise',\n", + " 'we just keep on rolling',\n", + " 'everyday every night',\n", + " 'you and i universe',\n", + " '쏟아지는 별들의 universe',\n", + " '이것은 오직 너만을 위한 나의 verse',\n", + " '이곳은 마치 유토피아 너의 universe',\n", + " 'romanization',\n", + " 'universe universe universe',\n", + " 'jibe ganeun gire jihacheore anja',\n", + " 'oh ni moksoriga',\n", + " 'deutgo sipeo jeonhwahaessneunde',\n", + " 'eodi gassni geusae hyeongijeungi nane',\n", + " 'oh naneun niga eopsin jamsido andwae',\n", + " 'neoui moksorineun eumagi doego',\n", + " 'nareul chumchuge hae neon nal michige hae',\n", + " 'neoui sumsorineun nareul salge hae',\n", + " 'why is it beautiful',\n", + " 'why is it beautiful',\n", + " 'you are my universe',\n", + " 'neoman deulline boine neomu gwangdaehae',\n", + " 'you are my universe',\n", + " 'neomaneul sangsanghae neomaneul geurine',\n", + " 'let me know how you’re doin’ now',\n", + " 'niga eodiseo mwol haneunji da algo sipeo',\n", + " 'na ije solo anya neo ije hollo',\n", + " 'anya namanui girlro only ya',\n", + " 'we just keep on rolling',\n", + " 'hwansangjeogin moly hold up',\n", + " 'yeogin eodiya universe',\n", + " 'neowa naega tago issneun geoya ujuseon',\n", + " 'deo isang mwol deo barae neowa isseum',\n", + " 'it’s done',\n", + " 'amudo uril makji moshae',\n", + " 'keep it going on',\n", + " 'neoui moksorineun eumagi doego',\n", + " 'nareul chumchuge hae neon nal michige hae',\n", + " 'neoui sumsorineun nareul salge hae',\n", + " 'why is it beautiful',\n", + " 'why is it beautiful',\n", + " 'you are my universe',\n", + " 'neoman deulline boine neomu gwangdaehae',\n", + " 'you are my universe',\n", + " 'neomaneul sangsanghae neomaneul geurine',\n", + " 'nan andoegesseo without you',\n", + " 'byeolcheoreom ssodajyeo neoui nunbit',\n", + " 'you and i universe',\n", + " 'ssodajineun byeoldeurui universe',\n", + " 'neoman issdamyeon hamkkeramyeon',\n", + " 'nan taoreul tende',\n", + " 'you are my universe',\n", + " 'neoman deulline boine neomu gwangdaehae',\n", + " 'you are my universe',\n", + " 'neomaneul sangsanghae neomaneul geurine',\n", + " 'you and i universe',\n", + " 'ssodajineun byeoldeurui universe',\n", + " 'neowa hamkkeramyeon eodil gadeun paradise',\n", + " 'we just keep on rolling',\n", + " 'everyday every night',\n", + " 'you and i universe',\n", + " 'ssodajineun byeoldeurui universe',\n", + " 'igeoseun ojik neomaneul wihan naui verse',\n", + " 'igoseun machi yutopia neoui universe',\n", + " 'na more na okeyane',\n", + " 'na ostrove buyane',\n", + " 'stoit altyrj kamenj',\n", + " 'sidit na nyom parenj',\n", + " 'sidit ne skuchaet',\n", + " 'pechali ne znaet',\n", + " 'ochey ne smykaet',\n", + " 'sidit nablyudaet',\n", + " 'is pasti is klykastoy',\n", + " 'ogonj ispuskaet',\n", + " 'besovskiye rati',\n", + " 'ognyom pozhigaet',\n", + " 'mir i poryadok',\n", + " 'khranit sberegaet',\n", + " 'vsyak yego znaet',\n", + " 'vsyak voskhvalyaet',\n", + " 'i sing for lennon',\n", + " 'i sing for j.j. cale',\n", + " 'i sing for elvis',\n", + " 'i sing for you',\n", + " 'i sing for elton john',\n", + " 'i song for bowie',\n", + " 'i sing for the beatles',\n", + " 'i sing for me',\n", + " 'i sing for daltrey',\n", + " 'i sing for the who',\n", + " 'i sing for hendrix',\n", + " 'i sing for you',\n", + " 'i sing for dylan',\n", + " 'i sing for donovan',\n", + " 'i sing for clapton',\n", + " 'i sing for you',\n", + " 'i sing for neil young',\n", + " 'i sing for nash',\n", + " 'i sing for crosby',\n", + " 'i sing for me',\n", + " 'oh...',\n", + " \"et tant pis si j'en oublie\",\n", + " \"et tant pis si j'en oublie\",\n", + " \"et tant pis si j'en oublie\",\n", + " 'tant pis',\n", + " 'tant pis...',\n", + " 'those innocent, fun games of the hallucination generation',\n", + " 'bizarre!',\n", + " 'those innocent, fun games of the hallucination generation',\n", + " 'bizarre!',\n", + " 'psychedelic circus',\n", + " 'psychedelic circus',\n", + " 'bizarre!',\n", + " 'are you ready?',\n", + " 'you you you you-kiss',\n", + " 'brave sound brave sound',\n", + " 'binggeul binggeul binggeul binggeul binggeul binggeul binggeul binggeul',\n", + " 'binggeul binggeul binggeul binggeul binggeul binggeul binggeul binggeul',\n", + " 'hwatgime baeteun mari yeoreon kkori dwaesseo',\n", + " 'ijewa huhwahaedo michin sorin girl',\n", + " 'neowana ireon nari ol jureun mollasseo',\n", + " 'i wanna see you girl dorawa jebal',\n", + " 'nareul tteonagaseo neoman jal sara',\n", + " 'mwot gateun sanghwangiya nan jeongmal jichyeosseo',\n", + " 'jeonhwa han tong jocha haji annneun neo',\n", + " 'neon mot dwaesseo',\n", + " 'nae meori binggeul binggeul',\n", + " 'nal tteonagaji malla haetjanha',\n", + " 'jeongmallo niga piryohadan marya',\n", + " 'i just want you baby here right now now now',\n", + " 'saranghago ittan marya',\n", + " 'binggeul binggeul binggeul binggeul (ni juwireul) binggeul binggeul binggeul binggeul',\n", + " 'binggeul binggeul binggeul binggeul (oneuldo) binggeul binggeul binggeul binggeul',\n", + " 'nan ni juwireul maemdora binggeul binggeul',\n", + " 'neomani nal manjokshikyeo you make me tingle tingle',\n", + " 'neon nae salme bingo keojyeobeoryeotteon nae eager',\n", + " 'ttaemune nan neoreul ireo neon mirror soge girl',\n", + " 'jjaekkak jjaekkak jjaekkak jjaekkak shiganeun heulleogago',\n", + " 'oh dodaeche al su eobseo neoye maeumeul',\n", + " 'saenkkeut saenkkeut saenkkeut saenkkeut miso jitteon neo',\n", + " 'eodiro ganni na mot chaketta girl',\n", + " 'nareul tteonagaseo neoman jal sara',\n", + " 'mwot gateun sanghwangiya nan jeongmal jichyeosseo',\n", + " 'jeonhwa han tong jocha haji annneun neo',\n", + " 'neon mot dwaet eo',\n", + " 'eojet bam mwohaesseo oh oh',\n", + " 'nal tteonagaji malla haetjanha',\n", + " 'jeongmallo niga piryohadan marya',\n", + " 'i just want you baby here right now now now',\n", + " 'saranghago ittan marya',\n", + " 'binggeul binggeul binggeul binggeul (ni juwireul) binggeul binggeul binggeul binggeul',\n", + " 'binggeul binggeul binggeul binggeul (oneuldo) binggeul binggeul binggeul binggeul',\n", + " 'i just want you neol ajikto saranghajana',\n", + " 'naegen neo ppunirangeo jal algo itjana',\n", + " 'jiul su eoptan geol you are the only one',\n", + " 'jebal nareul tteonajima',\n", + " 'binggeul binggeul binggeul binggeul',\n", + " '(kevin: binggeulbinggeul)',\n", + " 'binggeul binggeul binggeul binggeul',\n", + " 'binggeul binggeul binggeul binggeul',\n", + " '(binggeulbinggeul)',\n", + " 'binggeul binggeul binggeul binggeul',\n", + " 'ni juwireul nan oneuldo',\n", + " 'galoba angelozebis, galoba',\n", + " 'velebi da bibini',\n", + " 'vaios veli, vaios suli',\n", + " 'da galoba, suli',\n", + " 'dideba upalsa, ugalobet mariams, mariam',\n", + " 'didebuli suli, alaverdi, sioni, ateni',\n", + " 'betania, gremi',\n", + " 'kari cris, sada har mimaluli, lelianshi',\n", + " 'dakarguli',\n", + " 'galobid davlie suli',\n", + " 'deda, mama, tsoli, shvili, shvilishvili',\n", + " 'kera budea, dideda',\n", + " 'tu danama',\n", + " 'oboli doli, oboli suli',\n", + " 'bindia, tendeba, gatenda, sinatle, sioni',\n", + " 'tu aisi',\n", + " 'galoba upalsa, alleluia',\n", + " 'tu daria',\n", + " 'schnittke, alfred schnittke',\n", + " 'dio odio lileo-lile',\n", + " 'sheminde upalo',\n", + " 'shemindet givi, tito, ira, rezo',\n", + " 'gogi, vazha, sulkhani, muriko',\n", + " 'dareka zarma, temiko, temo, sheminde',\n", + " 'temo',\n", + " 'givi, tito, ira, rezo, temo',\n", + " 'tu daria tu tu tu',\n", + " 'odio odoia naduri nana odoia naduri',\n", + " 'odio odoia!',\n", + " 'odio naduri zari nana',\n", + " 'chu chu...',\n", + " 'daria tu avdaria',\n", + " 'kriala tsa, shoria gza, bibini, shori',\n", + " 'karia, bibini, suli, bibini, veli',\n", + " 'eria, eri',\n", + " 'suli nateli, avet, alfred',\n", + " 'dideba upalsa, ugalobet mariams',\n", + " 'uplis gamchens',\n", + " 'dauntet santeli suli nateli',\n", + " 'amen, alleluia',\n", + " 'time! merciless time!',\n", + " 'time! merciful time!',\n", + " 'gone with the time!',\n", + " 'time, merciful time!',\n", + " 'time! merciless time!',\n", + " 'gone with the time!',\n", + " 'time that tries all',\n", + " 'despair and hope',\n", + " 'time of joy, time of terror',\n", + " 'of good and evil!',\n", + " 'gone with the time',\n", + " 'merciless time',\n", + " 'time of terror, joy',\n", + " 'terror and joy!',\n", + " 'devouring time!',\n", + " 'with terror and joy!',\n", + " 'with terror and joyful',\n", + " 'joy',\n", + " 'brr brr!',\n", + " 'brr brr!',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'get-get-get-get low when the whistle go',\n", + " '(woo!)',\n", + " 'brr brr! (woo!)',\n", + " '(woo!)',\n", + " 'get-get-get low when the whistle go',\n", + " '(woo!)',\n", + " 'brr brr! (woo!)',\n", + " '(woo!)',\n", + " 'get-get-get low when the whistle go',\n", + " '(woo!)',\n", + " 'get-get-get get low (woo!)',\n", + " '(woo!)',\n", + " 'barbès, yalla habibi',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'get-get-get-get low when the whistle go',\n", + " '(woo!)',\n", + " 'brr brr! (woo!)',\n", + " '(woo!)',\n", + " 'get-get-get low when the whistle go',\n", + " '(woo!)',\n", + " 'brr brr! (woo!)',\n", + " '(woo!)',\n", + " 'get-get-get get low',\n", + " 'low low low low',\n", + " 'low low low low... (woo!)',\n", + " 'get-get-get get low',\n", + " 'low low low low',\n", + " 'low low low low… (woo!)',\n", + " 'barbès, yalla habibi',\n", + " '(yalla habibi, yalla habibi',\n", + " 'yalla habibi, yalla habibi',\n", + " 'yalla habibi, yalla habibi)',\n", + " 'calcinated scrotal sacs',\n", + " 'boiling syphilitic chancres',\n", + " 'pustulated porstate burns',\n", + " 'pelvic region sets on fire',\n", + " 'scalding penis warfs...',\n", + " 'venereal blisters...',\n", + " 'incinerated testicles',\n", + " 'scorched priapism',\n", + " 'sadistic pyromaniac emasculation',\n", + " 'penile papules cremation',\n", + " 'frenzied genital carbonization',\n", + " 'incendiary consequence of the furuncular ignition',\n", + " 'pyosperm combustion fueled by smegmatic fermentation',\n", + " 'bbaet gyeo beo rin shi seon eo geut nan mal tu eo ggae neo meo na reul ba ra bo neun neo',\n", + " 'eo ddeon mal lo da shi dol lil su ga eob seo o neul nae ja ri neun i mi jeong hae jyeo beo rin geo ya',\n", + " '(you lose) ni ga ggum ggun ni ga weon han gyeol lon i eott ni',\n", + " 'neo eui sang sang neo eui mang sang chak gak so ge seon',\n", + " 'nae ga cha jeum better place na man a neun new way',\n", + " 'neo eui mam i meom chweo sseo nae gyeo teu ro jom deo dang gyeo o neun geu sun gan',\n", + " \"mo deun geo shi byeon hae sseo geu ddae ga myeon gyeol guk it's over\",\n", + " 'ddeo na ya man hae shi gye so geui music',\n", + " '\"neo eui gyeo teul deo chae weo jul su eob seo\"',\n", + " 'naeng jeong han dae dap han ma di ro do',\n", + " 'neo eui du nun eun i mi nal chat go i sseo',\n", + " '(think it) neo reul wi han neo reul hyang han mi so bbun i ji',\n", + " \"ha ji man i'm not that! nat seol gett ji man\",\n", + " 'na reul ba ggun your reason ne ge nam gin my shoe',\n", + " 'yeol du shi ga ji na myeon neo e ge man jom deo gi eok dwe neun geu sun gan',\n", + " \"mo deun geo shi sa ra jyeo geu ddae ra myeon gyeol guk it's over\",\n", + " 'no chil su eob seo it ji mot ha neun han sa ram eul dda ra seo ga',\n", + " 'neo man eul wi han geo ya in one way, in one way',\n", + " 'nae ga cha jeum better place na man a neun new way',\n", + " 'neo eui mam i meom chweo sseo nae gyeo teu ro jom deo dang gyeo o neun geu sun gan',\n", + " 'mo deun geo shi byeon hae sseo geu ddae ga myeon gyeol guk',\n", + " 'na reul ba ggun your reason ne ge nam gin my shoe',\n", + " 'yeol du shi ga ji na myeon neo e ge man jom deo gi eok dwe neun geu sun gan',\n", + " \"mo deun geo shi sa ra jyeo geu ddae ra myeon gyeol guk it's over\",\n", + " 'on an island i long to be',\n", + " 'gazing out upon the shining surface of the sea',\n", + " 'i hear the sound of the ocean wave on wave',\n", + " 'crying, \"you who have turned away from home\"',\n", + " 'ascnam tar tuinn topur ndílenn dochum néirenn to sail across the wild sea back to ireland',\n", + " 'deus caeli ac terrae god of heaven and earth',\n", + " 'maris et fluminum the sea and the rivers',\n", + " 'deus solis ac lunae god of the sun and the moon',\n", + " 'on an island i long to live',\n", + " 'seabirds lament the coming of the winter wind',\n", + " 'i hear the endless sound of sea on shore',\n", + " 'crying, \"you who have turned away from home\"',\n", + " 'deus super caelo et in caelo et sub caelo god above heaven and in heaven and under heaven',\n", + " 'habet habitaculum erga caelum he dwells in heaven',\n", + " 'et terram et mare and earth and sea',\n", + " 'et omnia quae sunt in eis and all that is in them',\n", + " 'non separantur pater not separate are the father',\n", + " 'et filius et spiritus sanctus the son and the holy spirit',\n", + " 'on an island i long to be',\n", + " 'evening brings a whisper of the summer breeze',\n", + " 'i hear the song of the ocean wave on wave',\n", + " 'crying, \"you who have turned away from home\"',\n", + " 'ascnam tar tuinn topur ndílenn dochum néirenn to sail across the wild sea back to ireland',\n", + " 'inspirat omnia he inspires all things',\n", + " 'vivificat omnia he makes all things grow',\n", + " 'superat omnia he is above all things',\n", + " 'suffulcit omnia he supports all things',\n", + " '(4x)',\n", + " 'gratias agimus',\n", + " '(gratias agimus)',\n", + " 'agimus tibi',\n", + " 'propter magnam gloriam',\n", + " 'propter gloriam tuam',\n", + " '(propter gloriam tuam.)',\n", + " 'domine deus',\n", + " 'deus rex coelestis',\n", + " 'o domine deus',\n", + " 'pater omnipotens',\n", + " \"don't go away\",\n", + " \"don't go away\",\n", + " \"forever and ever we'll go on\",\n", + " \"don't go away\",\n", + " \"don't go away\",\n", + " \"there's no other place where you belong\",\n", + " \"don't go away, go away, go away, go away,...\",\n", + " 'o domine deus',\n", + " '(o domine deus)',\n", + " 'pater omnipotens',\n", + " 'o domine deus',\n", + " 'pater omnipotens',\n", + " \"don't go away\",\n", + " \"don't go away\",\n", + " \"forever and ever we'll go on\",\n", + " \"don't go away\",\n", + " \"don't go away\",\n", + " \"there's no other place where you belong\",\n", + " \"don't go away\",\n", + " '(o domine deus)',\n", + " \"don't go away\",\n", + " \"i've given to you real all my love (pater omnipotens)\",\n", + " \"don't go away\",\n", + " '(o domine deus)',\n", + " \"don't go away\",\n", + " \"forever and ever we'll go on. (pater omnipotens)\",\n", + " 'o domine deus',\n", + " '(o domine deus)',\n", + " 'pater omnipotens',\n", + " \"don't go away\",\n", + " \"don't go away\",\n", + " \"forever and ever we'll go on\",\n", + " \"don't go away\",\n", + " '(o domine deus)',\n", + " \"don't go away\",\n", + " \"there's no other place where you belong. (pater omnipotens)\",\n", + " \"don't go away\",\n", + " '(o domine deus)',\n", + " \"don't go away\",\n", + " \"forever and ever we'll go on. (pater omnipotens)\",\n", + " \"don't go away\",\n", + " '(o domine deus)',\n", + " \"don't go away\",\n", + " 'na na nana naaaa na nanaaaa (pater omnipotens)',\n", + " \"don't go away\",\n", + " '(o domine deus)',\n", + " \"don't go away\",\n", + " \"forever and ever we'll go on\",\n", + " '(pater omnipotens)',\n", + " \"warrior's back\",\n", + " \"we're gonna rock this\",\n", + " 'aha hu',\n", + " '(ooh~ oh no no~ oh~)',\n", + " 'b.a.p',\n", + " 'arrrr',\n", + " 'hu',\n", + " \"what's your b? (b)\",\n", + " 'matseo ssaulkke i',\n", + " 'georie yeonghondeureul wihae woah',\n", + " \"what's your a? (a)\",\n", + " 'saeroun hyeongmyeongui sijakjeom',\n", + " 'magaboltemyeon magabwa nal',\n", + " \"what's your p? (p)\",\n", + " 'akhan dna, baireoseu',\n", + " 'urin jeonsadeureul da irheosseo (huh!)',\n", + " \"once again, what's the name of the game?\",\n", + " 'b.a.p da ireoseo',\n", + " 'saki no mienai tatakai no hibi',\n", + " \"(bang bang) you'd betta watch your back\",\n", + " 'yudan hitotsu sureba mou naraku',\n", + " 'uso ga riaru wo nomikomu mae ni',\n", + " '(bomb bomb) cut it off kore ige',\n", + " \"can't take so get it on\",\n", + " 'warrior (uh)',\n", + " 'uchikomu mune no naka (uh uh)',\n", + " 'risei no oku made mo (uh)',\n", + " 'digidigidon digidigidon',\n", + " 'warrior (uh)',\n", + " 'hi wo tomose kokoro ni (uh uh)',\n", + " 'ageru tamashii no shout (uh)',\n", + " 'digidigidon digidigidon',\n", + " 'sora no mas***a',\n", + " 'get down, get down',\n", + " 'ge-get get ge-get down (uh)',\n", + " 'get down, get down',\n", + " '(bow wow wow wow wow) (rawr)',\n", + " 'get down, get down',\n", + " 'ge-get get ge-get down (yeah) (uh)',\n", + " 'get down, get down',\n", + " '(bow wow wow wow wow)',\n", + " 'yeah',\n", + " 'ginagin ssaume mogi mareun',\n", + " 'geu daedeureul wihae nallineun punch',\n", + " 'seoroga dareugo pyeoneul gareugo',\n", + " 'geu mari got mujihan saramdeul marigo',\n", + " 'simjange ullineun nae mari nimalgwa dareuni',\n", + " 'hwaganani deureo samadi jansori',\n", + " '(rest in peace)',\n", + " 'jinsildeureul wihan i gido',\n", + " 'garyeojin siseutem geomeun geurimjaga wiro',\n", + " 'deopyeodo gulhaji annneun sinseonghan baetji',\n", + " \"what's the name of the game?\",\n", + " 'b.a.p',\n", + " 'zetsubou ga michi wo habanda yoru wa',\n", + " '(bang bang) warau akuma ga sagasu hikari',\n", + " 'through the night',\n", + " 'yami ga subete wo nomikonde yuku',\n", + " '(bomb bomb) kuzureochitara owari ga',\n", + " 'omoku no shikakaru',\n", + " 'warrior (uh)',\n", + " 'uchikomu mune no naka (uh uh)',\n", + " 'risei no oku made mo (uh)',\n", + " 'digidigidon digidigidon',\n", + " 'warrior (uh)',\n", + " 'hi wo tomose kokoro ni (uh uh)',\n", + " 'ageru tamashii no shout (uh)',\n", + " 'digidigidon digidigidon',\n", + " 'sora no mas***a',\n", + " 'get down, get down',\n", + " 'ge-get get ge-get down (uh)',\n", + " 'get down, get down',\n", + " '(bow wow wow wow wow) (rawr)',\n", + " 'zankoku sugiru genjitsu no mae demo no...',\n", + " 'senshi tachi wa tomaru koto wa nai no, no, no, no...',\n", + " 'warrior (uh)',\n", + " 'uchikomu mune no naka (uh uh)',\n", + " 'risei no oku made mo (uh)',\n", + " 'digidigidon digidigidon',\n", + " 'warrior (uh)',\n", + " 'hi wo tomose kokoro ni (uh uh)',\n", + " 'ageru tamashii no shout (uh)',\n", + " 'digidigidon digidigidon',\n", + " 'sora no mas***a',\n", + " 'get down, get down',\n", + " 'ge-get get ge-get down (uh)',\n", + " 'get down, get down',\n", + " '(bow wow wow wow wow)',\n", + " '__________________',\n", + " 'warrior is back',\n", + " 'we gonna rock this',\n", + " 'oh~no~woah woah~',\n", + " 'b.a.p',\n", + " \"what's your b?\",\n", + " 'matseo ssaulkke i georie yeonghondeureul wihae whoa',\n", + " \"what's your a?\",\n", + " 'saeroun hyeongmyeongui sijakjeom',\n", + " 'magaboltemyeon magabwa nal',\n", + " \"what's your p?\",\n", + " 'akhan dna, baireoseu',\n", + " 'urin jeonsadeureul da irheosseo',\n", + " \"once again, what's the name of the game? b.a.p\",\n", + " 'da ireoseo',\n", + " 'kkeuteomneun jeonjaengeun nugul wihaeinna',\n", + " 'bang bang bigeophage da geudae dwieseo meoril gyeonunda',\n", + " 'geudaedeurui wiseoneun yongseobadeul su inna',\n", + " 'bomb bomb eoduun gamyeon sogeul da deonjyeo',\n", + " 'get it on',\n", + " 'warrior',\n", + " 'taeyangarae neoreul matgyeobwa',\n", + " 'nae gaseume bureul jipyeobwa',\n", + " 'digidigideom digidigideom',\n", + " 'warrior',\n", + " 'chongalboda jomdeo ppareuge',\n", + " 'nigaseume pago deureoga',\n", + " 'digidigideom digidigideom',\n", + " 'mogeul joyeoganda',\n", + " 'get down get down',\n", + " 'getgetgetget get down',\n", + " 'get down get down',\n", + " '(wa da wa da wa)',\n", + " 'get down get down',\n", + " 'getgetgetget get down',\n", + " 'get down get down',\n", + " '(wa da wa da wa)',\n", + " 'yeah',\n", + " 'ginagin ssaume mogi mareun',\n", + " 'geu daedeureul wihae nallineun punch',\n", + " 'seoroga dareugo pyeoneul gareugo',\n", + " 'geu mari got mujihan saramdeul marigo',\n", + " 'simjange ullineun nae mari nimalgwa dareuni',\n", + " 'hwaganani deureo samadi jansori',\n", + " '( rest in peace) jinsildeureul wihan i gido',\n", + " 'garyeojin siseutem geomeun geurimjaga wiro',\n", + " 'deopyeodo gulhaji annneun sinseonghan baetji',\n", + " \"what's the name of the game? b.a.p\",\n", + " 'jeolmangui neupeseo sara bonjeok inna',\n", + " 'bang bang angmongdeuri nal goerophyeo gil irheun nachimban',\n", + " 'angma gateun ipsullo neon swipge malhal tenga',\n", + " 'bomb bomb hana dulssik jugeoga jiok gateun mare sumi meojeoga',\n", + " 'warrior',\n", + " 'taeyangarae neoreul matgyeobwa',\n", + " 'nae gaseume bureul jipyeobwa',\n", + " 'digidigideom digidigideom',\n", + " 'warrior',\n", + " 'chongalboda jomdeo ppareuge',\n", + " 'ni gaseume pago deureoga',\n", + " 'digidigideom digidigideom',\n", + " 'mogeul joyeoganda',\n", + " 'get down get down',\n", + " 'get get get get get down',\n", + " 'get down get down',\n", + " '(wa da wa da wa)',\n", + " 'haneurarae geudaen garyeojiji annneunda',\n", + " 'sumeobwado jinsil ape mureup kkurnneunda',\n", + " 'neoneoneoneoneoneo neoneo neon~',\n", + " 'warrior',\n", + " 'taeyangarae neoreul matgyeobwa',\n", + " 'nae gaseume bureul jipyeobwa',\n", + " 'digidigideom digidigideom',\n", + " 'warrior',\n", + " 'chongalboda jomdeo ppareuge',\n", + " 'ni gaseume pago deureoga',\n", + " 'digidigideom digidigideom',\n", + " 'mogeul joyeoganda',\n", + " 'get down get down',\n", + " 'getgetgetget get down',\n", + " 'get down get down',\n", + " '(wa da wa da wa)',\n", + " 'telethusa',\n", + " 'omnia',\n", + " 'hic cuando telethusa circulatrix',\n", + " 'qua clunem tunica tegente nulla',\n", + " 'sexum latius altiusque motat',\n", + " 'crisabit tibi fluctuante lumbo',\n", + " 'haec sic non mode te priape posit',\n", + " 'privignum quoque sed movere phaedrae',\n", + " 'when telethusa, that little street slut',\n", + " 'who loves to shake her naked butt',\n", + " 'moving her pussy up and down, left and right',\n", + " 'wiggling with her cunt in plain sight',\n", + " \"she'll move you, priapus, make you hot\",\n", + " 'and even hippolytus(*) can withstand her not',\n", + " '(* the nephew of phaedrae; character from classic greek history)',\n", + " 'one shot, two shot',\n", + " 'one shot, two shot',\n", + " 'just for one, just-just for one',\n", + " 'one shot, two shot',\n", + " 'one shot, two shot',\n", + " 'just for one, just-just for one',\n", + " '가빠지는 숨소리에',\n", + " '높아지는 아드레날린',\n", + " '이건 고작 시작인걸',\n", + " '알고있어 알고있어',\n", + " '두 눈에서 흐르는 spangles are falling down',\n", + " '반짝이는 세상 그 곳에서 나를 적셔놔',\n", + " '황홀한 시간 속에 주인공은 너와 나',\n", + " \"ain't no one, yeah, nobody\",\n", + " '빠져버린 나',\n", + " '모든건 이미 perfect',\n", + " 'with you, with you, with you',\n", + " '시작된 firework',\n", + " '홀려버린 이 기분에',\n", + " 'i do, i do, i do',\n", + " '(one shot, two shot) 나와 넌',\n", + " '(one shot, two shot) have some fun',\n", + " '우리 둘이 just for one',\n", + " 'just for one (just for one)',\n", + " '(one shot, two shot) 나와 넌',\n", + " '(one shot, two shot) have some fun',\n", + " '우리 둘이 just for one',\n", + " 'just for one (just for one)',\n", + " '이 순간에 what can i say? (what can i say?)',\n", + " '표현조차 사치인걸',\n", + " \"but it's okay, it is okay\",\n", + " '이미 읽혀버린 너란 세계',\n", + " '감각은 날 일깨워 마치 아름다운 sound',\n", + " '순간 마법에 다 홀린듯한 내 모습은 strange',\n", + " '나란 퍼즐의 완성 마지막 조각은 너',\n", + " \"ain't no one, yeah, you're the one\",\n", + " '빠져버린 나',\n", + " '모든건 이미 perfect',\n", + " 'with you, with you, with you',\n", + " '시작된 firework',\n", + " '홀려버린 이 기분에',\n", + " 'i do, i do, i do',\n", + " '(one shot, two shot) 나와 넌 (나와 넌)',\n", + " '(one shot, two shot) have some fun (oh)',\n", + " '우리 둘이 just for one',\n", + " 'just for one (just for one)',\n", + " '(one shot, two shot) 나와 넌',\n", + " '(one shot, two shot) have some fun',\n", + " '우리 둘이 just for one',\n", + " 'just for one (just for one)',\n", + " '스쳐가는 순간도',\n", + " '담고싶어 모든걸',\n", + " '지나칠수 없어서, no, no, no, no',\n", + " '내게서 느낀 변화를',\n", + " '받아들이기로 했어 난 (oh)',\n", + " '모든 건 이미 perfect',\n", + " 'with you, with you, with you (with you, with you, with you)',\n", + " '끝없이 firework (끝없이 baby)',\n", + " '찬란하게 빛난 네게',\n", + " 'i do, i do, i do (i do, i do, i do)',\n", + " '(one shot, two shot) 나와 넌',\n", + " '(one shot, two shot) have some fun',\n", + " '우리 둘이 just for one (ooh)',\n", + " 'just for one (just for one)',\n", + " '(one shot, two shot) 나와 넌 (넌)',\n", + " '(one shot, two shot) have some fun (oh)',\n", + " '우리 둘이 just for one (oh, oh, oh, oh)',\n", + " 'just for one (just for one)',\n", + " '(one shot, two shot) party for one',\n", + " '(one shot, two shot) party for one, one',\n", + " '(우리 둘이) party for one',\n", + " '(just for one, just for one) oh, yeah',\n", + " '(one shot, two shot, 나와 넌) party for one',\n", + " '(one shot, two shot, have some fun) party for one, one',\n", + " '(우리 둘이) party for one',\n", + " '(just for one) just for one, just-just for one',\n", + " 'romanization',\n", + " 'one shot two shot',\n", + " 'one shot two shot',\n", + " 'just for one',\n", + " 'one shot two shot',\n", + " 'one shot two shot',\n", + " 'just for one',\n", + " 'gappajineun sumsolie nop-ajineun adeulenallin',\n", + " 'igeon gojag sijag-ingeol algoiss-eo algoiss-eo',\n", + " 'du nun-eseo heuleuneun spangles are falling down',\n", + " 'banjjag-ineun sesang geu gos-eseo naleul jeogsyeonwa',\n", + " 'hwangholhan sigan sog-e ju-ingong-eun neowa na',\n", + " \"ain't no one, yeah nobody\",\n", + " 'ppajyeobeolin na',\n", + " 'modeungeon imi perfect with you with you with you',\n", + " 'sijagdoen firework',\n", + " 'hollyeobeolin i gibun-e',\n", + " 'i do i do i do',\n", + " '(one shot two shot) nawa neon',\n", + " '(one shot two shot) have some fun',\n", + " 'uli dul-i just for one',\n", + " 'just for one',\n", + " '(one shot two shot) nawa neon',\n", + " '(one shot two shot) have some fun',\n", + " 'uli dul-i just for one',\n", + " 'just for one',\n", + " 'i sungan-e what can i say? (what can i say?)',\n", + " 'pyohyeonjocha sachiingeol',\n", + " \"but it's ok it is ok\",\n", + " 'imi ilghyeobeolin neolan segye',\n", + " 'gamgag-eun nal ilkkaewo machi aleumdaun sound',\n", + " 'sungan mabeob-e da hollindeushan nae moseub-eun strange',\n", + " 'nalan peojeul-ui wanseong majimag jogag-eun neo',\n", + " \"ain't no one, yeah you're the one\",\n", + " 'ppajyeobeolin na',\n", + " 'modeungeon imi perfect with you with you with you',\n", + " 'sijagdoen firework',\n", + " 'hollyeobeolin i gibun-e',\n", + " 'i do i do i do',\n", + " '(one shot two shot) nawa neon',\n", + " '(one shot two shot) have some fun',\n", + " 'uli dul-i just for one',\n", + " 'just for one',\n", + " '(one shot two shot) nawa neon',\n", + " '(one shot two shot) have some fun',\n", + " 'uli dul-i just for one',\n", + " 'just for one',\n", + " 'seuchyeoganeun sungando',\n", + " 'damgosip-eo modeungeol',\n", + " 'jinachilsu eobs-eoseono no no no',\n", + " 'naegeseo neukkin byeonhwaleul',\n", + " 'bad-adeul-igilo haess-eo nan',\n", + " 'modeun geon imi perfect with you with you with you',\n", + " '(with you with you with you)',\n", + " 'kkeut-eobs-i firework (kkeut-eobs-i baby)',\n", + " 'chanlanhage bichnan nege',\n", + " 'i do i do i do (i do i do i do)',\n", + " '(one shot two shot) nawa neon',\n", + " '(one shot two shot) have some fun',\n", + " 'uli dul-i just for one',\n", + " 'just for one',\n", + " '(one shot two shot) nawa neon',\n", + " '(one shot two shot) have some fun',\n", + " 'uli dul-i just for one',\n", + " 'just for one',\n", + " 'party for one',\n", + " 'party for one',\n", + " 'party for one, oh yeah',\n", + " 'party for one',\n", + " 'party for one',\n", + " 'party for one',\n", + " 'just for one',\n", + " 'just for one',\n", + " 'tiesto vom si ande resta',\n", + " 'feros done don',\n", + " 'de monte verra',\n", + " 'in tu demoni',\n", + " 'ferum',\n", + " 'ferum e calusta eri',\n", + " 'fera e calurra estam',\n", + " 'ave',\n", + " 'aveum deorem',\n", + " 'devoni devorem',\n", + " 'calusta meo deo deum',\n", + " 'tiesto estu on de resta',\n", + " 'in terra terrum',\n", + " 'ferus totiem oferis terra',\n", + " 'ferum',\n", + " 'tiesto vom si ande resta',\n", + " 'feros done don',\n", + " 'de monte verra',\n", + " 'in tu demoni',\n", + " 'ferum',\n", + " 'ferum e calusta eri',\n", + " 'fera e calurra estam',\n", + " 'ave rirem iruirem',\n", + " 'maleo',\n", + " '---',\n", + " '.',\n", + " 'metal! nickel! iron!',\n", + " 'fire and steel',\n", + " 'zinc! uranium! titanium!',\n", + " \"metal's their will\",\n", + " 'cuprum! yttrium! plutonium!',\n", + " 'fire and steel',\n", + " 'cobaltum! thorium! stronitium!',\n", + " \"metal's their will\",\n", + " 'gallium! prometium! palladium!',\n", + " 'fire and steel',\n", + " 'metallium! germanium! tecntetium!',\n", + " \"metal's their will\",\n", + " 'fermium! caesium! einsteinium!',\n", + " 'fire and steel',\n", + " 'litium! radium! berillium!',\n", + " \"metal's their will\",\n", + " 'haha, 4minute',\n", + " 'get it on the floor',\n", + " 'leggo!',\n", + " 'uh uh uh uh uh uh uh uh uh uh',\n", + " 'get on the floor',\n", + " 'uh uh uh uh uh uh uh',\n", + " 'get it on the floor',\n", + " 'uh uh uh uh uh uh uh uh uh uh',\n", + " 'get on the floor',\n", + " 'uh uh uh uh uh uh uh',\n", + " 'get it on the floor',\n", + " 'namdeul bodan jomdeo, ttoryeot hage',\n", + " 'nugu boda jomdeo, jjarit hage',\n", + " 'jeulgil junbi dwen saram man ttarawa',\n", + " 'get it on get it on get it on the floor',\n", + " 'namdeureun hyung nae naelsun eobtji',\n", + " 'nugu do ttara halsun eobtji',\n", + " 'jeulgil junbi dwae sseumyeon ttarawa',\n", + " 'get it on get it on get it on the floor',\n", + " 'ni shimjangeul kung kwang georige',\n", + " 'ni maeumeul dara oreuge',\n", + " 'eumageun meomchuji anhge',\n", + " 'bollyum eun ije deo keuge',\n", + " 'get it on the floor get it on the floor oh oh',\n", + " 'neukkyeobwa, jeulgyeobwa, eumake',\n", + " 'ni momeul matgyeo bwa',\n", + " 'get it on get it on get it on',\n", + " 'get it on get it on get it on the floor',\n", + " 'deo nopge, deo keuge, bollyumeul',\n", + " 'deo keuge ollyeo bwa',\n", + " 'get it on get it on get it on',\n", + " 'get it on get it on get it on the floor',\n", + " 'uh uh uh uh uh uh uh uh uh uh',\n", + " 'get on the floor',\n", + " 'uh uh uh uh uh uh uh',\n", + " 'get it on the floor',\n", + " 'uh uh uh uh uh uh uh uh uh uh',\n", + " 'get on the floor',\n", + " 'uh uh uh uh uh uh uh',\n", + " 'get it on the floor',\n", + " 'volume up!',\n", + " 'extremos orcos scriptos ab copiis',\n", + " 'septentrionis kazh-ran',\n", + " 'navigii parati erant ad solvendum',\n", + " 'versus ruid-dor sinus elfmuth',\n", + " 'theatrum supremi certaminis designatum',\n", + " 'blasphema caterva ad litus',\n", + " 'ex collibus ubi appropinquant',\n", + " 'naves bellicae soloturae',\n", + " 'intus horum servi suos dominos',\n", + " 'nigris armant',\n", + " 'sanguine eorum loricis adversariorum',\n", + " 'defendentibus eorum',\n", + " 'aura corpora atra convoluta ac sagis',\n", + " 'eorum signa ferentibus',\n", + " 'nave profecta ornata capitibus principum',\n", + " 'princeps remigium tempus remorum',\n", + " 'pulsu metitur nanorum',\n", + " 'qui a roze-el ducti',\n", + " 'templum eldril destruxerunt',\n", + " 'arcanorum artium peritissimi',\n", + " 'nunc cruore manant strigitu',\n", + " 'mille scuticarum quae eorum',\n", + " 'duram cutem lacerant',\n", + " 'et eorum dolor, aegritudo, sudori, sanguinis',\n", + " 'permixtus lembum propellit',\n", + " 'i portum argentatum quo sol',\n", + " 'iam lassus se conduit',\n", + " 'omnia parata ad proelio sunt... tympana',\n", + " 'metiuntur magna itinera orcorum',\n", + " 'ac hominum deformum pugnae aviditate',\n", + " 'cupiditate sola contentionis',\n", + " 'ordine procedunt sub caelo cinereo onusto odiis',\n", + " 'sicut domini impiarum animarum',\n", + " '(they sail towards elfmuth (before war))',\n", + " 'when the last ogres were recruited',\n", + " 'by the troops of north kazh-ran',\n", + " 'the warships where readied to set towards ruid-dor',\n", + " 'heart of elmuth, designated as the theatre of the last battle',\n", + " 'a blasphemous horde, from the hills',\n", + " 'goes to the coast where the warship are ready',\n", + " 'inside, the servants',\n", + " 'arm their lords with armours',\n", + " 'now black for the blood of their enemies',\n", + " 'and protecting their bodies',\n", + " 'wrapped by a black breeze',\n", + " ...]},\n", + " 'r-b': {'meta': {'train_data': ['{0:00 intro}',\n", + " '{0:33 chorus 1: head}',\n", + " '{1:15 chorus 2: trombone (ryan porter)}',\n", + " '{1:58 chorus 3: trombone, tenor saxophone (kamasi washington)}',\n", + " '{2:24 chorus 4-6: tenor saxophone}',\n", + " '{4:50 chorus 7-9: piano (cameron graves)}',\n", + " '{7:15 chorus 10-11: head}',\n", + " '{8:42 outro}',\n", + " '{9:20 end}',\n", + " 'hangul',\n", + " '내 도시 위엔',\n", + " '필요 없지 license',\n", + " 'it’s like a nonsense',\n", + " '밤은 짧기에 서둘러 tonight is the night',\n", + " '우리 여길 떠날 때엔',\n", + " 'don’t look back',\n", + " 'we are not fake',\n", + " '물 흐르듯이',\n", + " 'see, i know what u want',\n", + " 'so 낭비하지 마',\n", + " '투명한 건 꼭 떠올라',\n", + " '수면 위로 다',\n", + " 'look, 반짝거리잖아',\n", + " 'you are shining like a star',\n", + " '멈추지 말고 따라와 줘 매일',\n", + " '비워져있어 네 자린',\n", + " 'you make ma world',\n", + " 'you should know baby',\n", + " '넌 너이기에 소중해 또 필요해 난 like fire',\n", + " 'we got the key',\n", + " '세상은 우리',\n", + " '주윌 돌 테니',\n", + " 'so feel your own free',\n", + " '진짜인지',\n", + " '의심하진 마',\n", + " 'believe and get your own feelin’',\n", + " 'in a rainbow rainbow car',\n", + " 'in a rainbow rainbow car',\n", + " '규칙은 깨지길 바랬지',\n", + " '내려놔 그 짐, and make your fantasy',\n", + " 'with me here, rainbow rainbow car, l’ll make u free',\n", + " \"i'll make you free\",\n", + " '그래 걔넨 걔네일뿐이지',\n", + " '너는 뭐가 되려해?',\n", + " '우리 모두 갖고있잖아, 원하는게 뭐던지 간에',\n", + " 'so 빛을 부어, 빛을 부어',\n", + " '떨어지더라도 걱정마 그건 다리 인거야',\n", + " '널 잃지마, 잃지마',\n", + " '네 색을 따라가 번지더라도 make it right',\n", + " '아무도 없는 듯이',\n", + " 'see, i know what u want',\n", + " '한 가지 색깔로만 덮인 네 모습을 봐',\n", + " '이 순간에도',\n", + " 'look 흐려지고 있잖아',\n", + " 'l’ll make u like a star',\n", + " '멈추지 말고 따라와 줘 매일',\n", + " '비워져 있어 네 자린',\n", + " 'you make ma world',\n", + " 'you should know baby',\n", + " '넌 너이기에 소중해 또 필요해 난 like fire',\n", + " 'we got the key',\n", + " '세상은 우리',\n", + " '주윌 돌 테니',\n", + " 'so feel your own free',\n", + " '진짜인지',\n", + " '의심하진 마',\n", + " 'believe and get your own feelin’',\n", + " 'in a rainbow rainbow',\n", + " 'in a rainbow rainbow',\n", + " '어렵게 생각하진 마',\n", + " 'time to divide, divide',\n", + " '규칙은 깨지길 바랬지',\n", + " '내려놔 그 짐, and make your fantasy',\n", + " 'with me here, rainbow rainbow car',\n", + " 'it’s who we are',\n", + " 'yes ride with it',\n", + " 'good feels on wheels',\n", + " '눈치는 보지 말고 그저 즐겨',\n", + " '널 만드는 일이 널 지치게 하지마',\n", + " '붓을 꺼내 색을 칠해 더 빛날 수 있게',\n", + " 'yes ride with it',\n", + " 'good feels on wheels',\n", + " '눈치는 보지 말고 그저 즐겨',\n", + " '널 만드는 일이 널 지치게 하지마',\n", + " '붓을 꺼내 색을 칠해 더 빛날 수 있게',\n", + " 'in a rainbow rainbow car',\n", + " 'in a rainbow rainbow car',\n", + " '규칙은 깨지길 바랬지',\n", + " '내려놔 그 짐, and make your fantasy',\n", + " 'with me here, rainbow rainbow car, l’ll make u free',\n", + " 'romanization',\n", + " 'nae dosi wien',\n", + " 'pil-yo eobsji license',\n", + " 'it’s like a nonsense',\n", + " 'bam-eun jjalbgie seodulleo tonight is the night',\n", + " 'uli yeogil tteonal ttaeen',\n", + " 'don’t look back',\n", + " 'we are not fake',\n", + " 'mul heuleudeus-i',\n", + " 'see, i know what u want',\n", + " 'so nangbihaji ma',\n", + " 'tumyeonghan geon kkog tteoolla',\n", + " 'sumyeon wilo da',\n", + " 'look, banjjaggeolijanh-a',\n", + " 'you are shining like a star',\n", + " 'meomchuji malgo ttalawa jwo maeil',\n", + " 'biwojyeoiss-eo ne jalin',\n", + " 'you make ma world',\n", + " 'you should know baby',\n", + " 'neon neoigie sojunghae tto pil-yohae nan like fire',\n", + " 'we got the key',\n", + " 'sesang-eun uli',\n", + " 'juwil dol teni',\n", + " 'so feel your own free',\n", + " 'jinjjainji',\n", + " 'uisimhajin ma',\n", + " 'believe and get your own feelin’',\n", + " 'in a rainbow rainbow car',\n", + " 'in a rainbow rainbow car',\n", + " 'gyuchig-eun kkaejigil balaessji',\n", + " 'naelyeonwa geu jim, and make your fantasy',\n", + " 'with me here, rainbow rainbow car, l’ll make u free',\n", + " \"i'll make you free\",\n", + " 'geulae gyaenen gyaeneilppun-iji',\n", + " 'neoneun mwoga doelyeohae?',\n", + " 'uli modu gajgoissjanh-a, wonhaneunge mwodeonji gan-e',\n", + " 'so bich-eul bueo, bich-eul bueo',\n", + " 'tteol-eojideolado geogjeongma geugeon dali ingeoya',\n", + " 'neol ilhjima, ilhjima',\n", + " 'ne saeg-eul ttalaga beonjideolado make it right',\n", + " 'amudo eobsneun deus-i',\n", + " 'see, i know what u want',\n", + " 'han gaji saegkkalloman deop-in ne moseub-eul bwa',\n", + " 'i sungan-edo',\n", + " 'look heulyeojigo issjanh-a',\n", + " 'l’ll make u like a star',\n", + " 'meomchuji malgo ttalawa jwo maeil',\n", + " 'biwojyeo iss-eo ne jalin',\n", + " 'you make ma world',\n", + " 'you should know baby',\n", + " 'neon neoigie sojunghae tto pil-yohae nan like fire',\n", + " 'we got the key',\n", + " 'sesang-eun uli',\n", + " 'juwil dol teni',\n", + " 'so feel your own free',\n", + " 'jinjjainji',\n", + " 'uisimhajin ma',\n", + " 'believe and get your own feelin’',\n", + " 'in a rainbow rainbow',\n", + " 'in a rainbow rainbow',\n", + " 'eolyeobge saeng-gaghajin ma',\n", + " 'time to divide, divide',\n", + " 'gyuchig-eun kkaejigil balaessji',\n", + " 'naelyeonwa geu jim, and make your fantasy',\n", + " 'with me here, rainbow rainbow car',\n", + " 'it’s who we are',\n", + " 'yes ride with it',\n", + " 'good feels on wheels',\n", + " 'nunchineun boji malgo geujeo jeulgyeo',\n", + " 'neol mandeuneun il-i neol jichige hajima',\n", + " 'bus-eul kkeonae saeg-eul chilhae deo bichnal su issge',\n", + " 'yes ride with it',\n", + " 'good feels on wheels',\n", + " 'nunchineun boji malgo geujeo jeulgyeo',\n", + " 'neol mandeuneun il-i neol jichige hajima',\n", + " 'bus-eul kkeonae saeg-eul chilhae deo bichnal su issge',\n", + " 'in a rainbow rainbow car',\n", + " 'in a rainbow rainbow car',\n", + " 'gyuchig-eun kkaejigil balaessji',\n", + " 'naelyeonwa geu jim, and make your fantasy',\n", + " 'with me here, rainbow rainbow car, l’ll make u free',\n", + " 'hangul',\n", + " \"i'll sing it to you girl\",\n", + " 'i can make a thousand songs for you babe (babe)',\n", + " \"just lookin' at your face\",\n", + " '넌 나의 영감이 돼 all day always',\n", + " '넌 날 노래하게 만들어 ooh yes',\n", + " '넌 말야 just like the melodies',\n", + " \"that's in my head\",\n", + " '내 머릿속을 가득 채운 선율처럼',\n", + " '그렇게 넌 존재하고 있어',\n", + " 'inside of me girl',\n", + " 'you and i, 너와 나 둘이 함께 있으면',\n", + " '더 바랄것 이 없어',\n", + " '우리 둘 so good together',\n", + " '널 닮아가는 나 날 닮은 너 yeah',\n", + " '달콤한 너의 향기처럼',\n", + " '너 내게 스며들면',\n", + " '멀리 있어도 함께인 것처럼',\n", + " '난 널 느낄 수 있는데 yeah',\n", + " 'lah lah lah lah',\n", + " 'you make me wanna sing sing sing',\n", + " '너를 보면',\n", + " '너너너너너',\n", + " '알잖아 나의 queen queen queen',\n", + " \"yeah that's true yo\",\n", + " '걱정하지마 oh',\n", + " '언제나 너의 뒤 뒤 뒤',\n", + " '너의 뒤에서',\n", + " '너의 뒤에서 널 지켜줄 거야 oh',\n", + " '함께할 거야 we we we',\n", + " 'cause we are meant to be',\n", + " '좋은 덴 이유도 없어 여기 우리처럼',\n", + " '오 이런 다정한 남잘 봤나',\n", + " 'my destiny you and i',\n", + " '나 지금 너만 보고 걷고 있어',\n", + " 'you make me 매일 매일이',\n", + " 'up and down 오늘도 웃게 해줘',\n", + " '네가 있어 감사해 my all',\n", + " 'you and i 너와 나 둘이 함께 있으면',\n", + " '더 바랄 것이 없어',\n", + " '우리 둘 so good together',\n", + " '널 닮아가는 나 날 닮은 너 yeah',\n", + " '달콤한 너의 향기처럼',\n", + " '너 내게 스며들면',\n", + " '멀리 있어도 함께인 것처럼',\n", + " '난 널 느낄 수 있는데 yeah',\n", + " '떨어져도 넌 내 옆에',\n", + " '멀어져도 can’t fade away',\n", + " '말 뿐인 감정일 거라며 친구들은',\n", + " '못 믿고 있고 난 배웠네',\n", + " '그래 영화 영화 사람들은 보기만 하고 내 앨범엔',\n", + " 'you know my life is like a movie shoot',\n", + " '다 너로 채웠네 sing',\n", + " '차분한 멜로디 안 질리고 새롭지',\n", + " '바로 몇 분 전에 네가 준 영감들은 셀 수 없지',\n", + " '시간은 두렵지 않아 흐르지 않을 거니까',\n", + " '넘어져도 괜찮아 내 가슴이 베개가 될 거니까',\n", + " '라라라라라',\n", + " 'you make me wanna sing sing sing',\n", + " '너를 보면',\n", + " '너너너너너',\n", + " '알잖아 나의 queen queen queen',\n", + " \"yeah that's true yo\",\n", + " '걱정하지마 oh',\n", + " '언제나 너의 뒤 뒤 뒤',\n", + " '너의 뒤에서',\n", + " '너의 뒤에서 널 지켜줄 거야 oh',\n", + " '함께할 거야 we we we',\n", + " 'cause we are meant to be',\n", + " 'romanization',\n", + " \"i'll sing it to you girl\",\n", + " 'i can make a thousand songs for you babe (babe)',\n", + " \"just lookin' at your face\",\n", + " 'neon naui yeong-gam-i dwae all day always',\n", + " 'neon nal nolaehage mandeul-eo ooh yes',\n", + " 'neon mal-ya just like the melodies',\n", + " \"that's in my head\",\n", + " 'nae meolis-sog-eul gadeug chaeun seon-yulcheoleom',\n", + " 'geuleohge neon jonjaehago iss-eo',\n", + " 'inside of me girl',\n", + " 'you and i neowa na dul-i hamkke iss-eumyeon',\n", + " 'deo balal geos-i eobs-eo',\n", + " 'uli dul so good together',\n", + " 'neol dalm-aganeun na nal dalm-eun neo yeah',\n", + " 'dalkomhan neoui hyang-gicheoleom',\n", + " 'neo naege seumyeodeulmyeon',\n", + " 'meolli iss-eodo hamkkein geoscheoleom',\n", + " 'nan neol neukkil su issneunde yeah',\n", + " 'lalalalala',\n", + " 'you make me wanna sing sing sing',\n", + " 'neoleul bomyeon',\n", + " 'neoneoneoneoneo',\n", + " 'aljanh-a naui queen queen queen',\n", + " \"yeah that's true yo\",\n", + " 'geogjeonghajima oh',\n", + " 'eonjena neoui dwi dwi dwi',\n", + " 'neoui dwieseo',\n", + " 'neoui dwieseo neol jikyeojul geoya oh',\n", + " 'hamkkehal geoya we we we',\n", + " 'cause we are meant to be',\n", + " 'joh-eun den iyudo eobs-eo yeogi ulicheoleom',\n", + " 'o ileon dajeonghan namjal bwassna',\n", + " 'my destiny you and i',\n", + " 'na jigeum neoman bogo geodgo iss-eo',\n", + " 'you make me maeil maeil-i',\n", + " 'up and down oneuldo usge haejwo',\n", + " 'nega iss-eo gamsahae my all',\n", + " 'you and i neowa na dul-i hamkke iss-eumyeon',\n", + " 'deo balal geos-i eobs-eo',\n", + " 'uli dul so good together',\n", + " 'neol dalm-aganeun na nal dalm-eun neo yeah',\n", + " 'dalkomhan neoui hyang-gicheoleom',\n", + " 'neo naege seumyeodeulmyeon',\n", + " 'meolli iss-eodo hamkkein geoscheoleom',\n", + " 'nan neol neukkil su issneunde yeah',\n", + " 'tteol-eojyeodo neon nae yeop-e',\n", + " 'meol-eojyeodo can’t fade away',\n", + " 'mal ppun-in gamjeong-il geolamyeo chingudeul-eun',\n", + " 'mos midgo issgo nan baewossne',\n", + " 'geulae yeonghwa yeonghwa salamdeul-eun bogiman hago nae aelbeom-en',\n", + " 'you know my life is like a movie shoot',\n", + " 'da neolo chaewossne sing',\n", + " 'chabunhan mellodi an jilligo saelobji',\n", + " 'balo myeoch bun jeon-e nega jun yeong-gamdeul-eun sel su eobsji',\n", + " 'sigan-eun dulyeobji anh-a heuleuji anh-eul geonikka',\n", + " 'neom-eojyeodo gwaenchanh-a nae gaseum-i begaega doel geonikka',\n", + " 'lalalalala',\n", + " 'you make me wanna sing sing sing',\n", + " 'neoleul bomyeon',\n", + " 'neoneoneoneoneo',\n", + " 'aljanh-a naui queen queen queen',\n", + " \"yeah that's true yo\",\n", + " 'geogjeonghajima oh',\n", + " 'eonjena neoui dwi dwi dwi',\n", + " 'neoui dwieseo',\n", + " 'neoui dwieseo neol jikyeojul geoya oh',\n", + " 'hamkkehal geoya we we we',\n", + " 'cause we are meant to be',\n", + " 'sratli ma naawedchi rani halef',\n", + " 'ma naachakchi ana menek',\n", + " 'rani madror',\n", + " 'aah ya bent eness cheyebtini',\n", + " 'hsen awni habeltini wasaltini',\n", + " \"hata l'amour\",\n", + " 'ya bent eness cheyebtini',\n", + " 'hsen awni habeltini weditini',\n", + " \"jusque'a l'amour\",\n", + " 'ah kounti mkhalta aayta gbali',\n", + " 'ou tah kadri bahdeltini derti fia',\n", + " 'rayek batol',\n", + " 'kounti mkhalta aayta gbali',\n", + " 'ou tah kadri bahdeltini derti rayek',\n", + " 'bia batol',\n", + " 'yak andha taleb aafrit aala biha',\n", + " 'aachakt ou koulit louken rfet rouhi wejrit',\n", + " 'yak andha taleb aafrit aala biha',\n", + " 'aachakt ou koulit louken rfet rouhi wejrit',\n", + " 'yak andek taleb aafrit beritini',\n", + " \"ou cheyebtini weditini jusque'a l'amour\",\n", + " 'yak andek taleb aafrit beritini',\n", + " \"ou cheyebtini weditini jusque'a l'amour\",\n", + " 'ya bent eness cheyebtini hsen awni',\n", + " \"habeltini wasaltini jusque'a l'amour\",\n", + " 'ya bent eness cheyebtini hsen awni',\n", + " \"habeltini weditini jusque'a l'amour\",\n", + " 'korean',\n", + " \"it goes like nah i know what's going on\",\n", + " '요즘엔 지치지 않으면 잠에 못 들어 it’s okay',\n", + " '정적이 싫어서 억지로 틀어놓은',\n", + " \"티비는 집중이 되지 않아 하나도 it's okay\",\n", + " '니 생각이 날 땐',\n", + " 'it all come alive and',\n", + " \"now i'm in a nightmare\",\n", + " 'it’s all about you',\n", + " '니 생각이 나지만',\n", + " '정신 차리겠거니 하고 말지',\n", + " '약이 없네 이 독한 감기에',\n", + " \"it's all about you okay\",\n", + " \"i'm never fine never fine never fine\",\n", + " \"i'm never fine never fine never fine\",\n", + " '다 써버리고 버리듯이',\n", + " '이 노랜 별 의미 없었으면 해',\n", + " 'okay okay okay you okay',\n", + " \"it's okay okay okay\",\n", + " \"it's okay okay okay\",\n", + " '어차피 소용없는 짓이지만',\n", + " '내게 할 짓이 못되지만',\n", + " \"it's okay okay okay\",\n", + " \"now i'm okay okay okay\",\n", + " '말하지 않아도',\n", + " '날 보지 않아도 돼',\n", + " '해봤자 뭐해',\n", + " 'okay and i’m sometimes kinda',\n", + " 'locked down in my own time',\n", + " '맘에도 없던 괜한 말에 흠칫',\n", + " '거린 너의 눈은 이제 보내달란 눈치',\n", + " '하긴 뭐 어때 나름 넓어진 내 방 내 차',\n", + " '다시 돌아가고 싶지 않아서',\n", + " '허우적거릴 뿐이지',\n", + " '진짜로 정말 가끔씩',\n", + " '그리운 거야 니 품이',\n", + " '이럴 거면 왜 그랬어 왜 그랬어',\n", + " 'cuz i don’t know',\n", + " \"let's not do this\",\n", + " 'trying on it’s just foolish',\n", + " '창가를 때리는 빗물이',\n", + " '괴롭히네 매일 밤',\n", + " \"i'm never fine never fine never fine\",\n", + " \"i'm never fine never fine never fine\",\n", + " '다 써버리고 버리듯이',\n", + " '이 노랜 별 의미 없었으면 해',\n", + " 'okay okay okay you okay',\n", + " \"it's okay okay okay\",\n", + " 'it’s okay okay okay',\n", + " '어차피 소용없는 짓이지만',\n", + " '내게 할 짓이 못되지만',\n", + " \"it's okay okay okay\",\n", + " \"now i'm okay\",\n", + " 'romanized',\n", + " \"it goes like nah i know what's going on\",\n", + " \"yojeum-en jichiji anh-eumyeon jam-e mos deul-eo it's okay\",\n", + " 'jeongjeog-i silh-eoseo eogjilo teul-eonoh-eun',\n", + " \"tibineun jibjung-i doeji anh-a hanado it's okay\",\n", + " 'ni saeng-gag-i nal ttaen',\n", + " 'it all come alive and',\n", + " \"now i'm in a nightmare\",\n", + " \"it's all about you\",\n", + " 'ni saeng-gag-i najiman',\n", + " 'jeongsin chaligessgeoni hago malji',\n", + " 'yag-i eobsne i doghan gamgie',\n", + " \"it's all about you okay\",\n", + " \"i'm never fine never fine never fine\",\n", + " \"i'm never fine never fine never fine\",\n", + " 'da sseobeoligo beolideus-i',\n", + " 'i nolaen byeol uimi eobs-eoss-eumyeon hae',\n", + " 'okay okay okay you okay',\n", + " \"it's okay okay okay\",\n", + " \"it's okay okay okay\",\n", + " 'eochapi soyong-eobsneun jis-ijiman',\n", + " 'naege hal jis-i mosdoejiman',\n", + " \"it's okay okay okay\",\n", + " \"now i'm okay okay okay\",\n", + " 'malhaji anh-ado',\n", + " 'nal boji anh-ado dwae',\n", + " 'haebwassja mwohae',\n", + " \"okay and i'm sometimes kinda\",\n", + " 'locked down in my own time',\n", + " 'mam-edo eobsdeon gwaenhan mal-e heumchis',\n", + " 'geolin neoui nun-eun ije bonaedallan nunchi',\n", + " 'hagin mwo eottae naleum neolb-eojin nae bang nae cha',\n", + " 'dasi dol-agago sipji anh-aseo',\n", + " 'heoujeoggeolil ppun-iji',\n", + " 'jinjjalo jeongmal gakkeumssig',\n", + " 'geuliun geoya ni pum-i',\n", + " 'ileol geomyeon wae geulaess-eo wae geulaess-eo',\n", + " \"cuz i don't know\",\n", + " \"let's not do this\",\n", + " \"trying on it's just foolish\",\n", + " 'chang-galeul ttaelineun bismul-i',\n", + " 'goelobhine maeil bam',\n", + " \"i'm never fine never fine never fine\",\n", + " \"i'm never fine never fine never fine\",\n", + " 'da sseobeoligo beolideus-i',\n", + " 'i nolaen byeol uimi eobs-eoss-eumyeon hae',\n", + " 'okay okay okay you okay',\n", + " \"it's okay okay okay\",\n", + " \"it's okay okay okay\",\n", + " 'eochapi soyong-eobsneun jis-ijiman',\n", + " 'naege hal jis-i mosdoejiman',\n", + " \"it's okay okay okay\",\n", + " \"now i'm okay\",\n", + " 'korean',\n", + " 'my life is sweet like donut',\n", + " '내 전화기가 떨어',\n", + " 'pick my phone up',\n", + " '미안한데 친한 척은 넣어둬',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " 'my life is sweet like donut',\n", + " '내 전화기가 떨어',\n", + " 'pick my phone up',\n", + " '미안한데 친한 척은 넣어둬',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " '한국 2 thou 16',\n", + " '그때부터 난 밑은 안 봤지',\n", + " 'on the web like spiderman',\n", + " 'reppin h1ghr gang',\n", + " 'dab dab on em',\n", + " '챙겨 내, 내 목소린 비싸, sweet 16s. sweet 16s',\n", + " 'ya! ya!',\n", + " '바람이 불어 내 삶에',\n", + " '내가 어딜 가던 making waves',\n", + " '파도 일으키고, 내 음악은 볼륨 키고',\n", + " 'up up up up, let’s put it on blast',\n", + " '비록 여름 몸매 아니라도',\n", + " '내 기분은 beach mode',\n", + " '지난 일은 쉿 쉿, 놀지 뭐',\n", + " '그 뒤론 다시 beast mode',\n", + " 'working all day and night',\n", + " 'she call me workaholic',\n", + " '야근 매일 해 난',\n", + " '가만 보면 나는 사랑하고 있어, 내일의 날',\n", + " '누구나 할 줄 아는 말은 쉽지',\n", + " 'when it’s easy 너무 시시',\n", + " '마치 시험장 with a cheat sheet, like',\n", + " '뻔한 얘기, 뻔한 가사, 뻔할 테지',\n", + " '근데 변하고 있는걸 삶의 위치, 이건 내비',\n", + " 'yo i’m savvy when it comes to me rappin',\n", + " 'plans coming true when i map em',\n", + " 'no paper planes, i’m david blaine, poppin up like magic',\n", + " 'my life is sweet like donut',\n", + " '내 전화기가 떨어',\n", + " 'pick my phone up',\n", + " '미안한데 친한 척은 넣어둬',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " 'my life is sweet like donut',\n", + " '내 전화기가 떨어',\n", + " 'pick my phone up',\n", + " '미안한데 친한 척은 넣어둬',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " 'hit hit what what 나의 직업은 two time ceo',\n", + " '매일 매일 밤 밤 소주집 아니면 난 작업실이죠',\n", + " 'always on my grind i’m hustling',\n", + " '어느 새부터 돈 벌었지',\n", + " '부자 되자고 이유는 항상 명확했어',\n", + " '개인 욕심은 아니었지',\n", + " 'for my people people 그건 나의 기초 기초',\n", + " '나의 죄들을 씻겨 씻겨내',\n", + " '두 손을 붙여 빌어 빌어',\n", + " 'ay ay ay',\n", + " '난 판을 엎고 있어',\n", + " '그 와중 판을 업고 있어',\n", + " '도중에 respect도 얻고 있어',\n", + " '그래도 난 아직도 적도 있어',\n", + " 'but i’m just doing me',\n", + " 'look out for the family',\n", + " '하기 싫은 건 안 하지',\n", + " '아주 만약에 aomg h1ghr music한테 도움되면 그땐 양보하지 ph-1 let’s get it done',\n", + " 'dj khaled boy we got another one',\n", + " 'this that feel good salute to the drunken one',\n", + " 'every thurxday we finna have a lot of fun',\n", + " 'my life is sweet like donut',\n", + " '내 전화기가 떨어',\n", + " 'pick my phone up',\n", + " '미안한데 친한 척은 넣어둬',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " 'my life is sweet like donut',\n", + " '내 전화기가 떨어',\n", + " 'pick my phone up',\n", + " '미안한데 친한 척은 넣어둬',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " 'romanization',\n", + " 'my life is sweet like donut',\n", + " 'nae jeonhwagiga tteol-eo',\n", + " 'pick my phone up',\n", + " 'mianhande chinhan cheog-eun neoh-eodwo',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " 'my life is sweet like donut',\n", + " 'nae jeonhwagiga tteol-eo',\n", + " 'pick my phone up',\n", + " 'mianhande chinhan cheog-eun neoh-eodwo',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " 'hangug 2 thou 16',\n", + " 'geuttaebuteo nan mit-eun an bwassji',\n", + " 'on the web like spiderman',\n", + " 'reppin h1ghr gang',\n", + " 'dab dab on em',\n", + " 'chaeng-gyeo nae, nae mogsolin bissa, sweet 16s. sweet 16s',\n", + " 'ya! ya!',\n", + " 'balam-i bul-eo nae salm-e',\n", + " 'naega eodil gadeon making waves',\n", + " 'pado il-eukigo, nae eum-ag-eun bollyum kigo',\n", + " 'up up up up, let’s put it on blast',\n", + " 'bilog yeoleum mommae anilado',\n", + " 'nae gibun-eun beach mode',\n", + " 'jinan il-eun swis swis, nolji mwo',\n", + " 'geu dwilon dasi beast mode',\n", + " 'working all day and night',\n", + " 'she call me workaholic',\n", + " 'yageun maeil hae nan',\n", + " 'gaman bomyeon naneun salanghago iss-eo, naeil-ui nal',\n", + " 'nuguna hal jul aneun mal-eun swibji',\n", + " 'when it’s easy neomu sisi',\n", + " 'machi siheomjang with a cheat sheet, like',\n", + " 'ppeonhan yaegi, ppeonhan gasa, ppeonhal teji',\n", + " 'geunde byeonhago issneungeol salm-ui wichi, igeon naebi',\n", + " 'yo i’m savvy when it comes to me rappin',\n", + " 'plans coming true when i map em',\n", + " 'no paper planes, i’m david blaine, poppin up like magic',\n", + " 'my life is sweet like donut',\n", + " 'nae jeonhwagiga tteol-eo',\n", + " 'pick my phone up',\n", + " 'mianhande chinhan cheog-eun neoh-eodwo',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " 'my life is sweet like donut',\n", + " 'nae jeonhwagiga tteol-eo',\n", + " 'pick my phone up',\n", + " 'mianhande chinhan cheog-eun neoh-eodwo',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " 'hit hit what what naui jig-eob-eun two time ceo',\n", + " 'maeil maeil bam bam sojujib animyeon nan jag-eobsil-ijyo',\n", + " 'always on my grind i’m hustling',\n", + " 'eoneu saebuteo don beol-eossji',\n", + " 'buja doejago iyuneun hangsang myeonghwaghaess-eo',\n", + " 'gaein yogsim-eun anieossji',\n", + " 'for my people people geugeon naui gicho gicho',\n", + " 'naui joedeul-eul ssisgyeo ssisgyeonae',\n", + " 'du son-eul but-yeo bil-eo bil-eo',\n", + " 'ay ay ay',\n", + " 'nan pan-eul eopgo iss-eo',\n", + " 'geu wajung pan-eul eobgo iss-eo',\n", + " 'dojung-e respectdo eodgo iss-eo',\n", + " 'geulaedo nan ajigdo jeogdo iss-eo',\n", + " 'but i’m just doing me',\n", + " 'look out for the family',\n", + " 'hagi silh-eun geon an haji',\n", + " 'aju man-yag-e aomg h1ghr musichante doumdoemyeon geuttaen yangbohaji ph-1 let’s get it done',\n", + " 'dj khaled boy we got another one',\n", + " 'this that feel good salute to the drunken one',\n", + " 'every thurxday we finna have a lot of fun',\n", + " 'my life is sweet like donut',\n", + " 'nae jeonhwagiga tteol-eo',\n", + " 'pick my phone up',\n", + " 'mianhande chinhan cheog-eun neoh-eodwo',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " 'my life is sweet like donut',\n", + " 'nae jeonhwagiga tteol-eo',\n", + " 'pick my phone up',\n", + " 'mianhande chinhan cheog-eun neoh-eodwo',\n", + " 'milly rockin everywhere',\n", + " 'yeah you know i go hard',\n", + " 'hit hit, what what',\n", + " \"ami ku mi dios, mi'n ta mi so mas\",\n", + " 'fuck tur esnan kuabira lomba',\n", + " 'mientras tantu bo ta papia, sen ta konta',\n", + " 'den kaya tin tantu snake i anaconda',\n", + " \"ta pesei me' mi t'un guy ku mi prinsipio\",\n", + " \"bitch nigga, mi'n ke sa ni nada dibo\",\n", + " 'den rabia nos tur ta purba den casino',\n", + " 'wak nan no hanjabo mal benta, sin sa pa kiko',\n", + " 'mi ta ku mi dios, e ta wak mi lomba',\n", + " 'yen a rabia foi dia nan a tende mi ta kobra',\n", + " 'mi sa di label nan, ku ke kibra mi forsa',\n", + " 'pero tur kaminda ku bo bai, tin track ta toka',\n", + " 'show bo love, pa ora bo pasa pa nan gosa',\n", + " 'ma sinja pa no pone pan na tur su boka',\n", + " 'subi facebook, skibi ko pa ofendemi',\n", + " \"mi'n tin nadi prove, tur hende konose mi\",\n", + " 'mi ta stel un alibi pe defende mi',\n", + " 'pa ki ku ta, e reshershi nai bin wak mi drechi',\n", + " 'korda den tempu nan hodidu, huntu ku quincy',\n", + " 'lora kumpra un strap, sin sa ni ki e ta kosta',\n", + " 'na guy chiki, mi ker a bira warda kosta',\n", + " \"mi'n por yuda ku mi ta mal in love ke coca\",\n", + " 'si mi konfia bo un ko, ma hasie ta pa bo so sa',\n", + " \"lage'le kere ta helicopter ta, ta zona\",\n", + " 'skrrrr',\n", + " \"ami ku mi dios, mi'n ta mi so mas\",\n", + " 'fuck tur esnan kuabira lomba',\n", + " 'mientras tantu bo ta papia, sen ta konta',\n", + " 'den kaya tin tantu snake i anaconda',\n", + " \"ta pesei me' mi t'un guy ku mi prinsipio\",\n", + " \"bitch nigga, mi'n ke sa ni nada dibo\",\n", + " 'den rabia nos tur ta purba den casino',\n", + " 'wak nan no hanjabo mal benta, sin sa pa kiko',\n", + " 'ni maske kiko sosode',\n", + " 'of kiko bo komete',\n", + " 'korda hisa bo kabes, tur kos lo bai ta alright',\n", + " \"korda mantene e fe, i soru pa bo'n ta scared\",\n", + " 'i bolbe huza e kabes i keda hustle all night',\n", + " 'ta pesei mes mi ta keda ku e koi on me',\n", + " 'direct ta kla pa ba, bentana saka skupi',\n", + " \"mi ta soru pa ami'n te prome ku tinku kur'i\",\n", + " 'ta desea pa tende ku ta nos a muri',\n", + " 'lanta tur dia mal nervia',\n", + " \"mi'n ni gusta ni road den stad\",\n", + " 'pa mi hanjami tinku zona bo dilanti kamara',\n", + " 'mi mester di un pida hasj',\n", + " 'pa lora pafo di stad',\n", + " \"toch den bario me' ma lora serka kamara\",\n", + " \"pa kiko lo mi stress pa un tipo ku'n ta ku mi\",\n", + " 'mi, ke esnan ku tei ahinda lo bai subi',\n", + " 'unbei nos tin un studio mes, ku tin jacuzzi',\n", + " 'persigui bo sonjo pa bo tra bo movie',\n", + " \"ami ku mi dios, mi'n ta mi so mas\",\n", + " 'fuck tur esnan kuabira lomba',\n", + " 'mientras tantu bo ta papia, sen ta konta',\n", + " 'den kaya tin tantu snake i anaconda',\n", + " \"ta pesei mes mi t'un guy ku mi prinsipio\",\n", + " \"bitch nigga, mi'n ke sa ni nada dibo\",\n", + " 'den rabia nos tur ta purba den casino',\n", + " 'wak nan no hanjabo mal benta, sin sa pa kiko']},\n", + " 'data': ['hangul',\n", + " '천천히 더 가까워졌지',\n", + " '널 봤을 때 난 마치',\n", + " '어린 소녀 같았지',\n", + " '서두를 것 없이 난 이미',\n", + " '수많은 여자들을 대신해 already',\n", + " 'woo hoo baby',\n", + " '내가 네 눈 안에 maybe',\n", + " 'u know',\n", + " '나란 존재 하나만으로도 꽉 차게',\n", + " '밤새 나란 행복을 줄게 꽉 차게',\n", + " '이대로 우리',\n", + " '둘만의 party like 블랙홀',\n", + " '더 설명하지 않아도 돼',\n", + " 'u know we know oh',\n", + " 'i know what u want',\n", + " '네 모든 상상 속에선',\n", + " 'let’s talk with with my body',\n", + " 'i know that u want it',\n", + " 'slowly baby',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'u and me',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'ooh ooh',\n", + " 'play me',\n", + " 'slowly slowly slowly baby',\n", + " 'sweaty sweaty sweaty baby',\n", + " '그래 나 천천히 가는 걸 좋아해',\n", + " '목적지 설정해 난 너 안에 너 안에',\n", + " 'slowly',\n", + " '이건 막 달고 짜',\n", + " '땀인지 꿀인지 아님',\n", + " 'whipping cream',\n", + " 'your booty is like boomin',\n", + " 'so beautiful',\n", + " '우리 둘',\n", + " 'stop oh 이대로 우리',\n", + " '둘만의 party like 블랙홀',\n", + " '더 설명하지 않아도 돼',\n", + " 'u know we know oh',\n", + " 'i know what u want',\n", + " '네 모든 상상 속에선',\n", + " 'let’s talk with with my body',\n", + " 'i know that u want it',\n", + " 'slowly baby',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'u and me',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'ooh ooh',\n", + " 'play me',\n", + " 'slowly slowly slowly baby',\n", + " 'sweaty sweaty sweaty baby',\n", + " 'take it easy',\n", + " 'i’m the only one hope u know it baby',\n", + " 'i know u already crush on me',\n", + " 'love',\n", + " 'rollin rolling baby',\n", + " 'love',\n", + " 'roll it roll it baby',\n", + " 'oh u found me at casual',\n", + " 'casual darkness',\n", + " 'and i wanna call u my beautiful',\n", + " 'beautiful witness',\n", + " 'i know what u want',\n", + " '네 모든 상상 속에선',\n", + " 'let’s talk with with my body',\n", + " 'i know that u want it',\n", + " 'slowly baby',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'u and me',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'ooh ooh',\n", + " 'play me',\n", + " 'slowly slowly slowly baby',\n", + " 'sweaty sweaty sweaty baby',\n", + " 'slowly baby',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'u and me',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'ooh ooh',\n", + " 'play me',\n", + " 'slowly slowly slowly baby',\n", + " 'sweaty sweaty sweaty baby',\n", + " 'romanization',\n", + " 'cheoncheonhi deo gakkawojyeossji',\n", + " 'neol bwasseul ttae nan machi',\n", + " 'eorin sonyeo gatassji',\n", + " 'seodureul geot eopsi nan imi',\n", + " 'sumanheun yeojadeureul daesinhae already',\n", + " 'woo hoo baby',\n", + " 'naega ne nun ane maybe',\n", + " 'u know',\n", + " 'naran jonjae hanamaneurodo kkwak chage',\n", + " 'bamsae naran haengbogeul julge kkwak chage',\n", + " 'idaero uri',\n", + " 'dulmanui party like beullaekhol',\n", + " 'deo seolmyeonghaji anhado dwae',\n", + " 'u know we know oh',\n", + " 'i know what u want',\n", + " 'ne modeun sangsang sogeseon',\n", + " 'let’s talk with with my body',\n", + " 'i know that u want it',\n", + " 'slowly baby',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'u and me',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'ooh ooh',\n", + " 'play me',\n", + " 'slowly slowly slowly baby',\n", + " 'sweaty sweaty sweaty baby',\n", + " 'geurae na cheoncheonhi ganeun geol johahae',\n", + " 'mokjeokji seoljeonghae nan neo ane neo ane',\n", + " 'slowly',\n", + " 'igeon mak dalgo jja',\n", + " 'ttaminji kkurinji anim',\n", + " 'whipping cream',\n", + " 'your booty is like boomin',\n", + " 'so beautiful',\n", + " 'uri dul',\n", + " 'stop oh idaero uri',\n", + " 'dulmanui party like beullaekhol',\n", + " 'deo seolmyeonghaji anhado dwae',\n", + " 'u know we know oh',\n", + " 'i know what u want',\n", + " 'ne modeun sangsang sogeseon',\n", + " 'let’s talk with with my body',\n", + " 'i know that u want it',\n", + " 'slowly baby',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'u and me',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'ooh ooh',\n", + " 'play me',\n", + " 'slowly slowly slowly baby',\n", + " 'sweaty sweaty sweaty baby',\n", + " 'take it easy',\n", + " 'i’m the only one hope u know it baby',\n", + " 'i know u already crush on me',\n", + " 'love',\n", + " 'rollin rolling baby',\n", + " 'love',\n", + " 'roll it roll it baby',\n", + " 'oh u found me at casual',\n", + " 'casual darkness',\n", + " 'and i wanna call u my beautiful',\n", + " 'beautiful witness',\n", + " 'i know what u want',\n", + " 'ne modeun sangsang sogeseon',\n", + " 'let’s talk with with my body',\n", + " 'i know that u want it',\n", + " 'slowly baby',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'u and me',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'ooh ooh',\n", + " 'play me',\n", + " 'slowly slowly slowly baby',\n", + " 'sweaty sweaty sweaty baby',\n", + " 'slowly baby',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'u and me',\n", + " 'sweaty sweaty sweaty sweaty',\n", + " 'ooh ooh',\n", + " 'play me',\n", + " 'slowly slowly slowly baby',\n", + " 'sweaty sweaty sweaty baby',\n", + " 'girl',\n", + " '(i need a cha cha beat boy)',\n", + " 'girl, malhaejwo ne maeum baro jigeum',\n", + " 'baby gati ollagaja haneul wiro',\n", + " 'all i wanna do is kick it with you',\n", + " 'neoui mommae geurin geotman gata misul',\n", + " 'oneul uisangcheoreom ne maeumdo see-through',\n", + " 'all i wanna do is kick it with you (yeah, okay, yeah)',\n", + " 'girl mwoga jungyohanji baby baro malhaejulge',\n", + " 'na jigeum ocheonmanwonjjari sigye chatjiman',\n", + " 'naneun neoreul hwolssin akkiji babe',\n", + " 'nega wonhandamyeon an chalge',\n", + " 'heose ttawineun an tonghanikka',\n", + " 'uh, n eon jeongmal singihan yeoja',\n", + " 'nareul noryeokhage mandeunikka baby oh yeah',\n", + " 'uri durui bameul sangsanghaesseo girl all night',\n", + " \"mome tattooleul boyeojwo if it's alright\",\n", + " 'girl, malhaejwo ne maeum baro jigeum',\n", + " 'baby gati ollagaja haneul wiro',\n", + " 'all i wanna do is kick it with you',\n", + " 'neoui mommae geurin geotman gata misul',\n", + " 'oneul uisangcheoreom ne maeumdo see-through',\n", + " 'all i wanna do is kick it with you',\n", + " 'eotteokhae nae mame nega deureooryeo hae',\n", + " 'swipge ppajilkka bwa wiheomhae boyeo josimharyeo hal ttae',\n", + " 'eh, umjigyeojiji anha',\n", + " 'nal boneun ne siseoni nae momeul gama',\n", + " 'hanaro eolkhyeo neowa na',\n", + " 'ijebuteon amudo pulji moshae',\n", + " 'ppeonhaji anhge uyeongati manna baby',\n", + " 'seoroege nogadeureo',\n", + " 'oneulbam uri gibuneun jeo haneul gureum wi',\n", + " 'ne mome tatureul boyeojwo',\n", + " 'imi nae mameun junbidoeeoisseo',\n", + " '(i need a cha cha beat boy)',\n", + " 'boy, malhalge nae maeum baro jigeum',\n", + " 'geurae gati ollagaja haneul wiro',\n", + " 'all i wanna do is kick it with you',\n", + " 'nega wonhandaero nae daedabeun me too',\n", + " 'ijebuteo neol bureuge haejwo my boo',\n", + " 'all i wanna do is kick it with you',\n", + " \"naega hago sipeun modeun geot dwien ’neowa hamkke'ga saengryakdoeeo itji\",\n", + " 'yojeum ingi manheun gyopo oppadeulgwaneun dalla, kimchi hyanggiga baeeo itji',\n", + " 'deokbune nan mora, horangi (uh)',\n", + " 'taek dallin oseun bange ssahyeo gago isseo, bame ibeo, pyeonhage',\n", + " 'ijen neoneun na, naneun neoro gubun jitgo',\n", + " '\"all i wanna do\" rago malhae, pyeonhage (hey)',\n", + " 'neoui yeopjarireul sangsanghal geogo',\n", + " 'geugoseneun naega issge doel geoya',\n", + " 'geurigo neoe daehae jangdamhageondae',\n", + " 'mwodeun hal su isseul georago mitge doel geoya, uh',\n", + " 'girl, malhaejwo ne maeum baro jigeum (malhaejwo ne maeum baro jigeum)',\n", + " 'baby gati ollagaja haneul wiro (whoa)',\n", + " 'all i wanna do is kick it with you',\n", + " 'neoui mommae geurin geotman gata misul (uh)',\n", + " 'oneul uisangcheoreom ne maeumdo see-through',\n", + " 'all i wanna do is kick it with you',\n", + " \"it's aomg\",\n", + " 'seattle to seoul baby, woo!',\n", + " 'it’s everything you wanted, baby',\n", + " \"it's everything you wanted, baby\",\n", + " 'dream team, yeah',\n", + " 'hangul',\n", + " 'sunday morning',\n", + " '포근한 이불속에서 뜬 눈',\n", + " '날 감싸 안은 큰 손과 낮은 목소리',\n", + " 'i’m telling you',\n", + " '이 순간이 영원하면 좋겠어 everyday',\n", + " '너도 그렇길 we are fallin’',\n", + " '창 밖, 봄이 내린 땅 위에',\n", + " '넌 아름답기에 love, i love you',\n", + " '매일 아침',\n", + " '새로워지는 내 맘이',\n", + " '너로 가득 차',\n", + " 'maybe it’s love',\n", + " '지친 하루가 끝나면 기대라',\n", + " '말해주는 네게서',\n", + " '사랑을 배워 난',\n", + " '서툴지만 말할래 이제',\n", + " 'i’m so in love with you',\n", + " 'fallin’ fallin’ fallin’ fall in love',\n", + " 'fallin’ fallin’ fallin’ fall in love',\n", + " '넌 브런치를 만들어주겠다며 날 깨워',\n", + " 'someday, u and me',\n", + " '멀지않은 미래에',\n", + " 'i’m telling you',\n", + " '이 순간이 영원하면 좋겠어 everyday',\n", + " '너도 그렇길',\n", + " 'we are fallin’',\n", + " '창 밖, 봄이 내린 땅 위에',\n", + " '넌 아름답기에 love, i love you',\n", + " '매일 아침',\n", + " '새로워지는 내 맘이',\n", + " '너로 가득 차',\n", + " 'maybe it’s love',\n", + " '지친 하루가 끝나면 기대라',\n", + " '말해주는 네게서',\n", + " '사랑을 배워 난',\n", + " '서툴지만 말할래 이제',\n", + " 'i’m so in love with you',\n", + " 'fallin’ fallin’ fallin’ fall in love',\n", + " 'fallin’ fallin’ fall in love',\n", + " 'romanization',\n", + " 'sunday morning',\n", + " 'pogeunhan ibulsog-eseo tteun nun',\n", + " 'nal gamssa an-eun keun songwa naj-eun mogsoli',\n", + " 'i’m telling you',\n", + " 'i sungan-i yeong-wonhamyeon johgess-eo everyday',\n", + " 'neodo geuleohgil we are fallin’',\n", + " 'chang bakk, bom-i naelin ttang wie',\n", + " 'neon aleumdabgie love, i love you',\n", + " 'maeil achim',\n", + " 'saelowojineun nae mam-i',\n", + " 'neolo gadeug cha',\n", + " 'maybe it’s love',\n", + " 'jichin haluga kkeutnamyeon gidaela',\n", + " 'malhaejuneun negeseo',\n", + " 'salang-eul baewo nan',\n", + " 'seotuljiman malhallae ije',\n", + " 'i’m so in love with you',\n", + " 'fallin’ fallin’ fallin’ fall in love',\n", + " 'fallin’ fallin’ fallin’ fall in love',\n", + " 'neon beuleonchileul mandeul-eojugessdamyeo nal kkaewo',\n", + " 'someday, u and me',\n", + " 'meoljianh-eun milaee',\n", + " 'i’m telling you',\n", + " 'i sungan-i yeong-wonhamyeon johgess-eo everyday',\n", + " 'neodo geuleohgil',\n", + " 'we are fallin’',\n", + " 'chang bakk, bom-i naelin ttang wie',\n", + " 'neon aleumdabgie love, i love you',\n", + " 'maeil achim',\n", + " 'saelowojineun nae mam-i',\n", + " 'neolo gadeug cha',\n", + " 'maybe it’s love',\n", + " 'jichin haluga kkeutnamyeon gidaela',\n", + " 'malhaejuneun negeseo',\n", + " 'salang-eul baewo nan',\n", + " 'seotuljiman malhallae ije',\n", + " 'i’m so in love with you',\n", + " 'fallin’ fallin’ fallin’ fall in love',\n", + " 'fallin’ fallin’ fall in love']},\n", + " 'rap': {'meta': {'train_data': ['plling – labedey subedey',\n", + " 'hambel? humedey hadadey',\n", + " 'kada strring hata – hums fufufu',\n", + " 'iseda chachacah sum chochochoch',\n", + " 'kakadeka kakadera',\n", + " 'sepa schprrrr van grrrr sanana',\n", + " 'quik – banananafama hui',\n", + " 'orsons sprgrsä sabasdei',\n", + " 'samana pfui?',\n", + " 'da strutzn hutzn lutzn rutzn',\n", + " 'katastumpfn hui',\n", + " 'pispapüt üt üt',\n", + " 'maeckes pletto lüt lüt',\n", + " 'süt',\n", + " 'lola ah draschri karadschni',\n", + " 'afickaplu – ja, batta fali (colle)',\n", + " 'opaschita uuh katapau',\n", + " '(chacha) chiicha (pah!)',\n", + " 'sup pelepö chob batta fredsch dro (klola)',\n", + " 'lolja daszählt battafrä do – pola',\n", + " 'grabedschie',\n", + " 'frag mich nicht',\n", + " 'bled tschevie',\n", + " 'orsons',\n", + " 'ah – kappatschref kappatschruw',\n", + " 'pah! chop walapow letsträ – haa',\n", + " 'copplä tscha psiu',\n", + " 'forfack uäh?',\n", + " 'psiu – uäh?',\n", + " 'psiu – uäh?',\n", + " 'oida, wenn i sog uii',\n", + " 'sogts ihr gay',\n", + " 'uii – gay?',\n", + " 'uii – gay?',\n", + " 'orsons orsons orsons orsons orsons',\n", + " 'orsons orsons orsons orsons orsons',\n", + " 'orsons orsons orsons orsons orsons',\n", + " 'orsons orsons orsons orsons yakeey!',\n", + " 'haki kimba',\n", + " 'hanti kula pade',\n", + " 'pasek zawi',\n", + " 'fatzf tsat kratsa futawa',\n", + " 'halla ku sammakuschi pa satapiv',\n", + " 'sekra sek patsch mezzi kenimi?',\n", + " 'hattabrill jetta zettabi gellari',\n", + " 'pennahis cossa behama beta ti?',\n", + " 'tati tatü tata',\n", + " 'breaks my heart',\n", + " 'dance',\n", + " 'tick – muneldemuns',\n", + " 'pit – muneldemuns',\n", + " 'plitzt di blickt ni nick mundeldemuns',\n", + " 'buneldemuns buneldemuns',\n", + " 'penas vagana',\n", + " 'andrea dragana',\n", + " 'petra vatertag (achso)',\n", + " 'flicflacenem packenem tackenem buckimham',\n", + " 'gehirnamputakinem',\n", + " 'plack',\n", + " 'plaque karies',\n", + " 'prrrrr ade es',\n", + " 'knabensechs – hihihi',\n", + " 'abe es',\n", + " 'muneldemuns',\n", + " 'copplä tscha psiu',\n", + " 'forfack uäh?',\n", + " 'psiu – uäh?',\n", + " 'psiu – uäh?',\n", + " 'oida, wenn i sog uii',\n", + " 'sogts ihr gay',\n", + " 'uii – gay?',\n", + " 'uii – gay?',\n", + " 'orsons orsons orsons orsons orsons',\n", + " 'orsons orsons orsons orsons orsons',\n", + " 'orsons orsons orsons orsons orsons',\n", + " 'orsons orsons orsons orsons yakeey!',\n", + " 'man, 이건 진짜 first page',\n", + " '무언가를 이루고자 무언가를 걸 때',\n", + " 'aw, man, aw, man',\n", + " '새끼들아 better realize me',\n", + " '2016년에 real rising',\n", + " '내 음악은 너희들한테는',\n", + " '현대미술같이 다가오지',\n", + " '너도 할 수 있을거 같다며',\n", + " 'why don’t you do it',\n", + " 'motherfuckers it’s time just do some',\n", + " '말만 하다가는 더 늦어',\n", + " '또 난 내 자리는 피해주기 싫어',\n", + " '그렇다고 누구한테도 피해주기 싫어',\n", + " 'but 아빠 said',\n", + " '피해를 보더라도 현명하게',\n", + " '가끔은 피해를 보는 게 더 현명하대, word',\n", + " '그래서 나는 그저 down for my people',\n", + " 'yelows mob fucker 우린 전부 비보호',\n", + " 'get my ammo right click clack reload',\n", + " 'get my ammo and shoot it and i reload',\n", + " '그래서 나는 그저 down for my people',\n", + " 'yelows mob fucker 우린 전부 비보호',\n", + " 'get my ammo right click clack reload',\n", + " 'get my ammo and shoot it and i reload',\n", + " 'zero fucks given',\n", + " 'zero fucks is given',\n", + " '지금 내 기분',\n", + " 'zero fucks given',\n", + " 'zero fucks is given',\n", + " '지금 내 기분',\n", + " 'zero fucks is given',\n", + " 'zero fucks is given',\n", + " '지금 내 기분',\n", + " 'zero fuck zero fuck',\n", + " 'zero fucks is given',\n", + " 'zero fucks is given',\n", + " 'zero fucks is given',\n", + " 'zero fucks is given',\n", + " 'zero fucks is given',\n", + " 'romanization',\n", + " 'mueongaleul ilugoja mueongaleul geol ttae',\n", + " 'aw man, aw man',\n", + " 'saekkideul-a better realize me',\n", + " '2016nyeon-e real rising',\n", + " 'nae eum-ag-eun neohuideulhanteneun',\n", + " 'hyeondaemisulgat-i dagaoji',\n", + " 'neodo hal su iss-eulgeo gatdamyeo',\n", + " 'why don’t you do it',\n", + " 'motherfuckers it’s time just do some',\n", + " 'malmanhadaganeun deo neuj-eo',\n", + " 'tto nan nae jalineun pihaejugisilh-eo',\n", + " 'geuleohdago nuguhantedo pihaejugisilh-eo',\n", + " 'but appa said',\n", + " 'pihaeleul bodeolado hyeonmyeonghage',\n", + " 'gakkeum-eun pihaeleul boneunge',\n", + " 'deo hyeonmyeonghadae word',\n", + " 'geulaeseo naneun geujeo down for my people',\n", + " 'yelows mob fucker ulin jeonbu biboho',\n", + " 'get my ammo right click clack reload',\n", + " 'get my ammo and shoot it and i reload',\n", + " 'geulaeseo naneun geujeo down for my people',\n", + " 'yelows mob fucker ulin jeonbu biboho',\n", + " 'get my ammo right click clack reload',\n", + " 'get my ammo and shoot it and i reload',\n", + " 'zero fucks given',\n", + " 'zero fucks is given',\n", + " 'jigeum nae gibun',\n", + " 'zero fucks given',\n", + " 'zero fucks is given',\n", + " 'jigeum nae gibun',\n", + " 'zero fucks is given',\n", + " 'zero fucks is given',\n", + " 'jigeum nae gibun',\n", + " 'zero fuck zero fuck',\n", + " 'zero fucks is given',\n", + " 'zero fucks is given',\n", + " 'zero fucks is given',\n", + " 'zero fucks is given',\n", + " 'zero fucks is given',\n", + " 'korean',\n", + " 'ㅤ',\n", + " \"i've been tossing turnin' up all night (all night)\",\n", + " '나도 왠지 이유는 잘 몰라 (no)',\n", + " \"생각이 많은지 배가 고픈건지 i don't know\",\n", + " \"어찌 됐든 간에 i'm alright\",\n", + " \"(no, i'm not alright)\",\n", + " '한순간에 바뀐 진로',\n", + " '그 후로 발걸음 옮겼지, 다른 길로',\n", + " '내겐 가끔 위로가 필요해서 난 기도로 빌어보곤 했지',\n", + " 'i be making sure that (he knows)',\n", + " \"making sure that all my problems don't turn into troubles\",\n", + " \"that it's all a piece of the puzzle\",\n", + " '다 계획됐다는 것을',\n", + " '울 엄마 알람은 새벽같이 buzzin',\n", + " \"5 o clock in the mornin' (mornin')\",\n", + " '쉬지 않는 새벽기도',\n", + " '때론 좀 많이 외롭기도 할 거야',\n", + " '꼭 잘되고 말 거야 for my mama and father (i love you)',\n", + " '밥 챙겨 먹냐 라는 카톡이 와도',\n", + " \"바로 답장 못 하는 이윤 'cause i be hustlin' harder\",\n", + " \"i still don't know how to use my cuckoo\",\n", + " \"(i don't know, i don't know how to use)\",\n", + " \"i still don't know how to use my cuckoo (cuckoo)\",\n", + " \"but it's all good (it's real good)\",\n", + " 'i never wanna waste no time (nah)',\n", + " 'no, i never wanna waste no time (nah)',\n", + " 'no luxury of homemade rice',\n", + " 'listen 내 주위엔 내 웰빙을 걱정해주는 애들이 많지',\n", + " '가끔 보면 정말 나에겐',\n", + " 'lots of blessings on blessings',\n", + " 'counting my lessons on lessons',\n", + " '또 작은 일까지 감사하는 습관이 뱄어',\n", + " 'all things are good (amen)',\n", + " 'oh, things are fine',\n", + " '나이 들수록 짧아지는 입',\n", + " '그건 다 밥통처럼 차오르는',\n", + " '내 머릿속 늘 피곤해져',\n", + " 'what are we gonna do? ooh-ooh-ooh-ooh (what?)',\n", + " '전엔 자주하던 설거지 (true)',\n", + " '요샌 바쁘다고 못 하지',\n", + " '근데 그게 차라리 나아, 나 아직 갈 길이 많아 (whoa)',\n", + " '밖에서 김밥으로 때울게 2000원치',\n", + " '아직 난 배고파',\n", + " '지금 허기가 비워진 배에서부터',\n", + " '나오는 것인 아닌 choosing life and death in this music',\n", + " \"yeah, it's do or die or do or die or do or die\",\n", + " \"i still don't know how to use my cuckoo\",\n", + " \"(i don't know, i don't know how to use)\",\n", + " \"i still don't know how to use my cuckoo (cuckoo)\",\n", + " \"but it's all good (it's real good)\",\n", + " 'i never wanna waste no time (nah)',\n", + " 'no, i never wanna waste no time (never)',\n", + " 'no luxury of homemade rice',\n", + " '밥 한 끼쯤은 굶어도 난 괜찮아',\n", + " '살 빠지고 좋지 뭐',\n", + " \"발 뻗고 잠 못 자도 baby, it's alright\",\n", + " '바빠지고 좋지 뭐',\n", + " '밥 한 끼쯤은 굶어도 난 괜찮아',\n", + " '살 빠지고 좋지 뭐',\n", + " \"발 뻗고 잠 못 자도 baby, it's alright\",\n", + " '바빠지고 좋지 뭐',\n", + " 'romanization',\n", + " \"i've been tossing turning up all night\",\n", + " 'nado waenji iyuneun jal molla',\n", + " \"saeng-gag-i manh-eunji baega gopeungeonji i don't know\",\n", + " \"eojji dwaessdeun gan-e i'm alright\",\n", + " \"no, i'm not alright\",\n", + " 'hansungan-e bakkwin jinlo',\n", + " 'geu hulo balgeol-eum olmgyeossji, daleun gillo',\n", + " 'naegen gakkeum wiloga pil-yohaeseo nan gidolo bil-eobogon haessji',\n", + " 'i be making sure that',\n", + " 'he knows',\n", + " \"making sure that all my problems don't turn into troubles\",\n", + " \"that it's all a piece of the puzzle\",\n", + " 'da gyehoegdwaessdaneun geos-eul',\n", + " 'ul eomma allam-eun saebyeoggat-i buzzin',\n", + " '5 o clock in the mornin',\n", + " 'swiji anhneun saebyeoggido',\n", + " 'ttaelon jom manh-i oelobgido hal geoya',\n", + " 'kkog jaldoego mal geoya for my mama and father',\n", + " 'bab chaeng-gyeo meognya laneun katog-i wado',\n", + " 'balo dabjang mos haneun iyun cus i be hustlin harder',\n", + " \"i still don't know how to use my cuckoo\",\n", + " \"(i don't know, i don't know how to use)\",\n", + " \"i still don't know how to use my cuckoo (cuckoo)\",\n", + " \"but it's all good (it's all good)\",\n", + " 'i never wanna waste no time (nah)',\n", + " 'no i never wanna waste no time (nah)',\n", + " 'no luxury of homemade rice',\n", + " 'nae juwien nae welbing-eul geogjeonghaejuneun aedeul-i manhji',\n", + " 'gakkeum bomyeon jeongmal na-egen',\n", + " 'lots of blessings on blessings',\n", + " 'counting my lessons on lessons',\n", + " 'tto jag-eun ilkkaji gamsahaneun seubgwan-i baess-eo',\n", + " 'all things are good',\n", + " 'oh things are fine',\n", + " 'nai deulsulog jjalb-ajineun ib',\n", + " 'geugeon da babtongcheoleom chaoleuneun',\n", + " 'nae meolis-sog neul pigonhaejyeo',\n", + " 'what are we gonna do?',\n", + " 'jeon-en jajuhadeon seolgeoji',\n", + " 'yosaen bappeudago mos haji',\n", + " 'geunde geuge chalali naa, na ajig gal gil-i manh-a',\n", + " 'bakk-eseo gimbab-eulo ttaeulge 2000wonchi',\n", + " 'ajig nan baegopa',\n", + " 'jigeum heogiga biwojin baeeseobuteo',\n", + " 'naoneun geos-in anin choosing life and death in this music',\n", + " \"yeah it's do or die or do or die or do or die\",\n", + " \"i still don't know how to use my cuckoo\",\n", + " \"(i don't know, i don't know how to use)\",\n", + " \"i still don't know how to use my cuckoo (cuckoo)\",\n", + " \"but it's all good (it's all good)\",\n", + " 'i never wanna waste no time (nah)',\n", + " 'no i never wanna waste no time (never)',\n", + " 'no luxury of homemade rice',\n", + " 'bab han kkijjeum-eun gulm-eodo nan gwaenchanh-a',\n", + " 'sal ppajigo johji mwo (johji mwo)',\n", + " \"bal ppeodgo jam mos jado baby it's alright\",\n", + " 'bappajigo johji mwo (johji mwo, mm)',\n", + " 'bab han kkijjeum-eun gulm-eodo nan gwaenchanh-a',\n", + " \"sal ppajigo johji mwo (it's all good)\",\n", + " \"bal ppeodgo jam mos jado baby it's alright\",\n", + " 'bappajigo johji mwo',\n", + " 'korean',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(like i got so many chopper)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(and it goes shot shot shot shot)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(like i got so many chopper)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(and it goes shot shot shot shot)',\n", + " 'yeah shot shot take a shot',\n", + " 'like i got a chopper gunner',\n", + " 'turn it up like i’m rambo',\n", + " '술에 뛰어들어 술에 쩔어',\n", + " 'hol’up hol’up hol’up hol’up',\n", + " '우린 아직 어려 잠에 들기에는 젊어',\n", + " '어서 보드카에 juice를 섞어',\n", + " '[hook: sik-k)',\n", + " 'young boys but we sippin on that champagne',\n", + " '오늘 밤엔 we don’t care bout damn thang',\n", + " '흥청망청 신사임당 king 세종',\n", + " '흥청망청 신사임당 king 세종',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(like i got so many chopper)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " 'and it goes shot shot shot shot',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(like i got so many chopper)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(and it goes shot shot shot shot)',\n", + " 'young shot callers, yeah we go loud',\n", + " 'but we gon go much louder',\n", + " '왜냐면 젊음은 짧어',\n", + " 'my whole crew turn it up 안 피곤하지',\n", + " '술을 마셔 우리 머릿 속은 미로 같기에',\n", + " 'now we be mobbin’ 우리는 이 밤이',\n", + " '끝나는거따윈 신경쓰지않지',\n", + " 'tonight is the night so what we do is party',\n", + " 'what we do is 혼자 온 여자들 찾기',\n", + " '친구들끼리 온 여자들 같이해',\n", + " '나랑 내 친구들이 맞이해',\n", + " '우린 몸을 술처럼 섞을 테니까',\n", + " 'blame it on alcohol, jamie foxx',\n", + " 'young boys but we sippin on that champagne',\n", + " '오늘 밤엔 we don’t care bout damn thing',\n", + " '흥청망청 신사임당 king 세종',\n", + " '흥청망청 신사임당 king 세종',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(like i got so many chopper)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(and it goes shot shot shot shot)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(like i got so many chopper)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " 'and it goes shot shot shot shot',\n", + " 'a shot of the henney, ohh ohh',\n", + " 'aomg that my team, yeah crew crew',\n", + " 'who is he 도대체 쟤는 누구',\n", + " '박재범 한달에 술값 천만원 난 술꾼',\n", + " '다음날 후회 할 것은 분명해',\n", + " '그래도 난 너의 몸매를 구경해',\n", + " '이리와 baby 같이 한잔해',\n", + " '네 놀이터 내 위에 올라타 baby',\n", + " 'i celebrate celebrate with my team',\n", + " '다 같이 올라가고 향해 성공의길',\n", + " 'sik-k future baller flex on them kids',\n", + " 'i’m poppin these bottles',\n", + " 'i’m with all these models',\n", + " 'full throttle on you and your friends',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(like i got so many chopper)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(and it goes shot shot shot shot)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(like i got so many chopper)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(and it goes shot shot shot shot)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(like i got so many chopper)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(and it goes shot shot shot shot)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(like i got so many chopper)',\n", + " '알코올은 싫지만 주면 마실 수 밖에',\n", + " '(and it goes shot shot shot shot)',\n", + " 'romanization',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(like i got so many chopper)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(and it goes shot shot shot shot)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(like i got so many chopper)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(and it goes shot shot shot shot)',\n", + " 'yeah shot shot take a shot',\n", + " 'like i got a chopper gunner',\n", + " 'turn it up like i’m rambo',\n", + " 'sul-e ttwieodeul-eo sul-e jjeol-eo',\n", + " 'hol’up hol’up hol’up hol’up',\n", + " 'ulin ajig eolyeo jam-e deulgieneun jeolm-eo',\n", + " 'eoseo bodeuka-e juiceleul seokk-eo',\n", + " '[hook: sik-k)',\n", + " 'young boys but we sippin on that champagne',\n", + " 'oneul bam-en we don’t care bout damn thang',\n", + " 'heungcheongmangcheong sinsaimdang king sejong',\n", + " 'heungcheongmangcheong sinsaimdang king sejong',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(like i got so many chopper)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " 'and it goes shot shot shot shot',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(like i got so many chopper)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(and it goes shot shot shot shot)',\n", + " 'young shot callers, yeah we go loud',\n", + " 'but we gon go much louder',\n", + " 'waenyamyeon jeolm-eum-eun jjalb-eo',\n", + " 'my whole crew turn it up an pigonhaji',\n", + " 'sul-eul masyeo uli meolis sog-eun milo gatgie',\n", + " 'now we be mobbin’ ulineun i bam-i',\n", + " 'kkeutnaneungeottawin singyeongsseujianhji',\n", + " 'tonight is the night so what we do is party',\n", + " 'what we do is honja on yeojadeul chajgi',\n", + " 'chingudeulkkili on yeojadeul gat-ihae',\n", + " 'nalang nae chingudeul-i maj-ihae',\n", + " 'ulin mom-eul sulcheoleom seokk-eul tenikka',\n", + " 'blame it on alcohol, jamie foxx',\n", + " 'young boys but we sippin on that champagne',\n", + " 'oneul bam-en we don’t care bout damn thing',\n", + " 'heungcheongmangcheong sinsaimdang king sejong',\n", + " 'heungcheongmangcheong sinsaimdang king sejong',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(like i got so many chopper)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(and it goes shot shot shot shot)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(like i got so many chopper)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " 'and it goes shot shot shot shot',\n", + " 'a shot of the henney, ohh ohh',\n", + " 'aomg that my team, yeah crew crew',\n", + " 'who is he dodaeche jyaeneun nugu',\n", + " 'bagjaebeom handal-e sulgabs cheonman-won nan sulkkun',\n", + " 'da-eumnal huhoe hal geos-eun bunmyeonghae',\n", + " 'geulaedo nan neoui mommaeleul gugyeonghae',\n", + " 'iliwa baby gat-i hanjanhae',\n", + " 'ne nol-iteo nae wie ollata baby',\n", + " 'i celebrate celebrate with my team',\n", + " 'da gat-i ollagago hyanghae seong-gong-uigil',\n", + " 'sik-k future baller flex on them kids',\n", + " 'i’m poppin these bottles',\n", + " 'i’m with all these models',\n", + " 'full throttle on you and your friends',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(like i got so many chopper)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(and it goes shot shot shot shot)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(like i got so many chopper)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(and it goes shot shot shot shot)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(like i got so many chopper)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(and it goes shot shot shot shot)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(like i got so many chopper)',\n", + " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", + " '(and it goes shot shot shot shot)',\n", + " 'layrhm li mat ytl9 sra7 radi o bhalo',\n", + " 'cha3b parole taygidi o ygrati gdam l kanon',\n", + " 'kola o blano hnaya swal7 m3a rab7a o lmojod',\n", + " 'b nidal s3aya nta machi mn da7iya tam3 lojo2',\n", + " 'o 7na b9ina fstreet frontline ga3 lfossol',\n", + " 'kolchi chari tabot ta7d maymni mor motna',\n", + " 'omerta ti9a f sbrdila njr gdam l cocot',\n", + " 'f zn9a cnss hip hop culture ma3ndich compte',\n", + " 'netflix rap ki lwa7y ta7 bach nzid nbombi',\n", + " 'sb7anllah fkola ster sms bgjami mnfoundi',\n", + " 'tal 9a3 habt ntagi nab fake fuck solta o les flics',\n", + " '3awd lkrk tanta la 39ti b3icha matrix ok',\n", + " 'ana ra daakhl sou9i ghi s9ina dem',\n", + " 'rap o chira tassa lkina f rassi tjdeb',\n", + " 'l3chran galo lacha dar galo chi 3wina tem',\n", + " 'walo sold glbna 69 drbna denya gdem',\n", + " 'my life koula nhar kadouz bhal chi d9i9a katjri fast',\n", + " 'ghi lbare7 passili kora , lyouma sahbi koubli kass',\n", + " 'kanchouf ki kant denya simple malha tcomplicat',\n", + " 'bnadem bach ydir fiha kber kinsa ga3 dakchi li fat',\n", + " 'dmaghi m9bara ch7al men fikra matet 9bel matzad',\n", + " '7regna dikrayat b drug sghar ba9i fina ghi lfant',\n", + " '7yatna kant , wer9a vierge pleine bdehk m3a l3chran',\n", + " 'daba la fwejhek dhek chi flan katgol yakma kayn chi blan',\n", + " 'te7 enpane fseka dial chi 9erd ydouz fik ki chi train',\n", + " 'rbitouna kan3bdo lah , l9inakoum kt3bdo drahm',\n", + " 'gama b9it fahem chnou kitra , l9wada mdgouga m3a libra',\n", + " 'drog f zn9a chkoun li bgha , khellat l39oula mkhiibra',\n", + " 'drari m9emra 3la 7yatha byed wla k7el ki zebra',\n", + " 'lmima weldha dab fl mel7 ba9a katsena chi bra',\n", + " 'ma7dbi fblad wlad l97ab ara chi ntra , wkoub lia nchrab',\n", + " 'khalaya li fdmaghi wlaw talbin chra3',\n", + " 'ma3ndi kindir mn soghri kansma3 ghi ngiir xico hbil!',\n", + " 'maymchich balk b3id ghandrabk ghi blkhir',\n", + " 'kbart o dfant 3aibi fbir fkola star dm kisil',\n", + " 'drari 3arfini chkandir nefs lcode nhar o lil',\n", + " \"mrid jib chi contenaire kan9si l'kick o'snare\",\n", + " 'fuck lmise en scene 7atina lgraffiti f la rhyme',\n", + " 'filter west la gaine kantal3o lbareme',\n", + " 'wkha ydwi l9arin 3alim zn9awi fla guerre',\n", + " 'machi ana li mabghitch sifti tkamoflat bcapuche',\n", + " 'kla star 3ando preuve 7arf dlkdoub makaydimch',\n", + " 'makharjnach mn nefs roots baghi n3ich mor lmout',\n", + " 'da7kna khayb o fat lfout 3demt sora o7kamt sout',\n", + " 'lkabt ljahel ki tachyer tobus kidi dzayr',\n", + " 'lay7 snarti 3tini ghi rass lmal mabghitch lmlayr',\n", + " 'nmout khfif bla dnoub bach jay bach dayr',\n", + " 'skhit bdenia bghit n7ass brassi khfif wana tayr',\n", + " '9raw li fnjani chafo 3ini darbo tam',\n", + " 'ba9i ma brawli drabi tsawr lgi7 o dem',\n", + " 'tab3ini f n3assi mabghatch tssali ded',\n", + " 'ana o hbali machatt walo ghi rrrdem',\n", + " 'glbi fin tasa tatbred chrbti ota degoti',\n", + " 'khayb solo ch7al mn 9rd gdam jmhoro yban beauty',\n", + " 'madwitch b7omti la l3a9t mama la 3issaba',\n", + " 'tarssm brap damar o cherr nab mktaba',\n", + " 'ina mo9rar hada ra kayn fl plakare',\n", + " 'ktrt ma khmage o 7ayl nssina n3awdo la cart',\n", + " 'mrad khouya madorch 7dana la t infekta bina',\n", + " '55 planet fuck lgrammy ba9i ki bdina',\n", + " 'ghi mtl3inha 3la walo ob9ina fidel',\n", + " 'hadchi twal ga3 nhar casck mic ki sitel',\n", + " 'b9owt rassi madrb fl beat 9ssa7tli tibi',\n", + " 'ktabti puzzl at79d la3rfiti ana fini',\n", + " '3chiri tlebha kbira ,lsan li kidikali dirlo jbira',\n", + " 'makansa tahaja bla modkira, wga3ma kankhaf nnmot sghir',\n", + " 'ta rani kaber f9ont chirrir , 3alam khor fash kayte7 lil',\n", + " 'mouka w 7adya jnabha tamen chorta katnkra f street',\n", + " 'l9wada foug kola beat , reprezent the east',\n", + " 'frap kaniki lboombap hit topline jani easy',\n", + " 'clasick 7at the curse fog instru lazy jesus',\n", + " 'we dont need nobody , ydk f akbr penis',\n", + " 'makans3aw ta 9ard hit blastna tteht l ard',\n", + " 'l7ej 3dna fl bronx , lktaba 3ndna fard',\n", + " 'm3ak jdour li underground ntouma lli lfo9 chouk olward',\n", + " 'lou7 nard 55 la clique , kola mera ghayji fik chi face',\n", + " 'ch7al men motherfuck ,ja fog rasso vaze',\n", + " 'drouba 3dna sauvage men sghor fuck the cops',\n", + " 'showing love , acab fkoula tag',\n", + " 'fzen9a fach kay7dro zbot kanst7la kola taff',\n", + " 'fay9 kan7lam, kantchlel f daya dyal sem',\n", + " 'kolchi krem fyedi stylo lmdad mkabed kidem',\n", + " 'makayn la rap la gmel yeekh bdit kanamel *',\n", + " \"bnadem f'sic mundus ztem lmakhyer fikoum bda yzmel\",\n", + " 'sakn f dmaghi kandmer sad bab dar blama tsmer',\n", + " 'ana w3chrani t9abna lcarnet kolo mcharger blma3den',\n", + " \"abbran kali lbrrani dag l'underground blibari\",\n", + " 'gama ghanfrani aprat street scentists trust nobody',\n", + " 'dow tafi couplet kafi bach lachi ay racist',\n", + " \"ktaba mn9a3 l'afric 7at hiphop illmatic\",\n", + " \"binatna ch7al mn disc ch7al mn pist life's risk\",\n", + " 'brahch 9sar mn litro 9balt lmicro zah9o ch7l mn kick',\n", + " 'frge3 lclik hada jahdbna 3la smig',\n", + " 'kolchi ki ban lih lculture tarf dlkhobz ozit',\n", + " 'btarjlit kola ysed 3la karo f bit salit lktaba',\n", + " 'flwer9a rmit kansaynk tgoli ghir brit yo !',\n", + " 'woogie on and on',\n", + " 'i can love you like forever, yeah, yeah, yeah',\n", + " 'my love is on fuego, yeah, yeah',\n", + " '아마 영원히 난 너 없인',\n", + " '이젠 안돼, cause i don’t like that',\n", + " 'cause i',\n", + " 'loving you till the end like xyz',\n", + " 'loving you till the end like xyz',\n", + " '끝날 때까지 like xyz',\n", + " 'loving you till the end like xyz',\n", + " 'xyz-z-z',\n", + " 'you like being with me',\n", + " \"i’m makin' hitlist, hitlist\",\n", + " \"good life i’m livin' it\",\n", + " '널 만났고 이젠 만족해',\n", + " '끝날 때까지 너를 붙잡아 볼게, yeah',\n", + " 'xyz-z-z, yeah, yeah, yeah, yeah, till the end',\n", + " '너도 같은 생각이라면',\n", + " '정확히 you feel this way',\n", + " 'cause i need you really really bad',\n", + " 'you also need me babe',\n", + " '끝이라는 곳의 끝자락에서',\n", + " 'you can meet me there',\n", + " 'i’m not perfect',\n", + " '그래서 나는 노력해, yeah',\n", + " 'keep it one hunnit',\n", + " '내가 죽는 날까지',\n", + " 'keep it one hunnit',\n", + " '너도 나를 알잖아',\n", + " '시작을 했으면 끝을 봐야 하지',\n", + " 'yeah, i don’t need nuthin but you',\n", + " 'yeah',\n", + " 'i can love you like forever, yeah, yeah, yeah',\n", + " 'my love is on fuego, yeah, yeah',\n", + " '아마 영원히 난 너 없인',\n", + " '이젠 안돼, cause i don’t like that',\n", + " 'cause i',\n", + " 'loving you till the end like xyz',\n", + " 'loving you till the end like xyz',\n", + " '끝날 때까지 like xyz',\n", + " 'loving you till the end like xyz',\n", + " 'xyz with you',\n", + " '너의 이야기지 내 노랜',\n", + " '넌 나의 insipiration',\n", + " '다른 여자들은 make no sense',\n", + " 'my mama likes you',\n", + " 'so you can be my wife too',\n", + " 'so we can hit up cancun',\n", + " 'happy ending, game 끝',\n", + " '난 지쳐',\n", + " '너 때문이 아니라',\n", + " '지루한 놈들이 몇 있어',\n", + " '이유 없이 나를 싫어해서',\n", + " '매번 망치려고 하지 내 vision',\n", + " '따라 올 수 있겠냐고',\n", + " '나랑 내 식구들의 ambition',\n", + " 'cause we on mission killer',\n", + " 'but i’m not perfect',\n", + " 'unlike my girlfriend',\n", + " '네 눈에 fallin 네 폰에 callin',\n", + " 'yeah yeah yeah yeah yeah yeah yeah',\n", + " 'yeah yeah yeah',\n", + " 'i can love you like forever, yeah, yeah, yeah',\n", + " 'my love is on fuego, yeah, yeah',\n", + " '아마 영원히 난 너 없인',\n", + " '이젠 안돼, cause i don’t like that',\n", + " 'cause i',\n", + " 'loving you till the end like xyz',\n", + " 'loving you till the end like xyz',\n", + " '끝날 때까지 like xyz',\n", + " 'loving you till the end like xyz',\n", + " 'romanization',\n", + " 'i can love you like forever',\n", + " 'yeah yeah yeah',\n", + " 'my love is on fuego yeah yeah',\n", + " 'ama yeongwonhi',\n", + " 'nan neo eopsin',\n", + " 'ijen andwae',\n", + " 'cause i don’t like that',\n", + " 'cause i',\n", + " 'loving you till the end like xyz',\n", + " 'loving you till the end like xyz',\n", + " 'kkeutnal ttaekkaji like xyz',\n", + " 'loving you till the end like xyz',\n", + " 'xyz z z',\n", + " 'you like being with me',\n", + " 'i’m makin hitlist hitlist',\n", + " 'good life i’m livin it',\n", + " 'neol mannassgo ijen manjokhae',\n", + " 'kkeutnal ttaekkaji neoreul butjaba bolge yeah',\n", + " 'xyz z z',\n", + " 'yeah yeah yeah yeah till the end',\n", + " 'neodo gateun saenggagiramyeon',\n", + " 'jeonghwakhi you feel this way',\n", + " 'cause i need you really really bad',\n", + " 'you also need me babe',\n", + " 'kkeutiraneun gosui kkeutjarageseo',\n", + " 'you can meet me there',\n", + " 'i’m not perfect',\n", + " 'geuraeseo naneun noryeokhae yeah',\n", + " 'keep it one hunnit',\n", + " 'naega jukneun nalkkaji',\n", + " 'keep it one hunnit',\n", + " 'neodo nareul aljanha',\n", + " 'sijageul haesseumyeon kkeuteul bwaya haji',\n", + " 'yeah i don’t need nuthin but you',\n", + " 'yeah',\n", + " 'i can love you like forever',\n", + " 'yeah yeah yeah',\n", + " 'my love is on fuego yeah yeah',\n", + " 'ama yeongwonhi',\n", + " 'nan neo eopsin',\n", + " 'ijen andwae',\n", + " 'cause i don’t like that',\n", + " 'cause i',\n", + " 'loving you till the end like xyz',\n", + " 'loving you till the end like xyz',\n", + " 'kkeutnal ttaekkaji like xyz',\n", + " 'loving you till the end like xyz',\n", + " 'xyz with you',\n", + " 'neoui iyagiji nae noraen',\n", + " 'neon naui insipiration',\n", + " 'dareun yeojadeureun make no sense',\n", + " 'my mama likes you',\n", + " 'so you can be my wife too',\n", + " 'so we can hit up cancun',\n", + " 'happy ending geim kkeut',\n", + " 'nan jichyeo',\n", + " 'neo ttaemuni anira',\n", + " 'jiruhan nomdeuri myeot isseo',\n", + " 'iyu eopsi nareul silheohaeseo',\n", + " 'maebeon mangchiryeogo haji nae vision',\n", + " 'ttara ol su issgessnyago',\n", + " 'narang nae sikgudeurui ambition',\n", + " 'cause we on mission killer',\n", + " 'but i’m not perfect',\n", + " 'unlike my girlfriend',\n", + " 'ne nune fallin ne pone callin',\n", + " 'yeah yeah yeah yeah yeah yeah yeah',\n", + " 'yeah yeah yeah',\n", + " 'i can love you like forever',\n", + " 'yeah yeah yeah',\n", + " 'my love is on fuego yeah yeah',\n", + " 'ama yeongwonhi',\n", + " 'nan neo eopsin',\n", + " 'ijen andwae',\n", + " 'cause i don’t like that',\n", + " 'cause i',\n", + " 'loving you till the end like xyz',\n", + " 'loving you till the end like xyz',\n", + " 'kkeutnal ttaekkaji like xyz',\n", + " 'loving you till the end like xyz',\n", + " 'paroles de amine 16-3 feat ghetto star & l\\'morphine \"jakom\"',\n", + " 'hadchi 3ajib, haha ha ha',\n", + " '16-3, huh, ey',\n", + " 'trapaholic real trap shit',\n", + " 'ja ja ja jakom li taygol klam face wakha f wejho weld nas',\n", + " 'da da da daz men droub dlam chaf lwli 7ta tab w chab rass',\n", + " 'fa fa fa fach tchoufni labes sayg jibi 3amer a l3chir',\n", + " 'kha kha kha khas te3ref belli 7tana chbe3t f had lblad dmir',\n", + " 'ka ka ka kayn li 3ach ra7el mat rajel rda b l9lil',\n", + " 'nta nta nta nta li konti tame3 dowezti 7yatk ndil',\n", + " 'fi fi fi fine li kano 9bel dazo 9bel mato 9bel',\n", + " \"bda bda bda bda brassi nassi kassi ntassi l'passé dfel\",\n", + " \"drahem nhari dour te3ya tji l' da da da\",\n", + " \"dari me7loula l'ga3 3echrani ni ni ni\",\n", + " 'nichan ki dima tan3awd ach tan3ich',\n", + " 'mouslim mrebbi le7ya w machi daech',\n", + " 'ra ra ra rastafras 16-3 family',\n", + " 'matan3refekch ghir bla ma tnamili',\n", + " 'makansem3ekch ghi bla ma t7ajini',\n", + " 'gjam lfani ch7al men hadi khatini',\n", + " 'x2',\n", + " 'hbel b klamo nit, favori 3la ga3 tocara',\n", + " '3la ga3 lkoussala, ana ga3 makount hna',\n", + " 'ana machi souti ghi le3ba',\n", + " 'chems lbare7 li ghatchre9 ghedda',\n", + " 'tanhreb bezzaf, tanghfel n3as tankteb rap',\n", + " 'ka ka ka kat9atel f passage b7ala dmaghek mbouchi',\n", + " 'ka ka ka kan7etkom 9balti b7alla kanakol sushi',\n", + " 'ka ka ka kan dribbler rwappa face machi messi w machi gauchi',\n", + " 'di di di dima classe dareb chemisa rose versace',\n", + " 'papa, 7yati action machi drama',\n", + " 'mama, makatsrefch 3lya mama',\n", + " 'machi wlad leb7er, rou7 3owwama',\n", + " 'ghanhder wakha dirouli kmama',\n", + " 'sla7i fo9 ktafi w kharej nsayyed',\n", + " 'li banli fel viseur bih ghan3iyyed',\n", + " 'dareb team 3askri kanriyed',\n", + " 'titiz kayti7 3lya bla manriyyet',\n", + " 'x2',\n", + " 'hbel b klamo nit, favori 3la ga3 tocara',\n", + " '3la ga3 lkoussala, ana ga3 makount hna',\n", + " 'ana machi souti ghi le3ba',\n", + " 'chems lbare7 li ghatchre9 ghedda',\n", + " 'tanhreb bezzaf, tanghfel n3as tankteb rap',\n", + " 'moul thousand punchline, li taykherrej men zbel chlayd',\n", + " 'khouk ay9ouna 3ibra, antiye7 3lik fikra matgoulch aie',\n", + " \"lmal wel banoun w l'extase, tansowb robot 3endi f sta7\",\n", + " \"gherre9 l'kif fel häagen-dazs, waji ndakro dik sa3\",\n", + " 'rkeb m3aya f had train, f 7yati 9otr machi chou3a3',\n", + " 'hebtou lard fine mchito ga3, tanbi3 snan l9irch b chi dollar',\n", + " 'la ta7 lek le3jeb njibou lik, euy',\n", + " 'ma3endi 7ta chi synonyme, euy',\n", + " 'coup de phare dyali ziyro limen',\n", + " \"très solide l'morphine clamonet\",\n", + " 'x2',\n", + " 'hbel b klamo nit, favori 3la ga3 tocara',\n", + " '3la ga3 lkoussala, ana ga3 makount hna',\n", + " 'ana machi souti ghi le3ba',\n", + " 'chems lbare7 li ghatchre9 ghedda',\n", + " 'tanhreb bezzaf, tanghfel n3as tankteb rap',\n", + " 'rastafrass',\n", + " 'groovy everywhere',\n", + " \"fuck everybody in this fuckin' room (yelows gang)\",\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " \"fuck everybody in this fuckin' room (yelows gang)\",\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " 'because we can’t fuck with you (gang)',\n", + " 'because we can’t fuck with you (gang)',\n", + " 'because we can’t fuck with you (gang, gang)',\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " \"yls we youngin', youngin', youngin', youngin'\",\n", + " 'negativity, g.soul형처럼 멀리 멀리',\n", + " \"yeah i'm fuckin' trend\",\n", + " 'who can race, 너넨 이제 내 fan',\n", + " '뭘 내 빼 가입해 yelows gang',\n", + " 'cop new tom ford',\n", + " \"i’m fuckin' boon the shopper\",\n", + " '난 편집샵의 단골',\n", + " '영수증은 brrrrrrr 날려',\n", + " '너의 머리 위의 kangol',\n", + " '네 티셔츠에 있는 camo bape',\n", + " '잡히기 싫음 달려',\n", + " '아님 잡혀, 내 verse는 동물원 같아',\n", + " \"fuck everybody in this fuckin' room (yelows gang)\",\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " \"fuck everybody in this fuckin' room (yelows gang)\",\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " 'because we can’t fuck with you (gang)',\n", + " 'because we can’t fuck with you (gang)',\n", + " 'because we can’t fuck with you (gang, gang)',\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " '우릴 보면 도망가',\n", + " '노란색의 경찰차',\n", + " 'we been thru the highs and lows',\n", + " '너네 방은 소강당',\n", + " 'we the trap 소믈리에',\n", + " '넌 음악 소홀히 해',\n", + " '아직도 소몰이 해',\n", + " '모르면 조용히 해',\n", + " 'f-u-c-k with the man sik-k',\n", + " 'he been the same day 1',\n", + " '우린 매일 해, 너넨 이메일 해',\n", + " 'yeah, we go way back',\n", + " '힙플 자녹게, yeah',\n", + " 'gang, gang, gang, gang, gang, gang',\n", + " 'fam, fam, fam, fam, fam, fam',\n", + " 'understand-stand-stand-stand-stand-stand',\n", + " 'we make you dance, dance, yuh',\n", + " 'look at our presence',\n", + " 'bitches vibrating just like my phone',\n", + " 'just like ferrari we ride in this bitch',\n", + " 'pimpin on 네 여친 또 그 년 친구',\n", + " 'wifin them bitches like wifi',\n", + " 'and let all my wives fight',\n", + " '빌리야 놀지마, 걔네는 사짜',\n", + " '허내인이 sik-k the groovy 다음 타자',\n", + " 'fuck with us 우린 빼곤 다들 나가',\n", + " \"fuck everybody in this fuckin' room (yelows gang)\",\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " \"fuck everybody in this fuckin' room (yelows gang)\",\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " 'because we can’t fuck with you (gang)',\n", + " 'because we can’t fuck with you (gang)',\n", + " 'because we can’t fuck with you (gang, gang)',\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " \"f-u-c-k everybody in this fuckin' room\",\n", + " 'if you feel me, get down',\n", + " 'because we can fuck with you',\n", + " '내 인기는 무식해, 높은 줄 모르고 솟구치는 중',\n", + " 'sik-k, woodie gochild',\n", + " '우린 보여주지 mob shit crew',\n", + " 'woo, ytc4lif we mobbin’',\n", + " 'woo, yls mob still mobbin’',\n", + " 'woo, 다 이해 못 하지 너, 하긴',\n", + " 'woo, 봐, 여태 넌 발 밑 그자리',\n", + " '그대로 서 있는거지 뭐',\n", + " '네가 시도한건 아무것도',\n", + " '그 자리에서 지켜봐라',\n", + " '내가 어딜 향해 가나 gochild fuck it up',\n", + " '파도 쳐 new waves on str8 곧 판도는 바뀌어',\n", + " '판을 쳐 네 playlist엔 곧 몇은 빠져',\n", + " \"fuck everybody in this fuckin' room\",\n", + " 'if u feel me, get down fuckers',\n", + " 'because we can’t fuck with you',\n", + " \"fuck everybody in this fuckin' room (yelows gang)\",\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " \"fuck everybody in this fuckin' room (yelows gang)\",\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " 'because we can’t fuck with you (gang)',\n", + " 'because we can’t fuck with you (gang)',\n", + " 'because we can’t fuck with you (gang, gang)',\n", + " 'because we can’t fuck with you (yelows gang)',\n", + " 'romanization',\n", + " 'groovy everywhere',\n", + " 'fuck everybody in this fuckin room',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'yelows gang',\n", + " 'fuck everybody in this fuckin room',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang gang',\n", + " 'because we can’t fuck with you',\n", + " 'yelows gang',\n", + " 'yls we youngin youngin youngin youngin',\n", + " 'negativity, g.soulhyeongcheoleom meolli meolli',\n", + " \"yeah i'm fuckin' trend\",\n", + " 'who can race, neonen ije nae fan',\n", + " 'mwol nae ppae gaibhae yelows gang',\n", + " 'cop new tomford',\n", + " \"i’m fuckin' boon the shopper\",\n", + " 'nan pyeonjibsyabui dangol',\n", + " 'yeongsujeungeun brrrrrrr nallyeo',\n", + " 'neoui meoli wiui kangol',\n", + " 'ne tisyeocheue issneun camo bape',\n", + " 'jabhigi silheum dallyeo',\n", + " 'anim jabhyeo nae beolseuneun dongmulwon gata',\n", + " 'fuck everybody in this fuckin room',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'yelows gang',\n", + " 'fuck everybody in this fuckin room',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang gang',\n", + " 'because we can’t fuck with you',\n", + " 'yelows gang',\n", + " 'ulil bomyeon domangga',\n", + " 'nolansaegui gyeongchalcha',\n", + " 'we been thru the highs and lows',\n", + " 'neone bangeun sogangdang',\n", + " 'we the trap someullie',\n", + " 'neon eumag soholhi hae',\n", + " 'ajigdo somoli hae',\n", + " 'moleumyeon joyonghi hae',\n", + " 'f u c k',\n", + " 'with the man sik-k',\n", + " 'he been the same day 1',\n", + " 'ulin maeil hae',\n", + " 'neonen imeil hae',\n", + " 'yeah we go way back',\n", + " 'hibpeul janogge yeah',\n", + " 'gang gang gang gang gang gang',\n", + " 'fam fam fam fam fam fam',\n", + " 'understand stand stand stand stand stand',\n", + " 'we make you dance dance',\n", + " 'yuh',\n", + " 'look at our presence',\n", + " 'bitches vibrating',\n", + " 'just like my phone',\n", + " 'just like ferrari we ride in this bitch',\n", + " 'pimpin on ne yeochin tto geu nyeon chingu',\n", + " 'wifin them bitches like wifi',\n", + " 'and let all my wives fight',\n", + " 'billiya noljima gyaeneneun sajja',\n", + " 'heonaeini sik-k the groovy daeum taja',\n", + " 'fuck with us ulin ppaegon dadeul naga',\n", + " 'fuck everybody in this fuckin room',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'yelows gang',\n", + " 'fuck everybody in this fuckin room',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang gang',\n", + " 'because we can’t fuck with you',\n", + " 'f u c k everybody in this fuckin room',\n", + " 'if u feel me',\n", + " 'get down because we can fuck with you',\n", + " 'nae ingineun musighae nopeun jul moleugo sosguchineun jung',\n", + " 'sik-k woodie gochild ulin boyeojuji mob shit crew',\n", + " 'woo ytc4lif we mobbin’',\n", + " 'woo yls mob still mobbin’',\n", + " 'woo da ihae mos haji neo, hagin',\n", + " 'woo bwa yeotae neon bal mit geujali',\n", + " 'geudaelo seo issneungeoji mwo nega sidohangeon amugeosdo',\n", + " 'geu jalieseo jikyeobwala naega',\n", + " 'eodil hyanghae gana gochild fuck it up',\n", + " 'pado chyeo new waves on str8 god pandoneun bakkwieo',\n", + " 'paneul chyeo ne playlisten god myeocheun ppajyeo',\n", + " 'fuck everybody in this fuckin room',\n", + " 'if u feel me, get down fuckers',\n", + " 'because we can’t fuck with you',\n", + " 'fuck everybody in this fuckin room',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'yelows gang',\n", + " 'fuck everybody in this fuckin room',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'yelows gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang',\n", + " 'because we can’t fuck with you',\n", + " 'gang gang',\n", + " 'because we can’t fuck with you',\n", + " 'yelows gang',\n", + " 'korean',\n", + " '안된다고 말을했지',\n", + " 'but i don’t give up, i’m gon make it',\n", + " 'for better life, better life',\n", + " 'for my better life, better life',\n", + " '하고 싶은 게 많아, 사고 싶은 게 많아',\n", + " 'so i will be the famous, famous rapper',\n", + " 'then i’m livin’ better life, better life',\n", + " 'then i’m livin’ my better life, my better life',\n", + " 'mo’ money mo’ fame new j’s',\n", + " '돌아다니기에도 더 큰 무대',\n", + " '방금 tag 뗀 새 옷에',\n", + " '신발은 까만 rick owens',\n", + " '다들 더 많은걸 원하고',\n", + " '좀 더 빠른걸 원해',\n", + " 'but 난 좀 더 다른걸 원해',\n", + " '그래서 매일 매일 작업해',\n", + " 'because time clocks anyway',\n", + " 'do not waste your day',\n", + " '난 무조건 열심히 만 하지 않고 똑똑하게 일해',\n", + " '또 다른 기회들을 위해서',\n", + " 'i push hard with passion',\n", + " 'i have fun with this',\n", + " 'yeah i have fun with this boi',\n", + " '안된다고 말을했지',\n", + " 'but i don’t give up, i’m gon make it',\n", + " 'for better life, better life',\n", + " 'for my better life, better life',\n", + " ...]},\n", + " 'data': ['korean',\n", + " 'i fly to you to your room',\n", + " \"우리 둘은 lookin' beautiful baby\",\n", + " '이만큼이나 너에게서 정말로 (groovy everywhere)',\n", + " '가까워 아주',\n", + " \"i fuckin' love you\",\n", + " \"i fuckin' love you\",\n", + " \"motherfuckin' love you\",\n", + " \"i fuckin' love you, yeah\",\n", + " \"i fuckin' love you\",\n", + " \"i fuckin' love you\",\n", + " \"motherfuckin' love you\",\n", + " \"i fuckin' love you, yeah\",\n", + " 'light it up my cigarette',\n", + " '너가 담밸 안 핀다면 미안해, yeah, yeah',\n", + " '연기는 저기루 불어 후',\n", + " '너에게 닿지 않게, yeah, yeah',\n", + " '나는 날아가지, yeah, like a 나비, yeah',\n", + " \"lookin' for my flower, 난 너에게 갔지\",\n", + " '너는 몰라 아직, 말하기 전까진',\n", + " \"baby i be flyin'\",\n", + " 'never seen probably never seen',\n", + " 'yeah, 넌 찢고 나왔나 봐 magazine',\n", + " 'yeah, 다 티 나게 나는 너에게 어필해',\n", + " '사실대로 말해, 이런 적 없긴',\n", + " '왜 거짓말을 쳐? 난 지금보다 더',\n", + " '많이 솔직한 걸 원하고 있어',\n", + " '정하지 말자 선을',\n", + " '어차피 그어봤자 넘을 거야',\n", + " \"yeah, i fuckin' love you, oh ah\",\n", + " 'i fly to you to your room',\n", + " \"우리 둘은 lookin' beautiful baby\",\n", + " '이만큼이나 너에게서 정말로',\n", + " '가까워 아주',\n", + " \"i fuckin' love you\",\n", + " \"i fuckin' love you\",\n", + " \"motherfuckin' love you\",\n", + " \"i fuckin' love you, yeah\",\n", + " \"i fuckin' love you\",\n", + " \"i fuckin' love you\",\n", + " \"motherfuckin' love you\",\n", + " \"i fuckin' love you, yeah\",\n", + " '난 맨날 너를 떠올리고',\n", + " '그땐 딴 생각 할 시간 없다고 한시도, yeah',\n", + " '너는 모를 거야 이유도, 난 괜히 아쉬운 척',\n", + " '너는 느껴야 돼 피부로',\n", + " '자릴 옮기자 먼저 우리 집으로',\n", + " \"i fly to you, headin' to the stu\",\n", + " 'firing the booth, 다른 뜻으로',\n", + " 'yellow-life my lingo',\n", + " 'mob for life my ego',\n", + " '나는 너가 좋아, yeah, yeah',\n", + " '그 어떤 것보다, yeah',\n", + " 'you better tell no lie',\n", + " 'wanna make you mine',\n", + " 'everything will be fine',\n", + " '너만 내게로 온다면 나는 너를 위해 살어',\n", + " \"we on morherfuckin' fire\",\n", + " '난 이미 날아가고 있어 너에게로',\n", + " '착각이 아냐 절대로',\n", + " 'everything will be fine',\n", + " '너만 내게로 온다면 나는 너를 위해 살어',\n", + " \"we on motherfuckin' fire\",\n", + " 'i fly to you to your room',\n", + " \"우리 둘은 lookin' beautiful baby\",\n", + " '이만큼이나 너에게서 정말로',\n", + " '가까워 아주',\n", + " \"i fuckin' love you\",\n", + " \"i fuckin' love you\",\n", + " \"motherfuckin' love you\",\n", + " \"i fuckin' love you, yeah\",\n", + " \"i fuckin' love you\",\n", + " \"i fuckin' love you\",\n", + " \"motherfuckin' love you\",\n", + " \"i fuckin' love you, yeah\",\n", + " 'romanization',\n", + " 'groovy everywhere',\n", + " 'i fly to you to your room',\n", + " 'uli dul-eun lookin beautiful baby',\n", + " 'imankeum-ina neoege',\n", + " 'seo jeongmallo',\n", + " 'gakkawo aju',\n", + " 'i fuckin love you',\n", + " 'i fuckin love you',\n", + " 'mother fuckin love you',\n", + " 'i fuckin love you yeah',\n", + " 'i fuckin love you',\n", + " 'i fuckin love you',\n", + " 'mother fuckin love you',\n", + " 'i fuckin love you yeah',\n", + " 'light it up my cigarette',\n", + " 'neoga dambael an pindamyeon',\n", + " 'mianhae yeah yeah',\n", + " 'yeongineun jeogilu bul-eo hu',\n", + " 'neoege dahji anhge yeah yeah',\n", + " 'naneun nal-agaji yeah',\n", + " 'like a nabi yeah',\n", + " 'lookin for my flower',\n", + " 'nan neoege gassji',\n", + " 'neoneun molla ajig malhagi jeonkkajin',\n", + " 'baby i be flyin',\n", + " 'never seen probably never seen',\n", + " 'yeah neon jjijgo nawassna bwa magazine',\n", + " 'yeah da ti nage',\n", + " 'naneun neoege eopilhae',\n", + " 'sasildaelo malhae ileon jeog eobsgin',\n", + " 'wae geojismal-eul chyeo nan jigeumboda deo',\n", + " 'manh-i soljighan geol wonhago iss-eo',\n", + " 'jeonghaji malja seon-eul',\n", + " 'eochapi geueobwassja neom-eul geoya',\n", + " 'yeah i fuckin love you oh ah',\n", + " 'i fly to you to your room',\n", + " 'uli dul-eun lookin beautiful baby',\n", + " 'imankeum-ina neoege',\n", + " 'seo jeongmallo',\n", + " 'gakkawo aju',\n", + " 'i fuckin love you',\n", + " 'i fuckin love you',\n", + " 'mother fuckin love you',\n", + " 'i fuckin love you yeah',\n", + " 'i fuckin love you',\n", + " 'i fuckin love you',\n", + " 'mother fuckin love you',\n", + " 'i fuckin love you yeah',\n", + " 'nan maennal neoleul tteoolligo',\n", + " 'geu ttaen ttan saeng-gag hal sigan eobsdago',\n", + " 'hansido yeah',\n", + " 'neoneun moleul geoya iyudo',\n", + " 'nan gwaenhi aswiun cheog',\n", + " 'neoneun neukkyeoya dwae pibulo',\n", + " 'jalil olmgija meonjeo uli jib-eulo',\n", + " 'i fly to you',\n", + " 'headin to the stu',\n", + " 'firing the booth',\n", + " 'daleun tteus-eulo',\n", + " 'yellow-life my lingo',\n", + " 'mob for life my ego',\n", + " 'naneun neoga joh-a yeah yeah',\n", + " 'geu eotteon geosboda yeah',\n", + " 'you better tell no lie',\n", + " 'wanna make you mine',\n", + " 'everything will be fine',\n", + " 'neoman naegelo ondamyeon',\n", + " 'naneun neoleul wihae sal-eo',\n", + " 'we on morherfuckin fire',\n", + " 'nan imi nal-agago iss-eo neoegelo',\n", + " 'chaggag-i anya jeoldaelo',\n", + " 'everything will be fine',\n", + " 'neoman naegelo ondamyeon',\n", + " 'naneun neoleul wihae sal-eo',\n", + " 'we on motherfuckin fire',\n", + " 'i fly to you to your room',\n", + " 'uli dul-eun lookin beautiful baby',\n", + " 'imankeum-ina neoege',\n", + " 'seo jeongmallo',\n", + " 'gakkawo aju',\n", + " 'i fuckin love you',\n", + " 'i fuckin love you',\n", + " 'mother fuckin love you',\n", + " 'i fuckin love you yeah',\n", + " 'i fuckin love you',\n", + " 'i fuckin love you',\n", + " 'mother fuckin love you',\n", + " 'i fuckin love you yeah',\n", + " 'korean original',\n", + " '밟히는 인생, 신발을 벗고',\n", + " '퉁퉁 부은 내 발을 펴',\n", + " '담보로 몸 잡고',\n", + " '빡시게 깡으로 버티는 하루 속',\n", + " '달뜨는 밤',\n", + " '잠 못 드는 자들의 악몽 속은 늘 파도 쳐',\n", + " '다 다그쳐, 몹쓸 싸움구경만 노리는 악플러',\n", + " '이 rap game에 새내기',\n", + " '쫌 뜨려고 하면 패대기',\n", + " '보석처럼 난 캐내지',\n", + " 'with the poker face',\n", + " \"you'd better get at me\",\n", + " '인터넷 gone savage with',\n", + " '엿 바꿔먹은 베댓',\n", + " '나의 hater들의 물 세례',\n", + " '꼴 보기 싫은 츤데레',\n", + " '내가 가려는 곳',\n", + " '지금보다 더 높이 올라가',\n", + " '땅이 안보일 때까지',\n", + " '밤하늘에 비추는 달빛을 잡고',\n", + " \"i'm dreaming again\",\n", + " '이곳은 higher plane',\n", + " 'higher plane',\n", + " 'higher plane',\n", + " 'higher plane',\n", + " 'walk through the fire',\n", + " 'and i can take you higher',\n", + " 'higher, take my hand',\n", + " \"i'll take you higher\",\n", + " 'with whatever you desire',\n", + " 'just walk through the fire',\n", + " \"fire, take my hand i'll take you higher\",\n", + " \"we ain't on the same page\",\n", + " 'or the same game hater',\n", + " \"you can't hang\",\n", + " '전부 다 내려놔 이제는 bang bang',\n", + " 'i does my thang thang',\n", + " '손목을 걸고 도전, 작두',\n", + " 'meditation focus',\n", + " 'my third eye expose the bogus',\n", + " '고주파로 쏘는 45th bang',\n", + " '뱅 귀에 돋은 소름, 더 짜내는 노란 고름, (ugh)',\n", + " '너가 걷고 있는 살얼음 위 라도 빠른 걸음',\n", + " 'skate, 차고 당겨, chase 추격하는 pace',\n", + " 'gone without a trace, make space',\n", + " 'until i see the pearly gates, 네버엔딩 race',\n", + " 'levitate to a higher plane',\n", + " '내가 가려는 곳',\n", + " '지금보다 더 높이 올라가',\n", + " '땅이 안보일 때까지',\n", + " '밤하늘에 비추는 달빛을 잡고',\n", + " \"i'm dreaming again\",\n", + " '이곳은 higher plane',\n", + " 'higher plane',\n", + " 'higher plane',\n", + " 'higher plane',\n", + " 'walk through the fire',\n", + " 'and i can take you higher',\n", + " 'higher, take my hand',\n", + " \"i'll take you higher\",\n", + " 'with whatever you desire',\n", + " 'just walk through the fire',\n", + " \"fire, take my hand i'll take you higher\",\n", + " '집에 가는 길 이젠 찾을 수 없어',\n", + " 'i do this for the love',\n", + " '겁이 나도 나는 떠',\n", + " 'looking in the mirror like',\n", + " 'i’m on my own',\n", + " 'forgot the way home',\n", + " 'but all i know i’m going',\n", + " 'higher, higher, higher',\n", + " \"you know i'm going\",\n", + " 'higher, higher, higher',\n", + " \"you know i'm going\",\n", + " 'higher, higher, higher',\n", + " \"you know i'm going\",\n", + " 'higher, higher, higher',\n", + " '이곳은 higher plane',\n", + " 'walk through the fire',\n", + " 'and i can take you higher',\n", + " 'higher, take my hand',\n", + " \"i'll take you higher\",\n", + " 'with whatever you desire',\n", + " 'just walk through the fire',\n", + " 'fire, take my hand',\n", + " \"i'll take you higher\",\n", + " 'romanization',\n", + " 'balbhineun insaeng, sinbareul beotgo',\n", + " 'tungtung bueun nae bareul pyeo',\n", + " 'damboro mom jabgo',\n", + " 'ppagsige kkangeuro beotineun haru sok',\n", + " 'daltteuneun bam',\n", + " 'jam mot deuneun jadeurui agmong sogeun neul pado chyeo',\n", + " 'da dageuchyeo, mobsseul ssaumgugyeongman norineun agpeulleo',\n", + " 'i rap gamee saenaegi',\n", + " 'jjom tteulyeogo hamyeon paedaegi',\n", + " 'boseokcheoreom nan kaenaeji',\n", + " 'with the poker face',\n", + " \"you'd better get at me\",\n", + " 'inteones gone savage with',\n", + " 'yeot bakkwomeogeun bedaet',\n", + " 'naui haterdeurui mul selye',\n", + " 'kkol bogi silheun cheundere',\n", + " 'naega galyeoneun got',\n", + " 'jigeumboda deo nopi ollaga',\n", + " 'ttangi anboil ttaekkaji',\n", + " 'bamhaneure bichuneun dalbicheul jabgo',\n", + " \"i'm dreaming again\",\n", + " 'igoseun higher plane',\n", + " 'higher plane',\n", + " 'higher plane',\n", + " 'higher plane',\n", + " 'walk through the fire',\n", + " 'and i can take you higher',\n", + " 'higher, take my hand',\n", + " \"i'll take you higher\",\n", + " 'with whatever you desire',\n", + " 'just walk through the fire',\n", + " \"fire, take my hand i'll take you higher\",\n", + " \"we ain't on the same page\",\n", + " 'or the same game hater',\n", + " \"you can't hang\",\n", + " 'jeonbu da naeryeonwa ijeneun bang bang',\n", + " 'i does my thang thang',\n", + " 'sonmogeul geolgo dojeon, jagdu',\n", + " 'meditation focus',\n", + " 'my third eye expose the bogus',\n", + " 'gojuparo ssoneun 45th bang',\n", + " 'baeng gwie dodeun soreum, deo jjanaeneun noran goreum, (ugh)',\n", + " 'neoga geodgo issneun sareoreum wi lado ppareun georeum',\n", + " 'skate, chago danggyeo, chase chugyeokhaneun pace',\n", + " 'gone without a trace, make space',\n", + " 'until i see the pearly gates, nebeoending race',\n", + " 'levitate to a higher plane',\n", + " 'naega galyeoneun got',\n", + " 'jigeumboda deo nopi ollaga',\n", + " 'ttangi anboil ttaekkaji',\n", + " 'bamhaneure bichuneun dalbicheul jabgo',\n", + " \"i'm dreaming again\",\n", + " 'igoseun higher plane',\n", + " 'higher plane',\n", + " 'higher plane',\n", + " 'higher plane',\n", + " 'walk through the fire',\n", + " 'and i can take you higher',\n", + " 'higher, take my hand',\n", + " \"i'll take you higher\",\n", + " 'with whatever you desire',\n", + " 'just walk through the fire',\n", + " \"fire, take my hand i'll take you higher\",\n", + " 'jibe ganeun gil ijen chajeul su eopseo',\n", + " 'i do this for the love',\n", + " 'geobi nado naneun tteo',\n", + " 'looking in the mirror like',\n", + " 'i’m on my own',\n", + " 'forgot the way home',\n", + " 'but all i know i’m going',\n", + " 'higher, higher, higher',\n", + " \"you know i'm going\",\n", + " 'higher, higher, higher',\n", + " \"you know i'm going\",\n", + " 'higher, higher, higher',\n", + " \"you know i'm going\",\n", + " 'higher, higher, higher',\n", + " 'igoseun higher plane',\n", + " 'walk through the fire',\n", + " 'and i can take you higher',\n", + " 'higher, take my hand',\n", + " \"i'll take you higher\",\n", + " 'with whatever you desire',\n", + " 'just walk through the fire',\n", + " 'fire, take my hand',\n", + " \"i'll take you higher\",\n", + " 'hangul',\n", + " 'hey boy it’s cold',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " '너의 yoga pants',\n", + " 'blew my mind',\n", + " '옆 선의 shape',\n", + " 'blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'tight jean',\n", + " '네 바지가 너무 tight 해서',\n", + " '나는 지금 거의 탈진',\n", + " '헤벌레 oh no no',\n", + " '안 그런 척해도 want some mo mo mo',\n", + " '너의 까만 sunglasses에',\n", + " '빨려 들어가 버리네',\n", + " '못 빠져나와 이제',\n", + " '혼자 살면 날 데려가 집에',\n", + " 'lil baby',\n", + " '나는 원래 이래 lil baby',\n", + " 'lil baby please save me',\n", + " 'lil baby please save me',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " '너의 yoga pants',\n", + " 'blew my mind',\n", + " '옆 선의 shape',\n", + " 'blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " '난 솔직하게 불만 많아',\n", + " 'i try, you hide',\n", + " 'i might ride or die for you',\n", + " 'yeah',\n", + " '네가 나를 읽고 씹을 때',\n", + " '나는 기다리고 있는데',\n", + " '네가 나랑 있고 싶을 땐',\n", + " '그땐 너만 급해',\n", + " '밀어내는 척은 그만',\n", + " '마음을 열어 조금만',\n", + " '나를 알려줄게 금방',\n", + " '유행 같은놈이 아니야',\n", + " '나는 classic',\n", + " 'and i’m flexin',\n", + " 'and i’m finessin',\n", + " 'with my lil baby',\n", + " 'i’m finessin',\n", + " 'with my lil baby',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " '너의 yoga pants',\n", + " 'blew my mind',\n", + " '옆 선의 shape',\n", + " 'blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'romanized',\n", + " 'hey boy it’s cold',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'neoui yoga pants',\n", + " 'blew my mind',\n", + " 'yeop seon-ui shape',\n", + " 'blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'tight jean',\n", + " 'ne bajiga neomu tight haeseo',\n", + " 'naneun jigeum geoui taljin',\n", + " 'hebeolle oh no no',\n", + " 'an geuleon cheoghaedo want some mo mo mo',\n", + " 'neoui kkaman sunglasses-e',\n", + " 'ppallyeo deul-eoga beoline',\n", + " 'mos ppajyeonawa ije',\n", + " 'honja salmyeon nal delyeoga jib-e',\n", + " 'lil baby',\n", + " 'naneun wonlae ilae lil baby',\n", + " 'lil baby please save me',\n", + " 'lil baby please save me',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'neoui yoga pants',\n", + " 'blew my mind',\n", + " 'yeop seon-ui shape',\n", + " 'blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'nan soljighage bulman manh-a',\n", + " 'i try, you hide',\n", + " 'i might ride or die for you',\n", + " 'yeah',\n", + " 'nega naleul ilg-go ssib-eul ttae',\n", + " 'naneun gidaligo issneunde',\n", + " 'nega nalang issgo sip-eul ttaen',\n", + " 'geuttaen neoman geubhae',\n", + " 'mil-eonaeneun cheog-eun geuman',\n", + " 'ma-eum-eul yeol-eo jogeumman',\n", + " 'naleul allyeojulge geumbang',\n", + " 'yuhaeng gat-eunnom-i aniya',\n", + " 'naneun classic',\n", + " 'and i’m flexin',\n", + " 'and i’m finessin',\n", + " 'with my lil baby',\n", + " 'i’m finessin',\n", + " 'with my lil baby',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'neoui yoga pants',\n", + " 'blew my mind',\n", + " 'yeop seon-ui shape',\n", + " 'blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'lil baby you blew my mind',\n", + " 'you got too many numbers in your phone',\n", + " 'you got too many numbers in your phone',\n", + " '너는 몰라, where to call (where to call)',\n", + " '너는 몰라, where to go (where to go)',\n", + " 'yeah, 연락이 올 땐 씹어버려 전부',\n", + " '연락이 오기 전에 지워버려 전부',\n", + " 'cause you got too many numbers in your phone',\n", + " '전부 지워버려 내 번호 말곤',\n", + " 'like it’s new beginning',\n", + " '다 지워버려도 문제는 생기지않아, in my opinion',\n", + " '다른 새끼들은 쓸모가 없어',\n", + " 'yeah, cause they all fucked up',\n", + " \"i'mma only real one on the come up\",\n", + " '나를 사랑하면 넌 더 떳떳해질 수 있어',\n", + " 'yeah, first thing first',\n", + " 'yeah, let you know what’s wrong',\n", + " 'you got too many numbers in your phone',\n", + " 'you got too many numbers in your phone',\n", + " '너는 몰라, where to call (where to call)',\n", + " '너는 몰라, where to go (where to go)',\n", + " 'yeah, 연락이 올 땐 씹어버려 전부',\n", + " '연락이 오기 전에 지워버려 전부',\n", + " 'cause you got too many numbers in your phone',\n", + " '전부 지워버려 내 번호 말곤',\n", + " 'you got too many number in your phone',\n", + " 'but i got to many numbers in my phone',\n", + " '그래도 same same으로 칠 순 없어',\n", + " '난 이기적이야, baby',\n", + " '아예 전화기를 꺼놔, yeah, yeah',\n", + " '나보다 나은 놈이 없어, 질투가 아니라',\n", + " '네 시간을 아껴주는거야, yeah, baby',\n", + " 'who’s gon’ love you',\n", + " 'the way that i do',\n", + " 'no one no one no one',\n", + " '설명할 수 없지만',\n", + " 'baby i’m telling you, yeah',\n", + " 'baby i’m telling you, yeah',\n", + " 'like it’s new beginning',\n", + " '다 지워버려도 문제는 생기지않아, in my opinion',\n", + " '다른 새끼들은 쓸모가 없어',\n", + " 'yeah, cause they all fucked up',\n", + " \"i'mma only real one on the come up\",\n", + " '나를 사랑하면 넌 더 떳떳해질 수 있어',\n", + " 'yeah, first thing first',\n", + " 'yeah, let you know what’s wrong',\n", + " 'you got too many numbers in your phone',\n", + " 'you got too many numbers in your phone',\n", + " '너는 몰라, where to call (where to call)',\n", + " '너는 몰라, where to go (where to go)',\n", + " 'yeah, 연락이 올 땐 씹어버려 전부',\n", + " '연락이 오기 전에 지워버려 전부',\n", + " 'cause you got too many numbers in your phone',\n", + " '전부 지워버려 내 번호 말곤',\n", + " 'romanization',\n", + " 'you got too many numbers',\n", + " 'in your phone',\n", + " 'you got too many numbers',\n", + " 'in your phone',\n", + " 'neoneun molla where to call',\n", + " 'neoneun molla where to go',\n", + " 'yeonragi ol ttaen ssibeobeoryeo jeonbu',\n", + " 'yeonragi ogi jeone jiwobeoryeo jeonbu',\n", + " 'cause you got too many numbers',\n", + " 'in your phone',\n", + " 'jeonbu jiwobeoryeo nae beonho malgon',\n", + " 'like it’s new beginning',\n", + " 'da jiwobeoryeodo munjeneun saenggijianha',\n", + " 'in my opinion',\n", + " 'dareun saekkideureun sseulmoga eopseo',\n", + " 'yeah cause they all fucked up',\n", + " 'imma only real one on the come up',\n", + " 'nareul saranghamyeon neon deo',\n", + " 'tteostteoshaejil su isseo',\n", + " 'yeah first thing first',\n", + " 'yeah let you know what’s wrong',\n", + " 'you got too many numbers',\n", + " 'in your phone',\n", + " 'you got too many numbers',\n", + " 'in your phone',\n", + " 'neoneun molla where to call',\n", + " 'neoneun molla where to go',\n", + " 'yeonragi ol ttaen ssibeobeoryeo jeonbu',\n", + " 'yeonragi ogi jeone jiwobeoryeo jeonbu',\n", + " 'cause you got too many numbers',\n", + " 'in your phone',\n", + " 'jeonbu jiwobeoryeo nae beonho malgon',\n", + " 'you got too many number',\n", + " 'in your phone',\n", + " 'but i got to many numbers',\n", + " 'in my phone',\n", + " 'geuraedo same sameeuro chil sun eopseo',\n", + " 'nan igijeogiya baby',\n", + " 'aye jeonhwagireul kkeonwa yeah yeah',\n", + " 'naboda naeun nomi eopseo',\n", + " 'jiltuga anira ne',\n", + " 'siganeul akkyeojuneungeoya yeah baby',\n", + " 'who’s gon’ love you',\n", + " 'the way that i do',\n", + " 'no one no one no one',\n", + " 'seolmyeonghal su eopsjiman',\n", + " 'baby i’m telling you yeah',\n", + " 'baby i’m telling you yeah',\n", + " 'like it’s new beginning',\n", + " 'da jiwobeoryeodo munjeneun saenggijianha',\n", + " 'in my opinion',\n", + " 'dareun saekkideureun sseulmoga eopseo',\n", + " 'yeah cause they all fucked up',\n", + " 'imma only real one on the come up',\n", + " 'nareul saranghamyeon neon deo',\n", + " 'tteostteoshaejil su isseo',\n", + " 'yeah first thing first',\n", + " 'yeah let you know what’s wrong',\n", + " 'you got too many numbers',\n", + " 'in your phone',\n", + " 'you got too many numbers',\n", + " 'in your phone',\n", + " 'neoneun molla where to call',\n", + " 'neoneun molla where to go',\n", + " 'yeonragi ol ttaen ssibeobeoryeo jeonbu',\n", + " 'yeonragi ogi jeone jiwobeoryeo jeonbu',\n", + " 'cause you got too many numbers',\n", + " 'in your phone',\n", + " 'jeonbu jiwobeoryeo nae beonho malgon',\n", + " 'paroles de mobydick \"supermoutcho\"',\n", + " 'سوبر موتشو',\n", + " 'أشد من العين, أقوى من الشلولو',\n", + " 'كسبروفي الحطة, الصقر, أبو الروبلة',\n", + " 'أخف من البرق, أقصح من لاموزيك',\n", + " 'الرجل الذي يساوي ضعف ثمنه, انه',\n", + " \"l'moutchou code einstein jouj 39ola fwa7ed\",\n", + " \"ness choufa 3endi jayba l'plan, 7di m3a la feinte\",\n", + " 'ta debban nchedou byidi w3eyni mghemda',\n", + " 'kharej liha nichan wakha tjib jackie chan, nfar3o bla mda',\n", + " 'b claque wa7ed 9atel van damme, w jet li 3elle9',\n", + " 'maja ydour ta khebtato lbelgha diali lwejho, ma9 ba9, mermela9',\n", + " 'ghi 3yet lia la chi wa7ed ja w3lik 3a9',\n", + " \"nteb3o lderbo mnin ja, l'black ninja\",\n", + " \"choufa d'nser, li jani face nmchi bmo fdess minjara\",\n", + " 'chfinja, mtrini foug l3afia, msini m3a la mafia',\n", + " 'ghir ila bghitini nadini bipini ga3 w njik',\n", + " 'khef men titsuite fhemtini',\n", + " \"sintifinti l'code dima wade7 bin 3ini\",\n", + " 'james bond 7daya tilmid',\n", + " 'lmiri mayzhe9 kolchi jaybo maths',\n", + " 'ghalat icha3a lartakebto d3ti assat',\n", + " \"sabatiro w aka supermoutcho l'flash\",\n", + " 'men foug sa3ada 7adi rbat bach maytrach tchach wsafi',\n", + " 'supermoutcho ja, supermoutcho tar',\n", + " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", + " 'supermoutcho ja, supermoutcho tar',\n", + " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", + " 'supermoutcho ja, supermoutcho tar',\n", + " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", + " 'supermoutcho ja, supermoutcho tar',\n", + " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", + " '60 passeports, 60 comptes, 60 jinsia',\n", + " 'f koula blad 3endi wlia, w 7ta men haifa tay7a fia',\n", + " '3endi villa ged sekht west napoli wtanya f paris',\n", + " 'wfaytli cha9m angelina jolie, ba9a ldaba tbipi fia appel anonyme',\n", + " 'ghir nch9amha bent 3aycha west chhi9 wlebka',\n", + " 'messkina me chkat, bghat supermoutcho bayta thellel',\n", + " '3arfatni 3endi 3dem tiw bel hend mchellel',\n", + " 'mkelemha finma mchit, lmoutchou m3elem kayskivi da9',\n", + " 'b 9ent wa7ed gad nefre9, f ness bab men l7did che9',\n", + " 'kung fu muaythai king of ninja banzai',\n", + " 'street fighters alpha 3 khay , flying high, chlada',\n", + " 'bruce lee nad men l9ber wtrina bia west kala la ga3 les kata',\n", + " 'wellit b7al khaylo tab3o',\n", + " 'gad ne9ez men alkhouzayrat wn9is espania wnefs 9at3o',\n", + " 'meliou7 3echra metro mboumbi foug lbach',\n", + " 'wagf foug twin w7adi lblad bach maytach tchach wsafi',\n", + " 'supermoutcho ja, supermoutcho tar',\n", + " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", + " 'supermoutcho ja, supermoutcho tar',\n", + " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", + " 'supermoutcho ja, supermoutcho tar',\n", + " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", + " 'supermoutcho ja, supermoutcho tar',\n", + " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", + " 'makayench tnemnim 3endi lwednin madyin',\n", + " 'ga3 lbakhachich mytin, baygon',\n", + " '3endi téléphone chad bih satellite wgad ntiri fga3 lbakhachich, baygon',\n", + " \"l3dou jaybo l'as dos wakha fdlam tiban lblan wkolchi na3es kideban, baygon\",\n", + " 'supermoutcho rajolo l3adala b7al lboulissi nsali lcombat wakha ykoun demi yssil, baygon',\n", + " \"jarima ghi tchoufouha lmoutchou arajolo l'3ankabout ytiri fbouha, baygon\",\n", + " 'supermoutcho fog chok titir k7az balak 3endak yji chi 7ed yfok, baygon',\n", + " '7yat le3do chada fkhit choufa 3endi net taye7 kter men nayed kolchi dayekh, baygon',\n", + " \"l3dou f 3ini ki l3abit mor l'mountif dima chayef w7adi rit, baygon\",\n", + " 'li bghaw ydirou lia lfekh mchaw dbaba l3dou ychoufni ygoul miao, baygon',\n", + " 'super meghribi kan mkhebe3 wla mekchouf kolchi mehtouf kolchi merchoch, baygon',\n", + " 'b baygon',\n", + " 'supermoutcho ja, supermoutcho tar',\n", + " \"supermoutcho terra 3la ga3 lbakhakhich, b'baygon\",\n", + " 'طلع يوم جديد وراح سوبر موتشو الى النوم راكضا',\n", + " 'بعدما حارب الاشرار والاعداء ثم البخاشيش',\n", + " 'فلا تنسوا يا اصدقائي, سوبر موتشو يسهر على راحتكم',\n", + " 'ودائما في خدمة الحق والعدالة',\n", + " 'لنا عودة معه في الحلقة القادمة']},\n", + " 'rock': {'meta': {'train_data': ['ueuone drucorigin',\n", + " 'auios auiettos, auios auiei',\n", + " 'mantrat-io ulatin',\n", + " 'auios auiettos',\n", + " 'mantrat-io ulatin',\n", + " 'auios auiei',\n", + " 'doaxte in bretannoi rigion',\n", + " 'auios auiettos, auios auiei',\n", + " 'belorigos argantios',\n", + " 'auios auiettos',\n", + " 'belorigos argantios',\n", + " 'auios auiei',\n", + " 'comanxte mercin rigos',\n", + " 'auios auiettos, auios auiei',\n", + " 'siraxta gabesse',\n", + " 'auios auiettos',\n", + " 'siraxta gabesse',\n", + " 'auios auiei',\n", + " 'sin cecantont uidlui',\n", + " 'in cantlobi senauon',\n", + " 'in the west he rose',\n", + " 'the high king from antumnos',\n", + " 'with a high queen',\n", + " 'noble daughter of bretannos',\n", + " 'their first born son, lo, the sovereign celtos',\n", + " 'the world marveled at the offspring of the antumnos',\n", + " 'uiors benape bisiomos',\n", + " 'auios auiettos, auios auiei',\n", + " 'bie matir mouon mapon',\n", + " 'auios auiettos',\n", + " 'bie matir mouon mapon',\n", + " 'auios auiei',\n", + " 'gegnetro eobon mapos',\n", + " 'auios auiettos, auios auiei',\n", + " 'iaccousassos aurios',\n", + " 'auios auiettos',\n", + " 'iaccousassos aurios',\n", + " 'auios auiei',\n", + " 'in the west he rose',\n", + " 'the high king from antumnos',\n", + " 'with a high queen',\n", + " 'noble daughter of bretannos',\n", + " 'their first born son, lo, the sovereign celtos',\n", + " 'the world marveled at the offspring of the antumnos',\n", + " 'sin cecantont uidlui',\n", + " 'tre panpe aisson',\n", + " 'bou uassoi anuan celtos',\n", + " 'auios auiettos, auios auiei',\n", + " 'maras boudas doaxte eu',\n", + " 'auios auiettos',\n", + " 'maras boudas doaxte eu',\n", + " 'auios auiei',\n", + " 'eddi-jo atir cenetli',\n", + " 'auios auiettos',\n", + " 'eddi-jo atir cenetli',\n", + " 'auios auiei',\n", + " 'in the west, he rose, the high king from antumnos',\n", + " 'with a high queen, noble daughter of bretannos',\n", + " 'their first born son, lo, the sovereign celtos',\n", + " 'the world marveled at the offspring of the antumnos',\n", + " 'in the west, he rose, the high king from antumnos',\n", + " 'with a high queen, noble daughter of bretannos',\n", + " 'their first born son, lo, the sovereign celtos',\n", + " 'the world marveled at the offspring of the antumnos',\n", + " 'tumorous parenchyma contains pus',\n", + " 'boils, pimples and festering pores',\n", + " 'pseudotumours on anal tract',\n", + " 'purulence in carbuncles and furuncles',\n", + " 'parasitical cysts into urethra',\n", + " 'chapped soles by scabs and pustules',\n", + " 'septic atrophy with benign tumours',\n", + " \"myxoma's stroma full of phlegms\",\n", + " 'ulcerous neoplasms on the pubis',\n", + " 'proliferation of fibroma in mandible',\n", + " 'defect of osteoma in verrucose clunis',\n", + " 'inflammatory lipoma of parotid gland',\n", + " 'quantum of mucus in pathogenic warts',\n", + " 'haemangioma cavernosum of tongue',\n", + " 'malignant blastoma of ovaries',\n", + " 'sarcoma osteogenes of facial skeleton',\n", + " 'haemorrhage and suppuration of metastases',\n", + " 'exulceration of the carcinoma of appendix',\n", + " 'necrosis of infectious cervical nodules',\n", + " 'terminal stage of granuloma gangraenescens',\n", + " 'delaceration',\n", + " 'amputation',\n", + " 'mutilation',\n", + " 'anatomization',\n", + " 'decimation',\n", + " 'victimization',\n", + " 'brutalization',\n", + " 'humiliation',\n", + " 'annihilation',\n", + " 'damnification',\n", + " 'degredation',\n", + " 'dehumanization',\n", + " 'hipsters and posers i abhor',\n", + " \"welcome to the thrasher's abattoir\",\n", + " 'detruncation',\n", + " 'termination',\n", + " 'with no sedation',\n", + " 'emasculation',\n", + " 'terrorization',\n", + " 'extermination',\n", + " 'this means total w.a.r',\n", + " 'welcome to absolute poserslaught',\n", + " 'die...time to die...die in pain',\n", + " 'die...time to die...die in pain',\n", + " 'die...time to die...die in pain',\n", + " 'time to die',\n", + " 'strangulation',\n", + " 'suffocation',\n", + " 'mutilation',\n", + " 'asphyxiation',\n", + " 'immolation',\n", + " 'victimization',\n", + " 'brutalization',\n", + " 'mortification',\n", + " 'annihilation',\n", + " 'exsanguination',\n", + " 'dehumanization',\n", + " 'welcome to the',\n", + " \"thrasher's abattoir\",\n", + " 'unfleshed aseity',\n", + " 'humincubation nystagmus praxis',\n", + " 'fissured laconic transfixions transfix',\n", + " 'emeticised lacerations threnodise',\n", + " 'noumenom entified dearth obscuration',\n", + " 'obsidian illumination iatrogenesis',\n", + " 'aphorism nil',\n", + " 'vis divina',\n", + " 'lumen animae',\n", + " 'vis divina',\n", + " 'signum vitae',\n", + " 'vis, vis divina est lucem animae',\n", + " 'vis, vis divina est signum vitae',\n", + " 'vis, vis divina est lucem animae',\n", + " 'vis, vis divina est mater amoris',\n", + " 'divine strength',\n", + " 'light of the soul',\n", + " 'divine strength',\n", + " 'sign of life',\n", + " 'strength, divine strength is the light of the soul',\n", + " 'strength, divine strength is a sign of life',\n", + " 'strength, divine strength is the light of the soul',\n", + " 'strength, divine strength is the mother of love',\n", + " 'bacterial virus into corpus',\n", + " 'cutaneous mycosis by moulds',\n", + " 'organism contaminated by microbes',\n", + " 'malaria, dysentery by protozoa',\n", + " 'flagellates, amoebae, infusoria',\n", + " 'parasitized vermes',\n", + " 'helminths inside apparatus',\n", + " 'burrowed trematodes',\n", + " 'morbidity by bilharzia',\n", + " 'taenia extruded hook',\n", + " 'cluster of ascarides',\n", + " 'incubation of infestants',\n", + " 'posterior with pinworms',\n", + " 'hookworm into mucosa',\n", + " 'digestive tube with echinococcus',\n", + " 'mites into bile duct',\n", + " 'ganglia full of filariae',\n", + " 'tumefaction of lower extremities',\n", + " 'bedbugs, lice and heteroptera',\n", + " 'crab lousiness of pubes',\n", + " 'itch exanthema',\n", + " 'tick inflammations',\n", + " 'sucking leech',\n", + " 'flea bite into human host',\n", + " 'stomoxys larvae from dung',\n", + " 'trachea with bluebottle ovula',\n", + " 'lucilia carnivorous nymphs',\n", + " 'vital bots into flesh',\n", + " 'pupae in flowing secreta',\n", + " 'tse tse fly on the eyeball',\n", + " 'sinistro cerebral myiasis',\n", + " 'venomous spidery arthropoda',\n", + " 'tarantula and black widow',\n", + " 'paralysis by scorpion',\n", + " 'collapse of man',\n", + " 'poka zemlya esche vertitsya',\n", + " 'poka esche yarok svet',\n", + " 'gospodi, day zhe tyi kazhdomu',\n", + " 'chego u nego net:',\n", + " 'umnomu day golovu',\n", + " 'truslivomu day konya',\n", + " 'day schastlivomu deneg',\n", + " 'i ne zabud pro menya',\n", + " 'poka zemlya esche vertitsya',\n", + " 'gospodi, tvoya vlast!',\n", + " 'day rvuschemusya k vlasti',\n", + " 'navlastvovatsya vslast',\n", + " 'day peredyishku schedromu',\n", + " 'hot do ishoda dnya',\n", + " 'kainu day raskayanie',\n", + " 'i ne zabud pro menya',\n", + " 'ya veryu: tyi vse umeesh',\n", + " 'ya veruyu v mudrost tvoyu',\n", + " 'kak verit soldat ubityiy',\n", + " 'chto on prozhivaet v rayu',\n", + " 'kak verit kazhdoe uho',\n", + " 'tihim recham tvoim',\n", + " 'kak veruem i myi sami',\n", + " 'ne vedaya, chto tvorim!',\n", + " 'gospodi moy bozhe',\n", + " 'zelenoglazyiy moy!',\n", + " 'poka zemlya esche vertitsya',\n", + " 'i eto ey stranno samoy',\n", + " 'poka ey esche hvataet',\n", + " 'vremeni i ognya',\n", + " 'day zhe tyi vsem ponemnogu',\n", + " 'i ne zabud pro menya',\n", + " 'day zhe tyi vsem ponemnogu',\n", + " 'i ne zabud pro menya',\n", + " 'bloody hypertrophy of papillae spewing urethritis like urticaria',\n", + " 'septicaemia filled dermis scorched by acidic uric nocturia',\n", + " 'verrucose urethra',\n", + " 'glutenous condyloma',\n", + " 'ureterocoeles excreting warm, decaying, cystic pemphigus',\n", + " 'gnawing at flesh with rancid uraturial lust',\n", + " 'internalized conflict externalized as war',\n", + " 'hymning thy rebellion lucifer morning star',\n", + " 'bringer of light, forever shrouded by night',\n", + " 'i am hell, a sulphurous lake of fire and suffering',\n", + " 'my blackened heart is a writhing mass of poisonous snakes',\n", + " 'grotesquely slithering as i slowly shed my dying skin',\n", + " 'in darkness',\n", + " 'thou shalt come unto me',\n", + " 'in darkness',\n", + " 'thou shalt worship me',\n", + " 'in darkness',\n", + " 'thou art mine eternally',\n", + " 'thy curse',\n", + " 'all of my lies',\n", + " 'be blessed',\n", + " 'lord of the flies',\n", + " 'scapegoat',\n", + " 'shunned and despised',\n", + " 'my church is my sacrifice',\n", + " 'follow after me into the halls of my damnation',\n", + " 'i wield death like a scythe, reaping annihilation',\n", + " 'a monarch enthroned upon my throne of guilt',\n", + " 'i am hell, a barren shrine to decay and neglect',\n", + " 'uninhabitable, the darkened depths of cold empty space',\n", + " 'my necropolis, the catacombs and tombs of disease',\n", + " 'monumental, the fallen temple of dead deities',\n", + " 'my necrolog, an eternal curse lost in the abyss',\n", + " 'in darkness',\n", + " 'thou shalt come unto me',\n", + " 'in darkness',\n", + " 'thou shalt worship me',\n", + " 'in darkness',\n", + " 'thou art mine eternally',\n", + " 'rise',\n", + " 'synagoga satanae',\n", + " 'lies',\n", + " 'lucifuge rofocale',\n", + " 'rise',\n", + " 'synagoga satanae',\n", + " 'lies',\n", + " 'lucifuge rofocale',\n", + " 'absoluter höllenzwang',\n", + " 'mein infernaler opfergang',\n", + " 'ein auferstanden ungetier',\n", + " 'festgenagelt tief in mir',\n", + " 'et vidi de mare bestiam ascendentem',\n", + " 'habentem capita septem et cornua decem',\n", + " 'et super cornua eius decem diademata et super capita eius nomina blasphemiae',\n", + " 'ich allein bin mein',\n", + " 'ein nichts',\n", + " 'verdorben mein name',\n", + " 'mein leid mein reich',\n", + " 'mein wille mein fluch',\n", + " 'über mich und außer mir',\n", + " 'täglich hungert mein leib',\n", + " 'und dürstet meine seele aufs neue',\n", + " 'ich trage die schuld',\n", + " 'wie ich ertrage die beschuldigungen',\n", + " 'ich bin in versuchung',\n", + " 'und kenne keine erlösung',\n", + " 'denn mein ist das leid',\n", + " 'die wut',\n", + " 'und das streben',\n", + " 'bis zum tod',\n", + " 'amen',\n", + " 'bow down before thy lord below',\n", + " 'bow down before thy lord below',\n", + " 'i shall rise, i shall rule in blasphemy',\n", + " 'and in the end when thou art mine thou will be like me',\n", + " 'in saecula saeculorum',\n", + " 'in stagnum ignis et sulphuris',\n", + " 'in darkness',\n", + " 'thou shalt come unto me',\n", + " 'in darkness',\n", + " 'thou shalt worship me',\n", + " 'in darkness',\n", + " 'thou art mine eternally',\n", + " '\"if we have no peace, it is because we have forgotten that we belong to each other\"',\n", + " '(-mother teresa (1910-1997)-)',\n", + " 'i: codex nemesis alpha omega',\n", + " '\"veni, creator spiritus',\n", + " 'et lumina animam mortali mundi',\n", + " 'ex dolore meo, nunc et semper',\n", + " 'ad splendorem angeli triumphantis.\"',\n", + " 'ii: symphonia ignis divinus (the quantum gate revealed)',\n", + " 'suspiria angeli, lamenta domini',\n", + " \"tempesta di fuoco che sconvolgi l'anima\",\n", + " 'cruciatus angeli, vulnera domini',\n", + " \"consegna all'oblio le scorie del tempo\",\n", + " 'son of a lost superior world',\n", + " \"once i claimed the grace of god and the angels' mortal dawn\",\n", + " \"the red sea is bleeding hate, the volcano's screaming rage\",\n", + " \"it's the archangel hit and downed, moving oceans, shaking grounds\",\n", + " \"the red sea is bleeding hate, the volcano's screaming rage\",\n", + " \"it's the archangel hit and downed, moving oceans, shaking grounds\",\n", + " 'may i shine in the empyrean light',\n", + " \"through my eye of amethyst i'll see\",\n", + " 'draco magnus est proiectus',\n", + " 'draco ille serpens antiquus',\n", + " 'qui seducit universum',\n", + " 'orbem proiectus et in terram',\n", + " 'draco magnus est proiectus',\n", + " 'draco ille serpens antiquus',\n", + " 'qui seducit universum',\n", + " 'orbem proiectus et in terram',\n", + " 'et audivi vocem magnam',\n", + " 'vox in caelo nunc dicentem',\n", + " 'facta est virtus dei nostri regnum',\n", + " 'sancte michael archangele',\n", + " 'princeps militiae caelestis',\n", + " 'malum nunc detrude, sancte michael',\n", + " 'viri sanguinum',\n", + " 'codex nemesis',\n", + " 'veni archangelus',\n", + " 'in dolore meo tu eri et tu es',\n", + " 'viri sanguinum',\n", + " 'codex nemesis',\n", + " 'veni archangelus',\n", + " 'in dolore meo tu eri et tu es',\n", + " 'suspiria angeli, lamenta domini',\n", + " 'la rotta perduta di un cuore ormai naufrago',\n", + " 'cruciatus angeli, vulnera domini',\n", + " \"l'antico furore che sfida il peccato\",\n", + " 'son of a lost superior world',\n", + " \"once i claimed the grace of god and the angels' mortal dawn\",\n", + " \"crossing the tornado's eye to the akashic radiant might\",\n", + " 'in the matrix coded sky, chaos is fed by his new cry',\n", + " \"crossing the tornado's eye to the akashic radiant might\",\n", + " 'in the matrix coded sky, chaos is fed by his new cry',\n", + " 'may i shine in the empyrean light',\n", + " \"through my eye of amethyst i'll see\",\n", + " 'draco magnus est proiectus',\n", + " 'draco ille serpens antiquus',\n", + " 'qui seducit universum',\n", + " 'orbem proiectus et in terram',\n", + " 'draco magnus est proiectus',\n", + " 'draco ille serpens antiquus',\n", + " 'qui seducit universum',\n", + " 'orbem proiectus et in terram',\n", + " 'et audivi vocem magnam',\n", + " 'vox in caelo nunc dicentem',\n", + " 'facta est virtus dei nostri regnum',\n", + " 'sancte michael archangele',\n", + " 'princeps militiae caelestis',\n", + " 'malum nunc detrude, sancte michael',\n", + " 'viri sanguinum',\n", + " 'codex nemesis',\n", + " 'veni archangelus',\n", + " 'in dolore meo tu eri et tu es',\n", + " 'viri sanguinum',\n", + " 'codex nemesis',\n", + " 'veni archangelus',\n", + " 'in dolore meo tu eri et tu es',\n", + " 'iii: the astral convergence',\n", + " '(instrumental)',\n", + " 'iv: the divine fire of the archangel',\n", + " '(sacrum ignis)',\n", + " 'one hidden voice revealed to me:',\n", + " '(fatum)',\n", + " '\"you cannot wear a mortal skin',\n", + " '(fervor ignis ardor)',\n", + " 'you cannot lie, you can\\'t deny the reason why you are alive.\"',\n", + " 'my angels, feed my soul and reign supreme',\n", + " '(ignis sacrum)',\n", + " 'i close my eyes, i feel your hand',\n", + " '(fatum)',\n", + " \"to quantum oceans we'll ascend\",\n", + " '(ignis fervor ardor)',\n", + " 'my genesis, your nemesis',\n", + " \"beyond the stars we'll live again\",\n", + " 'my angels, feed my soul and reign supreme',\n", + " 'reign supreme',\n", + " 'draco magnus est proiectus',\n", + " 'draco ille serpens antiquus',\n", + " 'qui seducit universum',\n", + " 'orbem proiectus et in terram',\n", + " 'draco magnus est proiectus',\n", + " 'draco ille serpens antiquus',\n", + " 'qui seducit universum',\n", + " 'orbem proiectus et in terram',\n", + " 'et audivi vocem magnam',\n", + " 'vox in caelo nunc dicentem',\n", + " 'facta est virtus dei nostri regnum',\n", + " 'sancte michael archangele',\n", + " 'princeps militiae caelestis',\n", + " 'malum nunc detrude, sancte michael',\n", + " 'viri sanguinum',\n", + " 'codex nemesis',\n", + " 'veni archangelus',\n", + " 'in dolore meo tu eri et tu es',\n", + " 'viri sanguinum',\n", + " 'codex nemesis',\n", + " 'veni archangelus',\n", + " 'in dolore meo tu eri et tu es',\n", + " 'viri sanguinum',\n", + " 'codex nemesis',\n", + " 'veni archangelus',\n", + " 'in dolore meo tu eri et tu es',\n", + " 'viri sanguinum',\n", + " 'codex nemesis',\n", + " 'veni archangelus',\n", + " 'in dolore meo tu eri et tu es',\n", + " 'v: of psyche & archetypes (system overloaded)',\n", + " '\"alpha omega, matrix corpus',\n", + " 'fiat in me divina veritas',\n", + " 'ad splendorem angeli triumphantis.\"',\n", + " 'alpha foetus, incarnatus, matrix corpus',\n", + " 'dogma, immortalis revelatio',\n", + " 'alpha foetus, codex magnus, matrix corpus',\n", + " 'neo multiversalis revelatio',\n", + " 'alpha foetus, incarnatus, matrix corpus',\n", + " 'dogma, immortalis revelatio',\n", + " 'alpha foetus, codex magnus, matrix corpus',\n", + " 'neo multiversalis revelatio',\n", + " 'neural zone',\n", + " 'fractal seed of resonance',\n", + " 'new binaural frequency',\n", + " 'energetic stream of power',\n", + " 'soul gate',\n", + " 'telepathic contact',\n", + " \"qi's magnetic portal\",\n", + " 'to unloch the orgone state',\n", + " 'altered cells implosion',\n", + " 'new perception of higher self',\n", + " 'quantum nexus',\n", + " 'nuclear fire',\n", + " 'humans cyborgs',\n", + " 'gods and titans',\n", + " 'neo genetic',\n", + " 'motus karma',\n", + " 'alien foetus',\n", + " 'matrix corpus',\n", + " 'quantum fire',\n", + " 'humans titans',\n", + " 'novus motus',\n", + " 'alien corpus',\n", + " 'alpha ignis',\n", + " 'signum astralis',\n", + " 'flamma omega',\n", + " 'multiversalis',\n", + " 'alpha ignis',\n", + " 'signum astralis',\n", + " 'domin eius',\n", + " 'prometheus',\n", + " 'exodus to organic symmetry',\n", + " 'astral pole of consciousness',\n", + " 'paradox of waves behavior',\n", + " 'embryo of a newborn starchild',\n", + " 'destined to soon carry',\n", + " 'all the weight of atlas woe',\n", + " 'alpha code expanding',\n", + " 'cloned sons rising',\n", + " 'prometheus',\n", + " 'quantum nexus',\n", + " 'nuclear fire',\n", + " 'humans cyborgs',\n", + " 'gods and titans',\n", + " 'neo genetic',\n", + " 'motus karma',\n", + " 'alien foetus',\n", + " 'matrix corpus',\n", + " 'quantum fire',\n", + " 'humans titans',\n", + " 'novus motus',\n", + " 'alien corpus',\n", + " 'alpha ignis',\n", + " 'signum astralis',\n", + " 'flamma omega',\n", + " 'multiversalis',\n", + " 'alpha ignis',\n", + " 'signum astralis',\n", + " 'domin eius',\n", + " 'prometheus',\n", + " 'quantum nexus',\n", + " 'nuclear fire',\n", + " 'humans cyborgs',\n", + " 'gods and titans',\n", + " 'neo genetic',\n", + " 'motus karma',\n", + " 'alien foetus',\n", + " 'matrix corpus',\n", + " 'quantum fire',\n", + " 'humans titans',\n", + " 'novus motus',\n", + " 'alien corpus',\n", + " 'alpha ignis',\n", + " 'signum astralis',\n", + " 'flamma omega',\n", + " 'multiversalis',\n", + " 'alpha ignis',\n", + " 'signum astralis',\n", + " 'domin eius',\n", + " 'prometheus',\n", + " 'alpha ignis',\n", + " 'signum astralis',\n", + " 'flamma omega',\n", + " 'multiversalis',\n", + " 'alpha ignis',\n", + " 'signum astralis',\n", + " 'domin eius',\n", + " 'prometheus',\n", + " 'brivido amaro or piega il fiero volto',\n", + " \"tersa paura al suo levar l'occhio si' stanco\",\n", + " 'fredda visione dal mondo dimenticata',\n", + " \"antica porta ch'al morto sol al vero mal conduce\",\n", + " 'har-kuun!',\n", + " 'seven black towers tearing the skies',\n", + " \"seven the guardians of the underworld's night\",\n", + " 'archways of dark stone, mad gothic maze',\n", + " 'unholy fortress built on anger and hate',\n", + " 'over majestic peaks',\n", + " 'we hail the fallen kings',\n", + " 'great warriors born to win',\n", + " 'celestial blazing steel',\n", + " 'millions of swords and shields',\n", + " 'flaming the coldest wind',\n", + " 'dark gate, primordial sin',\n", + " 'black legends now revealed',\n", + " 'solo',\n", + " 'transcending vision',\n", + " 'ancestral madness',\n", + " 'chaos and oblivion',\n", + " 'gateway to hell',\n", + " 'transcending vision',\n", + " 'ancestral madness',\n", + " 'chaos and oblivion',\n", + " 'gateway to hell',\n", + " \"all'ignoto va il lor sguardo\",\n", + " 'piange il cuore il negato',\n", + " \"nell'oblio di un rimpianto\",\n", + " \"sferza l'ombra il suo passato\",\n", + " 'ruins of mighty evil',\n", + " 'asking for new splendor',\n", + " \"cosmic hell's dominion\",\n", + " \"nekron's resurrection\",\n", + " 'ruins of mighty evil',\n", + " 'asking for new splendor',\n", + " \"cosmic hell's dominion\",\n", + " \"nekron's resurrection\",\n", + " '…',\n", + " 'burn the skies of gods and angels',\n", + " 'flames of force divine',\n", + " 'the great call of shining heavens',\n", + " 'storms the walls of kron',\n", + " 'the ancient fires of har-kuun',\n", + " 'the ancient fires of har-kuun',\n", + " 'har-kuun, har-kuun',\n", + " 'chorus:',\n", + " 'illuminati sumus',\n", + " 'adhus divinitus',\n", + " 'praeditio maledictum',\n", + " 'infernus rex foedus',\n", + " 'hibernus tempus anni',\n", + " 'ventorum furia',\n", + " 'obscuritas naturae',\n", + " 'aeterna tenebra',\n", + " 'illuminati sumus',\n", + " 'adhus divinitus',\n", + " 'praeditio maledictum',\n", + " 'infernus rex foedus',\n", + " 'hibernus tempus anni',\n", + " 'ventorum furia',\n", + " 'obscuritas naturae',\n", + " 'aeterna tenebra',\n", + " 'eterno fuoco ancor vivo ed or pulsante',\n", + " 'pietra opaca di ruvido spento riflesso',\n", + " 'morte, tormento, rovina di sangue ed odio',\n", + " 'pena, dolore, o gotico cuor di lamento e pianto',\n", + " 'har-kuun!',\n", + " 'sad tales forgotten, mysterious for most',\n", + " 'now are revealing all their dangerous words',\n", + " 'another dark entrance, another dark gate',\n", + " 'true gothic nightmare, an infernal descent',\n", + " 'over majestic peaks',\n", + " 'we hail the fallen kings',\n", + " 'great warriors born to win',\n", + " 'celestial blazing steel',\n", + " 'millions of swords and shields',\n", + " 'flaming the coldest wind',\n", + " 'dark gate, primordial sin',\n", + " 'black legends now revealed',\n", + " 'solo',\n", + " 'infinite shadows',\n", + " 'cosmic damnation',\n", + " 'dark reign of terror',\n", + " 'evil reborn',\n", + " 'infinite shadows',\n", + " 'cosmic damnation',\n", + " 'dark reign of terror',\n", + " 'evil reborn',\n", + " 'nel suo infido lamento',\n", + " 'un segreto ferma il passo',\n", + " \"se nel calice e' versato\",\n", + " 'rima el sangue del dannato',\n", + " 'ruins of mighty evil',\n", + " 'asking for new splendor',\n", + " \"cosmic hell's dominion\",\n", + " \"nekron's resurrection\",\n", + " 'ruins of mighty evil',\n", + " 'asking for new splendor',\n", + " \"cosmic hell's dominion\",\n", + " \"nekron's resurrection\",\n", + " '…',\n", + " 'burn the skies of gods and angels',\n", + " 'flames of force divine',\n", + " 'the great call of shining heavens',\n", + " 'storms the walls of kron',\n", + " 'the ancient fires of har-kuun',\n", + " 'the ancient fires of har-kuun',\n", + " 'har-kuun, har-kuun',\n", + " 'chorus:',\n", + " 'illuminati sumus',\n", + " 'adhus divinitus',\n", + " 'praeditio maledictum',\n", + " 'infernus rex foedus',\n", + " 'hibernus tempus anni',\n", + " 'ventorum furia',\n", + " 'obscuritas naturae',\n", + " 'aeterna tenebra',\n", + " 'illuminati sumus',\n", + " 'adhus divinitus',\n", + " 'praeditio maledictum',\n", + " 'infernus rex foedus',\n", + " 'hibernus tempus anni',\n", + " 'ventorum furia',\n", + " 'obscuritas naturae',\n", + " 'aeterna tenebra',\n", + " 'solo',\n", + " 'aidus esti-io gnata uer axsin bitous uertassit in uextlon',\n", + " 'etic uextlon clouir',\n", + " 'garion sepimor, brater',\n", + " 'dligentes bisiomos',\n", + " 'deuinin budin ro-plecomos, brater',\n", + " 'age, rouraxsamos',\n", + " 'aritere tres rhenon dexsoui',\n", + " 'tres alpes epro-crabantes',\n", + " 'eriwedu arcipi',\n", + " 'laxsarin - uroncin beromos',\n", + " 'uodextes - adandamos',\n", + " 'emmos nis adgarion',\n", + " 'atisepitor silon antumni',\n", + " 'ansi cretimi, brater',\n", + " 'rata deuon beunti uer toutas gallias',\n", + " 'budi deuon, brater ulates blatouesant',\n", + " 'ecce dominus dissipabit terram:',\n", + " 'et nudabit eam, et affliget faciem ejus',\n", + " 'et disperget habitatores ejus',\n", + " 'for by fire and by his sword will the lord plead with all flesh',\n", + " 'but countless shall be the slain of man',\n", + " 'dissipatione dissipabitur terra, et direptione prædabitur;',\n", + " 'dominus enim locutus est verbum hoc',\n", + " 'for by fire and by his sword will the lord plead with all flesh',\n", + " 'but countless shall be the slain of man',\n", + " 'propter hoc maledictio vorabit terram',\n", + " 'et peccabunt habitatores ejus;',\n", + " 'ideoque insanient cultores ejus',\n", + " 'et relinquentur homines pauci',\n", + " 'for by fire and by his sword will the lord plead with all flesh',\n", + " 'but countless shall be the slain of man',\n", + " 'i kill you in the name',\n", + " 'and to the honor of lucifer',\n", + " 'helon, taul, varf, pan',\n", + " 'homonoreum, clemialh, sergueath, agla',\n", + " 'tetragrammaton, casely, scirin, lucifer',\n", + " 'lucifer, ouyar, chameron, aliseon',\n", + " 'mandousin, premy, orient, esmony',\n", + " 'eparinesont, estitot, dumosson, danochar',\n", + " 'casmiel, hayes, fabelleronthou',\n", + " 'sodomo, peatham, venite, lucifer',\n", + " 'amen',\n", + " 'okoshichatta ka na jaa choudo ii ya',\n", + " 'asa made tsukiatte yo',\n", + " 'mado no koori ga toke dasu koro ni wa kitto kaeru kara sa',\n", + " 'kodomotachi ni wa warui kedo kotoshi wa akiramete yo',\n", + " 'kore demo kanari mayotte zuibun to herashitan dakedo',\n", + " \"i'm santa claus kimi ni senko no purezento\",\n", + " 'doremo koremo yasumono nan dakedo',\n", + " 'santa claus ichinen ni ichido dake dakara',\n", + " 'santa claus kimi ni zenbu ageru yo',\n", + " 'aoi garasu dama ni bokura no bouken ga',\n", + " 'doko mademo tsuzuku you ni negai wo kaketoita',\n", + " \"i'm santa claus kimi ni senko no purezento\",\n", + " 'doremo koremo magaimo no dakedo',\n", + " 'santa claus ichinen ni ichido dake dakara',\n", + " 'santa claus kimi ni zenbu ageru yo',\n", + " \"you're the whole audience when i sing\",\n", + " \"you're all the listeners when i speak\",\n", + " \"you're everyone surrounds me\",\n", + " \"you're all that matters to me\",\n", + " 'mado no koori ga toke dasu koro ni wa kitto kaeru kara sa',\n", + " \"i'm santa claus boku ni saigo no purezento\",\n", + " 'santa claus owakare no kisu wo shite kure yo',\n", + " 'santa claus',\n", + " \"i've got to go back to the place i'm living in\",\n", + " \"i'm living in the cold place\",\n", + " \"nausea' evacuation\",\n", + " \"copremesis' defecation\",\n", + " 'digestive system full of excrements',\n", + " 'lacrimation with regurgitation of crap',\n", + " 'chronic disgorgement with constipation',\n", + " 'emesis by phlegmy chunk',\n", + " 'suffocation with deglutition of mucus',\n", + " 'spume on the maxilla with eructation',\n", + " 'spitting of saliva with expectoration',\n", + " 'delirium with convulsive emunction',\n", + " \"chyme's mixture on vomited bust\",\n", + " 'mucopurulent discharge on a clitoris',\n", + " 'mouldy impetigo on shaggy cunt',\n", + " 'faeces about oozing abscess',\n", + " 'strangulation of glans by prepuce',\n", + " 'pyorrhoea into obstructed salpinx',\n", + " \"spasm of scrotal sac' with urination\",\n", + " \"tits disfigured' by lichen and dartre\",\n", + " 'palpation of intumescent tonsils',\n", + " 'irritation of oesophagus by vomits',\n", + " \"sperm's clumps into pharyngal cavity\",\n", + " 'aspiration of sputa and spittles',\n", + " 'cacostomia with virulent sternutation',\n", + " 'stool and piss on a decubitus',\n", + " 'secretion of urinary calculus and semen',\n", + " 'corrupt taenia from diarrhoeal excretion',\n", + " 'brr brr!',\n", + " 'brr brr!',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'get-get-get-get low when the whistle go',\n", + " '(woo!)',\n", + " 'brr brr! (woo!)',\n", + " '(woo!)',\n", + " 'get-get-get low when the whistle go',\n", + " '(woo!)',\n", + " 'brr brr! (woo!)',\n", + " '(woo!)',\n", + " 'get-get-get low when the whistle go',\n", + " '(woo!)',\n", + " 'get-get-get get low (woo!)',\n", + " '(woo!)',\n", + " 'barbès, yalla habibi',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'get low, get-get-get low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'low low low low',\n", + " 'get-get-get-get low when the whistle go',\n", + " '(woo!)',\n", + " 'brr brr! (woo!)',\n", + " '(woo!)',\n", + " 'get-get-get low when the whistle go',\n", + " '(woo!)',\n", + " 'brr brr! (woo!)',\n", + " '(woo!)',\n", + " 'get-get-get get low',\n", + " 'low low low low',\n", + " 'low low low low... (woo!)',\n", + " 'get-get-get get low',\n", + " 'low low low low',\n", + " 'low low low low… (woo!)',\n", + " 'barbès, yalla habibi',\n", + " '(yalla habibi, yalla habibi',\n", + " 'yalla habibi, yalla habibi',\n", + " 'yalla habibi, yalla habibi)',\n", + " 'ambinata in siraxta',\n", + " 'cailon areuedons in nemesi',\n", + " 'satiion branon tosagiiet uo moudas',\n", + " 'samali gaison exetontin',\n", + " 'rete pos uoretun mapon celti',\n", + " 'con lami nertaci cerdacipe',\n", + " \"exete 'os brane exte 'os\",\n", + " \"etic laxsci 'os aidu laxsci 'os\",\n", + " 'etic toage gariion toage',\n", + " 'etic uregepe tunceton',\n", + " \"exete 'os brane exte 'os\",\n", + " \"etic laxsci 'os aidu laxsci 'os\",\n", + " 'etic toage gariion toage',\n", + " 'etic uregepe tunceton',\n", + " 'loux in aredubu, uregetiio tunceton',\n", + " 'cauaros uer agromagos etic bardos',\n", + " 'uer tenetin',\n", + " 'aidus laxscit in menuanbi',\n", + " 'suuidon',\n", + " 'druuis suuidbo etic lama cerdon papon',\n", + " 'tigerne trienepace',\n", + " 'lugu romeda silon',\n", + " 'antumni',\n", + " \"exete 'os brane exte 'os\",\n", + " \"etic laxsci 'os aidu laxsci 'os\",\n", + " 'etic toage gariion toage',\n", + " 'etic uregepe tunceton',\n", + " \"exete 'os brane exte 'os\",\n", + " \"etic laxsci 'os aidu laxsci 'os\",\n", + " 'etic toage gariion toage',\n", + " 'etic uregepe tunceton',\n", + " \"exete 'os brane exte 'os\",\n", + " \"etic laxsci 'os aidu laxsci 'os\",\n", + " 'etic toage gariion toage',\n", + " 'etic uregepe tunceton',\n", + " \"exete 'os brane exte 'os\",\n", + " \"etic laxsci 'os aidu laxsci 'os\",\n", + " 'etic toage gariion toage',\n", + " 'etic uregepe tunceton',\n", + " \"exete 'os brane exte 'os\",\n", + " \"etic laxsci 'os aidu laxsci 'os\",\n", + " 'etic toage gariion toage',\n", + " 'etic uregepe tunceton',\n", + " \"exete 'os brane exte 'os\",\n", + " \"etic laxsci 'os aidu laxsci 'os\",\n", + " 'etic toage gariion toage',\n", + " 'etic uregepe tunceton',\n", + " 'lechery during vaginal intercourse',\n", + " 'unconventional orgastic vulgarities',\n", + " 'necking with silicone boobs',\n", + " 'masochistic ligation of penis',\n", + " \"lesbian's cancer and varices\",\n", + " 'smegma on anal dildo',\n", + " 'unnatural gratification of fetishism',\n", + " \"masturbator's devourment of sperm\",\n", + " 'gerontophilic concubine for pornography',\n", + " \"homosexual's testicular grafting\",\n", + " 'orally excited reproductive instinct',\n", + " 'fellatio and cunnilinctus',\n", + " 'repulsion of gene mutation',\n", + " \"lilliputian's hormonal disturbance\",\n", + " 'individuum with all gonads',\n", + " 'metabolic aberration of hermaphrodite',\n", + " \"paedophile's pollution and meteorism\",\n", + " 'gagging of gigantean eunuch',\n", + " 'psoriatic pectus of transvestite',\n", + " 'sliminess and crabs on the buttocks',\n", + " 'moribund castrated necrophil',\n", + " 'sodomy and obscene incest',\n", + " 'deviated erection in sadism',\n", + " 'infamous coprophilia, mysophilia',\n", + " 'auto erotic lubrication of ass',\n", + " 'acquired immune deficiency syndrome',\n", + " 'ea! lindo illuvatar, lindo ea, pellia pellerin',\n", + " 'im menel im arda mano eru',\n", + " 'vilya, nar, nen, kemen lindo ea',\n", + " 'let it be! sing illuvatar. sing \"let it be\" beyond the void, beyond remembering',\n", + " 'un heaven, in earth, exalt the one',\n", + " 'air, fire, water, earth, sing \"let it be!\"',\n", + " 'welcome!',\n", + " 'to the elder ruins again',\n", + " 'the wind whispers beside the deep forest',\n", + " 'darkness will show us the way',\n", + " 'heic noenum pax, here is no peace',\n", + " 'the sky has darkened thirteen as',\n", + " 'we are collected woeful around a book',\n", + " 'made of human flesh',\n", + " 'de grandae vus antiquus mulum tristis',\n", + " 'arcanas mysteria scriptum',\n", + " 'the books blood written pages open',\n", + " 'invoco crentus domini de daemonium',\n", + " 'we follow with our white eyes',\n", + " 'the ceremonial proceeding',\n", + " 'heic noenum pax, bring us the goat',\n", + " 'rex sacriticulus mortifer',\n", + " 'in the circle of stone coffins',\n", + " 'we are standing with our black robes on',\n", + " 'holding the bowl with unholy water',\n", + " 'psychomantum et precr exito annos major',\n", + " 'ferus netandus sacerdos magus mortem animalium',\n", + " 'onisan kochira te no naru hou e gion de asonda osanai hi o',\n", + " 'nihon ningyou no you na kimi wa hyoujou hitotsu kaenai mama de',\n", + " 'sotto me o toji soine o shite nennen okorori yo...',\n", + " 'ima wa nakihaha o omou kono ko ni kasanete wa',\n", + " 'mainichi maiban komoriuta to mikazuki se ni yurayura',\n", + " 'kururi, furari, fuwari, kurari',\n", + " 'kyou mo mada koto no ne o kanadeyou',\n", + " 'kururi, furari, fuwari, kurari',\n", + " 'kururi, furari, sawagu',\n", + " 'kururi, furari, fuwari, kurari',\n", + " '\"mother and you and my new relation\"',\n", + " \"12 cd's for the price of 1\",\n", + " 'without thinking i put my hand on your neck',\n", + " \"i'm gonna sing the last lullaby for you while you smile at me\",\n", + " 'you say nothing and you do nothing',\n", + " 'i wonder why i fell in love with you',\n", + " 'impossible love',\n", + " 'te no hira o kasaneteru chiisa na kimi no te',\n", + " 'tsuriawanu yume nakigara to ai',\n", + " 'kururi, furari, fuwari, kurari',\n", + " 'kururi, furari, fuwari, kurari',\n", + " 'kururi, furari, fuwari, kurari',\n", + " 'kururi, furari, sawagu',\n", + " 'adaptogenic endocrine hormone',\n", + " 'cytokine transferred allostasis',\n", + " 'all-heal panacea',\n", + " 'adrenal axis',\n", + " 'hormonal balance regulated',\n", + " 'neuroendocrine trinity',\n", + " 'in harmonia hypothalamus',\n", + " 'cytokine allostasis',\n", + " 'all-heal panacea',\n", + " 'all heal panax...',\n", + " 'all heal panax...',\n", + " 'surfeit epistaxis',\n", + " 'crimson stream',\n", + " 'choking coagulation',\n", + " 'gorge on nostrum araliaceae',\n", + " 'open the floodgates of red',\n", + " 'ginsenoside',\n", + " 'triterpine saponin',\n", + " 'phagocytosis augmented',\n", + " 'interferens amass',\n", + " 'in flagellum opposition',\n", + " 'pathogen deletion',\n", + " 'macrophagic satiety',\n", + " 'suni en ma taili suni en ma taili',\n", + " 'suni en ma lov',\n", + " 'endori ma suni en toro',\n", + " 'en sera en dolor ori',\n", + " 'orma mi oni dolo',\n", + " 'orma i mundi lei aten undeli',\n", + " 'le loani ur lov',\n", + " 'i unti in ma ensodie',\n", + " 'emor tudi e undi lov',\n", + " 'suni en talien da lov ta lien',\n", + " 'suni en talien adoro',\n", + " 'suni en talien da lov ta lien',\n", + " 'delisun mi gund mi enda',\n", + " 'i len mi suelen i mundi undela',\n", + " 'gund gund mi undela mi undela',\n", + " 'i lend i talen mian inson mi',\n", + " 'i talen mia es on mi i tolen mi tae',\n", + " 'gund mi enda',\n", + " \"you're living angel, you're swimming angel\",\n", + " \"you're leaving angel, you're sweating angel\",\n", + " \"look myself i don't hide my hurts\",\n", + " 'in this travel come on to hug',\n", + " 'welcome to the elder ruins again',\n", + " 'the wind whispers beside the deep forest',\n", + " 'darkness will show us the way',\n", + " 'the sky has darkened',\n", + " 'thirteen as we are',\n", + " 'we are collected woeful around a book',\n", + " 'made of human flesh',\n", + " 'heic noenum pax - here is no peace',\n", + " 'de grandae vus antiquus mulum tristis',\n", + " 'arcanas mysteria scriptum',\n", + " 'the books blood written pages open',\n", + " 'invoco crentus domini de daemonium',\n", + " 'we follow with our white eyes',\n", + " 'the ceremonial proceeding',\n", + " 'rex sacriticulus mortifer',\n", + " 'in the circle of stone coffins',\n", + " 'we are standing with our black robes on',\n", + " 'holding the bowl with unholy water',\n", + " 'heic noenum pax - bring us the goat',\n", + " 'psychomantum et precr exito annos major',\n", + " 'ferus netandus sacerdos magus',\n", + " 'mortem animalium',\n", + " 'spoken',\n", + " 'na brictom uidluias uidlu tigontias so adgagsona severim tertionicnim lidssatim liciatim eíanom uoduiuoderce lunget utonid ponc nitixsintor sises duscelinatia in eíanom anuana esi andernados brictom banona flatucias paulla dona potitius iaia duxtir adiegias potitam atir paullias severa dusxtir ualentos dona paullius adiega matir aiías potita dona primus i abesias',\n", + " 'etic epotiniosco etic ruficna casta dona nonus co etic diligenti soc ulatio nicnom aucitionim aterem potiti ulatucia mat banonias ne incitas biontutu in das mnas ueronadas brictas lissinau severim licinaue tertioni cnim eíabi tiopritom biietutu semiti ratet severa tertionicna du ne incitas biontutus anatia nepi anda ad incorsonda pilu donicon sincarata',\n", + " 'the man of ea am i',\n", + " 'the mand of dakima am i',\n", + " ...]},\n", + " 'data': ['catoues caletoi',\n", + " 'urit namantas anrimius',\n", + " 'ro- te isarnilin -urextont',\n", + " 'au glannabi rhenus',\n", + " 'ad ardus alpon',\n", + " \"tou' magisa matua\",\n", + " \"tou' brigas iuerilonas\",\n", + " 'budinas bardon',\n", + " 'clouos canenti',\n", + " 'anuanon anmaruon',\n", + " 'cauaron colliton',\n", + " 'adio- biuotutas -robirtont',\n", + " 'uolin cridili',\n", + " 'are rilotuten atrilas',\n", + " 'a ulati, mon atron',\n", + " \"a brogi'm cumbrogon!\",\n", + " \"exs tou' uradiu uorrobirt\",\n", + " 'cenetlon clouision',\n", + " 'cauaron caleton',\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " \"tou' mnas et genetas\",\n", + " 'tigernias, tecas',\n", + " \"tou' uiroi uertamoi\",\n", + " 'in sose cantle cingeton',\n", + " 'in- gutoues -beronti',\n", + " 'cante cladibu in lame',\n", + " 'exsrextos canumi:',\n", + " 'a ulati, mon atron',\n", + " \"a brogi'm cumbrogon!\",\n", + " \"exs tou' uradiu uorrobirt\",\n", + " 'cenetlon clouision',\n", + " 'cauaron caleton',\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'a ulati, mon atron',\n", + " \"a brogi'm cumbrogon!\",\n", + " \"exs tou' uradiu uorrobirt\",\n", + " 'cenetlon clouision',\n", + " 'cauaron caleton',\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'a ulati, mon atron',\n", + " \"a brogi'm cumbrogon!\",\n", + " \"exs tou' uradiu uorrobirt\",\n", + " 'cenetlon clouision',\n", + " 'cauaron caleton',\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'a blatu blande bitos biuon!',\n", + " \"a ‚m' atrila, a ‚ma helvetia!\",\n", + " 'ne regv. na gandobe inte noviio',\n", + " 'extincon. papi coriiosed exa o',\n", + " 'mesamobi molatvs certiognv sveticon',\n", + " 'pape bovdi. macarni. papon mar',\n", + " 'nane devorbvetid loncate',\n", + " 'nv gnate ne dama gvssov n',\n", + " 'vero ne cvrri ne papi cos pape ambito',\n", + " 'papi bovdi ne tetv batoron veia svebreto sv',\n", + " 'citbio ledgamo berto',\n", + " 'nene devv bvit on cate',\n", + " 'on the latin alphabet:',\n", + " 'karangyny ottur chyran',\n", + " 'kaan deerde sholban yshkash',\n", + " 'kattyrangnan odu chainan',\n", + " 'karam ezhim iyi karaa',\n", + " 'karak bazyp chivesh derge',\n", + " 'kadyk churek shimirt kynnyr',\n", + " 'kalbak syryi kirbi helen',\n", + " 'karam ezhim charash karaa',\n", + " 'kaiyzhe-da yrai berze',\n", + " 'khaialanyp kostup chorur',\n", + " 'khazhan shagda uttundurbas',\n", + " 'karam ezhim charash karaa',\n", + " 'khazhan shagda uttundurbas',\n", + " 'karam ezhim charash karaa',\n", + " 'karam ezhim charash karaa',\n", + " 'english translation',\n", + " 'the goat of fukk',\n", + " 'with cock of fire',\n", + " 'converte linguam tuam',\n", + " 'in natibus meis',\n", + " 'lucifer incestus',\n", + " 'praise the evilchurch',\n", + " 'an occult hellride',\n", + " 'triumph of sin',\n", + " 'converte linguam tuam',\n", + " 'in natibus meis',\n", + " 'lucifer incestus',\n", + " 'praise the evilchurch',\n", + " \"don't be afraid! just move ahead!\",\n", + " 'saegira reta daichi e',\n", + " \"don't look back! keep on going!\",\n", + " 'ima kakedashite yuku',\n", + " 'eien ni kanjiru shijima o kirisaku',\n", + " 'sakebi ni karamitsuku onore no kanashimi ga',\n", + " \"don't hesitate! don't lose your way!\",\n", + " 'kutsugaesa reta asu',\n", + " \"don't look back! keep on going!\",\n", + " 'ima torimodosu tame',\n", + " 'setsuna no mayoi sae mirai o ubai yuku',\n", + " 'afureru ikari mo kono-te ni nigirishime',\n", + " \"i'll fly to the sky on wings of justice\",\n", + " 'fighting the evil, bringing all peace',\n", + " \"i'll fly over world on wings of justice\",\n", + " 'chasing the evil until the honor will rule again',\n", + " 'just fight against the traitor',\n", + " 'flames rage in my heart',\n", + " 'wielding my sword, i face the overwhelming evil',\n", + " 'koboreochi-sona omoi o nosete',\n", + " 'takeru hono o matotte',\n", + " 'let us scream! just move ahead!',\n", + " 'haitoku no daichi e',\n", + " 'yuku te o fujiru ganzen no kyoi sae',\n", + " 'ashidori togirezu nagitaoshi tsudzukete',\n", + " 'kesshite taenai omoi o nosete',\n", + " 'susabu ten kaminari nogotoku',\n", + " 'koboreochi-sona omoi o nosete',\n", + " 'aikoku to shinka no hoko yo todoroke',\n", + " 'sakari moe yuku hono to ten kaminari nogotoku',\n", + " 'kono-te ni subete o takushi furue',\n", + " 'sator arepo tenet opera rotas, the inner becomes the outer',\n", + " 'in my nekromanteion i summoned a son of smokeless fire',\n", + " '*',\n", + " 'the rebis transmutates into azoth, the pull of ahriman is overcome',\n", + " 'visita interiora terrae rectificandoque invenies occultum lapidem',\n", + " '*',\n", + " 'in the psychotronic model of reality telluric power is valid',\n", + " 'harness it, treasure it, in a hypnagogic state of mind',\n", + " 'trapped in the space-time continuum',\n", + " 'nympholeptic for the numinous',\n", + " 'et in arcadia ego',\n", + " 'ashes and flies mix in the choking wind',\n", + " 'blinded eyes behold that which is not',\n", + " 'my inward nekyia reveals discarded ones',\n", + " 'voiceless angelic figures disavow with vomitous troparion',\n", + " 'i summon the twin to the metatron',\n", + " 'protect the sickened spawn of mine',\n", + " 'i travel millennia to reach thy throat',\n", + " 'and slash it with the left hand',\n", + " 'fall again cherub of the ark',\n", + " 'gather pitiful cries together as garland',\n", + " 'and descend the enumeration of ten',\n", + " 'disgrace is thine to bear',\n", + " 'ad te suspiramus, gementes et flentes',\n", + " 'in hac lacrimarum valle',\n", + " 'me immundum munda tuo sanguine',\n", + " 'o memoriale mortis domini',\n", + " 'vere passum, immolatum in cruce',\n", + " 'sicut erat in principio',\n", + " 'et nunc',\n", + " 'et semper',\n", + " 'et in saecula saeculorum',\n", + " 'from camellia sinensis',\n", + " 'forthwith it flows',\n", + " 'polyphenolic antioxidant',\n", + " 'juventas immortal',\n", + " 'harnessing tannin',\n", + " 'tied in glass chains',\n", + " 'chaining the catechin',\n", + " 'theobroma dominate',\n", + " 'deific sustenance',\n", + " 'the coming decay, genesis to the end',\n", + " 'for the stinking face of mankind condemned',\n", + " 'sacred erosion, the revelation denied',\n", + " 'de praestigiis daemonum, ominous light',\n", + " 'beyond sanctorum',\n", + " 'rex tremendae, son of perdition',\n", + " 'rex tremendae, lord of cynism',\n", + " 'rex tremendae, shining sovereign',\n", + " 'the shadows are bent, by his presence malign',\n", + " 'led to the gallows, processions of death',\n", + " 'descend to the blind world, souls ripped from flesh',\n", + " 'tyrannical kingdom, dimensions of pain',\n", + " 'sub terra inferis, consumed by the flames',\n", + " 'beyond sanctorum',\n", + " 'rex tremendae, son of perdition',\n", + " 'rex tremendae, lord of cynism',\n", + " 'rex tremendae, shining sovereign',\n", + " 'the shadows are bent, by his presence malign',\n", + " 'rex tremendae majestatis',\n", + " 'rex tremendae majestatis',\n", + " 'kono karada taema naku',\n", + " 'obie tsudzukete ita',\n", + " 'ikinagara boukyaku no kyokkei ni shosarete',\n", + " 'tatoe karada naku shite mo',\n", + " 'kioku no naka de iki nagarae sasete',\n", + " 'come on',\n", + " 'welcome to my darkness world',\n", + " 'i will lead you in my voice',\n", + " 'welcome to my darkness world',\n", + " 'i will lead you',\n", + " 'tomodachi mo ryoushin mo',\n", + " 'watashi no me wo minai',\n", + " 'kai neko mo norainu mo watashi ni chikayoranai',\n", + " 'sora utsusu asatsuyu ni mo',\n", + " 'kitto watashi no sugata wa utsuranai',\n", + " 'come on',\n", + " 'welcome to my darkness world',\n", + " 'i will lead you in my voice',\n", + " 'welcome to my darkness world',\n", + " 'i will lead you',\n", + " 'watashi wo mite koe wo kiite',\n", + " 'mina no naka ni watashi ga inai',\n", + " 'come on',\n", + " 'welcome to my darkness world',\n", + " 'i will lead you in my voice',\n", + " 'welcome to my darkness world',\n", + " 'i will lead you in my voice',\n", + " 'welcome to my darkness world',\n", + " 'i will lead you in my voice',\n", + " 'welcome to my darkness world',\n", + " 'i will lead you in my voice',\n", + " 'sa senit conectos onda bocca nene',\n", + " 'rionti onda boca ne on',\n", + " 'barnaunom ponc nit issintor sies eianepian',\n", + " 'digs ne lisantim ne licia',\n", + " 'ne rodatim biont utu semnanom sagitiont',\n", + " 'seuerim lissatim licia',\n", + " 'tim anandognam acolut utanit andognam da bocca diomine',\n", + " 'inside se bnanom',\n", + " 'inside se brictom',\n", + " 'in eainom anuana sanander',\n", + " 'inside se bnanom',\n", + " 'inside se brictom',\n", + " 'in eainom anuana sanander',\n", + " 'inside se bnanom',\n", + " 'eainom anuana sanander',\n", + " 'inside brictom',\n", + " 'inside bnanom',\n", + " 'inside brictom',\n", + " 'in eainom anuana sanander!',\n", + " 'aia cicena nitianncobueðliðat iasuolsonponne antumnos',\n", + " 'nepon nesliciata neosuode neiauodercos nepon su biiontutu',\n", + " 'semn anom adsaxs nadoc suet petidsiont sies peti sagitiontias',\n", + " 'seu erim tertio lissatim is anandogna ictontias',\n", + " 'inside se bnanom',\n", + " 'inside se brictom',\n", + " 'in eainom anuana sanander',\n", + " 'inside se bnanom',\n", + " 'inside se brictom',\n", + " 'in eainom anuana sanander',\n", + " 'inside se bnanom',\n", + " 'inside se brictom',\n", + " 'inside se bnanom',\n", + " 'eainom anuana sanander!',\n", + " 'inside brictom',\n", + " 'inside bnanom',\n", + " 'inside brictom',\n", + " 'in eainom anuana sanander!',\n", + " '------------',\n", + " 'in eainom anuana sanander',\n", + " 'inside se bnanom',\n", + " 'inside se brictom',\n", + " 'inside se bnanom',\n", + " 'eainom anuana sanander!',\n", + " 'inside brictom',\n", + " 'inside bnanom',\n", + " 'inside brictom',\n", + " 'in eainom anuana sanander!',\n", + " 'nas aakhu khan she en asbiu',\n", + " 'ua tehani, ua temam, ua khames re per akhu',\n", + " 'ua khames em bah khan she en amu',\n", + " 'ua khames em bah khan she en seshet',\n", + " 'temam aakhu thaui, temam aakhu shemsu satha',\n", + " 'saakhu nebu tchaut, saakhu nebu khebentiu',\n", + " 'snemeh em bah akhu-ager',\n", + " 'tata ab uk em she en asbiu',\n", + " 'ta-ua akh uk em she en nesersert',\n", + " 'meh u she en shemmet, meh u she en shamu',\n", + " 'ua uk, ua uk, ua uk aat en khet',\n", + " 'ua uk, ua uk, ua uk',\n", + " 'by the pilar pnath i call you',\n", + " 'nephreu - ka nai hadoth',\n", + " 'nocturnal necromany',\n", + " 'my brother in almonsin-metraton',\n", + " 'you cannot decieve me',\n", + " 'for i know that your accursed',\n", + " 'magic is true madness out of time',\n", + " 'and a horror from beyond the shperes',\n", + " 'veni, veni, veni',\n", + " 'adonai saboath, metraton on agla',\n", + " 'mathon, verbun pythonicum',\n", + " 'mysterium salamandrae, conventus',\n", + " 'sylvorum, antra gnomorum',\n", + " 'veni, veni, veni',\n", + " 'daemonia coeli god, almonsin',\n", + " 'gibor, jehosua, evam, zariatnatmik',\n", + " 'yi-nash-yog-sothoth-',\n", + " 'he-igeb-fi-throdog-yah!',\n", + " 'veni, veni, veni',\n", + " 'e mortuis, me duxisti',\n", + " 'dilecta mi, te consequens',\n", + " 'ad viventes, sed inferis',\n", + " 'nunc carens, excrucior',\n", + " 'now when death awaits me i am calm',\n", + " 'i surrender to the burden of this life',\n", + " 'all the sings are glowing in the dark',\n", + " 'a final rest, a calling to the ones who are blessed',\n", + " 'ad viventes',\n", + " 'aetatis brevis, levitate',\n", + " 'elicitus, a tenebris',\n", + " 'dierum onus, me frangens',\n", + " 'sollicitus, corde ardens',\n", + " 'now when death awaits me i am calm',\n", + " 'i surrender to the burden of this life',\n", + " 'all the sings are glowing in the dark',\n", + " 'a final rest, a calling to the ones who are blessed',\n", + " 'ad viventes',\n", + " 'quasi praesens, tecum fui',\n", + " 'crevi lucem, a tenebris',\n", + " 'aetatis onus, me frangens',\n", + " 'e mortuis, ad viventes',\n", + " 'utu lei san no pienso no utu oe',\n", + " 'donlei sun doloe hia do lea lan',\n", + " 'da fiu tra donta uso',\n", + " 'leno niar mo clads nior',\n", + " 'denta lea no',\n", + " 'un te lian te lian te u don',\n", + " 'te lian',\n", + " 'talien te lian',\n", + " 'taliun talain taia layalin',\n", + " 'ta laia lien taliun talain te lian',\n", + " 'taliun talie on',\n", + " 'taliun talien te lian',\n", + " 'taliun dale on',\n", + " 'tali undate lian',\n", + " 'in len mi cio',\n", + " 'silen cio',\n", + " 'uxellos tou arduenna et bivos to brixtos (x2)',\n", + " \"togosse can'iegis sitone uxamos (x2)\",\n", + " 'cainis esue immi spacto',\n", + " \"cainis esue can'tou vida\",\n", + " \"lavenocaron albeis, venon to'bannias (x2)\",\n", + " \"veno-ne ollos trano, et'ollo moripennon (x2)\",\n", + " 'cainis esue immi spacto',\n", + " \"cainis esue can'tou vida\",\n", + " \"vidus, abona, e'dubron, magos etic nantos (x2)\",\n", + " \"reipatro catros et'locun bivos (x2)\",\n", + " 'cainis esue immi spacto',\n", + " \"cainis esue can'tou vida\",\n", + " 'choir (x2):',\n", + " \"cara'toi tecos tersos\",\n", + " 'canumi uis devos',\n", + " 'uxellos cainia',\n", + " 'imon coimos elvetia',\n", + " 'uxellos tou arduenna et bivos to brixtos (x2)',\n", + " \"togosse can'iegis sitone uxamos (x2)\",\n", + " 'cainis esue immi spacto',\n", + " \"cainis esue can'tou vida\",\n", + " 'choir (x2):',\n", + " \"cara'toi tecos tersos\",\n", + " 'canumi uis devos',\n", + " 'uxellos cainia',\n", + " 'imon coimos elvetia',\n", + " 'together (x2):',\n", + " \"cara'toi tecos tersos\",\n", + " 'canumi uis devos',\n", + " 'uxellos cainia',\n", + " 'imon coimos elvetia',\n", + " '0-9',\n", + " '10 years',\n", + " '100 demons',\n", + " '1000 homo djs',\n", + " '12 stones',\n", + " '1349',\n", + " '16volt',\n", + " 'the 1975',\n", + " '2nd and archer',\n", + " '2x4',\n", + " '3',\n", + " '3 doors down',\n", + " '3 inches of blood',\n", + " '3 quarters dead',\n", + " '3 years hollow',\n", + " '30 seconds to mars',\n", + " '311',\n", + " '32 leaves',\n", + " '36 crazyfists',\n", + " '3ot7',\n", + " '3rd strike',\n", + " '3teeth',\n", + " '4 arm',\n", + " '4 dead in 5 seconds',\n", + " '40 below summer',\n", + " '+44',\n", + " '5 seconds of summer',\n", + " '55 escape',\n", + " '66samus',\n", + " '7 horns 7 eyes',\n", + " '7h. target',\n", + " 'a',\n", + " 'abandon all ships',\n", + " 'abandoned',\n", + " 'abattoir',\n", + " 'abiogenesis',\n", + " 'abiotic',\n", + " 'abnormality',\n", + " 'abominable putridity',\n", + " 'aborted',\n", + " 'above, below',\n", + " 'above only',\n", + " 'an abstract illusion',\n", + " 'abysmal dawn',\n", + " 'abysmal torrent',\n", + " 'abyss walker',\n", + " 'the acacia strain',\n", + " 'acaedia',\n", + " 'acârash',\n", + " 'accept',\n", + " 'the accüsed',\n", + " 'accuser',\n", + " 'acid bath',\n", + " 'acid horse',\n", + " 'acid king',\n", + " 'acid witch',\n", + " 'acrania',\n", + " 'acranius',\n", + " 'act of defiance',\n", + " 'ac/dc',\n", + " 'adelitas way',\n", + " 'adept',\n", + " 'adjentist',\n", + " 'adrenaline mob',\n", + " 'advent sorrow',\n", + " 'adventures',\n", + " 'advocates',\n", + " 'aegaeon',\n", + " 'aeons confer',\n", + " 'aeon',\n", + " 'aeons of corruption',\n", + " 'aerosmith',\n", + " 'æther realm',\n", + " 'affiance',\n", + " 'afi',\n", + " 'after all',\n", + " 'after the burial',\n", + " 'against all authority',\n", + " 'against all will',\n", + " 'agalloch',\n", + " 'age of daze/age of days',\n", + " 'agent orange',\n", + " 'agent steel',\n", + " 'agnostic front',\n", + " 'the agonist',\n", + " 'the agony scene',\n", + " 'agoraphobic nosebleed',\n", + " 'ainundale',\n", + " 'the air i breathe',\n", + " 'air raid',\n", + " 'airbourne',\n", + " 'ajr',\n", + " 'akani',\n", + " 'akercocke',\n", + " 'al-namrood',\n", + " 'the alarm',\n", + " 'alaska',\n", + " 'alesana',\n", + " 'alestorm',\n", + " 'the algorithm',\n", + " 'alice cooper',\n", + " 'alice in chains',\n", + " 'alien ant farm',\n", + " 'alien invasion defence system',\n", + " 'alien weaponry',\n", + " 'all',\n", + " 'the all-american rejects',\n", + " 'all good things',\n", + " 'all shall perish',\n", + " 'all that remains',\n", + " 'all time low',\n", + " 'allele',\n", + " 'the allman brothers band',\n", + " 'alluvial',\n", + " 'almanac',\n", + " 'alpha tiger',\n", + " 'alpha wolf',\n", + " 'δ (alt-j)',\n", + " 'altars of destruction',\n", + " 'alter bridge',\n", + " 'alterbeast',\n", + " 'altered perceptions',\n", + " 'altitudes & attitudes',\n", + " 'am radio',\n", + " 'amass the grave',\n", + " 'ambersmoke',\n", + " 'âme noire',\n", + " 'amebix',\n", + " 'america',\n", + " 'american sin',\n", + " 'american standard',\n", + " 'amiensus',\n", + " 'the amity affliction',\n", + " 'ammotrack',\n", + " 'amon amarth',\n", + " 'amorphis',\n", + " 'amyst',\n", + " 'anaal nathrakh',\n", + " 'anacrusis',\n", + " 'anal cunt',\n", + " 'analepsy',\n", + " 'anarchy club',\n", + " 'anata',\n", + " 'anathema',\n", + " 'anberlin',\n", + " 'ancesttral',\n", + " 'anciients',\n", + " 'ancst',\n", + " '...and oceans',\n", + " 'andromida',\n", + " 'anew revolution',\n", + " 'angel blake',\n", + " 'angel dust',\n", + " 'angel vivaldi',\n", + " 'angel witch',\n", + " 'angelcorpse',\n", + " 'angelmaker',\n", + " 'angels & airwaves',\n", + " 'angelus apatrida',\n", + " 'anger as art',\n", + " 'angra',\n", + " 'angry samoans',\n", + " 'anihilated',\n", + " 'animals as leaders',\n", + " 'annihilator',\n", + " 'annisokay',\n", + " 'annotations of an autopsy',\n", + " 'anomalie',\n", + " 'another animal',\n", + " 'a.n.s',\n", + " 'anthrax',\n", + " 'anti-cimex',\n", + " 'anti-mortem',\n", + " 'anti-flag',\n", + " 'anubis gate',\n", + " 'anup sastry',\n", + " 'anvil',\n", + " 'any given day',\n", + " 'apartment 26',\n", + " 'aphyxion',\n", + " 'apoapsis',\n", + " 'apocalypse orchestra',\n", + " 'apocalyptica',\n", + " 'the apples in stereo',\n", + " 'aranda',\n", + " 'arcade fire',\n", + " 'arch enemy',\n", + " 'archers',\n", + " 'archgoat',\n", + " 'architects',\n", + " 'archspire',\n", + " 'arctic monkeys',\n", + " 'arcturus',\n", + " 'arkaea',\n", + " 'arkentype',\n", + " 'arkona',\n", + " 'armored saint',\n", + " 'army of anyone',\n", + " 'the arrs',\n", + " 'arsenica',\n", + " 'arsis',\n", + " 'arson anthem',\n", + " 'art nation',\n", + " 'art of anarchy',\n", + " 'art of drone',\n", + " 'art of dying',\n", + " 'artillery',\n", + " 'die ärzte',\n", + " 'as blood runs black',\n", + " 'as i lay dying',\n", + " 'as it is',\n", + " 'as karma brings',\n", + " 'as lions',\n", + " 'as paradise falls',\n", + " 'as they burn',\n", + " 'as you drown',\n", + " 'ascendant',\n", + " 'asg',\n", + " 'ash',\n", + " 'ashes of soma',\n", + " 'ashes remain',\n", + " 'asia',\n", + " 'asking alexandria',\n", + " 'asphyx',\n", + " 'assuming we survive',\n", + " 'asterism',\n", + " 'astray valley',\n", + " 'at the drive-in',\n", + " 'at the gates',\n", + " 'at rest',\n", + " 'at war',\n", + " 'atena',\n", + " 'atheist',\n", + " 'atlas',\n", + " 'atomkraft',\n", + " 'atoms to ashes',\n", + " 'atreyu',\n", + " 'atrocity',\n", + " 'attack attack!',\n", + " 'attila',\n", + " 'attomica',\n", + " 'audioslave',\n", + " 'audiotopsy',\n", + " 'audrey horne',\n", + " 'august burns red',\n", + " 'auras',\n", + " 'austrian death machine',\n", + " 'authority zero',\n", + " 'autograph',\n", + " 'automatic kane',\n", + " 'autopsy',\n", + " 'autumn kings',\n", + " 'the autumn offering',\n", + " 'avatar',\n", + " 'avenged sevenfold',\n", + " 'avenger of blood',\n", + " 'aversion to life',\n", + " 'aversions crown',\n", + " 'the avett brothers',\n", + " 'aviana',\n", + " 'avion roe',\n", + " 'avoid',\n", + " 'avulsed',\n", + " 'awakening sun',\n", + " 'awolnation',\n", + " 'azazel',\n", + " 'b',\n", + " 'babymetal',\n", + " 'backswing',\n", + " 'backwordz',\n", + " 'bad company',\n", + " 'bad religion',\n", + " 'bad omens',\n", + " 'bad wolves',\n", + " 'badbadnotgood',\n", + " 'badflower',\n", + " 'baest',\n", + " 'bal-sagoth',\n", + " 'balgeroth',\n", + " 'band of horses',\n", + " 'baphomet',\n", + " 'baptized in blood',\n", + " 'baroness',\n", + " 'barrier',\n", + " 'bastard priest',\n", + " 'bathory',\n", + " 'battalion',\n", + " 'battle beast',\n", + " 'battlecross',\n", + " 'batushka',\n", + " 'bayonet',\n", + " 'bayside',\n", + " 'beartooth',\n", + " 'beastie boys',\n", + " 'beastwars',\n", + " 'the beatles',\n", + " 'becoming the archetype',\n", + " 'before i turn',\n", + " 'before the dawn',\n", + " 'before the harvest',\n", + " 'behemoth',\n", + " 'behind the pieces',\n", + " \"be'lakor\",\n", + " 'belie my burial',\n", + " 'belle & sebastian',\n", + " 'belly',\n", + " 'belphegor',\n", + " 'belzebubs',\n", + " 'beneath an obsidian sky',\n", + " 'beneath my feet',\n", + " 'beneath the massacre',\n", + " 'benediction',\n", + " 'benighted',\n", + " 'bent life',\n", + " 'bermuda',\n", + " 'berried alive',\n", + " 'berserkyd',\n", + " 'betrayal',\n", + " 'betraying the martyrs',\n", + " 'between the buried and me',\n", + " 'betzefer',\n", + " 'beyond all recognition',\n", + " 'beyond creation',\n", + " 'beyond the bridge',\n", + " 'beyond the pleasure',\n", + " 'big country',\n", + " 'big star',\n", + " 'bill haley & his comets',\n", + " 'billy talent',\n", + " 'bind the sacrifice',\n", + " 'bio-cancer',\n", + " 'bionic jive',\n", + " 'black breath',\n", + " 'black city',\n", + " 'black crown initiate',\n", + " 'the black dahlia murder',\n", + " 'black december',\n", + " 'black fast',\n", + " 'black flag',\n", + " 'black jackal',\n", + " 'the black keys',\n", + " 'black label society',\n", + " 'black light burns',\n", + " 'black map',\n", + " 'black metal box',\n", + " 'black peaks',\n", + " 'black sabbath',\n", + " 'black star',\n", + " 'black stone cherry',\n", + " 'black therapy',\n", + " 'black tide',\n", + " 'black tongue',\n", + " 'black tusk',\n", + " 'black veil brides',\n", + " 'black13',\n", + " 'blacklistt',\n", + " 'blacklite district',\n", + " 'blackstar',\n", + " 'blacktop mojo',\n", + " 'blaenavon',\n", + " 'blameshift',\n", + " 'bleed by example',\n", + " 'bleed from within',\n", + " 'bleed the sky',\n", + " 'bleeding through',\n", + " 'the blessing of this curse',\n", + " 'blessthefall',\n", + " 'blind channel',\n", + " 'blind guardian',\n", + " 'blind oracle',\n", + " 'blind pilot',\n", + " 'blind witness',\n", + " 'blindside',\n", + " 'blink-182',\n", + " 'blklst',\n", + " 'blood feast',\n", + " 'blood red throne',\n", + " 'bloodbath',\n", + " 'bloodhound gang',\n", + " 'bloodred hourglass',\n", + " 'bloodsimple',\n", + " 'bloodthorn',\n", + " 'blowsight',\n", + " 'blue felix',\n", + " 'blue light special',\n", + " 'blue öyster cult',\n", + " 'blue stahli',\n", + " 'blur',\n", + " 'boarcorpse',\n", + " 'bob seger and the silver bullet band',\n", + " 'bobaflex',\n", + " 'body count',\n", + " 'bog wraith',\n", + " 'boil',\n", + " 'bolt thrower',\n", + " 'bombus',\n", + " 'bon iver',\n", + " 'bon jovi',\n", + " 'bonded by blood',\n", + " 'borialis',\n", + " 'boris',\n", + " 'boris the blade',\n", + " 'borknagar',\n", + " 'born of osiris',\n", + " 'bossk',\n", + " 'boston',\n", + " 'boston manor',\n", + " 'bound in fear',\n", + " 'the bourgeois',\n", + " 'boy hits car',\n", + " 'brain drill',\n", + " 'brand new',\n", + " 'brand of sacrifice',\n", + " 'a breach of silence',\n", + " 'breakdown bros',\n", + " 'breakdown of sanity',\n", + " 'breaking benjamin',\n", + " 'breaking point',\n", + " 'breath of nibiru',\n", + " 'breathe carolina',\n", + " 'the breathing process',\n", + " 'bridge to grace',\n", + " 'bright eyes',\n", + " 'brighter than a thousand suns',\n", + " 'bring me the horizon',\n", + " 'brocas helm',\n", + " 'brojob',\n", + " 'broken bells',\n", + " 'brokenrail',\n", + " 'brothers of metal',\n", + " 'brothers till we die',\n", + " 'the browning',\n", + " 'brujeria',\n", + " 'brutal truth',\n", + " 'brymir',\n", + " 'buckcherry',\n", + " 'buckethead',\n", + " 'budgie',\n", + " 'buffalo tom',\n", + " 'bullet for my valentine',\n", + " 'bulletproof messenger',\n", + " 'bullets and octane',\n", + " 'bunker 66',\n", + " 'buried side',\n", + " 'buried in verona',\n", + " 'burn the ballroom',\n", + " 'burn the priest',\n", + " 'burn halo',\n", + " 'burning the masses',\n", + " 'burnt by the sun',\n", + " 'bury tomorrow',\n", + " 'bury your dead',\n", + " 'burzum',\n", + " 'bush',\n", + " 'butterfingers',\n", + " 'butthole surfers',\n", + " 'the buzzcocks',\n", + " 'buzzhorn',\n", + " 'by the thousands',\n", + " 'byebye bunny',\n", + " 'byzantine',\n", + " 'c',\n", + " 'cabal',\n", + " 'cage the elephant',\n", + " 'cage9',\n", + " 'cake',\n", + " 'caliban',\n", + " \"caligula's horse\",\n", + " 'calipash',\n", + " 'call of the void',\n", + " 'callejon',\n", + " 'callenish circle',\n", + " 'callisto',\n", + " 'candiria',\n", + " 'candlelight red',\n", + " 'candlemass',\n", + " 'cane hill',\n", + " 'cannabis corpse',\n", + " 'cannibal corpse',\n", + " 'cannibal grandpa',\n", + " 'capital enemy',\n", + " 'car bomb',\n", + " 'carach angren',\n", + " 'carcass',\n", + " 'carcer city',\n", + " 'carnation',\n", + " 'carnifex',\n", + " 'the cars',\n", + " 'casket robbery',\n", + " 'cast the stone',\n", + " 'cathedral',\n", + " 'cattle decapitation',\n", + " 'cauldron',\n", + " 'cavalera conspiracy',\n", + " 'cave in',\n", + " 'cavernicular',\n", + " 'cavo',\n", + " 'cbc band',\n", + " 'celldweller',\n", + " 'celtic frost',\n", + " 'cemican',\n", + " 'centinex',\n", + " 'cephalic carnage',\n", + " 'cerberus',\n", + " 'cerebral bore',\n", + " 'cerebral effusion',\n", + " 'cervello',\n", + " 'ceterum',\n", + " 'chaos divine',\n", + " 'chapel of disease',\n", + " 'charcoal tongue',\n", + " 'charm city devils',\n", + " 'the charm the fury',\n", + " 'charred walls of the damned',\n", + " 'chasing lana',\n", + " 'cheap trick',\n", + " 'chelsea grin',\n", + " 'chevelle',\n", + " 'children of bodom',\n", + " 'chimaira',\n", + " 'chiodos',\n", + " 'chon',\n", + " 'christmas',\n", + " 'chronolyth',\n", + " 'chrysalis',\n", + " 'chuggaboom',\n", + " 'chunk! no, captain chunk!',\n", + " 'chvrches',\n", + " 'cilice',\n", + " 'cinder',\n", + " 'cinematic sunrise',\n", + " 'cipher system',\n", + " 'circa survive',\n", + " 'circle jerks',\n", + " 'circle of dust',\n", + " 'circle survive',\n", + " 'circles',\n", + " 'cky',\n", + " 'clarkkent',\n", + " 'the clash',\n", + " 'clawerfield',\n", + " 'clawfinger',\n", + " 'clawhammer',\n", + " 'the clay people',\n", + " 'clocked in',\n", + " 'close your eyes',\n", + " 'closterkeller',\n", + " 'closure',\n", + " 'closure in moscow',\n", + " 'clutch',\n", + " 'coal chamber',\n", + " 'coalesce',\n", + " 'code orange',\n", + " 'codeine king',\n", + " 'coheed and cambria',\n", + " 'cold',\n", + " 'cold kingdom',\n", + " 'cold metal',\n", + " 'cold war kids',\n", + " 'coldplay',\n", + " 'coldrain',\n", + " 'coldseed',\n", + " 'coldtears',\n", + " 'collective soul',\n", + " 'comaniac',\n", + " 'combichrist',\n", + " 'come the dawn',\n", + " 'conan',\n", + " 'concepts',\n", + " 'condition critical',\n", + " 'conducting from the grave',\n", + " 'confessor',\n", + " 'confide',\n", + " 'conquer divide',\n", + " 'conquering dystopia',\n", + " 'continents',\n", + " 'the contortionist',\n", + " 'the contradiction',\n", + " 'control denied',\n", + " 'converge',\n", + " 'convivium',\n", + " 'core 10',\n", + " 'corelia',\n", + " 'coroner',\n", + " 'corporate avenger',\n", + " 'corroded',\n", + " 'corrosion of conformity',\n", + " 'count raven',\n", + " 'counterparts',\n", + " 'countless skies',\n", + " 'coup de grâce',\n", + " 'cover your tracks',\n", + " 'covet',\n", + " 'cradle of filth',\n", + " 'the cranberries',\n", + " 'crass',\n", + " 'craving lucy',\n", + " 'crawl back to zero',\n", + " 'cream',\n", + " 'creed',\n", + " 'creedence clearwater revival (ccr)',\n", + " 'creeper',\n", + " 'cries of the captive',\n", + " 'crimson sun',\n", + " 'crisix',\n", + " 'critical solution',\n", + " 'crobot',\n", + " 'cromok',\n", + " 'crooked x',\n", + " 'crosby, stills, nash(, & young)',\n", + " '††† (crosses)',\n", + " 'crossfade',\n", + " 'crossfaith',\n", + " 'crowbar',\n", + " 'crowdburn',\n", + " 'the crown',\n", + " 'crown the empire',\n", + " 'crucify me gently',\n", + " 'cruel hand',\n", + " 'crunt',\n", + " 'cryptopsy',\n", + " 'crystal lake',\n", + " 'cult of luna',\n", + " 'cute is what we aim for',\n", + " ...]}}},\n", + " 'mi': {'sentence': {'pop': {'meta': {'train_data': [\"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " 'fatboy, fatboy',\n", + " 'fatboy, fatboy',\n", + " 'fatboy, fatboy',\n", + " 'fatboy, fatboy',\n", + " \"let's hear it for the fatboy\",\n", + " 'fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa',\n", + " 'bo-bo-bo-bo-bo-bo-bo-bo-bo-bo-bo-bo',\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " \"let's hear it for the fatboy\",\n", + " 'fute full apon shukhe...',\n", + " 'kaar isharai...',\n", + " 'kaar adore...',\n", + " 'kaata bon...',\n", + " 'shomirone shohag chorai',\n", + " 'fute full apon shukhe...',\n", + " 'kaar isharai...',\n", + " 'kaar adore...',\n", + " 'kaata bon...',\n", + " 'shomirone shohag chorai',\n", + " 'fute full apon shukhe...',\n", + " 'kaar isharai...',\n", + " 'kaar adore...',\n", + " 'kaata bon...',\n", + " 'shomirone shohag chorai',\n", + " 'fute full apon shukhe...',\n", + " 'kaar isharai...',\n", + " 'kaar adore...',\n", + " 'kaata bon...',\n", + " 'shomirone shohag chorai',\n", + " \"(haa-nee' yóo' oh) (chanting)\",\n", + " 'shaa ni (yóo oh) : to me...you (chanting)',\n", + " 'shaa ni : to me...you',\n", + " \"shaa ninánóh'aah : you give it back to me\",\n", + " \"(haa-nee' yóo' oh) (chanting)\",\n", + " \"shaa ni (yóo' oh) : to me...you (chanting)\",\n", + " 'shaa ni : to me...you',\n", + " \"ninánóh'aah : give it back\",\n", + " \"(haa-nee') yé'iitsoh jiní náá léi' : giant is repeating...\",\n", + " \"ní náá léi' : he says over and over\",\n", + " \"ninánóh'aah : give it back\",\n", + " \"(haa-nee') yé'iitsoh jiní náá léi' : giant is repeating...\",\n", + " \"ninánóh'aah : give it back\",\n", + " \"ni (yóo' oh) x4\",\n", + " \"(haa-nee' yóo' oh) (chanting)\",\n", + " 'shaa ni (yóo oh) : to me...you (chanting)',\n", + " 'shaa ni : to me...you',\n", + " \"shaa ninánóh'aah : you give it back to me\",\n", + " \"(haa-nee' yóo' oh) (chanting)\",\n", + " \"shaa ni (yóo' oh) : to me...you (chanting)\",\n", + " 'shaa ni : to me...you',\n", + " \"ninánóh'aah : give it back\",\n", + " \"(haa-nee') yé'iitsoh jiní náá léi' : giant is repeating...\",\n", + " \"ní náá léi' : he says over and over\",\n", + " \"ninánóh'aah : give it back\",\n", + " \"(haa-nee') yé'iitsoh jiní náá léi' : giant is repeating...\",\n", + " \"ninánóh'aah : give it back\",\n", + " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", + " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", + " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", + " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", + " 'ah, ah, ah, ah, ah-ah, ah-ah, we can',\n", + " 'ah, ah, ah, ah, ah-ah, ah-ah, we can',\n", + " 'back there, ah, ah, ah, ah',\n", + " 'ah, ah, ah, ah, ah, ah, ah',\n", + " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", + " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", + " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", + " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", + " 'pokarekare ana',\n", + " 'nga wai o waiapu',\n", + " 'whiti atu koe hine',\n", + " 'marino ana e',\n", + " 'e hine e',\n", + " 'hoki maira',\n", + " 'kamate au',\n", + " '-i te aroha e',\n", + " 'tuhituhi taku rita',\n", + " 'tuku atu taku ringi',\n", + " 'kia kiti to iwi',\n", + " 'raru raru ana e',\n", + " 'e hine e',\n", + " 'hoki maira',\n", + " 'kamate au i could die',\n", + " '-i te aroha e',\n", + " 'e hine e',\n", + " 'hoki maira',\n", + " 'kamate au',\n", + " '-i te aroha e',\n", + " 'kamate au i could die',\n", + " '-i te aroha e of love for you',\n", + " 'stormy are the waters',\n", + " 'of restless waiapu',\n", + " 'if you cross them, girl',\n", + " 'they will be calmed',\n", + " 'oh girl',\n", + " 'come back to me',\n", + " 'i could die',\n", + " 'of love for you',\n", + " 'i write you my letter',\n", + " 'i send you my ring',\n", + " 'so your people can see',\n", + " 'how troubled i am',\n", + " 'oh girl',\n", + " 'come back to me',\n", + " 'i could die',\n", + " 'of love for you',\n", + " 'oh girl',\n", + " 'come back to me',\n", + " 'i could die',\n", + " 'of love for you',\n", + " 'i could die',\n", + " 'of love (for you)',\n", + " 'te aroha',\n", + " 'te whakapono',\n", + " 'te rangimarie',\n", + " 'tatou tatou e',\n", + " 'te aroha',\n", + " 'te whakapono',\n", + " 'te rangimarie',\n", + " 'tatou tatou e',\n", + " 'love',\n", + " 'faith and',\n", + " 'peace',\n", + " 'be amongst us all',\n", + " 'love',\n", + " 'faith and',\n", + " 'peace',\n", + " 'be amongst us all',\n", + " 'love',\n", + " 'faith and',\n", + " 'peace',\n", + " 'be amongst us all',\n", + " 'love',\n", + " 'faith and',\n", + " 'peace',\n", + " 'be amongst us all',\n", + " 'ahh',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'i',\n", + " 'ooh ooh ooh ooh',\n", + " 'ooh ooh ooh',\n", + " 'i ooh i ooh',\n", + " 'i ooh i ooh',\n", + " 'i ooh i ooh',\n", + " 'i ooh i ooh',\n", + " 'i waited for you',\n", + " 'i waited',\n", + " 'i waited for you',\n", + " 'i waited',\n", + " 'i waited for you',\n", + " 'i waited',\n", + " 'i waited for you',\n", + " 'i waited for you',\n", + " 'i waited',\n", + " 'i waited for you',\n", + " 'i waited',\n", + " 'i waited for you',\n", + " 'i waited',\n", + " 'i waited for you',\n", + " 'ooh ooh ooh ooh',\n", + " 'ooh ooh oh ooh oh ooh',\n", + " 'ooh oh oh ooh oh oh',\n", + " 'ooh oh oh',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ardas bhaee',\n", + " 'amar das guru',\n", + " 'amar das guru',\n", + " 'ardas bhaee',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'ram das guru',\n", + " 'sachee sahee',\n", + " 'ooh aah, oh you',\n", + " 'too wild you’re too wild',\n", + " 'you’re too wild',\n", + " 'too wild you’re too wild',\n", + " 'you’re too wild',\n", + " 'ooh, i am you',\n", + " 'you, you are me',\n", + " 'ooh ahh, oh you',\n", + " 'too wild you’re too wild',\n", + " 'you’re too wild',\n", + " 'too wild you’re too wild',\n", + " 'you’re too wild',\n", + " 'ooh aah, oh you',\n", + " 'ooh, i am you',\n", + " 'you, you are…',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'sohung',\n", + " 'ong sohung',\n", + " 'sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'sohung',\n", + " 'ong sohung',\n", + " 'sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'i am peace',\n", + " 'peace is in me',\n", + " 'i am peace',\n", + " 'peace is in me',\n", + " 'ong sohung',\n", + " 'sohung',\n", + " 'ong sohung',\n", + " 'sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'sohung',\n", + " 'ong sohung',\n", + " 'sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'i am peace',\n", + " 'peace is in me',\n", + " 'i am peace',\n", + " 'peace is in me',\n", + " 'i am peace',\n", + " 'peace is in me',\n", + " 'i am peace',\n", + " 'peace is in me',\n", + " 'ong sohung',\n", + " 'sohung',\n", + " 'ong sohung',\n", + " 'sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'ong sohung',\n", + " 'yeah...',\n", + " \"you've got me where you want me\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me where you want...\",\n", + " 'wooo!',\n", + " 'dit-it-it!',\n", + " 'dit-it-it!',\n", + " 'dit-it-it!',\n", + " 'dit-it-it!',\n", + " 'oooooooh, ooooooh, oooooooh',\n", + " 'oooooooh, ooooooh, oooooooh',\n", + " 'oooooooh, ooooooh, oooooooh',\n", + " \"you've got me where you want me\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me where you want me\",\n", + " 'doo-do doo-doo-do!',\n", + " 'doo-do doo-doo-do!',\n", + " 'doo-do doo-doo-do!',\n", + " \"you've got me...\",\n", + " \"you've got me...\",\n", + " \"you've got me...\",\n", + " \"you've got me...\",\n", + " \"you've got me!\",\n", + " 'wooo!',\n", + " 'dit-it-it!',\n", + " 'dit-it-it!',\n", + " 'dit-it-it!',\n", + " 'oooooooh, ooooooh, oooooooh',\n", + " 'oooooooh, ooooooh, oooooooh',\n", + " 'oooooooh, ooooooh, oooooooh',\n", + " \"you've got me where you want me\",\n", + " \"you've got me...\",\n", + " \"you've got me...\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me...\",\n", + " \"you've got me...\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me...\",\n", + " \"you've got me...\",\n", + " \"you've got me where you want me\",\n", + " \"you've got me...\",\n", + " \"you've got me...\",\n", + " 'wooooh!',\n", + " 'doo-do doo-doo-do!',\n", + " 'doo-do doo-doo-do!',\n", + " 'doo-do doo-doo-do!',\n", + " 'doo-do doo-doo-do!',\n", + " 'doo-do doo-doo-do!',\n", + " 'doo-do doo-doo-do!']},\n", + " 'data': ['waiting for you',\n", + " \"i've been waiting so long for you\",\n", + " 'for you',\n", + " 'waiting for you',\n", + " \"i've been waiting so long for you\",\n", + " 'for you',\n", + " 'waiting for you',\n", + " \"i've been waiting so long for you\",\n", + " 'for you',\n", + " 'waiting for you',\n", + " \"i've been waiting so long for you\",\n", + " 'for you',\n", + " 'for you',\n", + " 'for you',\n", + " 'waiting for you',\n", + " \"i've been waiting so long for you\",\n", + " 'for you',\n", + " 'for you',\n", + " 'for you',\n", + " 'for you',\n", + " 'for you',\n", + " 'waiting for you',\n", + " \"i've been waiting so long for you\",\n", + " 'for you',\n", + " 'waiting for you',\n", + " \"i've been waiting so long for you\",\n", + " 'for you',\n", + " 'waiting for you',\n", + " \"i've been waiting so long for you\",\n", + " 'for you',\n", + " 'waiting for you',\n", + " \"i've been waiting so long for you\",\n", + " 'for you',\n", + " 'give it up, yeah huh aaaah',\n", + " 'give it up, yeah huh aaaah',\n", + " 'do the drake',\n", + " 'get back huh',\n", + " 'do the drake',\n", + " 'get back wow',\n", + " 'give it up, yeah huh aaaah',\n", + " 'give it up, yeah huh aaaah',\n", + " 'waaaaaw',\n", + " 'aaaaah',\n", + " 'give it up, yeah huh aaaah',\n", + " 'give it up, yeah huh aaaah',\n", + " 'do the drake',\n", + " 'get back huh',\n", + " 'do the drake',\n", + " 'get back wow',\n", + " 'give it up, yeah huh aaaah',\n", + " 'give it up, yeah huh aaaah',\n", + " 'give it up, yeah huh aaaah',\n", + " 'give it up, yeah huh aaaah',\n", + " 'do the drake',\n", + " 'get back huh',\n", + " 'do the drake',\n", + " 'get back wow',\n", + " 'give it up, yeah huh aaaah',\n", + " 'give it up, yeah huh aaaah',\n", + " 'pearly shells from the ocean',\n", + " 'shining in the sun',\n", + " 'covering the shore',\n", + " 'when i see them',\n", + " 'my heart tells me that i love you',\n", + " 'more than all the little pearly shells',\n", + " 'for every grain of sand upon the beach',\n", + " \"i've got a kiss for you\",\n", + " \"and i've got more left over\",\n", + " 'for each star that twinkles in the blue',\n", + " 'pearly shells',\n", + " 'shining in the sun',\n", + " 'covering the shore',\n", + " 'when i see them',\n", + " 'my heart tells me that i love you',\n", + " 'more than all the little pearly shells',\n", + " 'pupu a o ewa',\n", + " 'i ka nuku',\n", + " 'e lawe mai',\n", + " 'ahe aina',\n", + " 'mai no',\n", + " 'ala hula puuloa he ala hele no kaahupahau',\n", + " 'i apau huna one i ka kahakai',\n", + " 'ua honi nau',\n", + " \"ho'i koe lawa na\",\n", + " \"pakahi hoku 'i ka lani\",\n", + " 'puhau',\n", + " 'ala hula puuloahe ala hele no kaahupahau',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ahh!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ahh!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"',\n", + " '\"ooh, ooh! it\\'s great, yeah!\"']}}},\n", + " 'nb': {'sentence': {'pop': {'meta': {'train_data': ['har du det fint nå, er du et vakkert sted uten farer?',\n", + " 'jeg har blitt stor nå, men skriver fortsatt brev til en som ikke svarer',\n", + " 'jeg ville spurt deg om da du var ung, hva du tenkte på',\n", + " 'om du kjempet mot de samme ting som jeg gjør nå',\n", + " 'så mange ting du ikke vet',\n", + " 'ubesvarte brev',\n", + " 'og disse gatene er dekket av alle dine gamle fotspor',\n", + " 'jeg følger etter dem så godt jeg kan',\n", + " 'men jeg husker ikke hvor du tro',\n", + " 'og jeg har ikke tid til hjertesorg, den må du ta fra meg',\n", + " 'for det banker to hjerter i meg nå',\n", + " 'det er så mye jeg vil fortelle deg',\n", + " 'så mange ting du ikke vet',\n", + " 'ubesvarte brev',\n", + " 'english translation',\n", + " 'are you ok now? are you in a beautiful place, safe from danger?',\n", + " \"i'm all grown up now, but am still writing letters to someone who doesn't answer\",\n", + " 'i would have asked you what you thought about when you were young',\n", + " 'whether you fought against the same things that i do now',\n", + " \"so many things you don't know, unanswered letters\",\n", + " 'and these streets are covered with all of your old footsteps',\n", + " 'i follow them as well as i can',\n", + " \"but i don't remember where you walked\",\n", + " \"and i don't have time for heartbreak, you have to take it away from me\",\n", + " 'because i have two hearts beating in me now',\n", + " 'there is so much i would like to tell you',\n", + " \"so many things you don't know, unanswered letters\",\n", + " 'når stormen setter til',\n", + " 'og uvær river trær fra stammen',\n", + " 'da, sånn rundt nattestid er',\n", + " 'det odin hunder samles',\n", + " 'du kan høre oss når månen stikker',\n", + " 'frem men aldri om du ser oss før du',\n", + " 'blir en kriger selv',\n", + " 'jegeren leder oss vi er født til å sloss',\n", + " 'over fjell og fjorder gjennom trolske skoger',\n", + " 'odins jakt åsgårdsreien',\n", + " 'odins hunder einherjen',\n", + " '(english translation:)',\n", + " '(asgardsreien)',\n", + " 'when the storm sets and tear trees apart',\n", + " 'then, around the darkest hours the dogs of odin will gather',\n", + " 'you can hear us when the moon appear above',\n", + " 'but you will never see us',\n", + " 'before you become a warrior yourself',\n", + " 'the hunter leads us we are born to fight',\n", + " 'over mountains and fjords',\n", + " 'through enchanted forests',\n", + " 'odins hunt asgardsreien',\n", + " 'odins dogs einherjen',\n", + " '(music: hrimgrimnir, lyric: vanargandr)',\n", + " 'nordens paradis er gravlagt i et slør av løgn men under hviler fortsatt',\n", + " 'den hedenske sannhet',\n", + " 'hlorride åpner sine øyne ved yggdrasils stamme. mektige allfader reiser',\n", + " 'seg i valaskjalv',\n", + " 'lysmaktens ørn og mørkemaktens nidhogg. stridens forbannelser gjennom ratatosk',\n", + " 'blir sendt',\n", + " 'igjen er det liv i urdabrønnen. søken for visdom i rimtussenes brønn er i gang',\n", + " 'over nivlheim veller fortsatt kvergjelme. en ny storhetstid ser sitt utbrudd',\n", + " 'hold fast ved ditt opphav. portene skal åpnes',\n", + " 'igjen er reginsnagler slått inn i himmelvelvets søyle',\n", + " 'igjen spinner nornene den nyfødtes skjebne. igjen truer folket fra nord med',\n", + " 'vinterens evige mørke',\n", + " 'vi entrer en ny tid, legger en annen bak. hedensk regin, riv vekk sløret av løgn',\n", + " 'de dystre verdener av ni er mektigere enn før. en horde av svikere vandrer den',\n", + " 'dunkle sti',\n", + " 'sigtyrs navn runger gjennom nordens fjell og kratt. på hlidskjalf han sitter',\n", + " 'og våker',\n", + " 'fortell meg, mime, den glemte saga. jeg søker din visdom, jeg søker ditt hat',\n", + " 'alt jeg begjærer ligger og hviler i din hånd. gi meg den hedenske sannhets ånd',\n", + " 'hærfjotur fjetrer krigerene av korset, hvor godt et nederlag jeg ser',\n", + " 'jeg speiler meg i kristent blod. en ny storhetstid ser sitt utbrudd',\n", + " 'himlen setter sprekker, mime, hørte min bønn',\n", + " 'så vakkert et syn det er, å se alt som engang var ta liv igjen',\n", + " 'reginsnagler er slått inn for å bli. odin vender aldri vekk sitt blikk',\n", + " 'i mannheim jeg vandrer stolt, vender mitt blikk mot gudeheimen',\n", + " '\"en gang fallt vi, men bare en\"',\n", + " '(english translation:)',\n", + " '(of norse lineage)',\n", + " 'the northern paradise is buried in a veil of lies',\n", + " 'but underneath the pagan truth still rests',\n", + " 'hlorride opens his eyes by the roots of yggdrasil',\n", + " 'mighty allfather rises in valaskjalv',\n", + " \"the eagle of the power of light and nidhogg's power of darkness\",\n", + " 'the curse of the battle are sent through ratatosk',\n", + " 'there is life in the urda-well once again',\n", + " \"the search for wisdom in the frostgoblin's well has begun\",\n", + " 'over nivlheim kvergjelme still springs forth. a new time of greatness erupts',\n", + " 'hold on to your origin. the gates shall open',\n", + " 'the bolts of regin are once again driven into the column of the vault of heaven',\n", + " 'again the norns‘ spin fate of the newly born',\n", + " 'again the people of the north threaten with winters eternal darkness',\n", + " 'we enter a new era, and lay another behind',\n", + " 'pagan regin, tear away the veil of lies',\n", + " 'the dismal worlds of nine are more powerful than before',\n", + " 'a horde of betrayers wander the gloomy path',\n", + " \"sigtyr's name resounds through the mountains and the thickets of the north\",\n", + " 'upon hlidskjalf he sits and watches',\n", + " 'tell me mime, about the forgotten saga',\n", + " 'i seek your wisdom, i seek your hate',\n", + " 'all i desire rests in your hand',\n", + " 'give me the pagan spirit of truth',\n", + " 'haerfjotur spellbinds the warriors of the cross',\n", + " 'how great a defeat i see',\n", + " 'i see my reflection in christian blood',\n", + " 'a new time of greatness erupts',\n", + " \"the heaven's crack mime, you heeded my call\",\n", + " 'what a beautiful sight it is, to see everything as it once was, take life again',\n", + " 'the bolts of regin have been driven in for good',\n", + " \"odin's gaze will never turn away. in mannheim i wander proudly\",\n", + " 'i turn my gaze towards the home of the gods',\n", + " '\"once we fell, but only once\"',\n", + " 'lyse netter',\n", + " 'tindrende og klar',\n", + " 'vide landskap',\n", + " 'åpne landskap',\n", + " 'bright nights',\n", + " 'twinkling and clear',\n", + " 'vast landscapes',\n", + " 'open landscapes',\n", + " 'elv og daler',\n", + " 'fjord og fossefall',\n", + " 'åpne sletter',\n", + " 'sol der står i brann',\n", + " 'rivers and valleys',\n", + " 'fjord and waterfall',\n", + " 'open tracts',\n", + " 'where the sun is afire',\n", + " 'demonized!',\n", + " 'mesmerized by the moon!',\n", + " 'my soul belongs to the night!',\n", + " '\"...isen og snoen er livet mitt',\n", + " 'svart og hvit er',\n", + " 'mine farger...\"',\n", + " 'demonized!',\n", + " 'mesmerized by the moon!',\n", + " 'my soul belongs to the night!',\n", + " '\"...vi hater sol, vi',\n", + " 'elsker natten...',\n", + " '...dagen doer, solen doer, lykken',\n", + " 'doer...',\n", + " 'og jeg reiser igjen!...\"',\n", + " 'new years eve',\n", + " 'dressed up people by the table',\n", + " \"some one's standing up for speech\",\n", + " \"to see us coming they're not able\",\n", + " 'nor our magic feeling reach',\n", + " 'candles burning down so slowly',\n", + " 'may i take your hand to dance?',\n", + " \"orchestra's playing for us only\",\n", + " \"this i'd call true elegance\",\n", + " 'some time ago there was night',\n", + " 'you called the spirits and they came',\n", + " 'we both know now that they were right',\n", + " 'when the answer was my name',\n", + " 'the air of love might not exist',\n", + " \"it's hard to believe what is unseen\",\n", + " 'but black on white cannot be missed',\n", + " \"there's more than air in between\",\n", + " 'together last night of the year',\n", + " 'a kiss of yours, a touch of sky',\n", + " 'for a moment world was ours, my dear',\n", + " 'too beautiful to be a lie',\n", + " 'a star, a wish, a dream come true',\n", + " 'i never saw it coming by',\n", + " 'sparkling redness is now blue',\n", + " \"you're not mine, it makes me cry\",\n", + " 'new years eve with all its glimmering glory',\n", + " 'with the sparkling fire works and shining glow',\n", + " \"in my heart i'll always keep our true story\",\n", + " 'as i return to northern snow',\n", + " 'sami translation:',\n", + " 'ođđajagiruohtta',\n", + " 'čiŋadan olbmot beavdegáttis',\n", + " 'soamis vel sártni doallame',\n", + " 'eai áicca munno boahtima',\n", + " 'eaige olle munno gildi dovdduide',\n", + " 'gintalat jaskadit bullet, nohket',\n", + " 'oaččun go duinna dánsut?',\n", + " 'joavku čuojaha munnuide',\n", + " 'dát dat gal lea albma hearvái',\n", + " 'duvle muhtin ija',\n", + " 'don vuoiŋŋaid bivdet ja dat bohte',\n", + " 'dál moai dihte ahte sis lei njuolga',\n", + " 'go vástádus lei mu namma',\n", + " 'ráhkisvuođa áibmu ii soaitte gávdnot',\n", + " 'lea váttis jáhkkit man ii leat oaidnán',\n", + " 'muhto čáhppat vielgadis ii mana garvit',\n", + " 'lea eanet go áibmu munno gaskkas',\n", + " 'ovttas jagi maŋemus ija',\n", + " 'du cummá guoskkahii almmi',\n", + " 'bottoža máilbmi gullui munnuid, ráhkkásan',\n", + " 'ila čáppat leahkit gielisin',\n", + " 'násti, sávaldat, niehku duohtan',\n", + " 'in goassege vuordán dan šaddat',\n", + " 'gildi ruoksat lea dál alit',\n", + " 'ganjaldan go it leat mu',\n", + " 'ođđajagiruohtta gait gildi čuovggaiguin',\n", + " 'čuovgi dolaiguin ja šealgi hilaiguin',\n", + " 'mu váimmu ozas vurken munno muitalusa',\n", + " 'go fas máhcan davvi muohttagii',\n", + " 'nordlyset farger himmelen',\n", + " 'speiles ned på isen',\n", + " 'de sier tiden leger sår',\n", + " 'de sier tiden leger sår',\n", + " 'betatt av synets makt',\n", + " 'den sterke sol og månes pakt',\n", + " 'vil sannheten bli meg forunt?',\n", + " 'vil sannheten bli meg forunt?',\n", + " 'mitt sinn er et hav',\n", + " 'en alle tankers grav',\n", + " 'jeg ville gi det til deg',\n", + " 'jeg ville gi det til deg',\n", + " 'kan du se fargenes spill',\n", + " 'som hører nordnatten til',\n", + " 'vil du dele mitt syn?',\n", + " 'tør du dele mitt syn?',\n", + " 'translation:',\n", + " 'night of the north',\n", + " 'the northern lights colour the sky',\n", + " 'reflect on the ice',\n", + " 'they say time heals all wounds',\n", + " 'they say time heals all wounds',\n", + " 'seduced by the power of the sight',\n", + " 'the powerful union of sun and moon',\n", + " 'will i be bestowed with the truth?',\n", + " 'will i be bestowed with the truth?',\n", + " 'my mind is an ocean',\n", + " 'a grave of all thoughts',\n", + " 'i wanted to give it to you',\n", + " 'i wanted to give it to you',\n", + " 'can you see the play of colours',\n", + " 'belonging to the night of the north',\n", + " 'will you share what i see?',\n", + " 'do you dare share what i see?',\n", + " 'som av meg',\n", + " 'som ild i hår',\n", + " 'var du her',\n", + " 'jeg kunne vært alt du er',\n", + " 'alt du var, og alt du ville bli',\n", + " 'alle mørke tanker ville vike i vårt liv',\n", + " 'jeg skulle elsket deg, skulle gitt deg mitt blod',\n", + " 'og om du ville hadde jeg levd for deg',\n", + " 'som av meg',\n", + " 'som ild i hår',\n", + " 'var du her',\n", + " 'jeg kunne vært alt du er',\n", + " 'alt du var, og alt du ville bli',\n", + " 'fantes det en evighet, så var den til for oss',\n", + " 'jeg skulle ha sett for deg når solen sank i hav',\n", + " 'og om du ville hadde jeg dødd for deg',\n", + " 'om jeg ser tilbake',\n", + " 'på alt det som var',\n", + " 'jeg føler hva jeg følte og vet at ingen noen gang',\n", + " 'vil komme så nær',\n", + " 'som av meg',\n", + " 'som ild i hår',\n", + " 'var du her',\n", + " 'jeg kunne vært alt du er',\n", + " 'alt du var, og alt du ville bli',\n", + " 'tiden skulle bli en venn vi begge fant igjen',\n", + " 'men når jeg ser deg gå nå, vil jeg den skal gå med deg',\n", + " 'og viske ut den veien vi hadde lagt ut på',\n", + " 'translation:',\n", + " 'as of me',\n", + " 'as of me',\n", + " 'as fire in hair',\n", + " 'were you here',\n", + " 'i could have been all you are',\n", + " 'all you were, and all you wanted to be',\n", + " 'all dark thoughts would yield in our life',\n", + " 'i should have loved you, should have given you my blood',\n", + " 'and if you wanted, i would have lived for you',\n", + " 'as of me',\n", + " 'as fire in hair',\n", + " 'were you here',\n", + " 'i could have been all you are',\n", + " 'all you were, and all you wanted to be',\n", + " 'were there an eternity, then it was there for us',\n", + " 'i should have seen you when the sun set in the sea',\n", + " 'and if you wanted, i would have died for you',\n", + " 'if i look back',\n", + " 'at all that used to be',\n", + " 'i feel what i felt and i know that no one',\n", + " 'will ever come quite so close',\n", + " 'as of me',\n", + " 'as fire in hair',\n", + " 'were you here',\n", + " 'i could have been all you are',\n", + " 'all you were, and all you wanted to be',\n", + " 'time was to become a friend we both rediscovered',\n", + " 'but when i see you leaving now, i want it to go with you',\n", + " 'and erase the path we had set out upon',\n", + " 'hei, vil du ta min hånd',\n", + " 'så kan du bli med',\n", + " 'til mitt annerledessted',\n", + " 'av et hav i stormens makt',\n", + " 'ble jeg skylt inn mot land',\n", + " 'en gang på alle fargenes strand',\n", + " 'se meg inn i øynene',\n", + " 'kan du like det du ser?',\n", + " 'vil du se mer?',\n", + " 'hei du, nå favnes vi inn – i mitt spindelsinn',\n", + " 'her kan vi falle til ro – i mitt spindelsinn',\n", + " 'jeg fulgte vindens sang',\n", + " 'her var toner som fløy',\n", + " 'som farger ut av skogens tøy',\n", + " 'jeg vil ta deg med inn hit',\n", + " 'så du kan se hvem jeg er',\n", + " 'og om du vil bli værende her',\n", + " 'se meg inn i øynene',\n", + " 'kan du like det du ser?',\n", + " 'vil du se mer?',\n", + " 'hei du, nå favnes vi inn – i mitt spindelsinn',\n", + " 'her kan vi falle til ro – i mitt spindelsinn',\n", + " 'og når du ser lanterner lyse vei',\n", + " 'som en bro ut av hav og land',\n", + " 'kan du like det du ser?',\n", + " 'vil du se mer?',\n", + " 'hei du, nå favnes vi inn i mitt spindelsinn',\n", + " 'her kan vi falle til ro – i mitt spindelsinn',\n", + " 'translation:',\n", + " 'spindelsinn',\n", + " 'hey, will you take my hand',\n", + " 'and come along',\n", + " 'to my unique place',\n", + " \"by a sea under the storm's control\",\n", + " 'was i washed ashore',\n", + " 'once on the beach of all colours',\n", + " 'look me in the eyes',\n", + " 'might you like what you see?',\n", + " 'would you like to see more?',\n", + " \"hey you, we're being embraced – in my mind web\",\n", + " 'here we can come to rest – in my mind web',\n", + " \"i followed the wind's song\",\n", + " 'there were tones flying',\n", + " \"as colours out of the forest's cloth\",\n", + " 'i want to bring you along in here',\n", + " 'so you can see who i am',\n", + " 'and whether you want to remain here',\n", + " 'look me in the eyes',\n", + " 'might you like what you see?',\n", + " 'would you like to see more?',\n", + " \"hey you, we're being embraced – in my mind web\",\n", + " 'here we can come to rest – in my mind web',\n", + " 'and when you see lanterns marking your path',\n", + " 'as a bridge over sea and land',\n", + " 'might you like what you see?',\n", + " 'would you like to see more?',\n", + " \"hey you, we're being embraced in my mind web\",\n", + " 'here we can come to rest – in my mind web',\n", + " 'og lev drmmen',\n", + " 'og lev drmmen',\n", + " 'og lev drmmen',\n", + " 'elska d',\n", + " 'du vis m alt fra sorte hull til fossefall',\n", + " 'du lar m stirr inni d p kloss hold',\n", + " 'du gir m innsikt, livet mitt e sinnsykt',\n", + " 'mat m, mat m, du e mitt kosthold',\n", + " 'i kveld dansa vi salsa, hanne srvaag',\n", + " 'fjelltur med han monsen, ah vi e fr r',\n", + " 'vi ska kjr p, vi som tr',\n", + " 'syng ut mens en million tv-tittera hr p',\n", + " 'i love you te quiero, i love you oh-oh-oh',\n", + " 'i love you te quiero, i love you ai-ai-ai',\n", + " 'i love you te quiero, i love you oh-oh-oh',\n", + " 'elska d, ya-ha-ha',\n", + " 'stue, kjkken, bad, tel og med p soverommet',\n", + " 'vi har gjort det overalt helt siden va unge',\n", + " 'det e s trygt og godt nr du dansa foran m',\n", + " 'vil bli gammel og glem alt sammen med d',\n", + " 'huska du champagne-episoden med han aune sand?',\n", + " 'har du glmt at vi kom ut av skapet hos han skavlan?',\n", + " 'du lev bare en gang, du sir det birkje',\n", + " 'trur de m ha glmt at livet gr i reprise',\n", + " 'i love you te quiero, i love you oh-oh-oh',\n", + " 'i love you te quiero, i love you ai-ai-ai',\n", + " 'i love you te quiero, i love you oh-oh-oh',\n", + " 'elska d, ya-ha-ha',\n", + " 'i love you te quiero, i love you oh-oh-oh',\n", + " 'i love you te quiero, i love you ai-ai-ai',\n", + " 'i love you te quiero, i love you oh-oh-oh',\n", + " 'elska d, ya-ha-ha',\n", + " 'og lev drmmen, p stedet, p stedet',\n", + " 'og lev drmmen, livet, leve',\n", + " 'og lev drmmen gjennom en tv',\n", + " 'elska d',\n", + " 'i love you te quiero, i love you oh-oh-oh',\n", + " 'i love you te quiero, i love you ai-ai-ai',\n", + " 'i love you te quiero, i love you oh-oh-oh',\n", + " 'elska d, ya-ha-ha',\n", + " 'i love you te quiero, i love you oh-oh-oh',\n", + " 'i love you te quiero, i love you ai-ai-ai',\n", + " 'i love you te quiero, i love you oh-oh-oh',\n", + " 'elska d, ya-ha-ha',\n", + " 'hun løfter sitt blikk mot månen rund',\n", + " 'trollferd gjennom skogen',\n", + " 'alle de venter i innerste lund',\n", + " 'trollferd gjennom skogen',\n", + " 'kom, ta i ring – og dansen vil gå hele natten',\n", + " 'latter og leven, bålet blir tent',\n", + " 'trollferd gjennom skogen',\n", + " 'det bruser i trærne, det ventes spent',\n", + " 'trollferd gjennom skogen',\n", + " 'kom, ta i ring – og dansen vil gå hele natten',\n", + " 'hun går imot dem på naken fot',\n", + " 'trollferd gjennom skogen',\n", + " 'hun vet at i natt teller hennes mot',\n", + " 'trollferd gjennom skogen',\n", + " 'kom, ta i ring – og dansen vil gå hele natten',\n", + " 'stunden nærmer seg, hun er klar',\n", + " 'trollferd gjennom skogen',\n", + " 'vinden stilner i alle får',\n", + " 'trollferd gjennom skogen',\n", + " 'fang meg og fri meg, la dansen gå',\n", + " 'trollferd gjennom skogen',\n", + " 'fra alle kanter synges det nå',\n", + " 'trollferd gjennom skogen',\n", + " 'kom, ta i ring – og dansen vil gå hele natten',\n", + " 'translation:',\n", + " 'troll journey',\n", + " 'she lifts her view to the moon round',\n", + " 'troll journey through the woods',\n", + " 'gathered they wait in innermost grove',\n", + " 'troll journey through the woods',\n", + " 'come, join the ring – and the dancing shall last the whole night',\n", + " 'laughter and liveliness, the bonfire is lit',\n", + " 'troll journey through the woods',\n", + " \"there's rustling in the trees, and excited awaitening\",\n", + " 'troll journey through the woods',\n", + " 'come, join the ring – and the dancing shall last the whole night',\n", + " 'she walks toward them on naked foot',\n", + " 'troll journey through the woods',\n", + " 'she knows that she must be brave tonight',\n", + " 'troll journey through the woods',\n", + " 'come, join the ring – and the dancing shall last the whole night',\n", + " 'the moment approaches, she is ready',\n", + " 'troll journey through the woods',\n", + " 'the wind dies down on every field',\n", + " 'troll journey through the woods',\n", + " 'trap me and free me, let the dancing commence',\n", + " 'troll journey through the woods',\n", + " 'from all directions the singing comes',\n", + " 'troll journey through the woods',\n", + " 'come, join the ring – and the dancing shall last the whole night',\n", + " 'uden sorrig for det, som svandt',\n", + " 'han drager paa nye & farlig fâ¦rd',\n", + " 'hans eeneste sorrig vâ¦re at han intet fandt',\n", + " 'som vaer een taare vâ¦rdt',\n", + " 'til han medynk saae',\n", + " 'i hendes èine, der alt lius vaer tendt',\n", + " 'der al glâ¦de snart vaer endt',\n", + " 'slig een pige hellig, vacker',\n", + " 'det brustne blik flacker',\n", + " 'hun kiâ¦ndte haabet brast',\n", + " 'han viiger for bendes blik',\n", + " 'med een smertelig mystik',\n", + " 'fylder hende mod hiâ¦rtenskiâ¦r',\n", + " 'med hendes ild ligger sort & dèd',\n", + " 'ondskab qvalte hver een glèd',\n", + " 'dend hviide gloe, dend slukte han',\n", + " \"men dend ha'r skabt een mâ¦cktig brand\",\n", + " 'aff had & elskov & tungindigt haab',\n", + " 'nyfèdt bâ¦res maanen frem',\n", + " 'ofver det sind som her bleff rèfved',\n", + " 'aff dend mèrcke',\n", + " 'magi paa hende èfved',\n", + " 'med râ¦dde skrit. mod ham -',\n", + " 'dybt berèrt:',\n", + " '\"du diefvlens sendebud',\n", + " 'som bâ¦rer fryckt fra mand til brud',\n", + " 'du menskehadets reene styrkedrik',\n", + " 'du nâ¦ring for min siâ¦l, som dèr;',\n", + " 'gaae ey bort, o skygge, fèr',\n", + " 'ieg viiser kiâ¦ndsler som ieg hafvde angst',\n", + " 'for at nâ¦re fèr ieg bleff din fangst\"',\n", + " 'on he hunts with sorrow none',\n", + " 'for what hath passed is gone',\n", + " 'his sole regret the absence',\n", + " 'of desires worthie his teares',\n", + " 'until he saw pitie in her eyne',\n", + " 'where all the light did shine',\n", + " 'and soone all joie should die',\n", + " 'her glazed eyne did wander',\n", + " 'a mayden pure in grandeur',\n", + " 'left alone & lost',\n", + " 'from her eyne he retreats',\n", + " 'clad in mournfulle mysterie',\n", + " 'he takes her heart in his',\n", + " 'but dark & dead is her light',\n", + " \"evil took her fire's breath\",\n", + " \"her embers were by him devour'd\",\n", + " 'and inside of him a fire buildes',\n", + " 'of hate & love & hope so sad',\n", + " 'the moone comes forth',\n", + " 'born anew above her soule -',\n", + " 'stolen here by the dark',\n", + " 'binding magick of olde',\n", + " \"frighten'd she nears him\",\n", + " 'and speakes:',\n", + " 'thou, messenger of the devil',\n", + " \"who brings fear into lovers' hearts\",\n", + " 'thou, elixir to the hatred of men',\n", + " 'and air to my soule, now dying;',\n", + " 'leave me not, o shadow',\n", + " 'before i give myself away',\n", + " 'to these long denied desires',\n", + " 'thy gift to my dying heart',\n", + " 'i den mørke hall',\n", + " 'hvor døden er ens kall',\n", + " 'for her er ingen nåde løs',\n", + " 'i den tomme, glemte sal',\n", + " 'her hvor balder frøs',\n", + " 'og døde i hels mørke hall',\n", + " 'gravlagt i eljudne',\n", + " 'ingen her en fredsmann er',\n", + " 'pine og pest',\n", + " 'fra dødsrikets begjær',\n", + " 'la skrikene klinge',\n", + " 'og lokke døden frem',\n", + " 'for den skal bringe',\n", + " 'fortapelse inn i dem',\n", + " 'i dunkle daler gamle',\n", + " 'pines æser, vaner - alle',\n", + " 'i gamle mørke eljudne',\n", + " 'i dunkle daler gamle',\n", + " 'tomhetens korstog har kommet',\n", + " 'glemsel og tap har dødsriket bragt',\n", + " 'æser og vaner er alle i hel dømt',\n", + " 'der hvor balder ble gravlagt',\n", + " 'in the dark hall',\n", + " 'where death is ones call',\n", + " 'for here no mercy is',\n", + " 'in the empty forgotten hall',\n", + " 'where balder froze',\n", + " 'and died in hels dark hall',\n", + " 'buried in eljudne',\n", + " 'where no man peace can find',\n", + " 'pain and plague from the realms of deaths desire',\n", + " 'let the screams sound',\n", + " 'and lure death forth',\n", + " 'it shall bring perdition into them',\n", + " 'in obscure and ancient valleys',\n", + " 'æsir and vanir - all is tormented',\n", + " 'in the cold and dark eljudnir',\n", + " 'in obscure and ancient valleys',\n", + " 'the crusade of emtiness has arrived',\n", + " 'oblivion and loss has the realms of death',\n", + " 'æsir and vanir are all in hel doomed',\n", + " 'where balder was buried',\n", + " 'jeg leter ikke mer, for jeg har funnet gull',\n", + " 'og jeg kan ikke miste det uansett hva som skjer',\n", + " 'jeg venter ikke mer, på sol, på en god dag',\n", + " 'på å våkne, på å se',\n", + " 'at bunnløs lykke er ikke et fyrverkeri',\n", + " 'den er stille som snø, stille som snø',\n", + " 'som februarlys og tulipaner',\n", + " 'som venter sakte med alt sitt vakre på å dø',\n", + " 'jeg leter ikke mer, for smilet ditt er tatovert',\n", + " 'i hjertet mitt og jeg kan aldri bli blind igjen',\n", + " 'jeg venter ikke mer, jeg har solgt skjøtet',\n", + " 'til familiens arvesorg, og jeg skal aldri aldri dit igjen',\n", + " 'bunnløs lykke er ikke et fyrverkeri',\n", + " 'den er stille som snø, stille som snø',\n", + " 'som februarlys og tulipaner',\n", + " 'som venter sakte med alt sitt vakre på å dø',\n", + " 'english translation',\n", + " \"i'm not searching any more, for i have found gold\",\n", + " \"and i can't lose it no matter what happens\",\n", + " \"i'm not waiting any more for sun, for a good day\",\n", + " 'to wake up, to see',\n", + " 'that endless happiness is not fireworks',\n", + " \"it's as quiet as snow, quiet as snow\",\n", + " 'like february light and tulips',\n", + " 'that slowly wait in all their beauty to die',\n", + " \"i'm not searching any more, for your smile is tattooed\",\n", + " 'in my heart and i can never become blind again',\n", + " \"i'm not waiting any more, i have sold the title deed\",\n", + " 'to the family sorrow, and i will never ever go there again',\n", + " 'endless happiness is not fireworks',\n", + " \"it's as quiet as snow, quiet as snow\",\n", + " 'like february light and tulips',\n", + " 'that slowly wait in all their beauty to die',\n", + " 'ichot a burde in boure bryht',\n", + " 'that sully semly is on syht',\n", + " 'menskful maiden of myht',\n", + " 'feir and fre to fonde',\n", + " 'in al this wurhliche won',\n", + " 'a burde of blod ant of bon',\n", + " 'neuerzete y nuste non',\n", + " 'lussomore in londe',\n", + " 'blow, blow, northerne wynd',\n", + " 'sent thou me my suetyng!',\n", + " 'blow, blow, norterne wynd',\n", + " 'blou! blou! blou!',\n", + " 'with lokkes leftliche ant longe',\n", + " 'with frount ant face feir to fonde',\n", + " 'with murpes monie mote heo monge',\n", + " 'that brid so breme in boure',\n", + " 'with lossom eye grete ant gode',\n", + " 'with browen blysfol under bode',\n", + " 'he that reste hin the rode',\n", + " 'that leflich lif honoure!',\n", + " 'blow, blow, northerne wynd',\n", + " 'sent thou me my suetyng!',\n", + " 'blow, blow, norterne wynd',\n", + " 'blou! blou! blou!',\n", + " 'for hire loue y carke ant care',\n", + " 'for hire loue y droupne ant dare',\n", + " 'for hire loue my blisse is bare',\n", + " 'ant al ich waxe won;',\n", + " 'for hire loue in slep y slake',\n", + " 'for hire loue al nyht ich wake',\n", + " 'for hire loue mournyng y make',\n", + " 'mor then eny mon',\n", + " 'blow, blow, northerne wynd',\n", + " 'sent thou me my suetyng!',\n", + " 'blow, blow, norterne wynd',\n", + " 'blou! blou! blou!',\n", + " 'møndarn',\n", + " \"olje og kim send amfetamin'a, jeg er fra møndarn\",\n", + " 'dj broiler sett på no hard style',\n", + " 'kjetil oppspin og skløttene dj broiler på laurits',\n", + " 'møndaren',\n", + " 'møndaren',\n", + " 'møndaren',\n", + " 'møndaren',\n", + " 'møndaren',\n", + " 'møndaren',\n", + " 'extesi party extesi party kommer jenter hit får di drink med no rart i',\n", + " 'extesi party extesi party kommer jenter hit får di drink med no rart i',\n", + " 'ghb showers ghb showers rohypnol i drinken gir meg super powers',\n", + " 'ghb showers ghb showers rohypnol i drinken gir meg super powers',\n", + " \"olje og kim send amfetamin'a, jeg er fra møndarn\",\n", + " 'møndaren',\n", + " 'møndaren',\n", + " 'møndaren',\n", + " 'møndaren',\n", + " 'møndaren',\n", + " 'møndaren',\n", + " 'møndaren',\n", + " 'extesi party extesi party kommer jenter hit får di drink med no rart i',\n", + " 'extesi party extesi party kommer jenter hit får di drink med no rart i',\n", + " 'ghb showers ghb showers rohypnol i drinken gir meg super powers',\n", + " 'ghb showers ghb showers rohypnol i drinken gir meg super powers',\n", + " 'jeg vevde i stillhet og jeg vevde i sang',\n", + " 'i mitt hus der langt mot nord',\n", + " 'med en hage av villskap og berusende klang',\n", + " 'spant jeg mine ord',\n", + " 'jeg lyttet til vinden og jeg førte min tråd',\n", + " 'med en nål fra regnbuens hånd',\n", + " 'og til sist når jeg stod der med kjolen på',\n", + " 'ble jeg løftet av skogens ånd',\n", + " 'og kommer du ut forbi mitt hus engang',\n", + " 'skal du høre at jeg synger din sang',\n", + " 'og du vet du har et sted du kan gå',\n", + " 'når du har skogens kjole på',\n", + " 'jeg bærer min kjole med stolthet og fryd',\n", + " 'da kjenner jeg at jeg er fri',\n", + " 'og når jeg lytter til regndråpers lyd',\n", + " 'ønsker jeg det var vi',\n", + " 'som danset av glede der ute i det blå',\n", + " 'selv om regnet øste ned',\n", + " 'vi er en av samme med skogens kjole på',\n", + " 'og det tror jeg alle kan se',\n", + " 'og kommer du ut forbi mitt hus en gang',\n", + " 'skal du høre at jeg synger min sang',\n", + " 'og du vet du har et sted du kan gå',\n", + " 'når du har skogens kjole på',\n", + " 'og kommer du ut forbi mitt hus en gang',\n", + " 'hører du at jeg synger din sang',\n", + " 'vet du at du har et sted du kan gå',\n", + " 'når du har skogens kjole på',\n", + " 'translation:',\n", + " \"the forest's gown\",\n", + " 'i wove in silence and i wove in song',\n", + " 'in my house far up north',\n", + " 'with a garden of wildness and merry sound',\n", + " 'spun i my words',\n", + " 'i listened to the wind and guided my thread',\n", + " \"with a needle from the rainbow's hand\",\n", + " 'and finally when i stood there with the gown on',\n", + " \"i was lifted by the forest's spirit\",\n", + " 'and if you come by my house some time',\n", + " 'you shall hear me singing your song',\n", + " \"and you know you've got a place to go\",\n", + " \"when you're wearing the forest's gown\",\n", + " 'i wear my gown with pride and joy',\n", + " 'and i feel i am free',\n", + " 'and when i listen to the sound of raindrops',\n", + " 'i wish it were we',\n", + " 'who danced in joy out there in the blue',\n", + " 'even though the rain poured down',\n", + " \"we are one and the same wearing the forest's gown\",\n", + " \"and i think that's clear for all to see\",\n", + " 'and if you come by my house some time',\n", + " 'you shall hear me singing my song',\n", + " \"and you know you've got a place to go\",\n", + " \"when you're wearing the forest's gown\",\n", + " 'and if you come by my house some time',\n", + " \"you'll hear me singing your song\",\n", + " \"you'll know you've got a place to go\",\n", + " \"when you're wearing the forest's gown\",\n", + " 'let the monkey out',\n", + " 'we can throw things, scream and shout',\n", + " 'can even make the mushroom clouds',\n", + " \"i don't know but we'll figure it out\",\n", + " 'du kan gjørra mytti gæli',\n", + " 'du kan føl dæ ganske tappa',\n", + " \"du kan slå dæ løs på by'n\",\n", + " 'og du kan sett dæ ned på trappa',\n", + " 'men hvis du passe tida',\n", + " 'og har tida til å slappe av',\n", + " 'kan du gjørra som han vinni',\n", + " 'ta en luftetur med apa',\n", + " \"e det apa te'n vinni, bare vinni som vet\",\n", + " 'e det papp og bomull inni, bare vinni som vet',\n", + " 'å ha seg med en ape, det e passe lite straight',\n", + " 'men å ape etter apa, det e heller ikke greit',\n", + " 'let the monkey out',\n", + " 'we can throw things, scream and shout',\n", + " 'can even make the mushroom clouds',\n", + " \"i don't know but we'll figure it out\",\n", + " 'dø ung, dø hard',\n", + " 'til valhall vi drar',\n", + " 'i et fandens ritt',\n", + " 'menn støpt av granitt',\n", + " 'flere hundre krigers drikkelag',\n", + " 'en evig fest med måltid og slag',\n", + " 'skjenk våre krus til randen',\n", + " 'gi faen i morgenfanden',\n", + " 'drikk for våre brødre',\n", + " 'og drikk for de av dem som døde',\n", + " 'drikk!...så mjøden din',\n", + " 'drikk!...da for odin!!',\n", + " 'dø i ære do uten frykt',\n", + " 'til gylne haller det bærer',\n", + " 'i et fandens ritt',\n", + " 'dø ung, dø hard, dø i ære',\n", + " 'dø uten frykt',\n", + " '(english translation:)',\n", + " '(eternal)',\n", + " 'die young, die hard',\n", + " 'to valhalla we travel',\n", + " 'in a hellish ride',\n", + " 'men moulded of granite',\n", + " \"several hundred warrior's symposium\",\n", + " 'an eternal feast with meal and bottle',\n", + " 'pour our mugs to the rim',\n", + " \"don't give a damn about tomorrow's pain\",\n", + " 'drink for our brothers',\n", + " 'and drink for those who died',\n", + " 'drink!!...your mead',\n", + " 'drink!!...for odin',\n", + " 'die honourfull die without fear',\n", + " 'to the golden halls in a hellish ride',\n", + " 'die young, die hard, die honourfull, die without fear',\n", + " 'nå føler jeg att tiden er naer. min visdom',\n", + " 'mine tanker, har nådd, og skapt ... jeg har',\n", + " 'kunskapene nå. min sjel hungrer ei mer',\n", + " 'nok tid, har død hen. nå kan jeg vandre, i',\n", + " 'dimensioner',\n", + " 'english translation: emperor of an dimension unknown',\n", + " 'now i feel that the time is near. my wisdom',\n", + " 'my thoughts, has reached and created ... i have',\n", + " 'the knowledge now. my soul craves no longer',\n", + " 'enough time has died. now i can wander, in',\n", + " 'dimensions',\n", + " 'i am officially running',\n", + " 'for president of the united states',\n", + " \"i'm i’m i'm i'm i’m really rich\",\n", + " \"i'm i'm i'm i'm i'm really rich\",\n", + " 'skal jeg sitte å høre på sånn surreprat som detta her',\n", + " 'det gjør jeg ikke',\n", + " 'nobody would be tougher on isis than donald trump',\n", + " 'nobody would be tougher on isis than donald trump trump trump trump',\n", + " 'koffer skal e det',\n", + " 'ko koffer skal e det',\n", + " 'koffer skal e det',\n", + " 'ko koffer skal e det',\n", + " 'koffer skal e det',\n", + " 'ko koffer skal e det',\n", + " 'exuda',\n", + " \"it's your body\",\n", + " 'hvorfor fullfører du ikke løpet',\n", + " 'koffer skal e det',\n", + " 'nå var du veldig smart',\n", + " 'koffer skal e det',\n", + " 'ko koffer skal e det',\n", + " 'koffer skal e det',\n", + " 'ko ko ko ko',\n", + " 'det gjør jeg ikke',\n", + " 'koffer skal e det',\n", + " 'ko koffer skal e det',\n", + " 'koffer skal e det',\n", + " 'ko ko ko ko',\n", + " 'det gjør jeg ikke',\n", + " 'nobody would be tougher on isis than donald trump',\n", + " 'nobody would be tougher on isis than donald trump trump trump trump',\n", + " \"you call women you don't like fat pigs, dogs, slobs and disgusting animals\",\n", + " 'only rosie o’donnel',\n", + " 'exuda',\n", + " 'it’s your body',\n", + " 'hvorfor fullfører du ikke løpet',\n", + " 'koffer skal e det',\n", + " 'nå var du veldig smart',\n", + " 'i am officially running',\n", + " 'for president of the united states',\n", + " 'det viser du faen ikke på tv',\n", + " 'nå var du veldig smart',\n", + " 'ikke sant ikke sant virkelig',\n", + " 'hadde du gått på denne skolen hadde du sikkert fått sekseren blank',\n", + " 'fortids redskap i rusten avmakt',\n", + " 'gamle spår fryst i is',\n", + " 'stilt i skauen nå',\n", + " 'der vi høgde på gammalt vis',\n", + " 'vi var menn ta skauens makt',\n", + " 'dreiv tømmer i vindens skugge',\n", + " 'ba ei stille bønn',\n", + " 'for døm mektige trea vi høgde',\n", + " 'langli-kara enda sine daer her',\n", + " 'døm gjekk ut ei novembernatt',\n", + " 'je leita og leita',\n", + " 'men såg døm aldri att',\n", + " 'kun et fjernt minne er døm nå',\n", + " 'alt døm lærte på sin veg',\n", + " 'skauens skikk og bruk',\n", + " 'det er viten som dauer med meg',\n", + " 'sovna inn på salig hvilestad',\n", + " 'nedgravd på moseseng nær randa ta lia',\n", + " 'borte for evig og alltid',\n", + " \"ingen tårer for den siste mann' ta skauen\",\n", + " 'et tre igjen på dau manns stad',\n", + " 'ei sliten bjørk i ensom majestet',\n", + " 'skauen gir og skauen tar',\n", + " 'slik det har vøri i all evighet',\n", + " 'alt vi gjorde har visna vekk',\n", + " 'lagt ned i ei stille grav',\n", + " 'sjøl om sorga har stilna',\n", + " 'takker je for det skauen gav',\n", + " 'old times’ tools in rusty resignation',\n", + " 'old tracks frozen in ice',\n", + " 'the forests are quiet now',\n", + " 'where we logged the old-fashioned way',\n", + " 'we were men carved by the force of nature',\n", + " 'we felled timber in the shadow of winds',\n", + " 'told a silent prayer',\n", + " 'for the majestic trees we cut down',\n", + " 'the guys from langila died here',\n", + " 'they went out a late november night',\n", + " 'i searched for ages',\n", + " 'but saw them never again',\n", + " 'now they are nothing but a faded memory',\n", + " 'everything they learned through their years',\n", + " 'the forest’s ways',\n", + " 'that is knowledge which dies with me',\n", + " 'put to rest on our holy ground',\n", + " 'buried on a bed of moss near the edge of a field',\n", + " 'perished forevermore',\n", + " 'no tears shed for forest’s last man',\n", + " 'a tree on dead man’s ground',\n", + " 'a tired birch in lonesome majesty',\n", + " 'the forest gives and takes',\n", + " 'as it has been for all eternity',\n", + " 'everything we did has withered away',\n", + " 'buried in a silent grave',\n", + " 'even though the sorrow has passed',\n", + " 'i thank the forest for what it gave',\n", + " 'de ringte meg fra hollywood - sa \"you got',\n", + " 'the look\"',\n", + " '\"jeg gjør hva som helst\", sa jeg - klar til å',\n", + " 'suge kukk',\n", + " 'klar til å make a movie - make it make it',\n", + " 'rain',\n", + " 'ville make the hall of fame, nahmsayin',\n", + " 'så jeg tok en tur til hollywood - sekken',\n", + " 'full av dreams',\n", + " 'skulle make the big screen, by any means',\n", + " 'så jeg ringte min kontakt opp, sa jeg er er',\n", + " 'i byen',\n", + " 'men de leava meg på seen, det er ikke',\n", + " 'alltid som it seems',\n", + " 'jeg har en manager i statene som digger',\n", + " 'det jeg gjør',\n", + " 'han sier alltid \"christopher, i love your',\n", + " 'charachter\"',\n", + " 'du har noe spesielt, really, du kan komme',\n", + " 'far',\n", + " 'og du er intelligent, baby you could be a',\n", + " 'star',\n", + " 'i think you can get a golden globe, oscar',\n", + " 'og en emmy',\n", + " 'du tør å tenke stort, det er deg og carew',\n", + " 'og hennie',\n", + " 'nå må jeg get my buzz going som en',\n", + " 'fucking bie',\n", + " 'ordne meg ny aksent og bli sammen med',\n", + " 'thea sofie',\n", + " 'alle i norge sier \"kom hjem på besøk, du',\n", + " 'lovte, du ga oss pinky\"',\n", + " 'jeg bare \"chill the fuck outm, jeg er',\n", + " 'opptatt med things\"',\n", + " 'pluss at weeden her er lilla, den ser ut',\n", + " 'som tinky winky',\n", + " 'er det så rart jeg henger ut fortsatt, i',\n", + " 'mean',\n", + " 'jeg er redd, jeg innrømmer det',\n", + " 'jeg vil ikke se filmen om mitt liv i reprise på',\n", + " 'tv3',\n", + " 'eller rett på dvd, men hei',\n", + " 'alle elsket meg som karsten og som han i',\n", + " 'af1',\n", + " 'i really thought you were amazing in your',\n", + " 'latest movie role',\n", + " 'sa jeg til en dude, for jeg visste han hadde',\n", + " 'blow',\n", + " 'you seem really cool bro, how long are',\n", + " 'you in town',\n", + " 'jeg bare \"god knows, guess i\\'ll see you',\n", + " 'guys around\"',\n", + " 'gotta go, i gotta raise some hell',\n", + " 'feste med it-jenter, sørge for å kiss and',\n", + " 'tell',\n", + " 'spise østers med de og really get out of',\n", + " 'my shell',\n", + " 'kun for i kveld',\n", + " 'må get the money tommorow',\n", + " 'pappen min heter ikke vipps kartel, bro',\n", + " \"i'm kind of a big deal back in norway, like\",\n", + " 'forreal',\n", + " 'du vet norwegian grammies?',\n", + " \"i think i'm up to like three of those\",\n", + " 'selling out solo shows, get the flus',\n", + " 'jeg er faktisk millionær, counting in',\n", + " 'norwegian crowns',\n", + " 'jeg er redd, jeg innrømmer det',\n", + " 'jeg vil ikke se filmen om mitt liv i reprise på',\n", + " 'tv3',\n", + " 'eller straight to dvd, men hei',\n", + " 'alle elsket meg som hubert og som han i',\n", + " 'af1',\n", + " 'treacherous queen',\n", + " 'who abused my good faith',\n", + " 'i will take you',\n", + " 'where birds have never been',\n", + " 'a knife in my belt',\n", + " 'a spear in my hand',\n", + " 'to my burning eyes',\n", + " 'your halls are made of glass',\n", + " 'treacherous queen',\n", + " 'you abused my good faith',\n", + " 'i will take you',\n", + " 'where birds have never been',\n", + " 'a knife in my belt',\n", + " 'a spearhead in my heart',\n", + " 'to my burning heart',\n", + " 'your walls are made of glass',\n", + " 'the age of the heroes',\n", + " 'a distant memory',\n", + " 'the iron law rules iceland',\n", + " 'evil kings faithless queens',\n", + " 'who hides in the bay of smoke',\n", + " 'nothing goes unpunished',\n", + " 'look where you step',\n", + " 'you might tread on me',\n", + " 'queen in the bay of smoke',\n", + " 'bring supplies',\n", + " 'for the worst of your winters',\n", + " 'i shall wear your pain',\n", + " 'as a golden crown',\n", + " 'we shall crawl the tunnels',\n", + " 'in the dark of the underworld',\n", + " 'a million midgets are waiting for you',\n", + " 'queen in the bay of smoke',\n", + " 'i tasted your beauty',\n", + " 'you threw me to the dogs',\n", + " 'i walked as a wolf among the dogs',\n", + " 'i walked as a god among the slaves',\n", + " 'queen in the bay of smoke',\n", + " 'i mørket under jorden',\n", + " 'ligger dvergenes druger',\n", + " 'den hvite dronning faller',\n", + " 'i regins svarte hull',\n", + " 'skalden søker',\n", + " 'en konges skamhevn',\n", + " 'dronningen dulgt',\n", + " 'i småfolkets berg',\n", + " 'dvergene stimler',\n", + " 'og fagermøya sammen',\n", + " 'skrek står å se',\n", + " 'i berg-disas blikk',\n", + " 'hva vondt har jeg gjort?',\n", + " 'hvor tar du meg hen?',\n", + " 'tåresalt drysser',\n", + " 'på gulvet av gull',\n", + " 'her skal du bli',\n", + " 'svilkefulle kvinne',\n", + " 'ta skalden til mann',\n", + " 'og skammen i hug',\n", + " 'gautaty sendte gondul og skogul for å kåre blant kongene',\n", + " ...]},\n", + " 'data': ['(music: hrymr, lyric: vanargandr)',\n", + " 'vår metafysiske virkelighet er gått tapt',\n", + " 'gudene er en død myte i manns liv',\n", + " 'står som evhemeristiske symboler',\n", + " 'ikke lenger som en milepæl i våre hjerter',\n", + " 'mennesket har banet vei for ny tenkning',\n", + " 'en slaves og den uverdiges dumskap',\n", + " 'skal vi glemme og la det bli',\n", + " 'en forgangen tid?',\n", + " '(english translation:)',\n", + " '(a bygone time)',\n", + " 'our metaphysical reality is lost',\n", + " 'the gods are a dead myth in mans life',\n", + " 'stand as evhemeristic symbols',\n", + " 'no longer as a milestone in our hearts',\n", + " 'man has deared the way for rethinking',\n", + " \"a slaves and the unworthy's foolishness\",\n", + " 'shall we forget and let it be',\n", + " 'a bygone time?',\n", + " 'og du sa; fortsett bare fortsett ikke stopp opp for å tenke',\n", + " 'det er klart det stikker litt',\n", + " 'når du danser hele natten',\n", + " 'og skyller vitaminer ned med gift',\n", + " 'men hold blikket på veien og ha skylapper på',\n", + " 'du vet at du må du må videre nå',\n", + " 'stå opp til en ny dag',\n", + " 'en mørk, men hvit dag',\n", + " 'ta et valg',\n", + " 'ikke vent et sekund',\n", + " 'ikke sov en time',\n", + " 'ikke tvil bare gjør',\n", + " 'og jeg sa; hodet hjertet eller magen',\n", + " 'hodet hjertet eller magen',\n", + " 'hvor får jeg beskjed, hvor får jeg beskjed?',\n", + " 'hodet, hjertet eller magen',\n", + " 'men du sa; fortsett, bare fortsett, bare gjør det du skal gjøre',\n", + " 'ikke la deg distrahere, det er store ting på spill',\n", + " 'du tenker alt for mye og du lytter alt for nøye',\n", + " 'du har glemt hva du skal lytte til',\n", + " 'i går var du sikker, du hadde lagt en plan',\n", + " 'en plan om et arbeid en by og en mann',\n", + " 'om natten er alt lett, men denne hvite morgenen er den',\n", + " 'mørkeste du har sett',\n", + " 'og ikke vent et sekund',\n", + " 'ikke sov en time',\n", + " 'ikke tvil bare gjør',\n", + " 'men hodet hjertet eller magen',\n", + " 'hodet hjertet eller magen',\n", + " 'hvor får jeg beskjed, hvor får jeg beskjed?',\n", + " 'hodet, hjertet eller magen',\n", + " 'du vil bare sove dine føtter er så trøtte etter',\n", + " 'alt for mange lange netter',\n", + " 'men det er du og deg mot verden og verden tviler aldri bare',\n", + " 'kjenn etter',\n", + " 'og ikke vent et sekund',\n", + " 'ikke sov en time',\n", + " 'ikke tvil bare gjør',\n", + " 'og jeg sa; hodet, hjertet eller magen',\n", + " 'hodet, hjertet eller magen',\n", + " 'hvor får jeg beskjed, hvor får jeg beskjed?',\n", + " 'hodet, hjertet eller magen',\n", + " 'hodet hjertet eller magen',\n", + " 'hodet hjertet eller magen',\n", + " 'hvor får jeg beskjed, hvor får jeg beskjed?',\n", + " 'hodet, hjertet eller magen',\n", + " 'english translation',\n", + " \"and you said: keep going just keep going don't stop to think\",\n", + " 'of course it stings a bit',\n", + " 'when you dance all night',\n", + " 'and wash your vitamins down with poison',\n", + " 'but keep your eyes on the road and put blinders on',\n", + " 'you know you have to keep going now',\n", + " 'wake up to a new day',\n", + " 'a dark, but white day',\n", + " 'make a choice',\n", + " \"don't wait even a second\",\n", + " \"don't sleep even an hour\",\n", + " \"don't have doubts, just do it\",\n", + " 'and i said: head heart or stomach',\n", + " 'head heart or stomach',\n", + " 'which is telling the truth, which is telling the truth?',\n", + " 'head heart or stomach',\n", + " 'but you said: keep going, just keep going, just do what you have to do',\n", + " \"don't get distracted, there's so much at stake\",\n", + " 'you think all too much and you listen all too closely',\n", + " 'you have forgotten what you should listen to',\n", + " 'yesterday you were certain, you had made a plan',\n", + " 'a plan about a job a city and a man',\n", + " 'at night everything is easy, but this white morning is the',\n", + " 'darkest you have seen',\n", + " \"don't wait even a second\",\n", + " \"don't sleep even an hour\",\n", + " \"don't have doubts, just do it\",\n", + " 'and i said: head heart or stomach',\n", + " 'head heart or stomach',\n", + " 'which is telling the truth, which is telling the truth?',\n", + " 'head heart or stomach',\n", + " 'you just want to sleep, your feet are so tired after',\n", + " 'too many long nights',\n", + " \"but it's you against the world and the world is never in doubt, just\",\n", + " 'close your eyes',\n", + " \"don't wait even a second\",\n", + " \"don't sleep even an hour\",\n", + " \"don't have doubts, just do it\",\n", + " 'and i said: head heart or stomach',\n", + " 'head heart or stomach',\n", + " 'which is telling the truth, which is telling the truth?',\n", + " 'head heart or stomach',\n", + " 'head heart or stomach',\n", + " 'head heart or stomach',\n", + " 'head heart or stomach',\n", + " 'which is telling the truth, which is telling the truth?',\n", + " 'head heart or stomach',\n", + " '(music and lyric: vanargandr)',\n", + " 'fra ginnunga-gap til evig tid',\n", + " 'fra tidenes morgen til dommedag',\n", + " 'fra jotneblod til verdens hav',\n", + " 'fra bein og marg til fjell og land',\n", + " 'vår tid er talt, lengselens skrik',\n", + " 'maktenes mørke har talt sin tid',\n", + " 'men opp av dypet, det glemte, dunkle',\n", + " 'reises en tid av hedensk fortid',\n", + " 'jeg står i skyggen av visjoner, den forviste sannhet finnes her',\n", + " 'riv min sjel, stjel mitt sinn, allikevel blir jeg aldri din',\n", + " 'vik for meg, svikere av løgnens far',\n", + " 'bærere av svik, av støvet kom, til støv skal bli',\n", + " 'forsvinne med tiden, tiden glemt og lagt i grus',\n", + " 'hør mine tidløse kall, vår åpenbaring, vårt fall',\n", + " 'gi meg visdom, gi meg makt, for i glemsel sviket er lagt',\n", + " 'en ny seier er fortalt, en annen tro har forfalt',\n", + " 'himlen tegner gudebilder gravd opp av dype kilder',\n", + " 'ã†tten gjemt i manns minne opp av dypet vi skal finne',\n", + " 'visjoner av en evighet i skyggen er fortalt',\n", + " 'sprer seg mens den andre dør',\n", + " 'fra ginnunga-gap til evig tid',\n", + " 'den norrøne ã†tt vil aldri dø!!',\n", + " '(english translation:)',\n", + " '(from ginnunga-gap to eternity)',\n", + " 'from ginnunga-gap to eternity',\n", + " 'from the dawn of time to doomsday',\n", + " 'from giants blood to world seas',\n", + " 'from bone and marrow to mountains and land',\n", + " 'our time is spoken, the yearning scream',\n", + " 'the twilight of the gods has been told',\n", + " 'but up from the deep, the forgotten, the gloomy',\n", + " 'rises the time of pagan past',\n", + " 'i stand in the shadow of visions',\n", + " 'the banished truth lies here',\n", + " 'rip my soul, steal my mind',\n", + " 'still, i will never be yours',\n", + " 'give way for me mongrels of the father of lies',\n", + " 'bearers of betrayal. from the dust came, into dust remain',\n", + " 'vanish with time, time forgotten and lain in ruins',\n", + " 'hear my timeless call',\n", + " 'our revelation, our fall',\n", + " 'give me wisdom, give me power',\n", + " 'for the betrayal has sunk into oblivion',\n", + " 'a new victory has been told',\n", + " 'another faith has decayed',\n", + " 'the heaven draws idol',\n", + " 'unearthed from deep sources',\n", + " 'the lineage hidden in the memory of man',\n", + " 'up from the deep we shall find',\n", + " 'visions of eternity in the shadow is told',\n", + " 'spreads while the other dies',\n", + " 'from ginnunga-gap to eternity',\n", + " 'the norse lineage will never die!!',\n", + " 'et ritus i smerte et ritus i blod',\n", + " 'metall mot kjøtt alt blir dødt',\n", + " 'et slakt i hov et offer av blot',\n", + " 'metall mot kjøtt alt blir dødt',\n", + " 'en flukt fra livet en reise uten tid',\n", + " 'mot dødens grøder grimme, skarpe klør',\n", + " 'nok et slakt av en avmakt',\n", + " 'kjenn din fiende lær han å kjenne',\n", + " 'det føles befriende og se den avmakt brenne',\n", + " '(english translation:)',\n", + " '(know your enemy)',\n", + " 'a rite in pain a rite in blood',\n", + " 'metal against flesh everything turns out dead',\n", + " 'a slaughter in hov a victim of sacrifice',\n", + " 'metal against flesh everything turns out dead',\n", + " 'an escape from life a journey without time',\n", + " 'towards the crops of death grim, sharp claws',\n", + " 'another slaughter of an impotence',\n", + " 'know your enemy',\n", + " 'learn to know him',\n", + " 'it feels liberating to see the',\n", + " 'impotence burn',\n", + " 'work it (?x)',\n", + " 'harder!',\n", + " 'work it (?x)',\n", + " 'better!',\n", + " 'work it (?x)',\n", + " 'stronger!',\n", + " 'work it, harder, work it, better, work it, faster, work it, stronger',\n", + " 'work it, work it, better, work it, faster, work it, stronger',\n", + " 'work it, harder, work it, better, work it, faster, work it, stronger',\n", + " '(?x)',\n", + " 'work it harder, work it better, do it faster, makes us stronger',\n", + " 'work it, harder, work it, better, work it, faster, work it, stronger',\n", + " 'work it harder, makes us better, do it faster, makes us stronger',\n", + " 'work it (7x)',\n", + " 'better!',\n", + " '(?x)',\n", + " 'work it (?x)',\n", + " 'harder!',\n", + " 'work it (?x)',\n", + " 'better!',\n", + " 'work it (?x)',\n", + " 'faster!',\n", + " 'work it (?x)',\n", + " 'stronger!',\n", + " '(2x)',\n", + " 'work it, harder, work it, better',\n", + " 'work it, harder, work it, better',\n", + " 'work it faster, makes us stronger (3x)',\n", + " 'work it faster, makes us better',\n", + " 'work it faster, makes us stronger (3x)',\n", + " 'work it faster, makes us harder',\n", + " 'work it faster, makes us stronger (4x)',\n", + " 'work it harder, makes us better, do it faster, makes us stronger',\n", + " 'our work is never over! (?x)',\n", + " 'work it, harder, work it, better',\n", + " '(2x)',\n", + " 'our work is never over! (?x)',\n", + " 'work it faster, makes us stronger',\n", + " 'work it (?x)',\n", + " 'harder!',\n", + " 'work it (?x)',\n", + " 'better!',\n", + " 'work it (?x)',\n", + " 'faster!',\n", + " 'work it (?x)',\n", + " 'stronger!',\n", + " '(2x)',\n", + " 'work it... (?x)',\n", + " 'rites of death',\n", + " 'rites of undeath',\n", + " \"we're falling\",\n", + " \"we're falling down\",\n", + " \"i told you we're into deep\",\n", + " \"transfer life into what's dead\",\n", + " 'the act of humans playing god',\n", + " 'redoing the acts of medieval',\n", + " 'witchcraft and the worship of dead',\n", + " \"we're falling, we're falling down\",\n", + " 'from our throne, so supposedly high',\n", + " 'when we confront the power great',\n", + " 'the might of our own creator',\n", + " \"transfer life into what's dead\",\n", + " 'the act of human playing god',\n", + " 'redoing the acts of medieval',\n", + " 'witchcraft and the worship of dead',\n", + " 'the rites of undeath',\n", + " 'is the testament of our own death',\n", + " 'sometimes i cry in grief',\n", + " 'not for the dead that once surrounded me',\n", + " 'or for the sadness that comes to me',\n", + " 'when i am lonely',\n", + " 'but i cry',\n", + " 'for those who have chosen a life without christ',\n", + " 'there are twelve months',\n", + " 'three hundred and sixty-five days a year',\n", + " 'but it takes just one second to answer him',\n", + " 'and receive eternal peace',\n", + " 'vi kommer tilbake på hvite hester',\n", + " 'med sverdene hevet klare til kamp !',\n", + " 'vi strider med kristus mot hedningefolket',\n", + " 'som slo seg på brystet og sa:',\n", + " '\"gud han er død\", de ville ei knele',\n", + " 'de ville ei døpes i natt skal de dø !',\n", + " 'hver eneste en de ender med sine, i helvædes rige',\n", + " 'menn uten mot mål og mening',\n", + " 'gud, kan ei blø',\n", + " 'i natt skal du dø',\n", + " 'sverdene i våre hender',\n", + " 'frir deg ut fra jordiske bånd',\n", + " 'vi tar våre hester sammen med kristus',\n", + " 'oppad vi farer mot himmelens hall',\n", + " 'der skal vi i sammen med herren regjere',\n", + " 'hans styrke består til evige tider',\n", + " 'med frihet og glede i lyset fra tronen',\n", + " 'vår trette sjel vil der finne hvile',\n", + " 'men utenfor skjærer de tenner og gråter',\n", + " 'vær du ei en dåre når du tar ditt valg',\n", + " 'nå ser vi i et speil som i en gåte',\n", + " 'men da skal vi se utilslørt',\n", + " 'himmelen åpenbart !',\n", + " 'vemod over det tapte liv',\n", + " 'et liv som aldri ble levd',\n", + " 'jeg vet lite av glede',\n", + " 'men mye av vrede',\n", + " 'vik fra meg',\n", + " 'satan',\n", + " 'hei alexander!',\n", + " 'i natt kom det enda mer snø!',\n", + " 'selma, iselin og jeg gikk på ski til kråkeslottet',\n", + " 'som er en hytte vi har laget i et tre et stykke fra huset',\n", + " 'vi hadde fått med sjokoladekake som mat til hytta',\n", + " 'verdens beste mammakake!',\n", + " 'etterpå hoppet vi ned i snøen',\n", + " 'sjokoladekakesmulene ga vi til hønene',\n", + " 'de elsker alt vi gir dem av menneskemat',\n", + " 'til og med gelé med vaniljesaus!',\n", + " 'sauene brekte, og ville også ha mat',\n", + " 'men de fikk bare masse kos',\n", + " 'nå skal jeg spille på fiolin',\n", + " 'jeg øver meg på å spille det du lærte meg',\n", + " 'håper du snart kommer på besøk!',\n", + " 'mange gårsklemmer fra kaja!',\n", + " 'hi alexander!',\n", + " 'it came even more snow today!',\n", + " 'selma, iselin and i went on skiing to the crows castle',\n", + " 'which is a little hut we made in a tree some place from the house',\n", + " 'we brought chocolate cake as food to the hut',\n", + " \"the world's best mom cake!\",\n", + " 'afterwards, we jumped into the snow',\n", + " 'we gave the chocolate cake crumbs to the chickens',\n", + " 'they love everything we give them of human food',\n", + " 'even the jelly with custard!',\n", + " 'the sheeps bleated, and also wanted food',\n", + " 'but they only got lots of hugs',\n", + " 'now i will play the violin',\n", + " \"i'm practising to play what you taught me\",\n", + " 'hope you soon will come to visit!',\n", + " 'tons of contryhugs from kaja!',\n", + " 'fall for meg nå inatt',\n", + " 'vinn min vilje, vinn min hånd',\n", + " 'uten deg kan jeg ei leve',\n", + " 'ta deg i akt, min trolldomsmakt',\n", + " 'vil fange deg inn og du blir min',\n", + " 'har vi en i månens favn?',\n", + " 'da hun så han i dansen den aller første dag',\n", + " 'sang hennes hjerte og lo hennes sjel, og lo hennes sjel',\n", + " 'det var han hun skulle ha',\n", + " 'hun hadde aldri sett slik ynde i en mann',\n", + " 'og dansen gikk på vollen, på vollen',\n", + " 'det var han hun skulle ha',\n", + " 'fall for meg nå inatt',\n", + " 'vinn min vilje, vinn min hånd',\n", + " 'uten deg kan jeg ei leve',\n", + " 'ta deg i akt, min trolldomsmakt',\n", + " 'vil fange deg inn og du blir min',\n", + " 'har vi en i månens favn?',\n", + " 'han sa, \"skjønne kvinne, kom over hit',\n", + " 'hør, vil du vel gifte deg, gifte deg',\n", + " 'med meg så ung jeg er\"',\n", + " 'hun ble nok blendet av hans sjarm og hans søte ord',\n", + " 'for da hun våknet den andre dag, den andre dag',\n", + " 'fant hun sengen tom',\n", + " 'fall for meg nå inatt',\n", + " 'vinn min vilje, vinn min hånd',\n", + " 'uten deg kan jeg ei leve',\n", + " 'ta deg i akt, min trolldomsmakt',\n", + " 'vil fange deg inn og du blir min',\n", + " 'har vi en i månens favn?',\n", + " 'så kom den tredje dagen, og med den den tredje natt',\n", + " 'og dansen gikk på vollen, på vollen',\n", + " 'han danset som om ingenting var hendt',\n", + " 'translation:',\n", + " \"in the moon's embrace\",\n", + " 'fall for me this very night',\n", + " 'win my will, win my hand',\n", + " 'without you, i cannot live',\n", + " 'beware, my magic power',\n", + " 'when she saw him dancing the very first day',\n", + " 'sang her heart and laugh did her soul, and laugh did her soul',\n", + " 'it was him she would have',\n", + " 'she had never seen such grace in a man',\n", + " 'and the dance was on the rampart, on the rampart',\n", + " 'it was him she would have',\n", + " 'fall for me this very night',\n", + " 'win my will, win my hand',\n", + " 'without you, i cannot live',\n", + " 'beware, my magic power',\n", + " \"will trap you and you'll become mine\",\n", + " \"do we have one in the moon's embrace?\",\n", + " 'he said, \"beautiful woman, come over here',\n", + " 'listen, will you pledge your troth, pledge your troth',\n", + " 'to me, though young i am\"',\n", + " 'she certainly was blinded by his charm and his sweet words',\n", + " 'for when she awoke the second day, the second day',\n", + " 'she found the bed empty',\n", + " 'fall for me this very night',\n", + " 'win my will, win my hand',\n", + " 'without you, i cannot live',\n", + " 'beware, my magic power',\n", + " \"will trap you and you'll become mine\",\n", + " \"do we have one in the moon's embrace?\",\n", + " 'then came the third day, and with that the third night',\n", + " 'and the dance was on the rampart, on the rampart',\n", + " 'he danced as if nothing had happened',\n", + " 'ved oasen',\n", + " 'mellom palmene',\n", + " 'i en lysning',\n", + " 'der slår me oss ned',\n", + " 'og som en gammel venn',\n", + " 'me møter igjen',\n", + " 'et sted',\n", + " 'der elefantene går te',\n", + " 'den lille sonden',\n", + " 'som søkte rundt jorden',\n", + " 'tok oss her',\n", + " 'elefantenes hemmelige gravplass',\n", + " 'jesus! det må vær her!',\n", + " 'me lukker øyne',\n", + " 'me lukker ørene',\n", + " 'når det nevnes',\n", + " 'tror ingen det',\n", + " 'ekspedisjoner',\n", + " 'og alle rikdommer',\n", + " 'blekne her',\n", + " 'elefantenes hemmelige gravplass',\n", + " 'jesus! det må vær her!',\n", + " 'eg hører det',\n", + " 'du hører det',\n", + " 'me hører begge samme sangen',\n", + " 'eg ser på deg',\n", + " 'du ser på meg',\n", + " 'og me skjønner begge at det vil forbli en',\n", + " 'hemmelighet',\n", + " 'elefantenes hemmelige gravplass',\n", + " 'jesus! det må vær her!',\n", + " 'elefantenes hemmelige gravplass',\n", + " 'jesus! det må vær her!',\n", + " 'elefantenes hemmelige gravplass',\n", + " 'jesus! det må vær her!',\n", + " 'elefantenes hemmelige gravplass',\n", + " 'jesus! det må vær her!',\n", + " 'english translation:',\n", + " 'by the oasis',\n", + " 'between the palms',\n", + " 'in an opening',\n", + " 'we set up camp',\n", + " 'and like an old friend we meet again',\n", + " 'that place where the elephants go',\n", + " 'the little probe that searched the earth',\n", + " 'took us here',\n", + " \"the elephant's secret graveyard!\",\n", + " 'jesus! it must be here!',\n", + " 'we keep eyes shut',\n", + " 'we keep ears shut',\n", + " 'and when its mentioned',\n", + " 'no one wants to see',\n", + " 'when it was in sight',\n", + " 'my heart stopped',\n", + " 'that place',\n", + " 'where the elephants go to',\n", + " \"the elephant's secret graveyard!\",\n", + " 'jesus! it must be here!',\n", + " 'we must walk alone from here',\n", + " 'i look at you you look at me',\n", + " 'and we both understand',\n", + " 'that it will remain a secret',\n", + " \"the elephant's secret graveyard!\",\n", + " 'jesus! it must be here!',\n", + " \"the elephant's secret graveyard!\",\n", + " 'jesus! it must be here!',\n", + " \"the elephant's secret graveyard!\",\n", + " 'jesus! it must be here!',\n", + " \"the elephant's secret graveyard!\",\n", + " 'jesus! it must be here!',\n", + " 'bikkjen, min aller beste venn',\n", + " 'eg skal aldri miste deg igjen',\n", + " 'bikkjen, min aller beste venn',\n", + " 'eg skal aldri miste deg igjen',\n", + " 'kor e bikkjen? kor e bikkjen?',\n", + " 'kor e bikkjen? eg må finne bikkjen',\n", + " 'for den som finner bikkjen får den feteste premien',\n", + " 'kor e bikkjen? kor e bikkjen?',\n", + " 'mamma har ment du. pappa tar tiden',\n", + " 'og hvis du ikkje finner bikkjen',\n", + " 'så blir det ingen premie, og ingen sjokolade, ingen kake',\n", + " 'varmere',\n", + " 'kaldere',\n", + " 'det er vanskelig nå som det er',\n", + " 'høyere',\n", + " 'lavere',\n", + " 'fugl, fisk eller skilpadde',\n", + " 'det e vanskelig å finne den',\n", + " 'når han e så veldig liten',\n", + " 'han e ikke bak potteplantene',\n", + " 'og i den nederste skuffen',\n", + " 'bikkjen, min aller beste venn',\n", + " 'eg skal aldri miste deg igjen',\n", + " 'bikkjen, min aller beste venn',\n", + " 'eg skal aldri miste deg igjen',\n", + " 'english translation (for those of you who wish to know what it means:)',\n", + " 'dogs, my best friend',\n", + " 'i will never lose you again',\n", + " 'dogs, my best friend',\n", + " 'i will never lose you again',\n", + " \"where's the dogs? where's the dogs?\",\n", + " \"where's the dogs? i have to find the dogs\",\n", + " 'for those who find dogs get the coolest prize',\n", + " \"where's the dogs? where's the dogs?\",\n", + " 'mom is supposed to. dad takes time',\n", + " 'and if you do not find the dogs',\n", + " 'so there will be no prize and no chocolate, no cake',\n", + " 'warmer',\n", + " 'colder',\n", + " 'it is difficult now as it is',\n", + " 'higher',\n", + " 'lower',\n", + " 'bird, fish or turtle',\n", + " \"it's hard to find it\",\n", + " \"when he's so very small\",\n", + " \"he's not behind the potted plants\",\n", + " 'or in the bottom drawer',\n", + " 'dogs, my best friend',\n", + " 'i will never lose you again',\n", + " 'dogs, my best friend',\n", + " 'i will never lose you again',\n", + " 'lenten ys come with loue to toune',\n", + " 'with blosmen ant with briddes roune',\n", + " 'that al this blisse bryngeth',\n", + " 'the threstelcoc him threteth oo;',\n", + " 'away is huere wynter wo',\n", + " 'when woderoue springeth',\n", + " 'dayeseyes in this dales',\n", + " 'notes suete of nyhtegales',\n", + " 'vch foul song singeth',\n", + " 'mody meneth, so doth mo;',\n", + " 'ichot ycham on of tho',\n", + " 'for loue that likes ille',\n", + " 'deawes donketh the dounes;',\n", + " 'deores with huere derne rounes',\n", + " 'domes forte deme',\n", + " 'yef me shal wonte wille of on',\n", + " 'this wunne weole y wole forgon',\n", + " 'ant wyht in wode be fleme',\n", + " 'naken under månelyset',\n", + " 'førte jeg min fot ut i dans',\n", + " 'øyne sorte som av kull',\n", + " 'fulgte mine steg fra skogens rand',\n", + " 'hør min sang over salten hav – fra evig tid',\n", + " 'over fjell og gjennom dyp skog – inn i drøm',\n", + " 'jeg kan se deg sove nå – min kjære',\n", + " 'alle vinder gi meg liv og hør min sang',\n", + " 'stille strekker seg hender',\n", + " 'ut av mørket og stryker ved mitt hår',\n", + " '\"kom barn, la oss gå lenger inn i skogen',\n", + " 'legg ditt hode ned, så skal du se ham igjen før dagen gryr\"',\n", + " 'hør min sang over salten hav – fra evig tid',\n", + " 'over fjell og gjennom dyp skog – inn i drøm',\n", + " 'jeg kan se deg sove nå – min kjære',\n", + " 'alle vinder gi meg liv og hør min sang',\n", + " 'jeg vil hviske ditt navn',\n", + " 'jeg vil leve uten savn',\n", + " 'jeg vil fylles av liv i all tid',\n", + " 'translation:',\n", + " 'hear my song',\n", + " 'naked under the moonlight',\n", + " 'i guided my foot into dance',\n", + " 'eyes black as of coal',\n", + " \"followed my steps from the forest's edge\",\n", + " 'hear my song across salty seas – from infinite time',\n", + " 'over mountains and through deep woods – into dreams',\n", + " 'i can see you sleep now – my dear',\n", + " 'all winds, give me life and hear my song',\n", + " 'silently hands stretch themselves',\n", + " 'out of darkness and caress my hair',\n", + " '\"come child, let us go further into the woods',\n", + " 'rest your head, and you shall see him again ere break of day\"',\n", + " 'hear my song across salty seas – from infinite time',\n", + " 'over mountains and through deep woods – into dreams',\n", + " 'i can see you sleep now – my dear',\n", + " 'all winds, give me life and hear my song',\n", + " 'i want to whisper your name',\n", + " 'i want to live without want',\n", + " 'i want to be filled with life forever',\n", + " '(music and lyric: vanargandr)',\n", + " 'i opphavs tider var ingenting, ikke sand, ikke sjø eller svale bølger;',\n", + " 'jord og opphimmel fantes der ikke, bare ginnunga-gap og gras ingen steder',\n", + " 'fra et urvesen av jotunslekt ble kuldeverden skapt',\n", + " 'frostjotner rår over kulde, mørke og den svarte makt',\n", + " 'lange dager og tunge år skal der engang komme, for menneskenes tid i midgard er omme',\n", + " 'de skal fare til det dunkle svarte, i flammene og kaoset de ikke vil makte',\n", + " 'frostjotner vil fryde seg i galskapens ekstase, de vil bli verdens nye mektigste rase',\n", + " 'de skal vokte verdens bønder, plyndre, drepe og fardømme',\n", + " 'i nord ligger slottet, til over tusner jotner',\n", + " 'de skuer ut mot landet, der alt skal stå i brann',\n", + " 'tidenes strid',\n", + " 'mørk, evig vinter',\n", + " 'pines i slid',\n", + " 'mennesker der lider',\n", + " 'for jotnenes kamp har begynt, mot det menneskene har forkynt',\n", + " 'her skal den mørke skjebne seire, for her skal frostjotnene feire',\n", + " 'mørk, evig vinter',\n", + " 'det klinger i sverd, økser og store hammere',\n", + " 'skrik og hyl synger som i nivlheim',\n", + " 'blodet fra jotner og menn flyter gjennom landet, og røyken fra brent skog stiger',\n", + " 'i en sort eim',\n", + " 'frostjotner sloss som gale ulver, mens menn løper som redde sauer',\n", + " 'jotnenes makt har satt sitt spor på en engang grønn, flott jord',\n", + " 'ingen liv spares etter denne siste krig for her skal alle dø på verste vis',\n", + " 'kvinner og menn, alle skal lide, til nivlheim gjennom slid de pines',\n", + " 'i opphavs tider var ingenting, ikke sand, ikke sjø eller svale bølger',\n", + " 'men nå finnes det mørke, kulde og evig vinter, for frostjotnene har verden underlagt',\n", + " 'i nord ligger slottet, til over tusen jotner',\n", + " 'de skuer ut mot ødeland, der alt står i brann',\n", + " 'for jotnenes kamp er vunnet, menneskene har forsvunnet',\n", + " 'her har den mørke skjebne seiret og frostjotnene har feiret',\n", + " 'mørk, evig vinter',\n", + " '(første vers tatt fra voluspå)',\n", + " '(english translation:)',\n", + " '(dark, eternal winter)',\n", + " 'in the time of origin there was nothing, not sand, not sea or cool waves',\n", + " 'earth and heaven did not exist, just ginnunga-gap, and grass nowhere',\n", + " 'from a primitive creature of giant- race, the cold world was made',\n", + " 'frost giants command the cold, the dark and black power',\n", + " \"long days and cruel years will someday arrive, for man's time in midgard is at an end\",\n", + " 'the shall wander into the gloomy darkness. into the flames and chaos they can not endure',\n", + " 'frost giants will rejoice at the ecstasy of madness. they will become the worlds new',\n", + " 'most powerful race',\n", + " 'they will guard the peasents of the world pillage, kill and condemn',\n", + " 'to the north lies the castle',\n", + " 'of over a thousand giants',\n", + " 'they look towards the land',\n", + " 'where everything will be lit afire',\n", + " 'war of time',\n", + " 'dark, eternal winter',\n", + " 'tortured in slid',\n", + " 'people there suffer',\n", + " 'for the giants battle has begun, against what man has proclaimed',\n", + " 'here, the dark fate will triumphant, for here the frost giants will celebrate',\n", + " 'dark, eternal winter',\n", + " 'swords, axes and large hammers will sound. screams and howls sing like in nivlheim',\n", + " 'the blood of giants & men will flow through the land, and the smoke of burnt forests‘',\n", + " 'rises in a black vapour',\n", + " 'frost giants fight like mad wolves while men flee like frightened sheep',\n", + " 'the giants‘ power has left its mark. on a once green and beautiful land',\n", + " 'no lives are spared after this last war, for here all will die in the worst possible way',\n", + " \"women and men, all shall suffer, to nivlheim through slid they're tortured\",\n", + " 'in the time of origin there was nothing, not sand, not sea or cool waves',\n", + " 'but now there is darkness, cold and eternal winter, for the frost giants have',\n", + " 'conquered the world',\n", + " 'to the north lies the castle, of over a thousand giants',\n", + " 'they look towards the wastelands, where everything is lit afire',\n", + " 'for the giants‘ battle has been won, man has disappeared',\n", + " 'here the dark fate has triumphed, and the frost giants have celebrated',\n", + " 'dark, eternal winter',\n", + " '(first verse taken from voluspå)',\n", + " '(music and lyric: vanargandr)',\n", + " 'i endeløse tider forlatt, har jeg dvelt i sorg',\n", + " 'men i denne siste natt, reises tidnes borg',\n", + " 'kaster en mørk skygge over det triste land',\n", + " 'en kald og hatefull uhygge faller ned i kristus favn',\n", + " 'jeg åpner mine øyne, ser en verden som venter',\n", + " 'som venter på meg den mektige kjemper',\n", + " 'i drepende stillhet sitter, mitt sinn er hatsk, minn sjel er bitter',\n", + " 'jeg lukker mine øyne',\n", + " 'åpenbaringens natt skal komme, når de kristne skal falle',\n", + " 'deres tid er omme, når helheim skal kalle',\n", + " 'jeg skal knuse kristen tro, jeg skal trosse gud',\n", + " 'jeg skal forpeste lysets bro, for jeg er gudenes sendebud',\n", + " 'jeg sitter i bond, ved maktenes dom, opprettholder av verdens ordning',\n", + " 'ved det hedenske hordes ting',\n", + " 'jeg kommer kledd i pestens sorte, dødsgaldreren av åpenbaringens natt',\n", + " 'når skyene setter sprekker er jeg borte, og guds flokk med døden dratt',\n", + " 'et siste pust av dødens vind forsvinner, utslettet alt av en nå glemt fortid',\n", + " 'intet er tilbake av falske minner',\n", + " 'den norrøne stolthet er endelig befridd',\n", + " '(english translation:)',\n", + " '(the night of revelation)',\n", + " 'in endless times abandoned',\n", + " 'i have dwelled in sorrow',\n", + " 'but on this last night',\n", + " 'times of sorrows arise',\n", + " 'and cast a dark shadow',\n", + " 'upon the wistful land',\n", + " 'a cold and spiteful horror',\n", + " 'falls into christ‘ embrace',\n", + " 'i open my eyes',\n", + " 'see a world that waits',\n", + " 'that waits for me, the mighty warrior',\n", + " 'in mortal silence rests',\n", + " 'my mind is hateful, my soul is bitter',\n", + " 'i close my eyes',\n", + " 'the night of revelations will arrive',\n", + " 'when the christians shall perish',\n", + " 'their time is at an end',\n", + " 'when helheim calls',\n", + " 'i will shatter the christian faith',\n", + " 'i will defy god',\n", + " 'i will poison the bridge of light',\n", + " 'for i am the messenger of the gods',\n", + " 'i sit in bond',\n", + " 'at the judgement of the powers',\n", + " 'keeper of the worlds',\n", + " 'by the heathen hordes court',\n", + " 'i come dressed in the black of the plague',\n", + " 'the necromancer of the night of revelation',\n", + " \"when the clouds crack, i'll be gone, and gods‘ flock with death departed\",\n", + " 'one last breath of deaths‘ wind vanished, annihilated all by a now forgotten past',\n", + " 'nothing remains of false memories',\n", + " 'the norse pride is free at last',\n", + " 'litle fuglen sette seg på kyrkjespong',\n", + " 'gud råde!',\n", + " 'han song så fagert ein ottesong',\n", + " 'herre gud sende oss sin nåde!',\n", + " 'litle fuglen sette seg på kyrkjespong',\n", + " 'gud råde!',\n", + " 'og presten han undrast på den litle fugle song',\n", + " 'herre gud sende oss sin nåde!',\n", + " 'litle fuglen sette seg på kyrkjegått',\n", + " 'gud råde!',\n", + " 'han song så fagert om stort og smått',\n", + " 'herre gud sende oss sin nåde!',\n", + " 'litle fuglen sette seg på kyrkjetårn',\n", + " 'gud råde!',\n", + " 'han song så fagert for alle småborn',\n", + " 'herre gud sende oss sin nåde!',\n", + " 'litle fuglen sette seg på lindekvist',\n", + " 'gud råde!',\n", + " 'han song så fagert om jesus krist',\n", + " 'herre gud sende oss sin nåde!',\n", + " '--------------------------',\n", + " 'little bird sat himself on the churchs roof',\n", + " 'god prevail!',\n", + " 'he sang a beautiful morning song (ottesong?)',\n", + " 'lord god, send us your grace',\n", + " 'little bird sat himself on the churchs roof',\n", + " 'god prevail!',\n", + " 'and the priest he wondered at the little birds song (?)',\n", + " 'lord god, send us your grace',\n", + " 'little bird sat himself on the churchs door',\n", + " 'god prevail!',\n", + " 'he sang so beautifully of large and small (all things great and wonderful, all creatures great and small!)',\n", + " 'lord god, send us your grace',\n", + " 'little bird sat himself on the churchs tower',\n", + " 'god prevail!',\n", + " 'he sangs so beautifully for all children',\n", + " 'lord god, send us your grace',\n", + " 'little bird sat himself on a lime twig. (linden twig)',\n", + " 'god prevail!',\n", + " 'he sang so beautifully about jesus christ',\n", + " 'lord god, send us your grace',\n", + " 'nb: rough translation of fairly archaic norwegian; you get the jist though!',\n", + " 'i et helheimsk brak tordnet tor',\n", + " 'tre udyr fødes noen har drevet hor',\n", + " 'avguder ler godt i natt hyller jotun-mor angerboda',\n", + " 'øye for øye tann for tann',\n", + " 'høst hva du sår hvis du sår din egen grav',\n", + " 'verg deg for nord',\n", + " 'vokt deg for den urskog',\n", + " 'skapninger i ulvens ham',\n", + " 'fenris har blod på tann',\n", + " '(english translation:)',\n", + " '(ironforest)',\n", + " 'in a hellish crash thor thundered',\n", + " 'three beasts were born',\n", + " 'someone has committed adultery',\n", + " 'demigods laughs tonight',\n", + " 'hailing the jotun-mother angerboda',\n", + " 'an eye for an eye and tooth for a tooth',\n", + " 'reap what you sow if you sow your own grave',\n", + " 'defend yourself against the north',\n", + " 'guard yourself for the primeval forest',\n", + " 'creatures in the guise of the wolf',\n", + " 'fenris has blood on teeth',\n", + " 'you have to climb the top',\n", + " \"go on, don't give up\",\n", + " 'it never seems to end',\n", + " \"it's controlling me\",\n", + " \"this ain't what i want to be\",\n", + " 'save me from this mess',\n", + " 'to dance all the night in the midnight sun',\n", + " 'that is my dream',\n", + " 'the drops lick my skin',\n", + " 'i dance with the wind',\n", + " 'it blows me away',\n", + " 'du ser hu som danse i skogen',\n", + " 'me lette skritt',\n", + " 'me lokkane øyne',\n", + " 'hu strekke ud hånnå',\n", + " 'men du nåare an ikje',\n", + " 'du ser hu',\n", + " 'hu strekke ud hånnå',\n", + " 'men du nåare an ikje',\n", + " 'å dansa i midnattsol',\n", + " 'de e min drøm',\n", + " 'to dance all the night in the midnight sun',\n", + " 'that is my dream',\n", + " 'the drops lick my skin',\n", + " 'i dance with the wind',\n", + " 'it blows me away']},\n", + " 'rap': {'meta': {'train_data': ['yeah!',\n", + " 'måtte fucke litt med hodet ditt, mayne',\n", + " \"med no' eighties-shit\",\n", + " 'hunnid!',\n", + " \"she's such a lady\",\n", + " 'she puts on a show (whooh!)',\n", + " \"she's got the body\",\n", + " 'she sparkles and glows (oral bee!)',\n", + " \"she's such a lady (chuch)\",\n", + " 'she puts on a show (you know)',\n", + " \"she's got the body\",\n", + " 'she sparkles and glows',\n", + " 'ey, jeg er i studio kledd i baris',\n", + " 'stilen er rojal sånn som märthas eller aris',\n", + " 'spiller bitches som ataris',\n", + " \"sipper på no' whisky uten ice, kall det baris\",\n", + " 'playa, hør på dette',\n", + " 'beezy mac, han chiller med en sjøbrunette',\n", + " 'en fi-i-i-in bitch',\n", + " 'yeah, hun er en cle-e-e-ean bitch',\n", + " 'uten sykdommer',\n", + " \"she's such a lady\",\n", + " 'she puts on a show',\n", + " \"she's got the body\",\n", + " 'she sparkles and glows',\n", + " \"she's such a lady\",\n", + " 'she puts on a show',\n", + " \"she's got the body\",\n", + " 'she sparkles and glows',\n", + " \"yeah, det der er så fo' real\",\n", + " \"beezy mackarony, han er rå fo' real\",\n", + " 'det her er så fristil',\n", + " 'beezy mackarony kjører rå g-stil',\n", + " 'så mange bitches, de vil ha meg',\n", + " 'bitches, de vil hoppe på min dick, og de vil kna meg',\n", + " 'store tits de putter på meg',\n", + " 'men det er kun en special lady som kan få meg',\n", + " 'yeah',\n", + " 'jeg er så yabba dabba med den shiten der, baby',\n", + " 'mange bitches som prøver seg, men uhh',\n", + " 'men det er kun en special lady som kan få meg',\n", + " 'yeee!',\n", + " 'yabba!',\n", + " 'dabba!',\n", + " 'biatch!',\n", + " \"she's such a lady\",\n", + " 'she puts on a show',\n", + " \"she's got the body\",\n", + " 'she sparkles and glows',\n", + " \"she's such a lady\",\n", + " 'she puts on a show',\n", + " \"she's got the body\",\n", + " 'she sparkles and glows',\n", + " 'mine playgirls vet',\n", + " 'gi meg kjærlighet',\n", + " 'mine playgirls vet',\n", + " 'gi meg kjærlighet',\n", + " 'baby, 2015 var et rått år',\n", + " 'plutselig fikk jeg hipsterfans med blått hår',\n", + " 'unge chicks med piercing oppi schnausen',\n", + " 'plutselig ville alle ha en bit av denne bossen',\n", + " 'er fortsatt ung og fresh - i hvertfall fresh',\n", + " 'hopper ut av senga, alltid klar for photo-sesh',\n", + " 'putter ned en track som de kan riste til',\n", + " 'er en o.g., men lar meg friste still',\n", + " '(crazy ladies)',\n", + " '(crazy ladies)',\n", + " 'oh oh oooh',\n", + " 'mine playgirls vet',\n", + " 'gi meg kjærlighet',\n", + " 'oh oh oooh',\n", + " 'mine playgirls vet',\n", + " 'gi meg kjærlighet',\n", + " 'oh, jeg må takke mine playgirls',\n", + " 'så shake den booty-en for en playboy',\n", + " 'oh, jeg må takke mine playgirls (my playgirls)',\n", + " 'for at de alltid kjenner dealen',\n", + " 'for at de fucker med profilen',\n", + " 'da vi var hata på så paya vi en heavy pris',\n", + " 'men nå ser vi digger damer i 4ever-tees',\n", + " 'la det være sånn forever, please',\n", + " \"så skal jeg lade deg med fler 4-ever-g's\",\n", + " 'du ser meg sitte backstage med ti bitches',\n", + " 'snakker fem på hver side - symmetri-bitches!',\n", + " 'du ser meg søle på noen cleavages',\n", + " 'på litteraturinteresserte poesi-bitches',\n", + " '(crazy ladies)',\n", + " '(crazy ladies)',\n", + " 'oh oh oooh',\n", + " 'mine playgirls vet',\n", + " 'gi meg kjærlighet',\n", + " 'oh oh oooh',\n", + " 'mine playgirls vet',\n", + " 'gi meg kjærlighet',\n", + " '(gi meg fucking kjærlighet)',\n", + " 'playgirls (o - oh)',\n", + " 'playgirls vet (jeg vet)',\n", + " 'playgirls vet (og de vet)',\n", + " 'playgirls vet (og de vet)',\n", + " 'play- (oh ooooh)',\n", + " '-girls vet',\n", + " 'oh oh oooh',\n", + " 'mine playgirls vet',\n", + " 'gi meg kjærlighet',\n", + " 'oh oh oooh',\n", + " 'mine playgirls vet',\n", + " 'gi meg kjærlighet',\n", + " 'mine playgirls vet',\n", + " 'alle mine playgirls vet',\n", + " 'mine playgirls vet',\n", + " 'alle mine playgirls vet',\n", + " 'jns with the less',\n", + " \"fucka gamet opp, og jeg har 'nough stress\",\n", + " 'fucka gamet opp, ga alle sexpress',\n", + " 'niggas on the top, men det er expect',\n", + " 'mine kroner kommer ikke ekspress',\n", + " 'yes mate, vi skal fly',\n", + " 'partys med battys, bacardi',\n", + " 'faktisk alt jeg gjør er taktisk',\n", + " 'og de prater piss, men fuck de (yeah)',\n", + " 'studio med jns (yes)',\n", + " 'gutta mine puller opp og vi er blessed (yes)',\n", + " 'føler meg som arif, bare kall meg flexnes',\n", + " 'og vi vender bare ryggen om de folka tester (yeah)',\n", + " 'se meg flexe (yeah)',\n", + " 'boy britz er på en next ting (yeah)',\n", + " 'femti streams og så netflix (yeah)',\n", + " \"dreammaker records is what im reppin'\",\n", + " 'vi flyr',\n", + " 'ey, min baby, kjent av flere lately',\n", + " 'e i studio maybe, med britz og noen ladies',\n", + " \"don't hate me\",\n", + " 'my baby, drop top i mercedes',\n", + " 'pull up, come on, save me',\n", + " 'ein natt med meg baby, dont play me',\n", + " 'fresh air force',\n", + " 'vi bare stepper inn med fresh air force',\n", + " 'og de sier jeg flyr som en sterk air force',\n", + " 'mye vil ha mer, så bitch vil ha more (ah)',\n", + " 'de ga meg aldri hånda, jeg var alt for whack for dem',\n", + " 'nå skriver de på insta spør om jeg har vers for dem',\n", + " 'wallah, meg og isah vi skal kaste lægs på dem (aha)',\n", + " 'vi skal kaste cash på dem',\n", + " 'studio med jns (yes)',\n", + " 'gutta mine puller opp og vi er blessed (yes)',\n", + " 'pumper ut noen bangers til de gir oss respekt',\n", + " 'og jeg har aldri vært så wavy, trenger ingen wavecheck (yeah)',\n", + " 'se meg flexe (yeah)',\n", + " 'boy britz er på en next ting (yeah)',\n", + " 'femti streams og så netflix (yeah)',\n", + " \"dreammaker records is what im reppin'\",\n", + " 'vi flyr',\n", + " 'ey, min baby, kjent av flere lately',\n", + " 'e i studio maybe, med britz og noen ladies',\n", + " \"don't hate me\",\n", + " 'my baby, drop top i mercedes',\n", + " 'pull up, come on, save me',\n", + " 'ein natt med meg baby, dont play me',\n", + " 'ey, min baby, kjent av flere lately',\n", + " 'e i studio maybe, med britz og noen ladies',\n", + " \"don't hate me\",\n", + " 'my baby, drop top i mercedes',\n", + " 'pull up, come on, save me',\n", + " 'ein natt med meg baby, dont play me',\n", + " 'ooh, hey min baby',\n", + " 'hey min baby, dont play me',\n", + " 'ooh, my love',\n", + " 'ohh, my love',\n", + " 'ohh, my love',\n", + " 'yeah (ooh)',\n", + " 'bosko (ooh)',\n", + " 'beezy (oh yeah, yeah yeah)',\n", + " 'lotion',\n", + " \"putter det ned forever (it's with the playboy foundation)\",\n", + " 'and you do know that (they wanna get it in)',\n", + " \"let's go\",\n", + " 'just let it get right into you, right into you',\n", + " \"and then we'll see, see what it do, what it do\",\n", + " 'just let it get right into you, and right into you',\n", + " 'and you will see, see what it do',\n", + " 'see what it do, do, do',\n", + " 'jeg har kommet for å samle opp noen løse ender',\n", + " 'og pimpe på din chick og hennes tøsevenner',\n", + " \"dytte'n inn i hennes glamorøse venner\",\n", + " 'før jeg deler det med mine skandaløse venner',\n", + " 'digge tøser kjenner denne gutten, mr. o-dot',\n", + " 'jeg gjør det big, du gjør det mindre enn en lodott',\n", + " 'beaten blodhot, flowen ligner lava',\n", + " 'foten er på nakken til en hoe, jeg står på krava',\n", + " \"styrter masse cava, e'kke den som slurper\",\n", + " \"e'kke den som cruiser rundt i lac-en med no'n hurper\",\n", + " 'for shit, jeg takler ikke sånne opp i fjeset, ass',\n", + " 'er mere g med triana iglesias',\n", + " 'å sjarmere hoochies ligger i mitt vesen, ass',\n", + " 'men unge beezyboy, den gutten her er kresen, ass',\n", + " 'uansett, hvis du er hypp på mitt crew',\n", + " 'bare holla på en playa, baby, see what it do, oh oh',\n", + " 'just let it get right into you, right into you',\n", + " \"and then we'll see, see what it do, see what it do\",\n", + " 'just let it get right into you, and right into you',\n", + " 'and you will see, see what it do, what it do',\n", + " 'so bay, la, mac dre, doc dre, okay',\n", + " 'so californ-i-a, no work, all play',\n", + " 'sjekk ut måten som jeg lever på',\n", + " 'eller, stryk det, sjekk ut måten som jeg svever på',\n", + " 'cruiser bort og spiser chicken ifra roscoe',\n", + " \"bitches digger ned, jeg bumper banger'n min med bosko\",\n", + " 'jeg har lukten av suksess i mine nostrils',\n", + " 'money-motivated som en mobster ifra moscow',\n", + " 'oh, er oppi hollywood hills',\n", + " 'titter ut på byen og den shitten gir meg chills (brrr)',\n", + " 'westcoast til jeg logger av',\n", + " 'haterfjes som snubler er hva beezybaby hugger av',\n", + " 'freshe klær, så denne duden er pretty',\n", + " 'når jeg bawler med big paulie borti studio city',\n", + " '(beezy, husk å toss opp dub-er for ditt crew)',\n", + " \"ey yo, lotion, hehe, i'ma see what it do\",\n", + " 'just let it get right into you, right into you',\n", + " \"and then we'll see, see what it do, see what it do\",\n", + " 'just let it get right into you, and right into you',\n", + " 'and you will see, see what it do',\n", + " 'see what it do, do, do',\n", + " 'just let it get right into you, right into you',\n", + " \"and then we'll see, see what it do, what it do\",\n", + " 'just let it get right into you, right into you',\n", + " 'and you will see, see what it do',\n", + " 'see what it do, what it do',\n", + " 'pimp-lotion, oh yeah (oh yeah)',\n", + " 'big ice (what up)',\n", + " 'and oral bee (yessir)',\n", + " 'say oral bee is in the house, mama',\n", + " 'say oral bee is in the house, baby (bosko)',\n", + " 'oral bee, yeah, oral bee is in the house (yabba)',\n", + " 'say oral bee is in this bitch (west coast)',\n", + " 'oh yeah (playa j)',\n", + " 'oral bee with bosko',\n", + " 'yeah, cruiser rundt i en fresh-ass lac i la, mayne',\n", + " 'boss opp, boss ut',\n", + " 'the playboy foundation wants to get into you',\n", + " 'yeah! what it doski?',\n", + " 'dette her er spikeren i kista for disse fuckings haterne, mayne',\n", + " 'big beezy!',\n", + " 'and you do know that',\n", + " 'and you do know that',\n", + " 'and you do know that',\n", + " 'jeg er så full av game',\n", + " 'jeg får garantert en plass på 1450s walk of fame',\n", + " \"big ice og jam, god damn, den banger'n her er vilter\",\n", + " 'skrur opp sub-en i jeep-en og ser at hooden tilter',\n", + " 'pusher custom made-skilter som gjør en hater ilter',\n", + " 'fuck hva de snakker om, jeg rapper fortsatt uten filter',\n", + " 'så store nuts at legen sa jeg burde gå med kilter',\n", + " 'ble du fan av meg i fjor, er du en etter-dilter',\n", + " 'men er du ekte kan du bli en del av kjernen',\n", + " '1450 walk of fame, hvem får den første stjernen?',\n", + " 'and you do know that',\n", + " 'and you do know that',\n", + " 'and you do know that',\n", + " 'jeg er så full av game',\n", + " 'jeg får garantert en plass på 1450s walk of fame',\n", + " 'and you do know that',\n", + " 'and you do know that',\n", + " 'and you do know that',\n", + " 'jeg er så full av game',\n", + " 'jeg får garantert en plass på 1450s walk of fame',\n", + " 'ingen squares i min circle, ingen her som ligner urkel',\n", + " 'alle her er bosser sånn som angela merkel',\n", + " 'vi går hardt, vi går apache, mer bling enn liberace',\n", + " 'karrieren din blir kort som karrieren til schillaci',\n", + " \"er dyppa i versace, dynka i no' d&g\",\n", + " 'mine favorittbokstaver, det er fortsatt p og g',\n", + " 'yeah, jeg og pimpguden er perlevenner',\n", + " 'hvis du snakker ned - fuck deg og dine fæle venner!',\n", + " 'and you do know that',\n", + " 'and you do know that',\n", + " 'and you do know that',\n", + " 'jeg er så full av game',\n", + " 'jeg får garantert en plass på 1450s walk of fame',\n", + " 'and you do know that',\n", + " 'and you do know that',\n", + " 'and you do know that',\n", + " 'jeg er så full av game',\n", + " 'jeg får garantert en plass på 1450s walk of fame',\n", + " 'california love',\n", + " 'california love, california',\n", + " 'california love',\n", + " 'nå i sommer, så har dama mi termin',\n", + " \"så jeg få'kke dra til cali for å bawle som et svin\",\n", + " 'første gang jeg dro dit, så var beezyboy en teen',\n", + " 'snakker 1994, baby, yadadadamean?',\n", + " \"jeg og fam'en marinerte uti oc\",\n", + " 'lenge før jeg hadde status som en og',\n", + " \"rollerblade'a nedover redondo\",\n", + " 'bare bawla som en ung rajon rondo',\n", + " 'denne beaten her er så californi',\n", + " 'mest sannsynlig, så blir dama di horny',\n", + " 'da kan jeg slamme som jeg slammer hoops',\n", + " \"mens vi hører på the world's most dangerous group\",\n", + " 'jeg så snoop i staples, den shiten var cray',\n", + " 'han hadde med seg warren g, dpg og dre',\n", + " 'det var så la, jeg hadde vanskelig for å tro det',\n", + " 'gutta bare chilla helt til neste episode',\n", + " 'california love, california',\n", + " 'california love',\n", + " 'california love, california',\n", + " 'california love',\n", + " \"i '94, så var beezyboy forelska i halle\",\n", + " 'samme år ble jeg forelska i cali',\n", + " 'som petter solberg ble forelska i rally',\n", + " \"og som duchess ble forelska i o'malley\",\n", + " 'uh, aristokattene, baby',\n", + " 'i cali shaker damene på pattene, baby',\n", + " 'store palmer, ruller bort til malibou',\n", + " 'bosser opp, har hotellrom med ocean view',\n", + " 'har vært i cali seks sommere på rad',\n", + " 'pluss noen turer innimellom det, oh my god',\n", + " 'det der må kalles en addiction',\n", + " 'la, jackie brown, pulp fiction',\n", + " 'uh, big beezy tarantino',\n", + " 'jeg burde kjøpe meg en mansion i encino',\n", + " 'pluss et hus i the bay',\n", + " 'jeg føler california love sånn som 2pac og dre',\n", + " 'california love, california',\n", + " 'california love',\n", + " 'california love, california',\n", + " 'california love',\n", + " 'la, whoa whoa whoa',\n", + " 'san diego, whoa whoa whoa',\n", + " 'all the playaz in the bay (what up, bosko?)',\n", + " \"oh yeah, i'm talkin' san franscisco? (frisco)\",\n", + " 'the whole damn yay (yay area!)',\n", + " 'city of long beach, long beach',\n", + " 'city of compton, compton',\n", + " 'city of la',\n", + " 'thousand oaks, to',\n", + " 'everybody, whoa whoa',\n", + " \"let's make a toast for the coast\",\n", + " 'california love, california',\n", + " 'california love',\n", + " 'california love, california',\n", + " 'california love',\n", + " 'la, whoa whoa whoa',\n", + " 'san diego, whoa whoa whoa',\n", + " 'på banen ut mot ammerud',\n", + " 'kom jeg i snakk med en gammel dame på 107',\n", + " 'så jeg prata om været , hvordan det alltid snør',\n", + " 'mer i groruddalen enn i byen, hun mente hør',\n", + " 'du er ikke hvor du er fra, du er det du gjør',\n", + " 'det hørtes temlig ut som noe jeg har skrevet sjøl',\n", + " 'jeg så forvirra ut hun så på meg og sa min sønn',\n", + " 'ingenting verdt å vinne lar seg vinnes av seg sjøl',\n", + " 'jeg er ikke en av de som mener alt var bedre før',\n", + " 'i min levetid har levetiden nemlig økt',\n", + " 'en del har bedre liv, mere tid og flere tør',\n", + " 'å våge vinne verden, flere bærer mindre bør',\n", + " 'du må huske jeg ble født her uten stemmerett',\n", + " \"nå har jeg månedskort, jeg smilte, sa ''du har nok rett''\",\n", + " 'men samtidig er sannelig samtiden van-vittig',\n", + " 'framskrittet styres alltid fram av gal business',\n", + " 'det er vanskelig å ikke synes alt er galskap',\n", + " 'det virker som om fornuften sakte avtar, hun sa',\n", + " 'ung må verden ennå være, det er klart at',\n", + " 'tålmodighet må ikke blandes ut med latskap',\n", + " 'dårlige ting kommer fort, bra ting kommer sakte',\n", + " 'og det er alltid tungt å bære vann i motbakke',\n", + " 'se ditt liv i tidens lys, historiens lange rekke',\n", + " 'vær mann for din hatt, nå jeg faktisk av på neste',\n", + " 'on the e train to queens, i was coming from a meeting',\n", + " 'thinking about burning one, and sue the head decon',\n", + " 'ipod warm button, peep don martin',\n", + " \"in the next seat, he's bugging\",\n", + " 'cause he never met a mc',\n", + " 'riding on the train, like he been working a dayjob',\n", + " \"nah, i'm not some stuck-up entertainer,man, you way off\",\n", + " 'these rappers stay soft, frogulent, burning made off',\n", + " 'gassed up, but not prepared for take-off',\n", + " 'but anyway, don told me that he lives in norway',\n", + " \"and he won't rest untill his song is on the air all day\",\n", + " \"i'm like, 'that's what they all say'\",\n", + " 'untill the game fucks them with no foreplay',\n", + " 'oslo, the ocean county to the project hallways',\n", + " \"he said: ''craig, on tv it seems like a (?)''\",\n", + " \"i said: '' ting er ikke alltid som de ser ut''\",\n", + " \"check some of these rappers bank accounts, you'll get the proof\",\n", + " \"it's fairy-tales, yo man, they faking in the booths\",\n", + " 'and the money that they making off the youth, has to stop',\n", + " \"they wanna be pop, but guns they don't blast to pop\",\n", + " 'in the hood they want out of place asher roth',\n", + " \"it's like taking a sick day, then walk passed your boss\",\n", + " 'i hope you learn something in this ride, crash your course',\n", + " \"blast your thoughts, it's like i passed the torch\",\n", + " \"but i gotta go, man, and i should have been stopped, i'm out\",\n", + " 'vær mann for din hatt',\n", + " 'så jeg er mann for min hatt, navnet er martin, jeg er minstemann fra',\n", + " 'gatas parlament ikke parlamentet bak akersgata',\n", + " 'tar betalt for spadetak, apekatter vi må ha mat as',\n", + " 'sprader stadig fram og prøver prakke på deg gatasplata',\n", + " 'denne teksten kommer fra rap genius norge!',\n", + " 'vegas, baby',\n", + " 'fra min city til din city',\n", + " 'ingen steder kan du bawle som i sin city',\n", + " 'det er beezy mackaroney (curtis brothers)',\n", + " 'sodapop og pony',\n", + " 'sin city, baby, vegas knights',\n", + " 'shiten off the chain som talladega nights',\n", + " 'moët-en flower som fontenen på bellagio',\n", + " 'beezy knocker shiten ut av stadion som dimaggio',\n", + " \"jeg og sodapop er kledd opp i no' fresh shit\",\n", + " 'nye sneakers, nye shorter, ny fresh kit',\n", + " \"vi er klare for no' blackjack\",\n", + " 'yeah, vi bringer playashiten back, back',\n", + " 'gjør det som sinatra, stilen er classy',\n", + " \"henger rundt på club-er hvor de spiller no' jazzy\",\n", + " 'titter etter notches som er freaky som cassy',\n", + " 'soda, du tar mary-kate, jeg kan ta ashley',\n", + " 'ironisk at jeg føler meg classy i en by så cheezy',\n", + " \"hoes'a skaper ikke bry for beezy\",\n", + " 'situasjonen, den er ny for beezy',\n", + " 'men det føles som om dette er en by for beezy (yeah)',\n", + " 'fra min city til din city',\n", + " 'ingen steder kan du bawle som i sin city (what)',\n", + " 'det er beezy mackaroney (curtis brothers)',\n", + " 'sodapop og pony',\n", + " 'fra din city til min city',\n", + " 'ingen steder kan du gamble som i sin city (say what)',\n", + " 'det er beezy mackaroney (okay)',\n", + " 'sodapop og pony',\n", + " 'nok en banger, nok en vegas night',\n", + " 'ser en breezy med en booty som er megatight',\n", + " \"what's your name, baby? make it right\",\n", + " 'vi gjør det master, major, mega right',\n", + " 'yeah, vi gjør det biggere enn biggest (hvorfor det?)',\n", + " 'fordi vi synes det er diggest (aha)',\n", + " 'bosser opp i store suiter',\n", + " 'såpass store suiter at horer titter',\n", + " \"hvor er soda? jeg har sett'n ved ruletten\",\n", + " \"han gambler som en psycho, som om ingenting kan mette'n\",\n", + " 'og han gambler nok med beezys penger',\n", + " 'og problemer som det der er mer enn beezy trenger',\n", + " 'vi møtte på noen digge dykes',\n", + " \"tok dem med på lunsj på-på jersey mike's\",\n", + " 'hun ene ligna litt på dorthe skappel',\n", + " 'så vi gifta oss i nærmeste chapel, holla',\n", + " 'fra min city til din city',\n", + " 'ingen steder kan du bawle som i sin city',\n", + " 'det er beezy mackaroney (curtis brothers)',\n", + " 'sodapop og pony',\n", + " 'fra din city til min city',\n", + " 'ingen steder kan du gamble som i sin city',\n", + " 'det er beezy mackaroney (curtis brothers)',\n", + " 'sodapop og pony',\n", + " 'ey yo, ey yo, ey yo',\n", + " \"nah, you don't wanna fuck with me\",\n", + " 'big oral fucking bee',\n", + " 'keeper det så g-g-g',\n", + " 'ey yo, ey yo, ey yo',\n", + " \"so you don't wanna fuck with me\",\n", + " 'big oral fucking bee',\n", + " 'keeper det så g-g-g',\n", + " 'fra min city til din city',\n", + " 'ingen steder kan du bawle som i sin city',\n", + " 'det er beezy mackaroney',\n", + " 'sodapop og pony',\n", + " 'fra din city til min city',\n", + " 'ingen steder kan du gamble som i sin city',\n", + " 'yessir, oh boy',\n", + " 'yeah, ey yo, sodapop, mayne (chuch)',\n", + " 'føles som vi er på toppen av verden, baby bro (yeah)',\n", + " 'shit, tenker på de stakkars haterne tilbake i norge, playboy (aha)',\n", + " 'sitter sikkert hjemme på hybelen sin og røyker hasj og spiller playstation, mayne',\n", + " 'mens vi suser rundt i verden som noen bosses',\n", + " 'cali cali cali',\n", + " 'cali cali cali california love',\n", + " 'dette er historien om hvordan det gikk til',\n", + " 'da vi dro til la for å finne oss selv',\n", + " 'og vi gikk på en smell alt første kveld',\n", + " 'og ikke skjønte bæret før vi kom til oss selv',\n", + " \"i've been searching for someone\",\n", + " 'but i found no one',\n", + " 'no one like you',\n", + " \"i've been searching for someone\",\n", + " 'but i found no one',\n", + " 'no one like you',\n", + " 'yo yo',\n", + " 'gikk opp på the strip',\n", + " 'kikka etter bloods kikka etter crips',\n", + " 'vakke noe pes alt var \"all good\"',\n", + " 'livet i hollywood er \"so smooth\"',\n", + " 'så på et skilt står det \"all nude\"',\n", + " 'jeg og gutta mine bare \"oh dude\"',\n", + " 'det var body shot til body shot',\n", + " 'og de som ikke tror stripping er noen ordentlig jobb',\n", + " 'hakke møtt monique for tro meg',\n", + " 'hun var nydelig og hun forsto meg',\n", + " 'det vakke lett for min nye bff',\n", + " 'vi sa honey \"you can take all the money that we got left\"',\n", + " \"i've been searching for someone\",\n", + " 'but i found no one',\n", + " 'no one like you',\n", + " \"i've been searching for someone\",\n", + " 'but i found no one',\n", + " 'no one like you',\n", + " '[verse}',\n", + " 'våkner opp blakk',\n", + " 'jeg bare \"oh fuck\"',\n", + " 'det var god kok last night',\n", + " \"poco loco that's right\",\n", + " 'hei dere ikke for å være gjerrig',\n", + " 'men reisekassa vår er tom sterri',\n", + " 'og vi er ikke ferdig med ferie på lenge',\n", + " 'det er fortsatt tolv uker igjen til vi er hjemme',\n", + " 'yo shorty no worries',\n", + " 'monique hun er jo vår homie',\n", + " 'vi bare stikker opp på klubben hennes tvert',\n", + " 'så får vi sikkert alle penga våre back',\n", + " \"i've been searching for someone\",\n", + " 'but i found no one',\n", + " 'no one like you',\n", + " \"i've been searching for someone\",\n", + " 'but i found no one',\n", + " 'no one like you',\n", + " 'åååh',\n", + " 'men når vi kommer opp på klubben har det skjedd noe trist',\n", + " 'monique har blitt syk siden sist',\n", + " 'hun er så ung så det gjør vondt å se at hun har blitt dement',\n", + " 'for både oss og våre penger har hun glemt',\n", + " 'så blir vi kasta ut på gata av en fyr som har pistol',\n", + " 'åh monique',\n", + " 'åh monique',\n", + " 'åh monique',\n", + " \"i've been searching for someone\",\n", + " 'but i found no one',\n", + " 'no one like you',\n", + " \"i've been searching for someone\",\n", + " 'but i found no one',\n", + " 'no one like you',\n", + " 'no one no one like you',\n", + " \"i've been searching for someone\",\n", + " 'but i found no one',\n", + " 'no one like you',\n", + " \"i've been searching for someone\",\n", + " 'but i found no one',\n", + " 'no one like you',\n", + " 'klokken fem om natten, e ennå ute på gaten',\n", + " 'ennå våken, e ennå ikkje i kåken',\n", + " 'klokken seks om natten, e ennå ute på streeten',\n", + " \"plukker om mobilen og finner nummer til pete'n\",\n", + " \"men eg tror han sover, eg kan'kkje komme over\",\n", + " 'han har sikkert kommet over en tøs han har kommet over',\n", + " 'det e streit, det e greit, det e kult',\n", + " \"eg kan'kje være sur\",\n", + " 'klokken fem om natten, klokken seks om natten',\n", + " 'klokken syv om natten, e ennå ute på gaten',\n", + " 'eg e så trøtt eg neste stuper',\n", + " 'byen våkner opp og det e allerede lys i noen ruter',\n", + " 'møter venner som vender hjemover igjen',\n", + " 'ennå en evneløs kar, denne har vart i flere uker',\n", + " 'eg lengter hjem etter sengen, men den e fult med no puter utav dunfjær',\n", + " 'du tar feil hvis du tror eg ender tomhendt der hjemme',\n", + " 'eg har en kjerring der som bare sitter og pugger kamasutra',\n", + " 'så framtiden e brukbar, brukbar',\n", + " 'rett skal være rett, så eg bare setter på no tupac',\n", + " 'utavmegsjølopplevelse, lever det regelrett',\n", + " 'unntaket som bekrefter regelens leverett',\n", + " 'i midten av forvirringen og klirringen, kronerullingen',\n", + " 'vil ingen røre tingenes stilling',\n", + " 'kjerringen sier det faller naturlig for oss to å være tvetydig',\n", + " \"det e'kkje seint, nei det e tidlig\",\n", + " 'hon sier at det faller naturlig for oss å være tvetydig',\n", + " \"det e'kkje seint, nei det e\",\n", + " 'tidlig, tidlig, tidlig, tidlig',\n", + " 'holder på å sovne',\n", + " 'så treffer eg tjommien min clova',\n", + " 'han kommer hele veien fra huntsville, alabama',\n", + " 'g-side',\n", + " 'så han må si ka det går i',\n", + " 'si det te de, mann',\n", + " 'one fingerprint on that button, watch it crank',\n", + " 'ace of spade up in my cup is what i like to drink',\n", + " \"since i'm highly toxicated i think i'm the man\",\n", + " \"i just rather be alone, i ain't got time for holding hands\",\n", + " \"i'm spending money i ain't even got\",\n", + " 'just my buzz alone got me buying out the nightspot',\n", + " 'damn, they told me it would never be the same',\n", + " \"yeah i'm fuckin', but i don't even remember names\",\n", + " \"and i'm sorry, this shit is so timeless\",\n", + " \"once you in the game, you ain't even gotta buy shit\",\n", + " \"i'm at austin at the south by southwest\",\n", + " \"labels wanna sign me, i don't even want the damn check\",\n", + " \"yeah i change my style, niggas still be wearing last year's\",\n", + " \"yeah i'm outta space, i don't even breath the air here\",\n", + " \"i don't even spend cash here\",\n", + " \"do it for my fans, that's the only reason i'm here\",\n", + " 'for vi eier den der undergrunnen',\n", + " 'nmg g-huset, slow motion soundz',\n", + " 'g-side',\n", + " 'tjommien 2 lettaz e og oppi kåken',\n", + " 'ey si ka det går i, mann',\n", + " 'they call me slick tony',\n", + " \"macaroni on these low self-esteem bitches then i pass 'em to my homies\",\n", + " \"i'm everything these other boys used to be\",\n", + " \"i can tell by her face she ain't used to me\",\n", + " 'see them other dudes treat her like she fine',\n", + " \"she say she like me 'cause i don't treat her like she mine\",\n", + " 'and i be up on my grind, and i beat up on her spine',\n", + " \"so she say she can't keep me up of off mine\",\n", + " 'thoughts turn to tweets, and tweets to texts',\n", + " 'and texts turn to speech, and speech turns to sex',\n", + " \"but she ain't gotta feel like a freak, boo\",\n", + " \"if it make you feel any better i'm a freak too\",\n", + " \"it's five am in the morning and i'm in bergen\",\n", + " \"only thing on my mind is burnin'\",\n", + " \"no sleep, i'm on my shit, i'm earnin'\",\n", + " 'got a norwegian freak that speak english, but give head in german',\n", + " 'hon sier det faller naturlig for oss å være tvetydige',\n", + " \"det e'kkje seint, nei det e tidlig\",\n", + " \"det e'kkje seint, nei det e tidlig\"]},\n", + " 'data': ['en jazzy motherfucker ifra 1450',\n", + " 'en classy motherfucker som de kaller big oral bee (mitt hjemsted)',\n", + " 'en jazzy motherfucker ifra 1450 (mackarone)',\n", + " 'en classy motherfucker som de kaller big oral bee',\n", + " '1450, home of big beezy',\n", + " 'dit hvor haters drar hvis de vil se en digg breezy',\n", + " 'mange kaller oss for nordens big easy',\n", + " \"men bustaz kan'ke komme hit og få et ligg easy\",\n", + " 'her er jeg ungenes idol',\n", + " 'gjorde 1450 til en verdensmetropol',\n", + " 'til en what? til en smeltedigel',\n", + " 'hoesa er så søte her at de kan smelte sméagol',\n", + " 'og de kan smelte smeezy',\n", + " 'over tusen søte bitches her, det telte smeezy',\n", + " 'champagne over bitches, shit, det helte smeezy',\n", + " \"er trygg på toppen, man, du kan'ke velte smeezy\",\n", + " 'haters, de har prøvd, men ingen felte beezy',\n", + " \"de endte opp i røde kors sitt telt, fo' sheezy\",\n", + " 'for jeg er gangsta som de niro',\n", + " 'og back i 14-fizzle er jeg gatene sin hero (hero, hero, hero)',\n", + " 'en jazzy motherfucker ifra 1450',\n", + " 'en classy motherfucker som de kaller big oral bee (big oral bee)',\n", + " 'en jazzy motherfucker ifra 1450 (big oral bee)',\n", + " 'en classy motherfucker som de kaller big oral bee',\n", + " '1-4-5-o, en oase',\n", + " 'første gang du kommer dit, så føler du ekstase',\n", + " 'tangen centrum, det er gangsterne sin base',\n", + " \"du vet du bør'ke messe med dem, dawg, du bør'ke fjase\",\n", + " 'de drikker tuborg, sjelden coronas',\n", + " 'ser lite rims, lite gylne daytonas',\n", + " \"men våre bitches, de kan matche barcelona's\",\n", + " 'de sitter bakpå når vi sladder og gjør donuts',\n", + " 'jeg gjør din hoe nuts, ikke glem det',\n", + " 'hun blir så fuktig når jeg rapper om mitt hjemsted',\n", + " 'hun vil rulle rundt med beezy på min mc',\n", + " 'tror jeg har en ledig plass bak dem tre',\n", + " 'ingen kan ta brodden ut av odden',\n", + " \"et haterfjes kom hit fra byen, og gatene, de fucka'n\",\n", + " 'de sier one-four-five',\n", + " 'er et sånn type sted only the strong survive, baby',\n", + " 'en jazzy motherfucker ifra 1450',\n", + " 'en classy motherfucker som de kaller big oral bee (big oral bee)',\n", + " 'en jazzy motherfucker ifra 1450 (big oral bee)',\n", + " 'en classy motherfucker som de kaller big oral bee',\n", + " '14-fizzle',\n", + " 'mitt hjemsted',\n", + " 'mackarony',\n", + " 'thirstin howl, god knows got flows',\n", + " 'norwegian teamin’, we in oslo',\n", + " 'side brok, we the crooks',\n", + " '84 scores, how this adidas look',\n", + " 'skihopp, skijumping',\n", + " '3 connecting flights and i ain’t eat nuthin',\n", + " 'scandinavian alien',\n", + " 'tasmanian damien, mainly in',\n", + " 'brooklyn! chill in norway',\n", + " 'brown cheese, some trees killed the fortay',\n", + " 'smoke weed in the shower when i’m at the plaza',\n", + " 'record the song and the video in half an hour',\n", + " 'la cura spanish, hip-hop cure',\n", + " 'you like this track, check the tour',\n", + " 'thorstein hyl, odd g, skatebård',\n", + " 'th3 nigga, need i say more?',\n", + " 'frå en plass uten gate, ej eig ikkje streetcred',\n", + " 'berre dritcred og god-til-å-drikke-spritcred',\n", + " 'vic lo, tight og tyste',\n", + " 'polo stil med norsk flagg på bryste',\n", + " 'han bor på plaza, ej bor på gata',\n", + " 'null retningssans, ej fer berre rundt og kava',\n", + " 'lite populær som ei onde stemama',\n", + " 'folk kika skeptisk som madcon på t-bana',\n", + " 'stakkars oslo, den minste og den største',\n", + " 'umuli å gå på fylla for her finnst ikkje grøfte',\n", + " 'sjølstendi, uavhengig',\n", + " 'han e lo life og ej e berre elendi',\n", + " 'så pass på, du kan’kje fucke med oss to',\n", + " 'frå bygda te brooklyn via oslo',\n", + " 'thirstin, thorstein, dei to fyllefantane',\n", + " 'herja rundt i oslo med litt drit i kantane',\n", + " 'pass på, du kan’kje fucke med oss to',\n", + " 'frå bygda te brooklyn, via oslo',\n", + " 'yo, you stupid fuckin’ with us two',\n", + " 'frå bygda te brooklyn, via oslo lo life generals, send',\n", + " 'the troops',\n", + " 'my passport lost, get it through',\n", + " 'stash weed, money, go through customs',\n", + " 'politi sleeping, we don’t trust em',\n", + " 'so fuck em, dei fe’kje bura oss inne',\n", + " 'siste glattcelle ligge sterkt i minne',\n", + " 'fe kun vatn, brød uten nåke',\n", + " 'det e ekstra nifst for ej kan ikkje språke',\n", + " 'the studio, runar, we wrote this track',\n", + " 'so cold, can’t take off my coat and hat',\n", + " 'ja, veire victor, det e stort sett wack',\n", + " 'ej trur me trenge en coke og cognac',\n", + " 'back to the plaza, get some sleep tonite',\n", + " 'ej ska tebake te gata og holde det tight',\n", + " '17 hours, 3 connecting flights',\n", + " 'he kun 17 krone til 3 røyk og reis',\n", + " 'oh shit',\n", + " 'cheesy eighties rock shit, mayne',\n", + " 'do-do-down',\n", + " \"we're gettin' do-do-down\",\n", + " \"we're gettin' do-do-down\",\n", + " \"we're gettin' do-do-down\",\n", + " 'ey, har deg på hjernen som et catchy hook',\n", + " 'så hvis du ser meg falle, prøv å catch en crook',\n", + " 'du har en catchy look',\n", + " \"jeg vil'ke legge deg ifra meg som en catchy book\",\n", + " 'du får en playa til å føle seg viril',\n", + " 'har aldri sett en breezy som har like saucy stil',\n", + " 'du er alt som mine øyne kan se',\n", + " 'i beezy sine drømmer, baby, putter vi det ned',\n", + " 'do-do-down (say what?)',\n", + " \"we're gettin' do-do-down\",\n", + " \"we're gettin' do-do-down (okay)\",\n", + " \"we're gettin' do-do-down\",\n", + " \"we're gettin' do-do-down (say what?)\",\n", + " \"we're gettin' do-do-down\",\n", + " \"we're gettin' do-do-down (okay)\",\n", + " \"we're gettin' do-do-down\",\n", + " 'hey, det er mange playaz som vil ha deg',\n", + " 'mange playaz som vil ta deg eller kna deg',\n", + " 'men denne pimpen, han vil la deg',\n", + " 'dueze din ting, ha noe mere enn en fling',\n", + " 'jeg er nesodden sin king, beeyboy the great',\n", + " 'så hvorfor kan jeg ikke bare be deg med på date? (what?)',\n", + " 'hey, hva faen holder meg tilbake?',\n", + " 'blir stum når jeg ser smilet ditt og kløfta i din hake',\n", + " 'do-do-down',\n", + " \"we're gettin' do-do-down (say what?)\",\n", + " \"we're gettin' do-do-down\",\n", + " \"we're gettin' do-do-down (whooh)\",\n", + " \"we're gettin' do-do-down\",\n", + " \"we're gettin' do-do-down (okay)\",\n", + " \"we're gettin' do-do-down\",\n", + " \"we're gettin' do-do-down\",\n", + " 'yeah, what up, baby girl?',\n", + " 'i mine drømmer, baby',\n", + " 'så putter vi det ned, hahaha, yeah',\n", + " \"we're gettin' do-do-down\",\n", + " \"we're (yeah) gettin' do-do-down\",\n", + " \"yeah, we're gettin' down, so shortie, what it do?\",\n", + " 'yep, my name is beezy mackarony, who the fuck is you?',\n", + " 'i feel like a neglected child cause i demand your attention introducing my self adding',\n", + " 'a voice to the message',\n", + " 'i feel like a neglected child cause i demand your attention introducing my self adding',\n", + " 'a voice to the message',\n", + " 'i was hard headed (thought) lessons where thought',\n", + " 'its like riding a bicicle to me its a part of me yall',\n", + " 'please pardon me yall if i ever disrespected',\n", + " 'i was disrespectless critizising your methods',\n", + " 'but im learning stuff everyday its hard to skip a lesson',\n", + " 'what happens after this? shit i dont know',\n", + " 'my folks had me at an early age',\n", + " 'along side others i was struggling with minimum-wage',\n", + " 'the my two brothers came',\n", + " 'stressed up on my fathers chest developed an acurance',\n", + " 'to take his family out of the continent',\n", + " 'no longer i throw rocks at the pen',\n", + " 'my mom is calm not seeing the sun in the slums without ajar',\n", + " 'apreciating what he does but he does what he loves',\n", + " 'i made mama proud',\n", + " 'i made mama proud',\n", + " 'im trying to keep a mom and daughter trying to make it right with this ryhme',\n", + " 'i made mama proud',\n", + " 'im trying to keep a mom and daughtermake it right with this ryhme',\n", + " 'for the times i screamed at you, and times i answered back',\n", + " 'im sorry mama. im sorry mama',\n", + " 'for the times i lied to you, for the times i stood high in front of you',\n", + " 'im sorry mama. im sorry mama',\n", + " 'stammer fra liberia, men aldri satt fot der',\n", + " 'alt jeg vet at folket mitt dør og at the finns mye dop her',\n", + " 'og se sønnen sin ble narkoman tok vel knekken på modern',\n", + " 'gikk langt over grensen, såret alle jeg elsket',\n", + " 'tilbringer nok netter på glattceller',\n", + " 'solgte dop, gjorde brekk bare for å skaffe meg, litt penger',\n", + " 'sliter fortsatt med abstinenser',\n", + " 'kaldt svetter',\n", + " 'i komunen ble jeg sjapt stemplet',\n", + " 'var skoleflink men ville heller ende opp som de eldre kriminelle',\n", + " 'hadde jeg kunnet gått tilbake i tiden, ville jeg hørt på mine foreldre',\n", + " 'i dag feller jeg tårer alene i mørket og ber til gud at alt skal bli bedre, alle',\n", + " 'kunne se det',\n", + " 'han kommer til å bli en narkis, kunne blitt noe stort no en gang men valgte å bli',\n", + " 'nothing',\n", + " 'skulle bli forbilde for lille søstra mi og all ting',\n", + " 'og bare tolv år gammel var første gang jeg ble lagt inn',\n", + " 'ejeg står fortapt mamma stakk jeg omringes av ondskap',\n", + " 'og en kald vind',\n", + " 'alt jeg sitter igjen er ubrukelig erfaring, jeg skuffet mor, selvmordstanker',\n", + " 'sitter her som en patetisk angrende pilleknaskende mother fucker alt gikk i vasken',\n", + " 'min',\n", + " 'fremtiden min? lurer fortsatt på om jeg takler det. (takler det.)',\n", + " 'mamma plis. jeg veit du fikk nok, jeg gjør mitt beste for å gjøre opp!',\n", + " 'vil gjøre deg stolt, det har gått 4 år siden jeg så deg og jeg. jeg har vokst!',\n", + " 'jeg var en tosk og jeg skulle hørt når du hadde det tøft. jeg var lagt nede du ga',\n", + " 'meg trøst!',\n", + " 'et lite løft dagen du fant meg liggende bevistløs nede i en grøft (nede i en grøft.)',\n", + " 'i made mama proud',\n", + " 'im trying to keep a mom and daughtermake it right with this ryhme',\n", + " 'for the times i screamed at you, and times i answered back',\n", + " 'im sorry mama. im sorry mama',\n", + " 'for the times i lied to you, for the times i stood high in front of you',\n", + " 'im sorry mama. im sorry mama']},\n", + " 'rock': {'meta': {'train_data': ['stå opp gå på weiter gehen nå ja keep on keeping on',\n", + " 'opp og ned langs stranda, the trolls are searching for the way',\n", + " 'sie will enda lengre nedover, ned zu die huleher skerinne',\n", + " 'jegermeister kennen at det lukter mistenkelig mannevondt and big',\n", + " 'er snusen opp en hulegang und leder trollene an',\n", + " 'gangen leder nеdover und sie høren sie ist nær',\n", + " 'noe stort ligger og grynter og ett brøl gir mor knær',\n", + " 'fräulein helluva, mannevond og svær',\n", + " 'fräulein helluva, hun spiser troll som bær',\n", + " 'jegermeister feels his nerves are shaking, dette blir hans siste dans',\n", + " 'nonetheless he will sacrifice it, han vil leve evig i legenden',\n", + " 'sakte kryper trollene closer to the sound they heard',\n", + " 'jegermeister be de andre ventem han vil være første troll som ser på',\n", + " 'fräulein helluva, mannevond og svær',\n", + " 'fräulein helluva, hun spiser troll som bær',\n", + " 'jegermeister is sneaking, sakte føler han seg frem',\n", + " 'er kan sehen eine åpning, carefully he has a little peek',\n", + " 'in the next cave there is a monster, she seems more than fortyfive feet tall',\n", + " 'the bodies of dead trolls are stuck in her teeth, in her hand rests an enormous club',\n", + " 'in a great hall she rules the day, surrounded by henchmen and servants',\n", + " 'upon a throne she sits and commands them, they all cower in fear',\n", + " 'gjennom tåkete daler',\n", + " 'mellom dystre fjell',\n", + " 'under grå skyer',\n", + " 'mitt i svarte natt',\n", + " 'på en stolt hest',\n", + " 'iført svarte klær',\n", + " 'sterke våpen i hånd',\n", + " 'uendelig med døde trær',\n", + " 'en evighet av kulde',\n", + " 'over stokk og stein',\n", + " 'inn i skyggene...',\n", + " 'ut fra tåken',\n", + " 'ut fra mørke',\n", + " 'ut fra fjellets store skygge',\n", + " 'drømmens slott...',\n", + " 'da stopper rittet',\n", + " 'som varte i en livstid',\n", + " 'for herren går',\n", + " 'between misty vales',\n", + " 'between gloomy mountains',\n", + " 'under gray clouds',\n", + " 'in the black night',\n", + " 'on a proud horse',\n", + " 'in black clothes',\n", + " 'strong weapons at hand',\n", + " 'the infinity with dead trees',\n", + " 'an eternity of cold',\n", + " 'over stone and wood',\n", + " 'in the shadows',\n", + " 'out from the mist',\n", + " 'out from darkness',\n", + " 'out from the big shadows of the mountain',\n", + " 'the castle of the dream…',\n", + " 'so ends the ride',\n", + " 'that lasted a lifetime',\n", + " 'for the master goes (in the castle of the dream)',\n", + " 'camouflage clair stiger plutslich ut of thin air und informeren trollene',\n", + " 'down the cave there is a river sie must cross but there is one catch, en høne kjører båten',\n", + " 'grusom gross und arg hen, horrible hades hen',\n", + " 'trollene sniker seg towards the riverboat place und speider etter hadeshøna',\n", + " 'suddenly står den rett bak shetlandspaul og skriker',\n", + " 'shetlandspaul han freezes up in tеrror und er pinkeln, mens hadeshøna hakker maten',\n", + " 'hadeshøna gulpes down shetlandspaul in violent frenzy, yummy!',\n", + " 'hungry hostile høna, foul and evil fowl',\n", + " 'hen of hades guards the river',\n", + " 'the rest of the trolls løper alt sie kan mot båten mens hadeshøna glefser i seg',\n", + " 'uheldigvis ser høna hva som skjer und skriker',\n", + " 'with beak and claws, the hen comes rushng mot dem eyes ablazing, høna willen essen alle',\n", + " 'jegermeister har fått nok og skyter vilt mot høna aber hadeshøna finnen derning',\n", + " 'trollene tar båten, legger utpå elven',\n", + " 'hen of hades lost the river',\n", + " 'sakte over elven staker islandshans, er hat mer å bære uten shetlandspaul',\n", + " 'hadeshøna stands still on the riverbank, boiling with white-hot rage hadeshøna lets out one more',\n", + " 'neslepaks',\n", + " 'paa den ottende dagen slukte han alt vann',\n", + " 'og paa den niende dagen fordervet han all mat',\n", + " 'og paa den tiende dagen brant han jorden',\n", + " 'neslepaks',\n", + " 'neslepaks',\n", + " 'neslepaks',\n", + " 'og paa den ellevte dagen slo han folk og dyr ihjel',\n", + " 'og paa den tolvte dagen kvalte han himmeriket',\n", + " 'og paa den trettende dagen skygget han for solen',\n", + " 'neslepaks',\n", + " 'saa var der ingen dager mer',\n", + " 'saa var der ingen dager mer',\n", + " 'ingen dager mer',\n", + " 'ingen dager mer',\n", + " 'torneherren speiles i ødelagt liv mens',\n", + " 'sorgengler regner fra',\n", + " 'oven til kosmos’ endeløse tidsrom skjenker vi',\n", + " 'den siste død',\n", + " 'skjenker vi den siste død',\n", + " 'neslepaks',\n", + " 'and on the 8th day he devoured all water',\n", + " 'and on the 9th day he spoiled all food',\n", + " 'and on the 10th day he burned the earth',\n", + " 'and on the 12th day he beat people and animals to death',\n", + " 'and on the 12th day he strangled heaven',\n", + " 'and on the 13th day he covered the sun',\n", + " 'and then there were no more days',\n", + " 'and then there were no more days',\n", + " 'no more days',\n", + " 'no more days',\n", + " 'the thornmaster is mirrored in ruined life',\n", + " 'while angels of sorrow rains from above',\n", + " 'to the endless time of cosmos we are given',\n", + " 'the final death',\n", + " 'we are given the final death',\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " '\"kan ikke finne ord til prise mæ nok\"',\n", + " 'sier dem som tar ordet',\n", + " 'mens jeg beføler en tidligere',\n", + " 'elev under bordet',\n", + " 'jeg har venta lenge nu',\n", + " 'tida er inne',\n", + " 'og jeg blir ikke yngre',\n", + " 'jeg har alt å vinne',\n", + " 'deilig å være autoritet i noens liv',\n", + " 'smågutter sier ikke imot når jeg går i regi',\n", + " 'i kveld, som til en hvertid',\n", + " 'har jeg publikum i min hule hånd',\n", + " 'alle er fornøyd',\n", + " 'ingen her ser ut til å tenke på at',\n", + " 'kjentfolk har sider du ikke ønsker å kjenne til',\n", + " 'vi er i et skuespill',\n", + " 'jeg snakker, alt du senser er tvilsomme',\n", + " 'undertoner bak hvert ord jeg sier',\n", + " 'hver ting jeg gjør',\n", + " 'ingenting blir noen gang som før',\n", + " 'nu som vi blør',\n", + " \"du få'kke lukke din hjertedør\",\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " 'jeg skal bergta deg',\n", + " 'jeg skal ta deg',\n", + " 'jeg ska ta å berge deg',\n", + " 'jeg skal bergta deg',\n", + " 'jeg skal ta deg',\n", + " 'jeg skal ta å',\n", + " 'kanskje jeg fitteberger deg',\n", + " 'kanskje jeg sitter og terger deg',\n", + " 'kanskje jeg fitteberger deg',\n", + " 'kanskje jeg sitter og terger deg',\n", + " 'yeah',\n", + " \"nothing's like it used to be\",\n", + " 'my teacher wanted to touch me',\n", + " \"nothing's like it used to be\",\n", + " 'my teacher wanted to',\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " \"all my life you've been leading my way\",\n", + " \"now you touch me, i don't know what to say\",\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " 'i wanna be forever young and never ever die',\n", + " '(never ever die)',\n", + " 'i want to be the first to taste your pink virgin pie',\n", + " '(your pink virgin pie)',\n", + " \"oh don't be scared and don't you throw up\",\n", + " \"now it's time for you\",\n", + " 'to grow up',\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " \"all my life you've been leading my way\",\n", + " \"now you touch me, i don't know what to say\",\n", + " \"all my life you've been leading my way\",\n", + " \"now you touch me, i don't know what to say\",\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " \"i'm under table\",\n", + " 'i am unable',\n", + " 'to say what i want',\n", + " 'i go where you go',\n", + " 'kom unge bror',\n", + " 'skjenk oss din rene ungdom',\n", + " 'legg ditt liv i våre hender',\n", + " 'kjemp vår krig med oss',\n", + " 'la vare sorger formørke ditt sinn',\n", + " 'la din sjel slites',\n", + " 'føl natten som legger seg rundt deg',\n", + " 'glem all kjærlighet',\n", + " 'ingen tårer skal fylle dine netter',\n", + " 'tre inn i broderskapets ring',\n", + " 'ingen svakhet skal du finne i din sjel',\n", + " 'styrken skal vandre ved din side',\n", + " 'kom',\n", + " 'del ditt hat med oss',\n", + " 'forlat ditt svake legeme',\n", + " 'la deg ei forvirres av vakre ord',\n", + " 'i døden finnes all makt',\n", + " 'come young brother',\n", + " 'give us your pure youth',\n", + " 'lay your life in our hands',\n", + " 'fight our war with us',\n", + " 'let our sorrows darken your mind',\n", + " 'let our soul be torn apart',\n", + " 'feel the night wrap itself around you',\n", + " 'forget all love',\n", + " 'no tears shall fill your nights',\n", + " 'enter the ring of brotherhood',\n", + " 'no weakness shall be found in your soul',\n", + " 'strength shall wander by your side',\n", + " 'come',\n", + " 'share your hate with us',\n", + " 'leave your weak body',\n", + " 'do not be bewildered by enchanting words',\n", + " 'in death lies all power',\n", + " 'fucking shit, fucking shit',\n", + " 'boys with an accent like this',\n", + " 'king of every city',\n", + " 'hot boys inni livet mitt',\n", + " 'jævla drit, jævla drit',\n", + " 'gutta med dialekt så svær',\n", + " 'kongen over bodø',\n", + " 'hot boy ber meg komme hit',\n", + " 'think again, think again',\n", + " 'if you think you can f-f-fool me',\n", + " 'with your words like this',\n", + " 'ta nu og bli med hjem til meg',\n", + " 'think again, think again',\n", + " 'if you think you can f-f-fool me',\n", + " 'kan du please bli med',\n", + " 'hjem til meg',\n", + " 'gonna fuck my heart and',\n", + " 'steal my pride',\n", + " 'in the city',\n", + " '(leave it there to die)',\n", + " 'leave it to die in the city, city',\n", + " '(leave it there to die, leave it there to die)',\n", + " 'gonna fuck my heart and',\n", + " 'steal my pride',\n", + " 'in the city',\n", + " '(leave it there to die)',\n", + " 'leave it to die in the city, city',\n", + " '(leave it there to die, leave it there to die)',\n", + " 'woah, woah',\n", + " '\"æ e fra bodø og æ kan spøtt\"',\n", + " 'boy with a brain so sexy',\n", + " 'make me say \"come get me\"',\n", + " 'hot boy with a fancy dick (ooh)',\n", + " 'jævla pikk, jævla pikk',\n", + " 'slutt nu å se på meg sånn der',\n", + " 'kongen over bodø',\n", + " 'lurer seg inn i livet mitt',\n", + " 'think again, think again',\n", + " 'if you think you can f-f-fool me',\n", + " 'with your words like this',\n", + " 'ta nu og bli med hjem til meg',\n", + " 'think again, think again',\n", + " 'if you think you can f-f-fool me',\n", + " 'kan du please bli med',\n", + " 'hjem til meg',\n", + " 'gonna fuck my heart and',\n", + " 'steal my pride',\n", + " 'in the city',\n", + " '(leave it there to die)',\n", + " 'leave it to die in the city, city',\n", + " '(leave it there to die, leave it there to die)',\n", + " 'gonna fuck my heart and',\n", + " 'steal my pride',\n", + " 'in the city',\n", + " '(leave it there to die)',\n", + " 'leave it to die in the city, city',\n", + " '(leave it there to die, leave it there to die)',\n", + " 'woah, woah',\n", + " 'nighttime in the city',\n", + " 'suddenly our eyes meet',\n", + " 'you look very pretty',\n", + " 'bodøgutt',\n", + " 'you said you would call me',\n", + " 'but you never called me',\n", + " 'i have been so lonely',\n", + " 'phone me, bitch',\n", + " 'nighttime in the city',\n", + " 'suddenly our eyes meet',\n", + " 'you look very pretty',\n", + " 'bodøgutt',\n", + " 'you said you would call me',\n", + " 'but you never called me',\n", + " 'i have been so lonely',\n", + " 'phone me, bitch',\n", + " 'gonna fuck my heart and',\n", + " 'steal my pride',\n", + " 'in the city',\n", + " '(leave it there to die)',\n", + " 'leave it to die in the city, city',\n", + " '(leave it there to die, leave it there to die)',\n", + " 'gonna fuck my heart and',\n", + " 'steal my pride',\n", + " 'in the city',\n", + " '(leave it there to die)',\n", + " 'leave it to die in the city, city',\n", + " '(leave it there to die, leave it there to die)',\n", + " 'woah, woah',\n", + " 'nighttime in the city',\n", + " 'you said you would call me',\n", + " 'damn, you look so pretty',\n", + " 'magnus, erik, kristoffer, fredrik, petter, thomas, jørgen, håvard',\n", + " 'gonna fuck me hard and',\n", + " 'steal my pride',\n", + " 'in the city',\n", + " '(leave it there to die)',\n", + " 'leave it to die in the city, city',\n", + " '(leave it there to die, leave it there to die)',\n", + " 'gonna fuck my heart and',\n", + " 'steal my pride',\n", + " 'in the city',\n", + " '(leave it there to die)',\n", + " 'leave it to die in the city, city',\n", + " '(leave it there to die, leave it there to die)',\n", + " 'woah, woah',\n", + " 'ingen stillhet her ute - en drøm',\n", + " 'her hvor månen rår - en drøm',\n", + " 'jeg hater denne skog',\n", + " 'hvor ingen fare truer',\n", + " 'ingen ulv',\n", + " 'ingen bjørn',\n", + " 'intet troll',\n", + " 'puster',\n", + " 'ingen onde ånder',\n", + " 'ingenting',\n", + " 'puster',\n", + " 'bare meg og natten -',\n", + " 'bare meg og natten',\n", + " 'en natt skal jag reise',\n", + " 'til helvete',\n", + " 'no stillness out here - a dream',\n", + " 'here where the moon rules - a dream',\n", + " 'i hate these woods',\n", + " 'where there is no danger',\n", + " 'no wolf',\n", + " 'no bear',\n", + " 'no troll',\n", + " 'breathes',\n", + " 'no evil spirits',\n", + " 'nothing',\n", + " 'breathes',\n", + " 'only the night and me - only the night and me',\n", + " 'a night i shall journey',\n", + " 'to hell',\n", + " 'en fager kvinne',\n", + " 'ved hallens tunge port står',\n", + " 'lyser som en gudinne',\n", + " 'med blondt langt hår',\n", + " \"one day we'll all stand in front of her and get\",\n", + " 'the judgement given by her scale',\n", + " 'the goddess of rights',\n", + " 'and the judge of the wrong',\n", + " \"this is syn's song\",\n", + " 'free us',\n", + " 'from the burden we bear',\n", + " 'from the forthcoming fear',\n", + " 'incept the trial',\n", + " \"it's in your hand\",\n", + " 'end this nightmare',\n", + " 'med sverdet hevet hun sier',\n", + " 'at rett skal være rett',\n", + " 'og skal du få komme gjennom porten',\n", + " 'så må du være bedt',\n", + " \"one day we'll all stand in front of her and get\",\n", + " 'the judgement given by her scale',\n", + " 'the goddess of rights',\n", + " 'and the judge of the wrong',\n", + " \"this is syn's song\",\n", + " 'som å søke beskyttelse mot mørket',\n", + " 'i armene til et speil',\n", + " 'hos den som kastet deg ut',\n", + " 'fra din egen dyriske varme',\n", + " 'siden er du siamesisk alene',\n", + " 'med et nattlodd i hver av dine fire hender',\n", + " 'det er ennå før drukningen',\n", + " 'eller trekningen',\n", + " 'august',\n", + " 'plutselig fikk jeg øye på deg',\n", + " 'inne i det forlatte kjøkkenet',\n", + " 'et askebeger med en sammensnørt epleskrott',\n", + " 'en sigarett stump en kirsebærstein',\n", + " 'hvor mange dager eller uker',\n", + " 'er det siden det falt så heraldisk på plass',\n", + " 'et rundt blikkaskebeger med bunnen dekket av et svart kornete belegg',\n", + " 'som jord med vulkansk aske',\n", + " 'det som roper i deg',\n", + " 'roper ikke på deg',\n", + " 'mai',\n", + " 'ansiktet en nisje',\n", + " 'der står skuffen med det i deg som ennå gløder og varmer',\n", + " 'når det er stille virker tyngeloven større',\n", + " 'ingen frukt nå bare blomster',\n", + " 'jeg tenker på et gult eple i regnet',\n", + " 'det er spist',\n", + " 'dyrene er spist og kommer igjen',\n", + " 'vi blir ødelagt og kommer igjen',\n", + " 'det som ikke kan se seg selv ser gjennom deg',\n", + " 'desember',\n", + " 'tilfrossne fotspor',\n", + " 'riller kvadrater kors fiskebeins mønster overstrødd med et tynt lag puddersnø',\n", + " 'så kontrasten mellom de opphøyde og de lave partiene blir tydelig',\n", + " 'der hvor mange individuelle spor møtes',\n", + " 'flyter de sammen i en nesten enhetlig ruglette tekstur',\n", + " 'overfloder av spor nærmer seg det sporløse igjen fra motsatt side',\n", + " 'det som ikke kan skrike selv har ingen angst',\n", + " 'det trenger ikke ditt skrik',\n", + " 'som å søke beskyttelse mot mørket',\n", + " 'i armene til et speil',\n", + " 'hos den som kastet deg ut',\n", + " 'fra din egen dyriske varme',\n", + " 'siden er du siamesisk alene',\n", + " 'med et nattlodd i hver av dine fire hender',\n", + " 'det er ennå før drukningen',\n", + " 'eller trekningen',\n", + " '_________________________',\n", + " 'like seeking protection from the dark',\n", + " 'in the arms of a mirror',\n", + " 'in the house of the one who threw you out',\n", + " 'of your own animal heat',\n", + " 'from then on you are siamesian alone',\n", + " 'with a sinker/ticket in each of your four hands',\n", + " 'it is still before the drowning',\n", + " 'or the drawing',\n", + " 'august',\n", + " 'suddenly i noticed you',\n", + " 'within the abandoned kitchen',\n", + " 'an ashtray with a twirled apple core',\n", + " 'a cigarette butt, a cherry stone',\n", + " 'how many days or weeks',\n", + " 'has it been since it fell together so heraldically',\n", + " 'a round tin ashtray with its bottom covered with a black, grainy coating',\n", + " 'as dirt with volcanic ashes',\n", + " 'that which shouts within you',\n", + " 'does not call you',\n", + " 'may',\n", + " 'the face a niche',\n", + " \"there is the drawer with what's still glowing and warming within you\",\n", + " 'when it is quiet, gravity seems to grow',\n", + " 'no fruit now, just flowers',\n", + " \"i'm thinking of a yellow apple in the rain\",\n", + " 'it is eaten',\n", + " 'the animals are eaten, then come back',\n", + " 'we become ruined, then come back',\n", + " 'that which cannot see itself, sees through you',\n", + " 'december',\n", + " 'frozen foot tracks',\n", + " 'grooves, squares, crosses, fishtail patterns sprinkled with a thin layer of snow',\n", + " 'making the contrast between the raised and the lower layers apparent',\n", + " 'there where many individual tracks meet',\n", + " 'they float together in an almost singular pebbled texture',\n", + " 'overflowings of tracks closes in on the traceless again, from the opposite side',\n", + " 'that which cannot scream by itself, has no fear',\n", + " 'it does not need your scream',\n", + " 'like seeking protection from the dark',\n", + " 'in the arms of a mirror',\n", + " 'in the house of the one who threw you out',\n", + " 'of your own animal heat',\n", + " 'from then on you are siamesian alone',\n", + " 'with a sinker/ticket in each of your four hands',\n", + " 'it is still before the drowning',\n", + " 'or the drawing',\n", + " 'seidmannen klatrer opp i tre',\n", + " 'finner der jords gamle smerte',\n", + " 'kutter den ned i høstens fred',\n", + " 'med saks skjærer ut dets hjerte',\n", + " 'eikens løv mot bakken faller',\n", + " 'seidmannen åndene kaller!',\n", + " 'eikens løv mot jorden faller',\n", + " 'seidmannen tryllevers traller!',\n", + " 'løken legges i lintøy ned',\n", + " 'hellige eiketreånden',\n", + " 'seidmannen sikrer verdens fred;',\n", + " 'fruktbarhet, solmakt i hånden!',\n", + " 'eikens løv mot bakken faller',\n", + " 'seidmannen åndene kaller!',\n", + " 'eikens løv mot jorden faller',\n", + " 'seidmannen tryllevers traller!',\n", + " 'der er solens brennende kraft;',\n", + " 'der er jordens fruktbare hav;',\n", + " 'i seidmannens mektige skaft;',\n", + " 'i drottens beåndede stav',\n", + " 'the sorcerer climbs a tree',\n", + " \"finds earth's old pain\",\n", + " 'cut it down in autumn peace',\n", + " 'with scissors cut out its heart',\n", + " 'oak leaves fall to the ground',\n", + " 'sorcerer calls the spirits!',\n", + " 'oak leaves fall to the ground',\n", + " 'sorcerer magic verse trolleys!',\n", + " 'onion laid down in swaddling clothes',\n", + " 'holy eiketreånden',\n", + " 'sorcerer ensure world peace;',\n", + " 'fertility, solmakt in hand!',\n", + " 'oak leaves fall to the ground',\n", + " 'sorcerer calls the spirits!',\n", + " 'oak leaves fall to the ground',\n", + " 'sorcerer magic verse trolleys!',\n", + " 'where is the burning force;',\n", + " 'where is the earth fertile seas;',\n", + " 'the shape of the sorcerer mighty shaft;',\n", + " 'in drottens inspirited spelling',\n", + " 'kom død, kjære død;',\n", + " 'gi meg løsning på alle gåter;',\n", + " 'gi meg nøkkel og tryllestav',\n", + " 'knyt opp verdens knuter',\n", + " 'hvorfor i døden, min venn, og der alene?',\n", + " 'hvorfor i glemselens elv du stuper?',\n", + " 'hvorfor i mørket, min venn, og der alene',\n", + " 'søker du lysets vennlige varme?',\n", + " 'la meg åpne det lukkede rom',\n", + " 'la meg riste de skjulte runer',\n", + " 'la meg kaste mitt spyd',\n", + " 'midt i trollets kalde hjerte',\n", + " 'hvorfor i døden, min venn, og der alene?',\n", + " 'hvorfor i glemselens elv du stuper?',\n", + " 'hvorfor i mørket, min venn, og der alene',\n", + " 'søker du lysets vennlige varme?',\n", + " 'døden var her først',\n", + " 'glemselen seirer til slutt',\n", + " 'mørket fødte lyset',\n", + " 'hva mer vil du vite?',\n", + " 'død, kjære død! død, min død!',\n", + " 'glemselen har tatt meg',\n", + " 'mørket har senket seg for alltid',\n", + " 'hva mer kan jeg vite?',\n", + " 'kom død, kjære død;',\n", + " 'gi meg løsning på alle gåter;',\n", + " 'gi meg nøkkel og tryllestav',\n", + " 'lås opp verdens låste luker',\n", + " 'døden var her først',\n", + " 'glemselen seirer til slutt',\n", + " 'mørket fødte lyset',\n", + " 'hva mer vil du vite?',\n", + " 'død, kjære død! død, min død!',\n", + " 'glemselen har tatt meg',\n", + " 'mørket har senket seg for alltid',\n", + " 'hva mer kan jeg vite?',\n", + " 'come death,dear death;',\n", + " 'solve all riddles for me;',\n", + " 'give me key and wand',\n", + " 'tie up all knots',\n", + " 'why in death,my friend,and there alone?',\n", + " 'why do you dive into the river of forgetfulness?',\n", + " 'why in darkness,my friend,and there alone?',\n", + " 'do you seek the friendly warmth of the light?',\n", + " 'let me open the closed room',\n", + " 'let me carve the hidden runes',\n", + " 'let me throw my spear',\n", + " 'into the cold heart of the troll',\n", + " 'why in death,my friend,and there alone?',\n", + " 'why do you dive into the river of forgetfulness?',\n", + " 'why in darkness,my friend,and there alone?',\n", + " 'do you seek the friendly warmth of the light?',\n", + " 'death was here first',\n", + " 'forgetfulness always wins in the end',\n", + " 'darkness gave birth to light',\n", + " 'what else do you want to know?',\n", + " 'death,dear death! death, my death!',\n", + " 'forgetfulness has taken me',\n", + " 'darkness has descended upon me forever',\n", + " 'what else can i know?',\n", + " 'come death,dear death;',\n", + " 'solve all riddles for me;',\n", + " 'give me key and wand',\n", + " 'unlock all hatches',\n", + " 'death was here first',\n", + " 'forgetfulness always wins in the end',\n", + " 'darkness gave birth to light',\n", + " 'what else do you want to know?',\n", + " 'death,dear death! death, my death!',\n", + " 'forgetfulness has taken me',\n", + " 'darkness has descended upon me forever',\n", + " 'what else can i know?',\n", + " 'langveysfra blifver hun iagttagen',\n", + " 'øine, mange graablick',\n", + " 'medens maanen tavst glider',\n", + " 'pigen:',\n", + " '\"eg merkje kalde øyne',\n", + " 'kva er eg vár - maa være snar',\n", + " 'før trolldomskraft med makt meg tar\"',\n", + " 'øine holder hende endnu',\n", + " 'seer fra nysgierrig fjærnhed',\n", + " 'norsk nat iiser',\n", + " 'naar lyd lig hylende varg sætter',\n", + " 'torden ruller',\n", + " '(angsten blusser)',\n", + " 'verden er sneen',\n", + " '- stille',\n", + " 'alleene hun aander',\n", + " 'hierteslag banker',\n", + " 'blodet iisner i aarene',\n", + " 'de underjordiske:',\n", + " '\"sorrigens kilde hviler',\n", + " 'paa de torneklædte træer',\n", + " 'hun er saa vacker een dyd',\n", + " 'hendes drøm solspell indvier\"',\n", + " 'paa disse hvide kinder',\n", + " 'paa denne smiilforladte mund',\n", + " 'taarerne i elver strømmer',\n", + " 'naar verden er i blund',\n", + " 'english translation:',\n", + " \"from far away she's being watched\",\n", + " 'eyes, many eyes of gray watches her',\n", + " 'while the moon slowly glides',\n", + " 'the girl:',\n", + " '\"i sense cold eyes',\n", + " 'whatever i do – i must be quick',\n", + " 'before sorcery takes me with force\"',\n", + " 'eyes still behold her',\n", + " 'looking curiously from afar',\n", + " 'norwegian night ices',\n", + " 'when the sound of howling wolves beckons',\n", + " 'thunder rolls',\n", + " '(her anxiety blazes)',\n", + " 'the world is snow',\n", + " '- quiet',\n", + " 'alone she breathes',\n", + " 'heart beats',\n", + " 'her blood turns to ice',\n", + " 'those underground:',\n", + " '\"the source of sorrow rests',\n", + " 'on the thorn dressed trees',\n", + " 'she is as beautiful as a virtue',\n", + " 'hendes drøm solspell indvier*',\n", + " 'on those white cheeks',\n", + " 'on that mouth that no longer smiles',\n", + " 'tears flows in rivers',\n", + " 'when the world sleeps',\n", + " '*untranslatable',\n", + " 'imellom buskene vi stirret',\n", + " 'på de som minnet om andre tider',\n", + " 'og fortalte at håpet var borte',\n", + " 'for alltid...',\n", + " 'vi hørte alvesang og vann',\n", + " 'som sildret',\n", + " 'det som en gang var er nu borte',\n", + " 'alt blodet...',\n", + " 'all lengsel og sorg som hersket',\n", + " 'og de følelser som kunne',\n", + " 'røres',\n", + " 'er vekk...',\n", + " 'for alltid...',\n", + " 'vi døde ikke...',\n", + " 'vi har aldri levd',\n", + " 'between the bushes we stared',\n", + " 'at those who reminded us of another age',\n", + " 'and told that hope was away',\n", + " 'forever',\n", + " 'we heard elven song and',\n", + " 'water that trickled',\n", + " 'what once was is now',\n", + " 'away',\n", + " 'all the blood',\n", + " 'all the longing and pain that',\n", + " 'ruled',\n", + " 'and the emotions that could be stirred',\n", + " 'are away',\n", + " 'forever',\n", + " 'we are not dead',\n", + " 'we have never lived',\n", + " 'ta nu å slutt',\n", + " 'ta nu å slutt slut',\n", + " 'give way for the kings of shut up',\n", + " 'i will suck it up for you',\n", + " 'swallow it down for you',\n", + " 'slutt!',\n", + " 'ta nu å slutt slut',\n", + " 'give way for the kings of shut up',\n", + " 'i will suck it up for',\n", + " 'swallow it down for you',\n", + " 'lalalala',\n", + " 'lalalala',\n", + " 'lalalala',\n", + " 'lalalala',\n", + " \"shut up i'm a cherry bomb and\",\n", + " \"i'm about to blow you up\",\n", + " 'this is the r. (be)for(e) the riot (riot!)',\n", + " 'a, b, c, d cup',\n", + " 'shut up up fyll et bomberom',\n", + " 'for det her kan gå jævlia galt',\n", + " 'on nichego ne ponimayet',\n", + " 'æ klikke internasjonalt',\n", + " 'ta nu å slutt',\n", + " 'ta nu å slutt slut',\n", + " 'give way for the kings of shut up',\n", + " 'i will suck it up for you',\n", + " 'swallow it down for you',\n", + " 'slutt!',\n", + " 'ta nu å slutt slut',\n", + " 'give way for the kings of shut up',\n", + " 'i will suck it up for',\n", + " 'swallow it down for you',\n", + " 'lalalala',\n", + " 'lalalala',\n", + " 'lalalala',\n", + " 'lalalala',\n", + " 'shut up we are going back og',\n", + " 'det blir fette jævla bra',\n", + " 'back to the crazy bad ass shit',\n", + " 'we have inside our hearts',\n", + " 'shut up i want to say to you, i say',\n", + " 'nananananana',\n", + " 'before we met you everything was better',\n", + " 'ta nu å slutt',\n", + " 'ta nu å slutt slut',\n", + " 'give way for the kings of shut up',\n", + " 'i will suck it up for you',\n", + " 'swallow it down for you',\n", + " 'slutt!',\n", + " 'ta nu å slutt slut',\n", + " 'givе way for the kings of shut up',\n", + " 'i will suck it up for',\n", + " 'swallow it down for you',\n", + " 'you telling me how to play it cool',\n", + " \"wеll i don't see the way you roll\",\n", + " 'smack in your face bitch',\n", + " 'we gonna go back to that dogshit',\n", + " 'you telling me how to play it cool',\n", + " \"well i don't see the way you roll\",\n", + " 'smack in your face bitch',\n", + " 'we gonna go back to that dogshit',\n", + " 'ta nu å slutt',\n", + " 'ta nu å slutt slut',\n", + " 'give way for the kings of shut up',\n", + " 'i will suck it up for you',\n", + " 'swallow it down for you',\n", + " 'slutt!',\n", + " 'ta nu å slutt slut',\n", + " 'give way for the kings of shut up',\n", + " 'i will suck it up for',\n", + " 'swallow it down for you',\n", + " 'lalalala',\n", + " 'lalalala',\n", + " 'lalalala',\n", + " 'lalalala',\n", + " 'hadde vært sykt stilig om vi kunne lagt lokk på ting som har skjedd',\n", + " \"e'kke keen på at folk slal få vite det. okay?\",\n", + " 'hilsen paulo',\n", + " 'helluva steht undt denken an hvordan hun kan finne ney undersåtter som kan hente vann',\n", + " 'the last one that she had died in a freakish accident, sie setzen sich an er wenn er fragt \"wo ist deine fornuft?\"',\n", + " 'jævelen han våget å insinuere frekt at hun var for stor for sin egen dør og aldri kunne dra vekk',\n", + " 'den frekke faen foreslo å spise nibdre mat, she flattened him and ate him fikk han servert på ett fat',\n", + " 'goddamn und ficken skitt she is still pissed off!',\n", + " 'om hun kunne kill him again she would live it in her heart',\n", + " 'she will töten er o igjen in fact she found him tasty',\n", + " 'hun grynter mens hun tenker fordi hun syns det er stress, when she can stick to hitting things da er hun i sitt ess',\n", + " 'sie will töten alt og alle in fact she will eat everyone',\n", + " 'rasende og sinna setter helluva i et brøl, all denne tankevirsomhet nå skal hun lage søl',\n", + " 'with her club in her hand, she strikes out towards the nearest servant',\n", + " 'slaget lander fint og flott på tjeneren sin topp, instant soup it makes of hi og helluva slurper opp',\n", + " 'happy for some soup she briefly forgets to be angry',\n", + " 'camouflage clair is a spelunking sister and so is steel sarah',\n", + " 'begge to utforske den wahnsinns grosse jungel fordi de leter etter hull',\n", + " 'hull som leder dypt ned, deeper down into the earth they hope to find a vicious mom',\n", + " 'steel sarah hum roper, she has found a dypt mørkt hole that she wants to explore',\n", + " 'steel sarah rappellerer deeper into nye steder',\n", + " 'after viele høydemeter steht sie støtt i hullets bunn og freser',\n", + " \"in front of her lies a serpent bigger than a king's apartment\",\n", + " 'men steel sarah bare gliser, she draws her sword und rett ut friser',\n", + " 'sword in hand she cuts that snake',\n", + " 'sword in hand she cleaves it into two',\n", + " 'sverd i hånd som drypper blod',\n", + " 'sverd i hånd som drypper slange blod',\n", + " 'right behind den døde ormen, kommer det en til slange',\n", + " 'den er også veldig hissig, but no match for our sword missy',\n", + " 'sword in hand she cuts that snake',\n", + " 'sword in hand she cleaves it into two',\n", + " 'sverd i hånd som drypper blod',\n", + " 'sverd i hånd som drypper slange blod',\n", + " 'steel sarah, draws her sword, cleaves the snakes, warrior',\n", + " 'sword in hand she cuts that snake',\n", + " 'sword in hand she cleaves it into two',\n", + " 'sverd i hånd som drypper blod',\n", + " 'sverd i hånd som drypper slange blod',\n", + " 'vårt hat skal vinne',\n", + " 'vår ondskap skal gro',\n", + " 'a feste seg i unge sjeler',\n", + " 'den siste krig skal vi vinne',\n", + " 'og de godes blod skal falle som regn',\n", + " 'deres korte sjeler skal samles',\n", + " 'vi skal rå de over kaos og evig natt',\n", + " 'vi skal glemme de kvinnelig vikante mødre',\n", + " 'og utslette alt',\n", + " 'et rike skal reiset seg',\n", + " 'i asken av brennte hjem',\n", + " 'det er kun en herre hersker',\n", + " 'vi heller deg satan de sterkes konge',\n", + " 'din tid er kommet',\n", + " 'our hate shall win',\n", + " 'our evil shall grow',\n", + " 'to fix itself in young souls',\n", + " 'the final war shall we win',\n", + " 'and the blood of the good shall fall as rain',\n", + " 'their short souls shall be gathered together',\n", + " 'we shall reign over chaos and everlasting night',\n", + " 'we shall forget the womanly weak small mother',\n", + " 'and end all',\n", + " 'a kingdom shall raise itself',\n", + " 'in the ash of burned homeland',\n", + " 'there is only one master ruler',\n", + " 'we pay tribute to you satan the king of the strong',\n", + " 'your time is has come']},\n", + " 'data': ['hengitt er vi',\n", + " 'til mørkets keiser',\n", + " 'den allmektiges kraft',\n", + " '(som) fører vårt sinn',\n", + " 'i kamp',\n", + " 'mot godhet og løgn',\n", + " 'dog fiendens hær er fattig',\n", + " 'er den stor',\n", + " 'men vi skal ta dem alle',\n", + " 'og hente dem inn',\n", + " 'en etter en',\n", + " 'det håp de ser i gud',\n", + " 'skal forsvinne i et hav av torner',\n", + " 'de torner deres falske frelser',\n", + " 'engang følte spikret i sin skalle',\n", + " 'himmelen skal rakne',\n", + " 'og en fandens torden',\n", + " 'skal buldre å brake',\n", + " 'hans krefter vil røyne',\n", + " 'der mørkets front',\n", + " 'beseirer lystes pest',\n", + " 'ã\\x98yne vil renne i sorg',\n", + " 'når de innser (at) deres gud',\n", + " 'ikke lenger kan hjelpe',\n", + " 'det håp de så i gud',\n", + " 'er svunnet og vekk for alltid',\n", + " 'de følger nå sin falske felser',\n", + " 'som fortsatt er bærer av en krone',\n", + " 'med torner',\n", + " 'men konge ble han ikke',\n", + " 'devoted are we',\n", + " 'to the emperor of the dark',\n", + " 'the power of the almighty',\n", + " '(which)leads our minds',\n", + " 'into battle',\n", + " 'against the good and their lies',\n", + " \"though the enemy's army is poor\",\n", + " 'it is big',\n", + " 'but we shall take them all',\n", + " 'gather them up',\n", + " 'one by one',\n", + " 'the hope they saw in god',\n", + " 'shall i disappear in an ocean of thorns',\n", + " 'the thorns their fake messiah',\n", + " 'once felt nailed to his skull',\n", + " 'heaven shall be torn',\n", + " 'and a f*cking thunder',\n", + " 'shall boulder and roar',\n", + " 'his powers will go weak',\n", + " 'where the front of dark',\n", + " 'conquer the plague of light',\n", + " 'eyes will run in sorrow',\n", + " 'when they realize (that) their god',\n", + " 'no longer can help',\n", + " 'the hope they found in god',\n", + " 'is gone and so it shall be forever',\n", + " 'now they follow their fake salvator',\n", + " 'who still carries a crown of thorns',\n", + " 'but king he never became',\n", + " 'professor otto står ved bålet, er brygger på ein troll love potion, den skal han gi til jegermeister',\n", + " 'jegermeister trenger den zu speed up all the fertilizing',\n", + " 'et stykke fra helluvas hall har trollene slått leir og made plans',\n", + " 'helluva skal få bli gravid nå',\n", + " 'jegermeister skal bli far og uten tvil så dør han av det',\n", + " 'nå drikker jegermeister troll-love eliksiren, er ist klar zu sacrifice life',\n", + " 'så tar han fart og løper straight towards helluva, he has no remorse and no fear',\n", + " 'he has no remorse and no fear',\n", + " 'rett bak ham følger sarah, camoclair und otto',\n", + " 'islandshans hat nicht zu gut fart',\n", + " 'now entering the hall, they all split up and distract helluva with all their power',\n", + " 'distract helluva with their power',\n", + " 'bang! helluva eksplodere, trampe rundt i sinne, denge laus med klubba si',\n", + " 'wow! camouflage claire sniker jegermeister bak und opp på ryggen til helluva',\n", + " \"now the other trolls retreat; they have made the feat, it's up to jegermeister\",\n", + " 'so none gets to witness mating unlike anything, except a few deep-water fish',\n", + " \"we're talking about angler fish\",\n", + " \"au! helluva feels something itching on her lower back but she's far too fat to reach it\",\n", + " \"slow! jegermeister's merging, melting into her skin, becoming a part of her\",\n", + " 'then the only thing left from jegermeister is a huge sack of balls',\n", + " 'they remain there even dangling, pumping out his semen whenever she is good to spawn',\n", + " 'spawning out some little troll bastards',\n", + " 'over the next few weeks, helluva pumps out a fullblown horde',\n", + " 'our dearest jegermeister made life better for the trolls',\n", + " 'out dearest jegermeister gave his life for all the trolls',\n", + " 'professor otto står ved bålet, er underholde massevis av trollkids, noen klatre rundt på islandhans',\n", + " 'resten av dei lytter til hva professoren lærer dem',\n", + " 'steel sarah und camouflage clair patruljere hulene og henter trollunger, helluva gir faen i det',\n", + " 'hun ligger i hallen sin og spruter ut en masse trollbarn',\n", + " 'ingen stillhet her ute - en droem',\n", + " 'her hvor maanen raar - en droem',\n", + " 'jeg hater denne skog',\n", + " 'hvor ingen fare truer',\n", + " 'ingen ulv',\n", + " 'ingen bjoern',\n", + " 'intet troll',\n", + " 'puster',\n", + " 'ingen onde aander',\n", + " 'ingenting',\n", + " 'puster',\n", + " 'bare meg og natten -',\n", + " 'bare meg og natten',\n", + " 'en natt skal jag reise',\n", + " 'til helvete',\n", + " 'english translation:',\n", + " 'no stillness out here - a dream',\n", + " 'here where the moon rules - a dream',\n", + " 'i hate these woods',\n", + " 'where there is no danger',\n", + " 'no wolf',\n", + " 'no bear',\n", + " 'no troll',\n", + " 'breathes',\n", + " 'no evil spirits',\n", + " 'nothing',\n", + " 'breathes',\n", + " 'only the night and me - only the night and me',\n", + " 'a night i shall journey',\n", + " 'to hell',\n", + " 'en skikkelse lå der på bakken',\n", + " 'så vond at de blomster rundt visnet',\n", + " 'en dyster sjel lå der på bakken',\n", + " 'så kald at alt vann ble til is',\n", + " 'en skygge da falt over skogen',\n", + " 'da skikkelsens sjel visnet bort',\n", + " 'for skikkelsens sjel var en skygge',\n", + " 'en skygge av vondskapens makt',\n", + " '----english translation----',\n", + " 'a figure lay there on the hilltop',\n", + " 'so evil that the flowers around withered',\n", + " 'a gloomy soul lay there on the hilltop',\n", + " 'so cold that the water turned to ice',\n", + " 'a shadow then settled over the woods',\n", + " \"then the figure's soul withered away\",\n", + " \"because the figure's soul was a shadow\",\n", + " 'a shadow of the evil power',\n", + " 'i en mørk skog med kalde tjern',\n", + " 'et sted hvor herren av verdens',\n", + " 'ild ikke rekker',\n", + " 'i det mørkeste i den store',\n", + " 'av natten - av tid',\n", + " 'og de samlet seg',\n", + " 'og blev dødens hus',\n", + " 'barn av tidens krefter',\n", + " 'bran av den mektiges sønner',\n", + " 'vi står i en sirkel av svart',\n", + " 'in a dark wood with cold lakes',\n", + " \"a place where master of the world's\",\n", + " \"fire doesn't get\",\n", + " 'in the darkest great',\n", + " 'night of the time',\n", + " 'and they gathered',\n", + " 'and became the house of the dead',\n", + " \"sons of time's power\",\n", + " 'sons of the powerful sons',\n", + " 'we stand in the black circle',\n", + " 'kaos på satans slagmark',\n", + " 'hellig jord badet i blod...',\n", + " 'eimen av slakta spedbarn',\n", + " 'kristen død og kristenmanns blod',\n", + " 'di åpner porten i natt.. til helvete!!!',\n", + " 'en ny åpenbaring i dyrets tegn',\n", + " 'evig hat og evig mørke',\n", + " 'forferdelse og evig pinsler',\n", + " 'skapt av ondskap og tidløst hat',\n", + " 'dommedags eld og (en) djevelsk død',\n", + " 'alt liv skal knuses i kampen mot gud',\n", + " 'med beina godt plantet i helveteee!!!!!!',\n", + " '\"tror ikke på noen gud, ingen gud!!!',\n", + " 'kvalme og forakt i kristen drakt... dommedag...',\n", + " 'golgatha blir nostalgi, jesus profeterte pedofili..\"',\n", + " 'slakt alt hellig, drep alt jordlig liv...',\n", + " 'lev i skitten synd, dø i evig skam!!',\n", + " 'brenn guds hus, død over guds barn',\n", + " 'ta ditt eget liv!!!! ta ditt eget liv!!!!',\n", + " 'vi åpner porten til helvete!!!',\n", + " 'meld deg skyldig i løgn og hykleri',\n", + " 'gammal tidløs misantropi',\n", + " 'jesus elsket korset, er min teori (for helvete)',\n", + " 'evig hat!!! hat!!! (repeat, og ta ditt eget liv)',\n", + " '-english translation-',\n", + " 'chaos on the satan battlefield',\n", + " 'sacred earth bathed in blood ...',\n", + " 'eim of slaughtered infants',\n", + " \"christian death and christian's blood\",\n", + " 'di opens the gate tonight .. to hell !!!',\n", + " 'a new revelation in the sign of the beast',\n", + " 'eternal hatred and eternal darkness',\n", + " 'horror and eternal torments',\n", + " 'created by evil and timeless hatred',\n", + " 'doomsday fire and (one) devilish death',\n", + " 'all life must be crushed in the fight against god',\n", + " 'with legs well planted in helletee !!!!!!',\n", + " '\"don\\'t believe in any god, no god !!!',\n", + " 'nausea and contempt in christian costume ... doomsday ...',\n", + " 'golgatha becomes nostalgia, jesus prophesied pedophilia .. \"',\n", + " 'slaughter all holy, kill all mortal life ...',\n", + " 'live in dirty sin, die in eternal shame !!',\n", + " 'burn the house of god, death of the children of god',\n", + " 'take your own life !!!! take your own life !!!!',\n", + " 'we open the gate to hell !!!',\n", + " 'guilty of lies and hypocrisy',\n", + " 'old timeless misanthropy',\n", + " 'jesus loved the cross is my theory (for hell)',\n", + " 'ever hate !!! hate!!! (repeat and take your own life)',\n", + " 'down at the docks',\n", + " 'down at the docks',\n", + " 'down at the docks',\n", + " \"that's where i'll be found\",\n", + " 'when the deal goes down at the docks',\n", + " 'han så på meg sa:',\n", + " '\"down at the docks',\n", + " 'down at the docks',\n", + " \"that's where i'll be found\",\n", + " 'when the deal goes down\"',\n", + " 'det er stille på kaia i kveld',\n", + " 'kun et par ensomme tankere helt for seg selv',\n", + " 'så møt meg på brygga ved pir nummer 5',\n", + " 'presis klokka 2 am',\n", + " 'og jeg er oppvokst på brygga i son',\n", + " 'men jeg har aldri vært utfor en slik situasjon',\n", + " 'babord blir bibord',\n", + " 'stranda på land',\n", + " 'på tynn is ved oslo havn',\n", + " 'og det er hvitevarer og sorte penger',\n", + " 'de har alt du trenger her',\n", + " 'så sa han bare:',\n", + " '\"down at the docks',\n", + " 'down at the docks\"',\n", + " 'han sa:',\n", + " '\"down at the docks',\n", + " \"that's where i'll be found\",\n", + " 'when the deal goes down at the docks\"',\n", + " 'jeg bare stod der og sa:',\n", + " '\"down at the docks?\"',\n", + " '\"ja, down at the docks',\n", + " \"that's where i'll be found\",\n", + " 'when the deal goes down\"',\n", + " 'og det tviler jeg ikke på',\n", + " 'han ga meg en lapp med telefonnummer på',\n", + " 'pluss førtifire, null fire tyve også åtte eller tre og noe mer',\n", + " 'og han sa: \"learn this number by heart',\n", + " 'og ikke fly rundt i byen gutt og tro du er smart',\n", + " 'lukten er av trøbbel',\n", + " 'smaken av spenn',\n", + " 'en fiende eller en venn',\n", + " 'og det er hvitevarer og sorte penger',\n", + " 'de har alt du trenger her',\n", + " 'så sa han bare:',\n", + " '\"down at the docks\"',\n", + " 'han så på meg, sa:',\n", + " '\"down at the docks',\n", + " 'down at the docks',\n", + " \"that's where i'll be found\",\n", + " 'when the deal goes down at the docks\"',\n", + " '\"hva faen mener du med',\n", + " 'down at the docks?!\"',\n", + " '\"down at the docks',\n", + " \"that's where i'll be found\",\n", + " 'when the deal goes down\"',\n", + " 'fra new york til rotterdam',\n", + " 'hamburg, cape town',\n", + " 'dubai til birmingham',\n", + " 'med containere og kontraband',\n", + " 'det er san antonio, københavn',\n", + " 'taiwan, hong kong',\n", + " 'fra east bay til oslo havn',\n", + " 'med containere og kontraband',\n", + " 'down at the docks',\n", + " 'down at the docks',\n", + " 'down at the docks',\n", + " \"that's where i'll be found\",\n", + " 'when the deal goes down at the docks',\n", + " 'du veit du finner meg',\n", + " 'down at the docks',\n", + " 'yeah',\n", + " 'down at the docks',\n", + " \"that's where i'll be found\",\n", + " 'when the deal goes down',\n", + " 'jeg er frelst, å for en nåde!',\n", + " 'nåde over nåde',\n", + " 'jeg er frelst, å hvilken gåte!',\n", + " 'nåde over nåde',\n", + " 'tenk all min synd har jesus sonet!',\n", + " 'til sin brud har han meg kronet',\n", + " 'jeg er frelst, å for en nåde!',\n", + " 'nåde over nåde',\n", + " 'dag for dag han meg bevarer',\n", + " 'nåde over nåde',\n", + " 'frelser meg fra syndens farer',\n", + " 'nåde over nåde',\n", + " 'og om jeg synder, han forlater',\n", + " 'dag for dag han meg bevarer',\n", + " 'nåde over nåde',\n", + " 'gud skje lov, snart er jeg hjemme!',\n", + " 'nåde over nåde',\n", + " 'lammets sang jeg skal istemme',\n", + " 'nåde over nåde',\n", + " 'takk, jesus. takk for nådens under',\n", + " 'takk for fred i sår og vunder!',\n", + " 'gud skje love, snart er jeg hjemme',\n", + " 'nåde over nåde',\n", + " '----------------------',\n", + " \"i'm saved, to a grace!\",\n", + " 'grace upon grace',\n", + " \"i'm saved, oh what riddle!\",\n", + " 'grace upon grace',\n", + " 'think all my sin, jesus atoned!',\n", + " 'to his bride, he has me crowned',\n", + " \"i'm saved, to a grace!\",\n", + " 'grace upon grace',\n", + " 'day by day he me preserves',\n", + " 'grace upon grace',\n", + " 'save me from sin hazards',\n", + " 'grace upon grace',\n", + " 'and if i sin, forgiving',\n", + " 'day by day he me preserves',\n", + " 'grace upon grace',\n", + " \"thank god, soon i'm home!\",\n", + " 'grace upon grace',\n", + " 'lamb song i shall istemmer',\n", + " 'grace upon grace',\n", + " 'thank you, jesus. thanks for grace under',\n", + " 'thank you for peace in wounds and vduring!',\n", + " \"god be love, soon i'm home\",\n", + " 'grace upon grace']}}},\n", + " 'nl': {'sentence': {'pop': {'meta': {'train_data': ['(rebecca)',\n", + " \"suddenly i'm flying, flying high in the sky\",\n", + " 'i can feel that i can catch the moon',\n", + " \"the wind whispers you're gonna be here soon\",\n", + " '(arash)',\n", + " 'eshghe man, to hamooni ke age baa man bemooni',\n", + " 'to mitooni, to mitooni, mano be aarezoom beresooni',\n", + " 'ey ghorboone khandidanet, ghorboone raghsidanet',\n", + " 'na mesle to peyda nemishe, na na na na be khodaa nemishe!',\n", + " '(rebecca)',\n", + " \"suddenly i'm flying, flying high in the sky\",\n", + " 'i can feel that i can catch the moon',\n", + " \"the wind whispers you're gonna be here soon\",\n", + " \"suddenly i'm dreaming, i'm walking under the sun\",\n", + " 'as the morning comes and i wake up',\n", + " 'you are with me and the sun is up',\n", + " '(arash)',\n", + " 'mitarsam een dastaat ye kaari bede be dastam!',\n", + " 'ey eshghe man joonam fadaat, bezaar bemoonam baahaat',\n", + " 'ghorboone range laabaat, beri babaa mimiram baraat!',\n", + " 'az daste man hey dar naro, hey hey invaro oonvar naro',\n", + " 'baba divoone misham naro, na na na na az pisham naro!',\n", + " '(rebecca)',\n", + " \"suddenly i'm flying, flying high in the sky\",\n", + " 'i can feel that i can catch the moon',\n", + " \"the wind whispers you're gonna be here soon\",\n", + " \"suddenly i'm dreaming, i'm walking under the sun\",\n", + " 'as the morning comes and i wake up',\n", + " 'you are with me and the sun is up',\n", + " \"suddenly i'm flying, flying high in the sky\",\n", + " 'i can feel that i can catch the moon',\n", + " \"the wind whispers you're gonna be here soon\",\n", + " \"suddenly i'm dreaming, i'm walking under the sun\",\n", + " 'as the morning comes and i wake up',\n", + " 'you are with me and the sun is up',\n", + " \"suddenly i'm flying, flying high in the sky\",\n", + " 'i can feel that i can catch the moon',\n", + " \"the wind whispers you're gonna be here soon\",\n", + " \"suddenly i'm dreaming, i'm walking under the sun\",\n", + " 'as the morning comes and i wake up',\n", + " 'you are with me and the sun is up',\n", + " '(arash)',\n", + " 'mitarsam een dastaat ye kaari bede be dastam!',\n", + " 'fiuri braenner eikin',\n", + " 'mijn lant i brand',\n", + " 'tusend aar gaan',\n", + " 'svertar brangin fridou',\n", + " 'den leifsvol eist fuër bluot',\n", + " 'tiran blovent vrijhet',\n", + " 'dej stikke wounds',\n", + " 'wandet nah waestan',\n", + " 'mijn lant i brand',\n", + " 'tusend aar leugen',\n", + " 'alleen dej wulfar wachten',\n", + " 'liiken dej stikke wounds',\n", + " 'doh dezen wound moet steeteg bluotin',\n", + " 'fire buning the oaks',\n", + " 'my land in flames',\n", + " 'thousand years gone',\n", + " 'swords brought peace',\n", + " 'the loving one thirsts for blood',\n", + " 'the tyrant who promised freedom',\n", + " 'the hidden wounds',\n", + " 'turned to the west',\n", + " 'my land in flames',\n", + " 'thousand years of lies',\n", + " 'only the wolves are guarding',\n", + " 'licking the hidden wounds',\n", + " 'but this wound shall steadily bleed',\n", + " 'jenny wil morgen niet naar school',\n", + " 'ze word gepest de maat is vol',\n", + " 'hold on, hold on yeah',\n", + " \"s' avonds huilend op haar bed\",\n", + " 'hopend op iemand die haar red',\n", + " 'hold on, hold on yeah',\n", + " 'you are not alone',\n", + " 'we are the dreamers',\n", + " 'yeah we are all the same',\n", + " 'we are the dreamers',\n", + " 'and we will never change',\n", + " 'we are the dreamers',\n", + " \"we're not afraid to say\",\n", + " 'whats on our mind yeah',\n", + " 'cause in the end the dreamers will survive',\n", + " 'cause in the end the dreamers will survive',\n", + " \"eva's ouders gaan uit elkaar\",\n", + " 'ze wil niet zeuren maar heeft het zwaar',\n", + " 'hold on, hold on yeah',\n", + " 'ze verlangt terug naar de oude tijd',\n", + " 'maar die gedachten doen nu pijn',\n", + " 'hold on, hold on yeah',\n", + " 'you are not alone',\n", + " 'we are the dreamers',\n", + " 'yeah we are all the same',\n", + " 'we are the dreamers',\n", + " 'and we will never change',\n", + " 'we are the dreamers',\n", + " \"we're not afraid to say\",\n", + " 'whats on our mind yeah',\n", + " 'cause in the end the dreamers will survive',\n", + " 'cause in the end the dreamers will survive',\n", + " \"hanna's vader heeft een nieuwe baan\",\n", + " 'pas verhuisd en niemand kent haar naam',\n", + " 'hold on, hold on yeah',\n", + " 'we are the dreamers',\n", + " 'yeah we are all the same',\n", + " 'we are the dreamers',\n", + " 'and we will never change',\n", + " 'we are the dreamers',\n", + " \"we're not afraid to say\",\n", + " 'whats on our mind yeah',\n", + " 'cause in the end the dreamers will survive',\n", + " 'we are we are the dreamers',\n", + " 'cause in the end the dreamers will survive',\n", + " 'we are we are the dreamers',\n", + " 'we are the dreamers',\n", + " 'we are the dreamers',\n", + " 'cause in the end the dreamers will survive',\n", + " 'ze koopt haar bloemen zelf',\n", + " 'ze hoopt dat dan de lente aan komt waaien',\n", + " 'maar diep vanbinnen weet ze wel, dat ze verwelken in een handomdraai',\n", + " 'dat het water troebel wordt, dat ze hun hoofden laten hangen',\n", + " 'the colour of anything, is buried underneath the the smell of sunlight',\n", + " 'and the moon that lies beneath',\n", + " 'hides the bitter truth',\n", + " 'that drowning in a bed of blooms, is better than the lies',\n", + " 'that slide from singers and the songs that slip their teeth',\n", + " 'bij het vallen van de avond',\n", + " 'verlangt hij naar een spoor',\n", + " 'van een belofte in haar woorden',\n", + " 'dat weet hij wel',\n", + " 'en de dagen blijven rennen',\n", + " 'de kalender is een spel',\n", + " 'het is wennen aan september',\n", + " 'al zo snel',\n", + " 'ze kijken naar elkaar, en ze vrijen met hun ogen wijder open dan ze ooit hebben gedaan',\n", + " 'voor haar voelt het als hoop',\n", + " 'maar ze ziet dat het voor hem',\n", + " 'meer een kwestie is van noodzaak door de stilte in haar stem',\n", + " \"all the summer's falling down\",\n", + " 'and the sun is on the ground',\n", + " 'falling upon a pile of photographs',\n", + " 'and the days flame out',\n", + " 'in the dark among the ashes',\n", + " 'on this calender-go-round',\n", + " 'i got older in september',\n", + " \"and there's no way out\",\n", + " 'de bomen worden kaler',\n", + " \"(autumn's falling down, around)\",\n", + " 'zijn dromen bladeren vooruit',\n", + " '(the leaves are blowing eastward into town)',\n", + " 'als naar het eind van een verhaal',\n", + " 'haar warmte tevergeefs',\n", + " '(all your life you had the things you lose)',\n", + " 'zijn armen leger dan hij nu kan hebben',\n", + " \"(the things you keep, the things you wish you'd never left behind)\",\n", + " 'ooit had hij het allemaal',\n", + " 'bij het vallen van de avond',\n", + " \"and the summer's falling down\",\n", + " 'sleept haar hart zich voort',\n", + " 'and her heart is on the ground',\n", + " 'ze wil terug maar gaat toch door',\n", + " 'a breath of wind among the photographs',\n", + " 'dat weet ze wel',\n", + " 'and the days fade out',\n", + " 'heeft ze hem ooit leren kennen?',\n", + " 'in the dark among the endings',\n", + " 'waren ze wel bij elkaar?',\n", + " 'on this calender-go-round',\n", + " 'het is wennen aan september',\n", + " 'heading west into september',\n", + " 'and the lights go down...',\n", + " 'and the lights go down...',\n", + " 'veel te vroeg dit jaar',\n", + " 'ahaha ... oweo... ahaha ... yeah yeah yeah',\n", + " 'ik voel me super , i feel great',\n", + " 'ik kan niet blijven staan want de music is heet',\n", + " 'ik wil shaken , das het liefste wat ik doe',\n", + " 'ik wil alleen maar dansen , maybe baby with you',\n", + " 'refrein :',\n", + " 'hey mister dj laat is horen hoe het klinkt , laat is voelen hoe het swingt',\n", + " 'hey... disco wij zijn stapelgek op disco',\n", + " 'disco dat is lekker retro',\n", + " 'take your chance , are you ready to dance',\n", + " 'come on and move your feet to the disco beat',\n", + " 'disco! ... ahaha ... oweo... ahaha... yeah yeah yeah',\n", + " 'ja dit is mega this is it',\n", + " 'were gonna do it , is iedereen fit',\n", + " 'ik wil feesten en ik weet wel hoe',\n", + " 'ik wil alleen maar dansen , maybe baby with you',\n", + " 'refrein :',\n", + " 'hey mister dj laat is horen hoe het klinkt , laat is voelen hoe het swingt',\n", + " 'hey... disco wij zijn stapelgek op disco',\n", + " 'disco dat is lekker retro',\n", + " 'take your chance , are you ready to dance',\n", + " 'come on and move your feet to the disco beat',\n", + " 'disco! ... ahaha ... oweo... ahaha... yeah yeah yeah',\n", + " 'disco ... disco wij zijn stapelgek op disco',\n", + " 'disco dat is lekker retro',\n", + " 'take your chance , are you ready to dance',\n", + " 'come on and move your feet to the disco beat',\n", + " 'disco wij zijn stapelgek op disco',\n", + " 'disco dat is lekker retro',\n", + " 'take your chance , are you ready to dance',\n", + " 'come on and move your feet to the disco beat',\n", + " 'disco!',\n", + " 'ey, ey, ey',\n", + " 'all of a sudden vinden ze me handsome',\n", + " 'want nnelgy die die get the bands up',\n", + " 'nnelgy die die get the bands up, bands up, ey',\n", + " 'all of a sudden vinden ze me handsome',\n", + " 'want nnelgy die die get the bands up',\n", + " 'nnelgy die die get the bands up, bands up, ey',\n", + " 'ey, ey',\n", + " 'all of a sudden vinden ze me handsome',\n", + " \"opeens zie 'k jouw meid in m'n mansions\",\n", + " 'want ze ziet ik ben met samuel',\n", + " 'maar babygirl dit is een level',\n", + " 'die je niet aankan want ik ben een rebel',\n", + " 'en als je het aankan kan je met me bellen',\n", + " 'laatst met garri tijdens fashionweek op in paris, op in paris, ey',\n", + " \"meet ik m'n nigga bokoe daar met de promethazine, promethazine, ey\",\n", + " 'amsen appen nnelgy zo van we willen je zien, we willen je zien, ey',\n", + " 'maar nnelgy die focust op 100 bands, 100 bands, 100 bands, 100 bands',\n", + " 'jouw moeder vraagt me hoe oud ik ben, want ze ziet dat ik about it ben',\n", + " 'all of a sudden vinden ze me handsome',\n", + " 'want nnelgy die die get the bands up',\n", + " 'nnelgy die die get the bands up, bands up, ey',\n", + " 'all of a sudden vinden ze me handsome',\n", + " 'want nnelgy die die get the bands up',\n", + " 'nnelgy die die get the bands up, bands up, ey',\n", + " 'ey, ey',\n", + " 'all of a sudden vinden ze me handsome',\n", + " 'maar bokoesam die is zo random',\n", + " 'ik ben met kenny, hij popt die benzos, ey, ey',\n", + " 'all of a sudden werd het sudden death',\n", + " 'erin, eruit net een ballennet',\n", + " 'wij vallen op, en jullie vallen net, vallen net, vallen net',\n", + " 'ik en nnelgy stoppen niet met drinken als we op een dag die gouden bekers vinden',\n", + " 'dan moet je opeens niet mee gaan willen, als ik naar mn huis rij van 9 millie',\n", + " 'you know, ik ben bekend, maar raak nooit gewend aan al die bands (bands, bands, bands)',\n", + " \"fok met m'n mans, en dan laat de club achter net als de the sand\",\n", + " 'all of a sudden vinden ze me handsome',\n", + " 'want nnelgy die die get the bands up',\n", + " 'nnelgy die die get the bands up, bands up, ey',\n", + " 'all of a sudden vinden ze me handsome',\n", + " 'want nnelgy die die get the bands up',\n", + " 'nnelgy die die get the bands up, bands up, ey',\n", + " 'op de radio is een kuikentje',\n", + " 'op de radio is een kuikentje',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'op de radio is ook een kip',\n", + " 'op de radio is ook een kip',\n", + " 'en de kip toktok',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'op de radio is ook een haan',\n", + " 'op de radio is ook een haan',\n", + " 'en de haan kukeleku',\n", + " 'en de kip toktok',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'op de radio is een kalkoen',\n", + " 'op de radio is een kalkoen',\n", + " 'en de kalkoen kloekloekloek',\n", + " 'en de haan kukeleku',\n", + " 'en de kip toktok',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'op de radio is een tamme duif',\n", + " 'op de radio is een tamme duif',\n", + " 'en de duif roekoe',\n", + " 'en de kalkoen kloekloekloek',\n", + " 'en de haan kukeleku',\n", + " 'en de kip toktok',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'op de radio is ook een kat',\n", + " 'op de radio is ook een kat',\n", + " 'en de kat miauw',\n", + " 'en de duif roekoe',\n", + " 'en de kalkoen kloekloekloek',\n", + " 'en de haan kukeleku',\n", + " 'en de kip toktok',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'op de radio is een grote hond',\n", + " 'op de radio is een grote hond',\n", + " 'en de hond woef woef',\n", + " 'de kat miauw',\n", + " 'en de duif roekoe',\n", + " 'en de kalkoen kloekloekloek',\n", + " 'en de haan kukeleku',\n", + " 'en de kip toktok',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'op de radio is ook een geit',\n", + " 'op de radio is ook een geit',\n", + " 'en de geit mèèè',\n", + " 'en de hond woef woef',\n", + " 'en de kat miauw',\n", + " 'en de duif roekoe',\n", + " 'en de kalkoen kloekloekloek',\n", + " 'en de haan kukeleku',\n", + " 'en de kip toktok',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'op de radio is een lammetje',\n", + " 'op de radio is een lammetje',\n", + " 'en t lam bèèè',\n", + " 'de geit mèèè',\n", + " 'de hond woef woef',\n", + " 'en de kat miauw',\n", + " 'en de duif roekoe',\n", + " 'en de kalkoen kloekloekloek',\n", + " 'en de haan kukeleku',\n", + " 'en de kip toktok',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'op de radio is een ook een koe',\n", + " 'op de radio is een ook een koe',\n", + " 'en de koe moeeh',\n", + " \"'t lam bèèè\",\n", + " 'de geit mèèè',\n", + " 'de hond woef woef',\n", + " 'de kat miauw',\n", + " 'en de duif roekoe',\n", + " 'en de kalkoen kloekloekloek',\n", + " 'en de haan kukeleku',\n", + " 'en de kip toktok',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'op de radio is een ook een stier',\n", + " 'op de radio is een ook een stier',\n", + " 'en de stier boeeh',\n", + " 'de koe moeeh',\n", + " \"'t lam bèèè\",\n", + " 'de geit mèèè',\n", + " 'de hond woef woef',\n", + " 'en de kat miauw',\n", + " 'en de duif roekoe',\n", + " 'en de kalkoen kloekloekloek',\n", + " 'en de haan kukeleku',\n", + " 'en de kip toktok',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'en het kuiken piep',\n", + " 'op de radio is een ook een tractor',\n", + " 'op de radio is een ook een tractor',\n", + " 'en de tractor broem',\n", + " 'de tractor broem',\n", + " 'de tractor broem',\n", + " 'en het kuiken',\n", + " 'oh oh!',\n", + " 'okee, okee, okee, we gaan beginnen',\n", + " 'alle jongens en meiden, zijn we er klaar voor?',\n", + " \"chicko's en chicka's\",\n", + " 'laat je truitjes zakken',\n", + " 'we gaan een beetje herrie maken',\n", + " 'laat je horen',\n", + " 'unos, dos, tres, quatro',\n", + " 'hey, hey baby',\n", + " 'uhh, ahh, i wanna know...',\n", + " 'if you be my girl',\n", + " '...two, three, four, five, six, seven, eight',\n", + " 'hey, hey baby',\n", + " 'uhh, ahh, i wanna know...',\n", + " 'if you be my girl',\n", + " 'want jij bent een vrouw',\n", + " 'waar ik zo van hou',\n", + " 'ik ben stapelgek op jou',\n", + " 'en als je wilt, ben ik je man',\n", + " 'ik zing zo hard als ik zingen kan',\n", + " 'ik zeg:',\n", + " 'hey, hey baby',\n", + " 'uhh, ahh, i wanna know...',\n", + " 'if you be my girl (come on! come on! one, two, unos!)',\n", + " 'hey, hey baby',\n", + " 'uhh, ahh, i wanna know...',\n", + " 'if you be my girl',\n", + " 'jij maakt me veel te dol',\n", + " \"en brengt m'n hoofd op hol\",\n", + " 'jij maakt het veel te bont',\n", + " 'als jij draait met je lekkere kont',\n", + " 'hey, hey baby',\n", + " 'uhh, ahh, i wanna know...',\n", + " 'if you be my girl (zwierezwaaien kontje draaien)',\n", + " 'uh, uh',\n", + " 'hey, hey baby (uh, uh - uh, uh)',\n", + " 'uhh, ahh, i wanna know...',\n", + " \"if you be my girl (come on! come on! met z'n allen!)\",\n", + " 'hey, hey baby',\n", + " 'uhh, ahh, i wanna know...',\n", + " 'if you be my girl (we gaan beuken!)',\n", + " 'hey, hey baby',\n", + " 'uhh, ahh, i wanna know...',\n", + " 'if you be my girl',\n", + " 'one, two, three, four, five, six, seven, eight',\n", + " '(come on! come on! come on!)',\n", + " 'hey, hey baby',\n", + " 'uhh, ahh, i wanna know...',\n", + " 'if you be my girl',\n", + " '(okee, okee, laat je lekker gaan)',\n", + " '(uh, uh)',\n", + " 'hey, hey baby (uh, uh - uh, uh)',\n", + " 'uhh, ahh, i wanna know...',\n", + " 'if you be my girl',\n", + " '... two three four five six seven eight',\n", + " '(come on! come on! oh yeah!)',\n", + " 'hey, hey baby',\n", + " 'uhh, ahh, i wanna know...',\n", + " 'if you',\n", + " 'dit is geen test',\n", + " 'het is te hopen dat je het allemaal gehad hebt',\n", + " '’t feestje met de familie',\n", + " 'veel plezier in’t kot',\n", + " 'dit is geen test',\n", + " 'geniet van uw laaste uren',\n", + " 'kalmte voor de storm',\n", + " 'donkere wolken overal',\n", + " 'het is te hopen dat je er veel aan gehad hebt',\n", + " 'want dit is uw laatste …',\n", + " 'geloof mij maar want',\n", + " 'dit want is geen test',\n", + " 'duisternis overal',\n", + " 'preparing for war citizens are running',\n", + " 'gas masks for everyone restrain yourself',\n", + " 'retaliation',\n", + " 'ce nest plus un test',\n", + " 'pas le moment de regretter',\n", + " \"ils t'ont bien appris\",\n", + " \"a devoir l'accepter\",\n", + " 'ce nest plus un test',\n", + " 'affronte cette realite',\n", + " 'le ciel te menace',\n", + " 'la pluie acide va tomber',\n", + " 'duisternis overal',\n", + " 'preparing for war citizens are running',\n", + " 'gas masks for everyone restrain yourself',\n", + " 'strike keeps going on',\n", + " 'another bomb is dropping undergrund silos',\n", + " 'this is not a test',\n", + " 'retaliation complication',\n", + " 'retaliation destruction',\n", + " 'preparing for war citizens are running',\n", + " 'gas masks for everyone restrain yourself',\n", + " 'strike keeps going on',\n", + " 'another bomb is dropping undergrund silos',\n", + " 'this is not a test',\n", + " 'refrein:',\n", + " 'wieder zin detox danny en de dirks',\n", + " 'we zin de slichtste showband van ol de six',\n", + " 'we zingn shalilala shalishalilala',\n", + " 'sukerboin baby pandabear koala',\n", + " 'wieder zin detox danny en de dirks',\n", + " 'we zin de slichtste showband van ol de six',\n", + " 'we zingn shalilala shalishalilala',\n", + " 'chocola baby discobar banana',\n", + " 'merci daw ier mochtn speeln vanaavnd',\n", + " 'tis toopn daj der iets aan oat',\n", + " 'wan tis te slotte over u dat goat',\n", + " 'en daj content noar us meug goan',\n", + " 'der is ol zever genoeg rondom us',\n", + " 'vanavnd trektju da nie an',\n", + " 'verget nu wek je kind en jenne vint',\n", + " \"wan ier zien danny en de man'n\",\n", + " 'refrein:',\n", + " 'wieder zin detox danny en de dirks',\n", + " 'we zin de slichtste showband van ol de six',\n", + " 'we zingn shalilala shalishalilala',\n", + " 'sukerboin baby pandabear koala',\n", + " 'wieder zin detox danny en de dirks',\n", + " 'we zin de slichtste showband van ol de six',\n", + " 'we zingn shalilala shalishalilala',\n", + " 'chocola baby discobar banana',\n", + " 'we schrievn ieder weke songs vor eur',\n", + " 'wuk vondjer tot nu toe ol van',\n", + " 'en van de cirque int algemeen vannacht',\n", + " 'ajt goe vond klapt in under an',\n", + " 'twee dirks en jene danny in e band',\n", + " 'tope gezet vo u plezier',\n", + " 'mar et plezier is hjeel an uzne kant',\n", + " 'da is teminste ip papier',\n", + " 'refrein:',\n", + " 'wieder zin detox danny en de dirks',\n", + " 'we zin de slichtste showband van ol de six',\n", + " 'we zingn shalilala shalishalilala',\n", + " 'sukerboin baby pandabear koala',\n", + " 'wieder zin detox danny en de dirks',\n", + " 'we zin de slichtste showband van ol de six',\n", + " 'we zingn shalilala shalishalilala',\n", + " 'chocola baby discobar banana',\n", + " 'de meiskes zin ier skwone en de vintn interessant',\n", + " 'der is oltied e kanse daj in oes kot beland',\n", + " 'wen nog noois zuk goe publiek get lik ier vanavnd in u dorp',\n", + " 'en wen pertanks ovrols gewist',\n", + " 'van sint-eloois-winkel toet in dworp',\n", + " 'van sint-eloois-winkel toet in dworp',\n", + " 'aha',\n", + " 'refrein:',\n", + " 'wieder zin detox danny en de dirks',\n", + " 'we zin de slichtste showband van ol de six',\n", + " 'we zingn shalilala shalishalilala',\n", + " 'sukerboin baby pandabear koala',\n", + " 'wieder zin detox danny en de dirks',\n", + " 'we zin de slichtste showband van ol de six',\n", + " 'we zingn shalilala shalishalilala',\n", + " 'chocola baby',\n", + " 'sukerboin baby chocola baby',\n", + " 'pandabear koala discobar banana',\n", + " 'onze koffer staan gepakt - joh',\n", + " 'we zijn er klaar voor here we go',\n", + " 'van new york naar tokio - ho',\n", + " 'langs parijs, sidney en zo',\n", + " 'we zien de coolste, hipste dingen',\n", + " 'we doen musea, winkels, clubs',\n", + " 'in rio gaan we lekker swingen',\n", + " 'dansein in kingston de rubberclub',\n", + " 'sunsamba - soulsalsa',\n", + " 'boogie woogie - wangbanga bang',\n", + " 'sunsamba - cha cha cha',\n", + " 'round the world we go',\n", + " 'sunsamba jo',\n", + " 'sunsamba - sunsamba',\n", + " 'sunsamba - sunsamba',\n", + " 'van chicago naar barcelona',\n", + " 'van helsinki naar berlijn',\n", + " 'kopenhagen dan santiago',\n", + " 'rome, londen en turijn',\n", + " \"soms met de bus, dan weer in taxi's\",\n", + " 'vliegtuig op en treintje af',\n", + " 'eerst saint tropez en dan naar nice toe',\n", + " 'wie wil er mee - wie roept er bis',\n", + " 'sunsamba - soulsalsa',\n", + " 'boogie woogie - wangbanga bang',\n", + " 'sunsamba - cha cha cha',\n", + " 'round the world we go',\n", + " 'sunsamba jo',\n", + " 'sunsamba - sunsamba',\n", + " 'sunsamba - sunsamba',\n", + " 'sunsamba - soulsalsa',\n", + " 'boogie woogie - wangbanga bang',\n", + " 'boogie woogie - wangbanga bang',\n", + " 'boogie woogie - wangbanga bang',\n", + " 'sunsamba - cha cha cha',\n", + " 'round the world we go',\n", + " 'sunsamba jo',\n", + " 'sunsamba - sunsamba',\n", + " 'sunsamba - sunsamba',\n", + " 'mhm yeah',\n", + " 'yeah yeah yeah',\n", + " 'say it’s kesh and i’m back with another one yeah',\n", + " 'niemand kan begrijpen wat ik nu voor je voel',\n", + " 'niemand kan beseffen wat ik voor je zou doen',\n", + " 'want er is niemand niemand just like you',\n", + " 'niemand niemand just like you',\n", + " 'er is niemand niemand',\n", + " 'nee er is niemand niemand',\n", + " 'cause you the only one i want',\n", + " 'you the only one i need',\n", + " 'je bent de enigste voor mij, yeah yeah',\n", + " 'you the only one i want',\n", + " 'you the only one i need',\n", + " 'alleen jij alleen jij',\n", + " 'oh isabella',\n", + " 'waar ga je heen',\n", + " 'als je wilt dan kom ik mee',\n", + " 'ga niet alleen',\n", + " 'oh isabella',\n", + " 'waar ga je heen',\n", + " 'want we zijn hier met zen twee',\n", + " 'ga niet alleen',\n", + " 'oh isabella',\n", + " 'ik speel geen games',\n", + " 'wat ik voel voor jou is real',\n", + " 'ik laat je zien',\n", + " 'want ik kijk alleen naar jou',\n", + " 'en wat ik voel',\n", + " 'voel ik enkel maar voor jou',\n", + " 'alleen voor jou',\n", + " 'niemand kan begrijpen wat ik nu voor je voel',\n", + " 'niemand kan beseffen wat ik voor je zou doen',\n", + " 'want er is niemand niemand just like you',\n", + " 'niemand niemand just like you',\n", + " 'er is niemand niemand',\n", + " 'nee er is niemand niemand',\n", + " 'cause you the only one i want',\n", + " 'you the only one i need',\n", + " 'je bent de enigste voor mij, yeah yeah',\n", + " 'you the only one i want',\n", + " 'you the only one i need',\n", + " 'alleen jij alleen jij',\n", + " 'oh isabella',\n", + " 'waar ga je heen',\n", + " 'als je wilt dan kom ik mee',\n", + " 'ga niet alleen',\n", + " 'oh isabella',\n", + " 'waar ga je heen',\n", + " 'want we zijn hier met zen twee',\n", + " 'ga niet alleen',\n", + " 'there’s only one fine girl like you',\n", + " 'there’s only one fine girl i need',\n", + " 'want er is niemand niemand just like you',\n", + " 'niemand niemand just like you',\n", + " 'oh isabel oh isabel oh isa oh isa',\n", + " 'oh isabella',\n", + " 'waar ga je heen',\n", + " 'als je wilt dan kom ik mee',\n", + " 'ga niet alleen',\n", + " 'oh isabella',\n", + " 'waar ga je heen',\n", + " 'want we zijn hier met zen twee',\n", + " 'ga niet alleen',\n", + " 'ga niet alleen',\n", + " 'ga niet alleen',\n", + " 'ga niet alleen',\n", + " 'say say',\n", + " 'it’s kesh and i’m back with another one',\n", + " 'it’s kesh and i’m back with another one yeah',\n", + " 'kesh',\n", + " 'wilhelmus van nassouwe',\n", + " 'ben ik, van duitsen bloed',\n", + " 'den vaderland getrouwe',\n", + " 'blijf ik tot in den dood',\n", + " 'een prinse van oranje',\n", + " 'ben ik, vrij onverveerd',\n", + " 'den koning van hispanje',\n", + " 'heb ik altijd geëerd',\n", + " \"we're gonna take you higher, higher\",\n", + " \"tonight's the night for kings and queens\",\n", + " 'ooohhoo',\n", + " 'come on and relight my fire, fire',\n", + " \"let's burn the roof with evergreens\",\n", + " 'ooh!',\n", + " 'take me baby make me higher, higher',\n", + " 'in a kingdom full of energy',\n", + " 'ooohhoo',\n", + " 'this royal party is my desire, desire',\n", + " 'we all have the same chemistry',\n", + " 'oohh!',\n", + " 'come on, enjoy it! and shout it out!',\n", + " \"we're going higher, from north to south\",\n", + " 'here in this kingdom, the whole night long',\n", + " 'we need each other to sing this song',\n", + " \"we're gonna take you higher, higher\",\n", + " 'tonight is the night for kings and queens',\n", + " 'oohhoo',\n", + " 'come on and relight my fire, fire',\n", + " \"let's brun the roof with evergreens\",\n", + " 'ohhooo',\n", + " 'we rock the nation, with kings and queens',\n", + " \"this celebration, it's a brand new scene\",\n", + " 'we join the party, hip hip hooray',\n", + " 'this new sensation, let the music play',\n", + " 'take me baby, take me higher, higher',\n", + " 'in a kingdom full of energy',\n", + " 'oohhoo',\n", + " 'this royal party is my desire, desire',\n", + " 'we all have the same chemistry, ooohho',\n", + " 'er lag een briefje',\n", + " 'op de keukentafel',\n", + " \"'ik kan niet leven van de wind\",\n", + " \"ciao.'\",\n", + " 'overal in huis',\n", + " 'open deuren',\n", + " 'lege kasten',\n", + " 'op de grond een foto',\n", + " 'van de mensen die wij waren',\n", + " 'dear dear mr. singer',\n", + " 'please sing me a song',\n", + " 'about beauty',\n", + " 'and everything perfect',\n", + " 'please sing me that song',\n", + " 'sign on the window',\n", + " 'says lonely',\n", + " 'sign on the door',\n", + " 'no company allowed',\n", + " 'overal in huis liggen schoenendozen',\n", + " 'op de radio klassiek',\n", + " 'in de wc een bos gedroogde rozen',\n", + " 'uit alle kamers komt paniek',\n", + " 'dear dear mr singer',\n", + " 'please sing me a song',\n", + " 'about beauty and everything',\n", + " 'perfect',\n", + " 'please sing me that song',\n", + " 'sign on the window',\n", + " 'says lonely',\n", + " 'sign on the door',\n", + " 'no company allowed',\n", + " 'ladies and gentleman, this is the big moment we all been waiting for',\n", + " 'i know you gonna dig this',\n", + " 'laat de dag voorbij gaan',\n", + " 'recht door de nacht naar de show',\n", + " 'dus kijk aan wie daar is',\n", + " 'badda boem badda bing',\n", + " 'een kwestie van meer jaren ervaring dan jij ja',\n", + " 'bijna zo goed op mij na',\n", + " 'de bijnaam niet voor niets de ideale schoonzoon',\n", + " 'zo`n gewoon ook',\n", + " 'hoger niveau sowieso',\n", + " 'maar ook zo bereikbaar',\n", + " 'kijk is geef je die leuke feitjes',\n", + " 'de rapper nummer 1 maar dan zonder nikies',\n", + " 'ik denk dat het nu wel tijd is',\n", + " 'dus geef me die mic is hier',\n", + " 'ik zie ze dansen, (dansen eh)',\n", + " 'en ik denk waar gaat het heen',\n", + " 'zoveel veranderd, (anderd eh)',\n", + " 'en waar ben ik al die tijd geweest',\n", + " 'dat weet ik niet maar iedereen zegt',\n", + " 'links rechts start hem op',\n", + " 'al mijn mensen gooi je handen op',\n", + " \"we say left right can't survive\",\n", + " 'you know we all love in the house tonight',\n", + " 'rechts links start hem op',\n", + " 'zo lang door tot de zon op komt',\n", + " 'we say right left mind your head and keep the party moving to the sunset',\n", + " '(oh)',\n", + " 'what happend diggy dex and wudstik',\n", + " 'we chillen skiggy rapz en big2 we doen dit',\n", + " 'voel je me aan we halen old school tourism op',\n", + " \"ik ken de d.a.c. rhymes nog uit m'n kop\",\n", + " 'big2 de grote man van de oppo groot geworden',\n", + " 'vroeger was ie te klein nu te dope voor woorden',\n", + " 'ik wil met mijn skiggy op msn',\n", + " 'en zei mijn rap binnen nederlands ben the man',\n", + " 'goddamn, we zijn veranderd 16 jaar',\n", + " 'alleen mijn haar is nu anders',\n", + " 'kleine inham, zij heb een pikram',\n", + " 'dus wat wat, disco shows we gaan elke stad af',\n", + " 'beetje van de map af',\n", + " 'zoo met die popariele flow werk door voor monsterrap-pen woord voor woord mee yess',\n", + " 'het is grappig om te zien dat er is wat er is',\n", + " 'links rechts start hem op',\n", + " 'al mijn mensen gooi je handen op',\n", + " \"we say left right can't survive\",\n", + " 'you know we all love in the house tonight',\n", + " 'rechts links start hem op',\n", + " 'zo lang door tot de zon op komt',\n", + " 'we say right left mind your head and keep the party moving to the sunset',\n", + " 'come through bass and its so amazing',\n", + " 'we give you the flavor that is your favorite',\n", + " 'and we arrange your ways and change it',\n", + " 'man we redecorate your whole behavoir',\n", + " 'the beat is up, off the heezie',\n", + " 'excuise me for the weezle',\n", + " 'thats easy peasy',\n", + " \"believe me i'm pleased to please this feast\",\n", + " \"and put peace in the scene with these 3 mc's\",\n", + " 'freeze, i hand out remove it, i rock it with my man and his name is wudstik',\n", + " 'of course you all know who is the rest of the crew',\n", + " 'skiggy diggy and biggie 2',\n", + " 'come on',\n", + " 'ik zie ze dansen, (dansen eh)',\n", + " 'en ik denk waar gaat het heen',\n", + " 'zoveel veranderd, (anderd eh)',\n", + " 'en waar ben ik al die tijd geweest',\n", + " 'dat weet ik niet maar iedereen zegt',\n", + " 'links rechts start hem op',\n", + " 'al mijn mensen gooi je handen op',\n", + " \"we say left right can't survive\",\n", + " 'you know we all love in the house tonight',\n", + " 'rechts links start hem op',\n", + " 'zo lang door tot de zon op komt',\n", + " 'we say right left mind your head and keep the party moving to the sunset',\n", + " '(oh)',\n", + " 'i know you gonna dig this',\n", + " 'check it out',\n", + " 'check check',\n", + " 'check check it out',\n", + " 'check check it out',\n", + " 'check check it out',\n", + " 'check it check it check it check it',\n", + " 'check it out',\n", + " 'hard pants, fashion pants, magic pants, fancy pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants',\n", + " 'housebroek, driekwart, corduroy, denim',\n", + " 'ik heb korte, lange, dunne, dikke, nieuwe, ouwe broeken',\n", + " 'nep behaarde, echte namaak slangenleren fashion pants',\n", + " 'housebroek, driekwart, corduroy, denim',\n", + " 'ik heb korte, lange, dunne, dikke, nieuwe, ouwe broeken',\n", + " 'nep behaarde, echte namaak slangenleren fashion pants',\n", + " 'dockers, khaki’s, acne, wrangler, lee, sugar canes',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", + " 'ruitjes, streepjes, stonewash, bleek, dure pijpen',\n", + " 'kledingsfaffie, elite pak niet, joggy’s tot de knieën',\n", + " 'zakken links, zakken rechts, rits die pijp eraf',\n", + " 'zakken links, zakken rechts, rits die pijp eraf',\n", + " 'stippen, smily’s, vlekken ketchup op mijn fashion pants',\n", + " 'verfstrepen, slijtplekken op mijn hard pants',\n", + " 'toverstafjes, sterren, stof in mijn magic pants',\n", + " 'bravoure attitude in mijn fancy pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", + " 'stippen, smily’s, vlekken ketchup op mijn fashion pants',\n", + " 'verfstrepen, slijtplekken op mijn hard pants',\n", + " 'toverstafjes, sterren, stof in mijn magic pants',\n", + " 'bravoure attitude in mijn fancy pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", + " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", + " 'yeah, yeah, yeah, yeaaah',\n", + " 'kom naar de auto, yeah, van die faberge en neem je dames mee',\n", + " 'munda thoda offbeat hai',\n", + " 'par kudiyan de naal bahut sweet hai',\n", + " 'munda thoda offbeat hai',\n", + " 'par kudiyan de naal bahut sweet hai',\n", + " 'dhongi sa yeh bada dheeth hai',\n", + " 'viral ho gaya yeh tweet',\n", + " 'par fool wool karne mein cool',\n", + " 'tu badi tezz kataari hai',\n", + " 'shagan teri ki, lagan teri ki',\n", + " 'humne kardi tayaari hai',\n", + " 'nachde ne saare ral milke',\n", + " 'aaj hil dulke le saare ke saare nazare',\n", + " 'nachde ne saare ral milke',\n", + " 'aaj hil dulke le saare ke saare nazare',\n", + " 'khasma nu khaane!',\n", + " 'hadipa ... hadipa ... hadipa ... hadipa',\n", + " 'alu bade karaare',\n", + " 'karam na laalu bade karaare ... aa ha',\n", + " 'chadh chadhke chaubaare',\n", + " 'karam naal sweetu aaja maare ... aa ha',\n", + " 'alu bade karaare',\n", + " 'karam na laalu bade karaare ... aa ha',\n", + " 'chadh chadhke chaubaare',\n", + " 'karam naal sweetu aaja maare ... aa ha',\n", + " 'chak de!',\n", + " 'munde plenty mere lai ho gaye senti',\n", + " 'o tere lai ho gaye senti, tere lai ho gaye senti',\n", + " 'tere liye main set hoon, is baat ki guarantee',\n", + " 'par fool-wool karne mein cool, tu badi tezz kataari hai',\n", + " 'sehra baandh ke, kood faand, tujhe le jaana is baari hai',\n", + " 'nachde ne saare ral milke',\n", + " 'aaj hil dulke le saare ke saare nazare',\n", + " 'nachde ne saare ral milke',\n", + " 'aaj hil dulke le saare ke saare nazare',\n", + " 'khasma nu khaane!',\n", + " 'zor-zorse shor-wor kar, dj gaane bajaane aa',\n", + " 'ruthde-ruthde jeeja phuphad',\n", + " 'zor-zorse shor-wor kar, dj gaane bajaane aa',\n", + " 'ruthde-ruthde jeeja phuphad',\n", + " 'humne saare manane haan',\n", + " 'par fool wool karne mein cool',\n", + " 'tu badi tezz kataari hai',\n", + " 'shagan teri ki, lagan teri ki',\n", + " 'humne kardi tayaari hai',\n", + " 'nachde ne saare, nachde ne saare',\n", + " 'nachde ne saare ral milke',\n", + " 'aaj hil dulke le saare ke saare nazare',\n", + " 'nachde ne saare ral milke',\n", + " 'aaj hil dulke le saare ke saare nazare',\n", + " 'nachde ne saare, nachde ne saare',\n", + " 'khasma nu khaane!',\n", + " 'priapus',\n", + " 'omnia',\n", + " 'irumare, pedicare',\n", + " 'priapus, mentula, cunnus',\n", + " 'obscenis peream priape',\n", + " 'si non uti me pudet in probisque probris',\n", + " 'ed cum tu posito deus pudore',\n", + " 'ostendas mihi coleos patentes',\n", + " 'cum cunno mihi mentula est vocanda',\n", + " 'headfucking, assfucking',\n", + " 'priapus, prick, cunt',\n", + " 'for dirty words, using dirty language',\n", + " 'damn it priapus, i am ashamed',\n", + " 'but when i see you, god, standing shamelessly',\n", + " 'proudly presenting your big balls',\n", + " \"then words like 'cunt' and 'prick' pop into my head\",\n", + " 'hoofdneuken, kontneuken',\n", + " 'priapus, lul, kut',\n", + " 'voor vieze woorden, vuile taal uitslaan',\n", + " 'verdomd priapus, daarvoor schaam ik mij',\n", + " 'maar zie ik jou, god, daar schaamteloos staan',\n", + " 'pronkend met trots ontblote kloten',\n", + " \"dan komen woorden als 'kut' en 'lul' bij mij naar boven\",\n", + " 'na re, na re.. na re, na re..',\n", + " 'nana na re na re',\n", + " 'na re, na re',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'barso re megha megha',\n", + " 'barso re megha megha',\n", + " 'barso re megha barso',\n", + " 'barso re megha megha',\n", + " 'barso re megha megha',\n", + " 'barso re megha barso',\n", + " 'meetha hai kosa hai, barish ka bosa hai',\n", + " 'bosa hai, kosa hai, barish ka bosa hai',\n", + " 'meetha hai kosa hai, barish ka bosa hai',\n", + " 'bosa hai, kosa hai, barish ka bosa hai',\n", + " 'jal jal jal jal jal jal thal jal thal',\n", + " 'chal chal chal chal chal chal chal bheta chal',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'barso re..',\n", + " 'barso re megha',\n", + " 'barso re megha megha',\n", + " 'barso re megha barso..',\n", + " 'gile gile gile haan..',\n", + " 'haan haan haan haan..',\n", + " 'haan haan haan haan..',\n", + " 'geeli geeli maati',\n", + " 'geeli maati ke chal gharonde banyange re',\n", + " 'hari bhari ambi, ambi ki daali',\n", + " 'milke jhule jhulaayenge re haan..',\n", + " 'dhan, baiju, ghaj ne hal jote sabne',\n", + " 'bailon ki ghanti baji',\n", + " 'aur taale lage bharne',\n", + " 're tair ke chali, main to paar chali',\n", + " 're tair ke chali, main to paar chali',\n", + " 'paar waale par le ke naar chali re megha',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'kali kali raatein',\n", + " 'kali raaton mein',\n", + " 'yeh badarwa baras jaayega',\n", + " 'gali gali mujhko megha doondhega',\n", + " 'aur garaj ke palat jaayega',\n", + " 'ghar aagan, aganaa aur pani ka jharna',\n", + " 'bhool na jana mujhe sab poochhenge warna',\n", + " 're beh ke chali, main to beh ke chali',\n", + " 're keh ke chali, main to keh ke chali re megha',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'nana re, nana re, nana re, na na re',\n", + " 'nana re.. nana re.. nana re..',\n", + " 'na re na re na re na re na re',\n", + " \"sjeet 's op, 't weurt allein mer later\",\n", + " \"sjeet 's op, drek koume veer te laat\",\n", + " 'nei nei nei',\n", + " \"loer dao steit 'ne vespa zoonder sloot\",\n", + " 'kump dat eve good oet',\n", + " \"loer dao steit 'ne vespa zoonder sloot\",\n", + " 'pak deen tèllefoon en',\n", + " 'bel lando, bel lando en nico en jos, en jos',\n", + " 'veer koume get later',\n", + " 'bel lando, bel lando en nico en jos, en jos',\n", + " 'veer koume get later',\n", + " \"biste kraank, of höbste 'ne kater\",\n", + " 'bleijfste toes get zitte op de baank',\n", + " 'nei nei nei',\n", + " \"loer dao steit 'ne vespa zoonder sloot\",\n", + " 'kump dat eve good oet',\n", + " \"loer dao steit 'ne vespa zoonder sloot\",\n", + " 'pak deen tèllefoon en',\n", + " 'bel lando, bel lando en nico en jos, en jos',\n", + " 'veer koume get later',\n", + " 'bel lando, bel lando en nico en jos, en jos',\n", + " 'veer koume get later',\n", + " \"suddenly i'm flying, flying high in the sky\",\n", + " 'i can feel that i can catch the moon',\n", + " \"the wind whispers you're gonna be here soon\",\n", + " 'eshghe man, to hamooni ke age baa man bemooni',\n", + " ...]},\n", + " 'data': ['we hebben een h, een a, een n, een s, een t, een e, hebben we nog een e, een u, een w, een e en een n',\n", + " 'hebben we hans teeuwen, yeah',\n", + " 'ik ben hans teeuwen, ik ben hans teeuwen',\n", + " 'ik ben hans teeuwen, de koning van de lach',\n", + " 'ik ben hans teeuwen, ik ben hans teeuwen',\n", + " 'ja, ja, hans teeuwen, de koning van de lach',\n", + " 'hansje teeuwen, hansje teeuwen',\n", + " 'hansje teeuwen, de koning van de lach',\n", + " 'hansje teeuwen ayay yay yay, yay yay',\n", + " 'hansje teeuwen ayay yay yay',\n", + " 'wij zijn samen onderweg met hans teeuwen',\n", + " 'wij zijn samen onderweg met hans teeuwen',\n", + " 'hij is de koning van de lach, e viva hans teeuwen',\n", + " 'kleine kokette hans teeuwen, kijk nog is een-...',\n", + " 'hans teeuwen was trompetter in het leger van de prins, hij was -...',\n", + " 'hans teeuwen koning van de lach',\n", + " 'hans teeuwen is over the ocean, ha-...',\n", + " 'woooo hans teeuwen, bamalam',\n", + " 'woooo hans teeuwen, bamalam',\n", + " \"ik ben hans teeuwen, it's all in me\",\n", + " 'once, twice, three times hans teeuwen',\n", + " 'i just called to say hans teeuwen',\n", + " \"if there's something's strange in the neighbourhood\",\n", + " \"who you're gonna call?\",\n", + " 'hans teeuwen',\n", + " 'hans teeuwen, hans teeuwen, i love you hans teeuwen',\n", + " \"you're only a day away\",\n", + " 'hans teeuwen, hans teeuwen, i love you hans teeuwen',\n", + " \"you're only a day away\",\n", + " 'oooh hans teeuwen je bent de koning van de lach',\n", + " 'hans teeuwen, oh hans teeuwen',\n", + " 'ik ben hans teeuwen, my friend',\n", + " 'ik ben hans teeuwen, ik ben hans teeuwen',\n", + " 'ik ben hans teeuwen, de koning',\n", + " 'hans teeuwen',\n", + " 'van de lach',\n", + " \"you don't have to be rich to be my girl\",\n", + " \"you don't have to be cool to rule my world\",\n", + " \"ain't no particular sign\",\n", + " \"i'm more compatible with\",\n", + " 'i just want your extra time and your',\n", + " 'hans teeuwen',\n", + " 'ik kan nergens heen',\n", + " 'maar in het zuiden wacht een vrouw nog steeds op mij alleen',\n", + " 'ze heeft flessen vol tequila en flessen vol gin',\n", + " \"en dan neem ik m'n gitaar mee en m'n gouden ring\",\n", + " 'er zijn vliegtuigstoelen, miljoenen bijbedoelingen',\n", + " 'en bovendien zijn er limousines',\n", + " 'en er zijn leugens over sterren die we toch nooit zien',\n", + " 'misschien neem ik spanje als besluit',\n", + " \"laat m'n schepen achter\",\n", + " 'ik ga er stiekem tussenuit',\n", + " 'een vluchtweg naar een nieuw begin',\n", + " 'well, hop on my choo-choo',\n", + " \"i'll be your engine driver in a bunny suit\",\n", + " 'if you dress me up in pink and white',\n", + " 'we may be just a little fuzzy, talk about it later tonight',\n", + " \"she's my angel, she's a little better than the one that used to be with me\",\n", + " \"'cause she liked to scream at me\",\n", + " \"man, it's a miracle that's she's not living up in a tree\",\n", + " 'i may take a holiday in spain',\n", + " 'leave my wings behind me',\n", + " 'drive this little girl insane',\n", + " 'and fly away to someone new',\n", + " \"everybody's gone\",\n", + " \"they left the television screaming that the radio's on\",\n", + " \"m'n schoenen zijn gejat\",\n", + " 'maar ik hoef niet meer naar buiten, want er is nog wel wat',\n", + " \"well, happy new year's, baby\",\n", + " 'we could probably fix it, if we clean it up all day',\n", + " 'or we could simply pack our bags',\n", + " 'en gaan meteen naar barcelona, want we moeten hier weg',\n", + " 'misschien neem ik spanje als besluit',\n", + " \"(making the best of all that's left to me)\",\n", + " \"laat m'n schepen achter\",\n", + " 'ik ga er stiekem tussenuit',\n", + " '(all the lies she said just seem te break me in two)',\n", + " 'een vluchtweg naar een nieuw begin',\n", + " 'ik neem als spanje als besluit',\n", + " '(most of the time rewinding the lines)',\n", + " \"en laat m'n schepen achter\",\n", + " 'ik ga er stiekem tussenuit',\n", + " \"(i'm taking a day to get out of the way)\",\n", + " 'een vluchtweg naar een nieuw begin',\n", + " '(making my way back home to you again)',\n", + " 'geef me de tijd om te redden wie ik ben',\n", + " '(all of the lines she said)',\n", + " 'dagen vertragen, tot ze stoppen en stilstaan',\n", + " '(i am taking a day to get out of the way)',\n", + " 'geef me de tijd om mezelf terug te vinden',\n", + " '(making my way back home to you again)',\n", + " 'ik maak alles goed met wat er over blijft',\n", + " 'all of the lines she said',\n", + " 'owee oweeoooo',\n", + " 'zwaai een been omhoog, een arm opzij',\n", + " 'maak een pirouhette laat je dromen vrij',\n", + " 'swing je heupen los kom en rek je uit',\n", + " 'spring een gat in de lucht, maak een apengek geluid',\n", + " 'oembagoembawabbababba doe je jungle move',\n", + " 'oembagoembawabbababba feel the groove',\n", + " 'fun fun fun doe de funky monkey',\n", + " 'owee oweeoooo',\n", + " 'fun fun fun doe de funky monkey',\n", + " 'doe de funky monkey',\n", + " 'oe oe oe oe...',\n", + " 'voel je ook die beat, knetterkierewiet',\n", + " 'doe de beestiggekke dans en je weet nie wat je ziet',\n", + " 'zet de wereld op zijn kop doewadoewop',\n", + " 'ja we gaan ervoor zeg maar hop hop hop',\n", + " 'oembagoembawabbababba doe je jungle move',\n", + " 'oembagoembawabbababba feel the groove',\n", + " '(feel the groove)',\n", + " 'fun fun fun doe de funky monkey',\n", + " 'owee oweeoooo',\n", + " 'fun fun fun doe de funky monkey',\n", + " 'doe de funky monkey',\n", + " 'oe oe oe oe...',\n", + " 'fun fun fun doe de funky monkey',\n", + " 'owee oweeoooo',\n", + " 'fun fun fun doe de funky monkey',\n", + " 'doe de funky monkey',\n", + " 'funky monkey (funky monkey) funky monkey (funky monkey)',\n", + " 'owee oweeoooo',\n", + " 'owee oweeoooo',\n", + " 'oembagoembawabbababba doe je jungle move',\n", + " 'oembagoembawabbababba feel the groove',\n", + " 'fun fun fun doe de funky monkey',\n", + " 'owee oweeoooo',\n", + " 'fun fun fun doe de funky monkey',\n", + " 'doe de funky monkey',\n", + " '(doe de funky monkey)',\n", + " 'fun fun fun doe de funky monkey',\n", + " 'owee oweeoooo',\n", + " 'fun fun fun doe de funky monkey',\n", + " 'doe de funky monkey',\n", + " 'oe oe oe oe...',\n", + " 'doe de funky monkey',\n", + " '(the person who wrote this has serious problems)',\n", + " 'satigur kar deenai',\n", + " 'satigur kar deenai',\n", + " 'asthir ghar baar',\n", + " 'asthir ghar baar',\n", + " 'satigur kar deenai',\n", + " 'satigur kar deenai',\n", + " 'asthir ghar baar',\n", + " 'asthir ghar baar',\n", + " 'jo, jo nind karai in grihan kee',\n", + " 'jo, jo nind karai in grihan kee',\n", + " 'tis aagai hee maarai kartaar',\n", + " 'tis aagai hee maarai kartaar',\n", + " 'jo, jo nind karai in grihan kee',\n", + " 'jo, jo nind karai in grihan kee',\n", + " 'tis aagai hee maarai kartaar',\n", + " 'tis aagai hee maarai kartaar',\n", + " 'kartaar',\n", + " 'kartaar',\n", + " 'angel divine',\n", + " 'angel of mine',\n", + " 'this humble prayer',\n", + " 'i offer at your feet',\n", + " 'keep this home',\n", + " 'safe and warm',\n", + " 'all through the night',\n", + " 'for your beloved children',\n", + " 'all through the night',\n", + " 'all through the night',\n", + " 'satigur kar deenai',\n", + " 'satigur kar deenai',\n", + " 'asthir ghar baar',\n", + " 'asthir ghar baar',\n", + " 'satigur kar deenai',\n", + " 'satigur kar deenai',\n", + " 'asthir ghar baar',\n", + " 'asthir ghar baar',\n", + " 'nanak daas taa kee saranaa-ee',\n", + " 'nanak daas taa kee saranaa-ee',\n", + " 'jaa ko shabad akhand apaar',\n", + " 'jaa ko shabad akhand apaar',\n", + " 'nanak daas taa kee saranaa-ee',\n", + " 'nanak daas taa kee saranaa-ee',\n", + " 'jaa ko shabad akhand apaar',\n", + " 'jaa ko shabad akhand apaar',\n", + " 'apaar',\n", + " 'apaar',\n", + " 'angel divine',\n", + " 'angel of mine',\n", + " 'thus humble prayer',\n", + " 'i offer at your feet',\n", + " 'keep this home',\n", + " 'safe and warm',\n", + " 'all through the night',\n", + " 'hold your beloved children',\n", + " 'night',\n", + " 'all through the night',\n", + " 'all through the night',\n", + " 'all through the night',\n", + " 'all through the night',\n", + " 'all through the night',\n", + " 'all through the night',\n", + " 'all through the night',\n", + " 'all through the night',\n", + " 'satigur kar deenai',\n", + " 'satigur kar deenai',\n", + " 'asthir ghar baar',\n", + " 'asthir ghar baar',\n", + " 'satigur',\n", + " 'satigur',\n", + " 'satigur',\n", + " 'yaar de viah ch kabba ban gya si scene',\n", + " 'do din di lagdi ae zindagi rangeen (x2)',\n", + " 'kahda mode naal moda keh gaya',\n", + " 'oh meri jaan kad ke lai gayi',\n", + " 'sorry keh gayi roon wargi',\n", + " 'jatt di sari peeti lai gayi (x2)',\n", + " 'hunn uthde behnde nu rehnde',\n", + " 'ohde khyaal sataunde',\n", + " 'bhang peeti hove jyon eddan',\n", + " 'rehnde chakkar aunde (x2)',\n", + " '(rehnde chakkar aunde)',\n", + " 'jatt de dial ghuma gayi oh',\n", + " 'nakhron jodan de vich beh gayi',\n", + " '(beh gayi)',\n", + " 'sorry keh gayi roon wargi',\n", + " 'jatt di sari piti lai gayi (x2)',\n", + " 'kise pind di lagdi na',\n", + " 'na hi shehar kise di jaape',\n", + " 'lagdi ambron uttri ae',\n", + " 'jatt nu paye jihne siyape (x2)',\n", + " 'dil taan kad ke le gayi oh',\n", + " 'kalli dhadkan palle reh gayi',\n", + " 'sorry keh gayi roon wargi',\n", + " 'jatt di sari peeti lai gayi (x2)',\n", + " 'patni jugtan naal pari',\n", + " 'main vi botal di sonh kha li',\n", + " 'jehdi nakhre kardi si',\n", + " 'jatt ne mud mud takkan laa layi (x2)',\n", + " 'rab ne mel kara ditte',\n", + " 'shivjot nu love you keh gyi',\n", + " 'sorry keh gayi roon wargi',\n", + " 'jatt di sari peeti lai gayi (x2)',\n", + " 'eh, wa ? , poesie !',\n", + " 'moemoemoemoemoemoemoe',\n", + " 'eh, wa ? , poesie !',\n", + " 'moemoemoemoemoemoemoe',\n", + " 'la la la la la la la la la la la',\n", + " 'la la la la la la la la la la la',\n", + " 'de selle, de jo, altijd stoned',\n", + " 'de selle, de jo, constant meurg',\n", + " 'de selle, de jo, altijd coco',\n", + " 'de selle, de selle en de jo',\n", + " 'la la ....',\n", + " 'de selle, de jo, altijd stoned',\n", + " 'de selle, de jo, constant meurg',\n", + " 'de selle, de jo, weed en grass',\n", + " 'de selle, de jo, flippen op jazz',\n", + " 'here we go now ...',\n", + " 'oh, when the selle and the jo they go go cococo',\n", + " 'yeah, when the selle and the jo go go cococo',\n", + " \"they're realy flipping\",\n", + " \"and they don't know where they gogogo\",\n", + " 'hey jij!',\n", + " 'het is werner de walvis',\n", + " 'de walvis met watervrees',\n", + " 'hey you!',\n", + " \"it's werner the whale\",\n", + " 'the whale with a fear of water',\n", + " 'hey jij!',\n", + " 'het is werner de walvis',\n", + " 'de walvis met watervrees',\n", + " 'aflevering 1',\n", + " 'wulfar foraan',\n", + " 'i den silvaern manens luiht',\n", + " 'stjernar faran',\n", + " 'want wulfar iduur wouden briht',\n", + " 'wulfarweijd',\n", + " 'bluout fuër lejven',\n", + " 'bluout fuër alleaen lidan daan',\n", + " 'loufa fuër dijn heil',\n", + " 'louf zo ras en wijd jej kant',\n", + " 'wulfar foraan',\n", + " 'i den helder stjernar luiht',\n", + " 'ruolfar jehoschua',\n", + " 'zowan wulf dijn sjeler briht',\n", + " 'wulfarweijd',\n", + " 'bluout fuër lejven',\n", + " 'bluout fuër alleaen lidan daan',\n", + " 'loufa fuër dijn heil',\n", + " 'louf zo ras en wijd jej kant',\n", + " 'frontwards my wolves',\n", + " 'amidst a silvern moon’s light',\n", + " 'stars are falling',\n", + " 'when the wolfs breaks through the holt',\n", + " 'wolfhunting',\n", + " 'blood for life',\n", + " 'blood for all harm that was done',\n", + " 'run for your salvation',\n", + " 'run as fast and far as you can',\n", + " 'frontwards my wolves',\n", + " 'amidst the bright star’s light',\n", + " 'call for jehoschua',\n", + " 'when the wolf shatters your soul',\n", + " 'wolfhunting',\n", + " 'blood for life',\n", + " 'blood for all harm that was done',\n", + " 'run for your salvation',\n", + " 'run as fast and far as you can',\n", + " 'ooh la la, give me rumba mambo chacha',\n", + " 'aah ya ye, at the boya boya bay',\n", + " 'ooh la la, we are dancing in the moonlight',\n", + " 'aah ya ya, let us party all night',\n", + " 'baila baila, chickachickachicka aah',\n", + " 'baila baila amore, chickachickachicka aah',\n", + " 'baila baila, baila baila',\n", + " 'biala baila amore',\n", + " 'hij is superduper (superduper)',\n", + " 'kijk hem eens gaan',\n", + " 'ooh wat een kanjer (wauw)',\n", + " 'hoe heb jij dat gedaan (gewoon)',\n", + " 'wil je wat drinken (wanna drink)',\n", + " 'vroeg ik heel cool',\n", + " 'hij heette pedro (hey)',\n", + " 'zijn ogen zo zwoel',\n", + " 'ooh la la, give me rumba mambo chacha',\n", + " 'aah ya ye, at the boya boya bay',\n", + " 'ooh la la, we are dancing in the moonlight',\n", + " 'aah ya ya, let us party all night',\n", + " '(fiesta)',\n", + " 'baila baila, chickachickachicka aah',\n", + " 'baila baila amore',\n", + " 'kom op vertel ons',\n", + " 'was het net als tv (nou)',\n", + " 'heeft hij je gekust (smak)',\n", + " 'die avond aan zee',\n", + " 'in mijn bikini (ienimini)',\n", + " 'zolang gewacht',\n", + " 'precies wat ik wil (zo chill)',\n", + " 'die zoen in de nacht (aah)',\n", + " 'ooh la la, give me rumba mambo chacha',\n", + " 'aah ya ye, at the boya boya bay',\n", + " 'ooh la la, we are dancing in the moonlight',\n", + " 'aah ya ya, let us party all night',\n", + " 'baila baila, chickachickachicka aah',\n", + " 'baila baila amore',\n", + " 'ooh la la, oh wat zit het soms tegen',\n", + " 'ooh la la, denk ik gewoon weer aan jou',\n", + " 'ooh la la, ik zal het nooit meer vergeten',\n", + " 'ooh la la, heel die zomer met jou aan de zee',\n", + " 'ooh la la, give me rumba mambo chacha',\n", + " 'aah ya ye, at the boya boya bay',\n", + " 'ooh la la, we are dancing in the moonlight',\n", + " 'aah ya ya, let us party all night',\n", + " 'baila baila, chickachickachicka aah',\n", + " 'baila baila amore, chickachickachicka aah',\n", + " 'baila baila, baila baila',\n", + " 'baila baila amore',\n", + " \"'t is het donker wat je roept\",\n", + " 'naar waar men alle hoop laat varen',\n", + " 'nammtar wijst de weg naar de koningin en de hare',\n", + " \"ver weg van 't leven... gevoel voor vrede vergeten\",\n", + " 'vecht voor ereshkigal en de kroon van de absu',\n", + " 'dat al het licht vergaat naar nacht',\n", + " \"waar sterren zwijgen en zwart 't oog bindt\",\n", + " \"dood is daar eender met 't grimmige heden\",\n", + " 'vecht voor ereshkigal en de kroon van de absu',\n", + " 'dat al het licht vergaat naar nacht zonder einde',\n", + " 'dingir xul! peta babkama luruba anaku!',\n", + " 'ina qabal girru! ati me peta babka!',\n", + " 'ana harrani sa alaktasa la tarat!',\n", + " 'zi anna kanpa! zi kia kanpa!',\n", + " 'zi dingir kingu kanpa!',\n", + " 'zi dingir nammtar kanpa!',\n", + " 'usella mituti ikkalu baltuti!',\n", + " \"eli baltuti ima'idu mituti!\",\n", + " 'translation for the sumerian language part:',\n", + " 'dingir xul! open the gate for me so that i can enter here!',\n", + " 'in the middle of fire! gatekeeper, open your gate for me!',\n", + " 'road whose course does not turn back!',\n", + " 'spirit of the sky, remember! spirit of the earth, remember!',\n", + " 'spirit god of great emissary, remember!',\n", + " 'spirit god nammtar, remember!',\n", + " 'raise up the dead here consuming the living',\n", + " 'dead will be more numerous than the living',\n", + " \"songtekst van kisses - kisses & dancin'\",\n", + " 'kisses',\n", + " 'oh, let’s go',\n", + " 'heb je je week niet of je dag niet',\n", + " 'en gaat het even niet zoals je wilde',\n", + " 'wij weten hoe je weer de zon ziet',\n", + " 'en dit gevoel zo de wereld rondvliegt',\n", + " 'je weet niet, niet precies wat je doen moet',\n", + " 'je weet niet, niet precies, maar het voelt goed',\n", + " 'je weet niet, niet precies wat je doen moet',\n", + " 'hey world, get up and dance',\n", + " 'whoa-oh, whoa-oh',\n", + " 'kisses and dancin’',\n", + " 'kisses and dancin’ *(clap clap)*',\n", + " 'whoa-oh whoa-oh',\n", + " 'kisses and dancin’',\n", + " 'kisses and dancin’ *(clap clap)*',\n", + " 'c’mon, c’mon, dance, hey',\n", + " 'c’mon, c’mon, move your body',\n", + " 'c’mon, c’mon, dance, hey',\n", + " 'kisses',\n", + " 'iedereen in alle landen (let’s go)',\n", + " 'dans op die beat',\n", + " 'kom op en klap die handen *clap clap*',\n", + " 'want dit gevoel maakt alles anders (what)',\n", + " 'in drie seconden is je mood veranderd',\n", + " 'je weet niet, niet precies wat je doen moet',\n", + " 'je weet niet, niet precies, maar het voelt goed',\n", + " 'je weet niet, niet precies wat je doen moet',\n", + " 'hey world, get up and dance',\n", + " 'whoa-oh, whoa-oh',\n", + " 'kisses and dancin’',\n", + " 'kisses and dancin’ *(clap clap)*',\n", + " 'whoa-oh whoa-oh',\n", + " 'kisses and dancin’',\n", + " 'kisses and dancin’ *(clap clap)*',\n", + " 'c’mon, c’mon, dance, hey',\n", + " 'c’mon, c’mon, move your body',\n", + " 'c’mon, c’mon, dance, hey',\n", + " 'kisses',\n", + " 'kom op, we dansen rustig aan',\n", + " 'en denk er niet te veel bij na',\n", + " 'hey world, get up and dance',\n", + " 'get up and dance',\n", + " '(tu-tu-turn it up)',\n", + " 'whoa-oh, whoa-oh',\n", + " 'kisses and dancin’',\n", + " 'kisses and dancin’ *(clap clap)*',\n", + " 'whoa-oh whoa-oh',\n", + " 'kisses and dancin’',\n", + " 'kisses and dancin’ *(clap clap)*',\n", + " 'c’mon, c’mon, dance, hey',\n", + " 'c’mon, c’mon, move your body',\n", + " 'c’mon, c’mon, dance, hey',\n", + " 'kisses',\n", + " 'c’mon, c’mon, dance, hey',\n", + " 'c’mon, c’mon, move your body',\n", + " 'c’mon, c’mon, dance, hey',\n", + " 'kisses',\n", + " 'shake your body, do the move',\n", + " 'voel het ritme van de groove',\n", + " 'swing maar met ons mee',\n", + " \"da's de funky monkey, da's ok\",\n", + " 'let it flow to the beat',\n", + " 'beweeg je body feel the beat',\n", + " \"don't ever stop\",\n", + " \"zet de wereld op z'n kop\",\n", + " 'tsjakke tsjakke boem boem',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'dzjing doet de drum',\n", + " 'de beat zit in je feet',\n", + " 'de tsjakke boem boem beat',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'dzjing doet de drum',\n", + " 'de beat zit in je feet',\n", + " 'tsjakke boem',\n", + " 'tsjakke boem boem beat',\n", + " 'laat je gaan',\n", + " 'blijf niet staan',\n", + " 'kom naar voor',\n", + " 'en doe je ding',\n", + " 'we fuiven tot de zon opkomt',\n", + " \"komaan let's go\",\n", + " 'swing that thing',\n", + " 'let it flow - do the beat',\n", + " 'beweeg je body - feel the heat',\n", + " \"don't ever stop\",\n", + " \"zet de wereld op z'n kop\",\n", + " 'tsjakke tsjakke boem boem',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'dzjing doet de drum',\n", + " 'de beat zit in je feet',\n", + " 'de tsjakke boem boem beat',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'dzjing doet de drum',\n", + " 'de beat zit in je feet',\n", + " 'tsjakke boem',\n", + " 'tsjakke boem boem beat',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'dzjing doet de drum',\n", + " 'de beat zit in je feet',\n", + " 'de tsjakke boem boem beat',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'dzjing doet de drum',\n", + " 'de beat zit in je feet',\n", + " 'tsjakke boem',\n", + " 'tsjakke boem boem beat',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'dzjing doet de drum',\n", + " 'de beat zit in je feet',\n", + " 'de tsjakke boem boem beat',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'dzjing doet de drum',\n", + " 'de beat zit in je feet',\n", + " 'tsjakke boem',\n", + " 'tsjakke boem boem beat',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'tsjakke tsjakke boem boem',\n", + " 'd',\n", + " 'guarda fuori e gia mattina',\n", + " 'questo e un giorno che ricorderai',\n", + " 'alzati in fretta e vai',\n", + " \"c'e chi crede in te non ti arrendere\",\n", + " '(luister naar de zon, hij roept je naam',\n", + " 'dit is jouw moment, dus ga nu maar staan',\n", + " \"en wees niet bang voor 't licht dat je voelt op je gezicht\",\n", + " \"'t is echt bedoeld voor jou)\",\n", + " 'like stars across the sky',\n", + " 'e per avvincere tu dovrai vincere',\n", + " '(we were born to shine',\n", + " 'all of us here because we believe)',\n", + " 'once in every life there comes a time',\n", + " '(we walk out on our own and into the light)',\n", + " \"the moment won't last, but then we remember it again\",\n", + " '(when we close our eyes)',\n", + " '(like stars across the sky)',\n", + " 'e per avvincere tu divrai vincere',\n", + " '(we were born to shine',\n", + " 'all of us here because we believe)',\n", + " '(non arrenderti qualcuno e con te)',\n", + " '(like stars across the sky',\n", + " 'we were born to shine)',\n", + " 'e per avvincere (dovrai vincere)',\n", + " 'e allora vincerai (e allora vincerai)',\n", + " 'chanda suraj laakhon taare hain jab tere hi yeh saare',\n", + " 'kis baat par hothi hai phir thakraarein',\n", + " 'keenchi hai lakkeere is jameen pe par na keencho dekho',\n", + " 'beech mein do dilon ke yeh deewaarein',\n", + " 'duniya mein kahin bhi, dard se koyi bhi',\n", + " 'duniya mein kahin bhi, dard se koyi bhi',\n", + " 'thadpe to humko yahan pe',\n", + " 'ehsaas uske zakhmon ka ho ke',\n", + " 'apna bhi dil bhar bhar aaye roye aankhein',\n", + " 'what are u waiting for another day another talk',\n", + " 'somewhere we have to find a new way to peace',\n", + " 'what are you waiting for another sign another call',\n", + " 'somewhere we have to find a new way to peace!',\n", + " 'doori kyon dilon mein rahe faasle kyon badhte rahe',\n", + " 'pyaari hai zindagi hai pyaara jahaan',\n", + " 'rishte badi mushkilon se',\n", + " 'bante hai yahaan pe lekin',\n", + " 'tootne ke liye bas ek hi lamha',\n", + " 'ishq dava hai har ek dard ki',\n", + " 'zanjeer ishq hai har ek rishte ki',\n", + " 'ishq saari hadhon ko tod daale',\n", + " 'ishq to duniya ko pal mein mita bhi de',\n", + " 'ishq hai jo saare jahaan ko aman bhi de',\n", + " 'ronaq ishq se hai saare aalam ki',\n", + " 'chanda suraj laakhon taare hain jab tere hi yeh saare',\n", + " 'kis baat par hothi hai phir thakraarein',\n", + " 'keenchi hai lakkeere is jameen pe par na keencho dekho',\n", + " 'beech mein do dilon ke yeh deewaarein',\n", + " 'duniya mein kahin bhi, dard se koyi bhi',\n", + " 'duniya mein kahin bhi, dard se koyi bhi',\n", + " 'thadpe to humko yahan pe',\n", + " 'ehsaas uske zakhmon ka ho ke',\n", + " 'apna bhi dil bhar bhar aaye roye aankhein',\n", + " 'what are u waiting for',\n", + " 'ja ik zie je lopen en je',\n", + " 'shaked, shaked met je heupen',\n", + " 'oh yeah',\n", + " 'nee ik kan het niet geloven',\n", + " '(she is such a beauty queen)',\n", + " 'girl i wanna get to know you ja je',\n", + " 'bent het meisje van mijn dromen en ik',\n", + " 'verlies me in je ogen',\n", + " '(this is like a movie scene)',\n", + " \"don't keep me waiting\",\n", + " 'it drives me crazy',\n", + " 'oh was je maar van mij',\n", + " \"you'r a sidewalk supermodel ohohoh\",\n", + " 'ja de straat is je catwalk baby ohohoh',\n", + " \"and i can't get you out of my mind\",\n", + " 'when you smile, you make it shine bright',\n", + " 'de hele stad lijkt een movie poster ohohoh',\n", + " \"cause you'r a sidewalk supermodel ohohoh ohoh\",\n", + " 'nananananananana',\n", + " 'nananananananana',\n", + " 'je houd van dolce & gabana en ook',\n", + " 'gucci en prada ja je',\n", + " 'bent zo onweerstaanbaar',\n", + " \"(yeah you got me burnin' up)\",\n", + " 'girl i wanna know you better dus loop',\n", + " 'nu niet zomaar verder heb nog',\n", + " 'zoveel dingen te zeggen',\n", + " '(got the word all linin up)',\n", + " \"don't keep me waiting\",\n", + " 'it drives me crazy',\n", + " 'oh was je maar van mij',\n", + " \"you'r a sidewalk supermodel ohohoh\",\n", + " 'ja de straat is je catwalk baby ohohoh',\n", + " \"and i can't get you out of my mind\",\n", + " 'when you smile, you make it shine bright',\n", + " 'de hele stad lijkt een movie poster ohohoh',\n", + " \"cause you'r a sidewalk supermodel ohohoh ohoh\",\n", + " 'ja jij bent toch ieders type',\n", + " \"i see you walkin' down my street\",\n", + " 'en ik hoop dat jij me ziet',\n", + " 'cause you are the girl for me',\n", + " '(you are the girl for me)',\n", + " \"you'r a sidewalk supermodel\",\n", + " 'ja de straat is je catwalk baby',\n", + " 'ohohoh',\n", + " \"you'r a sidewalk supermodel ohohoh\",\n", + " 'ja de straat is je catwalk baby ohohoh',\n", + " \"and i can't get you out of my mind\",\n", + " 'when you smile, you make it shine bright',\n", + " 'de hele stad lijkt een movie poster ohohoh',\n", + " \"cause you'r a sidewalk supermodel ohohoh ohoh\",\n", + " 'nananananananana',\n", + " 'nananananananana',\n", + " 'rollerskaten langs de boulevard',\n", + " 'hotdogs eten non stop',\n", + " 'alle hotspots zoeken op de kaart',\n", + " 'i love to shop till i drop',\n", + " 'in miami, hollywood',\n", + " 'waar alles kan en niets moet',\n", + " 'en iedereen die durft te dromen',\n", + " 'wil maar een ding doen',\n", + " 'refrein',\n", + " 'living in the u u u u s a a a',\n", + " \"super xxl, it's the way\",\n", + " 'de sterren van de t t v die je om je heen',\n", + " 'glamour life, life, wish i could stay',\n", + " 'cause i love to be',\n", + " 'the american dream',\n", + " 'in the u.s.a a a',\n", + " 'in the u.s.a a a',\n", + " 'alles groter dan in nederland',\n", + " 'gebouwen super sky high',\n", + " 'altijd zon en zee de hele dag',\n", + " 'ze zeggen; hello, good morning, bye bye',\n", + " 'in miami, hollywood',\n", + " 'waar alles kan en niets moet',\n", + " 'en iedereen die durft te dromen',\n", + " 'wil maar een ding doen',\n", + " 'refrein',\n", + " 'ey ey ey, volg die droom',\n", + " 'ga met me mee naar de u.s.a',\n", + " 'all the way, take that plane',\n", + " \"don't explain, just fly away\",\n", + " \"hoofd in de wolken, it's okay (uh huh)\",\n", + " 'wanna make it in l.a. (uh huh)',\n", + " 'ga het maken, just maintain',\n", + " 'ga erheen en doe je ding',\n", + " 'try to live the american dream',\n", + " \"someday, someway, i'm gonna make it happen\",\n", + " \"someday, someway, we're gonna make it happen\",\n", + " 'refrein',\n", + " 'cause i love to be',\n", + " 'the american dream',\n", + " 'in the u.s.a a a',\n", + " 'in the u.s.a a a',\n", + " 'in the u.s.a a a',\n", + " 'in the u.s.a a a',\n", + " 'in ieder land, in elke stad, de scene die groeit actief',\n", + " \"als je ziek bent van de disco, dan is hier 't alternatief\",\n", + " 'hard, wij gaan hard, dit komt rechtstreeks uit het hart',\n", + " 'het vuurt dat brandt, de motor draait, ja de race die is gestart',\n", + " '(archi)',\n", + " \"hier geht's um ideale, um leidenschaft und wut\",\n", + " 'was wir fühlen ist grenzenlos aber ami-punk ist auch ganz gut',\n", + " '(olly)',\n", + " 'se sei stanco di barriere, puoi contare su di noi',\n", + " 'se vuoi vivere una scena, per convincerti che puoi',\n", + " 'euronoise is all we wanna play',\n", + " 'spread it out from spain to greece up to the uk!',\n", + " 'euronoise is all we wanna play',\n", + " 'save the bullshit for tomorrow, unite tonight, we say',\n", + " \"ik brul, ik roep, ik schreeuw, de longen uit m'n lijf\",\n", + " 'ik spring, ik dans, ik feest, ga als een kogel richting schijf',\n", + " '(pierre)',\n", + " \"c'est le même message, message d'humanité\",\n", + " 'sans chichis sans filet, sans domages ni intérêsts',\n", + " '(ingo)',\n", + " 'wir brauchen keine grenzen, komm, reiss die mauern ein',\n", + " 'wir brauchen deinen mittelfinger, es geht nicht allein!',\n", + " '(nwo)',\n", + " 'en el este, en el oeste, al norte y al sur',\n", + " 'toda europa está cantando, sólo faltas tú',\n", + " 'euronoise is all we wanna play',\n", + " 'spread it out from spain to greece up to the uk!',\n", + " 'euronoise is all we wanna play',\n", + " 'save the bullshit for tomorrow, unite tonight, we say',\n", + " 'euronoise is all we wanna play',\n", + " 'spread it out from spain to greece up to the uk!',\n", + " 'euronoise is all we wanna play',\n", + " 'save the bullshit for tomorrow, unite tonight, we say',\n", + " 'euronoise is all we wanna play',\n", + " 'we speak a different language but our spirit is the same',\n", + " 'euronoise is all we wanna play',\n", + " 'spread it out from spain to greece up to the uk!']},\n", + " 'rap': {'meta': {'train_data': ['bghatou howa (bghatou howa), bghaha hya (bghaha hya)',\n", + " 'bghatou 3la flousso 3lach bghato howa (bghatou howa)',\n", + " '3endha 7fari zine 3lach bghah hya (bghaha hya)',\n", + " 'bghatou howa, bghaha hya',\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'sakna weediane f me9ha chicha f kolla weekend',\n", + " \"b diplome dyal l7ila9a, dart l'golf seven\",\n", + " 'fati-fleur f dar ch9a slat wel imane',\n", + " 'mgabla ayi moussalsal 3tiha li kan, eh!',\n", + " 'li kan, wja3 trab w hdidan',\n", + " 'weediane samra f reception 3la rajel ta yban',\n", + " '3endha toula, l7emha byed w sderha mgoufel',\n", + " 'l3inine kbar w salef twil, li chafha ybourech',\n", + " 'bghaha serbay fel 7lal, galtlo la la mjou3ef',\n", + " 'bghaha 3essas galtlo, man9derch n3ich f koukhek',\n", + " '3arfa b 7e9 ryal sa3oudi kter men zoure9',\n", + " 'ga3 li b9a 7adi f weediane kaysbe7 mjouneb',\n", + " 'fati-fleur mgabla ghir l7oufa wel mdareb',\n", + " 'bghat rajel metdiyen, ma taydkhelch l darou chareb',\n", + " 'shahrukh khan 7afdalou fati-fleur ga3 les paroles',\n", + " 'weediane 7afda ghir habibi barcelouni',\n", + " 'ga3 li ja men sahara oujada wella el haouz',\n", + " 'noud wgaf mgadd l jed bouk, l jed bouk',\n", + " '3zel l7efra li bghit 3ad deggo, 3ad deggo',\n", + " \"dir l9wam w de9 f'dar b rendez-vous\",\n", + " \"de9 f'dar b rendez-vous\",\n", + " 'jib l7aja w di m3ak 9aleb d sekkar',\n", + " \"de9 f'dar b rendez-vous\",\n", + " \"jib l'famila w di khatem sawi ness dar\",\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'weediane mgabla ghir lwlad w di3an',\n", + " '3endha l i7sas 9wi te3ref skhi men ji3an',\n", + " '3chirha smiyto ali kniyto moul porsche cayenne',\n", + " 'hya garna f moul maserati rayan',\n", + " 'khouha, l fati-fleur ch3erha ghir b drour wel 7izam',\n", + " 'taw9it sla f dem, ma zagla 7ta chi mi3ad',\n", + " 'ah dogourdya 3arfa denya mti7an',\n", + " 'katsenna w9ita l3cha godam telfaza tne9i zeljlan (zeljlan)',\n", + " 'weediane khouha sghir kollo fchouch (kollo fchouch)',\n", + " \"wakha mchomya gadda techri l'khouha play\",\n", + " \"fati-fleur tal3a menha ri7t l'oum\",\n", + " 'weediane tal3a menha ri7t calvin klein',\n", + " 'weediane bghatou 3ayech w tayfertek fel mlayn',\n", + " 'lilt sda9 temchi l turkia ga3 ma bagha tsayn',\n", + " 'ga3 ma gadda tsenna 7ta ydir sidi rebbi tawil',\n", + " 'bghat sac louis v machi d swi9a fake',\n", + " 'ga3 li ja men doukkala rif wella souss',\n", + " 'noud wgaf mgadd l jed bouk, l jed bouk',\n", + " '3zel l7efra li bghit 3ad deggo, 3ad deggo',\n", + " \"dir l9wam w de9 f'dar b rendez-vous\",\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'bghit, fati-fleur fel 7lal fuck weediane',\n", + " 'fuck weediane, eh!',\n", + " 'fuck weediane, eh!',\n", + " 'love weed yeah, lo-love lo-love weed yeah',\n", + " 'love weed yeah!',\n", + " 'songtekst van idaly – \"birthday\" ft. emms',\n", + " 'yeah, now go girl, het is je birthday',\n", + " 'go girl, het is je birthday',\n", + " 'go girl, het is je birthday',\n", + " 'en now go girl, girl, girl',\n", + " 'baby girl, kom en go low (uh, ey)',\n", + " 'in de back of the club, waarom sta je daar solo?',\n", + " \"ey shawty, back it up mo', live life like yolo (ey, ey, ja)\",\n", + " 'ik heb funds op de bank en ik spend het like kojo',\n", + " 'je weet ik ben loco, yeah, yeah',\n", + " 'je weet ik ben icy (icy, uh, yeah)',\n", + " 'en ze valt in love, in love, als ze mij ziet',\n", + " 'back it up voor me, oh shawty, laat mij zien',\n", + " 'ey, ja, shawty wat jij kan, ja, ja',\n", + " 'ey, ja, ik wil het al lang, ja, ja, ho',\n", + " \"ey, ja, pa-party's startin' it, like yeah\",\n", + " \"champagne poppin' it, like yeah\",\n", + " \"shit ik ben ballin', money keep fallin', tot in de mornin' hier, oh yeah\",\n", + " \"party's startin' it, like yeah\",\n", + " \"champagne poppin' it, like yeah\",\n", + " \"shit ik ben ballin', money keep fallin', tot in de mornin' hier, oh yeah\",\n", + " 'yeah, now go girl, het is je birthday',\n", + " 'go girl, het is je birthday',\n", + " 'go girl, het is je birthday',\n", + " 'en now go girl, girl, girl, girl',\n", + " 'go girl, het is je birthday',\n", + " 'go girl, het is je birthday',\n", + " 'go girl, het is je birthday',\n", + " 'en now go girl, girl, girl, girl',\n", + " \"we're more than friends\",\n", + " 'jij weet dat ik er voor je ben',\n", + " 'champagne wat ik voor je schenk, yay',\n", + " 'wij doen die, wij doen die shoulder dance, ey, shoulder dance',\n", + " \"al m'n mannen zijn netjes\",\n", + " \"wij zijn de shelby's, check die baretjes\",\n", + " 'ey, bitch, we gaan hard (oh, yeah)',\n", + " 'ey, bitch, we gaan hard (okay)',\n", + " \"fles in m'n mond, je zag hoe ik stond, ik ben apart (rosé)\",\n", + " \"o-omin bbg's in m'n face, sistah\",\n", + " 'oh, ik kan die wijven lezen, ik weet is té',\n", + " 'baby, baby, payday, we gaan bewegen, is te',\n", + " \"o-omin bbg's in m'n face, sistah\",\n", + " 'oh, ik kan die wijven lezen, ik weet is té',\n", + " 'baby, baby, payday, we gaan bewegen, is te',\n", + " 'yeah, now go girl, het is je birthday',\n", + " 'go girl, het is je birthday',\n", + " 'go girl, het is je birthday',\n", + " 'en now go girl, girl, girl, girl',\n", + " 'go girl, het is je birthday',\n", + " 'go girl, het is je birthday',\n", + " 'go girl, het is je birthday',\n", + " 'en now go girl, girl, girl, girl',\n", + " 'ja julle naaiers',\n", + " 'jikijela die nommer',\n", + " 'die wat nie duidelik is nie sal duidelik kom',\n", + " 'g-boy, maak vol',\n", + " \"please don't take me for a poes\",\n", + " \"please don't take me for a poes\",\n", + " 'i was in my business being cool',\n", + " 'now, look what the fuck you made me do',\n", + " \"please don't take me for a poes\",\n", + " \"please don't take me for a poes\",\n", + " 'i was in my business being cool',\n", + " 'now, look what the fuck you made me do',\n", + " \"i don't really care about a naai\",\n", + " \"don't understand why they say that, i keep me kwaai\",\n", + " 'i was smoking pype with the i',\n", + " \"he gave me some fuckin' good advice\",\n", + " '\"don\\'t let nobody take you for a naai\"',\n", + " 'for two hours, i was staring at my knife',\n", + " 'why you had to make me take your life?',\n", + " 'fuck with me, verniet, you pay the price',\n", + " \"please don't take me for a poes\",\n", + " \"please don't take me for a poes\",\n", + " 'i was in my business being cool',\n", + " 'now, look what the fuck you made me do',\n", + " 'i',\n", + " \"i don't know why naaiers try till they die\",\n", + " \"i'm not a naai\",\n", + " \"you won't see a poes if you look in my eyes\",\n", + " \"don't vang n pain\",\n", + " \"don't vang n pain for me\",\n", + " \"put yourself at fuckin' ease\",\n", + " \"don't vang n pain for me\",\n", + " 'bloed het saloet, my broe',\n", + " \"maybe don't fuck with me, you gonna lose, my broe\",\n", + " 'die nommer bou, my broe',\n", + " 'ek breek nie af nie yo ek is die ou, my broe',\n", + " 'wies jy? jou fokken umpata',\n", + " 'vat jy my net vir n laany? jy kannie staan nie',\n", + " 'jy dink dat jy kan maar jy kannie, miniete nagaani',\n", + " 'jys n fokken moegoe jy val in jou boots, my broe',\n", + " 'gaan op jou knee en sê jys n poes, my broe',\n", + " 'jou fokken naaier',\n", + " \"please don't take me for a poes\",\n", + " \"please don't take me for a poes\",\n", + " 'i was in my business being cool',\n", + " 'now, look what the fuck you made me do',\n", + " \"please don't take me for a poes\",\n", + " \"please don't take me for a poes\",\n", + " \"please don't take me for a poes\",\n", + " \"please don't take me for a poes\",\n", + " 'i could kick you round over with the',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'al staan er maar een paar man, of honderden',\n", + " 'ik zet je zaal op zijn kop',\n", + " 'vind mezelf hard, dus ja daar hamer ik op',\n", + " 'en niet zachtjes aan, maar zo zachtjes aan als ik dig',\n", + " 'man, ik kom altijd aan als een speer',\n", + " 'oh my god, yo, here we go again',\n", + " 'geen mediocre act brengt hitte voor de fans',\n", + " 'heb liefde voor de craft,',\n", + " 'yes, can i get an amen',\n", + " 'en ook de stage presence zie je niet over het hoofd',\n", + " 'loop rond alsof ik verdomme op het podium woon',\n", + " 'engel & just, kom checken of geloof het gewoon',\n", + " 'qua shows sowieso een veel hoger niveau',\n", + " 'just is chilling, engel is chilling',\n", + " 'wat kan ik zeggen, hiphop is in de building',\n", + " 'killing it, kippenvel, shit, ben te ill in dit',\n", + " 'veel van die rappers weten niet wat een is',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'ben een tikkeltje arrogant, zo van “ik heb dit”',\n", + " 'trap de deur in, no biggie, no pun intended',\n", + " 'oh god damn it',\n", + " 'engel & just brengen het hard met wat presto magic',\n", + " \"you can't star in die fucking game (nee)\",\n", + " 'maar wel on-point op ouwe kicks',\n", + " 'als uit pennies van anfernee hardaway',\n", + " '‘t is effe niet anders, alles gaat plat',\n", + " 'want ik haal lappen tekst door de mangel heen',\n", + " 'en ik flex alles met een (kick, snare)',\n", + " 'no problemo, geef me die vijf mics als een d.a.c.-show',\n", + " '(that ol’ boombap) noem me de ambassadeur',\n", + " 'ja, die old-school heads brengen die ambacht terug',\n", + " 'dus aan de kant voor de vakman (just!)',\n", + " 'ik heb ruimte nodig, fuck uit de hoogte, man',\n", + " 'dit is de juiste bodem als een bruine boterham',\n", + " 'was ik niet duidelijk?',\n", + " 'twee keer stampen met je poten',\n", + " 'en met je vuist op een mokusslag',\n", + " '(boom boom bap), tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'kick, snare, tricks and hi-hats',\n", + " 'skilled in the trade of that ol’ boombap',\n", + " 'songtekst van sfb \"don\\'t you know\"',\n", + " 'ey, ey, yeah yeah',\n", + " \"don't you know?\",\n", + " \"don't you know?\",\n", + " \"don't you know?\",\n", + " \"we badder than dey, oh don't you know\",\n", + " \"dit is voor m'n magga's en ook voor de rovers\",\n", + " \"we badder than dey, oh don't you know\",\n", + " 'rij een cla, want ik ben een chauffeur',\n", + " \"we better than they, oh don't you know\",\n", + " 'ja ik sta klaar want ik ben een soldier',\n", + " \"we badder than dey, oh don't you know\",\n", + " 'oh yeah, yeah yeah yeah yeah',\n", + " \"oh don't you know\",\n", + " 'we better than they, oh did you not',\n", + " 'her mommy is in love met a criminal',\n", + " 'rij een cla, want ik ben een chauffeur',\n", + " '(yeah, yeah, yeah)',\n", + " 'zeg me ben je klaar, want dan pull ik over',\n", + " '(yeah, yeah, yeah)',\n", + " \"en ik weet d'r is gevaar, maar ik ben een soldier\",\n", + " 'ik hoor je bent nu klaar, is die shit al over?',\n", + " 'overleefd in santo boma tussen alle cobras',\n", + " '(yeah, yeah, yeah)',\n", + " \"oh, don't you know\",\n", + " 'original ganja farmer, oh',\n", + " 'ik hoor je chick is magga, silly city oh',\n", + " 'zometeen dan ben ik daar, dan pull ik over',\n", + " 'en dan gaan ze weer van \"hug me, hug me\"',\n", + " '\"kiss me, squeeze me\"',\n", + " \"''first they love me, now they wanna diss me''\",\n", + " 'ik kan niet focken met een wasteman',\n", + " \"en free m'n focking nigga jason\",\n", + " \"we badder than dey, oh don't you know\",\n", + " \"dit is voor m'n magga's en ook voor de rovers\",\n", + " \"we badder than dey, oh don't you know\",\n", + " 'rij een cla, want ik ben een chauffeur',\n", + " \"we badder than dey, oh don't you know\",\n", + " 'ja ik sta klaar want ik ben een soldier',\n", + " \"we badder than dey, oh don't you know\",\n", + " 'oh yeah, yeah yeah yeah yeah',\n", + " \"oh don't you know\",\n", + " \"oh don't you know\",\n", + " \"kijk naar m'n chains\",\n", + " 'fully gold',\n", + " 'geef mij die bae',\n", + " 'ben niet meer broke',\n", + " \"of vietnamees, nig' wanna know\",\n", + " 'big man ja, ik ben een big man',\n", + " 'niet onderschatten als ik effe sliep want',\n", + " \"ik ga niet mengen, dus ik hou m'n distance\",\n", + " 'ze willen leunen, maar ik ben geen kickstart',\n", + " 'en als ik pull up in je endz',\n", + " \"dan ben ik met m'n huiswerk als ik pull up in die benz\",\n", + " '(we better than them)',\n", + " 'maar dat is allang bekend',\n", + " 'club shutdown and again and again (shutdown)',\n", + " 'boss wan picca, show love aan een fan',\n", + " \"tatts op m'n arm, show love aan m'n gang\",\n", + " \"one man alone can't bleed for the fam (what)\",\n", + " \"one man alone can't bleed for the fam\",\n", + " \"we badder than dey, oh don't you know\",\n", + " \"dit is voor m'n magga's en ook voor de rovers\",\n", + " \"we badder than dey, oh don't you know\",\n", + " 'rij een cla, want ik ben een chauffeur',\n", + " \"we badder than dey, oh don't you know\",\n", + " 'ja ik sta klaar want ik ben een soldier',\n", + " \"we badder than dey, oh don't you know\",\n", + " 'oh yeah, yeah yeah yeah yeah',\n", + " 'songtekst van ronnie flex – \"batman\" ft. alec petrus & james francis',\n", + " 'batman with his sidekick, sidekick',\n", + " 'shawty can you back it up and let me get inside it',\n", + " '(yeah, yeah)',\n", + " 'batman with his sidekick, sidekick',\n", + " 'shawty can you back it up and let me get inside it',\n", + " '(yeah yeah)',\n", + " 'ooh, turn up',\n", + " \"these money moves wan' make me turn up yah\",\n", + " 'ooh, turn up',\n", + " \"are you ought to see who's a burn up yeah\",\n", + " \"sa passé, used to call me way now i don't know your way\",\n", + " \"olivier, i was so la now i'm so m.i.a\",\n", + " 'oralé, you were so boricua, though, ne parle anglais',\n", + " 'kept my faith, had to tell my',\n", + " 'cause i was going codeine, codeine, codeine since the dilla',\n", + " \"five honeys for sportin' freeroaming two dikes for winner\",\n", + " 'jodein, notra, alphawolf, franco, the villa killa',\n", + " \"can't let it go, can't let it go\",\n", + " 'i might die yeah',\n", + " 'she fall asleep with your d on her mind yeah',\n", + " 'what? she wanna fuck, she say that she wanna fuck',\n", + " \"aha, i know what's up, i'm not gonna let you run 'em up\",\n", + " \"i'm up, bitch i'm corrupt, put my feelings in a cup\",\n", + " 'batman with his sidekick, sidekick',\n", + " 'shawty can you back it up and let me get inside it',\n", + " '(yeah, yeah)',\n", + " 'batman with his sidekick, sidekick',\n", + " 'shawty can you back it up and let me get inside it',\n", + " '(yeah yeah)',\n", + " 'ooh, turn up',\n", + " \"these money moves wan' make me turn up yah\",\n", + " 'ooh, turn up',\n", + " \"are you ought to see who's a burn up yeah\",\n", + " 'ah, ey, panamera, paramaribo je weet ik crash',\n", + " \"paranoia door de drugs ik gooi m'n leven weg\",\n", + " 'ik land als een paratrooper op die ene kech',\n", + " 'ze komt uit paraguay, ik weet ze is op hete seks',\n", + " 'ja, leef het echt maar spend geen doezoe op geen ene fles (ice)',\n", + " 'niggers zagen me op de flyer dus ze bleven weg (yah)',\n", + " 'ik fuck met een paar vloggers maar geen een die rapt (wow)',\n", + " 'goofy nigga praat in lingo maar hij weet niet echt (uh)',\n", + " 'hop uit de limousine ik ben dom rijk (dom rijk)',\n", + " 'niggers trekken aan hun bitch wanneer ze omkijkt (what)',\n", + " 'ik heb twintig grannie haze, dat is ontbijt',\n", + " 'lil flex bitch, wat, ik ben dom rijk (what)',\n", + " 'batman with his sidekick, sidekick',\n", + " 'shawty can you back it up and let me get inside it',\n", + " '(yeah, yeah)',\n", + " 'batman with his sidekick, sidekick',\n", + " 'shawty can you back it up and let me get inside it',\n", + " '(yeah yeah)',\n", + " 'ooh, turn up',\n", + " \"these money moves wan' make me turn up yah\",\n", + " 'ooh, turn up',\n", + " \"are you ought to see who's a burn up yeah\",\n", + " 'songtekst van josylvio – \"paars licht\"',\n", + " 'ey, oeh',\n", + " 'skrr, skrr',\n", + " \"ik wil m'n moeder in een benz zien\",\n", + " \"en m'n vader in een bempie\",\n", + " \"rap 'n borie zonder kempi\",\n", + " 'ma niffo we innen die paper',\n", + " 'wil een osso in cally',\n", + " 'chain dikker en heavy',\n", + " 'dikke zuennet en henny',\n", + " 'ma niffo we gettin that paper',\n", + " 'pa-pa-paarse licht in de dashboard',\n", + " 'tem je bitch in this mad horse',\n", + " 'nieuwe stempel in passport',\n", + " 'vlieg naar de zon als we willen',\n", + " 'paarse licht in de dashboard',\n", + " 'tem je bitch in this mad horse',\n", + " 'nieuwe stempel in passport',\n", + " 'vlieg naar de zon als we willen',\n", + " 'ben met moeman en locks',\n", + " 'storing en chops',\n", + " 'saggy boogie en westside',\n", + " \"m'n hele gang moet die cash draaien\",\n", + " 'met beide handen naar cash grijpen',\n", + " 'doe niet kalm je moet fast rijden',\n", + " 'doe niet gek met die cash bij me',\n", + " '(d-doe niet gek met die cash bij me)',\n", + " \"m'n soldier is busy en trekt wahed niffie en steekt in je fissie\",\n", + " 'bestempeld als skinny maar cool bij de chimmies',\n", + " 'en platina platen dus fuck jullie vaders, ey, ey',\n", + " 'kom om te halen, kom niet om te geven',\n", + " \"ik kom voor m'n show, ik kom niet om te feesten\",\n", + " 'ik ben ondernemer, fuck een player hater',\n", + " \"m'n hele team is winning, jullie overleden\",\n", + " 'in de spotlight',\n", + " 'ben in de spotlight',\n", + " 'ik zie je thot lied',\n", + " \"al m'n base op de gram\",\n", + " 'in de spotlight',\n", + " 'in de spotlight',\n", + " 'ik zie je thot lied',\n", + " \"al m'n base op de gram\",\n", + " \"ik wil m'n moeder in een benz zien\",\n", + " \"en m'n vader in een bempie\",\n", + " \"rap 'n borie zonder kempi\",\n", + " 'ma niffo we innen die paper',\n", + " 'wil een osso in cally',\n", + " 'chain dikker en heavy',\n", + " 'dikke zuennet en henny',\n", + " 'ma niffo we gettin that paper',\n", + " 'pa-pa-paarse licht in de dashboard',\n", + " 'tem je bitch in this mad horse',\n", + " 'nieuwe stempel in passport',\n", + " 'vlieg naar de zon als we willen',\n", + " 'paarse licht in de dashboard',\n", + " 'tem je bitch in this mad horse',\n", + " 'nieuwe stempel in passport',\n", + " 'vlieg naar de zon als we willen',\n", + " 'tem die kechs in this horse mayne',\n", + " 'hennessy, fuck je bombay',\n", + " 'sylvio is een probleem',\n", + " \"nefertiti aan m'n gold chain\",\n", + " \"beetje ice op d'r visie\",\n", + " 'voel me net tony montana',\n", + " \"kop me m'n money dan kom ik je halen\",\n", + " 'say hello to my little friend',\n", + " 'beng, beng',\n", + " 'ik kan niet meer lachen ze moeten betalen',\n", + " 'ik hou niet van woorden maar hou van die daden',\n", + " 'ik ben met de wolven jij bent met de schapen',\n", + " 'loopt mee met de kudde ik ben aan het jagen',\n", + " 'trap een beetje in de benz',\n", + " 'neef we kennen geen rem',\n", + " 'op die gas fuck de tank',\n", + " 'paarse lichten in de dash',\n", + " '220 op de deck',\n", + " 'my niffo we rennen voor stacks',\n", + " 'bruno, wittie of packs',\n", + " 'we killen die shows en tracks',\n", + " 'sylvio, president hella cash',\n", + " 'niffo we rennen voor stacks',\n", + " 'bruno, wittie of packs',\n", + " 'we killen die shows en tracks',\n", + " 'sylvio, president hella cash, ey, ey, cash, cash',\n", + " \"ik wil m'n moeder in een benz zien\",\n", + " \"en m'n vader in een bempie\",\n", + " \"rap 'n borie zonder kempi\",\n", + " 'ma niffo we innen die paper',\n", + " 'wil een osso in cally',\n", + " 'chain dikker en heavy',\n", + " 'dikke zuennet en henny',\n", + " 'ma niffo we gettin that paper',\n", + " 'pa-pa-paarse licht in de dashboard',\n", + " 'tem je bitch in this mad horse',\n", + " 'nieuwe stempel in passport',\n", + " 'vlieg naar de zon als we willen',\n", + " 'paarse licht in de dashboard',\n", + " 'tem je bitch in this mad horse',\n", + " 'nieuwe stempel in passport',\n", + " 'vlieg naar de zon als we willen',\n", + " 'oeh, oeh, oeh, oeh',\n", + " 'oeh, pa-pa-paarse licht in de dashboard',\n", + " 'tem je bitch in this mad horse',\n", + " 'nieuwe stempel in passport',\n", + " 'vlieg naar de zon als we willen',\n", + " 'paarse licht in de dashboard',\n", + " 'tem je bitch in this mad horse',\n", + " 'nieuwe stempel in passport',\n", + " 'vlieg naar de zon als we willen',\n", + " 'jp ballin, jp ballin, jp ballin, jp ballin',\n", + " 'swag out, swag out, swag out, swag out (swag)',\n", + " 'bragadam, braga bragadam',\n", + " 'big city boy, big city boy (bof)',\n", + " 'big city boy, big city boy (bof)',\n", + " 'swag out, swag out, swag out, swag out (swag)',\n", + " 'bragadam, braga bragadam',\n", + " 'ik draai als een blender, so remember',\n", + " 'pakkies alladay, niet alleen in december',\n", + " 'yeah, bad money spender',\n", + " 'want ze zeggen ben een big money spender',\n", + " 'pretty boy swag, chicks die ik heb',\n", + " 'zie me staan en voor je het weet ben ik weg',\n", + " 'andere lijken barbie: ken',\n", + " 'hij praat stoer maar die boy is fresh',\n", + " 'b boy swag, (???) lucky days',\n", + " \"ballin' sick man, en z'n swag so crazy\",\n", + " 'bragadam, flow is easy, lazy',\n", + " 'bcb, takayna keiz baby',\n", + " 'jp baby, (???) ladies',\n", + " 'chickies lipgloss in mn nek lately',\n", + " 'rude boy, fucking killa',\n", + " 'swagg on, jij gaat voor een doorsnee nigger',\n", + " 'jp ballin, jp ballin, jp ballin, jp ballin',\n", + " 'swag out, swag out, swag out, swag out (swag)',\n", + " 'bragadam, braga bragadam',\n", + " 'big city boy, big city boy (bof)',\n", + " 'big city boy, big city boy (bof)',\n", + " 'swag out, swag out, swag out, swag out (swag)',\n", + " 'bragadam, braga bragadam',\n", + " 'jones baby dit gaat eng worden',\n", + " 'ball hard: m jordan',\n", + " 'rayban, snapback en een baco',\n", + " 'scbof ink up: vato',\n", + " 'terug als karma, fly, piloot',\n", + " 'mannen doen vies voor faam: deepthroat',\n", + " 'ratrace maar ik druk backspace',\n", + " 'you lose, sadface, ik bill jij grace, nigga',\n", + " 'airline bof sup babe',\n", + " \"gek op m'n broodjes: subway\",\n", + " 'top nigga, pols ice grilla',\n", + " 'simpelweg omdat de spot i filla',\n", + " 'jullie bubblegum, uh, i stay hard',\n", + " 'fashion, bel some: caesar',\n", + " 'want jullie mannen zijn clean, basic',\n", + " 'mi go all out, wasted',\n", + " \"roll als een motherfucker, keiz kwaai, ballin'\",\n", + " 'meids krijgen pokerface, daarna ga ik all in',\n", + " \"schatjes worden verliefd, alicia keys fallin'\",\n", + " 'ik ben der voor jou,splackaveli just call him, call em',\n", + " 'baby, no discussion over ladyies',\n", + " 'swag is ziek, swag out, swag crazy',\n", + " 'swag to the roof, jij niet, jij maybe',\n", + " \"baas in die shit sinds de takayna 80's\",\n", + " '87, mama die bracht iets prachtigs',\n", + " 'me lines zijn te krachtig, en jij rapt slechts achtig',\n", + " 'met mij zijn dat dacht je, mijn timeline is lastig',\n", + " 'met 50.000 followers machtig',\n", + " 'nou wie de fuck ben jij, en wie de fuck ben ik',\n", + " 'zeg me ze kennen mij, of anders suck a dick',\n", + " 'ik zet die shit opzij, get money liever quick',\n", + " \"takayna keiz kwaai ballin', bitch\",\n", + " 'jp ballin, jp ballin, jp ballin, jp ballin',\n", + " 'swag out, swag out, swag out, swag out (swag)',\n", + " 'bragadam, braga bragadam',\n", + " 'big city boy, big city boy (bof)',\n", + " 'big city boy, big city boy (bof)',\n", + " 'swag out, swag out, swag out, swag out (swag)',\n", + " 'bragadam, braga bragadam',\n", + " 'chaar bottle vodka',\n", + " 'kaam mera roz ka',\n", + " 'na mujhko koi roke',\n", + " 'na kisi ne roka (x2)',\n", + " 'main rahoon saari raat in the bar',\n", + " 'daaru piyun lagaatar',\n", + " 'ek aadhi sab pee lete hain',\n", + " 'main to piyun botal chaar',\n", + " 'chaar bottle vodka',\n", + " 'kaam mera roz ka',\n", + " 'na mujhko koi roke',\n", + " 'na kisi ne roka..',\n", + " 'so i wanna hangover tonight (x4)',\n", + " 'saari raat daaru, subah nimbu-paani',\n", + " 'party karne waalon ki hai yehi kahaani',\n", + " 'pet bhar ke jitni bhi pee lo',\n", + " 'kisi ki bandi ko bhi hello',\n", + " 'hello baby how do you do?',\n", + " 'ek minute ko khad jaa tu',\n", + " 'pata ni mujhe yeh samajh ni aata',\n", + " 'mere saath kabhi koi club nahi aata',\n", + " 'apne palle se koi ni pilaata',\n", + " 'main pee loon zyada phir koi munh ni lagata',\n", + " 'kyun ki, kyun ki, kyun ki, kyun ki..',\n", + " 'sooji-sooji aankhein meri yeh phir bhi dekho',\n", + " 'ladkiyon ko kaise yeh nihaarein',\n", + " 'agle din woh jhoome hangover me phir bhi dekho',\n", + " 'lever mera vodka pukaare (x2)',\n", + " 'kyun ki?',\n", + " 'ninja',\n", + " 'yo-yo-yo-yo-landi visser',\n", + " 'jack parow',\n", + " 'dj hi-tek',\n", + " 'die fokken antwoord',\n", + " 'wat pomp julle?',\n", + " 'wat pomp julle?',\n", + " 'wat pomp, wat pomp, wat pomp julle?',\n", + " 'wat pomp julle?',\n", + " 'wat pomp julle?',\n", + " 'wat pomp, wat pomp, wat pomp julle?',\n", + " 'wat pomp julle?',\n", + " 'wat pomp julle?',\n", + " 'wat pomp, wat pomp, wat pomp julle?',\n", + " 'wat pomp julle?',\n", + " 'wat pomp julle?',\n", + " 'wat pomp, wat pomp, wat pomp?',\n", + " 'fresh futuristig',\n", + " 'me i’m a misfit, drink my 5 roses tea with a biscuit',\n", + " 'i’m shweet and i’m twisted, like a koeksuster',\n", + " 'i’m rustig ekse, o, we go ballistig, you can’t fuck with this shit',\n", + " 'it’s dark and it’s different, pay attention or be like \"fuck it, i missed it\"',\n", + " '( joe, maar sy’s giftig, oo jissie is dit?)',\n", + " 'staan terug boetie, cause i spoeg when i spit shit',\n", + " 'i missed it',\n", + " 'my number’s unlisted',\n", + " 'yo fuck the system, i got my own system',\n", + " \"'cause i won’t listen, my tricky-dicky lietjie blows systems\",\n", + " 'you can hear me coming from the distance',\n", + " 'mense versigtig, i get up to mischief',\n", + " \"jou fokken mif dik lip op 'n tik klip\",\n", + " 'my style is poison, it’s a freak pak of gom',\n", + " 'giftige cherrie up on page 3 van die son',\n", + " 'wat pomp julle?',\n", + " 'raak dronk op pille',\n", + " 'vrot binne as die kwaai pop singers kop sinne',\n", + " 'ek verskyn uit die stoom van die stort',\n", + " \"soos n droom of ‘n visie, 'n oom op n missie\",\n", + " \"mirror, mirror on the wall tell me who's ill\",\n", + " \"i'm touched with true skill\",\n", + " 'i bust the blue steel',\n", + " 'shit, the mirror’s misty',\n", + " 'sjoe, who can this be',\n", + " \"let's see the seksie refleksie\",\n", + " \"eksie perfeksie donner op 'n entjie\",\n", + " 'stonewashed jeans palm bome op my hempie',\n", + " 'tssss',\n", + " \"fuck yes i'm dressed for success, my breath is kak fresh\",\n", + " 'jack parow!',\n", + " '( there you go, baby)',\n", + " 'look at that lekker romantiese afrikaans superster rapper',\n", + " 'check my fokken uit, lat die beat drop player',\n", + " 'die naam’s jack parow, fok steve hofmeyer',\n", + " 'me and my super fresh look to the rescue',\n", + " 'we come to gently caress you',\n", + " 'like two warm ballas in a nice cold palm',\n", + " 'make you feel strange when the mic’s on',\n", + " 'okay, this is my song',\n", + " 'fok jou ek dink jy’s ‘n poes!',\n", + " 'vat jou vir ‘n poes want jy klink soos ‘n poes!',\n", + " 'jy rap soos ’n poes en jy sing soos ‘n poes',\n", + " 'hou my neus vas want jy stink soos ‘n poes',\n", + " 'alright lemme speak yo, all up in this freak show',\n", + " 'okay, check out my skill, geen fokken clue nie',\n", + " 'like my name was nigel',\n", + " 'moenie my flippen tune nie',\n", + " 'ek gaan vir my ma se',\n", + " 'okay, toemaar los dit',\n", + " 'if it doesn’t fit, force it, that’s my motto',\n", + " \"i'm not weird, you're weird\",\n", + " \"i’m just flippin' new here\",\n", + " 'i rap like a sore thumb, what’s up with you brother?',\n", + " 'i fit right in, like my cock in your mother',\n", + " 'so don’t tell me i’ve got no fire',\n", + " 'i’m running on the spot and i’m so tired',\n", + " 'hair getting blown back by my blow dryer',\n", + " 'jou naaier, jou naaier',\n", + " 'uuh (hosss)',\n", + " '2009 (yo)',\n", + " 'die fokken antwoord (fresh futuristig)',\n", + " 'yo, dj hi-tek (duidelik)',\n", + " 'yo-landi visser (some fucking fancy shit)',\n", + " 'uuh',\n", + " 'jy check my op die fokken strate (yo)',\n", + " 'jy check my in fokken larny restaurant (we’re very fancy)',\n", + " 'yo, jy check my op page 3 van die son',\n", + " 'yo, die fokken ninja (ouch)',\n", + " 'stainless steel stab comin’ at ya',\n", + " 'my borshare mooi afgeskeer (daarsy!)',\n", + " 'donald duck cap from the overseas (oulik!)',\n", + " 'freessssh',\n", + " 'don’t fuck with my style',\n", + " 'ninja... i’m a tiger',\n", + " 'yo, waar die fok is jack?',\n", + " 'jack?',\n", + " 'parow?',\n", + " 'ek dink hy’s in die toilet...',\n", + " \"bitch, it's all good\",\n", + " 'ze zat bij me in de brugklas',\n", + " \"nu pas heb ik d'r gewiept via tinder, gap\",\n", + " \"4 swipes it's all it took\",\n", + " 'ze zegt \"ik heb een vriend\"',\n", + " \"bitch, it's all good\",\n", + " 'ze zat bij me in de brugklas',\n", + " \"nu pas heb ik d'r gewiept via tinder, gap\",\n", + " \"4 swipes it's all it took\",\n", + " 'ze zegt \"ik heb een vriend\"',\n", + " \"bitch, it's all good\",\n", + " '4 swipes is all it took',\n", + " 'met yung mau in de stad op onderzoek',\n", + " '4 swipes is wat ik nodig',\n", + " 'om te connecten met je bitch via de tinder',\n", + " \"it's all good, it's all good\",\n", + " \"it's all good, it's all good\",\n", + " '4 swipes is what it took',\n", + " \"it's all good, it's all good\",\n", + " \"it's all good, all good\",\n", + " 'in de binnenstad of we chillen in the hood',\n", + " '4 swipes is wat ik nodig heb',\n", + " '6 donnies pin ik zo direct',\n", + " 'ze was thirsty, dus ik heb die bitch drooggelegd',\n", + " \"paas d'r door naar yelli en we hebben nie eens overlegd\",\n", + " \"it's all good, it's all good\",\n", + " \"it's all good, it's all good\",\n", + " '4 swipes is what it took',\n", + " \"it's all good, it's all good\",\n", + " \"it's all good, all good\",\n", + " 'in de binnenstad of we chillen in the hood',\n", + " 'ze zat bij me in de brugklas',\n", + " \"nu pas heb ik d'r gewiept via tinder, gap\",\n", + " \"4 swipes it's all it took\",\n", + " 'ze zegt \"ik heb een vriend\"',\n", + " \"bitch, it's all good\",\n", + " 'ze zat bij me in de brugklas',\n", + " \"nu pas heb ik d'r gewiept via tinder, gap\",\n", + " \"4 swipes it's all it took\",\n", + " 'ze zegt \"ik heb een vriend\"',\n", + " \"bitch, it's all good\",\n", + " 'ze zat bij me in de brugklas',\n", + " \"nu pas, nu pas d'r gewiept via tinder, gap\",\n", + " \"4 swipes it's all it took\",\n", + " 'ze zegt \"ik heb, ik heb\"',\n", + " \"bitch, it's all good\",\n", + " 'so you lit now?',\n", + " 'everybody fucking with you right now',\n", + " \"your girlfriend's fucking with you right now\",\n", + " 'you lit dick, i never turn your lights down',\n", + " 'pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend (skurrt)',\n", + " 'p-pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend guuuurl',\n", + " 'pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend guuuurl',\n", + " 'pull up on your girlfriend',\n", + " \"goin' back, met m'n vrouw in de boy back\",\n", + " \"4k alleen om te liggen op d'r lap\",\n", + " \"jouw bitch post d'r nieuwe nagels\",\n", + " \"mijn vrouw post niet eens d'r nieuwe rolex op snap\",\n", + " 'ik heb gezien wat je vrouw doet online',\n", + " 'ik stuur bewijzen maar doe dat voor likes',\n", + " 'niet eens in de scene of een college-degree',\n", + " \"'kweet niet wat ze verdient, maar ze doet het voor shine\",\n", + " \"let's keep it real man\",\n", + " 'ik en niggers, zijn niggers en girlfriend',\n", + " 'je real boys status, no matsa',\n", + " 'je rolex is allergisch voor watah',\n", + " 'ze wou me, ze wou me pull up in je girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend guuuurl',\n", + " 'pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend guuuurl',\n", + " 'pull up on your girlfriend',\n", + " 'gwuan, pull up on your bestie (skurrrt)',\n", + " 'say she always love to twerk in the backseat',\n", + " 'run game girl, you deserve a eskie',\n", + " 'you had good gwuan, pull up on backie',\n", + " \"didn't wanna see win that newnew\",\n", + " \"your old friends hatin' on the new you\",\n", + " \"funny 'cuz you don't even see that\",\n", + " 'bitch you come and get it, baby daddy at your dm',\n", + " 'so you lit now?',\n", + " 'everybody fucking with you right now',\n", + " \"your girlfriend's fucking with you right now\",\n", + " 'you lit dick, i never turn your lights down, hah',\n", + " 'pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend (skurrt)',\n", + " 'p-pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend guuuurl',\n", + " 'pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend',\n", + " 'go ahead and pull up on your girlfriend guuuurl',\n", + " 'pull up on your girlfriend (skrr)',\n", + " 'songtekst van leafs – \"mikado\"',\n", + " \"bro i don't know, ze wil flexen bij men show\",\n", + " \"ga niet in zee wellou boot, catch een plane met al men bro's\",\n", + " 'heel de fam die is nu bij me want we stacken mikado',\n", + " 'heel de fam die is nu bij me want we stacken mikado',\n", + " 'jump rope, jump rope, jump rope, jump rope',\n", + " 'jump rope, jump rope, jump rope, ja ja',\n", + " 'jump rope, jump rope, jump rope, jump rope',\n", + " 'jump rope, jump rope, jump rope, ja ja',\n", + " 'never switch it up, dat is phoney',\n", + " 'wat shoutout yung mystic is me brody',\n", + " 'ben met vinnie, donnie, jurell, never lonely',\n", + " 'sweet life on deck zack and cody',\n", + " 'ben met de fam, en we zijn in zee',\n", + " 'want ik ben eng, fly net halloween',\n", + " 'ik ben de champ voel me cassius clay',\n", + " 'hou het honderd, waar is mijn trofee',\n", + " 'ik heb enough , saus en (?)',\n", + " \"yea i know, nog steeds ben ik daar met m'n bro's!\",\n", + " \"bro i don't know, ze wil flexen bij men show\",\n", + " \"ga niet in zee wellou boot, catch een plane met al men bro's\",\n", + " 'heel de fam die is nu bij me want we stacken mikado',\n", + " 'heel de fam die is nu bij me want we stacken mikado',\n", + " 'jump rope, jump rope, jump rope, jump rope',\n", + " 'jump rope, jump rope, jump rope, ja ja',\n", + " 'jump rope, jump rope, jump rope, jump rope',\n", + " 'jump rope, jump rope, jump rope, ja ja',\n", + " \"ben je met je friends, i don't give a damn\",\n", + " \"ik kom met m'n crew, jij komt met je gang\",\n", + " 'you know what to do, ik heb iets gespend',\n", + " \"ice around m'n wrist, lijkt of ik ben geklemd\",\n", + " 'ik wil dat je jumped, dan ben je down mijn baby',\n", + " 'pussy on the run, ik zeg see you later',\n", + " 'ik hoef geen saus bij chaps, ben je crazy',\n", + " 'ik heb meer dan genoeg voor de hele wereld',\n", + " 'ik heb (?) , saus en (?)',\n", + " \"yea i know, nog steeds ben ik daar met m'n bro's!\",\n", + " \"bro i don't know, ze wil flexen bij men show\",\n", + " \"ga niet in zee wellou boot, catch een plane met al men bro's\",\n", + " 'heel de fam die is nu bij me want we stacken mikado',\n", + " 'heel de fam die is nu bij me want we stacken mikado',\n", + " 'jump rope, jump rope, jump rope, jump rope',\n", + " 'jump rope, jump rope, jump rope, ja ja',\n", + " 'jump rope, jump rope, jump rope, jump rope',\n", + " 'jump rope, jump rope, jump rope, ja ja',\n", + " 'bizzey',\n", + " 'ramiks bitch (pa, pa, pa)',\n", + " \"frenna, we don't stop\",\n", + " \"we-we-we-we don't stop\",\n", + " \"voor mijn fatima's en brenda's\",\n", + " 'natasha, latoya',\n", + " 'ik heb het, en je wilt het',\n", + " 'ik kan op je spenden',\n", + " 'ik blow it all, pa-pa-pa-pa',\n", + " 'ik blow it all, eh-eh',\n", + " 'ik blow it all, like that',\n", + " 'ik blow it all, aye my girl',\n", + " 'ik blow it all, duf-duf-duf-duf',\n", + " 'ik blow it all, eh-yeah',\n", + " 'ik blow it all',\n", + " 'ik blow it all, ah yeah-eh',\n", + " 'you want it all (pa-pa-pa-pa)',\n", + " 'i got it all (duf-duf-duf)',\n", + " 'ik ben met frenna in balmain',\n", + " 'maar listen up all, eh',\n", + " 'jij bent een cliché',\n", + " 'en ik kom met money',\n", + " 'zie life is not easy',\n", + " 'oh, dus ik pak die money',\n", + " 'you want it all (pa-pa-pa-pa)',\n", + " 'i pay it all (duf-duf-duf-duf)',\n", + " 'je weet ik ball, eh eh',\n", + " 'je weet ik ball, yeah-yeah-yeah',\n", + " \"voor mijn fatima's en brenda's\",\n", + " 'natasha, latoya',\n", + " 'ik heb het, en je wilt het',\n", + " 'ik kan op je spenden',\n", + " 'ik blow it all, pa-pa-pa-pa',\n", + " 'ik blow it all, eh-eh',\n", + " 'ik blow it all, like that',\n", + " 'ik blow it all, aye my girl',\n", + " 'ik blow it all, duf-duf-duf-duf',\n", + " 'ik blow it all, eh-yeah',\n", + " 'ik blow it all',\n", + " 'ik blow it all, ah yeah-yeah-yeah',\n", + " 'boricua/moniqua, morena, colombiana, dominicana',\n", + " 'boricua/moniqua, morena, colombiana, dominicana',\n", + " 'moet het bedanken dus, brengen het naar je mama',\n", + " 'en dan naar de bahamas',\n", + " 'we kunnen liggen en chillen op de bahamas',\n", + " 'pussy nigga schaam je',\n", + " 'en we zoeken naar die kamers',\n", + " 'je wil kleven aan dames',\n", + " 'ik ben met bizzey, we gaan vamos',\n", + " \"ik show m'n roley en dan gaat ze mee\",\n", + " \"voor mijn fatima's en brenda's\",\n", + " 'natasha, latoya',\n", + " 'ik heb het, en je wil het',\n", + " 'ik kan op je spenden',\n", + " 'ik blow it all, pa-pa-pa-pa',\n", + " 'ik blow it all, eh-eh',\n", + " 'ik blow it all, like that',\n", + " 'ik blow it all, aye my girl',\n", + " 'ik blow it all, duf-duf-duf-duf',\n", + " 'ik blow it all, eh-yeah',\n", + " 'ik blow it all',\n", + " 'ik blow it all, ah yeah-yeah-yeah',\n", + " 'oh',\n", + " 'oh',\n", + " 'we stay in touch',\n", + " 'i got like sixty-five kilos of white powder in mij',\n", + " 'tinkiewinkie purple porsche (say what?)',\n", + " 'white albino, man',\n", + " 'ay, ay, ay, ay',\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'pull up in amsterdam',\n", + " 'i got the rubber bands',\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'pull up in amsterdam',\n", + " 'i got the rubberbands',\n", + " 'snelle planga net riff',\n", + " 'riced out in die bitch',\n", + " 'op je huid net een cyste',\n", + " 'lippenstift rood, een suzuki swift',\n", + " 'ik ben een kapitalist',\n", + " 'ik ben op ei als een kip',\n", + " 'al mijn mannen zijn te dik',\n", + " 'wij passen niet in die lift',\n", + " 'look at the flick of the wrist',\n", + " 'in het donker geef ik licht',\n", + " 'wordt dat en christian kist',\n", + " 'ik ben geen rapper maar een populist',\n", + " 'ik ga niet dood in een kist',\n", + " 'ik verdween in die mist',\n", + " \"ik kijk effe schindler's list\",\n", + " 'de nederlandse taylor swift',\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'pull up in amsterdam',\n", + " 'i got the rubber bands',\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'pull up in amsterdam',\n", + " 'i got the rubberbands',\n", + " 'ik doe dit voor mijn kids',\n", + " 'en ik heb niet eens kids',\n", + " 'speel effe de sims',\n", + " 'voel met henk-jan smits',\n", + " 'kom designer tot de rits',\n", + " 'mijn money wit net maurits',\n", + " 'gappie jij bent op niks',\n", + " 'patta van de game',\n", + " 'analyst, eh',\n", + " 'wil goud in mijn gebit',\n", + " 'wil een klap in mijn gezicht',\n", + " 'jij bent op saus als dips',\n", + " 'gek als kiss',\n", + " 'serieus net een jurist',\n", + " 'ik bombard angerfist',\n", + " 'ik chap wat fish en chips',\n", + " 'versace, goudvis',\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'pull up in amsterdam',\n", + " 'i got the rubber bands',\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'born in stockholm',\n", + " \"but i'm from the netherlands\",\n", + " 'pull up in amsterdam',\n", + " 'i got the rubberbands',\n", + " 'aye',\n", + " 'yeah, yeah, yeah',\n", + " 'aye',\n", + " 'yeah',\n", + " 'hustle hard pa buta sèn den lachi',\n", + " 'tantu money, mi tin tantu blachi',\n", + " 'min ta worry mi ku hende fasil',\n", + " 'buta money den un combinatie',\n", + " 'mi ta buta money den un combinatie',\n", + " 'mi ta buta money den un combinatie',\n", + " 'mi ta buta money den un combinatie',\n", + " 'mi ta buta money den un',\n", + " 'hustle hard pa buta sèn den lachi',\n", + " 'tantu money, mi tin tantu blachi',\n", + " 'min ta worry mi ku hende fasil',\n", + " 'buta money den un combinatie',\n", + " 'mi ta buta money den un combinatie',\n", + " 'mi ta buta money den un combinatie',\n", + " 'mi ta buta money den un combinatie',\n", + " 'mi ta buta money den un combinatie',\n", + " 'hustle hard pa buta sèn den lachi',\n", + " 'un ta nada, kiko ta ma hasi',\n", + " 'bo pordona na hopi, bon ta pami',\n", + " 'bosnan por mira kon mi life ta kaki',\n", + " 'paperchase, ami no bin strobami',\n", + " 'mi no ta worry mi, ku hende fasil',\n", + " 'keda focus, focus riba blachi',\n", + " 'pa money so, mi por tin concentratie',\n", + " ...]},\n", + " 'data': ['songtekst van idaly – \"fallin\\'\" ft. sfb & ronnie flex',\n", + " 'oh, yeah, yeah, yeah, yeah, ey',\n", + " 'oh, yeah, yeah, yeah, yeah, ey',\n", + " 'oh, yeah, yeah, yeah, yeah, ey',\n", + " 'yeah, ey',\n", + " \"ik ben fallin’, shawty fallin' for you\",\n", + " \"fallin' for you, yeah\",\n", + " 'fallin’ for you, yeah',\n", + " \"ey, ik ben fallin', shawty fallin' for you\",\n", + " \"fallin' for you\",\n", + " \"fallin' for you, yeah\",\n", + " \"ik ben fallin', yeah fallin' for you\",\n", + " \"fallin' for you\",\n", + " 'fallin’ for you',\n", + " \"ik ben fallin’, ik ben fallin' for you\",\n", + " 'fallin’ for you',\n", + " \"fallin' for you\",\n", + " 'throw that back on me, ba-back on me',\n", + " \"stop blowin' your seeka cause that's on me\",\n", + " \"that’s on me, that's on me\",\n", + " \"jij bent m'n shawty, the one that i need\",\n", + " 'types als jou zie je niet, styling queen',\n", + " 'jij bent de type, bij jou vind ik peace',\n", + " 'ik wil een fam met je starten, baby',\n", + " 'oh, yeah, oh, yeah',\n", + " 'hit her with a left, hit her with a right',\n", + " \"shawty come back, won't say it twice\",\n", + " 'b-beat it like a fight, ride me like a bike',\n", + " 'jij weet allang, allang ik ben die guy',\n", + " \"said i'm ballin' (prr)\",\n", + " \"geef je nummer, keep callin'\",\n", + " \"want je weet je bent m'n darlin'\",\n", + " 'oh, you, ey',\n", + " \"said i'm fallin', fallin' for you\",\n", + " \"fallin' for you\",\n", + " \"fallin' for you\",\n", + " \"ey, ik ben fallin', shawty fallin' for you\",\n", + " \"fallin' for you\",\n", + " \"fallin' for you, yeah\",\n", + " 'hoeveel moet ik nog slijmen, meisje',\n", + " 'wanneer heb jij tijd?',\n", + " 'kom je nog vanavond langs bij mij?',\n", + " 'baby wavy, ik ben down for life',\n", + " 'oké girl je bent fine, net china',\n", + " \"oh, ja, that's right, ey\",\n", + " 'jij bent the one, ik begrijp heel de hive, aye',\n", + " 'kan ik forever met je zijn?',\n", + " \"oh ja, ik ben fallin', ben fallin' for you\",\n", + " \"fallin' for you\",\n", + " \"fallin' for you, you, you, you, you, you\",\n", + " \"ey, ik ben fallin', shawty fallin' for you\",\n", + " \"fallin' for you\",\n", + " \"fallin' for you, yeah\",\n", + " \"g-girl ik ben fallin', fallin'\",\n", + " 'voor jou ga ik all in, all in',\n", + " \"je weet ik ben ballin', ballin'\",\n", + " 'dus alles is on me, on me',\n", + " \"g-girl ik ben fallin', fallin'\",\n", + " \"jij weet je bent m'n darlin'\",\n", + " \"bands op me en ik boss het op m'n shawty\",\n", + " 'mijn shawty',\n", + " 'yuh, oké',\n", + " \"shawty, je bent fallin' elke keer\",\n", + " 'voor jou doet een nigga iets meer',\n", + " 'shawty zet die body op me, yeah, ey',\n", + " 'ik ben in love met je waist line',\n", + " 'oh shawty, kom en bel me op facetime',\n", + " 'night en de day time',\n", + " \"jij bent m'n compa\",\n", + " \"oh, lil' mama, jij bent amazing\",\n", + " 'het is p.c.-time',\n", + " \"ik ben fallin', shawty fallin' for you\",\n", + " \"fallin' for you, yeah\",\n", + " \"fallin' for you, yeah\",\n", + " \"ey, ik ben fallin', shawty fallin' for you\",\n", + " \"fallin' for you\",\n", + " \"fallin' for you, yeah\",\n", + " 'songtekst van yung felix – \"mr lova\" ft. zefanio & ir sais',\n", + " 'y-y-y-yung felix',\n", + " 'oh, stop het',\n", + " 'oh, bom het',\n", + " \"heat is aan m'n voeten maar ze sokt 't, hmm\",\n", + " 'mr. lova, lova in je jungle, you',\n", + " \"jij mag komen zitten op m'n schommel, hmm\",\n", + " 'mr. lova, laat me in je jungle',\n", + " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", + " 'mr. lova, laat me in je jungle',\n", + " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", + " 'oh, hmm, oh, hmm, oh-oh-oh, hmm',\n", + " 'mr. lova, lova in je jungle, you',\n", + " \"jij mag komen zitten op m'n schommel, hmm\",\n", + " \"al show je me love, we don't give a fuck\",\n", + " 'schat ik zet je vast net als jongeren en job',\n", + " \"body slaapt allang, please don't call the cops\",\n", + " 'schud die billen dan, zo van rom-pom-pom-pom',\n", + " 'zet die, semi, , for me lovely body, pak ik, pak ik, pak ik',\n", + " 'semi zet ik for me lovely body, body',\n", + " 'oh, stop het',\n", + " 'oh, bom het',\n", + " \"heat is aan m'n voeten maar ze suckt 't, hmm\",\n", + " 'mr. lova, lova in je jungle, you',\n", + " \"jij mag komen zitten op m'n schommel, hmm\",\n", + " 'mr. lova, laat me in je jungle',\n", + " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", + " 'mr. lova, laat me in je jungle',\n", + " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", + " 'oh, hmm, oh, hmm, oh-oh-oh, hmm',\n", + " 'mr. lova, lova in je jungle, you',\n", + " \"jij mag komen zitten op m'n schommel, hmm\",\n", + " 'baby blijf rustig, controla (controla)',\n", + " 'dit is iri, zeker mi ta kla',\n", + " 'we gaan lang mami, night night',\n", + " 'i like the way that you smile',\n", + " \"you got me trippin'\",\n", + " 'aii bo body ta straks si',\n", + " 'anto mi gusta bo way, bo way, bo way, stop',\n", + " 'pone bo karga nan un side, joh',\n", + " 'mami we doen het de hele avond (chichi)',\n", + " 'pone bo karga nan den side, joh',\n", + " 'mami we doen het de hele avond',\n", + " 'oh, stop het',\n", + " 'oh, bom het',\n", + " \"heat is aan m'n voeten maar ze suckt 't, hmm\",\n", + " 'mr. lova, lova in je jungle, you',\n", + " \"jij mag komen zitten op m'n schommel, hmm\",\n", + " 'mr. lova, laat me in je jungle',\n", + " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", + " 'mr. lova, laat me in je jungle',\n", + " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", + " 'oh, hmm, oh, hmm, oh-oh-oh, hmm',\n", + " 'mr. lova, lova in je jungle, you',\n", + " \"jij mag komen zitten op m'n schommel, hmm\",\n", + " 'oh, hmm, oh, hmm, oh-oh-oh, hmm',\n", + " 'oh, hmm, oh, hmm, oh-oh-oh, hmm',\n", + " 'lil mama is nice, nice',\n", + " \"moet soms frans met 'r spreken 'oui'\",\n", + " \"heb m'n focus op je eyes gezet\",\n", + " 'hmm, maar die lips van je doen met je boy',\n", + " 'ik ken die sweet spot die zorgt voor die ooeh aah',\n", + " \"honey in m'n tea geen suga\",\n", + " 'ready, set, action yeah yeah',\n", + " 'ze is bool met de boy zonder effort yeah yeah',\n", + " 'ik zei ready, set, action yeah yeah',\n", + " 'ze is bool met de boy zonder effort yeah yeah',\n", + " 'honey honeybee, honeybee',\n", + " \"ze is de honing in m'n ginger tea (oh ooh)\",\n", + " 'honey honeybee, honeybee',\n", + " \"breng de honing in m'n ginger tea (oh ooh)\",\n", + " 'honey honeybee, honeybee',\n", + " \"ze is de honing in m'n ginger tea (oh ooh)\",\n", + " 'honey honeybee, honeybee',\n", + " \"ze is de honing in m'n ginger tea\",\n", + " 'honey honeybee',\n", + " \"m'n killerbee\",\n", + " 'ze vliegt om me heen, maar ze steekt me niet',\n", + " 'ze zeiden altijd pas op voor de bijen',\n", + " 'maar ik wil bij je zijn',\n", + " 'rechtstreeks naar je bloemenveld',\n", + " \"bestuif je voor m'n gingertea\",\n", + " 'dit is geen one night stand thing',\n", + " 'maar een long long long thing aye',\n", + " \"ik houd 't maar op een ding yeah\",\n", + " \"honeybee, ze is m'n honing\",\n", + " \"stoom iets and let's relax\",\n", + " 'next morning eet ik in bed',\n", + " \"maar ik heb 't niet over ontbijt nee\",\n", + " 'honey honeybee, honeybee',\n", + " \"ze is de honing in m'n ginger tea (oh ooh)\",\n", + " 'honey honeybee, honeybee',\n", + " \"breng de honing in m'n ginger tea (oh ooh)\",\n", + " 'honey honeybee, honeybee',\n", + " \"ze is de honing in m'n ginger tea (oh ooh)\",\n", + " 'honey honeybee, honeybee',\n", + " \"ze is de honing in m'n ginger tea\",\n", + " 'ik zei ready, set, action',\n", + " 'ready, set, action yeah yeah',\n", + " 'ik zei ready, set, action',\n", + " 'ready, set, action yeah yeah',\n", + " 'lil mama is nice, nice',\n", + " \"moet soms frans met 'r spreken 'oui'\",\n", + " \"heb m'n focus op je eyes gezet\",\n", + " 'hmm, maar die lips van je doen met je boy',\n", + " 'ready, set, action yeah yeah',\n", + " 'ik zei ready, set, action',\n", + " 'songtekst van leafs – \"mamacita\"',\n", + " 'iehh, ramiks, skieff skieff (ramiks skie.., ieh ieh, baby)',\n", + " 'leafs sensei, ayyy',\n", + " 'want ze is all red, gedressed, tight jeans tot ‘r waist ey',\n", + " 'meisje is op dreef ey, kom je met mee heya',\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " \"she set me in me feelings met d'r vibes, oh my\",\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " 'steeds in my mind heya, steeds in my mind heya',\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " 'she set me in my feelings met the vibes, oh my',\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " 'steeds in my mind heya, steeds in my mind heya',\n", + " 'in my mind, alright',\n", + " \"thot, make her so wet in nights, baby you're so damn fine\",\n", + " 'is ze bij mij dan blijft ze heel de night, yeah',\n", + " \"maar ze snap me ice tankings, nog steeds niet lackin'\",\n", + " 'paradise shawty, ik ben leafs sensei',\n", + " 'wie is niet down met ons? on the run met the anbu gang',\n", + " 'ben nog steeds in the endz, dus ik whip, slash, crash',\n", + " \"wij zijn nog steeds in love, eerlijk i don't know\",\n", + " 'boss bij elke show, super jong maar bulldoze (yeah)',\n", + " 'want ze is all red, gedressed, tight jeans tot ‘r waist ey',\n", + " 'meisje is op dreef ey, kom je met mee heya',\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " \"she set me in me feelings met d'r vibes, oh my\",\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " 'steeds in my mind heya, steeds in my mind heya',\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " 'she set me in my feelings met the vibes, oh my',\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " 'steeds in my mind heya, steeds in my mind heya',\n", + " \"steam, all in stunnin', i'mma keep it hunnid\",\n", + " 'ben on my way naar me bae, yeah still making money',\n", + " \"she's the one with the gass, lil' mama is elegant\",\n", + " 'kabba zo groot als een elephant, money moet langer dan slenderman',\n", + " \"je speelt met me feals, i don't like that\",\n", + " \"en nu stuur je mij een message, i don't write back\",\n", + " 'ze is highclass, ben je hajek?',\n", + " 'ik stond altijd klaar voor je yeah, pull up ik was daar voor je',\n", + " 'shawty, ik was daar voor je, yeah',\n", + " 'want ze is all red, gedressed, tight jeans tot ‘r waist ey',\n", + " 'meisje is op dreef ey, kom je met mee heya',\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " \"she set me in me feelings met d'r vibes, oh my\",\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " 'steeds in my mind heya, steeds in my mind heya',\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " 'she set me in my feelings met the vibes, oh my',\n", + " \"mamacita, ze blijft steeds in m'n mind heya\",\n", + " 'steeds in my mind heya, steeds in my mind heya',\n", + " 'proper patola',\n", + " 'nakhra ae swag',\n", + " 'suit patiala shahi chunni teri black',\n", + " 'o munde honke bharde',\n", + " 'tainu takk takk ke',\n", + " 'turre jadon hath tu',\n", + " 'lakk utte rakh ke',\n", + " 'proper patola',\n", + " 'nakhra ae swag',\n", + " 'suit patiala shahi',\n", + " 'chunni meri black',\n", + " 'o munde honke bharde',\n", + " 'mainu takk takk ke',\n", + " 'nachan jadon hath main',\n", + " 'lakk utte rakh ke',\n", + " '(badshah rap)',\n", + " 'look! rabb ne husna di rakhi koi thod nahi',\n", + " 'gallan di laali nu makeup di koi lod nahi',\n", + " 'phull ne gulaab de',\n", + " 'bull ne janaab de',\n", + " 'sonh lagge mummy di mainu',\n", + " 'tera koi tod nahi',\n", + " 'thodi te til kaala kudiye ni baatan paave',\n", + " 'suit patiala, gucci vucci nu maatan paave',\n", + " 'ghar tera ni main aape labh loon',\n", + " 'saanu bas das ja tu naa’m',\n", + " 'proper patola',\n", + " 'nakhra ae swag',\n", + " 'suit patiala shahi chunni teri black',\n", + " 'o munde honke bharde',\n", + " 'tainu takk takk ke',\n", + " 'turre jadon hath tu',\n", + " 'lakk utte rakh ke',\n", + " 'main laa dun tujhe haar',\n", + " 'pehna doon tujhe kangan',\n", + " 'ho taiyyar',\n", + " 'ghuma doon tujhe london',\n", + " 'haath mein rakhun haath rakhe jis cheez pe',\n", + " 'heere jadwa doon teri kaali kameez pe',\n", + " 'aaja mere paas, kar guzarish',\n", + " 'paise ki kya baat',\n", + " 'kar doon noton ki baarish',\n", + " 'itna na soch haath mera thaam',\n", + " 'tujhe yaad rahegi zindagi bhar ye shaam',\n", + " 'ja mundeya ve tere bas di ni gal',\n", + " 'na nach mere naal aake tu close',\n", + " 'haan chal patli gali se tu nikal',\n", + " 'tere jaison ko rakhti hoon on-toes',\n", + " 'kyun bole lie tu',\n", + " 'na kare try tu',\n", + " 'jaa jaa tu bete ghar ja',\n", + " 'proper patola',\n", + " 'nakhra ae swag',\n", + " 'suit patiala shahi chunni teri black',\n", + " 'o munde honke bharde',\n", + " 'tainu takk takk ke',\n", + " 'turre jadon hath tu',\n", + " 'lakk utte rakh ke',\n", + " 'proper patola',\n", + " 'nakhra ae swag',\n", + " 'suit patiala shahi',\n", + " 'chunni meri black',\n", + " 'o munde honke bharde',\n", + " 'mainu takk takk ke',\n", + " 'nachan jadon hath main',\n", + " 'lakk utte rakh ke',\n", + " 'ey, zoo-tududu-na-na-nahh, dah dah, yeah',\n", + " 'oeh baby omlaag, bring it back up, oeh laat me zien hoe je squat',\n", + " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", + " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", + " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", + " 'ik breng het omlaag, bring it back up',\n", + " 'hmmm, en je wilt niet dat ik stop',\n", + " \"zie je kijken naar m'n booty maar het is oké\",\n", + " \"t'is hier heel gezellig maar ik ga niet mee (dab!)\",\n", + " 'whine on a nigga, maak hem helemaal gek (hmmm, laat hem zien wat je hebt)',\n", + " 'hoe ik squat, hoe ik draai, hoe ik twirl',\n", + " 'al je boys kijken lang naar me, girl',\n", + " \"you got me liftin', shiftin', higher than the ceiling, your body is amazing, you're gifted\",\n", + " 'i push you to the limit, oh girl, but sugar ja je bent so fly',\n", + " \"you got me liftin', shiftin', higher than the ceiling, your body is amazing, you're gifted\",\n", + " 'i push you to the limit, oh girl, but sugar ja je bent so fly',\n", + " 'oeh baby omlaag, bring it back up, oeh laat me zien hoe je squat',\n", + " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", + " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", + " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", + " 'oeh baby omlaag, bring it back up now',\n", + " 'let me see you go down now',\n", + " 'wil dat jij niet meer ophoudt, wil dat jij me nu vasthoudt',\n", + " 'en ik zeg, hit zijn, kill it with the flow',\n", + " \"baby squat, we zijn op m'n goal\",\n", + " 'hit zijn, go down low, wil dat jij nu niet meer stopt',\n", + " \"you got me liftin', shiftin', higher than the ceiling, your body is so amazing, you're gifted\",\n", + " 'i push you to the limit, oh boy, boy sugar ja je bent so fly',\n", + " \"you got me liftin', shiftin', higher than the ceiling, your body is so amazing, you're gifted\",\n", + " 'i push you to the limit, oh boy, boy sugar ja je bent so fly',\n", + " 'oeh baby omlaag, bring it back up, oeh laat me zien hoe je squat',\n", + " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", + " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", + " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", + " 'oeh baby omlaag-oh-oh-oh-oh-oh-oh-oh',\n", + " 'oeh baby omlaag!',\n", + " \"ik en m'n jongens worden rich\",\n", + " 'maak nu money met die pokoes, maar ik',\n", + " 'ik en me',\n", + " 'ik en me jongens worden rich',\n", + " '(spanker)',\n", + " \"ik en m'n jongens worden rich\",\n", + " 'maak nu money met die pokoes, maar ik droomde over bricks',\n", + " \"ik zet money op m'n family, jij zet money op een bitch\",\n", + " \"that's a no go, zeg die fake hoe's: stay the fuck up out my bizz\",\n", + " 'aan het rennen voor die guala, ben nog niet bij die finish',\n", + " \"vertel die fake hoe's: stay the fuck up out my bizz\",\n", + " 'hella cash, hella cash, hella cash, hella cash',\n", + " \"vertel die fake hoe's: stay the fuck up out my motherfucking bizz hella cash, hella cash, hella cash, hella cash gang, bitch\",\n", + " 'kijk me hele gang doet rennen voor die goddamn cash',\n", + " 'als die mannen niet begrijpen, komen big ass straps uit de koffer, richting dokter als die bullet jou catched',\n", + " 'beter betaal me die money',\n", + " 'ah mattie, we lachen niet',\n", + " 'ik ben aggresief',\n", + " 'vraag de fucking beat wat ik met hem doe',\n", + " 'bro, je gaat niet halen',\n", + " \"check m'n hele crew is bekend in de hood\",\n", + " 'dat is elke member, iedereen doet rennen voor die fucking paper',\n", + " 'fuck een player hater, spelen spel iets beter dan de fucking meeste',\n", + " 'ben een fucking meester, jij een fucking leerling, je kan van me leren, ey ey',\n", + " 'moeman, chopper en locos',\n", + " 'zackie, billy en borus',\n", + " 'westside en ace boogie',\n", + " 'ww en steve s',\n", + " \"m'n hele gang is op get cash\",\n", + " 'hella money, dit is hella cash',\n", + " 'we gaan het pakken dit jaar, wauw',\n", + " \"ik en m'n jongens worden rich\",\n", + " 'maak nu money met die pokoes, maar ik droomde over bricks',\n", + " \"ik zet money op m'n family, jij zet money op een bitch\",\n", + " \"that's a no go, zeg die fake hoe's: stay the fuck up out my bizz\",\n", + " 'aan het rennen voor die guala, ben nog niet bij die finish',\n", + " \"vertel die fake hoe's: stay the fuck up out my bizz\",\n", + " 'hella cash, hella cash, hella cash, hella cash',\n", + " \"vertel die fake hoe's: stay the fuck up out my motherfucking bizz\",\n", + " 'hella cash, hella cash, hella cash, hella cash gang, bitch',\n", + " 'ik ken die tijden, ik had niks',\n", + " \"er waren tijden dat we renden met z'n allen in de mist\",\n", + " 'er waren tijden in de hooptie, maar nu pull ik up in whips waar je u tegen kan zeggen',\n", + " 'beter let je op je bitch, look at the flick of the wrist',\n", + " \"ren tot ik lig in m'n kist\",\n", + " \"m'n jongens die leveren bricks\",\n", + " \"slecht nieuws, dat zijn balla's in je been mattie, ze komen gericht\",\n", + " 'in het donker, geef licht',\n", + " \"heel m'n nek die dript\",\n", + " 'hella cash in this bitch',\n", + " \"heel m'n gang die wordt rich\",\n", + " 'moeman, chopper en locos',\n", + " 'zackie billy en borus',\n", + " 'westside en ace boogie',\n", + " 'ww en steve s',\n", + " \"m'n hele gang is op get cash\",\n", + " 'hella money, dit is hella cash',\n", + " 'we gaan het pakken dit jaar, wauw',\n", + " \"ik en m'n jongens worden rich\",\n", + " 'maak nu money met die pokoes, maar ik droomde over bricks',\n", + " \"ik zet money op m'n family, jij zet money op een bitch\",\n", + " \"that's a no go, zeg die fake hoe's: stay the fuck up out my bizz\",\n", + " 'aan het rennen voor die guala, ben nog niet bij die finish',\n", + " \"vertel die fake hoe's: stay the fuck up out my bizz\",\n", + " 'hella cash, hella cash, hella cash, hella cash',\n", + " \"vertel die fake hoe's: stay the fuck up out my motherfucking bizz\",\n", + " 'hella cash, hella cash, hella cash, hella cash gang, bitch',\n", + " 'aye, 1,2,3, myew myew myew, myew myew myew, yeah',\n", + " '(spanker) skiiiiw',\n", + " 'omin flügels, spelen steen, papier, tizora',\n", + " 'ik word bejuggled door die youngings en papollas',\n", + " \"private party, private party, zonder phona's\",\n", + " 'heb jij geen money, jij geen money, zeg ze kom maar',\n", + " 'ey bitch we gaan hard (ojee)',\n", + " 'ey bitch we gaan hard (okee)',\n", + " 'living it large (ojee)',\n", + " 'living it large (okee)',\n", + " 'different apart (ojee)',\n", + " 'different apart (okee)',\n", + " 'ey bitch we gaan hard (ojee)',\n", + " 'ey bitch we gaan hard (okee)',\n", + " 'echt lit, trust me',\n", + " 'guest list, bus 3',\n", + " 'bad bitch, plus 4 (four)',\n", + " 'zeg niks, huts, ieh',\n", + " 'ojee (ojee), no phones (no phones), probleem (problema), hoop stroom',\n", + " 'die plakkers, esco-muggers, private party, goon, ja trappers',\n", + " 'ja die wifeys zeggen jokkers, weet niet hoe, ze weten alles',\n", + " 'ik wil dat je gaat, ik wil dat je komt',\n", + " 'ik wil dat je staat en weer zit op de grond',\n", + " 'ik wil de je loopt, ik wil dat je kruipt',\n", + " \"ik wil dat je bukt en 't drukt net een vuist (uh)\",\n", + " 'eten we delen we (eten we delen we)',\n", + " 'jullie die spelen het (jullie die spelen het)',\n", + " \"pappelle dat geven we, weg aan de bitches die menen 't, weten 't\",\n", + " 'represent met de gang, help je mattie ask you friend',\n", + " 'represent met de gang, help je mattie ask you friend',\n", + " 'ik represent met de gang, help je mattie ask you friend, yay',\n", + " 'omin flügels, spelen steen, papier, tizora (tizoraaa!)',\n", + " 'ik word bejuggled door die youngings en papollas',\n", + " \"private party, private party, zonder phona's\",\n", + " 'heb jij geen money, jij geen money, zeg ze kom maar',\n", + " 'ey bitch we gaan hard (ojee)',\n", + " 'ey bitch we gaan hard (okee)',\n", + " 'living it large (ojee)',\n", + " 'living it large (okee)',\n", + " 'different apart (ojee)',\n", + " 'different apart (okee)',\n", + " 'ey bitch we gaan hard (ojee)',\n", + " 'ey bitch we gaan hard (okee)',\n", + " 'hola mami, ben met papi',\n", + " 'private party zo van nada, quintie ster bokachi',\n", + " 'ewa flae, pak die cape, zij moet mee in die whip, maakt niet uit waar ze zit ik heb zwart schmetta wit',\n", + " 'wow gass gass weg',\n", + " 'gratis ballonnen en drank bitch is enough, ja we leven nu echt',\n", + " 'dit is no phones allowed, niks wat je nu tegen houdt',\n", + " 'schat ga me niet liken als je werkt met een privé-account, nah',\n", + " 'voor die flügels speel ik rock, paper and scissors',\n", + " \"maar 'k weet niet of ik wil verliezen of wou winnen\",\n", + " 'chillen, ja baby girl breng je vriendinnen',\n", + " 'je onderschat het, ja, maar het fucked je hele systeem',\n", + " 'er is nieuw meat op die deck',\n", + " \"m'n beveiliger josé vraagt om die sleutel van die gek\",\n", + " 'ik ben zo schuin dus let niet op wat ik zeg',\n", + " 'ey mami noem me jerr, noem me boefie, noem me slash',\n", + " 'omin flügels, spelen steen, papier, tizora (tizoraaa!)',\n", + " 'ik word bejuggled door die youngings en papollas',\n", + " \"private party, private party, zonder phona's\",\n", + " 'heb jij geen money, jij geen money, zeg ze kom maar',\n", + " 'ey bitch we gaan hard (ojee)',\n", + " 'ey bitch we gaan hard (okee)',\n", + " 'living it large (ojee)',\n", + " 'living it large (okee)',\n", + " 'different apart (ojee)',\n", + " 'different apart (okee)',\n", + " 'ey bitch we gaan hard (ojee)',\n", + " 'ey bitch we gaan hard (okee)',\n", + " 'spring voor een trein homie fuck die shit',\n", + " \"sta op je zusje d'r bucketlist\",\n", + " 'lost in de soos ben in love with this',\n", + " 'homie, it is what it is',\n", + " 'spring voor een waggie, homie fuck it',\n", + " 'hier een crack pipe homie suck it',\n", + " 'gaf hem ook aan je bitch en she loved it',\n", + " 'gaf hem ook aan je bitch en she loved it',\n", + " 'je bitch lijkt op big pun, homie wat een afgang',\n", + " 'bij de dealer zit ze shotgun',\n", + " 'en van pak lust ze wel pap van',\n", + " 'ik was laatst bij je moeder thuis',\n", + " 'wijntje en een lijntje met me schoenen uit',\n", + " 'ik kreeg hoofd en zij kreeg een high five',\n", + " 'wou het posten maar die chick die had geen wifi',\n", + " 'spring voor een trein, homie fuck die shit',\n", + " 'sta op je zusje der bucketlist',\n", + " 'lost in de soos ben in love with this',\n", + " 'spring voor een trein, homie fuck die shit',\n", + " 'sta op je zusje der bucketlist',\n", + " 'lost in de soos ben in love with this',\n", + " 'homie it is what it is',\n", + " 'buy je diamonds & pearls en ik hang ze in je necklace',\n", + " 'diamonds en pearls',\n", + " 'di-diamonds en pearls',\n", + " 'reverse cowgirl',\n", + " 'diamonds en pearls',\n", + " 'di-diamonds en pearls',\n", + " 'je bent meer dan dan m’n best friend',\n", + " 'reversed cowgirl, maar we spelen niet in een western',\n", + " 'baby back it up in reverse en',\n", + " 'ik buy je diamonds en pearls en ik hang ze in je necklace',\n", + " 'reverse cowgirl',\n", + " 'diamonds en pearls',\n", + " 'diamonds diamonds en pearls',\n", + " 'reverse cowgirl',\n", + " 'diamonds diamonds en pearls',\n", + " 'bite je in je nek net een musquito',\n", + " 'alleen maar hoge noten ieyooh',\n", + " 'hier wordt goed genoten, houd ‘t duizend net een kilo',\n", + " 'shawty ik zie je feenen',\n", + " 'je shined shined net vaseline',\n", + " 'op een dag wordt dat tasje van je celine',\n", + " 'meer dan een best best friend',\n", + " 'pull up en ik doe m’n thing',\n", + " 'alles is mogelijk',\n", + " 'je moet me wel geloven',\n", + " 'nee ik denk niet aan een no no no girl',\n", + " 'diamonds and pearls net ogen',\n", + " 'je bent meer dan dan m’n best friend',\n", + " 'reversed cowgirl, maar we spelen niet in een western',\n", + " 'baby back it up in reverse en',\n", + " 'ik buy je diamonds en pearls en ik hang ze in je necklace',\n", + " 'reverse cowgirl',\n", + " 'diamonds en pearls',\n", + " 'diamonds diamonds en pearls',\n", + " 'reverse cowgirl',\n", + " 'diamonds diamonds en pearls',\n", + " 'shawty zeg me what it do als ik aan je voel',\n", + " 'als je snapt wat ik bedoel',\n", + " 'pull up en we gaan hoger dan je roof',\n", + " 'shawty zeg me what it do als ik aan je voel, want ik wil niet overkomen als een fool',\n", + " 'als je snapt wat ik bedoel',\n", + " 'pull up en we gaan hoger dan je roof',\n", + " 'maken moves',\n", + " 'meer stroom dan pikachu',\n", + " 'in je bday suit look at you',\n", + " 'baby i’m feeling you',\n", + " 'meer stroom dan pikachu',\n", + " 'baby i’m feeling you, feeling you',\n", + " 'reverse cowgirl',\n", + " 'diamonds en pearls',\n", + " 'diamonds diamonds en pearls',\n", + " 'reverse cowgirl',\n", + " 'diamonds diamonds en pearls',\n", + " 'songtekst van mr. polska – \"pepepe\" ft. bizzey',\n", + " 'i just found the right girl (papapa)',\n", + " 'i can watch her all night long',\n", + " 'ass fat like a diaper (papapa)',\n", + " 'watch her go on and on',\n", + " 'all she do is like',\n", + " 'pepepe, pepepe, pepepe, pepepe',\n", + " 'papapa, papapa, papapa, papapa',\n", + " 'pepepe, pepepe, pepepe, pepepe',\n", + " 'papapa, papapa, papapa, papapa',\n", + " 'ik heb die bom in die broek, ja, bel de police',\n", + " 'raap het op en zak naar beneden door je knees',\n", + " 'shake met die picanha, all you can eat',\n", + " \"meisje gooi die billen van je recht op m'n spies\",\n", + " 'zeg mami, kom met die punani',\n", + " 'je backa is groot, zeg me draag die karl kani',\n", + " 'ik heb die beamer, maar ik wil die la ferrari',\n", + " \"kijk eens naar m'n stack, die is geel als een kanarie\",\n", + " 'meisje rij alsof jij op mijn glijbaan glijdt',\n", + " 'ik maak tijd voor een reis naar ass paradise',\n", + " 'i just found the right girl',\n", + " 'i can watch her all night long',\n", + " 'ass fat like a diaper',\n", + " 'watch her go on and on',\n", + " 'all she do is like',\n", + " 'pepepe, pepepe, pepepe, pepepe',\n", + " 'papapa, papapa, papapa, papapa',\n", + " 'pepepe, pepepe, pepepe, pepepe',\n", + " 'papapa, papapa, papapa, papapa',\n", + " 'pepepe, pepepe, pepepe, pepepe',\n", + " 'papapa, papapa, papapa, papapa',\n", + " 'pepepe, pepepe, pepepe, pepepe',\n", + " 'papapa, papapa, papapa, papapa',\n", + " 'ass fat like a diaper, noem me scooter ik ga hyper, hyper',\n", + " 'schat jij mag blijven',\n", + " 'je zit als op mijn scooter, jij mag hijgen... haaa',\n", + " 'a-ass zo fat ik kan het zien van voren',\n", + " \"ándele, ze wil m'n pokoes horen\",\n", + " \"ze wilt met me mee, ewa ja, zo hoort 't\",\n", + " 'ik zie dat je bakka gestoord is',\n", + " 'rum-pum-pum-pum-pum, akka als een champion',\n", + " 'wine it down, laat me zien wat je kan',\n", + " 'rum-pum-pum-pum-pum, bossen met die engine',\n", + " 'i got the keys and a suite',\n", + " 'i just found the right girl',\n", + " 'i can watch her all night long',\n", + " 'ass fat like a diaper',\n", + " 'watch her go on and on',\n", + " 'all she do is like',\n", + " 'pepepe, pepepe, pepepe, pepepe',\n", + " 'papapa, papapa, papapa, papapa',\n", + " 'pepepe, pepepe, pepepe, pepepe',\n", + " 'papapa, papapa, papapa, papapa',\n", + " 'pepepe, pepepe, pepepe, pepepe',\n", + " 'papapa, papapa, papapa, papapa',\n", + " 'pepepe, pepepe, pepepe, pepepe',\n", + " 'papapa, papapa, papapa, papapa',\n", + " 'it’s the way how you hypnotize me, don’t stop, no, no',\n", + " 'it’s the way how you hypnotize me, don’t stop, no, no',\n", + " 'it’s the way how you hypnotize me, don’t stop, no, no',\n", + " 'it’s the way how you hypnotize me, don’t stop, no, no',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'can i get a witness to testify?',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'are these three fools back at it again?',\n", + " 'yeah, het is aan vanaf de eerste seconde',\n", + " 'en met een aanpak van pak aan, die shit is begonnen',\n", + " 'we kicken in vanuit het pikkedonker',\n", + " 'deze schreeuwlelijk heeft zijn keel gesmeerd en heeft er zin in verdomme',\n", + " 'vergeet de next best en vergeet de youtube views',\n", + " 'vergeet de labels en wie d’r wel en niet toe doet',\n", + " 'want dit is nu (nu!), midden in het moment',\n", + " 'waarin echte onmiddellijk zullen merken of je doof bent',\n", + " '‘t is logisch, ik wil die vieze blikken zien van oh damn',\n", + " 'die beat is hard, die we normaal classic als',\n", + " 'niet je prototype openingsact',\n", + " 'maar heb je onze show voor je weet je zeker dat de toon wordt gezet',\n", + " 'want dit is lonerwerk en oefenen, non-stop',\n", + " 'zoeken die scherpte, werkt het noem ik ‘t on-point',\n", + " 'en misschien nog steeds die underdog',\n", + " 'maar never dat je hoort, ‘jonge, engel & just die lullen maar wat’',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'can i get a witness to testify?',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'are these three fools back at it again?',\n", + " 'yes, we komen correct',\n", + " 'je bent pas doof als je op het podium bent',\n", + " 'de show-and-tell, motherfucka',\n", + " 'hoe groot is je bek als niemand nog echt gelooft wat je zegt',\n", + " 'te veel rappertjes gooien er met de pet naar',\n", + " 'alsof een beetje niveau al meters boven hun cap gaat',\n", + " 'beter kom je correct, ik boost just en vice versa',\n", + " 'tot een level waar we zelf van versteld staan',\n", + " 'het is maar net hoe je presteert onder druk',\n", + " 'hoe verschrikkelijk dicht ben je als een lyric mislukt, kut',\n", + " 'en hoe pak je het op',\n", + " 'nou, kan je er nog om lachen of kap je de trek en ram je op stop',\n", + " '(de show must go on) yeah, we blijven relevant',\n", + " 'de underground act met de meeste shows van nederland',\n", + " 'en kan je d’r niet tegen, is zo veel spelen te druk?',\n", + " 'oké, native, neem ze mee naar de brug',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'can i get a witness to testify?',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'hold up, wait up, you know we come correct',\n", + " 'are these three fools back at it again?',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'ben met vic9 is me gunman',\n", + " 'hij kan zorgen dat je omloopt, of je laten rennen als die gun load',\n", + " 'stoot met gannoes in de omloop',\n", + " \"man's doing road, man's on road\",\n", + " 'mannen raken in paniek als die gun blowt',\n", + " 'i keep my broski beside me',\n", + " \"pijp op de heup, cuz it's likely\",\n", + " 'we blijven rennen op die nikes',\n", + " \"ben met m'n niggas, net yg\",\n", + " 'ben een zware jongen net als aiky',\n", + " 'shoot man down, boy ik fight niet',\n", + " \"ik heb die chain om m'n nek, hij is icy\",\n", + " \"care up, man on man don't try me\",\n", + " 'ik ben altijd op die mat, fuck around you might get shot',\n", + " \"action man, i don't chalk\",\n", + " 'schmurda niggas, ik ben hot',\n", + " 'ik ben altijd op die mat, fuck around you might get shot',\n", + " \"action man, i don't chalk\",\n", + " 'schmurda niggas, ik ben hot (raa, raa!)',\n", + " '2x',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'hey patser, zeg die jongetjes',\n", + " 'niemand als mij, schieten',\n", + " 'verandert je goon in een keeper',\n", + " 'verandert je block in een vriezer',\n", + " 'hey patser, zeg die jongetjes',\n", + " 'als ze willen geen visite',\n", + " 'want die schone blaffer worden viezer',\n", + " 'heb dat ding op de heup, net een pieper',\n", + " 'chill al lang vol met ice, niemand grijpt (ah, ah)',\n", + " 'shooter in de cut, tantoe werk, in bedrijf, niemand grijpt (ah, ah)',\n", + " 'shooter in de cut, plaats delict, geen gezicht, dus geen bewijs (ah, ah)',\n", + " 'shooter in de cut, voor een kleine prijs ga je op en van de lijst',\n", + " 'shooter in de cut',\n", + " 'die bitches die vinden het nice, want gannoes die mikken ze kam',\n", + " 'praat je money, praat ik alles hoog',\n", + " 'praat je gannoes, praat ik alles lang',\n", + " 'die bitches die vinden het nice, want gannoes die mikken ze kam',\n", + " 'praat je money, praat ik alles hoog',\n", + " 'praat je gannoes, praat ik alles lang (bang, bang!)',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'pull up, pull up, pull up, pull up, pull up, team dirty the ting d-d-d-dark the thing murky',\n", + " \"you pulling up to the prince, you can't verse me\",\n", + " 'you got hook and a verse, then come verse me',\n", + " 'man are still, gone like nascar in the black car tinted with a mask off',\n", + " 'man are rap star, they dread like rasta, imposter get bagged like costa (sky, sky)',\n", + " 'grew up in 1104',\n", + " 'came with the squad through 1104',\n", + " \"elf nul vier that eleven 'o four\",\n", + " 'gyal want man from 1104',\n", + " 'cause them man bummy',\n", + " \"we can't stand them\",\n", + " \"cause you spud man don't make you part of the mandem\",\n", + " 'beg make take him dodge like matrix',\n", + " \"10 man deep to the show like i'm asian\",\n", + " 'high like jamaican, that bar taken',\n", + " 'flow still cold homicide like jason',\n", + " \"lying in your raps you can't talk about no bandos\",\n", + " \"wait i can't even look like you\",\n", + " 'catch a m dargg, you can go pen dargg bigging up your chest dargg',\n", + " \"i don't wanna look like you\",\n", + " 'like trap trap in the bando',\n", + " \"i don't wanna look like you\",\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'zeg die mandem, ik ben op de block met die mandem',\n", + " 'broski beside me, is een gunman',\n", + " 'in de cut tot vroeg in de morning',\n", + " 'aye!',\n", + " 'songtekst van frenna – \"16 million\" ft. emms',\n", + " '16 million, ik ben one in a 16 million',\n", + " '(oh baby, wagwhaan?)',\n", + " 'in een 16 million, ik ben one in a 16 million',\n", + " '(oh baby, wagwhaan?)',\n", + " 'in een 16 million, ik ben one in a 16 million',\n", + " '(what is the thing?)',\n", + " 'in een 16 million, ik ben one in a 16 million (aye)',\n", + " 'in een 16 million, ik ben one in a....',\n", + " 'oeh baby, wagwan?',\n", + " \"oh baby, what's new?\",\n", + " 'je weet ik wacht lang, en dat ik niet duw',\n", + " 'je weet ik heb drank, verdrink in jouw ziel',\n", + " 'we turnen papier, vuitton voor je hiel',\n", + " 'aye, aye, aye',\n", + " 'in a 16 million, jij bent one in a 16 million',\n", + " 'in a 16 million, jij bent one in a, jij bent one in a...',\n", + " 'in a 16 million, jij bent one in a 16 million',\n", + " 'in a 16 million',\n", + " 'ah, ah, ah',\n", + " 'in a 16 mil, laat je nooit stikken, maar ik grijp jouw keel',\n", + " 'j-jeez, ik bepaal best veel',\n", + " 'want geef ik wat je eist, zo krijg ik jou stil',\n", + " \"freeze, baby please don't switch sides\",\n", + " 'weer een nieuwe hit, die moet geclipt zijn',\n", + " 'ah, she fell in love with my lifestyle',\n", + " \"boze ogen voor m'n mannen die doen bigtime\",\n", + " 'ik ben lit (prrrr)',\n", + " 'ik zorg chanel voor mijn bitch (hah)',\n", + " 'en ik mag, want ik zorg goed voor mijn kids (hah)',\n", + " 'baby, ik laat niet los, ik heb grip',\n", + " 'jij bent op another way, de kapitein van mijn schip, oh yeah',\n", + " 'in a 16 million, jij bent one in a 16 million',\n", + " 'in a 16 million, jij bent one in a, jij ben one in a...',\n", + " 'in a 16 million, jij bent one in a 16 million',\n", + " 'in a 16 million',\n", + " 'ah, ah, ah',\n", + " 'this is love aye, kiss and hugs aye',\n", + " \"man's not hot, dus ik pull met een winterjas aye\",\n", + " 'jij bent one in a 16 million',\n", + " 'jij bent one in a 16 million',\n", + " 'die millie raken is de motto baby',\n", + " 'fronkel honkel, ben niet dronko baby',\n", + " 'al die poenies die doen loco baby',\n", + " 'strijders samen, kom foto baby',\n", + " 'ze weet ik kom uit de jungle (zo veel vrouwen om mij heen)',\n", + " 'ik heb een probleem, zo veel vrouwen om me heen',\n", + " 'in a 16 million, jij bent one in a 16 million',\n", + " 'in a 16 million, jij bent one in a, jij bent one in a...',\n", + " 'in a 16 million, jij bent one in a 16 million',\n", + " 'in a 16 million',\n", + " 'ah, ah',\n", + " 'my bitch is bad and boujee',\n", + " 'ik kan je brengen naar cookies',\n", + " 'ik zet een lock op die pussy',\n", + " \"ik zeg je, ik geef geen fock om m'n goofy, aye\",\n", + " 'god damn, ik scheur op je bitch',\n", + " \"ik kan d'r zetten in gucci, oh\",\n", + " 'zij kan me vinden in gucci, ay',\n", + " \"laat d'r pitten in m'n hoodies\",\n", + " 'ik ben spits, doelgericht ik ben fit',\n", + " 'soldaat, aye, ik was altijd geschikt',\n", + " 'ah, lady ik zeg je nu wat het is',\n", + " 'aye, één uit de 16 mil, ik ben speciaal want dat is mijn plicht',\n", + " 'baby, wagwan...',\n", + " 'oeh baby wagwhaan?',\n", + " \"oh baby, what's new?\",\n", + " 'je weet ik wacht lang, en dat ik niet duw',\n", + " 'je weet ik heb drank, verdrink in jouw ziel',\n", + " 'we turnen papier, vuitton voor je hiel',\n", + " 'aye, aye, aye',\n", + " 'in a 16 million, jij bent one in a 16 million',\n", + " 'in a 16 million, jij bent one in a, jij bent one in a...',\n", + " 'in a 16 million, jij bent one in a 16 million',\n", + " 'in a 16 million',\n", + " 'ah, ah, ah',\n", + " \"met diquenz, we don't stop, w-w-we don't stop\",\n", + " 'in a 16 mill, jij bent one in a 16 mill']}}},\n", + " 'nn': {'sentence': {'pop': {'meta': {'train_data': ['horna gjallar, vinden bles',\n", + " 'trommer dundrar, vinded bles',\n", + " 'med spjut og boge meter til strid',\n", + " 'me g¥r i bresjen brèdre gjennom blod',\n", + " 'med von om «re i galskapens namn',\n", + " 'me vert aldri slegn sjèl om me fell',\n", + " 'me reiser ei til folkvang til',\n", + " 'vanedronnings famn, v¥re fedre skal',\n", + " 'me mèta om me fell i dag',\n", + " 'me flytar ei fr¥ var lagnad sjèlv',\n", + " 'om vinden ikkje bles v¥r vei',\n", + " 'til valfaders hall brèdre',\n", + " 'med heva spjut i odins namn',\n", + " 'me skal heva krus i odins namn',\n", + " 'nidingar skal falla for v¥re fètter',\n", + " 'dei treng ikkje be om sollyse dagar',\n", + " 'ingen hugsat ein tr«ll uten herre',\n", + " 'slegne vert dei n¥r dei fell',\n", + " 'me hevar v¥pen for v¥r tru',\n", + " 'me slaktar marken for v¥r tru',\n", + " 'ingen n¥de me viser',\n", + " 'for dei som snudde ryggen til',\n", + " 'dèy skal dei som freista',\n", + " '¥ mura brunnen inn',\n", + " 'ei som for med lègn og svik',\n", + " 'gje oss styrke, gje oss mot',\n", + " 'me skal sigra, brèdre gjennom blod',\n", + " 'horns are resounding, the winds are howling',\n", + " 'drums are pounding, the winds are howling',\n", + " 'with spear and bow we go into battle',\n", + " 'we are making a stand, brothers in blood',\n", + " 'with hope for honour in the name of madness',\n", + " 'we will never be defeated, even if we fall',\n", + " 'we are not going to folkvang',\n", + " 'into the arms of the vanir queen',\n", + " 'we shall ?? our fathers if we fall today',\n", + " 'we will not flee from our destiny',\n", + " \"even though the winds aren't blowing our way\",\n", + " 'brothers, to valfaders hall',\n", + " 'with spear raised in the name of oden',\n", + " 'we shall raise mugs in the name of oden',\n", + " 'cowards shall fall at our feet',\n", + " 'they do not have to pray for sun filled days',\n", + " 'no one remembers a slave without a master',\n", + " 'defeated they are when they fall',\n", + " 'we raise weapons for our faith',\n", + " 'we slaughter the fields for our faith',\n", + " 'we have no mercy for those',\n", + " 'who turned their backs',\n", + " 'those who attemmp to close the well',\n", + " 'shall die',\n", + " 'those who lied and betrayed shall die',\n", + " 'give us strenght strength?, give us courage',\n", + " 'we will prevail',\n", + " 'brothers in blood',\n", + " 'ehhh eeey hoo',\n", + " 'ehhh eeey hoo',\n", + " 'ehhh eeey hoo',\n", + " 'ehhh eeey hoo',\n", + " 'i ei havn, longt dar borte i sydensland',\n", + " 'set ein mann, stranda på ei strand',\n", + " 'gje meg di besta flaska med rom',\n", + " 'no vil eg ta ein skål',\n", + " 'i kveld ska me svelga til flasko vert tom, tom... tom... tom, skåla tom',\n", + " 'hey',\n", + " 'sail away, all the way to norges land, sail away du som sigla kan',\n", + " 'sail away, all the way to norges land, sail away du som sigla kan',\n", + " 'dans me meg, vakre senorita, vis meg veg, låt meg fylja deg',\n", + " 'fyll opp mitt tomme glas med rom, no vil eg ta ein skål',\n", + " 'i kveld ska flasko aldri verta tom, tom... tom... tom, skåla tom',\n", + " 'hey',\n", + " 'sail away, all the way to norges land, sail away du som sigla kan',\n", + " 'sail away, all the way to norges land, sail away du som sigla kan',\n", + " 'what should we do with an drunken sailor, what should we do with an drunken sailor',\n", + " 'what should we do with an drunken sailor, early in the morning',\n", + " 'what should we do with an drunken sailor, what should we do with an drunken sailor',\n", + " 'what should we do with an drunken sailor, early in the morning',\n", + " 'ehhh eeey hoo',\n", + " 'ehhh eeey hoo',\n", + " 'ehhh eeey hoo',\n", + " 'ehhh eeey hoo',\n", + " 'sail away, all the way to norges land, sail away du som sigla kan',\n", + " 'sail away, all the way to norges land, sail away du som sigla kan',\n", + " 'what should we do with an drunken sailor, what should we do with an drunken sailor',\n", + " 'what should we do with an drunken sailor, early in the morning',\n", + " 'wub a dub wub a dub, doob de bood',\n", + " 'skjhgkjosd',\n", + " 'doob a boob',\n", + " 'boob a doob',\n", + " 'beep',\n", + " '*dial up sounds*',\n", + " 'hi',\n", + " 'whoever you are',\n", + " 'u suk dik',\n", + " 'i love u',\n", + " 'jk lul ur a disgrace: d',\n", + " \"we're almost over\",\n", + " 'im breaking up with you',\n", + " 'k thnx bai',\n", + " 'ag',\n", + " 'dfh',\n", + " 'afdhf',\n", + " 'adfh',\n", + " 'adf',\n", + " 'h',\n", + " 'adfj',\n", + " 'asfg',\n", + " 'ja',\n", + " 'sfgj',\n", + " 's',\n", + " 'gjs',\n", + " 'fgj',\n", + " 's',\n", + " 'boob a doob',\n", + " 'oh, sinnerman, where you gonna run to?',\n", + " 'sinnerman, where you gonna run to?',\n", + " 'oh, sinnerman, where you gonna run to?',\n", + " 'sinnerman, where you gonna run to?',\n", + " 'oh, sinnerman, where you gonna run to?',\n", + " 'sinnerman, where you gonna run to?',\n", + " 'oh, sinnerman, where you gonna run to?',\n", + " 'sinnerman, where you gonna run to?',\n", + " 'future universal histories',\n", + " 'modernist theme :',\n", + " 'imagine our time seen from 1920, europe after la grande guerre',\n", + " 'welcome mass electricity and socialites on cocaine',\n", + " 'the roaring twenties reverberating from america',\n", + " 'with radio commercials for automobiles',\n", + " 'art deco beaming back, robing every lady, her rooms and cities',\n", + " 'she votes, she works and is sexually awakened by dr. sigmund freud',\n", + " 'as the new york skyline rises with the',\n", + " 'empire state and chrysler buildings',\n", + " 'jazz booms from nouvelle-orléans',\n", + " 'young couples lindy hop their way up',\n", + " 'the weimar republic in germany, dada in berlin and vienna',\n", + " 'followed by the murder of rosa luxemburg in 1919',\n", + " 'the maiden of socialism leads the workers towards the new dawn',\n", + " 'the proprietors of red labour the third international',\n", + " 'prussian theme :',\n", + " \"we're the wilhelmine combattants of 1913\",\n", + " 'prussian burschen aspiring to scars of fame',\n", + " 'eyes und nase covered, now let the swords fly',\n", + " 'the sweet folly of stitching gushing wunden',\n", + " 'drunk students in burschenschaft uniforms',\n", + " 'fighting the mensur für no grund at all',\n", + " 'the jahrhundert ahead shall ridicule our honour',\n", + " 'lach at our pride in vaterland und king',\n", + " 'modernist theme :',\n", + " 'new music follows the stravinsky line of le sacre du printemps 1913',\n", + " 'the motors of modernism rev with t.s. eliot’s the waste land',\n", + " \"and james joyce's ulysses in 1922\",\n", + " 'andré breton and the surrealists manifest in paris in 1924',\n", + " 'fritz lang directs « metropolis » in babelsberg in 1927',\n", + " 'prussian theme :',\n", + " \"schau me in the auge, sag you don't like my narbe\",\n", + " 'the prussian blade gab me another mouth',\n", + " 'i’ll keep on schnickschnacken to the ende',\n", + " 'as the wilhelmine combattant of 1913',\n", + " 'modernist theme :',\n", + " 'ten years of merriness and hope before the depression',\n", + " 'unemployment nationalises socialism, causing armageddon',\n", + " 'german aggression expands from within to the east and to the west',\n", + " 'world war ii ends with the nuclear sunset over the japanese empire',\n", + " 'umgangskrigen',\n", + " 'eg skrur på min menneskelegdom, skreiv du',\n", + " 'floden er skitten og full av lik, skreiv du',\n", + " 'eg skriv : um du skal vinna, må nokon tapa',\n", + " 'eg skriv : ingen hjelper ein som ikkje kan hjelpa',\n", + " 'tidi er ein isbre som utsletter spori etter oss, skreiv du',\n", + " 'ho skyv minnet fyre seg gjenom dalføret, skreiv du',\n", + " 'eg skriv : lat andre ofra seg sigeren',\n", + " 'eg skriv : utnytt dei veike til din fordel',\n", + " 'eg er guden som tok sjølvmord med å drepa sonen',\n", + " 'eg er kongane og hungerens brune tenner',\n", + " 'eg er elden som brann i sodoma',\n", + " 'eg er ulven som sprengde oklahoma',\n", + " 'eg er hornljod i kveldingi, hundeglam i skogen',\n", + " 'eg er siegfried, jaga millom trei i natti',\n", + " 'eg er tunet, treet og kvinna han fann',\n", + " 'eg er sverdet, og armen som treiv det',\n", + " 'eg er hod som skaut og baldur som fell',\n", + " 'eg er frigg som bag og mistelteinen ho gløymde',\n", + " 'eg er kniven som skar og såret som opna seg',\n", + " 'eg er skulden og han som ikkje angra',\n", + " 'eg var tridje verdskrigen som raste over hovudi',\n", + " 'det uniformerte folket som aldri vart informert',\n", + " 'eg krossfesta dei arme til ljoden av raga',\n", + " 'milliardane av liv som aldri klaga',\n", + " 'eg var torsoen som tagg på colaba causeway',\n", + " 'eg var den grønøygde jenta på gata i mumbai',\n", + " 'eg var grapefruktsvulsten i drosjevindauga',\n", + " 'eg var rupiane dei naudkomne ikkje ville hava',\n", + " 'eg skreiv med barberblad i sanningis andlit',\n", + " 'freste eit dikt for kvar von som døydde',\n", + " 'gjev dyri fred, send giftbegeret rundt',\n", + " 'drikk, saman fyrste gongen',\n", + " 'hwilum ylfete song',\n", + " 'dyde ic me to gomene',\n", + " 'nu thu miht gehyran',\n", + " 'tha sorhleod',\n", + " 'daeges ond nihtes',\n", + " 'calde gethrungen',\n", + " 'waeron mine fet',\n", + " 'forste gebunden',\n", + " 'hrimcealde sae',\n", + " 'hreo haeglfare',\n", + " 'haelethum on andan',\n", + " 'ic to sothe wat thaet bith',\n", + " 'haelethum on andan',\n", + " 'ic to sothe wat thaet bith',\n", + " 'eall thaet therinne is',\n", + " 'ceare sarra sorga',\n", + " 'ic eom bitter in breosthord',\n", + " 'mid sorgum gedrefted',\n", + " 'marian leofa modes milde eallgylden',\n", + " 'is me nu lifes hyht thaet ic haelan mag',\n", + " 'ei ta døm største ringsmyra',\n", + " 'noko nord om lauvliseter',\n", + " 'fekk engong sjuguttmyra te namn',\n", + " 'etter noko grufullt hadde hendt',\n", + " 'sju gutter hadde stevna hinaen',\n", + " 'fra setrer rundtom på skauen',\n", + " 'døm vart itte eni’ på ansles vis',\n", + " 'enn om å sliss te blodet rann',\n", + " 'døm skyra greiner ta',\n", + " 'ei furu like ved',\n", + " 'så spissa døm staura te',\n", + " 'og rauk sammen og slogs',\n", + " 'da kampen var over',\n", + " 'låg seks daue att på myra',\n", + " 'med innvolla i henda',\n", + " 'drog nummer sju seg hem',\n", + " 'så gjekk det itte bere',\n", + " \"hell at'n døe etter ei stynn\",\n", + " \"da'n væl var heme og hadde fortelt\",\n", + " 'om slaget som hadde tii stad',\n", + " 'seia detta hendte',\n", + " \"i år sekstenhundreogno'\",\n", + " 'har sju staure fått stå i myra',\n", + " \"som et minne ifrå gammal ti'\",\n", + " 'alt som står i myra',\n", + " 'blir svart som bek og hardt som stål',\n", + " 'drar te seg jernet fra lendet rundt',\n", + " 'eller blodet te sju gutter under torva',\n", + " 'one of the largest ring-marshes',\n", + " 'a stone’s throw north of lauvliseter',\n", + " 'was once named sjuguttmyra',\n", + " 'after something terrible happened there',\n", + " 'seven young shepherds had summoned each other',\n", + " 'from different farms around the forest',\n", + " 'seems they couldn’t come to an agreement any other way',\n", + " 'than to fight until rivers of blood would flow',\n", + " 'they cut branches off',\n", + " 'an old pine nearby',\n", + " 'then they sharpened their spears',\n", + " 'and clashed together and fought',\n", + " 'when the battle was over',\n", + " 'six of them laid dead on the marshlands',\n", + " 'with his own guts in his hands',\n", + " 'the seventh crawled home',\n", + " 'it didn’t end better',\n", + " 'than that he died after a while',\n", + " 'just shortly after he came home',\n", + " 'and told about the battle that had been fought',\n", + " 'ever since this happened',\n", + " 'sometime in the sixteen-hundreds',\n", + " 'seven poles have stood in the marsh',\n", + " 'as a memory of times which have long since passed',\n", + " 'everything that stands in the marsh',\n", + " 'turns pitch-black and hard as steel',\n", + " 'draws iron from the soil around',\n", + " 'or the blood of seven boys six feet under',\n", + " 'at hyggjande sinne',\n", + " 'skylet mathr hoesenn vesa',\n", + " 'heldr gaetenn at gethe',\n", + " 'thas horskr ok thogoll',\n", + " 'koemmr heimesgartha til',\n", + " 'sjaldan verthr vite vorom']},\n", + " 'data': ['deira dagar har mørkna',\n", + " 'moder jord meld sitt frafall',\n", + " 'men sverdet har gått vidare',\n", + " 'til ein ny bærar',\n", + " 'me er einsomme menn',\n", + " 'me bår fenresulvens muspell',\n", + " 'skoll skal sluka sola',\n", + " 'me er djerve menn',\n", + " 'sola svartner',\n", + " 'der fjellvegg ramlar',\n", + " 'nå gjestar sorgen',\n", + " 'på livets tre (yggdrasil)',\n", + " 'for byleits bror farar',\n", + " 'kva er det ikkje kampfar klaren?',\n", + " '(english translation:)',\n", + " '(red and black)',\n", + " 'the days have darkened',\n", + " 'mother earth announces her death',\n", + " 'while the sword has moved on',\n", + " 'to a new bearer',\n", + " 'we are lonesome men',\n", + " 'we bear the wolf-fenris muspell',\n", + " 'skoll shall swallow the sun',\n", + " 'we are brave men',\n", + " 'sun blackens',\n", + " \"where mountain's walls collapse\",\n", + " 'now guest the sorrow',\n", + " \"on the life's tree (yggdrasill)\",\n", + " \"for byleit's brother travels\",\n", + " \"what is it that the warfather can't do?\",\n", + " '(tekst: r. kronheim, grutle kjellson, dirge rep)',\n", + " 'utgards mèrke, langt der ute',\n", + " 'eg kjem ikkje inn, eit offer du krev?',\n", + " 'eit offfer eg krev, ingen lovnad eg gjen',\n", + " 'eg kan gje deg styrke, eg kan gje deg dauden',\n", + " 'de seier du kan ta meg av dage',\n", + " 'du seier du kan ta meg av dage',\n", + " 'men utan meg er heller ikkje du',\n", + " 'skapar av svakhet, meg kan du ikkje truga',\n", + " 'l¦r deg ¥ sj¥ med det retta auga',\n", + " 'du dunkle, du freistar ¥ f¥ meg i knt',\n", + " 'du taler i g¥ter, og f¥r meg vred',\n", + " 'med vrede, du veike, du ingenting f¥r',\n", + " 'din visdom eg krev for at du skal forst¥',\n", + " 'du vil eg skal lida, og end¥ til dåy',\n", + " 'du glèymer mi makt, at du er min tr«ll',\n", + " 'ditt opphav du glèymer. du prisar bedrag',\n", + " 'di verd er ei faginning, ingen heilhet, ingen svar',\n", + " 'orden eg skaper, men du motstrebar meg',\n", + " 'du talar med klårt, kva er det du krev',\n", + " 'eg krev eit offer, eg krev at du blèr',\n", + " 'du v¥ga ¥ trosse dei eldste, som bar deg fram',\n", + " '\"utgards mèrke langt der ute, eit offer vart krevd',\n", + " 'eit offer dei fekk, eit sinn vart styrka, men',\n", + " 'lekam gjekk tapt, klok vert den som veit ¥ v¥ga\"',\n", + " '\"han ofra sitt auge, for at fjan skulle sj¥',\n", + " 'han blèdde for dei som til slutt lot han r¥',\n", + " 'men ingen lovnad ei ga ham, det vart ingen fred',\n", + " 'dei skal fframleis kjempa, til jorda sig ned\"',\n", + " '(musikk: grutle kjellson)',\n", + " '(english translation: an eye for mimir)',\n", + " 'the darkness of utgard, far out there',\n", + " 'i can not enter, are you demanding sacrifce sacrifice??',\n", + " 'i demand a sacrifice, no promise i will give',\n", + " 'i can provide you with strenght strength?, i can give you death',\n", + " 'you say you can end my days',\n", + " 'but without my excistance existence?, would you not be',\n", + " 'creator of weakness, me you can not threaten',\n", + " 'learn how to see with the right eye',\n", + " 'obscure one, you attemp to get me on my knees',\n", + " 'you speak through riddles, and call forth my wrath',\n", + " 'with wrath, weakling, nothing is achieved',\n", + " 'i demand your wisdom, to make you understand',\n", + " 'you want me to suffer, and even to die',\n", + " 'you are forgetting my power, you are but my slave',\n", + " \"your source of origin you're forgetting, your praising deceit\",\n", + " 'your world is an illusion; no wholeness, no answer',\n", + " 'order i crfeate, but your opposing me',\n", + " 'your speaking with a cunning tongue, what are your demands',\n", + " 'i am demanding a sacrifice, i demand to see you bleed',\n", + " 'you have dared to oppose the ancient ones that brought you into excistance',\n", + " 'existence?',\n", + " 'the darkness of utgard, a sacrifice was demanded, a sacrifice they received',\n", + " 'a mind was strengthened, but the flesh was lost',\n", + " 'he who dares becomes wise',\n", + " '\"he gave his eye to see',\n", + " 'he bled for those who let him rule at last',\n", + " 'but no promises they gave him, no peace became',\n", + " 'they shall still be fighting \\'til the earth sinks\"',\n", + " '(music: grutle kjellson)',\n", + " 'one two three',\n", + " 'blackabilly me',\n", + " 'four five six',\n", + " 'burning kicks',\n", + " 'seven eight nine',\n", + " 'i want mine',\n", + " 'ten to one',\n", + " \"let's get it on\",\n", + " 'rockabilly mockabilly',\n", + " \"blackabilly burnin'\",\n", + " 'fuckabilly muckabilly',\n", + " \"whackabilly churnin'\",\n", + " 'cockabilly kickabilly',\n", + " \"trickabilly streamin'\",\n", + " 'ticabilly tocabilly',\n", + " \"clockabilly screamin'\",\n", + " 'me gav ljod til striden',\n", + " 'for å syne kva fred var',\n", + " 'no hev kampen breidt seg',\n", + " 'støyen vorte sann',\n", + " 'ein tvo tri',\n", + " 'det er tidi',\n", + " 'fire fem seks',\n", + " 'ta meg heks',\n", + " 'sju åtte ni',\n", + " 'i svinesti',\n", + " 'ti elleve tolv',\n", + " 'men utan vold',\n", + " 'blackabilly blackabully',\n", + " \"blackabuddy loomin'\",\n", + " 'blackabody blackaboarding',\n", + " \"blackaballing boomin'\",\n", + " 'blackafuzzing blackabuzzing',\n", + " \"blackajazzing freezin'\",\n", + " 'blackamunchy blackacrunchy',\n", + " \"blackawhacky wheezin'\",\n", + " 'me spelar svart metall',\n", + " 'men lèt ingen smaka stål',\n", + " 'me gjev all makt til klangen',\n", + " 'men spiller ikkje blod',\n", + " 'difor ser me attende',\n", + " 'mot uskulds fornalder',\n", + " 'då stridslyst styrde alt',\n", + " 'men ingen døydde i kamp',\n", + " 'chilihead chilihead',\n", + " 'hey chilihead',\n", + " 'why choose autumn',\n", + " 'when spring is an option?',\n", + " 'heacy head heavy head',\n", + " 'hey heavy head',\n", + " \"here's a chili bomb\",\n", + " 'for your blackabilly self',\n", + " 'rockabilly mockabilly',\n", + " 'blackabilly king',\n", + " 'fuckabilly muckabilly',\n", + " 'whackabilly king',\n", + " 'chilihead chilihead',\n", + " 'hey chilihead',\n", + " 'cheer up with colours',\n", + " 'red hot fur',\n", + " 'beerhead beerhead',\n", + " 'blackabilly king',\n", + " 'but if you pray',\n", + " 'winter will come',\n", + " 'rockabilly mockabilly',\n", + " 'blackabilly voguesville',\n", + " 'fuckabilly muckabilly',\n", + " 'whackabilly voguesville',\n", + " 'upp i otta må han rise',\n", + " 'som rikdom vil taka',\n", + " 'upp for sine meiningar',\n", + " 'slik må skalden stande',\n", + " 'til deg som vil i ljodkrig',\n", + " 'lat nåden liggje heime',\n", + " 'gakk berserk på valen',\n", + " 'so kvart steg vert ein siger',\n", + " 'me spelar for å vinne',\n", + " 'i strid med solarljod',\n", + " 'me spelar svart metall',\n", + " 'men spiller ikkje blod',\n", + " 'paroles de la chanson words and ideas :',\n", + " 'one two three',\n", + " 'blackabilly me',\n", + " 'four five six',\n", + " 'burning kicks',\n", + " 'seven eight nine',\n", + " 'i want mine',\n", + " 'ten to one',\n", + " \"let's get it on\",\n", + " 'rockabilly mockabilly',\n", + " \"blackabilly burnin'\",\n", + " 'fuckabilly muckabilly',\n", + " \"whackabilly churnin'\",\n", + " 'cockabilly kickabilly',\n", + " \"trickabilly streamin'\",\n", + " 'ticabilly tocabilly',\n", + " \"clockabilly screamin'\",\n", + " 'me gav ljod til striden',\n", + " 'for å syne kva fred var',\n", + " 'no hev kampen breidt seg',\n", + " 'støyen vorte sann',\n", + " 'ein tvo tri',\n", + " 'det er tidi',\n", + " 'fire fem seks',\n", + " 'ta meg heks',\n", + " 'sju åtte ni',\n", + " 'i svinesti',\n", + " 'ti elleve tolv',\n", + " 'men utan vold',\n", + " 'blackabilly blackabully',\n", + " \"blackabuddy loomin'\",\n", + " 'blackabody blackaboarding',\n", + " \"blackaballing boomin'\",\n", + " 'blackafuzzing blackabuzzing',\n", + " \"blackajazzing freezin'\",\n", + " 'blackamunchy blackacrunchy',\n", + " \"blackawhacky wheezin'\",\n", + " 'me spelar svart metall',\n", + " 'men lèt ingen smaka stål',\n", + " 'me gjev all makt til klangen',\n", + " 'men spiller ikkje blod',\n", + " 'difor ser me attende',\n", + " 'mot uskulds fornalder',\n", + " 'då stridslyst styrde alt',\n", + " 'men ingen døydde i kamp',\n", + " 'chilihead chilihead',\n", + " 'hey chilihead',\n", + " 'why choose autumn',\n", + " 'when spring is an option?',\n", + " 'heacy head heavy head',\n", + " 'hey heavy head',\n", + " \"here's a chili bomb\",\n", + " 'for your blackabilly self',\n", + " 'rockabilly mockabilly',\n", + " 'blackabilly king',\n", + " 'fuckabilly muckabilly',\n", + " 'whackabilly king',\n", + " 'chilihead chilihead',\n", + " 'hey chilihead',\n", + " 'cheer up with colours',\n", + " 'red hot fur',\n", + " 'beerhead beerhead',\n", + " 'blackabilly king',\n", + " 'but if you pray',\n", + " 'winter will come',\n", + " 'rockabilly mockabilly',\n", + " 'blackabilly voguesville',\n", + " 'fuckabilly muckabilly',\n", + " 'whackabilly voguesville',\n", + " 'upp i otta må han rise',\n", + " 'som rikdom vil taka',\n", + " 'upp for sine meiningar',\n", + " 'slik må skalden stande',\n", + " 'til deg som vil i ljodkrig',\n", + " 'lat nåden liggje heime',\n", + " 'gakk berserk på valen',\n", + " 'so kvart steg vert ein siger',\n", + " 'me spelar for å vinne',\n", + " 'i strid med solarljod',\n", + " 'me spelar svart metall',\n", + " 'men spiller ikkje blod']}}},\n", + " 'pl': {'sentence': {'pop': {'meta': {'train_data': ['love is bad my son',\n", + " 'love is bad my son',\n", + " 'for your eager eager eager eager heart',\n", + " 'your bigger eager eager eager heart',\n", + " 'get yourself a gun',\n", + " 'get yourself a gun',\n", + " 'shoot your',\n", + " 'eager eager eager eager heart',\n", + " 'your bigger eager eager eager heart',\n", + " 'zmądrychwstanie racz mi dać panie',\n", + " 'myślobranie nie w moim stanie',\n", + " 'i was raised by songs',\n", + " 'i was raised by songs',\n", + " 'in a little little little little place',\n", + " 'a little little little little place',\n", + " 'you were growing tall',\n", + " 'to 163 or 4',\n", + " \"till i've run run run out of space\",\n", + " 'i run run run out of space',\n", + " 'echo calls your name',\n", + " 'but life stays just the same',\n", + " 'life stays just the same',\n", + " 'słów składanie niedoczekanie',\n", + " 'zmądrychwstanie racz mi dać panie',\n", + " 'myślobranie nie w moim stanie',\n", + " 'zdań igranie spisz na kolanie',\n", + " 'i was raised by songs',\n", + " 'i was raised by songs',\n", + " \"'cause my father he would rather\",\n", + " 'rather have a son',\n", + " 'słów składanie niedoczekanie',\n", + " 'zmądrychwstanie racz mi dać panie',\n", + " 'myślobranie nie w moim stanie',\n", + " 'zdań igranie spisz na kolanie',\n", + " 'górniczo-hutnicza orkiestra dęta robi nam paparara',\n", + " 'robi nam paparara',\n", + " 'to robi nam górniczo-hutnicza orkiestra dęta',\n", + " 'robi nam pararara, robi nam paparara',\n", + " 'robi nam górniczo-hutnicza orkiestra dęta',\n", + " 'robi nam paparara, robi nam paparara',\n", + " 'a co na to nato?!',\n", + " 'nato na to nic! (x3)',\n", + " 'a co na to nato?!',\n", + " 'nato robi nam, robi nam, robi paparara, robi nam paparara',\n", + " 'robi nam górniczo-hutnicza orkiestra dęta',\n", + " 'robi nam paparara, robi nam paparara',\n", + " 'robi nam górniczo-hutnicza orkiestra dęta',\n", + " 'uważaj na zakrętach, nie pal tego skręta',\n", + " 'paparara',\n", + " 'robi nam paparara',\n", + " 'robi nam górniczo-hutnicza orkiestra dęta',\n", + " 'robi nam paparara, robi nam paparara',\n", + " 'a co na to nato?!',\n", + " 'nato na to nic! (x3)',\n", + " 'a co na to nato?!',\n", + " 'nato robi nam, robi nam, robi paparara, robi nam paparara',\n", + " 'you know the opases',\n", + " 'uważaj na wilki man',\n", + " 'you know the opases',\n", + " 'uważaj na wilki man',\n", + " 'you know the opases',\n", + " 'uważaj na wilki man',\n", + " 'you know the opases',\n", + " 'uważaj na wilki man',\n", + " 'robi nam paparara, robi nam paparara',\n", + " 'to robi nam górniczo hutnicza orkiestra dęta',\n", + " 'robi nam paparara, robi nam paparara',\n", + " 'to robi nam górniczo hutnicza orkiestra dęta',\n", + " 'robi nam paparara, robi nam paparara',\n", + " 'to robi nam górniczo hutnicza orkiestra dęta',\n", + " 'uważaj na zakrętach, nie pal tego skręta',\n", + " 'robi nam paparara, robi nam paparara',\n", + " 'to robi nam górniczo hutnicza orkiestra dęta',\n", + " 'robi nam paparara',\n", + " 'robi nam paparara',\n", + " '...',\n", + " 'boże odlatujący w obce dla nas strony',\n", + " 'powstrzymaj odlot swój',\n", + " 'i tul z płaczem do piersi ten wiecznie krzywdzony',\n", + " 'wierzący w ciebie gnój',\n", + " '(b. leśmian , do siostry)',\n", + " 'ashes',\n", + " 'scissors, stones',\n", + " 'blind children playing god',\n", + " 'unnamed species',\n", + " 'broken clock',\n", + " 'wounded soldiers on their way back home',\n", + " 'piece of heaven',\n", + " 'remembrances',\n", + " 'sweat and tears',\n", + " 'poisoned wine',\n", + " 'bitter honey',\n", + " 'second bottom of every dream',\n", + " 'half-dead prophets',\n", + " 'leper whores',\n", + " 'some old clothes of dethroned kings',\n", + " 'mene - tekel - fares',\n", + " 'i dance on the ashes of jerusalem',\n", + " 'mene - tekel - fares',\n", + " 'i weep on the ashes of jerusalem',\n", + " '\"deszcz\"',\n", + " 'zamiast srogiej burzy, slychac suchy grzmot',\n", + " 'taki glosny, taki suchy',\n", + " 'zamiast kropli deszczu scieram lepki pot',\n", + " 'taki lepki, zlem smierdzacy',\n", + " 'hej zwatpienia czas',\n", + " 'hej, powolnej smierci',\n", + " 'hej, scisnietych serc',\n", + " 'hej, spekanych ust',\n", + " 'nad glowa czarne chmury, pod nogami wypalony piach',\n", + " 'juz umilkl ptaków spiew, serca im wypalil zar',\n", + " 'przedramie nozem tne, krew z plowcina mieszam',\n", + " 'siec pajecza wciskam i moczem swym oblewam',\n", + " 'piescia niebu groze, w trucizne plyn zamieniam',\n", + " 'w twarz sie bogu smieje i czekam na deszcz',\n", + " 'english version:',\n", + " '\"the rain\"',\n", + " 'instead of a fierce storm, you hear a dry thunder',\n", + " 'so loud, so dry',\n", + " 'instead of a drop of rain, i wipe my clammy sweat',\n", + " 'so clammy, stinking to the evil',\n", + " 'hey, to the time of doubt',\n", + " 'hey, to slow death',\n", + " 'hey, to sinking hearts',\n", + " 'hey, to cracked lips',\n", + " 'black clouds above, burnt dirt underneath',\n", + " 'bird songs went quiet, embers burned their hearts',\n", + " 'i cut the forearms with a knife, i mix blood with declination',\n", + " 'i squeeze spider’s nest and i pour my piss on it',\n", + " 'i threaten heaven, i change liquid into poison',\n", + " 'i laugh in god’s face and wait for the rain',\n", + " \"i don't think it would be right\",\n", + " 'to call you the one and only',\n", + " 'i had many lovers before',\n", + " 'i might even have loved them more',\n", + " \"i don't think it would be right\",\n", + " 'to call you the one and only',\n", + " 'i cannot tell yet',\n", + " 'coz we have never met',\n", + " \"i don't think it would be right\",\n", + " 'to call you the one and only',\n", + " \"i don't think it would be right\",\n", + " 'to call you the one and only',\n", + " 'all i know is that you might be',\n", + " \"the reason why i'm lonely\",\n", + " \"i don't think it would be right\",\n", + " 'to call you the one and only',\n", + " \"i don't think it would be right\",\n", + " 'to call you the one and only',\n", + " 'i cannot tell yet',\n", + " 'coz we have never met',\n", + " \"i don't think it would be right\",\n", + " 'to call you the one and only',\n", + " 'all i know is that you might be',\n", + " \"the reason why i'm lonely\",\n", + " 'polish part :',\n", + " 'nie jestem pewien',\n", + " 'że to tylko ty jesteś moją jedyną',\n", + " 'miałem przecież dużo innych przed tobą',\n", + " 'i czasami wydaje mi się, że kocham je więcej niż ciebie',\n", + " 'nie jestem pewien',\n", + " 'że to tylko ty jesteś moją jedyną',\n", + " 'ja jeszcze nie znam prawdy',\n", + " 'przecież cię nie znam',\n", + " 'jeszcze cię nie widziałem',\n", + " 'nie jestem pewien',\n", + " 'że to tylko ty jesteś moją jedyną',\n", + " 'wszystko, co teraz chciałbym ci powiedzieć',\n", + " 'to jest to',\n", + " 'że najprawdopodobniej przez ciebie jestem',\n", + " 'samotny',\n", + " 'choć łączy nas wiele tak',\n", + " 'znów czuje chłód',\n", + " 'wciąż brak mi twego głosu',\n", + " 'szczerości słów',\n", + " 'choć wiatr celuje w oczy',\n", + " 'okrada ze snów',\n", + " 'nie odwracaj wzroku',\n", + " 'nim odnajdziesz mnie',\n", + " 'nim odnajdziemy się',\n", + " 'w każdą noc, w każdy dzień',\n", + " 'brak mi tchu, kiedy nie ma cię',\n", + " 'w każdą noc, w każdy dzień',\n", + " 'brak mi tchu, kiedy nie ma cię',\n", + " 'tak blisko mnie, tak blisko mnie, tak blisko mnie',\n", + " 'mnie, mnie, mnie',\n", + " 'w każdą noc, w każdy dzień',\n", + " 'zostań tu, nie oddalaj się',\n", + " 'bez obaw i świadków',\n", + " 'pobiegnijmy w deszcz',\n", + " 'zatańczmy na palcach',\n", + " 'niezdarnie chwiejąc się',\n", + " 'dłonie mam spokojne',\n", + " 'i choć czuje chłód',\n", + " 'zaczekam na ciebie',\n", + " 'aż odnajdziesz mnie',\n", + " 'aż odnajdziemy się',\n", + " 'when all the doors are closing',\n", + " 'when every promise is gone',\n", + " \"it's easy to be hiding\",\n", + " \"but ain't where i belong\",\n", + " 'no need to sugarcoat it',\n", + " 'they say bad habits die hard',\n", + " 'gotta dare to pull the trigger',\n", + " 'put your heart to the stars',\n", + " 'oh boy you better run now',\n", + " 'do boy you better run today',\n", + " \"fuck it start callin' the shots\",\n", + " 'and leave the haters to hate',\n", + " 'we got a million readers',\n", + " 'we got a million rhymes',\n", + " 'yeah we were made for loving',\n", + " 'and freedom is on our side',\n", + " 'its time that we live it up, its time we see the sky',\n", + " \"together we'll keep on tripping\",\n", + " 'to high to ever come down',\n", + " 'it time that we live it up',\n", + " 'its time that we see the sky',\n", + " 'together we keep on tripping',\n", + " 'to high to ever come down',\n", + " 'deano lying on the rainbow',\n", + " 'flying higher',\n", + " 'come to the woods and',\n", + " 'stay with us there',\n", + " 'and nothing in this world',\n", + " 'could make any change',\n", + " 'deano lying on the rainbow',\n", + " 'flying higher',\n", + " 'przyśnił mi się stary pokój',\n", + " 'różowe ściany obfite w motyle',\n", + " 'przy suficie samoloty',\n", + " 'którymi planowałam podróże',\n", + " 'na wszystkie wyspy świata',\n", + " 'mamo, weź mnie na plac zabaw',\n", + " 'young man and the young woman',\n", + " 'wszyscy ci co słuchają chucka mangione',\n", + " 'which way which hole which go',\n", + " 'everyone must spierdalać stąd',\n", + " 'young man and the young woman',\n", + " 'wszyscy ci co słuchają erica claptona',\n", + " 'which way which go which hole',\n", + " 'everyone must spierdalać stąd',\n", + " 'all the (other?) people you know what i mean',\n", + " 'spierdalać, spierdalać',\n", + " 'all the people you know',\n", + " 'young man and the young woman',\n", + " 'wszyscy ci co słuchają marylina mansona',\n", + " 'which way which hole which go',\n", + " 'everyone must spierdalać stąd',\n", + " 'i ten chłopak młody i ta młoda dziewczyna',\n", + " 'co tam nago sobie leżą w trzcinach',\n", + " 'spierdalać, spierdalać',\n", + " 'other people you know',\n", + " 'spierdalać, spierdalać other people',\n", + " 'spierdalać spierdalać, other people',\n", + " 'nooow',\n", + " 'spierdalać spierdalać, other people',\n", + " 'now',\n", + " 'haaaajlee si-leeesjaaa',\n", + " 'mais uma lua / another moon',\n", + " 'aqui, perto de nós, de mim ausente /here, close to us, absent to me',\n", + " 'a força do que fomos e de ser tua /the power of what we were and of being yours',\n", + " 'aqui adormeci, pesadamente, /here i slept, heavily',\n", + " 'caiu dentro de mim mais uma lua. /as ino me fell another moon',\n", + " 'e foram, como sempre, as minhas penas /my sorrows, were there as always',\n", + " \"ou foi a solidão de quem se prende /or was it the solitude of one who's held\",\n", + " 'a querer saber de nós, horas amenas /in the wish to know us, pleasant times',\n", + " \"e tudo o que a minh'alma não entende. /and all my soul does not understand\",\n", + " 'e aqui o que foi nosso vai morrendo, /and here what was ours is dying',\n", + " 'de amor falam as dores da beira fim. /of love the sorrows speak almost ended',\n", + " \"desculpa, meu amor, se te não prendo /pardon me, my love, if i don't hold you\",\n", + " 'mas vivo muito bem dentro de mim. /but live perfectly well within myself',\n", + " 'to tutaj blisko nas, tak mi brakuje',\n", + " 'siły, którą byliśmy i bycie dla ciebie',\n", + " 'to tutaj, śpię uśpiona snem swym ciężkim',\n", + " 'aż spada do mnie całkiem inny księżyc',\n", + " 'to tutaj, śpię uśpiona snem swym ciężkim',\n", + " 'aż spada do mnie całkiem inny księżyc',\n", + " 'i były tam, jak zawsze, moje zmartwienia',\n", + " 'a może to samotność, tego, kto ją trzymał',\n", + " 'chcą poznać nas, gdy czasy dogodniejsze',\n", + " 'i dusza ma wszystkiego nie rozumie',\n", + " 'chcą poznać nas, gdy czasy dogodniejsze',\n", + " 'i dusza ma wszystkiego nie rozumie',\n", + " 'i to, co tu było nasze - to zanika',\n", + " 'o miłości, mówią smutki prawie skończone',\n", + " 'ach wybacz miły mój, że cię nie trzymam',\n", + " 'lecz ty żyj sobie we mnie doskonale',\n", + " 'ach wybacz miły mój, że cię nie trzymam',\n", + " 'lecz ty żyj sobie we mnie doskonale',\n", + " 'ach wybacz miły mój, że cię nie trzymam',\n", + " 'lecz ty żyj sobie we mnie doskonale',\n", + " 'ach wybacz miły mój, że cię nie trzymam',\n", + " 'lecz ty żyj sobie we mnie doskonale',\n", + " 'to nie ja zabijam siebie, to nie ty zabijasz ciebie',\n", + " 'to ten świat zabija nas, już od lat - la lalala la',\n", + " 'how do you feel, a-how do you feel',\n", + " 'mister pedofeel',\n", + " 'czy to ja, czy to ty, czy to ja to, czy to ty ?',\n", + " '(pablopavo)',\n", + " 'a słuchaj mnie ja mówie tobie wolny styl nadaje pablopavo, yes!',\n", + " 'sidney polak połączył się z moją sprawą tutaj jest kawą która mnie stawia teraz tak na nogi ya bwoy! sidney polak jest błogi...',\n", + " 'ja mówie tobie man ja mówię tobie teraz tutaj man',\n", + " 'teraz sidney polak staje u twoich bram - bam, bam',\n", + " 'otwiera teraz tutaj cały ten kram',\n", + " 'gra dla ciebie tutaj zjednoczenie sound system',\n", + " '(reggaenerator)',\n", + " 'what mi said mi dreamin about my jamaican hollyday',\n", + " 'after sunday party is going beauty monday',\n", + " 'is a must mek a chillout with da ganja on the beach',\n", + " 'even when you have no money even when you not a rich',\n", + " 'well - i think da money is a not a problem',\n", + " 'when you meet a beauty gals you must comin falla dem',\n", + " 'i know jamaican uman is a not a femme fatal',\n", + " 'is a very nice to feel hungry look ova dem gal',\n", + " 'one - two - three second and whattai see',\n", + " 'black beauty uman is comin to me',\n", + " 'now i feel so cool and breake all mi a shame',\n", + " 'hi!!! sweety kitty please tell me your name',\n", + " 'i was born a sufferer',\n", + " 'a tree cut from its root',\n", + " 'it was not very long ago',\n", + " 'since i and i found the truth',\n", + " 'i was washed away from sin',\n", + " 'taken to their christening',\n", + " 'never knew the meaning',\n", + " 'till i and i get a revealing',\n", + " 'you‘ve gotta crawl before your walk',\n", + " 'walk before you run',\n", + " 'and if you run and get a fall',\n", + " 'just get up and brush it off',\n", + " 'tyle trudnych pytań i dróg',\n", + " 'by móc odnaleźć klucz',\n", + " 'do pełnej świadomości której nie zastanę już',\n", + " 'rosnącej w siłę represji',\n", + " 'wprowadzającej nas w stan awersji',\n", + " 'nie pozwól światu by mógł',\n", + " 'mieć coś do ukrycia',\n", + " 'pamiętaj każdy błąd prowadzi do prawdy',\n", + " 'a prawda zawsze jest źrenicą życia',\n", + " 'they say',\n", + " 'you‘ve gotta crawl before your walk',\n", + " 'walk before you run',\n", + " 'and if you run and get a fall',\n", + " 'just get up and brush it off (x4)',\n", + " 'elvis presley sing this song',\n", + " 'put some śmieci to the hasiok',\n", + " 'elvis presley sing this song',\n", + " 'put some śmieci to the hasiok',\n", + " 'elvis presley sing this song',\n", + " 'put some śmieci to the hasiok',\n", + " 'elvis presley sing this song',\n", + " 'put some śmieci to the hasiok',\n", + " 'elvis presley sing this song',\n", + " 'put some śmieci to the hasiok',\n", + " 'elvis presley sing this song',\n", + " 'put some śmieci to the hasiok',\n", + " 'elvis presley sing this song',\n", + " 'put some śmieci to the hasiok',\n", + " 'elvis presley sing this song',\n", + " 'put some śmieci to the hasiok x2',\n", + " 'nigdy nie, nigdy nie, nigdy nie wiesz dokąd',\n", + " 'nigdy nie, nigdy nie, nigdy nie wiesz dokąd',\n", + " 'nigdy nie, nigdy nie, nigdy nie wiesz dokąd',\n", + " 'nigdy nie, nigdy nie, nigdy nie wiesz dokąd',\n", + " 'żył sobie chłopczyk',\n", + " 'wierny dziewczynce',\n", + " 'i z tą wiernością',\n", + " 'radość w skrzynce',\n", + " 'jak każdy wie',\n", + " 'to miłość płonie',\n", + " 'a drewniana skrzynka nie sprawdziła się',\n", + " 'na przód ten marsz',\n", + " 'tak się bronią',\n", + " 'i dawno sprawdzona dłoń z dłonią',\n", + " 'na przód do dna',\n", + " 'gdzie smutek już nie ma',\n", + " 'gdzie jedyną prawdą',\n", + " 'jest on i ona',\n", + " 'there was a boy',\n", + " 'and there was a girl',\n", + " 'and if they could',\n", + " 'they would leave this world they',\n", + " 'tried a lot to give it a shot',\n", + " 'and so one day they flew',\n", + " 'watch them now',\n", + " 'walk hand in hand',\n", + " 'they managed somehow',\n", + " 'their own promised land',\n", + " 'maleńka, słuchaj, to kolejny tune dla ciebie',\n", + " 'o tym, co nas łączy i co czuję, nikt nie wie',\n", + " 'bywa tak, że jestem czasem zbyt pewny siebie',\n", + " 'bo przecież w każdej duszy podstępny diabeł drzemie',\n", + " 'i znów świat się zmienia i nic do stracenia',\n", + " 'jeśli postawisz kolejny krok',\n", + " 'to czas przebudzenia, zmiana pola widzenia',\n", + " 'już nie wypuszczę szczęścia z rąk posłuchaj mnie',\n", + " 'sometimes i know how beautiful is my soul',\n", + " 'please open the door than my heart will be only your',\n", + " 'throw away your every little fear',\n", + " 'i wanna see on your face joyfull tears',\n", + " 'and just remember baby girl this love is real, this love is real',\n", + " 'a ja podążam pustymi ulicami',\n", + " 'szukam ludzi, którzy są z tematem obeznani tak, jak ja',\n", + " 'kto nie zna miłości, a z niej się śmieję',\n", + " 'popada w beznadzieje, ja z góry na to leję, ta!',\n", + " 'ta siła, którą mam, ta siła, którą znam',\n", + " 'każdego dnia daje motywacje',\n", + " 'ta siła, którą mam, ta siła, którą znam',\n", + " 'daje mi z życia satysfakcje',\n", + " 'sometimes i know how beautiful is my soul',\n", + " 'please open the door than my heart will be only your',\n", + " 'throw away your every little fear',\n", + " 'i wanna see on your face joyfull tears',\n", + " 'and just remember baby girl this love is real, this love is real',\n", + " 'we was meant to love one another',\n", + " 'no matter what your color',\n", + " \"'cause we are all one\",\n", + " 'you must start to looking at yourself',\n", + " 'and you will see the beauty of your soul',\n", + " 'let your soul take control, let it lose your mind',\n", + " 'you know how to show that the god meant take control',\n", + " 'sometimes i know how beautiful is my soul',\n", + " 'please open the door than my heart will be only your',\n", + " 'throw away your every little fear',\n", + " 'i wanna see on your face joyfull tears',\n", + " 'and just remember baby girl this love is real, this love is real',\n", + " '\"wiatr\"',\n", + " 'znam te szara cisze, co noc poprzedza dluga',\n", + " 'znam ten szum za oknem, co mysli ciagle miesza',\n", + " 'wiem, ze juz za chwile pieklo w glowie mi otworzy',\n", + " 'wiem, ze siarka oddech czuc, popielny wiatr wypluwal',\n", + " 'popielny wiatr wieje, wieje',\n", + " 'popielny wiatr wieje, co imie zetrze me ze skal',\n", + " 'wiem, ze juz nie zasne',\n", + " 'boje sie otworzyc oczy',\n", + " 'serce bije rytmem',\n", + " 'wybijanym w okiennicach',\n", + " 'i dobrze wiem, ze tu przychodzisz',\n", + " 'bo wiesz, ze skowyt twój rozumiem',\n", + " 'i slucham twych slów skrzywionych',\n", + " 'co krzywa droga mnie prowadza',\n", + " 'popielny wiatr...',\n", + " 'a pieklo wciaz plonie',\n", + " 'i zarem swym bucha',\n", + " 'plonie i plonie',\n", + " 'popiolem lka',\n", + " 'popielny wiatr',\n", + " 'popielny wiatr',\n", + " 'plonie i plonie',\n", + " 'popiolem lka',\n", + " 'a pieklo wciaz plonie',\n", + " 'i zarem swym bucha',\n", + " 'plonie i plonie',\n", + " 'popiolem lka',\n", + " 'popielny wiatr',\n", + " 'plonie i plonie',\n", + " 'popiolem sra',\n", + " 'i krzywym okiem patrze krzywo',\n", + " 'na usmiechy krzywych twarzy',\n", + " 'i pluje krwia z mych czarnych pluc',\n", + " 'rzygam slów popiolem',\n", + " 'krzywa droga wciaz podazam',\n", + " 'tylko taka znam',\n", + " 'popiól czuje w ustach. ogien lykam w slinie',\n", + " 'patrze w pusta sciane, by imie swe przypomniec',\n", + " 'widze cienie startych slów, z niczym nie kojarze',\n", + " 'i tylko wiem, ze zyje, bo boli...',\n", + " 'english version:',\n", + " '\"the wind\"',\n", + " 'i know this grey silence that precedes a long night',\n", + " 'i know that in a moment it opens a hell in my head',\n", + " 'i know that the breath smells to sulphur, the ash-wind was spitting out',\n", + " 'the ash wind blows, it will erase my name from the rocks',\n", + " 'i know i will not fall asleep',\n", + " 'i fear to open my eyes',\n", + " 'the heart beats to the rhythm',\n", + " 'made by the shutters',\n", + " 'i know it well, you come in here',\n", + " 'because you know, i understand your howl',\n", + " 'and i listen to your twisted words',\n", + " 'that leads me the bad way',\n", + " 'the ash wind',\n", + " 'and the hell still burns',\n", + " 'and burst with its heat',\n", + " 'it burns and burns',\n", + " 'gulping ashes',\n", + " 'the ash wind',\n", + " 'the ash wind',\n", + " 'it burns and burns',\n", + " 'gulping ashes',\n", + " 'the ashy wind',\n", + " 'burns and burns',\n", + " 'it shits ash',\n", + " 'and with a turned eye i look wrong',\n", + " 'at the smiles of crooked faces',\n", + " 'and i spit blood from my black lungs',\n", + " 'i vomit ash of words',\n", + " 'i still follow the wrong way',\n", + " 'that’s the only one i know',\n", + " 'i taste ash in my mouth, i swallow fire in my saliva',\n", + " 'i look at empty wall to recall my name',\n", + " 'i see the shadows of erased words, i don’t associate them with anything',\n", + " 'and i only know that i’m alive because it hurts....',\n", + " 'dusze się, brak mi tchu, płonę tu!',\n", + " 'dusze się, brak mi tchu, płonę tu!',\n", + " 'ogłaszam wszem i wobec stan gotowości',\n", + " 'tylko teraz możesz zmienić bieg historii',\n", + " 'już czas powstrzymać koniec',\n", + " 'koniec tego świata',\n", + " 'przerwać ten proces',\n", + " 'zaćmienie uczuć, letarg w nas',\n", + " 'wzywam was!',\n", + " 'tu i teraz!',\n", + " 'huragan!',\n", + " 'zaprawdę powiadam wam',\n", + " 'wierzcie mi lub nie!',\n", + " 'nikt nas nie poprowadzi',\n", + " 'tylko nasze serca!',\n", + " 'pogrzebać histerię',\n", + " 'zatopić lęk, uśmierzyć ból',\n", + " 'ulokować naszą wiarę w nas!',\n", + " 'teraz!',\n", + " 'już czas powstrzymać koniec tego świata!',\n", + " \"suffocating, without air, i'm in flames!\",\n", + " \"suffocating, without air, i'm in flames!\",\n", + " 'i hereby announce the state of emergency',\n", + " 'only now you can alter history',\n", + " \"it's time to save this world\",\n", + " 'break the downward spiral',\n", + " 'abort the process',\n", + " 'of desensitization in us!',\n", + " 'come to me!',\n", + " 'here and now!',\n", + " 'hurricane!',\n", + " 'verily i say to you',\n", + " 'believe me or not',\n", + " 'no one will lead us',\n", + " 'apart from our hearts',\n", + " \"let's bury hysteria\",\n", + " \"let's drown the fear and numb the pain\",\n", + " 'and put our faith in ourselves!',\n", + " 'right now!',\n", + " \"it's time to abort the countdown to extinction!\",\n", + " 'ever homeward, ever homeward, yearns the weary rover',\n", + " \"ever homeward, ever homeward, till the journey's over\",\n", + " 'warm embraces and friendly faces, saying welcome home',\n", + " \"let me lie there 'neath the sky there, never more to roam\",\n", + " 'ever homeward, ever homeward, yearns the weary rover',\n", + " \"ever homeward, ever homeward, now the journey's over\",\n", + " 'wolne serce, lekką dusza, mam też dom mój blisko',\n", + " 'jak dzień spłynął rok, bo blisko jest już me ognisko',\n", + " 'choć już obce co tam będzie, serce do was płynie',\n", + " 'to jest dom mój, o nim śniłem, zawsze tam z oddali',\n", + " 'ever homeward, ever homeward, yearns the weary rover',\n", + " \"ever homeward, ever homeward, now the journey's over\",\n", + " 'dziś opowiem wam historię o kowboju',\n", + " 'który w prerii jadąc na rumaku swoim',\n", + " 'poczuł suchość w swoich ustach',\n", + " 'i miłości dawnej zew',\n", + " 'więc zatrzymał się na chwilę',\n", + " 'by kaktusa sobie zjeść',\n", + " 'i niestety kaktus trafił, co zupełnie inny jest',\n", + " 'a w pejotlu taka siła, że kowboja odmieniła',\n", + " 'rascynacji doznał światem psychodeli kowboj nasz',\n", + " 'nawet obraz który widzi jakiś inny teraz jest',\n", + " 'rzucił kolty, puscił konia, na gitarze zaczął grać',\n", + " 'ze swą marry gdzieś na ranczo do starości spokój mieć',\n", + " 'i co roku do kaktusa wrócić znów..',\n", + " 'english translation:',\n", + " \"today i'll tell you a story\",\n", + " 'of a cowboy riding his horse through a prairie',\n", + " 'who felt dryness in his mouth',\n", + " 'and the calling of a long gone love',\n", + " 'so he stopped for a moment to eat a cactus',\n", + " 'but, alas, he found a cactus that is completely different',\n", + " \"and in peyote there's such a power that it changed the cowboy\",\n", + " 'our cowboy felt fascinated by the world of psychedelia',\n", + " 'even the image he is seeing is somewhat different now',\n", + " 'he threw away his colts, let his horse go, started playing his guitar',\n", + " 'to have peace on a ranch with his mary until they are old',\n", + " 'and to return to the cactus every year',\n", + " 'mother of my dreams',\n", + " 'follow the winds of thy heart',\n", + " 'and reach the shore of passion',\n", + " 'mother of my sins',\n", + " 'follow the stream of thy blood',\n", + " 'and be the lord of yours desires',\n", + " 'mother of my dreams',\n", + " 'follow the vibes of thy body',\n", + " 'and ignore your thoughts',\n", + " 'mother of my sins',\n", + " 'follow the weaves of thy soul',\n", + " 'and live your life without a fear',\n", + " 'przyzwol, o matko milosci',\n", + " 'szerafko trosk i radosci!',\n", + " 'tak po swiecie niechaj wszedzie',\n", + " 'twoja wladza wieczna bedzie!',\n", + " 'wrong side of the street',\n", + " \"wanna dream but i can't sleep\",\n", + " 'wrong side of the street',\n", + " \"wanna cry but i can't speak\",\n", + " 'wrong side of the street',\n", + " 'gotta ride a losing streak',\n", + " 'wrong side of the street',\n", + " \"wanna dream but i can't sleep\",\n", + " 'wrong side of the street',\n", + " 'wrong side',\n", + " 'wrong side of the street',\n", + " \"wanna cry but i can't speak\",\n", + " 'wrong side of the street',\n", + " 'gotta ride a losing streak',\n", + " 'wrong side of the street',\n", + " \"wanna dream but i can't sleep\",\n", + " 'wrong side of the street',\n", + " 'wrong side',\n", + " 'nie boj sie, sprobuj jeszcze raz',\n", + " 'potykaz sie, znowu pecha masz',\n", + " 'byc moze nie masz szans',\n", + " 'kto to wie',\n", + " 'pamietaj jestem tu',\n", + " 'na zfe i dobre',\n", + " 'nie jestes sam, zaqofaj mnie ¹',\n", + " 'promete, jura/ promise, swear',\n", + " 'estás a pensar em mim, promete, jura /you are thinking of me, promise, swear',\n", + " 'se sentes como eu o vento a soluçar /if like me you feel in the sobbing of the wind',\n", + " 'as verdades mais certas mais impuras /truths more certain, more impure',\n", + " \"que as nossas bocas têm p'ra contar /that our lips have to tell\",\n", + " 'se sentes lá fora a chuva estremecida /if you fell the trembling rain out there',\n", + " 'como o desenlaçar duma aventura / as the inleashing of an adventure',\n", + " 'que pode ou não ficar por toda a vida /thar may or may not endure for life',\n", + " 'diz que sentes como eu, promete, jura /say you feel like me, promise, swear',\n", + " 'se sentes este fogo que te queima / if you feel this fire that burns you',\n", + " 'se sentes o meu corpo em tempestade /if you feel my body storming',\n", + " 'luta por mim amor, arrisca, teima /fight for me my love, risk, fear',\n", + " 'abraça este desejo que me invade /embrace this desire that invades me',\n", + " 'se sentes meu amor, o que eu não disse /if you feel my love, that what i have not said',\n", + " 'além de todo o mais do que disseste /is, above all, more than what you said',\n", + " 'é que não houve verso que eu sentisse /and in not one line of which i felt anything',\n", + " 'aquilo que eu te dei e tu me deste /of what i gave to you and you to me',\n", + " 'myślisz o mnie, obiecujesz, przysięgasz',\n", + " 'a jeśli czujesz, tak jak ja, że wiatr łka',\n", + " 'najbardziej pewne prawdy nie zawsze czyste',\n", + " 'i muszą się z tym liczyć nasze usta',\n", + " 'gdy czujesz, jak na zewnątrz wstrząsa deszczem',\n", + " 'i jak się ma rozpętać ta przygoda',\n", + " 'to może być lub nie na całe życie',\n", + " 'mówisz, czujesz jak ja, przysięgasz, ślubujesz',\n", + " 'gdy czujesz, jak ten ogień parzy, płonie',\n", + " 'gdy myślisz, że me ciało jest jak w sztormie',\n", + " 'a walka o mą miłość jest ryzykiem',\n", + " 'i to pragnienie, przytłacza mnie uściskiem',\n", + " 'gdy sądzisz, że ma miłość to już nie to',\n", + " 'tak poza wszystkim tym, co powiedziano',\n", + " 'to nie jest wcale wiersz, który ja czuję',\n", + " 'tamto, co ci dałam i ty mi również',\n", + " 'gdy czujesz, że na zewnątrz wstrząsa deszczem',\n", + " 'i jak się ma rozpętać ta przygoda',\n", + " 'to może być lub nie na całe życie',\n", + " 'mówisz, że czujesz jak ja, przysięgasz, ślubujesz',\n", + " 'we came from district laying very far from here',\n", + " \"so we don't understand these rules you gotta here\",\n", + " \"so i've had spoke him pope visiting you're at countryside\",\n", + " 'there is no city we can buy only bottle of wine',\n", + " 'nobody wanna sell anything that we want to drink',\n", + " \"that man i'm sure just leave, leaves no nothing\",\n", + " 'the prohibition made the gangsters like al capone',\n", + " 'did you see white morons just part of the twilight zone',\n", + " \"so we don't want no prohibition in a warsaw\",\n", + " \"so we don't want no prohibition in a cracow, eja!\",\n", + " \"so we don't want no prohibition in a stylee\",\n", + " 'ajri, ajri in a different stylee',\n", + " 'ajri, ajri in a different stylee',\n", + " 'ajri, ajri in a different stylee',\n", + " 'we came from lagos if you really wanna know, yes!',\n", + " 'not every pope is the reason to say no to us',\n", + " 'to drinking some or to drinking little some more',\n", + " 'i love girl with the legs like a betty ford',\n", + " 'to sell not drink during john paul visiting ya',\n", + " \"which motherfucker there's to brake this original law\",\n", + " 'me say me love in a different stylee',\n", + " 'babilons had met really, really thirsty',\n", + " \"so we don't want no prohibition in a warsaw\",\n", + " \"so we don't want no prohibition in a cracow\",\n", + " \"so we don't want no prohibition in a stylee\",\n", + " 'ajri, ajri in a different stylee',\n", + " \"so we don't want no prohibition in katowice\",\n", + " \"so we don't want no prohibition in gliwice\",\n", + " \"so we don't want no prohibition in a stylee\",\n", + " 'ajri, ajri in a different stylee',\n", + " 'ajri, ajri in a different stylee',\n", + " 'ajri, ajri in a different stylee',\n", + " 'ajri, ajri in a different, different stylee',\n", + " 'different, different stylee',\n", + " 'different, different stylee',\n", + " 'different, different stylee',\n", + " 'different, different stylee',\n", + " 'different, different stylee',\n", + " 'different, different stylee',\n", + " 'different, different stylee',\n", + " 'warszawscy radni to największa bandytierka',\n", + " 'każdy chciwie na publiczne pieniądze zerka',\n", + " 'jak tak patrzę to cyniczni i złośliwi',\n", + " 'głupi, pasożyty, insekter, nowotwór na organizmie żywym',\n", + " 'radny kradnie zasada jest taka',\n", + " 'synekura tego typu warta jest siusiaka',\n", + " 'lub pipuni wszelkiej maści złodziei na stołkach',\n", + " 'służba wasza temu miastu to kit na kółkach!',\n", + " 'nie chcemy żadnej prohibicji in a warsaw',\n", + " 'nie chcemy żadnej prohibicji in a cracow, eja',\n", + " 'nie chcemy żadnej prohibicji nawet w walii',\n", + " 'ajri, ajri in a different stylee!',\n", + " 'ajri, ajri in a different stylee!',\n", + " 'ajri, ajri in a different stylee!',\n", + " \"so we don't want no prohibition in a warsaw\",\n", + " \"so we don't want no prohibition in a cracow, eja!\",\n", + " \"so we don't want no prohibition in a stylee\",\n", + " 'ajri, ajri in a different stylee!',\n", + " 'ajri, ajri in a different stylee!',\n", + " 'ajri, ajri in a different stylee!',\n", + " 'ajri, ajri...',\n", + " 'radni warszawy to zupełna bandytierka',\n", + " 'mówię, co tu można by zagrabić każdy jeden zerka',\n", + " 'oni ja myślę zachowują się nieładnie',\n", + " 'radny kradnie - a całe miasto na dnie!',\n", + " 'na ulicy dziś królują traffic i bandyci',\n", + " 'duże miasto, duża kasa ratusz się nasyci',\n", + " 'ingerencji prawo oddział babilonu rości',\n", + " 'nie ma wolności bez solidarności',\n", + " 'nie ma ojczyzny bez białostoczczyzny',\n", + " 'nie ma tradycji bez prohibicji',\n", + " 'nie ma nowych mostów bez łapówek dla starostów',\n", + " 'nie ma oleju bez pancernego kleju',\n", + " 'nie ma el dupy gdy rozum lodem skuty',\n", + " 'nie ma el dupy gdy rozum lodem skuty',\n", + " 'nie ma el dupy gdy rozum lodem skuty',\n", + " 'nie ma satyry bez doktora yry',\n", + " 'nie ma satyry bez doktora yry',\n", + " '(reggaenerator)',\n", + " 'oh, my name is sandra i am living in jamaica',\n", + " 'if you wanna know my fire - if you want lova meka',\n", + " 'i can give you honey my special invitation',\n", + " 'to da dansall party and body confrontation',\n", + " 'what mi what mi what mi what mi what mi what mi said',\n", + " 'what mi what mi what mi what mi stigidingding whoai !',\n", + " 'what mi what mi what mi what mi what mi what mi said',\n", + " 'what mi what mi what mi what mi stigidingding whoai !',\n", + " 'mista polak is incoming to da town',\n", + " 'sidney polak puka do twoich bram',\n", + " 'moje imię to reggaenerator - yes i bless man !',\n", + " 'fire bun dem ! gimme da riddim man yes i ! whoai !',\n", + " '(pablopavo)',\n", + " 'muzyka reggae mówie tobie muzyka dancehall',\n", + " 'sidney polak teraz otwiera tutaj bal',\n", + " 'muzyka reggae ja mówie muzyka dancehall',\n", + " 'a zjednoczenie gra dla ciebie sound system',\n", + " 'wszystkie szyny są tutaj gotowe na pociągi man',\n", + " 'ja mówię tobie do ciebie teraz riddimy tutaj wysyłam',\n", + " 'ty stajesz teraz u moich bram',\n", + " 'sidney polak to mój brat ja mówie tobie boom shack-a-lack',\n", + " 'zjednoczenie teraz tutaj na arenie',\n", + " 'zobacz człowieku tutaj tak mistyczne połączenie yes i !',\n", + " 'inna dancehall style inna dancehall dancehall style...',\n", + " 'rosa do madragoa /rose of madragoa',\n", + " 'a rosa do madragoa /rose of madragoa',\n", + " 'enche a canastra na praça / filling her basket in the market',\n", + " 'vem para a rua, apregoa /out in the street her cries',\n", + " 'e acorda mei lisboa /aweken half of lisbon',\n", + " 'que sorri quando ela passa /which smiles as she passes by',\n", + " 'sobe as escadas divertida /merrily she ascends the steps',\n", + " 'numa alegria que alastra /with a joy she spreads around her',\n", + " 'baila-lhe a saia garrida /her bright skirt a-dancing',\n", + " 'náo lhe pesa a crus da vida /the cross of life weighting light upon her',\n", + " 'pesa-lhe mais a canastra /her basket weighting more',\n", + " 'se pela sombra das esquinas /if through the corner shadows',\n", + " 'a sua voz atordoa /her voice resounds',\n", + " 'sabem as outras varinas /other market women know',\n", + " 'quando passa pelas trinas /when she passes through the alleyways',\n", + " 'a rosa do madragoa /rose of madragoa',\n", + " 'ach różo ty, z madragoy',\n", + " 'napełnij na targu koszyk',\n", + " 'przyjdź tu klientów namawiać',\n", + " 'połowę zbudzić lizbony',\n", + " 'kiedy tędy przechodzisz',\n", + " 'wesoło wchodzi na schody',\n", + " 'radość się od niej rozchodzi',\n", + " 'tańczy szykowna spódnica',\n", + " 'nie waży wiele krzyż życia',\n", + " 'bo więcej waży jej koszyk',\n", + " 'gdy w cieniu rogów ulicy',\n", + " 'jej głos się wokół rozchodzi',\n", + " 'to wiedzą inne handlarki',\n", + " 'przez korytarze przechodzi',\n", + " 'ta róża – ta róża z madragoy',\n", + " '\"zniwa\"',\n", + " 'spójrz, jak slonce zachodzi',\n", + " 'patrz, bo juz nigdy nie wzejdzie',\n", + " 'wiec przytul sie do mnie, wez mnie w ramiona',\n", + " 'opowiem ci basn na dobranoc',\n", + " 'a dym ich katuszy... spij kochanie, spij...',\n", + " 'na wieki wieków sie wznosi...i nie patrz mi w oczy...',\n", + " 'i nie maja spoczynku we dnie i w nocy ...przestan juz oddychac...',\n", + " 'wyznawcy diabla i jego obrazu... przestan juz widziec...',\n", + " 'wiem, ze w ogniu splone. powiedz mi, czy to wolna wola',\n", + " 'upadl, upadl... uczyles mnie milosci',\n", + " 'wielki babilon... poznalem nienawisc',\n", + " 'co winem swego nierzadu... ból im na imie',\n", + " 'napoil wszystkie narody... przychodzi po zmroku',\n", + " 'wiem, ze w ogniu splone. powiedz mi, czy to wolna wola',\n", + " 'zapusc swoj sierp',\n", + " 'i zniwa swego dokonaj',\n", + " 'zapusc swoj sierp',\n", + " 'bo dojrzalo juz zniwo na ziemi...',\n", + " 'krew... wciaz i wciaz',\n", + " 'ogien... wciaz i wciaz',\n", + " 'milosc, czy tak ja rozumiesz',\n", + " 'kochasz? jest diabel w kochaniu',\n", + " 'ogien... wciaz i wciaz',\n", + " 'ksiezyc, juz w d sie odgial. dwa ksiezyce to pelen okrag',\n", + " 'w smrodzie rzygowin, wóda ochrzczonych',\n", + " 'to moja krew. moja milosc',\n", + " 'english version:',\n", + " '\"harvest\"',\n", + " 'look how the sun goes down',\n", + " 'look cause it’ll never come up',\n", + " 'so give me a hug, take me in your arms',\n", + " 'i’ll tell you a goodnight fairy-tale',\n", + " 'and the smoke torments them, sleep honey, sleep',\n", + " 'it goes up for centuries …and don’t look into my eyes',\n", + " 'they have no rest for days and nights ...stop breathing',\n", + " 'the worshippers of the devil and his image....stop seeing',\n", + " 'i know i’ll burn in the fire. tell me if it’s free will',\n", + " 'it went down, it went down…you taught me love',\n", + " 'great babyloon… i met the hate',\n", + " 'which is guilty of his anarchy their name is pain',\n", + " 'it fed all the nations...it comes after dark',\n", + " 'i know i’ll burn in the fire, tell me if it’s free will',\n", + " 'use your sickle',\n", + " 'and take your toll',\n", + " 'use your sickle',\n", + " 'because the harvest is rape on the earth',\n", + " 'blood…on and on',\n", + " 'fire…. on and on',\n", + " 'love, do you understand it like that?',\n", + " 'do you love? there is a devil in loving',\n", + " 'fire … on and on',\n", + " 'the moon already folded in a d.two moons form a full circle',\n", + " 'in the stench of vomiting, baptized in spirit',\n", + " 'this is my blood, my love',\n", + " 'katy :',\n", + " 'i wanted to ask you something – i came from england and wrote a song, a song that’s my response from my creativity, and i wanted to ask, has my song brought something new into your world?',\n", + " 'chciałam pana o coś zapytać. jestem z anglii i napisałam piosenkę, która jest wynikiem mojej twórczości i chciałabym się dowiedzieć, czy wniosła ona coś nowego do pańskiego świata?',\n", + " 'kazik',\n", + " 'it’s the first time in my life i’ve ever encountered this, that’s why it’s been a bit of a…shock for me. that people like this still exist, people who are inspired by my life, and they write to inspire others, they write the tunes they want to write, the tunes they’re able to write. yes. it’s the first time in my life',\n", + " 'pierwszy raz w życiu się z tym spotkałem, dlatego jest to dla mnie taki…trochę szok, że gdzieś istnieją tacy ludzie, dla których moje życie jest inspiracją. oni piszą inspirując innych, piszą muzykę przetwarzając ją na swoje melodie, i na coś co jest im bliskie. tak, to pierwszy raz w moim życiu',\n", + " 'dziki mówił, że to jego siostra jest',\n", + " 'a ja nie wierzyłem',\n", + " 'chociaż każdy dał się nabrać',\n", + " 'na ten żart',\n", + " 'armia wygrała mecz',\n", + " 'na stadionie wielki deszcz',\n", + " 'karolina, kazi, matczak',\n", + " 'no! i ty, i ty',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker now',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker now',\n", + " \"she's a punk punk, a punk rocker\",\n", + " 'punk punk a punk rocker',\n", + " 'punk punk a punk rocker',\n", + " 'punk punk a punk rocker',\n", + " 'hej!',\n", + " 'te pociągi jadą puste nie wiem gdzie',\n", + " 'i ty tego nie wiesz',\n", + " 'może to są czyste formy naszych dóbr',\n", + " 'no i skąd bym wiedzieć mógł',\n", + " 'że dojedziemy tu',\n", + " \"movement of jah' people\",\n", + " 'ja, i ty, i ty',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker now',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker now',\n", + " \"she's a punk punk, a punk rocker\",\n", + " 'punk punk a punk rocker',\n", + " 'punk punk a punk rocker',\n", + " 'punk punk a punk rocker',\n", + " 'hej!',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker now',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker',\n", + " 'sheena is a punk rocker now',\n", + " '(now now now)',\n", + " 'gabba gabba hey!!!',\n", + " 'force of nihility seems like to at last',\n", + " 'sins of six salvations destroy the sign of christ power',\n", + " '...although the suffocation i revived my life',\n", + " 'silent humiliation tearing my veins',\n", + " 'before the perish i command to be strong',\n", + " 'for devil inquisition inner myself',\n", + " \"i die for sin committed spreading it's stream\",\n", + " \"now forever sincere storm in my mind's endeavor\",\n", + " 'where light and darkness f*ck together',\n", + " 'ferocious behaviour to make the sin a savior',\n", + " 'mym grzechem szaleñstwo ku czci piekielnych bram...',\n", + " 'so foresee god shall fail at last!',\n", + " 'raped innocence',\n", + " 'then devil dwell',\n", + " 'satanic scent...',\n", + " '...w p³omieniach mych snów i pragnieñ dna',\n", + " 'w czelu\\x9cciach mej duszy ukrywam strach',\n", + " 'w mroku sk³êbiony przeklinam \\x9cwiat',\n", + " 'w obliczu nico\\x9cci wyrzekam boga!',\n", + " 'the motion seduction i smell an erotic fragrance',\n", + " 'and sexual sodomic variety i abruse so much',\n", + " '...usta zbroczy³em krwi¹ to wino zalewa me cia³o',\n", + " 'wieczna pokusa gdy uczuæ wci¹¿ za ma³o...',\n", + " 'consecration!',\n", + " 'devastation!',\n", + " 'self damnation!',\n", + " 'seduction!',\n", + " 'fornication!',\n", + " 'christianity eradictation!',\n", + " \"a-yo it's war ninja, yeah i'll piss on party time\",\n", + " 'sinister ackward rhymes, bangin your concubines',\n", + " 'haunt your mind, always on point like porcupines',\n", + " \"cuz you're like muslims eating pork, thinking pork ain't swine\",\n", + " 'conciuss kind, remain hard, stays refine',\n", + " 'couragous innovations it takes to stay alive',\n", + " \"haters arrived, so we feed'em what they don't like\",\n", + " \"cuz they know i'm in their faces, bagi won't go hide\",\n", + " \"ohh my and i ain't the one that gotta go profile\",\n", + " 'cuz we raw without even havingto hold the 45',\n", + " \"europe gon' ride, you wanna ask if i got dro?\",\n", + " \"what the fuck you in my b.i. for? this ain't quantico\",\n", + " 'you can ask ghost, we strive to get past',\n", + " 'the bulletproof wallets, yeah and not be broke',\n", + " 'and you know that you str8, abandoned them street codes',\n", + " \"my rap's like david banner, giving birth to a green hulk\",\n", + " 'minął czas mądrych króli, dziś to kraj wolnych ludzi',\n", + " 'widzę te wojny ulic, fałszywe sądy, synów i córy',\n", + " 'przebranych w uniformy nie zdolnych wrócić',\n", + " 'ale wciąż zdolnych w imię cudzych teorii burzyć',\n", + " 'tętni na blokach slang, słyszę w ich krokach strach',\n", + " 'jednych scotlandyard za skok na bank ściga',\n", + " 'inny z okna spadł chyba wprost na szyję, banał',\n", + " 'przeżył ten skok jak kot na linie balans',\n", + " 'inny to true-school, chciał zrobić na topach hajs',\n", + " 'dziś jeździ na wózku, lecz wciąż ma w oczach blask',\n", + " 'choć zboczył z kursu, bo musiał dotknąć w erce gwiazd',\n", + " 'dziś śmieje się częściej niż ja, siła i szczęście brat',\n", + " 'zło przyciąga zło, jak co? jak magnes stal',\n", + " 'to poważne jak schubert, mozart, wagner, bach',\n", + " 'po to masz na dnie w bagnie stać, by z niego wyjść',\n", + " 'po to ci kradnę czas, nim ci go skradnie syf',\n", + " 'everyday we fighting on the street corners',\n", + " 'all we need is peace so please brothers slow down',\n", + " 'put your weapons down now young soldiers',\n", + " \"we don't need another war and fight\",\n", + " 'welcome to spg district of the nasty town',\n", + " 'my name is nullo and i will be your private guide',\n", + " 'you need practice, sit in the back seat now',\n", + " \"like on a taxi cup, i'll show you my street life\",\n", + " \"where the black people, white people, yellow people don't sleep\",\n", + " \"if you want to tell lies you better don't speak\",\n", + " \"look in to my homie's eyes, they know street life\",\n", + " 'they know the price and they are cold as ice',\n", + " 'we are always ready to fight and to die with pride',\n", + " 'no cry, no smile, you are wrong because you are on the wrong side',\n", + " 'strong survive we know that from the history',\n", + " \"you can try, but you can't change your destiny\",\n", + " 'spg this is the best part of me',\n", + " \"bless god those streets, together let's fight to be free\",\n", + " \"we won't let them steal our dignity\",\n", + " 'we are more then homiez, man, we are family',\n", + " 'po labiryncie pytań jak satelita po orbitach',\n", + " 'w walce o honor witam na ochotnika',\n", + " 'jadę jak czołg, ja mam ten flow jakbym je wziął z chodnika',\n", + " 'nie wiesz skąd to weź obejrzyj komornika',\n", + " 'tak mnie uczono tu, burzono mur, nie jest różowo tu',\n", + " 'pokiwał anioł stróż głową znów',\n", + " 'tuż obok służbowo spojrzałem w oczy mu',\n", + " 'pokaż mi ścieżki, którymi kroczy wróg i podpisałem to 3w',\n", + " 'powiedz czy światłem bloki, a może bagnem bloki?',\n", + " 'a życie miewa przekaz dla wielu za głęboki?',\n", + " 'żelbetonowe ściany, sufity, podłogi',\n", + " 'widziałem to kim będę nim sięgnąłem po długopis',\n", + " 'everyday we fighting on the street corners',\n", + " 'all we need is peace so please brothers slow down',\n", + " 'put your weapons down now young soldiers',\n", + " \"we don't need another war and fight\",\n", + " 'o mamo nie placz nie',\n", + " 'niebos',\n", + " 'przeczysta królowo',\n", + " ...]},\n", + " 'data': [\"i'm nobody who are you\",\n", + " 'are you nobody too?',\n", + " 'than there is a pair of us',\n", + " \"don't tell they advartise you know\",\n", + " \"i'm nobody who are you\",\n", + " 'are you nobody too?',\n", + " 'jestem nikim a ty kim',\n", + " 'czy ty także jesteś nikim',\n", + " 'to znaczy byłaby z nas para',\n", + " 'i to by się rozniosło zaraz więc milcz',\n", + " \"i'm nobody...\",\n", + " 'jak ponuro stać się kimś',\n", + " 'żaba co publicznie',\n", + " 'skrzeczy w czerwcu chce się żyć',\n", + " 'bagnu zebranemu licznie',\n", + " \"i'm nobody\",\n", + " 'to zabija mnie!',\n", + " 'niszczy!',\n", + " 'oto ja - żywczem pogrzebany',\n", + " 'oto ja - spętany ciężarem winy',\n", + " 'ja!',\n", + " 'zawiniłem - jestem chory i zmęczony',\n", + " 'zanurzam się w piekle - ono wre potępionym',\n", + " 'zabija!',\n", + " 'oto ja - dosczętnie spopielony',\n", + " 'oto ja - na zawsze okaleczony',\n", + " 'ja!',\n", + " 'spośród wielu blizn tę najbardziej znać',\n", + " 'wyryta w mej pamięci na wieki wieków',\n", + " 'skąpany we krwi chce obmyć swoje rany',\n", + " 'zaprawdę powiadam wam - jestem zrujnowany',\n", + " 'zabija!',\n", + " 'this is killing me!',\n", + " 'destroys!',\n", + " 'this is me - buried alive',\n", + " 'this is me - burdened by guilt',\n", + " 'i am guilty - i am sick and tired',\n", + " 'i descend to hell - it boils with sinners',\n", + " 'killing me!',\n", + " 'this is me - buried alive',\n", + " \"this is me - i'm guilty\",\n", + " 'this is me - burnt to ashes',\n", + " 'this is me - forever impaired',\n", + " 'the most significant scar of mine',\n", + " 'imprinted in my memory forevermore',\n", + " 'all stained with blood i want to clean my wounds',\n", + " \"verily i say to you, i'm ruined\",\n", + " 'killing me!',\n", + " 'this is me - buried alive',\n", + " \"this is me - i'm guilty\",\n", + " 'hey!',\n", + " \"you know, now we have to keep on tryin', yeah\",\n", + " \"you know, now we have to keep movin' on, keep movin' on everyday\",\n", + " \"you know, now we have to keep on trying', yeah\",\n", + " \"you know, now we have to keep movin' on, keep movin' on\",\n", + " 'keep on trying, świat mówi zatrzymaj się, ty próbuj dalej',\n", + " 'keep on trying, co by nie było do każdego celu wytrwale',\n", + " 'keep on trying, świat mówi zatrzymaj się, ty próbuj dalej',\n", + " 'keep on trying, świat obłudnych przyzwyczajeń',\n", + " \"you know, now we have to keep on tryin', yeah\",\n", + " \"you know, now we have to keep movin' on, keep movin' on everyday\",\n", + " \"you know, now we have to keep on tryin', yeah\",\n", + " \"you know, now we have to keep movin' on, keep movin' on everyday\",\n", + " 'mam takie same plany jak ty',\n", + " 'do niektórych otwarta droga, przed większością zamknięte drzwi',\n", + " 'a twoja szansa śpi, wystarczy ją obudzić by przekonać się, że pasja dodaje sił',\n", + " 'są problemy i zmartwienia, nieporozumienia, słowa prowadzące do milczenia',\n", + " 'są iluzje, między nimi ty wierzący, że odmienisz swoje życie nie robiąc w tym kierunku nic',\n", + " \"you know, now we have to keep on tryin', yeah\",\n", + " \"you know, now we have to keep movin' on, keep movin' on everyday\",\n", + " \"you know, now we have to keep on tryin', yeah\",\n", + " \"you know, now we have to keep movin' on, keep movin' on\",\n", + " \"keep on tryin'\",\n", + " 'keep on (co by nie było do każdego celu wytrwale)',\n", + " \"keep on tryin', (świat mówi zatrzymaj się, ty próbuj dalej)\",\n", + " \"keep on tryin' (świat obłudnych przyzwyczajeń)\",\n", + " \"nobody can stop me and nobody's gonna break me down\",\n", + " \"cause imma keep on tryin'\",\n", + " \"no matter where i'm coming from\",\n", + " 'imma keep moving on',\n", + " \"cause imma keep on tryin'\",\n", + " 'no matter how many times i fail in this rat race',\n", + " \"i'll be standing face to face with fear\",\n", + " 'no matter what the fellas say envy makes the truth fade away',\n", + " \"cause i keep on tryin'\",\n", + " 'na rua do silêncio /in the street of silence',\n", + " 'na rua do silêncio /in the street of silence',\n", + " 'é tudo mais ausente, /all is more absent',\n", + " 'até foge o luar /even the moonlight flees',\n", + " 'e até a vida é pranto. /and even life is weeping',\n", + " 'não há juras de amor, /there are no declarations of love',\n", + " \"náo há quem nos lamente /there's no-one who misses us\",\n", + " 'e o sol quando lá vai /and when the sun breaks through',\n", + " \"é p'ra detair quebranto /it lies there broken\",\n", + " 'na rua do silêncio /in the street of silence',\n", + " 'o fado é mais sombrio /the fado is more sombre',\n", + " 'e as sombras duma flor /nor do the shadows of the flower',\n", + " 'não cabem lá também /fall there',\n", + " 'a rua tem destino /the street has a destination',\n", + " 'e o seu destino frio /and the destination is cold',\n", + " 'não tem sentido algum /with no meaning',\n", + " 'não pasa lá ninguém. /no-one passes there',\n", + " 'na rua do silêncio /in the street of silence',\n", + " 'as portas estão fechadas /the doors are closed',\n", + " 'e até o sonho cai, /and even dreams fall',\n", + " 'sem fé e sem ternura. /faithless and without tenderness',\n", + " 'na rua do silêncio /in the street of silence',\n", + " 'há lágrimas cansadas, /there are weary tears',\n", + " 'na rua do silêncio /in the street of silence',\n", + " 'é sempre noite escura. /it is always darkest night',\n", + " 'a na ulicy cisza',\n", + " 'wszystkiego tam brakuje',\n", + " 'znikł głos, księżyca blask',\n", + " 'i nawet płacze życie',\n", + " 'przysiąg miłości brak',\n", + " 'nikt tam nie lamentuje',\n", + " 'a kiedy słońce wschodzi',\n", + " 'to też jest jak rozbite',\n", + " 'a na ulicy cisza',\n", + " 'i fado tak ponure',\n", + " 'i nawet kwiatu cień',\n", + " 'tam także nie pasuje',\n", + " 'ma swoje przeznaczenie',\n", + " 'jej przeznaczeniem - chłód',\n", + " 'i nie ma nic znaczenia',\n", + " 'tam nie przechodzi nikt',\n", + " 'a na ulicy cisza',\n", + " 'drzwi wasze wciąż zamknięte',\n", + " 'i nawet sen opada',\n", + " 'bez wiary i bez czułości',\n", + " 'a na ulicy cisza',\n", + " 'i łzy też są zmęczone',\n", + " 'a na ulicy cisza',\n", + " 'i noc jest mroczna zawsze',\n", + " 'oj od krakowa jade',\n", + " 'z dalekiej obcej strony',\n", + " 'bo mi nie cheilei dac, hosa dyna',\n", + " \"mary's ulubiony\",\n", + " 'ej szerokim goscicem',\n", + " 'ej jedzie woz za wozem',\n", + " 'jak mi je nie dadza, hosa dyna',\n", + " 'to prezbije sie nozem',\n", + " 'ej nozem sie przebijej i utopie we wisle',\n", + " 'zebys ty wiedziala, hosa dyna',\n", + " 'ej co o tobie mysle',\n", + " \"oy from krakow i'm coming\",\n", + " 'from far away strange side',\n", + " 'because they did not want',\n", + " 'to give me beloved mary',\n", + " 'ey through wide highroad',\n", + " 'ey a riding carriage after marriage',\n", + " \"if they won't give me her, hosa dyna\",\n", + " 'i will stab myself with knife',\n", + " 'ey i will stab myself',\n", + " 'and will drown in the wisla',\n", + " 'so you know, hosa dyna',\n", + " \"ey what i'm thinking about you\",\n", + " \"it's a life of the gambler\",\n", + " \"scared money don't make none ?\",\n", + " 'but you better be carefull...',\n", + " \"'cause you might be the one get broke\",\n", + " 'you understand me..?',\n", + " 'you better thing twice',\n", + " 'before you roll the dice',\n", + " 'the outcome might not be nice',\n", + " 'big money on the table... x2',\n", + " 'do you really wanna gable with your life ?',\n", + " 'what about your kids and your wife?',\n", + " 'big money on the table... x2',\n", + " 'what they advertise',\n", + " \"i'm not wishing to believe\",\n", + " 'i want some balance in my life',\n", + " 'i like the fishes and the trees',\n", + " 'but i like new kicks too',\n", + " \"i'm riddled with the deeds\",\n", + " 'if u want for me to accept, they bringing it to me',\n", + " 'i like the way it looks',\n", + " 'i like the way it feels',\n", + " \"i like the dreams that they're selling, so i'm paying bills\",\n", + " 'fuck playing fields, or just laying still',\n", + " \"i'ma lay, lay money on the gambling wheel\",\n", + " 'see that dangle cars like mangle stars up in my face',\n", + " \"and have a laugh with don't grab apart of what we take\",\n", + " \"it's like to have a lunch you have a chance to drop the stakes\",\n", + " 'like an appetite, you gamble fast get choke some \"p\"s',\n", + " 'what set a hard at discreet when in sudden we can share',\n", + " \"like i'm passing the weed and you're jumping in the ash\",\n", + " \"and ain't pass it to me but it does't bring freedom\",\n", + " 'it brings more greed so all the matter things leaving',\n", + " 'when you merely find that you better off with that',\n", + " 'check the may flights and take them helicopters down',\n", + " 'there is a place i just hoped to get a plough land',\n", + " \"with a great sky doesn't often come round\",\n", + " 'you better thing twice',\n", + " 'before you roll the dice',\n", + " 'the outcome might not be nice',\n", + " 'big money on the table... x2',\n", + " 'if you really wanna gable with your life',\n", + " 'what about your kids and your wife?',\n", + " 'big money on the table... x2',\n", + " 'miasto luksusu niczym vegas na preriach',\n", + " 'jakość mówi sama za siebie jak bottega venta',\n", + " 'sto procent dla klienta, tu wam to wszystko wolno',\n", + " 'tylko wykręć numer, zadzwoń, zapłać 1000 euro',\n", + " 'masz swój majątek w oczach przegranej żywioł',\n", + " 'www kropka bankrut to prawie jak kasyno',\n", + " 'fortuny giną w wirtualnej ruletce',\n", + " 'wpisz login i hasło, duże wygrane codziennie',\n", + " 'czemu nie wcześniej to dla wybranych opcja',\n", + " 'dziś licytujemy klasyk ferrari testarossa',\n", + " 'milion po raz pierwszy, milion po raz drugi',\n", + " 'milion po raz trzeci, fortuna kontra długi',\n", + " 'tam się kręci gdzie kluby, kokaina z kuby w transie',\n", + " 'ten świat może być twój, możesz go kupić zawsze',\n", + " 'jak tylko stać cię, masz karty, numer konta',\n", + " 'do zabawy charakter, to zadzwoń tu jest kontrakt',\n", + " 'zero cztery, dziewięć szóstek i łącz się ze światem',\n", + " 'dzwoń, koszt dwa euro za minutę plus podatek',\n", + " 'wszystko to farsa, brat, nieporozumienia',\n", + " 'każą nam wierzyć w świat, którego dla nas nie ma...',\n", + " 'you better thing twice',\n", + " 'before you roll the dice',\n", + " 'the outcome might not be nice',\n", + " 'big money on the table...x2',\n", + " 'do you really wanna gable with your life',\n", + " 'what about your kids and wife?',\n", + " 'big money on the table...x2',\n", + " \"stay money, don't make no\",\n", + " 'least the truth, and i put my money on you...',\n", + " 'big money on the table... x2',\n", + " \"and nobody stay 'cause it ain't no joke\",\n", + " 'you maight just go home hope...',\n", + " 'big money on the table... x2',\n", + " 'chorus x3',\n", + " 'as meninas dos meus olhos /the girls of my eyes (idiom - the apple of my eyes)',\n", + " 'as meninas dos meus olhos /the girls of my eyes',\n", + " 'nunca mais tive mão nelas /never have i my hand in theirs',\n", + " 'fugiram para os teus olhos, /they fled to your eyes',\n", + " 'por favor deixa-me vê-las. /please let me see them',\n", + " 'as meninas dos meus olhos /the girls of my eyes',\n", + " \"se vão perder-se não sei /wheter they'll be lost i do not know\",\n", + " 'deixa-me ver se os teus olhos /let me see if your eyes',\n", + " 'as tratam e guardam bem. /care for them and keep them well',\n", + " 'as meninas dos meus olhos /the girls of my eyes/',\n", + " 'para poder encontrá-las /in order to encounter them',\n", + " 'foram pedir aos teus olhos /they went to ask your eyes',\n", + " 'que falem quando te calas./ to speak when you are silent',\n", + " 'as meninas dos meus olhos /the girls of my eyes',\n", + " 'já não sei aonde estão /i no longer know where they are',\n", + " 'deixa-me ver nos teus olhos /let me see in your eyes',\n", + " 'se as guardas no coração /if you keep them in your heart',\n", + " 'ach córeczki moje skarby',\n", + " 'nigdy przy mnie ich nie miałam',\n", + " 'ach córeczki moje skarby',\n", + " 'nigdy przy mnie ich nie miałam',\n", + " 'znikły by być skarbem twoim',\n", + " 'pozwól bym je zobaczyła',\n", + " 'ach córeczki moje skarby',\n", + " 'nigdy przy mnie ich nie miałam',\n", + " 'ach córeczki moje skarby',\n", + " 'nie wiem, czy je stracić mogę',\n", + " 'ach córeczki moje skarby',\n", + " 'nie wiem, czy je stracić mogę',\n", + " 'pozwól, żebym zobaczyła',\n", + " 'twoją troskę i twą ochronę',\n", + " 'pozwól, żebym zobaczyła',\n", + " 'twoją troskę i twą ochronę',\n", + " 'ach córeczki moje skarby',\n", + " 'bym je mogła jeszcze spotkać',\n", + " 'ach córeczki moje skarby',\n", + " 'bym je mogła jeszcze spotkać',\n", + " 'muszę pójść i je zapytać',\n", + " 'niech przemówią, chociaż milczą',\n", + " 'muszę pójść i je zapytać',\n", + " 'niech przemówią, chociaż milczą',\n", + " 'ach córeczki moje skarby',\n", + " 'ja już nie wiem, gdzie są one',\n", + " 'ach córeczki moje skarby',\n", + " 'ja już nie wiem, gdzie są one',\n", + " 'pozwól mi spojrzeć- pozwól mi spojrzeć w oczy twoje',\n", + " 'czy je chowasz w sercu swoim',\n", + " 'ach córeczki moje skarby',\n", + " 'ja już nie wiem, gdzie są one',\n", + " 'jeden z nas!',\n", + " 'głębiej we mnie, w głębi siebie',\n", + " 'chcę przełamać tę ciszę',\n", + " 'wzniecić ogień, rozbudzić gniew',\n", + " 'nie!',\n", + " 'ustały pieśni radości',\n", + " 'wiem!',\n", + " 'wiem!',\n", + " 'zamilkły hymny miłości',\n", + " 'poznaj to co gorzkie',\n", + " 'smutek, łzy, gorycz tych słów',\n", + " 'poczuj gwałtowny podmuch',\n", + " 'on jest zwiastunem burzy',\n", + " 'zobacz jak płaczą, jak płaczą miliony',\n", + " 'wzniecam ogień',\n", + " 'wzniecam ogień',\n", + " 'powiedz mi, że chcesz tego co ja',\n", + " 'powiedz mi, że chcesz tego co ja',\n", + " 'wzniecam ogień',\n", + " 'głębiej we mnie, w głębi siebie',\n", + " 'pragnę oczyścić się z piętna grzechu',\n", + " 'nie!',\n", + " 'ustały pieśni radości',\n", + " 'wiem!',\n", + " 'wiem!',\n", + " 'zamilkły hymny miłości',\n", + " 'wolno sączy się krew',\n", + " 'jeszcze wolniej odradza się nadzieja',\n", + " 'zaprawde powiadam wam',\n", + " 'nie jest jeszcze zbyt późno',\n", + " 'chcę wstać, zerwać łańcuchy',\n", + " 'wiem! zrobie to!',\n", + " 'wzniecam ogień',\n", + " 'wzniecam ogień',\n", + " 'powiedz mi, że chcesz tego co ja',\n", + " 'powiedz mi, że chcesz tego co ja',\n", + " 'wzniecam ogień',\n", + " 'nie!',\n", + " 'one of us!',\n", + " 'deeper inside my deepest mind',\n", + " 'i will break the silence',\n", + " 'ignite flame, awake the anger',\n", + " 'no! no!',\n", + " 'died the songs of glee',\n", + " 'why? why?',\n", + " 'love hymns ceased to be',\n", + " 'taste the bitter and sour',\n", + " 'experience sadness and tears',\n", + " 'feel the sudden gust of wind',\n", + " 'violent storm is near',\n", + " 'look at them, look at these millions cry',\n", + " 'ignite fire',\n", + " 'ignite fire',\n", + " 'simply tell me that you want the same',\n", + " 'simply tell me that you want the same',\n", + " 'ignite fire',\n", + " 'deeper inside my deepest mind',\n", + " \"i yearn to be free of sinner's stain\",\n", + " 'no! no!',\n", + " 'died the songs of glee',\n", + " 'why?',\n", + " 'why?',\n", + " 'love hymns ceased to be',\n", + " 'blood spills so slowly',\n", + " 'even slower does the hope rebore',\n", + " 'verily i say to you',\n", + " 'it is still not too late',\n", + " 'i will rise, break the chains',\n", + " 'i know i will!',\n", + " 'ignite fire',\n", + " 'ignite fire',\n", + " 'simply tell me that you want the same',\n", + " 'simply tell me that you want the same',\n", + " 'ignite fire',\n", + " 'no!!!',\n", + " \"everybody's talking at me\",\n", + " \"i don't hear a word they're saying\",\n", + " 'only the echoes of my mind',\n", + " 'people stopping staring',\n", + " \"i can't see their faces\",\n", + " 'only the shadows of their eyes',\n", + " \"i'm going where the sun keeps shining\",\n", + " \"thru' the pouring rain\",\n", + " 'going where the weather suits my clothes',\n", + " 'backing off of the north east wind',\n", + " 'sailing on summer breeze',\n", + " 'and skipping over the ocean like a stone',\n", + " 'każdy coś do mnie mówi',\n", + " 'ale nie słyszę ich słów',\n", + " 'tylko echo moich myśli',\n", + " 'ludzie przystają i patrzą się',\n", + " 'nie widzę ich twarzy',\n", + " 'tylko cień i oczu',\n", + " 'zmierzam tam gdzie słońce świeci',\n", + " 'poprzez padający deszcz',\n", + " 'zmierzam gdzie pogoda jest moim garniturem',\n", + " 'hamowany przez północno wschodni wiatr',\n", + " 'żeglując na letniej bryzie',\n", + " 'i przeskakując przez ocean niczym kamień',\n", + " 'by eljot',\n", + " 'w kolorowej sukience krz¹ta siê',\n", + " 'raz po raz odwraca g³owê',\n", + " 'uœmiech œle',\n", + " 'móg³byœ przysi¹c ¿e',\n", + " 'widzia³eœ wczoraj skrzyd³a jej',\n", + " 'jak je chowa³a pod sukienkê',\n", + " 'lecz ona',\n", + " 'ref:',\n", + " 'to nie ptak czy nie widzisz?',\n", + " 'to nie jest ptak',\n", + " 'ona to nie ptak',\n", + " 'to nie jest ptak czy nie widzisz?',\n", + " 'kocham ciebie mówi ka¿dy jej ma³y ruch',\n", + " 'lecz ty wœród kolorowych falban szukasz piór',\n", + " 'bo jesteœ pewien ¿e',\n", + " 'wczoraj widzia³eœ skrzyd³a cieñ',\n", + " 'dlatego klatkê zbudowa³eœ',\n", + " 'lecz ona',\n", + " 'ref:',\n", + " 'to nie ptak...',\n", + " 'tego dnia, gdy ciemnoœæ skradnie serce ci',\n", + " 'ona w oknie bêdzie œmiaæ siê lecz przez ³zy',\n", + " 'rozpuœci czarnoœæ w³osów i',\n", + " 'zmieniona w kruka skoczy by',\n", + " 'za chwilê oknem tym powróciæ tu',\n", + " 'lecz jako',\n", + " 'ref:',\n", + " 'rajski ptak bo tak chcia³eœ',\n", + " 'jako rajski ptak',\n", + " 'rajski ptak',\n", + " 'jako rajski ptak bo tak chcia³eœ!',\n", + " '(english translation:',\n", + " \"it's not a bird\",\n", + " \"she's hustling in a colorful dress\",\n", + " 'from time to time turning her head',\n", + " 'and smiles',\n", + " 'you could swear',\n", + " 'that you saw her wings yesterday',\n", + " 'when she was trying to hide them',\n", + " 'under the dress',\n", + " 'but she',\n", + " \"she's not a bird\",\n", + " \"can't you see\",\n", + " \"it's not a bird\",\n", + " \"she's not a bird\",\n", + " \"it's not a bird\",\n", + " \"can't you see\",\n", + " 'with her every move she tells you she loves you',\n", + " 'but you are looking for the feather in a colorful lace',\n", + " 'because you sure',\n", + " 'you saw the shade of the wings',\n", + " \"and that's why you built a cage\",\n", + " 'but she',\n", + " 'this day',\n", + " 'when the darkness will steal your heart',\n", + " 'she will be in the window laughing through tears',\n", + " 'with flowing hair',\n", + " 'and turned into raven jump',\n", + " 'only to come back to here',\n", + " 'but as bird of paradise',\n", + " 'because you wanted this',\n", + " 'as a bird of paradise',\n", + " 'as a bird of paradise',\n", + " 'because you wanted this)',\n", + " \"what's your name?\",\n", + " \"i'm jane\",\n", + " 'where are you from?',\n", + " 'from l.a',\n", + " 'tak jak lynch - david david david',\n", + " 'tak jak douglas - michael michael michael',\n", + " 'tak jak eastwood- eastwood eastwood eastwood',\n", + " 'tak jak oni mieszkasz w kaliforni',\n", + " 'a jak kiedyś bedze w ameryce',\n", + " 'mocze tobą jane się zachwycę',\n", + " 'i zapukam nagle do twych drzwi',\n", + " 'mocze może otworzysz mi',\n", + " 'do you wonder why i, fly like an eagle - so high',\n", + " 'and my spirit blows like a wind',\n", + " 'no limits for me, my life is just to live',\n", + " 'the life is too short to lose it',\n", + " 'i have nobody to hate',\n", + " 'i leave it for my enemies',\n", + " \"i'm a rebel, and you can be a rebel too\",\n", + " 'freedom! - believe it !',\n", + " 'be like a haydamaka in me',\n", + " \"i'm a rebel, and you can be a rebel too\",\n", + " 'freedom! - believe it !',\n", + " 'be like a haydamaka in me',\n", + " 'fight',\n", + " 'like a haydamaka in me',\n", + " 'fight ( tu di tu )',\n", + " 'like a haydamaka in me',\n", + " \"listen to me, i'm not the enemy\",\n", + " \"i have my way, your's not for me\",\n", + " 'no means no and white is white',\n", + " 'no more future for lies',\n", + " 'you are free you can dislike me',\n", + " \"but don't tell me who i should be, because\",\n", + " 'no means no and white is white',\n", + " 'no more future for lies',\n", + " 'no more lies',\n", + " 'your life is yours',\n", + " \"it's only your choice\",\n", + " \"don't convince me it's ok\",\n", + " 'go your way',\n", + " 'never turn me back',\n", + " 'the life is too short to lose it',\n", + " \"i'm a rebel, and you can be a rebel too\",\n", + " 'freedom! - believe it !',\n", + " 'be like a haydamaka in me',\n", + " \"i'm a rebel, and you can be a rebel too\",\n", + " 'freedom! - believe it !',\n", + " 'be like a haydamaka in me',\n", + " 'fight',\n", + " 'like a haydamaka in me',\n", + " 'fight',\n", + " 'like a haydamaka in me',\n", + " \"listen to me, i'm not the enemy\",\n", + " \"i have my way, your's not for me\",\n", + " 'no means no and white is white',\n", + " 'no more future for lies',\n", + " 'you are free you can dislike me',\n", + " \"but don't tell me who i should be, because\",\n", + " 'no means no and white is white',\n", + " 'no more future for lies',\n", + " 'no more lies',\n", + " 'buhalo holosno u hrudy bje',\n", + " 'hitara tiażko akordy bere',\n", + " 'dajte napytsja, bo krow ne wodycja',\n", + " \"tancjujte sobi to- kowbasobel'\",\n", + " 'buhalo holosno u hrudy bje',\n", + " 'hitara prosti akordy bere',\n", + " 'dajte napytsja, bo krow ne wodycja',\n", + " \"zatjamte sobi to- kowbasobel'\",\n", + " 'buhalo holosno u hrudy bje',\n", + " 'hitara prosti akordy bere',\n", + " 'ruhajte mesztamy, krow ne wodycia',\n", + " 'moja swoboda ce – kowbasobel',\n", + " 'ne placz, kochana, ne tuży za mnoju',\n", + " 'szczo wybraw swobodu swojeju żonoju',\n", + " 'w prostych akordach kozacka lubow',\n", + " 'ne placz kochana ne tuży za mnow',\n", + " 'buhalo holosno u hrudy bje',\n", + " 'hitara prosti akordy bere',\n", + " 'ruhajte mesztamy, zatjamte sobi',\n", + " \"nasza swoboda to – kowbasobel'\",\n", + " 'wojtek, have you come to save my day?',\n", + " 'the road is long and the river is so deep with wojtek my love remains… help me find my way back to poland i’m thousands of miles from home',\n", + " 'wypijemy jednego, drugiego, trzeciego za zdrowie naszego niedźwiedzia pijącego, palącego i walczącego żołnierza naszego niedźwiedzia wojtka',\n", + " 'wojtek, have you come to save my day?',\n", + " 'setki pustych slуw',\n", + " 'gesty, ktуre myla slad',\n", + " 'przecwiczony smiech',\n", + " 'za zaslona klamstwa',\n", + " 'nieraz widze jak',\n", + " 'obcy przyjaciela gra',\n", + " 'potem sieje zlo',\n", + " 'niszczac jednym ruchem warg',\n", + " 'to co dla mnie wartosc ma',\n", + " 'nie wiem czy to jest',\n", + " 'miejsce na normalny gest',\n", + " 'przytlaczaja nas',\n", + " 'wyuczone role',\n", + " 'wczoraj brzmialo \"tak\"',\n", + " 'dzis to samo znaczy \"nie\"',\n", + " 'w maske zmieni sie',\n", + " 'to co jeszcze szczere jest',\n", + " 'przedstawienie ciagle trwa',\n", + " 'co dzien pytam sie',\n", + " 'czy ja tez juz kogos gram',\n", + " 'czy to moja twarz',\n", + " 'czy to jeszcze jestem ja...',\n", + " '---',\n", + " 'added by marcin lesiak',\n", + " 'song: street',\n", + " 'i have been there',\n", + " 'i still think of that accident',\n", + " 'that dusky street',\n", + " 'looked at me and said be careful',\n", + " \"i won't forget\",\n", + " 'this place which has no name',\n", + " \"because it'd be\",\n", + " 'inside my mind forever',\n", + " \"don't be afraid\",\n", + " 'of that night',\n", + " 'i said to myself',\n", + " 'those drifting clouds',\n", + " 'overhead and everywhere',\n", + " 'i met a child',\n", + " 'who was tender and sincere',\n", + " 'he came to protect me',\n", + " 'from bad people',\n", + " 'my angle saved me so many times',\n", + " 'it may have been an emotion',\n", + " 'or just a dream',\n", + " '---',\n", + " 'added by marcin lesiak']},\n", + " 'rap': {'meta': {'train_data': ['zapierdalam na sygnale',\n", + " 'za mną chyba z dwustu mentów',\n", + " 'dwieście na godzinę mijam pełen bus studentów',\n", + " 'teraz już bez nerwów bo bus wyjebał w mentów',\n", + " 'a ja jadę jak szalony wioząc wóz prezentów',\n", + " 'jadę już na felgach ale ziomek ja nie pękam ja nie pękam nawet wtedy kiedy pęka szczęka, łapiesz?',\n", + " 'przed każdą akcją zmawiam pacierz',\n", + " 'po każdej akcji stawiam szmacie',\n", + " 'jebać policyjne ścierwo, często mawiam bracie',\n", + " 'what the fuck, a vibe or woman. t',\n", + " \"hey want me dead, nothing like my adrenaline's pumping\",\n", + " \"so i'm ready to survive the shot fire\",\n", + " 'i ducked and i dived',\n", + " 'i ducked and i dived',\n", + " 'the bullets missed by inches and hit the wall',\n", + " \"if that happened to hit my eyeball, shit i can't see at all\",\n", + " 'i slip, i slide, the wrong time to fall, the right time to move fast and think swift',\n", + " 'hold it, fuck five-o',\n", + " 'germany fuck five-o',\n", + " 'russia fuck five-o',\n", + " 'world fuck five-o',\n", + " \"finland, we're running from the cops\",\n", + " \"who's next?\",\n", + " \"we're running from the feds\",\n", + " 'uk',\n", + " \"we're running from the feds\",\n", + " \"fuck five-o we're running from the feds\",\n", + " 'wpierdalam się w osiedle',\n", + " 'hamuje i już biegnę',\n", + " 'już mnie goni banda hamów',\n", + " 'zaraz komuś jebnę',\n", + " 'ja się nie zatrzymam prędzej uduszę się powietrzem',\n", + " 'oni wszyscy wymiękają a ja biegnę coraz prędzej',\n", + " \"shit's about to get out of control, so i do what commando, roll over\",\n", + " 'for support or show these motherfuckers a few tricks like jump from 45 feet and land',\n", + " 'on some heavy bricks',\n", + " 'wypierdalam z kopa drzwi',\n", + " 'nie dam złapać się tym kurwom',\n", + " 'wypierdalam drugie drzwi i wybiegam na podwórko',\n", + " 'jeśli chcesz mnie złapać to postaraj się suko!',\n", + " 'jp wszystkim policyjnym grupom',\n", + " \"i'm hardcore\",\n", + " \"i'm doing parkour\",\n", + " \"i'm running straight through\",\n", + " \"someone's front door through the passage to the kitchen\",\n", + " 'i see people inside a boy',\n", + " 'had my t-shirt that said, \"don\\'t be snitching,\"',\n", + " 'hold it, fuck five-o',\n", + " 'germany fuck five-o',\n", + " 'russia fuck five-o',\n", + " 'world fuck five-o',\n", + " \"finland, we're running from the cops\",\n", + " \"who's next?\",\n", + " \"we're running from the feds\",\n", + " \"we're running from the feds\",\n", + " \"fuck five-o we're running from the feds\",\n", + " 'to jest gang z albanii',\n", + " 'a nie jakieś kurwa yolo',\n", + " 'wjeżdża prawdziwy milion',\n", + " 'i stoi z nami na molo',\n", + " 'jestem pijany jak świnia',\n", + " 'mam ochotę na chlanie',\n", + " 'czuję że już się zbliża',\n", + " 'ostre kitowanie',\n", + " 'chce się dobrze nakurwić',\n", + " 'choć za wcześnie na gogo',\n", + " 'naćpam się jak mikołaj',\n", + " 'zrobię mordą hoho',\n", + " 'chciałbym wziąć cię za rękę',\n", + " 'kicnąć z tobą jak zając',\n", + " 'słyszę jakieś głosy',\n", + " 'to pieniądze gadają',\n", + " 'ty i ja wraz z gangiem dzisiaj znikamy na noc',\n", + " 'so let’s do it like they do on',\n", + " 'discovery channel',\n", + " 'ty i ja wraz z gangiem dzisiaj znikamy na noc',\n", + " 'so let’s do it like they do on',\n", + " 'discovery channel',\n", + " 'tiri tiri',\n", + " 'tiri tiri',\n", + " 'tiri tiri',\n", + " 'tiri tiri',\n", + " 'ty i ty',\n", + " 'to jest gang albanii',\n", + " 'a nie elvis presley',\n", + " '2015 kurwa jestem',\n", + " 'popek firma, król albanii',\n", + " 'człowiek orkiestra wasze serca rozpali',\n", + " 'ty i ja wraz z gangiem dzisiaj znikamy na noc',\n", + " 'so let’s do it like they do on',\n", + " 'discovery channel',\n", + " 'ty i ja wraz z gangiem dzisiaj znikamy na noc',\n", + " 'so let’s do it like they do on',\n", + " 'discovery channel',\n", + " 'prostytutki skaczą z dachu burj khalifa',\n", + " 'krzycząc królu złoty, zajebista płyta',\n", + " 'z książem z dubaju robił zdjęcia',\n", + " 'i na kolanach płacze ze szczęścia',\n", + " 'give me baby hotel o 4 rano',\n", + " 'so let’s do it like they do on',\n", + " 'discovery channel',\n", + " 'ty i ja wraz z gangiem dzisiaj znikamy na noc',\n", + " 'so let’s do it like they do on',\n", + " 'discovery channel',\n", + " 'tiri tiri',\n", + " 'tiri tiri',\n", + " 'tiri tiri',\n", + " 'tiri tiri',\n", + " 'ty i ty',\n", + " \"tonight you're gonna see some breaking\",\n", + " 'and some rapping, and some breaking',\n", + " 'and some scratching, and some breaking',\n", + " 'and some , and some breaking',\n", + " \"and then... you're gonna see some more breaking\",\n", + " 'chcecie jeszcze coś, czy już mamy iść (...)',\n", + " 'chcecie posłuchać nas jeszcze?',\n", + " 'no to wam teraz kurwa zagramy hita',\n", + " \"don't you know?\",\n", + " \"that it's true\",\n", + " 'that for me and you',\n", + " 'you know the world iz a ghetto',\n", + " \"i've been around the world and i've learned one thing\",\n", + " 'more people are living like bums than like kings',\n", + " 'the truth is, the ghetto is a state of mind that you achieve',\n", + " \"i'm more ghetto than you can believe\",\n", + " \"that's where my head's at\",\n", + " \"it's what i talk about in my raps\",\n", + " \"no matter how much cash i get, i can't forget where i came from\",\n", + " 'where i was taught to aim my guns',\n", + " 'where the cops taught a nigga to run',\n", + " 'where i learned to fight',\n", + " 'bitches taught a nigga how to fuck right',\n", + " 'i used to bust raps underneath the street lights',\n", + " \"it's money, baby\",\n", + " \"that's the game, all ghettos are the same\",\n", + " 'too many people, not enough cash',\n", + " 'in comes the evil',\n", + " 'somebody gonna blast, somebody gonna die',\n", + " 'a mama\\'s gonna cry, kneel at the body, look up and say \"why?\"',\n", + " \"don't ask to understand it, don't even try\",\n", + " 'nie wiem co widzisz ty, ale wiem co widzę ja',\n", + " 'chciałoby się krzyczeć, kiedy frajer mówi \"sza\"',\n", + " 'w telewizji widzę, w wiadomościach',\n", + " 'widzę na ulicy (co?) bezdomnego gościa',\n", + " 'on wyciąga rękę, widzę też panienkę',\n", + " 'czeka na frajera, który da jej banknot, który ma dwa zera',\n", + " 'za kawałek cipy, w koło same vipy',\n", + " 'gucci, rolexy, mercedesy i zielone kwity',\n", + " 'i co z tego, już nie widzą bezdomnego',\n", + " 'co wyciąga rękę po kawałek chleba, a tak niewiele trzeba',\n", + " 'aby zmienić dzień chujowy w odrobinę nieba',\n", + " 'w tym momencie kop na cyce, zaliczona gleba',\n", + " 'koleś leży - rolex zmienia właściciela',\n", + " 'nie ma mercedesa i nie ma też portfela',\n", + " 'taki obraz znam, taki widzę, opisuję',\n", + " 'na tej płycie prezentuję...',\n", + " 'polska 2001 - ja pierdolę!',\n", + " 'patrzę w telewizor i testuję nerwy',\n", + " 'zamiast wziąć się za porządki, pierdolą bez przerwy',\n", + " 'farmazony, polityczne kurwy i kondony',\n", + " 'kaczka czy pies, dla mnie jedna świnia',\n", + " 'cała sytuacja to jedna wielka kpina',\n", + " 'kłótnia przy korycie o stołki i talary',\n", + " 'a dla ludzi haracz oraz kary',\n", + " \"but there's something in the ghetto that is nowhere else\",\n", + " \"it's the love that we have ourself although we lack wealth\",\n", + " 'reaching many of the places just take time',\n", + " 'and looking to the kids faces, all the single mother',\n", + " 'working two jobs for a fam, determined',\n", + " 'to make it with or without the man, the little boy',\n", + " 'bouncing his ball, little girl with the violin',\n", + " 'have a dream of carnegie hall, yo',\n", + " 'man on the wheelchair smile at the north, makes all my problems seem',\n", + " \"so small, cause in the ghetto you're taught\",\n", + " 'to get up when you fall, shake it off',\n", + " \"and everything that ain't ghetto seems so soft\",\n", + " 'people from the ghetto got a pride in them, a common bond',\n", + " 'survival you can call it, if you wanna',\n", + " 'from warsaw streets to south central corners',\n", + " 'from poland to california, the world iz a ghetto',\n", + " '(x2)',\n", + " 'mało ci życia na kredycie, w co grasz?',\n", + " 'chętnie się zamienię jeśli za dobrze masz',\n", + " 'życie jest ciężkie nie każdy o tym wie. teraz mówię ja!',\n", + " 'jędker z.i.p',\n", + " 'w życiu lata chude i tłuste',\n", + " 'nie wieżę, że ponad zdrowie przedkładasz kapustę',\n", + " 'progres powiem też jest do zrobienia',\n", + " 'jeśli uda się ominąć chwile zwątpienia',\n", + " 'lecz nie do przecenienia żywot toczy się dalej',\n", + " 'znowu skrecz, finansowy red alert',\n", + " 'czas upływa stale dopada pierdolony kredyt',\n", + " 'człowiek w polsce, skazany jest na niebyt',\n", + " 'wiązanie końca z końcem, codziennie',\n", + " 'dopóki nie wymięknie',\n", + " 'podatki? wiem kto ma pięknie',\n", + " 'zerkam w portfel świeci pustką',\n", + " 'głodny przed mpc-etą',\n", + " 'przerabiałem już to',\n", + " 'głód, pusta karta i długopis, boże',\n", + " 'która kawa na czczo bla, nie wiem',\n", + " 'tworzę!',\n", + " '(x2)',\n", + " 'life, spin cash, money, nigga fuck credit',\n", + " \"the corporate motherfuckers, make sure nigga's indebted\",\n", + " 'your word that bust ya ass to make shit, you eat shit',\n", + " \"you tryna keep up with mr. jones, nigga it ain't shit\",\n", + " \"put up a funny joke about nigga it's stoned, that's bullshit\",\n", + " 'fuck up your credit, nigga the bullshit',\n", + " \"dealin' with these niggas and bitches who ain't got shit\",\n", + " \"talkin' about black i got five, give me the rest of credit\",\n", + " 'just dead it, you heard my nigga big dame',\n", + " \"givin' not enough free dope for me to live so\",\n", + " 'i live life, stack cash, money, fuck that credit',\n", + " 'and leave something for my kids to inherit',\n", + " \"these corporate motherfuckers'll make sure you own\",\n", + " \"that's why i move with the big thing nigga and rushin'\",\n", + " '(x2)',\n", + " \"the world itself's just one big hoax. spamming each other with our burning commentary of bullshit masquerading as insight, our social media faking as intimacy. or is it that we voted for this? not with our rigged elections, but with our things, our property, our money. i'm not saying anything new. we all know why we do this, not because hunger games books makes us happy but because we wanna be sedated. because it's painful not to pretend, because we're cowards. fuck society\",\n", + " 'safari - moja podstawowa przeglądarka',\n", + " 'chciałem coś sprawdzić ale nie mogę bo aktualizacja',\n", + " 'przypomnij mi jutro, a teraz się odjeb',\n", + " 'bo jak będę chciał update to sobie go ściągnę',\n", + " 'czemu akurat teraz jak przeglądam ważne aukcje',\n", + " 'zawsze otwieram linki w nowej karcie',\n", + " 'technologia - nie ufam jej',\n", + " 'może i jest dobra ale wkurwia mnie, okej?',\n", + " 'technologia - nie ufam jej',\n", + " 'może i jest dobra ale wkurwia mnie (trochę), okej?',\n", + " '(scottie edge)',\n", + " 'trapped behind borders',\n", + " 'swimmin in foreign waters',\n", + " 'importes, exporters',\n", + " \"informers, flippin' on tape recorders\",\n", + " 'like da man dat knew too much',\n", + " 'never knew enough',\n", + " 'knew who to trust',\n", + " \"i'm talkin espionage\",\n", + " 'in camoflauge',\n", + " 'like boats on bogs',\n", + " 'in bayou fogs',\n", + " 'ya had ya secret plans',\n", + " 'ya microfilm',\n", + " 'secret agent man',\n", + " 'a view to a kill',\n", + " \"i'm talkin goldeneye\",\n", + " 'da l to da i',\n", + " 'r-o-y',\n", + " 'show me how ya spy',\n", + " '(mr. kaves)',\n", + " 'the saint with the halo',\n", + " 'the payroll',\n", + " 'da kavesman',\n", + " 'the mademan',\n", + " \"don't give a fuck what you say man\",\n", + " 'take over your chat room, got my',\n", + " 'powermac',\n", + " 'on mr. kaves-dot-com',\n", + " 'if you wanna get it on da breathtaker',\n", + " 'da bonebreaker',\n", + " 'da freshmaker',\n", + " 'the loanshark bet taker',\n", + " 'the ny skyscraper',\n", + " 'spy vs. spy',\n", + " 'look into my eyes',\n", + " 'try to cross the border',\n", + " 'to live & let die',\n", + " '(liroy)',\n", + " 'nowy jork, nowy jork!',\n", + " 'liroy znów nadciąga tu',\n", + " 'powiedz mi, powiedz co się stanie mu',\n", + " 'kiedy...wkraczamy do miasta',\n", + " 'liroy, lordz of brooklyn - cisnienie',\n", + " 'narasta',\n", + " 'wzrasta adrenalina, scyzoryk l swe',\n", + " 'rymy zaczyna',\n", + " 'mamy 1997 w kalendarzu na ścianie',\n", + " 'zadanie proste - freestyle na planie',\n", + " 'rym nasuwa się prosto z mojej głowy',\n", + " 'odruch ten bracie jest bezwarunkowy',\n", + " 'różowy cadillac przejeżdża obok mnie',\n", + " 'pytanie zachodzi gdzie ja jestem, gdzie?',\n", + " 'bay ridge, brooklyn, nowy jork',\n", + " 'jeśli znasz ten klimat',\n", + " 'jeśli znasz ten klimat to -',\n", + " '1995 to był rok kiedy pierwszy raz',\n", + " 'ujrzalem nowy jork',\n", + " 'polska - stany, czas na porównanie',\n", + " 'jeśli na to liczysz - zapomnij!',\n", + " 'nic się nie stanie takiego kolego',\n", + " 'skoomaj moją przestrzeń',\n", + " 'lordz of brooklyn powie ci coś',\n", + " 'jeszcze...',\n", + " 'chorus:',\n", + " 'spy vs. spy',\n", + " 'look into my eyes',\n", + " 'try to cross the border',\n", + " 'to live & let die',\n", + " '(breakdown w/sasch jenkins)',\n", + " '(paulie two times)',\n", + " 'throughtout the five boroughs',\n", + " \"paulie's rockin thorough\",\n", + " 'you slept like a sedative',\n", + " \"my style's never repetitive\",\n", + " 'you must pay attention',\n", + " 'to what i bhe mentionin',\n", + " 'when my microphone drops',\n", + " \"it's your brain i'm dentin' in\",\n", + " \"inventin' in\",\n", + " 'lunical lyrics',\n", + " 'with no repent',\n", + " \"i'll leave that mug all red\",\n", + " 'and that nose bone bent',\n", + " 'fuck the shure shot',\n", + " 'i got the direct hit',\n", + " 'my crew be on the rise',\n", + " 'like alcohol & unemployment',\n", + " 'but on a serious note',\n", + " \"i rock mc's like the vote\",\n", + " 'from sea to shining sea',\n", + " \"i got ya noddin'\",\n", + " 'like a bag a dee dee dee dee',\n", + " '(ad-money)',\n", + " 'bangin billy bats',\n", + " 'shootin craps on ya life wit a knife',\n", + " \"for the streets of my turf, gettin' hurt\",\n", + " 'cross the line ny express - 007 fuck',\n", + " 'that!',\n", + " \"yo, he better pay his fuckin' debt\",\n", + " '(bobalou & the 7th power)',\n", + " \"it's the spyhunter - seven\",\n", + " \"comin' in the name of thunder\",\n", + " 'i bring hell like thunder',\n", + " \"poland, hold up... new york's comin'\",\n", + " 'through',\n", + " \"lob... that's my crew\",\n", + " 'bringin in to your dome once again',\n", + " 'babalouu??? i meand dead',\n", + " 'president get blow up, hold up',\n", + " 'mc get smoked up',\n", + " 'where ya gonna run?',\n", + " 'ny you cannot run',\n", + " 'popek',\n", + " 'patrz komu ufasz',\n", + " 'i patrz kogo ruchasz',\n", + " \"i don't care of your road\",\n", + " 'anyone can go',\n", + " \"i don't care of your road\",\n", + " 'anyone can go',\n", + " \"i said i don't care of your road\",\n", + " 'anyone can go',\n", + " 'i know them vodoo',\n", + " 'dont take away your soul',\n", + " 'zawsze mi powtarzał, że się nigdy nie zakocha',\n", + " 'miał głowę na karku, nigdy nie walił do nocha',\n", + " 'nie wiem w jaki sposób omotała go ta locha',\n", + " 'ale poszedł do burdelu no i w kurwie się zakochał, jezus',\n", + " 'miał tatuaż \"patrz komu ufasz\"',\n", + " 'w wolnym tłumaczeniu kogo ruchasz',\n", + " 'na dziesięć lat do puchy wyśle go ta suka',\n", + " 'mózgiem operacji był tam jego kutas',\n", + " 'pochwalił się dziwce no i muka',\n", + " 'i po chuj ci ten tatuaż \"patrz komu ufasz\"?',\n", + " 'z miłości do tej kurwy leży cała jego grupa',\n", + " 'łukasz się zawinął no i pali głupa',\n", + " 'morda w kubeł, cichosza i nic nie mówcie dziwkom',\n", + " 'nawet jakby oczy zarosły ci pizdą',\n", + " 'morda w kubeł brat, bo na prawdę stracisz wszystko',\n", + " 'jak będziesz spowiadał się dziwkom',\n", + " 'konsekwencje jak strzał na ryj spadną ci na głowę szybko',\n", + " 'możesz być na siebie zły albo podziękuj tym dziwkom',\n", + " 'którym tak mówiłeś wszystko, o i porwaniach',\n", + " 'teraz ona na komendzie się na ciebie rozpierdala',\n", + " \"i don't care of your road\",\n", + " 'anyone can go',\n", + " \"i don't care of your road\",\n", + " 'anyone can go',\n", + " \"i said i don't care of your road\",\n", + " 'anyone can go',\n", + " 'i know them vodoo',\n", + " 'dont take away your soul',\n", + " \"i don't care of your road nigga\",\n", + " 'anyone can go nigga',\n", + " 'i know them vodoo',\n", + " 'dont take away your soul nigga',\n", + " \"i don't care of your road\",\n", + " 'anyone can go',\n", + " 'i know them vodoo',\n", + " 'dont take away your soul nigga',\n", + " 'hoes want to be mad but my wet flow will kill me',\n", + " 'skills like mel b who let talking filthy',\n", + " \"i'm the one to feel free\",\n", + " 'say what i want that for real g',\n", + " 'ab dont play with me',\n", + " \"i would take your babe i'm a pimp, see\",\n", + " 'my wave - windy',\n", + " 'that still be heist is in me',\n", + " \"i don't care of your road\",\n", + " 'anyone can go',\n", + " \"i don't care of your road\",\n", + " 'anyone can go',\n", + " \"i said i don't care of your road\",\n", + " 'anyone can go',\n", + " 'i know',\n", + " 'endorfiny, skurwysyny',\n", + " 'znowu drzemy japy',\n", + " 'give me that, daj mi to',\n", + " 'give me that, oddaj to',\n", + " 'give me that, daj mi to',\n", + " 'give me that, oddaj to',\n", + " 'give me that, też to chcesz?',\n", + " 'gospel, kurwa, co ty ćpiesz?',\n", + " 'jak troskliwe misie non-stop nakurwiam szczęściem',\n", + " 'ćpam życie całe życie albo jeszcze kurwa częściej',\n", + " 'athanatos salva me!',\n", + " 'i walk through fire where the ardent sky has no limit',\n", + " 'revival of the sword, triumphant revenge',\n", + " 'genesis! odium invictus!',\n", + " 'through raging chaos',\n", + " 'a stardust incarnate',\n", + " 'dawn of blades! everlasting and sacred',\n", + " 'fire descends bringing gnosis to these lands',\n", + " 'misticum! through our will',\n", + " 'through our sheer defiance',\n", + " 'majestic and blessed!',\n", + " \"a new order's conceived in explosions and blasts\",\n", + " 'cras es noster! omega reigns supreme!',\n", + " 'a prophet of extinction igniting the fires',\n", + " 'swearing allegiance to one burning will',\n", + " 'making a road for the spirit',\n", + " 'listen to the messenger',\n", + " 'trust my nemesis to seal extinction',\n", + " 'reclaim! the day of reckoning is nigh!',\n", + " 'cras es noster! omega reigns supreme!',\n", + " 'a prophet of extinction igniting the fires',\n", + " 'standing on the threshold of a terrible fate',\n", + " 'making a road for the spirit',\n", + " 'tonight we stand up to judge the old world',\n", + " 'in the silence of a shameful white flag, it shrinks away',\n", + " 'tyrants, regimes will all come down to dust',\n", + " 'mediocrities will perish',\n", + " 'i condemn everything you stand for',\n", + " 'liberation from dirt',\n", + " 'liberation from you',\n", + " 'eulogists of gods! go fuck yourself with your voodoo!',\n", + " 'the sun of death burns you down to nought!',\n", + " 'ta noc jest ogromna i świetlista',\n", + " 'w strugach wieczności',\n", + " 'zorza, która nigdy nie gaśnie',\n", + " 'spieniony potop płomieni',\n", + " 'wasz świat się rozpada',\n", + " 'przemawia ogień',\n", + " 'i śmierć przemawia',\n", + " 'jej majestat przedwieczny',\n", + " 'u fundamentów świata',\n", + " 'widnokrąg jasny i zimny',\n", + " 'z mej krwi...',\n", + " 'przez me oczy patrzący',\n", + " 'głodnych kruków krążą stada',\n", + " 'kopcie groby, kopcie groby...',\n", + " 'get, get, get the fuck out, wild west, pull a gun out',\n", + " 'get back, pull the bud out , never run out',\n", + " 'dark voice in my head that i shut out',\n", + " \"but every now and then it's gotta come out, run out\",\n", + " \"howlin' at the moon from the window in my room\",\n", + " 'with the body on the floor and his throat cut out',\n", + " 'all that tough talk you need to cut out',\n", + " 'time to hit the store before we run out, hit the stage and bug out',\n", + " 'you married to a slut we know she dug out',\n", + " 'always at the party with her butt out',\n", + " \"type to save her cig and put the butt out, i ain't the one to cuss out\",\n", + " \"i'll hit you with some acid in your face that you can't rub out\",\n", + " 'bust a fuckin shot and clear the club out',\n", + " \"i ain't at the spot that we once hung out, take some vitamins you lookin strung out\",\n", + " \"one more word, i'll cut your tongue out, look at who they brought out\",\n", + " \"middle fingers up you know we don't give a\",\n", + " \"fuck, fuck (don't give a fuck)\",\n", + " \"w chuju to mam, mam (don't give a fuck)\",\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " \"don't give a fuck, fuck (don't give a fuck)\",\n", + " \"w chuju to mam, mam (don't give a fuck)\",\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " 'nigdy nie nalegałem, by stać obok was na regale',\n", + " 'tu co drugi marny grajek twierdzi, że ma hype i kasę',\n", + " 'mam nadzieję, że se zdajesz sprawę, że te suki kłamią',\n", + " 'mówią, że lecą po bitach, chociaż ledwo utykają',\n", + " 'jestem słoń, mutylator, życie, smak ma porażki',\n", + " 'tak więc, wpuśćmy ci troszeczkę światła do czaszki',\n", + " 'ze mną ta banda z holandii, wersety podłe dla ogrów',\n", + " 'jucha ci sika z czerepu jakbyś chciał podlewać ogród',\n", + " 'monstrum, przez miasto niosę w zębach truchło',\n", + " 'wciąż nie mieszczę ci się w głowie, więc ci pęka mózg, ziom',\n", + " 'serio nie kłam, że nas nie kojarzysz tępa kurwo',\n", + " 'jesteśmy nie do zatrzymania tak jak stepback z trójką',\n", + " 'półmrok, za oknem płonie castlevania',\n", + " 'możesz mnie nazywać chronos, bo tak jak czas nie zwalniam',\n", + " 'oni wciąż gadają o ciuchach, wow, to fajnie, brawa',\n", + " 'wyłączam po drugim wersie, bo kurwa zasnę zaraz',\n", + " \"fuck, fuck (don't give a fuck)\",\n", + " \"w chuju to mam, mam (don't give a fuck)\",\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " \"don't give a fuck, fuck (don't give a fuck)\",\n", + " \"w chuju to mam, mam (don't give a fuck)\",\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " 'get the fuck outta my room, get outta my house',\n", + " 'get the fuck outta my face, before this shit get loud',\n", + " \"before i go rick james, start fuckin' up your couch\",\n", + " 'then i get all savage, get punched straight in your mouth',\n", + " \"hooligan style, man, i get all foul, these nigga's don't want no piece of me\",\n", + " \"we down with a crazy crowd, come try and test and you'll be history\",\n", + " \"i'm datin' lady death and she be kissin' me\",\n", + " \"i don't disagree, but this bitch need some listerine\",\n", + " \"the stench of death man i can feel it in my neck, and i can feel that i'm possessed (there ain't no rest if you're so wicked)\",\n", + " 'burn in hell, i gotta take it to heaven for all my niggas',\n", + " 'but we probably not enlisted in heaven, they got a system',\n", + " \"get the fuck out, yeah, words coming out of god's mouth\",\n", + " \"i tell the devil, let me come down, 'cause i'm marked now\",\n", + " \"'cause i'm running from the truth, but i'm still running like a\",\n", + " \"fuck, fuck (don't give a fuck)\",\n", + " \"w chuju to mam, mam (don't give a fuck)\",\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " \"don't give a fuck, fuck (don't give a fuck)\",\n", + " \"w chuju to mam, mam (don't give a fuck)\",\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " 'get, get, get the fuck out',\n", + " 'wy-wy wypierdalaj',\n", + " 'i got bad bitch in my jordans',\n", + " \"flexin' in my jordans\",\n", + " 'they gonna say this',\n", + " 'they gonna say that',\n", + " \"but i made it from nothin'\",\n", + " 'this bitch bad, she cunning',\n", + " 'some cheese nigga, she want it',\n", + " 'ey 2k, this a madness, ha-ha-ha!',\n", + " 'i got bad bitch in my jordans',\n", + " \"flexin' in my jordans\",\n", + " 'they gonna say this',\n", + " 'they gonna say that',\n", + " \"but i made it from nothin'\",\n", + " 'this bitch bad, she cunning',\n", + " 'some cheese nigga, she want it',\n", + " 'whip clean so i run it',\n", + " 'she drip hard like gunna',\n", + " 'she drip hard like gunna',\n", + " \"i'm in the air nigga like jordan\",\n", + " 'they were saying this they were saying that',\n", + " 'but i made all this happen',\n", + " 'all my homies gonna flex for real',\n", + " \"none these niggas ain't real for real\",\n", + " \"i'm livin' my life, nigga flex for real\",\n", + " 'work so hard, get my cash for real',\n", + " 'by my own nigga, by my own, been keeping money then invest',\n", + " \"we tried a lot nigga, tried cuz we didn't got any interest\",\n", + " 'nigga thousands bucks, nigga thousands bucks now u gonna show up at my event',\n", + " 'i get the trap in my veins',\n", + " 'i get the trap in my veins',\n", + " 'i got your bitch on my phone',\n", + " 'she said she wants me some love',\n", + " 'oh my god she already knows',\n", + " 'i only count on my bros',\n", + " 'pull up my nigga, we gone',\n", + " 'i get 2k on my prod',\n", + " \"and i'm making my mama so proud\",\n", + " \"and i'm making my mama so proud, yeah yeah\",\n", + " 'i got bad bitch in my jordans',\n", + " \"flexin' in my jordans\",\n", + " 'they gonna say this',\n", + " 'they gonna say that',\n", + " \"but i made it from nothin'\",\n", + " 'this bitch bad, she cunning',\n", + " 'some cheese nigga, she want it',\n", + " 'whip clean so i run it',\n", + " 'she drip hard like gunna',\n", + " 'i got bad bitch in my jordans',\n", + " \"flexin' in my jordans\",\n", + " 'they gonna say this',\n", + " 'they gonna say that',\n", + " \"but i made it from nothin'\",\n", + " 'this bitch bad, she cunning',\n", + " 'some cheese nigga, she want it',\n", + " 'whip clean so i run it',\n", + " 'she drip hard like gunna',\n", + " 'chcieliby wejść w moje buty',\n", + " 'ona pozuje do zdjęć, big booty ass bitch, twarz suki, oh',\n", + " 'lepiej zapytaj się czego nie lubi, oh',\n", + " 'lepiej nie pytaj się czemu nie lubi',\n", + " 'chyba mnie powoli nudzi',\n", + " 'nie mam wciąż czasu na groupies',\n", + " 'się nie zachowuje, kurwa, jak newbie, mała',\n", + " 'nawet jak płyną te litry wódy',\n", + " 'melanż niedługo mi zniszczy ludzi',\n", + " 'znowu mi dzwonią by wyjść się upić',\n", + " 'poza kontrolą jak wilku',\n", + " 'robię to z głową by wyjść na ludzi',\n", + " 'oni pierdolą to idź ich ucisz',\n", + " 'mówią mi w kółko - \"licz te sumy\"',\n", + " 'niedawno stałem na winklu',\n", + " 'nie chciałem nic w zamian, a dzisiaj to biorę co moje i spieprzam',\n", + " 'w głowie mam ciągle bałagan, a w płucach brakuje powietrza',\n", + " 'nie mam już czasu na gierki, zawijam szybko jak roadster tesla',\n", + " 'biorę tą forsę, wiesz jak jest, jakbym to rzucał w osiedla',\n", + " 'i got bad bitch in my jordans',\n", + " \"flexin' in my jordans\",\n", + " 'they gonna say this',\n", + " 'they gonna say that',\n", + " \"but i made it from nothin'\",\n", + " 'this bitch bad, she cunning',\n", + " 'some cheese nigga, she want it',\n", + " 'whip clean so i run it',\n", + " 'she drip hard like gunna',\n", + " 'i got bad bitch in my jordans',\n", + " \"flexin' in my jordans\",\n", + " 'they gonna say this',\n", + " 'they gonna say that',\n", + " \"but i made it from nothin'\",\n", + " 'this bitch bad, she cunning',\n", + " 'some cheese nigga, she want it',\n", + " 'whip clean so i run it',\n", + " 'she drip hard like gunna',\n", + " \"you know, i'm tired of all the aggression, huh\",\n", + " 'i just wanna sing songs like when we were kids, you know',\n", + " 'you know that',\n", + " '- zamknij kurwa ryj',\n", + " 'rub-a-dub-dub, three bodies in the tub',\n", + " 'now who the fuck you think that they be? (now who they be?)',\n", + " 'the hater, the faker, the whack track maker',\n", + " \"fuck it, i’mma make 'em all bleed (make 'em bleed)\",\n", + " 'you better invest in a vest',\n", + " 'or get a hole left in your chest',\n", + " 'i roll with the best of the best',\n", + " 'dudes wanna test, that’s a bad decision',\n", + " \"i don't suck my own dick and i ain't into ass kissing\",\n", + " 'another ass-kicking commences',\n", + " \"give a fuck about the outcome or if it's offensive\",\n", + " \"'cause when the dead walk we will live within fences\",\n", + " 'and i\\'ll bring \"lucille\" when i visit your campus',\n", + " 'śmierć tańczy, rozsiewając wokół trupów zapach',\n", + " 'ja chcę jak bóg ukarać łaków na poziomie gugu-gaga',\n", + " 'więc kundlu japa, w herbie martwica mózgu nadal',\n", + " 'nie dotkniesz mojej poprzeczki, choćbyś na chuju stawał',\n", + " 'bij na alarm, nadciąga piekielny szwadron',\n", + " 'wstaw w cudzysłów, że cechuje nas niedelikatność',\n", + " 'to czysty hardkor, plujemy w ryj tym pseudoznawcom',\n", + " 'konkurencja nie istnieje, jak pięciozłotowy banknot',\n", + " 'temper, temper, never count to ten when',\n", + " 'my rowdy gang enter, we split the crowd center',\n", + " 'we light incense with the scent of death',\n", + " 'invent sick tracks with intent to wreck',\n", + " 'so, mic check, one, two, fuck you and you too',\n", + " 'if you make it past me, you gotta face off with chu',\n", + " 'so do what you do and stay over there',\n", + " \"'cause we ain't having no bullshit over here\",\n", + " 'na majku społeczny odpad, zwykły prostak z nadwagą',\n", + " 'w dłoniach mam kije do golfa, a oddech cuchnie jak jabol',\n", + " 'wyczuwam strach łamago, niczym szkolony labrador',\n", + " 'niech przy tym tracku wasze babcie się dziś w piekle łajdaczą',\n", + " 'nad miasto przyleciał znów b29',\n", + " 'zmień ksywę na nawóz, od dzisiaj zamieszkasz w glebie',\n", + " 'i mnie się nie pozbędziesz nawet z pomocą koleżków',\n", + " 'jestem jak bakterie kału na twej szczoteczce do zębów',\n", + " 'rub-a-dub-dub, three bodies in the tub',\n", + " 'now who the fuck you think that they be? (now who they be?)',\n", + " 'the hater, the faker, the whack track maker',\n", + " \"fuck it, i’mma make ’em all bleed (make 'em bleed)\",\n", + " 'i went to hell and back, driving in a red cadillac',\n", + " 'i never left, now i even got the devil back',\n", + " 'i never rest, see my heart is in the wicked places in my chest',\n", + " \"nevertheless, i don’t stress, 'cause i'm dead already\",\n", + " \"and hella mella sweaty burnin' all your lily kelly\",\n", + " \"people lookin’ at me petty, like i'm fetty wap\",\n", + " \"aim my glock at your flock, 'cause they ready now\",\n", + " 'i let it pop, you gon feel it like a belly flop',\n", + " \"i'mma bully, i'mma jock, i'm the fuckin' rock\",\n", + " \"i'mma chip off the old block, you fuckin' flop\",\n", + " 'killing niggas like a cop, it will never stop',\n", + " 'always rapping for the real, rest in peace to pops',\n", + " 'he in heaven now, but i be still in hell a lot',\n", + " 'the demon knights in the castle of camelot',\n", + " 'they still in shock never open up the devils box',\n", + " \"see, that's a warning, it's gettin' warm, it's hella hot\",\n", + " 'rub-a-dub-dub, three bodies in the tub',\n", + " 'now who the fuck you think that they be? (now who they be?)',\n", + " 'the hater, the faker, the whack track maker',\n", + " \"fuck it, i'mma make 'em all bleed (make 'em bleed)\",\n", + " 'keep it classy...',\n", + " 'so classy',\n", + " 'no matter what it is in life you choose to do',\n", + " 'you gotta keep it classy',\n", + " 'keep it classy, yeah, keep it classy',\n", + " 'yeah, dat x on the european tour',\n", + " \"i'm give you much more than your average whore\",\n", + " \"now, what's poppin'?\",\n", + " 'you should go copy when this joint come out',\n", + " \"you need to pull out the gun, cause that's 74 year\",\n", + " 'gimme some smoke and a bottle of beer',\n", + " \"and we're good, send my check when you could\",\n", + " 'the sooner, the better, your wife gave your ex some head',\n", + " 'then you should get her',\n", + " 'from warsaw to cracow, the chemist have no limits',\n", + " 'wave the polish flag in the air',\n", + " 'when i go there, yeah, cross the atlantic on a bird',\n", + " 'my passport is good, so fuck what you heard',\n", + " 'the professor similar to lech wałęsa',\n", + " 'i move all the masses plus shake their asses',\n", + " 'the skinny man with glasses, giving no passes',\n", + " 'you gotta earn the shit, fuck around with the dat',\n", + " \"now, i'm a burn your shit\",\n", + " \"it's like that, yo, and you don't stop\",\n", + " \"i'm dat x and gurantee the hit, sure shot\",\n", + " \"it's like that, yo, and you don't quit\",\n", + " \"i'm dat x getting all that i can get like that\",\n", + " 'no matter what it is in life you choose to do',\n", + " 'you gotta keep it classy',\n", + " 'and if you wanna be respected by the people for what you do',\n", + " 'you gotta keep it classy',\n", + " 'and everytime that you step in a booth, you got to speak the truth',\n", + " 'then keep it classy',\n", + " 'because the lord gotta plan for me and gotta plan for you',\n", + " 'so keep it classy',\n", + " 'znam tysiąc sposobów jak zrobić dobry track',\n", + " 'fakt, pierdolę nierobów, co widzą tylko hajs',\n", + " 'brat, dziękuję bogu, walczę jak szogun',\n", + " 'ale przede wszystkim jeśli mogę wspieram zawsze ziomów',\n", + " 'znasz, przecież rytuał piątkę, a bluba i ogień dodaj',\n", + " 'tabasco plus sok z kielonka na spodzie',\n", + " 'jeśli masz swoją drogę rób to szczerze',\n", + " 'obojętne kim jesteś burdelmamą, księdzem, ja w to wierzę',\n", + " 'bóg, mahomet, budda ktoś mnie do nieba zabierze',\n", + " 'i nie mam zamiaru utrudniać',\n", + " 'wiesz co mnie wkurwia, to niemal jak klątwa',\n", + " 'do dziś podchodzą w klubach bym im sprzedał na jointa',\n", + " 'to nie kwestia skąpstwa, a klasy, którą masz',\n", + " 'wiem, że kiepsko wyglądam i mam podejrzaną twarz',\n", + " 'brat stać mnie, by na koncertach dać wszystko tu nim padnę',\n", + " 'nowy jork, londyn, warszawa, łódź w transie',\n", + " 'non-stop na trasie tryb życia polaka',\n", + " 'co wciąż jara się rapem, ale boi się latać',\n", + " 'jeśli boli wrzuć apap, to nie papa dance czy kombi',\n", + " \"o.s.t.r.'y, sadat x niszczymy tandetę jak wąglik\",\n", + " 'no matter what it is in life you choose to do',\n", + " 'you gotta keep it classy',\n", + " 'and if you wanna be respected by the people for what you do',\n", + " 'you gotta keep it classy',\n", + " 'and everytime that you step in a booth, you got to speak the truth',\n", + " 'then keep it classy',\n", + " 'because the lord gotta plan for me and gotta plan for you',\n", + " 'so keep it classy',\n", + " 'no matter what it is in life you choose to do',\n", + " 'you gotta keep it classy',\n", + " 'and if you wanna be respected by the people for what you do',\n", + " 'you gotta keep it classy',\n", + " 'and everytime that you step in a booth, you got to speak the truth',\n", + " 'then keep it classy',\n", + " 'because the lord gotta plan for me and gotta plan for you',\n", + " 'so keep it classy',\n", + " 'keep it classy...',\n", + " 'jessi-i-i.. jessi-i-i..',\n", + " 'aj aj aj, girl you take me high',\n", + " 'wszystko albo nic',\n", + " 'now listen to your dreams',\n", + " 'and let me be your prince',\n", + " 'niech spadnie deszcz',\n", + " 'ty bardzo tego chcesz',\n", + " 'dobrze wiesz, że ja też',\n", + " 'ej, ej, ej',\n", + " 'i want you to stay',\n", + " 'all the night and day',\n", + " 'and never go away',\n", + " 'nic nie rozłączy nas',\n", + " 'the sun shines for us',\n", + " 'między nami czar',\n", + " 'just the way you are',\n", + " \"jessica, baby please don't make me cry\",\n", + " 'tylko buzi daj, buzi daj',\n", + " \"jessica, baby please don't break my heart\",\n", + " 'udowodnię ci, że jestem wart',\n", + " 'daj mi trochę szans',\n", + " \"i'll show you how i dance\",\n", + " \"it's all about us\",\n", + " 'i nie liczy się czas',\n", + " 'wanna feel your touch',\n", + " 'w moje oczy patrz',\n", + " 'just love me tender',\n", + " 'a ja przy tobie będę',\n", + " 'you got me love stoned',\n", + " 'więc nie mów \"idź stąd\"',\n", + " 'to nie żaden błąd',\n", + " 'but this is what you want',\n", + " 'księżniczko ty',\n", + " 'zmieniasz zamek, gdy',\n", + " 'znajdę klucz do twego serca',\n", + " 'które jest jak twierdza',\n", + " 'oł oł oł',\n", + " \"i'll never let you go\",\n", + " 'i love you all the way',\n", + " 'i nigdy, nigdy mniej',\n", + " 'please, please, please',\n", + " 'gimme gentle kiss',\n", + " 'nie wiem, ile masz iq',\n", + " 'but i just like you',\n", + " \"jessica, baby please don't make me cry\",\n", + " 'tylko buzi daj, buzi daj',\n", + " \"jessica, baby please don't break my heart\",\n", + " 'udowodnię ci, że jestem wart',\n", + " 'daj mi trochę szans',\n", + " \"i'll show you how i dance\",\n", + " \"it's all about us\",\n", + " 'i nie liczy się czas',\n", + " 'wanna feel your touch',\n", + " 'w moje oczy patrz',\n", + " 'just love me tender',\n", + " 'a ja przy tobie będę',\n", + " 'jessica, jessica, jessiiiiiccaaaa',\n", + " 'jessica, jessica, jessiiiiiccaaaa',\n", + " 'ej, ej, ej',\n", + " 'i want you to stay',\n", + " 'all the night and day',\n", + " 'and never go away',\n", + " 'nic nie rozłączy nas',\n", + " 'the sun shines for us',\n", + " 'między nami czar',\n", + " 'just the way you are',\n", + " \"jessica, baby please don't make me cry\",\n", + " 'tylko buzi daj, buzi daj',\n", + " \"jessica, baby please don't break my heart\",\n", + " 'udowodnię ci, że jestem wart',\n", + " 'daj mi trochę szans',\n", + " \"i'll show you how i dance\",\n", + " \"it's all about us\",\n", + " 'i nie liczy się czas',\n", + " 'wanna feel your touch',\n", + " 'w moje oczy patrz',\n", + " 'just love me tender',\n", + " 'a ja przy tobie będę',\n", + " '(ej lbd, a dlaczego w ogóle jessica?)',\n", + " \"if my hair is black was red, toxic, blue and red to badly to this day all this month to keep these all can't manage\",\n", + " 'everydays ganges crossing fire making damage, law and convice to surely gonna pay but this option is too over we will take all of your cash',\n", + " 'miss things shipping she beens for rescuetive high school educate young go representative',\n", + " 'no god and the live is education lose everything never change graduation',\n", + " \"father that's you first got pride of his shoes find your prove and go inside decide to the true,everytime we turn the chick and dont speak to the younger\",\n", + " 'they will come more rebel you think it and did the something',\n", + " 'little girls happen little girl still try to show you after brother tryna safe your world',\n", + " 'proszę, podaruj mi uśmiech i miłość',\n", + " 'a uczucie oddam ze zdwojoną siłą',\n", + " 'nie jest moją winą, że zapominasz o mnie',\n", + " 'że jestem tylko dzieckiem, samemu nie dorosnę',\n", + " 'proszę, podaruj mi uśmiech i miłość',\n", + " 'a uczucie oddam ze zdwojoną siłą',\n", + " 'nie jest moją winą, że zapominasz o mnie',\n", + " 'że jestem tylko dzieckiem, samemu nie dorosnę',\n", + " 'gdybym miał taką moc by tu przetwarzać świat ten',\n", + " 'by honor z zaufaniem przeważał nad blaskiem',\n", + " 'co z tym bogactwem, cierpicie na przesyt?',\n", + " 'za mało na dzień ginie z głodu w afryce dzieci?',\n", + " 'ty przestań bredzić, że wolno czas latem płynie',\n", + " 'w końcu rozjebie łeb ci pięciolatek z karabinem',\n", + " 'za broń i kokainę i za życie w gnoju non-stop',\n", + " 'co bawi ciebie widok jak brzuchy z głodu rosną?',\n", + " 'nalana mordo wypchana kotletem',\n", + " 'to nasza europa wysławiana w świecie',\n", + " 'wolisz odlecieć, sumienie zabijać',\n", + " 'niż myśleć co się dzieje z noworodkami w chinach',\n", + " 'i chuj kogo obchodzi dzień poprzedni',\n", + " 'handel dziećmi, ustalanie cen nieletnich',\n", + " 'to twój pierdolony cel tajlandzkiej wycieczki',\n", + " 'oby los kiedyś ciebie na zawsze zbezcześcił',\n", + " 'spójrz w oczy mordercy na przeciw zagadce',\n", + " 'żyjemy w świecie dzieci zabitych przez matkę',\n", + " 'przymierze z diabłem, era dorosłych',\n", + " 'pytasz o realia? w nich nie ma miłości',\n", + " 'proszę, podaruj mi uśmiech i miłość',\n", + " 'a uczucie oddam ze zdwojoną siłą',\n", + " 'nie jest moją winą, że zapominasz o mnie',\n", + " 'że jestem tylko dzieckiem, samemu nie dorosnę',\n", + " 'proszę, podaruj mi uśmiech i miłość',\n", + " 'a uczucie oddam ze zdwojoną siłą',\n", + " 'nie jest moją winą, że zapominasz o mnie',\n", + " 'że jestem tylko dzieckiem, samemu nie dorosnę',\n", + " \"he takes a deep breath,a longs bunny hops today he says as everyday work work work ethic a fighter browses quickly she's a properly you can see it on a green\",\n", + " 'check every pouch to pays for the sweater short never no more bright to self as a best top but next shop nothing and best shoots comming run if u want he loves to do something',\n", + " \"i can't escape it, gray fingers on the bowl chest and all in grey vision shakes to the law if u go she's always,copy this elusive persines are opened she lend that room in\",\n", + " 'then take a deep breath once steady is noise line and pieces in the door door door nothing a man but he carried a gun and he stopped the black hell he knows he did kill that one',\n", + " 'nobodys fun nobodys cool nobody ever told it be sure its cool that was better fifteen just was a little solider stand young forever and stay here full over',\n", + " 'ugh, yeah word up word up',\n", + " 'ugh-huh.ugh-huh',\n", + " 'yeah yeah',\n", + " 'word up',\n", + " \"yo, it's one for the struggle\",\n", + " 'two for the pain',\n", + " 'three for the niggas with the bullets in their brains',\n", + " 'word up braat',\n", + " 'onyx and slums attack',\n", + " 'yo, yo',\n", + " 'ayo, the first time i got to poland',\n", + " 'i saw the cops patrolling blocks emotional cold as same',\n", + " 'as the as the blocks in ocean',\n", + " 'brooklyn was just ready to took a look on the niggas in the wrong way',\n", + " 'several hours come out to be a long way',\n", + " 'long days turned out into shorter nights, because all my life i have to fight',\n", + " 'in order to survive, escape from self-suicide',\n", + " 'gats up, to the sky, burned on the hip',\n", + " 'hollow tips for the politics',\n", + " 'niggas better learn quick',\n", + " 'real recognize real',\n", + " 'hip-hop, respect that, salute',\n", + " 'eyes red, ready to shoot',\n", + " 'bulletproof, the mic buff',\n", + " 'my nike boots, are shopped off',\n", + " 'slums attack, guns react',\n", + " 'with automatics cause an ave',\n", + " \"i'm making back up\",\n", + " 'sixteens in the clip',\n", + " 'sixteens when i spit',\n", + " 'sixteens in the whip',\n", + " 'one for the trouble',\n", + " 'two for the pain',\n", + " 'three for the niggas with bullets in their brains',\n", + " 'dziewięćdziesiąte lata, odległe miejsca, on słucha!',\n", + " 'oni wykonują, łączy ich hip-hop sztuka',\n", + " 'on drapie płyty, próbuje tworzyć, igły zdziera!',\n", + " 'hip-hop elementy, każdy z nich dziś pożera show!',\n", + " 'koncerty, teledyski, bariera marzeń',\n", + " 'ludzie z pasją doprowadzają do tych zdarzeń',\n", + " 'tworzą historie, o.n.y.x, tewu, slu, wspólny projekt',\n", + " 'rozpoznaj combo z la bomby, nagrany jakiś czas temu',\n", + " 'colabo slu, onyx, człowieku nic złego nie mów',\n", + " 'kilka lat temu pamiętam, z darkiem lot przez atlantyk',\n", + " 'ten pierwszy raz miałem ciarki, spełniam marzenia z braćmi',\n", + " 'ten pierwszy wylot do stanów, widok wieżowców projecty',\n", + " 'zamurowało pięć dzielnic, oto wizyt efekty',\n", + " 'tworzę historię, powiedzmy, mamy dziś dużo szczęścia',\n", + " 'od dziecka słuchałem rapu, chciałem ten rap napieprzać',\n", + " 'dziś wspólnie z braćmi na scenie, złączeni porozumieniem',\n", + " 'rap stał się naszym tłumaczem, rap to me przeznaczenie',\n", + " 'a bacdafucup natchnieniem, do życia grałem pirata',\n", + " '93 ważna data, wtedy powstał slums attack',\n", + " 'w walkmanie bez przerwy latał fredro i sticky',\n", + " 'ciężkie czasy dla clicki, chodziłem zły i przybity',\n", + " 'dzisiaj profity i hity, nagrania dają nam kopa',\n", + " 'zapamiętaj to chłopak, sen możesz zrealizować!',\n", + " 'dziewięćdziesiąte lata, odległe miejsca, on słucha!',\n", + " 'oni wykonują, łączy ich hip-hop sztuka',\n", + " 'on drapie płyty, próbuje tworzyć, igły zdziera!',\n", + " 'hip-hop elementy, każdy z nich dziś pożera show!',\n", + " 'koncerty, teledyski, bariera marzeń',\n", + " 'ludzie z pasją doprowadzają do tych zdarzeń',\n", + " 'tworzą historie, o.n.y.x, \"slam\" slu, wspólny projekt',\n", + " 'i murder, i murder, i murdering on the beat',\n", + " 'now turn the lights so everybody see',\n", + " \"i'm not to be, not to be, not to be fuck with!\",\n", + " \"one time you figured it out, it's too late bitch!\",\n", + " 'i shoot rappers up, ha-ptfu spit them out!',\n", + " \"i got choppers in waiting boy, don't let me send them out!\",\n", + " \"so many guns that i'm own, that i can't read them out!\",\n", + " \"trust me dog, you don't wanna my name in your mouth!\",\n", + " \"i'm dot on their foes, they have dot on their clothes\",\n", + " \"you nothing but 0s, you gonna be fuckin' exposed!\",\n", + " 'got the whole crowd tryna to see me up on their toes!',\n", + " \"you get swish g's out, i'm leaving nothing but holes!\",\n", + " \"i'm man in depress with, one hand on a dessert\",\n", + " \"in the land of desperate, i'm the man you shouldn't mess with!\",\n", + " \"i'm live for war, you die in peace\",\n", + " 'and when it comes to sticky fingaz nigga is zajebisty!',\n", + " 'to historia, brak granic, to, to colabo!',\n", + " 'ocean, zderzenie, fali rymów, colabo!',\n", + " 'ziemia, powietrze, pióro colabo!',\n", + " 'nuty, szacunek, one love, colabo!',\n", + " 'to historia, brak granic, to, to colabo!',\n", + " 'ocean, zderzenie, fali rymów, colabo!',\n", + " 'ziemia, powietrze, pióro colabo!',\n", + " 'nuty, szacunek, hip-hop, colabo!',\n", + " 'u u a a a',\n", + " 'heheheh',\n", + " 'woo woo',\n", + " 'keep it sick',\n", + " 'woo woo',\n", + " 'woo woo',\n", + " 'keep it sick',\n", + " 'woo woo',\n", + " 'argh!',\n", + " 'brrrah!',\n", + " 'pierdol się rozbitą flaszką, w arschloch, wchodzę tu z chujem na sztorc',\n", + " 'raszplo masz tu na dokładkę pocałunek z gazmo',\n", + " 'patrzę z góry jak jastrząb na wasz wyścig szczurów',\n", + " ...]},\n", + " 'data': ['ej, (what)',\n", + " 'foot up in the clutch, burning tires on my jaguar',\n", + " 'runnin till i fall no excuse, girl i love you too',\n", + " 'i love you too (i love you too)',\n", + " \"i love you and i'll always love you, even when you faded off the malibu\",\n", + " 'okay, okay, okay',\n", + " 'gold ’round my neck (bling, bling)',\n", + " 'prawie igrzyska w soczi (yeah)',\n", + " \"ice 'round my neck (ice, ice)\",\n", + " 'prawie igrzyska w soczi (shksh)',\n", + " 'for friends except',\n", + " \"ci ludzie których mam dosyć (fuck 'em)\",\n", + " 'rozpuszczam się jak relanium',\n", + " 'rozpuszczam się jak jej włosy (włosy, włosy....)',\n", + " 'oh, i can’t let her get away',\n", + " '(włosy, włosy, włosy)',\n", + " \"oh, i can't let her get away\",\n", + " '(restaurant posse)',\n", + " 'czas na emocje dla tych, którzy wzięli udział w konkursie audiotele',\n", + " 'dziś do wygrania: fiat cinquecento, komputer multimedialny i telefon z automatyczną sekretarką',\n", + " \"all y'all triple z on me i'm okay with that though\",\n", + " \"all y'all gonna wake i'm not repeating the same chords\",\n", + " \"steering with my knee when i'm ridin in a phantom\",\n", + " \"she got double d's, i got double, double platinum (that’s right)\",\n", + " 'oh, i can’t let her get away',\n", + " '(włosy, włosy, włosy...)',\n", + " \"i can't let her get away\",\n", + " '(włosy, włosy, włosy...)',\n", + " 'oh, i can’t let her get away',\n", + " '(platinum (oo-oh) platinum)',\n", + " \"oh, i can't let her get away\",\n", + " 'rap prosto z serca, nie gram z nut',\n", + " 'ja nie jestem artystą, jestem rzeźnikiem',\n", + " 'czuję, że żyję zadając se ból',\n", + " 'czuję, że żyję kiedy robię muzykę',\n", + " 'zero kompromisów, zimny jak lód',\n", + " 'jestem głuchy na waszą krytykę',\n", + " 'z twojej mordy czuję tylko smród',\n", + " 'zamknij mordę bo nagrywam płytę',\n", + " 'popek i the game to jest gangsta rap',\n", + " 'na rynku muzycznym już 12 lat',\n", + " 'bawię się muzyką wyjebane mam na hajs',\n", + " 'jesteśmy już blisko do-do-dotykamy gwiazd',\n", + " 'jak odejdę to z hukiem jak 2pac shakur',\n", + " 'będzie sądził mnie bóg, a nie stado hien !',\n", + " 'muzyka to zabawka, słyszysz ją z fur',\n", + " 'umiem się nią bawić hej',\n", + " 'nagrywam rap pod beat, a moją wizytówką jest ayeh',\n", + " 'pierwsza liga rapu - popek monster i the game',\n", + " '(2x)',\n", + " 'nagrywamy rap na światową skalę',\n", + " 'jeśli będę mógł, pójdę jeszcze dalej',\n", + " 'zarabiam gruby hajs bo do tego też mam talent',\n", + " 'jeśli będę mógł, będę robił to dalej',\n", + " '(wag wan production)',\n", + " 'yo, you know what it is man',\n", + " \"it's the motherfucking blood money capo !\",\n", + " 'popek, ruslan, you know what it is , la familia !',\n", + " 'wipe that fucking grin off your face bitch',\n", + " 'these new rap niggas pussy and i can taste it',\n", + " 'all this soft ass cotton ball rap niggas, face it',\n", + " '\"i\\'m more talented\"',\n", + " 'what the fuck do you do-',\n", + " '\"-when there is no one else to battle with?\"',\n", + " 'play battleship, assault rifles aimed at your yacht',\n", + " \"(aimed at ya city?), no matter how you living, you'll get shot\",\n", + " \"this ain't no fairy tale, no tinker bells flyin' 'round this hook\",\n", + " 'just that compton! monster!',\n", + " 'this is one for the books',\n", + " 'so let that red impala hop again',\n", + " \"don't stop. i'm in that drop-top\",\n", + " \"don't be shy bitch, hop right in\",\n", + " 'remember me? i sold 5 mill out the gate',\n", + " 'remember me? and slap the shit out niggas fucking with dre',\n", + " 'remember me? i put the world on blood',\n", + " 'so much chronic smoke seeping through the speakers',\n", + " 'like the world on drugs',\n", + " 'and i would love to be aftermath still',\n", + " 'but i burned my finger on too many roaches',\n", + " 'now pass me one of them pills, so i can levitate',\n", + " 'west side compton',\n", + " 'dj niquan',\n", + " 'popek monster i the game',\n", + " 'tekst i adnotacje na rap genius polska',\n", + " 'wiem, że ta muzyka do ciebie przemawia',\n", + " 'ja tak ty, nienawidzę prawa i te stare kurwy',\n", + " 'pozdychają na zawał',\n", + " 'jesteś z ulicy, obyś nie udawał',\n", + " 'to może być piekło, albo karnawał',\n", + " 'zajmijcie pozycje, bo zaczyna się zabawa',\n", + " 'bardzo dziwna gra, na dziwnych zasadach',\n", + " 'możesz ją wygrać, jak masz asy w rękawach',\n", + " 'jesteś na to gotów, to dawaj',\n", + " 'żyj według własnego prawa',\n", + " 'chyba, że chcesz robić całe życie to, co będą ci kazać',\n", + " 'ja was do niczego tu nie będę namawiać',\n", + " 'rób co uważasz, aby słusznie',\n", + " 'bo jeden zły ruch, z gry wypadasz - a bywa różnie',\n", + " 'jak masz dobry patent, nie odkładaj go na później',\n", + " 'w umyśle swoim odkryj patentów kuźnie',\n", + " 'i obserwuj co będzie później',\n", + " 'i love this ugly streets',\n", + " 'i ride on this ugly streets',\n", + " \"i'll die on this ugly streets\",\n", + " 'man i fight on this ugly streets',\n", + " 'thats why i make this ugly beats',\n", + " 'for you to dance on this ugly streets',\n", + " 'one love to the streets !',\n", + " \"if you are on the street don't act like a fool\",\n", + " 'you play the same game with the same rules',\n", + " 'as i play, hold your position',\n", + " 'rule number one: keep your mouth shout, eyes open and listen',\n", + " 'rule number two: give all you got, you only got one chance to score',\n", + " \"rule number three: you don't beat what you saw\",\n", + " 'rule number four: the game is in your hands not in hands of the lord',\n", + " 'rule number five: you have to love for the game so far',\n", + " 'rule number six: watch your actions, moves come back fast like bruce lee kicks',\n", + " 'rule number seven: learn how to use your mind and heart avoid using a weapon',\n", + " \"rule number eight: learn how to shoot straight. just in case u don't know who u gonna face\",\n", + " 'i love this ugly streets',\n", + " 'i ride on this ugly streets',\n", + " \"i'll die on this ugly streets\",\n", + " 'man i fight on this ugly streets',\n", + " 'thats why i make this ugly beats',\n", + " 'for you to dance on this ugly streets',\n", + " 'one love to the streets !',\n", + " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", + " 'all my cars got leather and wood, in my hood we call it buck',\n", + " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", + " 'all my cars got leather and wood, in my hood we call it buck',\n", + " \"i'm smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", + " 'all my cars got leather and wood, in my hood we call it buck',\n", + " 'na dmuchanym materacu zrobił self-made',\n", + " 'taki to był z niego młody werter',\n", + " 'na insta story zamieścił relację wcześniej',\n", + " 'jak ona klęczy przed rozpiętym goofy beltem',\n", + " \"w louis'a nerce z aliexpress, trzymał z jazzem kopertę\",\n", + " 'na gierce ciężkie, bo żydów więcej niż w parlamencie',\n", + " 'zawinął w bletkę i przez chwilę było śmiesznie',\n", + " 'lecz gdy brał bucha, poczuł pestkę',\n", + " 'tu królują szwedzkie meble',\n", + " 'od miesiąca do miesiąca na rezerwie',\n", + " 'wszyscy wpierdalają tutaj magdalenkę',\n", + " 'wszyscy wpierdalają tutaj magdalenkę',\n", + " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", + " 'all my cars got leather and wood, in my hood we call it buck',\n", + " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", + " 'all my cars got leather and wood, in my hood we call it buck',\n", + " \"i'm smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", + " 'all my cars got leather and wood, in my hood we call it buck',\n", + " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", + " 'all my cars got leather and wood, in my hood we call it buck',\n", + " 'na dmuchanym materacu wszędzie stemple',\n", + " \"powiedział jej ''te quiero siempre''\",\n", + " 'zanim zostawił sklejkę',\n", + " 'z torby gucci przewiązaną ma wstążeczkę',\n", + " 'ma koleżkę, co kupił czapeczkę',\n", + " 'kokonowe gluty ciążą jak kamienie',\n", + " 'kolory życia ma na dłoni na chusteczce',\n", + " 'współlokator gej pieje, gryzie go sumienie',\n", + " 'życie pisze prozy jak mikołaj rej',\n", + " 'poszli by do sklepu może chociaż by po wodę',\n", + " 'fobia taka mocna, mordo, że nie zbijesz jej',\n", + " 'na stoiku nocnym mają ciepłą colę',\n", + " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", + " 'all my cars got leather and wood, in my hood we call it buck',\n", + " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", + " 'all my cars got leather and wood, in my hood we call it buck',\n", + " \"i'm smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", + " 'all my cars got leather and wood, in my hood we call it buck',\n", + " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", + " 'all my cars got leather and wood, in my hood we call it buck',\n", + " \"hey yeah watch this man, babilon is suckin' like a vampire\",\n", + " 'this a blood blood, this a blood blood blood of a man !',\n", + " 'if live was a thing money could a buy',\n", + " 'rich shoulda live and poor woulda die',\n", + " 'if live was a thing money could a buy',\n", + " 'rich shoulda live and poor woulda die',\n", + " 'everywhere me go me hear the poor man a cry',\n", + " 'them tell me that the prices them a rise so high',\n", + " 'everywhere me go the people them ball',\n", + " 'them tell me that a crisis is shocking gonna all',\n", + " 'rich man and poor man a begger man, thief',\n", + " 'lion adaptor and indian chief',\n", + " 'rich man and poor man a begger man, thief',\n", + " 'lion adaptor and indian chief',\n", + " \"i can't stand it no\",\n", + " 'no, no, no',\n", + " \"i can't stand it no\",\n", + " 'no, no, no',\n", + " \"i can't stand it no\",\n", + " 'no, no, no',\n", + " \"i can't stand it no\",\n", + " 'no way',\n", + " 'babilon da bandit vampire bandit',\n", + " \"suckin' your blood dema like a mosquito\",\n", + " 'babilon da bandit vampire bandit',\n", + " 'you must distroy a dem fi safe your blood',\n", + " 'babilon da bandit vampire bandit',\n", + " \"suckin' your blood dema like a mosquito\",\n", + " 'babilon da bandit vampire bandit',\n", + " 'you must distroy a dem fi safe your blood',\n", + " 'cunning like a spider with his venom',\n", + " 'speedy like a cobra with her poison',\n", + " 'every time you must be ready fi shock',\n", + " 'danger mi bredda this a blood shark attack',\n", + " 'strong like anaconda with her greatness',\n", + " 'speedy like a cobra haffi no stress',\n", + " 'every time you must be ready fi shock',\n", + " 'danger mi bredda this a blood shark attack',\n", + " 'distroy da babilon and every time you lookin for',\n", + " 'irie jah jah love and hole yuh cahna (keep your position)',\n", + " 'distroy da babilon and every time you lookin for',\n", + " 'freedom and peace and jah jah holy kingdom',\n", + " 'distroy da babilon and every time you lookin for',\n", + " 'irie jah jah love and hole yuh cahna (keep your position)',\n", + " 'distroy da babilon and every time you lookin for',\n", + " 'freedom and peace and jah jah holy kingdom',\n", + " 'babilon da bandit vampire bandit',\n", + " \"suckin' your blood dema like a mosquito\",\n", + " 'babilon da bandit vampire bandit',\n", + " 'you must distroy a dem fi safe your blood',\n", + " 'babilon da bandit vampire bandit',\n", + " \"suckin' your blood dema like a mosquito\",\n", + " 'babilon da bandit vampire bandit',\n", + " 'you must distroy a dem fi safe your blood',\n", + " 'babilon to bandyta a babilon to złodziej',\n", + " 'babilon za chwile bracie napewno ciebie tutaj ubodzie',\n", + " 'babilon to jest złodziej tutaj bezczelny',\n", + " 'on sięga tobie bracie do mentalnej kielni',\n", + " 'on wszędzie dostaje on odwiedza wszelkie kraje',\n", + " 'to na co ma ochotę bracie zawsze dostaje',\n", + " 'raje obiecuje a później okrada',\n", + " 'gada nielada defenestruje ragga brygada man',\n", + " 'babilon da bandit vampire bandit',\n", + " \"suckin' your blood dema like a mosquito\",\n", + " 'babilon da bandit vampire bandit',\n", + " 'you must distroy a dem fi safe your blood',\n", + " 'babilon da bandit vampire bandit',\n", + " \"suckin' your blood dema like a mosquito\",\n", + " 'babilon da bandit vampire bandit',\n", + " 'you must distroy a dem fi safe your blood',\n", + " 'ekonomiści i politycy w białych rękawiczkach krwawi bandyci',\n", + " 'ekonomiści i politycy w białych rękawiczkach krwawi bandyci',\n", + " 'na ich zarękawkach nowych krew',\n", + " 'na ich furach służbowych krew',\n", + " 'na ich decyzjach papierowych krew',\n", + " 'ach zobacz człowieku czy tego właśnie chcesz',\n", + " 'babilon da bandit vampire bandit',\n", + " \"suckin' your blood dema like a mosquito\",\n", + " 'babilon da bandit vampire bandit',\n", + " 'you must distroy a dem fi safe your blood',\n", + " 'babilon da bandit vampire bandit',\n", + " \"suckin' your blood dema like a mosquito\",\n", + " 'babilon da bandit vampire bandit',\n", + " 'you must distroy a dem fi safe your blood',\n", + " 'if live was a thing money could a buy',\n", + " 'rich shoulda live and poor woulda die',\n", + " 'if live was a thing money could a buy',\n", + " 'rich shoulda live and poor woulda die',\n", + " 'girla girla girla girla poor would die',\n", + " 'girla girla girla girla poor would die',\n", + " 'girla girla girla girla poor would die',\n", + " 'girla girla girla girla poor would die die die',\n", + " 'budzi mnie hałas, ktoś wali w moje drzwi, ty',\n", + " 'patrzę na zegarek, moja pierwsza myśl to psy, zły',\n", + " 'zaglądam w wizjer, kto to może być i',\n", + " 'czemu tutaj przyszedł, po co, skąd i z kim',\n", + " 'film się zaczyna, oddech mi przyśpieszył, leci w krew adrenalina',\n", + " 'klimat znasz, ręka, zamek, szkło',\n", + " 'w drugiej ręce, jakby co nic nie widziałem',\n", + " 'otwórz, a mi mówi głos',\n", + " 'co noc chwili zakłóca, znam życie na bałutach',\n", + " 'tu nawet sobie się nie ufa, puka znów, cóż',\n", + " 'napierdala w drzwi, ty, szukam nóż tu',\n", + " 'leży koło płyt, chwyć go myślę',\n", + " 'lecz czy ostrze mi da spać, i to wszystko zniknie, nie wiem',\n", + " 'może by wiedział schwarzenegger',\n", + " 'los sprawdza nas codziennie, więc ja sprawdzę siebie',\n", + " 'nie gardzę niebem, po prostu',\n", + " 'stale idą kryminały w głowie, choć nie oglądam ale kino!',\n", + " 'to ci powiem, że ziomki bracie giną za proszek',\n", + " 'za grosze, za crack, za heroinę',\n", + " 'jeden strzał to rykoszet, prosto w gar',\n", + " 'pryska świat w jupiterach',\n", + " 'jeden chuj, wolę żyć, idę spać - nie otwieram',\n", + " 'idę swoim tempem',\n", + " 'przez ciągłe motaniny',\n", + " 'z biegiem czasu poznaję',\n", + " 'kolory tej dziedziny',\n", + " \"looking to see who's behind you (craig g)\",\n", + " \"hoping like hell they don't find you (let's go)\",\n", + " 'got an email from my homeboy tytus',\n", + " 'about a show in poland so i asked when the flight is',\n", + " \"he said thursday, i said for sure i'm doing it\",\n", + " 'pick me out in łódź, i touchdown in lublinek',\n", + " \"as i packed i hoped the police don't ruin it\",\n", + " \"they keep a close watch out just cause the crew i'm with\",\n", + " 'okay i head to jfk, at the ticket counter people looking in a way',\n", + " \"i'm thinking 'bout the show, little do i know\",\n", + " 'the hip-hop police tailed my ass from the door',\n", + " 'investigating every rapper so they can bust them',\n", + " \"luckily i peeped 'em on the low going through customs\",\n", + " 'went about my business the show got tore down',\n", + " 'hollered at o.s.t.r to drop some pronouns in the lab',\n", + " 'got the address called a cab',\n", + " \"and at that very moment that's when shit went bad\",\n", + " 'a car chase ensued i was nervous and zoning',\n", + " \"blowing through these little-ass streets like i'm in ronin\",\n", + " \"and it's 4 in the morning i finally hit o's spot\",\n", + " \"it went from bad to worse when i found out the door's locked\",\n", + " 'damn!',\n", + " 'brother on the run',\n", + " \"you didn't have to be, a brother on the run\",\n", + " 'one bullet from a gun',\n", + " \"that's how it started for this brother on the run\",\n", + " 'big h',\n", + " 'popek',\n", + " 'wagwan productions',\n", + " 'whisper on the beat',\n", + " 'h inside',\n", + " 'still killing them cats, niggas feeling my raps',\n", + " 'had to school them, this is english and maths',\n", + " \"i get a*'s, when i spray bars, get high when i blaze fam call the fire brigade\",\n", + " 'killing them cats, niggas feeling my raps',\n", + " 'had to school them, this is english and maths',\n", + " \"i get a*'s, when i spray bars, get high when i blaze fam call the fire brigade\",\n", + " 'done many crimes, paid many fines, been in the transit, handcuffed, many times',\n", + " \"more hoe's, i'm talking more shows, score goals like paul scholes\",\n", + " \"when it comes to the coke i'm qualified, call 5-0 tell 'em it's a homicide\",\n", + " 'please pay respect, or i will spray the tec',\n", + " \"black whip, i'm sick, lemme take a breath\",\n", + " \"i don't ask once, when i blast punks, mac-10 had niggas doing starjumps\",\n", + " \"yeah, i'm talking loads of paper, call the flying squad get me a negotiator\",\n", + " \"i stay awake, stood by the door with the small .38, stood by the door all i'm gonna wait, they were like h, goodness sake\",\n", + " 'call it a day, call it a night, call it a war, call it a fight',\n", + " 'grab the machine-gun shoot on sight, they were like h, are you alright',\n", + " 'am i alright, am i alright, writing this tune i was up all night',\n", + " \"i'm up for anything, up for a fight, grab the machine shoot on sight\",\n", + " 'say something safe, if you say anything say it to my face',\n", + " \"why these fools wanna hate on h, i can't hear them i was in space\",\n", + " \"i and i worship carry two swords, i and i music where's my too much violence i was ignored, smashed in windows kicked in doors, big online run up in stores, they were like h, this ain't yours, bloodline t-shirt's i was on tours\",\n", + " 'chodz pokażę ci londyn',\n", + " 'pokaże ci gdzie splonął',\n", + " 'gdzie wybuchały bomby',\n", + " 'zobaczysz wszystkie zakazane mordy ziomuś',\n", + " 'sto narodowści tutaj mieszka w jednym domu',\n", + " 'mordują się jak w grach',\n", + " 'robią wjazd na chate komuś',\n", + " 'tutaj gta na żywo oglądam z balkonu',\n", + " 'zamieszki, rozpierdol już jara się tottenham',\n", + " 'zajebali tam gangstera z londyńskiego ghetta',\n", + " 'dzieciaki ze wszystkich gangów stoją z butelkami w rękach',\n", + " '150 na godzinę przeżjdża karetka',\n", + " 'policja przestępca kałmie i przekręca',\n", + " 'zastrzelił go policjant jak płatny morderca',\n", + " 'każdy ponad prawem o tym ta piosenka',\n", + " 'brutalnie zajebali marka krew mają na rekach',\n", + " 'jeden z drugim',\n", + " 'co to było?',\n", + " 'żeby żyli',\n", + " 'no',\n", + " 'mogę spróbować...',\n", + " 'pewnego dnia',\n", + " 'welcome, this is godline',\n", + " 'all our lines are busy',\n", + " \"please wait, we'll help you in a moment\",\n", + " 'hold the line',\n", + " 'trying to connect with god',\n", + " 'trying to connect with god',\n", + " 'please just hold the line',\n", + " 'please just hold the line',\n", + " 'would they believe if i resided on earth',\n", + " 'evacuated the dead out the dirt',\n", + " 'if i healed all of the sick and fed the hungry',\n", + " 'brought the whole world peace?',\n", + " \"maybe some of that'd affect their belief? huh\",\n", + " 'nah, prolly not! cause i did those',\n", + " \"and none of these folks ain't growin'; they on they tiptoes\",\n", + " \"and regression's progression for people who ain't got no wisdom\",\n", + " \"and a father called these babblin' prophets and a couple mc's\",\n", + " \"they ain't believe the father; why they gon' believe me?\",\n", + " \"i'm a mirror of his majesty, showing my glory candidly\",\n", + " \"casually made a casualty; the world couldn't handle me\",\n", + " 'i created the sun, the moon, and the stars',\n", + " \"i'm the star of my own show, i'm the leading role for sure\",\n", + " 'these wizard of oz kings claiming that they rule things',\n", + " \"'till i reappear and treat the planet like my mood ring\",\n", + " 'who bring peace to your soul? man, the prophets of old foretold',\n", + " \"of my resurrection. i'm offering you protection\",\n", + " \"i'm offering you the only hope the world will ever have:\",\n", + " 'emmanuel, son of god, son of man, the lamb',\n", + " 'take two of those',\n", + " 'call me in the morning',\n", + " \"that's your prescription\",\n", + " 'trying to connect with god',\n", + " 'trying to connect with god',\n", + " 'please just hold the line',\n", + " 'please just hold the line',\n", + " 'halo? rejestracja? proszę połączyć mnie z bogiem',\n", + " 'nie mogę tu żyć, tracę głowę',\n", + " 'błagam, bo spadam i spalam się',\n", + " 'zaraz zakończę tą drogę na pogrzebie w grobie',\n", + " 'nie mogę, proszę o połączenie z doktorem',\n", + " 'co może mnie podnieść skuteczniej niż człowiek',\n", + " 'zapłacę, mam kasę, mam kartę, dam złoto',\n", + " 'cokolwiek potrzeba by kupić spokój na zawsze',\n", + " 'nie wiem, mam podać pesel?',\n", + " 'pewnie, 79— jak to nie chcecie? wściec się!',\n", + " 'dzwonie do was codziennie i mówicie że niewyspowiadanych',\n", + " 'wy nie przyjmujecie tylko w piekle',\n", + " 'oni, mają centyliony potępionych',\n", + " 'dają nam miliony możliwości by zwątpić',\n", + " 'poprosić? proszę uwolnić z ciemności mnie taka moja wola',\n", + " 'błagam boga o litości cień!',\n", + " 'nie! przestań mnie kusić diable',\n", + " 'nie mogę żyć tak, nie mogę umrzeć w grzechu nagle',\n", + " 'nie! przestań mnie dręczyć ciągle',\n", + " 'dzwonie i proszę o uzdrowienie doktorze',\n", + " 'hello my name is dr. jesus',\n", + " 'hell no your life is not for demons',\n", + " 'pray for forgivness not for riches',\n", + " 'i heal your soul now go and grow in love',\n", + " 'trying to connect with god',\n", + " 'trying to connect with god',\n", + " 'please just hold the line',\n", + " 'please just hold the line']}}},\n", + " 'pt': {'sentence': {'pop': {'meta': {'train_data': ['vem que elas vão chegar',\n", + " 'as gays de todo lugar',\n", + " 'as passivas do meu país',\n", + " 'ficando tudo feliz',\n", + " 'vai ter bicha enrustida',\n", + " 'no graider em ação',\n", + " 'e umas travas fervida de placa na mão',\n", + " 'eu quero um boy',\n", + " 'oh oh, oh',\n", + " 'bora frescar',\n", + " 'um boy, um boy, um boy',\n", + " 'vai ter babado na cidade',\n", + " 'vai ter bicha de todo mundo',\n", + " 'atrás de um boy do mundo todo',\n", + " 'querendo dar, querendo dar...',\n", + " 'we are, we are',\n", + " 'seven billion strong',\n", + " 'shining like diamonds',\n", + " 'nothing can hide us',\n", + " 'we are, we are',\n", + " 'seven billion stars',\n", + " 'the world...',\n", + " 'the world is ours, the world is ours',\n", + " 'the world is ours, thе world is ours....',\n", + " 'pra batucar, pra batucar',\n", + " 'juntas vamos fazer o atraque acontecеr',\n", + " 'seja em qualquer lugar as colegas grita vrá',\n", + " 'vai ter bicha machuda, bombada e mapô',\n", + " 'bicha urso e as travas tocando o terror',\n", + " 'eu quero um boy',\n", + " 'oh oh, oh',\n", + " 'bora frescar',\n", + " 'um boy, um boy, um boy',\n", + " 'vai ter babado na cidade',\n", + " 'vai ter bicha de todo mundo',\n", + " 'atrás de um boy do mundo todo',\n", + " 'querendo dar, querendo dar...',\n", + " 'we are, we are',\n", + " 'seven billion strong',\n", + " 'shining like diamonds',\n", + " 'nothing can hide us',\n", + " 'we are, we are',\n", + " 'seven billion stars',\n", + " 'the world...',\n", + " 'the world is ours, the world is ours',\n", + " 'the world is ours, the world is ours....',\n", + " 'pra batucar',\n", + " 'eu quero um boy',\n", + " 'oh oh, oh',\n", + " 'bora frescar',\n", + " 'um boy, um boy, um boy',\n", + " 'vai ter babado na cidade',\n", + " 'vai ter bicha de todo mundo',\n", + " 'atrás de um boy do mundo todo',\n", + " 'querendo dar, querendo dar...',\n", + " 'we are, we are',\n", + " 'seven billion strong',\n", + " 'shining like diamonds',\n", + " 'nothing can hide us',\n", + " 'we are, we are',\n", + " 'seven billion stars',\n", + " 'the world...',\n", + " 'the world is ours, the world is ours',\n", + " 'the world is ours, the world is ours....',\n", + " 'pra batucar, pra batucar',\n", + " '(na terra...)',\n", + " 'no meio do centro da terra',\n", + " 'no fundo do fundo do mar',\n", + " 'no fundo, o centro da terra',\n", + " 'no meio, o fundo do mar',\n", + " 'no meio do centro da terra',\n", + " 'no fundo, o meio do mar',\n", + " 'no fundo, o centro da terra',\n", + " 'é o meio do fundo do mar',\n", + " '(mar...)',\n", + " 'no meio do centro da terra',\n", + " 'no fundo do mar...',\n", + " '(no meio do centro da terra)',\n", + " 'um novo dia nasceu',\n", + " 'o tempo passou e o nosso amor só cresceu',\n", + " 'me sinto no céu, mudou meu astral',\n", + " 'parece carnaval',\n", + " 'waiting for you, waiting for you',\n", + " \"vou te esperar, i'll be waiting for you\",\n", + " 'waiting for you, waiting for you',\n", + " \"vou te esperar, i'll be waiting for you\",\n", + " 'a ausência faz o coração crescer forte',\n", + " 'é complicado mas a gente deu sorte',\n", + " 'de se esbarrar e então encontrar',\n", + " 'alguém pra esperar',\n", + " 'waiting for you, waiting for you',\n", + " \"vou te esperar, i'll be waiting for you\",\n", + " 'waiting for you, waiting for you',\n", + " \"vou te esperar, i'll be waiting for you\",\n", + " 'oh oh, yeah, yeah',\n", + " 'oh oh, yeah, yeah',\n", + " 'oh oh, yeah, yeah',\n", + " 'oh oh, yeah, yeah',\n", + " 'não importa pra onde você vá',\n", + " 'posso sentir você me tocar',\n", + " 'waiting for you, waiting for you',\n", + " \"vou te esperar, i'll be waiting for you\",\n", + " 'oh oh, yeah, yeah',\n", + " 'oh oh, yeah, yeah',\n", + " 'oh oh, yeah, yeah',\n", + " 'oh oh, yeah, yeah',\n", + " 'waiting for you, waiting for you',\n", + " \"vou te esperar, i'll be waiting for you\",\n", + " 'waiting for you, waiting for you',\n", + " \"vou te esperar, i'll be waiting for you\",\n", + " 'oh oh, yeah, yeah',\n", + " 'oh oh, yeah, yeah',\n", + " 'oh oh, yeah, yeah',\n", + " 'oh oh, yeah, yeah',\n", + " 'quand lo pet del cul venta',\n", + " 'dond midonz caga e vis',\n", + " 'donc m’es vis qu’eu senta',\n", + " 'una pudor de pis',\n", + " 'd’una orrida sancnenta',\n", + " 'qe tot iorn m’escarnis',\n", + " 'qe mais es de pez manenta',\n", + " 'qe de marabotis',\n", + " 'e quand ias so pis',\n", + " 'plus put d’autra serpenta',\n", + " 'e quaga mais en tres matis',\n", + " 'qu’autra no fai en trenta',\n", + " 'é varina, usa chinela',\n", + " 'tem movimentos de gata',\n", + " 'na canastra , a caravela',\n", + " 'no coração, a fragata',\n", + " 'em vez de corvos no xaile',\n", + " 'gaivotas vêm pousar',\n", + " 'quando o vento a leva ao baile',\n", + " 'baila no baile com o mar',\n", + " 'é de conchas o vestido',\n", + " 'tem algas na cabeleira',\n", + " 'e nas veias o latido',\n", + " 'do motor duma traineira',\n", + " 'vende sonhos e maresia',\n", + " 'tempestades apregoa',\n", + " 'seu nome próprio: maria',\n", + " 'seu apelido: lisboa',\n", + " 'she is a varina, and wears chinela',\n", + " 'she moves like a cat',\n", + " 'in the basket, the caravel',\n", + " 'in her heart, the frigate',\n", + " 'instead of ravens on the shawl',\n", + " 'sea-gulls came to lay down',\n", + " 'when the wind takes her to the ball',\n", + " 'she dances at the ball with the see',\n", + " 'her dress is made of shells',\n", + " 'she has seaweed on her hair',\n", + " 'and in her veins, (has) the bark',\n", + " 'of the engine of a traineira',\n", + " 'she sells dreams and the smell of the sea',\n", + " 'she announces storms',\n", + " 'her first name: maria',\n", + " 'her surname: lisboa',\n", + " 'primeiro foi um sorriso',\n", + " 'depois quase sem aviso',\n", + " 'é que o beijo aconteceu',\n", + " 'nesse infinito segundo',\n", + " 'fora de mim e do mundo',\n", + " 'minha voz emudeceu',\n", + " 'ficaram gestos suspensos',\n", + " 'e os desejos imensos',\n", + " 'como poemas calados',\n", + " 'teceram a melodia',\n", + " 'enquanto a lua vestia',\n", + " 'nossos corpos desnudados',\n", + " 'duas estrelas no meu peito',\n", + " 'no teu meu anjo perfeito',\n", + " 'a voz do búzio escondido',\n", + " 'os lençóis ondas de mar',\n", + " 'onde fomos naufragar',\n", + " 'como dois barcos perdidos',\n", + " 'first, one smile',\n", + " 'then, almost of a sudden',\n", + " 'our kiss succeeds',\n", + " 'in this endless second',\n", + " 'tossed out of my body and out of this world',\n", + " 'my voice silents',\n", + " 'only repressed gestures remain',\n", + " 'and our immeasurable desires',\n", + " 'give vent to the melody',\n", + " 'like silent poems',\n", + " 'as the moonlight dresses',\n", + " 'our bodies in nude',\n", + " 'two stars lay on my chest',\n", + " 'and on yours, my angel of perfection',\n", + " 'mumbles the voice from a hidden wirstle',\n", + " 'the sheets are the waves of the sea',\n", + " 'where we sink together',\n", + " 'like two ships adrift',\n", + " 'i got to be honest with you',\n", + " \"it wasn't to be this way\",\n", + " \"and everything we've been through now\",\n", + " 'jah knows that i prayed',\n", + " 'and now i realy know a special love is hard to find',\n", + " 'and everything in you is just a little divine',\n", + " 'and now i know my life was cool by your side',\n", + " 'and you are everything i searched all of this time',\n", + " \"'cause\",\n", + " \"i don't wanna go home without you, baby\",\n", + " \"i don't wanna go home without you\",\n", + " \"i don't wanna go home without you, baby\",\n", + " \"i don't wanna go home without you\",\n", + " 'eu tenho que te dizer',\n", + " 'que eu penso muito em você',\n", + " 'e não foi bem assim que eu quis não',\n", + " 'e jah sabe que eu tentei',\n", + " 'e agora eu to longe e era bom demais',\n", + " 'eu canto pra fugir do que a distancia me trás',\n", + " 'e agora eu sei da falta que você me faz',\n", + " 'e o que é menor que isso, vê se deixa pra trás',\n", + " \"'cause\",\n", + " \"i don't wanna go home without you, baby\",\n", + " \"i don't wanna go home without you\",\n", + " \"i don't wanna go home without you, baby\",\n", + " \"i don't wanna go home without you\",\n", + " 'dizem que sempre que choveu parou',\n", + " 'pero un día que se me nubló',\n", + " 'waiting for the sun to shine',\n", + " 'waiting for the sun to shine',\n", + " 'o tempo é grão de areia pelo ar',\n", + " 'no va perder la vida por quedar',\n", + " 'waiting for the sun to shine',\n", + " 'waiting for the sun to shine',\n", + " 'waiting for the sun to shine',\n", + " 'lonely, tan solo, sozinho',\n", + " 'tan solo, lonely , sozinho',\n", + " 'sunshine',\n", + " 'esperando o sol brilhar (waiting for the sun to shine)',\n", + " 'esperando el sol brillar (waiting for the sun to shine)',\n", + " 'waiting for the sun to shine (waiting for the sun to shine)',\n", + " 'o som da rua vem nos revelar',\n", + " 'que nadie canta solo por cantar',\n", + " 'waiting for the sun to shine',\n", + " 'waiting for the sun to shine',\n", + " 'pessoas precisam de espaço e paz',\n", + " 'la noche nunca pareció fulgaz',\n", + " 'waiting for the sun to shine',\n", + " 'waiting for the sun to shine',\n", + " 'waiting for the sun to shine',\n", + " 'lonely, tan solo, sozinho',\n", + " 'tan solo, lonely , sozinho',\n", + " 'sunshine',\n", + " 'esperando o sol brilhar (waiting for the sun to shine)',\n", + " 'esperando el sol brillar (waiting for the sun to shine)',\n", + " 'waiting for the sun to shine (waiting for the sun to shine)',\n", + " 'i do all the things i do to you',\n", + " \"you complain and it's dejavú\",\n", + " 'what, what did i, did i do?',\n", + " 'is it me, or is it just you?',\n", + " 'eu só quero te agradar',\n", + " 'você reclama pra variar',\n", + " 'você fica em suas lamúrias',\n", + " 'eu, eu dispenso a fúria',\n", + " 'então saia do sofá e se toca',\n", + " 'porque nós somos a música',\n", + " 'i do all the things i do to you',\n", + " \"you complain and it's dejavú\",\n", + " 'what, what did i, did i do?',\n", + " 'is it me, or is it just you?',\n", + " 'so get off the couch and, please',\n", + " 'cut off the crap',\n", + " \"'cause we have music, and we're not deaf\",\n", + " 'então saia do sofá e se toca',\n", + " 'porque nós somos a música',\n", + " 'agora sim, damos a volta a isto',\n", + " 'agora sim, há pernas para andar',\n", + " 'agora sim, eu sinto o optimismo',\n", + " 'vamos em frente, ninguém nos vai parar',\n", + " 'agora não, que é hora do almoço',\n", + " 'agora não, que é hora do jantar',\n", + " 'agora não, que eu acho que não posso',\n", + " 'amanhã vou trabalhar',\n", + " 'agora sim, temos a força toda',\n", + " 'agora sim, há fé neste querer',\n", + " 'agora sim, só vejo gente boa',\n", + " 'vamos em frente e havemos de vencer',\n", + " 'agora não, que me dói a barriga',\n", + " 'agora não, dizem que vai chover',\n", + " 'agora não, que joga o benfica',\n", + " 'e eu tenho mais que fazer',\n", + " 'agora sim, cantamos com vontade',\n", + " 'agora sim, eu sinto a união',\n", + " 'agora sim, já ouço a liberdade',\n", + " 'vamos em frente e é esta a direcção',\n", + " 'agora não, que falta um impresso',\n", + " 'agora não, que o meu pai não quer',\n", + " 'agora não, que há engarrafamentos',\n", + " 'vão sem mim, que eu vou lá ter',\n", + " 'vão sem mim, que eu vou lá ter...',\n", + " 'english translation:',\n", + " \"let's go, let's take a shot at this\",\n", + " \"let's go, our legs are for walking\",\n", + " \"let's go, i'm feeling optimistic\",\n", + " \"let's go ahead, no one can stop us\",\n", + " \"not now, it's time for lunch\",\n", + " \"not now, it's time for dinner\",\n", + " \"not now, i don't think i can\",\n", + " \"tomorrow i'm going to work\",\n", + " \"let's go, we've got all the strength\",\n", + " \"let's go, we can do it if we believe\",\n", + " \"let's go, i only see good folks here\",\n", + " \"let's go ahead and we'll succeed\",\n", + " \"not now, i've got a tummy-ache\",\n", + " \"not now, they say it's going to rain\",\n", + " 'not now, benfica is playing',\n", + " \"and i've got some things to do\",\n", + " \"let's go, we sing with desire\",\n", + " \"let's go, i feel the unity\",\n", + " \"let's go, i hear the liberty\",\n", + " \"let's go ahead, in this direction\",\n", + " \"not now, we don't have the right form\",\n", + " \"not now, my dad won't let me\",\n", + " \"not now, there's a traffic jam\",\n", + " \"go without me, i'll be along\",\n", + " 'existem praias tão lindas',\n", + " 'cheias de luz',\n", + " 'nenhuma tem os encantos',\n", + " 'que tu possuis',\n", + " 'tuas areias',\n", + " 'teu céu tão lindo',\n", + " 'tua sereia',\n", + " 'sempre sorrindo',\n", + " 'copacabana, princesinha do mar',\n", + " 'pelas manhãs tu ésa vida a cantar',\n", + " 'e a tardinha o sol poente',\n", + " 'deixa sempre uma saudade na gente',\n", + " 'copacabana, o mar eterno cantor',\n", + " 'ao te beijar ficou perdido de amor',\n", + " 'e hoje vive a murmurar',\n", + " 'só a ti copacabana eu hei de amar',\n", + " '***************************************',\n", + " 'full so pretty beaches of light exist none have the enchantments that you always possess your sands your so pretty sky your sereia smiling copacabana, princesinha of the sea per the mornings you ésa life to sing and tardinha the setting sun always leave a homesickness in people copacabana, the perpetual sea singer to kissing you was lost of love and today it lives to murmur you copacabana i i only have to love',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'pois a a rosa é uma flor',\n", + " 'a rosa é uma cor',\n", + " 'a rosa é um nome de mulher',\n", + " 'rosa é a flor da simpatia',\n", + " 'é a flor escolhida no dia',\n", + " 'do primeiro encontro do nosso dia',\n", + " 'com a vida querida',\n", + " 'com a vida mais garrida',\n", + " 'take it easy charlie',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'depois que o primeiro homem',\n", + " 'maravilhosamente pisou na lua',\n", + " 'eu me senti com direitos, com princípios',\n", + " 'e dignidade de me libertar',\n", + " 'por isso, sem preconceito eu canto',\n", + " 'eu canto a fantasia',\n", + " 'eu canto o amor',\n", + " 'eu canto a alegria',\n", + " 'eu canto a fé',\n", + " 'eu canto a paz',\n", + " 'eu canto a sugestão',\n", + " 'eu canto na madrugada',\n", + " 'take it easy my brother charlie',\n", + " 'pois eu canto até a minha amada',\n", + " 'esperada, desejada, adorada',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'take it easy my brother charlie',\n", + " '(charlie)',\n", + " 'take it easy meu irmão de cor',\n", + " '(take it easy my boy)',\n", + " 'take it easy my brother charlie',\n", + " '(take it easy my friend)',\n", + " 'take it easy meu irmão de cor',\n", + " '(olha, olha como o céu é azul)',\n", + " 'take it easy my brother charlie',\n", + " '(olha como o verde é o mar)',\n", + " 'take it easy meu irmão de cor',\n", + " '(olha que sol bonito, charles)',\n", + " 'take it easy my brother charlie',\n", + " '(take it easy my boy)',\n", + " 'take it easy meu irmão de cor',\n", + " '(take it easy my friend)',\n", + " 'take it easy my brother charlie',\n", + " '(tenha calma, meu amigo)',\n", + " 'take it easy meu irmão de cor',\n", + " '(charlie)',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'take it easy my brother charlie',\n", + " 'take it easy meu irmão de cor',\n", + " 'olhos verdes e boca cheia de vida',\n", + " '100 imagens refeitas sobre sua camisa',\n", + " 'não contei minha história, eu perdi a memória',\n", + " 'de tudo o que passei',\n", + " 'fuja logo comigo e confie no vento que se foi',\n", + " \"and you keep coming home cuz i'm running over my time\",\n", + " \"and you see that you're not far away but you clearly\",\n", + " \"don't make up your mind\",\n", + " 'so keep on moving on',\n", + " 'keep on driving me home',\n", + " 'and keep on moving on',\n", + " 'keep on driving me home',\n", + " \"and i complain that you're not here\",\n", + " \"but you can't hide from moments of fear\",\n", + " \"and you're not there so i pretend\",\n", + " \"you're an image from my head\",\n", + " 'and you say',\n", + " 'and you say',\n", + " 'recolhendo os pedaços do vaso da vida',\n", + " 'não precisa gritar, meu desejo é te amar sem ter fim',\n", + " 'fotogramas de instantes',\n", + " 'que foram importantes no mundo de nós dois',\n", + " 'fuja logo sozinho e confie no vento que se foi',\n", + " \"and you keep coming home cuz i'm running over my time\",\n", + " \"and you see that you're not far away but you clearly\",\n", + " \"don't make up your mind\",\n", + " 'so keep on moving on',\n", + " 'keep on driving me home',\n", + " 'and keep on moving on',\n", + " 'keep on driving me home',\n", + " \"and i complain that you're not here\",\n", + " \"but you can't hide from moments of fear\",\n", + " \"and you're not there so i pretend\",\n", + " \"you're an image from my head\",\n", + " 'and you say',\n", + " 'and you say',\n", + " 'clearly give it up, give it up',\n", + " 'give it up to the sky',\n", + " 'but you clearly give it up, give it up',\n", + " 'give it up to the sky',\n", + " 'clearly give it up, give it up',\n", + " 'give it up to the sky',\n", + " 'but you clearly give it so...',\n", + " 'so keep on moving on',\n", + " 'keep on driving me home',\n", + " 'and keep on moving on',\n", + " 'keep on driving me home',\n", + " \"so keep on moving on (so i complain that you're not here)\",\n", + " \"keep on driving me home (but you can't hide from moments of fear)\",\n", + " \"so keep on moving on (and you're not there so i pretend)\",\n", + " \"keep on driving me home (you're an image from my head)\",\n", + " \"and i complain that you're not here\",\n", + " \"but you can't hide from moments of fear\",\n", + " \"and you're not there so i pretend\",\n", + " \"you're an image from my head\",\n", + " 'and you say',\n", + " 'é você',\n", + " 'é você',\n", + " 'é você',\n", + " 'é você',\n", + " 'ah se esse amor só fosse meu',\n", + " 'ah se esse amor só fosse seu',\n", + " 'seria fácil a gente escapar',\n", + " 'if this love was just mine',\n", + " 'if this love was just yours',\n", + " 'it could could be easy to stop',\n", + " \"(but it's not)\",\n", + " 'mas a verdade é linda e pura',\n", + " 'a gente se ama sem frescura',\n", + " 'and my body says only yes!',\n", + " '(yes)',\n", + " 'the way you walk',\n", + " 'the way you talk',\n", + " 'the way you dance',\n", + " 'you move my heart so wild',\n", + " 'the way you touch',\n", + " 'the way you look at me, my love',\n", + " 'com você esse amor é bom demais',\n", + " 'ah se esse amor só fosse meu',\n", + " 'ah se esse amor só fosse seu',\n", + " 'seria fácil ele fácil ele passar',\n", + " '(mas não é)',\n", + " 'if this love was just mine',\n", + " 'if this love was just yours',\n", + " 'it could could be easy to stop',\n", + " \"(but i can't)\",\n", + " 'é mesmo o amor tem seu segredo',\n", + " 'de apagar as mágoas, o velho enredo',\n", + " 'de renovar pra acertar',\n", + " 'the way you think',\n", + " 'the way you act',\n", + " 'i understand you very well',\n", + " 'the way you say my love',\n", + " 'fascinates me',\n", + " 'this love is blessed love',\n", + " 'este amor é nosso amor',\n", + " 'abençoado pelo senhor',\n", + " 'this is our love',\n", + " 'beautiful',\n", + " 'the way you walk',\n", + " 'the way you talk',\n", + " 'you move my heart so well',\n", + " 'esse amor não pode parar',\n", + " \"(we can't stop)\",\n", + " 'este amor é nosso amor',\n", + " 'abençoado pelo senhor',\n", + " 'this is our love',\n", + " 'beautiful',\n", + " 'então',\n", + " 'a verdade é linda e pura',\n", + " 'a gente se ama sem frescura',\n", + " 'natural mental conection',\n", + " 'onde vai dar',\n", + " '(where will this go)',\n", + " 'onde vai dar',\n", + " '(where this will go)',\n", + " 'i say i never gonna give my love to nobody but you babe',\n", + " '(but you babe)',\n", + " \"and if i'm gonna give my love to nobody but you babe\",\n", + " '(but you babe)',\n", + " 'so love me forever, i said love me forever',\n", + " 'baby love me not just for pleasure',\n", + " 'love me always and forever',\n", + " \"cause i love you, it couldn't be better\",\n", + " \"and i'm giving my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"and i'm giving my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"and don't you ever give your love to nobody but me babe\",\n", + " '(but me babe)',\n", + " \"don't you ever give your love to nobody but me babe\",\n", + " '(but me babe)',\n", + " 'all day and all night',\n", + " 'i said all day and all night',\n", + " 'our love needs protection',\n", + " 'our love needs direction',\n", + " \"cause i love you, it couldn't be better\",\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " 'i say i never gonna give my love to nobody but you babe',\n", + " '(but you babe)',\n", + " \"and if i'm gonna give my love to nobody but you babe\",\n", + " '(but you babe)',\n", + " 'all day and all night',\n", + " 'i said all day and all night',\n", + " 'our love needs protection',\n", + " 'our love needs direction',\n", + " \"cause i love you, it couldn't be better\",\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " 'aqui nos teclados: prado',\n", + " 'nos scratches: dj marco',\n", + " 'guitarra e vocais: zé nigro',\n", + " 'contra-baixo: lucas martins',\n", + " 'bateria e vocais: bruno buarque',\n", + " 'na guitarra e vocais: dustang gallas',\n", + " 'gustavo lenza no pa',\n", + " 'nico ferreira monitor',\n", + " 'muitíssimo obrigado a todos',\n", + " 'telão, nosso roadie',\n", + " 'a todos que fizeram a coisa acontecer',\n", + " 'e nós estar aqui no palco agora',\n", + " 'xandinho na produção',\n", + " 'mas acima de tudo muitíssimo obrigado a vocês que compareceram',\n", + " 'valeu galera',\n", + " 'lindíssimo carnaval vos espera, nos espera',\n", + " 'vamo nessa com pouquinho de juízo',\n", + " 'mas não muito',\n", + " 'i say i never gonna give my love to nobody but you babe',\n", + " '(but you babe)',\n", + " \"and if i'm gonna give my love to nobody but you babe\",\n", + " '(but you babe)',\n", + " 'so love me forever, i said love me forever',\n", + " 'oh baby love me not just for pleasure',\n", + " 'baby love me always, forever',\n", + " \"cause i love you, it couldn't be better\",\n", + " \"and i'm giving my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"and i'm giving my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"and i'm giving my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"and i'm giving my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"and don't you ever give your love to nobody but me babe\",\n", + " '(but me babe)',\n", + " \"don't you ever give your love to nobody but me babe\",\n", + " '(but me babe)',\n", + " 'i say i never gonna give my love to nobody but you babe',\n", + " '(but you babe)',\n", + " \"and if i'm gonna give my love to nobody but you babe\",\n", + " '(but you babe)',\n", + " 'all day and all night',\n", + " 'i said all day and all night',\n", + " 'our love needs protection',\n", + " 'our love needs direction',\n", + " \"cause i love you, it couldn't be better\",\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " 'valeu, muito obrigado gente',\n", + " 'uma boa noite pra vocês',\n", + " 'saúde',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " \"i'm sending my love to you baby\",\n", + " 'you got my love, you got my love',\n", + " 'valeu, brigado',\n", + " 'até o anoitecer chegar',\n", + " 'e nos envolver',\n", + " 'passando do azul pro azul escuro',\n", + " 'até o rosa iluminar você',\n", + " 'aqui distante eu vou chorar',\n", + " 'por nós dois',\n", + " 'hummm, cada beijo',\n", + " 'cada beijo bom',\n", + " 'hummm, que saudades',\n", + " 'de te beijar',\n", + " 'hummm, cada beijo',\n", + " 'cada beijo bom',\n", + " 'hummm, cada beijo com sons',\n", + " 'agóra não tem mais azul nenhum',\n", + " 'sózinho fico com a lembrança sem côr',\n", + " 'hummm, cada beijo',\n", + " 'com um gosto bom',\n", + " 'hummm, cada beijo',\n", + " 'tem um tom',\n", + " 'hummm, cada beijo',\n", + " 'cada beijo bom',\n", + " 'hummm, cada beijo com som',\n", + " 'hummm, cada beijo',\n", + " 'cada beijo bom',\n", + " 'hummm, que saudades',\n", + " 'de te beijar',\n", + " 'hummm, cada beijo',\n", + " 'cada beijo bom',\n", + " 'hummm, cada beijo com som',\n", + " 'translation:',\n", + " 'until dusk approaches',\n", + " 'and involves us',\n", + " 'passing from blue to dark blue',\n", + " 'until the pink illuminates you',\n", + " 'here in the distance i will cry',\n", + " 'for both of us',\n", + " 'hmmm, each kiss',\n", + " 'each good kiss',\n", + " 'hmmm, how i miss',\n", + " 'kissing you',\n", + " 'hmmm, each kiss',\n", + " 'each good kiss',\n", + " 'hmmm, each kiss with sounds',\n", + " 'now there not any blue left',\n", + " 'alone i am with a colorless memory',\n", + " 'hmmm, each kiss',\n", + " 'with a good taste',\n", + " 'hmmm, each kiss',\n", + " 'has a key',\n", + " 'hmmm, each kiss',\n", + " 'each good kiss',\n", + " 'hmmm, each kiss with sound',\n", + " 'hmmm, each kiss',\n", + " 'each good kiss',\n", + " 'hmmm, how i miss',\n", + " 'kissing you',\n", + " 'hmmm, each kiss',\n", + " 'each good kiss',\n", + " 'hmmm, each kiss with sound',\n", + " 'eu sou, i am',\n", + " 'eu sou, i am',\n", + " 'eu sou, i am',\n", + " 'eu sou, i am',\n", + " 'i just desire what is not',\n", + " 'what was not, what is unfeasible',\n", + " \"i don't desire what was once\",\n", + " 'what was already, what is plausible',\n", + " 'i just desire what is real',\n", + " 'what is wrought, what is incredible',\n", + " \"i don't desire what is right\",\n", + " 'what is rule, what is suitable',\n", + " 'everybody needs a kiss',\n", + " 'everybody needs a kiss',\n", + " 'everybody, kiss somebody',\n", + " 'todo mundo precisa de beijo',\n", + " 'eu sou, i am',\n", + " 'todo mundo precisa de beijo',\n", + " 'eu sou, i am',\n", + " 'todo mundo precisa de beijo',\n", + " 'eu sou, i am',\n", + " 'todo mundo precisa de beijo',\n", + " 'eu sou, i am',\n", + " 'só quero o que não',\n", + " 'o que nunca, o inviável',\n", + " 'não quero o que já',\n", + " 'o que foi, o plausível',\n", + " 'só quero o que ainda',\n", + " 'o que atiça, o incrível',\n", + " 'não quero o que sim',\n", + " 'o que sempre, o cabível',\n", + " 'everybody needs a kiss',\n", + " 'everybody, kiss somebody',\n", + " 'everybody needs a kiss',\n", + " 'everybody, kiss somebody',\n", + " 'everybody needs a kiss',\n", + " 'everybody, kiss somebody',\n", + " 'everybody needs a kiss',\n", + " 'everybody, kiss somebody',\n", + " 'todo mundo precisa de beijo',\n", + " 'eu sou, i am',\n", + " 'todo mundo precisa de beijo',\n", + " 'eu sou, i am',\n", + " 'todo mundo precisa de beijo',\n", + " 'eu sou, i am',\n", + " 'todo mundo precisa de beijo',\n", + " 'eu sou, i am',\n", + " 'everybody needs a kiss',\n", + " 'everybody needs a kiss',\n", + " 'everybody, kiss somebody',\n", + " 'a insensatez',\n", + " 'que você fez',\n", + " 'coração mais sem cuidado',\n", + " 'fez chorar de dor',\n", + " 'o seu amor um amor',\n", + " 'tão delicado',\n", + " 'ah porque você',\n", + " 'foi fraco a**im',\n", + " 'assim tão desalmado',\n", + " 'ah, meu coração',\n", + " 'quem nunca amou',\n", + " 'não merece ser amado',\n", + " 'vai meu coração',\n", + " 'ouve a razão',\n", + " 'usa só sinceridade',\n", + " 'quem semeia vento',\n", + " 'diz a razão',\n", + " 'colhe sempre tempestade',\n", + " 'vai meu coração',\n", + " 'pede perdão',\n", + " 'perdão apaixonado',\n", + " 'vai porque quem não',\n", + " 'pede perdão',\n", + " 'não é nunca perdoado',\n", + " 'how insensitive',\n", + " 'musik: antonio carlos jobim',\n", + " 'text: norman gimbel',\n", + " 'how insensitive, i must have seemed',\n", + " 'when she told me that she loved me',\n", + " 'how unmoved and cold, i must have seemed',\n", + " 'when she told me so sincerely',\n", + " 'why she must have asked?',\n", + " 'did i just turn and stare in icy silence?',\n", + " 'what was i to say? what can you say',\n", + " 'when a love affair is over?',\n", + " 'how insensitive, he must have seemed',\n", + " 'when she told me that she loved him',\n", + " 'how unmoved and cold, he must have seemed',\n", + " 'when she told him so sincerely',\n", + " 'why she must have asked?',\n", + " 'did he just turn and stare in icy silence?',\n", + " 'what was she to say? what can he say',\n", + " 'when a love affair is over?',\n", + " \"now she's gone away\",\n", + " \"and i'm alone with a memory of her last look\",\n", + " 'vague and drawn and sad, i see it still',\n", + " 'all her heartbreak in that last look',\n", + " 'how she must have asked',\n", + " 'could i just turn and stare in icy silence?',\n", + " 'what was i to do? what can one do',\n", + " 'when a love affair is over?',\n", + " \"i've arrived in the city where i'm gonna sing\",\n", + " \"if i'm gonna sing, i must take a walk\",\n", + " \"if i take a walk, i'm watching some people\",\n", + " \"if i'm watching some people\",\n", + " 'i think about youhuhu, yeah, yeah, yeah...',\n", + " \"there's no one like youhuhu, yeah...\",\n", + " 'my grandma gave me this little guitar',\n", + " 'this little guitar has been quiet for a while',\n", + " \"if it's quiet for a while, it needs some new songs\",\n", + " 'if it needs some new songs',\n", + " 'i think about youhuhu, oh yeah',\n", + " 'all i write about is youhuhu, yeah...',\n", + " 'ai, ai, ai, moreno',\n", + " 'desse jeito você me ganha',\n", + " 'esse teu chamego',\n", + " 'o meu dengo e a tua manha',\n", + " 'ai, ai ai, moreno',\n", + " 'tua pele não há quem negue',\n", + " 'cor de quente, coração',\n", + " 'toda estrela e sol te segue',\n", + " \"i've arrived in the city where i'm gonna sing\",\n", + " \"if i'm gonna sing, i must take a walk\",\n", + " \"if i take a walk, i'm watching some people\",\n", + " \"if i'm watching some people\",\n", + " 'i think about youhuhu, yeah, yeah, yeah...',\n", + " \"there's no one like youhuhu, yeah...\",\n", + " 'my grandma gave me this little guitar',\n", + " 'this little guitar has been quiet for a while',\n", + " \"if it's quiet a while, it needs some new songs\",\n", + " 'if it needs some new songs',\n", + " 'i think about youhuhu, yeah, yeah, yeah...',\n", + " 'all i write about is youhuhu, yeah...',\n", + " 'só vou se for com ele',\n", + " 'eu tenho medo de avião',\n", + " 'se eu fico longe dele',\n", + " 'eu perco o norte e o chão',\n", + " 'só quero saber dele',\n", + " 'e nada mais importa',\n", + " 'eu vou ficar com ele',\n", + " 'que ele pega a minha mão',\n", + " 'e nunca mais me solta',\n", + " 'the more you know, the less you know',\n", + " 'the less you know, the more you know',\n", + " 'you know, babies know more than us',\n", + " 'they know more than us, and as we grow',\n", + " 'the less you know, the more you know',\n", + " 'the more you know, the less you know',\n", + " 'you know, babies know more than us',\n", + " 'they know more than us, and as we grow',\n", + " 'na verdade, eu penso que ele vai voltar',\n", + " 'que ele vai, ele vai, ele vai voltar',\n", + " 'the more you know, the less you know',\n", + " 'less you know, the more you know',\n", + " 'you know, babies know more than us',\n", + " 'they know more than us, and as we grow',\n", + " 'the less you know, the more you know',\n", + " 'the more you know, the less you know',\n", + " 'you know, babies know more than us',\n", + " 'they know more than us, and as we grow',\n", + " 'francamente, eu acho que ele não vai voltar',\n", + " 'que ele não, ele não, ele não vai voltar',\n", + " 'the more you know, less you know',\n", + " 'the less you know, the more you know',\n", + " 'you know, babies know more than us',\n", + " 'they know more than us, and as we grow',\n", + " 'the less you know, the more you know',\n", + " 'the more you know, the less you know',\n", + " 'you know, babies know more than us',\n", + " 'they know more than us, and as we grow',\n", + " 'na verdade, eu penso que ele não vai voltar',\n", + " 'que ele não, que ele não, ele não vai voltar',\n", + " 'na verdade, eu penso que ele vai voltar',\n", + " 'que ele vai, que ele vai, ele vai voltar',\n", + " 'que ele vai, vai, vai, vai, vai',\n", + " 'vai, vai, vai, vai, vai, vai...',\n", + " 'bring back the love, bring back the love',\n", + " 'bring back the love',\n", + " 'bring back the love, bring back the love',\n", + " 'bring back the love',\n", + " 'bring back the love, bring back the love',\n", + " 'bring back the love',\n", + " 'bring back the love, bring back the love',\n", + " 'bring back the love',\n", + " \"chegou a hora d'agente conversar sobre o nosso amor\",\n", + " 'voc foi embora e eu fiquei aqui pensando no voc falou',\n", + " 'sou uma mulher nova, mas tambm no sou',\n", + " 'sou mulher agora, mas tambm no sou',\n", + " 'bring back the love, bring back the love',\n", + " 'bring back the love',\n", + " 'bring back the love, bring back the love',\n", + " 'bring back the love',\n", + " 'no tem pessoa nesse mundo que eu ame tanto como voc',\n", + " 'no tem pessoa nesse mundo melhor para se descrever',\n", + " 'cinco anos no so poucos meu amor',\n", + " 'cinco anos no so, so, so',\n", + " 'bring back the love, bring back the love',\n", + " 'bring back the love',\n", + " 'bring back the love, bring back the love',\n", + " 'bring back the love',\n", + " 'bring back the love, bring back the love',\n", + " 'bring back the love',\n", + " 'bring back the love, bring back the love',\n", + " 'bring back the love',\n", + " 'bring back the love',\n", + " 'bring back the love',\n", + " 'bring back the love',\n", + " 'rio, rio, rio, yeah!',\n", + " 'rio, rio, rio',\n", + " 'let me take you to rio, rio',\n", + " \"fly'o the ocean like an eagle, ealge\",\n", + " 'and we can chill in my gazebo, gazebo',\n", + " 'oh, oh, oh, oh, na, na, na',\n", + " 'let me take you to rio, rio',\n", + " \"fly'o the ocean like an eagle, eagle\",\n", + " 'and we can chill in my gazebo',\n", + " 'oh, oh, oh, oh, na, na, na',\n", + " 'veja como é rico o nosso riso',\n", + " 'o sol é feliz e sabe rir também',\n", + " 'águas verdes rindo, mares vindo',\n", + " 'tudo é samba, samba e vem sambar meu bem!',\n", + " 'para ter amor e um pouquinho de rio',\n", + " 'onde a paixão é o riso de alguém',\n", + " 'vou te dar calor e um carinho de ritmo',\n", + " 'todo meu amor com a natureza vem, vem',\n", + " 'let me take you to rio, rio',\n", + " \"fly'o the ocean like an eagle, ealge\",\n", + " 'and we can chill in my gazebo, gazebo',\n", + " 'oh, oh, oh, oh, na, na, na',\n", + " 'let me take you to rio, rio',\n", + " \"fly'o the ocean like an eagle, eagle\",\n", + " 'and we can chill in my gazebo',\n", + " 'oh, oh, oh, oh, na, na, na',\n", + " 'há tanta beleza à se perder de vista',\n", + " 'cidade, floresta, meu cantinho, quintal',\n", + " \"faz quarenta graus p'ra esquentar a vida\",\n", + " \"faz uma batida p'ra ficar legal\",\n", + " 'laje, a minha nave no alto do morro',\n", + " 'todo dia é dia de beijar o sal',\n", + " 'sambas na batida, projetos e rimas',\n", + " 'não tem fantasia, tudo é carnaval',\n", + " 'let me take you to rio, rio',\n", + " \"fly'o the ocean like an eagle, ealge\",\n", + " 'and we can chill in my gazebo, gazebo',\n", + " 'oh, oh, oh, oh, na, na, na',\n", + " 'let me take you to rio, rio',\n", + " \"fly'o the ocean like an eagle, eagle\",\n", + " 'and we can chill in my gazebo',\n", + " 'oh, oh, oh, oh, na, na, na',\n", + " \"since that day you're all i think about\",\n", + " 'about, think about',\n", + " 'i think about, i think about',\n", + " 'zona norte, zona oeste, zona leste, zona sul',\n", + " 'esse é o barulho novo do motor da r1',\n", + " 'vrum, acelera, vai',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " 'e a fuga eu vou dar, na garupa ela vai gritar',\n", + " 'descabelada vai ficar e não para de apertar',\n", + " 'zona norte, zona oeste, zona leste, zona sul',\n", + " 'esse é o barulho novo do motor da r1',\n", + " 'vrum, acelera, vai',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " \"since that day you're all i think about\",\n", + " 'about, think about',\n", + " 'i think about, i think about',\n", + " 'zona norte, zona oeste, zona leste, zona sul',\n", + " 'esse é o barulho novo do motor da r1',\n", + " 'vrum, acelera, vai',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " 'e a fuga eu vou dar, na garupa ela vai gritar',\n", + " 'descabelada vai ficar e não para de apertar',\n", + " 'zona norte, zona oeste, zona leste, zona sul',\n", + " 'esse é o barulho novo do motor da r1',\n", + " 'vrum, acelera, vai',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " 'dododo, dododo, dododo, dododo',\n", + " 'dododo, dododo, dodododo',\n", + " \"since that day you're all i think about\",\n", + " 'about, think about',\n", + " 'i think about, i think about',\n", + " 'if jesus christ',\n", + " 'had been a black man',\n", + " 'there would be indifference',\n", + " 'the color of his purple skin',\n", + " 'if jesus christ',\n", + " 'had been a black man',\n", + " 'had been a black man',\n", + " 'um homem de cor',\n", + " 'a mesma mensagem de fé e de amor',\n", + " ...]},\n", + " 'data': ['hoje cedo, na rua do ouvidor',\n", + " 'quantos brancos horríveis eu vi',\n", + " 'eu quero um homem de cor',\n", + " 'um deus negro do congo ou daqui',\n", + " 'que se integre no meu sangue europeu',\n", + " 'black is beautiful, black is beautiful',\n", + " 'black beauty so peaceful',\n", + " 'i want to a black i want to a beautiful',\n", + " 'hoje a noite amante negro eu vou',\n", + " 'vou enfeitar o meu corpo no seu',\n", + " 'eu quero este homem de cor',\n", + " 'um deus negro do congo ou daqui',\n", + " 'que se integre no meu sangue europeu',\n", + " 'black is beautiful, black is beautiful',\n", + " 'black beauty so peaceful',\n", + " 'i want to a black i want to a beautiful',\n", + " 'beira-mar, o que caboclo',\n", + " 'beira-mar, e sentinela de oxum',\n", + " 'e remador de yemanja',\n", + " 'e sentinela de oxum',\n", + " 'e remador de yemanja',\n", + " 'sr. beira mar e ogum',\n", + " 'que bem das oudos de mar',\n", + " \"you don't know me\",\n", + " \"bet you'll never get to know me\",\n", + " \"you don't know me at all\",\n", + " 'feel so lonely',\n", + " 'the world is spinning round slowly',\n", + " \"there's nothing you can show me\",\n", + " 'from behind the wall',\n", + " 'show me from behind the wall',\n", + " 'show me from behind the wall',\n", + " 'show me from behind the wall',\n", + " 'show me',\n", + " \"you don't know me\",\n", + " \"bet you'll never get to know me\",\n", + " \"you don't know me at all\",\n", + " 'feel so lonely',\n", + " 'the world is spinning round slowly',\n", + " \"there's nothing you can show me\",\n", + " 'from behind the wall',\n", + " 'show me from behind the wall',\n", + " 'show me from behind the wall',\n", + " 'show me from behind the wall',\n", + " 'show me',\n", + " 'nasci lá na bahia de mucama com feitor',\n", + " 'o meu pai dormia em cama',\n", + " 'minha mãe no pisador',\n", + " 'laia ladaia sabatana ave maria',\n", + " \"you don't know me\",\n", + " \"bet you'll never get to know me\",\n", + " '(eu, você, nós dois',\n", + " 'já temos um passado, meu amor)',\n", + " \"you don't know me at all\",\n", + " '(um violão guardado, aquela flor)',\n", + " 'feel so lonely',\n", + " 'the world is spinning round slowly',\n", + " '(e outras mumunhas mais)',\n", + " \"there's nothing you can show me\",\n", + " 'from behind the wall',\n", + " 'show me from behind the wall',\n", + " 'come on and show me from behind the wall',\n", + " 'show me from behind the wall',\n", + " \"why don't you show me from behind the wall?\",\n", + " 'show me from behind the wall',\n", + " 'come on and show me from behind the wall',\n", + " 'show me from behind the wall',\n", + " 'come on and...',\n", + " 'laia ladaia sabatana ave maria',\n", + " 'laia ladaia sabatana ave maria',\n", + " 'eu agradeço ao povo brasileiro',\n", + " 'norte, centro, sul inteiro',\n", + " 'onde reinou o baião',\n", + " 'eu agradeço ao povo brasileiro',\n", + " 'norte, centro, sul inteiro',\n", + " 'onde reinou o baião',\n", + " 'alegria, como uma luz, nova vida',\n", + " 'alegria, ouço uma voz a cantar',\n", + " 'alegria, lágrima que brilha tanta emoção',\n", + " 'magia, uma loucura de amor',\n", + " 'alegria, como uma brisa de felicidade',\n", + " \"alegria, c'mon and sing together\",\n", + " 'alegria, raise your voices and sing',\n", + " 'alegria, set you spirit free and sing along with me tonight',\n", + " \"c'mon and sing it together\",\n", + " 'alegria, lift your voices and sing it with me',\n", + " 'lift your voices and sing it with me',\n", + " 'alegria, como la luz de la vida',\n", + " 'alegria, como un payaso que grita',\n", + " 'alegria, del estupendo grito, de la tristeza loca',\n", + " 'serena, como la rabia de amar',\n", + " 'alegria, como un asalto de felicidad',\n", + " 'olha pro mim tu me viste',\n", + " 'look at me, did you see me',\n", + " 'estava pensando em ti ness ultima noche',\n", + " 'i was thinking of you last night',\n", + " 'ai minha mãe perdona-me',\n", + " 'oh my mother forgive me',\n", + " 'huh hombre isso me escita',\n", + " 'oh man this excites me',\n", + " 'tem quem tem',\n", + " 'não tem quem tem',\n", + " 'não tem',\n", + " 'de vez em quando tem',\n", + " 'de vez em quando vem',\n", + " 'de vez em quando tem',\n", + " 'de vez em quando tem você (bis)',\n", + " 'se tem não sei se tem',\n", + " 'e quem tem não vê',\n", + " 'nem pensa em saber',\n", + " 'de vez em quando vem',\n", + " 'de vez em quando tem',\n", + " 'de vez em quando tem você (bis)',\n", + " 'se tem não sei se tem',\n", + " 'e quem tem não vê',\n", + " 'nem pensa em saber',\n", + " 'quem tem não tem',\n", + " 'e o que se tem?',\n", + " 'se não tem mais alguém',\n", + " 'de vez em quando tem',\n", + " 'de vez em quando vem',\n", + " 'de vez em quando tem você',\n", + " 'tem quem tem',\n", + " 'não tem quem tem',\n", + " 'não tem, não tem',\n", + " 'não tem, quem tem?',\n", + " 'translation:',\n", + " 'someone',\n", + " 'there are those who have',\n", + " 'there are those who have not',\n", + " 'have not',\n", + " 'sometimes have',\n", + " 'sometimes comes',\n", + " 'sometimes there is',\n", + " 'sometimes there is you (bis)',\n", + " \"if there are, i don't know there is\",\n", + " 'and who has does not see',\n", + " \"doesn't even care to know\",\n", + " 'sometimes comes',\n", + " 'sometimes there is',\n", + " 'sometimes there is you (bis)',\n", + " \"if there are, i don't know there is\",\n", + " 'and who has does not see',\n", + " \"doesn't even care to know\",\n", + " 'those who have, have not',\n", + " 'and what we have?',\n", + " 'if there is not someone',\n", + " 'sometimes comes',\n", + " 'sometimes there is',\n", + " 'sometimes there is you (bis)',\n", + " 'there are those who have',\n", + " 'there are those who have not',\n", + " 'have not, have not',\n", + " 'have not, have not?',\n", + " 'olhar',\n", + " 'de rapina',\n", + " 'carregado',\n", + " 'determinado a não deixar',\n", + " 'que a minha alquimia, tão vazia',\n", + " 'seja domada pelo teu amor',\n", + " \"dá p'ra ver que é fundamental\",\n", + " 'os refrões, os tacões e as flores do mal',\n", + " 'esta flecha é intencional',\n", + " 'os refrões, os tacões e as flores do mal',\n", + " 'these are the songs',\n", + " 'i wanna sing',\n", + " 'these are the songs',\n", + " 'i wanna play',\n", + " 'i will sing it every little time',\n", + " 'and i will sing it every day',\n", + " '(now listen here)',\n", + " 'these are the songs',\n", + " 'that i wanna sing and play',\n", + " 'esta é a canção que eu vou ouvir',\n", + " 'esta é a canção que eu vou cantar',\n", + " 'fala de você, meu bem',\n", + " 'e do nosso amor também',\n", + " 'sei que você vai gostar',\n", + " 'cadê o pop?',\n", + " 'qual é o pop?',\n", + " 'que faz todo mundo dançar?',\n", + " 'quem é o pop?',\n", + " 'como é o pop?',\n", + " 'que a rádio não parou de tocar',\n", + " 'ah, ah, ah, ah...',\n", + " 'o pop da mídia',\n", + " 'o pop da máfia',\n", + " 'pop pra criança',\n", + " 'pop pra gandaia',\n", + " 'pop de gringo',\n", + " 'pop de brega',\n", + " 'e se o pop é pop mesmo',\n", + " 'o pop te pega',\n", + " 'ah, ah, ah, ah...',\n", + " \"(i can't get no satisfaction...)\",\n", + " 'já sem o rei do disco',\n", + " 'sampler do nat king cole',\n", + " 'o prince da funk music',\n", + " \"a lenda do rock'n'roll\",\n", + " 'pin up heavy metal',\n", + " 'hip hop do bronx',\n", + " 'na mtv da barbie',\n", + " 'o cover dos rolling stones',\n", + " 'ah, ah, ah, ah...',\n", + " \"(i can't get no satisfaction)\",\n", + " 'no futuro',\n", + " 'todo mundo vai ter',\n", + " 'quinze minutos',\n", + " 'pra brilhar',\n", + " 'pois no mundo',\n", + " 'quem veio do pop',\n", + " 'um dia sempre',\n", + " 'ao pop voltará',\n", + " 'ah, ah, ah, ah ...',\n", + " \"(hit the road, jack, and don't come back no more...)\",\n", + " 'ah, ah, ah, ah ...',\n", + " \"(...and she's bying a stairway to heaven...)\",\n", + " 'contando estrêlas',\n", + " 'de um céu distante',\n", + " 'me faz lembrar o meu lugar',\n", + " 'meu coração aperta',\n", + " 'sem nem me avisar',\n", + " 'vendo um brilho lá no meio',\n", + " 'que não pode mais existir',\n", + " 'memorizo num instante',\n", + " 'o meu próprio céu',\n", + " 'são tantos céus',\n", + " 'tão diferentes',\n", + " 'que nunca sei',\n", + " 'o meu lugar',\n", + " 'me encontro sempre olhando',\n", + " 'perdida no ar',\n", + " 'relembrando meus momentos',\n", + " 'que me fazem só contemplar',\n", + " 'naquele tempo eu tinha tempo',\n", + " 'de me recostar',\n", + " 'sob o céu no meu coração',\n", + " 'eu vou contar até te achar',\n", + " 'por um instante eu soube',\n", + " 'qual é o seu lugar',\n", + " 'vendo um brilho lá no meio',\n", + " 'que não pode mais resistir',\n", + " 'memorizo num instante',\n", + " 'o meu próprio céu',\n", + " 'translation:',\n", + " 'counting stars',\n", + " 'of a distant sky',\n", + " 'i am reminded of my place',\n", + " 'my heart tightens',\n", + " 'without giving me notice',\n", + " 'i see a twinkle in the middle',\n", + " \"that can't exist any more\",\n", + " 'i memorize an instant',\n", + " 'my private sky',\n", + " 'there are so many skies',\n", + " 'all so different',\n", + " 'that i never know',\n", + " 'my place',\n", + " 'i find myself always looking',\n", + " 'lost in the air',\n", + " 'remembering my moments',\n", + " 'that make me contemplate',\n", + " 'then i had time',\n", + " 'to lay back',\n", + " 'under the sky in my heart',\n", + " 'i will count until i find you',\n", + " 'for an instant i knew',\n", + " 'where is your place',\n", + " 'i see a twinkle in the middle',\n", + " \"that can't resist no longer\",\n", + " 'i memorize an instant',\n", + " 'my own sky',\n", + " 'the summer is magic, is magic oh oh oh',\n", + " 'the summer is magic',\n", + " 'te sinto na pele, se entregue oh oh oh',\n", + " 'meu corpo te pede',\n", + " 'nas noites de verão',\n", + " 'o teu perfume é sedução',\n", + " 'transas no sol, transas no mar',\n", + " 'teu corpo é do vento',\n", + " 'a praia é teu país',\n", + " '40 graus pra ser feliz',\n", + " 'nos teus braços me atirei',\n", + " 'essa é a nossa lei',\n", + " 'the summer is magic, is magic oh oh oh',\n", + " 'the summer is magic',\n", + " 'te sinto na pele, se entregue oh oh oh',\n", + " 'meu corpo te pede',\n", + " 'nas noites de verão',\n", + " 'o teu perfume é sedução',\n", + " 'transas no sol, transas no mar',\n", + " 'teu corpo é do vento',\n", + " 'a praia é teu país',\n", + " '40 graus pra ser feliz',\n", + " 'nos teus braços me atirei',\n", + " 'essa é a nossa lei',\n", + " 'the summer is magic, is magic oh oh oh',\n", + " 'the summer is magic',\n", + " 'te sinto na pele, se entregue oh oh oh',\n", + " 'meu corpo te pede',\n", + " 'the summer is magic, is magic oh oh oh',\n", + " 'the summer is magic',\n", + " 'te sinto na pele, se entregue oh oh oh',\n", + " 'meu corpo te pede',\n", + " 'oh-oh-oh, oh oh oh',\n", + " 'oh-oh-oh, oh oh oh',\n", + " 'the summer is magic, is magic oh oh oh',\n", + " 'the summer is magic',\n", + " 'te sinto na pele, se entregue oh oh oh',\n", + " 'meu corpo te pede',\n", + " 'the summer is magic, is magic oh oh oh',\n", + " 'the summer is magic',\n", + " 'te sinto na pele, se entregue oh oh oh',\n", + " 'meu corpo te pede',\n", + " 'so danco samba',\n", + " 'so danco samba, vai, vai, vai, vai, vai',\n", + " 'so danco samba',\n", + " 'so danco samba, vai',\n", + " 'so danco samba',\n", + " 'so danco samba, vai, vai, vai, vai, vai',\n", + " 'so danco samba',\n", + " 'so danco samba, vai',\n", + " 'ja dancei o twist ate demais',\n", + " 'mas nao sei',\n", + " 'me cansei',\n", + " 'do calipso ao cha cha cha',\n", + " 'so danco samba',\n", + " 'so danco samba, vai, vai, vai, vai, vai',\n", + " 'so danco samba',\n", + " 'so danco samba, vai',\n", + " '(varias vezes)',\n", + " 'so danco samba',\n", + " 'so danco samba, vai',\n", + " 'so danco samba',\n", + " 'so danco samba, vai',\n", + " 'mas eu levei uma pernada',\n", + " 'de um morto-vivo',\n", + " 'embaixo dum arvoredo',\n", + " 'em cima do limo',\n", + " 'eu tava sem assunto',\n", + " 'e eles foram embora',\n", + " 'quando me veio um assunto',\n", + " 'encontrei a caipora',\n", + " 'calculadora na mão',\n", + " 'contando as sugestas',\n", + " 'que aplicava todo dia',\n", + " 'essa era a sua função',\n", + " 'lá, lá, lá',\n", + " 'a joyfull noise',\n", + " 'came into my window',\n", + " 'something like a new brazilian style',\n", + " 'bringing this explosion',\n", + " 'around me head',\n", + " 'it was a great moment',\n", + " 'fat beats, dry and strong',\n", + " 'my room is so high now',\n", + " 'like a nightmare',\n", + " 'lá, lá, lá',\n", + " 'e são colagens de imagens vivas',\n", + " 'estou dançando enquanto sonhando',\n", + " 'cheguei numa esquina toda colorida',\n", + " 'estava tudo tão claro',\n", + " 'aceso, tão vivo',\n", + " 'cheirando a tinta fresca',\n", + " 'era coisa nova',\n", + " 'só que no baque arrodeio',\n", + " 'disfarço, reparto, completo, arrumo',\n", + " 'desmancho, recorto e sampleio, sampleio...sampleio',\n", + " 'lá, lá, lá',\n", + " 'somebody makes me favorite beats',\n", + " \"last night what we're trying to do\",\n", + " 'was build a new sound',\n", + " 'and now we are hungry for listen this',\n", + " 'we are not responsable for damage speakers',\n", + " 'another level, other flavor',\n", + " 'do the androids dreams with eletric tropics?',\n", + " 'baptize the beat',\n", + " 'in a brazilian sambadelic excursion',\n", + " 'can you hear me? (4x)',\n", + " 'when the beat is side be side of the rhyme',\n", + " 'from the underground of the mud',\n", + " 'to play your mind, to talk inside',\n", + " 'then i show you what you want to find',\n", + " 'when the beat is side be side of the rhyme',\n", + " 'from the underground of the mud',\n", + " 'to play your mind, to talk inside',\n", + " 'then i show you what you want to find',\n", + " \"it's a frantic situation (4x)\",\n", + " \"it's a mad, mad maracatu (2x)\",\n", + " 'son los sebosos postizos',\n", + " 'que controlan la radio en el mundo',\n", + " 'lo-fi dream (3x)',\n", + " 'would you give yourself to me',\n", + " 'like it was the first time',\n", + " 'go crazy with my touch',\n", + " 'feel the heat of love',\n", + " 'stay right here with me',\n", + " \"i'm a firebird of passion\",\n", + " \"that's singing in your ear\",\n", + " 'i want you to be my baby',\n", + " 'let ourselves go crazy',\n", + " 'let go of our fears',\n", + " \"a soul that's traveled so far\",\n", + " 'an independent heart',\n", + " 'is now falling for you',\n", + " 'i want to be your secret',\n", + " 'take your peace and keep it',\n", + " \"be more than you've ever needed\",\n", + " \"no don't tell me no, don't deny yourself\",\n", + " 'a new chance at love, a new passion',\n", + " 'tell me',\n", + " 'so far from the earth',\n", + " \"i'll be your feet\",\n", + " 'straight to your heart on the wings of a dream',\n", + " 'feel what you feel, fall into me',\n", + " 'ride with my body, eternally',\n", + " 'vai se entregar pra mim',\n", + " 'como a primeira vez',\n", + " 'vai delirar de amor',\n", + " 'sentir o meu calor, vai me pertencer',\n", + " 'sou pássaro de fogo',\n", + " 'que canto ao teu ouvido',\n", + " 'vou ganhar este jogo, te amando feito um louco',\n", + " 'quero teu amor bandido',\n", + " 'minha alma viajante, coração independente',\n", + " 'por você corre perigo',\n", + " 'tô afim dos teus segredos, de tirar o teu sossego',\n", + " 'ser bem mais que um amigo',\n", + " 'não diga que não, não negue a você',\n", + " 'um novo amor, uma nova paixão',\n", + " 'diz pra mim',\n", + " 'tão longe do chão, serei os teus pés',\n", + " 'nas asas de um sonho, rumo ao teu coração',\n", + " 'permita sentir, se entrega pra mim',\n", + " 'cavalga em meu corpo a minha eterna paixão',\n", + " 'sou pássaro de fogo, firebird of passion',\n", + " 'a firebird of passion',\n", + " 'ai',\n", + " 'ai ai ai',\n", + " 'ai ai ai ai ai ai ai',\n", + " 'em cima, embaixo, puxa e vai',\n", + " 'ai ai ai',\n", + " 'ai ai ai ai ai ai ai',\n", + " 'em cima, embaixo, puxa e vaaaaaaaaaaaaaiii',\n", + " 'if you want to be metal',\n", + " 'the laws you got to obey',\n", + " 'the laws of gods of metal',\n", + " \"and that's what i say\",\n", + " 'woooowwwwwwww',\n", + " 'if you want to be metal',\n", + " 'no avacalhation',\n", + " 'use black forever',\n", + " 'go to the show of massacration',\n", + " 'no! boiolation',\n", + " 'frescuration',\n", + " 'viadation',\n", + " 'die! reggae idiota!',\n", + " 'mambo escroto',\n", + " 'forró babacaaaaaaaaaaaaaa!',\n", + " 'metal is the law',\n", + " 'the law is the metal',\n", + " 'metal the law is',\n", + " 'metal',\n", + " 'woooooooooooowwwwwwwwww',\n", + " 'now that you are metal',\n", + " 'metal you are',\n", + " 'never, never, never, never, never',\n", + " 'use bermudaaaaa',\n", + " 'no! boiolation',\n", + " 'frescuration',\n", + " 'viadation',\n", + " 'die! música eletrônica de bicha!',\n", + " 'pop de viados',\n", + " 'dance, no!!!',\n", + " 'metal is the law',\n", + " 'the law is the metal',\n", + " 'metal the law is',\n", + " 'metal',\n", + " 'ôôôôô ôôôô ôôôô ôôôô',\n", + " 'oooooohhhhh',\n", + " 'ai',\n", + " 'ai ai ai',\n", + " 'ai ai ai ai ai ai ai',\n", + " 'em cima, embaixo, puxa e vai',\n", + " 'ai ai ai',\n", + " 'ai ai ai ai ai ai ai',\n", + " 'em cima, embaixo, puxa e vaaaaaaaaaaaaaaiii',\n", + " 'ai',\n", + " 'ai ai ai',\n", + " 'ai ai ai ai ai ai ai',\n", + " 'ai',\n", + " 'ai ai ai',\n", + " 'ai ai ai ai ai ai ai',\n", + " 'metal',\n", + " 'cor di rosa',\n", + " 'na mare di tardi',\n", + " 'e ku nha kim bem, (cor di rosa)',\n", + " 'e ku nha kim kre bai',\n", + " 'cor di rosa',\n", + " 'e sabe ki trazenu',\n", + " 'ele e ki ta lembano',\n", + " 'ma e pa nos morada',\n", + " 'cor di rosa',\n", + " 'si du ka ba sedo',\n", + " 'es ta labantano alebe',\n", + " 'es ta pono stera',\n", + " 'wai cor de rosa',\n", + " 'nos distino e djarfogu',\n", + " 'du ka ta trocal',\n", + " 'ku nada des mundo',\n", + " 'fuska fuska',\n", + " 'xa note fitcha',\n", + " 'pa mundo ka odjano',\n", + " 'ku nha lima nobo',\n", + " 'kretcheu na peto',\n", + " 'ta djongo na madorna',\n", + " 'ai oh modrugado',\n", + " 'ka bu xan terral manche',\n", + " 'ai u ai u ai',\n", + " 'nos distino e djarfogo',\n", + " 'du ka ta trocal',\n", + " 'ku nada des mundo',\n", + " 'wai o dimingo',\n", + " 'dimingo nos distino e djarfogu',\n", + " 'du ka ta trocal',\n", + " 'ku nada des mundu',\n", + " 'oi mino',\n", + " 'mino de mama',\n", + " 'fran pa to kim odjabo',\n", + " 'curagi ta dam',\n", + " 'ta parcem ma mundu bira',\n", + " 'so di me ku bo, mino',\n", + " 'ku nos lima nobu',\n", + " 'wai oh mino',\n", + " 'mino nos distino e djargofu',\n", + " 'du ka ta trocal',\n", + " 'ku nada des mundu',\n", + " 'wai oh mama',\n", + " 'mama nos distinu e djarfogu, mama',\n", + " 'du ka ta trocal',\n", + " 'ku nada des mundu',\n", + " 'wai oh djarfogu',\n", + " 'djarfogu bo e nos distinu',\n", + " 'du ka ta trocabu',\n", + " 'ku nada des mundu',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'primera vez',\n", + " \"qu'm ba na rebera grande\",\n", + " \"'m passa sabe\",\n", + " 'fui dente dum reservado',\n", + " 'primera vez',\n", + " \"qu'm ba na rebera grande\",\n", + " \"'m passa sabe\",\n", + " 'fui dente dum reservado',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'nos era tres',\n", + " \"que t'ma um estamperode\",\n", + " 'quande no sai',\n", + " 'no ta que palpite descomandode',\n", + " 'nos era tres',\n", + " \"que t'ma um estamperode\",\n", + " 'quande no sai',\n", + " 'no ta que palpite descomandode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'primera vez',\n", + " \"qu'm ba na rebera grande\",\n", + " \"'m passa sabe\",\n", + " 'fui dente dum reservado',\n", + " 'primera vez',\n", + " \"qu'm ba na rebera grande\",\n", + " \"'m passa sabe\",\n", + " 'fui dente dum reservado',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'nos era tres',\n", + " \"que t'ma um estamperode\",\n", + " 'quande no sai',\n", + " 'no ta que palpite descomandode',\n", + " 'nos era tres',\n", + " \"que t'ma um estamperode\",\n", + " 'quande no sai',\n", + " 'no ta que palpite descomandode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'primera vez',\n", + " \"qu'm ba na rebera grande\",\n", + " \"'m passa sabe\",\n", + " 'fui dente dum reservado',\n", + " 'primera vez',\n", + " \"qu'm ba na rebera grande\",\n", + " \"'m passa sabe\",\n", + " 'fui dente dum reservado',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'nos era tres',\n", + " \"que t'ma um estamperode\",\n", + " 'quande no sai',\n", + " 'no ta que palpite descomandode',\n", + " 'nos era tres',\n", + " \"que t'ma um estamperode\",\n", + " 'quande no sai',\n", + " 'no ta que palpite descomandode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " 'oh, nho antone escaderode',\n", + " 'escaderode, escaderode',\n", + " '(dorival caymmi)',\n", + " 'nada como ser rosa na vida',\n", + " 'rosa mesmo ou mesmo rosa mulher',\n", + " 'todos querem muito bem a rosa',\n", + " 'quero eu todo mundo também quer',\n", + " 'um amigo meu disse que em samba',\n", + " 'canta-se melhor flor e mulher',\n", + " 'eu que tenho rosas como tema',\n", + " 'canto no compasso que quiser',\n", + " 'roses, roses, roses',\n", + " 'i thank of the roses that bloom in the spring',\n", + " 'love is a wonderful thing',\n", + " 'the rest of my life he will bring me',\n", + " 'roses and roses and roses of love',\n", + " 'roses, roses, roses',\n", + " \"i thank you for saying what we couldn't say\",\n", + " 'oh what a wonderful way',\n", + " 'to tell me i love you each day',\n", + " 'with roses and roses and roses of love',\n", + " '(dorival caymmi)',\n", + " 'rosas a me confundir',\n", + " 'rosas a te confudir',\n", + " 'são muitas são tantas são todas tão rosas',\n", + " 'rosas de abril',\n", + " 'roses, roses, roses',\n", + " \"i thank you for saying what we couldn't say\",\n", + " 'oh what a wonderful way',\n", + " 'to tell me i love you each day',\n", + " 'with roses and roses and roses of love',\n", + " '(e rosas e rosas de abril)',\n", + " 'roses and roses and roses de abril',\n", + " '(e rosas e rosas de abril)',\n", + " 'roses and roses and roses de abril',\n", + " '(e rosas e rosas de abril)',\n", + " 'ando tanto tempo a perguntar',\n", + " 'porque esperar tanto assim de alguém',\n", + " 'percorrendo espaços no mesmo lugar',\n", + " 'não sei a quanto tempo estou a te buscar',\n", + " 'num segundo eu vou',\n", + " 'sabendo e percebendo o seu sabor',\n", + " 'sem ter medo estou',\n", + " 'correndo contra o vento sem nunhum rancôr',\n", + " 'ando tanto tempo a perguntar',\n", + " 'porque esperar tanto assim de alguém',\n", + " 'sem saber',\n", + " 'sem qualquer medo de vêr',\n", + " 'translation:',\n", + " 'so long',\n", + " \"i've been wondering for so long\",\n", + " 'why to expect so much from someone',\n", + " 'running through spaces in the same place',\n", + " \"i've been searching for you a long long time\",\n", + " 'i am gone in a second',\n", + " 'knowing and learning your taste',\n", + " 'fearless i am',\n", + " 'running against the wind, holding no grudges',\n", + " \"i've been wondering for so long\",\n", + " 'why to expect so much from someone',\n", + " 'without knowing',\n", + " 'without any fear to see',\n", + " 'tristeza é uma coisa sem graça',\n", + " 'mas sempre fez parte da minha canção',\n", + " 'tristeza se uniu a beleza',\n", + " 'que sempre existiu no meu coração',\n", + " 'beleza é a tristeza da flor',\n", + " 'que nasceu sem perfume, mas tem seu valor',\n", + " 'beleza é a tristeza da chuva',\n", + " 'num dia de sol, a chorar lá do céu',\n", + " 'beleza é a camélia',\n", + " 'que vai enfeitar um caminho feliz',\n", + " 'beleza é o descanso do sol',\n", + " 'quando surge um luar lá no céu',\n", + " 'translation:',\n", + " 'sadness is a graceless thing',\n", + " 'but it was always part of my song',\n", + " 'sadness unifies with beauty',\n", + " 'that has always existed in my heart',\n", + " 'beauty is the sadness of the flower',\n", + " 'born without scent, but its value has',\n", + " 'beauty is the sadness of the rain',\n", + " 'on a sunny day, the cry from sky',\n", + " 'beauty is the camellia',\n", + " 'that will adorn a happy path',\n", + " 'beauty is the rest of the sun',\n", + " 'when there is a moon in the sky',\n", + " \"it's time for fun\",\n", + " 'get your flag all around the world',\n", + " 'coming out from everywhere',\n", + " 'everybody together, anywhere',\n", + " \"'cause we all belong to peace and love\",\n", + " \"i'm calling you, come on! you're not alone\",\n", + " 'play for freedom, vary the season',\n", + " 'every nation, one same reason',\n", + " 'go, gol! shake, jump and sing',\n", + " 'go, gol! muevete, salta y grita',\n", + " 'go, gol! gira, pula e canta',\n", + " 'dig for freedom',\n", + " 'all in one rhythm',\n", + " 'go, gol! shake, jump and sing',\n", + " 'go, gol! muevete, salta y grita',\n", + " 'go, gol! gira, pula e canta',\n", + " 'dig for freedom',\n", + " 'all in one rhythm',\n", + " 'sinta esse clima de festa',\n", + " 'em cada canto do brasil nossa torcida te espera',\n", + " 'o nosso canto é assim',\n", + " 'de norte ao sul do país',\n", + " 'bandeiras coloridas, todo mundo cabe aqui',\n", + " 'vem curtir esse calor',\n", + " 'futebol de uma só cor, todos na mesma sintonia',\n", + " 'mão pra cima, emoção que contagia',\n", + " 'vem sentir essa energia',\n", + " 'go, gol! shake, jump and sing',\n", + " 'go, gol! muevete, salta y grita',\n", + " 'go, gol! gira, pula e canta',\n", + " 'dig for freedom',\n", + " 'all in one rhythm',\n", + " 'go, gol! shake, jump and sing',\n", + " 'go, gol! muevete, salta y grita',\n", + " 'go, gol! gira, pula e canta',\n", + " 'dig for freedom',\n", + " 'all in one rhythm',\n", + " 'copa mundial de fútbol',\n", + " 'sinta essa energia',\n", + " 'all in one rhythm',\n", + " 'dig for freedom',\n", + " 'copa mundial de fútbol',\n", + " 'sinta essa energia',\n", + " 'all in one rhythm',\n", + " 'dig for freedom',\n", + " 'all in one rhythm',\n", + " 'vem, traz no peito paz e amor',\n", + " 'de qualquer jeito, de onde for',\n", + " 'liberdade no coração',\n", + " 'todo mundo uma só paixão',\n", + " 'go, gol! shake, jump and sing',\n", + " 'go, gol! muevete, salta y grita',\n", + " 'go, gol! gira, pula e canta',\n", + " 'dig for freedom',\n", + " 'all in one rhythm',\n", + " 'go, gol! shake, jump and sing',\n", + " 'go, gol! muevete, salta y grita',\n", + " 'go, gol! gira, pula e canta',\n", + " 'dig for freedom',\n", + " 'all in one rhythm',\n", + " 'these are the songs',\n", + " 'i want to sing',\n", + " 'these are the songs',\n", + " 'i want to play',\n", + " 'i will sing it every day',\n", + " 'these are the songs',\n", + " 'i want to sing and play',\n", + " 'these are the songs',\n", + " 'i want to sing',\n", + " 'these are the songs',\n", + " 'i want to play',\n", + " 'i will sing it every day',\n", + " 'these are the songs',\n", + " 'i want to sing and play',\n", + " 'esta é a canção que eu vou ouvir',\n", + " 'esta é a canção que eu vou cantar',\n", + " 'fala de você, meu bem',\n", + " 'e do nosso amor também',\n", + " 'sei que você vai gostar',\n", + " 'waltzing, waltzing with you',\n", + " 'in the garden of blue',\n", + " 'a waltz, one more, with you',\n", + " 'in the garden of truth',\n", + " 'in the garden of you',\n", + " 'in the garden of you',\n", + " 'in the garden',\n", + " 'and all that you do',\n", + " 'waltzing with you',\n", + " 'in the garden of blue',\n", + " 'a waltz, one more, with you',\n", + " 'in the garden of truth',\n", + " 'in the garden of you',\n", + " 'in the garden of you',\n", + " 'in the garden and all...',\n", + " 'and all that you do',\n", + " 'and all that you do',\n", + " 'and all you',\n", + " 'oh and all you do',\n", + " 'and all you',\n", + " 'and all you do',\n", + " '\"eu vou invadir sua mente',\n", + " 'que nessa altura está confusa, fraca e inconsciente.\"',\n", + " '\"era só o que faltava!\"',\n", + " \"what's your position? your definition? no matter your questions say yes or no!\",\n", + " \"we forbid your omission, a new war will come to leave the breakdown our weapons need your vote condemnation for who's don't support us in our hypocrit truth absolutely supreme you should accept our conditions\",\n", + " 'os eua por várias décadas vêem esmagando e explorando o terceiro mundo deliberadamente, e estão envolvidos em uma série de atrocidades',\n", + " 'atentados políticos, embargos econômicos, intervencionismo, uniteralismo em questões globais, ataques terroristas internacionais, portando-se radicalmente como grupos fundamentalistas',\n", + " 'i just want your permission to bring my revenge',\n", + " \"so give me your badge or no... let's create our links and enemies\",\n", + " 'o fundamentalismo americano é a grande fonte responsável pelo terrorismo na terra',\n", + " \"one more great imperial game we'll play. trust in my truism! fuck the rejections\",\n", + " \"hidding intentions about world instructions you can't be neutral, less or more, let's fight together against the axies of evil\",\n", + " 'history made by greed, hypocrite democracy, imperealist hegemony',\n", + " 'today i lost a part of me',\n", + " 'a deep old beautiful part of me',\n", + " 'the wonder woman of our family tree',\n", + " 'is leaving us tonight and i can not sleep',\n", + " 'today i lost a part of me',\n", + " 'a deep old beautiful part of me',\n", + " 'jael (arrivederci, goodbye, au revoir)',\n", + " 'today i lost a part of me',\n", + " 'a deep old beautiful part of me',\n", + " 'the wonder woman of our family tree',\n", + " 'is leaving us tonight and i can not sleep',\n", + " 'jael (arrivederci, goodbye, au revoir)',\n", + " 'padroeira da aventura, padroeira da alegria, da elegância',\n", + " 'dona do serviço que é bem feito',\n", + " 'maravilhosa matriarca, majestade maneira',\n", + " 'força da natureza',\n", + " 'que me passou seu dom de vida, de viver, de rir da vida, da desgraça da vida',\n", + " 'poderosa, possante, pulsante, pulsão de vida, dona da fantasia',\n", + " 'today i lost a part of me',\n", + " 'a deep old beautiful part of me',\n", + " 'today i lost a part of me, jael',\n", + " 'jael, padroeira da aventura, da alegria, dona do serviço que é bem feito, jael',\n", + " 'reconheci... a madonna ali parada no jardim',\n", + " 'não resisti... fui perguntar o que ela achava de mim',\n", + " 'eu não sei falar inglês',\n", + " 'ela não entende uma palavra em português',\n", + " 'i saw you saying that you say that you saw',\n", + " 'i saw you saying that you say that you saw (i feel good)',\n", + " 'i feel good because you put your butt on me',\n", + " 'i feel good because you put your butt on me',\n", + " 'perguntei para o meu pai',\n", + " 'o que ela me disse (aah)',\n", + " 'ela disse meu rapaz',\n", + " 'good because you put your butt on...',\n", + " 'the hula hula song make me feel so strong',\n", + " \"the hula hula hey goodbye i'm going away\",\n", + " 'the hula hula song make me feel so strong',\n", + " \"the hula hula hey goodbye i'm going away (a há)\",\n", + " 'because you put your butt on me (a há)',\n", + " 'you know you put your butt on me (a há)',\n", + " 'you know you put your butt on me',\n", + " 'shalalala yeah yeah yeah yeah yeah']},\n", + " 'rap': {'meta': {'train_data': [\"(hip-hop) that's what i got\",\n", + " '(samba) sempre tirando onda',\n", + " \"2na, marcelo, we rock and don't stop\",\n", + " 'e eu continuo queimando tudo até a última ponta',\n", + " 'essa é pros amigos que formam comigo (sempre)',\n", + " 'que por causa do hip hop só aumentam o ciclo',\n", + " 'so andaraí até la, tô na estrada',\n", + " 'sei do meu caminho, mantenho a antena ligada',\n", + " 'using rhythm and medical tons we give for addicts and jos',\n", + " 'phenomenal cross bones from drama felling alone',\n", + " 'high in chronic we zone from hydroponic grown',\n", + " 'from here to brazil, speeling the real, kelling you clowns',\n", + " 'pilantragem (no!), trairagem (nah!)',\n", + " 'mantenho o corpo fechado, seu olho gordo é em vão',\n", + " 'um b.boy sobrevivente, sempre adiante',\n", + " 'um microfone com um som de mais de mil alto-falantes',\n", + " 'we born celo (eu?), we spark the dot yellow',\n", + " 'while these coachers poachers approach us, smart fellows',\n", + " 'we transcendents with pens we bend letters',\n", + " 'to defend that within them, that makes us pretty better forever',\n", + " 'we make thousands of peoples rush to stage in flesh pass the barricade',\n", + " 'open some american sound clash forever play (sempre que toca)',\n", + " 'in this place we face greed and hunger',\n", + " 'while this music transcend your race, creed and color',\n", + " 'sem essa de auto afirmação, mas tem que tá na parada',\n", + " 'd2 e charli 2na, qualidade controlada',\n", + " 'vivendo um sonho, lógico o meu',\n", + " 'a caminho não é de tijolinho amarelo, mas é meu',\n", + " 'this shit we speak is liquid heat',\n", + " 'cause if you straight for the essence then you rep between',\n", + " 'spill this oil and millions boil',\n", + " 'from this two hottest cats from the brazillian soil',\n", + " 'que meu tambor toca assim, não importa a língua pra mim',\n", + " 'é que vagabundo é foda, deixa eu ganhar o meu dim',\n", + " 'é pra bombar no seu estéreo, vou botando de leve',\n", + " 'ri não, fala sério, é que vem da selva essa febre',\n", + " \"(hip-hop)(samba) that's what we got\",\n", + " 'old school, velha guarda, brazilian time, saravá',\n", + " \"toca-disco e tan-tan, that's what we got\",\n", + " 'b.boy, passista,roupa larga ou na beca',\n", + " \"versado ou rimado, that's what we got\",\n", + " 'meu samba é assim, tá ligado diz pra ele, charli',\n", + " \"2na, marcelo, we rock and don't stop\",\n", + " 'eu continuo queimando tudo até a última ponta!',\n", + " 'eu tô na onda',\n", + " 'isso é onda de outra bala',\n", + " 'for real, pica nessa bitch, for real (for real)',\n", + " 'for real, pica nessa bitch, for real (for real)',\n", + " 'for real, pica nessa bitch, for real (for real)',\n", + " 'for real, pica nessa bitch, for real (for real)',\n", + " \"pulo no bloco, 'cê quer tirar foto\",\n", + " 'eu saio vazado que eu tô de ski (skrtt, skrtt, skrtt)',\n", + " 'ela me liga, me quer todo dia',\n", + " 'eu sigo ocupado, fumando haxixe',\n", + " 'tô com meu carro, com a 9 do lado',\n", + " 'então fica de canto e não toca em mim',\n", + " 'só rich nigga, \\'cê fala: \"que fita',\n", + " 'esses cara são zica, nunca vi aqui\" (huh, huh, huh)',\n", + " 'que fita, tô soltando hit, que fita, yeah (pow, pow, pow)',\n", + " 'hey, mina, que esse trap nós dá aula e ensina, yeah',\n", + " 'só salve, levo essas mina pro lounge',\n", + " 'tô chave, ela quer dormir com a peita da tommy',\n", + " \"meu cachê tomou azulzin'\",\n", + " 'tipo seleção, ronaldo e robinho',\n", + " 'eu já pedi vários combo de jack',\n", + " 'e derrubei uma fanta no lean',\n", + " 'for real, levo novo drip, no deal',\n", + " 'for real, pica nessa bitch for real',\n", + " 'ei lotto, beat do lotto, eu mato (woah)',\n", + " 'for real, beat do lotto, for real',\n", + " 'for real, pica nessa bitch, for real (for real)',\n", + " 'for real, pica nessa bitch, for real',\n", + " 'woo, woo, check, check',\n", + " 'wow, woo, yeah, yeah',\n", + " 'woo, woo, check, check',\n", + " 'wow, woo, yeah, yeah',\n", + " 'woo, woo, check, check',\n", + " 'wow, woo, yeah, yeah',\n", + " 'woo, woo, check, check',\n", + " 'wow, woo, yeah, yeah',\n", + " 'for real!',\n", + " 'eu tô na onda',\n", + " 'skrtt, skrtt, skrtt',\n", + " \"kalaf: yo! we made it, we're here, buraka som sistema\",\n", + " \"lil'john: o andro até aparece na filmagem\",\n", + " 'andro: pela primeira vez, uh?',\n", + " 'lalaf: o condutor é ele',\n", + " 'all aboard!',\n", + " 'one, drop, two, drop, three, drop, four',\n", + " 'sound of kuduro knocking at your door',\n", + " 'one, drop, two, drop, three, drop, four',\n", + " 'sound of kuduro knocking at your door',\n", + " 'kuduro chegou, abri as portas',\n", + " 'qualquer pergunta terá resposta',\n", + " 'muitos criticaram, duvidaram',\n", + " 'mas hoje em dia dançam com força',\n", + " 'kuduro foi criado em angola',\n", + " 'estilo pesado, o povo vibra',\n", + " 'mulher angolana é de muita fibra',\n", + " 'kuduro é fruto da natureza',\n", + " 'ou um produto muito pesado',\n", + " 'agradecemos quem o criou',\n", + " 'tony amado e cota sebem',\n", + " 'vos considero',\n", + " 'quando canto só dou jajão',\n", + " 'com os buraka só dá confusão',\n", + " 'one, drop, two, drop, three, drop, four',\n", + " 'sound of kuduro knocking at your door',\n", + " 'one, drop, two, drop, three, drop, four',\n", + " 'sound of kuduro knocking at your door',\n", + " 'one, drop, two, drop, three, drop, four',\n", + " 'sound of kuduro knocking at your door',\n", + " 'one, drop, two, drop, three, drop, four',\n", + " 'sound of kuduro knocking at your door',\n", + " 'puto prata na casa, isso é buraka, one love',\n", + " 'kuduro está civilizado',\n", + " 'isto está mais do que comprovado',\n", + " 'está junto, não está misturado',\n", + " 'reparo o perfil do doutorado',\n", + " 'portugueses à minha procura',\n", + " 'faço kuduro com rima pura',\n", + " 'só por isso eu estou em altura',\n", + " 'chove latona tipo loucura',\n", + " 'sobe dj, vamos\\ufeff embora',\n", + " 'eu canto com muita coerência',\n", + " 'sobretudo inteligência',\n", + " 'mas não deixo de ser um gangsta',\n", + " 'está a refilar? quer comparar?',\n", + " 'olha o borracho que voa',\n", + " \"batida boa, 'tá te kuiar?\",\n", + " 'doutor, tá lida',\n", + " 'e sente o som da frustração',\n", + " 'e sente o som',\n", + " 'e sente o som da frustração',\n", + " 'e sente o som',\n", + " 'we about to drop away',\n", + " 'away',\n", + " 'one, drop, two, drop, three, drop, four',\n", + " 'sound of kuduro knocking at your door',\n", + " 'one, drop, two, drop, three, drop, four',\n", + " 'sound of kuduro knocking at your door',\n", + " 'one, drop, two, drop, three, drop, four',\n", + " 'sound of kuduro knocking at your door',\n", + " 'one, drop, two, drop, three, drop, four',\n", + " 'sound of kuduro knocking at your door',\n", + " \"this is what i've been told\",\n", + " 'i want diamonds and clothes',\n", + " \"i need syrup and 'tron\",\n", + " 'so i can fuck some hoes',\n", + " 'i wanna pull out a partys and hop out of a (rove?)',\n", + " 'i wanna make it right, i gotta make it right',\n", + " \"this is what i've been told\",\n", + " 'i wanna fish by the zone',\n", + " \"i'm drinking ace of spades, nigga, fuck patron\",\n", + " \"i want money and fame until the day i'm gone\",\n", + " 'i wanna make it right, i gotta make it right',\n", + " \"this is what i've been told\",\n", + " \"i need to pack me some 'kron\",\n", + " 'put kilos in the trunk and leave this rap alone',\n", + " 'i wanna stay on twitter and keep my ass at home',\n", + " 'i wanna make it right, i gotta make it right',\n", + " 'i hate your guts, i hate your guts',\n", + " 'i hate your guts, i hate your guts',\n", + " 'i hate your guts, i hate your guts',\n", + " 'i hate your guts',\n", + " \"this is what i've been told\",\n", + " 'i need to pop me some pills',\n", + " \"i gotta sell my soul so i can pop pho'reall\",\n", + " \"if that shit don't work i gotta pop ma stell\",\n", + " 'i wanna make it right, i gotta make it right',\n", + " \"this is what i've been told\",\n", + " 'i need a ratchet bitch',\n", + " 'i wanna go to the club find me a ratchet bitch',\n", + " \"hit the ass what i'm on\",\n", + " 'and say some ratchet shit',\n", + " 'i wanna make it right, i gotta make it right',\n", + " 'i hate your guts, i hate your guts',\n", + " 'i hate your guts, i hate your guts',\n", + " 'i hate your guts, i hate your guts',\n", + " \"so fuck what you've been told i gotta shit on my friends\",\n", + " 'i gotta dye my hair gold and wreck the shit out my pants',\n", + " 'i need to get my jaw wired',\n", + " \"and start fucking with 'keen\",\n", + " 'i gotta make it right, i wanna make it right',\n", + " \"this is what i've been told\",\n", + " 'i need to start me a crew',\n", + " 'hide your pride out the stage and beat the shit out of you!',\n", + " \"gotta get my face tatted and start bangin'piru\",\n", + " 'i wanna make it right, i gotta make it right',\n", + " 'i hate your guts, i hate your guts',\n", + " 'i hate your guts, i hate your guts',\n", + " 'i hate your guts, i hate your guts',\n", + " 'você é mc mas questiona meus raps',\n", + " 'poucas ideias, passo por esquinas',\n", + " 'sempre observo o estado da cria',\n", + " 'eu que testo seu proceder?',\n", + " 'com o rap eu não pago de pato',\n", + " 'com o rap que faço esmago os mcs \"marias cristinas\"',\n", + " 'conquistei respeito de meninos, meninas',\n", + " 'jovens e velhos, novo critério',\n", + " 'pra muitos o novo é assustados',\n", + " 'mano pensa, né? pelo amor',\n", + " 'só pensa',\n", + " 'o que me assusta são homens vivos com vaginas',\n", + " 'na soma, ouvido tirei do coma',\n", + " 'os conflitos que provoquei, veio à tona',\n", + " 'é fácil, o amigo simplifico',\n", + " 'e eu não sou magnífico',\n", + " 'só revejo o que penso',\n", + " 'arroto o critério patético',\n", + " 'e eu to muito louco pra você me entender',\n", + " 'pra tu conversar com a sua turminha sobre o r.a.p',\n", + " 'mano, vai se fudê',\n", + " 'to dentro do espaço que é estipulado',\n", + " 'acorda aliado, um passo pro lado',\n", + " 'dá licença aqui, minha levada continua acelerada na base',\n", + " 'posso sentir que, vagabundo fala muito',\n", + " 'ele chora e não aguenta o pique',\n", + " 'só que não',\n", + " 'o comédia pensa que é competição',\n", + " 'não é vacilação, minha situação',\n", + " 'bota a fita e volta, volta a fita jão',\n", + " 'esticaria o braço inteiro pra você se esticasse a mão lá atrás',\n", + " 'i hate your guts, i hate your guts',\n", + " 'i hate your guts, i hate your guts',\n", + " 'i hate your guts, i hate your guts',\n", + " 'hey',\n", + " 'essa é a nova, mano',\n", + " 'yeah',\n", + " '(fahel, me liga)',\n", + " 'yah',\n", + " 'chainz on my neck (yah, yah, yah)',\n", + " 'pediu foto, quis fumar meu beck (yeah)',\n", + " \"honey, bottles, loui' v na bag\",\n", + " 'uh, flexing, leve tudo na minha bag (honey bottles)',\n", + " 'chainz on my neck, uh',\n", + " 'fiquei flexing, tá tudo na bag (honey bottles)',\n", + " 'chainz on my neck, uh, uh',\n", + " 'ficou flexing quando viu meu swag (swag)',\n", + " 'chainz on my...',\n", + " 'louis v no cinto e na minha bag (hallelujah, hallelujah)',\n", + " 'chains on my neck',\n", + " 'lv de louis v na bag (bag) (hallelujah)',\n", + " 'te vi no dance floor (dance floor)',\n", + " 'tão high',\n", + " 'te vi no dance floor (dance floor)',\n", + " 'get high',\n", + " 'já tava bem louco, bem louco',\n", + " 'so high',\n", + " 'me puxa pro dance floor (dance for)',\n", + " 'get high',\n", + " 'chainz on my neck (yah, yah, yah)',\n", + " 'pediu foto, quis fumar meu beck',\n", + " 'honey bottles (bottles)',\n", + " 'uh, flexing, levo tudo na minha bag (honey bottles)',\n", + " 'chainz on my neck, uh',\n", + " 'fiquei flexing, tá tudo na bag (hallelujah, hallelujah)',\n", + " 'chainz on my neck, uh, uh',\n", + " 'ficou flexing quando viu meu swag',\n", + " 'fiz uma prece:',\n", + " 'só morro rico e calmo e sem estresse',\n", + " 'wow-wow',\n", + " 'ouro na pele (pele)',\n", + " 'brancos me odeiam e querem o meu swag',\n", + " 'wow-wow-wow',\n", + " 'esse é meu flow, assim que vou, não paro não',\n", + " 'assim tá bom, trap é meu dom e é hit bom',\n", + " 'bitch na home, manchou batom, não fiz questão',\n", + " 'red na mão em mais um show, tá lotadão (yeah, yeah)',\n", + " 'diamante chainz, na minha house chove cash',\n", + " 'my draco tá com a gang, aleluia, chove fé',\n", + " 'eu tô muito bem, tô vivendo só de trap',\n", + " 'vivência do gr, te mostrei como que é',\n", + " 'to lucrando bem, hater odeia meu sucesso (swag)',\n", + " 'fiz ‘que ninguém fez, quero grana sem estresse',\n", + " 'meu mano, eu ultrapassei, sabe bem como é que é',\n", + " 'diamante chain, podre de rico e sem estresse',\n", + " 'chainz on my neck, uh',\n", + " 'fiquei flexing, tá tudo na bag (hallelujah, hallelujah)',\n", + " 'chainz on my neck, uh, uh',\n", + " 'ficou flexing quando viu meu swag (swag)',\n", + " 'chainz on my neck, uh',\n", + " 'lv de louis v na bag (hallelujah, hallelujah)',\n", + " 'chainz on my neck (yah, yah)',\n", + " 'conferiu de longe: i got a swag',\n", + " '23 on my feet, vvs drippin on my wrist',\n", + " 'i drop the top, i’m zooming with my bitch',\n", + " 'almost crashed the benz off codein',\n", + " 'i can’t feel my face, can’t feel a thing',\n", + " 'shawty wanna fuck but i need some neck',\n", + " 'well she got that ass, then i hit it from the back',\n", + " 'you ain’t about that life, nigga, whole lotta cap',\n", + " 'numbers going up, i don’t even need to brag',\n", + " 'i fucked up the check, yeah, i fucked up the check',\n", + " 'gotta get these bands, yeah, gotta get that bag',\n", + " 'i fucked up the check, i fucked up the check',\n", + " 'gotta get these bands, gotta get that bag',\n", + " 'te vi no dance floor (dance floor)',\n", + " 'tão high',\n", + " 'te vi no dance floor (dance for)',\n", + " 'get high',\n", + " 'já tava bem louco, bem louco',\n", + " 'so high',\n", + " 'me puxa pro dance floor (dance floor)',\n", + " 'get high',\n", + " 'chainz on my neck (yah, yah, yah)',\n", + " 'pediu foto, quis fumar meu beck, yeah',\n", + " 'honey bottles (bottles)',\n", + " 'uh, flexing, levo tudo na minha bag (honey bottles)',\n", + " 'chainz on my neck, uh',\n", + " 'fiquei flexing, tá tudo na bag (hallelujah, hallelujah)',\n", + " 'chainz on my neck, uh, uh',\n", + " 'ficou flexing quando viu meu swag (swag)',\n", + " 'chainz on my neck, uh',\n", + " 'lv de louis v na bag (hallelujah, hallelujah)',\n", + " 'chainz on my neck (yah, yah)',\n", + " 'conferiu de longe: i got a swag (wow)',\n", + " '(hallelujah)',\n", + " '(yah, yah)',\n", + " '(fahel, me liga)',\n", + " '(simbora)',\n", + " '(zonaga... we go around the world)',\n", + " 'we tryna to globetrotter',\n", + " \"i'm back with the dope product\",\n", + " 'high with the ghostwriter',\n", + " 'around the hate days, hit up in the stage',\n", + " 'shut it down like up in 88',\n", + " 'we get the african drum, i brought my tribe with me',\n", + " 'we from that african slum, hard to survive really',\n", + " 'so look at us now, international my passport',\n", + " 'they catch me out in brooklyn, the visa in my name',\n", + " 'they catch me out in london, the visa in my name',\n", + " 'they catch me out in tokyo, the visa in my name',\n", + " \"they catch me and i don't need a fucking visa\",\n", + " 'so put your classes up in a celebration',\n", + " 'we got the party rocking all across the nation',\n", + " 'we going all around the world (zonaga)',\n", + " 'we all around the world',\n", + " 'we all around the world',\n", + " 'we all around the world',\n", + " 'around the world, around the world',\n", + " 'we all around the world',\n", + " 'we all around the world',\n", + " 'we all around the world',\n", + " 'we all around the world',\n", + " 'around the world, around the world',\n", + " 'simbora',\n", + " 'tão vamo nessa cumpade, do nosso jeito',\n", + " 'tranquilo e sossegado com os amigo de verdade',\n", + " 'sem sonho de masserati, sem caô, de humildade',\n", + " 'sem papo de ostentação, preocupado com a realidade',\n", + " 'o mundo é pequeno, mas o pensamento não',\n", + " 'fronteiras não são barreiras, tá tudo na nossa mão',\n", + " 'de baixo dos panos trago orgulho suburbano',\n", + " 'um pouco de europeu, um pouco de africano',\n", + " 'eu sou maloqueiro, cidade rio de janeiro',\n", + " 'que festa o ano inteiro, mas tem que puxar primeiro',\n", + " 'a ponta tá no cinzeiro, batuque pra batuqueiro',\n", + " 'que toca e vira terreiro, e bota as mina pra sambar',\n", + " 'toma cuidado que a festa não é puteiro',\n", + " 'os verme tá no chiqueiro, ih! querem dinheiro',\n", + " 'dinheiro tá com o banqueiro cumpade, sou maconheiro',\n", + " 'sujou! pega os parceiro e puxo o bonde pra...',\n", + " 'foi',\n", + " 'city, ghana, rio, são paulo, brasil',\n", + " '(all around the world)',\n", + " 'marcelo, ambassador, worldwide',\n", + " 'só me liga quando quer',\n", + " 'wanna make love',\n", + " 'quando quer',\n", + " 'wanna make love',\n", + " 'oh-oh, woah, woah',\n", + " 'wanna make love',\n", + " 'oh-oh, woah, woah',\n", + " 'wanna make love',\n", + " 'me liga quando quer',\n", + " 'wanna make love',\n", + " 'some se não quer',\n", + " 'wanna make love',\n", + " 'oh-oh, woah, woah',\n", + " 'make love',\n", + " 'oh-oh, woah, woah',\n", + " 'make love',\n", + " 'sábado, here we go',\n", + " 'me ligou, claro eu vou',\n", + " 'sabado, me ligou',\n", + " 'se arrumou, here we go',\n", + " 'de novo (aff!), damn girl',\n", + " 'dez da noite me ligou me dizendo: \"eu não vou\"',\n", + " 'pra você eu sou mais um (to make love!)',\n", + " 'deleta meu número do samsung (gotta make love!)',\n", + " 'onde eu errei? sempre avisei',\n", + " 'what up? the same',\n", + " 'gotta make love',\n", + " 'agora eu sei, destiny child',\n", + " 'say my name, say my name',\n", + " 'gotta make love',\n", + " 'só me liga quando quer',\n", + " 'wanna make love',\n", + " 'quando quer',\n", + " 'wanna make love',\n", + " 'oh-oh, woah, woah, woah',\n", + " 'wanna make love',\n", + " 'oh-oh, woah, woah',\n", + " 'wanna make love',\n", + " 'me liga quando quer',\n", + " 'wanna make love',\n", + " 'some se não quer',\n", + " 'wanna make love',\n", + " 'oh-oh, woah, woah',\n", + " 'make love',\n", + " 'oh-oh, woah, woah',\n", + " 'make love',\n", + " \"uh, me ligou ('gou), call for me\",\n", + " 'uh, me ligou pra saber de mim',\n", + " 'eu espero minha vez (vez), não atendo (não!)',\n", + " 'é minha vez (ex!), não entendo',\n", + " 'sinceramente, nem sei',\n", + " 'só não vou mais pensar em você (não)',\n", + " 'eu não quero mais',\n", + " 'sinceramente, nem sei',\n", + " 'eu não quero mais pensar em você (yeah)',\n", + " 'não volto atrás (não)',\n", + " 'só me liga quando quer',\n", + " 'wanna make love',\n", + " 'quando quer',\n", + " 'wanna make love',\n", + " 'oh-oh, woah, woah',\n", + " 'wanna make love',\n", + " 'oh-oh, woah, woah',\n", + " 'wanna make love',\n", + " 'me liga quando quer',\n", + " 'wanna make love',\n", + " 'some se não quer',\n", + " 'wanna make love',\n", + " 'oh-oh, woah, woah',\n", + " 'make love',\n", + " 'oh-oh, woah, woah',\n", + " 'make love',\n", + " 'ela me deixou alone (3x)',\n", + " 'me deixou alone',\n", + " 'i’m right here in the zone',\n", + " 'me deixou alone',\n", + " 'now i’m stuck inside my home',\n", + " 'ela depois voltou',\n", + " 'but i wont give her a moan',\n", + " 'e eu tou tipo um unknown',\n", + " 'eu nem sei quem é que eu sou',\n", + " 'ela não ultrapassou',\n", + " 'porque sabe que errou',\n", + " 'ela pôs-se a pensar e conseguiu perceber',\n", + " 'que não fazia sentido o que ela estava a dizer',\n", + " 'e eu não sabia o que fazer (2x)',\n", + " 'me deixou alone',\n", + " 'i’m right here in the zone',\n", + " 'ela me deixou alone',\n", + " 'now i’m stuck inside my home',\n", + " 'now i’m stuck inside my home',\n", + " 'i was better if i was gone',\n", + " 'but then i gotta respawn',\n", + " 'i gotta move fucking on',\n", + " 'you we’re sayin’ that i was cheating on you',\n", + " 'but you we’re my only boo',\n", + " 'now i’m in tears like you used to',\n", + " 'i just hope you loved me too',\n", + " 'me deixou alone',\n", + " 'i’m right here in the zone',\n", + " 'ela me deixou alone',\n", + " 'now i’m stuck inside my home (2x)',\n", + " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", + " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", + " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", + " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", + " 'se a gente tá junto é fuga',\n", + " 'parceira de crime, eu levo ela pra lua',\n", + " 'amo quando ela dança pra mim toda nua',\n", + " 'essas suas curvas me lembra as curvas das ruas',\n", + " 'eu fugindo da bula, sirenes e rabas se misturam na minha mente',\n", + " 'tudo de repente como entorpecente',\n", + " 'e ela descarregando esse pente, yeah',\n", + " 'mais de cem por hora e eu despisto todos eles (ei)',\n", + " 'uh, 180 graus, eu tô na marechal',\n", + " 'uh, 180 graus, despisto os policial',\n", + " 'wow, yeah, wow, yeah',\n", + " 'wow, yeah, despisto os polici-',\n", + " 'wow, wow, yeah, wow, yeah',\n", + " 'wow, yeah, yeah',\n", + " 'drift king, drift king, drift king, drift king',\n", + " 'drift king, drift king, drift king, drift king',\n", + " 'drift king, drift king, drift king, drift king',\n", + " 'drift king, drift king, drift king, yeah',\n", + " 'drift king, drift king, drift king, drift king',\n", + " 'drift king, drift king, drift king, yeah',\n", + " 'drift king, drift king, drift king, drift king',\n", + " 'drift king, drift king, drift king, yeah',\n", + " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", + " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", + " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", + " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", + " 'siiiim!',\n", + " 'ghetto woman',\n", + " 'minha gangue é do gueto',\n", + " 'minha gangue é do gueto',\n", + " 'e elas são más',\n", + " 'e elas são más',\n", + " 'minha gangue é do gueto e elas são más',\n", + " 'representam o que vários dizem “jamais”',\n", + " 'prove do nosso doce sem censura como se tivesse uma segunda chance isso não é um sonho, mesmo se fosse...',\n", + " 'você nunca vai resistir, sua vontade é tá aqui e a nossa é fazer tu engolir',\n", + " 'toda a estratégia, porque na buce é que fica o q.i',\n", + " 'pode admitir, não dá pra resistir',\n", + " 'mantemos as tanderas e os dogs no nosso jogo',\n", + " 'sabemos quem cola e não adianta passar o rodo',\n", + " 'se no seu bolso tem dinheiro não vem pagar de louco',\n", + " 'rude gyal multiplica o seu que hoje tá tendo em dobro',\n", + " 'porque conhece o nosso estilo, ganhar dinheiro',\n", + " 'e se gastar deixasse rico gastaríamos o tempo inteiro',\n", + " 'fica ligeiro, meu game não é passageiro',\n", + " 'e o doce tá fazendo efeeeeito',\n", + " 'minha gangue vem do gueto, pro mundo só respeito',\n", + " 'essência vem de dentro, e não tem a ver com peito',\n", + " 'mesmo sendo instrumentos, corpos e monumentos',\n", + " 'vestes e julgamentos, drogas e seus efeitos',\n", + " 'a maconha nos deixou louconas',\n", + " 'anjos e demônios deitados em camas',\n", + " 'prefere os criminais mas não ficam em cana',\n", + " 'uma vida independente sem tempo pra dramas',\n", + " 'o cheiro te chama',\n", + " 'vivências e tramas',\n", + " 'bucetas, hei!, xanas',\n", + " 'não dá pra negar',\n", + " 'que elas são más, elas são más, elas são más, elas são más',\n", + " 'minha gangue é do gueto e elas são más',\n", + " 'representam o que vários dizem “jamais”',\n", + " 'elas são más, elas são más, elas são más, elas são más',\n", + " '(inglês)',\n", + " 'yes!',\n", + " 'ghetto woman',\n", + " 'my gang is from the ghetto',\n", + " 'and they are bad',\n", + " 'and they are bad',\n", + " 'my gang is from the ghetto and they are bad',\n", + " 'representing what many say \"i would never\"',\n", + " 'prove our candy without censorship as if you had a second chance',\n", + " \"this ain't a dream\",\n", + " 'even if it was...',\n", + " \"you'll never resist, your wish is to be here and our wish is to make you swallow\",\n", + " 'all the strategy, cause in the pussy lies the iq',\n", + " \"you can admit it, you can't resist it\",\n", + " 'we keep the thunderas and the dogs in our game',\n", + " \"we know who rides along and it doesn't work sweeping it under\",\n", + " \"if there's money in your pocket don't try to act crazy\",\n", + " 'rude gyal multiplies yours cause today we got it double',\n", + " 'cause you know our style, getting money',\n", + " 'and if spending made us rich we would spend it all the time',\n", + " \"stay low, my game isn't temporary\",\n", + " \"and that acid's kicking iiiiin...\",\n", + " 'my gang comes from the ghetto, to the world only respect',\n", + " \"essence comes from within, and it's got nothing to do with tits\",\n", + " 'even as instruments, bodies and monuments',\n", + " 'clothing and judgements, drugs and its effects',\n", + " 'the weed got us wild',\n", + " 'angels and demons laying in beds',\n", + " \"prefer the criminals but don't go down\",\n", + " 'an independent life with no time for dramas',\n", + " 'the smell calls you',\n", + " 'experiences and plots',\n", + " 'pussies, hey!, punanis',\n", + " 'you cannot deny',\n", + " 'that they are bad, they are bad, they are bad, they are bad',\n", + " 'my gang is from the ghetto and they are bad',\n", + " 'representing what many say \"i would never\"',\n", + " 'they are bad, they are bad, they are bad, they are bad',\n", + " 'huh, soulja! x-type music',\n", + " \"and you know, you know we turnin' up\",\n", + " 'guimê',\n", + " \"you know we turnin' up\",\n", + " 'soulja, mc guime',\n", + " 'é nós',\n", + " 'you know that we dem boyz',\n", + " 'vai segurando essa conexão, moleque!',\n", + " \"and you know we makin' noise (king soulja)\",\n", + " '(we are in brazil and...)',\n", + " 'hold up, hold up, hold up, hold up',\n", + " 'ayy, ayy, ayy',\n", + " \"whippin' and flippin' them chickens (whip)\",\n", + " \"shout out my team cuz we winnin' (we win)\",\n", + " 'bugatti no expedition',\n", + " 'we running the dough like we sprinting',\n", + " 'tony montana run through atlanta',\n", + " \"brazil to montana, i'm toting that hammer\",\n", + " \"soulja boy tell' em louis v on my pajama\",\n", + " \"ridin' and pushin' montana\",\n", + " 'me and guimê on a private jet',\n", + " 'flex, finesse, ice on my rolex',\n", + " \"yo bitch, she suckin, she fuckin'\",\n", + " 'she wanna come holla at soulja',\n", + " \"whippin' that rover, hoppin', i tell and i told ya\",\n", + " 'whipping that coke and no cola (no cola)',\n", + " 'uh, all of these niggas i knowla',\n", + " \"my squad, we're taking shit over\",\n", + " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", + " \"brazil we made the tour, you know we makin' noise\",\n", + " 'brasil, brasil, brasil, ha, aqui é nóis',\n", + " \"we turnin' up to the max, guimê, soulja boy\",\n", + " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", + " \"brazil we made the tour, you know we makin' noise\",\n", + " 'brasil, brasil, brasil, ha, aqui é nóis',\n", + " \"we turnin' up to the max, guimê, soulja boy\",\n", + " 'dinheiro tá nos pensamentos',\n", + " 'todos parceiro curtindo os momentos, assim',\n", + " 'vários jordans lançamentos',\n", + " 'vai se envolvendo, ou se mordendo, enfim',\n", + " 'então, um brinde pra mim',\n", + " 'provei, não tô de brincadeira',\n", + " 'uns falaram que não ia chegar',\n", + " 'cheguei, até de panamera',\n", + " 'sem bobeira, a noite inteira',\n", + " 'brilha o diamante, brilha o ouro',\n", + " 'é guime e soulja boy, ela fala: \"até que é estouro\"',\n", + " 'quer sentar no banco de couro',\n", + " 'quer logo se envolver com o nosso bonde',\n", + " 'calma aí, respeita o moço',\n", + " 'sem alvoroço, cê veio de onde?',\n", + " 'é nóis! (turn up!) vai segurando!',\n", + " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", + " \"brazil we made the tour, you know we makin' noise\",\n", + " 'brasil, brasil, brasil, ha, aqui é nóis',\n", + " \"we turnin' up to the max, guimê, soulja boy\",\n", + " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", + " \"brazil we made the tour, you know we makin' noise\",\n", + " 'brasil, brasil, brasil, ha, aqui é nóis',\n", + " \"we turnin' up to the max, guimê, soulja boy\",\n", + " \"you know, you know we turnin' up\",\n", + " \"and you know we turnin' up\",\n", + " \"soulja, mc guime, let's go\",\n", + " 'you know that we dem boyz',\n", + " \"hey, and you know we makin' noise\",\n", + " 'hold up, hold up, hold up',\n", + " 'hold up, hold up, hold up',\n", + " 'hold up, we dem boyz',\n", + " 'chapa quente, nóis na voz',\n", + " 'da água pro vinho, guimê e soulja boy',\n", + " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", + " \"brazil we made the tour, you know we makin' noise\",\n", + " 'brasil, brasil, brasil, ha, aqui é nóis',\n", + " \"we turnin' up to the max, guimê, soulja boy\",\n", + " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", + " \"brazil we made the tour, you know we makin' noise\",\n", + " 'brasil, brasil, brasil, ha, aqui é nóis',\n", + " \"we turnin' up to the max, guimê, soulja boy\"]},\n", + " 'data': ['eu tenho um sonho',\n", + " 'eu quero ir para o brasil e faze o bem;',\n", + " 'talvez olher para o céu e',\n", + " 'talvez, tornar-se um homem selvagem',\n", + " 'eu não sei',\n", + " 'i dream of calm brazilian skies',\n", + " 'um ceu de alegria',\n", + " \"i swear i wouldn't wanna be that guy\",\n", + " 'that missed a opportunity to be',\n", + " 'a great mc like racionais',\n", + " 'homem na estrada, no valor de nada?',\n", + " \"i'm trying to be the greatest rapper\",\n", + " \"only time i'll rap on sango beats\",\n", + " \"i don't wanna jump on the hype train\",\n", + " 'niggas trying claim they got the samba feet',\n", + " 'but please nigga step your ass that way',\n", + " 'niggas trying claim they got the baile funk',\n", + " 'but please nigga stay in your trap lane',\n", + " \"i see that you ain't what you say you be\",\n", + " 'você no mesmo balde também',\n", + " \"(i'm broke)\",\n", + " 'but got dreams like a rich man at heart',\n", + " '(fuck with me)',\n", + " \"and i'm broke and how you say in portuguese\",\n", + " 'estou quebrado',\n", + " 'i swear it feel like this ladder i climb',\n", + " 'gets mais alto e mais largo',\n", + " 'minha alma canta',\n", + " '(tão alto)',\n", + " 'can you hear my soul?, do you feel my heart?',\n", + " 'would you ride this wave if you embark my ark?',\n", + " 'i know a guy who can save',\n", + " 'nossa corações e fazer o seus',\n", + " 'dias dez vezes melhor, stick with me',\n", + " \"you're on the right path, so speak to me\",\n", + " 'eu falo de meu amor',\n", + " 'na pedronova a dor se leva',\n", + " 'a pedronova não tem problema',\n", + " 'a pedronova, i love you so',\n", + " 'é pedronova se vocês vem',\n", + " 'uma coisa nova',\n", + " 'que você também',\n", + " 'se voce chora',\n", + " 'isso é pedronova meu bem',\n", + " 'bem bem bem',\n", + " 'bom trabalho',\n", + " 'little children running in a building, shaking',\n", + " 'arrest the',\n", + " 'whatever they',\n", + " 'trynna earn the living',\n", + " 'unacceptable condition, happy to be ignorant',\n", + " 'with all they remain, takes',\n", + " 'the misconceptions they be',\n", + " 'but, eventually the jails',\n", + " 'all of the men',\n", + " \"we're seeking all of the women\",\n", + " 'to adolescence takes depression, they represent the cicle of viciousness',\n", + " 'if is the weapon',\n", + " \"i don't taste the ammunition\",\n", + " 'now the sun is burning',\n", + " 'now the pouring rain',\n", + " 'feel the city harming',\n", + " 'children, are you safe?',\n", + " 'now the sun is burning',\n", + " 'now the pouring rain',\n", + " 'feel the city harming',\n", + " 'children, are you safe?',\n", + " 'misturei desesperanças banhadas no desamor',\n", + " 'misturei falsas promessas com abandono e rancor',\n", + " 'misturei portas, entre abertas e emperradas',\n", + " 'carnes marcadas',\n", + " 'misturei bem, agora engole seco',\n", + " 'sem direito à recusa',\n", + " 'seco',\n", + " 'faca amolada riscando por dentro, garganta',\n", + " 'como o medo que domina',\n", + " 'que sobe pela espinha desde cedo',\n", + " 'caminho extremo',\n", + " 'extremamente estreito, na beira do abismo',\n", + " 'no fio da navalha, cicatrizes do aprendizado cravadas no couro forte',\n", + " 'nascimento',\n", + " 'vida sofrida, sobrevive morte',\n", + " 'now the sun is burning',\n", + " 'now the pouring rain',\n", + " 'feel the city harming',\n", + " 'children, are you safe?',\n", + " 'now the sun is burning',\n", + " 'now the pouring rain',\n", + " 'feel the city harming',\n", + " 'children, are you safe?',\n", + " 'tenho tentado ligar para ti, mas não te apanho',\n", + " 'habituei-me a falar contigo, sinto-me estranho',\n", + " 'tu aí tão longe sem ti, a vida é solitária',\n", + " 'sei que atrapalha a pequena diferença horária',\n", + " 'parece que foi ontem, amanhã faz um mês',\n", + " 'ups! sorry, esqueci-me que falas pouco português',\n", + " 'vou tentar em inglês para perceberes what i say',\n", + " \"i speak a little english, so i guess it's ok\",\n", + " \"anyway i've been missing you a lot\",\n", + " 'e ontem foi o meu b-day, guess you forgot',\n", + " 'esperei o dia inteiro, i was waiting your call',\n", + " 'i supose that you was busy on the work and at all',\n", + " 'whatever i just wanna let you know what i feel',\n", + " 'nem sei bem o que é, but trust me this is real',\n", + " 'fiz este som para ti, cause you love rnb',\n", + " 'whenever you hear you will be reminding of me',\n", + " 'ac',\n", + " 'and i think of you',\n", + " 'and all the things that we used to do',\n", + " 'it always makes me smile',\n", + " \"boy you're so fine\",\n", + " \"and you makes me wanna say you're my baby, baby\",\n", + " \"(you're my baby)\",\n", + " 'chove lá fora while i write my rhymes',\n", + " 'remains a pensar no que durou, old times',\n", + " 'quando dançavamos à chuva and made love all night',\n", + " 'so much on my mind on even know where to write',\n", + " 'não te quero pressionar, not trying to rush',\n", + " 'but baby you should know this is more than a crush',\n", + " 'yeah, i kinda love you right know',\n", + " 'i kinda love you right now',\n", + " 'and i think of you',\n", + " 'and all the things that we used to do',\n", + " 'it always makes me smile',\n", + " \"boy you're so fine\",\n", + " \"and you makes me wanna say you're my baby, baby\",\n", + " \"(you're my baby)\",\n", + " 'men, it feels so good',\n", + " 'relax lay back, let the music set the mood',\n", + " 'maybe i should move abroad',\n", + " 'em breve estaremos juntos, so help me god',\n", + " 'or maybe you should move up here',\n", + " \"i'll be by your side, so have no fear\",\n", + " \"mais do que físico, it's body it's soul\",\n", + " 'bo é nha cretcheu, that means my love in creole',\n", + " 'and i think of you',\n", + " 'and all the things that we used to do',\n", + " 'it always makes me smile',\n", + " \"boy you're so fine\",\n", + " \"and you makes me wanna say you're my baby, baby\",\n", + " \"(you're my baby)\",\n", + " \"(you're my baby)\",\n", + " \"(you're my baby)\",\n", + " 'and i think of you',\n", + " 'ahn, yeah, hey',\n", + " 'i got them coming for me',\n", + " 'from the show, studio, watch me glow',\n", + " 'you ain’t work longer than me',\n", + " 'hey, it ain’t no stronger than me',\n", + " 'yeah, i’m stuntin, bitch, i’m lovin',\n", + " 'my name buzzin, you ain’t work harder than me',\n", + " 'hey, i got them coming for me',\n", + " 'from the show, studio, watch me glow',\n", + " 'you ain’t work longer than me',\n", + " 'hey, it ain’t no stronger than me',\n", + " 'yeah, i’m stuntin, bitch, i’m lovin',\n", + " 'my name buzzin, you ain’t work harder than me',\n", + " 'e aí? foi mais ou menos assim',\n", + " 'não esperei o contrato chegar, escrevi um pra mim',\n", + " 'escrevi um próprio pra mim',\n", + " 'onde as regras estão na minha lousa e foi eu que escrevi (é)',\n", + " 'e vou vender isso aqui',\n", + " 'se é meu, vou colocar porcentagem e nós vai dividir (e aí?)',\n", + " 'multiplicar, dividir',\n", + " 'e que faça sentido essa vez o motivo que eu vir (porque)',\n", + " 'foi mais ou menos assim',\n", + " 'não esperei o contrato chegar, escrevi um pra mim (yeah)',\n", + " 'escrevi um próprio pra mim',\n", + " 'onde as regras estão na minha lousa e foi eu que escrevi (yeah)',\n", + " 'e vou vender isso aqui',\n", + " 'se é meu, vou colocar porcentagem e nós vai dividir (e aí?)',\n", + " 'multiplicar, dividir',\n", + " 'e que faça sentido essa vez o motivo que eu vir',\n", + " 'hey, i got them coming for me',\n", + " 'from the show, studio, watch me glow',\n", + " 'you ain’t work longer than me',\n", + " 'hey, it ain’t no stronger than me',\n", + " 'yeah, i’m stuntin, bitch, i’m lovin',\n", + " 'my name buzzin, you ain’t work harder than me',\n", + " 'hey, i got them coming for me',\n", + " 'from the show, studio, watch me glow',\n", + " 'you ain’t work longer than me',\n", + " 'hey, it ain’t no stronger than me',\n", + " 'yeah, i’m stuntin, bitch, i’m lovin',\n", + " 'my name buzzin, you ain’t work harder than me']},\n", + " 'rock': {'meta': {'train_data': ['vem sentir-se sádico',\n", + " 'eu sei cantar melhor que você',\n", + " 'eu sei cantar melhor que você',\n", + " 'weep it out, man, weep it out',\n", + " 'weep it out, man, weep it out',\n", + " 'weep it out, man, weep it out',\n", + " 'weep it out, man, weep it out',\n", + " 'vem, vem',\n", + " 'sentir-se áltico',\n", + " 'não obstante, o meu coração',\n", + " 'não obstante, o meu coração',\n", + " 'weep it out, man, weep it out',\n", + " 'weep it out, man, weep it out',\n", + " 'weep it out, man, weep it out',\n", + " 'weep it out, man, weep it out',\n", + " 'weep it out, ma-ma-ma-ma-ma-ma, ma-ma-ma-ma-ma-ma-ma-ma',\n", + " 'weep it out, man, weep it out',\n", + " 'weep it out, man, weep it out',\n", + " 'weep it out, man, weep it out',\n", + " 'weep it out, man, weep it out',\n", + " 'weep it out, ma-ma-ma-ma-ma-ma, ma-ma-ma-ma-ma-ma-ma-ma',\n", + " 'ma-ma-ma-ma-ma-ma-ma-ma, ma-ma-ma-ma-ma-ma-ma-ma',\n", + " 'no one knows you like i do',\n", + " 'e as estrelas',\n", + " 'como um ima',\n", + " 'so o seu olhar',\n", + " 'eu conheco seu ima',\n", + " 'no one knows you like i do',\n", + " 'voce me faz aceitar',\n", + " 'o calor de ser',\n", + " 'sereia minha',\n", + " 'quer entrar',\n", + " 'no one knows you like i do',\n", + " 'puras, virgens, vulvas dentadas',\n", + " 'é o reino das bestas soberanas',\n", + " 'peregrinos no degredo',\n", + " 'cruz violada, transformista',\n", + " 'misericórdia',\n", + " 'genuflexão',\n", + " 'castração',\n", + " 'infecção',\n", + " 'misericórdia!',\n", + " 'mais que imperfeita, mais que farpada',\n", + " 'doces rebentos do amor',\n", + " 'com sacra luxúria evangelista',\n", + " 'sangue do mundo, sangue para deus',\n", + " 'misericórdia',\n", + " 'infecção',\n", + " 'hóstia fecal',\n", + " 'deus é amor',\n", + " 'castração',\n", + " 'flagelação',\n", + " 'misericórdia',\n", + " 'lapidação',\n", + " 'de onde você veio? quem é você?',\n", + " 'para onde você vai? o que vai fazer?',\n", + " 'olhando seu rosto vejo só desilusões',\n", + " 'esqueceram que você levantou nossa nação',\n", + " 'quantas guerras você lutou?',\n", + " 'quantas medalhas você ganhou?',\n", + " 'quantos impostos você pagou?',\n", + " 'para agora ser esquecido?',\n", + " 'quem é você?',\n", + " 'mais um aposentado',\n", + " '---------------------------------------------------',\n", + " 'where are you from? who are you?',\n", + " 'where are you going? what are you going to do?',\n", + " 'looking at your face i see only delusions',\n", + " 'they forgot that you raised our nation',\n", + " 'how many wars did you fight?',\n", + " 'how many medals have you won?',\n", + " 'how many taxes did you pay?',\n", + " 'to be forgotten now?',\n", + " 'who are you?',\n", + " 'another retired',\n", + " 'lugares do caralho e gente afudê',\n", + " 'paixões em liverpool, saudades do jacarandá',\n", + " 'a chuva bem fininha da doce inglaterra',\n", + " 'bastardo da psicodelia, pictures and paintings',\n", + " 'júpiter maçã',\n", + " 'júpiter maçã',\n", + " 'júpiter maçã',\n", + " 'direto do aqualung, sonares de moby dick',\n", + " 'de charles dickens o natal, simpatia no undersound',\n", + " 'a couple of ideas da mooca à pompeia',\n", + " 'a couple of ideas da cidade baixa ao bom fim',\n", + " 'júpiter maçã',\n", + " 'júpiter maçã',\n", + " 'júpiter maçã',\n", + " 'as tortas e as cucas desconcertadas',\n", + " 'o brandy e a noiva, a miss lexotan',\n", + " 'freak you and fuck you em saturno',\n", + " 'bossa nova a seguir e o som medieval',\n", + " 'júpiter maçã',\n", + " 'júpiter maçã',\n", + " 'júpiter maçã',\n", + " 'coisas deixadas para trás (sem explicação)',\n", + " 'não me importo mais (com o seu perdão)',\n", + " 'e agora depois que passou (pude saber)',\n", + " 'vejo no seu olhar (não tente entender)',\n", + " 'agora é tarde pra se arrepender',\n", + " 'seus atos não falam mas dizem muito sobre você',\n", + " 'vou lutar',\n", + " 'enfrentar meus demônios de perto',\n", + " 'e encontrar toda a verdade que eu quero',\n", + " 'as últimas palavras que deixo pra você',\n", + " 'as últimas palavras, não tente entender',\n", + " 'agora é tarde',\n", + " 'não venha me dizer',\n", + " 'a mesma historia acabando com você',\n", + " 'vou lutar',\n", + " 'enfrentar meus demônios de perto',\n", + " 'e encontrar toda a verdade que eu quero',\n", + " 'eu não vou perder minha motivação',\n", + " 'e essa é minha unica convicção',\n", + " 'agora é tarde',\n", + " 'pra se arrepender',\n", + " 'agora é tarde',\n", + " 'pra se arrepender',\n", + " 'agora é tarde',\n", + " '(sinais de uma promessa me esforcei pra manter essa)',\n", + " 'pra se arrepender',\n", + " '(afogo sua presença na verdade que me resta)',\n", + " 'agora é tarde',\n", + " '(levar pra frente o que acabou)',\n", + " 'pra se arrepender',\n", + " '(só vai nos fazer sermos arrastados a pecar)',\n", + " 'vou lutar',\n", + " 'enfrentar meus demônios de perto',\n", + " 'e encontrar toda a verdade que eu quero',\n", + " 'eu não vou perder minha motivação',\n", + " 'e essa é minha unica convicção',\n", + " '------------------------------------------------------------------------',\n", + " 'english:',\n", + " \"things left behind (with no explanation) i don't care anymore (about your forgiveness) and now that's all behind (i could know) i can see it in your eyes (don't try to understand)\",\n", + " \"it's too late now to regret your actions don't speak but they tell a lot about you\",\n", + " \"i will fight face my demons closer and i'll find all the truth that i want\",\n", + " \"these are my last words for you these are my last words, don't try to understand\",\n", + " \"it's too late now, don't come and tell me the same story ending you\",\n", + " \"i will fight face my demons closer and i'll find all the truth that i want i'll not lose my motivation this is my only conviction\",\n", + " \"it's too late now (traces of a promise, i tried to keep it) to regret (i drown your presence in the truth that lasts for me) it's too late now (take on what already ended) to regret (it'll only make us be dragged to sin)\",\n", + " \"i will fight face my demons closer and i'll find all the truth that i want i'll not lose my motivation this is my only conviction\",\n", + " 'letra de \"paint my dreams\" com anelis assumpção, vitor hugo e liniker e os caramelows',\n", + " '\"nenê da vila matilda, sabe que eu já tinha visto... já tinha tido uma conversa sobre aquele post que você me mandou das frequências magnéticas da terra. com o lama michel, há uns dois anos atrás, exatamente essa conversa. e eu também creio em mudanças frequenciais.\"',\n", + " '\"a vida é isso, é tudo isso. é uma maravilha, é uma flor, orquídea... é um pedaço de pizza, é um... uma loucura, uma tamborzada. é poder tocar tambor até de manhã, ficar bem louco, tomar cachaça, essas coisas maravilhosas... e aí?\"',\n", + " \"don't be afraid when you feel my tears paint my dreams\",\n", + " 'paint my dreams',\n", + " \"i'm gonna be a bird, you'll be my old man gold\",\n", + " 'just paint like a dream',\n", + " \"don't be afraid when you feel my lips paint my dreams\",\n", + " 'paint my dreams',\n", + " \"i'm gonna be a flat painting on the wall\",\n", + " \"you'll be my owl, just paint as dream\",\n", + " \"don't be afraid if i leave no hope, no fear\",\n", + " 'just paint our dreams',\n", + " 'you can use the palette of god',\n", + " 'you can use all colours',\n", + " 'paint my dreams, paint my dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " '\"a vida é isso, é tudo isso. é uma maravilha, é uma \"',\n", + " '\" em mudanças frequenciais.\"',\n", + " \"don't be afraid when you feel my tears...\",\n", + " \"i'm gonna be a bird\",\n", + " \"don't be afraid when you feel my lips...\",\n", + " \"i'm gonna be a flat painting on the wall\",\n", + " \"don't be afraid if i leave no hope, no fear\",\n", + " 'just paint our dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " \"i'm gonna be a flat painting on the wall\",\n", + " 'my dreams',\n", + " 'paint my dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " 'paint my dreams',\n", + " 'my dreams',\n", + " 'paint my dreams',\n", + " \"i'm gonna be a bird\",\n", + " 'paint my dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " 'paint my dreams, paint my dreams',\n", + " 'paint my dreams, my dreams',\n", + " 'o seu azul, só eu vejo. porque se quer existe na paleta de deus. deus sequer existe? ou o azul é deus?',\n", + " 'agua de coco',\n", + " 'caldo de cana',\n", + " 'dentes de oro',\n", + " 'confusao urbana',\n", + " 'the storm clouds roll in',\n", + " 'set me free fortuna',\n", + " 'it’s late and i can’t find my friends',\n", + " 'caldo de cana',\n", + " 'macumba da cidade chegou',\n", + " 'muambeiro anarquista eubou',\n", + " 'malandro tambem tem coracao',\n", + " 'the rain’s still coming down',\n", + " 'the rain’s still coming down',\n", + " 'the rain’s still coming down',\n", + " 'the rain’s still coming down',\n", + " 'the rain’s still coming down',\n", + " 'agua de coco',\n", + " 'caldo de cana',\n", + " 'dentes de oro',\n", + " 'confusao urbana',\n", + " 'macumba da cidade chegou',\n", + " 'muambeiro anarquista eubou',\n", + " 'malandro tambem tem coracao',\n", + " 'the rain’s still coming down',\n", + " 'the rain’s still coming down',\n", + " 'the rain’s still coming down',\n", + " 'the rain’s still coming down',\n", + " 'the rain’s still coming down',\n", + " 'eletricidade solar nos carros',\n", + " 'não poluem e nem gastam nada',\n", + " 'lambidas na utopia',\n", + " 'deve ser amor o que eu estou sentindo',\n", + " 'só pode ser amor que eu estou sentindo',\n", + " 'tenho certeza que é amor o que eu estou sentindo',\n", + " 'aqui agora',\n", + " 'cantando e tocando pra você',\n", + " 'te entretendo',\n", + " 'give another chance, man',\n", + " 'give another chance',\n", + " 'give another chance, man',\n", + " 'give another chance',\n", + " 'deve ser amor o que eu estou sentindo',\n", + " 'só pode ser amor que eu estou sentindo',\n", + " \"sure, it is love what i'm feeling\",\n", + " 'aqui agora',\n", + " 'cantando e tocando pra você',\n", + " 'te entretendo',\n", + " 'give another chance, man',\n", + " 'give another chance, man',\n", + " 'give another chance, man',\n", + " 'give another chance, man',\n", + " 'give another chance, man',\n", + " 'give another chance, man',\n", + " 'give another chance, man',\n", + " 'give another chance, man',\n", + " 'somos mais de 20, todos a abardinar',\n", + " 'queremos beber, não queremos pagar',\n", + " 'vamos para a festa cantar e gritar',\n", + " 'vamos fazer merda, peidar e arrotar',\n", + " 'expulsos do bar',\n", + " 'fomos postos a andar',\n", + " 'expulsos do bar',\n", + " 'mas haveremos de voltar',\n", + " 'expulsos do bar',\n", + " 'fomos postos a andar',\n", + " 'expulsos do bar',\n", + " 'mas haveremos de voltar',\n", + " 'entupimos a privada, mijamos no balcão',\n", + " 'o patrão com tanta agitação',\n", + " 'chama a polícia pra nos por a andar',\n", + " 'vamos dar a fuga, mas haveremos de voltar',\n", + " 'expulsos do bar',\n", + " 'fomos postos a andar',\n", + " 'expulsos do bar',\n", + " 'mas haveremos de voltar',\n", + " 'expulsos do bar',\n", + " 'fomos postos a andar',\n", + " 'expulsos do bar',\n", + " 'mas haveremos de voltar',\n", + " 'expulsos do bar',\n", + " 'fomos postos a andar',\n", + " 'expulsos do bar',\n", + " 'mas haveremos de voltar',\n", + " 'expulsos do bar',\n", + " 'fomos postos a andar',\n", + " 'expulsos do bar',\n", + " 'mas haveremos de voltar',\n", + " 'where is the land of light?',\n", + " 'i think this light is a lie',\n", + " 'a luz me derrete em lágrimas',\n", + " 'me afogando',\n", + " 'do que restou eu sou',\n", + " 'só me restou o amor',\n", + " 'e o que sou',\n", + " 'desapareci',\n", + " 'from all the drugs the one i like more is music',\n", + " 'from all the junks the one i need more is music',\n", + " 'from all the boys the one i take home is music',\n", + " 'from all the ladies the one i kiss is music',\n", + " 'music is my boyfriend, music is my girlfriend',\n", + " \"music is my dead end, music's my imaginary friend\",\n", + " 'music is my brother, music is my great granddaughter',\n", + " 'music is my sister, music is my favorite mistress',\n", + " 'from all the shit the one i gotta buy is music',\n", + " 'from all the jobs the one i choose is music',\n", + " 'from all the drinks i get drunk off music',\n", + " 'from all the bitches the one i wanna be is music',\n", + " 'music is my beach house, music is my hometown',\n", + " \"music is my king size bed, music's where i meet my friends\",\n", + " 'music is my hot hot bath, music is my hot hot sex',\n", + " \"music is my back rub, my music is where i'd like you to touch\",\n", + " 'claro que sim, fui escoteira-mirim',\n", + " 'direto da escola, nao, nao ia cheirar cola',\n", + " 'nem basquete, pebolim',\n", + " 'o que eu gosto não é de graça, o que gosto não é farsa',\n", + " 'tem guitarra, bateria, computador saindo som',\n", + " 'alguns dizem que é mais alto que um furacão',\n", + " 'perto dele eu podia sentir',\n", + " 'saía de seu olho e chegava em mim',\n", + " 'sentada do seu lado eu queria encostar',\n", + " 'faria o tigela até o sol raiar',\n", + " 'debaixo do lençol ele gemia em ré bemol',\n", + " 'fiquei tensa, mas tava tudo bem',\n", + " 'ele é fodão, mas eu sei que eu sou também',\n", + " 'ele é fodão, mas eu sei que eu sou também',\n", + " 'ele é fodão, mas eu sei que eu sou também',\n", + " 'ele é fodão, mas eu sei que eu sou também',\n", + " 'ele é fodão, mas eu sei que eu sou também',\n", + " 'sinto que esqueci de te regar',\n", + " 'sem eu você não é nada',\n", + " 'sinto que esqueci de alimentar meu plano',\n", + " 'sem minha parte não vai rolar',\n", + " 'isso não é de boa',\n", + " 'não é de boa',\n", + " 'an accidental lover just makes me think of how the surface’s so above us',\n", + " 'it remains in my balcony and i can’t throw away',\n", + " 'this vision it is now my friend',\n", + " 'it made me',\n", + " 'não é de boa',\n", + " 'não é de boa',\n", + " 'an accidental lover just makes me think of how the surface’s so above us',\n", + " 'it remains in my balcony and i can’t throw away',\n", + " 'this vision it is now my friend',\n", + " 'it made me',\n", + " \"dance like nobody's watching\",\n", + " \"dance like nobody's watching\",\n", + " \"dance like nobody's watching\",\n", + " \"dance like nobody's watching\",\n", + " 'tem que sambar (pá pá pá pá)',\n", + " 'tem que amar sem pensar',\n", + " 'cantar bem alto a canção que vem de dentro (pá pá pá pá)',\n", + " 'esse é o juízo final (pá pá)',\n", + " 'em qualquer ritmo ou língua, em qualquer tempo (pá pá pá pá)',\n", + " 'em forma de desabafo ou desatino',\n", + " 'quebrar a métrica lógica ótica (pá pá pá pá)',\n", + " \"nobody's watching!\",\n", + " \"dance like nobody's watching\",\n", + " \"dance like nobody's watching (nobody, nobody)\",\n", + " \"dance like nobody's watching\",\n", + " \"dance like nobody's watching\",\n", + " 'dance como se ninguém pudesse te ver',\n", + " 'ame como se você nunca fosse sofrer',\n", + " 'cante como se ninguém pudesse te ouvir',\n", + " 'viva como se o paraíso fosse aqui',\n", + " 'dance como se ninguém pudesse te ver',\n", + " 'ame como se você nunca fosse sofrer',\n", + " 'cante como se ninguém pudesse te ouvir',\n", + " 'viva como se o paraíso fosse aqui',\n", + " \"dance like nobody's watching (nobody, nobody)\",\n", + " \"dance like nobody's watching (yeah, nobody's watching)\",\n", + " \"dance like nobody's watching\",\n", + " \"dance like nobody's watching (nobody's watching)\",\n", + " 'ena pá quê que foi que te deu?',\n", + " 'foi o sono que me venceu...',\n", + " 'viste paris não te convenceu?',\n", + " 'sim sim sim se me convenceu!',\n", + " 'i love to play in this country',\n", + " 'here in canadá',\n", + " \"bajula p'ra cima\",\n", + " \"palminhas p'ra cá\",\n", + " 'foi o sono que te venceu',\n", + " 'foi o resto que me bateu',\n", + " 'já deste mais voltas ao mundo do que eu',\n", + " 'já dei, já dei, depressa fui eu!',\n", + " 'i love to play in this country',\n", + " 'here in canadá',\n", + " \"bajula p'ra cima\",\n", + " \"palminhas p'ra cá\",\n", + " 'i love to play in this country',\n", + " 'here in canadá',\n", + " \"bajula p'ra cima\",\n", + " \"palminhas p'ra cá\",\n", + " 'i love to play in this country',\n", + " 'here in canadá',\n", + " \"bajula p'ra cima\",\n", + " \"palminhas p'ra cá\",\n", + " '---- 歌詞 / lyrics ----',\n", + " 'あきらめちゃっていいのに',\n", + " 'やめちゃえって思うのに',\n", + " '逃げ出すことさえできなくて',\n", + " 'フラフラ、フラフラ',\n", + " '自信が無くてそのせいで',\n", + " '自分自身も出せなくて',\n", + " '自信無くしてスパイラル',\n", + " 'グルグル、グルグル',\n", + " 'でも出逢えたから',\n", + " 'もう見失わないよ',\n", + " '笑顔があれば、',\n", + " 'いらない何も',\n", + " '豪華な品も',\n", + " '派手な飾りも、',\n", + " 'いらないから',\n", + " '食卓囲もう',\n", + " '昨日のミスも',\n", + " '不安な明日も',\n", + " '添えて',\n", + " 'ねぇ、いらない何も',\n", + " '凝った味付けも',\n", + " 'シャレた盛り付けも、',\n", + " 'いらないから',\n", + " '涙の味はもう',\n", + " 'しょっぱいとしても',\n", + " '最後にいつも',\n", + " '笑えたら',\n", + " 'それがスパイス',\n", + " '気持ちが着いて行かなくて',\n", + " '立ち止まってしまうのに',\n", + " '明日は待ってくれなくて',\n", + " 'ハラハラ、ハラハラ',\n", + " '痛いくらい掌(て)合わせて',\n", + " '震える手ぐっとおさえて',\n", + " 'どきどき、胸の速さで',\n", + " 'どんどん、進めたらいいな',\n", + " '思いきり泣いて',\n", + " '思いきり笑おう',\n", + " '一緒にいれば',\n", + " 'いらない何も',\n", + " 'ウソ\\\\の笑顔も',\n", + " '強がりならもう、',\n", + " 'いらないから',\n", + " '小さくたたもう',\n", + " '弱さもグチも',\n", + " '棚の奥にでも、置いて',\n", + " 'ねぇ、いらない何も',\n", + " 'その香り付けも',\n", + " '無理な色付けも、',\n", + " 'いらないから',\n", + " '素材のままじゃもう',\n", + " '足りないとしても',\n", + " '飾らずいつも',\n", + " '笑えたら',\n", + " 'どんな人混みでも',\n", + " 'ひとりだったけど',\n", + " '今はひとりだとしても、',\n", + " '孤独なんかじゃない',\n", + " '笑顔があれば、',\n", + " 'いらない何も',\n", + " '豪華な品も',\n", + " '派手な飾りも、いらないから',\n", + " '食卓囲もう',\n", + " '昨日のミスも',\n", + " '不安な明日も',\n", + " '添えて',\n", + " 'ねぇ、いらない何も',\n", + " '凝った味付けも',\n", + " 'シャレた盛り付けも、',\n", + " 'いらないから',\n", + " '涙の味はもう',\n", + " 'しょっぱいとしても',\n", + " '最後にいつも',\n", + " '笑えたら、',\n", + " '笑えたら、',\n", + " '大切な人と',\n", + " '笑えたら、',\n", + " '何よりも、',\n", + " 'それがスパイス',\n", + " '---- ローマ字 / romaji ----',\n", + " 'akiramechatte ii no ni',\n", + " 'yamechae tte omou no ni',\n", + " 'nigedasu koto sae dekinakute',\n", + " 'fura fura, fura fura',\n", + " 'jishin ga nakute sono sei de',\n", + " 'jibun jishin mo dasenakute',\n", + " 'jishin nakushite supairaru',\n", + " 'guru guru, guru guru',\n", + " 'demo deaeta kara',\n", + " 'mou miushinawanai yo',\n", + " 'egao ga areba',\n", + " 'iranai nani mo',\n", + " 'gouka na shina mo',\n", + " 'hade na kazari mo',\n", + " 'iranai kara',\n", + " 'shokutaku kakomou',\n", + " 'kinou no misu mo',\n", + " 'fuan na asu mo',\n", + " 'soete',\n", + " 'nee, iranai nani mo',\n", + " 'kotta ajitsuke mo',\n", + " 'shareta moritsuke mo',\n", + " 'iranai kara',\n", + " 'namida no aji wa mou',\n", + " 'shoppai to shite mo',\n", + " 'saigo ni itsumo',\n", + " 'waraetara',\n", + " 'sore ga supaisu',\n", + " 'kimochi ga tsuite ikanakute',\n", + " 'tachidomatte shimau no ni',\n", + " 'ashita wa matte kurenakute',\n", + " 'hara hara, hara hara',\n", + " 'itai kurai te awasete',\n", + " 'furueru te gutto osaete',\n", + " 'doki doki, mune no hayasa de',\n", + " 'don don, susumetara ii na',\n", + " 'omoikiri naite',\n", + " 'omoikiri waraou',\n", + " 'issho ni ireba',\n", + " 'iranai nani mo',\n", + " 'uso no egao mo',\n", + " 'tsuyogari nara mou',\n", + " 'iranai kara',\n", + " 'chiisaku tatamou',\n", + " 'yowasa mo guchi mo',\n", + " 'tana no oku ni demo, oite',\n", + " 'nee, iranai nani mo',\n", + " 'sono kaorizuke mo',\n", + " 'muri na irozuke mo',\n", + " 'iranai kara',\n", + " 'sozai no mama ja mou',\n", + " 'tarinai to shite mo',\n", + " 'kazarazu itsumo',\n", + " 'waraetara',\n", + " 'donna hitogomi demo',\n", + " 'hitori datta kedo',\n", + " 'ima wa hitori dato shite mo',\n", + " 'kodoku nanka ja nai',\n", + " 'egao ga areba',\n", + " 'iranai nani mo',\n", + " 'gouka na shina mo',\n", + " 'hade na kazari mo, iranai kara',\n", + " 'shokutaku kakomou',\n", + " 'kinou no misu mo',\n", + " 'fuan na asu mo',\n", + " 'soete',\n", + " 'nee, iranai nani mo',\n", + " 'kotta ajitsuke mo',\n", + " 'shareta moritsuke mo',\n", + " 'iranai kara',\n", + " 'namida no aji wa mou',\n", + " 'shoppai to shite mo',\n", + " 'saigo ni itsumo',\n", + " 'waraetara',\n", + " 'waraetara',\n", + " 'taisetsu na hito to',\n", + " 'waraetara',\n", + " 'nani yori mo',\n", + " 'sore ga supaisu',\n", + " '---- 英語訳/english ----',\n", + " \"though it'd be fine if i were to give up...\",\n", + " \"though i'm thinking i should just quit...\",\n", + " \"i can't even run away;\",\n", + " 'so unsteady, so unsteady...',\n", + " 'at the fault of my having no confidence',\n", + " \"i'm unable to even express myself\",\n", + " 'which makes me lose my confidence... in a spiral',\n", + " 'spinning, spinning...',\n", + " \"but now that we've met\",\n", + " \"i won't lose sight of it again!\",\n", + " 'if i have a smile',\n", + " \"i don't need a single thing;\",\n", + " \"i don't need\",\n", + " 'expensive things',\n", + " 'or flashy jewellery',\n", + " \"let's gather around the dinner table\",\n", + " 'setting spaces for',\n", + " \"yesterday's mistakes\",\n", + " 'and uncertain tomorrows',\n", + " \"y'know, i don't need a thing;\",\n", + " \"i don't need\",\n", + " 'exquisite flavors',\n", + " 'or fancy presentation',\n", + " 'even if the taste of tears',\n", + " 'is salty -',\n", + " 'in the end',\n", + " 'if you can still smile',\n", + " \"that's spice\",\n", + " \"my feelings just can't keep up\",\n", + " 'and i end up stopping along the way',\n", + " \"but tomorrow just won't wait for me\",\n", + " 'so exasperated, so exasperated...',\n", + " \"joining hands 'til it hurts;\",\n", + " 'keeping our shaking hands steady -',\n", + " \"it'd be nice if we could keep moving forward\",\n", + " 'at the speed of the beating hearts!',\n", + " \"let's cry with all our might...\",\n", + " 'and laugh with all our might!',\n", + " \"if we're together\",\n", + " \"i don't need a single thing;\",\n", + " \"i don't need any more\",\n", + " 'fake smiles',\n", + " 'or false pride',\n", + " \"let's tidily fold away\",\n", + " 'weaknesses and complaints',\n", + " 'storing them away in the back of a drawer',\n", + " \"y'know, i don't need a thing;\",\n", + " \"i don't need\",\n", + " 'that extra aroma',\n", + " 'or unnecessary coloring',\n", + " 'even if just the ingredients alone',\n", + " 'is not enough',\n", + " 'if without decoration',\n", + " 'you can still smile...',\n", + " 'no matter the group of people',\n", + " \"i've been alone;\",\n", + " \"even if i'm still alone now\",\n", + " \"i'm not lonely in the slightest!\",\n", + " 'if i have a smile',\n", + " \"i don't need a single thing;\",\n", + " \"i don't need\",\n", + " 'expensive things',\n", + " 'or flashy jewellery',\n", + " \"let's gather around the dinner table\",\n", + " 'setting spaces for',\n", + " \"yesterday's mistakes\",\n", + " 'and uncertain tomorrows',\n", + " \"y'know, i don't need a thing;\",\n", + " \"i don't need\",\n", + " 'exquisite flavors',\n", + " 'or fancy presentation',\n", + " 'even if the taste of tears',\n", + " 'is salty -',\n", + " 'in the end',\n", + " 'if you can still smile',\n", + " 'if you can still smile',\n", + " 'with people precious to you...',\n", + " 'if you can still smile',\n", + " 'then above all else',\n", + " \"that's spice\",\n", + " '---- italiano ----',\n", + " 'anche se starei meglio arrendendomi...',\n", + " 'nonostante stia pensando di smetterla...',\n", + " 'non riesco neanche a scappare;',\n", + " 'così instabile, così incerto...',\n", + " 'in colpa per la mancanza di confidenza',\n", + " 'non riesco nemmeno ad esprimermi',\n", + " 'e perdo altra confidenza... come in una spirale',\n", + " 'gira, gira...',\n", + " 'ma ora che ci siamo incontrarti',\n", + " 'non la perderò più di vista!',\n", + " 'finché ho il sorriso',\n", + " \"non ho bisogno d'altro;\",\n", + " 'non mi servono',\n", + " 'cose costose',\n", + " 'o gioielli vistosi',\n", + " 'stringiamoci intorno al tavolo di cucina',\n", + " 'sistemando le spezie',\n", + " 'per gli erorri del passato',\n", + " 'e un futuro incerto',\n", + " 'sai, non mi serve nulla;',\n", + " 'non ho bisogno di',\n", + " 'sapori squisiti',\n", + " 'o presentazioni decorate',\n", + " 'anche se le lacrime',\n", + " 'sono salate -',\n", + " 'alla fine',\n", + " 'se riesci ancora a sorridere',\n", + " 'è grazie alle spezie',\n", + " 'i miei sentimenti non ce la fanno',\n", + " 'e mi fermo a metà strada',\n", + " 'il futuro non mi aspetterà',\n", + " 'sono esasperata, sono spazientita...',\n", + " 'stringiamo le mani finché fa male;',\n", + " 'teniamo ferme le mani quando tremano -',\n", + " 'sarebbe bello se potessimo andare avanti',\n", + " 'alla velocità di un cuore che batte!',\n", + " 'piangiamo più forte che possiamo...',\n", + " 'e facciamo lo stesso ridendo!',\n", + " 'se siamo insieme',\n", + " \"non ho bisogno d'altro;\",\n", + " 'non mi servono altre cose',\n", + " 'falsi sorrisi',\n", + " 'o falsi orgogli',\n", + " 'mettiamo via con cura',\n", + " 'debolezze e malesseri',\n", + " 'chiudendoli sul fondo di un cassetto',\n", + " 'sai, non mi serve nulla;',\n", + " 'non ho bisogno di',\n", + " 'quel sapore in più',\n", + " 'o colori non necessari',\n", + " 'anche se gli ingredienti da soli',\n", + " 'non sono abbastanza',\n", + " 'se senza decorazioni',\n", + " 'riesci ancora a sorridere...',\n", + " 'non importa quante persone ci fossero',\n", + " 'mi sono sentita sola;',\n", + " 'e anche se lo sono ancora',\n", + " 'non mi sento affatto sola!',\n", + " 'se ho il sorriso',\n", + " \"non ho bisogno d'altro;\",\n", + " 'non mi servono',\n", + " 'cose costose',\n", + " 'o gioielli vistosi',\n", + " 'stringiamoci intorno al tavolo di cucina',\n", + " 'sistemando le spezie',\n", + " 'per gli erorri del passato',\n", + " 'e un futuro incerto',\n", + " 'sai, non mi serve nulla;',\n", + " 'non ho bisogno di',\n", + " 'sapori squisiti',\n", + " 'o presentazioni decorate',\n", + " 'anche se le lacrime',\n", + " 'sono salate -',\n", + " 'alla fine',\n", + " 'se riesci ancora a sorridere',\n", + " 'se riesci ancora a sorridere',\n", + " 'con le persone a te care...',\n", + " 'se riesci ancora a sorridere',\n", + " 'allora, soprattutto...',\n", + " 'è grazie alle spezie',\n", + " '---- português ----',\n", + " 'apesar de que não teria problema se eu desistisse...',\n", + " 'apesar de estar pensando em sair...',\n", + " 'eu não posso nem fugir;',\n", + " 'tão instável, tão instável..',\n", + " 'por eu não ter auto-confiança',\n", + " 'eu não consigo nem me expressar',\n", + " 'que por sua vez me faz perder a auto-confiança... em um ciclo vicioso',\n", + " 'girando, girando...',\n", + " 'mas agora que nós nos encontramos',\n", + " 'não vou mais me perder novamente!',\n", + " 'se eu tiver um sorriso',\n", + " 'eu não preciso de mais nada;',\n", + " 'coisas caras',\n", + " 'ou jóias chamativas',\n", + " 'não preciso de nada disso',\n", + " 'vamos nos juntar na mesa de jantar',\n", + " 'dando espaço para',\n", + " 'os erros de ontem',\n", + " 'e incertezas de amanhãs',\n", + " 'sabe, eu não preciso de mais nada;',\n", + " 'de sabores requintados',\n", + " 'ou de decoração extravante',\n", + " 'não preciso de nada disso',\n", + " 'até o gosto das lágrimas',\n", + " 'é salgado -',\n", + " 'no final',\n", + " 'se você conseguir sorrir',\n", + " 'esse é o tempero',\n", + " 'meus sentimentos não conseguem acompanhar',\n", + " 'e acabo parando no meio do caminho',\n", + " 'mas o amanhã não vai esperar por mim',\n", + " 'tão irritado, tão irritado...',\n", + " 'segurando as mãos até doer;',\n", + " 'mantendo nossas mãos trêmulas estáveis -',\n", + " 'seria legal se conseguíssemos seguir em frente',\n", + " 'na velocidade dos corações batendo!',\n", + " 'vamos chorar com todas as forças...',\n", + " 'e gargalhar com todas as forças...',\n", + " 'se estivermos juntos',\n", + " 'eu não preciso de mais nada;',\n", + " 'sorrisos falsos',\n", + " 'ou orgulho forçado',\n", + " 'não preciso de nada disso',\n", + " 'vamos dobrar organizadamente',\n", + " 'as fraquezas e reclamações',\n", + " 'guardando-as no fundo de uma gaveta',\n", + " 'sabe, não preciso de mais nada;',\n", + " 'daquele aroma extra',\n", + " 'ou de cores desnecessárias',\n", + " 'não preciso de nada disso',\n", + " 'mesmo se somente os ingredientes',\n", + " 'não forem suficientes',\n", + " 'se estiver sem decoração',\n", + " 'você ainda pode sorrir...',\n", + " 'não importa o grupo de pessoas',\n", + " 'sempre estive sozinho;',\n", + " 'mesmo se ainda estiver sozinho agora',\n", + " 'não estou nem um pouco solitário!',\n", + " 'se eu tiver um sorriso',\n", + " 'não preciso de mais nada;',\n", + " 'coisas caras',\n", + " 'ou jóias chamativas',\n", + " 'não preciso de nada disso',\n", + " 'vamos nos juntar na mesa de jantar',\n", + " 'dando espaço para',\n", + " 'os erros de ontem',\n", + " 'e incertezas de amanhã',\n", + " 'sabe, não preciso de mais nada;',\n", + " 'de sabores requintados',\n", + " 'ou de decoração extravagante',\n", + " 'não preciso de nada disso',\n", + " 'mesmo o gosto das lágrimas',\n", + " 'é salgado -',\n", + " 'no final',\n", + " 'se você conseguir sorrir',\n", + " 'se você conseguir sorrir',\n", + " 'com pessoas preciosas para você...',\n", + " 'se você conseguir sorrir',\n", + " 'então acima de tudo',\n", + " 'esse é o tempero',\n", + " 'we born alone, we die alone',\n", + " 'nem precisava sem assim',\n", + " \"can't feel the air inside my lung\",\n", + " 'in the bay area cold breeze',\n", + " 'não acredito, estou sufocando',\n", + " 'eu vou morrer neste lugar',\n", + " 'levei uma vida pra chegar até aqui',\n", + " 'tudo parece se apagar',\n", + " \"where's the air? mom, please help me\",\n", + " \"i'm gonna die in san francisco\",\n", + " 'shit, what an irony',\n", + " \"can't feel my arms, can't feel hands\",\n", + " 'at least i saw that big trees',\n", + " 'este lugar é o mais legal para se morrer',\n", + " 'sim, eu já me convenci',\n", + " 'precisa mesmo ser agora?',\n", + " 'logo na primeira vez?',\n", + " 'call the rescue, call the police',\n", + " 'nós vamos ser deportados',\n", + " 'pra guantánamo ou mofar em alcatraz',\n", + " \"where's the air? mom, please help me\",\n", + " \"i'm gonna die in san francisco\",\n", + " 'shit, what an irony!',\n", + " 'não acredito estou sufocando',\n", + " 'eu vou morrer neste lugar',\n", + " 'levei uma vida pra chegar até aqui',\n", + " 'tudo aparece se apagar',\n", + " \"what i think now? i don't know\",\n", + " 'feel the death, gonna die alone',\n", + " \"i think i'm happy now in this parking lot\",\n", + " 'de tirar o fôlego este visual',\n", + " 'sausalito, the last station',\n", + " 'sausalito, my last breath']},\n", + " 'data': ['hoje você acordou contente sem saber porque',\n", + " 'pensando em mudar tudo, que incomoda você',\n", + " 'hoje é dia, dia de eleição',\n", + " 'mas em que você votará, se só tem ladrão',\n", + " 'não se venda',\n", + " 'não seja burro',\n", + " 'derrube os porcos',\n", + " 'vote nulo',\n", + " 'nome diferentes, partidos diferentes, mas são todos iguais',\n", + " 'eles roubam e enganam cada vez mais',\n", + " 'beijam crianças, fazem comícios nos bairros do subúrbio',\n", + " 'ma exercendo seus cargos se tornarão porcos sujos',\n", + " 'não se venda',\n", + " 'não seja burro',\n", + " 'derrube os porcos',\n", + " 'vote nulo',\n", + " '--------------------------------------------------------------------',\n", + " 'today you woke up glad without knowing why',\n", + " 'thinking about changing everything, what bothers you',\n", + " 'today is the day of election',\n", + " 'but in which you will vote, if you only have a thief',\n", + " \"don't sell yourself\",\n", + " \"don't be dumb\",\n", + " 'tip the pigs',\n", + " 'vote null',\n", + " 'different names, different parties, but they are all alike',\n", + " 'they steal and cheat more and more',\n", + " 'kiss children, hold rallies in suburban neighborhoods',\n", + " 'ma exercising their positions will become dirty pigs',\n", + " 'do not sell',\n", + " 'do not be dumb',\n", + " 'tip the pigs',\n", + " 'vote null',\n", + " 'aicréuqonrevog',\n", + " 'caos e vergonha',\n", + " 'aicréuqonrevog',\n", + " 'uma suja campanha',\n", + " 'aicréuqonrevog',\n", + " 'roubando os trabalhadores',\n", + " 'aicréuqonrevog',\n", + " 'espancando os professores',\n", + " 'aicréuqonrevog',\n", + " 'aicréuqonrevog',\n", + " '-------------------------------',\n", + " 'aicréuqonrevog',\n", + " 'chaos and shame',\n", + " 'aicréuqonrevog',\n", + " 'a dirty campaign',\n", + " 'aicréuqonrevog',\n", + " 'stealing the workers',\n", + " 'aicréuqonrevog',\n", + " 'spanking teachers',\n", + " 'aicréuqonrevog',\n", + " 'aicréuqonrevog',\n", + " 'reconheci... a madonna ali parada no jardim',\n", + " 'não resisti... fui perguntar o que ela achava de mim',\n", + " 'eu não sei falar inglês',\n", + " 'ela não entende uma palavra em português',\n", + " 'i saw you saying that you say that you saw (i saw you saying)',\n", + " 'i saw you saying that you say that you saw (i feel good)',\n", + " 'i feel good because you put your butt on me',\n", + " 'i feel good because you put your butt on me',\n", + " 'perguntei para o meu pai',\n", + " 'o que ela me disse',\n", + " '\"ela disse, meu rapaz...\"',\n", + " 'i saw you saying that you say that you saw (i saw you saying)',\n", + " 'i saw you saying that you say that you saw (i feel good)',\n", + " 'i feel good because you put your butt on me',\n", + " 'i feel good because you put your butt on me',\n", + " 'i feel good because you put your butt on...',\n", + " 'the hula hula song make me feel so strong',\n", + " \"the hula hula hey, goodbye i'm going away\",\n", + " 'the hula hula song make me feel so strong',\n", + " \"the hula hula hey, goodbye i'm going away (a há)\",\n", + " 'because you put your butt on me (a há)',\n", + " 'you know you put your butt on me (a há)',\n", + " 'you know you put your butt on me',\n", + " 'shalalala yeah yeah yeah yeah yeah',\n", + " 'coiote esmaga a serpente',\n", + " 'essa cena neutral',\n", + " 'nostálgico faminto',\n", + " 'sem real',\n", + " 'sem real',\n", + " 'prime agora',\n", + " 'o detonador principal',\n", + " 'vamos coragem',\n", + " 'meu general',\n", + " 'atirador de elite',\n", + " 'eléctrico animal',\n", + " 'a vítima na arena',\n", + " 'atiro de escape',\n", + " 'prime agora',\n", + " 'o detonador principal',\n", + " 'vamos coragem',\n", + " 'meu general',\n", + " 'deserto mental',\n", + " 'dominó letal',\n", + " 'deserto mental',\n", + " 'rebenta com tudo',\n", + " 'holocausto final',\n", + " 'vamos coragem',\n", + " 'meu general',\n", + " 'ai como é doloroso',\n", + " 'acordar morto',\n", + " 'ai como é doloroso',\n", + " 'acordar morto',\n", + " 'neste planeta deserto',\n", + " 'ai como é doloroso',\n", + " 'acordar morto',\n", + " 'neste planeta deserto',\n", + " 'ai como é doloroso',\n", + " 'acordar morto',\n", + " 'neste planeta deserto',\n", + " 'ai como é doloroso',\n", + " 'acordar morto',\n", + " 'neste planeta deserto',\n", + " 'ai como é doloroso',\n", + " 'acordar morto',\n", + " 'neste planeta deserto',\n", + " 'ai como é doloroso',\n", + " 'acordar morto',\n", + " 'free as a fast fish in the blue aspace',\n", + " 'livre como um peixe rápido no azul espaço',\n", + " 'free with an adrift message',\n", + " 'livre como uma mensagem à deriva',\n", + " 'inside of a bottle (crossing the seas)',\n", + " 'dentro de uma garrafa (cruzando os mares)',\n", + " 'freedom is weitten in the letters',\n", + " 'liberdade está escrito nas cartas',\n", + " 'feedom for the ones that got faith',\n", + " 'liberdade para todo que crê',\n", + " 'but the enemies want metal chains',\n", + " 'mas os inimigos querem grilhões',\n", + " 'and the prayers of the past',\n", + " 'e as preces do passado',\n", + " 'the old ladies in novena',\n", + " 'as velhas senhoras em novena',\n", + " 'against the brave navigator',\n", + " 'contra o valente navegador',\n", + " 'in a fight between bales and... freedom',\n", + " 'numa luta entre fardos e a... liberdade',\n", + " 'free as a noble bird in the infinite blue',\n", + " 'livre como um pássaro nobre no azul infinito',\n", + " 'free as the wind impelling',\n", + " 'livre como o vento impulsionado',\n", + " 'the traveling message (crossing seaquakes)',\n", + " 'a mensagem viajante (cruzando maremotos)',\n", + " 'freedom was wnat i read in the letters',\n", + " 'liberdade foi o que eu li nas cartas',\n", + " 'freedom if you got faith',\n", + " 'liberdade se tão somente crer',\n", + " 'religiões inúteis',\n", + " 'é só lavagem cerebral',\n", + " 'podridão escondida',\n", + " 'na sua falsa moral',\n", + " 'imprensa sensacionalista',\n", + " 'impondo sua verdade',\n", + " 'iludindo milhares',\n", + " 'por toda eternidade',\n", + " 'por todos os lados',\n", + " 'o mundo nos sufoca',\n", + " 'são os donos da verdade',\n", + " 'de uma sociedade hipócrita',\n", + " 'roubando nossa liberdade',\n", + " 'governos egoístas',\n", + " 'abusando da autoridade',\n", + " 'nações contra nações',\n", + " 'foda-se a humanidade',\n", + " 'multinacionais irresponsáveis',\n", + " 'vendendo seu produto',\n", + " 'mais e mais dinheiro',\n", + " 'é um genocídio absurdo',\n", + " '---------------------------------',\n", + " 'useless religions',\n", + " \"it's just brainwashing\",\n", + " 'hidden rot',\n", + " 'in his false morality',\n", + " 'sensationalist press',\n", + " 'imposing your truth',\n", + " 'deceiving thousands',\n", + " 'for all eternity',\n", + " 'all over the place',\n", + " 'the world suffocates us',\n", + " 'they are the owners of truth',\n", + " 'of a hypocritical society',\n", + " 'stealing our freedom',\n", + " 'selfish governments',\n", + " 'abusing authority',\n", + " 'nations against nations',\n", + " 'fuck humanity',\n", + " 'irresponsible multinational companies',\n", + " 'selling your product',\n", + " 'more and more money',\n", + " 'it’s an absurd genocide',\n", + " \"desd'o dia em que eu olhei pra tu\",\n", + " 'logo vi que era \"i love you\"',\n", + " 'mas como eu nao sei falar inglês',\n", + " 'é assim que eu canto pra vocês',\n", + " \"giving on, i can't say\",\n", + " 'ah, what you gonna do? i watch you gone away',\n", + " \"i can't say\",\n", + " 'ah, what you gonna do? i watch you gone away',\n", + " 'lembro o dia em que você falou',\n", + " \"i don't, i don't, i don't, i don't know\",\n", + " 'quem diria que hoje a gente sai',\n", + " 'e você não quer dizer, \"goodbye\"',\n", + " \"giving on, i can't say\",\n", + " 'ah, what you gonna do? i watch you gone away',\n", + " \"i can't say\",\n", + " 'ah, what you gonna do? i watch you gone away',\n", + " \"i can't say\",\n", + " 'ah, what you gonna do? i watch you gone away',\n", + " \"i can't say\",\n", + " 'ah, what you gonna do? i watch you gone away',\n", + " 'lembro o dia em que você falou',\n", + " \"i don't, i don't, i don't, i don't know\",\n", + " 'quem diria que hoje a gente sai',\n", + " 'e você não quer dizer, \"goodbye\"',\n", + " \"giving on, i can't say\",\n", + " 'ah, what you gonna do? i watch you gone away',\n", + " \"i can't say\",\n", + " 'ah, what you gonna do? i watch you gone away',\n", + " \"i can't say\",\n", + " 'ah, what you gonna do? i watch you gone away',\n", + " \"i can't say\",\n", + " 'ah, what you gonna do? i watch you gone away',\n", + " 'multinacionais cercam',\n", + " 'toda nossa nação',\n", + " 'cercam todo continente',\n", + " 'criando total insatisfação',\n", + " 'aprisionam o povo',\n", + " 'em sua ignorância',\n", + " 'sujam nossas bandeiras',\n", + " 'em nome da ganância',\n", + " 'vamos enfrentar',\n", + " 'vamos reagir',\n", + " 'vamos nos unir',\n", + " 'em um',\n", + " 'temos que lutar',\n", + " 'não vamos fugir',\n", + " 'pois nos somos',\n", + " 'a américa do sul',\n", + " 'nós somos o terceiro mundo!',\n", + " 'nós somos a américa do sul!',\n", + " 'nós somos o terceiro mundo!',\n", + " 'nós somos a américa do sul!',\n", + " '-----------------------------------',\n", + " 'multinational companies surround',\n", + " 'our whole nation',\n", + " 'surround all the continent',\n", + " 'creating total dissatisfaction',\n", + " 'they imprison the people',\n", + " 'in their ignorance',\n", + " 'they dirty our flags',\n", + " 'in the name of greed',\n", + " \"let's face it\",\n", + " \"let's react\",\n", + " \"let's unite\",\n", + " 'in one',\n", + " 'we have to fight',\n", + " \"we won't run away\",\n", + " 'because we are',\n", + " 'the south america',\n", + " 'we are the third world!',\n", + " 'we are the south america!',\n", + " 'we are the third world!',\n", + " 'we are thesouth america!']}}},\n", + " 'sl': {'sentence': {'pop': {'meta': {'train_data': ['my segodnja v poezd seli',\n", + " 'my davno uže hoteli',\n", + " 'otorvatʹsja v niderlandah',\n", + " 'posmotretʹ na čudesah, ha-ha-ha',\n", + " 'tonight i go to have the time of my life',\n", + " 'i go to...',\n", + " 'ha ha ha ha ha !',\n", + " 'dope shit, marihuana!',\n", + " 'vam privet iz amsterdama!',\n", + " 'dope shit, marihuana!',\n", + " 'vam privet iz amsterdama!',\n", + " 'mʹ v sojuze dolgo žili',\n", + " 'žili-byli, ne tužili',\n", + " 'pionerami my bili -',\n", + " 'budʹ gotov! (vsegda gotov!)',\n", + " 'tonight i go to have the time of my life',\n", + " 'i go to...',\n", + " 'ha ha ha ha ha !',\n", + " 'dope shit, marihuana!',\n", + " 'vam privet iz amsterdama!',\n", + " 'dope shit, marihuana!',\n", + " 'vam privet iz amsterdama!',\n", + " 'lailailalalalai',\n", + " 'my prekrasno otorvalisʹ',\n", + " 'noči ? ne doždalisʹ',\n", + " 'nadoeli diskoteki',\n", + " 'podavaj nam kazačok - čok-čok - ura!',\n", + " 'tonight i go to have the time of my life',\n", + " 'i go to...',\n", + " 'uh ha uh ha uh !',\n", + " 'dope shit, marihuana!',\n", + " 'vam privet iz amsterdama!',\n", + " 'dope shit, marihuana!',\n", + " 'vam privet iz amsterdama!',\n", + " 'dope shit, marihuana!',\n", + " 'vam privet iz amsterdama!',\n", + " 'dope shit, marihuana!',\n", + " 'vam privet iz amsterdama!',\n", + " 'uh ha hmhm ura !',\n", + " 'lailailailalalalai ×4',\n", + " 'laibach',\n", + " 'ljubljana zagreb beograd',\n", + " 'zavedali so se - poparjen je odsel i',\n", + " '(they have been aware - scalded he left i)',\n", + " 'zavedali so se they have been aware',\n", + " '_odsel je_ _he left_',\n", + " 'da je treba that it is necessary',\n", + " '_poparjen je odsel_ _scalded he left_',\n", + " 'njegove izjave pripisati his statements acribe',\n", + " '_odsel je_ _he left_',\n", + " 'nevednosti to ignorance',\n", + " '_poparjen je odsel_ _scalded he left_',\n", + " 'zlobni propagandi malicious propaganda',\n", + " '_odsel je_ _he left_',\n", + " 'zavedali so se they have been aware',\n", + " '_poparjen je odsel_ _scalded he left_',\n", + " 'absurdnosti njegovega zadrzanja the absurdity of his restraint',\n", + " '_odsel je_ _he left_',\n", + " 'zavedali so se they have been aware',\n", + " '_poparjen je odsel_ _scalded he left_',\n", + " 'da je treba that it is necessary',\n", + " '_odsel je_ _he left_',\n", + " 'napraviti konec to bring to an end',\n", + " '_poparjen je odsel_ _scalded he left_',\n", + " 'takemu stanju stvari the present state of things',\n", + " '_odsel je_ _he left_',\n", + " 'za svoje necedne cilje for their dirty aims',\n", + " '_poparjen je odsel_ _scalded he left_',\n", + " 'kot orozje reakcije as the weapon of reaction',\n", + " '_odsel je_ _he left_',\n", + " 'proti duhu napredka nasega judstva against the spirit of progress of our nation',\n", + " '_poparjen je odsel_ _scalded he left_',\n", + " 'zavedali so se they have been aware',\n", + " '_odsel je_ _he left_',\n", + " 'ostati zvesti nasi preteklosti to stay faithful to our past',\n", + " '_poparjen je odsel_ _scalded he left_',\n", + " 'to je ta kraj brez porazov',\n", + " 'tu ni več praznih obljub',\n", + " 'ni obnemelih izrazov',\n", + " 'sledi obdobje miru',\n", + " 'ne bomo pili le vode',\n", + " 'in jedli same soli',\n", + " 'izbrisane vse tegobe',\n", + " 'samo veselje zori',\n", + " 'za nas',\n", + " 'skrbi',\n", + " 'dovolj',\n", + " 'krvi',\n", + " 'predan',\n", + " 'ponos',\n", + " 'zavest',\n", + " 'v nas',\n", + " 'kdor gleda...',\n", + " 'kdor gleda nas iz pekla',\n", + " 'naj vidi kdo je del neba',\n", + " 'nikdar nas več ne boli',\n", + " 'doma na zemlji čudežni',\n", + " 'ne kdaremo več bogatim',\n", + " 'sami postajamo to',\n", + " 'nobenih bojev predati',\n", + " 'ne bo potrebno jih ne bo',\n", + " 'prenehala je morija',\n", + " 'izginilo je to zlo',\n", + " 'začela se je idila',\n", + " 'začelo se je lepo',\n", + " 'kdor gleda...',\n", + " 'kdor gleda nas iz pekla',\n", + " 'naj vidi kdo je del neba',\n", + " 'nikdar nas več ne boli',\n", + " 'doma na zemlji čudežni',\n", + " '------------------------------------',\n", + " 'this is that place without defeat',\n", + " 'there are no more empty promises',\n", + " 'nor meaningless expressions followed by a period of peace',\n", + " 'we do not just drink water',\n", + " 'nor only eat salt',\n", + " 'erase all troubles',\n", + " 'only joy dawns',\n", + " 'for us',\n", + " 'care',\n", + " 'enough',\n", + " 'for our blood',\n", + " 'devoted to',\n", + " 'the pride of',\n", + " 'consciousness',\n", + " 'to us',\n", + " 'whoever watches ...',\n", + " 'whoever watches us from hell',\n", + " 'to see who is part of the sky',\n", + " 'us never longer do not hurt',\n", + " 'at home on earth wondrous',\n", + " 'do not steal longer riches',\n", + " 'we ourselves become thor',\n", + " 'no battles to give up',\n", + " 'will not have to them will not',\n", + " 'halted the seas',\n", + " 'gone was the evil',\n", + " 'into the scenery',\n", + " 'it started well',\n", + " 'whoever watches ...',\n", + " 'whoever watches us from hell',\n", + " 'to see who is part of the sky',\n", + " 'we no longer hurt',\n", + " 'at home on earth wondrous',\n", + " 'se omazich, mila majko',\n", + " 'zaj momche se pijano',\n", + " 'tak ozenih se, se zarobych',\n", + " 'se zachernih, se zapustich',\n", + " 'denem pie, nostem pie',\n", + " 'doma rano ne si ide',\n", + " 'od vechry, tak do zory',\n", + " 'mechanite toj gi redi',\n", + " 'do zory mechanite sheta',\n", + " 'pie vino, s rakie meshe',\n", + " 'shto da pravja, mila majko',\n", + " 'crno mie napisano',\n", + " 'so pesnjata, mila majko',\n", + " 'toj zorata si e cheka',\n", + " 'a ja doma kato moma',\n", + " 'vo postela meka leza',\n", + " 'zashto, majko, ti me rodi',\n", + " 'so pijanec vek me gory',\n", + " 's pogled, majko, ja zogorech',\n", + " 'bujna mladost az izgorih',\n", + " 'kato ptica-kukuvica',\n", + " 'vo postela meka leza',\n", + " 'cjala nost placha, makimacha',\n", + " 'mila majko, ja ste begam',\n", + " 'vutre v tumnata gora na vitosha, pliska kladenche pod ohranata na bay lisan',\n", + " 'sutrin rano na baira s purvite petli, idva cyalo stado s medni pribori',\n", + " 'no bay lisan ne puska vseki da pie ot lechebnata voda',\n", + " 'smurtno bolni ochi se oglezhdat v kristalen vodoley',\n", + " 'i edin sled drug, gniyat i ruzhdyat, hranyat zemyata',\n", + " 'nyama spasenie, dazhe i gorskite idat da gi grumnat',\n", + " 'kum mechok lyutiv i zul, bere siromak ot bogatash',\n", + " 'i go vodyat kum stariya buhul, no yunakut bez podaruk',\n", + " 'abe, yunache, shto si trugnal tui, bez elek, zhiletka i kalpak?',\n", + " '\"slushaite me gorski, nishto e v men, samo umut si moga da vi dam. no tryabva u doma na trapeza da donesa, zabranena vitoshka voda. s koyato mozhe da se vizhda dalechnoto nebe ot staria svyat.\"',\n", + " '\"ela togava da pomudrish s staria buhul',\n", + " 'pa she vidim dali shte pusne pri vulcite.\"',\n", + " 'visoki kushti, kum planina, no ot glina, ne ot kamanak',\n", + " 'mudrosta e leka i lesna, lekotata e mudrost',\n", + " 'istinata e prazna, a bezdelieto mudrost',\n", + " 'v kalni lokvi sa napisani nashte sveti knizha',\n", + " 'edin paisii da beshe tuka, da go mu drasnem daskalo',\n", + " 'i taka nashiat geroy uspya, pusnaha go da pie vitoshka chorba',\n", + " 'no gorskite voinici oshte pazyat stariat taen isvor. koi znae koi shte doide sled vreme?',\n", + " 'mozhe bi edin skromen maniak',\n", + " 'burning and slaying the fucking wisdom',\n", + " 'primitive journey to the stars, where the gods travel and fight. lead us to the lost realms of idleness',\n", + " 'i barval phudela, čhaje',\n", + " 'o bršim perela',\n", + " 'me tut džakerava, čhaje',\n", + " 'mande te ave',\n", + " 'aaa, tuke ka merav',\n", + " 'eee, so na aveja?',\n", + " 'dikhava tut sar aveja',\n", + " 'te mande asaja',\n", + " 'me prastava angle tute',\n", + " 'te čumide man',\n", + " 'aaa, tuke ka merav',\n", + " 'eee, so na aveja?',\n", + " 'pe ulica terđovava',\n", + " 'a tu na aveja',\n", + " 'so na aveja, čhaje mori',\n", + " 'tuke me merav',\n", + " 'aaa, tuke ka merav',\n", + " 'eee, so na aveja?',\n", + " 'laibach',\n", + " 'ljubljana zagreb beograd',\n", + " 'cari amici soldati, jaruzelsky, drzava, svoboda',\n", + " '(dear friends soldiers/jaruzelsky/the state/freedom)',\n", + " 'cari amici soldati dear friends soldiers',\n", + " 'cari amici soldati dear friends soldiers',\n", + " 'i tempi della pace the times of peace',\n", + " 'sono are',\n", + " 'passati! over!',\n", + " 'jaruzelsky jaruzelsky',\n", + " 'general jaruzelsky je imenoval general jaruzelsky proclaimed',\n", + " '31. avgust za dan dela in miru. august 31 as a day of work and peace',\n", + " 'povdarja: \"oblast he emphasizes: \"the authority',\n", + " 'je morda nesimpaticna might be unsympathetic',\n", + " 'a edina nesmrtna pot but the only immortal way',\n", + " 'miru in of peace',\n", + " 'stabilizacije.\" and stabilisation.\"',\n", + " 'svoboda',\n", + " 'v letih najtezjih socialnih in druzbenih prtresov',\n", + " 'v casu gospodarske krize',\n", + " 'je bila teznja',\n", + " 'da se ohrani enotnost in povezanost delavstva',\n", + " 'poglavitna naloga komunistov in zavednih delavcev',\n", + " 'z vkljucitvijo',\n", + " 'brezposelne delavske mladine',\n", + " 'je vse bolj rasel politicni',\n", + " 'in bojevni razmah',\n", + " 'oblikovalo se je javno mnenje...',\n", + " 'zaradi politicnega delovanja',\n", + " 'je oblast',\n", + " 'v letu 1982',\n", + " 'razpustila',\n", + " 'svobodo',\n", + " 'freedom',\n", + " 'in the worst years of social and moral collapse',\n", + " 'at a time of economic crisis',\n", + " 'there was a tendency',\n", + " 'to preserve working class union and unity',\n", + " 'the principal task of communists and aware workers',\n", + " 'incorporating',\n", + " 'unemployed working class youth',\n", + " 'was to step up political',\n", + " 'and militant reaction',\n", + " 'public opinion has been formed...',\n", + " 'due to political activity',\n", + " 'the authority has',\n", + " 'in the year 1982',\n", + " 'cancelled',\n", + " 'freedom',\n", + " 'sto posto te ljubam, sto posto e da',\n", + " 'a nadež da gubam jas nemam namera',\n", + " 'sto posto te ljubam, sto posto e da',\n", + " 'i pak kje ti rečam da jas sum uporna',\n", + " 'sto posto te ljubam, sto posto e da',\n", + " 'a nadež da gubam jas nemam namera',\n", + " 'sto posto te ljubam, sto posto e da',\n", + " 'i pak kje ti rečam da jas sum uporna',\n", + " 'ko bajadera sladok e, sladok e, sladok žimi se',\n", + " \"a koga kje te pogledne, dali e slučajno il' ne?\",\n", + " 'večerva kje go osvojam, na uvce kje mu došepnam',\n", + " 'za da go potsetam',\n", + " 'ne, nemoj da zaboraviš, na dzidot pokraj krevetot',\n", + " 'slika od vesnikot da isečeš i da me uramiš',\n", + " 'i nemoj da zaboraviš večerva da me sonuvaš',\n", + " 'sto posto te ljubam, sto posto e da',\n", + " 'a nadež da gubam jas nemam namera',\n", + " 'sto posto te ljubam, sto posto e da',\n", + " 'i pak kje ti rečam da jas sum uporna',\n", + " 'sto posto te ljubam, sto posto e da',\n", + " 'a nadež da gubam jas nemam namera',\n", + " 'sto posto te ljubam, sto posto e da',\n", + " 'i pak kje ti rečam da jas sum uporna',\n", + " 'ooh lalala lalalala...',\n", + " 'ooh lalala...',\n", + " 'ooh lalala...',\n", + " 'ne, nemoj da zaboraviš, na dzidot pokraj krevetot',\n", + " 'slika od vesnikot da isečeš i da me uramiš',\n", + " 'i nemoj da zaboraviš večerva da me sonuvaš',\n", + " 'sto posto te ljubam, sto posto e da',\n", + " 'a nadež da gubam jas nemam namera',\n", + " 'sto posto te ljubam, sto posto e da',\n", + " 'i pak kje ti rečam da jas sum uporna',\n", + " 'i love you one hundred percent, yes, i do',\n", + " 'and i often wonder if you would love me too',\n", + " 'i love you one hundred percent, yes, i do',\n", + " \"and i'll make you see that this heart of mine is true\",\n", + " \"and i'll make you see that this heart of mine is true\",\n", + " 'i love you one hundred percent, yes, i do']},\n", + " 'data': ['(the flowing dance of young maidens)',\n", + " \"uletaj na kryl'jach vetra\",\n", + " 'ty v kraj rodnoj, rodnaja pesnya nasha',\n", + " 'tuda gde my tebya svobodno peli',\n", + " \"gde bylo tak privol'no nam s toboju\",\n", + " 'tam, pod znojnym nebom',\n", + " 'negoj vozduch polon',\n", + " 'gde rad govor morja',\n", + " 'dremljut gory v oblakach',\n", + " \"uletaj na kryl'jach vetra\",\n", + " 'ty v kraj rodnoj, rodnaja pesnya nasha',\n", + " 'tuda gde my lubya svobodno peli',\n", + " \"gde bylo tak privol'no nam s toboju\",\n", + " '(general dance)',\n", + " 'poyte pesni slavi khanu! poy!',\n", + " \"slav'te silu doblest' khana! slav'!\",\n", + " 'slaven khan! khan!',\n", + " 'slaven on, khan nash!',\n", + " 'bleskom slavi solntsu raven khan',\n", + " 'netu ravnikh slavoy chanu! net!',\n", + " 'končana so dejanja mnogih',\n", + " 'zemlja kri preliva, gnije',\n", + " 'največ sveta otrokom sliši slave',\n", + " 'našli bomo pot in vero in postave',\n", + " 'če pa naklonijo smrt bogovi',\n", + " 'manj strašna noč je v črne zemlje krili',\n", + " 'kot so pod svetlim soncem',\n", + " 'sužni dnovi',\n", + " '____________',\n", + " 'the acts of many are over',\n", + " 'earth is flowing with blood, decaying',\n", + " 'the greater part of the world',\n", + " 'belongs to the children of slava',\n", + " 'we will find the way, the faith and principles',\n", + " 'but if the gods should grant us death',\n", + " 'less terrifying is the night',\n", + " \"within the black soil's folds\",\n", + " 'than days of slavery',\n", + " 'under the bright sun',\n", + " 'me sem gova chavoro',\n", + " 'khelav mange majlacho',\n", + " 'oj andale mandale',\n", + " 'e chora man astaren',\n", + " 'kas me astarava',\n", + " 'me mange asava',\n", + " 'samo jekh chaj ni mangel',\n", + " 'voj mande puchel',\n", + " 'o opa cupa na ker mange chaje muka',\n", + " 'ti daj ka merel ako ni keles',\n", + " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde',\n", + " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde',\n", + " 'sa e chaja kelena',\n", + " 'voj ni mangel te khelel',\n", + " 'oj andale mandale',\n", + " 'mudarel man o devel',\n", + " 'ava ruza ava khel',\n", + " 'pa i tiro mek avel',\n", + " 'oj andale mandale',\n", + " 'e sviracha ka kelen',\n", + " 'o opa cupa na ker mange chaje muka',\n", + " 'ti daj ka merel ako ni keles',\n", + " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde',\n", + " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde',\n", + " 'chao maj o hutalo',\n", + " 'i ruza so ni kelel',\n", + " 'oj andale mandale',\n", + " 'an bobo ki astarel',\n", + " 'ava ruza ava khel',\n", + " 'pa i tiro mek avel',\n", + " 'oj andale mandale',\n", + " 'e sviracha ka kelen',\n", + " 'o opa cupa na ker mange chaje muka',\n", + " 'ti daj ka merel ako ni keles',\n", + " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde',\n", + " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde']}}},\n", + " 'sn': {'sentence': {'pop': {'meta': {'train_data': ['miss your vibe, miss your crime',\n", + " 'miss your pride, miss your fight',\n", + " 'body baby! dare ni mo mienai sonna kyuu ni',\n", + " 'jiki ni ai ni iku kara mou chotto hitorikiri',\n", + " 'samui sonna yoru kimi ni ai ni daki ni sugu ni',\n", + " 'iku kara mou chotto hitori',\n", + " 'doko ni ittai ikeba mou ichido futari',\n", + " 'tanoshii hibi sugoseru ka na?',\n", + " 'mnnn... hoshii your body',\n", + " 'me no mae no tobira aketara',\n", + " 'ikutsumo no hashi kakatteru',\n", + " 'kurikaesu tobira tojitara',\n", + " 'ikutsumo no hana narandeta',\n", + " \"haruka tooku ni (can't sleep hitori)\",\n", + " '(miss your size, miss your sight)',\n", + " \"egaiteta (can't dream kimi nashi de wa)\",\n", + " '(miss your night, miss your way)',\n", + " \"haruka kanata ni (can't sing umaku)\",\n", + " 'yume miteta (ikanai kanashii)',\n", + " 'watashi hitori (dare ni kikeba)',\n", + " '(miss your vibe, miss your crime)',\n", + " 'sabishii toki wa (kimi no ibasho oshiete moraeru)',\n", + " '(miss your pride, miss your fight)',\n", + " 'anata hitori ga (kimochi konna ni)',\n", + " 'ireba ii kara (tsuujiawanai)',\n", + " 'mienai chikara wo tayori ni',\n", + " '(dare ni mo mienai sonna kyuu ni jiki ni ai ni)',\n", + " 'nakimushi datta ano koro muri wo shiteta no',\n", + " '(samui sonna yoru kimi ni ai ni daki ni sugu ni)',\n", + " 'atama no naka no kotae wo jibun ni',\n", + " '(doko ni ittai ikeba mou ichido futari)',\n", + " 'atehame iradatte nigetagatteta',\n", + " '(kimochi konna ni demo fushigi body baby)',\n", + " 'zutto chikaku de',\n", + " '(miss your vibe, miss your crime)',\n", + " 'mebaeteta',\n", + " '(miss your night, miss your way)',\n", + " 'zuto soba de hohoende iru (kitto sore hod not so sad)',\n", + " 'anata hitori ga',\n", + " '(miss your lies, miss your legs)',\n", + " 'sasaeru yoru wa',\n", + " '(miss your eyes, miss your body)',\n", + " '(demo nazeka samishiku motometeru kimi)',\n", + " 'watashi hitori ga koko ni iru kara (atatakai body aitai)',\n", + " 'miss your size (dakitai kanjitai)',\n", + " 'miss your sight, miss your night, miss your way',\n", + " 'body baby! kitto sore hodo not so sad',\n", + " 'demo nazeka samishiku motometeru kimi no',\n", + " 'atatakai body aitai, dakitai, kanjitai',\n", + " 'why konna ni narenai futsuu na sekai',\n", + " \"please don't cry\",\n", + " 'mitakunai yo kimi no naiteru karada nante',\n", + " 'ima sugu ni demo sukui ni kimi no tonari de',\n", + " 'miss your body omoidasu yo',\n", + " 'fukai nemuri ni tsuku tabi, netemo sametemo ukande kuru yo',\n", + " 'your body baby, body body baby',\n", + " 'oide! takai sonna tokoro de hitori de inaide',\n", + " 'tobiorite oide umarete hajimete yorokobi no',\n", + " 'namida nagashite futari itsu mademo dakiai',\n", + " 'ai shiai, me wo samashitai',\n", + " 'ayashige na miryoku no naka ippuku',\n", + " \"but i don't smoke nante sonna samishii koto\",\n", + " 'iwanaide iki ga kurushiku naru hodo dakiaitai',\n", + " 'but inai soba ni inai kimi ga inai',\n", + " 'i miss your body baby! body baby!',\n", + " 'miss your size, miss your sight',\n", + " 'miss your night, miss your way',\n", + " 'miss your vibe, miss your crime',\n", + " 'miss your pride, miss your fight',\n", + " 'yume wo otte mayoikonda',\n", + " 'kokoro no mori no oku',\n", + " 'kagami yori sunda izumi utsuru yuganda smile',\n", + " \"koboreta namida wa (don't cry)\",\n", + " 'kin demo gin demo nakute',\n", + " 'arifureta namida (fall from my eyes)',\n", + " 'megami mo kizukanai',\n", + " 'masayume chasing chasing',\n", + " 'koero motto jibun shijou saikou no',\n", + " 'ima wo chasing chasing',\n", + " 'sou egaita jibun ni natte moyase mune no hi wo',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'na-na-na, na-na, hey, hey',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'kakenukero hero',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'na-na-na, na-na, hey, hey',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'moyase mune no hi wo (my life... yeah)',\n", + " 'yume wo tojite mimi sumaseba',\n", + " 'kasukani yobu koe',\n", + " 'daremo inai hazu no mori de',\n", + " 'miageta sora no ao',\n", + " 'koko he ha modoranai (good bye)',\n", + " 'kodoku toiu na no moudoku no',\n", + " 'amaku kaoru hana (fill up the sky)',\n", + " 'sakihokoru sekai ni',\n", + " 'sayonara changing changing',\n", + " 'koero motto jibun shijyou saikou no',\n", + " 'egao changing changing',\n", + " 'sou onegai ha kanau wa kitto terase mune no hi yo',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'na-na-na, na-na, hey, hey',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'kakenukero hero',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'na-na-na, na-na, hey, hey',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'terase mune no hi yo',\n", + " 'hey mou mechakucha haato de',\n", + " 'hontou no jibun ga dareda ka',\n", + " 'wake up shite make up',\n", + " 'enen mainichi kurikaeshite fade out (ah...)',\n", + " 'konna akumu kara (la...) no way baby (no way baby)',\n", + " '(na na na na na) nukedasu ni ha',\n", + " '(go gotta go now) me wo samasu shika nai',\n", + " 'mabushii asahi abite me wo korasu saki ni',\n", + " 'ano hi ni mita mirai ga te wo hirogeteru',\n", + " 'whoa whoa',\n", + " 'masayume chasing chasing',\n", + " 'koero motto jibun shijou saikou no',\n", + " 'toki wo chasing chasing',\n", + " 'sou egaita jibun ni natte moyase mune no hi wo',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'na-na-na, na-na, hey, hey',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'kakenukero hero',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'na-na-na, na-na, hey, hey',\n", + " 'na-na-na, na-na-na-na, oh',\n", + " 'moyase mune no hi wo',\n", + " 'annotation 1',\n", + " 'annotation 2',\n", + " 'annotation 3',\n", + " 'kimi wa windy lady',\n", + " 'boku no windy lady',\n", + " 'kimi wa windy lady',\n", + " 'boku no windy lady',\n", + " 'te o nobashite mo',\n", + " 'doko ka tōku e',\n", + " 'tonde yuku ai no yōna',\n", + " 'yami no yōna',\n", + " 'boku no windy',\n", + " 'boku no windy lady',\n", + " 'kimi wa windy lady',\n", + " 'boku no windy lady',\n", + " 'kimi wa windy girl',\n", + " 'boku no windy girl',\n", + " 'machi nakaniha',\n", + " 'nani mo nai yo',\n", + " 'ai nante tsukanoma no',\n", + " 'maboroshi sa',\n", + " 'boku no windy',\n", + " 'boku no windy lady',\n", + " 'fukinukeru kanashimi o',\n", + " 'boku ni mo',\n", + " 'kimi wa windy lady',\n", + " 'boku no windy lady',\n", + " 'kimi wa windy girl',\n", + " 'boku no windy girl',\n", + " 'te o nobashite mo',\n", + " 'doko ka tōku e',\n", + " 'tonde yuku ai no yōna',\n", + " 'yami no yōna',\n", + " 'boku no windy',\n", + " 'boku no windy lady',\n", + " 'fukinukeru kanashimi o',\n", + " 'boku ni mo',\n", + " 'fukinukeru kanashimi o',\n", + " 'boku ni mo',\n", + " 'i feel so angry',\n", + " 'riyuu nante nai',\n", + " 'jama bakari umakuikanai',\n", + " \"i'm getting red\",\n", + " 'hajikeru youna',\n", + " 'kizuitara chansu wo sagashiteru',\n", + " 'someone please stop me',\n", + " 'rumble!',\n", + " 'nirami togarese ikaku taisei',\n", + " 'just a word & it gets hazy',\n", + " 'eiri na serifu sashichigae',\n", + " 'hikisagarenai',\n", + " 'isshoka',\n", + " 'i feel so pained',\n", + " 'furui kizuato',\n", + " 'afuresou ni hiki ke ga suru',\n", + " 'long violent night',\n", + " 'fukichi na kibun',\n", + " 'osaerenai shoudou ga sakenda',\n", + " 'rumble!',\n", + " 'nirami togarese ikaku taisei',\n", + " 'just a word & it gets hazy',\n", + " 'eiri na serifu sashichigae',\n", + " 'hikisagarenai',\n", + " 'isshoka, soukazu',\n", + " 'kiba wo muke',\n", + " 'shot!',\n", + " 'shot!',\n", + " 'shot!',\n", + " 'shot!',\n", + " 'rumble!',\n", + " 'ueta kyouki sa girigiri ga ii',\n", + " 'just right and i go crazy',\n", + " 'ikigatta mama tsuranuke',\n", + " 'nigashi wa shinai zettai ni',\n", + " 'nayamitsuite',\n", + " 'mou gaman bakka shiterannai yo',\n", + " 'iitai koto wa iwanakucha',\n", + " 'kaerimichi yuugure no basutei',\n", + " 'ochikonda senaka ni bye bye bye',\n", + " 'kimi no fighting pose misenakya oh oh!',\n", + " 'yume ni made mita you na sekai wa',\n", + " 'arasoi mo naku heiwa no nichi jyou',\n", + " 'demo gen jitsu wa hibi torabu tte',\n", + " 'tama ni kuyandari shiteru',\n", + " 'sonna rolling days!',\n", + " 'koronjattatte ii ja nai no',\n", + " 'sonna toki wa waratte ageru',\n", + " 'norikonda basu no oku kara',\n", + " 'chiisaku hohoemi ga mieta',\n", + " 'kimi wo tayori ni shiteru yo oh oh!',\n", + " 'yume ni made mita you na sweet love',\n", + " 'koibitotachi wa kakurega o sagasu no',\n", + " 'demo genjitsu wa aenai hi ga',\n", + " 'tsuzukinagara mo shinjiteru no lonely days',\n", + " 'wooh, yeah, wooh!',\n", + " 'tsumazuitatte way to go, yeah yay',\n", + " 'doro darake rolling star!',\n", + " 'naru beku egao de itai keredo',\n", + " 'mamori ni iku tame ni shikata nai deshou',\n", + " 'kitto uso nante sou imi o motanai no',\n", + " 'all my loving',\n", + " 'sou janakya yatterannai',\n", + " 'yume ni made mita you na sekai wa',\n", + " 'arasoi mo naku heiwa na nichijou',\n", + " 'demo genjitsu wa hibi torabutte',\n", + " 'tama ni kuyandari shiteru',\n", + " 'sonna rolling days!',\n", + " 'oh, yeah, oh',\n", + " 'sou wakatterutte...',\n", + " 'oh, yeah, oh',\n", + " 'tsumazuitatte way to go, yeah yay',\n", + " 'doro darake rolling star!',\n", + " 'doushite darou namae yobu dakede',\n", + " 'futari no kyouri ga fuini chikaku naru',\n", + " 'hoho ni sunset katamuku yuuhi ga',\n", + " 'kawa ita suma hama to kokoro wo nureshiteku',\n", + " 'shine bright hashaide te wo fureta',\n", + " 'it must be love mune ni afureru hakanai eien',\n", + " 'call my name imasugu',\n", + " 'call my name nandomo',\n", + " 'anata no koe hibikaseteite into my heart',\n", + " 'feel the same? tokireteiku',\n", + " 'feel the same? kaiwani',\n", + " 'anata wa mou kuzuite iru no?',\n", + " 'so please call my name',\n", + " 'mono omoi ni fukeru furi wo shite',\n", + " 'atsuku naru koi wo sama sou',\n", + " 'hikaru shore break me wo hoso me nagara',\n", + " 'sui hei sen wo yubi saki de nazotte miru',\n", + " 'so sweet anata ga warau tabi',\n", + " 'you will be mine',\n", + " 'nami ni koboreru kakushita jounetsu',\n", + " 'call my name itsudemo',\n", + " 'call my name dokodemo',\n", + " 'anata no koto kanjiteru kara',\n", + " 'into my heart',\n", + " 'feel the same? kotae wo',\n", + " 'feel this way? isoide',\n", + " 'daiji namo no nakushita kunai',\n", + " 'so please call my name',\n", + " 'mitsume au dakede kiri toreru',\n", + " 'jikan no naka',\n", + " 'amai yo kan ga yozora ni hikattara',\n", + " 'close your eyes',\n", + " 'call my name imasugu',\n", + " 'call my name nandomo',\n", + " 'anata no koe hibi ka seteite',\n", + " 'into my heart',\n", + " 'feel the same? tokireru',\n", + " 'feel this way? kaiwani',\n", + " 'anata wa mou kuzuite iru no?',\n", + " 'so please call my name',\n", + " 'call my name itsudemo',\n", + " 'call my name dokodemo',\n", + " 'anata no koto kanjiteru kara',\n", + " 'into my heart',\n", + " 'feel the same? kotae wo',\n", + " 'feel this way? isoide',\n", + " 'daiji namo no nakushita kunai',\n", + " 'girl , take my messēji',\n", + " 'kotoba ni kome ta kokoro no koe o uketome te hoshii',\n", + " 'girl , take my messēji',\n", + " 'itsuwari no nai subete no kimochi koko ni shimesu kara',\n", + " 'hey hey hey konnanimo boku no koto miryou shi toi te sa',\n", + " 'henji sae nai no ?',\n", + " 'baby baby baby sore wa kimi no puraido ?',\n", + " 'sono kimochi o ima shiri tai kara',\n", + " 'kimi no futan ni nari taku wa nai',\n", + " 'kedo baby kotae ga hoshii yo',\n", + " 'you got a message kono omoi o',\n", + " 'a message tsuduru kimi no pēji',\n", + " 'bukiyou da kedo kazan nai kotoba de',\n", + " 'oh oh oh ? saigo made kome ta messēji',\n", + " 'oh oh oh ? kimi ni todoi te',\n", + " 'kitai to fu anga iri majit ta imēji',\n", + " 'just ri gi ding ri gi ding ri gi dong dong',\n", + " 'ne mamuru wan jon sarojapuko',\n", + " 'go to the top we ain’t no stop',\n", + " 'ni mame farushiwiru?ru tangyo',\n", + " 'just ri gi ding ri gi ding ri gi dong dong',\n", + " 'hoho mou honki da kara',\n", + " 'girl , take my messēji',\n", + " 'kotoba ni kome ta kokoro no koe o uketome te hoshii',\n", + " 'girl , take my messēji',\n", + " 'itsuwari no nai subete no kimochi koko ni shimesu kara',\n", + " 'kimi no futan ni nari taku wa nai',\n", + " 'kedo baby kotae ga hoshii yo',\n", + " 'you got a message kono omoi o',\n", + " 'a message tsuduru kimi no pēji',\n", + " 'bukiyou da kedo kazan nai kotoba de',\n", + " 'oh oh oh ? saigo made kome ta messēji',\n", + " 'oh oh oh ? kun ni todoi te',\n", + " 'moshimo todoku nara',\n", + " 'zutto mamoru yo',\n", + " 'you got a message kono omoi o',\n", + " 'a message tsuduru kimi no pēji',\n", + " 'bukiyou da kedo kazan nai kotoba de',\n", + " 'oh oh oh ? saigo made kome ta messēji',\n", + " 'oh oh oh ? kimi ni todoi te',\n", + " 'appudeeto motto tooku tooku tooku made tonde yuke',\n", + " 'hoka no dareka ja dame dame iya da yo',\n", + " 'koukai shitakunai kara ima sugu iu yo',\n", + " 'suki da suki da suki da suki da',\n", + " 'kono basho ga suki da yo',\n", + " 'daiji na koto ni kidzuita',\n", + " '(find the way, find the way, find the way)',\n", + " 'nani suru ka janakute dare to iru ka',\n", + " 'sagashi tsudzukete ita mono',\n", + " '(find the way, find the way)',\n", + " 'konna chikaku ni atta no (you can shine now)',\n", + " 'asu ni kitai fukuramu no wa',\n", + " 'kimi to mitai keshiki ga aru kara (get ready for…)',\n", + " 'appudeeto motto tooku tooku tooku made tonde yuke',\n", + " 'hoka no dareka ja dame dame iya da yo',\n", + " 'koukai shitakunai kara ima sugu iu yo',\n", + " 'suki da suki da suki da suki da',\n", + " 'kono basho ga suki da yo',\n", + " 'atarashii shisutemu demo',\n", + " '(brand new day, brand new day, brand new day)',\n", + " 'kienaide to negau omoi mo aru',\n", + " 'youryou seigen nante shinaide',\n", + " '(open mind, open mind)',\n", + " 'motto kimi to sugoshitai no (hold me tight tonight)',\n", + " 'donna ni kyou ga tanoshikutemo',\n", + " 'ashita ga watashi wo matteru kara (get ready for…)',\n", + " 'appudeeto motto tooku tooku tooku made tonde yuke',\n", + " 'hoka no dareka ja dame dame iya da yo',\n", + " 'koukai shitakunai kara ima sugu iku yo',\n", + " 'kimi ga kimi ga kimi ga kimi ga',\n", + " 'kimi ga soba ni ireba',\n", + " 'ushiro janaku shita demo naku mae dake muite korareta no wa',\n", + " 'kimi ga ita kara da yo',\n", + " 'appudeeto moshi mo bagu ga okitemo kitto mitsukedasu kara',\n", + " 'kimi ga inakucha dame dame iya da yo',\n", + " 'appudeeto motto tooku tooku tooku made tonde yuke',\n", + " 'hoka no dareka ja dame dame iya da yo',\n", + " 'koukai shitakunai kara ima sugu iu yo',\n", + " 'suki da suki da suki da suki da',\n", + " 'kimi ga daisuki da yo',\n", + " 'traces of love oikaketeta',\n", + " 'trace of love kokoro ni ukabe',\n", + " 'yasashii yoha no naka',\n", + " 'traces of love, trace of love',\n", + " 'remains of love',\n", + " 'traces of love, trace of love',\n", + " 'traces of love',\n", + " 'traces of love...',\n", + " 'until after midnight',\n", + " 'anata ga inai',\n", + " 'under the moonlight',\n", + " 'kumo to tomo ni nagaretai',\n", + " 'otona sugiru sekai',\n", + " 'naze ka raku ni konashiteru ne',\n", + " 'bunkatteru kedo',\n", + " 'sonna ni isogenai',\n", + " 'across my heart',\n", + " 'leaving footprints',\n", + " 'sore o oi, kie... sokuseki o kakushi',\n", + " 'yukue o kuramashi',\n", + " 'ibasho mo himitsu',\n", + " 'dakedo kukkiri sugu soko ni',\n", + " 'kehai kanji, otogashi, mata maboroshi... toritachi',\n", + " 'taiyou yokogiri',\n", + " 'isshun... kage...',\n", + " 'konna unmei',\n", + " 'samayou futari',\n", + " 'until after midnight',\n", + " 'anata ga inai',\n", + " 'under the moonlight',\n", + " 'kumo to tomo ni nagaretai',\n", + " 'itsu neteshimattan darou',\n", + " 'soba ni ite kuretayo ne',\n", + " 'mada yume o miteiru no?',\n", + " 'fushigi ni mune ga itakunai',\n", + " 'nakute ha naranai sonzai',\n", + " 'as long as the earth exists',\n", + " 'sou shinjite ha shaideita',\n", + " 'itsu neteshimattan darou',\n", + " 'soba ni ite kuretayo ne',\n", + " 'mada yume o miteiru no?',\n", + " 'fushigi ni mune ga itakunai',\n", + " 'dare ga kimeta no konna kimari',\n", + " 'donna ni hontou ni',\n", + " 'konna ni tappuri tsukari',\n", + " 'tsukarete hanarete...',\n", + " 'kotoba yori daiji ni shitai ai',\n", + " 'dakedo komari, katamari...',\n", + " \"don't run across my heart\",\n", + " 'run across the street',\n", + " 'cross the waters',\n", + " 'yori sotte itai',\n", + " \"don't run across my heart\",\n", + " 'run across the street',\n", + " 'cross the waters',\n", + " 'tonari ni kite hoshii',\n", + " \"don't run across my heart\",\n", + " 'run across the street',\n", + " 'cross the waters',\n", + " 'yori sotte itai',\n", + " \"don't run across my heart\",\n", + " 'run across the street',\n", + " 'cross the waters',\n", + " 'tonari ni kite hoshii',\n", + " \"don't run across my heart\",\n", + " 'run across the street',\n", + " 'cross the waters',\n", + " 'yori sotte itai',\n", + " \"don't run across my heart\",\n", + " 'run across the street',\n", + " 'cross the waters',\n", + " 'tonari ni kite hoshii',\n", + " 'kimi no kotoba de nemurenai kokoro ni hibiku itami ni',\n", + " 'sotto heya o nuke dashite umi no kaze o hoho ni uketa',\n", + " 'deatta toki no mune no takanari o wasurete shimawanai youni...',\n", + " 'kimi no namida ga koborete kokoro ni fukaku shimikonda',\n", + " 'waga mama datta jibun o yoru no umi ni sutete shimaou',\n", + " 'tell me why itsu kara?',\n", + " 'love sight ashi moto ni',\n", + " 'saku hana sae kitsukazu ni',\n", + " 'sugiteku toki no naka keep in my heart',\n", + " 'ironna koto gisei ni shite yuku keredo',\n", + " 'tebana shichaike nai mono',\n", + " 'love is... tokubetsu na',\n", + " 'love is... taisetsu na',\n", + " 'message... kimi ni tsutaetai so',\n", + " 'love is... yowakute',\n", + " 'love is... hakanaku temo',\n", + " \"zutto don't stop believin'\",\n", + " 'love is... motomeru',\n", + " 'love is... sasaeru',\n", + " 'message... hitori ja dekinai koto so',\n", + " 'love is... kawaranai',\n", + " 'love is... kimi no koe',\n", + " 'donna boku mo iyashite yuku one is love',\n", + " 'futari iku saki ni nani ga matteruka wakaranai kedo',\n", + " 'itoshisa to wa itsu datte',\n", + " 'ki ga tsukeba soba ni aru mono',\n", + " 'in your eyes utsushita',\n", + " 'sunrise sono naka de',\n", + " 'itsumo waratteitai',\n", + " 'ii kotoba narabe temo',\n", + " \"flowin' my heart\",\n", + " 'ii tarinakute bukiyou ni naru omoi sae',\n", + " 'kimi wa wakatte kureru ne',\n", + " 'love is... kanaeru',\n", + " 'love is... sasageru',\n", + " 'message... yume o misetai kara so',\n", + " 'love is... rekishi ga',\n", + " 'love is... kawattemo',\n", + " 'kokoro no oku towa ni kienai one is love',\n", + " 'yo!! hoshi no nai sky kono machi de',\n", + " 'one light mitsuketa deai',\n", + " 'i think so omou yoru meeru tensou',\n", + " 'ari no mama i wanna send you love',\n", + " \"kazoe kirenai shiin it's mean\",\n", + " 'soko ni umareru you gotta faith in me',\n", + " 'do it!! do it!! boku no yume kimi no kokoro ni shimikondeku',\n", + " 'everytime i do, lonely day, lonely night',\n", + " 'tsuyoku naritai shinji aitai',\n", + " \"tsuki... kaze... subete ga futari hiki yoseau just bringin' now\",\n", + " 'never ever let you go (never let your love go)',\n", + " \"kienai ai no kodou no refrain (i don't wanna pain)\",\n", + " 'sugiteku toki no naka keep in my heart',\n", + " 'ironna koto gisei ni shite yuku keredo',\n", + " 'tebana shichaike nai mono',\n", + " 'love is... tokubetsu na',\n", + " 'love is... taisetsu na',\n", + " 'message... kimi o mamoritai so',\n", + " 'love is... toki ni wa',\n", + " 'love is... kizu tsuketemo',\n", + " \"zutto don't stop believin'\",\n", + " 'love is... motomeru',\n", + " 'love is... sasaeru',\n", + " 'message... hitori ja dekinai koto so',\n", + " 'love is... kawaranai',\n", + " 'love is... kimi no koe',\n", + " 'donna boku mo iyashite yuku one is love',\n", + " 'boyaketa sekai no naka tooku',\n", + " 'kanjiru yoake no mabushi sa ni',\n", + " 'koware kaketeta tokei no hari',\n", + " 'ugoki dasou to mata uzuki hajimeteru',\n", + " \"i'm gonna survive\",\n", + " 'even if it is hard',\n", + " \"i'm gonna survive\",\n", + " 'as far as i see the flicker of hope',\n", + " 'mujun darake na otona no iiwake',\n", + " 'ayamachi bakari wo kurikaeshi nagara',\n", + " 'seigi nandato furi kazashiteru heiki na kao de',\n", + " 'yokusei sareteru yasuragi wa mou...',\n", + " 'saki nobashita akarui mirai nante aru wake naito',\n", + " 'azawarau kedo',\n", + " 'bokura wa mada ikiteru',\n", + " 'energy moshimo kono sekai ga owaru toshite mo',\n", + " 'rise against kasuka demo hikari ga mieta nara',\n", + " 'sore wa boku no naka ni umareta tashikana energy',\n", + " 'azayaka na hibi wo tori modoshitakute',\n", + " \"i'm gonna survive\",\n", + " 'even if it is hard',\n", + " \"i'm gonna survive\",\n", + " 'as far as i see the flicker of hope',\n", + " 'kagayaki nakushita kodomo no me ni wa',\n", + " 'nani ga utsutte nani wo kangaeteru no?',\n", + " 'kyodai na biru ni kezurarete yuku',\n", + " 'sora ni wa nanimo mie nai',\n", + " 'energy boku-tachi no shimei wa doko ni ano?',\n", + " 'rise against kono mama no sekai ja oware nai yo',\n", + " 'sore wa hitorih itori ga kasaneteku energy',\n", + " 'tamerawaz uni ima ugoki dashite',\n", + " 'tozasareta jidai nara sono me hiraite',\n", + " \"(don't close your eyes)\",\n", + " 'machigai darakeno yo no naka dakedo',\n", + " 'sorasazu (let me go) ni ikou',\n", + " 'sore demo mada bokura wa ikiteru kara',\n", + " 'ii nari ni natte sono',\n", + " 'saki ni mieta no wa hikari ka yami ka?',\n", + " 'kyodai na atsuryoku de osae tsukerare',\n", + " 'umareta no wa ikari ya namida',\n", + " 'nani ga seigi de, nani ga daiji ka?',\n", + " 'dareka ni makase kiri ja',\n", + " 'mie wa shinai sa never give up!',\n", + " 'deguchi ga nai tonneru nante nai',\n", + " 'karato shinjite mukae ima!',\n", + " 'energy kimi ga daiteru yariba no nai kimochi',\n", + " 'rise against uzumakiku yami no naka',\n", + " 'kakuse nai yo',\n", + " 'tatoe kono mama no sekai ga tsuduku toshite mo',\n", + " 'osorezu ni ima wo kaete ikou',\n", + " 'energy moshimo kono sekai ni owari ga kite mo',\n", + " 'rise against kasukademo hikari wo nozomu nara',\n", + " 'sore wa boku-tachi ni umareta tashikana energy',\n", + " 'chikara no nai mono kowasa naide',\n", + " 'hakanaki mono itoshiki mono',\n", + " \"omoi kaeshi te (don't forget)\",\n", + " 'itsuwari darake no yo no naka dakedo',\n", + " 'todoka nai (let me go) basho wa',\n", + " 'nainda ima bokura wa ikiteru kara',\n", + " \"i'm gonna survive\",\n", + " 'even if it is hard',\n", + " \"i'm gonna survive\",\n", + " 'as far as i see the flicker of hope',\n", + " '*do you know great progress in science?',\n", + " 'suki na dake metomorphose',\n", + " 'sashiba megashira sekkai era wo kezuri shiboukyuuin',\n", + " 'break out! crush shita complex',\n", + " 'kasanesugita ope ni warning',\n", + " 'kizu darake chimamireno',\n", + " 'utsukushiki medical body',\n", + " 'club no omoi rizumu muragaru yasui tane',\n", + " 'terashita black light sakete hohoemu no',\n", + " 'katakuzure shinai mune kubiresugita lain',\n", + " 'kitsuku sawaranaide shirikon ga yabureru',\n", + " 'uso wo kasanete',\n", + " 'uso ni torisukarete',\n", + " 'uso de katamete sugata de nani itte mo usokusai',\n", + " 'ishi wa migaitemo',\n", + " 'daiya ni wa naranai',\n", + " 'kokoro ga minikui mama ja mitame kaete mo imi ga nai',\n", + " 'do you know great progress in science?',\n", + " 'suki na dake metomorphose',\n", + " 'sashiba megashira sekkai era wo kezuri shiboukyuuin',\n", + " 'break out! crush shita complex',\n", + " 'kasanesugita ope ni warning',\n", + " 'kizu darake chimamireno',\n", + " 'utsukushiki medical body',\n", + " 'asobitsukareta koro ni dekita ika shita kareshi',\n", + " 'fui no houmon ni awate arubamu kakushita',\n", + " 'kako wo kakushite',\n", + " 'kako ni obieteru ima',\n", + " 'sono fushizen na egao saki ni hayaku kakushitekure!',\n", + " 'do you know great progress in science?',\n", + " 'suki na dake metomorphose',\n", + " 'sashiba megashira sekkai era wo kezuri shiboukyuuin',\n", + " 'break out! crush shita complex',\n", + " 'kasanesugita ope ni warning',\n", + " 'kizu darake chimamireno',\n", + " 'utsukushiki medical body',\n", + " 'uso wo kasanete',\n", + " 'uso ni torisukarete',\n", + " 'uso de katamete sugata de nani itte mo usokusai',\n", + " 'ishi wa migaitemo',\n", + " 'daiya ni wa naranai',\n", + " 'kokoro ga minikui mama ja mitame kaete mo imi ga nai',\n", + " 'do you know great progress in science?',\n", + " 'suki na dake metomorphose',\n", + " 'sashiba megashira sekkai era wo kezuri shiboukyuuin',\n", + " 'break out! crush shita complex',\n", + " 'kasanesugita ope ni warning',\n", + " 'kizu darake chimamireno',\n", + " 'utsukushiki medical bodyera is the reading for genzai (present time)',\n", + " 'madamada yume wa samenai ne',\n", + " 'kono michi no mukō nani ga ma terudarou',\n", + " 'kitto kitto kotae wa arukara',\n", + " 'akirame kirenai tachi tomarenainda',\n", + " 'demo ushirogami hiku ato sukoshi dake de mo',\n", + " 'sono yawaraka na egao no tonari ni itaikeredo',\n", + " 'massugu ni kakedasu',\n", + " 'harewataru aozora ga mabushii',\n", + " 'oikaze ni aora re',\n", + " 'atarashii tabi ga hajimaru',\n", + " 'itsuka mata aeru yo',\n", + " 'furikaerazu ni asu e mukau yo',\n", + " 'good luck my way',\n", + " 'shinjiru michi e',\n", + " 'atchi kotchi kakezuri mawatte',\n", + " 'tatakikomanaito kotae wa denai mitai',\n", + " 'kitto kitto kōkai shinaide',\n", + " 'warai ageru yo',\n", + " 'susumi tsuzukerunda',\n", + " 'hora mō kowaku wa nai',\n", + " 'asu nani ga okotte mo norikoe rare-sō',\n", + " 'koko made tsumazuite mo koreta kara',\n", + " 'utsuri yuku sekai no',\n", + " 'katasumi de kimi ni aete ureshii',\n", + " 'afure-sōna omoi o kotoba ni dekinakatta yo',\n", + " 'itsuka mata aetara motto umaku tsutae rareru ka na',\n", + " 'good luck my way',\n", + " 'hohoemi kakete',\n", + " 'massugu ni kakedasu',\n", + " 'harewataru aozora ga mabushii',\n", + " 'oikaze ni aora re',\n", + " 'atarashii tabi ga hajimaru',\n", + " 'itsuka mata aeru yo',\n", + " 'furikaerazu ni asu e mukau yo',\n", + " 'good luck my way',\n", + " '(smile at me)',\n", + " 'utsuri yuku sekai no',\n", + " 'katasumi de kimi ni aete ureshii',\n", + " 'afure-sōna omoi o kotoba ni dekinakatta yo',\n", + " 'itsuka mata aetara motto umaku tsutae rareru ka na',\n", + " 'haru ka na niji o koete',\n", + " 'good luck my way',\n", + " 'shinjiru michi e',\n", + " 'in the future',\n", + " 'shiruetto azayaka na shiruetto',\n", + " 'katatteru mirai wa katatteru',\n", + " 'mata deau ano basho ano yume no',\n", + " 'naka',\n", + " '* shiruetto azayaka na shiruetto',\n", + " 'joushiki wo tobikoeteyuku',\n", + " 'kiseki wa kitto kimi ni kakatteru',\n", + " 'itsumo no asa no rasshu',\n", + " 'chigau to ieba',\n", + " 'nanika chigaitai to omou kokoro kana',\n", + " 'itsumo no eki bari wadai no aidoru',\n", + " 'nani mo kawaranai fuku ga tada kawaru dake',\n", + " 'monotarinasa wo kanjiteru',\n", + " 'wakattekiteiru',\n", + " 'toboketa kanji de',\n", + " 'waraitobashiteru wake ni ikanai',\n", + " 'soro soro katatteru mirai wa kattateru',\n", + " '* repeat',\n", + " '** nasakenai mama ja sono uchi',\n", + " 'suterareru hayaku mitsukena',\n", + " 'yoafuredasu nanika wa aru kara',\n", + " 'katatteru mirai wa katatteru',\n", + " 'joushiki wo tobikoeteyuku<',\n", + " 'kiseki wa kitto kimi ni kakatteru',\n", + " 'madogiwa no saboten',\n", + " 'aoi sora wo mitsumeteru',\n", + " 'daisuki na kaze wo mei ippai abitai',\n", + " 'yoru no romanteikku',\n", + " 'asa no riaru gyappu wo doo suru',\n", + " '?',\n", + " 'mabushiku hikaru yuuki wo',\n", + " 'soro soro dou shita mon kai ?',\n", + " 'kono goro katatteru mirai wa katatteru',\n", + " '*** me no mae no bijon uchiyabutte',\n", + " 'joushiki wo tobikoeteyuku',\n", + " 'kiseki wa kitto kimi',\n", + " 'ni kakatteru',\n", + " 'tsuki ni hoe taiyou to moe',\n", + " 'itsu made mo togatta daiya de',\n", + " 'furi na koto tsuyoi tsuyoi mono ni kaeteku',\n", + " 'katatteru mirai wa katatteru',\n", + " 'joushiki wo tobikoeteyuku',\n", + " 'kiseki wa kitto kimi ni kakatteru',\n", + " '*** repeat',\n", + " '** repeat',\n", + " '* repeat',\n", + " \"i'm searching for the sense of my life, where am i going?\",\n", + " 'mi hatenu saki wo omoinagara',\n", + " 'hikikaesu koto wa yurusarezu',\n", + " 'tada, tatakai wo erabi yuku',\n", + " 'mamorubeki mono shinjiru mono wa',\n", + " 'suukina shukumei ni yurare',\n", + " 'usui haiiro ni irodzuita',\n", + " 'kibou ni sugari',\n", + " 'kono byakuya mo kirisake to',\n", + " 'cry out!',\n", + " 'raise my sword',\n", + " 'freedom became thousands of flames',\n", + " 'mezame yo ima kono toki',\n", + " 'raise my hope',\n", + " 'nageki wa tashikana kibou e to kawarudarou',\n", + " 'fusagi kakeru kumotta kokoro ga',\n", + " 'fumishimeru tsuchi wo nurashite yuku',\n", + " 'kienai kyozou ni modaenagara',\n", + " 'tada, hisou no daichi e yuku',\n", + " 'utareta setsuna mezameta kokoro',\n", + " 'yureru omoi mo uchi suteyo',\n", + " 'shunkoku ni moeagaru ishiki yo',\n", + " 'nozomi tsunagu yuruginai yaiba ni nare',\n", + " 'cry out!',\n", + " 'raise my sword',\n", + " 'freedom became thousands of flames',\n", + " 'ima kakeyo ano sora e',\n", + " 'raise my hope',\n", + " 'kanashimi wa tashika ni kibou e to kawarudarou',\n", + " 'miageru to, soko wa kawaranu sora',\n", + " 'yuuen no kimi omou',\n", + " 'shunkoku ni moeagaru ishiki yo',\n", + " 'nozomi tsunagu yuruginai yaiba ni nare',\n", + " 'cry out!',\n", + " 'raise my sword',\n", + " 'freedom became thousands of flames',\n", + " 'mezameyo ima kono toki',\n", + " 'raise my hope',\n", + " 'nageki wa tashikana kibou e to kawarudarou',\n", + " 'raise my sword',\n", + " 'freedom became thousands of flames',\n", + " 'ima kakeyo ano sora e',\n", + " 'raise my hope',\n", + " 'i cut off all of enemies',\n", + " 'ashita no hi wa tashika ni kimi no me ni utsurudarou',\n", + " 'fusagikonde hakidashita omae no iu risou to ha',\n", + " 'me no mae de furisosogu gizen no koe to fuhai no ame',\n", + " 'distraction! are you ready?',\n", + " 'satisfaction! are you ready?',\n", + " 'yousha suru yochi mo nai nakigarakai to magiresare',\n", + " 'mattou na michi o iku tsuyogari no daibensha sare',\n", + " 'mune no nai ore ni mo aishikata o oshietekure',\n", + " 'distraction! are you resdy?',\n", + " 'satisfaction! are you ready?',\n", + " 'mimizawari na zastunen riron bakari tsutawanai',\n", + " 'confusion asked me...',\n", + " 'ikiru imi ni kotae ha aru no?',\n", + " 'bukiyou na haibokushatachi ga warau hiniku na sama yo',\n", + " 'confusion asked me...',\n", + " 'dare ka no sukui motometeita',\n", + " 'kokoro no soko kara yowai jibun o aiseru no darou ka',\n", + " 'i sentence it to good-bye',\n", + " 'i can say nothing',\n", + " 'nani mo hoshiku ha nai dare mo shinjitakunakatta',\n", + " 'nani mo tsutaetakunai dare mo aishitakunakatta',\n", + " 'ohayō tokyo konichiwa',\n", + " \"sumimasen i'm foreigner\",\n", + " \"i don't speak japanese\",\n", + " 'but i love aoi sora',\n", + " 'when you say wakarimashita',\n", + " 'i say hitachi toyota',\n", + " 'kawasaki nintendo',\n", + " 'canon sony honda',\n", + " \"i'm losing my way\",\n", + " 'obāsan where should i go?',\n", + " 'shinjuku so big',\n", + " 'i need a doraemon',\n", + " 'you speak japanglish',\n", + " 'and show me body language',\n", + " 'what can i do?',\n", + " 'where should i go?',\n", + " 'no, nonono',\n", + " 'makudonarudo',\n", + " 'guguru toiletto',\n", + " 'kitto katto',\n", + " 'dizunilando',\n", + " 'takushi go hoteru',\n", + " 'sebun elebun miruku',\n", + " 'basu biru',\n", + " 'sutābakkusu',\n", + " 'ohayō tokyo konichiwa',\n", + " \"sumimasen i'm foreigner\",\n", + " \"i don't speak japanese\",\n", + " 'but i love ramen tempura',\n", + " 'when you say arigatō konbanwa',\n", + " 'i say suzuki yamaha',\n", + " 'uniqlo toshiba',\n", + " 'casio godzilla',\n", + " \"i'm losing my way\",\n", + " 'obāsan where should i go?',\n", + " 'shinjuku so big',\n", + " 'i need a doraemon',\n", + " 'you speak japanglish',\n", + " 'and show me body language',\n", + " 'what can i do?',\n", + " 'where should i go?',\n", + " 'please take me home',\n", + " 'no, nonono',\n", + " 'makudonarudo',\n", + " 'guguru toiletto',\n", + " 'kitto katto',\n", + " 'dizunilando',\n", + " 'takushi go hoteru',\n", + " 'sebun elebun miruku',\n", + " 'basu biru',\n", + " 'sutābakkusu',\n", + " 'sarada hanbāgā',\n", + " 'sandoitchi sōsēji',\n", + " 'kohi kēki',\n", + " 'aisukurimu konbini',\n", + " 'furaidopoteto',\n", + " 'esukarētā arukoru',\n", + " 'bareboru besuboru',\n", + " 'basukettoboru gorufu',\n", + " 'makudonarudo',\n", + " 'guguru toiletto',\n", + " 'kitto katto',\n", + " 'dizunilando',\n", + " 'takushi go hoteru',\n", + " 'sebun elebun miruku',\n", + " 'basu biru',\n", + " 'sutābakkusu',\n", + " 'i pray for you',\n", + " 'sora wo kaketa',\n", + " 'eien wo koete',\n", + " 'we pray for you',\n", + " 'kono shunkan ni',\n", + " 'dekiru koto naru',\n", + " 'koe ni takushi kimi wo omou',\n", + " 'we want to send you our songs now',\n", + " 'please, stop crying',\n", + " 'asu wo maneku',\n", + " 'hohoemi wo motte',\n", + " 'kaze wo kanji kimi wo omou',\n", + " 'we want to send you our songs now',\n", + " 'oshiyoseru',\n", + " 'kabe ni tachimukau',\n", + " 'uragiranai sono tsuyosa wa',\n", + " 'saisei wa sakebi kodama suru',\n", + " 'sora wo eguri sasaru',\n", + " 'no more tears',\n", + " 'oshiyoseru',\n", + " 'kako ni tachimukau',\n", + " 'kumori no nai sono tsuyosa ga',\n", + " 'hitosuji no hikari terashiteru',\n", + " 'we believe your new way of love',\n", + " 'no more tears',\n", + " 'semari kuru yami wo utte',\n", + " 'honoo no mama hashiri nukete',\n", + " 'nuzumanai tayakai no naka de',\n", + " 'inori wo sasage',\n", + " 'oshiyoseru',\n", + " 'kabe ni tachimukau',\n", + " 'uragiranai sono tsuyosa wa',\n", + " 'saisei wa sakebi kodama suru',\n", + " 'yami wo eguri sasaru',\n", + " 'no more tears',\n", + " 'oshiyoseru',\n", + " 'kako ni tachimukau',\n", + " 'mayoi no nai sono tsuyosa ga',\n", + " 'hitosuji no hikari terashiteru',\n", + " 'we believe your new way of love',\n", + " 'no more tears',\n", + " 'we want keep sending you our songs',\n", + " 'no more tears',\n", + " '1 kuraitsuita kachiku no kiba',\n", + " '2 yosougai da ne sono damage',\n", + " '3 atama ni makka na bara wo',\n", + " '4 kirei na sakasete yaru sa',\n", + " 'yes! got back my life!!',\n", + " 'yes! i got back my life!!',\n", + " '1 asai chie de hineridase',\n", + " '2 ima ni ikinokoru sube wo',\n", + " '3 pride wa toki ni yaiba',\n", + " '4 kiriotoseba yo nimaijita',\n", + " 'yes! got back my life!!',\n", + " 'yes! i got back my life!!',\n", + " 'devils back bone devils back bone',\n", + " 'buzama ni owarasete yaru sa',\n", + " 'devils back bone devils back bone',\n", + " 'onore ni asu wa nai to shire',\n", + " 'devils back bone devils back bone',\n", + " 'notauchi mawaru mushikera ga',\n", + " 'devils back bone devils back bone',\n", + " 'saigo da semete hade ni shine',\n", + " 'ikuyo !',\n", + " 'kyou mo kono mune wa haritsumeta mama',\n", + " 'houkago ni tsutsumarete kimi o miteru lady, ready?',\n", + " 'zutto ashinami wa sorowanai mama',\n", + " 'tsuzuku kara naisho da yo sukoshizutsu ne lady, ready?',\n", + " 'shirisugite shiranai kara (question and answer)',\n", + " 'kikoenai furi ga jouzu ni natte (question and answer)',\n", + " 'nee shinkokyuu hitotsu shitara me o akete',\n", + " 'jimonjitou yamete nanigenaku ohayou tte itchatteru',\n", + " 'akiru kurai zenbu kimi ga hoshii yo haato wa namida de ippai',\n", + " 'koi no iroha to ka mada wakattenai nda',\n", + " 'nandomo kurikaesu kedo sunzen de mata jikai e',\n", + " 'sweet na otomegokoro wa ainiku toriatsukattenai no desu',\n", + " 'nee, kore ga i love you?',\n", + " 'yatto te ni ireta hazu no panorama',\n", + " 'nihou susumi nihou sagaru nande? dakedo lady, ready?',\n", + " 'gooru dekinakucha tomarenai kara',\n", + " 'wakaranai mama demo ne ii yo, dakara lady ready?',\n", + " 'kinou no kotae nante sa (question and answer)',\n", + " 'kyou no kotae no mae de wa hora ne (question and answer)',\n", + " 'mou kakusesou mo nai kurai suki da kara',\n", + " 'shiranai koto wa itsuka shiretara ii ka na tte itchaou ka na',\n", + " 'toritomenai shiin demo daiji da kara ne andaarain o hiite',\n", + " 'koi no shikenkamoku ni kuwaeteoite yo',\n", + " 'toki ni kimi no kokoro ni nanbyaku mairu no distance?',\n", + " 'nante ne ki ni shisugi ka na dakedo sore ga honshin na no desu',\n", + " 'konna, anna toki wa dou shitara ii no?',\n", + " 'nareta merodi o kuchizusamu you ni',\n", + " 'kimi no naka no watashi wa doko ni iru no?',\n", + " 'guruguru mawatte shirokujichuu, risaitaru!',\n", + " 'someday i really really send it, precious for you!',\n", + " 'someday i really really send it',\n", + " 'itsuka sono hi ga kitara taisetsu na koe o kiite',\n", + " 'koi ni yoyaku rokuga wa arienai kara nogasanaide',\n", + " 'akiru kurai zenbu kimi ga suki da yo haato wa egao de ippai',\n", + " 'koi no iroha mo sukoshi wakaritai nda',\n", + " 'nandomo kurikaesu kedo sunzen de mata jikai e',\n", + " 'sweet na otomegokoro wa izen toriatsukattenai no desu',\n", + " 'nee, kore ga i love you?',\n", + " 'someday i really really send it, precious for you!',\n", + " 'someday i really really send it, precious for you!',\n", + " 'someday i really really send it, precious for you!',\n", + " 'someday i really really send it, precious for you!',\n", + " 'yume no tsuzuki',\n", + " 'sore tte kitto warau tame...',\n", + " 'hito wa kizutsuite mo mata aruku n da ne...',\n", + " 'shinjiru michi yuku',\n", + " 'sureba sono tabi de kanarazu',\n", + " 'soba ni aru kawaranu',\n", + " 'takara wo shiru',\n", + " 'nagaku tsuzuku michi no ue de',\n", + " 'meippai chikara tsuyoku arukou wo',\n", + " 'i wish lala kimi ga waraeba',\n", + " 'sekai juu ga minna happy na n da',\n", + " 'i wish lala',\n", + " \"say hello to what's waiting\",\n", + " 'lala lala',\n", + " 'cross road lala...',\n", + " 'furi mukeba tsurai nigai',\n", + " 'monokuro sekai no you da demo',\n", + " 'aruki dashita sono toki kara',\n", + " 'kawa tte iku n da kako no ga ga',\n", + " 'kizukeba hora mata hitotsu boku dake no iro ga aru',\n", + " 'sore dake de...',\n", + " 'i wish lala kimi ga waraeba',\n", + " 'sekai juu ga minna happy na n da',\n", + " 'i wish lala',\n", + " \"say hello to what's waiting\",\n", + " 'lala lala',\n", + " 'i wish lala kimi ga waraeba',\n", + " 'sekai juu ga minna happy na n da',\n", + " 'i wish lala',\n", + " \"say hello to what's waiting\",\n", + " 'lala lala',\n", + " 'cross road lala...',\n", + " 'furi mukeba tsurai nigai',\n", + " 'monokuro sekai no you da demo',\n", + " 'aruki dashita sono toki kara',\n", + " 'kawa tte iku n da kako no ga ga',\n", + " 'kizukeba hora mata hitotsu boku dake no iro ga aru',\n", + " 'sore dake de...',\n", + " 'mayonaka hibiku uta ni hikiyoserare masquerade',\n", + " 'mayoikomu niwa tobira wo akete dancing with fire',\n", + " 'no suso de kikazaru kimi to',\n", + " 'sotto shikou no motto hibbatte kono',\n", + " 'hazumu terase haneru moving shoes & doll',\n", + " 'ai no yoru kiri ni dakarete fukaku amaku suberu',\n", + " 'dare hitori jama wa sasenai subete futari no tame',\n", + " 'mabayui yubi de katamuke leading emotion',\n", + " 'matte kokkei na isso ubatte kono',\n", + " 'ginyuushijin ga sakebu marude swinging moon & soul',\n", + " 'ai no yoru hoshi ni dakarete yakeru suhada sukeru',\n", + " 'kami no yoru suna ni magirete yureru futari no kage',\n", + " 'ai no yoru kiri ni dakarete fukaku amaku suberu',\n", + " 'dare hitori jama wa sasenai subete futari no tame',\n", + " 'ai no yoru hoshi ni dakarete yakeru suhada sukeru',\n", + " ...]},\n", + " 'data': ['waterfall',\n", + " 'kikoeru kanata ni',\n", + " 'hitori omoide tadoreba',\n", + " 'oh',\n", + " 'mayotta my way to home',\n", + " 'subete kakaete',\n", + " 'hitogomi no naka',\n", + " 'wandered',\n", + " 'ano toki sagashita basho',\n", + " 'now i find the way, can go stronger',\n", + " \"flyin' high forever\",\n", + " 'egai ta mirai no colors afureteku',\n", + " 'kasaneta omoi no ashita ga',\n", + " 'ima kara hajimaru',\n", + " 'hitomi sora sazuni aruki dasuru true story, my own',\n", + " 'night fall',\n", + " 'anata no yokogao',\n", + " 'ima mo asenai manazashi',\n", + " 'oh',\n", + " 'fuan ni se wo muke',\n", + " 'jiyuu atsumete',\n", + " 'kitsui ta kokoro',\n", + " 'wishing',\n", + " 'saki dasu',\n", + " 'atarashi my flow',\n", + " 'now i find the way, can go stronger',\n", + " \"flyin' high forever\",\n", + " 'deaeta kiseki no ato uketomete',\n", + " 'tsudutta omoi no subete wo',\n", + " 'ima nara hanaseru',\n", + " 'hitomi sora sazuni tsukuridasu no true story, my own',\n", + " 'now i find the way, can go stronger',\n", + " \"flyin' high forever\",\n", + " 'egai ta mirai no colors afureteku',\n", + " 'kasaneta omoi no ashita ga',\n", + " 'ima kara hajimaru',\n", + " 'hitomi sora sazuni aruki dasuru true story, my own',\n", + " 'yami wo seou rekishi taiki wo kogasu',\n", + " 'machi no rhythm ni himei no opera show time',\n", + " 'kakusei no kodou',\n", + " 'shikaku chokugeki suru bishou wa sequence',\n", + " 'shinshi shukujo no capsule kudake star voice',\n", + " 'mirai wo musaboru',\n", + " 'tokihanatsu yogen sunda chikara no kehai',\n", + " 'hametsu teki chinou ga baberu azamuku',\n", + " 'shinshu iroke ni koori no peace keep down',\n", + " 'kakedashita yabou',\n", + " 'semari kuru yokan nara konya rekuiemu',\n", + " 'yurugasu oto ni naru',\n", + " \"cyclone baby you're get over now\",\n", + " 'kokoro mo shihai suru',\n", + " 'cyclone baby can you start everything?',\n", + " 'android sae mo kyoufu to nemuru',\n", + " 'midnight ni itoshi no berubetto freedome',\n", + " 'seiki no kanata ni',\n", + " '\"eien\" no maryoku sae tameiki ni kaeru',\n", + " 'kanjite netsu ni naru',\n", + " \"cyclone baby you're get over now\",\n", + " 'sono te de shihai suru',\n", + " 'cyclone baby can you start everything?',\n", + " 'furuedasu kibou hieta zetsubou no tame',\n", + " 'hikari no toki wo koete kore ga requiem',\n", + " 'yurugasu oto ni naru',\n", + " \"cyclone baby you're get over now\",\n", + " 'kokoro mo shihai suru',\n", + " 'cyclone baby can you start everything?',\n", + " 'surudoi kaze ni naru',\n", + " \"cyclone baby you're get over now\",\n", + " 'subete wo shihai suru',\n", + " 'cyclone baby can you start everything?',\n", + " 'i see passion in your eyes',\n", + " \"of a love that you can't hide\",\n", + " 'atsuku sayaite',\n", + " 'tamerattari shinaide',\n", + " 'daite',\n", + " 'i see passion in your eyes',\n", + " 'mou oshiete itsumom shritakatta himitsu',\n", + " 'donna yumemiteruno donna souzou shiteiruno',\n", + " 'kotaenai tada akaku somaru hoho no',\n", + " 'koi no aizu wa the passion in your eyes',\n", + " 'i see passion in your eyes',\n", + " \"of a love that you can't hide\",\n", + " 'atsuku sayaite',\n", + " 'tamerattari shinaide',\n", + " 'i see passion in your eyes',\n", + " \"like a fire that's burning blue\",\n", + " 'mune ga takaburu ooiku te wo hiraite',\n", + " 'daite',\n", + " 'i see passion in your eyes',\n", + " 'sotto oshiete itsumo shrirtakatta himitsu',\n", + " 'donna koto shiteruno donna keiken shiteiruno',\n", + " 'kotaenai tada akaku somaru hoho no',\n", + " 'koi no aizu wa the passion in your eyes',\n", + " 'i see passion in your eyes',\n", + " \"of a love that you can't hide\",\n", + " 'atsuku sayaite',\n", + " 'tamerattari shinaide',\n", + " 'i see passion in your eyes',\n", + " \"like a fire that's burning blue\",\n", + " 'mune ga takaburu ooiku te wo hiraite',\n", + " 'daite',\n", + " 'i see passion in your eyes',\n", + " 'i see passion in your eyes',\n", + " \"of a love that you can't hide\",\n", + " 'atsuku sayaite',\n", + " 'tamerattari shinaide',\n", + " 'i see passion in your eyes',\n", + " \"like a fire that's burning blue\",\n", + " 'mune ga takaburu ooiku te wo hiraite',\n", + " 'daite',\n", + " 'rice wa suki ka, japan no otoko nara',\n", + " 'power wo tameruze, ashita no rising sun',\n", + " 'chicken wa suki ka, body ni iize',\n", + " 'slim na karada wa, omae no tame ni',\n", + " 'yume wo misete yo, futari no yume',\n", + " \"don't close your eyes\",\n", + " \"i'm on fire you need fire\",\n", + " 'just tonight...',\n", + " \"i'm the trigger!\",\n", + " 'japan japan japan',\n", + " 'itoshii onna ga nemuru machi',\n", + " 'japan japan japan',\n", + " 'shinjita ai ni, massugu ni',\n", + " 'japan japan japan',\n", + " 'gohan wo tabete tsuyoku nare',\n", + " 'japan japan japan',\n", + " \"i'm the fire\",\n", + " '\"i live in japan\"',\n", + " 'everyday everynight, hard na mainichi',\n", + " 'utauze sing a song, omae ni love song',\n", + " 'hold me tight konya wa, omae to all night long',\n", + " 'aishite kiss shite, never never change',\n", + " 'egao misete yo, ore no tame ni',\n", + " \"don't close your eyes\",\n", + " \"i'm on fire you need fire\",\n", + " 'just tonight...',\n", + " \"i'm the trigger!\",\n", + " 'japan japan japan',\n", + " 'itoshii onna wo mamori nuite',\n", + " 'japan japan japan',\n", + " 'motto tsuyoku daite',\n", + " 'japan japan japan',\n", + " 'misoshiro nomindara omoi dashite',\n", + " 'japan japan japan',\n", + " \"i'm the fire\",\n", + " 'ore ga shindemo, omae wa shinu na, daite yaru, gyuu---u',\n", + " 'yume wo misete yo, futari no yume',\n", + " \"don't close your eyes\",\n", + " \"i'm on fire you need fire\",\n", + " 'just tonight...',\n", + " \"i'm the trigger!\",\n", + " 'japan japan japan',\n", + " 'itoshii onna wo dakishimete',\n", + " 'japan japan japan',\n", + " 'motto tsuyoku tsuyoku',\n", + " 'japan japan japan',\n", + " 'omae no tame ni ikite yuku',\n", + " 'japan japan japan',\n", + " \"i'm the fire\",\n", + " 'exotic na yoru ni, japan, anata to futari, japan',\n", + " 'exotic na yoru ni, japan, omae to... oh',\n", + " 'japan, japan',\n", + " 'fire!!',\n", + " 'japan',\n", + " 'photo frame no mukou oitekita basho wa',\n", + " 'iro asetemo furikaereba soko ni aru',\n", + " 'shounen datta koro kake mawatte itari',\n", + " 'sono waga mono gao ni',\n", + " 'my way my way kowasa shirazu',\n", + " 'blowing in the wind',\n", + " 'ano natsu no nioi fuujikonda kioku',\n", + " 'kaze wo kiru you ni bokura wa kakenuketa',\n", + " 'mabushii hizashi abite',\n", + " 'dokomademo zutto issho da to shinjiteta',\n", + " 'boku no daiji na memories',\n", + " 'guuzen wo yosooi ai ni ittarishita',\n", + " 'awai koigokoro kimi wa ima mo kawaranai',\n", + " 'kudakechitta otona butta kiss mo',\n", + " 'iwai shitai no ni',\n", + " 'i can not i can not akirameta yo',\n", + " 'i go back in time',\n", + " 'umi ga chikakatta ano fuukei e',\n", + " 'are kara tooku hanarete shimatta yo',\n", + " 'kokoro kezurarete',\n", + " 'kawatteiku kedo nakusanai omoi ga aru',\n", + " 'kimi wo aishita memories',\n", + " 'chihei e to mukatte sorezore no michi wo',\n", + " 'gouru wa mada mienai',\n", + " 'tsugi no jinsei e umare kawattemo',\n", + " 'minna ni aitai',\n", + " 'kaze wo kiru you ni bokura wa kakenuketa',\n", + " 'mabushii hizashi abite',\n", + " 'dokomademo zutto issho da to shinjiteta',\n", + " 'boku no daiji na memories',\n", + " 'hibi no naka de okoru deki goto ni',\n", + " 'sayuu sare zu ni ira re ru no nara',\n", + " 'totsu zen no ame mo kanashi mi to wa muen',\n", + " 'sou hei on',\n", + " \"it's moving, it's turning\",\n", + " \"it's the system of alive\",\n", + " 'living life, making love',\n", + " 'there is the system forever',\n", + " 'megu ru kise tsu wo kaze ga hakon de',\n", + " 'ame no nokori ga wo kimi ga sara u',\n", + " 'sou shite kokoro wa aozora wo egaki kaga yaki',\n", + " 'ita zura na ai wa katachi kae te',\n", + " 'kimochi no kazi wo toru',\n", + " \"i don't know where i will go to\",\n", + " 'fuan tei dakara nega u',\n", + " 'kono guuzen wa lucky day',\n", + " 'kimi ga sai go no shining love',\n", + " '*ikite iku system wa',\n", + " 'tan jyun na shiku mi jya nai kedo',\n", + " 'ima tashika ni wakaru no wa',\n", + " 'kuyama nai mirai tsu kuru koto',\n", + " \"it's moving, it's turning\",\n", + " \"it's the system of alive\",\n", + " 'living life, making love',\n", + " 'there is the system forever*',\n", + " 'toki wa yuru yaka ni iro wo kae te',\n", + " 'hyou jyou kae naga ra',\n", + " 'mune ni kioku to shite yaki tsuke te',\n", + " 'omoi de ga uma reru',\n", + " \"i don't know where i will go to\",\n", + " 'mai nichi ga onaji jya nai',\n", + " 'sono isshun demo precious time',\n", + " 'yo ga ake tara loving you again',\n", + " '* repeat',\n", + " 'oh loveland',\n", + " 'mekuru meku natsu no gogo',\n", + " 'dare mo ga',\n", + " 'kokage ni nige kondeta',\n", + " 'yaketsuku',\n", + " 'ishidatami no kanata ni',\n", + " 'yuremeku',\n", + " 'nige misu no naka kara',\n", + " 'moeru you na',\n", + " 'suteppu ni',\n", + " 'mi o makase',\n", + " 'arawareta hito wa',\n", + " 'oh loveland',\n", + " 'hoho ni kobeberu ase ga',\n", + " 'kawaita',\n", + " 'michi no ueni ochiruto',\n", + " 'totsuzen',\n", + " 'konna sabaku no machi ga',\n", + " 'minami no',\n", + " 'oashisu ni kawaru',\n", + " 'oh island',\n", + " 'kitto ano hito no sei',\n", + " 'anata no',\n", + " 'hitomi o mukete',\n", + " 'oh, loveland, oh island',\n", + " 'i love you, i love you',\n", + " 'oh, loveland, oh island',\n", + " 'i love you',\n", + " 'yume no ato',\n", + " 'nadoru yo ni',\n", + " 'kigatsuku to',\n", + " \"mienakunatte 'ta\",\n", + " 'oh loveland',\n", + " 'fui ni araware kieta',\n", + " 'ano hito',\n", + " 'kitto natsu no megami sa',\n", + " 'hikari no',\n", + " 'ai wa koko ni mo aru to',\n", + " 'oh, loveland',\n", + " 'oshie ni kitanda',\n", + " 'oh, loveland, oh island',\n", + " 'i love you, i love you',\n", + " 'oh, loveland, oh island',\n", + " 'i love you',\n", + " 'oh loveland, oh island',\n", + " 'i love you, i love you',\n", + " 'oh loveland, oh island',\n", + " 'i love you',\n", + " 'oh, loveland, oh island',\n", + " 'i love you, i love you',\n", + " 'oh, loveland, oh island',\n", + " 'i love you',\n", + " 'oh loveland, oh island',\n", + " 'i love you, i love you',\n", + " 'oh loveland, oh island',\n", + " 'i love you',\n", + " 'oh loveland, oh island',\n", + " 'i love you, i love you',\n", + " 'oh loveland, oh island',\n", + " 'i love you',\n", + " 'oh loveland, oh island',\n", + " 'i love you, i love you',\n", + " 'oh loveland, oh island',\n", + " 'i love you',\n", + " 'on drums, aoyama jun',\n", + " 'on bass, ito koki',\n", + " 'on guitar, shiina kazuo',\n", + " 'on keyboard, masato matsuda',\n", + " 'on the other keyboard, shigemi toru',\n", + " 'on sax, toki hidefumi',\n", + " 'chorus, cindy, sasaki kumi, murata kazuhito',\n", + " 'oh loveland, oh island',\n", + " 'i love you, i love you',\n", + " 'oh loveland, oh island',\n", + " 'i love you',\n", + " 'original lyrics:',\n", + " '切切蓬蓬 切蓬切蓬',\n", + " '切切蓬蓬',\n", + " '你懂不懂 我像一条龙',\n", + " '你不过一条小小蜈蚣',\n", + " '切切蓬蓬 切蓬切蓬',\n", + " '切切蓬蓬',\n", + " '你懂不懂 我像一条龙',\n", + " '你不过一个小小洋葱',\n", + " '一个天来一个地',\n", + " '你和我相差不知多少里',\n", + " '我就是嫁鸡嫁犬',\n", + " '也不会嫁给你',\n", + " '切切蓬蓬 切蓬切蓬',\n", + " '切切蓬蓬',\n", + " '你懂不懂 我是一条龙',\n", + " '怎能够嫁你小小蜈蚣',\n", + " '一个天来一个地',\n", + " '你和我相差不知多少里',\n", + " '我就是嫁鸡嫁犬',\n", + " '也不会嫁给你',\n", + " '切切蓬蓬 切蓬切蓬',\n", + " '切切蓬蓬',\n", + " '你懂不懂 我是一条龙',\n", + " '怎能够嫁你小小蜈蚣',\n", + " '切切蓬蓬',\n", + " '切切蓬蓬',\n", + " '切切蓬蓬',\n", + " 'chinese pinyin:',\n", + " 'qièqiè péng péng qiè péng qiè péng',\n", + " 'qièqiè péng péng',\n", + " 'nǐ dǒng bù dǒng wǒ xiàng yītiáo lóng',\n", + " 'nǐ bùguò yītiáo xiǎo xiǎo wúgōng',\n", + " 'qièqiè péng péng qiè péng qiè péng',\n", + " 'qièqiè péng péng',\n", + " 'nǐ dǒng bù dǒng wǒ xiàng yītiáo lóng',\n", + " 'nǐ bùguò yīgè xiǎo xiǎo yángcōng',\n", + " 'yīgè tiān lái yīgè de',\n", + " 'nǐ hé wǒ xiāngchà bùzhī duōshǎo lǐ',\n", + " 'wǒ jiùshì jià jī jià quǎn',\n", + " 'yě bù huì jià gěi nǐ',\n", + " 'qièqiè péng péng qiè péng qiè péng',\n", + " 'qièqiè péng péng',\n", + " 'nǐ dǒng bù dǒng wǒ shì yītiáo lóng',\n", + " 'zěn nénggòu jià nǐ xiǎo xiǎo wúgōng',\n", + " 'yīgè tiān lái yīgè de',\n", + " 'nǐ hé wǒ xiāngchà bùzhī duōshǎo lǐ',\n", + " 'wǒ jiùshì jià jī jià quǎn',\n", + " 'yě bù huì jià gěi nǐ',\n", + " 'qièqiè péng péng qiè péng qiè péng',\n", + " 'qièqiè péng péng',\n", + " 'nǐ dǒng bù dǒng wǒ shì yītiáo lóng',\n", + " 'zěn néng gòu jià nǐ xiǎo xiǎo wúgōng',\n", + " 'qièqiè péng péng',\n", + " 'qièqiè péng péng',\n", + " 'qièqiè péng péng',\n", + " 'english translation:',\n", + " 'chick chick boom boom chick boom chick boom',\n", + " 'chick chick boom boom',\n", + " \"do you understand i'm like a dragon?\",\n", + " \"you're nothing but a tiny centipede\",\n", + " 'chick chick boom boom chick boom chick boom',\n", + " 'chick chick boom boom',\n", + " \"do you understand i'm like a dragon?\",\n", + " \"you're nothing but a small red onion\",\n", + " \"we're from the same time and place\",\n", + " \"we're not that much different\",\n", + " \"i'll even marry a chicken or a dog\",\n", + " \"but i'll never ever marry you\",\n", + " 'chick chick boom boom chick boom chick boom',\n", + " 'chick chick boom boom',\n", + " \"do you understand i'm like a dragon?\",\n", + " 'how could i marry a tiny centipede like you?',\n", + " \"we're from the same time and place\",\n", + " \"we're not that much different\",\n", + " \"i'll even marry a chicken or a dog\",\n", + " \"but i'll never ever marry you\",\n", + " 'chick chick boom boom chick boom chick boom',\n", + " 'chick chick boom boom',\n", + " \"do you understand i'm like a dragon?\",\n", + " 'how could i marry a tiny centipede like you?',\n", + " 'chick chick boom boom',\n", + " 'chick chick boom boom',\n", + " 'chick chick boom boom',\n", + " 'donna kotoba mo',\n", + " 'kimochi wo tsutaekirenai',\n", + " 'sono mune ni dakarete',\n", + " 'hontou no itoshisa wo shiru',\n", + " 'eien no nagasa dewa tarinai kurai',\n", + " 'ichiban chikaku de mitsumete itai',\n", + " 'happy birthday to you!',\n", + " 'anata ga umareta hi',\n", + " 'yakusoku sareta mirai to no meguriai',\n", + " 'miracle day',\n", + " 'yureru kyandoru',\n", + " 'honoo wa moetsukiyou to',\n", + " '?(me) no mae no anata to',\n", + " 'chikai wa zutto kagayaiteru',\n", + " 'setsunasa ni oshierarete kidzuita no wa',\n", + " 'ai suru hoka ni wa nani mo iranai',\n", + " 'happy birthday to you!',\n", + " 'kono hi ga nakattara',\n", + " 'watashi wa hitorikiri ai kara hagureteta',\n", + " 'miracle day',\n", + " 'tatoe futari ni',\n", + " 'donna ni toki ga',\n", + " 'sugisattemo',\n", + " 'kyou to iu hi wo',\n", + " 'wasurenai wa',\n", + " 'happy birthday to you!',\n", + " 'anata ga umareta hi',\n", + " 'yakusoku sareta mirai to no meguriai',\n", + " 'whoo! whoo!',\n", + " 'inside out butta kire bonnou tatsu trigger',\n", + " 'shou mo nai pride nante gomi no hi ni sutete',\n", + " 'issaigassai karu samurai it crazy',\n", + " 'nainen no kikan ga unari o ageru nda',\n", + " 'life it goes on tadareta sekai datte',\n", + " 'nageiteru sono mae ni',\n", + " 'kaze yo izanae michi naru hou e',\n", + " 'untamed~',\n", + " 'wakiagaru netsu to (do not be dominated) kusuburu tamashii ga mune o shimetsukeru',\n", + " '(some way~)',\n", + " \"moeru hi no you ni there, i'll find my place\",\n", + " \"under the radar i'm reaching for the sky\",\n", + " 'deep inside buppanase honnou sasu frequence',\n", + " 'beat & rhyme & flow dangan o mashingan e souten',\n", + " 'ittou ryoudan kyokutou winds to blow down',\n", + " 'michi naki michi e to migaite susumu nda',\n", + " 'as time goes by oto no yaiba de motte',\n", + " 'kirihiraku sono saki ni',\n", + " 'ware o michibike hikari no hou e',\n", + " 'untamed~',\n", + " 'hakidasu itami ni (do not be dominated) shibireru karada ga mata uzukidasu',\n", + " '(some way~)',\n", + " 'tozashita hitomi ni now i face the change',\n", + " 'illuminate the glow i have inside',\n", + " 'blaze your mind~',\n", + " \"do not be dominated do not let'em take you away\",\n", + " '(fight! fight!)',\n", + " 'dohatsu ten tsuku raimei todoroke bakuon ride on',\n", + " 'do what you believe is right do what you can do at a time',\n", + " '(fight! fight!)',\n", + " 'dosuru kami no shoutei kurawaserya ii nda',\n", + " 'untamed~',\n", + " 'wakiagaru netsu to (do not be dominated ) kusuburu tamashii ga mune o shimetsukeru',\n", + " '(some way~)',\n", + " \"moeru hi no you ni there, i'll find my place\",\n", + " \"under the radar i'm reaching for the sky\",\n", + " 'hagane no kiba o toge umeki to koe o hage',\n", + " \"i'm gonna live out my life untamed~\",\n", + " '(fight! fight!)',\n", + " 'ore no machi ga moeru, ano tai sanji de',\n", + " 'omae no uchi mo moete, hisan na monogatari',\n", + " 'moeagaru honou, nigemadou mono ga',\n", + " 'tori kakomu hi no te ni',\n", + " 'kemuri ga me ni shimita',\n", + " 'fire! burning your spirit fire',\n", + " 'fire',\n", + " 'kako wo furikaeru, hima nante mounai',\n", + " 'osoikakaru kodoku, kizuita sono toki ni',\n", + " 'ano ko ga abunai',\n", + " 'itoshiki hito yo',\n", + " 'isoge hayaku! ai wo mamoru tame',\n", + " 'fire! burning your spirit fire',\n", + " 'fire! burning your spirit fire',\n", + " 'burning your spirit fire',\n", + " 'isoge hayaku! ai wo mamoru tame',\n", + " 'shinjiru mono subete, honou no naka he to',\n", + " 'fire! burning your spirit fire',\n", + " 'fire! burning your spirit fire',\n", + " 'burning your spirit fire',\n", + " 'fire',\n", + " 'itami ni modaeru',\n", + " 'hitoshizuku no ai',\n", + " 'nomihosezu ni iru',\n", + " 'uzuite',\n", + " 'kono mama',\n", + " 'oku ni yariagete',\n", + " 'nage dasezu ni iru',\n", + " 'if we look up at this beautiful sky',\n", + " 'maybe we can be innocent again',\n", + " \"it's never late to make a change\",\n", + " 'kegarete',\n", + " 'kowareta karada dake wo',\n", + " 'karamase tsuite',\n", + " 'nige dasanaide yo',\n", + " 'surikiresou deshou?',\n", + " 'ima sara nakidasanaide ne',\n", + " 'mata hi ga ochiteku',\n", + " 'being lost',\n", + " 'ai no nai kajitsu',\n", + " 'kiku mimi motazu ni',\n", + " 'kusarikakete yuku',\n", + " 'kutte wa kuwarete',\n", + " 'doko made kuchiru ka?',\n", + " 'hikari naki ana e',\n", + " 'strip yourself of pride',\n", + " \"you won't be prisoner of the artificial world\",\n", + " \"don't try to fkae it, just be real\",\n", + " 'ai no ki',\n", + " 'sakasete',\n", + " 'kawaita nobara ni wa hana wo',\n", + " 'kokoro ni wa eien wo',\n", + " 'itsuka wa',\n", + " 'todoku no?',\n", + " 'hajimete mita yume no tsuzuki wo',\n", + " 'mada tooi keredo',\n", + " 'being lost',\n", + " 'ah',\n", + " 'saigo kurai',\n", + " 'kirei ni soko',\n", + " 'tonde misete',\n", + " 'kegarete',\n", + " 'kowareta karada dake wo',\n", + " 'karamase tsuite',\n", + " 'nige dasanaide yo',\n", + " 'itsuka wa',\n", + " 'todoku no?',\n", + " 'hajimete mita yume no ori wo',\n", + " 'mada tooi keredo',\n", + " 'being lost',\n", + " 'kimi no hitomi ni nanika mitsumeteru no ka',\n", + " 'yume ni moeteru boku no senaka yo',\n", + " 'dainishiku sasaitemo yurushitekure',\n", + " 'kobanaka naranai jibun no sora',\n", + " \"music for the people lovin'\",\n", + " 'tsubasa o hirogete',\n", + " \"music for the people dancin'\",\n", + " 'chikara wo shinjite',\n", + " \"music for the people lovin'\",\n", + " 'tsubasa o hirogete',\n", + " \"music for the people dancin'\",\n", + " 'konotte yu piku torii',\n", + " 'hito wa daredemo nanika o ni nokoneru',\n", + " 'tooi no omoi hi yume o koiga shime',\n", + " 'naraeta furumade matta fure',\n", + " 'yaru dake yaru asada ore chikinu you',\n", + " \"music for the people lovin'\",\n", + " 'kaze omoi hirogara',\n", + " \"music for the people dancin'\",\n", + " 'tori yori tsubayaku',\n", + " \"music for the people lovin'\",\n", + " 'kaze omoi hirogara',\n", + " \"music for the people dancin'\",\n", + " 'mou tsugu ikuteri',\n", + " 'shita ni to wa jibun to atakaruno sa',\n", + " 'ichi mono senshi ni',\n", + " 'makenare nai',\n", + " \"music for the people lovin'\",\n", + " 'tsubasa o hirogete',\n", + " \"music for the people dancin'\",\n", + " 'chikara wo shinjite',\n", + " \"music for the people lovin'\",\n", + " 'tsubasa o hirogete',\n", + " \"music for the people dancin'\",\n", + " 'konotte yu piku torii',\n", + " 'yesterday sutorobo no naka',\n", + " 'atteta ki ga shita kedo',\n", + " 'if nante zettai iwanai',\n", + " 'tonari no heya no youna kyori',\n", + " 'kuruma no reesu me de otte',\n", + " 'kuyashisouna kao de',\n", + " 'zuuu to yukkuri to... hakkiri to...',\n", + " 'understand wakaru tte',\n", + " 'kao de wa ne kitto... itteta...',\n", + " 'kokoro no naka owari ga one more wowo day',\n", + " 'yoru ga kowai tte dare ni kiita no',\n", + " 'ittenai yo',\n", + " 'sonna munasawagi owaranai....',\n", + " 'yuuutsu ni nani mitsumeteru no ugokazu',\n", + " 'tooku dokoka de mou ichido dake',\n", + " 'when i kanwanai jikan.... koete',\n", + " 'so i modorenai michi wo hashitte',\n", + " 'owaranai yume dake wo',\n", + " 'tomaranai otonashiku matteru...',\n", + " 'samishisou ni itomeru long long way',\n", + " 'doa ga hiraiteitemo 1 more night',\n", + " 'wana ni hamtteru one wrong way',\n", + " 'mada mada kodomo de modorenai',\n", + " 'dou ni ka narisou de kowai',\n", + " \"it doesn't mater\",\n", + " 'what i need is ono more night',\n", + " 'sonna ni jikan wo miteru to',\n", + " 'mou konna yume ni natteru',\n", + " 'zuuu to hitori de owaranai hitorikiri',\n", + " 'tada hamatteiru',\n", + " 'mata haretekita ne',\n", + " 'mata ganbattetan da ne sugoi yo',\n", + " 'sonna sukai kyuuna sukooru',\n", + " 'donna ni sukejuuru kawatte',\n", + " 'suicchi shitemo',\n", + " 'sonna sutairu itsu demo',\n", + " 'suton ikinari sutoppu',\n", + " 'ittai doko made stone furafura',\n", + " 'futon no ha mitai ni',\n", + " 'yuu yuu to ochiteku',\n", + " 'itsu mademo strongna kokoro motterarenai',\n", + " 'ame ga fureba hitsuyou da ne sonna problem',\n", + " 'motto wakaritai yo ne subete zenbu shiritai',\n", + " 'shizukasugiru yoru wo',\n", + " 'when i',\n", + " 'mata kaaten wo shimeru tabi',\n", + " 'moon love tsuki nomae no kumo ni kakure',\n", + " 'i ga owaranai still w/z me itsumo',\n", + " 'motto motto nagaku sono kiss',\n", + " 'toozakaru nagai',\n", + " 'tomorrow now sugu soko ni',\n", + " 'mystery & wowo oshikake',\n", + " 'nemutteta un wo tsukaimakutte',\n", + " 'yarinokoshita sonna ni yo ne',\n", + " 'namida koraete irarenai',\n", + " 'namiuchi no jibun wo ukabe',\n", + " 'naitara make datte itteta yo ne',\n", + " 'asobi ga naoranai you da ne',\n", + " 'doko made meiwaku kaereba',\n", + " 'sou janai chigau sekai',\n", + " 'nodo kara nomikonde',\n", + " 'soko made kawarenai yo ne',\n", + " 'doko made karechimaeba ii no',\n", + " 'muri itte namida ga tomaru',\n", + " 'doko made nagareochiteku',\n", + " 'hana no sugu saki made ne',\n", + " 'tomadowazu me ga sameteku',\n", + " 'black silent wow wow',\n", + " 'black silent wow wow black on beat',\n", + " 'night edge tsume wo suberasete hiki-saku yoru ni wa koe mo iranai',\n", + " 'timeless kage ni furi-mukeba tsukareta kao no kodoku ga waratta',\n", + " 'maybe dare wo ura kireba tsunagari tsuzukete irareru no darou?',\n", + " 'don\\'t know shinjite \\'ta netsu wa \"ai\" to iu kotoba moeta maboroshi',\n", + " 'hanasaku mori wa bitoku no kuro ni',\n", + " 'black silent wow wow surudoku break in heart',\n", + " 'black silent wow wow hageshiku black on beat',\n", + " 'end of ... nakushita mono yori nakushisou na koto ni obieteta kara',\n", + " 'so long zetsubou no asu wo furi-harau tokei ni mi wo yudaneru',\n", + " 'sei naru mori wa fuhen no kuro ni',\n", + " 'black silent wow wow hisoka ni break in heart',\n", + " 'black silent wow wow kanashiku black on beat',\n", + " 'black silent wow wow',\n", + " 'black silent wow wow',\n", + " 'black silent wow wow surudoku break in heart',\n", + " 'black silent wow wow hageshiku black on beat',\n", + " 'black silent wow wow hisoka ni break in heart',\n", + " 'black silent wow wow kanashiku black on beat',\n", + " 'itsunomanika futari koi ni ochiteku seori- doori no story tv dake no story',\n", + " \"unzari shiteta n' datte hanasu kimi mae ni kokoro ga ugoku soshite me to me ga au\",\n", + " 'nani ka tagai no mune no naka saguriatte itsumo no kaze kyou no futari wo tsutsumu',\n", + " 'kaeri giwa kimi no kotoba wa \"ashita ne tte\" sono egao ga ore no kokoro wo',\n", + " 'kagayaki tsuzukeru hoshi no you',\n", + " 'hikari tsunagu kono saki e',\n", + " 'i need you always look for love',\n", + " 'i miss you anytime think of love',\n", + " 'itsunohinika kimi to futari yume mite sugisaru hibi sae nanika wo mitashite',\n", + " 'deau kimi no utsuroge na kao mae ni kokoro ga ugoku soshite kuchi wo hiraku',\n", + " 'shaberu kimi no kotoba hitotsu hitotsu tsutawatte kimagure fuku kaze kokoro wo sukasu',\n", + " 'kaeri giwa kimi no kotoba \"tomodachi de\" sono egao ni ore wa nido sui-komareteku',\n", + " 'omoi tsunoru kokoro wa itsu mademo',\n", + " 'iro asenai sora no you',\n", + " 'i need you always look for love',\n", + " 'i miss you anytime think of love',\n", + " 'hey, mr. mr.! kyou no choushi dou? toka icchatteru itatte normal na face',\n", + " 'kikeba koi bana hiru dora bari no story senchi na houkou',\n", + " 'hitori de iru yori raku ni raku ni ongaku tomo come with me, with me',\n", + " 'get down, get down you are the one, you are the \"one\"',\n", + " 'i need you always look for love',\n", + " 'i want you one love forever',\n", + " 'kagayaki tsuzukeru hoshi no you',\n", + " 'hikari tsunagu kono saki e',\n", + " 'i need you always look for love',\n", + " 'i miss you anytime think of love',\n", + " 'i need you always look for love',\n", + " 'i want you one love forever',\n", + " 'ittai nani wo shiteitanda zutto koko de miteitanda',\n", + " 'kyoukaisen no kochira gawa de kyoukaisen wo miteitanda',\n", + " 'ittai kimi wa donata desu ka ittai boku wa doitsu desu ka',\n", + " 'sousa bokura wa messiah jyanai dare mo suku e nai yo',\n", + " 'wakatteirunda...... wakatteitanda......',\n", + " 'kimi wa kami wo shinjimasu ka kami wa kimi wo suku imasu ka',\n", + " 'omoku nagumu wa tare komi soko ni taiyou wa nobora nai',\n", + " 'kimi wa ai wo shinjimasu ka boku ni nani wo motomemasu ka',\n", + " 'bokura nani ga dekiru darou ima kono toki ni',\n", + " 'wasurechyainai yo...... wasurechyainai yo......',\n", + " 'we can find a way we can find a way',\n", + " 'get over now! nori koero bokura wo hiki saku borderline',\n", + " 'oh oh oh oh fuki tobasunda',\n", + " 'come on now! mou ni do to nigiritta sono te hanasanai yo',\n", + " 'oh oh oh oh ima wa kanawanai yume demo itsuka atarashii sekai de',\n", + " 'kitto bokura wa tsukami toreru',\n", + " 'give you love! i give you my love',\n", + " 'yappari ima mo sekaijyu wa dare mo kare mo mukanshin de',\n", + " 'gasorin no tanka wo nageite yuuchoku ni calory ki ni shiteru',\n", + " 'boku ni chizu wa yaburetanda mou ni do to modosenai kamo ne',\n", + " 'ookuni wa haken wo arasoi matakuri kaesu',\n", + " 'wakatteiru hazu sa...... wakatteiru hazu sa......',\n", + " 'we can find a way we can find a way',\n", + " 'take it back! torimodo se bokura ga ageta risou wo',\n", + " 'oh oh oh oh tachiagarun da',\n", + " 'come on now saa isoge line wo koete hashiru no sa',\n", + " 'oh oh oh oh ima wa egakenai iro demo itsuka atarashii mirai de',\n", + " 'kitto kagayaki wo hanatsu darou',\n", + " 'give you love i give you my love',\n", + " 'check it out! hey bro keep going!',\n", + " '(aways) tsutaetai kono omoi (we gonna do that)',\n", + " \"kokoro kimi to tomo ni (dakara don't give up!)\",\n", + " 'keshite akiramenai de (get up! stand up! hey yo!)',\n", + " 'hashiri tsuzukero',\n", + " 'tell me a way where we go cross the borderline',\n", + " 'get over now! nori koero bokura wo hiki saku borderline',\n", + " 'oh oh oh oh fuki tobasunda',\n", + " 'come on now! mou ni do to nigiritta sono te hanasanai yo',\n", + " 'oh oh oh oh ima wa kanawanai yume demo itsuka atarashii sekai de',\n", + " 'kitto bokura wa tsukami toreru',\n", + " 'give you love! i give you my love',\n", + " 'koudai na sougen no mannaka',\n", + " 'nozoku sougankyou no kanatta',\n", + " 'zou no koushi o mi-okutte',\n", + " 'akashia no ki no shita de',\n", + " 'bokura no kyouri chikazuita',\n", + " 'daichi o kogasu taiyou ni',\n", + " 'futari mitsumeru sono saki de',\n", + " 'gazeru atsusou ni tobi hanete',\n", + " 'mujaki ni hasharu kimi no',\n", + " 'sono egao ni koi o shita',\n", + " \"everybody won't you take a ride\",\n", + " 'take a look inside',\n", + " \"it'll blow your mind\",\n", + " 'take a chance put it all aside',\n", + " \"when the nation's wide\",\n", + " \"you'd be starry-eyed\",\n", + " 'come and join me to take a ride',\n", + " 'to the country side',\n", + " \"we'll be side-by-side\",\n", + " 'step aside jekyll, mr. hyde',\n", + " 'you are now untied',\n", + " 'take a walk on the wild side',\n", + " 'miwatasu kagiri no chiheisen',\n", + " 'nozoku sougankyou no kanata',\n", + " 'shima-uma no mure no hakubyoku ni',\n", + " 'me o shiro kuro suru kimi no',\n", + " 'sono yokogao itoshii',\n", + " 'sodai de hiyoku na rakuen no',\n", + " 'futari mitsumeru sono saki ni',\n", + " 'yuuhi o se-otta kirin tachi',\n", + " 'akashia no ki no shita de',\n", + " 'boku wa kimi ni kisu o shita',\n", + " 'come and join me to take a ride',\n", + " 'to the country side',\n", + " \"we'll be side-by-side\",\n", + " 'step aside jekyll, mr. hyde',\n", + " 'you are now untied',\n", + " 'take a walk on the wild side',\n", + " 'ashi ato wo nokoshite',\n", + " 'sono akashi o shimesu raion',\n", + " 'chikara-dzuyoku ke-dakaku',\n", + " 'sonna fuu ni ikitai',\n", + " 'only you...',\n", + " 'only you...',\n", + " 'only you...',\n", + " 'only you...',\n", + " 'sou ano hi bokutachi wa futari deatta ne',\n", + " 'mada adokenasa ga nokotteta ano yokogao wasurenai',\n", + " 'hajimete atta hi kara kimochi wo ienai mamade',\n", + " 'sugoshite kita kedo kyou koso wa kono omoi todokeru yo',\n", + " 'kimi dake ni ( kiss kiss kiss) donna toki mo',\n", + " 'boku ga zutto kimi no soba ni iru yo',\n", + " '( kiss kiss kiss) kimi dake wo',\n", + " 'kore kara mo mitsumete itai',\n", + " 'i wanna feel you motto',\n", + " 'subete no ai wo komete kiss okuru yo',\n", + " 'mujaki ni warau kimi no',\n", + " 'koe wa itsu no hi mo boku wo',\n", + " 'terashite kureteru',\n", + " 'kimi ga iru kara boku mo waraerunda',\n", + " 'kimi dake ni ( kiss kiss kiss) donna toki mo',\n", + " 'boku wa kimi wo mamori tsutdzukeru yo',\n", + " '( kiss kiss kiss) kimi dake wo',\n", + " 'itsumademo dakishimete itai',\n", + " 'i wanna feel you motto',\n", + " 'subete no ai wo komete kiss okuru yo',\n", + " 'i just want you',\n", + " 'kimi ga ireba hoka ni nani mo iranai',\n", + " 'i just need you',\n", + " 'kimi no zenbu i love you',\n", + " 'always kimi no tonari ni boku ga iru yo',\n", + " 'always boku no tonari ni kimi ga iru yo',\n", + " 'ikura kagaitemo atama no naka wa kimi dake de muchuu no boku wo',\n", + " 'tomerarenai boku no subete wo kagetekitai',\n", + " 'kimi no soba ni',\n", + " 'kimi dake ni ( kiss kiss kiss) donna toki mo ( kimi',\n", + " 'dake ni~ whoa~)',\n", + " 'boku ga zutto kimi no soba ni iru yo ( kimi no soba ni oh~)',\n", + " '( kiss kiss kiss) kimi dake wo ( uh yeah~)',\n", + " 'kore kara mo mitsumete itai ( oh no~)',\n", + " 'i wanna feel you motto',\n", + " 'subete no ai wo komete kiss okuru yo (komete kiss okuru yo~)',\n", + " 'kiss kiss kiss donna toki mo',\n", + " 'donna toki mo baby~',\n", + " 'kiss kiss kiss kimi dake wo ( wow~)',\n", + " 'i wanna feel you motto',\n", + " 'subete no ai wo komete kiss okuru yo',\n", + " 'tsu datte aide sukuwa re ta jijitsu o hito wa wasure rare nainda',\n", + " 'spiral galaxy yo outou seyo',\n", + " 'hito wa kako o ikiru mono de wa naku',\n", + " 'sugosu jikan ga mijikaku tomo',\n", + " 'gyoushuku no toki no naka manabu beki koto mo arou',\n", + " 'peace & love kitto need',\n", + " 'kieru kokorozashi kou ubau twilight',\n", + " 'tachikire nu kizuna ore wa tsuyoku',\n", + " 'mata tsuyoku furuitata shi genkai he',\n", + " 'wo',\n", + " 'boku ni nokosa re ta suu juu nen',\n", + " 'mogai te nai te iki ta kurai de',\n", + " 'kawari wa shi nai darou',\n", + " \"wo it's too late\",\n", + " 'shinshoku sare ta dai tokai de',\n", + " 'chinbotsu nante atarimae de',\n", + " 'soredemo boku wa zutto ai wo utau n da',\n", + " 'zetsubou no jidai de wakatteru n da yo',\n", + " 'ai dake jya sekai wa sukue nai koto mo',\n", + " 'sou demo',\n", + " 'ai de sukuwa re ta jijitsu o hito wa wasure rare nai n da',\n", + " 'ikidoori no ishi kanbatsu shi ta gankyuu ga',\n", + " 'kakaekon da keshiki wa monokuro de fukanzen na',\n", + " 'kodoku ga taion o ubatta boku wa mimi wo fusagi',\n", + " 'ari mo shi nai kibou no melody sagasu',\n", + " 'itsu datte',\n", + " 'zetsubou no jidai de wakatteru n da yo',\n", + " 'uta jya sekai wa sukue nai koto mo',\n", + " 'sou demo',\n", + " 'kawatte ku negai wo utau yo',\n", + " 'boku dake demo me wa fuse nai',\n", + " 'justice',\n", + " 'clap your hands everybody',\n", + " 'ikiru reason sagashi motome babibusu',\n", + " 'yo close my eyes',\n", + " 'burete kairo panku suru vent blast',\n", + " 'bang! bang! bang! bang!',\n", + " 'just keep the light light',\n", + " 'ikiru light',\n", + " 'heavenly push push push',\n", + " 'kazase fuck',\n", + " 'negau truth truth truth',\n", + " 'all men are created equal',\n", + " 'nee?',\n", + " 'futoumei bakari wakara nai n da yo',\n", + " 'nani ga hito no ai no katachi na no?',\n", + " 'fusagu boku tachi ga iru yo',\n", + " 'majiwaru koto no nai kokoro',\n", + " 'nan hen mo tsutaeyo you to...',\n", + " 'kimi ga nageku yoru mo',\n", + " 'nigedashi taku naru hi mo aru daro',\n", + " 'for your life',\n", + " 'saigo no yoru o utau yo',\n", + " 'arittake no koe o komeru yo',\n", + " 'mou issai no ketsuraku no',\n", + " 'taiyou o nakushita asu sae',\n", + " 'ai no katachi ni kiduke naku te mo',\n", + " 'tsunage awase teku kokoro',\n", + " 'senaka no aita doresu koborete shimai-sōna iyaringu',\n", + " 'midareta kami hito suji mo nai',\n", + " 'odoketa torimaki-tachi watashi ga warawanai no o',\n", + " 'fushigina me o shite mite iru wa',\n", + " 'dress down hayaku mitsukete yo',\n", + " \"son'na ko ni kamatte tsumaranai hazuda wa\",\n", + " 'dress down-iki ga tomaru hodo mitsume raretakutte',\n", + " 'please tell me, tell me why',\n", + " 'dress down wazato kaki ageru',\n", + " 'kami no kaori sae mo hakara reta yūwaku',\n", + " 'dress down anata ga watashi ni muchūninaru mae ni',\n", + " \"i' m melting, melting, melting, melting you\",\n", + " 'dress down wazato kaki ageru',\n", + " 'kami no kaori sae mo hakara reta yūwaku',\n", + " 'dress down wazato hamidashita kuchibeni no maryoku de',\n", + " \"i' m waiting, waiting for you\",\n", + " 'dress down anata ga watashi ni',\n", + " 'muchūninaru mae ni',\n", + " \"i' m melting, melting, melting, melting you\",\n", + " 'haibisukasu no hana ga oka no ue ni saku koro',\n", + " 'tsuyoi kaze ni fukarete tatazundeiru',\n", + " 'kaori tadayottta fushigina shima ni',\n", + " 'genwaku no yorokobi afureteru yo',\n", + " 'emerarudo ga nagareta umi no ue ni hirogatte',\n", + " 'kimi no hosoi suashi mo nami wo kanjiru',\n", + " 'suijou koteeji mawaritsuzukeru',\n", + " 'ganka ni wa nettaigyo no kaaten',\n", + " 'what a marvelous sea i am in!',\n", + " 'hoshi no suna sawagu kimi no shiruetto',\n", + " 'we are too young to fall asleep',\n", + " 'suroo mooshon ni you yo',\n", + " '* sekidou no neiro ni kogasare',\n", + " 'kataku nani ikiru aoi toritachi yo',\n", + " 'oozora ni habataite',\n", + " 'bonnou no hana wo kubi ni sage',\n", + " 'kataku dakiyoseta hosoi sono kata wa',\n", + " 'komugiiro ni tokete hold on',\n", + " 'what a marvelous sea i am in!',\n", + " 'bitamin busoku no shiroi makigai to',\n", + " 'we are too young to fall asleep',\n", + " 'san setto ni terasarete',\n", + " '* repeat',\n", + " 'fukai kono umi e futari no namida wo hisoka ni nagasou',\n", + " 'nanimo kowaku nante nai sa',\n", + " 'te ni shita mono wo ushinau kurai',\n", + " 'arasoi wo matsu koto wo kurikaeshite',\n", + " 'kasumete',\n", + " 'nanimo kamo wo hoshigatte ita',\n", + " 'mayoeru mono no chikai',\n", + " 'mada minu sekai o tsukuridasu koto wo',\n", + " 'kuchihatete iku',\n", + " 'kanashii yume wo saegiru mono wa',\n", + " 'mizukara no yami datte',\n", + " 'if it makes your time stand still',\n", + " \"you'll know what it means\",\n", + " 'why would you want to?',\n", + " 'makes me feel doko kara ka',\n", + " 'nagareru keshiki kawaranaku natte',\n", + " 'oto mo naku tokihanatsu away',\n", + " 'osoretachikiri itsu kara ka',\n", + " 'takanaru kodou tomaranaku natte',\n", + " 'yasashiku mo keshisatte away',\n", + " 'wakariaeru koto',\n", + " 'nozonderu no?',\n", + " 'mata motometeru naze ubau no',\n", + " 'donna ashita datte kawaru hazu',\n", + " 'ima wo ikinuku koto de',\n", + " 'mawaru haguruma wo omoikiri',\n", + " 'hirogaru yami wo uchikesu mono wa',\n", + " 'mizukara no yume datte',\n", + " 'if it makes your time stand still',\n", + " \"you'll know that it's time\",\n", + " \"and i don't want to\",\n", + " 'makes me feel doko kara ka',\n", + " 'nagareru keshiki kawaranaku natte',\n", + " 'oto mo naku tokihanatsu away',\n", + " \"(i'm flying away)\",\n", + " 'osoretachikiri itsu kara ka',\n", + " 'takanaru kodou tomaranaku natte',\n", + " 'yasashiku mo keshisatte',\n", + " \"(i don't know where i'll go\",\n", + " \"but i'll make it worth my time)\",\n", + " 'whoa, whoa, whoa',\n", + " 'whoa, whoa, whoa',\n", + " 'makes me feel doko kara ka',\n", + " 'nagareru keshiki kawaranaku natte',\n", + " 'oto mo naku tokihanatsu away',\n", + " \"(i'm flying away)\",\n", + " 'osoretachikiri itsu kara ka',\n", + " 'takanaru kodou tomaranaku natte',\n", + " 'yasashiku mo keshisatte',\n", + " \"(i don't know where i'll go\",\n", + " \"but i'll make it worth my time)\",\n", + " 'cete ce lane ce mima layaya',\n", + " 'cete ce lane ce mima layaya',\n", + " 'cete ce lane ce mima layaya',\n", + " 'sarambé',\n", + " 'cete ce lane ce mima layaya',\n", + " 'cete ce lane ce mima layaya',\n", + " 'cete ce lane ce mima layaya',\n", + " 'sarambé',\n", + " 'xanaharí, xanaharí',\n", + " 'sarambé',\n", + " 'xanaharí, xanaharí',\n", + " 'sarambé',\n", + " 'brilla la vida en tu risa encendida',\n", + " 'sarambé',\n", + " 'brilla la vida en tu risa encendida',\n", + " 'sarambé',\n", + " 'sarambé, sarambé',\n", + " 'sarambé, sarambé',\n", + " 'cete ce lane ce mima layaya',\n", + " 'cete ce lane ce mima layaya',\n", + " 'cete ce lane ce mima layaya',\n", + " 'sarambé',\n", + " 'cete ce lane ce mima layaya',\n", + " 'cete ce lane ce mima layaya',\n", + " 'cete ce lane ce mima layaya',\n", + " 'sarambé',\n", + " 'xanaharí xanaharí',\n", + " 'sarambé',\n", + " 'xanaharí xanaharí',\n", + " 'sarambé',\n", + " 'brilla la vida en tu risa encendida',\n", + " 'sarambé',\n", + " 'brilla la vida en tu risa encendida',\n", + " 'sarambé',\n", + " 'xanaharí, xanaharí',\n", + " 'sarambé',\n", + " 'xanaharí, xanaharí',\n", + " 'sarambé',\n", + " 'xanaharí, xanaharí',\n", + " 'sarambé',\n", + " 'xanaharí, xanaharí',\n", + " 'sarambé',\n", + " 'xanaharí, xanaharí',\n", + " 'sarambé',\n", + " 'sarambé, sarambé',\n", + " 'sarambé, sarambé',\n", + " ...]},\n", + " 'rock': {'meta': {'train_data': ['kono yo ni sei wo kizutatta mono',\n", + " 'kono yo de ikitaeteiita mono',\n", + " 'futatsu wa hitotsu sa',\n", + " 'anata wa hikari to natta no?',\n", + " 'anata no hikari wo abiteiru no?',\n", + " 'kurikaesareru dekigoto no naka no hitotsu to omou ni wa',\n", + " 'madamada jikan ga kakari sou',\n", + " 'sonna ruuru bukku (rule book) no ue de bokura wa ikiteru kara',\n", + " 'donna kanashimi ni mo namida wo nagasunda ne',\n", + " \"we all knew that you'd be nowhere when we are born\",\n", + " 'how can we see your face elsewhere? now we are torn',\n", + " 'you will be waiting for us there?',\n", + " 'anata ga shirushita michishirube',\n", + " 'goishi wa boku ga hirotte aruku no!',\n", + " 'kurikaesareru dekigoto no naka no hitotsu to omou ni wa',\n", + " 'madamada jikan ga kakari sou',\n", + " 'sonna ruuru bukku (rule book) no ue de bokura wa ikiteru kara',\n", + " 'tsumaranai koto ya tanoshii koto ga hitsuzen ni mieru toki ga aru',\n", + " 'sayonara wa iwanai yo',\n", + " 'chikaku ni iru to shinjiteiru kara',\n", + " 'asa no hikari mabushikute',\n", + " 'weigh anchor!',\n", + " 'kotoba mo nakute',\n", + " 'tada nami no oto kiiteta',\n", + " 'kioku no imi tamesareteiru mitai ni',\n", + " 'yami no naka demo omoidasu',\n", + " 'mae ni susumu no',\n", + " 'miteite yo',\n", + " \"so repeatedly, we won't regret to them\",\n", + " 'sonna fuu nimo kangaeteta no',\n", + " 'akogare batsubyou mirai',\n", + " 'zetsubou soushitsu betsuri',\n", + " 'ikutsumono kanashimi to umi o koe',\n", + " 'tatoe------',\n", + " 'sekai no subete ga miiro ni toketemo kitto',\n", + " 'anata no koe ga suru',\n", + " 'daijoubu kaerou tte',\n", + " 'demo',\n", + " 'sekai ga subete hanten shiteiru no nara',\n", + " 'soredemo anata to massugu ni mae o mitete',\n", + " 'ima negai kometa ichigeki hazeta',\n", + " 'she was splendid like our flagship',\n", + " \"but it's all in the past\",\n", + " 'she never gave up hope even till the end',\n", + " 'only the sea knows dakara',\n", + " 'nuritsubusaretemo wasurenai',\n", + " 'kojiakeru no',\n", + " 'miteite yo',\n", + " \"so foolish, don't repeat the tragedy\",\n", + " 'sonna kotoba ni sugari wa shinai',\n", + " 'kirameki aozora kibou',\n", + " 'haiboku minazoko nemuri',\n", + " 'ikutsumono namida no umi o koe',\n", + " 'tatoe------',\n", + " 'watashi no subete ga kako ni kietemo zutto',\n", + " 'kitto tomo ni aru tte',\n", + " 'itsu no hi ka kawareru tte',\n", + " 'demo',\n", + " 'watashi ga subete maboroshi da to shitara sou',\n", + " 'soredemo anata to',\n", + " 'kiseki no you kono toki ni',\n", + " 'ima inori kometa ichigeki hibike',\n", + " 'sekai no subete ga miiro ni kietemo',\n", + " 'anata o wasurenai',\n", + " 'sekai no subete ga miiro ni toketemo',\n", + " 'watashi wa sagashidasu',\n", + " 'daijoubu kaerou tte ittemo',\n", + " 'sekai no subete ga miiro ni kietemo',\n", + " 'anata o wasurenai',\n", + " 'sekai no subete ga miiro ni toketemo',\n", + " 'watashi ga sagashidasu',\n", + " 'daijoubu kaerou tte demo',\n", + " 'daijoubu kawareru tte ima',\n", + " 'susumu no yo yareru tte mada',\n", + " 'zenbu uso kore de owari chigau!',\n", + " 'ima------',\n", + " 'watashi no subete ga miiro ni toketemo',\n", + " 'fukami e ochiteyuku',\n", + " 'soshite',\n", + " 'kioku no subete ga miiro ni natte',\n", + " 'hikari ni kieteyuku',\n", + " 'tatoe------',\n", + " 'sekai no subete ga miiro ni toketemo kitto',\n", + " 'anata no koe ga suru',\n", + " 'daijoubu kaerou tte',\n", + " 'demo',\n", + " 'taisetsu na anata ga umaretekuru nara sou',\n", + " 'watashi wa arukidaseru',\n", + " 'saigo ni ne kono negai',\n", + " 'ima norikoe mirai eto weigh anchor!',\n", + " 'romaji',\n", + " 'nanigenai hibi just the same old thing',\n", + " 'nani ga kakete tarinai ka',\n", + " 'kidzukanai furishite temo i can’t run away from myself',\n", + " 'i tried to show you i’m strong',\n", + " 'just a kid all long umaku amaetai kimochi ga',\n", + " 'hetakusona tsuyogari ni shika narazu',\n", + " 'the shape of love is the same as your heart is',\n", + " 'it doesn’t matter who you are',\n", + " 'so tell me my heart is the same as yours is',\n", + " 'sarigenaku morau sono aijou wa totemo fukakai de',\n", + " 'sunao ni wa ukeirerare',\n", + " 'nani ka wo mada tozashita mama',\n", + " 'no matter how much you say i can’t escape',\n", + " 'ima nani ka wo kaete koto de',\n", + " 'kono saki ni hirogaru nani ka wo kaeru',\n", + " 'the shape of love is the same as your heart is',\n", + " 'it doesn’t matter who you are',\n", + " 'so tell me my heart is the same as yours is',\n", + " 'tatoe hakanakutomo',\n", + " 'kanashii toki sabishii toki itsumo soba ni aru kara',\n", + " 'and we hold every moment cos that’s what family is for',\n", + " 'kakegae no nai mono wo suteru yuuki nante',\n", + " 'boku ni wa kore bocchi wo mochiawase te wa nai kedo',\n", + " 'tokidoki naze ka tebanashite komara setai toki ga aru',\n", + " 'hinekureta kawai-ge no nai boku',\n", + " 'the shape of love is the same as your heart is',\n", + " 'it doesn’t matter who you are',\n", + " 'so tell me my heart is the same as yours is',\n", + " 'tatoe hakanakutomo',\n", + " 'kanashii toki sabishii toki itsumo soba ni aru kara',\n", + " 'and we hold every moment cos that’s what family is for',\n", + " 'gone too far for so long',\n", + " 'got to find you’ve been right here all along',\n", + " 'i wanna take you away from here',\n", + " 'kono sekaijuu de nani ga arou to',\n", + " 'boku wo aishite kurete',\n", + " 'itsudemo sotto yasashiku sotto',\n", + " 'mimamori tsudzuketeru',\n", + " 'tsuyoku yowaku toki ni kibishiku',\n", + " 'atatakana nukumori',\n", + " 'and we hold every moment cos that’s what family is for',\n", + " 'the shape of love is the same as your heart is',\n", + " 'and tell me my heart is the same as yours is',\n", + " 'the shape of love is the same as your heart is',\n", + " 'and tell me my heart is the same as yours is',\n", + " 'kanji',\n", + " '何気ない日々just the same old thing',\n", + " '何が欠けて足りないか',\n", + " \"気づかない 振りしててもi can't run away from myself\",\n", + " \"i tried to show you i'm strong\",\n", + " 'just a kid all along うまく甘えたい気持ちが',\n", + " 'はたくそんな强がりにしか必ず',\n", + " 'the shape of love is the same as your heart is',\n", + " \"it doesn't matter who you are\",\n", + " 'so tell me my heart is the same as yours is',\n", + " 'さりげなくもらうその愛情はとてもふかかいで',\n", + " '素直には受け入れられ',\n", + " '何かをまだ閉ざしたまま',\n", + " \"no matter how much you say i can't escape\",\n", + " '今何かを変えてことで',\n", + " 'この先に広がる何かを変える',\n", + " 'the shape of love is the same as your heart is',\n", + " \"it doesn't matter who you are\",\n", + " 'so tell me my heart is the same as yours is',\n", + " 'たとえ儚くとも',\n", + " '悲しい時寂しい時、いつもそばにあるから',\n", + " \"and we hold every moment cause that's what family is for\",\n", + " 'かけがえのないものを捨てる勇気なんて',\n", + " '僕にはこれこっちを持ち合わせてはないけど',\n", + " '時々なぜか手放して困らせたい時がある',\n", + " '今くれた怖いでのない僕',\n", + " 'the shape of love is the same as your heart is',\n", + " \"it doesn't matter who you are\",\n", + " 'so tell me my heart is the same as yours is',\n", + " 'たとえ儚くとも',\n", + " '悲しい時寂しい時、いつもそばにあるから',\n", + " \"and we hold every moment cause that's what family is for\",\n", + " 'gone too far for so long',\n", + " \"got to find you've been right here all along\",\n", + " 'i wanna take you away from here',\n", + " 'この世界中で何があると',\n", + " '僕を愛してくれて',\n", + " 'いつでもそっと優しくそっと',\n", + " '見守り続けてる',\n", + " '強くく弱く時に厳しく',\n", + " '暖かな温もり',\n", + " \"and we hold every moment cause that's what family is for\",\n", + " 'the shape of love is the same as your heart is',\n", + " 'and tell me my heart is the same as yours is',\n", + " 'the shape of love is the same as your heart is',\n", + " 'and tell me my heart is the same as yours is',\n", + " 'umareta toki kara',\n", + " 'kagayaku bakari no (health angel)',\n", + " 'nomikome nomikome',\n", + " 'kyoyōryō made (health angel)',\n", + " 'ato kara ato kara umaretekuruyo',\n", + " 'ato kara ato kara umaretekuruyo',\n", + " 'umareta toki kara',\n", + " 'onaka ippai (health angel)',\n", + " 'tabemono no hō kara',\n", + " 'oikaketekuruyo (health angel)',\n", + " 'ato kara ato kara oikaketekuruyo',\n", + " 'ato kara ato kara oikaketekuruyo',\n", + " 'shinkaron no iki shōnin sa',\n", + " 'ikimono no naka de ichika kirei sa',\n", + " 'ju shibōbun nipaa sen tono',\n", + " 'doraimiruku de tune up sareru',\n", + " 'health angel health angel',\n", + " 'health angel tune up angel',\n", + " 'health angel health angel',\n", + " 'hеalth angel tune up angel',\n", + " 'umarеta toki kara',\n", + " 'eiyō katashō (health angel)',\n", + " 'koresuterōru ga',\n", + " 'atama ni tamaruyo (health angel)',\n", + " 'ato kara ato kara tamattekuruyo',\n", + " 'ato kara ato kara tamattekuruyo',\n", + " 'umareta toki kara',\n", + " 'tabetsuzuketekita (health angel)',\n", + " 'yaku ni mo tatanai',\n", + " 'tabemono matomete (health angel)',\n", + " 'hakidase hakidase ikara chō made',\n", + " 'omae sokkuri ura kaeru made',\n", + " 'hakidase hakidase ikara chō made',\n", + " 'omae sokkuri ura kaeru made',\n", + " 'todome wo sashite mo iin daze',\n", + " 'ore no mae kara kieusero',\n", + " '(get away from me now)',\n", + " 'kazari darake no kotoba de',\n", + " 'ore wo ayatsuru tsumori nara',\n", + " \"you can't control me oh! you are wrong\",\n", + " 'omae no kao wo miteru dake de',\n", + " 'ira ira hakike ga suruze',\n", + " '(get out of my face)',\n", + " 'ato ni mo saki ni mo hikenai',\n", + " 'itsumo urotaeru dake no ikeru shikabane',\n", + " 'shake off! shinobiyoru invitation',\n", + " 'break up! kobiuru imitation',\n", + " 'dhake off! ikasama illumination',\n", + " 'break up! ikareta imagination',\n", + " 'hitori yogari no poker face man',\n", + " 'omote to ura no hazama de',\n", + " 'ganjigarame ni shibararete',\n", + " 'miushinai kaketa yume no kakera',\n", + " 'sagashimotomete samayoi tsuzukeru',\n", + " '(easy fight) (easy fight)',\n", + " 'keep on easy rambling!',\n", + " '(easy fight) (easy fight)',\n", + " 'rambling in and out!',\n", + " 'shake off! shinobiyoru invitation',\n", + " 'break up! kobiuru imitation',\n", + " 'dhake off! ikasama illumination',\n", + " 'break up! ikareta imagination',\n", + " 'hitori yogari no poker face man',\n", + " 'omote to ura no hazama de',\n", + " 'ganjigarame ni shibararete',\n", + " 'maru de pierrot sa painted face man',\n", + " 'hibi wareta kagami no naka',\n", + " 'glass no kokoro wo utsushidasu',\n", + " 'tooku hateshinai yuutsu no stairway',\n", + " 'nukedasu sube mo shiranu mama',\n", + " 'miushinai kaketa yume no kakera',\n", + " 'sagashimotomete samayoi tsuzukeru',\n", + " '(easy fight) (easy fight)',\n", + " 'keep on easy rambling!',\n", + " '(easy fight) (easy fight)',\n", + " 'rambling in and out!',\n", + " 'all by myself',\n", + " 'all by myself',\n", + " 'all by myself',\n", + " 'aruki tsukareta yoru ni tatazumu',\n", + " 'nagareru namida o kioku ni kasanete',\n", + " 'deai no kazu dake wakare wa arukedo',\n", + " 'kagirinai toki ga tuduku to shinjiteta',\n", + " 'kizutsuke atta kotoba sae ima ha dakishime',\n", + " 'furikaerudake',\n", + " 'i feel alone',\n", + " 'how should i love you',\n", + " 'how could i feel you',\n", + " 'without you??',\n", + " 'kazoekire nai omoide ga jikan o umetsukusu',\n", + " 'anata o ashite anata ni kizusuite',\n", + " 'ai to iu kotoba no fukasa ni kizuita',\n", + " 'i still remember',\n", + " 'kotate no nai ashita ni yume o motomete ita hibi o',\n", + " 'kagirinaku hirogaru sora ni mou ichido umareta imi ima o ikiru imi o toikakete',\n", + " 'how should i love you',\n", + " 'how could i feel you',\n", + " 'without you..',\n", + " 'owari no nai ai no uta o ima anata ni',\n", + " 'nantonaku no bigaku de ikite kita jinsei',\n", + " 'sore wa so to shite, kimi wa ittai doko ni mukatte iru no ka ne?',\n", + " 'genjitsu to riso no tenbin wa itsu datte fuanteide',\n", + " 'soredemo kowarete iku sekai ni tadade wa nomikoma remai to mogaite',\n", + " 'give it to me, give it to me, nothing but',\n", + " 'give it to me, give it to me, nothing but',\n", + " 'shinjinai mono wa shinjinakute, kanjiruga mama ni ikireba itte',\n", + " 'give it to me, give it to me, nothing but',\n", + " 'give it to me, give it to me, nothing but',\n", + " 'nando datte tachiagatte ikitsuku toko made',\n", + " 'nothing changes my way',\n", + " 'just on my way',\n", + " 'nothing changes my fate',\n", + " \"nothing's gonna change\",\n", + " \"nothing's gonna change on my\",\n", + " 'nani mo kan mo subete o hoshi gatte',\n", + " 'sore wa yoshi to shite, boku wa ittai nani ga hoshikatta no ka ne?',\n", + " 'shinjitsu to kyozo no kyokai wa itsu datte fusenmeide',\n", + " 'sore demo yattekuru ashita ni kotae no mitsukaranu toi o daite',\n", + " 'give it to me, give it to me, nothing but',\n", + " 'give it to me, give it to me, nothing but',\n", + " 'nothing changes my way',\n", + " 'just on my way',\n", + " 'nothing changes my fate',\n", + " \"nothing's gonna change\",\n", + " \"nothing's gonna change on my way\",\n", + " 'just on my way',\n", + " 'nothing changes my fate',\n", + " \"nothing's gonna change\",\n", + " \"nothing's gonna change on my\",\n", + " 'give it to me, give it to me, nothing but',\n", + " 'give it to me, give it to me, nothing but',\n", + " 'give it to me, give it to me, nothing but',\n", + " 'give it to me, give it to me, nothing but',\n", + " 'nothing changes my way',\n", + " 'just on my way',\n", + " 'nothing changes my fate',\n", + " \"nothing's gonna change\",\n", + " \"nothing's gonna change on my way\",\n", + " 'just on my way',\n", + " 'nothing changes my fate',\n", + " \"nothing's gonna change\",\n", + " \"nothing's gonna change on my way\",\n", + " \"nothing's gonna change\",\n", + " \"nothing's gonna change on my way\",\n", + " 'nemurenu yoru wo ikutsu kazuetara ore-tachi tadoritsuku darou',\n", + " 'dore dake no inochi nakushita toki arasoi wa owaru no darou',\n", + " 'rekishi no ue wo korogaru dake no sukuenai doukeshi-tachi',\n", + " 'itsuka dareka ga itte ta you ni',\n", + " 'kotae wa kaze no naka',\n", + " 'somuketa kao wo ikutsu utaretara kizukanu furi yameru no ka',\n", + " 'dore hodo no kurushimi ni taetara egao wa jiyuu ni naru no ka',\n", + " 'sabita kusari ni tsungareta mama mata shippo wo maku no nara',\n", + " 'itsuka dareka ga itte ta you ni',\n", + " 'kotae wa kaze no naka',\n", + " 'furishiboru koe to nigirishimeru sono te de',\n", + " 'unmei wa kitto kawaru toki wo matte iru',\n", + " 'chippoke-na ai no sasayaka-na chikara de',\n", + " 'kanashimi wa itsumo dakareru no wo matte iru',\n", + " 'uso no pazuru wo narabekaeteru aware-na petenshi-tachi',\n", + " 'fukiyousa wo kiyou ni furumau oroka-na romanchisuto-tachi',\n", + " 'rekishi ga nanimo kataranaku naru sonna hi ga kuru yokan ni',\n", + " 'itsuka dareka ga itte ta you in',\n", + " 'kotae wa kaze no naka',\n", + " 'furishiboru koe to nigirishimeru sono te de',\n", + " 'unmei wa kitto kawaru toki wo matte iru',\n", + " 'chippoke-na ai no sasayaka-na chikara de',\n", + " 'kanashimi wa itsumo dakareru no wo matte iru',\n", + " 'noboru koto dake ni toraware',\n", + " 'sugita keshiki ga kirete ikō to',\n", + " 'kobihetsurai no ura ni kakure te o kaeshi',\n", + " 'mamoru takara e no izon ni chizu o sute',\n", + " 'noise of rain ashiato wa naite ita',\n", + " 'the end of all lies',\n", + " 'face to face with a horrid truth',\n", + " 'garakuta no kage de taoreru sekai',\n", + " \"we can't stop we won't drop\",\n", + " 'no more smiles you fake thus',\n", + " 'rei ji o tōru hari ga',\n", + " 'yozora no mukō o sasu',\n", + " 'outragers drive me nuts!',\n", + " 'outragers. drive me nuts now!',\n", + " 'outragers drive me nuts!',\n", + " 'the raging howl of underdogs',\n", + " 'outragers drive me nuts!',\n", + " 'outragers drive me nuts now!',\n", + " 'oulragers drive me nuts!',\n", + " 'rebel song of underdogs',\n", + " 'yami o yubisashiyokogitte mo',\n", + " 'kutsu wa kizukazuyogorete iku',\n", + " 'togireta kioku o gomakasu yō ni',\n", + " 'uso o kazari jibun o aishite',\n", + " 'noise of rain kodō wa doko e',\n", + " 'the end of all lies',\n", + " 'face to face with a horrid truth',\n", + " 'megami sae mo jiyū o nagesuteru sekai',\n", + " \"we can't stop we won't drop\",\n", + " 'no more smiles you fake thus',\n", + " 'rei ji o tōru hari ga',\n", + " 'taiyō no mukō o sasu',\n", + " 'outragers drive me nuts!',\n", + " 'outragers. drive me nuts now!',\n", + " 'outragers drive me nuts!',\n", + " 'the raging howl of underdogs',\n", + " 'outragers drive me nuts!',\n", + " 'outragers drive me nuts now!',\n", + " 'oulragers drive me nuts!',\n", + " 'rebel song of underdogs',\n", + " 'the end of all lies',\n", + " 'face to face with a horrid truth',\n", + " 'garakuta no kage de taoreru sekai',\n", + " \"we can't stop we won't drop\",\n", + " 'no more smiles you fake thus',\n", + " 'rei ji o tōru hari ga',\n", + " 'yozora no mukō o sasu',\n", + " 'outragers drive me nuts!',\n", + " 'outragers. drive me nuts now!',\n", + " 'outragers drive me nuts!',\n", + " 'the raging howl of underdogs',\n", + " 'outragers drive me nuts!',\n", + " 'outragers drive me nuts now!',\n", + " 'oulragers drive me nuts!',\n", + " 'rebel song of underdogs',\n", + " 'itsumo no you mo ni',\n", + " 'aruku machi nami yuugure',\n", + " 'no setsuna ni tokete',\n", + " 'haru no kuuki sukoshi tsumetakute',\n", + " 'dokoka natsukashii ki ga shita',\n", + " 'sasayaku you ni yasashii kaze',\n", + " 'mimimoto de boku no na wo yonda',\n", + " 'mayou koto mo naku michibikarete',\n", + " 'tadoritsuita kono basho',\n", + " 'yomigaeru kimi no koe tsumoru yuki futatsu no yume',\n", + " 'kisetsu wo meguri mata saita hana',\n", + " 'remember, my friend',\n", + " 'ima mo kawaranai mono',\n", + " 'ano hi bokura wa koko de te wo futta',\n", + " 'remember, myself',\n", + " 'ima mo wasurenai mono',\n", + " 'hanaretete mo kono hakanai omoi ga todoku you ni utau yo',\n", + " 'warau tabi ni shiroi toiki',\n", + " 'yoru wo somete sotto kiete',\n", + " 'nagareboshi wo minogasanai you',\n", + " 'ima me wo hanasanaide, to',\n", + " 'kotoba ni wa dekinai yume ni michita sono yokogao',\n", + " \"kiseki wo sagashi nani wo negau'n darou\",\n", + " 'remember, my friend',\n", + " 'ima mo kawaranai mono',\n", + " 'ano hi bokura wa koko de te wo futta',\n", + " 'remember, myself',\n", + " 'ima mo wasurenai mono',\n", + " 'hanaretete mo kono hakanai omoi ga todoku you ni utau yo',\n", + " 'みな ほんとに ありがとう!',\n", + " 'i love you! i love you! i love you! i love you! i love you!',\n", + " '本当にありがとうございました!',\n", + " 'jaya râdha-mâdhava kuñja-bihârî',\n", + " 'gopî-jana-vallabha, giri-vara-dhârî',\n", + " 'yas’odâ-nandana braja-jana-rañjana',\n", + " 'yâmuna-tîra-vana-cârî',\n", + " 'all the glories to râdhâ and mâdhava’s divine pastimes',\n", + " 'the lord of the gopis lifted the govardhan hill',\n", + " 'dear to yasoda, loved in vrindâvana',\n", + " 'at the yamunâ, he wanders in the woods',\n", + " 'please give the power to me now',\n", + " 'please give the power to me now',\n", + " 'please give the power to me now',\n", + " 'asu no hi wo mamoru tame',\n", + " 'please give the power to me now',\n", + " 'please give the power to me now',\n", + " 'please give the power to me now',\n", + " 'kagirareta toki no tame',\n", + " 'sora ni kazashita chikai wa kimi to tomo ni',\n", + " 'kagayaku',\n", + " 'one ok rock - どっぺるゲンガ',\n", + " 'romaji',\n", + " 'nanika ni michibikareru ka no you ni dete iku boku no kage',\n", + " 'tsunagareteta kusari mo ima ja nan no imi mo nasarenai',\n", + " 'tsumetaku ashiratta seika... sore tomo tada tanjun ni',\n", + " 'boku toiu ningen ni akita no ka?',\n", + " 'wakari wa shinai kedo...',\n", + " 'moshi hikari ga sashitemo',\n", + " 'nuke kara no',\n", + " 'boku ga tadatada iru dake',\n", + " 'i wanna be wanna be',\n", + " 'nigedashita kuroi boku ni dou yatte?',\n", + " \"i'm tryin' i'm tryin'\",\n", + " \"michisuu na ryouiki o guruguru mawan' no sa\",\n", + " 'sono boku ga boku ni kaeru shunkan wa',\n", + " \"it's just time!\",\n", + " \"now i'm here, now i stand, when i'm playing on my stage\",\n", + " 'jouhou ya rieki, jibun no tsugou to issho ni tsukerareta',\n", + " 'boku no sumu karada wa mou henshoku shite kusaru ippotemae',\n", + " 'jojo ni mushibande tokasu soitsura wa',\n", + " 'atakamo hajime kara kimi no naka ni imashita',\n", + " \"mitai na kao de sono ba o yari sugosu n'daro?\",\n", + " 'moshi kono mama boku ga',\n", + " 'koko ni itsudzukereba',\n", + " 'boku mo toketenaku naru yo',\n", + " 'i wanna go wanna go',\n", + " \"kugiri sura nai basho e you're a stranger\",\n", + " \"i'm alone i'm alone\",\n", + " \"sore demo burezu tada jibun shinjin' no sa\",\n", + " 'tada sou yaru beki koto wa hitotsu dake',\n", + " 'sore igai wa nai',\n", + " \"what i hear and what i play, they're everything in my heart\",\n", + " \"can't you see that?\",\n", + " 'tatoe mou boku ga ano kusari ni tsunagaretemo',\n", + " 'kimi no shiji o ukeru tsumori wa nai!',\n", + " 'i wanna go wanna go',\n", + " \"kugiri sura nai basho e you're a stranger\",\n", + " \"i'm alone i'm alone\",\n", + " \"sore demo burezu tada jibun shinjin' no sa\",\n", + " 'tada sou yaru beki koto wa hitotsu dake',\n", + " 'sore igai wa nai',\n", + " \"what i hear and what i play, they're everything in my heart\",\n", + " \"can't you see that?\",\n", + " 'kanji',\n", + " 'mata kioku wo tsukisasu yaketa nioi',\n", + " 'mou kokyuu mo dekinai',\n", + " 'memai ga suru youna kuroi taiyou',\n", + " 'ikitsugi no itami wo',\n", + " 'kiri kizande around the way',\n", + " 'kioku wo keshite feel my fear',\n", + " \"sugari tsuita and i'm dead\",\n", + " 'furi hodoite insane dream',\n", + " 'tell me what you want me to believe',\n", + " \"i can't see you, i can't feel you\",\n", + " 'tada yurushi wo motomete nagasu negai',\n", + " 'mada kodou wa taenai',\n", + " 'shikai wo nakushita akai mabuta yo',\n", + " 'sandome no inori wo',\n", + " 'kiri kizande around the way',\n", + " 'kioku wo keshite feel my fear',\n", + " \"sugari tsuita and i'm dead\",\n", + " 'furi hodoite insane dream',\n", + " 'kiri kizande around the way',\n", + " 'kioku wo keshite feel my fear',\n", + " \"sugari tsuita and i'm dead\",\n", + " 'furi hodoite insane dream',\n", + " 'kiri kizande around the way',\n", + " 'kioku wo keshite feel my fear',\n", + " \"sugari tsuita and i'm dead\",\n", + " 'furi hodoite insane dream',\n", + " 'tell me what you want me to believe',\n", + " \"i can't see you, i can't feel you\",\n", + " '(romanized)',\n", + " 'yume miteta, yume',\n", + " 'hate naki tooku',\n", + " 'kawaita hibi no sorairo te no naka',\n", + " 'tou kankaku oto no naka de shikousakugo',\n", + " 'jikan kankaku no nai, kuukan',\n", + " 'toushindai oto wo tatete',\n", + " 'boku no kao, tsukutte yuku',\n", + " 'kirei ni, katahou dake',\n", + " 'kono te ni ochita, kusari kake no ringo',\n", + " 'kagami ni utsuru, bokura no uragawa made',\n", + " 'too kankaku hito no naka de shikousakugo',\n", + " 'jikan kankaku no nai, kuukan',\n", + " 'toushindai tsume wo tatete',\n", + " 'boku no kao, kezutte yuku',\n", + " 'kirei ni, katahou dake',\n", + " 'too kankaku',\n", + " 'toushindai',\n", + " 'eternal damnation',\n", + " 'can i redeem myself?',\n", + " 'mata meguri yuku',\n", + " 'unmei ga rasen no yō ni',\n", + " 'heavenly punishment',\n", + " 'my soul is kept in chains',\n", + " 'mogaki tsudzukeru',\n", + " 'imada kanashimi no uzu no naka de',\n", + " 'haruka tōzakari yuku',\n", + " 'kaisō no osanaki hibi wa',\n", + " 'mōmoku ni tada kakimidashite yuku',\n", + " 'yodonda kokoro o',\n", + " 'fukaku mushibama re yuku',\n", + " 'kono kanashimi no imi wa',\n", + " 'bōkyaku no katasumi ni torawarete iru',\n", + " 'mōnidoto tsukamu koto no dekinai hikari',\n", + " 'miage omoi o haseru sora',\n", + " 'kurikaeshi toikakeru sadame',\n", + " 'itsuka kakageta tachiagaru imi wa',\n", + " 'ima mo kono daichi ni todoroite yuku',\n", + " 'imada kanashimi no uzu no naka de',\n", + " 'itsuka kanjita nukumori',\n", + " 'omoidasu yō ni me o toji',\n", + " 'chiri yuku kodō tashikameru yō ni',\n", + " 'ima koso furikaerazu kono omoi',\n", + " 'kono daichi ni todorokasete yuke',\n", + " 'heavenly punishment',\n", + " 'my soul is kept in chains',\n", + " 'mata meguri yuku',\n", + " 'unmei ga rasen no yō ni',\n", + " 'eternal damnation',\n", + " 'can i redeem myself?',\n", + " 'ima hashiridasu',\n", + " 'katsute no kioku o nosete',\n", + " \"disasters don't ever wait\",\n", + " \"the time has come, we can't delay\",\n", + " 'fly through hundreds of bullets',\n", + " 'paint the sky bloody red',\n", + " 'mitsumeyo sono mi ni yadotta',\n", + " 'kakoku na unmei no imi o',\n", + " 'inuke yo hametsu no kakushin',\n", + " 'oozora hishou suru tsurugi de',\n", + " 'ano toki kara henkaku shita paradaimu',\n", + " 'susumu basho mo kaeru basho saemo tooi maboroshi',\n", + " \"chikara tokihanate it's unlimited\",\n", + " 'osore nado sute',\n", + " 'ushinatta monono ookisa o',\n", + " 'sakebu you ni',\n", + " 'teki o akaku some our bloodred',\n", + " 'bokura no se niwa',\n", + " 'soredemo mamoritai mono ga aru',\n", + " \"disasters don't ever wait\",\n", + " \"the time has come, we can't delay\",\n", + " 'fly through hundreds of bullets',\n", + " 'paint the sky bloody red',\n", + " 'mezameyo ano hi tsunagareta',\n", + " 'musuu no nemurishi kioku yo',\n", + " 'tatakae sorezore no hokori',\n", + " 'sono te ni torimodoseru hi made',\n", + " 'dareka janaku bokura datta messianic child',\n", + " 'tomaru koto ga imi shiteiru nowa kono sekai no shi',\n", + " \"ikari tokihanate it's unlimited\",\n", + " 'tada teki o ute',\n", + " 'kizutsuku koto yori osoroshii',\n", + " 'kioku ga aru',\n", + " 'sora mo akaku some our bloodred',\n", + " 'bokura wa mune ni',\n", + " 'soredemo shinjitai ai ga aru',\n", + " \"disasters don't ever wait\",\n", + " \"the time has come, we can't delay\",\n", + " 'tsukarehatete ashi ga tomattemo',\n", + " 'kiki ni sarasareru inochi ga aru nara...',\n", + " \"chikara tokihanate it's unlimited\",\n", + " 'osore nado sute',\n", + " 'ushinatta monono ookisa o',\n", + " 'sakebu you ni',\n", + " 'teki o akaku some our bloodred',\n", + " 'bokura no se ni ha',\n", + " 'soredemo',\n", + " 'mamori tai?',\n", + " \"ikari tokihanate it's unlimited\",\n", + " 'tada teki o ute',\n", + " 'kizu tsuku koto yori osoroshii',\n", + " 'kioku ga aru',\n", + " 'sora mo akaku some our bloodred',\n", + " 'bokura wa mune ni',\n", + " 'soredemo shinjitai ai ga aru',\n", + " \"disasters don't ever wait\",\n", + " \"the time has come, we can't delay\",\n", + " 'fly through hundreds of bullets',\n", + " 'paint the sky bloody red',\n", + " \"disasters don't ever wait\",\n", + " \"the time has come, we can't delay\",\n", + " 'fly through hundreds of bullets',\n", + " 'paint the sky bloody red',\n", + " 'ubaware so na light',\n", + " 'good-bye aburi dase glow',\n", + " 'hibiku kui yori mae e',\n", + " 'shukuhai naraseyo goat',\n", + " '「maze, god, devil, my life」',\n", + " 'itaru soko de hau yōna',\n", + " '「maze, god, devil, my life」',\n", + " 'gaika narasu',\n", + " '「kill off」',\n", + " 'haitokushin o',\n", + " '「kill off」',\n", + " 'jison o',\n", + " '「kill off」',\n", + " 'i anshin o',\n", + " '「kill off」',\n", + " 'nando mo',\n", + " '「kill off」',\n", + " 'haitokushin o',\n", + " '「kill off」',\n", + " 'jison o',\n", + " '「kill off」',\n", + " 'i anshin o',\n", + " '「kill off」',\n", + " 'gurari gurari to akumu tsurushita',\n", + " '「too fast to live」',\n", + " '「too young to die」',\n", + " 'komaku tsuranuku kodo ni chikae mada yareru no sa',\n", + " 'too fast too die',\n", + " 'katachi no nai',\n", + " 'katachi no nai',\n", + " \"fukanzen'na sekai\",\n", + " '「kill off」',\n", + " 'haitokushin o',\n", + " '「kill off」',\n", + " 'jison o',\n", + " '「kill off」',\n", + " 'i anshin o',\n", + " '「kill off」',\n", + " 'nando mo',\n", + " '「kill off」',\n", + " 'haitokushin o',\n", + " '「kill off」',\n", + " 'jison o',\n", + " '「kill off」',\n", + " 'i anshin o',\n", + " '「kill off」',\n", + " 'gurari gurari to akumu tsurushita',\n", + " '「too fast to live」',\n", + " '「too young to die」',\n", + " 'komaku tsuranuku kodō ni chikae mada yareru no sa',\n", + " 'owaranai',\n", + " 'gurari gurari to kami mo tsurushita',\n", + " '「too fast to live」',\n", + " '「too young to die」',\n", + " 'moe kasu no yona kodo ni chikae mada yareru no sa',\n", + " 'too fast too die',\n", + " 'gaika narasu my life',\n", + " \"it's my life\",\n", + " 'fukaku fukaku ochite yuku',\n", + " 'hitotsu futatsu kiete yuku',\n", + " 'mou koko ni wa modorenai',\n", + " 'namida ga hoho wo tsutau seba matta sekai',\n", + " 'nijinde mieta keshiki ga aoku mieru',\n", + " \"kareochita itsuwari no dreaming i'm falling alone\",\n", + " 'kizutsuita kono hane wa anata ga nuiawaseta',\n", + " 'nigirishimetate hanasanaide karamase tsuyoku',\n", + " 'mata ikite yuku kimi to',\n", + " \"you're inside my nights\",\n", + " 'still feel lost inside your eyes',\n", + " 'try to hold on tight',\n", + " \"but you're long gone\",\n", + " 'lie in bed and dream of sleep',\n", + " \"cause nothing's right with me\",\n", + " \"under sheets i'm wondering\",\n", + " 'will this be the end?',\n", + " \"kareochita itsuwari no dreaming i'm falling alone\",\n", + " 'kizutsuita kono hane wa anata ga nuiawaseta',\n", + " 'nigirishimeta te hanasanaide karamase tsuyoku',\n", + " 'mata ikite yuku kimi to',\n", + " \"hagareochita itsuwari no dreaming i'm falling alone\",\n", + " 'kizutsuku koto ni sae ima wa mou nareta boku',\n", + " 'nobashita kono te karamasete hageshiku',\n", + " 'soshite mata fumidaseru yo kitto',\n", + " 'bochio bwe bwe bola wari erikope wa’e',\n", + " 'bochio bwe bwe bola wari eriko pe wa eriko pe wa’e',\n", + " 'boláwárí nnë bö ná a',\n", + " 'boláwárí nnë bö ná iööö',\n", + " 'ö béraí è le öee, ea párana',\n", + " 'ntá lapálo bolám ë, kóri we n’so bwe sabe a’m',\n", + " 'mari mari, mari wë bée',\n", + " 'mari mari, mari wë bée',\n", + " 'ö béraí è le öe, ea párana',\n", + " 'a tálapo èla lasá köri n’tòki bëölo',\n", + " 'ö béraí eá bö sö söbieria, ea párana',\n", + " 'a tálapo èla lasá köri ntòki bëölo',\n", + " 'a tálapo èla lasá köri ntòki bëölo',\n", + " 'a tálapo èla lasá köri ntòki bëölo',\n", + " 'bochio bwe bwe bola wari erikope wa’e (x3)',\n", + " 'bochio bwe bwe bola wari eriko pe wa eriko pe wa’e',\n", + " 'bochio bwe bwe bola wari erikope wa’e (x3)',\n", + " 'bochio bwe bwe bola wari eriko pe wa eriko pe wa’e',\n", + " 'bolá boláwárí nnë bö ná a',\n", + " 'bolá boláwárí nnë bö ná a',\n", + " 'ö béraí è le öee, ea párana',\n", + " 'ntá lapálo bolám ë, kóri we n’so bwe sabe a’m',\n", + " 'mari mari, mari wë bée',\n", + " 'mari mari, mari wë béiööö',\n", + " 'ö béraí è le öee, ea párana',\n", + " 'a tálapo èla lasá köri ntòki bëölo',\n", + " 'a tálapo èla lasá köri ntòki bëölo',\n", + " 'a tálapo èla lasá köri ntòki bëölo ölo ölo ölo',\n", + " 'ö béraí è le öee, ea párana',\n", + " 'ntá lapálo bolám ë, kóri we n’so bwe sabe a’m',\n", + " 'ö béraí è le öee, ea párana',\n", + " 'a tálapo èla lasá köri ntòki bëölo',\n", + " 'a tálapo èla lasá köri ntòki bëölo',\n", + " 'a tálapo èla lasá köri ntòki bëölo ölo ölo',\n", + " 'bochio bwe bwe bola wari erikope wa’e (x9)',\n", + " 'bochio bwe bwe bola wari eriko pe wa eriko pe wa’e',\n", + " 'english lyrics:',\n", + " 'good night miss we are free like the wind',\n", + " 'good night miss we are free, free like the wind',\n", + " 'is a lady to whom i love',\n", + " \"it's a lady to whom i love oh\",\n", + " 'when your mother found out',\n", + " 'she said that she could not allow our love as i do not have much money',\n", + " 'mari mari, mari don’t cry',\n", + " 'mari mari, mari don’t cry',\n", + " 'when your mother found out about us',\n", + " 'said that she could not consent our love',\n", + " 'because i dont have much money',\n", + " 'when her mother alleged said that he could not consent our love',\n", + " 'she said',\n", + " 'i cannot consent it because you do not have money',\n", + " 'i cannot consent it because you do not have money',\n", + " 'i cannot consent it because you do not have money',\n", + " 'good night miss we are free like the wind (x3)',\n", + " 'good night miss we are free like the wind',\n", + " 'good night miss we are free like the wind (x3)',\n", + " 'good night miss we are free like the wind',\n", + " 'is a lady to whom i love',\n", + " \"it's a lady to whom i love oh\",\n", + " 'when your mother found out',\n", + " 'she said that she could not allow our love as i do not have much money',\n", + " 'mari mari, mari don’t cry',\n", + " 'mari mari, mari don’t cry',\n", + " 'when your mother found out about us',\n", + " 'said',\n", + " 'i cannot consent it because you do not have money',\n", + " 'i cannot consent it because you do not have money',\n", + " 'i cannot consent it because you do not have money',\n", + " 'when her mother alleged said that he could not consent our love',\n", + " 'she said',\n", + " 'i cannot consent it because you do not have money',\n", + " 'i cannot consent it because you do not have money',\n", + " 'i cannot consent it because you do not have money',\n", + " 'good night miss we are free like the wind (x9)',\n", + " 'good night miss we are free like the wind, free like the wind',\n", + " 'dark side in my heart is',\n", + " 'nuguisarenai kako no kanashimi',\n", + " \"it's alright kokoro ni mo nai\",\n", + " 'blaster hanachi te o nobashita',\n", + " 'my life kirihanashita',\n", + " 'gakubuchi no naka nagameru you ni',\n", + " 'sonzai shoumei issai mou nee',\n", + " 'karoujite tamotsu jibun jishin',\n", + " 'sakete toorenai michi wa itsu kara ka konna datta',\n", + " 'soshite dare mo inaku natta...',\n", + " 'unmei nante kuso kurae',\n", + " 'yarikirenakute cry for pride',\n", + " 'ah, ah, ah, alone in my world',\n", + " 'hibiku ai no uta',\n", + " 'yuganda sekai magatta negai',\n", + " 'kuzuresatte iku risou to ashita',\n", + " 'haite suteru hodo ni taikutsu datta',\n", + " 'good bye precious life',\n", + " 'dark cloud in my heart is',\n", + " 'harewatari michi ni hikari wa sashita',\n", + " \"let's fight osore wa nai\",\n", + " 'moroha no tsurugi furikazashita',\n", + " 'my life hitorikiri ja nai',\n", + " 'nakama no koe ni michibikareru hou ni',\n", + " 'sonzai shoumei issai koutei',\n", + " 'tokihanatta jibun jishin',\n", + " 'sakete toorenai michi wa itsu datte konna datta',\n", + " 'mayoi wa kiete naku natta...',\n", + " 'unmei nante kuso kurae',\n", + " 'gamushara ni natte try for pride',\n", + " 'ah, ah, ah, alone in my world',\n", + " 'kikoeru ai no uta',\n", + " 'hizunda sekai todokasu negai',\n", + " 'yowane nante mon wa nigiritsubushita',\n", + " 'haite suteru hodo ni taisetsu datta',\n", + " \"it's my precious life\",\n", + " 'unmei nante kuso kurae',\n", + " 'yarikirenakute cry for pride',\n", + " 'ah, ah, ah, alone in my world',\n", + " 'hibiku ai no uta',\n", + " 'yuganda sekai magatta negai',\n", + " 'kuzuresatte iku risou to ashita',\n", + " 'haite suteru hodo ni taikutsu datta',\n", + " 'good bye precious life',\n", + " 'unmei nante nurikaete',\n", + " 'kizu darake ni natte try for pride',\n", + " 'ah, ah, ah alone in my world',\n", + " 'sore de mo ai o utau',\n", + " 'hizunda sekai todokasu negai',\n", + " \"kizukiagete'ku kizuna to ashita\",\n", + " 'haite sutete mo kekkyoku taisetsu na n da',\n", + " \"it's my precious life\",\n", + " 'torinokosareta boku wa kiseki wo nakushita',\n", + " 'afuredasu kodoku yo boku wo misetekure',\n", + " 'todokanai hoshi no you na towa no you na suna ni natteshimatta',\n", + " 'nemurenai kimi ga fui ni nemutta yoru wa tetsu no nioi ga shita',\n", + " 'mitsumenaide yo boku no koto',\n", + " 'yukisaki ga wakaranai yo',\n", + " 'mayday mayday',\n", + " 'far from perfection boku no ito ga karamatte karamatte',\n", + " 'aka no juumon mo ao no mahou mo sutesatte sutesatte',\n", + " 'far from ideal man kimi no koe ga kikitakute kikitakute',\n", + " 'aka no juumon mo ao no mahou mo hikisaite wasuretai',\n", + " 'boku wa mou furafura ni natte',\n", + " 'megami yo from from i am',\n", + " 'far from perfection',\n", + " 'may i help you?',\n", + " '[verse 3}',\n", + " 'omoidashite ii? kimi no koto',\n", + " 'kakusei shichaisou sa',\n", + " 'mayday mayday',\n", + " 'call me call me',\n", + " 'i am mo i was mo nukedashite',\n", + " 'hashiridase tornado neat star',\n", + " 'kunou wa kiseki no supai ni ubawasero',\n", + " 'mou nukedashite kimi wo koeteiku',\n", + " 'ushinatta seimei ga tsunaida',\n", + " 'yomigaere neighbormind forevermind',\n", + " 'nokosareta seimei no ito wa dare no? i know',\n", + " 'akaku somatteiku',\n", + " 'ano hi no i am ga nokoshita kizuna wa eien ni kakushite',\n", + " 'kimi to boku wo toumei na ito de tsunaide',\n", + " 'hanarenai you ni kimi wo tokashiteiku',\n", + " 'kodoku ga boku wo sukutte kakumei wo nomikonda',\n", + " 'akaku somatteiku',\n", + " 'black / sugの歌詞',\n", + " 'romaji',\n", + " 'azayaka sugita zanzō wa yumekautsutsuka',\n", + " 'sensaina iro-dzukai no shūmaku wa doko ka shinjitsumi ga nakute',\n", + " 'however, my heart was broken',\n", + " 'hoho o tsutau namida no imi o ne oshiete',\n", + " 'kanjita mama hora shira sete',\n", + " 'say that it is a lie',\n", + " 'right now,,, i want you baby',\n", + " 'nanimokamo sukuenu hanashi',\n", + " 'sekai to boku kurutteru no wa dotchina n dai?',\n", + " 'whatever, the result may be',\n", + " 'dō ka futari meguriawa sete yo nē kamisama',\n", + " 'fukai nemuri kara sametara',\n", + " \"it's now or never, so why don't you come??\",\n", + " 'tell me the meaning of life',\n", + " 'give me your love!! get off to inside!!',\n", + " 'we were made by stupid liquid',\n", + " 'muhyōjō ni warau sora to tsumetaku nureta hitomi',\n", + " 'kowashitakute ubaenakute aishitakute yurusenai',\n", + " 'however, my heart was broken',\n", + " 'hoho o tsutau namida no imi o ne oshiete',\n", + " 'kanjita mama hora...',\n", + " 'nuri kasanete ku kotae mo kusari kitta ai no hate mo',\n", + " 'subete ga shinjitsu soredake wa dō ka wasurenaide',\n", + " 'kanji',\n", + " '鮮やかすぎた残像は 夢か現か',\n", + " '繊細な色使いの終幕は どこか真実味がなくて',\n", + " 'however, my heart was broken',\n", + " '頬をつたう涙の意味をねぇ教えて',\n", + " '感じたまま ほら 知らせて',\n", + " 'say that it is a lie',\n", + " 'right now,,, i want you baby',\n", + " 'なにもかも 救えぬ話',\n", + " '世界と僕 狂ってるのはどっちなんだい?',\n", + " 'whatever, the result may be',\n", + " 'どうか ふたり 巡り会わせてよ ねぇ 神様',\n", + " '深い眠りから 覚めたら',\n", + " \"it's now or never, so why don't you come??\",\n", + " 'tell me the meaning of life',\n", + " 'give me your love!! get off to inside!!',\n", + " 'we were made by stupid liquid',\n", + " '無表情に笑う空と 冷たく濡れた瞳',\n", + " '壊したくて 奪えなくて 愛したくて 許せない',\n", + " 'however, my heart was broken',\n", + " '頬をつたう涙の意味をねぇ教えて',\n", + " '感じたまま ほら、、、',\n", + " '塗り重ねてく答えも 腐り切った愛の果ても',\n", + " '全てが真実 それだけはどうか 忘れないで',\n", + " 'fuhai shita bakenokawa',\n", + " 'tsumi wa suitai no yo ka',\n", + " 'obitadashiku korogaru',\n", + " 'dōzoku wa yoku no shigai',\n", + " 'i deny everything',\n", + " 'i deny all of it',\n", + " 'i deny everything',\n", + " 'yami o matoi kokō wa gi ni mukau',\n", + " 'soko ni shinjitsu ga aru to',\n", + " 'han kyōran no bōto shisō kurai',\n", + " '「mazaranu kuro」 de nuritsubusu',\n", + " 'rinen no taigen mure o hazure kami ni somuku',\n", + " \"i'll be a brain-dead god\",\n", + " 'chi o hau mirai yami to mae',\n", + " 'gūzō to nari kakushin e',\n", + " 'yoku no shinizama o mita',\n", + " 'kono me ni kurui nado nai',\n", + " 'mureru kairai',\n", + " 'growing hate',\n", + " 'kanashi teru',\n", + " 'hate your life',\n", + " 'mureru kairai',\n", + " 'growing hate',\n", + " 'kami o otoshii koko ni shi o sasageru',\n", + " 'kazoe kirenu koe yo te no naru hou e',\n", + " 'yami to nari kazarou yūshū no shi o',\n", + " 'i will blacken out this world',\n", + " 'darkness in the world',\n", + " 'starts tonight',\n", + " 'kuchibue wo fuita irae wa mada konu',\n", + " 'tameiki ga hitotsu kagerou no naka ni kiyu',\n", + " 'kinuginu no fumi wa machikurasedo konu',\n", + " 'neya no mutsugoto wa asa ake no sora ni kiyu',\n", + " 'shinuru ga kowakuba kono sato wo tokusare',\n", + " 'tsuki ga mitsu toki usagi ga haneru',\n", + " 'wa ga hitomi no oku wo miyo kokoro mayoite kimo kudakete',\n", + " 'mune hi wo yaku ga gotoku kokoro kuruiteyuku',\n", + " 'kogaretemo kogaretemo kurushimi yori nogarenu nara',\n", + " 'inishie no mono no you ni hi no naka e kakenuke tobe!',\n", + " 'asatsuyu no hoka ni shiru hito nazo nashi',\n", + " 'sarasara to hoho ni koboruru mono wa nanzo',\n", + " 'ikidama ga yoi ni kono mi yori izuru',\n", + " 'tsuki ga mitsu toki ware oni to naran',\n", + " 'wa ga hitomi no oku wo miyo guren no honoo yurameite',\n", + " 'shakunetsu ni mi wo yakedo kokoro itetsuiteyuku',\n", + " 'kogaretemo kogaretemo tama no shirohada ni furenu nara',\n", + " 'yume wo hamubaku no you ni yamiyo ni kakurete yuke!',\n", + " 'ima zo yomiji e makarou',\n", + " 'ima zo fuseshi me hirakou',\n", + " 'shinuru ga kowakuba kono sato wo tokusare!',\n", + " 'tsuki ga mitsu toki usagi ga haneru',\n", + " 'wa ga hitomi no oku wo miyo kokoro mayoite kimo kudakete',\n", + " 'mune hi wo yaku ga gotoku kokoro kuruiteyuku',\n", + " 'kogaretemo kogaretemo kurushimi yori nogarenu nara',\n", + " 'inishie no mono no you ni hi no naka e kakenuke tobe!',\n", + " 'wa ga hitomi no oku wo miyo mune hi wo yaku ga gotoku',\n", + " 'kogaretemo kogaretemo inishie no mono no you ni',\n", + " 'kuchibue wo fuita irae wa mada konu',\n", + " \"i'm a movie star, i am part of your soul\",\n", + " 'only you can set me, only i can set you free',\n", + " 'mabushii raito ni fuchidorarete ima',\n", + " 'arata na dorama ga hajimatteku',\n", + " 'hikari to kage ai to kodoku wo',\n", + " 'kimi no naka ni mitsuketa hi kara',\n", + " 'we are movie stars, this world of light',\n", + " 'kizuato sae hokorashiki romansu',\n", + " \"you're a movie star, you are part of my soul\",\n", + " 'only i can set you, only you can set me free',\n", + " 'kako kara tsuyosa wo yume kara kiseki wo',\n", + " ...]},\n", + " 'data': ['are you satisfied?',\n", + " 'just open your eyes',\n", + " 'you can see the light',\n", + " 'across this borderline!',\n", + " 'uchinomesareta',\n", + " 'nageki no hate de',\n", + " 'aragai tsuzuketeru kanjou',\n", + " 'yamiyo ni hibiku',\n", + " 'haruka na hikari',\n", + " 'shinjiteru monotachi no houkou',\n", + " 'hey! get low! hey! hoero!',\n", + " 'koudou okose ima',\n", + " 'hey! you’re gonna be somebody',\n", + " 'soukyuu no exodus',\n", + " 'wazuka ni nokoshita yume higher',\n", + " 'sore made nakushichau no wa iya',\n", + " 'mimi kasu wake nain da liar',\n", + " 'otanoshimi (yeah!)',\n", + " 'umarete hateru made',\n", + " 'kabe ga dekai hodo desire',\n", + " 'hiraku kokoro ni messiah',\n", + " 'kawaru jidai tsukandetain da',\n", + " 'akiramezu (yeah!)',\n", + " 'torawareta yoru wo koete',\n", + " 'hade ni howling my soul',\n", + " 'doromamire demo',\n", + " 'kakageta kobushi',\n", + " 'samayou tamashii wo sendou',\n", + " 'tsudoishi negai',\n", + " 'nandomo komete',\n", + " 'uchi narase oretachi no gouhou',\n", + " 'hey! dero!',\n", + " 'karakara na heya no doa kette',\n", + " 'hey! be somebody!',\n", + " 'haruka naru koe ni boumei',\n", + " 'nosutarujia',\n", + " 'wazuka ni nokoshita yume higher',\n", + " 'sore made nakushichau no wa iya',\n", + " 'mimi kasu wake nain da liar',\n", + " 'otanoshimi (yeah!)',\n", + " 'umarete hateru made',\n", + " 'kabe ga dekai hodo desire',\n", + " 'hiraku kokoro ni messiah',\n", + " 'kawaru jidai tsukandetain da',\n", + " 'akiramezu (yeah!)',\n", + " 'torawareta yoru wo koete',\n", + " 'hade ni howling my soul',\n", + " 'are you satisfied?',\n", + " 'just open your eyes',\n", + " 'you can see the light',\n", + " 'across the borderline!',\n", + " 'takara no mochigusare nante',\n", + " 'iwareteru baai janai tte',\n", + " 'erasou na kuchi nante kiite',\n", + " 'hazukashii demo',\n", + " 'owaru ki wa nain daro',\n", + " 'kabe ga dekai hodo kitai',\n", + " 'ga takamaru hodo ni itai na',\n", + " 'wazuka ni nokoshita yume higher',\n", + " 'makineiri? no!',\n", + " 'jounetsu ni yumizu no',\n", + " 'you na abura o sosoge',\n", + " 'torawareta yoru o koete hade',\n", + " 'ni howling my soul',\n", + " 'kimi ni aeru hi ha iki kirashi te sakamichi',\n", + " 'kake nobottara pukari ukabu shiroi tsuki',\n", + " 'furimuku kimi no me ni ha',\n", + " 'hiyashinsu buruu no sora',\n", + " 'neko no me ni ha yase tari futottari shi teru tsuki',\n", + " 'kimi to matteru yuki no nioi o matteru',\n", + " 'utatane to utakata no hibi ha sugi te yuku',\n", + " 'hora yuki ga sode ni ochi te tokeru',\n", + " 'kimi to yoru to ongaku no you ni',\n", + " 'la la la',\n", + " 'choudokyuu no misairu',\n", + " 'hayaru inochi',\n", + " 'kono utsushimi wa masshigura',\n", + " 'sekai no mannaka ga mitai',\n", + " \"take me there, won't you?\",\n", + " 'kaosu to kosumosu no aida de matteiru yo',\n", + " 'top value no doraibu',\n", + " 'kimi no inochi',\n", + " 'sono dna wa masshigura',\n", + " 'sekai no mannaka ni furete',\n", + " \"raise me up, won't you?\",\n", + " 'hakai to kensetsu no aida de tatteite yo',\n", + " 'machikirenai',\n", + " 'ima naraba kodomo ni mo otona ni mo nareru',\n", + " 'tamesaretai',\n", + " 'chikazuiteiru',\n", + " 'tashikamete hora',\n", + " 'jiyuu e byouyomi',\n", + " 'shokikachuu no miraizu',\n", + " 'oboro inochi',\n", + " 'futo kaeri mite masshiguru',\n", + " 'sekai no mannaka ga toonoku',\n", + " \"wake me up, won't you?\",\n", + " 'kibun to gouri no ryouhou de mayotteiru yo',\n", + " 'tachikiritai',\n", + " 'ima dake wa otoko ni mo onna ni mo naranai',\n", + " 'sabakaretai',\n", + " 'kajikandeiru',\n", + " 'dare hitori tote',\n", + " 'sokonenai you ni',\n", + " 'ame ga yande kaze ga fuite',\n", + " 'karamitsuita nawa hodoku toki',\n", + " 'ikiteiru akashi wa shuuchaku sono mono darou kedo',\n", + " 'hanataretai',\n", + " 'aihan suru futatsu wo musube',\n", + " 'jiyuu wa koko sa',\n", + " 'hontou no sekai no mannaka',\n", + " 'breaking new gate',\n", + " 'tsumaranai noizu kakikesu you ni',\n", + " 'iya fuon no otogete',\n", + " 'yatsura ga korobu suki neratteru',\n", + " 'hey you kika seru wa',\n", + " 'itsu datte sou kono sekai wa faulty',\n", + " 'tachidomattara out of control',\n", + " 'bousougimi to nonoshira rete mo',\n", + " \"i don't care fumidase\",\n", + " 'i’ve gotta be on my way (hey!!)',\n", + " 'mattairana michi ni kyoumi wa miatanai no',\n", + " \"just breakin' new gate (hey!!)\",\n", + " '“koukai” to iu inbou no ma no te kaikugutte',\n", + " 'kono uenai kaikan wa suriru to tomoni iki tsudzuke tte',\n", + " 'mitaku mo nai koukei bakari',\n", + " 'shikaku ni tojikomeru',\n", + " 'chiisana sora ni kowoegaku hato',\n", + " 'who are you? miageru wa',\n", + " 'mogaitatte sou riaru wa steady',\n", + " 'jiko anji shite mo out of control',\n", + " 'namida ja sukuwa renainara',\n", + " 'mou enjoy ajiwae!',\n", + " \"i've gotta be on my way (hey!!)\",\n", + " 'kotae no nai kyoufu wa kyouki ni kaereba ii',\n", + " 'just breakin’ new gate (hey!!)',\n", + " 'masshiro ni keshi satta peeji wa yaburi sutero',\n", + " 'kakugo no saki e to suriru to tomoni mi wo sasagete',\n", + " 'itsu datte sou ko no sekai wa faulty',\n", + " 'tachidomattara out off control',\n", + " 'bousougimi to nonoshira rete mo',\n", + " \"i don't care fumidase\",\n", + " \"i've gotta be on my way (hey!!)\",\n", + " 'mattairana michi ni kyoumi wa miatanai no',\n", + " \"just breakin' new gate (hey!!)\",\n", + " 'koukai to iu inbou no ma no te kaiku gute',\n", + " 'kono uenai kaikan ga atashi wo hashiraseru',\n", + " 'kakugo no saki e to suriru to tomoni mi wo sasagete',\n", + " 'mushoku toumei jougen naki bousou ni',\n", + " 'donna kao o shi te tokekomu ?',\n", + " 'kyousei m mie nai mono he no daishou',\n", + " 'cries in vain',\n", + " 'go mad',\n", + " 'aimai na hangyaku kanjou',\n", + " 'cries in vain',\n", + " 'ways to destroy your ambition',\n", + " 'reborn',\n", + " 'faceless',\n", + " 'aimai de ama sugi te beta tsuku koe ga',\n", + " 'maiban nou ni tamatte iki kuchi o fusagu shimatsu de...',\n", + " \"i ' m behind you\",\n", + " 'yoku ga pa kuri to kuchi hirai te n daro u ga, ittai',\n", + " 'nani o motome te iru n da ? sonzai jitai sae mo ga',\n", + " 'i do not want to know',\n", + " 'igamu kao ni mizu o ukabe te ha oyogu shinjitsu',\n", + " 'rot away',\n", + " 'without you',\n", + " 'cries in vain',\n", + " 'go mad',\n", + " 'aimai na hangyaku kanjou',\n", + " 'cries in vain',\n", + " 'ways to destroy your ambition',\n", + " 'reborn',\n", + " 'no saving me',\n", + " 'dare mo togame te ha i nai hazu mo naku kurui motomeru',\n", + " 'blue na kara sora + kan da tsumeato',\n", + " 'ittai doko ni...',\n", + " 'do you live ?',\n", + " 'shinji rare nai no ha dare no sei ? kotoba takumi ni',\n", + " 'misekake no sentaku naki michi bakari o',\n", + " 'tsure yattekuru taiyou',\n", + " 'shintai hitotsu subete o uke te nagasu jihi sae',\n", + " 'mugon no hada o some te ha afure dashi ta',\n", + " 'kizu o mune ni hime te',\n", + " 'rot away',\n", + " 'without you',\n", + " 'cries in vain',\n", + " 'go mad',\n", + " 'aimai na hangyaku kanjou',\n", + " 'cries in vain',\n", + " 'ways to destroy your ambition',\n", + " 'reborn',\n", + " 'unmei daro u ga kowashi te shimae',\n", + " 'kintore',\n", + " 'kintore',\n", + " 'kintore',\n", + " 'kintore',\n", + " 'bomb',\n", + " 'kyou mo souchou hayaoki ranningu yeah',\n", + " 'taiyou ni kagayaku goruden bodi',\n", + " 'eiyou hakyuu wa within 30 minutes',\n", + " 'karada ni minagiru purotein',\n", + " 'insutabae ga panee katto ga panee',\n", + " 'kagami no toriai hanpanee ha',\n", + " 'ueito matsu te ga furueteyagaru',\n", + " 'sakebi omae no shouri no tame ni',\n", + " 'rasuto 1kai fight or fight',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'tachimukae yokubou no mama ni',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'koero kinniku no mukougawa',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'kui no nai kintore jinsei he',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'oikomi wo kakete',\n", + " 'sujihidai suru body & soul owarinaki tatakai',\n", + " 'burn the fat',\n", + " 'sutoikku ni itame tsuzukete nani wo mezasu',\n", + " 'burn the fat',\n", + " 'onore nirami onore tousui',\n", + " 'yagate kuru kintore teitaiki ni chiito dei',\n", + " 'taikai mokuzen taicho banzen mizu nuki shio nuki kaborodingu',\n", + " 'ikeru ka oi ore no kinniku',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'tachimukae yokubou no mama ni',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'koero kinniku no mukougawa',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'kui no nai kintore jinsei he',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'oikomi wo kakete',\n", + " 'osoi kakaru raibarutachi no massuru foomu',\n", + " 'koko de wa minna ga shujinkou narihibiku kankei ni kodou suru shinzou',\n", + " 'nikutai kara katarareru shinjitsu shinjirareru no wa onore no karada nomi',\n", + " 'hiza wo tsuku na tachiagare',\n", + " 'maku wa hiraita misetsukero omae ga onrii wan',\n", + " 'kourin seyo kinniku no kami',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'tachimukae yokubou no mama ni',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'koero kinniku no mukougawa',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'kui no nai kintore jinsei he',\n", + " 'macho of the world',\n", + " 'macho of the world',\n", + " 'oikomi wo kakete',\n", + " 'dale gaii tatoka tale goa lui toka con yomisu',\n", + " 'anamio',\n", + " 'alasoino wakea shoyorino',\n", + " 'yukue bokugashi litai nowa',\n", + " 'sou nada isso weta cotogenacte',\n", + " 'bokuraro yorotewa dokomade',\n", + " 'nobasewa dare gaii rueruga te',\n", + " 'yeah',\n", + " 'hurungai idatoka bokugawa',\n", + " 'rui toka yuu tsumore monaio',\n", + " 'cono oshi nomilai ikite',\n", + " 'kuimi bokugachi litai no wa',\n", + " 'so nada isoreda koto ja nakete',\n", + " 'so unna ari rueta koto de monate',\n", + " 'bakuraro yorotewa dokomade',\n", + " 'nomaseda dare gai rueruga tse',\n", + " 'nekito',\n", + " 'bokuraro yorotewa dokomade',\n", + " 'nobasewa dare gaii rueruga te',\n", + " 'nekito',\n", + " 'bokuraro mimi tewa dokomade',\n", + " 'akereba darekani mieru katee sore',\n", + " 'dake',\n", + " 'nani hito tsu shiranai',\n", + " 'boku wa watada ni to re janake',\n", + " 'irunda',\n", + " 'bokuraro yorotewa dokomade',\n", + " 'nobasewa dare gaii rueruga te',\n", + " 'nekito',\n", + " 'bokuraro mimi tewa dokomade',\n", + " 'akereba darekani mieru katee sore dake',\n", + " 'boku wa watada hitori janai ke irunda',\n", + " \"let's do our rock, scissors, and paper\",\n", + " 'make your hands and let anything out now',\n", + " 'you get ready to go!',\n", + " 'you know somebody to share?',\n", + " 'i wonder if you can bear',\n", + " 'what is the one you take care?',\n", + " 'bring them back!',\n", + " \"let's do our rock, scissors, and paper\",\n", + " \"make your hands, don't blink your eyes\",\n", + " 'アイコなら振り出しで負けたらそれまでのゲーム',\n", + " 'aiko nara furidashite maketara sore made no game',\n", + " 'そうさ僕らはそれにも似たような世界で生きてる',\n", + " 'sou sa bokura wa sore ni mo nita you na sekai de ikiteru',\n", + " '後だしは反則! この瞬間 一瞬make',\n", + " 'atodashi wa hansoku! kono shunkan isshun make',\n", + " '君のもち手3つは喜び, 欲望, そして怒り',\n", + " 'kimi no mochi te muttsu wa yorokobi, yokubou, soshite ikari',\n", + " 'かたや僕の方は愛と嫉妬, 悲しみを比喩した',\n", + " 'kataya boku no hou wa ai to shitto, kanashimi wo hiyushita',\n", + " '文字通り君の欲は僕の悲しみにも勝る',\n", + " 'monji toori kimi no yoku wa boku no kanashimi ni mo masaru',\n", + " 'ところがその欲望には僕のグーの愛でねじ伏せる',\n", + " 'tokoro ga sono yokubou ni wa boku no gee no ai de neji fuseru',\n", + " \"you know it's how it works 成り立った方程式\",\n", + " \"you know it's how it works naritatta houteishiki\",\n", + " 'どれが外れたってぇ',\n", + " 'dore ga hazuretattee',\n", + " \"let's do our rock, scissors, and paper\",\n", + " \"make your hands, don't blink your eyes\",\n", + " 'アイコなら振り出しで負けたらそれまでのゲーム',\n", + " 'aiko nara furidashite maketara sore made no game',\n", + " 'そうさ僕らはそれにも似たような世界で生きてる',\n", + " 'sou sa bokura wa sore ni mo nita you na sekai de ikiteru',\n", + " '後だしは反則! この瞬間 一瞬make',\n", + " 'atodashi wa hansoku! kono shunkan isshun make',\n", + " \"let's make our hands\",\n", + " \"don't cheat on it\",\n", + " \"let's make some blends\",\n", + " \"don't blink you eyes\",\n", + " \"(let's do it)\",\n", + " \"let's do our rock, scissors, and paper\",\n", + " '与えられたこの手で作る勝ち負けに',\n", + " 'taerareta kono te de tsukuru kachi make ni',\n", + " '僕はいつもどっか戸惑う少年!',\n", + " 'boku wa itsumo dokka tomadou shounen!',\n", + " \"let's do our rock, scissors, and paper\",\n", + " \"make your hands, don't blink your eyes\",\n", + " 'アイコなら振り出しで負けたらそれまでのゲーム',\n", + " 'aiko nara furidashite maketara sore made no game',\n", + " 'そうさ僕らはそれにも似たような世界で生きてる',\n", + " 'sou sa bokura wa sore ni mo nita you na sekai de ikiteru',\n", + " '後だしは反則! この瞬間 一瞬make',\n", + " 'atodashi wa hansoku! kono shunkan isshun make',\n", + " '一瞬make, 一瞬make',\n", + " 'isshun make, isshun make',\n", + " '一瞬make',\n", + " 'isshun make',\n", + " 'hareta sora shiranai chizu de ume kakuseba',\n", + " 'kaze ga sasu akiya no karada karuku',\n", + " 'itsumo no tokoro de yume wa samezu',\n", + " 'iki wo koroshite ne ga eru',\n", + " 'kareta koe',\n", + " 'iranai kotoba de arainagasu',\n", + " 'chotto mattene',\n", + " 'ima soko made ikukara',\n", + " 'itsumo no yume no katachi ni niseta',\n", + " 'iki no rizumu de tobikoeru',\n", + " 'day another day',\n", + " 'hi kurasu today',\n", + " 'aikotoba wa \"shōkyo kanō',\n", + " 'ninshō mukankei tekigō muimi',\n", + " 'aikotoba wa \"shōkyo kanō\"',\n", + " 'dōki wa ari sonzai kanō',\n", + " 'seizon kanō sonzai kanō',\n", + " 'yukusaki wa koko',\n", + " 'hareta sora',\n", + " 'shiranai chizu de ume kakuseba',\n", + " 'kaze ga sasu akiya no karada karuku',\n", + " 'itsumo no tokoro de yume wa samezu',\n", + " 'iki wo koroshite negaeru',\n", + " 'kareta koe',\n", + " 'iranai kotoba de arainagasu',\n", + " 'chotto mattene',\n", + " 'ima soko made ikukara',\n", + " 'itsumo no yume no katachi ni niseta',\n", + " 'iki no rizumu de tobikoeru',\n", + " 'day another day',\n", + " 'hi kurasu today',\n", + " 'pretty queen, nae doko ni iru no?',\n", + " 'nozo kikonda kagami koshi no shoutai',\n", + " 'machikado de miushinatta',\n", + " 'yume no tsudzuki otte sagashite iru no sa',\n", + " 'miss pretty queen',\n", + " 'hagureta shoujo',\n", + " 'my little days',\n", + " 'togireta resuponsu',\n", + " 'nananana, nana, nana, nanana',\n", + " 'nananana, nana, nana, nanana',\n", + " 'miss pretty queen',\n", + " 'pretty queen saa me wo samashite',\n", + " 'garasu no kutsu wo kette hadashi de tobira kette',\n", + " 'kono sekai wo itsumo baby',\n", + " 'sono te no hira no ue mawashiteta jyanai?',\n", + " 'miss pretty queen',\n", + " 'toki ni wa serufishu',\n", + " 'my little pride',\n", + " 'bukyou na passhon',\n", + " 'nananana, nana, nana, nanana',\n", + " 'nananana, nana, nana, nanana',\n", + " 'miss pretty queen, oh',\n", + " 'miss pretty queen, oh',\n", + " 'basu kara furitara mashingan wo buu hanase',\n", + " 'chiisana na haato ni hi wo tsukeru',\n", + " 'pretty queen yuka ni kobore ochita',\n", + " 'namida iro no paaru tsunagi awase',\n", + " 'surikireta sukaato sotto',\n", + " 'hiroge mune wo hatte hane batakeba ii',\n", + " 'miss pretty queen',\n", + " 'hagureta shoujo',\n", + " 'my pretty queen',\n", + " 'kagami no naka',\n", + " 'miss pretty queen',\n", + " 'nananana, nana, nana, nanana',\n", + " 'nananana, nana, nana, nanana',\n", + " 'miss pretty queen',\n", + " 'miss pretty queen',\n", + " 'miss pretty queen',\n", + " 'miss pretty queen',\n", + " 'miss pretty queen',\n", + " 'sateraito, sateraito',\n", + " 'hizumi ma wada niwa ni saku asagao no you',\n", + " 'tsumadzuki, tsumadzuki',\n", + " 'hitori avuatā arōn',\n", + " 'nadare ga, nadare ga',\n", + " 'mune no oku no inishie de nari yamanu hibi',\n", + " 'sateraito, sateraito',\n", + " 'hisashiku kotae naku',\n", + " 'kantanfu no ame furu michi wo kita',\n", + " 'santantaru rireki wa dare no tame?',\n", + " 'sateraito, sateraito',\n", + " 'hizumi wa mou en wo kaku niji no wa no you',\n", + " 'marobi tsu, marobi tsu',\n", + " 'michi ni avuatā arōn',\n", + " 'shiretsu no, shiretsu no',\n", + " 'kiwami no asa ki wa itsu jususuka to toeba',\n", + " 'sateraito, sateraito',\n", + " 'mujou ni kotake naku',\n", + " 'tentousuru kazu dake toshi wo heta',\n", + " 'sousou taru risuku wa nan to tame?',\n", + " 'avuatā arōn',\n", + " 'ki wa mada tooi',\n", + " 'tada ikinobiyo',\n", + " 'avuatā arōn',\n", + " 'yoru wa fukai',\n", + " 'zanji nigenobiyo',\n", + " 'avuatā arōn',\n", + " 'ame wa tsuyoi',\n", + " 'junji norikoeyo',\n", + " 'sateraito, sateraito',\n", + " 'hizumi wa mou manten no oorora no you',\n", + " 'miageru, miageru',\n", + " 'michi ni avuatā arōn',\n", + " 'joretsu no, joretsu no',\n", + " 'tori ni takusu sain wa “mukae iranu mou”',\n", + " 'sateraito, sateraito',\n", + " 'kotae wa iranu mou',\n", + " 'kantanfu no ame furu michi wo kita',\n", + " 'santantaru rireki wa dare no tame?',\n", + " 'avuatā arōn',\n", + " 'ki wa mou sugu',\n", + " 'tada ikinobiyo',\n", + " 'avuatā arōn',\n", + " 'ki wa mou sugu',\n", + " 'tada ikinobiyo',\n", + " 'avuatā arōn',\n", + " 'ki wa mou sugu',\n", + " 'tada ikinobiyo',\n", + " 'buchimakeru',\n", + " 'kaiwai no migoroshi ni wa warau',\n", + " 'sono me de mita no wa',\n", + " 'jakusha kirisuteta utage',\n", + " 'magamagashiki hakugai',\n", + " 'babylon’s taboo',\n", + " 'yokuatsu sareta nabiite boukan',\n", + " 'ade due damballa',\n", + " 'tameshiteiru no ka?',\n", + " 'ade due damballa',\n", + " 'magamagashiki hakugai',\n", + " 'babylon’s taboo',\n", + " 'yokuatsu sareta nabiite boukan',\n", + " 'ade due damballa',\n", + " 'tameshiteiru no ka?',\n", + " 'ade due damballa',\n", + " 'giragira matataku osora no uso ga',\n", + " 'dosugurokute kirei',\n", + " 'dorodoro ni utsuru ura no ura made',\n", + " 'ukeireta unmei',\n", + " \"「this is babylon's taboo」\",\n", + " 'boukan no black eyes',\n", + " 'black eye, black eyes, black eye',\n", + " \"i can't forget this humiliation\",\n", + " 'fukan no black eyes',\n", + " 'black eye, black eyes, black eye',\n", + " \"i fucking can't forget this day\",\n", + " 'in vain',\n", + " 'shouki ka sae futashika na mono to natta',\n", + " 'this is a curse',\n", + " 'in vain',\n", + " 'mou hakichirasu zouo sae futashika na',\n", + " 'my curse',\n", + " 'giragira matataku kyokou to uso ga',\n", + " 'dosugurokute kirei',\n", + " 'dorodoro ni utsuru ura no ura made',\n", + " 'ukeireta unmei',\n", + " \"「this is babylon's taboo」\",\n", + " 'boukan no black eyes',\n", + " 'black eye, black eyes, black eye',\n", + " \"i can't forget this humiliation\",\n", + " 'fukan no black eyes',\n", + " 'black eye, black eyes, black eye',\n", + " \"i fucking can't forget this day\",\n", + " 'magamagashiki hakugai',\n", + " 'babylon’s taboo',\n", + " 'yokuatsu sareta nabiite boukan',\n", + " 'ade due damballa',\n", + " 'tameshiteiru no ka?',\n", + " 'ade due damballa',\n", + " 'magamagashiki hakugai',\n", + " 'babylon’s taboo',\n", + " 'yokuatsu sareta nabiite boukan',\n", + " 'ade due damballa',\n", + " 'tameshiteiru no ka?',\n", + " 'ade due damballa',\n", + " 'my curse',\n", + " 'zutto onaji basho ni ita koto nante',\n", + " 'shiru koto mo nai mama toki wa nagare',\n", + " 'mou nido to hanashitakunai',\n", + " 'yatto tadoritsuita iru beki basho e',\n", + " 'utsuriyuku keshiki kawariyuku mirai',\n", + " 'negaikome tada sora wo aogi',\n", + " 'tsunaida kokoro wa afurete',\n", + " 'omoi wa tsuuretsu ni karamiaiyuku',\n", + " \"i'll never forget your love\",\n", + " \"oh, wherever you are, i'll always remember\",\n", + " \"oh, wherever you are, i'll be thinking about you\",\n", + " \"i'll make the world shake, searching for you\",\n", + " 'just promise: remember me forever',\n", + " 'furikaereba sou itsumo to onaji',\n", + " 'taenai hikari wo hanachitsudzuke',\n", + " 'mabushii hodo tsuyoku hotobashiru omoi',\n", + " 'ikudo to naku kurikaesu kono joudou',\n", + " 'subete wo sutetemo mamoritai omoi ga',\n", + " 'ima mune no naka tachikomete osaekirenai',\n", + " 'oh, wherever you go, we will be reunited again',\n", + " \"i'll make the world shake, searching for you\",\n", + " 'your eyes, just like shining stars',\n", + " 'smile, healing my soul',\n", + " 'you keep me alive',\n", + " \"i won't lose you now\",\n", + " 'du di di ding...',\n", + " 'i’ve found the new way to live',\n", + " 'you gotta boost up',\n", + " 'boku no kotoba janai kitto kore wa bokutachi no kotoba da',\n", + " 'sekaijuu ga hidari te shika nakerya migi te o kakusu yatsura ni wa naruna',\n", + " 'kono ao no saki ni nani mo nai kidzuita hi kara sora miagenai',\n", + " 'soko nashi numa ni hora soko ga atte',\n", + " 'ima mo nao kegaru yuku kono machi ja',\n", + " 'tada kuuki dake o suou to shitatte',\n", + " 'warui mono mo issho ni suikondeshimau',\n", + " 'oh this way',\n", + " 'itsumo (itsumo) ushinatte (satte) tae rarenai mono nante',\n", + " 'kono te ni wa tsukuranu you ni to ikitekita bokura no te ni',\n", + " 'you are friend (friend), baby (dream)',\n", + " 'kidzukeba mou kokoro ni aishinuku beki mono bakari',\n", + " 'ima made okashita ayamachi ga subete warui to wa omoenakatta',\n", + " 'subete no yasashisa ga itsu datte tadashikunakatta koto no you ni',\n", + " 'nanji miayamaru koto nakare saizu no awanai fuku to onaji sa',\n", + " 'saizu no awanai kane ya haku kotoba wa omae o misuborashikusuru dake da zo',\n", + " 'takaga sonna mono wa kureteyareru kedo demo',\n", + " 'itsumo (itsumo) ushinatte (satte) taerarenai mono sae',\n", + " 'mamorezu ni kuyamu dake no hibi ni ikiteitaku wa nai kara',\n", + " 'you are friend (friend), baby (dream)',\n", + " 'kono te ni kakaeta mono o mamoreru tsuyosa o oh',\n", + " 'di di ding… ah ah…',\n", + " 'i’ve found the new way to live',\n", + " 'kono chi yori mo hon no sukoshi taisetsu da to ieru basho ga koko de',\n", + " 'kono ryoute ja mada kakae kirenai hodo na oh',\n", + " 'eien yori sara ni jikan o kaketemo',\n", + " 'negatta mirai o tada sono tame dake ni ikiteirareru you ni to',\n", + " 'oh this way',\n", + " 'itsumo (itsumo) ushinatte (satte) tae rarenai mono nante',\n", + " 'kono te ni wa tsukuranu you ni to ikite kita bokura no te ni',\n", + " 'you are friend (friend), baby (dream)',\n", + " 'kidzukeba mou kokoro ni aishinuku beki mono bakari',\n", + " 'oh this way',\n", + " 'itsumo (itsumo) ushinatte (satte) tae rarenai mono sae',\n", + " 'mamorezu ni kuyamu dake no hibi ni ikite ita ku wanai kara',\n", + " 'you are friend (friend), baby (dream)',\n", + " 'motto tsuyoku naru yo',\n", + " 'kore wa boku no kotoba janai bokura no kotoba',\n", + " 'di di ding… ah ah…',\n", + " 'i’ve found the new way to live',\n", + " 'moshi negaigoto ga kanau nonara',\n", + " 'saisho de saigo no shiawase shinjiru no',\n", + " 'futari de hitotsu ni nareta hi kara',\n", + " 'takusan no ai no kotoba o sagashita ne',\n", + " 'sekai de dare yori kitto shiawasena ki ga shita',\n", + " 'kono hibi ga kesshite owaranu you ni to',\n", + " 'itsu made mo kawaranu mama',\n", + " 'i love you now and forever',\n", + " 'will be beside you forever',\n", + " 'our love will last forever',\n", + " 'kimi no tamenara!',\n", + " 'i love you now and forever',\n", + " 'will be beside you forever',\n", + " 'our love will last forever',\n", + " 'tada aishiteru no wa',\n", + " 'hoka demo dare demonaku tada hitori kimi dakara',\n", + " 'kiseki ya unmei shinjiru yori',\n", + " 'eien no ai o katachi ni dekirunara',\n", + " 'dore dake bokura futari shiawase ni naru ka na?',\n", + " 'ureshikute egao afure dasu hibi o sugosukara',\n", + " 'dakedo kanashikute namida nagashita yoru demo tsunagareru',\n", + " 'kimi to ireba! !',\n", + " 'i love you now and forever',\n", + " 'will be beside you forever',\n", + " 'our love will last forever',\n", + " 'kimi no tamenara!',\n", + " 'i love you now and forever',\n", + " 'will be beside you forever',\n", + " 'our love will last forever',\n", + " 'tada aishiteru no wa',\n", + " 'hoka demo dare demonaku tada hitori kimi dakara',\n", + " \"i'll always give you all my love\",\n", + " 'i swear to love you with my life',\n", + " 'kamisama onegai',\n", + " 'kono mama futari de',\n", + " 'towa ni hibiku made dokoka touku e',\n", + " \"don'na kotoba demo tsutae kirenai no\",\n", + " 'ima wa kimi igai aisenaikara!',\n", + " 'ano hi ano toki no ano kotoba no imi',\n", + " 'kimi ga kureta no wa boku e no ai de!',\n", + " 'i love you now and forever',\n", + " 'will be beside you forever',\n", + " 'our love will last forever',\n", + " 'kimi o aiseru no wa',\n", + " 'hoka demo dare demonaku tada hitori boku dakeda yo',\n", + " 'soshite tsudoishi sutādasuto',\n", + " 'hyakunen me no mezame ni yobarete',\n", + " 'otokotachi wa mukau',\n", + " 'toki no suna wo koeru journey',\n", + " 'kusari no yō tsuranaru karami au karuma',\n", + " 'hikari de tatsu sadame',\n", + " 'stand up! stand up! stand up!',\n", + " 'uchikomu no wa',\n", + " 'all right now! all right now! all right now!',\n", + " 'hokori no bullet',\n", + " 'break you down! break you down! break you down!',\n", + " 'kobushi hanatsu seinaru vijon stand proud!',\n", + " 'tojirareteta toki ni',\n", + " 'hi no hikari abiseru no wa dareda',\n", + " 'mirai nokosu kibō',\n", + " 'nagareru hoshi no kuruseidāsu',\n", + " 'kakeru no wa inochi mamoru beki ai to',\n", + " 'kādo wa kubarareta',\n", + " 'stand up! stand up! stand up!',\n", + " 'tachihadakaru',\n", + " 'all right now! all right now! all right now!',\n", + " 'teki wo taoshi',\n", + " 'break you down! break you down! break you down!',\n", + " 'michi wo hiraku tamashi no vijon stand proud!',\n", + " 'yami no naka warau senaka wo',\n", + " 'sagashi oimotomeru otoko no',\n", + " 'sono ashioto rekuiemu',\n", + " 'sabaku ni hibiku',\n", + " 'stand up! stand up! stand up!',\n", + " 'uchikomu no wa',\n", + " 'all right now! all right now! all right now!',\n", + " 'hokori no bullet',\n", + " 'break you down! break you down! break you down!',\n", + " 'kobushi hanatsu seinaru vijon stand proud!',\n", + " 'stand up! stand up! stand up!',\n", + " 'tachihadakaru',\n", + " 'all right now! all right now! all right now!',\n", + " 'teki wo taoshi',\n", + " 'break you down! break you down! break you down!',\n", + " 'michi wo hiraku tamashi no vijon stand proud!',\n", + " 'ichido wa ano hikari wo mitanda yo totemo kirei de',\n", + " 'demo ima omoeba kitanakatta are wa iwayuru bad day dreams',\n", + " 'hikari ga mabushi sugite mawari ga miezu tada tada hibi wo',\n", + " 'bou ni futteta ano hi ima dakara waraeru yo',\n", + " 'ichido wa ano maku wo aketanda yo totemo omokute',\n", + " 'pressure, iyami sore ni katsu tame ni tada iya na yatsu de',\n", + " 'soshite ki ga tsuku to makkura na heya ni hitori bocchi datta',\n", + " 'owatta.... aou modorenai.... nante.... aruku no mo yameta',\n", + " \"demo i'm not alone. i'm not alone\",\n", + " \"we're not, we're not, we're not alone\",\n", + " 'okane ja kaenai mono te ni irete',\n", + " 'mou ichido hikari abite soshite kondo wa damasarenu you ni',\n", + " 'bokura wa ima mezasu yo yokubou ni michita seinendan',\n", + " 'dareka ga itta kotoba sore sura sono toki wa nagashite',\n", + " 'ima ni natte kidzuita yo yokubou ni maketa shounendan',\n", + " 'so, i know you know? you know i know?',\n", + " 'we have, we have, we have grown',\n", + " 'torawarenai you ni to ue muite aruku',\n", + " 'mou ichido hikari abite soshite kondo wa damasarenu you ni',\n", + " 'bokura wa ima mezasu yo yokubou ni michita seinendan',\n", + " 'dareka ga itta kotoba sore sura sono toki wa nagashite',\n", + " 'ima ni natte kidzuita yo yokubou ni maketa shounendan']}}},\n", + " 'so': {'sentence': {'pop': {'meta': {'train_data': ['paan mein pudina dekha',\n", + " 'naak ka nagina dekha',\n", + " 'chikni chameli dekhi',\n", + " 'chikna kamina dekha',\n", + " 'chaand ne cheater hoke cheat kiya toh',\n", + " 'sare tare bole gilli gilli akha',\n", + " 'meri baat, teri baat',\n", + " 'zyada baatein boori baat',\n", + " 'thaali mein katora leke',\n", + " 'aaloo bhat, muri bhat',\n", + " 'mere peeche kisi ne repeat kiya toh',\n", + " 'saala maine tere muh pe maara mukka',\n", + " 'ispe bhoot koi chadha hai',\n", + " 'thehar na jaane naa',\n", + " 'ab toh kya bura kya bhala hai',\n", + " 'fark pehchaane naa',\n", + " 'zidd pakad ke khada hai kambakht',\n", + " 'chhodna jaane naa',\n", + " 'badtameez dil, batameez dil, batamiz dil',\n", + " 'maane na, maane na',\n", + " 'badtameez dil, batameez dil, batamiz dil',\n", + " 'maane na, maane na',\n", + " 'yeh jo haal hai, sawaal hai, kamaal hai',\n", + " 'jaane na jaane na',\n", + " 'badtameez dil, battameez dil badtameez dil',\n", + " 'maane naa',\n", + " 'hawa mein havana dekha',\n", + " 'dhimka falaana dekha',\n", + " 'seeng ka singhara khaake',\n", + " 'sher ka ghuraana dekha',\n", + " 'poori duniya ka gol gol chakkar leke',\n", + " 'maine duniya ko maara dhakka',\n", + " 'hey bollywood hollywood very very jolly good',\n", + " 'raayi ke pahaad par teen futa liliput',\n", + " 'mere peeche kisi ne repeat kiya toh',\n", + " 'saala maine tere muh pe maara mukka',\n", + " 'ayaashi ke one way se khudko',\n", + " 'modna jaane naa',\n", + " 'kambal bewajah sharam ka',\n", + " 'odhna jaane naa',\n", + " 'zidd pakad ke khadha hai kambakht',\n", + " 'chodhna jaane na... haha!',\n", + " 'badtameez dil, batameez dil, batamiz dil',\n", + " 'maane na, maane na',\n", + " 'badtameez dil, batameez dil, batamiz dil',\n", + " 'maane na, maane na',\n", + " 'aaj saare, chaand taare',\n", + " 'bann gaye hai disco lights',\n", + " 'jal ke, bujha ke humko bula ke',\n", + " 'keh rahe hai, party all nights',\n", + " 'naata betuki dillagi se, todna jaane na',\n", + " 'aane wale kal ki fikar se, judna jaane na',\n", + " 'zidd pakad ke khada hai kambakht',\n", + " 'chodhna jaane na... haha',\n", + " 'badtameez dil, batameez dil, batamiz dil',\n", + " 'maane na, maane na',\n", + " 'badtameez dil, batameez dil, batamiz dil',\n", + " 'maane na, maane na',\n", + " 'yeh jo haal hai, sawaal hai, kamaal hai',\n", + " 'jaane na jaane na',\n", + " 'badtameez dil, battameez dil badtameez dil',\n", + " 'maane naa',\n", + " 'aftab sare kooh noor afshonee',\n", + " 'samavar jooshee',\n", + " 'yarom toonge tala doosh gerefte',\n", + " 'ghamze mifrooshee',\n", + " 'yarom tonge tala dosh gerefte',\n", + " 'ghamze mifroshe',\n", + " 'ye doonee anar doa doonee anar sisad doonee morvarid',\n", + " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", + " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", + " 'ajab abroo ajab laboo ajab rooo dokhtar ghoochani',\n", + " 'ajab giso besane barge boo dokhtar ghoochani',\n", + " 'ajab giso besane barge boo dokhtar ghoochani',\n", + " 'ye doonee anar doa doonee anar sisad doonee morvarid',\n", + " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", + " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", + " 'ye doonee anar doa doonee anar sisad doonee morvarid',\n", + " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", + " 'mishkofe gol ay mipashe gol dokhtar ghochani',\n", + " 'negarom bar labe bom omadoo raft chaarree nadarom',\n", + " 'dobare bar labam joon omado raft chaarree nadarom',\n", + " 'dobare bar labom joon omadoo raft chaarree nadarom',\n", + " 'cheragho por kon az roghane gol chaarree nadarom',\n", + " 'ke yarom chashm geryoon omadoo raft chaarree nadarom',\n", + " 'ke yarom chashm geryoon omadoo raft chaarree nadarom',\n", + " 'ye doonee anar doa doonee anar sisad doonee morvarid',\n", + " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", + " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", + " 'maaṭi ke tum deeware',\n", + " 'jo sunyo hamri baat',\n", + " 'aaj milaawara mohe piya ka',\n", + " 'jo jagyo saari raat',\n", + " 'aaj rang hai ri maan',\n", + " 'rang hai ri',\n", + " 'aaj rang hai ri maan',\n", + " 'rang hai ri',\n", + " 'aaj rang hai ri maan',\n", + " 'rang hai ri',\n", + " 'aaj rang hai ri maan',\n", + " 'rang hai ri',\n", + " 'more khaajah ke ghar rang hai ri',\n", + " 'aaj rang hai ri maan',\n", + " 'rang hai ri',\n", + " 'more khaajah ke ghar rang hai ri',\n", + " 'aaj sajan milaawara more aangan men',\n", + " 'sajan milaawara more aangan men',\n", + " 'aaj rang hai ri maan',\n", + " 'rang hai ri',\n", + " 'aaj rang hai ri maan',\n", + " 'rang hai ri',\n", + " 'raini chaṛhi rasool ki',\n", + " 'so rang maula ke haath',\n", + " 'jis ki choonar rang diyo',\n", + " 'so dhan dhan wa ke bhaag',\n", + " 'aaj rang hai e maan',\n", + " 'rang hai ri',\n", + " 'aaj rang hai e maan',\n", + " 'rang hai ri',\n", + " 'aaj rang hai e maan',\n", + " 'rang hai ri',\n", + " 'aaj rang hai e maan',\n", + " 'rang hai ri',\n", + " 're aaj rang hai e maan',\n", + " 'rang hai ri',\n", + " 'are aaj rang hai e maan',\n", + " 'rang hai ri',\n", + " 'mere mahboob ke ghar',\n", + " 'e ri sakhi ri mere mahboob ke ghar',\n", + " 'e ri sakhi ri mere mahboob ke ghar',\n", + " 'e ri sakhi ri mere mahboob ke ghar rang hai ri',\n", + " 'aaj rang hai e maan',\n", + " 'rang hai ri',\n", + " 'aaj rang hai e maan',\n", + " 'rang hai ri',\n", + " 'mohe peer paayo nijaam ud-deen auliya',\n", + " 'mohe peer paayo nijaam ud-deen auliya',\n", + " 'mohe peer paayo nijaam ud-deen auliya',\n", + " 'mohe peer paayo nijaam ud-deen auliya',\n", + " 'mohe peer paayo saabir ‘ala ud-deen auliya',\n", + " 'mohe peer paayo saabir ‘ala ud-deen auliya',\n", + " 'mohe peer paayo nijaam ud-deen auliya',\n", + " 'nijaam ud-deen auliya',\n", + " '‘ala ud-deen auliya',\n", + " 'nijaam ud-deen auliya',\n", + " '‘ala ud-deen auliya',\n", + " 'nijaam ud-deen auliya',\n", + " '‘ala ud-deen auliya',\n", + " 'main to jab dekhoon more sang hai ri maan rang hai ri',\n", + " 'main to jab dekhoon more sang hai ri maan rang hai ri',\n", + " 'main to jab dekhoon more sang hai ri maan rang hai ri',\n", + " 'aaj rang hai ri maan',\n", + " 'rang hai ri',\n", + " 'des bides men ḍhoonḍ phiri hoon',\n", + " 'des bides men ḍhoonḍ phiri hoon',\n", + " 'are des bides men ḍhoonḍ phiri hoon',\n", + " 'tora rang man bhaayo nijaam ud-deen',\n", + " 'tora rang man bhaayo nijaam ud-deen',\n", + " 'tora rang man bhaayo nijaam ud-deen',\n", + " 'tora rang man bhaayo main tora rang',\n", + " 'tora rang man bhaayo main tora rang',\n", + " 'tora rang man bhaayo main tora rang',\n", + " 'are tora rang man bhaayo main tora rang',\n", + " 'bhul rahi re maan',\n", + " 'main to aiso rang',\n", + " 'mahboob-i ilaahi',\n", + " 'main to aiso rang',\n", + " 'mahboob-i ilaahi',\n", + " 'main to aiso rang',\n", + " 'mahboob-i ilaahi',\n", + " 'khusro rain suhaag ki so main jaagi pi ke sang',\n", + " 'khusro rain suhaag ki so main jaagi pi ke sang',\n", + " 'tan mora man peehu ka',\n", + " 'tan mora man peehu ka so donon ek hi rang',\n", + " 'main to aiso rang',\n", + " 'mahboob-i ilaahi',\n", + " 'main to aiso rang',\n", + " 'gokul dekha',\n", + " 'mathura dekha',\n", + " 'gokul dekha',\n", + " 'mathura dekha',\n", + " 'poorab dekha',\n", + " 'pachchhim dekha',\n", + " 'uttar dekha',\n", + " 'dakkhan dekha',\n", + " 'uttar dekha',\n", + " 'dakkhan dekha',\n", + " 'par tosa nah koyi rang dekha re',\n", + " 'main to aiso rang',\n", + " 'mahboob-i ilaahi',\n", + " 'main to aiso rang',\n", + " 'mahboob-i ilaahi',\n", + " 'phiri zamaane men chaar jaanib',\n", + " 'allaah',\n", + " 'nigaar-i yakta tumheen ko dekha',\n", + " 'haseen dekhe jameel dekhe',\n", + " 'bas ek tum sa tumheen ko dekha',\n", + " 'main to aiso rang',\n", + " 'mahboob-i ilaahi',\n", + " 'main to aiso rang',\n", + " 'mahboob-i ilaahi',\n", + " 'main to aiso rang',\n", + " 'des bides men ḍhoonḍ phiri hoon',\n", + " 'des bides men ḍhoonḍ phiri hoon',\n", + " 'des bides men ḍhoonḍ phiri hoon',\n", + " 'mohe tora rang man bhaayo nijaam ud-deen',\n", + " 'tora rang man bhaayo nijaam ud-deen',\n", + " 'jag jag jag jag',\n", + " 'jag jag jag ujyaaro',\n", + " 'jag ujyaaro',\n", + " 'jag ujyaaro',\n", + " 'khaajah nijaam ud-deen jagat ujyaaro',\n", + " 'khaajah nijaam ud-deen jagat ujyaaro',\n", + " 'saabir ‘ala ud-deen jagat ujyaaro',\n", + " 'saabir ‘ala ud-deen jagat ujyaaro',\n", + " 'meharwa',\n", + " 'meharwa ras boondaan barse',\n", + " 'meharwa ras boondaan barse',\n", + " 'boondaan barse',\n", + " 'ras boondaan barse',\n", + " 'boondaan barse',\n", + " 'ras boondaan barse',\n", + " 'khaajagaan ke darbaaran men',\n", + " 'khaajagaan ke darbaaran men',\n", + " 'aaj dekho ghan garje',\n", + " 'aaj dekho ghan garje',\n", + " 'aaj dekho ghan garje',\n", + " 'ras boondaan barse',\n", + " 'meharwa ras boondaan barse',\n", + " 'khaajah fareed ud-deen auliya',\n", + " 'qutub ud-deen auliya',\n", + " 'khaajah mu‘een ud-deen auliya',\n", + " 'khaajah qutub ud-deen auliya',\n", + " 'khaajah mu‘een ud-deen auliya',\n", + " 'khaajah qutub ud-deen auliya',\n", + " 'khaajah nijaam ud-deen',\n", + " 'khaajah naseer ud-deen',\n", + " 'khaajah nijaam ud-deen',\n", + " 'khaajah naseer ud-deen',\n", + " 'aaj shuhrah nijaam naseer ud-deen ka laa‘l mahboob bana',\n", + " 'laa‘l mahboob bana',\n", + " 'laa‘l mahboob bana',\n", + " 'laa‘l mahboob bana',\n", + " 'laa‘l mahboob bana',\n", + " 'nijaam ud-deen auliya jag ujyaaro',\n", + " 'nijaam ud-deen auliya jag ujyaaro',\n", + " 'nijaam ud-deen auliya jag ujyaaro',\n", + " 'nijaam ud-deen auliya jag ujyaaro',\n", + " 'jagat ujyaaro',\n", + " 'jagat ujyaaro',\n", + " 'jag ujyaaro jagat ujyaaro',\n", + " 'jag ujyaaro jagat ujyaaro',\n", + " 'jag ujyaaro jagat ujyaaro',\n", + " 'jag ujyaaro jagat ujyaaro',\n", + " 'jag ujyaaro jagat ujyaaro',\n", + " 'jag ujyaaro jagat ujyaaro',\n", + " 'teri soorat se kisi ki naheen milti soorat',\n", + " 'teri soorat se kisi ki naheen milti soorat',\n", + " 'ham jahaan men tiri tasweer liye phirte hain',\n", + " 'dekho main to aiso rang',\n", + " 'mahboob-i ilaahi',\n", + " 'main to aiso rang',\n", + " 'mahboob-i ilaahi',\n", + " 'nijaam ud-deen auliya jag ujyaaro',\n", + " 'nijaam ud-deen auliya jag ujyaaro',\n", + " 'jag ujyaaro jagat ujyaaro',\n", + " 'jag ujyaaro jagat ujyaaro',\n", + " 'wuh to jo maange barsat hai ri maan rang hai ri',\n", + " 'wuh to jo maange barsat hai ri maan rang hai ri',\n", + " 'aaj rang hai e maan',\n", + " 'rang hai ri',\n", + " 'aaj rang hai e maan',\n", + " 'rang hai ri',\n", + " 'kolli lama tbosileya bahrab min aneik',\n", + " \"khayfa shoo'ee y ban aalaya w arabni leek\",\n", + " \"nifsi ansa eni bahebak 'oli aamel eh?\",\n", + " 'hassa roohi gowa mini bit arabni leek',\n", + " 'kolli lama tbosileya bahrab min aneik',\n", + " \"khayfa shoo'ee y ban aalaya w arabni leek\",\n", + " \"nifsi ansa eni bahebak 'oli aamel eh?\",\n", + " 'hassa roohi gowa mini bit arabni leek',\n", + " 'albi law fi sawt y oolak aal lana hassa bee',\n", + " 'enta elli eshto omri w ana dawer aalay',\n", + " 'mosh bahebak hob aadi dana magnoona beek',\n", + " 'albi law fi sawt y oolak aal lana hassa bee',\n", + " 'enta elli eshto omri w ana dawer aalay',\n", + " 'mosh bahebak hob aadi dana magnoona beek',\n", + " 'w enta gambi hassa albi byetkalam maak',\n", + " \"farhet el donia f ayanaya ya habibi b loo'ak\",\n", + " 'law ha eesh el omr gambak rah eesh mareteyn',\n", + " 'nefsi anam w aassha fi hobak w etnafas hawak',\n", + " 'w enta gambi hassa albi byetkalam maak',\n", + " \"farhet el donia f ayanaya ya habibi b loo'ak\",\n", + " 'law ha eesh el omr gambak rah eesh mareteyn',\n", + " 'nefsi anam w aassha fi hobak w etnafas hawak',\n", + " 'albi law fi sawt y oolak aal lana hassa bee',\n", + " 'enta elli eshto omri w ana dawer aalay',\n", + " 'mosh bahebak hob aadi dana magnoona beek',\n", + " 'albi law fi sawt y oolak aal lana hassa bee',\n", + " 'enta elli eshto omri w ana dawer aalay',\n", + " 'mosh bahebak hob aadi dana magnoona beek',\n", + " 'aaji mera ji karda ...',\n", + " 'kaava kaava kaava',\n", + " 'aaj mera ji karda, mei ut jaa naale haava vava',\n", + " 'ki meri kismat ne (2) karditiya tandiya chaava ....',\n", + " 'ke aaj mera (2) jee karda, mei lut jaava',\n", + " 'lut jaa naale haava vava, aaj mera ji karda',\n", + " 'kaava kaava kaava ... aaj mera jee karda',\n", + " 'lut jaavaa naal havaa vaaa .... ohh ...',\n", + " 'rabba rabba mee barsa, saddi koti daaney paa (2)',\n", + " 'sada neer achanchal paraiyan ki',\n", + " 'khushiyan nachdiyan nachdiyan paraiyan ki',\n", + " 'kaliyan rathan lagan paraiyan ki',\n", + " 'gaavo toliyan gaavo toliyan gaavo toliyan',\n", + " 'nijaa boliyan',\n", + " 'rabba rabba mee barsa, saddi koti daaney paa .... (4)',\n", + " 'aaj mera ji karda, mei ut jaa naale haava vava',\n", + " 'ki meri kismat ne (2) karditiya tandiya chaava ....',\n", + " 'ke aaj mera (2) jee karda, mei lut jaa naal havavaa',\n", + " 'kaava kaava kaava',\n", + " 'sada neer achanchal paraiyan ki',\n", + " 'khushiyan nachdiyan nachdiyan paraiyan ki',\n", + " 'kaliyan rathan lagan paraiyan ki',\n", + " 'gaavo toliyan gaavo toliyan gaavo toliyan',\n", + " 'nijaa boliyan',\n", + " 'aaj mera ji karda, mei ut jaa naale haava vava',\n", + " 'ki meri kismat ne , karditiya tandiya chaava ....',\n", + " 'ke aaj mera jee karda, mei lut jaava .....',\n", + " 'aaaaaaaaa ...........',\n", + " 'inta harami goloub',\n", + " 'ya sarig ehsasi',\n", + " 'wallah aalayk esloub',\n", + " 'dawakhteli raasi',\n", + " 'inta harami goloub',\n", + " 'ya sarig ehsasi',\n", + " 'wallah aalayk esloub',\n", + " 'dawakhteli raasi',\n", + " 'mallik aani qahar',\n", + " 'w dhouq har al-jamer',\n", + " 'ana mafinee saber',\n", + " 'w khift al-aana bkaasi',\n", + " 'mallik aani qahar',\n", + " 'w dhouq har al-jamer',\n", + " 'ana mafinee saber',\n", + " 'w khift al-aana bkaasi',\n", + " 'inta harami goloub',\n", + " 'ya sarig ehsasi',\n", + " 'wallah aalayk esloub',\n", + " 'dawakhteli raasi',\n", + " 'enta harami gloub',\n", + " 'ya sareg ehsasi',\n", + " 'wallah aalayk esloub',\n", + " 'dawakhteli rassi',\n", + " 'hayartini w yaak',\n", + " 'yaa maalik ashowaqi',\n", + " 'qalb al ghala naadak',\n", + " 'w kaashf lik aw raqi',\n", + " 'hayar tini w yaak',\n", + " 'yaa maalik ashowaqi',\n", + " 'qalb al ghala naadak',\n", + " 'w kaashf lik aw raqi',\n", + " 'abeek w allah abeek',\n", + " 'w maalik bqalbi shaarik',\n", + " 'ana w lhaana aalayk',\n", + " 'yaa aghlaa kil naasi',\n", + " 'abeek w allah abeek',\n", + " 'w maalik bqalbi shaarik',\n", + " 'ana w lhaana aalayk',\n", + " 'yaa aghlaa kil naasi',\n", + " 'enta harami gloub',\n", + " 'ya sareg ehsasi',\n", + " 'wallah aalayk esloub',\n", + " 'dawakhteli rassi',\n", + " 'enta harami gloub',\n", + " 'ya sareg ehsasi',\n", + " 'wallah aalayk esloub',\n", + " 'dawakhteli rassi',\n", + " 'ya dinyiti wiynak',\n", + " 'mishtaga h laaynak',\n", + " 'aatini haqa aydeenak',\n", + " 'w di ana baliqiyaak',\n", + " 'ya dinyiti wiynak',\n", + " 'mishtaga h laaynak',\n", + " 'aatini haqa aydeenak',\n", + " 'w di ana baliqiyaak',\n", + " 'taal omri taal',\n", + " 'maleet aaysh al khayal',\n", + " 'areed hob w wsaal',\n", + " 'taal ya naasi',\n", + " 'taal omri taal',\n", + " 'maleet aaysh al khayal',\n", + " 'areed hob w wsaal',\n", + " 'taal ya naasi',\n", + " 'enta harami gloub',\n", + " 'ya sareg ehsasi',\n", + " 'wallah aalayk esloub',\n", + " 'dawakhteli rassi',\n", + " 'jadon sir ho chat hi lit jaaye',\n", + " 'badhal bijlee sit jaaye',\n", + " 'jadon sir ho chat hi lit jaaye',\n", + " 'badhal bijlee sit jaaye',\n", + " 'likheyah na hi mit jaaye',\n", + " 'dharthi shadh jaaye tha',\n", + " 'phir iko hi kaam tu kare pyaariya',\n", + " 'lehle ohsda naam',\n", + " 'iko hi kaam tu kare pyaariya',\n", + " 'lehle ohsda naam',\n", + " 'jadon duniya rabh hi ban jaaye',\n", + " 'paani aag hi ban jaaye',\n", + " 'ko sawab hi ban jaaye',\n", + " 'na abu ranee na maan',\n", + " 'phir iko hi kaam tu kare pyaariya',\n", + " 'lehle ohsda naam',\n", + " 'iko hi kaam tu kare pyaariya',\n", + " 'lehle ohsda naam',\n", + " 'jadon bhuleya imaan hi nai aave',\n", + " 'hath jhooreya maiman nai aave',\n", + " 'sidhamkar sham hi nai aave',\n", + " 'bulan na banere kat ka',\n", + " 'phir iko hi kaam tu kare pyaariya',\n", + " 'lehle ohsda naam',\n", + " 'iko hi kaam tu kare pyaariya',\n", + " 'lehle ohsda naam',\n", + " 'jadon lookhan le tu maran ture',\n", + " 'sabhan banaye karan ture',\n", + " 'hass hass suni charn ture',\n", + " 'sah rahe na jaayan',\n", + " 'phir iko hi kaam tu kare pyaariya',\n", + " 'lehle ohsda naam',\n", + " 'iko hi kaam tu kare pyaariya',\n", + " 'lehle ohsda naam',\n", + " 'submitted by djkm8175',\n", + " 'kalleyan guzaaran',\n", + " 'keevayn raatan kaalian',\n", + " 'dangdian menu',\n", + " 'rutaan pyar waalian',\n", + " 'teray baajon jee naiyon lagda',\n", + " 'main tay marr gai thaan',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'kalleyan guzaaran',\n", + " 'keevayn raatan kaalian',\n", + " 'dangdian menu',\n", + " 'rutaan pyar waalian',\n", + " 'teray baajon jee naiyon lagda',\n", + " 'main tay marr gai thaan',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'haan diyan sab kudian',\n", + " 'menun taanay dayndian',\n", + " 'haasay haasay day wich',\n", + " 'menun kamli kehndiyan',\n", + " 'haan diyan sab kudian',\n", + " 'menu taanay dayndian',\n", + " 'haasay haasay day vich',\n", + " 'menu kamli kehndiyan',\n", + " 'haan diyan sab kudian',\n", + " 'menu taanay dayndian',\n", + " 'haasay haasay day vich',\n", + " 'menu kamli kehndiyan',\n", + " 'ho',\n", + " 'teray baajon jee naiyon lagda',\n", + " 'main tay marr gai thaan',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'kalleyan guzaaran',\n", + " 'keevayn raatan kaalian',\n", + " 'dangdian menu',\n", + " 'rutaan pyar waalian',\n", + " 'teray baajon jee naiyon lagda',\n", + " 'main tay marr gai thaan',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aonsi aandi ronvaan',\n", + " 'teri rah tay beth kay',\n", + " 'haal meray nu loki',\n", + " 'hansday nay wekh kay',\n", + " 'aonsi aandi ronvaan',\n", + " 'teri rah tay beth kay',\n", + " 'haal meray nu loki',\n", + " 'hansday nay wekh kay',\n", + " 'aonsi aandi ronvaan',\n", + " 'teri rah tay beth kay',\n", + " 'haal meray nu loki',\n", + " 'hansday nay wekh kay',\n", + " 'teray baajon jee naiyon lagda',\n", + " 'main tay marr gai thaan',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'kalleyan guzaaran',\n", + " 'keevayn raatan kaalian',\n", + " 'dangdian menu',\n", + " 'rutaan pyar waalian',\n", + " 'teray baajon jee naiyon lagda',\n", + " 'main tay marr gai thaan',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'dard wandha way khera',\n", + " 'teray baajon aan kay',\n", + " 'khol na bethay koi',\n", + " 'menu teri jaan kay',\n", + " 'dard wandha way khera',\n", + " 'teray baajon aan kay',\n", + " 'khol na bethay koi',\n", + " 'menu teri jaan kay',\n", + " 'teray baajon jee naiyon lagda',\n", + " 'main tay marr gai thaan',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'kalleyan guzaaran',\n", + " 'keevayn raatan kaalian',\n", + " 'dangdian menu',\n", + " 'rutaan pyar waalian',\n", + " 'teray baajon jee naiyon lagda',\n", + " 'main tay marr gai thaan',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya',\n", + " 'aaja sohneya',\n", + " 'ghar aaja sohneya ho...',\n", + " 'mazzika hadya',\n", + " 'w aada aala tarabiza fadya',\n", + " 'b korsi wahed bas liya',\n", + " \"w 'ahweti lmazboota\",\n", + " 'di hagat bassita',\n", + " \"w beb'a w ana baamelha radya\",\n", + " 'w heb eesh el lahza diya',\n", + " \"w beb'a mabsoota\",\n", + " 'eh faydi di tarabiza yaani? korsi tani',\n", + " 'yaly ykoun aaed aalay wahad anani',\n", + " \"adi makan w fag'ana mal'ash makani\",\n", + " 'eesh aashani youmain w yetlaa mosh aashani',\n", + " 'ehtag li hodni li w hiya, el ahwa adfa',\n", + " 'ehtag li alb li w albi, liya awfa',\n", + " \"law fi youm deye't nafsi, ba'ooli asfa\",\n", + " \"amani da fi wahdeti mosh bab'a khayfa\",\n", + " 'mosh mostaaeda',\n", + " 'erga w eid tani li aada',\n", + " \"maba'ash hemla el garh tani\",\n", + " 'aw anam domooi aal makhada',\n", + " 'osloob hayati',\n", + " 'aham min asbeb enbisati',\n", + " 'meen elli al el wahda saaba?',\n", + " 'bel aaks ana f ahsan halati',\n", + " 'eh faydi di tarabiza yaani? korsi tani',\n", + " 'yaly ykoun aaed aalay wahad anani',\n", + " \"adi makan w fag'ana mal'ash makani\",\n", + " 'eesh aashani youmain w yetlaa mosh aashani',\n", + " 'ehtag li hodni li w hiya, el ahwa adfa',\n", + " 'ehtag li alb li w albi, liya awfa',\n", + " \"law fi youm deye't nafsi, ba'ooli asfa\",\n", + " \"amani da fi wahdeti mosh bab'a khayfa\",\n", + " 'ciao!',\n", + " 'sat naam',\n", + " 'sat naam',\n", + " 'sri waheguru',\n", + " 'sri waheguru',\n", + " 'sat naam',\n", + " 'sat naam',\n", + " 'sri waheguru',\n", + " 'sri waheguru',\n", + " 'tumaree sayvaa',\n", + " 'tumaree sayvaa',\n", + " 'ka-un, ka-un',\n", + " 'na taaray',\n", + " 'ka-un, ka-un',\n", + " 'na taaray',\n", + " 'ka-un, ka-un',\n", + " 'na taaray',\n", + " 'ka-un, ka-un',\n", + " 'na taaray',\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'tumaree sayvaa',\n", + " 'tumaree sayvaa',\n", + " 'tumaree sayvaa',\n", + " 'tumaree sayvaa',\n", + " 'ka-un, ka-un',\n", + " 'na taaray',\n", + " 'ka-un, ka-un',\n", + " 'na taaray',\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'jis neech ka-u',\n", + " 'ko-ee na jaanai',\n", + " 'jis neech ka-u',\n", + " 'ko-ee na jaanai',\n", + " 'naam japat ouh',\n", + " 'chahu kunṯ maanai',\n", + " 'naam japat ouh',\n", + " 'chahu kunṯ maanai',\n", + " 'jaa kai nikaṯ',\n", + " 'na aavai ko-ee',\n", + " 'jaa kai nikaṯ',\n", + " 'na aavai ko-ee',\n", + " 'sagal srisaṯ u-aa kay',\n", + " 'charan mal dho-ee',\n", + " 'sagal srisaṯ u-aa kay',\n", + " 'charan mal dho-ee',\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'tumaree sayvaa',\n", + " 'tumaree sayvaa',\n", + " 'tumaree sayvaa',\n", + " 'tumaree sayvaa',\n", + " 'ka-un, ka-un',\n", + " 'na taaray',\n", + " 'ka-un, ka-un',\n", + " 'na taaray',\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'jo praanee kaahoo',\n", + " 'na aavat kaam',\n", + " 'jo praanee kaahoo',\n", + " 'na aavat kaam',\n", + " 'sant prasaad taa',\n", + " 'ko japee-ai naam',\n", + " 'sant prasaad taa',\n", + " 'ko japee-ai naam',\n", + " 'saadhasang man',\n", + " 'sovat jaagay',\n", + " 'saadhasang man',\n", + " 'sovat jaagay',\n", + " 'tab prabh naanak',\n", + " 'meeṯhay laagay',\n", + " 'tab prabh naanak',\n", + " 'meeṯhay laagay',\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'tumaree sayvaa',\n", + " 'tumaree sayvaa',\n", + " 'tumaree sayvaa',\n", + " 'tumaree sayvaa',\n", + " 'ka-un, ka-un',\n", + " 'na taaray',\n", + " 'ka-un, ka-un',\n", + " 'na taaray',\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " \"pi'aaray\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " \"pi'aaray\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " \"pi'aaray\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " \"pi'aaray\",\n", + " \"pi'aaray\",\n", + " \"pi'aaray\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " \"pi'aaray\",\n", + " \"pi'aaray\",\n", + " \"pi'aaray\",\n", + " '(darashan maago)',\n", + " \"(dayhi pi'aaray)\",\n", + " \"pi'aaray\",\n", + " \"pi'aaray\",\n", + " \"pi'aaray\",\n", + " 'darashan maago',\n", + " 'darashan maago',\n", + " 'darashan maago',\n", + " \"dayhi pi'aaray\",\n", + " 'ah',\n", + " 'ya 7abeeby arreblayee',\n", + " 'ta domak be edayee',\n", + " 'ente bet3ref ana sho b7ebak',\n", + " 'we adeesh ghaly 3layee',\n", + " '7abeeby khaleek 7addy',\n", + " 'ghayr 3yonak ma baddy',\n", + " 'ebkhaf lwa7dy eb2a lawa7dy',\n", + " 'law betgheeb eshwayee',\n", + " 'sho b7ebak lama bte7ky',\n", + " 'tersom 3a shafafek de7ky',\n", + " 'sho b7ebak lama betbky , bteshky',\n", + " 'w 3am betghalghel feyyee',\n", + " '7abeeby enta el a7la',\n", + " '3omry be orbak 3am ye7la',\n", + " '3etrak , se7rak , sawtak , rasmak',\n", + " 'saro menni we feyee (2x)',\n", + " 'ya 7abeeb alby tammeny',\n", + " 'enak ma bteb3od 3any',\n", + " 'enta 7oby we ra3shet alby',\n", + " 'we enta noor 3enayee',\n", + " 'ya 7abeeby enta el ghaaly',\n", + " 'enta amar elayaly',\n", + " 'dal abaly we raye7 baly',\n", + " 'we oghmorny be 7enye',\n", + " 'sho b7ebak lama bte7ky',\n", + " 'tersom 3a shafafek de7ky',\n", + " 'sho b7ebak lama betbky , bteshky',\n", + " 'w 3am betghalghel feyyee',\n", + " '7abeeby enta el a7la',\n", + " '3omry be orbak 3am ye7la',\n", + " '3etrak , se7rak , sawtak , rasmak',\n", + " 'saro menni we feyee (2x)',\n", + " 'ya 7abeeby arreblayee',\n", + " 'ent bta3ref adeesh b7ebak',\n", + " 'we adeesh ghaly 3alyee',\n", + " '7abeeby khaleek 7addy',\n", + " 'ghair 3yonak ma baddy',\n", + " 'bkhaaf lewa7dy eb2a lewa7dy',\n", + " 'law betgheeb showayee',\n", + " 'sho b7ebaak ..',\n", + " 'sho b7ebak lama bte7ky',\n", + " 'tersom 3a shafafek de7ky',\n", + " 'sho b7ebak lama betbky , bteshky',\n", + " 'w 3am betghalghel feyyee',\n", + " '7abeeby enta el a7la',\n", + " '3omry be orbak 3am ye7la',\n", + " '3etrak , se7rak , sawtak , rasmak',\n", + " 'saro menni we feyee (3x)',\n", + " 'ibal lahl arou-sah om-yah-lee',\n", + " 'yah al-bil kou-rou-dil menyaah',\n", + " 'is-bahl kou-tul - ham-mahn ou-saw',\n", + " 'ahl-bi yam-mil kaw-lil laah',\n", + " 'is-bahl ahl-bi im-mil mous-saw heenal - my-dil',\n", + " \"has-bi kaw-lahl arah-baw heena yas'a-lou-na il 'araw-til\",\n", + " '- eehl laah',\n", + " \"fis-'ahm mil kaw-waah-reeh yaah\",\n", + " \"mi-'aa-nihl kou-laah- aah - leeh - aah\",\n", + " 'ay-nah ou-saw kooh nahn min kah-rah-baw',\n", + " \"has-di khamf 'alah ay-nahl musam-meh il-lah tou-lihl\",\n", + " 'kah-reeb',\n", + " 'has-dihl kou-toh ub-beehl ul-ou-saw',\n", + " 'wah oul-leel-arah-baw - wah oul-leel-arah-baw -',\n", + " 'wah oul-leel-',\n", + " 'yaa hub-bi al-mas-daw-nih ah-naay as-dee lil-kou-ral',\n", + " 'yaah',\n", + " \"mis-'aal bar'oun-nih\",\n", + " \"ya 'es-ta-khal-lahl 'am-duh uhm-mee a-raah kah -\",\n", + " 'yum-mi yam-mah',\n", + " 'as-dee naa-bi yam-mah - al-kharou-si yam-ma',\n", + " 'as-ta-wou lee il-lee yam-mah li-laah',\n", + " \"uk-rou 'ou-lee il-oh-daah daw-wah\",\n", + " 'oul-lee ya ahl-bi',\n", + " 'oul-lee ya um-mee',\n", + " 'oul-lee ya sa-hib',\n", + " 'mukhtasar mulaakat hai',\n", + " 'ankahi koi baat hai',\n", + " 'phir raat ki shaitaniyaan',\n", + " 'yaa alag yeh jazbaat hai',\n", + " 'mukhtasar mulaakat hai',\n", + " 'ankahi koi baat hai',\n", + " 'ankahi koi baat hai',\n", + " 'mukhtasar mulaakat hai',\n", + " 'ankahi koi baat hai',\n", + " 'phir raat ki, shaitaniyaan',\n", + " 'ya alag, yeh jazbaat hai',\n", + " \"i can't control this feeling\",\n", + " \"don't know whats going on\",\n", + " 'but i wanna let go, oo woo',\n", + " 'mausam yeh kehta hai',\n", + " 'bheege andheron mein',\n", + " 'dubki lagaatein hain aa',\n", + " 'par mujhko lagta hai',\n", + " 'main rok loon khudhko',\n", + " 'ehsaas hai yeh naya',\n", + " 'kya hua.. main hoon bekhabar',\n", + " 'hai naya sa suhaana asar',\n", + " 'jeet hai ya maat hai',\n", + " 'mukhtasar mulaakat hai',\n", + " 'ankahi koi baat hai',\n", + " 'yeh toh suna tha',\n", + " 'ke kuch aisa hota hai',\n", + " 'par mujhko bhi, ho gaya',\n", + " 'meri toh duniya, bilkul alag thi',\n", + " 'andaaz woh, kho gaya',\n", + " 'dekhna doobna ho gaya',\n", + " 'doobna tayrna ho gaya',\n", + " 'kya asar mere saath hai',\n", + " 'mukhtasar mulaakat hai',\n", + " 'ankahi koi baat hai',\n", + " 'phir raat ki, shaitaniyan',\n", + " 'ya alag, yeh jazbaat hai',\n", + " \"welli l'darek wine raki rayha\",\n", + " 'ma golt aayb ma golt kelma tayha',\n", + " \"welli l'darek hadi zaafa ou fayta\",\n", + " 'ki sekkerni zaafek tgouli ntaaa',\n", + " \"hadi halet l'meryool ki ghadi ngool ou ya layli\",\n", + " \"essbah n'sallem wa'ashiyya problem ou yaaa\",\n", + " \"aaah hadi halet l'meryool ki ghadi ngool ou ya layli\",\n", + " \"essbah n'sallem wa'ashiyya problem ou yaaa\",\n", + " \"welli l'darek wine raki rayha\",\n", + " 'ma golt aayb ma golt kelma tayha',\n", + " \"welli l'darek hadi zaafa ou fayta\",\n", + " 'ki sekkerni zaafek tgouli ntaaa',\n", + " \"men baad ma kont moul l'khayma wellit etranger ou ya layli\",\n", + " \"shar'aou li bil'ghaybi ou galou bondi ou yaaa\",\n", + " \"men baad ma kont moul l'khayma wellit etranger ou ya layli\",\n", + " \"shar'aou li bil'ghaybi ou galou bondi ou yaaa\",\n", + " \"welli l'darek wine raki rayha\",\n", + " 'ma golt aayb ma golt kelma tayha',\n", + " \"welli l'darek hadi zaafa ou fayta\",\n", + " 'ki sekkerni zaafek tgouli ntaaa',\n", + " 'haddertek ou eddigri... eshtegt... khallooni nshek ou ya layli',\n", + " \"wella bayet feddalma fi'ssema l'barda ou yaaa\",\n", + " 'haddertek ou eddigri... eshtegt... khallooni nshek ou ya layli',\n", + " \"wella bayet feddalma fi'ssema l'barda ou yaaa\",\n", + " \"welli l'darek wine raki rayha\",\n", + " 'ma golt aayb ma golt kelma tayha',\n", + " \"welli l'darek hadi zaafa ou fayta\",\n", + " 'ki sekkerni zaafek tgouli ntaaa',\n", + " 'what it is',\n", + " 'what it is (yah)',\n", + " 'what it is (ooh)',\n", + " 'what it is (ooh)',\n", + " \"what it is, what it ain't\",\n", + " 'what it is',\n", + " 'what it is',\n", + " 'what it is (ooh-ooh)',\n", + " \"what it is, what it ain't\",\n", + " 'what it is',\n", + " 'what it is (ooh)',\n", + " \"what it is, what it ain't\",\n", + " 'what it is (ooh)',\n", + " 'what it is (sheesh, sheesh)',\n", + " 'what it is (ooh)',\n", + " 'what it is',\n", + " \"what it is, what it ain't\",\n", + " 'what it is',\n", + " 'what it is',\n", + " 'what it is',\n", + " 'what it is',\n", + " 'what it is',\n", + " 'what it is',\n", + " \"what it is, what it ain't\",\n", + " 'what it is',\n", + " 'what it is',\n", + " 'what it is',\n", + " \"what it is, what it ain't\",\n", + " 'what it is',\n", + " 'what it is',\n", + " 'what it is',\n", + " \"what it is, what it ain't\",\n", + " 'goleh man ey nazaninam',\n", + " 'to azizeh delami',\n", + " 'to azizeh delami',\n", + " 'to azizeh delami',\n", + " 'to cheshat nashineh shabnam',\n", + " 'to azizeh delami',\n", + " 'to azizeh delami',\n", + " 'to azizeh delami',\n", + " 'mane dar be dar migardam tuyeh shahre cheshat',\n", + " 'to koocheye khaterat',\n", + " 'ta miyad ru ghabeh panjereh mishineh neghat',\n", + " 'rasti mimiram barat',\n", + " 'toro har kas ke nanide',\n", + " 'maste khoobi to shenide',\n", + " 'ey to hase bi tahamol',\n", + " 'to azizeh delami',\n", + " 'to azizeh delami',\n", + " 'to azizeh delami',\n", + " 'ru cheshat nashine shabnam',\n", + " 'tane to zarif tar az gol',\n", + " 'toh azize delami',\n", + " 'to azizeh delami',\n", + " 'to azizeh delami',\n", + " 'doone doone',\n", + " 'gole poone',\n", + " 'mirizam be rooye moohat',\n", + " 'daste daste',\n", + " 'gole maryam',\n", + " 'mirizam jaye ghadamhat',\n", + " 'dele to jedseye halmas',\n", + " 'arzeshesh bishtar az inhast',\n", + " 'goleh man ey nazaninam',\n", + " 'to azizeh delami',\n", + " 'to azizeh delami',\n", + " 'to azizeh delami',\n", + " 'tu cheshat nashineh shabnam',\n", + " 'to azizeh delami',\n", + " 'to azizeh delami',\n", + " 'to azizeh delami',\n", + " 'chikni chameli',\n", + " '電影: agneepath 演唱者: shreya ghoshal',\n", + " 'bichhoo mere naina badi zehereeli ankh maare',\n", + " 'kamsin kamariya saali ik thumke se lakh maare',\n", + " 'bichhoo mere naina badi zehereeli ankh maare',\n", + " 'kamsin kamariya saali ik thumke se lakh maare',\n", + " 'note hazaaron ke, khulle chhutta karaane aayi',\n", + " 'husn ki teeli se beedi chillam jalaane aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'jungle mein aaj mangal karungi',\n", + " 'bhookhe sheron se khelungi main',\n", + " 'makkhan jaisi hatheli pe angaare le lungi main',\n", + " 'haaye! gehre paani ki machhli hoon raja',\n", + " 'ghaat ghaat dariya mein ghoomi hoon main',\n", + " 'teri nazron ki lehron se haar ke doobi hoon main',\n", + " 'hoye jaanleva jalwa hai',\n", + " 'dekhne mein halwa hai',\n", + " 'jaanleva jalwa hai',\n", + " 'dekhne mein halwa hai',\n", + " 'pyaar se paros doongi toot le zaraa',\n", + " 'yeh toh trailer hai poori filam dikhane aayi',\n", + " 'husn ki teeli se beedi chilam jalaane aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'banjar basti mein aayi hai masti',\n", + " 'aisa namkeen chehra tera',\n", + " 'meri neeyat pe chadhke chhoote na hai rang gehra tera',\n", + " 'joban ye mera crajy hai raja',\n", + " 'saare pardo ko kaatungi main',\n", + " 'shaamein meri akeli hain aaja sang tere baatungi main',\n", + " 'haaye! baaton mein ishaara hai',\n", + " 'jisme khel saara hai',\n", + " 'baaton mein ishaara hai',\n", + " 'jisme khel saara hai',\n", + " 'tod ke tijoriyon ko loot le zara',\n", + " 'choom ke zakhmo pe thoda malham lagaane aayi',\n", + " 'husn ki teeli se beedi chillam jalaane aayi',\n", + " 'aayi chikni aayi aayi chikni aayi aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'da rhay-sy o’',\n", + " 'mal lay-rhee o’',\n", + " 'sav-ay-ly o’',\n", + " 'kad-ay-ly o’',\n", + " 'hey o nay kor-rhe-ay',\n", + " 'ah hey o nay ka ru mmay',\n", + " 'eh hymm a vl-la rhe-ea kan',\n", + " 'eh hymm a ka lla mmay o an',\n", + " 'o ay ka nee hymm nno hymm',\n", + " 'o ay ka nee hymm nno hymm a rhay',\n", + " 'hii-yha…',\n", + " 'hii-yha…',\n", + " 'hii-yha…',\n", + " 'hii-yha…',\n", + " 'he-ah vi-iya me-ne mmay',\n", + " ...]},\n", + " 'data': ['binte dil misiriya mein',\n", + " 'binte dil misiriya mein...',\n", + " 'binte dil misiriya mein',\n", + " 'binte dil misiriya mein...',\n", + " 'pesh hai kullu-shabab',\n", + " 'khidmat-e-aali janaab',\n", + " 'pesh hai kullu-shabab',\n", + " 'khidmat-e-aali janaab',\n", + " 'aatish qadah adaaon se',\n", + " 'aatish qadah adaaon se',\n", + " 'jal uthega aapke',\n", + " 'deeda-e-tar ka hijaab',\n", + " 'binte dil misiriya mein',\n", + " 'binte dil misiriya mein…',\n", + " 'maykash labon pe aane lagi hai',\n", + " 'pyasi qurbatein',\n", + " 'hairatzada thikane lagi hain',\n", + " 'saari furqatein',\n", + " 'maykash labon pe aane lagi hai',\n", + " 'pyasi qurbatein',\n", + " 'hairatzada thikane lagi hain',\n", + " 'saari furqatein',\n", + " 'kaarizon pe mere likh zara',\n", + " 'rif’atein chahaton ka sila…',\n", + " 'binte dil misiriya mein',\n", + " 'binte dil misiriya mein',\n", + " 'pesh hai kullu-shabab',\n", + " 'khidmat-e-aali janaab',\n", + " 'pesh hai kullu-shabab',\n", + " 'khidmat-e-aali janaab',\n", + " 'aatish qadah adaaon se',\n", + " 'aatish qadah adaaon se',\n", + " 'jal uthega aapke',\n", + " 'deeda-e-tar ka hijaab',\n", + " 'binte dil misiriya mein',\n", + " 'binte dil misiriya mein…',\n", + " 'binte dil misiriya mein',\n", + " 'binte dil misiriya mein…',\n", + " 'maula',\n", + " 'maula',\n", + " 'mere maula',\n", + " 'maula re',\n", + " 'maula',\n", + " 'mere maula',\n", + " 'maula re',\n", + " 'maula',\n", + " 'maula',\n", + " 'maula',\n", + " 'maula',\n", + " 'maula-i kull',\n", + " 'maula-i kull',\n", + " 'maula-i kull karde ga tu jo ik nazar',\n", + " 'karde ga tu jo ik nazar',\n", + " 'saare gunaah jaaeen ge dhul',\n", + " 'maula-i kull',\n", + " 'maula-i kull',\n", + " 'main be-khabar tu ba-khabar',\n", + " 'main be-khabar tu ba-khabar',\n", + " 'jalwah tera noor-i sahar',\n", + " 'jalwah tera noor-i sahar',\n", + " 'karde ga tu jo ik nazar',\n", + " 'karde ga tu jo ik nazar',\n", + " 'band raaste jaaen ge khul',\n", + " 'maula-i kull',\n", + " 'maula-i kull',\n", + " 'be-rang men har rang tu',\n", + " 'be-rang men har rang tu',\n", + " 'teri mujhe hai just-o-ju',\n", + " 'teri mujhe hai just-o-ju',\n", + " 'karde ga tu jo ik nazar',\n", + " 'karde ga tu jo ik nazar',\n", + " 'rang ‘ishq ke jaaenge ghul',\n", + " 'maula-i kull',\n", + " 'maula-i kull',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'banda-i murtaza ali hastam',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'banda-i murtaza ali hastam',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'ek hi sooratiya ki',\n", + " 'ek hi sooratiya ki do hain mooratiya',\n", + " 'ek muhammad ek ali',\n", + " 'ali',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'banda-i murtaza ali hastam',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'bedam yahi to paanch hain',\n", + " 'bedam yahi to paanch hain maqsood-i kaainaat',\n", + " 'bedam yahi to paanch hain maqsood-i kaainaat',\n", + " 'khair un-nisa husain o hasan mustafa ali',\n", + " 'khair un-nisa',\n", + " 'ya saiyidah',\n", + " 'ya saiyidah',\n", + " 'ya saiyidah',\n", + " 'khair un-nisa husain o hasan mustafa ali',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'banda-i murtaza ali hastam',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'az mai-i ‘ishq-i shaah sar-mastam',\n", + " 'banda-i murtaza ali hastam',\n", + " 'man bah ghair az ali na-daanistam',\n", + " 'ali allah az azal guftam',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'banda-i murtaza ali hastam',\n", + " 'haidari-am qalandar-am mast-am',\n", + " 'maula',\n", + " 'maula-i kull',\n", + " 'maula',\n", + " 'maula-i kull',\n", + " 'maula',\n", + " 'maula ali maula',\n", + " 'ali ali ali ali ali',\n", + " 'ya ali',\n", + " 'ya ali maula',\n", + " 'maula',\n", + " 'maula',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do',\n", + " 'mahna mahna',\n", + " 'do do-do do',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do',\n", + " 'mahna mahna',\n", + " 'do do-do do',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do',\n", + " 'mahna mahna',\n", + " 'do do-do do',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do',\n", + " 'mahna mahna',\n", + " 'do do-do do',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do',\n", + " 'mahna mahna',\n", + " 'do do-do do',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do',\n", + " 'mahna mahna',\n", + " 'do do-do do',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", + " 'mahna mahna!',\n", + " 'raen saari, raen saari, raen saari, raen',\n", + " 'kabhi bheege bhigaaye ladaaye churaaye se... rahe nain...',\n", + " 'raen saari, raen saari, raen saari, raen -',\n", + " 'kabhi meelon milaaye se bhoole bhuaalye se ...rahe chain',\n", + " 'thaare rahen, haare rahen, vaare rahen... haaan... saari raen...',\n", + " 'jhaara jhari, taara tarri, bara dari... haaan... saari raen...',\n", + " 'badri badariya. ghiri re...',\n", + " 'kajri kajariya. khiri re...',\n", + " 'gagri gagariya. bhari re...',\n", + " 'kajri kajariya. khiri re...',\n", + " 'badri badariya. ghiri re...',\n", + " 'kajri kajariya. khiri re...',\n", + " 'gagri gagariya. bhari re...',\n", + " 'kajri kajariya. khiri re...',\n", + " 'saajan ke ang ang, lagi re',\n", + " 'saajan ke rang rang, saji re',\n", + " 'bulbul tarang mein, baji re',\n", + " 'shanana nanana nanana nana shan shan',\n", + " 'badri badariya. ghiri re...',\n", + " 'kajri kajariya. khiri re...',\n", + " 'gagri gagariya. bhari re...',\n", + " 'kajri kajariya. khiri re...',\n", + " 'sa ra ra ras barsa',\n", + " 'tarr gaya... turr gaya...',\n", + " 'mora rasiya...',\n", + " 'sa ra ra ras barsa',\n", + " 'tarr gaya... turr gaya...',\n", + " 'mora rasiya...',\n", + " 'aaaaa saawan ki saawri',\n", + " 'piya mann baawri',\n", + " 'pihu pihaare phiri re...',\n", + " 'badri badariya. ghiri re...',\n", + " 'kajri kajariya. khiri re...',\n", + " 'gagri gagariya. bhari re...',\n", + " 'kajri kajariya. khiri re...',\n", + " 'pehli phuaar mein, chhili re...',\n", + " 'peepal ki chhaon mein, khili re...',\n", + " 'bulbul tarang mein, baji re',\n", + " 'shanana nanana nanana nana shan shan',\n", + " 'sa ra ra ras barsa',\n", + " 'tarr gaya... turr gaya...',\n", + " 'mora rasiya...',\n", + " 'sa ra ra ras barsa',\n", + " 'tarr gaya... turr gaya...',\n", + " 'mora rasiya...',\n", + " 'aaaaa saawan ki saawri',\n", + " 'piya mann baawri',\n", + " 'pihu pihaare phiri re',\n", + " 'badri badariya. ghiri re...',\n", + " 'kajri kajariya. khiri re...',\n", + " 'gagri gagariya. bhari re...',\n", + " 'kajri kajariya. khiri re...',\n", + " 'raen saari, raen saari, raen saari, raen',\n", + " 'kabhi bheege bhigaaye ladaaye churaaye se... rahe nain...',\n", + " 'raen saari, raen saari, raen saari, raen -',\n", + " 'kabhi meelon milaaye se bhoole bhuaalye se ...rahe chain',\n", + " 'raen saari, raen saari, raen saari, raen',\n", + " 'kabhi bheege bhigaaye ladaaye churaaye se... rahe nain...',\n", + " 'raen saari, raen saari, raen saari, raen -',\n", + " 'kabhi meelon milaaye se bhoole bhuaalye se ...rahe chain',\n", + " 'bichhoo mere naina badi zehereeli ankh maare',\n", + " 'kamsin kamariya saali ik thumke se lakh maare',\n", + " 'bichhoo mere naina badi zehereeli ankh maare',\n", + " 'kamsin kamariya saali ik thumke se lakh maare',\n", + " 'note hazaaron ke, khulle chhutta karaane aayi',\n", + " 'husn ki teeli se beedi chillam jalaane aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'jungle mein aaj mangal karungi',\n", + " 'bhookhe sheron se khelungi main',\n", + " 'makkhan jaisi hatheli pe angaare le lungi main',\n", + " 'haaye! gehre paani ki machhli hoon raja',\n", + " 'ghaat ghaat dariya mein ghoomi hoon main',\n", + " 'teri nazron ki lehron se haar ke doobi hoon main',\n", + " 'hoye jaanleva jalwa hai',\n", + " 'dekhne mein halwa hai',\n", + " 'jaanleva jalwa hai',\n", + " 'dekhne mein halwa hai',\n", + " 'pyaar se paros doongi toot le zaraa',\n", + " 'yeh toh trailer hai poori filam dikhane aayi',\n", + " 'husn ki teeli se beedi chilam jalaane aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'banjar basti mein aayi hai masti',\n", + " 'aisa namkeen chehra tera',\n", + " 'meri neeyat pe chadhke chhoote na hai rang gehra tera',\n", + " 'joban ye mera crajy hai raja',\n", + " 'saare pardo ko kaatungi main',\n", + " 'shaamein meri akeli hain aaja sang tere baatungi main',\n", + " 'haaye! baaton mein ishaara hai',\n", + " 'jisme khel saara hai',\n", + " 'baaton mein ishaara hai',\n", + " 'jisme khel saara hai',\n", + " 'tod ke tijoriyon ko loot le zara',\n", + " 'choom ke zakhmo pe thoda malham lagaane aayi',\n", + " 'husn ki teeli se beedi chillam jalaane aayi',\n", + " 'aayi chikni aayi aayi chikni aayi aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be',\n", + " 'mah-na-mah-na',\n", + " 'bah-do-be-be',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", + " 'bah-do-be, do-be-de-de-de-de',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be',\n", + " 'mah-na-mah-na',\n", + " 'bah-do-be-do',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", + " 'bah-do-be, do-be-de-de-de-de',\n", + " 'mah, mah-mah-na-mah-na-man-na-na',\n", + " 'man, mah-mah-mah, mah-na-na',\n", + " 'mah',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be',\n", + " 'mah-na-mah-na',\n", + " 'bah-do-be-do',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", + " 'bah-do-be, do-be-de-de-de-de',\n", + " 'mah-na-mah-na-mah-na-mah-na',\n", + " 'mah-na-mah-mah-man',\n", + " 'mah-na-mah-mah-na-mah-mah-mah',\n", + " 'eh-be-de-mah-mah',\n", + " 'wah-wah-ba-na-na',\n", + " 'beedy-be-be-be',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be',\n", + " 'mah-na-mah-na',\n", + " 'bah-do-be-do',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", + " 'bah-do-be, do-be-de-de-de-de',\n", + " 'mah-eh-mah-na-mah-na',\n", + " 'mah-na-mah-na-mah-mah-na-mah',\n", + " 'mah-na-mah-mah-mah, mah-mah-na-mah-eh, man-eh',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be',\n", + " 'mah-na-mah-na',\n", + " 'bah-do-be-be',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", + " 'bah-do-be, do-be-de-de-de-de',\n", + " 'mah-eh-mah-na-mah-na',\n", + " 'mah-na-mah-na-mah-mah-na-mah-eh-boo-bada-boo',\n", + " 'moon-ah-na-moo-moo, meen-ah-meen-ah-meen-meen',\n", + " 'nee-nee-nee-nee-neh, nee-neh, eh',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be',\n", + " 'mah-na-mah-na',\n", + " 'bah-do-be-be',\n", + " 'mah-na-mah-na',\n", + " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", + " 'bah-do-be, do-be-de-de-de-de',\n", + " 'mah-na-mah-na',\n", + " 'o tora saajan ayo tore des',\n", + " 'badli badla badla saavan',\n", + " 'badla jag ne bhes re....',\n", + " 'tora saajan ayo tore des re..e..e..e',\n", + " 'soyi soyi palkon pe chalke',\n", + " 'mere sapno ki khidki pe aa gaya',\n", + " 'aate jate phir mere dil ke inn hathon mein wo khat pakda gaya',\n", + " 'pyar ka...',\n", + " 'lafzon mein rang hai pyaar ka',\n", + " '(bahara bahara hua dil pehli baar ve',\n", + " 'bahara bahara ke chain tho hua pharar ve) ×2',\n", + " 'o.. tora saajan ayo tore des',\n", + " 'badli badla badla saavan',\n", + " 'badla jag ne bhes re...',\n", + " 'tora sajan ayo tore des re..e..e',\n", + " 'wo.. kabhi dikhe zameen pe kabhi wo chand pe..',\n", + " 'ye ..e..e.. nazar kahe use yahan',\n", + " 'main rakhloon bandhke',\n", + " 'ik sans main dhadkanon ke paas main',\n", + " 'haan paas main ghar banaye hay bhoole ye jahan',\n", + " '(bahara bahara hua dil pehli baar ve',\n", + " 'bahara bahara ke chain tho hua pharar ve)×2',\n", + " 'beech main tori o re savaria',\n", + " 'payal jaise khanke tijhuri',\n", + " 'cham cham nache dil pe badaria',\n", + " 'ho..o..o..o..o',\n", + " 'savaria tu barse ghana',\n", + " 'barse ghana',\n", + " 'barse ghana',\n", + " 'aa...a...a...a...a..',\n", + " 'nanadhinanadinanan nananana...',\n", + " 'wo..ye badliyan jo ched de toh chal ke barishe',\n", + " 'wo..de aahate karib se',\n", + " 'toh bole khwahishen ke aaj kal zindagi har ek pal',\n", + " 'har ek pal se chahe haye jiska dil hua',\n", + " '(bahara bahara hua dil pehli baar ve',\n", + " 'bahara bahara ke chain tho hua pharar ve) ×2',\n", + " 'soyi soyi palkon pe chalke',\n", + " 'mere sapno ki khidki pe aa gaya',\n", + " 'aate jate phir mere dil ke',\n", + " 'inn hathon mein wo khat pakda gaya pyaar ka',\n", + " 'lafzon mein rang hai pyaar ka',\n", + " '(bahara bahara hua dil pehli baar ve',\n", + " 'bahara bahara ke chain tho hua pharar ve)×2',\n", + " 'do do do do do de do do do do do do do do do',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do',\n", + " 'mahna mahna',\n", + " 'do do-do do',\n", + " 'mahna mahna',\n", + " 'do doo de-do-do de-do-do de-do-do de-do-do-doodle do do do-doo do!',\n", + " 'do do do do do de do do do do do do do do do',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do',\n", + " 'mahna mahna',\n", + " 'do do-do do',\n", + " 'mahna mahna',\n", + " 'do doo de-do-do de-do-do de-do-do de-do-do-doodle do do do-doo do!',\n", + " 'do do do do do de do do do do do do do do do',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do',\n", + " 'mahna mahna',\n", + " 'do do-do do',\n", + " 'mahna mahna',\n", + " 'do doo de-do-do de-do-do de-do-do de-do-do-doodle do do do-doo do!',\n", + " 'do do do do do de do do do do do do do do do',\n", + " 'mahna mahna',\n", + " 'do doo be-do-do',\n", + " 'mahna mahna',\n", + " 'do do-do do',\n", + " 'mahna mahna',\n", + " 'do doo de-do-do de-do-do de-do-do de-do-do-doodle do do do-doo do!!!',\n", + " 'kal majni je haath main',\n", + " 'sej karam da kann',\n", + " 'varo variyaon aangna',\n", + " 'seke anganji agyata nikal',\n", + " 'maida mehboob ban',\n", + " 'teke pucchan layak na aaye',\n", + " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 'dijiniya po niyaaj ma, dijiniya po niyaaj ma',\n", + " 'bandi paigam da, haye van yaad kare diji yaar ki',\n", + " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 'khanaabadosh sa, chale rooh-e- mukaddar ka raastaa',\n", + " 'dil mazaar sa, kyun yeh rakkhe sabhi se yun waastaa',\n", + " 'sab pighal ke khatam ho, hey niyam ye sakht jo',\n", + " 'jaan udhaar ki, lautaani hai kisko kya pataa',\n", + " 'maangaa sa, hai yeh cheena saa',\n", + " 'barbas, leke jeenaa kaisaa karjaa',\n", + " 'chaara gira,chaara gira',\n", + " 'chaara giraa, saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 'chaara gira, saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 'hin bande band kyu kaiyon',\n", + " 'araaj avanje la miya',\n", + " 'hin bande band kyu kaiyon',\n", + " 'araaj avanje la miya',\n", + " 'assi aavanja aiyodi',\n", + " 'assi aavanja aiyodi',\n", + " 'goli gulam da,haye van yaad kare diji yaar ki',\n", + " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 've bandeya, ve bandiya',\n", + " 'jive bandeya..',\n", + " 'saari haqeeqat jhooth hai',\n", + " 'nuskhaa naseehat bhoot hai',\n", + " 'dikkat beepat phoonk de',\n", + " 'utaar phenk de',\n", + " 'sir pe se saaraa muaawjaa',\n", + " 'issmain aavanja jo ho atham',\n", + " 'simbhar safar main miya',\n", + " 'issmain aavanja jo ho atham',\n", + " 'simbhar safar main miya',\n", + " 'vil visariya keen ki',\n", + " 'vil visariya keen ki',\n", + " 'nala hi naamda, haye van yaad kare diji yaar ki',\n", + " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 'sab pighal ke khatam ho, hey niyam ye sakht jo',\n", + " 'jaan udhaar ki, lautaani hai kisko kya pataa',\n", + " 'maangaa sa, hai ye cheena saa',\n", + " 'barbas, leke jeenaa kaisaa karjaa',\n", + " 'chaara gira,chaara gira',\n", + " 'chaara giraa, saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 'chaara gira, saathi salaam da, haye van yaad kare diji yaar ki',\n", + " 'chaara gira, chaara gira',\n", + " 'chaar gira, chaara gira',\n", + " 'chindra chawana sachvi mathe muran bha',\n", + " 'kadi ubahri thordo , kadi ubari to gach',\n", + " 'tu main bare much kadam triyanje ser main',\n", + " 'tu main bare much kadam triyanje ser main',\n", + " 'oh miya',\n", + " 'hor ki mangna mein rab kolo',\n", + " 'ik khair manga tere dum di',\n", + " 'baaj sajan lajpaal tere',\n", + " 'main ko jiyan kehde kam di',\n", + " 'pal pal maane sukhve hazaara',\n", + " 'ghadi vekhe na koi alam di',\n", + " 'ho badar hamesha maula rakhe',\n", + " 'dhola tainte nazar karam di',\n", + " 'nit khair manga soniya main teri',\n", + " 'dua na koi hor mangdi',\n", + " 'tere pairaan ch akheer hove meri',\n", + " 'dua na koi hor mangdi',\n", + " 'tera vaal vingaa na hove',\n", + " 'teri aayi mein mar jaavaan',\n", + " 'dum dum khair kare rabb teri',\n", + " 'manga roz mein sajn duawaan',\n", + " 'sadka tera mein ye jindadi',\n", + " 'lakh waari dhol gumava',\n", + " 'peer shabbir da sadka dhola',\n", + " 'tenu lagn na garm hawava',\n", + " 'jug jug jivey shaala tu',\n", + " 'teri aayi mein mar jaava',\n", + " 'tere pyar ditta jado da sahara ve',\n", + " 'mainu bhul gaya maahiya jag sara ve',\n", + " 'khushi eho mainu sajna batheri',\n", + " 'dua na koi hor mangdi',\n", + " 'tere pairaan ch akheer hove meri',\n", + " 'dua na koi hor mangdi',\n", + " 'nit khair manga soniya main teri',\n", + " 'dua na koi hor mangdi',\n", + " 'tu mileya te mil gayi khudayi ve',\n", + " 'hath jod akhaan payee na judaayi ve',\n", + " 'mar javangi je akh mein tho pheri',\n", + " 'dua na koi hor mangdi',\n", + " 'paawan waasta ve kalli chadd jaavina',\n", + " 'haasa menu kitte jag da banai na',\n", + " 'shaala chulle na judaiya diha neri',\n", + " 'dua na koi hor mangdi',\n", + " 'tere pairaan ch akheer hove meri',\n", + " 'dua na koi hor mangdi',\n", + " 'nit khair manga soniya main teri',\n", + " 'dua na koi hor mangdi',\n", + " 'ae khaira dum dum dhola manga teriya',\n", + " 'shaala lag jaan tainu saanva meriya',\n", + " 'mein te mar ke vi rehna mahiya teri',\n", + " 'dua na koi hor mangdi',\n", + " 'tere pairaan ch akheer hove meri',\n", + " 'dua na koi hor mangdi',\n", + " 'nit khair manga soniya main teri',\n", + " 'dua na koi hor mangdi',\n", + " 'eho rab kolo mangiyaan duawaan main',\n", + " 'allah kare teri aayi mar javaan main',\n", + " 'hathi badar banaavi saadi dheri',\n", + " 'dua na koi hor mangdi',\n", + " 'tere pairaan ch akheer hove meri',\n", + " 'dua na koi hor mangdi',\n", + " 'nit khair manga soniya main teri',\n", + " 'dua na koi hor mangdi',\n", + " 'aashiyaana mera saath tere hai na',\n", + " 'dhoondte teri gali mujhko ghar mila',\n", + " 'aab-o-daana mera haath tere hai na',\n", + " 'dhoondte tera khuda mujhko rab mila',\n", + " 'tu jo mila lo ho gaya main qaabil',\n", + " 'tu jo mila to ho gaya sab haasil haan!',\n", + " 'mushqil sahi aasaan hui manzil',\n", + " 'kyunki tu.. dhad.kan.. main dil…',\n", + " 'rooth jaana tera',\n", + " 'maan jaana mera',\n", + " 'dhoondhte teri hansi',\n", + " 'mill gayi khushi',\n", + " 'raah hoon main teri',\n", + " 'rooh hai tu meri',\n", + " 'dhoondhte tere nishaan',\n", + " 'mill gayi khudi',\n", + " 'tu jo mila lo ho gaya main qaabil',\n", + " 'tu jo mila to ho gaya sab haasil haan!',\n", + " 'mushqil sahi aasaan hui manzil',\n", + " 'kyunki tu.. dhadkan.. main dil…',\n", + " 'o…',\n", + " 'tu jo mila lo ho gaya main qaabil',\n", + " 'tu jo mila to ho gaya sab haasil.. haan!',\n", + " 'tu jo mila aasaan hui mushqil',\n", + " 'kyunki tu dhadkan.. main dil…']}}},\n", + " 'sq': {'sentence': {'pop': {'meta': {'train_data': [\"wakin' up asa me ga samete futto kanojo ga satte ikuyou na\",\n", + " 'tojiru to mieteiru monoga hirakuto mienakunaru genjitsu',\n", + " 'nani mo sondeinaiyo, tada hito koto dake wonderfull wonderfull',\n", + " 'is all i need to hear me ni mienakute',\n", + " \"sometimes i feel like cavin' in nani ka ni semararete iruyouna\",\n", + " 'i wonder why? ima made konna ni chisai jibun ni kizukenaide',\n", + " 'subete o moto ni modosou toshite donna ni kako o sosuttemitemo',\n", + " \"i'm right in yumede mite yume\",\n", + " \"ohh.. it's still turnin' around\",\n", + " \"it's so nandomo meguri meguru\",\n", + " 'alright now',\n", + " \"it's still turnin' around\",\n", + " 'demo ashita wa kittokurukara',\n", + " 'alright now',\n", + " \"what if i'm the only one? hikari ga tashika ni ashimoto o tomoshiteite\",\n", + " 'sukushi zutsu sukushi zutsu dakedo shinjiteru boku no mukau beki basho ga',\n", + " 'is this really now the only way through? sokoni wa itsudemo kimi ga ite',\n", + " 'kataku omoi kono tobira nokku suru yo',\n", + " 'boku kara hanashi o suru yo kimi ga iwareru sono mae ni',\n", + " 'furi kaeru to yoku mieru kara i can see all three sides from here',\n", + " 'mirai wa dareni mo mienai kedo kimi to futari nara yakusoku dekiru',\n", + " \"i'm right in shizuka ni naraku\",\n", + " \"ohh.. it's still turnin' around\",\n", + " \"it's so nandomo meguri meguru\",\n", + " 'alright now',\n", + " \"it's still turnin' around\",\n", + " 'demo ashita wa kittokurukara',\n", + " 'alright now',\n", + " \"sometimes when everything's dark i take a lil' time and make sure it's all real\",\n", + " \"sometimes when i'm alone i think about what the hell went wrong\",\n", + " 'i look right out the door and see that all of this is turning',\n", + " \"ohh.. it's still turnin' around\",\n", + " \"it's so nandomo meguri meguru\",\n", + " 'alright now',\n", + " \"it's still turnin' around\",\n", + " 'demo ashita wa kittokurukara',\n", + " 'alright now',\n", + " \"sometimes i feel like cavin' in nani ka ni semararete iruyouna\",\n", + " 'i wonder why? ima made konna ni chisai jibun ni kizukenaide',\n", + " 'mirai wa dareni mo mienai kedo kimi to futari nara yakusoku dekiru',\n", + " \"i'm right\",\n", + " 'alriht now',\n", + " 'kak prisnitsa mne',\n", + " 'kak prisnitsa mne',\n", + " 'golubj laskovyy',\n", + " 'golubj sizyy',\n", + " 'on klyuyot zerno',\n", + " 'poteshaetsa',\n", + " 'i vorkuet tikho',\n", + " 'i bjyot krylom',\n", + " 'a prismotrishsya',\n", + " 'prigiyadishsya an',\n", + " 'golubj to khromoy',\n", + " 'lapka lish odna',\n", + " 'on poskakivat',\n", + " 'on poskakivat',\n", + " 'vsyo za syornushkom',\n", + " 'vsyo za makovym',\n", + " 'age male man bashi kami nadaram',\n", + " 'age male man bashi dige ghami nadaram',\n", + " 'age cheshmato dashtam donyaham nadasht',\n", + " 'bede be man dasteto',\n", + " 'age male man bashi',\n", + " 'age male man bashi',\n", + " 'tanham tanhatar az harki begi',\n", + " 'bi to man tanham nazari az pisham beri',\n", + " 'tanham to donyaye namehrabon',\n", + " 'bi to man tanham toro khoda pisham bemon',\n", + " 'age male man bashi kami nadaram',\n", + " 'age male man bashi dige ghami nadaram',\n", + " 'age cheshmato dashtam donyaham nadasht',\n", + " 'bede be man dasteto',\n", + " 'age male man bashi',\n", + " 'age male man bashi',\n", + " 'tanham tanhatar az harki begi',\n", + " 'bi to man tanham nazari az pisham beri',\n", + " 'tanham to donyaye namehrabon',\n", + " 'bi to man tanham toro khoda pisham bemon',\n", + " 'na na na...',\n", + " 'na na na...',\n", + " 'na na na...',\n", + " 'tanham tanhatar az harki begi',\n", + " 'bi to man tanham nazari az pisham beri',\n", + " 'tanham to donyaye namehrabon',\n", + " 'bi to man tanham toro khoda pisham bemon',\n", + " 'turn you on, on in the world',\n", + " 'this music makes you feel so special',\n", + " 'turn you on,on in the world',\n", + " 'this music makes you feel so special',\n", + " 'dua sot te harroj',\n", + " 'dua sot te kaloj me lart',\n", + " 'edhe nese gaboj',\n", + " 'nuk kam frike te jetoj kete nate',\n", + " '2x',\n", + " 'i can turn you on on on',\n", + " 'something like that that that',\n", + " 'so i can turn you on on on',\n", + " 'something like that that that',\n", + " 'i can turn you on on on',\n", + " 'something like that that that',\n", + " '2x',\n", + " 'dua sot te harroj',\n", + " 'dua sot te kaloj me lart',\n", + " 'edhe nese gaboj',\n", + " 'nuk kam frike te jetoj kete nate',\n", + " '2x',\n", + " 'i can turn u on on on',\n", + " 'something like that that that',\n", + " 'so i can turn you on on on',\n", + " 'something like that that that',\n", + " 'i can turn you on on on',\n", + " 'something like that that that',\n", + " 'dua sot te harroj',\n", + " 'dua sot te kaloj me lart',\n", + " 'edhe nese gaboj',\n", + " 'nuk kam frike te jetoj kete nate',\n", + " 'turn you on, on in the world',\n", + " 'this music makes you feel so special',\n", + " 'turn you on, on in the world',\n", + " 'this music makes you feel so special',\n", + " '2x',\n", + " 'dua sot te harroj',\n", + " 'dua sot te kaloj me lart',\n", + " 'edhe nese gaboj',\n", + " 'nuk kam frike te jetoj kete nate',\n", + " 'ooh oo oooh',\n", + " '¡oye, chiquita!',\n", + " 'espero un momento',\n", + " 'quiero hablar contigo, ¡eh!',\n", + " 'hahaha',\n", + " 'hej! ma mori mëndjen, hej! ma mori zemrën',\n", + " \"hej! m'i mori lekët, ay ay ay\",\n", + " 'hej! ma bleu makinën, hej! ma bleu fustanin',\n", + " 'hej! ma bleu dyqanin, ay ay ay',\n", + " 'hej! ma more mëndjen, hej! ma more zemrën',\n", + " \"hej! m'i more lekët, ay ay ay\",\n", + " 'hej! ma ble dhe makinën, hej! ma ble dhe fustanin',\n", + " 'hej! ma ble dhe dyqanin, ay ay ay',\n", + " \"hey, señorita, i'm gonna teach ya\",\n", + " \"just step into my world, i'll be your leader\",\n", + " 'hey, señorita, i wanna save ya',\n", + " 'all you have to say is: \"baby, i believe ya\"',\n", + " 'hey! na, na, na, na, na, na',\n", + " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", + " 'hey! na, na, na, na, na, na',\n", + " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", + " 'hey, señorita',\n", + " \"just step into my world, i'll be your leader\",\n", + " 'hey, señorita',\n", + " 'all you have to say is: \"baby, i believe ya\"',\n", + " '(oh yeah)',\n", + " 'hej! ma mori mëndjen, hej! ma mori zemrën',\n", + " \"hej! m'i mori lekët, ay ay ay\",\n", + " 'hej! ma bleu makinën, hej! ma bleu fustanin',\n", + " 'hej! ma bleu dyqanin, ay ay ay',\n", + " 'hej! ma more mëndjen, hej! ma more zemrën',\n", + " \"hej! m'i more lekët, ay ay ay\",\n", + " 'hej! ma ble dhe makinën, hej! ma ble dhe fustanin',\n", + " 'hej! ma ble dhe dyqanin, ay ay ay',\n", + " \"hey, señorita, i'm gonna teach ya\",\n", + " \"just step into my world, i'll be your leader\",\n", + " 'hey, señorita, i wanna save ya',\n", + " 'all you have to say is: \"baby, i believe ya\"',\n", + " 'hey! na, na, na, na, na, na',\n", + " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", + " 'hey! na, na, na, na, na, na',\n", + " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", + " 'everybody, listen up',\n", + " 'if you having a good time',\n", + " 'then i wanna see your hands up in the air',\n", + " '(hey, hey, hey, hey, hey, hey)',\n", + " \"let's go (woo)\",\n", + " \"hey, señorita, i'm gonna teach ya\",\n", + " \"just step into my world, i'll be your leader\",\n", + " 'hey, señorita, i wanna save ya',\n", + " 'all you have to say is: \"baby, i believe ya\"',\n", + " 'hey! na, na, na, na, na, na',\n", + " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", + " 'hey! na, na, na, na, na, na',\n", + " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", + " 'saa ikoutte te wo hiite donna nobori sakamo',\n", + " 'kizuato ni hibiku no ni kimi wa damatte hikari no kata wo muite waratta',\n", + " 'dakara tsuite ikou',\n", + " 'ganbarette katadaite doshaburi no aiaigasa',\n", + " 'michi ni mayotta nebusoku no kokkei na usagi aoi me kosutte muri ni waratta',\n", + " 'dakara tsuite ikou',\n", + " 'watashi dake no mono janai ite wakatteru kedo kedo dake done',\n", + " 'shiranpurishite tsumi wo kasanete more, more, more',\n", + " '\\x81¦tell me one last time/ hold me one last time',\n", + " 'asahi ga kono toki wo saratteku mae ni/ dareka no motohi kaeru sono mae ni',\n", + " 'tell me one last time/ hold me one last time',\n", + " 'watashi ga hitsuyoutte ima ichido itte/ watashi wo hanasanaitte ima ichido itte',\n", + " 'say that you love me one last time\\x81¦',\n", + " 'nani mo ittenainoni naze (doushita?) nante kiku no',\n", + " 'jojuseki ni ite mo inai jikan ni yaku watashi wo aishii to iu',\n", + " 'dakara tsuite ikou',\n", + " '3pun de kaita raburetaa quick and easy na home meal',\n", + " 'aa...konna kimochi hajimete nanda terekusasou ni arigatou to iu',\n", + " 'dakara tsuite ikou',\n", + " 'mitasarerutte kowai koto kakette wa e? tte natte asette',\n", + " 'tsukanai de sore ijou please no more, no more',\n", + " 'tell me one last time/ hold me one last time',\n", + " 'asahi ga kono toki wo saratteku mae ni/ dareka no motohi kaeru sono mae ni',\n", + " 'tell me one last time/ hold me one last time',\n", + " 'watashi ga hitsuyoutte ima ichido itte/ watashi wo hanasanaitte ima ichido itte',\n", + " 'say that you love me one last time',\n", + " 'himitsu no naka ni tsune ni shinjitsu kouzen no uso de yogoreta kao wo koko de aratte',\n", + " '(\\x81¦repete)',\n", + " 'kiss me one last time',\n", + " 'let the alarm chime',\n", + " 'hear me breathe again before you hurry home',\n", + " 'tell me one last time',\n", + " \"don't need a dime\",\n", + " 'just wonder if this love is true like your poem',\n", + " 'say that you love me one last time',\n", + " 'say that you love me one last time',\n", + " 'say that you love me one last time',\n", + " 'nemikham ye khoone too royam besazam, nemikham ghalbamo be hichki bebazam',\n", + " 'nemikham taranam ba esmet shoroo she, dige gitaram nemige didanet arezooshe',\n", + " 'mesle to mikham be har kasi residam, begam ajibe dishab man khabeto mididam',\n", + " 'mesle to sher begam sheraye asheghoone, begam to ahle beheshti jat too hasemoone',\n", + " 'begoo che joori besham mesle khodet,delamo be hame bedam mesle khodet...',\n", + " 'pashimoonam nasham mesle khodet. begoo che joori besham mesle khodet... (x3)',\n", + " 'nemikham name ham to daste to bashe. are, behtare ke dige rahemoon joda she',\n", + " 'ghalbamo man az to haminja pas mikham. mikham mesle to besham man, bahat rah nemiyam',\n", + " 'mesle to mikham man goum besham vase hamishe, begam kar az kar gozashte dir shode nemishe',\n", + " 'mesle to mikham az gerye ha ra besham, mikham az beri mimiram be khoda rad besham',\n", + " 'begoo che joori besham mesle khodet, delamo be hame bedam mesle khodet...',\n", + " 'pashimoonam nasham mesle khodet. begoo che joori besham mesle khodet... (x4)',\n", + " 'a bombi , who dat girl?',\n", + " 'i mean no no who dis?',\n", + " 'is she albanian a brooklyn?',\n", + " 'sonte du me dal, ehi',\n", + " 'hej lucky boy krejt kom me ti fal, ehi',\n", + " \"s'du me ni as ni fjale, ehi\",\n", + " 'vet na e kena lon, kena lon',\n", + " 'make it clap, booty attack',\n", + " 'make it clap, booty attack',\n", + " 'make it clap, booty clap',\n", + " 'make it clap, booty attack',\n", + " \"qysh po m'shikon ti\",\n", + " 'po don ti',\n", + " 'ej hajde rrina bashk',\n", + " 'nuk ka tjeter si ti',\n", + " 'sonte ne ket club',\n", + " 'pom pelqen ti a pe vren',\n", + " 'tjeter kush si ti sum nxejn',\n", + " 'du me dit ti qa menon',\n", + " 'a po don',\n", + " 'bounce to the rhythm gal',\n", + " 'make dem cheers up',\n", + " 'everthing i do nice',\n", + " 'follow the leader',\n", + " 'hips move a slow',\n", + " 'we can bet a come',\n", + " 'me winding and winding',\n", + " 'da men na go blindin',\n", + " 'ah, who that girl?',\n", + " 'yes i me a dora',\n", + " \"for them who don't know me\",\n", + " 'ah, who that girl?',\n", + " 'yes i me a dora',\n", + " \"for them who don't know me\",\n", + " 'get up, get up, get up, get up, come on',\n", + " 'get up, get up, get up, get up, come on',\n", + " 'get up, get up, get up, get up, come on',\n", + " 'get up, get up, get up, get up, come on',\n", + " 'sonte du me dal, ehi',\n", + " 'hey lucky boy krejt kom me ti fal, ehi',\n", + " \"s'du me ni as ni fjale, ehi\",\n", + " 'vet na e kena lon kena lon',\n", + " 'sonte du me dal, ehi',\n", + " 'hey lucky boy krejt kom me ti fal, ehi',\n", + " \"s'du me ni as ni fjale, ehi\",\n", + " 'vet na e kena lon kena lon',\n", + " 'make it clap, booty attack',\n", + " 'make it clap, booty attack',\n", + " 'make it clap, booty clap',\n", + " 'make it clap, booty attack',\n", + " 'bounce to da rhythm gyal',\n", + " 'make dem cheers up',\n", + " 'everthing i do nice',\n", + " 'follow the leader',\n", + " 'hips move a slow',\n", + " 'we can bet a go',\n", + " 'me windin and windin',\n", + " 'da men na go blindin',\n", + " 'a ? who that girl',\n", + " 'yes i me a dora',\n", + " \"for them who don't know me\",\n", + " 'a ? who that girl',\n", + " 'yes i me a dora',\n", + " \"for them who don't know me\",\n", + " 'qysh pom shikon ti',\n", + " 'po don ti',\n", + " 'hej hajde rrina bashk',\n", + " 'nuk ka tjeter si ti sonte ne ket club',\n", + " 'pom pelqen ti a pe vren',\n", + " 'tjeter kush si ti sum nxen',\n", + " 'du me dit ti qa menon, a po don',\n", + " 'get up, get up, get up, get up, come on',\n", + " 'get up, get up, get up, get up, come on',\n", + " 'get up, get up, get up, get up, come on',\n", + " 'get up, get up, get up, get up, come on',\n", + " 'get up, get up, get up, get up, come on',\n", + " 'get up, get up, get up, get up, come on',\n", + " 'get up, get up, get up, get up, come on',\n", + " 'get up, get up, get up, get up, come on',\n", + " 'sonte du me dal, ehi',\n", + " 'hey lucky boy krejt kom me ti fal, ehi',\n", + " \"s'du me ni as ni fjale, ehi\",\n", + " 'vet na e kena lon kena lon',\n", + " 'sonte du me dal, ehi',\n", + " 'hey lucky boy krejt kom me ti fal, ehi',\n", + " \"s'du me ni as ni fjale, ehi\",\n", + " 'vet na e kena lon kena lon',\n", + " 'make it clap, booty attack',\n", + " 'make it clap, booty attack',\n", + " 'make it clap, booty clap',\n", + " 'make it clap, booty attack',\n", + " 'sonte du me dal, ehi',\n", + " 'hey lucky boy krejt kom me ti fal, ehi',\n", + " \"s'du me ni as ni fjale, ehi\",\n", + " 'vet na e kena lon kena lon',\n", + " 'yazyk izognulsya mostom iz gortani v gortanj',\n", + " 'iz meshka v meshok khodil li bog po mostu',\n", + " 'ili mrachnyy shut s posinevshim litzom',\n", + " 'vyshel iz mira v mir no v mire v mir ne prishol',\n", + " 'po mostu iz ruk zvezda uvodit svoyo teplo',\n", + " 'na kakoy to drugoy vostok vityazi rubyat son',\n", + " 'smertjyu v sugroby sablyami tel',\n", + " 'krepok khokhot nebes i strashen rodiny blednyy ston']},\n", + " 'data': ['kurai kumo ga shimiwatatte',\n", + " 'machinami ni kage wo otoshi hajimeru',\n", + " 'arashi no sora ni hajikarete',\n", + " 'kogoeta kotori ga harema wo matte',\n", + " 'kiesouna negai wo tsunagi',\n", + " 'asu no hi wo yume mite',\n", + " 'we gonna be hope ikkou kibou yo',\n", + " 'shinjite mune no naka no kibou',\n", + " 'dore dake kimi ga',\n", + " 'harisake souna itami wo shirouto',\n", + " 'wasurenai de koko ni aru',\n", + " 'the light in your heart',\n", + " 'suna no kaze ni nomikomarete',\n", + " 'asahi no kizashi mo kasunde mienai',\n", + " 'sono tabi ni te wo hirakasane',\n", + " 'hito wa inoru koto keshite yamenai',\n", + " 'mune ni hi wo tomoshinagara',\n", + " 'hikari ga mieru made',\n", + " 'we gonna be hope ikkou kibou yo',\n", + " 'shinjiru nosa sono yuuki wo',\n", + " 'akira meta mama',\n", + " 'ikiru kimi ja ai no nukumori wa',\n", + " 'tsukameru hazu mo naisa',\n", + " 'the light in your heart',\n", + " 'kimi ga nozomu no nara kitto',\n", + " 'hora zetsubou sae mo before',\n", + " 'we gonna be hope ikkou kibou yo',\n", + " 'shinjiru nosa sono yuuki wo',\n", + " 'akira meta mama',\n", + " 'ikiru kimi ja ai no nukumori wa',\n", + " 'we gonna be hope ikkou kibou yo',\n", + " 'shinjite mune no naka no kibou',\n", + " 'dore dake kimi ga',\n", + " 'harisake souna itami wo shirouto',\n", + " 'wasurenai de koko ni aru',\n", + " 'the light in your heart',\n", + " 'sunday night',\n", + " 'i put a light',\n", + " 'in my blunt right',\n", + " 'in my blunt right',\n", + " \"s'nihëm mo s'm vyn kurgjo\",\n", + " \"kur t'm vyn sje mo\",\n", + " 'mke përdor',\n", + " 'futja futja hajt',\n", + " 'gonna be alright',\n", + " 'bounce edhe rrite rrite basin yo',\n", + " 'cause my time has come rrite basin',\n", + " 'po dojn me bo si na',\n", + " 'se na high jenna nigga high dhe mellow',\n", + " 'skom nevoje per ty hejo',\n", + " 'sun e bon sun e bon sun e bon sun e bon bon',\n", + " 'bon bon edhe nëse sbon sbon',\n", + " 'don don',\n", + " 'bet u wanna taste it',\n", + " 'sun e bon sun e bon sun e bon sun e bon bon',\n", + " 'hajde merëm ikim',\n", + " 'nese e don qiken',\n", + " 'king je deri ta qes piken',\n", + " 'hajde merëm ikim',\n", + " 'nese e don qiken',\n", + " 'king je deri ta qes piken',\n", + " 'honey',\n", + " 'sunday night',\n", + " 'i put a light',\n", + " 'in my blunt right',\n", + " 'skom nevoje per ty hejo',\n", + " 'edhe vet un e thejo',\n", + " \"sun m'rrxon jom knejo\",\n", + " 'sun e bon sun e bon sun e bon sun e bon bon',\n", + " 'bon bon edhe nëse sbon sbon',\n", + " 'don don',\n", + " 'bet u wanna taste it',\n", + " 'bon bon',\n", + " 'bet u wanna taste it',\n", + " 'e di qe ti don don, don',\n", + " 'bon bon edhe nëse sbon sbon',\n", + " 'don don',\n", + " 'bet u wanna taste it',\n", + " 'bon bon',\n", + " 'bet u wanna taste it',\n", + " 'e di qe ti don don, don',\n", + " 'sun e bon sun e bon sun e bon sun e bon bon',\n", + " '(x2)',\n", + " 'bon bon edhe nëse sbon sbon',\n", + " 'don don',\n", + " 'bet u wanna taste it',\n", + " 'bon bon',\n", + " 'bet u wanna taste it',\n", + " 'e di qe ti don don, don',\n", + " 'bon bon edhe nëse sbon sbon',\n", + " 'don don',\n", + " 'bet u wanna taste it',\n", + " 'bon bon',\n", + " 'bet u wanna taste it',\n", + " 'e di qe ti don don, don',\n", + " 'sun e bon sun e bon sun e bon sun e bon bon',\n", + " 'sun e bon sun e bon sun e bon sun e bon bon',\n", + " 'fel7ob 9elbi 9bi7',\n", + " 'manjish wenti7',\n", + " 's3ib yeddini ri7',\n", + " 'ana mashi sahel',\n", + " 'fel7ob 9elbi 9bi7',\n", + " 'manjish wenti7',\n", + " 's3ib yeddini ri7',\n", + " 'ana mashi sahel',\n", + " '9aletli lwalida',\n", + " 'manrebbi kebda',\n", + " 'mashi ay we7da',\n", + " 'matkonshi ghafel',\n", + " 'ana mashi sahel',\n", + " '9aletli lwalida',\n", + " 'manrebbi kebda',\n", + " 'mashi ay we7da',\n", + " 'matkonshi ghafel',\n", + " 'ana mashi sahel',\n", + " 'mabghitsh nkon khfif',\n", + " 'fe9lob lebnat ana dif',\n", + " 'nebda l7ob feshta',\n", + " 'wensali fesif',\n", + " 'mabghitsh nkon khfif',\n", + " 'fe9lob lebnat ana dif',\n", + " 'nebda l7ob feshta',\n", + " 'wensali fesif',\n", + " '9aletli lwalida',\n", + " 'manrebbi kebda',\n", + " 'mashi ay we7da',\n", + " 'matkonshi ghafel',\n", + " 'ana mashi sahel',\n", + " '9aletli lwalida',\n", + " 'manrebbi kebda',\n", + " 'mashi ay we7da',\n", + " 'matkonshi ghafel',\n", + " 'ana mashi sahel',\n", + " 'yeah, you know we gettin’ so low low (ja ja ja ja ja ja)',\n", + " 'i make her dance like diablo-po (oh na na na na na na )',\n", + " 'a m’foli mu? m’foli mu, m’foli mu',\n", + " 'a m’foli mu? a m’foli mu?',\n", + " 'a m’foli mu? m’foli mu, m’foli mu',\n", + " 'a m’foli mu? a m’foli mu?',\n", + " 'diablo gon’ make her dance, diablo gon’ make her dance ye',\n", + " 'diablo gon’ make her dance, nuk ka koh hajde ma ngat',\n", + " 'si e bon ti at ting no other can, ajo po duket si prej pakistan',\n", + " 'si si e bon ti at ting no other can, ajo po duket si prej pakistan',\n", + " \"i'm a badman yeah, i'm a badman, i'm a ba-badman, yeah\",\n", + " \"i'm a badman yeah, i'm a badman, i'm a ba-badman, yeah\",\n", + " 'kur leviz she got me low low, nuk ka tjere qe e bon si kjo jo',\n", + " 'yeah, you know we gettin’ so low low (ja ja ja ja ja ja)',\n", + " 'i make her dance like diablo-po (oh na na na na na na )',\n", + " 'a m’foli mu? m’foli mu, m’foli mu',\n", + " 'a m’foli mu? a m’foli mu?',\n", + " 'a m’foli mu? m’foli mu, m’foli mu',\n", + " 'a m’foli mu? a m’foli mu?',\n", + " 'stop, ketu nuk ka drama, ka action',\n", + " 'grupi tøw the new fashion',\n", + " 'they tryna be my biki biki biki (bro)',\n", + " 'kur na shohin e nderrojne mendjen',\n", + " 'menut po foli per ni lady, jo jo po foli per suksesin',\n", + " 'e kta tjeret si robota, njejtin stil, njejtin sound (same)',\n", + " \"kidda 'bout to take over\",\n", + " \"i'm a badman yeah, i'm a badman, i'm a ba-badman, yeah\",\n", + " \"i'm a badman yeah, i'm a badman, i'm a ba-badman, yeah\",\n", + " 'kur leviz she got me low low, nuk ka tjere qe e bon si kjo jo',\n", + " 'yeah, you know we gettin’ so low low (ja ja ja ja ja ja)',\n", + " 'i make her dance like diablo-po (oh na na na na na na )',\n", + " 'a m’foli mu? m’foli mu, m’foli mu',\n", + " 'a m’foli mu? a m’foli mu?',\n", + " 'a m’foli mu? m’foli mu, m’foli mu',\n", + " 'a m’foli mu? a m’foli mu?']}}},\n", + " 'st': {'sentence': {'pop': {'meta': {'train_data': ['chinese characters',\n", + " '藏在肺裡的尖叫',\n", + " '藏在骨頭和肌肉裡的',\n", + " '沒有爆破前 毋庸置疑的',\n", + " '都會揪緊成病',\n", + " '曾經 乾燥的 都被潑濕',\n", + " '膨脹後彈牙 多肉 黏膩多汁',\n", + " '一個女人徒手拔掉滿頭黑髮',\n", + " '在夢境的山稜線行走',\n", + " '思念聚集成蚊蟲',\n", + " '張開沒有焦點的瞳孔',\n", + " '就像….快 張開沒有欲望的大腿',\n", + " '我咬下去 你還是無動於衷嗎',\n", + " '明明可以叫出來的呀',\n", + " '沿著你的脊椎走',\n", + " '我的手指 戳出一個冰涼的湖',\n", + " '四處張望 無人看守',\n", + " '暴露狂脫掉風衣 淚流滿面地 跳進去',\n", + " '計劃把你高潮的尖叫聲錄起 來',\n", + " '卻發現剛剛按錯了鍵',\n", + " '一去不復返 無能重複那時刻',\n", + " '你躺著',\n", + " '和逐漸冰冷的液體 撕扯著',\n", + " '黏膩 透明 在我的手心開出具有彈性的花',\n", + " '我覺得不夠 想從你身體裡擠出更多',\n", + " '就在這個時候電話響起',\n", + " '窗外的鹿群 飛奔離去 同時',\n", + " '急遽消退 藍色的風 抹去世界邊緣的泡沫',\n", + " '從你半開的雙眼繞過',\n", + " '接起電話 靜默降臨',\n", + " '剛醒來的情慾 在電話裡喘氣 尖叫',\n", + " '我邊聽 邊把你的汗一滴滴舔掉',\n", + " '不能吼出來 那就吞下去',\n", + " 'phonetic chinese',\n", + " 'cáng zài fèi lǐ de jiān jiào',\n", + " 'cáng zài gǔtou hé jīròu lǐ de',\n", + " 'méiyǒu bàopò qián wúyōng zhìyí de',\n", + " 'dūhuì jiū jǐn chéng bìng',\n", + " 'céngjīng gānzào de dōu bèi pō shī',\n", + " 'péngzhàng hòu dàn yá duōròu nián nì duō zhī',\n", + " 'yīgè nǚrén túshǒu bá diào mǎn tóu hēi fà',\n", + " 'zài mèngjìng de shān léngxiàn xíngzǒu',\n", + " 'sīniàn jùjí chéng wénchóng',\n", + " 'zhāng kāi méiyǒu jiāodiǎn de tóngkǒng',\n", + " 'jiù xiàng…. kuài zhāng kāi méiyǒu yùwàng de dàtuǐ',\n", + " 'wǒ yǎo xiàqù nǐ háishì wúdòngyúzhōng ma',\n", + " 'míngmíng kěyǐ jiào chūlái de ya',\n", + " 'yánzhe nǐ de jǐchuí zǒu',\n", + " 'wǒ de shǒuzhǐ chuō chū yīgè bīngliáng de hú',\n", + " 'sìchù zhāngwàng wúrén kānshǒu',\n", + " 'bàolù kuáng tuō diào fēngyī lèi liú mǎnmiàn de tiào jìnqù',\n", + " 'jìhuà bǎ nǐ gāocháo de jiān jiào shēng lù qǐlái',\n", + " 'què fāxiàn gānggāng àn cuòle jiàn',\n", + " 'yī qù bù fù fǎn wúnéng chóngfù nà shíkè',\n", + " 'nǐ tǎngzhe',\n", + " 'hé zhújiàn bīnglěng de yètǐ sīchězhe',\n", + " 'nián nì tòumíng zài wǒ de shǒuxīn kāi chū jùyǒu tánxìng de huā',\n", + " 'wǒ juédé bùgòu xiǎng cóng nǐ shēntǐ lǐ jǐ chū gèng duō',\n", + " 'jiù zài zhège shíhòu diànhuà xiǎngqǐ',\n", + " 'chuāngwài de lù qún fēi bēn lí qù tóngshí',\n", + " 'jíjù xiāotuì lán sè de fēng mǒ qù shìjiè biānyuán de pàomò',\n", + " 'cóng nǐ bànkāi de shuāng yǎn ràoguò',\n", + " 'jiē qǐ diànhuà jìngmò jiànglín',\n", + " 'gāng xǐng lái de qíngyù zài diànhuà lǐ chuǎnqì jiān jiào',\n", + " 'wǒ biān tīng biān bǎ nǐ de hàn yīdī dī tiǎn diào',\n", + " 'bùnéng hǒu chūlái nà jiù tūn xiàqù',\n", + " 'english translation',\n", + " 'the screams that are buried in the lungs',\n", + " 'buried in the bones and the muscles',\n", + " 'unexploded, undeniable',\n", + " 'cram into a sickness',\n", + " 'what used to be dry is now sodden',\n", + " 'swollen, meaty, moist and juicy',\n", + " 'my teeth are bouncing off it',\n", + " 'a woman pulls out the headful of black hair with her bare hands',\n", + " 'walks along the mountain ridges in a dream',\n", + " 'remembrance swarms like mosquitos',\n", + " 'opening up the unfocused eyes',\n", + " 'as if… quick, spread the legs without desire wide',\n", + " 'i take a bite, are you still unmoved',\n", + " 'you can scream out',\n", + " 'tracing along your spine',\n", + " 'my fingers created a cold lake',\n", + " 'i look around, no one is guarding',\n", + " 'the exhibitionist takes out his coat',\n", + " 'and jumps into it with tears on his face',\n", + " 'i planned to record your scream as you reached orgasm',\n", + " 'but then realize that i’ve pressed the wrong button',\n", + " 'the moment has been lost, irretrievable',\n", + " 'you lie there',\n", + " 'struggling with the body fluid that is getting cold',\n", + " 'sticky, transparent, elastic flowers in my palm',\n", + " 'i’m not satisfied; i want to squeeze more out of your body',\n", + " 'the telephone rings at this moment',\n", + " 'a herd of deer run past the window and at the same time',\n", + " 'blue winds are dispelled so quickly, wiping out the foams on the margin of the world',\n", + " 'escaping from your half-opened eyes',\n", + " 'picking up the phone, silence comes',\n", + " 'the desire just awoken breathes and screams in the receiver',\n", + " 'as i listen i lick away every drop of your sweat',\n", + " 'if you can’t scream then swallow it down',\n", + " 'hot hot summer rock',\n", + " 'everybody feeling hot',\n", + " 'waïkiki, waïkiki roots',\n", + " 'waïkiki rock',\n", + " 'hot hot summer rock',\n", + " 'everybody feeling hot',\n", + " 'waïkiki, waïkiki roots',\n", + " 'waïkiki rock',\n", + " 'an bê ka gnonguon tchê',\n", + " 'ka taga dougou dôh léla',\n", + " 'o dougou tôgô lé hawaï',\n", + " 'tchê hou ko aloha',\n", + " 'mousso hou ko aloha !!!',\n", + " \"sougourou ni ko n'gna bla sra\",\n", + " 'kôgôdjidala',\n", + " \"n'go aïwa angné wa\",\n", + " \"aka aborola n'kan kan\",\n", + " \"aka n'caressé\",\n", + " \"abana tougouni ka n'caressé\",\n", + " 'hot hot summer rock',\n", + " 'everybody feeling hot',\n", + " 'waïkiki, waïkiki roots',\n", + " 'waïkiki rock',\n", + " 'hot hot summer rock',\n", + " 'everybody feeling hot',\n", + " 'waïkiki, waïkiki roots',\n", + " 'waïkiki rock',\n", + " 'ha ha ha ha...',\n", + " 'ha ha aloha (bis)',\n", + " \"sougourou ni ko n'gna bla sra\",\n", + " 'kôgôdjidala',\n", + " 'aka akangara ni kê lêbê lêbê',\n", + " 'ka abobarani kê sehou !!!',\n", + " 'alo... alo... aloha',\n", + " 'alo... alo... aloha',\n", + " 'bozo horon né bi wélé',\n", + " 'bozo guana né bi wélé',\n", + " 'bozo tièfanri né bi wélé',\n", + " 'djidon wara né bi wélé',\n", + " 'soguo gnôron lamitiè',\n", + " 'soguo yétou lamitiè',\n", + " 'soguo dabadjiê lamitiè',\n", + " 'soguo gnara lamitiè',\n", + " 'karaminta bozo, nè bi wélé',\n", + " 'minta bozo, né bi wélé',\n", + " 'sininta bozo, né bi wélé',\n", + " 'famanta bozo, né bi wélé',\n", + " 'soguo migniè kadokélé',\n", + " 'soguo guitiè kadokélé',\n", + " 'soguo boitiè kadokélé',\n", + " 'soguo kotiyen kadokélé',\n", + " 'djinta bozo, né bi wélé',\n", + " 'salamanta bozo, né bi wélé',\n", + " 'kanta bozo, né bi wélé',\n", + " 'tapo bozo, né bi wélé',\n", + " 'konkao bozo, né bi wélé',\n", + " 'jintao bozo, né bi wélé',\n", + " 'kampo bozo, né bi wélé',\n", + " 'bozo horon, né bi wélé',\n", + " 'bozo guana, né bi wélé',\n", + " 'bozo tièfanri, né bi wélé',\n", + " 'djidon wara, né bi wélé',\n", + " 'bozo the noble, i call you',\n", + " 'bozo the brave, i call you',\n", + " 'bozo the lion of the water, i call you',\n", + " 'soguo gnôron lamitiè',\n", + " 'soguo yétou lamitiè',\n", + " 'soguo dabadjiê lamitiè',\n", + " 'soguo gnara lamitiè',\n", + " 'karaminta bozo, i call you',\n", + " 'minta bozo , i call you',\n", + " 'sininta bozo, i call you',\n", + " 'famanta bozo, i call you.*',\n", + " 'soguo migniè kadokélé',\n", + " 'soguo guitiè kadokélé',\n", + " 'soguo boitiè kadokélé',\n", + " 'soguo kotiyen kadokélé',\n", + " 'djinta bozo, i call you',\n", + " 'salamanta bozo, i call you',\n", + " 'kanta bozo, i call you',\n", + " 'tapo bozo, i call you',\n", + " 'konkao bozo, i call you',\n", + " 'jintao bozo, i call you',\n", + " 'kampo bozo, i call you.*',\n", + " 'bozo the noble, i call you',\n", + " 'bozo the brave, i call you',\n", + " 'bozo the brave, i call you',\n", + " 'bozo the lion of the water, i call you',\n", + " '* bozo family names',\n", + " 'dancing time for dancers!',\n", + " \"it's dancing time\",\n", + " \"it's dancing time\",\n", + " 'yeah yeh',\n", + " \"come on, let's move together\",\n", + " 'brothers (...)',\n", + " 'funky sisters (...)',\n", + " \"let's (...) together\",\n", + " \"let's move together\",\n", + " 'funky dancers (...)',\n", + " \"let's move together\",\n", + " 'no! to the funka (...)',\n", + " 'dance yeih yeh! uouo',\n", + " 'come on',\n", + " '(...)',\n", + " 'atta hitotsu kawaranai mono',\n", + " 'zutto egaiteta yume',\n", + " 'ima no jibun ha dou utsuru no',\n", + " 'ano koro no chiisana hitomi ni',\n", + " 'nee...miagete konna ni hiroi yozora dakara',\n", + " 'sou...sugu ni wakaru you ni',\n", + " 'seiippai kagayaku kara hayaku',\n", + " 'full moon wo sagashite',\n", + " \"let's sing a song\",\n", + " 'itsudemo issho kimi no tame ima no watashi ni dekiru subete',\n", + " 'day by day',\n", + " 'kyou made no unmei ashita kara no kibou kono mune ni dakae',\n", + " \"let's sing a song\",\n", + " 'itsudemo issho kimi to nara tsurai koto nori koerareru yo',\n", + " 'more and more',\n", + " 'motto motto motto chikazukitai ima koko ni ite kurete',\n", + " 'many thanks for you',\n", + " 'fushigi na deai kurikaesu uchi',\n", + " 'taisetsu na mono ga suete',\n", + " 'guuzen to iu itazura na hibi',\n", + " 'ima de ha waratte aiseru',\n", + " 'sou...itsumo hiroi stage ni akogareteta',\n", + " 'mou...watashi hitori janai',\n", + " 'minna no egao ga afureteru',\n", + " 'koko ga ibasho nano kara',\n", + " \"let's sing a song\",\n", + " 'konya no spotlight yori ima watashi no kagayakaseru',\n", + " 'day by day',\n", + " 'atsui manazashi to seien ga nagareru ase wo terashiteru',\n", + " \"let's sing a song\",\n", + " 'konya wa eien ni kawaranai atsui omoi aru to shinjitai',\n", + " 'more and more',\n", + " 'motto motto motto sakebitai kono utau kono yume wa owaranai',\n", + " \"let's sing a song\",\n", + " 'repeat and repeat',\n", + " \"let's sing a song\",\n", + " 'repeat and repeat...',\n", + " 'this is song for you',\n", + " 'agent sasco!',\n", + " 'follow me now',\n", + " 'helo',\n", + " 'helo',\n", + " 'bramba rmanaa a',\n", + " 'e for deat mella for its somethinsg gutta geb',\n", + " 've get delabada some afrtan smarta now it means im in a sotsctitnra bruba smart now',\n", + " 'hold on put in a work running on my shirt just for sakdasd',\n", + " 'do the wordl smahsuip',\n", + " 'smoethign gutta gev',\n", + " 'mås have benn duty manansanss sponge',\n", + " \"hypocrites, j'ai peur des hypocrites\",\n", + " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", + " \"hypocrites, j'ai peur des hypocrites\",\n", + " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", + " 'obé dindin i kêrê fê',\n", + " 'ki konnon non kou man hou lôh',\n", + " 'iman mi fôh, obé olé nôrô ila',\n", + " \"ni ko djougou kisôrô lo'n minan do\",\n", + " 'hinnin, oh hinnin, ibe hinnin iyêrêla',\n", + " 'hinnin, ooh hinnin, ibé hinnin iyêrêla',\n", + " \"hypocrites, j'ai peur des hypocrites\",\n", + " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", + " \"hypocrites, j'ai peur des hypocrites\",\n", + " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", + " 'odôhou yé koulé gninan léyè',\n", + " 'odôhou yé gbôssô wourou, obi kin, oba fiê',\n", + " 'boro mibè, domini di ouman',\n", + " 'obo o kin, obo o kin',\n", + " \"n'ga dji lôh, n'ga so lôh\",\n", + " \"n'ga yiri lôh, yêrè lon yongon tê n'téri\",\n", + " \"djanto iyêréla, n'go iyé i djanto iyèréla\",\n", + " \"djanto lyérèla, n'gouyé i djanto iyérèla\",\n", + " \"hypocrites, j'ai peur des hypocrites\",\n", + " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", + " 'obi ikana figuê forai gbê la',\n", + " 'ali idjori tè bon, ali ibassi tébon',\n", + " 'ki kantiguê fani gbê la',\n", + " 'ali djori té bon, ali bassi té bon',\n", + " \"hypocrites, j'ai peur des hypocrites\",\n", + " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", + " \"hypocrites, j'ai peur des hypocrites\",\n", + " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", + " 'oh nananaaa ei, oh yeah',\n", + " 'king king promise, yeaaaah, killbeatz lets go!',\n", + " \"ɔdo yi akye m'akoma oo, menhyia ɔdɔ yewu anka m'enhu. aaa yeah\",\n", + " 'i dont even think you know, say my life edey revolve around you',\n", + " 'you like the sun, you light me up oooh girl',\n", + " 'sɛ ɛduru anadwo aa menko me da,obi nse ɔdɔ mafe no wae. aaah yeah, tie',\n", + " 'ɔdɔ wokɔɔeɛ akyɛ oo menko me da, ɛnyɛ',\n", + " 'saa wo bɛba na mewu aaae waaaaee yeah, ɔɔɔh',\n", + " 'abena ee mabena yie medeɛ ei, bra bɛhwɛ me wae, ɔɔɔ yiee, aaa',\n", + " 'abena ee mabena yie medeɛ ei',\n", + " 'bra bɛhwɛ me wae, waeie waeie wae, aah aah, ei',\n", + " 'hame gbɛ ni ma sumɔ bo, i',\n", + " 'go dey always love baby baa sumɔ mi, mi lovie baa sumɔ mi, aa ah',\n", + " 'hame gbɛ ni ma sumɔ bo, i',\n", + " 'go dey always love baby baa sumɔ mi',\n", + " 'mi lovie baa sumɔ mi, baa sumɔ mi moko bɛ',\n", + " 'the way you smile edey make i dey weak oo nkɛɛ moko bɛɛ',\n", + " 'baby you wey my heart edey need oo nkɛ moko bɛɛ',\n", + " 'and you dey make i dey feel complete',\n", + " 'oo nkɛ moko bɛɛ, waeie waei waee, aa aah',\n", + " 'sɛ ɛduru anadwo aa menko me da, o',\n", + " 'bi nse ɔdɔ mafe no wae. aaah yeah, tie',\n", + " 'ɔdɔ wokɔɔeɛ akyɛ oo menko me da, ɛnyɛ',\n", + " 'saa wo bɛba na mewu aaae waaaaee yeah, ɔɔɔh',\n", + " 'abena ee mabena yie medeɛ ei, bra bɛhwɛ me wae, ɔɔɔ yiee, aaa',\n", + " 'abena ee mabena yie medeɛ ei',\n", + " 'bra bɛhwɛ me wae, waeie waeie wae, aah aah, ei',\n", + " \"you got me doing things things wey, i never thought i'd do\",\n", + " \"nobody make i dey feel this way eei, i swear i'm into you yieee\",\n", + " 'nobody dey like you, i know me and you wey go die eih',\n", + " 'i never think say i go feel this way yeah, ɔɔh yeaah',\n", + " 'aaaaw baby oooo',\n", + " 'ɔɔɔ yeah',\n", + " \"ɔdɔ m'afe wo ei, oo ooh yeah, oo oo\",\n", + " 'nti me hwɛmo tsɔ, nti me hwɛmo tsɔ, nti',\n", + " 'me hwɛmo tsɔ, ooh nananaa ei yeah',\n", + " 'sɛ ɛduru anadwo aa menko me da, o',\n", + " 'bi nse ɔdɔ mafe no wae. aaah yeah, tie',\n", + " 'ɔdɔ wokɔɔeɛ akyɛ oo yɛntɛm bra, ɛnyɛ sa',\n", + " 'a wo bɛba na mewu aaae waaaaee yeah, ɔɔɔh',\n", + " 'abena ee mabena yie medeɛ ei, bra bɛhwɛ me wae, ɔɔɔ yiee, aaa',\n", + " 'abena ee mabena yie medeɛ ei',\n", + " 'bra bɛhwɛ me wae, waeie waeie wae, aah aah, ei',\n", + " 'ou wa ou wa, aah eih',\n", + " 'ou wa ou wa, ooh oooh, baby',\n", + " 'ou wa ou wa, aah eih',\n", + " 'yeah, legacy life entertainment, ooh nananaaa yeah',\n", + " 'tul(ta) hwær cwóm helm? hwær cwóm byr(ne)?',\n", + " 'cui(va) hwær cwóm feax flówende?',\n", + " '(met)ta(anna) hwær cwóm helm? hwær cwóm byr(ne)?',\n", + " '(mau)ya hwær cwóm feax flówende?',\n", + " '(tu)o(lya) hwær cwóm hand on hearpe(strenge)?',\n", + " '(nott)ol(ya) hwær cwóm scínende?',\n", + " '(mau)ya hwær cwóm hand on hearpe(strenge)?',\n", + " '(o)ló(rin) hwær cwóm scínende?',\n", + " 'irkat-lu(k)hu(d)',\n", + " '(katabri)ki(hu)',\n", + " 'híe hine feorran',\n", + " 'and hwíte sun(nan)',\n", + " 'clipodon',\n", + " 'ac',\n", + " 'for thon hé waes sceadufæx',\n", + " 'hláford ealra méara',\n", + " 'and hé ne and(swaro)de',\n", + " 'educàti, sillabàtu, pe, se, re, tu',\n", + " 'passulàtu, terraccàtu, si, na, te, ru',\n", + " 'pertesàrra, ìkebàna, per, se, re, tu',\n", + " 'ramutèrra, colabòtu, si ma te ru',\n", + " 'educàti, sillabàtu, pe, se, re tu',\n", + " 'masannàta, pellaccàtu, si, nu',\n", + " 'vetesèrra, petemànu, pe, se, re, tu',\n", + " 'lòdo, lòdo',\n", + " 'lòdo, lòdo',\n", + " 'loto, màrato ferrasàto pò-ro',\n", + " 'po... pò',\n", + " 'lòdo, lòdo',\n", + " 'lòto, sàto, màto, màto',\n", + " 'màrato ferrasàto pò-ro',\n", + " 'po-rò',\n", + " 'ro... rò',\n", + " 'si te te le ru malafì tu',\n", + " 're te ke te re malafì ru',\n", + " 'si te te le ru malafì tu',\n", + " 're te ke te re malafì',\n", + " 'po po po po... (etc.)',\n", + " 're metekèleno, pisèveno, pisèveno',\n", + " 're metesèleno, pisèveno, pisève;',\n", + " 'go nevesò pa, ro nèveso, nèveso, nèveso, nèveso',\n", + " 'nèveso, nèveso, nèveso, oh!',\n", + " 'sèreven, sèreven, ne ma se tu',\n", + " 'sèreven, sèreven, ne ma re tu',\n", + " 'sèreven, sèreven, ne ma se tu',\n", + " 'sèreven, sèreven, ne ma re tu',\n", + " 'oh, oh, oh, oh, oh!',\n", + " 'ta ta ta ta tàra… (etc)',\n", + " 'oh, oh!',\n", + " 'sèreven sèreven, nèssa mararètu',\n", + " 'sèreven sèreven, nèssa mararètu',\n", + " 'sèreven sèreven, nèssa mararètu',\n", + " 'sèreven sèreven, nèssa mararètu, oh!',\n", + " 'oh, oh… (etc.)',\n", + " 'neravètu',\n", + " 'nerasètu',\n", + " 'sèreven sèreven, ne ma re tu',\n", + " 'sèreven sèreven, ne ma se tu',\n", + " 'sèreven sèreven, ne ma se tu',\n", + " 'sèreven sèreven, ne ma to',\n", + " 'once, we did run',\n", + " 'how we chased a million stars',\n", + " 'and touched as only one can',\n", + " 'once, we did play',\n", + " 'how the past delivered you',\n", + " \"amidst our youth we'd dream away, away\",\n", + " \"as if i knew the words i'm sure you'll hear\",\n", + " 'of how we met as you recall so clear',\n", + " 'once, we did love',\n", + " 'long ago how did i forget',\n", + " 'holding you so closely',\n", + " 'look, how i move',\n", + " 'chance would have me glance at you',\n", + " 'to know how you move me',\n", + " 'me, all barriers fall around us as we hear',\n", + " 'of memories known and matters long ago, so clear',\n", + " 'once, we did run',\n", + " 'how we chased a million stars',\n", + " 'and touched as only one can',\n", + " 'ninna nanna, dorma fiöö...',\n", + " \"el tò pà el g'ha un sàcch in spala\",\n", + " \"e'l rampèga in sö la nòcc...\",\n", + " 'prega la loena de mea fàll ciapà',\n", + " \"prega la stèla de vardà in duvè che'l va\",\n", + " \"prega el sentée de purtàmel a ca'...\",\n", + " 'ninna nanna, ninna oh.....',\n", + " 'ninna nanna, dorma fiöö...',\n", + " \"el tò pà el g'ha un sàcch in spàla\",\n", + " \"che l'è piee de tanti ròpp:\",\n", + " \"el g'ha deent el sö curàgg\",\n", + " \"el g'ha deent la sua pagüra\",\n", + " \"e i pàroll che'll po' mea dì....\",\n", + " 'ninna nanna, ninna oh....',\n", + " 'ninna nanna, dorma fiöö...',\n", + " 'che te sògnet un sàcch in spàla',\n", + " 'per rampegà de dree al tò pà...',\n", + " 'sö questa vita che vìvum de sfroos',\n", + " 'sö questa vita che sògnum de sfroos',\n", + " 'in questa nòcch che prégum de sfroos',\n", + " 'prega el signuur a bassa vuus...',\n", + " 'cun la sua bricòla a furma de cruus....',\n", + " 'te seet sempru ciucch, te steet gnànca in pee',\n", + " \"ma taant adèss te'l lèvi me el pensee\",\n", + " 'la mia pistòla spàra e la fa mea parè',\n", + " 'l\\'è mea un cioo cumè queèll che gh\\'eet scià te!\"',\n", + " 'rende rende rende',\n", + " 'rende rende rende',\n", + " 'andoma a rende ij onor',\n", + " 'a cole còse a cole còse',\n", + " \"'dla natura\",\n", + " 'croste dël pan',\n", + " 'e cicolata',\n", + " 'e le furmije',\n", + " 'a fan procession',\n", + " 'asil sucrà',\n", + " 'e marmlada',\n", + " 'stoma setà',\n", + " 'setà a tàula',\n", + " 'ren-a ren-a ren-a',\n", + " 'ren-a ren-a ren-a dël cheur',\n", + " \"oh giàun giaunet 'dla lun-a\",\n", + " \"s'it am abandon-e 'dcò ti\",\n", + " 'i s-ciairo pa pì',\n", + " 'sota le stèile',\n", + " 'am pias pensé',\n", + " 'al via vai',\n", + " 'mai silensios',\n", + " \"a-i è 'n mist\",\n", + " 'na confusion',\n", + " 'ël ratatoj',\n", + " 'gran calderon',\n", + " 'ren-a ren-a ren-a',\n", + " 'eh tèila, tèila ëd ragnà',\n", + " 'a fa calor ant le ca',\n", + " 'santa claus is on his way',\n", + " 'doodah, rudah',\n", + " 'santa claus is on his sleigh',\n", + " 'all the ring dong dash',\n", + " \"we the christma's wish\",\n", + " \"we need the christma's wish\",\n", + " 'my brother and i are going to stay',\n", + " \"we need the christma's wish\",\n", + " 'uh...',\n", + " 'pffff...',\n", + " 'halla!',\n", + " 'hello!',\n", + " 'merry christmas!',\n", + " 'ah...',\n", + " 'hohohohohohoho',\n", + " 'hohoho',\n", + " 'hohohohohohohohohoho',\n", + " 'hohoho',\n", + " 'pohoho',\n", + " 'pfub pfub pfub pfub pfub pfub pfub pfub pfub pfub pfub pfub po',\n", + " 'merry christmas',\n", + " 'popo',\n", + " 'pht...',\n", + " 'perry chrisa',\n", + " 'ahaha...',\n", + " 'bleugh...',\n", + " 'plah...',\n", + " 'merry christmas!',\n", + " 'merry christmas!',\n", + " 'pshha...',\n", + " 'ana zabbat w khattat w bisitlik',\n", + " 'faj3atan atel5bet, la2iat 2albi aittishal w attahet',\n", + " 'mesd2tesh kol elly ana feeh',\n", + " \"zay ma 'akun aitthabatt 2isad minek\",\n", + " 'ba3ed ma ratabat kalam a2ooleh',\n", + " 'shuftk ana tahat mjmetesh, mesh earifat ana leeh',\n", + " 'waba2iat bet5reb,w alkalimat alkalimat bita7rub',\n", + " 'min 3ali taraf lisani',\n", + " 'yama nafsi ta2aruba, ryhani bas w jarab',\n", + " 'yally hattesbb fi jnani',\n", + " 'ana zabat w khattat w bisitlik',\n", + " 'faj3atan atel5bet, la2iat 2albi aittishal w attaht',\n", + " 'mesd2tesh kol elly ana feeh',\n", + " 'ana bi7kilek balzabet elly 7asali',\n", + " 'hanat, 2arbet tajanni!',\n", + " 'ensak la la la di jadidat, di mehsaltlish',\n", + " 'keda khaltani atjarat w akalimtuk',\n", + " 'asal masdi2t takun janbi',\n", + " 'dana tul alwa2t eant fi baly, w mebetsbenish',\n", + " 'waba2iat bet5reb,w alkalimat alkalimat bita7rub',\n", + " 'min 3ali taraf lisani',\n", + " 'yama nafsi ta2aruba, ryhani bas wajarrab',\n", + " 'yally hattesbb fi jnani',\n", + " 'the skies and the future, the color is the same',\n", + " \"it's black:\",\n", + " 'the land is in a swamp there is no way',\n", + " \"dark falls on homeland. that's it. the end is on the way\",\n", + " 'horned knights, they are coming soon',\n", + " 'their blades shine under the opaque moon',\n", + " 'enemy: they want to rule our motherland',\n", + " \"enemy: they'll take our treasure till the end\",\n", + " \"enemy: they'll burn our homes and fields\",\n", + " 'enemy: they came with war!',\n", + " 'the land needs help, the people pray for it a lot:',\n", + " \"all of a sudden lightning strikes from the sky. it's a marvel from the dark!\",\n", + " 'è âîò íà ñâåò ÿâèëñÿ îí. ñïàñèòåëü, äà! íèêòî èíîé!',\n", + " 'âåëèêèé êíÿçü, óðà! ðîæäåí ñïàñòè íàðîä è êðàé ðîäíîé',\n", + " 'forgotten sun brings back to us illumination',\n", + " \"the baby's cry revives lost hope of the nation\",\n", + " 'forgotten sun brings back to us illumination',\n", + " \"the baby's cry revives lost hope of the nation\",\n", + " 'the wind, is rocking the cradle, and father holds the candle',\n", + " \"a flame-colored look from the baby's eyes makes father's eyes to freeze like ice\",\n", + " 'birth of demon or birth of god, but he must grow up with chosen blood',\n", + " 'òåïåðü ïðèíÿòü îáðÿä íàñòàëî âðåìÿ',\n", + " 'êàê äåëàëè îòöû òâîè',\n", + " 'ïðîéòè \"ïîñòðèã\" òû äîëæåí ñìåëî',\n", + " 'ñìîòðè , c êîíÿ íå óïàäè!',\n", + " 'the crowd hails the little king',\n", + " 'the steed was snorting beneath the prince',\n", + " 'forgotten sun brings back to us illumination',\n", + " 'and alexander revives lost hope of the nation',\n", + " 'have you enough strength to defeat the enemy horde?',\n", + " 'have you enough power to stay with the throne?',\n", + " 'awin iderghlen mouqel',\n", + " 'anwa inghen thamournik',\n", + " 'tezgid thaabat eddel',\n", + " 'itaabad fidissanik',\n", + " 'awin iderghlen mouqel',\n", + " 'anwa inghen thamournik',\n", + " 'tezgid thaabat eddel',\n", + " 'itaabad fidissanik',\n", + " 'nougad assif adihmel',\n", + " 'nougad assif adihmel',\n", + " 'adiqlaa dizouranik',\n", + " 'adellel el maana bwawal',\n", + " 'izdegh imdanen marra',\n", + " 'ghass kan adenssawal',\n", + " 'yiwouen ough degh desslala',\n", + " 'adellel el maana bwawal',\n", + " 'izdegh imdanen marra',\n", + " 'ghass kan adenssawal',\n", + " 'yiwouen ough degh desslala',\n", + " 'nougad aghifath el hal',\n", + " 'nougad aghifath el hal',\n", + " 'agh touir thagara',\n", + " \"ach'hal idemineqal\",\n", + " \"ar'assa ourenvan ala\",\n", + " 'dyiwouth tebni tsrouhen',\n", + " 'lather ouriven ala',\n", + " \"ach'hal idemineqal\",\n", + " \"ar'assa ourenvan ala\",\n", + " 'dyiwouth tebni tsrouhen',\n", + " 'lather ouriven ala',\n", + " 'adnoukni outsmeslayen',\n", + " 'adnoukni outsmeslayen',\n", + " 'adentass oudnouk ala',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, this feeling',\n", + " 'this feeling, this feeling, ooh',\n", + " 'this feeling, this feeling',\n", + " 'this feeling, this feeling, ooh',\n", + " 'this feeling, this feeling',\n", + " 'this feeling, this feeling, ooh',\n", + " 'this feeling, this feeling',\n", + " 'this feeling, this feeling, ooh',\n", + " 'this feeling, this feeling, ooh',\n", + " 'this feeling, this feeling, ooh',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, this feeling',\n", + " 'this feeling, this feeling, ooh',\n", + " 'this feeling, this feeling',\n", + " 'this feeling, this feeling, ooh',\n", + " 'this feeling, this feeling',\n", + " 'this feeling, this feeling, ooh',\n", + " 'this feeling, this feeling',\n", + " 'this feeling, this feeling, ooh',\n", + " 'this feeling, this feeling, ooh',\n", + " 'this feeling, this feeling, ooh',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " \"i won't ever lose this feeling\",\n", + " 'this feeling, ooh this feeling',\n", + " 'this feeling, ooh this feeling',\n", + " 'anol shedom',\n", + " 'anol sheh lay konnah de veh-um',\n", + " 'flavum',\n", + " 'nohm de leesh',\n", + " 'ham de nah-um das',\n", + " 'la-um de',\n", + " 'flavne',\n", + " 'we de-zeh zuh beh',\n", + " 'we-ee-zooo a reh',\n", + " 'un va-a pesh al bay',\n", + " 'un vi-a beh',\n", + " 'un da-a pech ni sal',\n", + " 'ee di-lay na day',\n", + " 'un ma-a pech al nay',\n", + " 'mee-e-uh deh',\n", + " 'la la da pa du le na da na',\n", + " 've va da pa do le na da dumda',\n", + " 'la la da pa du le na da na',\n", + " 've va da pa do le na da dumda',\n", + " 'la la da pa du le na da na',\n", + " 've va da pa do le na da dumda',\n", + " 'la la da pa du le na da na',\n", + " 've va da pa do le na da dumda',\n", + " 'anol shedrom',\n", + " 'anol sheh lay konnah de veh-um',\n", + " 'flavum',\n", + " 'flavum',\n", + " 'm-ai shondol-lee',\n", + " 'flavnof',\n", + " 'flof flehsh lam',\n", + " 'flof lenom',\n", + " 'de lice',\n", + " 'ha le noh-um dass',\n", + " 'la-um dе',\n", + " 'flavnee',\n", + " 'flay',\n", + " 'shom de nomm',\n", + " 'ma-un des',\n", + " 'dwondi',\n", + " 'dwondi',\n", + " 'alah shadam du-nahkos',\n", + " 'shaley koo-tum',\n", + " 'woah-woah-woah-woah-woah',\n", + " 'i’m in love with',\n", + " 'woah-woah-woah',\n", + " 'woah-woah-woah-woah-woah',\n", + " 'i’m in love with juda-as, juda-as',\n", + " 'ah-ah, ah-ah-ah-ah, ah-ah, ah-ah-ah-ah',\n", + " 'judas is the demon i cling to',\n", + " 'ah-ah, ah-ah-ah-ah, ah-ah, ah-ah-ah-ah',\n", + " 'i wanna love you',\n", + " 'ah-ah, ah-ah-ah-ah, ah-ah, ah-ah-ah-ah',\n", + " 'judas is the demon i cling to',\n", + " 'i wanna love you',\n", + " 'jesus is my virtue',\n", + " 'i wanna love you',\n", + " 'judas is the demon i cling to',\n", + " 'i cling to',\n", + " 'i cling to',\n", + " 'i cling to',\n", + " 'i cling to',\n", + " 'a diala ayé aman dia ayé',\n", + " 'ana café ni-san',\n", + " 'a diala ayé aman dia ayé',\n", + " 'ana cacao ni-san',\n", + " 'sênein kêlahou ténan',\n", + " 'café sênein gbanzan',\n", + " 'sênein kêlahou ténan',\n", + " 'cacao sênein gbanzan',\n", + " 'oténan sêguê gbanzan',\n", + " 'oténan sêguê gbazan, oh',\n", + " 'neinnin kafri bé ahougnin',\n", + " 'neinnin kafri bé ahougnin',\n", + " 'massouba neinnin',\n", + " 'abénan café ni-san',\n", + " 'abénan chocolat san',\n", + " 'cacao san dê',\n", + " 'a san café ni san',\n", + " 'a san chocolat san',\n", + " 'a san café ni san',\n", + " 'a san cacao san',\n", + " 'buy it, buy my coffee now',\n", + " 'buy it, buy my cocoa now',\n", + " 'a diala ayé ama dia ayé',\n", + " 'ana café ni san',\n", + " 'adiala ayé ama dia ayé',\n", + " 'ana cacao ni san',\n", + " 'sênin kêlahou ténan café sênin gbanzan',\n", + " 'sênin kêlahou ténan cacao sênin gbanzan',\n", + " 'oténan sêguê gbanzan',\n", + " 'oténan sêguê gbanzan',\n", + " 'oh ah oh ah',\n", + " 'nana nana na yea yeah',\n", + " 'oh ah yea yea',\n", + " \"killbeatz let's go\",\n", + " 'oh ah ah',\n", + " 'oooh yeah',\n", + " 'king king promise',\n", + " 'baby girl',\n", + " 'oh yeah oh yeah',\n", + " 'that thing you dey do wey dey make me say',\n", + " 'oh yeah oh yeah',\n", + " 'that thing you dey do dey make me craze',\n", + " 'fa mame fa kyɛ me',\n", + " 'that thing you dey do dey make me craze',\n", + " 'oh yeah fa mame',\n", + " 'that thing you dey do (x2)',\n", + " 'ohema bra me kyɛn, bra me kyɛn',\n", + " 'meheema bra me kyɛn',\n", + " 'come make i put this thing on you',\n", + " 'oh yeah oh yeah',\n", + " 'make i tell you some story',\n", + " 'girl you are the one for me',\n", + " 'i dey your side day and night',\n", + " 'anytime wey you want me',\n", + " 'make i tell you some story ooo',\n", + " 'girl say na you the one for me',\n", + " 'i dey your side day and night',\n", + " 'anytime wey you want me',\n", + " 'aaaah just the things you do',\n", + " 'just the things you do',\n", + " 'wey dey blow my mind',\n", + " 'i just wanna hold you tight',\n", + " 'and baby just wanna look at you',\n", + " 'just wanna look at you',\n", + " 'wey dey blow my mind',\n", + " 'baby you are too fine yeee',\n", + " 'oh yeah oh yeah',\n", + " 'that thing you dey do wey dey make me say',\n", + " 'oh yeah oh yeah',\n", + " 'that thing you dey do dey make me craze',\n", + " 'fa mame fa kyɛ me',\n", + " 'that thing you dey do dey make me craze',\n", + " 'oh yeah fa mame',\n", + " 'that thing you dey do (x2)',\n", + " 'ohema bra me kyɛn, bra me kyɛn',\n", + " 'meheema bra me kyɛn',\n", + " 'come make i put this thing on you',\n", + " 'no hewɔ ikɛbo baya, ikɛbo baya',\n", + " 'bo gyi moni ikɛbo baya',\n", + " 'hɛwɔ ni ikɛ kaaa kwɛ moko,moko',\n", + " 'ikɛ kaaa',\n", + " 'moko,moko',\n", + " 'moko eee,yoo eee',\n", + " 'baby kaaa kwɛ moko,moko',\n", + " 'me and you forever go dey',\n", + " 'forever go dey ooooo eeee (2x)',\n", + " 'oh yeah oh yeah',\n", + " 'that thing you dey do wey dey make me say',\n", + " 'oh yeah oh yeah',\n", + " 'that thing you dey do dey make me craze',\n", + " 'fa mame fa kyɛ me',\n", + " 'that thing you dey do dey make me craze',\n", + " 'oh yeah fa mame',\n", + " 'that thing you dey do (x2)',\n", + " 'ohema bra me kyɛn, bra me kyɛn',\n", + " 'meheema bra me kyɛn',\n", + " 'come make i put this thing on you',\n", + " 'no hewɔ ikɛbo baya, ikɛbo baya',\n", + " 'bo gyi moni ikɛbo baya',\n", + " 'hɛwɔ ni ikɛ kaaa kwɛ moko,moko',\n", + " 'ikɛ kaaa',\n", + " 'moko,moko',\n", + " 'moko eee,yoo eee',\n", + " 'baby kaaa kwɛ moko,moko',\n", + " 'me and you forever go dey',\n", + " 'forever go dey ooooo eeee (x4)',\n", + " '위 아래 위 위 아래',\n", + " '위 아래 위 위 아래',\n", + " '위 아래 위 위 아래',\n", + " 'up, up, up, up up up',\n", + " '위 아래 위 위 아래',\n", + " '위 아래 위 위 아래',\n", + " '위 아래 위 위 아래',\n", + " 'down, down, down, d-down, down, down',\n", + " '난 몰라 순진한 척 하는 네 동공',\n", + " '날 네 맘대로 들었다가는 놓고',\n", + " 'then i feel loco, oh-oh',\n", + " '날 미치게 만들어 강제탑승한',\n", + " \"roller co-coaster, you're su-such a monster\",\n", + " '(such a monster, such a monster)',\n", + " '(hey, baby boy)',\n", + " '听不听不听不懂你在说什么',\n", + " '(hey, baby boy)',\n", + " '猜不猜不猜不透你在说什么',\n", + " '就这样吻着我不要离开我 (넌 넌 왜 왜)',\n", + " '让我在你耳边说 (넌 넌 왜 왜)',\n", + " '위 아래 위 위 아래',\n", + " '在这里就对你说出我的爱',\n", + " \"why don't you know, don't you know, don't you know\",\n", + " '忘记她会给你多少的忧愁',\n", + " \"why don't you know, don't you know, don't you know, yeah\",\n", + " '위 아래 위 위 아래',\n", + " '위 아래 위 위 아래',\n", + " '위 아래 위 위 아래',\n", + " 'up, up, up, d-down, down',\n", + " '我像 没了主张',\n", + " '有了你的我还要什么',\n", + " '不离去 我不离去',\n", + " 'never never never never',\n", + " '不倔强 我不倔强',\n", + " '我什么都不会再去想',\n", + " '没力气 我没力气',\n", + " 'tender tender tender tender',\n", + " '(hey, baby boy)',\n", + " '听不听不听不懂你在说什么',\n", + " '(hey, baby boy)',\n", + " '猜不猜不猜不透你在说什么',\n", + " '就这样吻着我不要离开我 (넌 넌 왜 왜)',\n", + " '让我在你耳边说 (넌 넌 왜 왜)',\n", + " '위 아래 위 위 아래',\n", + " '在这里就对你说出我的爱',\n", + " \"why don't you know, don't you know, don't you know\",\n", + " '忘记她会给你多少的忧愁',\n", + " \"why don't you know, don't you know, don't you know, yeah\",\n", + " 'just do what you wanna, do what you wanna',\n", + " '약올리지 말고 내게 확신을 줘넌',\n", + " '쓸데없는 말은 불필요해 필요해',\n", + " '장난아닌 진심 날 선택의 기로에',\n", + " '서게하지마 날 눈물 젖게 하지마',\n", + " '계속 위 아래 위 위 아래 (oh oh)',\n", + " '위 아래 위 위 아래 (no no no, no)',\n", + " '在这里就对你说出我的爱 (ah, oh no)',\n", + " \"why don't you know, don't you know, don't you know (no, no, no, yeah)\",\n", + " '忘记她会给你多少的忧愁',\n", + " \"why don't you know, don't you know, don't you know, yeah\",\n", + " '위 아래 위 위 아래',\n", + " '위 아래 위 위 아래',\n", + " '위 아래 위 위 아래',\n", + " 'up, up, up, up up up',\n", + " '위 아래 위 위 아래',\n", + " '위 아래 위 위 아래',\n", + " '위 아래 위 위 아래',\n", + " 'pinyin/romanized',\n", + " 'wi arae, wi-wi arae',\n", + " 'wi arae, wi-wi arae',\n", + " 'wi arae, wi-wi arae',\n", + " 'up, up, up, up up up',\n", + " 'wi arae, wi-wi arae',\n", + " 'wi arae, wi-wi arae',\n", + " 'wi arae, wi-wi arae',\n", + " 'down, down, down, d-down, down down',\n", + " 'nan molla sunjinhan cheok haneun ne donggong',\n", + " 'nal ne mamdaero deureotdaganeun noko',\n", + " 'then i feel loco, oh-oh',\n", + " 'nal michige mandeureo gangjetapseunghan',\n", + " \"roller co-coaster, you're su-such a monster\",\n", + " '(such a monster, such a monster)',\n", + " '(hey, baby boy)',\n", + " 'tīng bù tīng bù tīng bù dǒng nǐ zài shuō shénme',\n", + " '(hey, baby boy)',\n", + " 'cāi bù cāi bù cāi bù tòu nǐ zài shuō shénme',\n", + " 'jiù zhèyàng wěnzhe wǒ bùyào líkāi wǒ (neon neon wae wae)',\n", + " 'ràng wǒ zài nǐ ěr biān shuō (neon neon wae wae)',\n", + " 'wi arae, wi-wi arae',\n", + " 'zài zhèlǐ jiù duì nǐ shuō chū wǒ de ài',\n", + " 'why don’t you know, don’t you know, don’t you know',\n", + " 'wàngjì tā huì gěi nǐ duōshǎo de yōuchóu',\n", + " 'why don’t you know, don’t you know, don’t you know, yeah',\n", + " 'wi arae, wi-wi arae',\n", + " 'wi arae, wi-wi arae',\n", + " 'wi arae, wi-wi arae',\n", + " 'up, up, up, d-down, down',\n", + " 'wǒ xiàng méiliǎo zhǔzhāng',\n", + " 'yǒule nǐ de wǒ hái yào shénme',\n", + " 'bùlí qù wǒ bùlí qù',\n", + " 'never never never never',\n", + " 'bù juéjiàng wǒ bù juéjiàng',\n", + " 'wǒ shénme dōu bù huì zài qù xiǎng',\n", + " 'méi lìqì wǒ méi lìqì',\n", + " 'tender tender tender tender',\n", + " '(hey, baby boy)',\n", + " 'tīng bù tīng bù tīng bù dǒng nǐ zài shuō shénme',\n", + " '(hey, baby boy)',\n", + " 'cāi bù cāi bù cāi bù tòu nǐ zài shuō shénme',\n", + " 'jiù zhèyàng wěnzhe wǒ bùyào líkāi wǒ (neon neon wae wae)',\n", + " 'ràng wǒ zài nǐ ěr biān shuō (neon neon wae wae)',\n", + " 'wi arae, wi-wi arae',\n", + " 'zài zhèlǐ jiù duì nǐ shuō chū wǒ de ài',\n", + " 'why don’t you know, don’t you know, don’t you know',\n", + " 'wàngjì tā huì gěi nǐ duōshǎo de yōuchóu',\n", + " 'why don’t you know, don’t you know, don’t you know, yeah',\n", + " 'just do what you wanna, do what you wanna',\n", + " 'yagolliji malgo naege hwaksineul jwoneon',\n", + " 'sseuldeeomneun mareun bulpillyohae, pillyohae',\n", + " 'jangnananin jinsim nal seontaegui giroe',\n", + " 'seogehajima, nal nunmul jeotge hajima',\n", + " 'gyesok wi arae, wi-wi arae (oh oh)',\n", + " 'wi arae, wi-wi arae (no no no, no)',\n", + " 'zài zhèlǐ jiù duì nǐ shuō chū wǒ de ài (ah, oh no)',\n", + " 'why don’t you know, don’t you know, don’t you know (no, no, no, yeah)',\n", + " 'wàngjì tā huì gěi nǐ duōshǎo de yōuchóu',\n", + " 'why don’t you know, don’t you know, don’t you know, yeah',\n", + " 'wi arae, wi-wi arae',\n", + " 'wi arae, wi-wi arae',\n", + " 'wi arae, wi-wi arae',\n", + " 'up, up, up, up up up',\n", + " 'wi arae, wi-wi arae',\n", + " 'wi arae, wi-wi arae',\n", + " 'wi arae, wi-wi arae',\n", + " \"sunayo, su', su', sunayo\",\n", + " \"sunayo, su', su', sunayo\",\n", + " \"sunayo, su', su', sunayo\",\n", + " \"sunayo, su', su', sunayo\",\n", + " \"sunayo, su', su', sunayo\",\n", + " \"sunayo, su', su', sunayo\",\n", + " \"sunayo, su', su', sunayo\",\n", + " \"sunayo, su', su', sunayo\",\n", + " \"sunayo, su', su', sunayo\",\n", + " \"sunayo, su', su', sunayo\",\n", + " 'a racomoder sunayo, a racomoder sunayo (x3)',\n", + " 'a racomoder sunayo x3',\n", + " 'a racomoder sunayo x3',\n", + " 'guccima pona yo',\n", + " 'capitano tu connais',\n", + " 'mama mama mama katapata mama',\n", + " 'dénatora griiche (wai wai)',\n", + " 'dénatora dénatora',\n", + " \"hibobo hibébobo d'assau hibobo dénatora hibobo hibobo\",\n", + " 'dii cii baby na komona yé té',\n", + " 'she like dii cii baby she like',\n", + " 'mama ha she like',\n", + " 'jb wizzy still to iiz',\n", + " 'pololo aller dougie dougie dougie',\n", + " 'ha dougie dougie dougie',\n", + " 'ha dougie dougie dougie',\n", + " 'dougie dougie',\n", + " 'hipopo décalé style hipopo tout le monde héé hipopo hipopo... sunayo',\n", + " 'bks style',\n", + " 'korean (original)',\n", + " '오늘의 넌',\n", + " '너무 지쳐 보여',\n", + " '이대로는',\n", + " '안될 것만 같아',\n", + " '따라와봐',\n", + " '내가 데려 갈게',\n", + " '내 손잡고 놓지 말아줘',\n", + " \"let's have a good time\",\n", + " 'uh oh - oh oh',\n", + " 'have a good time',\n", + " 'uh oh - oh oh',\n", + " '너무 깊게 생각하지 마',\n", + " '우리의 paradise',\n", + " '이렇게 party tonight',\n", + " 'play that song',\n", + " '파티를 시작해',\n", + " \"like it's saturday night\",\n", + " '해보는 거야',\n", + " \"don't stop\",\n", + " '이 밤이 끝나버리지 않도록',\n", + " 'just lose all control',\n", + " 'oh oh oh~',\n", + " 'i surrender my',\n", + " 'i surrender my heart',\n", + " 'i surrender my',\n", + " '오늘 밤은',\n", + " '집에만 있지 마',\n", + " '내일이면',\n", + " '후회할지 몰라',\n", + " '이제 그만',\n", + " ...]},\n", + " 'data': ['\"õìåëüíà äëÿ íèõ ñëàâÿíîâ êðîâü, íî òÿæêî áóäåò èõ ïîõìåëüå\"',\n", + " 'bonfires glow in the darkness of the rival hosts',\n", + " 'the shadows of soldiers waved like ghosts',\n", + " \"the breath of spring, the weather's kindness\",\n", + " 'light crunch of melted ice broke the silence',\n", + " 'both banks had a foretaste of morning battle',\n", + " \"em's, liv's, chud's camps was also on the germans side\",\n", + " 'by force they were baptized from hands of crusaders',\n", + " 'enemy coast like a burning ant hill in the night',\n", + " 'the shine of the northern star which flashes like the eye of the devil',\n", + " 'becomes a sign to start the fight with the force of evil',\n", + " 'at that time a group of fishermen came to alexander',\n", + " 'with glistening axes and near by walked a gray-eyed',\n", + " 'foreigner with big moustache. fishermen said they found',\n", + " 'him half-frozen, brought him to their camp and warmed him up',\n", + " 'he ran away from the knights',\n", + " '\"why did you run from the germans?\" - asks king stranger',\n", + " '\"wolves are they, not humans\" - said the man with a big moustache',\n", + " '\"let me fight with you against knights\" - asked the stranger -',\n", + " '\"to pay for my insults\"',\n", + " 'alexander nods assent',\n", + " '\"cross yourself\". moustache-man crossed himself three times from left',\n", + " 'shoulder to right',\n", + " '\"he crosses himself not by our way\" - noticed the fisherman',\n", + " '\"never mind. if only he fights by our way, but god is one and the truth is one!\"',\n", + " '\"great, you stay and fight with us\", said alexander',\n", + " '\"thanks, i\\'ll do my best to get a good name\" - answers the stranger',\n", + " \"look, what is that twinkle on the other side of the lake, it's a signal, isn't it?\",\n", + " \"that's right, the ice is floating!\",\n", + " 'íà âåëèêîé ðåêå òðîíóëñÿ ëåä âäàëåêå',\n", + " 'à ïî îçåðó íàøè âîéñêà ïîéäóò ëåãêå',\n", + " 'íà ñåðåäèíó îçåðà èõ íàäî íàì çàìàíèòü',\n", + " 'òàì è áóäåò ðåêà ñ æåëåçîì èõ õîðîíèòü',\n", + " \"rise of the sun, thunder of horse's hoofs, heralding the start of battle\",\n", + " \"through morning haze, knight's armor blazes\",\n", + " 'exhale drunken mist in russian troopers heads',\n", + " 'the ranks of mounted livons with giant pikes in iron hands',\n", + " \"the pig's snout sticks in the human swamp\",\n", + " 'snow and blood mix in to one',\n", + " 'forces of good hold the onset of the wedge',\n", + " 'cries of dying men and horses reached the skies',\n", + " 'the germans were trapped, no way to run',\n", + " \"the russian pincers are shut, the way to the crusader's victory was cut\",\n", + " 'new russian hosts from left and right strike the wedge',\n", + " 'encircled knights fall in to dread and lose their courage',\n", + " \"they start to retreat, but the lake can't bear the weight of the knights\",\n", + " 'the ice cracks and the waters gobble the soldiers up. the lakes waters will be red tonight',\n", + " 'anol shedom',\n", + " 'anol sheh lay konnah de veh-um (shaddai)',\n", + " 'flavum',\n", + " 'nohm de leesh',\n", + " 'ham de nah-um das',\n", + " 'la-um de',\n", + " 'flavne',\n", + " 'we de-zeh zuh beh',\n", + " 'we-ee-zooo a reh',\n", + " 'un va-a pesh al bay',\n", + " 'un vi-a beh',\n", + " 'un da-a pech ni sal',\n", + " '(aaahh)',\n", + " 'ee di-lay na day',\n", + " 'un ma-a pech al nay',\n", + " 'mee-e-uh deh',\n", + " 'la la da pa du le na da na',\n", + " 've va da pa do le na da dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'anol shedom',\n", + " 'anol sheh lay konnah de veh-um',\n", + " 'flavum',\n", + " 'flavum',\n", + " 'm-ai shondol-lee',\n", + " 'flav- (live on…)',\n", + " '-nof flof flehsh lam',\n", + " 'flof le-',\n", + " '-nom de lice',\n", + " 'ha le noh-um dass',\n", + " 'la-um de',\n", + " 'flavnee',\n", + " 'flay',\n", + " 'shom de nomm',\n", + " 'ma-un des',\n", + " 'dwondi',\n", + " 'dwwoondi',\n", + " 'alah shadam du-nahkos',\n", + " 'shaley koo-tum',\n", + " 'nasta! riva!',\n", + " 'heire! terakonide!',\n", + " 'dibon! taimaska!',\n", + " 'stimi! wiraonnyasa!',\n", + " '(scatting)',\n", + " 'nasta! riva!',\n", + " 'heire! terakonide!',\n", + " 'dibon! taimaska!',\n", + " 'riva!',\n", + " 'raizonnei, nyurazastei',\n", + " 'dismisaidon, gyaro, gyaro',\n", + " 'wastireimyun minakeijyun',\n", + " 'kozozawaden joriruni',\n", + " 'raizonnei, nyurazastei',\n", + " 'dismisaidon, gyaro, gyaro',\n", + " 'wastireimyun minakeijyun',\n", + " 'tojyuranahabete zeriru bitinnu, woah',\n", + " 'heinasa! dyuwatsa! zeimina!',\n", + " 'saponnyaro!',\n", + " 'kanfide! stapinize! yodontorize!',\n", + " 'bitinnu, woah',\n", + " 'come inside',\n", + " 'my dreams are thine',\n", + " 'and flow inside',\n", + " 'my womb is thine...',\n", + " 'you come from unknown planets',\n", + " 'bringing deadly sonnets',\n", + " 'messenger of fear',\n", + " 'god and death are here',\n", + " 'children born by cosmic madness',\n", + " 'mutant creatures bound to sadness',\n", + " 'horror shows are here performed',\n", + " 'monsters - human flesh deformed',\n", + " 'dark the light',\n", + " 'that feels my eyes',\n", + " 'and dark the night:',\n", + " \"the moon won't rise...\",\n", + " '\"i am in thee to save thee, as my soul in thee saith;',\n", + " 'give thou as i gave thee, thy life-blood and breath',\n", + " 'green leaves of thy labour, white flowers of thy thought',\n", + " 'and red fruit of thy death',\n", + " 'be the ways of thy giving, as mine were to thee;',\n", + " 'the free life of thy living, be the gift of it free;',\n", + " 'not as servant to lord, nor, as master to slave',\n", + " 'shalt thou give thee to me.\"',\n", + " 'grigie emozioni celesti',\n", + " 'scorrono dentro me mille voci bianche',\n", + " 'vibrano intorno a me in cerca di una rima',\n", + " 'dolce musica che dura un istante',\n", + " 'vita senza un perchè, sola piû di prima',\n", + " 'þàáöäåôãõèéêëìíîïßðñòóæâüûçøýù×ú',\n", + " 'nascono come noi, grandi gli occhi neri',\n", + " 'amano se lo vuoi, vita del mio ventre',\n", + " 'sognano come noi, vedono i pensieri',\n", + " 'da un mondo dove non õ, chi non õ per sempre',\n", + " 'my child...',\n", + " '...unearthly',\n", + " 'grey, pale essence is falling to pieces in front of my',\n", + " 'eyes',\n", + " 'the majestic trees uncovering their bodies',\n", + " 'stretching hands towards the merciless sky of dark',\n", + " 'òàì âúâ ìðàêà ãàðâàíè ÷åðíè',\n", + " 'øåìåòíî êðúæàõà â íàäãðîáåí îáðåä...',\n", + " '/there in the dark are flying black crows',\n", + " 'performing heady funeral ritual/',\n", + " 'spells uproar deadly silence',\n", + " 'wind is dancing alone in the tangle of woods',\n", + " 'withered flowers whisper my name, whisper my name...',\n", + " 'ìîëÿò çà æèâîò, ïëà÷àò, íå çíàÿò',\n", + " '×å âúâ ÷åðíî ñà òîëêîç êðàñèâè...',\n", + " \"/praying for life, moaning but they don't know\",\n", + " 'how beautiful they are in these black garments/',\n", + " 'the sun has just gone down the silent calm lake',\n", + " 'and the dark called for the mournful moon',\n", + " 'my heart is bound in melancholy forever lost in the',\n", + " 'wood',\n", + " 'within the deserted gloomy soul of fall',\n", + " \"la ca sla colin-a l'é bela\",\n", + " 'maria la varda peui dis :',\n", + " 'am piasrìa podèj catèla',\n", + " \"sarìa 'l mè paradis!\",\n", + " \"l'é bianca la ca sla colin-a\",\n", + " \"l'é bianca come 'n linseul\",\n", + " \"s'it la varde a smija ch'a grigna\",\n", + " \"l'é pròpi la ca che a veul\",\n", + " \"l'é gròssa la ca sla colin-a\",\n", + " 'tante stansie con finestre e pogieuj',\n", + " 'starìo pròpi bin là ansima',\n", + " 'mi, mè òm e ij mè fieuj',\n", + " \"mè pare fasìa 'l murador\",\n", + " \"l'é mòrt ancora spòrch ëd càussin-a\",\n", + " \"l'ha fala chiel la ca sla colin-a\",\n", + " \"l'ha fala për quatr ësgnor\",\n", + " \"e lor a ven-o d'istà\",\n", + " 'stan mach doi mèis peui van via',\n", + " \"la ten-o mach basta ch'a sìa\",\n", + " 'e mi a son sensa ca',\n", + " \"la ca sla colin-a l'é bela\",\n", + " 'maria la varda peu dis :',\n", + " 'mi podreu mai catèla',\n", + " 'për ij pòver a-i-é nen paradis!',\n", + " 'a la desterà al veint',\n", + " 'con un colp al persian',\n", + " \"l'è acsè lèrgh al sòo let\",\n", + " 'e i linzòo fradd e grand',\n", + " \"tòt dò i oc' mez e srèe\",\n", + " \"zercherà n'ètra man\",\n", + " 'sèinza catèr nisun',\n", + " 'come aièr, come edman',\n", + " 'al so stèr da per lèe',\n", + " \"l'è un sò amigh da tant'an\",\n", + " \"ch'a l' ch'gnass tòtt i sòo quèl\",\n", + " 'fin al pighi dla man;',\n", + " 'la scultarà al gnulèr',\n", + " \"d'un gat vec' e castrèe\",\n", + " \"ch'a gh' dòrm inzèmma a i znoc\",\n", + " \"d'invèren tòtt al dè\",\n", + " 'un breviari apugièe',\n", + " 'in vatta a la tulatta',\n", + " \"e un gaz d'acqua trincèe\",\n", + " \"quand a s'lèva la żiatta\",\n", + " \"un spec' vec' e incrinèe\",\n", + " \"a gh'arcurdarà pian\",\n", + " \"come al tiemp l'è pasèe\",\n", + " 'come in vulèe via i an',\n", + " \"e gl'insaggni dl'etèe\",\n", + " \"per al stridi i s' sèn pèrs\",\n", + " \"quanti rughi ch'a gh'è\",\n", + " \"e i oc' come i èn divèrs\",\n", + " \"l'a gh' butarà un suris\",\n", + " \"la purtinèra ed ca'\",\n", + " \"per l'urgói cg' a gh'la lèe\",\n", + " \"perché a gh' fa bèin i fat;\",\n", + " \"tòtt i dè fèr l'istass\",\n", + " 'ciapèr al filibùs',\n", + " 'per badèr ai tragatt',\n", + " \"d'un avuchèe nèe stóff\",\n", + " 'cun al quèl an andrèe',\n", + " 'l\\'aviva fat la \"stratta\"',\n", + " \"ma tant tèimp l'è pasèe\",\n", + " \"ch'a n s'arcorda la żiatta\",\n", + " \"lèe ch'l'ha sèimpr in piò un piat\",\n", + " 'quand ariva nadèl',\n", + " \"lèe ch'la 'n vòl mai nisun\",\n", + " \"se un dè, a chès, l'a s' sèint mèl\",\n", + " \"lèe ch'l'a 'n gh'ha gnanca un fióo\",\n", + " 'sol quall ed sóo fradel',\n", + " 'lèe ch\\'l dis: \"l\\'a \\'n va mel!\"',\n", + " 'ch\\'l\\'a dis: \"a fagh tant bè!\"',\n", + " 'e la dmanga del pèlmi',\n", + " 'la cumprarà a sòo anvod',\n", + " \"un bel ram longh d'uliv\",\n", + " 'e un pèr ed calzatt nóv',\n", + " \"e po' in cesa tótt dóo\",\n", + " 'i faran come al pret',\n", + " 'e i pregherai gesó',\n", + " \"ch'a l'va a gerusalem;\",\n", + " \"po' a gh' darà soquant franch\",\n", + " \"de mattr'ind 'na casatta\",\n", + " \"perché a s' dèv risparmièr\",\n", + " 'com la fa lèe, żiatta',\n", + " \"e un dè a s'gh'ha da murir\",\n", + " \"com' piò o meno i fan tótt\",\n", + " \"cun 'na frèva da gnint\",\n", + " \"l'andrà in cal póst tant brótt;\",\n", + " \"l'avrà bele paghe\",\n", + " \"un prèt ch'a s'sèint a póst\",\n", + " 'la casa, al funerèl',\n", + " 'e la massa di mort',\n", + " \"e i fior ch'i andrai andrèe\",\n", + " 'al sóo trèst suplimèint',\n", + " 'i èn cal cosi che pass',\n", + " \"a l' se scorda la zèint;\",\n", + " \"a gh' resterà po' i fior\",\n", + " 'e i drap negher e zal',\n", + " \"e dedrèe un vec' amigh\",\n", + " 'scuvèrt un mumèint fa',\n", + " \"e un santèin a l' dirà\",\n", + " \"ch'l'è morta n'ètra sciatta;\",\n", + " \"ch'l'arpóunsa in pès, amen\",\n", + " 'e scurdaramm la żiatta',\n", + " 'ningen sabê ken k rosa é',\n", + " 'nen un amig, ningen konxê-l',\n", + " 'se olhar vaziu ten tónt segred',\n", + " \"n t'oiá-l tud dia ta pasá\",\n", + " \"dond'é k-el ben pond'é k-el bai\",\n", + " 'sen un surriz pa konsolá-l',\n", + " \"t'andá pa kónt el é deskunfiód\",\n", + " 'txeu ves el ta falá el-só',\n", + " 'el ten un koza diferent',\n", + " 'rosa ben, ben vivê…',\n", + " 'rosa ben, ben vivê…',\n", + " 'na se andar n ta duvinhá',\n", + " 'k na fantazia el ta vivê',\n", + " 'i la ses med ta abrí en flor',\n", + " 'tónt ves un kis pegá-l na mon',\n", + " 'i dze-l kma vida ten valor',\n", + " 'má tenp korré ladera bóx',\n", + " 'i un dia rosa ka parsê',\n", + " \"sónbra d'triztéza invadí nha kamin\",\n", + " 'nunka mas ningen sub d-el',\n", + " 'i se olhar vivê na mi',\n", + " 'rosa ben, ben vivê…',\n", + " 'rosa ben, ben vivê…',\n", + " '(x2)',\n", + " 'amarisi amari',\n", + " 'amari chini borie',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " 'amarisi amari',\n", + " 'amari chini borie',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " 'amarisi amari',\n", + " 'amari chini borie',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " 'dooi dooi desha dooi',\n", + " 'tumidou meh lako mui',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " 'dooi dooi desha dooi',\n", + " 'tumidou meh lako mui',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " 'lako musi rupona',\n", + " 'pushka trubula dinow',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " 'lako musi rupona',\n", + " 'pushka trubula dinow',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " 'kelen savoraleh\\xaddrom',\n", + " 'te kelai la puroh rom',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " 'kelen savoraleh\\xaddrom',\n", + " 'te kelai la puroh rom',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " 'puroh rom te kelelah',\n", + " 'bistayeh je malav\\xadya',\n", + " 'ai, lalala lay lay lay, laylay',\n", + " 'puroh rom te kelelah',\n", + " 'bistayeh je malav\\xadya',\n", + " 'ai, lalala lay lay lay, laylay',\n", + " 'hoy ! te meraoo',\n", + " 'tena chachi paw phenow',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " 'hoy ! te meraoo',\n", + " 'tena chachi paw phenow',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " '(x2)',\n", + " 'amarisi amari',\n", + " 'amari chini borie',\n", + " 'ai, lalala lay lay lay lay lay\\xadlay',\n", + " 'no~ no',\n", + " 'urin cheoeume yeonghwa soge naoneun',\n", + " 'geureon saranghaesseotji',\n", + " 'geunde hangsang jaldweneun geot gateunte',\n", + " 'wae iri geureohke kko ineunji',\n", + " 'jeomjeom nan sasohan ilkajigo ttajyeosseo',\n", + " 'deo jaju datugo maeil maeil ssaweosseo',\n", + " 'nado moreuge neol mireo nae',\n", + " 'wae urieui haengbokgwa gachi tteonaga (girl)',\n", + " \"i'm so sorry\",\n", + " 'jebal kajima ah ah ah ah',\n", + " 'modeun ge nae tashiya',\n", + " 'gochil tenikka dorawa ah ah ah ah baby',\n", + " 'nan neo eopshi andwae',\n", + " 'hangsang ni ape nan wae',\n", + " 'ireohke sarange ppajin baboga dweneunji',\n", + " 'nan neo hanteman yakhae',\n", + " 'nareul jom bwabwa nan neomu apa',\n", + " 'i am so hurt girl',\n", + " 'i need a doctor',\n", + " 'namja nikka nunmureul heulliji anha',\n", + " 'geuraedo jugeul geot gata',\n", + " 'nan neo eopshi andwae~',\n", + " 'no no no no no no~',\n", + " 'ooh~',\n", + " 'nan weonrae jabjido anhjiman',\n", + " 'neoreul nohchil su eopseo',\n", + " 'waenyamyeon neoneun nae jeonbugo',\n", + " 'neomu akkigo isseo',\n", + " 'urin ajikdo heuimangi boyeo',\n", + " 'ireohke kkajin hal piryon eopseo',\n", + " \"i'm so sorry\",\n", + " 'jebal kajima ah ah ah ah ah',\n", + " 'modeun ge nae tashiya',\n", + " 'gochil tenikka dorawa ah ah ah ah ah no',\n", + " 'nan neo eopshi andwae',\n", + " 'hangsang ni ape nan wae',\n", + " 'ireohke sarange ppajin baboga dweneunji',\n", + " 'nan neo hanteman yakhae',\n", + " 'nareul jom bwabwa nan neomu apa',\n", + " 'i am so hurt girl',\n", + " 'i need a doctor',\n", + " 'namja nikka nunmureul heulliji anha',\n", + " 'geuraedo jugeul geot gata',\n", + " 'nan neo eopshi andwae',\n", + " 'i need you girl stay by my side',\n", + " 'wanna be with you',\n", + " 'till the day we die',\n", + " 'nae gyeote isseojweo',\n", + " 'nan jeoltae nan jugeodo',\n", + " 'neol nohchil suga eopseo girl~',\n", + " 'yeojadeuri manhado nan neoman boyeo',\n", + " 'gaseum apeugo nunmuri goyeo',\n", + " 'tto heulliji mothae nae mami joyeo',\n", + " 'mom ane poktan nae sogi tejyeo boom',\n", + " 'tagyeogi kkeosseo niga bissado',\n", + " 'sarangeun gagyeogi eopseo',\n", + " 'check it na ireohke saenggakhae',\n", + " 'doneun eopseodo neomaneuro haengbokhae',\n", + " 'nahante jeori ga-ran sori hajima',\n", + " 'nae soneul tteonado',\n", + " 'yoyocheoreom dorawa',\n", + " 'nahante jeori ga-ran sori hajima',\n", + " 'nae soneul tteonado',\n", + " 'yoyocheoreom dorawa',\n", + " 'nan neo eopshi andwae',\n", + " 'hangsang ni ape nan wae',\n", + " 'ireohke sarange ppajin baboga dweneunji',\n", + " 'nan neohanteman yakhae',\n", + " 'nareul jom bwabwa nan neomu apa',\n", + " 'i am so hurt girl',\n", + " 'i need a doctor',\n", + " 'namja nikka nunmureul heulliji anha',\n", + " 'geuraedo jugeul geot gata',\n", + " 'nan neo eopshi andwae~ no no',\n", + " 'na hante dorawa girl',\n", + " 'baby just come back come back to me',\n", + " 'baby just come back come back to me',\n", + " 'son déri sang / mini sondé',\n", + " 'bika mi sanga / ga minitou / mi pa mi tcho andou mi pao yé',\n", + " 'son déri sang / minimi so bébi sondé..é',\n", + " 'bika misanga ganimitou / mi pa mi tcho andou mi pao yé',\n", + " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", + " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", + " 'we ya senga / has wéhé',\n", + " 'wanna wéndé lambo / hé hé hémentourek !',\n", + " 'hé hi yé yé yé (bis)',\n", + " 'son déri sang / hou hou hou hou hou / mini sondé',\n", + " 'bika mi sanga / ga minitou / mi pa mi tcho andou mi pao yé',\n", + " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", + " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", + " 'we ya senga wé / has wéhé',\n", + " 'wanna wéndé lambo / hé hé hémentourek !',\n", + " 'hé... hi yé yé yé',\n", + " 'né ma ka ni kaso',\n", + " 'né ma pa ni kaso / né ma pa sé pa',\n", + " 'né ma ka ni kaso / né ma pané ka',\n", + " 'né ma pa ni kaso / né ma pa sé pa',\n", + " 'né ma ka ni kaso / né ma pané ka',\n", + " 'né ma pa ni kaso / né ma pa sé pa',\n", + " 'né ma ka ni kaso / né ma pané ka',\n", + " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", + " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", + " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", + " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", + " 'we ya senga / has wéhé',\n", + " 'wanna wéndé lambo / yé yé yein',\n", + " 'we ya senga / has wéhé',\n", + " 'wanna wéndé lambo / hé hé hémentourek !',\n", + " 'né ma pa ni kaso / né ma pa sé pa',\n", + " 'né ma ka ni kaso / né ma pané ka',\n", + " 'né ma pa ni kaso / né ma pa sé pa',\n", + " 'né ma ka ni kaso / hé... hi yé yé yé',\n", + " 'uh, make me feel (-me feel)',\n", + " 'make me feel (uh, uh)',\n", + " 'feel',\n", + " 'oh',\n", + " 'uh, make me feel (uh, uh)',\n", + " 'feel',\n", + " 'make',\n", + " 'uh, make me feel (-me feel)',\n", + " 'uh, nake me feel (uh, uh)',\n", + " 'feel',\n", + " 'oh',\n", + " 'uh, make me feel (uh, uh)',\n", + " 'feel',\n", + " 'make',\n", + " 'you-you-you-you-you-you-you-you-you blew my miiinnnddd',\n", + " 'you blew my miiinnnddd',\n", + " \"i'm never gonna get to love you more as now\",\n", + " 'loving you',\n", + " 'is all i do',\n", + " 'loving you',\n", + " 'is all i do',\n", + " 'you blew my miiinnnddd',\n", + " 'you blew my miiinnnddd',\n", + " 'who can tell hore diwa kae',\n", + " 'follow me o tla utlwa monate',\n", + " 'one time, ga gona melao',\n", + " 'ke bone o, are o rata o',\n", + " 'one by one re shapa dipina',\n", + " 'two by two kare ro sekama kae',\n", + " 'two to nine ra di simolla',\n", + " \"12 o'clock ho cha snara le kota\",\n", + " \"don't talk, o senyana dipina\",\n", + " 'show me, hore o di lata jang',\n", + " 'jang kapa jang, tlabe rele teng',\n", + " \"i don't mind ho tshwara mona\",\n", + " 'just enjoy baby tsotlhe ditla loka',\n", + " 'o mpitse papa, ko bitse mama',\n", + " 'fa re fetsa ro feletsa kae?',\n", + " 'fa re fetsa o tsamaya le mang?',\n", + " 'fa re feta ro feletsa kae?',\n", + " 'fa re fetsa o tsamaya le mang?',\n", + " 'no no no no',\n", + " \"don't fight, le tlo re bora\",\n", + " 'e nwa jwala, tlohela polotiki',\n", + " \"don't stress, o re senyetsa monate\",\n", + " 'be free, o imixe le bana',\n", + " 'side to side, mepako ke e',\n", + " '2 by 2, ko dicorneng',\n", + " 'mr serious, band ke bale',\n", + " 'slow down, o tlabe wa re jesa',\n", + " 'fasa o, nna ke fase o',\n", + " 'jackpot, dilo diya itobetsa',\n", + " 'one by one, dj wa di chencha',\n", + " 'six to six, ya monate feela',\n", + " 'two by two , three is a crowd',\n", + " 'you must never say, hore wa tsamaya',\n", + " 'fa re fetsa ro feletsa kae?',\n", + " 'fa re fetsa ro o tsamaya le mang?',\n", + " 'fa re feta ro feletsa kae?',\n", + " 'fa re fetsa ro o tsamaya le mang?',\n", + " 'abuti weh, tlhobola di glass',\n", + " 'adawise, re tlo di thuba',\n", + " 'you can dance, mara ska etsa lerole',\n", + " 'tshwara mepako, letsatsantsa ke laka',\n", + " '6 by 6, ra di kometsa',\n", + " 'fa o ka latlha re tseya ngwana',\n", + " 'ausi weh, o itshwere ka mang?',\n", + " 'mphe di number ke u tshware ka moya',\n", + " 'next time ke nna le wena',\n", + " 'bona di key, dire tsela weh',\n", + " 'baby please ska mpoqa',\n", + " 'fa ele di drinks, ke tla u rekela',\n", + " 'bona ole, ba mo gana',\n", + " 'o ska tla mo, wa ntshenyetsa',\n", + " 'fa re fetsa ro feletsa kae?',\n", + " 'fa re fetsa o tsamaya le mang?',\n", + " 'fa re feta ro feletsa kae?',\n", + " 'fa re fetsa o tsamaya le mang?',\n", + " 'fa re feta ro feletsa kae?',\n", + " 'fa re fetsa o tsamaya le mang?',\n", + " 'fa re feta ro feletsa kae?',\n", + " 'fa re fetsa o tsamaya le mang?',\n", + " 'humanoid must not escape',\n", + " 'humanoid must not escape',\n", + " 'humanoid must not escape',\n", + " 'humanoid must not escape',\n", + " 'yeaahah',\n", + " 'yeaahah',\n", + " 'yeaahah',\n", + " 'yeaahah yeah yeaah',\n", + " 'yeaahah yeah yeaah',\n", + " 'yeaahah yeah yeaah',\n", + " 'yeaahah yeah yeaah',\n", + " 'yeaahah yeah yeaah',\n", + " 'yeaahah yeah yeaah',\n", + " 'yeaahah yeah yeaah',\n", + " 'yeaahah yeah yeaah',\n", + " 'humanoid must not escape',\n", + " 'yeaahah yeah yeaah',\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " \"let's fuck!\",\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " \"let's fuck!\",\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " 'hardcore yeaahah yeah',\n", + " 'humanoid must not escape',\n", + " 'humanoid must not escape',\n", + " 'hardcore yeaahah yeah',\n", + " \"let's fuck!\",\n", + " 'mousso sarama ni mousso dembéma ni mousso tchègni bè bamako',\n", + " 'bakakènè mousso ni guipure mousso ni mini dow na bè bamako',\n", + " 'alé yé nièlé tè massi nisôgoya',\n", + " 'alé yélègni tè massi nièlagoya',\n", + " 'everyday dressed like a queen',\n", + " 'in blue, red, yellow dresses',\n", + " 'women in bamako are beautiful',\n", + " 'oh mali mousso',\n", + " 'i miss your smile',\n", + " 'i want to hear your laughter',\n", + " 'houn hounhounhoun',\n", + " 'né ma dan sôro moussow la',\n", + " 'mali moussow tama tchoko kagny',\n", + " \"né ma dan sôrô n'wolo ba ou la\",\n", + " 'farafina moussow ou sara ba ou la',\n", + " 'né bè foli bila moussow ou yé',\n", + " 'ah moussoya',\n", + " 'a kouma fôba katchan dé',\n", + " 'ah moussoya',\n", + " 'a wale kè baka mantchan',\n", + " 'sébè alla yé, bara bè moussow bolo',\n", + " 'tchè mana nia fourouso mousso',\n", + " 'tchè mana tiniè fourouso mousso',\n", + " 'dén mana niè a woloba mousso',\n", + " 'dé mana tiniè a woloba mousso',\n", + " 'bana baou, famabaw, ni nalomaw, banabatow',\n", + " 'wolo baka ni ou lado baka',\n", + " 'ô farafina mousso',\n", + " 'i miss your smile',\n", + " 'everyday they face their destiny',\n", + " 'shirtless, barefoot under the sun',\n", + " 'women in africa are strong',\n", + " 'ô farafina mousso',\n", + " 'i miss your smile',\n", + " 'i want to hear your laughter',\n", + " 'i admire the courage you face your destiny with',\n", + " 'ô farafina mousso',\n", + " 'i miss your smile',\n", + " 'i want to hear your laughter',\n", + " 'my inspiration is drawn from you',\n", + " 'ô farafina mousso',\n", + " 'i miss your smile',\n", + " 'anything good i can do',\n", + " 'i want it to be a tribute to you',\n", + " 'mali moussow tamatchoko kagni',\n", + " 'farafina moussow ou sarabaw la',\n", + " 'mali moussow tamatchoko kagni',\n", + " 'farafina moussow ou sarabaw la',\n", + " 'mali moussow tamatchoko kagni',\n", + " 'farafina moussow ou sarabaw la',\n", + " 'mali moussow tamatchoko kagni',\n", + " 'farafina moussow ou sarabaw la',\n", + " 'mali moussow tamatchoko kagni',\n", + " 'farafina moussow ou sarabaw la',\n", + " 'ai ja oshienai nante omou no wa',\n", + " 'kimetsukete hanashi mo kikanai kokoro',\n", + " 'doushite itsumo sounan darou',\n", + " 'ooki na ai ga sou',\n", + " 'afureru heya no naka de',\n", + " 'taiyou no hikari ga yureteru',\n", + " 'sono kuuki i wanna give it all to you',\n", + " 'kyou kara wa stay with me',\n", + " 'mitsukeru happy ending',\n", + " 'mahou de tsunagatteru no arifureta gozenchuu',\n", + " 'iro ga utai dashitara koohii o susuru',\n", + " 'saa mezametara itsuka nakushita pazuru',\n", + " 'kakera o motteru hito o sagashi ni ikou',\n", + " 'ai ja sukuenai mono nante nai',\n", + " 'sonna hata o kakagete',\n", + " 'ue o muite, mae muite utattara',\n", + " 'nanika mitsukaru ka na',\n", + " 'kimi koso ga best in my life',\n", + " 'ashita wa kitto i’ll be in your life',\n", + " 'nani ga atte mo kimi no mikata sa',\n", + " 'kyou kara wa stay with me',\n", + " 'you’ll be my happy ending',\n", + " 'mahou de tsunagatteku no munashiku omotteta koto',\n", + " 'mou hitoriyogari ja nai kimi ga iru kara',\n", + " 'saa mezametara musunda kimi to no yakusoku',\n", + " 'mamotteku tame ni zutto kyou mo ganbatte ikou',\n", + " 'ai ja sukuenai mono nante nai',\n", + " 'sonna hata o kakagete',\n", + " 'ue o muite, mae muite aruitara',\n", + " 'nanika mitsukaru ka na',\n", + " 'iwanakute mo best in my life',\n", + " 'ashita wa kitto i’ll be in your life',\n", + " 'nani ga atte mo kimi no mikata sa',\n", + " 'just wanna tell you',\n", + " 'chiisa na shiroi kirei na doresu o kiru hi',\n", + " 'i want you to stay with me, see the stars at night time',\n", + " 'and some day, i want you to marry me',\n", + " 'mitsukeru happy ending']},\n", + " 'rock': {'meta': {'train_data': ['tërëä',\n", + " 'earthlings',\n", + " 'nöt yümdürt',\n", + " 'stop, human who pollute',\n", + " 'täë tërëä',\n", + " 'earth, earthlings',\n", + " 'säë rïündï',\n", + " 'we are all the plants of the sky',\n", + " 'günt mï tërä',\n", + " 'kill me too, despicable humain earthling',\n", + " 'nöt yümdürt',\n", + " 'stop, human who pollute',\n", + " 'säë mï lï',\n", + " 'my spirit lies',\n", + " 'säë yümdürt',\n", + " 'infamous mind',\n", + " 'yüm mï tërëä',\n", + " 'which i belong, earthlings',\n", + " 'yüm ä rïsä üntäë',\n", + " \"man doesn't care that the life disappears\",\n", + " 'ünsäë',\n", + " 'insensitive',\n", + " 'yüm ä rïsä üntäë',\n", + " \"man doesn't care that the life disappears\",\n", + " 'türï sölïtïüd därkë tï sölïtïüd',\n", + " 'sad, dark loneliness, exceed solitude',\n", + " 'tërëä sörvï tërï',\n", + " 'earthlings slaves of the hybrid illuminati',\n", + " 'sölïtïüdï vïsätïü läïrä',\n", + " 'the disunity will destroy everything',\n", + " 'sölïtïüdï värïnsän tïüdï',\n", + " 'disunity prevents us from seeing',\n", + " \"tërëä mär m'tï\",\n", + " 'the earthlings suffocate',\n", + " 'sündäë rïündï cöïündï',\n", + " 'the flamboyants roots of eternal sun be manisfest',\n", + " 'für säë ründï tündü rïündätï',\n", + " 'the roots of our spirits are connected to the absolute vaccum',\n", + " 'fündër üsü',\n", + " 'learn to know himself',\n", + " 'düdü yüm düdü rïündätï',\n", + " 'cruelty of man, cruelty of absolute vaccum',\n", + " 'fö ä ürï',\n", + " 'hypocritical world',\n", + " 'dütälün dälï ürï',\n", + " 'the manipulation separates us from the universe',\n", + " 'fälüsätün tälürïn täë',\n", + " 'ignorance, the earth belongs to everyone',\n", + " 'fälïsï ürï',\n", + " 'the world is wrong',\n", + " 'fälïsï dälün dälün dälündätï',\n", + " 'error, black moon, black moon, ancestral black moon',\n", + " 'fälïündï fälïündïcï',\n", + " 'lie, fear',\n", + " 'fälüsä ütä ürï sändätï ürï sändätä ü sändätä',\n", + " 'malevolence on the creatures of this planet',\n", + " 'the univers bleeds since a long time',\n", + " 'the univers bleeds a lot',\n", + " 'we bleed a lot',\n", + " 'färïä sätä cö ï ündätï cö ï ündätï fündätä ündä',\n", + " 'evil brother',\n", + " 'related to us constantly',\n", + " 'related to us constantly',\n", + " 'infernal wedding',\n", + " 'yüm',\n", + " 'mankind',\n", + " 'ündülï',\n", + " 'bravery',\n", + " 'für ütä ündülï für rï ündürï',\n", + " 'for the creatures, bravery, because nothing is impossible',\n", + " 'dörï ündätï',\n", + " 'beauty eternal',\n", + " 'ündütäyä für säë ündäë',\n", + " 'revolt of the spirit',\n", + " 'für yä düntä yä ïlä yümdä',\n", + " 'against bestiality, the shout of another mankind',\n", + " 'ündäëtün fü ïlï lün',\n", + " 'disharmony, the dementia hidden in the moon',\n", + " 'dälün dälündätï',\n", + " 'black moon, ancestral black moon',\n", + " 'cündäyä fü ïlün dïlï',\n", + " 'their foolish and powerful negative energies tear us',\n", + " 'yüm cör cör rï sündälï',\n", + " 'the heart of humanity is being emptied his sun is dying',\n", + " 'yüm cör cör cör rü sündälï',\n", + " 'the heart of humanity becomes black',\n", + " 'yüm cör cör rï sündälï',\n", + " 'the heart of humanity is being emptied his sun is dying',\n", + " 'fürïsün',\n", + " 'solar flare',\n", + " 'därï därï sün',\n", + " 'reconnecion, reconnection with the sun',\n", + " 'därï därï sün därï',\n", + " 'reconnecion, reconnection with the sun, reconnection',\n", + " 'yüm cör cör rï sündälï yüm yüm',\n", + " 'the heart of humanity is being emptied his sun is dying, man, man',\n", + " 'yüm cör cör cör rü sündälï yäyäyäyä',\n", + " 'the heart of humanity becomes black, ha !',\n", + " 'yüm yüm cör rï sündälï yüm yüm',\n", + " 'the heart of humanity is being emptied his sun is dying, man, man',\n", + " 'fürïsün',\n", + " 'solar flare',\n", + " 'därï därï sün',\n", + " 'reconnecion, reconnection with the sun',\n", + " 'därï därï sün därï',\n", + " 'reconnecion, reconnection with the sun, reconnection',\n", + " 'ürï cösä für ürï fürüs mï ëntör ï fü ä dïlïr mï dïrïün',\n", + " 'inverted world, this world gives power to the fools and rejects the true heroes',\n", + " 'mï ürä ün ürï ür mï cündürï ürï dü fï für säë sörïä ï ürtï',\n", + " 'we have the world we deserve, world of war for violent warrior spirit',\n", + " 'värïnsän äë tärün värïnsän üsü ëntör ündürï',\n", + " 'look at nature, look at its natural laws',\n", + " 'ëï öl mï ütä kälün ï sälïn rän sütch üsü für vïrï äë ündä ür hün ürï cündüïlï',\n", + " 'where all animals and plants creatures must devour themselves to survive, hell is a closed world',\n", + " 'universe of war',\n", + " 'ürï mï rün ündäë äë rün dhü äë jül mï ütä ür ündätï ündätï fürüs öl dü dhü kë',\n", + " 'world of eternal war, the war between the forms of life is permanent, perpetual, present everywhere, every second',\n", + " 'universe of war',\n", + " 'äë bïösïs ï äë rün dälï äë räïgn dü ëlëï ä fün sölü äë tün ïn ü dhü äë jül mï ütä',\n", + " 'symbiosis and war share the reign of living beings in equal parts, fights within ourselves, between the forms of life',\n", + " 'kïh rün vïrï ël ïlïs fï',\n", + " 'who wants to live, makes war',\n", + " 'äë ütä krïst rän ündï mï ürdä väïüläntä dü mï lïvïr ïn äë ündï günt ïn mï sän',\n", + " 'the christic creatures must suffer the humiliating consequences of the incarnation, in the past, crucified in the flesh',\n", + " 'lä günt ïn mï säë',\n", + " 'now, crucified in the soul',\n", + " 'war universe rattle me',\n", + " 'there is suffering everywhere',\n", + " 'go away',\n", + " 'däë für dïlïr äë dätä ür hüt nö ïntö für öl ütä für ücö öl rän vü äë fï',\n", + " 'eating, to delay the time of putrefaction, no place for all creatures, in order to stay, all must wage war',\n", + " 'universe sïk',\n", + " 'universe sick',\n", + " 'äë däë dïlïr öl ütä kön dhü',\n", + " 'entropy forces all creatures to fight',\n", + " 'ü ürä ïlïs äë sän ï äë dïtï ïlï ïn sän für sörvï ün läë ïn täë gräcë dü sänshäë',\n", + " 'they created bodies and matter, flesh prison for holding back the soul on earth, thanks to gravity',\n", + " 'for making war',\n", + " 'ëï hün rän kïh dälï öl hün ü kïh ür sölü ündü kïh ündätä öl',\n", + " 'there is a force that separates all, another one that is of the same origin, who arranges everything',\n", + " 'duality',\n", + " 'ü ür ünsäë äë säë ürï dü fälüsätün sütch tä cör',\n", + " 'they make our minds confused, kingdom of ignorance, test of the heart',\n", + " 'mï vün rëvëürt üntï ä lïüm ämä mï ü köm ürsël',\n", + " 'the true revolt of the heart, disturbed and blind, love others like yourself',\n", + " 'yümä ür äë cö ür lïüm mï säë düntö kïh ürä vü äë ïlïs öl yüm ür äë cö ür lëïth',\n", + " 'beautiful humans are the children of light, sane minds who did the work, all humans are the children of light',\n", + " 'äë lïüm cündü lä ürä sätä äë sätä ütä für mï lïüm ütä',\n", + " 'light cannot have shadow, shadows exist only because light exists',\n", + " 'sö ür däë yümdä ür ündäë dörï läë ür ündäë',\n", + " 'beyond death, the human species is immortal, sacred, the soul is immortal',\n", + " 'äë vün ür ürë ï pünd tä fïrë ïn ü cör üsü ëï bäc ür ïn ü',\n", + " 'the truth is written in letters of fire in his heart, his way back is in him',\n", + " 'köm ü ür ïn löv rïündätä ü nö lä tü ü nö lä fün dü fï',\n", + " \"when he's in absolute love he cannot kill anymore, he can't participate in the war anymore\",\n", + " 'ü nö lä ücö ïn mä ëndäë sütch für läë yüm üntä',\n", + " \"he can't stay in the matter anymore, ultimate test for the human soul embodied\",\n", + " 'mï värïnsän düntö hün ä ëürt äë cöï ür ünvärïnsän für ëïs',\n", + " 'we only see well with our heart, the essential is invisible to the eye',\n", + " 'ïlüsïön vïrï dälï ï ëndäë ïlï ëlk',\n", + " 'illusory existence, separation and limitation, electronic prison',\n", + " 'hün ïlüsïön kïh brëk mï ëürt ïlüsïön cündäyä',\n", + " \"an illusion that breaks my heart, i'm tired of this illusion\",\n", + " 'pür ï ür vürtï kïh dütälün mï lïüm ïn küb ündö dü ïlüsïön',\n", + " 'why are we here ? light trapped, in a cube, accustomed to the illusion',\n", + " 'fün lïüm väïüläntä rän äë lä dü äë lä üntï ündö ündäë',\n", + " 'small dangerous lights, forced to play the game, the atom is eternally recycled',\n", + " 'ïn mï khïp lä cündürï hün üvï löv dälä cür cör lï ündärä',\n", + " 'incarnate in a synthetic reality, birth, growth, love, pain, lesson, heart, ego, experimentation',\n", + " 'küb flesh',\n", + " 'cube, flesh',\n", + " 'fün lëïth ürtï änï ä ür läïrä väïüläntä jüj cündüïlï öl äpärtäë',\n", + " 'small lights that have been abused and have become violent, forced to lock them up',\n", + " 'küb ü sän küb ëndäë ün täë',\n", + " 'cube of matter, limited cube, the earth',\n", + " 'öl ütä rü ündülï bäyë für lïvïr ïn dïtï',\n", + " 'all creatures are bound by obligation to kill in order to live in matter',\n", + " 'ïkär rün brëk ün küb ä ürtï 2 ïlüsïön monde, démon',\n", + " 'icarus wants to break the cube, with violence, double illusion, world, demon',\n", + " 'ïn mï ütä sän öl ür lä lä lä',\n", + " 'in the physical life everything is slowed down, low, primitive',\n", + " 'für äë ürä dätä dü ündülï fün dädä tü ïn äë ünpërk',\n", + " 'in order to have time to understand some things, fall in imperfection',\n", + " 'ü künstrük äë fün khïp mï hün ä cün ür sülïtïüd',\n", + " 'they make small versions of themselves, by fear of solitude',\n", + " 'für ü s children cö mï läë ï ürä cün dü jüd mö küb',\n", + " 'that they call children, my soul is chained, we are afraid to leave the cube',\n", + " 'ï vä äë ïlï sätä lä cöndüsü cündü pïx üntï',\n", + " 'we consent to the system, unconsciously, difficult atrophied reality, particle pixels',\n", + " 'ä cün dü vï äë mä öl ür ördë sörïä ür küb',\n", + " 'for fear of opposing evil, all guardians of the cube',\n", + " 'mï vü äë körüm ür rän ï ü ür ï vä',\n", + " 'we maintain the reality that is imposed on us, that we accept',\n", + " 'slave',\n", + " 'äë ündülïs lïbërtä ür ëlk',\n", + " 'imagination releases us from the electron',\n", + " 'ëï mï nä ön säë ür yümä cündü ürä äë tï dü ürä',\n", + " 'there is a state of mind that we do not have the right to have',\n", + " 'tärün fündër für ïlüsïön ïlüsïön hün ïlï mï sän vü tä läë immortal',\n", + " 'nobody knows what this illusion is, illusion, a prison of flesh holds our soul, immortal',\n", + " 'ündö läë lïündä ür täë läë lïdï üsü nëdüm',\n", + " 'the soul becomes accustomed to the illusion of physical matter, the soul forgets his identity',\n", + " 'ündärä täë lï läë ïn täë',\n", + " 'experimentation of the mud, physical life, on earth',\n", + " 'slave ïn täë lïbërätë',\n", + " 'slave of the earth, deliverance',\n", + " 'slave ïn küb lïbërätë',\n", + " 'slave of the cube, deliverance',\n", + " 'lëïth rü fü ämä ä für üntä rün ä für mä fün cün fü',\n", + " 'lights have gone crazy, fascinated by darkness, tempted by evil, smallness, stupidity, madness',\n", + " 'slave ïn dätä lïbërätë',\n", + " 'slave of time, deliverance',\n", + " 'slave ïn vï lïbërätë',\n", + " 'slave of duality, deliverance',\n", + " 'mï törï ür ü äë fürï äë dälä äë fälüsätün dälï ür fündër ïn güd',\n", + " 'the exploitation of others, hatred, suffering, ignorance, cut off from the knowledge of god',\n", + " 'lä ëndäë dälï ïlä öl ürï küntröl ä für sätä',\n", + " 'limited reality separated from the rest of creation, managed by the devil',\n", + " 'mï mä sütch dü ündï dü dälä ä ünpërk',\n", + " 'the experience of evil, of torture, of suffering and of the imperfect',\n", + " 'ürï ïlï für läë ürtï ä sätä dï därkë ïn dörï',\n", + " 'prison world for violent and dangerous souls, transformation of carbon into diamond',\n", + " 'ündï qrö sätä ün därkë ëï äë dä dü lïnï üt',\n", + " 'from the darkest evil crow, to the love tear of the tree of life, the purest',\n", + " 'ündï küb cündüïlï ïn üsü kïh cündüïlï mï dëmön mï täë ütä',\n", + " 'from the closed cube on itself, which encloses the demons, the terrestrial creatures',\n", + " 'ëï küb füch mï tï sä mï säë düntö kïh rün nö bäyë',\n", + " 'upon the open cube, the cross releasing holy spirits who don’t want to kill anymore',\n", + " 'kïh lïbërtä ürï trï ä dü mï sörvï dü klük',\n", + " 'freed from the three-dimensional world and the hold of time',\n", + " 'come into my heart',\n", + " \"i'm giving to you the key\",\n", + " 'of my dark castle',\n", + " 'enter by the big door',\n", + " 'my love believe in me',\n", + " 'my love believe in me',\n", + " 'come into my heart',\n", + " \"i'm giving to you the key\",\n", + " 'of my dark castle',\n", + " 'ünlïvïr üntï ïlï',\n", + " 'dying, lost in my darkness',\n", + " 'ö ülï ïlï ündï',\n", + " 'prisoner of my deep pain',\n", + " 'ündülï fürïsün dïrï sün täyä ündä',\n", + " 'caressing the solar matter, i implore the sun with all my might in this hell',\n", + " 'yä ündï äyä für säë',\n", + " 'tortured screams, my spirit screams with all his might',\n", + " 'ündäë ü fü äyä üdä für ür säë',\n", + " 'since a long time, your spirit roared behind your stupid mask',\n", + " 'lïbërtä mï ëürt fïrë',\n", + " 'freedom, my heart is on fire',\n", + " 'täë ïlï lün',\n", + " 'the earth manipulated by the moon',\n", + " 'säë ïlï cün',\n", + " 'the spirit manipulated by the fear',\n", + " 'tä ïlï läï läfï',\n", + " 'our conditioning separates us from the innocence',\n", + " 'mï ëürt dïsä ürï ä ürï cürï üntï',\n", + " 'my heart speaks to the cosmos and he heals my torments',\n", + " 'ündü lïvïr',\n", + " 'the source of the life',\n", + " 'üntä ïlï lün für täë lï lün',\n", + " 'hell transvestite, moon of the earth, the moon perfidious',\n", + " 'ö lïbërsäë',\n", + " 'free our spirits',\n", + " 'mï fürï mï mï dölörä',\n", + " 'my fury tore me',\n", + " 'mï läë fü ür läë lä ür säë',\n", + " 'my soul panics, that soul at the base of the spirit',\n", + " 'ö ürï fü ürï cündürï ïlï ündï ö ür säë',\n", + " 'spirit of the life, this world is crazy',\n", + " 'arcane quest into the depth of spirit',\n", + " 'für dörï sälür',\n", + " 'this is the gold heat',\n", + " 'cündü sö düntö',\n", + " 'negative becomes positive',\n", + " 'sündü sölü ründö',\n", + " 'hot after cold',\n", + " 'für dörï sälür',\n", + " 'this is the gold heat',\n", + " 'cündü sö düntö',\n", + " 'negative becomes positive',\n", + " 'für dörï sälür',\n", + " 'this is the gold heat',\n", + " 'cündü sö düntö',\n", + " 'negative becomes positive',\n", + " 'sündü sölü ründö',\n", + " 'hot after cold',\n", + " 'cündü sö düntö',\n", + " 'negative becomes positive',\n", + " 'tör ëntör',\n", + " 'union, universal law',\n", + " 'für ündülï',\n", + " 'to understand',\n", + " 'für dülï lïläë',\n", + " 'for overcome its disorders',\n", + " 'cür säë für täë',\n", + " 'learn to spirit at merge himself',\n", + " 'ündülï',\n", + " 'feel',\n", + " 'fï fï fï fï fït',\n", + " 'fï fï fït',\n", + " 'let us fight to transform himself',\n", + " 'für ündülï',\n", + " 'to understand',\n", + " 'für dülï lïläë',\n", + " 'for overcome its disorders',\n", + " 'cür säë für täë',\n", + " 'learn to spirit at merge himself',\n", + " 'ündülï',\n", + " 'feel',\n", + " 'fï fï fï fï fït',\n", + " 'fï fï fït',\n", + " 'let us fight to transform himself',\n", + " 'dro, o dêvo, tovo anextlo',\n", + " 'cue ir anextlo, nertos',\n", + " 'cue ir nertos, skyans',\n", + " 'cue ir skyans, gothvos',\n", + " 'cue is gothvos, gothvos ar vêriânjâ',\n", + " 'cue is gothvos ar vêriânjâ, y garo',\n", + " 'cue ir garo, grâto oljo bewnans',\n", + " 'cue in grâto oljo bewnans, garo dêvo:',\n", + " 'dêvo cue ollo dade',\n", + " 'günt ä äë ündä ürtï kälün ï äë mä ïn täë yüm ür köm töï',\n", + " 'affected by vice, violence, stupidity and evil, on earth, human beings are toys',\n", + " 'äë ürï ür hün ön dü fö für dälï äë ün dälï ür vün lä ä lëïth säë',\n", + " 'the world is a theater, to separate the beings, separated from true reality and the sane spirit',\n", + " 'kïh ämä äë läë ïn väïüläntä dälï hün ïlï trï',\n", + " 'who keeps violent souls out of the way, a three-dimensional prison',\n", + " 'änï ü rän künstrük ä lücï sï läë küntröl ä güd',\n", + " 'which was built by lucifer, but souls are managed by god',\n", + " 'lücï ü lucifer universe sörïä ür mä',\n", + " 'he uses your light, lucifer, guardian of the material universe',\n", + " 'human läë lïdï löv immortal löv immortal',\n", + " 'the human forgets that the soul is love, and that it cannot die, love is immortal',\n", + " 'ia can not be human, denial of reality, lie, survival at any price',\n", + " 'dëmön yüm sütch sän ür ü ütä',\n", + " 'the human demon eats the bodies of other creatures',\n", + " 'flesh',\n", + " 'sän ür für human süffër läë',\n", + " 'the body hurts the soul of the human being',\n", + " 'made of divine and gold',\n", + " 'war',\n", + " \"it's not mï problem, now\",\n", + " 'this is not my problem anymore',\n", + " 'humans like fear, fighting and dying, always dead',\n", + " \"me, i'm not afraid, i'd rather leave than continue killing\",\n", + " \"materiality, i'm not a predator, i am light and love\",\n", + " 'immortality, innocent, human illusion',\n", + " 'i am coming back home, no bestiality, no materiality',\n", + " 'we are the slave of the earth',\n", + " 'öl köm ür rün ürä körüm üsü vïrï mï rü sölü körüm üsü mör',\n", + " 'just as we seek to succeed in our life, we must also succeed in our death',\n", + " 'üsü rïädärï ïün së äë mïnd kïh ündärä äë mä',\n", + " 'our dematerialization, matrix chrysalides, consciousness that experiences evil',\n", + " 'für äë cör füch ïn äë dïtï äë yüm rän dölörä ä ündätï dä dü lör vü',\n", + " 'for that the heart opens in the matter, the human being must suffer from great repetitive love sorrows',\n", + " 'ündätï ïn örö',\n", + " 'for a long time, in the ouroboros',\n", + " 'äë ürï sän ür hün ïntö kïh äë ïün ürä sütch',\n", + " 'the physical world is a place that puts it to the test',\n", + " 'mï rän vü äë fï dü äë mä sä dhü äë fälïündïcï ï äë löv',\n", + " 'we must make war on evil, choose between fear and love',\n", + " 'dï äë därkë ïn dörï öl ön ü ür hün tör tärün dü ïlë ëï äë üvï',\n", + " 'turning carbon into diamond, each of us is a personal way to reach the goal',\n", + " 'düntö mï rün ïlë tï düntö äë tï vü lä für äë nä ür ündäë ä cündü',\n", + " 'the more we want to go high, the more slow the ascension, because the path is long and difficult',\n", + " 'ïlë ëï äë mä ür ündätï düntö rï ä düntö äë ürï sän ür hün ïntö ëï äë füch kön ü',\n", + " 'going to evil is always easier and faster, the physical universe is a place where opposites clash',\n", + " 'ëï äë läë rïüntä mï jüd rïlïn lïbërätë ü für ïlï vü äë vürï dü vïrï ündü',\n", + " 'where the soul tries to escape, to be born again, to free oneself, to find the original plan of life',\n", + " 'mï ür hün sälïn dü ländä nö ür täë',\n", + " 'i am a plant of the sky, not of the earth',\n", + " 'äë yümä rän ürä üsü tï ï vä dü körüm rü üsü pärädä',\n", + " 'the pure human must carry his cross and agree to win his heaven',\n", + " 'läë eternal äë ëï ür lïüm ür hün ëï hün hün cündü vürï vä ä äë gräcë',\n", + " 'the soul is eternal, the path of light is a lonely path, constant effort, possible through grace',\n", + " 'löv immortal ïlë ü äë dälï dü mä für ïlë äë ündätï löv',\n", + " 'love is immortal, to tear oneself away from the claws of evil, for rejoining the infinite love',\n", + " 'fün türï für düntö lä jüd ïlï jüd äë küb äë täë',\n", + " 'reduction of punishment for good behavior, to be able to leave prison, get out of the cube, the earth',\n", + " 'äë lä cündü ür täë sï säë lëïth säë lümïnärë eternal',\n", + " 'the stake is not earthly but spiritual, sane spirit, eternal light',\n", + " 'änïmäl sän dörï cör dï pürïtï',\n", + " 'animal, transform the iron of the body into gold, purification',\n", + " 'für cündü rän äë künstrük hün ürï ür täë ëndäë',\n", + " 'it is not a question of reconstituting a terrestrial kingdom, limited',\n", + " 'ür tärïn dün ürä ärsä ïn düntäë sï dü kävärïtë äë läë dü ïn vü äë ürï ür lïüm',\n", + " 'to be happy or to take pleasure in the duality, but to prepare souls to reintegrate the kingdom of light',\n", + " 'ündätï ä lümïnärë üt äë lïüm bäc dü äë lïüm äë lïüm bäc dü äë lëïth',\n", + " 'infinite and perfectly pure, the light returns to the light, the light returns to god',\n", + " 'mï üntäë ü mïmäë güd',\n", + " 'i miss you, my father',\n", + " 'dieu',\n", + " 'täë pärïön',\n", + " 'earth, forgiveness',\n", + " 'täë sörï',\n", + " 'earth, sorry',\n", + " 'äpärtäë yüm ä ürtï',\n", + " 'to be part of this violent humanity',\n", + " 'mï löv äë ü dëä mëä',\n", + " 'my love, we will trample you and you cry',\n", + " 'mëläncölïün',\n", + " 'melancholy',\n", + " 'üntäë ündï',\n", + " 'vast nothingness',\n", + " 'säë ür täë',\n", + " 'spirit of the earth',\n", + " 'ündäë ür vïtï',\n", + " 'the living is eternal',\n", + " 'löv ür ündätï',\n", + " 'i love you forever',\n", + " 'ägörth lïnï ündäë',\n", + " 'the earth and the tree of life long time agonizes',\n", + " 'äï äï',\n", + " 'sorrow sorrow',\n", + " 'ün sän für färündï',\n", + " 'the blood spreads',\n", + " 'ünpäïön vüntï ön',\n", + " 'despair unsustainable',\n", + " 'täë täë lï ärtï',\n", + " 'earth, earth, our stupidity',\n", + " 'cändölëï ëï ëndäë',\n", + " 'leads to the end',\n", + " 'fälïndär säë',\n", + " 'luciferian entities',\n", + " 'tärïn sëä pärädä ïn dïtï',\n", + " 'a calm sea. paradise of matter',\n", + " 'rïündä',\n", + " 'violent rage',\n", + " 'rïündäë',\n", + " 'end of eternity',\n", + " 'rï',\n", + " 'peace',\n", + " 'düntäë',\n", + " 'duality',\n", + " 'üntäï ülï',\n", + " 'notched deeply',\n", + " 'mï säë',\n", + " 'our spirit',\n", + " 'üntäï ülï',\n", + " 'notched deeply',\n", + " 'ï crï für ü',\n", + " 'i cry for us',\n", + " 'üntäï ülï',\n", + " 'notched deeply',\n", + " 'ï crï täë',\n", + " 'i cri, earth',\n", + " 'üntäï ülï',\n", + " 'notched deeply',\n", + " 'üntä ï üntäë',\n", + " 'fall into nothingness',\n", + " 'üntäë ü ündätï',\n", + " 'nothingness and eternal matter',\n", + " 'üntä ürï ü täë',\n", + " 'demonic univers, earth of matter',\n", + " 'üntäë ü ündätï',\n", + " 'nothingness and eternal matter',\n", + " 'ücö ü vïrï',\n", + " 'life in the matter',\n", + " 'üntï',\n", + " 'into the abyss',\n", + " 'ür sörïä ön sïläncïä',\n", + " 'your soldier of silence',\n", + " 'kön vïtï',\n", + " 'i will fight all my life',\n", + " 'ö täë',\n", + " 'earth',\n", + " 'täë ündï',\n", + " 'the earth suffers',\n", + " 'ö lïnï üntï',\n", + " 'tree of life inside',\n", + " 'dïlïvrïün täë ündï',\n", + " 'i want to rescue the earth of suffering',\n", + " 'ö üntï ö rïvï ündï',\n", + " 'into the abyss my revolt burning me',\n", + " 'ündï rïvï ä rïvï üntï',\n", + " 'huge revolt, revolt in the depths of darkness',\n", + " 'öbï rïvï së üntï',\n", + " 'be guided by the matrix, in the depths',\n", + " 'öbï rïvï bïcë üntï',\n", + " 'be guided by the wind, in the depths',\n", + " 'köndïsë bïcë ündï',\n", + " 'feel the burning wind',\n", + " 'yüm tü mï täë',\n", + " 'mindkind kills the earth',\n", + " 'äï ü lëïsä üntö',\n", + " 'sorrow, we are all star dust',\n", + " 'äï ü lëïvï ündä',\n", + " 'sorrow, we are the celestial energy that dies',\n", + " 'ündätä',\n", + " 'repair',\n", + " 'yüm',\n", + " 'man',\n", + " 'ündätä',\n", + " 'correct',\n", + " 'yümä',\n", + " 'beautiful humanity',\n", + " 'sävür täë',\n", + " 'take care of the earth',\n", + " 'ündö äë üntä lïvïr ündö äë üntï dïtï ündö äë öl täë sän ö',\n", + " 'cycle of incarnations, recycling the atoms of matter, recycling of all earthly bodies, everywhere',\n", + " 'tëk für khïp mï küntröl mï sän ütä dïlï ïün ïn äë sän',\n", + " 'technology to duplicate the carnal interfaces, fallen creatures placed in bodies',\n", + " '9c639 äë',\n", + " 'several 9c639',\n", + " 'dhü xöx füch kïh ürä düntö cündü xüm yüm dälï ür läë',\n", + " 'two opposite sexes that attract each other, positive, negative, female, male, separation of souls',\n", + " 'dälï ür sän',\n", + " 'separation in the flesh',\n", + " 'tör löv künstrük mï hün fün sän küntröl für lïvïr ücö mï ïlï trï dïmëntä',\n", + " 'union, procreation, fabrication of a descendant, body, interface to live in the three-dimensional world',\n", + " '9c639 äë',\n", + " 'several 9c639',\n", + " 'ü ündï ür hün üntäë ïn sä ür värïnsän äë lä cöndüsü',\n", + " 'our senses are a hole in which we see reality atrophied',\n", + " 'küntröl ündä ür äë yüm s sän',\n", + " 'holographic interface that the human calls body',\n", + " 'köm ü hün mï nämïdä äë ür dïvïr ïn für fö für fü äë vïrï ür hün cür ürä öl äë tï',\n", + " 'when we are born we cry that we are come to this great stage of fools, existence is a school at all levels',\n", + " 'öl äë cür rän ür cür ür lä mï vü mä ëndäë für vü nö jüd dü für mï lä vä',\n", + " 'all lessons must be learned, we can hurt ourselves just right, never beyond what we can tolerate',\n", + " 'öl rän dä öl ür ündö ün üfö ün ütä',\n", + " 'everything must end, everything is recycled, the objects, living things',\n", + " 'ïn äë sän tündü dü äë läïrä dörï',\n", + " 'in organisms assigned to several different scenarios',\n", + " 'ïn mï dätä für örö vü üsü ündö yüm ündätï hün fündülï üld däë',\n", + " 'in time, for that the ouroboros continues its recycling, the human is perpetuated alone, youth, aging, death',\n", + " 'für güd ürä ündï ïün ür däë ïn dïtï für s ün läë dïvïr dü für ïlï ïn üntï',\n", + " 'light inserted death into matter, in order to question the souls coming from this atom prison',\n", + " 'für fündër ëï ël ür sï ël lä ïn vü äë vün ürï dü mï jüd mï küb',\n", + " 'to know what they think, if they can reintegrate the real world, outside the cube',\n", + " 'ïn äë ürï ür lïüm üt',\n", + " 'in the realm of pure light',\n", + " 'äë läë tör ä sän ä ël dälï ü sölü däë sän ä üsü tör ä äë dïtï',\n", + " 'the soul unites with the body and it detaches itself at physical death, by her cohabitation with matter',\n", + " 'ël ü vü däë',\n", + " 'she becomes dirty',\n", + " 'sï ël körüm ücö sütch äï sän ü bäc dü dör ïn ëdën köm ür mï tshë',\n", + " 'but she gains in experience, sorrow, body, we go back to the gates of heaven while we sleep',\n", + " 'köm mï dïspärät mï üsü für dädä mï sän',\n", + " 'when we leave our ego, to feed the body',\n", + " 'öl ütä cündü dïvïr ïn ëlk für sölü ündü für mï sölü üdä',\n", + " 'each creature does not arrive in the electron for the same reasons, for the same sins',\n", + " 'ä mï dätä öl ün sündätï ü ïntö ü sä ü sä äë därkë dün für lïüm',\n", + " 'by our daily actions we position ourselves, choice, we choose darkness or light',\n", + " 'äë däë dün äë cündö rïündä dün löv äë cündüïlï dün äë lïbërtä',\n", + " 'murder or protection, hate or love, confinement or release',\n", + " 'mï ëntör ür vä ür ündätï värïnsän',\n", + " 'the law of consent is always respected',\n", + " 'yüm hüp dïvïr from the sky cö dü hün galaxia ïcë dälï ür vün',\n", + " 'man thinks to come from the sky, belong to a galaxy, stuck up, separated from the truth',\n", + " 'ïcë ï 9c639',\n", + " 'stuck in 9c639',\n", + " 'galaxia in the sky',\n", + " 'cündüïlï universe fäzër ïkär',\n", + " 'prison universe, patriarchal, icarus',\n", + " 'mï ür äë sörïä dïvïr für cür ür ëndäë mï läë ëlö ür sörvï ür dïtï',\n", + " 'we are agents coming to learn from the limitation, souls think to be prisoners of matter',\n", + " 'sï ël ür cö ürä sütch ütä sölü ütä ün säë äë ïlï mï ëndäë mï löv mï für ürï',\n", + " 'but they are connected to an experiment, life after life the spirits discover the limit of love of this world',\n", + " 'ür ïlï nö ütä täë ündä lä lïvïr ïn dïtï ün däë mï cür ür cür',\n", + " 'of the cage, no terrestrial creatures can live in matter without killing, the lesson is learned',\n", + " 'hün bäc dü mï tï ür ëlö ïn mï vün ürï mï rän ür düntö',\n", + " 'a return to the surface can be envisaged, in the true universe, the dictatorship of absolute good',\n", + " 'come with us',\n", + " 'come with us',\n", + " 'we just wanna feel young, oh',\n", + " 'we just wanna feel young',\n", + " 'we just wanna feel young, oh',\n", + " 'oh, woah, woah, woah',\n", + " 'oh, woah, woah, woah',\n", + " 'oh, woah, woah, woah',\n", + " 'we just wanna feel young',\n", + " 'cöïündï',\n", + " 'speak',\n", + " 'üntä ïrïtï für tündülï ündï',\n", + " \"the darkness irritates me, it's weakens me deeply\",\n", + " 'ö lïnï cüntä ürï ü täë ö ürï',\n", + " 'tree of life, we neglect the univers and the earth, spirit of life',\n", + " 'ündü ürï für ürï cündärä ürï',\n", + " 'origin of the univers, that our world has abandoned, spirit of life',\n", + " 'ö lïnï',\n", + " 'tree of life',\n", + " 'ö mï ëürt üntäï ülï',\n", + " 'my heart is deeply notched',\n", + " 'mï tür lïnï lïr für düntä ürï',\n", + " 'my tender tree of life, i feeling the bestiality of this world',\n", + " 'ündäë',\n", + " 'exhausted',\n", + " 'für ür äyä säë',\n", + " 'this is the sobs of spirit',\n", + " 'fündä täë cö ürï löv ür',\n", + " 'amazing star, child of the cosmos, i love you',\n", + " 'ö tündürï däë fürï tündürï',\n", + " 'storm, my anger killing you, storm',\n", + " 'täïlï fürï cö ütï',\n", + " 'asphyxiated, my anger hurts you',\n", + " 'ündï fürüs üntä ü ündätï',\n", + " 'pass, present, always hell',\n", + " 'für tündürü',\n", + " 'the house is darker',\n", + " 'üntï',\n", + " 'the abyss',\n", + " 'ö fürï cün dürï düläë fürï ïn täë',\n", + " 'anger, stupidity, conditioning, obstinacy, fury on the earth',\n", + " 'cündütün dürï düläë fürï mï ëürt',\n", + " 'atrophy, conditioning, obstinacy, fury in my heart',\n", + " 'südürü dürï düläë ëdën ländäë',\n", + " 'bruising, conditioning, obstinacy, paradise, paradise lost',\n", + " 'mï rëvëürt cündï düläë mï säïr',\n", + " 'the revolt of my heart treats my sick soul, i bleed',\n", + " 'fündürü fürï sï cündürï cündürï dürï',\n", + " 'the anger misplace me, here, help, winter paralyzes me',\n", + " 'für ü sün rï ü lün cündürü fün dürï dü sün',\n", + " 'for our suns, console the moon, the fragile mental barriers, suns of ice',\n", + " 'türü fürütü cündürü säë dä rïädärï',\n", + " 'charm the folly, mental barrier, tears of the spirit, disintegration',\n", + " 'cüntü rädätï fündürü säë rïlïn',\n", + " 'invincible passion, detachment, rebirth of the spirit',\n", + " 'lï tärün dülïdü säë',\n", + " 'lie on our nature, our spirits are explosive',\n", + " 'lälälälälälälälä rëvëürt !',\n", + " 'now, revolt of the heart !',\n", + " 'färün dülïdü säë',\n", + " 'jailed, our spirits are explosive',\n", + " 'tärä dürün tä für',\n", + " 'our house is cold, the calcined earth',\n", + " 'ündülï lä ü rü cündülï lä ü sï',\n", + " 'here, henceforth we must admit our absurdity',\n", + " 'mï mïlï ländä fïrë',\n", + " 'my strange paradise of fire',\n", + " 'rïüntä ïlï cündï',\n", + " 'in this prison, i try to treat me',\n", + " 'ündülï ü fündülï',\n", + " 'relearn to be innocent',\n", + " 'cündülï ü fïrë ländä',\n", + " 'the stupidity burns the paradise',\n", + " 'ütä ïlï lün ü säë dï lün dï lä',\n", + " 'the creatures of the moon hide in our minds, the transformation of the moon, transforme now',\n", + " 'ï üvï',\n", + " 'our goal',\n", + " 'ïn täë lïbërtä',\n", + " 'free themselves from the cult of the earth',\n", + " 'ündülï dü fïrë',\n", + " 'force of fire',\n", + " 'äï üvï ütï',\n", + " 'purpose of this painful struggle',\n", + " 'cündülï ländä ürï',\n", + " 'planet where stupidity is in paradise',\n", + " 'mï dïlï ä ürï',\n", + " \"i'm disconnected from this world\",\n", + " 'ündürü dï läë',\n", + " 'the soul can easily unlearn',\n", + " 'ündürü sï ürï',\n", + " 'the nature is early accessible',\n", + " 'cündürü ländä ürï',\n", + " 'mental barriers, confidence in the spirit of life',\n", + " 'cündürü sä ürï',\n", + " 'breaking the mental barriers of this world',\n", + " 'lïbërtä',\n", + " 'freedom',\n", + " 'ü tündü rï ür säë',\n", + " 'connected, we empty our minds',\n", + " 'täë nöc säë',\n", + " 'the spirit of earth is dark',\n", + " 'rëvëürt',\n", + " 'revolt of the hearts',\n", + " 'mï mïnd ï rï fündä rï ündätï',\n", + " 'my conscience recovering slowly in this big empty',\n", + " 'ündä ïlï fündä ïlï',\n", + " 'this unlivable prison, a gold prison',\n", + " 'cütä ülï füdä ïlï ündülï',\n", + " 'privacy, care inside, break this prison',\n", + " 'mï mïnd ündürï',\n", + " 'our consciences are ancestral',\n", + " 'ündü ïlï fü ür tür sätä ülï vün tü ïlï sülï',\n", + " \"the origine of your dementia has condemned you, diabolic drama, the deep truth, it's there are a light under your malevolence\",\n", + " 'ündülï dïrïün dïlï üntï vürï',\n", + " 'fallen rebel condemned, disturbing truth',\n", + " 'ündülï dï tün dï të vürtï sülï',\n", + " 'condemned, savagery abolished, without negative energies, i glimpsing the brighter darkness',\n", + " 'vï cö ülï üvï ündülï ünfü vïtï',\n", + " 'cursed paradox, the goal is to relearn to defend life',\n", + " 'ündülï ü fürï ïlï cöndüsü ü vïrï',\n", + " 'condemned, our prisons of hate atrophies our lives',\n", + " 'däë ï ülï vöï örï ülï',\n", + " 'in the repugante bowels, horrible voice of depths',\n", + " 'cöïündï forever',\n", + " 'eternal vociferation',\n", + " 'ä ï tärvï ür ïn lïbërtä',\n", + " 'i return you in liberty',\n", + " 'mï täë läë mör ï rëgrët',\n", + " 'the souls in the earth dies, i regret',\n", + " 'ünfürï sändülï dï sündätï mï lïbërtä',\n", + " 'redemption, deliverance, transformation, perpetual day, my liberty',\n", + " 'mï fündätï ländä ö ï üvï',\n", + " 'my country is the innocence , i grow',\n", + " 'güd ï ündä sündätï',\n", + " 'infernal matrix, perpetual days',\n", + " 'mï dï lün lï',\n", + " 'i forgive at the moon for his lies',\n", + " 'ündë',\n", + " 'pardon',\n", + " 'üntä füntäë',\n", + " 'annoying peaceful planet',\n", + " 'mï vöï',\n", + " 'i cursed',\n", + " 'ündülïä dïlïsï ündülï mï lïbërtäë',\n", + " 'delicious dance of the invention, the liberty',\n", + " 'cö rï ürï fö ürï ä ürï',\n", + " 'dry world, hypocritical world',\n", + " 'lä ürï sï ündärä',\n", + " 'here, civilization and univers, test',\n", + " 'ländä cüntï',\n", + " 'beautiful illogical world',\n", + " 'sülï',\n", + " 'the brighter darkness',\n", + " 'ürtä füntäë',\n", + " 'impossible peaceful planet',\n", + " 'mï lïbërtä',\n", + " 'our freedom',\n", + " 'mï fürï dïlï ïlï ü sï',\n", + " 'our anger disconnects us, condemns us, imprisons us',\n", + " 'tövï ütä üvï mï lïvïr ündï',\n", + " 'intelligent creatures, which grow, burns reincarnated',\n", + " 'fündä rïlïn',\n", + " 'repulsive reincarnation',\n", + " 'cündö rï ün së',\n", + " 'lost between the empty and matter',\n", + " 'lï fürï üntä',\n", + " 'perfidious fury of hells',\n", + " 'lör sö ürï',\n", + " 'love is the future of our nature',\n", + " 'üntä vïrï sänshäë',\n", + " 'infernal material existence',\n", + " 'mï mïnd ï üdï',\n", + " 'my conscience is chained',\n", + " 'mï ëürt säïr ündätï',\n", + " 'my heart bleeds since a long time',\n", + " 'mï sülïtïüd',\n", + " 'my solitude',\n", + " 'sülï',\n", + " 'the brighter darkness',\n", + " 'ütä üvï ölï',\n", + " 'all creatures awaken one day',\n", + " 'üntä ïlï',\n", + " 'far from hell',\n", + " 'mï üvï cündülï',\n", + " 'my goal was stupid',\n", + " 'üntä ïlï',\n", + " 'far from hell',\n", + " 'mï üvï cö ündï',\n", + " 'my goal linked to depths',\n", + " 'löv ür',\n", + " 'love you',\n", + " 'nö ïlï cö üvï',\n", + " 'no more day in jail',\n", + " 'ündäë vïrï...',\n", + " 'life is immortal...',\n", + " 'ôô dêwëh sündë',\n", + " 'döwerï dö ïosz',\n", + " 'döwerï sündë...',\n", + " 'ôô dêwëh sündë',\n", + " 'döwerï dö ïosz...',\n", + " 'üüü, üüü',\n", + " 'üüü, üüü',\n", + " 'üüü, üüü',\n", + " 'ô, ô',\n", + " 'ô, ô',\n", + " 'ô, ô, ô, ô, ô, ô',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'ô kobaïa',\n", + " 'üü wëlöh wëhssï wëhlï wëh loï',\n", + " 'üü wïlëh wï sëh wïlëh wï ru su',\n", + " 'üü wëhlï wëhssï waläh stöhôtt',\n", + " 'üü wëhlï wëhssï waläh waläh rïndi!',\n", + " 'dëh rïn!',\n", + " 'üü wïlëh wëhssï wëhlï wï loï',\n", + " 'üü wilah wëhssï wëhlë wï woï',\n", + " 'üü wïlah wëhssï waläh ru su',\n", + " 'üü wïlah wëläh waläh rëhndï!',\n", + " 'dëh rïn!',\n", + " 'üü wëhssï wëhlï wëhlï wëh loï',\n", + " 'üü wëhlï wëhssï wëhlï rïndi',\n", + " 'rïndï dëh mäh waläh waläh stöhôtt',\n", + " 'rïndï dëh mäh waläh waläh waläh rïndi!',\n", + " 'dëh rïn',\n", + " 'dëh stöhôtt',\n", + " 'dëh wurd',\n", + " 'dëh zaïn',\n", + " 'dëh stôhtt',\n", + " 'stöhtt',\n", + " 'glaö',\n", + " 'love love love love',\n", + " 'love, love, love, love',\n", + " 'cündü ür ï für dü ürï düntä üsü',\n", + " 'i am not of this abject and selfish world',\n", + " 'für lï sün tshë ün körüm',\n", + " 'this is a false sun, this is a real nightmare',\n", + " 'cöï lï vün sütch ïn',\n", + " 'forced to swallow this truth',\n", + " 'däë vü lï säë',\n", + " 'hyprocrisy kills the spirit',\n", + " 'pür mï rän vïrï ïlï',\n", + " 'why do i live here ?',\n", + " 'sölïtïüd',\n", + " 'solitude',\n", + " 'sörï sörï sörï lïnï',\n", + " 'sorry, sorry, sorry tree of life',\n", + " 'lïnï ëlp ür',\n", + " 'tree of life, help us (she cries)',\n", + " 'lïnï plëz',\n", + " 'tree of life, please',\n", + " 'däë ïlï cündürï cün ï tchüc',\n", + " 'sentenced to ugliness, paralyzed, stunned by the stupidity',\n", + " 'äë ütä ön für ürï üntö dëmön',\n", + " 'the living beings of this world are all demons',\n", + " 'ländä üntä für sütch ü ï vü mä ïlï',\n", + " 'fallen from heaven, condemned to experience the evil in the material',\n", + " 'mï mör mï färün hün mä',\n", + " 'death, reincarnation, a curse',\n", + " 'sülï löv lä lïbërsäë',\n", + " 'only love can free our spirits',\n", + " 'dä',\n", + " 'tears',\n", + " 'dä ï lün',\n", + " 'the tears in the moon (the tears of demons of the moon)',\n", + " 'ürä ïlä fïrë ïn mï ï lä fïrë ürï',\n", + " 'i have so much of fire in me that i could burn the world',\n", + " 'sï ürä ïlä löv ïn mï',\n", + " 'i also have so much love in me',\n", + " 'ï löv ür',\n", + " 'everyone loves',\n", + " 'sï ürä ïlä löv ïn mï',\n", + " 'i also have so much love in me',\n", + " 'ülï ëï',\n", + " 'at the depth of my entrails',\n", + " 'ï ündï dü värïnsän tälürïn ütä cöï dü sütch für vïrï',\n", + " 'i suffer seeing all these creatures forced to eat in order to survive',\n", + " 's dü ëï dïvïr ün mä',\n", + " 'where does evil come from ?',\n", + " 's lïüm ürä ïlïs öl für cündü ür für yüm ürä sä',\n", + " 'did god create everything else so that we have the choice ?',\n", + " 'mï tshë dü füch ï dü ündätï',\n", + " 'i dream of greatness and infinity',\n", + " 'üntäï ï üdï ï ürï ördë fün',\n", + " 'lacerated by the chains of one world too narrow',\n", + " 'dä',\n", + " 'tears',\n", + " 'ï rün däë für ündä üdä',\n", + " 'i want to destroy this masked hell',\n", + " 'mä dä',\n", + " 'the tears of evil',\n", + " 'ütä ür tälürïn mï fü',\n", + " 'we are all demons from one another',\n", + " 'mï vürï lïüm ür ïn üntä',\n", + " 'the true light is in the darkness',\n", + " 'vü füch mï dölörä ï cündï mï cöndüsü',\n", + " 'to deal with our suffering and to drill our abscess',\n", + " 'cütä dä',\n", + " 'heal with the tears',\n", + " 'we are the flesh, the cells decaying and light',\n", + " 'we are the life, enchained, the life in the hearts',\n", + " 'we are the universe, immortal, the sun inside',\n", + " 'we are co-creators of all, the fallen angels',\n", + " 'love',\n", + " 'ï hün ürï ïn sän',\n", + " 'in one material world',\n", + " 'äë cö güd düntä',\n", + " 'the arrogant gods children',\n", + " 'ündülï für ündï ä ü',\n", + " 'condemned to suffer with him',\n", + " 'mï lïüm dïlï lïvïr ï mï sän mï së',\n", + " 'the fallen angels incarnated in the flesh, the material',\n", + " 'mï sän ï mï së',\n", + " 'the flesh and material',\n", + " 'trï äë läë',\n", + " 'trees, souls',\n", + " 'frï äë säë',\n", + " 'fruits, spirits',\n", + " 'sütch tä säë ïn hün ündätï dïmëntä',\n", + " 'experimentation of spirits into a dimensional infinity',\n", + " 'dä ï lün',\n", + " 'the tears in the moon',\n", + " 's mä ür rän ünküntröl ï ïrïtï äë güd',\n", + " 'is it that evil has become uncontrollable and has contaminated its creators ?',\n", + " 'tälürïn äë dëmön mëä ündï ëürt',\n", + " 'all the demons crying from the bottom of their hearts',\n", + " 'ï rëgrët tälürïn',\n", + " 'we all regret',\n", + " 'ür tälürïn äë dëmön dü für ürï',\n", + " 'we are all the demons of this world',\n", + " 'dä ütä ïlï sän',\n", + " 'all the creatures of this universe are crying the tears of blood',\n", + " 'nö ländä pärädä',\n", + " 'no beautiful paradise',\n", + " 'dä ï lün',\n", + " 'the tears in the moon',\n", + " 'mï ländä',\n", + " 'my paradise',\n", + " 'dä ï lün',\n", + " 'the tears in the moon',\n", + " 'dëmön tä vï cün ön',\n", + " 'demons are afraid of themselves',\n", + " 'dïvïr ëï löv',\n", + " 'return to love',\n", + " 'ëï löv',\n", + " 'to love',\n", + " 'sä äë üdï dü mä',\n", + " \"let's break the chains of evil\",\n", + " 'ï dïvïr ëï löv',\n", + " 'and return to love',\n", + " 'ï dïvïr ëï löv',\n", + " 'and return to love',\n", + " 'für sülï cüntü',\n", + " 'this is the only solution',\n", + " 'für sülï cüntü',\n", + " 'this is the only solution',\n", + " 'lä üvï lä für sä',\n", + " 'we can choose this goal',\n", + " 'mä ün ïlï',\n", + " 'evil is here beneath',\n", + " 'für üntï tündürï ïlün löv',\n", + " 'powerful love storm against this hell',\n", + " 'mï mïnd ündï vü ülï lücï',\n", + " 'our consciences burn, kept in the bowels of lucifer',\n", + " 'ï dïë ülï mï dëmön cündülï mï vöï',\n", + " 'i die, the voice of my selfish demon',\n", + " 'ündï vöï cün ülï ündü sü ü vün tchï',\n", + " 'i burn and cursed my stupidity, desperate struggle in the matter, for the truth',\n", + " 'mï dïlï vöï cündülï vün säë',\n", + " 'cursed, fallen in this winter, intuitive search for the truth',\n", + " 'käë fïrë ïn täë',\n", + " 'chaos, of light in clay',\n", + " 'mï ür lï ëï vöï säë ür lï',\n", + " 'the voice of my being lies to my mind',\n", + " 'güd lï yüm dëmön',\n", + " 'creator of lies, man is a demon',\n", + " 'ä ür',\n", + " 'united to you',\n", + " 'sörï',\n", + " 'sorry',\n", + " 'güd ëlp mï',\n", + " 'true god help us',\n", + " 'güd',\n", + " 'god',\n", + " 'dïvïr ïn dü ürï ëï mï lëï ür däë',\n", + " 'welcome to a world where energy is exploited',\n", + " 'ï ürä',\n", + " 'and drawn out',\n", + " 'mï lïüm fï mï lïüm',\n", + " 'the light fights the light',\n", + " 'tï jül ïn für sän lä',\n", + " 'her form in this matter',\n", + " 'ün tïüdï dü vïrï ün däë',\n", + " 'forbidden to live without devouring',\n", + " 'dïrïün cösä mï kïrän ä ün lör',\n", + " 'rebellion against protection and love',\n", + " 'löv',\n", + " 'love',\n", + " 'für vïrï ïn mï sän',\n", + " 'in order to survive in matter',\n", + " 'ür ëndäë mï ütä',\n", + " 'we end our lives',\n", + " 'ümtï dü lümïnärë',\n", + " 'devoid of light',\n", + " 'ümtï dü lëïth ür vïrï',\n", + " 'bereft of the fire of life',\n", + " 'hün fïnx üntäï cündäyä üld däë ündï hüt',\n", + " 'a phoenix wrinkled, tired, old, ugly, burned, putrefying',\n", + " 'für vü läïrä dïspärät ï mï würm',\n", + " 'who will be carried away by the worms',\n", + " 'ï mï vä',\n", + " 'we accept',\n", + " 'für yüm ün nöt',\n", + " \"for man, it's normal\",\n", + " 'ündülï',\n", + " 'condemned',\n", + " 'rïlïn südjütï',\n", + " 'infernal reincarnation',\n", + " 'für ündülï',\n", + " 'this condemning',\n", + " 'ündö ïlä sän',\n", + " ...]},\n", + " 'data': ['köm mï dïvïr ü ümtï äë mïnd läbïrätë täë läbörätörï täë ämä jüd ämä rän',\n", + " 'when we arrive, the memory is erased, earth labyrinth, earth laboratory, kept away, kept busy',\n", + " 'lä ëndäë änï ön ël üsü örö ündö änï ürï klük ï ländä ïlï',\n", + " 'limited reality buckled on itself, ouroboros, recycling, spatio-temporal loop, in a heavenly prison',\n", + " 'ï ländä ïlüsïön ï ländä lï äë ïlï ür ïn mï ëürt ï ländä ïlï',\n", + " 'in a paradise of illusion, in a paradise of lies, the prison is in my heart, in a heavenly prison',\n", + " 'ï ländä ïlüsïön ï ländä lï läbïrätë dü ïlüsïön',\n", + " 'in an illusion paradise, in a paradise of lies, labyrinth of illusion',\n", + " 'döld äë täë döld ür tï ür säë',\n", + " 'disclosure of the dimension of the holographic labyrinth, the earth, old doll, the avatar of something higher',\n", + " 'cündü lï üntï mï läë mï pärädä is dead köz ür dïmëntä',\n", + " 'matter clouded the soul and diminishes it, my paradise is dead, because of your dimension',\n", + " 'ï fük ür world üsü ïlüsïön läbïrätë ï brëk ür wall',\n", + " 'i curse your world and its illusions, i break the wall of this labyrinth',\n", + " \"the prison ür ïn mï head ï don't want ür paradigms\",\n", + " \"the prison is in my head, i don't want your paradigms\",\n", + " 'ï fük the flesh ä ür programs läbïrätë ï destroy ü läbïrätë läbörätörï',\n", + " 'i reject the flesh and your programs, labyrinth, i destroy you, labyrinth, laboratory',\n", + " 'läbïrätë ïlüsïön läbörätörï sütch döld',\n", + " 'labyrinth of illusion, experimental laboratory, old doll',\n", + " 'dïsklüz ölögrä läbïrätë dïmëntä',\n", + " 'disclosure of the dimension of the holographic labyrinth',\n", + " 'äë yüm lä änï öl üsü vïrï köm hün sän hün döl kïh dïvïr düntö ïn düntö üld',\n", + " 'the human could spend all of his life like an automaton, a puppet that becomes more and more old',\n", + " 'kïh ündö vü ä vü',\n", + " 'who recycles itself again and again',\n", + " 's ü mï dün s äë nätä ïn ü lä',\n", + " 'have you ever questioned the nature of your reality ?',\n", + " 'läbïrätë für äë mïnd yüm läbïrätë läbörätörï ündä dïmëntä',\n", + " 'labyrinth for human consciousness, labyrinth, laboratory, holographic dimension',\n", + " 'äë läë äë lïvïr üsü ïn sän äë ïn äë ündä',\n", + " 'pure lights are embodied in bodies, in the hologram',\n", + " 'äë hün üvï äë cö cündütün ï dïlïsï ür vü mï ïn äë së',\n", + " 'one of the goals of family and friendships is to keep us in the matrix',\n", + " 'für mï tïüdï dü ür üsü mï tïüdï ëlö ä üsü',\n", + " 'to prevent ourselves from being ourselves, to prevent us from thinking for ourselves',\n", + " 'mï ürä cün dü värïnsän dü ü ä dü üsü jüj läïlä küntröl',\n", + " \"we are afraid of the other's gaze, and of his judgment, controlled from the hyperworld\",\n", + " 'läbïrätë für sän ïlüsïön äë lä ür äë ëürt ïn äë yüm ündärä äë tï',\n", + " 'labyrinth for body, illusion, the heart of the human is at stake, experimentation on several levels',\n", + " 'für mï ündärä ür hün dhü dü këns fün äë lëïth värïnsän ëndäë',\n", + " 'what we are experiencing is a tiny frequency range, visible light, limited',\n", + " 'läbörätörï ündätï kïh vü äë sütch äë hün mör ä rïlïn',\n", + " 'giant lab where we pass tests, experience birth, death and rebirth',\n", + " 'mï ür äë ündä äë säë ëlk ön mï läë tä lëïth äë sän ür äë ündülïä dü läë',\n", + " 'we are holograms, electronic avatars of our soul of light, the body is the vehicle of the soul',\n", + " 'ël läë fündër pür mï ïlï ï rün äë vün mï ür düntö ï düntö väïüläntä',\n", + " 'she knows why we are here, in seeking the truth we are more and more humiliated',\n", + " 'läbïrätë fük ü fük war fük evil fük this mä universe',\n", + " 'labyrinth i curse you, war, you repulse me, evil, i reject you, i curse this universe of matter',\n", + " 'hi old human ï ür sörïä dü fälïsï lïüm vün lä begin here now',\n", + " \"hello old man, i'm the guardian of the false light, the real reality starts here, now\",\n", + " 'without evil without pain',\n", + " 'eternal life eternal löv',\n", + " 'eternal life, eternal love',\n", + " 'slave of the earth',\n", + " 'sisters neufciels',\n", + " 'sisters of the nine skies',\n", + " 'für time to bäc ïn light für time to bäc ïn tree of life',\n", + " \"it's time to get into the light again, it's time to enter the tree of life again\",\n", + " 'mï ür everything mï ür öl säë äë ütä',\n", + " 'we are everything, we are all spiritual creators',\n", + " 'mï ür öl ütä dü lümïnärë mï ür öl ütä dü löv',\n", + " 'we are all creatures of light, we are all creatures of love',\n", + " 'páter i̱mó̱n toís ouranoís, (our father in heaven)',\n", + " 'elthéto̱ i̱ vasileía sou (your kingdom come)',\n", + " 'o̱s en ouranó̱ kaí epí tí̱s gí̱s (x2) (on earth as it is in heaven)',\n", + " 'kaí áfes i̱mín tá ofelí̱mata i̱mó̱n, (and forgive our sins)',\n", + " 'o̱s kaí i̱meís afíemen toís ofeilétais i̱mó̱n (as we forgive our debtors)',\n", + " 'kanaan, kanaan, kanaan, uhh',\n", + " 'dien düwel is min hilig spook',\n", + " 'die naome for em de öwerei',\n", + " 'met enem kiker inhöd he us',\n", + " 'he is usse allvader',\n", + " 'sien suon swingt sienen groten sliäger',\n", + " 'schenkt kamp und feel de liäewemsläasse',\n", + " 'de klafunnig in us dat is sien riek',\n", + " 'dien afgunst usse liekenfier',\n", + " 'met saxnoths swiärt an wodens rawen',\n", + " 'kuemt de daag de kiäar',\n", + " 'de frihait for usse glaiwen',\n", + " 'ap usse toohuuswäg to us siälwst',\n", + " 'saxnoth das is usser guod',\n", + " 'de wiägerune fört us tom krieg',\n", + " 'dien swinestiäale met küüs nut steen',\n", + " 'dien kiäarken wäern briänen',\n", + " 'de ümswüng tiegen sklaoverie',\n", + " 'losriten von de kieden',\n", + " 'knieweln fasttüen usse siäle',\n", + " 'min liäewedag nich mäer',\n", + " 'met saxnoths swiärt an wodens rawen',\n", + " 'kuemt de daag de kiäar',\n", + " 'de frihait for usse glaiwen',\n", + " 'ap usse toohuuswäg to us siälwst',\n", + " 'dün dï ün fïrë lïnï ü für sätä',\n", + " 'so, without all the valorous fire, all belongs to the shadows',\n", + " 'dün dï ün fïrë lïnï ü für sätä',\n", + " 'so, without all the valorous fire, all belongs to the shadows',\n", + " 'dün dï ün fïrë sätä ründä',\n", + " 'so, without the valorous fire, the shadows progress',\n", + " 'mï üntäï wük mï säë',\n", + " 'spirit full of scars',\n", + " 'mï üntäï wük mï ëürt',\n", + " 'heart full of scars',\n", + " 'nö',\n", + " 'no',\n", + " 'ïlï fü ütä',\n", + " 'here, the creatures are crazy',\n", + " 'nö',\n", + " 'no',\n", + " 'üntä ïlï ländä tä',\n", + " 'here, our beautiful hell',\n", + " 'ütä',\n", + " 'crawl',\n", + " 'ündä ï ü vï',\n", + " 'unlivable and everything is paradoxical',\n", + " 'günt yümä yä täyä',\n", + " 'crucified, beautiful humanity screams with all its might',\n", + " 'dä dëä ï tchï',\n", + " 'the tears are falling and we are desperate',\n", + " 's tï ländäë',\n", + " 'is the paradise that we have lost up there?',\n", + " 's tï lï',\n", + " 'may we overcome ego?',\n", + " 's tün rï',\n", + " 'we have summoned brutality and emptiness',\n", + " 'dürï däë',\n", + " 'a deadly winter',\n", + " 'dä dëä ï tchï',\n", + " 'the tears are falling and we are desperate',\n", + " 'ündätï lïnï',\n", + " 'eternal tree of life',\n", + " 'äbÿm',\n", + " 'damaged',\n", + " 'äbÿm',\n", + " 'damaged',\n", + " 'äbÿm',\n", + " 'damaged',\n", + " 'ï ür dïlïr sä',\n", + " \"i'm dirty and broken\",\n", + " 'ï ürä mï läë äbÿm',\n", + " 'my soul is damaged',\n", + " 'äï ä dï',\n", + " 'transformation through pain',\n", + " 'lïnï',\n", + " 'tree of life',\n", + " 'tä läë yä',\n", + " 'our soul is screaming',\n", + " 'ündülï',\n", + " 'bravery',\n", + " 'dïlï dïlï ür',\n", + " 'we are skinned, torn',\n", + " 'ï dïlï yüm',\n", + " 'in a fallen humanity',\n", + " 'ür läë ä yüm dä ündätï',\n", + " 'the souls of men cry for such a long time',\n", + " 'dä lï ündülï yüm',\n", + " 'the lying man sentenced to tears',\n", + " 'dü sündälï dïlï yüm',\n", + " 'suns that die, men torn',\n", + " 'ündë ä läë',\n", + " 'unsightly souls',\n", + " 'fürï säntä',\n", + " 'dispossessing anger',\n", + " 'dä ä dä ündätï',\n", + " 'tears, eternal tears',\n", + " 'mï qrö mï düntö säë ür hün qrö für äï',\n", + " 'the most spiritual crown is a crown of thorns',\n", + " 'sütch dü düntö ï dü mä',\n", + " 'experience of good and evil',\n", + " 'tërëä',\n", + " 'earthlings',\n", + " 'mï üntäï wük mï ëürt',\n", + " 'heart full of scars',\n", + " 'tërëä',\n", + " 'earthlings',\n", + " 'tërëä',\n", + " 'earthlings',\n", + " 'tä üntäï wük für kï',\n", + " 'full of injuries in the head',\n", + " 'mï südürü wük mï säë',\n", + " 'spirit full of bruises',\n", + " 'tërëä',\n", + " 'earthlings',\n", + " 'mï ëürt fïrë',\n", + " 'my heart is on fire',\n", + " 'tërëä',\n", + " 'earthlings',\n", + " 'mï läë ündätä',\n", + " 'a patched soul',\n", + " 'ündä lä ï yüm',\n", + " 'infernal reality in man',\n", + " 'dälï ï yüm',\n", + " 'men divided',\n", + " 'für ländä tä yüm',\n", + " 'the sky is the house of the human race',\n", + " 'yüm dälä ï yüm',\n", + " 'humanity, men in torment',\n", + " 'dälä ï',\n", + " 'inner torment',\n", + " 'dälä ï',\n", + " 'inner exhaustion',\n", + " 'nöc yüm dä yüm',\n", + " 'dark humanity, the tears of man',\n", + " 'däë ländä',\n", + " 'disgusting paradise',\n", + " 'dälä ï',\n", + " 'inner suffering',\n", + " 'dälä nöc yüm',\n", + " 'dark torment of men',\n", + " 'dïspärät für lïnï für ländä',\n", + " 'far from the tree of life and heaven',\n", + " 'mï ëï für mï ründä ür hün ëï für dä',\n", + " 'the path of elevation is a path of tears',\n", + " 'öl wük für ëdën ï dü dörï',\n", + " 'as much as exaltation and sublimation',\n", + " 'öl für dïvïr ïn tï für mä ï hüp',\n", + " 'everything that comes from above is paid by faith',\n", + " 'für sütch ïn sütch ür dölörä ï ön käë',\n", + " 'tested in the ordeal of suffering and of chaos',\n", + " 'ëï öl ür täë üvï für körüm hün tün dü tündü hün tï cündürï',\n", + " \"where all the promised lands are won by loyalty to one's quest\",\n", + " 'hün tün dü färündï',\n", + " 'with sweat',\n", + " 'für sän ï ïlä dä äyä',\n", + " 'with blood and tears hurled',\n", + " 'hün für cö hün mï',\n", + " 'clinging to the helm',\n", + " 'mï cündürï dü tï ür günt',\n", + " 'the quest of height is crucifying',\n", + " 'sän dü hün ürï für ï ürä ündï sä',\n", + " 'property of a world we have chosen',\n", + " 'ün ürï dü läïrä lï äë pärïön dü für sä',\n", + " 'the world of tomorrow belongs to the repented of this choice',\n", + " 'für värïnsän für ürï füch',\n", + " 'who looks upon this world face up',\n", + " 'ïn s pärïön',\n", + " 'begging for forgiveness',\n", + " 'ïn s pärïön',\n", + " 'begging for forgiveness',\n", + " 'ür für ürä cün dü ündï',\n", + " 'he who is afraid of suffering',\n", + " 'für mï kä',\n", + " 'who refused it',\n", + " 'ün mï vïrï für ü kä',\n", + " \"that's life that he refuses\",\n", + " 'hün äë für ürä ündï für ündülï',\n", + " 'to those who have had a heart of compassion',\n", + " 'hün äë für ürä ündï fün ëlö dörï ïn für värïnsän ëï mï ländä',\n", + " 'to those who dared to think differently, turning back to the stars',\n", + " 'tänk',\n", + " 'thank you',\n", + " 'türï mï ündülï ü',\n", + " 'unfortunately, i understand you',\n", + " 'yüm ür ïrïn üsü fün ünsï',\n", + " 'humanity is searching for its own little comfort',\n", + " 'mï yä ëï xplö',\n", + " \"i'm screaming up until i explode\",\n", + " 's ürä für äë fïrë käë ï mä',\n", + " 'are there only the flames, chaos and evil ?',\n", + " 'fur sutch luminare di du yum',\n", + " 'the light is consumed, transforms humanity',\n", + " 'käë',\n", + " 'chaos',\n", + " 'ür üntö',\n", + " 'you and me',\n", + " 'lücï',\n", + " 'lucifer',\n", + " 'ï crï für ü',\n", + " 'i cry for you',\n", + " 'mï ëürt säïr für ü',\n", + " 'my heart bleeds for you',\n", + " 'ündï für mï güd sätä cür ü für cündï dü sän',\n", + " 'our malevolent gods have taught to the human to feed themselves on flesh',\n", + " 'ündï für mï güd sätä cür ü mï ägrä',\n", + " 'our malevolent gods have taught us agriculture',\n", + " 'ündï für mï güd sätä cür ü für vü fï ï fürï',\n", + " 'our diabolical gods have taught us to wage war and predation',\n", + " 'ündï für mï güd sätä cür ü für düntö ründö',\n", + " 'our diabolical gods have taught us not to be cold',\n", + " 'ï ründö',\n", + " \"i'm cold\",\n", + " 'ï mä',\n", + " \"i'm hurting\",\n", + " 'ï mä',\n", + " \"i'm hurting\",\n", + " 'ï mä',\n", + " \"i'm hurting\",\n", + " 'jüd mï üntä',\n", + " \"let's get out of darkness\",\n", + " 'sü cösä mï mä ï dïvïr ëï löv',\n", + " 'fight against evil and come back to love',\n", + " 'ür mä',\n", + " 'we are hurting',\n", + " 'lïbërtätë ündätï',\n", + " 'eternal liberation',\n", + " 'sölü ü ün mä für ü ür ün vü ündï',\n", + " 'despite all the evil you have done us',\n", + " 'ï nöt rün ü',\n", + " 'i do not hold it against you',\n", + " 'ï vüntï ü',\n", + " 'i pity you',\n", + " 'ï rün für ü rü mï lïüm dü lümïnärë cündö für ü ündï ür',\n", + " 'i want you to become again the protective angel of light that you once were',\n", + " 'jüd mï üntä',\n", + " \"let's get out of darkness\",\n", + " 'sü cösä mï mä ï dïvïr ëï löv',\n", + " 'fight against evil and come back to love',\n", + " 'ündülï ï crï',\n", + " 'compassion, i cry',\n", + " 'sülï ü lä nöt lïbërtä',\n", + " 'alone, you cannot free yourself',\n", + " 'nö ïlë für mä',\n", + " 'do not react to evil',\n", + " 'mä',\n", + " 'evil',\n", + " 'lücï yä ä mï',\n", + " 'lucifer scream with me',\n", + " 's güd ïn täë',\n", + " 'recalling the creator on earth',\n", + " 'dïvïr tälürïn ëï löv',\n", + " 'we return all to love',\n", + " 'dü üntï ëï ëdën',\n", + " 'darkness to the heavens',\n", + " 'ündülï ï ïn jüd läïrä tälürïn füch färïä',\n", + " 'bravery, we can all get through this, big brother',\n", + " 'öl ündätä ündätï',\n", + " 'everything always manages',\n", + " 'ï lör ü lücï',\n", + " 'i love you lucifer',\n", + " 'ür cündü värïnsän ür hün fün für fö für hün fün ür lä für hün fün ür lïüm',\n", + " 'we only see part of the show, only one part of reality, one part of the light',\n", + " 'cündülï dä vïrï sïk lï immortal dalek dust ïn köm dust one valid eye',\n", + " 'aberration, tear, unhealthy existence, lying',\n", + " 'äë ütä ücö ïn läë gräcë dü für ï äë törï dü ü ütä',\n", + " 'living beings stay alive thanks to the death and exploitation of other living beings',\n", + " 'äë dädä ëndäë ïn düntäë äë täë',\n", + " 'the food ends in defecation, the earth',\n", + " 'hün ürï mï sä ürï dü ündä sörvï tä äë yüm yüm äë üdï cündï',\n", + " 'a world of free will, world of vice, slave of food, the food chain',\n", + " 'ïn sä äë kälün äë düntö fün künstrük ür üvï für vïrï dü äë ürtï ür ündätï fürï',\n", + " 'through which weaker animals develop strategies, to survive the violence of big predators',\n", + " 'ü cündülï ü pärädä ü cündülï köböl(d) ürï ïn täë',\n", + " 'your paradise of matter is aberrant, your fake world is stupid, the spirit of life in density',\n", + " 'cündülï nö ï vä für cündülï nö ü pärädä ü cündülï nö cör',\n", + " \"i don't agree to this aberration, this nonsense, your false paradise, your absurdity, inhuman\",\n", + " 'für cündülï nö ü pärädä köböl(d) väïüläntä däë',\n", + " 'this nonsense, your false paradise, false paradise violent, repugnant',\n", + " 'öl für krëät lä gräcë ür fürï dü ürä äë ïlï dïtï ür lï vün ündä',\n", + " 'all this creation works through predation, by parasitism, the physical world is our real hell',\n", + " 'tribulation x',\n", + " 'hün ürï mï dörï ëndäë khïp ï mï vün ürï hün zü ündä für läë ïlï',\n", + " 'a world of ephemeral beauties, copied to the real world, a holographic zoo for detained souls',\n", + " 'solution diverted täë ïlï',\n", + " 'the solution is to turn away from this earthly calvary',\n", + " 'mï nö ür pärädä mï nö lä vä für ündü sörï',\n", + " 'i will never be part of your false paradise, i cannot accept these paradigms, sorry',\n", + " 'ïkär nö ür pärädä sörï köböl(d) ür täë ïlï',\n", + " 'icarus, i do not accept your paradise, sorry, your earthly prison, false paradise',\n", + " 'rëvëürt sätä äë fö nö lïbërätë nö sï tï cör',\n", + " 'revolt of the heart, demons and liars cannot be free, no ascension without heart',\n", + " 'küntröl eternity köböl(d) eternity klük',\n", + " 'eternal control, false eternal paradise, time',\n", + " 'öl ä hün jül dïspärät künstrük vü ïcë nö pärädä',\n", + " 'all that has a form will disappear, will be recomposed, stuck in a false paradise',\n", + " 'fürüs dü äë värïnsän dü äë dïtï cündüïlï ürï ündö klük',\n", + " 'reward for allegiance to matter, locked in a space-time loop',\n", + " 'äë ïlïs ür hün änï hün tï këns hün tï cöï dü äë künstrük vü dü äë yümä',\n", + " 'this world is a passage, a vibratory level, a necessary step in the reconstruction of the original soul',\n", + " 'ündï ïlï ü kälün dü lïgï ü lör',\n", + " 'from the most beastly prisoner to the most benevolent priest',\n", + " 's ïlündïlï dü kön sö ïlündïlï dü günt ücö ïlï ïn küb nï lïbërtä ü',\n", + " 'ready to survive so ready to kill ? remain trapped in the cube or to free oneself from it ?',\n", + " 'für hün fälïündï ündäë für hün fälïündï ëdën',\n", + " \"it's a false eternity, it's a false paradise\",\n", + " 'vï hün löv tündü dü hün dïmëntä tï törï ïn für ïlï',\n", + " 'duality, love belongs to a higher dimension, exploited in this world',\n", + " 'ïn pärädä ü ürä änï vü rïvï nöc jüd pärädä rïvï sö ü vü lëïth',\n", + " 'in paradise we made a revolution of darkness, on the outside of paradise we will make the revolution of light',\n", + " 'lëïth rëvëürt rïvï lëïth nö pärädä täë lëïth',\n", + " 'light, revolt of the heart, revolution of light, no earthly paradise, light',\n", + " 'rïvï cösä ïlïs äë sä ü cöïündï ür äë vürï güd rïündï ür hüp sïk',\n", + " 'revolution, opposition, making choices, they say that the higher divine reality is a belief, sick',\n", + " 'ür ël cündü ür nö vürï jüj sï täë ia ia',\n", + " 'that it is not concrete, only the earth',\n", + " 'sï täë ür hün ündärä dü ëürt hün ündärä bäc hün sütch tä hüp',\n", + " 'but the earth is a test of the heart, a rehabilitation test, a test of faith',\n", + " 'nö pärädä täë sölïtïüdï yüm human see yüm universe sï lï',\n", + " 'no earthly paradise, disunity, the human only believes what he sees, the universe of the human is a lie',\n", + " 'cündürü vün sölär sïk vün galacia sïk',\n", + " 'mental barrier, false truth about the sun, false truth about the galaxy',\n", + " 'äë täë ür hün ëdën rüntäë für äë läë cündü',\n", + " 'the earth is an artificial paradise, for violent souls',\n", + " 'für ür ël lä ündärä hün mä sï ël rün dälï ün lïläë äë ürï güd',\n", + " 'so that they can experience evil, if they want, separated, without affecting the world of light',\n", + " 'küb d täë ia köböl(d) düntäë conflict täë',\n", + " 'a cube for demon, the earth, managed by an artificial intelligence, false dualist paradise, the land at war',\n", + " 'area 6, area 9 area 9, area 6',\n", + " '6 säë ïlï cö ïlï fö ïlï mä ïlï sïmüläë sï lï',\n", + " '6, partitioned spirit, chained mysteriously, world of lies, world of clumsiness, material simulator',\n", + " '9 läë ï lï sä ï lï cö ï lï fö ï lï säë lï sïlëncïä',\n", + " '9, the soul in matter, choose our camp, linked to the ego, hypocritical theater, the avatar lies to us in silence',\n", + " 'ündütä äë qrö rän rü hün lörn üt äë lörn hün fïnx',\n", + " 'repair, the crow must become a unicorn, purification, the unicorn a phoenix',\n", + " 'dörï äë fïnx ür üt lïüm ündätï',\n", + " 'sublimation, the phoenix of eternal pure light',\n", + " 'tärvï dü dïmëntä kïrän äë düntö fün äë',\n", + " 'change of dimension, protection of the little ones',\n", + " 'für nö lä ürä tä ëdën köm ëï ürä hün ütä kïh dälä',\n", + " 'there can be no paradise from the moment that there is someone who suffers',\n", + " 'ëï äë hün günt ü für vïtï ä ëï für ütä äë fï',\n", + " 'where some kill others to live, and where there is war',\n", + " 'mä nöc löv',\n", + " 'sadness, dark, passion',\n", + " 'mï löv mï cör säïr ündätï khïp nö sän cündü ündülï üntö',\n", + " 'my love, my heart always bleeds as much, nobody understands me',\n", + " 'ïlï äë fü ür kï ä äë dïrïün ür günt ï dïlïr',\n", + " 'here the fools are kings and the heroes are mocked and banished',\n", + " 'öl äë dörï fürüs lö ü ïn äë dätä ïn äë lïdï',\n", + " 'all the beautiful moments will be lost in time, into oblivion',\n", + " 'köm äë dä ïn äë dïlï',\n", + " 'like tears in the rain',\n", + " 'für ürï vü däë ü ür ï löv',\n", + " 'this world is killing those we love',\n", + " 'plëz mï güd lïbërätë mï',\n", + " 'please, my god, free me',\n", + " 'öl ür dïë öl äë ürï vä öl äë ürï ürä cün',\n", + " 'everything is perishable, everyone accepts, everyone is scared',\n", + " 'öl s äë bäyë mï ürtï',\n", + " 'no more questions about murders, violence',\n", + " 'vä öl äë ëntör ïn für ürï',\n", + " 'by accepting all the laws of this world',\n", + " 'ï cün',\n", + " 'by fear',\n", + " 'sörvï vülc yüm',\n", + " 'voluntary servitude of the human',\n", + " 'nöc säë',\n", + " 'black spirit',\n", + " 'lümïnärë ündürï ïn hün ürï ëï öl ür ëndäë',\n", + " 'impossible ideal in a world where everything is ephemeral',\n", + " 'lïvïr äë sölü sündätï vü ä vü',\n", + " 'living the same day again and again',\n", + " 'sän sörvï läë',\n", + " 'the flesh holds my soul',\n", + " 'ämä ï rän ïn täë',\n", + " 'maintained, by force, on earth',\n", + " 'ïlï öl kïh ür dörï rü träg',\n", + " 'here, everything that is wonderful becomes tragic',\n", + " 'öl kïh ür träg rü dörï',\n", + " 'all that is tragic becomes formidable',\n", + " 'tärïn përk ünpërk përk',\n", + " 'perfect balance, perfect imperfection',\n", + " 'human ü fell',\n", + " 'human, you fell',\n", + " 'sätä sö sörvï ïn täë',\n", + " 'become unconscious and locked on earth',\n", + " 'ör false god lies',\n", + " 'your false god lies',\n", + " 'choose ür master',\n", + " 'choose your master',\n", + " 'no more täë with violence',\n", + " 'never again of the violent planet earth',\n", + " 'no more human with ignorance',\n", + " 'no more ütä with arrogance',\n", + " 'never again creatures with arrogance',\n", + " 'humanity has fallen',\n", + " 'ï crï für mï öl',\n", + " 'i cry for all of us',\n", + " 'für äë ïlï ürtï ï ür',\n", + " 'for the violent prisoners that we are',\n", + " 'äë dëmön ür ürï',\n", + " 'the demons of this world',\n", + " 'ür ürä hün ütä dörï dü äë jüd dü für lä',\n", + " 'we have a wonderful life outside of this game',\n", + " 'hün läë ünfü dörï',\n", + " 'a tremendously beautiful soul',\n", + " 'ï ündülï äë lïüm ündü dü ïlïs ündü änï ïn mï vën',\n", + " 'i feel the primordial light of the original creator circulating in my veins',\n", + " 'a-ha-hah!',\n", + " 'bwah-ha-ha!',\n", + " '(cough! cough!)',\n", + " 'ha ha ha ha!',\n", + " 'nyah-ha-ha!',\n", + " 'ha ha ha . . . ha ha ha ha ha ha . .',\n", + " 'nyah-ha-ha-ha!',\n", + " 'oh . . . arbitrary!',\n", + " 'nyah-ha-ha-ha!',\n", + " 'ha ha ha ha ha ha ha!',\n", + " 'ah ha ha ha ha',\n", + " 'ah ha ha ha',\n", + " 'arbitrary!',\n", + " 'ha ha',\n", + " 'ha ha ha ha ha ha!',\n", + " 'bwah ha ha . . . (cough!)',\n", + " 'mmph ha ha ha!',\n", + " 'ha ha ha!',\n", + " 'ha ha ha (cough! cough!)',\n", + " 'ah ha ha ha ha',\n", + " 'ah ha ha ha',\n", + " 'arbitrary!',\n", + " 'ha ha',\n", + " 'ha ha ha ha ha ha!']}}},\n", + " 'sv': {'sentence': {'pop': {'meta': {'train_data': ['om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", + " 'vi har både drank and drugs, det finns drank and drugs',\n", + " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", + " 'vi har både drank and drugs, det finns drank and drugs',\n", + " 'jag har drank and drugs, jack och blunts',\n", + " 'stop the cuss, crack och buds, drank and love',\n", + " \"jag ba' walla på mother, är jävligt hög\",\n", + " 'du tar knappar och flabbar som crack monsieur',\n", + " 'damn, benim är singel, har träffat på eva så gäri blir dränkt',\n", + " 'vaknar på fredan med molly i sängen',\n", + " 'tog henne så hårt att hon kände sig kränkt',\n", + " 'fucka ur på alla sätt livet som ges ska levas fett',\n", + " 'har ingen tid med \"var inte blyg!\" orkar inte med projekt',\n", + " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", + " 'vi har både drank and drugs, det finns drank and drugs',\n", + " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", + " 'vi har både drank and drugs, det finns drank and drugs',\n", + " 'välkomen till festen, mina gäster dom går loss',\n", + " 'dom har traddar, habbar, äzi, mdma, dom har ?',\n", + " 'det e suedis ifrån söder o det förortsbarn förstås',\n", + " 'kom o fucka ur med oss, mina amigos har en torsk',\n", + " 'fucka ur på alla sätt livet som ges ska levas fett',\n", + " 'har ingen tid med \"var inte blyg!\" orkar inte med projekt',\n", + " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", + " 'vi har både drank and drugs, det finns drank and drugs',\n", + " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", + " 'vi har både drank and drugs, det finns drank and drugs',\n", + " 'om din guzz vill chilla',\n", + " 'om din boy vill chilla',\n", + " 'om din guzz vill chilla',\n", + " 'om din boy vill chilla',\n", + " 'om din guzz vill chilla',\n", + " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", + " 'vi har både drank and drugs, det finns drank and drugs',\n", + " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", + " 'vi har både drank and drugs, det finns drank and drugs',\n", + " 'ett ondskans mörker flyter ut i skogarna',\n", + " 'nattetid, da kristet blod har sin vila',\n", + " 'en ande fran den gamla världen',\n", + " 'nattens svarta valnad',\n", + " 'en skugga fran urtiden',\n", + " 'djävulens hand pa jorden',\n", + " 'en själens bane',\n", + " 'en uraldrig styggelse',\n", + " 'en gang uppstigen fran underjorden',\n", + " 'kallar dig inatt',\n", + " 'an evil darkness flows into the forests',\n", + " 'nighttime, when christian blood has its rest',\n", + " 'a spirit from the old world',\n", + " 'the nights black phantom',\n", + " 'a shadow from ancient time',\n", + " \"the devil's hand on the earth\",\n", + " \"the soul's bane\",\n", + " 'an ancient abomination',\n", + " 'once risen from the underworld',\n", + " 'calling you tonight',\n", + " 'fall deep into void',\n", + " '(in the) black hole of nothing',\n", + " 'soprano:',\n", + " 'hail, flow of vergelmar',\n", + " 'hail, flow of vergelmar',\n", + " 'hail, flow of vergelmar',\n", + " 'hail, old void!',\n", + " 'alto:',\n", + " 'hail, flow of vergelmar',\n", + " 'heat of creation',\n", + " 'hail, flow of vergelmar',\n", + " 'hail, old void!',\n", + " 'tenor/bass:',\n", + " 'spark in the nothingness',\n", + " 'heat of creation',\n", + " 'make the ice start to melt',\n", + " 'life wake up in the void',\n", + " 'ymer is born, fire and ice',\n", + " 'chaos will form, megin will rise',\n", + " 'fader ymer drack fran urkon',\n", + " 'en strom av mjolk som gav oss liv',\n", + " 'oppna gapet i ryndend mitt',\n", + " 'floda av blod fran ymers kropt',\n", + " 'varldar skapas utav hans kott',\n", + " 'nio (till) antal pa yggorasil',\n", + " 'ymers gap - ymers runa',\n", + " 'ymers ond - ymers urlag',\n", + " 'hundred dollar bills, hundred dollar bills',\n", + " 'hu-un-dred bills, hundred dollar bills',\n", + " 'hundred dollar bills, hundred dollar bills',\n", + " 'hundred d-, hundred d-, hundred dollar bills',\n", + " \"got 'em hundred dollar bills\",\n", + " 'hundred dollar bills, hundred dollar bills',\n", + " 'hu-un-dred bills, hundred dollar bills',\n", + " 'hundred dollar bills, hundred dollar bills',\n", + " 'hundred d-, hundred d-, hundred dollar bills',\n", + " 'words yet unspoken',\n", + " 'some promise unbroken',\n", + " 'these are the tokens i cling to',\n", + " 'kisses ungiven',\n", + " 'dreams yet unlived in',\n", + " 'these are the gifts i can bring you',\n", + " 'can bring to you ... so tell me',\n", + " 'who goes there',\n", + " 'step out of the night and just show me you care',\n", + " 'take these gifts that i bear ... and i will know',\n", + " 'love is here',\n", + " 'who goes there',\n", + " 'do you come as a friend or a foe ... and if so',\n", + " 'should i stay ... should i go',\n", + " 'i need to know',\n", + " 'i need to know',\n", + " 'tantos caminhos',\n", + " 'sempre a seu lado',\n", + " 'fomos deixando pra trás',\n", + " 'o amor sozinho',\n", + " 'foi se perdendo',\n", + " 'agora é tarde demais',\n", + " 'demais',\n", + " 'pra voltar',\n", + " 'who goes there',\n", + " 'step out of the night and just show me you care',\n", + " 'take these gifts that i bear ... and i will know',\n", + " 'love is here',\n", + " 'who goes there',\n", + " 'não sei pra você o que sou',\n", + " 'se acabou ... and if so',\n", + " 'should i stay ... should i go',\n", + " 'eu preciso saber',\n", + " 'i need to know',\n", + " '(extra credits: stockholm session strings:',\n", + " 'violin: ulf forsbeg (concert master), anders hjorvfall, roland kress, mira malik, hanna boström, renate klavina, martin stensson, bo söderström, jan isaksson, janika gustafsson, torbjörn bernhardsson, monika stanikowska, dag alin, christian bergqvist, saara nisonen-oman, per hammarström',\n", + " 'viola: elisabeth arnberg, carmilla svarfvar, hans akeson, marius mateescu, ann christin ward, åsa stove-paulsson',\n", + " 'cello: astrid lindell, monica jönsson, anna ljungberg, åsne volle, jana boutani',\n", + " 'double bass: ingalill hillerud, peter lysell, michael karlsson)',\n", + " 'det va en tjej - do do dodododo do',\n", + " 'det va en grabb - do do dodododo do',\n", + " 'dom simma ut - do do dodododo do',\n", + " 'och längre ut - do do dodododo do men då kom…',\n", + " 'hajarna, hajarna, hajarna, hajarna',\n", + " 'o pappa haj - do do dodododo do',\n", + " 'o mamma haj - do do dodododo do',\n", + " 'o mormor haj - do do dodododo do',\n", + " 'o mini haj - do do dodododo do',\n", + " 'dom tog en arm - do do dodododo do',\n", + " 'dom tog en till - do do dodododo do',\n", + " 'dom tog ett ben - do do dodododo do',\n", + " 'dom tog en knopp - do do dodododo do',\n", + " 'dom tog en kropp - do do dodododo do',\n", + " 'och det kom blooooood...',\n", + " 'en massa bloooood...',\n", + " 'i en kvalmfylld, andlig öken har jag sett dem gå',\n", + " 'drabbade av själasoten, håglösa, med ilska i synen',\n", + " 'det är som sorgen aldrig skulle lämna deras ögon',\n", + " 'som om sinnet hade svartnat för evigt',\n", + " 'sammanträngda på ytor små',\n", + " 'lager på lager (i boningar grå) i ångestens högborg',\n", + " 'under jorden hastar de – jagande sökande; ingenting finnande',\n", + " 'varför stannar de aldrig upp?',\n", + " 'innan ni er fredliga gömma finner',\n", + " 'i susande lundar tvingas även ni till vila',\n", + " 'inte en stilla undran – en rasande fråga;',\n", + " 'varför stannar ni aldrig upp?',\n", + " 'oändligt upplyst – för alltid höljd i mörker',\n", + " 'inga stjärnor ser jag lysa här',\n", + " 'vilka skalder dikta i denna dimma?',\n", + " 'vilka målare sina verk här färgar?',\n", + " 'oändligt upplyst – för alltid höljd i mörker',\n", + " 'vilka målare sina verk här färgar?',\n", + " '------------------------------------------------------------',\n", + " 'english translation:',\n", + " 'the stronghold of angst',\n", + " 'in a suffocating, spiritual desert i have seen them wander',\n", + " 'struck by the soul-plague, listless, with anger in their gazes',\n", + " 'it is as if sorrow would never leave their eyes',\n", + " 'as if the mind had been blackened forever',\n", + " 'compressed into small spaces',\n", + " 'layer upon layer (in gray dwellings) in the stronghold of angst',\n", + " 'below the ground they hurry - hunting, searching; finding nothing',\n", + " \"why don't they ever stop going?\",\n", + " 'before you find your peaceful hideouts',\n", + " 'in murmuring groves even you are forced to rest',\n", + " 'not a calm wondering – a furious question:',\n", + " \"why don't you ever stop going?\",\n", + " 'endlessly enlightened – forever wrapped in darkness',\n", + " 'no stars do i see shining here',\n", + " 'what bards would write in this fog?',\n", + " 'what painters would colour their works here?',\n", + " 'endlessly enlightened – forever wrapped in darkness',\n", + " 'no stars do i see shining here',\n", + " 'what painters would colour their works here?',\n", + " 'ayo',\n", + " \"i'm chilling in the sofa\",\n", + " 'light an ounce up with a bread toaster',\n", + " 'losing my composure',\n", + " 'fucked up in a fucked up culture',\n", + " 'images of me not getting older be fucking my high',\n", + " 'drugs destroy so many young lives but fuck it not mine!',\n", + " '*estupidos*',\n", + " 'shut up bitch',\n", + " 'what you know about this',\n", + " 'when kids are willing to sell their mom just to get a hit',\n", + " 'they say it starts off with a spliff',\n", + " 'and ends tragically with a needle',\n", + " 'shoved up in your artery inside a stolen vehicle',\n", + " 'rest in peace, those that fell victim to bad smack',\n", + " 'all of you burning aluminium foil need to stop that',\n", + " \"but i can't front these drugs got me busting mad vocals\",\n", + " 'in a one bedroom apartment sniffing lo lo going loco',\n", + " \"no, no, yeah, yeah, it's a never ending circle\",\n", + " 'i still remember the first time i ever puffed that herb yo',\n", + " \"i fell in love with it, and i'm not planning on no divorce\",\n", + " 'you made a bad choice in life kid fuck if that my loss',\n", + " 'estupidos',\n", + " 'estupidooos',\n", + " 'estupidos',\n", + " 'estupidooos',\n", + " 'yao, du låser in mig syr in mig lägger mer tyngd på mig',\n", + " 'skyldig eller icke skyldig pliten varför ska du bry dig',\n", + " 'frihetsberöva hatet du förökar mig du undanstökar i en mörk cell',\n", + " 'som äckligt spökar',\n", + " 'va e det med dig lugna ner dig!',\n", + " 'vadå lugn?! suttit sex år av mitt liv plit vadå lugn?!',\n", + " 'det du gör e skapar ett monster med hat som växer våldsamt plågsamt',\n", + " 'det låter nog otroligt plit men det är råsant',\n", + " 'ser på er, få spel på er, det känns som att jag inte är en del av er',\n", + " 'va ni mobbade som små eller vad är det som är fel på er?',\n", + " 'pliten lyssna på mig noga låt mig läsa min tidning ifred',\n", + " 'låt mig sitta min tid ifred',\n", + " 'pallar inte mer med er',\n", + " 'sättet du beter dig på, batongen som du bär med dig',\n", + " 'tanken på att nån gång så kanske du kan slå på mig',\n", + " 'få spel på dig,akta dig, stick härifrån',\n", + " 'slår ihjäl dig snart om du tror jag är nått fucking fån',\n", + " 'estupidos',\n", + " 'estupidooos',\n", + " 'estupidos',\n", + " 'estupidooos',\n", + " 'yo check the sermonizer',\n", + " 'more philosopher',\n", + " 'who knows that it works both ways',\n", + " 'so i managed to control my conquerer',\n", + " '?? went to shut him out',\n", + " 'i even know when the bastard opened his mouth to try and outsmart me with his mouth',\n", + " 'like i said',\n", + " \"i'm writing my own\",\n", + " \"diagnosis, even though it's not good for me i'm back stage with hoes\",\n", + " 'estupidos',\n", + " \"don't let a piece of ass control your mind\",\n", + " 'make you dumb, deaf and blind losing all track of time',\n", + " 'but what you do know is',\n", + " 'that you gotta use a rubber',\n", + " 'then go home to your girl swallow your guilt tell her you love her',\n", + " 'mr lover lover',\n", + " 'secritly fighting his fate',\n", + " \"because he thinks he can't eat the same meal everyday\",\n", + " 'estupidises',\n", + " \"it's been like this\",\n", + " 'ano seis meses',\n", + " 'sin poderes para mi karma no crece me entiendes',\n", + " 'so if you comprehend this you can call me a prick',\n", + " 'the rest of you will follow this tip probably thank me for it',\n", + " 'estupidos',\n", + " 'estupidooos',\n", + " 'estupidos',\n", + " 'estupidooos',\n", + " 'yo,den här går ut till dem som bara klagar och klagar men inte gjort ett minsta lilla skit i sina dagar. invandrare som snackar om, sverige hit och dit. ey vad kommer du ifrån kompis ba stick då dit! till journalister som tror vi är värsta politiker, jaså blir man det bara för man är samhällskritiker. till er som tror på allting som tidningarna skriver, dom döljer, dom ljuger eller bara överdriver. alla ni ungdomar som skiter i utbildningen det är svårt att kunna på bli något det är verklighetsskildringen, lärare som är helt jävla oengagerade sen undrar dom \"varför är dom så omotiverade?\" citytunneln i malmö. oj oj oj vad du blev glad, ja hållkäften kan inte ens hitta en lägenhet i min stad, lägg av sluta ta, min del släng din mikrofon jag får spel på er vet du vad jag drar härifrån...',\n", + " 'estupidos',\n", + " 'estupidooos',\n", + " 'estupidos',\n", + " 'estupidooos',\n", + " 'heja usa, ni är världens bästa land',\n", + " 'hurray for usa, you are the greatest nation in the world',\n", + " 'heja usa, ni har världen i er hand',\n", + " 'hurray for usa, you have the world in your hand',\n", + " 'blir det krig idag tar ni ryssarna det är jättebra heja usa',\n", + " 'if war will break out then you will beat the russians that is really good hurray for usa',\n", + " 'heja usa, usa har alltid rätt',\n", + " 'hurray for usa, usa is always right',\n", + " 'det är jättebra att ni hjälper pinochet',\n", + " 'it is really good that you are helping pinochet',\n", + " 'för vi vet att han är en trevlig man vapen ska han ha heja usa',\n", + " 'cos we all know that he is a nice man you should give him guns hurray for usa',\n", + " 'heja ku klux klan och ronald reagan och nancy',\n", + " 'hurray for ku klux klan and ronald reagan and nancy',\n", + " 'heja caspar weinberger och new moral majority',\n", + " 'hurray for caspar weinberger and new moral majority',\n", + " 'heja usa, flera bomber mera krut',\n", + " 'hurray for usa, more bombs and more power',\n", + " 'heja usa, ryssen ska ha på sin trut',\n", + " 'hurray for usa, the russians should be beaten up',\n", + " 'blir det terrordåd finner ni på råd och klår araberna heja usa',\n", + " 'if you are struck by terror acts you will know what to do and kill the arabs hurray for usa',\n", + " '(the worst saxophone solo ever made) =))',\n", + " 'heja usa, ni har världens bästa mat',\n", + " 'hurray for usa, you have the best food in the world',\n", + " 'ökar krafterna hoes en bra elitsoldat',\n", + " 'it increase the strength in a good soldier',\n", + " 'ni är inga lamm det såg vi i vietnam där ni sprang så bra heja usa',\n", + " 'you are no cowards we saw that in vietnam there you ran so well hurray for usa',\n", + " 'vi ska ha respekt för amerikanens vita örn',\n", + " 'we should have respect for americas white eagle',\n", + " 'goda amerikaner ser en kommunist i varje hörn',\n", + " 'good americans sees a communist around every corner',\n", + " 'heja usa, ni kan göra som ni vill',\n", + " 'hurray for usa, you can do whatever you like',\n", + " 'blir det krig en dag, då kommer gud och hjälper till',\n", + " 'if it will be war, then god will come and help you',\n", + " 'för er predikant han är bra han talar sant',\n", + " 'cos your preacher is good he speaks the truth',\n", + " 'er kan ingen ta heja usa',\n", + " 'nobody can beat you hurray for usa',\n", + " 'ja! heja usa. skjut dom där jävla ryssarna och gör parkering av hela jävla ryssland',\n", + " 'yes! hurray for usa. shoot those fucking russians and make a parking lot of the whole fucking russia',\n", + " 'och så ta dom där oljiga arabjävlarna, ta deras olja och skjut ihjäl dom bara',\n", + " 'and then you will take those oily arabfuckers, and steal their oil and kill them',\n", + " 'förresten, skjut svenskarna också, det är bara präster och adel och borgare och bönder',\n", + " \"btw, kill the swedes to, its just a bunch of priests and nobility's and farmers\",\n", + " 'förresten, ta canada också, dom ruffar bara i hockey jämt',\n", + " 'btw, take canada to, they always play rough in hockey',\n", + " 'nej förresten, borra ett stort jävla hål i jorden, spräng hela jävla jorden i bitar. heja usa, spräng hela jävla solsystemet förresten! heja usaaaaaaaa!!!!!!!!!!!!!!!!!!',\n", + " 'no btw, drill a big fucking whole through the earth, blow up the whole fucking earth. hurray for usa, blow up the whole fucking solar system! hurray for usaaaaaaaaaa!!!!!!!!!!!!!!!!!!',\n", + " 'läser brevet, för att längta bort igen',\n", + " 'till en sommar, jag var där i solens land',\n", + " 'mötte amore, pulsen ökar i mig',\n", + " 'för dom härliga orden han skrev',\n", + " \"i'm so in la la la la love with you\",\n", + " 'and do you wa wa wa wa want me too',\n", + " 'jag ville tro varje ord',\n", + " 'men visste ändå att resan snart nådde sitt slut',\n", + " \"i'm so in la la la la love with you\",\n", + " 'and do you wa wa wa wa want me too',\n", + " 'den sommarn gick väldigt fort',\n", + " 'men minnet jag fick, var ljuvligt och kittlande skönt',\n", + " 'kalla dagar, kylan biter i min kropp',\n", + " 'drömmer om minnet, får grå dagar att fly fort',\n", + " 'läser brevet, orden ljuva som musik',\n", + " 'hör hans viskande lockande röst',\n", + " \"i'm so in la la la la love with you\",\n", + " 'and do you wa wa wa wa want me too',\n", + " 'jag ville tro varje ord',\n", + " 'men visste ändå att resan snart nådde sitt slut',\n", + " \"i'm so in la la la la love with you\",\n", + " 'and do you wa wa wa wa want me too',\n", + " 'den sommarn gick väldigt fort',\n", + " 'men minnet jag fick, var ljuvligt och kittlande skönt',\n", + " \"i'm so in la la la la love with you\",\n", + " 'and do you wa wa wa wa want me too',\n", + " 'jag ville tro varje ord',\n", + " 'men visste ändå att resan snart nådde sitt slut',\n", + " \"i'm so in la la la la love with you\",\n", + " 'and do you wa wa wa wa want me too',\n", + " 'den sommarn gick väldigt fort',\n", + " 'men minnet jag fick var ljuvligt och kittlande skönt',\n", + " 'många var de som föll',\n", + " 'desto fler runt valhalls fyllda bord',\n", + " 'en sorgesång jag skänker dem',\n", + " 'som vidare för i sköldmöars famn',\n", + " 'tankar och tårar till dem som gått hän',\n", + " 'som nu blickar vid asgårds port',\n", + " 'minnen och kväden skaldas snart',\n", + " 'vid elden i gillestid',\n", + " 'vi som här sitta höjer våra horn',\n", + " 'till de som sitter vid allfaderns bord',\n", + " 'tillsammans dricker vi segerns full',\n", + " 'till enöga vis',\n", + " 'hemma här i drottens hall',\n", + " 'skålar vi för äring och fred',\n", + " 'ingen sorg bär vi mer',\n", + " 'till glädje och rus vi ger oss hän',\n", + " 'english translation:',\n", + " 'many were those who fell',\n", + " 'all the more round the laden table of valhalla',\n", + " 'a song of mourning i give to them',\n", + " 'those who went to the embrace of shield maidens',\n", + " 'reminiscence and tears to those who went hence',\n", + " 'who now gaze by the gates of asagard',\n", + " 'memories and songs will soon be sung',\n", + " 'by the fire in times of feasting',\n", + " 'we who sit here raise our drinking horns',\n", + " 'to those who sit at the table of the father of all',\n", + " 'together we drink to victory',\n", + " 'and to one-eye wise',\n", + " 'here in the halls of the king',\n", + " 'we drink to yield and peace',\n", + " 'grief we carry no more',\n", + " 'we indulge in joy and intoxication',\n", + " 'pesten har en funnit',\n", + " 'ni kan ej fly',\n", + " 'döden skall dig taga',\n", + " 'ödet visar sin självklarhet',\n", + " 'kyrkoklockan som ständigt klang',\n", + " 'är nu tyst',\n", + " 'domen mot guds hus äro kommen',\n", + " 'när kyrkogrimmen ej längre ses',\n", + " 'är kristna liv lämnade till pestens makt',\n", + " 'ser hur livets ljusa dagar',\n", + " 'är endast ett minne blott',\n", + " 'insprukna i pestens pina',\n", + " 'snart död & borta för all tid',\n", + " 'bortom dagens mörker',\n", + " 'lever nattens ljus',\n", + " 'skapat utav djävulen när nu världen ligger i hans våld',\n", + " 'livets mening finnes i dödens avgrund',\n", + " '& skuggan av solen',\n", + " 'ses ej längre mer',\n", + " 'plague & torment',\n", + " 'the plague has found you',\n", + " 'you cannot escape',\n", + " 'death will take you',\n", + " 'fate shows its matter of course',\n", + " 'the church bell that constantly chimed is now silent',\n", + " 'the judgment of the house of god is here',\n", + " 'when the church guardian can no longer be seen',\n", + " 'christian lives are left to the power of the plague',\n", + " \"see how life's bright days\",\n", + " 'are nothing but a memory',\n", + " 'sunken into the torment of the plague',\n", + " 'soon to be dead and gone forever',\n", + " 'beyond the darkness of the day',\n", + " 'lives the light of the night',\n", + " 'created by the devil now that the world is in his hands',\n", + " 'the meaning of life is in the abyss of death',\n", + " 'and the shadow of the sun',\n", + " 'can be seen no more',\n", + " 'solen sjunker mellan fjäll och is',\n", + " 'ur marken stiger en märklig dis',\n", + " 'oknytt vakna de skrida fram',\n", + " 'undan springa helige kristi lamm',\n", + " 'vinden stiga till storm så mäktig',\n", + " 'likt en orkan den sveper fram',\n", + " 'undan springa helige kristi lamm',\n", + " 'de skall minnas denna dag',\n", + " 'de skall dömas av nattlig lag',\n", + " 'mäktig sång ljuda ur trollens läger',\n", + " 'de sjunga lovord fördömdas seger',\n", + " 'blodet rinner klingan skiner blöt',\n", + " 'ur svärdet som givit jesu sista stöt',\n", + " 'blodet dryper snön färgas röd',\n", + " 'här firas månen och kristi eviga död',\n", + " 'kom igen mörkrets väsen, denna natt är evigt lång',\n", + " 'inatt vi fira, inatt vi sjunga vår segersång!!!!!',\n", + " 'the sun sets between mountains and ice',\n", + " 'from the domain rises remarkable haze',\n", + " 'scent awakens them to stride towards',\n", + " 'away runs the holy christian lamb',\n", + " 'winds gather for the storm so powerful',\n", + " 'like a hurricane that sweeps towards',\n", + " 'away runs the holy christian lamb',\n", + " 'they shall remember this day',\n", + " 'they shall judge of nocturnal law',\n", + " 'powerful song sounds from the camp of trolls',\n", + " 'they sing to praise the condemned victory',\n", + " 'blood flows the soaked blade that shines',\n", + " 'from the sword that gave jesus the final thrust',\n", + " 'blood drips staining snow to red',\n", + " \"here celebrates moon and christianity's everlasting death\",\n", + " 'arrives the beasts of the darkness, this night is eternal',\n", + " 'tonight we celebrate, tonight we sing our victory chant!!!!!',\n", + " 'på svarta vingar buren',\n", + " 'över midgårds mark',\n", + " 'med bud om dagen',\n", + " 'och ormtungors fall',\n", + " 'vargtand och björnram',\n", + " 'eld och stål',\n", + " 'brutna löften, förgiftat land',\n", + " 'blodiga vingar skuggar mark',\n", + " 'sakta sluter sig hels hand',\n", + " 'kallar björnfot och gråben',\n", + " 'svurna samman i ed',\n", + " 'söner och döttrar av norden',\n", + " 'sprungna ur samma mull',\n", + " 'åter samlade till offer',\n", + " 'blot och lov till grimner',\n", + " 'låt spjutet bevingas i bärarens hand!',\n", + " 'vargtand och björnram',\n", + " 'eld och stål',\n", + " 'brutna löften, förgiftat land',\n", + " 'blodiga vingar skuggar mark',\n", + " 'sakta sluter sig hels hand',\n", + " 'seger till de av seden',\n", + " 'för yggdrasils rot',\n", + " 'seger till midgårds barn',\n", + " 'mot nidingars hat',\n", + " 'hammaren faller med ett dån',\n", + " 'horn blåser till sång',\n", + " 'blodörn ristas för nid:',\n", + " 'vedergällningens tid!',\n", + " 'vargtand och björnram',\n", + " 'eld och stål',\n", + " 'brutna löften, förgiftat land',\n", + " 'blodiga vingar skuggar mark',\n", + " 'sakta sluter sig hels hand',\n", + " 'ulvpälsar i kampens raseri',\n", + " 'blodiga sköldar spruckna',\n", + " 'bevingade ormar, blodörnens tid:',\n", + " 'vedergällningens tid!',\n", + " 'hammarens seger, hednatid:',\n", + " 'vedergällningens tid!',\n", + " '(english)',\n", + " 'time of vengeance',\n", + " 'on black wings borne',\n", + " \"over midgaard's land\",\n", + " 'carrying a message of the day',\n", + " 'and the fall of snake tongues',\n", + " 'wolf tooth and bear figure',\n", + " 'fire and steel',\n", + " 'broken promises, poisoned land',\n", + " 'bloody wings block out the sun',\n", + " \"slowly hel's fist clenches\",\n", + " 'calling bear foot and gray-legs',\n", + " 'sworn together in oath',\n", + " 'sons and daughters of the north',\n", + " 'made from the same soil',\n", + " 'again gathered for sacrifice',\n", + " 'praise to grimner',\n", + " \"let the spear fly true from the bearer's hand!\",\n", + " 'wolf tooth and bear figure',\n", + " 'fire and steel',\n", + " 'broken promises, poisoned land',\n", + " 'bloody wings block out the sun',\n", + " \"slowly hel's fist clenches\",\n", + " 'victory to the faithful',\n", + " 'of the root of yggdrasil',\n", + " 'victory to the children of midgaard',\n", + " 'against the hateful ones',\n", + " 'the hammer falls thunderous',\n", + " 'horns blow to song',\n", + " 'blood-eagle etched for ruin',\n", + " 'time of vengeance!',\n", + " 'wolf tooth and bear figure',\n", + " 'fire and steel',\n", + " 'broken promises, poisoned land',\n", + " 'bloody wings block out the sun',\n", + " \"slowly hel's fist clenches\",\n", + " 'wolf-pelt in the raging fight',\n", + " 'bloody shields cracked',\n", + " \"winged serpents, blood-eagle's time\",\n", + " 'time of vengeance!',\n", + " 'victory of the hammer, heathentimes',\n", + " 'time of vengeance!',\n", + " '(shit, vilken gyllene kväll det här är. det är helt sjukt! helt jävla sjukt är det.)',\n", + " \"did you read the news? there's a big confuse\",\n", + " 'the gun fever is back (the gun fever!)',\n", + " 'rudeness and guns is the talk of this town',\n", + " 'the gun fever is back (the gun fever!)',\n", + " '(every time you read the gleaner or star',\n", + " 'man shot dead or brutal gun war)',\n", + " \"it's the fever, oh the gun fever!\",\n", + " '(the simplest thing is the blam blam blam',\n", + " 'what is this in our little island?)',\n", + " \"it's the fever, oh the gun fever!\",\n", + " 'you can know one rude chap by the way he says stop',\n", + " 'the gun fever is back (the gun fever!)',\n", + " \"all the rudies got low, i don't know what it mean\",\n", + " 'the gun fever is back, the gun fever!',\n", + " '(every time you read the gleaner or star',\n", + " 'man shot dead or rudie at war)',\n", + " \"it's the fever, oh the gun fever!\",\n", + " '(the simplest thing is the blam blam blam',\n", + " 'what is this in our little stockholm?)',\n", + " \"it's the fever, oh the gun fever1\",\n", + " 'yeah!',\n", + " '(fever, fever)',\n", + " 'you can know one rude chap by the way he says stop',\n", + " 'the gun fever is back (the gun fever!)',\n", + " \"all the rudies got low, i don't know what it means\",\n", + " 'the gun fever is back, the gun fever, yeah!',\n", + " '(the simplest thing is the blam blam blam',\n", + " 'what is this in our little stockholm?)',\n", + " \"it's the fever, oh the gun fever!\",\n", + " '(everyday you read the gleaner or star',\n", + " 'dead or brute at war)',\n", + " \"it's the fever, oh the gun fever!\",\n", + " \"yeah, it's the fever, oh the gun fever!\",\n", + " \"yeah, it's the fever, oh the gun fever!\",\n", + " \"yeah, and it's the fever, oh the gun fever!\",\n", + " \"yeah, it's the fever, oh the gun fever!\",\n", + " \"yeah, it's the fever, oh the gun fever!\",\n", + " \"yeah, it's the fever, oh the gun fever!\",\n", + " \"oh, it's the fever, oh the gun fever!\",\n", + " \"oh, it's the fever, oh the gun fever!\",\n", + " \"oh, it's the fever, oh the gun fever!\",\n", + " \"oh, it's the fever, oh the gun fever, yeah\",\n", + " \"it's the fever, oh the gun fever!\",\n", + " \"yeah, it's the fever, oh the gun fever!\",\n", + " '(och så seglar bananbåten från göteborg iväg!)',\n", + " 'paroles de la chanson grävmaskinen :',\n", + " 'den här sajten',\n", + " 'bara stjäl texter',\n", + " 'från andra sajter',\n", + " 'eller från vart dom vill',\n", + " 'this website',\n", + " 'from other sites',\n", + " 'or from anywhere they want',\n", + " 'grävmaskin skakar up jord',\n", + " 'luktar av olja',\n", + " 'men det är ändå stulet',\n", + " 'titta närmre så du kan se',\n", + " 'saker större än beyoncé',\n", + " 'bakom dom som syns',\n", + " 'fabrizio moretti',\n", + " 'ät tills du spyr kobayashi',\n", + " 'snälla säg nåt dirty nasty',\n", + " 'vad kul att alla kom',\n", + " 'ja, det har du rätt i',\n", + " 'du får alltid ljuga för dig själv',\n", + " 'men ljug aldrig för mig',\n", + " 'du kan alltid ljuga för dig själv',\n", + " 'men ljug inte för mig',\n", + " \"it's the words you use\",\n", + " 'not the way you say',\n", + " \"it's the words you use\",\n", + " 'not the way you say',\n", + " 'not the words you use',\n", + " 'but the way you say them out',\n", + " 'stroboskop, slow motion danser',\n", + " 'porr och poppers på palatset',\n", + " 'älskar jag dig nu',\n", + " 'är du också naken',\n", + " 'a, vi är under samma moln',\n", + " 'men är du också vaken?',\n", + " 'du får alltid ljuga för dig själv',\n", + " 'men ljug aldrig för mig',\n", + " 'du kan alltid ljuga för dig själv',\n", + " 'men ljug inte för mig',\n", + " \"it's the words you use\",\n", + " 'not the way you say',\n", + " \"it's the words you use\",\n", + " 'not the way you say',\n", + " 'not the words you use',\n", + " 'but the way you say',\n", + " 'not the words you use',\n", + " 'but the way you say',\n", + " \"it's the words you use\",\n", + " 'not the way you say',\n", + " \"it's the words you use\",\n", + " 'not the way you say',\n", + " 'not the words you use',\n", + " 'but the way you say',\n", + " 'not the words you use',\n", + " 'but the way you say them out',\n", + " 'swedish girls x8',\n", + " 'got me going (hahah)',\n", + " 'swedish girls x20',\n", + " 'got me go',\n", + " 'got me go',\n", + " 'got me go',\n", + " 'got me go crazy',\n", + " 'got me go crazy',\n", + " 'why are you so god damn hot?',\n", + " '(hahah) jag vet inte',\n", + " 'got me going crazy',\n", + " '(hahah)',\n", + " 'why are you so god damn hot?',\n", + " 'jag vet inte',\n", + " 'i love you swedish girls',\n", + " 'why are you so god damn hot?',\n", + " '(hahah) jag vet inte',\n", + " 'got me going crazy',\n", + " '(hahah)',\n", + " 'why are you so god damn hot?',\n", + " 'i love you swedish girls',\n", + " 'jag älskar dig',\n", + " 'swedish girls x20',\n", + " 'got me go x3',\n", + " 'got me go crazy',\n", + " 'got me go crazy',\n", + " 'why are you so god damn hot?',\n", + " '(hahah) jag vet inte',\n", + " 'got me going crazy',\n", + " '(hahah)',\n", + " 'why are you so god damn hot?',\n", + " 'jag vet inte',\n", + " 'i love you swedish girls',\n", + " 'jag älskar dig',\n", + " 'i love you swedish girls',\n", + " 'jag älskar dig',\n", + " 'i love you swedish girls',\n", + " 'i love you swedish girls',\n", + " 'i love you swedish girls',\n", + " 'end',\n", + " 'i äventyrets starka sken',\n", + " 'rör vi oss runt en död planet',\n", + " 'vi släpper lös dina visioner',\n", + " 'tillsammans ser vi alla svar',\n", + " 'vi är där vi alltid har varit',\n", + " 'vår sökan efter dig är över',\n", + " 'fastän vår strävan aldrig börjat',\n", + " 'har vi nått resans mål till slut',\n", + " 'vi söker plats som ej kan finnas',\n", + " 'i drömmars värld där vi kan va',\n", + " 'trots att historien nu är över',\n", + " 'har sagan gett oss alla svar',\n", + " 'english translation:',\n", + " 'in the bright light of adventure',\n", + " 'we are moving towards a dead planet',\n", + " 'we release your visions',\n", + " 'together we see all answers',\n", + " 'we are where we have always been',\n", + " 'our search for you is over',\n", + " 'although our pursuit never begun',\n", + " 'we have reached the target of the journey',\n", + " 'we search for a place that cannot exist',\n", + " 'in the world of dreams where we can be',\n", + " 'although history now has ended',\n", + " 'the tale has given us all the answers',\n", + " \"it's a regional thing\",\n", + " \"you probably won't understand\",\n", + " \"it's nothing i am proud of\",\n", + " \"but it's part of who i am\",\n", + " 'try to see the humor',\n", + " 'the amount of self-contempt',\n", + " 'not finishing sentences',\n", + " 'my super confidence',\n", + " 'här är det bra',\n", + " 'nästan perfekt',\n", + " 'syrenerna har slagit ut',\n", + " 'och det är trettio grader lätt',\n", + " 'myggen har inte',\n", + " 'visat sig än',\n", + " 'älven ligger blank',\n", + " 'och blickstilla men',\n", + " 'trollmakten jag ser uppe i bergen',\n", + " 'försvinn du som lyser över mitt folk',\n", + " 'ge dig iväg! ge dig iväg!',\n", + " 'vår eviga pakt med natten skola ge oss liv',\n", + " 'efter ond bråd död, efter ond bråd död',\n", + " 'eld och blod för mitt folk',\n", + " 'mitt svärd skola törsta för blod',\n", + " 'blod utav evas svaga barn',\n", + " 'blod utav kristi stam',\n", + " 'blod utav krististam, utav krististam',\n", + " 'nattens eviga kraft svärdets kalla',\n", + " 'skärpa månens stilla ljus vinterns bleka skugga',\n", + " 'riv ditt hjärta, riv din själ, solens svärta',\n", + " 'jag är nattens träl',\n", + " 'trollmakten jag ser uppe i bergen',\n", + " 'försvinn!',\n", + " 'trollforce i see up in the hills',\n", + " 'vanish thou, who shine over my folk',\n", + " 'get away! get away!',\n", + " 'our everlasting pact with the night shall give us life',\n", + " 'after a violent end, after a violent end',\n", + " 'fire and blood for my folk',\n", + " 'my sword shall thirst for blood',\n", + " \"blood of eve's weak children\",\n", + " 'blood of the christian tribe',\n", + " 'blood of the christian tribe, blood of the christian tribe',\n", + " \"night's eternal strength, sword's cold\",\n", + " \"clarity of moon's calm light, winter's pale shade\",\n", + " \"tear your heart, tear your soul, sun's blackness\",\n", + " 'i am the slave of the night',\n", + " 'trollforce i see up in the hills',\n", + " 'vanish!',\n", + " 'minnen svunna stiger åter ur tidens vittrande stoft',\n", + " 'ur ledenstiger de fram, en gyllene flamma av hopp',\n", + " 'ett föraktets dova töcken, närd av nid och hån',\n", + " 'bländad av raseri, på hämndens vinger buren',\n", + " 'stigna som vredens herrar...',\n", + " 'vekas bane vilsnas ljus',\n", + " 'vanmakten inför vredens hand, speglar',\n", + " 'i blinda ögon. spröda och tomma, sprider etter',\n", + " 'med kluven tunga',\n", + " 'blodets stöma berusar och när, ger mig åt kampen',\n", + " 'skapare av vanvettets kaos, en ny tid är här...',\n", + " 'stigna som vredens herrar...',\n", + " 'vekas bane vilsnas ljus',\n", + " 'blodsmak i munnen, stillad äro hungern',\n", + " 'en ensam jakt för den valde allena. krönt om natten vid',\n", + " 'vanvettets tron. att ett rike föda ur de dödas aska',\n", + " 'stilla äro djuren i viljan och själen',\n", + " 'en nalkande vittring och vi ger oss hän',\n", + " 'den eviga kamp som tas av tiden',\n", + " 'men dock och vilde bringar segern',\n", + " 'som en viskande klinga, slår sanningens ord',\n", + " 'förnyelsens timma, vredens tid...',\n", + " 'stigna som vredens herrar...',\n", + " 'vekas bane vilsnas ljus',\n", + " 'english translation:',\n", + " 'lost memories arise again, from the withering stuff of time',\n", + " 'they step forth from the ranks, a golden flame of hope',\n", + " 'the dull haze of disdain. nourished by spite and scorn',\n", + " 'blinded by fury. borne on the wings of vengeance',\n", + " 'risen as the masters of wrath...',\n", + " 'bane of the weak, light of the lost',\n", + " 'the powerlessness before the hand of wrath, is mirrored in blind eyes',\n", + " 'brittle and empty, spreading venom, with a cloven tongue',\n", + " 'the sweetness of the blood inebriates and nourishes, gives me to the fight',\n", + " 'maker of the chaos of madness, a new time has come...',\n", + " 'risen as the masters of wrath...',\n", + " 'bane of the weak, light of the lost',\n", + " 'the taste of blood in my mouth, my hunger appeased',\n", + " 'a lonely hunt for the chosen alone',\n", + " 'crowned at night at the throne of madness',\n", + " 'to bear a kingdom out of the ashes of the dead',\n", + " 'still are the beasts in will and soul',\n", + " 'a scent drawing near, we indulge ourselves',\n", + " 'the eternal battle that time takes',\n", + " 'but the savage brings victory',\n", + " 'like a whispering blade',\n", + " 'the words of truth strike',\n", + " 'the hour of renewal, the age of wrath...',\n", + " 'risen as the masters of wrath...',\n", + " 'bane of the weak, light of the lost',\n", + " 'ropen av högsta fruktan',\n", + " 'slets ur människans strupe',\n", + " 'när kaoset kom från ett djup',\n", + " 'ett djup där mer än en skugga kan förnimmas',\n", + " 'ty jag är inte dödlig',\n", + " 'jag är din frukta & ångest',\n", + " 'när de levandes skrik är endast ett eko',\n", + " 'är jag den som leder er till evig pest & pina',\n", + " 'evig natt råder över människans sinn',\n", + " 'när satan lever genom er',\n", + " 'evig natt råder över den gode',\n", + " 'när himmelriket brinner',\n", + " 'eternal night',\n", + " 'the cries of highest fear',\n", + " 'ripped out of the human throat',\n", + " 'when the chaos came from a deep',\n", + " 'a deep where more than just a shadow can be sensed',\n", + " 'for i am not mortal',\n", + " 'i am your fear & angst',\n", + " 'when the screams of the living are but an echo',\n", + " 'i am the one who leads you to eternal plague & torment',\n", + " 'eternal night prevails over human minds',\n", + " 'when satan lives through you',\n", + " 'eternal night prevails over the good one',\n", + " 'when heaven burns',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'imma fuck a white bitch',\n", + " 'låt mig bjuda på en dödlig dos',\n", + " 'av ett gift som heter badkarsblues',\n", + " 'jag ska mota fan i grinden',\n", + " 'blåsa hål på högervinden',\n", + " 'men låt det vara en hemlighet',\n", + " 'biggles björk ska få en rymdraket',\n", + " 'över spegeln kryper imman',\n", + " 'där försvinner björk i dimman...',\n", + " 'genom moln av wash and go',\n", + " 'advertising told him so',\n", + " 'genom moln av wash and go',\n", + " 'advertising told him so',\n", + " 'låt mig bjuda på en liten grogg',\n", + " 'av patetisk disco-progg',\n", + " 'linje 3 och näverkängor',\n", + " 'radikalt i radhuslängor',\n", + " 'mjuka män i grön manchester',\n", + " 'apk på lill-semester',\n", + " 'men så ändras deras motto',\n", + " 'och nu gäller bingolotto!',\n", + " 'genom moln av wash and go',\n", + " 'advertising told him so',\n", + " 'genom moln av wash and go',\n", + " 'advertising told him so',\n", + " 'oi suomi, katso, sinun päiväs koittaa',\n", + " 'yön uhka karkoitettu on jo pois',\n", + " 'ja aamun kiuru kirkkaudessa soittaa',\n", + " 'kuin itse taivahan kansi sois',\n", + " 'yön vallat aamun valkeus jo voittaa',\n", + " 'sun päiväs koittaa, oi synnyinmaa',\n", + " 'oi nouse, suomi, nosta korkealle',\n", + " 'pääs seppälöimä suurten muistojen',\n", + " 'oi nouse, suomi, näytit maailmalle',\n", + " 'sä että karkoitit orjuuden',\n", + " 'ja ettet taipunut sä sorron alle',\n", + " 'on aamus alkanut, synnyinmaa',\n", + " 'swedish translation by joel rundt',\n", + " 'o, finland, se, din morgonljusning randas',\n", + " 'och natten skingras hotfullt mörk och lång',\n", + " 'hör lärkans röst med rymdens susning blandas',\n", + " 'snart rymden fylles av jubelsång',\n", + " 'se natten flyr och fritt du åter andas',\n", + " 'din morgon ljusnar, o fosterland',\n", + " 'stig högt, vårt land, som du ur natt dig höjde',\n", + " 'den dag dig väntar, fritt och öppet möt',\n", + " 'med samma kraft, med samma mod, du röjde',\n", + " 'när träldomsoket du sönderbröt',\n", + " 'förtrycket aldrig dig till jorden böjde',\n", + " 'ditt verk väntar, o fosterland',\n", + " 'english translation by keith bosley',\n", + " 'finland, behold, thy daylight now is dawning',\n", + " 'the threat of night has now been driven away',\n", + " 'the skylark calls across the light of morning',\n", + " 'the blue of heaven lets it have its way',\n", + " 'and now the day the powers of night is scorning:',\n", + " 'thy daylight dawns, o finland of ours!',\n", + " 'finland, arise, and raise towards the highest',\n", + " 'thy head now crowned with mighty memory',\n", + " 'finland, arise, for to the world thou criest',\n", + " 'that thou hast thrown off thy slavery',\n", + " \"beneath oppression's yoke thou never liest\",\n", + " \"thy morning's come, o finland of ours!\",\n", + " 'mäktige trollgud!',\n", + " 'mighty god of trolls',\n", + " 'du som sitter på frodad tron',\n", + " 'thou who sit on the usury throne',\n", + " 'ge oss kraft, ge oss mod',\n", + " 'grant us power, grant us braveness',\n", + " 'för vårt fällttåg till främmande blod',\n", + " 'for our carnage against alien blood',\n", + " 'med trollsvampens magi vi resar',\n", + " \"with the mushroom's charm we rise\",\n", + " 'som ett jordskret av hat vi strömma',\n", + " 'like an avalanche of hate we pour',\n", + " 'utav norrlands mark',\n", + " \"over nordland's realm\",\n", + " 'med vildsvin och varg',\n", + " 'on wild boars and wolves',\n", + " '//: månförmörkelse',\n", + " 'lunar eclipse',\n", + " 'världsförrutnelse ://',\n", + " \"world's decay\",\n", + " 'vi som nu har fått blodad tand',\n", + " 'we who sucked the blood',\n", + " 'vi kräva tillbaka urgammalt land',\n", + " 'we who conquer back ancient land',\n", + " 'vi som nu har fått blodad tand',\n", + " 'vi kräva tillbaka urgammalt land',\n", + " 'uråldrigt tecken skiner från dyn',\n", + " 'the ancient sign flickers out of the moor',\n", + " 'bländar kristenmannens trångsynta syn',\n", + " \"dazzling the christian's wicked view\",\n", + " 'uråldrigt tecken skiner från dyn',\n", + " 'bländar kristenmannens trångsynta syn',\n", + " 'vi som föd i grottans mörker',\n", + " \"we who were born in the cavern's darkness\",\n", + " 'vi som inget fosterland har',\n", + " 'we who owe no fatherland',\n", + " 'vi som ligger i fejd med allt',\n", + " 'we who declare war to everyone',\n", + " 'vi som kämpa med tass och tand',\n", + " ...]},\n", + " 'data': ['what does it mean when all is lost, but nothing is forgotten?',\n", + " 'sdakasůllllllllllllllld',\n", + " 'sad',\n", + " 'a',\n", + " 'sdas',\n", + " 'd',\n", + " 'asd',\n", + " 'a§důafddddddddddddddd',\n", + " 'f§asůf',\n", + " 'asů',\n", + " 'f§aůs',\n", + " 'fůas§',\n", + " 'fůa',\n", + " '§sfů',\n", + " '§afů',\n", + " 'a§sfůsa',\n", + " '§fůas§fsssssssssssssss§a',\n", + " 'ůfasů§',\n", + " 'faůs',\n", + " 'fůasfů',\n", + " 'as§fůas§',\n", + " 'ůf',\n", + " '§asůf§a',\n", + " 'skogen lever inga fångar tar',\n", + " 'den tar moder dotter och far',\n", + " 'ingen nåd ingen lämnas kvar',\n", + " 'minsta sår läcker av var',\n", + " 'byfolk försvinna ingen vet vart',\n", + " 'omkring står skogen tyst och svart',\n", + " 'slutet närmas de visa ser',\n", + " 'tecken i skyn prästefolk ber',\n", + " 'dödens lättja ut i skogen lura',\n", + " 'gömma sig bakom varje fura',\n", + " 'eldlika sken över himlabron',\n", + " 'så inleds hämnden av skogens tron',\n", + " 'finns ingen plats att gömma sig',\n", + " 'vart du än går skogen hittar dig',\n", + " 'hela världen ruttnar och svälter',\n", + " 'allt du trott se lögnen välter',\n", + " 'läs nu runor med magiska tal',\n", + " 'spå en ålder av ve och kval',\n", + " 'när mörka skuggor nu himmelen rider',\n", + " 'se då nalkas jaktens tid',\n", + " \"the forest's revenge\",\n", + " 'the forest takes no prisoners',\n", + " 'it kills mother, daughter and father',\n", + " 'no mercy, no one left',\n", + " 'tiniest cut boils with pus',\n", + " 'townsfolk disappear, no one knows where',\n", + " 'all around is the forest, quiet and dark',\n", + " 'the end is near, the wise say',\n", + " 'signs in the sky, churchgoers pray',\n", + " \"death's lethargy out in the forest lurks\",\n", + " 'hiding behind every tree',\n", + " \"fiery lights over heaven's bridge\",\n", + " \"so begins the vengeance of the forest's throne\",\n", + " 'there is nowhere to hide',\n", + " 'wherever you go, the forest will find',\n", + " 'the whole world decaying and starving',\n", + " 'everything you believed, see the lies fall flat',\n", + " 'read now, runes with magic numbers',\n", + " 'foresee an age of anguish and pain',\n", + " 'see dark shadows riding the sky',\n", + " 'then beckons, the age of the hunt',\n", + " 'hör vindar som vill fly',\n", + " 'se korpen i himmel av bly',\n", + " 'det är frosten som nalkas',\n", + " 'var björk och lind är nu kal',\n", + " 'i skogsråets grånande sal',\n", + " 'det är frosten som nalkas',\n", + " 'mot hårda tider det bär',\n", + " 'trollen dom huttrar och svär',\n", + " 'det är frosten som nalkas',\n", + " 'se tranan som nu fly',\n", + " 'mot varmare sydliger sky',\n", + " 'det är frosten som nalkas',\n", + " 'över land och hav',\n", + " 'sveper vinterns kalla vind',\n", + " 'snö, is och en bister kyla',\n", + " 'från en himmel så trind',\n", + " 'se näckens fingrar så blå',\n", + " 'hans polska nu långsamt gå',\n", + " 'det är frosten som nalkas',\n", + " 'kälen nu stormsteg tar',\n", + " 'tur att man fjärrvärme har',\n", + " 'det är frosten som nalkas',\n", + " '\"sky so full\"',\n", + " 'listen to the fleeing winds',\n", + " 'see the raven in the sky of led',\n", + " \"it's the frost that's approaching\",\n", + " 'every birch and linden, now bare',\n", + " 'in the greying halls of the lady-of-the-woods',\n", + " \"it's the frost that's approaching\",\n", + " 'hard times are a-coming',\n", + " 'the trolls shiver and swear',\n", + " \"it's the frost that's approaching\",\n", + " 'see the crane fleeing',\n", + " 'towards a warmer, southern sky',\n", + " \"it's frost approaching\",\n", + " 'over land and sea',\n", + " 'the cold wind of winter sweeps in',\n", + " 'snow, ice and bitter cold',\n", + " 'from a fat sky',\n", + " \"it's frost approaching\",\n", + " 'see the blue fingers of näcken (an evil water spirit)',\n", + " 'his reel goes slower',\n", + " \"it's frost approaching\",\n", + " 'the frost in the ground is coming fast',\n", + " \"we're lucky to have central heating\",\n", + " \"it's frost approaching\",\n", + " 'a little kiss',\n", + " \"is all i'm asking for\",\n", + " 'just a little kiss',\n", + " \"and i won't expect more\",\n", + " 'just a little kiss',\n", + " 'is all i need',\n", + " 'just a little kiss',\n", + " 'and i take my lead',\n", + " 'jag vill bara får känna dina läppar mot mina',\n", + " 'trygghet och värme i famnen vi finna',\n", + " 'låtsas för en gång att endast va min',\n", + " 'bara få känna din hand i min',\n", + " 'a little kiss',\n", + " 'to show me that you care',\n", + " 'just a little kiss',\n", + " 'show me that you dare',\n", + " 'just a little kiss',\n", + " 'and i set off to the sky',\n", + " 'just a little kiss',\n", + " 'give me wings, make me fly',\n", + " 'je veux sentir ton corps',\n", + " 'tout contre mon coeur',\n", + " \"et te savoir d'humeur à faire un effort\",\n", + " 'le baiser de doisneau sur les champs elysées',\n", + " 'ambiance tamisée',\n", + " \"un soir d'été\",\n", + " 'a little kiss',\n", + " \"is all i'm asking for\",\n", + " 'just a little kiss',\n", + " \"and i won't expect more\",\n", + " 'just a little kiss',\n", + " 'is all i need',\n", + " 'just a little kiss',\n", + " 'and i take my lead',\n", + " 'just want to feel your lips against mine',\n", + " 'the smell of your skin and thoughts of your mind',\n", + " 'just want to pretend to be your true love',\n", + " 'to caress your skin soft as a dove',\n", + " 'soft as a dove',\n", + " 'skrivet i blod, ristat i sten',\n", + " 'res er för fan låt er inte styras',\n", + " 'styras av deras tomma ord',\n", + " 'skrivet i blod ristat i sten',\n", + " 'hämndens timme är nu!',\n", + " 'hellre dö i blod, än att leva i skit!',\n", + " 'kämpa för fan, för det är det värt!',\n", + " 'written in blood, carved in stone',\n", + " 'rise against (for fuck sake) dont be guided',\n", + " 'guided by their empty words',\n", + " 'written in blood carved in stone',\n", + " 'vengeance hour is now!',\n", + " 'rather die in blood, than to live in shit!',\n", + " 'fight for hell, for it is worth it!',\n", + " 'kom storm, kom eld',\n", + " 'kom björnfot, berid sinne',\n", + " 'morgondagen kallar',\n", + " 'nordstjärna i blick',\n", + " 'valkyriors sång',\n", + " 'offer till enöga',\n", + " 'spjutets herre',\n", + " 'blot för seger',\n", + " 'till hravnáss bunden',\n", + " 'genom ed',\n", + " 'snart en seger vunnen',\n", + " 'för vår sed',\n", + " 'sigrblot',\n", + " 'kom gryning, kom vindar',\n", + " 'kom korpfot, bevinga sinne',\n", + " 'härar samlas',\n", + " 'vid hornets sång',\n", + " 'nordstjärnans barn',\n", + " 'vreden hettar',\n", + " 'stormvindar bär',\n", + " 'en dödens symfoni',\n", + " 'odin, allfader',\n", + " 'gugners bevingare, korpars herre',\n", + " 'giv oss seger',\n", + " 'som här samlats',\n", + " 'bärsärkens raseri',\n", + " 'river och sliter',\n", + " 'fallande bilor',\n", + " 'jämmer och skrik',\n", + " 'dånande horn',\n", + " 'sprucket stål',\n", + " 'bärsärkens raseri',\n", + " 'kom stiltje, kom regn',\n", + " 'gå björnfot, befria sinne',\n", + " 'english translation:',\n", + " 'come storm, come fire',\n", + " 'come bear foot, mount the mind',\n", + " 'tomorrow calls',\n", + " 'my gaze upon the north star',\n", + " 'the song of valkyries...',\n", + " 'sacrifice to one-eye, lord of the spear',\n", + " 'sacrifice for victory',\n", + " 'to hravnáss bound, through oath',\n", + " 'soon a victory won, for our ways',\n", + " 'sigrblot...',\n", + " 'come dawn, come winds',\n", + " 'come raven foot, winged mind',\n", + " 'hosts gather, to the song of the horn',\n", + " 'children of the north star...',\n", + " 'the wrath warms, storm winds carry',\n", + " 'a symphony of death',\n", + " 'the wrath of the berserk, slashes and tears',\n", + " 'falling axes, moaning and screams',\n", + " 'thundering horns, broken steel',\n", + " 'the wrath of the berserk...',\n", + " 'come doldrums, come rain',\n", + " 'go bear foot, release mind',\n", + " 'vi sitter här i venten o spelar lite dota. (i hear you man.)',\n", + " 'vi sitter här i venten o spelar lite dota. (i feel you man.)',\n", + " 'vi sitter här i venten o spelar lite dota',\n", + " 'o pushar på o smeker med moståndet vi leker',\n", + " 'vi sitter här i venten o spelar lite dota',\n", + " 'o springer runt o creepar o motståndet vi sleepar',\n", + " '(lets get it on)',\n", + " 'vi sitter här i venten o spelar lite dota',\n", + " 'o pushar på o smeker med moståndet vi leker',\n", + " 'vi sitter här i venten o spelar lite dota',\n", + " 'o springer runt o creepar o motståndet vi sleepar. (*x2*)',\n", + " '(whats happening) (d-d-d-d-d-d-dota)',\n", + " '**',\n", + " 'vi sitter här i venten o spelar lite dota. (i hear you man.)',\n", + " 'vi sitter här i venten o spelar lite dota. (i feel you man.)',\n", + " '**',\n", + " 'vi sitter här i venten o spelar lite dota',\n", + " 'o pushar på o smeker med moståndet vi leker',\n", + " 'vi sitter här i venten o spelar lite dota',\n", + " 'o springer runt o creepar o motståndet vi sleepar. *(x2)*',\n", + " '(lets get it on)',\n", + " 'vi sitter här i venten o spelar lite dota',\n", + " 'o pushar på o smeker med moståndet vi leker',\n", + " 'vi sitter här i venten o spelar lite dota',\n", + " 'o springer runt o creepar o motståndet vi sleepar. (x2)',\n", + " '(whats happening) (d-d-d-d-d-d-dota)',\n", + " '(dont worry, be happy)',\n", + " 'flod, våg',\n", + " 'runt din magi där världen faller, ta oss dit',\n", + " 'låt öppna ögon kan ej se, liv',\n", + " 'flod, våg',\n", + " 'vi står på toppen av din bergsrygg, ta oss dit',\n", + " 'vid havets makt runt kaktus jord, frihet',\n", + " 'röd, sol',\n", + " 'då världen fallit stiger solen, där är vi',\n", + " 'tillsammans finns vi där för allt, livet',\n", + " 'english translation:',\n", + " 'river, wave',\n", + " 'around your magic where the world falls, take us there',\n", + " 'let open eyes that cannot see, life',\n", + " 'river, wave',\n", + " 'we are standing on top of your summit, take us there',\n", + " 'by the power of the ocean around cactus earth, freedom',\n", + " 'red, sun',\n", + " \"when the world has fallen the sun rises, that's where we are\",\n", + " 'together we are there for everything, life',\n", + " 'árvas',\n", + " 'árvasduottar',\n", + " 'albma viidodat',\n", + " 'čalbmečiegas čalbmečihkii',\n", + " 'áibbas vielgat',\n", + " 'árvvas áhpi',\n", + " 'árvas',\n", + " 'lulličohkas dolle davás',\n", + " 'sieidevári ábi rastá',\n", + " 'niedái de vuomi čađa',\n", + " 'árvsii',\n", + " 'durbbonjávrris lea min gárdi',\n", + " 'gáissaš ja duo bálggesnjunni',\n", + " 'hearraláhku',\n", + " 'gođiid lusa',\n", + " 'bárkái',\n", + " 'heaikkabávtti ferte váruhit',\n", + " 'bahá gahččat go lea mierká',\n", + " 'rissajávrri bassi rávddut geasuhit',\n", + " 'liigasis doppe lei orohat',\n", + " 'áhkku unnin stoagai giettis',\n", + " 'dál lea ávdin',\n", + " 'ruoktut vieččaimet gierresiid',\n", + " 'english translation:',\n", + " 'tundra of árvas',\n", + " 'árvasduottar',\n", + " 'such a plentiful domain',\n", + " 'from the corner of one eye to the other',\n", + " 'wholly white',\n", + " 'a sumptuous sea',\n", + " 'árvas',\n", + " 'from lulličohkka we go west',\n", + " 'cross the sea of sieidevárri',\n", + " 'through niedá and the valleys',\n", + " 'to árvas',\n", + " 'our corral is in durbbonjávri',\n", + " 'there is gáissáš and bálggesnjunni',\n", + " 'hearraláhku',\n", + " 'to the turf huts',\n", + " 'in bárká',\n", + " 'heed yourself on heaikkabákti',\n", + " 'avoid stumbles in the fog',\n", + " 'the hallowed char draw you to rissajávri',\n", + " 'liigas held a dwelling',\n", + " 'grandmother used to play in the field',\n", + " 'it is now left abandoned',\n", + " 'we took home the sleds',\n", + " 'd-d-d-d (dum dum dollar djungel)',\n", + " 'the jungle drums will call you all',\n", + " 'ooooh....',\n", + " 'dum-dum-dollar-djungel sover aldrig sött',\n", + " 'den vackraste mardröm som du mött',\n", + " 'dum-dum-dollar-djungel cocainekuvös',\n", + " 'allting som du aldrig behövt',\n", + " 'ooooh....',\n", + " 'dum-dum-dollar-djungel bubbelgumblues',\n", + " 'här kokar bensinen i ditt blod',\n", + " 'dum-dum-dollar-djungel tv-terrorland',\n", + " 'allting som du aldrig trodde fanns',\n", + " 'ooooh....',\n", + " 'dum-dum-dollar-djungel frihetsfabrik',\n", + " 'dum-dum-dollar-djungel cocainekuvös',\n", + " 'dum-dum-dollar-djungel',\n", + " 'dum-dum-dollar-djungel graffitigatorsglam',\n", + " 'dum-dum-dollar-djungel',\n", + " 'the jungle drums will call you all',\n", + " 'come and watch the rise and fall',\n", + " 'dum-dum-dollar-djungel',\n", + " 'dum-dum-dollar-djungel 48 timmars dygn',\n", + " 'dum-dum-dollar-djungel heroinservice limousineservice',\n", + " 'dum-dum-dollar-djungel',\n", + " 'kom in i mitt djupa sinn',\n", + " 'låt din vilja bli min lag',\n", + " 'besätt min själ med rent hat',\n", + " 'min handlingar styrs till min sista dag',\n", + " 'må mörkret vara för evigt',\n", + " 'låt ljuset aldrig nå oss mer',\n", + " 'dränk all glädje dränk all sorg',\n", + " 'förpestade blir bara fler & fler',\n", + " 'öppna ditt sinne för ondskan',\n", + " 'sänd dom kristna åt dess öde',\n", + " 'bränn ner alla kyrkor till aska',\n", + " 'sälj din själ till döden',\n", + " 'deep mind',\n", + " 'come into my deep mind',\n", + " 'let your will be my command',\n", + " 'possess my soul with pure hatred',\n", + " 'my actions are controlled until my last day',\n", + " 'may the darkness last forever',\n", + " 'never let the light reach us again',\n", + " 'drown all joy drown all sorrow',\n", + " 'the poisoned only become more and more',\n", + " 'open your mind to the evil',\n", + " 'send the christians to their fate',\n", + " 'burn all churches to the ground',\n", + " 'sell your soul to death',\n", + " 'kolöga rotfast tand...',\n", + " 'som trädet i grund och stenig mark',\n", + " '-trolltand...',\n", + " 'gammal, klok, urbergets vän...',\n", + " 'vriden som martall på vindpinad häll',\n", + " 'skyr solen om dagen, flyr människors...',\n", + " 'ett brakande dån bräcker kolögas sömn',\n", + " '-vadan detta skrän? som en törn i min ställ',\n", + " 'vem är den niding som gäckar min sömn?',\n", + " 'skyr solen om dagen, flyr människors...',\n", + " 'i blint raseri med dunder och brak',\n", + " 'banar sig kolöga fram...',\n", + " 'med ett vredesvrål mot murar av sten',\n", + " 'som krossas i hans hand...',\n", + " 'river och sliter, tuggar och biter',\n", + " 'dammet yr i hans vildsinta dans...',\n", + " 'folk och fä flyr snabbt sin väg',\n", + " 'bort från trollets brakande kaos...',\n", + " 'klocka av guld mot himlen for',\n", + " 'krossandes tornet på vägen ner',\n", + " '-slut på skränet och det fördömda brölet',\n", + " 'den tar jag hem, där kokar snart ölet...',\n", + " 'english translation:',\n", + " 'charcoal-eye, root-deep tooth...',\n", + " 'like a tree on shallow and stony ground',\n", + " '-troll-tooth...',\n", + " 'ancient, wise, friend of the mountain...',\n", + " 'twisted like the pine on weathered rock',\n", + " 'shuns the sunlight in the day, flees the lands of men...',\n", + " \"a roaring rumble shatters charcoal-eye's sleep\",\n", + " '-whence this holler? like a thorn in my soul',\n", + " 'who is this evil-doer that frustrates my slumber?',\n", + " 'shuns the sunlight in the day, flees the lands of men...',\n", + " 'in blind fury, crashing along',\n", + " 'charcoal-eye charges forth...',\n", + " 'with a roar of wrath against walls of stone, that break in his hand...',\n", + " 'he rips and tears, he chews and bites',\n", + " 'the dust whirling with his savage dance...',\n", + " 'man and beast flee in haste',\n", + " \"away from the troll's raving madness...\",\n", + " 'the golden bell went to the sky',\n", + " 'crushing the tower on its way down',\n", + " \"-that's the end of that holler and damned roaring\",\n", + " \"i'll take this home with me, where soon the ale will be brewing...\",\n", + " 'i norr, betäcker den första frosten',\n", + " 'i söder faller de första löven',\n", + " 'tid att vandra är nu...',\n", + " 'en tidlos ström av kraft',\n", + " 'vandrar med sinnet denna natt...',\n", + " 'i öster står månen i sinn full',\n", + " 'i väster, svinner sunnas gyllene famn',\n", + " 'den nya dagen skall snart gry...',\n", + " 'en tidlos ström av kraft',\n", + " 'vandrar med sinnet denna natt...',\n", + " 'i. strömt är altet, visdomens kyla',\n", + " 'i djupet begraven, ett dunkelt ord',\n", + " 'ii. söker i mullen, vid bergets fot',\n", + " 'hör mig rådare, en glödande runa röd',\n", + " 'ett kall ifrån ovan, drar mig iväg',\n", + " 'stiger ur jorden, mot stärnornans glans...',\n", + " 'vandrar i väven, spunnen av den tre',\n", + " 'känner glöden, från runornas megin...',\n", + " 'i öster, står sunna i sin full',\n", + " 'i väster, svinner månens bleka famn',\n", + " 'tid att vila är nu...',\n", + " 'english translation:',\n", + " 'in the north the first frost covers',\n", + " 'in the south the first leaves fall',\n", + " 'the time to wander is now...',\n", + " 'a timeless stream of force',\n", + " 'wanders with the mind this night...',\n", + " 'in the east the moon is full',\n", + " 'in the west the golden embrace of sunna dwindles',\n", + " 'the new day is about to dawn...',\n", + " 'a timeless stream of force',\n", + " 'wanders with the mind this night...',\n", + " 'flowing is the universe, the cold of wisdom',\n", + " 'buried in the deep, a dim word',\n", + " 'looking in the earth, at the foot of the mountain',\n", + " 'hear me fey, a glowing red rune',\n", + " 'a calling from above, pulls me away',\n", + " 'rises from the earth, towards the brilliance of the stars...',\n", + " 'wanders in the web, woven by the three',\n", + " 'feel the embers, from the magic of the runes...',\n", + " 'in the east sunna is full',\n", + " 'in the west the pale embrace of the moon dwindles',\n", + " 'the time to rest is now...',\n", + " 'världsfinansernas kollaps - the collapse of the world finances',\n", + " 'du säger du ger liv, men tar ifrån oss allt',\n", + " 'vi har inget val, ingen framtid',\n", + " 'din lögn är vår tro, vi offrar tusenfalt',\n", + " 'vi ber för hjälp men ingen lyssnar',\n", + " 'ni ljuger för att skydda er profit',\n", + " 'jorden',\n", + " 'allt ni gör ska bli till kredit',\n", + " 'våldtas',\n", + " 'ni säger vi har ett val, men vi armas ut',\n", + " 'vårt val är misär, total apati',\n", + " 'ni bryter ner en värld men blundar för döden',\n", + " 'den hjälp som kommer den lobotomerar',\n", + " 'we were promised that the neo-liberal market would give us freedom, jobs and equality. it has given us redundancy, poverty and the dismantling of our living standard. bonuses and expensive retirement packages are given to the already rich bastards that drain us. idiots who never pulled the brake',\n", + " 'jag kommer in från regnet',\n", + " 'hungrig och våt',\n", + " 'jag ligger här på sängen',\n", + " 'med stövlarna på',\n", + " 'vad gör jag här i stan',\n", + " 'jag talar inte språket längre',\n", + " 'vad gör jag här',\n", + " 'där alla vackra kvinnor hänger',\n", + " 'i come in from the rain',\n", + " 'hungry and wet',\n", + " 'i lie here on the bed',\n", + " 'with my boots on',\n", + " 'what am i doing here in town',\n", + " \"i don't speak the language anymore\",\n", + " 'what am i doing here',\n", + " 'where all the beautiful women hang out',\n", + " 'jag kommer in från mörkret',\n", + " 'blint som ett nyfött barn',\n", + " 'jag kommer från en plats',\n", + " 'norr om stan',\n", + " 'vad gör jag här',\n", + " 'jag har glömt hur man älskar',\n", + " 'bandet spelar upp',\n", + " 'men jag har levt för länge utan sällskap',\n", + " 'i come in from the dark',\n", + " 'blind as a newborn child',\n", + " \"i'm coming from a place\",\n", + " 'north of town',\n", + " 'what am i doing here',\n", + " \"i've forgotten how to love\",\n", + " 'the band starts to play',\n", + " \"but i've lived too long without company\",\n", + " 'jag kommer in från kylan',\n", + " 'jag åkte mot himmelen i väst',\n", + " 'jag fann ett stort hus med rum att hyra',\n", + " 'nu behöver jag en docktor eller präst',\n", + " 'allt är sig likt',\n", + " 'samma smuts, samma slavar',\n", + " 'gud jag behöver din röst',\n", + " 'i dessa dagar i come in from the cold',\n", + " 'i drove toward the sky in the west',\n", + " 'i found a big house with rooms for rent',\n", + " 'now i need a doctor or a priest',\n", + " \"everything's the same\",\n", + " 'same filth, same slaves',\n", + " 'god, i need your voice',\n", + " 'in these days',\n", + " 'jag står och ser ut genom fönstret',\n", + " 'jag hör regnet och allting är svart',\n", + " 'jag låter frågorna hänga i mörkret',\n", + " 'ingen svarar väl ändå inatt i stand and look out the window',\n", + " 'i hear the rain and everything is black',\n", + " 'i let the questions hang in the darkness',\n", + " \"but i guess no one's answering tonight\",\n", + " 'jag kommer in från regnet',\n", + " 'jag måste ut igen',\n", + " 'jag kommer in för pengar',\n", + " 'frågan är: hur, var, när och vem?',\n", + " 'jag rör mig fort',\n", + " 'jag har det i mitt blod',\n", + " 'hon såg det i mina kort',\n", + " 'mitt hem och mitt bort',\n", + " 'i come in from the rain',\n", + " 'i have to go out again',\n", + " 'i come in for money',\n", + " 'the question is: how, where, when and who?',\n", + " 'i move fast',\n", + " 'i have it in my blood',\n", + " 'she saw it in my cards',\n", + " 'my home and my table',\n", + " 'jag rör mig mot ett land',\n", + " 'mellan sjö och himmel',\n", + " 'mellan fingrarna på min hand',\n", + " 'där törsten brinner',\n", + " 'mellan vråken och fälten',\n", + " 'mellan månen och ljusets låga',\n", + " 'mellan tystnaden och hjärtats slag',\n", + " 'mellan det vackra och plågan i move toward a land',\n", + " 'between sea and sky',\n", + " 'between the fingers of my hand',\n", + " 'where the thirst is burning',\n", + " 'between the buzzards and the fields',\n", + " \"between the moon and the light's glow\",\n", + " 'between the silence and the heartbeats',\n", + " 'between the beauty and the torment',\n", + " 'en ensam skugga nu ridit fram',\n", + " 'nu stigit herren av nordens hemliga folk',\n", + " 'han stirrar mot fjällen, han lyfter sin arm',\n", + " 'drakblod koka i dennes barm',\n", + " 'kung över folken av troll, hornkrönt står han',\n", + " 'härskare utav allt ur mörkrets famn',\n", + " 'de samlas ur skogens svarta natt',\n", + " 'de vandra från fjäll och sjö',\n", + " 'vätte och troll, svartalf och varg',\n", + " 'björnens ande och havets mö',\n", + " 'vid trolltronens fot nu samlas de',\n", + " 'de hopas i skock för att alla se',\n", + " 'här samlas troll, oknytt och rå',\n", + " 'de jubla och fira så gott de må',\n", + " 'snart hörs ett muller, ett mäktigt dån',\n", + " 'så varslas döden av jehovas son',\n", + " 'så stiga fram denna hedniska här',\n", + " 'och rivfader, härskaren, fram de bär...',\n", + " 'the horn crowned king (rivfaders throne)',\n", + " 'a lonely shadow now riding forward',\n", + " 'now revealed is the lord of the hidden people in the north',\n", + " 'he stares at the mountains, he lifts his arm',\n", + " \"dragon's blood would boil in his grip\",\n", + " 'king of the trolls, horns crowned he stands',\n", + " \"regent of everything in darkness' embrace\",\n", + " 'they gather from the black night of the forest',\n", + " 'they wander from mountain peaks and snow',\n", + " 'wight and troll, black elf and wolf',\n", + " \"the bear's spirit and the sea's maiden\",\n", + " 'at the foot of the throne of trolls the now gather',\n", + " 'they congregate in masses to see',\n", + " 'here gather trolls, rugged and raw',\n", + " 'they celebrate and hail as loud as they can',\n", + " 'soon a rumble is heard, a majestic roar',\n", + " \"so the death of jehovah's children is brought on\",\n", + " 'so treading forward, this pagan throng',\n", + " 'and rivfader, the regent, they bear ever forward',\n", + " ':',\n", + " 'mr. bergman, let me welcome you to hollywood and to',\n", + " 'hollywood american studio',\n", + " 'svenson will translate for us and i hope not add any zeros in the process!',\n", + " 'mr. bergman, how are you?',\n", + " 'herr bergman, hur står det till?',\n", + " 'something we can get for you?',\n", + " 'kan vi bjuda er på något?',\n", + " 'some ramlösa, like some ice?',\n", + " 'lite ramlösa, önskas is?',\n", + " 'my name’s gerald geoffrey weiss',\n", + " 'jag heter gerald geoffrey weiss',\n", + " 'to your right is mr. brown',\n", + " 'här till höger har vi mr brown',\n", + " 'mr. clay, and mrs. down',\n", + " 'mr clay och mrs down',\n", + " 'i know you know english, true',\n", + " 'jag vet att ni kan engelska',\n", + " 'svensson här tolkar ändå',\n", + " 'allt till svenska för er skull',\n", + " 'svensson, though, will translate, too',\n", + " 'into swedish, just for you',\n", + " 'into swedish, just for you',\n", + " 'mr. bergman, we’re not hicks',\n", + " 'herr bergman, vi är inga bönder',\n", + " 'but we must deliver kicks',\n", + " 'men vi måste skapa underhållning',\n", + " 'still there is some middle ground',\n", + " 'men det finns förhandlingsmån',\n", + " 'hollywood can be your town',\n", + " 'we will never let you down',\n", + " 'let me cut right to the chase',\n", + " 'låt mig gå rakt på sak',\n", + " 'we need you to help erase',\n", + " 'vi behöver er hjälp att sudda ut',\n", + " 'image problems, self-imposed',\n", + " 'självförvållade imageproblem',\n", + " 'art and commerce, never close',\n", + " 'you can bring us both of those',\n", + " 'works of art can also work',\n", + " 'ett konstverk kan gå hem',\n", + " 'for some midwest creepy jerk',\n", + " 'hoes idioterna på landet',\n", + " 'in return we’ll pay your way',\n", + " 'i gengäld betalar vi vad vad det kostar',\n", + " 'make the film in your own way',\n", + " 'all the way you’ll have your say',\n", + " 'monika, now that was great',\n", + " 'monika var fantastisk',\n", + " 'summer interlude, so great',\n", + " 'sommarlek likaså',\n", + " 'were you just a bit surprised',\n", + " 'blev ni inte lite förvånad',\n", + " 'cannes gave you that special prize',\n", + " 'get dear ingmar some more ice',\n", + " 'smiles of a summer night',\n", + " 'sommarnattens leende',\n", + " 'hope i got the title right',\n", + " 'hoppas jag fick titeln rätt',\n", + " 'why not take a quantum leap',\n", + " 'det är dags att ta nästa steg',\n", + " 'you still haven’t hit your peak',\n", + " 'we can help you reach your peak',\n", + " 'think it over, overnight',\n", + " 'sov på saken',\n", + " 'do what you think’s really right',\n", + " 'gör det ni tror är det rätta',\n", + " 'you help us and we help you',\n", + " 'hjälp oss och vi hjälper er',\n", + " 'more ramlösa, well adieu',\n", + " 'well adieu',\n", + " 'här ramlösa. tack, adjö',\n", + " 'bububu banzibar bananas',\n", + " 'bububu by bus best beast bets',\n", + " 'bububu by boat bad bats bast',\n", + " 'bububu be bad beuys',\n", + " 'bububu be bikers',\n", + " 'bububu born bo bite bhe bullet',\n", + " \"bububu birthplace bof bub' ubub\",\n", + " 'bububu boliness boyalty',\n", + " 'bububu bolefald bruitbakes',\n", + " 'bububu bornelius bon back',\n", + " 'bububu bhou bhat bhou bilst',\n", + " 'bububu batshit brofessors bull',\n", + " 'bububu bane bof bhe bikers',\n", + " 'bububu bassholes bung bhe bit',\n", + " 'bububu boom boom boom',\n", + " 'bububu bad boy bikers bookface',\n", + " 'bububu brothel broth beaters',\n", + " 'bububu bitch but bhe ball boom',\n", + " 'bububu batch boming bast',\n", + " 'bububu bass bombing',\n", + " 'bububu bis bali boga',\n", + " 'bububu but bhe best',\n", + " 'bububu bake bhe brain',\n", + " 'bububu beans « blute » boot boot',\n", + " 'bububu bøkkaband',\n", + " 'bububu brünerbøkka',\n", + " 'bububu be berlin',\n", + " ':|: byssan lull, koka kittelen full',\n", + " 'där kommer tre vandringsmän på vägen',\n", + " 'den ene, ack så halt',\n", + " 'den andre, o så blind',\n", + " 'den tredje säger alls ingenting',\n", + " ':|: byssan lull -- boil the full kettle',\n", + " 'three wanderers are coming down the road',\n", + " 'the first one is limping',\n", + " 'the second one is blind',\n", + " \"the third one doesn't say anything\",\n", + " ':|: byssan lull, koka kittelen full',\n", + " 'på himmelen vandra tre stjärnor',\n", + " 'den ena är så vit',\n", + " 'den andra är så röd',\n", + " 'den tredje är månen den gula',\n", + " ':|: byssan lull -- boil the full kettle',\n", + " 'in the sky three stars are wandering. :|:',\n", + " 'the first one is so white',\n", + " 'the second one is so red',\n", + " 'the third one is the yellow moon',\n", + " ':|: byssan lull, koka kittelen full',\n", + " 'där blåser tre vindar på haven, :|:',\n", + " 'på stora ocean',\n", + " 'på lilla skagerack',\n", + " 'och långt upp i bottniska viken',\n", + " ':|: byssan lull -- boil the full kettle',\n", + " 'three winds are blowing at sea. :|:',\n", + " 'one the great ocean',\n", + " 'on the little skagerrak',\n", + " 'and far up on the gulf of bothnia',\n", + " ':|: byssan lull, koka kittelen full',\n", + " 'där segla tre skutor på vågen. :|:',\n", + " 'den första är en bark',\n", + " 'den andra är en brigg',\n", + " 'den tredje har så trasiga segel',\n", + " ':|: byssan lull -- boil the full kettle',\n", + " 'three sailing ships are sailing here. :|:',\n", + " 'the first one is a barque',\n", + " 'the second one is a brig',\n", + " 'the third one has ragged sails',\n", + " ':|: byssan lull, koka kittelen full',\n", + " 'sjökistan har trenne figurer. :|:',\n", + " 'den första är vår tro',\n", + " 'den andra är vårt hopp',\n", + " 'den tredje är kärleken, den röda',\n", + " ':|: byssan lull -- boil the full kettle',\n", + " 'the treasure chest has three figures. :|:',\n", + " 'the first one is our faith',\n", + " 'the second one is hope',\n", + " 'the third one is the red love',\n", + " ':|: byssan lull, koka kittelen full',\n", + " 'tre äro tingena de goda. :|:',\n", + " 'den första är gud far',\n", + " 'den andra är hans son',\n", + " 'den tredje mild jungfru maria',\n", + " ':|: byssan lull -- boil the full kettle',\n", + " 'there are three good things. :|:',\n", + " 'the first one is god our father',\n", + " 'the second is his son',\n", + " 'the third one is the mild virgin mary',\n", + " 'ja, mitt herrskap, jag är oerhört glad över att få samarbeta med',\n", + " 'ni vet',\n", + " 'ni vet',\n", + " 'ni vet',\n", + " 'och nu, ingen mindre än',\n", + " 'ni vet',\n", + " 'ni vet',\n", + " 'ni vet',\n", + " 'ni vet',\n", + " \"look into my eyes and tell me that it's alright\",\n", + " 'even though i know that you will never be mine',\n", + " \"walk and talk, what we're not, stay here for good\",\n", + " \"we're just wasting time but that is understood\",\n", + " \"look into my, tell me that it's\",\n", + " 'even though i know that you will never be',\n", + " \"walk and talk, what we're, stay here for\",\n", + " \"we're just wasting time but that is underst-\",\n", + " \"look into my eyes and tell me that it's alright\",\n", + " 'even though i know that you will never be mine',\n", + " \"walk and talk, what we're not, stay here for good\",\n", + " \"we're just wasting time but that is understood\",\n", + " \"look into my eyes and tell me that it's alright\",\n", + " 'even though i know that you will never be mine',\n", + " \"walk and talk, what we're not, stay here for good\",\n", + " \"we're just wasting time but that is understood\",\n", + " 'ja, mitt herrskap, jag är oerhört glad över att få samarbeta med']},\n", + " 'rock': {'meta': {'train_data': ['et hav i en konkylie',\n", + " 'en nervebunt i stål',\n", + " 'ti tusenbein på line',\n", + " 'en påtatt maserati',\n", + " 'speed e amfetamin',\n", + " 'ti tusenbein som flire',\n", + " 'en monoton fanfare',\n", + " 'i isbitkald maskin',\n", + " 'ti tusenbein som vare',\n", + " 'mitt liv som hund',\n", + " 'saken i taken den stirrar rakt på mig',\n", + " 'spindeln i väven den krälar rakt från mig',\n", + " 'rösten i huvudet den skriker och ryker',\n", + " 'barnen i salen dom stirrar rakt på mig',\n", + " 'känslan av döden den luktar sig fram',\n", + " 'rädslan för skörden den tar sig an',\n", + " 'målet med livet det vägrar vara sant',\n", + " 'mörkret i sinnet det hoppar sig fram',\n", + " 'döda döda döda, allt från mig',\n", + " 'döda, döda, döda allt som når mig',\n", + " 'döda, döda, döda allt från mig',\n", + " 'döda, döda, döda allt som når mig',\n", + " 'saken i taken den stirrar rakt på mig',\n", + " 'spindeln i väven den krälar rakt från mig',\n", + " 'rösten i huvudet den skriker och ryker',\n", + " 'barnen i salen dom stirrar rakt på mig',\n", + " 'känslan av döden den luktar sig fram',\n", + " 'rädslan för skörden den tar sig an',\n", + " 'the thing on the roof is staring right at me',\n", + " 'the spider in the webs is crawling away from me',\n", + " 'the voice in my head is screaming and smoking',\n", + " 'the kids in the hall is staring right at me',\n", + " \"the feeling of death is smelling it's way forward\",\n", + " 'the fear for harvest is approaching',\n", + " 'the goal of life refuses to be true',\n", + " 'the darkess in the sense is jumping forward',\n", + " 'kill me, kill me, kill everything from me',\n", + " 'kill me, kill me, kill everything that reaches me',\n", + " 'kill me, kill me, kill everything from me',\n", + " 'kill me, kill me, kill everything that reaches me',\n", + " 'the thing on the roof is staring right at me',\n", + " 'the spider in the webs is crawling away from me',\n", + " 'the voice in my head is screaming and smoking',\n", + " 'the kids in the hall is staring right at me',\n", + " \"the feeling of death is smelling it's way forward\",\n", + " 'the fear for harvest is approaching',\n", + " 'mörkret',\n", + " 'kom så ska jag visa dig',\n", + " 'tusen sprickor i vårt tempel',\n", + " 'misstron ökar',\n", + " 'öknar växer',\n", + " 'växter vissnar',\n", + " 'men du visste redan',\n", + " 'se dig omkring och tänk',\n", + " 'är det här jag? är det här allt?',\n", + " 'om jag kunde skulle jag',\n", + " 'be för dig ikväll',\n", + " 'not shedding new light',\n", + " 'come along with me and i will show',\n", + " 'you',\n", + " 'thousands of cracks in our temple',\n", + " 'increasing distrust',\n", + " 'deserts growing',\n", + " 'plants wither',\n", + " 'but you already knew',\n", + " 'look around and ask yourself',\n", + " 'is this me? is this all?',\n", + " 'i would pray for you this evening',\n", + " 'if i could',\n", + " 'var inte rädd, min vän',\n", + " 'jag har närt drömmar',\n", + " 'har du?',\n", + " 'min blick är långt borta',\n", + " 'är din?',\n", + " 'jag är beredd att offra det mesta',\n", + " 'för något annat',\n", + " 'är du?',\n", + " 'beredd?',\n", + " 'fånga upp mig',\n", + " 'håll fast vid tanken',\n", + " 'du är inte bunden',\n", + " 'en av oss föddes på andra sidan',\n", + " 'berg är inte gränser',\n", + " 'vad är det du är rädd för?',\n", + " 'vad är det du försvarar?',\n", + " 'vad har du att förlora?',\n", + " \"don't be afraid, my friend\",\n", + " 'i have been nurturing dreams',\n", + " 'have you?',\n", + " 'my gaze is far away',\n", + " 'is yours?',\n", + " 'i am willing to sacrifice most things',\n", + " 'for something different',\n", + " 'are you?',\n", + " 'willing?',\n", + " 'take me in',\n", + " 'hold on to the thought',\n", + " 'you are not bound',\n", + " 'one of us was born on the other side',\n", + " 'mountains are not borders',\n", + " 'what is it you are afraid of?',\n", + " 'what is it you are defending?',\n", + " 'what have you got to lose? see less',\n", + " 'the night is set, the path is laid',\n", + " 'conjure the magic on your stay',\n", + " \"get ready for travel but don't be late\",\n", + " 'mind the gap, you’re on your way',\n", + " 'tåget åker till dödens hamn',\n", + " 'vi lämnar ingen här',\n", + " 'tåget åker till dödens hamn',\n", + " 'säkra biljett, håll min hand',\n", + " 'there’s no return, there’s no delay',\n", + " 'smooth travel for days and days',\n", + " 'the final station is almost here',\n", + " \"the witch's power is drawing near\",\n", + " 'tåget åker till dödens hamn',\n", + " 'vi lämnar ingen här',\n", + " 'tåget åker till dödens hamn',\n", + " 'säkra biljett, håll min hand',\n", + " 'det är absolut',\n", + " 'dörren stängs, inför resan',\n", + " 'tåget åker till dödens hamn',\n", + " 'vi lämnar ingen här',\n", + " 'tåget åker till dödens hamn',\n", + " 'säkra biljett, allesammans',\n", + " 'tåget åker till dödens hamn',\n", + " 'vi lämnar ingen här',\n", + " 'tåget åker till dödens hamn',\n", + " 'säkra biljett, håll min hand',\n", + " '\"as i was going up the stair',\n", + " 'i met a man who wasn’t there',\n", + " 'he wasn’t there again today',\n", + " 'i wish, i wish, he’d go away\"',\n", + " 'åter till mörkret',\n", + " 'hack i häl med den bitterljuva smaken av förlust',\n", + " 'aldrig, aldrig mer ska jag förneka mitt öde',\n", + " 'aldrig, aldrig mer ska jag sträva efter ett lugn',\n", + " 'jag avskyr allt det liv som omger mig',\n", + " 'den förpestade jävla luft jag tvingas att andas',\n", + " 'dagar ut och nätter in faller jag i bedjan',\n", + " 'i en bön',\n", + " 'för livets förfall',\n", + " 'för livets förfall',\n", + " '----english translation----',\n", + " 'back to the dark',\n", + " 'sweet taste of loss',\n", + " 'never, never again i shall deny my destiny',\n", + " 'never, never again i shall strive for calm',\n", + " 'i hate all the life that surrounds me',\n", + " 'the stinking fucking air i am forced to breath',\n", + " 'all day and night i pray',\n", + " 'in a pray',\n", + " 'for the decline of life',\n", + " 'for the decline of life',\n", + " '\"idag i blom, imorgon maskar\"',\n", + " '\"idag en man, imorgon ingen\"',\n", + " '\"idag gott kalas, imorgon på likbåren\"',\n", + " '\"igår strålade mitt ansikte',\n", + " 'idag är det rynkigt, imorgon dött\"',\n", + " '\"sjuk man, evig man\"',\n", + " '\"de unga kan dö, de gamla måste\"',\n", + " '\"döden lurar överallt',\n", + " 'han kommer till fest och bal\"',\n", + " '\"döden gör hög och låg jämlika\"',\n", + " '\"mitt i livet är vi i döden\"',\n", + " '\"när man lever duger man inte',\n", + " 'när man är död prisas man\"',\n", + " '\"i det bittra finns det goda',\n", + " 'och i det sötaste finns giftet\"',\n", + " '\"läkarens misstag täcker jorden över\"',\n", + " '\"mångas olycka, allas tröst\"',\n", + " '\"de lindrar att veta att andra också lider\"',\n", + " 'english translation:',\n", + " 'today blossoming, tomorrow worms',\n", + " 'today a man, tomorrow no one',\n", + " 'today a happy celebration, tomorrow on the hospital stretcher',\n", + " 'yesterday my face radiated',\n", + " \"today it's wrinkled, tomorrow it's dead\",\n", + " 'sick man, eternal man',\n", + " 'the young can die, the old has to',\n", + " 'death is lurking everywhre',\n", + " 'he comes to party and prom',\n", + " 'death makes highs and lows equal',\n", + " 'in the middle of life we \\u200b\\u200bare inside death',\n", + " \"when you live you're not enough\",\n", + " \"when you're dead you're celebrated\",\n", + " 'in the bitter lies the good',\n", + " 'and in the sweetest is the poison found',\n", + " 'the doctors mistake covers the earth',\n", + " \"many peoples misfortune, everyone's comfort\",\n", + " 'it relieving knowing that others also suffer',\n", + " 'clashing wills',\n", + " 'the rise of the powerful',\n", + " 'limits are erased',\n", + " 'as i strive for the top',\n", + " 'walk through dark to see the light',\n", + " 'i was born to win this fight!',\n", + " 'challenging the iron fist',\n", + " 'i won’t go down',\n", + " 'i’m not defined by my',\n", + " 'bloodline',\n", + " 'i’ll seize all pride',\n", + " 'ignite the fire inside',\n", + " 'i’m not defined by my',\n", + " 'bloodline',\n", + " 'i’ll seize all pride',\n", + " 'vägen jag ser framför mig nu',\n", + " 'är kantad av motståndare',\n", + " 'men jag vandrar vidare',\n", + " 'och inget stoppar mig',\n", + " 'ty kraften är min',\n", + " 'i rättvisans namn',\n", + " 'sanna mina ord',\n", + " 'segern blir min till slut',\n", + " 'and as my limbs laid rotting in the valleys of black and blight',\n", + " 'i saw a burning angel descend from a burning throne',\n", + " 'to fill my toothless mouth with its burning blood',\n", + " 'and prophesized new life upon my mouldered bones',\n", + " 'and i awoke to find; past and future mute and blind',\n", + " \"fucking dead outside the instant's wide opened door\",\n", + " 'and i remembered eternity as a beastly god',\n", + " 'recollecting itself in the midst of its heart',\n", + " 'swallowing itself as myself as in i',\n", + " \"in the shameless drunkenness of mnemosyne's wine\",\n", + " \"in which i can't possibly discern\",\n", + " 'where begins the man and ends the divine',\n", + " 'se, himlen brister nu upp för avgrundens tunga',\n", + " 'igenom dina grova ögonlock och lamslagna skam',\n", + " 'våldtäktssol bränner lagens ordföljd till våldtäktsmening',\n", + " 'hamrar utomförskap in i den ouroboriska cirkelns mitt',\n", + " 'att sjunga den svarta simurgens spegelbild',\n", + " 'över horisonternas uppskurna lår',\n", + " 'och kedja elementens stönande blickar',\n", + " 'till mordbrandens extatiska polstjärna',\n", + " 'and the burning i ascended unto a burning throne',\n", + " 'from where my lidless eye beheld a burning world',\n", + " 'as the flames sang in unison a single terrible word',\n", + " 'and nothing else was heard',\n", + " 'i see nothing in colors anymore',\n", + " 'i see nothing in colors anymore',\n", + " 'i see nothing in colors anymore',\n", + " 'i see nothing in colors anymore',\n", + " 'i see nothing in colors anymore',\n", + " 'i see nothing in colors anymore',\n", + " 'i see nothing in colors anymore',\n", + " 'i see nothing in colors anymore',\n", + " 'i see nothing in colors anymore',\n", + " 'i see nothing in colors anymore',\n", + " 'om stjärnor lyste vägen fram',\n", + " 'om himlen gav mig ro',\n", + " 'om ångesten höll sig på avstånd',\n", + " 'skulle allt kännas okej?',\n", + " 'skulle sömnen komma enkelt?',\n", + " 'skulle jag se färg i mig',\n", + " 'om solen bara sken',\n", + " 'vita staket',\n", + " 'innan du kan minnas vad som hände',\n", + " 'hände att dom pekade sina fingrar',\n", + " 'och bestämde',\n", + " 'vi blev bjudna till olika platser',\n", + " 'vi fick bära olika kläder',\n", + " 'blev det rätt för dig?',\n", + " 'blev det rätt?',\n", + " 'en gång i naturen',\n", + " 'fanns inga regler',\n", + " 'och jag gjorde bara',\n", + " 'rätt rätt rätt',\n", + " 'men på stadens gator',\n", + " 'stod det klart',\n", + " 'och tydligt',\n", + " 'och överallt jag gick',\n", + " 'så sa dom till mig;',\n", + " 'du måste göra',\n", + " 'reträtt reträtt reträtt',\n", + " 'och det gjorde jag',\n", + " 'white fences',\n", + " 'before you can recall what happened',\n", + " 'this happened;',\n", + " 'they pointed their fingers and decided',\n", + " 'we got invited to different places',\n", + " 'we got to wear different clothes',\n", + " 'were they right about you?',\n", + " 'did it turn out well?',\n", + " 'did it turn out well?',\n", + " 'once in nature',\n", + " 'there where no rules',\n", + " 'and all i did was',\n", + " 'right right right',\n", + " 'but along the city streets',\n", + " 'it was loud and clear',\n", + " 'and everywhere i went',\n", + " 'they told me;',\n", + " 'you have to',\n", + " 'retreat retreat retreat',\n", + " 'so i did see less',\n", + " 'rom byggdes inte på en dag',\n", + " 'tärningen är kastad, och världen ligger klar',\n", + " 'det här är ett korståg, tra la la',\n", + " 'så skål mina herrar, blott stjärnorna är kvar',\n", + " 'vi är fredskorpar, kalashnikov-kamrater',\n", + " 'coca-cola cowboys, och pojksoldater',\n", + " 'hello hurray, we are the great',\n", + " 'we are the soldiers of the human race',\n", + " 'hello hurray, we are the great',\n", + " 'we are the soldiers of the human race',\n", + " 'öst är mest, men bäst i väst, kamrat',\n", + " 'vi kommer från metropolis, men passen är från moskva',\n", + " 'och är allting här är gratis om du svär',\n", + " 'att skildra ditt gevär och va en baseboll prolitär',\n", + " 'vi är fredskorpar kalashnikov-kamrater',\n", + " 'coca-cola cowboys, och pojksoldater',\n", + " 'vi älskar er med vår mission',\n", + " 'vi älskar våran religion',\n", + " 'vi älskar er i vårat våld',\n", + " 'vi älskar, vår paroll',\n", + " 'hello hurray, we are the great',\n", + " 'we are the soldiers of the human race',\n", + " 'hello hurray, we are the great',\n", + " 'we are the soldiers of the human race',\n", + " \"we know it's best for you\",\n", + " 'for you',\n", + " 'vi kommer och vi trampar på vår jord',\n", + " 'och dom som inte är med oss är emot',\n", + " 'spela inte hjälte, vår dröm den är global',\n", + " 'imperiet ska segra, tra la la ha ha',\n", + " 'hello hurray, we are the great',\n", + " 'we are the soldiers of the human race',\n", + " 'hello hurray, we are the great',\n", + " 'we are the soldiers of the human race',\n", + " \"we know it's best for you!\",\n", + " \"it's a bit of a pain\",\n", + " 'to be where i am',\n", + " \"it's a bit of a pain\",\n", + " 'to be what i am',\n", + " \"but it's all right with\",\n", + " \"but it's all right with\",\n", + " \"but it's all right with me\",\n", + " 'who is satisfied?',\n", + " \"who wouldn't sell his mind?\",\n", + " 'who is satisfied?',\n", + " \"who wouldn't sell his mind?\",\n", + " 'who can really say?',\n", + " \"yes it's all right with\",\n", + " \"yes it's all right with\",\n", + " \"yes it's all right with me\",\n", + " '“den enkla sanningen är att en del män är håriga och andra inte är det. en del kvinnor har mycket hår och andra har det inte. olika raser har olika mönster uppe i hårets fördelning. den virilaste av alla mänskliga varelser, den unga negerhanen. har nästan inget kroppshår alls”',\n", + " 'strategi',\n", + " 'fascination, lust, hunger',\n", + " 'och aktier',\n", + " 'kniv och gaffel',\n", + " 'bordet dukat med potential',\n", + " 'blad för blad',\n", + " 'droppe för droppe',\n", + " 'bit för bit',\n", + " 'blev allt ditt',\n", + " 'ändlös aptit',\n", + " 'större skörd nästa år',\n", + " 'alltid ett nästa år',\n", + " 'fascination, lust, hunger',\n", + " 'och aktier',\n", + " 'kniv och gaffel',\n", + " 'bordet dukat',\n", + " '-----------------------------------------------',\n", + " 'fascination, lust, hunger',\n", + " 'and stocks',\n", + " 'knife and fork',\n", + " 'table is set with potential',\n", + " 'leaf by leaf',\n", + " 'drop by drop',\n", + " 'bit by bit',\n", + " 'all became yours',\n", + " 'endless apetite',\n", + " 'larger harvest next year',\n", + " 'always a next year',\n", + " 'fascination, lust, hunger',\n", + " 'and stocks',\n", + " 'knife and fork',\n", + " 'table is set',\n", + " '\"vid ett årsskifte så upplever många en känsla av vemod',\n", + " 'vid tanke på det som aldrig mer återkommer',\n", + " 'för andra är det ett ögonblick av förväntan inför möjligheten att erövra det nya',\n", + " 'andra åter känner oro inför en förändring som innebär ovisshet och kanske försämring',\n", + " 'alla dessa stämningar är var för sig förklarliga',\n", + " 'någon sa här om dagen att vi',\n", + " 'lever i det stora uppbrottets tid...\"',\n", + " 'prince of lies is on his knee',\n", + " 'holy rites, spreading the disease',\n", + " 'by his side a youthful girl',\n", + " 'wedlocked force unfurls',\n", + " \"she's young\",\n", + " 'far too young',\n", + " 'far too young',\n", + " 'can we dictate a life with dignity?',\n", + " 'foul agenda corrupt in secrecy',\n", + " 'oh no, no, no, no, no',\n", + " 'one false prayer wielding blasphemy',\n", + " 'price the spirit as a wanted property',\n", + " 'oh no, no, no, no, no',\n", + " 'congratulations to the five men of affairs',\n", + " 'there was a purpose with this life',\n", + " 'insinuations if she holds anything dear',\n", + " 'then it motivates submission in his lair',\n", + " \"he is waiting for darkness, opens the door, he's slithering\",\n", + " \"he is waiting for darkness, opens the door, he's slithering\",\n", + " \"he is waiting for darkness, opens the door, he's slithering\",\n", + " 'vakaren',\n", + " 'du är vakaren',\n", + " 'dina tankar går bredvid hand i hand med ljuset',\n", + " 'att se klart, att aldrig vara sen',\n", + " 'jag hör ditt namn i bruset',\n", + " 'kylans port, dörren utan lås',\n", + " 'dygnets cirkel runt dig',\n", + " 'alarmet om det nåansin gåar',\n", + " 'håll dig intill mig',\n", + " 'rikedom, domen kommer',\n", + " 'det är så dom gör affärer',\n", + " 'när man inte har nåt kvar att ge dom',\n", + " 'då kommer dom tillbaks',\n", + " 'ta det som ett löfte genom åren',\n", + " 'det finns ingen med en tanke som är klar',\n", + " 'bevakar ni mig nu?',\n", + " 'jag har ett vapen i mitt hem, i det tysta huset',\n", + " 'men lämnar staden, landet?',\n", + " 'kommer aldrig mer igen!',\n", + " 'min hand kan snudda ljuset sen',\n", + " 'spegeln står vinklad så man ser, snö och sedlar falla',\n", + " 'jag dansar tyst, bara två steg till höger och sen vänster',\n", + " 'man orkar inte mer!',\n", + " 'men hade du gått förbi mig i staden där vi var',\n", + " 'innan jag hade åkt',\n", + " 'våra hjärtan hade lyst upp gatan då...',\n", + " 'rikedom, domen kommer',\n", + " 'det är så dom gör affärer',\n", + " 'när man inte har nåt kvar att ge dom',\n", + " 'då kommer dom tillbaks',\n", + " 'ta det som ett löfte genom åren',\n", + " 'det finns ingen med en tanke som är klar',\n", + " '-------------------------------------------------',\n", + " '(english translation - verses and lines should line up to the above)',\n", + " 'the watcher',\n", + " 'you are the watcher',\n", + " 'your thoughts walks besides, hand in hand with the light',\n", + " 'to see clearly, to never be late',\n", + " 'i hear your name in the sough',\n", + " 'the gate of cold, without a lock',\n", + " 'day and nights cirkel around you',\n", + " 'the alarm of if it ever goes',\n", + " 'keep yourself close to me',\n", + " 'wealth, the verdict is coming',\n", + " \"that's how they make business\",\n", + " \"when you don't have anything left to give them\",\n", + " \"that's when they come back\",\n", + " 'take that as a promise throughout the years',\n", + " 'there is no one with a thought that is finished',\n", + " 'are you watching me now?',\n", + " 'i have a weapon in my home, in the quiet house',\n", + " 'but leave the town, the country?',\n", + " 'will never happen again!',\n", + " 'my hand can brush against the light then',\n", + " 'the mirror is leaned so you can see, snow and bills fall',\n", + " 'i dance quietly, only two steps to the right and then left',\n", + " \"you can't handle much more!\",\n", + " 'but if you had walked past me in the city where we were',\n", + " 'before i had left',\n", + " 'our hearts would have lit up the street then...',\n", + " 'wealth, the verdict is coming',\n", + " \"that's how they make business\",\n", + " \"when you don't have anything left to give them\",\n", + " \"that's when they come back\",\n", + " 'take that as a promise throughout the years',\n", + " 'there is no one with a thought that is finished',\n", + " 'exploit it, exploit it',\n", + " 'tear it all down and forsake it',\n", + " 'these savages are a satanic breed',\n", + " \"that don't deserve the call of man\",\n", + " \"erase 'em, erase 'em all\",\n", + " 'light a fire and burn them out',\n", + " 'like the cockroaches they are, extinction is the only cure',\n", + " 'leaders of the human race we are',\n", + " 'übermensch, übermensch',\n", + " 'white caucasian übermensch',\n", + " 'appointed by god as rulers over all',\n", + " 'thе firstborn breed, evolution has chosen us',\n", + " 'take thеse lands by force',\n", + " 'drain rivers and mines for gold (soil for oil)',\n", + " 'extinct those who lived there before',\n", + " 'captivate them, send them home as slaves',\n", + " 'arbeit macht frei',\n", + " 'ignorance built this world',\n", + " '”civilization” is built upon suffering',\n", + " 'greed planted a seed',\n", + " 'injustice made it prosper',\n", + " 'i drink and bathe in blood from servants',\n", + " 'gathered in cups made from their skulls',\n", + " 'new world order is my mission',\n", + " 'order ov mammon',\n", + " 'ruler ov all',\n", + " 'aim for total control',\n", + " \"nothing's allowed to stand in my way\",\n", + " 'total fucking dominion',\n", + " 'repsorp ti edam ecitsujni',\n", + " 'dees a detnalp deerg',\n", + " 'gnireffus nopu tliub si ”noitasilivic”',\n", + " 'dlrow siht tliub ecnarongi',\n", + " 'förintelse och ignorans',\n", + " 'den vite mannens väg',\n", + " 'fördriv de som har rätt till landet',\n", + " 'vi skall bygga städer här',\n", + " 'införa samhällsstrukturer baserat på ekonomi',\n", + " 'medmänniska finns ej i vårt vokabulär',\n", + " 'sådant som att ta hand om varandra',\n", + " 'ge den hungrige mat',\n", + " 'är oupphörligen och förevigt förlagda tankegångar',\n", + " 'utplånade av evolutionens tidevåg',\n", + " 'en barmhärtig samarit har samma roll att spela som neandertalaren',\n", + " 'att dö ut',\n", + " 'grävas upp',\n", + " 'ställas ut',\n", + " 'göras till en narr']},\n", + " 'data': ['en gång då stod skogen grön',\n", + " 'marken bördig, luften skön',\n", + " 'vår vackra sjö nu ligger torr',\n", + " 'och kylan tränger in från norr',\n", + " 'gården står där tyst och tom',\n", + " 'sedan den dag vi fick vår dom',\n", + " 'english version:',\n", + " 'the forest once stood so green',\n", + " 'the soil was fertile, the air was clean',\n", + " 'our pretty lake now lay dry',\n", + " 'and from the north cold winds cry',\n", + " 'the cabin stands empty and silent',\n", + " 'since our judgement fell so violent',\n", + " 'born in shadows true divine spawn',\n", + " 'attention of the elders being drawn',\n", + " 'black as night with furious burning eyes',\n", + " 'sister of a wolf, a witch in disguise',\n", + " 'hellhound garm, keeper of this frozen gate',\n", + " 'raping the souls became her fate',\n", + " 'conducting the chorus of the dead',\n", + " 'throughout the nine worlds, lamentation’s cold web',\n", + " 'from the shadows, through the pain',\n", + " 'eternal sorrow in her domain',\n", + " 'pesta – empress of eternal night',\n", + " 'pesta – show us your undying might',\n", + " 'pesta – guide unworthy souls with your light',\n", + " 'oh pesta – our twofaced mistress of delight',\n", + " 'oäkting avlad av ase och jätte. född till att bli avskydd och fruktad. syster till fenrir, jörmungandr och sleipnir. förskastad och utstött, uppsynen blott fick tor att rasa. till nifelheim kastad genom världar nio, av fallet blev hon aldrig sig lik. samtliga ben bröts itu, halva kroppen blev svart som natten, andra halvan vit som snö. hennes rike långt ner i underjorden, tilldelat av oden. grått, kallt, ogästvänligt. salen eljudne vilandes i evigt dunkel',\n", + " 'riket hennes kom att kallas helheim!',\n", + " 'in the bloodred sky as the wind she rides',\n", + " 'companioned by plague and hunger side by side',\n", + " 'sending souls through river gjöll’s blades',\n", + " 'down to blind kingdom where all pleasure fades',\n", + " 'from the shadows, through the pain',\n", + " 'eternal sorrow in her domain',\n", + " 'pesta – empress of eternal night',\n", + " 'pesta – show us your undying might',\n", + " 'pesta – guide unworthy souls with your light',\n", + " 'oh pesta – our twofaced mistress of delight',\n", + " 'the last time i saw you at the subway station',\n", + " 'tears were dripping from both of our eyes',\n", + " 'you left me to see everything succumb',\n", + " 'i called in sick, unable to all',\n", + " \"i didn't go outside for five days\",\n", + " 'barely left my bed',\n", + " 'you stole my appetite for everything',\n", + " 'i wish that i could show you how you made me feel',\n", + " 'i wish that i could show you how you made me feel',\n", + " 'the worst part about this',\n", + " 'is that i still believe that you love me',\n", + " 'somehow',\n", + " 'where is your love now?',\n", + " 'what is your love worth now?',\n", + " 'where are you?',\n", + " 'i fеlt the summer rain dissolving me',\n", + " 'likе ink on paper',\n", + " 'i poured out onto the sidewalk',\n", + " 'love, why did you leave me here?',\n", + " 'why did you leave me here?',\n", + " 'the last night that i slept next to you',\n", + " 'i could feel our love shrink',\n", + " 'and i wasn’t sure i would last without it',\n", + " 'the last night that i slept next to you',\n", + " 'i could feel our love shrink',\n", + " \"and i wasn't sure i would last without it\",\n", + " 'min kärlek är stenar i dina skor',\n", + " 'min kärlek är stenar i dina skor',\n", + " 'det är så mycket vi skrattar åt',\n", + " 'det är så många platser som känns rätt',\n", + " 'vi ser alla tusentals anledningar och vi ler',\n", + " 'vi ler så ofta men det är alltid nåt som inte stämmer',\n", + " 'jag vet aldrig vad jag ska göra med mina händer',\n", + " 'och jag kommer skratta om du frågar vad jag menar med det',\n", + " 'jag har förklarat det för mig själv så många gånger',\n", + " 'det är därför jag inte kunnat sova ordentligt på år, på år',\n", + " 'avstängd',\n", + " 'kom köp oss',\n", + " 'man trodde han kom undan',\n", + " 'han hade gjort det förut',\n", + " 'säkert',\n", + " 'trottoaren står stadigt kvar',\n", + " 'man stannar',\n", + " 'allt man vill ha',\n", + " 'ger jag till honom',\n", + " 'allt',\n", + " 'priset är rätt',\n", + " 'man känner en tomhet',\n", + " 'stor som atmosfären',\n", + " 'pengar på korten',\n", + " 'och fickan',\n", + " 'distant',\n", + " 'come buy us',\n", + " 'one thought he would get away with it',\n", + " 'he had done it before',\n", + " 'probably, i am sure',\n", + " 'the sidewalk stands tall',\n", + " 'one stops',\n", + " 'all that one wants',\n", + " 'i will give it to him',\n", + " 'everything',\n", + " 'price is right',\n", + " 'the vacuity he feels',\n", + " 'capital as the atmosphere',\n", + " 'credit on his cards',\n", + " 'cash in his pockets',\n", + " 'så var det en gosse som vid ett år blev blind',\n", + " 'av en mystisk defekt uti sitt öga',\n", + " 'hans besvikne fader stängde in honom på en vind',\n", + " 'med trappor flera hundra meter höga',\n", + " 'där satt han helt ensam, man gav honom mat',\n", + " 'och annat som han kunde behöva',\n", + " 'där odlade han skägg samt ondska och hat',\n", + " 'som blev allt för stor för att döva',\n", + " 'det blev allt för stort för att döva',\n", + " 'han satt uti sitt rum och skrev böcker om kamp',\n", + " 'mot de svarta, de svaga och de röda',\n", + " 'han växte till en nynazistisk ledarepamp',\n", + " 'och hatet det fortsatte glöda',\n", + " 'en dag fick han höra om en doktor i berlin',\n", + " 'som hans blindhet kunde kurera',\n", + " 'han sa \"läkaren är visserligen ett judesvin',\n", + " 'men med ögon går det bättre att regera\"',\n", + " 'ja, med ögon går det bättre att regera',\n", + " 'mannen fick synen tillbaka, men ack:',\n", + " 'trots denna vetenskapens seger',\n", + " 'så dog han kort därefter i en hjärtattack',\n", + " 'då han upptäckte att han själv var neger',\n", + " '- han upptäckte att han själv var neger!',\n", + " 'english translation',\n", + " 'the blind racist',\n", + " 'so there was this lad who at one year came blind',\n", + " 'of a mysterius defect in his eye',\n", + " 'his dissapointed father shut him up in an attic',\n", + " 'with stairs several hundred meters high',\n", + " 'there he sat all alone, he was given food',\n", + " 'and other things he could need',\n", + " 'there he grew a beard and evil and hate',\n", + " 'wich became all to great to suffocate',\n", + " 'it became all to great to suffocate',\n", + " 'he sat in his room and wrote books about struggle',\n", + " 'against the black, the weak and the red',\n", + " 'he grew up to be a newnazi leaderbigwig',\n", + " 'and the hate continued to glow',\n", + " 'one day he heard about a doctor in berlin',\n", + " 'who his blindness could cure',\n", + " 'he said \"doctor you are surely a jewish svine',\n", + " 'but with eyes is it easier to reign\" he said',\n", + " 'yes, with eyes is it easier to reign',\n", + " 'the man got his vision back but oh!',\n", + " 'despite this scientific victory',\n", + " 'he died shortly after in a heart attack',\n", + " 'when he discovered that he was a nigger',\n", + " '- he discovered that he was a nigger',\n", + " 'tiden gick och gick, började punda igen',\n", + " 'tjejen märkte direkt, det ligger nog i min släkt',\n", + " 'flaskan tog över, det gick rätt fort',\n", + " 'beroendeklinik, direkt efter snort',\n", + " 'allt gick så fort, tjejen märkte direkt',\n", + " 'hade snö i min näsa, väntetiden var väck',\n", + " 'röster i mitt huvud, kärleken kommer och går',\n", + " '~ ~ ~',\n", + " 'english translation:',\n", + " 'time went on and on, started using again',\n", + " 'girlfriend noticed at once, guess it runs in my family',\n", + " 'the bottle took over, it happened quite fast',\n", + " 'rehab clinic, straight after snorting',\n", + " 'everything happened so fast, girlfriend noticed at once',\n", + " 'had snow in my nose, the waiting time was whack',\n", + " 'voices in my head, love comes and goes',\n", + " 'det blev för mycket igår',\n", + " 'jag vill inte mer',\n", + " 'det enda jag ser nu är',\n", + " 'denna stengolvskalla stad',\n", + " 'kärnan till dessa rader',\n", + " 'en institution för döende kött',\n", + " 'glädjesteriliserad av apati',\n", + " 'monoton dödsbringande betong',\n", + " 'mitt hjärta bankar genstridigt',\n", + " 'kväljningar uppstår vid rörelse',\n", + " 'en själ färgad såsom aska',\n", + " 'en stad, ett block av misär',\n", + " 'kontinuerligt elände',\n", + " 'jag älskar dig',\n", + " 'en eremit, vad står det här?',\n", + " 'en eremit vill leva ensam och isolerad',\n", + " 'han får varken åsyn eller vju från andra människor',\n", + " 'jag har kommit på en sak, jag passar inte in någonstans på denna jord',\n", + " 'min bok är inte till salu, adjö!',\n", + " 'yesterday was too much',\n", + " 'i don’t want any more',\n", + " 'the only thing i see now is',\n", + " 'this stone floor-cold city',\n", + " 'the core of these rows',\n", + " 'an institution for dying flesh',\n", + " 'joy-sterilized by apathy',\n", + " 'monotonous death-bringing concrete',\n", + " 'my heart barely beats',\n", + " 'i get nauseated when moving',\n", + " '“a hermit, what does this say? a hermit wants to live alone, he can’t stand the sights or sounds of other people”',\n", + " '“i’ve reached a conclusion, there’s no place for me in this world”',\n", + " '“my book isn’t for sale, and i don’t want to be disturbed by anyone. good bye”',\n", + " 'a soul colored like ashes',\n", + " 'a city, a block of misery',\n", + " 'continuous woe',\n", + " 'i love you']}}},\n", + " 'sw': {'sentence': {'pop': {'meta': {'train_data': ['saa te wo tatake fuhai kashita kirifusa wo misero',\n", + " 'shiroi hata wo sora e kageshi takaraka ni utae',\n", + " 'dress right and dress left. \"aizu de maeni susume!\"',\n", + " 'misete yarou oshiete yaru buzama na da',\n", + " 'like a stalin',\n", + " \"i'm just a f*ckin' imagery\",\n", + " 'esa wa umai ka mizu wa amai ka musaboru dake ga nou ka',\n", + " 'me wo ubae ashi wo ubae takaraka ni utae',\n", + " 'dress right and dress left. \"aizu de maeni susume!\"',\n", + " 'kirisuteru hakisutero konagona ni wakero',\n", + " 'saa te wo tatake fuhai kashita kirifusa wo misero',\n", + " 'shiroi hata wo sora e kageshi takaraka ni utae',\n", + " 'dress right and dress left. \"aizu de maeni susume!\"',\n", + " 'kirisuteru hakisutero konagona ni wakero',\n", + " 'like a stalin',\n", + " \"i'm just a f*ckin' imagery\",\n", + " '-sou, ore no shitta koto de wa nai',\n", + " '-sou, egaita kotae wa soko ni wa nai',\n", + " '-sou, ima omae ga kizuku shikanai',\n", + " '-mou, ato wa nai',\n", + " '‘boku’ o keshi te e ta ‘tsumi nogare no ō’',\n", + " 'arasu hodo chi no oto ni obieru',\n", + " 'kukuri no nai kiba de doko o togame te mo',\n", + " 'tesuri mo tsukame yashi nai',\n", + " 'ibasho o yokei motomeru',\n", + " 'sakebu mo end of sound',\n", + " 'dare mo i nai',\n", + " 'sawai da gensō ni kotae te e ta riteiku no wārudo',\n", + " 'mugen no stage to ikari dake',\n", + " 'gomakase nai rasen no gō mezame ta teikō',\n", + " 'same ta machi no akari ga tomoshi te mo',\n", + " 'kizu no iro. itami wa wakara nai',\n", + " 'rikutsu na gi o kakage basei o furashi te mo',\n", + " 'ashimoto sui darake',\n", + " 'kotoba no seido de kimaru',\n", + " 'kotae nado ira nai',\n", + " 'dare mo i nai',\n", + " 'kawai ta kanjō de gisei ni natta chijō no tears',\n", + " 'kudai ta sora e saken de mo',\n", + " 'tatakae nai muryoku na ego suna ni naru eikō',\n", + " 'soko ni dare mo i nai',\n", + " 'sawai da gensō o sutekie te tta riteiku no wārudo',\n", + " 'mugen no stage to ikari dake',\n", + " 'gomakase nai rasen no gō mezame ta teikō',\n", + " 'ohhh ohhh',\n", + " 'ohhh ohhh',\n", + " 'ohhh ohhh',\n", + " 'lalala... lalala...',\n", + " 'furi tsuzuiteta ame ga uso mitaku hareta sora',\n", + " 'kinou no nayami mo subete wasuresaseru yo baby',\n", + " 'ippun oki ni mieru keitai ki ni natte bakari no hair style',\n", + " 'yatto yakusoku shite deto otozureta sunday',\n", + " 'imasugu aitai yo my baby',\n", + " 'zutto ayafuya ni shite kita jibun wo kaete mita kute',\n", + " 'tereteru baai jyanai wow',\n", + " 'mazu ippo de ii mai pesu de ii',\n", + " 'chikazukeru natsu to be happy',\n", + " 'umareta machi tobi dashite narenu arata na basho de',\n", + " 'mayoi sou na sonna toki hitosuji no hikari kimi to no kono deai',\n", + " \"(i'm in love) stay with you, precious time otoru youna kibun\",\n", + " '(just like this) everyday, everywhere kaze ni mau hana',\n", + " \"(one you will) fallin' love, my lover orita tenshi sa\",\n", + " '(souai wish) i can wait forever kirameku sekai he',\n", + " 'chigau hohaba awasete sotto sode wo tsukanda',\n", + " 'mata hitotsu kimi no koto oboete yuku yo baby',\n", + " 'ishiki shite soura shita eyes hagura kazu youna your smile',\n", + " 'kokoro ni semaru nervous osorezu ni traverse',\n", + " 'zenbu tsutaetai yo my baby',\n", + " 'donna kimi no kako sae kitto uketomete miseru kara',\n", + " 'namida no kazu dake wow',\n", + " 'yowasa shitte yasashisa shitte',\n", + " 'ima ga aru koto to be happy',\n", + " '\"kimi no tameni...\" nante kotoba kiyou ni katare nai keredo',\n", + " 'itsudatte kanjiteru guuzen nanka jyanai bokura no kono ai',\n", + " \"(i'm in love) stay with you, precious time yume no tsuzuki ni\",\n", + " '(just like this) everyday, everywhere zashi dasu migite',\n", + " \"(one you will) fallin' love, my lover kimi ga kotae sa\",\n", + " '(so i wish) i can wait forever hatenaki sekai he',\n", + " \"(i'm in love) stay with you, precious time odoru youna kibun\",\n", + " '(just like this) everyday, everywhere kaze ni mau hana',\n", + " \"(one you wish) fallin' love, my lover orita tenshi sa\",\n", + " '(souai wish) i can wait forever kirameku sekai he',\n", + " 'kanaderu ikutsumo no kanjyou rensashite umareteku shinjyou',\n", + " 'kumorinai asu he no kesshin kaze muki sae ki ni sezuni maishin',\n", + " \"(one you will) fallin' love, my lover kimi ga kotae sa\",\n", + " '(so i wish) i can wait forever hatenaki sekai he',\n", + " \"i'm a bad girl hoon main thodi naughty\",\n", + " 'mere bina pheeki pheeki har party',\n", + " 'sharmana seekha maine na zara bhi',\n", + " 'utton aaj thodi peeli hai aaj bacardi',\n", + " 'ni main aayi teri liye dekh saj dhaj ke',\n", + " 'thakna ni aaj main taan nach nach ke',\n", + " 'mundeya tu rehna zara bach bach ke',\n", + " 'ni mere thumke taan fire lagaave',\n", + " 'hauli hauli, hauli hauli',\n", + " 'hauli hauli gidde vich nach patlo ni',\n", + " 'tera lakk na maroda kha jaave',\n", + " 'hauli hauli gidde vich nach patlo ni',\n", + " 'tera lakk na maroda kha jaave',\n", + " 'hauli hauli gidde vich nach patlo ni',\n", + " 'tera lakk na maroda kha... yeah baby!',\n", + " 'jad lakk hilaave ni tu updown baby',\n", + " 'jaan kaddi jaaye haaye meri baby',\n", + " 'akhiyon se kare yes no maybe',\n", + " 'par mujhe pata dil tu degi',\n", + " 'oh morni ke jaise tu club vich nachdi',\n", + " 'chaah ke bhi tujhse nazar nahi hatdi',\n", + " 'red suit naal paave jad chudiyaan',\n", + " 'mundeyan di jaan ni tu sooli utte tangdi',\n", + " 'ni main aayi teri liye dekh saj dhaj ke',\n", + " 'thakna ni aaj main taan nach nach ke',\n", + " 'mundeya tu rehna zara bach bach ke',\n", + " 'ni mere thumke taan fire lagaave',\n", + " 'hauli hauli, hauli hauli',\n", + " 'hauli hauli gidde vich nach patlo ni',\n", + " 'tera lakk na maroda kha jaave',\n", + " 'hauli hauli gidde vich nach patlo ni',\n", + " 'tera lakk na maroda kha jaave',\n", + " 'hauli hauli gidde vich nach patlo ni',\n", + " 'tera lakk na maroda kha... yeah baby!',\n", + " \"i'm a bad girl hoon main thodi naughty\",\n", + " 'mere bina pheeki pheeki har party',\n", + " 'sharmana seekha maine na zara bhi',\n", + " 'utton aaj thodi peeli hai aaj bacardi',\n", + " 'ni main aayi teri liye dekh saj dhaj ke',\n", + " 'thakna ni aaj main taan nach nach ke',\n", + " 'mundeya tu rehna zara bach bach ke',\n", + " 'ni mere thumke taan fire lagaave',\n", + " 'hauli hauli, hauli hauli',\n", + " 'hauli hauli gidde vich nach patlo ni',\n", + " 'tera lakk na maroda kha jaave',\n", + " 'hauli hauli gidde vich nach patlo ni',\n", + " 'tera lakk na maroda kha jaave',\n", + " 'hauli hauli gidde vich nach patlo ni',\n", + " 'tera lakk na maroda kha... yeah baby!',\n", + " 'brand-new world',\n", + " 'atarashii yume no hajimari',\n", + " 'gooru mezasu tabi wa tsuzuiteyuku itsu datte',\n", + " 'brand-new mind',\n", + " 'jyuunetsu o daite tsugi no doa made',\n", + " 'mada minu sekai e saa, hashire',\n", + " 'mijin mo nai nozomi no hoshi ni mo',\n", + " 'kono te nobashi muri ya ritsukan dari',\n", + " 'yamikumo na bokura wa doko ni itai?',\n", + " 'mure no naka kouritsu shiteku imi',\n", + " 'hitori demo koudoku ja nai wake',\n", + " 'tsunagaru nara',\n", + " 'jikan wa chizu ni naru',\n", + " \"ari no mama let's go and try\",\n", + " 'suzume yo shimei wa one way',\n", + " 'aru ga mama do it! ready?',\n", + " 'saigo wa negai ni todokun da',\n", + " 'brand-new world',\n", + " 'atarashii yume no hajimari',\n", + " 'gooru mezasu tabi wa tsuzuiteyuku itsu datte',\n", + " 'brand-new mind',\n", + " 'jyuunetsu o daite tsugi no doa made',\n", + " 'mada minu sekai e saa, hashire',\n", + " 'kono ue nai yorokubi shinjite',\n", + " 'soko nashi no kurushimi kanjite',\n", + " 'motto tafu ni naritagaru tamashii',\n", + " \"sore yue ni don't stop and cry\",\n", + " 'ima koso into the new day',\n", + " 'sono kakera wanted my key',\n", + " 'saisho ni jibun ni kiku n da',\n", + " 'brand-new dream',\n", + " 'kanaetai yume ga aru nara',\n", + " 'nando datte habatakeru',\n", + " 'hazu sa kimi datte',\n", + " 'brand-new days',\n", + " 'hiraite iru',\n", + " 'tsugi no doa mukou',\n", + " 'kagayaku sekai ni saa, ikou',\n", + " \"ari no mama let's go and try\",\n", + " 'susume yo shimei wa one way',\n", + " 'aru ga mama do it! ready?',\n", + " 'saigo wa negai ni tokunda',\n", + " 'brand-new world',\n", + " 'atarashii yume no hajimari',\n", + " 'go-ru mezasu tabi wa tsuzuite yuku itsudatte',\n", + " 'brand-new mind',\n", + " 'jounetsu wo daite tsugi no doa made',\n", + " 'mada minu sekai e saa hashire',\n", + " 'piasu de kimetari',\n", + " 'hadena mini o sagashitari',\n", + " 'biru no kabe ni booizu',\n", + " 'hora koukishin ga machibuse',\n", + " 'heart and game ni shite shimae',\n", + " 'shitai koto bakari aru nara',\n", + " 'dekiru koto hajimete',\n", + " 'day by day ii ja nai? ok nandemo ii',\n", + " 'muchuu ni nareba aozora mo wasuretari wa shinai',\n", + " 'day by day ii ja nai? all right watashi wa ima',\n", + " 'kono machi no kaze no yuuwaku jouzu ga okiniiri',\n", + " 'baito ga owatta',\n", + " 'nakama-tachi to machiawase',\n", + " 'kariteta bideo no',\n", + " 'kisu no kazu nanka de oshaberi',\n", + " 'kuchibiru itsu ni nattemo shoujou',\n", + " 'mada mitsuketenai mono nara',\n", + " 'komaru hodo aru desho',\n", + " '* day by day ii ja nai? ok nani kara demo',\n", + " 'daki shimerarereba hohoemi o taisetsuni dekiru kara',\n", + " 'day by day ii ja nai? all right watashi wa mou',\n", + " 'kono mune no pazuru hajime no hitotsu ni kizuiteru',\n", + " 'kagayaku suniikaa-tachi no dansu',\n", + " 'asufaruto ni hibite iru',\n", + " 'hontou no tokimeki',\n", + " 'day by day ii ja nai ok nandemo ii',\n", + " 'muchuu ni nareba aozora mo wasuretari wa shinai',\n", + " 'day by day ii ja nai? all right watashi wa ima',\n", + " 'kono machi no kaze ga okiniiri dakara',\n", + " '* repeat',\n", + " 'sakebidashita mune no kodou mezameteyuku',\n", + " 'moraru ni shibarareta honnou ga',\n", + " 'shakai de wa itsumo majime wo enjiterukara',\n", + " \"kuruwasete kon'ya dake\",\n", + " 'sound of music and i will dancing tonight',\n", + " 'nights a brighter ever more than last moonlight',\n", + " 'nanimokamo wasureru tame ni oto no nami ni tobikomu',\n", + " \"kon'ya inochi wo yurashite\",\n", + " 'hanareteyuku risou to genjitsu',\n", + " 'obieteru jibun ga mienakunarisoude',\n", + " 'toketeitai hikari no tsubu ni magirekonde',\n", + " 'bisuimi no suteppu wo',\n", + " 'sound of music and i will dancing tonight',\n", + " 'nights a brighter ever more than last moonlight',\n", + " 'iki wa tsumarisouna hibi de iradachi wo hakisuteru',\n", + " \"kon'ya karada wo yurashite\",\n", + " 'sound of music and i will dancing tonight',\n", + " 'nights a brighter ever more than last moonlight',\n", + " 'nanimo kamo hakisuteru kara ashita wo ukeirerareru',\n", + " \"kon'ya karada wo yurashite\",\n", + " 'long ago, inside a distant memory',\n", + " 'there is a voice that says',\n", + " '\"do you believe a world of happy endings?\"',\n", + " 'even when the road seems long',\n", + " 'every breath you take will lead you closer to',\n", + " 'a special place within',\n", + " 'your neverever...',\n", + " 'mezamete komaku wo tataki tsudzuketeru sairen',\n", + " 'kono sakebigoe wo oshikoroshite',\n", + " \"nanimo shirazu ni shin'on dake wo tsunagitomete\",\n", + " 'genjitsu no torappu ni ochite yuku',\n", + " 'koukai wa shinai yo tsumiageta',\n", + " 'chigireteta miraizu wo nagame',\n", + " 'iki wo tomete sabitsuita kioku no hari',\n", + " \"atama'n naka guru guru mawaru yo\",\n", + " 'as i close my eyes',\n", + " 'nokosu ato mo naku kobosu oto mo naku iku ate mo naku',\n", + " 'i know that this is what i want, this is what i need',\n", + " 'ima mo kurikaeshiteku zanzou',\n", + " 'kizutsuita kako no bokura wa ienai mama de',\n", + " 'sonna karamawari kawaranai',\n", + " 'hibi wa mou tozashiteikunda',\n", + " 'so now kore wa boku ga nozonda my nevereverland',\n", + " 'samayou naifu no you ni tsukisasu kotoba ga',\n", + " 'kono kurushimi wo azawaratte',\n", + " 'nani mo dekizu ni furueru koe wo nomikonde',\n", + " 'kodoku no torappu ni ochite yuku',\n", + " 'mayoikonda kono ashidori tsumazuite sonzaikan wo ushinatte',\n", + " 'namida de somatta higeki no suteeji kuruoshiku',\n", + " \"kokoro'n naka fura fura odoru yo\",\n", + " 'as i take your hand',\n", + " 'kakenuketeiku kokoro no kioku iroaseteiku',\n", + " 'i know that this is what i want, this is what i need',\n", + " 'asu mo kurikaeshiteku zanzou',\n", + " 'tobidashita hizumu sekai ga kienai mama de',\n", + " 'sonna karamawari kawaranai',\n", + " 'hibi wa mou tozashiteikunda',\n", + " 'so now kore wa boku ga nozonda my nevereverland',\n", + " 'mezamete yume no ato no you na komorebi ga',\n", + " 'mabuta no urashimi wataru',\n", + " 'subete ga kanatta hazu da to omotte mo mata',\n", + " 'ochiteiku',\n", + " 'as i close my eyes',\n", + " 'nokosu ato mo naku kobosu oto mo naku iku ate mo naku',\n", + " 'i know that this is what i want, this is what i need',\n", + " 'ima mo kurikaeshiteku zanzou',\n", + " 'kizutsuita kako no bokura wa ienai mama de',\n", + " 'sonna karamawari kawaranai',\n", + " 'hibi wa mou tozashiteikunda',\n", + " 'so now kore wa boku ga nozonda my nevereverland',\n", + " 'kuchh kar guzarne ko khoon chala khoon chala',\n", + " 'aankhon ke sheeshe mein utarne ko khoon chala',\n", + " 'badan se tapak kar, zameen se lipatkar',\n", + " 'galiyon se raston se ubharkar, umadkar',\n", + " 'naye rang bhar ne ko khoon chala khoon chala',\n", + " 'khuli-si chhot lekar, bari-si tich lekar ahista ahista',\n", + " 'sawaalon ki ungli, jawaabon ki mutthi',\n", + " 'sang lekar khoon chala',\n", + " 'kuchh kar guzarne ko khoon chala khoon chala',\n", + " 'aankhon ke sheeshe mein utarne ko khoon chala',\n", + " 'badan se tapak kar, zameen se lipatkar',\n", + " 'galiyon se raston se ubharkar, umadkar',\n", + " 'naye rang bhar ne ko khoon chala khoon chala',\n", + " 'khoon chala, khoon chala, khoon chala',\n", + " 'khoon chala, khoon chala, khoon chala',\n", + " 'vaghti ke raftam taze to mifahmi asheghi chie',\n", + " 'mishnasi eshghe bade man,mifahmi asheghet kie',\n", + " 'aghebat az ghosseye to naghshe to ghesseha misham',\n", + " 'miramo peydam nemishe, hata mesle khoda misham',\n", + " 'vaghti ke man ashegh shodam,ba hameye budo nabud',\n", + " 'to khabo tu bidario,naghshe dota cheshme to bud',\n", + " 'man hameja kenare to,saye be saye kooh be kooh',\n", + " 'ayeneye in ke darbedar ba toi neshaste roo be rooh',\n", + " 'to jonami to eshghami,ghashangtarin bahaneyei',\n", + " 'baraye zende budanam,to behtarin neshunei',\n", + " 'to behtain dalile del,baraye budanam shodi',\n", + " 'nabudi az tanam joda,ke pareye tanam shodi',\n", + " 'parandeye ghashange man,age biaai bahar miad',\n", + " 'baraye in shekasde del, tu sine baz gharar miad',\n", + " 'setareha pain miad,dobare baz sahar mishe',\n", + " 'az asemuno az zamin be man migan ke yad miad',\n", + " 'vaghti ke man ashegh shodam,ba hameye budo nabud',\n", + " 'to khabo tu bidario,naghshe dota cheshme to bud',\n", + " 'man hameja kenare to,saye be saye kooh be kooh',\n", + " 'ayeneye in ke darbedar ba toi neshaste roo be rooh',\n", + " 'mite wa ikenai mono wo mite shimau tabi',\n", + " 'dondon watashi tsuyokunatta',\n", + " 'itte wa ikenai koto wo itte shimau tabi',\n", + " 'dondon watashi busu ni natta',\n", + " 'dakara',\n", + " 'make up! everyday make up! every time',\n", + " 'hoo wo chiiku de someta',\n", + " 'kagami yo kagami watashi wa dare?',\n", + " 'dakedo',\n", + " 'make up! everyday make up! every time',\n", + " 'mayu no aachi wo kimeta',\n", + " 'kagami no naka no onna wa dare?',\n", + " 'tsuite wa ikenai uso wo tsuite shimau tabi',\n", + " 'dandan watashi kowakunatta',\n", + " 'yatte wa ikenai koto wo yatte shimau tabi',\n", + " 'dondon watashi baka ni natta',\n", + " 'dakara',\n", + " 'make up! everyday make up! every time',\n", + " 'ai ni rain wo hiita',\n", + " 'kagami yo kagami watashi wa dare?',\n", + " 'dakedo',\n", + " 'make up! everyday make up! every time',\n", + " 'kotoshi no piasu tsuketa',\n", + " 'kagami no naka no onna wa dare?',\n", + " 'make up! everyday make up! nando demo',\n", + " 'matsuge wo kaaru saseta',\n", + " 'kanashii me no onna wa dare?',\n", + " 'kyou mo',\n", + " 'make up! everyday make up! nando demo',\n", + " 'ai no ruuju wo hiite',\n", + " 'itoshii hito ni kuchizuke wo',\n", + " 'koruku de futashita bin ga uiteiru',\n", + " 'umizoi no michi wo doraibu shiteita',\n", + " 'tsutaetai omoi dake kono mune no naka made',\n", + " 'tsukisasaru nameraka ni shimikonde yuku',\n", + " 'hidarite ni dareka to no yakusoku no yubiwa ga',\n", + " 'terashiteru habamareru kimi to no naka wo',\n", + " 'demo boku wa kimi ga suki sa',\n", + " 'nageireta kaiwa totemo odayaka de',\n", + " 'namida no kaori wa hoho wo tsutau darou',\n", + " 'ayamachi wo okashiteru? kimi wa mayoi hajime',\n", + " 'hiza kakae suwarikomu shiito no ue de',\n", + " 'kono chou wo tsukamaete rinbun de eigaita',\n", + " 'ai no moji shimesareru kimi no senaka ni',\n", + " 'la la la la la la',\n", + " \"don't you know? i love you so\",\n", + " 'i only stay with you now and forever',\n", + " 'kimi no kao ni wa mada mayoi ga mieru kedo',\n", + " 'sonna yoru wa boku no kage no naka de odorou',\n", + " 'ayamachi wo okashiteru? kimi wa mayoi hajime',\n", + " 'hiza kakae suwarikomu shiito no ue de',\n", + " 'kono chou wo tsukamaete rinbun de eigaita',\n", + " 'ai no moji shimesareru kimi no senaka ni',\n", + " 'saa konya boku no kage to namida no oto ni dakare nemuro yo',\n", + " 'chingari koi bhadke, to saawan use bujhaye',\n", + " 'saawan jo agan lagaaye, usse kaun bujhaye?',\n", + " 'patjhad jo baag ujaade, wo baag bahaar khilaye',\n", + " 'jo baag bahar mein ujade, usse kaun khilaye?',\n", + " 'humse mat puchho kaise, mandir tuta sapno ka',\n", + " 'logo ki baat nahi hai, ye kissaa hai apno ka',\n", + " 'koi dushman thes lagaye, to mit jiyaa behlaaye',\n", + " 'man-mit jo ghaav lagaye, use kaun mitaaye?',\n", + " 'na jaane kya ho jaataa, jaane ham kya kar jaate',\n", + " 'peete hai to zinda hai, na peete to mar jaate',\n", + " 'duniya jo pyaasa rakhe, to madira pyaas bujhaye',\n", + " 'madira jo pyaas lagaye, use kaun bujhaye?',\n", + " 'use kaun bujhaye?',\n", + " 'maana tufaan ke aage nahi chalta zor kisi ka',\n", + " 'maujo ka dosh nahi hai, ye dosh hai aur kisi ka',\n", + " 'majdhaar mein naiyaa dole, to maajhi paar lagaye',\n", + " 'maajhi jo naav duboye, use kaun bachaye?',\n", + " 'o use kaun bachaye?',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'jwaala si jalti hai aankhon mein',\n", + " 'jiske bhi dil mein tera naam hai',\n", + " 'parwah hi kya uska aarambh kaisa hai',\n", + " 'aur kaisa parinam hai',\n", + " 'dharti ambar sitaare, uski nazarein utaarein',\n", + " 'dar bhi usse daraa re',\n", + " 'jiski rakhwaliyan re karta saya tera',\n", + " 'hey deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'haan, teri bhakti ka vardan hai',\n", + " 'jo kamaaye wo dhanwan hai',\n", + " 'bin kinaare ki kashti hai wo',\n", + " 'deva tujhse jo anjaan hai',\n", + " 'yoon to mooshak sawari teri',\n", + " 'sab pe hai peharedaari teri',\n", + " 'paap ki aandhiyan laakh ho',\n", + " 'kabhi jyoti na haari teri',\n", + " 'apni takdeer ka wo khud sikandar hua re',\n", + " 'bhool ke ye jahaan re jis kisi ne yahaan re',\n", + " 'saath paaya tera',\n", + " 'hey deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'ho teri dhooli ka teeka kiye',\n", + " 'deva jo bhakt tera jiye',\n", + " 'use amrit ka hai moh kya',\n", + " 'hanske vish ka wo pyaala piye',\n", + " 'teri mahima ke chhaya tale',\n", + " 'kaal ke rath ka pahiya chale',\n", + " 'ek chingari pratishodh se',\n", + " 'khadi ravan ki lanka jale',\n", + " 'shatruon ki kataarein ik akele se haarein',\n", + " 'kan bhi parbat hua re, shlok ban ke jahan re',\n", + " 'naam aaya tera',\n", + " 'hey deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'deva shree ganesha, deva shree ganesha',\n", + " 'ganpati bappa morya',\n", + " 'twameva mata cha pita twameva',\n", + " 'twameva bandhu sakha twameva',\n", + " 'twameva vidya dravinam twameva',\n", + " 'twameva sarvam mum dev deva',\n", + " 'achutam keshavam rama narayanam',\n", + " 'krishna damodaram vasudevam harim',\n", + " 'sridharam madhavum gopika vallabham',\n", + " 'janki naayakam ramachandram bhaje',\n", + " 'hare ram, hare ram, ram-ram hare-hare',\n", + " 'hare krishna, hare krishna, krishna-krishna hare-hare',\n", + " 'hare ram, hare ram, ram-ram hare-hare',\n", + " 'hare krishna, hare krishna, krishna-krishna hare-hare',\n", + " 'banno ki mehndi kya kehna',\n", + " 'banno ka joda kya kehna',\n", + " 'banno lage hai phoolon ka gehna',\n", + " 'banno ki aankhen kajrari',\n", + " 'banno lage sabse pyari',\n", + " 'banno pe jaon main vaari vaari',\n", + " 'ho oh ho ... ho oh ho',\n", + " 'banno ki saheli',\n", + " 'resham ki dori',\n", + " 'chup chup ke sharmaye',\n", + " 'dekhe chori chori',\n", + " 'banno ki saheli',\n", + " 'resham ki dori',\n", + " 'chup chup ke sharmaye',\n", + " 'dekhe chori chori',\n", + " 'yeh maane ya na maane',\n", + " 'main toh ispe mar gaya',\n", + " 'yeh ladki haai allah',\n", + " 'haai haai re allah',\n", + " 'yeh ladki haai allah',\n", + " 'haai haai re allah',\n", + " 'babul ki galiyan',\n", + " 'na chhad ke jaana',\n", + " 'pagal deewana',\n", + " 'isko samjhana',\n", + " 'babul ki galiyan',\n", + " 'na chhad ke jaana',\n", + " 'pagal deewana',\n", + " 'isko samjhana',\n", + " 'dekho ji dekho',\n", + " 'yeh toh mere peeche padh gaya',\n", + " 'yeh ladka haai allah',\n", + " 'haai haai re allah',\n", + " 'yeh ladka haai allah',\n", + " 'haai haai re allah',\n", + " 'lab kahe na kahе',\n", + " 'bolti hai nazar',\n", + " 'pyar nahin chupta',\n", + " 'yaar chupane se',\n", + " 'pyar nahin chupta',\n", + " 'yaar chupane sе',\n", + " 'roop ghoonghat mein ho',\n", + " 'toh suhana lage',\n", + " 'baat nahin banti',\n", + " 'yaar bataane se',\n", + " 'yeh dil ki baatein dil hi jaane',\n", + " 'ya jaane khuda',\n", + " 'yeh ladki haai allah',\n", + " 'haai haai re allah',\n", + " 'yeh ladka haai allah',\n", + " 'haai haai re allah',\n", + " 'sajna ... aa aa aa',\n", + " 'maangne se kabhi',\n", + " 'haath milta nahin',\n", + " 'jodiyan banti hai',\n", + " 'pehle se sabki',\n", + " 'jodiyan banti hai',\n", + " 'pehle se sabki',\n", + " 'oh leke baaraat ghar',\n", + " 'tere aaonga main',\n", + " 'meri nahin yeh toh',\n", + " 'marzi hai rab ki',\n", + " 'arre ja re ja',\n", + " 'yoon jhooti moothi baatein na bana',\n", + " 'yeh ladka haai allah',\n", + " 'haai haai re allah',\n", + " 'yeh ladka haai allah',\n", + " 'haai haai re allah',\n", + " 'banno ki saheli',\n", + " 'resham ki dori',\n", + " 'chup chup ke sharmaye',\n", + " 'dekhe chori chori',\n", + " 'babul ki galiyan',\n", + " 'na chhad ke jaana',\n", + " 'pagal deewana',\n", + " 'isko samjhana',\n", + " 'yeh maane ya na maane',\n", + " 'main toh ispe mar gaya',\n", + " 'yeh ladki',\n", + " 'yeh ladki haai allah',\n", + " 'haai haai re allah',\n", + " 'yeh ladka haai allah',\n", + " 'haai haai re allah',\n", + " 'yeh ladki haai allah',\n", + " 'haai haai re allah',\n", + " 'yeh ladka haai allah',\n", + " 'haai haai re allah',\n", + " 'kasa no shita',\n", + " 'kare wa nande ai wo chikatta no kogoe de',\n", + " 'amagumo nogarete nao harenai kao',\n", + " 'kono machi de kudaketa kokoro korogashite wa',\n", + " 'just thinking out loud',\n", + " 'furimaku egao urahara ni',\n", + " 'broken hearts, city lights',\n", + " 'and me just thinking out loud',\n", + " 'kouzen to koe takaraka ni tonoeta yume wa kiete',\n", + " 'asa ni natte',\n", + " \"mada nigitteta shin'nen dake baggu ni tsumete\",\n", + " 'arukidasou like everybody does',\n", + " 'manseki no eigakan de tsugi no serifu kuchi wo tsuku',\n", + " 'tonari no fuun na kappuru fuman de taijou',\n", + " 'kono machi de shiawase. fushiawase ni magire',\n", + " 'just thinking out loud',\n", + " 'kono yo wa nita mono darake ne',\n", + " 'broken hearts, city lights',\n", + " 'and me just thinking out loud',\n", + " 'heizento soto ja furumatte',\n", + " 'uchi de tsubureta tte ii no',\n", + " 'asa ni natte mada kawakanai',\n", + " \"namida nante nai n' dakara\",\n", + " 'sou sou... like everybody does',\n", + " '\"eikou\" seikou\" da nante hitonigiri',\n", + " '\"zanzou\" \"aizou\" ni michita machi de',\n", + " 'asu no hikari wa',\n", + " 'is it easy, easy to find?',\n", + " 'mirai wa yasashii no kana',\n", + " 'kudaketa kokoro korogashite wa',\n", + " 'just thinking out loud',\n", + " 'shiawase. fushiawase ni magire',\n", + " 'just thinking out loud',\n", + " 'kagayaku tokai no katasumi de',\n", + " 'just thinking out loud',\n", + " 'kono yo wa hanpamono darake ne',\n", + " 'broken hearts, city lights',\n", + " 'and me just thinking out loud',\n", + " 'out loud...',\n", + " '(romaji by: cori)',\n", + " 'fuyu no sora ni yuki wa furidashi kaze wa itaku iki wa shiroku',\n", + " 'machi wo terasu no hi ni naze daka setsunakunatta',\n", + " 'koibito-tachi wa yorisoi aruki mado no naka kara waraigoe',\n", + " 'no himitsu shiranai mama mujaki ni hashagu kodomo-tachi',\n", + " 'sonna kinenbi to ka iranai to omotteta',\n", + " 'dakedo sabishikunaru minna ga shiawase sou ni warau kara',\n", + " 'ai aru kagiri korekara sei naru yoru ni deaeru you ni inoru kara',\n", + " 'shinjita koro ni modotte aou yo juu-nen saki no mo',\n", + " 'zutto mae kara no yoru ni wa minna to koushite iraretara',\n", + " 'boku no kodoku mo minna no ai mo hayaku dakishimeta no ni',\n", + " 'sonna kinenbi to ka iranai to omotteta',\n", + " 'dakedo sabishikunaru minna ga shiawase sou ni warau kara',\n", + " 'ai aru kagiri korekara sei naru yoru ni deaeru you ni inoru kara',\n", + " 'shinjita koro ni modotte aou yo juu-nen saki no mo',\n", + " 'ai ga nebae jibun yori taisetsuna inochi sasugari',\n", + " 'hibi ni oware tsukarete mo kyou ni modotte kureba ii',\n", + " \"sunao ni merry x'mas for you sei naru yoru ni boku no omoi wo ageru kara\",\n", + " 'shinjita koro ni modotte aou yo juu-nen saki mo egao no mama de',\n", + " 'ttaega dwaesseo baro oneul bam',\n", + " 'gidaryeosseo ja junbineun kkeutnasseo',\n", + " 'chulleongineun jeo eumaksori',\n", + " 'nae gaseum dugeundugeun kung, kung, kung',\n", + " 'mwonga doelgeot gateun oneulbam',\n", + " 'i jjaritaneun geu neukkimi joha',\n", + " 'deo nopi haneureul jjilleobwa tonight',\n", + " 'bultaneun baro oneul bam',\n", + " 'saturday night dagachi chumeul chwoyo',\n", + " 'ijjokjeojjok nunchi bojimayo oh',\n", + " 'saturday night dagachi heundeureoyo',\n", + " 'banjjakbanjjak bingbing dorabwayo oh',\n", + " 'hey mister dj',\n", + " 'don’t stop the music',\n", + " 'hey mister dj',\n", + " 'don’t stop oh saturday night',\n", + " 'hey mister dj',\n", + " 'don’t stop the music',\n", + " 'hey mister dj',\n", + " 'don’t stop oh saturday night',\n", + " 'mwonga doelgeot gateun oneulbam',\n", + " 'ijjaritaneun geu neukkimi joha',\n", + " 'chulleongineun jeo eumaksori',\n", + " 'nae gaseum dugeundugeun kung, kung, kung',\n", + " 'yo oneulbam norabollae nawa hamkke norabollae',\n", + " 'meotjige norajulge nareul hanbeon jikyeobollae (uh! )',\n", + " 'ni nuni hwidunggeure ibi tteok beoreojyeo eottae',\n", + " 'ja dallyeoboja ok bultaneun baro oneul bam',\n", + " 'saturday night dagachi chumeul chwoyo',\n", + " 'ijjokjeojjok nunchi bojimayo oh',\n", + " 'saturday night dagachi heundeureoyo',\n", + " 'banjjakbanjjak bingbing dorabwayo oh',\n", + " 'saturday night',\n", + " 'saturday night dagachi chumeul chwoyo',\n", + " 'ijjokjeojjok nunchi bojimayo oh',\n", + " 'saturday night dagachi heundeureoyo (heundeureoyo)',\n", + " 'banjjakbanjjak bingbing dorabwayo oh',\n", + " 'hey mister dj',\n", + " 'don’t stop the music',\n", + " 'hey mister dj',\n", + " 'don’t stop oh saturday night',\n", + " 'hey mister dj',\n", + " 'don’t stop the music',\n", + " 'hey mister dj',\n", + " 'don’t stop oh saturday night',\n", + " 'hah',\n", + " 'hahye hahye aye hahye',\n", + " 'bis',\n", + " 'om maam na pum imjya',\n", + " 'ke luru do ketaa-lha',\n", + " 'om maam pum imjya',\n", + " 'ke luru do ketaa-lha',\n", + " 'hah',\n", + " 'hahye hahye aye hahye',\n", + " 'bis',\n", + " 'om maam pum imjya',\n", + " 'ke luru do ketaa-lha',\n", + " 'om maam na pum imjya',\n", + " 'ke luru do ketaa-lha',\n", + " 'hah',\n", + " 'hahye hahye hahye',\n", + " 'hah',\n", + " 'hahye hahye hahye',\n", + " 'yah yebi tom nuguee',\n", + " 'um kuru tili bare made',\n", + " 'kem luru do ketaa-lha',\n", + " 'mado no naka no boku wa',\n", + " 'gurasu no mizu ni',\n", + " 'sashita no hana you',\n", + " 'awaihisashi ni yurete',\n", + " 'madoromi no soko',\n", + " 'kizuku natsu no kehei',\n", + " 'mujoona tokei no hari o',\n", + " 'itaimi no bun dake',\n", + " 'modosetanara',\n", + " 'aa, okashina kimi to no hibi o',\n", + " 'afureru kurai',\n", + " 'nagameru noni',\n", + " 'this scenery is evergreen',\n", + " 'midori no ha ga irozuki yuku',\n", + " 'ko morehi no shita de',\n", + " 'kimi ga naite iru',\n", + " 'yasashii kisetsu o yobu',\n", + " 'karenna kimi wa',\n", + " 'mujakini natsuite',\n", + " 'sotto karada ni nagareru',\n", + " 'kusuri mitai ni',\n", + " 'tokete itane',\n", + " 'this scenery is evergreen',\n", + " 'hakanai hodo tokiresoona',\n", + " 'sono te o tsunaide',\n", + " 'hanasanai youni',\n", + " 'this scenery is evergreen',\n", + " 'kawaisoona utsumuite iru',\n", + " 'kanashii hitomi o',\n", + " 'nugutte agetai noni',\n", + " 'chikazuku owari ni',\n", + " 'kotoba hitotsu iidasenai',\n", + " 'this scenery is evergreen',\n", + " 'itoshii hito yo',\n", + " 'just a feeling',\n", + " '* just a feeling, neu ggin keu dae ro mal hae',\n", + " 'think about it, joo juh ha ji ma',\n", + " 'just be waiting, ee jen joon bi ga dwae ssuh',\n", + " 'nuh reul nae geh jwo nae ga kat geh ssuh',\n", + " 'chuh eum boo tuh da nal bo yuh jool soon uhb ji',\n", + " 'shin bi seu ruhn boon wi gi ro oh yeah~',\n", + " 'ho gi shim eul ja geuk ha neun kuht do gwaen chan ha',\n", + " 'koong geum hae mi chil guht man keum',\n", + " 'kyuhl gook nuh neun nae geh oh geh dwel guh ya',\n", + " 'won han da myun nae gil guhl uh do jo ha',\n", + " 'han guhl eum sshik jo geum duh na',\n", + " 'gae ro da ga ga nuhl cha ji ha go mal guh ya oh yeah~',\n", + " '* repeat',\n", + " 'ddan sa ram gwa da jung han nae mo seub eul',\n", + " 'sal myuh shi bo yuh jool guh ya oh yeah~',\n", + " 'keu eh geh neun jo geum mi an han il',\n", + " 'ee ji man nuhl kat gi wi hae suh ni gga',\n", + " 'uh jjuhl jool eul mol ra ha neun ni pyo',\n", + " 'jung uh jjuhm keu ri soom gi ji reul mot ha ni',\n", + " 'neu ggil soo ga ee ssuh ssuh nae kyuh',\n", + " 'teh keu sa ram chyuh da bo neun ni shi suhn',\n", + " '* repeat',\n", + " '** just a feeling',\n", + " \"that's what i can show you\",\n", + " 'think about it, ki da ri go ee ssuh',\n", + " 'just a feeling',\n", + " \"that's what i can show you\",\n", + " 'think about it, ki da ri go ee ssuh',\n", + " 'ee ruhn na do mam ee pyun han geh ah',\n", + " 'nya hok shi ra do ni ga dol ah suhl gga bwa',\n", + " 'keu man nae geh mal hae jwo na reul',\n", + " 'sa rang han da go ki da ri go eet jan ha',\n", + " '* repeat x2',\n", + " '** repeat x2',\n", + " 'geudaewa naega sumswineun got',\n", + " 'geudaewa naneun hamkke itjyo',\n", + " 'eonjega naege on nal geu sungan buteo',\n", + " 'geudaewa naeui shigan sogen',\n", + " 'geudaeneun naeui jeon burangeol',\n", + " 'hokshi ijeonnayo naege oneun il',\n", + " 'du nuneul gamgo nareul neukkyeo bwayo',\n", + " 'du pareul beollyeo nareul ana bwayo',\n", + " 'weonhago weonhaetteon geudae janhayo',\n", + " 'du soneul jaba nareul nohchiji anhke',\n", + " 'naege gidae modeungeol matgyeo bwayo',\n", + " 'barago baraetteon sarang ingayo geudaen',\n", + " 'geudaewa naega sumswineun got',\n", + " 'geudaewa naneun hamkke itjyo',\n", + " 'eonjenga naege on nal geu sungan buteo',\n", + " 'geudaewa naneun unmyeong cheoreom',\n", + " 'geudaeneun naege dagawatjyo',\n", + " 'manhi himdeureotjyo naege oneun il',\n", + " 'du nuneul gamgo nareul neukkyeo bwayo',\n", + " 'du pareul beollyeo nareul ana bwayo',\n", + " 'weonhago weonhaetteon geudae janhayo',\n", + " 'du soneul jaba nareul nohchiji anhke',\n", + " 'naege gidae modeungeol matgyeo bwayo',\n", + " 'barago baraetteon sarang ingayo geudaen',\n", + " 'geudae',\n", + " 'geudaewa na',\n", + " 'o geudaeneun na',\n", + " 'geudaeneun nal oho~',\n", + " 'du nuneul gamgo nareul neukkyeo bwayo',\n", + " 'du pareul beollyeo nareul ana bwayo',\n", + " 'weonhago weonhaetteon geudae janhayo',\n", + " 'du soneul jaba nareul nohchiji anhke',\n", + " 'naege gidae modeungeol matgyeo bwayo',\n", + " 'barago baraetteon sarang ingayo',\n", + " 'my love~ oh yeah',\n", + " 'e ni mo dekinai asa ga niau big city',\n", + " 'ikare manako no ore tachi ni wa oteage sa',\n", + " 'kare wo tsukan de sakebu yatsu no waraigoe',\n", + " 'kawaranu onaji you na nyuusu wo tsukuridasu',\n", + " 'demo sukoshi zutsu sukoshi dake ugoiteru nanika ga',\n", + " 'dokoka tsumetai ore tachi no dream city',\n", + " 'yatsu no tsukan da kenryoku ni shibararete',\n", + " 'nigirishimeta omae no kobushi sasayaku',\n", + " 'kakushita kamen wo tsunagu kagi tsukame to',\n", + " 'sou sukoshi zutsu sukoshi dake ugoiteru nanika ga',\n", + " 'come on everybody kimete yaru ze',\n", + " 'oh yeah (come on)',\n", + " \"come on everybody let's get together\",\n", + " 'come on everybody kimete yaru ze',\n", + " 'oh yeah (come on)',\n", + " \"come on everybody let's get together\",\n", + " 'sukoshi zutsu sukoshi dake ugoiteru nanika ga',\n", + " 'sukoshi zutsu sukoshi dake ugoi teru nanika ga',\n", + " 'come on everybody kimete yaru ze',\n", + " 'oh yeah (come on)',\n", + " \"come on everybody let's get together\",\n", + " 'come on everybody kimete yaru ze',\n", + " 'oh yeah (come on)',\n", + " \"come on everybody let's get together\",\n", + " 'na wonrae cheonnune banhan jeo-gi eop-seo ikeotjeo-geot jae-neun ge chwiimiin namja',\n", + " 'keunde nae-ga waeh ireoneunji moreugesseo tangshinye nundongjaen maryeo-gi isseo',\n", + " 'yodong-chineun gonggi, su-lleon-gineun nae mam ijekkeot meomchwo it-deon nareul umjikyeo',\n", + " 'haengbokhan gotonge jeonyurhaneun nae mam keudaeyeo badajwoyo',\n", + " 'nae mame kyeol-shimi seot-da a a a a',\n", + " 'shimjangi shigineun daero o o o o',\n", + " 'nan imi nae-ga anijyo o u u u',\n", + " 'tangshini wonhaneun jeonbureul da majchul-ke haejul-ke',\n", + " 'wahnjeonhan yeoina',\n", + " 'tangshinkwah na sa-i geotjabeul su eobshi saerob-ge ssahin (keu kamjeongeul)',\n", + " 'na eochi hamnikka. momi ikkeuneun daero kamyeon dwehmnikka',\n", + " 'keoteureul su eopt-ke jakkuman ikkeullyeo eotteohke seolmyeong hal su eom-neun seu-teureseu',\n", + " 'keudaeran badae nan momeul deonjyeosseo sumshwiil su eop-seodo nan ike choheun geol',\n", + " 'yodong-chineun gonggi, su-lleon-gineun nae mam ijekkeot boji mothan sesangeul bwah-sseo',\n", + " 'haengbokhan gotonge jeonyurhaneun nae mam nan byeon-gi gipeojyeosseo',\n", + " 'nae mame kyeol-shimi seot-da a a a a',\n", + " 'shimjangi shigineun daero o o o o',\n", + " 'nan imi nae-ga anijyo o u u u',\n", + " 'tangshini wonhaneun jeonbureul da majchul-ke haejul-ke',\n", + " 'wahnjeonhan yeoina',\n", + " 'tangshinye geu perfect stylee yeong-honeul ppaetgin -deuthan hwahng-horhan gibune',\n", + " 'ije-neun gotongdo haengbo-khae nan imi nae geo-shi anin -deut hagie',\n", + " 'heukbaegi dwehn nae sekye-neun geudae churhyeone ireohke seon-myeong-han sae-geul dwehchajke dwaeht-jyo',\n", + " 'nareul kajyeo-gayo nareul kadwo jwoyo tangshini mandeun sesange',\n", + " 'o o eotteo-khae',\n", + " 'na sunhan yangi dwaeh-sseoyo o eotteo-khae',\n", + " 'nan geudae malman deu-reoyo o eotteo-khae',\n", + " 'jobajin naye shiseon gwaehn-chanha tangshin-man bomyeon dwaeh',\n", + " 'nae mame kyeol-shimi seot-da a a a a',\n", + " 'shimjangi shigineun daero o o o o',\n", + " 'nan imi nae-ga anijyo o u u u',\n", + " 'tangshini wonhaneun jeonbureul da majchul-ke haejul-ke',\n", + " 'wahnjeonhan yeoina',\n", + " 'jameseo kkaeboni shi-ganeun meomchwotko',\n", + " 'sesangen uri dulman namkyeojyeo itko',\n", + " 'igoshi jikuga anirado kwaehn-chanha',\n", + " 'wahnjeonhan yeoina',\n", + " 'aisha na na to matusa',\n", + " 'nuncali ye ye',\n", + " 'tu tu ca ca fisi ahn zuku',\n", + " 'ndoto peponi',\n", + " 'ah mizali katisi',\n", + " 'meno',\n", + " 'mi kalia yeh',\n", + " 'oo logi',\n", + " 'ndoto oh do',\n", + " 'peponi',\n", + " 'pizavi memo',\n", + " 'orundu mu machozi',\n", + " 'netu en caburet',\n", + " 'dudu ba',\n", + " 'elele',\n", + " 'ye',\n", + " 'oluwa',\n", + " 'kurunba',\n", + " 'amugeh',\n", + " 'elele',\n", + " 'every time she close her eyes',\n", + " 'ndoto pepo-pepo-peponi',\n", + " 'pepo-pepo-peponi',\n", + " 'pepo-pepo-peponi',\n", + " 'oh oh oh oh oh oh oh oh',\n", + " 'pepo-pepo-peponi',\n", + " 'pepo-pepo-peponi',\n", + " 'pepo-pepo-peponi',\n", + " 'oh oh oh oh oh oh oh oh',\n", + " 'pepo-pepo-peponi',\n", + " 'pepo-pepo-peponi',\n", + " 'pepo-pepo-peponi',\n", + " 'oh oh oh oh oh oh oh oh',\n", + " 'pepo-pepo-peponi',\n", + " 'pepo-pepo-peponi',\n", + " 'pepo-pepo-peponi',\n", + " 'oh oh oh oh oh oh oh oh',\n", + " 'kayinga voyo tethe',\n", + " 'teyinga yoh wodeke (bis)',\n", + " 'wumu bada pafisinga',\n", + " 'cungada bamise (bis)',\n", + " 'hungari (bis)',\n", + " 'pangari (bis)',\n", + " 'heyingare (bis)',\n", + " 'hangar (bis)',\n", + " 'ham baba bala (bis)',\n", + " 'ham ba bala (bis)',\n", + " 'hame shinga he (bis)',\n", + " 'im marvin gaye!',\n", + " 'hem ba…',\n", + " 'la la la lalalalala la la la lalalalala',\n", + " 'oooooooaawawahwagaohaaskagajgh...',\n", + " 'witch',\n", + " '?stcaf eseht teg uoy did \"eman eht\" ni woh tub',\n", + " \"stniop htob no thgir er'uoy wonk i ,esruoc fo ,yhw\",\n", + " '.seiriuqne edam uoy ,rebmemer i fi',\n", + " 'laid eht ta gnizag ,erehpsomta ym ni',\n", + " '.uoy ta gnilims morf peek yldrah dluoc i',\n", + " 'atad on era ereht ,yas uoy draeh evah i',\n", + " \"gninrom eht lla uoy etisoppo tas d'i ecnis deyonna saw i ,riahc ym morf gnarps i\",\n", + " '.olleh',\n", + " 'tabi kasanaru guzen tada yomigaeru sunzen',\n", + " 'hohoemu kimi wo tsukamu',\n", + " 'takanaru biito ni afure dete yuku noizu',\n", + " 'yuuhi ga ochiru mae ni',\n", + " 'sagashiteta tenshi ima wa koko ni',\n", + " 'yume demo itami demo kure!',\n", + " 'come into my life. make it so, miracle miracle',\n", + " 'mote amasu yurui karada sa',\n", + " 'todoke yo atsui omoi',\n", + " 'come into my life. make it so, miracle miracle',\n", + " 'hakanaku moroi yakusoku',\n", + " 'ai no kotoba mo manazashi mo kowasu na kiseki',\n", + " 'tsuka no ma kyujitsu tsukameru hazu no shuujitsu',\n", + " 'te maneki no mukou gawa',\n", + " 'ashita fuku to itta asufaruto kara kaze ga',\n", + " 'migi no hoho kogashiteku',\n", + " 'sugiteku kako nara ima wa kikanai',\n", + " 'senbou no sasayaki sare!',\n", + " 'come into my life. make it so, miracle miracle',\n", + " 'kaketeku yuuyami no machi he',\n", + " 'ukanai egao sutete',\n", + " 'come into my life. make it so, miracle miracle',\n", + " 'kimi no me no mukou gawa ni wa',\n", + " 'nani ga utsutteru oshiete kure todoke yo kiseki',\n", + " 'sagashiteta tenshi ima wa koko ni',\n", + " 'yume demo itami demo kure!',\n", + " 'come into my life. make it so, miracle miracle',\n", + " 'mote amasu yurui karada sa',\n", + " 'todoke yo atsui omoi',\n", + " 'come into my life. make it so, miracle miracle',\n", + " 'hakanaku moroi yakusoku',\n", + " 'ai no kotoba mo manazashi mo kowasu na kiseki',\n", + " 'kasanariatte yuku watashitachi no story',\n", + " 'kazoekirenai deai to wakare no naka',\n", + " 'ima ao no hoshi de meguriaeta no wa',\n", + " 'guuzen nanka ja nai motomeatte ita',\n", + " '* hello passing days',\n", + " 'ima toki wo koete yomigaeru',\n", + " 'remember the reason',\n", + " 'ai sarete ai suru tame ni...',\n", + " 'unmei no kazamuki wa itsu datte kimagure',\n", + " 'marude itazura ni watashi wo karakatte wa',\n", + " 'where are you?',\n", + " \"i've been here\",\n", + " '** some how? some where?',\n", + " 'watashi no koto matteru dareka ga...',\n", + " 'believe yourself',\n", + " 'sono toki wa oto mo tatezu ni yatte kuru',\n", + " '* repeat',\n", + " '** repeat',\n", + " 'pre',\n", + " 'd g a',\n", + " 'niko mchunga ngombe (i take care of cows)',\n", + " 'd g a',\n", + " 'niko mchunga ngombe (i take care of cows)',\n", + " 'g',\n", + " 'sasa sasa (now now)',\n", + " 'a d',\n", + " \"twende mbele (let's go ahead)\",\n", + " 'chakula haina taabu (food is no problem)',\n", + " 'tunana mbuzi tunakula (we kill goats and we eat)',\n", + " 'niko mchunga ngombe (i take care of cows)',\n", + " 'sasa sasa (now now)',\n", + " \"twende mbele (let's go ahead)\",\n", + " 'nguo haina taabu (clothes are no problem)',\n", + " 'tunauza ngombe sokomi (we sell cows at the market)',\n", + " 'taabu tunavumilia (problems...we perservere)',\n", + " 'niko mchunga ngombe (i take care of cows)',\n", + " 'sasa sasa (now now)',\n", + " \"twende mbele (let's go ahead)\",\n", + " 'maisha hapita (life will pass)',\n", + " 'sisi tutazeeka (we will get old)',\n", + " 'natoto wangu watalinda ngombe (my children will take care of the cows)',\n", + " 'niko mchunga ngombe (i take care of cows)',\n", + " 'sasa sasa (now now)',\n", + " \"twende mbele (let's go ahead)\",\n", + " 'havunjika kivulini (i will rest in the shadow)',\n", + " 'na pombe karibu yangu (and beer next to me)',\n", + " 'niko mchunga ngombe (i take care of cows)',\n", + " 'sasa sasa (now now)',\n", + " \"twende mbele (let's go ahead)\",\n", + " '/pre',\n", + " 'labon pe jo bhi ho',\n", + " 'keh bhi do thehera hoon main',\n", + " 'ye dil ki baaton ko roko na thehera hoon main',\n", + " 'nasheeli raat hai taare bhi saath hai',\n", + " 'ghungunate hum chale shahero ki galiyon se',\n", + " 'jaane kyun yeh pal pigal gaya fisal gaya',\n", + " 'jaane kyun yeh pal pigal gaya pigal gaya',\n", + " 'ye koi na kahe sun bhi koi naye',\n", + " 'iraade woh hi hai badal rahi manzile',\n", + " 'ye kaisa khel hai kyun idhar hum fas gaye',\n", + " 'ye waado ka hai kyaa aaj hai kal nahi',\n", + " 'jaane kyun ye pal pigal gaya fisal gaya',\n", + " 'jaane kyun ye pal pigal gaya pigal gaya',\n", + " 'tu bhi hai, main bhi hoon, pyaar bhi hai yahaan',\n", + " 'nazar mein tu aa gayi, nazar mein main aa gaya',\n", + " 'hai raaste judaa to kya hua razi hoon main',\n", + " 'jazbaaton ka hai kya aaj hai kal nahin',\n", + " 'labon pe jo bhi ho',\n", + " 'keh bhi do thehera hoon main',\n", + " 'ye dil ki baaton ko roko na thehera hoon main',\n", + " 'nasheeli raat hai taare bhi saath hai',\n", + " 'ghungunate hum chale shahеro ki galiyon se',\n", + " 'jaane kyun yeh pal pigal gaya fisal gaya',\n", + " 'jaanе kyun yeh pal pigal gaya pigal gaya',\n", + " 'mebuki no haru wo machi mada samenu yume made',\n", + " 'osanasa no nokotta koe de katariau',\n", + " \"it's amulet fushigi na hodo ni tokimekitai\",\n", + " 'shoudo shiteru',\n", + " 'sasai nakikkake de iro wa kawatta',\n", + " ...]},\n", + " 'data': ['come on now!',\n", + " 'itsumo sou yatte ki tsukeba shikamettsura',\n", + " 'tanoshiku nasa souna kao de tonari iru kara egao mitakunarunda',\n", + " 'anyway sonna iraira shitenaide tanoshindekouze feel like dance!',\n", + " 'hora waratta kao no kata ga nanbai mo ii kara',\n", + " 'watashi no koto soredemo shitteru tsumori na no? (make me happy...)',\n", + " '\"you make me feel so nice\"',\n", + " \"nante katte ni iwanaide (let's coming up feel like dance!)\",\n", + " 'i know you doko ni mo ikanai to',\n", + " '(are you ready? come on! feel so high!',\n", + " 'anyway i wanna feel so good!)',\n", + " 'yakusoku shita janai',\n", + " '(nayande tatte itsudatte kuru kara, brand new day!)',\n", + " \"never wanna say to'love me'\",\n", + " 'kono mama toki wo tomete loving you...',\n", + " \"(you're strong, coming! feel like dance!)\",\n", + " 'i know you atatakai hizashi mo',\n", + " '(i never wanna leave you away',\n", + " \"c'ause you make me feel so nice!)\",\n", + " 'samete kanjichauwa',\n", + " 'dakishimete never wanna say \"good bye\"',\n", + " 'goku atari mae no nichijyou subete ga',\n", + " 'sugoku tokubetsu na mono ni omoetekuru youna',\n", + " 'kokoro de irareru hodo ima totemo',\n", + " 'saikou nakibun nanda',\n", + " 'every day konna ni kirakira shiterunda',\n", + " 'kimi to iretara feel like dance!',\n", + " 'hora, soba ni iru dake de you make me feel so nice',\n", + " 'anata no sono gendou ni tokidoki haretsusuru (make me happy!)',\n", + " '\"you make me feel so nice\" nante heiki de iwanaide!',\n", + " \"(let's coming up feel like dance!)\",\n", + " 'i know you watashi no naka ni aru',\n", + " '(are you ready? come on! feel so high!',\n", + " 'anyway i wanna feel so good!)',\n", + " 'hitosuji no chiheisen',\n", + " '(ma sugu ni natte muki atte ikou yo in you side.)',\n", + " 'anata wa karugaru tobikoete kuchau no yo loving you...',\n", + " \"(you're not alone, coming! feel like dance!)\",\n", + " 'i know you hajimete hanashiteru',\n", + " '(i never wanna leave you away',\n", + " \"'cause you make me feel so nice!)\",\n", + " 'umaku wa ienai kedo',\n", + " '(sunao ni natte soba ni oide stay with me.)',\n", + " 'anata ni wa never wanna say \"good bye\"',\n", + " '(you can get the happy.)',\n", + " 'i know you doko ni mo ikanai to',\n", + " '(are you ready? come on! feel so high!',\n", + " 'anyway i wanna feel so good!)',\n", + " 'yakusoku shita janai',\n", + " '(nayande tatte itsudatte kuru kara, brand new day!)',\n", + " \"never wanna say to'love me'\",\n", + " 'kono mama toki wo tomete loving you...',\n", + " \"(you're strong, coming! feel like dance!)\",\n", + " 'i know you atatakai hizashi mo',\n", + " '(i never wanna leave you away',\n", + " \"c'ause you make me feel so nice!)\",\n", + " 'samete kanjichauwa',\n", + " 'dakishimete never wanna say \"good bye\"',\n", + " 'i go bananas',\n", + " 'bananas to the beat',\n", + " 'lele lele',\n", + " 'i mono wayso',\n", + " 'yambo pe yanga koye',\n", + " 'onte mayo sobo',\n", + " 'yo mame yawo peyo sao',\n", + " 'kokonipi aou sobe yambo',\n", + " 'yambo pomi penzo',\n", + " 'i go bananas',\n", + " 'bananas to the beat',\n", + " 'kokonipi yo songo yalo',\n", + " 'yo moussy nindu pao',\n", + " 'o seke ambo pe ela ey kokonipi nay',\n", + " 'kokoni pios, stoyo amow',\n", + " 'i go bananas',\n", + " 'bananas to the beat',\n", + " 'heo-ooo',\n", + " 'saw me ambo yambo',\n", + " 'yambo yomomo yowo et touy',\n", + " 'i go bananas',\n", + " 'bananas to the beat',\n", + " 'woyobo be enzo',\n", + " 'oh i yo pandete o mows',\n", + " 'sobo i yo post tia undo peeta',\n", + " 'i go bananas',\n", + " 'bananas to the beat',\n", + " 'mo lele o possy yambo',\n", + " 'mo lele copy esh',\n", + " 'bo lele',\n", + " 'bo lele',\n", + " 'i go bananas',\n", + " 'bananas to the beat',\n", + " 'i go banaanas',\n", + " '(why yo show be ego)',\n", + " 'bananas to the beat',\n", + " '(kwanto pepe iyo)',\n", + " 'to the beat',\n", + " 'to the beat',\n", + " '(ko kokolo boleyo)',\n", + " 'to the beat',\n", + " 'bananas to the beat',\n", + " '(eh yo sambi ebo yo ame)',\n", + " 'bananas to the beat',\n", + " 'bananas to the beat',\n", + " '(wa beo sio beo pe)',\n", + " 'bananas to the beat',\n", + " '(so yo bolo peo ost)',\n", + " 'bananas to the beat',\n", + " 'bananas to the beat',\n", + " 'bananas to the beat',\n", + " 'bananas to the beat',\n", + " '(iby o sokai)',\n", + " 'bananas to the beat',\n", + " 'bananas to the beat',\n", + " 'bananas to the beat',\n", + " 'bananas to the beat...',\n", + " 'you’re my sunshine baby',\n", + " 'you’re my sunshine baby',\n", + " 'you’re my sunshine baby',\n", + " 'you’re my sunshine baby',\n", + " 'wagama mana watashi nanoni anata wa kotaete kureru',\n", + " '(you were always there for me)',\n", + " 'ochikonda toki wa yasashii kotoba wo kakete kureru',\n", + " '(you made me smile again baby)',\n", + " 'atari maena nichijou wo sugoshite mo',\n", + " 'nani yori shiawase wo kanjiteru',\n", + " 'onajiyou ni anata ni mo todo iteru kana',\n", + " 'taezu aishitekure anata no soba de',\n", + " 'donna tokinite mo',\n", + " '( you shine my day )',\n", + " 'taiyou wo no you ni atatakaku baby',\n", + " 'itsudemo yasashiku',\n", + " '(you shine my day )',\n", + " 'tsutsun de kureteru cuz my sunshine baby',\n", + " 'ima made ikitekita jinsei no naka de',\n", + " 'kazu e kirenai hodo no jinto to de ai',\n", + " 'takusan no hitodachi wo kakiwake',\n", + " 'watashi hayoyaku anata ni de ai eta',\n", + " 'korette kuuzen sore tomo korette jisuzen',\n", + " 'douchi ni shitate anata ga watashi ni kureta mono wa totemo atatakai ne',\n", + " 'you’re my sunshine baby',\n", + " '(you are my sunshine baby)',\n", + " 'you’re my sunshine baby',\n", + " '(yeah, yeah, here we go now)',\n", + " 'donna tokinite mo',\n", + " '( you shine my day )',\n", + " 'taiyou wo no you ni atatakaku baby',\n", + " 'itsudemo yasashiku',\n", + " '(you shine my day )',\n", + " 'tsutsun de kureteru cuz my sunshine baby',\n", + " 'anata no naka ni mo',\n", + " 'tayou no youna atataka saga afurete',\n", + " 'sore wo uke tomete',\n", + " 'sodatsu hana no youni',\n", + " 'i will grow my sunshine baby',\n", + " 'na na na na na',\n", + " 'na na na na na',\n", + " 'na na na na na',\n", + " 'na na na na na',\n", + " 'na na na na na',\n", + " 'na na na na na',\n", + " 'donna tokinite mo',\n", + " '( you shine my day )',\n", + " 'taiyou wo no you ni atatakaku baby',\n", + " 'itsudemo yasashiku',\n", + " '(you shine my day )',\n", + " 'tsutsun de kureteru cuz my sunshine baby',\n", + " 'bejp',\n", + " 'kimi ni kami wanai',\n", + " 'iwayuru mushinronsha',\n", + " 'kami no sadameta kiritsu nado, kimi ni totcha kankei no nai hazu',\n", + " 'sono hazunanoni dō iu wake ka',\n", + " 'itsushika kimi wa shinji teru, toaru hito o kimi wa shinji teru',\n", + " 'dare ni oshie rareta ka wa shiranai ga, kimi wa zettai-teki ni shinji teru',\n", + " '\"inochi ni kachigāru\" to shinji teru',\n", + " '\"hito o koroshite wa ikenai\" to omotteru',\n", + " 'nande?',\n", + " '\"nande tte soryaa\"',\n", + " 'kimi wa nani o shinji teru?',\n", + " 'question',\n", + " 'kimi ni kami wa inai',\n", + " 'tsumari mushinronsha',\n", + " 'menimieru-mono shika shinjinai shugi',\n", + " 'kami no okosu kiseki nado, kimi ni totte wa fantajī no sekai',\n", + " 'demo, kimi wa shinji teru',\n", + " 'uchuu ga aru to kimi wa shinji teru',\n", + " 'mitakotonai shi, itta koto naikedo kimi wa \"uchuu\" o yumemi teru',\n", + " 'kagaku-sha-tachi wa shinji teru',\n", + " '\"kagakuteki ni shōmei sareta mono wa \\'shinjitsu\\' \"',\n", + " 'da to kimi wa omotteru',\n", + " 'nande?',\n", + " '\"nande tte soryaa\"',\n", + " 'kimi wa nani o shinji teru?',\n", + " 'question',\n", + " 'kimi ni kami wanai',\n", + " 'iwayuru mushinronsha',\n", + " 'seigi to aku no kubetsu nado, kimi no toccha kankei mo nai hazu',\n", + " 'sono hazunanoni dō iu wake ka',\n", + " 'itsushika kimi wa shinji teru, aku wa horobubekida to omotteru',\n", + " 'jibun no naka ni aru seigi o motte aku o horobosu koto o kimi wa shinji teru',\n", + " 'seigiseigiseigiseigi...',\n", + " 'no naka ni aru takusan no gisei o kimi wa zettai ni utagawanai',\n", + " 'nande?',\n", + " '\"nande tte soryaa\"',\n", + " 'kimi wa nani o shinji teru?',\n", + " 'question',\n", + " 'wasafi',\n", + " 'tudd thomas',\n", + " 'clever touch',\n", + " 'haa!! your body dey shake',\n", + " 'my money dey wait',\n", + " 'for you, baby',\n", + " 'omo time dey waste',\n", + " 'make we go dey place for real',\n", + " 'oh sweetie',\n", + " 'tupate ubaridi kidogo',\n", + " 'tukale na ugali wa mwogo',\n", + " 'all i want is a bottle of moèt',\n", + " 'oh, eh',\n", + " 'baby, we can do it your way',\n", + " 'anything you want is okay',\n", + " 'all i want is a bottle of moèt',\n", + " 'oooh, ooh, for you',\n", + " 'tanzania to lagos',\n", + " 'i go make you famous',\n", + " 'even if them hate us',\n", + " 'oyinbo go hail us',\n", + " 'tanzania to lagos',\n", + " 'make you famous',\n", + " 'people hate us',\n", + " 'oyinbo go hail us',\n", + " 'oooh, ooh, ooh',\n", + " \"you're my number one\",\n", + " 'my sweetie sweetie',\n", + " 'number one',\n", + " 'my baby, oh',\n", + " \"you're my number one\",\n", + " 'my darling',\n", + " 'my number one',\n", + " 'oh, roho yangu mama',\n", + " 'my number one',\n", + " 'my sweetie sweetie',\n", + " 'number one',\n", + " 'my baby, oh',\n", + " \"you're my number one\",\n", + " 'oh, roho yangu mama',\n", + " 'my number one',\n", + " 'oh! tatu kidonda chaku kwangu maradhi',\n", + " 'matusi usononekapo kwangu simanzi',\n", + " 'aii! tatu kidonda chaku kwangu maradhi',\n", + " 'oh, yani usononekapo kwangu simanzi',\n", + " 'kwa mahaba ulionipa, nimenogewa',\n", + " 'vurugu patashika, aah! punfuza kidogo',\n", + " 'na mengine kadhalika, mtoto si unanielewa',\n", + " 'apo apo uliposhika, ukiongeza kidogo',\n", + " 'mmmh, mwenzako ntaumia (ooh, ooh, ooh)',\n", + " \"you're my number one\",\n", + " 'my sweetie sweetie',\n", + " 'number one',\n", + " 'my baby, oh',\n", + " \"you're my number one\",\n", + " 'my darling (obimo)',\n", + " 'my number one',\n", + " 'oh, roho yangu mama (obimo)',\n", + " 'my number one',\n", + " 'my sweetie sweetie',\n", + " 'number one',\n", + " 'my baby, oh (sweetie, sweetie)',\n", + " \"you're my number one\",\n", + " 'oh, roho yangu mama (obimo)',\n", + " 'my number one',\n", + " 'now, show me how they do',\n", + " 'ngololo, ngololo, ngololo, ngololo',\n", + " 'nglololo, ngololo, aah!',\n", + " 'for naija, we dey dance skelewu',\n", + " 'ah, skelewu, skelewu, ah, skelewu',\n", + " 'skelewu, ah, skelewu, oh, eh!',\n", + " 'tanzania make we dance, ngololo',\n", + " 'ah, skelewu, ngololo, skelewu',\n", + " 'ngololo, ah, skelewu!',\n", + " 'oh, eh, ngololo',\n", + " \"it's davido (ngololo)\",\n", + " 'na diamond (ngololo)',\n", + " \"it's davido (ngololo)\",\n", + " 'omo baba olowo, eh',\n", + " 'skelewu, ah, ngololo',\n", + " 'ah, skelewu, ah, ngololo, ah, skelewu',\n", + " 'ah, ngololo, oh',\n", + " 'now, show me how they do',\n", + " 'ngololo, ngololo, ngololo, ngololo',\n", + " 'ngololo, ngololo, aah!',\n", + " 'now, show me how they do',\n", + " 'ah, ah, ah, ah, aipoo! (omo baba olowo)',\n", + " 'ah, ah, ah, aipoo! ha, ha, ha',\n", + " 'wacha movie iendele',\n", + " 'wayo wayo',\n", + " 'wayo wayo wayo wayo wayo',\n", + " 'asubuhi ni sura yako niionayo niionayo',\n", + " 'asubuhi ni sura yako niionayo',\n", + " 'nikishukuru mola kukuona we kweli',\n", + " 'kweli ni baraka aah',\n", + " \"in the morning it's your face i see\",\n", + " \"i boil inside you're here you're close to me\",\n", + " 'na tabasamu lako kanijaza furaha tele',\n", + " 'mi niendelee kukuoenda',\n", + " 'nikishukuru mola kukuona we',\n", + " 'kweli, kweli ni baraka',\n", + " \"i'm in love (i'm in love)\",\n", + " \"i don't know what to say\",\n", + " 'i see you everyday i hope you feel the same',\n", + " \"i'm in love (i'm in love)\",\n", + " \"i don't know what to say\",\n", + " 'i see you everyday i hope you feel the same',\n", + " \"i'm in love\",\n", + " \"i'm in love\",\n", + " \"i'm in love\",\n", + " \"i'm in love\",\n", + " 'i am, i am, i am who i am (you are)',\n", + " 'you are, you are, you are who you are',\n", + " 'i like, i like, i like what i see',\n", + " 'so we, so we, so we can be we',\n", + " 'mimi ndim mimi ni mimi',\n", + " 'wewe ndiwe wewe ni wewe (wewe ni wewe)',\n", + " 'napenda ninachoona (ooh unacho...)',\n", + " 'tuwe, tuwe, tuwe ni sisi',\n", + " 'nikishukuru mola kukuona we',\n", + " 'kweli, kweli ni baraka',\n", + " \"i'm in love (i'm in love)\",\n", + " \"i don't know what to say\",\n", + " 'i see you everyday i hope you feel the same',\n", + " \"i'm in love (i'm in love)\",\n", + " \"i don't know what to say\",\n", + " 'i see you everyday i hope you feel the same',\n", + " \"i'm in love\",\n", + " \"i'm in love\",\n", + " \"i'm in love\",\n", + " \"i'm in love\",\n", + " 'unavyonizengua zengua zengua (zosi)',\n", + " 'unanichemsha chemsha chemsha (zosi)',\n", + " \"unavyong'aria ng'aria ng'aria zosi (zosi)\",\n", + " 'unavyonizengua zengua zengua (zosi)',\n", + " 'unanichemsha chemsha chemsha (zosi)',\n", + " \"unavyong'aria ng'aria ng'aria (zosi) eeh ee ee eeh\",\n", + " 'asubuhi ni sura yako niionayo (niionayo)',\n", + " 'na usiku silali ni sura yako niionayo',\n", + " 'nikishukuru mola kukuona we',\n", + " 'kweli, kweli ni baraka',\n", + " \"i'm in love (i'm in love)\",\n", + " \"i don't know what to say\",\n", + " 'i see you everyday i hope you feel the same',\n", + " \"i'm in love (i'm in love)\",\n", + " \"i don't know what to say\",\n", + " 'i see you everyday i hope you feel the same',\n", + " \"i'm in love\",\n", + " \"i'm in love (i'm so in love with you)\",\n", + " \"i'm in love (i'm so in love with you)\",\n", + " \"i'm in love\",\n", + " \"i'm in love\",\n", + " 'yume, risou oshi koroshite yudanete...',\n", + " 'itsuwari no kamen wo ima, hagasou',\n", + " 'itami senaka ni matoi odori tawamure wo',\n", + " 'kusari kake no heart ga myaku uchihajimeta...',\n", + " 'komaku wo saku hodo no furueru shoudou wo',\n", + " '\"fukaku kuruwasete kure!\" abaredasu kodou',\n", + " 'yugamu risou to... show! reveal yourself!',\n", + " \"don't hide anymore! feel you... sixty nine...\",\n", + " 'bastard lame faker... feel you... nasty dance...',\n", + " 'tsuki ga terasu atsuku tagiru omae no akaku nigoru chi no iro no you ni',\n", + " 'kuroku sometaku mousou sore ga omae no ikiru imi to kieru koto no nai tsumi sa',\n", + " \"don't hide anymore! feel you... sixty nine\",\n", + " 'bastard lame faker... feel you... nasty dance...',\n", + " 'hoshikuzu ga mau rondo ubaware yami ga kuzuredasu made nugui kirenu tsumi seoi',\n", + " 'eiga no heroine mo sou mienai kizu wo kakushi warau nukegara no you ni',\n", + " 'tsumibito-tachi no rondo tsuki to awaremi no uta wo kanade asu e tomosou...',\n", + " 'alija more delija',\n", + " 'ni tatka imaš ni majka',\n", + " 'sal edna pusta tambura',\n", + " 'sal edna pusta tambura',\n", + " 'ajija more delija',\n", + " 'što jova čudo od tebe',\n", + " 'co taja pusta tambura',\n", + " 'co taja pusta tambura ?',\n", + " 'gumsum gumsum gupchup gumsum gupuchup',\n", + " 'gumsum gumsum gupchup gumsum gupuchup',\n", + " 'gumsum gumsum gupchup gumsum gupuchup ..',\n", + " 'hulchul hulchul ho gayi teri honth hai kyon chup',\n", + " 'hulchul hulchul ho gayi teri baithe hain gupchup',\n", + " 'pyaare pyaare chehre ne karte hain ishaara',\n", + " 'dekha teri aankhon ne hai sapna koi pyaara',\n", + " 'humse gori na tu sharma kehde humse zara',\n", + " 'humse gori na tu sharma kehde humse zara',\n", + " 'kehna hi kya ye nein ik anjaan se jo mile',\n", + " 'chalne lagi mohabbat ke jaise ye silsile',\n", + " 'armaan naye aise dil mein khile',\n", + " 'jinko kabhi main na jaanoon',\n", + " 'vo humse hum unse kabhi na mile',\n", + " 'kaise mile dil na jaanoon',\n", + " 'ab kya karein kya naam lein',\n", + " 'kaise unhein main pukaroon',\n", + " 'kehna hi kya ye nein ik anjaan se jo mile',\n", + " 'chalne lagi mohabbat ke jaise ye silsile',\n", + " 'armaan naye aise dil mein khile',\n", + " 'jinko kabhi main na jaanoon',\n", + " 'vo humse hum unse kabhi na mile',\n", + " 'kaise mile dil na jaanoon',\n", + " 'ab kya karein kya naam lein',\n", + " 'kaise unhein main pukaroon',\n", + " 'pehli hi nazar mein kuchh hum kuchh tum',\n", + " 'ho jaate hain yoon gum',\n", + " 'neinon se barse rimjhim rimjhim',\n", + " 'humpe pyaar ka saawan',\n", + " 'sharam thodi thodi humko aaye to nazrein jhuk jaayein',\n", + " 'sitamb thoda thoda humpe shokh hwaa bhi kar jaayein',\n", + " 'aisi chale aanchal uthay dil mein ek toofan uthay',\n", + " 'hum to lut gaye khade hi khade',\n", + " 'kehna hi kya ye nein ik anjaan se jo mile',\n", + " 'chalne lagi mohabbat ke jaise ye silsile',\n", + " 'armaan naye aise dil mein khile',\n", + " 'jinko kabhi main na jaanoon',\n", + " 'vo humse hum unse kabhi na mile',\n", + " 'kaise mile dil na jaanoon',\n", + " 'ab kya karein kya naam lein',\n", + " 'kaise unhein main pukaroon',\n", + " 'gumsum gumsum gupchup gumsum gupuchup',\n", + " 'gumsum gumsum gupchup gumsum gupuchup ..',\n", + " 'hulchul hulchul ho gayi teri honth hai kyon chup',\n", + " 'hulchul hulchul ho gayi teri baithe hain gupchup',\n", + " 'pyaare pyaare chehre ne karte hain ishaara',\n", + " 'dekha teri aankhon ne hai sapna koi pyaara',\n", + " 'humse gori na tu sharma kehde humse zara',\n", + " 'humse gori na tu sharma kehde humse zara',\n", + " 'in honthon na maanga sargam sargam',\n", + " 'tu aur tera hi pyaar hai',\n", + " 'aaj dhoondhe hai jisko hardam hardam',\n", + " 'tu aur tera hi pyaar hai',\n", + " 'mehfil mein bhi tanha hai dil aise dil aise',\n", + " 'tujhko kho na de darrta hai ye aise ye aise',\n", + " 'aaj mili aisi khushi jhoom uthi duniya ye meri',\n", + " 'tumko paaya to paayi zindagi',\n", + " 'kehna hi kya ye nein ik anjaan se jo mile',\n", + " 'chalne lagi mohabbat ke jaise ye silsile',\n", + " 'armaan naye aise dil mein khile',\n", + " 'jinko kabhi main na jaanoon',\n", + " 'vo humse hum unse kabhi na mile',\n", + " 'kaise mile dil na jaanoon',\n", + " 'ab kya karein kya naam lein',\n", + " 'kaise unhein main pukaroon',\n", + " 'kehna hi kya ye nein ik anjaan se jo mile',\n", + " 'chalne lagi mohabbat ke jaise ye silsile',\n", + " 'kehna hi kya',\n", + " 'i know it! you it! you know it!',\n", + " 'you are my best of love',\n", + " 'itsu datte omotteta kawaranakya tte',\n", + " 'hikaru kaze takai sora miagetete ita',\n", + " 'meguriatte ho-nto yokatta',\n", + " 'sabishisa zenbu kieta',\n", + " 'sono me ni utsutta watashi no egao suki ni nareta',\n", + " 'within my heart',\n", + " '* ouioo soba ni ite',\n", + " 'ouioo uchiakete',\n", + " 'ouioo kimi to nara',\n", + " 'nan datte kanau!',\n", + " '** i know that dareka wo suki ni naru kimochi',\n", + " 'sore ga saikou no pawa-',\n", + " 'yes you are my best of love',\n", + " 'umaku iku koto bakari tsudzukanai ne',\n", + " 'demo ii sa hitotsu zutsu kuria shiyou',\n", + " 'kaze wa kyou mo gu-n to tsuyoi',\n", + " 'makezu ni doa wo akeyou',\n", + " 'futari kasaneau chikara wa subete wo koeru no',\n", + " 'within my heart',\n", + " '*** ouioo sono mune ni',\n", + " 'ouioo todoketai',\n", + " 'ouioo kawaranai',\n", + " 'kono mune no su-pa- rabu',\n", + " 'yukou ikutsu mo kumo wo oikoshi',\n", + " 'kimi to mirai ni yukou',\n", + " 'yes you are my best of love',\n", + " '* repeat',\n", + " '*** repeat',\n", + " '* repeat',\n", + " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", + " 'rappingu ga seifuku daaa furi tte kotanai puu',\n", + " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", + " 'rappingu ga seifuku daaa furi tte kotanai furi tte kotanai',\n", + " 'aimai san-senchi',\n", + " 'aimai san-senchi',\n", + " 'aimai san-senchi',\n", + " \"ase (fuu) ase (fuu) no tanima ni darlin' darlin' freeze!!\",\n", + " 'aimai san-senchi',\n", + " 'aimai san-senchi',\n", + " 'aimai san-senchi',\n", + " 'aimai san-senchi aimai san-senchi',\n", + " 'aimai san-senchi',\n", + " 'aimai san-senchi',\n", + " 'aimai san-senchi',\n", + " 'aimai san-senchi aimai san-senchi',\n", + " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", + " 'rappingu ga seifuku daaa furi tte kotanai puu',\n", + " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", + " 'rappingu ga seifuku daaa furi tte kotanai furi tte kotanai',\n", + " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", + " 'rappingu ga seifuku daaa furi tte kotanai puu',\n", + " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", + " 'rappingu ga seifuku daaa furi tte kotanai furi tte kotanai',\n", + " 'she’s my black pearl, she’s my black pearl',\n", + " 'jidoneun pilyo eobseo nae mami neol garikyeo',\n", + " 'gal giri heomnanhaedo ijjeumeseo geureohgen mothanda',\n", + " 'han shido tteoreojyeo ijeobon jeogi eobtneunde',\n", + " 'jeo meolri supyeongseon kkeute neoye moseubeul bol su ittdamyeon',\n", + " 'nan docheul olryeo kkeutkkaji barame nal shidgo oh oh oh~',\n", + " 'gichireojin sumyeonye yodongeul jaewo',\n", + " 'eodum soge pin kkot bada wie tteun dal',\n", + " 'bimil gateun geu got my beautiful black pearl',\n", + " 'eodum soge pin kkot bada wie tteun dal',\n", + " 'bimil gateun geu got my beautiful black pearl',\n", + " 'shiljaehagin haneun geonji hyeonshilgwaneun dongtteoreojin',\n", + " '( kkumgwa isang sogeul hemaego ittna)',\n", + " 'shinhwa soge sal geotman gateun oh naye yeoshina shiganeul hechigo neol chajaga',\n", + " 'yeongwonhan geotdeureun mideobon jeogi eobtneunde',\n", + " 'geutorok ganjeolhage na barawottdeon neol dahge dwindamyeon',\n", + " 'nan docheul olryeo kkeutkkaji barame nal shidgo oh oh oh ~',\n", + " 'gichireojin sumyeonye yodongeul jaewo',\n", + " 'eodum soge pin kkot bada wie tteun dal',\n", + " 'bimil gateun geu got my beautiful black pearl',\n", + " 'eodum soge pin kkot bada wie tteun dal',\n", + " 'bimil gateun geu got my beautiful black pearl',\n", + " 'pokpungi morachineun ajjilhan sunganedo',\n", + " 'baetmeoril dolrijima hanghaereul meomchujima',\n", + " 'i jeongdoe geobeul meokgo molleonal jul arattdamyeon shijakjwo haji anhattda',\n", + " 'noreul gamchwonoheun badaye jangnanen gikkeoi naega matseojunda',\n", + " '( geochireojin sumyeonye yodongeul jaewo, geochireojin sumyeonye yodongeul jaewo, geochireojin sumyeonye yodongeul jaewo]',\n", + " 'she’s my black pearl oh~',\n", + " 'nan haneure tteun taeyanggwa daseot gaeye daeyang oh oh oh~',\n", + " 'chanranhage bitnaneun geunyeoreul hyanghae',\n", + " 'jiteun angae soge nopeun pado wie',\n", + " 'heurithage bichin my beautiful black pearl',\n", + " 'gipeun chimmuk soge seulpeun seonyul wie',\n", + " 'hyemihage deulrin my beautiful black pearl',\n", + " 'mu leno skari',\n", + " 'vivo fo eya meso',\n", + " 'fruna farsti ené',\n", + " 'me fari olé chita',\n", + " 'saré mo taré fio',\n", + " 'enifa ana for esso',\n", + " 'nesti hela mufo heles sta',\n", + " 'à sarafa noré ri a',\n", + " 'vina no ta reyéne tiaso na ii',\n", + " 'à mara ma haré si no',\n", + " 'ima fasa neléna hukiya',\n", + " 'safaa nani faréyu a',\n", + " 'weno wala, neno kwala',\n", + " 'oe sengue to mba, we matoi a muto',\n", + " 'bola nika a titi bwam',\n", + " 'ih na tondi oa tondi oa',\n", + " 'ye mbale na o lingane mba',\n", + " 'pi ja bo na topi wenge lakise mba',\n", + " 'weke we pe so o we',\n", + " 'na sibi muto mo o weni we no',\n", + " 'ndutu je mba mulema, e buki pon mba',\n", + " 'weno wala, ke ne o kwala',\n", + " 'oe sengue to mba, we matoi a muto',\n", + " 'bola nika a titi bwam',\n", + " 'ih na tondi oa tondi oa',\n", + " 'di kwale wenge',\n", + " 'di tope wenge',\n", + " 'di kwale',\n", + " 'musima mouena di kusi no',\n", + " 'di yai na muna timba na mba',\n", + " 'weke we pe so oe',\n", + " 'na si bi muto weni weno',\n", + " 'mujenge to mwae na si mene pe',\n", + " 'weno wala, neno kwala',\n", + " 'oi sengue to mba we matoi a muto',\n", + " 'bola nika a titi bwam',\n", + " 'ih na tondi oa tondi oa jita',\n", + " 'weno wala, muto bye bye',\n", + " 'oi sengue to mba, we matoi a muto',\n", + " 'bola nika a titi bwam',\n", + " 'ih na tondi oa tondi ao',\n", + " 'dil ye bechein ve, raste pe nain ve',\n", + " 'dil ye bechein ve, raste pe nain ve',\n", + " 'jindari behaal hai, soor hai na taal hai',\n", + " 'aaja savariya, aa aa aa aa',\n", + " 'taal se taal mila, o, taal se taal mila',\n", + " 'dil ye bechein ve, raste pe nain ve',\n", + " 'dil ye bechein ve, raste pe nain ve',\n", + " 'jindari behaal hai, soor hai na taal hai',\n", + " 'aaja savariya, aa aa aa aa',\n", + " 'taal se taal mila, o, taal se taal mila',\n", + " 'saawan ne aaj toh mujhko bhigo diya',\n", + " 'hai meri laaj ne mujhko dubo diya',\n", + " 'saawan ne aaj toh mujhko bhigo diya',\n", + " 'hai meri laaj ne mujhko dubo diya',\n", + " 'aisi lagi jhadi sochoon main ye ghadi',\n", + " 'kuchh maine kho diya kya maine kho diya',\n", + " 'chup kyon hai bol tu sang mere dol tu',\n", + " 'meri chaal se chaal milaa-a',\n", + " 'taal se taal mila, o, taal se taal mila',\n", + " 'maana anjaan hai tu mere vaaste',\n", + " 'maana anjaan hoon main tere vaaste',\n", + " 'maana anjaan hai tu mere vaaste',\n", + " 'maana anjaan hoon main tere vaaste',\n", + " 'main tujhko jaan loon, tu mujhko jaan le',\n", + " 'aa dil ke paas aa is dil ke raaste',\n", + " 'jo tera haal hai vo mera haal hai',\n", + " 'is haal se haal mila, o',\n", + " 'taal se taal mila, o, taal se taal mila',\n", + " 'dil ye bechein ve, raste pe nain ve',\n", + " 'dil ye bechein ve, raste pe nain ve',\n", + " 'jindari behaal hai, soor hai na taal hai',\n", + " 'aaja savariya, aa aa aa aa',\n", + " 'taal se taal mila, o, taal se taal mila',\n", + " 'pehli nazar mein',\n", + " 'kaise jaado kar diya',\n", + " 'tera ban baita hai',\n", + " 'mera jiya',\n", + " 'jaane kya hoga',\n", + " 'kya hoga kya pata',\n", + " 'is pal ko milke',\n", + " 'aa jee le zara',\n", + " 'mein hoon yahan',\n", + " 'tu hai yahan',\n", + " 'meri bahon mein aa',\n", + " 'aa bhi ja',\n", + " 'o jaan-e-jaan',\n", + " 'dono jahan',\n", + " 'meri bahon mein aa',\n", + " 'bhool ja aa',\n", + " 'o jaan-e-jaan',\n", + " 'dono jahan',\n", + " 'meri bahon mein aa',\n", + " 'bhool ja aa',\n", + " 'baby i love u, baby i love you, baby i love you, baby i love you ... so',\n", + " 'baby i love u',\n", + " 'oh i love u',\n", + " 'i love u',\n", + " 'i love u so',\n", + " 'baby i love u',\n", + " 'har dua mein shamil tera pyaar hai',\n", + " 'bin tere lamha bhi dushwar hai',\n", + " 'dhadhkon ko tujhe se hi darkar hai',\n", + " 'tujhse hai rahtein',\n", + " 'tujhse hai chahtein',\n", + " 'har dua mein shamil tera pyaar hai',\n", + " 'bin tere lamha bhi dushwar hai',\n", + " 'dhadhkon ko tujhe se hi darkar hai',\n", + " 'tujhse hai rahtein',\n", + " 'tujhse hai chahtein',\n", + " 'tu jo mili ek din mujhe',\n", + " 'mein kahin ho gaya lapata',\n", + " '(o jaan-e-jaan',\n", + " 'dono jahan',\n", + " 'meri bahon mein aa',\n", + " 'bhool ja aa ) ... 2',\n", + " '(kar diya deewana dard-e-kash ne',\n", + " 'chain cheena isqh ke ehsaas ne',\n", + " 'bekhayali di hai tere pyaas ne',\n", + " 'chaya suroor hai',\n", + " 'kuch to zaroor hai) ... 2',\n", + " 'yeh dooriyan',\n", + " 'jeene na de',\n", + " 'hal mera tujhe na pata',\n", + " '(o jaan-e-jaan',\n", + " 'dono jahan',\n", + " 'meri bahon mein aa',\n", + " 'bhool ja aa) ... 2',\n", + " 'baby i love u, baby i love you, baby i love you, baby i love you ... so',\n", + " 'baby i love u',\n", + " 'oh i love u',\n", + " 'baby i love u',\n", + " 'i love u... ...',\n", + " 'mele jihna ikath hunda',\n", + " 'nal sarkaran vi slaahan lehndiyan',\n", + " 'ho marji na leader je chunn le ni',\n", + " 'othe votan vi ni pehndiyan',\n", + " 'banne ghodiyan haveli baharo bahar ni',\n", + " 'rakhe fight nu vi pitbull chaar ni',\n", + " 'ghodiyan haveli baharo bahar ni',\n", + " 'rakhe fight nu vi pitbull chaar ni',\n", + " 'kandeyan te sair karda',\n", + " 'jithe hundi aa pabandi hathiyar di',\n", + " 'ni ohthe jatt fire karda. hoonj dene aatki group vi',\n", + " 'jehre vi ohde anti chalde',\n", + " 'ho do do mahine gym la ke udd de',\n", + " 'kaas ton jawaak kal de',\n", + " 'fer pehnge kalege ohdon hol bai',\n", + " 'ho lalo pudpeiyan te pistol bai',\n", + " 'pehnge kalege ohdon hol bai',\n", + " 'lalo pudpeiyan te pistol bai',\n", + " 'tan hi jana khana darda',\n", + " 'jithe hundi a pabandi hathiyar di',\n", + " 'ni othe jatt fire karda. oh jiyo bai',\n", + " 'sunya a god ohne le lya ni',\n", + " 'bacha aakh de bandook da',\n", + " 'siyaane kehnde kharre pair katal kra deve',\n", + " 'bhi roula watt te mashook da',\n", + " 'muhon kadi gal poori karda shaukeen',\n", + " 'nahio foki taur da',\n", + " 'ho navyan de naa naio jaanda',\n", + " 'fan parkash kaur da',\n", + " 'oh gal donne aala kharri karda',\n", + " 'maan kalle uss rab kolon darda',\n", + " 'donne aala kharri karda',\n", + " 'maan kalle uss rab kolon darda',\n", + " 'ni booch booch pair tarda',\n", + " 'jithe hundi a pabandi hathiyar di',\n", + " 'ni ohthe jatt fire karda',\n", + " 'i sunganeun real',\n", + " \"it's party time chill\",\n", + " \"it's party time da chill\",\n", + " 'chagaun ni moseubi nan joha',\n", + " 'neukkindamyeon you gotta show it rock your body',\n", + " 'ttame jeojeul ttaekkajiman rock your body',\n", + " 'amu saenggak eobsi nan nollae',\n", + " 'nan neoui noye',\n", + " \"let's get down\",\n", + " \"let's get down i bami gagi jeone\",\n", + " 'just let it drip just let it drip',\n", + " 'just let it drip just let it drip',\n", + " 'onmome ttami heulleo neoui mameul neukkyeo',\n", + " 'just let it drip just let it drip',\n", + " 'just let it drip just let it drip',\n", + " 'onmome ttami heulleo gipeun bami heulleo',\n", + " 'just let it drip sexy lady',\n", + " 'just let it drip sexy lady',\n", + " 'rock rock your body',\n", + " 'rock rock your body',\n", + " 'just let it drip drip',\n", + " 'just let it drip drip',\n", + " 'just let it drip sexy lady',\n", + " 'just let it drip sexy lady',\n", + " 'rock rock your body',\n", + " 'rock rock your body',\n", + " 'just let it drip drip',\n", + " 'just let it drip drip',\n", + " 'nae pume itgil naeil ireun achim',\n", + " 'geudaewa hamkke geotneun golmokgil',\n", + " 'jumeoni sok kiwa matneun nae chimsil',\n", + " 'oneuri aniyeodo nan joha',\n", + " 'you gotta show it',\n", + " 'neukkindamyeon you gotta show it',\n", + " 'ttame jeojeul ttaekkajiman rock your body',\n", + " 'amu saenggak eobsi nan nollae',\n", + " 'nan neoui noye',\n", + " \"let's get down\",\n", + " \"let's get down i bami gagi jeone\",\n", + " 'just let it drip just let it drip',\n", + " 'just let it drip just let it drip',\n", + " 'onmome ttami heulleo neoui mameul neukkyeo',\n", + " 'just let it drip just let it drip',\n", + " 'just let it drip just let it drip',\n", + " 'onmome ttami heulleo gipeun bami heulleo',\n", + " 'just let it drip',\n", + " 'just let it drip',\n", + " 'come close to me now',\n", + " 'come close to me now',\n", + " 'jogeum deo dagawa',\n", + " \"let's get down get down\",\n", + " \"let's get down get down\",\n", + " 'nae nuneul barabwa',\n", + " 'chojeom eomneun nunbit nal wonhaneunji',\n", + " 'girl you got me hypnotize',\n", + " 'girl you got me hypnotize',\n", + " 'just give it to me',\n", + " 'just give it to me',\n", + " 'just let it drip just let it drip',\n", + " 'just let it drip just let it drip',\n", + " 'onmome ttami heulleo neoui mameul neukkyeo',\n", + " 'just let it drip just let it drip',\n", + " 'just let it drip just let it drip',\n", + " 'onmome ttami heulleo gipeun bami heulleo',\n", + " 'just let it drip sexy lady',\n", + " 'just let it drip sexy lady',\n", + " 'rock rock your body',\n", + " 'rock rock your body',\n", + " 'just let it drip drip',\n", + " 'just let it drip drip',\n", + " 'just let it drip sexy lady',\n", + " 'just let it drip sexy lady',\n", + " 'rock rock your body',\n", + " 'rock rock your body',\n", + " 'just let it drip drip',\n", + " 'just let it drip drip',\n", + " 'aaj maine breakup ki party rakhli hai',\n", + " 'subah se ek botal daru bhi peeli hai',\n", + " 'sleeper lagake mummy daddy ko sulake',\n", + " 'aao mere paas yaaron gaao sur sa lagake hath',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'aa jehdi nachde ae use bi peeni hai',\n", + " 'dil se hai maine aaj usko nikala',\n", + " 'dil to hai pagal jo fudakta tha saala',\n", + " 'finger dikhayi uski photo bhi jalayi',\n", + " 'phir flush me bahake thodi thandak si aayi',\n", + " 'is baat is baat is baat pe uthao haath',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'aa jehdi nachdi ae use bi peeni hai',\n", + " 'tujhe bithake rakha tha maine raani palko pe',\n", + " 'tunhe maari thokar samjhi aa jaunga sadko pe',\n", + " 'na aisa na tu soch ri chori',\n", + " 'everyday meri new love story',\n", + " 'pehle toh meri baat na gauri',\n", + " \"ab boli baby i'm sorry\",\n", + " 'chal ri chal re ab side me hoja',\n", + " 'dhundle apna aashik duja',\n", + " 'aira gaira nathu khaira',\n", + " 'fukra sa shehri chuusa',\n", + " 'ja karle tu usse shaadi',\n", + " 'fir shuru teri barbaadi',\n", + " 'dhoyegi tu kachche',\n", + " 'aur gande bartann',\n", + " 'dekhegi saas bahu aur durdarshan',\n", + " 'banke reh jayegi tu house biwi',\n", + " 'aur chaubis ghante tera yaar hoga on tv',\n", + " 'phir tv dekh ke tu bahot pachtayegi',\n", + " 'fir yo yo honey yo yo honey singh hi tu gaayegi',\n", + " 'aur bachcho ko sunayegi aur yehi batlayegi',\n", + " 'agar galti se mujhse na hota ye paap',\n", + " 'toh yehi hote bachcho tumhare baap ha',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'aa jehdi nachdi ae use bi peeni hai',\n", + " 'ab uski best friend ko fasaaunga',\n", + " 'long drive pe usko le jaaunga',\n", + " 'usko jalaun use bada tadpau',\n", + " 'apni ex ko aaj main sabak sikhaaun',\n", + " 'is baat is baat is baat pe uthao haath',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'upar upar upar upar upar upar in the air',\n", + " 'aa jehdi nachdi ae use bi peeni hai',\n", + " 'nande ka na? anata ga chikazuku to',\n", + " 'nani o shiteita tte kehai o kanjiru no',\n", + " 'sō ha-to no antena ga pipipi te',\n", + " 'kūki no sono henka kyatchisuru mitai',\n", + " 'jibun de mo kizukanai',\n", + " 'muishikina koi no yokan',\n", + " 'ato de bikkurishinai yōni',\n", + " 'chanto ara-to narashitekureru yo',\n", + " 'ushiro kara yukkuri to sekkinchū',\n", + " 'be-be-beware',\n", + " 'ki o tsukete hima o mise cha make',\n", + " 'whoa-oh-oh mushishiyou',\n", + " 'hanashikaketekuru made wa',\n", + " 'zettai furimukanai',\n", + " 'three, two, one',\n", + " 'yōjinshite kyōmi nante nai furi',\n", + " 'whoa-oh-oh aseru',\n", + " 'sō shisen no nakani haittenai deai',\n", + " 'chanto ugokimashō',\n", + " 'kiniitteru no wa hidarigawa oh?',\n", + " 'dakara dotchi?',\n", + " 'hidari no hō kara turn around, oh',\n", + " \"you feelin' it? now me to me ga attara hey!\",\n", + " 'kore ijō honki ni natchau to',\n", + " 'mebaeta kanjō ga mō tomerarenai',\n", + " 'kitto anata o dokusenshitaku natte',\n", + " 'ni jū yon jikanchū soba ni itaku naru',\n", + " 'ikеnai kuse datte',\n", + " 'jibun demo wakattеru kedo',\n", + " 'nan do onaji shippaishite mo',\n", + " 'ai no ro-pu de shibarou to shichau',\n", + " 'sukina hito tsukuranai kimeteta noni',\n", + " 'be-be-beware',\n", + " 'hitome mite taipu da to wakatta',\n", + " 'whoa-oh-oh abu nai',\n", + " 'koibito ni narenai nara',\n", + " 'doko ka itte chōdai',\n", + " 'bye bye bye',\n", + " 'imashimete bure-ki kakenakya',\n", + " 'whoa-oh-oh dame ne',\n", + " 'ah muchū ni natteshimaisō na no tomete',\n", + " 'kyori o okimashō',\n", + " 'yappari bingo desho',\n", + " 'suki ni natteku',\n", + " 'ushiro kara yukkuri to sekkinchū',\n", + " 'be-be-beware',\n", + " 'ki o tsukete hima o mise cha make',\n", + " 'whoa-oh-oh mushishiyou',\n", + " 'hanashikaketekuru made wa',\n", + " 'zettai furimukanai',\n", + " 'three, two, one',\n", + " 'yōjinshite kyōmi nante nai furi',\n", + " 'whoa-oh-oh aseru',\n", + " 'sō shisen no nakani haittenai deai',\n", + " 'chanto ugokimashō',\n", + " 'ki o tsukete',\n", + " '(be-be-beware)',\n", + " 'i tsu datte mistake, mistake',\n", + " '(be-be-beware)',\n", + " 'i know',\n", + " 'i wanna love you, i wanna love you',\n", + " 'yeah listen! baby naege baby naui dunune',\n", + " 'neo hanamani sara sumsuineun de',\n", + " 'geunde wae ireohke noemu nado meongose na heullo nimkin che (jeomjeom meolleo jine)',\n", + " 'ne saraminde (geu nuga mworahaedo)',\n", + " 'neon nae yejande (keuge euichyeodo)',\n", + " \"neomanisseumyeon i'll be ok\",\n", + " 'ijen naega neol jigyeo julke',\n", + " 'baby you know because',\n", + " \"i wanna love you i can't live without you\",\n", + " 'du nuneul gamgo nae du soneul jabgu',\n", + " 'i wanna have you i really need you',\n", + " 'jigeum idaero modeungeol beoryeodugo',\n", + " \"i wanna love you i can't live without you\",\n", + " 'neon geujeo naegero dagaseo myeondwae',\n", + " 'i wanna have you nae modeungeol julke',\n", + " 'ijeneun neoege yaksokhalke',\n", + " 'keu sarami mwondae neoljikkyeo bulsubakke',\n", + " 'neol kidaril su bakke no deoisang andwae',\n", + " 'neol deryeowa yahaegeuwa neun eorulliji anneun neoreul',\n", + " 'naesaraminde (naesaraminde yeah)',\n", + " 'neon nae yeoja inde (neon nae yoeja inde)',\n", + " \"neomanisseumyeon i'll be ok\",\n", + " 'ijen naega neol jikyeojulke',\n", + " 'baby you know because',\n", + " \"i wanna love you i can't live without you\",\n", + " 'du nuneul gamgo nae du soneul jabgu',\n", + " 'i wanna have you i really need you',\n", + " 'jigeum idaero modeungeol beoryeodugo',\n", + " \"i wanna love you i can't live without you\",\n", + " 'neon geujeo naegero dagaseo myeondwae',\n", + " 'i wanna have you nae modeungeol julke',\n", + " 'ijeneun neoege yaksokhalke',\n", + " '(rap)',\n", + " 'yo excuse me mr',\n", + " 'hwanalgyeotgata jombikyeo naega meonjeo geunyeoui yeopjariroda',\n", + " 'gaseogettji jeonjeonhi so step back',\n", + " 'that girl is mine niga mwondae uri',\n", + " 'sarange sundae gonyeoui nunege marhae',\n", + " 'neon nawa hamkke hakilwonhae',\n", + " 'neon jugeott dakkae eonado geunyel',\n", + " 'gatjil machi',\n", + " 'wurideulgwa ddok gatae aradoruh seumyeon',\n", + " 'jom gujyujullae',\n", + " 'she make me crazy geonyeo neun naegewan',\n", + " 'byukan geol',\n", + " 'wan byukhan uriduri gwangye dakhan',\n", + " 'buneh andwegenna',\n", + " 'ijeneun nae soneul jama',\n", + " 'andwae jebal naegerulwa',\n", + " 'naega neol deo saranghae',\n", + " 'naega neol jikkyeojulke',\n", + " 'modeungeol da gajyeodo',\n", + " 'neo eobsin andwaeneunde',\n", + " \"i wanna love you i can't live without you\",\n", + " 'du nuneul gamgo nae du soneul jabgu',\n", + " 'i wanna have you i really need you',\n", + " 'jigeum idaero modeungeol beoryeodugo',\n", + " \"i wanna love you i can't live without you\",\n", + " 'neon geujeo naegero dagaseo myeondwae',\n", + " 'i wanna have you nae modeungeol julke',\n", + " 'ijeneun neoege yaksokhalke',\n", + " 'mal eopshi geudaeman bojyo',\n", + " 'motboncheok jinachilgeol almyeonseodo',\n", + " 'geudae gyeoteman isseumyeon',\n", + " 'shigani meonchungeot gata',\n", + " 'naenae utgiman haesseotjyo',\n", + " 'mal eopshi geudaeman bojyo tto nan',\n", + " 'hagoshipeun mari tto saenggin geojyo',\n", + " 'gakkai daga galsurok',\n", + " 'geudaewaeui georiga',\n", + " 'neomudo meolgeman neukkyeojijyo',\n", + " 'nan geudaeman',\n", + " 'i love you',\n", + " 'geujeo',\n", + " 'i want you',\n", + " 'i need you',\n", + " 'ajik eoridan mal mayo',\n", + " 'i love you',\n", + " 'jigeum isungando',\n", + " 'neoeui moksori deudgo shipeo',\n", + " 'naegyeote isseojweo',\n", + " 'joheun ilman isseotteongeon anijyo',\n", + " 'naegedo nunmuljitteon bami isseo',\n", + " 'eoneusae dagaon sarang',\n", + " 'naemameul heundeureo nohjyo',\n", + " 'geudae gyeote gamyeon andwenayo',\n", + " 'nan geudaeman',\n", + " 'i love you',\n", + " 'geujeo',\n", + " 'i want you',\n", + " 'i need you',\n", + " 'ajik eoridan mal mayo',\n", + " 'i love you',\n", + " 'jigeum isungando',\n", + " 'neoeui moksori deudgo shipeo',\n", + " 'naegyeote isseojweo',\n", + " 'i love you',\n", + " 'geujeo',\n", + " 'i want you',\n", + " 'i need you',\n", + " 'ajik eoridan mal mayo',\n", + " 'i love you',\n", + " 'jigeum isungando',\n", + " 'neoeui moksori deudgo shipeo~oh',\n", + " ...]},\n", + " 'rock': {'meta': {'train_data': ['ohhhhhhh',\n", + " 'yeahhh',\n", + " '\"kou nattara ii na\" no mousou to genjitsu ni',\n", + " 'isseki o toujite kosei o migake',\n", + " 'kakaenayamu nandai o mata hitotsu shoukyo',\n", + " 'atama kara ketsu made sore ga wa ga entame',\n", + " 'boom, boom, boom',\n", + " 'dancing through the skies',\n", + " 'mada shijainai sa himotoita shourai wa',\n", + " 'boom, boom, boom',\n", + " 'dancing through the skies',\n", + " 'daichi kettobashite',\n", + " 'motto maiagatte',\n", + " 'everybody put your hands up',\n", + " \"saa flyin' tsubasa ni nare\",\n", + " 'mitemitai na muchuu ni nareru kimi',\n", + " 'ima da seichouki shinsekai e',\n", + " 'modokashikute mou douka shiteru',\n", + " 'mugamchuu nareru mono ga hoshii',\n", + " 'fugainai hiidetenai nante kawaikunai ne',\n", + " 'konpurekkusu wa sakate ni totte orijinariti',\n", + " 'boom, boom, boom',\n", + " 'dancing through the skies',\n", + " '\"yaranakyabyou\" de yamadzumi no mondai mo',\n", + " 'boom, boom, boom',\n", + " 'dancing through the skies',\n", + " 'motto waruagaite shoutai o abaite',\n", + " \"come on, let's party!\",\n", + " 'everybody, put your hands up',\n", + " \"saa flyin' sono imeeji de\",\n", + " 'kitto nareru sa naritai jibun ni',\n", + " \"sagase you're the one oobutai e\",\n", + " \"flyin' wasureteta\",\n", + " \"flyin' kioku no naka de\",\n", + " 'mou ichido mune no takanari o kike',\n", + " 'everybody put your hands up',\n", + " 'saa flyin’ tsubasa ni nare',\n", + " 'mitemitai na muchuu ni nareru kimi',\n", + " 'ima da seichouki shinsekai e',\n", + " 'everybody, put your hands up',\n", + " \"saa flyin' sono imeeji de\",\n", + " 'kitto nareru sa naritai jibun ni',\n", + " \"sagase you're the one oobutai e\",\n", + " \"flyin' wasureteta\",\n", + " \"flyin' kioku no naka de\",\n", + " 'mou ichido mune no takanari o kike',\n", + " 'ohhh',\n", + " 'dilbar-dilbar',\n", + " 'chadha jo mujhpe suroor hai',\n", + " 'asar tera ye zaroor hai',\n", + " 'teri nazar ka kasoor hai yeh',\n", + " 'dilbar-dilbar',\n", + " 'aa paas aa tu kyon door hai',\n", + " 'yeh ishq ka jo fitoor hai',\n", + " 'nashe mein dil tere choor hai',\n", + " 'dilbar-dilbar',\n", + " 'ab to hosh na khabar hai, ye kaisa asar hai?',\n", + " 'hosh na khabar hai, ye kaisa asar hai?',\n", + " 'tumse milne ke baad dilbar',\n", + " 'tumse milne ke baad dilbar',\n", + " 'dilbar-dilbar, dilbar-dilbar',\n", + " 'dilbar-dilbar, dilbar-dilbar',\n", + " 'karti katal na aise tu chal',\n", + " 'paheli ka is nikalo koyi hal',\n", + " 'husn ka pitara khilta kamal',\n", + " 'kar loon main sabar',\n", + " 'kyun ki mitha hai fal',\n", + " 'tu mera khwaab hai, tu mere dil ka karaar',\n", + " 'dekh le jaan-e-mann, dekh le bas ek baar',\n", + " 'chain kho gaya hai, kuch to ho gaya hai',\n", + " 'chain kho gaya hai, kuch to ho gaya hai',\n", + " 'tumse milne ke baad dilbar',\n", + " 'tumse milne ke baad dilbar',\n", + " 'oh yeah!',\n", + " 'ladies',\n", + " 'ab to hosh na khabar hai, ye kaisa asar hai?',\n", + " 'hosh na khabar hai, ye kaisa asar hai?',\n", + " 'tumse milne ke baad dilbar',\n", + " 'tumse milne ke baad dilbar',\n", + " 'dilbar-dilbar',\n", + " 'makeinu! nyūgakushi, kinchō!',\n", + " 'shinchō burezā ni senpai ga sutta settā no koge ato',\n", + " 'heikin-teki chii, ude suji naki gekichin',\n", + " 'bentō wa hibi \"chikichikibōn\" nomi bimi!',\n", + " 'kyōdan no ue = shiai-ba (ring), kurasumēto wo gurinchi',\n", + " '\"we are chūbō!!\" chūbō! chūbō!',\n", + " '\"we are chūbō!!\" chūbō! chūbō!',\n", + " 'futotta danshi no chichi, monde, close your eyes...',\n", + " 'chūgaku watcha gonna freedom!! chūgaku watcha gonna freedom!!',\n", + " 'chūgaku watcha freedom!! chūgaku watcha gonna!!',\n", + " 'believe in fuck!!',\n", + " 'oh! yes! (yes!) chū ni the beam, chū ni the beam',\n", + " 'eien no ore no monster',\n", + " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", + " 'eien no ore no monster',\n", + " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", + " 'eien no ore no monster',\n", + " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", + " 'eien no ore no monster',\n", + " 'chūgaku, for me... o wakare, joshi',\n", + " 'chūgaku, for me... o wakare, danshi',\n", + " 'chūgaku, for me... o wakare, girls! (u hu hu)',\n", + " 'chūgaku, for me... o wakare da boys!!',\n", + " 'atama no naka, magamaga shiku wagamama',\n", + " 'akuma no koe, koko e omen, yobikome',\n", + " 'makura no cover wa, dani dani dani',\n", + " 'yume no naka made, honey honey honey',\n", + " 'super no okujō, mini-yuenchi de',\n", + " 'high school yankee ni katsuage help me',\n", + " 'yoko de mite iru anpanhīrō, hyaku-en ireru kara, tasukero!',\n", + " 'buon! bwon! buon! bwon!',\n", + " 'zoku-sha no beiku no sōon, rock ja nē!',\n", + " 'gimon, mō monmon monmon, doshitara moteru ka oshiero rockstar',\n", + " 'kōsha ura no ring',\n", + " 'hōkago no harenchi',\n", + " '\"we are chūbō!!\" chūbō! chūbō!',\n", + " '\"riajū bomb!!\" abo-n! abo-n!',\n", + " \"ben'i, moyōshite pinch, gekō isoge! jibun n'ie\",\n", + " 'chūgaku watcha gonna freedom!! chūgaku watcha gonna freedom!!',\n", + " 'chūgaku watcha freedom!! chūgaku watcha gonna!!',\n", + " 'believe in fuck!!',\n", + " 'oh! yes! (yes!) chū ni the beam, chū ni the beam',\n", + " 'eien no ore no monster',\n", + " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", + " 'eien no ore no monster',\n", + " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", + " 'eien no ore no monster',\n", + " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", + " 'eien no ore no monster',\n", + " 'chūgaku, for me... o wakare, joshi',\n", + " 'chūgaku, for me... o wakare, danshi',\n", + " 'chūgaku, for me... o wakare, girls! (u hu hu)',\n", + " 'chūgaku, for me... o wakare da boys!!',\n", + " 'viva! viva! chūbō!',\n", + " 'banzai! banzai! chūbō!',\n", + " 'viva! viva! chūbō!',\n", + " 'hold me ochiteyuku yami ni wa',\n", + " 'fuan ya kodoku wa nai',\n", + " 'kasanari au kodou',\n", + " 'kako mo mirai mo tokashiteku',\n", + " 'koori no hahen dakishimete',\n", + " 'yogorete shimatta kono hiroi yozora ni wa',\n", + " 'mou hoshi nante mienai to omotteta',\n", + " 'kimi ni au made',\n", + " 'keep giving me your love',\n", + " 'keep giving me your love',\n", + " 'moeru yo na kisu wo shiyou',\n", + " 'subete yaki tsukusu honoo no naka he mo',\n", + " 'kimi to nara tobi komeru',\n", + " 'kimi wo ai suru koto ga',\n", + " 'nee donna ni itaku tatte ii yo',\n", + " 'tokimeku dake no moroi kizuna ja nai',\n", + " 'naifu no you ni tsuyosa to yowasa dakishimete',\n", + " 'oreta tsubasa',\n", + " 'hitori furueru shika nakatta yoru mo aru',\n", + " 'onaji me no kimi ni aumade',\n", + " 'keep giving me your love',\n", + " 'keep giving me your love',\n", + " 'moeru yo na kisu wo shiyou',\n", + " 'subete yaki tsukusu honoo no naka he mo',\n", + " 'kimi to nara tobi komeru',\n", + " 'keep giving me your love',\n", + " 'keep giving me your love',\n", + " 'eien ni mitsumete ite',\n", + " 'kogoeru yami yoru mo fukai kiri no asa mo',\n", + " 'kimi to nara tobi tateru',\n", + " 'have you ever heard of the orange range?',\n", + " 'orenji renji wo shitteru kai',\n", + " \"don't tell your mama or she'll think you're insane\",\n", + " 'kaa-chan-tachi ni wa naishou dazo',\n", + " 'all the pretty girls listen and pertain',\n", + " 'omase na ano ko mo kiiteruze',\n", + " \"our music's best for highway speeding\",\n", + " 'haiuei tobasu nya mottekoi',\n", + " 'sekaijuu hora waratteru sora miagete',\n", + " 'saa tachiagatte oh yeah',\n", + " 'hi! say! chikyuu wa mawaru kimi no tame ni asa ga kuru',\n", + " 'hada no iro ya me no iro kachikan datte iro-iro',\n", + " 'boku mo kimi mo dosoku de hagu-kissu-i love you',\n", + " 'saa, ote wo haishaku japaniizu piipoo',\n", + " 'sekaijuu hora waratteru sora miagete',\n", + " 'saa tachiagatte oh yeah',\n", + " \"sekaijuu hora kawatteku min'na ganbatte\",\n", + " 'so tachiagatte oh yeah',\n", + " 'sekai wa hiroi hiroi totetsu mo naku',\n", + " 'ookii hito chiisai hito bibidebabidebuu',\n", + " 'dakara atama nayamasen na kimi wa kimi da',\n", + " 'sekai wa maji de kagiri neenda',\n", + " 'saa ashinami soroete 1, 2 1, 2',\n", + " 'sekaijuu hora waratteru sora miagete',\n", + " 'saa tachiagatte oh yeah',\n", + " \"sekaijuu hora kawatteku min'na ganbatte\",\n", + " 'so tachiagatte oh yeah',\n", + " 'hito wa toki ni mayoi naki sore demo sora wo miagete',\n", + " 'deigo no hana wa akaku moe hiroki daichi fumishime',\n", + " 'tomo no warau oto to futto ukabu kimi no egao',\n", + " 'atatakai hizashi maioriru chikara ikou hajime kara',\n", + " 'sekaijuu hora waratteru sora miagete',\n", + " 'saa tachiagatte oh yeah',\n", + " \"sekaijuu hora kawatteku min'na ganbatte\",\n", + " 'so tachiagatte oh yeah',\n", + " 'hey',\n", + " 'hey',\n", + " 'hey',\n", + " 'hey',\n", + " 'hey',\n", + " 'hey',\n", + " 'hey',\n", + " 'hey',\n", + " 'hey, hey, hey, hey',\n", + " 'hey, hey, hey',\n", + " 'proletariariakitusha',\n", + " 'prolisik alinishanisholn',\n", + " 'proletariariakitusha',\n", + " 'prolisik alinishanisholn',\n", + " 'hey, hey, hey, hey',\n", + " 'hey, hey, hey',\n", + " 'na na na na, nana nana nana',\n", + " 'na nana, nanana nanana',\n", + " 'na na na na, nana nana nana',\n", + " 'na nana, nanana nanana',\n", + " 'hey, hey, hey, hey',\n", + " 'hey, hey, hey',\n", + " 'proletariariakitusha',\n", + " 'prolisik alinishanisholn',\n", + " 'proletariariakitusha',\n", + " 'prolisik alinishanisholn',\n", + " 'hey, hey, hey, hey',\n", + " 'hey, hey, hey',\n", + " 'hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey',\n", + " 'hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey',\n", + " 'hey, hey, hey, hey',\n", + " 'hey, hey, hey, hey',\n", + " 'kristo, kristo, kristo',\n", + " 'nitakutana nayeye',\n", + " 'nitakutana nayeye',\n", + " 'atakutana nami',\n", + " 'atakutana nami',\n", + " 'kristo, kristo, kristo',\n", + " 'sina budi kwenda sasa sasa',\n", + " 'sina budi kwenda sasa sasa',\n", + " 'lazima nisichelewe',\n", + " 'mtoto amezaliwa',\n", + " 'mtoto amezaliwa',\n", + " 'mtoto amezaliwa',\n", + " 'kristo, kristo, kristo',\n", + " 'gloria',\n", + " 'christ, christ, christ',\n", + " 'i shall meet him',\n", + " 'i shall meet him',\n", + " 'he will meet me',\n", + " 'he will meet me',\n", + " 'christ, christ, christ',\n", + " 'i must go now',\n", + " 'now i must go now',\n", + " 'i must not be late',\n", + " 'a child has been born',\n", + " 'the child has been born',\n", + " 'christ, christ, christ',\n", + " 'gloria',\n", + " 'aramiba furaliba no-na ride',\n", + " 'doo mi soma sola eva fu ma bide',\n", + " 'foo werse young ka solf wee',\n", + " 'sem pa kugo watea pumbe imbewin',\n", + " 'bany, har shishemba kawa pishomain',\n", + " 'bous ton kowa la kafree',\n", + " 'woboo reiny everiwa',\n", + " 'woboo rewa sonpaa kul fimo',\n", + " 'ya huro wu sa kazne',\n", + " '(wahl? wahl?)',\n", + " 'ya zibo shemowem imbo we',\n", + " '(wahl? whal?)',\n", + " 'bimku kambe kenebe puletel',\n", + " 'be afubar jock simbah, he!',\n", + " 'ip september i was shinka she wa mine',\n", + " 'ip fecember fufarifa nova kuai',\n", + " 'fu kubzi au donka sui',\n", + " 'ip pecember i wa dinnk a fumbombai',\n", + " 'paka harba in my memorisos dyin',\n", + " 'vouz ze fa worme flamwi',\n", + " 'woboo reiny everiwa',\n", + " 'woboo rewa sonpaa kul fimo',\n", + " 'ya huro wu sa kazne',\n", + " '(wahl? wahl?)',\n", + " 'ya zibo shemowem imbo we',\n", + " '(wahl? whal?)',\n", + " 'bimku kambe kenebe puletel',\n", + " 'be afubar jock simbah, he!',\n", + " 'bimku kambe kenebe puletel',\n", + " 'be afubar jock simbah, he!',\n", + " 'ya huro wu sa kazne',\n", + " '(wahl? wahl?)',\n", + " 'ya zibo shemowem imbo we',\n", + " '(wahl? whal?)',\n", + " 'bimku kambe kenebe puletel',\n", + " 'be afubar jock simbah, he!',\n", + " 'bimku kambe kenebe puletel',\n", + " 'be afubar jock simbah...',\n", + " 'bimku, kambe...',\n", + " 'bimku, kambe...',\n", + " 'bimku, kambe, kenebe puletel',\n", + " 'be afubar jock simbah, eh!',\n", + " 'ka uni tramaya',\n", + " 'kuta unoi trameya dreya',\n", + " 'kuta uni tremeya',\n", + " 'utrey nu trabaya',\n", + " 'nu kunun trabya',\n", + " 'nun drey tabaya',\n", + " 'utra geya manya',\n", + " 'rendabey kunadresdama',\n", + " 'isal dunamanya',\n", + " 'endabey kunadresdama',\n", + " 'isal kunamanya',\n", + " 'endabey kunadresdama',\n", + " 'ital kunamanya',\n", + " 'andabey kunadresda',\n", + " 'kuma kuma taya',\n", + " 'ondabey kunadresdama',\n", + " 'isal dunamanya',\n", + " 'ondabey kunadresda',\n", + " 'nosa kumananya',\n", + " 'endabey kunadresdama',\n", + " 'isal enamenya',\n", + " 'andabey kunadresda',\n", + " 'no trabiyan deyabayo',\n", + " 'no trabiyan deyebo',\n", + " 'utra gaya manya',\n", + " 'rendabey kunadresdama',\n", + " 'isal dunamanya',\n", + " 'rendabey kunadresdama',\n", + " 'isal kunamanya',\n", + " 'endabey kunadresdama',\n", + " 'isal kunamanya',\n", + " 'endabey kunamanya',\n", + " 'no trabiyan deyabayo',\n", + " 'no trabiyan dayabo',\n", + " 'nopo treya domafiya',\n", + " 'itreya domafiya',\n", + " 'doma treya domafiya',\n", + " 'itreya domafiya',\n", + " 'nopo treya domafaya',\n", + " 'itreya domafaya',\n", + " 'nopo treya domafaya',\n", + " 'ipoa domofaya',\n", + " 'nopo treya domafiya',\n", + " 'itreya domafiya',\n", + " 'doma treya domafiya',\n", + " 'itreya domafiya',\n", + " 'nopo treya domafaya',\n", + " 'ipyaa domofaya',\n", + " 'nopo treya domafaya',\n", + " 'ipoa domofeya',\n", + " 'doma treya domafiya',\n", + " 'itreya domafiya',\n", + " 'doma treya domafiya',\n", + " 'itreya domafiya',\n", + " 'nopo treya dumafaya',\n", + " 'itaya domafeya',\n", + " 'nopo treya domafiya',\n", + " 'iteya dumatreya',\n", + " 'pepepepe dumadiya',\n", + " 'itreya dumadiya',\n", + " 'pepepepe dumadiya',\n", + " 'utreya dumadiya',\n", + " 'pepepeya unadiya',\n", + " 'itreya dumatraya',\n", + " 'pepepeya dumatreya',\n", + " 'itreya dumatraya',\n", + " 'i realize the screaming pain',\n", + " 'hearing loud in my brain',\n", + " \"but i'm going straight ahead, with the scar\",\n", + " '(can you hear me, can you hear me?',\n", + " 'can you hear me? so am i)',\n", + " 'wasurete shimaeba ii yo kanji-naku nacchae-ba ii',\n", + " 'surimuita kokoro ni futa o shitanda',\n", + " 'kizutsuitatte heikidayo mou itami wa nai kara ne',\n", + " 'sono ashi o hikizuri nagara mo',\n", + " 'miushinatta, jibun jishin ga',\n", + " 'oto o tatete, kuzureteitta',\n", + " 'kizukeba kaze no oto dake ga',\n", + " 'tsutaeni kitayo kizuato tadotte',\n", + " 'sekai ni oshitsubusarete shimau mae ni',\n", + " 'oboeterukana namida no sora o',\n", + " 'ano itami ga kimi no koto o mamotte kureta',\n", + " 'sono itami ga itsumo kimi o mamotterunda',\n", + " '(can you hear me? so am i)',\n", + " 'kizutsukanai tsuyosa yori mo',\n", + " 'kizutsukenai yasashisa o',\n", + " 'sono koe wa dokoka kanashisoude',\n", + " 'kakechigaeta, botan mitai ni',\n", + " 'kokoro karada, hanareteita',\n", + " 'mou ichido kokoro o tsukande',\n", + " 'tsutaeni kitayo kizuato tadotte',\n", + " 'sekai ni oshitsubusarete shimau mae ni',\n", + " 'oboeterukana namida no sora o',\n", + " 'ano itami ga kimi no koto o mamotte kureta',\n", + " 'sono itami ga itsumo kimi o mamotterunda',\n", + " '(can you hear me, can you hear me?',\n", + " 'can you hear me, can you hear me?',\n", + " 'can you hear me, can you hear me?',\n", + " 'can you hear me? so am i)',\n", + " 'mitsukekita, ano nakigoe wa',\n", + " 'machigainaku sou, jibun nodatta',\n", + " 'subete wa kono toki no tame ni',\n", + " 'kitto hajime kara wakkatetanda',\n", + " 'mou ni do to jibun dake wa hanasanaide',\n", + " 'kizuite kureta, kimi he no aizu',\n", + " 'ano itami ga kimi no koto o mamottekureta',\n", + " 'tsutae ni kitayo kizuato tadotte',\n", + " 'sore nara mou osoreru mono wa naindatto',\n", + " 'wasurenaidene egao no wake o',\n", + " 'ano itami ga kimi no koto o mamottekureta',\n", + " 'ano itami ga kimi no koto o mamottekureta',\n", + " 'sono itami ga itsumo kimi o mamotterunda',\n", + " '(can you hear me, can you hear me?',\n", + " 'can you hear me? so am i)',\n", + " 'romaji',\n", + " 'beautiful& grotesque',\n", + " 'loved me',\n", + " 'beautiful& grotesque',\n", + " 'eat you',\n", + " 'beautiful& grotesque',\n", + " 'loved me',\n", + " 'beautiful& grotesque',\n", + " 'pau pau pau',\n", + " 'pau pau pau',\n", + " 'kegarawashiku moeru',\n", + " 'metropolis yureru',\n", + " 'maten rō no saki de yume ga sabita',\n", + " 'kizukanai furi no o omae no soba no kage…',\n", + " 'kirameku toki…',\n", + " 'beautiful& grotesque',\n", + " 'loved me',\n", + " 'beautiful& grotesque',\n", + " 'eat you',\n", + " 'beautiful& grotesque',\n", + " 'loved me',\n", + " 'beautiful& grotesque',\n", + " 'kirameku kaminari wa',\n", + " 'kare o tsurete kieta',\n", + " 'beautiful& grotesque',\n", + " 'loved me',\n", + " 'beautiful& grotesque',\n", + " 'eat you',\n", + " 'beautiful& grotesque',\n", + " 'loved me',\n", + " 'beautiful& grotesque',\n", + " 'omae no kamigami wa maboroshi de wa nai ka?',\n", + " 'kanji',\n", + " 'beautiful&grotesque',\n", + " 'loved me',\n", + " 'beautiful&grotesque',\n", + " 'eat you',\n", + " 'beautiful&grotesque',\n", + " 'loved me',\n", + " 'beautiful&grotesque',\n", + " 'pau pau pau',\n", + " 'pau pau pau',\n", + " '汚らわしく 燃える',\n", + " 'metropolis 揺れる',\n", + " '摩天楼の先で夢が錆びた',\n", + " '気づかないフリのを お前のそばの影…',\n", + " 'きらめく時…',\n", + " 'beautiful&grotesque',\n", + " 'loved me',\n", + " 'beautiful&grotesque',\n", + " 'eat you',\n", + " 'beautiful&grotesque',\n", + " 'loved me',\n", + " 'beautiful&grotesque',\n", + " 'きらめく雷は',\n", + " '彼を連れて消えた',\n", + " 'beautiful&grotesque',\n", + " 'loved me',\n", + " 'beautiful&grotesque',\n", + " 'eat you',\n", + " 'beautiful&grotesque',\n", + " 'loved me',\n", + " 'beautiful&grotesque',\n", + " 'お前の神々は 幻ではないか?']},\n", + " 'data': ['dark side rhythm, dorei, zō aku standing, underground, requiem dancer',\n", + " 'gaidō, hi aburi, ubasute te, dove onnen, jizō, urami gōu, kurami...bokura ni gyō',\n", + " 'kuroku ware, teara kusare, tsubuyaku koe yowaku',\n", + " 'hone kudakete, ageku toketa, ware dokohe yuku?',\n", + " 'hara ippai ni urami bai, boro mouke reibai, zense no uso ubai',\n", + " 'abikyōkan, umeki, mogaku kanjō wa',\n", + " 'dare ga toku no ka?',\n", + " 'yū nagi, samidare noyuganda kagebōshi',\n", + " 'kamigami no me wa sutare te, ochiru, tamashī no shimi',\n", + " 'hibana ga chiru tsume no saki de, gumon wo dai te',\n", + " 'haga re ochiru katamari wo name te fusai da',\n", + " 'zan ritamae...sono \"shimi\"',\n", + " 'dark side rhythm, dorei, zō aku standing, underground, requiem dancer',\n", + " 'gaidō, hi aburi, ubasute te, dove onnen, jizō, urami gōu, kurami...bokura ni gyō',\n", + " 'kuroku ware, teara kusare, tsubuyaku koe yowaku',\n", + " 'hone kudakete, ageku toketa, ware dokohe yuku?',\n", + " 'hara ippai ni urami bai, boro mouke reibai, zense no uso ubai',\n", + " 'abikyōkan, umeki, mogaku kanjō wa',\n", + " 'dare ga toku no ka?',\n", + " 'yū nagi, samidare noyuganda kagebōshi',\n", + " 'kamigami no me wa sutare te, ochiru, tamashī no shimi',\n", + " 'hibana ga chiru tsume no saki de, gumon wo dai te',\n", + " 'haga re ochiru katamari wo name te fusai da',\n", + " 'zan ritamae...sono \"shimi\"',\n", + " 'warawa no aka kara namida chi wo shokui',\n", + " 'bōki mono wo san e',\n", + " 'shō shite gei eniyuku tabi ritsu no toki ni',\n", + " 'hikari arumoto e',\n", + " '\"mada iki te...\" namari kurui keiren',\n", + " 'osore kurushi sa, sasae kiren seimei henosemegi',\n", + " 'koyoi kokoni nokosu',\n", + " 'jibaku saehodoku ikusen no omoi',\n", + " 'jibaku saehodoku ikusen no omoi',\n", + " 'yū nagi, samidare noyuganda kagebōshi',\n", + " 'kamigami no me wa sutare te, ochiru, tamashī no shimi',\n", + " 'hibana ga chiru tsume no saki de, gumon wo dai te',\n", + " 'haga re ochiru katamari wo name te fusai da',\n", + " 'hibika seru, izure, sumikko no innen wosubete',\n", + " 'hazama, nure ru hodo ni imi wo koboshite tsutaeta',\n", + " 'zan ritamae...sono \"shimi\"',\n", + " 'yorokobi wa nagareru mizu no you',\n", + " 'sukui ageta te no hira kara, sui uri to koboreochita',\n", + " 'sore demo kurikaesu you ni, sasayaka ni ryoute wo nurase',\n", + " 'oohh, oooohhh',\n", + " 'hikari wa aoaza no you',\n", + " 'kizukanai aida ni, dare mo shiranai aida ni',\n", + " 'suji tsutatte jinjin to ude ga itande mo',\n", + " 'dou ka kimi wo nagekanaide',\n", + " 'always, always, tatta yume no nai machi made kuridashite',\n", + " 'always, always, tatta uzuku naru itsuka no kimi mo sou',\n", + " 'always, always, tatta kuzaerarenai ano ko ga tsukedashite',\n", + " 'always, always, kakato de ai wo uchinarasou',\n", + " 'kanashimi wa maku no you',\n", + " 'saibou susumu you ni, itsu demo soko ni atte',\n", + " 'tanoshimi wa awa no you demo',\n", + " 'dou ka kimi wo nagekanaide',\n", + " 'always, always, tatta yume no nai machi made kuridashite',\n", + " 'always, always, tatta uzuku naru itsuka no kimi mo sou',\n", + " 'always, always, tatta susumanai kare wo sasoidashite',\n", + " 'always, always, tsumasaki de ai wo uchinarasou',\n", + " \"without you, thinking 'bout you\",\n", + " 'without you, oohh',\n", + " \"thinking 'bout you, ooohhh\",\n", + " 'always, always, tatta yume no nai machi made kuridashite',\n", + " 'always, always, tatta uzuku naru itsuka no kimi mo sou',\n", + " 'always, always, tatta kuzaerarenai ano ko ga tsuredashite',\n", + " 'always, always, kakato de ai wo uchinarasou',\n", + " 'oohh, ooohh',\n", + " 'wareru',\n", + " 'wareru kuchi kara',\n", + " 'morasu',\n", + " 'morasu giji sekai',\n", + " 'sanzan warai atta nochi',\n", + " 'senaka no teki musuu ni tsukisasu',\n", + " 'seken teki ishi sotsuu',\n", + " 'watashi wa tada tada ikitai dake',\n", + " 'kuchiguse no uragawa ni wa',\n", + " 'anata no gisei wa watashi no inochi',\n", + " 'batto nomikonde',\n", + " 'ukideta kekkan te de kakusu',\n", + " 'koubiya kana as***a o dakishimete',\n", + " 'dare mo ga koufuku no sekai?',\n", + " 'taisouna ikikata ne',\n", + " 'daidougei hitona no?',\n", + " 'boon',\n", + " 'what now?',\n", + " 'boonest',\n", + " 'what now?',\n", + " 'kagen o shiranai ibutsu konnyuu',\n", + " 'sanzan warai atta nochi',\n", + " 'senaka no teki musuu ni tsukisasu',\n", + " 'seken teki ishi sotsuu',\n", + " 'koushiki no ba de',\n", + " 'rikaisha to nanoru omae mo sou sa',\n", + " 'sanzan warai atta nochi',\n", + " 'hone no zui made',\n", + " 'i miss you so bad',\n", + " 'kikoe...teru?... koe...',\n", + " 'watashi... koko ni... iru no... kana...',\n", + " 'ima... hitori... yume kara... meza...metemo?',\n", + " 'kokoro wa... toji...ta mama...',\n", + " 'sayonara... jibun... ienai...',\n", + " 'to be loved... itsuka... tsuna...ga...ttara',\n", + " 'ibasho... kitto... mitsu... karu kana...',\n", + " 'to be loved... nanimo... hana...sana...ide...',\n", + " 'nemuru... you ni... tada... soba ni isasete...',\n", + " 'furue...teru?... naze...',\n", + " 'watashi... doko ni... iku no... kana...',\n", + " 'ima... uso de... ii kara... koko.. chiyoku...',\n", + " 'namida wo... kizu...tsukete...',\n", + " 'gomen ne... anata... ienai...',\n", + " 'to be loved... itsuka... too...ku na...ttara...',\n", + " 'ikiru... imi mo... naku... su no kana...',\n", + " 'to be loved... daremo... fure... nai... de ne...',\n", + " 'yume no... tsuzuki... tada... koko ni isasete...',\n", + " 'to be loved... itsuka... too...ku na... ttara...',\n", + " 'ikiru... imi mo... naku... su no kana...',\n", + " 'to be loved... itsuka... tsuna...ga...ttara...',\n", + " 'ibasho... kitto... mitsu... karu kana...',\n", + " 'to be loved... nanimo... hana... sana... ide...',\n", + " 'nemuru... you ni... tada... soba ni isasete...']}}},\n", + " 'tl': {'sentence': {'pop': {'meta': {'train_data': ['waka mono wa listen',\n", + " 'easy very easy',\n", + " 'nani mo kamo you think',\n", + " 'easy very easy',\n", + " '... makase suki ni youshoshini',\n", + " 'sore kanji i jyanai',\n", + " \"it's not very easy\",\n", + " 'tayotte bakari jya dou ni kanaranai',\n", + " 'jibun de aita bundake dou ni kanaru',\n", + " 'hito no hanashi wa dou demo iisa',\n", + " 'the way you do sore ga chuyo',\n", + " 'la la la',\n", + " 'ikai to amakunai',\n", + " 'la la la',\n", + " 'chikara wasureru',\n", + " 'la la la',\n", + " 'ikerarenai kamo',\n", + " \"you think it's easy\",\n", + " 'easy very easy',\n", + " 'waga mama wa just stop',\n", + " 'easy very easy',\n", + " 'susun de mitaradou?',\n", + " 'easy very easy',\n", + " 'aimai na heaven',\n", + " 'kyou kara waketsu',\n", + " \"it's like the hell demo\",\n", + " 'easy very easy',\n", + " 'ima made no jibun wa sotete miyou',\n", + " 'are you ready for this? deshou wa douyo',\n", + " 'hito no hanashimo tamani wa kiite',\n", + " 'the way you do sore ga chuyo',\n", + " 'la la la',\n", + " 'ikkai to amakunai',\n", + " 'la la la',\n", + " 'chikara wasureru',\n", + " 'la la la',\n", + " 'ikerarenai kamo',\n", + " \"you think it's easy\",\n", + " 'easy very easy',\n", + " \"i'm te... telling you\",\n", + " \"it's gonna be ea... easy\",\n", + " \"why don't you come and follow me\",\n", + " 'phenomenon world',\n", + " 'are you ready for this',\n", + " 'easy very easy',\n", + " 'la la la',\n", + " 'ikai to amakunai',\n", + " 'la la la',\n", + " 'chikara wasureru',\n", + " 'la la la',\n", + " 'ikerarenai kamo',\n", + " \"you think it's easy\",\n", + " 'easy very easy',\n", + " 'latinos',\n", + " 'royce (royce)',\n", + " 'balvin, j balvin',\n", + " \"leggo'\",\n", + " \"c'mon (que lo que mami)\",\n", + " 'me gusta como me hablas, me encanta tu calor',\n", + " 'you like the way i hold you when we are falling in love',\n", + " 'eso amor (yo sé que sí)',\n", + " 'in love, eso amor (mami yo sé que sí)',\n", + " \"if it's love, eso amor\",\n", + " 'a mi lado te quiero así',\n", + " \"girl i know you're a handful 'cause you know what you like\",\n", + " 'you might be hard to handle pero te voy a enseñar (pero que rica estás)',\n", + " 'enseñar (qué rica estás)',\n", + " \"what it's like (what it's like)\",\n", + " \"when you're\",\n", + " 'stuck on a feeling',\n", + " \"just can't stop, once ain't enough\",\n", + " 'better lock this down, better box it up',\n", + " 'gotta work me out, make it real',\n", + " 'gotta make it count, get stuck on a feeling',\n", + " \"just can't stop, once ain't enough\",\n", + " 'better lock this down, better box it up',\n", + " 'gotta work me out, make it real',\n", + " 'gotta make it count, get stuck on a feeling',\n", + " 'ella me tiene (dímelo mami)',\n", + " 'pegao, pegao',\n", + " 'pegao, pegao, pegao',\n", + " 'check it out',\n", + " \"let's go hide out in private\",\n", + " \"won't you show me your place? (your place)\",\n", + " 'a little peace and quiet (woo)',\n", + " 'where we can both misbehave',\n", + " 'mirala, la diferente a las demás',\n", + " 'quisiera besarla sigue balando, conmigo amanecerá (mirala)',\n", + " 'no voy a soltarla',\n", + " 'stuck on a feeling',\n", + " \"just can't stop, once ain't enough\",\n", + " 'better lock this down, better box it up',\n", + " 'gotta work me out, make it real',\n", + " 'gotta make it count, get stuck on a feeling',\n", + " \"just can't stop, once ain't enough\",\n", + " 'better lock this down, better box it up (stuck on a feeling)',\n", + " 'gotta work me out, make it real',\n", + " 'gotta make it count, get stuck on a feeling',\n", + " '(ven conmigo mami)',\n", + " 'stuck on a feeling',\n", + " '(se juntaron los tigres)',\n", + " 'she got me stuck on a feeling',\n", + " 'she got me stuck on a',\n", + " 'she got me, she got me',\n", + " \"okay, estamos ready pa' la action\",\n", + " 'mi nena tiene swag',\n", + " \"she's all about the fashion\",\n", + " 'si yo supiera que cuando camina',\n", + " 'todo el mundo la mira y la verdad',\n", + " 'yo no quiero distraction',\n", + " 'mirala, la diferente a las demás',\n", + " 'quisiera besarla sigue balando, conmigo amanecerá',\n", + " 'no voy a soltarla',\n", + " 'stuck on a feeling',\n", + " \"just can't stop, once ain't enough\",\n", + " 'better lock this down, better box it up (yeah-eh)',\n", + " 'gotta work me out, make it real (work it out, yeah)',\n", + " 'gotta make it count, get stuck on a feeling',\n", + " \"just can't stop, once ain't enough (stuck on a feeling)\",\n", + " 'better lock this down, better box it up (stuck on a feeling)',\n", + " 'gotta work me out, make it real',\n", + " 'gotta make it count, get stuck on a feeling',\n", + " 'ella me tiene pegao',\n", + " 'ella me tiene pegao',\n", + " 'ella me tiene, ella me tiene (stuck on a)',\n", + " 'ella me tiene pegao (stuck on a feeling)',\n", + " 'pegao, pegao, peago, pegao (woo)',\n", + " 'stuck on a, stuck on a, stuck on a, stuck on a feeling',\n", + " 'she got me stuck on a feeling',\n", + " 'band bottle sharab diye',\n", + " 'band bottle sharab diye',\n", + " 'ho bharda naa dil chandra',\n", + " 'haaye ni bhariye shabab diye',\n", + " 'band bottle sharab diye…',\n", + " 'band bottle sharab diye…',\n", + " 'muh de naal patt deya tera datt ni',\n", + " 'deek laa k pee ja tenu fatta-fatt ni',\n", + " 'muh de naal patt deya tera datt ni',\n", + " 'deek laa k pee ja tenu fatta-fatt ni',\n", + " 'makeup di lod koi naa',\n", + " 'makeup di lod koi naa',\n", + " 'tu beauty punj-aab di a',\n", + " 'band bottle sharab diye…',\n", + " 'band bottle sharab diye…',\n", + " 'kach wich rehndi aa tu band balliye',\n", + " 'eho gall mainu na pasand balliye',\n", + " 'kach wich rehndi aa tu band balliye',\n", + " 'eho gall meainu na pasand balliye',\n", + " 'mehka chadde ang ang ni',\n", + " 'mehka chadde ang ang ni',\n", + " 'jyo patti e gulaab diye',\n", + " 'band bottle sharab diye…',\n", + " 'band bottle sharab diye…',\n", + " 'birdi de naal jagroop rehnda a',\n", + " 'paindi jadon shaam ghut laa he lainda a',\n", + " 'birdi de naal jagroop rehnda a',\n", + " 'paindi jadon shaam ghut laa he lainda a',\n", + " 'jandi na bhulaya bhuldi',\n", + " 'jandi na bhulaya bhuldi',\n", + " 'jive raat suhag diye',\n", + " 'band bottle sharab diye…',\n", + " 'band bottle sharab diye…',\n", + " 'band bottle sharab diye…',\n", + " 'band bottle sharab diye…',\n", + " 'iy thu tus esteros',\n", + " 'iy podo oreh keh tonalee keh ston podo',\n", + " 'to so nonara ko lo thee, arestee to nee to ro',\n", + " 'ee-theh heera ro see to stol mundos',\n", + " 'elfkar dios prosko preen ton sfor pot mon',\n", + " 'paga leh nee seh',\n", + " 'yono tetas spen feeks sehrio nee skon dos',\n", + " 'eh-lo ven meero no so seh sehr, ee satra pos no neemus',\n", + " 'an appa lee nee stapa restyon salpos',\n", + " 'meh temio lo lopo',\n", + " 'prol lomen pros ma sho meh tha epa mera nwera no',\n", + " 'metheh eh ef no shono ma tohng',\n", + " 'a theh ee ana preyomen, ezsmente sehr es mee mertax seh dtontuh ro',\n", + " 'dentro nor kleez famas meyes seenon deh, zo menen peezon des',\n", + " 'paga leh nee seh',\n", + " 'yono tetas spen feeks sehrio nee skon dos',\n", + " 'eh-lo ven meero no so seh sehr, ee satra pos no neemus',\n", + " 'an appa lee nee stapa restion salpos',\n", + " 'one, one plus one',\n", + " 'two, solo tú',\n", + " 'three, three dog night',\n", + " 'four, four seasons',\n", + " 'five, jackson five',\n", + " 'six, kiss my sex',\n", + " 'seven, seven up',\n", + " 'eight, after eight',\n", + " 'nine, nine to five',\n", + " 'ten, bo derek',\n", + " 'suck it to me , suck it to me babe',\n", + " 'suck it to me, suck it to me now',\n", + " 'after dinner, before dinner',\n", + " 'after lunch, before lunch',\n", + " 'after breakfast, before breakfast',\n", + " 'after flight, before flight',\n", + " 'you want it. you want it',\n", + " 'you get it. you get it',\n", + " 'you want money, you want vices, you want drugs',\n", + " 'all drugs',\n", + " 'drugs, drugs, drugs',\n", + " 'all drugs',\n", + " 'cocaina, tonifica',\n", + " 'heroína, crea síndrome',\n", + " 'marihuana, coloca',\n", + " 'bustaid, relaja',\n", + " 'valium 15, estimula',\n", + " 'dexedrina, enloquece',\n", + " 'sosegón, alucina',\n", + " 'el opio, amodorra',\n", + " 'angel dust, es total',\n", + " 'suck it to me , suck it to me babe',\n", + " 'suck it to me, suck it to me now',\n", + " 'after dinner, before dinner',\n", + " 'after lunch, before lunch',\n", + " 'after breakfast, before breakfast',\n", + " 'after flight, before flight',\n", + " 'get it on, get it on',\n", + " 'you want it, you want it',\n", + " 'you got it, you got it',\n", + " 'you want money, you want vices',\n", + " 'you want pieles, you want joyas',\n", + " 'you want aerotaxi, you want submarines',\n", + " 'you want records, you want fashion',\n", + " 'you want partys all day long',\n", + " 'you want partys all night long',\n", + " 'you want alcohol',\n", + " 'you want alcohol',\n", + " 'vodka con ginebra, es total',\n", + " 'vodka con piña, es total',\n", + " 'vodka con naranja, es total',\n", + " 'vodka con limón, es total',\n", + " 'cubalibre de ginebra, es total',\n", + " 'cubalibre de ron, es total',\n", + " 'cazalla, es total',\n", + " 'aguardiente, es total',\n", + " 'horchata, es total',\n", + " 'vino de mesa, es total',\n", + " 'cerveza con casera, es total',\n", + " 'plataforma de charol',\n", + " 'mini-shorts ajustado y plateado',\n", + " 'cazadora de lamé y un látigo en los pies para darte bien',\n", + " 'buscando tu calor he bajado a las cloacas',\n", + " 'y las ratas me dieron su amor',\n", + " 'amor de rata, amor de cloaca',\n", + " 'amor de alcantarilla, amor de basurero',\n", + " 'lo hago sólo por dinero',\n", + " 'cowboy desperado',\n", + " 'cowboy desperado (hahahaha)',\n", + " 'cowboy desperado',\n", + " 'cowboy desperado',\n", + " 'cowboy desperado',\n", + " 'cowboy desperado',\n", + " 'cowboy desperado',\n", + " 'cowboy desperado',\n", + " 'vein',\n", + " 'j. balvin',\n", + " 'belinda',\n", + " 'la familia...',\n", + " 'translation',\n", + " \"excuse me, mami, i don't speak any spanish\",\n", + " 'óyeme, papi, dime qué es lo que quieres...',\n", + " \"can't understand a word you say but i like it\",\n", + " 'pues si te gusta tanto, ¿por qué no aprendes?',\n", + " 'how do you say \"i like you\"? me gustas',\n", + " 'how do you say \"i want you\"? te deseo',\n", + " 'how do you say \"i need you\"? te necesito',\n", + " 'how do you say \"i wanna fuck ya\\'?',\n", + " '¡¿qué?!',\n", + " '¡¿qué?!',\n", + " 'mejor calladito, (oh oh)',\n", + " 'y solo baila conmigo, (oh oh)',\n", + " 'mejor calladito, (oh oh)',\n", + " 'así te ves mas bonito, (oh oh)',\n", + " 'i speak body language',\n", + " 'so talk to me',\n", + " 'talk to me',\n", + " 'talk to me',\n", + " '(talk to me)',\n", + " \"yo' booty likes it's trynna say\",\n", + " 'bop bop billy bop billy (bop billy)',\n", + " 'me no speak \"eespanish\"',\n", + " 'but i can say \"señorita\"...',\n", + " '¿cómo está belindita?',\n", + " \"y gracias fo' being my ficha\",\n", + " \"let's go!\",\n", + " \"excuse me, mami, i don't speak any spanish\",\n", + " 'óyeme, papi, dime qué es lo que quieres...',\n", + " \"can't understand a word you say but i like it\",\n", + " 'pues si te gusta tanto, ¿por qué no aprendes?',\n", + " 'how do you say \"i like you\"? me gustas',\n", + " 'how do you say \"i want you\"? te deseo',\n", + " 'how do you say \"i need you\"? te necesito',\n", + " 'how do you say \"i wanna fuck ya\\'?',\n", + " '¡¿qué?!',\n", + " '¡¿qué?!',\n", + " 'mejor calladito, (oh oh)',\n", + " 'y solo baila conmigo, (oh oh)',\n", + " 'mejor calladito, (oh oh)',\n", + " 'así te ves mas bonito,(oh oh)',\n", + " 'oh, ok',\n", + " \"belinda, tu sabe' que estás bien linda y la disco está lista\",\n", + " \"ok, just me and your friend, yo digo lo que sea but he don't understand\",\n", + " 'lemme take you to la fiesta... sí, the party, man',\n", + " \"pero como tu no entiende na', you're fucking stupid, man\",\n", + " \"excuse me, mami, i'm the one who speaks spanish\",\n", + " 'óyeme, papi, dime qué es lo que quieres...',\n", + " '... y yo no sé how you do it but i like it',\n", + " 'pues si te gusta tanto, ¿por qué no aprendes?',\n", + " 'how do you say \"i like you\"? me gustas',\n", + " 'how do you say \"i want you\"? te deseo',\n", + " 'how do you say \"i need you\"? te necesito',\n", + " 'how do you say \"i wanna fuck ya\\'?',\n", + " '¡¿qué?!',\n", + " '¡¿qué?!',\n", + " 'mejor calladito, (oh oh)',\n", + " 'y solo baila conmigo, (oh oh)',\n", + " 'mejor calladito, (oh oh)',\n", + " 'así te ves mas bonito, (oh oh)',\n", + " 'translation',\n", + " 'you canââ\\x80â\\x99t be a beacon',\n", + " '(chorus)',\n", + " 'you canââ\\x80â\\x99t be a beacon if your light donââ\\x80â\\x99t shine',\n", + " 'you canââ\\x80â\\x99t be a beacon if your light donââ\\x80â\\x99t shine',\n", + " 'thereââ\\x80â\\x99s a little light in all of us by godââ\\x80â\\x99s design',\n", + " 'but you canââ\\x80â\\x99t be a beacon if your light donââ\\x80â\\x99t shine',\n", + " 'how can you ask for the truth',\n", + " 'when you do not truthful live',\n", + " 'how can you ask forgiveness',\n", + " 'when you donââ\\x80â\\x99t forgive',\n", + " 'i donââ\\x80â\\x99t mean to bring you down or speak to you unkind',\n", + " 'but you canââ\\x80â\\x99t be a beacon if your light donââ\\x80â\\x99t shine',\n", + " '(repeat chorus)',\n", + " 'how can you ask a child to be honest and true?',\n", + " 'when he can only judge whatââ\\x80â\\x99s right by what he sees in you',\n", + " 'how can you offer vision, yet walk around blind',\n", + " 'no you canââ\\x80â\\x99t be a beacon if your light donââ\\x80â\\x99t shine',\n", + " '(repeat chorus)',\n", + " 'break, break, break',\n", + " 'take a break , break, break',\n", + " 'take a break , break, break',\n", + " 'take a break , break, break this color',\n", + " 'take up your back',\n", + " 'and get away from here',\n", + " \"we will be there if you don't care\",\n", + " \"you don't know my telephone number\",\n", + " \"call my name and i'll be there\",\n", + " 'break, break, break',\n", + " 'take a break , break, break',\n", + " 'take a break , break, break',\n", + " 'take a break , break, break this color, this color',\n", + " 'break, break, break',\n", + " 'take a fucking break',\n", + " 'take a break , break, break',\n", + " 'take a break , break, break this color, this color',\n", + " 'can i, can i, can i, can i, can i',\n", + " 'can i, can i, can i, can i, can i be your eyes?',\n", + " '(entonces por qué me decís que lo haga otra vez?)',\n", + " 'break, break, break',\n", + " 'take a fucking break',\n", + " 'palo palo palo palo palo',\n", + " 'palo palo palo palo palo mi tas',\n", + " '(no estás grabando, no?)',\n", + " 'take up your back',\n", + " 'and get away from here',\n", + " \"you don't know my telephone number\",\n", + " \"you don't know my telephone number\",\n", + " 'looking for love',\n", + " 'negai o komete (every night)',\n", + " 'dekirusa (you can make it)',\n", + " 'jibun o shinjite',\n", + " 'imakara mukae ni ikunda',\n", + " 'uh baby dare nimo maketakunainda',\n", + " \"don't give up kore ga saigo no koisa\",\n", + " 'furueru my heart kakeruyo ride on now',\n", + " 'egaita mirai e sokkou',\n", + " 'imasugu chokkou mukauyo',\n", + " 'ready go',\n", + " 'mukauyo ready go!',\n", + " 'tonight tonight kanarazu',\n", + " \"lovin' lovin' lovin' you\",\n", + " 'tsunaida te to te o gyutto',\n", + " 'nigiruyo zutto futari wa get on',\n", + " 'so keep on keep on chikauyo',\n", + " 'oh yeah yeah yeah',\n", + " 'doushiyoumonai youna',\n", + " 'surechigai mo arusa',\n", + " 'toki ni namida datte afurerumonsa',\n", + " 'demo norikoeru tabini',\n", + " 'tsuyoku narenda',\n", + " 'kimi to tsunagu migite',\n", + " \"kiite nandemo i don't care\",\n", + " \"muteki ni nareru i'm your man\",\n", + " 'unmei kanjita face to face',\n", + " 'kimo to dokomademo go new days',\n", + " 'afuredasu omoi todoke',\n", + " 'go ready go sou futari no',\n", + " 'ultra love itsumademo oh',\n", + " 'hajimete kanjita unmei',\n", + " 'shinjite kenmei anata e oneway',\n", + " 'try try itsudemo',\n", + " \"lovin' lovin' lovin' you\",\n", + " 'deaeta kiseki wa kitto',\n", + " 'unmei motto kagayake get on',\n", + " 'so keep on keep on sukitesa',\n", + " 'oh yeah yeah yeah',\n", + " 'love love love ultra love oh...',\n", + " 'love lovelove ultra love',\n", + " 'ultra lover loverlover love',\n", + " 'hanasanai itsumo',\n", + " 'sobo ni ite mamoritai',\n", + " 'egaita mirai e sokkou',\n", + " 'imasugu chokkou',\n", + " 'mukauyo ready go',\n", + " 'tonight tonight kanarazu',\n", + " \"lovin' lovin' lovin' you\",\n", + " 'tsunaida te to te o gyutto',\n", + " 'nigiruyo zutto futari wa get on',\n", + " 'so keep on keep on',\n", + " 'chikauyo oh yeah yeahyeah',\n", + " 'scindi, torte vi yo',\n", + " 'vije e ja, va mi ture',\n", + " 'farolos e ran, seki tuna',\n", + " 'ka li tule',\n", + " 'crevi omne novi some',\n", + " 'tu, mon eramis',\n", + " 'desin tela',\n", + " 'move ad va, tiyo',\n", + " 'munera fara',\n", + " 'stir antero',\n", + " 'haranten no, saeve',\n", + " 'sere muna, vorrina',\n", + " 'sere muna, vorrina',\n", + " 'halay (halay, halay)',\n", + " 'soke brena',\n", + " 'ful madon ne',\n", + " 'unom laso',\n", + " 'gra cordia no',\n", + " 'vida scila',\n", + " 'senten tina',\n", + " 'praevi ame, so ka tavia some',\n", + " 'tu, mon eramis',\n", + " 'desin tela',\n", + " 'move ad va, tiyo',\n", + " 'munera fara',\n", + " 'stir antero',\n", + " 'haranten no, saeve',\n", + " 'sere muna, vorrina',\n", + " 'sere muna, vorrina',\n", + " 'an usum ve',\n", + " 'chel lumena',\n", + " 'tu, mon eramis',\n", + " 'desin tela',\n", + " 'move ad va, tiyo',\n", + " 'munera fara',\n", + " 'stir antero',\n", + " 'haranten no, saeve',\n", + " 'sere muna, vorrina',\n", + " 'sere muna, vorrina',\n", + " 'yoyo honey singh hey. anirudh',\n", + " 'machan thoolu',\n", + " 'speed speed speed vaenum',\n", + " 'speed kaati poda nee',\n", + " 'late late late illama',\n", + " 'latestaga vada nee',\n", + " 'thakida thaka thimi thaalam thaan',\n", + " 'thaom tharikida melam thaan',\n", + " 'thakida thaka thimi thaalam thaan',\n", + " 'thaom tharikida melam thaan',\n", + " 'speed speed speed vaenum',\n", + " 'speed kaati poda nee',\n", + " 'late late late illama',\n", + " 'latestaga vada nee',\n", + " 'hey who this honey',\n", + " 'hey who is this. honey',\n", + " 'hey who is this',\n", + " 'who is this. who is this. honey',\n", + " 'hey who who who…?? who is this.?',\n", + " 'honey singh. ah unga aaya',\n", + " 'aada vaa? aha aada vaa?',\n", + " 'aha aada vaa? aha aada vaa?',\n", + " 'aha aada vaa? aha aada vaa?',\n", + " 'on the floor',\n", + " 'naalai endrum nam kaiyil illai',\n", + " 'naam yaarum devan kai bømmaigale',\n", + " 'èndraal køøda pøraadu nanba',\n", + " 'èndraikkum thøarkkaathu unmaigale',\n", + " 'husain bøltai pøl nillamal oødu',\n", + " 'gøld thedi varum',\n", + " 'unthan vaazhviruku olympicai pølae',\n", + " 'vaervai vetri tharum',\n", + " 'naangal rishiyum illai',\n", + " 'oru kushiyil šønnaøm',\n", + " 'pudicha pudidaa',\n", + " 'èthir neechal adi. vendru aethukødi',\n", + " 'ada jølly. namma vaali',\n", + " 'namma vaali',\n", + " 'machan thøølu',\n", + " 'èthir neechal adi. vendru aethukødi',\n", + " 'ada jølly ah vaali šønna padi',\n", + " 'èthir neechal adi. vendru aethukødi',\n", + " 'ada jølly ah vaali šønna padi',\n", + " 'hey vaada machi adichu paakalam èthirneechal',\n", + " 'yøyø høney šingh hey',\n", + " \"ha ha. i'm gøing døwn baby\",\n", + " 'deep døwn tø the šøuth',\n", + " 'onnu rendu møønu',\n", + " \"utaale apna phøne'nu\",\n", + " \"bajrehihey teri baby kølaveri tune'nu\",\n", + " 'frøm mumbai tø marina',\n", + " 'asin še le ke kareena',\n", + " 'šab ke bbm ke bing',\n", + " 'hey whø is this? hip høp tamizhan',\n", + " 'welcøme tø chennai. ènga oøru',\n", + " 'intha oørukula, naanga thaaru maaru',\n", + " \"first'tu vaathiyaaru avar šuperstar'ru\",\n", + " \"kavithai ku yaaru bharathiyaar'ru\",\n", + " 'ènglish padathula this is šparta',\n", + " 'ithu tamil padam athanala adrangø ****',\n", + " 'ènga kitta vachukitta avalavuthaan',\n", + " 'ènglish paesinaalum tamizhan daa',\n", + " 'jhør laga ke hai',\n", + " 'jhør lage ke hai',\n", + " 'machi are yøu ready ah',\n", + " 'jhør lage ke hai',\n", + " 'machi are yøu ready ah',\n", + " 'jhør lage ke hai',\n", + " 'machi are yøu ready ah',\n", + " 'machi are yøu ready ah',\n", + " 'èthir neechal adi. vendru aethukødi',\n", + " 'ada jølly. namma vaali',\n", + " 'èthir neechal adi. vendru aethukødi',\n", + " 'ada jølly ah vaali šønna padi',\n", + " 'èthir neechal adi. vendru aethukødi',\n", + " 'ada jølly ah vaali šønna padi',\n", + " 'èthir neechal adi. vendru aethukødi',\n", + " 'ada jølly ah vaali šønna padi',\n", + " 'èthir neechal adi. vendru aethukødi',\n", + " 'ada jølly ah vaali šønna padi',\n", + " 'pace, bigazzi, savio',\n", + " 'mmmmm… ai lov iu, seven ileven',\n", + " 'in the beautiful trek, in the seven sanfransisc',\n", + " 'ai lov yu, tu yu dobermann',\n", + " 'rockeroll stu vidll stu faije mi, and twist yo faiar da fè',\n", + " 'and the travel wor, and the biutiful wor',\n", + " 'mmmmm… loven, seven worken fair',\n", + " 'in the loven spaghen spin wel',\n", + " 'cicu cicu uan, cicu cicu uan. an lovin spai',\n", + " \"bubabal allavanain, ailaven stev'uavall lain\",\n", + " 'rubalà, fainanais, ivomall, lovem yu',\n", + " \"ande lovin' yu. ai mall a stavam uehen bailam o stail\",\n", + " 'inde loive stain. ala uolo main, uochen gaga. mas tuò…',\n", + " \"ain… ain… ai… ai' 'o pere…\",\n", + " \"uan lain' staind uochen, and biutiful, end biutiful lail lavyu\",\n", + " 'ai lavu yu, rock',\n", + " 'birì bu ba, birì bu ba. bail fain lavyu',\n", + " 'in the stauel mi, for yu, for yu, for yu for mi',\n", + " 'ai randiu, ai randiu',\n", + " 'well com tu in bainait',\n", + " 'aia. aia. aia',\n", + " 'uen for',\n", + " 'body cult please fuego burns me , escapelo cuts me mummy-donkey-kong , mamy-donkey-kong',\n", + " 'i wanna be a \" cyro-plastic-shiny-beauty-boy \"',\n", + " 'cut me hoy',\n", + " 'i stand still',\n", + " \"it's not a big deal\",\n", + " \"it's not a big deal\",\n", + " 'fuego burns me , escapelo cuts me mummy-donkey-kong , mamy-donkey-kong',\n", + " 'i wanna be a \" zero-plastic-shiny-beauty-boy \"',\n", + " 'cut me hoy',\n", + " 'i stand still',\n", + " \"it's not a big deal\",\n", + " \"that's a nice operation\",\n", + " 'see my body is sexy',\n", + " 'así, como todas da mutaz here',\n", + " 'see my body is sexy ainsi',\n", + " 'pardon me anata o mi teru to crazy',\n", + " 'suddenly ano toki deau made',\n", + " 'tōi ohanashi no yō ne oh yeah',\n", + " 'gin no messhu ni wa tsumetai kaze oh yeah',\n", + " 'sabishī kimochi wa tada kimagure ni',\n", + " 'hito no yasashi-sa ubau kanashī one man dance ow!',\n", + " 'is it true',\n", + " 'shinji rarenai koto yo oh baby',\n", + " 'i see you',\n", + " 'anata ni kagayaku my eyes',\n", + " 'wish i know',\n", + " 'kokoro ga hodokete yuku oh baby',\n", + " 'is it true',\n", + " 'anata no ude no naka uh!',\n", + " 'la la la la...',\n", + " 'is it true, is it true',\n", + " 'la la la la... uh!',\n", + " 'holding back ai ga afurete kuru oh baby',\n", + " 'watashi kawatte yuku no yo ima uh - uh!',\n", + " 'dareka o aisuru koto shittakara',\n", + " 'nidoto furimukanai kanashī one man dance ow!',\n", + " 'is it true',\n", + " 'shinji rarenai koto ne oh baby',\n", + " 'i see you',\n", + " 'anata ni tokimeku my eyes',\n", + " 'wish i knew',\n", + " 'namida ga kawaite yuku oh baby',\n", + " 'is it true',\n", + " 'anata no ude no naka uh!',\n", + " 'la la la la...',\n", + " 'is it true, is it true',\n", + " 'la la la la... uh!',\n", + " 'sabishī kimochi wa tada kimagure ni',\n", + " 'hito no yasashi-sa ubau kanashī one man dance ow!',\n", + " 'is it true',\n", + " 'shinji rarenai koto yo oh baby',\n", + " 'i see you',\n", + " 'anata ni kagayaku my eyes',\n", + " 'wish i know',\n", + " 'kokoro ga hodokete yuku oh baby',\n", + " 'is it true',\n", + " 'anata no ude no naka yeah!',\n", + " 'la la la la...',\n", + " 'is it true, is it true',\n", + " 'la la la la... oh baby',\n", + " \"a 'lè parej, i lo savia ch'a l'è propi parej\",\n", + " \"noi i soma 'n pòpol 'na rassa ch'a l'ha sempre viagià\",\n", + " 'deserti, aquasse e ostacoj impossibil superà',\n", + " 'e varie strasordinarie ingiustissie consumà',\n", + " \"a l'è parej, pija l'esempi dij primi ani dël secol\",\n", + " \"quand ij nòstri viagiator a s'as ciamavo pionieri\",\n", + " 'famije ëd mil pais dëspaisà',\n", + " 'a fasìo tapa forsà a ellis island',\n", + " 'chicanos, macarones, cinesi a little italy!',\n", + " \"ellis island cit isolòt e cancher 'd nueva yòrk\",\n", + " 'limbo disperà dla neuva america',\n", + " 'tanti milion, tante speranse',\n", + " \"speranse d'ambrochè\",\n", + " \"l'intrada për la piramida malefica\",\n", + " 'chicanos, macarones, cinesi a little italy',\n", + " \"what's your name, what's your name?\",\n", + " 'welcome to america, do you understand me?',\n", + " 'where do you come from, where do you wanna go?',\n", + " 'andoma bin, che le strà a son bin longhe',\n", + " \"e che 'l travaj a nobilita l'argheui\",\n", + " \"s'as ciama boom boom boom boom economico\",\n", + " \"ch'a saria l'invension\",\n", + " \"l'invension la pì perfida\",\n", + " \"a l'è parej, a son passà pì che otant'ani\",\n", + " \"e le aventure 'd cola gent\",\n", + " 'a son profonde eredità',\n", + " 'a son deli deli deli delicatësse',\n", + " 'mës-cià a la naftalin-a dij nòstri armari',\n", + " 'chicanos, macarones, cinesi a little italy',\n", + " \"what's your name, what's your name?\",\n", + " 'welcome to america',\n", + " 'do you understand me?',\n", + " 'where do you come from',\n", + " 'where do you wanna go?',\n", + " 'welcome....',\n", + " '(down down, ooh down low',\n", + " 'nah',\n", + " 'down down, ooh down low',\n", + " 'dagger bass',\n", + " 'down down, ooh down low)',\n", + " 'demaro, bad gyal',\n", + " 'the way you move (cómo me mira me mata)',\n", + " 'you got me in the groove (cómo me mira me mata)',\n", + " 'got so many things i wanna do for you',\n", + " 'got so many plans i wanna do with you, leggo',\n", + " 'cuando bailo te causo commotion',\n", + " 'yo lo muevo, me agarras el pantalón',\n", + " 'cuando bailo te causo commotion, motion, motion',\n", + " 'mi baby, lo muevo',\n", + " 'tú quieres, yo quiero, ah - (vamos a hacerlo los dos)',\n", + " 'let me bend mi back so you can feel my bumper',\n", + " 'no querrás a otra, prueba, let me be your gyal, eh, boy',\n", + " \"i've no time to look your face, girl (i've no time to look your face, boy)\",\n", + " 'yeah, my eyes is on your waist, yeah',\n", + " 'the way you move (cómo me mira me mata)',\n", + " 'you got me in the groove (cómo me mira me mata)',\n", + " 'got so many things i wanna do for you',\n", + " 'got so many plans i wanna do with you, leggo',\n", + " 'cuando bailo te causo commotion',\n", + " 'yo lo muevo, me agarras el pantalón',\n", + " 'cuando bailo te causo commotion, motion, motion',\n", + " 'move your body to the floor',\n", + " 'let me see your booty roll',\n", + " 'let me blow my money',\n", + " 'make my head explode',\n", + " 'oh my god, she got my body and soul',\n", + " 'she charge my battery up',\n", + " 'she got me under control',\n", + " 'si quieres lo muevo hasta el suelo',\n", + " 'te parecerá que eso es sexo',\n", + " \"you've never seen a mami like me\",\n", + " 'si tú quieres te lo enseño',\n", + " \"come drive me, i'll show you my dancehall romantic\",\n", + " 'boy, i got you in commotion',\n", + " 'go down low, gyal, go down low',\n", + " 'nothing to you, gyal, go down low',\n", + " 'straight to youtube when ya go down low',\n", + " 'a million views when ya go down low',\n", + " 'go down low, gyal, go down low',\n", + " 'nothing to you, gyal, go down low',\n", + " 'a million views when ya go down low',\n", + " 'straight to youtube when ya go down low',\n", + " 'the way you move (cómo me mira me mata)',\n", + " 'you got me in the groove (cómo me mira me mata)',\n", + " 'got so many things i wanna do for you',\n", + " 'got so many plans i wanna do with you, leggo',\n", + " 'cuando bailo te causo commotion',\n", + " 'yo lo muevo, me agarras el pantalón',\n", + " 'cuando bailo te causo commotion, motion, motion',\n", + " 'down down, ooh down low',\n", + " 'down down, ooh down low',\n", + " 'down down, ooh down low',\n", + " 'down down, ooh down low',\n", + " 'down down, ooh down low',\n", + " 'down down, ooh down low',\n", + " 'down down, ooh down low',\n", + " 'down down, ooh down low',\n", + " 'agárralo, boy',\n", + " '`ôpae ê, `ôpae ho`i',\n", + " 'shrimp, shrimp return',\n", + " 'ua hele mai au, ua hele mai au',\n", + " 'i am coming hither, i am coming hither',\n", + " 'na kuahine*',\n", + " 'for sister',\n", + " 'hui: / chorus:',\n", + " 'aia wai, aia puhi',\n", + " \"there's water, there's eel\",\n", + " 'nui `o puhi a li`i li`i au',\n", + " 'big (is) eel and little (is) me',\n", + " 'a`ole loa',\n", + " 'absolutely not',\n", + " 'pûpû ê, pûpû ho`i',\n", + " 'shellfish, shellfish return',\n", + " 'ua hele mai au, ua hele mai au',\n", + " 'i am coming hither, i am coming hither',\n", + " 'na kuahine',\n", + " 'for sister',\n", + " '(e hana hou i ka hui)',\n", + " '(repeat chorus)',\n", + " \"kûpe`e ê, kûpe`e ho'i\",\n", + " 'sea snail, sea snail return',\n", + " 'ua hele mai au, ua hele mai au',\n", + " 'i am coming hither, i am coming hither',\n", + " 'na kuahine',\n", + " 'for sister',\n", + " \"'opihi ê, 'opihi ho'i\",\n", + " 'limpet, limpet return',\n", + " 'ua hele mai au, ua hele mai au',\n", + " 'i am coming hither, i am coming hither',\n", + " 'na kuahine',\n", + " 'for sister',\n", + " \"mai maka'u, na'u e pani\",\n", + " \"(i'm) not afraid, for me to block/cover\",\n", + " 'i ka maka a `ike `ole',\n", + " 'the eyes ( of the puhi so he) cannot see',\n", + " 'kêlâ puhi',\n", + " 'that eel',\n", + " '*kuahine = sister of a brother, pronunciation of \"k\"',\n", + " 'can vary from a k-sound to a t-sound',\n", + " \"* kon'ya kitto dare mo shiranai\",\n", + " 'yakusoku sareta itoshisa tsunagaru',\n", + " 'black moon kage ni kakure nozokikomu',\n", + " 'wake nante nan ni mo iranai kara',\n", + " '** tokeau you ni dakiatte iyou',\n", + " 'museru kurai kiss wo zutto shitai yo',\n", + " 'kimegoto nante plain ja nai ne',\n", + " 'ma no nagai love dream toki wo tometa',\n", + " 'atama de kangaekomu to',\n", + " \"doushitemo tsutawan'nai kara\",\n", + " 'wakideru heart zutto himeta mama',\n", + " 'sutoreeto na lonely sumuuzu ni ne',\n", + " 'doushiyou mo naku nitemo sametemo',\n", + " 'hashiru itami watashi wo komoraseta',\n", + " 'tobira akenai-tte kimeta hi ni',\n", + " 'sugu ni koe amattareta ne',\n", + " 'aoi umi to anata dakishimete',\n", + " 'zenzen toki wa nanigenaku sugite-tte',\n", + " 'kaze ni yureru fuan mo joke mo',\n", + " 'futari no kokoro wo motto hikiyoseta',\n", + " \"it's so plain & simple like a dream\",\n", + " 'like a dream',\n", + " '** repeat',\n", + " '* repeat',\n", + " 'kawaranai mainichi ga nanigenaku sugite yuku',\n", + " 'tokibetsuna fuman mo nai kedo mirakuru mo nai',\n", + " 'sore wa maybe dorai na jibun',\n", + " '(sagen na tention ugokidashite revolution',\n", + " 'nukedasou konna hibi gimme your special)',\n", + " 'yareru koto wo konashite mata jikan ni owarete',\n", + " 'aji no nai gamu no youna hibi ni akitekiteru nara',\n", + " 'hakisutete make the new world',\n", + " '(kinou no cry nante kyou wa kankeinai for life)',\n", + " 'mikanseina style sonna njanai',\n", + " 'afuredasu sono kimoshi wo misete yo',\n", + " 'parade parade (gimme the wing)',\n", + " 'parade parade (gimme the chance)',\n", + " 'mabushii mirai sagashiteru jidai (parade)',\n", + " 'parade parade (gimme the wing)',\n", + " 'parade parade (gimme the chance)',\n", + " 'hitori janai kono michi step by step',\n", + " 'majime ni yari sugoshite sukoshi tsukareta fuzzy days',\n", + " 'omou youni yarezu ni hiza wo kakaeteru nara',\n", + " 'imasugu ni break on the world',\n", + " '(kinou no cry nante kyou wa kankeinai for life)',\n", + " 'aimaina style sonna njakarai',\n", + " 'kakureteru sono kimochi wo misete yo',\n", + " 'parade parade (gimme the wing)',\n", + " 'parade parade (gimme the chance)',\n", + " 'mabushii sekai shinjiteru jidai (parade)',\n", + " 'parade parade (gimme the wing)',\n", + " 'parade parade (gimme the chance)',\n", + " 'tsunagatteru ashita he say \"hello\"',\n", + " 'parade parade parade parade',\n", + " 'mabushii mirai sagashiteru jidai',\n", + " 'parade parade parade parade',\n", + " 'hitori janai kono michi step by step',\n", + " 'parade parade (gimme the wing)',\n", + " 'parade parade (gimme the chance)',\n", + " 'mabushii sekai shinjiteru jidai (parade)',\n", + " 'parade parade (gimme the wing)',\n", + " 'parade parade (gimme the chance)',\n", + " 'hitori janai kono michi step by step',\n", + " 'tsunagatteru ashita he say \"hello\"',\n", + " 'ah itsumo to kawara nai yokei na fuan ha tsukue no oku ni kakushi te oko u',\n", + " 'mado no soto mitsume te omoi fukeru 『koko kara nukede sou!!』',\n", + " 'uh!ore sama wa real na sk8er!! studs to vans de hard core na flavor!!',\n", + " 'dare mo ore ni wa kate yashi ne~ na! step up×2!!',\n", + " 'kakatte ki na hoeru sk8ers!!',\n", + " 'asawaka na nori ja tobe nai taka sa o baka na nakama to tobikoe tekita nosa!',\n", + " 'mazuha tsuyoku fumikon de kick it!! 3 2 1 go!!',\n", + " 'kono mama zutto kaze ni notte doko e ikeru kana ?',\n", + " 'hare ta sora ni tsukisasaru boku no omoi',\n", + " 'kodomo no koro egai teta yume wa too sugiru kedo',\n", + " 'akirame nai de negai o nigirishime te!!',\n", + " \"a-yo check this shit out!! i'm spittin' my verse!!\",\n", + " 'my rhyme like a kick flip!! tech de bibira su!!',\n", + " 'hibikasu kotae o miidasu but 『matomo ni nare!!』 nante oya wa iidasu!',\n", + " 'matomo ttenan ?? ore no jisho ni wa nai!',\n", + " 'street na koto nara i know migihidari! yumemi tari trick kime tari',\n", + " 'i just wanna be stay as a sk8 junkee!!',\n", + " \"what's da point of livin' right?? imi wakan nai!\",\n", + " 'i.d.g.a.f!! waruagaki!',\n", + " 'tada deka i kaze o tsukami tai! takai takai toko e tonde ikitai',\n", + " 'i wanna fly & feel the wind! kore ni toriko bakani saretatte oreteki ni wa hit!!',\n", + " \"fuan nante itsu de mo aru! but i ain't growin' up!! kono mama de i tai!!\",\n", + " 'kono mama zutto kaze ni nore zu koko de owaru no ka na ?',\n", + " 'kono mama zutto… korekara kitto…',\n", + " 'kono mama zutto kaze ni notte doko e ikeru kana ?',\n", + " 'hare ta sora ni tsukisasaru boku no omoi',\n", + " 'kodomo no koro egai teta yume wa too sugiru kedo',\n", + " 'akirame nai de negai o nigirishime te!!',\n", + " 'to each their own but you should listen to me',\n", + " 'sometimes youäºve got to fight to be free',\n", + " 'but iäºll stifle the hope and iäºll fight the sorrow',\n", + " 'always seeking unity for a better tomorrow',\n", + " 'itäºs so easy to give up on all of your dreams',\n", + " 'to become distracted by all the little things',\n", + " 'before you know it, youäºve gotten quite old',\n", + " 'itäºs time to hope that youäºve got a soul',\n", + " 'and if you do you hope that they will see',\n", + " 'not to judge you by all your apathy',\n", + " 'another human afraid to live',\n", + " 'quick to take, reluctant to give',\n", + " \"teaching your hate 'cause loveäºs harder to give\",\n", + " 'itäºs all about me and iäºll kill you to live',\n", + " 'i keep on fighting these habits of clay',\n", + " 'it just gets more painful every day',\n", + " 'feel like youäºre sinking into a tar pit',\n", + " 'youäºre an infant, reclaim your tit',\n", + " 'apathetic i want more of the same',\n", + " 'getting good at playing this bullshit game',\n", + " 'i donäºt want to die, it scares me a lot',\n", + " 'if god is a lie, am i going to rot?',\n", + " 'another human whoäºs afraid to live',\n", + " 'always quick to take, but reluctant to give',\n", + " \"teaching your hate 'cause loveäºs harder to give\",\n", + " 'itäºs all about me and iäºll kill you to live',\n", + " 'hadi mouda ma hawi',\n", + " 'akhbi macha3ri mn zaman',\n", + " 'wlaw kan cho3orek zyii yb2a',\n", + " 'yala habibib come-on',\n", + " 'yala habiba oooon',\n", + " 'yala habiba oooon',\n", + " 'ya3iiini',\n", + " 'yala habiba oooon',\n", + " \"let's love baby\",\n", + " 'kolina nsa 3andina ihsas',\n", + " 'ihsas ktiiir mnedih',\n", + " 'fahmani sugar',\n", + " 'men awal matkhala9na yala ne3iiich',\n", + " 'i love you',\n", + " 'laaa mouch magnon ini ahbek',\n", + " 'mouch magnooon laaa',\n", + " 'adini hobek marah moch haram if your love is tru',\n", + " 'yala habiba oooon',\n", + " 'ya3iiini',\n", + " 'yala habiba oooon soukaaar',\n", + " \"let's love baby\",\n", + " 'everybody! gather round!',\n", + " 'rango dance! going down! whup! uh!',\n", + " 'funky, funky monkey! (huh! huh! huh!)',\n", + " \"funky, funky monkey! (whatch-ya doin'?)\",\n", + " 'funky, funky monkey! (huh! huh! huh!)',\n", + " \"funky, funky monkey! (whatch-ya doin'?)\",\n", + " \"it don' matta! who ya know!\",\n", + " 'you can do it! gather round!',\n", + " 'move ya body! to the beat!',\n", + " \"an' let monkey body move ya funky feet!\",\n", + " \"(and ya like it 'cause it feels so good! so good!)\",\n", + " 'funky, funky monkey! (huh! huh! huh!)',\n", + " 'funky, funky monkey!',\n", + " 'todo mundo tá dançando o funk do macaquinho',\n", + " 'você dá um assovio e balança o rabinho',\n", + " 'kyu kyu, kyu kyu kyu',\n", + " 'kyu kyu, kyu kyu kyu',\n", + " 'como banana, biscoito e engulo caroço até me engasgar',\n", + " 'faço minhas macacadas, rolou batucada eu vou me acabar',\n", + " 'bolsa brilhante, relógio, não marque bobeira que eu pego pra mim',\n", + " 'vamos plantar bananeira, jogar capoeira cantando assim: ae, ae! (monkey noises)',\n", + " 'funky, funky monkey!',\n", + " \"it don' matta! who ya know! you can do it! (hey! hey!) gather round!\",\n", + " 'move ya body! (hey! hey!) all around! (purunpun-pá)',\n", + " 'i think you threw something stinky on the ground! (butch-ya like it',\n", + " \"'cause it smells so good to ya!)\",\n", + " 'funky, funky monkey!',\n", + " 'funky, funky monkey! (todo mundo tá dançando)',\n", + " 'funky, funky monkey!',\n", + " 'funky, funky monkey!',\n", + " '(monkey noises)',\n", + " 'oh lord have mercy (kidi)',\n", + " \"let's go\",\n", + " 'ɔdɔ a me dɔ wu nti ye se ma bɔdam',\n", + " 'oh baby girl',\n", + " 'you know you got the juice',\n", + " 'you got the fire (fire fire)',\n", + " \"'cause one man's meat is another man's poison\",\n", + " 'to all the people wey do me wrong oh',\n", + " 'oh they led me straight to you (mɛ daa sɛ)',\n", + " 'i wonder if you',\n", + " 'you think say i go leave you (shaga wɛlɛ)',\n", + " 'mɛ nya wu dɔ i diɛ',\n", + " \"girl i'm here to stay\",\n", + " 'love oh',\n", + " 'if i leave you',\n", + " 'make thunder fire me',\n", + " 'thunder fire fire fire',\n", + " 'baby if i leave you',\n", + " 'make thunder fire me',\n", + " 'thunder fire fire oh fire',\n", + " 'see, i go fight for your love',\n", + " 'i go, go war for your love',\n", + " 'i go give up on my girls for your love',\n", + " 'yes lord',\n", + " 'ɔdɔ a me dɔ wu nti ye se ma jimi',\n", + " 'oh baby girl',\n", + " 'ɛnyɛ frɛ mɛ otoo lɛgɛ',\n", + " 'me yɛ wu too lɛgɛ, lɛgɛ',\n", + " 'mɛ ni daso a nyinaa ni wo, me dear',\n", + " 'nobody but you you you you you',\n", + " 'na na na (ɛnyɛ wo dɛ?)',\n", + " 'i wonder if you',\n", + " 'you think say i go leave you (shaga wɛlɛ)',\n", + " 'mɛ nya wu dɔ diɛ',\n", + " \"girl i'm here to stay\",\n", + " 'love oh',\n", + " 'if i leave you',\n", + " 'make thunder fire me',\n", + " 'thunder fire fire fire',\n", + " 'baby if i leave you',\n", + " 'make thunder fire me',\n", + " 'thunder fire fire oh fire',\n", + " 'see, i go fight for your love',\n", + " 'i go, go war for your love',\n", + " 'i go give up on my girls for your love',\n", + " 'yes lord',\n", + " 'see, i go fight for your love',\n", + " 'i go, go war for your love',\n", + " 'i go give up on my girls for your love',\n", + " 'yes lord',\n", + " 'if i leave you',\n", + " 'make thunder fire me',\n", + " 'thunder fire fire fire',\n", + " 'baby if i leave you',\n", + " '(never ever leave my baby oh)',\n", + " 'make thunder fire me',\n", + " 'thunder fire fire oh fire',\n", + " '(never ever leave my baby oh) x2',\n", + " 'if i leave you',\n", + " 'make thunder fire me',\n", + " '(make thunder fire fire)',\n", + " 'thunder fire fire fire',\n", + " '(me dear)',\n", + " 'baby if i leave you',\n", + " '(oh no no no)',\n", + " 'make thunder fire me',\n", + " '(make thunder fire fire)',\n", + " 'thunder fire fire oh fire',\n", + " ...]},\n", + " 'data': ['nareul chajawa if you want a good time',\n", + " 'i’ma bad boy but at heart i’ma good guy',\n", + " 'nae nuneun neohante gojeong',\n", + " 'neogseul noko isseo meong ttaerineun pyojeong',\n", + " 'potosyabeun pillyo eomneun sjsms mubojeong',\n", + " 'nolgo sipeumyeon then baby come on',\n", + " 'naneun chwihaegago isseo ne mommaeneun sulsul',\n", + " 'dwaeji anijiman neoui heobeokjineun kkulkkul',\n", + " 'geunyang heulleogabwa jigeum bunwigineun mulmul',\n", + " 'mwol gumneun geon anijiman baby neoneun bulbul hot',\n", + " 'neoneun bulbul hot',\n", + " 'neoneun bulbul hot',\n", + " 'jigeum anideorado najunge kkok nareul chajawabwa girl',\n", + " 'nareul chajawa if you want a good time',\n", + " 'nareul chajawa if you want a good time',\n", + " 'nareul chaja wa if you want a good time',\n", + " 'hell yeah here we go',\n", + " 'rideum ta just like a rodeo',\n", + " 'ne ot seutail apgujeong rodeo',\n", + " 'neoui heorinollim got me like woah',\n", + " 'got me like woah',\n", + " 'nunchi ttawi boji malgo',\n", + " 'eumagi kkeojideorado',\n", + " 'jibe galkka hell no',\n", + " 'siseuta neun anijiman neoneun sso kulkul',\n", + " 'neoneun nae geongange joha beibi neoneun gyulgyul',\n", + " 'neoreul mure tamyeon geureom geugeon baro kkulmul',\n", + " 'migugeseo sseuneun doncheoreom neoneun bulbul hot',\n", + " 'neoneun bulbul hot',\n", + " 'neoneun bulbul hot',\n", + " 'jigeum anideorado najunge kkok nareul chajawabwa girl',\n", + " 'nareul chajawa if you want a good time',\n", + " 'nareul chajawa if you want a good time',\n", + " 'nareul chajawa if you want a good time',\n", + " 'yeah nonggugongcheoreom bounce',\n", + " 'yeah teniseugongcheoreom bounce',\n", + " 'yeah bollinggongcheoreom jamkkan',\n", + " 'bollinggongeun twinggil su eobseo geureoda mwon tteusinyamyeon michyeobeoryeo',\n", + " 'julleomgihaneun geotcheoreom everybody jump jump',\n", + " 'julleomgihaneun geotcheoreom everybody jump jump',\n", + " 'modu sureul wonsyat haesseo man again drop drop',\n", + " 'jeongsinjureul nwabeoryeo beoryeo we gain dump dump',\n", + " 'nareul chajawa if you want a good time',\n", + " 'nareul chajawa if you want a good time',\n", + " 'nareul chajawa if you want a good time',\n", + " 'hey boy!... okey dokey duck!!!',\n", + " 'hey girl!... okey dokey duck!!!',\n", + " 'esta no es una historia comun pero es mi historia, (se que) no es una historia real pero esta es (al fin y al cabo) mi fragil historia',\n", + " 'hey boy!... okey dokey duck!!!',\n", + " 'picture picture ohh...',\n", + " 'picture picture ohh...',\n", + " 'picture picture ohh...',\n", + " 'picture picture ohh...',\n", + " 'picture picture ohh...',\n", + " 'picture picture',\n", + " 'picture picture ohh...',\n", + " 'picture picture ohh...',\n", + " 'picture picture',\n", + " 'picture picture ohh...',\n", + " 'mang gabing masilayan ka...',\n", + " 'dala-dala ko pa',\n", + " 'ang aking lumang camera',\n", + " 'picture picture ohh...',\n", + " 'picture picture',\n", + " 'picture picture ohh...',\n", + " 'picture picture ohh...',\n", + " 'picture picture',\n", + " 'picture picture ohh...',\n", + " 'campus gig nun at nag-aya ang tropa',\n", + " 'maraming bebot ang nagsasayaw',\n", + " 'nang biglang mapansin kita',\n", + " 'what a beautiful face',\n", + " 'at kinunan kita',\n", + " 'what a beautiful face',\n", + " 'angat ka sa iba',\n", + " 'picture picture ohh...',\n", + " 'picture picture',\n", + " 'picture picture ohh...',\n", + " 'picture picture',\n", + " 'what a beautiful',\n", + " 'what a beautiful face',\n", + " 'i saw her face',\n", + " 'mukha syang taga-a a outerspace',\n", + " \"si mang roger ako'y kinalabit\",\n", + " 'ang sabi',\n", + " 'halika na balot muna',\n", + " 'bago ka mag-konica',\n", + " 'na seramika gawa sa pabrika',\n", + " 'lagot ka na ang kamera may mahika',\n", + " 'ano ang lohika kung bat nahilo ka',\n", + " 'mekaniko si moniko ng makina ni monika',\n", + " 'what a beautiful face',\n", + " 'bigla kang nawala',\n", + " 'what a beautiful face',\n", + " \"ako'y natulala\",\n", + " 'picture picture ohh...',\n", + " 'picture picture',\n", + " 'picture picture ohh...',\n", + " 'picture picture',\n", + " 'what a beautiful',\n", + " 'what a beautiful face',\n", + " 'meron syang look alike na',\n", + " 'meron syang look alike na',\n", + " 'meron syang look alike na',\n", + " 'meron syang look alike na',\n", + " 'meron syang look alike na',\n", + " 'meron syang look alike na',\n", + " 'meron syang look alike na',\n", + " 'mekaniko si moniko ng makina ni monika',\n", + " 'what a beautiful face',\n", + " 'o nasaan ka na',\n", + " 'what a beautiful face',\n", + " 'hinahanap-hanap ka',\n", + " 'picture picture ohh...',\n", + " 'picture picture',\n", + " 'picture picture ohh...',\n", + " 'picture picture',\n", + " 'what a beautiful',\n", + " 'what a beautiful face...',\n", + " 'tu meri jaan ve kinni soni lagdi ki naam hai tu bb da toh pin fir dede',\n", + " 'meri akhan ve baby i can see you want me',\n", + " 'tonights the night you can be my soniye',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'aaja mere naal mere naal soniye nach ke dekhawan club da vich soniye',\n", + " 'aaja mere naal mere naal soniye nach ke dekhawan club da vich soniye',\n", + " 'ohhh wohooohoho',\n", + " '(tu meri jaan ve)',\n", + " 'i can be everything you want baby all you need to do is to send me a pic i can be your one and only',\n", + " 'tonights the night you can be my soniye',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'oye dil nahi rukh da meri jaan',\n", + " 'aaja mere naal mere naal soniye nach ke dekhawan club da vich soniye',\n", + " 'aaja mere naal mere naal soniye nach ke dekhawan club da vich soniye',\n", + " 'na so na so na so',\n", + " 'kiss daniel',\n", + " 'g-worldwide',\n", + " 'yeh',\n", + " 'nor be you i carry come',\n", + " 'but na you i go carry go',\n", + " 'sisi agbarigo eh ya',\n", + " 'yo wey',\n", + " 'nor be you i dey check on o',\n", + " 'but na you i wanna know know know know know',\n", + " 'sisi ferari o eh ya',\n", + " 'yo wey',\n", + " 'very sweet',\n", + " 'very nice',\n", + " 'baby tu di du di du',\n", + " 'odikwa tight (odikwa tight)',\n", + " \"sho' mo pe o sexy\",\n", + " 'ma lo rogo ya lo ni',\n", + " 'otun mo pe o de wa pa',\n", + " 'o wa fe ma buga si emi',\n", + " 'woju o',\n", + " 'le le le le le le le',\n", + " 'baby ko ya woju o',\n", + " 'le le le le le le',\n", + " 'ko ya woju o',\n", + " 'omo de yi le le le le le',\n", + " 'baby ko ya woju o',\n", + " 'la la la la la la',\n", + " 'nor be you i want to carry',\n", + " 'but na you i want to marry',\n", + " 'sisi agbarigo eh ya',\n", + " 'yo weh',\n", + " 'nor be you i dey give eye o',\n", + " 'but na you i want to give my life to',\n", + " 'baby o o',\n", + " 'very sweet',\n", + " 'very nice',\n", + " 'baby tu di du di du',\n", + " 'odikwa tight (odikwa tight)',\n", + " \"sho' mo pe o sexy\",\n", + " 'ma lo rogo ya lo ni',\n", + " 'otun mo pe o de wa pa',\n", + " 'o wa fe ma buga si emi',\n", + " 'woju o',\n", + " 'le le le le le le le',\n", + " 'baby ko ya woju o',\n", + " 'le le le le le le',\n", + " 'ko ya woju o',\n", + " 'omo de yi le le le le le',\n", + " 'baby ko ya woju o',\n", + " 'la la la la la la',\n", + " 'nor be you i carry come girl',\n", + " 'but na you i go carry go',\n", + " 'agbarigo o eh ya',\n", + " 'yo wey',\n", + " 'nor be you i dey check on o',\n", + " 'but na you i wanna know know know know know',\n", + " 'baby o',\n", + " 'yo wey',\n", + " 'very sweet',\n", + " 'very nice',\n", + " 'baby tu di du di du',\n", + " 'odikwa tight (odikwa tight)',\n", + " \"sho' mo pe o sexy\",\n", + " 'ma lo rogo ya lo ni',\n", + " 'otun mo pe o de wa pa',\n", + " 'o wa fe ma buga si emi',\n", + " 'woju o',\n", + " 'le le le le le le le',\n", + " 'baby ko ya woju o',\n", + " 'le le le le le le',\n", + " 'ko ya woju o',\n", + " 'omo de yi le le le le le',\n", + " 'baby ko ya woju o',\n", + " 'la la la la la la',\n", + " '(sheyman on the mix)',\n", + " 'your boy kiss e',\n", + " '(le le ma ma le le ma ma le le)',\n", + " 'so fun ko ya lo joko o',\n", + " '(le le ma ma le le ma ma le le)',\n", + " 'your boy kiss',\n", + " '(le le ma ma le le ma ma le le)',\n", + " \"so fun pe 'wa la l'eko\",\n", + " \"awa la l'eko\",\n", + " '(le le ma ma le le ma ma le)',\n", + " '(le le ma ma le le ma ma le le)',\n", + " '(le le ma ma le le ma ma le le)',\n", + " '(le le ma ma le le ma ma le le)',\n", + " \"so fun pe 'wa la l'eko\",\n", + " '(le le ma ma le le ma ma le le)',\n", + " 'its your boy kiss',\n", + " 'is it, ooh, uh',\n", + " \"he'll never speak of me\",\n", + " 'all that he needs from you— loving',\n", + " 'if this is\\u2060—',\n", + " \"he'll never speak of me\",\n", + " 'all that he needs from you— loving',\n", + " 'if this is\\u2060—',\n", + " '-up, you lay me down',\n", + " \"you know too much, i can't be proud\",\n", + " 'i still really, really want you, yes i do',\n", + " '(yes i do, i still, really, really)',\n", + " 'i still really, really want you, yes i do',\n", + " 'i still really, really want you, yes i do (yes i do)',\n", + " 'i still—',\n", + " '-up, you lay me down',\n", + " \"you know too much, i can't be proud\",\n", + " 'i still really, really want you, yes i do',\n", + " '(yes i do, i still, really, really)',\n", + " 'i still really, really want you, yes i do',\n", + " 'i still really, really want you, yes i do',\n", + " '(yes i do)',\n", + " 'i still-i-i-',\n", + " 'still want you — can i do',\n", + " \"if you can't\\u2060— i do\\u2060\",\n", + " 'still want\\u2060— can i do\\u2060',\n", + " \"if you can't -\",\n", + " 'i still want\\u2060— can i do',\n", + " \"if you can't\\u2060— i do\",\n", + " 'really, really want you, yes i do, mm, yeah',\n", + " 'lo que él quiere de ti, yo no se lo negaría',\n", + " \"si esto no me ha partío', ya no me partiré nunca\",\n", + " \"si puedo soportar lo que siento, ¿por qué me 'toy cayendo?\",\n", + " '¿acaso voy cayendo?',\n", + " 'oh, oh, oh (¿acaso voy cayendo?)',\n", + " 'oh, oh, oh (¿acaso voy cayendo?)',\n", + " 'oh, oh, oh (¿acaso voy cayendo?)',\n", + " 'oh, oh, oh (¿acaso voy cayendo?)',\n", + " 'philippines has a great history',\n", + " 'according to our geography',\n", + " 'manila is the capital city',\n", + " 'docking point from the other country',\n", + " 'metro manila, quezon city',\n", + " 'caloocan, pasay, makati',\n", + " 'marikina, pasig, zapote',\n", + " 'malabon, las piñas, parañaque',\n", + " 'from the north batanes, aparri',\n", + " 'ilocos sur, ilocos norte',\n", + " 'isabela, cagayan valley',\n", + " 'mountain province, la union, baguio city',\n", + " 'nueva ecija, nueva vizcaya',\n", + " 'tarlac, pangasinan, pampanga',\n", + " 'zambales, bataan, abra',\n", + " 'bulacan, cavite, batangas, laguna',\n", + " \"now let's go to the southern luzon\",\n", + " 'camarines norte, quezon',\n", + " 'albay, camarines sur',\n", + " 'catanduanes, masbate, sorsogon',\n", + " 'and we add three islands more',\n", + " 'mindoro, marinduque, romblon',\n", + " 'then down to visayan shore',\n", + " 'famous for its sugar, coconut and corn',\n", + " 'ayyeyeyeye pyeyeye yeyeye',\n", + " 'cebu, mactan, mandaue',\n", + " 'ayyeyeyeye pyeyeye yeyeye',\n", + " 'bohol, samar, leyte',\n", + " 'ayyeyeyeye pyeyeye yeyeye',\n", + " 'iloilo, capiz, aklan, antique',\n", + " 'palawan, negros, bacolod',\n", + " 'siquijor, dumaguete',\n", + " \"now let's go to the land of promise\",\n", + " 'the land of mindanao',\n", + " 'bukidnon, zamboanga, misamis',\n", + " 'mambajao, butuan, agusan, surigao',\n", + " 'cagayan de oro, iligan, ozamis',\n", + " 'and the three provinces of davao',\n", + " 'davao sur, oriental, del norte',\n", + " 'cotabato, lanao, sulu, tawi tawi',\n", + " 'ayyeyeyeye pyeyeye yeyeye',\n", + " 'philippines has a great history',\n", + " 'ayyeyeyeye pyeyeye yeyeye',\n", + " 'manila is the capital city',\n", + " 'ayyeyeyeye pyeyeye yeyeye',\n", + " 'all tourists are invited to see',\n", + " 'according to our geography philippines is a beautiful country...',\n", + " 'disturb! drive me fuck!',\n", + " 'drive me lady drive me violent¡¡gouin na kyuuin day',\n", + " 'drive me lady drive me violent ¡¡me ga kurami! so glamorous style de go!',\n", + " 'drive me lady drive me violent ¡¡voltage saidai nod',\n", + " 'tomaranai kanjou wo daite¡¡please shake it shake it now',\n", + " 'laser no youna shisen de¡¡mou kore ijou mitsumenai de',\n", + " 'sensou nara¡¡tokku ni horyo sa',\n", + " 'mainasu iimage no sensa¡ª crush sareru wink hitotsu de',\n", + " 'shime dzukeru g pan de¡¡sara ni escalate',\n", + " 'i¡¯m getting gesell schaft moron',\n", + " 'yuuwaku shinai dekure¡¡yuugaku shita kunacchau throw',\n", + " 'i¡¯m getting gesell schaft venus',\n", + " 'danteki honnou ga yuudoushiteku konyokufuro',\n", + " 'doushite mo tomerarenai tte 25th, no sexy motion',\n", + " 'kanzen ni keikakuteki na chinouhan',\n", + " 'oh no bure ki no mama tsubbashiru you are zippy hip',\n", + " 'magire monaku kimi wa tensai¡¡moisturizer',\n", + " 'mechakucha ni shigekiteki na distance',\n", + " 'i¡¯m getting gesell schaft moron',\n", + " 'wasure chattekure¡¡eigyoushin nante mou',\n", + " 'i¡¯m getting gesell schaft venus',\n", + " 'gyoumuyou bed no ringu de 60 bun ippon shoubu',\n", + " 'drive me lady drive me violent ¡¡go jasu na kyuuin de',\n", + " 'drive me lady drive me violent ¡¡hageshiku up down kuri kaeshite motto',\n", + " 'drive me lady drive me violent ¡¡break down shichaukurai knead',\n", + " 'kageki na driving de speedway',\n", + " 'secret times¡¡akuseru zenkai de kasokushite ittekure',\n", + " 'give me your heart',\n", + " 'give me your breast',\n", + " 'give me your bullet',\n", + " 'drive me violent',\n", + " 'drive me lady drive me violent ¡¡go jasu na kyuuin de',\n", + " 'drive me lady drive me violent ¡¡hageshiku up down kuri kaeshite motto',\n", + " 'drive me lady drive me violent ¡¡break down shichaukurai gnaw',\n", + " 'saijoukyuu destructive motion',\n", + " 'please shake it shake it now!',\n", + " 'please shake it shake it now!',\n", + " 'please shake it shake it now!',\n", + " 'please shake it shake it now!',\n", + " 'yama!',\n", + " 'denza faradenza',\n", + " 'la bokka de lä cokka',\n", + " 'grande love-ua and ribaua villa vida loca',\n", + " 'gusto rico dante',\n", + " 'pereto presto power (trrr)',\n", + " 'karma denza purra kawa konnichiwa-ua',\n", + " 'raaa ta-ta ta',\n", + " 'raaa ta-ta ta-ta',\n", + " 'raaa ta-ta ta',\n", + " 'denza faradenza',\n", + " 'raaa ta-ta ta',\n", + " 'raaa ta-ta ta-ta',\n", + " 'raaa ta-ta ta',\n", + " 'denza faradenza',\n", + " 'denza, denza',\n", + " 'denza faradenza',\n", + " 'denza, denza',\n", + " 'denza faradenza (yama!)',\n", + " 'denza (denza), denza (denza)',\n", + " 'denza faradenza',\n", + " 'denza (denza), denza (denza)',\n", + " 'denza faradenza',\n", + " 'ha!',\n", + " 'ha!',\n", + " 'denza faradenza',\n", + " 'ha!',\n", + " 'yama!',\n", + " 'ha!',\n", + " 'denza faradenza',\n", + " '(denza faradenza)',\n", + " '(denza faradenza)',\n", + " 'denza faradenza',\n", + " 'ayama lak mayama',\n", + " 'granda purr el casa hands up konnichiwa-ua (wa-ua)',\n", + " 'gusto rico dante',\n", + " 'revero presto power',\n", + " 'denza faradenza, sorry, paradox, i love-ua',\n", + " 'denza pati tendas',\n", + " 'denza mati extas',\n", + " 'denza, denza, denza, denza',\n", + " 'denza tantre secas',\n", + " 'denza (denza) pati tendas (denza)',\n", + " 'denza (denza) mati extas (denza)',\n", + " 'denza, denza, denza, denza',\n", + " 'denza tantre secas',\n", + " 'denza, denza',\n", + " 'denza faradenza',\n", + " 'denza, denza',\n", + " 'denza faradenza (yama!)',\n", + " 'denza (denza), denza (denza)',\n", + " 'denza faradenza',\n", + " 'denza (denza), denza (denza)',\n", + " 'denza faradenza',\n", + " 'raaa ta-ta ta',\n", + " 'raaa ta-ta ta-ta',\n", + " 'raaa ta-ta ta',\n", + " 'denza faradenza',\n", + " 'raaa ta-ta ta',\n", + " 'raaa ta-ta ta-ta',\n", + " 'raaa ta-ta ta',\n", + " 'denza faradenza',\n", + " 'raaa ta-ta ta (denza, denza)',\n", + " 'raaa ta-ta ta-ta (denza, faradenza)',\n", + " 'raaa ta-ta ta (denza, denza)',\n", + " 'denza faradenza',\n", + " 'raaa ta-ta ta (denza, denza)',\n", + " 'raaa ta-ta ta-ta (denza, faradenza)',\n", + " 'raaa ta-ta ta (denza, denza)',\n", + " 'denza faradenza',\n", + " 'yama!',\n", + " 'tagalog',\n", + " 'minsan, parang may pag-ibig ang sagot',\n", + " 'kahit na sa pag-iisa ay nagbabagot',\n", + " 'aanhin ko ang paghahanap ng magmamahal',\n", + " \"kung sa sarili ko ay 'di pa masaya\",\n", + " 'mabuti nang mag-isa',\n", + " 'nang makilala ko muna ang sarili',\n", + " 'pag-ibig muna, para sa akin',\n", + " 'mabuti nang mag-isa',\n", + " \"nang 'di ko sa ipalungkot\",\n", + " 'sinisisi, kailangan ko lang, ako muna',\n", + " 'minsan, alam ko lungkot ay kakatok',\n", + " 'ngunit kailangan kong tatagan ng loob',\n", + " 'aanhin ko ang pagbibigay ng pagmamahal',\n", + " \"kung ang sarili ko'y mapapabayaan\",\n", + " 'mabuti nang mag-isa',\n", + " 'nang makilala ko muna ang sarili',\n", + " 'pag-ibig muna, para sa akin',\n", + " 'mabuti nang mag-isa',\n", + " \"nang 'di ko sa ipalungkot\",\n", + " 'sinisisi, kailangan ko lang',\n", + " \"pa'no kung magmamahal\",\n", + " \"kung 'di ko kayang mahalin\",\n", + " 'ako, ngayon, bukas, mapapagod din lang',\n", + " 'mabuti nang mag-isa',\n", + " 'nang makilala ko muna ang sarili',\n", + " 'pag-ibig muna, para sa akin',\n", + " 'mabuti nang mag-isa',\n", + " 'nang di ko sa ipalungkot',\n", + " 'sinisisi, kailangan ko lang, ako muna',\n", + " 'english translation',\n", + " \"sometimes, it feels as though love isn't the answer\",\n", + " 'even though, one gets tired in solitude',\n", + " 'what do i get out of looking for love',\n", + " \"if i'm not yet happy with myself\",\n", + " \"it's better to be alone\",\n", + " 'so that i get to know myself first',\n", + " 'love for myself first',\n", + " \"it's better to be alone\",\n", + " \"so that i don't blame this sadness on others\",\n", + " 'i just need to',\n", + " 'focus on myself first',\n", + " 'focus on myself first',\n", + " 'although i have to strengthen my valor',\n", + " 'what do i get out of giving love',\n", + " 'what do i get out of giving love',\n", + " 'if i will end up neglecting myself',\n", + " \"it's better to be alone\",\n", + " 'so that i get to know myself first',\n", + " 'love for myself first',\n", + " \"it's better to be alone\",\n", + " \"so that i don't blame this sadness on others\",\n", + " 'i just need to',\n", + " 'focus on myself first',\n", + " 'how will i love',\n", + " \"if i'm not able to love myself\",\n", + " 'today, tomorrow, i will just end up exhausted...',\n", + " \"it's better to be alone\",\n", + " 'so that i get to know myself first',\n", + " 'love for myself first',\n", + " \"it's better if i'm alone\",\n", + " \"so that i don't blame this sadness on others\",\n", + " 'i just need to',\n", + " 'focus on myself first',\n", + " 'focus on myself first',\n", + " 'living easy, living free',\n", + " 'season ticket on a one-way ride',\n", + " 'asking nothing, leave me be',\n", + " 'taking everything in my stride',\n", + " 'sin razón, sin poesía',\n", + " 'no hay otra cosa que yo quiera hacer',\n", + " 'con amigos yo estaré',\n", + " 'tocando fondo y divirtiéndome',\n", + " \"i'm on the highway to hell\",\n", + " 'highway to hell',\n", + " 'highway to hell',\n", + " 'highway to hell',\n", + " 'nadie me detendrá, no hay limite de velocidad',\n", + " 'giraré sin parar, nadie se cruza por mi lugar',\n", + " 'hey satan, paid my dues',\n", + " 'playing in a rocking band',\n", + " 'hey mama, look at me',\n", + " \"i'm on my way to the promised land, whoo!\",\n", + " \"i'm on the highway to hell\",\n", + " 'highway to hell',\n", + " 'highway to hell',\n", + " 'highway to hell',\n", + " \"don't stop me, don't stop me\",\n", + " 'highway to hell',\n", + " 'highway to hell',\n", + " 'highway to hell',\n", + " 'highway to hell',\n", + " 'highway to hell',\n", + " 'highway to hell',\n", + " 'highway to hell',\n", + " 'highway to hell',\n", + " \"and i'm going down...\",\n", + " 'feliz navidad',\n", + " 'feliz navidad',\n", + " 'feliz navidad',\n", + " 'próspero año y felicidad',\n", + " 'feliz navidad',\n", + " 'feliz navidad',\n", + " 'feliz navidad',\n", + " 'próspero año y felicidad',\n", + " 'i wanna wish you a merry christmas',\n", + " 'i wanna wish you a merry christmas',\n", + " 'i wanna wish you a merry christmas',\n", + " 'from the bottom of my heart',\n", + " 'we wanna wish you a merry christmas',\n", + " 'we wanna wish you a merry christmas',\n", + " 'we wanna wish you a merry christmas',\n", + " 'from the bottom of our heart',\n", + " 'feliz navidad',\n", + " 'feliz navidad',\n", + " 'feliz navidad',\n", + " 'próspero año y felicidad',\n", + " 'feliz navidad',\n", + " 'feliz navidad',\n", + " 'feliz navidad',\n", + " 'próspero año y felicidad',\n", + " 'we wanna wish you a merry christmas',\n", + " 'we wanna wish you a merry christmas',\n", + " 'we wanna wish you a merry christmas',\n", + " 'from the bottom of our heart',\n", + " 'we wanna wish you a merry christmas',\n", + " 'we wanna wish you a merry christmas',\n", + " 'we wanna wish you a merry christmas',\n", + " 'from the bottom of our heart',\n", + " 'from the bottom of my heart',\n", + " 'feliz navidad',\n", + " 'feliz navidad',\n", + " 'feliz navidad',\n", + " 'próspero año y felicidad',\n", + " 'we wanna wish you a merry christmas',\n", + " 'we wanna wish you a merry christmas',\n", + " 'we wanna wish you a merry christmas',\n", + " 'from the bottom of our heart',\n", + " 'we wanna wish you a merry christmas',\n", + " 'we wanna wish you a merry christmas',\n", + " 'we wanna wish you a merry christmas',\n", + " 'from the bottom of our heart',\n", + " 'from the bottom of my heart',\n", + " 'from the bottom of my heart',\n", + " 'we wanna wish you',\n", + " 'from our hearts',\n", + " 'baby, i like your style',\n", + " 'grips on your waist',\n", + " 'front way, back way',\n", + " \"you know that i don't play\",\n", + " 'streets not safe',\n", + " 'but i never run away',\n", + " \"even when i'm away\",\n", + " \"oti, oti, there's never much love when we go ot\",\n", + " 'i pray to make it back in one piece',\n", + " 'i pray, i pray',\n", + " \"that's why i need a one dance\",\n", + " 'got a hennessy in my hand',\n", + " \"one more time 'fore i go\",\n", + " 'higher powers taking a hold on me',\n", + " 'i need a one dance',\n", + " 'got a hennessy in my hand',\n", + " \"one more time 'fore i go\",\n", + " 'higher powers taking a hold on me',\n", + " 'baby ,i like your style',\n", + " 'strength and guidance',\n", + " \"all that i'm wishing for my friends\",\n", + " 'nobody makes it from my ends',\n", + " 'i had to bust up the silence',\n", + " 'you know you gotta stick by me',\n", + " 'soon as you see the text, reply me',\n", + " \"i don't wanna spend time fighting\",\n", + " 'como tú te llamas, yo no sé',\n", + " 'de donde llegaste, ni pregunté',\n", + " 'lo único que sé, es que quiero con usted',\n", + " 'quedarme contigo hasta el amanecer',\n", + " 'como tú te llamas, yo no sé',\n", + " 'de donde llegaste, ni pregunté',\n", + " 'lo único que sé, es que quiero con usted',\n", + " 'quedarme contigo hasta el amanecer',\n", + " 'óyeme mamacita, tu cuerpo y carita',\n", + " 'piel morena, lo que uno necesita',\n", + " 'mirando una chica tan bonita',\n", + " 'y pregunto porque anda tan sólita',\n", + " \"ven dale ahí ahí, moviendo todo eso pa' mí\",\n", + " 'no importa idioma ni el país',\n", + " 'ya vamonos de aquí, que tengo algo bueno para ti',\n", + " 'una noche de aventura hay que vivir',\n", + " 'óyeme ahí ahí, mami vamos a darle',\n", + " 'rumbeando y bebiendo a la vez',\n", + " 'tu tranquila que yo te daré',\n", + " 'una noche llena de placer',\n", + " 'i need a one dance',\n", + " \"one more time 'fore i go\",\n", + " 'higher powers taking a hold',\n", + " 'i need a one dance',\n", + " 'quedarme contigo hasta el amanecer',\n", + " \"(this guy's in love with you pare...ano?)\",\n", + " 'one look and then yun iba na',\n", + " 'malagkit dumikit ang tingin ng mata',\n", + " 'one smile, iba na ang ibig sabihin',\n", + " \"'di na friends, ang tingin nya sa akin\",\n", + " \"everyday parating we're together\",\n", + " 'every week, palaging may sleepover',\n", + " 'ang tawag nya sa mommy ko ay tita',\n", + " 'bakit ba, di ko non nakita',\n", + " \"until out of the blue, i'm feeling so true\",\n", + " 'bigla nalang sinabi sa akin that',\n", + " \"this guy's in love with you pare\",\n", + " \"this guy's in love with you pare\",\n", + " \"this guy's in love with you pare\",\n", + " 'bading na bading sayo...',\n", + " 'di na ako makasagot ng telepono',\n", + " 'palagi nyang kinakausap ang parents ko',\n", + " 'kulang daw sa tulog at di na makakain',\n", + " 'bakit ba? di pa non inamin',\n", + " \"until out of the blue, i'm feeling so true\",\n", + " 'bigla nalang sinabi sa akin that',\n", + " \"this guy's in love with you pare\",\n", + " \"this guy's in love with you pare\",\n", + " \"this guy's in love with you pare\",\n", + " 'bading na bading sayo...',\n", + " 'everyday daw ay rainy day ang monday',\n", + " \"'coz 'di na ko maaya to come out and play\",\n", + " 'tinataguan na nga, palaging late o absent',\n", + " 'ang sabi parin',\n", + " '\"i\\'ll always have a friend that you can depend\"',\n", + " 'oohh...',\n", + " 'di kailangan na mag-oonn...',\n", + " 'parang talong at bagoooong...',\n", + " \"this guy's in love with you pare\",\n", + " \"this guy's in love with you pare\",\n", + " \"this guy's in love with you pare\",\n", + " 'bading na bading',\n", + " 'converted parin',\n", + " 'na nakikipag-fling sayo..',\n", + " \"oh no! my best friend's gay\",\n", + " \"it's the same old friend i had yesterday\",\n", + " \"and he's happy... and gay...\",\n", + " 'yeah... yeah...',\n", + " 'na na na nananana na nanan na (2x)',\n", + " 'aê!',\n", + " 'tropkillaz, major lazer e kevinho',\n", + " 'chama, fio!',\n", + " 'oh na, oh na na na',\n", + " 'oh na, oh na na na',\n", + " 'oh na, oh na na na (busy signal)',\n", + " 'oh na, oh... brrp',\n", + " 'gal me love when you get low',\n", + " 'mi seh mi love it when yuh set so',\n", + " 'and then mi love it when you tip toe',\n", + " 'bubble up, yuh make the earth shake',\n", + " 'whenever you earthquake',\n", + " 'olha que cara de terrível',\n", + " 'bem do jeitinho que eu gosto',\n", + " 'ela sabe que eu não posso',\n", + " 'perder o foco do negócio',\n", + " 'lo go dung low, lo guh dung low',\n", + " 'tô ficando louco',\n", + " 'lo go dung low, lo guh dung low',\n", + " 'tô perdendo o foco',\n", + " 'lo go dung low, lo guh dung low',\n", + " 'twerk it like a go go',\n", + " 'lo go dung low, lo guh dung low',\n", + " '(cê acredita?)',\n", + " 'essa mina é terrível',\n", + " 'já me fez perder o foco',\n", + " 'ela sabe que eu não brinco',\n", + " 'se vacilar, eu passo o rodo',\n", + " 'drop it to the floor',\n", + " 'girl, your body is so amazing',\n", + " 'when you wine you drive me loco',\n", + " 'from brazil to sweet jamaica',\n", + " 'girls them putting on a show',\n", + " 'então focou!',\n", + " 'jiggle up yuh body',\n", + " 'never know a suh yuh bad',\n", + " 'bubble up yuh body',\n", + " 'never know a suh yuh bad',\n", + " 'traffic blocking, gal, you getting on bad',\n", + " 'shake up yuh, bend up yuh, twist up yuh',\n", + " 'alright!',\n", + " 'com esse jeitinho cê sabe que cê me mata',\n", + " 'fica me olhando com essa cara de danada',\n", + " 'desce pra mim devagar e não para',\n", + " 'faz tumbalatum, rebola na minha cara',\n", + " 'lo go dung low, lo guh dung low',\n", + " 'tô ficando louco',\n", + " 'lo go dung low, lo guh dung low',\n", + " 'tô perdendo o foco',\n", + " 'lo go dung low, lo guh dung low',\n", + " 'twerk it like a go go',\n", + " 'lo go dung low, lo guh dung low',\n", + " '(cê acredita?)',\n", + " 'essa mina é terrível',\n", + " 'já me fez perder o foco',\n", + " 'ela sabe que eu não brinco',\n", + " 'se vacilar, eu passo o rodo',\n", + " 'drop it to the floor',\n", + " 'girl, your body is so amazing',\n", + " 'when you wine you drive me loco',\n", + " 'from brazil to sweet jamaica',\n", + " 'girls them putting on a show',\n", + " 'então focou!',\n", + " 'liriko ng \"mahal ko o mahal ako\"',\n", + " '(english translation below)',\n", + " 'dalawa kayo sa buhay ko',\n", + " 'at ako ngayon ay kailangan nang mamili',\n", + " 'isa lang ang maaari',\n", + " 'alam mong narito ako',\n", + " 'lagi para sa iyo',\n", + " 'mahal kita ng labis',\n", + " 'ngunit iba ang iyong nais',\n", + " 'at siya’y narito',\n", + " 'alay sa ki’y wagas na pag-ibig',\n", + " 'nalilito',\n", + " 'litong litong lito',\n", + " 'sino ang iibigin ko',\n", + " 'ikaw ba na pangarap ko',\n", + " 'o siya bang kumakatok sa puso ko',\n", + " 'oh anong paiiralin ko',\n", + " 'isip ba o ang puso ko',\n", + " 'nalilito litong litong lito',\n", + " 'sinong pipiliin ko',\n", + " 'mahal ko o mahal ako',\n", + " 'kahit di ako ang mahal mo',\n", + " 'kung mananatili ako sa yo',\n", + " 'ay baka matutunan mo rin',\n", + " 'na ako’y iyong ibigin',\n", + " 'at kung sadyang siya’y tapat',\n", + " 'baka sakaling pagdaan ng araw',\n", + " 'matutunan ko rin ang ibigin siya',\n", + " 'sino ang iibigin ko',\n", + " 'ikaw ba na pangarap ko',\n", + " 'o siya bang kumakatok sa puso ko',\n", + " 'oh anong paiiralin ko',\n", + " 'isip ba o ang puso ko',\n", + " 'nalilito litong litong lito',\n", + " 'sinong pipiliin ko',\n", + " 'ang nais ko ay maranasan',\n", + " 'ang umibig at masuklian din ng pag-ibig',\n", + " 'sino ang iibigin ko',\n", + " 'ikaw ba na pangarap ko',\n", + " 'o siya ba',\n", + " 'oh anong paiiralin ko',\n", + " 'isip ba o ang puso ko',\n", + " 'nalilito litong litong lito',\n", + " 'litong litong lito',\n", + " 'sinong pipiliin ko',\n", + " 'mahal ko o mahal ako',\n", + " 'english translation',\n", + " 'i have you both in my life',\n", + " 'and now',\n", + " 'i have to choose',\n", + " 'only one',\n", + " 'you know i am always',\n", + " 'here for you',\n", + " 'i love you so much',\n", + " 'but your heart is for another',\n", + " \"and then there's him\",\n", + " 'laying all his love for me',\n", + " \"i'm so confused, confused, confused, confused\",\n", + " 'who should i love:',\n", + " 'you--my dream?',\n", + " 'or him who is knocking to my heart?',\n", + " 'which one should i allow to reign:',\n", + " 'my heart or my mind?',\n", + " \"i'm so confused, confused, confused, confused\",\n", + " 'who should i choose:',\n", + " 'the one i love or the one who loves me?',\n", + " 'even if i am not the one you love',\n", + " 'if i wait for you',\n", + " \"perhaps you'd learn\",\n", + " 'to love me too',\n", + " 'and if he is truly faithful',\n", + " 'perhaps the day would come',\n", + " 'when i would learn to love him too',\n", + " 'who should i love:',\n", + " 'you--my dream?',\n", + " 'or him who is knocking to my heart?',\n", + " 'which one should i allow to reign:',\n", + " 'my heart or my mind?',\n", + " \"i'm so confused, confused, confused, confused\",\n", + " 'who should i choose:',\n", + " 'the one i love or the one who loves me?',\n", + " 'i long to feel',\n", + " 'how to love and be loved in return',\n", + " 'who should i love:',\n", + " 'you--my dream?',\n", + " 'or him? (or him?)',\n", + " 'oh, which one should i allow to reign:',\n", + " 'my heart or my mind?',\n", + " \"i'm so confused, confused, confused, confused\",\n", + " 'who should i choose:',\n", + " 'the one i love or the one who loves me?',\n", + " 'you just look so beautiful',\n", + " 'hago shipun mal',\n", + " 'naege wajun gol gamsahae',\n", + " 'guryowatdon gudaega iroke lovely',\n", + " 'nomuna sarangsuroun gol',\n", + " 'ooh just be my lady, my lady',\n", + " 'nae saramirago',\n", + " 'my baby, my baby',\n", + " 'sesange oechilge',\n", + " 'my shawty, my shawty',\n", + " 'dundunhan namjaro pyongsaeng neyeope issulge',\n", + " 'here i am, here i am',\n", + " 'here i am, here i am',\n", + " 'nomaneul wihae, sesangkkutkkaji',\n", + " 'here i am, here i am',\n", + " 'shawty know i want cha',\n", + " 'hey girl sarangiran gon',\n", + " 'maumman bwado nan anun gol',\n", + " \"it's our time\",\n", + " \"it's party time\",\n", + " 'dulmanui sojunghan mamuro',\n", + " 'oh girl you so fresh',\n", + " 'baby love me just like that',\n", + " 'oh girl you so fresh',\n", + " 'baby love me just like that',\n", + " 'amuron maldo hajimara',\n", + " 'just leave me alone',\n", + " 'hokshirado niga naege ibyorul malhandamyon',\n", + " 'niga dashi naege doraonun gunalkkaji',\n", + " 'yogiso gidarilge',\n", + " 'ooh just be my lady, my lady',\n", + " 'naui yojarago',\n", + " 'my baby, my baby',\n", + " 'sesange oechilge',\n", + " 'my shorty, my shorty',\n", + " 'nomanui namjaro, forever, neoreul jikyojulge',\n", + " 'i want you yeah',\n", + " 'here i am, here i am oh oh oh oh',\n", + " 'here i am, here i am oh oh oh oh',\n", + " 'nomanul wihae, sesang kkutkkaji',\n", + " 'here i am, here i am',\n", + " 'shorty know i want cha',\n", + " 'here i am, here i am oh oh oh oh',\n", + " 'here i am, here i am oh oh oh oh',\n", + " 'nomanul wihae, sesang kkutkkaji',\n", + " 'here i am, here i am',\n", + " 'shorty know i want cha',\n", + " \"hey baby, hey baby, i'm so in love\",\n", + " \"hey baby, and you're the one i'm thinking of\",\n", + " 'hey baby, hey baby, i love you girl',\n", + " 'hey baby, hey baby',\n", + " 'girl non naui butterfly (butterfly)',\n", + " 'and non naui superstar (superstar)',\n", + " 'shorty know i want cha',\n", + " 'here i am, here i am',\n", + " 'here i am, here i am',\n", + " 'nomanul wihae, sesangkkutkkaji',\n", + " 'here i am, here i am',\n", + " 'shorty know i want cha',\n", + " 'here i am, here i am',\n", + " 'here i am, here i am',\n", + " 'nomanul wihae, sesangkkutkkaji',\n", + " 'here i am, here i am',\n", + " 'shorty know i want cha',\n", + " 'ooh ooh ooh ooh ooh ooh ooh ooh ooh ooh',\n", + " 'ooh ooh ooh ooh ooh ooh ooh ooh ooh ooh',\n", + " 'ooh ooh ooh ooh ooh',\n", + " '(konishi)',\n", + " 'translators: kirk cumming, miyuki igarashi',\n", + " 'terebi no eisei-chuukei de',\n", + " 'dokoka no machi no',\n", + " 'onna no ko hohoemu',\n", + " '--totemo ureshii!',\n", + " 'shinya no eisei-chuukei de',\n", + " 'dokoka no kuni no',\n", + " 'ousama ga utareru',\n", + " '--shinjirarenai!',\n", + " 'moshikashite anata mo',\n", + " 'boku no koto mieru no?',\n", + " 'moshi boku wo',\n", + " 'anata mo miteru nara',\n", + " 'hora waratte okure yo',\n", + " 'boku mo te wo furu yo',\n", + " 'utatte goran yo',\n", + " 'douji-tsuuyaku de',\n", + " 'ohayo gozama, konichiwa',\n", + " 'anata no koto, suki-na no koto',\n", + " 'sayonara, sankyu, sakitsumi',\n", + " 'anata no koto, suki-na no koto',\n", + " 'ahaha',\n", + " 'ohiru no eisei-chuukei de',\n", + " 'dokoka no hoshi ni',\n", + " 'hata ga taterareru',\n", + " '--shinjirarenai!',\n", + " 'moshikashite anata mo',\n", + " 'boku no koto mieru no?',\n", + " 'moshi boku wo',\n", + " 'anata mo miteru nara',\n", + " 'hora waratte okure yo',\n", + " 'boku mo te wo furu yo',\n", + " 'tsukareteru mitai',\n", + " 'boku mo onnaji sa',\n", + " 'anata ni deaete',\n", + " 'totemo ureshii na',\n", + " 'ai koso wa subete',\n", + " 'douji-tsuuyaku de',\n", + " 'ohayo gozama, konichiwa',\n", + " 'anata no koto, suki-na no koto',\n", + " 'sayonara, sankyu, sakitsumi',\n", + " 'anata no koto, suki-na no koto',\n", + " 'ahaha',\n", + " '-------------------------------------',\n", + " 'on the satellite tv broadcast',\n", + " 'a girl from some city',\n", + " 'is smiling',\n", + " '--very happy!',\n", + " 'on the midnight satellite broadcast',\n", + " 'the king of some country',\n", + " 'is shot',\n", + " \"--i can't believe it!\",\n", + " 'by any chance',\n", + " 'can you see me too?',\n", + " 'if you are',\n", + " 'watching me',\n", + " 'smile for me',\n", + " \"i'm waving my hand\",\n", + " 'try singing',\n", + " 'with simultaneous translation',\n", + " 'good morning, good day',\n", + " 'what you are, what you like',\n", + " 'goodbye, thank you, sakitsumi',\n", + " 'what you are, what you like',\n", + " 'ahaha',\n", + " 'on the afternoon satellite broadcast',\n", + " 'a flag is erected on',\n", + " 'some distant star',\n", + " \"--i can't believe it!\",\n", + " 'by any chance',\n", + " 'can you see me too?',\n", + " 'if you are',\n", + " 'watching me',\n", + " 'smile for me',\n", + " \"i'm waving my hand\",\n", + " 'you look tired',\n", + " \"i'm the same\",\n", + " \"i'm so happy\",\n", + " 'that we met',\n", + " 'love is here',\n", + " 'with simultaneous translation',\n", + " 'good morning, good day',\n", + " 'what you are, what you like',\n", + " 'goodbye, thank you, sakitsumi',\n", + " 'what you are, what you like',\n", + " 'ahaha',\n", + " 'uh, uh, uh',\n", + " 'another banger',\n", + " 'make i pon, make i pon-pon-pon',\n", + " 'make i come',\n", + " 'make i give her the pon-pon-pon',\n", + " 'your body kakara',\n", + " 'make i pon-pon-pon',\n", + " 'onome get e—',\n", + " 'ah',\n", + " 'ki lo fe omote je ogede, aha',\n", + " 'fine fine okpekete, aha',\n", + " 'wa je alo folake, aha',\n", + " 'whine am omote, ah',\n", + " 'ju ba di your body chekere, aha',\n", + " 'bo se re di yen imade, aha',\n", + " 'ta ba sile kilo fe, aha',\n", + " 'whine am oh my lady, oh',\n", + " 'tell me wetin dey your body, oh',\n", + " 'omote my sweetie baby',\n", + " 'why you wan come give me konji? oh',\n", + " ...]},\n", + " 'rap': {'meta': {'train_data': ['skrrt, skrrt, skrrt, skrrt',\n", + " 'juicy gay (juicy gay)',\n", + " 'juicy gay (juicy gay)',\n", + " 'juicy gay (juicy gay)',\n", + " 'es ist juicy gay (juicy gay)',\n", + " 'juicy gay (juicy gay)',\n", + " 'juicy gay (juicy gay)',\n", + " 'juicy gay (juicy gay)',\n", + " 'es ist juicy gay (juicy gay)',\n", + " 'juicy gay (juicy gay)',\n", + " 'juicy gay (juicy gay)',\n", + " 'juicy gay (juicy gay)',\n", + " 'es ist juicy gay (juicy gay)',\n", + " 'juicy gay (juicy gay)',\n", + " 'juicy gay (juicy gay)',\n", + " 'bitch es ist juicy gay (juicy gay)',\n", + " 'yeah, baby, i like it like that',\n", + " 'you gotta believe me when i tell you',\n", + " 'i said i like it like that',\n", + " 'you gotta believe me when i tell you',\n", + " 'i said i like it like—',\n", + " 'now i like dollars, i like diamonds',\n", + " \"i like stuntin', i like shinin' (yeah)\",\n", + " 'i like million dollar deals',\n", + " \"where's my pen? bitch, i'm signin' (signin')\",\n", + " 'i like those balenciagas (those)',\n", + " 'the ones that look like socks',\n", + " 'i like going to the jeweler',\n", + " 'i put rocks all in my watch (cha-ching)',\n", + " 'i like texts from my exes when they want a second chance (what?)',\n", + " \"i like proving niggas wrong, i do what they say i can't\",\n", + " 'they call me cardi bardi, banging body',\n", + " 'spicy mami, hot tamale',\n", + " 'hotter than a somali, fur coat, ferrari (rrr, woo)',\n", + " \"hop out the stu', jump in the coupe (coupe)\",\n", + " 'big dipper on top of the roof',\n", + " 'flexing on bitches as hard as i can',\n", + " \"eating halal, driving the lam'\",\n", + " \"told that bitch i'm sorry, though (sorry, though)\",\n", + " \"'bout my coins like mario (mario)\",\n", + " 'yeah, they call me cardi b',\n", + " 'i run this shit like cardio',\n", + " 'woo, facts',\n", + " 'diamond district in the chain, chain (i said i like it like that)',\n", + " \"certified, you know i'm gang, gang, gang, gang (i said i like it like—woo)\",\n", + " 'drop the top and blow the brains, woo (woo, i said i like it like that)',\n", + " \"oh, he's so handsome, what's his name? yeah (woo, facts, i said i like it)\",\n", + " 'oh, i need the dollars, cha-ching (i said i like it like that)',\n", + " 'beat it up like piñatas (i said i like it like—; uh)',\n", + " 'tell the driver, close the curtains (i said i like it like that, skrrt)',\n", + " 'bad bitch make you nervous (i said i like it)',\n", + " 'cardi b',\n", + " 'chambean, chambean, pero no jalan (¡jalan!)',\n", + " \"tú compras to'a las jordan, bo, a mí me las regalan (jeje)\",\n", + " 'i spend in the club what you have in the bank (¡wuh; ¡yeh!)',\n", + " 'this is the new religion bang in latino gang, gang, ¡yeh!',\n", + " 'trato de hacer dieta, pero es que en el closet tengo mucha grasa (¡yeh!; ¡wuh!)',\n", + " \"ya mudé la' gucci pa' dentro de casa, yeh (¡wuh!)\",\n", + " 'cabrón, a ti no te conocen ni en plaza (no)',\n", + " 'el diablo me llama, pero jesucristo me abraza (amén)',\n", + " 'guerrero como eddie, que viva la raza, yeh',\n", + " 'me gustan boricuas, me gustan cubanas',\n", + " 'me gusta el acento de las colombianas (¿qué hubo pues?)',\n", + " 'como mueve el culo la dominicana (¿qué lo que?)',\n", + " 'lo rico que me chingan las venezolanas (¡wuh!)',\n", + " 'andamos activos, perico pin pin (wuh)',\n", + " 'billetes de cien en el maletín (¡ching!)',\n", + " 'que retumbe el bajo, bobby valentín, yeh (¡buh!)',\n", + " 'aquí es prohibido amar, diles, charytín',\n", + " \"que pa'l picor les tengo claritín\",\n", + " 'yo llego a la disco y se forma el motín (¡rrrah!)',\n", + " 'diamond district in the chain (i said i like it like that)',\n", + " 'bad bunny baby, bebé, bebé',\n", + " \"certified, you know i'm gang, gang, gang, gang (i said i like it like—woo)\",\n", + " 'drop the top and blow the brains, woo (woo, i said i like it like that)',\n", + " \"oh, he's so handsome, what's his name? yeah (woo, yeh, i said i like it)\",\n", + " 'oh, i need the dollars, cha-ching (i said i like it like that)',\n", + " 'beat it up like piñatas (i said i like it like—)',\n", + " 'tell the driver, close the curtains (i said i like it like that, skrrt)',\n", + " 'bad bitch make you nervous (i said i like it, that)',\n", + " \"como celia cruz tengo el azúcar (azúca')\",\n", + " 'tu jeva me vio y se fue de pecho como jimmy snuka (ah)',\n", + " 'te vamos a tumbar la peluca',\n", + " \"y arranca pa'l carajo, cabrón, que a ti no te vo'a pasar la hookah (hookah, hookah)\",\n", + " 'mis tenis balenciaga me reciben en la entrada (wuh)',\n", + " \"pa-pa-paparazzi like i'm lady gaga (wuh)\",\n", + " 'y no te me hagas (eh)',\n", + " 'que en cover de billboard tú has visto mi cara (eh)',\n", + " 'no salgo de tu mente (wuh)',\n", + " 'donde quieras que viajes has escuchado \"mi gente\"',\n", + " \"yo no soy hype, soy como el testarossa (hype; 'rossa)\",\n", + " 'yo soy el que se la vive y también el que la goza (goza, goza)',\n", + " 'es la cosa, mami es la cosa (cosa, cosa)',\n", + " 'el que mira sufre y el que toca goza (goza, goza, goza)',\n", + " 'i said i like it like that',\n", + " 'i said i like it like that (rrr)',\n", + " 'i said i like it like that (woo)',\n", + " 'i said i like it like that',\n", + " 'diamond district in the chain (i said i like it like that)',\n", + " \"certified, you know i'm gang, gang (i said i like it like—)\",\n", + " 'drop the top and blow the brains, woo (i said i like it like that)',\n", + " \"oh, he's so handsome, what's his name? yeah (i said i like it)\",\n", + " 'suck my fucking dick, bitch',\n", + " '(suh, dude! haha!)',\n", + " 'eh, suck my fucking dick',\n", + " '(aye!) suck my fucking dick, bitch',\n", + " 'ayay (haha!)',\n", + " 'suh dude, suh dude!',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick',\n", + " 'suck my - suck my dick',\n", + " 'dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fuh-',\n", + " 'okay, she suck my fucking dick bitch',\n", + " 'this stupid bitch suck my dick',\n", + " 'she suck my fucking dick',\n", + " 'and the bitch suck my dick',\n", + " 'the bitch -',\n", + " 'suck my fucking dick',\n", + " \"bitch gon' suck my fucking dick\",\n", + " 'aye, aye, aye, aye, one time',\n", + " \"aye the bitch gon' suck my fucking dick one time (aye)\",\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " 'suck my fucking dick, bitch',\n", + " '*gun cock*',\n", + " 'yeah',\n", + " 'afae na ma sɔre',\n", + " 'me tee monka akyɛ',\n", + " '(what you wan do oo yeah)',\n", + " 'hehehe',\n", + " 'yeah, ok yɛnkc ɛrr',\n", + " 'tie',\n", + " 'fuck you talking bout',\n", + " '80% of rappers copy me style',\n", + " \"i ain't mad ɛyɛ me anigye and am really proud\",\n", + " 'cos apart from reggie monhu rapper sei its been a while',\n", + " 'yeah, ɛyaa na ghana mma no pɛ me swag',\n", + " 'yvone okoro hyia me first time otwaa me hug',\n", + " 'na becca koraa deɛ nka nyame ampata a nka ɔtee me komu chain',\n", + " 'ɔse ɔfeeli sɛ nea sarkodie fa so move’ie ne crowd',\n", + " 'yeah',\n", + " 'i guess you wanna know',\n", + " 'how i keep on running the game for a decade or so',\n", + " 'ɛnyɛ me swag ɛnyɛ punch ɛna ɛnyɛ me flow',\n", + " 'me secrete yinaa hyɛ me tirimu',\n", + " 'i keep it on the low',\n", + " 'all you got to do is keep it 1hunnid for real',\n", + " 'obi mfrɛ me lawyer ma me na ɛbɛ gye me will',\n", + " 'sɛ me wu a, ɔnfa me punch no bi nkyɛ me nuanom a, ɔmo a’short’i flow',\n", + " 'me pa no kyɛw cause i know how it feel',\n", + " 'nkrɔfoɔ fresɛ relevancy depends on your hit',\n", + " 'ɔmo boa',\n", + " \"does it, that philosophy doesn't exist\",\n", + " 'ɛyɛ a, mo werefi sɛ my biggest hit was adonai',\n", + " 'that was two years ago, but still obidi is the ish',\n", + " 'ɛyɛ a, mo kasa pii, mo bɔ mɔden n’check’i me records',\n", + " 'oyankopɔn de me baa ewiase mu ha for a purpose',\n", + " 'i swear to god',\n", + " 'sɛ me tu kwan kɔ yɛ me tour no ba a, asantehene na ɛbɛ hyea me wɔ airport',\n", + " 'sɛ woa te ma siɛ',\n", + " 'so what you won do',\n", + " '(what you won do)',\n", + " 'two of the greatest',\n", + " 'how we come through',\n", + " '(what you don do)',\n", + " 'when we step inna the back inna yah yard aah',\n", + " 'what you won do',\n", + " 'what you wanna do',\n", + " 'you won show me',\n", + " 'acting like you don’t know me',\n", + " 'what you won do',\n", + " 'what you won do!',\n", + " 'what you don do',\n", + " 'what you don do!',\n", + " 'rap no mafa no overdose',\n", + " 'nti na last year me drop’ie 60 collabos',\n", + " 'me san so drop’ie a couple of singles',\n", + " 'and all of those singles a, me drop’ie ne nyinaa nso yɛ fire mom',\n", + " 'no kissing verse kraa tumi gye the best rapper',\n", + " 'finally me ne flavour mom, you know the xfactor',\n", + " 'wo nua mɛbɛn me na me level no yɛ kanye ne jigga',\n", + " 'fa wo bobby schmurda life no kɔbɔ prank masa',\n", + " 'mebɔ dwom a, boys no gyegye ho sɛ pasiguard',\n", + " 'didi a, na ma da yɛfrɛ me adidas',\n", + " 'sɛ mo nbu me kraa mo nfa me nsi bɛbi papa',\n", + " 'na yento nipa nkwene, tiefi kraa yɛde yɛ biogas',\n", + " 'ɛdwom wei nkɔ ma mo a, mo feel’ie sarkodie no flow',\n", + " 'yankopɔn ne disciples me medea ne mo oo',\n", + " 'wei yɛ by the way me tɔn asaase one plot oyarifa wo a, w’ani gye ho bɔmɔden brɛ me dough',\n", + " 'fiti mmre a, me drop’ie borga borga',\n", + " 'mo anomu nsɛn ny3lɛ duro, elooki rubber rubber',\n", + " 'mo de ntɔtɔfifii wei compare sarkodie a, ayɛ sɛ deɛ wo de aben wo ha compare bisa kdei brother brother',\n", + " '2017 afutuo a, me de bɛma against',\n", + " 'sɛ yɛ tɔn mo kra a, moso mfasoɔ ntɔ me kɔm mu chain',\n", + " 'nti mo nkɔ so ndwene mo ho na mo guso dwen me ho na mede plane nam m’upampamu sɛ tory lanez',\n", + " 'so what you won do',\n", + " '(what you won do)',\n", + " 'two of the greatest',\n", + " 'how we come through',\n", + " '(what you don do)',\n", + " 'when we step inna the back inna yah yard aah',\n", + " 'what you won do',\n", + " 'what you wanna do',\n", + " 'you won show me',\n", + " 'acting like you don’t know me',\n", + " 'what you won do',\n", + " 'what you won do!',\n", + " 'what you don do',\n", + " 'what you don do!',\n", + " 'if i dail up my babe, she better halla back (shoddy better halla beck)',\n", + " 'cause, its too much money and i am like ‘shoddy where ya at’ (where ya at ,where ya at)',\n", + " '(mese)',\n", + " 'you won show me, quite acting like you don’t know me',\n", + " '(mese)',\n", + " 'it’s too much money and i am like shoddy see you better halla back (halla back, halla back)',\n", + " '(she is dangerous, bring somebody come save me oo)',\n", + " 'sark',\n", + " 'jezze jagga',\n", + " 'bumba!',\n", + " '2017 and forever',\n", + " 'it’s real',\n", + " 'yao',\n", + " 'this caribbean air got me feeling like a millionaire (wuh)',\n", + " \"hold up, that's 'cause i'm a millionaire (auh)\",\n", + " \"under the mattress, yeah, that's a million there (yeah)\",\n", + " \"and i won't stop until i make it to a billionaire (billionaire)\",\n", + " 'ando haciendo dinero desde que era un menor (yao)',\n", + " \"yo sé lo que e' la esquina, sé que el fuego da calor (prr)\",\n", + " 'le di esperanza a mi familia (okey)',\n", + " \"ahora vivimo' como si me gané el powerball, yao'\",\n", + " 'y no fue la lotería (no)',\n", + " \"mi vida estaba apagá' y le puse batería (ajá)\",\n", + " \"yo soy el cantante que tú ve' por la televisión (yes)\",\n", + " 'soy el causante que tu puta brinque de emoción',\n", + " 'parece que soy un dios, siempre se arrodilla (amén)',\n", + " \"voy tildao' como un diamante para ella brillar (bling, bling), bling, bling\",\n", + " \"le metí toa' la noche y la tipa no tenía fin\",\n", + " 'oh, shit sigamos el capítulo (oh, shit; capítulo)',\n", + " 'dile a tu novio que no sea tan ridículo (ridículo)',\n", + " \"dile que le faltan testículo'\",\n", + " 'y yo soy el dueño de ese culo con todo y título (wow)',\n", + " 'si te la quito, mala mía (mala mía)',\n", + " \"yo la tengo felí' y tú la tenía' aborrecía' (aborrecí'a)\",\n", + " 'toda la noche gritando \"ave maría\"',\n", + " 'ese toto cuando me ve me dice: \"bueno\\' día\\'\" (bueno\\' día\\')',\n", + " \"y despué' que pasa el día (pasa el día, wuh)\",\n", + " 'ella me dice: \"buena\\' tarde\\'\" (wuh)',\n", + " \"siempre me espera encendí'a (encendí'a)\",\n", + " \"despué' que yo le meta no importa si llego tarde (auh)\",\n", + " 'this caribbean air got me feeling like a millionaire',\n", + " \"hold up (hold up), that's 'cause i'm a millionaire\",\n", + " \"under the mattress, yeah, that's a million there\",\n", + " \"and i won't stop until i make it to a billionaire\",\n", + " 'hmm to a billionaire',\n", + " 'hmm-hmm, to a-to a billionaire',\n", + " 'i was born to be a millionaire',\n", + " \"but i won't stop until i make it to a billionaire (auh)\",\n", + " 'got mi coupe, no roof, no ceiling here',\n", + " \"smoking sour on the island, yeah, we trippin' there\",\n", + " 'see me take lick to them boys over there',\n", + " \"behave yourself and don't make them come over here (over here)\",\n", + " 'como batman, me come from the island',\n", + " 'puerto rican style, mixed with some jamaican',\n", + " 'the ogs in my hood call me flash',\n", + " 'fast as a motherfucka with this cash',\n", + " \"flippin' this, flippin' that (flippin' that)\",\n", + " 'fast money, go getter, you know i represent that',\n", + " 'when i toured, last week, took my niggas with me',\n", + " 'no mc but i keep them hammers with me',\n", + " 'this caribbean air got me feeling like a millionaire',\n", + " \"hold up, that's 'cause i'm a millionaire\",\n", + " \"under the mattress, yeah, that's a million there\",\n", + " \"and i won't stop until i make a to a billionaire\",\n", + " 'hmm to a billionaire',\n", + " 'hmm-hmm, to a-to a billionaire',\n", + " 'i was born to be millionaire',\n", + " \"but i won't stop until i make a to a billionaire\",\n", + " 'yeah, baby, i like it like that',\n", + " 'you gotta believe me when i tell you',\n", + " 'i said i like it like that',\n", + " 'you gotta believe me when i tell you',\n", + " 'i said i like it like—',\n", + " 'now i like dollars, i like diamonds',\n", + " \"i like stuntin', i like shinin' (yeah)\",\n", + " 'i like million dollar deals',\n", + " \"where's my pen? bitch i'm signin' (signin')\",\n", + " 'i like those balenciagas (those)',\n", + " 'the ones that look like socks',\n", + " 'i like going to the jeweler',\n", + " 'i put rocks all in my watch (cha-ching)',\n", + " 'i like texts from my exes when they want a second chance (what?)',\n", + " 'i like proving niggas wrong',\n", + " \"i do what they say i can't\",\n", + " 'they call me cardi bardi, banging body',\n", + " 'spicy mami, hot tamale',\n", + " 'hotter than a somali, fur coat, ferrari (rrr, woo)',\n", + " \"hop out the stu', jump in the coupe (coupe)\",\n", + " 'big dipper on top of the roof',\n", + " 'flexing on bitches as hard as i can',\n", + " \"eating halal, driving the lam'\",\n", + " \"told that bitch i'm sorry though (sorry though)\",\n", + " \"'bout my coins like mario (mario)\",\n", + " 'yeah, they call me cardi b',\n", + " 'i run this shit like cardio',\n", + " 'woo, facts',\n", + " 'diamond district in the chain, chain (i said i like it like that)',\n", + " \"certified, you know i'm gang, gang, gang, gang (i said i like it like—woo)\",\n", + " 'drop the top and blow the brains, woo (woo, i said i like it like that)',\n", + " \"oh, he's so handsome, what's his name? yeah (woo, facts, i said i like it)\",\n", + " 'oh, i need the dollars, cha-ching (i said i like it like that)',\n", + " 'beat it up like piñatas (i said i like it like—; uh)',\n", + " 'tell the driver, close the curtains (i said i like it like that, skrrt)',\n", + " 'bad bitch make you nervous (i said i like it)',\n", + " 'cardi b',\n", + " 'chambean, chambean, pero no jalan (¡jalan!)',\n", + " \"tú compras to'a las jordan, bo, a mí me las regalan (jeje)\",\n", + " 'i spend in the club what you have in the bank (¡wuh; ¡yeh!)',\n", + " 'this is the new religion bang in latino gang, gang, ¡yeh!',\n", + " 'trato de hacer dieta, pero es que en el closet tengo mucha grasa (¡yeh!; ¡wuh!)',\n", + " \"ya mudé la' gucci pa' dentro de casa, yeh (¡wuh!)\",\n", + " 'cabrón, a ti no te conocen ni en plaza (no)',\n", + " 'el diablo me llama, pero jesucristo me abraza (amén)',\n", + " 'guerrero como eddie, que viva la raza, yeh',\n", + " 'me gustan boricuas, me gustan cubanas',\n", + " 'me gusta el acento de las colombianas (¿qué hubo pues?)',\n", + " 'como mueve el culo la dominicana (¿qué lo que?)',\n", + " 'lo rico que me chingan las venezolanas (¡wuh!)',\n", + " 'andamos activos, perico pin pin (wuh)',\n", + " 'billetes de cien en el maletín (¡ching!)',\n", + " 'que retumbe el bajo, bobby valentín, yeh (¡buh!)',\n", + " 'aquí es prohibido amar, diles, charytín',\n", + " \"que pa'l picor les tengo claritín\",\n", + " 'yo llego a la disco y se forma el motín (¡rrrah!)',\n", + " 'diamond district in the chain (i said i like it like that)',\n", + " 'bad bunny baby, bebé, bebé',\n", + " \"certified, you know i'm gang, gang, gang, gang (i said i like it like—woo)\",\n", + " 'drop the top and blow the brains, woo (woo, i said i like it like that)',\n", + " \"oh, he's so handsome, what's his name? yeah (woo, yeh, i said i like it)\",\n", + " 'oh, i need the dollars, cha-ching (i said i like it like that)',\n", + " 'beat it up like piñatas (i said i like it like—)',\n", + " 'tell the driver, close the curtains (i said i like it like that, skrrt)',\n", + " 'bad bitch make you nervous (i said i like it, that)',\n", + " \"como celia cruz tengo el azúcar (azúca')\",\n", + " 'tu jeva me vio y se fue de pecho como jimmy snuka (ah)',\n", + " 'te vamos a tumbar la peluca',\n", + " \"y arranca pa'l carajo, cabrón, que a ti no te vo'a pasar la hookah (hookah, hookah)\",\n", + " 'mis tenis balenciaga me reciben en la entrada (wuh)',\n", + " \"pa-pa-paparazzi like i'm lady gaga (wuh)\",\n", + " 'y no te me hagas (eh)',\n", + " 'que en cover de billboard tú has visto mi cara (eh)',\n", + " 'no salgo de tu mente (wuh)',\n", + " 'donde quieras que viajes has escuchado \"mi gente\"',\n", + " \"yo no soy hype, soy como el testarossa (hype; 'rossa)\",\n", + " 'yo soy el que se la vive y también el que la goza (goza, goza)',\n", + " 'es la cosa, mami es la cosa (cosa, cosa)',\n", + " 'el que mira sufre y el que toca goza (goza, goza, goza)',\n", + " 'i said i like it like that',\n", + " 'i said i like it like that (rrr)',\n", + " 'i said i like it like that (woo)',\n", + " 'i said i like it like that',\n", + " 'diamond district in the chain (i said i like it like that)',\n", + " \"certified, you know i'm gang, gang (i said i like it like—)\",\n", + " 'drop the top and blow the brains, woo (i said i like it like that)',\n", + " \"oh, he's so handsome, what's his name? yeah (i said i like it)\",\n", + " ':',\n", + " 'hate me prome, kai stima, den final semper ma stima bosan',\n", + " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", + " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", + " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", + " 'di antias mita.(huh)',\n", + " 'di antias mita',\n", + " 'di antias mita.(huh)',\n", + " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", + " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", + " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", + " ':',\n", + " 'trap mi swag na modi bisa',\n", + " 'stack on stack balora tur pida',\n", + " 'anto handle fast si tin hopi sifras',\n", + " 'tin kos mahos pabo tin kos bunita',\n", + " \"connectie limpi stail'i kompania\",\n", + " 'mi wak pasado mes ta eng pa mira',\n", + " 'semper tin kos mas miho den bida',\n", + " 'korsou ta mas nechi ku costa rica',\n", + " \"fo'i hato bota mira bon bini sua\",\n", + " 'mi tin un barba mane terrorista',\n", + " 'schets dos lista pami settle bida',\n", + " 'mi muhe di kas mester ta egt bonita',\n", + " 'limpia bon anto stel kuminda',\n", + " \"styl'i dev baha bo tempo sinta\",\n", + " 'puntrami semper ku tin dress pa strika',\n", + " \"si sen ta papia mike p'e stack por grita\",\n", + " 'pami check famia mi di....',\n", + " ':',\n", + " 'hate me prome, kai stima, den final semper ma stima bosan',\n", + " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", + " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", + " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", + " 'di antias mita.(huh)',\n", + " 'di antias mita',\n", + " 'di antias mita.(huh)',\n", + " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", + " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", + " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", + " ':',\n", + " 'bosa kuantu hende ta soda traha?',\n", + " 'overtime pa nan por kobra mas',\n", + " 'gobiernu ta roba nan',\n", + " 'belastingdienst ta roba nan',\n", + " 'esnan ku kolo nan ta kontrola',\n", + " 'sakami foi rei mati kon por ta?',\n", + " 'e makamba mi tras ta bon droga',\n", + " \"bo'n ta tira bista den su otro tas\",\n", + " 'nan ke kue antiano ke moccro nan',\n", + " 'nan no ke mi bon mi no ta kolo kla',\n", + " 'mi tin mas ku 20 aña ta soporta',\n", + " 'nan ke wak mi manera e bobo nan',\n", + " 'mi ke tereno ku un otro kas',\n", + " 'mi hasi malu pami por lográ',\n", + " 'dios pordoná, niun hende lo no sa',\n", + " \"bo'n ta bira riku mes di dos toká anto nunka mas...\",\n", + " ':',\n", + " 'hate me prome, kai stima, den final semper ma stima bosan',\n", + " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", + " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", + " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", + " 'di antias mita.(huh)',\n", + " 'di antias mita',\n", + " 'di antias mita.(huh)',\n", + " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", + " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", + " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", + " ':',\n", + " 'hate me prome, kai stima, den final semper ma stima bosan',\n", + " 'si nan ke mi morto ta ki mita baha anto hopi ta muri trempan',\n", + " 'futuro ta serka ahinda minsa ki mi tei bira mañan',\n", + " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita',\n", + " 'di antias mita',\n", + " 'di antias mita',\n", + " 'di antias mita',\n", + " 'si nan ke mi morto ta ki mita baha anto hopi ta muri trempan',\n", + " 'futuro ta serka ahinda minsa ki mi tei bira mañan',\n", + " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita',\n", + " 'bombay ke gully ko kholu mainjese ye dhakkan hai',\n", + " 'bhai tera ram aur altaf ye lakhan ye',\n", + " 'baki sab button hai, tereliye bhacchan hai',\n", + " 'chotti si murgi, hum mutton hai',\n", + " 'lerele button aur khane ke wande',\n", + " 'nahane pe dhyan de mere gaane se gyan le',\n", + " 'nanhi si jaan, mujhse tu jaan le',\n", + " 'main hu salman, tu fardeen khan beh',\n", + " 'insta pe sarkar aur asal me bachhan hai',\n", + " 'khudko bolte teer, par namu nishan khatam hai',\n", + " 'machis ki kandi, jiske ham chillam hai',\n", + " 'chillam chale kam nahi toh dharavi mein fillum hai',\n", + " 'khullum khale baat bheje mein daal le',\n", + " 'daal mein kaala nahi pure bombay mein maal hai (oh shit)',\n", + " 'itna sa maal hai hai ki saal tak dhamal hai',\n", + " 'mera tu chodd tu khudka sambhal',\n", + " 'ajj tera kal mera, kal tera ajj',\n", + " 'tu jaha ka sher waha main karu raaj',\n", + " 'jhol tere khulle aur mere sab razz',\n", + " 'chotte tu kaidh mein, daal diye bars',\n", + " 'chotte sunn, idhar aa idhar aa',\n", + " 'ek kaam hai (kya?)',\n", + " 'idhar aa idhar aa',\n", + " 'chotte sunn (nahi)',\n", + " 'chotte sunn (kya?)',\n", + " 'chotte sunn (nahi)',\n", + " 'idhar aa idhar aa',\n", + " 'gucci aur nike, sab tere bhai ki',\n", + " 'dharavi mein shotters mere, tension mereko kaiki',\n", + " 'network thora slow slow (ok)',\n", + " \"but money counting high speed (it's lit!)\",\n", + " 'ek phone pe yaha mere shooters karte fighting',\n", + " 'yaha koi big shot toh koi hai jholler',\n", + " 'koi hai badhir toh koi hai sober',\n", + " 'koi hai decent toh koi hai loafer',\n", + " 'inn sab ke beech mein ek rapper',\n", + " 'jabhi niklu naake se, ye bolle mujhe rap kar',\n", + " 'tere samne ganna gaa ke bana kya mein rapper',\n", + " 'raasta chorr, ban kar tera bhan bhan',\n", + " 'flow maru bheja pe, sidha bole dhan dhan',\n", + " 'aur ye bhaage jaise run run',\n", + " 'jaise hi aapne gaane shuru, tere gaane bandh bandh',\n", + " 'old school swaad jisme bajje biggie big pun',\n", + " 'tera mitha kaam kyuki tu sunta lil pump',\n", + " 'mera style thora altar aur bhaari hai',\n", + " 'bars aur sound thora hattkar, game full on aur ham jaise master',\n", + " 'boli meri tez tere shooters se bhi faster',\n", + " 'mat pith peeche baat kar, gang meri chill kar dhv mein raat bhar',\n", + " 'sick mera flow, world wide jaise chopper',\n", + " 'ek saas mein badaldu, mausam',\n", + " 'khatri scene apna tera kaam hai sasta',\n", + " 'ye flow itni variety kyuki sunta main hu busta',\n", + " 'ab gaane karke kill, mera hater bhi ye sunta',\n", + " 'aur ham kamate paisa, woh kamata ghanta',\n", + " 'paatli gaali pakad ghar ja (woo)',\n", + " 'denge nahi toh kharcha (skrr)',\n", + " 'sahi rahega yaha se wattja (chal)',\n", + " 'nahi toh tu khayega fatka (phatak)',\n", + " 'game flip 2018 (haan?)',\n", + " 'saath mein homeboy loka (loka)',\n", + " 'gaana full volume mein baja (baja)',\n", + " 'mc altaf mumbai 17 (chal)',\n", + " 'chotte sunn, idhar aa idhar aa',\n", + " 'ek kaam hai (kya?)',\n", + " 'idhar aa idhar aa',\n", + " 'chotte sunn (nahi)',\n", + " 'chotte sunn (kya?)',\n", + " 'chotte sunn (nahi)',\n", + " 'idhar aa idhar aa',\n", + " 'gucci aur nike, sab tere bhai ki',\n", + " 'dharavi mein shotters mere, tension mereko kaiki',\n", + " 'network thora slow slow (ok)',\n", + " \"but money counting high speed (it's lit!)\",\n", + " 'ek phone pe yaha mere shooters karte fighting',\n", + " 'zig zag',\n", + " 'mueve mueve ese culololololololo',\n", + " 'sha-sha-sha-sha-shake that ass',\n", + " 'woyoyoyoyoy (culololololololo)',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " 'mueve mueve ese',\n", + " 'zig zag ziggy zig zag ziggy zig zag (ay mama)',\n", + " 'chorus:',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " 'toda la nenas quieren que la pongan en la lista',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " 'culololololololo',\n", + " 'vers 1',\n", + " 'hay mujeres que le gusta',\n", + " 'hay mujeres que le encanta',\n", + " 'hay mujeres que le adora',\n", + " 'moviendo la cintura en club te devora',\n", + " 'por la calle ella es señorita',\n", + " 'le gusta freak out en la pista',\n", + " 'le gusta get in to the zona',\n", + " 'she tha bomba poom poom terrorista',\n", + " 'ohhhh',\n", + " 'the way you loosing up your body',\n", + " 'got me begging for more',\n", + " 'let me hear you say ohhhh',\n", + " 'so what you doing to me',\n", + " 'working it slow',\n", + " 'baby put it on me',\n", + " 'here on the floor',\n", + " 'and don’t let go',\n", + " 'baby put on a show',\n", + " 'shake your shake your booty now',\n", + " 'mueve mueve ese culololololololo',\n", + " 'chorus:',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " 'toda la nenas quieren que la pongan en la lista',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " '(woyoyoyoyoy)',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " 'mueve esas caderas mami como un artista',\n", + " 'zig zag ziggy zig zag ziggy zig zag (hey)',\n", + " 'vers 2',\n", + " 'si tu quieres chit chat anda pa fuera',\n", + " 'si quieres zig zag mueve mueve esas caderas',\n", + " 'si te pones grumpy mami digo bona sera',\n", + " 'tengo toda la noche pa bailar a mi manera',\n", + " 'si tu quieres poom poom pang pang mera mera',\n", + " 'quieres ser mi queen',\n", + " 'numero uno la primera',\n", + " 'eres africana o guantanamera',\n", + " 'no matter where you’re from representa tu bandera',\n", + " 'chorus:',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " 'toda la nenas quieren que la pongan en la lista',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " '(woyoyoyoyoy)',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " 'mueve esas caderas mami como un artista',\n", + " 'zig zag ziggy zig zag ziggy zig zag (hey)',\n", + " 'vers 1',\n", + " 'hay mujeres que le gusta',\n", + " 'hay mujeres que le encanta',\n", + " 'hay mujeres que le adora',\n", + " 'moviendo la cintura en club te devora',\n", + " 'por la calle ella es señorita',\n", + " 'le gusta freak out en la pista',\n", + " 'she da real deal freaktiona',\n", + " '#zigzag put it on the insta',\n", + " '#zigzag put it on the insta',\n", + " 'so what you doing to me',\n", + " 'working it slow',\n", + " 'baby put it on me',\n", + " 'here on the floor',\n", + " 'mueve esas caderas mami como un artista',\n", + " 'mueve esas caderas mami como un artista',\n", + " 'chorus:',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " 'toda la nenas quieren que la pongan en la lista',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " '(woyoyoyoyoy)',\n", + " 'zig zag ziggy zig zag ziggy zig zag',\n", + " 'mueve esas caderas mami como un artista',\n", + " 'zig zag ziggy zig zag ziggy zig zag (hey)',\n", + " 'ziggy ziggy zig zag',\n", + " 'woyoyoyoyoy',\n", + " 'reego',\n", + " 'ay mama',\n", + " 'narator: mesaj pentru europa:',\n", + " 'cheloo:',\n", + " 'nu suntem ciori, nu stăm în corturi',\n", + " 'facem eforturi să ne elevăm',\n", + " 'și nu cântăm pe străzi în viena la acordeon',\n", + " 'noi nu cerșim cu handicapul la vedere să facem avere',\n", + " 'și nu ghicim viitorul în palmă în dughene mizere',\n", + " 'ombladon:',\n", + " 'noi nu purtăm fuste-nflorate și nu furăm din buzunare',\n", + " 'nu emigrăm în suedia cu 7 copii să ne dați ajutoare',\n", + " 'dați vina pe noi din berlin în pamplona de-mi sare voma -',\n", + " 'mânca-mi-ați p*la n-o ăa găsiți un român în rulote la roma',\n", + " 'cheloo:',\n", + " 'noi înghețăm în săli de clasă de la 6-7 ani (în p*la mea)',\n", + " '6-7 ore pe zi, fără căldură, mâncare și bani',\n", + " 'ombladon:',\n", + " 'avem părinți săraci acasă și un lucru e sigur -',\n", + " 'ni se cultivă dorința de-a reuși în viață de unul singur',\n", + " 'cheloo:',\n", + " 'ne confruntăm cu legi noi date de boi',\n", + " 'dansează cu noi valsul p*lii mele: un pas înainte, doi înapoi',\n", + " 'ombladon:',\n", + " 'mă piș pe gay și nu-i normal ca copiii mei să vadă',\n", + " 'homosexuali care se ling în gură ostentativ pe stradă',\n", + " 'e la modă sa fim toleranți, dar nu reînviem sodoma -',\n", + " 'vă putem trimite bulangii în pachet la barcelona',\n", + " 'cheloo:',\n", + " 'suntem ruda săracă, deci nu putem fi frați',\n", + " 'mesaj pentru europa:',\n", + " 'cred că ne confundați!',\n", + " 'ombladon:',\n", + " 'n-avem 7 frati acasa',\n", + " 'mama chiar nu e bolnava',\n", + " 'tata si-a beut rapid cafeaua',\n", + " 's-ia plecat la munca-n graba',\n", + " 'cheloo:',\n", + " 'facem facultăți și dăm pe cărți ultimul ban',\n", + " 'n-o să fim vreodată gunoieri la amsterdam',\n", + " 'vorbim 3 limbi și vă putem conduce avioanele',\n", + " 'dar nu putem în p*la mea socializa cu tomberoanele!',\n", + " 'ombladon:',\n", + " 'forțăm uși închise, trăim cu vise nepermise',\n", + " 'și muncim legal un an pentru un pumn de fise',\n", + " 'cheloo:',\n", + " 'bagă la cap repede, crede-ne, noi nu mâncăm lebede',\n", + " 'ne respectăm, ne rezolvăm singuri problemele',\n", + " 'ombladon:',\n", + " 'javrele și curvele în madrid vă îngroașă șatrele',\n", + " 'noi, românii, stăm la rând sa vă umplem teatrele',\n", + " 'cheloo:',\n", + " 'votăm în scârbă, e adevărat, și țara e praf, pulbere fină',\n", + " 'căci e mai ieftin să dai banul jos când cumperi o ruină',\n", + " 'banii pe 10 ani de la u. e. dispar în vile',\n", + " 'în străzi inexistante și tehnologii inutile',\n", + " 'ombladon:',\n", + " 'dacă avem pile: băi, cârnaților! pardon - băi, fraților',\n", + " 'putem cere detalii picante în pădurea spânzuraților',\n", + " 'cheloo, ombladon:',\n", + " '(sunt inofensiv, dar gândul meu e criminal!)',\n", + " 'narator:',\n", + " 'timpul s-a scurs pentru această prezentare. la final trebuie să precizăm că românia e o țară',\n", + " 'în africa, noi trăim în găuri insalubre sub pământ, suntem canibali, vânăm șobolani cu',\n", + " \"arcu', n-avem mașini că ne deplasăm prin copaci vopsiți în galben și toate construcțiile care\",\n", + " 'le puteți admira, daca alegeți să faceți o excursie pe aceste meleaguri, au fost construite de o',\n", + " 'civlizație superioară cu care noi nu avem nicio legatură..... vă mulțumim!',\n", + " 'english translation',\n", + " 'message to europe',\n", + " 'message to europe:',\n", + " 'we are not crows(1)',\n", + " \"we don't live in tents\",\n", + " 'we make efforts to elevate ourselves',\n", + " \"and we don't play the accordion on the streets of wien\",\n", + " \"we don't beg showing off our handicap, to make a fortune\",\n", + " \"and we don't tell the fortune in dirty trailers\",\n", + " \"we don't wear flowery skirts and we don't pick pockets\",\n", + " \"we don't emigrate to sweeden with 7 children to get help\",\n", + " 'you blame us, from berlin to pamplona, making me sick',\n", + " \"suck my dick(2), you won't see any romanian in trailers around rome\",\n", + " \"we freeze in classrooms since we're 6-7 years old\",\n", + " '6-7 hours a day without heating, food or money',\n", + " 'we have poor parents at home and one thing is for sure',\n", + " 'we are cultivated as to make it in life',\n", + " 'by ourselves',\n", + " 'we face new laws',\n", + " 'made by idiots',\n", + " 'dance with us',\n", + " \"my dick's waltz is a step forward, two steps backward\",\n", + " \"i piss on gays, and it's not normal that my children see\",\n", + " 'homosexuals making out ostentatiously in the street',\n", + " \"it's trendy being tolerant but don't revive sodom(3)\",\n", + " 'we can send you the fags packing to barcelona',\n", + " 'we are the poor relative so we cannot be brothers',\n", + " \"message to europe: i think you're confusing us\",\n", + " \"we don't have 7 brothers at home\",\n", + " 'our mother is really not sick',\n", + " 'our father quickly drank his coffee',\n", + " 'and hastily left for work',\n", + " 'we go to colleges',\n", + " 'and spend our last penny on books',\n", + " 'we will never be garbagemen in amsterdam',\n", + " 'we speak 3 languages, and we can fly your planes',\n", + " 'but we cannot fucking socialize with trashcans',\n", + " 'we force closed doors, we live with disallowed dreams',\n", + " 'and we legally work a whole year for a fistful of tokens',\n", + " 'let it enter your head, quickly, believe us',\n", + " \"we don't eat swans(4)\",\n", + " 'we respect ourselves, we solve our own problems',\n", + " 'lowlifes and whores strengthen the ranks of gipsy settlements(5) in madrid',\n", + " 'we the romanians line up to fill theaters',\n", + " \"we vote disgusted, it is true, and the country's turned to dust, fine powder\",\n", + " \"because it's easier to pay upfront when buying a wreckage\",\n", + " '10 years worth of money from eu disappear in mansions(6)',\n", + " 'in non-existent streets and useless technologies',\n", + " 'if we have connections, you assholes(7), my bad, you brothers',\n", + " 'we can ask for spicy details in \"the forest of the hanged\"(8)',\n", + " 'x4',\n", + " \"i'm harmless but my thought kills\",\n", + " '(the time for this presentation has ran out',\n", + " 'in the end, we must specify that romania is a country in africa',\n", + " \"we live in unhygienic holes underground, we're cannibals, we hunt rats with bows\",\n", + " \"we don't have cars because we travel through trees painted in yellow\",\n", + " 'and all the constructions that you can admire if you choose to take a trip through these lands are built by a superior civilization that we have nothing to do with',\n", + " 'thank you(9)',\n", + " 'sagaa',\n", + " 'hayba kenkeba, boys kasa but dedekwa',\n", + " 'wop3 flavor flavor miaaa',\n", + " 'hayba kenkeba, boys kasa but dedekwa',\n", + " 'wop3 flavor flavor miaaa',\n", + " 'ah feeling no y3 deep',\n", + " 'all them other girls feeling me',\n", + " 'young daddy lumba with the steeze',\n", + " 'but ebi you wey i pick eyei eyei',\n", + " 'hw3 s3 y3 ka y3 manti',\n", + " 'ɔdi ni nsa awɔ me ni',\n", + " 'me nai gu abɔnten se yi aaa',\n", + " 'king king promise',\n", + " 'all for you all for you',\n", + " 'y3 yi ni one one but see i fall for two',\n", + " 'magic sticks as she feel the cruise',\n", + " 'what we dey do',\n", + " 'mi hu nsem pii nso wa yi ne ni',\n", + " 'taste and see anokwa nipa ni',\n", + " 'nti mi sendi nu pictures edi yi n3 ni',\n", + " 'hayba kenkeba, boys kasa but dedekwa',\n", + " 'wop3 flavor flavor miaaa',\n", + " 'hayba kenkeba, boys kasa but dedekwa',\n", + " 'wop3 flavor flavor miaaa',\n", + " 'come on',\n", + " 'ekɛɛ sɛkɛ julie checki style nu o',\n", + " 'kɛ norr ewor lɛ free shi eha lɛ side pool',\n", + " 'julie den things na check your bolt',\n", + " 'mi ni noor ekɛ esor mi o',\n", + " 'sɛkɛ julie mi ni long more',\n", + " 'otumi sor mi mu na wa kase enyɛ mi o yei',\n", + " 'sɛkɛ julie say she want more',\n", + " 'sɛkɛ julie sɛkɛ julie sɛkɛ julie oh',\n", + " 'first things first',\n", + " 'all play and no work dey make man stress',\n", + " 'but all work and no play dey make man vex',\n", + " 'sprite season come, obey your thirst',\n", + " 'see how we dey put in work',\n", + " 'if placebo knack she go do you jɛ',\n", + " 'she never go do you dirt',\n", + " 'over ego over you miaa na ɔpɛ',\n", + " 'hayba kenkeba, boys kasa but dedekwa',\n", + " 'wop3 flavor flavor miaaa',\n", + " 'hayba kenkeba, boys kasa but dedekwa',\n", + " 'wop3 flavor flavor miaaa',\n", + " 'hwɛ ni tu kese bi',\n", + " 'odi bɛ gyegye mi',\n", + " 'aden mashɛ wo sɛ koko shɛ bikini 𝘍𝘶𝘤𝘬',\n", + " 'ɔse mi ntu mi bo',\n", + " 'misii miti ni su',\n", + " 'kala woho pupo',\n", + " 'i dey beg 𝘵𝘢𝘭𝘬',\n", + " 'aden awor di wo',\n", + " 'daabi wo pɛ dodo',\n", + " \"afei na wu bisa mi i'm in love or not\",\n", + " 'yes and no i be on and off',\n", + " 'ensu mor baby hold your body i dey yah',\n", + " 'you no dey search porch girl i dey flavor',\n", + " 'and you dey tell me push girl i go take am',\n", + " 'i go take am wama mi daa enda',\n", + " 'today be the day you for come through',\n", + " 'big batty girl make i hold you',\n", + " 'if ebi the thing we do we go born two',\n", + " 'we go born two make we force through',\n", + " 'ah we ah rich man ah talk demma talk',\n", + " 'dem ah no big man',\n", + " 'spectacular fire you know me ah twinkle',\n", + " 'simple girl mi love your dimple',\n", + " 'you see how mi king mi money sprinkle',\n", + " 'girl you are the best thing',\n", + " 'mi say you get the best thing',\n", + " 'afi nail pon me like a biking',\n", + " 'mi say big bumpa girl ah you mi liking',\n", + " 'hayba kenkeba, boys kasa but dedekwa',\n", + " 'wop3 flavor flavor miaaa',\n", + " 'hayba kenkeba, boys kasa but dedekwa',\n", + " 'wop3 flavor flavor miaaa',\n", + " 'aboa, woto nono',\n", + " 'somebody dey call me na whai nono',\n", + " 'mi bɛ sor mu apotor sɛ dorkonuno',\n", + " 'killmatic, yen locki pununu',\n", + " 'herh bigman for where',\n", + " 'ni sisi akyi ne gu hor no',\n", + " \"she's aware\",\n", + " 'osi ɔpɛ shapes mi bɛ ma na kor ni square',\n", + " '5k for agadzi odo ti mi su ee',\n", + " \"eei i give feelings bi she's feeling bee\",\n", + " \"she say i'm too nice so she skipping me\",\n", + " 'styles so heavy make i trigger on her jeans',\n", + " 'wornu panie two pɛ girl ah scream soo deep',\n", + " 'boys kasa girls abre o',\n", + " 'mi kor nu square papa rock her world',\n", + " 'she spoil papa then she knows',\n", + " \"b4bor mi jɛ baby please don't quit\",\n", + " 'hayba kenkeba, boys kasa but dedekwa',\n", + " 'wop3 flavor flavor miaaa',\n", + " 'hayba kenkeba, boys kasa but dedekwa',\n", + " 'wop3 flavor flavor miaaa',\n", + " \"my mamy bagi i nike'i jak spike lee jesteśmy braćmi\",\n", + " 'choć nie łączy nas znak krwi, to po prostu w nas tkwi',\n", + " 'biali jak brother ali, czarni cali jak ice-t',\n", + " \"spalamy na popiół te mic'i tak jak jedi mind tricks\",\n", + " 'tysiące kultur i wyznań, ściągam mundur i broń',\n", + " 'nie ważna jest religia, nie czuję buntu hip-hop w tej kwestii',\n", + " \"jesteśmy mc's nie ważne jaka skóra\",\n", + " 'nullo stara piaskowa góra, trzeci wymiar, noo, ahh',\n", + " 'a yo big mug, the kid bug, he loves street smartz',\n", + " 'flip any amount my hands are on like trampoline stars',\n", + " 'cheap cars pull up, jumping out with mask on',\n", + " 'stash gone, no reach? getting left with 2 cast arms',\n", + " 'product stays fresh in them glass jars',\n", + " \"dudes ain't hustling right? good reason to snatch yours\",\n", + " 'staying on point and looking sharp like them cat claws',\n", + " 'tracks, be the place i eat (w)raps like snack bars',\n", + " \"they say hip-hop is lost, could never find it's way\",\n", + " 'al last ballot of the bullet, like malcolm i serenade',\n", + " 'corner ciphers, basements, cellars, and block parties',\n", + " 'music was the outlet, others they chased poonany',\n", + " 'went from devils music to marketing corporate rhapsody',\n", + " 'ea sports commercials jingles come from embass canvancy',\n", + " 'penetrate his larynx, while my clutch remains unplugged',\n", + " 'i po co kolo sapiesz? nie ważny kolor w rapie',\n", + " 'podobno jesteś homo sapiens, widzę, że sporo łapiesz',\n", + " 'ważny mikrofon, papier i słowo w rapie',\n", + " 'być sobą w rapie, mieć swoją magię nie fotografie',\n", + " 'możesz się jarać grą, albo nam zabrać tron',\n", + " 'możesz też złapać trop i możesz złapać pion',\n", + " 'i pewnie możesz złamać kod, a potem złapać lot',\n", + " 'a nie możesz złapać flow, jak zakrakać wron',\n", + " 'sheisty bombardment, black cops, re-con department',\n", + " 'is what gets called in, modern men blazin racism, saving face',\n", + " 'missing the case, religious crazy states',\n", + " 'manipulate candidates, go poly with ticks through hip-hop',\n", + " 'we express, discuss from mistrust',\n", + " \"passed on by dick jocks, we're bound to lick shots\",\n", + " 'noo age sound we spit hot, ripping the blocks to shreads',\n", + " 'shocking heads with sicker styles',\n", + " 'than you would get from lead, nigga',\n", + " 'dla ciebie liczy się skóra i czy nosi długie srebro szyja',\n", + " 'nie kupuję tego gówna jak wielbłąd cygar',\n", + " 'po co się spinasz? życie to nie bitwa w termopilach',\n", + " 'przyda się endorfina modna dziś jak splendor w chinach',\n", + " 'nie zajedziesz na tym flow gringo, dalej niż w bok windą',\n", + " 'jak widzę glob nad nim rąk milion to hip-hop',\n", + " 'tu nie ważne są różnice, granice, kolor skóry',\n", + " 'to prywatny koncert życzeń rap manufaktury',\n", + " 'racist is everywhere in cultural estates',\n", + " 'no matter the place feeble minds breed hate',\n", + " 'where was it written and who wrote the knowledge?',\n", + " \"from what time frame? and from where'd they call it?\",\n", + " 'from a time of open minds kill all the hearsay',\n", + " 'only thing that matters is what we do here today',\n", + " 'weak have to swim firm stands on land',\n", + " 'struggles everywhere, but not in here man',\n", + " \"i'm a mc, blaze mics despite the media\",\n", + " \"that's loke stereotypes so whenever i write\",\n", + " 'words in the from of a rhyme put the meaning behind',\n", + " \"each line, each time on stage i'm blessed\",\n", + " 'trzeci wymiar nato put that ass to the test',\n", + " \"see the world is a mess so imma rep hip-hop till there ain't nuttin\",\n", + " 'left right back at it the tounge flips automatic',\n", + " 'loose status if u dealin with us',\n", + " '9assaman billah, chefna lhilal',\n", + " 'fou9 mn tilal 3iddat rimat',\n", + " 'west 3id milad ah, barman sec ankhetmou lverrat',\n", + " \"hey bitch i'm rico, rassm chari3 bla haribo\",\n", + " 'courtman jouj sirocco dekhlou la zone tanwriko',\n", + " 'boom boom tam tam kech kech',\n", + " 'mora lhandjob ta7ou rasshom gha pch pch',\n", + " 'anyways flow ra mfenkech m3enkench sam3an t9es 7ech 7erbech',\n", + " 'ana fan d condom dyal king kong, ma voice ma phantom',\n", + " 'haram 7afdo kandan koun kan koun, stress khellani kanml',\n", + " \"bentou kamlin fake hoes, i'm sorry dmaghi mtrippi\",\n", + " 'dar loufafa f my shoes, l3am sala wnta ba9i tema',\n", + " \"ara ak for him, like a ghost i'm so real\",\n", + " 'wsselt 16 7ddi lif',\n", + " 'no way tell me my',\n", + " 'babe (x12)',\n", + " \"hola lmoney bouqui l'fure\",\n", + " 'babe (x12) , baby baby baby',\n", + " \"i'm killing my self for your lips wssthom daba bla douk ah ah\",\n", + " 'tracki ghaytle3 fl billboard kan7lem daba bla matfi9 ga3',\n", + " 'do do ri do si la ellesse fuck les sto w',\n", + " 'm3ak baby cha3l ferran, d7kna mgheni mkhelwd f rap',\n", + " 'rach rach, beef m3a farid el atrache',\n", + " 'tkhlet lma w fya chi 3tech, hello katty hahowa bda terch',\n", + " 'toujours dispo bla 7ech',\n", + " 'kan3el lpussy li 7tek yal mkechkech',\n", + " 'hnaya fissa3 ghattej, dmaghk nat9 b haarb yal mfenkech',\n", + " 'kech (x12)',\n", + " 'no way tell me my',\n", + " 'babe (x12)',\n", + " 'no way, no way tell me my',\n", + " 'babe (x12), baby baby baby',\n", + " \"you knew you'd find me\",\n", + " 'hmm, hmm',\n", + " 'you knew just where to find me',\n", + " 'hmm, hmm',\n", + " \"je t'aime beaucoup, tu es drôle, t'es à moi\",\n", + " 'hmm, hmm',\n", + " 'no longer you can deny me',\n", + " 'hmm, hmm',\n", + " \"it's blinding, your glory\",\n", + " 'your glory is blinding (hmm, hm-hmm)',\n", + " 'blinding, your glory is blinding',\n", + " 'your glory is blinding (hmm, hmm)',\n", + " \"i think i'm on the verge of breaking down\",\n", + " \"and i'm on the verge of breaking down, you know-oh-oh\",\n", + " \"think i'm on the verge of breaking down, you know-oh-oh\",\n", + " \"you know you'd find me\",\n", + " 'hmm, hmm',\n", + " 'you knew just where to find me',\n", + " 'hmm, hmm',\n", + " 'hmm, hmm',\n", + " \"moi j'aime beaucoup toi, t'es drôle, t'es à moi\",\n", + " 'hmm, hmm',\n", + " 'no longer you can deny me',\n", + " 'hmm, hmm',\n", + " \"it's blinding, your glory\",\n", + " 'your glory is blinding (hmm, hm-hmm)',\n", + " 'blinding, your glory is blinding',\n", + " 'your glory is blinding (hmm, hmm)',\n", + " 'where will we go?',\n", + " 'love of mine',\n", + " 'where will we go?',\n", + " 'love of mine',\n", + " 'live from the thorns that we rose from',\n", + " 'naked as we came, with no clothes on',\n", + " 'you know how it goes, they never know what goes on',\n", + " 'and end up dancing fast to a slow song, catching up',\n", + " \"it's not matching up, fire water is toxic\",\n", + " \"passion hot and heavy, it's like water for chocolate\",\n", + " \"we're in the mood for mimosas and olives on omeletes\",\n", + " 'sell love like drugs, i want all of the profit',\n", + " 'prophet of rage on the page',\n", + " 'i make the wage on the stage',\n", + " 'i sing songs of solidarity backstage with the sage',\n", + " 'sun salutation samba, palo santo mambo',\n", + " 'but our mood is mahmoud on the oud',\n", + " 'cuban link jesus sitting on grey goose',\n", + " \"baby, you're my muse, i make tunes while you bathe nude\",\n", + " \"and you know that's my style\",\n", + " \"if i'm caetano, mami, you could be my gal (costa)\",\n", + " 'you could be my gal, be my gal, be my gal, be my gal',\n", + " 'you could be my gal, be my gal, be my gal, be my gal (yeah, yeah, yeah, yeah, yeah)',\n", + " 'you could be my gal, be my gal, be my gal, be my gal (yeah, yeah, yeah, yeah, yeah)',\n", + " 'you could be my gal, be my gal, be my gal, be my gal',\n", + " 'in puerto rico like fania',\n", + " 'escutando maria bethânia',\n", + " 'no álibis in our business we be like nunya',\n", + " 'pacing with tanya, racing like anya (skrr)',\n", + " 'vai no que vai é um ciclone',\n", + " 'camiseta é ciclone',\n", + " 'sentimental é simone',\n", + " 'aí sim, aipim com a brahma',\n", + " 'man know a lot of thing but don’t know about drama',\n", + " 'two weeks in the cama',\n", + " 'john lennon and yoko',\n", + " ...]},\n", + " 'data': ['higher than the',\n", + " 'high',\n", + " 'higher than the moon',\n", + " \"i'm higher than the moon\",\n", + " 'higher than the moon',\n", + " \"i'll fly\",\n", + " 'higher than the moon',\n", + " 'i',\n", + " 'i be thaiboy goon',\n", + " 'shawty, who are you?',\n", + " 'catch me in a 22',\n", + " 'higher than the moon (moon)',\n", + " \"i'm high, i'm high\",\n", + " 'higher than the moon',\n", + " 'artist: de la soul',\n", + " 'album: breakadawn 12\"',\n", + " 'song: stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, (uh-huh) stickabush, (oh yeah)',\n", + " 'stickabush, (oh yeah) stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush, stickabush',\n", + " 'stickabush, stickabush, stickabush (bullshit!)',\n", + " 'nos a kanta \"danki danki danki willem iii\"',\n", + " \"willem iii u'n kompronde bo kantika, ni tende mes\",\n", + " 'despues di tur nos sufrimentu, danki nos a kanta',\n", + " 'ki dia \"nos libertat\" lo bira mas ku dos palabra?',\n", + " 'dikon nos no a gradisí pa tula of karpata?',\n", + " \"am'a kere kos a kambia, no bisa mi kompolaga\",\n", + " 'kos lo kambia dia nos lo kambia',\n", + " 'si nos no lanta traha pa nos baranka, nos no ta logra nada',\n", + " 'i si nos no siña ki nos tera su balor ta',\n", + " 'nan ta kumpra nos barata pa nan sera tur nos portanan',\n", + " 'nos mayornan tur a siña nos pa komporta',\n", + " 'toch demasiado ta kai sera, ta kon por ta?',\n", + " 'nos mente su kondishon tin ku reprograma',\n", + " 'ku kultura den nos edukashon nos por progresa',\n", + " \"tin un tesoro 'bou di nos derá\",\n", + " \"ban kob'é paso ta loke nos ta sembra nos ta kosechá\",\n", + " 'ta kuantu mas nos tin ku soportá?',\n", + " 'nos futuro ta den nos man',\n", + " 'loke nos sembra nos ta kosechá',\n", + " 'nos futuro ta den nos man',\n", + " 'a yega ora pa nos koperá',\n", + " 'nos futuro ta den nos man',\n", + " 'tende ban, sera man, lucha pa nos hende nan',\n", + " 'si nos no tin lucha, no tin motibu pa selebrá',\n", + " 'yu di kòrsou no pensa robes',\n", + " 'pasobra libertat ta kuminsa den nos kabes',\n", + " 'anto nos tur por bira ken ku nos ke',\n", + " 'nos tin ku siña nos balor pa nos no bende nos mes',\n", + " 'yu di kòrsou no pensa robes',\n", + " 'pasobra libertat ta kuminsa den nos kabes',\n", + " 'anto nos tur por bira ken ku nos ke',\n", + " 'nos tin ku siña nos balor pa nos no bende nos mes',\n", + " 'ta kuantu mas nos tin ku soporta?',\n", + " 'nos futuro ta den nos man',\n", + " 'loke nos sembra nos ta kosechá',\n", + " 'nos futuro ta den nos man',\n", + " 'a yega ora pa nos koperá',\n", + " 'nos futuro ta den nos man',\n", + " 'tende ban, sera man, lucha pa nos hende nan',\n", + " 'si nos no tin lucha, no tin motibu pa selebrá',\n", + " 'otro mama ta yora pa yu ku bala a bora',\n", + " \"paso ta mama l'a koba\",\n", + " 'i tur su bròder nan a plama mesora',\n", + " 'gritando \"ban machu, ban\" despues ta bang mes a zona (bang!)',\n", + " 'nos no por sigui asina',\n", + " 'nos tin un isla pa guia',\n", + " \"mester d'un lider pa bringa\",\n", + " 'kon nos por sinti nos na liber, kaminda ta tiki tiki tur nos playa nan ta bira pisina',\n", + " \"i sin disiplina bo'n por para riba dos pia\",\n", + " \"enbes di keda stèns rib'e esnan ku ta ninga nos libertat\",\n", + " 'si tula lo biba, ta ki e lo bisa?',\n", + " 'si tula lo mira, ta kon nos ta biba',\n", + " 'si tula lo biba, ta kon lo bo pensa?',\n", + " 'lo bo bringa pa bo independiensa?',\n", + " \"anto m'a fad'i mira mucha kria mucha\",\n", + " 'kuantu mas nos tin ku soporta?',\n", + " 'lucha tin ku lucha',\n", + " 'ta kuantu mas nos tin ku soporta?',\n", + " 'nos futuro ta den nos man',\n", + " 'loke nos sembra nos ta kosechá',\n", + " 'nos futuro ta den nos man',\n", + " 'a yega ora pa nos koperá',\n", + " 'nos futuro ta den nos man',\n", + " 'tende ban, sera man, lucha pa nos hende nan',\n", + " 'si nos no tin lucha, no tin motibu pa selebrá',\n", + " 'kristaps',\n", + " 'olas ir klāt',\n", + " 'keep calm like kristaps porziņģis',\n", + " 'keep calm like kristaps porziņģis',\n", + " 'keep calm like kristaps porziņģis',\n", + " 'augumā es krietni īsāks',\n", + " 'no latvijas, bet tik pat bīstams',\n", + " 'un viss, kas virsū, tas ir īstais',\n", + " 'esmu mierīgs, tā kā kristaps',\n", + " 'i’m a lot shorter',\n", + " 'but i’m from latvia and just as dangerous',\n", + " 'everything you see is real',\n", + " 'i am calm like kristaps',\n", + " 'double double',\n", + " 'triple double',\n", + " 'lai kur es būtu, dab on them',\n", + " 'skrr-skrrr',\n", + " 'tas ir jauns lambo',\n", + " 'tu prasi: vai man…?',\n", + " 'jā, man ir!',\n", + " 'double double',\n", + " 'triple double',\n", + " 'no matter where i am, dab on them',\n", + " 'skrr-skrr',\n", + " 'that’s a new lambo',\n", + " 'you ask: do you have…?',\n", + " 'yes, i do!',\n", + " 'visi paiet malā jo viņš nāk caur',\n", + " 'sestais spēlētājs, to nevar pārtraukt',\n", + " 'carmelo anthony, shout-out',\n", + " 'pass porziņģim un tas ir knock out',\n", + " 'everybody move aside, he’s coming through',\n", + " 'number 6, you can’t stop him',\n", + " 'carmelo anthony, shout out',\n", + " 'pass to porziņģis and it’s a knock out',\n", + " 'tu labāk netuvojies, lūdzu, mazais',\n", + " 'tu zini, ka viņš tevi sūtīs mājās',\n", + " 'sāka no liepājas un kur viņš ir ticis?',\n", + " 'ņujorkas knicks',\n", + " '(six)',\n", + " 'best not get close, please, little man',\n", + " 'you know he’s going to send you home',\n", + " 'started in liepāja and now where is he?',\n", + " 'the new york knicks',\n", + " '(six)',\n", + " '(exotigaz)',\n", + " 'ayy, phil, put some sounds on me',\n", + " \"déjalo, they don't last in this shit (in this shit)\",\n", + " 'back then, i would laugh at this shit (i did, i did)',\n", + " 'reggaeton, now i dance with your bitch (with your bitch)',\n", + " 'wax on, i advanced everything',\n", + " \"déjalo, they don't last in this shit (in this shit)\",\n", + " 'back then, they would laugh at this shit (they did, they did)',\n", + " 'reggaeton, now i dance with your bitch (with your bitch)',\n", + " 'wax on, i advanced everything',\n", + " 'déjalo, let it go',\n", + " 'sold his soul to the hills and',\n", + " 'colombianas begging \"por favor\"',\n", + " 'they ready to go for a little dough',\n", + " \"my uncle selling visas like it's popeyes\",\n", + " 'en la montaña where they got no wi-fi',\n", + " \"now i'm feeling free like july-y\",\n", + " 'vamos a gastarlo en dubai',\n", + " \"déjalo, they don't last in this shit (in this shit)\",\n", + " 'back then, i would laugh at this shit (i did, i did)',\n", + " 'reggaeton, now i dance with your bitch (with your bitch)',\n", + " 'wax on, i advanced everything',\n", + " \"déjalo, they don't last in this shit (in this shit)\",\n", + " 'back then, they would laugh at this shit (they did, they did)',\n", + " 'reggaeton, now i dance with your bitch (with your bitch)',\n", + " 'wax on, i advanced everything',\n", + " \"loco, ya tú sabes, tú tienes que solta' to' esa vaina en banda\",\n", + " 'estos tigueres siempre están tirando sal',\n", + " \"esa vaina no va pa' ningún la'o, loco\",\n", + " 'deja esa vaina, déjalo todo',\n", + " 'haz lo tuyo, tú sabes que you gotta keep it gaz, bro',\n", + " 'cógelo suave, prrra (brap brap brap brap brap)',\n", + " 'tengo tres chicas en mi casa desnudas, actrices de cinema (ey)',\n", + " 'dicen soy cínico, no soy un típico',\n", + " 'estamos soplando perico dejando un reguero en todo el piso',\n", + " 'manchando alfombras, persianas',\n", + " 'antes no teníamos nada',\n", + " 'she get on her knees, make me feel like messi',\n", + " \"running through tulum, making numbers like i'm mayan\",\n", + " \"oh my, don't try, don't look at the price and just buy\",\n", + " 'c.e.o., i gotta sign it',\n", + " 'i told you it was nothing but timing',\n", + " \"déjalo, they don't last in this shit (in this shit)\",\n", + " 'back then, i would laugh at this shit (i did, i did)',\n", + " 'reggaeton, now i dance with your bitch (with your bitch)',\n", + " 'wax on, i advanced everything',\n", + " \"déjalo, they don't last in this shit (in this shit)\",\n", + " 'back then, they would laugh at this shit (they did, they did)',\n", + " 'reggaeton, now i dance with your bitch (with your bitch)',\n", + " 'wax on, i advanced everything (what)',\n", + " 'exotigaz',\n", + " \"bang, bang, bang yo' head\",\n", + " \"gang, gang, break yo' neck\",\n", + " \"bang, bang, bang yo' head\",\n", + " \"gang, gang, break yo' neck\",\n", + " \"bang, bang, bang yo' head (bang, bang, bang yo' head)\",\n", + " \"gang, gang, break yo' neck (gang, gang, break yo' neck)\",\n", + " \"bang, bang, bang yo' head (bang, bang, bang yo' head)\",\n", + " \"gang, gang, break yo' neck (gang, gang, break yo' neck)\",\n", + " \"gang, gang, break yo' neck\",\n", + " \"(bang, bang, bang yo' head)\",\n", + " \"gang, gang, break yo' neck\",\n", + " \"bang, bang, bang yo' head (bang, bang, bang yo' head)\",\n", + " \"gang, gang, break yo' neck (gang, gang, break yo' neck)\",\n", + " \"bang, bang, bang yo' head (bang, bang, bang yo' head)\",\n", + " \"gang, gang, break yo' neck (gang, gang, break yo' neck)\",\n", + " \"gang, gang, break yo' neck\",\n", + " \"(bang, bang, bang yo' head)\",\n", + " \"gang, gang, break yo' neck\",\n", + " 'make it hot, yeah',\n", + " 'make it hot',\n", + " \"i've been up four days, havin' three-ways (yeah)\",\n", + " \"like my bitches in twos, i'm the one, man (one)\",\n", + " \"tryna jump in my lane, i'm in the air, man (woo)\",\n", + " \"make her fall in love, she gon' want the last name (hah)\",\n", + " \"i'm a giant to these niggas like san fran (woah)\",\n", + " 'and this beat slap, nigga, like a backhand (woah)',\n", + " 'i know you wanna fuck a rapper, you a rap fan',\n", + " 'how you just glowed up like pac-man? (man)',\n", + " 'i get it, you got bands (yeah, yeah)',\n", + " 'make your own money, make a nigga spend his whole advance (woah)',\n", + " 'if i hit once, then i know i can hit it again (yeah)',\n", + " 't-shirt and your panties on, baby, you know what it is',\n", + " 'i make it hot (yeah, yeah)',\n", + " 'i make it hot (make it hot)',\n", + " 'make it hot, make it hot',\n", + " \"don't stop, pop, pop, make it hot (make it hot)\",\n", + " \"(don't stop, pop, pop)\",\n", + " \"(don't stop, pop, pop)\",\n", + " 'i make it hot (make it hot)',\n", + " \"(don't stop, pop, pop)\",\n", + " 'yeah, let go, j balvin, man',\n", + " \"don't stop, pop, pop, make it hot\",\n", + " 'está ahí caliente como volcán (ey, ey)',\n", + " \"me tiene detrá' de ella como perro guardián (grrr)\",\n", + " 'está pegada, soy su fan (wuh)',\n", + " 'se unió a mi equipo y me uní a su clan (ey)',\n", + " 'hipnotismo como moon y jackie chan, ey',\n", + " 'cuando twerkea ella mueve ese flan, ey',\n", + " 'de eso tan bueno ya no dan, ey',\n", + " 'calla a lo wu-tang clan, ey',\n", + " \"cuidao', te muerde mi boa\",\n", + " 'tiro rimas como noa (noa)',\n", + " \"no quiero un pedazo, te quiero to'a\",\n", + " \"¿está' llorando? ven y lo sobas (uh)\",\n", + " \"'toy activo, mami, tú me dice' when (when)\",\n", + " 'soy de threesome, así que trae a tu friend (ey)',\n", + " 'le explotó la nota cuando le dio al pen (ey)',\n", + " 'él con una y yo llego con el harén',\n", + " 'i make it hot (yeah, yeah)',\n", + " 'let go, j balvin, man',\n", + " 'yeah, i make it hot (make it hot)',\n", + " 'make it hot, make it hot',\n", + " 'chris brown, tyga',\n", + " \"don't stop, pop, pop, make it hot (make it hot)\",\n", + " \"(don't stop, pop, pop)\",\n", + " 'latino gang yeah, yeah',\n", + " \"(don't stop, pop, pop)\",\n", + " 'i make it hot (make it hot)',\n", + " \"(don't stop, pop, pop)\",\n", + " \"don't stop, pop, pop, make it hot (make it hot)\",\n", + " \"you gon' blow my cover, baby\",\n", + " \"you gon' make me pull it up, give you that lover, lover, baby\",\n", + " \"put my hands all on her ass, i know it's rough, baby\",\n", + " 'a lot of heat from your thighs',\n", + " \"so i'll take my time when i'm in that\",\n", + " 'moving right to left',\n", + " \"i won't waste no time when i'm in that\",\n", + " \"when i'm feelin' on your spot\",\n", + " \"you gon' make it hot\",\n", + " 'you know what it is, huh',\n", + " \"show me what you doin' down low with your hips\",\n", + " 'i gotta tell it like it is (huh)',\n", + " \"baby, you're on fire now\",\n", + " 'i make it hot (yeah, yeah)',\n", + " 'i make it hot (make it hot)',\n", + " 'make it hot, make it hot',\n", + " \"don't stop, pop, pop, make it hot (make it hot)\",\n", + " \"(don't stop, pop, pop)\",\n", + " \"(don't stop, pop, pop)\",\n", + " 'i make it haute (make it hot)',\n", + " \"(don't stop, pop, pop)\",\n", + " \"don't stop, pop, pop, make it hot\"]},\n", + " 'rock': {'meta': {'train_data': ['wake up, comb my hair',\n", + " 'making food disappear',\n", + " 'riding bikes, making out',\n", + " 'elephants run you down',\n", + " 'you and i run away',\n", + " 'blushing cheeks, howling wolves',\n", + " 'colorful fireworks',\n", + " \"every time, everyone, everything's full of life\",\n", + " 'everyday, everywhere, people are so alive',\n", + " 'we should all be alive!',\n", + " 'we should all be alive!',\n", + " 'horfandi, þegjandi, tala við, skríðandi',\n", + " 'dreymandi, strjúka af, koma við ekki má',\n", + " 'mála á líkama, spilað á hljóðfæri úr',\n", + " 'leika mig! leika mig!',\n", + " 'get it on, let it out',\n", + " 'fucking and spúandi',\n", + " 'get it on, let it out',\n", + " 'fucking and kæfandi',\n", + " 'we should all be alive!',\n", + " 'we should all be alive!',\n", + " 'we should all be alive!',\n", + " \"let's not stop, let's grow and live!\",\n", + " 'i see you colorful',\n", + " 'i see you in the trees',\n", + " 'i see you spiritful',\n", + " \"you're in the breeze\",\n", + " 'i see it in your hands',\n", + " 'tree fingers draw a beam',\n", + " 'i see you in the sand',\n", + " 'roll down the stream',\n", + " 'i see you in the trees',\n", + " 'i see you colorful',\n", + " 'i see you in the breeze',\n", + " \"you're spiritful\",\n", + " 'tree fingers draw a beam',\n", + " 'i see it in your hands',\n", + " \"you're rolling down the stream\",\n", + " \"you're in the sand\",\n", + " 'i see you colorful',\n", + " 'i see you in the trees',\n", + " 'i see you spiritful',\n", + " \"you're in the breeze\",\n", + " 'i see it in your hands',\n", + " 'tree fingers draw a beam',\n", + " 'i see you in the sand',\n", + " 'roll down the stream',\n", + " 'i see you in the trees',\n", + " 'i see you colorful',\n", + " 'i see you in the breeze',\n", + " \"you're spiritful\",\n", + " 'tree fingers draw a beam',\n", + " 'i see it in your hands',\n", + " \"you're rolling down the stream\",\n", + " \"you're in the sand\",\n", + " 'i see you colorful',\n", + " 'i see you in the trees',\n", + " 'i see you spiritful',\n", + " \"you're in the breeze\",\n", + " 'i see it in your hands',\n", + " 'tree fingers draw a beam',\n", + " 'i see you in the sand',\n", + " 'roll down the stream',\n", + " 'himitsu no mado akete mitara',\n", + " 'doko ni datte tonde yukeru',\n", + " 'minto aji no taimumashin',\n", + " 'doko ni datte ikeru yo',\n", + " 'awaa awaa awadama fever',\n", + " 'awaa awawa awadama fever',\n", + " 'awaa awaa awadama fever',\n", + " 'awadama awadama fever',\n", + " 'ah, yeah. tondeke, chew, chew, chewing gum!',\n", + " 'again. ikoo ze! go, go, going now!',\n", + " 'ah, yeah. tondeke, ban ban bubble gum!',\n", + " 'again. ima sugu go, go, going now!',\n", + " 'himitsu no kagi akete mitara',\n", + " 'doko ni datte tonde yukeru',\n", + " 'fukuramu yume kaze ni nosete',\n", + " 'doko ni datte ikeru yo',\n", + " 'awaa awaa awadama fever',\n", + " 'awaa awawa awadama fever',\n", + " 'awaa awaa awadama fever',\n", + " 'awadama awadama fever',\n", + " 'ah, yeah. tondeke, chew, chew, chewing gum!',\n", + " 'again. ikoo ze! go, go, going now!',\n", + " 'ah, yeah. tondeke, ban ban bubble gum!',\n", + " 'again. ima sugu go, go, going now!',\n", + " 'one, two, three, four',\n", + " 'ichi, nii, san, shii',\n", + " 'ichi, nii, san, shii',\n", + " 'hii, fuu, mii, yoo',\n", + " 'hii, fuu, mii, yoo',\n", + " 'himitsu no heya akete mitara',\n", + " 'doko ni datte tonde yukeru',\n", + " 'yume no naka de yume no naka de',\n", + " 'doko ni datte ikeru yo',\n", + " 'awaa awaa awadama fever',\n", + " 'awaa awawa awadama pon pon',\n", + " 'awaa awaa awadama fever',\n", + " 'awadama awadama dreamer',\n", + " 'ah, yeah. tondeke, chew, chew, chewing gum!',\n", + " 'again. ikoo ze! go, go, going now!',\n", + " 'ah, yeah. tondeke, ban ban bubble gum!',\n", + " 'again. ima sugu go, go, going now!',\n", + " 'again. chumi chumi chew, chew, chewing gum.',\n", + " 'again. ban ba ban ban ban ban bubble gum.',\n", + " 'ah, ah, dreamer',\n", + " 'ah, ah, screamer',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", + " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", + " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", + " 'hobbledehoy in hearse herse herse',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", + " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", + " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", + " 'hobbledehoy in hearse herse herse herse',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", + " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", + " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", + " 'hobbledehoy in hearse herse herse herse',\n", + " 'e-evil eye beyond sty and sky',\n", + " 'epitome, on my head',\n", + " 'epitome, wind up dead!',\n", + " 'epitome, on my head',\n", + " 'epitome, wind up dead!',\n", + " \"i'm at my wit's end\",\n", + " \"i'm at my, wit's end\",\n", + " \"i'm at my wit's end\",\n", + " \"i'm at my wit's end\",\n", + " \"i'm at my end!\",\n", + " 'epitome, on my head',\n", + " 'epitome, wind up dead!',\n", + " \"i'm at my wit's end\",\n", + " \"i'm at my, wit's end\",\n", + " \"i'm at my wit's end\",\n", + " \"i'm at my end!\",\n", + " 'sections:',\n", + " 'intro - prana – 4:21',\n", + " 'ii. the fire of mind or solar fire – 3:50',\n", + " 'iii. the fire of spirit or electric fire – 7:33',\n", + " 'i. the internal fire or fire by friction\" – 19:38',\n", + " '1 mûlâdhâra: the dance of kundalini',\n", + " '2 svâdhishthâna: bam, bham, mam, yam, ram, lam, thank you, mahm',\n", + " '3. manipûra: seat of fire',\n", + " '4. anâhata: the halls of air',\n", + " '5. vishudda: sounds beyond ears',\n", + " '6. ajnâ: sights beyond eyes',\n", + " '7. brahmarandhra: nirvana shakri',\n", + " 'outro - prana',\n", + " '(bear goddess of wild life and a protector)',\n", + " 'robouas uet magnei',\n", + " 'noue pepoisas criðiion imon',\n", + " 'noue pepoisas geliiin',\n", + " 'supritiia tiresos sondi',\n", + " 'noue pepoisas abalon',\n", + " 'blatus suadiius areuoclouiuspe',\n", + " 'noue pepoisas clounis nantaroriias',\n", + " 'blatusagiiet samali sepont',\n", + " 'a boua uer magnei',\n", + " 'etic pepoisa criðiion tuon',\n", + " 'a pepoisa geliiin',\n", + " 'supritiia tiresos tui',\n", + " 'a pepoisa brenoduron senon',\n", + " 'uolugatus suadiius geliiuspe',\n", + " 'etic pepoisa criðiion ansron',\n", + " 'etic blatusagiiet samali sepont',\n", + " 'robouas uet magnei',\n", + " 'noue pepoisas criðiion imon',\n", + " 'noue pepoisas geliiin',\n", + " 'supritiia tiresos sondi',\n", + " 'noue pepoisas abalon',\n", + " 'blatus suadiius areuoclouiuspe',\n", + " 'noue pepoisas clounis nantaroriias',\n", + " 'blatusagiiet samali sepont',\n", + " 'were you at the rock',\n", + " 'or did you see my love',\n", + " 'or did you see a brightness',\n", + " 'the beauty of this land',\n", + " 'or did you see the apple',\n", + " 'the sweetest and most fragant blossom',\n", + " 'or did you see the meadows of nantarora',\n", + " 'are they blossoming as they say?',\n", + " 'oh i was at the rock',\n", + " 'and i saw your love',\n", + " 'oh i saw your brightness',\n", + " 'the beauty of your land',\n", + " 'oh i did see the old town of brenoduron',\n", + " 'the sweetest and brightest beacon',\n", + " 'and i saw our love',\n", + " 'and she is blossoming as they say',\n", + " 'were you at the rock',\n", + " 'or did you see my love',\n", + " 'or did you see a brightness',\n", + " 'the beauty of this land',\n", + " 'or did you see the apple',\n", + " 'the sweetest and most fragant blossom',\n", + " 'or did you see the meadows of nantarora',\n", + " 'are they blossoming as they say?',\n", + " 'siliwangi speaks goodness',\n", + " 'inherited to me',\n", + " 'from my ancestors',\n", + " 'siliwangi speak goodness',\n", + " 'it has been practiced',\n", + " 'by my ancestors',\n", + " 'by the people of yore',\n", + " 'pakena gawe rahayu',\n", + " 'pakena kereta bener',\n", + " 'mahayu dora sapuluhuh',\n", + " 'mikukuh dasa prebakti',\n", + " 'pancaaksara guruning janma',\n", + " 'mikukuh darma mitutur',\n", + " 'ngawakan tapa di nagara',\n", + " 'tritangtu di nu reya',\n", + " 'a path to happiness and prosperity',\n", + " 'a path to peace and tranquality',\n", + " 'do good to the mother earth',\n", + " 'do good to each other',\n", + " 'siliwangi',\n", + " 'is the true teaching',\n", + " 'loves our brothers and our sisters',\n", + " 'principles of virtue',\n", + " 'using ten parts of the body',\n", + " 'for goodness and the truth',\n", + " 'the ten parts are ears eyes',\n", + " 'skin tongue nose mouth',\n", + " 'hands feet anus and genitals',\n", + " 'always devoted to each others',\n", + " 'sons and daughters devoted to parents',\n", + " 'wife dutiful to husband',\n", + " 'students listen to teacher',\n", + " 'people devoted to the fair king',\n", + " 'the king devoted to',\n", + " 'the people and the god',\n", + " 'aims to the welfare of',\n", + " 'peoples lives and the world',\n", + " 'be the king for yourself',\n", + " 'know yourself',\n", + " 'as a microcosm of the universe',\n", + " 'hails to the kings',\n", + " 'mundinglaya',\n", + " 'mundingwangi',\n", + " 'mundingsari mundingkawati',\n", + " 'suramanggala',\n", + " 'suryakencana',\n", + " 'wastu dea',\n", + " 'jayaningrat natamanggala',\n", + " 'jayanagara hastamanggala',\n", + " 'jayaperkosa yudamanggala',\n", + " \"in the dawn on the roof, there's a semblance of truth\",\n", + " 'in the half light that sings to me of you',\n", + " 'with my bottle full of sin, i hoist a toast to the muezzin',\n", + " 'that these black clouds mean the monsoon',\n", + " 'because the sun refused to shine since you left me dumb and blind',\n", + " 'sometimes it feels like the end of the world',\n", + " 'yes it feels like the end of the world',\n", + " 'and every word i never spoke dies like a spark smothered in smoke',\n", + " 'pulled from the glow of a shitty cigarette',\n", + " 'and i probably should shave and dig myself out of this grave',\n", + " \"but i can't go\",\n", + " 'no, not just yet',\n", + " \"mostly the nights they ain't half bad\",\n", + " \"it's the days that seem designed to drive you mad\",\n", + " 'sometimes it feels like the end of the world',\n", + " 'yes it feels like the end of the world',\n", + " 'yes it feels like the end of the world',\n", + " 'yes it feels like the end of the world',\n", + " 'so tonight in the bar of this hotel bazaar',\n", + " \"i'll write some postcards and throw them away\",\n", + " \"and maybe someday i'll leave here\",\n", + " 'but the drinks, they are so cheap here',\n", + " \"and somebody's always got to pay\",\n", + " 'and it feels like the end of the world',\n", + " 'and it feels like the end of the world',\n", + " 'yes it feels like the end of the world',\n", + " 'yes it feels like the end of the world',\n", + " 'yes it feels like the end of the world',\n", + " '\"yapılan yeni bir araştırmaya göre',\n", + " 'dünyadaki çoğu insan kendi tanrısına inanıyor',\n", + " 'fakat dini araştırmacılar',\n", + " 'bu ortak yaratıcının adı konusunda',\n", + " 'kesin bir karara hâlâ varamadı',\n", + " 've bunun yanı sıra...\"',\n", + " 'there are two important things to remember about learning any new language:',\n", + " 'one: be interested in the people, their country and language. want to learn it',\n", + " 'two: practice it as often as you can. nothing is more effective in creating a friendly atmosphere, and nothing flatters people more than when the forigner tries to speak their language',\n", + " 'remember, knowing the language is the best way of knowing the country, and enjoying it more',\n", + " 'good morning mister popovic!',\n", + " 'dobro jutro, gospodine popoviću!',\n", + " 'how are you, ser?',\n", + " 'kako ste, gospodine?',\n", + " 'madam!',\n", + " 'gospođo!',\n", + " 'ladies and gentlemen',\n", + " 'gospođe i gospodo',\n", + " 'i am very please to meet you',\n", + " 'milo mi je da vas vidim',\n", + " 'thank you!',\n", + " 'hvala!',\n", + " 'thank you very much!',\n", + " 'velika hvala!',\n", + " 'i want to buy apple',\n", + " 'molim...',\n", + " 'i want to buy apple',\n", + " 'hteo bih kupiti jabuka',\n", + " 'banana',\n", + " 'banana',\n", + " 'bean',\n", + " 'pasulja',\n", + " 'bean stew',\n", + " 'čorbe od pasulja',\n", + " 'chocolate',\n", + " 'hleba',\n", + " 'chocolate',\n", + " 'hleba',\n", + " 'chocolate',\n", + " 'molim',\n", + " 'coco nuts',\n", + " 'molim',\n", + " 'coco nuts',\n", + " 'kokosovih oraha',\n", + " 'cabage',\n", + " 'kupusa',\n", + " 'beef stake',\n", + " 'molim',\n", + " 'beef stake',\n", + " 'gospodine popoviću',\n", + " 'is it a comedy?',\n", + " 'da li je to komedija?',\n", + " 'is it a tragedy?',\n", + " 'da li je to tragedija?',\n", + " 'is it a comedy?',\n", + " 'da li je to komedija?',\n", + " 'is it a drama?',\n", + " 'da li je to drama?',\n", + " 'izvinite što vas prekidam',\n", + " 'da li smem da vam nešto ponudim?',\n", + " 'meat',\n", + " 'meso',\n", + " 'milk',\n", + " 'mleka',\n", + " 'orange',\n", + " 'narandža',\n", + " 'peach',\n", + " 'breskava',\n", + " 'candy',\n", + " 'bombona',\n", + " 'pineapple',\n", + " 'ananasa',\n", + " 'mother',\n", + " 'vaša majka',\n", + " 'potato',\n", + " 'krompira',\n", + " 'lamb',\n", + " 'jagnjetine',\n", + " 'lemon',\n", + " 'limunova',\n", + " 'string beans',\n", + " 'boranije',\n", + " 'tea',\n", + " 'čaja',\n", + " 'tomato',\n", + " 'paradajza',\n", + " 'soda water',\n", + " 'soda vode',\n", + " 'kelerabs',\n", + " 'kelerabe',\n", + " 'lobster',\n", + " 'molim',\n", + " 'lobster',\n", + " 'gospodine popoviću?',\n", + " 'jastoga',\n", + " 'what is this?',\n", + " 'šta je ovo?',\n", + " 'what is that?',\n", + " 'šta je ono?',\n", + " 'what is this?',\n", + " 'šta je ovo?',\n", + " 'what is that?',\n", + " 'ne znam!',\n", + " 'is it a comedy?',\n", + " 'da li je to komedija?',\n", + " 'is it a tragedy?',\n", + " 'da li je to tragedija?',\n", + " 'is it a comedy?',\n", + " 'da li je to komedija?',\n", + " 'please, repeat!',\n", + " 'molim, ponovite!',\n", + " 'is it a comedy?',\n", + " 'da li je to komedija?',\n", + " 'is it a tragedy?',\n", + " 'da li je to tragedija?',\n", + " 'is it a comedy?',\n", + " 'da li je to komedija?',\n", + " 'is it a drama?',\n", + " 'da li je to drama?',\n", + " 'please, show me!',\n", + " 'molim, pokažite mi!',\n", + " 'please, speak slowly!',\n", + " 'molim, govorite polako!',\n", + " 'thank you very much!',\n", + " 'velika hvala!',\n", + " 'is it a comedy?',\n", + " 'da li je to komedija?',\n", + " 'is it a tragedy?',\n", + " 'da li je to tragedija?',\n", + " 'is it a comedy?',\n", + " 'da li je to komedija?',\n", + " 'please, repeat!',\n", + " 'molim, ponovite!',\n", + " 'is it a comedy?',\n", + " 'da li je to komedija?',\n", + " 'is it a tragedy?',\n", + " 'da li je to tragedija?',\n", + " 'is it a comedy?',\n", + " 'da li je to komedija?',\n", + " 'is it a drama?',\n", + " 'da li je to drama?',\n", + " 'thank you very much!',\n", + " 'velika hvala!',\n", + " 'goodbye!',\n", + " 'doviđenja!',\n", + " 'goodbye, i had a delightful time!',\n", + " 'zbogom, divno sam se proveo!',\n", + " 'please, come again!',\n", + " 'molim, dođite ponovo!',\n", + " 'goodbye!',\n", + " 'doviđenja!',\n", + " 'doviđenja gospodine popoviću!',\n", + " 'ba bixse uenerianum ad ebriureco suaueloslan',\n", + " 'slanossiietum sualido contilossi',\n", + " '(íe sittem mongnatixsouim)',\n", + " \"we're on the cusp of the sanctum in the woods of ebriurecon\",\n", + " 'welcome!',\n", + " 'may you experience recovery here!',\n", + " 'hails to sang hyang keresa',\n", + " 'batara tunggal, the ones',\n", + " 'baster jagat, ruler of the universe',\n", + " 'batara seda niskala',\n", + " 'the invisible who lives on buana nyungcung',\n", + " 'im the new blood',\n", + " 'keeper of mayapada',\n", + " 'sasak pasaka buana',\n", + " 'the center of the world',\n", + " 'im the new blood',\n", + " 'born from buana luhur',\n", + " 'someday i will be back',\n", + " 'to buana larang',\n", + " 'im the new blood',\n", + " 'executor of pikukuh',\n", + " 'from the ancestor',\n", + " 'for the sake of jagat mappers existence',\n", + " 'bayut nu dititipkeun ka puun',\n", + " 'nagara satelung puluh telu',\n", + " 'bangsawan sawidak lima',\n", + " 'pancer salawe nagara',\n", + " 'keeping this earth is a mandate',\n", + " 'from my ancestor to the next generations now',\n", + " 'gunung teu meunang dilebur',\n", + " 'lebak teu meunang dirusak',\n", + " 'larang teu meunang dirempak',\n", + " 'buyut teu meunang dirobah',\n", + " 'lojor teu meunang dipotong',\n", + " 'pondok teu meunang disambung',\n", + " 'nu lain kudu dilainkeun',\n", + " 'nu enya kudu dienyakeun',\n", + " 'im the keeper of the ancestors tradition',\n", + " 'their spirit reside in me',\n", + " 'im the keeper the ancestors ardors',\n", + " 'they become the power in my life',\n", + " 'i swear i will always stand',\n", + " 'never change, never turn back',\n", + " 'i know their precepts',\n", + " 'a way of life and spreat it away',\n", + " 'run turun bayu rahayu',\n", + " 'bayu tresna bayu asih',\n", + " 'bayu mawat kamulyaan',\n", + " 'ngawaruga jagat nata',\n", + " 'gumulung sabudeur mawun',\n", + " 'gumati sabumi manik',\n", + " 'rebirth of jati sunda',\n", + " 'raise your consiouness',\n", + " 'were the saviors, were the keepers!',\n", + " 'raise your consciousness',\n", + " 'bring to the earth your love and happiness!',\n", + " 'raise your consciousness',\n", + " 'greed no longer saps the soul!',\n", + " 'raise your consciousness',\n", + " 'for the earth, for a better world!',\n", + " 'wgmm / buglugの歌詞romaji',\n", + " 'wagamama na mama ari no mama no sama',\n", + " 'wagamama na mama ari no mama no sama',\n", + " 'wagamama na mama ari no mama no sama',\n", + " 'wagamama na mama ari no mama yeah!',\n", + " 'are iya kore iya sore iya subete',\n", + " 'poipoipoi',\n", + " 'muchakucha dakedo sore ga oresama sa',\n", + " 'bitebitebite',\n", + " 'hito ni kibishiku jibun ni yasashiku',\n", + " 'one of all all of one',\n", + " 'kokunaisan no oushitsu sodachi sa i am \"no.1\"',\n", + " 'wagamama na mama ari no mama no sama',\n", + " 'wagamama na mama ari no mama no sama',\n", + " \"let's get it on!!!!!!!\",\n", + " '- to world to world -',\n", + " 'shareta sunnydays ni keri o irero',\n", + " '- to world to world - good rainy days',\n", + " 'beautiful life is dead',\n", + " 'wagamama na mama ari no mama no sama',\n", + " 'wagamama na mama ari no mama no sama',\n", + " 'wagamama na mama ari no mama no sama',\n", + " 'wagamama na mama ari no mama no sama',\n", + " 'wagamama na mama ari no mama no sama',\n", + " 'wagamama na mama ari no mama no sama',\n", + " \"let's get it on!!!!!!!\",\n", + " '- to world to world -',\n", + " 'shareta sunnydays ni keri o irero',\n", + " '- to world to world - good rainy days',\n", + " 'beautiful life is dead',\n", + " '- to world to world -',\n", + " 'shareta sunnydays ni keri o irero',\n", + " \"- to world to world - what's happy days?\",\n", + " 'good bye no thank you',\n", + " 'kanji',\n", + " 'わがままなままありのままのさま',\n", + " 'アレ嫌コレ嫌ソレ嫌全て',\n", + " 'ポイポイポイ',\n", + " '無茶苦茶だけどそれが俺様さ',\n", + " 'bitebitebite',\n", + " '人に厳しく自分に優しく',\n", + " 'one of all all of one',\n", + " '国内産の王室育ちさi am「no.1」',\n", + " 'わがままなままありのままのさま',\n", + " \"let's get it on!!!!!!!\",\n", + " '-to world-',\n", + " '洒落たsunnydaysに蹴りを入れろ',\n", + " '-to world-good rainy days',\n", + " 'beautiful life is dead',\n", + " 'わがままなままありのままのさま',\n", + " 'わがままなままありのままのさま',\n", + " \"let's get it on!!!!!!!\",\n", + " '-to world-',\n", + " '洒落たsunnydaysに蹴りを入れろ',\n", + " '-to world-good rainy days',\n", + " 'beautiful life is dead',\n", + " '-to world-',\n", + " '洒落たsunnydaysに蹴りを入れろ',\n", + " \"-to world-what's happy days?\",\n", + " 'good bye no thank you',\n", + " '(tribal god)',\n", + " 'sondei sistamos',\n", + " 'toexrexti au noxti',\n", + " 'sepomor ateras seni in cridiiobi',\n", + " 'auii in menuanbi uer oinon sistamos',\n", + " 'in ueniia',\n", + " 'in touta',\n", + " 'in cenetlei',\n", + " 'dixomos snis',\n", + " 'ne snis dibrogiator',\n", + " 'enepon toutateis toaidiat uer snis',\n", + " 'beramos uolugatun',\n", + " 'silon antumni sexetor',\n", + " 'toutatis toexreretetic rata buont uer snis',\n", + " 'buont rata esous iccatis dagos',\n", + " 'suuispe uer snis',\n", + " 'taranis nertacos aresnisueððet',\n", + " 'here we stand',\n", + " 'arisen from the night',\n", + " 'following our ancestors, our forebears in our hearts, our descendants in our minds',\n", + " 'side by side we stand',\n", + " 'in our family',\n", + " 'in our tribe',\n", + " 'in our nation',\n", + " 'may we be found worthy',\n", + " 'may we not be banished',\n", + " 'may toutatis lift his face and shine upon us',\n", + " 'we will carry the torch',\n", + " 'the offspring of antumnos will follow',\n", + " 'may toutatis arise and bless us',\n", + " 'may esus, the good, wise and panacean bless us',\n", + " 'may taranis, the strong guide us',\n", + " 'sawa ka na ba sa mga hassle sa buhay mo',\n", + " 'ayaw mo na bang mag-isip para sa sarili',\n", + " 'tinatamad ka ng bumyahe',\n", + " \"ang gusto mo'y nakahiga na lang\",\n", + " 'napapagod ka na ba sa kayayakap sa asawa mo',\n", + " 'refrain:',\n", + " 'ito ang kailangan mo',\n", + " 'idial lang ang telepono',\n", + " 'chorus:',\n", + " 'hindi na dapat maghirap',\n", + " 'sa iisang iglap ang buhay mo ay sasarap',\n", + " \"'wag nang mag-atubili kumuha ka ng\",\n", + " 'superproxy',\n", + " 'ako ay kaibigan na lagi mong maasahan',\n", + " 'umulan man o umaraw ay nariyan kapag kailangan',\n", + " 'ito ay special offer sa mga taong katulad mo',\n", + " 'gamitin ang iyong bulsa para guminhawa',\n", + " \"ako ang bahala sa 'yo\",\n", + " 'ang buhay mo ay buhay ko',\n", + " 'superproxy superproxy',\n", + " 'superproxy superproxy',\n", + " 'superproxy superproxy',\n", + " 'come and take a sip from the cup as the drink makes you think',\n", + " \"don't blink 'cause you'll be taken out by the pen and ink\",\n", + " \"superproxy, why don't you just talk to me\",\n", + " 'my rhyme be stickin to ya head like epoxy',\n", + " \"the mouth'll be blabbin, never be backstabbin\",\n", + " \"hangin' with the e-heads and i'm just plain having\",\n", + " 'fun, no time for gats and guns',\n", + " 'i use my mic like a gun i get the job done',\n", + " 'i play video games all day',\n", + " 'zipadee-dooda zipadee-day hiphop hooray!',\n", + " 'menage one, menage trois, menage three',\n", + " \"if songs were pets then i'd have a menagerie\",\n", + " 'chimney-chimney humpty dumpty',\n", + " 'grab on the mic start gettin funky',\n", + " 'funky with the flavor that you savor, imitator',\n", + " \"i'm the flavor of the hour other mc's i devour\",\n", + " \"i'll be with buddy, raimund, marcus, and ely\",\n", + " \"i'm on their case like petrocelli\",\n", + " \"electromagnetic hiphop and it don't\",\n", + " \"stop and it don't quit word-up!\",\n", + " \"lap it up like a pussy, sippin' on milk\",\n", + " \"rock hard to my style that's smooth as silk\",\n", + " \"yo, superproxy why don't you just talk to me?\",\n", + " 'nee mr. gendai speaker ima no jitsujou wa',\n", + " 'i don’t understand this',\n", + " 'rensa suru silencer mo haya simulator',\n", + " 'no one gives me an answer',\n", + " 'mou seigyo funou hijou jitai maru de kokoro arazu mitai',\n", + " 'kimochi wa dokka touku no hou e, can you reach me?',\n", + " 'nobody can find me here',\n", + " 'this is my secret place',\n", + " 'no one knows and no one will know',\n", + " 'but i feel like losing senses',\n", + " 'i am in this corner here alone',\n", + " 'sameta new realism kakageta kimi no koubutsu wa kitto',\n", + " 'age mo ashi mo torareta nanto mo buzama de aware na hito no hyoujou!',\n", + " 'mou seigyo funou ijou jitai maru de kokoro arazu mitai',\n", + " 'kimochi wa mo haya miatannai, can you hear me?',\n", + " 'nobody can find me here',\n", + " 'this is my secret place',\n", + " 'no one knows and no one will know',\n", + " 'but i feel like losing senses',\n", + " 'i am in this corner here alone',\n", + " 'mou boku ga tsutaetai koto nante',\n", + " 'hibi no kurashi no naka ni tsumatteite',\n", + " 'dakedo mitsukerarezu sou surushite',\n", + " 'mata ichinichi ga owatteiku no',\n", + " 'nobody can find me here',\n", + " 'this is my secret place',\n", + " 'no one knows and no one will know',\n", + " 'but i feel like losing senses',\n", + " 'i am in this corner here alone',\n", + " 'japanese:',\n", + " 'どうせこんなの茶番だ なんて 口にしちゃだめだ',\n", + " 'もうそんなのみんな知っている',\n", + " '楽しい事話そう もっと お化粧した俺は',\n", + " 'いい感じで目が死んでるね',\n", + " 'ナマのコンガで踊ろう',\n", + " 'ナマのステップを刻もう',\n", + " 'ナマ身とナマ身で揺れよう 永久に',\n", + " 'けしてこの世は地獄 なんて 確認しちゃだめだ',\n", + " 'だって今みんなここにいる',\n", + " 'あの人 元彼女 だっけ? 確か君の',\n", + " '妄想ならよくできてるね',\n", + " '昔の人間はきっと',\n", + " '音楽のかかる場所で',\n", + " 'いきなり恋とかしてた 真剣に',\n", + " 'どうせこの世は幻 なんて 口にしちゃだめだ',\n", + " 'もううっすらみんな知っている',\n", + " '悲しいことだろうと 全部 あくびして消えた',\n", + " 'さあにっこり笑って俺と',\n", + " 'ナマのコンガで踊ろう',\n", + " 'ナマのステップを刻もう',\n", + " 'ナマ身とナマ身で揺れよう 永久に',\n", + " 'ナマのビートで踊ろう',\n", + " 'ナマの手拍子で歌おう',\n", + " 'ナマ身とナマ身で遊ぼう 真剣に',\n", + " '踊ろう ナマで踊ろう',\n", + " '歌おう ナマで歌おう',\n", + " '踊ろう ナマで踊ろう',\n", + " '歌おう ナマで歌おう',\n", + " 'romaji:',\n", + " 'dōse konna no chabanda nante kuchi ni shicha dameda',\n", + " 'mōsonna no minna shitteiru',\n", + " 'tanoshī koto hanasō motto o keshō shita ore wa',\n", + " 'ī kanji de me ga shinderune',\n", + " 'nama no konga de odorō',\n", + " 'nama no suteppu o kizamō',\n", + " 'nama mi to nama mi de yureyō eikyū ni',\n", + " 'keshite konoyo wa jigoku nante kakunin shicha dameda',\n", + " 'datte ima minna koko ni iru',\n", + " 'ano hito moto kanojodakke ? tashika kun no',\n", + " 'mōsōnara yoku dekiterune',\n", + " 'mukashi no ningen wa kitto',\n", + " 'ongaku no kakaru basho de',\n", + " 'ikinari koi tokashiteta shinken ni',\n", + " 'dōse konoyo wa maboroshi nante kuchi ni shicha dameda',\n", + " 'mō ussura minna shitteiru',\n", + " 'kanashī kotodarō to zenbu akubi shite kieta',\n", + " 'sā nikkori waratte ore to',\n", + " 'nama no konga de odorō',\n", + " 'nama no suteppu o kizamō',\n", + " 'nama mi to nama mi de yureyō eikyū ni',\n", + " 'nama no bīto de odorō',\n", + " 'nama no tebyōshi de utaō',\n", + " 'nama mi to nama mi de asobō shinken ni',\n", + " 'odorō nama de odorō',\n", + " 'utaō nama de utaō',\n", + " 'odorō nama de odorō',\n", + " 'utaō nama de utaō',\n", + " 'english:',\n", + " 'do not mess around with anything like this is your farce',\n", + " 'everyone like that already knows',\n", + " 'let me tell you something fun i made more makeup',\n", + " 'my eyes are dead with a nice touch',\n", + " \"let's dance with nama's conga\",\n", + " \"let's engrave a step of nama\",\n", + " \"let's shake with a body and a bear forever\",\n", + " 'never mind seeing this world as hell',\n", + " 'because now everyone is here',\n", + " 'is that man her girlfriend? certainly',\n", + " 'you can do it if you are a delusion',\n", + " 'i think the old human beings',\n", + " 'in places where music is taken',\n", + " 'i suddenly fell in love seriously',\n", + " 'you must not put away visions of this world at all',\n", + " 'all of you already know',\n", + " 'all yawned and disappeared as sad things',\n", + " 'come on, smile and smile with me',\n", + " \"let's dance with nama's conga\",\n", + " \"let's engrave a step of nama\",\n", + " \"let's shake with a body and a bear forever\",\n", + " \"let's dance with the beat of nama\",\n", + " \"let's sing with a clap of hands\",\n", + " \"let's play with a bear and a nama body seriously\",\n", + " \"let's dance let's dance with nama\",\n", + " \"let's sing with a singing song\",\n", + " \"let's dance let's dance with nama\",\n", + " \"let's sing with a singing song\",\n", + " 'ice cream',\n", + " 'like a mousse is right, right, right',\n", + " 'como un helado derritiéndose',\n", + " 'mama buzz move, move tonight, night, night',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'simple, yes my friend',\n", + " 'como un helado derritiéndose',\n", + " 'simple, yes my friend',\n", + " 'como un helado derritiéndose',\n", + " 'like a mousse is right, right, right',\n", + " 'como un helado derritiéndose',\n", + " 'mama buzz move, move tonight, night, night',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'como un helado derritiéndose',\n", + " 'simple, yes my friend',\n", + " 'como un helado derritiéndose',\n", + " 'simple, yes my friend',\n", + " 'como un helado derritiéndose',\n", + " 'like a mousse is right, right, right',\n", + " 'como un helado derritiéndose',\n", + " 'mama buzz move, move tonight, night, night',\n", + " 'como un helado derritiéndose, como un helado',\n", + " 'phol ende vuodan',\n", + " 'vuorun zi holza',\n", + " 'du uuart demo balderes',\n", + " 'volon sîn vuoz birenkit',\n", + " 'thû biguol en sinhtgunt',\n", + " 'sunna era suister',\n", + " 'thû biguol en frîia',\n", + " 'volla, era suister',\n", + " 'thû biguol en vuodan',\n", + " 'sô hê uuola conda',\n", + " 'sôse bênrenkî',\n", + " 'sôse bluotrenkî',\n", + " 'sôse lidirenkî',\n", + " 'bên zi bêna',\n", + " 'bluot zi bluoda',\n", + " 'lid zi geliden',\n", + " 'sôse gelîmida sîn',\n", + " 'zȳhys ōñoso jehikagon āeksiot epi',\n", + " 'we will pray',\n", + " 'pray with me',\n", + " 'we can bring her back',\n", + " 'pray, remember me, oh, ooh',\n", + " 'zȳhys perzys stepagon āeksio ōño jorepi',\n", + " 'se morghūltas lȳs qēlītsos sikagon',\n", + " 'hen sȳndrorro, ōños. hen perzys, hen ñuqīr, perzys',\n", + " 'hen sȳndrorro, ōños. hen ñuqīr, perzys. hen morghot, glaeson',\n", + " 'we will pray',\n", + " 'pray with, with me',\n", + " 'we can bring her back',\n", + " 'pray, pray, pray with me, oh, ooh',\n", + " 'hen ñuqīr perzys. hen sȳndrorro, ōños',\n", + " \"morghot, glaeson, morghot glaeson, 'ost glaeson\",\n", + " 'please, please',\n", + " 'walo haaw baghvaano(garderner) nuw baharuk shaan',\n", + " 'ni paida kar fallan gul gath karan bulbul, tithuy samaan paida kar,...',\n", + " 'chaman vairaan wadaan shabnam, chatith jaame pareshan gul',\n", + " 'gulan tay bul gulan andr, dubaray jaan paida kar',\n", + " 'walo haaw baghvaano nuw baharuk shaan',\n", + " 'ni paida kar fallan gul gath karan bulbul, tithuy samaan paida kar,...',\n", + " 'shuban chay gar yi basti wal gulan hund trawe-zair-o-bam',\n", + " 'bunul(earthquake) kar wowi kar gagirai(thundering) ti bey tufaan(storm) paida(create) kar',\n", + " 'walo haaw baghvaano nuw baharuk shaan',\n", + " 'ni paida kar fallan gul gath karan bulbul, tithuy samaan paida kar,...',\n", + " 'hai talab kya hai sabab kya, kya garaz mazoor kya',\n", + " 'hai talab kya hai sabab kya, kya garaz mazoor kya',\n", + " 'nuksi jis mai ho bara wo nautiwana(differently abled) zoor(strength) kya',\n", + " 'gul gulshan gulfam',\n", + " 'gul gulshan gulfam',\n", + " 'gul gulshan gulfam...',\n", + " 'gul gulshan gulfam...',\n", + " 'gul gulshan gulfam',\n", + " 'gul gulshan gulfam.nuw baharuk shaan paida kar, walo haaw baghvaano diluk kar wowi kar tuffan paida kar, walo haaw baghvaanooooo',\n", + " 'waloooo walo walo waloooooo oo oo...',\n", + " 'at first you get the feeling that you really need some more',\n", + " \"but before you know it you'll be reeling on the floor\",\n", + " 'laying and a-waiting and a-praying in the rain',\n", + " 'staying and a-saying that i need your love again',\n", + " 'na o sore to',\n", + " 'shirazu tomo shire',\n", + " 'sarusawa no',\n", + " 'ato o kagami-ga-',\n", + " 'iki ni shizumeba',\n", + " 'nagaraete',\n", + " 'kono yo no yami wa',\n", + " 'yomo harete',\n", + " 'shide no yamaji no',\n", + " 'at first you get the feeling that you really need some more',\n", + " \"but before you know it you'll be reeling on the floor\",\n", + " 'laying and a-waiting and a-praying in the rain',\n", + " 'staying and a-saying that i need your love again',\n", + " 'shini ni kite',\n", + " 'shinu toko nareba-',\n", + " 'shinu ga yoshi',\n", + " 'shinisokonōte',\n", + " 'shinanu nao yoshi',\n", + " 'i know i was not a dreamer',\n", + " 'but i lost something somehow anyway!',\n", + " \"i don ' t care ' bout what they say\",\n", + " 'whatever whoever tells me something',\n", + " 'never stop! until the end',\n", + " 'koko de oreru hodo yawa ja nai',\n", + " \"it ' s so wrong!!\",\n", + " 'sonna risou wo boku wa omoiegaku tabi',\n", + " 'tsuyoku nara nakya to mata kyou no boku wo nugisuteru',\n", + " 'kudaranai okusoku ni zen ?(nara) e ha mazu oi toi te',\n", + " 'shibara re zu dekiru koto hitotsu hitotsu kumitate te iku',\n", + " 'sore kara da sono saki ha dare ga aa dako ? da ittatte',\n", + " 'yareru no ha onore dake jibun jishin o shinji te miru yo!',\n", + " \"everything i ' m gonna do\",\n", + " 'is not what you think hard thing anyway!',\n", + " \"it ' s too bad! everyone knows!!\",\n", + " 'the simple thing is not so easy',\n", + " \"i am sorry! i can ' t do this!!\",\n", + " 'sonna you na ki ga suru kedo',\n", + " \"it ' s so wrong ?\",\n", + " 'tokini sasai na koto ga boku o boku ja nakusu',\n", + " 'i know that hajimare ba owari mo sekai ( koko ) de ha aru n desho ?',\n", + " 'kudaranai okusoku ni zen ?(nara) e ha mazu oi toi te',\n", + " 'shibara re zu dekiru koto hitotsu hitotsu kumitate te iku',\n", + " 'sore kara da sono saki ha dare ga aa dako ? da ittatte yareru no ha onore dake jibun jishin o shinji te miru yo!',\n", + " 'amae toka iiwake wa ninotsugi san no tsugi ni shite',\n", + " 'ima da kara tanoshimeru koto mitsuke te hanasan de kure yo!',\n", + " 'sore kara da sono saki wa ima wa aa dako ? da ittatte',\n", + " 'hajimara nai shi owari mo shi nai',\n", + " 'waiting for ending is no future!',\n", + " 'blind and beset',\n", + " 'they lurch towards pale void',\n", + " 'a ghostly host of exiled souls',\n", + " \"they've haunted us\",\n", + " 'for they cannot see',\n", + " 'and burned the ones',\n", + " 'who set them free',\n", + " \"i've yearned for you\",\n", + " \"i've yearned for way too long\",\n", + " \"i'm coming home\",\n", + " 'home again',\n", + " \"i'm now born again\",\n", + " 'i lunge into you',\n", + " \"and i'll breathe again\",\n", + " \"i'm coming home\",\n", + " 'behold, i have fought my fight',\n", + " \"i've run my race\",\n", + " 'i will be gone, i will be reborn',\n", + " 'into the dark, into the rock',\n", + " 'bright sun of the night',\n", + " \"i'm coming home\",\n", + " 'home, home again',\n", + " \"i'm now born again\",\n", + " 'i lunge into you',\n", + " \"and i'll breathe again\",\n", + " \"i'm coming home\",\n", + " 'forsaken!',\n", + " 'everything that was became what is',\n", + " 'and what withers and dies is but alike the larva in its cocoon',\n", + " \"i'm coming home\",\n", + " 'home again',\n", + " \"i'm now born again\",\n", + " 'i lunge into you',\n", + " \"and i'll breathe again\",\n", + " \"i'm coming home\",\n", + " 'home again',\n", + " \"i'm now born again\",\n", + " 'i lunge into you',\n", + " \"and i'll breathe again\",\n", + " \"i'm coming home\",\n", + " 'tigerne nemeson tigerne moníon',\n", + " 'anson carantos arevoset ver roccíā',\n", + " 'vediíomos cixset sī ambi bitun in esíās moníobi',\n", + " 'sucelle ater argíī trē esíās moníūs wa',\n", + " 'ad nemesā ad antumnon',\n", + " 'ya rieh chehili ya zamen gualleb',\n", + " 'ya rieh chehili ya zamen gualleb',\n", + " 'men horguetek ghannili, wallew habebi ghrab',\n", + " 'douri fel smaa mily, ou emhi layali adheb',\n", + " 'ou bel ouagut lamma tjini, talguini jorhi tab',\n", + " 'oh tojo fero sora noi',\n", + " 'etera nestra lora coi',\n", + " 'oh sarta oh ro sa cara',\n", + " 'era sa ju coi',\n", + " 'when the moon shines red',\n", + " 'soio ca la',\n", + " 'when the moon shines red, red, red',\n", + " 'when the moon shines red',\n", + " 'burning fire',\n", + " 'when the moon shines red, red, red',\n", + " 'oh dama setra rema troy',\n", + " 'setre do estra nora coi',\n", + " 'oh tando coro sa fora',\n", + " 'erju co rusoi',\n", + " 'when the moon shines red',\n", + " 'soio ca la',\n", + " 'when the moon shines red, red, red',\n", + " 'when the moon shines red, red, red',\n", + " 'fullmoon night',\n", + " 'awake us from the dead',\n", + " 'eija-uh, a eija-eija-uh!',\n", + " 'firelight',\n", + " 'the world we see is red',\n", + " 'eija-uh, a eija-eija-uh!',\n", + " 'oh tando coro sa fora',\n", + " 'eija-eija-uh!',\n", + " 'erju co rusoi',\n", + " 'when the moon shines red',\n", + " 'when the moon shines red',\n", + " 'soio ca la',\n", + " 'when the moon shines red, red, red',\n", + " 'when the moon shines red',\n", + " 'burning fire',\n", + " 'when the moon shines red, red, red',\n", + " 'don’t touch my eyes, don’t change my sight',\n", + " 'with your polycarbon shards of lies',\n", + " 'our minds can be hijacked',\n", + " 'programmed to self destruct',\n", + " 'takot sa ilalim ni duterte',\n", + " 'rohaingyaarmyarr aarr luumyoe tone saathpyatmhu',\n", + " 'hindutva kee paagalepaam',\n", + " 'our minds can be hijacked',\n", + " 'programmed to self destruct',\n", + " 'pull to refresh on retina desplay',\n", + " 'our minds can be hijacked',\n", + " 'programmed to self destruct',\n", + " 'preste vârfuri luna trece şi se-ascunde-n câte-un nor',\n", + " 'mă îmbrăţişează rece şi fuge cu al meu dor',\n", + " 'pe sub cetine de brad, pe sub codri, pe cărări',\n", + " 'luna şi-a ei raze albe fac năluci şi arătări',\n", + " 'numai una-i cea mai dragă, după care-alerg de zor',\n", + " 'când s-o prind s-o strâng în braţe, luna fuge iar în nori',\n", + " 'ostenit de-atâta fugă, cat hodină pe-un pietroi',\n", + " 'însă luna reapare - licurici în juru-mi roi',\n", + " ...]},\n", + " 'data': ['cut, guts, fire, wood',\n", + " 'air, quick, bubble, metal',\n", + " 'crash, flash, heat, bomb',\n", + " 'ice, fire, wily, rock',\n", + " 'cutman, gutsman, fireman, wily',\n", + " 'iceman, bombman, elecman, rockman',\n", + " 'airman, quickman, woodman, bubbleman',\n", + " 'crashman, flashman, heatman, metalman',\n", + " 'cutman, gutsman, fireman, iceman',\n", + " 'sniper joe, rush jet, dr. light',\n", + " 'mega man!',\n", + " 'game over',\n", + " 'parami na ng parami',\n", + " 'de-kotseng estudyante',\n", + " 'sa state university, state university',\n", + " 'state university, state university, yah',\n", + " 'walang efficiency',\n", + " 'mga government employees',\n", + " 'sa state university, state university',\n", + " 'state university, state university, yah-hah',\n", + " 'antique na laboratory',\n", + " 'bulok na facilities',\n", + " 'sa state university, state university',\n", + " 'state university, state university, yah-hah-ah',\n", + " 'administration policy',\n", + " 'itaas ang tuition fee',\n", + " 'pati na din ang dorm fee',\n", + " 'bakit walang nagrarally?',\n", + " 'kahit may demolition',\n", + " 'private corporation',\n", + " 'barat na allocation sa education',\n", + " 'commercialization, colonialization',\n", + " 'privatization, kawawang oblation!',\n", + " 'sa state university, sa state university',\n", + " 'state university, state university',\n", + " 'state university, state university',\n", + " 'state university, state university',\n", + " 'state university, state university',\n", + " 'state u, hate you',\n", + " 'state u, hate you',\n", + " 'state u, hate you',\n", + " 'state u, hate you',\n", + " 'state u, hate you',\n", + " 'state university, state university',\n", + " 'state university, state university',\n", + " 'state university, state university',\n", + " 'state university, state university',\n", + " 'hah!',\n", + " 'jea mään! hahahaha!',\n", + " 'huahaha! auh! aih!',\n", + " 'attention! attention!',\n", + " 'the world has been contaminated with high levels of alcohol',\n", + " 'the streets are filled with crime and bloodshed',\n", + " 'the world as we know it has become… spurgatory!',\n", + " 'mitää?!',\n", + " 'immi daga uimpi geneta',\n", + " 'lana beððos et’ iouintutos',\n", + " 'blatus ceti, cantla carami',\n", + " 'aia gnata uimpi iouinca',\n", + " 'pid in cete tu toue suoine',\n", + " 'pid uregisi peli doniobi?',\n", + " 'aia gnata uimpi iouinca',\n", + " 'pid in cete tu toue suoine',\n", + " 'aia mape in blatugabagli uorete',\n", + " 'cante celiiui in cete!',\n", + " 'vrit-me lindos dubnon-piseti',\n", + " 'vrit-me lindos dubnon-piseti',\n", + " 'n’immi mapos, immi drucocu',\n", + " 'in cetobi selgin agumi',\n", + " 'selgin blatos tou’ iouintutos',\n", + " 'nu, uoregon, cu, uorigamos',\n", + " 'lamman, cu, suuercin lingamos',\n", + " 'indui uelui cantla canamos!',\n", + " 'ne moi iantus, immi drucocu',\n", + " 'in cetobi selgin agumi',\n", + " 'ne moi iantus gnaton uorega',\n", + " 'iantus drucocunos uoregon',\n", + " 'vrit-me lindos dubnon-piseti',\n", + " 'vrit-me lindos dubnon-piseti',\n", + " 'cu allate, papon sod urege',\n", + " 'eððiio de iantu in cridie',\n", + " 'vediiumi: cante moi uosta!',\n", + " 'ne, a gnata, ne uostami',\n", + " 'ne te carami',\n", + " 'ne te carami!',\n", + " 'boua daga uimpi geneta',\n", + " 'immi trouga, lana nariias',\n", + " 'vrit-me lindos dubnon-piseti',\n", + " 'vrit-me lindos dubnon-piseti',\n", + " 'cât aş mai sta la umbra ta, codrule măreţ',\n", + " 'frunzişul tău m-o legăna, din muntele semeţ;',\n", + " 'pâraie reci mi-or îngâna, de voi şti să ascult',\n", + " 'poveşti ce-n lume s-or răspândi, din vremuri de demult',\n", + " 'cărări ascunse voi căuta, cu stele călăuză',\n", + " 'nimeni, de-i om sau fiară, să nu mă auză;',\n", + " 'tainic sălaş eu voi afla, ascuns sub piatra doamnei',\n", + " 'de lumea asta m-oi depărta, în nemurirea toamnei',\n", + " 'under piatra doamnei',\n", + " 'long would i linger in your shade, ye majestic wood!',\n", + " 'from lofty crag your leaves will soothe, linger if i should!',\n", + " 'icy streams will softly whisper yarns to my ear',\n", + " 'from olden times across the world, if i care to hear',\n", + " 'hidden pathways again i will seek, guided by the star',\n", + " 'never a soul, whether man or beast, should hear me from afar',\n", + " '’neath piatra doamnei i shall find my own secret lair',\n", + " 'away from this world i will abide, immortal autumn’s heir',\n", + " 'şi îngropând amintiri și dor;',\n", + " 'şi dulce-l amăgește să-i pară mai ușoară',\n", + " 'cumplită trecerea anilor',\n", + " 'pe râul vremii e-o luntre din inimi și gând închegată',\n", + " 'ce duhul rău n-o poate zdruncina;',\n", + " 'în prova-mpietrită și cruntă, tăind prin râul vremii',\n", + " 'stă neclintită inima mea',\n", + " 'râu străvechi, râu străbun',\n", + " 'râu al vremii, prieten bun',\n", + " 'river of time',\n", + " 'tumultuous, its stream flows, carving in the heart of man',\n", + " 'a burial chamber for memories and yearning',\n", + " 'sweetly it lures him into seeming relief',\n", + " 'from stern burden of years past turning',\n", + " 'on the river of life glides a ferry wrought from hearts and thought',\n", + " 'that the evil spirit cannot hope to shake',\n", + " 'at the grim petrified prow, parting the river of time',\n", + " 'unflinching, my heart stands awake',\n", + " 'river of old, forefathering tide',\n", + " 'river of time, friend by my side',\n", + " 'ou!! tu!! vieni anca tu!!!',\n", + " \"gosso's party pera e rum!!!\",\n", + " '140 rum e pera!!!',\n", + " \"gosso's party e rumatera!\",\n", + " \"gosso's party e rumatera!\",\n", + " \"gosso's party giiiiirls!\",\n", + " \"gosso's party gosso's party girls!\",\n", + " \"gosso's party giiiiirls!\",\n", + " \"gosso's party gosso's party girls!\",\n", + " 'ou!! tu!! tete fora!!!',\n", + " 'rumatera fin matina bonora!',\n", + " '140 rum e cola!',\n", + " \"gosso's party e tete fora!!\",\n", + " \"gosso's party e tete fora!!\",\n", + " \"gosso's party e tete foraaa!!\",\n", + " \"gosso's party giiiiirls!\",\n", + " \"gosso's party gosso's party girls!\",\n", + " \"gosso's party giiiiirls!\",\n", + " \"gosso's party gosso's party girls!\",\n", + " \"gosso's party giiiiirls!\",\n", + " \"gosso's party giiiiirls!\",\n", + " \"hey!! hey!! gosso's party!!\",\n", + " \"hey!! hey!! gosso's party!!\",\n", + " \"gosso's party giiiiirls!\",\n", + " \"gosso's party gosso's party girls!\",\n", + " \"gosso's party giiiiirls!\",\n", + " \"gosso's party gosso's party girls!\",\n", + " \"gosso's party!\",\n", + " \"gosso's party!\",\n", + " \"gosso's party girls!\",\n", + " \"gosso's party!\",\n", + " \"gosso's party!\",\n", + " \"gosso's party girls!\",\n", + " 'astro spectra, azillama',\n", + " 'astro spectra, azillama',\n", + " 'huh',\n", + " \"yum yum eat'em up, eat'em up\",\n", + " 'no',\n", + " 'huh',\n", + " \"yum yum eat'em up, eat'em up\",\n", + " 'huh',\n", + " \"yum yum eat'em up, eat'em up\",\n", + " 'huh',\n", + " 'no',\n", + " \"yum yum eat'em up, eat'em up\",\n", + " 'huh',\n", + " \"yum yum eat'em up, eat'em up\",\n", + " 'huh',\n", + " \"yum yum eat'em up, eat'em up\",\n", + " 'huh',\n", + " 'no',\n", + " \"yum yum eat'em up, eat'em up\",\n", + " 'huh',\n", + " \"yum yum eat'em up, eat'em up\",\n", + " 'huh',\n", + " \"yum yum eat'em up, eat'em up\",\n", + " 'huh',\n", + " 'ohhh.........',\n", + " 'dogledanje, bez bakneži, solzi;',\n", + " 'i na noze – dodeka pišuva the end!',\n", + " 'od istokot zlatno-žolt den se raѓa',\n", + " 'a navečer na zapad sè se davi v krv',\n", + " 'namesto so toržestven tresok',\n", + " 'svetov ќe zamolkne vo sramen pisok:',\n", + " 'nevermore!',\n", + " 'nišani gore v nebo!',\n", + " 'nišani gore v nebo!',\n", + " \"(the human race was dyin' out\",\n", + " 'noone left to scream, to scream and shout',\n", + " 'people walking on the moon',\n", + " 'smog will get your pretty soon',\n", + " 'i tried to run',\n", + " 'i tried to hide',\n", + " 'break on through to the other side',\n", + " 'break on through to the other side) – jim morison',\n", + " 'nišani gore v nebo!',\n", + " 'nišani gore v nebo!',\n", + " 'nišani gore v nebo!',\n", + " 'nišani gore v nebo!',\n", + " 'i zamolkni vo tišina!',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " \"heart's filthy lesson\",\n", + " 'baba-baba-ba',\n", + " \"heart's filthy lesson\",\n", + " 'baba-baba-ba',\n", + " \"heart's filthy lesson\",\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", + " 'clap your hands , stamp your both feet',\n", + " 'tachiagare don‘t stop the vibe and the beat',\n", + " 'crash the wall, buchi yaburu',\n", + " 'buchikowasu n da subete no genkai o',\n", + " 'wow, just say wow oh',\n", + " 'without your weakness or nervous soul',\n", + " 'sō sa daichi o yurashitsuzuke te',\n", + " 'sō moyasu',\n", + " 'soshite mae o niramu',\n", + " 'mune takamaru',\n", + " 'you know to this damn glorious moment',\n", + " 'hail to the sunwolves , brave like an animal',\n", + " 'yūkan de kyōjin na senshi no chōsen o',\n", + " 'habamu mono nante nai',\n", + " 'shōdō no mama ni zenshin shi te iku',\n", + " 'kick it now kick it now, wow oh',\n", + " 'kick it now kick it now',\n", + " 'wow, shaking up the higher ground till we white out',\n", + " 'so get loud the perfect blast don‘t stop, brave it out',\n", + " 'wow, blow the horn of honor cherish the big time',\n", + " 'break the line , brave it out',\n", + " 'god bless the field, give them the wind',\n", + " 'sā makiokose spreading the wings',\n", + " 'crush them all, buchikamasu',\n", + " 'buchikowasu n da subete no zenrei o',\n", + " 'wow, just say wow oh',\n", + " 'never give in or give up yourself',\n", + " 'sō sa shōri o ubaitoru tame',\n", + " 'sō tagiru',\n", + " 'soshite mae ni susumu',\n", + " 'mune takanaru',\n", + " 'we know to this damn precious moment',\n", + " 'bind your souls, the invictus wolves',\n", + " 'kyūkyoku de shinsei na senshi no eikō o',\n", + " 'me o fuseru jikan nante nai',\n", + " 'honnō no mama ni zenshin shi te iku',\n", + " 'wow shaking up the higher ground till we white out',\n", + " 'so get loud the perfect blast don‘t stop brave it out',\n", + " 'wow blow the horn of honor cherish the big time',\n", + " 'break the line, brave it out',\n", + " 'brave it out',\n", + " 'brave it out',\n", + " 'kick it now kick it now, wow oh',\n", + " 'kick it now kick it now, wow oh',\n", + " 'kick it now kick it now, wow oh',\n", + " 'kick it now kick it now, wow oh',\n", + " 'wow shaking up the higher ground till we white out',\n", + " 'so get loud the perfect blast don‘t stop brave it out',\n", + " 'wow blow the horn of honor cherish the big time',\n", + " 'break the line, brave it out',\n", + " 'wohoh, brave it out',\n", + " 'break the line, brave it out',\n", + " 'letra de \"dance and dense denso (mtv unplugged)\"',\n", + " 'verso 1: (micky hidobro)',\n", + " 'brincos, jalones, codazos y empujones...',\n", + " 'brincos, jalones, codazos y empujones',\n", + " 'de caca recordé los famosos pisotones',\n", + " 'ojos morados, patada en los cojones',\n", + " 'en el slam entre matudos y pelones',\n", + " 'puente: (paco ayala)',\n", + " 'santo tomas de los pelos parados',\n", + " 'a narizasos su pie le dejaste madreado',\n", + " 'cayó el pedo, cayó de este lado',\n", + " 'dance, dense denso todo empanizado',\n", + " 'verso 2: (tito fuentes)',\n", + " 'faster than the rayo',\n", + " 'we the new freestylers a caballo',\n", + " 'bone-break-dance intenso let go',\n", + " 'dance and dense, denso (wey)',\n", + " 'coro:',\n", + " 'dance, dance and dense, denso (x3)',\n", + " 'verso 3: (randy ebright)',\n", + " 'excuse me if you hear me getting too loud',\n", + " \"it's that i get kind of crazy when you get me around a crowd\",\n", + " 'put a codo in you puto',\n", + " 'you get knocked out',\n", + " 'come on sugar foot',\n", + " \"you're gonna end up getting plowed\",\n", + " 'come on get rowdy, come on get bloody',\n", + " 'come on get sweaty, hit somebody',\n", + " 'if you got the balls',\n", + " 'come and take a chance',\n", + " \"and brace yourself cuz it's some dense ass dancing\",\n", + " 'puente: (tito fuentes)',\n", + " 'faster than the rayo',\n", + " \"we's the new freestylers a caballo\",\n", + " 'bone-break-dance intenso let go',\n", + " 'dance and dense, denso (wey)',\n", + " 'coro:',\n", + " 'dance, dance and dense, denso (x3)',\n", + " 'dance, dance, dance, dance',\n", + " 'dense denso, dense denso (x3)',\n", + " 'să-mi cânţi cobzar bătrân ceva, să-mi cânţi ce ştii mai bine',\n", + " 'că vin ţi-oi da şi bani ţi-oi da, şi haina de pe mine',\n", + " 'să-mi cânţi cobzar bătrân ceva, să-mi cânţi şi din vioară',\n", + " 'că doar s-o isprăvi cândva o viaţă atât de amară',\n", + " 'lăsaţi-mă în fum să stau în crâşma-ntunecată',\n", + " 'să beau, să cânt şi-apoi să-nving durerea ce m-apasă',\n", + " \"lost in a dark place, i'm craving for some light\",\n", + " 'make my hopes, make my dreams be once again alive',\n", + " 'i do not want your pity, just play a song for me',\n", + " 'play it long, make me strong, and help me find my peace',\n", + " \"i've made mistakes and hurt those who loved me most\",\n", + " 'my past is haunting me like an evil ghost',\n", + " 'i need to find a way out of this dark hole',\n", + " 'your song is like a balm to my wounded soul',\n", + " \"risin' up, da du da daaaaa...\",\n", + " 'dah dah ah ah da da daaaaa...',\n", + " \"went the distance now i'm bah dah dah dah\",\n", + " 'got to fight for do dodo dooooo',\n", + " \"it's the eye of the tiger\",\n", + " \"it's the blah blah blah blah\",\n", + " 'buh da buda buda pla-o',\n", + " 'da da da do do do do da da da',\n", + " \"and he's watching us all with the... ahhhhhh!\"]}}},\n", + " 'tn': {'sentence': {'pop': {'meta': {'train_data': [\"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", + " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", + " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", + " \"let's get dirty, let's get dirty, let's get dirty, (damn) let's get\",\n", + " 'dirty',\n", + " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", + " \"let's get dirty, lеt's get dirty, let's get dirty, lеt's get dirty\",\n", + " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", + " \"let's get dirty, let's get dirty, let's get dirty\",\n", + " \"let's get\",\n", + " \"let's get dirty, let's get dirty\",\n", + " \"let's get dirty\",\n", + " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", + " \"let's get dirty, let's get dirty, let's get dirty, (uh) let's get dirty\",\n", + " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", + " \"let's get dirty, let's get dirty, let's get dirty\",\n", + " \"let's get\",\n", + " '(dirty)',\n", + " \"let's get dirty, let's get dirty\",\n", + " \"let's get dirty\",\n", + " \"(let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", + " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty)\",\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'uieram devudim vol',\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'uieram devudim vol',\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'aya ya ya ya yay, aya',\n", + " 'aya ya ya ya yay, aya',\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'uieram devudim vol',\n", + " 'imsigo vailen so',\n", + " 'aya ya ya ya yay, aya',\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'uieram devudim vol',\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'uieram devudim vol',\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'aya ya ya ya yay, aya',\n", + " 'aya ya ya ya yay, aya',\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'uieram devudim vol',\n", + " 'imsigo vailen so',\n", + " 'aya ya ya ya yay, aya',\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'uieram devudim vol',\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'uieram devudim vol',\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'aya ya ya ya yay, aya',\n", + " 'aya ya ya ya yay, aya',\n", + " 'imsigo vailen so',\n", + " 'imsigo vailen so',\n", + " 'uieram devudim vol',\n", + " 'imsigo vailen so',\n", + " 'aya ya ya ya yay, aya...',\n", + " \"i hènn scià i fantasmi cun't i reumatismi\",\n", + " 'i hènn scià i vampiri senza deenc',\n", + " \"l'è scià la nòcc cun't el maa de cràpa\",\n", + " 'che la và a durmì tràda giò in sö el laagh…',\n", + " 'i hènn scià i barboni cun la facia stràscia',\n", + " 'e i cartoni per quatàss el cüü',\n", + " 'hann tiraa föe tücc i so ricordi',\n", + " 'e i hann brüsaa per sculdàss i man…',\n", + " 'i hènn scià i taxisti cun la fàcia giàlda',\n", + " 'e i caramba cun la fàcia blöe',\n", + " 'i hènn scià i suldaa cun la giàca vèrda',\n", + " 'vànn tücc insèma a resegà i tusànn…',\n", + " \"l'è rüvada la nòcc…cun la sua butèga rùta\",\n", + " 'la sua umbrèla sgavezzàda',\n", + " \"e l'umbria senza i vestii…\",\n", + " \"l'è scià la mümmia cun la pancèra\",\n", + " \"e l'arcangel cun l'afregiùu\",\n", + " \"l'è scià la stria in söe la muturèta\",\n", + " \"l'è scià anca el diàvul a pagà de beev…\",\n", + " 'i hènn scià i playboy senza gnaa una dòna',\n", + " 'i hènn scià anca i dònn cun scià dumà un büceer',\n", + " \"hann faa amicizia in söe 'na panda sisley\",\n", + " \"dal finestrèn l'è gulàa föe un guldòn…\",\n", + " 'i hènn scià anca i föe i làdri e i assassèn',\n", + " 'i vagabòndi e i föe de coo',\n", + " 'ma per stasìra i vàarden söe la löena',\n", + " \"l'è mea sìra per cupà o crepà…\",\n", + " \"l'è rüvada la nòcc… negra cumè un cupertòn\",\n", + " 'sigaretta smurzàda…',\n", + " 'tràda là suta un lampiòn…',\n", + " 'jaage jaage',\n", + " 'soye soye',\n", + " 'tere naina',\n", + " 'sapnon mein',\n", + " 'khoye khoye',\n", + " 'tere naina',\n", + " 'tanhaiyon ki',\n", + " 'parchaiyon mein',\n", + " 'tum hi ho na',\n", + " 'tere naina',\n", + " 'haye naina',\n", + " 'sooni sooni',\n", + " 'sooni sooni',\n", + " 'si yeh raina',\n", + " 'aaja piya (aaja piya)',\n", + " 'tere bine nahi chaina',\n", + " 'unchaaiyon ki gehraaiyon mein',\n", + " 'tumhi ho na',\n", + " 'tere naina',\n", + " 'haye naina',\n", + " 'paaya tujhe to',\n", + " 'sab mil gaya haan',\n", + " 'ehsaas aisa ki sab khil gaya',\n", + " 'jaise himalaya',\n", + " 'khud pighal ke',\n", + " 'saagar ban gaya',\n", + " 'haan in palon ki',\n", + " 'raanaaiyon mein',\n", + " 'tum hi ho na',\n", + " 'tere naina',\n", + " 'haye naina',\n", + " 'madhosh raatein',\n", + " 'pal pal suhaani',\n", + " 'rut gaa rahi hai',\n", + " 'dil ke taraane',\n", + " 'saare nazaare chand taare',\n", + " 'gungunane lage',\n", + " 'in vadiyon ki angraiyon mein',\n", + " 'tumhi ho na',\n", + " 'tere naina',\n", + " 'haye naina',\n", + " 'jaage jaage',\n", + " 'soye soye',\n", + " 'tere naina',\n", + " 'sapnon mein',\n", + " 'khoye khoye',\n", + " 'tere naina',\n", + " 'tanhaiyon ki',\n", + " 'parchaiyon mein',\n", + " 'tum hi ho na',\n", + " 'tere naina',\n", + " 'haye naina',\n", + " 'sooni sooni',\n", + " 'sooni sooni',\n", + " 'si yeh raina',\n", + " 'aaja piya (aaja piya)',\n", + " 'tere bine nahi chaina',\n", + " 'unchaaiyon ki gehraaiyon mein',\n", + " 'tumhi ho na',\n", + " 'tere naina',\n", + " 'haye naina',\n", + " 'hangul',\n", + " 'whatever 바라는 대로 해요',\n", + " '넌 뭘 해도 예뻐요',\n", + " '난 그댈 믿어요',\n", + " '무엇이든 하고싶은 거 하세요',\n", + " '자꾸 눈치 보지 말고',\n", + " '편하게 생각해요',\n", + " 'i believe you believe you',\n", + " 'i believe you oh i love you',\n", + " 'believe you believe you',\n", + " 'i believe you oh i like you',\n", + " 'believe you believe you',\n", + " 'i believe you oh i miss you',\n", + " 'believe you believe you i love you',\n", + " 'whatever 원하는 대로 해요',\n", + " '넌 어차피 잘 될 거야 난 그댈 믿어요',\n", + " '무엇이든 하고싶은 거 하세요',\n", + " '자꾸 눈치 보지 말고 편하게 생각해요',\n", + " 'i believe you believe you',\n", + " 'i believe you oh i love you',\n", + " 'believe you believe you',\n", + " 'i believe you oh i like you',\n", + " 'believe you believe you',\n", + " 'i believe you oh i miss you',\n", + " 'believe you believe you i love you',\n", + " 'romanization',\n", + " 'whatever baraneun daero haeyo',\n", + " 'neon mwol haedo yeppeoyo',\n", + " 'nan geudael mideoyo',\n", + " 'mueosideun hagosipeun geo haseyo',\n", + " 'jakku nunchi boji malgo',\n", + " 'pyeonhage saenggaghaeyo',\n", + " 'i believe you believe you',\n", + " 'i believe you oh i love you',\n", + " 'believe you believe you',\n", + " 'i believe you oh i like you',\n", + " 'believe you believe you',\n", + " 'i believe you oh i miss you',\n", + " 'believe you believe you i love you',\n", + " 'whatever wonhaneun daero haeyo',\n", + " 'neon eochapi jal doel geoya nan geudael mideoyo',\n", + " 'mueosideun hagosipeun geo haseyo',\n", + " 'jakku nunchi boji malgo pyeonhage saenggakhaeyo',\n", + " 'i believe you believe you',\n", + " 'i believe you oh i love you',\n", + " 'believe you believe you',\n", + " 'i believe you oh i like you',\n", + " 'believe you believe you',\n", + " 'i believe you oh i miss you',\n", + " 'believe you believe you i love you',\n", + " 'nae ane nugunga sum swineunde malhamyeon mwo hae midji anhneunde',\n", + " 'mireo naeryeo haedo neon ppulichilyeo haedo no',\n", + " 'domangchilyeo haedo neon geoul soge isseo no',\n", + " \"i'm so so (my li li life)\",\n", + " \"i'm so so afraid-\",\n", + " \"i'm so so afraid\",\n", + " \"i'm so so i'm so so afraid\",\n", + " \"i'm so so i'm so so afraid\",\n", + " 'neon nugunyago mureobomyeon misoreul jieumyeo nan',\n", + " 'neorago hae',\n", + " 'mireo naeryeo haedo neon ppulichilyeo haedo no',\n", + " 'domangchilyeo haedo neon geoul soge isseo no',\n", + " \"i'm so so (my li li life)\",\n", + " \"i'm so so afraid-\",\n", + " \"i'm so so afraid\",\n", + " \"i'm so so i'm so so afraid\",\n", + " \"i'm so so i'm so so afraid\",\n", + " 'neon nugunyago mureobomyeon misoreul jieumyeo nan',\n", + " 'neorago hae',\n", + " 'romanization',\n", + " 'be be baby oeroweo a wae be be baby bappeugo shigan eopseo',\n", + " 'be be baby goeroweo a wae be be baby mot bwa bogo shipeodo',\n", + " 'ba ba bamerado neol boreo gallae na nawa gatdamyeon nawajullae',\n", + " 'ba bamerado neol boreo galge na nawa gatdamyeon',\n", + " 'nawajweo yeah',\n", + " 'eodiya baby akkan soljikhi jeongshin eopseosseo na mibji?',\n", + " 'honnaejweo iljjik da kkeunnaego wasseo na jinshim jibjunghaesseotji',\n", + " 'da kkeunnaego neorang nollyeogo shwit amu banghae eopshi ay',\n", + " 'keopina ttaerireo gaja oneul nalsshido jojana',\n", + " 'geotgien dari apeujana an kkeullyeodo ildan nawabwa',\n", + " 'oh baby nan junbi da dwaesseo umm maybe neon tto twinggigetjyo',\n", + " 'oh baby 10shibakke an dwaesseo woo lady maedallil geoya gyesok yeah',\n", + " 'jib apeuro derireo galge geunyang daechung nawa deo kkumiji malgo',\n", + " 'mannan jeok eopseotjana bame budam gajji malgo ildan nawabwa',\n", + " 'be be baby oeroweo a wae be be baby bappeugo shigan eopseo',\n", + " 'be be baby goeroweo a wae be be baby mot bwa bogo shipeodo',\n", + " 'ba ba bamerado neol boreogallae na nawa gatdamyeon nawajullae',\n", + " 'ba bamerado neol boreogalge na nawa gatdamyeon',\n", + " 'nawajweo yeah',\n", + " 'jib gagi shireo',\n", + " '(jib gagi shireo)',\n", + " 'honja museoweo',\n", + " '(honja museoweo)',\n", + " 'an naomyeon miweo',\n", + " '(an naomyeon miweo)',\n", + " 'geunyang mannajweo',\n", + " '(geunyang mannajweo)',\n", + " 'be be baby oeroweo a wae be be baby bappeugo shigan eopseo',\n", + " 'be be baby goeroweo a wae be be baby mot bwa bogo shipeodo',\n", + " 'ba ba bamerado neol boreogallae na nawa gatdamyeon nawajullae',\n", + " 'ba bamerado neol boreogalge na nawa gatdamyeon',\n", + " 'nawajweo yeah',\n", + " 'zousann',\n", + " 'zousann',\n", + " 'ohanaga nagainone',\n", + " 'souyo',\n", + " 'kaasannmo nagainoyo',\n", + " 'zousann',\n", + " 'zousann',\n", + " 'darega sukinano',\n", + " 'anone',\n", + " 'kaasannga sukinanoyo',\n", + " 'elephant',\n", + " 'elephant, elephant',\n", + " 'you have a long, long nose',\n", + " 'my mother has a long nose too',\n", + " 'elephant, elephant',\n", + " 'who do you like more',\n", + " 'i like my mother more',\n", + " 'with or without you',\n", + " 'with or without you',\n", + " 'with or without you',\n", + " 'with or without you',\n", + " 'ara imi kkeutnatdaneun geol',\n", + " 'jal ara da ara',\n", + " 'ara nohajweoya haneun',\n", + " 'jal ara da ara',\n", + " '(but without you) sarangeun kkeutnaji anhneun geol',\n", + " '(but without you) nunmuldo meom chuji anhneun geol',\n", + " '(so without you you) neo eopshido',\n", + " '(without you you) honjaseodo sarangeul jikkyeogal geoya',\n", + " '(with or without you)',\n", + " 'neoneun nal saragage haejuneun geu iyu',\n", + " \"it's you\",\n", + " '(with or without you)',\n", + " 'nae modeun apeumeul da gochyeojuneun chiyu',\n", + " \"it's you\",\n", + " \"it's you you u you u! be with you you u you u!\",\n", + " \"it's you you u you u! be with you you u you u!\",\n", + " 'gara sarangdo mweotdo anin jibchaga',\n", + " 'da gara da gara',\n", + " 'geuman neoreul geuriweo haneun nae i mam',\n", + " 'da geuman da geuman',\n", + " '(but without you) sarangeun kkeutnaji anhneun geol',\n", + " '(but without you) nunmuldo meom chuji anhneun geol',\n", + " '(so without you you) neo eopshido',\n", + " '(without you you) honjaseodo sarangeul jikkyeogal geoya',\n", + " '(with or without you)',\n", + " 'neoneun nal saragage haejuneun geu iyu',\n", + " \"it's you\",\n", + " '(with or without you)',\n", + " 'nae modeun apeumeul da gochyeojuneun chiyu',\n", + " \"it's you\",\n", + " 'with or without you',\n", + " 'with or without you',\n", + " 'with or without you',\n", + " 'with or without you',\n", + " '(with or without you)',\n", + " 'neoneun nal saragage haejuneun geu iyu',\n", + " \"it's you\",\n", + " '(with or without you)',\n", + " 'nae modeun apeumeul da gochyeojuneun chiyu',\n", + " \"it's you\",\n", + " \"it's you you u you u! be with you you u you u!\",\n", + " \"it's you you u you u! be with you you u you u!\",\n", + " \"it's you you u you u! be with you you u you u!\",\n", + " \"it's you you u you u! be with you you u you u!\",\n", + " 'ige kkumiramyeon kkaegosipji anha',\n", + " 'kkaeeonamyeon neo eobseulkkabwa duryeowo',\n", + " 'keoteunsairo bichyeojyeooneun jeobichanado urireul banghaehae',\n", + " 'baby you’re my girl',\n", + " 'baby you’re my girl',\n", + " 'nalppajyeodeulgehaneun my sweet lady',\n", + " 'baby you’re my girl',\n", + " 'baby you’re my girl',\n", + " 'nalmeomchulsugaeobseo my sweet lady',\n", + " 'neomuna dalkomhae neouihyanggineun machi naeonmomeul pagodeuneun dokgata mageulsueobseoseo',\n", + " 'beoseonalsudo eobseo ireonkkumi yeongwonhagil baragosipeo..',\n", + " 'iahivo véhi',\n", + " 'iahivo véhi',\n", + " 'vayava endwi wéno wéndou',\n", + " 'wredézi la, wika laraiyou',\n", + " 'tapalendwi wéno wéndou',\n", + " 'édésisi ma wika laraiyou',\n", + " 'asteraw',\n", + " 'starzen saw',\n", + " 'achirai',\n", + " 'zokopaws pounstar',\n", + " 'strinaliroul vegikey vela-iss mérikeys',\n", + " 'gelamo-un soliko-u chréla magma anralou']},\n", + " 'data': ['oh dance, dance chumeulchwoyo geudae',\n", + " 'dance, dance chumeulchwoyo geudae',\n", + " 'a jeongmal dora michyeo beorigenne (woo)',\n", + " 'na yojeum gyeokhage ttabunhae, ttabunhae',\n", + " 'ibeon jumaren sigan namadora (huh)',\n", + " 'na jigeum gyeokhage uulhae, uulhae',\n", + " 'amudo nal chatji anhneun ibam, oh',\n", + " 'honjaseon oelowoyo, whoa',\n", + " 'a jinjja jom sinnaneun il eobseulkka, ah',\n", + " 'bultaneun geumyoire bambambam',\n", + " 'baby pparaba ppappa dancing in the moonlight',\n", + " 'ssodajineun byeolbicharae, at tteugeoun bame',\n", + " 'baby pparaba ppappa dancing in the moonlight',\n", + " 'dupareul jeo haneurwiro, everybody baby dancing in the night',\n", + " 'dance, dance chumeulchwoyo geudae',\n", + " 'dance, dance chumeulchwoyo geudae',\n", + " 'a jeongmal dwitgol ttaenggyeo michigenne (woo)',\n", + " 'na jigeum wanjeon tto kkachilhae, kkachilhae',\n", + " 'bameun gipeo ganeunde na eojjeona (huh)',\n", + " 'na jigeum gyeokhage uulhae, uulhae',\n", + " 'amudo nal chatji anhneun ibam, oh',\n", + " 'honjaseon oerowoyo, whoa',\n", + " 'baby pparaba ppappa dancing in the moonlight',\n", + " 'ssodajineun byeolbicharae, at tteugeoun bame',\n", + " 'baby pparaba ppappa dancing in the moonlight',\n", + " 'dupareul jeo haneurwiro, everybody baby dancing in the night',\n", + " 'baby pparaba ppappa dancing in the moonlight (oh~)',\n", + " 'ssodajineun byeolbicharae, at tteugeoun bame (ooh~ at tteugeoun bame, oh)',\n", + " 'baby pparaba ppappa dancing in the moonlight (ooh yeah yeah~)',\n", + " 'dupareul jeo haneurwiro, everybody baby dancing in the night (dancing in the night)',\n", + " 'dance, dance chumeulchwoyo geudae',\n", + " 'dance, dance chumeulchwoyo geudae',\n", + " 'dance, dance chumeulchwoyo geudae',\n", + " 'dance, dance chumeulchwoyo geudae',\n", + " 'dance, dance chumeulchwoyo geudae',\n", + " 'cheoeum neoreul mannan geon',\n", + " 'neoui gieokbodan jogeum deo ppareun geol',\n", + " 'eonjena neoui dwieseo',\n", + " 'mollae neol barabwatji neon jal moreul geol',\n", + " 'soljikhi mareul hamyeon',\n", + " 'dapdaphan nae maeumi jogeum huryeonhaejilkka',\n", + " 'jeonbu da malhaebeorigo',\n", + " 'gwaenhi eosaekhaejimyeon geuttaen eotteokhaji',\n", + " 'geoul bomyeo hana sego',\n", + " 'dureul semyeon annyeong',\n", + " 'uri mannallae naega jigeum hal mari isseo',\n", + " 'uri mannaja mureobol ge isseunikka',\n", + " 'yonggi naeseo haneun mariya',\n", + " 'geureoni soljikhage daedaphaejwo',\n", + " 'uri mannallae oraetdongan gidaryeowasseo',\n", + " 'uri mannaja geunyang ireon chingu malgo',\n", + " 'jeogi marya naega itjanha neol manhi saranghae',\n", + " 'sueobsi yeonseuphaedo',\n", + " 'eojjeol suga eomna bwa mami tteollyeooneun geon',\n", + " 'eojjeojyo jakku geobi na',\n", + " 'gyeolguk haeya handamyeon ppalli haeyagetji',\n", + " 'jeonhwal georeo hana sego',\n", + " 'dureul semyeon annyeong',\n", + " 'uri mannallae naega jigeum hal mari isseo',\n", + " 'uri mannaja mureobol ge isseunikka',\n", + " 'yonggi naeseo haneun mariya',\n", + " 'geureoni soljikhage daedaphaejwo',\n", + " 'uri mannallae oraetdongan gidaryeowasseo',\n", + " 'uri mannaja geunyang ireon chingu malgo',\n", + " 'jeogi marya naega itjanha neol manhi saranghae',\n", + " 'i sungan ilbun ilchoga',\n", + " 'eoje haruboda deo gin geot gata',\n", + " 'geureohke utgoman itji malgo malhaebwa',\n", + " 'jakku geureollae daeche mwoga jaemitneun geoya',\n", + " 'jakku geureollae naneun simgakhadan marya',\n", + " 'yonggi naeseo haneun mariya',\n", + " 'geureoni soljikhage daedaphaejwo',\n", + " 'uri mannallae oraetdongan gidaryeowasseo',\n", + " 'uri mannaja geunyang ireon chingu malgo',\n", + " 'jeogi marya naega itjanha neol manhi saranghae',\n", + " 'only you niga anim nal gochil su eobseo',\n", + " 'nandasi useul su ga eobseo',\n", + " \"it's only you my baby it's only you\",\n", + " 'kkeutnabeorin chueogeul honja wae nochi motago butjaba',\n", + " 'jinagan geu saram bonaejugo saeroun sarmeul sara',\n", + " 'o nado ara geuraeya handaneun geol nado ara',\n", + " 'cheoeum han dareun mitji antaga duljjae dareun gyesok uldaga',\n", + " 'setjjae dareun maeumeul dajapgo dareun sarameul manna',\n", + " 'o boryeo haesseo hajiman naneun useul su eobseosseo',\n", + " 'only you neomani nareul sallil su isseo',\n", + " 'i nunmureul meomchul su isseo',\n", + " 'geureoni eoseo naege dorawajwo baby',\n", + " 'only you niga anim nal gochil su eobseo nan dasi useul suga eobseo',\n", + " \"it's only you my baby it's only you\",\n", + " 'listen, neon cham areumdawosseo useul ttaemyeon nuni busyeosseo',\n", + " 'hwanhan geu misoe nan eonjena neogseul irko maratji',\n", + " 'o miss you baby neomunado nan niga bogosipeo',\n", + " 'amudo nareul ihae motae geuttae geurigo jigeumdo',\n", + " 'naega wae ireokekkaji neoege jipchageul haneunji',\n", + " 'o ihae motae hajiman neoneun algo itjanha',\n", + " 'only you neomani nareul sallil su isseo',\n", + " 'i nunmureul meomchul su isseo',\n", + " 'geureoni eoseo naege dorawajwo baby',\n", + " 'only you niga anim nal gochil su eobseo nan dasi useul suga eobseo',\n", + " \"it's only you my baby it's only you baby\",\n", + " 'yo ijeoboryeogo haetjiman amman noryeogeul haebwado jakkuman neoman',\n", + " 'chatge doeneun geol ajikdo hwanhan geu misoga gyesok tteoolla cham han',\n", + " 'simhaji eojjaeseo ireoji domuji ichyeojijiga anha gyesok chaewojijiga',\n", + " 'annneun teong binjagiga isseo neomani chaeul suga isseo',\n", + " 'oh only you neomani nareul sallil su isseo',\n", + " '(nan jugeogago isseo)',\n", + " 'i nunmureul meomchul su isseo geureoni eoseo naege dorawajwo',\n", + " 'only you niga anim nal gochil su eobseo nan dasi useul suga eobseo',\n", + " \"it's only you my baby it's only you ye\",\n", + " 'jaljinaenyago jal motjinae niga pillyohae',\n", + " 'i wanna be that girl',\n", + " 'who can be with you forever',\n", + " 'so tell me',\n", + " 'will you be my boyfriend?',\n", + " 'yereul deulmyeon ireon mariya',\n", + " 'swiun malloman yaegi halge',\n", + " 'naega neol jjigeosseo',\n", + " 'mame deureosseo',\n", + " 'mullon mideojiji anketjiman',\n", + " 'kkuminga kkuminga hagetjiman',\n", + " 'naega neol jjigeosseo',\n", + " 'dangbungan mame deureosseo',\n", + " 'eoltteoltteolhan deut ne pyojeong',\n", + " 'mitgi mitgi himdeulgetji',\n", + " 'molla molla molla deo isangeun',\n", + " 'geureon pyojeong boiji ma',\n", + " 'banjjak banjjak bitnaneun naega bukkeureopji anke',\n", + " 'meoributeo balkkaji',\n", + " 'you have to change the your style',\n", + " 'neon nae kkeoya (boo bukkeubukkeu)',\n", + " 'mujogeon nae kkeoya (bukkeubukkeu boo)',\n", + " 'ttaereureung ireonaseo jal ttaekkaji neul naman saenggakhae',\n", + " 'nae namjaya (naekkeo naekkeo naekkeo)',\n", + " 'yeongwonhi ma ma ma ma my boy',\n", + " 'simjangi dugeundugeun bappajil geoya yeah yeah yeah oh',\n", + " 'narang gachi sajin jjigeul ttaen',\n", + " 'jeoldae eolgul dwiro ppaejima',\n", + " 'gibonjeok yeuiya (apeuro ga!)',\n", + " 'ape ga yeiye',\n", + " 'oneul museun yeonghwareul boljido',\n", + " 'kkeutnago eotteon jeonyeok meogeuljido',\n", + " 'naege mutji ma nan aju yeminhageodeun',\n", + " 'na jom pigonhae tomato',\n", + " 'mongmalla jigeum na rooibos',\n", + " 'wollae wollae wollae wollae geurae',\n", + " 'that that that that that that that girl',\n", + " 'pposongpposong eoyeoppeun',\n", + " 'naega sircheungnaji anke',\n", + " 'meoributeo balkkaji',\n", + " 'you must to change the your mind',\n", + " 'neon nae kkeoya (boo bukkeubukkeu)',\n", + " 'mujogeon nae kkeoya(bukkeubukkeu boo)',\n", + " 'ttaereureung ireonaseo jal ttaekkaji neul naman saenggakhae',\n", + " 'nae namjaya (naekkeo naekkeo naekkeo)',\n", + " 'yeongwonhi ma ma ma ma my boy',\n", + " 'simjangi dugeundugeun bappajil geoya yeah yeah yeah oh',\n", + " 'gakkeumssigeun teopeuhage ganjilganjil ganjireopge',\n", + " 'ilchodo ttabunhan saenggak deulji antorok',\n", + " 'nobody came (came) between us (us)',\n", + " 'no one could (koo) ever come above (bob)',\n", + " 'peek a boo peek a peek a boo uh uh uh uh',\n", + " 'neon naekkeoya (boo bukkeubukkeu)',\n", + " 'mujogeon nae kkeoya (bukkeubukkeu boo)',\n", + " 'ttaereureung ireonaseo jal ttaekkaji neul naman saenggakhae',\n", + " 'nae namjaya (naekkeo naekkeo naekkeo)',\n", + " 'yeongwonhi ma ma ma ma my boy',\n", + " 'simjangi dugeundugeun bappajil geoya yeah yeah yeah oh',\n", + " 'boo boo boo boo boo boo peek a boo',\n", + " 'be be be be be be be be bad girl',\n", + " 'peek ah peek ah peek',\n", + " 'peek ah peek ah peek',\n", + " 'boo boo boo boo boo boo peek a boo',\n", + " 'be be be be be be be be bad girl',\n", + " 'peek ah peek ah peek ah',\n", + " 'peek ah peek ah peek ah',\n", + " \"don't wanna be alone\",\n", + " 'don’t wanna be',\n", + " \"don't wanna be alone\",\n", + " \"don't wanna be\",\n", + " 'i, i, i, i, i, i, i, i-i',\n", + " 'i, i, i, i, i, i, i, i',\n", + " 'i, i, i, i, i, i, i, i',\n", + " 'i, i, i, i, i don’t wanna be alone',\n", + " 'catch that',\n", + " \"don't wanna be alone\",\n", + " 'catch that',\n", + " 'i, i, i, i, i, i, i, i-i',\n", + " 'i, i, i, i, i, i, i, i',\n", + " 'i, i, i, i, i, i, i, i',\n", + " \"i, i, i, i, i don't wanna be alone\",\n", + " 'catch that',\n", + " \"don't wanna be alone\",\n", + " \"don't wanna be alone\",\n", + " \"don't wanna be alone\",\n", + " \"don't wanna be alone\",\n", + " \"don't wanna be\",\n", + " 'don’t wanna be alone',\n", + " 'don’t wanna be',\n", + " \"i don't wanna be al-\",\n", + " 'catch that',\n", + " 'don’t wanna be alone',\n", + " 'catch that',\n", + " \"don't wanna be alone\",\n", + " \"don't wanna be\",\n", + " \"don't wanna be alone\",\n", + " 'don’t wanna be',\n", + " \"don't wanna be alone\",\n", + " \"don't wanna be\",\n", + " \"don't wanna be alone\",\n", + " \"don't wanna be\",\n", + " \"don't wanna be alone\",\n", + " \"don't wanna be alone\"]}}},\n", + " 'tr': {'sentence': {'pop': {'meta': {'train_data': ['bir eda bir çalım',\n", + " '(a manner a swagger)',\n", + " 'aldın başını gittin',\n", + " '(you took yourself away)',\n", + " 'ne kadar masum',\n", + " '(so very innocent)',\n", + " 'bir şeyi terkettin',\n", + " '(but you left it)',\n", + " 'avunurken olur olmaz aşklarla',\n", + " '(while i spent my life with improper loves)',\n", + " 'seni hem sevdim hem senden nefret ettim',\n", + " '(i loved you and i hated you at the same time)',\n", + " 'ne sen unuttun ne ben unuttum',\n", + " '(neither you nor i forgot it)',\n", + " 'aldatma kendini gel',\n", + " \"(don't keep deceiving yourself, come)\",\n", + " 'yanıyor için eriyor içim',\n", + " \"(i'm burning and melting inside)\",\n", + " 'eskisinden de beter',\n", + " '(far worse than before)',\n", + " 'gel gel sarışınım gel',\n", + " '(come come my blond come)',\n", + " 'gel sana aşığım gel',\n", + " \"(come, i'm in love with you, come)\",\n", + " 'gel gel günışığım gel',\n", + " '(come come my sunshine come)',\n", + " 'gel çok karışığım gel',\n", + " \"(come, i'm so confused, come)\",\n", + " 'gel gel sarışınım gel',\n", + " 'gel sana aşığım gel',\n", + " 'gel gel günışığım gel',\n", + " 'gel çok karışığım gel',\n", + " 'bir ateş ki alev alev yanar içimde',\n", + " '(this is fire burning with flames inside me)',\n", + " 'saçının kokusu kaldı ellerimde',\n", + " '(the scent of your hair is still on my hands)',\n", + " 'yatağımda deli gibi döner dururum',\n", + " \"(i'm turning in my bed crazily)\",\n", + " 'dolaşır sanki hayalin hala tenimde',\n", + " '(like your vision is still touching my body)',\n", + " 'ne sen unuttun ne ben unuttum',\n", + " 'aldatma kendini gel',\n", + " 'yanıyor içim eriyor içim eskisinden de beter',\n", + " 'gel gel sarışınım gel',\n", + " 'gel sana aşığım gel',\n", + " 'gel gel günışığım gel',\n", + " 'gel çok karışığım gel',\n", + " 'gel gel sarışınım gel',\n", + " 'gel sana aşığım gel',\n", + " 'gel gel günışığım gel',\n", + " 'gel çok karışığım gel',\n", + " 'gel gel sarışınım gel',\n", + " 'gel sana aşığım gel',\n", + " 'gel gel günışığım gel',\n", + " 'gel çok karışığım gel',\n", + " \"it doesn't live it doesn't live\",\n", + " \"this love doesn't live with you\",\n", + " 'what does it give what does it give',\n", + " \"this love doesn't do any good\",\n", + " 'how could i know how could i know',\n", + " 'your love is just too cold',\n", + " 'and i feel yes i feel',\n", + " \"it doesn't give me any hope\",\n", + " 'and i know and i know and i know and i know',\n", + " \"i'm gonna miss you somehow sometime\",\n", + " 'but i know but i know but i know but i know',\n", + " \"you're gonna dissappoint me again\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"i said don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"i said don't think you get me back\",\n", + " \"it doesn't live it doesn't live\",\n", + " \"this love doesn't live with you\",\n", + " 'i was wrong i was so wrong',\n", + " \"you don't know me as i thought\",\n", + " 'what can i do what can i do?',\n", + " \"cause there's no longer love left for you\",\n", + " 'you missed your chance just leave me alone',\n", + " 'i dont want your love anymore',\n", + " 'and i know and i know and i know and i know',\n", + " \"i'm gonna miss you somehow sometime\",\n", + " 'but i know but i know but i know but i know',\n", + " \"you're gonna dissappoint me again\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"i said don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"i said don't think you get me back\",\n", + " 'ask yok yalan',\n", + " 'hemde senaa yok',\n", + " 'bitsin tamam',\n", + " 'oynanan tiyatro',\n", + " 'geçsin zaman',\n", + " 'sonu fiyasko',\n", + " 'sonsuz sanan',\n", + " 've inlere son',\n", + " 'adana bestele di im tüm melodilerimi geri ver öyle git',\n", + " 'geri gelebilme ihtimalini sevemedim çok basit',\n", + " 'sende a klar on taksit de bizde sevgi tek silim',\n", + " 'format attm anlarma brakmadm tek kesit',\n", + " 'ruhumaa kardan ak verip boy verip',\n", + " 'yalan duydum yalana doydum kalan bo verip',\n", + " 'sorular hep basitti aka dair cevaplarsa komplike',\n", + " 'alglarmda sakl yardm',\n", + " 'duygularsa tek hece',\n", + " \"you're gonna dissappoint me again so\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"i said don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"don't think you get me back\",\n", + " \"i said don't think you get me back\",\n", + " \"aşk, yeniden, akdeniz'in tuzu gibi\",\n", + " '(love, once again, like the salt of the mediterranean)',\n", + " 'aşk, yeniden, rüzgârlı bir akşam vakti',\n", + " '(love, once again, on a windy night)',\n", + " 'aşk, yeniden, karanlıkta bir gül acarken',\n", + " '(love, once again, when a rose is blooming in the dark)',\n", + " 'aşk, yeniden, ürperen sahiller gibi',\n", + " '(love, once again, like the trembling shores)',\n", + " 'aşk, yeniden, kumsalların deliliği',\n", + " '(love, once again, the madness of the sandy beaches)',\n", + " 'aşk, yeniden, bir masal gibi gülümserken',\n", + " '(love, once again, while smiling like a fairy tale)',\n", + " 'gözlerim doluyor aşkının şiddetinden ağlamak istiyorum',\n", + " '(my eyes are filled with the intensity of your love, i want to cry)',\n", + " 'yıldızlar tutuşurken gecelerin şehvetinden kendimden taşıyorum',\n", + " \"(while the stars are burning with the passion of the nights, i can't hold myself)\",\n", + " \"aşk, yeniden, akdeniz'in tuzu gibi\",\n", + " '(love, once again, like the salt of the mediterranean)',\n", + " 'aşk, yeniden, rüzgârlı bir akşam vakti',\n", + " '(love, once again, on a windy night)',\n", + " 'aşk, yeniden, karanlıkta bir gül acarken',\n", + " '(love, once again, when a rose is blooming in the dark)',\n", + " 'aşk, yeniden, bitti artık bu son derken',\n", + " '(love, once again, after giving up and saying it was the last one)',\n", + " 'aşk, yeniden, aynı sularda yüzerken',\n", + " '(love, once again, while swimming in the same waters)',\n", + " 'aşk, yeniden, rüya gibi bir yaz gecerken',\n", + " \"(love, once again, while we're having a dream-like summer)\",\n", + " 'gözlerim doluyor aşkının şiddetinden ağlamak istiyorum',\n", + " '(my eyes are filled with the intensity of your love, i want to cry)',\n", + " 'yıldızlar tutuşurken gecelerin şehvetinden kendimden taşıyorum',\n", + " \"(while the stars are burning with the passion of the nights, i can't hold myself)\",\n", + " 'aşk, yeniden, unutulmuş yemin gibi',\n", + " '(love, once again, like a forgotten promise)',\n", + " 'aşk, yeniden, hem tanıdık hem yepyeni',\n", + " '(love, once again, both familiar and brand new)',\n", + " 'aşk, yeniden, kendini yarattı kendinden',\n", + " '(love, once again, rose from its ashes)',\n", + " 'é òû, ðå÷êà, ðå÷êà øèðîêà',\n", + " 'îé-äà ìèëàÿ, òðåïåòíà, ãëóáîêà',\n", + " 'òû ïîâåäàé î ñâîåì ïóòè',\n", + " 'îé-äà! î ãîðå ìàòóøêè-çåìëè',\n", + " 'îé-äà áðàòû, áðàòû ëåñíûå',\n", + " 'äåðåâà-äåäû, äà âåêîâûå',\n", + " 'ñêîëü óæ âðåìÿ âðåìå÷êî óøëî',\n", + " 'äà ÷ðåç âåêà íà çåìëþ ñíèçîøëî',\n", + " 'îáðå÷åííî ðóêè âçäûìàÿ',\n", + " 'ê îáèòåëè ðîäà, âíîâü ÿ âîïðîøàþ:',\n", + " 'îé, äà! äà ìàòóøêà-çàðÿ',\n", + " 'îé íå òðåâîæü òû ïåñíþ ñîëîâüÿ',\n", + " 'âñòàíü ïðåä ñîëíöåì ÿðî ãîðÿùåì',\n", + " 'ïðåä âåëèêèì ÷óðîì, îáðàòèñü òû ê ñïÿùèì!',\n", + " 'âå÷íîñòü ñïèò âî ìãëå',\n", + " 'ñëîâíî æäåò âîéíó',\n", + " 'äðåìëåò âåðà áåçûñõîäíî',\n", + " 'áðàòüÿ íà çåìëå',\n", + " 'èõ ñåðäöà â ïëåíó',\n", + " 'ñòîíóò áîëüþ îáðå÷åííî',\n", + " 'ïî ñûðîé çåìëå, ÷òî â òâîèõ ñëåçàõ',\n", + " 'ïðîíåñåì ðîäíûå âåäû',\n", + " 'ïóñòü îìîåò äîæäü ñêîðáü â ñëåïûõ î÷àõ',\n", + " 'ìû âåðíóëèñü äëÿ ïîáåäû!',\n", + " 'ïîäûìè òû âçîð ñâîáîäíûé',\n", + " 'òðîíü òû ãëàäü äóøè ëåñíîé',\n", + " 'çàáâåííûå ïðîñòîðû',\n", + " 'äóøó ìàíÿò âñëåä çà ñîáîé',\n", + " 'ïüÿíÿùèé äóõ ñâîáîäû',\n", + " 'îãíåì ñåðäöå òåðåáèò',\n", + " 'è ñíîâà ïîçíàí ìíîþ',\n", + " 'ñâåò ðóèí, ÷òî áûë ïîçàáûò',\n", + " 'è âíîâü ðàññâåò, âî òüìó ïðîíçàÿñü',\n", + " 'âòîðèò, ÷òî æèâà îíà',\n", + " 'òà âåðà, ÷òî çàâåòàì äàâíèì ïðåäàíà',\n", + " 'áûëîþ ñëàâîé èñ÷åçàÿ â òüìó ñòîëåòèé äàâíèõ äíåé',\n", + " 'êóäà èäåì, íå çíàÿ ìû ðîäíè ñâîåé?!',\n", + " 'êóäà ñïåøèì, âîðîòÿ âçãëÿä îò ñòàðîé ïðàâäû?',\n", + " '×åãî ìû æäåì? îò ìèðà ÷óæäîãî ñëàäêîé íàãðàäû?',\n", + " 'âîíçàÿ çóáû â ßâü áåæèì îò ðîäîâîãî äðåâà',\n", + " 'íî ãðîìêèì ãëàñîì ìîëâÿò áðàòüÿ: \"ìû æèâû, äåäû!\"',\n", + " 'è ãëàñîì íî÷è òû ïðîìîëâè çàâåòû',\n", + " 'òîé ñóùíîñòè âå÷íîé, ÷òî íàì ñîêðîâåííà',\n", + " 'è ñëàâû ìàíÿùåé çàòìè ñåðû î÷è',\n", + " 'ìû åñòü ñûíû ñâåòà, ìû åñòü ñåñòðû íî÷è!',\n", + " 'by fallen_rs',\n", + " 'marâ na sar na sâmân âfaridand',\n", + " 'parişânom parişân âfaridand',\n", + " 'parişân xâteran raftand-o dar xâk',\n", + " 'marâ az xâk-e işân âfaridand',\n", + " 'azizom key mi-âyi key mi-âyi',\n", + " 'nadârom tâqat-e yek dam jodâyi',\n", + " 'xoşâ ânân ke sodâ-ye to dâran',\n", + " 'ke sar peyvast-e dar pâ-ye to dâran',\n", + " 'be del dâram tamanâ-ye kesâni',\n", + " 'ke andar del tamanâ-ye to dâran',\n", + " 'agar zarin kolâhi âqebat hiç',\n", + " 'be taxt-e pâdeşâhi âqebat hiç',\n", + " 'garat molk-e soleymân dar negin ast',\n", + " 'dar âxar xâk-e râhi âqebat hiç',\n", + " 'ya lfarḥ amuqran',\n", + " \"imi d'yuɣal s'axx\",\n", + " 'ruḥen ak iɣevlan',\n", + " 'tveddel dduinit felli',\n", + " 'argaz im vava-m',\n", + " \"s'wedem iṣeḥan\",\n", + " 'ger medden aden-van',\n", + " 'mmi-m ger aneɣ ad yili',\n", + " 'taftilt igenwan',\n", + " 'tuɣe-d yal mkan',\n", + " 'mi tsselef i lufan',\n", + " 'tadeṣa deg udem is tuli',\n", + " 'mmi-m avaḥan',\n", + " 'ahya adehv aṛeqman',\n", + " \"y'anraǧu deg' verdan\",\n", + " 'vava-k ma d-yevdu tikli',\n", + " \"γas d'iṭij yerɣan\",\n", + " \"neɣ d'adefell yessan\",\n", + " \"γas d'aẓṛu yeḥfan\",\n", + " 'ḥemlaɣ-k ay adrar inu',\n", + " \"s'ddaw igenwan\",\n", + " 'yekcem ger yetran',\n", + " 'nets argu afussan',\n", + " 'i deg lḥif ur-d yet nulfu',\n", + " 'ay akal imeɣban',\n", + " 'ur yelli win yeṛwan',\n", + " 'ay kelxaɣ zman',\n", + " 'amzun nevwi daɛwessu',\n", + " 'a nnif iɣ-yeččan',\n", + " 'ahya a ttaṛ averkan',\n", + " \"i nets ara s'wurfan\",\n", + " \"imi n-ɣil deg's dwa ḥellu\",\n", + " 'haber uçtu devlete de beþ yýl yattým hapiste',\n", + " '(the news flew to the goverment, i was in prison for five years)',\n", + " 'yedi düvel zindanýndan beterdir yedikule',\n", + " '(yedikule (seven towers - a famous dungeon) is worse than all the other ones)',\n", + " 'nargilem duman duman ah bayýldým aman aman',\n", + " '(my nargile has smoke on it, ah i love it aman aman)',\n", + " 'ýstanbul güzel ama sahipleri pek yaman',\n", + " '(ýstanbul is beautiful but its owners are very quick-tempered)',\n", + " 'beþ yýl bana yaraþtý da nargilem buna þaþtý',\n", + " '(these five years became me, even my nargile got suprised)',\n", + " 'her gün çizdim usturamla baðlamam doldu taþdý',\n", + " '(i scratched everyday with my razor, my saz was filled with scratches)',\n", + " 'sarma cigaram yanar çekerim aðýr aðýr',\n", + " \"(my wrapped cigarette is burning, i'm inhaling it slowly)\",\n", + " 'tekkemiz güzel ama haber uçuranlar var',\n", + " '(our tekke is very beautiful but there are some traitors)',\n", + " 'nargilemin marpucu da gümüþtendir gümüþten',\n", + " \"(my nargileh's tube is from silver, silver)\",\n", + " 'beþ deðil onbeþ yýl olsa ben vaz geçmem bu iþten',\n", + " \"(i won't give it up even if it is fifteen years instead of five)\",\n", + " 'nargilem duman duman ah bayýldým aman aman',\n", + " '(my nargile has smoke on it, ah i love it aman aman)',\n", + " 'ýstanbul güzel ama sahipleri pek yaman',\n", + " '(ýstanbul is beautiful but its owners are very quick-tempered']},\n", + " 'data': ['sallemle 3alayh',\n", + " 'rou7 w sallemle 3alayh',\n", + " '2ello meshta2a layh',\n", + " 'howe ele ma fi metlo 7ada',\n", + " 'habibi 3a toul el mada',\n", + " 'rou7 w sallemle 3alayh',\n", + " 'meshta2a ktir nerja3 netla2a youm',\n", + " 'nensa el 3atab w el loum',\n", + " 'ne7ke sawa',\n", + " 'nedhak sawa',\n", + " 'netmasha 3a droub el hawa',\n", + " 'nam w es7a 3a 2edayh',\n", + " 'rou7 2ello ghayro ma be7ke',\n", + " 'teslamle rayta hal da7ke',\n", + " 'shou b7eba w s2alo barke',\n", + " '3ala 7alo',\n", + " '3ala 7alo',\n", + " 'ba3do 3al fer2a',\n", + " 'w bye7lam metle bel mal2a',\n", + " 'aw be5tor 7ata law ser2a 3ala balo',\n", + " 'sallemle 3alayh',\n", + " 'rou7 w hayda el 3enwan',\n", + " 'shefle en kano za3lan',\n", + " 'aw ghayre 3a albo ehtada',\n", + " 'dari habibi men el nada',\n", + " 'men el nasme elle 7walayk',\n", + " 'rou7 2ello ghayro ma bade',\n", + " 'w min 7abo bel dene 2ade',\n", + " 'w wadilo hal 3omer wadi',\n", + " 'be salami',\n", + " 'w e7kilo hal 3omer mar2a',\n", + " 'yerja3li nes3ad w nesh2a',\n", + " 'w shou bte7la law sawa neb2a',\n", + " '2eyami',\n", + " 'sallemle 3alayh',\n", + " 'rou7 w sallemle 3alayh',\n", + " '2ello meshta2a layh',\n", + " 'howe ele ma fi metlo 7ada',\n", + " 'habibi 3a toul el mada',\n", + " 'rou7 w sallemle 3alayh',\n", + " 'meshta2a ktir nerja3 netla2a youm',\n", + " 'nensa el 3atab w el loum',\n", + " 'ne7ke sawa',\n", + " 'nedhak sawa',\n", + " 'netmasha 3a droub el hawa',\n", + " 'nam w es7a 3a 2edayh',\n", + " 'ala yar jaan chera rangat khazanast',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'nakhor ghose khodavand mehrabanast',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'miyane ma vo to ahdo neshanast',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'ala yar jan khatar darad jodai',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'az dele por dardam beshno',\n", + " 'del be niyaz miyayad',\n", + " 'az dele por dardam beshno',\n", + " 'del be niyaz miyayad',\n", + " 'bia ke sine ra sahra besazim',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'bia ke didera darya besazim',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'bia ta bastari az par besazim',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'yeki khane ze eshq az sar besazim',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'az dele por dardam beshno',\n", + " 'del be niyaz miyayad',\n", + " 'az dele por dardam beshno',\n", + " 'del be niyaz miyayad',\n", + " 'be daghe khoda',\n", + " 'be daghe khoda',\n", + " 'be daghe khoda',\n", + " 'be daghe khoda',\n", + " 'be daghe khoda, be daghe khoda, be daghe khoda, be daghe khoda',\n", + " 'derakhte gham be janam karde rishe',\n", + " 'be daghe khoda minalam hamishe',\n", + " 'rafighan ghadre yek digar bedanid',\n", + " 'ajal sang ast o adam mesle shishe',\n", + " 'az dele por dardam',\n", + " 'az dele por dardam',\n", + " 'az dele por dardam beshno',\n", + " 'del be niyaz miyayad',\n", + " 'az dele por dardam beshno',\n", + " 'del be niyaz miyayad',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'sabza ba naz miyayad mahrame raz miyayad',\n", + " 'az dele por dardam beshno',\n", + " 'del be niyaz miyayad',\n", + " 'az dele por dardam beshno',\n", + " 'del be niyaz miyayad',\n", + " 'del be niyaz miyayad',\n", + " 'del be niyaz miyayad',\n", + " 'bir rüzgar gibi gelip geçtin hayatımdan',\n", + " 'you passed through from my life like wind',\n", + " 'dinmedi içimde o acı hatıra',\n", + " 'the sorrowful souvenir inside me did not end',\n", + " 'ağladım boşluğuna dizlerim bağlanmış',\n", + " 'i cried emptiness of you with bounded knees',\n", + " 'sensiz herşey boş herşey yalanmış',\n", + " 'everything without you was a lie',\n", + " 'ne fayda yaram dinmez',\n", + " 'it is helpless, my wound never ends',\n", + " 'günlerim geçmek bilmez',\n", + " 'my days do not pass',\n", + " 'anılarım silinmez yarim yarim',\n", + " 'my souvenirs can not be erased, sweetheart sweetheart',\n", + " 'sensiz yapamam buralarda duramam',\n", + " 'i cant handle without you in here',\n", + " 'kolay değil inan başkasıyla olamam',\n", + " \"it is not easy. believe m, i can't be someone else\",\n", + " 'sensiz yapamam buralarda duramam',\n", + " 'i cant handle without you in here',\n", + " 'kolay değil inan başkasıyla yapamam',\n", + " 'it is not easy. believe me, i cant be someone else',\n", + " 'yar söle nasıl alışırım yokluğuna',\n", + " 'tell me, my lover, how will i get used to living without you?',\n", + " 'terk edip gidişin yıllardır aklımda',\n", + " \"you're still in my mind for years\",\n", + " 'ben seni unutmam unutamam yanarım',\n", + " \"i can't forget you, can't forget. i burn (means not to forget burns her/his heart)\",\n", + " 'kırdığım olsanda hep seni anarım',\n", + " 'i call you my mind, even you are who i hurt',\n", + " 'ne fayda yaram dinmez',\n", + " 'it is helpless, my wound never ends',\n", + " 'günlerim geçmek bilmez',\n", + " 'my days do not pass',\n", + " 'anılarım silinmez yarim yarim',\n", + " 'my souvenirs do not be erased, sweetheart sweetheart',\n", + " 'sensiz yapamam buralarda duramam',\n", + " \"i can't handle without you in here\",\n", + " 'kolay değil inan başkasıyla olamam',\n", + " \"it is not easy. believe me, i can't be someone else\",\n", + " 'sensiz yapamam buralarda duramam',\n", + " \"i can't handle without you in here\",\n", + " 'kolay değil inan başkasıyla yapamam',\n", + " \"it is not easy. believe me, i can't be someone else\"]}}},\n", + " 'ts': {'sentence': {'pop': {'meta': {'train_data': ['kona fi 2awakher 2echeta 2abli li fate',\n", + " 'zayi lyomine doule 3ichna ma3a ba3di 7kayate',\n", + " '2ana konti lama a7ebe atwaness ma3ake',\n", + " '2ana konti bakhod ba3di we 2aro7lo men sokate',\n", + " 'kona fi awakher 2echeta 2abli ... sokate',\n", + " 'we nass fi 3ezi 2elbared yegro yestekhabo',\n", + " 'wana konti bagri wakhabi nafssi awame fi 2albo',\n", + " 'wel7adi lama lile biylayele bab2a ganbo',\n", + " 'wafdale fi 3ezi lbared wayah bi sa3ate',\n", + " '3la sahwa lih 2edenya ba3de ma3achemetna',\n", + " 'we3ayechetna chwiya reg3ete mawetetna',\n", + " 'we denya men yomiha ya 2albi 3awedetna',\n", + " 'lama betedi 7agate 2awame takhode 7agate',\n", + " 'weste 2echaware3e nass ketire mrawa7ine',\n", + " 'wenass ya 2albi homa homa we howa fine',\n", + " 'wa 2ana machya batlafete we bas2el koli youme',\n", + " 'beye3mel 2iihe delwa9ti we biye7lame bi mine',\n", + " 'we nass fi 3ezi elbared yegro yestekhabo',\n", + " 'wana konti bagri wakhabi nafssi awame fi 9albo',\n", + " 'wel7adi lama lile biylayele bab9a ganbo',\n", + " 'wafdale fi 3ezi lbared wayah bi sa3ate',\n", + " '3la sahwa lih edenya ba3de ma3achemetna',\n", + " 'we3ayechetna chwiya reg3ete mawetetna',\n", + " 'we denya men yomiha ya 2albi 3awedetna',\n", + " 'lama betedi 7agate 2awame takhode 7agate',\n", + " 'aye girl',\n", + " \"got somethin' to tell you\",\n", + " 'nan neoman wonhae wonhae, i want you baby (l. joe: yeah)',\n", + " \"i'm right for you\",\n", + " 'and you got right for me',\n", + " 'i love you baby',\n", + " 'i need a girl',\n", + " 'i need a girl',\n", + " 'i need a girl',\n", + " 'neon jeongmal yeppeugo areum dawo',\n", + " 'i need a girl',\n", + " 'i need a girl',\n", + " \"i need a girl (that's right)\",\n", + " 'girl friend, friend, friend, friend',\n", + " 'salmyeoshi daga what janha',\n", + " 'nae mameul bbae asat janha',\n", + " 'urin imi beolsseo tong haet janha',\n", + " 'nae du nuneul barabwa',\n", + " 'haru edo myeot beonsshik nal jeonhwa hage mandeulgo',\n", + " 'dalkomhan ni moksorie miso jitge mandeureo',\n", + " 'ojik naegen neo hana ppun ingeol (ricky: i got ya)',\n", + " 'my lady',\n", + " 'nae soneul jaba',\n", + " 'hey shawty',\n", + " 'my baby',\n", + " 'hokshi nae saenggakhae',\n", + " 'neoreul mannal saenggake na jamdo anwa jakkuman na',\n", + " 'honja useohae-hae',\n", + " 'i know you feel the same',\n", + " 'what more can i say?',\n", + " 'sashireun niga cheoeumiya',\n", + " 'i need a girl',\n", + " 'i need a girl',\n", + " 'i need a girl',\n", + " 'neon jeongmal yeppeugo areum dawo',\n", + " 'i need a girl',\n", + " 'i need a girl',\n", + " \"i need a girl (that's right)\",\n", + " 'girl friend, friend, friend, friend',\n", + " 'neon jeongmal yeppeo, yeppeo',\n", + " 'geu nugu boda deo neon nun busheo',\n", + " 'sae hayan pibue',\n", + " 'saekkaman nun dongja',\n", + " 'neon naekkeo, naekkeo',\n", + " \"you're my beautiful girl\",\n", + " 'maeil mada ni saenggake naneun jamdo mot irwo',\n", + " 'ireon gibun cheoeum ingeol',\n", + " 'geu nuga alkka',\n", + " 'i want you girl',\n", + " 'i need you girl~yeah',\n", + " 'hey shawty',\n", + " 'my baby',\n", + " 'hokshi nae saenggakhae',\n", + " 'neoreul mannal saenggake na jamdo anwa jakkuman na',\n", + " 'honja useohae-hae i know you feel the same',\n", + " 'what more can i say, sashireun niga cheoeumiya',\n", + " 'i need a girl',\n", + " 'i need a girl',\n", + " 'i need a girl',\n", + " 'neon jeongmal yeppeugo areum dawo',\n", + " 'i need a girl',\n", + " 'i need a girl',\n", + " \"i need a girl (that's right)\",\n", + " 'girl friend, friend, friend, friend',\n", + " 'hey girl',\n", + " \"you're the only one\",\n", + " 'nan neoman isseumyeon dwae',\n", + " 'hey girl',\n", + " \"you're the only one\",\n", + " 'eonje kkaji na',\n", + " 'nae yeope isseojwo~',\n", + " 'i need a girl',\n", + " 'i need a girl',\n", + " 'i need a girl',\n", + " 'neon jeongmal yeppeugo areum dawo',\n", + " 'i need a girl (chunji: my girl)',\n", + " 'i need a girl (chunji: my girl)',\n", + " \"i need a girl (that's right)\",\n", + " 'girl friend, friend, friend, friend',\n", + " 'i love you baby',\n", + " 'catch me girl~!',\n", + " 'catch me now~!',\n", + " 'catch me if you wanna',\n", + " 'c-catch me if you wanna',\n", + " 'ca-ca-ca-c-catch me if you...',\n", + " 'han beon dan hanbeondo kkeutkkaji naege mameul yeonjeok eobseo',\n", + " 'nan machi byeogeul bogo seon deutan gibuniya geugeo aranni?',\n", + " 'oh oh~',\n", + " 'gyeote itjiman deo oerowojil ppun tonight tonight tonight',\n", + " 'neol gidaryeotjiman igeon jom aniya ijen neol tteonanda',\n", + " 'gajima han madil motanda i baboga',\n", + " 'naega wae i baboman bwasseulkka? cham motnan neol',\n", + " 'baby catch me. catch me. catch me, girl, tonight',\n", + " \"tteona beorigi jeone (i'm serious i'm serious)\",\n", + " 'nareul japgo makgo ulgo ttaerigo',\n", + " \"iyureul malhaejwotdamyeon (i'm serious i'm serious)\",\n", + " 'oh~ moreugetda neoui mame naega gipi isseowanneunji tto, aninji',\n", + " 'geuge gunggeumhae jichyeobeorigi jeone malhaejwo malhaejwo daedaphae',\n", + " 'siganeun neol geureoke mukkeo dulgeoya jigeum geu jarie',\n", + " 'nareul bonaejima huhoehage dwae miryeon jom tteoljima',\n", + " 'woah~!',\n", + " 'gajima han madil motanda i baboga ( baby~)',\n", + " 'naega wae i baboman bwasseulkka? cham motnan neol',\n", + " 'handongan naegen neoman gadeuk chan gibun',\n", + " 'cham manhi haengbokhaetdeon gieogi na',\n", + " 'nugudo namankeum gidaryeojul sarameun no!',\n", + " 'eopdaneun geol neon itjima~',\n", + " 'yeah~!',\n", + " 'aewonhaejugil barae nan gidarilge',\n", + " 'ijenajeojena nal tteonajima, mallago malhae',\n", + " 'neomu neuryeo, ni mameul jeonghal ttaekkaji',\n", + " 'neoman bonda nan dodaeche wae?',\n", + " 'aewonhaejugil barae nan gidarilge',\n", + " 'ijenajeojena nal tteonajima, mallago malhae',\n", + " 'babo naega wae neoreul saranghaetgenni?',\n", + " 'neo bakke eobseo dodaeche wae? oh!',\n", + " '(dance break)',\n", + " 'n-nan gidaerilge',\n", + " 'ey yeah woah!',\n", + " 'ah!',\n", + " 'gajima han madil motanda i baboga',\n", + " 'naega wae i baboman bwasseulkka? cham motnan neol',\n", + " 'baby catch me. catch me. catch me, girl, tonight',\n", + " \"tteona beorigi jeone (i'm serious i'm serious)\",\n", + " 'nareul japgo makgo ulgo ttaerigo',\n", + " \"iyureul malhaejwotdamyeon (i'm serious i'm serious)\",\n", + " 'catch me if you wanna',\n", + " 'c-catch me if you wanna',\n", + " 'ca-ca-ca-ca-c-catch me if you wanna',\n", + " 'how to love, urin eolmana teukbyeolhalkka',\n", + " 'how to love, nan ajikdo',\n", + " 'moreugesseo saranghaneun beop',\n", + " 'siheomi anya igeon wae seororeul pyeonggahago',\n", + " 'jakku jeomsureul maegyeo',\n", + " 'biseutan chwihyange jal matneun hyeoraekhyeong',\n", + " 'ireonge jungyohae? nan moreugesseo',\n", + " 'just love inwijeoginge anya',\n", + " 'geunyang jayeonseureoun',\n", + " 'gamjeonge ikkeullyeo seororeul jaseokcheoreom',\n", + " 'kkeureodanggige doeneungeoji angeurae?',\n", + " 'gyesaneul haneun sunganbuteo geojitdoen',\n", + " 'sarang ani geunyang heulleoganeun yeonae',\n", + " 'siganman ttaeul geomyeon charari naneun anhae',\n", + " 'igeotjeogeot ttajigo kkiwomatchul sigane',\n", + " 'ne nuneul hanbeonirado majuchigo useullae',\n", + " 'bogoitgimanhaedo',\n", + " 'hamkke siganeul bonaeneun geotmaneurodo',\n", + " 'mueonga namji anteorado nan joheunde',\n", + " 'woo baby tell me, how to love',\n", + " 'dachin mameul yeoreo jogeumman',\n", + " 'meorissoge gadeuk chan saenggageul biwobwa',\n", + " 'how to love sangcheoga namado gwaenchanha',\n", + " 'saranghaneun sunganeun haengbokhaltenikka',\n", + " 'how to love, love, love, love, love, love, love',\n", + " 'saranghajiman ttaeron heeojimeul saenggakhae',\n", + " 'seororeul da ajik aljimotanchae',\n", + " 'how to love, love, love, love, love, love, love',\n", + " 'jogeum deo cheoncheonhi nege matchwogalge',\n", + " 'gateun goseul hyanghae georeogal su itge',\n", + " 'how to love',\n", + " 'sasil neo malgodo dareun',\n", + " 'sarameul nan mannabwatjiman',\n", + " 'maebeon dangyeonhan',\n", + " 'deut dagaon ibyeol apeseo',\n", + " 'dasin saranggateun geon',\n", + " 'oji anheul jul aranneunde',\n", + " '( nega ongeoya)',\n", + " 'nae ape nega natanangeoya',\n", + " 'geuraeseo geurae irkosipji anheunde yeah',\n", + " 'neowa naega ganeun',\n", + " 'girenkkeuchi eopgireul nan barae',\n", + " 'neo yeoksi naege',\n", + " 'gateun mideumeul jwosseum hae',\n", + " 'dareun saenggageun geumanhae',\n", + " 'haengbokhagido bappeunde',\n", + " 'woo baby tell me, how to love',\n", + " 'dachin mameul yeoreo jogeumman',\n", + " 'meorissoge gadeuk chan saenggageul biwobwa',\n", + " 'how to love',\n", + " 'sangcheoga namado gwaenchanha',\n", + " 'saranghaneun sunganeun haengbokhaltenikka',\n", + " 'how to love, urin eolmana teukbyeolhalkka',\n", + " 'how to love, nan ajikdo',\n", + " 'moreugesseo saranghaneun beop',\n", + " 'how to love, neon nal eotteoke saenggakhalkka',\n", + " 'ajikdo neomu eoryeowo naege sarangirangeon',\n", + " 'woo baby tell me, how to love]',\n", + " 'dachin mameul yeoreo jogeumman',\n", + " 'meorissoge gadeuk chan saenggageul biwobwa',\n", + " 'how to love',\n", + " 'sangcheoga namado gwaenchanha',\n", + " 'saranghaneun sunganeun haengbokhaltenikka',\n", + " 'how to love, love, love, love, love, love, love',\n", + " 'saranghajiman ttaeron heeojimeul saenggakhae',\n", + " 'seororeul da ajik aljimotan chae',\n", + " 'how to love, love, love, love, love, love, love',\n", + " 'jogeum deo cheoncheonhi nege matchwogalge',\n", + " 'gateun goseul hyanghae georeogal su itge',\n", + " 'how to love',\n", + " 'dance with me i wanna ride with you (woo) dance with me dance with me',\n", + " 'geudae jigeum eodil baraboneunji daeche jigeum museun saenggakhaneunji',\n", + " 'geudaeneun wollae geudaeneun wollae namjarangeun chum chul saenggak eomneunji',\n", + " 'hajiman nan dareun namja deulgwa jinjja mwonga dalla',\n", + " 'nae nuneul barabomyeon al su isseo eonjekkaji mangseorillae baby rideumui momeul matgyeo lady',\n", + " 'one step one two two step momeul umjigyeo jigeumi sungan dulmanui gonggan neoreul matgyeobwa',\n", + " 'ijen baby dance baby dance baby dance with me geudaen jigeum eodil bwa nareul bwa',\n", + " 'momeul naege matgyeo dance with me ijen baby dance baby dance baby dance with me',\n", + " 'jigeum yeogil neukkyeobwa jeulgyeobwa baby dance tonight neodo dance tonight',\n", + " 'geudae jigeum nugul chatgo inneunji chingun dareun namjawa chumchuneunde',\n", + " 'geudaen wae jakku chingul butjapgu nunchi eopge jibe gaja haneunji',\n", + " 'ijen jebal jaemieopge gulji malgo nae son jaba oneuri jinagamyeon huhoehalkkeol',\n", + " 'eonjekkaji mangseorillae baby nawa chumeul chwojyo lady',\n", + " 'one step one two two step momeul heundeureo jigeum i sungan dulmanui gonggan jujeohajima',\n", + " 'yo dance tonight hamkke feeling alright moduga ije naege matgyeo singyeong sseul pillyo eobseo',\n", + " 'dwaesseo jayeonseureon neoui nature jigeum rideum tago inneun neoui gesture',\n", + " 'wonhajanha barajanha stage wiro ttaraoneun siseon jekkyeobeoryeo neoui dwiro(oh)',\n", + " 'dugo momeul umjigyeo bakjae matchwo i eumageul neukkyeobwa geurigo ije jeulgyeobwa(oh)',\n", + " 'one step one two two step momeul umjigyeo',\n", + " 'jigeumi sungan dulmanui gonggan neoreul matgyeobwa',\n", + " 'ijen baby dance baby dance baby(come on girl dance with me)',\n", + " \"ijen baby dance baby dance baby(don't try leave stay with me)\",\n", + " 'ijen baby dance baby dance baby(come on baby dance x2)',\n", + " 'ijen baby dance baby dance baby baby dance tonight',\n", + " 'neodo dance tonight',\n", + " 'aye!',\n", + " 'this song is just for ya',\n", + " 'ya know this is',\n", + " 'haha!',\n", + " 'drop this',\n", + " 'jakku wae neon',\n", + " 'osi jagajyeotda tudeolgeoryeo',\n", + " 'tto tudeolgeoryeo (hey baby wae tto geurae)',\n", + " 'hangsang wae neon',\n", + " 'jakku sari jjyeotda tudeolgeoryeo (neomu yeppeunde nae nuneneun hangsang you are the prettiest girl)',\n", + " 'niga eotteon oseul ibeodo',\n", + " 'naegen hangsang beautiful',\n", + " '(baby let me do wanna-wanna do just let me do wanna-wanna do)',\n", + " 'sesang modeun geol da gajyeodo',\n", + " 'niga eobseumyeon an dwae my girl',\n", + " 'you‘re the only one for me yeah',\n", + " 'nan niga jeil joha',\n", + " 'niga jeil yeppeo',\n", + " 'jinaganeun got-got maeryeogi da heulleo',\n", + " 'niga jeil joha',\n", + " 'neo hanamyeon dwae',\n", + " 'gaseume saegyeo dwo',\n", + " 'niga sesangeseo jeil sojunghae',\n", + " 'every time i like you',\n", + " 'woah , woah oh my love for you',\n", + " 'neobakken eobseo nan',\n", + " 'i belong with you',\n", + " 'woah , woah crazy love for you',\n", + " 'neobakken eobseo nan',\n", + " 'gilgeorireul georeul ttae',\n", + " 'neol boneun namjadeurui',\n", + " 'siseoni neukkyeojine',\n", + " 'geotneun moseupjocha neomuna yeppeun geol',\n", + " 'happiness',\n", + " \"is what i feel now (now i'm gonna kiss you now i just wanna kiss you now)\",\n", + " 'dareun nuga naege ondaedo',\n", + " 'chyeodabojido anha my love',\n", + " '(baby let me do wanna, wanna do just let me do wanna, wanna do)',\n", + " 'sesang modeun geol da jundaedo',\n", + " 'neo hanamyeon chungbunhae my love',\n", + " 'you‘re the only one for me yeah',\n", + " 'nan niga jeil joha',\n", + " 'niga jeil yeppeo',\n", + " 'jinaganeun got-got maeryeogi da heulleo',\n", + " 'niga jeil joha',\n", + " 'neo hanamyeon dwae',\n", + " 'gaseume saegyeo dwo',\n", + " 'niga sesangeseo jeil sojunghae',\n", + " 'geunyang idaero',\n", + " 'isseojumyeon dwae yeah',\n", + " 'ireoke areumdaun neoinde',\n", + " \"you gotta know that you're the prettiest for me\",\n", + " 'niga jeil joha nan niga jeil yeppeo, yeah',\n", + " 'mareun chehyeonge jom jageun ki jogeuman eolgure budeureoun meoritgyeol',\n", + " 'neol gatgo sipeo tto ango sipeo everywhere neol yeope dugo sipeo',\n", + " 'eoneu nuga neol yokhaedo areumdaume ttareun daegail ppun',\n", + " 'geureon geon singyeongsseul pillyo eobtji',\n", + " 'you and i just fall in love all night long',\n", + " 'nan niga jeil joha',\n", + " 'niga jeil yeppeo',\n", + " 'jinaganeun got-got maeryeogi da heulleo',\n", + " 'niga jeil joha',\n", + " 'neo hanamyeon dwae',\n", + " 'gaseume saegyeo dwo',\n", + " 'niga sesangeseo jeil sojunghae',\n", + " 'every time i like you',\n", + " 'woah , woah oh my love for you',\n", + " 'neobakken eobseo nan',\n", + " 'i belong with you',\n", + " 'woah , woah crazy love for you',\n", + " 'neobakken eobseo nan',\n", + " 'o neul bahm na reul chaj ah wah (chaj ah ga huh)',\n", + " 'na jo chah mohl rae da ga wah (mohl rae da ga wah jool rae?)',\n", + " 'chah de chan son kil ha na ro (you feel it?)',\n", + " 'nae mahm eul shwip gae ga jyuh ga',\n", + " '* boo dee ruh gae won hae jo shim seu ruh gae',\n", + " 'nae gae ppa jyuh deel kil won hae na ei soom kyul ae',\n", + " 'ee soon ga neul eej ji ahn gae ja yun seu ruh gae',\n", + " 'na ei noo neul gam kil won hae',\n", + " 'nuh reul mid neun ma eum ae',\n", + " '** nae moh deen gul ga jihl soo ees do rohk',\n", + " '(nae peum ae maht gyuh nuhl shwip gae ga jihl gae)',\n", + " 'ni peum ahn ae maht kil soo ees do rohk',\n", + " '(ah chim ae hahm kkeh noon teu go shi peun dae)',\n", + " 'nae il ah chim ae noon teul soo ees do rohk',\n", + " 'bahm sae nal ji yuh jwuh ah nah jwuh',\n", + " '(tell me something version 2 uh)',\n", + " 'nae il bahm nae gae chaj ah wah (okay right!)',\n", + " 'na jo chah mohl rae da ga wah (come you baby)',\n", + " \"uh jae reul eej ji moht ha go (i'm the man, gurl)\",\n", + " 'ddo da shi na reul ga jyuh ga',\n", + " '* repeat',\n", + " '** repeat',\n", + " '(ah moo saeng gak ha ji ma) geu ruhn mal',\n", + " '(ha ji ma ha ji ma) oh woo baby)',\n", + " '(seul peum bo da) jjal ah do (uh doom eul) ji na do',\n", + " '(neu kkim eul) nam gyuh ji neun guhs',\n", + " '(ah moo saeng gak ha ji ma) ha jin ma',\n", + " '(ni mahm eul) ni mahm eul',\n", + " '(jeul gyuh bwah) oh woo baby (uhn jae la do )',\n", + " 'ji roo hahn sarang bo da neun soon ga neul jeul ki kil won hae baby!',\n", + " 'rap.) oo ri suh ro ki seul won hae doo geun guh ri',\n", + " 'neun mahm ae guh chil gae swi neun nae ho heu bae',\n", + " 'juhn hae ji neun nuh ei bal gan chae chwi ae chwi hae',\n", + " 'jum jum da ga o neun uh doom sohk ae hahm kkeh hal ddae',\n", + " 'nae mahm ae dduh o reun tae yang kat ee bal guh',\n", + " 'you remind me of my dream',\n", + " 'mid ki ji ahn uh nuhl no chi go do ship ji ah nah',\n", + " 'my shorty gurl byul beet ae na neun o neul bahm',\n", + " 'i rock your world!',\n", + " 'ni son kil eul won hae',\n", + " 'jo shim seu ruh gae',\n", + " 'na reul yuhl uh joo kil won hae',\n", + " 'nuh ei soom kyul ae ee neu kkim eul eej ji ahn gae',\n", + " 'ja yun seu ruh gae nuh ei noo neul gam kil won hae',\n", + " 'na reul mid neun ma eum ae',\n", + " '* repeat',\n", + " 'nae moh deen gul ga jihl soo ees do rohk',\n", + " '(nae peum ae maht gyuh nuhl shwip gae ga jihl gae)',\n", + " 'ni peum ahn ae maht kil soo ees do rohk',\n", + " '(ah chim ae hahm kkeh noon teu go shi peun dae)',\n", + " 'nae ah chim ae noon teul soo ees do rohk (nuhl ji kil gae)',\n", + " 'bahm sae nal ji yuh jwuh (nae gae ahn kil rae) ah nah jwuh',\n", + " \"rap.) baby gurl it's 4 am\",\n", + " 'nuh jahm deel uht suh?',\n", + " 'ee jae nae mahm ae young won hee',\n", + " 'nam ah jool rae geu rae geu luh kae hal rae',\n", + " 'bili nhangu yalyuwan, ŋayim',\n", + " 'munhaguyina nhangu ŋarruŋa nhäwu',\n", + " 'yay yā. yay yä marwurrumburr',\n", + " 'waripum nhan ŋarru m.m. ŋalthun bāmbaṯḻi milkirilim gurruwurruḻi',\n", + " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr',\n", + " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr m.m',\n", + " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr',\n", + " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr',\n", + " 'ḏit ḏirri rriri. ḏit ḏirri rriri ḏit ḏirri rriri. ḏit ḏirri rriri',\n", + " 'buŋganma nhan dhaŋu maykulŋuwu. (wititj)',\n", + " 'waripum bhan dhaŋu buŋgan djarrpiyanawu',\n", + " 'binininyala yay yä ya. yay yä yi marwurrumburr',\n", + " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr',\n", + " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr',\n", + " 'now it has cooled, the country',\n", + " 'his night has come for',\n", + " 'ya, ya, ya, the cat',\n", + " 'also he will, climg into funeral shelter',\n", + " 'the cat will travel, the cat will travel',\n", + " 'the cat will travel, the cat will travel',\n", + " 'the cat will travel, the cat will travel',\n", + " 'the cat will travel, the cat will travel',\n", + " 'ḏit ḏirri rriri. ḏit ḏirri rriri ḏit ḏirri rriri. ḏit ḏirri rriri',\n", + " 'the scent of the smelt by wititj',\n", + " 'the scent of the smelt by wititj',\n", + " 'bininyala ya, ya the cat',\n", + " 'the cat will travel, the cat will travel',\n", + " 'the cat will travel, the cat will travel',\n", + " 'ahhhhhhhhnnnn ahhhhnnn ahhhhnn aeyyy',\n", + " 'sonke sai thandi imali',\n", + " 'sonke sai thandi imali',\n", + " 'sonke sai thandi imali',\n", + " 'sonke sai thandi imali',\n", + " 'thandi mali',\n", + " 'thandi mali',\n", + " 'thandi mali',\n", + " 'thandi mali',\n", + " 'all my le le le le le ladies',\n", + " 'let me see you wine up your waist',\n", + " 'if you want my money you must shake your body',\n", + " 'baby girl you dey make me dey craze',\n", + " 'all my le le le le le ladies',\n", + " 'let me see you wine up your waist',\n", + " 'if you want my money you must shake your body',\n", + " 'baby girl you dey make me dey craze',\n", + " 'oga tsenya chelete otla bona',\n", + " 'tsenya chelete otla bona',\n", + " 'oga tsenya chelete otla bona',\n", + " 'tsenya chelete otla bona',\n", + " 'eko nimo tiwa toba sope olejo',\n", + " 'okoto meji lopade sodemo pao jisoro',\n", + " 'nina ahhn come chop money now',\n", + " 'dance like a ballerina',\n", + " 'come hey make i buy you visa owey',\n", + " 'kinni omo oginni, oginni',\n", + " 'i go buy you lamborghini',\n", + " 'come party baby girl what you drinking',\n", + " 'konko jabele kaluku lomi she tie o.b.o',\n", + " 'all my le le le le le ladies',\n", + " 'let me see you wine up your waist',\n", + " 'if you want my money you must shake your body',\n", + " 'baby girl you dey make me dey craze',\n", + " 'all my le le le le le ladies',\n", + " 'let me see you wine up your waist',\n", + " 'if you want my money you must shake your body',\n", + " 'baby girl you dey make me dey crase',\n", + " 'oga tsenya chelete otla bona',\n", + " 'tsenya chelete otla bona',\n", + " 'oga tsenya chelete otla bona',\n", + " 'tsenya chelete otla bona',\n", + " 'sonke sai thandi imali',\n", + " 'sonke sai thandi imali',\n", + " 'sonke sai thandi imali',\n", + " 'sonke sai thandi imali',\n", + " 'thandi mali',\n", + " 'thandi mali',\n", + " 'thandi mali',\n", + " 'thandi mali',\n", + " 'things that people do for money',\n", + " 'things that people do for money',\n", + " 'inkomo mai chincha',\n", + " 'kamane oshabe jam kabomrotho',\n", + " 'mao ndoro ose shebe khule',\n", + " 'agisabi mali ye hehe hehe',\n", + " 'you have to know how to treat a lady',\n", + " 'if you know how to treat a lady',\n", + " 'ngisabi mali ye hehe hehe',\n", + " 'ngisabi mali ye hehe hehe',\n", + " 'all my le le le le le ladies',\n", + " 'let me see you wine up your waist',\n", + " 'if you want my money you must shake your body',\n", + " 'baby girl you dey make me dey craze',\n", + " 'all my le le le le le ladies',\n", + " 'let me see you wine up your waist',\n", + " 'if you want my money you must shake your body',\n", + " 'baby girl you dey make me dey craze',\n", + " 'oga tsenya chelete otla bona',\n", + " 'tsenya chelete otla bona',\n", + " 'le le tsenya chelete otla bona',\n", + " 'le le tsenya chelete otla bona',\n", + " 'oga tsenya chelete otla bona',\n", + " 'tsenya chelete otla bona',\n", + " 'le le tsenya chelete otla bona',\n", + " 'le le tsenya chelete otla bona',\n", + " 'luvha dume',\n", + " 'duhara menua lusi',\n", + " 'luvha lue',\n", + " 'telame fteli musui ha',\n", + " 'luvha lume',\n", + " 'duhamaf tiseha hesi',\n", + " 'luvha due',\n", + " 'duayi ale musui halu',\n", + " 'duarumani kurigame naque na e a woejou lapagirenu zoe',\n", + " 'duarumani durigame naque na e a echo koici',\n", + " 'echo songu melavi',\n", + " 'hey listen mr. boy',\n", + " 'jallan cheok haneun ipsullo',\n", + " 'ijeneun sok gipeun sarangeul malhae',\n", + " 'come on like a man',\n", + " 'jarangman gadeukhan nalmada',\n", + " 'ttabunhan miraega adeukhan',\n", + " 'sonyeondeuriyeo',\n", + " 'gaseumi ttatteutan saenggagi',\n", + " 'bandeutan jogeumeun',\n", + " 'chabunhan namjaga dwaejwo',\n", + " 'ibunicho bappeuge sigyechimeun',\n", + " 'sum gappeuge doneunde',\n", + " 'wae neul jejari jump jump',\n", + " 'jajonsimeun no jasingameuro',\n", + " 'mugeoun keun sancheoreom jaranajwo',\n", + " 'hey listen mr. boy',\n", + " 'jallan cheok haneun ipsullo',\n", + " 'ijeneun sok gipeun sarangeul malhae',\n", + " 'come on like a man',\n", + " 'hey get up mr. big',\n", + " 'huljjeok neorbeojin eokkaero',\n", + " 'jugeodo jikyeojul yeojareul angil',\n", + " 'you know real man',\n", + " 'namjaui du nuni sesangeul samkil deut',\n", + " 'bitnamyeon neomuna meotjige boyeo',\n", + " 'namjaui ssaumeun him anin',\n", + " 'huimangi keojil ttae',\n", + " 'eonjena seungniga boyeo',\n", + " 'hey listen mr boy',\n", + " 'ganghancheok hadeon yonggiro',\n", + " 'wonhaneun sowoneul hyanghae neol deonjyeo',\n", + " 'burning running man',\n", + " 'hey get up mr big',\n", + " 'sesangeul gajin mameuro',\n", + " 'saeropge taeeona',\n", + " \"i'm waiting for you\",\n", + " \"let's go mr big\",\n", + " 'hey listen mr boy',\n", + " 'hey listen mr boy',\n", + " 'hey listen mr boy',\n", + " 'jallancheok haneun ipsullo',\n", + " 'ijeneun sok gipeun sarangeul malhae',\n", + " 'come on like a man',\n", + " 'hey get up mr. big',\n", + " 'huljjeok neorbeojin eokkaero',\n", + " 'jugeodo jikyeojul yeojareul angil',\n", + " 'your know real man',\n", + " 'madjozi',\n", + " 'limpopo champions league',\n", + " 'iyoh',\n", + " 'swo nita byela hiwena',\n", + " 'mina himpela, sweswo ndzinge swikoti',\n", + " 'swo nita teka my cash, ndzi nyika a man, sweswo ndzi nge swikoti',\n", + " 'swo ndzita tshama ndzilo whii! milo ndzi nwii! sweswo ndzinge swikoti',\n", + " \"swo he'll be cheating on me, ndzi nga nwi tshiki, sweswo ndzinge swikoti\",\n", + " 'i’m probably the best dressed in any room',\n", + " 'and i bet that i look like money too',\n", + " \"lava vange i'm humble hiku mbala xibhelana, voka vangaswi tivi ku i mali muni\",\n", + " \"2 point 5 xibhelan' xay’ one\",\n", + " 'mina swo boha ndzi xava swa 2',\n", + " 'futhi swa mina, they custom made',\n", + " \"so don't come to me telling me other names\",\n", + " 'givenchy or gucci, mina andzi ti hluphi',\n", + " 'ndzi boha tinguvu like everyday',\n", + " 'limpopo champions league, hitlanga ku fana na mbappe',\n", + " 'limpopo champions league, hi tlanga ku fana na yeh',\n", + " 'limpopo champions league, hitlanga ku fana na mbappe',\n", + " 'limpopo champions league, hi tlanga ku fana na yeh',\n", + " 'hina ha mbobo, hina, hina ha mbomba',\n", + " 'hina ha mbobo, hina, hina ha mbomba',\n", + " 'hina ha mbobo, hina, hina ha mbomba',\n", + " 'hina ha mbobo, hina, hina ha mbomba',\n", + " 'interlude',\n", + " 'ndzi suka ndzi famba, ndzi songa the bed',\n", + " 'swona ndzi lo mama xitsonga the best',\n", + " 'ndzi dakwa ndzi lanwa, ndzi longa the rest',\n", + " \"vanhu lava van' lava, they don't got the bread\",\n", + " \"and they don't got the head\",\n", + " 'i might just go harder than water-cement',\n", + " \"andzi nge va heti, there's too many men\",\n", + " \"andzi va rileli, i'm too very ?\",\n", + " \"lava vangani lahla, i'm sure they regret\",\n", + " 'va tshama va kwata, they’re so very mad',\n", + " 'think you can catch me like ?, forget',\n", + " 'wo saka, timhaka go over your head',\n", + " 'madjozi is doing the things like motsipa* that makes the dipitsa and pots to be done',\n", + " 'might go on a cruise with the booze and a litre',\n", + " 'hake rate kgo missa, i’m kevin durant',\n", + " 'might go and gig on a run',\n", + " \"don't ask ku ndzi fikile man\",\n", + " \"i’m in it, i'm the son of a gun\",\n", + " \"i came here by force and i'll leave when i want\",\n", + " 'limpopo champions league, hitlanga ku fana na mbappe',\n", + " 'limpopo champions league, hi tlanga ku fana na yeh',\n", + " 'limpopo champions league, hitlanga ku fana na mbappe',\n", + " 'limpopo champions league, hi tlanga ku fana na yeh',\n", + " 'hina ha mbobo, hina, hina ha mbomba',\n", + " 'hina ha mbobo, hina, hina ha mbomba',\n", + " 'hina ha mbobo, hina, hina ha mbomba',\n", + " 'hina ha mbobo, hina, hina ha mbomba',\n", + " 'i came here from limpopo',\n", + " 'i came here for the solo',\n", + " 'i came here on the n1, might ? on the same one',\n", + " 'better get me airplay now, getting used to the fame now',\n", + " \"if it ain't work, i don’t wanna know, boy\",\n", + " \"if it ain't worth it, i don't wanna go\",\n", + " 'romanized',\n", + " 'we’re just dancing on the floor',\n", + " 'neoege jakku ppajyeodeuneun geol',\n", + " 'we’re just dancing in the rain',\n", + " 'neoreul cheom bon geu sungane',\n", + " 'nae simjang soge tteugeoun heartbeat',\n", + " 'oneulbam naege dagawa',\n", + " 'duriseo hamkke i bami saedorok',\n", + " 'jomyeonge jeojeodeuneun town town town town',\n", + " 'naegero dagaoneun neo neo neo neo',\n", + " 'jageun ipsul chokchogi jeojeun meoritgyeol',\n", + " 'i’m falling in love',\n", + " 'we’re just dancing on the floor',\n", + " 'neoege jakku ppajyeodeuneun geol',\n", + " 'we’re just dancing in the rain',\n", + " 'nal baraboneun nunbichi neomu tteugeowo',\n", + " 'already i’m ready',\n", + " 'you’re very tipsy baby',\n", + " 'neodo nal wonhago itjanha',\n", + " 'already i’m ready',\n", + " 'you’re very sexy baby',\n", + " 'nal ireukyeo jwo nal saranghae jwo tonight',\n", + " 'oh oh oh oh oh oh oh oh oh oh oh oh',\n", + " 'nal barabwa naege angyeobwa',\n", + " 'oneulmaneun amu geokjeonghaji ma',\n", + " 'oh kiss me baby',\n", + " 'give me your love',\n", + " 'rideume neoreul matgyeo will be alright',\n", + " 'jomyeonge jeojeodeuneun town town town town',\n", + " 'naegero dagaoneun neo neo neo neo',\n", + " 'jageun ipsul chokchogi jeojeun meoritgyeol',\n", + " 'i’m falling in love',\n", + " 'we’re just dancing on the floor',\n", + " 'neoege jakku ppajyeodeuneun geol',\n", + " 'we’re just dancing in the rain',\n", + " 'nal baraboneun nunbichi neomu tteugeowo',\n", + " 'already i’m ready',\n", + " 'you’re very tipsy baby',\n", + " 'neodo nal wonhago itjanha',\n", + " 'already i’m ready',\n", + " 'you’re very sexy baby',\n", + " 'nal ireukyeo jwo nal saranghae jwo tonight',\n", + " 'oh oh oh',\n", + " 'i’m still around',\n", + " 'oh oh oh',\n", + " 'we’re making out',\n", + " 'oh oh oh',\n", + " 'i’m still around',\n", + " 'oh oh oh',\n", + " 'eonjedeun ni juwien',\n", + " 'naega isseo dagawa nunchi boji mayo',\n", + " 'neukdaedeurui saieseo jikyeojul teni',\n", + " 'eoseo iriwayo',\n", + " 'neon meoributeo balkkeutkkaji',\n", + " 'bichina urin han kkeut chai',\n", + " 'oneulbameun jeoldae nae pumeseo tteoreojiji ma',\n", + " 'nal ireukyeo jwo nal saranghae jwo tonight',\n", + " 'oh oh oh',\n", + " 'i’m still around',\n", + " 'oh oh oh',\n", + " 'let’s go party',\n", + " 'oh oh oh',\n", + " 'i’m still around',\n", + " 'oh oh oh',\n", + " 'let’s go party',\n", + " 'already i’m ready',\n", + " 'you’re very tipsy baby',\n", + " 'neodo nal wonhago itjanha',\n", + " 'already i’m ready',\n", + " 'you’re very sexy baby',\n", + " 'nal saranghae jwo tonight',\n", + " 'au fond',\n", + " 'at rock bottom',\n", + " 'tenidagh hegh djeredjere',\n", + " 'afudan man saswatahi',\n", + " 'dihad ensegh hegh tenere',\n", + " 'djegh inezdjam ayyetahi',\n", + " 'ibas tilla timidiwa',\n", + " 'ibas tilla tittirewa',\n", + " 'ibas tilla er adutten',\n", + " 's-aba el ghahid n duniya',\n", + " 'edjod enwat essin esghan',\n", + " 'nella djer thunt d assin djerwan',\n", + " 'taqalahi tekma asiman',\n", + " 'hidadjan ammas n man',\n", + " 'shadidj yallah idagh hilan',\n", + " 'aghrer y allah idagh hilan',\n", + " 'idja tarha ashadidjan',\n", + " 'siyedd ghorsan tegla sufar',\n", + " 'hantat karras d efadd n idem',\n", + " \"we gon' get it by any means, baby, fuck the law\",\n", + " 'fuck the law',\n", + " 'fuck the law',\n", + " 'fuck the law',\n", + " 'fuck the law',\n", + " \"we gon' get it by any means, baby, fuck the law\",\n", + " \"we gon' get it\",\n", + " \"we gon' get it\",\n", + " \"we gon' get it by any means, baby, fuck the law\",\n", + " \"we gon' get it by any means, baby, fuck the law\",\n", + " \"we gon' get it by any means, by any means, by any means\",\n", + " \"we gon' get it by any means, baby, fuck the law\",\n", + " 'fuck the law',\n", + " 'fuck the law',\n", + " \"we gon' get it\",\n", + " \"we gon' get it (fuck the law)\",\n", + " \"we gon' get it by any means, baby, fuck the law\",\n", + " \"we gon' get it by any means, baby, fuck the law\",\n", + " \"we gon' get it by any means, by any means, by any means\",\n", + " 'baby, fuck the law',\n", + " \"we gon' get it by any means, baby, fuck the law\",\n", + " 'stay nae noon mool ri ma reul ddae gga ji',\n", + " 'stay nae ga na reul moh reul ddae gga ji',\n", + " 'stay ah joo cho geum man ki da ryeo',\n", + " 'stay nae gi yok eui joo in eun na ya',\n", + " 'stay nae ga neol poh nae jool ddae gga ji',\n", + " 'stay nae gi yok sok geh seo ra doh',\n", + " '*chorus*',\n", + " 'cho geum eui (cho geum eui) dda deut ham (dda deut ham) ee ra doh (ee ra doh)',\n", + " 'kan jik hal soo it geh hae chweo',\n", + " 'nan ee mi eol reo beo ril deut han eop shi cha ga weo',\n", + " 'neo ma jeo (neo ma jeo) ddeo na myon (ddeo na myon) na eh gehn (na eh gen)',\n", + " 'ee jeh ah reum ta oom mi eop seo',\n", + " 'nan ee mi beo ryeo jyo it go han eop shi deo reo weohey ee mi gwae oh raen shi gan dong ahn',\n", + " 'nae ahn neh meo mool reo it seot chan nah',\n", + " 'ee jeh keu nyang chip ee ra go saeng gak hae',\n", + " '* repeat',\n", + " 'stay inside my dear',\n", + " \"don't you come out my dear\",\n", + " '* repeat',\n", + " 'stay my dear',\n", + " 'stay my dear',\n", + " '谁把谁的灵魂 装进谁的身体?',\n", + " '谁把谁的身体',\n", + " '变成囹圄囚禁自己',\n", + " '乱世总是最 不缺耳语',\n", + " '哪种美丽会唤来妒忌',\n", + " '你并没有罪 有罪是这世界',\n", + " '生而为人无罪',\n", + " '你不需要抱歉',\n", + " 'one day i will be you baby boy, and you gon’be me',\n", + " '喧哗如果不停',\n", + " '让我陪你安静',\n", + " 'i wish i could hug you, till you’re really really being free',\n", + " '哪朵玫瑰 没有荆棘?',\n", + " '最好的 报复是 美丽',\n", + " '最美的 盛开是 反击',\n", + " '别让谁去 改变了你',\n", + " '你是你 或是妳 都行',\n", + " '会有人 全心的 爱你',\n", + " '试着想像 you switched to his body',\n", + " 'sexuality 当心 什么会伤你',\n", + " '多少次的重伤 多少次的冷语',\n", + " 'drowning 谁会拉你',\n", + " 'dreaming 谁会陪你',\n", + " 'same shit happens every day',\n", + " '你离开后 世界可改变?',\n", + " '多少无知罪愆 事过不境迁',\n", + " '永志不忘记念 往事不如烟',\n", + " '生而为人无罪',\n", + " '你不需要抱歉',\n", + " 'one day i will be you baby boy, and you gon’be me',\n", + " '喧哗如果不停',\n", + " '让我陪你安静',\n", + " 'i wish i could hug you, till you’re really really being free',\n", + " '哪朵玫瑰 没有荆棘?',\n", + " '最好的 报复是 美丽',\n", + " '最美的 盛开是 反击',\n", + " '别让谁去 改变了你',\n", + " '你是你 或是妳 都行',\n", + " '会有人 全心的 爱你',\n", + " '玫瑰少年 在我心里',\n", + " '绽放着 鲜艳的 传奇',\n", + " '我们都 从来没 忘记',\n", + " '你的控诉 没有声音',\n", + " '却倾诉 更多的 真理',\n", + " '却唤醒 无数的 真心',\n", + " 'pinyin',\n", + " 'shéi bǎ shéi de línghún zhuāng jìn shéi de shēntǐ?',\n", + " 'shéi bǎ shéi de shēntǐ',\n", + " 'biàn chéng língyǔ qiújìn zìjǐ',\n", + " 'luànshì zǒng shì zuì bù quē ěryǔ',\n", + " 'nǎ zhǒng měilì huì huàn lái dùjì',\n", + " 'nǐ bìng méiyǒuzuì yǒu zuì shì zhè shìjiè',\n", + " 'shēng ér wéirén wú zuì',\n", + " 'nǐ bù xūyào bàoqiàn',\n", + " 'one day i will be you baby boy, and you gon’be me',\n", + " 'xuānhuá rúguǒ bù tíng',\n", + " 'ràng wǒ péi nǐ ānjìng',\n", + " 'i wish i could hug you, till you’re really really being free',\n", + " 'nǎ duǒ méiguī méiyǒu jīngjí?',\n", + " 'zuì hǎo de bàofù shì měilì',\n", + " 'zuìměi de shèngkāi shì fǎnjí',\n", + " 'bié ràng shéi qù gǎibiànle nǐ',\n", + " 'nǐ shì nǐ huò shì nǎi dōu xíng',\n", + " 'huì yǒurén quán xīn de ài nǐ',\n", + " 'shì zhuó xiǎngxiàng you switched to his body',\n", + " 'sexuality dāngxīn shénme huì shāng nǐ',\n", + " 'duōshǎo cì de zhòngshāng duōshǎo cì de lěng yǔ',\n", + " 'drowning shéi huì lā nǐ',\n", + " 'dreaming shéi huì péi nǐ',\n", + " 'same shit happens every day',\n", + " 'nǐ líkāi hòu shìjiè kě gǎibiàn?',\n", + " 'duō shào wúzhī zuìqiān shìguò bu jìng qiān',\n", + " 'yǒngzhì bù wàngjì niàn wǎngshì bùrú yān',\n", + " 'shēng ér wéirén wú zuì',\n", + " 'nǐ bù xūyào bàoqiàn',\n", + " 'one day i will be you baby boy, and you gon’be me',\n", + " 'xuānhuá rúguǒ bù tíng',\n", + " 'ràng wǒ péi nǐ ānjìng',\n", + " 'i wish i could hug you, till you’re really really being free',\n", + " 'nǎ duǒ méiguī méiyǒu jīngjí?',\n", + " 'zuì hǎo de bàofù shì měilì',\n", + " 'zuìměi de shèngkāi shì fǎnjí',\n", + " 'bié ràng shéi qù gǎibiànle nǐ',\n", + " 'nǐ shì nǐ huò shì nǎi dōu xíng',\n", + " 'huì yǒurén quán xīn de ài nǐ',\n", + " 'méiguī shàonián zài wǒ xīnlǐ',\n", + " 'zhànfàngzhe xiānyàn de chuánqí',\n", + " 'wǒmen dōu cónglái méi wàngjì',\n", + " 'nǐ de kòngsù méiyǒu shēngyīn',\n", + " 'què qīngsù gèng duō de zhēnlǐ',\n", + " 'què huànxǐng wú shǔ de zhēnxīn',\n", + " 'break algot gateunde',\n", + " \"i'm break ijen algot gateunde\",\n", + " \"yeah it's not a love story not a love story\",\n", + " 'girl, you making me cry',\n", + " 'igon anijana',\n", + " 'dur-e munjega anijana',\n", + " 'sesaram dwe borin yegi',\n", + " 'jogangnan yegi',\n", + " 'nega dorophin uri yegi',\n", + " 'nareul (nareul) butjapgoso (butjapgoso) yogikkaji wasso wae (wae)',\n", + " 'naman-e saraminchok',\n", + " 'haneunmaldeul modu gojisin-gol (gojisin-gol)',\n", + " 'nemameul mitgo sipojyo (no)',\n", + " 'gojitmalmajo (no) tto babochorom',\n", + " 'nol mitgosipo nan',\n", + " 'itorok janinhan (no) noye gojitmal (no)',\n", + " 'girl, how could you give your heart for two',\n", + " 'cry, cry, making me cry',\n", + " \"girl, you're making me cry\",\n", + " 'break it, break it, breaking my heart',\n", + " 'michilgotman gata',\n", + " 'ne morineun algo gaseumeun sokgo',\n", + " 'girl, you really break the hearts of two',\n", + " 'yes!',\n", + " 'nal baraboneun nunbitjocha',\n", + " 'jonhyo mitgijiana',\n", + " 'bokcha geuredo nan noreuljjocha',\n", + " 'dodeche nesarangeun',\n", + " 'yo mebon sokji ogiga nal ikkeulji',\n", + " 'kkeuchi odiilji duryowo',\n", + " 'odiro gagoinni',\n", + " 'jongdabeun opji but',\n", + " \"i can't, i can't leave you\",\n", + " 'honja amuri senggakhedo',\n", + " 'ije nan ottokheya dwe',\n", + " 'nareul mirone kkeutneya haneunde (haneunde)',\n", + " 'i want (i want), to be with you (be with you)',\n", + " 'museun mari obso wae (wae)',\n", + " 'ijeuryo noryokhedo',\n", + " 'jiwobwado',\n", + " 'negyote memdoneun-gol',\n", + " 'nemameul mitgo sipojyo (no)',\n", + " 'gojitmalmajo (no) tto babochorom',\n", + " 'nol mitgosipo nan',\n", + " 'itorok janinhan (no) noye gojitmal (no)',\n", + " 'girl, how could you give your heart for two',\n", + " 'cry, cry, making me cry',\n", + " \"girl, you're making me cry\",\n", + " 'break it, break it, breaking my heart',\n", + " 'michilgotman gata',\n", + " 'ne morineun algo gaseumeun sokgo',\n", + " 'girl, you really break the hearts of two',\n", + " 'i can halsu isso nol boryoyamanhe nan',\n", + " \"i can't halsu obso\",\n", + " 'nol jabayamanhe nan',\n", + " 'andwe mideulge motdwe',\n", + " 'ani midoyamanhe nol',\n", + " 'ojirowo stop that nugul tat-he',\n", + " 'oso dedaphe girl',\n", + " 'niga da mangchyonwaborin urideul story',\n", + " 'mitjimothal iyagi',\n", + " \"it's no love story\",\n", + " 'nesoneuron jolde kkeutnejil mot-he',\n", + " 'girl, you really break the hearts of two',\n", + " 'nemameul mitgo sipojyo (no)',\n", + " 'gojitmalmajo (no) tto babochorom',\n", + " 'nol mitgosipo nan',\n", + " 'itorok janinhan (no) noye gojitmal (no)',\n", + " 'girl, how could you give your heart for two',\n", + " 'na kkeutkkaji uisimdwe nol jikilji',\n", + " 'naye gomin noye kkeuteun odilji',\n", + " 'mebon nan sokji ogiga ikkeulji',\n", + " \"it's not a love story not a love story\",\n", + " \"i'm heart sick, heal me, be crazy, can't let you go\",\n", + " \"sad love song, my love's gone, please baby, don't go far\",\n", + " 'so beast',\n", + " 'down, down, we gotta get down, down, down, we gotta get down',\n", + " 'down, down, we gotta get down, i want ya, come to me, girl',\n", + " 'down, down, we gotta get down, down, down, we gotta get down',\n", + " 'down, down, we gotta get down, i want ya, come to me, girl',\n", + " 'niga tteonan jarie seupeumi gadeukhae',\n", + " 'naman dugo tteona beorimyeon nan eotteokhae',\n", + " 'shigani jinagado ni eolguri jakku tteo olla',\n", + " 'meoriga binggeul binggeul doneunde',\n", + " 'eojega majimak kiss, neol jabji mothan nae miss',\n", + " 'modeunge kkumi gil please, nan geunyang babo baboga dwin geot gata',\n", + " 'sorichyeo sorichyeo bulleo butjapgo butjapgo shipeodo',\n", + " 'hey, hey, hey, girl dorawa jweo please, my hate girl',\n", + " 'amuri saeng gakhaedo maldo andwae, bad girl',\n", + " 'jakkuman ni saenggage michyeo michyeo, bad girl',\n", + " 'tteonaji mallago nege sorichyeodo',\n", + " 'dwi dora bojido anhneun, bad girl',\n", + " 'g-o-n-e niga tteonani jal gadeon shigyedo stop gwaenhi',\n", + " 'nae gwieseo deullineun like our story so sick',\n", + " 'hanttaeneun my, my lady niga eobseo ureo nan daily',\n", + " 'ajik ni jarineun biweo dulge girl c-o-m-e',\n", + " 'miweohan ji harumane geuriweojyeo',\n", + " 'ni saenggage nae eolguri nunmullo beonjyeo',\n", + " 'neol butjabeuryeo hamyeon neo ege daga galsurok deo',\n", + " 'naegeseo meolli meolli ganeunde',\n", + " 'dashi dolligin neomu nujeo borin geot gatae',\n", + " 'ni moksori ga naegeseo jakku meoreo jineunde',\n", + " 'sorichyeo sorichyeo bulleo butjapgo butjapgo shipeodo',\n", + " 'hey, hey, hey, girl, dorawa jweo please, my hate girl',\n", + " 'amuri saeng gakhaedo maldo andwae, bad girl',\n", + " 'jakkuman ni saenggage michyeo michyeo, bad girl',\n", + " 'tteonaji mallago nege sorichyeodo',\n", + " 'dwi dora bojido anhneun, bad girl',\n", + " 'yeotaekkeot niga haetdeon modeun mal',\n", + " 'hansungan modeun geda geojit mal',\n", + " 'ni mameul dwi dolliryeo halsurok',\n", + " 'naegeseo han georeumsshik meoreojyeo ganeun neo',\n", + " 'amuri saeng gakhaedo maldo andwae, bad girl',\n", + " 'jakkuman ni saenggage michyeo michyeo, bad girl',\n", + " 'tteonaji mallago nege sorichyeodo',\n", + " 'dwi dora bojido anhneun, bad girl',\n", + " 'down, down, we gotta get down, down, down, we gotta get down',\n", + " 'down, down, we gotta get down, na honjaman tto seulpeo hae... naege dorawajweo',\n", + " 'down, down, we gotta get down, down, down, we gotta get down',\n", + " 'down, down, we gotta get down, i want ya, come to me, girl',\n", + " '* everyday mainichi ga a new day tanoshikute',\n", + " \"when i'm with u (i feel so good)\",\n", + " 'baby, you make me feel so good',\n", + " 'kotoba hitotsu baby kakerareru dake de',\n", + " \"when i'm with u (i feel so good)\",\n", + " 'kimi ga ita kara donna ni tsurakutemo',\n", + " 'norikoerareta kara i wanna say thank u thank u',\n", + " 'fuan datta kara guchi koboshitari shita kedo',\n", + " 'soredemo sasaete kureteta honto ni thank u',\n", + " 'everyday donna hi mo a new day shiawase',\n", + " \"when i'm with u (i feel so good)\",\n", + " 'baby, you make me feel so good',\n", + " 'kotoba hitotsu baby kakerareru dake de',\n", + " \"when i'm with u (i feel so good)\",\n", + " 'ikidzumetta toki wa itsumo soba ni ite kureta',\n", + " 'imi tsumatta kotoba de oshiete kureta',\n", + " 'kimi no egao (thank u) kimi no nukumori (thank u)',\n", + " 'itsumo genki wo kurete thank u thank u',\n", + " 'to my family daisuki na hito ni mo',\n", + " 'shittete moraitai itsumo i love u & thank u',\n", + " '* repeat 2x',\n", + " 'omoide ja naku genzai shinkoukei',\n", + " 'tomo ni egaku ningen no ai shinpo de',\n", + " 'sugata mienakutemo aenakutemo',\n", + " 'kokoro ni man i have u every single day',\n", + " 'chikai shourai dekai shoutai de kamasu ze show time',\n", + " 'donna konnan mo norikoerareta cause yo luv',\n", + " 'migi ni thank u hidari ni thank u',\n", + " 'coast 2 coast everybody get up and shout thank u',\n", + " '* repeat...']},\n", + " 'data': ['ab queck zenick fesi',\n", + " 'zong jup col im in na hiz jal, ooh',\n", + " 'wow!',\n", + " 'wa toc peg qui dos gee pif, aah',\n", + " 'joc jarraz bas deg zorze zot',\n", + " 'jer wih tuster mo vey',\n", + " 'qui neb be og ezen on',\n", + " 'wok lapti nek seb not van',\n", + " 'goc jarraz bas deg zorze zot',\n", + " 'lapti nek, rat a ran wim joct co jappi qaff',\n", + " 'lapti nek, kiv ba ha top wep jex pi va bep',\n", + " 'lapti nek, rat a ran wim joct co jeppi qaff',\n", + " 'wow!',\n", + " 'ab queck zenick fesi',\n", + " 'jem wih tuster mo vey',\n", + " 'qui neb be og ezen on',\n", + " 'wok lapti nek seb not van',\n", + " 'wah toc peg qui doz gee pif ezact',\n", + " 'goc jarraz bas deg zorze zot',\n", + " 'lapti nek, rat a ran wim joct co jappi qoff',\n", + " 'lapti nek, kiv ba ha top wep jex pi va bep',\n", + " 'lapti nek, rat a ran wim joct co jappi qaff',\n", + " 'wow!',\n", + " 'deg zorze zot',\n", + " 'jem with tuster mo vey',\n", + " 'qui neb be og ezen on',\n", + " 'wok lapti nek seb not van',\n", + " 'goc jarraz bas deg zorze zot',\n", + " 'lapti nek, rat a ran wim joct co jappi qoff',\n", + " 'lapti nek, kiv ba ha top wep jex pi va bep',\n", + " 'lapti nek, rat a ran wim joct co jappi qaff',\n", + " 'deg zorze zot',\n", + " 'wow!',\n", + " 'lapti nek lapti nek',\n", + " 'lapti nek lapti nek',\n", + " 'lapti nek lapti nek',\n", + " 'wow!',\n", + " 'lapti nek lapti nek',\n", + " 'lapti nek lapti nek',\n", + " 'lapti nek lapti nek',\n", + " 'wow!',\n", + " \"let's go\",\n", + " 'beautiful girl baby beautiful girl lady',\n", + " \"you're my baby baby baby\",\n", + " 'negen nomu wanbyokhe',\n", + " 'beautiful girl baby beautiful girl lady',\n", + " \"you're my lady lady lady\",\n", + " 'ojing-nomaneul wihan i nore',\n", + " 'sarangiran gol mollasso',\n", + " 'geujo chin-guroman niga joasso',\n", + " 'namnyosairo deumulge',\n", + " 'soro joheun chin-guyotjana',\n", + " 'chin-gudeuri nege murosso',\n", + " 'ohwiduri duri amusai aninyago',\n", + " 'joldeanirago egilhejwobwado',\n", + " 'ohehajana o jongmal',\n", + " 'nado ne mam moreuge',\n", + " 'niga jakku yeppo boine',\n", + " 'irom an dweneunde jongsincharyoyahe',\n", + " 'kkumsogeso kkeona bojiman',\n", + " 'niga nege miso jieul tte',\n", + " 'naneun nege ppajyoborine',\n", + " \"you're my little angel\",\n", + " 'ne mameul ottokhe',\n", + " 'beautiful girl baby beautiful girl lady',\n", + " \"you're my baby baby baby\",\n", + " 'negen nomu wanbyokhe',\n", + " 'beautiful girl baby beautiful girl lady',\n", + " \"you're my lady lady lady\",\n", + " 'ojing-nomaneul wihan i nore',\n", + " 'soro nunbitman bwado mwol hagopeunji',\n", + " 'aneun nowa',\n", + " 'geurigo sipeun uri dulman-e',\n", + " 'areumdaun donghwa',\n", + " 'namnyosaireul ttwionomgoso',\n", + " 'saranghal su isseulkka',\n", + " 'dugeundugeun gorineun',\n", + " 'jeobulganeung ne simjang',\n", + " 'hamkke isseumyon mwor-hadeunji',\n", + " 'nomunado joa',\n", + " 'dugeun-gorimeul deulkiji anko',\n", + " 'gyote isseul su isseulkka',\n", + " 'nado nemam moreuge',\n", + " 'niga jakku yeppo boine',\n", + " 'irom an dweneunde jongsincharyoyahe',\n", + " 'kkumsogeso kkeona bojiman',\n", + " 'niga nege miso jieul tte',\n", + " 'naneun nege ppajyoborine',\n", + " \"you're my little angel\",\n", + " 'ne mameul ottokhe',\n", + " 'beautiful girl baby beautiful girl lady',\n", + " \"you're my baby baby baby\",\n", + " 'negen nomu wanbyokhe',\n", + " 'beautiful girl baby beautiful girl lady',\n", + " \"you're my lady lady lady\",\n", + " 'ojing-nomaneul wihan i nore',\n", + " 'ne mam ani ( ne mameul alkka)',\n", + " 'ne mam ani ( ne mam aneunji)',\n", + " 'ne mam ani',\n", + " 'ne mameul aneunji moreugo inneunji',\n", + " 'ne mam ani ( ne mameul aneunji)',\n", + " 'ne mam ani ( ne mam aneunji)',\n", + " 'ne mam ani oh girl',\n", + " 'yotekkot mangsoryotdon ne gobek',\n", + " 'hoksina chin-gul ilneun ge anilkka gonwe',\n", + " 'gomin-e kkorireul mulgo neurojyo',\n", + " 'meil bameul bone',\n", + " 'tteugoun teyangmani nal wirohe',\n", + " 'oh men',\n", + " 'yonggillegil namjadapge',\n", + " 'geunyolgajigo sipdamyon',\n", + " 'ijeneun mamdajapge',\n", + " 'ni gaseumsok gipsukhi mudodwotdon mareul',\n", + " 'malhe cupid-ye hwasareul nallyo',\n", + " 'sarangeul hyanghe bureuneun nore',\n", + " 'beautiful girl baby beautiful girl lady',\n", + " 'beautiful girl baby beautiful girl lady',\n", + " \"you're my lady lady lady\",\n", + " 'ojing-nomaneul wihan i nore',\n", + " '(ohhh!)',\n", + " 'bassline',\n", + " 'bassline',\n", + " 'bassline',\n", + " \"bassline kickin'\",\n", + " 'bassline',\n", + " 'bassline',\n", + " '(bassline)',\n", + " \"bassline kickin'\",\n", + " 'bassline',\n", + " 'bassline',\n", + " 'bassline',\n", + " \"bassline kickin'\",\n", + " 'bassline',\n", + " 'bassline',\n", + " 'b-b-b-b-bassline',\n", + " \"bassline kickin', yes i'm groovin'\",\n", + " \"(bassline kickin')\",\n", + " 'bassline',\n", + " 'bassline',\n", + " 'bassline',\n", + " \"bassline kickin'\",\n", + " 'bassline',\n", + " 'bassline',\n", + " \"bassline kickin', yes i'm groovin'\",\n", + " 'bassline',\n", + " 'bassline',\n", + " 'bassline',\n", + " \"bassline kickin'\",\n", + " 'bassline',\n", + " 'bassline',\n", + " 'bassline',\n", + " \"bassline kickin'\",\n", + " \"bassline kickin'\",\n", + " \"bassline kickin'\",\n", + " \"bassline kickin'\",\n", + " \"bassline kickin'\",\n", + " \"bassline kickin'\",\n", + " \"bassline kickin'\",\n", + " \"bassline kickin'\",\n", + " \"bassline kickin', yes i'm groovin'\",\n", + " \"bassline kickin', yes i'm groovin'\",\n", + " \"bassline kickin'\",\n", + " \"bassline kickin', yes i'm groovin'\",\n", + " \"bassline kicikn', yes i'm groovin'\",\n", + " \"(bassline kicikn', yes i'm groovin')\",\n", + " \"(bassline kicikn', yes i'm groovin')\",\n", + " \"(bassline kicikn', yes i'm groovin')\",\n", + " '(bassline)',\n", + " \"bassline kickin', yes i'm groovin'\",\n", + " 'bassline',\n", + " 'bassline',\n", + " 'bassline',\n", + " \"bassline kickin'\",\n", + " 'bassline',\n", + " 'bassline',\n", + " 'b-b-b-b-bassline',\n", + " \"bassline kickin', yes i'm groovin'\",\n", + " \"bassline kickin', yes i'm groovin'\",\n", + " \"bassline kickin'\",\n", + " 'bassline',\n", + " 'bassline',\n", + " 'b-b-b-b-bassline',\n", + " \"bassline kickin', yes i'm groovin'\",\n", + " \"(groovin', groovin', groovin')\",\n", + " 'nimya tu kuch der pa ke rakh le',\n", + " 'pale vitch mukhra luiska ke rai',\n", + " 'nimya tu kuch der pa ke rakh le',\n", + " 'pale vitch mukhra luiska ke rai',\n", + " 'aave kari na kise de naal pyar',\n", + " 'mundiya to bach ke rahi',\n", + " 'nahi tu hun hun hui mutiyar',\n", + " 'mundiya to bach ke rahi',\n", + " 'nahi tu hun hun hui mutiyar',\n", + " 'mundiya to bach ke rahi, yeah',\n", + " 'tera ki kasoor je nashili nain ho gaye',\n", + " 'sikh ke adava sharmile nain ho gaye',\n", + " 'tera ki kasoor je nashili nain ho gaye',\n", + " 'sikh ke adava sharmile nain ho gaye',\n", + " 'saanb ke rakh ni eh jovan butari',\n", + " 'saanb ke rakh ni eh jovan butari',\n", + " 'hun mur ke na aauni bahaar',\n", + " 'mundiya to bach ke rahi',\n", + " 'nahi tu hun hun hui mutiyar',\n", + " 'mundiya to bach ke rahi',\n", + " 'nahi tu hun hun hui mutiyar',\n", + " 'mundiya to bach ke rahi, yeah',\n", + " 'chardi jawani tera roop tatha marda',\n", + " 'patla jaha lak na hulara vi saharda',\n", + " 'chardi jawani tera roop tatha marda',\n", + " 'patla jaha lak na hulara vi saharda',\n", + " 'gora gora rang ute mirgani tor',\n", + " 'gora gora rang ute mirgani tor',\n", + " 'hai tera jaye soni koi naal',\n", + " 'mundiya to bach ke rahi',\n", + " 'nahi tu hun hun hui mutiyar',\n", + " 'mundiya to bach ke rahi',\n", + " 'nahi tu hun hun hui mutiyar',\n", + " 'mundiya to bach ke rahi, yeah',\n", + " 'mundiya de bula ute teriya kahaniya',\n", + " 'channi ni ta khanne diyan galiyan pachaniya',\n", + " 'jovana de bula ute teriya kahaniya',\n", + " 'channi ni ta khanne diyan galiyan pachaniya',\n", + " 'janjua te hoya tera roop da diwana',\n", + " 'janjua te hoya tera roop da diwana',\n", + " 'chal sakiya na husan da ba',\n", + " 'mundiya to bach ke rahi',\n", + " 'nahi tu hun hun hui mutiyar',\n", + " 'mundiya to bach ke rahi',\n", + " 'nahi tu hun hun hui mutiyar',\n", + " 'mundiya to bach ke rahi, yeah',\n", + " 'anokquz jechovog bakug cho deaxchave',\n", + " 'dibuq gerunghowtheran bagngalsen toterytts!',\n", + " 'culukeh mukada dicom mangeif achichjech acua',\n", + " 'dimwa depenga',\n", + " 'chaziter utok foddabwith',\n", + " 'deggot fach fiacopa bhismwaha',\n", + " \"ongothawas harbebeden phengwey nowing'ng\",\n", + " 'dimwa depenga',\n", + " 'oloatirve uchispay aluhalen cho najoqaen',\n", + " 'sonpebreith chindetser hocid qyopal zatech',\n", + " 'oulala oulala',\n", + " 'oulala la oulala',\n", + " 'oulala oulala',\n", + " 'oulala la oulala',\n", + " 'aminata we djayi le lo',\n", + " 'aminata we yi bou le lo',\n", + " 'aminata we yi houe le lo',\n", + " 'nonte bo fa komin lo',\n", + " 'aminata',\n", + " 'aminata fa komin le lo',\n", + " 'aminata we konou le lo',\n", + " 'aminata we sinyin hou le lo',\n", + " 'minde, mantoun so edja lo',\n", + " 'oulala oulala',\n", + " 'oulala la oulala',\n", + " 'oulala oulala',\n", + " 'oulala la oulala',\n", + " 'aiya iya iya iye',\n", + " 'aiya iya iya iye',\n", + " 'aiya iya iya iye',\n", + " 'aiya iya iya iye',\n", + " 'yeah~ woah~ yeah~ da da da',\n", + " '我 一直都想对你说',\n", + " 'wǒ yīzhí dōu xiǎng duì nǐ shuō',\n", + " 'i’ve always wanted to tell you',\n", + " '你给我想不到的快乐',\n", + " 'nǐ gěi wǒ xiǎngbùdào de kuàilè',\n", + " 'you’ve given me happiness beyond belief',\n", + " '像绿洲给了沙漠',\n", + " 'xiàng lǜzhōu gěile shāmò',\n", + " 'like an oasis in a desert',\n", + " '说你会永远陪着我',\n", + " 'shuō nǐ huì yǒngyuǎn péizhe wǒ',\n", + " 'say that you will forever be by my side',\n", + " '做我的根我翅膀',\n", + " 'zuò wǒ de gēn wǒ chìbǎng',\n", + " 'be my root, my wings',\n", + " '让我飞也有回去的窝',\n", + " 'ràng wǒ fēi yěyǒu huíqù de wō',\n", + " 'let me fly and have a nest to return to',\n", + " '我愿意 我也可以',\n", + " 'wǒ yuànyì wǒ yě kěyǐ',\n", + " 'i am willing and i am able',\n", + " '付出一切也不会可惜',\n", + " 'fùchū yīqiè yě bù huì kěxí',\n", + " 'to give up everything without any regrets',\n", + " '就在一起看时间流逝',\n", + " 'jiù zài yīqǐ kàn shíjiān liúshì',\n", + " 'let’s just be together and watch time pass by',\n", + " '要记得我们相爱的方式',\n", + " 'yào jìde wǒmen xiāng’ài de fāngshì',\n", + " 'must remember the way of our love',\n", + " '就是爱你 爱着你',\n", + " 'jiùshì ài nǐ àizhe nǐ',\n", + " 'i just love you, loving you',\n", + " '有悲有喜有你平淡也有了意义',\n", + " 'yǒu bēi yǒuxǐ yǒu nǐ píngdàn yěyǒule yìyì',\n", + " 'with sorrow, with joy, with you even ordinary is meaningful',\n", + " '就是爱你 爱着你',\n", + " 'jiùshì ài nǐ àizhe nǐ',\n", + " 'i just love you, just loving you',\n", + " '甜蜜又安心 那种感觉就是你',\n", + " 'tiánmì yòu ānxīn nà zhǒng gǎnjué jiùshì nǐ',\n", + " 'sweet and comfortable, that kind of feeling is just you',\n", + " '我 一直都想对你说',\n", + " 'wǒ yīzhí dōu xiǎng duì nǐ shuō',\n", + " 'i’ve always wanted to tell you',\n", + " '你给我想不到的快乐',\n", + " 'nǐ gěi wǒ xiǎngbùdào de kuàilè',\n", + " 'you’ve given me happiness beyond belief',\n", + " '像绿洲给了沙漠',\n", + " 'xiàng lǜzhōu gěile shāmò',\n", + " 'like an oasis in a desert',\n", + " '说你会永远陪着我',\n", + " 'shuō nǐ huì yǒngyuǎn péizhe wǒ',\n", + " 'say that you will forever be by my side',\n", + " '做我的根我翅膀',\n", + " 'zuò wǒ de gēn wǒ chìbǎng',\n", + " 'be my root, my wings',\n", + " '让我飞也有回去的窝',\n", + " 'ràng wǒ fēi yěyǒu huíqù de wō',\n", + " 'let me fly and have a nest to return to',\n", + " '我愿意 真的愿意',\n", + " 'wǒ yuànyì zhēn de yuànyì',\n", + " 'i am willing, truly willing',\n", + " '付出所有也要保护你',\n", + " 'fùchū suǒyǒu yě yào bǎohù nǐ',\n", + " 'to give up everything to protect you',\n", + " 'oh 在一起 时间继续流逝',\n", + " 'oh zài yīqǐ shíjiān jìxù liúshì',\n", + " 'oh together as time continues to pass',\n", + " '请记得我有多么的爱你',\n", + " 'qǐng jìde wǒ yǒu duōme de ài nǐ',\n", + " 'please remember how much i love you',\n", + " '*',\n", + " 'oh 就是爱你爱着你',\n", + " 'oh jiùshì ài nǐ àizhe nǐ',\n", + " 'oh i just love you, loving you',\n", + " '不弃不离开不在意 一路有多少风雨',\n", + " 'bù qì bù líkāi bù zàiyì yīlù yǒu duōshǎo fēngyǔ',\n", + " 'won’t abandon, won’t leave, won’t mind how much wind and rain there’ll be',\n", + " '就是爱你 爱着你',\n", + " 'jiùshì ài nǐ àizhe nǐ',\n", + " 'i just love you, loving you',\n", + " '放在你手心灿烂的幸福全给你',\n", + " 'fàng zài nǐ shǒuxīn cànlàn de xìngfú quán gěi nǐ',\n", + " 'i place all of the radiant happiness into the palm of your hands',\n", + " 'repeat *',\n", + " '**',\n", + " 'oh 就是爱你爱着你',\n", + " 'oh jiùshì ài nǐ àizhe nǐ',\n", + " 'oh i just love you, loving you',\n", + " '我都愿意',\n", + " 'wǒ dū yuànyì',\n", + " 'i’m fully willing',\n", + " '就是爱你 爱着你',\n", + " 'jiùshì ài nǐ àizhe nǐ',\n", + " 'i just love you, loving you',\n", + " '要我们在一起',\n", + " 'yào wǒmen zài yīqǐ',\n", + " 'i want us to be together',\n", + " 'repeat **',\n", + " 'sarangi eotteoke byeonhanayo',\n", + " 'geureoke swiungayo',\n", + " 'honja nameun naneun eotteokhajyo',\n", + " 'oh baby don’t leave me now',\n", + " 'dodaeche myeot beonina sarange apaya',\n", + " 'ppeonhan ibyeol ape nunmureul gamchulkka',\n", + " 'daeche eolmana deo chueok sogeul hemaeya',\n", + " 'hoksi neoreul bwado useo bol su isseulkka',\n", + " 'tto sumi makhyeo oneuldo ne ane gatyeo',\n", + " 'dasi eojecheoreom nega iksukhae jamsi kkumeul kkundeutae oh oh oh',\n", + " 'ma boo ma boo nan tto sideureoga',\n", + " 'haruharu beotil su eobseo break down',\n", + " 'jaljaraneun neoui hanmadi',\n", + " 'babeun meogeonnyago mutdeon neoui mesiji',\n", + " 'ajuaju',\n", + " 'jageun ilsangdeuri ibyeol ape deo apa',\n", + " 'sarangi eotteoke byeonhanayo',\n", + " 'geureoke swiungayo',\n", + " 'honja nameun naneun eotteokhajyo',\n", + " 'oh baby don’t leave me now',\n", + " 'sarangiran geojitmare ttodasi nan soga',\n", + " 'dalkomhaetdeon ne ipsure babocheoreom noga',\n", + " 'nega neomu joha nae jasineul noha',\n", + " 'apeumiran seome honja gatyeobeorin goa',\n", + " 'norael bulleobwado jeulgeopjiga anha',\n", + " 'jip ap golmokgildo waenji iksukhaji anha',\n", + " 'chingudeureul mannabwado useojijil anha',\n", + " 'ajik nege motan mari neomu manha',\n", + " 'ma boo ma boo nan tto sideureoga',\n", + " 'haruharu beotil su eobseo break down',\n", + " 'ije waseo nuga nugul tatae geurae',\n", + " 'jungne sane saranghaedo da ttokgata',\n", + " 'modu modu',\n", + " 'heunhan ibyeolloraecheoreom gyeolguk ichyeojil geoya',\n", + " 'sarangi eotteoke byeonhanayo',\n", + " 'geureoke swiungayo',\n", + " 'honja nameun naneun eotteokhajyo',\n", + " 'oh baby don’t leave me now',\n", + " 'na yeogi itjanha apahajanha neobakke eobtjanha',\n", + " 'anin cheok ganghan cheok aesseobwado neoppunijanha',\n", + " 'ma boo na boo nan tto sideureoga',\n", + " 'haruharu beotil su eobseo break down',\n", + " 'ije waseo nuga nugul tatae geurae',\n", + " 'jungne sane saranghaedo da ttokgata',\n", + " 'modu modu',\n", + " 'heunhan ibyeolloraecheoreom gyeolguk ichyeojil geoya',\n", + " 'nae mami eotteoke ireolkkayo',\n", + " 'ireoke apeulkkayo',\n", + " 'nareul dugo tteonagaji mayo',\n", + " 'nal beoriji marayo',\n", + " 'sarangi eotteoke byeonhanayo',\n", + " '( no way)',\n", + " 'geureoke swiungayo',\n", + " '( naege daedaphaejwo baby tell me why)',\n", + " 'honja nameun naneun eotteokhajyo',\n", + " '( eotteokhajyo)',\n", + " 'oh baby don’t leave me now',\n", + " '( naege dorawa)',\n", + " 'tumi tole tole tempu chalao, ami korle hortal',\n", + " 'ami korle hortal bhaiya, ami korle hortal',\n", + " 'shudhu daane baame ghorao deikha, tita holo premer jhaal',\n", + " 'tita holo premer jhaal bhaiya, tita holo premer jhaal',\n", + " 'o re fulkoli re fulkoli, fool banaiya koi geli?',\n", + " 'uradhura dukher achor jhikimiki jole',\n", + " 'chokhete dhula diya, borolok korla biya',\n", + " 'ei jala to mitaabo ami, dj gaaner bass diya',\n", + " 'ar bolbo...',\n", + " 'aaj amar girlfriend er biya (iii)',\n", + " 'tumi tole tole vespa chalao, ami boshle chakka tal',\n", + " 'ami boshle chakka tal bhaiya, ami boshle chakka tal',\n", + " 'oi vespa tomar thelte thelte, khoisa geche jutar chhal',\n", + " 'khoisa geche jutar chhal bhaiya, khoisa geche jutar chhal',\n", + " 'o re fulkoli re fulkoli, fool banaiya koi geli?',\n", + " 'gondho paiya takar neshay, amay thuiya dour dili',\n", + " 'chokhete dhula diya, borolok korla biya',\n", + " 'ei jala to mitaabo ami, dj gaaner bass diya',\n", + " 'ar bolbo...',\n", + " 'aaj amar girlfriend er biya (iii)',\n", + " 'tumi tole tole tempu chalao, ami korle hortal',\n", + " 'ami korle hortal bhaiya, ami korle hortal',\n", + " 'tumi tole tole vespa chalao, ami boshle chakka tal',\n", + " 'ami boshle chakka tal bhaiya, ami boshle chakka tal',\n", + " 'tumi tole tole tempu chalao, shudhu dane bame ghorao deikha',\n", + " 'tumi tole tole vespa chalao, oi vespa tomar thelte thelte',\n", + " 'aaj amar girlfriend er biya']}}},\n", + " 'vi': {'sentence': {'pop': {'meta': {'train_data': ['ata',\n", + " 'tta',\n", + " 'ta',\n", + " 'ca',\n", + " 'ga',\n", + " 'tt',\n", + " 'ca',\n", + " 'ca',\n", + " 'tt',\n", + " 'ca',\n", + " 'gtc',\n", + " 'ct',\n", + " 'ca',\n", + " 'gc',\n", + " 'aa',\n", + " 'at',\n", + " 'ga',\n", + " 'ag',\n", + " 'ggc',\n", + " 'tc',\n", + " 'at',\n", + " 'tt',\n", + " 'ttc',\n", + " 'ac',\n", + " 'tct',\n", + " 't',\n", + " 'ttt',\n", + " 'ta',\n", + " 'tt',\n", + " 'ct',\n", + " 'tg',\n", + " 'tc',\n", + " 'cta',\n", + " 'tt',\n", + " 't',\n", + " 'ca',\n", + " 'ga',\n", + " 'ag',\n", + " 'tg',\n", + " 'cc',\n", + " 'gga',\n", + " 'gc',\n", + " 'aa',\n", + " 'gg',\n", + " 'ag',\n", + " 'tc',\n", + " 'tgt',\n", + " 'ga',\n", + " 'gac',\n", + " 'tc',\n", + " 't',\n", + " 'tg',\n", + " 'tgg',\n", + " 'gc',\n", + " 'ta',\n", + " 't',\n", + " 'ta',\n", + " 'ca',\n", + " 'ta',\n", + " 'ccg',\n", + " 'ct',\n", + " 'tct',\n", + " 'gt',\n", + " 'gct',\n", + " 'tc',\n", + " 'cc',\n", + " 'gt',\n", + " 'gga',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 'ata',\n", + " 'tta',\n", + " 'ta',\n", + " 'ca',\n", + " 'ga',\n", + " 'tt',\n", + " 'ca',\n", + " 'ca',\n", + " 'tt',\n", + " 'ca',\n", + " 'gtc',\n", + " 'ct',\n", + " 'ca',\n", + " 'gc',\n", + " 'aa',\n", + " 'at',\n", + " 'ga',\n", + " 'ag',\n", + " 'ggc',\n", + " 'tc',\n", + " 'at',\n", + " 'tt',\n", + " 'ttc',\n", + " 'ac',\n", + " 'tct',\n", + " 't',\n", + " 'ttt',\n", + " 'ta',\n", + " 'tt',\n", + " 'ct',\n", + " 'tg',\n", + " 'tc',\n", + " 'cta',\n", + " 'tt',\n", + " 't',\n", + " 'ca',\n", + " 'ga',\n", + " 'ag',\n", + " 'tg',\n", + " 'cc',\n", + " 'gga',\n", + " 'gc',\n", + " 'aa',\n", + " 'gg',\n", + " 'ag',\n", + " 'tc',\n", + " 'tgt',\n", + " 'ga',\n", + " 'gac',\n", + " 'tc',\n", + " 't',\n", + " 'tg',\n", + " 'tgg',\n", + " 'gc',\n", + " 'ta',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " 't',\n", + " \"bârî 'n nidir nê\",\n", + " 'dir nênâkham',\n", + " 'nêbâbîtham ma',\n", + " 'gâna nanê',\n", + " 'nêtab dâur',\n", + " 'nêbâbîtham ma',\n", + " 'gâna katha',\n", + " \"bârî 'n îdô nêd\",\n", + " 'i cemen nurrua',\n", + " 'ar i súre, i súre nai, nain',\n", + " '\"baïlèro, lèro, lèro!',\n", + " \"pastre, de dèlaï l'aïo!\",\n", + " 'baïlèro, lèro, lèro!',\n", + " 'pastre, de dèlaï l’aïo!',\n", + " \"as pas vist posa lo lèbré qu'onavo mèdré\",\n", + " 'lou bouon entré los combos dé do bon',\n", + " 'lou coudie entré los combos dé dorriè',\n", + " \"lou poumpo sú l'esquino\",\n", + " 'lo claù ol tráu',\n", + " 'lou baïlèro, lèro!',\n", + " 'lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro',\n", + " 'baïlèro lô!\"',\n", + " '\"aï fa maï qué lou béïré',\n", + " 'possa qué l’aï ottropat',\n", + " 'lou baïlèro, lèro!',\n", + " 'lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro',\n", + " 'baïlèro lô!\"',\n", + " '\"baïlèro, lèro, lèro!',\n", + " \"pastre, de dèlaï l'aïo!\",\n", + " 'baïlèro, lèro, lèro!',\n", + " \"pastre, de dèlaï l'aïo!\",\n", + " \"e du qu'as fat de lo pèl?\",\n", + " \"de qu'as fat de las oùrilhas?\",\n", + " \"e qu'as fat de lo quió?\",\n", + " \"de qu'as fat de tout oquó?\",\n", + " 'dió, lou baïlèro, lèro?',\n", + " 'lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro',\n", + " 'baïlèro lô!\"',\n", + " '\"de lo pèl n\\'aï fat un montel!',\n", + " 'de las oúrilhas n’ai fat un porel de mithos!',\n", + " '\"e de lo quió uno troumpetto!',\n", + " 'sé les mé vouós croumpa',\n", + " 'tè les pourtoraï',\n", + " 'dió, lou baïlèro, lèro?',\n", + " 'lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro',\n", + " 'baïlèro lô!\"',\n", + " \"bârî'n katharâd\",\n", + " 'îdô nidir nêd',\n", + " 'nêpâm nêd abârat',\n", + " '(ni)dir nênâkham',\n", + " 'nêbâbîtham',\n", + " 'magânanê',\n", + " 'nêtabdam dâur',\n", + " 'walking on the golden fallen leaves',\n", + " 'in red blaze of the autumn sun',\n", + " 'you clung to false threads of hope',\n", + " 'in the kingdom of writhed trees',\n", + " 'you disturbed the peace of a dead place',\n", + " \"where birds' songs died down in dry trunks\",\n", + " 'you came to know the old mystery',\n", + " 'the story of two guiltless girls',\n", + " 'tongues of flame licked their bodies',\n", + " 'to the scorn of exultant crowd',\n", + " 'they were faggoted on suspicion',\n", + " 'of witchcraft and lesbian sex',\n", + " 'and then the forest sheltered their souls',\n", + " 'flying, whispering and luring',\n", + " 'damned haunt of deep melancholy',\n", + " 'the cradle of illusive quiet',\n", + " 'íà ïîëÿíå èç áåëîãî ìðàìîðà',\n", + " 'â êðóãó ÷åðíûõ ãîðÿùèõ ñâå÷åé',\n", + " 'òû ñòîëêíóëñÿ ñ äâóìÿ îáíàæåííûìè äàìàìè',\n", + " 'îòðàçèâøèñü âî âçãëÿäå èõ òîìíûõ î÷åé',\n", + " 'î, ãàëåðåÿ äüÿâîëüñêîé ïðåëåñòè',\n", + " 'óâåðòþðà ðàçäâèíóòûõ íîã',\n", + " 'íàñìîòðåâøèñü êàê øëþõè ëàñêàþò äðóã äðóãà',\n", + " 'óñòîÿòü ïðåä ñîáëàçíîì òû ïðîñòî íå ñìîã!',\n", + " 'you joined their tight embrace',\n", + " 'which begot a sharp blade',\n", + " 'they offered it to you',\n", + " 'and you accepted the gift of death',\n", + " 'it easily got into the flesh',\n", + " 'shedding your warm red blood',\n", + " 'on their perfect silk skin',\n", + " 'your fell to their feet on the smooth marble',\n", + " 'òàéíà…',\n", + " 'è ëèøü øåï÷óùèé ëåñ äà íî÷íîå íåáî çíàþò ïðàâäó îá ýòîì',\n", + " 'hey layê layê layê',\n", + " 'korpey şirinem layê',\n", + " 'hey layê layê layê',\n", + " 'korpey şirinem layê',\n", + " 'laylay nemâmî jiyânem',\n", + " 'men wêney baxewanem',\n", + " 'be del çâwdêret dekem',\n", + " 'bxwe derdet le giyanem',\n", + " 'bxwe derdet le giyanem',\n", + " 'hey layê layê layê',\n", + " 'korpey şirinem layê',\n", + " 'bnwe tako sebeynê',\n", + " 'mezhdey âwâtem dênê',\n", + " 'ey berxoley şirinem',\n", + " 'âwâtî hemû jinem',\n", + " 'şewî târik nâmênê',\n", + " 'tişkey roj dête serê',\n", + " 'tişkey roj dête serê',\n", + " 'hey layê layê layê',\n", + " 'korpey şirinem layê',\n", + " 'bnwe aso rônage',\n", + " 'dyâre wek roj rônage',\n", + " 'laylay nemâmî jiyânem',\n", + " 'men wêney baxewanem',\n", + " 'be del çâwdêret dekem',\n", + " 'bxwe derdet le giyanem',\n", + " 'bxwe derdet le giyanem',\n", + " 'hey layê layê layê',\n", + " 'korpey şirinem layê',\n", + " 'xozge sed xozkây bxayê',\n", + " 'dâykê to lêre bwâyê',\n", + " 'xozge sed xozkây bxayê',\n", + " 'dâykê to lêre bwâyê',\n", + " 'hey layê layê layê',\n", + " 'korpey şirinem layê',\n", + " 'hey layê layê layê',\n", + " 'korpey şirinem layê',\n", + " 'kai kairos',\n", + " '(ecclesiastes 3, 1-8)',\n", + " 'toìs pàsi ho chrònos',\n", + " 'kaì kairòs',\n", + " 'to pantì pràgmati hypò ton uranòn',\n", + " 'kai kairòs',\n", + " 'kai kairòs',\n", + " 'tou tekeìn, tou apothaneìn',\n", + " 'tou phyteùsai, tou ektìlai to pefyteumènon',\n", + " 'kai kairòs, kai kairòs',\n", + " 'tou apokteìnai, tou iàsasthai',\n", + " 'tou kathelìn, tou oikodomeìn',\n", + " 'tou klaùsai, tou gelàsai',\n", + " 'tou kòpsasthai, tou orhèsasthai',\n", + " 'kai kairòs',\n", + " 'kai kairòs',\n", + " 'tou baleìn lìthous, tou synagageìn lìthous',\n", + " 'tou zetèsai, tou apolèsai',\n", + " 'tou phylàxai, tou ekbaleìn',\n", + " 'kai kairòs',\n", + " 'kai kairòs',\n", + " 'tou rèxai, tou pàpsai',\n", + " 'tou sigàn, tou laleìn',\n", + " 'tou philèsai, tou misèsai',\n", + " 'kairòs polèmou, kairòs eirènes…',\n", + " 'kai kairòs, kai kairòs…',\n", + " '(joan jett/kim fowley)',\n", + " 'ah',\n", + " 'cherry bomb',\n", + " 'cherry bomb',\n", + " 'ah',\n", + " 'cherry bomb',\n", + " 'ah',\n", + " 'cherry bomb',\n", + " 'cherry bomb',\n", + " 'cherry bomb',\n", + " 'cherry bomb',\n", + " 'cherry bomb',\n", + " 'cherry bomb',\n", + " 'cherry bomb']},\n", + " 'data': ['man',\n", + " 'ammen toltha i dann hen morn',\n", + " 'si',\n", + " 'danna-tha nauva',\n", + " 'nênâ-',\n", + " 'kham nêpâm',\n", + " 'abârat-',\n", + " 'aglar',\n", + " 'nêbâ(bîthâm)',\n", + " 'katharâd',\n", + " 'nidir',\n", + " 'nênâ',\n", + " 'nêbâbîthâm (dâ)ur',\n", + " 'nênâ-',\n", + " 'kham nêpâm',\n", + " 'abârat-',\n", + " 'aglar',\n", + " 'tercáno',\n", + " 'nuruva',\n", + " 'tinúviel elvanui',\n", + " 'elleth alfirin',\n", + " \"bârî'n katharâd\",\n", + " 'îdô khamnêpâm',\n", + " 'nênâ khamnêpâm',\n", + " '(a)bârat-aglar',\n", + " 'nêbâ katharâd',\n", + " 'nidir nênâ',\n", + " 'nêbâbîtham dâur',\n", + " 'what grace has given me, let it pass to him',\n", + " 'let him be spared',\n", + " 'mighty valar, save him',\n", + " 'nêbâbi(tham)',\n", + " '(nêbâbi)tham magânanê',\n", + " 'nêtabdam dâur-ad',\n", + " 'nê(pâm)',\n", + " '(nê)pâm nêd abârat aglar',\n", + " '(nên)âkham']}}},\n", + " 'xh': {'sentence': {'pop': {'meta': {'train_data': ['siduda, siduda, imvula, imvula',\n", + " 'siduda, (emvuleni) siduda, (emvuleni) (we dance around in the rain)',\n", + " 'imvula, (ilungile imvula, (ilugile) (the rain is so good)',\n", + " 'uyaiyithanda (do you like it?)',\n", + " 'tumbling, crumbling, mumbling, pittering, pattering rain',\n", + " \"tit for tat, this 'n' that, copy cat, dancin' around in the rain\",\n", + " 'tumbling, crumbling, mumbling, pittering, pattering rain',\n", + " \"tit for tat, this 'n' that, copy cat\",\n", + " \"musa ukoyika (don't be afraid)\",\n", + " 'gugula, ungaya, iindudumo, kukugalel, kugalel',\n", + " 'ilungile (it is pouring thundering)',\n", + " '(vuka sizwe, vuka sizwe)',\n", + " '(vuka sizwe, vuka sizwe)',\n", + " '(vuka sizwe, vuka sizwe)',\n", + " 'sikelela',\n", + " 'sikelela',\n", + " 'sikelela',\n", + " 'sikelela',\n", + " 'kune ntsikelelo emvhakwentaba, bo',\n", + " 'kune ntsikelelo emvhakwentaba, we ma',\n", + " 'kune ntsikelelo emvhakwentaba, bo',\n", + " 'kune ntsikelelo emvhakwentaba, we ma',\n", + " 'emvhakwentaba, bo',\n", + " 'emvhakwentaba, bo',\n", + " 'emvhakwentaba, bo',\n", + " 'emvhakwentaba, bo',\n", + " '(vuka sizwe, vuka sizwe)',\n", + " '(vuka sizwe, vuka sizwe)',\n", + " '(vuka sizwe, vuka sizwe)',\n", + " 'sikelela',\n", + " 'sikelela',\n", + " 'sikelela',\n", + " 'sikelela',\n", + " 'kune ntsikelelo emvhakwentaba, bo',\n", + " 'kune ntsikelelo emvhakwentaba, we ma',\n", + " 'kune ntsikelelo emvhakwentaba, bo',\n", + " 'kune ntsikelelo emvhakwentaba, we ma',\n", + " 'emvhakwentaba, bo',\n", + " 'emvhakwentaba, bo',\n", + " 'emvhakwentaba, bo',\n", + " 'emvhakwentaba, bo',\n", + " 'sikelela',\n", + " 'sikelela',\n", + " 'sikelela',\n", + " 'change my pitch up',\n", + " 'smack my bitch up',\n", + " 'change my pitch up',\n", + " 'smack my bitch up',\n", + " 'change my pitch up',\n", + " 'smack my bitch up',\n", + " 'change my pitch up',\n", + " 'smack my bitch up',\n", + " 'smack my bitch up',\n", + " 'eaaaheeyheeaheyyyee',\n", + " 'aaahaaahaaaaaaaaaaahha',\n", + " 'eaaaheeyheeaheyyyee',\n", + " 'aaahhaaaaa',\n", + " 'aaahhaaaaaaaaaaaaaaaaaaa',\n", + " 'aaaaaaaaaaaaaaaaaaaaaaaa',\n", + " 'aaaaaaaaaaaaaaaaaaaaaaaa',\n", + " 'smack my bitch up',\n", + " 'change my pitch up',\n", + " 'smack my bitch up',\n", + " 'change my pitch up',\n", + " 'smack my bitch up',\n", + " 'mmmmh oh...',\n", + " \"inton' undenza nje?\",\n", + " 'yandazi ndiyoyika',\n", + " 'uthando olungaka hey, mmmh',\n", + " 'andilwazi mna',\n", + " \"ndlela ond'jonga ngayo\",\n", + " 'yandibuka mna baby',\n", + " 'cupid is your name yeah, mmmh',\n", + " \"and i don't care what they say\",\n", + " \"und'thanda everyday yey yey\",\n", + " 'everyday yey yey',\n", + " \"nd'yakubona xa undijonga mna\",\n", + " 'everyday hee hee hee hee hey',\n", + " 'whoo, everyday yey yey',\n", + " 'everyday yey yey',\n", + " 'yandibuka mna baby',\n", + " 'everyday hee hee hee hee hey',\n", + " 'i love the way you love me',\n", + " 'i love the way you love me',\n", + " 'i love the way you love me',\n", + " 'mmm, ooh',\n", + " \"yan'mangaza mna\",\n", + " \"uyithathaphi intliziyw' enjena?\",\n", + " 'ooh whooa whooah',\n", + " \"i've never seen a love like this before\",\n", + " \"und'thanda ngomvulo\",\n", + " 'nangolwesibini',\n", + " 'nangolwesithathu',\n", + " 'ngolwesine',\n", + " \"n'lwesihlanu\",\n", + " 'nangomgqibelo',\n", + " 'ngecawa baby hey yey',\n", + " 'everyday hee hee hee hee hey',\n", + " 'you love me everyday (everyday hey)',\n", + " \"i've never seen love like this before (woooo wooo wooo)\",\n", + " 'wooo, mmh',\n", + " \"ooh, uyand'thanda baby (everyday hey)\",\n", + " \"zonk' insuku zobomi bami\",\n", + " \"i love the way you love me (nd'yawathanda amathandw' akho)\",\n", + " \"i love the way you love me (nd'yawafuna amathandw'akho)\",\n", + " \"i love the way you love me (nd'yawathanda amathandw'akho)\",\n", + " 'mmm, uww',\n", + " \"i love the way you love me (nd'yawafuna amathandw'akho)\",\n", + " \"i love the way you love me (nd'yawathanda amathandw'akho)\",\n", + " 'i love the way you love me',\n", + " 'mmm',\n", + " \"i love the way you love me (nd'yawathanda amathandw' akho)\",\n", + " \"i love the way you love me (nd'yawafuna amathandw'akho)\",\n", + " \"i love the way you love me (nd'yawathanda amathandw'akho)\",\n", + " 'mmm',\n", + " 'anol shalom',\n", + " 'anol sheh lay konnud de ne um (shaddai)',\n", + " 'flavum',\n", + " 'nom de leesh',\n", + " 'ham de nam um das',\n", + " 'la um de',\n", + " 'flavne...',\n", + " 'we de ze zu bu',\n", + " 'we de sooo a ru',\n", + " 'un va-a pesh a lay',\n", + " 'un vi-i bee',\n", + " 'un da la pech ni sa',\n", + " '(aaahh)',\n", + " 'un di-i lay na day',\n", + " 'un ma la pech a nay',\n", + " 'mee di nu ku',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'anol shalom',\n", + " 'anol sheh ley kon-nud de ne um',\n", + " 'flavum',\n", + " 'flavum',\n", + " 'm-ai shondol-lee',\n", + " 'flavu... {live on...}',\n", + " 'lof flesh lay',\n", + " 'nof ne',\n", + " 'nom de lis',\n", + " 'ham de num um dass',\n", + " 'la um de',\n", + " 'flavne..',\n", + " 'flay',\n", + " 'shom de nomm',\n", + " 'ma-lun des',\n", + " 'dwondi',\n", + " 'dwwoondi',\n", + " 'alas sharum du koos',\n", + " 'shaley koot-tum',\n", + " 'anol shalom',\n", + " 'anol sheh lay konnud de ne um {shaddai',\n", + " 'flavum',\n", + " 'nom de leesh',\n", + " 'ham de nam um das',\n", + " 'la um de',\n", + " 'flavne',\n", + " 'we de ze zu bu',\n", + " 'we de sooo a ru',\n", + " 'un va-a pesh a lay',\n", + " 'un vi-i bee',\n", + " 'un da la pech ni sa',\n", + " 'un di-i lay na day',\n", + " 'un ma la pech a nay',\n", + " 'mee di nu ku',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'anol shalom',\n", + " 'anol sheh ley kon-nud de ne um',\n", + " 'flavum',\n", + " 'flavum',\n", + " 'm-ai shondol-lee',\n", + " 'flavu',\n", + " 'lof flesh lay',\n", + " 'nof ne',\n", + " 'nom de lis',\n", + " 'ham de num um dass',\n", + " 'la um de',\n", + " 'flavne',\n", + " 'flay',\n", + " 'shom de nomm',\n", + " 'ma-lun des',\n", + " 'dwondi',\n", + " 'dwwoondi',\n", + " 'alas sharum du koos',\n", + " 'shaley koot-tum',\n", + " 'paroles de la chanson baaich ala hissak :',\n", + " \"baa'esh a'ala hesak\",\n", + " \"mestanyaak kont badwar a'aleek\",\n", + " \"mestanyaak bhlm maa' nafsy beek\",\n", + " 'mestanyaak leeh etakhart leeh',\n", + " 'arab kaman da hanaan el donia beek',\n", + " \"hawnt a'alia el donia habeeby\",\n", + " \"wana etamnt ma'ak\",\n", + " \"we ba'eesh a'ala hessak tany ya a'omry\",\n", + " \"we a'omry mabaash wayak\",\n", + " 'mabatshy bakhaaf mn haga',\n", + " 'we mesh mehtaga habeeb khalas',\n", + " 'lao ablak raht mnny hagat',\n", + " \"bya'awad nary hawak\",\n", + " \"hawnt a'alia el donia habeeby\",\n", + " \"wana etamnt ma'ak\",\n", + " \"we ba'eesh a'ala hessak tany ya a'omry\",\n", + " \"we a'omry mabaash wayak\",\n", + " 'mabatshy bakhaaf mn haga',\n", + " 'we mesh mehtaga habeeb khalas',\n", + " 'lao ablak raht mnny hagat',\n", + " \"bya'awad nary hawak\",\n", + " 'ana shoft feek ahlam mashofthaash',\n", + " \"we a'rft beek ayam maa'rfthaash\",\n", + " 'ana been edeek',\n", + " 'ana sayba nafsy leek',\n", + " 'ganbak aman we hanan el donia feek',\n", + " \"hawnt a'alia el donia habeeby\",\n", + " \"wana etamnt ma'ak\",\n", + " \"we ba'eesh a'ala hessak tany ya a'omry\",\n", + " \"we a'omry mabaash wayak\",\n", + " 'mabatshy bakhaaf mn haga',\n", + " 'we mesh mehtaga habeeb khalas',\n", + " 'lao ablak raht mnny hagat',\n", + " \"bya'awad nary hawak\",\n", + " 'anol shalom',\n", + " 'anol sheh lay konnud de ne um',\n", + " 'flavum',\n", + " 'nom de leesh',\n", + " 'ham de nam um das',\n", + " 'la um de',\n", + " 'flavne...',\n", + " 'we de ze zu bu',\n", + " 'we de sooo a ru',\n", + " 'un va-a pesh a lay',\n", + " 'un vi-i bee',\n", + " 'un da la pech ni sa',\n", + " 'un di-i lay na day',\n", + " 'un ma la pech a nay',\n", + " 'mee di nu ku',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'anol shalom',\n", + " 'anol sheh ley kon-nud de ne um',\n", + " 'flavum',\n", + " 'flavum',\n", + " 'm-ai shondol-lee',\n", + " 'flavum',\n", + " 'lof flesh lay',\n", + " 'nof ne',\n", + " 'nom de lis',\n", + " 'ham de num um dass',\n", + " 'la um de',\n", + " 'flavne',\n", + " 'flay',\n", + " 'shom de nomm',\n", + " 'ma-lun des',\n", + " 'dwondi',\n", + " 'dwwoondi',\n", + " 'alas sharum du koos',\n", + " 'shaley koot-tum',\n", + " 'we de ze zu bu',\n", + " 'we de sooo a ru',\n", + " 'un va-a pesh a lay',\n", + " 'un vi-i bee',\n", + " 'un da la pech ni sa',\n", + " '(aaahh)',\n", + " 'un di-i lay na day',\n", + " 'un ma la pech a nay',\n", + " 'mee di nu ku',\n", + " 'nalingi namona yo na miso',\n", + " 'nalingi namona yo na miso',\n", + " 'but we are world away',\n", + " 'yes, we are world away',\n", + " 'nataka kuku kumbatiya alakini siwezi',\n", + " 'nataka kuku kumbatiya alakini siwezi',\n", + " 'cuz we are world away',\n", + " 'yes, we are world away',\n", + " 'nina ucungu sana yakuwa mbali na wewe',\n", + " 'nina ucungu sana yakuwa mbali na wewe',\n", + " 'because we are world away',\n", + " 'because we are world away',\n", + " 'nalingi namona yo na miso',\n", + " 'nalingi namona yo na miso',\n", + " 'but we are world away',\n", + " 'yes, we are world away',\n", + " 'take me by the hand',\n", + " 'show me the way i can go',\n", + " 'take me by the hand',\n", + " 'show me the way',\n", + " 'ngaï nabungi nzéla',\n", + " 'mpo botikaki ngaï mosika',\n", + " 'yango nakomaki sé mitélengano',\n", + " 'koko lakisa ngaï nzela',\n", + " 'ndenge nini ngaï, baninga',\n", + " 'nakobunga nzéla ya bomoï',\n", + " 'po bato ya mokili mabé',\n", + " 'baboyi ngaï nazua lobiko',\n", + " 'take me by the hand',\n", + " 'show me the way i can go',\n", + " 'take me by the hand',\n", + " 'show me the way',\n", + " 'take me by the hand',\n", + " 'show me the way i can go',\n", + " 'take me by the hand',\n", + " 'show me...',\n", + " 'mbotama ya muana na tongo',\n", + " 'moyi ekomi tango ya kosakana',\n", + " 'butu eyinda, sango ya mawa',\n", + " 'mboka mobimba ekolela',\n", + " 'ndenge nini ngaï, baninga',\n", + " 'nakoluka nzéla ya bomoï',\n", + " 'po bato ya mokili mabé',\n", + " 'baboyi ngaï nazua lobiko',\n", + " 'take me by the hand',\n", + " 'show me the way i can go',\n", + " 'take me by the hand',\n", + " 'show me the way',\n", + " 'take me by the hand',\n", + " 'show me the way i can go',\n", + " 'take me by the hand',\n", + " 'show me',\n", + " 'take me by the hand',\n", + " 'show me the way i can go',\n", + " 'take me by the hand',\n", + " 'show me the way',\n", + " 'take me by the hand',\n", + " 'show me the way i can go',\n", + " 'take me by the hand',\n", + " 'show me',\n", + " 'take me by the hand',\n", + " 'show me the way i can go',\n", + " 'take me by the hand',\n", + " 'show me the way',\n", + " 'take me by the hand',\n", + " 'show me the way i can go',\n", + " 'take me by the hand',\n", + " 'show me',\n", + " 'take me by the hand (baboyi)',\n", + " 'show me the way i can go (eyinda)',\n", + " 'take me by the hand (nga yo, nga yo, nga yo, nga yo, nga yo, nga yo, mwana mama)',\n", + " 'show me the way',\n", + " 'take me by the hand (papa)',\n", + " 'show me the way i can go',\n", + " 'take me by the hand (nga yo)',\n", + " 'show me',\n", + " 'take me by the hand (ngaï, naweï)',\n", + " 'show me the way i can go (nalela)',\n", + " 'take me by the hand',\n", + " 'show me the way',\n", + " 'take me by the hand',\n", + " 'show me the way i can go',\n", + " 'take me by the hand',\n", + " 'show me',\n", + " 'anol shalom',\n", + " 'anol sheh lay konnud de ne um (shaddai)',\n", + " 'flavum',\n", + " 'nom de leesh',\n", + " 'ham de nam um das',\n", + " 'la um de',\n", + " 'flavne',\n", + " 'we de ze zu bu',\n", + " 'we de sooo a ru',\n", + " 'un va-a pesh a lay',\n", + " 'un vi-i bee',\n", + " 'un da la pech ni sa',\n", + " '(aaahh)',\n", + " 'un di-i lay na day',\n", + " 'un ma la pech a nay',\n", + " 'mee di nu ku',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'anol shalom',\n", + " 'anol sheh ley kon-nud de ne um',\n", + " 'flavum',\n", + " 'flavum',\n", + " 'm-ai shondol-lee',\n", + " 'flavu (live on)',\n", + " 'lof flesh lay',\n", + " 'nof ne',\n", + " 'nom de lis',\n", + " 'ham de num um dass',\n", + " 'la um de',\n", + " 'flavne',\n", + " 'flay',\n", + " 'shom de nomm',\n", + " 'ma-lun des',\n", + " 'dwondi',\n", + " 'dwwoondi',\n", + " 'alas sharum du koos',\n", + " 'shaley koot-tum',\n", + " 'ndihambile, ndibonile',\n", + " '(i have walked, i have seen)',\n", + " 'bandixelele bandinikile',\n", + " '(they told me, they gave me)',\n", + " 'ndingafunanga ndingabuzanga',\n", + " '(i did not want,i did not ask)',\n", + " 'ndiza ndiza',\n", + " '(i will come, i will come)',\n", + " \"ndizaw'buya ndikuphathel'ntliziyo yam\",\n", + " '(i will come back, bringing you my heart)',\n", + " 'uzuyenze msulwa yona',\n", + " '(make it pure)',\n", + " \"ndizam'kucinga aha\",\n", + " \"(i'm trying to think)\",\n", + " 'ndiyahluleka aha',\n", + " \"(i'm failing)\",\n", + " 'ingqondo yam, iyakhawuleza',\n", + " '(my mind is wondering)',\n", + " 'kuyehla kuyasa',\n", + " '(from sunset till dawn)',\n", + " 'kum uyafana',\n", + " \"(i'm still the same)\",\n", + " 'ndonakele hee',\n", + " \"(i'm ruined)\",\n", + " 'the glory outweighs the suffering',\n", + " 'the glory outweighs the long story',\n", + " 'the glory, the joy outweighs the suffering',\n", + " 'put it on a scale',\n", + " 'it is nothing to be compared to what you are expecting',\n", + " 'to what go is preparing for those who love him\\\\',\n", + " 'eyes have not seen, ears have not heard',\n", + " 'nor has it entered into the hearts of man',\n", + " \"xa ndizinikela ndishiy'ubumnyama\",\n", + " 'ngoba zenzo zezandla zami',\n", + " 'zake zandijikela',\n", + " 'ndifuna wena uyazi',\n", + " 'ubuyinto yonke kum',\n", + " 'ungamandla ububomi bam',\n", + " 'hlala bufuphi nami',\n", + " \"ubamb'umoya wami\",\n", + " 'wena, wena, ndithembe wena',\n", + " \"indlel'ohambha ngayo\",\n", + " 'o thetha ngayo',\n", + " 'o hleka ngayo',\n", + " 'mmm, ucumo lwakho',\n", + " \"he's my african man\",\n", + " \"nob' unobeka idayimane phambi kwami\",\n", + " \"uth'angikhethe\",\n", + " 'ndihambha nawe oh ndihambha nawe',\n", + " \"kwaze kwa'lula ukukuthanda\",\n", + " \"you're so easy to love\",\n", + " \"kwaze kwa'lula ukukuthanda\",\n", + " \"you're so easy to love\",\n", + " \"kwaze kwa'lula ukukuthanda\",\n", + " \"you're so easy to love\",\n", + " \"kwaze kwa'lula ukukuthanda\",\n", + " \"you're so easy to love\",\n", + " \"he's my african man\",\n", + " 'love….love',\n", + " \"he's my african man\",\n", + " 'love….love',\n", + " \"now that's a turn on\",\n", + " 'love….love',\n", + " 'indoda ecikiziweyo, ezithembileyo',\n", + " 'ehlonipha masiko with no compromise',\n", + " 'sonke siyazi',\n", + " \"now that's a turn on\",\n", + " \"nob' unobeka iferari phambi kwami uth'angikhethe\",\n", + " 'ndihambha nawe oh ndihamba nawe',\n", + " \"kwaze kwa'lula ukukuthanda\",\n", + " \"you're so easy to love\",\n", + " \"kwaze kwa'lula ukukuthanda\",\n", + " \"you're so easy to love\",\n", + " \"kwaze kwa'lula ukukuthanda\",\n", + " \"you're so easy to love\",\n", + " \"kwaze kwa'lula ukukuthanda\",\n", + " \"you're so easy to love\",\n", + " \"he's my african man\",\n", + " 'love….love',\n", + " \"he's my african man\",\n", + " 'love….love',\n", + " \"now that's a turn on\",\n", + " 'love….love',\n", + " '(oo chak-kah)',\n", + " 'a-khay-do, he cha-mo-neh-ya',\n", + " 'hey-ma kayo-maneh-hey',\n", + " 'sto-ma kaneh-teko-lunyeh',\n", + " 'ma-yu, nome-ga-ye-fe',\n", + " 'no-way-oh',\n", + " 'wayyy oh-wayyy-oh',\n", + " 'wayyy oh-way-oh',\n", + " 'way-ay-ay-oh wayyy-oh']},\n", + " 'data': ['ay, ay que',\n", + " 'no, no, no, ay, ay',\n", + " 'así, así, así, ay, ay',\n", + " 'suave, no, no, no,',\n", + " 'ah, mhh, mhh, ay, ay',\n", + " 'ay no, phh, mah, mah, mah',\n", + " '(heavy breathing)',\n", + " 'dime, dame, dime, ay',\n", + " 'no, no, no, no',\n", + " '(heavy male breathing)',\n", + " 'suave, suave, suave, suave',\n", + " 'di!',\n", + " 'ayyyyyy, ayyyyy, si, ay, ay, si, aya, yah',\n", + " '(male groaning)',\n", + " '(heavy male breathing)',\n", + " '(heavy both breathing)',\n", + " 'eish',\n", + " 'haha',\n", + " 'bathi midnight starring',\n", + " 'gqoshu',\n", + " 'destruction boyz',\n", + " 'woza maphorisa',\n", + " 'asambe ke',\n", + " 'ai. ai. ai ai. (x2)',\n", + " \"nob'unga nxib' inika-bok'\",\n", + " \"ndim' istarring\",\n", + " \"nob' unga faki pent' ene-lace\",\n", + " \"ndim' istarring\",\n", + " 'noba ungathi “brows on fleek”',\n", + " \"ndim' istarring\",\n", + " \"nob' ungamnika na next week\",\n", + " \"ndim' istarring\",\n", + " 'hamb’ otheza inkuni wena makoti!',\n", + " 'ke mna ke!',\n", + " 'ndizombambela apha endlin',\n", + " 'hamb’ otheza inkuni wena makoti!',\n", + " 'ke mna ke!',\n", + " 'ndizombambela apha endlin…',\n", + " 'ndizombambela, ndzombama ndizombambela',\n", + " 'ndzombama ndizombambela ndzombama',\n", + " 'ndizombambela apha endlin…',\n", + " 'ndizombambela, ndzombama ndizombambela',\n", + " 'ndzombama ndizombambela ndzombama',\n", + " 'ndizombambela apha endlin…(x2)',\n", + " \"nob'unga nxib' inika-bok'\",\n", + " \"ndim' istarring\",\n", + " \"nob' unga faki pent' ene-lace\",\n", + " \"ndim' istarring\",\n", + " 'noba ungathi “brows on fleek”',\n", + " \"ndim' istarring\",\n", + " \"nob' ungamnika na next week\",\n", + " \"ndim' istarring\",\n", + " 'yebo (yebo), yebo (yebo), yebo (yebo), yebo (yebo)',\n", + " 'yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo)',\n", + " 'ai. ai. ai ai. (x2)',\n", + " \"nob'unga nxib' inika-bok'\",\n", + " \"ndim' istarring\",\n", + " \"nob' unga faki pent' ene-lace\",\n", + " \"ndim' istarring\",\n", + " 'noba ungathi “brows on fleek”',\n", + " \"ndim' istarring\",\n", + " \"nob' ungamnika na next week\",\n", + " \"ndim' istarring\",\n", + " 'yini engathi sohamba ekuseni',\n", + " 'ngizwengathi khona into ethi',\n", + " 'qho, qho, qho!',\n", + " 'sya’groova, sya’groova, sya’groove',\n", + " 'askhathali',\n", + " '(kwenzenjani)',\n", + " 'les’gubh esivusa umakhe',\n", + " 'yini engathi sohamba ekuseni',\n", + " 'ngizwengathi khona into ethi',\n", + " 'qho, qho, qho!',\n", + " 'sya’groova, sya’groova, sya’groove',\n", + " 'askhathali',\n", + " '(kwenzenjani)',\n", + " 'les’gubh esivusa umakhe',\n", + " \"nob'unga nxib' inika-bok'\",\n", + " \"ndim' istarring\",\n", + " \"nob' unga faki pent' ene-lace\",\n", + " \"ndim' istarring\",\n", + " 'noba ungathi “brows on fleek”',\n", + " \"ndim' istarring\",\n", + " \"nob' ungamnika na next week\",\n", + " \"ndim' istarring\",\n", + " 'les’gubh esivusa umakhe',\n", + " 'yebo (yebo), yebo (yebo), yebo (yebo), yebo (yebo)',\n", + " 'yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo)',\n", + " 'i live on tree',\n", + " 'ubuza liphi',\n", + " 'besi planile',\n", + " 'ok, it was me',\n", + " 'i get so upset',\n", + " 'when you ignore my posts',\n", + " 'i like it when you like',\n", + " 'ndizbona ngingumfazi',\n", + " 'ndistalker your page',\n", + " 'nditypa, ndidelete',\n", + " 'ndibone uonline',\n", + " 'and then i bite my lip',\n", + " 'awundazi nokundazi',\n", + " 'i love you ndiyayazi',\n", + " 'u waster itime',\n", + " 'i inbox inumber',\n", + " 'please call future baby',\n", + " 'future maybe',\n", + " 'future wife',\n", + " 'please call future baby',\n", + " 'future maybe',\n", + " 'future wife',\n", + " '(les’gubh esivusa umakhe!)',\n", + " 'yebo (yebo), yebo (yebo), yebo (yebo), yebo (yebo)',\n", + " 'yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo)',\n", + " 'les-les’gubh',\n", + " 'shoutout to rudeboyz',\n", + " 'distruction boyz',\n", + " '(les’gubh esivusa umakhe!)',\n", + " 'yebo (yebo), yebo (yebo), yebo (yebo), yebo (yebo)',\n", + " 'yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo)',\n", + " 'bathi midnight starring',\n", + " 'gqoshu',\n", + " 'destruction boyz',\n", + " 'woza maphorisa',\n", + " 'asambe ke',\n", + " 'aya ya yaya...',\n", + " 'aii ya ya ya heyy',\n", + " 'ohhhhh ma afrika',\n", + " 'wehma afrika masi hlanganeni',\n", + " 'sibemunye heeh aweh',\n", + " \"let's be united as a nation\",\n", + " \"let's come together as a nation\",\n", + " 'we are together we are united',\n", + " \"let's come together\",\n", + " 'ayyiii he wehma afrika',\n", + " 'ma afrika eyyy',\n", + " 'wehma afrika',\n", + " 'together',\n", + " 'si ngay yedza lento',\n", + " 'onelove one way',\n", + " 'that is the motto',\n", + " 'hey uvhuphi ubumthu',\n", + " 'munwe muthihi a u tusi mathuthu',\n", + " 'zwindzhi ri nga kona ra shuma rothe',\n", + " \"let's work together si pope sonke\",\n", + " 'hoza friday si jaive sonke',\n", + " 'hoza weekend si jaive futhi',\n", + " 'together',\n", + " 'si ngay yedza lento',\n", + " 'onelove one way',\n", + " 'that is the motto',\n", + " 'hey uvhuphi ubumthu',\n", + " 'munwe muthihi a u tusi mathuthu',\n", + " 'zwindzhi ri nga kona ra shuma rothe',\n", + " \"let's work together si pope sonke\",\n", + " 'hoza friday si jaive sonke',\n", + " 'hoza weekend si jaive futhi',\n", + " 'wehma afrika masi hlanganeni',\n", + " 'sibemunye heeh aweh',\n", + " \"let's be united as a nation\",\n", + " \"let's come together as a nation\",\n", + " 'we are together we are united',\n", + " 'wehma afrika masi hlanganeni',\n", + " 'sibemunye heeh aweh',\n", + " 'yea, yeah',\n", + " 'yea, yea, yea, yeah',\n", + " 'aah, ah',\n", + " 'ah',\n", + " \"cala kwam' ukumbona\",\n", + " 'yangathi ndiyamazi',\n", + " \"amehlo ami agqwal' uthando\",\n", + " \"inhliziyo yam' yagqwal' uvuyo\",\n", + " \"ndinovalo, it's crazy how i need you right now\",\n", + " 'how much i need you',\n", + " 'oh the things you do to me',\n", + " \"i can't explain it, i can't explain it\",\n", + " 's’owo l’ofe ni se’fe l’ofe ni',\n", + " \"i can't explain it, can't explain it\",\n", + " 'oh the things you do to me',\n", + " \"i can't explain it, i can't explain it\",\n", + " 's’owo l’ofe ni se’fe l’ofe ni',\n", + " \"i can't explain it, i can't explain it\",\n", + " 'what would you do for love?',\n", + " 'ungeza ntoni?',\n", + " 'what would you do for love?',\n", + " 'ungeza ntoni?',\n", + " 'be my lover, be my friend',\n", + " 'be my lover, stay with me, yeah',\n", + " 'what would you do for love?',\n", + " 'ungeza ntoni?',\n", + " 'what would you do for love?',\n", + " 'be my lover, be my friend',\n", + " 'be my lover, stay with me, yeah',\n", + " 'eh wo’le, ah wo’le',\n", + " 'je ko wo’le, ife re ba mo l’okan',\n", + " 'eh wo’le, ah wo’le',\n", + " 'je ko wo’le, ife re ji mi l’okan',\n", + " 'would you stay with me?',\n", + " 'ah my baby, oh love',\n", + " 'would you dance with me',\n", + " 'if you were my lady? oh girl',\n", + " 'what would you do for love?',\n", + " 'ungeza ntoni?',\n", + " 'what would you do for love?',\n", + " 'ungeza ntoni?',\n", + " 'be my lover, be my friend',\n", + " 'be my lover, stay with me, yeah',\n", + " 'what would you do for love?',\n", + " 'ungeza ntoni?',\n", + " 'what would you do for love?',\n", + " 'be my lover, be my friend',\n", + " 'be my lover, stay with me, yeah',\n", + " 'what would you do?',\n", + " 'ungeza ntoni?',\n", + " \"lufike luk'thathe uthando\",\n", + " 'ungezazi nawe',\n", + " 'kuqhubeka ntoni',\n", + " 'konke ndinokukwenzela kona',\n", + " 'konke ndinokunika kona',\n", + " 'konke ndinokukwenzela kona',\n", + " 'konke ndinokunika kona',\n", + " 'what would you do for love?',\n", + " 'ungeza ntoni?',\n", + " 'what would you do for love?',\n", + " 'ungeza ntoni?',\n", + " 'be my lover, be my friend',\n", + " 'be my lover, stay with me, yeah',\n", + " 'what would you do for love?',\n", + " 'ungeza ntoni?',\n", + " 'what would you do for love?',\n", + " 'be my lover, be my friend',\n", + " 'be my lover, stay with me, yeah',\n", + " 'eh wo’le, ah wo’le',\n", + " 'je ko wo’le, ife re ba mo l’okan',\n", + " 'eh wo’le, ah wo’le',\n", + " 'je ko wo’le, ife re ji mi l’okan',\n", + " 'la-la-la-la-la',\n", + " 'la-la-la-la-la-la',\n", + " 'la-la-la-la-la',\n", + " 'la',\n", + " 'ndiye kugqirha',\n", + " 'ndathi \"khangela intloko yam!',\n", + " \"ndinamaphupha, ndiphupha kak'bi gqirha wam\",\n", + " 'khangela nantsi intliziyo yam',\n", + " 'ndinamaphupha, ndiphupha kak\\'bi\"',\n", + " 'hela hela sithandwa sam!',\n", + " 'ngumadlamini luphambi kwakho',\n", + " \"ngujama s'jadu, fakade, ngxowonoboya!\",\n", + " 'hela hela sithandwa sam!',\n", + " '(i went to the doctor',\n", + " 'and said \"look into my head; i have terrible dreams…',\n", + " 'look into my heart; i have terrible dreams…\"',\n", + " 'hela hela my love!',\n", + " 'madlamini stands before you',\n", + " \"jama s'jadu, fakade, ngxowonoboya!\",\n", + " 'hela hela my love!)',\n", + " 'anol shalom',\n", + " 'anol sheh lay konnud de ne um (shaddai)',\n", + " 'flavum',\n", + " 'nom de leesh',\n", + " 'ham de nam um das',\n", + " 'la um de',\n", + " 'flavne...',\n", + " 'we de ze zu bu',\n", + " 'we de sooo a ru',\n", + " 'un va-a pesh a lay',\n", + " 'un vi-i bee',\n", + " 'un da la pech ni sa',\n", + " '(aaahh)',\n", + " 'un di-i lay na day',\n", + " 'un ma la pech a nay',\n", + " 'mee di nu ku',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'la la da pa da le na da na',\n", + " 've va da pa da le na la dumda',\n", + " 'anol shalom',\n", + " 'anol sheh ley kon-nud de ne um',\n", + " 'flavum',\n", + " 'flavum',\n", + " 'm-ai shondol-lee',\n", + " 'flavu... {live on...}',\n", + " 'lof flesh lay',\n", + " 'nof ne',\n", + " 'nom de lis',\n", + " 'ham de num um dass',\n", + " 'la um de',\n", + " 'flavne..',\n", + " 'flay',\n", + " 'shom de nomm',\n", + " 'ma-lun des',\n", + " 'dwondi',\n", + " 'dwwoondi',\n", + " 'alas sharum du koos',\n", + " 'shaley koot-tum']}}},\n", + " 'yo': {'sentence': {'non-music': {'meta': {'train_data': ['amudo nunchi mot chaegekkeum',\n", + " 'neoreul humchyeo boneun ge nae beoreusi doeeotgo',\n", + " 'gakkeum neowa nuni majuchil ttaemyeon',\n", + " 'amureochi anheun yeongil haneun baeuga doeeosseo',\n", + " 'action, daetteum neoege gaseo',\n", + " 'mareul geonnaeneun sangsangdo yeoreo beon haebwa',\n", + " 'geunde wae nan neul neoga nae apeman',\n", + " 'omyeon eoreo beorineun geolkka?',\n", + " 'i don’t know why, girl',\n", + " 'o nae heeoseutaildo',\n", + " 'dareun namjadeulboda gwaenchanko',\n", + " 'eoje saero san syeocheu saeksangdo',\n", + " 'pureun haneulgwa wanbyeokhan dekalkomani',\n", + " 'oneureun nae jajonsimeul kkeokkgo',\n", + " 'neoege gobaekhago',\n", + " 'sipjiman swipji anchi nan geujeo meonghani',\n", + " 'dareun goseul barabwa',\n", + " 'beautiful girl nae gyeoteseo',\n", + " 'utgo inneun niga neomu joha',\n", + " 'nuni busin geol',\n", + " 'areumdaun neol',\n", + " 'humchil su itge neoreul wonhae',\n", + " 'cause you are my',\n", + " '(ooh) special, (ooh) special',\n", + " '(ooh) special, special, special girl',\n", + " '(ooh) special, (ooh) special',\n", + " '(ooh) special, special, special girl',\n", + " 'neoreul bol su inneun chanseu, wolhwasumokgeum',\n", + " 'naega wonhaneun geoneun jumariraneun boneoseu',\n", + " 'nareul mannareo oneun neoreul bol suman itdamyeon',\n", + " 'nae modeungeol da julge geu daegaga mwodeun',\n", + " 'geureogi wihaeseon neoege eopil',\n", + " 'hal su inneun namanui maeryeogi pillyohae',\n", + " 'waenyamyeon neoui gyeoten neul namjadeuri jureul seoitgo',\n", + " 'i gotta k.o him',\n", + " 'baby naege gidae pyeonhage',\n", + " 'umjigiji anheulge manyak neoga nae pum ane',\n", + " 'angyeo jundamyeon i will give you everything',\n", + " 'ojik neomaneul wihae siganeul biulkkeoya maeil',\n", + " 'irago gobaekhago pa',\n", + " 'heona hyeonsireun nae maeumgwa wae dareulkka',\n", + " 'you don’t even know my name oneuldo nan neoui',\n", + " 'yeopeul geunyang jinachyeo joyonghage',\n", + " 'beautiful girl nae gyeoteseo',\n", + " 'utgo inneun niga neomu joha',\n", + " 'nuni busin geol',\n", + " 'areumdaun neol',\n", + " 'humchil su itge neoreul wonhae',\n", + " 'cause you are my',\n", + " '(ooh) special, (ooh) special',\n", + " '(ooh) special, special, special girl',\n", + " '(ooh) special, (ooh) special',\n", + " '(ooh) special, special, special girl',\n", + " 'bomgwa yeoreum gaeulgwa',\n", + " 'gyeoul hal geot eobsi neon neomuna areumdawo',\n", + " 'neol cheoeum bon dwironeun nuneul gamgo isseodo',\n", + " 'gyesok neoui silluesi areungeoryeo',\n", + " 'yeah, so sweet, so sexy, hey',\n", + " 'amugeotdo sone an japhyeo neo ttaemune',\n", + " 'nan all day, all night long',\n", + " 'yeah, so sweet, so sexy, hey',\n", + " 'amugeotdo sone an japhyeo neo ttaemune',\n", + " 'nan all day, all night long',\n", + " 'beautiful girl nae gyeoteseo',\n", + " 'utgo inneun niga neomu joha',\n", + " 'nuni busin geol',\n", + " 'areumdaun neol',\n", + " 'humchil su itge neoreul wonhae',\n", + " 'cause you are my',\n", + " '(ooh) special, (ooh) special',\n", + " '(ooh) special, special, special girl',\n", + " '(ooh) special, (ooh) special',\n", + " '(ooh) special, special, special girl',\n", + " 'tale of kamar al zaman',\n", + " 'that there was in times of yore and in ages long gone before a king called shahrimán, who was lord of many troops and guards, and officers, and who reigned over certain islands, known as the khálidán islands, on the borders of the land of the persians. but he was stricken in years and his bones were wasted, without having been blessed with a son, albeit he had four wives, daughters of kings, and threescore concubines, with each of whom he was wont to lie one night in turn. this preyed upon his mind and disquieted him, so that he complained thereof to one of his wazirs, saying, \"verily i fear lest my kingdom be lost when i die, for that i have no son to succeed me.\" the minister answered, \"o king, peradventure allah shall yet bring something to pass; so rely upon the almighty and be instant in prayer. it is also my counsel that thou spread a banquet and invite to it the poor and needy, and let them eat of thy food; and supplicate the lord to vouchsafe thee a son; for perchance there may be among thy guests a righteous soul whose prayers find acceptance; and thereby thou shalt win thy wish.\" so the king rose, made the lesser ablution, and prayed a two-bow prayer, then he cried upon allah with pure intention; after which he called his chief wife to bed and lay with her forthright. by grace of god she conceived and, when her months were accomplished, she bore a male child, like the moon on the night of fulness. the king named him kamar al-zamán, and rejoiced in him with extreme joy and bade the city be dressed out in his honour; so they decorated the streets seven days, whilst the drums beat and the messengers bore the glad tidings abroad. then wet and dry nurses were provided for the boy and he was reared in splendour and delight, until he reached the age of fifteen. he grew up of surpassing beauty and seemlihead and symmetry, and his father loved him so dear that he could not brook to be parted from him day or night. one day he complained to a certain of his ministers anent the excess of his love for his only child, saying, \"o thou the wazir, of a truth i fear for my son, kamar al-zaman, the shifts and accidents which befal man and fain would i marry him in my life-time.\" answered the wazir, \"o king, know thou that marriage is one of the most honourable of moral actions, and thou wouldst indeed do well and right to marry thy son in thy lifetime, ere thou make him sultan.\" on this quoth the king, \"hither with my son kamar al-zaman;\" so he came and bowed his head to the ground in modesty before his sire. \"o kamar al zaman,\" said king shahriman, \"of a truth i desire to marry thee and rejoice in thee during my lifetime.\" replied he, \"o my father, know that i have no lust to marry nor cloth my soul incline to women; for that concerning their craft and perfidy i have read many books and heard much talk, even as saith the poet,',\n", + " \"'now, an of women ask ye, i reply:—*\",\n", + " \"in their affairs i'm versed a doctor rare!\",\n", + " \"when man's head grizzles and his money dwindles, *\",\n", + " \"in their affections he hath naught for share.'\",\n", + " 'and another said:—',\n", + " \"'rebel against women and so shalt thou serve allah the more; *\",\n", + " 'the youth who gives women the rein must forfeit all hope to',\n", + " 'soar.',\n", + " \"they'll baulk him when seeking the strange device, excelsior, *\",\n", + " \"tho' waste he a thousand of years in the study of science\",\n", + " 'and lore.\\' \"',\n", + " 'and when he had ended his verses he continued, \"o my father, wedlock is a thing whereto i will never consent; no, not though i drink the cup of death.\" when sultan shahriman heard these words from his son, light became darkness in his sight and he grieved thereat with great grief.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and seventy-first night,',\n", + " \"she said, it hath reached me, o auspicious king, that when king shahriman heard these words from his son, the light became darkness in his sight and he grieved over his son's lack of obedience to his directions in the matter of marriage; yet, for the great love he bore him, he was unwilling to repeat his wishes and was not wroth with him, but caressed him and spake him fair and showed him all manner of kindness such as tendeth to induce affection. all this, and kamar al-zaman increased daily in beauty and loveliness and amorous grace; and the king bore with him for a whole year till he became perfect in eloquence and elegant wit. all men were ravished with his charms; and every breeze that blew bore the tidings of his gracious favour; his fair sight was a seduction to the loving and a garden of delight to the longing, for he was honey-sweet of speech and the sheen of his face shamed the full moon; he was a model of symmetry and blandishment and engaging ways; his shape was as the willow-wand or the rattan- cane and his cheeks might take the place of rose or red anemone. he was, in fine the pink of perfection, even as the poet hath said of him,\",\n", + " '\"he came and cried they, \\'now be allah blest! *',\n", + " \"praise him that clad that soul in so fair vest!'\",\n", + " \"he's king of beauty where the beauteous be; *\",\n", + " 'all are his ryots, all obey his hest:',\n", + " \"his lip-dew's sweeter than the virgin honey; *\",\n", + " 'his teeth are pearls in double row close press:',\n", + " 'all charms are congregate in him alone, *',\n", + " 'and deals his loveliness to man unrest.',\n", + " 'beauty wrote on those cheeks for worlds to see *',\n", + " '\\'i testify there is none good but he.\\'\"',\n", + " 'when the year came to an end, the king called his son to him and said, \"o my son, wilt thou not hearken to me?\" whereupon kamar al-zaman fell down for respect and shame before his sire and replied, \"o my father, how should i not hearken to thee, seeing that allah commandeth me to obey thee and not gain-say thee?\" rejoined king shahriman, \"o my son, know that i desire to marry thee and rejoice in thee whilst yet i live, and make thee king over my realm, before my death.\" when the prince heard his sire pronounce these words he bowed his head awhile, then raised it and said, \"o my father, this is a thing which i will never do; no, not though i drink the cup of death! i know of a surety that the almighty hath made obedience to thee a duty in religion; but, allah upon thee! press me not in this matter of marriage, nor fancy that i will ever marry my life long; for that i have read the books both of the ancients and the moderns, and have come to know all the mischiefs and miseries which have befallen them through women and their endless artifices. and how excellent is the saying of the poet,',\n", + " \"'he whom the randy motts entrap *\",\n", + " 'shall never see deliverance!',\n", + " 'though build he forts a thousand-fold, *',\n", + " 'whose mighty strength lead-plates enhance,',\n", + " 'their force shall be of no avail; *',\n", + " 'these fortresses have not a chance!',\n", + " 'women aye deal in treachery *',\n", + " \"to far and near o'er earth's expanse\",\n", + " 'with fingers dipt in henna-blood *',\n", + " 'and locks in braids that mad the glance;',\n", + " \"and eyelids painted o'er with kohl *\",\n", + " \"they gar us drink of dire mischance.'\",\n", + " 'and how excellently saith another,',\n", + " \"'women, for all the chastity they claim, *\",\n", + " \"are offal cast by kites where'er they list:\",\n", + " 'this night their talk and secret charms are shine, *',\n", + " 'that night another joyeth calf and wrist:',\n", + " \"like inn, whence after night thou far'st at dawn, *\",\n", + " 'and lodges other wight thou hast not wist.\\'\"',\n", + " 'now when king shahriman heard these his son\\'s words and learnt the import of his verses and poetical quotations, he made no answer, of his excessive love for him, but redoubled in graciousness and kindness to him. he at once broke up the audience and, as soon as the seance was over, he summoned his minister and taking him apart, said to him, \"o thou the wazir! tell me how i shall deal with my son in the matter of marriage.\"- -and shahrazad perceived the dawn of day and ceased saying her permitted stay.',\n", + " 'when it was the one hundred and seventy-second night,',\n", + " 'she said, it hath reached me, o auspicious king, that the king summoned his minister; and, taking him apart, said to him, \"o thou the wazir, tell me what i shall do with my son in the matter of marriage. of a truth i took counsel with thee thereon and thou didst counsel me to marry him, before making him king. i have spoken with him of wedlock time after time and he still gainsaid me; so do thou, o wazir, forthright advise me what to do.\" answered the minister, \"o king, wait another year and, if after that thou be minded to speak to him on the matter of marriage, speak not to him privily, but address him on a day of state, when all the emirs and wazirs are present with the whole of the army standing before thee. and when all are in crowd then send for thy son, kamar al-zaman, and summon him; and, when he cometh, broach to him the matter of marriage before the wazirs and grandees and officers of state and captains; for he will surely be bashful and daunted by their presence and will not dare to oppose thy will.\" now when king shahriman heard his wazir\\'s words, he rejoiced with exceeding joy, seeing success in the project, and bestowed on him a splendid robe of honour. then he took patience with his son another year, whilst, with every day that passed over him, kamar al-zaman increased in beauty and loveliness, and elegance and perfect grace, till he was nigh twenty years old. indeed allah had clad him in the cloak of comeliness and had crowned him with the crown of completion: his eye-glance was more bewitching than hárút and marút and the play of his luring looks more misleading than tághút; and his cheeks shone like the dawn rosy-red and his eyelashes stormed the keen-edged blade: the whiteness of his brow resembled the moon shining bright, and the blackness of his locks was as the murky night; and his waist was more slender than the gossamer and his back parts than two sand heaps bulkier, making a babel of the heart with their softness; but his waist complained of the weight of his hips and loins; and his charms ravished all mankind, even as one of the poets saith in these couplets,',\n", + " '\"by his eyelash tendril curled, by his slender waist i swear,',\n", + " 'by the dart his witchery feathers, fatal hurtling through the',\n", + " 'air;',\n", + " 'by the just roundness of his shape, by his glances bright and',\n", + " 'keen',\n", + " 'by the swart limping of his locks, and his fair forehead shining',\n", + " 'sheen;',\n", + " 'by his eyebrows which deny that she who looks on them should',\n", + " 'sleep,',\n", + " \"which now commanding, now forbidding, o'er me high dominion keep;\",\n", + " 'by the roses of his cheek, his face as fresh as myrtle wreath',\n", + " 'his tulip lips, and those pure pearls that hold the places of his',\n", + " 'teeth;',\n", + " 'by his noble form, which rises featly turned in even swell',\n", + " 'to where upon his jutting chest two young pomegranates seem to',\n", + " 'dwell',\n", + " 'by his supple moving hips, his taper waist, the silky skin,',\n", + " 'by all he robbed perfection of, and holds enchained his form',\n", + " 'within;',\n", + " 'by his tongue of steadfastness, his nature true, and excellent,',\n", + " 'by the greatness of his rank, his noble birth, and high descent,',\n", + " 'musk from my love her savour steals, who musk exhales from every',\n", + " 'limb',\n", + " \"and all the airs ambergris breathes are but the zephyr's blow\",\n", + " \"o'er him.\",\n", + " 'the sun, methinks, the broad bright sun, as low before my love',\n", + " 'should quail',\n", + " 'as would my love himself transcend the paltry paring of his',\n", + " 'nail!\"',\n", + " 'so king shahriman, having accepted the counsel of his wazir, waited for another year and a great festival,—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and seventy-third night,',\n", + " 'she said, it hath reached me, o auspicious king, that shahriman having accepted the counsel of his wazir, waited for another year and a great festival, a day of state when the audience hall was filled with his emirs and wazirs and grandees of his reign and officers of state and captains of might and main. thereupon he sent for his son kamar al-zaman who came, and kissing the ground before him three times, stood in presence of his sire with his hands behind his back the right grasping the left. then said the king to him, \"know o my son, that i have not sent for thee on this occasion and summoned thee to appear before this assembly and all these officers of estate here awaiting our orders save and except that i may lay a commandment on thee, wherein do thou not disobey me; and my commandment is that thou marry, for i am minded to wed thee to a king\\'s daughter and rejoice in thee ere i die.\" when the prince heard this much from his royal sire, he bowed his head groundwards awhile, then raising it towards his father and being moved thereto at that time by youthful folly and boyish ignorance, replied, \"but for myself i will never marry; no, not though i drink the cup of death! as for thee, thou art great in age and small of wit: hast thou not, twice ere this day and before this occasion, questioned me of the matter of marriage and i refused my consent? indeed thou dotest and are not fit to govern a flock of sheep!\" so saying kamar al-zaman unclasped his hands from behind his back and tucked up his sleeves above his elbows before his father, being in a fit of fury; moreover, he added many words to his sire, knowing not what he said in the trouble of his spirits. the king was confounded and ashamed, for that this befel in the presence of his grandees and soldier-officers assembled on a high festival and a state occasion; but presently the majesty of kingship took him, and he cried out at his son and made him tremble. then he called to the guards standing before him and said, \"seize him!\\' so they came forward and laid hands on him and, binding him, brought him before his sire, who bade them pinion his elbows behind his back and in this guise make him stand before the presence. and the prince bowed down his head for fear and apprehension, and his brow and face were beaded and spangled with sweat; and shame and confusion troubled him sorely. thereupon his father abused him and reviled him and cried, \"woe to thee, thou son of adultery and nursling of abomination! how durst thou answer me on this wise before my captains and soldiers? but hitherto none hath chastised thee,\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the one hundred and seventy-fourth night,',\n", + " 'she said, it hath reached me, o auspicious king, that king shahriman cried out to his son kamar al-zaman, \"how durst thou answer me on this wise before my captains and soldiers? but hitherto none hath chastised thee. knowest thou not that this deed thou hast done were a disgrace to him had it been done by the meanest of my subjects?\" and the king commanded his mamelukes to loose his elbow bonds and imprison him in one of the bastions of the citadel. so they took the prince and thrust him into an old tower, wherein there was a dilapidated saloon and in its middle a ruined well, after having first swept it and cleansed its floor-flags and set therein a couch on which they laid a mattress, a leathern rug and a cushion; and then they brought a great lanthorn and a wax candle, for that place was dark, even by day. and lastly the mamelukes led kamar al-zaman thither, and stationed an eunuch at the door. and when all this was done, the prince threw himself on the couch, sad-spirited, and heavy- hearted; blaming himself and repenting of his injurious conduct to his father, whenas repentance availed him naught, and saying, \"allah curse marriage and marriageable and married women, the traitresses all! would i had hearkened to my father and accepted a wife! had i so done it had been better for me than this jail.\" this is how it fared with him; but as regards king shahri man, he remained seated on his throne all through the day until sundown; then he took the minister apart and said to him \"know thou, o wazir, that thou and thou only west the cause of all this that hath come to pass between me and my son by the advice thou west pleased to devise; and so what dost thou counsel me to do now?\" answered he, \"o king, leave thy son in limbo for the space of fifteen days: then summon him to thy presence and bid him wed; and assuredly he shall not gainsay thee again.\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the one hundred and seventy-fifth night,',\n", + " 'she said, it hath reached me, o auspicious king, that the wazir, said to king shahriman, \"leave thy son in limbo for the space of fifteen days; then summon him to thy presence and bid him wed; and assuredly he shall not gainsay thee again.\" the king accepted the wazir\\'s opinion and lay down to sleep that night troubled at heart concerning his son; for he loved him with dearest love because he had no other child but this; and it was his wont every night not to sleep, save after placing his arm under his son\\'s neck. so he passed that night in trouble and unease on the prince \\'s account, tossing from side to side, as he were laid on coals of artemisia-wood: for he was overcome with doubts and fears and sleep visited him not all that livelong night; but his eyes ran over with tears and he began repeating, ;',\n", + " '\"while slanderers slumber, longsome is my night; *',\n", + " 'suffice thee a heart so sad in parting-plight;',\n", + " 'i say, while night in care slow moments by, *',\n", + " '\\'what! no return for thee, fair morning light?\\'\"',\n", + " 'and the saying of another,',\n", + " '\"when saw i pleiad-stars his glance escape *',\n", + " 'and pole star draught of sleep upon him pour;',\n", + " 'and the bier-daughters wend in mourning dight, *',\n", + " 'i knew that morning was for him no more!\"',\n", + " 'such was the case with king shahriman; but as regards kamar al- zaman, when the night came upon him the eunuch set the lanthorn before him and lighting the wax-candle, placed it in the candlestick; then brought him somewhat of food. the prince ate a little and continually reproached himself for his unseemly treatment of his father, saying to himself, \"o my soul, knowest thou not that a son of adam is the hostage of his tongue, and that a man\\'s tongue is what casteth him into deadly perils?\" then his eyes ran over with tears and he bewailed that which he had done, from anguished vitals and aching heart, repenting him with exceeding repentance of the wrong wherewith he had wronged his father and repeating,',\n", + " '\"fair youth shall die by stumbling of the tongue: *',\n", + " \"stumble of foot works not man's life such wrong:\",\n", + " 'the slip of lip shall oft smite off the head, *',\n", + " 'while slip of foot shall never harm one long.\"',\n", + " 'now when he had made an end of eating, he asked for the wherewithal to wash his hands and when the mameluke had washed them clean of the remnants of food, he arose and made the wuzu-ablution and prayed the prayers of sundown and nightfall, conjoining them in one; after which he sat down.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the hundred and seventy-sixth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when the prince kamar al-zaman had prayed (conjoining them in one) the prayers of sundown and nightfall, he sat down on the well and began reciting the koran, and he repeated \"the cow,\" the \"house of imrán,\" and \"y. s.;\" \"the compassionate,\" \"blessed be the king,\" \"unity\" and \"the two talismans\\'\\'; and he ended with blessing and supplication and with saying, \"i seek refuge with allah from satan the stoned.\" then he lay down upon his couch which was covered with a mattress of satin from al- ma\\'adin town, the same on both sides and stuffed with the raw silk of irak; and under his head was a pillow filled with ostrich-down and when ready for sleep, he doffed his outer clothes and drew off his bag-trousers and lay down in a shirt of delicate stuff smooth as wax; and he donned a head-kerchief of azure marázi cloth; and at such time and on this guise kamar al-zaman was like the full-orbed moon, when it riseth on its fourteenth night. then, drawing over his head a coverlet of silk, he fell asleep with the lanthorn burning at his feet and the wax-candle over his head, and he ceased not sleeping through the first third of the night, not knowing what lurked for him in the womb of the future, and what the omniscient had decreed for him. now, as fate and fortune would have it, both tower and saloon were old and had been many years deserted; and there was therein a roman well inhabited by a jinniyah of the seed of iblis the accursed, by name maymúnah, daughter of al- dimiryát, a renowned king of the jánn.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the one hundred and seventy-seventh night,',\n", + " 'she said, it hath reached me, o auspicious king, that the name of the jinniyah in question was maymunah, daughter of al-dimiryat; a renowned king of the jann. and as kamar al-zaman continued sleeping till the first third of the night, maymunah came up out of the roman well and made for the firmament, thinking to listen by stealth to the converse of the angels; but when she reached the mouth of the well, she saw a light shining in the tower, contrary to custom; and having dwelt there many years without seeing the like, she said to herself, \"never have i witnessed aught like this\"; and, marvelling much at the matter, determined that there must be some cause therefor. so she made for the light and found the eunuch sleeping within the door; and inside she saw a couch spread, whereon was a human form with the wax-candle burning at his head and the lanthorn at his feet, and she wondered to see the light and stole towards it little by little. then she folded her wings and stood by the bed and, drawing back the coverlid, discovered kamar al-zaman\\'s face. she was motionless for a full hour in admiration and wonderment; for the lustre of his visage outshone that of the candle; his face beamed like a pearl with light; his eyelids were languorous like those of the gazelle; the pupils of his eyes were intensely black and brilliant; his cheeks were rosy red; his eye-brows were arched like bows and his breath exhaled a scent of musk, even as saith of him the poet,',\n", + " '\"i kissed him: darker grew those pupils, which *',\n", + " 'seduce my soul, and cheeks flushed rosier hue;',\n", + " 'o heart, if slanderers dare to deem there be *',\n", + " 'his like in chasms, say \\'bring him hither, you!\\' \"',\n", + " 'now when maymunah saw him, she pronounced the formula of praise, the flyer, \"i accept, o my lady, these conditions.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and seventy-eight night,',\n", + " 'she said, it hath reached me, o auspicious king, that dahnash spoke thus to maymunah, \"i accept, o my lady, these conditions.\" then he resumed, \"know, o my mistress, that i come to-night from the islands of the inland sea in the parts of china, which are the realms of king ghayúr, lord of the islands and the seas and the seven palaces. there i saw a daughter of his, than whom allah hath made none fairer in her time: i cannot picture her to thee, for my tongue would fail to describe her with her due of praise; but i will name to thee a somewhat of her charms by way of approach. now her hair is like the nights of disunion and separation and her face like the days of union and delectation; and right well hath the poet said when picturing her,',\n", + " \"'she dispread the locks from her head one night, *\",\n", + " 'showing four fold nights into one night run',\n", + " 'and she turned her visage towards the moon, *',\n", + " \"and two moons showed at moment one.'\",\n", + " \"she hath a nose like the edge of the burnished blade and cheeks like purple wine or anemones blood-red: her lips as coral and carnelian shine and the water of her mouth is sweeter than old wine; its taste would quench hell's fiery pain. her tongue is moved by wit of high degree and ready repartee: her breast is a seduction to all that see it (glory be to him who fashioned it and finished it!); and joined thereto are two upper arms smooth and rounded; even as saith of her the poet al-walahán,\",\n", + " \"'she hath wrists which, did her bangles not contain, *\",\n", + " \"would run from out her sleeves in silvern rain.'\",\n", + " 'she hath breasts like two globes of ivory, from whose brightness the moons borrow light, and a stomach with little waves as it were a figured cloth of the finest egyptian linen made by the copts, with creases like folded scrolls, ending in a waist slender past all power of imagination; based upon back parts like a hillock of blown sand, that force her to sit when she would fief stand, and awaken her, when she fain would sleep, even as saith of her and describeth her the poet,',\n", + " \"'she hath those hips conjoined by thread of waist, *\",\n", + " \"hips that o'er me and her too tyrannise\",\n", + " \"my thoughts they daze whene'er i think of them, *\",\n", + " \"and weigh her down whene'er she would uprise.'\",\n", + " 'and those back parts are upborne by thighs smooth and round and by a calf like a column of pearl, and all this reposeth upon two feet, narrow, slender and pointed like spear-blades, the handiwork of the protector and requiter, i wonder how, of their littleness, they can sustain what is above them. but i cut short my praises of her charms fearing lest i be tedious.\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the one hundred and seventy-ninth night,',\n", + " 'she said, it hath reached me, o auspicious king, that the ifrit dahnash bin shamhurish said to the ifritah maymunah, \"of a truth i cut short my praises fearing lest i be tedious.\" now when maymunah heard the description of that princess and her beauty and loveliness, she stood silent in astonishment; whereupon dahnash resumed, \"the father of this fair maiden is a mighty king, a fierce knight, immersed night and day in fray and fight; for whom death hath no fright and the escape of his foe no dread, for that he is a tyrant masterful and a conqueror irresistible, lord of troops and armies and continents and islands, and cities and villages, and his name is king ghayur, lord of the islands and of the seas and of the seven palaces. now he loveth his daughter, the young maiden whom i have described to thee, with dearest love and, for affection of her, he hath heaped together the treasures of all the kings and built her therewith seven palaces, each of a different fashion; the first of crystal, the second of marble, the third of china steel, the fourth of precious stones and gems of price, the fifth of porcelain and many-hued onyxes and ring bezels, the sixth of silver and the seventh of gold. and he hath filled the seven palaces with all sorts of sumptuous furniture, rich silken carpets and hangings and vessels of gold and silver and all manner of gear that kings require; and hath bidden his daughter to abide in each by turns for a certain season of the year; and her name is the princess budur. now when her beauty became known and her name and fame were bruited abroad in the neighbouring countries, all the kings sent to her father to demand her of him in marriage, and he consulted her on the matter, but she disliked the very word wedlock with a manner of abhorrence and said, o my father, i have no mind to marry; no, not at all; for i am a sovereign lady and a queen suzerain ruling over men, and i have no desire for a man who shall rule over me. and the more suits she refused, the more her suitors\\' eagerness increased and all the royalties of the inner islands of china sent presents and rarities to her father with letters asking her in marriage. so he pressed her again and again with advice on the matter of espousals; but she ever opposed to him refusals, till at last she turned upon him angrily and cried, \\'o my father, if thou name matrimony to me once more, i will go into my chamber and take a sword and, fixing its hilt in the ground, will set its point to my waist; then will i press upon it, till it come forth from my back, and so slay myself.\\' now when the king heard these her words, the light became darkness in his sight and his heart burned for her as with a flame of fire, because he feared lest she should kill herself; and he was filled with perplexity concerning her affair and the kings her suitors. so he said to her \\'if thou be determined not to marry and there be no help for it abstain from going and coming in and out.\\' then he placed her in a house and shut her up in a chamber, appointing ten old women as duennas to guard her, and forbade her to go forth to the seven palaces; moreover, he made it appear that he was incensed against her, and sent letters to all the kings, giving them to know that she had been stricken with madness by the jinns; and it is now a year since she hath thus been secluded.\" then continued the ifrit dahnash, addressing the ifritah maymunah, \"and i, o my lady go to her every night and take my fill of feeding my sight on her face and i kiss her between the eyes: yet, of my love to her, i do her no hurt neither mount her, for that her youth is fair and her grace surpassing: every one who seeth her jealouseth himself for her. i conjure thee, therefore, o my lady, to go back with me and look on her beauty and loveliness and stature and perfection of proportion; and after, if thou wilt, chastise me or enslave me; and win to thy will, for it is shine to bid and to forbid.\" so saying, the ifrit dahnash bowed his head towards the earth and drooped his wings downward; but maymunah laughed at his words and spat in his face and answered, \"what is this girl of whom thou pratest but a potsherd wherewith to wipe after making water? faugh! faugh! by allah, o accursed, i thought thou hadst some wondrous tale to tell me or some marvellous news to give me. how would it be if thou were to sight my beloved? verily, this night i have seen a young man, whom if thou saw though but in a dream, thou wouldst be palsied with admiration and spittle would flow from thy mouth.\" asked the ifrit, \"and who and what is this youth?\"; and she answered, \"know, o dahnash, that there hath befallen the young man the like of what thou tellest me befel thy mistress; for his father pressed him again and again to marry, but he refused, till at length his sire waxed wroth at being opposed and imprisoned him in the tower where i dwell: and i came up to-night and saw him.\" said dahnash, \"o my lady, shew me this youth, that i may see if he be indeed handsomer than my mistress, the princess budur, or not; for i cannot believe that the like of her liveth in this our age.\" rejoined maymunah, \"thou liest, o accursed, o most ill-omened of marids and vilest of satans! sure am i that the like of my beloved is not in this world.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and eightieth night,',\n", + " 'she said, it hath reached me, o auspicious king, that the ifritah maymunah spake thus to the ifrit dahnash, \"sure am i that the like of my beloved is not in this world! art thou mad to fellow thy beloved with my beloved?\" he said, \"allah upon thee, o my lady, go back with me and look upon my mistress, and after i will with thee and look upon thy beloved.\" she answered, \"it must needs be so, o accursed, for thou art a knavish devil; but i will not go with thee nor shalt thou come with me, save upon condition of a wager which is this. if the lover thou lovest and of whom thou boastest so bravely, prove handsomer than mine whom i mentioned and whom i love and of whom i boast, the bet shall be shine against me; but if my beloved prove the handsomer the bet shall be mine against thee.\" quoth dahnash the ifrit, \"o my lady, i accept this thy wager and am satisfied thereat; so come with me to the islands.\" quoth maymunah; \"no! for the abode of my beloved is nearer than the abode of shine: here it is under us; so come down with me to see my beloved and after we will go look upon thy mistress.\" \"i hear and i obey,\" said dahnash. so they descended to earth and alighted in the saloon which the tower contained; then maymunah stationed dahnash beside the bed and, putting out her hand, drew back the silken coverlet from kamar al-zaman\\'s face, when it glittered and glistened and shimmered and shone like the rising sun. she gazed at him for a moment, then turning sharply round upon dahnash said, \"look, o accursed, and be not the basest of madmen; i am a maid, yet my heart he hath waylaid.\" so dahnash looked at the prince and long continued gazing steadfastly on him then, shaking his head, said to maymunah, \"by allah, o my lady, thou art excusable; but there is yet another thing to be considered, and this is, that the estate female differeth from the male. by allah\\'s might, this thy beloved is the likest of all created things to my mistress in beauty and loveliness and grace and perfection; and it is as though they were both cast alike in the mould of seemlihead.\" now when maymunah heard these words, the light became darkness in her sight and she dealt him with her wing so fierce a buffet on the head as well-nigh made an end of him. then quoth she to him, \"i conjure thee, by the light of his glorious countenance, go at once, o accursed, and bring hither thy mistress whom thou lovest so fondly and foolishly, and return in haste that we may lay the twain together and look on them both as they lie asleep side by side; so shall it appear to us which be the goodlier and more beautiful of the two. except thou obey me this very moment, o accursed, i will dart my sparks at thee with my fire and consume thee; yea, in pieces i will rend thee and into the deserts cast thee, that to stay at home and wayfarer an example thou be!\" quoth dahnash, \"o my lady, i will do thy behests, for i know forsure that my mistress is the fairer and the sweeter.\" so saying the if rit flew away and maymunah flew with him to guard him. they were absent awhile and presently returned, bearing the young lady, who was clad in a shift of fine venetian silk, with a double edging of gold and purfled with the most exquisite of embroidery having these couplets worked upon the ends of the sleeves,',\n", + " '\"three matters hinder her from visiting us, in fear *',\n", + " 'of hate-full, slandering envier and his hired spies:',\n", + " \"the shining light of brow, the trinkets' tinkling voice, *\",\n", + " \"and scent of essences that tell whene'er she tries:\",\n", + " \"gi'en that she hide her brow with edge of sleeve, and leave *\",\n", + " 'at home her trinketry, how shall her scent',\n", + " \"disguise?''\",\n", + " 'and dahnash and maymunah stinted not bearing that young lady till they had carried her into the saloon and had laid her beside the youth kamar al-zaman.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the one hundred and eighty-first night,',\n", + " 'she said, it hath reached me, o auspicious king, that the ifrit dahnash and the ifritah maymunah stinted not bearing princess budur till they descended and laid her on the couch beside kamar al- zaman. then they uncovered both their faces, and they were the likest of all folk, each to other, as they were twins or an only brother and sister; and indeed they were a seduction to the pious, even as saith of them the poet al-mubín,',\n", + " '\"o heart! be not thy love confined to one, *',\n", + " 'lest thou by doting or disdain be undone:',\n", + " 'love all the fair, and thou shalt find with them *',\n", + " 'if this be lost, to thee that shall be won.\"',\n", + " 'and quoth another,',\n", + " '\"mine eyes beheld two lying on the ground; *',\n", + " 'both had i loved if on these eyne they lay!\"',\n", + " 'so dahnash and maymunah gazed on them awhile, and he said, \"by allah, o my lady, it is good! my mistress is assuredly the fairer.\" she replied, \"not so, my beloved is the fairer; woe to thee, o dahnash! art blind of eye and heart that lean from fat thou canst not depart? wilt thou hide the truth? dost thou not see his beauty and loveliness and fine stature and symmetry? out on thee, hear what i purpose to say in praise of my beloved and, if thou be a lover true to her thou dost love, do thou the like for her thou lovest.\" then she kissed kamar al-zaman again and again between the eyes and improvised this ode,',\n", + " '\"how is this? why should the blamer abuse thee in his pride?',\n", + " 'what shall console my heart for thee, that art but slender bough?',\n", + " \"a nature kohl'd eye thou hast that witcheth far and wide;\",\n", + " 'from pure platonic love of it deliverance none i trow!',\n", + " 'those glances, fell as plundering turk, to heart such havoc deal',\n", + " 'as never havocked scymitar made keenest at the curve.',\n", + " 'on me thou layest load of love the heaviest while i feel',\n", + " 'so feeble grown that under weight of chemisette i swerve.',\n", + " 'my love for thee as wottest well is habit, and my lowe',\n", + " 'is nature; to all others false is all the love i tender:',\n", + " 'now were my heart but like to shine i never would say no;',\n", + " 'only my wasted form is like thy waist so gracious slender:',\n", + " \"out on him who in beauty's robe for moon like charms hath fame,\",\n", + " 'and who is claimed by mouth of men as marvel of his tribe!',\n", + " \"'of man what manner may he be' (ask they who flyte and blame)\",\n", + " \"'for whom thy heart is so distressed?' i only cry 'describe!'\",\n", + " 'oh stone-entempered heart of him! learn of his yielding grace',\n", + " 'and bending form to show me grace and yielding to consent.',\n", + " 'oh my prince beautiful, thou hast an overseer in place',\n", + " \"who irketh me, and eke a groom whose wrong cloth ne'er relent.\",\n", + " 'indeed he lieth who hath said that all of loveliness',\n", + " \"was pent in joseph: in thy charms there's many and many a joe!\",\n", + " 'the genii dread me when i stand and face to face address;',\n", + " 'but meeting thee my fluttering heart its shame and terror show.',\n", + " 'i take aversion semblance and i turn from thee in fright,',\n", + " 'but more aversion i assume, more love from me dost claim;',\n", + " 'that hair of jetty black! that brow e\\'er raying radiant light! those eyne wherein white jostles black! that dearling dainty frame!\"',\n", + " 'when dahnash heard the poesy which maymunah spake in praise of her beloved, he joyed with exceeding joy and marvelled with excessive wonderment.—and shahrazad perceived the dawn of day and ceased to say her permitted say',\n", + " 'when it was the one hundred and eighty-second night,',\n", + " 'she said, it hath reached me, o auspicious king, that when the ifrit dahnash heard the poesy which maymunah spake in praise of her beloved, he shook for exceeding joy and said, \"thou hast celebrated thy beloved in song and thou hast indeed done well in praise of him whom thou lovest! and there is no help for it but that i also in my turn do my best to enfame my mistress, and recite somewhat in her honour.\" then the ifrit went up to the lady budur; and\\' kissing her between the eyes, looked at maymunah and at his beloved princess and recited the following verses, albeit he had no skill in poesy,',\n", + " '\"love for my fair they chide in angry way; *',\n", + " 'unjust for ignorance, yea unjustest they!',\n", + " 'ah lavish favours on the love mad, whom *',\n", + " 'taste of thy wrath and parting woe shall slay:',\n", + " \"in sooth for love i'm wet with railing tears, *\",\n", + " 'that rail mine eyelids blood thou mightest say:',\n", + " \"no marvel what i bear for love, 'tis marvel *\",\n", + " 'that any know my \"me\" while thou\\'rt away:',\n", + " 'unlawful were our union did i doubt *',\n", + " 'thy love, or heart incline to other may.\"',\n", + " 'and eke these words:—',\n", + " '\"i feed eyes on their stead by the valley\\'s side, *',\n", + " \"and i'm slain and my slaver aside hath tried:\",\n", + " 'grief-wine have i drunken, and down my cheeks *',\n", + " 'dance tears to the song of the camel-guide:',\n", + " 'for union-blessing i strive though sure, *',\n", + " \"in budur and su'ad all my bliss shall bide:\",\n", + " \"wot i not which of three gave me most to 'plain, *\",\n", + " 'so hear them numbered ere thou decide:',\n", + " 'those sworders her eyne, that lancer her fig- *',\n", + " \"-ure, or ring-mail'd locks which her forehead hide.\",\n", + " 'quoth she (and i ask of her what so wights *',\n", + " 'or abide in towns or in desert ride )',\n", + " \"to me, 'in thy heart i dwell, look there!' *\",\n", + " 'quoth i, \\'where\\'s my heart ah where? ah where?\\'\"',\n", + " 'when maymunah heard these lines from the ifrit, she said, \"thou hast done well, o dahnash! but say thou which of the two is the handsomer?\" and he answered, \"my mistress budur is handsomer than thy beloved!\" cried maymunah, \"thou liest, o accursed. nay, my beloved is more beautiful than shine!\" but dahnash persisted, \"mine is the fairer.\" and they ceased not to wrangle and challenge each other\\'s words till maymunah cried out at dahnash and would have laid violent hands on him, but he humbled himself to her and, softening his speech, said, \"let not the truth be a grief to thee, and cease we this talk, for all we say is to testify in favour of our lovers; rather let each of us withdraw the claim and seek we one who shall judge fairly between us which of the two be fairer; and by his sentence we will abide.\" \"i agree to this,\" answered she and smote the earth with her foot, whereupon there came out of it an ifrit blind of an eye, humpbacked and scurvy-skinned, with eye-orbits slit up and down his face. on his head were seven horns and four locks of hair fell to his heels; his hands were pitchfork-like and his legs mast-like and he had nails as the claws of a lion, and feet as the hoofs of the wild ass. when that if rit rose out of the earth and sighted maymunah, he kissed the ground before her and, standing with his hands clasped behind him, said, \"what is thy will, o my mistress, o daughter of my king?\" she replied, \"o kashkash, i would have thee judge between me and this accursed dahnash.\" and she made known to him the matter, from first to last, whereupon the ifrit kashkash looked at the face of the youth and then at the face of the girl; and saw them lying asleep, embraced, each with an arm under the other\\'s neck, alike in beauty and loveliness and equal in grace and goodliness. the marid gazed long upon them, marvelling at their seemlihead; and, after carefully observing the twain, he turned to maymunah and dahnash, and reseated these couplets.',\n", + " '\"go, visit her thou lovest, and regard not',\n", + " 'the words detractors utter, envious churls',\n", + " 'can never favour love. oh! sure the merciful',\n", + " \"ne'er made a thing more fair to look upon,\",\n", + " \"than two fond lovers in each others' arms,\",\n", + " 'speaking their passion in a mute embrace.',\n", + " 'when heart has turned to heart, the fools would part them',\n", + " \"strike idly on cold steel. so when thou'st found\",\n", + " 'one purely, wholly shine, accept her true heart,',\n", + " 'and live for her alone. oh! thou that blamest',\n", + " \"the love-struck for their love, give o'er thy talk,\",\n", + " 'how canst thou minister to a mind diseased?\"',\n", + " 'then he turned again to maymunah and dahnash and said to them, \"by allah, if you will have the truth, i tell you fairly the twain be equal in beauty, and loveliness and perfect grace and goodliness, nor can i make any difference between them on account of their being man and woman. but i have another thought which is that we wake each of them in turn, without the knowledge of the other, and whichever is the more enamoured shall be held inferior in seemlihead and comeliness.\" quoth maymunah, \"right is this recking,\" and quoth dahnash, \"i consent to this.\" then dahnash changed himself to the form of a flea and bit kamar al-zaman, whereupon he started from sleep in a fright.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and eighty-third night,',\n", + " 'she said, it hath reached me, o auspicious king, that dahnash changed himself to the form of a flea and bit kamar al-zaman who started from sleep in a fright and rubbed the bitten part, his neck, and scratched it hard because of the smart. then turning sideways, he found lying by him something whose breath was sweeter than musk and whose skin was softer than cream. hereat marvelled he with great marvel and he sat up and looked at what lay beside him; when he saw it to be a young lady like an union pearl, or a shining sun, or a dome seen from afar on a well built wall; for she was five feet tall, with a shape like the letter alif, bosomed high and rosy checked; even as saith of her the poet,',\n", + " '\"four things which ne\\'er conjoin, unless it be *',\n", + " 'to storm my vitals and to shed my blood:',\n", + " 'brow white as day and tresses black as night *',\n", + " 'cheeks rosy red and lips which smiles o\\'erflood.\"',\n", + " 'and also quoth another,',\n", + " '\"a moon she rises, willow wand she waves, *',\n", + " 'breathes ambergris, and gazes, a gazelle:',\n", + " 'meseems that sorrow woes my heart and wins *',\n", + " 'and, when she wendeth hastes therein to dwell!\"',\n", + " 'and when kamar al-zaman saw the lady budur, daughter of king ghayur, and her beauty and comeliness, she was sleeping clad in a shift of venetian silk, without her petticoat-trousers, and wore on her head a kerchief embroidered with gold and set with stones of price: her ears were hung with twin earrings which shone like constellations and round her neck was a collar of union pearls, of size unique, past the competence of any king. when he saw this, his reason was confounded and natural heat began to stir in him; allah awoke in him the desire of coition and he said to himself, \"whatso allah willeth, that shall be, and what he willeth not shall never be!\" so saying, he put out his hand and, turning her over, loosed the collar of her chemise; then arose before his sight her bosom, with its breasts like double globes of ivory; whereat his inclination for her redoubled and he desired her with exceeding hot desire, he would have awakened her but she would not awake, for dahnash had made her sleep heavy; so he shook her and moved her, saying, \"o my beloved, awake and look on me; i am kamar al-zaman.\" but she awoke not, neither moved her head; where-upon he considered her case for a long hour and said to himself, \"if i guess aright, this is the damsel to whom my father would have married me and these three years past i have refused her; but inshallah!—god willing—as soon as it is dawn, i will say to him, \\'marry me to her, that i may enjoy her.\\'\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and eighty-fourth night,',\n", + " 'she said, it hath reached me, o auspicious king, that kamar al- zaman said to himself, \"by allah, when i see dawn i will say to my sire, \\'marry me to her that i may enjoy her\\'; nor will i let half the day pass ere i possess her and take my fill of her beauty and loveliness.\" then he bent over budur to buss her, whereat the jinniyah maymunah trembled and was abashed and dahnash, the ifrit, was like to fly for joy. but, as kamar al- zaman was about to kiss her upon the mouth, he was ashamed before allah and turned away his head and averted his face, saying to his heart, \"have patience.\" then he took thought awhile and said, \"i will be patient; haply my father when he was wroth with me and sent me to this jail, may have brought my young lady and made her lie by my side to try me with her, and may have charged her not to be readily awakened when i would arouse her, and may have said to her, \\'whatever thing kamar al-zaman do to thee, make me ware thereof\\'; or belike my sire standeth hidden in some stead whence (being himself unseen) he can see all i do with this young lady; and to morrow he will scold me and cry, \\'how cometh it that thou sayest, i have no mind to marry; and yet thou didst kiss and embrace yonder damsel?\\' so i will withhold myself lest i be ashamed before my sire; and the right and proper thing to do is not to touch her at this present, nor even to look upon her, except to take from her somewhat which shall serve as a token to me and a memorial of her; that some sign endure between me and her.\" then kamar al-zaman raised the young lady\\'s hand and took from her little finger a seal-ring worth an immense amount of money, for that its bezel was a precious jewel and around it were graven these couplets,',\n", + " '\"count not that i your promises forgot, *',\n", + " 'despite the length of your delinquencies',\n", + " 'be generous, o my lord, to me inclining; *',\n", + " 'haply your mouth and cheeks these lips may kiss:',\n", + " \"by allah, ne'er will i relinquish you *\",\n", + " 'albe you will transgress love\\'s boundaries.\"',\n", + " 'then kamar al-zaman took the seal-ring from the little finger of queen budur and set it on his own; then, turning his back to her, went to sleep. when maymunah the jinniyah saw this, she was glad and said to dahnash and kashkash, \"saw ye how my beloved kamar al-zaman bore himself chastely towards this young lady? verily, this was of the perfection of his good gifts; for observe you twain how he looked on her and noted her beauty and loveliness, and yet embraced her not neither kissed her nor put his hand to her, but turned his back and slept.\" answered they, \"even so!\" thereupon maymunah changed herself into a flea and entering into the raiment of budur, the loved of dahnash, crept up her calf and came upon her thigh and, reaching a place some four carats below her navel, there bit her. thereupon she opened her eyes and sitting up in bed, saw a youth lying beside her and breathing heavily in his sleep, the loveliest of almighty allah\\'s creatures, with eyes that put to shame the fairest houris of heaven; and a mouth like solomon\\'s seal, whose water was sweeter to the taste and more efficacious than a theriack, and lips the colour of coral-stone, and cheeks like the blood red anemone, even as saith one, describing him in these couplets,',\n", + " '\"my mind\\'s withdrawn from zaynab and nawár *',\n", + " 'by rosy cheeks that growth of myrtle bear;',\n", + " 'i love a fawn, a tunic-vested boy, *',\n", + " 'and leave the love of bracelet-wearing fair:',\n", + " 'my mate in hall and closet is unlike *',\n", + " 'her that i play with, as at home we pair.',\n", + " \"oh thou, who blam'st my flight from hind and zaynab, *\",\n", + " 'the cause is clear as dawn uplighting air!',\n", + " \"would'st have me fare a slave, the thrall of thrall, *\",\n", + " 'cribbed, pent, confined behind the bar and wall?\"',\n", + " 'now when princess budur saw him, she was seized by a transport of passion and yearning and love-longing,—and shahrazad per ceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the one hundred and eighty-fifth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when princess budur saw kamar al-zaman she was forthwith seized with a transport of passion and yearning and love longing, and she said to herself, \"alas, my shame! this is a strange youth and i know him not. how cometh he to be lying by my side on one bed?\" then she looked at him a second time and, noting his beauty and loveliness, said, \"by allah, he is indeed a comely youth and my heart and she was ashamed of her own shamelessness. then she plucked his seal-ring from his finger, and put it on her own instead of the ring he had taken, and bussed his inner lips and hands, nor did she leave any part of him unkissed; after which she took him to her breast and embraced him and, laying one of her hands under his neck and the other under his arm-pit, nestled close to him and fell asleep by his side.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and eighty-sixth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when princess budur fell asleep by the side of kamar al-zaman, after doing that which she did, quoth maymunah to dahnash, night thou, o accursed, how proudly and coquettishly my beloved bore himself, and how hotly and passionately thy mistress showed herself to my dearling? there can be no doubt that my beloved is handsomer than shine; nevertheless i pardon thee.\" then she wrote him a document of manumission and turned to kashkash and said, \"go, help dahnash to take up his mistress and aid him to carry her back to her own place, for the night waneth apace and there is but little left of it.\" \"i hear and i obey;\" answered kashkash. so the two ifrits went forward to princess budur and upraising her flew away with her; then, bearing her back to her own place, they laid her on her bed, whilst maymunah abode alone with kamar al-zaman, gazing upon him as he slept, till the night was all but spent, when she went her way. as soon as morning morrowed, the prince awoke from sleep and turned right and left, but found not the maiden by him and said in his mind, \"what is this business? it is as if my father would incline me to marriage with the damsel who was with me and have now taken her away by stealth, to the intent that my desire for wedlock may redouble.\" then he called out to the eunuch who slept at the door, saying, \"woe to thee, o damned one, arise at once!\" so the eunuch rose, bemused with sleep, and brought him basin and ewer, whereupon kamar al-zaman entered the water closet and did his need; then, coming out made the wuzu-ablution and prayed the dawn-prayer, after which he sat telling on his beads the ninety-and-nine names of almighty allah. then he looked up and, seeing the eunuch standing in service upon him, said, \"out on thee, o sawáb! who was it came hither and took away the young lady from my side and i still sleeping?\" asked the eunuch, \\'o my lord, what manner of young lady?\" \"the young lady who lay with me last night,\" replied kamar al-zaman. the eunuch was startled at his words and said to him, \"by allah, there hath been with thee neither young lady nor other! how should young lady have come in to thee, when i was sleeping in the doorway and the door was locked? by allah, o my lord, neither male nor female hath come in to thee!\" exclaimed the prince, \"thou liest, o pestilent slave!: is it of thy competence also to hoodwink me and refuse to tell me what is become of the young lady who lay with me last night and decline to inform me who took her away?\" replied the eunuch (and he was affrighted at him), \"by allah, o my lord, i have seen neither young lady nor young lord!\" his words only angered kamar al-zaman the more and he said to him, \"o accursed one, my father hath indeed taught thee deceit! come hither.\" so the eunuch came up to him, and the prince took him by the collar and dashed him to the ground; whereupon he let fly a loud fart and kamar al-zaman, kneeling upon him, kicked him and throttled him till he fainted away. then he dragged him forth and tied him to the well-rope, and let him down like a bucket into the well and plunged him into the water, then drew him up and lowered him down again. now it was hard winter weather, and kamar al-zaman ceased not to plunge the eunuch into the water and pull him up again and douse him and haul him whilst he screamed and called for help; and the prince kept on saying \"by allah, o damned one, i will not draw thee up out of this well till thou tell me and fully acquaint me with the story of the young lady and who it was took her away, whilst i slept.\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the one and eighty-seventh night,',\n", + " 'she said, it hath reached me, o auspicious king, that kamar al- zaman said to the eunuch, \"by allah! i will not draw thee up out of this well until thou tell me the story of the young lady and who it was took her away whilst i slept.\" answered the eunuch, after he had seen death staring him in the face; \"o my lord, let me go and i will relate to thee the truth and the whole tale.\" so kamar al-zaman pulled him up out of the well, all but dead for suffering, what with cold and the pain of dipping and dousing, drubbing and dread of drowning. he shook like cane in hurricane, his teeth were clenched as by cramp and his clothes were drenched and his body befouled and torn by the rough sides of the well: briefly he was in a sad pickle. now when kamar al-zaman saw him in this sorry plight, he was concerned for him; but, as soon as the eunuch found himself on the floor, he said to him, \"o my lord, let me go and doff my clothes and wring them out and spread them in the sun to dry, and don others; after which i will return to thee forthwith and tell thee the truth of the matter.\" answered the prince, \"o rascal slave! hadst thou not seen death face to face, never hadst thou confessed to fact nor told me a word; but go now and do thy will, and then come back to me at once and tell me the truth.\" thereupon the eunuch went out, hardly crediting his escape, and ceased not running, stumbling and rising in his haste, till he came in to king shahriman, whom he found sitting at talk with his wazir of kamar al-zaman\\'s case. the king was saying to the minister, \"i slept not last night, for anxiety concerning my son, kamar al-zaman and indeed i fear lest some harm befal him in that old tower. what good was there in imprisoning him?\" answered the wazir, \"have no care for him. by allah, no harm will befal him! none at all! leave him in prison for a month till his temper yield and his spirit be broken and he return to his senses.\" as the two spoke behold, up rushed the eunuch, in the aforesaid plight, making to the king who was troubled at sight of him; and he cried \"o our lord the sultan! verily, thy son\\'s wits are fled and he hath gone mad, he hath dealt with me thus and thus, so that i am become as thou seest me, and he kept saying, \\'a young lady lay with me this night and stole away secretly whilst i slept. where is she?\\' and he insisteth on my letting him know where she is and on my telling him who took her away. but i have seen neither girl nor boy: the door was locked all through the night, for i slept before it with the key under my head, and i opened to him in the morning with my own hand. when king shahriman heard this, he cried out, saying, \"alas, my son!;\" and he was enraged with sore rage against the wazir, who had been the cause of all this case and said to him, \"go up, bring me news of my son and see what hath befallen his mind.\" so the wazir rose and, stumbling over his long skirts, in his fear of the king\\'s wrath, hastened with the slave to the tower. now the sun had risen and when the minister came in to kamar al-zaman, he found him sitting on the couch reciting the koran; so he saluted him and seated himself by his side, and said to him, \"o my lord, this wretched eunuch brought us tidings which troubled and alarmed us and which incensed the king.\" asked kamar al-zaman, \"and what hath he told you of me to trouble my father? in good sooth he hath troubled none but me.\" answered the wazir, \"he came to us in fulsome state and told us of thee a thing which heaven forfend; and the slave added a lie which it befitteth not to repeat, allah preserve thy youth and sound sense and tongue of eloquence, and forbid to come from thee aught of offense!\" quoth the prince, \"o wazir, and what thing did this pestilent slave say of me?\" the minister replied, \"he told us that thy wits had taken leave of thee and thou wouldst have it that a young lady lay with thee last night, and thou west instant with him to tell thee whither she went and thou diddest torture him to that end.\" but when kamar al-zaman heard these words, he was enraged with sore rage and he said to the wazir, \"\\'tis manifest to me in very deed that you people taught the eunuch to do as he did.\"—and shahrazad perceived the dawn of day and ceased to say her per misted say.',\n", + " 'when it was the one hundred and eighty-eighth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when kamar al-zaman heard the words of the wazir he was enraged with sore rage and said to him, \"\\'tis manifest to me in very deed that you people taught the eunuch to do as he did and forbade him to tell me what became of the young lady who lay with me last night. but thou, o wazir, art cleverer than the eunuch, so do thou tell me without stay or delay, whither went the young lady who slept on my bosom last night; for it was you who sent her and bade her steep in my embrace and we lay together till dawn; but, when i awoke, i found her not. so where is she now?\" said the wazir, \"o my lord kamar al-zaman, allah\\'s name encompass thee about! by the almighty, we sent none to thee last night, but thou layest alone, with the door locked on thee and the eunuch sleeping behind it, nor did there come to thee young lady or any other. regain thy reason, o my lord, and stablish thy senses and occupy not thy mind with vanities.\" rejoined kamar al-zaman who was incensed at his words, \"o wazir, the young lady in question is my beloved, the fair one with the black eyes and rosy cheeks, whom i held in my arms all last night.\" so the minister wondered at his words and asked him, \"didst thou see this damsel last night with shine own eyes on wake or in sleep?\" answered kamar al-zaman, \"o ill- omened old man, dost thou fancy i saw her with my ears? indeed, i saw her with my very eyes and awake, and i touched her with my hand, and i watched by her full half the night, feeding my vision on her beauty and loveliness and grace and tempting looks. but you had schooled her and charged her to speak no word to me; so she feigned sleep and i lay by her side till dawn, when i awoke and found her gone.\" rejoined the wazir, \"o my lord kamar al- zaman, haply thou sawest this in thy sleep; it must have been a delusion of dreams or a deception caused by eating various kinds of food, or a suggestion of the accursed devils.\" cried the prince, \"o pestilent old man! wilt thou too make a mock of me and tell me this was haply a delusion of dreams, when that eunuch confessed to the young lady, saying, \\'at once i will return to thee and tell thee all about her?\\'\" with these words, he sprang up and rushed at the wazir and gripped hold of his beard (which was long) and, after gripping it, he twisted his hand in it and haling him off the couch, threw him on the floor. it seemed to the minister as though his soul departed his body for the violent plucking at his beard; and kamar al-zaman ceased not kicking the wazir and basting his breast and ribs and cuffing him with open hand on the nape of his neck till he had well-nigh beaten him to death. then said the old man in his mind, \"just as the eunuch-slave saved his life from this lunatic youth by telling him a lie, thus it is even fitter that i do likewise; else he will destroy me. so now for my lie to save myself, he being mad beyond a doubt.\" then he turned to kamar al-zaman and said, \"o my lord, pardon me; for indeed thy father charged me to conceal from thee this affair of the young lady; but now i am weak and weary and wounded with funding; for i am an old man and lack strength and bottom to endure blows. have, therefore, a little patience with me and i will tell thee all and acquaint thee with the story of the young woman.\" when the prince heard this, he left off drubbing him and said, \"wherefore couldst thou not tell me the tale until after shame and blows? rise now, unlucky old man that thou art, and tell me her story.\" quoth the wazir, \"say, dost thou ask of the young lady with the fair face and perfect form?\" quoth kamar al-zaman, \"even so! tell me, o wazir, who it was that led her to me and laid her by my side, and who was it that took her away from me by night; and let me know forthright whither she is gone, that i myself may go to her at once. if my father did this deed to me that he might try me by means of that beautiful girl, with a view to our marriage, i consent to wed her and free myself of this trouble; for he did all these dealings with me only because i refused wedlock. but now i consent and i say again, i consent to matrimony: so tell this to my father, o wazir, and advise him to marry me to that young lady; for i will have none other and my heart loveth none save her alone. now rise up at once and haste thee to my father and counsel him to hurry on our wedding and bring me his answer within this very hour.\" rejoined the wazir, \"\\'tis well!\" and went forth from him, hardly believing himself out of his hands. then he set off from the tower, walking and tripping up as he went, for excess of fright and agitation, and he ceased not hurrying till he came in to king shahriman.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the one hundred and eighty-nineth night,',\n", + " 'she said, it hath reached me, o auspicious king, that the wazir, fared forth from the tower, and ceased not running till he came in to king shahriman, who said to him as he sighted him, \"o thou wazir, what man hath brought thee to grief and whose mischief hath treated thee in way unlief; how happeneth it that i see thee dumb foundered and coming to me thus astounded?\" replied the wazir, \"o king! i bring thee good news.\" \"and what is it?\" quoth shahriman, and quoth the wazir, \"know that thy son kamar al- zaman\\'s wits are clean gone and that he hath become stark mad.\" now when the king heard these words of the minister, light became darkness in his sight and he said, \"o wazir, make clear to me the nature of his madness.\" answered the wazir, \"o my lord, i hear and i obey.\" then he told him that such and such had passed and acquainted him with all that his son had done; whereupon the king said to him, \"hear, o wazir, the good tidings which i give thee in return for this thy fair news of my son\\'s insanity; and it shall be the cutting off of thy head and the forfeiture of my favour, o most ill-omened of wazirs and foulest of emirs! for i feel that thou hast caused my son\\'s disorder by the wicked advice and the sinister counsel thou hast given me first and last. by allah, if aught of mischief or madness have befallen my son i will most assuredly nail thee upon the palace dome and make thee drain the bitterest draught of death!\\'\\' then he sprang up and, taking the wazir, with him, fared straight for the tower and entered it. and when kamar al-zaman saw the two, he rose to his father in haste from the couch whereon he sat and kissing his hands drew back and hung down his head and stood before him with his arms behind him, and thus remained for a full hour. then he raised his head towards his sire; the tears gushed from his eyes and streamed down his cheeks and he began repeating,',\n", + " '\"forgive the sin \\'neath which my limbs are trembling,',\n", + " 'for the slave seeks for mercy from his master;',\n", + " \"i've done a fault, which calls for free confession,\",\n", + " \"where shall it call for mercy, and forgiveness?''\",\n", + " 'when the king heard this, he arose and embraced his son, and kissing him between the eyes, made him sit by his side on the couch; then he turned to the wazir, and, looking on him with eyes of wrath, said, \"o dog of wazirs, how didst thou say of my son such and such things and make my heart quake for him?\" then he turned to the prince and said, \"o my son, what is to-day called?\" he answered, \"o my father, this day is the sabbath, and to morrow is first day: then come second day, third, fourth, fifth day and lastly friday.\" what damsel is this of whom thou speakest?\" then kamar al-zaman laughed at his father\\'s words and replied, \"o my father, know that i can bear no more jesting; so add me not another mock or even a single word on the matter, for my temper hath waxed short by that you have done with me. and know, o my father, with assured knowledge, that i consent to marry, but on condition that thou give me to wife her who lay by my side this night; for i am certain it was thou sentest her to me and madest me in love with her and then despatchedst a message to her before the dawn and tookest her away from beside me.\" rejoined the king, \"the name of allah encompass thee about, o my son, and be thy wit preserved from witlessness!\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and ninetieth night,',\n", + " 'she said, it hath reached me, o auspicious king, that quoth king shahriman to his son kamar al-zaman, \"the name of allah encompass thee about, o my son, and be thy wit preserved from witlessness! what thing be this young lady whom thou fanciest i sent to thee last night and then again that i sent to withdraw her from thee before dawn? by the lord, o my son, i know nothing of this affair, and allah upon thee, tell me if it be a delusion of dreaming or a deception caused by indisposition. for verily thou layest down to sleep last night with thy mind occupied anent marriage and troubled with the talk of it (allah damn marriage and the hour when i spake of it and curse him who counselled it!); and without doubt or diffidence i can say that being moved in mind by the mention of wedlock thou dreamedst that a handsome young lady embraced thee and didst fancy thou sawest her when awake. but all this, o my son, is but an imbroglio of dreams.\" replied kamar al-zaman, \"leave this talk and swear to me by allah, the all creator, the omniscient; the humbler of the tyrant caesars and the destroyer of the chosroes, that thou knowest naught of the young lady nor of her woning-place.\" quoth the king, \"by the might of allah almighty, the god of moses and abraham, i know naught of all this and never even heard of it; it is assuredly a delusion of dreams thou hast seen in sleep.\\' then the prince replied to his sire, \"i will give thee a self evident proof that it happened to me when on wake.\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the one hundred and ninety-first night,',\n", + " 'she said, it hath reached me, o auspicious king, that kamar al zamar said to his sire, \"i will give thee a self-evident proof that this happened to me when on wake. now let me ask thee, did it ever befal any man to dream that he was battling a sore battle and after to awake from sleep and find in his hand a sword-blade besmeared with blood? answered the king, \"no, by allah, o my son, this hath never been.\" rejoined kamar al-zaman, \"i will tell thee what happened to me and it was this. meseemed i awoke from sleep in the middle of the past night and found a girl lying by my side, whose form was like mine and whose favour was as mine. i embraced her and turned her about with my hand and took her seal- ring, which i put on my finger, and she pulled off my ring and put it on hers. then i went to sleep by her side, but refrained from her for shame of thee, deeming that thou hadst sent her to me, intending to tempt me with her and incline me to marriage, and suspecting thee to be hidden somewhere whence thou couldst see what i did with her. and i was ashamed even to kiss her on the mouth for thy account, thinking over this temptation to wedlock; and, when i awoke at point of day, i found no trace of her, nor could i come at any news of her, and there befel me what thou knowest of with the eunuch and with the wazir. how then can this case have been a dream and a delusion, when the ring is a reality? save for her ring on my finger i should indeed have deemed it a dream; but here is the ring on my little finger: look at it, o king, and see what is its worth.\" so saying he handed the ring to his father, who examined it and turned it over, then looked to his son and said, \"verily, there is in this ring some mighty mystery and some strange secret. what befel thee last night with the girl is indeed a hard nut to crack, and i know not how intruded upon us this intruder. none is the cause of all this posher save the wazir; but, allah upon thee, o my son, take patience, so haply the lord may turn to gladness this thy grief and to thy sadness bring complete relief: as quoth one of the poets,',\n", + " \"'haply shall fortune draw her rein, and bring *\",\n", + " 'fair chance, for she is changeful, jealous, vain:',\n", + " 'still i may woo my want and wishes win, *',\n", + " \"and see on heels of care unfair, the fain.'\",\n", + " 'and now, o my son, i am certified at this hour that thou art not mad; but thy case is a strange one which none can clear up for thee save the almighty.\" cried the prince, \"by allah, o my father, deal kindly with me and seek out this young lady and hasten her coming to me; else i shall die of woe and of my death shall no one know.\" then he betrayed the ardour of his passion; and turned towards his father and repeated these two couplets,',\n", + " '\"if your promise of personal call prove untrue, *',\n", + " 'deign in vision to grant me an interview:',\n", + " \"quoth they, 'how can phantom appear to the sight *\",\n", + " 'of a youth, whose sight is fordone, perdue?\\'\"',\n", + " 'then, after ending his poetry, kamar al-zaman again turned to his father, with submission and despondency, and shedding tears in flood, began repeating these lines.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and ninety-second night,',\n", + " 'she said, it hath reached me, o auspicious king, that when kamar al-zaman had repeated to his father these verses, he wept and complained and groaned from a wounded heart; and added these lines,',\n", + " '\"beware that eye glance which hath magic might; *',\n", + " 'wherever turn those orbs it bars our flight:',\n", + " 'nor be deceived by low sweet voice, that breeds *',\n", + " 'a fever festering in the heart and sprite:',\n", + " 'so soft that silky skin, were rose to touch it *',\n", + " \"she'd cry and tear-drops rain for pain and fright:\",\n", + " \"did zephyr e'en in sleep pass o'er her land, *\",\n", + " \"scented he'd choose to dwell in scented site:\",\n", + " 'her necklets vie with tinkling of her belt; *',\n", + " 'her wrists strike either wristlet dumb with spite:',\n", + " 'when would her bangles buss those rings in ear, *',\n", + " \"upon the lover's eyne high mysteries 'light:\",\n", + " \"i'm blamed for love of her, nor pardon claim; *\",\n", + " 'eyes are not profiting which lack foresight:',\n", + " 'heaven strip thee, blamer mine! unjust art thou; *',\n", + " 'before this fawn must every eye low bow.\"',\n", + " 'after which he said, \"by allah, o my father, i cannot endure to be parted from her even for an hour.\" the king smote hand upon hand and exclaimed, \"there is no majesty and there is no might save in allah, the glorious, the great! no cunning contrivance can profit us in this affair.\" then he took his son by the hand and carried him to the palace, where kamar al-zaman lay down on the bed of languor and the king sat at his head, weeping and mourning over him and leaving him not, night or day, till at last the wazir came in to him and said, \"o king of the age and the time, how long wilt thou remain shut up with thy son and hide thyself from thy troops. haply, the order of thy realm may be deranged, by reason of shine absence from thy grandees and officers of state. it behoveth the man of understanding, if he have various wounds in his body, to apply him first to medicine the most dangerous; so it is my counsel to thee that thou remove thy son from this place to the pavilion which is in the palace overlooking the sea; and shut thyself up with him there, setting apart in every week two days, thursday and monday, for state receptions and progresses and reviews. on these days let shine emirs and wazirs and chamberlains and viceroys and high officials and grandees of the realm and the rest of the levies and the lieges have access to thee and submit their affairs to thee; and do thou their needs and judge among them and give and take with them and bid and forbid. and the rest of the week thou shalt pass with thy son, kamar al-zaman, and cease not thus doing till allah shall vouchsafe relief to you twain. think not, o king, that thou art safe from the shifts of time and the strokes of change which come like a traveller in the night; for the wise man is ever on his guard and how well saith the poet,',\n", + " \"'thou deemedst well of time when days went well, *\",\n", + " 'and fearedst not what ills might bring thee fate:',\n", + " 'the nights so fair and restful cozened thee, *',\n", + " 'for peaceful nights bring woes of heavy weight.',\n", + " 'oh children of mankind whom time befriends, *',\n", + " \"beware of time's deceits or soon or late!'''\",\n", + " 'when the sultan heard his wazir\\'s words he saw that they were right and deemed his counsel wise, and it had effect upon him for he feared lest the order of the state be deranged; so he rose at once and bade transport his son from his sick room to the pavilion in the palace overlooking the sea. now this palace was girt round by the waters and was approached by a causeway twenty cubits wide. it had windows on all sides commanding an ocean- view; its floor was paved with parti-coloured marbles and its ceiling was painted in the richest pigments and figured with gold and lapis-lazuli. they furnished it for kamar al-zaman with splendid upholstery, embroidered rugs and carpets of the richest silk; and they clothed the walls with choice brocades and hung curtains bespangled with gems of price. in the midst they set him a couch of juniper-wood inlaid with pearls and jewels, and kamar al-zaman sat down thereon, but the excess of his concern and passion for the young lady had wasted his charms and emaciated his body; he could neither eat nor drink nor sleep; and he was like a man who had been sick twenty years of sore sickness. his father seated himself at his head, grieving for him with the deepest grief, and every monday and thursday he gave his wazirs and emirs and chamberlains and viceroys and lords of the realm and levies and the rest of his lieges leave to come up to him in that pavilion. so they entered and did their several service and duties and abode with him till the end of the day, when they went their ways and the king returned to his son in the pavilion whom he left not night nor day; and he ceased not doing on this wise for many days and nights. such was the case with kamar al-zaman, son of king shahriman; but as regards princess budur, daughter of king ghayur, lord of the isles and the seven palaces, when the two jinns bore her up and laid her on her bed, she slept till daybreak, when she awoke and sitting upright looked right and left, but saw not the youth who had lain in her bosom. at this her vitals fluttered, her reason fled and she shrieked a loud shriek which awoke all her slave girls and nurses and duennas. they flocked in to her; and the chief of them came forward and asked, \"what aileth thee, o my lady?\" answered the princess, \"o wretched old woman, where is my beloved, the handsome youth who lay last night in my bosom? tell me whither he is gone.\" now when the duenna heard this, the light starkened in her sight and she feared from her mischief with sore affright, and said to her, \"o my lady budur, what unseemly words are these?\" cried the princess, \"woe to thee pestilent crone that thou art! i ask thee again where is my beloved, the goodly youth with the shining face and the slender form, the jetty eyes and the joined eyebrows, who lay with me last night from supper-tide until near daybreak?\" she rejoined \"by allah, o my lady, i have seen no young man nor any other. i conjure thee, carry not this unseemly jest too far lest we all lose our lives; for perhaps the joke may come to thy father\\'s ears and who shall then deliver us from his hand?\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and ninety-third night,',\n", + " 'she said, it hath reached me, o auspicious king, that the duenna bespake the lady budur in these words, \"allah upon thee, o my lady! carry not this unseemly jest too far; for perhaps it may come to thy father\\'s ears, and who shall then deliver us from his hand?\" the princess rejoined, \"in very sooth a youth lay with me last night, one of the fairest-faced of men.\" exclaimed the duenna, \"heaven preserve thy reason! indeed no one lay with thee last night.\" thereupon the princess looked at her hand and, finding kamar al-zaman\\'s seal-ring on her finger in stead of her own, said to her, \"woe to thee, thou accursed! thou traitress! wilt thou lie to me and tell me that none lay with me last night and swear to me a falsehood in the name of the lord?\" replied the duenna, \"by allah, i do not lie to thee nor have i sworn falsely.\" then the princess was incensed by her words and, drawing a sword she had by her, she smote the old woman with it and slew her; whereupon the eunuch and the waiting-women and the concubines cried out at her, and ran to her father and, without stay or delay, acquainted him with her case. so the king went to her, and asked her, \"o my daughter, what aileth thee?\"; and she answered, \"o my father, where is the youth who lay with me last night?\" then her reason fled from her head and she cast her eyes right and left and rent her raiment even to the skirt. when her sire saw this, he bade the women lay hands on her; so they seized her and manacled her, then putting a chain of iron about her neck, made her fast to one of the palace-windows and there left her. thus far concerning princess budur; but as regards her father, king ghayur, the world was straitened upon him when he saw what had befallen his daughter, for that he loved her and her case was not a little grievous to him. so he summoned on it the doctors and astrologers and men skilled in talisman- writing and said to them, \"whoso healeth my daughter of what ill she hath, i will marry him to her and give him half of my kingdom; but whoso cometh to her and cureth her not, i will strike off his head and hang it over her palace-gate.\" accordingly, all who went in to her, but failed to heal her, he beheaded and hung their heads over the palace-gates, till he had beheaded on her account forty doctors and crucified forty astrologers; wherefor the general held aloof from her, all the physicians having failed to medicine her malady; and her case was a puzzle to the men of science and the adepts in cabalistic characters. and as her longing and passion redoubled and love and distraction were sore upon her, she poured forth tears and repeated these couplets,',\n", + " '\"my fondness, o my moon, for thee my foeman is, *',\n", + " 'and to thy comradeship the nights my thought compel:',\n", + " 'in gloom i bide with fire that flames below my ribs, *',\n", + " 'whose lowe i make comparison with heat of hell:',\n", + " \"i'm plagued with sorest stress of pine and ecstasy; *\",\n", + " 'nor clearest noon tide can that horrid pain dispel.\"',\n", + " 'then she sighed and repeated these also,',\n", + " '\"salams fro\\' me to friends in every stead; *',\n", + " 'indeed to all dear friends do i incline:',\n", + " 'salams, but not salams that bid adieu; *',\n", + " 'salams that growth of good for you design:',\n", + " 'i love you dear, indeed, nor less your land, *',\n", + " 'but bide i far from every need of mine!\"',\n", + " 'and when the lady budur ceased repeating her poetry, she wept till her eyes waxed sore and her cheeks changed form and hue, and in this condition she continued three years. now she had a foster-brother, by name marzawán, who was travelling in far lands and absent from her the whole of this time. he loved her with an exceeding love, passing the love of brothers; so when he came back he went in to his mother and asked for his sister, the princess budur. she answered him, \"o my son, thy sister hath been smitten with madness and hath passed these three years with a chain of iron about her neck; and all the physicians and men of science have failed of healing her.\" when marzawan heard these words he said, \"i must needs go in to her; peradventure i may discover what she hath, and be able to medicine her;\" and his mother replied, \"needs must thou visit her, but wait till to morrow, that i may contrive some thing to suit thy case.\" then she went a-foot to the palace of the lady budur and, accosting the eunuch in charge of the gates, made him a present and said to him, \"i have a daughter, who was brought up with thy mistress and since then i married her; and, when that befel the princess which befel her, she became troubled and sore concerned, and i desire of thy favour that my daughter may go in to her for an hour and look on her; and then return whence she came, so shall none know of it.\" quoth the eunuch, \"this may not be except by night, after the king hath visited his child and gone away; then come thou and thy daughter.\" so she kissed the eunuch\\'s hand and, returning home, waited till the morrow at nightfall; and when it was time she arose and sought her son marzawan and attired him in woman\\'s apparel; then, taking his hand in hers, led him towards the palace, and ceased not walking with him till she came upon the eunuch after the sultan had ended his visit to the princess. now when the eunuch saw her, he rose to her, and said, \"enter, but do not prolong thy stay!\" so they went in and when marzawan beheld the lady budur in the aforesaid plight, he saluted her, after his mother had doffed his woman\\'s garb: then he took out of their satchel books he had brought with him; and, lighting a wax- candle, he began to recite certain conjurations thereupon the princess looked at him and recognising him, said, \"o my brother, thou hast been absent on thy travels\\' and thy news have been cut off from us.\" he replied, \"true! but allah hath brought me back safe and sound, i am now minded to set out again nor hath aught delayed me but the news i hear of thee; wherefore my heart burned for thee and i came to thee, so haply i may free thee of thy malady.\" she rejoined, o my brother, thinkest thou it is madness aileth me?\" \"yes.\" answered he, and she said, \"not so, by allah! \\'tis even as saith the poet,',\n", + " \"'quoth they 'thou rav'st on him thou lov'st': quoth i, *\",\n", + " \"'the sweets of love are only for th' insane!'\",\n", + " 'love never maketh time his friend befriend; *',\n", + " 'only the jinn-struck wight such boon can gain:',\n", + " \"well! yes, i'm mad: bring him who madded me *\",\n", + " 'and, if he cure m: madness, blame restrain!\\'\"',\n", + " 'then she let marzawan know that she was love-daft and he said \"tell me concerning thy tale and what befel thee: haply there may be in my hand something which shall be a means of deliverance for thee.\"—and shahrazad perceived the dawn of da, and ceased saying her permitted say.',\n", + " 'when it was the one hundred and ninety-fourth night,',\n", + " 'she said, it hath reached me, o auspicious king, that marzawar thus addressed princess budur, \"tell me concerning thy tale and what befel thee: haply allah may inspire me with a means of deliverance for thee.\" quoth she, \"o my brother, hear my story which is this. one night i awoke from sleep, in the last third of the night and, sitting up, saw by my side the handsomest of youths that be, and tongue faileth to describe him, for he was as a willow-wand or an indian rattan-cane. so methought it was my father who had done on this wise in order thereby to try me, for that he had consulted me concerning wedlock, when the kings sought me of him to wife, and i had refused. it was this though withheld me from arousing him, for i feared that, if i did aught of embraced him, he would peradventure inform my father of m, doings. but in the morning, i found on my finger his seal-ring, in place of my own which he had taken. and, o my brother, m, heart was seized with love of him at first sight; and, for the violence of my passion and longing, i have never savoured the taste of sleep and have no occupation save weeping alway and repeating verses night and day. and this, o my brother, is my story and the cause of my madness.\" then she poured forth tears and repeated these couplets,',\n", + " '\"now love hast banished all that bred delight; *',\n", + " 'with that heart-nibbling fawn my joys took flight:',\n", + " \"lightest of trifles lover's blood to him *\",\n", + " 'who wastes the vitals of the hapless wight!',\n", + " \"for him i'm jealous of my sight and thought; *\",\n", + " 'my heart acts spy upon my thought and sight:',\n", + " 'those long-lashed eyelids rain on me their shafts *',\n", + " \"guileful, destroying hearts where'er they light:\",\n", + " 'now, while my portion in the world endures, *',\n", + " 'shall i behold him ere i quit world-site?',\n", + " \"what bear i for his sake i'd hide, but tears *\",\n", + " \"betray my feelings to the spy's despight.\",\n", + " 'when near, our union seemeth ever far; *',\n", + " 'when far, my thoughts to him aye nearest are.\"',\n", + " 'and presently she continued, \"see then, o my brother, how thou mayest aid me in mine affliction.\" so marzawan bowed his head ground-wards awhile, wondering and not knowing what to do, then he raised it and said to her, \"all thou hast spoken to me i hold to be true, though the case of the young man pass my understanding: but i will go round about all lands and will seek for what may heal thee; haply allah shall appoint thy healing to be at my hand. meanwhile, take patience and be not disquieted.\" thereupon marzawan farewelled her, praying that she might be constant and left her repeating these couplets,',\n", + " '\"thine image ever companies my sprite, *',\n", + " \"for all thou'rt distant from the pilgrim's sight:\",\n", + " \"but my heart-wishes e'er attract thee near: *\",\n", + " \"what is the lightning's speed to thought's swift flight?\",\n", + " 'then go not thou, my very light of eyes *',\n", + " 'which, when thou\\'rt gone, lack all the kohl of light.\"',\n", + " 'then marzawan returned to his mother\\'s house, where he passed the night. and when the morrow dawned, having equipped himself for his journey, he fared forth and ceased not faring from city to city and from island to island for a whole month, till he came to a town named al-tayrab. here he went about scenting news of the townsfolk, so haply he might light on a cure for the princess\\'s malady, for in every capital he entered or passed by, it was reported that queen budur, daughter of king ghayur, had lost her wits. but arriving at al-tayrab city, he heard that kamar al-zaman, son of king shahriman, was fallen sick and afflicted with melancholy madness. so marzawan asked the name of the prince\\'s capital and they said to him, \"it is on the islands of khalidan and it lieth distant from our city a whole month\\'s journey by sea, but by land it is six months\\' march.\" so he went down to the sea in a ship which was bound for the khalidan isles, and she sailed with a favouring breeze for a whole month, till they came in sight of the capital; and there remained for them but to make the land when, behold, there came out on them a tempestuous wind which carried away the masts and rent the canvas, so that the sails fell into the sea and the ship capsized, with all on board,—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and ninety-fifth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when the ship capsized with all on board, each sought his own safety; and as for marzawan the set of the sea carried him under the king\\'s palace, wherein was kamar al-zaman. and by the decree of destiny it so happened that this was the day on which king shahriman gave audience to his grandees and high officers, and he was sitting, with his son\\'s head on his lap, whilst an eunuch fanned away the flies; and the prince had not spoken neither had he eaten nor drunk for two days, and he was grown thinner than a spindle. now the wazir was standing respectfully a-foot near the latticed window giving on the sea and, raising his eyes, saw marzawan being beaten by the billows and at his last gasp; whereupon his heart was moved to pity for him, so he drew near to the king and moving his head towards him said, \"i crave thy leave, o king, to go down to the court of the pavilion and open the water-gate that i may rescue a man who is at the point of drowning in the sea and bring him forth of danger into deliverance; peradventure, on this account allah may free thy son from what he hath!\" the king replied, \"o thou wazir, enough is that which hath befallen my son through thee and on shine account. haply, if thou rescue this drowning man, he will come to know our affairs, and look on my son who is in this state and exult over me; but i swear by allah, that if this half-drowned wretch come hither and learn our condition and look upon my son and then fare forth and speak of our secrets to any, i will assuredly strike off thy head before his; for thou, o my minister art the cause of all that hath betided us, first and last. now do as thou wilt.\" thereupon the wazir sprang up and, opening the private pastern which gave upon the sea, descended to the causeway; then walked on twenty steps and came to the water where he saw marzawan nigh unto death. so he put out his hand to him and, catching him by his hair, drew him ashore in a state of insensibility, with belly full of water and eyes half out of his head. the wazir waited till he came to himself, when he pulled off his wet clothes and clad him in a fresh suit, covering his head with one of his servants\\' turbands; after which he said to him, know that i have been the means of saving thee from drowning: do not thou requite me by causing my death and shine own.\"äand shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the one hundred and ninety-sixth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when the wazir did to marzawan what he did, he thus addressed him know that i have been the cause of saving thee from drowning so requite me not by causing my death and shine own.\" asked marzawan, and how so?\"; and the wazir answered, \"thou art at this hour about to go up and pass among emirs and wazirs all of them silent and none speaking, because of kamar al-zaman the son of the sultan.\" now when marzawan heard the name of kamar al-zaman, he knew that this was he whom he had heard spoken of in sundry cities and of whom he came in search, but he feigned ignorance and asked the wazir, \"and who is kamar al-zaman? answered the minister, \"he is the son of sultan shahriman and he is sore sick and lieth strown on his couch restless alway, eating not nor drinking neither sleeping night or day; indeed he is nigh upon death and we have lost hope of his living and are certain that he is dying. beware lest thou look too long on him, or thou look on any other than that where thou settest thy feet: else thou art a lost man, and i also.\" he replied, \"allah upon thee, o wazir, i implore thee, of thy favour, acquaint me touching this youth thou describest, what is the cause of the condition in which he is.\" the wazir replied, \"i know none, save that, three years ago, his father required him to wed, but he refused; whereat the king was wroth and imprisoned him. and when he awoke on the morrow, he fancied that during the night he had been roused from sleep and had seen by his side a young lady of passing loveliness, whose charms tongue can never express; and he assured us that he had plucked off her seal-ring from her finger and had put it on his own and that she had done likewise; but we know not the secret of all this business. so by allah, o my son, when thou comest up with me into the palace, look not on the prince, but go thy way; for the sultan\\'s heart is full of wrath against me.\" so said marzawan to himself, \"by allah; this is the one i sought!\" then he followed the wazir up to the palace, where the minister seated himself at the prince\\'s feet; but marzawan found forsooth nothing to do but go up to kamar al-zaman and stand before him at gaze. upon this the wazir, died of affright in his skin, and kept looking at marzawan and signalling him to wend his way; but he feigned not to see him and gave not over gazing upon kamar al- zaman, till he was well assured that it was indeed he whom he was seeking,—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and ninety-seventh night,',\n", + " 'she said, it hath reached me, o auspicious king, that when marzawan looked upon kamar al-zaman and knew that it was indeed he whom he was seeking, he cried, \"exalted be allah, who hath made his shape even as her shape and his complexion as her complexion and his cheek as her cheek!\\'\\' upon this kamar al-zaman opened his eyes and gave earnest ear to his speech; and, when marzawan saw him inclining to hear, he repeated these couplets,',\n", + " '\"i see thee full of song and plaint and love\\'s own ecstasy;',\n", + " 'delighting in describing all the charms of loveliness:',\n", + " 'art smit by stroke of love or hath shaft-shot wounded thee?',\n", + " 'none save the wounded ever show such signals of distress!',\n", + " 'ho thou! crown the wine cup and sing me singular',\n", + " \"praises to sulaymá, al-rabáb, tan'oum addrest;\",\n", + " 'go round the grape-vine sun which for mansion hath a jar;',\n", + " 'whose east the cup boy is, and here my mouth that opes for west.',\n", + " \"i'm jealous of the very clothes that dare her sides enroll\",\n", + " 'when she veils her dainty body of the delicatest grace:',\n", + " 'i envy every goblet of her lips that taketh toll',\n", + " 'when she sets the kissing cup on that sweetest kissing-place.',\n", + " \"but deem not by the keen-edged scymitar i'm slain—\",\n", + " 'the hurts and harms i dree are from arrows of her eyes.',\n", + " 'i found her finger tips, as i met her once again,',\n", + " 'deep-reddened with the juice of the wood that ruddy dyes;',\n", + " \"and cried, 'thy palms thou stainedst when far away was i\",\n", + " \"and this is how thou payest one distracted by his pine!'\",\n", + " 'quoth she (enkindling in my heart a flame that burned high',\n", + " 'speaking as one who cannot hide of longing love the sign),',\n", + " \"'by thy life, this is no dye used for dyeing; so forbear\",\n", + " 'thy blame, nor in charging me with falsing love persist!',\n", + " 'but when upon our parting-day i saw thee haste to fare,',\n", + " 'the while were bared my hand and my elbow and my wrist;',\n", + " \"'i shed a flood of blood-red tears and with fingers brushed away; hence blood-reddened were the tips and still blood-red they remain.'\",\n", + " 'had i wept before she wept, to my longing-love a prey,',\n", + " 'before repentance came, i had quit my soul of pain;',\n", + " 'but she wept before i wept and i wept to see her care',\n", + " \"and i said, 'all the merit to precedent;'\",\n", + " 'blame me not for loving her, now on self of love i swear',\n", + " 'for her sake, for her only, these pains my soul torment.',\n", + " \"she hath all the lere of lukmán and yúsuf's beauty lief;\",\n", + " \"sweet singer david's voice and maryam's chastity:\",\n", + " \"while i've all jacob's mourning and jonah's prison-grief,\",\n", + " \"and the sufferings of job and old adam's history:\",\n", + " 'yet kill her not, albeit of my love for her i die;',\n", + " 'but ask her why my blood to her was lawful. ask her why?\"',\n", + " 'when marzawan recited this ode, the words fell upon kamar al- zaman\\'s heart as freshness after fever and returning health; and he sighed and, turning his tongue in his mouth, said to his sire, \"o my father, let this youth come and sit by my side.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the one hundred and ninety-eighth night,',\n", + " 'she said, it hath reached me, o auspicious king, that kamar al- zaman said to his sire, \"o my father, allow this youth to come and sit by my side.\" now when the king heard these words from his son, he rejoiced with exceeding joy, though at the first his heart had been set against marzawan and he had determined that the stranger\\'s head needs must be stricken off: but when he heard kamar al-zaman speak, his anger left him and he arose and drawing marzawan to him, seated him by his son and turning to him said, \"praised be allah for thy safety!\" he replied, \"allah preserve thee! and preserve thy son to thee!\" and called down blessings on the king. then the king asked, \"from what country art thou?\"; and he answered, \"from the islands of the inland sea, the kingdom of king ghayur, lord of the isles and the seas and the seven palaces.\" quoth king shahriman, \"maybe thy coming shall be blessed to my son and allah vouchsafe to heal what is in him.\" quoth marzawan, \"inshallah, naught shall be save what shall be well!\" then turning to kamar al-zaman, he said to him in his ear unheard of the king and his court, \\'o my lord! be of good cheer, and hearten thy heart and let shine eyes be cool and clear and, with respect to her for whose sake thou art thus, ask not of her case on shine account. but thou keptest thy secret and fellest sick, while she told her secret and they said she had gone mad; so she is now in prison, with an iron chain about her neck, in most piteous plight; but, allah willing, the healing of both of you shall come from my hand.\" now when kamar al-zaman heard these words, his life returned to him and he took heart and felt a thrill of joy and signed to his father to help him sit up; and the king was like to fly for gladness and rose hastily and lifted him up. presently, of his fear for his son, he shook the kerchief of dismissal; and all the emirs and wazirs withdrew; then he set two pillows for his son to lean upon, after which he bade them perfume the palace with saffron and decorate the city, saying to marzawan, \"by allah, o my son, of a truth shine aspect be a lucky and a blessed!\" and he made as much of him as he might and called for food, and when they brought it, marzawan came up to the prince and said, \"rise, eat with me.\" so he obeyed him and ate with him, and all the while the king invoked blessings on marzawan and said, \"how auspicious is thy coming, o my son!\" and when the father saw his boy eat, his joy and gladness redoubled, and he went out and told the prince\\'s mother and all the household. then he spread throughout the palace the good news of the prince\\'s recovery and the king commanded the decoration of the city and it was a day of high festival. marzawan passed that night with kamar al-zaman, and the king also slept with them in joy and delight for his son\\'s recovery.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the one hundred and ninety-ninth night,',\n", + " 'she said, it hath reached me, o auspicious king, that king shahriman also passed that night with them in the excess of his joy for his son\\'s recovery. and when the next morning dawned, and the king had gone away and the two young men were left alone, kamar al-zaman told his story from beginning to end to marzawan who said, \"in very sooth i know her with whom thou didst foregather; her name is the princess budur and she is daughter to king ghayur.\" then he related to him all that had passed with the princess from first to last and acquainted him with the excessive love she bore him, saying, \"all that befel thee with thy father hath befallen her with hers, and thou art without doubt her beloved, even as she is shine; so brace up thy resolution and take heart, for i will bring thee to her and unite you both anon and deal with you even as saith the poet,',\n", + " '\"albe to lover adverse be his love, *',\n", + " 'and show aversion howso may he care;',\n", + " 'yet will i manage that their persons meet, *',\n", + " 'e\\'en as the pivot of a scissor pair.\"',\n", + " 'and he ceased not to comfort and solace and encourage kamar al- zaman and urged him to eat and drink till he ate food and drank wine, and life returned to him and he was saved from his ill case; and marzawan cheered him and diverted him with talk and songs and stories, and in good time he became free of his disorder and stood up and sought to go to the hammam. so marzawan took him by the hand and both went to the bath, where they washed their bodies and made them clean.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the two hundredth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when kamar al-zaman, son of king shahriman, went to the hammam, his father in his joy at this event freed the prisoners, and presented splendid dresses to his grandees and bestowed large alm-gifts upon the poor and bade decorate the city seven days. then quoth marzawan to kamar al-zaman, \"know, o my lord, that i came not from the lady budur save for this purpose, and the object of my journey was to deliver her from her present case; and it remaineth for us only to devise how we may get to her, since thy father cannot brook the thought of parting from thee. so it is my counsel that to-morrow thou ask his leave to go abroad hunting. then do thou take with thee a pair of saddle-bags full of money and mount a swift steed, and lead a spare horse, and i will do the like, and say to thy sire, \\'i have a mind to divert myself with hunting the desert and to see the open country and there to pass one night.\\' suffer not any servant to follow us, for as soon as we reach the open country, we will go our ways.\" kamar al- zaman rejoiced in this plan with great joy and cried, \"it is good.\" then he stiffened his back and, going in to his father, sought his leave and spoke as he had been taught, and the king consented to his going forth a-hunting and said, \"o my son, blessed be the day that restoreth thee to health! i will not gainsay thee in this; but pass not more than one night in the desert and return to me on the morrow; for thou knowest that life is not good to me without thee, and indeed i can hardly believe thee to be wholly recovered from what thou hadst, because thou art to me as he of whom quoth the poet,',\n", + " \"'albe by me i had through day and night *\",\n", + " \"solomon's carpet and the chosroes' might,\",\n", + " 'both were in value less than wing of gnat, *',\n", + " 'unless these eyne could hold thee aye in sight.\\'\"',\n", + " 'then the king equipped his son kamar al-zaman and marzawan for the excursion, bidding make ready for them four horses, together with a dromedary to carry the money and a camel to bear the water and belly timber; and kamar al-zaman forbade any of his attendants to follow him. his father farewelled him and pressed him to his breast and kissed him, saying, \"i ask thee in the name of allah, be not absent from me more than one night, wherein sleep will be unlawful to me, for i am even as saith the poet,',\n", + " \"'thou present, in the heaven of heavens i dwell; *\",\n", + " 'bearing shine absence is of hells my hell:',\n", + " 'pledged be for thee my soul! if love for thee *',\n", + " 'be crime, my crime is of the fellest fell.',\n", + " 'does love-lowe burn thy heart as burns it mine, *',\n", + " 'doomed night and day gehenna-fire to smell?\\'\"',\n", + " 'answered kamar al-zaman, \"o my father, inshallah, i will lie abroad but one night!\" then he took leave of him, and he and marzawan mounted and leading the spare horses, the dromedary with the money and the camel with the water and victual, turned their faces towards the open country;—and shahrazad perceived the dawning day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and first night,',\n", + " 'she said, it hath reached me, o auspicious king, that kamar al- zaman and marzawan fared forth and turned their faces towards the open country; and they travelled from the first of the day till nightfall, when they halted and ate and drank and fed their beasts and rested awhile; after which they again took horse and ceased not journeying for three days, and on the fourth they came to a spacious tract wherein was a thicket. they alighted in it and marzawan, taking the camel and one of the horses, slaughtered them and cut off their flesh and stripped their bones. then he doffed from kamar al-zaman his shirt and trousers which he smeared with the horse\\'s blood and he took the prince\\'s coat which he tore to shreds and befouled with gore; and he cast them down in the fork of the road. then they ate and drank and mounting set forward again; and, when kamar al- zaman asked why this was done, and said, \"what is this o my brother, and how shall it profit us?\"; marzawan replied, \"know that thy father, when we have outstayed the second night after the night for which we had his leave, and yet we return not, will mount and follow in our track till he come hither; and, when he happeneth upon this blood which i have spilt and he seeth thy shirt and trousers rent and gore-fouled, he will fancy that some accident befel thee from bandits or wild-beasts, so he will give up hope of thee and return to his city, and by this device we shall win our wishes.\" quoth kamar al-zaman, \"by allah, this be indeed a rare device! thou hast done right well.\\'\\' then the two fared on days and nights and all that while kamar al-zaman did naught but complain when he found himself alone, and he ceased not weeping till they drew near their journeys end, when he rejoiced and repeated these verses,',\n", + " '\"wilt tyrant play with truest friend who thinks of thee each',\n", + " 'hour, * and after showing love-desire betray indifference?',\n", + " 'may i forfeit every favour if in love i falsed thee, *',\n", + " 'if thee i left, abandon me by way of recompense:',\n", + " \"but i've been guilty of no crime such harshness to deserve, *\",\n", + " 'and if i aught offended thee i bring my penitence;',\n", + " \"of fortune's wonders one it is thou hast abandoned me, *\",\n", + " 'but fortune never wearieth of showing wonderments.\"',\n", + " 'when he had made an end of his verses, marzawan said to him, \"look! these be king ghayur\\'s islands;\" whereat kamar al-zaman joyed with exceeding joy and thanked him for what he had done, and kissed him between the eyes and strained him—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and second night,',\n", + " 'she said, it hath reached me, o auspicious king, that when marzawan said \"look! these be the islands of king ghayur;\" kamar al-zaman joyed with exceeding joy and thanked him for what he had done and kissed him between the eyes and strained him to his bosom. and after reaching the islands and entering the city they took up their lodging in a khan, where they rested three days from the fatigues of their wayfare; after which marzawan carried kamar al-zaman to the bath and, clothing him in merchant\\'s gear, provided him with a geomantic tablet of gold, with a set of astrological instruments and with an astrolabe of silver, plated with gold. then he said to him, \"arise, o my lord, and take thy stand under the walls of the king\\'s palace and cry out, \\'i am the ready reckoner; i am the scrivener; i am he who weeteth the sought and the seeker; i am the finished man of science; i am the astrologer accomplished in experience! where then is he that seeketh?\\' as soon as the king heareth this, he will send after thee and carry thee in to his daughter the princess budur, thy lover; but when about going in to her do thou say to him, \\'grant me three days\\' delay, and if she recover, give her to me to wife; and if not, deal with me as thou dealest with those who forewent me.\\' he will assuredly agree to this, so as soon as thou art alone with her, discover thyself to her; and when she seeth thee, she will recover strength and her madness will cease from her and she will be made whole in one night. then do thou give her to eat and drink. and her father, rejoicing in her recovery, will marry thee to her and share his kingdom with thee; for he hath imposed on himself this condition and so peace be upon thee.\" now when kamar al-zaman heard these words he exclaimed, \"may i never lack thy benefits!\", and, taking the set of instruments aforesaid, sallied forth from the caravanserai in the dress of his order. he walked on till he stood under the walls of king ghayur\\'s palace, where he began to cry out, saying, \"i am the scribe, i am the ready reckoner, i am he who knoweth the sought and the seeker; i am he who openeth the volume and summeth up the sums; who dreams can expound whereby the sought is found! where then is the seeker?\" now when the city people heard this, they flocked to him, for it was long since they had seen scribe or astrologer, and they stood round him and, looking upon him, they saw one in the prime of beauty and grace and perfect elegance, and they marvelled at his loveliness, and his fine stature and symmetry. presently one of them accosted him and said, \"allah upon thee, o thou fair and young, with the eloquent tongue! incur not this affray; nor throw thy life away in thine ambition to marry the princess budur. only cast shine eyes upon yonder heads hung up; all their owners have lost their lives in this same venture.\" yet kamar al-zaman paid no heed to them, but cried out at the top of his voice, saying, \"i am the doctor, the scrivener! i am the astrologer, the calculator!\" and all the townsfolk forbade him from this, but he regarded them not at all, saying in his mind, \"none knoweth desire save whoso suffereth it.\" then he began again to cry his loudest, shouting, \"i am the scrivener, i am the astrologer!\"—and shahrazad per ceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the two hundred and third night,',\n", + " 'she said, it hath reached me, o auspicious king, that kamar al- zaman in no wise heeded the words of the citizens, but continued to cry out, \"i am the calculator! i am the astrologer!\" thereupon all the townsfolk were wroth with him and said to him, \"thou art nothing but an imbecile, silly, self-willed lad! have pity on shine own youth and tender years and beauty and loveliness.\" but he cried all the more, \"i am the astrologer, i am the calculator! is there any one that seeketh?\" as he was thus crying and the people forbidding him, behold, king ghayur heard his voice and the clamour of the lieges and said to his wazir, \"go down and bring me yon astrologer.\" so the wazir, went down in haste, and taking kamar al-zaman from the midst of the crowd led him up to the king; and when in the presence he kissed the ground and began versifying,',\n", + " '\"eight glories meet, all, all conjoined in thee, *',\n", + " 'whereby may fortune aye thy servant be:',\n", + " 'lere, lordliness, grace, generosity; *',\n", + " 'plain words, deep meaning, honour, victory!\"',\n", + " 'when the king looked upon him, he seated him by his side and said to him, \"by allah, o my son, an thou be not an astrologer, venture not thy life nor comply with my condition; for i have bound myself that whoso goeth in to my daughter and healeth her not of that which hath befallen her i will strike off his head; but whoso healeth her him i will marry to her. so let not thy beauty and loveliness delude thee: for, by allah! and again, by allah! if thou cure her not, i will assuredly cut off thy head.\" and kamar al-zaman replied, \"this is thy right; and i consent, for i wot of this ere came i hither.\" then king ghayur took the kazis to witness against him and delivered him to the eunuch, saying, \"carry this one to the lady budur.\" so the eunuch took him by the hand and led him along the passage; but kamar al-zaman outstripped him and pushed on before, whilst the eunuch ran after him, saying, \"woe to thee! hasten not to shine own ruin: never yet saw i astrologer so eager for his proper destruction; but thou weetest not what calamities are before thee.\" thereupon kamar al-zaman turned away his face from the eunuch,—and shah razed perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and fourth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when the eunuch thus addressed kamar al-zaman, \"patience, and no indecent hurry!\"; the prince turned away his face and began repeating these couplets,',\n", + " '\"a sage, i feel a fool before thy charms; *',\n", + " 'distraught, i wot not what the words i say:',\n", + " \"if say i 'sun,' away thou dost not pass *\",\n", + " 'from eyes of me, while suns go down with day:',\n", + " 'thou hast completed beauty, in whose praise *',\n", + " 'speech-makers fail, and talkers lose their way.\"',\n", + " 'then the eunuch stationed kamar al-zaman behind the curtain of the princess\\'s door and the prince said to him, \"which of the two ways will please thee more, treat and cure thy lady from here or go in and heal her within the curtain?\" the eunuch marvelled at his words and answered, \"an thou heal her from here it were better proof of thy skill.\" upon this kamar al-zaman sat down behind the curtain and, taking out ink case, pen and paper, wrote the following: \"this is the writ of one whom passion swayeth,* and whom longing waylayeth * and wakeful misery slayeth * one who despaireth of living * and looketh for naught but dying * with whose mourning heart * nor comforter nor helper taketh part * one whose sleepless eyes * none succoureth from anxieties * whose day is passed in fire * and his night in torturing desire * whose body is wasted for much emaciation * and no messenger from his beloved bringeth him consolation.\" and after this he indited the following couplets,',\n", + " '\"i write with heart devoted to thy thought, *',\n", + " 'and eyelids chafed by tears of blood they bled;',\n", + " 'and body clad, by loving pine and pain, *',\n", + " 'in shirt of leanness, and worn down to thread,',\n", + " \"to thee complain i of love's tormentry, *\",\n", + " 'which ousted hapless patience from her stead:',\n", + " 'a toi! show favour and some mercy deign, *',\n", + " 'for passion\\'s cruel hands my vitals shred.\"',\n", + " 'and beneath his lines he wrote these cadenced sentences, \"the heart\\'s pain is removed * by union with the beloved * and whomso his lover paineth * only allah assaineth! * if we or you have wrought deceit * may the deceiver win defeat! * there is naught goodlier than a lover who keeps faith * with the beloved who works him scathe.\" then, by way of subscription, he wrote, \"from the distracted and despairing man * whom love and longing trepan * from the lover under passion\\'s ban * the prisoner of transport and distraction * from this kamar al-zaman * son of shahriman * to the peerless one * of the fair houris the pearl-union * to the lady budur * daughter of king al ghayur * know thou that by night i am sleepless * and by day in distress * consumed with increasing wasting and pain * and longing and love unfain * abounding in sighs * with tear flooded eyes * by passion captive ta\\'en * of desire the slain * with heart seared by the parting of us twain * the debtor of longing bane, of sickness cup-companion * i am the sleepless one, who never closeth eye * the slave of love, whose tears run never dry * for the fire of my heart is still burning * and never hidden is the flame of my yearning.\" then on the margin kamar al-zaman wrote this admired verse,',\n", + " '\"salem from graces hoarded by my lord *',\n", + " 'to her, who holds my heart and soul in hoard!\"',\n", + " 'and also these,',\n", + " '\"pray\\'ee grant me some words from your lips, belike *',\n", + " 'such mercy may comfort and cool these eyne:',\n", + " 'from the stress of my love and my pine for you, *',\n", + " 'i make light of what makes me despised, indign:',\n", + " 'allah guard a folk whose abode was far, *',\n", + " 'and whose secret i kept in the holiest shrine:',\n", + " 'now fortune in kindness hath favoured me *',\n", + " \"thrown on threshold dust of this love o' mine:\",\n", + " 'by me bedded i looked on budúr, whose sun *',\n", + " 'the moon of my fortunes hath made to shine.\"',\n", + " 'then, having affixed his seal-ring to the missive, he wrote these couplets in the place of address,',\n", + " '\"ask of my writ what wrote my pen in dole, *',\n", + " 'and hear my tale of misery from this scroll;',\n", + " 'my hand is writing while my tears down flow, *',\n", + " \"and to the paper 'plains my longing soul:\",\n", + " 'my tears cease not to roll upon this sheet, *',\n", + " 'and if they stopped i\\'d cause blood-gouts to roll.\"',\n", + " 'and at the end he added this other verse,',\n", + " '\"i\\'ve sent the ring from off thy finger bore *',\n", + " 'i when we met, now deign my ring restore!\"',\n", + " \"then kamar al-zaman set the lady budur's ring inside the letter and sealed it and gave it to the eunuch, who took it and went in with it to his mistress.—and shahrazad perceived the dawn of day and ceased to say her permitted say.\",\n", + " 'when it was the two hundred and fifth night,',\n", + " 'she said, it hath reached me, o auspicious king, that kamar al- zaman, after setting the seal-ring inside the epistle, gave it to the eunuch who took it and went in with it to his mistress; and, when the lady budur opened it, she found therein her own very ring. then she read the paper and when she understood its purport and knew that it was from her beloved, and that he in person stood behind the curtain, her reason began to fly and her breast swelled for joy and rose high; and she repeated these couplets,',\n", + " '\"long, long have i bewailed the sev\\'rance of our loves, *',\n", + " 'with tears that from my lids streamed down like burning',\n", + " 'rain;',\n", + " 'and vowed that, if the days deign reunite us two, *',\n", + " 'my lips should never speak of severance again:',\n", + " \"joy hath o'erwhelmed me so that, for the very stress *\",\n", + " 'of that which gladdens me to weeping i am fain.',\n", + " 'tears are become to you a habit, o my eyes, *',\n", + " \"so that ye weep as well for gladness as for pain.''\",\n", + " 'and having finished her verse, the lady budur stood up forthwith and, firmly setting her feet to the wall, strained with all her might upon the collar of iron, till she brake it from her neck and snapped the chains. then going forth from behind the curtain she threw herself on kamar al-zaman and kissed him on the mouth, like a pigeon feeding its young. and she embraced him with all the stress of her love and longing and said to him, \"o my lord do i wake or sleep and hath the almighty indeed vouchsafe] us reunion after disunion? laud be to allah who hath our loves repaired, even after we despaired!\" now when the eunuch saw her in this case, he went off running to king ghayur and, kissing the ground before him, said, \"o my lord, know that this astrologer is indeed the shaykh of all astrologers, who are fools to him, all of them; for verily he hath cured thy daughter while standing behind the curtain and without going in to her.\" quoth the king, \"look well to it, is this news true?\" answered the eunuch, \"o my lord, rise and come and see for thyself how she hath found strength to break the iron chains and is come forth to the astrologer, kissing and embracing him.\" thereupon the king arose and went in to his daughter who, when she saw him, stood up in haste and covered her head, and recited these two couplets,',\n", + " '\"the toothstick love i not; for when i say, *',\n", + " \"'siwák,' i miss thee, for it sounds 'siwá-ka'.\",\n", + " 'the caper-tree i love; for when i say, *',\n", + " '\\'arák\\' it sounds i look on thee, \\'ará-ka.\\'\"',\n", + " 'thereupon the king was so transported for joy at her recovery that he felt like to fly and kissed her between the eyes, for he loved her with dearest love; then, turning to kamar al-zaman, he asked him who he was, and said, \"what countryman art thou?\" so the prince told him his name and rank, and informed him that he was the son of king shahriman, and presently related to him the whole story from beginning to end; and acquainted him with what happened between himself and the lady budur; and how he had taken her seal-ring from her finger and had placed it on his own; whereat ghayur marvelled and said, \"verily your story deserveth in books to be chronicled, and when you are dead and gone age after age be read.\" then he summoned kazis and witnesses forthright and married the lady budur to prince kamar al-zaman; after which he bade decorate the city seven days long. so they spread the tables with all manner of meats, whilst the drums beat and the criers anounced the glad tidings, and all the troops donned their richest clothes; and they illuminated the city and held high festival. then kamar al-zaman went in to the lady budur and the king rejoiced in her recovery and in her marriage; and praised allah for that he had made her to fall in love with a goodly youth of the sons of kings. so they unveiled her and displayed the bride before the bridegroom; and both were the living likeness of each other in beauty and comeliness and grace and love-allurement. then kamar al-zaman lay with her that night and took his will of her, whilst she in like manner fulfilled her desire of him and enjoyed his charms and grace; and they slept in each other\\'s arms till the morning. on the morrow, the king made a wedding-feast to which he gathered all comers from the islands of the inner and outer seas, and he spread the tables with choicest viands nor ceased the banquetting for a whole month. now when kamar al-zaman had thus fulfilled his will and attained his inmost desire, and whenas he had tarried awhile with the princess budur, he bethought him of his father, king shahriman, and saw him in a dream, saying, \"o my son, is it thus thou dealest with me?\" and recited in the vision these two couplets,',\n", + " '\"indeed to watch the darkness-moon he blighted me, *',\n", + " 'and to star-gaze through longsome night he plighted me:',\n", + " \"easy, my heart! for haply he'll unite with thee; *\",\n", + " 'and patience, sprite! with whatso ills he dight to thee.\"',\n", + " 'now after seeing his father in the dream and hearing his re preaches, kamar al-zaman awoke in the morning, afflicted and troubled, whereupon the lady budur questioned him and he told her what he had seen.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and sixth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when kamar al-zaman acquainted the lady budur with what he had seen in his dream, she and he went in to her sire and, telling him what had passed, besought his leave to travel. he gave the prince the permission he sought; but the princess said, \"o my father, i cannot bear to be parted from him.\" quoth ghayur, her sire, \"then go thou with him,\" and gave her leave to be absent a whole twelvemonth and afterwards to visit him in every year once; so she kissed his hand and kamar al-zaman did the like. thereupon king ghayur proceeded to equip his daughter and her bridegroom for the journey, and furnished them with outfit and appointments for the march; and brought out of his stables horses marked with his own brand, blood-dromedaries which can journey ten days without water, and prepared a litter for his daughter, besides loading mules and camels with victual; moreover, he gave them slaves and eunuchs to serve them and all manner of travellinggear; and on the day of departure, when king ghayur took leave of kamar al-zaman, he bestowed on him ten splendid suits of cloth of gold embroidered with stones of price, together with ten riding horses and ten she-camels, and a treasury of money; and he charged him to love and cherish his daughter the lady budur. then the king accompanied them to the farthest limits of his islands where, going in to his daughter budur in the litter, he kissed her and strained her to his bosom, weeping and repeating,',\n", + " '\"o thou who wooest severance, easy fare! *',\n", + " 'for love-embrace belongs to lover-friend:',\n", + " \"fare softly! fortune's nature falsehood is, *\",\n", + " 'and parting shall love\\'s every meeting end.\"',\n", + " 'then leaving his daughter, he went to her husband and bade him farewell and kissed him; after which he parted from them and, giving the order for the march he returned to his capital with his troops. the prince and princess and their suite fared on without stopping through the first day and the second and the third and the fourth, nor did they cease faring for a whole month till they came to a spacious champaign, abounding in pasturage, where they pitched their tents; and they ate and drank and rested, and the princess budur lay down to sleep. presently, kamar al-zaman went in to her and found her lying asleep clad in a shift of apricot-coloured silk that showed all and everything; and on her head was a coif of gold-cloth embroidered with pearls and jewels. the breeze raised her shift which laid bare her navel and showed her breasts and displayed a stomach whiter than snow, each one of whose dimples would contain an ounce of benzoin- ointment. at this sight, his love and longing redoubled, and he began reating,',\n", + " '\"an were it asked me when by hell-fire burnt, *',\n", + " 'when flames of heart my vitals hold and hem,',\n", + " \"'which wouldst thou chose, say wouldst thou rather them, *\",\n", + " 'or drink sweet cooling draught?\\' i\\'d answer, \\'them!\\' \"',\n", + " 'then he put his hand to the band of her petticoat-trousers and drew it and loosed it, for his soul lusted after her, when he saw a jewel, red as dye-wood, made fast to the band. he untied it and examined it and, seeing two lines of writing graven thereon, in a character not to be read, marvelled and said in his mind, \"were not this bezel something to her very dear she had not bound it to her trousers-band nor hidden it in the most privy and precious place about her person, that she might not be parted from it. would i knew what she cloth with this and what is the secret that is in it.\" so saying, he took it and went outside the tent to look at it in the light,—and shahrazad perceived the dawn of day, and ceased to say her permitted say.',\n", + " 'when it was the two hundred and seventh night,',\n", + " 'she said, it hath reached me, o auspicious king, that when he took the bezel to look at it in the light, the while he was holding it behold, a bird swooped down on him and, snatching the same from his hand, flew off with it and then lighted on the ground. there-upon kamar al-zaman fearing to lose the jewel, ran after the bird; but it flew on before him, keeping just out of his reach, and ceased not to draw him on from dale to dale and from hill to hill, till the night starkened and the firmament darkened, when it roosted on a high tree. so kamar al-zaman stopped under the tree confounded in thought and faint for famine and fatigue, and giving himself up for lost, would have turned back, but knew not the way whereby he came, for that darkness had overtaken him. then he exclaimed, \"there is no majesty and there is no might save in allah, the glorious the great!\"; and laying him down under the tree (whereon was the bird) slept till the morning, when he awoke and saw the bird also wake up and fly away. he arose and walked after it, and it flew on little by little before him, after the measure of his faring; at which he smiled and said, \"by allah, a strange thing! yesterday, this bird flew before me as fast as i could run, and to-day, knowing that i have awoke tired and cannot run, he flieth after the measure of my faring. by allah, this is wonderful! but i must needs follow this bird whether it lead me to death or to life; and i will go wherever it goeth, for at all events it will not abide save in some inhabited land. so he continued to follow the bird which roosted every night upon a tree; and he ceased not pursuing it for a space of ten days, feeding on the fruits of the earth and drinking of its waters. at the end of this time, he came in sight of an inhabited city, whereupon the bird darted off like the glance of the eye and, entering the town, disappeared from kamar al-zaman, who knew not what it meant or whither it was gone; so he marvelled at this and exclaimed, \"praise be to allah who hath brought me in safety to this city!\" then he sat down by a stream and washed his hands and feet and face and rested awhile; and, recalling his late easy and pleasant life of union with his beloved and contrasting it with his present plight of trouble and fatigue and distress and strangerhood and famine and severance, the tears streamed from his eyes and he began repeating these cinquains,',\n", + " '\"pain had i hid thy handwork, but it showed, *',\n", + " 'changed sleep for wake, and wake with me abode:',\n", + " 'when thou didst spurn my heart i cried aloud *',\n", + " 'pate, hold thy hand and cease to gird and goad:',\n", + " 'in dole and danger aye my sprite i spy!',\n", + " 'an but the lord of love were just to me, *',\n", + " \"sleep fro' my eyelids ne'er were forced to flee.\",\n", + " \"pity, my lady, one for love o' thee *\",\n", + " 'prom his tribes darling brought to low degree:',\n", + " 'love came and doomed wealth beggar-death to die.',\n", + " \"the railers chide at thee: i ne'er gainsay, *\",\n", + " 'but stop my ears and dumbly sign them nay:',\n", + " \"'thou lov'st a slender may,' say they; i say, *\",\n", + " \"'i've picked her out and cast the rest away:'\",\n", + " \"enough; when fate descends she blinds man's\",\n", + " 'eye!\"',\n", + " 'and as soon as he had finished his poetry and had taken his rest, he rose and walked on little by little, till he entered the city.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and eighth night,',\n", + " 'she said, it hath reached me, o auspicious king, that as soon as kamar al-zaman had finished his poetry and had taken his rest, he arose and entered the city-gate not knowing whither he should wend. he crossed the city from end to end, entering by the land-gate, and ceased not faring on till he came out at the sea- gate, for the city stood on the sea-shore. yet he met not a single one of its citizens. and after issuing from the land-gate he fared forwards and ceased not faring till he found himself among the orchards and gardens of the place; and, passing among the trees presently came to a garden and stopped before its door; where-upon the keeper came out to him and saluted him. the prince returned his greeting and the gardener bade him welcome, saying, \"praised be allah that thou hast come off safe from the dwellers of this city! quick, come into the garth, ere any of the townfolk see thee.\" thereupon kamar al-zaman entered that garden, wondering in mind, and asked the keeper, \"what may be the history of the people of this city and who may they be?\" the other answered, \"know that the people of this city are all magians: but allah upon thee, tell me how thou camest to this city and what caused thy coming to our capital.\" accordingly kamar al-zaman told the gardener all that had befallen him from beginning to end, whereat he marvelled with great marvel and said, \"know, o my son, that the cities of al-islam lie far from us; and between us and them is a four months\\' voyage by sea and a whole twelve months\\' journey by land. we have a ship which saileth every year with merchandise to the nearest moslem country and which entereth the seas of the ebony islands and thence maketh the khalidan islands, the dominions of king shahriman.\" thereupon kamar al- zaman considered awhile and concluded that he could not do better than abide in the garden with the gardener and become his assistant, receiving for pay one fourth of the produce. so he said to him, \"wilt thou take me into thy service, to help thee in this garden?\" answered the gardener, \"to hear is to consent;\" and began teaching him to lead the water to the roots of the trees. so kamar al-zaman abode with him, watering the trees and hoeing up the weeds and wearing a short blue frock which reached to his knees. and he wept floods of tears; for he had no rest day or night, by reason of his strangerhood and he ceased not to repeat verses upon his beloved, amongst others the following couplets,',\n", + " '\"ye promised us and will ye not keep plight? *',\n", + " 'ye said a say and shall not deed be dight?',\n", + " 'we wake for passion while ye slumber and sleep; *',\n", + " 'watchers and wakers claim not equal right:',\n", + " 'we vowed to keep our loves in secrecy, *',\n", + " 'but spake the meddler and you spoke forthright:',\n", + " 'o friend in pain and pleasure, joy and grief, *',\n", + " 'in all case you, you only, claim my sprite!',\n", + " 'mid folk is one who holds my prisoned heart; *',\n", + " 'would he but show some ruth for me to sight.',\n", + " 'not every eye like mine is wounded sore, *',\n", + " 'not every heart like mine love-pipings blight:',\n", + " 'ye wronged me saying, love is wrongous aye *',\n", + " 'yea! ye were right, events have proved that quite.',\n", + " 'forget they one love-thralled, whose faith the world *',\n", + " 'robs not, though burn the fires in heart alight:',\n", + " 'if an my foeman shall become my judge, *',\n", + " 'whom shall i sue to remedy his despight?',\n", + " 'had not i need of love nor love had sought, *',\n", + " 'my heart forsure were not thus love-distraught.\"',\n", + " 'such was the case with kamar al-zaman; but as regards his wife, the lady budur, when she awoke she sought her husband and found him not: then she saw her petticoat-trousers undone, for the band had been loosed and the bezel lost, whereupon she said to herself, \"by allah, this is strange! where is my husband? it would seem as if he had taken the talisman and gone away, knowing not the secret which is in it. would to heaven i knew whither can he have wended! but it must needs have been some extraordinary matter that drew him away, for he cannot brook to leave me a moment. allah curse the stone and damn its hour!\" then she considered awhile and said in her mind, \"if i go out and tell the varlets and let them learn that my husband is lost they will lust after me: there is no help for it but that i use stratagem. so she rose and donned some of her husband\\'s clothes and riding- boots, and a turband like his, drawing one corner of it across her face for a mouth-veil. then, setting a slave-girl in her litter, she went forth from the tent and called to the pages who brought her kamar al-zaman\\'s steed; and she mounted and bade them load the beasts and resume the march. so they bound on the burdens and departed; and she concealed her trick, none doubting but she was kamar al-zaman, for she favoured him in face and form; nor did she cease journeying, she and her suite, days and nights, till they came in sight of a city overlooking the salt sea, where they pitched their tents without the walls and halted to rest. the princess asked the name of the town and was told, \"it is called the city of ebony; its king is named armanús, and he hath a daughter hayát al-nufús hight,\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the two hundred and ninth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when the lady budur halted within sight of the ebony city to take her rest, king armanus sent a messenger, to learn what king it was who had encamped without his capital; so the messenger, coming to the tents, made inquiry anent their king, and was told that she was a king\\'s son who had lost the way being bound for the khalidan islands; whereupon he returned to king armanus with the tidings; and, when the king heard them, he straightway rode out with the lords of his land to greet the stranger on arrival. as he drew near the tents the lady budur came to meet him on foot, whereupon the king alighted and they saluted each other. then he took her to the city and, bringing her up to the palace, bade them spread the tables and trays of food and commanded them to transport her company and baggage to the guess house. so they abode there three days; at the end of which time the king came in to the lady budur. now she had that day gone to the hammam and her face shone as the moon at its full, a seduction to the world and a rending of the veil of shame to mankind; and armanus found her clad in a -suit of silk, embroidered with gold and jewels; so he said to her, \\'o my son, know that i am a very old man, decrepit withal, and allah hath blessed me with no child save one daughter, who resembleth thee in beauty and grace; and i am now waxed unfit for the conduct of the state. she is shine, o my son; and, if this my land please thee and thou be willing to abide and make thy home here, i will marry thee to her and give thee my kingdom and so be at rest.\" when princess budur heard this, she bowed her head and her forehead sweated for shame, and she said to herself. \"how shall i do, and i a woman? if i refuse and depart from him, i cannot be safe but that haply send after me troops to slay me; and if i consent, belike i shall be put to shame. i have lost my beloved kamar al-zaman and know not what is become of him; nor can i escape from this scrape save by holding my peace and consenting and abiding here, till allah bring about what is to be.\" so she raised her head and made submission to king armanus, saying, \"hearkening and obedience!\"; whereat he rejoiced and bade the herald make proclamation throughout the ebony islands to hold high festival and decorate the houses. then he assembled his chamberlains and nabobs, and emirs and wazirs and his officers of state and the kazis of the city; and, formally abdicating his sultanate, endowed budur therewith and invested her in all the vestments of royalty. the emirs and grandees went in to her and did her homage, nothing doubting but that she was a young man, and all who looked on her bepissed their bag-trousers, for the excess of her beauty and loveliness. then, after the lady budur had been made sultan and the drums had been beaten in announcement of the glad event, and she had been ceremoniously enthroned, king armanus proceeded to equip his daughter hayat al-nufus for marriage, and in a few days, they brought the lady budur in to her, when they seemed as it were two moons risen at one time or two suns in conjunction. so they entered the bridal-chamber and the doors were shut and the curtains let down upon them, after the attendants had lighted the wax-candles and spread for them the carpet-bed. when budur found herself alone with the princess hayat al-nufus, she called to mind her beloved kamar al-zaman and grief was sore upon her. so she wept for his absence, and estrangement and she began repeating,',\n", + " '\"o ye who fled and left my heart in pain low li\\'en, *',\n", + " 'no breath of life if found within this frame of mine:',\n", + " \"i have an eye which e'er complains of wake, but lo! *\",\n", + " 'tears occupy it would that wake content these eyne!',\n", + " \"after ye marched forth the lover 'bode behind; *\",\n", + " 'question of him what pains your absence could design!',\n", + " 'but for the foods of tears mine eyelids rail and rain, *',\n", + " 'my fires would flame on high and every land calcine.',\n", + " 'to allah make i moan of loved ones lost for aye, *',\n", + " 'who for my pine and pain no more shall pain and pine:',\n", + " 'i never wronged them save that over love i nurst: *',\n", + " 'but love departs us lovers into blest and curst.\"',\n", + " 'and when she had finished her repeating, the lady budur sat down beside the princess hayat al-nufus and kissed her on the mouth; after which rising abruptly, she made the minor ablution and betook herself to her devotions; nor did she leave praying till hayat al-nufus fell asleep, when she slips into bed and lay with her back to her till morning. and when day had broke the king and queen came in to their daughter and asked her how she did. whereupon she told them what she had seen, and repeated to them the verses she had heard. thus far concerning hayat al-nufus and her father; but as regards queen budur she went forth and seated herself upon the royal throne and all the emirs and captains and officers of state came up to her and wished her joy of the kingship, kissing the earth before her and calling down blessings upon her. and she accosted them with smiling face and clad them in robes of honour, augmenting the fiefs of the high officials and giving largesse to the levies; wherefore all the people loved her and offered up prayers for the long endurance of her reign, doubting not but that she was a man. and she ceased not sitting all day in the hall of audience, bidding and forbidding; dispensing justice, releasing prisoners and remitting the customs-dues, till nightfall, when she withdrew to the apartment prepared for her. here she found hayat al-nufus seated, so she sat down by her side and, clapping her on the back, coaxed and caressed her and kissed her between the eyes, and fell to versifying in these couplets,',\n", + " '\"what secret kept i these my tears have told, *',\n", + " 'and my waste body must my love unfold:',\n", + " 'though hid my pine, my plight on parting day *',\n", + " 'to every envious eye my secret sold:',\n", + " \"o ye who broke up camp, you've left behind *\",\n", + " 'my spirit wearied and my heart a-cold:',\n", + " 'in my hearts core ye dwell, and now these eyne *',\n", + " 'roll blood-drops with the tears they whilome rolled:',\n", + " 'the absent will i ransom with my soul; *',\n", + " 'all can my yearning for their sight behold:',\n", + " 'i have an eye whose babe, for love of thee, *',\n", + " 'rejected sleep nor hath its tears controlled.',\n", + " 'the foeman bids me patient bear his loss, *',\n", + " \"ne'er may mine ears accept the ruth he doled!\",\n", + " 'i tricks their deme of me, and won my wish *',\n", + " \"of kamar al-zaman's joys manifold:\",\n", + " 'he joins all perfect gifts like none before, *',\n", + " 'boasted such might and main no king of old:',\n", + " \"seeing his gifts, bin zá'idah's largesse *\",\n", + " \"forget we, and mu'áwiyah mildest-soul'd:\",\n", + " \"were verse not feeble and o'er short the time *\",\n", + " 'i had in laud of him used all of rhyme.\"',\n", + " 'then queen budur stood up and wiped away her tears and, making the lesser ablution, applied her to pray: nor did she give over praying till drowsiness overcame the lady hayat al- nufus and she slept, whereupon the lady budur came and lay by her till the morning. at daybreak, she arose and prayed the dawn- prayer; and presently seated herself on the royal throne and passed the day in ordering and counter ordering and giving laws and administering justice. this is how it fared with her; but as regards king armanus he went in to his daughter and asked her how she did; so she told him all that had befallen her and repeated to him the verses which queen budur had recited, adding, \"o my father, never saw i one more abounding in sound sense and modesty than my husband, save that he cloth nothing but weep and sigh.\" he answered, \"o my daughter, have patience with him yet this third night, and if he go not in unto thee and do away thy maidenhead, we shall know how to proceed with him and oust him from the throne and banish him the country.\" and on this wise he agreed with his daughter what course he would take.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and tenth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when king armanus had agreed with his daughter on this wise and had determined what course he would take and night came on, queen budur arose from the throne of her kingdom and betaking herself to the palace, entered the apartment prepared for her. there she found the wax-candles lighted and the princess hayat al-nufus seated and awaiting her; whereupon she bethought her of her husband and what had betided them both of sorrow and severance in so short a space; she wept and sighed and groaned groan upon groan, and began improvising these couplets,',\n", + " '\"news of my love fill all the land, i swear, *',\n", + " 'as suns on ghazá-wold rain heat and glare:',\n", + " 'speaketh his geste but hard its sense to say; *',\n", + " 'thus never cease to grow my cark and care:',\n", + " 'i hate fair patience since i loved thee; *',\n", + " \"e'er sawest lover hate for love to bear?\",\n", + " 'a glance that dealt love-sickness dealt me death, *',\n", + " 'glances are deadliest things with torments rare:',\n", + " 'he shook his love locks down and bared his chin, *',\n", + " 'whereby i spied his beauties dark and fair:',\n", + " 'my care, my cure are in his hands; and he *',\n", + " 'who caused their dolour can their dole repair:',\n", + " 'his belt went daft for softness of his waist; *',\n", + " 'his hips, for envy, to uprise forbear:',\n", + " 'his brow curl-diademed is murky night; *',\n", + " 'unveil \\'t and lo! bright morn shows brightest light.\"',\n", + " 'when she had finished her versifying, she would have risen to pray, but, lo and behold! hayat al-nufus caught her by the skirt and clung to her saying, \"o my lord, art thou not ashamed before my father, after all his favour, to neglect me at such a time as this?\" when queen budur heard her words, she sat down in the same place and said, \"o my beloved, what is this thou sayest?\" she replied, \"what i say is that i never saw any so proud of himself as thou. is every fair one so disdainful? i say not this to incline thee to me; i say it only of my fear for thee from king armanus; because he purposeth, unless thou go in unto me this very night, and do away my maidenhead, to strip thee of the kingship on the morrow and banish thee his kingdom; and peradventure his excessive anger may lead him to slay thee. but i, o my lord, have ruth on thee and give thee fair warning; and it is thy right to reck.\" now when queen budur heard her speak these words, she bowed her head ground-wards awhile in sore perplexity and said in herself, \"if i refuse i\\'m lost; and if i obey i\\'m shamed. but i am now queen of all the ebony islands and they are under my rule, nor shall i ever again meet my kamar al- zaman save in this place; for there is no way for him to his native land but through the ebony islands. verily, i know not what to do in my present case, but i commit my care to allah who directeth all for the best, for i am no man that i should arise and open this virgin girl.\" then quoth queen budur to hayat al- nufus, \"o my beloved, that i have neglected thee and abstained from thee is in my own despite.\" and she told her her whole story from beginning to end and showed her person to her, saying, \"i conjure thee by allah to keep my counsel, for i have concealed my case only that allah may reunite me with my beloved kamar al- zaman and then come what may.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the two hundred and eleventh night,',\n", + " 'she said, it hath reached me, o auspicious king, that when the lady budur acquainted hayat al-nufus with her history and bade her keep it secret, the princess heard her with extreme wonderment and was moved to pity and prayed allah to reunite her with her beloved, saying, \"fear nothing, o my sister; but have patience till allah bring to pass that which must come to pass:\" and she began repeating,',\n", + " '\"none but the men of worth a secret keep;',\n", + " \"with worthy men a secret's hidden deep;\",\n", + " 'as in a room, so secrets lie with me,',\n", + " 'whose door is sealed, lock shot and lost the key.\"',\n", + " 'and when hayat al-nufus had ended her verses, she said, \"o my sister, verily the breasts of the noble and brave are of secrets the grave; and i will not discover shine.\" then they toyed and embraced and kissed and slept till near the mu\\'ezzin\\'s call to dawn prayer, when hayat al-nufus arose and took a pigeon-poult, and cut its throat over her smock and besmeared herself with its blood. then she pulled off her petticoat-trousers and cried aloud, where-upon her people hastened to her and raised the usual lullilooing and outcries of joy and gladness. presently her mother came in to her and asked her how she did and busied herself about her and abode with her till evening; whilst the lady budur arose with the dawn, and repaired to the bath and, after washing herself pure, proceeded to the hall of audience, where she sat down on her throne and dispensed justice among the folk. now when king armanus heard the loud cries of joy, he asked what was the matter and was informed of the consummation of his daughter\\'s marriage; whereat he rejoiced and his breast swelled with gladness and he made a great marriage-feast whereof the merry-making lasted a long time. such was their case: but as regards king shahriman it was on this wise. after his son had fared forth to the chase accompanied by marzawan, as before related, he tarried patiently awaiting their return at nightfall; but when his son did not appear he passed a sleepless night and the dark hours were longsome upon him; his restlessness was excessive, his excitement grew upon him and he thought the morning would never dawn. anc when day broke he sat expecting his son and waited till noon, but he came not; whereat his heart forebode separation and was fired with fears for kamar al-zaman; and he cried, \"alas! my son!\" and he wept till his clothes were drenched with tears, and repeated with a beating heart,',\n", + " '\"love\\'s votaries i ceased not to oppose, *',\n", + " \"till doomed to taste love's bitter and love's sweet:\",\n", + " 'i drained his rigour-cup to very dregs, *',\n", + " \"self humbled at its slaves' and freemen's feet:\",\n", + " 'fortune had sworn to part the loves of us; *',\n", + " 'she kept her word how truly, well i weet!\"',\n", + " 'and when he ended his verse, he wiped away his tears and bade his troops make ready for a march and prepare for a long expedition. so they all mounted and set forth, headed by the sultan, whose heart burnt with grief and was fired with anxiety for his son kamar al-zaman; and they advanced by forced marches. now the king divided his host into six divisions, a right wing and a left wing, a vanguard and a rear guard; and bade them rendezvous for the morrow at the cross-roads. accordingly they separated and scoured the country all the rest of that day till night, and they marched through the night and at noon of the ensuing day they joined company at the place where four roads met. but they knew not which the prince followed, till they saw the sign of torn clothes and sighted shreds of flesh and beheld blood still sprinkled by the way and they noted every piece of the clothes and fragment of mangled flesh scattered on all sides. now when king shahriman saw this, he cried from his heart-core a loud cry, saying, \"alas, my son!\"; and buffeted his face and plucks his beard and rent his raiment, doubting not but his son was dead. then he gave himself up to excessive weeping and wailing, and the troops also wept for his weeping, all being assured that prince kamar al-zaman had perished. they threw dust on their heads, and the night surprised them shedding tears and lamenting till they were like to die. then the king with a heart on fire and with burning sighs spake these couplets,',\n", + " '\"chide not the mourner for bemourning woe; *',\n", + " 'enough is yearning every ill to show:',\n", + " 'he weeps for stress of sorrow and of pain, *',\n", + " 'and these to thee best evidence his lowe:',\n", + " \"happy! of whom love sickness swore that ne'er *\",\n", + " 'should cease his eye lids loving tears to flow:',\n", + " 'he mourns the loss of fairest, fullest moon, *',\n", + " \"shining o'er all his peers in glorious glow:\",\n", + " 'but death made drink a brimming cup, what day *',\n", + " 'he fared from natal country fain to go:',\n", + " 'his home left he and went from us to grief; *',\n", + " 'nor to his brethren could he say adieu:',\n", + " 'yea, his loss wounded me with parting pangs, *',\n", + " 'and separation cost me many a throe:',\n", + " 'he fared farewelling, as he fared, our eyes; *',\n", + " 'whenas his lord vouch-safed him paradise.\"',\n", + " 'and when king shahriman had ended his verses, he returned with the troops to his capital,—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and twelfth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when king shahriman had ended his verses, he returned with the troops to his capital, giving up his son for lost, and deeming that wild beasts or banditti had set upon him and torn him to pieces; and made proclamation that all in the khalidan islands should don black in mourning for him. moreover, he built, in his memory, a pavilion, naming it house of lamentations; and on mondays and thursdays he devoted himself to the business of the state and ordering the affairs of his levies and lieges; and the rest of the week he was wont to spend in the house of lamentations, mourning for his son and bewailing him with elegiac verses, of which the following are some:—',\n", + " '\"my day of bliss is that when thou appearest; *',\n", + " 'my day of bale is that whereon thou farest:',\n", + " 'though through the night i quake in dread of death; *',\n", + " 'union wi\\' thee is of all bliss the dearest.\"',\n", + " 'and again he said,',\n", + " '\"my soul be sacrifice for one, whose going *',\n", + " 'afflicted hearts with sufferings sore and dread:',\n", + " 'let joy her widowed term fulfil, for i *',\n", + " 'divorced joy with the divorce thrice-said.\"',\n", + " 'such was the case with king shahriman; but as regards queen budur daughter of king ghayur, she abode as ruler in the ebony islands, whilst the folk would point to her with their fingers, and say, \"yonder is the son-in-law of king armanus.\" and every night she lay with hayat al-nufus, to whom she lamented her desolate state and longing for her husband kamar al-zaman; weeping and describing to her his beauty and loveliness, and yearning to enjoy him though but in a dream: and at times she would repeat,',\n", + " '\"well allah wots that since my severance from thee, *',\n", + " 'i wept till forced to borrow tears at usury:',\n", + " \"'patience!' my blamer cried, 'heartsease right soon shalt see!' *\",\n", + " 'quoth i, \\'say, blamer, where may home of patience be?\\'\"',\n", + " 'this is how it fared with queen budur; but as regards kamar al- zaman, he abode with the gardener in the garden for no short time, weeping night and day and repeating verses bewailing the past time of enjoyment and delight; whilst the gardener kept comforting him and assuring him that the ship would set sail for the land of the moslems at the end of the year. and in this condition he continued till one day he saw the folk crowding together and wondered at this; but the gardener came in to him and said, \"o my son, give over work for this day nor lead water to the trees; for it is a festival day, whereon folk visit one another. so take thy rest and only keep shine eye on the garden, whilst i go look after the ship for thee; for yet but a little while and i send thee to the land of the moslems.\" upon this, he went forth from the garden leaving to himself kamar al-zaman, who fell to musing upon his case till his heart was like to break and the tears streamed from his eyes. so he wept with excessive weeping till he swooned away and, when he recovered, he rose and walked about the garden, pondering what time had done with him and bewailing the long endurance of his estrangement and separation from those he loved. as he was thus absorbed in melancholy thought, his foot stumbled and he fell on his face, his forehead striking against the projecting root of a tree; and the blow cut it open and his blood ran down and mingled with his tears then he rose and, wiping away the blood, dried his tears and bound his brow with a piece of rag; then continued his walk about the garden engrossed by sad reverie. presently, he looked up at a tree and saw two birds quarrelling thereon, and one of them rose up and smote the other with its beak on the neck and severed from its body its head, wherewith it flew away, whilst the slain bird fell to the ground before kamar al-zaman. as it lay, behold, two great birds swooped down upon it alighting, one at the head and the other at the tail, and both drooped their wings and bowed their bills over it and, extending their necks towards it, wept. kamar al-zaman also wept when seeing the birds thus bewail their mate, and called to mind his wife and father, and shahrazed perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the two hundred and thirteenth night,',\n", + " 'she said, it hath reached me, o auspicious king, that kamar al- zaman wept and lamented his separation from spouse and sire, when he beheld those two birds weeping over their mate. then he looked at the twain and saw them dig a grave and therein bury the slain bird; after which they flew away far into the firmament and disappeared for a while; but presently they returned with the murtherer-bird and, alighting on the grave of the murthered, stamped on the slayer till they had done him to death. then they rent his belly and tearing out his entrails, poured the blood on the grave of the slain: moreover, they stripped off his skin and tare his flesh in pieces and, pulling out the rest of the bowels, scattered them hither and thither. all this while kamar al-zaman was watching them wonderingly; but presently, chancing to look at the place where the two birds had slain the third, he saw therein something gleaming. so he drew near to it and noted that it was the crop of the dead bird. whereupon he took it and opened it and found the talisman which had been the cause of his separation from his wife. but when he saw it and knew it, he fell to the ground a-fainting for joy; and, when he revived, he said, \"praised be allah! this is a foretaste of good and a presage of reunion with my beloved.\" then he examined the jewel and passed it over his eyes; after which he bound it to his forearm, rejoicing in coming weal, and walked about till nightfall awaiting the gardener\\'s return; and when he came not, he lay down and slept in his wonted place. at daybreak he rose to his work and, girding his middle with a cord of palm- fibre, took hatchet and basket and walked down the length of the garden, till he came to a carob-tree and struck the axe into its roots. the blow rang and resounded; so he cleared away the soil from the place and discovered a trap-door and raised it.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and fourteenth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when kamar al-zaman raised the trap-door, he found a winding stair, which he descended and came to an ancient vault of the time of ad and thamúd, hewn out of the rock. round the vault stood many brazen vessels of the bigness of a great oil-jar which he found full of gleaming red gold: whereupon he said to himself, \"verily sorrow is gone and solace is come!\" then he mounted from the souterrain to the garden and, replacing the trap-door as it was before, busied himself in conducting water to the trees till the last of the day, when the gardener came back and said to him, \"o my son, rejoice at the good tidings of a speedy return to thy native land: the merchants are ready equipped for the voyage and the ship in three days\\' time will set sail for the city of ebony, which is the first of the cities of the moslems, and after making it, thou must travel by land a six months\\' march till thou come to the islands of khalidan, the dominions of king shahriman.\" at this kamar al-zaman rejoiced and began repeating,',\n", + " '\"part not from one whose wont is not to part from you; *',\n", + " 'nor with your cruel taunts an innocent mortify:',\n", + " \"another so long parted had ta'en heart from you, *\",\n", + " 'and had his whole condition changed,—but not so i.\"',\n", + " 'then he kissed the gardener\\'s hand and said, \"o my father, even as thou hast brought me glad tidings, so i also have great good news for thee,\\' and told him anent his discovery of the vault; whereat the gardener rejoiced and said, \"o my son, fourscore years have i dwelt in this garden and have never hit on aught whilst thou, who hast not sojourned with me a year, hast discovered this thing; wherefore it is heaven\\'s gift to thee, which shall end thy crosses and aid thee to rejoin thy folk and foregather with her thou lovest.\" quoth kamar al-zaman, \"there is no help but it must be shared between me and thee.\" then he carried him to the underground-chamber and showed him the gold, which was in twenty jars: he took ten and the gardener ten, and the old man said to him, \"o my son, fill thyself leather bottles with the sparrow-olives which grow in this garden, for they are not found except in our land; and the merchants carry them to all parts. lay the gold in the bottles and strew it over with olives: then stop them and cover them and take them with thee in the ship.\" so kamar al-zaman arose without stay or delay and took fifty leather bottles and stored in each somewhat of the gold, and closed each one after placing a layer of olives over the gold; and at the bottom of one of the bottles he laid the talisman. then sat he down to talk with the gardener, confident of speedy reunion with his own people and saying to himself, \"when i come to the ebony islands i will journey thence to my father\\'s country and enquire for my beloved budur. would to heaven i knew whether she returned to her own land or journeyed on to my father\\'s country or whether there befel her any accident by the way.\" and he began versifying,',\n", + " '\"love in my breast they lit and fared away, *',\n", + " 'and far the land wherein my love is pent:',\n", + " 'far lies the camp and those who camp therein; *',\n", + " \"par is her tent-shrine, where i ne'er shall tent.\",\n", + " 'patience far deaf me when from me they fled; *',\n", + " 'sleep failed mine eyes, endurance was forspent:',\n", + " 'they left and with them left my every joy, *',\n", + " 'wending with them, nor find i peace that went:',\n", + " 'they made these eyes roll down love tears in flood, *',\n", + " 'and lacking them these eyne with tears are drent.',\n", + " 'when my taste spins once again would see them, *',\n", + " 'when pine and expectation but augment,',\n", + " \"in my heart's core their counterfeits i trace, *\",\n", + " 'with love and yearning to behold their grace.\"',\n", + " 'then, while he awaited the end of the term of days, he told the gardener the tale of the birds and what had passed between them; whereat the hearer wondered; and they both lay down and slept till the morning. the gardener awoke sick and abode thus two days; but on the third day, his sickness increased on him, till they despaired of his life and kamar al-zaman grieved with sore grief for him. meanwhile behold, the master and his crew came and enquired for the gardener; and, when kamar al-zaman told them that he was sick, they asked, \"where be the youth who is minded to go with us to the ebony islands?\" \"he is your servent and he standeth before you!\" answered the prince and bade them carry the bottles of olives to the ship; so they transported them, saying, \"make haste, thou, for the wind is fair;\" and he replied, \"i hear and obey.\" then he carried his provaunt on board and, returning to bid the gardener farewell, found him in the agonies of death; so he sat down at his head and closed his eyes, and his soul departed his body; whereupon he laid him out and committed him to the earth unto the mercy of allah almighty. then he made for the ship but found that she had already weighed anchor and set sail; nor did she cease to cleave the seas till she disappeared from his sight. so he went back to whence he came heavy-hearted with whirling head; and neither would he address a soul nor return a reply; and reaching the garden and sitting down in cark and care he threw dust on his head and buffeted his cheeks.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and fifteenth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when the ship sped on her course, kamar al-zaman returned to the garden in cark and care; but- anon he rented the place of its owner and hired a man to help him in irrigating the trees. moreover, he repaired the trap-door and he went to the underground chamber and bringing the rest of the gold to grass, stowed it in other fifty bottles which he filled up with a layer of olives. then he enquired of the ship and they told him that it sailed but once a year, at which his trouble of mind redoubled and he cried sore for that which had betided him, above all for the loss of the princess budur\\'s talisman, and spent his nights and days weeping and repealing verses. such was his case; but as regards the ship she sailed with a favouring wind till she reached the ebony islands. now by decree of destiny, queen budur was sitting at a lattice-window overlooking the sea and saw the galley cast anchor upon the strand. at this sight, her heart throbbed and she took horse with the chamberlains and nabobs and, riding down to the shore, halted by the ship, whilst the sailors broke bulk and bore the bales to the storehouses; after which she called the captain to her presence and asked what he had with him. he answered \"o king, i have with me in this ship aromatic drugs and cosmetics and healing powders and ointments and plasters and precious metals and rich stuffs and rugs of yemen leather, not to be borne of mule or camel, and all manner of otters and spices and perfumes, civet and ambergris and camphor and sumatra aloes-wood, and tamerinds and sparrow-olives to boot, such as are rare to find in this country.\" when she heard talk of sparrow- olives her heart longed for them and she said to the ship-master, \"how much of olives hast thou?\" he replied, \"fifty bottles full, but their owner is not with us, so the king shall take what he will of them.\" quoth she, \"bring them ashore, that i may see them.\\'\\' thereupon he called to the sailors, who brought her the fifty bottles; and she opened one and, looking at the olives, said to the captain, \"i will take the whole fifty and pay you their value, whatso it be.\" he answered, \"by allah, o my lord, they have no value in our country; moreover their shipper tarried behind us, and he is a poor man.\" asked she, \"and what are they worth here?\" and he answered \"a thousand dirhams.\" \"i will take them at a thousand,\" she said and bade them carry the fifty bottles to the palace. when it was night, she called for a bottle of olives and opened it, there being none in the room but herself and the princess hayat al-nufus. then, placing a dish before her she turned into it the contents of the jar, when there fell out into the dish with the olives a heap of red gold; and she said to the lady hayat al-nufus, \"this is naught but gold!\" so she sent for the rest of the bottles and found them all full of precious metal and scarce enough olives to fill a single jar. moreover, she sought among the gold and found therein the talisman, which she took and examined and behold, it was that which kamar al- zaman had taken from off the band of her petticoat trousers. thereupon she cried out for joy and slipped down in a swoon;—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the two hundred and sixteenth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when king budur saw the talisman she cried out for joy and slipped down in a swoon; and when she recovered she said to herself, \"verily, this talisman was the cause of my separation from my beloved kamar al-zaman; but now it is an omen of good.\" then she showed it to hayat al-nufus and said to her, \"this was the cause of disunion and now, please allah, it shall be the cause of reunion.\" as soon as day dawned she seated herself on the royal throne and sent for the ship-master, who came into the presence and kissed the ground before her. quoth she, \"where didst thou leave the owner of these olives?\" quoth he, \"o king of the age, we left him in the land of the magians and he is a gardener there.\" she rejoined, \"except thou bring him to me, thou knowest not the harm which awaiteth thee and thy ship.\" then she bade them seal up the magazines of the merchants and said to them, \"verily the owner of these olives hath borrowed of me and i have a claim upon him for debt and, unless ye bring him to me, i will without fail do you all die and seize your goods.\" so they went to the captain and promised him the hire of the ship, if he would go and return a second time, saying, \"deliver us from this masterful tyrant.\" accordingly the skipper embarked and set sail and allah decreed him a prosperous voyage, till he came to the island of the magians and, landing by night, went up to the garden. now the night was long upon kamar al-zaman, and he sat, bethinking him of his beloved, and bewailing what had befallen him and versifying,',\n", + " '\"a night whose stars refused to run their course, *',\n", + " 'a night of those which never seem outworn:',\n", + " 'like resurrection-day, of longsome length *',\n", + " 'to him that watched and waited for the morn.\"',\n", + " 'now at this moment, the captain knocked at the garden-gate, and kamar al-zaman opened and went out to him, whereupon the crew seized him and went down with him on board the ship and set sail forthright; and they ceased not voyaging days and nights, whilst kamar al-zaman knew not why they dealt thus with him; but when he questioned them they replied, \"thou hast offended against the lord of the ebony islands, the son-in-law of king armanus, and thou hast stolen his monies, miserable that thou art!\" said he, \"by allah! i never entered that country nor do i know where it is!\" however, they fared on with him, till they made the ebony islands and landing, carried him up to the lady budur, who knew him at sight and said, \"leave him with the eunuchs, that they may take him to the bath.\" then she relieved the merchants of the embargo and gave the captain a robe of honour worth ten thousand pieces of gold; and, after returning to the palace, she went in that night to the princess hayat al-nufus and told her what had passed, saying, \"keep thou my counsel, till i accomplish my purpose, and do a deed which shall be recorded and shall be read by kings and commoners after we be dead and gone.\" and when she gave orders that they bear kamar al-zaman to the bath, they did so and clad him in a royal habit so that, when he came forth, he resembled a willow-bough or a star which shamed the greater and lesser light and its glow, and his life and soul returned to his frame. then he repaired to the palace and went in to the princess budur; and when she saw him she schooled her heart to patience, till she should have accomplished her purpose; and she bestowed on him mamelukes and eunuchs, camels and mules. moreover, she gave him a treasury of money and she ceased not advancing him from dignity to dignity, till she made him lord high treasurer and committed to his charge all the treasures of the state; and she admitted him to familiar favour and acquainted the emirs with his rank and dignity. and all loved him, for queen budur did not cease day by day to increase his allowances. as for kamar al-zaman, he was at a loss anent the reason of her thus honouring him; and he gave gifts and largesse out of the abundance of the wealth; and he devoted himself to the service of king armanus; so that the king and all the emirs and people, great and small, adored him and were wont to swear by his life. nevertheless, he ever marvelled at the honour and favour shown him by queen budur and said to himself, \"by allah, there needs must be a reason for this affection! peradventure, this king favoureth me not with these immoderate favours save for some ill purpose and, therefore, there is no help but that i crave leave of him to depart his realm.\" so he went in to queen budur and said to her, \"o king, thou hast overwhelmed me with favours, but it will fulfil the measure of thy bounties if thou take from me all thou hast been pleased to bestow upon me, and permit me to depart.\" she smiled and asked, \"what maketh thee seek to depart and plunge into new perils, whenas thou art in the enjoyment of the highest favour and greatest prosperity?\" answered kamar al- zaman, \"o king, verily this favour, if there be no reason for it, is indeed a wonder of wonders, more by token that thou hast advanced me to dignities such as befit men of age and experience, albeit i am as it were a young child.\" and queen budur rejoined, \"the reason is that i love thee for shine exceeding loveliness and thy surpassing beauty; and if thou wilt but grant me my desire of thy body, i will advance thee yet farther in honour and favour and largesse; and i will make thee wazir, for all thy tender age even as the folk made me sultan over them and i no older than thou; so that nowadays there is nothing strange when children take the head and by allah, he was a gifted man who said,',\n", + " \"'it seems as though of lot's tribe were our days, *\",\n", + " 'and crave with love to advance the young in years.\\'\"',\n", + " 'when kamar al-zaman heard these words, he was abashed and his cheeks flushed till they seemed a-flame; and he said, \"i need not these favours which lead to the commission of sin; i will live poor in wealth but wealthy in virtue and honour.\" quoth she, \"i am not to be duped by thy scruples, arising from prudery and coquettish ways; and allah bless him who saith,',\n", + " \"'to him i spake of coupling, but he said to me, *\",\n", + " \"how long this noyous long persistency?'\",\n", + " 'but when gold piece i showed him, he cried, *',\n", + " '\\'who from the almighty sovereign e\\'er shall flee?\\'\"',\n", + " 'now when kamar al-zaman, heard these words and understood her verses and their import, he said, \"o king, i have not the habit of these doings, nor have i strength to bear these heavy burthens for which elder than i have proved unable; then how will it be with my tender age?\" but she smiled at his speech and retorted, \"indeed, it is a matter right marvellous how error springeth from the disorder of man\\'s intendiment!! since thou art a boy, why standest thou in fear of sin or the doing of things forbidden, seeing that thou art not yet come to years of canonical responsibility; and the offences of a child incur neither punishment nor reproof? verily, thou hast committed thyself to a quibble for the sake of contention, and it is thy duty to bow before a proposal of fruition, so henceforward cease from denial and coyness, for the commandment of allah is a decree foreordained: indeed, i have more reason than thou to fear falling and by sin to be misled; and well inspired was he who said,',\n", + " \"'my prickle is big and the little one said, *\",\n", + " \"'thrust boldly in vitals with lion-like stroke!\",\n", + " \"then i, ' 'tis a sin!; and he, 'no sin to me! *\",\n", + " 'so i had him at once with a counterfeit poke.\"',\n", + " 'when kamar al-zaman heard these words, the light became darkness in his sight and he said, \"o king, thou hast in thy household fair women and female slaves, who have not their like in this age: shall not these suffice thee without me? do thy will with them and let me go!\" she replied, \"thou sayest sooth, but it is not with them that one who loveth thee can heal himself of torment and can abate his fever; for, when tastes and inclinations are corrupted by vice, they hear and obey other than good advice. so leave arguing and listen to what the poet saith,',\n", + " \"'seest not the bazar with its fruit in rows? *\",\n", + " \"these men are for figs and for sycamore those!'\",\n", + " 'and what another saith,',\n", + " \"'many whose anklet rings are dumb have tinkling belts, *\",\n", + " 'and this hath all content while that for want must wail:',\n", + " \"thou bidd'st me be a fool and quit thee for her charms; *\",\n", + " 'allah forfend i leave the faith, turn infidel!',\n", + " 'nay, by thy rights of side-beard mocking all her curls, *',\n", + " \"nor mott nor maid from thee my heart shall spell.'\",\n", + " 'and yet another,',\n", + " \"'o beauty's union! love for thee's my creed, *\",\n", + " 'free choice of faith and eke my best desire:',\n", + " 'women i have forsworn for thee; so may *',\n", + " \"deem me all men this day a shaveling friar.'\",\n", + " 'and yet another,',\n", + " \"'even not beardless one with girl, nor heed *\",\n", + " \"the spy who saith to thee ''tis an amiss!'\",\n", + " 'far different is the girl whose feet one kisses *',\n", + " \"and that gazelle whose feet the earth must kiss.'\",\n", + " 'and yet another,',\n", + " \"'a boy of twice ten is fit for a king!'\",\n", + " 'and yet another,',\n", + " \"'the penis smooth and round was made with anus best to match it, * had it been made for cunnus' sake it had been formed like hatchet!'\",\n", + " 'and yet another said,',\n", + " \"'my soul thy sacrifice! i chose thee out *\",\n", + " 'who art not menstruous nor oviparous:',\n", + " 'did i with woman mell, i should beget *',\n", + " \"brats till the wide wide world grew strait for us.'\",\n", + " 'and yet another,',\n", + " \"'she saith (sore hurt in sense the most acute *\",\n", + " 'for she had proffered what did not besuit),',\n", + " \"'unless thou stroke as man should swive his wife *\",\n", + " 'blame not when horns thy brow shall incornùte!',\n", + " 'thy wand seems waxen, to a limpo grown, *',\n", + " \"and more i palm it, softer grows the brute!'\",\n", + " 'and yet another,',\n", + " \"'quoth she (for i to lie with her forbore), *\",\n", + " \"'o folly-following fool, o fool to core:\",\n", + " 'if thou my coynte for kiblah to thy coigne *',\n", + " \"reject, we'll shall please thee more.'\",\n", + " 'and yet another,',\n", + " \"'she proffered me a tender coynte *\",\n", + " \"quoth i 'i will not roger thee!'\",\n", + " \"she drew back, saying, 'from the faith *\",\n", + " \"he turns, who's turned by heaven's decree!\",\n", + " 'and front wise fluttering, in one day, *',\n", + " \"is obsolete persistency!'\",\n", + " 'then swung she round and shining rump *',\n", + " 'like silvern lump she showed me!',\n", + " \"i cried: 'well done, o mistress mine! *\",\n", + " 'no more am i in pain for thee;',\n", + " 'o thou of all that allah oped *',\n", + " \"showest me fairest victory!'\",\n", + " 'and yet another,',\n", + " \"'men craving pardon will uplift their hands; *\",\n", + " 'women pray pardon with their legs on high:',\n", + " 'out on it for a pious, prayerful work! *',\n", + " 'the lord shall raise it in the depths to lie.\\'\"',\n", + " 'when kamar al-zaman heard her quote this poetry, and was certified that there was no escaping compliance with what willed she, he said, \"o king of the age, if thou must needs have it so, make covenant with me that thou wilt do this thing with me but once, though it avail not to correct thy depraved appetite, and that thou wilt never again require this thing of me to the end of time; so perchance shall allah purge me of the sin.\" she replied \"i promise thee this thing, hoping that allah of his favour will relent towards us and blot out our mortal offence; for the girdle of heaven\\'s forgiveness is not indeed so strait, but it may compass us around and absolve us of the excess of our heinous sins and bring us to the light of salvation out of the darkness of error; and indeed excellently well saith the poet,',\n", + " \"'of evil thing the folk suspect us twain; *\",\n", + " 'and to this thought their hearts and souls are bent:',\n", + " \"come, dear! let's justify and free their souls *\",\n", + " \"that wrong us; one good bout and then—repent!'''\",\n", + " 'thereupon she made him an agreement and a covenant and swore a solemn oath by him who is self-existent, that this thing should befal betwixt them but once and never again for all time, and that the desire of him was driving her to death and perdition. so he rose up with her, on this condition, and went with her to her own boudoir, that she might quench the lowe of her lust, saying, \"there is no majesty, and there is no might save in allah, the glorious, the great! this is the fated decree of the all- powerful, the all-wise!\"; and he doffed his bag-trousers, shamefull and abashed, with the tears running from his eyes for stress of affright. thereat she smiled and making him mount upon a couch with her, said to him, \"after this night, thou shalt see naught that will offend thee.\" then she turned to him bussing and bosoming him and bending calf over calf, and said to him, \"put thy hand between my thighs to the accustomed place; so haply it may stand up to prayer after prostration.\" he wept and cried, \"i am not good at aught of this,\" but she said, \"by my life, an thou do as i bid thee, it shall profit thee!\" so he put out his hand, with vitals a-fire for confusion, and found her thighs cooler than cream and softer than silk. the touching of them pleasured him and he moved his hand hither and thither, till it came to a dome abounding in good gifts and movements and shifts, and said in himself, \"perhaps this king is a hermaphrodite, neither man nor woman quite;\" so he said to her, \"o king, i cannot find that thou hast a tool like the tools of men; what then moved thee to do this deed?\" then loudly laughed queen budur till she fell on her back, and said, \"o my dearling, how quickly thou hast forgotten the nights we have lain together!\" then she made herself known to him, and he knew her for his wife, the lady budur, daughter of king al-ghayur, lord of the isles and the seas. so he embraced her and she embraced him, and he kissed her and she kissed him; then they lay down on the bed of pleasure voluptuous, repeating the words of the poet,',\n", + " '\"when his softly bending shape bid him close to my embrace *',\n", + " 'which clips him all about like the tendrils of the vine',\n", + " 'and shed a flood of softness on the hardness of his heart, *',\n", + " 'he yielded though at first he was minded to decline;',\n", + " \"and dreading lest the railer's eye should light upon his form, *\",\n", + " 'came armoured with caution to baffle his design:',\n", + " 'his waist makes moan of hinder cheeks that weigh upon his feet *',\n", + " \"like heavy load of merchandise upon young camel li'en;\",\n", + " 'girt with his glances scymitar which seemed athirst for blood, *',\n", + " 'and clad in mail of dusky curls that show the sheeniest',\n", + " 'shine,',\n", + " 'his fragrance wafted happy news of footstep coming nigh, *',\n", + " 'and to him like a bird uncaged i flew in straightest line:',\n", + " 'i spread my cheek upon his path, beneath his sandal-shoon, *',\n", + " 'and lo! the stibium of their dust healed all my hurt',\n", + " 'of eyne.',\n", + " 'with one embrace again i bound the banner of our loves *',\n", + " 'and loosed the knot of my delight that bound in bonds',\n", + " 'malign:',\n", + " 'then bade i make high festival, and straight came flocking in *',\n", + " 'pure joys that know not grizzled age nor aught of',\n", + " 'pain and pine:',\n", + " 'the full moon dotted with the stars the lips and pearly teeth *',\n", + " 'that dance right joyously upon the bubbling face of wine:',\n", + " 'so in the prayer-niche of their joys i yielded me to what *',\n", + " 'would make the humblest penitent of sinner most indign.',\n", + " 'i swear by all the signs of those glories in his face *',\n", + " 'i\\'ll ne\\'er forget the chapter entituled al-ikhlas.\"',\n", + " 'then queen budur told kamar al-zaman all that had befallen her from beginning to end and he did likewise; after which he began to upbraid her, saying, \"what moved thee to deal with me as thou hast done this night?\" she replied, \"pardon me! for i did this by way of jest, and that pleasure and gladness might be increased.\" and when dawned the morn and day arose with its sheen and shone, she sent to king armanus, sire of the lady hayat al-nufus, and acquainted him with the truth of the case and that she was wife to kamar al-zaman. moreover, she told him their tale and the cause of their separation, and how his daughter was a virgin, pure as when she was born. he marvelled at their story with exceeding marvel and bade them chronicle it in letters of gold. then he turned to kamar al-zaman and said, \"o king\\'s son, art thou minded to become my son-in-law by marrying my daughter?\" replied he, \"i must consult the queen budur, as she hath a claim upon me for benefits without stint.\" and when he took counsel with her, she said, \"right is thy recking; marry her and i will be her handmaid; for i am her debtor for kindness and favour and good offices, and obligations manifold, especially as we are here in her place and as the king her father hath whelmed us with benefits.\" now when he saw that she inclined to this and was not jealous of hayat al-nufus, he agreed with her upon this matter.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and seventeenth night,',\n", + " 'she said, it hath reached me, o auspicious king, that kamar al- zaman agreed with his wife, queen budur, upon this matter and told king armanus what she had said; whereat he rejoiced with great joy. then he went out and, seating himself upon his chair of estate, assembled all the wazirs, emirs, chamberlains and grandees, to whom he related the whole story of kamar al-zaman and his wife, queen budur, from first to last; and acquainted them with his desire to marry his daughter hayat al-nufus to the prince and make him king in the stead of queen budur. whereupon said they all, \"since he is the husband of queen budur, who hath been our king till now, whilst we deemed her son-in-law to king armanus, we are all content to have him to sultan over us; and we will be his servants, nor will we swerve from his allegiance.\" so armanus rejoiced hereat and, summoning kazis and witnesses and the chief officers of state, bade draw up the contract of marriage between kamar al-zaman and his daughter, the princess hayat al-nufus. then he held high festival, giving sumptuous marriage-feasts and bestowing costly dresses of honour upon all the emirs and captains of the host; moreover he distributed alms to the poor and needy and set free all the prisoners. the whole world rejoiced in the coming of kamar al-zaman to the throne, blessing him and wishing him endurance of glory and prosperity, renown and felicity; and, as soon as he became king, he remitted the customs-dues and released all men who remained in gaol. thus he abode a long while, ordering himself worthily towards his lieges; and he lived with his two wives in peace, happiness, constancy and content, lying the night with each of them in turn. he ceased not after this fashion during many years, for indeed all his troubles and afflictions were blotted out from him and he forgot his father king shahriman and his former estate of honour and favour with him. after a while almighty allah blessed him with two boy children, as they were two shining moons, through his two wives; the elder whose name was prince amjad, by queen budur, and the younger whose name was prince as\\'ad by queen hayat al-nufus; and this one was comelier than his brother. they were reared in splendour and tender affection, in respectful bearing and in the perfection of training; and they were instructed in penmanship and science and the arts of government and horsemanship, till they attained the extreme accomplishments and the utmost limit of beauty and loveliness; both men and women being ravished by their charms. they grew up side by side till they reached the age of seventeen, eating and drinking together and sleeping in one bed, nor ever parting at any time or tide; wherefore all the people envied them. now when they came to man\\'s estate and were endowed with every perfection, their father was wont, as often as he went on a journey, to make them sit in his stead by turns in the hall of judgement; and each did justice among the folk one day at a time. but it came to pass, by confirmed fate and determined lot, that love for as\\'ad (son of queen hayat al-nufus) rose in the heart of queen budur, and that affection for amjad (son of queen budur) rose in the heart of queen hayat al-nufus. hence it was that each of the women used to sport and play with the son of her sister-wife, kissing him and straining him to her bosom, whilst each mother thought that the other\\'s behaviour arose but from maternal affection. on this wise passion got the mastery of the two women\\'s hearts and they became madly in love with the two youths, so that when the other\\'s son came in to either of them, she would press him to her breast and long for him never to be parted from her; till, at last, when waiting grew longsome to them and they found no path to enjoyment, they refused meat and drink and banished the solace of sleep. presently, the king fared forth to course and chase, bidding his two sons sit to do justice in his stead, each one day in turn as was their wont.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the two hundred and eighteenth night,',\n", + " 'she said, it hath reached me, o auspicious king, that the king fared forth to sport and hunt, bidding his two sons sit to do justice in his stead, each one day by turn, as was their wont. now prince amjad sat in judgement the first day, bidding and forbidding, appointing and deposing, giving and refusing; and queen hayat al-nufus, mother of as\\'ad, wrote to him a letter suing for his favour and discovering to him her passion and devotion; altogether put tiny off the mask and giving him to know that she desired to enjoy him. so she took a scroll and thereon indited these cadences, \"from the love deranged * the sorrowful and estranged * whose torment is prolonged for the longing of thee! * were i to recount to thee the extent of my care * and what of sadness i bear * the passion which my heart cloth tear * and all that i endure for weeping and unrest * and the rending of my sorrowful breast * my unremitting grief * and my woe without relief * and all my suffering for severance of thee * and sadness and love\\'s ardency * no letter could contain it; nor calculation could compass it * indeed earth and heaven upon me are strait; and i have no hope and no trust but what from thee i await * upon death i am come nigh * and the horrors of dissolution i aby * burning upon me is sore * with parting pangs and estrangement galore * were i to set forth the yearnings that possess me more and more * no scrolls would suffice to hold such store * and of the excess of my pain and pine, i have made the following lines:- -',\n", + " 'were i to dwell on heart-consuming heat, *',\n", + " 'unease and transports in my spins meet,',\n", + " 'nothing were left of ink and reeden pen *',\n", + " \"nor aught of paper; no, not e'en a sheet.\",\n", + " 'then queen hayat al-nufus wrapped up her letter in a niece of costly silk scented with musk and ambergris; and folded it up with her silken hair-strings whose cost swallowed down treasures laid it in a handkerchief and gave it to a eunuch bidding him bear it to prince amjad.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and nineteenth night,',\n", + " 'she said, it hath reached me, o auspicious king, that she gave her missive to the eunuch in waiting and bade him bear it to prince amjad. and that eunuch went forth ignoring what the future hid for him (for the omniscient ordereth events even as he willeth); and, going in to the prince, kissed the ground between his hands and handed to him the letter. on receiving the kerchief he opened it and, reading the epistle and recognizing its gist he was ware that his father\\'s wife was essentially an adulteress and a traitress at heart to her husband, king kamar al-zaman. so he waxed wroth with exceeding wrath and railed at women and their works, saying, \"allah curse women, the traitresses, the imperfect in reason and religion!\" then he drew his sword and said to the eunuch, \"out on thee, thou wicked slave! dost thou carry messages of disloyalty for thy lord\\'s wife? by allah, there is no good in thee, o black of hue and heart, o foul of face and nature\\'s forming!\" so he smote him on the neck and severed his head from his body; then, folding the kerchief over its contents he thrust it into his breast pocket and went in to his own mother and told her what had passed, reviling and reproaching her, and saying, \"each one of you is viler than the other; and, by allah the great and glorious, did i not fear ill-manneredly to transgress against the rights of my father, kamar al-zaman, and my brother, prince as\\'ad, i would assuredly go in to her and cut off her head, even as i cut off that of her eunuch!\" then he went forth from his mother in a mighty rage; and when the news reached queen hayat al-nufus of what he had done with her eunuch, she abused him and cursed him and plotted perfidy against him. he passed the night, sick with rage, wrath and concern; nor found he pleasure in meat, drink or sleep. and when the next morning dawned prince as\\'ad fared forth in his turn to rule the folk in his father\\'s stead, whilst his mother, hayat al-nufus, awoke in feeble plight because of what she had heard from prince amjad concerning the slaughter of her eunuch. so prince as\\'ad sat in the audience-chamber that day, judging and administering justice, appointing and deposing, bidding and forbidding, giving and bestowing. and he ceased not thus till near the time of afternoon-prayer, when queen budur sent for a crafty old woman and, discovering to her what was in her heart, wrote a letter to prince as\\'ad, complaining of the excess of her affection and desire for him in these cadenced lines, \"from her who perisheth for passion and love-forlorn * to him who in nature and culture is goodliest born * to him who is conceited of his own loveliness * and glories in his amorous grace * who from those that seek to enjoy him averteth his face * and refuseth to show favour unto the self abasing and base * him who is cruel and of disdainful mood * from the lover despairing of good * to prince as\\'ad * with passing beauty endowed * and of excelling grace proud * of the face moon bright * and the brow flower-white * and dazzling splendid light * this is my letter to him whose love melteth my body * and rendeth my skin and bones! * know that my patience faileth me quite * and i am perplexed in my plight * longing and restlessness weary me * and sleep and patience deny themselves to me * but mourning and watching stick fast to me * and desire and passion torment me * and the extremes of languor and sickness have sheet me * yet may my life be a ransom for thee * albeit thy pleasure be to slay her who loveth thee * and allah prolong the life of thee * and preserve thee from all infirmity!\" and after these cadences she wrote these couplets,',\n", + " '\"fate hath commanded i become thy fere, *',\n", + " 'o shining like full moon when clearest clear!',\n", + " 'all beauty dost embrace, all eloquence; *',\n", + " 'brighter than aught within our worldly sphere:',\n", + " 'content am i my torturer thou be: *',\n", + " 'haply shalt alms me with one lovely leer!',\n", + " 'happy her death who dieth for thy love! *',\n", + " 'no good in her who holdeth thee unclear!\"',\n", + " 'and also the following couplets,',\n", + " '\"unto thee, as\\'ad! i of passion-pangs complain; *',\n", + " 'have ruth on slave of love so burnt with flaming pain:',\n", + " 'how long, i ask, shall hands of love disport with me, *',\n", + " 'with longings, dolour, sleepliness and bale and bane?',\n", + " \"anon i 'plain of sea in heart, anon of fire *\",\n", + " 'in vitals, o strange case, dear wish, my fairest fain!',\n", + " 'o blamer, cease thy blame, and seek thyself to fly *',\n", + " 'from love, which makes these eyne a rill of tears to rain.',\n", + " 'how oft i cry for absence and desire, ah grief! *',\n", + " 'but all my crying naught of gain for me shall gain:',\n", + " 'thy rigours dealt me sickness passing power to bear, *',\n", + " 'thou art my only leach, assain me an thou deign!',\n", + " 'o chider, chide me not in caution, for i doubt *',\n", + " 'that plaguey love to thee shall also deal a bout.\"',\n", + " 'then queen budur perfumed the letter-paper with a profusion of odoriferous musk and, winding it in her hairstrings which were of iraki silk, with pendants of oblong emeralds, set with pearls and stones of price, delivered it to the old woman, bidding her carry it to prince as\\'ad. she did so in order to pleasure her, and going in to the prince, straightway and without stay, found him in his own rooms and delivered to him the letter in privacy; after which she stood waiting an hour or so for the answer. when as\\'ad had read the paper and knew its purport, he wrapped it up again in the ribbons and put it in his bosom-pocket: then (for he was wrath beyond all measure of wrath) he cursed false women and sprang up and drawing his sword, smote the old trot on the neck and cut off her pate. thereupon he went in to his mother, queen hayat al-nufus, whom he found lying on her bed in feeble case, for that which had betided her with prince amjad, and railed at her and cursed her; after which he left her and fore-gathered with his brother, to whom he related all that had befallen him with queen budur, adding, \"by allah, o my brother, but that i was ashamed before thee, i had gone in to her forthright and had smitten her head off her shoulders!\" replied prince amjad, \"by allah, o my brother, yesterday when i was sitting upon the seat of judgement, the like of what hath befallen thee this day befel me also with thy mother who sent me a letter of similar purport.\" and he told him all that had passed, adding, \"by allah, o my brother, naught but respect for thee withheld me from going in to her and dealing with her even as i dealt with the eunuch!\" they passed the rest of the night conversing and cursing womankind, and agreed to keep the matter secret, lest their father should hear of it and kill the two women. yet they ceased not to suffer trouble and foresee affliction. and when the morrow dawned, the king returned with his suite from hunting and sat awhile in his chair of estate; after which he sent the emirs about their business and went up to his palace, where he found his two wives lying a-bed and both exceeding sick and weak. now they had made a plot against their two sons and concerted to do away their lives, for that they had exposed themselves before them and feared to be at their mercy and dependent upon their forbearance. when kamar al-zaman saw them on this wise, he said to them, \"what aileth you?\" whereupon they rose to him and kissing his hands answered, perverting the case and saying \"know, o king, that thy two sons, who have been reared in thy bounty, have played thee false and have dishonoured thee in the persons of thy wives.\" now when he heard this, the light became darkness in his sight, and he raged with such wrath that his reason fled: then said he to them, \"explain me this matter.\" replied queen budur, \"o king of the age, know that these many days past thy son as\\'ad hath been in the persistent habit of sending me letters and messages to solicit me to lewdness and adultery while i still forbade him from this, but he would not be forbidden; and, when thou wentest forth to hunt, he rushed in on me, drunk and with a drawn sword in his hand, and smiting my eunuch, slew him. then he mounted on my breast, still holding the sword, and i feared lest he should slay me, if i gainsaid him, even as he had slain my eunuch; so he took his wicked will of me by force. and now if thou do me not justice on him, o king, i will slay myself with my own hand, for i have no need of life in the world after this foul deed.\" and queen hayat al-nufus, choking with tears, told him respecting prince amjad a story like that of her sister-wife.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the two hundred and twentieth night,',\n", + " 'she said, it hath reached me, o auspicious king, that queen hayat al-nufus told her husband, king kamar al-zaman, a story like that of her sister in wedlock, budur, and, quoth she, \"the same thing befel me with thy son amjad;\" after which she took to weeping and wailing and said, \"except thou do me justice on him i will tell my father, king armanus.\" then both women wept with sore weeping before king kamar al-zaman who, when he saw their tears and heard their words, concluded that their story was true and, waxing wroth beyond measure of wrath, went forth thinking to fall upon his two sons and put them to death. on his way he met his father- in-law, king armanus who, hearing of his return from the chase, had come to salute him at that very hour and, seeing him with naked brand in hand and blood dripping from his nostrils, for excess of rage, asked what ailed him. so kamar al-zaman told him all that his sons amjad and as\\'ad had done and added, \"and here i am now going in to them to slay them in the foulest way and make of them the most shameful of examples.\" quoth king armanus (and indeed he too was wroth with them), \"thou dost well, o my son, and may allah not bless them nor any sons that do such deed against their father\\'s honour. but, o my son, the sayer of the old saw saith, \\'whoso looketh not to the end hath not fortune to friend.\\' in any case, they are thy sons, and it befitteth not that thou kill them with shine own hand, lest thou drink of their death-agony, and anon repent of having slain them whenas repentance availeth thee naught. rather do thou send them with one of thy mamelukes into the desert and let him kill them there out of thy sight, for, as saith the adage, \\'out of sight of my friend is better and pleasanter.\\' and when kamar al-zaman heard his father-in-law\\'s words, he knew them to be just; so he sheathed his sword and turning back, sat down upon the throne of his realm. there he summoned his treasurer, a very old man, versed in affairs and in fortune\\'s vicissitudes, to whom he said, \"go in to my sons, amjad and as\\'ad; bind their hands behind them with strong bonds, lay them in two chests and load them upon a mule. then take horse thou and carry them into mid desert, where do thou kill them both and fill two vials with their blood and bring the same to me in haste.\" replied the treasurer, \"i hear and i obey,\" and he rose up hurriedly and went out forthright to seek the princes; and, on his road, he met them coming out of the palace-vestibule, for they had donned their best clothes and their richest; and they were on their way to salute their sire and give him joy of his safe return from his going forth to hunt. now when he saw them, he laid hands on them, saying, \"omy sons, know ye that i am but a slave commanded, and that your father hath laid a commandment on me; will ye obey his commandment?\" they said, \"yes\"; whereupon he went up to them and, after pinioning their arms, laid them in the chests which he loaded on the back of a mule he had taken from the city. and he ceased not carrying them into the open country till near noon, when he halted in a waste and desolate place and, dismounting from his mare, let down the two chests from the mule\\'s back. then he opened them and took out amjad and as\\'ad; and when he looked upon them he wept sore for their beauty and loveliness; then drawing his sword he said to them, \"by allah, o my lords, indeed it is hard for me to deal so evilly by you; but i am to be excused in this matter, being but a slave commanded, for that your father king kamar al-zaman hath bidden me strike off your heads.\" they replied, \"o emir, do the king\\'s bidding, for we bear with patience that which allah (to whom be honour, might and glory!) hath decreed to us; and thou art quit of our blood.\" then they embraced and bade each other farewell, and as\\'ad said to the treasurer, \"allah upon thee, o uncle, spare me the sight of my brother\\'s death-agony and make me not drink of his anguish, but kill me first, for that were the easier for me.\" and amjad said the like and entreated the treasurer to kill him before as\\'ad, saying, \"my brother is younger than i; so make me not taste of his anguish. and they both wept bitter tears whilst the treasurer wept for their weeping;—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and twenty-first night,',\n", + " 'she said, it hath reached me, o auspicious king, that the treasurer wept for their weeping; then the two brothers embraced and bade farewell and one said to the other, \"all this cometh of the malice of those traitresses, my mother and thy mother; and this is the reward of my forbearance towards thy mother and of thy for bearance towards my mother! but there is no might and there is no majesty save in allah, the glorious, the great! verily, we are allah\\'s and unto him we are returning.\" and as\\'ad em braced his brother, sobbing and repeating these couplets,',\n", + " '\"o thou to whom sad trembling wights in fear complain! *',\n", + " 'o ever ready whatso cometh to sustain!',\n", + " 'the sole resource for me is at thy door to knock, *',\n", + " 'at whose door knock an thou to open wilt not deign?',\n", + " 'o thou whose grace is treasured in the one word, be! *',\n", + " 'favour me, i beseech, in thee all weals contain.\"',\n", + " \"now when amjad heard his brother's weeping he wept also and pressing him to his bosom repeated these two couplets,\",\n", + " '\"o thou whose boons to me are more than one! *',\n", + " 'whose gifts and favours have nor count nor bound!',\n", + " \"no stroke of all fate's strokes e'er fell on me, *\",\n", + " 'but thee to take me by the hand i found.\"',\n", + " 'then said amjad to the treasurer, \"i conjure thee by the one, omnipotent, the lord of mercy, the beneficent! slay me before my brother as\\'ad, so haply shall the fire be quencht in my heart\\'s core and in this life burn no more.\" but as\\'ad wept and exclaimed, \"not so: i will die first;\" whereupon quoth amjad, \"it were best that i embrace thee and thou embrace me, so the sword may fall upon us and slay us both at a single stroke.\" thereupon they embraced, face to face and clung to each other straitly, whilst the treasurer tied up the twain and bound them fast with cords, weeping the while. then he drew his blade and said to them, \"by allah, o my lords, it is indeed hard to me to slay you! but have ye no last wishes that i may fulfil or charges which i may carry out, or message which i may deliver?\" replied amjad, \"we have no wish; and my only charge to thee is that thou set my brother below and me above him, that the blow may fall on me first, and when thou hast killed us and returnest to the king and he asketh thee, \\'what heardest thou from them before their death?\\'; do thou answer, \\'verily thy sons salute thee and say to thee, thou knewest not if we were innocent or guilty, yet hast thou put us to death and hast not certified thyself of our sin nor looked into our case.\\' then do thou repeat to him these two couplets,',\n", + " \"'women are satans made for woe o' men; *\",\n", + " 'i fly to allah from their devilish scathe:',\n", + " 'source of whatever bale befel our kind, *',\n", + " 'in wordly matters and in things of faith.\\'\"',\n", + " 'continued amjad, \"we desire of thee naught but that thou repeat to our sire these two couplets.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was ad the two hundred and twenty-second night,',\n", + " 'she said, it hath reached me, o auspicious king, that amjad added, speaking to the treasurer, \"we desire of thee naught but that thou repeat to our sire these two couplets which thou hast just now heard; and i conjure thee by allah to have patience with us, whilst i cite to my brother this other pair of couplets.\" then he wept with sore weeping and began,',\n", + " '\"the kings who fared before us showed *',\n", + " 'of instances full many a show:',\n", + " 'of great and small and high and low *',\n", + " 'how many this one road have trod!\"',\n", + " \"now when the treasurer heard these words from amjad, he wept till his beard was wet, whilst as'ad's eyes brimmed with tears and he in turn repeated these couplets,\",\n", + " '\"fate frights us when the thing is past and gone; *',\n", + " 'weeping is not for form or face alone:',\n", + " 'what ails the nights? allah blot out our sin, *',\n", + " 'and be the nights by other hand undone!',\n", + " 'ere this zubayr-son felt their spiteful hate, *',\n", + " 'who fled for refuge to the house and stone:',\n", + " 'would that when khárijah was for amru slain *',\n", + " 'they had ransomed ali with all men they own.\"',\n", + " 'then, with cheeks stained by tears down railing he recited also these verses,',\n", + " '\"in sooth the nights and days are charactered *',\n", + " 'by traitor falsehood and as knaves they lie;',\n", + " 'the desert-reek recalls their teeth that shine; *',\n", + " 'all horrid blackness is their k of eye:',\n", + " 'my sin anent the world which i abhor *',\n", + " 'is sin of sword when sworders fighting hie.\"',\n", + " 'then his sobs waxed louder and he said,',\n", + " '\"o thou who woo\\'st a world unworthy, learn *',\n", + " \"'tis house of evils, 'tis perdition's net:\",\n", + " 'a house where whoso laughs this day shall weep *',\n", + " 'the next: then perish house of fume and fret!',\n", + " 'endless its frays and forays, and its thralls *',\n", + " \"are ne'er redeemed, while endless risks beset.\",\n", + " 'how many gloried in its pomps and pride, *',\n", + " 'till proud and pompous did all bounds forget,',\n", + " 'then showing back of shield she made them swill *',\n", + " 'full draught, and claimed all her vengeance debt.',\n", + " \"for know her strokes fall swift and sure, altho' *\",\n", + " 'long bide she and forslow the course of fate:',\n", + " 'so look thou to thy days lest life go by *',\n", + " 'idly, and meet thou more than thou hast met;',\n", + " 'and cut all chains of world-love and desire *',\n", + " 'and save thy soul and rise to secrets higher.\"',\n", + " \"now when as'ad made an end of these verses, he strained his brother amjad in his arms, till they twain were one body, and the treasurer, drawing his sword, was about to strike them, when behold, his steed took fright at the wind of his upraised hand, and breaking its tether, fled into the desert. now the horse had cost a thousand gold pieces and on its back was a splendid saddle worth much money; so the treasurer threw down his sword, and ran after his beast.—and shahrazad perceived the dawn of day and ceased saying her permitted say.\",\n", + " 'when it was the two hundred and twenty-third night,',\n", + " 'she said, it hath reached me, o auspicious king, that when his horse ran away, the treasurer ran after it in huge concern, and ceased not running to catch the runaway till it entered a thicket. he followed it whilst it dashed through the wood, smiting the earth with its hoofs till it raised a dust-cloud which towered high in air; and snorting and puffing and neighing and waxing fierce and furious. now there happened to be in this thicket a lion of terrible might; hideous to sight, with eyes sparkling light: his look was grim and his aspect struck fright into man\\'s sprite. presentry the treasurer turned and saw the lion making towards him; but found no way of escape nor had he his sword with him. so he said in himself, \"there is no majesty and there is no might save in allah, the glorious, the great! this strait is come upon me for no other cause but because of amjad and as\\'ad; and indeed this journey was unblest from the first!\" meanwhile the two princes were grievously oppressed by the heat and grew sore athirst, so that their tongues hung out and they cried for succour, but none came to their relief and they said, \"would to heaven we had been slain and were at peace from this pain! but we know not whither the horse hath fled, that the treasurer is gone and hath left us thus pinioned. if he would but come back and do us die, it were easier to us than this torture to aby.\" said as\\'ad, \"o my brother, be patient, and the relief of allah (extolled and exalted be he!) shall assuredly come to us; for the horse started not away save of his favour towards us, and naught irketh us but this thirst.\" upon this he stretched and shook himself and strained right and left, till he burst his pinion-bonds; then he rose and unbound his brother and catching up the emir\\'s sword, said, \"by allah, we will not go hence, till we look after him and learn what is become of him.\" then they took to following on the trail till it led them to the thicket and they said to each other, \"of a surety, the horse and the treasurer have not passed out of this wood.\" quoth as\\'ad, \"stay thou here, whilst i enter the thicket and search it;\" and amjad replied, \"i will not let thee go in alone: nor will we enter it but together; so if we escape, we shall escape together and if we perish, we shall perish together.\" accordingly both entered and found that the lion had sprang upon the treasurer, who lay like a sparrow in his grip, calling upon allah for aid and signing with his hands to heaven. now when amjad saw this, he took the sword and, rushing upon the lion, smote him between the eyes and laid him dead on the ground. the emir sprang up, marvelling at this escape and seeing amjad and as\\'ad, his master\\'s sons, standing there, cast himself at their feet and exclaimed, \"by allah, o my lords, it were intolerable wrong in me to do you to death. may the man never be who would kill you! indeed, with my very life, i will ransom you.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", + " 'when it was the two hundred and twenty-fourth night,',\n", + " 'she said, it hath reached me, o auspicious king, that quoth the treasurer to amjad and as\\'ad, \"with my life will i ransom you both!\" then he hastily rose and, at once embracing them, enquired how they had loosed their bonds and come thither; whereupon they told him how the bonds of one of them had fallen loose and he had unbound the other, whereto they were helped by the purity of their intentions, and how they had tracked his trail till they came upon him. so he thanked them for their deed and went with them forth of the thicket; and, when they were in the open country, they said to him, \"o uncle, do our father\\'s bidding.\" he replied, \"allah forbid that i should draw near to you with hurt! but know ye that i mean to take your clothes and clothe you with mine; then will i fill two vials with the lion\\'s blood and go back to the king and tell him i have out vou to death. but as for you two, fare ye forth into the lands, for allah\\'s earth is wide; and know, o my lords, that it paineth me to part from you.\" at this, they all fell a-weeping; then the two youths put off their clothes and the treasurer habited them with his own. moreover he made two parcels of their dress and, filling two vials with the lion\\'s blood, set the parcels before him on his horse\\'s back. presently he took leave of them and, making his way to the city, ceased not faring till he went in to king kamar al-zaman and kissed the ground between his hands. the king saw him changed in face and troubled (which arose from his adventure with the lion) and, deeming this came of the slaughter of his two sons, rejoiced and said to him, \"hast thou done the work?\" \"yes, o our lord,\" replied the treasurer and gave him the two parcels of clothes and the two vials full of blood. asked the king, \"what didst thou observe in them; and did they give thee any charge?\" answered the treasurer, \"i found them patient and resigned to what came down upon them and they said to me, \\'verily, our father is excusable; bear him our salutation and say to him, \\'thou art quit of our killing. but we charge thee repeat to him these couplets,',\n", + " \"'verily women are devils created for us. we seek refuge with god from the artifice of the devils. they are the source of all the misfortunes that have appeared among mankind in the affairs of the world and of religion.'''\",\n", + " \"when the king heard these words of the treasurer, he bowed his head earthwards, a long while and knew his sons' words to mean that they had been wrongfully put to death. then he bethought himself of the perfidy of women and the calamities brought about by them; and he took the two parcels and opened them and fell to turning over his sons' clothes and weeping,—and shahrazed perceived the dawn of day and ceased saying her permitted say.\",\n", + " 'when it was the two hundred and twenty-fifth night,',\n", + " 'she said, it hath reached me, o auspicious king, that when king kamar la-zaman opened the two bundles and fell to turning over his sons\\' clothes and weeping, it so came to pass that he found, in the pocket of his son as\\'ad\\'s raiment, a letter in the hand of his wife enclosing her hair strings; so he opened and read it and understanding the contents knew that the prince had been falsely accused and wrongously. then he searched amjad\\'s parcel of dress and found in his pocket a letter in the handwriting of queen hayat al-nufus enclosing also her hair-strings; so he opened and read it and knew that amjad too had been wronged; whereupon he beat hand upon hand and exclaimed, \"there is no majesty and there is no might save in allah, the glorious, the great! i have slain my sons unjustly.\" and he buffeted his face, crying out, \"alas, my sons! alas, my long grief!\" then he bade them build two tombs in one house, which he styled \"house of lamentations,\" and had graved thereon his sons\\' names; and he threw himself on amjad\\'s tomb, weeping and groaning and lamenting, and improvised these couplets,',\n", + " '\"o moon for ever set this earth below, *',\n", + " 'whose loss bewail the stars which stud the sky!',\n", + " \"o wand, which broken, ne'er with bend and wave *\",\n", + " \"shall fascinate the ravisht gazer's eye;\",\n", + " \"these eyne for jealousy i 'reft of thee, *\",\n", + " 'nor shall they till next life thy sight descry:',\n", + " \"i'm drowned in sea of tears for insomny *\",\n", + " 'wherefore, indeed in sáhirah-stead i lie.\"',\n", + " \"then he threw himself on as'ad's tomb, groaning and weeping and lamenting and versifying with these couplets,\",\n", + " '\"indeed i longed to share unweal with thee, *',\n", + " 'but allah than my will willed otherwise:',\n", + " \"my grief all blackens 'twixt mine eyes and space, *\",\n", + " 'yet whitens all the blackness from mine eyes:',\n", + " 'of tears they weep these eyne run never dry, *',\n", + " 'and ulcerous flow in vitals never dries:',\n", + " 'right sore it irks me seeing thee in stead *',\n", + " 'where slave with sovran for once levelled lies.\"',\n", + " \"and his weeping and wailing redoubled; and, after he had ended his lamentations and his verse, he forsook his friends and intimates, and denying himself to his women and his family, cut himself off from the world in the house of lamentations, where he passed his time in weeping for his sons. such was his case; but as regards amjad and as'ad they fared on into the desert eating of the fruits of the earth and drinking of the remnants of the rain for a full month, till their travel brought them to a mountain of black flint whose further end was unknown; and here the road forked, one line lying along the midway height and the other leading to its head. they took the way trending to the top and gave not over following it five days, but saw no end to it and were overcome with weariness, being unused to walking upon the mountains or elsewhere. at last, despairing of coming to the last of the road, they retraced their steps and, taking the other, that led over the midway heights,—and shahrazad perceived the dawn of day and ceased to say her permitted say.\",\n", + " 'when it was the two hundred and twenty-sixth night,',\n", + " 'she said, it hath reached me, o auspicious king, that princes amjad and as\\'ad returned from the path leading to the mountain- head and took that which ran along the midway heights, and walked through all that day till nightfall, when as\\'ad, weary with much travel, said to amjad, \"o my brother, i can walk no farther, for i am exceeding weak.\" replied amjad, \"o my brother, take courage! may be allah will send us relief.\" so they walked on part of the night, till the darkness closed in upon them, when as\\'ad became weary beyond measure of weariness and cried out, \"o my brother, i am worn out and spent with walking,\" and threw himself upon the ground and wept. amjad took him in his arms and walked on with him, bytimes sitting down to rest till break of day, when they came to the mountain-top and found there a stream of running water and by it a pomegranate-tree and a prayer-niche. they could hardly believe their eyes when they saw it; but, sitting down by that spring, drank of its water and ate of the fruit of that granado-tree; after which they lay on the ground and slept till sunrise, when they washed and bathed in the spring and, eating of the pomegranates, slept again till the time of mid-afternoon prayer. then they thought to continue their journey, but as\\'ad could not walk, for both his feet were swollen. so they abode there three days till they were rested, after which they set out again and fared on over the mountain days and nights, tortured by and like to die of thirst, till they sighted a city gleaming afar off, at which they rejoiced and made towards it. when they drew near it, they thanked allah (be his name exalted!) and amjad said to as\\'ad, \"o my brother, sit here, whilst i go to yonder city and see what it is and whose it is and where we are in allah\\'s wide world, that we may know through what lands we have passed in crossing this mountain, whose skirts had we followed, we had not reached this city in a whole year. so praised be allah for safety!\" replied as\\'ad, \"by allah, o my brother, none shall go down into that city save myself, and may i be thy ransom! if thou leave me alone, be it only for an hour, i shall imagine a thousand things and be drowned in a torrent of anxiety on shine account, for i cannot brook shine absence from me.\" amjad rejoined, \"go then and tarry not. so as\\'ad took some gold pieces, and leaving his brother to await him, descended the mountain and ceased not faring on till he entered the city. as he threaded the streets he was met by an old man age-decrepit, whose beard flowed down upon his breast and forked in twain; he bore a walking-staff in his hand and was richly clad, with a great red turband on his head. when as\\'ad saw him, he wondered at his dress and his mien; nevertheless, he went up to him and saluting him said, \"where be the way to the market, o my master?\" hearing these words the shaykh smiled in his face and replied, \"o my son, meseemeth thou art a stranger?\" as\\'ad rejoined, \"yes, i am a stranger.\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", + " 'when it was the two hundred and twenty-seventh night,',\n", + " 'she said, it hath reached me, o auspicious king, that the shaykh who met as\\'ad smiled in his face and said to him, \"o my son, meseemeth thou art a stranger?\" and as\\'ad replied, \"yes, i am a stranger.\" then rejoined the old man, \"verily, thou gladdenest our country with thy presence, o my son, and thou desolatest shine own land by reason of shine absence. what wantest thou of the market?\" quoth as\\'ad, \"o uncle, i have a brother, with whom i have come from a far land and with whom i have journeyed these three months; and, when we sighted this city, i left him, who is my elder brother, upon the mountain and came hither, purposing to buy victual and what else, and return therewith to him, that we might feed thereon.\" said the old man, \"rejoice in all good, o my son, and know thou that to-day i give a marriage-feast, to which i have bidden many guests, and i have made ready plenty of meats, the best and most delicious that heart can desire. so if thou wilt come with me to my place, i will give thee freely all thou lackest without asking thee a price or aught else. moreover i will teach thee the ways of this city; and, praised be allah, o my son, that i, and none other have happened upon thee.\" \"as thou wilt,\" answered as\\'ad, \"do as thou art disposed, but make haste, for indeed my brother awaiteth me and his whole heart is with me.\" the old man took as\\'ad by the hand and carried him to a narrow lane, smiling in his face and saying, \"glory be to him who hath delivered thee from the people of this city!\" and he ceased not walking till he entered a spacious house, wherein was a saloon and behold, in the middle of it were forty old men, well stricken in years, collected together and forming a single ring as they sat round about a lighted fire, to which they were doing worship and prostrating themselves. when as\\'ad saw this, he was confounded and the hair of his body stood on end though he knew not what they were; and the shaykh said to them, \"o elders of the fire, how blessed is this day!\" then he called aloud, saying, \"hello, ghazbán!\" whereupon there came out to him a tall black slave of frightful aspect, grim-visaged and flat nosed as an ape who, when the old man made a sign to him, bent as\\'ad\\'s arms behind his back and pinioned them; after which the shaykh said to him, \"let him down into the vault under the earth and there leave him and say to my slave girl such-an-one, \\'torture him night and day and give him a cake of bread to eat morning and evening against the time come of the voyage to the blue sea and the mountain of fire, whereon we will slaughter him as a sacrifice.\\'\" so the black carried him out at another door and, raising a flag in the floor, discovered a flight of twenty steps leading to a chamber under the earth, into which he descended with him and, laying his feet in irons, gave him over to the slave girl and went away. meanwhile, the old men said to one another, \"when the day of the festival of the fire cometh, we will sacrifice him on the mountain, as a propitiatory offering whereby we shall pleasure the fire.\" presently the damsel went down to him and beat him a grievous beating, till streams of blood flowed from his sides and he fainted; after which she set at his head a scone of bread and a cruse of brackish water and went away and left him. in the middle of the night, he revived and found himself bound and beaten and sore with beating: so he wept bitter tears; and recalling his former condition of honour and prosperity, lordship and dominion, and his separation from his sire and his exile from his native land.—and shahrazad perceived the dawn of day and ceased to say her permitted say,',\n", + " 'when it was the two hundred and twenty-eighth night,',\n", + " \"she said, it hath reached me, o auspicious king, that when as'ad found himself bound and beaten and sore with beating he recalled his whilome condition of honour and prosperity and dominion and lordship, and he wept and groaned aloud and recited these couplets,\",\n", + " '\"stand by the ruined stead and ask of us; *',\n", + " ...]},\n", + " 'data': ['lyrics ente hayaty:',\n", + " 'falei contigo eu assumo',\n", + " 'tu foste embora eu entendo',\n", + " 'mas ficou tanto amor',\n", + " 'estou meio sem planos',\n", + " 'zaalane afla lbab ,',\n", + " 'ayza kam gawab wallahi ana albi tab y’a habibi',\n", + " 'mmmmm ma baby yea, ma baby yea ... ya habibi',\n", + " 'lessa fakrani',\n", + " 'walla nasyani',\n", + " 'please tell me now zaalane zaalane zaalane leih',\n", + " 'onde tu estás',\n", + " 'preciso de ouvir',\n", + " 'para onde tu fores',\n", + " 'yalé yalé yalé lé bô',\n", + " 'estou com receio que me falem que tens outro',\n", + " 'tu sabes que não vou aguentar se souber que mais alguém se colou a ti',\n", + " 'ana bahsed eloyoon elle tchoufek kolle yum khalas da maluch lozom',\n", + " 'you made me feel like home',\n", + " 'halaîh bokra halaîh welaw hatta nazra f eineeh ah f eineeh yaaa leili',\n", + " 'todos falam de ti',\n", + " 'de como foi um bobo',\n", + " 'que te perdi por tão pouco',\n", + " 'wêlê wêlê',\n", + " 'you make me wanna wele wele wel',\n", + " 'lessa fakrani',\n", + " 'walla nasyani',\n", + " 'please tell me now zaalane zaalane zaalane leih',\n", + " 'onde tu estás',\n", + " 'preciso de ouvir',\n", + " 'para onde tu fores',\n", + " 'nga lêlê, nga lêlê, nga lêlê bô',\n", + " 'fidju fêmea',\n", + " 'si un ca odjau aoz',\n", + " 'dadan cuma cum podi oiau',\n", + " 'sodade na matam na matam demas',\n", + " 'ahh arguk esmaini please',\n", + " 'i know you felt the pain',\n", + " 'i’ll take it all away',\n", + " 'if you give me a chance yea',\n", + " 'hote eidek fe edaya danty heya donya',\n", + " 'you make wanna wele wele wele',\n", + " 'é tão chato ouvir',\n", + " 'de como fui um bobo',\n", + " 'que te perdi por tão pouco',\n", + " 'wêlê wêlê wê',\n", + " 'lessa fakrani',\n", + " 'walla nasyani',\n", + " 'please tell me now zaalane zaalane zaalane leih',\n", + " 'onde tu estás',\n", + " 'preciso de ouvir',\n", + " 'i need you here',\n", + " 'you’re all i think of ya leili ya leili ...',\n", + " 'enty hayate',\n", + " 'enty hayate',\n", + " 'ohh akli w rohi fik akli w rohi fik',\n", + " 'enty hayate',\n", + " 'enty hayate',\n", + " 'ohh akli w rohi fik akli w rohi fik',\n", + " 'zaalane zaalane zaalane leih',\n", + " 'enty hayate',\n", + " 'enty hayate',\n", + " 'ohh akli w rohi fik akli w rohi fik',\n", + " 'enty hayate',\n", + " 'enty hayate',\n", + " 'ohh akli w rohi fik akli w rohi fik',\n", + " 'are you ready for this?',\n", + " 'c ‘ mon!!',\n", + " 'nazo meku michi no koudo',\n", + " 'tokiakashi tai shoudo',\n", + " 'zawatsuku d . n . a',\n", + " 'sukuou toshite mo (i won‘t give up )',\n", + " 'kimi wa invisible (shady)',\n", + " 'tegakari wa fumei',\n", + " 'yokan wa zutto shite ita nda',\n", + " 'kizuka nai furi mou deki sou ni nai',\n", + " 'azawarau youni hajimatta kauntodaun',\n", + " 'boku nara daijoubu saa',\n", + " 'ikinuke',\n", + " 'all my honnou yo mezameyo',\n", + " 'shinobiyoru yami ni (to the virus ) bye bye',\n", + " 'one shot keshi satte miseru',\n", + " 'kimi to nara succeed (to the virus )',\n", + " 'mugen no suteeji wo',\n", + " 'kakeagaru eikyou ( towa ) no ro',\n", + " 'owari naki gemu',\n", + " 'kimi wa dou na no? (i won‘t give up )',\n", + " 'igan de iku nazo (shady )',\n", + " 'demo idomu shika nai',\n", + " 'semarikuru ashioto mou nigerare nai',\n", + " 'tadayou crimson moon',\n", + " 'tachimukau junbi nara dekiteru',\n", + " 'iki wo koroshi kimi wo ubau yo',\n", + " 'all my honnou yo mezameyo',\n", + " 'shinobiyoru yami ni (to the virus) bye bye',\n", + " 'one shot keshi satte miseru',\n", + " 'kimi to nara succeed (to the virus)',\n", + " 'oh girl …',\n", + " 'dore dake negaitsuzuke te ita darou yasuraka na love',\n", + " 'but kitto kimi to nara kanae rareru kara',\n", + " 'shinjite ii?',\n", + " 'so i ‘ ll say goodbye to…',\n", + " 'all my honnou yo mezameyo',\n", + " 'shinobiyoru yami ni (to the virus) bye bye',\n", + " 'one shot keshi satte miseru',\n", + " 'kimi to nara succeed',\n", + " 'all my honnou yo mezameyo',\n", + " 'shinobiyoru yami ni (to the virus) bye bye',\n", + " 'one shot keshi satte miseru',\n", + " 'kimi to nara succeed (to the virus )',\n", + " 'i know , we will succeed',\n", + " 'all succeed …',\n", + " 'so?',\n", + " 'who do you no tonigh, lazy and gentleman?',\n", + " 'the echo is where in the back of the wodes; callhim forth!',\n", + " '(shaun mac irewick, briefdragger, for the concern of messrs jhon jhamieson and song, rated one hundrick and thin per storehundred on this nightly quisquiquock of the twelve apos-trophes, set by jockit mic ereweak. he misunderstruck and aim for am ollo of number three of them and left his free natural ri-postes to four of them in their own fine artful disorder.)',\n", + " 'i. what secondtonone myther rector and maximost bridges-maker was the first to rise taller through his beanstale than the bluegum buaboababbaun or the giganteous wellingtonia sequoia; went nudiboots with trouters into a liffeyette when she was barely in her tricklies; was well known to claud a conciliation cap onto the esker of his hooth; sports a chainganger’s albert solemenly over his hullender’s epulence; thought he weighed a new ton when there felled his first lapapple; gave the heinous-ness of choice to everyknight betwixt yesterdicks and twomaries; had sevenal successivecoloured serebanmaids on the same big white drawringroam horthrug; is a willbeforce to this hour at house as he was in heather; pumped the catholick wartrey and shocked the prodestung boyne; killed his own hungery self in anger as a young man; found fodder for five when allmarken rose goflooded; with hirish tutores cornish made easy; voucher of rotables, toll of the road; bred manyheaded stepsons for one leapyourown taughter; is too funny for a fish and has too much outside for an insect; like a heptagon crystal emprisoms trues and fauss for us; is infinite swell in unfitting induments; once was he shovelled and once was he arsoned and once was he inundered and she hung him out billbailey; has a quadrant in his tile to tell toler cad a’clog it is; offers chances to long on but stands up to legge before; found coal at the end of his harrow and moss-roses behind the seams; made a fort out of his postern and wrote f.e.r.t. on his buckler; is escapemaster-inchief from all sorts of houdingplaces; if he outharrods against barkers, to the shool-bred he acts whiteley; was evacuated at the mere appearance of three germhuns and twice besieged by a sweep; from zoomor-phology to omnianimalism he is brooched by the spin of a coin; towers, an eddistoon amid the lampless, casting swannbeams on the deep; threatens thunder upon malefactors and sends whispers up fraufrau’s froufrous; when dook hookbackcrook upsits his ass booseworthies jeer and junket but they boos him oos and baas his aas when he lukes like hunkett plunkett; by sosannsos and search a party on a lady of this city; business, reading news-paper, smoking cigar, arranging tumblers on table, eating meals, pleasure, etcetera, etcetera, pleasure, eating meals, arranging tum-blers on table, smoking cigar, reading newspaper, business; minerals, wash and brush up, local views, juju toffee, comic and birthdays cards; those were the days and he was their hero; pink sunset shower, red clay cloud, sorrow of sahara, oxhide on iren; arraigned and attainted, listed and lited, pleaded and proved; catches his check at banck of indgangd and endurses his doom at chapel exit; brain of the franks, hand of the christian, tongue of the north; commands to dinner and calls the bluff; has a block at morgen’s and a hatache all the afternunch; plays gehamerat when he’s ernst but misses mausey when he’s lustyg; walked as far as the head where he sat in state as the rump; shows early eng-lish tracemarks and a marigold window with manigilt lights, a myrioscope, two remarkable piscines and three wellworthseeing ambries; arches all portcullised and his nave dates from dots; is a horologe unstoppable and the benn of all bells; fuit, isst and herit and though he’s mildewstaned he’s mouldystoned; is a quer-cuss in the forest but plane member for megalopolis; mountun — mighty, faunonfleetfoot; plank in our platform, blank in our scouturn; hidal, in carucates he is enumerated, hold as an earl, he counts; shipshaped phrase of buglooking words with a form like the easing moments of a graminivorous; to our dooms brought he law, our manoirs he made his vill of; was an over-grind to the underground and acqueduced for fierythroats; sends boys in socks acoughawhooping when he lets farth his carbon-oxside and silk stockings show her shapings when he looses hose on hers; stocks dry puder for the ill people and pinkun’s pellets for all the pale; gave his mundyfoot to miserius, her pinch to anna livia, that superfine pigtail to cerisia cerosia and quid rides to titius, caius and sempronius; made the man who had no notion of shopkeepers feel he’d rather play the duke than play the gentleman; shot two queans and shook three caskles when he won his game of dwarfs; fumes inwards like a strombolist till he smokes at both ends; manmote, befier of him, womankind, pietad!; shows one white drift of snow among the gorsegrowth of his crown and a chaperon of repentance on that which shed gore; pause and quies, triple bill; went by metro for the polis and then hoved by; to the finders, hail! woa, you that seek!; whom fillth had plenished, dearth devoured; hock is leading, cocoa comes next, emery tries for the flag; can dance the o’bruin’s polerpasse at noolahn to his own orchistruss accompaniment; took place before the internatural convention of catholic midwives and found stead before the congress for the study of endonational calamities; makes a delictuous entr‚e and finishes off the course between sweets and savouries; flouts for forecasts, flairs for finds and the fun of the fray on the fairground; cleared out three hun-dred sixty five idles to set up one all khalassal for henwives hoping to have males; the flawhoolagh, the grasping one, the kindler of paschal fire; forbids us our trespassers as we forgate him; the phoenix be his pyre, the cineres his sire!; piles big pelium on little ossas like the pilluls of hirculeads; has an eatupus complex and a drinkthedregs kink; wurstmeats for chumps and cowcar-lows for scullions; when he plies for our favour is very trolly ours; two psychic espousals and three desertions; may be matter of fact now but was futter of magd then; cattermole hill, ex-mountain of flesh was reared up by stress and sank under strain; tank it up, dank it up, tells the tailor to his tout; entoutcas for a man, but bit a thimble for a maid; blimp, blump; a dud letter, a sing a song a sylble; a byword, a sentence with surcease; while stands his canyouseehim frails shall fall; was hatched at cellbridge but ejoculated abrood; as it gan in the biguinnengs so wound up in a battle of boss; roderick, roderick, roderick, o, you’ve gone the way of the danes; variously catalogued, regularly regrouped; a bushboys holoday, a quacker’s mating, a wenches’ sandbath; the same homoheatherous checkinlossegg as when sollyeye airly blew ye; real detonation but false report; spa mad but inn sane; half emillian via bogus census but a no street hausmann when allphannd; is the handiest of all andies and a most alleghant spot to dump your hump; hands his secession to the new patricius but plumps plebmatically for the bloody old centuries; eats with doors open and ruts with gates closed; some dub him rotshield and more limn him rockyfellow; shows he’s fly to both demis-fairs but thries to cover up his tracers; seven dovecotes cooclaim to have been pigeonheim to this homer, smerrnion, rhoebok, kolonsreagh, seapoint, quayhowth, ashtown, ratheny; inde-pendent of the lordship of chamberlain, acknowledging the rule of rome; we saw thy farm at useful prine, domhnall, domhnall; reeks like illbelpaese and looks like iceland’s ear; lodged at quot places, lived through tot reigns; takes a szumbath for his weekend and a wassarnap for his refreskment; after a good bout at stool-ball enjoys giroflee giroflaa; what nevermore missed and colombo found; believes in everyman his own goaldkeeper and in africa for the fullblacks; the arc of his drive was forty full and his stumps were pulled at eighty; boasts him to the thick-inthews the oldest creater in aryania and looks down on the suiss family collesons whom he calls les nouvelles roches; though his heart, soul and spirit turn to pharaoph times, his love, faith and hope stick to futuerism; light leglifters cense him souriantes from afore while boor browbenders curse him grommelants to his hindmost; between youlasses and yeladst glimse of even; the lug his peak has, the luk his pile; drinks tharr and wodhar for his asama and eats the unparishable sow to styve off reglar rack; the beggars cloak them reclined about his paddystool, the whores winken him as they walk their side; on christienmas at advent lodge, new yealand, after a lenty illness the roeverand mr easterling of pentecostitis, no followers by bequest, fanfare all private; gone where glory waits him (ball, bulletist) but not here yet (maxwell, clark); comminxed under articles but phoe-nished a borgiess; from the vat on the bier through the burre in the dark to the buttle of the bawn; is ai an the highest but roh re his root; filled fanned of hackleberries whenas all was tuck and toss up for him as a yangster to fall fou of hockinbechers wherein he had gauged the use of raisin; ads aliments, das doles, raps rustics, tams turmoil; sas seed enough for a semination but sues skivvies on the sly; learned to speak from hand to mouth till he could talk earish with his eyes shut; hacked his way through hickheckhocks but hanged hishelp from there hereafters; rialtos, annesleyg, binn and balls to say nothing atolk of new comyn; the gleam of the glow of the shine of the sun through the dearth of the dirth on the blush of the brick of the viled ville of barnehulme has dust turned to brown; these dyed to tartan him, rueroot, dulse, bracken, teasel, fuller’s ash, sundew and cress; long gunn but not for cotton; stood his sharp assault of famine but grew girther, girther and girther; he has twenty four or so cousins germinating in the united states of america and a namesake with an initial difference in the once kingdom of poland; his first’s a young rose and his second’s french–egyptian and his whole means a slump at christie’s; forth of his pierced part came the woman of his dreams, blood thicker then water last trade overseas; buyshop of glintylook, eorl of hoed; you and i are in him surrented by brwn bldns; elin’s flee polt pelhaps but hwang chang evelytime; he one was your of highbigpipey boys but fancy him as smoking fags his at time of life; mount of mish, mell of moy; had two cardinal ventures and three capitol sinks; has a peep in his pocketbook and a packet-boat in his keep; b.v.h., b.l.g., p.p.m., t.d.s., v.b.d., t.c.h., l.o.n.; is breakfates, lunger, diener and souper; as the streets were paved with cold he felt his topperairy; taught himself skating and learned how to fall; distinctly dirty but rather a dear; hoveth chieftains evrywehr, with morder; ostman effendi, serge paddishaw; baases two mmany, outpriams al’ his parisites; first of the fenians, roi des fain‚ants; his tiara of scones was held unfillable. till one liam fail felled him in west-munster; was struck out of his sittem when he rowed saulely to demask us and to our appauling predicament brought as plagues from buddapest; put a matchhead on an aspenstalk and set the living a fire; speared the rod and spoiled the lightning; married with cakes and repunked with pleasure; till he was buried how-happy was he and he made the welkins ring with up micawber!; god at the top of the staircase, carrion on the mat of straw; the false hood of a spindler web chokes the cavemouth of his unsightliness but the nestlings that liven his leafscreen sing him a lover of arbuties; we strike hands over his bloodied warsheet but we are pledged entirely to his green mantle; our friend vikelegal, our swaran foi; under the four stones by his streams who vanished the wassailbowl at the joy of shells; mora and lora had a hill of a high time looking down on his confusion till firm look in readiness, forward spear and the windfoot of curach strewed the lakemist of lego over the last of his fields; we darkened for you, faulterer, in the year of mourning but we’ll fidhil to the dimtwinklers when the streamy morvenlight calls up the sunbeam; his striped pantaloons, his rather strange walk; hereditatis columna erecta, hagion chiton eraphon; nods a nap for the nonce but crows cheerio when they get ecunemical; is a simul-taneous equator of elimbinated integras when three upon one is by inspection improper; has the most conical hodpiece of confusianist heronim and that chuchuffuous chinchin of his is like a footsey kungoloo around taishantyland; he’s as globeful as a gasometer of lithium and luridity and he was thrice ten anular years before he wallowed round raggiant circos; the cabalstone at the coping of his cavin is a canine constant but only an amiri-can could apparoxemete the apeupresiosity of his atlast’s alonge — ment; sticklered rights and lefts at baddersdown in his hunt for the boar trwth but made his end with the modareds that came at him in camlenstrete; a hunnibal in exhaustive conflict, an otho to return; burning body to aiger air on melting mountain in wooing wave; we go into him sleepy children, we come out of him strucklers for life; he divested to save from the mrs drown-ings their rival queens while grimshaw, bragshaw and renshaw made off with his storen clothes; taxed and rated, licensed and ranted; his threefaced stonehead was found on a whitehorse hill and the print of his costellous feet is seen in the goat’s grass-circle; pull the blind, toll the deaf and call dumb, lame and halty; miraculone, monstrucceleen; led the upplaws at the creation and hissed a snake charmer off her stays; hounded become haunter, hunter become fox; harrier, marrier, terrier, tav; olaph the ox-man, thorker the tourable; you feel he is vespasian yet you think of him as aurelius; whugamore, tradertory, socianist, com-moniser; made a summer assault on our shores and begiddy got his sands full; first he shot down raglan road and then he tore up marlborough place; cromlechheight and crommalhill were his farfamed feetrests when our lurch as lout let free into the lubar heloved; mareschalled his wardmotes and delimited the main; netted before nibbling, can scarce turn a scale but, grossed after meals, weighs a town in himself; banba prayed for his conversion, beurla missed that grand old voice; a colossus among cabbages, the melarancitrone of fruits; larger than life, doughtier than death; gran turco, orege forment; lachsembulger, leperlean; the sparkle of his genial fancy, the depth of his calm sagacity, the clearness of his spotless honour, the flow of his boundless bene-volence; our family furbear, our tribal tarnpike; quary was he invincibled and cur was he burked; partitioned irskaholm, united irishmen; he took a svig at his own methyr but she tested a bit gorky and as for the salmon he was coming up in him all life long; comm, eilerdich hecklebury and sawyer thee, warden; silent as the bee in honey, stark as the breath on hauwck, cos-tello, kinsella, mahony, moran, though you rope amrique your home ruler is dan; figure right, he is hoisted by the scurve of his shaggy neck, figure left, he is rationed in isobaric patties among the crew; one asks was he poisoned, one thinks how much did he leave; ex-gardener (riesengebirger), fitted up with planturous existencies would make roseoogreedy (mite’s) little hose; taut sheets and scuppers awash but the oil silk mack lieb- sterpet micks his aquascutum; the enjoyment he took in kay women, the employment he gave to gee men; sponsor to a squad of piercers, ally to a host of rawlies; against lightning, explosion, fire, earthquake, flood, whirlwind, burglary, third party, rot, loss of cash, loss of credit, impact of vehicles; can rant as grave as oxtail soup and chat as gay as a porto flippant; is unhesitent in his unionism and yet a pigotted nationalist; sylviacola is shy of him, matrosenhosens nose the joke; shows the sinews of peace in his chest-o-wars; fiefeofhome, ninehundred and thirtunine years of copyhold; is aldays open for polemypolity’s sake when he’s not suntimes closed for the love of janus; sucks life’s eleaxir from the pettipickles of the jewess and ruoulls in sulks if any popeling runs down the huguenots; boomaport, walleslee, ubermeerschall blowcher and supercharger, monsieur ducrow, mister mudson, master gardiner; to one he’s just paunch and judex, to another full of beans and brehons; hallucination, cauchman, ectoplasm; passed for baabaa blacksheep till he grew white woo woo woolly; was drummatoysed by mac milligan’s daughter and put to music by one shoebard; all fitzpatricks in his emirate remember him, the boys of wetford hail him babu; indanified himself with boro tribute and was schenkt publicly to brigstoll; was given the light in drey orchafts and entumuled in threeplexes; his likeness is in terrecuite and he giveth rest to the rainbowed; lebriety, frothearnity and quality; his reverse makes a virtue of necessity while his obverse mars a mother by invention; beskilk his gunwale and he’s the second imperial, untie points, unhook tenters and he’s lath and plaster; calls upon allthing when he fails to appeal to eachovos; basidens, ardree, kongsemma, rexregulorum; stood into dee mouth, then backed broadside on baulacleeva; either eldorado or ultimate thole; a kraal of fou feud fires, a crawl of five pubs; laid out lash-ings of laveries to hunt down his family ancestors and then pled double trouble or quick quits to hush the buckers up; threw peb-blets for luck over one sodden shoulder and dragooned peoplades armed to their teeth; pept as gaudio gambrinus, grim as potter the grave; ace of arts, deuce of damimonds, trouble of clubs, fear of spates; cumbrum, cumbrum, twiniceynurseys fore a drum but tre to uno tips the scale; reeled the titleroll opposite a brace of girdles in silver on the screen but was sequenced from the set as crookback by the even more titulars, rick, dave and barry; he can get on as early as the twentysecond of mars but occasion-ally he doesn’t come offbefore virgintiquinque germinal; his in — dian name is hapapoosiesobjibway and his number in arithmo — sophy is the stars of the plough; took weapon in the province of the pike and let fling his line on eelwick; moves in vicous cicles yet remews the same; the drain rats bless his offals while the park birds curse his floodlights; portobello, equadocta, therecocta, percorello; he pours into the softclad shellborn the hard cash earned in watling street; his birth proved accidental shows his death its grave mistake; brought us giant ivy from the land of younkers and bewitthered apostolopolos with the gale of his gall; while satisfied that soft youthful bright matchless girls should bosom into fine silkclad joyous blooming young women is not so pleased that heavy swearsome strongsmelling irregularshaped men should blottout active handsome wellformed frankeyed boys; herald hairyfair, alloaf the wheat; husband your aunt and endow your nepos; hearken but hush it, screen him and see; time is, an archbishopric, time was, a tradesmen’s entrance; beckburn brooked with wath, scale scarred by scow; his rainfall is a couple of kneehighs while his meanst grass temperature marked three in the shade; is the meltingpoint of snow and the bubblingplace of alcohol; has a tussle with the trulls and then does himself justice; hinted at in the eschatological chapters of humphrey’s justesse of the jaypees and hunted for by theban recensors who sniff there’s something behind the bug of the deaf; thc king was in his cornerwall melking mark so murry, the queen was steep in armbour feeling fain and furry, the mayds was midst the haw-thorns shoeing up their hose, out pimps the back guards (pomp!) and pump gun they goes; to all his foretellers he reared a stone and for all his comethers he planted a tree; forty acres, sixty miles, white stripe, red stripe, washes his fleet in annacrwatter; whou missed a porter so whot shall he do for he wanted to sit for pimploco but they’ve caught him to stand for sue?; dutchlord, dutchlord, overawes us; headmound, king and martyr, dunstung in the yeast, pitre-le-pore-in petrin, barth-the-grete-by-the-exchange; he hestens towards dames troth and wedding hand like the prince of orange and nassau while he has trinity left behind him like bowlbeggar bill-the-bustonly; brow of a hazel-wood, pool in the dark; changes blowicks into bullocks and a well of artesia into a bird of arabia; the handwriting on his facewall, the cryptoconchoidsiphonostomata in his exprussians; his birthspot lies beyond the herospont and his burialplot in the pleasant little field; is the yldist kiosk on the pleninsula and the unguest hostel in saint scholarland; walked many hundreds and many score miles of streets and lit thousands in one nightlights in hectares of windows; his great wide cloak lies on fifteen acres and his little white horse decks by dozens our doors; o sorrow the sail and woe the rudder that were set for mairie quai!; his suns the huns, his dartars the tartars, are plenty here today; who repulsed from his burst the bombolts of ostenton and falchioned each flash downsaduck in the deep; apersonal problem, a loca-tive enigma; upright one, vehicule of arcanisation in the field, lying chap, floodsupplier of celiculation through ebblanes; a part of the whole as a port for a whale; dear hewitt castello, equerry, were daylighted with our outing and are looking backwards to unearly summers, from rhoda dundrums; is above the seedfruit level and outside the leguminiferous zone; when older links lock older hearts then he’ll resemble she; can be built with glue and clippings, scrawled or voided on a buttress; the night express sings his story, the song of sparrownotes on his stave of wires; he crawls with lice, he swarms with saggarts; is as quiet as a mursque but can be as noisy as a sonogog; was dilmun when his date was palmy and mudlin when his nut was cracked; suck up the sease, lep laud at ease, one lip on his lap and one cushlin his crease; his porter has a mighty grasp and his baxters the boon of broadwhite; as far as wind dries and rain eats and sun turns and water bounds he is exalted and depressed, assembled and asundered; go away, we are deluded, come back, we are dis-ghosted; bored the ostrov, leapt the inferus, swam the mabbul and flure the moyle; like fat, like fatlike tallow, of greasefulness, yea of dripping greasefulness; did not say to the old, old, did not say to the scorbutic, scorbutic; he has founded a house, uru, a house he has founded to which he has assigned its fate; bears a raaven geulant on a fjeld duiv; ruz the halo offhis varlet when he appeared to his shecook as haycock, emmet, boaro, toaro, osterich, mangy and skunk; pressed the beer of aled age out of the nettles of rashness; put a roof on the lodge for hymn and a coq in his pot pro homo; was dapifer then pancircensor then hortifex magnus; the topes that tippled on him, the types that toppled off him; still starts our hares yet gates our goat; pocket-book packetboat, gapman gunrun; the light of other days, dire dreary darkness; our awful dad, timour of tortur; puzzling, startling, shocking, nay, perturbing; went puffing from king’s brugh to new customs, doffing the gibbous off him to every breach of all size; with pa’s new heft and papa’s new helve he’s papapa’s old cutlass papapapa left us; when youngheaded old-shouldered and middlishneck aged about; caller herring every — daily, turgid tarpon overnight; see loryon the comaleon that changed endocrine history by loeven his loaf with forty bannucks; she drove him dafe till he driv her blind up; the pigeons doves be perchin all over him one day on baslesbridge and the ravens duv be pitchin their dark nets after him the next night behind koenig-stein’s arbour; tronf of the rep, comf of the priv, prosp of the pub; his headwood it’s ideal if his feet are bally clay; he crashed in the hollow of the park, trees down, as he soared in the vaguum of the phoenix, stones up; looks like a moultain boultter and sounds like a rude word; the mountain view, some lumin pale round a lamp of succar in boinyn water; three shots a puddy at up blup saddle; made up to miss maccormack ni lacarthy who made off with darly dermod, swank and swarthy; once diamond cut garnet now dammat cuts groany; you might find him at the florence but watch our for him in wynn’s hotel; theer’s his bow and wheer’s his leaker and heer lays his bequiet hearse, deep; swed albiony, likeliest villain of the place; hennery can-terel — cockran, eggotisters, limitated; we take our tays and frees our fleas round sadurn’s mounted foot; built the lund’s kirk and destroyed the church’s land; who guesse his title grabs his deeds; fletch and prities, fash and chaps; artful juke of wilysly; hugglebelly’s funniral; kukkuk kallikak; heard in camera and excruciated; boon when with benches billeted, bann if buckshot-backshattered; heavengendered, chaosfoedted, earthborn; his father presumptively ploughed it deep on overtime and his mother as all evince must have travailled her fair share; a foot-prinse on the megacene, hetman unwhorsed by searingsand; honorary captain of the extemporised fire brigade, reported to be friendly with the police; the door is still open; the old stock collar is coming back; not forgetting the time you laughed at elder charterhouse’s duckwhite pants and the way you said the whole township can see his hairy legs; by stealth of a kersse her aulburntress abaft his nape she hung; when his kettle became a hearthsculdus our thorstyites set their lymphyamphyre; his year-letter concocted by masterhands of assays, his hallmark imposed by the standard of wrought plate; a pair of pectorals and a triple-screen to get a wind up; lights his pipe with a rosin tree and hires a towhorse to haul his shoes; cures slavey’s scurvy, breaks barons boils; called to sell polosh and was found later in a bed-room; has his seat of justice, his house of mercy, his com o’copious and his stacks a’rye; prospector, he had a rooksacht, retrospector, he holds the holpenstake; won the freedom of new yoke for the minds of jugoslaves; acts active, peddles in passivism and is a gorgon of selfridgeousness; pours a laughsworth of his illformation over a larmsworth of salt; half heard the single maiden speech la belle spun to her grand mount and wholed a lifetime by his ain fireside, wondering was it hebrew set to himmeltones or the quicksilversong of qwaternions; his troubles may be over but his doubles have still to come; the lobster pot that crabbed our keel, the garden pet that spoiled our squeezed peas; he stands in a lovely park, sea is not far, importunate towns of x, y and z are easily over reached; is an excrescence to civilised humanity and but a wart on europe; wanamade singsigns to soundsense an yit he wanna git all his flesch nuemaid motts truly prural and plusible; has excisively large rings and is uncustomarily perfumed; lusteth ath he listeth the cleah whithpeh of a themise; is a prince of the fingallian in a hiberniad of hoolies; has a hodge to wherry him and a frenchy to curry him and a brabanson for his beeter and a fritz at his switch; was waylaid of a parker and beschotten by a buckeley; kicks lintils when he’s cuppy and casts jacob’s arroroots, dime after dime, to poor waifstrays on the perish; reads the charms of h. c. endersen all the weaks of his evenin and the crimes of ivaun the taurrible every strongday morn; soaps you soft to your face and slaps himself when he’s badend; owns the bulgiest bung-barrel that ever was tiptapped in the privace of the mullingar inn; was bom with a nuasilver tongue in his mouth and went round the coast of iron with his lift hand to the scene; raised but two fingers and yet smelt it would day; for whom it is easier to found a see in ebblannah than for i or you to find a dubbeltye in dampsterdamp; to live with whom is a lifemayor and to know whom a liberal education; was dipped in hoily olives and chrys-med in scent otooles; hears cricket on the earth but annoys the life out of predikants; still turns the durc’s ear of darius to the now thoroughly infurioted’ one of god; made man with juts that jerk and minted money mong maney; likes a six acup pud-ding when he’s come whome sweetwhome; has come through all the eras of livsadventure from moonshine and shampaying down to clouts and pottled porter; woollem the farsed, hahnreich the althe, charge the sackend, writchad the thord; if a mandrake shricked to convultures at last surviving his birth the weibduck will wail bitternly over the rotter’s resurrection; loses weight in the moon night but gird girder by the sundawn; with one touch of nature set a veiled world agrin and went within a sheet of tissuepaper of the option of three gaols; who could see at one blick a saumon taken with a lance, hunters pursuing a doe, a swallowship in full sail, a whyterobe lifting a host; faced flappery like old king cnut and turned his back like cincinnatus; is a farfar and morefar and a hoar father nakedbucker in villas old as new; squats aquart and cracks aquaint when it’s flaggin in town and on haven; blows whiskery around his summit but stehts stout upon his footles; stutters fore he falls and goes mad entirely when he’s waked; is timb to the pearly mom and tomb to the mourning night; and an he had the best bunbaked bricks in bould babylon for his pitching plays he’d be lost for the want of his wan wubblin wall?',\n", + " 'answer: finn maccool!',\n", + " '2. does your mutter know your mike?',\n", + " 'answer: when i tum meoptics, from suchurban prospects, ’tis my filial’s bosom, doth behold with pride, that pontificator, and circumvallator, with his dam night garrulous, slipt by his side. ann alive, the lisp of her, ‘twould grig mountains whisper her, and the bergs of iceland melt in waves of fire, and her spoon-me-spondees, and her dirckle-me-ondenees, make the rageous ossean, kneel and quaff a lyre! if dann’s dane, ann’s dirty, if he’s plane she’s purty, if he’s fane, she’s flirty, with her auburnt streams, and her coy cajoleries, and her dabblin drolleries, for to rouse his rudderup, or to drench his dreams. if hot hammurabi, or cowld clesiastes, could espy her pranklings, they’d burst bounds agin, and renounce their ruings, and denounce their do-ings, for river and iver, and a night. amin!',\n", + " '3. which title is the true-to-type motto-inlieu for that tick for teac thatchment painted witt wheth one darkness, where asnake is under clover and birds aprowl are in the rookeries and a magda went to monkishouse and a riverpaard was spotted, which is not whichcroft whorort not ousterholm dreyschluss not haraldsby, grocer, not vatandcan, vintner, not houseboat and hive not knox-atta-belle not o’faynix coalprince not wohn squarr roomyeck not ebblawn downes not le decer le mieux not benjamin’s lea not tholomew’s whaddingtun gnot antwarp gnat musca not corry’s not weir’s not the arch not the smug not the dotch house not the uval nothing grand nothing splendid (grahot or spletel) nayther erat est erit noor non michi sed luciphro?',\n", + " 'answer: thine obesity, o civilian, hits the felicitude of our orb!',\n", + " '4. what irish capitol city (a dea o dea!) of two syllables and six letters, with a deltic origin and a ruinous end, (ah dust oh dust!) can boost of having a) the most extensive public park in the world, b) the most expensive brewing industry in the world, c) the most expansive peopling thoroughfare in the world, d) the most phillohippuc theobibbous pa — pulation in the world: and harmonise your abecedeed responses?',\n", + " 'answer: a) delfas. and when ye’ll hear the gould hommers of my heart, my floxy loss, bingbanging again the ribs of yer resistance and the tenderbolts of my rivets working to your destraction ye’ll be sheverin wi’ all yer dinful sobs when we’ll go riding acope-acurly, you with yer orange garland and me with my conny cordial, down the greaseways of rollicking into the waters of wetted life. b) dorhqk. and sure where can you have such good old chimes anywhere, and leave you, as on the mash and how’tis i would be engaging you with my plovery soft ac-cents and descanting upover the scene beunder me of your loose vines in their hairafall with them two loving loofs braceleting the slims of your ankles and your mouth’s flower rose and sinking ofter the soapstone of silvry speech. c) nublid. isha, why wouldn’t we be happy, avourneen, on. the mills’money he’ll soon be leaving you as soon as i’ve my own owned brooklined georgian mansion’s lawn to recruit upon by doctor cheek’s special orders and my copper’s panful of soybeans and irish in my east hand and a james’s gate in my west, after all the errears and erroriboose of combarative embottled history, and your goodself churning over the newleaved butter (more power to you), the choicest and the cheapest from atlanta to oconee, while i’ll be drowsing in the gaarden. d) dalway. i hooked my thoroughgoing trotty the first down spanish place, mayo i make, tuam i take, sligo’s sleek but galway’s grace. holy eel and sainted salmon, chucking chub and ducking dace, rodiron’s not your aequal! says she, leppin half the lane. abcd) a bell a bell on shalldoll steepbell, ond be’ll go massplon pristmoss speople, shand praise gon ness our fayst moan neople, our prame shan-deepen, pay name muy feepence, moy nay non aequallllllll!',\n", + " '5. whad slags of a loughladd would retten smuttyflesks, empt-out old mans, melk vitious geit, scareoff jackinjills fra tiddle anding, smoothpick waste papish pastures, insides man outsiders angell, sprink dirted water around village, newses, tobaggon and sweeds, plain general kept, louden on the kirkpeal, foottreats given to malafides, outshriek hyelp hyelf nor his hair efter buggelawrs, might underhold three barnets, putzpolish crotty bottes, nightcoover all fireglims, serve’s time till baass, grind-stone his kniveses, fullest boarded, lewd man of the method of godliness, perchance he nieows and thans sits in the spoorwaggen, x.w.c.a. on z.w.c.u., doorsteps, limited, or baywindaws bros swobber preferred. walther clausetter’s and sons with the h. e. chimneys’ company to not skreve, will, on advices, be bacon or stable hand, must begripe fullstandingly irers’ langurge, jublander or northquain bigger prefurred, all duties, kine rights, family fewd, outings fived, may get earnst, no get combitsch, profusional drinklords to please obstain, he is fatherlow soun-digged inmoodmined pershoon but aleconnerman, nay, that must he isn’t?',\n", + " 'answer: pore ole joe!',\n", + " '6. what means the saloon slogan summon in the house-sweep dinah?',\n", + " 'answer: tok. galory bit of the sales of cloth nowand i have to beeswax the bringing in all the claub of the porks to us how i thawght i knew his stain on the flower if me ask and can could speak and he called by me midden name tik. i am your honey honeysugger phwhtphwht tha bay and who bruk the dandleass and who seen the blackcullen jam for tomorrha’s big pickneck i hope it’ll pour prais the climate of all ireland i heard the grackles and i skimming the crock on all your sangwidges fip-pence per leg per drake.tuk. and who eight the last of the goose — bellies that was mowlding from measlest years and who leff that there and who put that here and who let the kilkenny stale the chump. tek. and whowasit youwasit propped the pot in the yard and whatinthe nameofsen lukeareyou rubbinthe sideofthe flureofthe lobbywith. shite! will you have a plateful? tak.',\n", + " '7. who are those component partners of our societate, the doorboy, the cleaner, the sojer, the crook, the squeezer, the loun-ger, the curman, the tourabout, the mussroomsniffer, the bleaka — blue tramp, the funpowtherplother, the christymansboxer, from their pr‚s sal‚s and donnybrook prater and roebuck’s campos and the ager arountown and crumglen’s grassy but kimmage’s champ and ashtown fields and cabra fields and finglas fields and santry fields and the feels of raheny and their fails and bal-doygle to them who are latecomers all the year’s round by anti — cipation, are the porters of the passions in virtue of retroratioci — nation, and, contributting their conflingent controversies of differentiation, unify their voxes in a vote of vaticination, who crunch the crusts of comfort due to depredation, drain the mead for misery to incur intoxication, condone every evil by practical justification and condam any good to its own gratification, who are ruled, roped, duped and driven by those numen daimons, the feekeepers at their laws, nightly consternation, fortnightly fornication, monthly miserecordation and omniannual recreation, doyles when they deliberate but sullivans when they are swordsed, matey, teddy, simon, jorn, pedher, andy, barty, philly, jamesy mor and tom, matt and jakes mac carty?',\n", + " 'answer: the morphios!',\n", + " '8. and how war yore maggies?',\n", + " 'answer: they war loving, they love laughing, they laugh weeping, they weep smelling, they smell smiling, they smile hating, they hate thinking, they think feeling, they feel tempting, they tempt daring, they dare waiting, they wait taking, they take thanking, they thank seeking, as born for lorn in lore of love to live and wive by wile and rile by rule of ruse ‘reathed rose and hose hol’d home, yeth cometh elope year, coach and four, sweet peck-at-my-heart picks one man more.',\n", + " '9. now, to be on anew and basking again in the panaroma of all flores of speech, if a human being duly fatigued by his dayety in the sooty, having plenxty off time on his gouty hands and va-cants of space at his sleepish feet and as hapless behind the dreams of accuracy as any camelot prince of dinmurk, were at this auc-tual futule preteriting unstant, in the states of suspensive exani — mation, accorded, throughout the eye of a noodle, with an ear — sighted view of old hopeinhaven with all the ingredient and egregiunt whights and ways to which in the curse of his persis-tence the course of his tory will had been having recourses, the reverberration of knotcracking awes, the reconjungation of nodebinding ayes, the redissolusingness of.mindmouldered ease and the thereby hang of the hoel of it, could such a none, whiles even led comesilencers to comeliewithhers and till intempes-tuous nox should catch the gallicry and spot lucan’s dawn, by — hold at ones what is main and why tis twain, how one once meet melts in tother wants poignings, the sap rising, the foles falling, the nimb now nihilant round the girlyhead so becoming, the wrestless in the womb, all the rivals to allsea, shakeagain, o disaster! shakealose, ah how starring! but heng’s got a bit of horsa’s nose and jeff’s got the signs of ham round his mouth and the beau that spun beautiful pales as it palls, what roserude and oragious grows gelb and greem, blue out the ind of it ! violet’s dyed! then what would that fargazer seem to seemself to seem seeming of, dimm it all?',\n", + " 'answer: a collideorscape!',\n", + " '10. what bitter’s love but yurning, what’ sour lovemutch but a bref burning till shee that drawes dothe smoake retourne?',\n", + " 'answer: i know, pepette, of course, dear, but listen, precious! thanks, pette, those are lovely, pitounette, delicious! but mind the wind, sweet! what exquisite hands you have, you angiol, if you didn’t gnaw your nails, isn’t it a wonder you’re not achamed of me, you pig, you perfect little pigaleen! i’ll nudge you in a minute! i bet you use her best perisian smear off her vanity table to make them look so rosetop glowstop nostop. i know her. slight me, would she? for every got i care! three creamings a day, the first during her shower and wipe off with tissue. then after cleanup and of course before retiring. beme shawl, when i think of that espos of a clancarbry, the foodbrawler, of the socia-tionist party with hiss blackleaded chest, hello, prendregast! that you, innkipper, and all his fourteen other fullback maulers or hurling stars or whatever the dagos they are, baiting at my lord ornery’s, just becups they won the egg and spoon there so ovally provencial at balldole. my eilish assent he seed makes his admiracion. he is seeking an opening and means to be first with me as his belle alliance. andoo musnoo play zeloso! soso do todas. such is spanish. stoop alittle closer, fealse! delight-some simply! like jolio and romeune. i haven’t fell so turkish for ages and ages! mine’s me of squisious, the chocolate with a soul. extraordinary! why, what are they all, the mucky lot of them only? sht! i wouldn’t pay three hairpins for them. peppt! that’s rights, hold it steady! leg me pull. pu! come big to iran. poo! what are you nudging for? no, i just thought you were. listen, loviest! of course it was too kind of you, miser, to re-member my sighs in shockings, my often expressed wish when you were wandering about my trousseaurs and before i forget it don’t forget, in your extensions to my personality, when knotting my remembrancetie, shoeweek will be trotting back with red heels at the end of the moon but look what the fool bought cabbage head and, as i shall answer to gracious heaven, i’ll always in always remind of snappy new girters, me being always the one for charms with my very best in proud and gloving even if he was to be vermillion miles my youth to live on, the rubberend mr polkingtone, the quonian fleshmonger who mother browne solicited me for unlawful converse with, with her mug of october (a pots on it!), creaking around on his old shanksaxle like a crosty old cornquake. airman, waterwag, terrier, blazer! i’m fine, thanks ever! ha! o mind you poo tickly. sall i puhim in momou. mummum. funny spot to have a fingey! i’m terribly sorry, i swear to you i am! may you never see me in my birthday pelts seenso tutu and that her blanches mainges may rot leprous off her whatever winking maggis i’ll bet by your cut you go fleurting after with all the glass on her and the jumps in her stomewhere! haha! i suspected she was! sink her! may they fire her for a barren ewe! so she says: tay for thee? well, i saith: angst so mush: and desired she might not take it amiss if i esteemed her but an odd. if i did ate toughturf i’m not a mishy-missy. of course i know, pettest, you’re so learningful and considerate in yourself, so friend of vegetables, you long cold cat you! please by acquiester to meek my acquointance! codling, snakelet, iciclist! my diaper has more life to it! who drowned you in drears, man, or are you pillale with ink? did a weep get past the gates of your pride? my tread on the clover, sweetness? yes, the buttercups told me, hug me, damn it all, and i’ll kiss you back to life, my peachest. i mean to make you suffer, meddlar, and i don’t care this fig for contempt of courting. that i chid you, sweet sir? you know i’m tender by my eye. can’t you read by dazzling ones through me true? bite my laughters, drink my tears. pore into me, volumes, spell me stark and spill me swooning. i just don’t care what my thwarters think. transname me loveliness, now and here me for all times! i’d risk a policeman passing by, magrath or even that beggar of a boots at the post. the flame? o, pardone! that was what? ah, did you speak, stuffstuff? more poestries from chickspeer’s with gleechoreal music or a jaculation from the garden of the soul. of i be leib in the immoralities? o, you mean the strangle for love and the sowiveall of the prettiest? yep, we open hap coseries in the home. and once upon a week i improve on myself i’m so keen on that new free woman with novel inside. i’m always as tickled as can be over man in a surplus by the lady who pays the rates. but i’m as pie as is possible. let’s root out brimstoker and give him the thrall of our lives. it’s dracula’s nightout. for creepsake don’t make a flush! draw the shades, curfe you, and i’ll beat any sonnamonk to love. holy bug, how my highness would jump to make you flame your halve a ban-nan in two when i’d run my burning torchlight through (to adore me there and then cease to be? whatever for, blossoms?) your hairmejig if you had one. if i am laughing with you? no, lovingest, i’m not so dying to take my rise out of you, adored. not in the very least. true as god made my mamaw hiplength modesty coatmawther! it’s only because the rison is i’m only any girl, you lovely fellow of my dreams, and because old somebooby is not a roundabout, my trysting of the tulipies, like that puff pape bucking daveran assoiling us behinds. what a nerve! he thinks that’s what the vesprey’s for. how vain’s that hope in cleric’s heart who still pursues th’adult’ rous art, cocksure that rusty gown of his will make fair sue forget his phiz! tame schwipps. blessed marguerite bosses, i hope they threw away the mould or else we’ll have ballshossers and sourdamapplers with their medical assassiations all over the place. but hold hard till i’ve got my latchkey vote and i’ll teach him when to wear what woman callours. on account of the gloss of the gleison hasaboobrawbees isabeaubel. and because, you pluckless lanka-loot, i hate the very thought of the thought of you and because, dearling, of course, adorest, i was always meant for an engin-dear from the french college, to be musband, nomme d’engien, when we do and contract with encho tencho solver when you are married to reading and writing which pleasebusiness now won’t be long for he’s so loopy on me and i’m so leapy like since the day he carried me from the boat, my saviored of eroes, to the beach and i left on his shoulder one fair hair to guide hand and mind to its softness. ever so sorry! i beg your pardon, i was listening to every treasuried word i said fell from my dear mot’s tongue otherwise how could i see what you were thinking of our granny? only i wondered if i threw out my shaving water. anyway, here’s my arm, pulletneck. gracefully yours. move your mouth towards minth, more, preciousest, more on more! to please me, treasure. don’t be a, i’m not going to! sh! nothing! a cricri somewhere! buybuy! i’m fly! hear, pippy, under the limes. you know bigtree are all against gravstone. they hisshis-tenency. garnd ond mand! so chip chirp chirrup, cigolo, for the lug of migo! the little passdoor, i go you before, so, and you’re at my apron stage. shy is him, dovey? musforget there’s an audience. i have been lost, angel. cuddle, ye divil ye! it’s our toot-a-toot. hearhere! sensation! let them, their whole four courtships! let them, bigbawl and his boosers’ eleven makes twelve territorials. the old sot’s hole that wants wide streets to commission their noisense in, at the mitchells v. nicholls. aves selvae acquae valles! and my waiting twenty classbirds, sitting on their stiles! let me finger their eurhythmytic. and you’ll see if i’m selfthought. they’re all of them out to please. wait! in the name of. and all the holly. and some the mistle and it saint yves. hoost! ahem! there’s ada, bett, celia, delia, ena, fretta, gilda, hilda, ita, jess, katty, lou, (they make me cough as sure as i read them) mina, nippa, opsy, poll, queeniee, ruth, saucy, trix, una, vela, wanda, xenia, yva, zulma, phoebe, thelma. and mee! the reformatory boys is goaling in for the church so we’ve all comefeast like the groupsuppers and caught lipsolution from anty pravidance under penancies for myrtle sins. when their bride was married all my belles began ti ting. a ring a ring a rosaring! then everyone will hear of it. whoses wishes is the farther to my thoughts. but i’ll plant them a poser for their nomanclatter. when they’re out with the daynurse doing chaperon mall. bright pigeons all over the whirrld will fly with my mistletoe message round their loveribboned necks and d crumb of my cake for each chasta dieva. we keeps all and sundry papers. in th’ amourlight, o my darling! no, i swear to you by fibsburrow churchdome and sainte andr‚e’s under-shift, by all i hold secret from my world and in my underworld of nighties and naughties and all the other wonderwearlds! close your, notmust look! now open, pet, your lips, pepette, like i used my sweet parted lipsabuss with dan holohan of facetious memory taught me after the flannel dance, with the proof of love, up smock alley the first night he smelled pouder and i coloured beneath my fan, pipetta mia, when you learned me the linguo to melt. whowham would have ears like ours, the blackhaired! do you like that, silenzioso? are you enjoying, this same little me, my life, my love? why do you like my whisping? is it not divinely deluscious? but in’t it bafforyou? misi misi! tell me till my thrillme comes! i will not break the seal. i am enjoying it still, i swear i am! why do you prefer its in these dark nets, if why may ask, my sweetykins? sh sh! long-ears is flying. no, sweetissest, why would that ennoy me? but don’t! you want to be slap well slapped for that. your delighted lips, love, be careful! mind my duvetyne dress above all! it’s golded silvy, the newest sextones with princess effect. for rut-land blue’s got out of passion. so, so, my precious! o, i can see the cost, chare! don’t tell me! why, the boy in sheeps’ lane knows that. if i sell whose, dears? was i sold here’ tears? you mean those conversation lozenges? how awful! the bold shame of me! i wouldn’t, chickens, not for all the juliettes in the twinkly way! i could snap them when i see them winking at me in bed. i didn’t did so, my intended, or was going to or thinking of. shshsh! don’t start like that, you wretch! i thought ye knew all and more, ye aucthor, to explique to ones the significat of their exsystems with your nieu nivulon lead. it’s only another queer fish or other in brinbrou’s damned old trouchorous river again, gothewishegoths bless us and spare her! and gibos rest from the bosso! excuse me for swearing, love, i swear to the sorrasims on their trons of uian i didn’t mean to by this alpin armlet! did you really never in all our cantalang lives speak clothse to a girl’s before? no! not even to the charmermaid? how marfellows! of course i believe you, my own dear doting liest, when you tell me. as i’d live to, o, i’d love to! liss, liss! i muss whiss! never that ever or i can remember dearstreaming faces, you may go through me! never in all my whole white life of my match-less and pair. or ever for bitter be the frucht of this hour! with my whiteness i thee woo and bind my silk breasths i thee bound! always, amory, amor andmore! till always, thou lovest! shshshsh! so long as the lucksmith. laughs!',\n", + " '11. if you met on the binge a poor acheseyeld from ailing, when the tune of his tremble shook shimmy on shin, while his countrary raged in the weak of his wailing, like a rugilant pugi-lant lyon o’lynn; if he maundered in misliness, plaining his plight or, played fox and lice, pricking and dropping hips teeth, or wringing his handcuffs for peace, the blind blighter, praying dieuf and domb nostrums foh thomethinks to eath; if he weapt while he leapt and guffalled quith a quhimper, made cold blood a blue mundy and no bones without flech, taking kiss, kake or kick with a suck, sigh or simper, a diffle to larn and a dibble to lech; if the fain shinner pegged you to shave his immartial, wee skillmustered shoul with his ooh, hoodoodoo! brok — ing wind that to wiles, woemaid sin he was partial, we don’t think, jones, we’d care to this evening, would you?',\n", + " 'answer: no, blank ye! so you think i have impulsivism? did they tell you i am one of the fortysixths? and i suppose you heard i had a wag on my ears? and i suppose they told you too that my roll of life is not natural? but before proceeding to conclusively confute this begging question it would be far fitter for you, if you dare! to hasitate to consult with and consequentially attempt at my disposale of the same dime-cash problem elsewhere naturalistically of course, from the blinkpoint of so eminent a spatialist. from it you will here notice, schott, upon my for the first remarking you that the sophology of bitchson while driven as under by a purely dime-dime urge is not without his cashcash characktericksticks, borrowed for its nonce ends from the fiery goodmother miss fortune (who the lost time we had the pleasure we have had our little recherch‚ brush with, what, schott?) and as i further could have told you as brisk as your d.b.c. beha-viouristically paillet‚ with a coat of homoid icing which is in reality only a done by chance ridiculisation of the whoo-whoo and where’s hairs theorics of winestain. to put it all the more plumbsily. the speechform is a mere sorrogate. whilst the qua-lity and tality (i shall explex what you ought to mean by this with its proper when and where and why and how in the subsequent sentence) are alternativomentally harrogate and arrogate, as the gates may be.',\n", + " 'talis is a word often abused by many passims (i am working out a quantum theory about it for it is really most tantumising state of affairs). a pessim may frequent you to say: have you been seeing much of talis and talis those times? optimately meaning: will you put up at hree of irish? or a ladyeater may perhaps have casualised as you temptoed her … la sourdine: of your plates? is talis de talis, the swordswallower, who is on at the craterium the same talis von talis, the penscrusher, no funk you! who runs his duly mile? or this is a perhaps cleaner example. at a recent postvortex piece infustigation of a determinised case of chronic spinosis an extension lecturer on the ague who out of matter of form was trying his seesers, dr’s het ubeleeft, borrowed the question: why’s which suchman’s talis qualis? to whom, as a fatter of macht, dr gedankje of stoutgirth, who was wiping his whistle, toarsely retoarted: while thou beast’ one zoom of a whorl! (talis and talis originally mean the same thing, hit it’s: qualis.)',\n", + " 'professor loewy–brueller (though as i shall promptly prove his whole account of the sennacherib as distinct from the shal-manesir sanitational reforms and of the mr skekels and dr hydes problem in the same connection differs toto coelo from the fruit of my own investigations — though the reason i went to jericho must remain for certain reasons a political secret — especially as i shall shortly be wanted in cavantry, i congratulate myself, for the same and other reasons — as being again hope-lessly vitiated by what i have now resolved to call the dime and cash diamond fallacy) in his talked off confession which recently met with such a leonine uproar on its escape after its confinement why am i not born like a gentileman and why am i now so speak-able about my own eatables (feigenbaumblatt and father, juda — pest, 5688, a.m.) whole-heartedly takes off his gabbercoat and wig, honest draughty fellow, in his public interest, to make us see how though, as he says: ‘by allswill’ the inception and the descent and the endswell of man is temporarily wrapped in ob-scenity, looking through at these accidents with the faroscope of television, (this nightlife instrument needs still some subtrac-tional betterment in the readjustment of the more refrangible angles to the squeals of his hypothesis on the outer tin sides), i can easily believe heartily in my own most spacious immensity as my ownhouse and microbemost cosm when i am reassured by ratio that the cube of my volumes is to the surfaces of their sub-jects as the sphericity of these globes (i am very pressing for a parliamentary motion this term which, under my guidance, would establish the deleteriousness of decorousness in the morbidis-ation of the modern mandaboutwoman type) is to the fera — city of fairynelly’s vacuum. i need not anthrapologise for any obintentional (i must here correct all that school of neoitalian or paleoparisien schola of tinkers and spanglers who say i’m wrong parcequeue out of revolscian from romanitis i want to be) down-trodding on my foes. professor levi–brullo, f.d. of sexe — weiman–eitelnaky finds, from experiments made by hinn with his nuremberg eggs in the one hands and the watches cunldron apan the oven, though it is astensably a case of ket’s rebollions cooling the popes back, because the number of squeer faiths in weekly circulation will not be appreciably augmented by the notherslogging of my cupolar clods. what the romantic in rags pines after like all tomtompions haunting crevices for a deadbeat escupement and what het importunes our mitleid for in accornish with the mortadarthella taradition is the poorest commonon-guardiant waste of time. his everpresent toes are always in retaliessian out throuth his overpast boots. hear him squak! teek heet to that looswallawer how he bolo the bat! tyro a toray! when mullocky won the couple of colds, when we were stripping in number three, i would like the neat drop that would malt in my mouth but i fail to see when (i am purposely refraining from expounding the obvious fallacy as to the specific gravitates of the two deglutables implied nor to the lapses lequou asousiated with the royal gorge through students of mixed hydrostatics and pneumodipsics will after some difficulties grapple away with my meinungs). myrrdin aloer! as old mar-sellas cambriannus puts his. but, on professor llewellys ap bryllars, f.d., ph. dr’s showings, the plea, if he pleads, is all posh and robbage on a melodeontic scale since his man’s when is no otherman’s quandour (mine, dank you?) while, — for aught i care for the contrary, the all is where in love as war and the plane where me arts soar you’d aisy rouse a thunder from and where i cling true’tis there i climb tree and where innocent looks best (pick!) there’s holly in his ives.',\n", + " 'as my explanations here are probably above your understand-ings, lattlebrattons, though as augmentatively uncomparisoned as cadwan, cadwallon and cadwalloner, i shall revert to a more expletive method which i frequently use when i have to sermo with muddlecrass pupils. imagine for my purpose that you are a squad of urchins, snifflynosed, goslingnecked, clothyheaded, tangled in your lacings, tingled in your pants, etsitaraw etcicero. and you, bruno nowlan, take your tongue out of your inkpot! as none of you knows javanese i will give all my easyfree trans-lation of the old fabulist’s parable. allaboy minor, take your head out of your satchel! audi, joe peters! exaudi facts!',\n", + " 'the mookse and the gripes.',\n", + " 'gentes and laitymen, fullstoppers and semicolonials, hybreds and lubberds!',\n", + " 'eins within a space and a wearywide space it wast ere wohned a mookse. the onesomeness wast alltolonely, archunsitslike, broady oval, and a mookse he would a walking go (my hood! cries antony romeo), so one grandsumer evening, after a great morning and his good supper of gammon and spittish, having flabelled his eyes, pilleoled his nostrils, vacticanated his ears and palliumed his throats, he put on his impermeable, seized his impugnable, harped on his crown and stepped out of his immobile de rure albo (socolled becauld it was chalkfull of masterplasters and had borgeously letout gardens strown with cascadas, pinta-costecas, horthoducts and currycombs) and set off from luds — town a spasso to see how badness was badness in the weirdest of all pensible ways.',\n", + " 'as he set off with his father’s sword, his lancia spezzata, he was girded on, and with that between his legs and his tarkeels, our once in only bragspear, he clanked, to my clinking, from veetoes to threetop, every inch of an immortal.',\n", + " 'he had not walked over a pentiadpair of parsecs from his azylium when at the turning of the shinshone lanteran near saint bowery’s-without-his-walls he came (secunding to the one one oneth of the propecies, amnis limina permanent) upon the most unconsciously boggylooking stream he ever locked his eyes with. out of the colliens it took a rise by daubing itself ni-non. it looked little and it smelt of brown and it thought in nar — rows and it talked showshallow. and as it rinn it dribbled like any lively purliteasy: my, my, my! me and me! little down dream don’t i love thee!',\n", + " 'and, i declare, what was there on the yonder bank of the stream that would be a river, parched on a limb of the olum, bolt downright, but the gripes? and no doubt he was fit to be dried for why had he not been having the juice of his times?',\n", + " 'his pips had been neatly all drowned on him; his polps were charging odours every older minute; he was quickly for getting the dresser’s desdaign on the flyleaf of his frons; and he was quietly for giving the bailiff’s distrain on to the bulkside of his cul de pompe. in all his specious heavings, as be lived by opti-mus maximus, the mookse had never seen his dubville brooder — on-low so nigh to a pickle.',\n", + " 'adrian (that was the mookse now’s assumptinome) stuccstill phiz-…-phiz to the gripes in an accessit of aurignacian. but all-mookse must to moodend much as allrouts, austereways or wastersways, in roaming run through room. hic sor a stone, singularly illud, and on hoc stone seter satt huc sate which it filled quite poposterously and by acclammitation to its fullest justotoryum and whereopum with his unfallable encyclicling upom his alloilable, diupetriark of the wouest, and the athemyst-sprinkled pederect he always walked with, deusdedit, cheek by jowel with his frisherman’s blague? bellua triumphanes, his everyway addedto wallat’s collectium, for yea longer he lieved yea broader he betaught of it, the fetter, the summe and the haul it cost, he looked the first and last micahlike laicness of quartus the fifth and quintus the sixth and sixtus the seventh giving allnight sitting to lio the faultyfindth.',\n", + " '— good appetite us, sir mookse! how do you do it? cheeped the gripes in a wherry whiggy maudelenian woice and the jack- asses all within bawl laughed and brayed for his intentions for they knew their sly toad lowry now. i am rarumominum blessed to see you, my dear mouster. will you not perhopes tell me everything if you are pleased, sanity? all about aulne and lithial and allsall allinall about awn and liseias? ney?',\n", + " 'think of it! o miserendissimest retempter! a gripes!',\n", + " '— rats! bullowed the mookse most telesphorously, the concionator, and the sissymusses and the zozzymusses in their ro — benhauses quailed to hear his tardeynois at all for you cannot wake a silken nouse out of a hoarse oar. blast yourself and your anathomy infairioriboos! no, hang you for an animal rurale! i am superbly in my supremest poncif! abase you, baldyqueens! gather behind me, satraps! rots!',\n", + " '— i am till infinity obliged with you, bowed the gripes, his whine having gone to his palpruy head. i am still always having a wish on all my extremities. by the watch, what is the time, pace?',\n", + " 'figure it! the pining peever! to a mookse!',\n", + " '— ask my index, mund my achilles, swell my obolum, wosh-up my nase serene, answered the mookse, rapidly by turning clement, urban, eugenious and celestian in the formose of good grogory humours. quote awhore? that is quite about what i came on my missions with my intentions laudibiliter to settle with you, barbarousse. let thor be orlog. let pauline be irene. let you be beeton. and let me be los angeles. now measure your length. now estimate my capacity. well, sour? is this space of our couple of hours too dimensional for you, temporiser? will you give you up? como? fuert it?',\n", + " 'sancta patientia! you should have heard the voice that an-swered him! culla vosellina.',\n", + " '— i was just thinkling upon that, swees mooksey, but, for all the rime on my raisins, if i connow make my submission, i can-nos give you up, the gripes whimpered from nethermost of his wanhope. ishallassoboundbewilsothoutoosezit. my tumble, lou-dy bullocker, is my own. my velicity is too fit in one stockend. and my spetial inexshellsis the belowing things ab ove. but i will never be abler to tell your honoriousness (here he near lost his limb) though my corked father was bott a pseudowaiter, whose o’cloak you ware.',\n", + " 'incredible! well, hear the inevitable.',\n", + " '— your temple, sus in cribro! semperexcommunicambiambi-sumers. tugurios-innewrobe or tukurias-inashies. novar — ome, my creature, blievend bleives. my building space in lyonine city is always to let to leonlike men, the mookse in a most consistorous allocution pompifically with immediate jurisdiction constantinently concludded (what a crammer for the shape-wrucked gripes!). and i regret to proclaim that it is out of my temporal to help you from being killed by inchies, (what a thrust!), as we first met each other newwhere so airly. (poor little sowsieved subsquashed gripes! i begin to feel contemption for him!). my side, thank decretals, is as safe as motherour’s houses, he continued, and i can seen from my holeydome what it is to be wholly sane. unionjok and be joined to yok! parysis, tu sais, crucycrooks, belongs to him who parises himself. and there i must leave you subject for the pressing. i can prove that against you, weight a momentum, mein goot enemy! or cos-pol’s not our star. i bet you this dozen odd. this foluminous dozen odd. quas primas — but ’tis bitter to compote my know-ledge’s fructos of. tomes.',\n", + " 'elevating, to give peint to his blick, his jewelled pederect to the allmysty cielung, he luckystruck blueild out of a few should-be santillants, a cloister of starabouts over maples, a lucciolys in teresa street and a stopsign before sophy barratt’s, he gaddered togodder the odds docence of his vellumes, gresk, letton and russicruxian, onto the lapse of his prolegs, into umfullth one-scuppered, and sat about his widerproof he proved it well who — onearth dry and drysick times, and vremiament, tu cesses, to the extinction of niklaus altogether (niklaus alopysius having been the once gripes’s popwilled nimbum) by neuclidius and in-exagoras and mumfsen and thumpsem, by orasmus and by amenius, by anacletus the jew and by malachy the augurer and by the cappon’s collection and after that, with cheekee’s gela-tine and alldaybrandy’s formolon, he reproved it ehrltogether when not in that order sundering in some different order, alter three thirty and a hundred times by the binomial dioram and the penic walls and the ind, the inklespill legends and the rure, the rule of the hoop and the blessons of expedience and the jus, the jugicants of pontius pilax and all the mummyscrips in sick bokes’ juncroom and the chapters for the cunning of the chap-ters of the conning fox by tail.',\n", + " 'while that mooksius with preprocession and with propre-cession, duplicitly and diplussedly, was promulgating ipsofacts and sadcontras this raskolly gripos he had allbust seceded in monophysicking his illsobordunates. but asawfulas he had caught his base semenoyous sarchnaktiers to combuccinate upon the silipses of his aspillouts and the acheporeoozers of his haggy-own pneumax to synerethetise with the breadchestviousness of his sweeatovular ducose sofarfully the loggerthuds of his sakel-laries were fond at variance with the synodals of his somepooliom and his babskissed nepogreasymost got the hoof from his philio-quus.',\n", + " '— efter thousand yaws, o gripes con my sheepskins, yow will be belined to the world, enscayed mookse the pius.',\n", + " '— ofter thousand yores, amsered gripes the gregary, be the goat of machammud’s, yours may be still, o mookse, more botheared.',\n", + " '— us shall be chosen as the first of the last by the electress of vale hollow, obselved the mookse nobily, for par the unicum of elelijiacks, us am in our stabulary and that is what ruby and roby fall for, blissim.',\n", + " 'the pills, the nasal wash (yardly’s), the army man cut, as british as bondstrict and as straightcut as when that broken-arched traveller from nuzuland . . .',\n", + " '— wee, cumfused the gripes limply, shall not even be the last of the first, wee hope, when oust are visitated by the veiled horror. and, he added: mee are relying entirely, see the forte-thurd of elissabed, on the weightiness of mear’s breath. puffut!',\n", + " 'unsightbared embouscher, relentless foe to social and business succes! (hourihaleine) it might have been a happy evening but . . .',\n", + " 'and they viterberated each other, canis et coluber with the wildest ever wielded since tarriestinus lashed pissasphaltium.',\n", + " '— unuchorn!',\n", + " '— ungulant!',\n", + " '— uvuloid!',\n", + " '— uskybeak!',\n", + " 'and bullfolly answered volleyball.',\n", + " 'nuvoletta in her lightdress, spunn of sisteen shimmers, was looking down on them, leaning over the bannistars and listening all she childishly could. how she was brightened when should-rups in his glaubering hochskied his welkinstuck and how she was overclused when kneesknobs on his zwivvel was makeacting such a paulse of himshelp! she was alone. all her nubied companions were asleeping with the squirrels. their mivver, mrs moonan, was off in the fuerst quarter scrubbing the back-steps of number 28. fuvver, that skand, he was up in norwood’s sokaparlour, eating oceans of voking’s blemish. nuvoletta lis-tened as she reflected herself, though the heavenly one with his constellatria and his emanations stood between, and she tried all she tried to make the mookse look up at her (but he was fore too adiaptotously farseeing) and to make the gripes hear how coy she could be (though he was much too schystimatically auricular about his ens to heed her) but it was all mild’s vapour moist. not even her feignt reflection, nuvoluccia, could they toke their gnoses off for their minds with intrepifide fate and bungless curiasity, were conclaved with heliogobbleus and commodus and enobarbarus and whatever the coordinal dickens they did as their damprauch of papyrs and buchstubs said. as if that was their spiration! as if theirs could duiparate her queendim! as if she would be third perty to search on search proceedings! she tried all the winsome wonsome ways her four winds had taught her. she tossed her sfumastelliacinous hair like le princesse de la petite bretagne and she rounded her mignons arms like mrs cornwallis–west and she smiled over herself like the beauty of the image of the pose of the daughter of the queen of the em-perour of irelande and she sighed after herself as were she born to bride with tristis tristior tristissimus. but, sweet madonine, she might fair as well have carried her daisy’s worth to florida. for the mookse, a dogmad accanite, were not amoosed and the gripes, a dubliboused catalick, wis pinefully obliviscent.',\n", + " 'i see, she sighed. there are menner.',\n", + " 'the siss of the whisp of the sigh of the softzing at the stir of the ver grose o arundo of a long one in midias reeds: and shades began to glidder along the banks, greepsing, greepsing, duusk unto duusk, and it was as glooming as gloaming could be in the waste of all peacable worlds. metamnisia was allsoonome coloro-form brune; citherior spiane an eaulande, innemorous and un numerose. the mookse had a sound eyes right but he could not all hear. the gripes had light ears left yet he could but ill see. he ceased. and he ceased, tung and trit, and it was neversoever so dusk of both of them. but still moo thought on the deeps of the undths he would profoundth come the morrokse and still gri feeled of the scripes he would escipe if by grice he had luck enoupes.',\n", + " 'oh, how it was duusk! from vallee maraia to grasyaplaina, dormimust echo! ah dew! ah dew! it was so duusk that the tears of night began to fall, first by ones and twos, then by threes and fours, at last by fives and sixes of sevens, for the tired ones were wecking, as we weep now with them. o! o! o! par la pluie!',\n", + " 'then there came down to the thither bank a woman of no appearance (i believe she was a black with chills at her feet) and she gathered up his hoariness the mookse motamourfully where he was spread and carried him away to her invisible dwelling, thats hights, aquila rapax, for he was the holy sacred solem and poshup spit of her boshop’s apron. so you see the mookse he had reason as i knew and you knew and he knew all along. and there came down to the hither bank a woman to all important (though they say that she was comely, spite the cold in her heed) and, for he was as like it as blow it to a hawker’s hank, she plucked down the gripes, torn panicky autotone, in angeu from his limb and cariad away its beotitubes with her to her unseen shieling, it is, de rore coeli. and so the poor gripes got wrong; for that is always how a gripes is, always was and always will.be. and it was never so thoughtful of either of them. and there were left now an only elmtree and but a stone. polled with pietrous, sierre but saule. o! yes! and nuvoletta, a lass.',\n", + " 'then nuvoletta reflected for the last time in her little long life and she made up all her myriads of drifting minds in one. she cancelled all her engauzements. she climbed over the bannistars; she gave a childy cloudy cry: nu‚e! nu‚e! a lightdress fluttered. she was gone. and into the river that had been a stream (for a thousand of tears had gone eon her and come on her and she was stout and struck on dancing and her muddied name was missis-liffi) there fell a tear, a singult tear, the loveliest of all tears (i mean for those crylove fables fans who are ‘keen’ on the pretty-pretty commonface sort of thing you meet by hopeharrods) for it was a leaptear. but the river tripped on her by and by, lapping as though her heart was brook: why, why, why! weh, o weh i’se so silly to be flowing but i no canna stay!',\n", + " 'no applause, please! bast! the romescot nattleshaker will go round your circulation in diu dursus.',\n", + " 'allaboy, major, i’ll take your reactions in another place after themes. nolan browne, you may now leave the classroom. joe peters, fox.',\n", + " 'as i have now successfully explained to you my own natural-born rations which are even in excise of my vaultybrain insure me that i am a mouth’s more deserving case by genius. i feel in symbathos for my ever devoted friend and halfaloafonwashed, gnaccus gnoccovitch. darling gem! darling smallfox! horose-shoew! i could love that man like my own ambo for being so baileycliaver though he’s a nawful curillass and i must slav to methodiousness. i want him to go and live like a theabild in charge of the night brigade on tristan da cunha, isle of man-overboard, where he’ll make number 106 and be near inacces — sible. (the meeting of mahoganies, be the waves, rementious me that this exposed sight though it pines for an umbrella of its own and needs a shelter belt of the true service sort to keep its boles clean, — the weeping beeches, picea and tillia, are in a wild state about it — ought to be classified, as cricketbutt will-owm and his two nurserymen advisers suggested, under genus inexhaustible when we refloat upon all the butternat, sweet gum and manna ash redcedera which is so purvulent there as if there was howthorns in curraghchasa which ought to look as plane as a lodgepole to anybody until we are introduced to that pine-tacotta of verney rubeus where the deodarty is pinctured for us in a pure stand, which we do not doubt ha has a habitat of doing, but without those selfsownseedlings which are a species of proof that the largest individual can occur at or in an olivetion such as east conna hillock where it mixes with foolth accacians and common sallies and is tender) vux populus, as we say in hickory-hockery and i wish we had some more glasses of arbor vitae. why roat by the roadside or awn over alum pot? alderman whitebeaver is dakyo. he ought to go away for a change of ideas and he’d have a world of things to look back on. do, sweet daniel! if i weren’t a jones in myself i’d elect myself to be his dolphin in the wildsbillow because he is such a barefooted rubber with my supersocks pulled over his face which i publicked in my bestback garden for the laetification of siderodromites and to the irony of the stars. you will say it is most unenglish and i shall hope to hear that you will not be wrong about it. but i further, feeling a bit husky in my truths.',\n", + " 'will you please come over and let us mooremoore murgessly to each’s other down below our vices. i am underheerd by old billfaust. wilsh is full of curks. the coolskittle is philip debli-nite. mr wist is thereover beyeind the wantnot. wilsh and wist are as thick of thins udder as faust on the deblinite. sgunoshooto estas preter la tapizo malgranda. lilegas al si en sia chambro. kelkefoje funcktas, kelkefoje srumpas shultroj. houdian kiel vi fartas, mia nigra sinjoro? and from the poignt of fun where i am crying to arrive you at they are on allfore as foibleminded as you can feel they are fablebodied.',\n", + " 'my heeders will recoil with a great leisure how at the out-break before trespassing on the space question where even michelangelines have fooled to dread i proved to mindself as to your sotisfiction how his abject all through (the quickquid of pro-fessor ciondolone’s too frequently hypothecated bettlermensch) is nothing so much more than a mere cashdime however genteel he may want ours, if we please (i am speaking to us in the second person), for to this graded intellecktuals dime is cash and the cash system (you must not be allowed to forget that this is all contained, i mean the system, in the dogmarks of origen on spurios) means that i cannot now have or nothave a piece of cheeps in your pocket at the same time and with the same man-ners as you can now nothalf or half the cheek apiece i’ve in mind unless burrus and caseous have not or not have seemaultaneous-ly sysentangled themselves, selldear to soldthere, once in the dairy days of buy and buy.',\n", + " 'burrus, let us like to imagine, is a genuine prime, the real choice, full of natural greace, the mildest of milkstoffs yet unbeaten as a risicide and, of course, obsoletely unadulterous whereat caseous is obversely the revise of him and in fact not an ideal choose by any meals, though the betterman of the two is meltingly addicted to the more casual side of the arrivaliste case and, let me say it at once, as zealous over him as is passably he. the seemsame home and histry seeks and hidepence which we used to be reading for our prepurgatory, hot, schott? till duddy shut the shopper op and mutti, poor mutti! brought us our poor suppy, (ah who! eh how!) in acetius and oleosus and sellius volatilis and petrus papricus! our old party quite united round the slatbowel at commons: pfarrer salamoss himself and that sprog of a pedersill and his sprig of thyme and a dozen of the murphybuds and a score and more of the hot young capels and lettucia in her greensleeves and you too and me three, twinsome bibs but hansome ates, like shakespill and eggs! but there’s many a split pretext bowl and jowl; and (snob screwing that cork, schott!) to understand this as well as you can, feeling how back-ward you are in your down-to-the-ground benches, i have com — pleted the following arrangement for the coarse use of stools and if i don’t make away with you i’m beyond caesar outnullused',\n", + " 'the older sisars (tyrants, regicide is too good for you!) be-come unbeurrable from age, (the compositor of the farce of dustiny however makes a thunpledrum mistake by letting off this pienofarte effect as his furst act as that is where the juke comes in) having been sort-of-nineknived and chewly removed (this soldier — author — batman for all his commontoryism is just another of those souftsiezed bubbles who never quite got the sandhurst out of his eyes so that the champaign he draws for us is as flop as a plankrieg) the twinfreer types are billed to make their reupprearance as the knew kneck and knife knickknots on the deserted champ de bouteilles. (a most cursery reading into the persic–uraliens hostery shows us how fonnumagula picked up that propper numen out of a colluction of prifixes though to the permienting cannasure the coucousien oafsprung of this sun of a kuk is as sattin as there’s a tub in tobolosk) ostiak della vogul marina! but that i dannoy the fact of wanton to weste point i could paint you to that butter (cheese it!) if you had some wash. mordvealive! oh me none onsens! why the case is as inessive and impossive as kezom hands! their inter-locative is conprovocative just as every hazzy hates to having a hazbane in her noze. caseous may bethink himself a thought of a caviller but burrus has the reachly roundered head that goes best with thofthinking defensive fideism. he has the lac of wis-dom under every dent in his lofter while the other follow’s onni vesy milky indeedmymy. laughing over the linnuts and weeping off the uniun. he hisn’t the hey og he lisn’t the lug, poohoo. and each night sim misses mand he winks he had the semagen. it was aptly and corrigidly stated (and, it is royally needless for one ex ungue leonem to say by whom) that his seeingscraft was that clarety as were the wholeborough of poutres-bourg to be averlaunched over him pitchbatch he could still make out with his augstritch the green moat in ireland’s eye. let me sell you the fulltroth of burrus when he wore a younker. here it is, and chorming too, in six by sevens! a cleanly line, by the gods! a king off duty and a jaw for ever! and what a cheery ripe outlook, good help me deus v deus! if i were to speak my ohole mouthful to arinam about it you should call me the ormuzd aliment in your midst of faime. eat ye up, heat ye up! sings the somun in the salm. butyrum et mel comedet ut sciat reprobare malum et eligere bonum. this, of course, also explains why we were taught to play in the childhood: der haensli ist ern butterbrot, mein butterbrot! und koebi iss dein schtinkenkot! ja! ja! ja!',\n", + " 'this in fact, just to show you, is caseous, the brutherscutch or puir tyron: a hole or two, the highstinks aforefelt and anygo prigging wurms. cheesugh! you complain. and hi hi high must say you are not hoa hoa hoally in the wrong!',\n", + " 'thus we cannot escape our likes and mislikes, exiles or am-busheers, beggar and neighbour and — this is where the dime — show advertisers advance the temporal relief plea — let us be tolerant of antipathies. nex quovis burro num fit mercaseus? i am not hereby giving my final endorsement to the learned ignorants of the cusanus philosophism in which old nicholas pegs it down that the smarter the spin of the top the sounder the span of the buttom (what the worthy old auberginiste ought to have meant was: the more stolidly immobile in space appears to me the bottom which is presented to use in time by the top primo-mobilisk &c.). and i shall be misunderstord if understood to give an unconditional sinequam to the heroicised furibouts of the nolanus theory, or, at any rate, of that substrate of apart from hissheory where the theophil swoors that on principial he was the pointing start of his odiose by comparison and that whiles eggs will fall cheapened all over the walled the bure will be dear on the brie.',\n", + " 'now, while i am not out now to be taken up as unintention-ally recommending the silkebjorg tyrondynamon machine for the more economical helixtrolysis of these amboadipates until i can find space to look into it myself a little more closely first i shall go on with my decisions after having shown to you in good time how both products of our social stomach (the excellent dr burroman, i noticed by the way from his emended food theory, has been carefully digesting the very wholesome criticism i helped him to in my princeps edition which is all so munch to the cud) are mutuearly polarised the incompatabilily of any delusional acting as ambivalent to the fixation of his pivotism. positing, as above, too males pooles, the one the pictor of the other and the omber the skotia of the one, and looking want-ingly around our undistributed middle between males we feel we must waistfully woent a female to focus and on this stage there pleasantly appears the cowrymaid m. whom we shall often meet below who introduces herself upon us at some precise hour which we shall again agree to call absolute zero or the babbling pumpt of platinism. and so like that former son of a kish who went up and out to found his farmer’s ashes we come down home gently on our own turnedabout asses to meet margareen.',\n", + " 'we now romp through a period of pure lyricism of shame-bred music (technologically, let me say, the appetising entry of this subject on a fool chest of vialds is plumply pudding the carp before doevre hors) evidenced by such words in distress as i cream for thee, sweet margareen, and the more hopeful o mar-gareena! o margareena! still in the bowl is left a lump of gold! (correspondents, by the way, will keep on asking me what is the correct garnish to serve drisheens with. tansy sauce. enough). the pawnbreaking pathos of the first of these shoddy pieces reveals it as a caseous effort. burrus’s bit is often used for a toast. criniculture can tell us very precisely indeed how and why this particular streak of yellow silver first appeared on (not in) the bowel, that is to see, the human head, bald, black, bronze, brown, brindled, betteraved or blanchemanged where it might be use-fully compared with an earwig on a fullbottom. i am offering this to signorina cuticura and i intend to take it up and bring it under the nosetice of herr harlene by way of diverting his attentions. of course the unskilled singer continues to pervert our wiser ears by subordinating the space-element, that is to sing, the aria, to the time-factor, which ought to be killed, ill tempor. i should advise any unborn singer who may still be among my heeders to forget her temporal diaphragm at home (the best thing that could happen to it!) and attack the roulade with a swift colpo di glottide to the lug (though maace i will insist was reclined from overdoing this, his recovery often being slow) and then, o! on the third dead beat, o! to cluse her eyes and aiopen her oath and see what spice i may send her. how? cease thee, cantatrickee! i fain would be solo. arouse thee, my valour! and save for e’er my true bdur!',\n", + " 'i shall have a word to say in a few yards about the acoustic and orchidectural management of the tonehall but, as ours is a vivarious where one plant’s breaf is a lunger planner’s byscent and you may not care for argon, it will be very convenient for me for the emolument to pursue burrus and caseous for a rung or two up their isocelating biangle. every admirer has seen my goulache of marge (she is so like the sister, you don’t know, and they both dress a l i k e!) which i titled the very picture of a needlesswoman which in the presence ornates our national cruetstand. this genre of portraiture of changes of mind in order to be truly torse should evoke the bush soul of females so i am leaving it to the experienced victim to complete the general suggestion by the mental addition of a wallopy bound or, should the zulugical zealot prefer it, a congorool teal. the hatboxes which composed rhomba, lady trabezond (marge in her ex-celsis), also comprised the climactogram up which b and c may fondly be imagined ascending and are suggestive of gentlemen’s spring modes, these modes carrying us back to the superimposed claylayers of eocene and pleastoseen formation and the gradual morphological changes in our body politic which professor ebahi–ahuri of philadespoinis (ill) — whose bluebutterbust i have just given his coupe de grass to — neatly names a boœte … surprises. the boxes, if i may break the subject gently, are worth about fourpence pourbox but i am inventing a more patent pro-cess, foolproof and pryperfect (i should like to ask that shedlock homes person who is out for removing the roofs of our criminal classics by what deductio ad domunum he hopes de tacto to detect anything unless he happens of himself, movibile tectu, to have a slade off) after which they can be reduced to a fragment of their true crust by even the youngest of margees if she will take plase to be seated and smile if i please.',\n", + " 'now there can be no question about it either that i having done as much, have quite got the size of that demilitery young female (we will continue to call her marge) whose types may be met with in any public garden, wearing a very “dressy” affair, known as an “ethel” of instep length and with a real fur, reduced to 3/9, and muffin cap to tone (they are “angelskin” this fall), ostentatiously hemming apologetically over the shirtness of some “sweet” garment, when she is not sitting on all the free benches avidously reading about “it” but ovidently on the look out for “him” or so “thrilled” about the best dressed dolly pram and beautiful elbow competition or at the movies swallowing sobs and blowing bixed mixcuits over “childe” chaplain’s “latest” or on the verge of the gutter with some bobbedhair brieffrocked babyma’s toddler (the smythe–smythes now keep two domes-tics and aspire to three male ones, a shover, a butlegger and a sectary) held hostage at armslength, teaching his infant majesty how to make waters worse.',\n", + " '(i am closely watching master pules, as i have regions to sus-pect from my post that her “litde man” is a secondary school — teacher under the boards of education, a voted disciple of infan — tulus who is being utilised thus publicly by the seducente infanta to conceal her own more mascular personality by flaunting frivolish finery over men’s inside clothes, for the femininny of that totamulier will always lack the musculink of a verumvirum. my solotions for the proper parturience of matres and the edu-cation of micturious mites must stand over from the moment till i tackle this tickler hussy for occupying my uttentions.)',\n", + " 'margareena she’s very fond of burrus but, alick and alack! she velly fond of chee. (the important influence exercised on everything by this eastasian import has not been till now fully flavoured though we can comfortably taste it in this case. i shall come back for a little more say farther on.) a cleopatrician in her own right she at once complicates the position while burrus and caseous are contending for her misstery by implicating her- self with an elusive antonius, a wop who would appear to hug a personal interest in refined chees of all chades at the same time as he wags an antomine art of being rude like the boor. this antonius–burrus-caseous grouptriad may be said to equate the qualis equivalent with the older socalled talis on talis one just as quantly as in the hyperchemical economantarchy the tan-tum ergons irruminate the quantum urge so that eggs is to whey as whay is to zeed like your golfchild’s abe boob caddy. and this is why any simple philadolphus of a fool you like to dress, an athemisthued lowtownian, exlegged phatrisight, may be awfully green to one side of him and fruitfully blue on the other which will not screen him however from appealing to my gropesarching eyes, through the strongholes of my acropoll, as a boosted blasted bleating blatant bloaten blasphorus blesphorous idiot who kennot tail a bomb from a painapple when he steals one and wannot psing his psalmen with the cong in our gregational pompoms with the canting crew.',\n", + " 'no! topsman to your tarpeia! this thing, mister abby, is nefand. (and, taking off soutstuffs and alkalike matters, i hope we can kill time to reach the salt because there’s some forceglass neutric assets bittering in the soldpewter for you to plump your pottage in). the thundering legion has stormed olymp that it end. twelve tabular times till now have i edicted it. merus genius to careous caseous! moriture, te salutat! my phemous themis race is run, so let demoncracy take the highmost! (abra-ham tripier. those old diligences are quite out of date. read next answer). i’ll beat you so lon. (bigtempered. why not take direct action. see previous reply). my unchanging word is sacred. the word is my wife, to exponse and expound, to vend and to velnerate, and may the curlews crown our nuptias! till breath us depart! wamen. beware would you change with my years. be as young as your grandmother! the ring man in the rong shop but the rite words by the rote order! ubi lingua nuncupassit, ibi fas! adversus hostem semper sac! she that will not feel my ful-moon let her peel to thee as the hoyden and the impudent! that mon that hoth no moses in his sole nor is not awed by conquists of word’s law, who never with humself was fed and leaves his soil to lave his head, when his hope’s in his highlows from whisking his woe, if he came to my preach, a proud pursebroken ranger, when the heavens were welling the spite of their spout, to beg for a bite in our bark noisdanger, would meself and mac jeffet, four-inhand, foot him out? — ay! — were he my own breastbrother, my doubled withd love and my singlebiassed hate, were we bread by the same fire and signed with the same salt, had we tapped from the same master and robbed the same till, were we tucked in the one bed and bit by the one flea, homo-gallant and hemycapnoise, bum and dingo, jack by churl, though it broke my heart to pray it, still i’d fear i’d hate to say!',\n", + " '12. sacer esto?',\n", + " 'answer: semus sumus!',\n", + " 'geu kick i shimjangeul mak cha cheojyeo beorige',\n", + " 'kwi jjijeul deut han high hat nal karo unde',\n", + " 'deul tteun energizer geurae nan synchronizer',\n", + " 'volume deo keuge ollyeo bwa come on, boy',\n", + " \"it's twinkle, twinkle, up in the sky (like o s c a r)\",\n", + " 'nega gidaryeo on super storm (like o s c a r)',\n", + " 'da nuni beonjjeok tteuyeotji jeongshin eobshi jungdok dwaetji',\n", + " 'hey hey hey neon imi nae sone oscar',\n", + " 'geu bass ga modul deopchyeo da halkwo beoryeo',\n", + " 'han beat to beat millyeo wa ah tabeoryeosseo',\n", + " 'deul tteun energizer geurae nan synchronizer',\n", + " 'jupasu naege majchwo bwa come on, boy',\n", + " \"it's twinkle, twinkle, up in the sky (like o s c a r)\",\n", + " 'nega gidaryeo on super storm (like o s c a r)',\n", + " 'neon nuni busheo nal bomyeon ganjeolhi wonhae jukdorok',\n", + " 'hey hey hey neon imi nae sone oscar',\n", + " 'meomchuji anhgo gal ppuniya deo',\n", + " 'meotjin geon tto tae eona nikka',\n", + " 'banjjak banjjak bit naneun geol won haesseo oscar',\n", + " 'nuga nuga chanranhi bit na ni? oscar',\n", + " \"it's twinkling in the sky, in the sky\",\n", + " 'deul tteun energizer geurae nan synchronizer',\n", + " 'volume deo keuge ollyeo bwa come on, boy',\n", + " \"it's twinkle, twinkle, up in the sky (like o s c a r)\",\n", + " 'nega gidaryeo on super storm (like o s c a r)',\n", + " 'da nuni beonjjeok tteuyeotji jeongshin eobshi jungdok dwaetji',\n", + " 'hey hey hey imi nae sone oscar',\n", + " \"it's twinkle, twinkle, up in the sky (like o s c a r)\",\n", + " 'nega gidaryeo on super storm (like o s c a r)',\n", + " 'neon nuni busheo nal bomyeon ganjeolhi wonhae jukdorok',\n", + " 'hey hey hey imi nae sone oscar',\n", + " 'it may not or maybe a no concern of the guinnesses but.',\n", + " 'that the fright of his light in tribalbalbutience hides aback in the doom of the balk of the deaf but that the height of bis life from a bride’s eye stammpunct is when a man that means a moun-tain barring his distance wades a lymph that plays the lazy win — ning she likes yet that pride that bogs the party begs the glory of a wake while the scheme is like your rumba round me garden, allatheses, with perhelps the prop of a prompt to them, was now or never in etheria deserta, as in grander suburbia, with finn-fannfawners, ruric or cospolite, for much or moment indispute.',\n", + " 'whyfor had they, it is hiberio–miletians and argloe–noremen, donated him, birth of an otion that was breeder to sweatoslaves, as mysterbolder, forced in their waste, and as for ibdullin what of himana, that their tolvtubular high fidelity daildialler, as modern as tomorrow afternoon and in appearance up to the minute (hearing that anybody in that ruad duchy of wollinstown schemed to halve the wrong type of date) equipped with supershielded um-brella antennas for distance getting and connected by the magnetic links of a bellini–tosti coupling system with a vitaltone speaker, capable of capturing skybuddies, harbour craft emittences, key clickings, vaticum cleaners, due to woman formed mobile or man made static and bawling the whowle hamshack and wobble down in an eliminium sounds pound so as to serve him up a mele-goturny marygoraumd, eclectrically filtered for allirish earths and ohmes. this harmonic condenser enginium (the mole) they caused to be worked from a magazine battery (called the mimmim bimbim patent number 1132, thorpetersen and synds, joms-borg, selverbergen) which was tuned up by twintriodic singul — valvulous pipelines (lackslipping along as if their liffing deepunded on it) with a howdrocephalous enlargement, a gain control of circumcentric megacycles ranging from the antidulibnium onto the serostaatarean. they finally caused, or most leastways brung it about somehows(that)the pip of the lin(to)pinnatrate inthro an auricular forfickle (known as the vakingfar sleeper, mono-fractured by piaras uarhuamhaighaudhlug, tympan founder eustache straight, bauliaughacleeagh) a meatous conch culpable of cunduncing naul and santry and the forty routs of corthy with the concertiums of the brythyc symmonds guild, the ropemakers reunion, the variagated peddlars barringoy bni-brthirhd, the askold olegsonder crowds of the o’keef–rosses ant rhosso–keevers of zastwoking, the ligue of yahooth o.s.v. so as to lall the bygone dozed they arborised around, up his corpular fruent and down his reuctionary buckling, hummer, enville and cstorrap (the man of iren, thore’s curlymane for you!), lill the lubberendth of his otological life.',\n", + " 'house of call is all their evenbreads though its cartomance hallucinate like an erection in the night the mummery of whose deed, a lur of nur, immerges a mirage in a merror, for it is where by muzzinmessed for one watthour, bilaws below, till time jings pleas, that host of a bottlefilled, the bulkily hulkwight, hunter’s pink of face, an orel orioled, is in.on a bout to be unbulging an o’connell’s, the true one, all seethic, a luckybock, pledge of the stoup, whilom his canterberry bellseyes wink wickeding indtil the teller, oyne of an oustman in skull of skand. yet is it, this ale of man, for him, our hubuljoynted, just a tug and a fistful as for culsen, the patagoreyan, chieftain of chokanchuckers and his moyety joyant, under the foamer dispensation when he pullupped the turfeycork by the greats of gobble out of lougk neagk. when, pressures be to our hoary frother, the pop gave his sullen bulletaction and, bilge, sled a movement of catharic emulsipotion down the sloppery slide of a slaunty to tilted lift-ye-landsmen. allamin. which in the ambit of its orbit heaved a sink her sailer alongside of a drink her drainer from the basses brothers, those two theygottheres.',\n", + " 'it was long after once there was a lealand in the luffing ore it was less after lives thor a toyler in the tawn at all ohr it was note before he drew out the moddle of kersse by jerkin his dressing but and or it was not before athwartships he buttonhaled the norweeger’s capstan.',\n", + " 'so he sought with the lobestir claw of his propencil the clue of the wickser in his ear. o, lord of the barrels, comer forth from anow (i have not mislaid the key of efas–taem), o, ana, bright lady, comer forth from thenanow (i have not left temptation in the path of the sweeper of the threshold), o!',\n", + " 'but first, strongbowth, they would deal death to a drinking. link of a leadder, dubble in it, slake your thirdst thoughts awake with it. our svalves are svalves aroon! we rescue thee, o baass, from the damp earth and honour thee. o connibell, with mouth burial! so was done, neat and trig. up draught and whet them!',\n", + " '— then sagd he to the ship’s husband. and in his translaten-tic norjankeltian. hwere can a ketch or hook alive a suit and sowterkins? soot! sayd the ship’s husband, knowing the language, here is tayleren. ashe and whitehead, closechop, successor to. ahorror, he sayd, canting around to that beddest his friend, the tayler, for finixed coulpure, chunk pulley muchy chink topside numpa one sellafella, fake an capstan make and shoot! manning to sayle of clothse for his lady her master whose to be precised of a peer of trouders under the pattern of a cassack. let me prove, i pray thee, but this once, sazd mengarments, saving the mouth-brand from his firepool. he spit in his faist (beggin): he tape the raw baste (paddin): he planked his pledge (as dib is a dab): and he tog his fringe sleeve (buthock lad, fur whale). alloy for allay and this toolth for that soolth. lick it and like it. a barter, a parter. and plenty good enough, neighbour norreys, every bit and grain. and the ship’s husband brokecurst after him to hail the lugger. stolp, tief, stolp, come bag to moy eireann! and the norweeger’s capstan swaradeed, some blowfish out of schooling: all lykkehud! below taiyor he ikan heavin sets. but they broken waters and they made whole waters at they surfered bark to the lots of his vauce. and aweigh he yankered on the norgean run so that seven sailend sonnenrounders was he breastbare to the brina-bath, where bottoms out has fatthoms full, fram franz jos‚ land til cabo thormendoso, evenstarde and risingsoon. up the rivor tanneiry and down the golfe desombres. farety days and fearty nights. enjoy yourself, o maremen! and the tides made, veer and haul, and the times marred, rear and fall, and, holey bucket, dinned he raign!',\n", + " '— hump! hump! bassed the broaders-inlaugh with a quick piddysnip that wee halfbit a second.',\n", + " '— i will do that, sazd kersse, mainingstaying the rigout for her wife’s lairdship. nett sew? they hunched back at the earpicker.',\n", + " 'but old sporty, as endth lord, in ryehouse reigner, he nought feared crimp or cramp of shore sharks, plotsome to getsome. it was whol niet godthaab of errol loritz off his cape of good howthe and his trippertrice loretta lady, a maomette to his monetone, with twy twy twinky her stone hairpins, only not, if not, a queen of prancess their telling tabled who was for his seeming a casket through the heavenly, nay, heart of the sweet (had he hows would he keep her as niece as a fiddle!) but in the mealtub it was wohl yeas sputsbargain what, rarer of recent, an occasional conformity, he, with muggleton muckers, alwagers allalong most certainly allowed, as pilerinnager’s grace to peti-tionists of right, of the three blend cupstoomerries with their customed spirits, the gill gob, the burklley bump, the wallisey wanderlook, having their ceilidhe gailydhe in his shaunty irish. group drinkards maaks grope thinkards or how reads rotary, jewr of a chrestend, respecting the otherdogs churchees, so long plubs will be plebs but plabs by low frequency amplification may later agree to have another. for the people of the shed are the sure ads of all quorum. lorimers and leathersellers, skinners and salters, pewterers and paperstainers, parishclerks, fletcherbowyers, girdlers, mercers, cordwainers and first, and not last, the weavers. our library he is hoping to ye public.',\n", + " 'innholder, upholder.',\n", + " '— sets on sayfohrt! go to it, agitator! they bassabosuned over the flowre of their hoose. godeown moseys and skeep thy beeble bee!',\n", + " '— i will do that, acordial, by mine hand, sazd kersse, piece cod, and in the flap of a jacket, ructified after his nap of a blankit their o’cousin, as sober as the ship’s husband he was one my god-father when he told me saw whileupon i am now well and jurily sagasfide after the boonamorse the widower, according to rider, following pnomoneya, he is consistently blown to adams. so help me boyg who keeps the book!',\n", + " 'whereofter, behest his suzerain law the thing and the pilsener had the baar, recknar jarl, (they called him roguenor, irl call him) still passing the change-a-pennies, pengeypigses, a several sort of coyne in livery, pushed their whisper in his hairing, (seemed, a some shipshep’s sottovoxed stalement, a dearagadye, to hasvey anyone doing duty for duff point of dorkland compors) the same to the good ind ast velut discharge after which he had exemptied more than orphan for the ballast of his nurtural life. and threw a cast. a few pigses and hare you are and no chicking, tribune’s tribute, if you guess mimic miening. meanly in his lewd-brogue take your tyon coppels token, with this good sixtric from-mine runbag of juwels. nummers that is summus that is toptip that is bottombay that is twomeys that is digges that is heres. in the frameshape of hard mettles. for we all would fain make glories. it is minely well mint.',\n", + " 'thus as count the costs of liquid courage, a bullyon gauger, stowed stivers pengapung in bulk in hold (fight great finnence! brayvoh, littie bratton!) keen his kenning, the queriest of the crew, with that fellow fearing for his own misshapes, should he be himpself namesakely a foully fallen dissentant from the peripu-lator, sued towerds meade–reid and lynn–duff, rubbing the hodden son of a pookal, leaden be light, lather be dry and it be drownd on all the ealsth beside, how the camel and where the deiffel or when the finicking or why the funicking, who caused the scaffolding to be first removed you give orders, babeling, were their reidey meade answer when on the cutey (the cores-pondent) in conflict of evidence drew a kick at witness but (missed) and for whom in the dyfflun’s kiddy removed the planks they were wanted, boob.',\n", + " 'bump!',\n", + " 'bothallchoractorschumminaroundgansumuminarumdrum-strumtruminahumptadumpwaultopoofoolooderamaunsturnup!',\n", + " '— did do a dive, aped one.',\n", + " '— propellopalombarouter, based two.',\n", + " '— rutsch is for rutterman ramping his roe, seed three. where the muddies scrimm ball. bimbim bimbim. and the maidies scream all. himhim himhim.',\n", + " 'and forthemore let legend go lore of it that mortar scene so cwympty dwympty what a dustydust it razed arboriginally but, luck’s leap to the lad at the top of the ladder, so sartor’s risorted why the sinner the badder! ho ho ho hoch! la la la lach! hillary rillarry gibbous grist to our millery! a pushpull, qq: quiescence, pp: with extravent intervulve coupling.. the savest lauf in the world. paradoxmutose caring, but here in a present booth of balla-clay, barthalamou, where their dutchuncler mynhosts and serves them dram well right for a boors’ interior (homereek van hohm-ryk) that salve that selver is to screen its auntey and has ringround as worldwise eve her sins (pip, pip, pip) willpip futurepip feature apip footloose pastcast with spareshins and flash substittles of noirse-made-earsy from a nephew mind the narrator but give the devil his so long as those sohns of a blitzh call the tuone tuone and thonder alout makes the thurd. let there be. due.',\n", + " '— that’s all murtagh purtagh but whad ababs his dopter? sissed they who were onetime ungkerls themselves, (when the youthel of his yorn shook the bouchal in his bed) twilled along-side in wiping the ace assatiated with their wetting. the lappel of his size? his ros in sola velnere and he sicckumed of homnis terrars. she wends to scoulas in her slalpers. there were no pea-nats in her famalgia so no wumble she tumbled for his famas roalls davors. don’t him forget! a butcheler artsed out of cullege trainity. diddled he daddle a drop of the cradler on delight mebold laddy was stetched? knit wear? and they addled, (or ere the cry of their tongues would be uptied dead) shufflebotham asidled, plus his ducks fore his drills, an inlay of a liddle more lining maught be licensed all at ones, be these same tokens, for-giving a brass rap, sneither a whole length nor a short shift so full as all were concerned.',\n", + " 'burniface, shiply efter, shoply after, at an angle of lag, let flow, brabble brabble and brabble, and so hostily, heavyside breathing, came up with them and, check me joule, shot the three tailors, butting back to moyle herring, bump as beam and buttend, roller and reiter, after the diluv’s own deluge, the seasant samped as skibber breezed in, tripping, dripping, threw the sheets in the wind, the tights of his trunks at tickle to tackle and his rubmelucky truss rehorsing the pouffed skirts of his overhawl. he’d left his stickup in his hand to show them none ill feeling. whatthough for all appentices it had a mushroom on it. while he faced them front to back, then paraseuls round, quite taken atack, sclaiming, howe cools eavybrolly!',\n", + " '— good marrams, sagd he, freshwatties and boasterdes all, as he put into bierhiven, nogeysokey first, cabootle segund, jilling to windwards, as he made straks for that oerasound the snarsty weg for publin, so was his horenpipe lug in the lee off their mouths organs, with his tilt too taut for his tammy all a slaunter and his wigger on a wagger with its tag tucked. up. with a good eastering and a good westering. and he asked from him how the hitch did do this my fand sulkers that mone met the kidballacks which he suttonly remembered also where the hatch was he endnew strandweys he’s that fond sutchenson, a penincular fraimd of mind, fordeed he was langseling to talka holt of hems, clown toff, tye hug fliorten. cablen: clifftop. shelvling tobay oppe-long tomeadow. ware cobbles. posh.',\n", + " '— skibbereen has common inn, by pounautique, with poke-way paw, and sadder raven evermore, telled shinshanks lauwering frankish for his kicker who, through the medium of gallic',\n", + " '— pukkelsen, tilltold. that with some our prowed invisors how their ulstravoliance led them infroraids, striking down and landing alow, against our aerian insulation resistance, two boards that beached, ast one, wid-ness thane and tysk and hanry. prepatrickularly all, they summed. kish met. bound to. and for landlord, noting, nodding, a coast to moor was cause to mear. besides proof plenty, over proof while they either took a heft. or the other swore his eric. heaved two, spluiced the menbrace. heirs at you, brewinbaroon! weth a whistle for methanks.',\n", + " '— good marrams and good merrymills, sayd good mothers gossip, bobbing his bowing both ways with the bents and skerries, when they were all in the old walled of kinkincaraborg (and that they did overlive the hot air of montybunkum upon the coal blasts of mitropolitos let there meeds be the hourihorn), hibernia-ting after seven oak ages, fearsome where they were he had gone dump in the doomering this tide where the peixies would pickle him down to the button of his seat and his sess old soss erinly into the boelgein with the help of divy and jorum’s locquor and shut the door after him to make a rarely fine ran’s cattle of fish. morya mortimor! allapalla overus! howoft had the ballshee tried! and they laying low for his home gang in that eeriebleak mead, with fireball feast and turkeys tumult and paupers patch to provide his bum end. the foe things your niggerhead needs to be fitten for the big water. he made the sign of the ham-mer. god’s drought, he sayd, after a few daze, thinking of all those bliakings, how leif pauses! here you are back on your haw-kins, from blasil the brast to our povotogesus portocall, the furt on the turn of the hurdies, slave to trade, vassal of spices and a dragon-the-market, and be turbot, lurch a stripe, as were you soused methought out of the mackerel. eldsfells! sayd he. a kumpavin on iceslant! here’s open handlegs for one old faulker from the hame folk here in you’s booth! so sell me gundy, sagd the now waging cappon, with a warry posthumour’s expletion, shoots ogos shootsle him or where’s that slob? a bit bite of keesens, he sagd, til dennis, for this jantar (and let the dobblins roast perus,) or a stinger, he sagd, t. d., on a doroughbread ken-nedy’s for patriki san saki on svo fro or my old relogion’s out of tiempor and when i’m soured to the tipple you can sink me lead, he sagd, and, if i get can, sagd he, a pusspull of tomtar-tarum. thirst because homing hand give. allkey dallkey, sayd the shop’s housebound, for he was as deep as the north star (and could tolk sealer’s solder into tankar’s tolder) as might have sayd every man to his beast, and a treat for the trading scow, my cater million falls to you and crop feed a stall! afram. and he got and gave the ekspedient for hombreyhambrey wilcomer what’s the good word. he made the sign on the feaster. cloth be laid! and a disk of osturs for the swanker! allahballah! he was the care-lessest man i ever see but he sure had the most sand. one fish — ball with fixings! for a dan of a ven of a fin of-a son of a gun of a gombolier. ekspedient, sayd he, sonnur mine, shackleton sul-ten! opvarts and at ham, or this ogry osler will oxmaul us all, sayd he, like one familiar to the house, while waldemar was heeling it and maldemaer was toeing it, soe syg he was walking from the bowl at his food and the meer crank he was waiting for the tow of his turn. till they plied him behaste on the fare. say wehrn!',\n", + " '— nohow did he kersse or hoot alike the suit and solder skins, minded first breachesmaker with considerable way on and',\n", + " '— humpsea dumpsea, the munchantman, secondsnipped cutter the curter.',\n", + " '— a ninth for a ninth. take my worth from it. and no mistaenk, they thricetold the taler and they knew the whyed for too. the because of his sosuch. uglymand fit himshemp but throats fill us all! and three’s here’s for repeat of the unium! place the scaurs wore on your groot big bailey bill, he apullajibed, the o’colonel power, latterly distented from the o’conner dan, so promonitory himself that he was obliffious of the headth of hosth that rosed before him, from sheeroskouro, under its zembliance of mardal mansk, like a dun darting dullemitter, with his moultain haares stuck in plostures upon it, (do you kend yon peak with its coast so green?) still trystfully acape for her his gragh knew well in pre- cious memory and that proud grace to her, in gait a movely water, of smile a coolsome cup, with that rarefied air of a montmalency and her quick little breaths and her climbing colour. take thee live will save thee wive? i’ll think uplon, lilady. should anerous enthroproise call homovirtue, duinnafear! the ghem’s to the ghoom be she nere zo zma. obsit nemon! floodlift, her ancient of rights regaining, so yester yidd, even remembrance. and greater grown then in the trifle of her days, a mouse, a mere tittle, trots offwith the whole panoromacron picture. her young-free yoke stilling his wandercursus, jilt the spin of a curl and jolt the broadth of a buoy. the annexandreian captive conquest. ethna prettyplume, hooghly spaight. him her first lap, her his fast pal, for ditcher for plower, till deltas twoport. while this glowworld’s lump is gloaming off and han in hende will grow. through simpling years where the lowcasts have aten of amilikan honey and datish fruits and a bannock of barley on tham the thatcher’s palm. o wanderness be wondernest and now! listen-eath to me, veils of mina! he would withsay, nepertheloss, that is too me mean. i oldways did me walsh and preechup ere we set to sope and fash. now eats the vintner over these contents oft with his sad slow munch for backonham. yet never shet it the brood of aurowoch, not for legions of donours of gamuels. i have performed the law in truth for the lord of the law, taif alif i have held out my hand for the holder of my heart in anna-polis, my youthrib city. be ye then my protectors unto mussa — botomia before the guards of the city. theirs theres is a gentle — meants agreement. womensch plodge. to slope through heather till the foot. join andersoon and co. if the flowers of speech valed the springs of me rising the hiker i hilltapped the murk i mist my blezzard way. not a knocker on his head nor a nick-number on the manyoumeant. with that coldtbrundt natteldster wefting stinks from alpyssinia, wooving nihilnulls from memo-land and wolving the ulvertones of the voice. but his spectrem onlymergeant crested from the irised sea in plight, calvitousness, loss, nngnr, gliddinyss, unwill and snorth. it might have been what you call your change of my life but there’s the chance of a night for my lifting. hillyhollow, valleylow! with the sounds and the scents in the morning.',\n", + " '— i shot be shoddied, throttle me, fine me cowheel for ever, usquebauched the ersewild aleconner, for bringing briars to bem-bracken and ringing rinbus round demetrius for, as you wrinkle wryghtly, bully bluedomer, it’s a suirsite’s stircus haunting hes-teries round old volcanoes. we gin too gnir and thus plinary indulgence makes collemullas of us all. but time is for talerman tasting his tap. tiptoptap, mister maut.',\n", + " 'he made one summery (cholk and murble in lonestime) of his the three swallows like he was muzzling moselems and torched up as the faery pangeant fluwed down the hisophenguts, a slake for the quicklining, to the tickle of his tube and the twobble of his fable, o, fibbing once upon a spray what a queer and queasy spree it was. plumped.',\n", + " 'which both did. prompt. eh, chrystal holder? save ampster-dampster that had rheumaniscences in his netherlumbs.',\n", + " '— by the drope in his groin, ali slupa, thinks the cappon, plumbing his liners, we were heretofore.',\n", + " '— and be the coop of his gobbos, reacher the thaurd, thinks your girth fatter, apopo of his buckseaseilers, but where’s horace’s courtin troopsers?',\n", + " '— i put hem behind the oasthouse, sagd pukkelsen, tuning wound on the teller, appeased to the cue, that double dyode dealered, and he’s wallowing awash swill of the tarra water. and it marinned down his gargantast trombsathletic like the marousers of the gulpstroom. the kersse of wolafs on him, shitateyar, he sagd in the fornicular, and, at weare or not at weare, i’m sigen no stretcher, for i carsed his murhersson goat in trotthers with them newbuckle-noosers behigh in the fire behame in the oasthouse. hops! sagd he.',\n", + " '— smoke and coke choke! lauffed till the tear trickled drown a thigh the loafers all but a sheep’s whosepants that swished to the lord he hadn’t and the starer his story was talled to who felt that, the fierifornax being thurst on him motophosically, as omar sometime notes, such a satuation, debauchly to be watched for, would empty dempty him down to the ground.',\n", + " '— and hopy tope! sagd he, anded the enderer, now dyply hypnotised or hopeseys doper himself. and kersse him, sagd he, after inunder tarrapoulling, and the shines he cuts, shinar, the screeder, the stitchimesnider, adepted to nosestorsioms in his budinholder, cummanisht, sagd he, (fouyoufoukou!) which goes in the ways smooking publics, sagd he, bomboosting to be in thelitest civille row faction for a dubblebrasterd navvygaiterd, (flick off that hvide aske, big head!) sagd he, the big bag of my hamd till hem, tollerloon, sagd he, with his pudny bun brofkost when he walts meet the bangd. i will put his fleas of wood in the flour, and he sagd, behunt on the oatshus, the not wellmade one, sagd he, the kersse of my armsore appal this most unmentionablest of men (mundering eeriesk, if he didn’t scalded him all the shimps names in his gitter!) a coathemmed gusset sewer, sagd he, his first cudgin is an innvalet in the unitred stables which is not feed tonights a kirtle offal fisk and he is that woe worstered wastended shootmaker whatever poked a noodle in a clouth!',\n", + " 'so for the second tryon all the meeting of the acarras had it. how he hised his bungle oar his shourter and cut the pinter offhis pourer and lay off for fellagulphia in the farning. from his dhruimadhreamdhrue back to brighten-pon-the-baltic, from our lund’s rund turs bag til threathy hoeres a wuke. ugh!',\n", + " '— stuff, taaffe, stuff! interjoked it his wife’s hopesend to the boath of them consistently. come back to may aileen.',\n", + " '— ild luck to it! blastfumed the nowraging scamptail, in flating furies outs trews his cammelskins, the flashlight of his ire wackering from the eyewinker on his masttop. and aye far he fared from afferik arena and yea near he night till blawland bearring, baken be the brazen sun, buttered be the snows. and the sea shoaled and the saw squalled. and, soaking scupper, didn’t he drain',\n", + " 'a pause.',\n", + " 'infernal machinery (serial number: bullysacre, dig care a dig) having thus passed the buck to billy back from jack (finder the keeper) as the baffling yarn sailed in circles it was now high tide for the reminding pair of snipers to be suitably punished till they had, like the pervious oelkenner done, liquorally no more powers to their elbow. ignorinsers’ bliss, therefore, their not to say rifle butt target, none too wisefolly, poor fish, (he is eating, he is spun, is milked, he dives) upholding a lampthorne of lawstift as wand of welcome to all men in bonafay, (and the corollas he so has saved gainsts the virus he has thus injected!) discoastedself to that kipsie point of its dublin bar there, breaking and entering, from the outback’s dead heart, glasthule bourne or boehernapark nolagh, by wattsismade or bianconi, astraylians in island, a wellknown tall hat blown in between houses by a nightcap of that silk or it might be a black velvet and a kiber galler dragging his hunker, were signalling gael warnings towards wazwollenzee haven to give them their beerings, east circular route or elegant central highway. open, ’tis luck will have it! lifeboat alloe, noeman’s woe, hircups emptybolly! with winkles whelks and cocklesent jelks. let be buttercup eve lit by night in the phoenix! music. and old lotts have funn at flammagen’s ball. till irinwakes from slumber deep. how they succeeded by courting daylight in saving darkness he who loves will see.',\n", + " 'business. his bestness. copeman helpen.',\n", + " 'contrescene.',\n", + " 'he cupped his years to catch me’s to you in what’s yours as minest to hissent, giel as gail, geil as gaul, odorozone, now our-menial servent, blanding rum, milk and toddy with i hand it to you. saying whiches, see his bow on the hapence, with a pat-tedyr but digit here, he scooped the hens, hounds and horses biddy by bunny, with an arc of his covethand, saved from the drohnings they might oncounter, untill his cubid long, to hide in dry. aside. your sows tin the topple, dodgers, trink me dregs! zoot!',\n", + " 'and with the gust of a spring alice the fossickers and swaggelers with him on the hoof from down under piked forth desert roses in that mulligar scrub.',\n", + " 'reenter ashe junior. peiwei toptip, nankeen pontdelounges. gives fair day. cheroot. cheevio!',\n", + " 'off.',\n", + " '— take off thatch whitehat (lo, kersse come in back bespoking of loungeon off the boildawl stuumplecheats for rushirishis irush-lrish, dangieling his old conan over his top gallant shouldier so was, lao yiu shao, he’s like more look a novicer on the nevay).',\n", + " '— tick off that whilehot, you scum of a botch, (of kersse who, as he turned out, alas, hwen ching hwan chang, had been mocking his hollaballoon a sample of the costume of the country).',\n", + " '— tape oaf that saw foull and sew wrong, welsher, you suck of a thick, stock and the udder, and confiteor yourself (for bekersse he had cuttered up and misfutthered in the most multiplest manner for that poor old bridge’s masthard slouch a shook of cloakses the wise, hou he pouly hung hoang tseu, his own fitther couldn’t nose him).',\n", + " 'chorus: with his coate so graye. and his pounds that he pawned from the burning.',\n", + " '— and, haikon or hurlin, who did you do at doyle today, my horsey dorksey gentryman. serge mee, suit! sazd he, tersey ker-sey. and when tersse had sazd this kersse stood them the whole koursse of training how the whole blazy raze acurraghed, from lambkinsback to sliving board and from spark to phoenish. and he tassed him tartly and he sassed him smartly, tig for tager, strop for stripe, as long as there’s a lyasher on a kyat. and they peered him beheld on the pyre.',\n", + " 'and it was so. behold.',\n", + " '— same capman no nothing horces two feller he feller go where. isn’t that effect? gig for gag, asked there three newcom-mers till knockingshop at the ones upon a topers who, while in admittance to that impedance, as three as they were there, they had been malttreating themselves to their health’s contempt.',\n", + " '— that’s fag for fig, metinkus, confessed, mhos for mhos, those who, would it not be for that dielectrick, were upon the point of obsoletion, and at the brink of from the pillary of the nilsens and from the statutes of the kongbullies and from the millestones of ovlergroamlius libitate nos, domnial!',\n", + " '— and so culp me goose, he sazd, szed the ham muncipated of the first course, recoursing, all cholers and coughs with his beauw on the bummell, the bugganeering wanderducken, he sazd, (that his pumps may ship awhoyle shandymound of the dussard), the coarsehair highsaydighsayman, there’s nice tugs he looks, (how you was, ship alouset?) he sazd, the bloedaxe bloodooth baltxe-bec, that is crupping into our raw lenguage navel through the lumbsmall of his hawsehole, he sazd, donconfounder him, voyaging after maidens, belly jonah hunting the polly joans, and the hurss of all portnoysers befaddle him, he sazd, till i split in his flags, he sazd, one to one, the landslewder, after donnerbruch fire. reefer was a wenchman. one can smell off his wetsments how he is coming from a beach of promisck. where is that old muttiny, shall i ask? free kicks he will have from me, turncoats, in bar bartley if i wars a fewd years ago. meistr capteen gaascooker, a salestrimmer! as he was soampling me ledder, like pulp, and as i was trailing his fumbelums, like hulp, he’ll fell the fall of me faus, he sazd, like yulp! the goragorridgorballyed pushkalsson, he sazd, with his bellows pockets fulled of potchtatos and his fox in a stomach, a disagrees to his ramskew coddlelecherskithers’ zirkuvs, drop down dead and deaf, and there is never a teilwrmans in the feof fife of iseland or in the wholeabelongd of skunkinabory from drumadunderry till the rumnants of mecckrass, could milk a colt in thrushes foran furrow follower width that a hole in his tale and that hell of a hull of a hill of a camelump bakk. fadgest-fudgist!',\n", + " 'upon this dry call of selenium cell (that horn of lunghalloon, riland’s in peril!) with its doomed crack of the old damn ukonnen power insound in it the lord of the saloom, as if for a flash sala-magunnded himself, listed his tummelumpsk pack and hearinat presently returned him, ambilaterally alleyeoneyesed, from their uppletoned layir to his beforetime guests, that bunch of palers on their round, timemarching and petrolling how, who if they were abound to loose a laugh (toni lampi, you booraascal!) they were abooned to let it as the leashed they might do when they felt (o, the wolf he’s on the walk, sees his sham cram bokk!) their joke was coming home to them, the steerage way for stabling, ghus-torily spoeking, gen and gang, dane and dare, like the dud spuk of his first foetotype (trolldedroll, how vary and likely!), the filli-bustered, the fully bellied. with the old sit in his shoulders, and the new satin atlas onder his uxter, erning his breadth to the swelt of his proud and, picking up the emberose of the lizod lights, his tail toiled of spume and spawn, and the bulk of him, and hulk of him as whenever it was he reddled a ruad to riddle a rede from the sphinxish pairc while ede was a guardin, ere love a side issue. they hailed him cheeringly, their encient, the murrainer, and wallruse, the merman, ye seal that lubs you lassers, thallasee or tullafilmagh, when come of uniform age.',\n", + " '— heave, coves, emptybloddy!',\n", + " 'and ere he could catch or hook or line to suit their saussyskins, the lumpenpack. underbund was overraskelled. as',\n", + " '— sot! sod the tailors opsits from their gabbalots, change all that whole set. shut down and shet up. our set, our set’s allohn.',\n", + " 'and they poured em behoiled on the fire. scaald!',\n", + " 'rowdiose wodhalooing. theirs is one lessonless missage for good and truesirs. will any persen bereaved to be passent bring-back or rumpart to the hoved politymester. clontarf, one love, one fear. ellers for the greeter glossary of code, callen hom: finucane–lee, finucane–law.',\n", + " 'am. dg.',\n", + " 'welter focussed.',\n", + " 'wind from the nordth. warmer towards muffinbell, lull.',\n", + " 'as our revelant colunnfiller predicted in last mount’s chattiry sermon, the allexpected depression over schiumdinebbia, a bygger muster of veirying precipitation and haralded by faugh sicknells, (hear kokkenhovens ekstras!) and umwalloped in an unusuable suite of clouds, having filthered through the middelhav of the same gorgers’ kennel on its wage wealthwards and incursioned a sotten retch of low pleasure, missed in some parts but with lucal drizzles, the outlook for tomarry (streamstress mandig) beamed brider, his ability good.',\n", + " 'what hopends to they?',\n", + " 'giant crash in aden. birdflights confirm abbroaching nub- tials. burial of lifetenant–groevener hatchett, r.i.d. devine’s previdence.',\n", + " 'ls. de.',\n", + " 'art thou gainous sense uncompetite! limited. anna lynchya pourable! one and eleven. united we stand, even many offered. don’t forget. i wish auspicable thievesdayte for the stork dyrby. it will be a thousand’s a won paddies. and soon to bet. on drums of bliss. with hapsalap troth, hipsalewd prudity, hopesalot hon-nessy, hoopsaloop luck. after when from midnights unwards the fourposter harp quartetto. (kiskiviikko, kalastus. torstaj, tanssia. perjantaj, peleja. lavantaj ja sunnuntaj, christianismus kirjallisuus, kirjallisuus christianismus.) whilesd this pellover his finnisch.',\n", + " '— comither, ahorace, thou mighty man of valour, elderman adaptive of capel ysnod, and tsay-fong tsei-foun a laun bricks-number till i’ve fined you a faulter-inlaw, to become your son — to-be, gentlemens tealer, generalman seelord, gosse and bosse, hunguest and horasa, jonjemsums both, in sailsmanship, szed the head marines talebearer, then sayd the ships gospfather in the scat story to the husband’s capture and either you does or he musts ant this moment same, sayd he, so let laid pacts be being betving ye, he sayd, by my main makeshift, he sayd, one fisk and one flesk, as flat as, aestmand addmundson you, you’re iron slides and so hompety domp as paddley mac namara here he’s a hardy canooter, for the two breasts of banba are her soilers and her toilers, if thou wilt serve idyall as thou hast sayld. brothers boathes, brothers coathes, ye have swallen blooders’ oathes. and gophar sayd unto glideon and sayd he to the nowedding captain, the rude hunner-able humphrey, who was praying god of clothildies by the seven bosses of his trunktarge he would save bucklesome when she wooed belove on him, comeether, sayd he, my merrytime mare-lupe, you wutan whaal, sayd he, into the shipfolds of our quad — rupede island, bless madhugh, mardyk, luusk and cong! blass neddos bray! and no more of your maimed acts after this with your kowtoros and criados to every tome, thick and heavy, and our onliness of his revelance to your ultitude. the illfollowable staying in wait for you with the winning word put into his mouth or be the hooley tabell, as horrocks toler hath most cares to call it, i’ll rehearse your comeundermends and first mardhyr you en-tirely. as puck as that paddeus picked the pun and left the lollies off the foiled. a trinity judge will crux your boom. pat is the man for thy. ay ay! and he pured him beheild of the ouishguss, mingling a sign of the cruisk. i popetithes thee, ocean, sayd he, oscarvaughther, sayd he, erievikkingr, sayd he, intra trifum triforium trifoliorum, sayd he, onconditionally, forfor furst of giel-gaulgalls and hero chief explunderer of the clansakiltic, sayd he, the streameress mastress to the sea aase cuddycoalman’s and let this douche for you as a wholly apuzzler’s and for all the puk-kaleens to the wakes of you, sayd he, out of the hellsinky of the howtheners and be danned to ye, sayd he, into our roomyo connellic relation, sayd he, from which our this pledge is given, tera truly ternatrine if not son towards thousand like expect chrisan athems to which i osker your godhsbattaring, saelir, for as you gott kvold whereafter a gooden diggin and with gooder enscure from osion buck fared agen fairioes feuded hailsohame til edar in that the loyd mave hercy on your sael! anomyn and awer. spickinusand.',\n", + " '— nansense, you snorsted? he was haltid considerable agenst all religions overtrow so hworefore the thokkurs pokker the big-bug miklamanded storstore exploder would he be whulesalesolde daadooped by priest gudfodren of the sacredhaunt suit in diaeblen–balkley at domnkirk saint petricksburg? but ear this:',\n", + " '— and here, aaherra, my rere admirable peadar poulsen, sayd he, consistently, to the secondnamed sutor, my lately lamented sponsorship, comesend round that wine and lift your horn, sayd he, to show you’re a skolar for, winter you likes or not, we brought your summer with us and, tomkin about your lief eurek-ason and his undishcovery of americle, be the rolling forties, he sayd, and on my sopper crappidamn, as harris himself says, to let you in on some crismion dottrin, here is the ninethest pork of a man whisk swimmies in dybblin water from ballscodden easthmost till thyrston’s lickslip and, sayd he, (whiles the heart of lukky swayn slaughed in his icebox for to think of all the soorts of smukklers he would behave in juteyfrieze being forelooper to her) praties peel to our goodsend brandonius, filius of a cara, spouse to fynlogue, he has the nicesth pert of a nittlewoman in the house, la chito, la chato, la charmadouiro, tina-bat-talur, cif for your fob and a tesura astore for you, eslucylamp aswhen the surge seas sombren, that he daughts upon of anny livving plusquebelle, to child and foster, that’s the lippeyear’s wonder of totty go, newschool, two titty too at win winnie won, tramity trimming and funnity fare, with a grit as hard as the trent of the thimes but a touch as saft as the dee in flooing and never a hyderow jenny the like of her lightness at look and you leap, rheadoromanscing long evmans invairn, about little anny roners and all the lavinias of ester yours and pleding for them to herself in the periglus glatsch hangs over her trickle bed, it’s a piz of fortune if it never falls from the stuffel, and, when that mallaura’s over till next time and all the prim rossies are out dressparading and the tubas tout tout for the glowru of their god, making every dinny dingle after her down the dargul dale and (wait awhile, blusterbuss, you’re marchadant too forte and don’t start furlan your ladins till you’ ve learned the lie of her landuage!), when it’s summwer calding and she can hear the pianutunar beyant the bayondes in combria sleepytalking to the wiltsh muntons, titting out through her droemer window for the flyend of a touchman over the wishtas of english strand, when kilbarrack bell pings saksalaisance that concessas with sinbads may (pong!), where our dollimonde sees the phantom shape of mr fortunatus wright since winksome miss bulkeley made loe to her wrecker and he took her to be a rover, o, and playing house of ivary dower of gould and gift you soil me peepat my prize, which its a blue loogoont for her in a bleakeyed seusan if she can’t work her mireiclles and give norgeyborgey good airish timers, while her fresh racy turf is kindly kindling up the lovver with the flu, with a roaryboaryellas would set an ei-weddyng on fire, let aloon an old humpopolamos with the boomar — poorter on his brain, aiden bay scye and dye, aasbukividdy, twentynine to her dozen and coocoo him didulceydovely to his old cawcaws huggin and munin for his strict privatear which there’s no pure rube like an ool pool roober when your pullar beer turns out bruin o’luinn and beat his barge into a battering pram with her wattling way for cubblin and, be me fairy fay, sayd he, the marriage mixter, to kersse, son of joe ashe, her coax-fonder, wiry eyes and winky hair, timkin abeat your andraws meltons and his lovsang of the short and shifty, i will turn my thinks to things alove and i will speak but threes ones, sayd he, my truest patrions good founter, poles a port and zones asunder, tie up in hates and repeat at luxure, you can better your tooblue prodestind arson, tyler bach, after roundsabouts and donochs and the volumed smoke, though the clonk in his stumble strikes warn, and were he laid out on that counter there like a slavocrates amongst his skippies, when it comes to the ride onerable, sayd he, that’s to make plain nanny ni sheeres a full dinamarqueza, and all needed for the lay, from the hursey on the montey with the room in herberge down to forkpiece and bucklecatch, (elding, my elding! and lif, my lif!) in the pravacy of the pirmanocturne, hap, sayd he, at that meet hour of night, and hop, sayd he, ant the fyrsty annas everso thried (whiles the breath of huppy hulles-pond swumped in his seachest for to renumber all the mallyme — dears’ long roll and call of sweetheart emmas that every had a port in from coxenhagen till the brottels on the nile), while taylight is yet slipping under their pillow, (ill omens on kitty cole if she’s spilling laddy’s measure!) and before sing mattins in the fields, ringsengd ringsengd, bings heri the concorant erho, and the referinn fuchs gutmann gives us i’ll bell the welled or the steeplepoy’s revanger and all thingavalley knows for its never dawn in the dark but the deed comes to life? and raptist bride is aptist breed (tha lassy! tha lassy!), and, to buoy the hoop within us springing, ’tis no timbertar she’ll have then in her arms-brace to doll the dallydandle, our fiery quean, upon the night of the things of the night of the making to stand up the double tet of the oversear of the seize who cometh from the mighty deep and on the night of making horuse to crihumph over his enemy, be the help of me cope as so pluse the riches of the roed-shields, with elizabeliza blessing the bedpain, at the willbedone of yinko jinko randy, come bastabasco and hippychip eggs, she will make a suomease pair and singlette, jodhpur smalls and tailor-less, a copener’s cribful, leaf, bud and berry, the divlin’s own little mimmykin puss, (hip, hip, horatia!) for my old comrhade salty-mar here, briganteen — general sir a. i. magnus, the flapper — nooser, master of the good lifebark ulivengrene of onslought,- and the homespund of her hearth, (fuss his farther was the norse norse east and muss his mother was a gluepot) and, gravydock or groovy anker, and a hulldread pursunk manowhood, who (with a chenchen for his delight time and a bonzeye nappin through his doze) he is the bettest bluffy blondblubber of an olewidgeon what overspat a skettle in a skib.',\n", + " 'cawcaught. coocaged.',\n", + " 'and dub did glow that night. in fingal of victories. cann-matha and cathlin sang together. and the three shouters of glory. ·yelling halfviewed their harps. surly tuhal smiled upon drear darthoola: and roscranna’s bolgaboyo begirlified the daughter of cormac. the soul of everyelsesbody rolled into its olesoleself. a doublemonth’s licence, lease on mirth, while hooney-moon and her flame went huneysuckling. holyryssia, what boom of bells! what battle of bragues on sandgate where met the bobby mobbed his bibby mabbing through the ryce. even tombs left doss and dunnage down in demidoff’s tomb and drew on the dournailed clogs that morty manning left him and legged in by ghoststown gate, like pompei up to date, with a sprig of white-boys heather on his late luke elcock’s heirloom. and some say they seen old dummydeaf with a leaf of bronze on his cloak so grey, trooping his colour a pace to the reire. and as owfally posh with his halfcrown jool as if he was the granjook meckl or paster de grace on the route de l’ep‚e. it was joobileejeu that all sorts’ jour. freestouters and publicranks, hafts on glaives. you could hear them swearing threaties on the cymylaya mountains, man. and giving it out to the ould fathach and louth-mouthing after the healy mealy with an enfysis to bring down the rain of tarar. nevertoletta! evertomind! the grandest bethehailey seen or heard on earth’s conspectrum since scape the goat, that gafr, ate the suenders bible. hadn’t we heaven’s lamps to hide us? yet every lane had its lively spark and every spark had its several spurtles and each spitfire spurtle had some trick of her trade, a tease for ned, nook’s nestle for fred and a peep at me mow for peer pol. so that father matt hughes looked taytotally threbled. but danno the dane grimmed. dune. ’twere yeg will elsecare doatty lanv meet they dewscent hyemn to cannons’ roar and rifles’ peal vill shantey soloweys sang! for there were no more tyrrhanees and for laxembraghs was pass-thecupper to our lader’s. and it was dim upon the floods only and there was day on all the ground.',\n", + " 'thus street spins legends while wharves woves tales but some family fewd felt a nick in their name. old vickers sate down on their airs and straightened the points of their lace. red rowleys popped out of their lairs and asked what was wrong with the race. mick na murrough used dripping in layers to shave all the furze off his face. the burke–lees and coyle–finns paid full feines for their sinns when the cap and miss coolie were roped.',\n", + " 'rolloraped.',\n", + " 'with her banbax hoist from holder, zig for zag through pool and polder, cheap, cheap, cheap and laughing jack, all augurs scorenning, see the bolche your pictures motion and kitzy kleinsuessmein eloping for that holm in finn’s hotel fiord, nova norening. where they pulled down the kuddle and they made fray and if thee don’t look homey, well, that dook can eye mae.',\n", + " 'he goat a berth. and she cot a manege. and wohl’s gorse mundom ganna wedst.',\n", + " 'knock knock. war’s where! which war? the twwinns. knock knock. woos without! without what? an apple. knock knock.',\n", + " 'the kilder massed, one then and uhindred, (harefoot, birdy-hands, herringabone, beesknees), and they barneydansked a kathareen round to know the who and to show the howsome. why was you hiding, moder of moders? and where was hunty, poppa the gun? pointing up to skyless heaven like the spoon out of sergeantmajor’s tay. which was the worst of them phaymix cupplerts? he’s herd of hoarding and her faiths is altared. becoming ungoing, their seeming sames for though that liamstone deaf do his part there’s a windtreetop whipples the damp off the mourning. but tellusit allasif wellasits end. and the lunger it takes the swooner they tumble two. he knows he’s just thrilling and she’s sure she’d squeam. the threelegged man and the tulip-pied dewydress. lludd hillmythey, we’re brimming to hear! the durst he did and the first she ever? peganeen bushe, this isn’t the polkar, catch as you cancan when high land fling! and you tim tommy melooney, i’ll tittle your barents if you stick that pigpin upinto meh!',\n", + " 'so in the names of the balder and of the sol and of the holli-chrost, ogsowearit, trisexnone, and by way of letting the aandt out of her grosskropper and leading the mokes home by their gribes, whoopsabout a plabbaside of plobbicides, alamam alemon, poison kerls, on this mounden of delude, and in the high places of delude of isreal, which is haraharem and the diublin’s owld mounden over against vikens, from your tarns, thwaites and thorpes, withes, tofts and fosses, fells, haughs and shaws, lunds, garths and dales, mensuring the megnominous as so will is the littleyest, the myrioheartzed with toroidal coil, eira area round wantanajocky, fin above wave after duckydowndivvy, trader arm aslung beauty belt, the formor velican and nana karlikeevna, sommerlad and cinderenda, valtivar and viv, how big bil brine borumoter first took his gage at lil lolly lavvander waader since when capriole legs covets limbs of a crane and was it the twylyd or the mounth of the yare or the feint of her smell made the seo-men assalt of her (in imageascene all: whimwhim whimwhim). to the laetification of disgeneration by neuhumorisation of our kristianiasation. as the last liar in the earth begeylywayled the first lady of the forest. though toot’s pardoosled sauve l’hum-mour! for the joy of the dew on the flower of the fleets on the fields of the foam of the waves of the seas of the wild main from borneholm has jest come to crown. snip snap snoody. noo err historyend goody. of a lil trip trap and a big treeskooner for he put off the ketyl and they made three (for fie!) and if hec dont love alpy then lad you annoy me. for hanigen with hunigen still haunt ahunt to finnd their hinnigen where pappappapparrassannuaragheallachnatull-aghmonganmacmacmacwhackfalltherdebblenonthedubblandadd — ydoodled and anruly person creeked a jest. gestapose to parry off cheekars or frankfurters on the odor. fine again, cuoholson! peace, o wiley!',\n", + " 'such was the act of goth stepping the tolk of doolin, drain and plantage, wattle and daub, with you’ll peel as i’ll pale and we’ll pull the boath toground togutter, testies touchwood and shenstone unto pop and puma, calf and condor, under all the gaauspices (incorporated), the chal and his chi, their roammerin over, gribgrobgrab reining trippetytrappety (so fore shalt thou flow, else thy cavern hair!) to whom she (anit likenand please-thee!). till sealump becamedump to bumpslump a lifflebed, (altol…, allamarsch! o gu‚, o gu‚!). kaemper daemper to jetty de waarft, all the weight of that mons on his little ribbeunuch! him that gronde old mand to be that haard of heaering (afore said) and her the petty tondur with the fix in her changeable eye (which see), lord, me lad, he goes with blowbierd, leedy, plasheous stream. but before that his loudship was converted to a landshop there was a little theogamyjig incidence that hoppy-go-jumpy junuary morn when he colluded with the cad out on the beg amudst the fiounaregal gaames of those oathmassed fenians for whome he’s forcecaused a bridge of the piers, at inverleffy, mating pontine of their engagement, synnbildising graters and things, eke ysendt? o nilly, not all, here’s the fust cataraction! as if ever she cared an assuan damm about her harpoons sticking all out of him whet between phoenix his calipers and that psourdonome sheath. sdrats ye, gus paudheen! kenny’s thought ye, dinny oozle! while the cit was leaking asphalt like a suburbiaurealis in his rure was tucking to him like old booths, booths, booths, booths.',\n", + " 'enterruption. check or slowback. dvershen.',\n", + " 'why, wonder of wenchalows, what o szeszame open, v doer s t doing? v door s being. but how theng thingajarry miens but this being becoming n z doer? k? an o. it is ne not him what foots like a glove, shoehandschiner pad podomkin. sooftly, anni slavey, szszuszchee is slowjaneska.',\n", + " 'the aged crafty nummifeed confusionary overinsured ever-iapsing accentuated katekattershin clopped, clopped, clopped, darsey dobrey, back and along the danzing corridor, as she was going to pimpim him, way boy wally, not without her comple-ment of cavarnan men, between the two deathdealing allied divisions and the lines of readypresent fire of the corkedagains up-stored, taken in giving the saloot, band your hands going in, bind your heads coming out, and remoltked to herselp in her serf’s alown, a weerpovy willowy dreevy drawly and the patter of so familiars, farabroads and behomeans, as she shure sknows, boof for a booby, boo: new uses in their mewseyfume. the jammesons is a cook in his hair. and the juinnesses is a rapin his hind. and the bullingdong caught the wind up. dip.',\n", + " 'and the message she braught belaw from the missus she bragged abouve that had her agony stays outsize her sari chemise, blancking her shifts for to keep up the fascion since the king of all dronnings kissed her beeswixed hand, fang (pierce me, hunky, i’m full of meunders!), her fize like a tubtail of mondayne clothes, fed to the chaps with working medicals and her birthright pang that would split an atam like the forty pins in her hood, was to fader huncher a howdydowdy, to mountainy mots in her amnest plein language, from his fain a wan, his hot and tot lass, to pierce his ropeloop ear, how, podushka be prayhasd, now the sowns of his loins were awinking and waking and his dorter of the hush lillabilla lullaby (lead us not into reformication with the poors in your thingdom of gory, o moan!), once after males, nonce at a time, with them murphy’s puffs she dursted with gnockmeggs and the bramborry cake for dour dorty dompling obayre mattom beetom_and epsut the pfot and if he was whishtful to licture her caudal with chesty chach from his dauberg den and noviny news from naul or toplots talks from morrienbaths or a parrotsprate’s cure for ensevelised lethurgies, spick’s my spoon and the veriblest spoon, ’twas her hour for the chamber’s ensallycopodium with love to melost panny kostello from x.y. zid for to folly billybobbis gibits porzy punzy and she was a wanton for de marera to take her genial glow to bed.',\n", + " '— this is time for my tubble, reflected mr ‘gladstone browne’ in the toll hut (it was choractoristic from that ‘man of delgany’). dip.',\n", + " '— this is me vulcanite smoking, profused mr ‘bonaparte nolan’ under the natecup (one feels how one may hereby reekig-nites the ‘ground old mahonagyan’). dip.',\n", + " '— and this is defender of defeater of defaulter of deformer of the funst man in danelagh, willingtoned in with this glance dowon his browen and that born appalled noodlum the panellite pair’s cummal delimitator, odding: oliver white, he’s as tiff as she’s tight. and thisens his speak quite hoarse. dip.',\n", + " 'in reverence to her midgetsy the lady of the comeallyous as madgestoo our own one’s goff stature. prosim, prosit, to the krk n yr nck!',\n", + " 'o rum it is the chomicalest thing how it pickles up the punchey and the jude. if you’ll gimmy your thing to me i will gamey a sing to thee. stay where you’re dummy! to get her to go ther. he banged the scoop and she bagged the sugar while the whole pub’s pobbel done a stare. on the mizzatint wall. with its chromo for all, crimm crimms. showing holdmenag’s asses sat by allme-neck’s men, canins to ride with em, canins that lept at em, woollied and flundered.',\n", + " 'so the katey’s came and the katey’s game. as so gangs sludge-nose. and that henchwench what hopped it dunneth there duft the. duras.',\n", + " '(silents)',\n", + " 'yes, we’ve conned thon print in its gloss so gay how it came from finndlader’s yule to the day and it’s hey tallaght ho on the king’s highway with his hounds on the home at a turning. to donnicoombe fairing. millikin’s pass. when visiting at izd-la-chapelle taste the lipe ofthe waters from carlowman’s cup.',\n", + " 'it tellyhows its story to their six of hearts, a twelve-eyed man; for whom has madjestky who since is dyed drown reign before the izba.',\n", + " 'au! au! aue! ha! heish!',\n", + " 'as stage to set by ritual rote for the grimm grimm tale of the four of hyacinths, the deafeeled carp and the bugler’s dozen of leagues-inamour or how holispolis went to parkland with mabby and sammy and sonny and sissy and mop’s varlet de shambles and all to find the right place for it by peep o’skirt or pipe a skirl when the hundt called a halt on the chivvychace of the ground sloper at that ligtning lovemaker’s thender apeal till, between wandering weather and stable wind, vastelend hosteil-end, neuziel and oltrigger some, bullyclubber burgherly shut the rush in general.',\n", + " 'let us propel us for the frey of the fray! us, us, beraddy!',\n", + " 'ko niutirenis hauru leish! a lala! ko niutirenis haururu laleish! ala lala! the wullingthund sturm is breaking. the sound of maormaoring the wellingthund sturm waxes fuer-cilier. the whackawhacks of the sturm. katu te ihis ihis! katu te wana wana! the strength of the rawshorn generand is known throughout the world. let us say if we may what a weeny wukeleen can do.',\n", + " 'au! au! aue! ha! heish! a lala!',\n", + " '— paud the roosky, weren’t they all of them then each in his different way of saying calling on the one in the same time hibernian knights underthaner that was having, half for the laugh of the bliss it sint barbaras another doesend end once tale of a tublin wished on to him with its olives ocolombs and its hills owns ravings and tutty his tour in his nowhare’s yarcht. it was before when aimee stood for arthurduke for the figger in pro-fane and fell from grace so madlley for fill the flatter fellows. (they were saying). and it was the lang in the shirt in the green. of the wood, where obelisk rises when odalisks fall, major threft on the make and jollyjacques spindthrift on the merry (o mr mathurin, they were calling, what a topheavy hat you’re in! and there aramny maeud, then they were saying, these so piou- pious!). and it was cyclums cyclorums after he made design on the corse and he want to mess on him (enterellbo add all taller danis), back, seater and sides, and he applied (i’m amazingly sorracer!) the wholed bould shoulderedboy’s width for fullness, measures for messieurs, messer’s massed, (they were saycalling again and agone and all over agun, the louthly meathers, the loudly meaders, the lously measlers, six to one, bar ones).',\n", + " 'and they pled him beheighten the firing. dope.',\n", + " 'maltomeetim, alltomatetam, when a tale tarries shome shunter shove on. fore auld they wauld to pree.',\n", + " 'pray.',\n", + " 'of this mr a (tillalaric) and these wasch woman (dapple-hued), fhronehflord and feeofeeds, who had insue keen and able and a spindlesong aside, nothing more is told until now, his awebrume hour, her sere sahara of sad oakleaves. and then. be old. the next thing is. we are once amore as babes awondering in a wold made fresh where with the hen in the storyaboot we start from scratch.',\n", + " 'so the truce, the old truce and nattonbuff the truce, boys. drouth is stronger than faction. slant. shinshin. shinshin.',\n", + " '— it was of the grant, old gartener, qua golden meddlist, publius manlius, fuderal private, (his place is his poster, sure, they said, and we’re going to mark it, sore, they said, with a carbon caustick manner) bequother the liberaloider at his petty corpore-lezzo that hung caughtnapping from his baited breath, it was of him, my wife and i thinks, to feel to every of the younging fruits, tenderosed like an atalantic’s breastswells or, on a second wreathing, a bright tauth bight shimmeryshaking for the welt of his plow. and wher-o the peckadillies at his wristsends meetings be loving so lightly dovessoild the candidacy, me wipin eye sinks, of his softboiled bosom should be apparient even to our illicterate of nullatinenties.',\n", + " 'all to which not a lot snapped the nolan of the calabashes at his whilom eweheart photognomist who by this sum taken was as much incensed by saint bruno as that what he had consummed was his own panegoric, and wot a lout about it if it was only a pippappoff pigeon shoot that gracesold getrunner, the man of centuries, was bowled out by judge, jury and umpire at batman’s biff like a witchbefooled legate. dupe.',\n", + " 'his almonence being alaterelly in dispensation with his three oldher patrons’ aid, providencer’s divine cow to milkfeeding mleckman, bonafacies to solafides, what matter what all his freudzay or who holds his hat to harm him, let hutch just keep on under at being a vanished consinent and let annapal livibel prettily prattle a lude all her own. and be that semeliminal salmon solemonly angled, ingate and outgate. a truce to lovecalls, dulled in warclothes, maleybags, things and bleakhusen. leave the letter that never begins to go find the latter that ever comes to end, written in smoke and blurred by mist and signed of solitude, sealed at night.',\n", + " 'simply. as says the mug in the middle, nay brian nay noel, ney billy ney boney. imagine twee cweamy wosen. suppwose you get a beautiful thought and cull them sylvias sub silence. then inmaggin a stotterer. suppoutre him to been one bigger-master omnibil. then lustily (tutu the font and tritt on the boks — woods like gay feeters’s dance) immengine up to three longly lurking lobstarts. fair instents the will woolsley wellaslayers. pet her, pink him, play pranks with them. she will nod ampro-perly smile. he may seem to appraisiate it. they are as piractical jukersmen sure to paltipsypote. feel the wollies drippeling out of your fingathumbs. says to youssilves (floweers have ears, heahear!) solowly: so these ease budlim! how do, dainty dau-limbs? so peached to pick on you in this way, prue and simple, pritt and spry! heyday too, malster faunagon, and hopes your hahititahiti licks the mankey nuts! and oodlum hoodlum dood-lum to yes, donn, teague and hurleg, who the bullocks brought you here and how the hillocks are ye?',\n", + " 'we want bud. we want bud budderly. we want bud budderly boddily. there he is in his borrisalooner. the man that shunned the rucks on gereland. the man thut won the bettlle of the bawll. order, order, order, order! and tough. we call on tan-cred artaxerxes flavin to compeer with barnabas ulick dunne. order, order, order! milster malster in the chair. we’ve heard it sinse sung thousandtimes. how burghley shuck the rackushant germanon. for ehren, boys, gobrawl!',\n", + " 'a public plouse. citizen soldiers.',\n", + " 'taff (a smart boy, of the peat freers, thirty two eleven, looking through the roof towards a relevution of the karmalife order privious to his hoisting of an emergency umberolum in byway of paraguastical solation to the rhyttel in his hedd). all was flashing and krashning blurty moriartsky blutcherudd? what see, buttywalch? tell ever so often?',\n", + " 'butt (mottledged youth, clergical appealance, who, as his pied friar, is supposing to motto the sorry dejester in tifftaff toffiness or to be digarced from ever and a daye in his accounts). but da. but dada, mwilshsuni. till even so aften. sea vaast a pool!',\n", + " 'taff (porumptly helping himself out by the cesspull with a yellup yurrup, puts up his furry furzed hare). butly bitly! humme to our mounthings. conscribe him tillusk, unt, in his jubalant tubalence, the groundsapper, with his soilday site out on his moulday side in. the gubernier-gerenal in laut-lievtonant of baltiskeeamore, amaltheouse for leporty hole! endues paramilintary langdwage. the saillils of the yellavs nocadont palignol urdlesh. shelltoss and welltass and telltuss aghom! sling stranaslang, how malo-razzias spikes her, coining a speak a spake! not the setanik stuff that slimed soft siranouche! the goot old gunshop monowards for manosymples. tincurs tammit! they did oak hay doe fou chang-il-meng when that man d’airain was big top tom saw tip side bum boss pageantfiller. ajaculate! all lea light! rassamble the glowrings of bruyant the bref when the mollies makehal-pence took his leg for his thumb. and may he be too an intrepida — tion of our dreams which we foregot at wiking when the mom hath razed out limpalove and the bleakfrost chilled our ravery! pook. sing ching lew mang! upgo, bobbycop! lets hear in remember the braise of hold!',\n", + " \"butt (drawling forth from his blousom whereis meditabound of his minkerstary, switches on his gorsecopper’s fling weitoheito lang-thorn, fed up the grain oils of aerin, while his laugh neighs banck as that flashermind’s rays and his lipponease longuewedge wambles). ullahbluh! sehyoh narar, pokehole sann! manhead very dirty by am anoyato. like old dolldy icon when he cooked up his iggs in bicon. he gatovit and me gotafit and oalgoak’s cheloven gut a fudden. povar old pitschobed! molodeztious of metchennacht belaburt that pentschmyaso! bog carsse and dam neat, sar, gam can't! limbers affront of him, lumbers behund. while the bucks bite his dos his hart bides the ros till the bounds of his bays bell the warning. sobaiter sobarkar. he was enmivallupped. chro-mean fastion. with all his cannoball wappents. in his raglanrock and his malakoiffed bulbsbyg and his varnashed roscians and his cardigans blousejagged and his scarlett manchokuffs and his tree-coloured camiflag and his perikopendolous gaelstorms. here weeks hire pulchers! obriania’s beromst! from karrs and polikoff’s, the men’s confessioners. seval shimars pleasant time payings. mousoumeselles buckwoulds look. tenter and likelings.\",\n", + " 'taff (all perssiasterssias shookatnaratatattar at his waggon-horchers, his bulgeglarying stargapers razzledazzlingly full of eyes, full of balls, full of holes, full of buttons, full of stains, full of medals, full of blickblackblobs). grozarktic! toadlebens! some garment-guy! insects appalling, low hum clang sin! a cheap decoy! too deep destroy! say mangraphique, may say nay por daguerre!',\n", + " 'butt (if that he hids foregodden has nate of glozery farused ameet the florahs of the follest, his spent fish’s livid smile giving allasundery the bumfit of the doped). come alleyou jupes of wymmingtown that graze the calves of man! a bear raigning in his heavenspawn consomation robes. rent, outraged, yewleaved, grained, bal-looned, hindergored and voluant! erminia’s capecloaked hoo — doodman! first he s s st steppes. then he st stoo stoopt. lookt.',\n", + " 'taff (strick struck strangling like aleal lusky lubliner to merum-ber by the cycl of the cruize who strungled attahilloupa with what empoisoned el monte de zuma and failing wilnaynilnay that he was pallups barn in the minkst of the krumlin befodt he was pop-soused into the monkst of the vatercan, makes the holypolygon of the emt on the greaseshaper, a little farther, a little soon, a lettera- cettera, oukraydoubray). scutterer of guld, he is retourious on every roudery! the lyewdsky so so sewn of a fitchid! with his walshbrushup. and his boney bogey braggs.',\n", + " 'butt (after his tongues in his cheeks, with pinkpoker pointing out in rutene to impassible abjects beyond the mistomist towards lissnaluhy such as the djublian alps and the hoofd ribeiro as where he and his trulock may ever make a game). the field of karhags and that bloasted tree. forget not the felled! for the lomondations of oghrem! warful doon’s bothem. here furry glunn. nye? their feery pass. tak! with guerillaman aspear aspoor to prink the pranks of primkissies. and the buddies be-hide in the byre. allahblah!',\n", + " 'taff (a blackseer, he stroves to regulect all the straggles for wife in the rut of the past through the widnows in effigies keening after the blank sheets in their faminy to the relix of oll decency from over draught). oh day of rath! ah, murther of mines! eh, selo moy! uh, zulu luy! bernesson mac mahahon from osro bearing nose easger for sweeth prolettas on his swooth prowl!',\n", + " 'butt (back to his peatrol and paump: swee gee’s wee rest: no more applehooley: dodewodedook). bruinoboroff, the hooney-moonger, and the grizzliest manmichal in meideveide! whose annal livves the hoiest! for he devoused the lelias on the fined and he conforted samp, tramp and marchint out of the drumbume of a narse. guards, serf finnland, serve we all!',\n", + " 'taff (whatwidth the psychophannies at the front and whetwadth the psuckofumbers beholden the fair, illcertain, between his bulchri-chudes and the roshashanaral, where he sees bishop ribboncake plus his pollex prized going forth on his visitations of mirrage or miss horizon, justso all our fannacies daintied her, on the curve of the camber, unsheathing a showlaced limbaloft to the great consternations). divulge! hyededye, kittyls, and howdeddoh, pan! poshbott and pulbuties. see that we soll or let dargman be luna as strait a way as your ant’s folly me line while ye post is goang from piping pubwirth to haunted hillborough on his mujiksy’s zaravence, the riss, the ross, the sur of all russers, as my farst is near to hear and my sackend is meet to sedon while my whole’s a peer’s aureolies. we should say you dones the polecad. bang on the booche, gurg in the gorge, rap on the roof and your flup is unbu . . .',\n", + " 'butt (at the signal of his act which seems to sharpnel his innermals menody, playing the spool of the little brown jog round the wheel of her whang goes the millner). buckily buckily, blodestained boyne! bimbambombumb. his snapper was shot in the rumjar journaral. why the gigls he lubbed beeyed him.',\n", + " 'taff (obliges with a two stop yogacoga sumphoty on the bones or ivory girl and ebony boy). the balacleivka! trovatarovitch! i trumble!',\n", + " 'butt (with the sickle of a scygthe but the humour of a hummer, o, howorodies through his cholaroguled, fumfing to a fullfrength with this wallowing olfact). mortar martar tartar wartar! may his boules grow wider so his skittles gets worse! the aged monad making a venture out of the murder of investment. i seen him acting surgent what betwinks the scimitar star and the ashen moon. by their lights shalthow throw him! piff paff for puffpuff and my pife for his cgar! the mlachy way for gambling.',\n", + " 'taff (awary that the first sports report of loudin reginald has now been afterthoughtfully colliberated by a saggind spurts flash, takes the dipperend direction and, for tasing the tiomor of malaise after the pognency of orangultonia, orients by way of sagit-tarius towards draco on the lour). and you collier carsst on him, the corsar, with boyle, burke and campbell, i’ll gogemble on strangbones tomb. you had just been cerberating a camp camp camp to saint sepulchre’s march through the armeemonds re-treat with the boys all marshalled, scattering giant’s hail over the curseway, fellowed along the rout by the stenchions of the corpse. tell the coldspell’s terroth! if you please, commeylad! perfedes albionias! think some ingain think, as teakortairer sate over the galwegian caftan forewhen orops and aasas were chooldrengs and micramacrees! a forward movement, miles na bogaleen, and despatch!',\n", + " 'butt (slinking his coatsleeves surdout over his squad mutton shoulder so as to loop more life the jauntlyman as he scents thc anggreget yup behound their whole scoopchina’s desperate noy’s totalage and explaining aposteriorly how awstooloo was valde-sombre belowes hero and he was in a greak esthate phophiar an erixtion on the soseptuple side of him made spoil apriori his popo-porportiums). yass, zotnyzor, i don’t think i did not, pojr. never you brother me for i scout it, think you! ichts nichts on nichts! greates schtschuptar! me fol the rawlawdy in the schpirrt of a schkrepz. of all the quirasses and all the qwehrmin in the tra-gedoes of those antiants their grandoper, that soun of a gun — nong, with his sabaothsopolettes, smooking his scandleloose at botthends of him! foinn duhans! i grandthinked after his obras after another time about the itch in his egondoom he was legging boldylugged from some pulversporochs and lyoking for a stool-eazy for to nemesisplotsch allafranka and for to salubrate himself with an ultradungs heavenly mass at his base by a suprime pomp-ship chorams the perished popes, the reverend and allaverred cromlecks, and when i heard his lewdbrogue reciping his cheap cheateary gospeds to sintry and santry and sentry and suntry i thought he was only haftara having afterhis brokeforths but be the homely churopodvas i no sooner seen aghist of his frighte-ousness then i was bibbering with vear a few versets off fooling for fjorg for my fifth foot. of manifest ’tis obedience and the. flute!',\n", + " 'taff (though the unglucksarsoon is giming for to git him, jotning in, hoghly ligious, hapagodlap, like a soldierry sap, with a pique at his cue and a tyr in his eye and a bond of his back and a croak in his cry as did jolly well harm lean o’er him) is not athug who would. weepon, weeponder, song of sorrowmon! which goatheye and sheepskeer they damnty well know. papaist! gambanman! take the cawraidd’s blow! yia! your partridge’s last!',\n", + " 'butt (giving his scimmianised twinge in acknuckledownedgment of this cumulikick, strafe from the firetrench, studenly drobs led, sa-toniseels ouchyotchy, he changecors induniforms as he is lefting the gat out of the big: his face glows green, his hair greys white, his bleyes bcome broon to suite his cultic twalette). but when i seeing him in his oneship fetch along within hail that tourrible tall with his nitshnykopfgoknob and attempting like a brandylogged rudeman cathargic, lugging up and laiding down his livepelts so cruschinly like mebbuck at messar and expousing his old skinful self tailtottom by manurevring in open ordure to renew-murature with the cowruads in their airish pleasantry i thanked he was recovering breadth from some herdsquatters beyond the carcasses and i couldn’t erver nerver to tell a liard story not of i knew the prize if from lead or alimoney. but when i got inoccu-pation of a full new of his old basemiddelism, in ackshan, pagne pogne, by the veereyed lights of the stormtrooping clouds and in the sheenflare of the battleaxes of the heroim and mid the shieldfails awail of the bitteraccents of the sorafim and caught the pfierce tsmell of his aurals, orankastank, a suphead setrapped, like peder the greste, altipaltar, my bill it forsooks allegiance (gut bull it!) and, no lie is this, i was babbeing and yetaghain bubbering, bibbelboy, me marrues me shkewers me gnaas me fiet, tob tob tob beat it, solongopatom..clummensy if ever mis-used, must used you’s now! but, meac coolp, arram of eirze — rum, as i love our deer dirouchy, i confesses withould pride — jealice when i looked upon the saur of all the haurousians with the weight of his arge fullin upon him from the travaillings of his tommuck and rueckenased the fates of a bosser there was fear on me the sons of nuad for him and it was heavy he was for me then the way i immingled my irmenial hairmaierians ammon-gled his gospolis fomiliours till, achaura moucreas, i adn’t the arts to.',\n", + " 'taff (as a marrer off act, prepensing how such waldmanns from burnias seduced country clowns, he is preposing barangaparang after going knowing what he is doing after to see him pluggy well moidered as a murder effect, you bet your blowie knife, before he doze soze, sopprused though he is) grot zot! you hidn’t the hurts? vott fonn!',\n", + " 'butt (hearing somrother sudly give tworthree peevish sniff snuff snoores like govalise falseleep he waitawhishts to see might he stirs and then goes on kuldrum like without asking for pepeace or anysing a soul). merzmard! i met with whom it was too late. my fate! o hate! fairwail! fearwealing of the groan! and think of that when you smugs to bagot.',\n", + " 'taff (who meanwhilome at yarn’s length so as to put a nodje in the poestcher, by wile of stoccan his hand and of rooma makin ber getting umptyums gatherumed off the skattert, had been lavishing, lagan on lighthouse, words of silent power, susu glouglou biri — biri gongos, upon the repleted speechsalver’s innkeeping right which, thanks giveme and naperied norms nonobstaclant, there can be little doubt, have resulted in a momstchance ministring of another guid-ness, my good, to see) bompromifazzio! shumpum for pa-li-di and oukosouso for the nipper dandy! trink off this scup and be bladdy orafferteed! to bug at?',\n", + " 'butt (he whipedoff’s his chimbley phot, as lips lovecurling to the tongueopener, he takecups the communion of sense at the hands of the foregiver of trosstpassers and thereinofter centelinnates that potifex miximhost with haruspical hospedariaty proferring into his pauses somewhot salt bacon). theres scares knud in this gnarld warld a fully so svend as dilates for the improvement of our foerses of nature by your very ample solvent of referacting upon me like is boesen fiennd.',\n", + " 'taff (now as he has been past the buckthurnstock from peadhar piper of colliguchuna, whiles they all are bealting pots to dubrin din for old daddam dombstom to tomb and wamb humbs lumbs agamb, glimpse agam, glance agen, rise up road and hive up hill, and find your pollyvoulley foncey pitchin ingles in the parler). since you are on for versingrhetorish say your piece! how buccleuch shocked the rosing girnirilles. a ballet of gasty power. a hov and az ov and off like a gow! and don’t live out the sad of tearfs, piddyawhick! not offgott affsang is you, buthbach? ath yet-heredayth noth endeth, hay? vaersegood! buckle to! sayyessik, ballygarry. the fourscore soculums are watchyoumaycodding to cooll the skoopgoods blooff. harkabuddy, feign! thingman placeyear howed wholst somwom shimwhir tinkledinkledelled. shinfine deed in the myrtle of the bog tway fainmain stod op to slog, free bond men lay lurkin on. tuan about whattinghim! fore sneezturmdrappen! ’twill be a rpnice pschange, arrah, sir? can you come it, budd?',\n", + " 'butt (who in the cushlows of his goodsforseeking hoarth, ever fondlinger of his pimple spurk, is a niallist of the ninth homestages, the babybell in his baggutstract upper going off allatwanst, begad, lest he should challenge himself, beygoad, till angush). horrasure, toff! as said as would. it was colporal phailinx first. hittit was of another time, a white horsday where the midril met the bulg, sbogom, roughnow along about the first equinarx in the cholon-der, on the plain of khorason as thou goest from the mount of bekel, steep nemorn, elve hundred and therety and to years how the krow flees end in deed, after a power of skimiskes, blodidens and godinats of them, when we sight the beasts, (heg-heg whatlk of wraimy wetter!), moist moonful date man aver held dimsdzey death with, and higheye was in the reilly oirish krzerszonese milesia asundurst sirdarthar woolwichleagues, good tomkeys years somewhile in crimealian wall samewhere in ayerland, during me weeping stillstumms over the freshprosts of eastchept and the dangling garters of marrowbone and daring my wapping stiltstunts on bostion moss, old stile and new style and heave a lep onwards. and winn again, blaguadargoos, or lues the day, plays goat, the banshee pealer, if moskats knows whoss whizz, the great day and the druidful day come san patrisky and the grand day, the excellent fine splendorous long agreeable toastworthy cylindrical day, go sixt of the ninth, the heptahundread annam dammias that hajizfijjiz ells me is and will and was be till the timelag is in it that’s told in the bok of alam to columnkill all the prefacies of erin gone brugk. but icantenue. and incommixtion. we was lowsome like till we’d took out after the dead beats. so i begin to study and i soon show them day’s reasons how to give the cold shake to they blighty perishers and lay one over the beats. all feller he look he call all feller come longa villa finish. toumbalo, how was i acclapadad! from them banjopeddlars on the raid. gidding up me anti vanillas and getting off the stissas me aunties. boxerising and coxerusing. and swiping a johnny dann sweept for to exercitise myself neverwithstanding the topkats and his roaming cartridges, orussheying and patronning, out all over crummwiliam wall. be the why it was me who haw haw.',\n", + " 'taff (all for letting his tinder and lighting be put to beheiss in the feuer and, while durblinly obasiant to the felicias of the skivis, still smolking his fulvurite turfkish in the rooking pressance of laddios). yaa hoo how how, col? whom battles joined no bottles sever! worn’t you aid a comp?',\n", + " 'butt (in his difficoltous tresdobremient, he feels a bitvalike a baddlefall of staot but falls a batforlake a borrlefull of bare). and me awlphul omegrims! between me rassociations in the postlea-deny past and me disconnections with aplompervious futules i’ve a boodle full of maimeries in me buzzim and medears runs sloze, bleime, as i now with platoonic leave recoil in (how the thickens they come back to one to rust!) me misenary post for all them old boyars that’s now boomaringing in waulholler, me alma marthyrs. i dring to them, bycorn spirits fuselaiding, and you cullies adjutant, even where its contentsed wody, with absents wehrmuth. junglemen in agleement, i give thee our greatly swooren, theoccupant that rueandredful, the thrown-fullvner and all our royal devouts with the arrest of the whole inhibitance of neuilands! one brief mouth. and a velligoolap-now! meould attashees the currgans, (if they could get a kick at this time for all that’s hapenced to us!) cedric said gormleyson and danno o’dunnochoo and conno o’cannochar it is this were their names for we were all under that manner barracksers on kong gores wood together, thurkmen three, with those khakireinettes, our miladies in their toileries, the twum plum-yumnietcies, vjeras vjenaskayas, of old djadja uncken who was a great mark for jinking and junking, up the palposes of womth and wamth, we war, and the charme of their lyse brocade. for lispias harth a burm in eye but whem it bames fire norone screeneth. hulp, hulp, huzzars! raise ras tryracy! freetime’s free! up lancesters! anathem!',\n", + " 'taff (who still senses that heavinscent houroines that enter-trained him who they were sinuorivals from the sunny espionia but plied wopsy with his wallets in thatthack of the bustle bakerloo, (ii.32), passing the uninational truthbosh in smoothing irony over the multinotcheralled infructuosities of his grinner set). the rib, the rib, the quean of oldbyrdes, sinya sonyavitches! your rhoda cockardes that are raday to embrace our ruddy inflamtry world! in their ohosililesvienne biribarbebeway. till they’ve kinks in their tringers and boils on their taws. whor dor the pene lie, mer pencho? ist dramhead countmortial or gonorrhal stab? mind your pughs and keaoghs, if you piggots, marsh! do the nut, dingbut! be a dag! for zahur and zimmerminnes! sing in the chorias to the ethur:',\n", + " 'butt (with a gisture expansive of mr lhugewhite cadderpollard with sunflawered beautonhole pulled up point blanck by mailbag mundaynism at oldbally court though the hissindensity buck far of his melovelance tells how when he was fast marking his first lord for cremation the whyfe of his bothem was the very lad’s thing to elter his mehind). prostatates, pujealousties! dovolnoisers, prayshyous! defense in every circumstancias of deboutcheries no the chaste daffs i pack pickets, pioghs and kughs to be palsey-putred! be at the peme, prease, of not forgetting or mere betoken yourself to hother prace! correct me, pleatze commando, for cossakes but i abjure of it. no more basquibezigues for this pole aprican! with askormiles’ eskermillas. i had my billyfell of duckish delights the whole pukny time on rawmeots and juliannes-with their lambstoels in my kiddeneys and my ramsbutter in their sassenacher ribs, knee her, do her and trey her, when th’osirian cumb dumb like the whalf on the fiord and we preying players and pinching peacesmokes, troupkers tomiatskyns all, for father petrie spence of parishmoslattary to go and leave us and the crimsend daun to shellalite on the darkumen (scene as signed, slobabogue), feeding and sleeping on the huguenottes (the snuggest spalniel’s where the lieon’s tame!) and raiding revolations over the allbegeneses (sand us and saint us and sound as agun!). yet still in all, spit for spat, like we chantied on sunda schoon, every warson wearrier kaddies a komnate in his schnapsack and unlist i am getting foegutfulls of the rugi-ments of savaliged wildfire i was gamefellow willmate and send us victorias with nowells and brownings, dumm, sneak and curry, and all the fun i had in that fanagan’s week. a strange man wearing abarrel. and here’s a gift of meggs and teggs. and as i live by chipping nortons. and ’tis iron fits the farmer, ay. arcdesedo! renborumba! then were the hellscyown days for our fellows, the loyal leibsters, and we was the redugout raw-recruitioners, praddies three and prettish too, a wheeze we has in our waynward islands, wee engrish, one long blue streak, jisty and pithy af durck rosolun, with hand to hand as homard kayenne was always jiggilyjugging about in his wendowed courage when our woos with the wenches went wined for a song, tsingirillies’ zyngarettes, while woodbine willie, so popiular with the poppyrossies, our chorney choplain, blued the air. sczlanthas! banzaine! bissbasses! s. pivorandbowl. and we all tuned in to hear the topmast noviality. up the revels drown the rinks and almistips allround! paddy bonhamme he vives! en-core! and tig for tag togatogtug. my droomodose days y loved you abover all the strest. blowhole brasshat and boy with his boots off and the butch of our bunch and all. it was buckoo bonzer, beleeme. i was a bare prive without my doglegs but i did not give to one humpenny dump, wingh or wangh, touching those thusengaged slavey generales of tanah kornalls, the meelisha’s deelishas, pronouncing their very flank movemens in sunpictorsbosk. baghus the whatwar! i could always take good cover of myself and, eyedulls or earwakers, preyers for rain or cominations, i did not care three tanker’s hoots, (‘sham! hem! or chaffit!) for any feelings from my lifeprivates on their reptro-grad leanins because i have their honours booth my respectables sþurs assistershood off lyndhurst terrace, the puttih misses celana dalems, and she in vinting her angurr can belle the troth on her alliance and i know his heriness, my respeaktoble me-dams culonelle on mellay street, lightnints gundhur sawabs, and they would never as the aimees of servation let me down. not on your bludger life, touters! no peeping, pimpadoors! and, by jova i never went wrong nor let him doom till, risky wark rasky wolk, at the head of the wake, up come stumblebum (ye olde cottemptable!), his urssian gemenal, in his scutt’s rudes unreformed and he went before him in that nemcon enchelonce with the same old domstoole story and his upleave the fallener as is greatly to be petted (whitesides do his beard!) and i seen his brichashert offensive and his boortholomas vadnhammaggs vise a vise them scharlot runners and how they gave love to him and how he took the ward from us (odious the fly fly flurtation of his him and hers! just mairmaid maddeling it was it he was!) and, my oreland for a rolvever, sord, by the splunthers of colt and bung goes the enemay the percy rally got me, messg‚r, (as true as theirs an almagnian gothabobus!) to blow the grand off his aceupper. thistake it’s meest! and after meath the dulwich. we insurrectioned and, be the procuratress of the hory synnotts, before he could tell pullyirragun to parrylewis, i shuttm, missus, like a wide sleever! hump to dump! tumbleheaver!',\n", + " 'taff (camelsensing that sonce they have given bron a nuhlan the volkar boastsung is heading to sea vermelhion but too wellbred not the ignore the umzemlianess of this rifal’s preceedings, in an effort towards autosotorisation, effaces himself in favour of the idiology alwise behounding his lumpy hump off homosodalism which means that if he has lain amain to lolly his liking-cabronne! — he may pops lilly a young one to his herth — combrune —) oholy rasher, i’m be-liever! and oho bullyclaver of ye, bragadore-gunneral! the grand ohold spider! it is a name to call to him umsturdum vonn! ah, you were shutter reshottus and sieger besieged. aha race of fiercemarchands counterination oho of shorpshoopers.',\n", + " 'butt (miraculising into the dann deafir warcry, his bigotes bristling, as, jittinju triggity shittery pet, he shouts his thump and feeh fauh foul finngures up the heighohs of their ahs!) bluddy-muddymuzzle! the buckbeshottered! he’ll umbozzle no more graves nor home no haunder, lou garou, for gayl geselles in dead men’s hills! kaptan (backsights to his bared!), his cum-bulent embulence, the frustate fourstar russkakruscam, dom allah o’khorwan, connundurumchuff.',\n", + " 'taff (who, asbestas can, wiz the healps of gosh and his bluzzid maikar, has been sulphuring to himsalves all the pungataries of sin praktice in failing to furrow theogonies of the dommed). trisseme, the mangoat! and the name of the most marsiful, the aweghost, the gragious one! in sobber sooth and in souber civiles? and to the dirtiment of the curtailment of his all of man? notshoh?',\n", + " 'butt (maomant scoffin, but apoxyomenously deturbaned but thems bleachin banes will be after making a bashman’s haloday out of the euphorious hagiohygiecynicism of his die and be diademmed). yastsar! in sabre tooth and sobre saviles! senonnevero! that he leaves nyet is my grafe. he deared me to it and he dared me do it, and bedattle i didaredonit as cocksnark of killtork can tell and ussur ursussen of the viktaurious onrush with all the rattles in his arctic! as bold and as madhouse a bull in a meadows. knout knittrick kinkypeard! olefoh, the sourd of foemoe times! unknun! for when meseemim, and tolfoklokken rolland allover ourloud’s lande, beheaving up that sob of tunf for to claimhis, for to wollpimsolff, puddywhuck. ay, and untuoning his culothone in an exitous erseroyal deo jupto.at that instullt to igorladns! prronto! i gave one dobblenotch and i ups with my crozzier. mirrdo! with my how on armer and hits leg an arrow cockshock rockrogn. sparro!',\n", + " 'taff (skimperskamper, his wools gatherings all over cromlin what with the birstol boys artheynes and is it her tour and the crackery of the fullfour fivefirearms and the crockery of their dam- dam domdom chumbers). wharall thubulbs uptheaires! shatta-movick?',\n", + " 'butt (pulling alast stark daniel with alest doog at doorak while too greater than pardon painfully the issue of his mouth diminuen-doing, vility of vilities, he becomes, allasvitally, faint). shurenoff! like faun macghoul!',\n", + " 'butt and taff (desprot slave wager and foeman feodal unsheckled, now one and the same person, their fight upheld to right for a wee while being baffled and tottered, umbraged by the shadow of old erssia’s magisquammythical mulattomilitiaman, the living by owning over the surfers of the glebe whose sway craven minnions had caused to revile, as, too foul for hell, under boiling mauses’ burning brand, he falls by goll’s gillie, but keenheartened by the circuminsistence of the parkes o’rarelys in a hurdly gurdly cicilian concertone of their fonngeena barney brawl, shaken everybothy’s hands, while s. e. morehampton makes leave to e. n. sheil-martin after meetinghouse lanigan has embaraced vergemout hall, and, without falter or mormor or blathrehoot of sophsterliness, pugnate thc pledge of fiannaship, dook to dook, with a commonturn oudchd of fest man and best man astoutsalliesemoutioun palms it off like commodity tokens against a cococancancacacanotioun). when old the wormd was a gadden and anthea first unfoiled her limbs wanderloot was the way the wood wagged where opter and apter were samuraised twimbs. they had their mutthering ivies and their murdhering idies and their mouldhering iries in that muskat grove but there’ll be bright plinnyflowers in calo-mella’s cool bowers when the magpyre’s babble towers scorching and screeching from the ravenindove. if thees lobed the sex of his head and mees ates the seep of his traublers he’s dancing figgies to the spittle side and shoving outs the soord. and he’ll be buying buys and go gulling gells with his flossim and jessim of carm, silk and honey while myandthys playing lancifer lucifug and what’s duff as a bettle for usses makes coy cosyn corollanes’ moues weeter to wee. so till butagain budly shoots thon rising germinal let bodley chow the fatt of his anger and badley bide the toil of his tubb.',\n", + " 'shutmup. and bud did down well right. and if he sung dumb in his glass darkly speech lit face to face on allaround.',\n", + " 'vociferagitant. viceversounding. namely, abdul abulbul amir or ivan slavansky slavar. in alldconfusalem. as to whom the major guiltfeather pertained it was hercushiccups’ care to educe. beauty’s bath she’s bound to bind beholders and pride, his purge, has place appoint in penance and the law’s own libel lifts and lames the low with the lofty. be of the housed! while the hersy hunt they harrow the hill for to rout them rollicking rogues from, rule those racketeer romps from, rein their rockery rides from. rambling.',\n", + " 'nightclothesed, arooned, the conquerods sway. after their battle thy fair bosom.',\n", + " '— that is too tootrue enough in solidan’s island as in mol-tern giaourmany and from the amelakins off to date back to land of engined egypsians, assented from his opening before his inlookers of where an oxmanstongue stalled stabled the well-nourished one, lord of the seven days, overlord of sats and suns, the sat of all the suns which are in the ring of his system of the sats of his sun, god of the scuffeldfallen skillfilledfelon, who (he contaimns) hangsters, who (he constrains) hersirrs, a gain chang-ful, a mintage vaster, heavy on shirts, lucky with shifts, the top — side humpup stummock atween his showdows fellah, misto tee wiley spillitshops, who keepeth watch in khummer–phett, whose spouse is an–lyph, the dog’s bladder, warmer of his couch in fore. we all, for whole men is lepers, have been nobbut won-terers in that chill childerness which is our true name after the allfaulters (mug’s luck to em!) and, bespeaking of love and lie detectors in venuvarities, whateither the drugs truth of it, was there an iota of from the faust to the lost. and that is at most re-doubtedly an overthrew of each and ilkermann of us, i persuade myself, before gow, gentlemen, so true as this are my kopfinpot astrode on these is my boardsoldereds.',\n", + " 'it sollecited, grobbling hummley, his roundhouse of seven orofaces, of all, guiltshouters or crimemummers, to be sayd by, codnops, advices for, free of gracies, scamps encloded, com-petitioning them, if they had steadied jura or when they had raced messafissi, husband of your wifebetter or bestman botcha-lover of you yourself, how comes ever a body in our taylorised world to selve out thishis, whither it gives a primeum nobilees for our notomise or naught, the farst wriggle from the ubivence, whereom is man, that old offender, nother man, wheile he is asame. and fullexampling. the pints in question. with some by-spills. and sicsecs to provim hurtig. soup’s on!',\n", + " '— a time. and a find time. whenin aye was a kiddling. and the tarikies held sowansopper. let there beam a frishfrey. and they sodhe gudhe rudhe brodhe wedhe swedhe medhe in the kanddledrum. i have just (let us suppraise) been reading in a (suppressed) book — it is notwithstempting by meassures long and limited — the latterpress is eminently legligible and the paper, so he eagerly seized upon, has scarsely been buttered in works of previous publicity wholebeit in keener notcase would i turf aside for pastureuration. packen paper paineth whomto is sacred scriptured sign. who straps it scraps it that might, if ashed, have healped. enough, however, have i read of it, like my good bedst friend, to augur in the hurry of the times that it will cocommend the widest circulation and a reputation coextensive with its merits when inthrusted into safe and pious hands upon so edifying a mission as it, i can see, as is his. it his ambullished with expurga-tive plates, replete in information and accampaigning the action passiom, slopbang, whizzcrash, boomarattling from burst to past, as i have just been seeing, with my warmest venerections, of a timmersome townside upthecountrylifer, (guard place the town!) allthose everwhalmed upon that preposterous blank seat, before the wordcraft of this early woodcutter, a master of vignett- iennes and our findest grobsmid among all their orefices, (and, shukar in chowdar, so splunderdly english!) mr aubeyron birdslay. chubgoodchob, arsoncheep and wellwillworth a triat! bismillafoulties. but the hasard you asks is justly ever behind his meddle throw! those sad pour sad forengistanters, dastychappy dustyrust! chaichairs. it is that something, awe, aurorbean in that fellow, hamid and damid, (did he have but hugh de brassey’s beardslie his wear mine of ancient guised) which comequeers this anywhat perssian which we, owe, realisinus with purups a dard of pene. there is among others pleasons whom i love and which are favourests to mind, one which i have pushed my finker in for the movement and, but for my sealring is none to hand i swear, she is highly catatheristic and there is another which i have fombly fongered freequuntly and, when my signet is on sign again i swear, she is deeply sangnificant. culpo de dido! ars we say in the classies. kunstful, we others said. what ravening shadow! what dovely line! not the king of this age could richlier eyefeast in oreillental longuardness with alternate nightjoys of a thousand kinds but one kind. a shahrryar cobbler on me when i am lying! and whilst (when i doot my sliding panel and i hear cawcaw) i have been idylly turmbing over the loose looves leaflefts jaggled casuallty on the lamatory, as is my this is, as i must commit my lips to make misface for misfortune, often, so far as i can chance to recollect from the some farnights ago, (so dimsweet is that selvischdischdienence of to not to be able to be obliged to have to hold further anything than a stone his throw’s fruit’s fall!) when i, if you wil excuse for me this informal leading down of illexpressibles, enlivened toward the author of nature by the natural sins liggen gobelimned theirs before me, (how differen-ded with the manmade eonochs cunstuntonopolies!), weather — ed they be of a general golf stature, assasserted, or blossomly emblushing thems elves underneed of some howthern folleys, am entrenched up contemplating of myself, wiz my naked i, for relieving purposes in our trurally virvir vergitabale (garden) i sometimes, maybe, what has justly said of old flannagan, a wake from this or huntsfurwards, with some shock (shell i so render it?) have (when i ope my shylight window and i see coocoo) a notion quiet involuptary of that i am cadging hapsnots as at murmurrandoms of distend renations from ficsimilar phases or dugouts in the behindscenes of our earthwork (what rovining shudder! what deadly loom!) as this is, at no spatial time pro-cessly which regards to concrude chronology about which in fact, at spite of i having belittled myself to my gay giftname of insectarian, happy burgages abeyance would make homesweets-town hopeygoalucrey, my mottu propprior, as i claim, cad’s truck, i coined, i am highly pelaged and deeply gluttened to mind hindmost hearts to see by their loudest reports from my threespawn bottery parts (shsh!) that, colombophile and corvino-phobe alike, when i have remassed me, my travellingself, as from magellanic clouds, after my contractual expenditures, through the perofficies of merelimb, i, my good grief, i am, i am big altoogooder.',\n", + " 'he beached the bark of his tale; and set to husband and vine: and the harpermaster told all the living conservancy, know meschiameschianah, how that win a gain was in again. flying the perseoroyal. withal aboarder, padar and madar, hal qnd sal, the sens of ere with the duchtars of iran. amick amack amock in a mucktub. qith the tou loulous and the gryffygryffygryffs, at fenegans wick, the wildemanns. washed up whight and de-liveried rhight. loud lauds to his luckhump and bejetties on jo — nahs! and they winxed and wanxed like baillybeacons. till we woksed up oldermen.',\n", + " 'from whose plultibust preaggravated, by baskatchairch theo-logies (there werenighn on thaurity herouns in that alraschil arthouducks draken), they were whoalike placed to say, in the matters off ducomans nonbar one, with bears’ respects to him and bulls’ acknowledgments (come on now, girls! lead off, o cara, whichever won of you wins! the two gemuas and jane agrah and judy tombuys!) disassembling and taking him apart, the slammocks, with discrimination for his maypole and a rub in passing over his hump, drogueries inaddendance, frons, fesces and frithstool: 1) he hade to die it, the beetle, 2) he didhithim self, hod’s fush, 3) all ever the pelican huntered with truly fond bull-pen backthought since his toork human life where his personal low outhired his taratoryism, the orenore under the selfhide of his bessermettle, was forsake in his chiltern and lumbojumbo, 4) he was like fintan fore flood and after sometimes too damned merely often on the saved side, saw he was, 5) regarding to prussyattes or quazzyverzing he wassand no better than he would have been before he could have been better than what he warrant after, 6) blood, musk or haschish, as coked, diamoned or pence-loid, and bleaching him naclenude from all cohlorine matter, down to a boneash bittstoff, he’s, tink fors tank, the same old dustamount on the same old tincoverdull baubleclass, totstitty-winktosser and bogusbagwindburster, whether fitting tyres onto danelope boys or fluttering flaus for laurettas, whatever the bucket brigade and the plug party says, touchant arser of the rum tipple and his camelottery and lyonesslooting but with a layaman’s brutstrenth, by jacohob and esahur and the all saults or all sallies, what we warn to hear, jeff, is the woods of chirpsies cries to singaloo sweecheeriode and sock him up, the oldcant rogue.',\n", + " 'group a.',\n", + " 'you have jest (a ham) beamed listening through (a ham pig) his haulted excerpt from john whiston’s fiveaxled production, the coach with the six insides, from the tales of yore of the times gone by before there was a hofdking or a hoovthing or a pinginapoke in oreland, all sould. goes tory by eeric whigs is to become tintinued in fearson’s nightly in the lets all wake brickfaced in lucan. lhirondella, jaunty lhirondella! with tirra lirra rondinelles, atantivy we go!',\n", + " 'attention! stand at!! ease!!!',\n", + " 'we are now diffusing among our lovers of this sequence (to you! to you!) the dewfolded song of the naughtingels (alys! alysaloe!) from their sheltered positions, in rosescenery hay-dyng, on the heather side of waldalure, mount saint john’s, jinnyland, whither our allies winged by duskfoil from moore-parque, swift sanctuary seeking, after sunsink gang (oiboe! hitherzither! almost dotty! i must dash!) to pour their peace in partial (floflo floreflorence), sweetishsad lightandgayle, twittwin twosingwoolow. let everie sound of a pitch keep still in reson-ance, jemcrow, jackdaw, prime and secund with their terce that whoe betwides them, now full theorbe, now dulcifair, and when we press of pedal (sof!) pick out and vowelise your name. a mum. you pere golazy, you mere bare and you bill heeny, and you smirky dainty and, more beethoken, you wheckfoolthe-nairyans with all your badchthumpered peanas! we are gluck — glucky in our being so far fortunate that, bark and bay duol with man goodfox inchimings having ceased to the moment, so allow the clinkars of our nocturnefield, night’s sweetmoztheart, their carmen sylvae, my quest, my queen. lou must wail to cool me airly! coil me curly, warbler dear! may song it flourish (in the underwood), in chorush, long make it flourish (in the nut, in the nutsky) till thorush! secret hookup.',\n", + " '— roguenaar loudbrags, that soddy old samph! how high is vuile, var?',\n", + " 'to which yes he did, capt, that was the answer.',\n", + " '— and his shartshort trooping its colours! we knows his ventruquulence.',\n", + " 'which that that rang ripprippripplying.',\n", + " \"— bulbul, bulbulone! i will shally. thou shalt willy. you wouldn't should as youd remesmer. i hypnot. ’tis golden sickle’s hour. holy moon priestess, we’d love our grappes of mistellose! moths the matter? pschtt! tabarins comes. to fell our fairest. o gui, o gui! salam, salms, salaum! carolus! o indeed and we ware! and hoody crow was ere. i soared from the peach and missmolly showed her pear too, onto three and away. whet the bee as to deflowret greendy grassies yellowhorse. kematitis, cele our er-dours! did you aye, did you eye, did you everysee suchaway, suchawhy, eeriewhigg airywhugger? even to the extremity of the world? dingoldell! the enormanous his, our littlest little! wee wee, that long alancey one! let sit on this anthill for our frilldress talk after this day of making blithe inveiled the heart before our groatsupper serves to us panchomaster and let har- leqwind play peeptomine up all our colombinations! wins won is nought, twigs too is nil, tricks trees makes nix, fairs fears stoops at nothing. and till arthur comes againus and sen pea-trick’s he’s reformed we’ll pose him together a piece, a pace. shares in guineases! there’s lovely the sight! surey me, man weepful! big seat, you did hear? and teach him twisters in tongue irish. pat lad may goh too. quicken, aspen;ash and yew; willow, broom with oak for you. and move your tellabout. not nice is that, limpet lady! spose we try it promissly. love all. naytellmeknot tennis! taunt me treattening! but do now say to mr eustache! ingean mingen has to hear. whose joint is out of jealousy now? why, heavilybody’s evillyboldy’s. hopping gra-cius, onthy ovful! o belessk mie, what a nerve! how a mans in his armor we nurses know. wingwong welly, pitty pretty nelly! some poddy pitted in, will anny petty pullet out? call kitty kelly! kissykitty killykelly! what a nossowl buzzard! but what a neats ung gels!\",\n", + " 'here all the leaves alift aloft, full o’liefing, fell alaughing over ombrellone and his parasollieras with their black thronguards from the county shillelagh. ignorant invincibles, innocents immutant! onzel grootvatter lodewijk is onangonamed before the bridge of primerose and his twy isas boldmans is met the bluey-bells near dandeliond. we think its a gorsedd shame, these go — doms. a lark of limonladies! a lurk of orangetawneymen! you’re backleg wounted, budkley mister, bester of the boyne!',\n", + " 'and they leaved the most leavely of leaftimes and the most folliagenous till there came the marrer of mirth and the jangthe-rapper of all jocolarinas and they were as were they never ere. yet had they laughtered, one on other, undo the end and enjoyed their laughings merry was the times when so grant it high hila-rion us may too!',\n", + " 'cease, prayce, storywalkering around with gestare romano-verum he swinking about is they think and plan unrawil what.',\n", + " 'back to droughty! the water of the face has flowed.',\n", + " 'the all of them, the sowriegueuxers, blottyeyed boys, in that pig’s village smoke, a sixdigitarian legion on druid circle, the clandibblon clam cartel, then pulled out and came off and rally agreed them, roasted malts with toasted burleys, in condomnation of his totomptation and for the duration till his repepulation, upon old nollcromforemost ironsides, as camnabel chieftain, since, as sammon trowed to explain to summon, seeing that, as he had contracted out of islands empire, he might as coolly have rolled to school call, tarponturboy, a grampurpoise, the manyfathom brinegroom with the fortyinch bride, out of the cuptin klanclord kettle auction like the soldr of a britsh he was bound to be and become till the sea got him whilask, from maker to misses and what he gave was as a pattern, he, that hun of a horde, is a finn as she, his tent wife, is a lap, at home on a steed, abroad by the fire (to say nothing of him having done whatyouknow howyou-saw whenyouheard whereyouwot, the kenspeckled souckar, generose as cocke, greediguss with garzelle, uprighter of age and most umbrasive of yews all, under heaviest corpsus exemption) and whoasever spit her in howsoever’s fondling saving her keepers that mould the bould she sould to hould the wine that wakes the barley, the peg in his pantry to hold the heavyache off his heart. the droll delight of deemsterhood, a win from the wood to bond. like the bright lamps, thamamahalla, yearin out yearin. auspicably suspectable but in expectancy of respectable-ness. from dirty flock bedding, drip dropping through the ceil — ing, with two sisters of charities on the front steps and three eva — cuan cleansers at the back gaze, single box and pair of chairs (suspectable), occasionally and alternatively used by husband when having writing to do in connection with equitable druids and friendly or other societies through periods of dire want with comparative plenty (thunderburst, ravishment, dissolution and providentiality) to a sofa allbeit of hoarsehaar with amodicum cloth, hired payono, still playing off, used by the youngsters for czurnying out oldstrums, three bedrooms upastairs, of which one with fireplace (aspectable), with greenhouse in prospect (par-ticularly perspectable).',\n", + " 'and you, when you kept at dulby, were you always (for that time only) what we knew how when we (from that point solely) were you know where? there you are! and why? why, hitch a cock eye, he was snapped on the sly upsadaisying coras pearls out of the pie when all the perts in princer street set up their tinker’s humn, (the rann, the rann, that keen of old bards), with them newnesboys pearcin screaming off their armsworths. the boss made dovesandraves out of his bucknesst while herself wears the bowler’s hat in her bath. deductive almayne rogers disguides his voice, shetters behind hoax chestnote from exexive. heat wives rasing. they jest keeps rosing. he jumps leaps rizing. howlong!',\n", + " 'you known that tom? i certainly know. is their bann boths-tiesed? saddenly now. has they bane reneemed? soothinly low. does they ought to buy the papelboy when he footles up their suit? he’s their mark to foil the flouter and they certainty owe.',\n", + " 'he sprit in his phiz (baccon!). he salt to their bis (pudden!). he toockled her palam (so calam is solom!). and he suked their friends’ leave (bonnick lass, fair weal!)',\n", + " '— guilty but fellows culpows! it was felt by me sindeade, that submerged doughdoughty doubleface told waterside labourers. but since we for athome’s health have chanced all that, the wild whips, the wind ships, the wonderlost for world hips, unto their foursquare trust prayed in aid its plumptylump piteousness which, when it turtled around seeking a thud of surf, spake to approach from inherdoff trisspass through minxmingled hair. though i may have hawked it, said, and selled my how hot peas after theactrisscalls from my imprecurious position and though achance i could have emptied a pan of backslop down drain by whiles of dodging a rere from the middenprivet appurtenant thereof, salving the presents of the board of wumps and pumps, i am ever incalpable, where release of prisonals properly is concerned, of unlifting upfallen girls wherein dangered from them in thereopen out of unadulteratous bowery, with those hintering influences from an angelsexonism. it was merely my barely till their oh offs. missaunderstaid. meggy guggy’s giggag. the code’s proof! the rebald danger with they who would bare white-ness against me i dismissem from the mind of good. he can tell such as story to the twelfth maligns that my first was a nurss-maid and her fellower’s a willbe perambulatrix. there are twingty to twangty too thews and leathermail coatschemes penparing to hostpost for it valinnteerily with my valued fofavour to the post puzzles deparkment with larch parchels’ of presents for future branch offercings. the green approve the raid! shaum baum’s bode he is amustering in the groves while his shool comes merging along! want i put myself in their kirtlies i were ayearn to leap with them and show me too bisextine. dear and lest i for-get mergers and bow to you low, marchers! attemption! what a mazing month of budsome misses they are making, so wingty-wish to flit beflore their kin! attonsure! ears to hears! the skall of a gall (for every dime he yawpens that momouth you could park your ford in it) who has papertreated him into captivities with his inside man by a hocksheat of starvision for an avrageto-peace of parchment, cooking up his lenses to be my apoclogypst, the recreuter of conscraptions, let him be asservent to kinahaun! for (peace peace perfectpeace!) i have abwaited me in a water of elin and i have placed my reeds intectis before the registower of the perception of tribute in the hall of the city of analbe. how concerns any merryaunt and hworsoever gravesobbers it is perensempry sex of fun to help a dazzle off the othour. what for mucias and gracias may the duvlin rape the handsomst! and the whole mad knightmayers’ nest! tunpother, prison and plotch! if y shoulden somewhat, well, i am able to owe it, hearth and chem ney easy. they seeker for vannflaum all worldins merkins. i’ll eager make lyst turpidump undher arkens. basast! and if my liti-gimate was well to wrenn tigtag cackling about it, like the sally berd she is, to abery ham in the cutey strict, (i shall call upon my first among my lost of lyrars beyond a jingoobangoist, to overcast her) dismissing mundamanu all the riflings of her vic-tuum gleaner (my old chuck! she drakes me druck! turning out, gay at ninety!) and well shoving offa boastonmess like lots wives does over her handpicked hunsbend, as she would be calling, well, for further oil mircles upon all herwayferer gods and reanouncing my deviltries as was i a locally person of caves until i got my purchase on her firmforhold i am, i like to think, by their sacre-ligion of daimond cap daimond, confessedly in my baron gentil — homme to the manhor bourne till ladiest day as panthoposopher, to have splet for groont a peer of bellows like bacchulus shakes a rousing guttural at any old cerpaintime by peaching (allsole we are not amusical) the warry warst against myself in the defile as a lieberretter sebaiscopal of these mispeschyites of the first virgi-nial water who, without an auction of biasement from my part, with gladyst tone ahquickyessed in it, overhowe and under-where, the totty lolly poppy flossy conny dollymaukins though i heave a coald on my bauck and am could up to my eres hoven sametimes i used alltides to be aswarmer for the meekst and the graced. you are not going to not. you might be threeabreasted wholenosing at a whallhoarding from our don amir anent villa-yets prostatution precisingly kuschkars tarafs and it could be double densed uncounthest hour of allbleakest age with a bad of wind and a barran of rain, nompos mentis like novus elector, what with his marx and their groups, yet did a doubt, should a dare, were to you, you would do and dhamnk me, shenker, dhumnk you. skunk. and fare with me to share with me. hinther and thonther, hant by hont. by where dauvening shedders down whose rovely lanes. as yose were and as yese is. sure and you would, mr mac gurk! be sure and you would, mr o’duane! to be sure and you would so, mr macelligut! wod you nods? mom mom. no mum has the rod to pud a stub to the lurch of amotion. my little love apprencisses, my dears, the estelles, van nessies von nixies voon der pool, which i had a reyal devouts for yet was it marly lowease or just a feel with these which olderman k.k. alwayswelly he is showing ot the fullnights for my palmspread was gav to a parsleysprig, the curliest weedeen old ocean coils around, so spruce a spice for salthorse, sonnies, and as tear to the thrusty as tay-lor’s spring, when aftabournes, when she was look like a little cheayat chilled (oh sard! ah mah!) by my tide impracing, as beacher seath, and all the colories fair fled from my folced cheeks! popottes, where you canceal me you mayst forced guage my bribes. wickedgapers, i appeal against the light! a nexistence of vividence! panto, boys, is on a looser inloss;ballet, girls, suppline thrown tights. i have wanted to thank you such a long time so much now. thank you. sir, kindest of bottleholders and very dear friend, among our hearts of steel, froutiknow, it will befor you, me dare beautiful young soldier, winninger nor anyour of rudi-mental moskats, before you go to mats, you who have watched your share with your sockboule sodalists on your buntad nogs at our love tennis squats regatts, suckpump, when on with the balls did disserve the fain, my goldrush gainst her silvernetss, to say, biguidd, for the love of goddess and perthanow as you reveres your one mothers, mitsch for matsch, and while i reveal thus my deepseep daughter which was bourne up pridely out of meds-dreams unclouthed when i was pillowing in my brime (of satur — nay eve, how now, woren’t we’t?), to see, i say, whoahoa, in stay of execution in re milcho melekmans, increaminated, what you feel, oddrabbit, upon every strong ground you have ever taken up, by bitterstiff work or battonstaff play, with assault of turk against a barrakraval of grakeshoots, e’en tho’ jambuwel’s defe-calties is terry shimmyrag’s upperturnity, if that is grace for tbe grass what is balm for the bramblers, as it is as it is, that i am the catasthmatic old ruffin sippahsedly improctor to be seducint tro-vatellas, the dire daffy damedeaconesses, like (why sighs the sootheesinger) the lilliths oft i feldt, and, when booboob brutals and cautiouses only aims at the oggog hogs in the humand, then, (houtes, blymey and torrenation, upkurts and scotchem!) i’ll tall tale tell croon paysecurers, sowill nuggets and nippers, that thash on me stumpen blows the gaff offmombition and thit thides or marse makes a good dayle to be shattat. fall stuff.',\n", + " 'his rote in ere, afstef, was.',\n", + " 'and dong wonged magongty till the bombtomb of the warr, thrusshed in his whole soort of cloose.',\n", + " 'whisht who wooed in weald, bays of bawshaw binding. the desire of miriam is the despair of marian as joh joseph’s beauty is jacq jacob’s grief. brow, tell nun; eye, feign sad; mouth, sing mim. look at lokman! whatbetween the cupgirls and the platterboys. and he grew back into his grossery baseness: and for all his grand remonstrance: and there you are.',\n", + " 'here endeth chinchinatibus with have speak finish. with a haygue for a halt on a pouncefoot panse. pink, pleas pink, two pleas pink, how to pleas pink.',\n", + " 'punk.',\n", + " 'mask one. mask two. mask three. mask four.',\n", + " 'up.',\n", + " '— look about you, tutty comyn!',\n", + " '— remember and recall, kullykeg!',\n", + " '— when visiting dan leary try the corner house for thee.',\n", + " '— i’ll gie ye credit for simmence more if ye’ll be lymphing. our four avunculusts.',\n", + " 'and, since threestory sorratelling was much too many, they maddened and they morgued and they lungd and they jowld. synopticked on the word. till the juke done it.',\n", + " 'down.',\n", + " 'like jukoleon, the seagoer, when he bore down in his perry boat he had raised a slide and shipped his orders and seized his pullets and primed their plumages, the fionnling and dubhlet, the dun and the fire, and, sending them one by other to fare fore fom, he had behold the residuance of a delugion: the foggy doze still going strong, the old thalassocrats of invinsible empores, maskers of the waterworld, facing one way to another way and this way on that way, from severalled their fourdimmansions. where the lighning leaps from the numbulous; where coold by cawld breide lieth langwid; the bounds whereinbourne our solied bodies all attomed attaim arrest: appoint, that’s all. but see what follows. wringlings upon wronglings among incomputables about an uncomeoutable (an angel prophetethis? kingcorrier of beheasts? the calif in his halifskin? that eyriewinging one?) and the voids bubbily vode’s dodos across the which the boomomouths from their dupest dupes were in envery and anononously blowing great.',\n", + " 'guns.',\n", + " 'keep backwards, please, because there was no good to gundy running up again. guns. and it was written up in big capital. guns. saying never underrupt greatgrandgosterfosters! guns. and whatever one did they said, the fourlings, that on no acounts you were not to. guns.',\n", + " 'not to pad them behaunt in the fear. not to go, tonnerwatter, and bungley well chute the rising gianerant. not to wandly be woking around jerumsalemdo at small hours about the murketplots, smelling okey boney, this little figgy and arraky belloky this little pink into porker but, porkodirto, to let the gentlemen pedesta-rolies out of the monabella culculpuration live his own left leave, cullebuone, by perperusual of the petpubblicities without inwoking his also’s between (sic) the arraky bone and (suc) the okey bellock. and not to not be always, hemmer and hummer, treeing unselves up with one exite but not to never be caving nicely, pre-cisely, quicely, rebustly, tendrolly, unremarkably, forsakenly, hal — tedly, reputedly, firstly, somewhatly, yesayenolly about the back excits. never to weaken up in place of the broths. never to vvol-lusslleepp in the pleece of the poots. and, allerthings, never to ate the sour deans if they weren’t having anysin on their consients. and, when in zumschloss, to never, narks, cease till the finely ending was consummated by the completion of accomplishment.',\n", + " 'and thus within the tavern’s secret booth the wisehight ones who sip the tested sooth bestir them as the just has bid to jab the punch of quaram on the mug of truth.',\n", + " 'k.c. jowls, they’re sodden in the secret. k.c. jowls, they sure are wise. k.c. jowls, the justicestjobbers, for they’ll find another faller if their ruse won’t rise. whooley the whooper.',\n", + " 'there is to see. squarish large face with the atlas jacket. brights, brownie eyes in bluesackin shoeings. peaky booky nose over a lousiany shirt. ruddy stackle hair besides a strawcamel belt. namely. gregorovitch, leonocopolos, tarpinacci and duggel-duggel. and was theys stare all atime? yea but they was. andor — ing the games, induring the studies, undaring the stories, end all. ned? only snugged then and cosied after one percepted nought while tuffbettle outraged the waywords and meansigns of their hinterhand suppliesdemands. and be they gone to splane splication? that host that hast one on the hoose when backturns when he facefronts none none in the house his geust has guest. you bet they is. and nose well down.',\n", + " 'with however what sublation of compensation in the radification of interpretation by the byeboys? being they. mr g. b. w. ashburner, s. bruno’s toboggan drive, mr faixgood, bell-chimbers, carolan crescent, mr i. i. chattaway, hilly gape, poplar park, mr q. p. dieudonney, the view, gazey peer, mr t. t. erchdeakin, multiple lodge, jiff exby rode, mr w. k. ferris–fender, fert fort, woovil doon botham ontowhom adding the tout that pumped the stout that linked the lank that cold the sandy that nextdoored the rotter that rooked the rhymer that lapped at the hoose that joax pilled.',\n", + " 'they had heard or had heard said or had heard said written.',\n", + " 'fidelisat.',\n", + " 'that there first a rudrik kingcomed to an inn court; and the seight of that yard was a perchypole with a loovahgloovah on it; last mannarks maketh man when wandshift winneth womans: so how would it hum, whoson of a which, if someof aswas to start to stunt the story on?',\n", + " 'so many needles to ponk out to as many noodles as are com-pany, they noddling all about it tutti to tempo, decumans numbered too, (a) well, that the secretary bird, better known as pandoria paullabucca, whom they thought was more like a solicitor general, indiscriminatingly made belief mid authorsagastions from schelm the pelman to write somewords to senders about her chilikin puck, laughing that poulebec would be the death of her, (b) that, well, that madges tighe, the postulate auditressee, when her daremood’s a grownian, is always on the who goes where, hoping to michal for the latter to turn up with a cupital tea before her ephumeral comes off without any much father which is parting parcel of the same goumeral’s postoppage, it being lookwhyse on the whence blows weather helping mickle so that the loiter end of that leader may twaddle out after a cubital lull with a hopes soon to ear, comprong? (c) becakes the goatsman on question, or what-ever the hen the bumbler was, feeling not up to scratch bekicks of whatever the kiddings payne inge and popper meant for him, thoughy onced at a throughlove, true grievingfrue danger, as a nirshe persent to his minstress, devourced the pair of them mather caray’s chucklings, pante blanche, and skittered his litters like the cavaliery man in cobra park for ungeborn yenkelmen, jeremy trouvas or kepin o’keepers, any old howe and any old then and when around dix dearthy dungbin, remarking sceni-cally with laddylike lassitude upon what he finally postscrapped, (d) after it’s so long till i thanked you about i do so much now thank you so very much as you introduced me to fourks, (e) will, these remind to be sane? (f) fool step! aletheometry? or just zoot doon floon?',\n", + " 'nut it out, peeby eye! onamassofmancynaves.',\n", + " 'but. top.',\n", + " 'you were in the same boat of yourselves too, getobodoff or treamplasurin; and you receptionated the most diliskious of milisk; which it all flowowered your drooplin dunlearies: but dribble a drob went down your rothole. meaning, kelly, grimes, phelan, mollanny, o’brien, macalister, sealy, coyle, hynes–joynes, naylar–traynor, courcy de courcy and gilligan–goll.',\n", + " 'stunner of oddstodds on bluebleeding boarhorse! what soresen’s head subrises thus tous out of rumpumplikun oak with, well, we cannot say whom we are looking like through his now-face? it is of noggens whilk dusts the bothsides of the seats of the bigslaps of the bogchaps of the porlarbaar of the marringaar of the lochlunn gonlannludder of the feof of the foef of forfummed ship-le-zoyd.',\n", + " 'boumce! it is polisignstunter. the sockerson boy. to pump the fire of the lewd into those soulths of bauchees, havsouse-dovers, tillfellthey deadwar knootvindict. an whele time he was rancing there smutsy floskons nodunder ycholerd for their poopishers, ahull onem fyre maynoother endnow! shatten up ship! bouououmce! nomo clandoilskins cheakinlevers! all ashored for capolic gizzards! stowlaway there, glutany of stainks! porterfillyers and spirituous suncksters, oooom oooom!',\n", + " 'as these vitupetards in his boasum he did strongleholder, bushbrows, nobblynape, swinglyswanglers, sunkentrunk, that from tin of this clucken hadded runced slapottleslup. for him had hord from fard a piping. as? of?',\n", + " 'dour douchy was a sieguldson. he cooed that loud nor he was young. he cud bad caw nor he was gray like wather parted from the say.',\n", + " 'ostia, lift it! lift at it, ostia! from the say! away from the say!',\n", + " 'himhim. himhim.',\n", + " 'hearhasting he, himmed, reromembered all the chubbs, chipps, chaffs, chuckinpucks and chayney chimebells that he had mistri-buted in port, pub, park, pantry and poultryhouse, while they, thered, the others, that are, were most emulously concerned to cupturing the last dropes of summour down through their grooves of blarneying. ere the sockson locked at the dure. which he would, shuttinshure. and lave them to sture.',\n", + " 'for be all rules of sport ’tis right that youth bedower’d to charm the night whilst age is dumped to mind the day when wather parted from the say.',\n", + " 'the humming, it’s coming. insway onsway.',\n", + " 'fingool mackishgmard obesume burgearse benefice, he was bowen hem and scrapin him in recolcitrantament to the right-about and these probenopubblicoes clamatising for an extinsion on his hostillery with his chargehand bombing their eres. tids, genmen, plays, she been goin shoother off almaynoother on-awares.',\n", + " 'you here nort farwellens rouster? ashiffle ashuffle the wayve they.',\n", + " 'from dancingtree till suttonstone there’s lads no lie would filch a crown to mull their sack and brew their tay with wather parted from the say.',\n", + " 'lelong awaindhoo’s a selverbourne enrouted to rochelle lane and liberties those mullinguard minstrelsers are marshal-sing, par tunepiped road, under where, perked on hollowy hill, that poor man of lyones, good dook weltington, hugon come er- rindwards, had hircomed to the belles bows and been cutat-trapped by the mausers. now is it town again, londmear of dub — lin! and off coursse the toller, ples the dotter of his eyes with her: moke the wanst, whye doe we aime alike a pose of poeter peaced? while the dumb he shoots the shopper rope. and they all pour forth. sans butly tuppeter sowyer, the rouged engene-rand, a barttler of the beauyne, still our benjamin liefest, some — time frankling to thise citye, whereas bigrented him a piers half subporters for his arms, josiah pipkin, amos love, raoul le feb-ber, blaize taboutot, jeremy yopp, francist de loomis, hardy smith and sequin pettit followed by the snug saloon seanad of our caf‚ b‚ranger. the scenictutors.',\n", + " 'because they wonted to get out by the goatweigh afore the sheep was looset for to wish the wobbleton whiteleg welshers kailly-kailly kellykekkle and savebeck to brownhazelwood from all the dinnasdoolins on the labious banks of their swensewn snewwes-ner, turned again weastinghome, by danesbury common, and they onely, duoly, thruely, fairly after rainydraining founty-buckets (chalkem up, hemptyempty!) till they caught the wind abroad (alley loafers passinggeering!) all the rockers on the roads and all the boots in the stretes.',\n", + " 'oh dere! ah hoy!',\n", + " 'last ye, lundsmin, hasty hosty! for an anondation of miri-fication and the lutification of our paludination.',\n", + " 'his bludgeon’s bruk, his drum is tore. for spuds we’ll keep the hat he wore and roll in clover on his clay by wather parted from the say.',\n", + " 'hray! free rogue mountone till dew mild well to corry awen and glowry! are now met by brownaboy fuinnninuinn’s former for a lyncheon partyng of his burgherbooh. the shanavan wacht. rantinroarin batteries dorans. and that whistling thief, o’ ryne o’rann. with a catch of her cunning like and nowhere a keener.',\n", + " 'the for eolders were aspolootly at their wetsend in the mailing waters, trying to. hide! seek! hide! seek! because number one lived at bothersby north and he was trying to. hide! seek! hide! seek! and number two digged up poors coort, soother, trying to. hide! seek! hide! seek! and nomber three he sleeped with lilly tekkles at the eats and he was trying to. hide! seek! hide! seek! and the last with the sailalloyd donggie he was berthed on the moherboher to the washte and they were all trying to and baffling with the walters of, hoompsydoompsy walters of. high! sink! high! sink! highohigh! sinkasink!',\n", + " 'waves.',\n", + " 'the gangstairs strain and anger’s up as hoisty rares the can and cup to speed the bogre’s barque away o’er wather parted from the say.',\n", + " 'horkus chiefest ebblynuncies!',\n", + " '— he shook be ashaped of hempshelves, hiding that shepe in his goat. and for rassembling so bearfellsed the magreedy prince of roger. thuthud. heigh hohse, heigh hohse, our kin-dom from an orse! bruni lanno’s woollies on brani lonni’s hairyparts. and the hunk in his trunk it would be an insalt foul the matter of that cellaring to a pigstrough. stop his laysense. ink him! you would think him alddaublin staking his lordsure like a gourd on puncheon. deblinity devined. wholehunting the pairk on a methylogical mission whenever theres imberillas! and calling rina roner reinette ronayne. to what mine answer is a lemans. arderleys, beedles and postbillers heard him. three points to one. ericus vericus corrupted into ware eggs. dummy up, distillery! broree aboo! run him a johnsgate down jameses-lane. begetting a wife which begame his niece by pouring her youngthings into skintighs. that was when he had dizzy spells. till gladstools pillools made him ride as the mall. thanks to his huedobrass beerd. lodenbroke the longman, now he canseels under veerious persons but is always that rorke relly! on consideration for the musickers he ought to have down it. pass out your cheeks, why daunt you! penalty, please! there you’ll know how warder barded the bollhead that parssed our alley. we just are upsidedown singing what ever the dimkims mummur alla-lilty she pulls inner out heads. this is not the end of this by no manners means. when you’ve bled till you’re bone it crops out in your flesh. to tell how your mead of, mard, is made of. all old dadgerson’s dodges one conning one’s copying and that’s what wonderland’s wanderlad’ll flaunt to the fair. a trancedone boy-script with tittivits by. ahem. you’ll read it tomorrow, marn, when the curds on the table. a nigg for a nogg and a thrate for a throte. the auditor learns. still pumping on torkenwhite rad-lumps, lencs. in preplays to anonymay’s left hinted palinode obviously inspiterebbed by a sibspecious connexion. note the notes of admiration! see the signs of suspicion! count the hemi-semidemicolons! screamer caps and invented gommas, quoites puntlost, forced to farce! the pipette will say anything at all for a change. and you know what aglove means in the murdrus due-luct! fewer to feud and rompant culotticism, a fugle for the glee — men and save, sit and sew. and a pants outsizinned on the doughertys’ duckboard pointing to peace at home. in some, lawanorder on lovinardor. wait till we hear the boy of biskop reeling around your postoral lector! epistlemadethemology for deep dorfy doubtlings. as we’ll lay till break of day in the bunk of basky, o! our island, rome and duty! well tried, buckstiff! batt in, boot! sell him a breach contact, the vendoror, the buylawyer one hyde, sack, hic! two stick holst, lucky! finnish make goal! first you were nomad, next you were namar, now you’re nu-mah and it’s soon you’ll be nomon. hence counsels ecclesiast. there’s every resumption. the forgein offils is on the shove to lay you out dossier. darby’s in the yard, planning it on you, plot and edgings, the whispering peeler after cooks wearing an illfor-mation. the find of his kind! an artist, sir! and dirt cheap at a sovereign a skull! he knows his finsbury follies backwoods so you batter see to your regent refutation. ascare winde is rifing again about nice boys going native. you know who was wrote about in the orange book of estchapel? basil and the two other men from king’s avenance. just press this cold brand against your brow for a mow. cainfully! the sinus the curse. that’s it. hung chung egglyfella now speak he tell numptywumpty top-sawys belongahim pidgin. secret things other persons place there covered not. how you fell from story to story like a sagasand to lie. enfilmung infirmity. on the because alleging to having a finger a fudding in pudding and pie. and here’s the witnesses. glue on to him, greevy! bottom anker, noordeece! and kick kick killykick for the house that juke built! wait till they send you to sleep, scowpow! by jurors’ cruces! then old hunphy-dunphyville’ll be blasted to bumboards by the youthful herald who would once you were. he’d be our chosen one in the matter of brittas more than anarthur. but we’ll wake and see. the wholes poors riches of ours hundreds of manhoods and womhoods. two cents, two mills and two myrds. and it’s all us rangers you’ll be facing in the box before the twelfth correctional. like one man, gell. between all the misses mountsackvilles in their halfmoon haemicycles, gasping to giddies to dye for the shame. just hold hard till the one we leapt out gets her yearing! hired in cameras, extra! with his honour surpacker on the binge. so yelp your guilt and kitz the buck. you’ll have loss of fame from wimme-game’s fake. forwards! one bully son growing the goff and his twinger read out by the nazi priers. you fought as how they’d never woxen up, did you, crucket? it will wecker your earse, that it will! when hives the court to exchequer ’tis the child which gives the sire away. good for you, richmond rover! scrum around, our side! let him have another between the spindlers! a grand game! dalymount’s decisive. don gouverneur buckley’s in the tara tribune, sporting the insides of a rhutian jhanaral and little mrs ex–skaerer-sissers is bribing the halfpricers to pray for her widower in his gravest embazzlement. you on her, hosy jigses, that’ll be some nonstop marrimont! you in your stolen mace and anvil, magnes, and her burrowed in berkness cirrchus clouthses. fummuccumul with a graneen aveiled. playing down the slavey touch. much as she was when the.fancy cutter out col-lecting milestones espied her aseesaw on a fern. so nimb, he said, a dat of dew. between furr-y-benn and ferr-y-bree. in this tear vikloe vich he lofed. the smiling ever. if you pulls me over pay me, prhyse! a talor would adapt his caulking trudgers on to any shape at see. address deceitfold of wovens weard. the wonder of the women of the world together, moya! and the lovablest lima since ineen maccormick maccoort macconn o’puckins mackundred. only but she is a little width wider got. be moving abog. you cannot make a limousine lady out of a hillman minx. listun till you’ll hear the mudquirt accent. this is a bulgen horesies, this is wollan indulgencies, this is a flemsh. tik. scapu-lars, beads and a stump of a candle, hubert was a hunter, chemins de la croixes and rosairette’s egg, all the trimmings off the tree that she picked up after the clontarf voterloost when o’bryan macbruiser bet norris nobnut. becracking his cucconut be-tween his kknneess. umpthump, here inkeeper, it’s the doater — een’s wednessmorn! delphin dringing! grusham undergang! and the real hymernians strenging strong at knocker knocker! holy and massalltolled. you ought to tak a dos of frut. jik. sauss. you’re getting hoovier, a twelve stone hoovier, fullends a twelve stone hoovier, in your corpus entis and it scurves you right, demnye! aunt as unclish ams they make oom. but nichtia you bound not to loose’s gone on neffin since she clapped her charmer on him at gormagareen. at the gunting munting hunting punting. the eitch is in her blood, arrah! for a frecklesome freshcheeky sweetworded lupsqueezer. and he shows how he’ll pick him the lock of her fancy. poghue! poghue! poghue! and a good jump, powell! clean over all their heads. we could kiss him for that one, couddled we, huggins? sparkes is the footer to hance off nancies. scaldhead, pursue! before you bunkledoodle down upon your birchentop again after them three blows from time, drink and hurry. the same three that nursed you, skerry, badbols and the grey one. all of your own club too. with the fistful of burryberries were for the massus for to feed you living in dying. buy bran biscuits and you’ll never say dog. and be in the finest of companies. morialtay and kniferope walker and rowley the barrel. with longbow of the lie. slick of the trick and blennercassel of the brogue. clanruckard for ever! the fenn, the fenn, the kinn of all fenns! deaf to the winds when for croonacreena. fisht! and it’s not now saying how we are where who’s softing what rushes. merryvirgin forbed! but of they never eat soullfriede they’re ating it now. with easter greeding. angus! angus! angus! the keykeeper of the keys of the seven doors of the dreamadoory in the house of the house-hold of hecech saysaith. whitmore, whatmore? give it over, give it up! mawgraw! head of a helo, chesth of champgnon, eye of a gull! what you’d if he’d. the groom is in the greenhouse, gattling out his. gun! that lad’s the style for. lannigan’s ball! now a drive on the naval! the shallburn shock. never mind your gibbous. slip on your ropen collar and draw the noosebag on your head. nobody will know or heed you, postumus, if you skip round schlymartin by the back and come front sloomutren to beg in one of the shavers’ sailorsuits. three climbs three-quickenthrees in the garb of nine. we’ll split to see you mouldem imparvious. a wing for oldboy welsey wandrer! well spat, witty wagtail! now piawn to bishop’s forthe! moove. there’s mumblesome wadding murch cranking up to the hornemooni-um. drawg us out ivy eve in the hall of alum! the finnecies of poetry wed music. feeling the jitters? you’ll be as tight as trivett when the knot’s knutted on. now’s your never! peena and queena are duetting a giggle-for-giggle and the brideen alan-nah is lost in her diamindwaiting. what a magnificent gesture you will show us this gallus day. clean and easy, be the hooker! and a free for croaks after. dovlen are out for it. so is rathfinn. and, hike, here’s the hearse and four horses with the interpro-vincial crucifixioners throwing lots inside to know whose to be their gosson and whereas to brake the news to morhor. how our myterbilder his fullen aslip. and who will wager but he’ll shonny bhoy be, the fleshlumpfleeter from poshtapengha and all he bares sobsconcious inklings shadowed on soulskin’. its segnet yores, the strake of a hin. nup. laying the cloth, to fore of them. and thanking the fish, in core of them. to pass the grace for gard sake! ahmohn. mr justician matthews and mr justician marks and mr justician luk de luc and mr justinian johnston–johnson. and the aaskart, see, behind! help, help, hurray! all — sup, allsop! four ghools to nail! cut it down, mates, look slippy! they’ve got a dathe with a swimminpull. dang! ding! dong! dung! dinnin. isn’t it great he is swaying above us for his good and ours. fly your balloons, dannies and dennises! he’s door-knobs dead! and annie delap is free! ones more. we could ate you, par buccas, and imbabe through you, reassuranced in the wild lac of gotliness. one fledge, one brood till hulm culms evurdyburdy. huh the throman! huh the traidor. huh the truh. arrorsure, he’s the mannork of arrahland over-sense he horrhorrd his name in thuthunder. rrrwwwkkkrrr! and seen it rudden up in fusefiressence on the flashmurket. p.r.c.r.l.l. royloy. of the rollorrish rattillary. the lewd-ningbluebolteredallucktruckalltraumconductor! the unnamed nonirishblooder that becomes a greenislender overnight! but we’re molting superstituettes out of his fulse thortin guts. tried mark, easterlings. sign, soideric o’cunnuc, rix. adversed ord, magtmorken, kovenhow. there’s a great conversion, myn! cou-cous! find his causcaus! from motometusolum through bulley and cowlie and diggerydiggerydock down to bazeness’s usual? he’s alight there still, by mike! loose afore! bung! bring forth your deed! bang! till is the right time. bang! partick thistle agen s. megan’s versus brystal palace agus the walsall! putsch! tiemore moretis tisturb badday! the playgue will be soon over, rats! let sin! geh tont! all we wants is to get peace for posses-sion. we dinned unnerstunned why you sassad about thurteen to aloafen, sor, kindly repeat! or ledn us alones of your lungorge, parsonifier propounde of our edelweissed idol worts! shaw and shea are lorning obsen so hurgle up, gandfarder, and gurgle me gurk. you can’t impose on frayshouters like os. every tub here spucks his own fat. hang coersion everyhow! and smotther-mock gramm’s laws! but we’re a drippindhrue gayleague all at ones. in the buginning is the woid, in the muddle is the sound-dance and thereinofter you’re in the unbewised again, vund vulsyvolsy. you talker dunsker’s brogue men we our souls speech obstruct hostery. silence in thought! spreach! wear anartful of outer nocense! pawpaw, wowow! momerry twelfths, noebroed! that was a good one, ha! so it will be quite a material what may farther be unvuloped for you, old mighty, when it’s aped to foul a delfian in the mahnung. ha ha! talk of paddy- barke’s echo! kick nuck, knockcastle! muck! and you’ll nose it, o you’ll nose it, without warnward from we. we don’t know the sendor to whome. but you’ll find chiggenchugger’s taking the treaclyshortcake with bugle and the bitch pairsadrawsing and horssmayres prosession tyghting up under the threes. stop. press stop. to press stop. all to press stop. and be the seem talkin wharabahts hosetanzies, dat sure is sullibrated word! bing bong! saxolooter, for congesters are salders’ prey. snap it up in the loose, patchy the blank! anyone can see you’re the son of a gunnell. fellow him up too, carlow! woes to the worm-quashed, aye, and wor to the winner! think of aerian’s wall and the fall of toss. give him another for to volleyholleydoodlem! his lights not all out yet, the liverpooser! boohoohoo it oose! with seven hores always in the home of his thinkingthings, his nodsloddledome of his noiselisslesoughts. two idas, two evas, two nessies and rubyjuby. phook! no wonder, pipes as kirles, that he sthings like a rheinbok. one bed night he had the dely-siums that they were all queens mobbing him. fell stiff. oh, ho, ho, ho, ah, he, he! abedicate yourself it just gegs our goad. he’ll be the deaf of us, pappappoppopcuddle, samblind daiy-rudder. yus, sord, fathe, you woll, putty our wraughther! what we waits be after? whyfore we come agooding? none of you, cock icy! you keep that henayearn and her fortycantle glim lookbehinder. we might do with rubiny leeses. but of all your wanings send us out your peppydecked ales and you’ll not be such a bad lot. the rye is well for whose amind but the wheateny one is proper lovely. b e n k! we sincerestly trust that missus with the kiddies of sweet gorteen has not b i n k to their very least tittles deranged if in b u n k and we greesiously augur for your meggers a b e n k b a n k b o n k to sloop in with all sorts of adceterus and adsaturas. it’s our last fight, megantic, fear you will! the refergee’s took to hailing to time the pass. there goes the blackwatchwomen, all in white, flaxed up, pur-gad! right toe, armitage! tem for tam at timmotty hall! we’re been carried away. beyond bournes and bowers. so we’ll leave it to keyhoe, danelly and pykemhyme, the three muskrat- eers, at the end of this age that had it from variants’ katey sherratt that had it from variants’ katey sherratt’s man for the bonnefacies of blashwhite and blushred of the aquasancta liffey patrol to wind up and to tells of all befells after that to mocked majesty in the malincurred mansion.',\n", + " 'so you were saying, boys? anyhow he what?',\n", + " \"so anyhow, melumps and mumpos of the hoose uncommons, after that to wind up that longtobechronickled gettogether thanksbetogiving day at glenfinnisk-en-la-valle, the anniver-sary of his finst homy commulion, after that same barbecue bean — feast was all over poor old hospitable corn and eggfactor, king roderick o’conor, the paramount chief polemarch and last pre-electric king of ireland, who was anything you say yourself be — tween fiftyodd and fiftyeven years of age at the time after the socalled last supper he greatly gave in his umbrageous house of the hundred bottles with the radio beamer tower and its hangars, chimbneys and equilines or, at least, he was’nt actually the then last king of all ireland for the time being for the jolly good reason that he was still such as he was the eminent king of all ireland himself after the last preeminent king of all ireland, the whilom joky old top that went before him in the taharan dy-nasty, king arth mockmorrow koughenough of the leathered leggions, now of parts unknown, (god guard his generous comicsongbook soul!) that put a poached fowl in the poor man’s pot before he took to his pallyass with the weeping eczema for better and worse until he went under the grass quilt on us, never-theless, the year the sugar was scarce, and we to lather and shave and frizzle him, like a bald surging buoy and himself down to three cows that was meat and drink and dogs and washing to him, ’tis good cause we have to remember it, going through summersultryngs of snow and sleet witht the widow nolan’s goats and the brownes girls neats anyhow, wait till i tell you, what did he do, poor old roderick o’conor rex, the aus-picious waterproof monarch of all ireland, when he found him — self all alone by himself in his grand old handwedown pile after all of them had all gone off with themselves to their castles of mud, as best they cud, on footback, owing to the leak of the mccarthy’s mare, in extended order, a tree’s length from the longest way out, down the switchbackward slidder of the land-sown route of hauburnea’s liveliest vinnage on the brain, the unimportant parthalonians with the mouldy firbolgs and the tuatha de danaan googs and the ramblers from clane and all the rest of the notmuchers that he did not care the royal spit out of his ostensible mouth about, well, what do you think he did, sir, but, faix, he just went heeltapping through the winespilth and weevily popcorks that were kneedeep round his own right royal round rollicking toper’s table, with his old roderick ran-dom pullon hat at a lanty leary can't on him and mike brady’s shirt and greene’s linnet collarbow and his ghenter’s gaunts and his macclefield’s swash and his readymade reillys and his pan-prestuberian poncho, the body you’d pity him, the way the world is, poor he, the heart of midleinster and the supereminent lord of them all, overwhelmed as he was with black ruin like a sponge out of water, allocutioning in bellcantos to his own oliverian society macguiney’s dreans of ergen adams and thruming through all to himself with diversed tonguesed through his old tears and his ould plaised drawl. starkened by the most regal of belches, like a blurney cashelmagh crooner that lerking clare air, the blackberd’s ballad i’ve a terrible errible lot todue todie todue tootorribleday, well, what did he go and do at all, his most exuberant majesty king roderick 0’conor but, arrah bedamnbut, he finalised by lowering his woolly throat with the wonderful midnight thirst was on him, as keen as mustard, he could not tell what he did ale, that bothered he was from head to tail, and, wishawishawish, leave it, what the irish, boys, can do, if he did’nt go, sliggymaglooral reemyround and suck up, sure enough, like a trojan, in some particular cases with the assistance of his vene-rated tongue, whatever surplus rotgut, sorra much, was left by the lazy lousers of maltknights and beerchurls in the different bot-toms of the various different replenquished drinking utensils left there behind them on the premisses by that whole hogsheaded firkin family, the departed honourable homegoers and other sly- grogging suburbanites, such as it was, fall and fall about, to the brindishing of his charmed life, as toastified by his cheeriubi-cundenances, no matter whether it was chateaubottled guiness’s or phoenix brewery stout it was or john jameson and sons or roob coccola or, for the matter of that, o’connell’s famous old dublin ale that he wanted like hell, more that halibut oil or jesuits tea, as a fall back, of several different quantities and quali-ties amounting in all to, i should say, considerably more than the better part of a gill or naggin of imperial dry and liquid measure till, welcome be from us here, till the rising of the morn, till that hen of kaven’s shows her beaconegg, and chapwellswendows stain our horyhistoricold and father macmichael stamps for aitch o’clerk mess and the litvian newestlatter is seen, sold and delivered and all’s set for restart after the silence, like his ancestors to this day after him (that the blazings of their ouldmouldy gods may attend to them we pray!), overopposides the cowery lad in the corner and forenenst the staregaze of the cathering candled, that adornment of his album and folkenfather of familyans, he came acrash a crupper sort of a sate on accomondation and the very boxst in all his composs, whereuponce, behome the fore for cove and trawlers, heave hone, leave lone, larry’s on the focse and faugh machugh o’bawlar at the wheel, one to do and one to dare, par by par, a peerless pair, ever here and over there, with his fol the dee oll the doo on the flure of his feats and the feels of the fumes in the wakes of his ears our wineman from barleyhome he just slumped to throne.\",\n", + " 'so sailed the stout ship nansy hans. from liff away. for nattenlaender. as who has come returns. farvel, farerne! good-bark, goodbye!',\n", + " 'now follow we out by starloe!']},\n", + " 'pop': {'meta': {'train_data': ['ik phone karaan 100 bande aan',\n", + " 'maange hath khali main ni dinda daan',\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'ik phone karaan 100 bande aan',\n", + " \"ain't no handouts main ni dinda daan\",\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'ghar raat main late aaya',\n", + " 'lifestyle meri vekh yaara',\n", + " 'round round with my mates yaara',\n", + " 'tu putha main straight yaara',\n", + " 'mumbai main ikka de naal',\n", + " 'kehnda duniya nu dikhda de kamaal',\n", + " 'badshah mera yaar aeya',\n", + " 'par bakiyan layi main tyaar aan haan',\n", + " 'bada bol na',\n", + " 'apne interviews ch mooh khol na',\n", + " 'tere show hunde si sold-out',\n", + " 'so put it playing you old now haan',\n", + " 'ustaad kehnde tuhadi launda class',\n", + " 'saadi pohnch uchi bande assi khaas',\n", + " 'ik phone karaan 100 bande aan',\n", + " 'maange hath khali main ni dinda daan',\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'ik phone karaan so bande aan',\n", + " \"ain't no handouts main ni dinda daan\",\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'angrezi punjabi ch always main maaran chapedan',\n", + " 'punjab jaawan chandigarh da audi gehra',\n", + " 'sab woofer wajjan shisheyan ch bas mera hi mera',\n", + " 'photo le la par main phone number ni dena',\n", + " 'chup-chap rehnda fer vi mere val attention',\n", + " 'ohda boyfriend karda tension jad mainu mareya mention',\n", + " 'munde mangan maithon kehnde bhaji dedo chance',\n", + " 'khud mehnat karo saleyon tuhade kol hai ni hands?',\n", + " 'ik phone karaan 100 bande aan',\n", + " 'maange hath khali main ni dinda daan',\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'ik phone karaan so bande aan',\n", + " \"ain't no handouts main ni dinda daan\",\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'jithe javaan othe hundi aa meri pechhaan',\n", + " 'hashish',\n", + " 'cocaine',\n", + " 'heroin',\n", + " 'opium',\n", + " 'lsd',\n", + " 'dmt',\n", + " 'stp, blt',\n", + " 'a&p, irt',\n", + " 'apc, alcohol',\n", + " 'cigarettes, shoe polish and peyote',\n", + " 'dexadrine, benzedrine, methedrine',\n", + " 's-e-x and y-o-u, wow!',\n", + " 'is he busy?',\n", + " 'busy is he!',\n", + " 'is he busy?',\n", + " 'busy is he!',\n", + " 'go!',\n", + " 'whoa!',\n", + " 'honey honey honey man!',\n", + " 'honey honey honey man!',\n", + " 'faster faster',\n", + " 'faster faster',\n", + " 'faster faster',\n", + " 'go!',\n", + " 'is he busy?',\n", + " 'busy is he!',\n", + " 'is he busy?',\n", + " 'busy is he!',\n", + " 'go!',\n", + " 'whoa!',\n", + " 'sugar sugar honey man!',\n", + " 'sugar sugar honey man!',\n", + " 'faster faster',\n", + " 'faster faster',\n", + " 'faster faster',\n", + " 'go!',\n", + " 'bzzz bzzz',\n", + " 'oh yes the honey man is here!',\n", + " 'sting sting',\n", + " 'oh boy the honey man is here!',\n", + " 'is he busy?',\n", + " 'busy is he!',\n", + " 'is he busy?',\n", + " 'busy is he!',\n", + " 'go!',\n", + " 'whoa!',\n", + " 'honey honey honey man!',\n", + " 'sugar sugar honey man!',\n", + " 'faster faster',\n", + " 'faster faster',\n", + " 'faster faster',\n", + " 'go!',\n", + " 'kimi wo kitto sagashiteta zutto motometeta',\n", + " 'hitori de ikirareru sou omoi aruiteta machi de',\n", + " \"just thinkin' of you\",\n", + " 'ai suru sono tsuyosa wo ima shirihajimete',\n", + " 'you can take me to heaven',\n", + " 'tobitatsu tsubasa kureru',\n", + " 'kimi wa enjeeru',\n", + " 'all through twenty-four seven',\n", + " 'kimi ni aitakute',\n", + " 'itsu demo doko demo hanarete itemo',\n", + " \"(i'm) close to you\",\n", + " \"(i'll) close to you\",\n", + " 'sunny day sora no aosa ni kokorobosoku naru',\n", + " 'kimi wo nakuseba karappo na sonna boku dakara',\n", + " \"just thinkin' of you\",\n", + " 'kimi ni au mae no boku wo omoidasenai',\n", + " 'you can take me to heaven',\n", + " 'tobitatsu yuuki kureru',\n", + " 'kimi wa enjeeru',\n", + " 'all through twenty-four seven',\n", + " 'kimi wo shiritakute',\n", + " 'ima yori dare yori motto zutto',\n", + " \"(i'll) close to you\",\n", + " \"sekai de what's goin' on?\",\n", + " 'ki zukanakatta tragedy',\n", + " 'kanashii nyuusu ga mata',\n", + " 'muhyoujou yosootteru',\n", + " 'sonna yoru wa kimi ni aitai itsumo yori motto...',\n", + " 'you can take me to heaven',\n", + " 'ai wo oshiete kureru',\n", + " 'kimi wa enjeeru',\n", + " 'all through twenty-four seven',\n", + " 'kimi ni aitakute',\n", + " 'itsu demo doko demo hanarete itemo',\n", + " \"(i'm) close to you\",\n", + " 'you can take me to heaven',\n", + " 'tobitatsu yuuki kureru',\n", + " 'kimi wa enjeeru',\n", + " 'all through twenty-four seven',\n", + " 'kimi wo shiritakute',\n", + " 'ima yori dare yori motto zutto',\n", + " \"(i'll) close to you\",\n", + " 'you can take me to heaven',\n", + " 'tobitatsu tsubasa kureru',\n", + " 'kimi wa enjeeru',\n", + " 'all through twenty-four seven',\n", + " 'kimi ni aitakute',\n", + " 'itsu demo doko demo hanarete itemo',\n", + " \"(i'm) close to you\",\n", + " 'abhi mujh mein kahin',\n", + " 'baaki thodi si hai zindagi',\n", + " 'jagi dhadkan nayi',\n", + " 'jaana zinda hoon main to abhi',\n", + " 'kuch aisi lagan is lamhe mein hai',\n", + " 'ye lamha kahan tha mera!',\n", + " 'ab hai saamne, isse chhu loon zara',\n", + " 'mar jaaun ya jee loon zara?',\n", + " 'khushiyan choom loon, ya ro loon zara?',\n", + " 'mar jaaun ya jee loon zara?',\n", + " 'ho, abhi mujh mein kahin',\n", + " 'baaki thodi si hai zindagi',\n", + " 'ho dhoop mein jalte huye tan ko chhaya ped ki mil gayi',\n", + " 'roothe bacche ki hansi jaise fuslaane se phir khil gay',\n", + " 'kuch aisa hi ab mehsoos dil ko ho raha hai',\n", + " 'barson ke puraane zakhm pe marham laga sa hai',\n", + " 'kuchh aisa reham is lamhe mein hai',\n", + " 'ye lamha kahan tha mera!',\n", + " 'ab hai saamne, isse chhu loon zara',\n", + " 'mar jaaun ya jee loon zara?',\n", + " 'khushiyan choom loon, ya ro loon zara?',\n", + " 'mar jaaun ya jee loon zara?',\n", + " 'dor se tooti patang jaisi thi ye zindgaani meri',\n", + " 'aaj hoon kal ho mera na ho, har din thi kahani meri',\n", + " 'ek bandhan naya peeche se ab mujhko bulaaye',\n", + " 'aane waale kal ki kyun fikar mujhko sataa jaaye?',\n", + " 'ek aisi chubhan is lamhe mein hai',\n", + " 'ye lamha kahan tha mera!',\n", + " 'ab hai saamne, isse chhu loon zara',\n", + " 'mar jaaun ya jee loon zara?',\n", + " 'khushiyan choom loon, yya ro loon zara?',\n", + " 'mar jaaun ya jee loon zara?',\n", + " 'neon jeongmal yeppeo',\n", + " 'neoman bomyeon nae ipkkorineun hepeo',\n", + " 'nae sarme helper ne deoge ijeseoya gijigae pyeo',\n", + " 'gajaega gepyeonin geotcheoreom nae pyeon',\n", + " 'docu-eseo melodrama-ro gaepyeon',\n", + " 'i sesang modeun lovestory-reul jaeyeonhae',\n", + " 'neoraneun taeyange nan imi deyeonne',\n", + " 'an joheun giundeureun neoro inhae tteeo nae',\n", + " 'nae kkeoin deut nae kkeo anin some-gateun ge',\n", + " 'anya teumeul julge hwajangeul jiwosseodo naekkeo',\n", + " 'neol mannan geon josangnimdo',\n", + " 'daegyeonhaehasil ge ppeonhae modeun ge byeonhae',\n", + " 'eobseodo nae yeope neol hyanghae heeomchyeo',\n", + " 'uriui destiny apeuro gyesokdoeni',\n", + " 'geokjeong ma areumdaun gusogini',\n", + " 'nae geotgwa sok imi neo bakke mot nogyeo',\n", + " 'neon jeongmal yeppeo neomudo areumdawo',\n", + " 'gakkeumeun miwo nareul tto oemyeonhal ttaen',\n", + " 'geuraedo yeppeo neomudo areumdawo',\n", + " 'feel so good ooh lalalala',\n", + " 'mworalkka gamdang an dwae',\n", + " 'igeon machi ajjilhan seutilleto twinkle-han daiawa',\n", + " 'seksihan shape-ui sedancheoreom nuni ga',\n", + " 'geunyeoga mandeureonaen saeroun baechiya',\n", + " 'juiphaneun pathos-e jungdokdwae',\n", + " 'igijeogige sarawatdeon nae sarmeun gulbokhae',\n", + " 'nal gaman an duge mandeune eolma',\n", + " 'mot ganeun mojaran gamjeongeun an sseul ge',\n", + " 'baradeon isanghyeongboda yeppeo',\n", + " 'maja neon isangjeogin yeoja baek beon malhae',\n", + " 'tto imman apeun pattern ppaetgo sipeun that girl',\n", + " 'simdo inneun jindo ppael girl',\n", + " 'baradeon isanghyeongboda yeppeo',\n", + " 'maja neon isangjeogin yeoja baek beon badajwo',\n", + " 'nae jinchwijeogin gobaek saranghae maebeon',\n", + " 'better latethan never baby',\n", + " 'neon jeongmal yeppeo neomudo areumdawo',\n", + " 'gakkeumeun miwo nareul tto oemyeonhal ttaen',\n", + " 'geuraedo yeppeo neomudo areumdawo',\n", + " 'feel so good ooh lalalala',\n", + " 'girl gakkeum naege deungeul dollin',\n", + " 'ne moseupdo areumdawo',\n", + " 'yeppeo ne mameul da naegeman jwo',\n", + " 'neon jeongmal yeppeo neomudo areumdawo',\n", + " 'gakkeumeun miwo nareul tto oemyeonhal ttaen',\n", + " 'geuraedo yeppeo neomudo areumdawo',\n", + " 'feel so good ooh lalalala',\n", + " \"somewhere there's music\",\n", + " 'how faint the tune',\n", + " \"somewhere there's heaven\",\n", + " 'how high the moon',\n", + " 'there is no love',\n", + " 'when love is far away too',\n", + " 'till it comes true',\n", + " 'that you love me as i love you',\n", + " \"somewhere there's heaven\",\n", + " \"it's where you are\",\n", + " \"somewhere there's music\",\n", + " 'how near, how far',\n", + " 'the darkest night would shine',\n", + " 'if you would come to me soon',\n", + " 'until you will, how still my heart',\n", + " 'how high the moon',\n", + " 'how high the moon',\n", + " 'is the name of this song',\n", + " 'how high the moon',\n", + " 'though the words may be wrong',\n", + " \"we're singing it\",\n", + " 'because you ask for it',\n", + " \"so we're swinging it just for you\",\n", + " 'how high the moon',\n", + " 'does it touch the stars',\n", + " 'how high the moon',\n", + " 'does it reach up to mars',\n", + " 'though the words may be wrong',\n", + " 'to this song',\n", + " \"we're asking how high, high, high\",\n", + " 'high, high is the moon',\n", + " 'boo bi yoo bi',\n", + " 'bi yu di di ooh dun',\n", + " 'dabba oohbee',\n", + " 'boo di yoo di',\n", + " 'di yu di dee dee doohdun',\n", + " 'di di oohnbee',\n", + " 'bu di yu dan dan dan',\n", + " 'dee boognbee',\n", + " 'aheedee doo doo abbi woo do ee',\n", + " 'woah ba bee ba bap beya oh',\n", + " 'ein bap bap dein',\n", + " 'hey ohndalady deepbap',\n", + " 'bumblebee',\n", + " 'deedeedeedeedee deedee',\n", + " 'doo doot doop antdoodly wah',\n", + " 'vebeeoopm dabba oohbayoum dabie',\n", + " 'oohmbappa eupembappi ah',\n", + " 'baby ohm bap',\n", + " 'baby ooh bee bap bey',\n", + " 'oohtoo undn datley udnda da',\n", + " 'eun bu! eun bi! un ba! un bey!',\n", + " 'un bey un bey in byron bay',\n", + " 'moody eetn deeby deepi ah ba',\n", + " 'beebeeoohdibap da bap! un boo bay',\n", + " 'deeoohdedootundap lah day',\n", + " 'oohtdee undeedoodee dootn',\n", + " 'dadaploday',\n", + " \"beepbee oo'bapbee ootndap bobay\",\n", + " 'beepbee ootn da loday',\n", + " 'a dooblydoobly dooblydoobly',\n", + " 'dooblydoobly dooblydoobly',\n", + " 'dooblydeetn deepdeedee eudabapoya',\n", + " 'beebeeum beep beebee bebop',\n", + " 'beebeeoohbebap dedap un boobay',\n", + " 'deeodeedoodee dap lady',\n", + " 'oohtdee undeedoodee dootn',\n", + " 'dadaploday',\n", + " \"beepbee oo'bapbee ootndap bobay\",\n", + " 'beepbee ootn da loday',\n", + " 'deudedeu deun daudau baubau',\n", + " 'bieubau badee beiu beiu ooh',\n", + " 'heee he a we ah',\n", + " 'heee he a eeah hah',\n", + " 'eeetdee eutandabbie utan',\n", + " \"dooiedoodoon'lyba\",\n", + " 'bieu bau bau n daisy ba',\n", + " 'beedeedee dedee dedee',\n", + " 'beedeedee ba-oi',\n", + " 'adoodlyoohtndo oohntdo oohntdo',\n", + " 'deedee oothndo baobaobao baeu',\n", + " \"beet-deet-dee doodly'ap'n'boobie\",\n", + " \"bootbe up'n babba un baw baw ba-bey\",\n", + " 'beedeedee yabadoreda bababo',\n", + " \"baya baba bobobo bi'yabeeba\",\n", + " 'though the words may be wrong to this song',\n", + " 'we hope to make high, high, high, high',\n", + " 'high as the moon',\n", + " 'mere hothon se dhuandhaar nikalti hai jo boli',\n", + " 'jaise, jaise bandook ki goli',\n", + " 'mere tevar mein hai tehzeeb ki rangeen rangoli',\n", + " 'jaise, jaise ho eid meiin holi',\n", + " 'mere hothon se dhuaandhaar nikalti hai jo boli',\n", + " 'jaise, jaise bandook ki goli',\n", + " 'mere tevar mein hai tehzeeb ki rangeen rangoli',\n", + " 'jaise, jaise ho eid mein holi',\n", + " 'mere jeevan ki dasha',\n", + " 'thoda raston ka nasha',\n", + " 'thodi manzil ki pyaas hai',\n", + " 'baaki sab first class hai',\n", + " 'baaki sab first class hai',\n", + " 'baaki sab first class hai',\n", + " 'haan kasam se',\n", + " 'baaki sab first class hai',\n", + " 'pal mein tola, pal mein masha',\n", + " 'jaisi baazi waisa pasha',\n", + " 'apni thodi hattke duniyadaari hai',\n", + " 'karna kya hai chandi sona',\n", + " 'jitna paana, utna khona',\n", + " 'hum to dil ke dhande ke vyapari hain',\n", + " 'meri muskaan liye kabhi aati hai subah',\n", + " 'kabhi shamein udaas hai',\n", + " 'baaki sab first class hai',\n", + " 'baaki sab first class hai',\n", + " 'baaki sab first class hai',\n", + " 'haan, kasam se',\n", + " 'baaki sab first class hai',\n", + " 'ho, sabke hothon pe charcha tera',\n", + " 'bantta galiyon mein parcha tera',\n", + " 'yun to aashiq hain laakhon magar',\n", + " 'sabse ooncha hai darjaa tera',\n", + " 'jeb mein ho athanni bhale',\n", + " 'chalta noton mein kharcha tera',\n", + " 'yu to aashiq hain laakhon magar',\n", + " 'sabse ooncha hai darjaa tera',\n", + " 'sabse ooncha hai darjaa tera',\n", + " 'meri taareef se chhupti phire badnaamiyan meri',\n", + " 'jaise, jaise ho aankh micholi',\n", + " 'mere tevar mein hai tehzeeb ki rangeen rangoli',\n", + " 'jaise, jaise ho eid mein holi',\n", + " 'mere jeevan ki dasha',\n", + " 'thoda raston ka nasha',\n", + " 'thodi manzil ki pyaas hai',\n", + " 'baaki sab first class hai',\n", + " 'baaki sab first class hai',\n", + " 'baaki sab first class hai',\n", + " 'haan, kasam se',\n", + " 'baaki sab first class hai, haan',\n", + " 'yeah you know what?',\n", + " 'it feel so good back to be single so good',\n", + " 'all ma single people in the house say freedom!',\n", + " 'ije deoneun niga eodiseo nugurang mwol hadeun',\n", + " 'hey hey hey i don’t care sang-gwan an hallae',\n", + " 'hollo-in modeun naldeuri iri joheunji',\n", + " 'wae wae wae nan mollasseulgga',\n", + " 'sureun manhi masiji mallago jibeneun bballi deureogarago',\n", + " 'jansori haneun saram eopseo neomu joha i feel free',\n", + " 'naneun mae-iri woo-ha',\n", + " 'nae balmoge geollin jokswae naneun deonjyeosseo',\n", + " 'ladies i’m back, i’m back, i’m back',\n", + " 'naega dorawasseo single-ro back again',\n", + " 'wae neon ireon nareul geokjeonghaneun geoni',\n", + " 'naneun gwaenchanheunde',\n", + " 'hey neo ije dasin nareul chajjima we can’t go back whoo!',\n", + " 'don’t wanna go back i never go back',\n", + " 'naega dasi doragalgeoran saeng-gageun hajima',\n", + " 'urin chu-eogil bbun miryeon ddawin eopseo',\n", + " 'don’t wanna go back, i never go back',\n", + " 'naega neoreul geuriwohal georan chaggak hajima',\n", + " 'neoneun gwageo-il bbun yeah i ain’t going back to you',\n", + " 'good to be single, i don’t need a girlfriend',\n", + " 'jigyeoun datum ije ggeutigo',\n", + " 'ggong nae mogeul joineun nunchi bol piryodo eopseuni',\n", + " 'feel so high high, touch the sky sky',\n", + " 'neoneun ireon nal deoneun japji mothae yeah, l. joe',\n", + " 'wae munjareul ssibeonnyago jigeumeun eodinyago',\n", + " 'naega eodiseo nugureul mannadeon neoneun ije sin-gyeong-ggeo',\n", + " 'neoman bomyeon jjajeungna like masul lae ape natanajima',\n", + " 'you and i ije namiya ni gal gireul ga i’ma live my life',\n", + " 'wae neon ireon nareul geokjeonghaneun geoni',\n", + " 'naneun gwaenchanheunde',\n", + " 'hey neo ije dasin nareul chajjima we can’t go back whoo!',\n", + " 'don’t wanna go back i never go back',\n", + " 'naega dasi doragalgeoran saeng-gageun hajima',\n", + " 'urin chu-eogil bbun miryeon ddawin eopseo',\n", + " 'don’t wanna go back, i never go back',\n", + " 'naega neoreul geuriwohal georan chaggak hajima',\n", + " 'neoneun gwageo-il bbun yeah i ain’t going back to you',\n", + " 'bbigeokbbigeok daedeon neowa naui sa-ineun',\n", + " 'over over imi ggeuti natgo',\n", + " 'igeot jeogeot ddajil piryo eomneun jigeumi nan neomu neomu joha',\n", + " 'nan dasi i can go to club eonjedeun pick up girls',\n", + " 'amureon joechaeggam eopsi nugudeun i can love',\n", + " 'damn right, so girls call me',\n", + " 'gong-il-yeong-sam-pal-sam-gong',\n", + " 'don’t wanna go back i never go back',\n", + " 'naega dasi doragalgeoran saeng-gageun hajima',\n", + " 'urin chu-eogil bbun miryeon ddawin eopseo',\n", + " 'don’t wanna go back, i never go back',\n", + " 'naega neoreul geuriwohal georan chaggak hajima',\n", + " 'neoneun gwageo-il bbun yeah i ain’t going back to you',\n", + " 'azamukarete \"misuterarete...\"',\n", + " 'kokoro mo hyoujou mo neji magari',\n", + " 'osae kirenai \"ikari, urami\"',\n", + " 'kuren no honoo wakiagaru you ni',\n", + " 'what did you say?',\n", + " \"don't give me that!\",\n", + " 'make up your mind!',\n", + " \"don't be afraid!\",\n", + " \"i can't take it!\",\n", + " \"don't stop fury\",\n", + " 'what do you want?',\n", + " 'p.a.i.n?',\n", + " 'onaji kurushimi wo aji awasete yaru',\n", + " 'mezawari nara \"kowaseba ii\"',\n", + " 'kore igai yari kata wo shiranai',\n", + " 'ki ni iranai \"damarasetoku?\"',\n", + " 'hanashi ai nado ni wa oujinai',\n", + " 'what did you say?',\n", + " \"don't give me that!\",\n", + " 'make up your mind!',\n", + " \"don't be afraid!\",\n", + " \"i can't take it!\",\n", + " \"don't stop fury\",\n", + " 'what do you want?',\n", + " 'p.a.i.n?',\n", + " 'kiba wo mukitai dake riyuu wa iranai...',\n", + " 'musabetsu ni resistance',\n", + " 'heavy explosion waka mama emotion',\n", + " 'yowai inu hodo yoku hoeru kara',\n", + " 'tawai mo nai koto de kizutsuke',\n", + " 'sarete kimochi',\n", + " 'light explosion motion',\n", + " '\"hankou\" do \"shuchou\" wo hakichigaete',\n", + " 'ru hou wa, raku de ii yo ne',\n", + " 'itsumade no mama de iru no?',\n", + " 'heavy explosion waka mama emotion',\n", + " 'mata kyou mo doukasen ni hi wo tsuke',\n", + " 'yamikumo ni',\n", + " 'sarete kimochi',\n", + " 'light explosion motion',\n", + " 'kako no itami wo hikizuranai de',\n", + " 'bakuhatsu suru sono de',\n", + " 'kesenai honoo tobikoero!',\n", + " 'friday night bakasawagi no',\n", + " 'shime wa kimatte takushii',\n", + " 'itsudatte soko wa munashiku',\n", + " 'kaichou na hashiri wa tada',\n", + " 'yomi to yami no boodaa o hiyakasu yo',\n", + " 'farewell alcohol river',\n", + " 'nagasarete tadori tsuku sabaku no na wa mr. bed',\n", + " 'farewell alcohol river',\n", + " 'ashita to iu mon wa hiraita',\n", + " 'saturday afternoon oto no nai',\n", + " 'shizumatta kakuu no gogo',\n", + " 'nande kioku wa togireru no ka?',\n", + " 'koko wa genjitsu na no ka?',\n", + " 'muda ni isogu',\n", + " 'koukai no tame ni aru yuugure get up!',\n", + " 'farewell alcohol river',\n", + " 'furikaetta nazo no raihousha no na wa blue devil',\n", + " 'farewell alcohol river',\n", + " 'ashita ni tada nigekomeba ii',\n", + " 'farewell alcohol river',\n", + " 'samayoeru hakobune o tobiorita yuusha yo',\n", + " 'farewell alcohol river',\n", + " 'saa, te o futte daichi o hashire! hashire!',\n", + " 'farewell, farewell, farewell',\n", + " 'say farewell to it!',\n", + " 'farewell alcohol river',\n", + " 'farewell alcohol river',\n", + " 'mayonaka ni nakinagara doa tataku my friend',\n", + " 'daijoubu namida tomaru made matteru',\n", + " 'your broken heart',\n", + " 'atsui hmm milk tea',\n", + " 'sameteyuku koi ga mata hitotsu kieteshimau yo',\n", + " 'believe in love',\n", + " 'kitto daremo ga kanashimi no yoru wo kakaeteru',\n", + " \"(dakedo don't stop)\",\n", + " 'believe in love',\n", + " 'yoru wa kanarazu atarashii asa wo tsuretekuru',\n", + " '(ah through the night)',\n", + " 'arifureta kotoba ja iyasenai ne',\n", + " 'my friend',\n", + " 'ano toki wa anata ga sasaetekureta yo',\n", + " 'my broken heart',\n", + " 'machi wa um haru no hikari ga odoru',\n", + " 'itsuka omoide ni kawatteku yo',\n", + " 'believe in love',\n", + " 'kitto daremo ga kanashimi no yoru wo norikoete',\n", + " \"(dakara don't stop)\",\n", + " 'believe in love',\n", + " 'namida no kazu dake kirei ni nareru to shinjiteru',\n", + " '(ah thorough the night)',\n", + " 'nando yue ni yaburetara onna noko wa honto ni tsuyoku naru no ?',\n", + " 'believe in love',\n", + " 'kitto daremo ga kanashimi no yoru wo kakaeteru',\n", + " \"(dakedo don't stop)\",\n", + " 'believe in love',\n", + " 'yoru wa kanarazu atarashii asa wo tsuretekuru',\n", + " \"(dakara don't stop)\",\n", + " 'believe in love',\n", + " 'namida no kazu dake tsuyoku nareru to shinjitai',\n", + " '(ah thorugh the night together)',\n", + " 'girl kimi no sono manazashi wa oh',\n", + " 'hey girl kmgeki teki de iki sae mo deki nai',\n", + " 'fureru tabi stimulus so dangerous',\n", + " 'ugokidasu chemistry',\n", + " 'curious so serious',\n", + " 'mm nukedase nai tonight',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'wakidasu kurai',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'karada kakenuke',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'boku o kontormru',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'kimi wa adrenaline eh',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'wakidasu kurai',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'karada kakenuke',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'boku o kontormru',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'kimi wa adrenaline eh',\n", + " 'oh haritsume ta kinchm kan ga feelin? right',\n", + " 'no no risei dake de rikai nanka deki nai',\n", + " 'fureru tabi stimulus so dangerous',\n", + " 'takanaru my heart’ s on fire',\n", + " 'curious so serious',\n", + " 'mm tomerare nai tonight',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'wakidasu kurai',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'karada kakenuke',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'boku o kontormru',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'kimi wa adrenaline eh',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'wakidasu kurai',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'karada kakenuke',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'boku o kontormru',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'kimi wa adrenaline eh',\n", + " 'onurupamutanshingwashiganuruponene negasumutaoru mune kogashi te',\n", + " 'taurutemada tarugigachi kizuke ba adrenaline',\n", + " 'kore ja tari nai ima ga chance kimi no lips',\n", + " 'sumugigoshipuchianunnemamingoru kugenemamechonbuingoru',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'wakidasu kurai',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'karada kakenuke',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'boku o kontormru',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'kimi wa adrenaline eh',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'wakidasu kurai',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'karada kakenuke',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'boku o kontormru',\n", + " 'you’ re like adrenaline adrenaline',\n", + " 'kimi wa adrenaline eh',\n", + " '(thunder) hey girl',\n", + " \"you're my sunshine\",\n", + " 'and my little princess',\n", + " 'and i wish i…',\n", + " 'i wish that i could be with you',\n", + " 'forever',\n", + " '(g.o) neoneun naui sugar (sugar)',\n", + " 'naman balaboneun geol',\n", + " 'pretty baby my girl (neoneun naui ma love)',\n", + " 'naemam neodo aljanha neowa naha na janha',\n", + " 'naemam heundeuneungeol',\n", + " 'you know i (i love you)',\n", + " 'you and i (i need you)',\n", + " '(seungho) ijeseoya nege gobaeg hal kkeoya',\n", + " 'you know i (i love you)',\n", + " 'you and i (i need you)',\n", + " '(thunder) niga nae eokkaee gidael suissge',\n", + " 'when i fall in love, love oh baby love, love',\n", + " '(seungho) nan neoleul johahandan malya',\n", + " 'when i fall in love, love so many love, love',\n", + " '(seungho) nan nisalangi pilyohae nuga mwo laedoi (say i love you girl)',\n", + " '(joon) naneun neoui sweety (sweety)',\n", + " 'naegen neomu yeppeun neo (oh yeah)',\n", + " 'ojig neoman boyeo (neoneun naui ma love)',\n", + " '(g.o) jigeum naege dagawa nal anwajwo niga neomu johaseo naegen',\n", + " 'neomu sojung hangeol',\n", + " '(mir) oh listen to my boo uh-uh',\n", + " 'fall in love baby',\n", + " '1015',\n", + " 'iji moshal geuttaeui sojunghan naleul gieoghae',\n", + " \"namanui you're my\",\n", + " 'negaisseo haengboghae geujeo useumi meomchujil anha',\n", + " 'neoui pyeonji hanae usgoissneun naleulbwa',\n", + " 'eonje seulpeossna nunmul ttug geuchyeo now',\n", + " 'naneun saengaghae bammada sinkke gidohae you',\n", + " 'pig that is soaked in soup of crime',\n", + " 'is it a pain of the children whom you murdered',\n", + " 'hate yourself',\n", + " 'in the maze without an end',\n", + " 'why do you still breathe?',\n", + " 'gareki no shita de shinjitsu ga notauchimawaru e wa',\n", + " 'naniyorimo fukai',\n", + " 'kodoku zouo shitto fuan',\n", + " 'kyomu ni saita muhyoujou naniyorimo omoi',\n", + " 'sanjou oou fujouri ni omoeta warau aozora',\n", + " 'in the maze without an end',\n", + " 'ayamachi ni obore',\n", + " 'in the maze without an end',\n", + " 'why do you still breathe?',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'yeah',\n", + " 'in the bottom of the dark dead sea',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'yeah',\n", + " 'tsugunai tsuzuke and die',\n", + " 'pig is that soaked in soup of crime',\n", + " 'in the maze without an end,',\n", + " 'ayamachi ni obore',\n", + " 'in the maze without an end,',\n", + " 'why do you still breathe?',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'yeah',\n", + " 'in the bottom of the dark dead sea',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'yeah',\n", + " 'aijou mo shiranu kodoku na parade',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'yeah',\n", + " 'in the bottom of the dark dead sea',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'sorrow made you,',\n", + " 'yeah',\n", + " 'tsugunai tsuzuke and die',\n", + " 'sorrow made you',\n", + " 'in the maze without an end...',\n", + " 'why do you still breathe?',\n", + " 'chu chu rocketto, nezumi o tasukero',\n", + " 'chu chu rocketto, neko wa kowai',\n", + " 'chu chu rocket, we gotta save the mice, baby',\n", + " \"chu chu rocket, the cat's a scary guy\",\n", + " 'chu chu rocketto, nezumi o tasukerou',\n", + " 'chu chu rocketto, neko wa kowai',\n", + " 'chu chu rocketto, rocket wa su-go-i!',\n", + " '(rocket wa su-go-i)',\n", + " 'chu chu rocket!',\n", + " 'chu chu rocket!',\n", + " 'chu chu rocket!',\n", + " 'on dreamcast!',\n", + " 'chu chu rocketto, nezumi o tasukero',\n", + " 'chu chu rocketto, neko wa kowai',\n", + " 'chu chu rocketto, rocket wa su-go-i!',\n", + " '(dreamcast!)',\n", + " 'chu chu rocketto, rocket wa su-go-i!',\n", + " '(tsubabababaa.) (dreamcast!)',\n", + " 'chu chu rocketto, rocket wa su-go-i!',\n", + " '(dreamcast!)',\n", + " 'chu chu rocketto, rocket wa su-go-i!',\n", + " 'tsubababaaaa!',\n", + " 'irony my honey chotto matte kure! ima kara kuru no!? iya to ienai',\n", + " 'quietly evenly furikaeba konpa no take out temanekishiteru',\n", + " 'suddenly i\\'m sorry \"shigoto ni natta\" keredo koneko-chan wa dada koneru',\n", + " 'stop! make up! hurry up! umaku gomakashi kaeraseta kedo kiss sae shitenai',\n", + " 'toriaezu heya miwatasushite korekara ga jikan to no shoubu',\n", + " 'toire no kami inoru na yo?! purikura haru na yo?!',\n", + " 'nagai kami mo ochitenai shi kousui no nioi mo keshita shi',\n", + " \"donna mondai! it's ok! ore wa kanzen hanzai sa!\",\n", + " 'tsumari... kore wa... seibutsugakuteki... osu no seiriteki koudou de...',\n", + " \"don't you know? understand? yappari kore jya iiwake ni naranai?\",\n", + " 'don\\'t worry take it easy \"okaerinasai\" shouko mo inmetsu konseki mo nai',\n", + " 'the lip stick oh! boo! shit! kanojo njanai?! megami no sabaki wa hanpa jya nai',\n", + " 'arittake no seii to uso wo teinei ni umaku narabete',\n", + " 'tama ni tsuyosa misete hiraikinaosscha dame',\n", + " 'kuchikazu ga oosugita ka na? subete mitooshi no kao de',\n", + " 'donna mondai mo kaiketsu!? kimi wa meitantei ka?!',\n", + " 'masaka... kore ga... idenshigakuteki osu no dairokkanteki chotsukan?!',\n", + " \"unbelieve. i don't know. toki sude ni osokushi nakiotoshi mo kikanai?\",\n", + " 'gomakashiteru wake jyanakute kono bashinogi nanka jyanakute',\n", + " 'kigentori jyanakute ichigen dake kiite?',\n", + " 'herikutsu bakari da keredo nanpa natoko mo aru kedo',\n", + " 'ketsukyoku yappari totemo kimi ga itoshiin da yo',\n", + " 'kaeru basho wa kimi dake dakara sonna ni musutto okoranai de',\n", + " 'tama ni yosomi suru kurai nara otoko da shi chotto kurai ii jyanai?',\n", + " \"don't you know? understand? seibutsugakuteki... osu no seiriteki koudou de...\",\n", + " 'i love you. please believe! yurushite kudasai mada ato nikai kurai',\n", + " 'shaan',\n", + " 'tanha dil',\n", + " 'bhool ja',\n", + " 'in asoon se kisko kya hua hasil',\n", + " 'mana kehna hai asan',\n", + " 'nibana hai mushkil',\n", + " 'phir bhi ye yaar mere',\n", + " 'sun le mere inthejan',\n", + " 'bhool ja jo hua use',\n", + " 'bhool ja hai kasam tujhe',\n", + " 'muskura khud ko yun',\n", + " 'na de tu saza',\n", + " 'un yadon ko tu bhool ja',\n", + " 'woh to nahi tha tere wafon ke kabil',\n", + " 'jane kya sochkar tune de',\n", + " 'diya apna dil',\n", + " 'is bar dil ka souda',\n", + " 'karna na yun bewajan',\n", + " 'bhool ja jo hua use',\n", + " 'bhool ja hai kasam tujhe',\n", + " 'muskura khud ko yun',\n", + " 'na de tu saza',\n", + " 'un yadon ko tu bhool ja',\n", + " 'teri zindagi teri hai',\n", + " 'kisiki amanat nahi',\n", + " 'jab chahe tod de',\n", + " 'ye kisiki imarat nahi',\n", + " 'is bar dil ka sauda',\n", + " 'karna na yun bewaja',\n", + " 'bhool ja jo hua use',\n", + " 'bhool ja hai kasam tujhe',\n", + " 'muskura khud ko yun',\n", + " 'na de tu saza',\n", + " 'un yado ko tu bhool ja',\n", + " 'jo use bhool ja hai kasam tujhe',\n", + " 'muskura khud ko yun',\n", + " 'nade tu saza',\n", + " 'un yado ko tu bhool ja',\n", + " 'na na na nana bhool ja',\n", + " 'na na na nana muskura',\n", + " 'khud ko yun na de tu saza',\n", + " 'un yado ko tu bhool ja',\n", + " '(kvish mispar sesh lebaqa amoos meh...)',\n", + " 'ma zeh?',\n", + " '(hamashber bakoalitzia)',\n", + " '(eh, aiwa)',\n", + " '(aerobi, pilaties)',\n", + " 'yes!',\n", + " 'gal! shtem esreh baliylah! techabeh et harash hazeh!',\n", + " 'aval lama? ze mizrahit!',\n", + " 'lo meanyen oti! techabeh et zeh!',\n", + " 'lo rotze!',\n", + " 'what?',\n", + " 'oh my god!',\n", + " 'oh my god!',\n", + " 'shukraan',\n", + " \"let's drop this\",\n", + " 'are you ready for the -',\n", + " 'riot',\n", + " 'abba, abba!',\n", + " 'shum mizrahit lo teiyeh po!',\n", + " 'hey neomu areumdawoyo oh seksihan mommae',\n", + " 'gakkai wa jwoyo ppeonhan neukdae nomdeuri bolla',\n", + " 'hey jom deo gakkai wayo dareun maeumeun eopseoyo',\n", + " 'saramdeurui nunbit ppeonhan neukdae nomdeureun gara',\n", + " 'neoneun gwiyom gwiyomhae chapssal gateun bojogae',\n", + " 'geunde wae momeun ireohge areumdaun geonde',\n", + " 'neoui nunbicceun pado gata hwipsseullyeo beoril geot gata',\n", + " 'na eotteohge jeongmal michigesseo',\n", + " 'hey girl jjalpeun chimaneun ipji marayo',\n", + " 'neomu seksihae naega sumi makhil geot gata',\n", + " 'oh baby girl you know i want it to',\n", + " 'unmyeongindeushae neon jeongmal wanbyeokhae',\n", + " 'you are my lollipop girl',\n", + " 'neol bomyeon michil geot gata',\n", + " 'you make me crazy',\n", + " 'you are my lollipop candy',\n", + " 'dalkomhan neoui ipsureun',\n", + " 'make me crazy',\n", + " 'neon lolli lolli lollipop oh',\n", + " 'naege naege dagawa',\n", + " 'jam mot deulge haejullae',\n", + " 'oh baby crazy',\n", + " 'neon lolli lolli lollipop oh',\n", + " 'naege naege dagawa',\n", + " 'eoseo ip majchwojullae',\n", + " 'oh lady i’m crazy',\n", + " 'you are my lollipop',\n", + " 'you are my lollipop neon naui lollipop',\n", + " 'you are my lollipop',\n", + " 'you are my lollipop neon naui lollipop',\n", + " 'dareun nara saramdo ara',\n", + " 'neoui bodyman bomyeon dalla',\n", + " 'ppeonhan neukdaedeurui nunbit',\n", + " 'neoui momeun segye yukgam dadeul ppeokgam',\n", + " 'wow hey eodil neomboni',\n", + " 'ei namui tteogini naega chim balla dwosseo',\n", + " 'neo gogaereul dollyeo ne tteogeul chajara bye bye',\n", + " 'hey girl geureon nuneuro usjin marayo',\n", + " 'dareun namjadeulkkaji da michiljido molla',\n", + " 'oh baby girl you know i want it to',\n", + " 'michingeot gata neon jeongmal wanbyeokhae',\n", + " 'you are my lollipop girl',\n", + " 'neol bomyeon michil geot gata you make me crazy',\n", + " 'you are my lollipop candy',\n", + " 'dalkomhan neoui ipsureun make me crazy',\n", + " 'uh uh uh uh uh uh uh uh',\n", + " 'i know you want me',\n", + " 'oh let me show you all',\n", + " 'uh uh uh uh uh uh uh uh',\n", + " 'oneul bam naege neoreul deo boyeojwo',\n", + " 'oh tj come on yeah',\n", + " 'i like lollipop ok leggo!',\n", + " 'neoneun gwiyomgwiyomhae chapssal gateun bojogae',\n", + " 'soge ppajil geot gata jeongmal na michil geot gata',\n", + " 'neoneun siwonsiwonhae milgo danggijin anhne',\n", + " 'satang gateun moksori naegeman soksagyeojwo',\n", + " 'you are my lollipop',\n", + " 'you are my lollipop neon naui lollipop',\n", + " 'you are my lollipop',\n", + " 'you are my lollipop neon naui lollipop',\n", + " 'uyeonhi yaegil deu-reosseo (jal chinae-neunji)',\n", + " 'jal chinae-neun geot kata na',\n", + " 'dahaengira saengga-khae haengbo-khae boyeo nan',\n", + " 'ajik himdeul jurara-nneunde',\n", + " 'jo-geum na sseul-sseurhan mame (u-urhan mame)',\n", + " 'da chinan giyeo-geul kyesok hemae-ida',\n", + " 'bam gipi chwiihae kal-surok',\n", + " 'kwaehnshiri jo-geum na seulpeojine',\n", + " 'ni-ga bogo shipeojimyeon (so go-od bye go-od bye)',\n", + " 'ni-ga deo keuriwojimyeon',\n", + " 'meong-hani nuwo meong-hani nuwo',\n", + " 'kkeunnae jamdeul-ji motha-go',\n", + " 'ni-ga bogo shipeojyeodo (so go-od bye go-od bye)',\n", + " 'ni-ga deo saenggannado',\n", + " 'naneun gwaehn-chanha naneun gwaehn-chanha naneun gwaehn-chanha',\n", + " 'ni-ga haengbokhadamyeon nan',\n", + " 'keunyang bung tteoi-nneun gibuniya',\n", + " 'kudi kyeolloneul naeril pilyo-ga eom-neun munjeya',\n", + " 'jinanbam kkumcheoreom kkaeyeonamyeon modu heu-teojyeo',\n", + " 'da-gakaryeo hamyeon neon jakku meo-reojyeo waeh neon jakku meo-reojyeo',\n", + " 'neowah hamkkeyeosseul ttae neol tteonabonaegi jeone',\n", + " 'on himeul dahae neol sarang-haetkie',\n", + " 'huhwehneun eom-nne neol wiihan han sarameun nara-go mideo-nneunde',\n", + " 'keuge aniyeo-nna bwah',\n", + " 'ni-ga bogo shipeojimyeon (so go-od bye go-od bye)',\n", + " 'ni-ga deo keuriwojimyeon',\n", + " 'meong-hani nuwo meong-hani nuwo',\n", + " 'kkeunnae jamdeul-ji motha-go',\n", + " 'ni-ga bogo shipeojyeodo so go-od bye go-od bye',\n", + " 'ni-ga deo saenggannado',\n", + " 'naneun gwaehn-chanha naneun gwaehn-chanha naneun gwaehn-chanha',\n", + " 'ni-ga haengbokhadamyeon nan',\n", + " 'neol baraedajudeon gil neowah hamkke mashideon geopi',\n", + " 'hamkke ilgdeon chaek kachi bodeon deurama',\n", + " 'ireon modeun geot-deu-ri cham keurib-guna',\n", + " 'neol baraedajudeon gil neowah hamkke mashideon geopi',\n", + " 'hamkke ilgdeon chaek kachi bodeon deurama',\n", + " 'ireon modeun geot-deu-ri cham keurib-guna',\n", + " 'ni-ga bogo shipeojyeodo ni-ga deo saenggannado',\n", + " 'naneun gwaehn-chanha naneun gwaehn-chanha naneun gwaehn-chanha',\n", + " 'ni-ga haengbokhadamyeon nan',\n", + " 'hangul',\n", + " '난 너의 곁에서 멈춰서 기다릴게',\n", + " '언제나 머물러 쉴 수 있게',\n", + " '어떤 말로도 어떤 누구도',\n", + " '널 위로 할 수 없을 때',\n", + " '내게 널 기대어',\n", + " 'i can feel you anywhere',\n", + " 'i can feel you anywhen',\n", + " '지친 너의 마음을',\n", + " '꼭 안아줄게',\n", + " '시린 날들 그 속엔',\n", + " '반짝이는 별 하나',\n", + " '니 곁에 나 내 곁에 너',\n", + " '조금 멀어지면 서둘러 다가갈게',\n", + " '너의 손 닿을 수 있는 곳에',\n", + " '모진 바람에 모진 시련에',\n", + " '너 견뎌내기 힘들 때',\n", + " '내게 널 기대어',\n", + " 'i can feel you anywhere',\n", + " 'i can feel you anywhen',\n", + " '지친 너의 마음을',\n", + " '꼭 안아줄게',\n", + " '시린 날들 그 속엔',\n", + " '반짝이는 별 하나',\n", + " '니 곁에 나 내 곁에 너',\n", + " '두 번 울지 않도록',\n", + " '나 숨처럼 널 지킬게',\n", + " '내가 지쳐도 언제까지나 이렇게',\n", + " '니 곁에 있을게',\n", + " 'i can feel you anywhere',\n", + " 'i can feel you anywhen',\n", + " '다친 너의 상처를',\n", + " '꼭 감싸줄게',\n", + " '함께 있는 시간엔',\n", + " '아픔 느낄 수 없게',\n", + " '니 곁에 나 내 곁에 너',\n", + " 'with you',\n", + " 'romanization',\n", + " 'nan neoui gyeoteseo meomchwoseo gidarilge',\n", + " 'eonjena meomulleo swil su issge',\n", + " 'eotteon mallodo eotteon nugudo',\n", + " 'neol wiro hal su eopseul ttae',\n", + " 'naege neol gidaeeo',\n", + " 'i can feel you anywhere',\n", + " 'i can feel you anywhen',\n", + " 'jichin neoui maeumeul',\n", + " 'kkok anajulge',\n", + " 'sirin naldeul geu sogen',\n", + " 'banjjagineun byeol hana',\n", + " 'ni gyeote na nae gyeote neo',\n", + " 'jogeum meoreojimyeon seodulleo dagagalge',\n", + " 'neoui son daheul su issneun gose',\n", + " 'mojin barame mojin siryeone',\n", + " 'neo gyeondyeonaegi himdeul ttae',\n", + " 'naege neol gidaeeo',\n", + " 'i can feel you anywhere',\n", + " 'i can feel you anywhen',\n", + " 'jichin neoui maeumeul',\n", + " 'kkok anajulge',\n", + " 'sirin naldeul geu sogen',\n", + " 'banjjagineun byeol hana',\n", + " 'ni gyeote na nae gyeote neo',\n", + " 'du beon ulji anhdorok',\n", + " 'na sumcheoreom neol jikilge',\n", + " 'naega jichyeodo eonjekkajina ireohge',\n", + " 'ni gyeote isseulge',\n", + " 'i can feel you anywhere',\n", + " 'i can feel you anywhen',\n", + " 'dachin neoui sangcheoreul',\n", + " 'kkok gamssajulge',\n", + " 'hamkke issneun siganen',\n", + " 'apeum neukkil su eopsge',\n", + " 'ni gyeote na nae gyeote neo',\n", + " 'with you',\n", + " 'english',\n", + " 'i’ll stay by your side and wait',\n", + " 'so you can always rest',\n", + " 'when no words and no one else',\n", + " 'can comfort you',\n", + " 'lean on me',\n", + " 'i can feel you anywhere',\n", + " 'i can feel you anywhere',\n", + " 'your exhausted heart',\n", + " 'i’ll embrace it',\n", + " 'in the cold days',\n", + " 'there is one twinkling star',\n", + " 'it’s me, who is by your side',\n", + " 'it’s you, who is by my side',\n", + " 'if we get a little far apart, i’ll quickly go to you',\n", + " 'to a place where you can reach',\n", + " 'when the strong winds and hardships',\n", + " 'make it hard for you to endure',\n", + " 'lean on me',\n", + " 'i can feel you anywhere',\n", + " 'i can feel you anywhere',\n", + " 'your exhausted heart',\n", + " 'i’ll embrace it',\n", + " 'in the cold days',\n", + " 'there is one twinkling star',\n", + " 'it’s me, who is by your side',\n", + " 'it’s you, who is by my side',\n", + " 'so you won’t ever cry again',\n", + " 'i’ll protect you like you’re my breath',\n", + " 'even when i’m tired, i’ll always',\n", + " 'be by your side',\n", + " 'i can feel you anywhere',\n", + " 'i can feel you anywhere',\n", + " 'all of your scars',\n", + " 'i’ll embrace them',\n", + " 'so when we’re together',\n", + " 'you won’t feel pain',\n", + " 'it’s me, who is by your side',\n", + " 'it’s you, who is by my side',\n", + " 'with you',\n", + " 'yeah, yeah, love is pain, love is pain',\n", + " \"love is over, love is over, that, that, that's it\",\n", + " 'o-o-o-o-over, love love is pain, pain',\n", + " 'o-o-o-o-over, love, break it',\n", + " 'neon jeongmal mystery, mystery, mystery, mystery',\n", + " ...]},\n", + " 'data': ['nee, itsuka kizuku? tsumetai boku no yubi ga kami ni fureta',\n", + " 'koto',\n", + " 'kasuka na omoi ga mune o uchi setsunakute ugokenai',\n", + " \"gin'iro no ito o nagasu youni toukai suru eien ni\",\n", + " 'aa anata no koe mo nioi mo mou todokanai',\n", + " 'boku no subete wa soko ni aru',\n", + " 'ate no nai omoi wa itsumo mizu ni nagasare yuku saki mo miezu',\n", + " 'tadai hateru shikanai kakikesare...',\n", + " 'nee, boku no koe ga kikoeru? ushirosugata yubi o nobashite mo',\n", + " 'aozameta kono yoru ame oto mimi o uchi ugokenai',\n", + " \"gin'iro no oto o sasou youni yami o nukete dokomademo\",\n", + " 'aa anata no soba ni iru no ni ugatareta shisen',\n", + " 'boku no subete wa soko ni aru',\n", + " 'hanabira no kobune kogidasu yami e mi o nagete chiri-yuku',\n", + " 'sugata',\n", + " 'kageru tsuki no sakin to kiete kizunde...',\n", + " 'i drowned and died to the lake. you are like your sadness',\n", + " 'is greater than anything and cast skin',\n", + " 'my soul is not in sight of you. i drift. i am transparent',\n", + " 'i still love you. but i am sleeping in the bottom of the lake',\n", + " 'aa dokomade yukeba ii? ushinatta kioku',\n", + " 'boku no subete wa soko ni aru',\n", + " 'mai ochiru mizu no hate anata no karada dakishimerarezu',\n", + " \"gin'iro no ato o nazoru youni\",\n", + " 'sinks deeply...',\n", + " 'drifts and is deep...',\n", + " 'to deeper place...',\n", + " 'take my heart from me suck me all',\n", + " 'dagawa unbid dare bichin hundullin ne jagun menbal',\n", + " 'sumjugin ne weroumul kewo gamanhi ibul machune',\n", + " 'jomolli unhasu sairul todonun noui irum nal bullojun',\n", + " 'noege gamsahe ne irumul gajyodo joha',\n", + " 'yes eat my name',\n", + " 'ijen duryobji anha',\n", + " 'hangsang yogi issultheni',\n", + " 'noui modun gol nege mathgilge',\n", + " 'gunyang kumin god gatha mwonga jalmod doen gol ara',\n", + " 'hajiman da julge',\n", + " 'yes eat my name',\n", + " 'get away get away from me',\n", + " 'weroum guge naui shilche',\n", + " 'bulgirhan honransuroum charari nuo hwansanguro',\n", + " 'nal gadughi chewojugeni',\n", + " 'yes drink me all',\n", + " 'ijen duryobji anha',\n", + " 'hangsang yogi issultheni',\n", + " 'noui modungol nege mathgilge',\n", + " 'gunyang kumin god gatha mwonga jalmod doen gol ara',\n", + " 'hajiman da julge',\n", + " 'yes drink me all',\n", + " 'gogwihan jinshil umhomhan hyonshiri narul michige hego',\n", + " 'bulliji anun irumtawin gajyoga',\n", + " 'yes drink me all',\n", + " 'ne ane napunpiduldo yogi aphum sulphumduldo',\n", + " 'narul gajyogal sunun obso suchonmangeui aphum',\n", + " 'suchonoggeui uimiro ne anesoman jonjehalgoya',\n", + " 'take my name from me',\n", + " 'get away get away from me',\n", + " 'ate naku tadayou traffic jam',\n", + " 'machi wa muchitsujo sosogu ame wa acid rain',\n", + " 'atsu e no kobuseke mo naku',\n", + " 'mayou wa bokura wa yumemi teru electric ship',\n", + " 'itsu kuru ka shire nai akogare no toki',\n", + " 'kusuburu kanjou wa tada damatte matte rare nai',\n", + " 'miage ta nara yozora wo kirisai te kake noboru jet',\n", + " 'bokura wo michibiku',\n", + " 'sabitsui ta hane wa mada kuchihate cha i nai',\n", + " 'yatsu yori atsui hoe agaru tamashii',\n", + " 'saa mezamero next age',\n", + " 'musuu ni zoushoku suru trap',\n", + " 'hitotsu mi sure ba waraitobasa re tari',\n", + " 'mirai wa kasou teki kuukan e kekkyoku tashika na mono kono omoi dake sa',\n", + " 'nagameru bakari no moeagaru honoo',\n", + " 'bou ni furu chansu wo tada damatte matte rare nai',\n", + " 'miage ta nara yozora wo kirisai te kake noboru jet',\n", + " 'bokura wo michibiku',\n", + " 'shinjiru mama hashire kitto mada maniau',\n", + " 'haneagaru speed kesshite nogasa nai',\n", + " 'saa tobinore next age',\n", + " 'tsuuka shi tara bure tatte mi dashi teyarusa',\n", + " 'zero kara no jiyuu wo torikon da saikyou no monster',\n", + " 'maki agatta gouon ni magire te',\n", + " 'mou tobikoshi ta kodou ni awase te say 3 2 1 go !',\n", + " 'kimi ga miage ta nara takaku kake noboru ze',\n", + " 'bokura wa tabidatsu saa tobinore space age',\n", + " 'you virtual generation !',\n", + " 'namo... namo...anjaninandanaaya',\n", + " \"i bow, i bow again and again to anjani's son, hanuman\",\n", + " 'jaya seeyaa raama, jai jai hanumaan',\n", + " 'victory to sita and ram, victory to hanuman',\n", + " 'victory over the darkness of suffering...',\n", + " 'jaya bajrangbalee, baba hanuman',\n", + " 'victory to the one with the body of a thunderbolt',\n", + " 'my baba, hanuman',\n", + " 'sankata mochan kripaa nidhaan',\n", + " 'you are home of all grace',\n", + " 'destroy all my problems, calamities and sufferings',\n", + " 'jai jai jai hanuman gosaaee',\n", + " 'hail my lord hanuman',\n", + " 'kripaa karahu gurudeva kee naaee',\n", + " 'you are my guru, bestow your grace on me',\n", + " 'sankata mochan kripaa nidhaan',\n", + " 'you are the destroyer of suffering, the abode of grace',\n", + " 'laala langotta, laala nishaan',\n", + " 'you wear a red langotta and carry a red flag',\n", + " 'challa ki labh da phire',\n", + " 'challa ki labh da phire',\n", + " 'yaaron ohda ghar keda',\n", + " 'lokan ton puchda phire',\n", + " 'challa hansda phire',\n", + " 'challa rounda phire',\n", + " 'challa gali gali rulda phire',\n", + " 'challe tu sab da',\n", + " 'challe tera koi nahi',\n", + " 'challa gali gali rul da phire',\n", + " 'challa ki labh da phire',\n", + " 'challa ki labh da phire',\n", + " 'yaaron ohda ghar keda',\n", + " 'lokan ton puchda phire',\n", + " 'challa ki labh da phire',\n", + " 'rang satrangi de bulbula di boli',\n", + " 'dhoop de pairi chale, chhavan ni le doli',\n", + " 'rang satrangi rangi de, bulbula di di boli',\n", + " 'dhoop de pairi chale, chhavan ni le-le doli',\n", + " 'oye kaale kaale badalan ‘ch chand labh da',\n", + " 'goongiyan hawava diyaan waaja sun da',\n", + " 'yaaro aase-paase wasda ay yaar mera',\n", + " 'dikhda ni ohdiyaan khusbuaan sunghda',\n", + " 'o challa ki labh da phire',\n", + " 'challa ki labh da phire',\n", + " 'yaaron ohda ghar keda',\n", + " 'lokan ton puchda phire',\n", + " 'challa ki labh da phire',\n", + " 'naa visaal hoya kadi na judai hoi',\n", + " 'ishq de qaidi ki naa rihaai hoi',\n", + " 'lokon sufne ‘cho milne da wada usda',\n", + " 'saari saari raat na akh lagdi',\n", + " 'mere saa vi thode thode ghat aaunde',\n", + " 'meri nabz vi thodi ghat wajdi',\n", + " '(ooh) challa ki labh da phire',\n", + " 'challa ki labh da phire',\n", + " 'yaaron ohda ghar keda',\n", + " 'lokan ton puchda phire',\n", + " 'challa hansda phire',\n", + " 'challa rounda phire',\n", + " 'challa gali gali rulda phire',\n", + " 'challe tu sab da',\n", + " 'challe tera koi nahi',\n", + " 'challa gali gali rul da phire',\n", + " 'challa challa ki labh da phire',\n", + " 'challa ki labh da phire',\n", + " 'challa ki labh da phire',\n", + " 'you gonna be a my love',\n", + " 'you gonna be a my love',\n", + " 'naega neomu neomuna himdeul ttaemyeon',\n", + " 'eonjena nae yeopeseo ni eokkael billyeojwo',\n", + " 'neoman nae yeope isseumyeon geu eotteon geotdo nan',\n", + " 'duryeopji anha neon nal jikyeojuneun boy',\n", + " 'woo woo woo woo woo',\n", + " 'nal utge haejun han saram',\n", + " 'woo woo woo woo woo',\n", + " 'nal jikyeojul dan han saram',\n", + " 'ttaeron datugido hajiman',\n", + " 'geuraedo neoman isseojundamyeon alright',\n", + " 'i norael neowa',\n", + " 'you gonna be a my love',\n", + " 'ttan yeojawan dalleo',\n", + " 'niga museun sigyel channeunji',\n", + " 'eotteon chareul tago danideunji',\n", + " 'nan sanggwaneobseo',\n", + " 'dareun geon gwansim eobseo',\n", + " \"baby you're my love\",\n", + " 'ma ma love ma ma love',\n", + " 'love love',\n", + " '(rap)',\n", + " 'jigabeun gabyeowo tto nan ttubeogi',\n", + " 'jipjuinui jeonhwaneun harue du beonssik',\n", + " 'oji geunde jaju kkeunkiji nae poni',\n", + " 'chingudeureun malhae neon eonje sal geonya 4g',\n", + " 'ni chingudeureun geokjeonghae eomeonineun bandaehasyeo',\n", + " 'an bukkeureopgesseo moime naega hamkke gamyeon',\n", + " 'neoran yeojal mannagien ajik nae seupekdo cham',\n", + " 'hyeonsireul gamanhago dasi saenggakhaeboja',\n", + " 'woo woo woo woo woo malloneun bujokhan saram',\n", + " 'woo woo woo woo woo',\n", + " 'naemameul gajyeogan saram',\n", + " 'geu nugu do neo hanaman motae',\n", + " 'nal bichwojuneun jeo bichi doe jullae?',\n", + " 'ni yeope isseulge',\n", + " 'you gonna be a my love',\n", + " 'ttan yeojawan dalleo',\n", + " 'niga museun sigyel channeunji',\n", + " 'eotteon chareul tago danideunji',\n", + " 'nan sanggwaneobseo dareun geon gwansim eobseo',\n", + " \"baby you're my love\",\n", + " 'ma ma love ma ma love',\n", + " 'love love',\n", + " 'nawa hamkke idaeroman isseojwo',\n", + " 'naega gibuni an johado nal bomyeo useojwo',\n", + " 'neowa hamkkeramyeon geu eodirado gal su isseo',\n", + " \"i sungan idaero baby you're my love\",\n", + " 'you gonna be a my love',\n", + " 'you gonna be a my love',\n", + " 'na neo animyeon andwae nae modeungeol julge',\n", + " 'i love you baby',\n", + " 'nuguboda deo sojunghae neon naegen jeonbunikka',\n", + " 'gakkeumeun meolli isseodo',\n", + " 'geuraedo nae ireumeul bulleojwo',\n", + " \"baby you're my love\",\n", + " 'ma ma love',\n", + " 'ma ma love',\n", + " 'love love',\n", + " 'ahha chiknak chiknak chiknak',\n", + " 'ahha chiknak chiknak chiknak',\n", + " 'ahha chiknak chiknak chiknak',\n", + " 'ahha chiknak chiknak',\n", + " 'rhanja miya chhaddo yaari',\n", + " 'changi nahiho ishk bimari',\n", + " 'ishkna chhadde kuch bhi palle',\n", + " 'ho gayi tu balle balle',\n", + " 'ho jayegi balle balle',\n", + " 'chhadde bin matlab de ainve pangiya de vich painna',\n", + " 'shk de chakkar devich neeend gavaki lainna',\n", + " 'ho jave jo pyar to palle',\n", + " 'kuchh naioo rainna',\n", + " 'aankhiyaan ho jane char palle',\n", + " 'kuchh naioo rainna',\n", + " 'hase tere kho jane ne',\n", + " 'rone be be kalle kalle',\n", + " 'rone be be kalle kalle',\n", + " 'ho gayi teri balle balle',\n", + " 'ho jayegi balle balle',\n", + " 'do din hundi yaari magroo',\n", + " 'hasa hoonda hai',\n", + " 'kudia de layi pyar to khel',\n", + " 'tamasha hoonda hai',\n", + " 'duja mil jaye yaar to phir',\n", + " 'ae nahi puchh de',\n", + " 'bik jaye gharbar to phir',\n", + " 'ae nahi puchh de',\n", + " 'jaandi bari ke jaande ne',\n", + " 'oke sajna challe challe',\n", + " 'oke sajna challe challe',\n", + " 'ho gayi teri balle balle',\n", + " 'ho jayegi balle balle',\n", + " 'laid back and play the down and low d.o.p.e song',\n", + " \"we don't want no dj playin' cheap song\",\n", + " '(x2)',\n", + " 'motto unarasete keikai na suteppu',\n", + " 'pe-su kasane karada awase',\n", + " 'yoru no machi wo tobidashi',\n", + " 'dattsudattara odoridasu',\n", + " 'genkai nante iwazu (mada mada)',\n", + " 'keitai nante sutete (word up word up)',\n", + " 'oboreru made nonde notte tonde',\n", + " 'sugu neru yatsu da tte minna yonde',\n", + " 'pululululu hahha get hahha',\n", + " 'ochiteru tatte hajimannai',\n", + " \"kon'ya shuyaku wa anta kettei\",\n", + " '?zettei? jikan ni chotto asette',\n", + " 'shoot come on are anta wa dou?',\n", + " 'nonde nomarete (another one down)',\n", + " 'asahi deru mae ni mata okite',\n", + " 'gangan nonde (till the break of dawn)',\n", + " 'laid back and play the down and low d.o.p.e song',\n", + " 'koyoi furoa- wo terasu moonlit night',\n", + " 'setsunai uta wo ima mune no oku no oku ni',\n", + " 'hayaku hibikasete',\n", + " \"we don't want no dj playin' cheap song\",\n", + " 'itsumo yori te no konda feiku neiru',\n", + " 'asa ga kuru made ni wasurerarenai koi',\n", + " 'mitsukerareru kana',\n", + " 'need a little bit of moonlight zutto kono mama koko de',\n", + " 'gita- kakinarashi we dancing all night',\n", + " 'need a little bit of starlight',\n", + " 'zutto asa made itai ne ikeru toko made',\n", + " \"dandig it dig it i'm about to twist you'll\",\n", + " 'to them dig it to the dig it to beat yo',\n", + " 'totsuzen furidashita ame dorama kan de sae',\n", + " 'kizamu rizumu hazumu be-su',\n", + " 'tappu dansu sutanpu kurappu bounce 2 this',\n", + " 'bi-to bokushingu rock, rock 2 this',\n", + " 'saikou no shou kore wo teikyou',\n", + " 'tenshon agete subete nesshou',\n", + " 'tanoshimitai? kokkara ga honban',\n", + " 'kouhansen noru ka wa you soudan',\n", + " 'laid back and play the down and low d.o.p.e song',\n", + " 'unmei kana? mata mitsumeau futari',\n", + " 'hanarenai you ni atsui ai no uta wo motto kikasete yo',\n", + " \"we don't want no dj playin' cheap song\",\n", + " 'seijaku no yoru ni nukedasu futari',\n", + " 'subete yobisamasu ano mangetsu no you ni',\n", + " 'mune wo takanarase',\n", + " 'hey dj play my see saw l.o.v.e song',\n", + " \"see i know he's not like them ones i met before\",\n", + " 'mezameta asa kidzukeba issho',\n", + " 'aseri hitori nukedasu beddo',\n", + " 'pave to musalman pave hindu sikh ve',\n", + " 'sada ve rab jive ek sada dil ve',\n", + " 'apne aap nu tu vakhra kyun samjhe',\n", + " 'soch kade thande tu damak de naal',\n", + " 'banda ve lage mainu saff tu dil da',\n", + " 'ladaiyan kar ke vi ki tenu milna',\n", + " 'loki te paidiya nazar naal vende',\n", + " 'ona nu apne haal vich rehnde',\n", + " 'ja ve indian dasha mare, sanu vi tu inj na tade',\n", + " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", + " 'ja ve indian dasha mare, sanu vi tu inj na tade',\n", + " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", + " 'hoye garib hunde aapne nasib',\n", + " 'dil tu vada kar ban ja aamir',\n", + " 'loka nu vekh ke tu dil na nu sad',\n", + " 'aakra di aag vich hath na tu vad',\n", + " 'kava main ek gal tenu 100 100 war',\n", + " 'javani sadi jive ek sadi jaan',\n", + " 'jindagi has ke ve ral ke guzar',\n", + " 'ladaiyan chad ke ve kar tu pyar',\n", + " 'ja ve indian dasha mare, sanu vi tu inj na tade',\n", + " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", + " 'ja ve indian dasha mare, sanu vi tu inj na tade',\n", + " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", + " 'oye apne ve paira te kulariyan na mar',\n", + " 'soch samaj ke tu faisle bana',\n", + " 'izat ve kar nale izat kara',\n", + " 'thodi ji e zindagi ve enu na muka',\n", + " 'oye apne ve paira te kulariyan na mar',\n", + " 'soch samaj ke tu faisle bana',\n", + " 'izat ve kar nale izat kara',\n", + " 'thodi ji e zindagi ve enu na',\n", + " 'mukave ve indian dasha mare, sanu vi tu inj na tade',\n", + " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", + " 'ja ve indian dasha mare, sanu vi tu inj na tade',\n", + " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", + " 'izat karo te izat karayo',\n", + " 'te ik dujya naal pyar naal pesh aayo',\n", + " 'na cham senggin gon da molchonghe cham banduthe',\n", + " 'chaghago songshirhe yojamyon jarhejul duthe',\n", + " 'gunde no akkabutho moriman gullyodeji',\n", + " 'na jongdon andoeni gyesani dohago gobhedo mojara',\n", + " '(jigum myot shijyo tonggumshigan da dweganeyo iman jon)',\n", + " 'dabdabhan nima damen mwo halle',\n", + " '(irhosolgeyo onul jongmal julgowossoyo gabolgeyo)',\n", + " 'idero gunyang boneborille',\n", + " 'nollashina yosanghena mwol pena chominga aniltende',\n", + " 'gajandago gobge tarawa da hajanha we ire',\n", + " 'gobnashina segdarunga pog gana michina johultende',\n", + " 'irol gomyon we oja hena jongmal jemiobge noshine non',\n", + " 'no nal hanbon nubhyo boshiji jashinissum mwodun da',\n", + " 'mamdero dwegeji jigumkajin da',\n", + " 'namjan kog gurodora ganghan chog gwenchanhun chog',\n", + " 'chorahan okkewa bushirhan darinun hudulgoryo moth bwa',\n", + " '(ochom malsumdo jarhaseyo shigani doen jul mollajyo)',\n", + " 'namjal mannamyon yongiman nuro one more time',\n", + " '(baredajwoso gomawoyo to boebge goegil jal gaseyo)',\n", + " 'do giphun yegin daum gihoeye',\n", + " 'nollashina yosanghena mwol pena chominga aniltende',\n", + " 'gajandago gobge tarawa da hajanha we ire',\n", + " 'gobnashina segdarunga pog gana michina johultende',\n", + " 'irol gomyon we oja hena jongmal jemiobge noshine non',\n", + " 'walk in to the m.o.s hottest around incredible sound',\n", + " \"quakin' and vibratin' nemaumun coz of you\",\n", + " 'can you take a walk with me you can talk with me',\n", + " 'show me what you got niga wonhamyon',\n", + " 'or just speak to my hand and go away',\n", + " \"here is the harry winston's ring and earrings\",\n", + " 'to have the world but no one to share it with',\n", + " 'do step into my room (crib) i will make you wanna do',\n", + " 'you (it) just like a fire a alram',\n", + " 'but i never satisfy boy you have no fear coz ecstasy is near',\n", + " \"oh you surely won't forget it babe don't be afraid just let this love\",\n", + " \"rock 'n roll pain you're not a flame\",\n", + " 'i got the power of love',\n", + " \"it makes you rock i don't wanna get off\",\n", + " 'one more time tell me baby',\n", + " 'no more time i want you back turn around back',\n", + " \"i can not wait for you don't leave me back\",\n", + " \"now it doesn't matter what you doubt\",\n", + " 'oh my baby wanna be my love now',\n", + " 'hanayaka na machi ni irozuku kisetsu',\n", + " 'itsumo shiranu ma ni sugisatte',\n", + " 'jikan ryokou no tabiji ni oritatta basho wa',\n", + " 'haruka na toki no kanata',\n", + " 'mou dore kurai kimi to warattenai kana',\n", + " 'hanareba nare wa kyori dake janai',\n", + " 'kizukanai furi shiteru kedo asobikata o',\n", + " 'wasureteshimatta no sa',\n", + " 'passing by passing by real world',\n", + " 'hitomi tojireba hirogatteyuku',\n", + " 'passing by passing by sweet times',\n", + " 'amaku setsunai ashiato',\n", + " 'ne~ kimi mo onaji kimochi darou?',\n", + " 'running through without your help',\n", + " 'running through without your vibes',\n", + " 'soredemo ude o nobashite',\n", + " 'sasayaka na yume o bokura wa tadotteyuku',\n", + " 'passing by passing by real world',\n", + " 'awai honoo o tayasanu you',\n", + " 'passing by passing by sweet times',\n", + " 'kyou mo ashita e mukaou',\n", + " 'open wide',\n", + " 'one of them',\n", + " 'ki ni naridashiteru',\n", + " 'it struck one',\n", + " 'hontou ni nemui ne...',\n", + " 'owaru like the end',\n", + " 'of a story',\n", + " 'with the day',\n", + " 'close the door',\n", + " 'koko yori takai ishiki no naka',\n", + " 'kowarete susunde hajimaru',\n", + " 'television suna arashi kesarete',\n", + " 'sono ato wa jibun de acapella de utatteta',\n", + " 'feeling pains',\n", + " \"but it's still going well\",\n", + " 'no matter what',\n", + " 'no matter how',\n", + " 'no matter...',\n", + " 'if you like it or not',\n", + " 'where or when',\n", + " \"it doesn't matter\",\n", + " 'open wide, open wide',\n", + " \"it doesn't matter\",\n", + " 'open wide',\n", + " 'open wide chuucho sezu',\n", + " 'sugisaru hachou no naka',\n", + " 'sotto omoide no shashin',\n", + " 'fukai konya yume no peegi no youna',\n", + " 'kousai shiteru hikari no naka',\n", + " 'yubi wo kuwaete shitto shiteta yo ne...',\n", + " 'nakama de nanamai tarinai',\n", + " 'sonna toranpu ima da wasuretenai...',\n", + " 'samishii shikai futari de norikoete',\n", + " 'samishii hibiki jouzu ni norikonashi',\n", + " 'kagami ni utsuru namida sotto ki ga tsuite',\n", + " 'tadatada mitorete sonna midnight...',\n", + " 'hissori shiteite kokorobosokute...',\n", + " 'nazeka warui tte omottari',\n", + " 'kawatteiku no tte muzukashii koto da ne',\n", + " 'subete kono michi soba ni itakute',\n", + " 'nanka abite mabataku aida ni kieteshimaisou da ne',\n", + " \"i don't wanna say goodbye\",\n", + " 'yanda bakari no ame',\n", + " 'sora ga ochitekisouna tabi ni',\n", + " 'yuuhi minogashiteru',\n", + " 'tsugi wa hoshizora soshite tsukiakari',\n", + " 'mousugu hi ga noboru',\n", + " 'namida kakusenai',\n", + " 'kore ijou chikazukenai',\n", + " 'iki ga hageshiku areteru',\n", + " 'yoakegoro isshun ni ireru to',\n", + " 'omotte hon no isshun',\n", + " 'close to you, close to you',\n", + " 'no matter what',\n", + " 'no matter how',\n", + " 'no matter....',\n", + " 'if you like it or not',\n", + " 'chiisasna heya ga ookiku omoete',\n", + " 'anata ga tooi',\n", + " 'furi dashita ame ni nurete',\n", + " 'hoho kara kobore ta kimi no namida',\n", + " 'samishisa to itami no shirushi wo',\n", + " 'kokoro ni kizan de nai teirun da ne',\n", + " 'ima dake kawari ni boku ga akari ni narou',\n", + " 'kuraku te mienai michi mo terasu yo delight in your heart',\n", + " '* namida ga daka reru made naii te',\n", + " 'zenbu wasurete shimae baii',\n", + " 'dakishimeteitai wanna give my love',\n", + " 'kokoro ni hana wo...',\n", + " 'omoi no mama ni sake bouyo',\n", + " 'subete wo boku ni azukete',\n", + " 'nai taraii gonna make you happy',\n", + " 'sono omoi nagase baii...',\n", + " 'sayonara wo yozora ni na geyou',\n", + " 'only you can hurt me with love',\n", + " 'kuri dashi no hibi no naka de',\n", + " 'deatta daiji na koi dattan da ne',\n", + " 'shaga mikomi ugo kanai kimi ni',\n", + " 'boku ni wa itai nani ga dai kiru darou',\n", + " 'chiisana sono te wo boku ga tsutsumu kara',\n", + " 'hitomi wo nukuou hitori jyanai sa delight in your eyes',\n", + " 'namida ga dakieru made daite',\n", + " 'yoru ga owaru made soba niiyou',\n", + " 'boku ga kimi wo just i wanna be your cloth',\n", + " 'dakishimeru no sa...',\n", + " 'mirai wo mi nai you chika ouyo',\n", + " 'kotoba wo koeta tsuyosa de',\n", + " \"kono mama zutto you're my candy rain\",\n", + " 'kimi no koto o hanasanai sa...',\n", + " 'omoi de ni wakare o tsugeyou',\n", + " 'only you can hurt me with love',\n", + " '* repeat',\n", + " 'karanokokoro wo terasu mono wa nani?',\n", + " 'sakebi tsudzukeru hikari todoku made',\n", + " 'falling through the cracks',\n", + " 'kurayami e ochiteku',\n", + " 'anata no sono te wo zettai hanasanai',\n", + " 'tell me the story of your life',\n", + " 'mada michi no tochuu',\n", + " 'anata o watashi wa zettai akiramenai',\n", + " 'osaerarenai shoudou',\n", + " 'nanigenai hibi wa aijou',\n", + " 'natsukashii kaze ni furimukeba',\n", + " 'itsudemo anata no koe ga suru yo',\n", + " 'underdog wa wander around',\n", + " 'mawarimichi shitemo nigeru yori mashi yo',\n", + " 'jibun de jibun wo shinjirarenakucha',\n", + " 'dare wo shinjiru no?',\n", + " 'hikari ni sono te kazase',\n", + " 'shining through the clouds',\n", + " 'kurayami e ochiteku',\n", + " 'anata no sono te wo zettai hanasanai',\n", + " 'tell me what is on your mind',\n", + " 'hateshinai yume wo',\n", + " 'oikake bokura wa zettai akiramenai',\n", + " 'kotae no nai jinsei ni kujikesou ni naru kedo',\n", + " \"don't give it up! keep it up! turn it upside down!\",\n", + " 'kokoro wa tsunagatteru yo tatoe tooku hanaretemo',\n", + " 'tomo ni tomo ni ikiteyukou',\n", + " 'itsumo zenryoku shissou',\n", + " 'mezasu no wa ano choujou',\n", + " 'sagashitsuduketeru ibasho wa',\n", + " 'itsu demo anata wo matteiru yo',\n", + " 'our lives wa winding road',\n", + " 'yorimichi shitemo modoru yori mashi yo',\n", + " 'tatoe machigaetemo muda janai kara',\n", + " 'mayowazu ni susume',\n", + " 'sono te wo sora ni kazase',\n", + " 'falling through the cracks',\n", + " 'kurayami e ochiteku',\n", + " 'anata no sono te wo zettai hanasanai',\n", + " 'tell me the story of your life',\n", + " 'mada michi no tochuu',\n", + " 'anata wo watashi wa zettai akiramenai',\n", + " 'kotae no nai jinsei ni mayotte bakari dakedo',\n", + " \"don't give it up! keep it up! turn it upside down!\",\n", + " 'kokoro wa tsunagatteru yo tatoe tooku hanaretemo',\n", + " 'tomo ni tomo ni ikiteyukou',\n", + " 'hikari ni sono te kazase',\n", + " 'shining through the clouds',\n", + " 'kurayami e ochiteku',\n", + " 'anata no sono te o zettai hanasanai',\n", + " 'tell me what is on your mind',\n", + " 'hateshinai yume wo',\n", + " 'oikake bokura wa zettai akiramenai',\n", + " 'kotae no nai jinsei ni kujikesou ni naru kedo',\n", + " \"don't give it up! keep it up! turn it upside down!\",\n", + " 'kokoro wa tsunagatteru yo tatoe tooku hanaretemo',\n", + " 'tomo ni tomo ni ikiteyukou',\n", + " 'i’m burning down tonight',\n", + " 'ajik ne moksoriga deullyeo',\n", + " 'i’m burning down my girl',\n", + " 'jakku neoui misoga boyeo',\n", + " 'i’m burning down',\n", + " 'ildaneun bikyeojwo da chiwojwo',\n", + " 'nae maeum doryeonaeseo gajyeogabeorideonga',\n", + " 'deoneun mossalgesseo',\n", + " 'da bujireobseo jinannarui gieokdo',\n", + " 'naegeneun chueok anin keun gotonginikka',\n", + " 'geu nomui gotongdeuri nama',\n", + " 'naui haengbokdeureul jommeokjanha',\n", + " 'nega bwado nae sarangeun jom keosseotjanha',\n", + " 'dambaedo piji annneunde nae sogi ta deureoga',\n", + " 'i’m burning down tonight',\n", + " 'ajik ne moksoriga deullyeo',\n", + " 'i’m burning down my girl',\n", + " 'jakku neoui misoga boyeo',\n", + " '( jeongmal michigesseo)',\n", + " 'nuga nal jom dowajwo',\n", + " '( i’m burning down down)',\n", + " 'nega eomneun crazy night',\n", + " '( don’t let me down down)',\n", + " 'jebal nal jom kkeonaejwo',\n", + " '( i’m burning down down)',\n", + " 'jiok gateun crazy night',\n", + " 'i’m burning down down',\n", + " 'buseojin maeum maeum modu bultasseo wanjeon',\n", + " 'pyeini dwaebeorin na',\n", + " 'dwaebeoryeosseo pyeini',\n", + " 'jedaero meongneundageona useobon',\n", + " 'gieogi geoui eonjenji da asa gabeoryeosseo',\n", + " 'saraganeun geot ttawin naegeneun deoseobseo',\n", + " 'naega cheoreobseo?',\n", + " 'nan neohante nuni meoreosseo',\n", + " 'maldo andwae urin eoryeosseo',\n", + " 'maybe i’m crazy please don’t let me go',\n", + " 'i’m burning down tonight',\n", + " 'ajik ne moksoriga deullyeo',\n", + " 'i’m burning down my girl',\n", + " 'jakku neoui misoga boyeo',\n", + " '( jeongmal michigesseo)',\n", + " 'nuga nal jom dowajwo',\n", + " '( i’m burning down down)',\n", + " 'nega eomneun crazy night',\n", + " '( don’t let me down down)',\n", + " 'jebal nal jom kkeonaejwo',\n", + " '( i’m burning down down)',\n", + " 'jiok gateun crazy night',\n", + " 'jaetdeomiga dwaesseo nameun geotdeul',\n", + " 'moduda mojori taewo',\n", + " 'geureoke tto oetoriga dwaesseo nae maeum',\n", + " 'sarm geurae neomani mewo',\n", + " 'na ije modeun ge geobina',\n", + " 'sirida motae neomuna jeorin maeum',\n", + " 'jebal nal jom dowajwo birok',\n", + " 'geojitmarirado gwaenchanha',\n", + " 'baby i’m burning down',\n", + " 'i’m burning down tonight',\n", + " 'ajik ne moksoriga deullyeo',\n", + " 'i’m burning down my girl',\n", + " 'jakku neoui misoga boyeo',\n", + " 'i’m burning down',\n", + " 'dasi kkok doraorago',\n", + " 'yeogiseo kkeonaedallago',\n", + " 'deullini naui moksori',\n", + " 'i’m burning down',\n", + " \"baby you'll always be my love\",\n", + " 'eien wo chikaou',\n", + " 'we got real love',\n", + " 'now you are part of my life',\n", + " 'itsu demo futari de',\n", + " \"cause it's real love\",\n", + " 'yeah it is real love',\n", + " 'kuukou oriru to mou bessekai',\n", + " 'haresugi no blue sky ga uso mitai',\n", + " 'soko wa marude rakuen zenbu toropikaru',\n", + " 'atarashii kimochi ni naru',\n", + " 'kitto isshou ichido kiri no hanemu-n',\n", + " 'taiyou mo shukufuku',\n", + " 'kore kara wa futari tomo ni ikiteku',\n", + " 'kyou ga sono hajimari',\n", + " 'hey baby kocchi muite?',\n", + " 'bakappuru de ok nokosu kinen',\n", + " 'datte sanzan matte neri netta',\n", + " 'bikini datte kireru you ni natta',\n", + " 'nante hashaideru kimi to waratte',\n", + " 'sugoseru koto ga nani yori yorokobi de',\n", + " 'isshou mono no omoide',\n", + " 'tanoshimou toriaezu norinori de',\n", + " \"you'll always be my love\",\n", + " 'sunahama ni egakou',\n", + " 'we got sweet love',\n", + " 'now you are part of my life',\n", + " 'mirai wo mitsumete',\n", + " 'we got sweet love',\n", + " 'yeah we got sweet love',\n", + " 'so my love',\n", + " 'yuuhi ga shizundemo',\n", + " \"it's real love\",\n", + " 'so you can trust my love',\n", + " 'kore kara mo zutto',\n", + " \"cause it's real love\",\n", + " 'yeah it is real love',\n", + " 'after all the plans of this and that',\n", + " 'you gave me a ring then i became your wife',\n", + " 'yameru toki mo sukoyaka naru toki mo',\n", + " 'isshou issho ni kore kara zutto',\n", + " 'sou \"marude otogibanashi no naka de no koto\"',\n", + " 'nanka ja nakatta',\n", + " 'kono kimochi wa kawarazu onaji',\n", + " 'your the one for me the one and only',\n", + " 'see? may be fuzakeatte',\n", + " 'making love & yoru ni natte',\n", + " \"it ain't nothing like being big live wealthy\",\n", + " \"but i like the way you eat herb it's healthy\",\n", + " 'chiheisen shizumu yuuhi',\n", + " 'doko made mo tsudzuku manten no hoshi',\n", + " 'i ma ride with you tooi michinori mo',\n", + " \"futari de ikeba it'll be all great!!\",\n", + " \"baby you'll always be my love\",\n", + " 'amanogawa koete',\n", + " 'we got real love',\n", + " 'now you are part of my life',\n", + " 'shiawase no tabi e',\n", + " \"cause it's real love\",\n", + " 'yeah it is real love',\n", + " 'sitting here contemplating thoughts',\n", + " 'summer breath gently sweeping my face',\n", + " 'the love is in the air...',\n", + " \"itsumo wagamama bakka komarasen' na\",\n", + " \"maikai gaman shiten' da\",\n", + " 'tama nya ore no itteru koto mo kike tte iu ka',\n", + " 'ore ga iru arigatami wo shire!!',\n", + " 'damn boy sure you got the nerve to say it?',\n", + " 'taishite koudouryoku mo nai kuse nani?',\n", + " \"imasara isogashibutte n' ja ne-\",\n", + " \"ttsu-ka maji isogashii n' da fuzakenna\",\n", + " 'mou rikon da!! ...nante ne?',\n", + " 'oh my love',\n", + " 'futari no kinenbi',\n", + " 'we got sweet love',\n", + " 'now you are part of my life',\n", + " 'dotabata no hanemu-n demo',\n", + " 'sweet love',\n", + " 'yeah we got sweet love',\n", + " 'so my love',\n", + " 'eien wo chikaou',\n", + " \"cause it's real love\",\n", + " 'so you can trust my love',\n", + " 'itsu demo futari de',\n", + " \"cause it's real love\",\n", + " 'yeah it is real love',\n", + " 'check baby check baby 1 2 3',\n", + " 'futoshita shunkan me ga au tabi',\n", + " 'do you feel what i feel? kore tashika ni',\n", + " 'u & me are may be meant to be',\n", + " 'now check baby check baby 1 2 3',\n", + " 'atarashii jinsei no hajimari',\n", + " 'do you feel what i feel? sou tashika ni',\n", + " 'u & me are so meant to be',\n", + " 'hey! my teddy shirikomi shitenai de',\n", + " 'hey! my pony! okoru tokoro desho?',\n", + " 'chai yai yai yai yai',\n", + " 'you are in trouble!',\n", + " 'chai yai yai yai yai',\n", + " 'i am trouble!',\n", + " 'chai yai yai yai yai yai yai yai',\n", + " 'chai yai yai yai ya!',\n", + " 'amazora no go tou sei ni manzoku shita mama',\n", + " 'donna ni natteku',\n", + " \"sorede yorokobi kanjiteta n'dayo ne\",\n", + " 'hey! my teddy! ano hi no koto wo',\n", + " 'hey! my pony! omoidashiteru no',\n", + " 'chai yai yai yai yai',\n", + " 'you were in trouble!',\n", + " 'chai yai yai yai yai',\n", + " 'i was trouble!',\n", + " 'chai yai yai yai yai yai yai yai',\n", + " 'chai yai yai yai ya!',\n", + " 'kui nokoshi no wa to',\n", + " 'tsuppashitte tame ni tobikondeku',\n", + " 'sonna anata muteki desu',\n", + " 'are you ween?',\n", + " 'jibun-tachi sae rikai shitenai esoragoto ni kataku kajiri tsuite',\n", + " 'hell, go! screamn!',\n", + " 'hoshikuzu no you tobichitte kagami no kuni tsukinukete itta',\n", + " 'hell, go! scream! with it!',\n", + " 'mitai na yatsu ni furimawasarete mo',\n", + " 'nanimo kawarazu ni irareru',\n", + " 'sonna anata daisuki deshita',\n", + " 'do you want?',\n", + " 'jibun-tachi sae rikai shitenai esoragoto ni kataku kajiri tsuite',\n", + " 'hell, go! screamn!',\n", + " 'no ni nori sokonete',\n", + " 'itsumo soko de odotteita',\n", + " 'hell, go! screamn!',\n", + " 'lan lan lan lan lan la la la... hell, go! scream! with it!',\n", + " 'zutto onaji sora wo miage tobi no narabu kouka shita',\n", + " 'zutto onaji iro ga suki de zutto ittetakatta',\n", + " 'kawatteiku atashi to kawatte iku anata ni',\n", + " 'tomadottemasu',\n", + " 'lan lan lan la...',\n", + " 'saegirareru wa',\n", + " 'araizarashi no hadaka no mama ja',\n", + " 'kikazari hikari',\n", + " 'mikaeri namida ubawareru no',\n", + " 'minareta piasu toori no kaze de kanaderu',\n", + " 'shagareta koe ni tokete ienai',\n", + " 'anata ni dakarete ano ko mo dakarete',\n", + " 'majime na kao zurui hito to wakatte itemo',\n", + " 'zutto kizukanai furi',\n", + " 'kitto hoka no dareka mo',\n", + " 'itsuka hanarete yuku kara',\n", + " 'sayonara baka na hito',\n", + " 'itsu mademo matteta',\n", + " 'kaze no tayori nante ki ni shinai wa',\n", + " 'dear rumor...',\n", + " 'zutto kizukanai furi',\n", + " 'kitto hoka no dareka mo',\n", + " 'itsuka hanarete yukeru no ka na',\n", + " 'zutto issho ni itemo',\n", + " 'kitto hoka no dareka to',\n", + " 'itsuka tooku kiete yuku kara',\n", + " 'zutto suki ja nakatta',\n", + " 'shita no namae yonde kureta ne',\n", + " 'nido to hanarenai to chikatta ano hi ni',\n", + " 'kitto kono machi no you ni',\n", + " 'sugu ni utsurikawaru anata wo',\n", + " 'itsuka subete wasurerareru ka na',\n", + " 'sayonara kono machi no anata to sugoshita',\n", + " 'kaze wo karuku waraitobaseru kara',\n", + " 'moshimo mata itsuka deaetara',\n", + " 'sariyuku se wo misetsukete yaru kara',\n", + " 'zutto zutto machitsuzuketa',\n", + " 'kaze no tayori nante mou ki ni shinai wa',\n", + " 'this is a rumor',\n", + " 'if you say goodbye to me',\n", + " 'rumor has it...',\n", + " \"you know i'm in love\",\n", + " \"i'm so inspired by you\",\n", + " 'gaiken nante dou demo ii no yo',\n", + " 'taisetsu na mono wa oku no hou ni aru no',\n", + " 'stay real manabiya chikai no graffiti',\n", + " 'koukyuu shikou meisei to rimujin',\n", + " 'nimotsu ga omosugite hito wa yasete iku no',\n", + " 'pentohausu yori kaigara no umi no ne',\n", + " 'at the end of the day',\n", + " 'ashita kara hajimeyou nante',\n", + " 'why not today?',\n", + " 'mezametemo motto motto hayaku mezamete motto',\n", + " '* you need a friend who will walk with you',\n", + " 'you need a real friend who will walk with you',\n", + " 'no matter what',\n", + " 'at the end of the day',\n", + " 'at the end of the day',\n", + " 'te ni shite mono to te ni hairanu mono',\n", + " 'saigo ni tsuyoi no wa docchi no hou ga desu ka?',\n", + " 'kairaku oborete munashii asahi',\n", + " 'chiisai koro ni yumemita sekai ga',\n", + " 'chiisaku miete taikai wo mezashita kedo',\n", + " 'do you have a place to go back to at the end of the day?',\n", + " 'tsuyoku ikite kita n´ da nante',\n", + " 'don´t you ever cry?',\n", + " 'sagashite motto motto chikaku sagashite motto',\n", + " '* repeat',\n", + " 'shiawase no imi wo sagasu tabi wo tomo ni',\n", + " 'arukou motto motto nagaku arukou motto',\n", + " '* repeat',\n", + " \"qalbou fouq rassi taj, kfouf idih l'dati lbass\",\n", + " \"rouhou t'chouf essaken fya machi l'meskan\",\n", + " \"farrach ktafou l'ahlami, dra3ou jarda f'mnami\",\n", + " \"khir men âïnya âïnih t'chouf gouddami\",\n", + " \"whowa lli chadd bidiya ou qata3 biya l'fsoul\",\n", + " \"whowa lli 3alih n'ghanni ou nekteb ou n'goul\",\n", + " \"qalbou fouq rassi taj, kfouf idih l'dati lbass\",\n", + " \"rouhou t'chouf essaken fya machi l'meskan\",\n", + " \"farrach ktafou l'ahlami, dra3ou jarda f'mnami\",\n", + " \"khir men âïnya âïnih t'chouf gouddami\",\n", + " \"whowa lli chadd bidiya ou qata3 biya l'fsoul\",\n", + " \"whowa lli 3alih n'ghanni ou nekteb ou n'goul\",\n", + " \"3andou douq ou chan ou serr, bghit fi qalbou n'kber\",\n", + " \"tayefhamni ouakha bla ma n'tkallem\",\n", + " '7all labouab lahlami, whowa rou7 ilhamy',\n", + " 'bghitou mazal ikoun foust iyyami',\n", + " \"whowa lli chadd bidiya ou qata3 biya l'fsoul\",\n", + " \"whowa lli 3âlih n'ghanni ou nekteb ou n'goul\",\n", + " \"whowa 'ssdiq, whowa l'maleh ou lahlou\",\n", + " \"whowa 'rrfiq, makayn b7alou\",\n", + " \"whowa 'zzine, whowa l'fayeq 'rrzine\",\n", + " \"ou l'3acheq lahnine, makayn bhalou\",\n", + " \"qalbi chaf fih khialou, whowa lli ana tan'bghih\",\n", + " \"qalbou fouq rassi taj, kfouf idih l'dati lbass\",\n", + " \"rouhou t'chouf essaken fya machi l'meskan\",\n", + " \"farrach ktafou l'ahlami, dra3ou jarda f'mnami\",\n", + " \"khir men âïnya âïnih t'chouf gouddami\",\n", + " \"whowa lli chadd bidiya ou qata3 biya l'fsoul\",\n", + " \"whowa lli 3alih n'ghanni ou nekteb ou n'goul\",\n", + " \"whowa 'ssdiq, whowa l'maleh ou lahlou\",\n", + " \"whowa 'rrfiq, makayn b7alou\",\n", + " \"whowa 'zzine, whowa l'fayeq 'rrzine\",\n", + " \"ou l'3acheq lahnine, makayn bhalou\",\n", + " \"qalbi chaf fih khialou, whowa lli ana tan'bghih\",\n", + " \"whowa 'ssdiq, whowa l'maleh ou lahlou\",\n", + " \"whowa 'rrfiq, makayn b7alou\",\n", + " \"whowa 'zzine, whowa l'fayeq 'rrzine\",\n", + " \"ou l'3acheq lahnine, whowa lfenn ou lefnoun\",\n", + " \"whowa lli chadd bidiya ou qata3 biya l'fsoul\",\n", + " \"whowa lli 3alih n'ghanni ou nekteb ou n'goul\",\n", + " \"whowa 'ssdiq, whowa l'maleh ou lahlou\",\n", + " \"whowa 'rrfiq, makayn b7alou\",\n", + " \"whowa 'zzine, whowa l'fayeq 'rrzine\",\n", + " \"ou l'3acheq lahnine, makayn bhalou\",\n", + " \"qalbi chaf fih khialou, whowa lli ana tan'bghih\",\n", + " 'featuring:aslam, benny dayal, tanvi, darshana, satish subramanium, anupama & blazee',\n", + " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", + " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", + " 'hai muscular, hai popular, hai muscular, hai popular, spectacular he’s a bachelor',\n", + " 'paapu ki gaadi tez hai, pappu kudiyon mein craze hai',\n", + " 'pappu ke aankhen light blue, pappu dikhtha angrez hai',\n", + " 'raaton ki ghadi haathon mein perfume gucci waala',\n", + " \"but pappu can' t dance saala… pappu can' t dance saala\",\n", + " 'pappu nach nahin saktha',\n", + " 'when i am gonna see you with the dance in the hall',\n", + " 'when i am gonna see you with the dance se!!',\n", + " 'when i am gonna see you with the dance in the hall',\n", + " 'when i am gonna see you with the dance se!!',\n", + " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", + " \"pappu can' t dance saala\",\n", + " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", + " \"pappu can' t dance saala\",\n", + " 'paida pappu hua to kismathein chamke',\n", + " 'aur uske moo mein thi chandi ki chamche',\n", + " 'hey hey hey pappu ke paas hai pyasa, hey hey hey haathon ke meil ke jaisa',\n", + " 'hey hey hey pappu yaaron ka yaar hai, hey hey hey pappu is hot and smart hai',\n", + " \"but pappu can' t dance saala pappu can' t dance saala\",\n", + " 'pappu nach nahin saktha',\n", + " 'thirkit thana na na na. thirkit thana na na na',\n", + " 'thirkit thana na na na. thirkit thana na na na',\n", + " 'paapa kehthe hai bada naam karega; mera pappu to aisa kaam karega',\n", + " 'hey hey hey pappu ke paas hai p a , hey hey hey kartha hai france mein holiday',\n", + " 'hey hey hey pappu guitar bajatha hai, hey hey hey jahan jaatha hai chchaa jaatha hai',\n", + " \"but pappu can' t dance saala…\",\n", + " 'thirkit thana thirkit thana thiri thana lets dance',\n", + " 'thirkit thana thirkit thana thiri thana lets dance',\n", + " 'thirkit thana na na na. thirkit thana na na na',\n", + " \"but pappu can' t dance saala…\",\n", + " 'thirkit thana na na na. thirkit thana na na na',\n", + " 'pappu nach nahin saktha',\n", + " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", + " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", + " 'when i am gonna see you with the dance in the hall',\n", + " 'when i am gonna see you with the dance sir!!',\n", + " 'when i am gonna see you with the dance in the hall',\n", + " 'when i am gonna see you with the dance sir!!',\n", + " 'when i am gonna see you with the dance in the hall',\n", + " 'when i am gonna see you with the dance sir!!',\n", + " 'thirkit thana na na na. thirkit thana na na na',\n", + " \"but pappu can' t dance saala…\",\n", + " 'kokoro dogimagi, mesen kurakura',\n", + " 'senpai kurabu odemashi',\n", + " 'kokkyou koete jikuu yugamete',\n", + " 'masa ni parallel world',\n", + " 'katakoto dakedo kisou tengai',\n", + " 'tenkei rabukome tsuppashiru',\n", + " 'senpai naraba subete agetai',\n", + " 'abunai? ayashii? kankei',\n", + " 'dokidokin haato wa otome no kunshou',\n", + " 'kanjiru shisen! fukuramu mousou?',\n", + " 'mou tomaranai!',\n", + " 'itsuka anata to aventure',\n", + " 'zutto zutto loving you nano',\n", + " 'anata de ite senpai',\n", + " 'tomodachi mo shiranai in my heart',\n", + " 'sunao ni narenai i want u',\n", + " 'sotsugyou shinaide senpai',\n", + " 'watari rouka de surechigau tabi',\n", + " 'shinpakusuu ga up beat',\n", + " 'me ga atta no ka attenai no ka',\n", + " 'kirenaga no me no fantasy',\n", + " 'ijigen tsunaide geta bako wa mou',\n", + " 'anata to watashi no ai no su',\n", + " 'denwa dake de wa tsutawaranai wa',\n", + " 'minna no mae de love me do',\n", + " 'always dreaming ima mo tonari no seki wo',\n", + " 'gakunen no sa wo koeru ai wo',\n", + " 'sensei wakatte!',\n", + " 'itsudemo iechau i need you',\n", + " 'mainichi aechau konna hibi mo',\n", + " 'iroaseru no? senpai',\n", + " 'hontou wa shiritai in your heart',\n", + " 'kowakute ienai i love u',\n", + " 'sotsugyou shinaide senpai',\n", + " 'dokidokin haato wa otome no kunshou',\n", + " 'kanjiru shisen! fukuramu mousou?',\n", + " 'mou tomaranai!',\n", + " 'itsuka anata to aventure',\n", + " 'zutto zutto loving you nano',\n", + " 'anata de ite senpai',\n", + " 'tomodachi mo shiranai in my heart',\n", + " 'sunao ni narenai i want u',\n", + " 'sotsugyou shinaide senpai',\n", + " 'watashi dake no senpai',\n", + " \"'yeah, huh\",\n", + " 'here we go once again',\n", + " \"guess who's back, let's go\",\n", + " 'this one is all about you',\n", + " 'i really hate you but i love you',\n", + " 'so what can i do?',\n", + " 'now listen',\n", + " 'neoreul bomyeon apa, sumi neomu gappa, ije nae sonjaba',\n", + " 'geu sarameun neoreul saranghaji eanhneunde wae?',\n", + " \"why don't you get it?\",\n", + " 'baby let me love ya, love ya, love ya',\n", + " 'nae jeonbureul georeo, i jumuneun georeo, we can be so perfect',\n", + " 'sesangmodu jeokidwindahaedo naneun andwae',\n", + " 'neo animyeon andwae',\n", + " 'baby let me love ya, love ya, love ya',\n", + " 'oneureun yeotaekkeot gidaryeosseo',\n", + " 'mianhae ganjeolhi baraewasseo',\n", + " 'nal bitgyeogattdeon ni uraen sarangi janinhage kkeulnagireul',\n", + " 'geusaram ijeo, ijen jiweobeoryeo',\n", + " 'eochapi neohaguneun eoolriji anhaneungeol',\n", + " \"so baby won't you come to me\",\n", + " \"i'll make you, make you happy\",\n", + " 'neoreul bomyeon apa, sumi neomu gapen, ijen naesun japa',\n", + " 'geu sarameun neoreul saranghajieanhneunde wae?',\n", + " \"why don't you get it?\",\n", + " 'baby let me love ya, love ya, love ya',\n", + " 'nae jeonbureul georeo, i jumuneun georeo, we can be so perfect',\n", + " 'sesangmodu jeokidwindahaedo naneun andwae',\n", + " 'neo animyeon andwae',\n", + " 'baby let me love ya, love ya, love ya',\n", + " 'cheoeumen haengbokhagil baraesseo',\n", + " 'geude birok geusaram yeopeseorado',\n", + " 'mideosseoseo, na eopsi haengbokhadamyeon, geugeolro chungbunhaesseo',\n", + " 'hajiman, neoui nunmol ipuyeo, neoui seulpeumi boryeo',\n", + " 'amuri chamabwado andwae ijen jichyeo michyeo',\n", + " 'i cannot let it go, i gotta take you',\n", + " 'ije uri unmyeongingeol yeah',\n", + " 'neoreul bomyeon apa, sumi neomu gapen, ijen naesun japa',\n", + " 'geu sarameun neoreul saranghajieanhneunde wae?',\n", + " \"why don't you get it?\",\n", + " 'baby let me love ya, love ya, love ya',\n", + " 'nae jeonbureul georeo, i jumuneun georeo, we can be so perfect',\n", + " 'sesangmodu jeokidwindahaedo naneun andwae',\n", + " 'neo animyeon andwae',\n", + " 'baby let me love ya, love ya, love ya',\n", + " 'eotteohke neon moreuneunde? hapil geu saraminde?',\n", + " 'neoui apeun sarangddawin nan bolsueoptneunde',\n", + " 'ijteo, ni kaseum myeondeulgehaneun geureon nappeunsarang',\n", + " 'ijen jipeochyeo please! apeun neoreul guhagesseo',\n", + " ...]},\n", + " 'r-b': {'meta': {'train_data': ['sandese aate hai, humein tadpaate hai',\n", + " 'jo chitthi aati hai, wo poochhe jaati hai',\n", + " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", + " 'likho kab aaoge?',\n", + " 'ke tum bin ye ghar soona, soona hai',\n", + " 'sandese aate hai, humein tadpaate hai',\n", + " 'jo chitthi aati hai, wo poochhe jaati hai',\n", + " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", + " 'likho kab aaoge?',\n", + " 'ke tum bin ye ghar soona, soona hai',\n", + " 'kisi dilwaali ne, kisi matwaali ne',\n", + " 'humein khat likha hai, ye humse poochha hai',\n", + " 'kisi ki saanson ne, kisi ki dhadkan ne',\n", + " 'kisi ki choodi ne, kisi ke kangan ne',\n", + " 'kisi ke kajre ne, kisi ke gajre ne',\n", + " 'mahekti subahon ne, machalti shaamon ne',\n", + " 'akeli raaton ne, adhoori baaton ne, tarasti baahon ne',\n", + " 'aur poochha hai tarsi nigaahon ne',\n", + " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", + " 'likho kab aaoge?',\n", + " 'ke tum bin ye ghar soona, soona hai',\n", + " 'sandese aate hai, humein tadpaate hai',\n", + " 'jo chitthi aati hai, wo poochhe jaati hai',\n", + " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", + " 'likho kab aaoge?',\n", + " 'ke tum bin ye ghar soona, soona hai',\n", + " 'mohabbat waalon ne, hamaare yaaron ne',\n", + " 'humein ye likha hai, ke humse poochha hai',\n", + " 'hamaare gaaon ne, aam ki chhaaon ne',\n", + " 'puraane peepal ne, baraste baadal ne',\n", + " 'khet khaliyaanon ne, hare maidaanon ne',\n", + " 'basanti belon ne, jhoomti belon ne',\n", + " 'lachakte jhulon ne, behekte phoolon ne, chatakti kaliyon ne',\n", + " 'aur poochha hai gaaon ki galiyon ne',\n", + " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", + " 'likho kab aaoge?',\n", + " 'ke tum bin ye ghar soona, soona hai',\n", + " 'sandese aate hai, humein tadpaate hai',\n", + " 'jo chitthi aati hai, wo poochhe jaati hai',\n", + " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", + " 'likho kab aaoge?',\n", + " 'ke tum bin ye ghar soona, soona hai',\n", + " 'kabhi ek mamta ki, pyaar ki ganga ki',\n", + " 'jo chitthi aati hai, saath woh laati hai',\n", + " 'mere din bachpan ke, khel wo aangan ke',\n", + " 'wo saaya aanchal ka, wo teeka kaajal ka',\n", + " 'wo lori raaton mein, wo narmi haathon mein',\n", + " 'wo chaahat aankhon mein, wo chinta baaton mein',\n", + " 'bigadna upar se, mohabbat andar se, kare wo devi maa',\n", + " 'yahin har khat mein poochhe meri maa',\n", + " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", + " 'likho kab aaoge?',\n", + " 'ke tum bin ye ghar soona, soona hai',\n", + " 'sandese aate hai, humein tadpaate hai',\n", + " 'jo chitthi aati hai, wo poochhe jaati hai',\n", + " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", + " 'likho kab aaoge?',\n", + " 'ke tum bin ye ghar soona, soona hai',\n", + " 'ae, guzarne waali hawa btaa, mera itna kaam karegi kya?',\n", + " 'mere gaaon jaa, mere doston ko salaam de',\n", + " 'mere gaaon mein hai jo wo gali, jahan rehti hai meri dilrubaa',\n", + " 'use mere pyaar ka jaam de, use mere pyaar ka jaam de',\n", + " 'wahi thodi door hai ghar mera',\n", + " 'mere ghar mein hai meri boodhi maa',\n", + " 'meri maa ke pairon ko chhoo ke',\n", + " 'tu use uske beta ka naam de',\n", + " 'ae, guzarne waali hawa zara',\n", + " 'mere doston meri dilrubaa',\n", + " 'meri maa ko mera payaam de',\n", + " 'unhe jaake tu ye payaam de',\n", + " 'main waapas aaoonga, main waapas aaoonga',\n", + " 'phir apne gaaon mein, usiki chhaaon mein',\n", + " 'ki maa ke aanchal se, gaaon ke peepal se',\n", + " 'kisi ke kaajal se, kiya jo waada tha wo nibhaoonga',\n", + " 'main ek din aaoonga, main ek din aaoonga',\n", + " 'main ek din aaoonga, main ek din aaoonga',\n", + " 'main ek din aaoonga, main ek din aaoonga',\n", + " 'main ek din aaoonga, main ek din aaoonga',\n", + " 'oya now',\n", + " 'shout out to my one and only',\n", + " 'na you be my alobam',\n", + " 'nkem you’re one in a million',\n", + " 'shout out to my baby honey',\n", + " 'na you be my girly o',\n", + " 'temi, you’re one in a billion',\n", + " 'ale ma ni owo lowo',\n", + " 'sugbon a l’alafiya',\n", + " 'ale ma ni ile lori',\n", + " 'aye wa dun bi oyin',\n", + " 'ale ma l’owo lowo',\n", + " 'sugbon ani ifokan bale',\n", + " 'ale ma ni ile lori o',\n", + " 'orente no dey complain o',\n", + " 'e ba mi ki orente o',\n", + " 'orente o',\n", + " 'shout out to my orente o',\n", + " '(orente o)',\n", + " 'e ba mi ki orente o',\n", + " '(orente o)',\n", + " 'shout out to my orente o',\n", + " '(orente o)',\n", + " 'e ba mi ki orente',\n", + " '(orente o)',\n", + " 'iyawo mi orente',\n", + " 'dorobucci dey toast you',\n", + " 'you tell am sey you no do',\n", + " 'sey you no go leave me',\n", + " 'omoge to loyal',\n", + " 'baby mi to sure ju',\n", + " 'sey you no go leave me',\n", + " 'ale ma ni owo lowo',\n", + " 'sugbon a l’alafiya',\n", + " 'ale ma ni ile lori',\n", + " 'aye wa dun bi oyin',\n", + " 'ale ma l’owo lowo',\n", + " 'sugbon a ni ifokan bale',\n", + " 'ale ma ni ile lori o',\n", + " 'orente no dey complain o',\n", + " 'e ba mi ki orente o',\n", + " 'orente o',\n", + " 'shout out to my orente o',\n", + " '(orente o)',\n", + " 'e ba mi ki orente o',\n", + " '(orente o)',\n", + " 'shout out to my orente o',\n", + " '(orente o)',\n", + " 'e ba mi ki orente',\n", + " '(orente',\n", + " 'iyawo mi orente',\n", + " 'orente o',\n", + " 'orente o',\n", + " 'oya now',\n", + " 'orente o',\n", + " 'orente o',\n", + " 'eba mi ki',\n", + " '(orente o)',\n", + " 'orente',\n", + " 'iyawo mi orente',\n", + " 'adeola l’orente',\n", + " '(orente o)',\n", + " 'bolatito l’orente o',\n", + " '(orente o)',\n", + " 'opeyemi l’orente',\n", + " '(orente o)',\n", + " 'omo dada l’orente mi',\n", + " '(orente o)',\n", + " 'ebami ki orente',\n", + " '(orente) orente',\n", + " 'iyawo mi l’orente',\n", + " 'ebami ki orente o',\n", + " '(orente o)',\n", + " 'shout out to me orente o',\n", + " '(orente o)',\n", + " 'ebami ki orente o',\n", + " '(orente o)',\n", + " 'omo dada l’orente mi',\n", + " '(orente o)',\n", + " 'ebami ki orente',\n", + " '(orente) orente',\n", + " 'iyawo mi orente',\n", + " \"ko ma si ibi ti mo le f'ori le\",\n", + " 'kosi o',\n", + " \"a'fe eko ile\",\n", + " \"ko ma si ibi ti mo le f'ori le oh\",\n", + " 'ko si o',\n", + " 'afi eko ile',\n", + " 'bi mo nba rajo lo london oh',\n", + " 'ma tun pada si eko ile',\n", + " 'bi mo nba rajo si new york oh',\n", + " 'ma tun pada si eko ile',\n", + " 'eko o, eko ile (x2)',\n", + " 'bi mo nba rajo lo london oh',\n", + " 'ma tun pada si eko ile',\n", + " 'bi mo nba rajo lo new york oh',\n", + " 'ma tun pada si eko ile',\n", + " 'bi mo nba rajo lo london oh',\n", + " 'ma tun pada si eko ile',\n", + " 'bi mo nba rajo lo new york oh',\n", + " 'ma tun pada si eko ile',\n", + " 'bi mo nba wa moto ni london oh',\n", + " 'ma tun jeje wa koti wa ni be',\n", + " 'bi o nba wa moto ni new york oh',\n", + " 'wa tun sheshe wa koti wa ni be oh',\n", + " 'tori oh alright ni eko ore mi',\n", + " 'ola jun wa nbe',\n", + " 'eko oh, eko ile',\n", + " 'ti wa tun yato si ti yin ose nbo oh',\n", + " 'eko oh, eko ile',\n", + " 'tan wa tun sheshe so ta wa obirin wa oh',\n", + " 'ni won oh',\n", + " 'nuvvu pakka nunte baguntadhe nee pakkanunte baguntadhe nuvvu karametti pettina kamaguntadhe kattibetti guchina samaguntadhe atta vacchi itta nuvvu tipphukunta ellipothe ekkado kaluku mantadhe yellipoke shyamala yellamake shyamala nuvvu yellapoke shayamala oopiradhanta lopala yellipoka shyamala yekki yekki edavalene edhavva maga putaka gunde periginatunde nuvve yellinaaka yellipoke shyamala hey yelamakke shyamala nuvu yellipothe sayamala oopiradanta lopala yellipoka shyamala naram leni nalukalenno aellipommani pampindhaye ratham leni gurram laaga bathuke chathikilabadipoye nee poster addanga chinpesanu anukunna gundello needhe cinema aaduthunnade switch esthe yeligedha uff ante aaredha oopirilo mantalle nee preme unnadhe pranane patta karesi pattesi nitho pattuku pommake gelichesi nannu odilesi seekatenna thotalaaga seyyabake nuvvu yellipoke shyamala nuvvu yellamake shyamala yemi bagaledhe lopala nuvvu yellipoke yellipoke yellipoke shyamala manasukantuthunado mallepoola sentu maraka marchipodamante gurthukosthavundhi nippu sooraka aeti seyanu ori saidulu gundelona gucchipoyinadi soodhulu nannu eti seyyani ori saidulu gundelona guchi poyinadi soodhulu yellipoke shyamala atta yellamake shyamala nuvvu yellipothe asala.. oopiradanta lopala',\n", + " 'korean',\n", + " 'day & night',\n", + " \"we be playin' like its game night\",\n", + " 'got me throwin back to',\n", + " 'mario zelda here we go',\n", + " 'get that donkey kong',\n", + " \"let's get it started\",\n", + " 'every night',\n", + " '나는 자꾸 네가 생각나',\n", + " '야 네가 뭔데',\n", + " '왜 이렇게 내게 보란 듯이',\n", + " '힌트를 줘 무엇을 원하는지',\n", + " '분석해야 돼 네가 뭐라는지',\n", + " '감이 안 와',\n", + " '가끔 넌 늦은 밤에 내게 카톡해',\n", + " 'oh no no',\n", + " '수면 시간 단축돼',\n", + " 'oh no no',\n", + " '바보같이 난 그걸 답장하고',\n", + " '넌 또 그걸 읽씹하고',\n", + " '그럴 바에 대체 왜 나한테 문자 했냐고',\n", + " '투덜투덜 거리면서 단순해서 난 또 기분 좋다고',\n", + " \"i'm so stupid\",\n", + " \"but i really can't stop looking\",\n", + " 'late nights got me feelin like droopy',\n", + " \"i'm new to this game, go easy on a newbie\",\n", + " 'like bang bang bang',\n", + " '넌 매일매일 게임하듯 맨 끝판까지 모두 깨 깨 깨',\n", + " '밤 새새 새면서까지 우린 조이스틱 잡아',\n", + " \"먼저 가지 말고 wait wait i'm singing\",\n", + " 'day & night',\n", + " \"we be playin' like its game night\",\n", + " 'got me throwin back to',\n", + " 'mario zelda here we go',\n", + " 'get that donkey kong',\n", + " \"let's get it started\",\n", + " 'every night',\n", + " '나는 자꾸 네가 생각나',\n", + " '야 네가 뭔데',\n", + " '왜 이렇게 내게 보란 듯이',\n", + " '힌트를 줘 무엇을 원하는지',\n", + " '분석해야 돼 네가 뭐라는지 감이안와',\n", + " '괴로워 우린 다시 드라마 촬영에 임해',\n", + " '이 정도로 너의 장단을 맞춰줬음 어쩜 난 대인배',\n", + " 'we back in the battle with diamonds and beasts',\n", + " 'button a, button b',\n", + " '승부욕에 예전 내 버릇이 나와',\n", + " '막판 거뜬히 깰 거야, 넌 잠이 깰 거야',\n", + " '낮과 밤 뒤바뀌어 살이 빠져',\n", + " '우린 말이 많고 시간은 빨라',\n", + " 'yeah we playin a game with some special mission running in our brain',\n", + " \"i'm sayin\",\n", + " 'ay, 넌 왜 나를 갖고',\n", + " 'ay, 놀아 사람 한 명',\n", + " '살린다는 셈 치고',\n", + " '난이도는 easy mode 봐줘 한번',\n", + " '워우어우어 예예',\n", + " '워우어우어 예예',\n", + " '매일 졌어 나는 왜 못해 이런 게임',\n", + " 'everybody in the back',\n", + " '대기타고 준비해',\n", + " 'get ready, set go',\n", + " '이번 판엔 나도 무대포',\n", + " '깨기 힘든 너의 마음 안에 내 깃발을 꽂고 말 거야 take over, singing',\n", + " 'day & night',\n", + " \"we be playin' like its game night\",\n", + " 'got me throwin back to',\n", + " 'mario zelda here we go',\n", + " 'get that donkey kong',\n", + " \"let's get it started\",\n", + " 'every night',\n", + " '나는 자꾸 네가 생각나',\n", + " '야 네가 뭔데',\n", + " '왜 이렇게 내게 보란 듯이',\n", + " '힌트를 줘 무엇을 원하는지',\n", + " '분석해야 돼 네가 뭐라는지 감이안와',\n", + " 'romanization',\n", + " 'day & night',\n", + " \"we be playin' like its game night\",\n", + " 'got me throwin back to',\n", + " 'mario zelda here we go',\n", + " 'get that donkey kong',\n", + " \"let's get it started\",\n", + " 'every night',\n", + " 'naneun jakku nega saeng-gagna',\n", + " 'ya nega mwonde',\n", + " 'wae ileohge naege bolan deus-i',\n", + " 'hinteuleul jwo mueos-eul wonhaneunji',\n", + " 'bunseoghaeya dwae nega mwolaneunji',\n", + " 'gam-i an wa',\n", + " 'gakkeum neon neuj-eun bam-e naege katoghae',\n", + " 'oh no no',\n", + " 'sumyeon sigan danchugdwae',\n", + " 'oh no no',\n", + " 'babogat-i nan geugeol dabjanghago',\n", + " 'neon tto geugeol ilgssibhago',\n", + " 'geuleol ba-e daeche wae nahante munja haessnyago',\n", + " 'tudeoltudeol geolimyeonseo dansunhaeseo nan tto gibun johdago',\n", + " \"i'm so stupid\",\n", + " \"but i really can't stop looking\",\n", + " 'late nights got me feelin like droopy',\n", + " \"i'm new to this game, go easy on a newbie\",\n", + " 'like bang bang bang',\n", + " 'neon maeilmaeil geimhadeus maen kkeutpankkaji modu kkae kkae kkae',\n", + " 'bam saesae saemyeonseokkaji ulin joiseutig jab-a',\n", + " \"meonjeo gaji malgo wait wait i'm singing\",\n", + " 'day & night',\n", + " \"we be playin' like its game night\",\n", + " 'got me throwin back to',\n", + " 'mario zelda here we go',\n", + " 'get that donkey kong',\n", + " \"let's get it started\",\n", + " 'every night',\n", + " 'naneun jakku nega saeng-gagna',\n", + " 'ya nega mwonde',\n", + " 'wae ileohge naege bolan deus-i',\n", + " 'hinteuleul jwo mueos-eul wonhaneunji',\n", + " 'bunseoghaeya dwae nega mwolaneunji gam-ian-wa',\n", + " 'goelowo ulin dasi deulama chwal-yeong-e imhae',\n", + " 'i jeongdolo neoui jangdan-eul majchwojwoss-eum eojjeom nan daeinbae',\n", + " 'we back in the battle with diamonds and beasts',\n", + " 'button a, button b',\n", + " 'seungbuyog-e yejeon nae beoleus-i nawa',\n", + " 'magpan geotteunhi kkael geoya, neon jam-i kkael geoya',\n", + " 'najgwa bam dwibakkwieo sal-i ppajyeo',\n", + " 'ulin mal-i manhgo sigan-eun ppalla',\n", + " 'yeah we playin a game with some special mission running in our brain',\n", + " \"i'm sayin\",\n", + " 'ay, neon wae naleul gajgo',\n", + " 'ay, nol-a salam han myeong',\n", + " 'sallindaneun sem chigo',\n", + " 'nan-idoneun easy mode bwajwo hanbeon',\n", + " 'woueoueo yeye',\n", + " 'woueoueo yeye',\n", + " 'maeil jyeoss-eo naneun wae moshae ileon geim',\n", + " 'everybody in the back',\n", + " 'daegitago junbihae',\n", + " 'get ready, set go',\n", + " 'ibeon pan-en nado mudaepo',\n", + " 'kkaegi himdeun neoui ma-eum an-e nae gisbal-eul kkojgo mal geoya take over, singing',\n", + " 'day & night',\n", + " \"we be playin' like its game night\",\n", + " 'got me throwin back to',\n", + " 'mario zelda here we go',\n", + " 'get that donkey kong',\n", + " \"let's get it started\",\n", + " 'every night',\n", + " 'naneun jakku nega saeng-gagna',\n", + " 'ya nega mwonde',\n", + " 'wae ileohge naege bolan deus-i',\n", + " 'hinteuleul jwo mueos-eul wonhaneunji',\n", + " 'bunseoghaeya dwae nega mwolaneunji gam-ian-wa',\n", + " 'lagdi mainu jivein ambraan di queen',\n", + " 'meethiyan gallan kare, kudi namkeen',\n", + " 'lagdi mainu jiven ambraan di queen',\n", + " 'meethiyan gallan kare, kudi namkeen',\n", + " 'lagdi mainu jiven ambraan di queen',\n", + " 'meethiyan gallan kare, kudi namkeen',\n", + " 'patla ja lakk tera, lakk nu sambhal ni',\n", + " 'one in the million lagdi kamaal ni',\n", + " 'patla ja lakk tera lakk nu sambhal ni',\n", + " 'one in the million lagdi kamaal ni',\n", + " 'lagdi kamaal ni lagdi kamaal ni',\n", + " 'hoya bura haal ni, hoya bura haal ni',\n", + " 'tu aaja mere close',\n", + " 'milta na mauka roz',\n", + " 'i want you my baby',\n", + " 'mujhe de de love dose',\n", + " 'mujhe de de love dose',\n", + " 'yeah!',\n", + " 'lagdi mainu jiven ambraan di queen',\n", + " 'meethiyan gallan kare, kudi namkeen',\n", + " 'lagdi mainu jiven ambraan di queen',\n", + " 'meethiyan gallan kare, kudi namkeen',\n", + " '((honey singh rap))',\n", + " 'ye chand sa roshan chehra',\n", + " 'baalon ka rang sunehara',\n", + " 'kaise dekhun teri aankhen',\n", + " 'aankhon pe chashme ka pehra',\n", + " 'aankhon pe chashme ka pehra',\n", + " 'iss chashme ko hata do',\n", + " 'aankhon ko mila lo',\n", + " 'aankhon ke nashile jaam',\n", + " 'aankhon se pila do',\n", + " 'lagta hum pehle mile',\n", + " 'ya ho mujhe déjà vu',\n", + " 'idhar udhar kahan dekhe',\n", + " \"girl i'm talking to you\",\n", + " 'ab aankhon se hataya chashma',\n", + " 'aakhein to milaao ji',\n", + " 'duniya waale jo bhi bole',\n", + " 'humse na sharmaao ji',\n", + " 'ab phone utthaao ji',\n", + " 'aur daddy ki millo ji',\n", + " 'unke future son-in-law ki baat unse karwaao ji',\n", + " '\"hello, uncle, namaste\"',\n", + " 'chalo kaam ki baat pe aatein hain',\n", + " 'ab aap ye puchhenge ki',\n", + " 'aap kitne paise kamate hain?',\n", + " 'bas jitna aapki beti',\n", + " 'ek mahine mein udati hai',\n", + " 'ek hafte me meri gaadi utna tel khaati hai',\n", + " 'hai ghar, hai paisa, hai gaadi',\n", + " 'ab do jodon mein ladki bhejo',\n", + " 'ladki hui hamaari',\n", + " 'uncle hai ghar, hai paisa, hai gaadi',\n", + " 'ab do jodon mein ladki bhejo',\n", + " 'ladki hui humaari, ok bye',\n", + " '((honey singh rap ending))',\n", + " 'lagdi ai mainu jiven ambraan di queen',\n", + " 'meethiyan gallan kare, kudi namkeen',\n", + " 'meethiyan gallan kare, kudi namkeen',\n", + " 'meethiyan gallan kare, kudi namkeen',\n", + " 'meethiyan gallan kare, kudi namkeen',\n", + " 'aha..',\n", + " 'yo! yo! honey singh',\n", + " 'yo! yo! honey singh',\n", + " 'yo! yo! honey singh',\n", + " 'yo! yo! honey singh',\n", + " 'run to party is this tu fu',\n", + " 'urunun nolinin a bady new fox to do',\n", + " 'ghed in a pfsillin foffaren justu',\n", + " 'awdarded need a calle to six to stand',\n", + " 'gheeedr prininaf st-stand',\n", + " 'brrbrodinnau, r-really bady you stand',\n", + " 'uhm... m',\n", + " 'lorendannore devi is mi song, orenna beibeee!',\n", + " 'oh grag, given ma corenbidestep',\n", + " 'iu but but dirik iu uat tus tus du',\n", + " 'bubbubittubi badubibidudutaububu udaddistudu',\n", + " 'brbrbr douche tivasbevistida',\n", + " 'aronni diis rimmi comonst from',\n", + " \"randiiii adde cununnà d'mestià\",\n", + " 'hrobimmà iopollinehmistim',\n", + " 'ehn lorennahori badi is missong',\n", + " 'porring inna beibeeeni thing',\n", + " 'ohlai andurin ma foni iessescià',\n", + " 'iv bon biù beni ius benetbibistu',\n", + " \"uoda gomid'mam hada hedeghepta but gu bimnstudu\",\n", + " 'hauan dududà hudududududa duddudududa du dùnna',\n", + " \"of gudududubebi s dide commonn' di-di ae\",\n", + " '(brbr)bambae (brbr)bambae (br)bambà brndsah',\n", + " 'provinnan uàmmistan efdh',\n", + " 'oh! oh! horinna hedibbiri his vi song, roddenna ghevinah',\n", + " \"scemmid' dorinna cobi mirissià\",\n", + " \"innam' nnam' uham' uat embu ham\",\n", + " 'ububbabi distighetolleba heghiddigghideh',\n", + " 'andoveaebbide digghimò eneddidse to seh',\n", + " 'bauodinniditali iu fox t seh',\n", + " 'uum\\'ma uum\\'mu ma ma uum\\'mmumum \"beck guitar\"',\n", + " 'ypporinneah giuspirightari tto \"show\"',\n", + " 'uh... uh, arennoni chenebissbi song tyuriennedbeh',\n", + " 'oh hon wonnena chenididissong',\n", + " 'budidippo budidibam budidiboemissòn',\n", + " 'uoah narighisperi nare ghet mi song',\n", + " 'bdurin ma bebee waw! uh nan, turi nesciudi bissaud',\n", + " \"af bu be bo bi buh bi-d-bo bi uah ainik'no\",\n", + " 'orenghefforen de mi is mi song!',\n", + " 'uh, uh, beibeeeeee!',\n", + " 'tto nega boyeo oh baby',\n", + " 'tto nega isseo oh nae yeope',\n", + " 'heeonal su eobseo honjaseon never do',\n", + " 'i don’t wanna ever lose',\n", + " 'ne yeope inneun nan neul lonely',\n", + " 'nae yeope inneun neon neul sorry',\n", + " 'nega tteonagado honja beoryeojyeodo',\n", + " 'i’ll be fine i’ll be fine',\n", + " 'yes i know',\n", + " 'gidaril su eobseo',\n", + " 'i’ve been waiting so long',\n", + " 'i’m singing it good bye',\n", + " 'ijen naega sirheo sirheo',\n", + " 'hago sipdeon geu mal',\n", + " 'i’ve been waiting so long',\n", + " 'i’m singing it good bye',\n", + " 'nado nega sirheo',\n", + " 'i’ll never fall in love',\n", + " 'tto nega boyeo oh baby',\n", + " 'tto nega isseo oh nae yeope',\n", + " 'heeonal su eobseo honjaseon never do',\n", + " 'i don’t wanna ever lose',\n", + " 'no more no more love',\n", + " 'no more no more love yeah',\n", + " 'no more no more love',\n", + " 'no more no more love yeah',\n", + " 'no more no more love',\n", + " 'no more no more love yeah',\n", + " 'no more no more love',\n", + " 'no more no more love',\n", + " 'ije nado neo sirheo wae irae wae irae',\n", + " 'ijen naega an boyeo geurae neon geurae',\n", + " 'ne yeope deo joheun saramdeulgwa mannabwaya',\n", + " 'sogi siwonhagetji ja geureom geureoke',\n", + " 'neo geureon daeum huhoehagi eobtgiro hae',\n", + " 'dasi manna dallan yaegin jeoldae ankiro hae',\n", + " 'ppalli yaegihae jinjja neo naega sirheo',\n", + " 'hanbeon deo mureulge daedaphae jinjja naega sirheo',\n", + " 'gidaril su eobseo',\n", + " 'i’ve been waiting so long',\n", + " 'i’m singing it good bye',\n", + " 'sirheojyeotdago yaegi hajin ma',\n", + " 'ajik joheunde nareul jakku oeropge ma',\n", + " 'ay hanaman ttak yaegi hajamyeon',\n", + " 'na ppaegon da geogiseo geogi tto',\n", + " 'baby i’m sorry',\n", + " 'good bye joke bonaejulge',\n", + " 'i’ll never fall in love',\n", + " 'tto nega boyeo oh baby',\n", + " 'tto nega isseo oh nae yeope',\n", + " 'heeonal su eobseo honjaseon never do',\n", + " 'i don’t wanna ever lose',\n", + " 'no more no more love',\n", + " 'no more no more love yeah',\n", + " 'no more no more love',\n", + " 'no more no more love yeah',\n", + " 'no more no more love',\n", + " 'no more no more love yeah',\n", + " 'no more no more love',\n", + " 'no more no more love']},\n", + " 'data': ['eromi eromi (oya now)',\n", + " 'irorun lobe maggi',\n", + " 'ebii mi ko pemo lowo oo',\n", + " 'no be my power say i buy house oo',\n", + " 'ejen simi',\n", + " 'ebii mi ko pe mo lola oo',\n", + " 'oluwa lo fun mi lomo oo',\n", + " 'e jen simi',\n", + " 'na jehovah dey bless me ah',\n", + " 'make you no go dey hate me',\n", + " 'i no get your time oo',\n", + " 'mon yan fanda niwaju elegan',\n", + " 'na baba god dey bless me oo',\n", + " 'make you no dey hate me',\n", + " 'i no get your time oo',\n", + " 'mon yan fanda niwaju elegan',\n", + " 'oh na na na na',\n", + " 'mo ga ju aye lo(mo ga mo ga)',\n", + " \"e o' le ri mi mu(ri mi mu)\",\n", + " 'eyin ko lolorun mii',\n", + " 'ejen se temi',\n", + " \"i'm higher than the world(mo ga mo ga)\",\n", + " 'you no go get me oo(ri mi mu)',\n", + " 'eyin ko le le da mii',\n", + " 'ejen se temi ah ahhh',\n", + " 'make i live my life oo',\n", + " 'instead make u dey pray',\n", + " 'you dey carry my gist around oo (ejen simi)',\n", + " 'instead make you dey work',\n", + " 'you dey carry my matter around(ejen simi)',\n", + " 'na jehovah dey bless me',\n", + " 'make u no go dey hate me',\n", + " 'i no get your time oo',\n", + " 'mon yan fanda niwaju elegan',\n", + " 'oluwa dy bless me oo',\n", + " 'make you no dey hate me oo',\n", + " 'i no get your time oo',\n", + " 'mon yan fanda niwaju elegan',\n", + " 'oh na na na na',\n", + " 'mo ga ju aye lo (mo ga mo ga)',\n", + " \"e o' le rii mi mu (rimi mu)\",\n", + " 'eyin ko lolorun mii',\n", + " 'ejen se temi',\n", + " \"i'm higher than the world (moga moga)\",\n", + " 'you no go get me oo(rii mi mu)',\n", + " 'eyin ko le leda mii',\n", + " 'ejen se temi',\n", + " 'make i live my life',\n", + " 'ahh samba yii poju',\n", + " \"e o' lee ri\",\n", + " 'asiri wa ten ranju koko mo',\n", + " \"e o' lee ri\",\n", + " 'ahh ogaju',\n", + " 'oh na na na na',\n", + " 'moga ju aye lo oo(moga moga)',\n", + " \"e o' le rii mi mu(ri mi mu)\",\n", + " 'eyin ko lolorun mi',\n", + " 'ejen se temi',\n", + " 'my blessing dey bless me',\n", + " 'mo jo fun chineke(rimi mu)',\n", + " 'iwo ko lo dami oo',\n", + " 'jen she temi oo',\n", + " 'make i live my life oo',\n", + " 'moga moga',\n", + " \"e o' le rii mimu(rii mi mu)\",\n", + " 'moti be eleda mi oo',\n", + " 'ko ma sho mi oo',\n", + " 'mo ga ju yin lo(moga moga)',\n", + " \"e o' le rii mi mu(rimi mu)\",\n", + " 'eyin ko lolorun mii',\n", + " 'ejen se temi',\n", + " 'make i live my life oo',\n", + " 'korean',\n", + " 'baby i love you 내 마음 변하지 않아',\n", + " '우리 사랑이 잠시 방황을 해도 baby',\n", + " '힘들어도 꼭 기달려줘 my baby',\n", + " '세상이 나한테 등을 돌려도',\n", + " '상관없어 baby baby',\n", + " '너만 있으면 돼',\n", + " 'so baby 약속해 절대 안 떠난다고',\n", + " 'baby 약속해 영원히 사랑한다고',\n", + " 'baby 약속해 부자가되던 어려워지던',\n", + " '둘이서 행복하게 늙어갈 수 있다고',\n", + " '약속해 baby 약속해 oh please',\n", + " '아침에 눈 뜰 때 마다 니 얼굴이 보여',\n", + " '너만을 사랑해 절대로',\n", + " '내 마음 몰라주면 안돼 my baby my girl',\n", + " '세상이 나한테 등을 돌려도 상관없어',\n", + " '너만 있으면 돼',\n", + " 'so baby 약속해 절대 안 떠난다고',\n", + " 'baby 약속해 영원히 사랑한다고',\n", + " 'baby 약속해 부자가되던 어려워지던',\n", + " '둘이서 행복하게 늙어 갈 수 있다고',\n", + " '약속해 baby 약속해 oh please',\n", + " '이 인생이란 걸',\n", + " '너 없이 사는게 사는것도 아니야',\n", + " '웃을 때도 눈물 흘릴 때도',\n", + " '함께해 my baby baby',\n", + " '영원히 영원히 my baby',\n", + " 'so baby 약속해 절대 안 떠난다고',\n", + " 'baby 약속해 영원히 사랑한다고',\n", + " 'baby 약속해 부자가되던 어려워지던',\n", + " '둘이서 행복하게 늙어갈 수 있다고',\n", + " '약속해 baby 약속해 oh please',\n", + " 'romanization',\n", + " 'baby i love you nae maeum byeonhaji anha',\n", + " 'uri sarangi jamsi banghwangeul haedo baby',\n", + " 'himdeureodo kkok gidallyeojwo my baby',\n", + " 'sesangi nahante deungeul dollyeodo',\n", + " 'sanggwaneobseo baby baby',\n", + " 'neoman isseumyeon dwae',\n", + " 'so baby yaksokhae jeoldae an tteonandago',\n", + " 'baby yaksokhae yeongwonhi saranghandago',\n", + " 'baby yaksokhae bujagadoedeon eoryeowojideon',\n", + " 'duriseo haengbokhage neulgeogal su itdago',\n", + " 'yaksokhae baby yaksokhae oh please',\n", + " 'achime nun tteul ttae mada ni eolguri boyeo',\n", + " 'neomaneul saranghae jeoldaero',\n", + " 'nae maeum mollajumyeon andwae my baby my girl',\n", + " 'sesangi nahante deungeul dollyeodo sanggwaneobseo',\n", + " 'neoman isseumyeon dwae',\n", + " 'so baby yaksokhae jeoldae an tteonandago',\n", + " 'baby yaksokhae yeongwonhi saranghandago',\n", + " 'baby yaksokhae bujagadoedeon eoryeowojideon',\n", + " 'duriseo haengbokhage neulgeo gal su itdago',\n", + " 'yaksokhae baby yaksokhae oh please',\n", + " 'i insaengiran geol',\n", + " 'neo eobsi saneunge saneungeotdo aniya',\n", + " 'useul ttaedo nunmul heullil ttaedo',\n", + " 'hamkkehae my baby baby',\n", + " 'yeongwonhi yeongwonhi my baby',\n", + " 'so baby yaksokhae jeoldae an tteonandago',\n", + " 'baby yaksokhae yeongwonhi saranghandago',\n", + " 'baby yaksokhae bujagadoedeon eoryeowojideon',\n", + " 'duriseo haengbokhage neulgeogal su itdago',\n", + " 'yaksokhae baby yaksokhae oh please',\n", + " 'english',\n", + " 'baby i love you, my heart won’t change',\n", + " 'even if our love gets lost for a bit baby',\n", + " 'even if it’s hard, please wait for me my baby',\n", + " 'i don’t care if the world turns',\n", + " 'against me, baby baby',\n", + " 'i only need you',\n", + " 'so baby, promise me that you’ll never leave',\n", + " 'baby, promise me that you’ll love me forever',\n", + " 'baby, promise me whether i become rich or things get hard',\n", + " 'promise me that we’ll happily grow old together',\n", + " 'baby, promise me, oh please',\n", + " 'every morning when i open my eyes, i see your face',\n", + " 'i only love you',\n", + " 'you can’t not know my heart, my baby, my girl',\n", + " 'i don’t care if the world turns against me',\n", + " 'i only need you',\n", + " 'so baby, promise me that you’ll never leave',\n", + " 'baby, promise me that you’ll love me forever',\n", + " 'baby, promise me whether i become rich or things get hard',\n", + " 'promise me that we’ll happily grow old together',\n", + " 'baby, promise me, oh please',\n", + " 'living without you in this life',\n", + " 'will not be like living at all',\n", + " 'when i smile, when i cry',\n", + " 'be with me, my baby baby',\n", + " 'forever, forever, my baby',\n", + " 'so baby, promise me that you’ll never leave',\n", + " 'baby, promise me that you’ll love me forever',\n", + " 'baby, promise me whether i become rich or things get hard',\n", + " 'promise me that we’ll happily grow old together',\n", + " 'baby, promise me, oh please',\n", + " 'hangul',\n", + " '(안녕)',\n", + " '쉽지 않죠 바쁘죠?',\n", + " '왜 이렇게까지 해야 하나 싶죠?',\n", + " '바라는 게 더럽게 많죠? (그렇죠?)',\n", + " '쉬고 싶죠? 시끄럽죠 다 성가시죠? 집에 가고 싶죠?',\n", + " '(집에 있는데도) 집에 가고 싶을 거야',\n", + " '그럴 땐 이 노래를',\n", + " '초콜릿처럼 꺼내 먹어요',\n", + " '피곤해도 아침 점심 밥 좀 챙겨 먹어요',\n", + " '그러면 이따 내가 칭찬해줄게요',\n", + " '보고 싶어',\n", + " '많이 좋아해요',\n", + " '더 많이 안아주고 싶어요',\n", + " '사랑, 사랑 비슷한 걸 해요',\n", + " '어쩌면 정말 (사랑해)요',\n", + " '배고플 땐 이 노래를',\n", + " '아침 사과처럼 꺼내 먹어요',\n", + " '피곤해도 아침 점심 밥 좀 챙겨 먹어요',\n", + " '그러면 이따 밤에 잠도 잘 올 거에요',\n", + " '힘들어요',\n", + " '아름다워서',\n", + " '알아봐줘요, 나를',\n", + " '흘려보내지 마요, 나를',\n", + " '사랑해줘요 날, 날',\n", + " '놓치지 마요',\n", + " 'romanized',\n", + " '(annyeong)',\n", + " 'swibji anhjyo bappeujyo?',\n", + " 'wae ireohkekkaji haeya hana sipjyo?',\n", + " 'baraneun ge deororeobge manhjyo? (geureohjyo?)',\n", + " 'swigo sipjyo? sikkeureobjyo da seon-gasijyo? jibe gago sipjyo?',\n", + " '(jibe ittneundedo) jibe gago sipeul geoya',\n", + " 'gereol ddaen i noraereul',\n", + " 'chokollitcheoreom ggeonae meogeoyo',\n", + " 'pigonhaedo achim jeomsim bab jom chaengkyeo meogeoyo',\n", + " 'geureomyeon idda naega chinchanhaejulgeyo',\n", + " 'bogo sipeo',\n", + " 'manhi johahaeyo',\n", + " 'deo manhi anajugo sipeoyo',\n", + " 'sarang, sarang biseuthand geol haeyo',\n", + " 'eojjeomyeon jeongmal (saranghae)',\n", + " 'baegopeulddaen i noraereul',\n", + " 'achim sagwacheoreom ggeonae meogeoyo',\n", + " 'pigonhaedo achim jeobsim bab jom chaengkyeo meogeoyo',\n", + " 'gereomyeon idda bame jamdo jal ol geeyo',\n", + " 'himdeureoyo',\n", + " 'areumdawoseo',\n", + " 'arabwajwoyo, nareul',\n", + " 'horryeobonaeji mayo, nareul',\n", + " 'saanghaejwoyo nal, nal',\n", + " 'nohchiji mayo',\n", + " 'english',\n", + " \"it's not easy, huh?\",\n", + " \"i know you're busy\",\n", + " 'you wonder why you have to come this far',\n", + " 'they want so much (i know)',\n", + " 'you must want a break',\n", + " \"it's all so loud\",\n", + " 'all so annoying, right?',\n", + " \"i bet you want to go home (even when you're home)\",\n", + " 'i bet you do',\n", + " 'at such times, take out this song',\n", + " 'enjoy it like a piece of chocolate',\n", + " \"make sure you eat your meals even if you're tired\",\n", + " \"then i'll compliment you later\",\n", + " 'i miss you',\n", + " 'i like you a lot',\n", + " 'i want to hug you more often',\n", + " 'i feel something like love for you',\n", + " 'maybe i really do love you',\n", + " 'when you feel hungry, take out this song',\n", + " 'eat it like a morning apple',\n", + " \"make sure you eat your meals even if you're tired\",\n", + " \"then you'll be able to sleep better at night\",\n", + " \"i'm worn out\",\n", + " 'by your beauty',\n", + " 'please notice me',\n", + " \"please don't let me pass by\",\n", + " 'please love me',\n", + " \"don't let go\"]},\n", + " 'rap': {'meta': {'train_data': ['f-l-o-w-k-l-o-r-i-k-o-s (flowkloriokos), ahá',\n", + " 'l-e-c-h-o-w-s-k-i r-a-f-a-e-l (lechowski), ahá',\n", + " 'c-a-r-l-o-s t-a-l-a-v-e-r-a (es carlos, es carlos, carlos) seh (borracho)',\n", + " 'f-r-a-n-c-i-s-c-o s-a-n-z co (fran, fran) (dj, dj, dj)',\n", + " '2-0-0-2, zaragoza',\n", + " 'no, no, no, no, no, no, no, no (hay) competicion',\n", + " 'volume badhaade baby dance karna hai',\n", + " 'volume badhaade baby dance karna hai',\n", + " 'samne tu aaja romance karna hai',\n", + " 'party ke liye main jagah nahin dhoondta..',\n", + " 'saturday night..',\n", + " 'saturday night main apne aap ki nahi sunta',\n", + " 'saturday night main apne aap ki nahi sunta',\n", + " 'aap ki kya kisi ke baap ki nahi sunta..',\n", + " 'saturday night main apne aap ki nahi sunta',\n", + " 'aap ki kya kisi ke baap ki nahi sunta…',\n", + " 'battiyan bujha dee',\n", + " 'chalo ho jayein shuru',\n", + " 'ho battiyan bujha de',\n", + " 'chalo ho jayein shuru',\n", + " 'aaja chipak jaayein banke glue…',\n", + " 'chal bamb vi giraade',\n", + " 'sareyan nu tu hilaade',\n", + " 'teri aankhon ka main pyasa',\n", + " 'aaja pyaas bujha de..',\n", + " 'teri hi wajah se dil',\n", + " 'romeo sa ghoomta..',\n", + " 'saturday night..',\n", + " 'saturday night main apne aap ki nahi sunta',\n", + " 'saturday night main apne aap ki nahi sunta',\n", + " 'aap ki kya kisi ke baap ki nahi sunta..',\n", + " 'saturday night main apne aap ki nahi sunta',\n", + " 'aap ki kya kisi ke baap ki nahi sunta…',\n", + " 'monday ko hi set kar leti saturday ka plan',\n", + " 'mummy daddy ki na sunti',\n", + " 'party karne ki hai fan…',\n", + " 'jis bhi club mein enter kar deti',\n", + " 'lagaa deti hai jam',\n", + " 'laal dress kon ye ladki',\n", + " 'itni hot ye..oh damn…',\n", + " 'chal hatt…',\n", + " 'hai famous iske jalwe',\n", + " 'isko lena na tum halke',\n", + " 'jhalke jhalak jhalak jhall jhalke',\n", + " 'dekho beat pe kaise chhalke',\n", + " 'baby padh leti jo mann mein',\n", + " 'kehti sab ko hoon jogan main',\n", + " 'main kehta karle jo mann mein',\n", + " 'jo ki beat chale meri gun pe…',\n", + " 'volume badhaade baby dance karna hai',\n", + " 'samney tu aaja romance karna hai',\n", + " 'party ke liye main jagah nahin dhundta…',\n", + " 'saturday night..',\n", + " 'saturday night main apnay aap ki nahin sunta…',\n", + " 'saturday night main apnay aap ki nahin sunta',\n", + " 'aap ki kya kisi ke baap ki nahin sunta (x2)',\n", + " 'korean',\n", + " '무릎 꿇고 살 바엔 차라리 서서 난 죽어',\n", + " '나의 성공 내가 명분 있게 얻었지',\n", + " '그래서 고개 안 숙여',\n", + " '밤마다 나는 작업하면서 음악에 취했지',\n", + " '그래서 몸이 안 굳어',\n", + " '난 중독됐어, 이 숙취는 왠지 평생 갈 것 같아',\n", + " '그래서 속이 안 풀려 (oh damn)',\n", + " '몇 년 만에 dok2는 벌써 날 따라잡았지',\n", + " '우리 1년의 수익을 합치면 아마 20억이 나오겠지',\n", + " '4년 전에 내가 뮤뱅 1위 했을 때',\n", + " '그때 내 옆에 서 있었지',\n", + " '그래서 질투하고 배 아픈 거보다',\n", + " 'illionaire 보면 존나 멋있고 자랑스럽지, uh',\n", + " \"aomg, 1llie-1llie rolls-royce and two bentley's\",\n", + " '우리가 망할 것 같애?',\n", + " \"평생 we gon' get it, get it\",\n", + " \"hol' up wait a minute, minute\",\n", + " '우린 절대 지름길을 택하지 않았어',\n", + " '우리 자존심은 independent, whoo',\n", + " '나 좋아해줄 필요 없어',\n", + " '내 음악 들을 필요 없어, god damn it, uh, whoo',\n", + " '인정할 건 인정해',\n", + " 'respect 할 수 밖에 없는 hustle',\n", + " \"that's me, that's me\",\n", + " \"hol' up, wait that's, we that's we\",\n", + " \"it's aomg 1llie, god damn\",\n", + " \"it's aomg, 1llie, ay, ay\",\n", + " \"센 척하는 놈들 shit is child's play 쎄쎄쎄\",\n", + " '난 돈 세느라 바빠 밤을 새-새-새',\n", + " \"push start the whip don't need no 열쇠-쇠-쇠\",\n", + " '내 swag이 지금 몸 밖으로 새-새-새',\n", + " 'everything we do, everything we do',\n", + " \"it's worldwide homie worldwide\",\n", + " 'everything we do, everything we do',\n", + " \"it's worldwide homie worldwide\",\n", + " 'worldwide (worldwide, worldwide)',\n", + " 'worldwide, worldwide (worldwide, worldwide)',\n", + " '어느 곳을 가든 인정해',\n", + " 'worldwide, worldwide (worldwide, worldwide)',\n", + " '우리 음악 소리 울려 퍼지네',\n", + " 'worldwide, worldwide (worldwide, worldwide)',\n", + " '아무리 막아도, real recognize real',\n", + " '될 놈은 돼 homie',\n", + " 'worldwide, worldwide',\n", + " 'man, 이건 aomg and illy',\n", + " \"we so motherfuckin' hot like chilli\",\n", + " \"rockin' thousand dollar jean like billie\",\n", + " '이게 꿈이라면 절대 안 깰래',\n", + " '밑바닥에서 온 young millionaires',\n", + " \"전 세곌 다니며 we be killin' em\",\n", + " '허나 축하하기에는 아직 이르네',\n", + " '이건 또 하나의 시작일 뿐이기에',\n", + " '시간을 아껴, 나에겐 매일이 기회',\n", + " '걱정 따윈 없어, 우린 멋지기에',\n", + " 'baby tell me if you feel me',\n", + " \"걱정 말어, 내가 부자가 됐어도 i'm still me\",\n", + " 'these haters tryna kill me, god damn',\n", + " '너희 자식들이 감히 나를 시험해',\n", + " \"it's all about fuckin' money and the power\",\n", + " '이 모든 것을 갖게 해줘서 고마워',\n", + " \"shout to aomg whole world's ours\",\n", + " \"내 차는 amg make it fuckin' louder\",\n", + " '들어봐, 이건 나의 성공의 소리',\n", + " '이건 너와 나의 연결고리',\n", + " '하늘 높이 쌓여가는 내 돈이',\n", + " \"니 기분을 망쳤다면 baby i'm sorry\",\n", + " 'ha, 그게 바로 나의 일',\n", + " '될 놈은 돼, real recognize real',\n", + " '우린 또 뛰네, 더 나은 삶을 위해',\n", + " 'mo money and hoes',\n", + " '무엇보다 나를 위해, whoa',\n", + " '여자들은 우릴 찾지',\n", + " '우린 봤어 성공의 눈까지',\n", + " '몇 번이고 보여줄게, watch me',\n", + " '몇 개고 보여줄게 rolex watches',\n", + " 'i get money, 내가 죽을 때까지',\n", + " 'i get money, 너를 누를 때까지',\n", + " '아마 신이 나를 부를 때까지',\n", + " '아마 신이 나를 부를 때까지, whoa',\n", + " 'everything we do, everything we do',\n", + " \"it's worldwide homie worldwide\",\n", + " 'everything we do, everything we do',\n", + " \"it's worldwide homie worldwide\",\n", + " 'worldwide (worldwide, worldwide)',\n", + " 'worldwide, worldwide (worldwide, worldwide)',\n", + " '어느 곳을 가든 인정해',\n", + " 'worldwide, worldwide (worldwide, worldwide)',\n", + " '우리 음악 소리 울려 퍼지네',\n", + " 'worldwide, worldwide (worldwide, worldwide)',\n", + " '아무리 막아도, real recognize real',\n", + " '될 놈은 돼 homie',\n", + " 'worldwide, worldwide',\n", + " 'worldwide, worldwide',\n", + " \"aomg, illionaire motherfucker we don't need nothing\",\n", + " '뭘 봐, 뭘 봐, 내가 지나가면 다 쳐다보네',\n", + " \"i ain't mean mugging, i made zero to a million\",\n", + " \"i'm not a human being, bruh, i'm an illion\",\n", + " 'cha cha on the beat, bitch',\n", + " 'big things, big dreams, boy get rich',\n", + " '그게 내가 하는 것들이지',\n", + " '열심히 살기도 바쁜데 다들 뭣들인지',\n", + " '난 했던 말을 또 하고 또 하며 퍼트리지',\n", + " '한계는 없어, 쌓인 벽을 난 무너뜨리지',\n", + " 'illionaire zone 니넨 발도 못 들이지',\n", + " '넌 백날 rap 해 부모한테 돈도 못 드리지',\n", + " '난 매달 큰 돈뭉치 하나 꼭 드리지',\n", + " '우린 잘 나가는 동시에 또 착한 놈들이지',\n", + " '눈독 들이지 않아 나는 남의 것에',\n", + " '그니까 맘껏 니 꺼 챙겨 버려 텃세',\n", + " '난 절대 aomg 이길 맘이 없네',\n", + " '2010년부터 우린 형제처럼 컸네',\n", + " 'yes, i remember back in the days',\n", + " '족발 뜯고 볼링 치며 놀러 댕기던 때',\n", + " '방에 모여 jay park mini album 만들던 때',\n", + " '우리끼리 한 푼이라도 더 같이 애끼던 때',\n", + " '그때가 있기에 지금의 우리 셋이 여기 있지',\n", + " \"박재범, 신동갑, 이준경 let's get this\",\n", + " 'money and dreams',\n", + " 'aomg illy business doin good son',\n", + " '우린 우리 자신을 믿지',\n", + " '이건 깊지, 이건 쉽지 않은 일',\n", + " '누군 믿고 누군 씹지',\n", + " \"stop bitchin' come respect\",\n", + " 'it started from the scratch and we built',\n", + " \"it stop bitchin' come respect it\",\n", + " \"started from the fuckin'\",\n", + " 'scratch and we built it',\n", + " '우린 이제 우주로 우주로 우주로',\n", + " 'aomg 1llie 1llie',\n", + " '우린 이제 우주로 우주로 우주로',\n", + " 'everything we do, everything we do',\n", + " \"it's worldwide homie worldwide\",\n", + " 'everything we do, everything we do',\n", + " \"it's worldwide homie worldwide\",\n", + " 'worldwide (worldwide, worldwide)',\n", + " 'worldwide, worldwide (worldwide, worldwide)',\n", + " '어느 곳을 가든 인정해',\n", + " 'worldwide, worldwide (worldwide, worldwide)',\n", + " '우리 음악 소리 울려 퍼지네',\n", + " 'worldwide, worldwide (worldwide, worldwide)',\n", + " '아무리 막아도, real recognize real',\n", + " '될 놈은 돼 homie',\n", + " 'worldwide, worldwide',\n", + " 'romanization',\n", + " 'muleup kkulhgo sal ba-en chalali seoseo nan jug-eo',\n", + " 'naui seong-gong naega myeongbun issge eod-eossji',\n", + " 'geulaeseo gogae an sug-yeo',\n", + " 'bammada naneun jag-eobhamyeonseo',\n", + " 'eum-ag-e chwihaessji geulaeseo mom-i an gud-eo',\n", + " 'nan jungdogdwaess-eo',\n", + " 'i sugchwineun waenji pyeongsaeng gal geos gat-a',\n", + " 'geulaeseo sog-i an pullyeo',\n", + " 'myeoch nyeon man-e dokkineun beolsseo',\n", + " 'nal ttalajab-assji',\n", + " 'uli 1nyeon-ui su-ig-eul habchimyeon',\n", + " 'ama 20eog-i naogessji',\n", + " '4nyeon jeon-e naega myubaeng 1wi haess-eul ttae',\n", + " 'geuttae nae yeop-e seo iss-eossji',\n", + " 'geulaeseo jiltuhago',\n", + " 'bae apeun geoboda illieoneeo bomyeon',\n", + " 'jonna meos-issgo jalangseuleobji',\n", + " 'aomg, 1llie 1llie rolls-royce',\n", + " \"and two bentley's\",\n", + " 'uliga manghal geos gat-ae?',\n", + " \"pyeongsaeng we gon' get it get it\",\n", + " \"hol' up wait a minute minute\",\n", + " 'ulin jeoldae jileumgil-eul taeghaji anh-ass-eo',\n", + " 'uli jajonsim-eun independent',\n", + " 'na joh-ahae jul pil-yo eobs-eo',\n", + " 'nae eum-ag deul-eul pil-yo eobs-eo',\n", + " 'injeonghal geon injeonghae',\n", + " 'respect hal subakk-e eobsneun hustle',\n", + " \"that's me that's me\",\n", + " \"hol' up wait that's we that's we\",\n", + " \"it's aomg 1llie it's aomg\",\n", + " '1llie sen cheoghaneun nomdeul',\n", + " \"shit is child's play ssessesse\",\n", + " 'nan don seneula bappa bam-eul saesaesae',\n", + " \"push start the whip don't need no\",\n", + " 'yeolsoesoesoe nae swag-i',\n", + " 'jigeum mom bakk-eulo saesaesae',\n", + " 'everything we do',\n", + " 'everything we do',\n", + " 'its worldwide homie worldwide',\n", + " 'everything we do',\n", + " 'everything we do',\n", + " 'its worldwide homie worldwide',\n", + " 'worldwide worldwide worldwide',\n", + " 'eoneu gos-eul gadeun injeonghae',\n", + " 'worldwide worldwide',\n", + " 'uli eum-ag soli ullyeo peojine',\n", + " 'worldwide worldwide',\n", + " 'amuli mag-ado',\n", + " 'real recognize real',\n", + " 'doel nom-eun dwae homie',\n", + " 'worldwide worldwide',\n", + " 'man igeon aomg & illy',\n", + " 'we so motherf*ckin',\n", + " \"hot like chilli rockin' thousand\",\n", + " 'dollar jean like billie',\n", + " 'ige kkum-ilamyeon jeoldae an kkaellae',\n", + " 'mitbadag-eseo on young millionaires',\n", + " 'jeon segyel danimyeo we be killinem',\n", + " 'heona chughahagieneun ajig ileune',\n", + " 'igeon tto hanaui sijag-il ppun-igie',\n", + " 'sigan-eul akkyeo na-egen maeil-i gihoe',\n", + " 'geogjeong ttawin eobs-eo ulin meosjigie',\n", + " 'baby tell me if you feel me',\n", + " \"geogjeong mal-eo naega bujaga dwaess-eodo i'm still me\",\n", + " 'these haters try na kill me god damn',\n", + " 'neohui jasigdeul-i gamhi naleul siheomhae',\n", + " \"it's all about f*ckin money & the power\",\n", + " 'i modeun geos-eul gajge haejwoseo gomawo',\n", + " \"shout to aomg whole world's ours\",\n", + " 'nae chaneun amg make it f*ckin louder',\n", + " 'deul-eobwa igeon naui seong-gong-ui soli',\n", + " 'igeon neowa naui yeongyeolgoli',\n", + " 'haneul nop-i ssah-yeoganeun nae don-i',\n", + " \"ni gibun-eul mangchyeossdamyeon baby i'm sorry\",\n", + " 'ha geuge balo naui il',\n", + " 'doel nom-eun dwae real recognize real',\n", + " 'ulin tto ttwine deo na-eun salm-eul wihae',\n", + " 'mo money & hoes',\n", + " 'mueosboda naleul wihae wo',\n", + " 'yeojadeul-eun ulil chaj-ji',\n", + " 'ulin bwass-eo seong-gong-ui nunkkaji myeoch beon-igo',\n", + " 'boyeojulge watch me myeoch gaego boyeojulge',\n", + " 'rolex watches i get money',\n", + " 'naega jug-eul ttaekkaji',\n", + " 'i get money neoleul nuleul ttaekkaji',\n", + " 'ama sin-i naleul buleul ttaekkaji',\n", + " 'ama sin-i naleul buleul ttaekkaji wo',\n", + " 'everything we do',\n", + " 'everything we do',\n", + " 'its worldwide homie worldwide',\n", + " 'everything we do',\n", + " 'everything we do',\n", + " 'its worldwide homie worldwide',\n", + " 'worldwide worldwide worldwide',\n", + " 'eoneu gos-eul gadeun injeonghae',\n", + " 'worldwide worldwide',\n", + " 'uli eum-ag soli ullyeo peojine',\n", + " 'worldwide worldwide',\n", + " 'amuli mag-ado',\n", + " 'real recognize real',\n", + " 'doel nom-eun dwae homie',\n", + " 'worldwide worldwide',\n", + " 'worldwide worldwide aomg',\n", + " 'illionaire motha f*cka',\n", + " 'we dont need nothing',\n", + " 'mwol bwa mwol bwa naega jinagamyeon da chyeodabone',\n", + " 'i aint mean mugging',\n", + " 'i made zero to a million',\n", + " 'im not a human being bruh',\n", + " 'im an illion cha cha on the beat',\n", + " 'bitch big things big dreams',\n", + " 'boy get rich geuge naega haneun geosdeul-iji',\n", + " 'yeolsimhi salgido bappeunde',\n", + " 'dadeul mwosdeul-inji nan haessdeon mal-eul tto hago',\n", + " 'tto hamyeo peoteuliji hangyeneun eobs-eo',\n", + " 'ssah-in byeog-eul nan muneotteuliji',\n", + " 'illionaire zone ninen baldo mos deul-iji',\n", + " 'neon baegnal laebhae bumohante dondo mos deuliji',\n", + " 'nan maedal keun donmungchi hana kkog deuliji',\n", + " 'ulin jal naganeun dongsie',\n", + " 'tto chaghan nomdeul-iji',\n", + " 'nundog deul-iji anh-a',\n", + " 'naneun nam-ui geos-e geunikka mamkkeos',\n", + " 'ni kkeo chaeng-gyeo beolyeo teos-se',\n", + " 'nan jeoldae aomg igil mam-i eobsne',\n", + " '2010nyeonbuteo ulin hyeongjecheoleom keossne',\n", + " 'yes i remember back in the days',\n", + " 'jogbal tteudgo bolling chimyeo nolleo daeng-gideon ttae',\n", + " 'bang-e moyeo jay park',\n", + " 'miniaelbeom mandeuldeon ttae',\n", + " 'ulikkili han pun-ilado',\n", + " 'deo gat-i aekkideon ttae',\n", + " 'geuttaega issgie jigeum-ui uli ses-i yeogi issji',\n", + " 'bagjaebeom sindong-gab ijungyeong',\n", + " 'lets get this money and dreams',\n", + " 'aomg illy business doin good son',\n", + " 'ulin uli jasin-eul midji igeon gipji',\n", + " 'igeon swibji anh-eun il',\n", + " 'nugun midgo nugun ssibji',\n", + " 'stop b*tchin come respect',\n", + " 'it started from the scratch and we built',\n", + " 'it stop bitchin come respect it',\n", + " 'started from the f*ckin',\n", + " 'scratch and we built it',\n", + " 'ulin ije ujulo ujulo ujulo',\n", + " 'aomg 1llie 1llie',\n", + " 'ulin ije ujulo ujulo ujulo',\n", + " 'worldwide worldwide',\n", + " 'everything we do',\n", + " 'everything do',\n", + " 'its worldwide homie worldwide',\n", + " 'everything we do',\n", + " 'everything we do',\n", + " 'its worldwide homie worldwide',\n", + " 'worldwide worldwide worldwide',\n", + " 'eoneu gos-eul gadeun injeonghae',\n", + " 'worldwide worldwide',\n", + " 'uli eum-ag soli ullyeo peojine',\n", + " 'worldwide worldwide',\n", + " 'amuli mag-ado real recognize real',\n", + " 'doel nom-eun dwae homie',\n", + " 'ffffffffffffffffffffffffffffffffffffffffffffffffffuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuccccccccccccccccccccccccckkkkkkkkkkkkkkkkkk mmmeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ttoooooooooooooooooooobbbbbbbbbbbbbbbbbbiiiiiii',\n", + " \"jjjjjiiiizzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzllllleeeeeeeeeeee (ain't nobody like you)\",\n", + " 'yooooooooooooooooooooooooooooooooooouuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu ythhhhhhhhhhhhhhhhhhhhhhhhhhhheeeeeeeeeeeeeeeeeeeeeeeeeeeee beeeeeeeeeeeeeeeeeeeeeeeeeesssssssssssssssssssttttttttttttt ttttttttttttttoooooooooooooooooooooobbbbbbbbbbbbbbiiiiiiiiii showwwwwwww the whole worldwide that (fist me tobiii)',\n", + " 'makantbdlch m3a li t9atlo m3aya b walou',\n", + " 'makanti9ch f li kayl7sso w bghaw meni koulchi',\n", + " '3elmatni lwe9t kifach n9der ndir koulchi b walou',\n", + " 'kaynin chi klab khayfin kaynb7o w baghyini nemchi',\n", + " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", + " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", + " 'ma wellit ta kent, ma bdit ta fhemt',\n", + " 'ma mchit ta dmert, ma jit ta 7kemt',\n", + " '7lemti 3ad fe9t',\n", + " 'ma kmit ta bremt, ma mchit ta bssemt',\n", + " 'ma 9telt ta dfent, men ga3 ter9an dezt',\n", + " '3la kemmart ch7al men 3tay dezt',\n", + " '3tawni face b9it m3ahoum ta khnezt',\n", + " 'bghaw yrrefdouh lia ghi jab lah 9fezt',\n", + " 'yeah! ghi jab lah gmezt',\n", + " 'dert bhala ga3 ma fahem walou ghi tnazt',\n", + " 'bhal kima dima ghi sre7thom w dezt',\n", + " 'jme3thom w fresst',\n", + " 'ghaddor dora ghaddor semta ra ghayban chkoun sda9',\n", + " 'derbat lmouja tla7 koulchi ra benti lia katghra9',\n", + " \"kenti baghi t'sauva tekkiti 3la khouk w m3ak tahouwa hbat\",\n", + " 'nta ga3 makat3ref t3oum achdak tla7',\n", + " '7yatek koulha w nta habet',\n", + " '7yatek koulha ghi f blasstek',\n", + " '7yatek koulha te7t masque',\n", + " 'kayderbek do li wasslek',\n", + " 'ba9i ga3 makatmreg anari baz',\n", + " 'ta ra hada weld asfi far3k',\n", + " 'wa7lik w dima sar3k',\n", + " '3aték 3la wednik w dahrk',\n", + " 'khayb ga3 makantfare9',\n", + " 'makantbdlch m3a li t9atlo m3aya b walou',\n", + " 'makanti9ch f li kayl7sso w bghaw meni koulchi',\n", + " '3elmatni lwe9t kifach n9der ndir koulchi b walou',\n", + " 'kaynin chi klab khayfin kaynb7o w baghyini nemchi',\n", + " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", + " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", + " '3dyani kay7lmo b 9abri',\n", + " '7yati kangouliha sabri',\n", + " \"wakha l'mass ga3 f dahri\",\n", + " 'ba9i wa9ef m3a mhom se7a kanbri',\n", + " 'kandir ghi li kanbghi',\n", + " '3chrani ktar ghaliban vrai',\n", + " '7e9ada rass malhom ghi lhadri w asslan ga3 makaybano lia b ndadri',\n", + " 'charger, charger, cadrer.. rapapa hombré',\n", + " 'wa drari finma mchiti dima kaynin katrin shayfeen mafia padré',\n", + " 'la 3ad fhemtek machi lkhatri',\n", + " 'ghir jnouni 9ba7 chouiya dassrin',\n", + " 'kent ana wyahoum mkhatrin',\n", + " '3tinak flow nta bitch daba gha jri biyen',\n", + " 'yallah ban wa3er biyen',\n", + " 'ghatkhra ga3 ma ghaddim',\n", + " 'ghayb9aw jouj',\n", + " 'nta ghatb9a f touche',\n", + " 'ta hada ghi weld asfi 7na li kaynin',\n", + " 'flow dyal hna',\n", + " \"kabrin b'chwaya la tss7ab lik mirikaniyin\",\n", + " 'ghanb9aw ghi 7na',\n", + " 'a9wad disque flow team ta la galha wahd fina kaybiyen',\n", + " 'kay7elmo b l3a9a',\n", + " '7na kanjibo l3a9a w ghanzido maghanb9ach 7assl',\n", + " 'ghandirha 7it bghawni nb9a wesst l7ez9a',\n", + " 'bach 3ad ygoulou 3lia shobee rak rajel',\n", + " 'ghandirha 7it asslan la ga3 ma dertha ghaygoulou 3lia tatrapi w mala9i ma takel',\n", + " 'ghandirha ghandirha... whoo!',\n", + " 'ghansauvé khouti w 3chrani li m3aya kat9atel',\n", + " 'w fuck dak tkhawer',\n", + " 'makantbdlch m3a li t9atlo m3aya b walou',\n", + " 'makanti9ch f li kayl7sso w bghaw meni koulchi',\n", + " '3elmatni lwe9t kifach n9der ndir koulchi b walou',\n", + " 'kaynin chi klab khayfin kaynb7o w baghyini nemchi',\n", + " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", + " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", + " 'yeah yeah! yeah yeah!',\n", + " 'yeah yeah! yeah yeah!',\n", + " 'ana ghadi f tri9i ta 7ed ma y9ad y7bassni',\n", + " 'goulihoum rani ba9i hna w ta 7ed may9dar ymassni',\n", + " 'ma ghaydi menni walou bnadm ayb9a ghi tab3ni',\n", + " 'wana li f rassi f rassi yea man chkoun nta makatbanchli',\n", + " 'goulihoum rani b3id w maghatchedo ghir lberd',\n", + " 'jibli ahssen wahd 3ndk ghadi tchedo gha lberd',\n", + " 'koulhoum 3arfini chkansswa 3arfini m9wd kan7red',\n", + " 'w f koula ster kan7eto koulhoum kay3erfoni chkan9ssed',\n", + " 'ana ghadi f tri9i ta 7ed ma ghay9ad y7bassni',\n", + " 'goulihoum rani ba9i hna w ta 7ed may9dar ymassni',\n", + " 'ma ghaydi menni walou bnadm ayb9a ghi tab3ni',\n", + " 'wana li f rassi f rassi yea man chkoun nta makatbanchli..',\n", + " 'korean',\n", + " '내 가족, 내 fan들 aomg를 위해',\n", + " '난 매달 수십 번씩 저 하늘 구름 위에',\n", + " '최선을 다해 인생은 한 번뿐인 기회',\n", + " '너무 멀리 앞서 나가서 난 돌아봐 내 미래, yeah',\n", + " '니네 주문한걸 배달 왔어',\n", + " 'delivery in two languages, 깨달았어',\n", + " '현명하게 이기는 법, 내가 개발했어',\n", + " 'rap 못해도 내 진정성을 의심해봐라 sucker',\n", + " '1, 2, punch, yah, major and the under',\n", + " 'we taking over my solders to grimy for you bustah’s',\n", + " 'haters see you later, 꺼져, 니 얼굴은 후진',\n", + " '일식집처럼 미소를 찾을 수 없어, oh',\n", + " '그래서 부정적이지',\n", + " '그래서 친구될 수 없고 나의 적이지',\n", + " '그래서 맨날 애기처럼 울고 talking bull shit',\n", + " '머리에 똥만 들어있나',\n", + " '그건 기저귀지, let’s go',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my b-boy stance',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my b-boy stance',\n", + " '지구에 큰 운석 drop, uh, 난 굴러들어온 돌',\n", + " 'amoeba란 북산에 윤대협이 온 꼴',\n", + " '난 주인공이 아니어도 알지, 내가 best',\n", + " '이젠 shoot 때리고 득점, 맛들였던 pass',\n", + " '정신 바짝 차려, 선후배 안 따지고 선도',\n", + " '난 퀄리티에 배팅 더 올리지',\n", + " '니가 걸 돈은 목숨 밖에 없어',\n", + " '내 공책이 데스노트',\n", + " \"i’m the mofuckin' zion like 효섭과 해솔\",\n", + " 'i crush you, 눌러 공기 빼고 압축 배송',\n", + " '다른 방법도 난 가능해, 널 돌려보낼 행동',\n", + " '개 잡듯 잡아줄 시간 project 이름 개놈 수지 맞게',\n", + " '설계된 내 건축학 개론',\n", + " '가진 게 없다고 절대 기죽지 말고',\n", + " '가진 게 많다고 절대 깝치지마',\n", + " '그게 내가 r-e-s-p-e-c-t',\n", + " '널 존중하는 방법 다 같은 선에 위치',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my bboy stance',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my bboy stance',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my bboy stance',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my bboy stance',\n", + " 'romanization',\n", + " 'nae gajog nae paendeul aomgleul wihae',\n", + " 'nan maedal susib beonssig',\n", + " 'jeo haneul guleum wie',\n", + " 'choeseon-eul dahae insaeng-eun han beonppun-in gihoe',\n", + " 'neomu meolli apseo nagaseo',\n", + " 'nan dol-abwa nae milae',\n", + " 'nine jumunhangeol baedal wass-eo',\n", + " 'delivery in two languages',\n", + " 'kkaedal-ass-eo hyeonmyeonghage igineun beob',\n", + " 'naega gaebalhaess-eo',\n", + " 'laeb moshaedo nae jinjeongseong-eul uisimhaebwala',\n", + " 'sukkah 1 2 punch yah',\n", + " 'major and the under',\n", + " 'we taking over my solders',\n", + " 'to grimy for you bustah’s haters',\n", + " 'see you later',\n", + " 'kkeojyeo ni eolgul-eun hujin',\n", + " 'ilsigjibcheoleom misoleul chaj-eul su eobs-eo',\n", + " 'geulaeseo bujeongjeog-iji',\n", + " 'geulaeseo chingudoel su eobsgo naui jeog-iji',\n", + " 'geulaeseo maennal aegicheoleom ulgo',\n", + " 'talking bull shit',\n", + " 'meolie ttongman deul-eoissna',\n", + " 'geugeon gijeogwiji',\n", + " 'let’s go',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my b-boy stance',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my b-boy stance',\n", + " 'jigue keun unseog drop uh',\n", + " 'nan gulleodeul-eoon dol',\n", + " 'amebalan bugsan-e yundaehyeob-i on kkol',\n", + " 'ju-ingong-i anieodo alji',\n", + " 'naega beseuteu ijen syus ttaeligo',\n", + " 'deugjeom masdeul-yeossdeon paeseu',\n", + " 'jeongsin bajjag chalyeo seonhubae an ttajigo seondo',\n", + " 'nan kwollitie baeting deo olliji',\n", + " 'niga geol don-eun mogsum bakk-e eobs-eo',\n", + " 'nae gongchaeg-i deseunoteu',\n", + " 'i’m the mofuckin zion like',\n", + " 'hyoseobgwa haesol i crush you',\n", + " 'nulleo gong-gi ppaego abchug baesong',\n", + " 'daleun bangbeobdo nan ganeunghae',\n", + " 'neol dollyeobonael haengdong',\n", + " 'gae jabdeus jab-ajul sigan',\n", + " 'peulojegteu ileum gaenom suji majge',\n", + " 'seolgyedoen nae geonchughag gaelon',\n", + " 'gajin ge eobsdago jeoldae gijugji malgo',\n", + " 'gajin ge manhdago jeoldae kkabchijima',\n", + " 'geuge naega r e s p e c t',\n", + " 'neol jonjunghaneun bangbeob da gat-eun seon-e wichi',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my bboy stance',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my bboy stance',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my bboy stance',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'i ain’t worried bout nothing',\n", + " 'so i stand back chillin’ in my bboy stance',\n", + " 'yeah yah',\n", + " 'lets get it',\n", + " 'beta mere jese bhaut kam bhaut kam',\n", + " 'jo bhi sune bole awesome awesome',\n", + " 'kuch dino se badal ni dikhe the',\n", + " 'fir se le aaya raga rap ka mausam',\n", + " 'beta mere jese bhaut kam bhaut kam',\n", + " 'jo bhi sune bole awesome awesome',\n", + " 'kuch dino se badal ni dikhe the',\n", + " 'fir se le aaya raga rap ka mausam',\n", + " 'rap rap, har gali mein hai chaar rapper',\n", + " 'jab se aaya jamnapaar maine li hai keh kar',\n", + " 'mere se behter shayad main he kyuki',\n", + " 'seekha sehkar',\n", + " 'mere se ladna mat',\n", + " 'fir darna na kuch kardu main agar',\n", + " 'bandook wala gangsta ni',\n", + " 'main hu lekhak',\n", + " 'kalam hathiyar shabd guste gehre jaise dagger',\n", + " 'aeee jaise maut ka main chehra',\n", + " 'tu bhokta main behra',\n", + " 'khauf ka hai pehra',\n", + " 'mera hosla na thehra',\n", + " 'sar pe hai sehra',\n", + " 'ghar se hai ladka nikla',\n", + " 'dekho kya hai kehra',\n", + " 'main graduated tu hai baarvi main',\n", + " 'ye rap ka school hai',\n", + " 'na farsi mein',\n", + " 'karta rap main matra bhasha bhartiya',\n", + " 'jab bhi muh khola hai muh se nikle aandhi ye',\n", + " 'kranti hai aadhe se zyada pe to kaam ni hai',\n", + " 'ladne bhidne ki baate karte',\n", + " 'par in mein jaan ni hai',\n", + " 'beta mere jese bhaut kam bhaut kam',\n", + " 'jo bhi sune bole awesome awesome',\n", + " 'kuch dino se badal ni dikhe the',\n", + " 'fir se le aaya raga rap ka mausam',\n", + " 'beta mere jese bhaut kam bhaut kam',\n", + " 'jo bhi sune bole awesome awesome',\n", + " 'kuch dino se badal ni dikhe the',\n", + " 'fir se le aaya raga rap ka mausam',\n", + " 'mausam ki baat aayi to lo tufaan',\n", + " 'baari aayi meri band karlo dukaan',\n", + " 'naya product industry k liye hai taiyaar',\n", + " 'ab samay hai mera main nahi kisi ka gulaam',\n", + " 'aeee',\n", + " 'soch aage kya hoga',\n", + " 'bacha kuch jitna bhi',\n", + " 'game saara over',\n", + " 'what?, did you really mean what you said',\n", + " 'yes nashe me nahi main hu sober',\n", + " 'ab manao khair thoda dur raho',\n", + " 'ye sabko',\n", + " 'chahe kitna bada surma ho',\n", + " 'mujhe ghur na brooo',\n", + " 'meri thodi hat ti hai',\n", + " 'self your realization meri satki hai',\n", + " 'rapper na main',\n", + " 'mera game alag',\n", + " 'khilaaf keh kar to dekh',\n", + " 'main hu dan-gerous',\n", + " 'tera chehra hai fake',\n", + " 'you are strange to us',\n", + " 'tabhi to kehta hu mujhse na khel tu ab',\n", + " 'beta mere jese bhaut kam bhaut kam',\n", + " 'jo bhi sune bole awesome awesome',\n", + " 'kuch dino se badal ni dikhe the',\n", + " 'fir se le aaya raga rap ka mausam',\n", + " 'beta mere jese bhaut kam bhaut kam',\n", + " 'jo bhi sune bole awesome awesome',\n", + " 'kuch dino se badal ni dikhe the',\n", + " 'fir se le aaya raga rap ka mausam',\n", + " '(wise)',\n", + " '\"wata~!\"',\n", + " 'kiri komi taichou',\n", + " 'gongu to doujini nunchaku flow',\n", + " 'teriyaki wa erimaki to kage nami',\n", + " 'supiidoo reesaa',\n", + " 'kyakkou abiru chinshu',\n", + " \"i'll beat you anyway\",\n", + " 'celebrity death match',\n", + " 'the game be played',\n", + " 'come to step up',\n", + " 'you got beef? well my bad',\n", + " 'i got chicken',\n", + " 'hori moguru mogura',\n", + " 'keep diggin!',\n", + " '(ilmari)',\n", + " 'non stop na kauntaa bakari uchi kaesu tabi ni',\n", + " 'passhon moya shiteku',\n", + " 'yonin tag abaredasuzo',\n", + " 'ikki ni bunbun',\n", + " 'tsukeyo supiikaa maximum',\n", + " 'pookaa feisu ni narezu ni notocchau',\n", + " 'b-boys motto yocchau',\n", + " 'serebu na gyaru mo',\n", + " 'kureru made odocchau',\n", + " '*uhh~ welcome',\n", + " 'ahh~ celebrity death match',\n", + " 'uhh~ welcome',\n", + " 'ahh~ celebrity death match',\n", + " 'uhh~ welcome',\n", + " 'ahh~ celebrity death match',\n", + " '(verbal)',\n", + " \"yes i'm dressed in fresh na\",\n", + " 'bape no masshu kyappu',\n", + " 'soshite suniikaa oroshitate',\n", + " 'mate mate! orera funky4',\n", + " 'non fikushon, nontarantiino',\n", + " 'kore ga suki na minna wa amiigo',\n", + " 'nihongo shaberu gaijin like sankon',\n", + " 'a! mc tachi ooke ga',\n", + " 'every time i step up, come on!',\n", + " 'ore wa kill suru mc',\n", + " 'kimi no namae wa bill...',\n", + " 'wakaru daro ketsumatsu',\n", + " 'byooki na ore no bijinesu no tetsugaku',\n", + " '\"1 1\"! ?hmmm...',\n", + " '4 thousand oh! nauman zou',\n", + " 'yori extra large kagaku hannou',\n", + " \"tomerare nai 30's booibando\",\n", + " 'mou ichido? nara say, \"one more!\"',\n", + " '*repeat',\n", + " '(ryo-z)',\n", + " 'busere no macchi desu wasagina channee',\n", + " 'paiotsu kaidee',\n", + " 'shisuu tsumande monde teebotan 2',\n", + " 'kakeagaru maunten jiifuu',\n", + " 'erumoo miigoo enaimo miigoo',\n", + " 'chanto funbetsu shitara asa no hiikoo',\n", + " 'nigo zu hirugiroppon b-boy',\n", + " 'yakiteri izuboo bring the izunoo',\n", + " '(ryo-z)',\n", + " 'serebu no desumacchi',\n", + " 'sawagina nee chan',\n", + " 'oppai dekai',\n", + " 'sushi tsumande monde 2 tanteeboo',\n", + " 'kakeagaru maunten fuji',\n", + " 'moeru gomi moe nai gomi',\n", + " 'chanto funbetsu shitara asa no koohii',\n", + " 'nigo roppongi hiruzu b-boy',\n", + " 'teriyaki booizu bring the noise',\n", + " '(teriyaki boyz)',\n", + " 'oh macchimeiku da gibu appu',\n", + " 'shibori dasu made',\n", + " 'uchi nomeshite ringu auto',\n", + " 'hinkaku utagawashii renchuu',\n", + " 'hikkaku serebu ni genjuuchuui to buuingu',\n", + " 'tenkai wa yuui ni motteku',\n", + " 'kyuusho pinpointo shuutingu',\n", + " 'saa gongu naru monku aru nara',\n", + " 'pay the price if you',\n", + " 'play the game',\n", + " 'chhaap chodey,(yea yea yea)',\n", + " 'agar scene bhai ka toh',\n", + " 'laundey haath chodein (kaarnaame kaarnaame)',\n", + " 'aye, sarey chhaap chodein',\n", + " 'khule aam jeetey, yea yea, sadakchhaap laundey',\n", + " 'ladke sadakchhaap, sarey kadak chhaap chodey (sadakchhaap)',\n", + " 'raaton ko kaarnaame, saarey khatarnaak horey',\n", + " 'humble as fuck, ki humse pehle aap bolein',\n", + " 'par scene bhai ka toh sabse pehla haath chodein (sabse pehle)',\n", + " 'ladke sadakchhaap, sarey kadak chhaap chodey (sadakchhaap)',\n", + " 'raaton ko kaarnaame, saarey khatarnaak horey',\n", + " 'humble as fuck, ki humse pehle aap bolein',\n", + " 'par scene bhai ka toh sabse pehla haath chodein',\n", + " 'mai, le raha luft har',\n", + " 'sath sathi hain group par',\n", + " 'chakachaundh andhera,scene dekhun main ruk kar',\n", + " 'nazaare aise jo ki din mein, ho jate rukhsat',\n", + " 'ladke nikle ghar se raaton ko jaise guptchar',\n", + " 'yeah!jab jaati so aadamjaat',\n", + " 'sadakchhaap ghar se bahar, hote shor ke samwaad',\n", + " 'sadko pe aag, lagane ke hain saadhan sath',\n", + " 'pareshaan soti duniya ghor aatankwaad',\n", + " 'ye ladke, raaton ko jaage, na aate kisi ke hath ye',\n", + " 'badhte hain lafde aur laafe',\n", + " 'aur badhte laaton ke khaate',\n", + " 'raatein ye kaaton se kaatein',\n", + " 'andheri raaton ke khaatir',\n", + " 'tehelka naako pe jaake',\n", + " 'achal bahaav, gyan ki bhaanti, koi rok na pata',\n", + " 'mere saarey gian se saathi',\n", + " 'police waley peeche, hairaan hai kaafi',\n", + " 'mere bhai rukte na',\n", + " 'kyun pareshaan hai khaakee',\n", + " 'yeah!',\n", + " 'inki jaan se jaari',\n", + " 'agyaan saarey dene lage yahan jaan si kaari',\n", + " 'har roz, nikle, aadhi raat shikari',\n", + " 'inki wardi na lagti humko hamari shaan se bhaari',\n", + " 'yeah, dikhte bhale se',\n", + " 'kaleshi ek ek',\n", + " 'sharaab aadhi raat leke',\n", + " 'yahan band na hote theke',\n", + " 'unn laundon ke liye, jo raaton ko sadak pe rehte',\n", + " 'kal ki hai fikar ni jinko aaj pure mazey lete',\n", + " 'prem bhaav, nahi ladaai ki vibe',\n", + " 'par bhai ki eye se eye milaai toh bhai ki jeb mein knife',\n", + " 'bhai se naa hi ched leni, sachhai bhari ye raaye',\n", + " 'hain bande psycho type',\n", + " 'yahin baisakh aur yahin katai',\n", + " 'par chhod ladaai, tu bhai ki white si light ki bike pe lele ride',\n", + " 'kaali raatein, khaali sadke, aadhi raaton ki gehrai',\n", + " 'mein ghuske, thoda ruk ke',\n", + " 'ab laeye dai ki chai',\n", + " 'din ki dhoop se door kya, pasand hai sheher ki night ki life',\n", + " 'yeah!',\n", + " 'baaki sab hai chhalaawa',\n", + " 'ek bhai mera lava na koi bhai ke alaava',\n", + " 'jaan hatheli par sada, na koi dikhawa',\n", + " 'ye hood bhaiyon ka, full bhaichara bawa',\n", + " 'sarey sath, ghere mein, beaton pe murder half horey',\n", + " 'maare haath, duniya ki reeton pe brother maar kodey',\n", + " 'haramkhor ye, system ke liye awaaz loaded',\n", + " 'raat hote hi kaarnaame sadak pe saarey khatarnaak horey',\n", + " 'ladke sadakchhaap, sarey kadak chhaap chodey (sadakchhaap)',\n", + " 'raaton ko kaarnaame, saarey khatarnaak horey',\n", + " 'humble as fuck, ki humse pehle aap bolein',\n", + " 'par scene bhai ka toh sabse pehla haath chodein (sabse pehle)',\n", + " 'ladke sadakchhaap, sarey kadak chhaap chodey (sadakchhaap)',\n", + " 'raaton ko kaarnaame, saarey khatarnaak horey',\n", + " 'humble as fuck, ki humse pehle aap bolein',\n", + " 'par scene bhai ka toh sabse pehla haath chodein',\n", + " 'ladke sadakchhaap sadakchhaap',\n", + " 'kare kaarnaame khatarnaak khatarnaak',\n", + " 'yeah yeah!',\n", + " 'ladke sadakchap sadakchaap',\n", + " 'kare kaarnaame khatarnaak khatarnaak',\n", + " 'yeah yeah!',\n", + " 'sadakchaap (sadakchhaap)',\n", + " 'chalne de!',\n", + " 'asal hip hop, yeah sadakchhaap!',\n", + " 'kiski galti kiske sar pe',\n", + " 'kisse jalti kisse banti, huh?',\n", + " 'line deri aage se tu jo',\n", + " 'to fark naii padta kiski bandi ho',\n", + " '101',\n", + " 'daaka daala maala maal hai crew',\n", + " 'shaakal aaya shakalaka boom',\n", + " 'me kaka, tiki taka kaatu chu',\n", + " 'laaya saath me bhaala yabadabadoo',\n", + " 'bhai 101',\n", + " 'kaale dhabbe paale',\n", + " 'hum pille',\n", + " '101',\n", + " 'ek se ek hai mere 100 bhes',\n", + " 'nishana laga feka shuriken',\n", + " 'ken aur ryu bhare shoryuken (ay)',\n", + " 'peeli agle din tha supersonic',\n", + " 'haan thi lagi padi meri show k din (skrr)',\n", + " 'scooty sawari bhi na ruki (skkr)',\n", + " 'noida se leke nizamuddin (ha)',\n", + " 'kehete jo maa ka hi khata',\n", + " 'tu ab aake dekh aa zara teri mmm..',\n", + " '101',\n", + " '(android ka charger hai terepe?)',\n", + " 'phone dekha battery 2% hai',\n", + " 'room kiya hotbox mara stone cold flow log bole may mei bhi thand hai',\n", + " 'merme ghamand hai',\n", + " 'thoda bhot',\n", + " 'zyada nai',\n", + " 'bhoka bhot',\n", + " 'kata nai',\n", + " 'khota shauk',\n", + " 'pala nai',\n", + " 'dhuua dhake aasmaan',\n", + " 'dilli meri baat maan',\n", + " 'har safed ke yaha pe saat ranng hai',\n", + " 'aise baate jamti nahi to door se dekh ke khush rao',\n", + " 'dekho khali meri image nai mai acha nai',\n", + " 'hu asli',\n", + " 'is baat me koi bhi shaq na ho',\n", + " 'ke hamari saari parvarish',\n", + " 'sadak shiksha praapti me beeti',\n", + " 'bt fir na ho',\n", + " 'jab padhae hume koi patti',\n", + " 'fode nakki',\n", + " 'chal ho nakki ya se oye',\n", + " 'aaho!',\n", + " 'aa khada ho chal',\n", + " 'ye ra stage dikha wow wow factor',\n", + " 'kiya fir naam, mara chaanta phenk kar',\n", + " 'dikhe jo chor',\n", + " 'kiye 1-2 tour',\n", + " 'ghooma 7-8 sheher',\n", + " 'mile 1-2 actor',\n", + " 'sar na chadhe (huh)',\n", + " 'paisa mere zara sa, yahan',\n", + " 'jane mujhe sara jaha',\n", + " 'shah jahan',\n", + " 'sar dard, karanama',\n", + " 'haath maar, maradonna',\n", + " 'mat kar, pari pana',\n", + " 'kabse keh ra hoon na',\n", + " 'faeda kya choomke',\n", + " 'joot jab rakh ke de sakte thoot pe, uhh',\n", + " 'baje hum loop pe (hum loop pe)',\n", + " 'chalte rahe tum bas ek hi loop pe, uhh',\n", + " 'soche ham dabbe se bahar',\n", + " 'soche ke tu kare ball bhot sahi',\n", + " 'aake khaega har tappe pe chaar',\n", + " 'kare koi par war nai seedhe maut tera parvardigaar',\n", + " 'yaha muh pe bolne waale kamm hain aur',\n", + " 'zyada jo baatein kare thodi badake (thodi si)',\n", + " 'aaya tha karne me maze par',\n", + " 'niklunga unki me thodi si sadake (ch*tiye)',\n", + " 'inn jaise pe hota afsos hai',\n", + " 'soch ye dono pe boli bhi lagalein',\n", + " 'par rehna matt galat faimi me hum',\n", + " 'upar se koodenge ghodi bhi banake',\n", + " 'ha tha jazbati me pehle',\n", + " 'par abhi nahi',\n", + " 'abhi nahi',\n", + " 'abhi kehna jo woh keh le',\n", + " 'baad me',\n", + " 'me bhool na jaaun, bhaav bhi khaun, ya na nibhau',\n", + " 'rishto ka theka ni liya',\n", + " 'abhi se apne bhi ajnabi hain kuch jo bt the thode se',\n", + " 'yaad hai aati jab hai quarter ander aise rishte baje mere lawde pe',\n", + " 'me bola me pehle bhi rehta tha touch me nahi',\n", + " 'ye bata abhi kya alag hai? (kuch bhi nahi)',\n", + " 'aur pehle se karra tha hustle jab',\n", + " 'papa ko lagta tha beta nasamajh hai',\n", + " 'hoga jo bola tha pehle se pata tha thoda to khone ko dono pe bacha ni kuch bhi',\n", + " 'bole ye',\n", + " 'dolo se bolu me zoro se sick hu me zorro se piccolo bharose bethe to',\n", + " 'jhuk beam',\n", + " 'khaaoge',\n", + " 'paer rakhe dono',\n", + " 'nao pe',\n", + " 'jalegi badi',\n", + " 'chao me',\n", + " 'fategi poori',\n", + " 'gaao ki',\n", + " 'karenge jab ye',\n", + " 'shaolin',\n", + " 'usse pehle jao',\n", + " 'laao gin',\n", + " 'hum ruke ni to',\n", + " 'foul ye',\n", + " 'kare me khelu rowdy',\n", + " 'to bata kata cake kaha hai',\n", + " 'batega sabme tu leke aa (leke aa)',\n", + " 'kahi aisi ni unity dekhega',\n", + " 'gharwaalo ko pata tha chhati se ladka ye',\n", + " 'mandir me maatha nahi tekega',\n", + " '101',\n", + " 'daaka daala maala maal hai crew',\n", + " 'shaakal aaya shakalaka boom',\n", + " 'me kaka, tiki taka kaatu chu',\n", + " 'laaya saath me bhaala yabadabadoo',\n", + " 'bhai 101',\n", + " 'kaale dhabbe paale',\n", + " 'hum pille',\n", + " '101',\n", + " 'ek se ek hai mere 100 bhes',\n", + " 'yeogi buteora, modu moyeora',\n", + " \"we gon' party like, lilililalala~\",\n", + " 'mameul yeoreora, meoril biwora',\n", + " 'bureul jjipyeora lilililalala~',\n", + " 'jeongdabeun mutjji malkko geudaero badadeuryeo neukkimdaero ga alright~',\n", + " 'haneureul majuhago du soneul',\n", + " 'tta wiro jeo wiro nalttwikko sipeo-oh~',\n", + " 'nanananana nanananana~',\n", + " 'wow fantastic baby~',\n", + " 'dance! (ooh-hoo~)',\n", + " 'i wanna dance dance dance da-dance',\n", + " 'fantastic baby~',\n", + " 'dance! (ooh-hoo~)',\n", + " 'i wanna dance dance dance da-dance',\n", + " 'wow fantastic baby~',\n", + " 'i nanjangpane, hey!',\n", + " 'kkeutpan wang charye, hey!',\n", + " 'ttangeul heundeulkko',\n", + " 'sam buneuron bulchungbunhan race (wait! )',\n", + " 'bunwigineun gwayeol~ huh!',\n", + " 'catch me on fire~ huh!',\n", + " 'jinjjaga natanattta nananana~',\n", + " 'hanabuteo yeolkkaji',\n", + " 'modeun ge da han suwi',\n", + " 'morae beolpan wireul michin',\n", + " 'deusi ttwieobwado, geotteunhan kuri',\n", + " 'haneureun chungbunhi',\n", + " 'neomuna pureunikka',\n", + " 'amugeottto mutjji mallan mariya',\n", + " 'neukkiran mariya naega nugunji',\n", + " 'ne simjangsorie yematkae',\n", + " 'ttwigi sijakae magi kkeunnal ttae kkajiye~',\n", + " \"i can't, baby don't stop this\",\n", + " 'oneureun tarakae',\n", + " 'micheo barakae ganeungeoya~',\n", + " 'nanananana nanananana~',\n", + " 'wow fantastic baby~',\n", + " 'dance! (ooh-hoo~)',\n", + " 'i wanna dance dance dance da-dance',\n", + " 'fantastic baby~',\n", + " 'dance! (ooh-hoo~)',\n", + " 'i wanna dance dance dance da-dance',\n", + " 'wow fantastic baby~',\n", + " 'boom! shakalaka! boom! shakalaka! boom! shakalaka!',\n", + " 'dance dance dance da-dance',\n", + " 'boom! shakalaka! boom! shakalaka! boom! shakalaka!',\n", + " 'da-da-da-da dance dance~',\n", + " 'nal ttara jababol temyeon babwa',\n", + " 'nan yeongwonhan ttanttara',\n", + " 'oneul ppam geumgiran naegen eopsseo~',\n", + " 'mama just let me be your lover',\n", + " 'i hollan sogeul neomeo oh-oh-oh-oh~ nanananana~',\n", + " 'meorikkeutpputeo balkkeutkkaji visual eun shock~',\n", + " 'nae gamgageun somunnan kkun apsseoganeun chok',\n", + " 'namdeulppodaneun ppareun georeum',\n", + " 'chawoni dareun jeomeum',\n", + " 'eoreumeoreumeoreum (hold up! ) nanananana~',\n", + " 'ne simjangsorie yematkae',\n", + " ...]},\n", + " 'data': ['hangul',\n", + " 'life is what you make of it 남보다 한 페이지 일찍 넘겨',\n", + " '고등래퍼 땐 이미 작업한 뒤 with swings and verbal',\n", + " '나의 잠재력 눈치 까고 서둘러 죽이려던 놈들',\n", + " '간곡한 부탁 다 거절 놓고 다음 광고 콘티를 훑고 있어',\n", + " '흥미 없어요 집 공개는 yeah',\n", + " '내가 날 가졌기 때문 yeah',\n", + " '네 정서를 배려하는 차원에서',\n", + " '수입에 대한 건 노코멘트 yeah',\n", + " 'go back to 2014',\n", + " '아무도 몰랐지 편견은 반전 줄 때 효과 있지',\n", + " 'i was 24 at show me 4 and i be 26 at season 6',\n", + " '미디어와 내 안목을 합치면 it will be big benefit',\n", + " '껄끄러운 인간관계는 정리할게 여지없이',\n", + " '왜냐 빛이 강한 곳 주변엔 늘 벌레들이 득실이니',\n", + " 'you get it fanxy',\n", + " \"you can't handle fanxy child\",\n", + " \"you can't handle fanxy child\",\n", + " \"i don't like your fashion style\",\n", + " '다 뒤처지느라 고생이 많다',\n", + " '길거리를 거닐 때에 데시벨은 에버랜드 yeah',\n", + " '1, 2년 새에 이제 더는 없는 vacation',\n", + " 'oh yeah, gentleman 네 여친은 떨어 내 이름에',\n", + " '질투는 건강에 해롭기에 get away, uh',\n", + " '내 featuring은 danger',\n", + " 'hmm 많은 래퍼를 죽였어 트랙에서 ooh',\n", + " 'we make make pancake, yeah',\n", + " '네 콧대는 눌리게 돼 있어',\n", + " 'different r&b (r&b)',\n", + " 'i don’t care mainstream or indie scene',\n", + " '어떤 시스템에 들어가기엔',\n", + " '덩치가 커진 원숭이띠들 fanxy',\n", + " \"you can't handle fanxy child\",\n", + " \"you can't handle fanxy child\",\n", + " \"i don't like your fashion style\",\n", + " '다 뒤처지느라 고생이 많다',\n", + " \"i'mma rip it up like a monster (내 dna)\",\n", + " '우리 92는 제일 맛있어 (yummy yummy)',\n", + " '듣고 판단해 디자이너',\n", + " 'now wait wait wait wait wait 방금 위험해',\n", + " '아 참 이건 표절곡 잘못했다간 욕먹어',\n", + " '댓글 적어 khalifa 형 오졌고',\n", + " '떼창할 땐 가사는 몰라도 돼 맞죠',\n", + " '최고는 싫고 supreme, preme, preme은 멋져',\n", + " 'so we slay we slay we slay',\n", + " 'whippin whippin whippin',\n", + " '손오공이 된 기분 비행기는 근두운',\n", + " '세계를 누빌 잔나비띠들 fanxy',\n", + " \"you can't handle fanxy child\",\n", + " \"you can't handle fanxy child\",\n", + " \"i don't like your fashion style\",\n", + " '다 뒤처지느라 고생이 많다',\n", + " 'get in my 2411 gts는 초록색 버스',\n", + " '맨 뒷자리에서부터 내일 나 이사해 통유리',\n", + " '한강이 다 보이네',\n", + " 'no more minor 이 melody처럼 now i’m fuckin major',\n", + " '벌레 같은 게 나풀대 나부끼네 나부끼네 나부끼네',\n", + " '누운 자리 이부자리를 개 자리를 개 자리를 개 자리를 개',\n", + " '똥이 차 있네 차 있기에 네 아가리에 잘 관리해',\n", + " '이 새끼 fanxy you 잘 들어봐 봐',\n", + " '안에 매미 소리 녹음돼 있어',\n", + " \"sippin' bottles of champagne\",\n", + " '병을 따자 아무도 날 못 건드려',\n", + " '내 친구들이 방패 티키타카 티키타카 너넬 갖고 놀아',\n", + " '내 친구들은 너넬 붙였다 뗐다 스티커 티커 존나 쉬워',\n", + " '우린 한치 두치 세치 네치 뿌꾸뿌꾸빠만 불러도 야',\n", + " '1위를 찍어 fanxy',\n", + " \"you can't handle fanxy child\",\n", + " \"you can't handle fanxy child\",\n", + " \"i don't like your fashion style\",\n", + " '다 뒤처지느라 고생이 많다',\n", + " 'romanized',\n", + " 'rife it what you make of it',\n", + " 'namboda han peiji iljjik neomgyeo',\n", + " 'godeungraepeo ttaen imi jageophan dwi',\n", + " 'with swingt and verbal',\n", + " 'naui jamjaeryeok nunchi kkago',\n", + " 'seodulleo jugiryeodeon nomdeul',\n", + " 'gangokhan butak da geojeol nohgo',\n", + " 'daeum gwanggo kontireul hultgo isseo',\n", + " 'heungmi eopseoyo jip gonggaeneun yeah',\n", + " 'naega nal gajyeossgi ttaemun yeah',\n", + " 'ne jeongseoreul baeryeohaneun chawoneseo',\n", + " 'suibe daehan geon nokomenteu yeah',\n", + " 'go back to 2014',\n", + " 'amudo mollassji pyeongyeoneun',\n", + " 'banjeon jul ttae hyogwa issji',\n", + " 'i wat 24 at show me 4',\n", + " 'and i be 26 at season 6',\n", + " 'midieowa nae anmogeul hapchimyeon',\n", + " 'it will be big benefit',\n", + " 'kkeolkkeureoun ingangwangyeneun',\n", + " 'jeongrihalge yeojieopsi',\n", + " 'waenya bicci ganghan got jubyeonen',\n", + " 'neul beolledeuri deuksirini',\n", + " 'you get it fanxy',\n", + " 'u can’t handle fanxy child',\n", + " 'u can’t handle fanxy child',\n", + " 'i don’t like your fashion style',\n", + " 'da dwicheojineura gosaengi manhda',\n", + " 'gilgeorireul geonil ttaee',\n", + " 'desibereun ebeoraendeu yeah',\n", + " '1 2nyeon saee ije deoneun eopsneun vacation',\n", + " 'oh yeah gentleman',\n", + " 'ne yeochineun tteoreo nae ireume',\n", + " 'jiltuneun geongange haeropgie get away',\n", + " 'uh',\n", + " 'nae picheoringeun danger',\n", + " 'hmm manheun raepeoreul jugyeosseo teuraegeseo ooh',\n", + " 'we make make paenkeikeu yeah',\n", + " 'ne kosdaeneun nullige dwae isseo',\n", + " 'different r&b r&b',\n", + " 'i don’t care mein seuteurim or indisin',\n", + " 'eotteon siseuteme deureogagien',\n", + " 'deongchiga keojin wonsungittideul fanxy',\n", + " 'u can’t handle fanxy child',\n", + " 'u can’t handle fanxy child',\n", + " 'i don’t like your fashion style',\n", + " 'da dwicheojineura gosaengi manhda',\n", + " 'imma rip it up like a monster nae dna',\n", + " 'uri 92neun jeil masisseo',\n", + " 'yummy yummy',\n", + " 'deutgo pandanhae dijaineo',\n", + " 'now wait wait wait wait wait',\n", + " 'banggeum wiheomhae',\n", + " 'a cham igeon pyojeolgok',\n", + " 'jalmoshaessdagan yokmeogeo',\n", + " 'daesgeul jeogeo khalifa hyeong ojyeossgo',\n", + " 'ttechanghal ttaen gasaneun mollado dwae majjyo',\n", + " 'choegoneun silhgo',\n", + " 'supreme preme premeeun meosjyeo',\n", + " 'so we slay we slay we slay',\n", + " 'whippin whippin whippin',\n", + " 'sonogongi doen gibun bihaenggineun geunduun',\n", + " 'segyereul nubil jannabittideul fanxy',\n", + " 'u can’t handle fanxy child',\n", + " 'u can’t handle fanxy child',\n", + " 'i don’t like your fashion style',\n", + " 'da dwicheojineura gosaengi manhda',\n", + " 'get in my 2411',\n", + " 'ktsneun choroksaek beoseu',\n", + " 'maen dwisjarieseobuteo',\n", + " 'naeil na isahae tongyuri',\n", + " 'hangangi da boine',\n", + " 'no more minor i melodycheoreom',\n", + " 'now i’m fuckin major',\n", + " 'beolle gateun ge napuldae',\n", + " 'nabukkine nabukkine nabukkine',\n", + " 'nuun jari ibujarireul gae',\n", + " 'jarireul gae jarireul gae jarireul gae',\n", + " 'ttongi cha issne cha issgie',\n", + " 'ne agarie jal gwanrihae',\n", + " 'i saekki fanxy you jal deureobwa bwa',\n", + " 'ane maemi sori nogeumdwae isseo',\n", + " \"sippin' bottlet of champagne\",\n", + " 'byeongeul ttaja amudo nal mot geondeuryeo',\n", + " 'nae chingudeuri bangpae',\n", + " 'tikitaka tikitaka neonel gajgo nora',\n", + " 'nae chingudeureun neonel butyeossda ttessda',\n", + " 'seutikeo tikeo jonna swiwo',\n", + " 'urin hanchi duchi sechi nechi',\n", + " 'ppukkuppukkuppaman bulleodo ya',\n", + " '1wireul jjigeo fanxy',\n", + " 'u can’t handle fanxy child',\n", + " 'u can’t handle fanxy child',\n", + " 'i don’t like your fashion style',\n", + " 'da dwicheojineura gosaengi manhda',\n", + " '식케이 아주 조금 가사korean',\n", + " '사치라고 하지 다들 yeah',\n", + " '닥치라고 하지 나는 yeah',\n", + " 'i like you lil bit',\n", + " 'like you lil bit',\n", + " 'like you just a lil bit',\n", + " 'like you lil bit',\n", + " 'like you lil bit',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " '널 갖고싶단말이 아니야',\n", + " '너랑 그냥 하고싶단 말이 아니야',\n", + " '물론 잡고싶은게 내 맘이야',\n", + " '너 말고 내가 말한건 시간이야',\n", + " '헛소리같은 말 시간이 약',\n", + " '지금 시간이 지남',\n", + " '후회할 게 확실하니깐',\n", + " '급해보였다고 실망이라는',\n", + " '말은 하지마 난 비상이야',\n", + " 'baby 마셔 내가 네 맘에',\n", + " '들어 보일 때까지',\n", + " 'baby 걱정이 없어질 거야',\n", + " '어린애같이',\n", + " 'baby 정말로 좋아',\n", + " '너가 그렇게 나를 대할 때',\n", + " 'like you lil bit',\n", + " '사치라고 하지 다들 yeah',\n", + " '닥치라고 하지 나는 yeah',\n", + " 'i like you lil bit',\n", + " 'like you lil bit',\n", + " 'like you just a lil bit',\n", + " 'like you lil bit',\n", + " 'like you lil bit',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'tick tock 흘러가기 바쁜',\n", + " '우리 식탁의 시간',\n", + " '근데 식지 않는 메뉴가 뭔지',\n", + " '피차 아니까',\n", + " '어서 네 입에다 넣어',\n", + " '그래 그거 물론 내 마음까지',\n", + " '뭐 사실 식어도 괜찮아',\n", + " '난 차가울 때 먹음 더 맛나지',\n", + " 'don’t waste it baby',\n", + " '기다림은 사치라고 하지 다들',\n", + " '이 밤은 지나가도 돼',\n", + " '난 아침에 더 많이 하는 type',\n", + " '언제나 누군갈',\n", + " '가지려고 하기 전에 나는',\n", + " '먼저 나를 다',\n", + " '가지라고 하지 말은',\n", + " '사치라고 하지 다들 yeah',\n", + " '닥치라고 하지 나는 yeah',\n", + " 'i like you lil bit',\n", + " 'like you lil bit',\n", + " 'like you just a lil bit',\n", + " 'like you lil bit',\n", + " 'like you lil bit',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " '넌 내게 다가왔지',\n", + " '아주 조금씩 ay',\n", + " 'i was sippin’ on moet',\n", + " '아주 조금씩 ay',\n", + " 'she wanna fuck wit me now ay',\n", + " '말로는 섣불리 날 ay',\n", + " '넘보려 하지 말라고 하지만',\n", + " '누가 봐도 bluffin이야 ay',\n", + " '다른 여자들이 올 때',\n", + " '어느새 넌 내 무릎에',\n", + " '오 네 가슴은 true thang',\n", + " 'this one night romance',\n", + " 'yea baby we gotta get goin',\n", + " 'to your house or my house',\n", + " '네 전화번호까진 몰라도 돼',\n", + " 'cuz i like you lil mufuckin bit yea',\n", + " '사치라고 하지 다들 yeah',\n", + " '닥치라고 하지 나는 yeah',\n", + " 'i like you lil bit',\n", + " 'like you lil bit',\n", + " 'like you just a lil bit',\n", + " 'like you lil bit',\n", + " 'like you lil bit',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'romanization',\n", + " 'sachirago haji dadeul yeah',\n", + " 'dakchirago haji naneun yeah',\n", + " 'i like you lil bit',\n", + " 'like you lil bit',\n", + " 'like you just a lil bit',\n", + " 'like you lil bit',\n", + " 'like you lil bit',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'neol gajgosipdanmari aniya',\n", + " 'neorang geunyang hagosipdan mari aniya',\n", + " 'mullon japgosipeunge nae mamiya',\n", + " 'neo malgo naega malhangeon siganiya',\n", + " 'heossorigateun mal sigani yak',\n", + " 'jigeum sigani jinam',\n", + " 'huhoehal ge hwaksilhanikkan',\n", + " 'geuphaeboyeossdago silmangiraneun',\n", + " 'mareun hajima nan bisangiya',\n", + " 'baby masyeo naega ne mame',\n", + " 'deureo boil ttaekkaji',\n", + " 'baby geokjeongi eopseojil geoya',\n", + " 'eorinaegati',\n", + " 'baby jeongmallo joha',\n", + " 'neoga geureohge nareul daehal ttae',\n", + " 'like you lil bit',\n", + " 'sachirago haji dadeul yeah',\n", + " 'dakchirago haji naneun yeah',\n", + " 'i like you lil bit',\n", + " 'like you lil bit',\n", + " 'like you just a lil bit',\n", + " 'like you lil bit',\n", + " 'like you lil bit',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " '{verse 2: simon dominic]',\n", + " 'tick tock heulleogagi bappeun',\n", + " 'uri siktagui sigan',\n", + " 'geunde sikji anhneun menyuga mwonji',\n", + " 'picha anikka',\n", + " 'eoseo ne ibeda neoheo',\n", + " 'geurae geugeo mullon nae maeumkkaji',\n", + " 'mwo sasil sigeodo gwaenchanha',\n", + " 'nan chagaul ttae meogeum deo masnaji',\n", + " 'don’t waste it baby',\n", + " 'gidarimeun sachirago haji dadeul',\n", + " 'i bameun jinagado dwae',\n", + " 'nan achime deo manhi haneun type',\n", + " 'eonjena nugungal',\n", + " 'gajiryeogo hagi jeone naneun',\n", + " 'meonjeo nareul da',\n", + " 'gajirago haji mareun',\n", + " 'sachirago haji dadeul yeah',\n", + " 'dakchirago haji naneun yeah',\n", + " 'i like you lil bit',\n", + " 'like you lil bit',\n", + " 'like you just a lil bit',\n", + " 'like you lil bit',\n", + " 'like you lil bit',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'neon naege dagawassji',\n", + " 'aju jogeumssik ay',\n", + " 'i was sippin’ on moet',\n", + " 'aju jogeumssik ay',\n", + " 'she wanna fuck wit me now ay',\n", + " 'malloneun seotbulli nal ay',\n", + " 'neomboryeo haji mallago hajiman',\n", + " 'nuga bwado bluffiniya ay',\n", + " 'dareun yeojadeuri ol ttae',\n", + " 'eoneusae neon nae mureupe',\n", + " 'o ne gaseumeun true thang',\n", + " 'this one night romance',\n", + " 'yea baby we gotta get goin',\n", + " 'to your house or my house',\n", + " 'ne jeonhwabeonhokkajin mollado dwae',\n", + " 'cuz i like you lil mufuckin bit yea',\n", + " 'sachirago haji dadeul yeah',\n", + " 'dakchirago haji naneun yeah',\n", + " 'i like you lil bit',\n", + " 'like you lil bit',\n", + " 'like you just a lil bit',\n", + " 'like you lil bit',\n", + " 'like you lil bit',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'i slide in late night',\n", + " 'have my time',\n", + " 'with you may i fuck with you',\n", + " 'hold me tight',\n", + " \"play your fav song yeah that's right\",\n", + " 'feel the vibe',\n", + " 'play yo fav song no quiet nights',\n", + " 'wanna let ya know everything gonna be alright (alright)',\n", + " \"wake you up in the morn with a sun's smile\",\n", + " 'hold me tight (hold me tight)',\n", + " 'get it right',\n", + " 'yeah we gotta rise',\n", + " 'you decide (you decide)',\n", + " 'yeah we gotta ride',\n", + " \"ain't no lie\",\n", + " 'hold me tight (hold me tight)',\n", + " 'get it right',\n", + " 'yeah we gotta rise',\n", + " 'you decide (you decide)',\n", + " 'yeah we gotta ride',\n", + " \"ain't no lie\",\n", + " 'sangat bane archan, nirasha darshata darpan harpal',\n", + " 'darshan de chalkar ek chintavishay mere dar par',\n", + " 'kya khulta kaksh ye parivartan ka',\n", + " 'ghulta vish hai, samay anshan ka',\n", + " 'dhadkan jo thaame sargam toh',\n", + " 'haskar hota abhinandan haan',\n", + " 'all my life, all my life',\n", + " 'oo i has to fight, all my life',\n", + " 'oo i has to rise',\n", + " 'oo i has to ride',\n", + " 'all my life all my life',\n", + " 'oo i has to grind (all my life)',\n", + " 'gotta get it right',\n", + " 'running outta time',\n", + " 'todo bandhan rakho khair, ayy',\n", + " 'jo hoga so hona hi hai',\n", + " 'na, roko kadam karo sair, ayy',\n", + " 'toh hota safar hai ye tay',\n", + " 'ye, duniya khilauna hi hai',\n", + " 'na khud ko khona aur hona vijay',\n", + " 'girey na hosh aur bass labon par muskurahatein na ye chipein',\n", + " '(ayy)',\n", + " 'gire rozana sawaalo tale',\n", + " 'buzdil zamana hazaaro jale',\n", + " 'pata na wafa ka waado mein chal hai',\n", + " 'salaahein salaakhon mein kaate samay',\n", + " 'ho rawana gile,jo bhi hain dil mein rakhe',\n", + " 'na hai andaza tujhe',\n", + " 'ki jab ye tarana baje',\n", + " 'dhoonde wajeh na dil, pal hai ye tere liye',\n", + " 'hold me tight',\n", + " \"play your fav song yeah that's right\",\n", + " 'feel the vibe',\n", + " 'play yo fav song no quiet nights',\n", + " 'wanna let ya know everything gonna be alright (alright)',\n", + " \"wake you up in the morn with a sun's smile\",\n", + " 'hold me tight (hold me tight)',\n", + " 'get it right',\n", + " 'yeah we gotta rise',\n", + " 'you decide (you decide)',\n", + " 'yeah we gotta ride',\n", + " \"ain't no lie\",\n", + " 'hold me tight (hold me tight)',\n", + " 'get it right',\n", + " 'yeah we gotta rise',\n", + " 'you decide (you decide)',\n", + " 'yeah we gotta ride',\n", + " \"ain't no lie\",\n", + " 'aankhein khuli naya din',\n", + " 'hausle baandhu main chala bass raahon pe khauf na',\n", + " 'aankhon mein jaaun mai mil',\n", + " 'andheron se, ladun main roshni dhoondhu',\n", + " 'raahein kahan meri khojun',\n", + " 'saaye bhi apne mai khodun',\n", + " 'bhram me fasa yahaan',\n", + " 'asal mein kaun main khud se hi poochun',\n", + " 'all my life, all my life',\n", + " 'oo i has to fight, all my life',\n", + " 'oo i has to rise',\n", + " 'oo i has to ride',\n", + " 'all my life all my life',\n", + " 'oo i has to grind (all my life)',\n", + " 'gotta get it right',\n", + " 'running outta time',\n", + " 'kiska main sath du, kisko main chor du',\n", + " 'kis se main kisse hi tod du',\n", + " 'ya, sath chalun main hamesha',\n", + " 'jeevan mein hisse mai jodlu',\n", + " 'khudke balboote bass paana hai khwaab ko',\n", + " 'bhujhne na dena hai bheetar ki aag ko',\n", + " 'kar na tu koshishe band, jhok ke mann',\n", + " 'archane bhale ye laakh ho',\n", + " 'rokna chaahein par rukna na tu',\n", + " 'hawa khilaaf mai rukh naya lu',\n", + " 'choona gagan paana mukaam',\n", + " 'panchhi azaad main udna hai yu',\n", + " 'ki upar main neeche hain saari ye mushkilein',\n", + " 'beete pal saare ye khusi mein',\n", + " 'saath mein kuch hi hain, kyun',\n", + " 'khushi tu aap mein dhoondh',\n", + " 'aye, bhai kyun dukhi hai tu',\n", + " 'hold me tight',\n", + " \"play your fav song yeah that's right\",\n", + " 'feel the vibe',\n", + " 'play yo fav song no quiet nights',\n", + " 'wanna let ya know everything gonna be alright (alright)',\n", + " \"wake you up in the morn' with a sun's smile\",\n", + " 'hold me tight (hold me tight)',\n", + " 'get it right',\n", + " 'yeah we gotta rise',\n", + " 'you decide (you decide)',\n", + " 'yeah we gotta ride',\n", + " \"ain't no lie\",\n", + " 'hold me tight (hold me tight)',\n", + " 'get it right',\n", + " 'yeah we gotta rise',\n", + " 'you decide (you decide)',\n", + " 'yeah we gotta ride',\n", + " \"ain't no lie\",\n", + " \"ain't no lie\",\n", + " '(mansheel gujral)',\n", + " 'yes i’m havin’ fun',\n", + " 'paisa, fame, stardom',\n", + " 'yes i’m havin’ fun',\n", + " 'paisa, fame, stardom',\n", + " 'yes i’m havin’ fun',\n", + " 'paisa, fame, stardom',\n", + " '(lil golu)',\n", + " 'sunlo mere yaaron aur',\n", + " 'haters bhi sun lo',\n", + " 'hindi, angreji, nepali kuch bhi chun lo',\n", + " 'it’s your boy lil golu yamuna park ka',\n", + " 'chhoriyan chhoti, shauqeen lambi car ka',\n", + " 'delhi ka local londa',\n", + " 'dum hai balls mein',\n", + " 'kal tak ghuma metro mein, aaj rolls mein',\n", + " 'kiraye ki na hai ye hai mehnat ki kamai ki',\n", + " 'r8 meri, ye lambi gaadi bhai ki',\n", + " 'madhyam-wargiye pariwar se',\n", + " 'pitaji in sarkari job',\n", + " 'sarkari school ka ladka',\n", + " 'sunta tha hip-hop',\n", + " 'karle kuch vyapaar',\n", + " 'kehte thhe rishtedaar',\n", + " 'rishtedaaron ke liye middle finger ab taiyaar',\n", + " 'sacchi i’m having fun, paisa, fame, stardom',\n", + " 'sacchi saari baatein inki ek ek line bum',\n", + " 'seduce kare beat kyuki beat mein seduction',\n", + " 'yo yo honey singh! faadu production',\n", + " 'ye suno.. dup-step, ye suno',\n", + " 'dup-step.. ye suno..',\n", + " 'dup-step.. ye suno..',\n", + " 'dup-step',\n", + " '(mansheel gujral)',\n", + " 'yes i’m having fun',\n", + " 'paisa, fame, stardom',\n", + " 'yes i’m having fun',\n", + " 'paisa, fame, stardom',\n", + " '(honey singh rap)',\n", + " 'mujhe sab pata hai kon kon mujhse sadte hain',\n", + " 'mere baare me vaahiyaat baatein kartein hai',\n", + " 'peeth piche bhonkein',\n", + " 'saamne mujhse darte hain',\n", + " 'mere aage aake phir kyun paji paji karte hai?',\n", + " 'aise logon ko ram ram meri door se',\n", + " 'wo bhi kya kare bichare hain majboor se',\n", + " 'kalaa ki hai kami tabhi to chaalein chalte hain',\n", + " 'ab tak papa ki pocket-money pe palte hain',\n", + " 'ye meri hai duaa rab kare tumhe kaamyab',\n", + " 'mile paisa, mile daulat-shauhrat bhi behisaab',\n", + " 'khaali dimaag hai tera',\n", + " 'jisme shaitaan ka ghar',\n", + " 'oye shaitaan! thoda tu bhi khuda se darr',\n", + " 'kitna samjhaaun tujhe aisa na kar',\n", + " 'o kaka gal sun aidaan na kar',\n", + " 'tainu kehnna main',\n", + " 'tang na kar',\n", + " 'so what you want?',\n", + " 'fame? money? ae le, aa fad',\n", + " 'ye suno..',\n", + " 'ye suno',\n", + " 'dup-step',\n", + " 'ye suno',\n", + " 'dup-step',\n", + " 'ye suno',\n", + " '(mansheel gujral)',\n", + " 'yes i’m having fun',\n", + " 'paisa, fame, stardom',\n", + " 'yes i’m having fun',\n", + " 'paisa, fame, stardom',\n", + " 'yes i’m having fun',\n", + " 'paisa, fame, stardom',\n", + " 'crackdow’nas manz zaamit, curfew manz maraan',\n", + " 'haqoomat yi haptan hunz, nindrah karaan',\n", + " 'ais raemit sawaabun manz, khewaan haram',\n", + " 'bunker yeti gharan manz, bha qabrah khanaan',\n", + " 'ais qabrah khanaan',\n", + " 'bache, budha, jawaan, maraan',\n", + " 'dafan yeti zindagi saaeen',\n", + " 'che poz ha dapakh yeti bozi na kaeen',\n", + " 'chu apuz yi soori, qahawat yi praaeen',\n", + " 'maqbool yi qahawat, shahadat yi meiyien',\n", + " 'shahadat yi saaeen',\n", + " 'bha qus?',\n", + " 'bha qus?',\n", + " 'zhan bha dhul-qarnyan',\n", + " 'churan fur shahmat',\n", + " 'meh khudai sundh taaqat',\n", + " 'lekhaan bha qayamat',\n", + " 'dhazaan chi kaghaz',\n", + " 'chus tath asmaanas peth yot na che waatakh',\n", + " 'hip hop miyien ibaadat',\n", + " 'himaqat yi chaen, meh khilaaf yuas waqaalat',\n", + " 'laanat! asi na golaimi hunz aadat',\n", + " 'banaawat yi saen, na salaimi hunz aadat',\n", + " 'yim chakaan asi maerith',\n", + " 'kus diwaan ijaazat?',\n", + " 'che kya yi kasheer huh?',\n", + " 'jahnum ya janat?',\n", + " 'yim kani kya wanaan?',\n", + " 'yim aathan manz basaan',\n", + " 'yeli goli chalaan',\n", + " 'yeli kori maraan',\n", + " 'ghar kith kani paknaavo',\n", + " 'duftar che bandh saeri',\n", + " 'sachool na khulaini',\n", + " 'ragan manz baemaeni',\n", + " 'yim che vote travaan chani',\n", + " 'chus bha yim khatra qahar aasmaeni',\n", + " 'shahran ti ghaaman manz',\n", + " 'bamb ti bambaeri',\n", + " 'ghum ti manmaeni',\n", + " 'khoon ti waraeni',\n", + " 'zulum o situm ti wajari',\n", + " 'yi? asi na yi soori qabool',\n", + " 'yeti na chalaan kah asool',\n", + " 'kemsundh yi soori qasoor?',\n", + " 'soni yi soori fitoor , soni yi soori fitoor',\n", + " 'yah chu kasheer!',\n", + " 'namthas manz ais yim gharan manz kadaan asi',\n", + " 'gunan sith karaan kath, dekan peth thawan ais',\n", + " 'zani ais wachaan ti shuir ais wadaan yeti',\n", + " 'shuir waniti wadaan yeti',\n", + " 'nowjawan chu budhaan yeti',\n", + " 'insaafas pat pat chu bechun pewaan asi',\n", + " 'zaelim khewan haq topath na pewan ais',\n", + " 'poz ha wano ti bane pakistanik',\n", + " 'yeti kath na karan kah awaamich',\n", + " 'yeti kath na karan kah azaabich',\n", + " 'azadi saeen yimo dabovmich',\n", + " 'yi vaadee waraeni manz ravmich',\n", + " \"kith kani hekj asith yi ja'iz?\",\n", + " \"prichhu panin’is paan'as, kith kani heki asith yi ja'iz?\",\n", + " 'kyazi karo bardaash?',\n", + " 'kyazi bozav bakwaas?',\n", + " 'yim karaan asi badnaam, yeli wathaan chhi awaaz',\n", + " 'galathas khilaaf, maarakh masoomas chhe dinaai inaam',\n", + " 'afsar, leader yeti munji kadaan',\n", + " 'pon’s yim aati yim timnaai lewaan',\n", + " 'saani khoonuk khewaan',\n", + " 'kya faida miyani wannuk',\n", + " 'yeti yi na badlaav kah',\n", + " 'wanaan karsa che himat, che mili panin rah',\n", + " 'yi? asi na yi soori qabool',\n", + " 'yeti na chalaan kah asool',\n", + " 'kemsundh yi soori qasoor?',\n", + " 'soni yi soori fitoor , soni yi soori fitoor',\n", + " 'yah chu kasheer!',\n", + " 'korean',\n", + " 'dpr we gang gang (gang gang)',\n", + " 'rep it every day, ay (ay ay)',\n", + " \"i ain’t feelin' them fakes (yahh)\",\n", + " 'they don’t entertain, yeah',\n", + " 'dpr we gang gang (whoo)',\n", + " 'dpr we gang gang (whoo)',\n", + " 'dpr we gang gang (whoo)',\n", + " 'dpr we gang gang',\n", + " 'dpr we gang gang (okay now)',\n", + " 'dpr we gang gang (drop that sound)',\n", + " 'dpr we gang gang (tear it down)',\n", + " 'dpr we gang gang (when around)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'dpr we gang gang (hold us down)',\n", + " '오늘도 완벽한 그림을 그려',\n", + " '또 꿈을 꾸며 나는 오늘을 잊어',\n", + " 'i look at the stars and i look in the mirror',\n", + " '\"너는 날 믿고 나는 널 더 믿어',\n", + " '알고있지 가끔가다 힘들 거?',\n", + " '언제나 지켜 가족과 너의 신념',\n", + " '행동 보다 말로 하는건 참 쉬워',\n", + " '그러니 실천으로, 다음 page\"',\n", + " \"'till i die’에서도 내가 말했지, yeah\",\n", + " 'imma be a legend you just watch and see, yeah',\n", + " 'hater들은 여전히 말만 많지',\n", + " '괜찮아, 이젠 fan들이 나의 곁에 있지, yeah',\n", + " '힘이 되는 응원 너가 고맙기에',\n", + " '1분1초 빨리 지금 너한테',\n", + " '너를 위한 음악, studio late night',\n", + " '오늘 밤에도 난 thinking to my self',\n", + " '(who am i?) now i know',\n", + " 'thinking to my self',\n", + " 'yeah yeah, i don’t know, just got me',\n", + " 'thinking to my (whoo) self (who am i?)',\n", + " 'thinking to my (who am i?)',\n", + " 'yeah yeah, i don’t know, just got me',\n", + " 'thinking to my self',\n", + " 'dpr we gang gang',\n", + " 'dpr we gang gang (okay now)',\n", + " 'dpr we gang gang (drop that sound)',\n", + " 'dpr we gang gang (tear it down)',\n", + " 'dpr we gang gang (when around)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'okay, 일단 sit down and rewind the time',\n", + " '24시를 돌려, 그래, 먼 옛날',\n", + " 'sns는 없고 motorlla 하면 당연 부자',\n", + " '또 dance 음악이 유행했던 back to 1993',\n", + " '엄마가 고생끝에 낳은 홍다빈',\n", + " '여러 문제 많았지만 결국 극복했고',\n", + " '끝내 전설이 될 아이',\n", + " 'fast forward, yeah, look at me now, whoa',\n", + " '지금의 위치는 무대 위야, uh',\n", + " '이제서야 느낌이 와',\n", + " '내 앞에 보여지는 여러 fan들의 얼굴',\n", + " '내가 그토록 그리던 그림이고 그리고 이젠',\n", + " 'with my one and only brothers, 펼쳐 새 시대',\n", + " 'yeah, look at my team now',\n", + " 'yeah, shit got me',\n", + " 'thinking to my self',\n", + " '(who am i?) now i know',\n", + " 'thinking to my self',\n", + " 'yeah yeah, i don’t know, just got me',\n", + " 'thinking to my (whoo) self (who am i?)',\n", + " 'thinking to my (who am i?)',\n", + " 'yeah yeah, i don’t know, just got me',\n", + " '(coming to you live)',\n", + " 'dpr we gang gang',\n", + " 'dpr we gang gang (okay now)',\n", + " 'dpr we gang gang (drop that sound)',\n", + " 'dpr we gang gang (tear it down)',\n", + " 'dpr we gang gang (when around)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'dpr we gang gang (gang gang)',\n", + " 'rep it every day ay (ay ay)',\n", + " \"i ain’t feelin' them fakes (yahh)\",\n", + " 'they don’t entertain aye',\n", + " 'dpr we gang gang? (whoo)',\n", + " 'dpr we gang gang? (whoo)',\n", + " 'dpr we gang gang (whoo)',\n", + " 'dpr we gang gang',\n", + " 'dpr we gang gang (okay now)',\n", + " 'dpr we gang gang (drop that sound)',\n", + " 'dpr we gang gang (tear it down)',\n", + " 'dpr we gang gang (when around)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'romanization',\n", + " 'dpr we gang gang (gang gang)',\n", + " 'rep it every day ay (ay ay)',\n", + " 'i ain’t feelin them fakes (yahh)',\n", + " 'they don’t entertain yeh',\n", + " 'dpr we gang gang? (whoo)',\n", + " 'dpr we gang gang? (whoo)',\n", + " 'dpr we gang gang (whoo)',\n", + " 'dpr we gang gang',\n", + " 'dpr we gang gang (okay now)',\n", + " 'dpr we gang gang (drop that sound)',\n", + " 'dpr we gang gang (tear it down)',\n", + " 'dpr we gang gang (when around)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'oneuldo wanbyeoghan geulim-eul geulyeo',\n", + " 'tto kkum-eul kkumyeo naneun oneul-eul ij-eo',\n", + " 'i look at the stars &',\n", + " 'i look in the mirror',\n", + " '“neoneun nal midgo naneun neol deo mid-eo',\n", + " 'algoissji gakkeumgada himdeulgeo?',\n", + " 'eonjena jikyeo gajoggwa neoui sinnyeom',\n", + " 'haengdong boda mallo haneungeon cham swiwo',\n", + " 'geuleo ni silcheon-eulo da-eum peiji”',\n", + " '‘till i die’ e seo do naega malhaessji yeah',\n", + " 'imma be a legend you just watch and see yeah',\n", + " 'hater deul-eun yeojeonhi malman manhji',\n", + " 'gwaenchanh-a ijen paendeul-i naui gyeot-eissji yeah',\n", + " 'him-idoeneun eung-won neoga gomabgie',\n", + " '1bun1cho ppalli jigeum neohante',\n", + " 'neoleul wihan eum-ag',\n", + " 'studio late night',\n", + " 'oneul bam edo nan',\n", + " 'thinking to my self',\n", + " '“who am i?”',\n", + " 'now i know',\n", + " 'thinking to my self',\n", + " 'yeah yeah',\n", + " 'i don’t know',\n", + " 'just got me',\n", + " 'thinking to my (whoo) self',\n", + " 'dpr we gang gang',\n", + " 'dpr we gang gang (okay now)',\n", + " 'dpr we gang gang (drop that sound)',\n", + " 'dpr we gang gang (tear it down)',\n", + " 'dpr we gang gang (when around)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'okay ildan sitdown&rewind the time',\n", + " '24sileuldollyeo geulae meon yesnal',\n", + " 'snsneun eobsgo',\n", + " 'motorlla hamyeon dang-yeon buja',\n", + " 'tto daenseueum-ag-i yuhaenghaessdeon',\n", + " 'back to 1993',\n", + " 'eommaga gosaengkkeut-e nah-eun hongdabin',\n", + " 'yeoleo munje manh-assjiman gyeolgug geugbog',\n", + " 'haessgo kkeutnae jeonseol-i doel ai',\n", + " 'fast forward',\n", + " 'yeah look at me now (woo!)',\n", + " 'jigeum-ui wichineun mudae wiya (uh!)',\n", + " 'ijeseoya neukkim-iwa',\n", + " 'naeap-e boyeojineun yeoleo fandeul-ui',\n", + " 'eolgul naega geutoglog geulideon geulim-igo',\n", + " 'geuligo ijen',\n", + " 'with my one&only brothers',\n", + " 'pyeolchyeo sae sidae',\n", + " 'yeah look at my team now',\n", + " 'yeah',\n", + " 'shhh got me',\n", + " 'thinking to my self',\n", + " '“who am i?”',\n", + " 'now i know',\n", + " 'thinking to my self',\n", + " 'yeah yeah',\n", + " 'i don’t know',\n", + " 'just got me',\n", + " 'thinking to my (whoo) self',\n", + " 'dpr we gang gang',\n", + " 'dpr we gang gang (okay now)',\n", + " 'dpr we gang gang (drop that sound)',\n", + " 'dpr we gang gang (tear it down)',\n", + " 'dpr we gang gang (when around)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'dpr we gang gang (gang gang)',\n", + " 'rep it every day ay (ay ay)',\n", + " 'i ain’t feelin them fakes (yahh)',\n", + " 'they don’t entertain aye',\n", + " 'dpr we gang gang? (whoo)',\n", + " 'dpr we gang gang? (whoo)',\n", + " 'dpr we gang gang (whoo)',\n", + " 'dpr we gang gang',\n", + " 'dpr we gang gang (okay now)',\n", + " 'dpr we gang gang (drop that sound)',\n", + " 'dpr we gang gang (tear it down)',\n", + " 'dpr we gang gang (when around)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (then we out)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'dpr we gang gang (hold us down)',\n", + " 'so what it do homie, better make some room for me',\n", + " 'i ain’t the average mc, i’m quite stormy',\n", + " 'so not corny, better tell your friends',\n", + " 'i’m rappin for the dam, better understand',\n", + " 'sick as a dog, but i’m ripping it dawg',\n", + " 'better spread the word that i got nothing but love',\n", + " 'while rocking worldwide, i cannot get enough',\n", + " 'melodee is the name, i’ll be setting it off',\n", + " 'jedna ljubav za druga, sestru, meinen bruder',\n", + " 'došli sa istih pruga, iz istog kruga',\n", + " 'dio smo stuba koji kulturu čuva',\n", + " 'do zadnjega zuba, familija poput kuma',\n", + " 'ich schmeiß n molotov auf geistige grenzen',\n", + " 'freiheitsbeschränkung',\n", + " 'einengung, geiz und verdrängung, verblendung',\n", + " 'neid und entfremdung',\n", + " 'ich schreib die zeilen für veränderungen, und wenn du',\n", + " 'peilst was ich sende und',\n", + " 'begreifst was ich mein und teilst was ich schreib sind',\n", + " 'wir beide eins am ende',\n", + " 'quand le crew diversidad rentre en studio, ça sent la foudre',\n", + " 'on mélange plus de langues différentes que dans une grande partouze',\n", + " 'si tu comprends pas ce qu’on dit dans nos couplets, chante en yaourt',\n", + " \"j'fais l'tour du continent comme quand j'faisais mes courses avant carrefour\",\n", + " 'we dance to a million beats',\n", + " 'in millions of streets',\n", + " 'different rivers flow together',\n", + " 'and the wave sets you free',\n", + " 'a million beats',\n", + " 'in millions of streets',\n", + " 'all these rivers splash together',\n", + " 'and the wave sets you free',\n", + " 'ni kosor, ni jandroković, ni šuker ni milinović',\n", + " 'pankretić, adlesić, bogme ni ćobanković',\n", + " 'nitko nas nema, elemental šiša vladu',\n", + " 'vodimo vas u europu dok vas doma ovi kradu',\n", + " 'si celle-ci n’est pas la première',\n", + " 'que tous retiennent qu’elle ne sera pas pour autant la dernière',\n", + " 'le respect est le même pour ceux partis devant',\n", + " 'et ceux qui arrivent derrière',\n", + " 'quand la passion élève l’âme au-dessus des frontières',\n", + " 'é o expresso da irmandade, que uniu a melhor',\n", + " 'espécie de soldados das rimas para as peripécias da',\n", + " 'esgrima debitada',\n", + " 'da alemanha à grecia, da espanha à suécia em paridade',\n", + " 'diversidade de mc’s num só verso e numa comunidade',\n", + " 'ey yo we plant seeds and we watch the trees grow',\n", + " 'leaves flow with the wind oxigen for the people',\n", + " 'breathe in, breathe out, got a voice speak now',\n", + " 'we here for that «bom dia, salamalekum, ni hao»',\n", + " 'we dance to a million beats',\n", + " 'in millions of streets',\n", + " 'different rivers flow together',\n", + " 'and the wave sets you free',\n", + " 'a million beats',\n", + " 'in millions of streets',\n", + " 'all these rivers splash together',\n", + " 'and the wave sets you free',\n", + " 'jamen tjena det är mackish här, jag reppar för sverige',\n", + " 'kikkar supesr-stilen från bryssel till bergen',\n", + " 'det är inte « alla talar svenska » här, som ni nog märker',\n", + " 'men oavsett språket går flowet rakt in i märgen',\n", + " 'tu sam, eto evo me, daleko al ko doma je',\n", + " 'neki drugi jezik, al od njih me svak razumije',\n", + " 'bez granica, još jedna zvjezdica sto veže me',\n", + " 'dio nečeg velikog, tu sam eto evo me',\n", + " 'por mis fieras ahí fuera que no ven fronteras',\n", + " 'por la música, mi musa, la única que fue sincera',\n", + " 'por las razas y su mezcla, por el verso y su corona',\n", + " 'nos entendemos fijo si hip-hop es el idioma',\n", + " 'te parl com a’ nu’ fedel inginocchiat fra’ me mis l’ali',\n", + " 'senz ‘e te restav inginocchiat sott e’ rav 4',\n", + " 'e’ somiglianz re’ mattun accorcian e distanz',\n", + " 'a’ storia e com nu guaglion ca nun crere restn immortal',\n", + " 'b-boy officiel de bxl',\n", + " 'je vise le ciel, use mes ailes',\n", + " 'et m’envole',\n", + " 'si si galaxie',\n", + " 'diversidad c’est bien ici',\n", + " 'we dance to a million beats',\n", + " 'in millions of streets',\n", + " 'different rivers flow together',\n", + " 'and the wave sets you free',\n", + " 'a million beats',\n", + " 'in millions of streets',\n", + " 'all these rivers splash together',\n", + " 'and the wave sets you free',\n", + " 'paroles rédigées et annotées par la communauté française de rap genius',\n", + " 'gulli gang boy!',\n", + " 'desi yeh, desi woh, desi-desi sab',\n", + " 'par kitne desi hain jo gaano mein apne bolte sach!',\n", + " 'yeh sach ka nanga nach hai',\n", + " 'mithaas ka parda faash hai',\n", + " 'kal kisne dekha jee le',\n", + " 'teri antim toh raaz hai',\n", + " 'umar char, jeb mein jhol ke',\n", + " 'rupaye pade paanch hai',\n", + " 'tere liye woh toffee',\n", + " 'meri mission usse banana aath hai',\n", + " 'dono ko padi laat hai',\n", + " 'farak sirf itna mujhe niche tujhe upar',\n", + " 'bas wohi thodi si alag baat hai',\n", + " 'jo tere sabse khaas hai',\n", + " 'wohi zehreelay sap hai',\n", + " 'aaj dhoondne nikle pyar',\n", + " 'jab teri maa hai tere pass mein',\n", + " 'aata savera jab jhele ga tu ye kaali raatein',\n", + " '59 gully gang chote itihas hai',\n", + " 'gully gang 59 chote itihas hai',\n", + " \"nakli rapper, nakli gangster'on ka sarvnash hai\",\n", + " 'haan seekh ke jee le',\n", + " 'jee ke seekh le kabhi meri baatein',\n", + " 'haan jee ke seekh le',\n", + " 'seekh ke jee le kabhi meri baatein',\n", + " 'thoda sa farak bhai, asli apne taraf bhai',\n", + " 'thoda sa farak, mera hara tera garad bhai',\n", + " 'thoda sa farak main hoon',\n", + " 'har cheez mein saras bhai',\n", + " 'thoda sa alag kyun ke',\n", + " 'tere mein mere mein farak bhai',\n", + " 'thoda sa farak bhai, asli apne taraf bhai',\n", + " 'thoda sa farak, mera hara tera garad bhai',\n", + " 'thoda sa farak main hoon',\n", + " 'har cheez mein saras bhai',\n", + " 'thoda sa alag kyun ke',\n", + " 'tere mein mere mein farak bhai',\n", + " 'main mere maa ke liye jee raha hoon',\n", + " 'main mere maa ke liye jee raha hoon',\n", + " 'haan tumse kya chupana maa',\n", + " 'kabhi ghum mein bhi pee raha hoon',\n", + " 'main mere maa ke liye jee raha hoon',\n", + " 'main mere maa ke liye jee raha hoon',\n", + " 'haan tumse kya chupana maa',\n", + " 'kabhi ghum mein bhi pee raha hoon',\n", + " 'main mere maa ke liye jee raha hoon',\n", + " 'ghum mein bhi pee raha hoon',\n", + " 'sar se toh dheela hoon',\n", + " 'kyun? sadko pe seekha hoon',\n", + " 'woh khel hi nahi hai',\n", + " 'jisme haarke na jeeta hoon',\n", + " 'jo botla hoon lala',\n", + " 'wo main asliyat mein jeeta hoon',\n", + " 'bol kaise maa akele',\n", + " 'thune zaalim dard jhele',\n", + " 'koi sanp koi sapere',\n", + " 'ek dete dunga le re',\n", + " 'ghunton par hai salaam tujhko',\n", + " 'shukriya papa tumne banaya',\n", + " 'khud ko apna baap mujhko',\n", + " 'maara mujhko toda tumne sara kuch toh',\n", + " 'aaj chhod diya uss rahi',\n", + " 'dil ko chahiye tha sahara unko',\n", + " 'kabhi nahi bhule apne bhai log ko',\n", + " 'khud se nahi par tum hi mere bhai log ho',\n", + " 'baaki bahut aate-jaate',\n", + " 'chhote tere saath hai',\n", + " 'chhota time khate',\n", + " 'khote kasame waade',\n", + " 'agar tu khoya hai pyar ke talash mein',\n", + " 'teri maa tere pass hai',\n", + " 'tu kayeke talash mein?',\n", + " ...]},\n", + " 'rock': {'meta': {'train_data': ['voveso in mori mon vandas',\n", + " 'veidos ventos cambon mon verno',\n", + " 'et con papon lomnen',\n", + " 'luxtodos imon siraxta',\n", + " 'suouelo, imon oro',\n", + " 'suouelo, tauson tundac up',\n", + " 'voveso in mori mon vandas',\n", + " 'kuusou genjitsu hazama ni mayoikonde',\n", + " 'acchi no sekai kocchi no sekai mou wake ga wakaranaku natte',\n", + " 'tsumazuita toki ni subete ga tomatte',\n", + " 'musebinaita',\n", + " 'yurusenai kurai jibun wo seme tsuzuketetandesu',\n", + " 'asu ga kuru no wa atarimae janai',\n", + " 'dakara yuragu kimochi mo muri mo nai',\n", + " 'wakariaeta ano toki no kandou',\n", + " 'ima mo wasure wa shinai yo',\n", + " 'ryuukou to jojo ni suitai',\n", + " 'toozakaru hi ni se wo mukekaketa',\n", + " 'mou nidoto furimuki wa shinai darou',\n", + " 'itsumo tsuyogatte senobishite kurushinde itan desho?',\n", + " 'hontou wa kowakutte sabishikattanda',\n", + " 'itsu ni natte sono kimochi ga wakaru you ni natte',\n", + " 'sou tsuyoku nareta ki ga shita no',\n", + " \"i know that we aren't strong\",\n", + " 'but we can take step',\n", + " 'now we can do it',\n", + " 'yurusenai koto no hou ga yoku medatte miete',\n", + " 'kanchigai ya surechigai de toozakaru hitotachi de afurete',\n", + " 'omoikaesu tabi ni subete ga tomatte',\n", + " 'susurinaita',\n", + " 'yurusenai kurai ano koro wo mitsumetetandesu',\n", + " 'itsumo butsukatte kuyashikute tsumazuite itan desho?',\n", + " 'hontou wa tsurakutte nigetakattanda',\n", + " 'itsu ni natte sono kotae ga wakaru you ni natte',\n", + " 'sou mae wo muketa ki ga shita no',\n", + " \"it's sometimes better take detours\",\n", + " 'who are you there just like me?',\n", + " 'who are you there just like me?',\n", + " 'when i nearly refused myself',\n", + " 'when i was doubted and abused',\n", + " 'who are you there just like me?',\n", + " 'who are you there just like me?',\n", + " 'one day you came out from my shadow',\n", + " 'we never wanted',\n", + " 'do what he want',\n", + " 'we never wanted',\n", + " 'do what he want',\n", + " \"he don't know me\",\n", + " 'but made us to dance',\n", + " 'itsumo yorisotte katariatte',\n", + " 'owaranai to omotteta',\n", + " 'eien te kotoba no hontou no imi wa?',\n", + " 'itsumo tsuyogatte senobishite kurushinde itan desho?',\n", + " 'hontou wa kowakutte sabishikattanda',\n", + " 'itsu ni natte sono kimochi ga wakaru you ni natte',\n", + " 'sou tsuyoku nareta ki ga shita no',\n", + " 'itsumo butsukatte kuyashikute tsumazuite itan desho?',\n", + " 'hontou wa tsurakutte nigetakattanda',\n", + " 'itsu ni natte sono kotae ga wakaru you ni natte',\n", + " 'sou mae wo muketa ki ga shita no',\n", + " \"it's sometimes better take detours\",\n", + " 'ah~',\n", + " 'now we can do it',\n", + " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", + " 'jojo!',\n", + " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", + " 'jojo!',\n", + " 'otoko wa damatte star platinum',\n", + " 'ibara no bijon de yatsu wo utsushite',\n", + " 'uchidasu faiā yes, i am!',\n", + " 'otsugi wa doitsu da? ōru kechirase!',\n", + " 'tower, blue moon, strength',\n", + " 'devil, temperance',\n", + " 'emperor to hanged man nya ki wo tsukero!',\n", + " 'nishi e yuke! hayaku yuke! oretachi nya jikan ga nai no da',\n", + " 'zugyuun to yare megyaān to nare',\n", + " 'sabaku no wa oretachi daze!',\n", + " 'ora ora ora ora ora ora ora ora ora ora ora ora ora ora!',\n", + " 'bouken da!',\n", + " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", + " 'jojo!',\n", + " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", + " 'jojo!',\n", + " 'hisomeyo hierophant green',\n", + " 'gin no chariot shutā! odemashi da',\n", + " 'fūru na iggy sand technician',\n", + " 'do you understand?',\n", + " 'yare yare daze!',\n", + " 'empress kara fortune',\n", + " 'justice, lovers, sun, death',\n", + " 'judgement, high priestess iinikui ze!',\n", + " 'nishi e yuke! sorotte yuke! sekai no jubaku o tokihanate',\n", + " 'oretachi ga owaraseru',\n", + " 'hyakunen no kusareen wo!',\n", + " 'ora ora ora ora ora ora ora ora ora ora ora ora ora ora! buttobase!',\n", + " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", + " 'jojo!',\n", + " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", + " 'jojo!',\n", + " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", + " 'jojo!',\n", + " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", + " 'jojo!',\n", + " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", + " 'jojo!',\n", + " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", + " 'jojo!',\n", + " 'yeah',\n", + " 'go west!',\n", + " 'my first story - 終焉レクイエム',\n", + " 'romaji',\n", + " 'when i’ve innocence in my heart, all i see then looks bright',\n", + " 'cause i didn’t know what it is',\n", + " 'there’s nothing about those dreams and lights are also gone',\n", + " 'you took all away with your hands',\n", + " 'kegasa reka mukuna kokoro no naka',\n", + " 'hikari to yami ga mazari atte',\n", + " 'nanika ga kakete iru kanjou ga dekiagatta',\n", + " 'ookina heya no madogiwa de',\n", + " 'chiisana robou no ishi to natte',\n", + " 'kyou kara dare mo inai hibi ga maku o aketa',\n", + " 'what are you looking to find out with your eyes again',\n", + " 'you’re not going to rescue me',\n", + " 'tada bokuhitori dake da karada wareta',\n", + " 'nanni mo shiranai kao shite tatte ita',\n", + " 'anata no soba de',\n", + " 'so why i’m always dying there as your target now',\n", + " 'please tell me the reason for that',\n", + " 'nobody knows about the where abouts of my friends',\n", + " '\"cause you’re not even my friend\"',\n", + " 'totsujo kami no sembetsu no you ni',\n", + " 'maru ka batsu o kimi rarete wa',\n", + " 'sore ni atehamaranai mono wa habuka reta',\n", + " 'ah, kokoro no koe ga shita',\n", + " 'nande konna omoi shiteru no?',\n", + " 'what are you looking to find out with your eyes again',\n", + " \"you're not going to rescue me\",\n", + " 'tada bokuhitori dake ga hitomiwotojiteta',\n", + " 'itrumodori owari o matteita',\n", + " 'nanimo iwazuni',\n", + " 'anohi no kotoba ga zutto mune nisasari',\n", + " 'aienaku natta kizu o nokoshite',\n", + " 'boku o kurushime teru',\n", + " 'itsuka kawarazu owaru hi ga kuru to',\n", + " 'shinji tsuzuke machiwabiteta',\n", + " 'what are you looking to find out with your eyes again',\n", + " \"you're not going to rescue me\",\n", + " 'tada bokuhitori dake da karada wareta',\n", + " 'nanni mo shiranai kao shite tatte ita',\n", + " 'anata no soba de',\n", + " 'step to stack mata tooku made',\n", + " 'kinoubi no hi ga furu mae ni',\n", + " 'step to stack to stop to stock',\n", + " 'kasha wa kyomu kimi e to speed by speed',\n", + " 'kikoeteru ikoeru koe',\n", + " 'speed bai speed ima kimi e to',\n", + " 'big big big big big big foot',\n", + " 'step to stack tada oora o',\n", + " 'bidou da ni sezu todokaseta',\n", + " 'step to stack to sleep to skip',\n", + " 'michi wa kyomu kimi e to sleep to skip',\n", + " 'kikoeteru ikoeru koe',\n", + " 'sleep to skip ima kimi kara',\n", + " 'big big big big big big foot',\n", + " '(step to stack stop to stock)',\n", + " '(speed bai speed sleep to skip)',\n", + " '(step to stack stop to stock)',\n", + " '(speed bai speed sleep to skip)',\n", + " '(step to stack stop to stock)',\n", + " '(speed bai speed sleep to skip)',\n", + " '(big big big big big big foot)',\n", + " 'step to stack mata tooku made',\n", + " 'kinoubi no hi ga furu mae ni',\n", + " 'step to stack to stop to stock',\n", + " 'kasha wa kyomu kimi e to speed by speed',\n", + " 'kikoeteru ikoeru koe',\n", + " 'speed bai speed ima kimi e to',\n", + " 'big big big big big big foot',\n", + " 'gham miyoone do ta cheshmoone ghashanget',\n", + " 'loone karde',\n", + " 'shab too moohaye siyahet',\n", + " 'khoone karde',\n", + " 'do ta chesmoone siyahet',\n", + " 'mese shabhaye mane',\n", + " 'siyahiaye do cheshmet',\n", + " 'mese ghamhaye mane',\n", + " 'vaghti boghz az mojheham payin miyad',\n", + " 'baroon mishe',\n", + " 'seyle gham abadimo viroone karde',\n", + " 'vaghti ba man mimooni tanhayimo',\n", + " 'bad mibare',\n", + " 'do ta cheshmam baroone shaboone karde',\n", + " 'bahar az dastaye man par zado raft',\n", + " 'gole yakh tooye delam javoone karde',\n", + " 'too otagham daram az tanhayi atish migiram',\n", + " 'eshgh shekoofeh tooye in zamooneh karde',\n", + " 'chi bekhoonam?',\n", + " 'javoonim rafte, sedam rafte dige',\n", + " 'gole yakh tooye delam javooneh karde',\n", + " 'chi bekhoonam?',\n", + " 'javoonim rafte, sedam rafteh dige',\n", + " 'gole yakh tooye delam javooneh karde',\n", + " 'gham miyoone do ta cheshmoone ghashanget',\n", + " 'loone karde',\n", + " 'shab too moohaye siyahet',\n", + " 'khoone karde',\n", + " 'do ta chesmoone siyahet',\n", + " 'mese shabhaye mane',\n", + " 'siyahiaye do cheshmet',\n", + " 'mese ghamhaye mane',\n", + " 'vaghti boghz az mojheham payin miyad',\n", + " 'baroon mishe',\n", + " 'seyle gham abadimo viroone karde',\n", + " 'vaghti ba man mimooni tanhayimo',\n", + " 'bad mibare',\n", + " 'do ta cheshmam baroone shaboone karde',\n", + " 'bahar az dastaye man par zado raft',\n", + " 'gole yakh tooye delam javoone karde',\n", + " 'too otagham daram az tanhayi atish migiram',\n", + " 'eshgh shekoofeh tooye in zamooneh karde',\n", + " 'chi bekhoonam?',\n", + " 'javoonim rafte, sedam rafte dige',\n", + " 'gole yakh tooye delam javooneh karde',\n", + " 'chi bekhoonam?',\n", + " 'javoonim rafte, sedam rafteh dige',\n", + " 'gole yakh tooye delam javooneh karde',\n", + " 'what waits for you?',\n", + " \"what's breaking through?\",\n", + " 'nothing for good',\n", + " \"you're sure it's true?\",\n", + " 'eien nante naito iikitte shimattara',\n", + " 'amarinimo sabishikute setsunai deshou',\n", + " 'dare mo ga hontou wa shinjitai kedo',\n", + " 'uragirarere ba fukaku kizu tsuite shimau mono',\n", + " 'towa ga aru sekai ga risou dewa naku',\n", + " 'sore wo shinji tsuzuketeiru sugata',\n", + " 'sore koso bokura ga nozomu beki sekai',\n", + " 'to kizuku koto ga dekita nara',\n", + " 'what will we have?',\n", + " 'believe that time is always forever',\n", + " \"and i'll always be here\",\n", + " 'believe it till the end',\n", + " \"i won't go away\",\n", + " \"and won't say never\",\n", + " \"it doesn't have to be friend\",\n", + " 'you can keep it till the end',\n", + " 'tameshini eien nante nai to ii kirou',\n", + " 'soshitara kibou ya yume wa ikutsu shinu darou?',\n", + " 'sorega sonzai shinai koto no zetsubou to',\n", + " 'sonzai suru koto no zankoku wo',\n", + " 'souzou shite mite boku wa sukoshi mata',\n", + " 'mekuru peji no te wo tomeru',\n", + " 'how will we have?',\n", + " 'believe that time is always forever',\n", + " \"and i'll always be here\",\n", + " 'believe it till the end',\n", + " \"i won't go away\",\n", + " \"and won't say never\",\n", + " \"it doesn't have to be friend\",\n", + " 'you can keep it till the end',\n", + " 'whoa, oh oh oh...',\n", + " 'whoa, oh oh oh...',\n", + " 'whoa, oh oh oh...',\n", + " 'whoa, oh oh...',\n", + " 'believe that time is always forever',\n", + " \"and i'll always be here\",\n", + " 'believe it till the end',\n", + " \"i won't go away\",\n", + " \"and won't say never\",\n", + " \"it doesn't have to be friend\",\n", + " 'you can keep it till the end',\n", + " 'believe that time is always forever',\n", + " \"and i'll always be here\",\n", + " 'believe it till the end',\n", + " \"i won't go away\",\n", + " \"and won't say never\",\n", + " \"it doesn't have to be friend\",\n", + " 'you can keep it till the end',\n", + " 'keep it till the end',\n", + " 'you can keep it till the end',\n", + " '(and time will stay)',\n", + " 'time goes by',\n", + " 'you can keep it till the end',\n", + " 'suibotsutoshi no detario kamisama no iu magyaku no hou e',\n", + " 'ariawase no jinseida koko ni wa mou rakuen wa nai kara',\n", + " 'jibun no kubi o kakaete seijin ga aruite iku',\n", + " 'hiretsu ni toitadasu nda daremo ga toitadasu you ni',\n", + " 'where is the paradise?',\n", + " 'where is the paradise?',\n", + " 'where is the paradise?',\n", + " 'aki tarinai',\n", + " 'suibotsutoshi no amerio kamisama ni shitagatte iku',\n", + " 'namikaze o tatenu you ni tairetsu o midasanai you ni',\n", + " 'this is a new paradigm',\n", + " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", + " 'kakushi motta kaadoo',\n", + " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", + " 'tsukitsukero sekai ni',\n", + " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", + " 'hajikareta dooka ga',\n", + " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", + " 'machi ni matta aizu da',\n", + " 'liberate all fenced area',\n", + " 'outwit all the mass media',\n", + " 'oh, break into there with maniacs',\n", + " \"i don't need vague criteria\",\n", + " 'an all-out escape',\n", + " 'this is an all-out escape',\n", + " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", + " 'kakushi motta kaadoo',\n", + " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", + " 'tsukitsukero sekai ni',\n", + " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", + " 'hajikareta dooka ga',\n", + " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", + " 'machi ni matta aizu da',\n", + " 'liberate all fenced area',\n", + " 'outwit all the mass media',\n", + " 'break into there with maniacs',\n", + " \"i don't need vague criteria\",\n", + " 'an all-out escape',\n", + " 'this is an all-out escape',\n", + " 'i. orfeus',\n", + " 'ii. answer',\n", + " 'iii. orfeus',\n", + " 'iv. answer',\n", + " 'v. pupilla',\n", + " 'vi. tommy',\n", + " 'vii. pupilla',\n", + " 'viii. answer',\n", + " 'ix. the bridge',\n", + " 'x. euridice',\n", + " 'xi. dayglow',\n", + " 'xii. endless road',\n", + " 'xiii. answer',\n", + " 'xiv. orfeus',\n", + " 'xv. euridice',\n", + " 'sono hodokesou na te o nigirinaoshite',\n", + " 'eien yori tsuyoku yes to yes no in the moment',\n", + " 'wantacchi no messenjaa kuuchuusen no kanjouron',\n", + " 'sore wa insutanto mou imi no nai cry',\n", + " 'nansensu na andaasutando ma ni ukenai kuse tsukete',\n", + " 'sonna suruu sukiru hora honne o kill',\n", + " 'tatoe kotoba nakutomo tsutaerareru this one message',\n", + " 'fureai tsutaeatta shijima no omoi hanasanai you ni',\n", + " 'sono hodokesou na te o nigirinaoshite',\n", + " 'eien yori tsuyoku yes to yes no in the moment',\n", + " 'shinjiru kokoro ga kizuna ni kawaru',\n", + " 'we will be tight and tight',\n", + " 'mirai e to tsunagou oh',\n", + " 'guuzen ni machigatta boku no disukomyunikeeshon',\n", + " 'ura de warau wa uwabe no friends',\n", + " 'nanimo mienai yoru ni sagashidashita heart is passage',\n", + " 'yatto tobira o akete kawashiau omoi nakidasu you ni',\n", + " 'ima togireta shingou o tsunagiawaseta',\n", + " 'myakuraku yori meihaku sos wa in a hurry',\n", + " 'futatsu no kodoku o hitotsu ni tabane',\n", + " 'we will go on and on and on',\n", + " 'dokomademo tsumugou',\n", + " 'ano wakariaenu mama surechigau toki no',\n", + " 'tsumetasa o bokura shitteiru',\n", + " 'hodokesou na te o nigirinaoshite',\n", + " 'eien yori tsuyoku yes to yes no in the moment',\n", + " 'shinjiru kokoro ga kizuna ni kawaru',\n", + " 'we will be tight and tight',\n", + " 'mirai e to tsunagou oh',\n", + " 'mune ni hibiita kanjou no denpa',\n", + " 'yes to kotaeta mirai sae tsumugou oh',\n", + " 'what am i gonna do?',\n", + " 'if my last heartbeat’s going to',\n", + " 'come in a few minutes',\n", + " 'how do i live my last?',\n", + " 'yurusenai hito o sukoshi yurushite',\n", + " 'iyai na hito o sukoshi sukininari',\n", + " 'soshite saigo ni jibun no koto',\n", + " 'ai suru koto wa dekiru no kana',\n", + " 'try to make it now',\n", + " 'i don’t want anymore regret',\n", + " '‘cause time’s never back',\n", + " 'hodoke nai you ni kutsu himo musubi',\n", + " 'tomaru koto no nai you ni to futatabi hashiru',\n", + " 'ikiteru kanji ga sukoshi de moshitemasuka',\n", + " 'jimonji tou ni mayotte',\n", + " 'hidari mune ni kono te atete mita',\n", + " 'hitotsu me no kodou ga naki sakebu',\n", + " 'yoin o nokoshi futatsu me ga naru',\n", + " 'sore o saigo ni tsugi ni naru hazuno',\n", + " 'oto wa iki o hisometa',\n", + " 'try to make it now',\n", + " 'i don’t want anymore regret',\n", + " '‘cause time’s never back',\n", + " 'hodoke nai you ni kutsu himo musubi',\n", + " 'tomaru koto no nai you ni to futatabi hashiru',\n", + " 'all you want to do is not always',\n", + " 'what you have in your mind',\n", + " 'can’t you see something new',\n", + " 'coming on your way?',\n", + " 'try to teach you how',\n", + " 'i don’t want anymore hatred',\n", + " '‘cause no one ever sucks!',\n", + " 'kimi ga boku ni oshiete kureta',\n", + " 'kyou to iu hi ni dare ka o suki ni naru koto',\n", + " 'atari mae ni shiteta hazu no kokyu ga moshimo',\n", + " 'nokoriwazu ga kazufun datoshitara',\n", + " 'boku wa hatashite...',\n", + " 'kanata ni sugisari shi hibi',\n", + " 'aruki tzusuketa his/story',\n", + " 'chikatta fearless kudakete hopeless',\n", + " 'nani wo e ushinatta darou',\n", + " 'soredemo kodou ga',\n", + " 'kirameki wo motome',\n", + " 'mihatenu yume e izanau',\n", + " 'the land is cloaked in deepest blue',\n", + " 'the shadow of eagles across the moon',\n", + " 'itami ya kizuato wa kako ni sutete',\n", + " 'kodoku to iu na no yoroi',\n", + " 'kokoro wo kakushita his/story',\n", + " 'nareau ondo shireba period',\n", + " 'jiyuu wo ushinau dake',\n", + " 'soredemo yoki sezu kanjita nukumori',\n", + " 'furikiri ashita wo sagasu',\n", + " 'my life goes by like passing clouds',\n", + " 'departed the days. i will be proud',\n", + " 'jibun no ashiato ga rekishi ni naru',\n", + " 'the land is cloaked in deepest blue',\n", + " 'the shadow of eagles across the moon',\n", + " 'itami ya kizuato wa kako ni sutete',\n", + " 'aa..aa',\n", + " 'sur ghoome chakkar khaye',\n", + " 'dil dil se takkar khaye',\n", + " 'arey main khoya ki tu..',\n", + " 'kho gaya..',\n", + " 'arey haan..',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'sur ghoome chakkar khaye',\n", + " 'dil dil se takkar khaye',\n", + " 'arey main khoya ki tu..',\n", + " 'kho gaya..',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'sur ghoome chakkar khaye',\n", + " 'dil dil se takkar khaye',\n", + " 'arey main khoya ki tu..',\n", + " 'kho gaya..',\n", + " 'jo naa hai dikhta jaye',\n", + " 'jo hai woh dikh na paye',\n", + " 'arey aankhon ko yeh',\n", + " 'kya ho gaya',\n", + " 'ho bin chabi khul jaye',\n", + " 'masti ka taala',\n", + " 'chori lage joru',\n", + " 'jora lage saala',\n", + " 'panghat pe naache',\n", + " 'ha panghat pe nache',\n", + " 'nache re nache madhubala',\n", + " 'panghat pe nache',\n", + " 'nache re nache madhubala',\n", + " 'panghat pe nache',\n", + " 'nache re nache madhubala',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'haan.. dil ke hai',\n", + " 'chakke choote chokre',\n", + " 'latkon jhatkon se',\n", + " 'ab na rok re',\n", + " 'haan tu toh naino',\n", + " 'mein mere chaa raha',\n", + " 'chutti tujhko',\n", + " 'tu chahye jo kare',\n", + " 'haan..',\n", + " 'ab akal akeli hatke re',\n", + " 'dil sadak sadak',\n", + " 'sur patke re',\n", + " 'yeh baar baar hi',\n", + " 'tujhpe atke re beliya',\n", + " 'ab akal akeli hatke re',\n", + " 'dil sadak sadak',\n", + " 'sur patke re',\n", + " 'yeh baar baar hi',\n", + " 'tujhpe atke re beliya',\n", + " 'ho dil ne chahat ka',\n", + " 'sikka aisa uchala',\n", + " 'sabke galon pe lage',\n", + " 'mukjhlo til kaala',\n", + " 'panghat pe naache',\n", + " 'hey..',\n", + " 'ha panghat pe nache',\n", + " 'nache re nache madhubala',\n", + " 'panghat pe nache',\n", + " 'nache re nache madhubala',\n", + " 'panghat pe nache',\n", + " 'nache re nache madhubala',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'daga dum daam',\n", + " 'daga dagadidam',\n", + " 'arey thak gaye kya',\n", + " 'arey bhia up aaye',\n", + " 'aur saala dhol nahi bajaa',\n", + " 'toh kya khaak up aaye',\n", + " 'arey..oh bhia raaja',\n", + " 'bajega tera baaja',\n", + " 'banega dulha raaja',\n", + " 'tu aaja jaldi aaja piya',\n", + " 'ho bin chabi khul jaye',\n", + " 'masti ka taala',\n", + " 'chori lage joru',\n", + " 'jora lage saala',\n", + " 'panghat pe naache',\n", + " 'panghat pe panghate pe',\n", + " 'ha panghat pe nache',\n", + " 'nache re nache madhubala',\n", + " 'panghat pe nache',\n", + " 'nache re nache madhubala',\n", + " 'panghat pe nache',\n", + " 'nache re nache madhubala',\n", + " 'panghat pe nache',\n", + " 'nache re nache madhubala',\n", + " 'ho..',\n", + " 'madhubala',\n", + " 'madhubala',\n", + " 'madhubala',\n", + " 'madhubala..',\n", + " \"(we've always been this to free all this pain)\",\n", + " \"(we've always been this to free all this pain)\",\n", + " 'booooaaaaahh!',\n", + " 'booooaaaaahh!',\n", + " 'benri benri banzai benri benri banzai',\n", + " 'benri benri banzai ningen',\n", + " 'benri benri banzai benri benri banzai',\n", + " 'benri benri banzai ningen',\n", + " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", + " 'biribiri ikarasu ka? ningen',\n", + " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", + " 'biribiri ikarasu ka? ningen',\n", + " \"what's up fuanzai ippai\",\n", + " 'hanzai kienai towa ni',\n", + " \"what's up fuanzai ippai (urami ni wana dare daun?)\",\n", + " \"what's up fuanzai ippai\",\n", + " 'hanzai kienai towa ni',\n", + " \"what's up fuanzai ippai\",\n", + " 'ikiru imi tsumaran ka? ikiru imi tsumaran ka?',\n", + " 'ikiru imi tsumaran ka? ningen',\n", + " 'ikiru imi tsumaran ka? ikiru imi tsumaran ka?',\n", + " 'ikiru imi tsumaran ka? ningen',\n", + " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", + " 'biribiri ikarasu ka? ningen',\n", + " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", + " 'biribiri ikarasu ka? ningen',\n", + " \"what's up fuanzai ippai\",\n", + " 'hanzai kienai towa ni',\n", + " \"what's up fuanzai ippai (urami ni wana dare daun?)\",\n", + " \"what's up fuanzai ippai\",\n", + " 'hanzai kienai towa ni',\n", + " \"what's up fuanzai ippai\",\n", + " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", + " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", + " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", + " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", + " 'hey hey! ningen sanka! hey hey! ningen fuanka!',\n", + " 'hey hey! ningen sanka onorera eien ningen fuanka',\n", + " 'aa ningen...',\n", + " 'bunmei yande fuantei',\n", + " 'mirai wa sukuwaren howaito hausu',\n", + " 'zensekai ni warning!',\n", + " 'issaigassai ni kaikaku life',\n", + " 'benri benri banzai benri benri banzai',\n", + " 'benri benri banzai ningen',\n", + " 'benri benri banzai benri benri banzai',\n", + " 'benri benri banzai ningen',\n", + " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", + " 'biribiri ikarasu ka? ningen',\n", + " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", + " 'biribiri ikarasu ka? ningen',\n", + " \"what's up fuanzai ippai\",\n", + " 'hanzai kienai towa ni',\n", + " \"what's up fuanzai ippai (urami ni wana dare daun?)\",\n", + " \"what's up fuanzai ippai\",\n", + " 'hanzai kienai towa ni',\n", + " \"what's up fuanzai ippai\",\n", + " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", + " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", + " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", + " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", + " 'hey hey! ningen sanka! hey hey! ningen fuanka!',\n", + " 'hey hey! ningen sanka onorera eien ningen sanka wameku saga',\n", + " 'henken-inken ningen funda ugokidase ore fight',\n", + " 'teki na seisai no kiba kara',\n", + " 'tenteki no sonzai wo tatsu',\n", + " 'tenkeiteki na mesaki no yoku kara',\n", + " 'chienji dekinai koku',\n", + " 'manuke boke no sensouron hibou nikenasou',\n", + " 'manuke boke no sensouron hibou nikenasou',\n", + " 'manuke boke no sensouron hibou nikenasou',\n", + " 'manuke boke no sensouron hibou nikenasou',\n", + " 'hey hey! ningen sucker! aa ningen... ningen fucker!',\n", + " 'hey hey! ningen sucker! aa ningen... ningen fucker!',\n", + " 'hey hey! ningen sucker! aa ningen... ningen fucker!',\n", + " 'hey hey! ningen sucker! aa ningen... ningen fucker!',\n", + " \"what's up people!\",\n", + " \"what's up people!\",\n", + " \"what's up people!\",\n", + " \"what's up people!\",\n", + " 'nijuu-do keisha no kouei apaato',\n", + " 'modan manshon guddo kuriin ribingu',\n", + " 'wan ruumu nagaya no biggu famirii',\n", + " 'oojinushi no koinobori',\n", + " 'hey! you this song is pop kameari pop',\n", + " 'hey! you this song is pop kameari pop',\n", + " 'puroguresshibu na kyouiku shisutemu',\n", + " 'kodomo saakuru tengoku',\n", + " 'pta no ojichan ni',\n", + " 'boku no mama wa netorareta',\n", + " 'hey! you this song is pop kameari pop',\n", + " 'hey! you this song is pop kameari pop',\n", + " 'hey! you this song is pop kameari pop',\n", + " 'hey! you this song is pop kameari pop',\n", + " 'sensaku-zukina juumin ego',\n", + " 'shiranu soburi no juumin ego',\n", + " 'shinsetsu teinei juumin ego',\n", + " 'fushinsetsuna juumin ego',\n", + " 'hey! you this song is pop kameari pop',\n", + " 'hey! you this song is pop kameari pop',\n", + " 'hey! you this song is pop kameari pop',\n", + " 'hey! you this song is pop kameari pop',\n", + " 'ego, ego, ego ego, ego ego',\n", + " 'ego, ego, ego ego, ego ego...',\n", + " 'adorenarin baramaki sutando no ningen tsumarutsumaru',\n", + " 'isu kette benchi neso beru baka bakka',\n", + " 'kusuriyubi nobashi ta fo^kubo^ru ucchi ya daremo',\n", + " 'ashidori furafura ba^bon to anaruuisuki^',\n", + " 'bo^ru! zouo! sutoraiku!',\n", + " 'mr. appa^ batta^ box kamaeru shuryou ( don )x2',\n", + " 'we are the ru^rubukku sanshin kaishingeki',\n", + " 'fubuki ku kirisame blood blood ba^bon to anaruuisuki^',\n", + " 'anaru . uisuki^ . ponse ( ponse !)x4',\n", + " \"yeah! let's go!\",\n", + " 'adorenarin baramaki sutando no ningen tsumarutsumaru',\n", + " 'isu kette benchi neso beru baka bakka',\n", + " 'kusuriyubi nobashi ta fo^kubo^ru ucchi ya daremo',\n", + " 'ashidori furafura ba^bon to anaruuisuki^',\n", + " 'fightt! fight! pureibo^ru!',\n", + " 'mr. appa^ batta^ box kamaeru shuryou ( don )x2',\n", + " 'we are the ru^rubukku sanshin kaishingeki',\n", + " 'fubuki ku kirisame blood blood ba^bon to anaruuisuki^',\n", + " 'anaru . uisuki^ . ponse ( ponse !)x4',\n", + " 'yeah! let’s go!',\n", + " 'takanaru kodou de tainai no saibou ga 113 bai ni sae teyuku',\n", + " 'purasu ka? mainasu ka? senbatsu no hana kaika',\n", + " 'bakkuho^^^mu! ponse bakkuho^^^mu!',\n", + " 'mijika ni aru mono',\n", + " 'tsune ni ki wo tsuketeinai to',\n", + " 'amari ni chikasugite',\n", + " 'miushinatte shimaisou',\n", + " 'anata ga saikin taiken shita',\n", + " 'shiawase wa ittai nan desuka',\n", + " 'megumare sugiteite',\n", + " 'omoidasenai kamo',\n", + " 'ima koko ni iru koto',\n", + " 'iki wo shiteiru koto',\n", + " 'tade sore dake no koto ga',\n", + " 'kiseki da to kizuku',\n", + " 'mijika ni aru mono',\n", + " 'tsune ni ki wo tsuketeinai to',\n", + " 'amari ni chikasugite',\n", + " 'miushinatte shimaisou',\n", + " 'you know the closer you get to something',\n", + " 'the tougher it is to see it',\n", + " \"and i'll never take it for granted\",\n", + " \"let's go!\",\n", + " 'hitodasuke wo gizen to',\n", + " 'yobu yatsura mo iru kedo',\n", + " 'shinjiru no mo utagau no mo',\n", + " 'hito sorezore dakara',\n", + " 'tatoe kari ni sore ga',\n", + " 'gizen de atta toshite mo',\n", + " 'dareka wo sukueta nara',\n", + " 'soryamushiro nani yori mo zutto',\n", + " 'oitsuzuketekita yume',\n", + " 'akiramezuni susume yo nante',\n", + " 'kirei koto wo ieru hodo',\n", + " 'nanimo dekichainai kedo',\n", + " 'hitonigiri no yuuki wo mune ni',\n", + " 'ashita wo ikinuku tame ni',\n", + " \"and i'll never take it for granted\",\n", + " \"let's go!\",\n", + " 'mijika ni arumono',\n", + " 'tsune ni ki wo tsuketeinai to',\n", + " 'amari ni chikasugite',\n", + " 'miushinatte shimaisou',\n", + " 'you know the closer you get to something',\n", + " 'the tougher it is to see it',\n", + " \"and i'll never take it for granted\",\n", + " 'oitsuzuketekita yume',\n", + " 'akiramezuni susume you nante',\n", + " 'kirei koto wo ieru hodo',\n", + " 'nanimo dekichainai kedo',\n", + " 'hitonigiri no yuuki wo mune ni',\n", + " 'ashita wo ikinuku tame ni',\n", + " \"and i'll never take it for granted\",\n", + " \"let's go!\",\n", + " 'korean:',\n", + " '깊은 산속 작은 옹달샘 그 옆에 나',\n", + " '나쁜 마음 한입 베물고 죽어버렸네',\n", + " '긴 또 긴',\n", + " '밤이 날 찾아오면',\n", + " '참지 않을래 눈을 감고',\n", + " '깊은 산속 작은 옹달샘 그 옆에 나',\n", + " '나 덕분에 이제 그 누가 와서 먹나요',\n", + " 'romanized:',\n", + " 'gipeun sansok jageun ongdalsaem keu yeope na',\n", + " 'nappeun ma.eum hanib bemulgo jugeobeoryeotne',\n", + " 'gin tto gin',\n", + " 'babi nal chajaomyeon',\n", + " 'chamji anheullae nuneul gamgo',\n", + " 'gipeun sansok jageun ongdalsaem keu yeope na',\n", + " 'na deokbune ije keu nuga waseo meoknayo',\n", + " 'translation to english:',\n", + " 'next to a deep forest and a little spring, i',\n", + " 'was bitten by sin',\n", + " 'when a long night finds me',\n", + " \"i don't want to fight it any longer, with my eyes closed\",\n", + " 'next to a deep forest and a little moon, i...',\n", + " 'who will get bitten because of me?',\n", + " 'kioku no hakaba ni baramakare ta maide',\n", + " '\"seimei no dust\" \"kando no meikyu\"',\n", + " 'tsumori tsumoru hone ni namida karete',\n", + " 'usupperana memorial to kashita',\n", + " '\"kuso kusai benjo koso my home\"',\n", + " 'fute kusareru life kara no maigo!',\n", + " 'mouretsu kyu kokan ni dead ball',\n", + " 'shittai kettobashite geppu dasu bomb!',\n", + " 'buiikissu!',\n", + " 'temeera buikissu!',\n", + " 'i wanna buikissu!',\n", + " 'temeera buikissu!',\n", + " 'buiikissu!',\n", + " 'kisama-ra buikissu!',\n", + " 'kisama-ra buikissu!',\n", + " 'kisama-ra buikissu!',\n", + " \"it's back!\",\n", + " \"it's all with him now!\",\n", + " 'bite back!',\n", + " 'senbetsu vip member ni',\n", + " 'close up peacemaker ring!',\n", + " 'hakaana horu blog neet eien kai beginner',\n", + " 'uramu imi wanee kurai akuma friends wo',\n", + " 'hametsu tourai fry! hai meguru meku road',\n", + " 'buiikissu!',\n", + " 'temeera buikissu!',\n", + " 'i wanna buikissu!',\n", + " 'temeera buikissu!',\n", + " 'buiikissu!',\n", + " 'kisama-ra buikissu!',\n", + " 'kisama-ra buikissu!',\n", + " 'kisama-ra buikissu!',\n", + " 'mouju domesto les paul de hurricane',\n", + " 'anraku yuurei renchuu wa bessekai bourei',\n", + " 'mochuu no gesuto reikon de hai ningen',\n", + " 'yo wa hisan world \"misute ren!\"',\n", + " 'noumiso tsuneni furuwasate',\n", + " 'ara-arato unmei ni somuku',\n", + " 'mou isso ore ni uma retanara',\n", + " 'kimi wo buiikikaesu!',\n", + " 'shikyuu nippon jibaku jiki massatsu',\n", + " 'chikyuu no kasu to kasu ka? itsu kawaru?',\n", + " 'shikyuu nippon jibaku jiki massatsu',\n", + " 'chikyuu no kasu to kasu ka? itsu kawaru?',\n", + " 'son life kara maiagare maigo',\n", + " 'zanpai kara moetare my soul',\n", + " 'saa, sekasuze bokera kids!',\n", + " 'shinzou ni nagashikomu \"rock \\'n bomb!\"',\n", + " 'buiikissu!',\n", + " 'temeera buikissu!',\n", + " 'i wanna buikissu!',\n", + " 'temeera buikissu!',\n", + " 'buiikissu!',\n", + " 'kisama-ra buikissu!',\n", + " 'kisama-ra buikissu!',\n", + " 'kisama-ra buikissu!',\n", + " 'mouju domesto les paul de hurricane',\n", + " 'anraku yuurei renchuu wa bessekai bourei',\n", + " 'mochuu no gesuto reikon de hai ningen',\n", + " 'yo wa hisan world \"misute ren!\"',\n", + " 'noumiso tsuneni furuwasate',\n", + " 'ara-arato unmei ni somuku',\n", + " 'mou isso ore ni uma retanara',\n", + " 'kimi wo buiikikaesu!',\n", + " 'noumiso tsuneni furuwasate',\n", + " 'ara-arato unmei ni somuku',\n", + " 'mou isso ore ni uma retanara',\n", + " 'kimi wo buiikikaesu!',\n", + " 'kimi wo buiikikaesu!',\n", + " 'i was harassed by departed spirit',\n", + " 'suicidal diseases',\n", + " 'purgatory hunted down me',\n", + " 'genei de sae mare de wa nai, tettei sareta',\n", + " 'seisandai ni kazarareta',\n", + " 'mekke yaku ni sotto tsutaeru',\n", + " 'the curse of vlad tepes',\n", + " 'hinsou de gebita midarini makka na kagaribi boroboro okoru',\n", + " 'nietagiru zou massakasamani nejireta',\n", + " 'shinde son? gokumon ni uso wo, meido ni kou deguchi',\n", + " 'meguri meguru',\n", + " 'shi no ryouiki, towa no yami ni',\n", + " 'nemu same ga, yoiyami wo kurai',\n", + " 'bloodthirsty nightmare lullaby',\n", + " 'hinsou de gebita ran makka na kagaribi boroboro okoru',\n", + " 'nietagiru zou massakasama ni nejireta',\n", + " 'shinde son? gokumon ni uso wo meido ni kou koukou',\n", + " 'meguri hiiroru',\n", + " 'ma gu ra a ba ra do gu ra gorori',\n", + " 'the curse of vlad tepes',\n", + " 'i was harassed by departed spirit',\n", + " 'suicidal diseases',\n", + " 'purgatory hunted down me',\n", + " 'genei de sae mare de wa nai, tettei sareta',\n", + " 'seisandai ni kazarareta',\n", + " 'mekke yaku ni sotto tsutaeru',\n", + " 'iyaiya nomikomu kurau',\n", + " 'أشهد أن لا إله إلا الله',\n", + " 'aeshmem, akhem, âtrem, âpem',\n", + " 'aeshmem',\n", + " 'ahumca, mahrkăi, cinmănahe, aeshmem',\n", + " 'akhem',\n", + " 'love and hate, lust and pain',\n", + " 'love = pain',\n", + " 'war and pain, life and chain',\n", + " 'life = pain',\n", + " 'ahura mazdā, aŋra mainiuu',\n", + " 'ahura mazdā, aŋra mainiuu',\n", + " 'aeshmem, akhem, atrem, apem',\n", + " 'aeshmem',\n", + " 'free and slave, whip and reign',\n", + " 'free = slave',\n", + " 'sin and faith, desire and flame',\n", + " 'sin = flame',\n", + " 'ahura mazdā, aŋra mainiuu',\n", + " 'love and hate, lust and pain',\n", + " 'love = pain',\n", + " 'war and pain, life and chain',\n", + " 'life = pain',\n", + " 'love and hate, lust and pain',\n", + " 'love = pain',\n", + " 'war and pain, life and chain',\n", + " 'life = pain',\n", + " 'free and slave, whip and reign',\n", + " 'free = slave',\n", + " 'sin and faith, desire and flame',\n", + " 'sin = flame',\n", + " 'then they start singing a ladadalakala',\n", + " 'then theh star singa a whadaledkawha',\n", + " 'tha maey sens singin madelakewegh',\n", + " 'the when saehns amaaakahmaaha',\n", + " '(sung over chorus)',\n", + " 'maaahh ahh hahh',\n", + " 'maaahh ahh hahh',\n", + " 'daaahh ahh hahh',\n", + " 'maahh ahh ha ahh',\n", + " 'then they start singing a ladadalakala',\n", + " 'then theh star singa a whadaledkawha',\n", + " 'tha maey sens singin madelakewegh',\n", + " 'the when saehns amaaakahmaaha',\n", + " 'maaahh ahh hahh',\n", + " 'maaahh ahh hahh',\n", + " 'daaahh ahh hahh',\n", + " 'maahh ahh ha ahh',\n", + " 'tadashii koto nante nanimo nai kono sekai de',\n", + " 'tadasou to shiteiru yatsu wa shiru kagiri wa gizensha de',\n", + " 'konna bokura demo wakaru antara no sono koudou wa',\n", + " 'dou mite mo kudaranai tagai no kizu no nameai de',\n", + " 'toki ni hito atarimae wo haki chigaeteru koto ga aru',\n", + " 'sore wo kidzukasete kureru no wa',\n", + " \"maybe, it's more simple thing\",\n", + " 'tsukiakari yo ima terase! machigaesou na bokura wo',\n", + " 'hitasura terashi tsudzukete korobanu you ni to',\n", + " 'bokura wo itsumo izanau tadashii mirai no hikari wa',\n", + " 'neon ya gaitou janakute',\n", + " 'yoru ni dake saku manmarui mangetsu',\n", + " \"hey, mr. crazy, don't you think?\",\n", + " 'wakaranaku natta bokutachi wa',\n", + " 'dare wo shinyou shite dare wo kizu tsukerya ii no?',\n", + " 'kirawarete koritsu suru yori',\n", + " 'kiratte teki tsukuru hou ga',\n", + " 'ima no ima made wa sukoshi raku nanda so omotteita',\n", + " 'tsukiakari yo ima terase! machigaesou na bokura wo',\n", + " 'hitasura terashi tsudzukete mayowanu you ni to',\n", + " 'bokura wo itsumo izanau tadashii mirai no hikari wa',\n", + " 'neon ya gaitou janakute',\n", + " 'yoru ni dake saku manmarui mangetsu',\n", + " 'arifureta mono no sei de yogosareta kono kyuutai ni',\n", + " 'sore wa bokura ga umareru mae kara',\n", + " 'se wo mukezu ni hikari wo atae tsudzukete kureteita!',\n", + " 'zetsubouteki na kono bokura ni',\n", + " 'bokura wa mada kuchitenai sa machigaete mo kusaranai sa',\n", + " 'dore dake saki aru bokura ni kuchi wo hasamu tsumori?',\n", + " 'tsukiakari yo ima terase! uso darake no kono machi wo',\n", + " 'zenbu wo sarake dasasete awateru kao ga mitai',\n", + " 'sore demo awatezu ni mada reisei wo yosoou yatsu ni wa',\n", + " '\"kawaisou ni\" to hitokoto',\n", + " 'mimimoto de sasaite waratte yaru',\n", + " '\"for my love, i\\'ll bet\"',\n", + " 'inochi koso o juudan ni',\n", + " 'kakeru straight bet',\n", + " '\"now have a seat\"',\n", + " 'kare wa itta sagesumu shisen de',\n", + " 'ihou na ozzu',\n", + " 'hametsu ni wa choushou o',\n", + " 'rasuto kooru ga aoru',\n", + " 'this 1 chip no shoubu o',\n", + " '\"for my love , i\\'ll bet\"',\n", + " 'ganbou ariki no dasan ja',\n", + " 'kachi wa arienai',\n", + " '\"now take this. my life\"',\n", + " 'inochi koso o dangan ni',\n", + " 'saa ruuretto maware',\n", + " 'watashi o warau ga ii',\n", + " '\"no more bets\"',\n", + " 'asobu booru wa dareka no you',\n", + " 'unmei nante',\n", + " 'guuzen no kyoshoku',\n", + " 'kuiai o isogu',\n", + " 'shinda me no kemono yo',\n", + " '\"never be afraid\"',\n", + " 'kanjou nando kometemo',\n", + " 'paasento wa agaranai',\n", + " '\"believe in my choice\"',\n", + " 'junsui de birei na shoubu o',\n", + " 'saa ruuretto tomare',\n", + " 'hijou ni erabu ga ii',\n", + " 'jajji wa tada aenaku',\n", + " 'haisha wa kie shousha niwa ah',\n", + " 'tsugi ga matteiru',\n", + " 'soshite ruuretto mawaru',\n", + " 'shouri sae yurusazu',\n", + " '\"for my love, i\\'ll bet\"',\n", + " 'ichido suteta inochi ni',\n", + " 'agaite wa ikenai',\n", + " '\"now take this. my life\"',\n", + " 'isagiyoku utsukushiku',\n", + " 'saa ruuretto maware',\n", + " 'watashi o warau ga ii',\n", + " 'tatazumu ichimai no chippu',\n", + " 'yuzuru koto naku hitotsu o mamoru',\n", + " 'ibitsu ni kuruu haguruma no sono chuushin de',\n", + " '\"i\\'ll bet...\"',\n", + " 'aaj botlan khullan do',\n", + " 'daaru shaaru ghullan do',\n", + " 'whisky da peg laga ke..',\n", + " 'saari duniya bhullan do',\n", + " 'party all night',\n", + " 'party all night',\n", + " 'party all night',\n", + " 'we do party all night',\n", + " 'sun lo sari duniya waalon',\n", + " 'jitna bhi tum zor laga lo',\n", + " 'karenge party sari raat',\n", + " 'gaand mein dum hai to band karva lo',\n", + " 'sun lo sari duniya waalon',\n", + " 'jitna bhi tum zor laga lo',\n", + " 'karenge party sari raat',\n", + " 'gaand mein dum hai to band karva lo',\n", + " 'aaj botlan khullan do',\n", + " 'daaru shaaru ghullan do',\n", + " 'whisky da peg laga ke..',\n", + " 'saari duniya bhullan do',\n", + " 'bajaate raho (sabki)',\n", + " 'bajaate raho (sabki)',\n", + " 'bajaate raho (sabki)',\n", + " 'bajaate raho..',\n", + " 'jisne bhi party hai karni',\n", + " 'aa jao mere ghar ke bheetar',\n", + " 'daaru, liquor, khaane ko hai murga teetar',\n", + " 'noida, gurgaon, dilli ki chhoriyan aayi hain',\n", + " 'saath mein yo yo ki cdiyaan bhi laayi hain',\n", + " 'sawaari saman ki, ib khud zimmedar hain',\n", + " 'kar lo party sari raat, kal itwaar hai',\n", + " 'music bajega loud, to aunty police bula legi',\n", + " 'ib aunty ne ja ke keh do',\n", + " 'yeh party yun hi chalegi',\n", + " 'aunty police bula legi',\n", + " ...]},\n", + " 'data': [':',\n", + " 'yubisaki no mada tsumasaki made',\n", + " 'todoka nai hi-to',\n", + " \"fuan shin'ke isho moso en'cho\",\n", + " 'darkness in my room',\n", + " 'kissaki no muku hokosaki mata',\n", + " 'nerawa reru hibi',\n", + " \"kyodo fushin gen'cho sai kakucho\",\n", + " ':',\n", + " 'write down his world',\n", + " 'kono peji wa kotoba no firuta kemura wazu',\n", + " 'write down his mind',\n", + " 'egaku furezu wa kokoro no busuta nabigeita?',\n", + " 'mizusaki no mada mi nu michi made',\n", + " \"fukuran da bijon kojoshin kocho so shin'koccho\",\n", + " 'imagination is good',\n", + " 'yu kisaki no go zero emu saki ni wa',\n", + " \"1 0 0 bun'no ichi no kabe kysoshin jun'cho wabi shin'jo\",\n", + " ':',\n", + " 'write down his world',\n", + " 'kono peji wa kotoba no firuta kemura wazu',\n", + " 'write down his mind',\n", + " 'egaku furezu wa kokoro no purorogu epirogu kono mama nemure nai',\n", + " ':',\n", + " 'ichi byogo shibuki mau',\n", + " 'kobosen puru saido nozokikomu',\n", + " 'kyo kaisei',\n", + " 'nana shoku no swimmer (korin freimuin)',\n", + " 'ichi byogo chiri midare',\n", + " 'ru wota buru',\n", + " \"ju ryoku furiharai rin'sen taisei\",\n", + " \"kizan de ku timer toran'su on take your mark\",\n", + " ':',\n", + " 'kono paazu wa kotoba no firuta tsuzura wazu',\n", + " 'write down his mind',\n", + " 'egaku suteji wa kokoro no purorogu epirogu',\n", + " 'kono mama owan nai?',\n", + " ':',\n", + " 'ichi byogo shibuki mau',\n", + " 'kobo sen',\n", + " 'puru saido nozokikomu',\n", + " 'kyo kaisei',\n", + " 'nana shoku no swimmer (korin fureimuin)',\n", + " 'ichi byogo chiri midare',\n", + " 'ru wota buru',\n", + " 'ju ryoku furiharai',\n", + " \"rin'sen taisei\",\n", + " \"kizan de ku timer toran'su on take your mark\",\n", + " '(eery solo)',\n", + " '(gets heavy)',\n", + " 'gaaadhaaaa gadhaaaa',\n", + " 'gadhaaaa',\n", + " 'gawowowowowowowow',\n", + " 'weehaaaw weehaaaw (x2)',\n", + " 'gaiaiaiaiaiaiaiaiaiaaah',\n", + " 'gaaadhaaaa gaaadhaaaa',\n", + " 'gahaaaa',\n", + " 'gawowowowowowowow',\n", + " 'weehaaaw weeehaaw (x2)',\n", + " '... (tones down to an eery solo again)',\n", + " 'yadnaha yadnaha yaaa dnahahahaw',\n", + " 'dahdoooo hoooo hooo hooooo',\n", + " 'yeahhhhhhhhhhhhaaaaha haaa hawww',\n", + " 'yadayada hooooooooooo hooo hooo hooo',\n", + " 'ganjigarame no machi',\n", + " 'namidagumu kono ko no te wo hiki nagara',\n", + " 'kanrakugai uramichi wo hou no ito surinuke uru',\n", + " 'hai gyo ni kuwae sase ta gyoniku to nigai carnival',\n", + " 'bloodstained carnival',\n", + " 'jissai nani mo wakara nai mama',\n", + " 'hai ni suikoma re te iku gaiaku',\n", + " 'humanist no sungeki',\n", + " 'heil jap',\n", + " 'osanagokoro wa fushoku shi namanurui uji ni kaeru',\n", + " 'hibi nare shitashin de fukuyou suru',\n", + " 'idenshi kumi kae rare ta mono douyou',\n", + " 'fake god wake up and go to hell',\n", + " 'yatsura no shisou ni hakaishi o tatakitsukeru no wa dare?',\n", + " 'takaku tsumiage ta puraido wo bara ga futatabi kubi to karu',\n", + " 'bloodstained carnival',\n", + " 'jissai nani mo wakara nai mama',\n", + " 'hai ni suikoma re te iku gaiaku',\n", + " 'humanist no sungeki',\n", + " 'heil jap',\n", + " 'osanagokoro ha fushoku shi namanurui uji ni kaeru',\n", + " 'shut up',\n", + " 'bullshit',\n", + " 'shut up',\n", + " 'shut fucker',\n", + " 'all things are touched in the head',\n", + " 'escape',\n", + " '1 lb no niku wo sogi otose nai kurushimi',\n", + " '2 nichi bakari de kioku kara kie te iku koufuku',\n", + " '3 dome no shoujiki nante dare mo shinji nai',\n", + " 'but this is the fact',\n", + " 'do what i say',\n", + " 'kill yourself',\n", + " 'kisama tou mo seishin sei narushisuto',\n", + " 'ketsu raku no shuudan reipu',\n", + " 'fuck the system',\n", + " 'this is me welcoming you to the deep blue sea',\n", + " 'where the tired meet in attempts to rest their bodies',\n", + " \"we'll be fine once we relax and close our eyes\",\n", + " 'let the water we love find a home inside our lungs',\n", + " '\"oh, no! this is typical',\n", + " 'bare myself to the bone and i\\'m sure to catch a cold.\"',\n", + " '\"you can run and hide and beg for mercy',\n", + " 'the only way to save your lady',\n", + " 'sharks are marked in tanks',\n", + " \"as you're walking the plank\",\n", + " 'it could take all night',\n", + " \"you're lookin' for the lamp light\",\n", + " 'do everything you can',\n", + " 'it\\'s in the palm of your hand\"',\n", + " 'i just need a place where i can get some sleep',\n", + " 'when i look to my dreams i see awful things',\n", + " '\"oh, no! this is typical',\n", + " 'bare myself to the bone and i\\'m sure to catch a cold.\"',\n", + " '\"you can run and hide and beg for mercy',\n", + " 'the only way to save your lady',\n", + " 'sharks are marked in tanks',\n", + " \"as you're walking the plank\",\n", + " 'it could take all night',\n", + " \"you're lookin' for the lamp light\",\n", + " 'do everything you can',\n", + " 'it\\'s in the palm of your hand\"',\n", + " 'just keep swimming your way to your watery grave',\n", + " 'where your lack of faith has you fucked beyond belief',\n", + " 'you have to warn them. \"i\\'m not who i said i am\"',\n", + " 'this is your destiny, keep everyone living',\n", + " \"what goes through your mind when you know you're gonna die? and the same things that provoke it are the things that keep you alive\",\n", + " 'evilauoypeektahtsgnihtehteratiekovorptahtsgnihtemasehtdna?eidannoger\\'uoywonkuoynehwdnimruoyhguorhtseogtahwgnivilenoyrevepeek,ynitsedruoysisiht\"maidiasiohwtonm\\'i\".mehtnrawotevahuoyfeilebdnoyebdekcufuoysahhtiaffokcalruoyerehwevargyretawruoyotyawruoygnimmiwspeektsuj\"dnahruoyfomlapehtnis\\'tinacuoygnihtyreveodthgilpmalehtrof\\'nikooler\\'uoythginllaekatdluoctiknalpehtgniklawer\\'uoysasknatnidekrameraskrahsydalruoyevasotyawylnoehtycremrofgebdnaedihdnanurnacuoy\"\".dlocahctacoterusm\\'idnaenobehtotflesymerablacipytsisiht!on,ho\"sgnihtlufwaeesismaerdymotkoolinehwpeelsemostegnacierehwecalpadeentsuji\"dnahruoyfomlapehtnis\\'tinacuoygnihtyreveodthgilpmalehtrof\\'nikooler\\'uoythginllaekatdluoctiknalpehtgniklawer\\'uoysasknatnidekrameraskrahsydalruoyevasotyawylnoehtycremrofgebdnaedihdnanurnacuoy\"\".dlocahctacoterusm\\'idnaenobehtotflesymerablacipytsisiht!on,ho\"sgnulruoedisniemohadnifevolewretawehttelseyeruoesolcdnaxalerewecnoenifebll\\'ewseidobriehttserotstpmettaniteemderitehterehwaeseulbpeedehtotuoygnimoclewemsisiht',\n", + " 'i was made in morocco',\n", + " 'a long time ago',\n", + " 'a system chwiya flou',\n", + " 'ou hawelt nfehmou',\n", + " 'and when i realize that ma fhemt walou',\n", + " 'hettite slah ou ghennite had el morceau',\n", + " 'bach ngoulou baz',\n", + " 'baz alina ou baz 3alikou',\n", + " 'goulou baz',\n", + " 'baz alihoum ou li qbel menhoum',\n", + " 'goulou baz',\n", + " 'goulou baz ala li f bush chba sebbane',\n", + " 'ou telqah houa lewwel mqeyyed fel qoura dial mirikane',\n", + " 'goulou baz ala li khrej men cabaret sekrane',\n", + " 'ou i goul ma tkhafch alia 3ad ghan soug meziane',\n", + " 'zidou baz, li ati floussou lechewafate',\n", + " 'ou zidou baze, 3ala li i bi sawtou f lintikhabate',\n", + " 'goulou baz',\n", + " 'goulou baz ala li twadda 5 merrate fenhar',\n", + " 'ou felekher i louh zbel f trottoire dial bab dar',\n", + " 'ou zidou baz ala li tchekka men onsoria f sbania',\n", + " 'ou hna rah i teyyeh leklame ala nass dial nigeria',\n", + " 'goulou baz ala li lbess kessoua ou a',\n", + " 'goulou baz hit ma dayzach fih sadaqa',\n", + " 'goulou baz',\n", + " 'baz hegga lelougha rasmia dialna al arabiya al fousha',\n", + " 'li nsaw ma dekhlou fiha kelma mouhima wa hia kelmet baz',\n", + " 'ou zidou baz adim lelmahakim',\n", + " 'kheliwna nachtine wakha arfine',\n", + " 'baz la metro dial casa',\n", + " 'bekri chefnah bhal tunnel dial tanja',\n", + " 'goulou baz',\n", + " 'goulou baz had nouba',\n", + " 'makoum bigg the done el khasser ou hoba',\n", + " 'goulou baz',\n", + " 'meni tchoufou l boulisse',\n", + " 'ki dirou f khdemthoum bla ma i cheddou devise',\n", + " 'goulou baz',\n", + " 'meni tchoufou bladkoum',\n", + " 'tkhesser wladkoum oula rechoua datkoum',\n", + " 'goulou baz',\n", + " 'meni tchoufou jamaa katzeffet fe triq bla ma tzefet dmaghkoum',\n", + " 'goulou baz',\n", + " 'meni tchoufou sbitar',\n", + " \"ma fihch l'alchool fermli maitre\",\n", + " 'goulou baz',\n", + " 'meni derri fih el moute',\n", + " 'i goul lik sir chri bra ra skhana gha tfoute',\n", + " 'goulou baz',\n", + " 'derri mate diwh men andna ma ghay batch',\n", + " 'fine laqa ma ma kaynach',\n", + " 'sem7ou lina ma bghinach',\n", + " 'goulou baz',\n", + " 'el mou tebki',\n", + " 'dmou tayhine ou lbou i chki',\n", + " 'goulou baz derb mgelleg',\n", + " 'riha atya ou doudane mderreg',\n", + " 'goulou baz ra hlektouna',\n", + " 'chfertou lina floussna ou mehhentouna',\n", + " 'goulou baz ma bghitouch gala idkoum fih lalalalala',\n", + " 'tooku made michibikarete',\n", + " 'meiun no michi wo buchikowasu made',\n", + " \"yeah guess who's back\",\n", + " 'everybody get down!',\n", + " \"guess who's back\",\n", + " 'hey, stand up! stand up!',\n", + " \"unmei no itazura ni i'm falling down\",\n", + " 'kimi to kanadeta harmony',\n", + " 'mada kako ni okizari no mama',\n", + " 'kimi no tsuyoki na call wo',\n", + " 'maneku koe ni hikizutta mama',\n", + " 'hey matteru dake ja mou tarinai',\n", + " 'guess who is back',\n", + " 'meikai dakishime',\n", + " 'guess who is back',\n", + " 'utsushidasu flame',\n", + " 'guess who is back',\n", + " 'hikari tomoshite',\n", + " 'guess who is back',\n", + " 'makkura no meiro de',\n", + " 'guess who is back',\n", + " 'lalalalala lalalala',\n", + " 'lalalalala lalalala',\n", + " 'guess who is back',\n", + " 'lalalalala lalalala',\n", + " 'me no mae no kibou uchikatte',\n", + " 'kizetsusuru youna koui no naka',\n", + " 'kimochi uruyouja koimo awa',\n", + " 'koshi wo furukazu kazoetemo',\n", + " 'totemo honki nya narenai ai ai',\n", + " 'anata gonomi no sixty-nine',\n", + " 'iyayoyamete wa ok sign',\n", + " 'moshimo ainara magai monode',\n", + " 'kuri no hanasakya bye bye bye bye',\n", + " 'you make me love love',\n", + " 'i give you my gun gun',\n", + " 'namae shiranai futari no mamanara',\n", + " 'wakari aechattanonine',\n", + " 'i just wanna make love',\n", + " \"dakedo i don't wanna fall in love\",\n", + " 'areyakoreyato kongaragacchauno',\n", + " 'itsunomaniyara sonna nacchauno',\n", + " 'shiroi tanimade madoronde ireba',\n", + " \"mune no dokokaga zukizuki shakin' shakin'\",\n", + " 'kanari cool ni kidottetemo',\n", + " 'yappari shu-ru na kokoro moyou',\n", + " 'sakete toorenu amai wana ni',\n", + " 'migoto hamatte ah ah ah',\n", + " 'is this love potion?',\n", + " \"you've got love machine gun\",\n", + " 'koroshi monku wa dynamite na',\n", + " 'namida tsubushita kimi no smile',\n", + " 'beauty & stupid a-ha-ha (baby love you, love you like an animal)',\n", + " 'beauty & stupid a-ha-ha',\n", + " 'i just wanna make love',\n", + " \"dakedo i don't wanna fall in love\",\n", + " 'uso happyaku narabetemitemone',\n", + " 'bake no kawa hagasarechauyone',\n", + " 'horechattara makechatteruyone',\n", + " 'maji dattara no no no no',\n", + " 'kizetsusuru youna koi no naka',\n", + " 'kimochi mechakucha hart barabara',\n", + " 'horetaharetade shoubunoreba',\n", + " 'itomotayasuku orokana doreiyo',\n", + " 'mekurumekuyona hibi oyoide',\n", + " 'mawari megutta tsuke kakaete',\n", + " 'hana wo meshimase fake no bara wo',\n", + " 'migoto sakasete high high high',\n", + " \"you're beauty queen of love\",\n", + " \"i'm stupid slave of love\",\n", + " 'i kiss on your knees',\n", + " 'let me do what you want',\n", + " 'kimi no omocha ni sasete',\n", + " 'beauty & stupid a-ha-ha',\n", + " '(baby love you, love you like an animal)',\n", + " 'beauty & stupid a-ha-ha',\n", + " \"(baby love me yeah! i wanna be you're dog)\",\n", + " 'this next song is called',\n", + " 'gurrrrrr',\n", + " 'gurrrrrr',\n", + " 'e-yugghh',\n", + " 'gurrblarrbbllrrlarrr',\n", + " 'hllyaaaaaa',\n", + " 'hrryaaa',\n", + " 'errr eee yeerrrrrr',\n", + " 'errr blrrbgbrrr',\n", + " 'baarrhhh ugghh waarrhhh',\n", + " 'ughhh eehh ueyrehhh',\n", + " 'yadot rof tsuj s’ti wonk i tub',\n", + " 'ti ekaf ot emit emos deen i',\n", + " 'yadot rof tsuj s’ti wonk i tub',\n", + " 'ti ekaf ot emit emos deen i',\n", + " 'degnahc reven evah uoy taht hsiw i',\n", + " '?gnilley elpoep s’ereht yhw dna i ma erehw',\n", + " 'yadot rof tsuj s’ti wonk i tub',\n", + " 'ti ekaf ot emit emos deen',\n", + " 'maahi ve maahi ve',\n", + " \"that's the way maahi ve\",\n", + " 'tere maathe jhumar damke',\n", + " 'tere kanno baali chamke hai re',\n", + " 'maahi ve',\n", + " 'tere haatho kangana khanke',\n", + " 'tere pairo payal chance hai re',\n", + " 'maahi ve',\n", + " 'naino se bole rabba rabba',\n", + " 'mann mein dole rabba rabba',\n", + " 'amrut ghole rabba rabba',\n", + " 'tu soniye',\n", + " 'jind maahi ve',\n", + " 'soni soni aaja maahi ve',\n", + " 'everybody sing',\n", + " 'soni soni aaja maahi ve',\n", + " '(x2)',\n", + " \"that's the way maahi ve\",\n", + " 'o tere aankhen kali kali',\n", + " 'tera gora gora mukhdha hai re',\n", + " 'maahi ve',\n", + " 'tere rangat jaise sona',\n", + " 'tu chaand ka tukda hai re',\n", + " 'maahi ve',\n", + " 'tere gaal gulabi rabba rabba',\n", + " 'chal sharabi rabba rabba',\n", + " 'dil ki kharabi rabba rabba',\n", + " 'tu soniye',\n", + " 'jind maahi ve',\n", + " 'soni soni aaja maahi ve',\n", + " 'everybody sing',\n", + " 'soni soni aaja maahi ve',\n", + " '(x2)',\n", + " 'barse rangini kaliyan hai mehki bhini bhini',\n", + " 'baje mann mein halke halke shehnaiya re',\n", + " 'jitne hai tare aanchal mein aa gaya sare',\n", + " 'dil ne jaise hi li angadayee re',\n", + " 'tu jo aayee sajhke mehndi rajke',\n", + " 'chal bajke oh soniye',\n", + " 'dil kit no ka khaye dhajke oh soniye',\n", + " 'jind maahi ve',\n", + " 'soni soni aaja maahi ve',\n", + " 'everybody sing',\n", + " 'soni soni aaja maahi ve',\n", + " '(x2)',\n", + " 'chanhda meri chanda tujhe kaise mein yeh samjhaoon',\n", + " 'mujhe lagti hai tu kitni pyaari re',\n", + " 'khusiyan jitni hai sab jitni hai sab dhoondh ke laoon',\n", + " 'teri doli ke sang kar do sari re',\n", + " 'teri doli ke sang kar do sari re',\n", + " 'tu jo aayee sajhke mehndi rajke',\n", + " 'chal bajke oh soniye',\n", + " 'dil kit no ka khaye dhajke oh soniye',\n", + " 'jind maahi ve',\n", + " 'soni soni aaja maahi ve',\n", + " 'everybody sing',\n", + " 'soni soni aaja maahi ve',\n", + " 'tere maathe jhumar damke',\n", + " 'tere kanno baali chamke hai re',\n", + " '(maahi ve)',\n", + " 'tere haatho kangana khanke',\n", + " 'tere pairo payal chance hai re',\n", + " '(maahi ve)',\n", + " 'naino se bole rabba rabba',\n", + " 'mann mein dole rabba rabba',\n", + " 'amrut ghole rabba rabba',\n", + " 'tu soniye',\n", + " 'jind maahi ve (x3)',\n", + " 'soni soni aaja maahi ve',\n", + " 'everybody sing',\n", + " 'soni soni aaja maahi ve',\n", + " 'jind maahi ve',\n", + " 'soni soni aaja maahi ve',\n", + " 'everybody sing',\n", + " 'soni soni aaja maahi ve',\n", + " 'junbi ja genjuu nyou kame shibin ja nenjuu',\n", + " '12 toki 10 fun kanji atta kanja',\n", + " 'fun kura e beautiful',\n", + " 'karaokeraibu kuraini kyouza me',\n", + " 'ii neechan mae ni',\n", + " 'ire kui no dandei',\n", + " 'fuchi kuchi man kidori no mr boogie',\n", + " 'zungurimukkuri tan karamatta',\n", + " 'ahondara kantouchiiki',\n", + " 'heppiri koshi no engei nanzo antara hou mita ika?',\n", + " 'a tsuu tsuu tsuu itatsutsu',\n", + " 'aikawarazu no fun iki',\n", + " 'meda koi dawameitero',\n", + " 'entertainer',\n", + " 'furue ro pankushin yuganda suta',\n", + " 'furue ro pankushin yuganda suta',\n", + " 'furue ro pankushin yuganda suta',\n", + " 'furue ro pankushin higan da fuck police',\n", + " 'saa shoubu ja kenjuu wo nuki tobikonda benjo',\n", + " 'bichi fun shonben enjo kousai egetsu nai ron ke',\n", + " 'fun kura e beautiful',\n", + " 'karaokeraibu kuraini kyouza me',\n", + " 'abake! ura ken haran sandeiesuta maigo',\n", + " \"yoroke rock 'n’ roll\",\n", + " 'tobacchiri gomen da',\n", + " 'furuki yoki utage da',\n", + " 'mama papa baa yome yo',\n", + " 'zungurimukkuri tan karamatta',\n", + " 'ahondara kantouchiiki',\n", + " 'heppiri koshi no engei nanzo antara hou mita ika?',\n", + " 'a tsuu tsuu tsuu itatsutsu',\n", + " 'aikawarazu no fun iki',\n", + " 'meda koi dawameitero',\n", + " 'entertainer',\n", + " 'furue ro pankushin yuganda suta',\n", + " 'furue ro pankushin yuganda suta',\n", + " 'furue ro pankushin yuganda suta',\n", + " 'furue ro pankushin higan da fuck police',\n", + " 'tambourine man tambourine man tambourine man',\n", + " 'tambourine mr boogie tambourine man',\n", + " 'tambourine mr boogie tambourine man',\n", + " 'tambourine mr boogie tambourine man',\n", + " 'tambourine mr boogie tambourine man',\n", + " 'mr star boogie',\n", + " 'mr star boogie',\n", + " 'mr star boogie',\n", + " 'mr star boogie',\n", + " 'furue ro pankushin yuganda suta',\n", + " 'furue ro pankushin yuganda suta',\n", + " 'furue ro pankushin yuganda suta',\n", + " 'furue ro pankushin higan da fuck police',\n", + " 'so long hikari no mukoue',\n", + " 'so long namonaki jiyuue',\n", + " 'so long huanwo nomikome',\n", + " 'so long dareyorimo takaku tobe',\n", + " 'anadarakeno hanewo haide tobikome mewo kojiakete',\n", + " 'sokoga doromamireno heven darouga sumeba rakuenttesa',\n", + " 'mekkiga hageta hibiwo seoi tancyouna baseidomowo kurae',\n", + " 'kizuwo eguruyouni susume sou menomaeno real ga subete',\n", + " 'so long yamiwo saite',\n", + " 'so long namonaki jiyuue',\n", + " 'so long huanwo nomikome',\n", + " 'so long hurueru kodou',\n", + " 'loop jimonjitou loop jikokenno',\n", + " \"loop suru kurusimino hate orewa heven's door\",\n", + " 'wo nagameteiru',\n", + " 'murewo nashite nishie mukau toriwa yagate kodokuwo shiru',\n", + " 'soshite yaseta hanewo mite itta \"sokoniwa nozomumono',\n", + " 'subetega arunokai? \"',\n", + " 'daremoga mita keshikiyorimo kageochiteiku chino hatewo',\n", + " 'soshite kieteshimaisouna hini tsuyoku inotta',\n", + " 'in deep slowly sky',\n", + " 'tesagurino miraini hurue tachitsukusunara sonomamadeii',\n", + " 'okizarino \"nameless liberty\" ga warainagara sou itta',\n", + " 'soshite ima kokode hikariwo abiru yuragu miraikara mewo',\n", + " 'somukenukotowo chikatte',\n", + " 'kekkan kake-meguri nouten yaburu',\n", + " 'byoudou nantenee sa',\n", + " 'kyou mo mata kidzuka sare',\n", + " 'tobichiru houkai no oto ga dokomademo otosu',\n", + " 'erabu no wa dare demonaku tare ochiru',\n", + " 'yogore kitta ore no bi',\n", + " 'omaera ga shimesu ikikata ni tou',\n", + " 'naki mane jouzuna omae no kotoda',\n", + " 'kono mama yarisugosu darou',\n", + " 'yami no naka',\n", + " 'doom and gloom',\n", + " 'welcome to the inferno',\n", + " 'kekkan kake-meguri nouten yaburu',\n", + " 'byoudou nantenee sa',\n", + " 'kyou mo mata kidzukasa re',\n", + " 'tobichiru houkai no oto ga dokomademo otosu',\n", + " 'doom and gloom',\n", + " 'welcome to the inferno',\n", + " \"saa ikou ka kin'iro no sekai\",\n", + " 'doom and gloom',\n", + " 'welcome to...',\n", + " 'nani mo ienai kimi ga utsuru glass o kuyashikute kowashitemo',\n", + " 'soko kara nigeru kimi o utsusu kagami ga soko ni wa aru no',\n", + " '(wakaranai no !!) iya (wakaritakunai no sa!!)',\n", + " 'kyou mo ashita mo asattemo...',\n", + " 'soko kara nigeru you ni...',\n", + " 'just discover the sound',\n", + " 'burning the music in your heart',\n", + " 'scream !! sakebe yeah',\n", + " 'jibun no koe o karashite',\n", + " 'hito wa odoroku hodo ni tanjun katsu junsuimuku de totetsu mo naku',\n", + " 'toki ni hito o kizutsukete wa azawarau akuma no you',\n", + " '(wakatteru sa !!) iya wakareba chigau hazu',\n", + " 'kyou ya kinou ya atotoimo',\n", + " 'ashita mo kawaranai sa',\n", + " 'just discover the sound',\n", + " 'burning the music in your heart',\n", + " 'scream !! sakebe yeah',\n", + " 'jibun no koe o karashite',\n", + " \"get away, don't wanna think about it\",\n", + " 'far away, you wanna take my name',\n", + " \"killin' me, don't wanna think about you\",\n", + " 'i define it',\n", + " 'i can hear it now',\n", + " 'just discover the sound',\n", + " 'burning the music in your heart',\n", + " 'scream !! sakebe yeah',\n", + " 'jibun no koe o karashite',\n", + " 'beach europe kiero! kechi yuuei (x3)',\n", + " 'beach europe kiero! kechi yuuei yeah!',\n", + " 'swing samaa aisukuriimugecchu! mega lover',\n", + " 'suppin guramaa suppin ga jiyuu mega lover',\n", + " 'pink shuraba speaker chu! mega lover',\n", + " 'aniki lover sign',\n", + " 'swing samaa aisukuriimugecchu! mega lover',\n", + " 'suppin guramaa suppin ga jiyuu mega lover',\n", + " 'pink shuraba speaker chu! mega lover',\n", + " 'aneki lover sign',\n", + " \"'chou buruu' damare! yuuga na sex apiiru people mesu\",\n", + " 'zetsubou seibutsu kei no netsuben',\n", + " 'fuyu bankai yuuutsu natsu kuru fuan kan reidii',\n", + " 'nure ba nebaneba.desupeinto',\n", + " 'fuun na wan chan an ta natsu geemu mara ga hanran sasupensu',\n", + " 'meromero ero play girl! play girl!',\n", + " 'h tsugou na dorama sutikku ketsugou na go manetsu purei',\n", + " 'disuko de kone orei!',\n", + " 'dare mo kare mo hari kiri mousou',\n", + " 'furu bikini ki re te tousou',\n", + " 'toropikaru nennen joushou ozon sou zoon muzan biisan',\n", + " 'are ma matsuri de kousou',\n", + " 'shutten garami no rantou',\n", + " 'tekiya no niichan neechan boro mouke suru masutaa',\n", + " 'fuun na wan chan an ta natsu geemu mara ga hanran sasupensu',\n", + " 'meromero ero play girl! play girl!',\n", + " 'h tsugou na dorama sutikku ketsugou na go manetsu purei',\n", + " 'disuko de kone orei!?',\n", + " 'hey! irero reibou!',\n", + " 'cherry going to bed',\n", + " 'gubbai ero saibou',\n", + " 'hiroin zenmetsu to reito',\n", + " 'modae little boy',\n", + " 'tedumari no moui',\n", + " 'omae rabu riron sae sainou',\n", + " 'mousou atsumare genmetsu to urei no re in',\n", + " 'tada itsumo ore fura re inmairuumu',\n", + " 'noo meiku furo he',\n", + " 'kibun ha star lame',\n", + " 'yukata fuurin daarin',\n", + " 'kon romanrokku honey',\n", + " 'oh radio bakuon hamabe zai shoku (tsumi iro)',\n", + " 'mina falling love',\n", + " 'exotic party, shake your body!',\n", + " 'noo bura afure kuroku summer year!?',\n", + " '(repeat)',\n", + " 'beach europe kiero! kechi yuuei (x3)',\n", + " 'biba! binbou!',\n", + " 'bibou rinsumania!!',\n", + " 'three, two, one, ignition, fire !',\n", + " 'nanasenmannenmae saru no tanjou',\n", + " 'shinka to meiutte bokura koko ni iru kedo',\n", + " 'nanasenmannenbun baka ni natte taika o kurikaeshite iru',\n", + " 'sonna ki ga shite naranai ah subarashiki jinrui, ah !',\n", + " 'kono kudarane uta o utatteru ma ni darekaga gisei ni natte',\n", + " 'darekega gisei ni natteru ma ni kofuku wa futo mebuite',\n", + " 'kono tsuman nee nichijo no uragawa de souzetsuna hi nichijou ga',\n", + " 'imaka imakato mushibami tsudzukeru ah dou shiro tte yuu nda',\n", + " 'tsuchi o utta ringo mizu wo sutte fukure dashita',\n", + " 'ki kara ochita boku wa hino mewominai mama',\n", + " 'kin de katta kokoro hi wo okoshite atatameru',\n", + " 'tsuki ni tatta saru wa mada waga mo no kao de waratte iru',\n", + " '1, 2, 3, 4 ! we learn a lot !',\n", + " 'a, b, c, d ! we learn a lot !',\n", + " \"but can't discover the cause of stupidity\",\n", + " '1, 2, 3, 4 ! we cried aloud, over and over and over again',\n", + " \"but can't discover the cause of stupidity\",\n", + " 'nijuu san nen mae boku wa tanjou',\n", + " 'kore ga shinka no hate datte warachau ne mattaku',\n", + " 'nanse chi ni nureta ryote wo sotto kakushite ai to heiwa da to utatte iru',\n", + " 'boku wa tensai nanda jibun wo damasu tensai nanda!',\n", + " 'sensou tosou juu wo motte saa',\n", + " 'ai to heiwa, ai to heiwa',\n", + " 'sensou tosou migi e naratte saa',\n", + " 'ai to heiwa, ai to heiwa',\n", + " 'saru wa ki kara doko e ochiru ?',\n", + " '1, 2, 3, 4 ! we learn a lot !',\n", + " 'a, b, c, d ! we learn a lot !',\n", + " \"but can't discover the cause of stupidity\",\n", + " '1, 2, 3, 4 ! we cried aloud, over and over and over again',\n", + " \"but can't discover the cause of stupidity\",\n", + " 'nanasenmannenmae saru no tanjou',\n", + " 'shinka to meiutte bokura koko ni iru kedo',\n", + " 'nanasenmannenbun baka ni natte taika o kurikaeshite iru',\n", + " 'sonna ki ga shite naranai ah subarashiki jinrui, ah !',\n", + " 'hangul',\n", + " '멈추지 않는 this ringtone',\n", + " '자꾸 울려대는 소리',\n", + " '모든 것이 날 미치게 해',\n", + " '자꾸 나를 조여와',\n", + " 'your voice your lies',\n", + " '듣기 싫은 걸 oh no',\n", + " 'your voice your lies',\n", + " '정신 나간 소린 걸',\n", + " 'get out of my way',\n", + " 'i love you boy 널 사랑해',\n", + " '너의 말에 다신 속지 않아 난',\n", + " '네 목소리 듣기 싫어 no no no',\n", + " '집착에 미쳐버렸어 your voice',\n", + " '내 손 잡지 말아줘',\n", + " '듣고 싶지 않아',\n", + " '더 이상은 아냐 evil voice',\n", + " 'lalalalalalalalalala',\n", + " '떠나가줘',\n", + " 'lalalalalalalalalala',\n", + " 'my love is gone',\n", + " 'don’t say you’re coming home',\n", + " '네가 있을 곳은 없어',\n", + " '혹시라는 건 없어 no more',\n", + " 'i love you boy 널 사랑해',\n", + " '너의 말에 다신 속지 않아 난',\n", + " '네 목소리 듣기 싫어 no no no yeah',\n", + " '웃지 마 미칠 것 같아 your voice',\n", + " '절대 속지 않겠어',\n", + " '보고 싶지 않아',\n", + " '더 이상은 아냐 evil voice',\n", + " 'lalalalalalalalalala',\n", + " '떠나가줘',\n", + " 'lalalalalalalalalala',\n", + " 'my love is gone',\n", + " 'don’t say you think',\n", + " 'that you’re the one',\n", + " 'don’t say 착각은 하지 마 oh',\n", + " '집착에 미쳐버렸어 your voice',\n", + " '내 손 잡지 말아줘',\n", + " '듣고 싶지 않아',\n", + " '더 이상은 아냐 evil voice',\n", + " 'lalalalalalalalalala',\n", + " '떠나가줘',\n", + " 'lalalalalalalalalala',\n", + " 'my love is gone',\n", + " 'romanization',\n", + " 'meomchuji anhneun this ringtone',\n", + " 'jakku ullyeodaeneun sori',\n", + " 'modeun geosi nal michige hae',\n", + " 'jakku nareul joyeowa',\n", + " 'your voice your lies',\n", + " 'deutgi silheun geol oh no',\n", + " 'your voice your lies',\n", + " 'jeongsin nagan sorin geol',\n", + " 'get out of my way',\n", + " 'i love you boy neol saranghae',\n", + " 'neoui mare dasin sokji anha nan',\n", + " 'ne moksori deutgi silheo no no no',\n", + " 'jipchage michyeobeoryeosseo your voice',\n", + " 'nae son japji marajwo',\n", + " 'deutgo sipji anha',\n", + " 'deo isangeun anya evil voice',\n", + " 'lalalalalalalalalala',\n", + " 'tteonagajwo',\n", + " 'lalalalalalalalalala',\n", + " 'my love is gone',\n", + " 'don’t say you’re coming home',\n", + " 'nega isseul goseun eopseo',\n", + " 'hoksiraneun geon eopseo no more',\n", + " 'i love you boy neol saranghae',\n", + " 'neoui mare dasin sokji anha nan',\n", + " 'ne moksori deutgi silheo no no no yeah',\n", + " 'usji ma michil geot gata your voice',\n", + " 'jeoldae sokji anhgesseo',\n", + " 'bogo sipji anha',\n", + " 'deo isangeun anya evil voice',\n", + " 'lalalalalalalalalala',\n", + " 'tteonagajwo',\n", + " 'lalalalalalalalalala',\n", + " 'my love is gone',\n", + " 'don’t say you think',\n", + " 'that you’re the one',\n", + " 'don’t say chakgageun haji ma oh',\n", + " 'jipchage michyeobeoryeosseo your voice',\n", + " 'nae son japji marajwo',\n", + " 'deutgo sipji anha',\n", + " 'deo isangeun anya evil voice',\n", + " 'lalalalalalalalalala',\n", + " 'tteonagajwo',\n", + " 'lalalalalalalalalala',\n", + " 'my love is gone',\n", + " 'she has a sex addiction',\n", + " 'betty in the trash box',\n", + " 'you are the highest grade gossip',\n", + " 'betty in the trash box',\n", + " 'suicide of masquerade',\n", + " 'everyone is attracted by your sweet face',\n", + " 'juusan kaidan nobori kuzureochite yuku vijon',\n", + " 'sungeki no doresu wo nugi dantoudai made itchokusen',\n", + " 'jouyoku mamire no kimi ga itoshii fushidara ni utsuru kuchibiru no sei?',\n", + " 'shinimonogurui de tobimawaru kinku ni ezuku shinjitsu',\n", + " 'haiso no rizumu kizande',\n", + " 'forbidden red lips',\n", + " 'she has a sex addiction',\n", + " 'bang! bang!',\n", + " 'cute luv machine',\n", + " 'she has a sex addiction',\n", + " 'you are the highest grade gossip',\n", + " 'dare yori mo kagayaite iru',\n", + " 'bеtty in the trash box',\n", + " 'where arе you now?',\n", + " 'contempt/loss/blank life',\n", + " 'forbidden fruit',\n", + " 'forbidden red lips',\n", + " 'she has a sex addiction',\n", + " 'bang! bang!',\n", + " 'cute luv machine',\n", + " 'she has a sex addiction',\n", + " 'you are the highest grade gossip',\n", + " 'dare yori mo kagayaite iru',\n", + " 'she has a sex addiction',\n", + " \"n'roho l'jamaiqua (bab el oued kingston)\",\n", + " \"n'jibo e'zetla (kehla ki zitoune)\",\n", + " 'wa 3lajal el marka (tban mél b3id)',\n", + " \"n'batou berra (bla guitoune)\",\n", + " 'ched med ta3mira (bab el oued kingston)',\n", + " \"we n'derrah garro chira (kehla ki zitoune)\",\n", + " \"w'neztal 3inani (tban mél b3id)\",\n", + " \"z'kara fél houkouma...\",\n", + " \"gahmouna b'les speach\",\n", + " 'sketch 9dam wella kitch',\n", + " \"n'touma télé3bou bechéhna w'ana mazal mat3achitche\",\n", + " 'ghir khelouni n3iich malgré',\n", + " 'my tailor is not rich (aaa)',\n", + " 'ana cha3bi el mezloute',\n", + " 'hyati domino balbote',\n", + " 'serwali mezboute',\n", + " 'hiti hit mabin lahyout',\n", + " 'djerawna 3la kaskrotte',\n", + " \"heta fah el bote métekrat f'l'autoroute\",\n", + " \"scotish i'm not, british i'm not\",\n", + " \"i don't do don't do don't drink a whisky\",\n", + " 'aw nekini vegétarien malgré moi',\n", + " \"smokin' a lot o fuckin' tanzn béllot\",\n", + " '3endna les acteurs',\n", + " 'akter men hollywood',\n", + " '3endna les requins',\n", + " 'akter me sardines',\n", + " 'tiheza tihezawin',\n", + " '3endna les escrocs',\n", + " 'aw kayen les victimes',\n", + " 'tiberka tiberkawinn)',\n", + " '3endna bezzef el gaz',\n", + " \"we ghla 3lina l'moumtaz\",\n", + " \"n'roho l'jamaiqua (bab el oued kingston)\",\n", + " \"w'n'jibo e'zetla (kehla ki zitoune)\",\n", + " 'wa 3lajal el marka (tban mél b3id)',\n", + " \"w'n'batou berra (bla guitoune)\",\n", + " 'balek mel hanach',\n", + " 'heta ida kan fermache',\n", + " 'yetlouwa 3lik chèche',\n", + " 'el fertass we diguoulasse (digoulasse)',\n", + " 'heta fi riyas seize we nass',\n", + " \"wel hourras bel famass w'jouh tirroir caisse\",\n", + " 'dima dima labess',\n", + " \"ma n'tir m3a tayrine ma nedjri m3a edyouba\",\n", + " \"sebba mguebla le7doud w'ana machi fel 3agba\",\n", + " 'mani al capone',\n", + " \"ma n'dir debza m3a tyson\",\n", + " \"ana mezlote w'gawri w'mandewerch el capota\",\n", + " \"scotish i'm not, british i'm not\",\n", + " \"i don't do don't do don't drink a whisky\",\n", + " 'aw nekini machi ta3 superman {?]',\n", + " \"smokin' a lot o fuckin' tanzn béllot\",\n", + " 'mahamahi',\n", + " 'tag 3la men tag',\n", + " 'tag 3la men tag 3la men tag 3la men 3la men tag',\n", + " \"tag 3la men tag marka ta3 l'isti9lal\",\n", + " 'tag 3la men tag 3la men 3la 7oukoumet el khoroto',\n", + " 'tag 3la men tag bel 9ahwa we les croissants',\n", + " 'tag 3la men tag 9abel dima mayssera',\n", + " 'ana ma9oult chii',\n", + " \"w'nta mayekhfalek chii\",\n", + " \"3labalna b'koul chi\",\n", + " 'yaw na3erfou el bouchi',\n", + " 'aach galou?',\n", + " 'hada irhab?',\n", + " 'hadouk lem9ali?',\n", + " \"hassbouna d'wab...\",\n", + " 'chkoun li dar li el caillasse fi sebbati?',\n", + " 'chkoun li der hala fi les arabes?',\n", + " 'mahamahi',\n", + " 'tihezza tihezawin',\n", + " 'mahamahi',\n", + " 'tiberka tiberkawin',\n", + " \"scotish i'm not, british i'm not\",\n", + " \"i don't do don't do don't drink a whisky\",\n", + " 'aw nekini vegétarien malgré moi',\n", + " \"smokin' a lot o fuckin' tanzn béllot\",\n", + " 'mahamahi',\n", + " 'tihezza tihezawin',\n", + " 'mahamahi',\n", + " 'tiberka tiberkawin',\n", + " \"scotish i'm not, british i'm not\",\n", + " \"i don't do don't do don't drink a whisky\",\n", + " 'aw nekini vegétarien malgré moi',\n", + " \"smokin' a lot o fuckin' tanzn béllot\",\n", + " 'mahamahi',\n", + " 'lili twil, ma andou niheya',\n", + " 'ou chaami klil ou le ouins maaya',\n", + " 'ou damay ysil men chougui ou houeya',\n", + " 'ou kalby alil fin nijbar doueya',\n", + " 'anger and pain',\n", + " 'tie me like chains',\n", + " \"i'm in the darkness tonight\",\n", + " 'light up my flame',\n", + " 'help me to tame',\n", + " 'my loneliness tonight',\n", + " 'lili twil, ma andou niheya',\n", + " 'ou chaami klil ou le ouins maaya',\n", + " 'ou damay ysil men chougui ou houeya',\n", + " 'ou kalby alil fin nijbar doueya',\n", + " 'anger and pain',\n", + " 'tie me like chains',\n", + " \"i'm in the darkness tonight\",\n", + " 'light up my flame',\n", + " 'help me to tame',\n", + " 'my loneliness tonight',\n", + " 'anger and pain',\n", + " \"i'm in the darkness tonight\",\n", + " 'light up my flame',\n", + " 'help me to tame',\n", + " 'my loneliness tonight, woah']}}},\n", + " 'zh': {'sentence': {'pop': {'meta': {'train_data': ['yeah, yeah',\n", + " \"所有欲望 get 'em all\",\n", + " '卸下过多兴奋 buzz',\n", + " '这城市的主人公 ct之前n为首',\n", + " '我们不屑纸醉金迷',\n", + " 'be the one, one, one',\n", + " '(no, no)',\n", + " 'yeah, 无数夜晚 在舞台的正中央',\n", + " \"i be bangin' with my team 我们不弃守 (faith, faith)\",\n", + " '我们引导光的流向 in the street oh (splash)',\n", + " '在城市中漫游 (漫游)',\n", + " '同时闭上你的眼睛 (bang bang)',\n", + " '梦想在我手中握紧 (我握紧)',\n", + " '照亮了我想象的憧憬 (pause)',\n", + " 'and now we in a \"zone\\'\\' (oh-oh-oh)',\n", + " '努力点石成为 gold',\n", + " '个十百千万都不够 (yeah, yeah)',\n", + " 'yeah, yeah, falling in my motion (splash! woo, woo)',\n", + " '我们享受被仰望的姿态 every time',\n", + " '像恒星灿烂无须守则 stop hitting my line',\n", + " \"梦会积沙成塔 but i'm still not satisfied\",\n", + " '理所当然 on the regular',\n", + " '就让规则意外 irregular (brra)',\n", + " 'we make the world go',\n", + " '我俯瞰天空',\n", + " 'we make the world go (skrrt, brra)',\n", + " '我赌上了所有填满世界 i want it',\n", + " '执意把梦的靶心',\n", + " '往天空慢慢偏移 (yeah, yeah, yeah)',\n", + " 'we are not the same 我必须是唯一 (hey hey)',\n", + " '在最高之处 (fly) 画我的国度 (skrrt)',\n", + " '在我眼中 (yeah)',\n", + " 'we never lose (nah) 也沒有限度 (nothing)',\n", + " 'we do what we do (ball)',\n", + " \"i'm so clean, so fresh\",\n", + " '天生聚光闪光秀 (oh, oh)',\n", + " 'diamonds on my neck',\n", + " \"光源都以我为轴 (let's go!)\",\n", + " \"you gon' hold up, hold up, hold up for a real one (for a real one)\",\n", + " '向云端的尽头出发',\n", + " '被仰望必成为 star',\n", + " '(oh yeah, yeah, yeah)',\n", + " 'so fly, so hot 聚焦为点 we touch the sky 注定伟大',\n", + " '请尽管羡慕嫉妒 i did it all by myself (uh)',\n", + " 'and now we in a \"zone\\'\\' (ice, ice)',\n", + " '努力点石成为 gold (成为 gold)',\n", + " '个十百千万都不够 (yeah, yeah, yeah)',\n", + " 'yeah, yeah, falling in my motion (splash! woo, woo)',\n", + " '我们享受被仰望的姿态 every time (oh-oh-oh-oh)',\n", + " '像恒星灿烂无须守则 stop hitting my line (oh-oh-oh-oh)',\n", + " \"梦会积沙成塔 but i'm still not satisfied\",\n", + " '理所当然 on the regular (regular)',\n", + " '就让规则意外 irregular (brra)',\n", + " 'we make the world go',\n", + " '我俯瞰天空',\n", + " 'we make the world go (skrrt, brra, yeah yeah)',\n", + " \"我赌上了所有填满世界 i want it (hol' up, woo, woo)\",\n", + " 'multi-colored diamonds like a rainbow',\n", + " 'plr your eyes 与色彩共构 (your brain go)',\n", + " \"yeah 闪闪发光 we flash 无法自我 let's dance (let's dance)\",\n", + " '身体发肤授之万物',\n", + " '无歌不舞 uh',\n", + " '(oh, woah) burn it up, burn it up, burn it up (burn it up)',\n", + " '这首歌是夜空里的星火',\n", + " '让这旋律 wave',\n", + " 'do it our way (oh-oh-oh-oh)',\n", + " '我们享受被仰望的姿态 every time (oh-oh-oh-oh)',\n", + " '像恒星灿烂无须守则 stop hitting my line (oh-oh-oh-oh)',\n", + " \"梦想会积沙成塔 but i'm still not satisfied (oh-oh-oh-oh-oh-oh-oh)\",\n", + " '理所当然 on the regular',\n", + " '就让规则意外 irregular (brra)',\n", + " 'we make the world go (oh, oh, oh, oh, oh, oh, oh)',\n", + " '我俯瞰天空',\n", + " 'we make the world go (skrrt, brra)',\n", + " '我赌上了所有填满世界 i want it',\n", + " 'regular',\n", + " '你还记得吗 记忆的炎夏',\n", + " 'do you still remember',\n", + " 'that summer',\n", + " '散落在风中的已蒸发喧哗的都已沙哑',\n", + " 'those that had fallen with the breeze have vanished',\n", + " 'those noises had turned hoarse',\n", + " '没结果的花 未完成的牵挂',\n", + " 'fruitless flower, unfinished missing thoughts',\n", + " '我们学会许多说法来掩饰不碰的伤疤',\n", + " 'we learnt multiple ways to cover up hidden scars',\n", + " '因为我会想起你我害怕面对自己',\n", + " 'because i’ll think of you',\n", + " 'i’m afraid of facing myself',\n", + " '我的意志 总被寂寞吞食',\n", + " 'my determination',\n", + " 'has always been swallowed up by loneliness',\n", + " '因为你总会提醒过去总不会过去',\n", + " 'because you’d always remind',\n", + " 'that the past would never pass',\n", + " '有种 真爱不是我的',\n", + " 'there’s a kind of true love',\n", + " 'which is not mine',\n", + " '没结果的花 未完成的牵挂',\n", + " 'fruitless flower, unfinished missing thoughts',\n", + " '我们学会许多说法来掩饰不碰的伤疤',\n", + " 'we learnt multiple ways to cover up hidden scars',\n", + " '因为我会想起你我害怕面对自己',\n", + " 'because i’ll think of you',\n", + " 'i’m afraid of facing myself',\n", + " '我的意志 总被寂寞吞食',\n", + " 'my determination',\n", + " 'has always been swallowed up by loneliness',\n", + " '因为你总会提醒过去总不会过去',\n", + " 'because you’d always remind',\n", + " 'that the past would never pass',\n", + " '有种 真爱不是我的',\n", + " 'there’s a kind of true love',\n", + " 'which is not mine',\n", + " '假如我不曾爱你我不会失去自己',\n", + " 'if i had never loved you',\n", + " 'i would not have lost myself',\n", + " '想念的刺 钉住我的位置',\n", + " 'the thorn grown from missing you',\n", + " 'has pinned me at that very position',\n", + " '因为你总会提醒',\n", + " 'because you will always remind',\n", + " '尽管我得到世界 有些幸福不是我的',\n", + " 'even if i own the world',\n", + " 'there’s some happiness which will never be mine',\n", + " '你还记得吗 记忆的炎夏',\n", + " 'do you still remember',\n", + " 'that summer',\n", + " '我终于没选择的分岔最后又有谁到达',\n", + " 'i finally had no choice but to part with you',\n", + " 'did any of us reach our planned destination?',\n", + " '意義是流動的線 全握在你的手裡面',\n", + " '多希望我看的見 你心理神秘的',\n", + " '夢想依然很遙遠 未來還是畫不圓',\n", + " 'am i losing you?',\n", + " 'am i losing you?',\n", + " '走向沒人的鞦韆 把心情放在上面',\n", + " '努力推的高又遠 希望幸福',\n", + " '但是夢想依然很遙遠 未來還是畫不圓',\n", + " 'am i losing you?',\n", + " 'am i losing you?',\n", + " \"and why don't you stop\",\n", + " \"summer tears can't even let you warm\",\n", + " \"can't let you high\",\n", + " 'all the regret shining in the eyes',\n", + " \"that's everybody can easily find\",\n", + " 'so i keep counting down 12345 to 6',\n", + " 'i hope that you can hear',\n", + " \"'cause every sound, every counting beat\",\n", + " 'just show you all my misery',\n", + " '意義是流動的線 全握在你的手裡面',\n", + " '多希望我看的見 你心理神秘的空間',\n", + " '但未來依然很遙遠 夢想還是畫不圓',\n", + " 'am i losing you?',\n", + " 'am i losing you?',\n", + " '走向沒人的鞦韆 把心情放在上面',\n", + " '努力推的高又遠 希望幸福會實現',\n", + " '但是夢想依然很遙遠 未來還是畫不圓',\n", + " 'am i losing you?',\n", + " 'am i losing you?',\n", + " \"and why don't you stop\",\n", + " \"summer tears can't even let you warm\",\n", + " \"can't let you high\",\n", + " 'all the regret shining in the eyes',\n", + " \"that's everybody can easily find\",\n", + " 'so i keep counting down 12345 to 6',\n", + " 'i hope that you can hear',\n", + " \"'cause every sound, every counting beat\",\n", + " 'just show you all my misery',\n", + " '(exo, uh, exo, hey!)',\n", + " '你当然看不透',\n", + " '空前的 miracle',\n", + " '这不是梦, 别再问',\n", + " '防空你的头',\n", + " '你的思绪混乱',\n", + " '耐心 now behold',\n", + " '我怎么不想后悔莫及',\n", + " 'so 请等候',\n", + " '碎裂了寂静的咆哮 woah',\n", + " '帅爆的 feelin’',\n", + " '电力穿透全身到 whole world',\n", + " 'let me hit it, hit it',\n", + " '月亮要升起来',\n", + " '快要快要升起来',\n", + " 'ready set',\n", + " 'oh my 夜空都亮起来',\n", + " '今晚要多了个多了个',\n", + " '月亮多了个多了',\n", + " '今晚要多了个多了',\n", + " '多,多,多 多了个多了个月',\n", + " 'two moons, two moons (two moons, two moons)',\n", + " 'two moon, two moon, two moons',\n", + " '(exo) wanna get out tonight (wanna get it out)',\n", + " '(exo) wanna get out tonight (wanna get it out)',\n", + " '(exo) two moons, two moons',\n", + " 'two moon, two moon, two moons',\n", + " 'wanna get up tonight, wanna get up tonight',\n", + " 'wanna get out tonight, so we never come back',\n", + " '白色月',\n", + " '发出耀眼的 light',\n", + " '切开 grey skies',\n", + " '颤动在这 late night',\n", + " '交错的 road, road',\n", + " '目前还 don’t know',\n", + " '别再浪费时间加寿',\n", + " '命数 gotta go, go',\n", + " 'get it up, get it up 已经准备就绪',\n", + " '就是现在 hold 我的手',\n", + " '那些不同的不同的人',\n", + " '已经想方设法封我的口',\n", + " '只是目前还没习惯',\n", + " '不再给你标准的答案',\n", + " 'four dimensions 率先在这里等待',\n", + " 'welcome to the night',\n", + " 'that’s right!',\n", + " \"(ha-ha-ha, let's go, we're running out of time, man)\",\n", + " 'selected vip, wouldn’t it be mind-blowingly awesome?',\n", + " 'now we on a rock, rock, rocket',\n", + " 'just gotta keep your seat belt fastened',\n", + " '今晚要多了个多了个',\n", + " '月亮多了个多了',\n", + " '今晚要多了个多了',\n", + " '多,多,多 多了个多了个月',\n", + " 'no you’re not gonna shoulda woulda this and coulda woulda that',\n", + " \"'cause we’re never comin’ back to this trap\",\n", + " 'see the two full moons',\n", + " 'you’re the chosen knight',\n", + " 'go and spread good news cause we got no time',\n", + " '今晚要多了个多了个',\n", + " '月亮多了个多了',\n", + " '今晚要多了个多了',\n", + " '多,多,多 多了个多了个月',\n", + " 'two moons, two moons (two moons, two moons)',\n", + " 'two moon, two moon, two moons',\n", + " '(exo) wanna get out tonight (wanna get it out)',\n", + " '(exo) wanna get out tonight (wanna get it out)',\n", + " '(exo) two moons, two moons',\n", + " 'two moon, two moon, two moons',\n", + " 'i’m good (ha-ha)',\n", + " '重複多變 思緒舞動 曖昧生活',\n", + " '好像真的沒有那麼多可以說',\n", + " '愛你沒有結果',\n", + " '愛你沒有什麼',\n", + " '只是記得',\n", + " '一段剪影',\n", + " '你的輪廓',\n", + " '二',\n", + " '三',\n", + " '四',\n", + " '五',\n", + " '二',\n", + " 'everything in the universe has a rhythm, everything dances',\n", + " 'creativity takes courage, but behind every performer is a beginner who fell in love with expression, storytelling, and being set free',\n", + " 'chinese and english:',\n", + " '穿華麗的服裝 為原始的渴望而站著',\n", + " 'stand and wear beautiful clothes to satisfy primitive desires',\n", + " '用完美的表情 為脆弱的城市而撐著',\n", + " 'use the perfect expression to support the weak city',\n", + " '我冷漠的接受 你焦急的等待也困著',\n", + " 'when i coldly accept your anxious waiting i also find it difficult',\n", + " '像無數生存在櫥窗裡的模特',\n", + " 'like the countless models that live in display cases',\n", + " '除了燈以外 我還能看見什麼',\n", + " 'what else can i see aside from the light?',\n", + " '除了光以外 我還能要求什麼',\n", + " 'what else can i ask for aside from the brightness?',\n", + " '除了你以外 我還能倚賴哪一個',\n", + " 'who else can i rely on aside from you?',\n", + " '在千里以外 在呼喊的是什麼',\n", + " 'what are you shouting from a thousand miles away?',\n", + " '在百年以後 想回憶的是什麼',\n", + " 'what will you want to remember after a hundred years?',\n", + " '在離開以前 能否再見那一刻',\n", + " 'can i see that moment again before i leave?',\n", + " '記得 你的眼睛將會亮著',\n", + " 'remember that your eyes will brighten',\n", + " '我的手臂將會揮著',\n", + " 'and my arms will be waving',\n", + " '誰說世界早已沒有選擇',\n", + " 'who says there are already no options in the world?',\n", + " '趁著 我會喜怒你會哀樂',\n", + " \"while we have the chance i'll feel pleasure and anger while you feel sorrow and joy\",\n", + " '唱幾分鐘情歌 沒什麼',\n", + " \"we'll sing a few minutes of a love song\",\n", + " '至少證明我們還活著',\n", + " \"it's nothing much but at least it's proof we're still alive\",\n", + " '像單純的蝴蝶為玫瑰的甜美而飛著',\n", + " \"like an innocent butterfly that flies for a roses' sweetness\",\n", + " '像頑皮的小貓為明天的好奇而睡著',\n", + " 'like a playful kitten that sleeps in curiousity for tomorrow',\n", + " '是混亂的時代是透明的監獄也覺得',\n", + " \"even if it's a chaotic period or a transparent prison it's still felt\",\n", + " '是不能繼續在櫥窗裡做模特',\n", + " \"that you can't continue being a model in a display case\",\n", + " '除了風以外 我還能聽到什麼',\n", + " 'what else can i hear aside from the wind?',\n", + " '除了塵以外 我還能拒絕什麼',\n", + " 'what else can i reject aside from the dust?',\n", + " '除了你以外 我還能倚賴哪一個',\n", + " 'who else can i rely on aside from you?',\n", + " '在千里以外 在呼喊的是什麼',\n", + " 'what are you shouting from a thousand miles away?',\n", + " '在百年以後 想回憶的是什麼',\n", + " 'what will you want to remember after a hundred years?',\n", + " '在離開以前 能否再見那一刻',\n", + " 'can i see that moment again before i leave?',\n", + " '記得 你的眼睛將會亮著',\n", + " 'remember that your eyes will brighten',\n", + " '我的手臂將會揮著',\n", + " 'and my arms will be waving',\n", + " '誰說世界早已沒有選擇',\n", + " 'who says there are already no options in the world?',\n", + " '趁著 我會喜怒你會哀樂',\n", + " \"while we have the chance i'll feel pleasure and anger while you feel sorrow and joy\",\n", + " '唱幾分鐘情歌 沒什麼',\n", + " \"we'll sing a few minutes of a love song\",\n", + " '至少證明我們還活著',\n", + " \"it's nothing much but at least it's proof we're still alive\",\n", + " 'chinese and romanization:',\n", + " '穿华丽的服装为原始的渴望而站着',\n", + " 'chuan hua li de fu zhuang wei yuan shi de ke wang er zhan zhe',\n", + " '用完美的表情为脆弱的城市而撑着',\n", + " 'yong wan mei de biao qing wei cui ruo de cheng shi er cheng zhe',\n", + " '我冷漠的接受你焦急的等待也困着',\n", + " 'wo leng mo de jie shou ni jiao ji de deng dai ye kun zhe',\n", + " '像无数生存在橱窗里的模特',\n", + " 'xiang wu shu sheng cun zai chu chuang li de mo te',\n", + " '除了灯以外我还能看见什么',\n", + " 'chu le deng yi wai wo hai neng kan jian shen me',\n", + " '除了光以外我还能要求什么',\n", + " 'chu le guang yi wai wo hai neng yao qiu shen me',\n", + " '除了你以外还能倚赖哪一个',\n", + " 'chu le ni yi wai hai neng yi lai na yi ge',\n", + " '在千里以外在呼喊的是什么',\n", + " 'zai qian li yi wai zai hu han de shi shen me',\n", + " '在百年以后想回忆的是什么',\n", + " 'zai bai nian yi hou xiang hui yi de shi shen me',\n", + " '在离开以前能否再见那一刻',\n", + " 'zai li kai yi qian neng fou zai jian na yi ke',\n", + " '记得你的眼睛将会亮着',\n", + " 'ji de ni de yan jing jiang hui liang zhe',\n", + " '我的手臂将会挥着',\n", + " 'wo de shou bi jiang hui hui zhe',\n", + " '谁说世界早已没有选择',\n", + " 'shui shuo shi jie zao yi mei you xuan ze',\n", + " '趁着我会喜怒你会哀乐',\n", + " 'chen zhe wo hui xi nu ni hui ai le',\n", + " '唱几分钟情歌',\n", + " 'chang ji fen zhong qing ge',\n", + " '没什么至少证明我们还活着',\n", + " 'mei shen me zhi shao zheng ming wo men hai huo zhe',\n", + " '像单纯的蝴蝶为玫瑰的甜美而飞着',\n", + " 'xiang dan chun de hu die wei mei gui de tian mei er fei zhe',\n", + " '像顽皮的小猫为明天的好奇而睡着',\n", + " 'xiang wan pi de xiao mao wei ming tian de hao qi er shui zhe',\n", + " '是混乱的时代是透明的监狱也觉得',\n", + " 'shi hun luan de shi dai shi tou ming de jian yu ye jue de',\n", + " '是不能继续在橱窗里做模特',\n", + " 'shi bu neng ji xu zai chu chuang li zuo mo te',\n", + " '除了風以外我還能聽到什麼',\n", + " 'chu le feng yi wai wo hai neng ting dao shen me',\n", + " '除了塵以外我還能拒絕什麼',\n", + " 'chu le chen yi wai wo hai neng ju jue shen me',\n", + " '除了你以外還能倚賴哪一個',\n", + " 'chu le ni yi wai hai neng yi lai na yi ge',\n", + " '在千里以外在呼喊的是什么',\n", + " 'zai qian li yi wai zai hu han de shi shen me',\n", + " '在百年以后想回忆的是什么',\n", + " 'zai bai nian yi hou xiang hui yi de shi shen me',\n", + " '在离开以前能否再见那一刻',\n", + " 'zai li kai yi qian neng fou zai jian na yi ke',\n", + " '记得你的眼睛将会亮着',\n", + " 'ji de ni de yan jing jiang hui liang zhe',\n", + " '我的手臂将会挥着',\n", + " 'wo de shou bi jiang hui hui zhe',\n", + " '谁说世界早已没有选择',\n", + " 'shui shuo shi jie zao yi mei you xuan ze',\n", + " '趁着我会喜怒你会哀乐',\n", + " 'chen zhe wo hui xi nu ni hui ai le',\n", + " '唱几分钟情歌',\n", + " 'chang ji fen zhong qing ge',\n", + " '没什么至少证明我们还活着',\n", + " 'mei shen me zhi shao zheng ming wo men hai huo zhe',\n", + " '(one, two, three, four, five, six, seven)',\n", + " '(one, two, three, four, five, six, seven)',\n", + " '平行空间视觉一闪而过',\n", + " '发光的轨道',\n", + " '触发听觉加速跳动',\n", + " '谁在舞蹈',\n", + " '嗅觉寻找那条线索',\n", + " 'lucky seven 耀眼的闪烁',\n", + " '若隐若现神秘面孔',\n", + " '准备着降临的时刻',\n", + " '第七感的讯号',\n", + " '一轮星月划过等待揭晓',\n", + " '第七感在闪耀',\n", + " '金木水火土也会将我们围绕',\n", + " '我解开假面 众人眼前 小宇宙燃烧',\n", + " '在新的世界 七种感觉 独特的符号 hey',\n", + " '解开假面 众人眼前 小宇宙燃烧',\n", + " '在新的世界 七种感觉',\n", + " '(one, two, three, four, five, six, seven)',\n", + " 'lucky seven, baby',\n", + " '(one, two, three, four, five, six, seven)',\n", + " 'lucky seven, baby',\n", + " '(one, two, three, four, five, six, seven)',\n", + " '挣脱引力触觉表演时刻',\n", + " '尖叫的预兆',\n", + " '默契的心决不退缩',\n", + " '我在舞蹈',\n", + " '嗅觉寻找那条线索',\n", + " 'lucky seven 耀眼的闪烁',\n", + " '若隐若现神秘面孔',\n", + " '准备着降临的时刻',\n", + " '第七感的讯号',\n", + " '一轮星月划过等待揭晓',\n", + " '第七感在闪耀',\n", + " '金木水火土也会将我们围绕',\n", + " '我解开假面 众人眼前 小宇宙燃烧',\n", + " '在新的世界 七种感觉 独特的符号 hey',\n", + " '解开假面 众人眼前 小宇宙燃烧',\n", + " '在新的世界 七种感觉',\n", + " '(one, two, three, four, five, six, seven)',\n", + " 'lucky seven, baby',\n", + " '(one, two, three, four, five, six, seven)',\n", + " 'lucky seven, baby',\n", + " '(one, two, three, four, five, six, seven)',\n", + " '(bring it back, bring it back)',\n", + " '(bring it, bring it)',\n", + " 'lucky seven, baby',\n", + " '(bring it back, bring it back)',\n", + " '(bring it, bring it)',\n", + " '(bring it back, bring it back)',\n", + " '(bring it, bring it)',\n", + " 'lucky seven, baby',\n", + " '(bring it back, bring it back)',\n", + " '(one, two, three, four, five, six, seven)',\n", + " '(bring it, bring it)',\n", + " '(bring it back)',\n", + " '(bring it back)',\n", + " '(我解开假面 众人眼前 小宇宙燃烧)',\n", + " '(在新的世界 七种感觉 独特的符号)',\n", + " '我解开假面 众人眼前 小宇宙燃烧',\n", + " '在新的世界 七种感觉 独特的符号 hey',\n", + " '解开假面 众人眼前 小宇宙燃烧',\n", + " '在新的世界 七种感觉',\n", + " '(one, two, three, four, five, six, seven)',\n", + " 'lucky seven, baby',\n", + " '(one, two, three, four, five, six, seven)',\n", + " 'lucky seven, baby',\n", + " '(one, two, three, four, five, six, seven)',\n", + " '(bring it back, bring it back)',\n", + " '(bring it, bring it)',\n", + " '(bring it back, bring it back)',\n", + " 'seven what, seven what',\n", + " '(bring it back, bring it back)',\n", + " '(bring it, bring it)',\n", + " '(bring it back, bring it back)',\n", + " 'seven what, seven what',\n", + " '(one, two, three, four, five, six, seven)',\n", + " 'invitation - lovestoned',\n", + " 'turn down the lights',\n", + " '熄灭灯光',\n", + " 'make everything right',\n", + " '让一切顺其自然',\n", + " 'the future is on a way',\n", + " '未来,在我们前方',\n", + " 'open you doors',\n", + " '新开一扇窗户',\n", + " 'its santo explore',\n", + " '开始探寻',\n", + " \"you don't have to be afraid\",\n", + " '你无需害怕',\n", + " 'i know love like one love a guy',\n", + " '没有人,如我爱人这般',\n", + " \"touch me baby don't ever stop\",\n", + " '抚摸我,宝贝,别停下来',\n", + " 'it feels so good to me',\n", + " '这感觉如此美妙',\n", + " 'i think i let this be',\n", + " '我以此为邀请',\n", + " 'my invitation our celebration',\n", + " '为我们的庆典',\n", + " \"look what you're doing to me\",\n", + " '看看你是如何对待我',\n", + " 'am i sexuality',\n", + " '我性感的身躯',\n", + " 'no complications',\n", + " '没有纷繁芜杂',\n", + " 'just in ovation',\n", + " '只有不断创新',\n", + " 'you play me like this sweetest melody',\n", + " '你在我身上,演奏最甜美的旋律',\n", + " 'a stroke of your hands',\n", + " '双手颤栗',\n", + " 'the way that we stands',\n", + " '我们起舞的方式',\n", + " 'just making me drift away',\n", + " '让我慢慢飘向远方',\n", + " 'saki we were drunk',\n", + " '柔滑,却又生涩',\n", + " 'from sailing to far',\n", + " '从天花板,到地面',\n", + " 'nothing is seen away',\n", + " '我们无可阻挡',\n", + " 'i know love like one love a guy',\n", + " '没有人,如我爱人这般',\n", + " 'electricity every touch',\n", + " '每一次轻触都带着电流',\n", + " 'love the way we play',\n", + " '爱着我们演奏的方式',\n", + " 'i could do this everyday',\n", + " '每一天我都可以如此',\n", + " 'you just make me wanna say',\n", + " '你让我想要歌唱',\n", + " 'there is no images enjoy your brains',\n", + " '你带来的欢愉,没有极限',\n", + " 'i just want to kiss you tears away',\n", + " '我只想吻干你的眼泪',\n", + " 'my invitation, our celebration',\n", + " '我的邀请,为我们的庆典',\n", + " \"look what you 're doing to me\",\n", + " '看看你是如何对待我',\n", + " 'am i sexuality',\n", + " '我性感的身躯',\n", + " 'no complications',\n", + " '没有纷繁芜杂',\n", + " 'just in ovation',\n", + " '只有不断创新',\n", + " 'you play me like this sweetest melody',\n", + " '你在我身上,演奏最甜美的旋律',\n", + " 'ha a ha a…',\n", + " '哈 哈 哈 啊…',\n", + " 'my invitation our celebration',\n", + " '为我们的庆典',\n", + " 'look what you are doing to me',\n", + " '看看你是如何对待我',\n", + " 'am i sexuality',\n", + " '我性感的身躯',\n", + " 'no complications',\n", + " '没有纷繁芜杂',\n", + " 'just in ovation',\n", + " '只有不断创新',\n", + " 'you play me like this sweetest melody',\n", + " '你在我身上,演奏最甜美的旋律',\n", + " 'i know love like one love a guy',\n", + " '没有人,如我爱人这般',\n", + " 'electricity every touch',\n", + " '每一次轻触都带着电流',\n", + " 'love that way we play',\n", + " '爱着你演奏的方式',\n", + " 'i could do this everyday',\n", + " '每一天我都可以如此',\n", + " 'you just make me wanna say',\n", + " '你让我想要歌唱',\n", + " 'there is no images enjoy your brains',\n", + " '你带来的欢愉,没有极限',\n", + " 'i just wanna to kiss you tears away',\n", + " '我只想吻干你的眼泪',\n", + " 'my invitation our celebration',\n", + " '我的邀请,为我们的庆典',\n", + " \"look what you're doing to me\",\n", + " '看看你是如何对待我',\n", + " 'am i sexuality',\n", + " '我性感的身躯',\n", + " 'no complications',\n", + " '没有纷繁芜杂',\n", + " 'just in ovation',\n", + " '只有不断创新',\n", + " 'you play me like this sweetest melody',\n", + " '你在我身上,演奏最甜美的旋律',\n", + " '想事情到半夜 未眠',\n", + " '電台放的老歌 危險',\n", + " '彈著空氣吉他 和弦 哼的旋律經典',\n", + " '能被音樂環抱著 無憂無慮的',\n", + " '一遍又一遍 不想按下停止鍵',\n", + " \"it's my favorite, favorite stuff\",\n", + " 'this is my favorite, favorite stuff',\n", + " \"don't give me drugs, just all the things that i love\",\n", + " 'my favorite, my favorite, favorite',\n", + " 'my favorite, favorite',\n", + " 'my favorite, favorite',\n", + " 'it’s my favorite stuff',\n", + " '單曲重複播放中 躺在沙發上放空',\n", + " '不用太緊繃 不用偏頭痛 做個好夢',\n", + " '音符的世界大同 任督都打通',\n", + " '音符的語言相通 喜怒哀樂都相容',\n", + " '享受著節拍 就像漂浮在 無重力的海海海',\n", + " '不管大人或小孩 音樂給了靈魂灌溉',\n", + " '身體誠實搖擺 這感覺格外自在right oh right',\n", + " \"it's my favorite, favorite stuff\",\n", + " 'this is my favorite, favorite stuff',\n", + " \"don't give me drugs, just all the things that i love\",\n", + " 'my favorite, my favorite, favorite',\n", + " 'my favorite, favorite',\n", + " 'my favorite, favorite',\n", + " 'it’s my favorite stuff',\n", + " '小時候存錢買 錄音帶 那感動還存在',\n", + " '歌詞本裡 的精彩 如何下載',\n", + " '從cd到mp3音樂陪我跨過了世代',\n", + " 'so good so good so good yea',\n", + " 'so good',\n", + " \"it's my favorite, favorite stuff\",\n", + " 'this is my favorite, favorite stuff',\n", + " \"don't give me drugs, just all the things i love\",\n", + " 'my favorite, my favorite, favorite',\n", + " 'my favorite, favorite',\n", + " 'my favorite, favorite',\n", + " 'it’s my favorite stuff',\n", + " 'jump for the girls',\n", + " 'girls',\n", + " 'jump for the girls',\n", + " 'girls',\n", + " '呼叫失戀的女孩',\n", + " '快快快 站出來',\n", + " '不要再自怨自艾',\n", + " 'lalalalala',\n", + " '只打扮給自己看',\n", + " '的比賽 辦一晚',\n", + " '讓自戀限期氾濫',\n", + " 'lalalalala',\n", + " '心情就像杯裡的氣泡 high到炸',\n", + " '管他鞋跟到底有幾吋 都沒差',\n", + " '跟上了我的腳步 準備好 出發',\n", + " 'come on we can jump yes we can jump',\n", + " '女生覺醒愛自己 天經地義',\n", + " '熱力風暴就要 來襲',\n", + " '全場跟著我準備 即刻談起',\n", + " 'jump for the girls',\n", + " 'dance with me',\n", + " 'jump for the girls',\n", + " 'dance with me',\n", + " 'jump for the girls',\n", + " 'welcome to the party',\n", + " 'girls',\n", + " 'welcome to the party',\n", + " 'jump for the girls',\n", + " 'welcome to the party',\n", + " 'girls',\n", + " '四面八方 的女孩',\n", + " '趕過來 太精彩',\n", + " '姐妹們的 party time',\n", + " 'lalalalala',\n", + " '如果他打 電話來',\n", + " '請跟他 說拜拜',\n", + " '因為他已 不重要',\n", + " 'lalalalala',\n", + " '自由就是 慶祝的煙花 high到炸',\n", + " '不必要誰又愛來愛去 真浮誇',\n", + " '充滿自信 妳和我都是 super star',\n", + " 'come on we can jump yes we can jump',\n", + " \"let's get some crazy\",\n", + " \"let's get some crazy\",\n", + " 'oh 快樂 怎會 嫌少',\n", + " '熱情 別 關掉',\n", + " \"we won't let it stop\",\n", + " 'jump for the girls',\n", + " 'welcome to the party',\n", + " 'girls',\n", + " 'welcome to the party',\n", + " 'jump for the girls',\n", + " 'welcome to the party',\n", + " 'girls',\n", + " 'jump for the girls',\n", + " 'welcome to the praty',\n", + " 'girls',\n", + " 'welcome to the party',\n", + " 'jump for the girls',\n", + " 'girls',\n", + " 'welcome to the party',\n", + " 'girls',\n", + " 'welcome to the party',\n", + " '烏雲罩月 茫茫的暗暝',\n", + " '困佇這咧無聲無說的世界',\n", + " '泅袂出這片翕死人的死海',\n", + " '敢是五感失常資信全無接受',\n", + " '也是心肺失能空氣攏無吸收',\n", + " '等無彼咧人',\n", + " '等無一聲霆雷響',\n", + " '等無彼咧人',\n", + " '等無一改暢心情',\n", + " '若連聲音攏毋准發',\n", + " '咱用銃聲來揣正義',\n", + " '若連蠟燭攏毋准點',\n", + " '咱點炸彈來揣光明',\n", + " '清算血債 清算仇冤',\n", + " '清算血債 清算仇冤',\n", + " '血債仇冤',\n", + " '烏雲罩月 茫茫的暗暝',\n", + " '櫼佇這咧袂振袂動的世界',\n", + " '泅袂出這片翕死人的死海',\n", + " '敢是頭眩腦頓啥麼攏要吞忍',\n", + " '也是血路袂順跤手攏毋敢伸',\n", + " '等無彼咧人',\n", + " '等無一聲霆雷響',\n", + " '等無彼咧人',\n", + " '等無一氣挵崩盤',\n", + " '若連聲音攏毋准發',\n", + " '咱用銃聲來揣正義',\n", + " '若連蠟燭攏毋准點',\n", + " '咱點炸彈來揣光明',\n", + " '清算血債 清算仇冤',\n", + " '清算血債 清算仇冤',\n", + " 'let me stand up like a taiwanese',\n", + " 'only justice will bring you peace',\n", + " 'endless nightfall, swallow the sun',\n", + " \"void of silence, choking on the past's blood\",\n", + " 'drowning in deception, taken by the black flood',\n", + " 'sea is rising, never feel or see again',\n", + " 'hypnotizing visage preaching of supreme pain',\n", + " 'searching for a sign',\n", + " 'guide my hands unto your will',\n", + " 'let me be the one',\n", + " 'watch the blood of martyrs spill',\n", + " 'light that flickers in the dark',\n", + " 'forge the way through blackest night',\n", + " \"strangled silence makes it's mark\",\n", + " \"pierce the heart of tyrant's sight\",\n", + " 'with these hands i wash the blood clean',\n", + " 'watch it flow past visions obscene',\n", + " 'visions obscene',\n", + " 'endless nightfall, swallow the sun',\n", + " \"veil of madness, prison of the mind's eye\",\n", + " 'falling in the vortex, stifling the last sigh',\n", + " 'poisoned cortex dooming flesh to weakened form',\n", + " 'bones are breaking, shattered by the last storm',\n", + " 'searching for a sign',\n", + " 'guide my hands unto your will',\n", + " 'let me be the one',\n", + " 'stand above the one i kill',\n", + " 'light that flickers in the dark',\n", + " 'forge the way through blackest night',\n", + " 'strangled silence makes its mark',\n", + " \"pierce the the heart of tyrant's sight\",\n", + " 'with these hands i wash the blood clean',\n", + " 'watch it flow past visions obscene',\n", + " 'let me stand up like a taiwanese',\n", + " 'only justice will bring you peace',\n", + " '閃爍的烏影 愈來愈緊 不時相隨',\n", + " '湠開的跤步聲 愈來愈近 漸漸包圍',\n", + " '愈來愈近',\n", + " '看分明 聽斟酌 草木皆兵',\n", + " '提元氣 保清醒 無暝無日',\n", + " '破山林 過暗路 走相逐 覕相揣',\n", + " '毋通喘 袂當退 免躊躇 莫頓蹬',\n", + " '破山林 過暗路 走相逐 覕相揣',\n", + " '崁規頭閣掩規面 我心火著滿身狂',\n", + " '敢袂當揣 無聲的所在 恬恬看未來',\n", + " '走敢無回 生敢無悔 腳步通行去綴',\n", + " '一步一步 行無望的路',\n", + " '等候烏影 掠到我 拆食落腹 魂魄落土',\n", + " '生死走無路 這關袂得過',\n", + " '兄弟拆分途 永遠免再會',\n", + " '漸漸包圍',\n", + " '看分明 聽斟酌 草木皆兵',\n", + " '提元氣 保清醒 無暝無日',\n", + " '爬懸山 落深溪 走相逐 覕相揣',\n", + " '雙跤痠 雙手軟 眼反黑 面反白',\n", + " '爬懸山 落深溪 走相逐 覕相揣',\n", + " '喘無氣閣退無位 我徛袂在掠袂定',\n", + " '敢袂當揣 無聲的所在 恬恬看未來',\n", + " '走敢無回 生敢無悔 腳步通行去綴',\n", + " '走敢無回 生敢無悔 腳步通行去綴',\n", + " '一步一步 行無望的路',\n", + " '等候烏影 掠到我 拆食落腹 魂魄落土',\n", + " '一步一步 行無望的路',\n", + " '魂魄落土',\n", + " 'shadows closing in, echoes of the end surround',\n", + " \"footsteps drawing near, execution's breath unbound\",\n", + " 'stalking nearer',\n", + " 'hear me now, know my name, death i am, your soul i claim',\n", + " 'fear me now, feel my words, blessed the night, darkness and pain',\n", + " \"mountains high, streams so cold, water's edge, escape is told\",\n", + " \"breath in chains, the cage swung wide, nature's womb a place to hide\",\n", + " 'trees conspire, their words betray, footprints path to slow decay',\n", + " 'mind on fire, hallucinate, blinded by the fear and hate',\n", + " \"silence my olne guide, in time's thick haze ieill reside\",\n", + " 'none by my side, trapped within and cast aside',\n", + " 'on and on, down this hopeless road itread',\n", + " \"caught between both life and death, purgatory's hold i dread\",\n", + " \"my time, no time, it's coming to an end\",\n", + " 'your way, my way, we shall never meet again',\n", + " 'unseem terror',\n", + " 'hear me now, know my name, death i am, your soul iclaim',\n", + " 'fear me now, feel my words, blessed the night, darkness and pain',\n", + " \"dim the glow within my eyes, primal fear, the self's demise\",\n", + " 'hand to claw and arms to wings, animal from within springs',\n", + " 'through the branches, ripped and torn, from the earth a man reborn',\n", + " \"freedom calls, a nightmare's end, cruel fate's laugh, the rtap descends\",\n", + " \"silence my long guide, in time's thick haze i will reside\",\n", + " 'none by my side, rtapped within and cast aside',\n", + " 'none by my side, rtapped within and cast aside',\n", + " 'on and on, down this hopeless road i tread',\n", + " \"caught between both life and death, purgatory's hold i dread\",\n", + " 'on and on, down this hopeless road i tread',\n", + " 'as the undead',\n", + " 'jyp',\n", + " 'and the wonder girls',\n", + " \"we're back!\",\n", + " '是什么吸引你注意',\n", + " '让眼神无法再转移',\n", + " '难道我这样美丽',\n", + " '才让你如此着迷',\n", + " '心底里羞红那脸皮',\n", + " '慢慢地我向你靠近',\n", + " '眼角的火辣的眼力',\n", + " '我的美不可思议',\n", + " '吸引无数好奇',\n", + " '要怎样抵挡这热力',\n", + " \"i'm so hot\",\n", + " '我是那么的美丽',\n", + " \"i'm so fine\",\n", + " '有说不出的魅力',\n", + " \"i'm so cool\",\n", + " '你无法逃避',\n", + " \"i'm so, so, so hot, hot\",\n", + " '天生的可爱调皮无可挑剔',\n", + " '吸引来男生赞美女生妒忌',\n", + " '早应该习惯了爱情的讯息',\n", + " '为何我还会心动不已',\n", + " '只想做平凡的自己',\n", + " '和别人一样的轨迹',\n", + " '却因为拥有太迷人的魅力',\n", + " '增加了许多甜蜜的压力',\n", + " \"i'm so hot\",\n", + " '我是那么的美丽',\n", + " \"i'm so fine\",\n", + " '有说不出的魅力',\n", + " \"i'm so cool\",\n", + " '你无法逃避',\n", + " \"i'm so, so, so hot, hot\",\n", + " \"i'm so hot\",\n", + " '我是那么的美丽',\n", + " \"i'm so fine\",\n", + " '有说不出的魅力',\n", + " \"i'm so cool\",\n", + " '你无法逃避',\n", + " \"i'm so, so, so hot, hot\",\n", + " 'everybody watching me',\n", + " \"'cause i'm hot, hot\",\n", + " 'everybody wanting me',\n", + " \"'cause i'm hot, hot\",\n", + " 'anytime, anywhere i go',\n", + " 'i can never run away from the white spotlight',\n", + " 'they never leave me alone',\n", + " 'no matter what time it is, day or night',\n", + " \"how old do i gotta be till they don't want me no more\",\n", + " 'drew barrymore, tell me',\n", + " 'try to run',\n", + " \"but i just can't hide\",\n", + " 'started in asia, now worldwide',\n", + " 'everyone loves me',\n", + " 'try to get to know me',\n", + " 'what can i do',\n", + " 'oh no, please, leave me alone',\n", + " 'all the boys be loving me',\n", + " 'girls be hating me',\n", + " 'they will never stop',\n", + " \"'cause they know i'm so hot, hot\",\n", + " \"i'm so hot\",\n", + " '我是那么的美丽',\n", + " \"i'm so fine\",\n", + " '有说不出的魅力',\n", + " \"i'm so cool\",\n", + " '你无法逃避',\n", + " \"i'm so, so, so hot, hot\",\n", + " 'na-na-na-na-nada',\n", + " 'na-na-na-na-nada',\n", + " 'na-na-na',\n", + " \"my pocket hefty, actin' like it's nada\",\n", + " 'fresh off that yacht, move steady in designer',\n", + " '迈上了阶梯不管你该怎么觉得',\n", + " \"this henny agua, he gon' do me proper\",\n", + " \"i got 'em all like it's nada\",\n", + " 'way up high like nasa',\n", + " '我总要给一些别的 爱不爱都拿着',\n", + " \"i got 'em all like it's nada\",\n", + " 'way up high like nasa',\n", + " '我总要给一些别的 爱不爱都拿着',\n", + " '驾驭着一如既往极速提前到达目的地的航天器呢',\n", + " '习惯了 到手的数字甚至懒得计算了 一般吧',\n", + " '期待着脱离地心引力的末日',\n", + " '到那个时候所有的事都失去了意义 谁说未来不可期',\n", + " \"pathetic, a bird ain't gonna fly in a cage\",\n", + " \"too flashy a wraith, i don't feel no way\",\n", + " \"flexin' all day, 到最后我什么都没有\",\n", + " '我暮然回首 站在了世界最尽头 却想要后退',\n", + " \"'cause i got nada, they all fade\",\n", + " \"my pocket hefty, actin' like it's nada\",\n", + " 'fresh off that yacht, move steady in designer',\n", + " '迈上了阶梯不管你该怎么觉得',\n", + " \"this henny agua, he gon' do me proper\",\n", + " \"i got 'em all like it's nada\",\n", + " 'way up high like nasa',\n", + " '我总要给一些别的 爱不爱都拿着',\n", + " \"i got 'em all like it's nada\",\n", + " 'way up high like nasa',\n", + " '我总要给一些别的 爱不爱都拿着',\n", + " 'color my world-lele marchitelli',\n", + " '专辑:la grande bellezza(绝美之城)',\n", + " '专辑介绍:',\n", + " 'the great beauty (italian: la grande bellezza)',\n", + " 'is a 2013 italian film directed by paolo sorrentino',\n", + " 'it is a co-production between the italian medusa film and indigo film and',\n", + " 'the french babe films, with support from banca popolare di vicenza and pathé',\n", + " 'filming took place in rome starting on 9 august 2012. it premiered at the 2013',\n", + " \"cannes film festival where it was screened in competition for the palme d'or\",\n", + " 'it was shown at the 2013 toronto international film festival and at the 2013',\n", + " 'reykjavik european film festival. the film has been selected as the italian',\n", + " 'entry for the best foreign language film at the 86th academy awards',\n", + " 'making the january shortlist',\n", + " '《绝美之城》是保罗·索伦蒂诺所导演,托尼·瑟维洛、路伊斯·托沙主演的电影。',\n", + " '该片主要讲述了一个中年作家漫步在罗马,拾寻逝去的青春记忆。该片是对今日罗马的描绘。',\n", + " '2013年5月该片成为第66届戛纳国际电影节的主竞赛入围片。',\n", + " '2013年第26届欧洲电影学院年度颁奖典礼,《绝美之城》获得最佳影片、最佳导演、',\n", + " '最佳男演员和最佳剪辑奖四项大奖。该片还获得了第86届奥斯卡最佳外语片奖。',\n", + " '难以忘记初次见你',\n", + " 'it is hard to forget my first encounter of you',\n", + " '一双迷人的眼睛',\n", + " 'a pair of charming eyes',\n", + " '在我脑海里 你的身影 挥散不去',\n", + " 'in my mind, the memory of your figure is unwavering',\n", + " '握你的双手感觉你的温柔',\n", + " 'holding your hands, feeling your gentleness',\n", + " '真的有点透不过气',\n", + " \"there's a slight sense of breathlessness\",\n", + " '你的天真 我想珍惜',\n", + " 'i want to cherish your innocence',\n", + " '看到你受委屈 我会伤心',\n", + " 'seeing you aggrieved, i will feel sad',\n", + " '只怕我自己会爱上你',\n", + " \"i'm afraid that i will fall in love with you\",\n", + " '不敢让自己靠得太近',\n", + " \"i don't have the courage of being too close to you\",\n", + " '怕我没什么能够给你',\n", + " \"i'm afraid that i don't have much to give you\",\n", + " '爱你也需要很大的勇气',\n", + " 'perhaps loving you requires great courage',\n", + " '只怕我自己会爱上你',\n", + " 'i am afraid that i will fall in love with you',\n", + " '也许有天会情不自禁',\n", + " 'perhaps one day, i will be unable to refrain',\n", + " '想念只让自己苦了自己',\n", + " 'yearning (for you) only makes me suffer',\n", + " '爱上你是我情非得已',\n", + " 'loving you is my last resort',\n", + " '难以忘记初次见你',\n", + " 'it is hard to forget my first encounter of you',\n", + " '一双迷人的眼睛',\n", + " 'a pair of charming eyes',\n", + " '在我脑海里 你的身影 挥散不去',\n", + " 'in my mind, the memory of your figure is unwavering',\n", + " '握你的双手感觉你的温柔',\n", + " 'holding your hands, feeling your gentleness',\n", + " '真的有点透不过气',\n", + " \"there's a slight sense of breathlessness\",\n", + " '你的天真 我想珍惜',\n", + " 'i want to cherish your innocence',\n", + " '看到你受委屈 我会伤心',\n", + " 'seeing you aggrieved, i will feel sad',\n", + " '只怕我自己会爱上你',\n", + " \"i'm afraid that i will fall in love with you\",\n", + " '不敢让自己靠得太近',\n", + " \"i don't have the courage of being too close to you\",\n", + " '怕我没什么能够给你',\n", + " \"i'm afraid that i don't have much to give you\",\n", + " '爱你也需要很大的勇气',\n", + " 'perhaps loving you requires great courage',\n", + " '只怕我自己会爱上你',\n", + " 'i am afraid that i will fall in love with you',\n", + " '也许有天会情不自禁',\n", + " 'perhaps one day, i will be unable to refrain',\n", + " '想念只让自己苦了自己',\n", + " 'yearning (for you) only makes me suffer',\n", + " '爱上你是我情非得已',\n", + " 'loving you is my last resort',\n", + " '什么原因 我竟然又会遇见你',\n", + " 'what reason is it that i expectedly met you again',\n", + " '我真的真的不愿意',\n", + " 'i am really, really unwilling',\n", + " '就这样陷入爱的陷阱',\n", + " \"to step into love's trap just like that\",\n", + " '只怕我自己会爱上你',\n", + " \"i'm afraid that i will fall in love with you\",\n", + " '不敢让自己靠得太近',\n", + " \"i don't have the courage of being too close to you\",\n", + " '怕我没什么能够给你',\n", + " \"i'm afraid that i don't have much to give you\",\n", + " '爱你也需要很大的勇气',\n", + " 'perhaps loving you requires great courage',\n", + " '只怕我自己会爱上你',\n", + " 'i am afraid that i will fall in love with you',\n", + " '也许有天会情不自禁',\n", + " 'perhaps one day, i will be unable to refrain',\n", + " '想念只让自己苦了自己',\n", + " 'yearning (for you) only makes me suffer',\n", + " '爱上你是我情非得已',\n", + " 'loving you is my last resort',\n", + " '爱上你是我情非得已',\n", + " 'loving you is my last resort']},\n", + " 'data': ['【 can you feel the love tonight 】',\n", + " \"there's a calm surrender to the rush of day\",\n", + " '有一股寧靜臣服在白晝的繁忙之下',\n", + " 'when the heat of a rolling wind',\n", + " 'can be turned away',\n", + " '當狂風中的熱息也轉了方向',\n", + " 'an enchanted moment',\n", + " 'and it sees me through',\n", + " '喜悅的時刻,引領著我前進',\n", + " \"it's enough for this restless warrior\",\n", + " 'just to be with you',\n", + " '只要與你同在,對奮戰不懈的戰士而言那已足夠',\n", + " 'and can you feel the love tonight',\n", + " '今晚,你感受到愛了嗎?',\n", + " 'it is where we are 就在我倆四週',\n", + " \"it's enough for this wide-eyed wanderer\",\n", + " '對瞠目結舌的漂泊者來說,那已足夠',\n", + " 'that we got this far 我們已走了這麼遠',\n", + " 'and can you feel the love tonight 今晚你感受到',\n", + " '愛了嗎?',\n", + " \"how it's laid to rest 它準備要躺下休息了\",\n", + " \"it's enough to make kings and vagabonds\",\n", + " '能讓國王與流浪者崇信最佳人選',\n", + " 'believe the very best 那已足夠',\n", + " \"there's a time for everyone if they only learn\",\n", + " '每個人都有機會,只要他們明白',\n", + " 'that the twisting kaleidoscope',\n", + " 'moves us all in turn',\n", + " '變幻的美麗景緻依序感動著我們',\n", + " \"there's a rhyme and reason\",\n", + " 'to the wild outdoors',\n", + " '狂野的大自然有其規律與意義',\n", + " 'when the heart of this star-crossed voyager',\n", + " 'beats in time with yours',\n", + " '當命運多舛的航海者的心與你的心一同跳動',\n", + " 'and can you feel the love tonight',\n", + " '今晚,你感受到愛了嗎?',\n", + " 'it is where we are 就在我倆四週',\n", + " \"it's enough for this wide-eyed wanderer\",\n", + " '對瞠目結舌的漂泊者來說,那已足夠',\n", + " 'that we got this far 我們已走了這麼遠',\n", + " 'and can you feel the love tonight 今晚你感受到',\n", + " '愛了嗎?',\n", + " \"how it's laid to rest 它準備要躺下休息了\",\n", + " \"it's enough to make kings and vagabonds\",\n", + " '能讓國王與流浪者崇信最佳人選',\n", + " 'believe the very best 那已足夠',\n", + " \"it's enough to make kings and vagabonds\",\n", + " '能讓國王與流浪者崇信最佳人選',\n", + " 'believe the very best 那已足夠',\n", + " '~~~~ end ~~~~~',\n", + " 'blank space',\n", + " '《空白格》',\n", + " \"really it's so simple\",\n", + " '其实很简单',\n", + " \"it's so natural\",\n", + " '其实很自然',\n", + " \"if we're worth the love\",\n", + " '两个人的爱',\n", + " \"we're worth the work\",\n", + " '由两人分担',\n", + " \"it's not too difficult\",\n", + " '其实并不难',\n", + " \"you're just too cynical\",\n", + " '是你太悲观',\n", + " 'building all your walls',\n", + " '隔着一道墙',\n", + " \"so you can't hear me hurt\",\n", + " '不跟谁分享',\n", + " \"i don't want to start a war\",\n", + " '不想让你为难',\n", + " \"so i don't need you to answer no more\",\n", + " '你不再需要给我个答案',\n", + " 'i know that you still love me',\n", + " '我想你是爱我的',\n", + " \"i know you don't want to leave\",\n", + " '我猜你也舍不得',\n", + " \"you don't want to give up to break up\",\n", + " '但是怎么说 总觉得',\n", + " \"but there's miles of space between us\",\n", + " '我们之间留了太多空白格',\n", + " \"didn't want to hurt me no\",\n", + " '也许你不是我的',\n", + " \"there just wasn't time to grow\",\n", + " '爱你却又该割舍',\n", + " 'so without words we chose this road',\n", + " '分开或许是选择',\n", + " 'but maybe i was always meant to let you go',\n", + " '但它也可能是我们的缘分',\n", + " \"really it's so simple\",\n", + " '其实很简单',\n", + " \"it's so natural\",\n", + " '其实很自然',\n", + " \"if we're worth the love\",\n", + " '两个人的爱',\n", + " \"we're worth the work\",\n", + " '由两人分担',\n", + " \"it's not too difficult\",\n", + " '其实并不难',\n", + " \"you're just too cynical\",\n", + " '是你太悲观',\n", + " 'building all your walls',\n", + " '隔着一道墙',\n", + " \"so you can't hear me hurt\",\n", + " '不跟谁分享',\n", + " \"i don't want to start a war\",\n", + " '不想让你为难',\n", + " \"so i don't need you to answer no more\",\n", + " '你不再需要给我个答案',\n", + " 'i know that you still love me',\n", + " '我想你是爱我的',\n", + " \"i know you don't want to leave\",\n", + " '我猜你也舍不得',\n", + " \"you don't want to give up to break up\",\n", + " '但是怎么说 总觉得',\n", + " \"but there's miles of space between us\",\n", + " '我们之间留了太多空白格',\n", + " \"didn't want to hurt me no\",\n", + " '也许你不是我的',\n", + " \"there just wasn't time to grow\",\n", + " '爱你却又该割舍',\n", + " 'so without words we chose this road',\n", + " '分开或许是选择',\n", + " 'but maybe i was always meant to let you go',\n", + " '但它也可能是我们的缘分',\n", + " '我想你是爱我的,我猜你也舍不得',\n", + " '但是怎么说总觉得',\n", + " '我们之间留了太多空白格',\n", + " 'billie',\n", + " \"what do you want from me? why don't you run from me?\",\n", + " '你想從我這得到什麼呢? 為什麼你不逃走呢?',\n", + " 'what are you wondering? what do you know?',\n", + " '你腦中在想什麼? 你知道些什麼呢?',\n", + " \"why aren't you scared of me? why do you care for me?\",\n", + " '為什麼你不怕我呢? 為什麼你會關心我呢?',\n", + " 'when we all fall asleep, where do we go?',\n", + " '當我們沉睡時,我們都去哪裡呢?',\n", + " 'come here',\n", + " '過來',\n", + " 'say it, spit it out, what is it exactly?',\n", + " '說吧,說出來,你到底想說什麼?',\n", + " \"you're payin'? is the amount cleanin' you out? am i satisfactory?\",\n", + " \"你正在付出嗎? 你付出後是否讓你變得一無所有? 我是否令你滿意?today, i'm thinkin' about the things that are deadly\",\n", + " '今天,我正想著一些可以奪去你性命的事情',\n", + " \"the way i'm drinkin' you down\",\n", + " '將你一飲而盡的方式',\n", + " 'like i wanna drown, like i wanna end me',\n", + " '就像我想溺死,想要結束自己一樣',\n", + " 'step on the glass, staple your tongue',\n", + " '踩在玻璃上,把你的舌頭釘住 (ahh)',\n", + " 'bury a friend, try to wake up',\n", + " '埋了一個朋友,試圖從惡夢中醒來 (ah-ahh)',\n", + " 'cannibal class, killing the son',\n", + " '食人族,殺死了自己的兒子 (ahh)',\n", + " 'bury a friend, i wanna end me',\n", + " '埋了一個朋友,我想結束自己',\n", + " 'i wanna end me',\n", + " '我想結束自己',\n", + " 'i wanna, i wanna, i wanna… end me',\n", + " '我想,我想,我想... 結束自己',\n", + " 'i wanna, i wanna, i wanna…',\n", + " '我想,我想,我想...',\n", + " \"what do you want from me? why don't you run from me?\",\n", + " '你想從我這得到什麼呢? 為什麼你不逃走呢?',\n", + " 'what are you wondering? what do you know?',\n", + " '你腦中在想什麼? 你知道些什麼呢?',\n", + " \"why aren't you scared of me? why do you care for me?\",\n", + " '為什麼你不怕我呢? 為什麼你會關心我呢?',\n", + " 'when we all fall asleep, where do we go?',\n", + " '當我們沉睡時,我們都去哪裡呢?',\n", + " 'listen',\n", + " '聽好',\n", + " 'keep you in the dark, what had you expected?',\n", + " '讓你身處黑暗之中,你還能期待什麼呢?',\n", + " 'me to make you my art and make you a star',\n", + " '我要讓你變成我的藝術品,把你變成一顆星星',\n", + " 'and get you connected?',\n", + " '和其它星星連在一起?',\n", + " \"i'll meet you in the park, i'll be calm and collected\",\n", + " '我將會與你在公園見面,我那時會沉著而鎮定',\n", + " \"but we knew right from the start that you'd fall apart\",\n", + " '但我們從一開始就知道你將會徹底崩潰',\n", + " \"'cause i'm too expensive\",\n", + " '因為我是如此地珍貴',\n", + " \"it's probably somethin' that shouldn't be said out loud\",\n", + " '這或許是你不應該大肆宣揚的事情',\n", + " 'honestly, i thought that i would be dead by now',\n", + " '老實說,我想過現在早就已經死了 (wow)',\n", + " \"calling security, keepin' my head held down\",\n", + " '把保全叫來,讓他們把我的頭壓低',\n", + " 'bury the hatchet or bury a friend right now',\n", + " '埋了斧頭或是快把朋友埋了',\n", + " 'the debt i owe, gotta sell my soul',\n", + " '我欠下的債,我必須要賣我的靈魂',\n", + " \"'cause i can't say no, no, i can't say no\",\n", + " '因為我實在無法說不,不,我無法說不',\n", + " \"then my limbs all froze and my eyes won't close\",\n", + " '接著我的四肢變得無法動彈,眼睛開始無法闔上',\n", + " \"and i can't say no, i can't say no\",\n", + " '而我無法說不,我無法說不',\n", + " 'careful',\n", + " '小心',\n", + " 'step on the glass, staple your tongue',\n", + " '踩在玻璃上,把你的舌頭釘住 (ahh)',\n", + " 'bury a friend, try to wake up',\n", + " '埋了一個朋友,試圖從惡夢中醒來 (ah-ahh)',\n", + " 'cannibal class, killing the son',\n", + " '食人族,殺死了自己的兒子 (ahh)',\n", + " 'bury a friend, i wanna end me',\n", + " '埋了一個朋友,我想結束自己',\n", + " 'i wanna end me',\n", + " '我想結束自己',\n", + " 'i wanna, i wanna, i wanna… end me',\n", + " '我想,我想,我想... 結束自己',\n", + " 'i wanna, i wanna, i wanna…',\n", + " '我想,我想,我想...',\n", + " \"what do you want from me? why don't you run from me?\",\n", + " '你想從我這得到什麼呢? 為什麼你不逃走呢?',\n", + " 'what are you wondering? what do you know?',\n", + " '你腦中在想什麼? 你知道些什麼呢?',\n", + " \"why aren't you scared of me? why do you care for me?\",\n", + " '為什麼你不怕我呢? 為什麼你會關心我呢?',\n", + " 'when we all fall asleep, where do we go?',\n", + " '當我們沉睡時,我們都去哪裡呢?',\n", + " '刀 保庄頭 顧鄉土',\n", + " '武裝!',\n", + " '規暝日武裝!',\n", + " '刀 拼地盤 殺仇敵',\n", + " '提高警戒 應變隨機',\n", + " '劍 守田園 護家族',\n", + " '武裝!',\n", + " '滿街路武裝!',\n", + " '劍 斬貪官 刜汙吏',\n", + " '民反官逼',\n", + " '鴨母王登基大天后宮 萬歲吾皇',\n", + " '順天盟主天地會稱王 五十萬武勇',\n", + " '八卦萬生作東王大將 天符人應',\n", + " '旌義應褒忠封義民公 鎮邪四方',\n", + " '衝 承名聲 擔聲望',\n", + " '武裝!',\n", + " '透心神武裝!',\n", + " '衝 持義理 扶正道',\n", + " '懲惡賭強',\n", + " '清水祖師 戰 開漳聖王',\n", + " '觀音嬤 拼 媽祖婆',\n", + " '三山國王 戰 五谷神農',\n", + " '太子爺 拼 王爺公',\n", + " '咱來 大立家規 強行王法',\n", + " '土地 隨我封 山河 隨我開',\n", + " '兄弟 隨我姓 公媽 隨我祀',\n", + " '大展家威 強建王權',\n", + " '戰鼓 隨我擂 戰旗 隨我「立在」',\n", + " '人民 隨我起 歷史 隨我改',\n", + " '搶水 毀家 拆廟 倒厝',\n", + " '枉法 逆天 忤神 招拖注',\n", + " '割海 佔地 農毀 漁傷',\n", + " '刣人 放火 鬥爭 報冤仇',\n", + " '清水祖師 戰 開漳聖王',\n", + " '觀音嬤 拼 媽祖婆',\n", + " '三山國王 戰 五谷神農',\n", + " '太子爺 拼 王爺公',\n", + " '大展家威',\n", + " '土地 隨我封 山河 隨我開',\n", + " '兄弟 隨我姓 公媽 隨我祀',\n", + " '大展家威 強建王權',\n", + " '戰鼓 隨我擂 戰旗 「立在」',\n", + " '人民 隨我起 歷史 隨我改',\n", + " '大立家規 強行王法',\n", + " '大展家威 強建王權',\n", + " '歷史隨我改',\n", + " 'blades, protect our land, we fight',\n", + " 'to war, march into battle',\n", + " 'fight, we decimate our foes',\n", + " \"with our lives we'll defend our shores\",\n", + " 'swords, with steel we pierce their heart',\n", + " 'to war, march into the fore',\n", + " 'kill, the heads of tyrants roll',\n", + " 'live forevermore',\n", + " 'rebel of the cause that is lost',\n", + " 'pound of flesh is the ultimate cost',\n", + " 'soldiers of the soverelgn ground',\n", + " 'cut their flesh, let their offal abound',\n", + " 'blood, our names written in red',\n", + " 'to war, fly into battle',\n", + " 'die, the sanguine path it leads',\n", + " \"demon's black door\",\n", + " 'as above it shall be in our realm (in our realm)',\n", + " 'the divine protect our helm (guide oru helm)',\n", + " 'see the gods in their all-knowing rage (see their rage)',\n", + " 'watch the wrath of the violent sage (the violent sage)',\n", + " 'rule of my hand, law of my land',\n", + " 'from the rivers might to the mountains high',\n", + " 'with my blood and kin,where i choose to lie',\n", + " 'rule of my clan, make my last stand',\n", + " 'as the war drums beat, and our emblem flies',\n", + " 'we shall rise as one, and as one we die',\n", + " 'killing, burning, raping, maiming',\n", + " 'ripping, tearing, rampant desecrating',\n", + " 'as above it shall be in our realm (in our realm)',\n", + " 'the divine protect our helm (guide oru helm)',\n", + " 'see the gods in their all-knowing rage (see their rage)',\n", + " 'watch the wrath of the violent sage (the violent sage)',\n", + " 'rule of my hand',\n", + " 'from the rivers might to the mountains high',\n", + " 'with my blood and kin, where i choose to lie',\n", + " 'rule of my clan, make mylast stand',\n", + " 'as the war drums beat, andour emblem flies',\n", + " 'we shall rise as one, and as one we die',\n", + " 'rule of my hand, law of my land',\n", + " 'rivers might to the mountains high',\n", + " 'we rise as one and as one we shall die',\n", + " '我要飞上青天 上青天',\n", + " '我要飞上青天 上青天',\n", + " '我上七重天 来往浮在白云间',\n", + " '白云片片如棉 自由自在飘飘欲仙',\n", + " '我要飞上青天 上青天',\n", + " '我要飞上青天 上青天',\n", + " '俯望人世间 千年万年一霎眼',\n", + " '万里红尘如烟 高山大海斑斑点点',\n", + " '太阳是我的小台灯 月亮是我化妆镜',\n", + " '彩虹拿来做颈链 摘下一颗星星挂在胸前',\n", + " '我要飞上青天 上青天',\n", + " '我要飞上青天 上青天',\n", + " '俯望人世间 千年万年一霎眼',\n", + " '万里红尘如烟 高山大海斑斑点点',\n", + " '啊...',\n", + " '我上七重天 逍遥自在像神仙',\n", + " '不是梦话连篇是信念',\n", + " '我要飞上青天 飞上青天',\n", + " 'i want to fly to the sky, to the sky',\n", + " 'i want to fly to the sky, to the sky',\n", + " 'i am on the seventh heaven, floating between the clouds',\n", + " 'white clouds like cotton, floating freely',\n", + " 'i want to fly to the sky, to the sky',\n", + " 'i want to fly to the sky, to the sky',\n", + " 'looking down on the world, a thousand years, a blink of an eye',\n", + " 'thousands of miles of red dust',\n", + " 'the sun is my small table lamp. the moon is my makeup mirror',\n", + " 'use the rainbow to make a necklace and hang a star on it like a pendant',\n", + " 'i want to fly to the sky, to the sky',\n", + " 'i want to fly to the sky, to the sky',\n", + " 'looking down on the world, a thousand years, a blink of an eye',\n", + " 'thousands of miles of red dust',\n", + " 'ah...',\n", + " 'i am on the seventh heaven, i am free, like a fairy',\n", + " 'it’s not a dream, it’s fate',\n", + " 'i want to fly to the sky, fly to the sky',\n", + " 'i was headed for the danger zone 我只身前往',\n", + " 'feeling all on my own 一个危险地带',\n", + " 'now that you`re gone 如今你已不在',\n", + " 'didn`t ever think i`d smile again 当泪水、苦痛与爱都逝去',\n", + " 'after the tears and the pain the love went away 我的微笑也不再',\n", + " 'and now i`m ready 我现在准备好了',\n", + " 'i learned how to say goodbye 我学会如何说再见',\n", + " 'let go of the past 让过去变成云烟',\n", + " 'freedom at last from feeling so low 摆脱低潮,拥抱自由',\n", + " 'and i made a promise to myself 我答应自己',\n", + " 'that i`m never gonna hurt again 不再让别人伤害我',\n", + " 'been broken hearted too long 伤心太久',\n", + " 'sick and tired of crying alone 不想再独自哭泣',\n", + " 'from this moment i`m back to life 此刻我已重生',\n", + " 'remember who i was before you 我想起那个没有你的我',\n", + " 'now i`m alive and feeling brand new 全新的我,全新的感受',\n", + " 'from this moment i`m back to life 此刻我已重生',\n", + " 'now the after burn of you and me 我们当时的争吵与冲突',\n", + " 'felt like a first degree emergency 现在看来像是最後的急救',\n", + " 'resurrected the agony 让我们从痛不欲生的边缘得到解脱',\n", + " 'now i`m finally ok now i`m making my way 现在我没事了 我要大步向前',\n", + " 'now i`m ready 我准备好了',\n", + " 'coz` i learned how to say goodbye 我学会如何说再见',\n", + " 'let go of the past 让过去变成云烟',\n", + " 'freedom at last from feeling so low 摆脱低潮,拥抱自由',\n", + " 'and i made a promise to myself 我答应自己',\n", + " 'that i`m never gonna hurt again 不再让别人伤害我',\n", + " 'been broken hearted too long 伤心太久',\n", + " 'sick and tired of crying alone 不想再独自哭泣',\n", + " 'from this moment i`m back to life 此刻我已重生',\n", + " 'remember who i was before you 我想起那个没有你的我',\n", + " 'now i`m alive and feeling brand new 全新的我,全新的感受',\n", + " 'from this moment i`m back to life 此刻我已重生',\n", + " 'been broken hearted too long 伤心太久',\n", + " 'sick and tired of crying alone 不想再独自哭泣',\n", + " 'from this moment i`m back to life 此刻我已重生',\n", + " 'remember who i was before you 我想起那个没有你的我',\n", + " 'now i`m alive and feeling brand new 全新的我,全新的感受',\n", + " 'from this moment i`m back to life 此刻我已重生',\n", + " 'been broken hearted too long 伤心太久',\n", + " 'sick and tired of crying alone 不想再独自哭泣',\n", + " 'from this moment i`m back to life 此刻我已重生',\n", + " 'remember who i was before you 我想起那个没有你的我',\n", + " 'now i`m alive and feeling brand new 全新的我,全新的感受',\n", + " 'from this moment i`m back to life 此刻我已重生',\n", + " \"i've never seen a diamond in the flesh\",\n", + " 'i cut my teeth on wedding rings in the movies',\n", + " \"and i'm not proud of my address, in the torn up town\",\n", + " 'no post code envy',\n", + " \"but every song's like gold teeth, grey goose, trippin' in the bathroom\",\n", + " \"blood stains, ball gowns, trashin' the hotel room\",\n", + " \"we don't care, we're driving cadillacs in our dreams\",\n", + " \"but everybody's like cristal, maybach, diamonds on your timepiece\",\n", + " 'jet planes, islands, tigers on a gold leash',\n", + " '私人飛機 度假小島 養著一隻圈著金鍊的老虎',\n", + " \"we don't care, we aren't caught up in your love affair\",\n", + " '不在乎 反正我們也不可能有任何關係',\n", + " \"and we'll never be royals\",\n", + " '我們永遠無法成為貴族',\n", + " \"it don't run in our blood\",\n", + " '天生的血液裡就流竄著賤命',\n", + " \"that kind of lux just ain't for us\",\n", + " '那樣的奢華不屬於我們',\n", + " 'we crave a different kind of buzz',\n", + " '我們渴望能與眾不同',\n", + " 'let me be your ruler, you can call me queen bee',\n", + " '讓我成為你們的統治者 你們可以叫我蜂后',\n", + " \"and baby i'll rule (i'll rule i'll rule i'll rule...)\",\n", + " '而我會主宰一切 一切 一切',\n", + " 'let me live that fantasy',\n", + " '就讓我活在想像裡',\n", + " \"my friends and i we've cracked the code\",\n", + " '我和朋友們早已看清真相',\n", + " 'we count our dollars on the train to the party',\n", + " '我們在往派對的列車上數著零錢',\n", + " \"and everyone who knows us knows that we're fine with this\",\n", + " '認識的人都懂 我們對於貧窮坦然接受',\n", + " \"we didn't come from money\",\n", + " '我們不是為了金錢而活',\n", + " \"but every song's like gold teeth, grey goose, trippin' in the bathroom\",\n", + " \"blood stains, ball gowns, trashin' the hotel room\",\n", + " '暴力、華服、旅館裡喝到吐',\n", + " \"we don't care, we're driving cadillacs in our dreams\",\n", + " '不在乎 在夢裡我們也可以開凱迪拉克',\n", + " \"but everybody's like cristal, maybach, diamonds on your timepiece\",\n", + " '但每個人都配戴著水晶 名車 手錶鑲有鑽石',\n", + " 'jet planes, islands, tigers on a gold leash',\n", + " '私人飛機 度假小島 養著一隻圈著金鍊的老虎',\n", + " \"we don't care, we aren't caught up in your love affair\",\n", + " '不在乎 反正我們也不可能有任何關係',\n", + " \"and we'll never be royals\",\n", + " '我們永遠無法成為貴族',\n", + " \"it don't run in our blood\",\n", + " '天生的血液裡就流竄著賤命',\n", + " \"that kind of lux just ain't for us\",\n", + " '那樣的奢華不屬於我們',\n", + " 'we crave a different kind of buzz',\n", + " '我們渴望能與眾不同',\n", + " 'let me be your ruler, you can call me queen bee',\n", + " '讓我成為你們的統治者 你們可以叫我蜂后',\n", + " \"and baby i'll rule (i'll rule i'll rule i'll rule...)\",\n", + " '而我會主宰一切 一切 一切',\n", + " 'let me live that fantasy',\n", + " '就讓我活在想像裡',\n", + " '(oooh ooooh ohhh)',\n", + " \"we're bigger than we ever dreamed\",\n", + " '我們比自己想得要偉大',\n", + " \"and i'm in love with being queen\",\n", + " '我也很想成為女王',\n", + " '(oooooh ooooh ohhhhh)',\n", + " 'life is game without a care',\n", + " '人生是殘酷的遊戲',\n", + " \"we aren't caught up in your love affair\",\n", + " '只可惜我們不可能有任何關係',\n", + " \"and we'll never be royals\",\n", + " '我們永遠無法成為貴族',\n", + " \"it don't run in our blood\",\n", + " '天生的血液裡就流竄著賤命',\n", + " \"that kind of lux just ain't for us\",\n", + " '那樣的奢華不屬於我們',\n", + " 'we crave a different kind of buzz',\n", + " '我們渴望能與眾不同',\n", + " 'let me be your ruler, you can call me queen bee',\n", + " '讓我成為你們的統治者 你們可以叫我蜂后',\n", + " \"and baby i'll rule (i'll rule i'll rule i'll rule...)\",\n", + " '而我會主宰一切 一切 一切',\n", + " 'let me live that fantasy',\n", + " '就讓我活在想像裡']}}},\n", + " 'zu': {'sentence': {'pop': {'meta': {'train_data': [\"ngikhumbula ngisakhula ngikhul'ekhaya\",\n", + " 'i remember the days growing up at home',\n", + " 'baba nomama, nobaba, nomame',\n", + " 'fathers and mothers, fathers and mothers',\n", + " 'basithanda thina emakhabeleni',\n", + " 'they once cared and loved us in makhabeleni',\n", + " 'hawu, sasikhula emakhabeleni',\n", + " 'oh, we grew up in makhabeleni',\n", + " 'hawu, babesithanda emakhabeleni',\n", + " 'oh, they loved and cared for us in makhabeleni',\n", + " 'ikhaya lami lisele',\n", + " 'my home is now gone and behind me',\n", + " 'ikhaya lami lingekho',\n", + " 'my home that is not here anymore',\n", + " 'hawu, sasikhula emakhabeleni',\n", + " 'oh, we grew up in makhabeleni',\n", + " 'hawu, babesithanda emakhabeleni',\n", + " 'oh, they loved and cared for us in makhabeleni',\n", + " 'uyishayelani lengane isecane wemfazi omdala?',\n", + " '(why are you beating that small child, old woman?)',\n", + " 'ngizokhulula, ngizokhulula wena',\n", + " '(i will set you free - i.e. chase you away)',\n", + " \"nkosi sikelel'i afrika (lord god bless africa)\",\n", + " \"maluphakanyisw'uphondo iwayo (let it's fame be lifted up)\",\n", + " 'yizwa imithandazo yethu (listen and hear our prayers)',\n", + " 'nkosi sikelela, nkosi sikelela (oh lord god bless)',\n", + " \"nkosi sikelel'i afrika (lord god bless africa)\",\n", + " \"maluphakanyisw'uphondo iwayo (let it's fame be lifted up)\",\n", + " 'yizwa imithandazo yethu (listen and hear our prayers)',\n", + " 'nkosi sikelela, thina lusapho iwayo (oh lord god bless us, we children of africa)',\n", + " 'woza moya (come spirit)',\n", + " 'woza moya woza (come spirit, come)',\n", + " 'woza moya (come spirit)',\n", + " 'woza moya woza (come spirit, come)',\n", + " 'woza moya oyingewele (come spirit, holy spirit)',\n", + " 'nkosi sikelela (oh lord god bless)',\n", + " 'morena boloka setjhaba sa heso (god bless our nation)',\n", + " 'ofedise dintwa le matshwenyeho (and stop all wars and suffering)',\n", + " 'o se boloke (and bless it)',\n", + " 'o se boloke morena (and bless it lord, oh god)',\n", + " 'setjhaba sa heso (bless our nation)',\n", + " 'setjhaba sa afrika (our nation, africa)',\n", + " \"nkosi sikelel'i afrika (lord god bless africa)\",\n", + " \"maluphakanyisw'uphondo iwayo (let it's fame be lifted up)\",\n", + " 'yizwa imithandazo yethu (listen and hear our prayers)',\n", + " 'nkosi sikelela (oh lord god bless us, we children of africa)',\n", + " \"nkosi sikelel'i afrika (god bless africa)\",\n", + " \"we'd like pay tribute to the great dorothy masuka\",\n", + " \"because without her we wouldn't have heard all those songs in the 40's and the 50's and the 60's that she wrote\",\n", + " \"kutheni uzulu, kutheni imali yam i pheleli ijwaleni, nontsokolo. just a endless row of songs. and because of her a whole lot of ladies from the townships and the rural areas came up with a mbaqanga style, and as you know people like the dark city sisters, intombi ezimnyama, intombi zesimanjemanje, intombi zesinqashiwe, mahotela queens, miriam makeba and the . they all came from dorothy masuku, and we'd like to pay tribute to her with this song\",\n", + " 'but before we do that let me introduce the majitas to you:',\n", + " 'on drums, from the north west province, from klerksdorp; sello montoedi!',\n", + " 'on keyboards from dube township, johanessburg, egoli, south africa, soweto; jabulani arthur mshengu tshabalala!',\n", + " 'on saxophone also from soweto, rockville; ngenekhaya khaya mahlangu!',\n", + " 'on percussion, from freetown, seiraleone, west africa, francis mane !',\n", + " 'from soweto also on bass guitar, fana zulu!',\n", + " 'and keyboards, from the north western province too, from montshiwa, mmabatho, mahikeng',\n", + " \"wait, wait, wait! let me say his name first. mokhaetsho it's a bit of a long name\",\n", + " 'sb, koketso, wakantse, hendrick, , moilwa!',\n", + " 'and guitar and everything else, from gaborone and francistown, botswana, john, longwe, blackie, montsho, selolwane!',\n", + " 'khawuleza, khawuleza, khawuleza, mama',\n", + " 'khawuleza, khawuleza, khawuleza, mama',\n", + " '(khawuleza, khawuleza, mama)',\n", + " 'khawuleza, khawuleza, khawuleza, mama',\n", + " '(sheshisa, mama, khawuleza)',\n", + " 'khawuleza, khawuleza, khawuleza, mama',\n", + " '(sheshisa, mama, khawuleza)',\n", + " 'khawuleza, khawuleza, khawuleza, mama',\n", + " \"(bathi naye amapholiza, aya ngen'endleni, mama)\",\n", + " 'khawuleza, khawuleza, khawuleza, mama',\n", + " '(sihla na ma)',\n", + " 'khawuleza, khawuleza, khawuleza, mama',\n", + " '(sihla na ma)',\n", + " 'khawuleza, khawuleza, khawuleza, mama',\n", + " '(sihla na ma)',\n", + " 'khawuleza, khawuleza, khawuleza, mama',\n", + " '(sihla na mababaton)',\n", + " 'khawuleza, khawuleza, khawuleza, mama',\n", + " '(sihla na magin, sihla na mabiya, sihla na , sihla ne meqombothi)',\n", + " 'khawuleza, khawuleza, khawuleza, mama',\n", + " 'naye amapholiza',\n", + " \"aya ngen'endleni\",\n", + " \"aya ngen'endleni\",\n", + " \"aya ngen'endleni\",\n", + " 'jonga, jonga, jonga',\n", + " 'jonga, jonga, jonga yo khawuleza',\n", + " 'jonga, jonga, jonga',\n", + " 'jonga, jonga, jonga yo khawuleza',\n", + " 'jonga, jonga, jonga',\n", + " 'jonga, jonga, jonga yo khawuleza',\n", + " 'jonga, jonga, jonga',\n", + " \"naye amapholiza, azo ngen'endleni, mama\",\n", + " 'let me hear you',\n", + " 'khawuleza',\n", + " \"bathi, naye amapholiza, aya ngen'endleni, mama\",\n", + " 'sing it!',\n", + " '(khawuleza)',\n", + " 'you sound beautiful',\n", + " \"naye amapholiza, azo ngen'endleni, mama\",\n", + " 'sing it!',\n", + " '(khawuleza)',\n", + " \"bathi, naye amapholiza, aya ngen'endleni, mama\",\n", + " 'jonga, jonga, jonga',\n", + " 'jonga, jonga, jonga yo khawuleza',\n", + " 'jonga, jonga, jonga',\n", + " 'jonga, jonga, jonga iyo mama, khawuleza',\n", + " 'one more time, now!',\n", + " \"naye amapholiza, azo ngen'endleni, mama\",\n", + " 'sing it from down here!',\n", + " '(khawuleza)',\n", + " \"bathi naye amapholiza, aya ngen'endleni, mama\",\n", + " 'sing it!',\n", + " '(khawuleza)',\n", + " 'you sound beautiful',\n", + " \"bathi naye amapholiza, aya ngen'endleni, mama\",\n", + " 'sing it!',\n", + " '(khawuleza)',\n", + " \"let's jump, jump, jump!\",\n", + " 'jonga, jonga, jonga',\n", + " 'jonga, jonga, jonga iyo khawuleza',\n", + " 'jonga, jonga, jonga',\n", + " 'jonga, jonga, jonga iyo, mama khawuleza',\n", + " 'shosholoza',\n", + " 'ku lezontaba',\n", + " 'stimela si qhamuka e south africa',\n", + " 'shosholoza',\n", + " 'stimela si qhamuka e south africa',\n", + " 'wena u ya baleka',\n", + " 'wena u ya baleka',\n", + " 'ku lezontaba',\n", + " 'stimela si qhamuka e south africa',\n", + " 'shosholoza',\n", + " 'work, work, working in the sun',\n", + " 'we will work as one',\n", + " 'shosholoza',\n", + " 'work, work, working in the rain',\n", + " \"'til there's sun again\",\n", + " 'shosholoza',\n", + " 'push, push, pushing on and on',\n", + " \"there's much to be done\",\n", + " 'shosholoza',\n", + " 'push, push, pushing in the sun',\n", + " 'we will push as one',\n", + " 'sithwele kanzima, sithwele kanzima (ooh, aah!)',\n", + " 'sithwele kanzima, sithwele kanzima (ooh, aah!)',\n", + " 'sithwele kanzima, sithwele kanzima (ooh, aah!)',\n", + " 'sithwele kanzima, sithwele kanzima (ooh, aah!)',\n", + " 'sithwele kanzima, sithwele kanzima (ooh, aah!)',\n", + " 'etshe!',\n", + " 'shosholoza',\n", + " 'shosholoza',\n", + " 'ku lezontaba',\n", + " 'stimela si qhamuka e south africa',\n", + " 'shosholoza',\n", + " 'stimela si qhamuka e south africa',\n", + " 'wena u ya baleka',\n", + " 'wena u ya baleka',\n", + " 'ku lezontaba',\n", + " 'stimela si qhamuka e south africa',\n", + " 'shosholoza',\n", + " 'work, work, working in the sun',\n", + " 'we will work as one',\n", + " 'shosholoza',\n", + " 'work, work, working in the rain',\n", + " \"'til there's sun again\",\n", + " 'shosholoza',\n", + " 'ku lezontaba',\n", + " 'stimela si qhamuka e south africa',\n", + " 'shosholoza',\n", + " 'stimela si qhamuka e south africa',\n", + " 'wena u ya baleka',\n", + " 'wena u ya baleka',\n", + " 'ku lezontaba',\n", + " 'stimela si qhamuka e south africa',\n", + " 'emaweni webaba',\n", + " 'silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'homeless, homeless',\n", + " 'moonlight sleeping on a midnight lake',\n", + " 'homeless, homeless',\n", + " 'moonlight sleeping on a midnight lake',\n", + " 'we are homeless, we are homeless',\n", + " 'the moonlight sleeping on a midnight lake',\n", + " 'and we are homeless, homeless, homeless',\n", + " 'the moonlight sleeping on a midnight lake',\n", + " 'zio yami, zio yami, nhliziyo yami',\n", + " 'nhliziyo yami amakhaza asengi bulele',\n", + " 'nhliziyo yami, nhliziyo yami',\n", + " 'nhliziyo yami, angibulele amakhaza',\n", + " 'nhliziyo yami, nhliziyo yami',\n", + " 'nhliziyo yami somandla angibulele mama',\n", + " 'zio yami, nhliziyo yami',\n", + " 'nhliziyo yami, nhliziyo yami',\n", + " 'too loo loo, too loo loo',\n", + " 'too loo loo loo loo loo loo loo loo loo',\n", + " 'too loo loo, too loo loo',\n", + " 'too loo loo loo loo loo loo loo loo loo',\n", + " 'strong wind destroy our home',\n", + " 'many dead, tonight it could be you',\n", + " 'strong wind, strong wind',\n", + " 'many dead, tonight it could be you',\n", + " 'and we are homeless, homeless',\n", + " 'moonlight sleeping on a midnight lake',\n", + " 'homeless, homeless',\n", + " 'moonlight sleeping on a midnight lake',\n", + " 'homeless, homeless',\n", + " 'moonlight sleeping on a midnight lake',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody sing hello, hello, hello',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody cry why, why, why?',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody sing hello, hello, hello',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody cry why, why, why?',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'yitho omanqoba (ih hih ih hih ih) yitho omanqoba',\n", + " 'esanqoba lonke ilizwe',\n", + " '(ih hih ih hih ih) yitho omanqoba (ih hih ih hih ih)',\n", + " 'esanqoba phakathi e england',\n", + " 'yitho omanqoba',\n", + " 'esanqoba phakathi e london',\n", + " 'yitho omanqoba',\n", + " 'esanqoba phakathi e england',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody sing hello, hello, hello',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody cry why, why, why?',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody sing hello, hello, hello',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody cry why, why, why?',\n", + " 'kuluman',\n", + " 'kulumani, kulumani sizwe',\n", + " 'singenze njani',\n", + " 'baya jabula abasi thanda yo',\n", + " 'ho',\n", + " 'ndabe zitha (king of kings)',\n", + " 'nkosi yethu (our king)',\n", + " 'mholi wezwe lethu (ruler of our land)',\n", + " 'lefatshe la bonata rona (this land of our ancestors)',\n", + " 'lea halalela (is holy)',\n", + " 'busa le lizwe bo (rule this land)',\n", + " 'busa le lizwe bo',\n", + " 'busa le lizwe bo',\n", + " 'lethu busa ngoxolo (rule with peace)',\n", + " \"is'khathi sifikile (the time has come)\",\n", + " \"is'khathi busa iyo (it's time, rule)\",\n", + " \"is'khathi sifikile (the time has come)\",\n", + " 'busa lomhlaba (rule this land)',\n", + " \"is'khathi sifikile (the time has come)\",\n", + " \"is'khathi sifikile\",\n", + " 'busa simba (rule, simba)',\n", + " 'busa simba',\n", + " 'hem na iyo',\n", + " 'hem na iyo',\n", + " 'hem na nkosi bo (rule, our king)',\n", + " 'busa simba iyo (rule, simba)',\n", + " 'hem na iyo oh busa simba iyo',\n", + " '(oh, rule simba)',\n", + " 'hem na iyo oh busa nkosi bo',\n", + " '(ah, king of kings)',\n", + " 'hem na nkosi bo oh busa simba iyo',\n", + " '(rule, our king) (oh, rule simba)',\n", + " 'busa simba iyo busa simba iyo',\n", + " '(rule, simba) (rule, simba)',\n", + " 'ubuse ngo thando (rule with love)',\n", + " 'ubuse ngo thando',\n", + " 'ubuse ngo xolo (rule with peace)',\n", + " 'busa simba, busa simba (rule, simba, rule, simba)',\n", + " 'ubuse ngo xolo (rule with peace)',\n", + " 'ubuse ngo thando (rule with love)',\n", + " 'ubuse ngo xolo',\n", + " 'ubuse ngo thando',\n", + " 'ubuse ngo xolo',\n", + " 'till we find our place',\n", + " 'on the path unwinding',\n", + " 'in the circle',\n", + " 'the circle of life',\n", + " 'circle of life',\n", + " 'ubuse busa le lizwe',\n", + " 'busa simba',\n", + " 'ubuse busa le lizwe',\n", + " 'lizwe busa simba',\n", + " 'ubuse ngo thando',\n", + " 'ndabezitha',\n", + " 'nkosi yethu',\n", + " 'mholi wezwe lethu',\n", + " '(busa simba)',\n", + " 'lefatshe la bonata rona',\n", + " 'lea halalela',\n", + " 'busa le lizwe bo',\n", + " 'busa le lizwe bo',\n", + " 'busa le lizwe bo',\n", + " 'lethu busa ngoxolo',\n", + " \"is'khathi sifikile (sifkile)\",\n", + " \"is'khathi busa iyo\",\n", + " \"is'khathi sifikile\",\n", + " 'busa lomhlaba',\n", + " \"is'khathi sifikile\",\n", + " \"is'khathi sifikile\",\n", + " 'busa simba',\n", + " 'busa simba',\n", + " 'ubuse ngo xolo',\n", + " 'ubuse ngo thando',\n", + " 'ubuse ngo xolo',\n", + " 'ubuse ngo thando',\n", + " 'ubuse ngo xolo',\n", + " \"ingonyama nengw' enamabala\",\n", + " \"ingonyama nengw' enamabala\",\n", + " \"'til we find our place\",\n", + " 'on the path unwinding',\n", + " 'in the circle',\n", + " 'the circle of life',\n", + " 'circle of life!',\n", + " '(closing drumbeat)',\n", + " 'busa le lizwe bo',\n", + " 'busa le lizwe bo',\n", + " \"busa lomhlaba weth'\",\n", + " 'busa ngoxolo',\n", + " 'busa ngothando bo',\n", + " '(ay baba iyo)',\n", + " 'busa ngothando bo',\n", + " '(halalela)',\n", + " 'busa ngothando bo',\n", + " '(oh oh)',\n", + " 'busa ngoxolo',\n", + " 'ubuse ngothando',\n", + " '(ngothando)',\n", + " 'ubuse ngoxolo',\n", + " '(halalela)',\n", + " 'ubuse ngothando',\n", + " 'busa simba!',\n", + " 'busa simba!',\n", + " 'hemna iyo',\n", + " 'hemna iyo',\n", + " 'hemna nkosi',\n", + " 'oh, busa simba iyo',\n", + " 'hemna iyo',\n", + " 'hemna iyo',\n", + " 'hemna nkosi',\n", + " 'oh, busa simba iyo',\n", + " 'izimakade',\n", + " 'ziphila nathi',\n", + " 'ziphefumula',\n", + " \"umoy' oyingcwele\",\n", + " 'gazi la mama',\n", + " \"ladal' iimanga\",\n", + " \"izingonyama z'khothama kuwe\",\n", + " 'izimakade',\n", + " 'sezibuyile',\n", + " 'zithi asiqhenye',\n", + " 'zithi asikhanye',\n", + " 'masithembe',\n", + " 'intando yezimakade',\n", + " 'simakade',\n", + " 'we live amongst gods',\n", + " 'holy is the air they breathe',\n", + " \"miracles are borne in mother's blood\",\n", + " 'and to her the kings bow down',\n", + " 'the gods have returned',\n", + " 'to tell us to stand proudly in our light',\n", + " 'may we trust in the will of the eternal ones',\n", + " 'senzenina',\n", + " 'sono sethu ubumnyama',\n", + " 'abulale afe wonke',\n", + " 'mayibuye iafrika',\n", + " 'the translation:',\n", + " 'what have we done',\n", + " 'our crime is to be poor, our crime is to be black',\n", + " 'let africa come back',\n", + " 'i hope this helps a little',\n", + " 'sweetendo lingo pri mi salindo',\n", + " 'prettyse lindo fe li drippin do',\n", + " 'oneswe anqe premi le',\n", + " 'sweetendo lingo pri mi salindo an lo',\n", + " 'suli an len',\n", + " 'le ti lifani len',\n", + " 'jen ti amenzin don',\n", + " 'antwon dalton',\n", + " 'feli jecen lindon',\n", + " 'welo some wen',\n", + " 'milen dichi lingwen',\n", + " 'ovenudon mili desu drem',\n", + " 'ovenulen dili vece uvan',\n", + " 'ovenudon mili decen twee',\n", + " 'voices in my dreams',\n", + " 'telling me where i should go',\n", + " 'saying over here',\n", + " 'is where i wanna be',\n", + " 'these melodies in me, yeah',\n", + " 'are saying this is who i am',\n", + " 'ndingaba yintoni na?',\n", + " 'ngaphandle kwakho mmino?',\n", + " \"there ain't a way to show you\",\n", + " 'there ain’t a way to show you ooh',\n", + " \"ain't no way to show you\",\n", + " \"mna nd'zojik’izinto\",\n", + " 'ngalomculo mmino',\n", + " 'when you smile, when you dance',\n", + " 'when you look into my eyes',\n", + " \"mna nd'zojik'izinto\",\n", + " 'ngalomculo mmino',\n", + " 'naba bendibuza',\n", + " \"ngab'ufuna ntoni na, yeah\",\n", + " 'bathi ndenzani',\n", + " 'ndizihlekisa ngabantu',\n", + " 'oh naba bendibuza',\n", + " \"ngab'uzokwenzani na? (ngab'uzokwenzani na?)\",\n", + " \"ndilapha ndenz'indima yam\",\n", + " \"oh oh njengaban'onesiphiwo\",\n", + " 'so i’m saying this is me (saying this is mе)',\n", + " 'oh please just let mе be (please just let me be)',\n", + " 'i’m giving you my love (giving you my love)',\n", + " 'i need your attention (giving you my love)',\n", + " \"so i'm saying this is me (saying this is me)\",\n", + " 'oh please just let me be (please just let me be)',\n", + " 'i’m giving you my love (giving you my love)',\n", + " 'i need your attention (giving you my love)',\n", + " \"so i'm saying this is me (saying this is me)\",\n", + " 'oh please just let me be (please just let me be)',\n", + " \"i'm giving you my love (giving you my love)\",\n", + " 'i need your attention (giving you my love)',\n", + " \"so i'm saying this is me (saying this is me)\",\n", + " 'oh please just let me be (please just let me be)',\n", + " 'i’m giving you my love (giving you my love)',\n", + " 'i need your attention (giving you my love)',\n", + " \"ain't no way to show you\",\n", + " \"mna nd'zojik'izinto\",\n", + " 'ngalomculo mmino',\n", + " 'when you smile, when you dance',\n", + " 'when you look into my eyes',\n", + " \"mna nd'zojik'izinto\",\n", + " 'ngalomculo mmino',\n", + " 'hem',\n", + " 'hem, hem',\n", + " 'hem, hem',\n", + " 'hem, hem, hem',\n", + " 'hem, hem, hem',\n", + " 'hem, hem',\n", + " 'hem, hem',\n", + " 'hem, hem, hem',\n", + " 'we sangoma ngi velelwe',\n", + " 'we baba ngivelelwe',\n", + " 'we baba ngivelelwe',\n", + " 'busa le lizwe bo',\n", + " 'busa le lizwe bo',\n", + " 'busa le lizwe bo',\n", + " 'busa lomhlaba',\n", + " 'busa, busa le lizwe',\n", + " 'busa, busa le lizwe',\n", + " 'busa, busa le lizwe',\n", + " 'busa lomhlaba',\n", + " 'hawu baba ngashada intombi yami esikolweni emoliva',\n", + " '(oh father i married my girl at the school on mooi river)',\n", + " 'kwashunqa uthuli kwandlovu madoda silwela lobuhle',\n", + " \"(the dust was rising with all the preparations at ndlovu's home)\",\n", + " 'usipho wakipha izinkomo ezamalobolo ezinamasondo',\n", + " '(sipho paid the bride price with a motor car)',\n", + " 'wadlala umukwa wami, wadlala engalindile',\n", + " '(and my father-in-law performed an unexpected war dance',\n", + " 'on the spur of the moment)',\n", + " 'wadlala umukwa wami engalindile kwakhikhiza abafazi',\n", + " '(my father-in-law performed an unexpected war dance',\n", + " 'and the women encouraged him with shrill cries)',\n", + " 'ngisho izulu eliphezulu lalihleka kancane',\n", + " '(even the heaven above - i.e. the zulu king - gave a small laugh)',\n", + " \"'zulu eliphezulu lalikhona lalihleka kancane\",\n", + " '(the heaven above was present and he gave a small laugh)',\n", + " 'emoliva, emoliva',\n", + " '(at mooi river)',\n", + " 'chorus:',\n", + " 'yamnandi lendaba ngaze ngashada emoliva ngiyabonga webanguni',\n", + " '(it was a wonderful event, for i eventually got married at mooi river',\n", + " 'and i thank you people of the chunu clan)',\n", + " 'ngaze ngashada ngaze ngathola nowami',\n", + " '(i eventually got married, i eventually even got my own wife)',\n", + " 'wemzila wangincelisa amasiko ngaze ngaba wumuthu',\n", + " '(mzila! you suckled me on the traditions and customs',\n", + " 'of the zulu and i became a person)',\n", + " 'hawu wemakhabela nangikhulisa ngaze ngaba wumuthu',\n", + " '(oh you people from makhabeleni you raised me until i became a person)',\n", + " 'kungathiwani ngani banguni nahlanganisa zonke izizwe',\n", + " '(and what can be said about you, machunu people',\n", + " 'for you brought together all the nations)',\n", + " 'nahlanganisa zonke izizwe ubesehlulekile ubotha',\n", + " '(you brought all the nations together',\n", + " 'botha long having failed to do this)',\n", + " 'nahlanganisa zonke izizwe ngobuhle ubesehlulekile ubotha',\n", + " '(you brought all the nations together in good spirit',\n", + " 'botha having long failed)',\n", + " 'emoliva',\n", + " '(at mooi river)',\n", + " 'chorus',\n", + " '(here i call out the praise names of various people who have been',\n", + " 'important in my life, most of whom were present at my marriage)',\n", + " 'chorus',\n", + " 'chorus x2',\n", + " 'we bhuti we bhuti',\n", + " 'we bhuti mina ndihamba nawe',\n", + " 'we bhuti we bhuti',\n", + " 'we bhuti mina ndihamba nawe',\n", + " 'verse 1 x2',\n", + " 'ngithanda na le way',\n", + " 'unguyo ngakhona',\n", + " 'webhuti mina ndihamba nawe',\n", + " 'ngithanda na le way',\n", + " 'ucula ngakhona',\n", + " 'webhuti mina ndihamba nawe',\n", + " 'bridge 1 x2',\n", + " 'eh ndihamba nawe',\n", + " 'hei ndihamba nawe',\n", + " 'we bhuti mina ndihamba nawe',\n", + " 'we bhuti ndihamba nawe, we bhuti ndihamba nawe',\n", + " 'we bhuti mina ndihamba nawe',\n", + " 'verse 2 x2',\n", + " 'ndafika endaweni ngibona abantu',\n", + " \"ehh ufak'umfana wam\",\n", + " \"ugcwel'umfana wami\",\n", + " 'ngathi loya lobhuti loya',\n", + " 'isoka isoka lami',\n", + " 'bridge x2',\n", + " 'chorus x2',\n", + " 'ndithanda na le way',\n", + " 'ujika ngakhona',\n", + " 'we sisi mina ndihamba nawe',\n", + " 'ndithanda na le way',\n", + " 'ududla ngakhona',\n", + " 'we sisi mina ndihamba nawe',\n", + " 'bridge 2 x2',\n", + " 'eh ndihamba nawe',\n", + " 'ohh ndihamba nawe',\n", + " 'we sisi mina ndihamba nawe',\n", + " 'we sisi ndihamba nawe, we sisi ndihamba nawe',\n", + " 'we sisi mina ndihamba nawe',\n", + " 'ndithanda na le way',\n", + " 'ungiyo ngakhona',\n", + " 'we bhuti mina ndihamba nawe',\n", + " 'ndithanda na le way',\n", + " 'ududla ngakhona',\n", + " \"ay' suka mina ndihamba nawe\",\n", + " 'eeh ndihamba nawe',\n", + " 'eeh ndihamba nawe',\n", + " 'we bhuti mina ndihamba nawe',\n", + " 'we sisi ndihamba nawe',\n", + " 'we sisi ndihamba nawe',\n", + " 'we sisi ndihamba nawe',\n", + " 'lerato le monate ha ona le lona pelong ya hao',\n", + " 'ha o sena lerato o jwalo ka tshipi, e bakang medumo fela',\n", + " 'entse ere kelekelekeke kelekelekeke kelekelekeke',\n", + " \"don't worry\",\n", + " 'weh mama, sthandwa se nhliziyo yami',\n", + " \"i call you mama, you gon' call me papa\",\n", + " 'weh mama, sthandwa se nhliziyo yami',\n", + " \"i call you mama, you gon' call me papa\",\n", + " 'uyangijabulisa, uyangiphambanisa',\n", + " 'uyangijabulisa, uyangiphambanisa',\n", + " 'you make me happy, ungiyenza happy',\n", + " 'you make me happy, ungiyenza happy',\n", + " \"don't worry\",\n", + " \"if you're happy, i am happy, we are happy, happy people\",\n", + " \"got no worries, got no worries, we ain't got no worries\",\n", + " '3: nhlanhla',\n", + " \"oh my goodo, i'm in love with this man\",\n", + " 'he makes me so happy, he make me wanna go - he banna',\n", + " 'pu pu pu pu pu puuu, papa weeeeh',\n", + " 'lerato le monate ha ona le lona pelong ya hao',\n", + " 'ha o sena lerato o jwalo ka tshipi, e bakang medumo fela',\n", + " 'entse ere king king kin kiring king',\n", + " 'king, king king kin kiring king king',\n", + " 'jabulile eh',\n", + " 'ke tla go rekela di pompom, pomporom popom pompom',\n", + " 'i fell in love',\n", + " 'with the beauty of',\n", + " \"mother nature's gift to great south africa\",\n", + " 'but it struck me when',\n", + " 'i saw those black men',\n", + " 'live township life in mamelodi east pretoria',\n", + " 'remains of an unfair system, it was not supposed to last',\n", + " \"black page in the book of stories of the white man's past\",\n", + " 'we, dutch white punks',\n", + " 'built up our gear',\n", + " 'hey, we made a difference, rock, rock, rock a black high school!',\n", + " 'yeah, yeah, yeah',\n", + " 'mamelodi melodies',\n", + " 'we drove into',\n", + " 'another world and i',\n", + " 'could only stare at clouds from burning trash filling the air',\n", + " 'and i felt like',\n", + " 'a silly tourist on',\n", + " \"a cheap trip into other people's daily misery\",\n", + " 'but i met cool blacks and whites telling me they really try',\n", + " 'to fight against their prejudice, look each other in the eye',\n", + " 'we, dutch white punks',\n", + " 'built up our gear',\n", + " 'hey, we made a difference, rock, rock, rock a black high school!',\n", + " '1 for the shine that glows on your face',\n", + " '2 for the melenin that and origins trace',\n", + " '3 for the color of all melodies face',\n", + " 'trinity for all my equal people takes over the space',\n", + " 'coz siyaphanda, siyakhanda sihloksa amakhanda',\n", + " 'ngoba sthanda sanda ngukfakeli sandla',\n", + " 'manje ngiyawanda phakathi kwabo ubani ozong thanda',\n", + " 'angsiza amandla sibe inkosi nabo ngok thanda',\n", + " 'ngoba sithule tu vele mele skhulume toe',\n", + " 'ksele kuwe ukuthi uzbone uzkhulule ku-lula',\n", + " 'vula amasango sicu-le',\n", + " 'mbhube kuze kube kude',\n", + " 'qhude biza ilanga sibemunye',\n", + " 'sebenze kabunye ngoba thina sithunwe',\n", + " 'kunye angakusho akzokwenza kune',\n", + " 'hlanyisa umoya futhi sizokwenzu thuke',\n", + " 'thuka ngenjabulo uzbone uphuka khula sula',\n", + " 'loko okzok hlula phuma',\n", + " 'sibe ilabantu bamanje sibonisane kukanje',\n", + " 'ngama langa langa phantsi manzi',\n", + " \"sthelele sibe ila abantu bezimbhali khali mali masngahlali sthathis' skhali\",\n", + " 'singalali sisvikele kwez ngacaci kamiliko yamelodi mamelodi for u let us',\n", + " 'shine like what!',\n", + " 'ek sal nooit vergeet, die fantastiese tijd',\n", + " 'mamelodi melodies',\n", + " 'en ik sal onthou, hou hulle saam aan more bou',\n", + " 'mamelodi melodies',\n", + " 'tkzee and benni',\n", + " 'shibobo',\n", + " 'peace!',\n", + " \"(let's get ready to rumble!)\",\n", + " \"benni's in the 18th area\",\n", + " 'tkzee in the area',\n", + " 'and bafana in the area',\n", + " 'halagasha',\n", + " \"benni's in the 18th area\",\n", + " 'tkzee in the area',\n", + " 'and bafana in the area',\n", + " 'halagasha',\n", + " 'nkosi sikelela',\n", + " 'tina, tina na bafana',\n", + " 'mbazoxwala siyaya',\n", + " \"e'france, abana chance\",\n", + " 'benni, laat die poppe dans',\n", + " 'effy dansieza',\n", + " 'ubani mbenga cheata bafana',\n", + " 'bafana bafana',\n", + " 'ukoza nazukoza laga',\n", + " 'sondela, sonsocholoza',\n", + " 'koleza undaba haha',\n", + " 'bazuxwala sondaba sidlala nebola',\n", + " 'next time incho',\n", + " 'unami yange umdu',\n", + " 'shibobo wadlula',\n", + " 'intoni sadli lomuchwewu',\n", + " 'namilwe so solintsweze',\n", + " 'kolintcheza bala',\n", + " 'siyaya bafana bazukala',\n", + " 'halagasha hulakumpa',\n", + " 'bentswe no malume limasina',\n", + " 'luncha bafana',\n", + " 'benni na bantwana',\n", + " 'hahale tseba mos',\n", + " 'holla phalafala fela',\n", + " \"benni's in the 18th area\",\n", + " 'tkzee in the area',\n", + " 'and bafana in the area',\n", + " 'halagasha',\n", + " \"benni's in the 18th area\",\n", + " 'tkzee in the area',\n", + " 'and bafana in the area',\n", + " 'halagasha',\n", + " 'hy lekker lekker vis en chops',\n", + " 'to the north, to the south western',\n", + " 'south africa, heitada! (halagasha)',\n", + " 'one for tkzee (halagasha)',\n", + " 'one for bafana (halagasha)',\n", + " 'one for bantwana (halagasha)',\n", + " 'one for madiba (ooh aah)',\n", + " 'ek laat hulle dans (ooh ahh)',\n", + " 'ek laat hulle dans',\n", + " 'dis die kaap se dans (ja!)',\n", + " 'en die poppe sal dans (hola)',\n", + " 'die poppe sal dans',\n", + " 'now can you see dat om benni maak jou mal?',\n", + " 'now can you see dat tkzee maak jou mal?',\n", + " 'now can you see dat bafana maak jou mal?',\n", + " 'now can you see dat tkzee maak jou mal?',\n", + " 'hulle maak jou mal',\n", + " 'bafana maak jou mal',\n", + " 'hulle maak jou mal',\n", + " 'tkzee maak jou mal',\n", + " 'haha ja',\n", + " \"benni's in the 18th area\",\n", + " 'tkzee in the area',\n", + " 'and bafana in the area',\n", + " 'halagasha',\n", + " \"benni's in the 18th area\",\n", + " 'tkzee in the area',\n", + " 'and bafana in the area',\n", + " 'halagasha',\n", + " \"a si m'bonanga\",\n", + " \"a si m'bonanga u mandela thina\",\n", + " 'lapha ekhona',\n", + " 'lapha ehleli khona',\n", + " 'oh the sea is cold and the sky is grey',\n", + " 'look across the island into the bay',\n", + " 'we are all islands till comes the day',\n", + " 'we cross the buning water',\n", + " \"a si m'bonanga\",\n", + " \"a si m'bonanga u mandela thina\",\n", + " 'lapha ekhona',\n", + " 'lapha ehleli khona',\n", + " 'a seagull wings across the sea',\n", + " 'borken silence is what i dream',\n", + " 'who has the words to close the distance',\n", + " 'between you and me',\n", + " \"a si m'bonanga\",\n", + " \"a si m'bonanga u mandela thina\",\n", + " 'lapha ekhona',\n", + " 'lapha ehleli khona',\n", + " 'steven biko',\n", + " \"a si m'bonanga\",\n", + " \"a si m'bonanga umfowethu thina\",\n", + " 'lapha ekhona',\n", + " 'la wa fela khona',\n", + " 'vicoria mxenge',\n", + " \"a si m'bonanga\",\n", + " \"a si m'bonanga u tate wetha thina\",\n", + " 'lapha ekhona',\n", + " 'la wa fela khona',\n", + " 'neil aggett',\n", + " \"a si m'bonanga\",\n", + " \"a si m'bonanga umfowethu thina\",\n", + " 'lapha ekhona',\n", + " 'la wa fela khona',\n", + " 'hawu ngithi heyiwena',\n", + " 'heyi wena',\n", + " 'heyi wena hawe',\n", + " 'si you fika nini',\n", + " 'la siya knona',\n", + " 'la siya knona']},\n", + " 'data': ['in the beginning he created a groove',\n", + " 'and with that groove he made us move',\n", + " 'and it set our souls free',\n", + " 'kwaito is a way of life',\n", + " 'and it makes you reach out and raise your hands in the air',\n", + " 'to sing a song of peace, sing a song of happiness',\n", + " 'kwaito is our release',\n", + " 'it shines our souls till three in the morning',\n", + " 'on and on and on',\n", + " 'in the beggining the was the truth',\n", + " 'and in the truth there lived a sound',\n", + " 'it picks you up from the ground',\n", + " 'the beating of the drum',\n", + " 'from the bottom of the base, pop eye the snap',\n", + " 'makes you want to throw your hands in the air',\n", + " 'can you feel it?',\n", + " 'like i feel it?',\n", + " \"are you sure you're feeling good in your soul\",\n", + " 'hela ntate',\n", + " 'hela ntate waka',\n", + " 'moshimane ona onketsetsa mathai-thai',\n", + " 'hela ntate, (why o fihla ka moferefere)',\n", + " 'hella ntate waka (why o fihla ka moferefere)',\n", + " 'moshimane ona onketsetsa mathai-thai',\n", + " 'ne ke ile kwana mashamplane',\n", + " 'a fihla a nketsetsa mathai-thai (why o fihla ka moferefere)',\n", + " 'ne ke ile kwana mashamplane',\n", + " 'a fihla a nketsetsa mathai-thai (why o fihla ka moferefere)',\n", + " 'hela ntate, (why o fihla ka moferefere)',\n", + " 'hella ntate waka (why o fihla ka moferefere)',\n", + " 'moshimane ona onketsetsa mathai-thai',\n", + " 'ne ke ile kwana mashamplane',\n", + " 'a fihla a nketsetsa mathai-thai',\n", + " 'hela ntate, (why o fihla ka moferefere)',\n", + " 'hella ntate waka (why o fihla ka moferefere)',\n", + " 'eh jou cabbage',\n", + " 'jah jy your moemish',\n", + " 'ey is fokol',\n", + " 'ja jou bokol',\n", + " 'jy snack my hoender',\n", + " 'yah kamel',\n", + " 'mara akunanix kafiir',\n", + " 'yonke into ihlangene',\n", + " 'tshela mina wena vele fede ukhala ngani',\n", + " 'mara vele kanti wena fede ukhala ngani',\n", + " 'angithi usi twistile, and fede sikubacile',\n", + " 'fede mina ukuthi kahle kahle ukhala ngani',\n", + " 'fede kanti kanti wena ukhala ngani',\n", + " 'why wena for istyle sami man',\n", + " 'why wena for istyle sami man',\n", + " 'angithi usi twistile, and fede usibacile',\n", + " 'fede kanti kanti wena ukhala ngani',\n", + " 'fede kanti kanti wena ukhala ngani',\n", + " 'angithi usi twistile, and fede usibacile',\n", + " 'tshela mina wena vele fede ukhala ngani',\n", + " 'mara vele kanti wena fede ukhala ngani',\n", + " 'mara vele kanti wena fede ukhala ngani',\n", + " 'mara vele kanti wena fede ukhala ngani',\n", + " 'mara vele kanti wena fede ukhala ngani',\n", + " 'fede mina ukuthi kahle kahle ukhala ngani',\n", + " 'fede kanti kanti wena ukhala ngani',\n", + " 'fede kanti kanti wena ukhala ngani',\n", + " 'fede kanti kanti wena ukhala ngani',\n", + " 'fede kanti kanti wena ukhala ngani',\n", + " 'vele wena mfana kama vimbile, vele wena mfana kama masimbela',\n", + " 'angithi usi twsitile, and futhi sikubhacile',\n", + " 'abantu abafana nje ngawe bayobhabadiswa ngomlilo...',\n", + " 'ndabe zitha',\n", + " 'nkosi yethu',\n", + " 'mholi wezwe lethu',\n", + " 'lefatshe la bonata rona',\n", + " 'lea halalela',\n", + " 'busa le lizwe bo',\n", + " 'busa le lizwe bo',\n", + " 'busa le lizwe bo',\n", + " 'lethu busa ngoxolo',\n", + " \"is'khathi sifikile\",\n", + " \"is'khathi busa iyo\",\n", + " \"is'khathi sifikile\",\n", + " 'busa lomhlaba',\n", + " \"is'khathi sifikile\",\n", + " \"is'khathi sifikile\",\n", + " 'busa simba',\n", + " 'busa simba',\n", + " 'ubuse ngo xolo',\n", + " 'ubuse ngo thando',\n", + " 'ubuse ngo xolo',\n", + " 'ubuse ngo thando',\n", + " 'ubuse ngo xolo',\n", + " \"ingonyama nengw' enamabala\",\n", + " \"ingonyama nengw' enamabala\",\n", + " \"'til we find our place\",\n", + " 'on the path unwinding',\n", + " 'in the circle',\n", + " 'the circle of life',\n", + " 'circle of life',\n", + " 'ndabe zitha, nkosi yethu',\n", + " 'mholi wezwe lethu',\n", + " 'lefatshe la bonata rona',\n", + " 'lea halalela',\n", + " 'busa le lizwe bo',\n", + " 'busa le lizwe bo',\n", + " 'busa le lizwe bo',\n", + " 'lethu busa ngoxolo',\n", + " \"is'khathi sifikile (sifikile)\",\n", + " 'is’khathi busa iyo ()',\n", + " \"is'khathi sifikile ()\",\n", + " 'busa lomhlaba',\n", + " \"is'khathi sifikile (yeah)\",\n", + " 'is’khathi sifikile (sifikile)',\n", + " 'busa simba, busa simba (hey)',\n", + " 'ubuse ngo xolo ()',\n", + " 'ubuse ngo thando ()',\n", + " 'ubuse ngo xolo ()',\n", + " 'ubuse ngo thando, ubuse ngo xolo (hey)',\n", + " \"ingonyama, nengw' enamabala\",\n", + " \"ingonyama, nengw' enamabala\",\n", + " \"'til we find our place\",\n", + " 'on the path unwinding',\n", + " 'in the circle, the circle of life',\n", + " 'circle of life',\n", + " 'besito pa tí',\n", + " 'besito pa tí',\n", + " 'besito de azúcar, canela y anís',\n", + " 'one kiss for you',\n", + " 'one kiss for me',\n", + " 'besito pa tí',\n", + " 'besito pa tí',\n", + " 'besito de azúcar, canela y anís',\n", + " 'one kiss for you',\n", + " 'one kiss for me',\n", + " \"(xhosa) nkosi sikelel' iafrika - god bless africa\",\n", + " \"maluphakanyisw' uphondo lwayo\",\n", + " '(zulu) yizwa imithandazo yethu',\n", + " 'nkosi sikelela, thina lusapho lwayo',\n", + " '(sesotho) morena boloka setjhaba sa heso',\n", + " 'o fedise dintwa le matshwenyeho',\n", + " 'o se boloke, o se boloke setjhaba sa heso',\n", + " 'setjhaba sa, south afrika — south afrika',\n", + " '(afrikaans) uit die blou van onse hemel',\n", + " 'uit die diepte van ons see',\n", + " 'oor ons ewige gebergtes',\n", + " 'waar die kranse antwoord gee',\n", + " '(english) sounds the call to come together',\n", + " 'and united we shall stand',\n", + " 'let us live and strive for freedom',\n", + " 'in south africa our land',\n", + " 'emaweni webaba',\n", + " 'silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba siiale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'webaba silale maweni',\n", + " 'homeless, homeless',\n", + " 'moonlight sleeping on a midnight lake',\n", + " 'homeless, homeless',\n", + " 'moonlight sleeping on a midnight lake',\n", + " 'we are homeless, we are homeless',\n", + " 'the moonlight sleeping on a midnight lake',\n", + " 'and we are homeless, homeless, homeless',\n", + " 'the moonlight sleeping on a midnight lake',\n", + " 'zio yami, zio yami, nhliziyo yami',\n", + " 'nhliziyo yami amakhaza asengi bulele',\n", + " 'nhliziyo yami, nhliziyo yami',\n", + " 'nhliziyo yami, angibulele amakhaza',\n", + " 'nhliziyo yami, nhliziyo yami',\n", + " 'nhliziyo yami somandla angibulele mama',\n", + " 'zio yami, nhliziyo yami',\n", + " 'nhliziyo yami, nhliziyo yami',\n", + " 'too loo loo, too loo loo',\n", + " 'too loo loo loo loo loo loo loo loo loo',\n", + " 'too loo loo, too loo loo',\n", + " 'too loo loo loo loo loo loo loo loo loo',\n", + " 'strong wind destroy our home',\n", + " 'many dead, tonight it could be you',\n", + " 'strong wind, strong wind',\n", + " 'many dead, tonight it could be you',\n", + " 'and we are homeless, homeless',\n", + " 'moonlight sleeping on a midnight lake',\n", + " 'homeless, homeless',\n", + " 'moonlight sleeping on a midnight lake',\n", + " 'homeless, homeless',\n", + " 'moonlight sleeping on a midnight lake',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody sing hello, hello, hello',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody cry why, why, why?',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody sing hello, hello, hello',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody cry why, why, why?',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'yitho omanqoba ( ih hih ih hih ih) yitho omanqoba',\n", + " 'esanqoba lonke ilizwe',\n", + " '(ih hih ih hih ih) yitho omanqoba (ih hih ih hih ih)',\n", + " 'esanqoba phakathi e england',\n", + " 'yitho omanqoha',\n", + " 'esanqoba phakathi e london',\n", + " 'yitho omanqoba',\n", + " 'esanqoba phakathi e england',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody sing hello, hello, hello',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody cry why, why, why?',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody sing hello, hello, hello',\n", + " 'somebody say ih hih ih hih ih',\n", + " 'somebody cry why, why, why?',\n", + " 'kuluman',\n", + " 'kulumani, kulumani sizwe',\n", + " 'singenze njani',\n", + " 'baya jabula abasi thanda',\n", + " 'yo ho',\n", + " 'hamba bhekile, hamba bhekile',\n", + " 'hamba bhekile, hamba bhekile',\n", + " 'hamba bhekile, hamba bhekile (sheshisa bhekile siyo hlala )',\n", + " 'hamba bhekile, hamba bhekile (sheshisa bhekile siyo hlala )',\n", + " 'hamba bhekile, hamba bhekile (sheshisa bhekile siyo hlala )',\n", + " 'hamba nam, hamba nam',\n", + " 'hamba nam, hamba nam',\n", + " 'hamba nam, hamba nam',\n", + " 'hamba nam, iyo-iyo-iyo',\n", + " 'baby, to be loved by you',\n", + " 'oh, baby, to be loved by you',\n", + " '(baby to be loved by you, baby to be loved by you, baby to be loved by you)',\n", + " 'baby, to be loved by you (baby, to be loved by you)',\n", + " 'baby, to be loved by you (baby, to be loved by you)',\n", + " 'baby, to be loved by you (baby, to be loved by you)',\n", + " 'baby, to be loved by you (baby, to be loved by you)',\n", + " 'kudala silapha',\n", + " 'ku nini simile?',\n", + " 'kudala silapha',\n", + " 'ku nini simile?',\n", + " 'hamba nam, hamba nam',\n", + " 'hamba nam, hamba nam',\n", + " 'hamba nam, hamba nam',\n", + " 'hamba nam, iyo-iyo-iyo',\n", + " 'baby, to be loved by you',\n", + " 'baby, to be loved by you',\n", + " 'baby, to be loved by you',\n", + " 'baby, to be loved by you',\n", + " 'kudala silapha',\n", + " 'ku nini simile?',\n", + " 'kudala silapha (baby, to be loved by you)',\n", + " 'ku nini simile? (baby, to be loved by you)',\n", + " 'hamba nam, hamba nam',\n", + " 'hamba nam, hamba nam',\n", + " 'hamba nam, hamba nam',\n", + " 'hamba nam, iyo-iyo-iyo',\n", + " 'hamba nam, hamba nam',\n", + " 'hamba nam intombi yam',\n", + " 'hamba bhekile, hamba nam',\n", + " 'hamba bhekile, hamba nam',\n", + " 'hamba nam intombi yam',\n", + " 'hamba bhekile, sukuhlala ndawonye',\n", + " 'hamba bhekile, sukuhlala ndawonye',\n", + " 'hamba bhekile, sukuhlala ndawonye',\n", + " 'hamba bhekile, sukuhlala ndawonye',\n", + " 'ad libs:',\n", + " 'hey, hey',\n", + " \"k'sazo shunq' uthuli\",\n", + " 'hey, hey',\n", + " \"k'sazo shunq' uthuli\",\n", + " 'hey, hey, hey, hey',\n", + " \"k'sazo shunq' uthuli\",\n", + " 'verse 1:',\n", + " 'sigqoke s’yacontsa/ ungas’dlel’ umona',\n", + " 'i don’t have a sponsor/ kodwa ng’ya skora',\n", + " 'enter the venue ngathi yim’ ibhoza',\n", + " 'rich on my body/ i-stripes onyaweni',\n", + " 's’gruva kakhulu/ sidl’ imali b’nuku',\n", + " 's’hamba eb’suku/ asilish’ iduku',\n", + " 'ang’yona imoshi/ang’phushi philisi',\n", + " 'ng’shaya ngemcondo/ unomona yini?',\n", + " 'not nxamalala/ ang’kwazi enkandla',\n", + " 'ang’yen’ ucyril/ ang’khohlw’ imarikana',\n", + " 'kodw’ as’kholapho/ uk’phapha nginakho',\n", + " 'this clever black will always bring it back',\n", + " 'don’t you forget i’ve got notes in my pad',\n", + " 'when you’re making your tracks/ just be mindful of that',\n", + " 'times, they are changing/ it’s a revolution',\n", + " 'when someone like me has your ears when i speak',\n", + " 'hook (x2)',\n", + " 'yash’ induku',\n", + " 'ungaboni ngoba s’thand’ is’gubhu',\n", + " \"ubon’ ukuthi siyi 'phukuphuku\",\n", + " \"uban' is'phukuphuku?\",\n", + " 'ngoba s’thand’ i-groove',\n", + " 'verse 2:',\n", + " 'ng’pheth’ abocherrie abahlanyis’ odaddy',\n", + " 'kupaquz’ indoda ngob’ ibon’ iphenti',\n", + " 'he offers her drinks/ she doesn’t want it',\n", + " 'she thanks him and leaves/ now he’s here talking shit',\n", + " 'he calls her a bitch just ‘cause he couldn’t stick it',\n", + " 'thinks she’s out here for a blesser or something',\n", + " 'she couldn’t be bothered/ she’s got her own cheese',\n", + " 'got her own wheels/ and she only smokes weed',\n", + " 'her iq is mental/ he couldn’t compete',\n", + " 'um’thatha kancane/ ‘cause she loves to party',\n", + " 'it don’t even matter how she makes her money',\n", + " 'just don’t be a dick and she might let you in',\n", + " 'kanti bahlali sikuphi, silana?',\n", + " 'just let other kids like their lives how they wanna',\n", + " 'bathandi bezint’ asenzen’ umathanda',\n", + " 'akekh’ ozos’tshela/ hakuna matata',\n", + " 'hook (x2)']}}}}" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "eval_lines_lower" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Verse Labeling" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "labeled_parts = lyrics_distinct_all.loc[\n", + " (lyrics_distinct_all[\"lyrics\"].str.contains(\"verse|Verse\"))\n", + " & (lyrics_distinct_all[\"lyrics\"].str.contains(\"chorus|Chorus\"))\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "!-Lyrics Begin-\n", + "\n", + "[Verse 1:]\n", + "Well I know just what it is you want the way you love and get enough and then you move on\n", + "You play the game of who you need and learn his name and walk away to find the next one\n", + "You say the things your looking for look past me and door to door\n", + "But darling did you think I wouldn't know\n", + "\n", + "[Chorus:]\n", + "I might not be what you want\n", + "I'm gonna be your halfway\n", + "I might not be what you need\n", + "But I'm gonna be the way\n", + "I'm never gonna be the thing you want\n", + "But I'm gonna be your halfway\n", + "I might not be what you need\n", + "I'm gonna be your halfway\n", + "(halfway, I'll be your halfway, halfway, I'll be your halfway)\n", + "\n", + "[Verse 2:]\n", + "You like to close your eyes and nod and picture him and what he'd say and what he looks like\n", + "But all I can think is all the dreams in the world that can match up to the real thing, the real thing\n", + "\n", + "[Chorus:]\n", + "I might not be what you want\n", + "I'm gonna be your halfway\n", + "I might not be what you need\n", + "But I'm gonna be the way\n", + "I'm never gonna be the thing you want\n", + "But I'm gonna be your halfway\n", + "I might not be what you need\n", + "I'm gonna be your halfway\n", + "\n", + "[Bridge:]\n", + "I'm gonna be forever yours\n", + "Don't you dare believe her, no\n", + "I'm gonna be forever yours\n", + "She's always gonna let you go\n", + "I could stay up wait the whole night\n", + "But she's never gonna show\n", + "\n", + "[Chorus:]\n", + "I might not be what you want\n", + "I'm gonna be your halfway\n", + "I might not be what you need\n", + "But I'm gonna be the way\n", + "I'm never gonna be the thing you want\n", + "But I'm gonna be your halfway\n", + "I might not be what you need\n", + "I'm gonna be your halfway\n", + "\n", + "I might not be what you want (I'm gonna be forever yours)\n", + "Baby I won't be what you want\n", + "I might not be what you need\n", + "But I'm gonna be the way ya\n", + "I'm never gonna be the thing you want (I'm gonna be forever yours)\n", + "But I'm gonna be your halfway\n", + "I might not be what you need\n", + "But I'm gonna be your halfway\n", + "\n", + "!-Lyrics End-\n", + "\n", + "[Chorus]\n", + "!Franchesckaar!\n", + "They all love you\n", + "!Franchesckaar!\n", + "They all want you\n", + "!Franchesckaar!\n", + "Of course they do\n", + "!Franchesckaar!\n", + "Oh yes, it's true\n", + "!Franchesckaar!\n", + "They love your skin\n", + "!Franchesckaar!\n", + "They want your hair\n", + "!Franchesckaar!\n", + "They want your eyes\n", + "!Franchesckaar!\n", + "I tell no lies\n", + "\n", + "[Verse 1]\n", + "Jack Wills, clipped hair, penciled eyes, you get attention\n", + "Tight shirt, straight teeth, pinned up smile, all of them mention\n", + "How you look nice, tip-top, beautiful, the cat's pajamas\n", + "Suntan, golden brown, where you been? To the Bahamas?\n", + "\n", + "[Pre-Chorus]\n", + "Oh, but you can't see it, babe\n", + "Oh, you just see through it all\n", + "Oh, the girls turn green when they see you\n", + "Cause all of the boys start to call\n", + "\n", + "[Chorus]\n", + "!Franchesckaar!\n", + "They all love you\n", + "!Franchesckaar!\n", + "They all want you\n", + "!Franchesckaar!\n", + "Of course they do\n", + "!Franchesckaar!\n", + "Oh yes, it's true\n", + "!Franchesckaar!\n", + "They love your skin\n", + "!Franchesckaar!\n", + "They want your hair\n", + "!Franchesckaar!\n", + "They want your eyes\n", + "!Franchesckaar!\n", + "\n", + "[Verse 2]\n", + "You've got your blue eyes, pink lips, Ugg boots, and lots of passion\n", + "Acoustic, iPod, soft sounds, music fashion\n", + "Sloan style, neck scarves, clingy friends all around you\n", + "You're the icon, shine out, watch what you do\n", + "\n", + "[Pre-Chorus]\n", + "Oh, but you can't feel it, babe\n", + "The effect you have on all of them\n", + "Oh, everyone stops and stares\n", + "And then the boys begin to call\n", + "\n", + "[Chorus]\n", + "!Franchesckaar!\n", + "They all love you\n", + "!Franchesckaar!\n", + "They all want you\n", + "!Franchesckaar!\n", + "Of course they do\n", + "!Franchesckaar!\n", + "Oh yes, it's true\n", + "!Franchesckaar!\n", + "They love your skin\n", + "!Franchesckaar!\n", + "They want your hair\n", + "!Franchesckaar!\n", + "They want your eyes\n", + "!Franchesckaar!\n", + "I tell no lies\n", + "\n", + "[Chorus]\n", + "!Franchesckaar!\n", + "They all love you\n", + "!Franchesckaar!\n", + "They all want you\n", + "!Franchesckaar!\n", + "Of course they do\n", + "!Franchesckaar!\n", + "Oh yes, it's true\n", + "!Franchesckaar!\n", + "They love your skin\n", + "!Franchesckaar!\n", + "They want your hair\n", + "!Franchesckaar!\n", + "They want your eyes\n", + "!Franchesckaar!\n", + "I tell no lies\n", + "\n", + "[Bridge]\n", + "Cause they want you\n", + "And they need you\n", + "And they love you\n", + "And they crave you\n", + "Cause they want you\n", + "And they need you\n", + "And they love you, love you\n", + "\n", + "[Chorus]\n", + "!Franchesckaar!\n", + "They love you, yeah, yeah\n", + "They love you\n", + "!Franchesckaar!\n", + "They want you, yeah, yeah\n", + "They want you\n", + "!Franchesckaar!\n", + "They want your skin, your hair, your eyes\n", + "!Franchesckaar!\n", + "I don't tell no lies, no\n", + "\n", + "[Chorus]\n", + "!Franchesckaar!\n", + "They all love you\n", + "!Franchesckaar!\n", + "They all want you\n", + "!Franchesckaar!\n", + "Of course they do\n", + "!Franchesckaar!\n", + "Oh yes, it's true\n", + "!Franchesckaar!\n", + "They love your skin\n", + "!Franchesckaar!\n", + "They want your hair\n", + "!Franchesckaar!\n", + "They want your eyes\n", + "!Franchesckaar!\n", + "I tell no lies\n", + "\n", + "[Intro]\n", + "!UOY sevol nataS\n", + "Uoy... uoy... uoy... uoy...\n", + "\n", + "[Verse 1]\n", + "Mummy, she don't love you\n", + "'Cause you remind her of your dad\n", + "Teachers, they don't love you\n", + "They get paid to call you bad\n", + "Government, it don't love you\n", + "'Less it's facing re-election\n", + "Pop star, he don't love you\n", + "'Less you lick his gnarled erection\n", + "\n", + "[Chorus]\n", + "!UOY sevol nataS\n", + "\n", + "[Verse 2]\n", + "Well, the gun lobby says it loves you\n", + "But they say that guns don't kill\n", + "Christians say they love you\n", + "Only 'cause it's the Lord's will\n", + "Sadists say they love you\n", + "Only if you don't want them to\n", + "Masochists say they love you\n", + "If you promise to hate them too\n", + "\n", + "[Chorus]\n", + "!UOY sevol nataS\n", + "!UOY sevol nataS\n", + "\n", + "[Bridge]\n", + "Who loves you, pretty baby?\n", + "Who's gonna help you through the night?\n", + "Who loves you, pretty mumma?\n", + "Who's always there to make it right?\n", + "\n", + "[Verse 3]\n", + "There's only one person who loves you\n", + "Break the code and understand\n", + "Play all those records backwards\n", + "Of those heavy metal bands\n", + "Fuck me! Fuck me! Lord Jesus\n", + "When the temperature's minus fifty\n", + "You've never seen vomit so green\n", + "And your head's done the full 360\n", + "\n", + "[Intro]\n", + "!llmind put the loop on\n", + "\n", + "[Chorus]\n", + "No one told me that these shots start addin' up (No)\n", + "No one told me I should stop, that I've had enough\n", + "Now I'm a little fucked up, but I think I'll be okay\n", + "Either way, I'll be back, tomorrow's another day (Yeah, yeah), yeah\n", + "\n", + "[Verse 1]\n", + "Yeah, I'm nicked up and I'm bruised from the shit pumped through the news\n", + "Need my dick sucked before noon, need a twist up around two\n", + "If I give up then I lose, so I sit up, make a move\n", + "Need a drink up, make a tune, what I think of comes true\n", + "So let me focus\n", + "You talkin' way too much, it's midnight, let me roll this\n", + "Unless you tryna fuck, don't hit me up, you know this\n", + "I know it's harsh, but life is different now\n", + "You view me as a picture now, this isn't how I pictured now\n", + "Sun is shinin' in the studio and I don't got no windows\n", + "Those are just my angels, I'm surrounded, they just tip-toe\n", + "They might be subtle, but they're there\n", + "So I don't think it's fair to say that life is unfair, yeah\n", + "\n", + "[Chorus]\n", + "No one told me that these shots start addin' up (No)\n", + "No one told me I should stop, that I've had enough\n", + "Now I'm a little fucked up, but I think I'll be okay\n", + "Either way, I'll be back, tomorrow's another day (Yeah, yeah)\n", + "\n", + "[Verse 2]\n", + "Somewhere eatin' pasta, countin' lot of dollars\n", + "Movin' like a politician, don't approach me\n", + "I'm at the Kahala, smokin', eatin' guava\n", + "This is what you call the life, if you know me\n", + "Then you're right here smokin', eatin' guava, laughin' with me too (It's true, yeah)\n", + "I thought I was gonna die around the time that I made Zoo (It's true, yeah)\n", + "Yeah, yeah, I kept a smile plastered\n", + "Let's switch shoes, me and you, we gon' see who runs a mile faster\n", + "I bet it's me\n", + "You would think I'm sellin' dog food how they jealous of my pedigree\n", + "They shot me, I ain't rest in peace, I'm still standin', yeah\n", + "\n", + "[Chorus]\n", + "No one told me that these shots start addin' up (No)\n", + "No one told me I should stop, that I've had enough\n", + "Now I'm a little fucked up, but I think I'll be okay\n", + "Either way, I'll be back, tomorrow's another day (Yeah, yeah, yeah)\n", + "\n", + "[Intro: Sample]\n", + "[?]\n", + "\"[?] Hilltop Hoods\n", + "Are you ready for the Hilltop Hoods?\n", + "Say Hilltop\" \"Hilltop\"\n", + "\n", + "[Scratches: DJ Debris]\n", + "\"If you feel the vibe\"\n", + "\"That beautiful sound I'm loving\"\n", + "\"So if you feel the vibe\"\n", + "\"When you freak to the beat\"\n", + "\"Co-coming through with something brand new\"\n", + "\"One, two, uh, check it out\"\n", + "\"Once more\" \"What's up punk\"\n", + "\"Yeah, here we go-here we go\"\n", + "\"Battles, I win 'em 'cause I send 'em to hell when I begin 'em\n", + "Because I put it in 'em like a venom\"\n", + "\"He-Here we go again with the funky intro\"\n", + "\"Pressure, Pressure, Pressure, Pressure, Pressure, Pressure, Pressure\" \"MC\"\n", + "\n", + "[Verse 1: Pressure]\n", + "It's the next chapter, where's all my heads at?\n", + "You slept at the fact that we crept back to\n", + "Set factors straight, the only dead rappers\n", + "Are penned at the papes of no cred actors\n", + "Those haters, no you don't fade us\n", + "You don't know shit, so you're on a need to know basis\n", + "For those gracious folk with no status\n", + "I made this flow for you, no your own name is\n", + "Not a part of the bigger picture, listen it's the\n", + "Middle finger that you put up in a fixture\n", + "Life's a bitch and it'll hit ya, if I could pimp women\n", + "Like I do words I'd be living literature\n", + "Hip Hop's a circus act, this is absurd but fact\n", + "One critic or cynic for every that learned to rap\n", + "One lyric with gimmick for every with purpose that\n", + "Furthered rap culture round the earth and back\n", + "But some diss when I'm up in your face\n", + "You're a man of your word; you got nothing to say\n", + "I got respect for my scene and love for the place\n", + "Where I bled for my dreams and struggled for change\n", + "We're still striving on, we're still alive and strong\n", + "Right or wrong I'd still kill for where I belong\n", + "Insightful on the real deal when I write a song\n", + "Question, you still feel the vibe I'm on?\n", + "\n", + "[Chorus 1: Samples]\n", + "\"If you feel the vibe\"\n", + "(That beautiful sound I'm loving)\n", + "\"So if you feel the vibe\"\n", + "\"When you freak to the beat\"\n", + "\"So if you feel the vibe\"\n", + "\"That beautiful sound I'm loving\"\n", + "\"So if you feel the vibe\"\n", + "\"It's Mr. Suffa\" \"MC\"\n", + "\"Oi Suff, you in there?\"\n", + "\n", + "[Verse 2: Suffa]\n", + "I had the whole crowd like\n", + "\"Oh shit\", that's right I said it, I'll be like\n", + "Da, da, da, da, roll like the credits\n", + "Two of the best to ever edit poetics, it be the\n", + "Three headed beast from Obese come to set it\n", + "Off, Hilltop in the place, \"sir just calm down\"\n", + "Spit fire on stage and burn your bar down\n", + "You hear it bumping in clubs, you turn your car round\n", + "You hear it pumping in pubs, you buy the bar a round\n", + "Pump it up in your car; turn your car to a club\n", + "(Smash through the wall of a pub) and burn the bar down\n", + "(Just burn the bar down), like a disco inferno\n", + "(MCs are the only thing we burn though)\n", + "I'm the arsonist like Rakim is\n", + "So ask your kids who the number one artist is\n", + "Obese got the mad fucking roster while\n", + "(Your crew couldn't even) house a foster child!\n", + "You're flamboyant like Oscar Wilde, I gots to smile\n", + "When you panic on stage like you lost a child\n", + "\"Where's Benny?\", Benny's across the road watching Hilltop\n", + "'Cause they got the flow the hills have still got\n", + "Funk, the skills, the beats to get nice on\n", + "Don't need drugs, I get a buzz when the mic's on\n", + "So hit the floods Suffa like it with the lights on\n", + "Hilltop, we're what's left when the vibe's gone\n", + "\n", + "[Chorus 2: Samples]\n", + "\"If you feel the vibe\"\n", + "(That beautiful sound I'm loving)\n", + "\"So if you feel the vibe\"\n", + "\"When you freak to the beat\"\n", + "\"So if you feel the vibe\"\n", + "\"That beautiful sound I'm loving\"\n", + "\"So if you feel the vibe\"\n", + "\"R-O-U-G-H-E-R, Rougher\"\n", + "\n", + "[Verse 1]\n", + "\" I hold myself in contempt!\"\n", + "\n", + "Tearing the hair off a black baboon's skull\n", + "Is a bitch with some four thousand names\n", + "Vomiting lies through a theremin throat\n", + "As some businessmen pick at her brains\n", + "Pulls back skinny lips to reveal a proboscis\n", + "Seems Seth Brundle's at it again\n", + "Tears pages from spines as she judges the cover\n", + "And shamelessly spoils the end\n", + "\n", + "[Verse 2]\n", + "Blood vessels drying and curling inside are\n", + "Unfurling from out of her wrists\n", + "Well, she wrings out a snake and collects all its poison\n", + "Intending on learning to hiss\n", + "Foams at the mouth with a head full of acid\n", + "And giving some poor illness the blame\n", + "Knocking the pieces the fuck off the chessboard\n", + "Insisting that she's won the game\n", + "\n", + "[Chorus]\n", + "So all that I see absolute entropy\n", + "As the chemical bonds fall apart\n", + "Well it seems she broke me\n", + "But I swear she could not break my heart\n", + "She could not break my heart, oh lord!\n", + "\n", + "[Verse 3]\n", + "Makes up excuses for throbbing black bruises\n", + "And uses them to her advantage\n", + "Never came down from her last trip on Jesus\n", + "Disease is her primary language\n", + "Garbled and gruesome, her words so absurd\n", + "Like I heard a transmissions from Apollo 13\n", + "No apology, I request misery\n", + "So no rest till I've twisted her chest round my knee\n", + "\n", + "[Bridge]\n", + "So squeal like a trolley wheel, cry like a baby\n", + "With autism strapped to a ceiling fan\n", + "Soil your visage with mucus and\n", + "Twisting of features unable to stand\n", + "Buckle your knees looking up at me\n", + "And beg me to spare thee the back of my hand\n", + "For the sake of humanity, die of your blight\n", + "We're blessed you're barren as Mojave sands\n", + "\n", + "[Chorus]\n", + "So all that I see absolute entropy\n", + "As the chemical bonds fall apart\n", + "Well it seems she broke me\n", + "But I swear she could not break my heart\n", + "\n", + "[Outro]\n", + "So all that I see absolute entropy\n", + "As the chemical bonds fall apart\n", + "Well it seems she broke me\n", + "But I swear she can go fucking die\n", + "You can go fucking die (Get cancer)\n", + "Go fucking die (Get AIDS and)\n", + "Go fucking die (Kill yourself)\n", + "Kill yourself and go die!\n", + "Ugh!\n", + "\n", + "\"Absolutely reprehensible behavior\"\n", + "\n", + "[Intro]\n", + "\"[?] Who's this dude looking like he [?]\"\n", + "\"They call him Cool.\"\n", + "\"Who?\"\n", + "\"Mr. Cool.\"\n", + "\"[?]\"\n", + "\n", + "[Verse 1]\n", + "They call me Cool\n", + "Because I got more glide in my stride and more dip in my hip\n", + "I wear a mean dark pair of shades\n", + "And you can't see my eyes unless my head is bent\n", + "\n", + "[Chorus]\n", + "No jive, give me five\n", + "They call me Cool\n", + "Mr. Cool\n", + "\n", + "[Verse 2]\n", + "I drive a long white big\n", + "White on white in white, you dig?\n", + "Now girls, I don't mean to be an agitator\n", + "But when I get moving I'm a smooth operator\n", + "\n", + "[Chorus]\n", + "\n", + "[Verse 3]\n", + "I used to fool around with a presidential lady\n", + "I used to call her Sister Sadie\n", + "Now don't y'all go and [?]\n", + "Because you know darn well that I am great\n", + "\n", + "[Chorus]\n", + "\n", + "[Verse 4]\n", + "Now I was the first man on the moon, in a satellite\n", + "If y'all wondering why y'all didn't see me, it's because I left at night\n", + "And when I planted my flag and made my claim\n", + "I turned to the moonfolks and hollered, \"What's my name?\"\n", + "And they called me Cool\n", + "Mr. Cool\n", + "\n", + "[Outro]\n", + "(Oh, Mr. Cool!)\n", + "(Mr. Cool!)\n", + "They call me Cool\n", + "Hey I ain't got time right now, I'll see you tonight maybe\n", + "(Oh, you're so cool!)\n", + "Hey! They call me cool\n", + "(Hi, Mr. Cool!)\n", + "(Hi, baby, you're so cool!)\n", + "\n", + "[Intro]\n", + "\"[?]\" \"Over the castle on the hill\"\n", + "\n", + "[Verse 1]\n", + "When I was six years old I broke my leg\n", + "I was running from my brother and his friends\n", + "And tasted the sweet perfume of the mountain grass I rolled down\n", + "I was younger then, take me back\n", + "\n", + "[Chorus 1]\n", + "I'm on my way, driving at 90\n", + "Down those country lanes, singing to \"Tiny Dancer\"\n", + "And I miss the way you make me feel, and it's real\n", + "And we watched the sun—\n", + "\n", + "[Breakdown]\n", + "Over the castle on the hill\n", + "Over the castle on the hill\n", + "\n", + "[Verse 2]\n", + "Fifteen years old and smoking hand-rolled cigarettes\n", + "Running from the law through the backfields and getting drunk with my friends\n", + "Had my first kiss on a Friday night, I don't reckon that I did it right\n", + "But I was younger then, take me back\n", + "\n", + "[Chorus 1]\n", + "I'm on my way, driving at 90\n", + "Down those country lanes, singing to \"Tiny Dancer\"\n", + "And I miss the way you make me feel, and it's real\n", + "And we watched the sun—\n", + "\n", + "[Breakdown]\n", + "Over the castle on the hill\n", + "Over the castle on the hill\n", + "\n", + "[Bridge]\n", + "One friend left to sell clothes\n", + "And one works down by the coast\n", + "One had two kids but lives alone\n", + "One's brother overdosed\n", + "One's already on his second wife\n", + "One's just barely getting by\n", + "But these people raised me\n", + "And I can't wait to go home\n", + "\n", + "[Chorus 2]\n", + "And I'm on my way, I still remember\n", + "These old country lanes\n", + "When we did not know the answers\n", + "And I miss the way you make me feel, it's real\n", + "When we watched the sun—\n", + "\n", + "[Breakdown]\n", + "Over the castle on the hill\n", + "Over the castle on the hill\n", + "\n", + "[Outro]\n", + "Over the castle on the hill\n", + "Over the castle on the hill\n", + "\n", + "[Excerpt 1]\n", + "\"'A storm is coming,' Frank says. 'A storm that will swallow the children. And I will deliver them from the kingdom of pain. I'll deliver the children back to their doorsteps. I'll send the monsters back to the underground. I'll send them back to a place where no one else can see them except for me'...\"\n", + "\n", + "[Verse 1]\n", + "A tornado flew around my room before you came\n", + "Excuse the mess it made, it usually doesn't rain\n", + "In Southern California, much like Arizona\n", + "My eyes don't shed tears, but boy they pour when...\n", + "\n", + "[Pre-Chorus]\n", + "I'm thinking 'bout you (Ooh no, no, no)\n", + "I've been thinking 'bout you (You know, know, know)\n", + "I've been thinking 'bout you\n", + "Do you think about me still? Do ya, do ya?\n", + "\n", + "[Chorus]\n", + "Or do you not think so far ahead?\n", + "'Cause I been thinking bout forever, ooh\n", + "Or do you not think so far ahead?\n", + "'Cause I been thinking 'bout forever, ooh\n", + "\n", + "[Verse 2]\n", + "No, I don't like you, I just thought you were cool enough to kick it\n", + "Got a beach house I could sell you in Idaho, since you think\n", + "I don't love you I just thought you were cute, that's why I kissed you\n", + "Got a fighter jet, I don't get to fly it though I'm lying down\n", + "\n", + "[Pre-Chorus]\n", + "I'm thinking 'bout you (Ooh no, no, no)\n", + "I've been thinking 'bout you (You know, know, know)\n", + "I've been thinking 'bout you\n", + "Do you think about me still? Do ya, do ya?\n", + "\n", + "[Chorus]\n", + "Or do you not think so far ahead?\n", + "'Cause I been thinking bout forever, ooh\n", + "Or do you not think so far ahead?\n", + "'Cause I been thinking 'bout forever, ooh\n", + "\n", + "[Bridge]\n", + "Yes of course I remember, how could I forget how you feel?\n", + "You know you were my first time, a new feel\n", + "It will never get old, not in my soul, not in my spirit, keep it alive\n", + "We'll go down this road 'til it turns from color to black and white, ooh\n", + "\n", + "[Chorus]\n", + "Or do you not think so far ahead?\n", + "'Cause I been thinking bout forever, ooh\n", + "Or do you not think so far ahead?\n", + "'Cause I been thinking 'bout forever, ooh\n", + "\n", + "[Excerpt 2]\n", + "[Lady 1]: We're all so proud of you\n", + "[Lady 2]: Proud, proud, proud, proud, proud\n", + "[Lady 3]: What are you going to do now?\n", + "[Ben]: I was going to go upstairs for a minute\n", + "[Lady 3]: No, I meant with your future\n", + "[Lady 2]: Your life\n", + "[Ben]: Well, that's a little hard to say\n", + "[Mr. McQuire]: Ben!\n", + "[Ben]: (to the ladies) Excuse me. (He turns around) Mr. McQuire\n", + "[Mr. McQuire]: Ben\n", + "\n", + "[Intro: Peter Gabriel]\n", + "\"'Games Without Frontiers’, 'Jeux Sans Frontières', ’Spiele Ohne Grenzen', 'Jocs Sense Fronteres'.\"\n", + "\n", + "[Interlude]\n", + "\n", + "[Verse 1: Peter Gabriel]\n", + "Hans plays with Lotte, Lotte plays with Jane\n", + "Jane plays with Willi, Willi is happy again\n", + "Suki plays with Leo, Sacha plays with Britt\n", + "Adolf builds a bonfire, Enrico plays with it\n", + "\n", + "[Pre-Chorus: Peter Gabriel]\n", + "Whistling tunes, we hide in the dunes by the seaside\n", + "Whistling tunes, we piss on the goons in the jungle\n", + "It's a knockout\n", + "\n", + "[Chorus: Peter Gabriel & Audience]\n", + "If looks could kill, they probably will\n", + "Games without frontiers, war without tears\n", + "If looks could kill, they probably will\n", + "Games without frontiers, war without tears\n", + "Games without frontiers, war without tears\n", + "\n", + "[Interlude]\n", + "\n", + "[Verse 2: Peter Gabriel]\n", + "Andre has a red flag, Chiang Ching's is blue\n", + "They all have hills to fly them on except for Lin Tai Yu\n", + "Dressing up in costumes, playing silly games\n", + "Hiding out in treetops, shouting out rude names\n", + "\n", + "[Pre-Chorus: Peter Gabriel]\n", + "Whistling tunes, we hide in the dunes by the seaside\n", + "Whistling tunes, we piss on the goons in the jungle\n", + "It's a knockout\n", + "\n", + "[Chorus: Peter Gabriel & Audience]\n", + "If looks could kill, they probably will\n", + "Games without frontiers, war without tears\n", + "If looks could kill, they probably will\n", + "Games without frontiers, war without tears\n", + "Games without frontiers, war without tears\n", + "\n", + "[Interlude]\n", + "\n", + "[Outro: Peter Gabriel]\n", + "Jeux sans frontières\n", + "Jeux sans frontières\n", + "Jeux sans frontières, your turn!\n", + "Jeux sans frontières\n", + "Jeux sans frontières\n", + "Jeux sans frontières\n", + "Jeux sans frontières, hey!\n", + "Jeux sans frontières\n", + "No more war!\n", + "No more!\n", + "No more!\n", + "No more!\n", + "No more!\n", + "No more!\n", + "No more!\n", + "No more war!\n", + "\n", + "[Intro: spoken]\n", + "\"'It was a slight on my honor, so he deserved it\n", + "'But we're talking about the most brilliant mind this world's ever seen'\"\n", + "\n", + "[Verse 1]\n", + "I've got demons running round in my head\n", + "And they feed on insecurities I have\n", + "Won't you lay your healing hands on my chest?\n", + "Let your ritual clean\n", + "\n", + "[Pre-Chorus]\n", + "Soak the ropes with your holy water\n", + "Tie me down as you read out the words\n", + "\n", + "[Chorus]\n", + "Set me free from my jealousy\n", + "Won't you exorcise my mind?\n", + "Won't you exorcise my mind?\n", + "I want to be free as I'll ever be\n", + "Exorcise my mind\n", + "Help me exorcise my mind\n", + "\n", + "[Verse 2]\n", + "Desdemona, won't you liberate me?\n", + "When I'm haunted by your ancient history\n", + "Close these green eyes and watch over as I sleep\n", + "Through my darkest of dreams\n", + "\n", + "[Pre-Chorus]\n", + "Be the power to compel me\n", + "Hold me closer than anyone before\n", + "\n", + "[Chorus]\n", + "Set me free from my jealousy\n", + "Won't you exorcise my mind?\n", + "Won't you exorcise my mind?\n", + "I want to be free as I'll ever be\n", + "Exorcise my mind\n", + "Help me exorcise my mind\n", + "\n", + "[Bridge]\n", + "I should be thinking 'bout nothing else when I'm with you-ou\n", + "With you-ou, ohohoh\n", + "I should be thinking 'bout nothing else when I'm with you-ou\n", + "With you-ou, ohohoh\n", + "\n", + "[Intermezzo: spoken]\n", + "\"Your mind exists somewhere altogether different; it lives in a world where feelings simply cannot be defined by words\"\n", + "\n", + "[Chorus]\n", + "Set me free from my jealousy\n", + "Won't you exorcise my mind?\n", + "Won't you exorcise my mind?\n", + "I want to be free as I'll ever be\n", + "Exorcise my mind\n", + "Help me exorcise my mind\n", + "\n", + "Help me exorcise my mind\n", + "Won't you exorcise my mind?\n", + "\n", + "\"'You Fucked Up'....by Ween.\"\n", + "\n", + "[Verse 1]\n", + "You fucked up, you bitch\n", + "You really fucked up\n", + "You fucked up\n", + "You fucking Nazi whore\n", + "\n", + "[Chorus]\n", + "Well you dicked me over\n", + "But now you'll pay\n", + "You fucked up\n", + "Aaaahhh!\n", + "\n", + "[Verse 2]\n", + "You fucked up, you bitch\n", + "You really fucked up\n", + "You fucked up\n", + "You slimy little shit bitch fuck\n", + "\n", + "[Chorus]\n", + "Well you dicked me over\n", + "But now you'll pay\n", + "You fucked up\n", + "Aaaahhh!\n", + "\n", + "[Intro (spoken)]\n", + "\"'ere, Leroy! A-where you a-run go so?\"\n", + "\"Well, I'm hungry, you know, Macka B; I'm going for a Big Mac.\"\n", + "\n", + "\"'ere, Leroy! A-where you a-run go so?\"\n", + "\"Well, I'm hungry, you know, Macka B; I'm going for a Big Mac. Why aren't you comin'?\"\n", + "\"Fi wha'? A-mi ha' ackee and saltfish and dumplin' and banana at yard\"\n", + "\n", + "[Chorus]\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "\n", + "[Verse 1]\n", + "Now tell mi\n", + "Why nuh dead\n", + "Tell mi why he nuh dead\n", + "Why nuh dead fi make wi rushin' a death\n", + "\n", + "Why nuh dead\n", + "Tell mi why he nuh dead\n", + "Why nuh dead fi make wi rushin' a death\n", + "\n", + "What do we break for\n", + "What do we [?]\n", + "What do we nyam\n", + "What do we so, whassup?\n", + "What do we food down at di dumplin' shop\n", + "That make so much Black youth gwaan go rush a Big Mac\n", + "Black youth outside McDonald like a-bees in a swarm\n", + "Comin' like they waiting outside a pig farm\n", + "Mi never go McDonald from di gate at mi barn\n", + "If mi hungry and mi pass McDonald mi stay calm\n", + "To the dumplin' shop or to mi yard mi gwaan\n", + "Mi prefer get mi food from a' African\n", + "Well, mi nuh eat no meat I am a vegetarian\n", + "So, McDonald a' di last place mi done eat from\n", + "\n", + "Why nuh dead\n", + "Tell mi why he nuh dead\n", + "Why nuh dead fi make wi rushin' a death\n", + "\n", + "Why nuh dead\n", + "Tell mi why he nuh dead\n", + "Why nuh dead fi make wi rushin' a death\n", + "\n", + "McDonald milkshake, man, it don't have a use\n", + "When you stand it up next to a pineapple juice\n", + "Big Mac and chips, man, it seem foolish\n", + "When you stand it up next to ackee and saltfish\n", + "Dem hamburger, Jah man, it [?]\n", + "When you stand it up next to banana frita\n", + "Dem beef burger, which they make with cheese\n", + "Could a' never touch fi wi rice and peas\n", + "\n", + "[Chorus]\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "\n", + "[Verse 2]\n", + "'Cause old McDonald's got some shops\n", + "Ee-ay-ee-ay-o\n", + "And a whole heap a' Black youth about sit up\n", + "Ee-ay-ee-ay-o\n", + "With a Big Mac here, an' some pork fat there\n", + "Here a pig, could be yuh arse\n", + "Food no good, it too fast!\n", + "Old McDonald's got some shops\n", + "Ee-ay-ee-ay-o\n", + "\n", + "Hol' up your hand if yuh love dumplin'\n", + "Carrot juice, or caramel puddin'\n", + "Rice and peas every Sunday\n", + "I warm it up again upon a Monday\n", + "So\n", + "\n", + "[Chorus]\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "\n", + "[Verse 3]\n", + "Come in here over under and that place boycott\n", + "[?], look cool [?] and dreadlock\n", + "Nuh can trust people nah rush i' Big Mac\n", + "If yuh listen carefully\n", + "Then mi will tell you what's what\n", + "When [?] scare di youth man\n", + "They nuh want shop\n", + "And then get hungry\n", + "Have a guess where dem stop\n", + "Dem a-nyam a Big Mac until them belly full up\n", + "If it was a Caribbean shop they couldn't do that\n", + "So [?] haffi get boycott\n", + "\n", + "But some youth man couldn't do that\n", + "Then they a-talk 'bout they want deal with a [?] man\n", + "And they couldn't even boycott a shop\n", + "So somebody's gonna get a camera\n", + "And go down to a town centre\n", + "Watch all the Blacks begin the boycott\n", + "And then take their picture\n", + "So\n", + "\n", + "[Chorus]\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "Uh-uh\n", + "\n", + "Mi nuh want no Big Mac\n", + "Mi nuh want no Big Mac\n", + "\n", + "[Verse 4]\n", + "You haffi support your own\n", + "You haffi support your own\n", + "Support your own an' you'll always be down\n", + "\n", + "Support your own\n", + "You haffi support your own\n", + "Support your own an' you'll always be down\n", + "\n", + "Look 'pon di Asian\n", + "Look 'pon di Indian\n", + "You nuh say, \"See, dey rule England\"\n", + "But dey wouldn't get nowhere\n", + "Inna this island\n", + "If not fi the support of their own nation\n", + "So\n", + "\n", + "[Chorus]\n", + "We nuh want no Big Mac\n", + "We nuh want no Big Mac\n", + "Uh-uh\n", + "\n", + "Wi don't need no Big Mac\n", + "Wi don't need no Big Mac\n", + "Uh-uh\n", + "\n", + "Wi don't need no Big Mac\n", + "Wi don't need no Big Mac\n", + "Uh-uh\n", + "\n", + "Wi don't need no Big Mac\n", + "Wi don't need no Big Mac\n", + "\n", + "[Intro: DJ Spin One cuts]\n", + "\"'spect the unexpected\" -] Method Man\n", + "\n", + "[Chorus: Q-Unique]\n", + "Respect the unexpected\n", + "Press play to my cassette when yours gets ejected\n", + "This money in this rap got some brothers livin' hectic\n", + "Distracted while they acted I snuck in undetected\n", + "Quaternarys connected\n", + "----\n", + "Respect the unexpected\n", + "Press play to my cassette when yours gets ejected\n", + "This money in this rap got some sisters gettin' naked\n", + "Distracted while they acted I snuck in undetected\n", + "Quaternarys connected\n", + "\n", + "[Verse One: Jise One]\n", + "Expect that I selected molested rhymes aggressive\n", + "Impetiuos notebook medic couldn't reconstruct the relic\n", + "Simplistical explanation for me to rock the mic\n", + "Incredible, incombatible, speak in parables like neophytes\n", + "Coincide tight with might of urban joust\n", + "Gladiator, illiminator and every day common incinirator\n", + "Perpetraders get tapered zoned to fire frequency\n", + "Blessed by predecessors so I've grown to mass fluidity\n", + "Vast impurities get flushed in lavatories\n", + "Minority flashy stories don't cut the chase it lures me\n", + "Poor me! Because I used to be a thug\n", + "I should've elaborated produced rotation bugs\n", + "\n", + "[Verse Two: Q-Unique]\n", + "I close the open mic and lock it with key elements of everlasting phrases\n", + "It's the way I flow with grace that amazes\n", + "All praises due to Q who do true\n", + "You don't, cannot, shouldn't you\n", + "The little engine that couldn't\n", + "Me the stop that wouldn't\n", + "You concerned with material\n", + "Me the rebel allie to crush the imperial, burnin' down your ministerial\n", + "You the 15-minutes-of-fame rap act\n", + "Me the heavy handed MC to smack track\n", + "You the Mr. trapped-by-wack-contract\n", + "Me the black flag to kill on contact\n", + "You the dead roach, me the head coach\n", + "You player ready for retirement\n", + "Me better for the environment\n", + "You better think, me better ink\n", + "Get her any wetter than a sink, brother let her drink\n", + "\n", + "(Chorus)\n", + "\n", + "[Verse Three: Jise One]\n", + "Watch me give it a shrug, I rather fondle impairment\n", + "Awareness leaving the bareness of my culture stand in arraignment\n", + "I'm level basement incarcerated tracks to my advanced\n", + "Romance dig in your earlobe enhanced rivoting soul stance\n", + "Every day's my last chance, tranquilizing the present\n", + "Utilizing the past the future sharpened reception\n", + "No acceptance applicants, never extradited wackness\n", + "Practice malice inbalance, don't silence my code of challenge\n", + "\n", + "[Verse Four: Q-Unique]\n", + "The Lord is my shepherd, I shall not want to contaminate\n", + "Nah.. none of that, I'm stickin' well within my habitat\n", + "Got the hip for all the hops, bottom out until the top of the top tip hits with grit shit\n", + "Then I'ma shift into high gear, my year, every year\n", + "Let me hear someone near cheer\n", + "Q blaze that and I'ma lose it like a needle in a haystack\n", + "And payback like installment plans my fist twist unlisted lines\n", + "You can't call it man, my pen ink.. amazes the page with engraved phrases\n", + "And raise to \"hey\" stages and put an end to the weak/week like paid wages\n", + "You left behind ass crack\n", + "I bounced from ASCAP and linked with BMI\n", + "'cause a brothers mind's incredible, now you seeing why..\n", + "Q get the \"Unique\" definition, the one in the preminition\n", + "Said to lead the underground into victory over the evil industry\n", + "Fade outs and rollin' credits couldn't finish me\n", + "Never mind fine wines, I speak prime lines to my kinds\n", + "Deadin' the 100 watt spotlight with 1000 drop mind shines\n", + "\n", + "(Chorus)\n", + "\n", + "\"(Damn! Rapid Firing Squad) Back at your ass again, nigga\n", + "(First Family)\n", + "World's Famous. (Firing Squad) Look here.\"\n", + "\n", + "Chorus: Lil' Fame (Billy Danze)\n", + "\n", + "Its a (cold world) show nuf\n", + "Its on, its a (cold world)so bitch nigga dress warm\n", + "Slum ass wanna be hard ass nigga\n", + "Coldball butter-soft lard ass nigga\n", + "*repeat*\n", + "\n", + "Verse One: Billy Danze\n", + "\n", + "Niggas waitin for my shit to drop\n", + "Because I show love to the true thugs on the back lot\n", + "Post up at the biggest crack spots\n", + "Raised around killers so eventually I popped shots\n", + "(Make em feel your real) Niggas stop playin on the real\n", + "Fuck around you get your death wish from Bill(D-yea)\n", + "This cat sucker got the wrong idea\n", + "(He came a long damn way) How the hell you think I got here?\n", + "I learned to survive with illegal guns that know how to hide\n", + "Homicide ties, baby, yea, I dominates what you tryin to do\n", + "I wear my hat broke down and play the war when I'm sliding through\n", + "I gotta crew (Original Hilfiger)\n", + "Plus triggers and some of Brooklyn's illest niggers\n", + "(Damn) I'm so deep in the game\n", + "I keep in touch with myself so I can feel the real niggas pain\n", + "(I've been ya) Quick, I think there's gonna be conflict\n", + "If I figure ya freakin the flip (Ya punk bitch!)\n", + "Leavin ya blind, thugs of my kind\n", + "Will dismantle your mind and shatter your damn spine It's a...\n", + "\n", + "Chorus\n", + "\n", + "Verse 2: Lil' Fame\n", + "\n", + "(Time flies) Slugs fly, people die (Damn)\n", + "Guerilla warfare all across the land\n", + "If they break the code of silence (leave em all dead)\n", + "And fools take a fall when I call (code red)\n", + "More people travellin, like immigrants\n", + "But on the low with the most dominant (most infinite)\n", + "Lost in your track so I act innocent\n", + "But on the low, I can act real motherfucking ignorant\n", + "Raised by an army of THUGS\n", + "Who done it all from the smartest to the dumbest\n", + "And I, happen to be the youngest\n", + "Twenty-two years of being brave as a lion\n", + "And that's, with or without the iron\n", + "Fools wanna (STRESS YA), then they wanna (TEST YA)\n", + "Then you gotta get your steel (Deal with the pressure)\n", + "I ain't gotta teach a fucking family to bury me\n", + "You think your bullshit worry me?\n", + "Aiyo, I move quickly, but come across so humble\n", + "Fools be on point when its time for the rumble\n", + "W-O-M-A-C-K, (hit ya)\n", + "With the game plan that will twist ya, (mista)\n", + "\n", + "Chorus\n", + "\n", + "Verse 3\n", + "\n", + "Billy Danze: We gonna put this bullshit to a cease\n", + "Hollering about peace; you in the belly of the fucking beast\n", + "I figured it out from the start\n", + "And since I laid my mother to rest\n", + "I been blessed with these cold heart\n", + "(If it ain't our beef) Don't touch\n", + "(If he's against us) Fuck him, (If he ain't with us) Fuck him\n", + "(We be aight, nigga) That's right, nigga\n", + "(We tight, nigga) What's more\n", + "(When we don't like niggas) We'll invite niggas to war\n", + "\n", + "Lil' Fame: And believe we've got lead to give em\n", + "Thugs that perform massacres, like nazism\n", + "This living mechanism, study living to the end\n", + "Discombobulation, then I'm Gone With the Wind (begin)\n", + "My men been, through hard times\n", + "That's what you find when you don't do my family all kind\n", + "(Make moves) I'mma play the background when its gat time\n", + "I'mma hit you with the flatline\n", + "\n", + "Chorus\n", + "\n", + "*spoken over Fame yelling:*\n", + "Yeah, I'm done. You motherfuckers said you wanted to see me, right?\n", + "See me now, motherfuckers. See me now! I told you right? Bow! Bow!\n", + "Motherfuckers. I told you cold world motherfucker. Bow, motherfucker!\n", + "What you gotta say now, motherfucker? You a bad motherfucker?\n", + "Yeah, Hell yeah. Here I am now. Here I am! Oh, you wanna run?\n", + "Bow, motherfucker! I'll see you at your funeral motherfucker\n", + "You better have your black suit on. Yeah (First Fam, nigga, for life)\n", + "Motherfucker. Aiyo, come on son\n", + "*talkin fades*\n", + "\n", + "\"(Intro)\n", + "Mmm yeah\n", + "Tell me that you like it\n", + "Oh yeah, yeah\n", + "(Woo, let's see if you remember this one)\n", + "Do I?!\n", + "Oh, now I have to go there\n", + "Oohh\n", + "Mmm yeah\n", + "Let me show you just how much I know this record\n", + "\n", + "Verse 1:\n", + "You knew you had me\n", + "With your sensuous charm\n", + "You looked so alarmed\n", + "As I walked on by\n", + "In awesome wonder\n", + "You had to know why I did not respond\n", + "To carry on\n", + "\n", + "Chorus:\n", + "Love me in a special way\n", + "What more can I say?\n", + "Love me now\n", + "Love me in a special way\n", + "What more can I say?\n", + "Love me now\n", + "\n", + "Verse 2:\n", + "Love me now\n", + "Cuz I'm special\n", + "Not the average kind\n", + "Who'd accept any line\n", + "That sounds good\n", + "So reach into your chain of thoughts\n", + "Try to find something new\n", + "What worked so well for you before\n", + "For me, it just won't do, no\n", + "\n", + "Chorus:\n", + "Love me in a special way\n", + "What more can I say?\n", + "Love me now\n", + "Love me in a special way\n", + "What more can I say?\n", + "Love me now\n", + "\n", + "Bridge:\n", + "Ooh ooh\n", + "Oh yeah yeah\n", + "Mmm hmm\n", + "So reach into your chain of thoughts\n", + "Try to find something new\n", + "Cause what worked so well for you before\n", + "For me, it just won't do, no no\n", + "\n", + "Chorus:\n", + "Love me in a special way\n", + "What more can I say?\n", + "Love me now\n", + "Love me in a special way\n", + "What more can I say?\n", + "Love me now\n", + "\n", + "Love me in a special way\n", + "What more can I say?\n", + "Love me now\n", + "Love me in a special way\n", + "What more can I say?\n", + "Love me now\n", + "\n", + "Love me in a special way\n", + "Love me everyday\n", + "What more can I say?\n", + "Just love me now\n", + "\n", + "[Intro]\n", + "\"(Let's try this sound for, for a bit)\n", + "Boop-boo-boo-boo-boop\n", + "(Okay)\n", + "Doo-doo-doo-doo-doo, da-dum-dum\n", + "Boop-boo-boo-boo-boop\n", + "(Okay)\n", + "Ba-da-doo-doo-doo-doo\n", + "(Mmm-hmm)\"\n", + "\n", + "[Verse 1]\n", + "Would you like to come along\n", + "We can sing a simple song\n", + "If you want to name the tune, you're invited\n", + "I'm so glad that you're my friend\n", + "Did I say I think we'll win?\n", + "Though the fight is so often one-sided\n", + "\n", + "[Verse 2]\n", + "Can we sing that part again\n", + "All about how we will win\n", + "Gotta know how in the end nothin's dyin'\n", + "And the ribbon in the sky\n", + "Is the vision in your eye\n", + "Let's get lost in, stay lost and refine\n", + "The art of flyin'\n", + "\n", + "[Chorus]\n", + "We'll be 10 K high over the mountain\n", + "Over the river\n", + "We'll be 10 K high trusting our dream\n", + "To forever\n", + "We'll be 10 K high over the mountain\n", + "Over the river\n", + "We'll be 10 K high in every dream\n", + "Makin' heaven\n", + "\n", + "[Verse 3]\n", + "What a day for breaking through\n", + "What a day for seeing you\n", + "Do you remember how we said\n", + "Nothin's dyin'?\n", + "And the love of which I sing\n", + "Is like the phoenix on the wing\n", + "We started, we parted, we found\n", + "We're fond of flyin'\n", + "\n", + "[Chorus]\n", + "We'll be 10 K high over the mountain\n", + "Over the river\n", + "We'll be 10 K high in every dream\n", + "Makin' heaven\n", + "\n", + "[Bridge]\n", + "Speaking of warring nations\n", + "Talk of broken heart relations\n", + "Set me down in revelation's light\n", + "So that I might\n", + "That I might find a way to tell you true\n", + "Miracles redeeming you\n", + "\n", + "[Scat]\n", + "\n", + "[Outro]\n", + "We'll be 10 K high over the mountain\n", + "Over the river\n", + "We'll be 10 K high trusting our dream\n", + "To forever\n", + "We'll be 10 K high over the mountain\n", + "Over the river\n", + "We'll be 10 K high trusting our dream\n", + "Makin' heaven\n", + "We'll be 10 K high over the mountain\n", + "Over the river\n", + "We'll be 10 K high trusting our dream\n", + "To forever\n", + "10 K high\n", + "\n", + "[Intro]\n", + "\"[?], fellas, watch the beardie.\"\n", + "\n", + "[Verse 1]\n", + "My camera sees things my eyes can't see\n", + "I have it focused from here to eternity\n", + "Catch the moment, catch your breath, catch the light, let me freeze your frame\n", + "Synchronize machine and brain\n", + "Hey, don't mind me, I'm having my picture taken (Having it taken)\n", + "\n", + "[Verse 2]\n", + "I can choose each day who I want to be\n", + "And you can choose each day who you want to see\n", + "We'll pan the rounds and we'll scan the crowd of all those distant scenes\n", + "Immortalize a slice of time\n", + "But don't mind me, I'm having my picture taken\n", + "\n", + "[Pre-Chorus]\n", + "(Flash) Another instant in an instamatic\n", + "(Click) Another reflex set on automatic\n", + "(Snap) Another moment of the life dramatic\n", + "You really should have been there it was so fantastic\n", + "So fantastic, so fantastic\n", + "\n", + "[Chorus]\n", + "Ooh, having my picture taken\n", + "Ooh, having my picture taken\n", + "Ooh, I'm having my picture taken\n", + "Ooh, having my picture taken (Having it taken)\n", + "\n", + "[Guitar Solo]\n", + "\n", + "[Pre-Chorus]\n", + "(Flash) Another instant in an instamatic\n", + "(Click) Another reflex set on automatic\n", + "(Snap) Another moment of the life dramatic\n", + "You really should have been there it was so fantastic\n", + "So fantastic, so fantastic\n", + "\n", + "[Chorus]\n", + "Ooh, I'm having my picture taken\n", + "Ooh, having my picture taken (Having my picture taken)\n", + "Ooh, I'm having my picture taken (Having my picture taken)\n", + "Ooh, having my picture taken (Having my picture taken)\n", + "\n", + "[Outro]\n", + "\"Oooh, magic, huh? Best I've ever done.\"\n", + "\n", + "[Intro]\n", + "\"- Warum spielst du nicht mit deinen Freunden?\n", + "- Die sind alle tot.\"\n", + "\n", + "[Verse 1]\n", + "This is the right time\n", + "To say hello\n", + "My name is cancer\n", + "I never go\n", + "I'm gonna hurt you\n", + "I am the thorn\n", + "That makes you wish you\n", + "Were never born\n", + "\n", + "[Pre-Chorus]\n", + "Don't try so hard denying me\n", + "You better start accepting me\n", + "Don't fall apart believe in me\n", + "Open your heart give in to me, baby\n", + "\n", + "[Chorus]\n", + "Say can you feel me?!\n", + "Say can you feel me?!\n", + "Say can you feel me?!\n", + "Say can you feel me?!\n", + "\n", + "[Verse 2]\n", + "I'll turn your head in\n", + "A fucking hole\n", + "I'll rip your mind out\n", + "I'll burn your soul\n", + "I am the anguish\n", + "Inside your brain\n", + "I'll fill you up with\n", + "Eternal pain\n", + "\n", + "[Pre-Chorus]\n", + "Don't try so hard denying me\n", + "You better start accepting me\n", + "Don't fall apart believe in me\n", + "Open your heart give in to me, baby\n", + "\n", + "[Chorus]\n", + "Say can you feel me?!\n", + "Say can you feel me?!\n", + "Say can you feel me?!\n", + "Say can you feel me?!\n", + "\n", + "[Pre-Chorus]\n", + "Don't try so hard denying me\n", + "You better start accepting me\n", + "Don't fall apart believe in me\n", + "Open your heart give in to me, baby\n", + "\n", + "[Chorus]\n", + "Say can you feel me?!\n", + "Say can you feel me?!\n", + "Say can you feel me?!\n", + "Say can you feel me?!\n", + "Say can you feel me?! (Turn to me!)\n", + "Say can you feel me?! (Turn to me!)\n", + "Say can you feel me?! (Turn to me!)\n", + "Say can you feel me?!\n", + "\n", + "Say can you feel me?! (Turn to me!)\n", + "Say can you feel me?! (Turn to me!)\n", + "Say can you feel me?! (Turn to me!)\n", + "Say can you feel me?!\n", + "\n", + "[Outro]\n", + "\"Sag's mir. Sag's mir. Sag's mir. Sag's mir. Sag's mir. Sag's mir. Sag's mir. Sag's mir.\"\n", + "\n", + "[Intro: Sample from Star Trek]\n", + "\"- What did you do?\"\n", + "\"- I was unprepared for his attack. I instinctively used the Vulcan death grip.\"\n", + "\n", + "[Verse]\n", + "You said that everything would be okay\n", + "And that we could settle down, in a house by the river\n", + "Well, look at us now\n", + "(Whoo!)\n", + "I don’t know where I am, I don’t know where I will go\n", + "\n", + "[Chorus]\n", + "Maybe someday you will love me but I don’t think that I can wait\n", + "Maybe someday you will love me but I don’t think that I can wait Maybe someday you will love me but I don’t think that I can wait Maybe someday you will love me but I don’t think that I can wait Maybe someday you will love me but I don’t think that I can wait\n", + "\n", + "[Intro: Esham]\n", + "\"-am the wicked shit. (I am the wicked shit) We gon' always be stale. (The wicked shit) Some of y'all are not gonna make it to Shangri-La. (The wicked shit) Some of y'all gonna be wakin' up on some whole other shit. (The wicked shit)\"\n", + "\n", + "[Verse 1: Violent J]\n", + "Something had woke me, a thump on my roof\n", + "It was followed by crashing, more thumping ensued\n", + "I jumped out of my bed thinking I'd been invaded\n", + "Heard smashing, more pounding, the sound escalated\n", + "Looked out of my window, blood dripped down the glass\n", + "I see bodies lay twisted and mangled on grass\n", + "I ran into the main room and Shaggy was dead\n", + "So was Nate The Mack, Jumpsteady and ABK\n", + "Bolted out of the house to see if it's a joke\n", + "I heard hundreds of car alarms, saw flames and smoke\n", + "And the sky above red, I see dead bodies fallin'\n", + "It's raining with corpses, the blood is appalling\n", + "\n", + "[Chorus]\n", + "Mama told me when it rains, it pours\n", + "But never mentioned dead bodies, dead bodies\n", + "Mama told me when it rains, it pours\n", + "La dee da, da da dee, la da dee, dead bodies\n", + "\n", + "[Bridge: Violent J]\n", + "I never seen so many\n", + "Horrified looks on people's faces\n", + "The blood is appalling\n", + "I hope I never see what all them people saw\n", + "And put them in their places\n", + "The blood is appalling\n", + "The sun was so hot, so hot\n", + "I was burning, yeah\n", + "\n", + "[Verse 2: Violent J]\n", + "Dead bodies lay randomly, some stack in piles\n", + "On all of their faces, pure horror, no smiles\n", + "I see children and elders and ninjas my age\n", + "All lay naked and mangled, most withered for days\n", + "I found safety, a shelter, I'm under a tree\n", + "Only fingers and organs come falling on me\n", + "I lay sleepless for days as the raining continued\n", + "The heat of the sun baking corpses like food\n", + "Then it finally stopped, I walk knee deep in blood\n", + "Over piles of bodies, through what was my 'hood\n", + "It was right at that moment the wraith had appeared\n", + "And the message it left me might sound kind of weird\n", + "But take all that I'm seeing and opposite that\n", + "Truth is I'm the one dead and this is my Hell's Pit\n", + "\n", + "[Segue: The Rude Boy]\n", + "\"Hey, what up, y'all. It's the Rude Boy.\"\n", + "\n" + ] + } + ], + "source": [ + "for i, row in labeled_parts.iterrows():\n", + " print(row[\"lyrics\"])\n", + " print()\n", + " if i > 100:\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/scripts/lyrics_eval_all.sh b/scripts/lyrics_eval_all.sh new file mode 100755 index 00000000..d00392ee --- /dev/null +++ b/scripts/lyrics_eval_all.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# This script takes one argument: --model_path +MODEL_PATH="$1" + +# Define an associative array for eval_data_path and their corresponding save_suffixes +declare -A eval_data_paths=( + ["data/lyrics_lines.pt"]="lines" + ["data/lyrics_lines_lower.pt"]="lines_lower" + ["data/lyrics_lines_rmp_lower.pt"]="lines_lower" + ["data/lyrics_lines_rmp_lower.pt"]="lines_lower_rmp" + ["data/lyrics_lines_rmp.pt"]="lines_rmp" + ["data/lyrics_verses_strip_n.pt"]="verses" + ["data/lyrics_verses_lower_strip_n.pt"]="verses_lower" + ["data/lyrics_verses_rmp_strip_n.pt"]="verses_rmp" + ["data/lyrics_verses_rmp_lower_strip_n.pt"]="verses_lower_rmp" +) + +# Path to the custom_language_list file +CUSTOM_LANG_LIST="data/lyrics_langs.csv" + +# Loop through the associative array +for eval_data_path in "${!eval_data_paths[@]}"; do + save_suffix="${eval_data_paths[$eval_data_path]}" + + # Construct the command + cmd="python3 wtpsplit/evaluation/intrinsic.py --model_path $MODEL_PATH --eval_data_path $eval_data_path --custom_language_list $CUSTOM_LANG_LIST" + + # Append --save_suffix if it's not empty + if [[ -n $save_suffix ]]; then + cmd="$cmd --save_suffix $save_suffix" + fi + + # Execute the command + echo "Executing: $cmd" + eval $cmd +done + +echo "All evaluations completed." diff --git a/tpu_START.sh b/tpu_START.sh new file mode 100755 index 00000000..cc04404b --- /dev/null +++ b/tpu_START.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +TPU_VM_NAME="v3-8_4-1.13" # Name of the TPU VM +ZONE="europe-west4-a" # Zone + +# Create the TPU VM, retry if it fails +until gcloud compute tpus tpu-vm start "$TPU_VM_NAME" --zone="$ZONE"; do + sleep 1 +done \ No newline at end of file diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index e5971b1d..b29c30c9 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -35,6 +35,7 @@ class Args: # } # } # } + # TODO: for songs/etc., maybe feed in each sample separately? eval_data_path: str = "data/eval.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" @@ -42,8 +43,10 @@ class Args: stride: int = 64 batch_size: int = 32 include_langs: List[str] = None + custom_language_list: str = None threshold: float = 0.01 max_n_train_sentences: int = 10_000 + save_suffix: str = "" def process_logits(text, model, lang_code, args): @@ -75,15 +78,21 @@ def process_logits(text, model, lang_code, args): def load_or_compute_logits(args, model, eval_data, valid_data=None): logits_path = Constants.CACHE_DIR / ( - f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_logits_u{args.threshold}.h5" + f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_logits_u{args.threshold}_{args.save_suffix}.h5" ) - + if args.custom_language_list is not None: + with open(args.custom_language_list, "r") as f: + # file is a csv: l1,l2,... + use_langs = f.read().strip().split(",") + else: + use_langs = Constants.LANGINFO.index + + total_test_time = 0 # Initialize total test processing time # TODO: revert to "a" - start_time = time.time() with h5py.File(logits_path, "a") as f, torch.no_grad(): - for lang_code in Constants.LANGINFO.index: + for lang_code in use_langs: if args.include_langs is not None and lang_code not in args.include_langs: continue @@ -107,6 +116,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None): # eval data for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): + print(dataset_name) if dataset_name not in lang_group: dset_group = lang_group.create_group(dataset_name) else: @@ -114,6 +124,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None): if "test_logits" not in dset_group: test_sentences = dataset["data"] + print(len(test_sentences)) test_text = Constants.SEPARATORS[lang_code].join(test_sentences) start_time = time.time() # Start timing for test logits processing @@ -128,6 +139,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None): train_sentences = dataset["meta"].get("train_data") if train_sentences is not None and "train_logits" not in dset_group: + print(len(train_sentences)) train_sentences = train_sentences[: args.max_n_train_sentences] train_text = Constants.SEPARATORS[lang_code].join(train_sentences) @@ -187,6 +199,7 @@ def main(args): clfs[lang_code] = {} for dataset_name, dataset in dsets["sentence"].items(): + print(dataset_name) sentences = dataset["data"] if "train_logits" in f[lang_code][dataset_name]: @@ -199,8 +212,6 @@ def main(args): ) if clf[0] is not None: print(clf) - print(np.argsort(clf[0].coef_[0])[:10], "...", np.argsort(clf[0].coef_[0])[-10:]) - print(np.where(np.argsort(clf[0].coef_[0]) == 0)[0]) score_t, score_punct, _ = evaluate_mixture( lang_code, @@ -244,7 +255,7 @@ def main(args): sio.dump( clfs, open( - Constants.CACHE_DIR / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}.skops"), + Constants.CACHE_DIR / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_{args.save_suffix}.skops"), "wb", ), ) @@ -253,7 +264,7 @@ def main(args): open( Constants.CACHE_DIR / ( - f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_intrinsic_results_u{args.threshold}.json" + f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_intrinsic_results_u{args.threshold}_{args.save_suffix}.json" ), "w", ), @@ -265,7 +276,7 @@ def main(args): results_avg, open( Constants.CACHE_DIR - / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_u{args.threshold}_AVG.json"), + / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_u{args.threshold}_{args.save_suffix}_AVG.json"), "w", ), indent=4, diff --git a/wtpsplit/evaluation/intrinsic_lowercase.py b/wtpsplit/evaluation/intrinsic_lowercase.py deleted file mode 100644 index b3124cca..00000000 --- a/wtpsplit/evaluation/intrinsic_lowercase.py +++ /dev/null @@ -1,258 +0,0 @@ -import copy -import json -from dataclasses import dataclass -from typing import List - -import h5py -import skops.io as sio -import torch -from datasets import load_dataset -from tqdm.auto import tqdm -from transformers import AutoModelForTokenClassification, HfArgumentParser -import numpy as np - -import wtpsplit.models # noqa: F401 -from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs -from wtpsplit.extract import PyTorchWrapper, extract -from wtpsplit.utils import Constants - - -@dataclass -class Args: - model_path: str - # eval data in the format: - # { - # "": { - # "sentence": { - # "": { - # "meta": { - # "train_data": ["train sentence 1", "train sentence 2"] - # }, - # "data": ["test sentence 1", "test sentence 2"] - # } - # } - # } - # } - eval_data_path: str = "data/eval.pth" - valid_text_path: str = None # "data/sentence/valid.parquet" - device: str = "cpu" - block_size: int = 512 - stride: int = 64 - batch_size: int = 32 - include_langs: List[str] = None - threshold: float = 0.01 - - -def process_logits(text, model, lang_code, args): - # Extract necessary data - text = text.lower() - logits, offsets_mapping, tokenizer, _ = extract( - [text], - model, - lang_code=lang_code, - stride=args.stride, - block_size=args.block_size, - batch_size=args.batch_size, - pad_last_batch=True, - verbose=True, - ) - logits = logits[0] - if offsets_mapping is not None: - offsets_mapping = offsets_mapping[0] - - if "xlm" in model.config.model_type: - tokens = tokenizer.tokenize(text, verbose=False) - - # Use the vectorized function to convert token probabilities to character probabilities for the entire array - char_probs = token_to_char_probs(text, tokens, logits, tokenizer, offsets_mapping) - - logits = char_probs - - return logits - - -def load_or_compute_logits(args, model, eval_data, valid_data=None, max_n_train_sentences=10_000): - logits_path = Constants.CACHE_DIR / ( - f"{args.model_path.split('/')[0]}_L_b{args.block_size}+s{args.stride}_logits_u{args.threshold}.h5" - ) - - # TODO: revert to "a" - with h5py.File(logits_path, "w") as f, torch.no_grad(): - for lang_code in Constants.LANGINFO.index: - if args.include_langs is not None and lang_code not in args.include_langs: - continue - - print(f"Processing {lang_code}...") - if lang_code not in f: - lang_group = f.create_group(lang_code) - else: - lang_group = f[lang_code] - - # valid data - if valid_data is not None and "valid" not in lang_group: - sentences = [sample["text"].strip() for sample in valid_data if sample["lang"] == lang_code] - assert len(sentences) > 0 - - separator = Constants.SEPARATORS[lang_code] - valid_text = separator.join(sentences) - - valid_logits = process_logits(valid_text, model, lang_code, args) - - lang_group.create_dataset("valid", data=valid_logits) - - # eval data - for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): - if dataset_name not in lang_group: - dset_group = lang_group.create_group(dataset_name) - else: - dset_group = lang_group[dataset_name] - - if "test_logits" not in dset_group: - test_sentences = dataset["data"] - test_text = Constants.SEPARATORS[lang_code].join(test_sentences) - - test_logits = process_logits(test_text, model, lang_code, args) - test_labels = get_labels(lang_code, test_sentences, after_space=False) - - dset_group.create_dataset("test_logits", data=test_logits) - dset_group.create_dataset("test_labels", data=test_labels) - - train_sentences = dataset["meta"].get("train_data") - if train_sentences is not None and "train_logits" not in dset_group: - train_sentences = train_sentences[:max_n_train_sentences] - train_text = Constants.SEPARATORS[lang_code].join(train_sentences) - - train_logits = process_logits(train_text, model, lang_code, args) - train_labels = get_labels(lang_code, train_sentences, after_space=False) - - dset_group.create_dataset("train_logits", data=train_logits) - dset_group.create_dataset("train_labels", data=train_labels) - - return h5py.File(logits_path, "r") - - -def compute_statistics(values): - if not values: # Check for empty values list - return {"mean": None, "median": None, "std": None, "min": None, "min_lang": None, "max": None, "max_lang": None} - - scores, langs = zip(*values) # Unpack scores and languages - min_index = np.argmin(scores) - max_index = np.argmax(scores) - return { - "mean": np.mean(scores), - "median": np.median(scores), - "std": np.std(scores), - "min": scores[min_index], - "min_lang": langs[min_index], - "max": scores[max_index], - "max_lang": langs[max_index] - } - - -if __name__ == "__main__": - (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() - - eval_data = torch.load(args.eval_data_path) - if args.valid_text_path is not None: - valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") - else: - valid_data = None - - print("Loading model...") - model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) - - # first, logits for everything. - f = load_or_compute_logits(args, model, eval_data, valid_data) - - # now, compute the intrinsic scores. - results = {} - clfs = {} - # Initialize lists to store scores for each metric across all languages - u_scores, t_scores, punct_scores = [], [], [] - - for lang_code, dsets in tqdm(eval_data.items()): - if args.include_langs is not None and lang_code not in args.include_langs: - continue - - print(f"Predicting {lang_code}...") - results[lang_code] = {} - clfs[lang_code] = {} - - for dataset_name, dataset in dsets["sentence"].items(): - sentences = dataset["data"] - - if "train_logits" in f[lang_code][dataset_name]: - feature_indices = None - clf = train_mixture( - [lang_code], - f[lang_code][dataset_name]["train_logits"][:], - f[lang_code][dataset_name]["train_labels"][:], - features=feature_indices, - ) - if clf[0] is not None: - print(clf) - print(np.argsort(clf[0].coef_[0])[:10], "...", np.argsort(clf[0].coef_[0])[-10:]) - print(np.where(np.argsort(clf[0].coef_[0]) == 0)[0]) - - score_t, score_punct, _ = evaluate_mixture( - lang_code, - f[lang_code][dataset_name]["test_logits"][:], - sentences, - *clf, - ) - - clfs[lang_code][dataset_name] = clf - - clf = list(copy.deepcopy(clf)) - clf[-1] = args.threshold - else: - score_t = score_punct = None - - score_u, _, _ = evaluate_mixture(lang_code, f[lang_code][dataset_name]["test_logits"][:], sentences, *clf) - - results[lang_code][dataset_name] = { - "u": score_u, - "t": score_t, - "punct": score_punct, - } - - # just for printing - score_t = score_t or 0.0 - score_punct = score_punct or 0.0 - - u_scores.append((score_u, lang_code)) - t_scores.append((score_t, lang_code)) - punct_scores.append((score_punct, lang_code)) - print(f"{lang_code} {dataset_name} {score_u:.3f} {score_t:.3f} {score_punct:.3f}") - - # Compute statistics for each metric across all languages - results_avg = { - "u": compute_statistics(u_scores), - "t": compute_statistics(t_scores), - "punct": compute_statistics(punct_scores), - "include_langs": args.include_langs, - } - - sio.dump( - clfs, - open( - Constants.CACHE_DIR / (f"{args.model_path.split('/')[0]}_L_b{args.block_size}+s{args.stride}.skops"), - "wb", - ), - ) - json.dump( - results, - open( - Constants.CACHE_DIR - / (f"{args.model_path.split('/')[0]}_L_b{args.block_size}+s{args.stride}_intrinsic_results_u{args.threshold}.json"), - "w", - ), - indent=4, - ) - - # Write results_avg to JSON - json.dump( - results_avg, - open(Constants.CACHE_DIR / (f"{args.model_path.split('/')[0]}_L_b{args.block_size}+s{args.stride}_u{args.threshold}_AVG.json"), "w"), - indent=4, - ) diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 6ab59906..641869c3 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -6,6 +6,7 @@ from pathlib import Path from typing import List import logging +from collections import defaultdict import numpy as np import pandas as pd @@ -59,7 +60,9 @@ def LANG_CODE_TO_INDEX(self): @cached_property def SEPARATORS(self): - return {lang: ("" if row["no_whitespace"] else " ") for lang, row in Constants.LANGINFO.iterrows()} + return defaultdict( + lambda: " ", {lang: ("" if row["no_whitespace"] else " ") for lang, row in self.LANGINFO.iterrows()} + ) Constants = ConstantsClass() @@ -261,7 +264,6 @@ def corrupt( del block_ids[i + 1] if random.random() < label_args.case_corruption_prob_after_newline and i + 1 < len(input_ids): input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) - elif label_args.use_auxiliary and labels[i] > Constants.AUX_OFFSET: # auxiliary if pack_samples: @@ -285,7 +287,11 @@ def corrupt( del labels[i + 1] del block_ids[i + 1] removed_aux_char = True - if random.random() < label_args.case_corruption_prob_after_punct and removed_aux_char and i + 1 < len(input_ids): + if ( + random.random() < label_args.case_corruption_prob_after_punct + and removed_aux_char + and i + 1 < len(input_ids) + ): input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) try: @@ -295,6 +301,7 @@ def corrupt( return input_ids, block_ids, labels + def _corrupt_case(tokenizer: AutoTokenizer, input_ids: List[int], labels: List[int], block_ids: List[int], i: int): if not tokenizer: raise NotImplementedError() @@ -330,6 +337,7 @@ def _corrupt_case(tokenizer: AutoTokenizer, input_ids: List[int], labels: List[i return input_ids, labels, block_ids + def indices_to_sentences(text, indices, strip_whitespace=False): sentences = [] From f9be951bf84e1b0a5460d0b73b1dfc0afc247361 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 2 Feb 2024 20:04:08 +0000 Subject: [PATCH 050/262] add lower & rmp intrinsic eval --- wtpsplit/evaluation/intrinsic.py | 42 ++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index b29c30c9..a2545611 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -47,9 +47,16 @@ class Args: threshold: float = 0.01 max_n_train_sentences: int = 10_000 save_suffix: str = "" + do_lowercase: bool = False + do_remove_punct: bool = False def process_logits(text, model, lang_code, args): + if args.do_lowercase: + text = text.lower() + if args.do_remove_punct: + for punct in Constants.PUNCTUATION_CHARS: + text = text.replace(punct, "") # Extract necessary data logits, offsets_mapping, tokenizer, _ = extract( [text], @@ -76,18 +83,19 @@ def process_logits(text, model, lang_code, args): return logits -def load_or_compute_logits(args, model, eval_data, valid_data=None): - logits_path = Constants.CACHE_DIR / ( - f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_logits_u{args.threshold}_{args.save_suffix}.h5" - ) +def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: str = None): + logits_path = Constants.CACHE_DIR / "intrinsic" / f"{save_str}.h5" + + if not os.path.exists(Constants.CACHE_DIR / "intrinsic"): + os.makedirs(Constants.CACHE_DIR / "intrinsic") + if args.custom_language_list is not None: with open(args.custom_language_list, "r") as f: # file is a csv: l1,l2,... use_langs = f.read().strip().split(",") else: use_langs = Constants.LANGINFO.index - - + total_test_time = 0 # Initialize total test processing time # TODO: revert to "a" @@ -131,7 +139,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None): test_logits = process_logits(test_text, model, lang_code, args) end_time = time.time() # End timing for test logits processing total_test_time += end_time - start_time # Accumulate test processing time - + test_labels = get_labels(lang_code, test_sentences, after_space=False) dset_group.create_dataset("test_logits", data=test_logits) @@ -172,6 +180,14 @@ def compute_statistics(values): def main(args): + save_str = ( + f"{args.model_path.replace('/','_')}_b{args.block_size}_s{args.stride}_u{args.threshold}{args.save_suffix}" + ) + if args.do_lowercase: + save_str += "_lc" + if args.do_remove_punct: + save_str += "_rmp" + eval_data = torch.load(args.eval_data_path) if args.valid_text_path is not None: valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") @@ -182,7 +198,7 @@ def main(args): model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) # first, logits for everything. - f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data) + f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) # now, compute the intrinsic scores. results = {} @@ -255,17 +271,14 @@ def main(args): sio.dump( clfs, open( - Constants.CACHE_DIR / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_{args.save_suffix}.skops"), + Constants.CACHE_DIR / "intrinsic" / save_str + ".skops", "wb", ), ) json.dump( results, open( - Constants.CACHE_DIR - / ( - f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_intrinsic_results_u{args.threshold}_{args.save_suffix}.json" - ), + Constants.CACHE_DIR / "intrinsic" / save_str + ".json", "w", ), indent=4, @@ -275,8 +288,7 @@ def main(args): json.dump( results_avg, open( - Constants.CACHE_DIR - / (f"{args.model_path.split('/')[0]}_b{args.block_size}+s{args.stride}_u{args.threshold}_{args.save_suffix}_AVG.json"), + Constants.CACHE_DIR / "intrinsic" / save_str + "_AVG.json", "w", ), indent=4, From 2443bccb82e9920d091dbb9af9a9f2dc8b55b164 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 3 Feb 2024 08:18:57 +0000 Subject: [PATCH 051/262] fix corruption --- wtpsplit/evaluation/intrinsic.py | 34 ++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index a2545611..f9a0b563 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -52,11 +52,6 @@ class Args: def process_logits(text, model, lang_code, args): - if args.do_lowercase: - text = text.lower() - if args.do_remove_punct: - for punct in Constants.PUNCTUATION_CHARS: - text = text.replace(punct, "") # Extract necessary data logits, offsets_mapping, tokenizer, _ = extract( [text], @@ -83,6 +78,15 @@ def process_logits(text, model, lang_code, args): return logits +def corrupt(text: str, args: Args): + if args.do_lowercase: + text = text.lower() + if args.do_remove_punct: + for punct in Constants.PUNCTUATION_CHARS: + text = text.replace(punct, "") + return text + + def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: str = None): logits_path = Constants.CACHE_DIR / "intrinsic" / f"{save_str}.h5" @@ -99,7 +103,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st total_test_time = 0 # Initialize total test processing time # TODO: revert to "a" - with h5py.File(logits_path, "a") as f, torch.no_grad(): + with h5py.File(logits_path, "w") as f, torch.no_grad(): for lang_code in use_langs: if args.include_langs is not None and lang_code not in args.include_langs: continue @@ -112,11 +116,12 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # valid data if valid_data is not None and "valid" not in lang_group: - sentences = [sample["text"].strip() for sample in valid_data if sample["lang"] == lang_code] - assert len(sentences) > 0 + valid_sentences = [sample["text"].strip() for sample in valid_data if sample["lang"] == lang_code] + assert len(valid_sentences) > 0 + valid_sentences = [corrupt(sentence, args) for sentence in valid_sentences] separator = Constants.SEPARATORS[lang_code] - valid_text = separator.join(sentences) + valid_text = separator.join(valid_sentences) valid_logits = process_logits(valid_text, model, lang_code, args) @@ -132,7 +137,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"] - print(len(test_sentences)) + test_sentences = [corrupt(sentence, args) for sentence in test_sentences] test_text = Constants.SEPARATORS[lang_code].join(test_sentences) start_time = time.time() # Start timing for test logits processing @@ -147,7 +152,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st train_sentences = dataset["meta"].get("train_data") if train_sentences is not None and "train_logits" not in dset_group: - print(len(train_sentences)) + train_sentences = [corrupt(sentence, args) for sentence in train_sentences] train_sentences = train_sentences[: args.max_n_train_sentences] train_text = Constants.SEPARATORS[lang_code].join(train_sentences) @@ -215,7 +220,6 @@ def main(args): clfs[lang_code] = {} for dataset_name, dataset in dsets["sentence"].items(): - print(dataset_name) sentences = dataset["data"] if "train_logits" in f[lang_code][dataset_name]: @@ -271,14 +275,14 @@ def main(args): sio.dump( clfs, open( - Constants.CACHE_DIR / "intrinsic" / save_str + ".skops", + Constants.CACHE_DIR / "intrinsic" / f"{save_str}.skops", "wb", ), ) json.dump( results, open( - Constants.CACHE_DIR / "intrinsic" / save_str + ".json", + Constants.CACHE_DIR / "intrinsic" / f"{save_str}.json", "w", ), indent=4, @@ -288,7 +292,7 @@ def main(args): json.dump( results_avg, open( - Constants.CACHE_DIR / "intrinsic" / save_str + "_AVG.json", + Constants.CACHE_DIR / "intrinsic" / f"{save_str}_AVG.json", "w", ), indent=4, From eaa196808c40ea400b83394867eacc8ab3f6a518 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 4 Feb 2024 19:43:49 +0000 Subject: [PATCH 052/262] adapt to current codebase --- wtpsplit/evaluation/punct_annotation_wtp.py | 56 +++++++++++---------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/wtpsplit/evaluation/punct_annotation_wtp.py b/wtpsplit/evaluation/punct_annotation_wtp.py index 75523b6b..3d4ec76c 100644 --- a/wtpsplit/evaluation/punct_annotation_wtp.py +++ b/wtpsplit/evaluation/punct_annotation_wtp.py @@ -1,4 +1,5 @@ from dataclasses import dataclass +import json import numpy as np from sklearn import linear_model @@ -6,8 +7,9 @@ from transformers import AutoModelForTokenClassification, HfArgumentParser import wtpsplit.models # noqa -from wtpsplit.extract import extract +from wtpsplit.extract import PyTorchWrapper from wtpsplit.utils import Constants +from wtpsplit.evaluation.intrinsic import process_logits @dataclass @@ -18,7 +20,7 @@ class Args: stride: int = 64 batch_size: int = 32 n_subsample: int = None - device: str = "cuda" + device: str = "cpu" def load_iwslt(path, fix_space=True): @@ -65,35 +67,21 @@ def load_iwslt(path, fix_space=True): Constants.ROOT_DIR / "data" / "external" / "punctuation_annotation" / "bn" / "test_ref", ) - model = AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device) + print("Loading model...") + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) if args.n_subsample is None: args.n_subsample = len(train_text) + print("Using", args.n_subsample, "train samples...") - train_logits = extract( - [train_text[: args.n_subsample]], - model, - lang_code=args.lang, - stride=args.stride, - block_size=args.block_size, - batch_size=args.batch_size, - use_hidden_states=False, - pad_last_batch=False, - )[0].numpy() - - clf = linear_model.LogisticRegression(penalty="none", multi_class="multinomial", max_iter=10_000) + train_logits = process_logits(train_text[: args.n_subsample], model, args.lang, args) + + clf = linear_model.LogisticRegression( + penalty=None, multi_class="multinomial", max_iter=10_000, random_state=42, verbose=1 + ) clf.fit(train_logits, train_char_labels[: args.n_subsample]) - test_logits = extract( - [test_text], - model, - lang_code=args.lang, - stride=args.stride, - block_size=args.block_size, - batch_size=args.batch_size, - use_hidden_states=False, - pad_last_batch=False, - )[0].numpy() + test_logits = process_logits(test_text, model, args.lang, args) test_preds = clf.predict(test_logits) @@ -103,4 +91,20 @@ def load_iwslt(path, fix_space=True): f1_score(test_char_labels == 3, test_preds == 3), ) avg = np.mean([question, period, comma]) - print(question, period, comma, avg) + results = { + "C": comma, + "P": period, + "Q": question, + "AVG": avg, + } + print(results) + + if not (Constants.CACHE_DIR / "extrinsic").exists(): + (Constants.CACHE_DIR / "extrinsic").mkdir() + json.dump( + results, + open( + Constants.CACHE_DIR / "extrinsic" / f"iwslt_{args.model_path.replace('/','_')}_{args.lang}.json", + "w", + ), + ) From 1e6b2371cac402c34fffba11d527beb47126036b Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 5 Feb 2024 08:48:08 +0000 Subject: [PATCH 053/262] fix rmp labels --- scripts/intrinsic_eval_all.sh | 25 +++++++++++++++++++++++++ wtpsplit/evaluation/intrinsic.py | 20 ++++++++++---------- 2 files changed, 35 insertions(+), 10 deletions(-) create mode 100755 scripts/intrinsic_eval_all.sh diff --git a/scripts/intrinsic_eval_all.sh b/scripts/intrinsic_eval_all.sh new file mode 100755 index 00000000..f804b2e2 --- /dev/null +++ b/scripts/intrinsic_eval_all.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# This script takes one argument: --model_path +MODEL_PATH="$1" + +# array to hold the following additional commands: +# "--do_lowercase", "--do_remove_punct", "--do_lowercase --do_remove_punct" +assoc_array=( + # "--do_lowercase" + "--do_remove_punct" + "--do_lowercase --do_remove_punct" +) +# Loop through the associative array +for i in "${assoc_array[@]}" +do + # Construct the command + cmd="python3 wtpsplit/evaluation/intrinsic.py --model_path $MODEL_PATH $i" + + + # Execute the command + echo "Executing: $cmd" + eval $cmd +done + +echo "All evaluations completed." diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index f9a0b563..bac6069b 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -83,7 +83,7 @@ def corrupt(text: str, args: Args): text = text.lower() if args.do_remove_punct: for punct in Constants.PUNCTUATION_CHARS: - text = text.replace(punct, "") + text = text.replace(punct, '') return text @@ -145,7 +145,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st end_time = time.time() # End timing for test logits processing total_test_time += end_time - start_time # Accumulate test processing time - test_labels = get_labels(lang_code, test_sentences, after_space=False) + test_labels = get_labels(lang_code, test_sentences, after_space=args.do_remove_punct) dset_group.create_dataset("test_logits", data=test_logits) dset_group.create_dataset("test_labels", data=test_labels) @@ -157,7 +157,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st train_text = Constants.SEPARATORS[lang_code].join(train_sentences) train_logits = process_logits(train_text, model, lang_code, args) - train_labels = get_labels(lang_code, train_sentences, after_space=False) + train_labels = get_labels(lang_code, train_sentences, after_space=args.do_remove_punct) dset_group.create_dataset("train_logits", data=train_logits) dset_group.create_dataset("train_labels", data=train_labels) @@ -272,13 +272,13 @@ def main(args): "include_langs": args.include_langs, } - sio.dump( - clfs, - open( - Constants.CACHE_DIR / "intrinsic" / f"{save_str}.skops", - "wb", - ), - ) + # sio.dump( + # clfs, + # open( + # Constants.CACHE_DIR / "intrinsic" / f"{save_str}.skops", + # "wb", + # ), + # ) json.dump( results, open( From d0d737eac8a7d1c841064ca20459c50811bb33fe Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 5 Feb 2024 11:30:34 +0000 Subject: [PATCH 054/262] actually fix rmp eval --- wtpsplit/evaluation/__init__.py | 5 +++-- wtpsplit/evaluation/intrinsic.py | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index 5d962cd5..c7ac8856 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -26,11 +26,12 @@ def get_labels(lang_code, sentences, after_space=True): true_end_indices = np.cumsum(np.array([len(s) for s in sentences])) + np.arange(1, len(sentences) + 1) * len( separator ) - # no space after last - true_end_indices[-1] -= len(separator) if not after_space: true_end_indices -= len(separator) + 1 + else: + # no space after last + true_end_indices[-1] -= len(separator) labels = np.zeros(len(text) + 1) labels[true_end_indices] = 1 diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index bac6069b..ea94a122 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -145,7 +145,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st end_time = time.time() # End timing for test logits processing total_test_time += end_time - start_time # Accumulate test processing time - test_labels = get_labels(lang_code, test_sentences, after_space=args.do_remove_punct) + test_labels = get_labels(lang_code, test_sentences, after_space=False) dset_group.create_dataset("test_logits", data=test_logits) dset_group.create_dataset("test_labels", data=test_labels) @@ -157,7 +157,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st train_text = Constants.SEPARATORS[lang_code].join(train_sentences) train_logits = process_logits(train_text, model, lang_code, args) - train_labels = get_labels(lang_code, train_sentences, after_space=args.do_remove_punct) + train_labels = get_labels(lang_code, train_sentences, after_space=False) dset_group.create_dataset("train_logits", data=train_logits) dset_group.create_dataset("train_labels", data=train_labels) @@ -221,6 +221,7 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"] + sentences = [corrupt(sentence, args) for sentence in sentences] if "train_logits" in f[lang_code][dataset_name]: feature_indices = None From 2cf1198899f2c15a40a89010b806d51ef6736f27 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 9 Feb 2024 16:41:26 +0000 Subject: [PATCH 055/262] pairwise eval (inference mode) --- wtpsplit/evaluation/__init__.py | 12 +- wtpsplit/evaluation/intrinsic_pairwise.py | 383 ++++++++++++++++++++++ wtpsplit/extract.py | 12 +- wtpsplit/extract_batched.py | 126 +++++++ 4 files changed, 522 insertions(+), 11 deletions(-) create mode 100644 wtpsplit/evaluation/intrinsic_pairwise.py create mode 100644 wtpsplit/extract_batched.py diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index c7ac8856..e86d8ce7 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -55,6 +55,14 @@ def evaluate_sentences(lang_code, sentences, predicted_sentences): return f1_score(labels, predictions), { "recall": recall_score(labels, predictions), "precision": precision_score(labels, predictions), + # pairwise: ignore end-of-text label + # only correct if we correctly predict the single newline in between the sentence pair + # --> no false positives, no false negatives allowed! + "correct_pairwise": ( + (np.where(labels[:-1] == 1)[0] == predicted_end_indices[:-1]).all() + if len(predicted_end_indices) > 1 + else False + ), } @@ -356,9 +364,7 @@ def get_token_spans(tokenizer, offsets_mapping, tokens): def token_to_char_probs(text, tokens, token_logits, tokenizer, offsets_mapping): - char_probs = np.full( - (len(text), token_logits.shape[1]), np.min(token_logits) - ) # Initialize with very low numbers + char_probs = np.full((len(text), token_logits.shape[1]), np.min(token_logits)) # Initialize with very low numbers valid_indices, valid_offsets = get_token_spans(tokenizer, offsets_mapping, tokens) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py new file mode 100644 index 00000000..3cd1369a --- /dev/null +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -0,0 +1,383 @@ +import copy +import json +from dataclasses import dataclass +from typing import List, Tuple +import os +import time +import random +import sys + +import h5py +import skops.io as sio +import torch +from datasets import load_dataset +from tqdm.auto import tqdm +from transformers import AutoModelForTokenClassification, HfArgumentParser +import numpy as np + +import wtpsplit.models # noqa: F401 +from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs +from wtpsplit.extract import PyTorchWrapper +from wtpsplit.extract_batched import extract_batched +from wtpsplit.utils import Constants +from wtpsplit.evaluation.intrinsic import compute_statistics, corrupt + + +@dataclass +class Args: + model_path: str + # eval data in the format: + # { + # "": { + # "sentence": { + # "": { + # "meta": { + # "train_data": ["train sentence 1", "train sentence 2"] + # }, + # "data": ["test sentence 1", "test sentence 2"] + # } + # } + # } + # } + eval_data_path: str = "data/eval.pth" + valid_text_path: str = None # "data/sentence/valid.parquet" + device: str = "cpu" + block_size: int = 512 + batch_size: int = 128 + include_langs: List[str] = None + threshold: float = 0.01 + max_n_train_sentences: int = 10_000 + save_suffix: str = "" + do_lowercase: bool = False + do_remove_punct: bool = False + # pairwise-specific args + max_n_pairs: int = sys.maxsize + pair_sample_pct: float = 1 + min_pair_length: int = 0 + + +def process_logits_pairwise(pairs, model, lang_code, args): + logits_list = [] + # create batches of sentence pairs + batched_pairs = [pairs[i : i + args.batch_size] for i in range(0, len(pairs), args.batch_size)] + for batch in tqdm(batched_pairs): + pair_texts = [pair[0] + Constants.SEPARATORS[lang_code] + pair[1] for pair in batch] + logits, offsets_mapping, tokenizer = extract_batched( + pair_texts, + model, + lang_code=lang_code, + block_size=args.block_size, + batch_size=args.batch_size, + pad_last_batch=True, + ) + + for pair, logit, offset_mapping in zip(pair_texts, logits, offsets_mapping): + if "xlm" in model.config.model_type: + tokens = tokenizer.tokenize(pair, verbose=False) + + # padding is also removed here (via offset_mapping) + logits = token_to_char_probs(pair, tokens, logit, tokenizer, offset_mapping) + logits_list.append(logits) + else: + if len(logit) < offset_mapping: + # truncated input --> pad back + logit = np.pad( + logit, ((0, offset_mapping - len(logit)), (0, 0)), "constant", constant_values=np.min(logit) + ) + # since we pad to equal length, we need to remove the padding + logits_list.append(logit[:offset_mapping]) + + return logits_list + + +def generate_pairs(sentences: List[str], args) -> List[Tuple[str, str]]: + """Generate sentence pairs from a list of sentences. + + Args: + sentences (List[str]): Input list of sentences. + args: Args object containing the following relevant attributes: + - pair_sample_pct: Percentage of all possible pairs to sample. + - min_pair_length: Minimum length of a sentence pair. + - max_n_sentences: Maximum number of sentences to sample. + - do_lowercase: Whether to lowercase the sentences. + - do_remove_punct: Whether to remove punctuation from the sentences. + + Returns: + List[Tuple[str, str]]: List of sentence pairs. + """ + random.seed(42) + n_pairs = len(sentences) // 2 + sample_size = min(round(n_pairs * args.pair_sample_pct), args.max_n_pairs) + + # If we need to sample a subset of all possible pairs, do so efficiently + if sample_size < n_pairs: + sampled_indices = set(random.sample(range(n_pairs), sample_size)) + all_pairs = [ + (sentences[2 * i], sentences[2 * i + 1]) + for i in sampled_indices + if len(sentences[2 * i]) + len(sentences[2 * i + 1]) > args.min_pair_length + ] + else: + # Generate all pairs that meet the min_pair_length criterion + all_pairs = [ + (sentences[i], sentences[i + 1]) + for i in range(0, len(sentences) - 1, 2) + if len(sentences[i]) + len(sentences[i + 1]) > args.min_pair_length + ] + + # corrupt pairs + all_pairs = [(corrupt(pair[0], args), corrupt(pair[1], args)) for pair in all_pairs] + return all_pairs + + +def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: str = None): + logits_path = Constants.CACHE_DIR / "intrinsic_pairwise" / f"{save_str}.h5" + + if not os.path.exists(Constants.CACHE_DIR / "intrinsic_pairwise"): + os.makedirs(Constants.CACHE_DIR / "intrinsic_pairwise") + + total_test_time = 0 # Initialize total test processing time + + # FIXME: revert to "a" + start_time = time.time() + with h5py.File(logits_path, "w") as f, torch.no_grad(): + for lang_code in Constants.LANGINFO.index: + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + print(f"Processing {lang_code}...") + if lang_code not in f: + lang_group = f.create_group(lang_code) + else: + lang_group = f[lang_code] + + # eval data + for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): + print(dataset_name) + if dataset_name not in lang_group: + dset_group = lang_group.create_group(dataset_name) + else: + dset_group = lang_group[dataset_name] + + if "test_logits" not in dset_group: + test_sentences = dataset["data"] + all_pairs_test = generate_pairs(test_sentences, args) + + start_time = time.time() # Start timing for test logits processing + test_logits = process_logits_pairwise( + all_pairs_test, + model, + lang_code, + args, + ) + end_time = time.time() + + test_logit_lengths = [] + # store start and end indices for each pair, used later to slice the logits + all_logit_lengths = np.append(0, np.cumsum([len(logits) for logits in test_logits])) + # append tuple of start and end indices for each pair + for i in range(len(test_logits)): + test_logit_lengths.append((all_logit_lengths[i], all_logit_lengths[i + 1] - 1)) + + test_logits = np.concatenate(test_logits) + total_test_time += end_time - start_time # Accumulate test processing time + + # get_labels returns 2nd label at end of seq, which we do not want. + # label is at position -2 --> remove and add back 0 to end of sequence + test_labels = [ + np.append(get_labels(lang_code, [pair[0], pair[1]], after_space=False)[:-2], 0) + for pair in all_pairs_test + ] + + # flatten; append 0 eos to account for later indexing/slicing + test_labels = np.append(np.concatenate(test_labels), 0) + assert len(test_labels) == len(test_logits) + 1 + + dset_group.create_dataset("test_logits", data=test_logits) + dset_group.create_dataset("test_labels", data=test_labels) + dset_group.create_dataset("test_logit_lengths", data=test_logit_lengths) + + train_sentences = dataset["meta"].get("train_data") + if train_sentences is not None and "train_logits" not in dset_group: + train_sentences = train_sentences[: args.max_n_train_sentences] + all_pairs_train = generate_pairs(train_sentences, args) + + train_logits = process_logits_pairwise(all_pairs_train, model, lang_code, args) + train_logits = np.concatenate(train_logits) + + train_labels = [ + np.append(get_labels(lang_code, [pair[0], pair[1]], after_space=False)[:-2], 0) + for pair in all_pairs_train + ] + train_labels = np.append(np.concatenate(train_labels), 0) + assert len(train_labels) == len(train_logits) + 1 + + dset_group.create_dataset("train_logits", data=train_logits) + dset_group.create_dataset("train_labels", data=train_labels) + + end_time = time.time() + return h5py.File(logits_path, "r"), total_test_time / 60 # to minutes + + +def main(args): + save_str = f"{args.model_path.replace('/','_')}_b{args.block_size}_u{args.threshold}{args.save_suffix}" + if args.do_lowercase: + save_str += "_lc" + if args.do_remove_punct: + save_str += "_rmp" + + eval_data = torch.load(args.eval_data_path) + if args.valid_text_path is not None: + valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") + else: + valid_data = None + + print("Loading model...") + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) + + # first, logits for everything. + f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) + + # now, compute the intrinsic scores. + results = {} + clfs = {} + # Initialize lists to store scores for each metric across all languages + u_scores, t_scores, punct_scores = [], [], [] + u_accs, t_accs, punct_accs = [], [], [] + + for lang_code, dsets in tqdm(eval_data.items()): + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + print(f"Predicting {lang_code}...") + results[lang_code] = {} + clfs[lang_code] = {} + + for dataset_name, dataset in dsets["sentence"].items(): + sentences = dataset["data"] + sent_pairs = generate_pairs(sentences, args) + + if "train_logits" in f[lang_code][dataset_name]: + feature_indices = None + # it is sufficient to feed in 1 long sequence of tokens here since we only use logits for LR + clf = train_mixture( + [lang_code], + f[lang_code][dataset_name]["train_logits"][:], + f[lang_code][dataset_name]["train_labels"][:], + features=feature_indices, + ) + # XXX: clf thresholds are still fitted on max. F1 score, not accuracy! + # (but still without a positive label at the end) + if clf[0] is not None: + print(clf) + + score_t = [] + score_punct = [] + # acc: average of correct 100% pairwise segmentation + acc_t = [] + acc_punct = [] + + # evaluate each pair + for i, pair in enumerate(sent_pairs): + start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] + single_score_t, single_score_punct, info = evaluate_mixture( + lang_code, + f[lang_code][dataset_name]["test_logits"][:][start:end], + list(pair), + *clf, + ) + score_t.append(single_score_t) + score_punct.append(single_score_punct) + acc_t.append(info["info_newline"]["correct_pairwise"]) + acc_punct.append(info["info_transformed"]["correct_pairwise"]) + + clfs[lang_code][dataset_name] = clf + + clf = list(copy.deepcopy(clf)) + clf[-1] = args.threshold + else: + score_t = score_punct = None + acc_t = acc_punct = None + + score_u = [] + acc_u = [] + for i, pair in enumerate(sent_pairs): + start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] + single_score_u, _, info = evaluate_mixture( + lang_code, + f[lang_code][dataset_name]["test_logits"][:][start:end], + list(pair), + *clf, + ) + score_u.append(single_score_u) + acc_u.append(info["info_newline"]["correct_pairwise"]) + + score_u = np.mean(score_u) + score_t = np.mean(score_t) if score_t else None + score_punct = np.mean(score_punct) if score_punct else None + acc_u = np.mean(acc_u) + acc_t = np.mean(acc_t) if score_t else None + acc_punct = np.mean(acc_punct) if score_punct else None + + results[lang_code][dataset_name] = { + "u": score_u, + "t": score_t, + "punct": score_punct, + "u_acc": acc_u, + "t_acc": acc_t, + "punct_acc": acc_punct, + } + + # just for printing + score_t = score_t or 0.0 + score_punct = score_punct or 0.0 + acc_t = acc_t or 0.0 + acc_punct = acc_punct or 0.0 + + u_scores.append((score_u, lang_code)) + u_accs.append((acc_u, lang_code)) + t_scores.append((score_t, lang_code)) + t_accs.append((acc_t, lang_code)) + punct_scores.append((score_punct, lang_code)) + punct_accs.append((acc_punct, lang_code)) + + print(f"{lang_code} {dataset_name} {score_u:.3f} {score_t:.3f} {score_punct:.3f}") + print(f"ACC: {acc_u:.3f} {acc_t:.3f} {acc_punct:.3f}") + + # Compute statistics for each metric across all languages + results_avg = { + "u": compute_statistics(u_scores), + "t": compute_statistics(t_scores), + "punct": compute_statistics(punct_scores), + "u_acc": compute_statistics(u_accs), + "t_acc": compute_statistics(t_accs), + "punct_acc": compute_statistics(punct_accs), + "include_langs": args.include_langs, + } + + json.dump( + results, + open( + Constants.CACHE_DIR / "intrinsic_pairwise" / f"{save_str}.json", + "w", + ), + indent=4, + ) + + # Write results_avg to JSON + json.dump( + results_avg, + open( + Constants.CACHE_DIR / "intrinsic_pairwise" / f"{save_str}_AVG.json", + "w", + ), + indent=4, + ) + os.remove(f.filename) + return results, results_avg, total_test_time + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + results, results_avg, total_test_time = main(args) + print(total_test_time) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index bf8b9706..9b53a029 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -98,14 +98,6 @@ def extract( else: pad_token_id = 0 use_subwords = False - if pairwise: - # we need at least 2 passes to not get NaNs using our logic - stride = (len(batch_of_texts[0]) + 1) // 2 - if len(batch_of_texts[0]) < 4: - # some sentences are only 2-3 tokens long - # not compatible with our logic and not sensible anyhow --> skip. - logger.warning(f"Skipping short sentence pair: {batch_of_texts[0]}, {tokenizer.decode(batch_of_texts[0])}") - return None, None, None, True text_lengths = [len(text) for text in batch_of_texts] # reduce block size if possible @@ -118,6 +110,10 @@ def extract( # total number of forward passes num_chunks = sum(math.ceil(max(length - actual_block_size, 0) / stride) + 1 for length in text_lengths) + if text_lengths[0] <= block_size: + # if the input is smaller than the block size, we only need one forward pass + num_chunks = 1 + actual_block_size, block_size = actual_block_size + 2, block_size + 2 # account for CLS and SEP tokens # preallocate a buffer for all input hashes & attention masks if not use_subwords: diff --git a/wtpsplit/extract_batched.py b/wtpsplit/extract_batched.py new file mode 100644 index 00000000..15058445 --- /dev/null +++ b/wtpsplit/extract_batched.py @@ -0,0 +1,126 @@ +import math +import sys +import logging + +import numpy as np +from tqdm.auto import tqdm +from transformers import AutoTokenizer +from tokenizers import AddedToken + +from wtpsplit.utils import Constants, hash_encode +from wtpsplit.extract import ORTWrapper + +logger = logging.getLogger(__name__) + + +def extract_batched( + batch_of_texts, + model, + block_size, + batch_size, + lang_code=None, + pad_last_batch=False, + verbose=False, +): + """ + Like extract.py, but does not split the input into chunks of block_size. + Instead, it processes the input in batches. So each input batch must be smaller than block_size. + """ + if "xlm" in model.config.model_type: + use_subwords = True + tokenizer = AutoTokenizer.from_pretrained(model.config.base_model) + tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + tokens = tokenizer( + batch_of_texts, + return_offsets_mapping=True, + verbose=False, + padding=True, + return_tensors="np", + truncation=True, + ) + attention_mask = tokens["attention_mask"] + input_ids = tokens["input_ids"] + offset_mapping = [offset[1:-1] for offset in tokens.pop("offset_mapping")] + pad_token_id = tokenizer.pad_token_id + text_lengths = [len(text) for text in input_ids] + else: + pad_token_id = 0 + use_subwords = False + text_lengths = [len(text) for text in batch_of_texts] + offset_mapping = text_lengths + + # when using ChLMs, it can be that the input is too long --> simply truncate + if max(text_lengths) > block_size: + # truncate + longer_than_block_size = [i for i, length in enumerate(text_lengths) if length > block_size] + if verbose: + logger.info(f"Truncating {len(longer_than_block_size)} texts longer than block_size={block_size}") + for i in longer_than_block_size: + batch_of_texts[i] = batch_of_texts[i][:block_size] + + # reduce block size if possible + block_size = min(block_size, max(text_lengths)) + + # make sure block_size is a multiple of downsampling rate + downsampling_rate = getattr(model.config, "downsampling_rate", 1) + block_size = math.ceil(block_size / downsampling_rate) * downsampling_rate + + if not use_subwords: + codec = "utf-32-le" if sys.byteorder == "little" else "utf-32-be" + hashed_ids = [] + attention_mask = np.ones((len(batch_of_texts), block_size), dtype=int) + for i, text in enumerate(batch_of_texts): + ord = np.frombuffer(bytearray(text, encoding=codec), dtype=np.int32) + # pad + if len(ord) < block_size: + # mask out padding + attention_mask[i, len(ord) :] = 0 + # pad to max length + ord = np.pad(ord, (pad_token_id, block_size - len(ord))) + hashed_ids.append(hash_encode(ord, model.config.num_hash_functions, model.config.num_hash_buckets)) + hashed_ids = np.array(hashed_ids) + + + uses_lang_adapters = getattr(model.config, "language_adapter", "off") == "on" + if uses_lang_adapters: + if lang_code is None: + raise ValueError("Please specify a `lang_code` when using a model with language adapters.") + + if isinstance(model, ORTWrapper): + raise ValueError("Language adapters are not supported in ONNX models.") + + language_ids = np.array( + [Constants.LANG_CODE_TO_INDEX[lang_code]] * batch_size, + dtype=int, + ) + else: + language_ids = None + + if len(attention_mask) < batch_size and pad_last_batch: + n_missing = batch_size - len(attention_mask) + + if not use_subwords: + hashed_ids = np.pad(hashed_ids, ((0, n_missing), (0, 0), (0, 0))) + else: + # Pad with the specific pad_token_id for the tokenizer + input_ids = np.pad(input_ids, ((0, n_missing), (0, 0)), constant_values=pad_token_id) + attention_mask = np.pad(attention_mask, ((0, n_missing), (0, 0))) + else: + n_missing = 0 + + kwargs = {"language_ids": language_ids} if uses_lang_adapters else {} + + logits = model( + input_ids=input_ids if use_subwords else None, + hashed_ids=None if use_subwords else hashed_ids, + attention_mask=attention_mask, + **kwargs, + )["logits"] + if use_subwords: + logits = logits[:, 1:-1, :] # remove CLS and SEP tokens + + return ( + logits[: batch_size - n_missing], + offset_mapping, + tokenizer if use_subwords else None, + ) From 03bbb60d2b205987e3fe8f7a7dc2d08ee2f73859 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 12 Feb 2024 11:23:42 +0000 Subject: [PATCH 056/262] proper pairwise eval during training --- wtpsplit/evaluation/intrinsic.py | 30 +++++-- wtpsplit/evaluation/intrinsic_pairwise.py | 79 ++++++++++++----- wtpsplit/extract.py | 6 +- wtpsplit/extract_batched.py | 20 ++--- wtpsplit/train/evaluate.py | 102 ++++++++++------------ wtpsplit/train/train.py | 31 ++++--- wtpsplit/train/utils.py | 7 +- 7 files changed, 157 insertions(+), 118 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index ea94a122..067cb8a8 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -53,7 +53,7 @@ class Args: def process_logits(text, model, lang_code, args): # Extract necessary data - logits, offsets_mapping, tokenizer, _ = extract( + logits, offsets_mapping, tokenizer = extract( [text], model, lang_code=lang_code, @@ -78,12 +78,12 @@ def process_logits(text, model, lang_code, args): return logits -def corrupt(text: str, args: Args): - if args.do_lowercase: +def corrupt(text: str, do_lowercase: bool, do_remove_punct: bool): + if do_lowercase: text = text.lower() - if args.do_remove_punct: + if do_remove_punct: for punct in Constants.PUNCTUATION_CHARS: - text = text.replace(punct, '') + text = text.replace(punct, "") return text @@ -119,7 +119,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st valid_sentences = [sample["text"].strip() for sample in valid_data if sample["lang"] == lang_code] assert len(valid_sentences) > 0 - valid_sentences = [corrupt(sentence, args) for sentence in valid_sentences] + valid_sentences = [ + corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + for sentence in valid_sentences + ] separator = Constants.SEPARATORS[lang_code] valid_text = separator.join(valid_sentences) @@ -137,7 +140,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"] - test_sentences = [corrupt(sentence, args) for sentence in test_sentences] + test_sentences = [ + corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + for sentence in test_sentences + ] test_text = Constants.SEPARATORS[lang_code].join(test_sentences) start_time = time.time() # Start timing for test logits processing @@ -152,7 +158,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st train_sentences = dataset["meta"].get("train_data") if train_sentences is not None and "train_logits" not in dset_group: - train_sentences = [corrupt(sentence, args) for sentence in train_sentences] + train_sentences = [ + corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + for sentence in train_sentences + ] train_sentences = train_sentences[: args.max_n_train_sentences] train_text = Constants.SEPARATORS[lang_code].join(train_sentences) @@ -221,7 +230,10 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"] - sentences = [corrupt(sentence, args) for sentence in sentences] + sentences = [ + corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + for sentence in sentences + ] if "train_logits" in f[lang_code][dataset_name]: feature_indices = None diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index 3cd1369a..a9418a6b 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -56,22 +56,22 @@ class Args: min_pair_length: int = 0 -def process_logits_pairwise(pairs, model, lang_code, args): +def process_logits_pairwise(pairs, model, lang_code, block_size, batch_size, verbose=True) -> List[np.ndarray]: logits_list = [] # create batches of sentence pairs - batched_pairs = [pairs[i : i + args.batch_size] for i in range(0, len(pairs), args.batch_size)] - for batch in tqdm(batched_pairs): + batched_pairs = [pairs[i : i + batch_size] for i in range(0, len(pairs), batch_size)] + for batch in tqdm(batched_pairs, disable=not verbose): pair_texts = [pair[0] + Constants.SEPARATORS[lang_code] + pair[1] for pair in batch] - logits, offsets_mapping, tokenizer = extract_batched( + all_logits, offsets_mapping, tokenizer = extract_batched( pair_texts, model, lang_code=lang_code, - block_size=args.block_size, - batch_size=args.batch_size, + block_size=block_size, + batch_size=batch_size, pad_last_batch=True, ) - for pair, logit, offset_mapping in zip(pair_texts, logits, offsets_mapping): + for pair, logit, offset_mapping in zip(pair_texts, all_logits, offsets_mapping): if "xlm" in model.config.model_type: tokens = tokenizer.tokenize(pair, verbose=False) @@ -90,24 +90,30 @@ def process_logits_pairwise(pairs, model, lang_code, args): return logits_list -def generate_pairs(sentences: List[str], args) -> List[Tuple[str, str]]: +def generate_pairs( + sentences: List[str], + do_lowercase: bool, + do_remove_punct: bool, + pair_sample_pct: float = 1, + max_n_pairs: int = sys.maxsize, + min_pair_length: int = 0, +) -> List[Tuple[str, str]]: """Generate sentence pairs from a list of sentences. Args: sentences (List[str]): Input list of sentences. - args: Args object containing the following relevant attributes: - - pair_sample_pct: Percentage of all possible pairs to sample. - - min_pair_length: Minimum length of a sentence pair. - - max_n_sentences: Maximum number of sentences to sample. - - do_lowercase: Whether to lowercase the sentences. - - do_remove_punct: Whether to remove punctuation from the sentences. + pair_sample_pct (float): Percentage of pairs to sample. + max_n_pairs (int): Maximum number of pairs to sample. + min_pair_length (int): Minimum length of a sentence pair. + do_lowercase (bool): Whether to lowercase the sentences. + do_remove_punct (bool): Whether to remove punctuation from the sentences. Returns: List[Tuple[str, str]]: List of sentence pairs. """ random.seed(42) n_pairs = len(sentences) // 2 - sample_size = min(round(n_pairs * args.pair_sample_pct), args.max_n_pairs) + sample_size = min(round(n_pairs * pair_sample_pct), max_n_pairs) # If we need to sample a subset of all possible pairs, do so efficiently if sample_size < n_pairs: @@ -115,18 +121,21 @@ def generate_pairs(sentences: List[str], args) -> List[Tuple[str, str]]: all_pairs = [ (sentences[2 * i], sentences[2 * i + 1]) for i in sampled_indices - if len(sentences[2 * i]) + len(sentences[2 * i + 1]) > args.min_pair_length + if len(sentences[2 * i]) + len(sentences[2 * i + 1]) > min_pair_length ] else: # Generate all pairs that meet the min_pair_length criterion all_pairs = [ (sentences[i], sentences[i + 1]) for i in range(0, len(sentences) - 1, 2) - if len(sentences[i]) + len(sentences[i + 1]) > args.min_pair_length + if len(sentences[i]) + len(sentences[i + 1]) > min_pair_length ] # corrupt pairs - all_pairs = [(corrupt(pair[0], args), corrupt(pair[1], args)) for pair in all_pairs] + all_pairs = [ + (corrupt(pair[0], do_lowercase, do_remove_punct), corrupt(pair[1], do_lowercase, do_remove_punct)) + for pair in all_pairs + ] return all_pairs @@ -161,14 +170,22 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"] - all_pairs_test = generate_pairs(test_sentences, args) + all_pairs_test = generate_pairs( + test_sentences, + do_lowercase=args.do_lowercase, + do_remove_punct=args.do_remove_punct, + pair_sample_pct=args.pair_sample_pct, + max_n_pairs=args.max_n_pairs, + min_pair_length=args.min_pair_length, + ) start_time = time.time() # Start timing for test logits processing test_logits = process_logits_pairwise( all_pairs_test, model, lang_code, - args, + args.block_size, + args.batch_size, ) end_time = time.time() @@ -200,9 +217,18 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st train_sentences = dataset["meta"].get("train_data") if train_sentences is not None and "train_logits" not in dset_group: train_sentences = train_sentences[: args.max_n_train_sentences] - all_pairs_train = generate_pairs(train_sentences, args) + all_pairs_train = generate_pairs( + train_sentences, + do_lowercase=args.do_lowercase, + do_remove_punct=args.do_remove_punct, + pair_sample_pct=args.pair_sample_pct, + max_n_pairs=args.max_n_pairs, + min_pair_length=args.min_pair_length, + ) - train_logits = process_logits_pairwise(all_pairs_train, model, lang_code, args) + train_logits = process_logits_pairwise( + all_pairs_train, model, lang_code, args.block_size, args.batch_size + ) train_logits = np.concatenate(train_logits) train_labels = [ @@ -255,7 +281,14 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"] - sent_pairs = generate_pairs(sentences, args) + sent_pairs = generate_pairs( + sentences, + do_lowercase=args.do_lowercase, + do_remove_punct=args.do_remove_punct, + pair_sample_pct=args.pair_sample_pct, + max_n_pairs=args.max_n_pairs, + min_pair_length=args.min_pair_length, + ) if "train_logits" in f[lang_code][dataset_name]: feature_indices = None diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 9b53a029..75d65560 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -74,7 +74,6 @@ def extract( lang_code=None, pad_last_batch=False, verbose=False, - pairwise: bool = False, ): """ Computes logits for the given batch of texts by: @@ -113,7 +112,8 @@ def extract( if text_lengths[0] <= block_size: # if the input is smaller than the block size, we only need one forward pass num_chunks = 1 - actual_block_size, block_size = actual_block_size + 2, block_size + 2 # account for CLS and SEP tokens + if use_subwords: + actual_block_size, block_size = actual_block_size + 2, block_size + 2 # account for CLS and SEP tokens # preallocate a buffer for all input hashes & attention masks if not use_subwords: @@ -237,4 +237,4 @@ def extract( # so far, logits are summed, so we average them here all_logits = [(logits / counts[:, None]).astype(np.float16) for logits, counts in zip(all_logits, all_counts)] - return all_logits, offset_mapping if use_subwords else None, tokenizer if use_subwords else None, False + return all_logits, offset_mapping if use_subwords else None, tokenizer if use_subwords else None diff --git a/wtpsplit/extract_batched.py b/wtpsplit/extract_batched.py index 15058445..3ea4a71d 100644 --- a/wtpsplit/extract_batched.py +++ b/wtpsplit/extract_batched.py @@ -34,9 +34,10 @@ def extract_batched( batch_of_texts, return_offsets_mapping=True, verbose=False, - padding=True, + padding="max_length", # pad to max length (TPUs need fixed length inputs) return_tensors="np", truncation=True, + max_length=block_size, ) attention_mask = tokens["attention_mask"] input_ids = tokens["input_ids"] @@ -46,7 +47,8 @@ def extract_batched( else: pad_token_id = 0 use_subwords = False - text_lengths = [len(text) for text in batch_of_texts] + input_ids = batch_of_texts.copy() + text_lengths = [len(text) for text in input_ids] offset_mapping = text_lengths # when using ChLMs, it can be that the input is too long --> simply truncate @@ -56,10 +58,7 @@ def extract_batched( if verbose: logger.info(f"Truncating {len(longer_than_block_size)} texts longer than block_size={block_size}") for i in longer_than_block_size: - batch_of_texts[i] = batch_of_texts[i][:block_size] - - # reduce block size if possible - block_size = min(block_size, max(text_lengths)) + input_ids[i] = input_ids[i][:block_size] # make sure block_size is a multiple of downsampling rate downsampling_rate = getattr(model.config, "downsampling_rate", 1) @@ -68,18 +67,17 @@ def extract_batched( if not use_subwords: codec = "utf-32-le" if sys.byteorder == "little" else "utf-32-be" hashed_ids = [] - attention_mask = np.ones((len(batch_of_texts), block_size), dtype=int) - for i, text in enumerate(batch_of_texts): + attention_mask = np.ones((len(input_ids), block_size), dtype=int) + for i, text in enumerate(input_ids): ord = np.frombuffer(bytearray(text, encoding=codec), dtype=np.int32) # pad if len(ord) < block_size: # mask out padding attention_mask[i, len(ord) :] = 0 - # pad to max length - ord = np.pad(ord, (pad_token_id, block_size - len(ord))) + # pad to max length, i.e., block size (no truncation due to TPUs) + ord = np.pad(ord, (0, block_size - len(ord))) hashed_ids.append(hash_encode(ord, model.config.num_hash_functions, model.config.num_hash_buckets)) hashed_ids = np.array(hashed_ids) - uses_lang_adapters = getattr(model.config, "language_adapter", "off") == "on" if uses_lang_adapters: diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index e3885975..582db6e1 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -1,13 +1,16 @@ +import copy +import logging +import sys + import numpy as np import pysbd import sklearn.metrics -import logging -from wtpsplit.extract import extract, PyTorchWrapper -from wtpsplit.utils import Constants from wtpsplit.evaluation import token_to_char_probs -import random -import copy +from wtpsplit.evaluation.intrinsic_pairwise import generate_pairs, process_logits_pairwise +from wtpsplit.extract import PyTorchWrapper, extract +from wtpsplit.utils import Constants +from wtpsplit.evaluation.intrinsic import corrupt logger = logging.getLogger(__name__) @@ -74,14 +77,10 @@ def evaluate_sentence( sentences = [sentence.lstrip("-").strip() for sentence in sentences] separator = Constants.SEPARATORS[lang_code] - if do_lowercase: - sentences = [sentence.lower() for sentence in sentences] - if do_remove_punct: - for punct in Constants.PUNCTUATION_CHARS: - sentences = [sentence.replace(punct, "") for sentence in sentences] + sentences = [corrupt(sentence, do_lowercase, do_remove_punct) for sentence in sentences] text = separator.join(sentences) - logits, offsets_mapping, tokenizer, _ = extract( + logits, offsets_mapping, tokenizer = extract( [text], PyTorchWrapper(model.backbone), lang_code=lang_code, @@ -125,8 +124,8 @@ def evaluate_sentence_pairwise( stride, block_size, batch_size, - pair_sample_pct: float = 0.01, - max_pairs: int = 10, + pair_sample_pct: float = 0.1, + max_pairs: int = sys.maxsize, use_pysbd=False, positive_index=None, do_lowercase=False, @@ -140,68 +139,55 @@ def evaluate_sentence_pairwise( separator = Constants.SEPARATORS[lang_code] metrics_list = [] + accuracy_list = [] - # Make a copy of the model for CPU operations - model = PyTorchWrapper(model.backbone) - # Generate all possible sentence pairs - all_pairs = list(zip(sentences[:-1], sentences[1:])) + # get pairs of sentences (non-overlapping) + sampled_pairs = generate_pairs( + sentences=sentences, + pair_sample_pct=pair_sample_pct, + max_n_pairs=max_pairs, + min_pair_length=0, + do_lowercase=do_lowercase, + do_remove_punct=do_remove_punct, + ) - # Randomly sample N% of the sentence pairs - sample_size = ( - min(int(len(all_pairs) * pair_sample_pct) + 1, max_pairs) - if max_pairs is not None - else int(len(all_pairs) * pair_sample_pct) + 1 + # get logits for each pair + logits = process_logits_pairwise( + pairs=sampled_pairs, + model=PyTorchWrapper(model.backbone), + lang_code=lang_code, + block_size=block_size, + batch_size=batch_size, + verbose=False, ) - # set seed so we get the same pairs every time - random.seed(42) - sampled_pairs = random.sample(all_pairs, sample_size) - separator = Constants.SEPARATORS[lang_code] - metrics_list = [] + # simulate performance for WtP-U + DEFAULT_THRESHOLD = 0.01 + - for sentence1, sentence2 in sampled_pairs: - if do_lowercase: - sentence1 = sentence1.lower() - sentence2 = sentence2.lower() - if do_remove_punct: - for punct in Constants.PUNCTUATION_CHARS: - sentence1 = sentence1.replace(punct, "") - sentence2 = sentence2.replace(punct, "") + for i, (sentence1, sentence2) in enumerate(sampled_pairs): + newline_probs = logits[i][:, positive_index] pair_text = sentence1 + separator + sentence2 - logits, offsets_mapping, tokenizer, skip = extract( - [pair_text], - model, - lang_code=lang_code, - stride=stride, - block_size=block_size, - batch_size=batch_size, - pairwise=True, - ) - if skip: - continue - logits = logits[0] - if offsets_mapping is not None: - offsets_mapping = offsets_mapping[0] - # Calculate newline labels and probabilities true_end_indices = np.cumsum(np.array([len(s) for s in [sentence1, sentence2]])) + np.arange(2) * len(separator) newline_labels = np.zeros(len(pair_text)) newline_labels[true_end_indices - 1] = 1 - if "xlm" in model.config.model_type: - tokens = tokenizer.tokenize(pair_text, verbose=False) - char_probs = token_to_char_probs(pair_text, tokens, logits, tokenizer, offsets_mapping) - else: - char_probs = logits - newline_probs = char_probs[:, positive_index] - # Get metrics for the pair pair_metrics, _ = get_metrics(newline_labels, newline_probs) metrics_list.append(pair_metrics["pr_auc"]) + predicted_labels = newline_probs > np.log(DEFAULT_THRESHOLD / (1 - DEFAULT_THRESHOLD)) # inverse sigmoid + # for accuracy, check if the single label in between is correctly predicted (ignore the one at the end) + if sum(predicted_labels[:-1]) > 0: + correct = (np.where(newline_labels[:-1])[0] == np.where(predicted_labels[:-1])[0]).all() + accuracy_list.append(correct) + else: + accuracy_list.append(False) # Compute and return the average metric average_metric = np.mean(metrics_list) - return average_metric, _ + avg_accuracy = np.mean(accuracy_list) + return average_metric, avg_accuracy diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 68c2578c..b9a24c40 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -21,6 +21,7 @@ from torchinfo import summary from tqdm.auto import tqdm from transformers import AutoTokenizer, HfArgumentParser, TrainingArguments, set_seed +import pdb import wandb from wtpsplit.models import ( @@ -181,7 +182,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): out = { "input_ids": torch.stack(all_input_ids, 0), "attention_mask": torch.stack(all_attention_masks, 0), - "position_ids": None if args.use_subwords else torch.stack(all_position_ids, 0), # safer + "position_ids": torch.stack(all_position_ids, 0), "language_ids": torch.tensor(all_language_ids, dtype=torch.long), "label_weights": torch.stack(all_label_weights, 0), "labels": torch.stack(all_labels, 0), @@ -536,15 +537,14 @@ def maybe_pad(text): # print some samples from the dataset count = 0 - while count < 20: + while count < 5: index = random.choice(range(len(train_dataset))) sample = train_dataset[index] - if sample.get("lang") in ["zh", "ja", "my", "km"]: - logger.warning(f"Sample {index} of the training set: {sample}.") - if tokenizer: - logger.warning(tokenizer.decode(sample["input_ids"])) - count += 1 + logger.warning(f"Sample {index} of the training set: {sample}.") + if tokenizer: + logger.warning(tokenizer.decode(sample["input_ids"])) + count += 1 eval_data = torch.load( args.eval_data_path, @@ -561,6 +561,7 @@ def compute_metrics(trainer): continue if trainer.args.process_index == 0 and args.do_sentence_training: + # with training_args.main_process_first(): for dataset_name, dataset in lang_data["sentence"].items(): score, _ = evaluate_sentence( lang_code, @@ -576,7 +577,6 @@ def compute_metrics(trainer): avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) else: avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) - for dataset_name, dataset in lang_data["sentence"].items(): score, _ = evaluate_sentence( lang_code, dataset["data"], @@ -593,8 +593,7 @@ def compute_metrics(trainer): avg_metrics[f"lower_rmp_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) else: avg_metrics[f"lower_rmp_average_whitespace_{dataset_name}_pr_auc"].append(score) - for dataset_name, dataset in lang_data["sentence"].items(): - score, _ = evaluate_sentence_pairwise( + score, avg_acc = evaluate_sentence_pairwise( lang_code, dataset["data"], model, @@ -604,10 +603,14 @@ def compute_metrics(trainer): ) metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) + metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc + avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) if lang_code in ["zh", "ja", "my", "km"]: avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) else: avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) for name, values in avg_metrics.items(): if len(values) > 1: @@ -664,7 +667,7 @@ def compute_metrics(trainer): checkpoint_pattern = os.path.join(training_args.output_dir, "checkpoint-*") # Use glob.glob to find all directories matching the pattern - for checkpoint_dir in glob.glob(checkpoint_pattern): + for checkpoint_dir in glob(checkpoint_pattern): if os.path.isdir(checkpoint_dir): shutil.rmtree(checkpoint_dir) @@ -675,4 +678,10 @@ def _mp_fn(index): if __name__ == "__main__": + # try: main() + # except Exception: + # # extype, value, tb = sys.exc_info() + # # tb.print_exc() + # # pdb.post_mortem(tb) + # pass diff --git a/wtpsplit/train/utils.py b/wtpsplit/train/utils.py index cad7d938..1132e450 100644 --- a/wtpsplit/train/utils.py +++ b/wtpsplit/train/utils.py @@ -45,10 +45,11 @@ def forward( **kwargs, ): if position_ids is not None: - reduced_attention_mask = (input_ids != 0).to(torch.long) - else: # XXX: 1 is pad token id - reduced_attention_mask = (input_ids != 1).to(torch.long) + if "xlm" in self.config.model_type: + reduced_attention_mask = (input_ids != 1).to(torch.long) + else: + reduced_attention_mask = (input_ids != 0).to(torch.long) output = dict( self.backbone.forward( From 8a8bc176f68e2cf5d8c9d6d8d48e1e08fc780351 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 14 Feb 2024 20:33:52 +0000 Subject: [PATCH 057/262] fix non-pair eval --- wtpsplit/evaluation/__init__.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index e86d8ce7..6e2528b0 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -58,11 +58,7 @@ def evaluate_sentences(lang_code, sentences, predicted_sentences): # pairwise: ignore end-of-text label # only correct if we correctly predict the single newline in between the sentence pair # --> no false positives, no false negatives allowed! - "correct_pairwise": ( - (np.where(labels[:-1] == 1)[0] == predicted_end_indices[:-1]).all() - if len(predicted_end_indices) > 1 - else False - ), + "correct_pairwise": np.all(labels[:-1] == predictions[:-1]), } From f35ca5c359c4c4fa3cc156513ee9e13c3740192c Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 15 Feb 2024 10:47:32 +0000 Subject: [PATCH 058/262] tiny fix --- wtpsplit/evaluation/intrinsic.py | 11 +++++++---- wtpsplit/evaluation/time_intrinsic.py | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 067cb8a8..d44844b0 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -267,14 +267,17 @@ def main(args): "t": score_t, "punct": score_punct, } + + if score_u is not None: + u_scores.append((score_u, lang_code)) + if score_t is not None: + t_scores.append((score_t, lang_code)) + if score_punct is not None: + punct_scores.append((score_punct, lang_code)) # just for printing score_t = score_t or 0.0 score_punct = score_punct or 0.0 - - u_scores.append((score_u, lang_code)) - t_scores.append((score_t, lang_code)) - punct_scores.append((score_punct, lang_code)) print(f"{lang_code} {dataset_name} {score_u:.3f} {score_t:.3f} {score_punct:.3f}") # Compute statistics for each metric across all languages diff --git a/wtpsplit/evaluation/time_intrinsic.py b/wtpsplit/evaluation/time_intrinsic.py index 83f89021..0c8a0b89 100644 --- a/wtpsplit/evaluation/time_intrinsic.py +++ b/wtpsplit/evaluation/time_intrinsic.py @@ -39,6 +39,7 @@ def benchmark_strides(low_stride, high_stride, args): "max_n_train_sentences": args.max_n_train_sentences, } ) + print(results_data) return pd.DataFrame(results_data) @@ -73,5 +74,5 @@ def benchmark_strides(low_stride, high_stride, args): # Optionally save df_results to a file # to csv df_results.to_csv( - f"timing_results_{args.model_path.replace('/','__')}_batch{args.batch_size}_b{args.block_size}+s{args.stride}_u{args.threshold}_AVG.csv" + f"timing_results_{args.model_path.replace('/','__')}_batch{args.batch_size}_b{args.block_size}+s{args.stride}_n{args.max_n_train_sentences}_u{args.threshold}_AVG.csv" ) From e5ee9d26dad7df3eedc32f7105d46bf148a30c76 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 15 Feb 2024 10:56:53 +0000 Subject: [PATCH 059/262] update gitignore --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index 9602e709..d4816017 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,10 @@ final_outputs .cache* data_subset/** *.pth +*.zip +*.bin +*.html +*.csv +*.png +xlmr-*/** **/checkpoint-*/** \ No newline at end of file From dc68dca51af74fc430dbb22c4d6bb1bd6603ddde Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 18 Feb 2024 11:30:24 +0000 Subject: [PATCH 060/262] proper lookahead --- wtpsplit/configs.py | 2 ++ wtpsplit/models.py | 16 ++++++++-------- wtpsplit/train/train.py | 25 ++++++++++++++----------- wtpsplit/train/utils.py | 2 -- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/wtpsplit/configs.py b/wtpsplit/configs.py index f1d570a3..4eb5f25f 100644 --- a/wtpsplit/configs.py +++ b/wtpsplit/configs.py @@ -51,10 +51,12 @@ class SubwordXLMConfig(XLMRobertaConfig): def __init__( self, + lookahead=None, **kwargs, ): super().__init__(**kwargs) self.mixture_name = "xlm-token" + self.lookahead = lookahead AutoConfig.register("bert-char", BertCharConfig) diff --git a/wtpsplit/models.py b/wtpsplit/models.py index 118427cf..29582e08 100644 --- a/wtpsplit/models.py +++ b/wtpsplit/models.py @@ -840,7 +840,6 @@ def forward( output_hidden_states: Optional[bool] = None, hashed_ids: Optional[torch.Tensor] = None, return_dict: Optional[bool] = None, - lookahead: Optional[int] = None, ) -> Union[Tuple, TokenClassifierOutput]: r""" labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*): @@ -1006,7 +1005,6 @@ def forward( hashed_ids: Optional[torch.Tensor] = None, language_ids=None, return_dict: Optional[bool] = None, - lookahead: Optional[int] = None, ) -> Union[Tuple[torch.Tensor], TokenClassifierOutput]: r""" labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*): @@ -1024,7 +1022,6 @@ def forward( output_attentions=output_attentions, output_hidden_states=output_hidden_states, return_dict=return_dict, - lookahead=lookahead, ) sequence_output = outputs[0] @@ -1063,6 +1060,9 @@ def __init__(self, config, add_pooling_layer=True): self.encoder = XLMRobertaEncoder(config) self.pooler = XLMRobertaPooler(config) if add_pooling_layer else None + self.effective_lookahead = ( + config.lookahead // config.num_hidden_layers if config.lookahead is not None else None + ) # Initialize weights and apply final processing self.post_init() @@ -1083,7 +1083,6 @@ def forward( output_attentions: Optional[bool] = None, output_hidden_states: Optional[bool] = None, return_dict: Optional[bool] = None, - lookahead: Optional[int] = None, ) -> Union[Tuple[torch.Tensor], BaseModelOutputWithPoolingAndCrossAttentions]: r""" encoder_hidden_states (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`, *optional*): @@ -1144,7 +1143,9 @@ def forward( # We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length] # ourselves in which case we just need to make it broadcastable to all heads. - extended_attention_mask: torch.Tensor = self.get_extended_attention_mask(attention_mask, input_shape, lookahead) + extended_attention_mask: torch.Tensor = self.get_extended_attention_mask( + attention_mask, input_shape, self.effective_lookahead + ) # If a 2D or 3D attention mask is provided for the cross-attention # we need to make broadcastable to [batch_size, num_heads, seq_length, seq_length] @@ -1289,7 +1290,7 @@ def get_extended_attention_mask( print(summary(backbone, depth=4)) # some sample input - text = "A sentence.\n And" + text = "A sentence. Now we move on. And on and this is the last sentence. Now, we are starting to move on to the next sentence. This is the last sentence." tokenizer = AutoTokenizer.from_pretrained(model_str) tokens = tokenizer(text, return_tensors="pt", add_special_tokens=False, pad_to_multiple_of=512, padding=True) @@ -1301,5 +1302,4 @@ def get_extended_attention_mask( print(tokens) # forward pass - lookahead = 512 - print(backbone(**tokens, lookahead=lookahead)) + print(backbone(**tokens)) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index b9a24c40..55ea91dc 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -40,8 +40,6 @@ logger = logging.getLogger(__name__) -# TODO: double-check checkpointing and saving (also to txt) - # os.environ["PJRT_DEVICE"] = "None" @@ -186,7 +184,6 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): "language_ids": torch.tensor(all_language_ids, dtype=torch.long), "label_weights": torch.stack(all_label_weights, 0), "labels": torch.stack(all_labels, 0), - "lookahead": args.lookahead, } return out @@ -214,6 +211,7 @@ def main(): args.model_name_or_path, num_hidden_layers=args.num_hidden_layers, num_labels=num_labels, + lookahead=args.lookahead, ) backbone = SubwordXLMForTokenClassification(config) @@ -222,6 +220,7 @@ def main(): args.model_name_or_path, num_hidden_layers=args.num_hidden_layers, num_labels=num_labels, + lookahead=args.lookahead, ) backbone = SubwordXLMForTokenClassification.from_pretrained( args.model_name_or_path, @@ -236,6 +235,9 @@ def main(): # used later to filter out special tokens special_tokens_ids = set(tokenizer.all_special_ids) special_tokens_ids.discard(custom_token_id) + if args.lookahead: + assert args.lookahead % args.num_hidden_layers == 0 + else: tokenizer = None @@ -265,7 +267,8 @@ def main(): backbone = LACanineForTokenClassification.from_pretrained( args.model_name_or_path, ignore_mismatched_sizes=True, config=config ) - + + model = Model( backbone, loss_margin=args.loss_margin, @@ -637,13 +640,13 @@ def compute_metrics(trainer): training_args.adapter_lr_multiplier = args.adapter_lr_multiplier # give .map in multiprocessing enough of time to finish, to be safe - time.sleep(10) - if training_args.local_rank == 0: - # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() - # because that would remove the cache files of the other dataset! - cleanup_cache_files([train_dataset, valid_dataset]) - logger.warning("Cleaned up cache files.") - time.sleep(10) + # time.sleep(10) + # if training_args.local_rank == 0: + # # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() + # # because that would remove the cache files of the other dataset! + # cleanup_cache_files([train_dataset, valid_dataset]) + # logger.warning("Cleaned up cache files.") + # time.sleep(10) trainer = Trainer( model, diff --git a/wtpsplit/train/utils.py b/wtpsplit/train/utils.py index 1132e450..92dafd98 100644 --- a/wtpsplit/train/utils.py +++ b/wtpsplit/train/utils.py @@ -41,7 +41,6 @@ def forward( position_ids=None, labels=None, label_weights=None, - lookahead=None, **kwargs, ): if position_ids is not None: @@ -57,7 +56,6 @@ def forward( language_ids=language_ids, attention_mask=attention_mask, position_ids=position_ids, - lookahead=lookahead, **kwargs, ) ) From dc835ec3ca225535b87215361484d1f9d7d78a41 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 21 Feb 2024 14:30:39 +0000 Subject: [PATCH 061/262] first peft implementation --- adapters/CITATION.cff | 59 + adapters/LICENSE | 203 + adapters/MANIFEST.in | 1 + adapters/Makefile | 45 + adapters/README.md | 204 + adapters/conftest.py | 85 + adapters/docs/Makefile | 24 + adapters/docs/README.md | 19 + adapters/docs/_config.py | 14 + adapters/docs/_static/custom.css | 38 + adapters/docs/adapter_composition.md | 305 + adapters/docs/classes/adapter_config.rst | 95 + adapters/docs/classes/adapter_layer.rst | 12 + adapters/docs/classes/adapter_training.rst | 10 + adapters/docs/classes/adapter_utils.rst | 8 + .../docs/classes/model_adapters_config.rst | 7 + adapters/docs/classes/model_mixins.rst | 43 + adapters/docs/classes/models/albert.rst | 22 + adapters/docs/classes/models/auto.rst | 11 + adapters/docs/classes/models/bart.rst | 25 + adapters/docs/classes/models/beit.rst | 27 + .../docs/classes/models/bert-generation.rst | 40 + adapters/docs/classes/models/bert.rst | 14 + adapters/docs/classes/models/clip.rst | 50 + adapters/docs/classes/models/deberta.rst | 50 + adapters/docs/classes/models/deberta_v2.rst | 71 + adapters/docs/classes/models/distilbert.rst | 17 + adapters/docs/classes/models/electra.rst | 32 + .../docs/classes/models/encoderdecoder.rst | 48 + adapters/docs/classes/models/gpt2.rst | 23 + adapters/docs/classes/models/gptj.rst | 24 + adapters/docs/classes/models/llama.rst | 21 + adapters/docs/classes/models/mbart.rst | 19 + adapters/docs/classes/models/mt5.rst | 24 + adapters/docs/classes/models/roberta.rst | 14 + adapters/docs/classes/models/t5.rst | 25 + adapters/docs/classes/models/vit.rst | 27 + adapters/docs/classes/models/xlmroberta.rst | 14 + adapters/docs/classes/models/xmod.rst | 23 + adapters/docs/conf.py | 108 + adapters/docs/contributing.md | 78 + .../contributing/adding_adapter_methods.md | 101 + .../adding_adapters_to_a_model.md | 89 + adapters/docs/embeddings.md | 47 + adapters/docs/extending.md | 34 + adapters/docs/hub_contributing.md | 95 + adapters/docs/huggingface_hub.md | 72 + adapters/docs/img/hfhub.svg | 66 + adapters/docs/index.rst | 168 + adapters/docs/installation.md | 40 + adapters/docs/loading.md | 134 + adapters/docs/make.bat | 35 + adapters/docs/method_combinations.md | 124 + adapters/docs/methods.md | 297 + adapters/docs/model_overview.md | 42 + adapters/docs/overview.md | 99 + adapters/docs/prediction_heads.md | 152 + adapters/docs/quickstart.md | 123 + adapters/docs/scripts/post_build.py | 16 + adapters/docs/training.md | 217 + adapters/docs/transitioning.md | 77 + adapters/examples/pytorch/README.md | 432 + .../examples/pytorch/_tests_requirements.txt | 25 + .../pytorch/adapterdrop/drop_at_inference.py | 28 + .../examples/pytorch/adapterfusion/README.md | 3 + .../pytorch/adapterfusion/run_fusion_glue.py | 282 + adapters/examples/pytorch/conftest.py | 45 + .../pytorch/dependency-parsing/README.md | 48 + .../dependency-parsing/preprocessing.py | 100 + .../dependency-parsing/requirements.txt | 3 + .../pytorch/dependency-parsing/run_udp.py | 302 + .../pytorch/dependency-parsing/utils_udp.py | 376 + .../pytorch/language-modeling/README.md | 138 + .../language-modeling/requirements.txt | 7 + .../pytorch/language-modeling/run_clm.py | 608 + .../pytorch/language-modeling/run_mlm.py | 623 + .../pytorch/multiple-choice/README.md | 48 + .../pytorch/multiple-choice/requirements.txt | 5 + .../pytorch/multiple-choice/run_swag.py | 486 + .../pytorch/question-answering/README.md | 98 + .../question-answering/requirements.txt | 4 + .../pytorch/question-answering/run_qa.py | 687 ++ .../question-answering/run_seq2seq_qa.py | 733 ++ .../pytorch/question-answering/trainer_qa.py | 141 + .../question-answering/trainer_seq2seq_qa.py | 167 + .../pytorch/question-answering/utils_qa.py | 439 + .../examples/pytorch/summarization/README.md | 148 + .../pytorch/summarization/requirements.txt | 9 + .../summarization/run_summarization.py | 759 ++ .../examples/pytorch/test_adapter_examples.py | 395 + .../examples/pytorch/test_xla_examples.py | 94 + .../pytorch/text-classification/README.md | 235 + .../text-classification/requirements.txt | 8 + .../pytorch/text-classification/run_glue.py | 635 + .../pytorch/text-generation/README.md | 46 + .../pytorch/text-generation/requirements.txt | 3 + .../pytorch/text-generation/run_generation.py | 301 + .../pytorch/token-classification/README.md | 68 + .../token-classification/requirements.txt | 5 + .../pytorch/token-classification/run.sh | 23 + .../pytorch/token-classification/run_ner.py | 636 + .../examples/pytorch/translation/README.md | 167 + .../pytorch/translation/requirements.txt | 8 + .../pytorch/translation/run_translation.py | 684 ++ adapters/examples/pytorch/xla_spawn.py | 83 + adapters/pyproject.toml | 3 + adapters/setup.cfg | 54 + adapters/setup.py | 175 + adapters/src/adapters/__init__.py | 237 + adapters/src/adapters/composition.py | 260 + .../src/adapters/configuration/__init__.py | 4 + .../adapters/configuration/adapter_config.py | 655 + .../configuration/adapter_fusion_config.py | 85 + .../configuration/model_adapters_config.py | 241 + adapters/src/adapters/context.py | 151 + adapters/src/adapters/head_utils.py | 747 ++ adapters/src/adapters/heads/__init__.py | 5 + adapters/src/adapters/heads/base.py | 513 + .../src/adapters/heads/dependency_parsing.py | 183 + .../src/adapters/heads/language_modeling.py | 216 + adapters/src/adapters/heads/model_mixin.py | 727 ++ adapters/src/adapters/hub_mixin.py | 233 + adapters/src/adapters/loading.py | 939 ++ adapters/src/adapters/methods/__init__.py | 0 .../adapters/methods/adapter_layer_base.py | 482 + adapters/src/adapters/methods/bottleneck.py | 372 + adapters/src/adapters/methods/lora.py | 639 + adapters/src/adapters/methods/modeling.py | 803 ++ .../src/adapters/methods/prefix_tuning.py | 543 + .../src/adapters/methods/prompt_tuning.py | 228 + adapters/src/adapters/model_mixin.py | 1552 +++ adapters/src/adapters/models/__init__.py | 87 + .../src/adapters/models/albert/__init__.py | 39 + .../adapters/models/albert/adapter_model.py | 106 + .../adapters/models/albert/mixin_albert.py | 68 + .../adapters/models/albert/modeling_albert.py | 124 + adapters/src/adapters/models/auto/__init__.py | 42 + .../src/adapters/models/auto/adapter_model.py | 43 + .../src/adapters/models/auto/auto_factory.py | 11 + adapters/src/adapters/models/bart/__init__.py | 39 + .../src/adapters/models/bart/adapter_model.py | 162 + .../src/adapters/models/bart/mixin_bart.py | 109 + .../src/adapters/models/bart/modeling_bart.py | 533 + adapters/src/adapters/models/beit/__init__.py | 39 + .../src/adapters/models/beit/adapter_model.py | 89 + .../src/adapters/models/beit/mixin_beit.py | 61 + .../src/adapters/models/beit/modeling_beit.py | 123 + adapters/src/adapters/models/bert/__init__.py | 39 + .../src/adapters/models/bert/adapter_model.py | 125 + .../src/adapters/models/bert/mixin_bert.py | 92 + .../src/adapters/models/bert/modeling_bert.py | 158 + .../models/bert_generation/__init__.py | 51 + .../models/bert_generation/adapter_model.py | 125 + .../modeling_bert_generation.py | 162 + adapters/src/adapters/models/clip/__init__.py | 39 + .../src/adapters/models/clip/adapter_model.py | 77 + .../src/adapters/models/clip/mixin_clip.py | 115 + .../src/adapters/models/clip/modeling_clip.py | 157 + .../src/adapters/models/deberta/__init__.py | 39 + .../adapters/models/deberta/adapter_model.py | 97 + .../adapters/models/deberta/mixin_deberta.py | 14 + .../models/deberta/modeling_deberta.py | 165 + .../adapters/models/deberta_v2/__init__.py | 39 + .../models/deberta_v2/adapter_model.py | 99 + .../models/deberta_v2/mixin_deberta_v2.py | 16 + .../models/deberta_v2/modeling_deberta_v2.py | 156 + .../adapters/models/distilbert/__init__.py | 39 + .../models/distilbert/adapter_model.py | 127 + .../models/distilbert/mixin_distilbert.py | 53 + .../models/distilbert/modeling_distilbert.py | 154 + .../src/adapters/models/electra/__init__.py | 39 + .../adapters/models/electra/adapter_model.py | 120 + .../models/electra/modeling_electra.py | 139 + .../encoder_decoder/mixin_encoder_decoder.py | 69 + .../modeling_encoder_decoder.py | 24 + adapters/src/adapters/models/gpt2/__init__.py | 39 + .../src/adapters/models/gpt2/adapter_model.py | 153 + .../src/adapters/models/gpt2/mixin_gpt2.py | 72 + .../src/adapters/models/gpt2/modeling_gpt2.py | 147 + adapters/src/adapters/models/gptj/__init__.py | 39 + .../src/adapters/models/gptj/adapter_model.py | 149 + .../src/adapters/models/gptj/mixin_gptj.py | 56 + .../src/adapters/models/gptj/modeling_gptj.py | 149 + .../src/adapters/models/llama/__init__.py | 39 + .../adapters/models/llama/adapter_model.py | 151 + .../src/adapters/models/llama/mixin_llama.py | 46 + .../adapters/models/llama/modeling_llama.py | 425 + .../src/adapters/models/mbart/__init__.py | 39 + .../adapters/models/mbart/adapter_model.py | 171 + .../adapters/models/mbart/modeling_mbart.py | 308 + adapters/src/adapters/models/mt5/__init__.py | 39 + .../src/adapters/models/mt5/adapter_model.py | 209 + .../src/adapters/models/mt5/modeling_mt5.py | 484 + .../src/adapters/models/roberta/__init__.py | 39 + .../adapters/models/roberta/adapter_model.py | 124 + .../models/roberta/modeling_roberta.py | 160 + adapters/src/adapters/models/t5/__init__.py | 39 + .../src/adapters/models/t5/adapter_model.py | 202 + adapters/src/adapters/models/t5/mixin_t5.py | 133 + .../src/adapters/models/t5/modeling_t5.py | 484 + adapters/src/adapters/models/vit/__init__.py | 39 + .../src/adapters/models/vit/adapter_model.py | 88 + adapters/src/adapters/models/vit/mixin_vit.py | 60 + .../src/adapters/models/vit/modeling_vit.py | 110 + .../adapters/models/xlm_roberta/__init__.py | 39 + .../models/xlm_roberta/adapter_model.py | 127 + .../xlm_roberta/modeling_xlm_roberta.py | 164 + adapters/src/adapters/models/xmod/__init__.py | 39 + .../src/adapters/models/xmod/adapter_model.py | 133 + .../src/adapters/models/xmod/mixin_xmod.py | 71 + .../src/adapters/models/xmod/modeling_xmod.py | 161 + adapters/src/adapters/trainer.py | 252 + adapters/src/adapters/training.py | 100 + adapters/src/adapters/utils.py | 864 ++ adapters/src/adapters/wrappers/__init__.py | 38 + .../src/adapters/wrappers/configuration.py | 110 + adapters/src/adapters/wrappers/model.py | 130 + adapters/tests/__init__.py | 0 .../composition/test_adapter_composition.py | 250 + adapters/tests/composition/test_parallel.py | 317 + .../extended/test_adapter_trainer_ext.py | 353 + adapters/tests/fixtures/SiBERT/config.json | 45 + .../fixtures/SiBERT/special_tokens_map.json | 1 + .../fixtures/SiBERT/tokenizer_config.json | 1 + adapters/tests/fixtures/SiBERT/vocab.txt | 10000 ++++++++++++++++ adapters/tests/fixtures/hub-index.sample.json | 19 + adapters/tests/fixtures/sample_text.txt | 33 + adapters/tests/fixtures/samples/MRPC/dev.tsv | 7 + .../tests/fixtures/samples/MRPC/train.tsv | 7 + .../tests/fixtures/samples/SQUAD/sample.json | 201 + .../tests/fixtures/samples/cifar10/cifar10.py | 62 + .../fixtures/samples/cifar10/data_batch_1 | Bin 0 -> 6380 bytes .../fixtures/samples/cifar10/data_batch_2 | Bin 0 -> 6380 bytes .../fixtures/samples/cifar10/data_batch_3 | Bin 0 -> 6380 bytes .../fixtures/samples/cifar10/data_batch_4 | Bin 0 -> 6380 bytes .../fixtures/samples/cifar10/data_batch_5 | Bin 0 -> 6380 bytes .../tests/fixtures/samples/cifar10/test_batch | Bin 0 -> 6380 bytes .../tests/fixtures/samples/conll/sample.json | 10 + .../tests/fixtures/samples/swag/sample.json | 10 + .../tests/fixtures/samples/wmt16/sample.json | 10 + .../tests/fixtures/samples/xsum/sample.json | 10 + .../tests_samples/COCO/coco_annotations.txt | 1 + .../COCO/coco_panoptic_annotations.txt | 1 + adapters/tests/methods/__init__.py | 26 + adapters/tests/methods/base.py | 364 + adapters/tests/methods/test_adapter_common.py | 474 + adapters/tests/methods/test_compacter.py | 75 + adapters/tests/methods/test_config_union.py | 53 + adapters/tests/methods/test_ia3.py | 47 + adapters/tests/methods/test_lora.py | 47 + adapters/tests/methods/test_prefix_tuning.py | 98 + adapters/tests/methods/test_prompt_tuning.py | 36 + adapters/tests/methods/test_unipelt.py | 64 + adapters/tests/models/__init__.py | 0 adapters/tests/models/base.py | 16 + adapters/tests/models/test_albert.py | 12 + adapters/tests/models/test_bart.py | 12 + adapters/tests/models/test_beit.py | 12 + adapters/tests/models/test_bert.py | 12 + adapters/tests/models/test_bert_generation.py | 12 + adapters/tests/models/test_clip.py | 39 + adapters/tests/models/test_deberta.py | 12 + adapters/tests/models/test_debertaV2.py | 12 + adapters/tests/models/test_distilbert.py | 12 + adapters/tests/models/test_electra.py | 12 + adapters/tests/models/test_encoder_decoder.py | 2 + adapters/tests/models/test_gpt2.py | 12 + adapters/tests/models/test_gptj.py | 12 + adapters/tests/models/test_llama.py | 12 + adapters/tests/models/test_mbart.py | 12 + adapters/tests/models/test_mt5.py | 12 + adapters/tests/models/test_roberta.py | 12 + adapters/tests/models/test_t5.py | 12 + adapters/tests/models/test_vit.py | 12 + adapters/tests/models/test_xlm_roberta.py | 2 + adapters/tests/models/test_xmod.py | 12 + adapters/tests/test_adapter.py | 135 + .../test_adapter_backward_compability.py | 48 + adapters/tests/test_adapter_config.py | 127 + adapters/tests/test_adapter_conversion.py | 236 + adapters/tests/test_adapter_custom_head.py | 91 + adapters/tests/test_adapter_embeddings.py | 168 + adapters/tests/test_adapter_fusion_common.py | 216 + adapters/tests/test_adapter_fusion_config.py | 32 + adapters/tests/test_adapter_heads.py | 457 + adapters/tests/test_adapter_hub.py | 166 + adapters/tests/test_adapter_save_id2label.py | 110 + adapters/tests/test_adapter_trainer.py | 541 + adapters/tests/test_albert.py | 69 + adapters/tests/test_bart.py | 66 + adapters/tests/test_beit.py | 59 + adapters/tests/test_bert.py | 65 + adapters/tests/test_bert_generation.py | 108 + adapters/tests/test_clip.py | 221 + adapters/tests/test_deberta.py | 68 + adapters/tests/test_debertaV2.py | 68 + adapters/tests/test_distilbert.py | 65 + adapters/tests/test_electra.py | 66 + adapters/tests/test_encoder_decoder.py | 90 + adapters/tests/test_gpt2.py | 64 + adapters/tests/test_gptj.py | 66 + adapters/tests/test_llama.py | 64 + adapters/tests/test_mbart.py | 60 + adapters/tests/test_mt5.py | 66 + adapters/tests/test_roberta.py | 63 + adapters/tests/test_t5.py | 66 + adapters/tests/test_vit.py | 62 + adapters/tests/test_xlm_roberta.py | 55 + adapters/tests/test_xmod.py | 63 + adapters/utils/back_comp/README.md | 26 + adapters/utils/back_comp/Utils.py | 498 + adapters/utils/back_comp/compare.sh | 31 + adapters/utils/back_comp/compare_outputs.py | 43 + adapters/utils/back_comp/create_outputs.py | 64 + adapters/utils/check_inits.py | 13 + adapters/utils/convert_xmod_checkpoint.py | 85 + adapters/utils/custom_init_isort.py | 21 + adapters/utils/sort_auto_mappings.py | 21 + configs/peft/adapter.json | 36 + wtpsplit/evaluation/intrinsic.py | 29 +- wtpsplit/models.py | 2 +- wtpsplit/train/adaptertrainer.py | 556 + wtpsplit/train/evaluate.py | 31 +- wtpsplit/train/train_adapter.py | 526 + wtpsplit/utils.py | 25 +- 325 files changed, 53604 insertions(+), 15 deletions(-) create mode 100644 adapters/CITATION.cff create mode 100644 adapters/LICENSE create mode 100644 adapters/MANIFEST.in create mode 100644 adapters/Makefile create mode 100644 adapters/README.md create mode 100644 adapters/conftest.py create mode 100644 adapters/docs/Makefile create mode 100644 adapters/docs/README.md create mode 100644 adapters/docs/_config.py create mode 100644 adapters/docs/_static/custom.css create mode 100644 adapters/docs/adapter_composition.md create mode 100644 adapters/docs/classes/adapter_config.rst create mode 100644 adapters/docs/classes/adapter_layer.rst create mode 100644 adapters/docs/classes/adapter_training.rst create mode 100644 adapters/docs/classes/adapter_utils.rst create mode 100644 adapters/docs/classes/model_adapters_config.rst create mode 100644 adapters/docs/classes/model_mixins.rst create mode 100644 adapters/docs/classes/models/albert.rst create mode 100644 adapters/docs/classes/models/auto.rst create mode 100644 adapters/docs/classes/models/bart.rst create mode 100644 adapters/docs/classes/models/beit.rst create mode 100644 adapters/docs/classes/models/bert-generation.rst create mode 100644 adapters/docs/classes/models/bert.rst create mode 100644 adapters/docs/classes/models/clip.rst create mode 100644 adapters/docs/classes/models/deberta.rst create mode 100644 adapters/docs/classes/models/deberta_v2.rst create mode 100644 adapters/docs/classes/models/distilbert.rst create mode 100644 adapters/docs/classes/models/electra.rst create mode 100644 adapters/docs/classes/models/encoderdecoder.rst create mode 100644 adapters/docs/classes/models/gpt2.rst create mode 100644 adapters/docs/classes/models/gptj.rst create mode 100644 adapters/docs/classes/models/llama.rst create mode 100644 adapters/docs/classes/models/mbart.rst create mode 100644 adapters/docs/classes/models/mt5.rst create mode 100644 adapters/docs/classes/models/roberta.rst create mode 100644 adapters/docs/classes/models/t5.rst create mode 100644 adapters/docs/classes/models/vit.rst create mode 100644 adapters/docs/classes/models/xlmroberta.rst create mode 100644 adapters/docs/classes/models/xmod.rst create mode 100644 adapters/docs/conf.py create mode 100644 adapters/docs/contributing.md create mode 100644 adapters/docs/contributing/adding_adapter_methods.md create mode 100644 adapters/docs/contributing/adding_adapters_to_a_model.md create mode 100644 adapters/docs/embeddings.md create mode 100644 adapters/docs/extending.md create mode 100644 adapters/docs/hub_contributing.md create mode 100644 adapters/docs/huggingface_hub.md create mode 100644 adapters/docs/img/hfhub.svg create mode 100644 adapters/docs/index.rst create mode 100644 adapters/docs/installation.md create mode 100644 adapters/docs/loading.md create mode 100644 adapters/docs/make.bat create mode 100644 adapters/docs/method_combinations.md create mode 100644 adapters/docs/methods.md create mode 100644 adapters/docs/model_overview.md create mode 100644 adapters/docs/overview.md create mode 100644 adapters/docs/prediction_heads.md create mode 100644 adapters/docs/quickstart.md create mode 100644 adapters/docs/scripts/post_build.py create mode 100644 adapters/docs/training.md create mode 100644 adapters/docs/transitioning.md create mode 100644 adapters/examples/pytorch/README.md create mode 100644 adapters/examples/pytorch/_tests_requirements.txt create mode 100644 adapters/examples/pytorch/adapterdrop/drop_at_inference.py create mode 100644 adapters/examples/pytorch/adapterfusion/README.md create mode 100644 adapters/examples/pytorch/adapterfusion/run_fusion_glue.py create mode 100644 adapters/examples/pytorch/conftest.py create mode 100644 adapters/examples/pytorch/dependency-parsing/README.md create mode 100644 adapters/examples/pytorch/dependency-parsing/preprocessing.py create mode 100644 adapters/examples/pytorch/dependency-parsing/requirements.txt create mode 100644 adapters/examples/pytorch/dependency-parsing/run_udp.py create mode 100644 adapters/examples/pytorch/dependency-parsing/utils_udp.py create mode 100644 adapters/examples/pytorch/language-modeling/README.md create mode 100644 adapters/examples/pytorch/language-modeling/requirements.txt create mode 100644 adapters/examples/pytorch/language-modeling/run_clm.py create mode 100644 adapters/examples/pytorch/language-modeling/run_mlm.py create mode 100644 adapters/examples/pytorch/multiple-choice/README.md create mode 100644 adapters/examples/pytorch/multiple-choice/requirements.txt create mode 100644 adapters/examples/pytorch/multiple-choice/run_swag.py create mode 100644 adapters/examples/pytorch/question-answering/README.md create mode 100644 adapters/examples/pytorch/question-answering/requirements.txt create mode 100644 adapters/examples/pytorch/question-answering/run_qa.py create mode 100644 adapters/examples/pytorch/question-answering/run_seq2seq_qa.py create mode 100644 adapters/examples/pytorch/question-answering/trainer_qa.py create mode 100644 adapters/examples/pytorch/question-answering/trainer_seq2seq_qa.py create mode 100644 adapters/examples/pytorch/question-answering/utils_qa.py create mode 100644 adapters/examples/pytorch/summarization/README.md create mode 100644 adapters/examples/pytorch/summarization/requirements.txt create mode 100644 adapters/examples/pytorch/summarization/run_summarization.py create mode 100644 adapters/examples/pytorch/test_adapter_examples.py create mode 100644 adapters/examples/pytorch/test_xla_examples.py create mode 100644 adapters/examples/pytorch/text-classification/README.md create mode 100644 adapters/examples/pytorch/text-classification/requirements.txt create mode 100644 adapters/examples/pytorch/text-classification/run_glue.py create mode 100644 adapters/examples/pytorch/text-generation/README.md create mode 100644 adapters/examples/pytorch/text-generation/requirements.txt create mode 100644 adapters/examples/pytorch/text-generation/run_generation.py create mode 100644 adapters/examples/pytorch/token-classification/README.md create mode 100644 adapters/examples/pytorch/token-classification/requirements.txt create mode 100644 adapters/examples/pytorch/token-classification/run.sh create mode 100644 adapters/examples/pytorch/token-classification/run_ner.py create mode 100644 adapters/examples/pytorch/translation/README.md create mode 100644 adapters/examples/pytorch/translation/requirements.txt create mode 100644 adapters/examples/pytorch/translation/run_translation.py create mode 100644 adapters/examples/pytorch/xla_spawn.py create mode 100644 adapters/pyproject.toml create mode 100644 adapters/setup.cfg create mode 100644 adapters/setup.py create mode 100644 adapters/src/adapters/__init__.py create mode 100644 adapters/src/adapters/composition.py create mode 100644 adapters/src/adapters/configuration/__init__.py create mode 100644 adapters/src/adapters/configuration/adapter_config.py create mode 100644 adapters/src/adapters/configuration/adapter_fusion_config.py create mode 100644 adapters/src/adapters/configuration/model_adapters_config.py create mode 100644 adapters/src/adapters/context.py create mode 100644 adapters/src/adapters/head_utils.py create mode 100644 adapters/src/adapters/heads/__init__.py create mode 100644 adapters/src/adapters/heads/base.py create mode 100644 adapters/src/adapters/heads/dependency_parsing.py create mode 100644 adapters/src/adapters/heads/language_modeling.py create mode 100644 adapters/src/adapters/heads/model_mixin.py create mode 100644 adapters/src/adapters/hub_mixin.py create mode 100644 adapters/src/adapters/loading.py create mode 100644 adapters/src/adapters/methods/__init__.py create mode 100644 adapters/src/adapters/methods/adapter_layer_base.py create mode 100644 adapters/src/adapters/methods/bottleneck.py create mode 100644 adapters/src/adapters/methods/lora.py create mode 100644 adapters/src/adapters/methods/modeling.py create mode 100644 adapters/src/adapters/methods/prefix_tuning.py create mode 100644 adapters/src/adapters/methods/prompt_tuning.py create mode 100644 adapters/src/adapters/model_mixin.py create mode 100644 adapters/src/adapters/models/__init__.py create mode 100644 adapters/src/adapters/models/albert/__init__.py create mode 100644 adapters/src/adapters/models/albert/adapter_model.py create mode 100644 adapters/src/adapters/models/albert/mixin_albert.py create mode 100644 adapters/src/adapters/models/albert/modeling_albert.py create mode 100644 adapters/src/adapters/models/auto/__init__.py create mode 100644 adapters/src/adapters/models/auto/adapter_model.py create mode 100644 adapters/src/adapters/models/auto/auto_factory.py create mode 100644 adapters/src/adapters/models/bart/__init__.py create mode 100644 adapters/src/adapters/models/bart/adapter_model.py create mode 100644 adapters/src/adapters/models/bart/mixin_bart.py create mode 100644 adapters/src/adapters/models/bart/modeling_bart.py create mode 100644 adapters/src/adapters/models/beit/__init__.py create mode 100644 adapters/src/adapters/models/beit/adapter_model.py create mode 100644 adapters/src/adapters/models/beit/mixin_beit.py create mode 100644 adapters/src/adapters/models/beit/modeling_beit.py create mode 100644 adapters/src/adapters/models/bert/__init__.py create mode 100644 adapters/src/adapters/models/bert/adapter_model.py create mode 100644 adapters/src/adapters/models/bert/mixin_bert.py create mode 100644 adapters/src/adapters/models/bert/modeling_bert.py create mode 100644 adapters/src/adapters/models/bert_generation/__init__.py create mode 100644 adapters/src/adapters/models/bert_generation/adapter_model.py create mode 100644 adapters/src/adapters/models/bert_generation/modeling_bert_generation.py create mode 100644 adapters/src/adapters/models/clip/__init__.py create mode 100644 adapters/src/adapters/models/clip/adapter_model.py create mode 100644 adapters/src/adapters/models/clip/mixin_clip.py create mode 100644 adapters/src/adapters/models/clip/modeling_clip.py create mode 100644 adapters/src/adapters/models/deberta/__init__.py create mode 100644 adapters/src/adapters/models/deberta/adapter_model.py create mode 100644 adapters/src/adapters/models/deberta/mixin_deberta.py create mode 100644 adapters/src/adapters/models/deberta/modeling_deberta.py create mode 100644 adapters/src/adapters/models/deberta_v2/__init__.py create mode 100644 adapters/src/adapters/models/deberta_v2/adapter_model.py create mode 100644 adapters/src/adapters/models/deberta_v2/mixin_deberta_v2.py create mode 100644 adapters/src/adapters/models/deberta_v2/modeling_deberta_v2.py create mode 100644 adapters/src/adapters/models/distilbert/__init__.py create mode 100644 adapters/src/adapters/models/distilbert/adapter_model.py create mode 100644 adapters/src/adapters/models/distilbert/mixin_distilbert.py create mode 100644 adapters/src/adapters/models/distilbert/modeling_distilbert.py create mode 100644 adapters/src/adapters/models/electra/__init__.py create mode 100644 adapters/src/adapters/models/electra/adapter_model.py create mode 100644 adapters/src/adapters/models/electra/modeling_electra.py create mode 100644 adapters/src/adapters/models/encoder_decoder/mixin_encoder_decoder.py create mode 100644 adapters/src/adapters/models/encoder_decoder/modeling_encoder_decoder.py create mode 100644 adapters/src/adapters/models/gpt2/__init__.py create mode 100644 adapters/src/adapters/models/gpt2/adapter_model.py create mode 100644 adapters/src/adapters/models/gpt2/mixin_gpt2.py create mode 100644 adapters/src/adapters/models/gpt2/modeling_gpt2.py create mode 100644 adapters/src/adapters/models/gptj/__init__.py create mode 100644 adapters/src/adapters/models/gptj/adapter_model.py create mode 100644 adapters/src/adapters/models/gptj/mixin_gptj.py create mode 100644 adapters/src/adapters/models/gptj/modeling_gptj.py create mode 100644 adapters/src/adapters/models/llama/__init__.py create mode 100644 adapters/src/adapters/models/llama/adapter_model.py create mode 100644 adapters/src/adapters/models/llama/mixin_llama.py create mode 100644 adapters/src/adapters/models/llama/modeling_llama.py create mode 100644 adapters/src/adapters/models/mbart/__init__.py create mode 100644 adapters/src/adapters/models/mbart/adapter_model.py create mode 100644 adapters/src/adapters/models/mbart/modeling_mbart.py create mode 100644 adapters/src/adapters/models/mt5/__init__.py create mode 100644 adapters/src/adapters/models/mt5/adapter_model.py create mode 100644 adapters/src/adapters/models/mt5/modeling_mt5.py create mode 100644 adapters/src/adapters/models/roberta/__init__.py create mode 100644 adapters/src/adapters/models/roberta/adapter_model.py create mode 100644 adapters/src/adapters/models/roberta/modeling_roberta.py create mode 100644 adapters/src/adapters/models/t5/__init__.py create mode 100644 adapters/src/adapters/models/t5/adapter_model.py create mode 100644 adapters/src/adapters/models/t5/mixin_t5.py create mode 100644 adapters/src/adapters/models/t5/modeling_t5.py create mode 100644 adapters/src/adapters/models/vit/__init__.py create mode 100644 adapters/src/adapters/models/vit/adapter_model.py create mode 100644 adapters/src/adapters/models/vit/mixin_vit.py create mode 100644 adapters/src/adapters/models/vit/modeling_vit.py create mode 100644 adapters/src/adapters/models/xlm_roberta/__init__.py create mode 100644 adapters/src/adapters/models/xlm_roberta/adapter_model.py create mode 100644 adapters/src/adapters/models/xlm_roberta/modeling_xlm_roberta.py create mode 100644 adapters/src/adapters/models/xmod/__init__.py create mode 100644 adapters/src/adapters/models/xmod/adapter_model.py create mode 100644 adapters/src/adapters/models/xmod/mixin_xmod.py create mode 100644 adapters/src/adapters/models/xmod/modeling_xmod.py create mode 100644 adapters/src/adapters/trainer.py create mode 100644 adapters/src/adapters/training.py create mode 100644 adapters/src/adapters/utils.py create mode 100644 adapters/src/adapters/wrappers/__init__.py create mode 100644 adapters/src/adapters/wrappers/configuration.py create mode 100644 adapters/src/adapters/wrappers/model.py create mode 100644 adapters/tests/__init__.py create mode 100644 adapters/tests/composition/test_adapter_composition.py create mode 100644 adapters/tests/composition/test_parallel.py create mode 100644 adapters/tests/extended/test_adapter_trainer_ext.py create mode 100644 adapters/tests/fixtures/SiBERT/config.json create mode 100644 adapters/tests/fixtures/SiBERT/special_tokens_map.json create mode 100644 adapters/tests/fixtures/SiBERT/tokenizer_config.json create mode 100644 adapters/tests/fixtures/SiBERT/vocab.txt create mode 100644 adapters/tests/fixtures/hub-index.sample.json create mode 100644 adapters/tests/fixtures/sample_text.txt create mode 100644 adapters/tests/fixtures/samples/MRPC/dev.tsv create mode 100644 adapters/tests/fixtures/samples/MRPC/train.tsv create mode 100644 adapters/tests/fixtures/samples/SQUAD/sample.json create mode 100644 adapters/tests/fixtures/samples/cifar10/cifar10.py create mode 100644 adapters/tests/fixtures/samples/cifar10/data_batch_1 create mode 100644 adapters/tests/fixtures/samples/cifar10/data_batch_2 create mode 100644 adapters/tests/fixtures/samples/cifar10/data_batch_3 create mode 100644 adapters/tests/fixtures/samples/cifar10/data_batch_4 create mode 100644 adapters/tests/fixtures/samples/cifar10/data_batch_5 create mode 100644 adapters/tests/fixtures/samples/cifar10/test_batch create mode 100644 adapters/tests/fixtures/samples/conll/sample.json create mode 100644 adapters/tests/fixtures/samples/swag/sample.json create mode 100644 adapters/tests/fixtures/samples/wmt16/sample.json create mode 100644 adapters/tests/fixtures/samples/xsum/sample.json create mode 100644 adapters/tests/fixtures/tests_samples/COCO/coco_annotations.txt create mode 100644 adapters/tests/fixtures/tests_samples/COCO/coco_panoptic_annotations.txt create mode 100644 adapters/tests/methods/__init__.py create mode 100644 adapters/tests/methods/base.py create mode 100644 adapters/tests/methods/test_adapter_common.py create mode 100644 adapters/tests/methods/test_compacter.py create mode 100644 adapters/tests/methods/test_config_union.py create mode 100644 adapters/tests/methods/test_ia3.py create mode 100644 adapters/tests/methods/test_lora.py create mode 100644 adapters/tests/methods/test_prefix_tuning.py create mode 100644 adapters/tests/methods/test_prompt_tuning.py create mode 100644 adapters/tests/methods/test_unipelt.py create mode 100644 adapters/tests/models/__init__.py create mode 100644 adapters/tests/models/base.py create mode 100644 adapters/tests/models/test_albert.py create mode 100644 adapters/tests/models/test_bart.py create mode 100644 adapters/tests/models/test_beit.py create mode 100644 adapters/tests/models/test_bert.py create mode 100644 adapters/tests/models/test_bert_generation.py create mode 100644 adapters/tests/models/test_clip.py create mode 100644 adapters/tests/models/test_deberta.py create mode 100644 adapters/tests/models/test_debertaV2.py create mode 100644 adapters/tests/models/test_distilbert.py create mode 100644 adapters/tests/models/test_electra.py create mode 100644 adapters/tests/models/test_encoder_decoder.py create mode 100644 adapters/tests/models/test_gpt2.py create mode 100644 adapters/tests/models/test_gptj.py create mode 100644 adapters/tests/models/test_llama.py create mode 100644 adapters/tests/models/test_mbart.py create mode 100644 adapters/tests/models/test_mt5.py create mode 100644 adapters/tests/models/test_roberta.py create mode 100644 adapters/tests/models/test_t5.py create mode 100644 adapters/tests/models/test_vit.py create mode 100644 adapters/tests/models/test_xlm_roberta.py create mode 100644 adapters/tests/models/test_xmod.py create mode 100644 adapters/tests/test_adapter.py create mode 100644 adapters/tests/test_adapter_backward_compability.py create mode 100644 adapters/tests/test_adapter_config.py create mode 100644 adapters/tests/test_adapter_conversion.py create mode 100644 adapters/tests/test_adapter_custom_head.py create mode 100644 adapters/tests/test_adapter_embeddings.py create mode 100644 adapters/tests/test_adapter_fusion_common.py create mode 100644 adapters/tests/test_adapter_fusion_config.py create mode 100644 adapters/tests/test_adapter_heads.py create mode 100644 adapters/tests/test_adapter_hub.py create mode 100644 adapters/tests/test_adapter_save_id2label.py create mode 100644 adapters/tests/test_adapter_trainer.py create mode 100644 adapters/tests/test_albert.py create mode 100644 adapters/tests/test_bart.py create mode 100644 adapters/tests/test_beit.py create mode 100644 adapters/tests/test_bert.py create mode 100644 adapters/tests/test_bert_generation.py create mode 100644 adapters/tests/test_clip.py create mode 100644 adapters/tests/test_deberta.py create mode 100644 adapters/tests/test_debertaV2.py create mode 100644 adapters/tests/test_distilbert.py create mode 100644 adapters/tests/test_electra.py create mode 100644 adapters/tests/test_encoder_decoder.py create mode 100644 adapters/tests/test_gpt2.py create mode 100644 adapters/tests/test_gptj.py create mode 100644 adapters/tests/test_llama.py create mode 100644 adapters/tests/test_mbart.py create mode 100644 adapters/tests/test_mt5.py create mode 100644 adapters/tests/test_roberta.py create mode 100644 adapters/tests/test_t5.py create mode 100644 adapters/tests/test_vit.py create mode 100644 adapters/tests/test_xlm_roberta.py create mode 100644 adapters/tests/test_xmod.py create mode 100644 adapters/utils/back_comp/README.md create mode 100644 adapters/utils/back_comp/Utils.py create mode 100644 adapters/utils/back_comp/compare.sh create mode 100644 adapters/utils/back_comp/compare_outputs.py create mode 100644 adapters/utils/back_comp/create_outputs.py create mode 100644 adapters/utils/check_inits.py create mode 100644 adapters/utils/convert_xmod_checkpoint.py create mode 100644 adapters/utils/custom_init_isort.py create mode 100644 adapters/utils/sort_auto_mappings.py create mode 100644 configs/peft/adapter.json create mode 100644 wtpsplit/train/adaptertrainer.py create mode 100644 wtpsplit/train/train_adapter.py diff --git a/adapters/CITATION.cff b/adapters/CITATION.cff new file mode 100644 index 00000000..2a46fd0a --- /dev/null +++ b/adapters/CITATION.cff @@ -0,0 +1,59 @@ +cff-version: "1.2.0" +date-released: 2023-11 +message: "If you use this software, please cite it as below." +title: "Adapters: A Unified Library for Parameter-Efficient and + Modular Transfer Learning" +url: "https://github.com/Adapter-Hub/adapters" +authors: + - family-names: Poth + given-names: Clifton + - family-names: Sterz + given-names: Hannah + - family-names: Paul + given-names: Indraneil + - family-names: Purkayastha + given-names: Sukannya + - family-names: Engländer + given-names: Leon + - family-names: Imhof + given-names: Timo + - family-names: Vulić + given-names: Ivan + - family-names: Ruder + given-names: Sebastian + - family-names: Gurevych + given-names: Iryna + - family-names: Pfeiffer + given-names: Jonas +preferred-citation: + type: conference-paper + authors: + - family-names: Poth + given-names: Clifton + - family-names: Sterz + given-names: Hannah + - family-names: Paul + given-names: Indraneil + - family-names: Purkayastha + given-names: Sukannya + - family-names: Engländer + given-names: Leon + - family-names: Imhof + given-names: Timo + - family-names: Vulić + given-names: Ivan + - family-names: Ruder + given-names: Sebastian + - family-names: Gurevych + given-names: Iryna + - family-names: Pfeiffer + given-names: Jonas + booktitle: "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations" + month: 12 + start: 149 + end: 160 + title: "Adapters: A Unified Library for Parameter-Efficient and Modular Transfer Learning" + year: 2023 + publisher: "Association for Computational Linguistics" + url: "https://aclanthology.org/2023.emnlp-demo.13" + address: "Singapore" diff --git a/adapters/LICENSE b/adapters/LICENSE new file mode 100644 index 00000000..776bedce --- /dev/null +++ b/adapters/LICENSE @@ -0,0 +1,203 @@ +Copyright 2020-2024 The AdapterHub Team. All rights reserved. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/adapters/MANIFEST.in b/adapters/MANIFEST.in new file mode 100644 index 00000000..1aba38f6 --- /dev/null +++ b/adapters/MANIFEST.in @@ -0,0 +1 @@ +include LICENSE diff --git a/adapters/Makefile b/adapters/Makefile new file mode 100644 index 00000000..04b93741 --- /dev/null +++ b/adapters/Makefile @@ -0,0 +1,45 @@ +.PHONY: extra_style_checks quality style test test-adapter-methods test-adapter-models test-examples + +# make sure to test the local checkout in scripts and not the pre-installed one (don't use quotes!) +export PYTHONPATH = src + +check_dirs := examples tests src utils + +# this target runs checks on all files + +quality: + black --check --preview $(check_dirs) + isort --check-only $(check_dirs) + python utils/custom_init_isort.py --check_only + python utils/sort_auto_mappings.py --check_only + flake8 $(check_dirs) + python utils/check_inits.py + +# Format source code automatically and check is there are any problems left that need manual fixing + +extra_style_checks: + python utils/custom_init_isort.py + python utils/sort_auto_mappings.py + +# this target runs checks on all files and potentially modifies some of them + +style: + black --preview $(check_dirs) + isort $(check_dirs) + ${MAKE} extra_style_checks + +# Run tests for the library + +test: + python -m pytest -n auto --dist=loadfile -s -v ./tests/ + +test-adapter-methods: + python -m pytest --ignore ./tests/models -n auto --dist=loadfile -s -v ./tests/ + +test-adapter-models: + python -m pytest -n auto --dist=loadfile -s -v ./tests/models + +# Run tests for examples + +test-examples: + python -m pytest -n auto --dist=loadfile -s -v ./examples/pytorch/ diff --git a/adapters/README.md b/adapters/README.md new file mode 100644 index 00000000..fc47f617 --- /dev/null +++ b/adapters/README.md @@ -0,0 +1,204 @@ + + +> **Note**: This repository holds the codebase of the _Adapters_ library, which has replaced `adapter-transformers`. For the legacy codebase, go to: https://github.com/adapter-hub/adapter-transformers-legacy. + +

+ +

+

+Adapters +

+ +

+A Unified Library for Parameter-Efficient and Modular Transfer Learning +

+ +![Tests](https://github.com/Adapter-Hub/adapters/workflows/Tests/badge.svg?branch=adapters) +[![GitHub](https://img.shields.io/github/license/adapter-hub/adapters.svg?color=blue)](https://github.com/adapter-hub/adapters/blob/main/LICENSE) +[![PyPI](https://img.shields.io/pypi/v/adapters)](https://pypi.org/project/adapters/) + +`adapters` is an add-on to [HuggingFace's Transformers](https://github.com/huggingface/transformers) library, integrating adapters into state-of-the-art language models by incorporating **[AdapterHub](https://adapterhub.ml)**, a central repository for pre-trained adapter modules. + +## Installation + +`adapters` currently supports **Python 3.8+** and **PyTorch 1.10+**. +After [installing PyTorch](https://pytorch.org/get-started/locally/), you can install `adapters` from PyPI ... + +``` +pip install -U adapters +``` + +... or from source by cloning the repository: + +``` +git clone https://github.com/adapter-hub/adapters.git +cd adapters +pip install . +``` + +## Quick Tour + +#### Load pre-trained adapters: + +```python +from adapters import AutoAdapterModel +from transformers import AutoTokenizer + +model = AutoAdapterModel.from_pretrained("roberta-base") +tokenizer = AutoTokenizer.from_pretrained("roberta-base") + +model.load_adapter("AdapterHub/roberta-base-pf-imdb", source="hf", set_active=True) + +print(model(**tokenizer("This works great!", return_tensors="pt")).logits) +``` + +**[Learn More](https://docs.adapterhub.ml/loading.html)** + +#### Adapt existing model setups: + +```python +import adapters +from transformers import AutoModelForSequenceClassification + +model = AutoModelForSequenceClassification.from_pretrained("t5-base") + +adapters.init(model) + +model.add_adapter("my_lora_adapter", config="lora") +model.train_adapter("my_lora_adapter") + +# Your regular training loop... +``` + +**[Learn More](https://docs.adapterhub.ml/quickstart.html)** + +#### Flexibly configure adapters: + +```python +from adapters import ConfigUnion, PrefixTuningConfig, ParBnConfig, AutoAdapterModel + +model = AutoAdapterModel.from_pretrained("microsoft/deberta-v3-base") + +adapter_config = ConfigUnion( + PrefixTuningConfig(prefix_length=20), + ParBnConfig(reduction_factor=4), +) +model.add_adapter("my_adapter", config=adapter_config, set_active=True) +``` + +**[Learn More](https://docs.adapterhub.ml/overview.html)** + +#### Easily compose adapters in a single model: + +```python +from adapters import AdapterSetup, AutoAdapterModel +import adapters.composition as ac + +model = AutoAdapterModel.from_pretrained("roberta-base") + +qc = model.load_adapter("AdapterHub/roberta-base-pf-trec") +sent = model.load_adapter("AdapterHub/roberta-base-pf-imdb") + +with AdapterSetup(ac.Parallel(qc, sent)): + print(model(**tokenizer("What is AdapterHub?", return_tensors="pt"))) +``` + +**[Learn More](https://docs.adapterhub.ml/adapter_composition.html)** + +## Useful Resources + +HuggingFace's great documentation on getting started with _Transformers_ can be found [here](https://huggingface.co/transformers/index.html). `adapters` is fully compatible with _Transformers_. + +To get started with adapters, refer to these locations: + +- **[Colab notebook tutorials](https://github.com/Adapter-Hub/adapters/tree/main/notebooks)**, a series notebooks providing an introduction to all the main concepts of (adapter-)transformers and AdapterHub +- **https://docs.adapterhub.ml**, our documentation on training and using adapters with _adapters_ +- **https://adapterhub.ml** to explore available pre-trained adapter modules and share your own adapters +- **[Examples folder](https://github.com/Adapter-Hub/adapters/tree/main/examples/pytorch)** of this repository containing HuggingFace's example training scripts, many adapted for training adapters + +## Implemented Methods + +Currently, adapters integrates all architectures and methods listed below: + +| Method | Paper(s) | Quick Links | +| --- | --- | --- | +| Bottleneck adapters | [Houlsby et al. (2019)](https://arxiv.org/pdf/1902.00751.pdf)
[Bapna and Firat (2019)](https://arxiv.org/pdf/1909.08478.pdf) | [Quickstart](https://docs.adapterhub.ml/quickstart.html), [Notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/01_Adapter_Training.ipynb) | +| AdapterFusion | [Pfeiffer et al. (2021)](https://aclanthology.org/2021.eacl-main.39.pdf) | [Docs: Training](https://docs.adapterhub.ml/training.html#train-adapterfusion), [Notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/03_Adapter_Fusion.ipynb) | +| MAD-X,
Invertible adapters | [Pfeiffer et al. (2020)](https://aclanthology.org/2020.emnlp-main.617/) | [Notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/04_Cross_Lingual_Transfer.ipynb) | +| AdapterDrop | [Rücklé et al. (2021)](https://arxiv.org/pdf/2010.11918.pdf) | [Notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/05_Adapter_Drop_Training.ipynb) | +| MAD-X 2.0,
Embedding training | [Pfeiffer et al. (2021)](https://arxiv.org/pdf/2012.15562.pdf) | [Docs: Embeddings](https://docs.adapterhub.ml/embeddings.html), [Notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/08_NER_Wikiann.ipynb) | +| Prefix Tuning | [Li and Liang (2021)](https://arxiv.org/pdf/2101.00190.pdf) | [Docs](https://docs.adapterhub.ml/methods.html#prefix-tuning) | +| Parallel adapters,
Mix-and-Match adapters | [He et al. (2021)](https://arxiv.org/pdf/2110.04366.pdf) | [Docs](https://docs.adapterhub.ml/method_combinations.html#mix-and-match-adapters) | +| Compacter | [Mahabadi et al. (2021)](https://arxiv.org/pdf/2106.04647.pdf) | [Docs](https://docs.adapterhub.ml/methods.html#compacter) | +| LoRA | [Hu et al. (2021)](https://arxiv.org/pdf/2106.09685.pdf) | [Docs](https://docs.adapterhub.ml/methods.html#lora) | +| (IA)^3 | [Liu et al. (2022)](https://arxiv.org/pdf/2205.05638.pdf) | [Docs](https://docs.adapterhub.ml/methods.html#ia-3) | +| UniPELT | [Mao et al. (2022)](https://arxiv.org/pdf/2110.07577.pdf) | [Docs](https://docs.adapterhub.ml/method_combinations.html#unipelt) | +| Prompt Tuning | [Lester et al. (2021)](https://aclanthology.org/2021.emnlp-main.243/) | [Docs](https://docs.adapterhub.ml/methods.html#prompt-tuning) | + +## Supported Models + +We currently support the PyTorch versions of all models listed on the **[Model Overview](https://docs.adapterhub.ml/model_overview.html) page** in our documentation. + +## Developing & Contributing + +To get started with developing on _Adapters_ yourself and learn more about ways to contribute, please see https://docs.adapterhub.ml/contributing.html. + +## Citation + +If you use _Adapters_ in your work, please consider citing our library paper: [Adapters: A Unified Library for Parameter-Efficient and Modular Transfer Learning](https://arxiv.org/abs/2311.11077) + +``` +@inproceedings{poth-etal-2023-adapters, + title = "Adapters: A Unified Library for Parameter-Efficient and Modular Transfer Learning", + author = {Poth, Clifton and + Sterz, Hannah and + Paul, Indraneil and + Purkayastha, Sukannya and + Engl{\"a}nder, Leon and + Imhof, Timo and + Vuli{\'c}, Ivan and + Ruder, Sebastian and + Gurevych, Iryna and + Pfeiffer, Jonas}, + booktitle = "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations", + month = dec, + year = "2023", + address = "Singapore", + publisher = "Association for Computational Linguistics", + url = "https://aclanthology.org/2023.emnlp-demo.13", + pages = "149--160", +} +``` + +Alternatively, for the predecessor `adapter-transformers`, the Hub infrastructure and adapters uploaded by the AdapterHub team, please consider citing our initial paper: [AdapterHub: A Framework for Adapting Transformers](https://arxiv.org/abs/2007.07779) + +``` +@inproceedings{pfeiffer2020AdapterHub, + title={AdapterHub: A Framework for Adapting Transformers}, + author={Pfeiffer, Jonas and + R{\"u}ckl{\'e}, Andreas and + Poth, Clifton and + Kamath, Aishwarya and + Vuli{\'c}, Ivan and + Ruder, Sebastian and + Cho, Kyunghyun and + Gurevych, Iryna}, + booktitle={Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations}, + pages={46--54}, + year={2020} +} +``` diff --git a/adapters/conftest.py b/adapters/conftest.py new file mode 100644 index 00000000..93673cd2 --- /dev/null +++ b/adapters/conftest.py @@ -0,0 +1,85 @@ +# Copyright 2020 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# tests directory-specific settings - this file is run automatically +# by pytest before any tests are run + +import doctest +import sys +import warnings +import os +from os.path import abspath, dirname, join + + +# allow having multiple repository checkouts and not needing to remember to rerun +# 'pip install -e .[dev]' when switching between checkouts and running tests. +git_repo_path = abspath(join(dirname(__file__), "src")) +sys.path.insert(1, git_repo_path) + +# add original HF tests folder +sys.path.insert(1, abspath(join(dirname(__file__), "hf_transformers"))) + +# silence FutureWarning warnings in tests since often we can't act on them until +# they become normal warnings - i.e. the tests still need to test the current functionality +warnings.simplefilter(action="ignore", category=FutureWarning) + + +# skip pipeline tests of HF by default +os.environ["RUN_PIPELINE_TESTS"] = "false" + + +def pytest_configure(config): + config.addinivalue_line( + "markers", "is_pt_tf_cross_test: mark test to run only when PT and TF interactions are tested" + ) + config.addinivalue_line( + "markers", "is_pt_flax_cross_test: mark test to run only when PT and FLAX interactions are tested" + ) + config.addinivalue_line("markers", "is_staging_test: mark test to run only in the staging environment") + + +def pytest_addoption(parser): + from transformers.testing_utils import pytest_addoption_shared + + pytest_addoption_shared(parser) + + +def pytest_terminal_summary(terminalreporter): + from transformers.testing_utils import pytest_terminal_summary_main + + make_reports = terminalreporter.config.getoption("--make-reports") + if make_reports: + pytest_terminal_summary_main(terminalreporter, id=make_reports) + + +def pytest_sessionfinish(session, exitstatus): + # If no tests are collected, pytest exists with code 5, which makes the CI fail. + if exitstatus == 5: + session.exitstatus = 0 + + +# Doctest custom flag to ignore output. +IGNORE_RESULT = doctest.register_optionflag('IGNORE_RESULT') + +OutputChecker = doctest.OutputChecker + + +class CustomOutputChecker(OutputChecker): + def check_output(self, want, got, optionflags): + if IGNORE_RESULT & optionflags: + return True + return OutputChecker.check_output(self, want, got, optionflags) + + +doctest.OutputChecker = CustomOutputChecker diff --git a/adapters/docs/Makefile b/adapters/docs/Makefile new file mode 100644 index 00000000..d83273c4 --- /dev/null +++ b/adapters/docs/Makefile @@ -0,0 +1,24 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +html-multi-version: + sphinx-multiversion "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS) $(O) + python scripts/post_build.py "$(BUILDDIR)/html" + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/adapters/docs/README.md b/adapters/docs/README.md new file mode 100644 index 00000000..d4c2e213 --- /dev/null +++ b/adapters/docs/README.md @@ -0,0 +1,19 @@ +# The adapters documentation + +This is the documentation of the adapter-related parts of the transformers library and the Adapter-Hub. Hugging Face's documentation of the base library is located in the `/docs` folder. + +## Installing & Building + +Building the documentation requires some additional packages installed. You can install them by running the following command in the root folder: + +```bash +pip install -e ".[docs]" +``` + +Cleaning and regenerating the documentation files can be done using `sphinx` by running the following command in the `/docs` folder: + +```bash +make clean && make html +``` + +The build output will be located in `/docs/_build/html`. diff --git a/adapters/docs/_config.py b/adapters/docs/_config.py new file mode 100644 index 00000000..cd76263e --- /dev/null +++ b/adapters/docs/_config.py @@ -0,0 +1,14 @@ +# docstyle-ignore +INSTALL_CONTENT = """ +# Transformers installation +! pip install transformers datasets +# To install from source instead of the last release, comment the command above and uncomment the following one. +# ! pip install git+https://github.com/huggingface/transformers.git +""" + +notebook_first_cells = [{"type": "code", "content": INSTALL_CONTENT}] +black_avoid_patterns = { + "{processor_class}": "FakeProcessorClass", + "{model_class}": "FakeModelClass", + "{object_class}": "FakeObjectClass", +} diff --git a/adapters/docs/_static/custom.css b/adapters/docs/_static/custom.css new file mode 100644 index 00000000..e4ba5749 --- /dev/null +++ b/adapters/docs/_static/custom.css @@ -0,0 +1,38 @@ +/* The search field on top of the toc tree */ +/* Mobile header */ +.wy-side-nav-search, .wy-nav-top { + background: #39B3C6; +} +/* toc tree text */ +.wy-menu-vertical header, +.wy-menu-vertical p.caption { + color: #39B3C6 +} +/* toc tree activated link */ +.wy-menu-vertical a:active { + background-color:#39B3C6; +} +/* Links */ +a { + color: #39B3C6 +} +/* Source spans */ +.rst-content .viewcode-link, .rst-content .viewcode-back{ + color: #39B3C6; +} +/* The literal code blocks */ +.rst-content tt.literal, .rst-content tt.literal, .rst-content code.literal { + color: #666; +} +.rst-content a code.literal { + color: #39B3C6; +} +/* Sidebar scroll space for version switcher */ +.wy-side-scroll { + padding-bottom: 1em; +} + +/* override table no-wrap */ +.wy-table-responsive table td, .wy-table-responsive table th { + white-space: normal; +} diff --git a/adapters/docs/adapter_composition.md b/adapters/docs/adapter_composition.md new file mode 100644 index 00000000..0851e797 --- /dev/null +++ b/adapters/docs/adapter_composition.md @@ -0,0 +1,305 @@ +# Adapter Activation and Composition + +With `adapters`, it becomes possible to combine multiple adapters trained on different tasks in so-called *adapter compositions*. +To enable such compositions, `adapters` comes with a modular and flexible concept to define how the input to the model should flow through the available adapters. +This allows, e.g., stacking ([_MAD-X_](https://arxiv.org/pdf/2005.00052.pdf)) and fusing ([_AdapterFusion_](https://arxiv.org/pdf/2005.00247.pdf)) adapters and even more complex adapter setups. + +## Adapter Activation + +The single location where all the adapter composition magic happens is the `active_adapters` property of the model class. +In the simplest case, you can set the name of a single adapter here to activate it: +```python +model.active_adapters = "adapter_name" +``` + +```{eval-rst} +.. important:: + ``active_adapters`` defines which available adapters are used in each forward and backward pass through the model. This means: + + - You cannot activate an adapter before previously adding it to the model using either ``add_adapter()`` or ``load_adapter()``. + - All adapters not mentioned in the ``active_adapters`` setup are ignored, although they might have been loaded into the model. Thus, after adding an adapter, make sure to activate it. +``` +Note that we also could have used the [`set_active_adapters`](adapters.) method with `model.set_active_adapters("adapter_name")` which does the same. + +Alternatively, the [`AdapterSetup`](adapters.AdapterSetup) context manager allows dynamic configuration of activated setups without changing the model state: + +```python +from adapters import AdapterSetup + +model = ... +model.add_adapter("adapter_name") + +with AdapterSetup("adapter_name"): + # will use the adapter named "adapter_name" in the forward pass + outputs = model(**inputs) +``` + +## Composition Blocks - Overview + +The basic building blocks of the more advanced setups are objects derived from `AdapterCompositionBlock`, +each representing a different possibility to combine single adapters. +The following table gives an overview on the supported composition blocks and their support by different adapter methods. + +| Block | Bottleneck
Adapters | Prefix
Tuning | Compacter | LoRA | (IA)³ | Prompt Tuning | +| --- | --- | --- | --- | --- | --- | --- | +| [`Stack`](#stack) | ✅ | ✅ | ✅ | ✅(*) | ✅(*) | | +| [`Fuse`](#fuse) | ✅ | | ✅ | | | | +| [`Split`](#split) | ✅ | | ✅ | | | | +| [`BatchSplit`](#batchsplit) | ✅ | ✅ | ✅ | ✅(*) | ✅(*) | | +| [`Parallel`](#parallel) | ✅ | ✅ | ✅ | ✅(*) | ✅(*) | | +| [Output averaging](#output-averaging) | ✅ | | ✅ | ✅(*) | ✅(*) | | +| [Parameter averaging](#parameter-averaging) | ✅ | ✅ | ✅ | ✅ | ✅ | | + +(*) except for Deberta-v1, GPT-2. + +Next, we present all composition blocks in more detail. + +## `Stack` + +```{eval-rst} +.. figure:: img/stacking_adapters.png + :height: 300 + :align: center + :alt: Illustration of stacking adapters. + + Stacking adapters using the 'Stack' block. +``` + +The `Stack` block can be used to stack multiple adapters on top of each other. +This kind of adapter composition is used e.g. in the _MAD-X_ framework for cross-lingual transfer [(Pfeiffer et al., 2020)](https://arxiv.org/pdf/2005.00052.pdf), where language and task adapters are stacked on top of each other. +For more, check out [this Colab notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/04_Cross_Lingual_Transfer.ipynb) on cross-lingual transfer. + +In the following example, we stack the adapters `a`, `b` and `c` so that in each layer, the input is first passed through `a`, the output of `a` is then inputted to `b` and the output of `b` is finally inputted to `c`. + +```python +import adapters.composition as ac + +// ... + +model.add_adapter("a") +model.add_adapter("b") +model.add_adapter("c") + +model.active_adapters = ac.Stack("a", "b", "c") +``` + +```{eval-rst} +.. note:: + When using stacking for prefix tuning the stacked prefixed are prepended to the input states from right to left, i.e. `Stack("a", "b", "c")` will first prepend prefix states for "a" to the input vectors, then prepend "b" to the resulting vectors etc. +``` + +## `Fuse` + +```{eval-rst} +.. figure:: img/Fusion.png + :height: 300 + :align: center + :alt: Illustration of AdapterFusion. + + Fusing adapters with AdapterFusion. +``` + +The `Fuse` block can be used to activate a fusion layer of adapters. +_AdapterFusion_ is a non-destructive way to combine the knowledge of multiple pre-trained adapters on a new downstream task, proposed by [Pfeiffer et al., 2021](https://arxiv.org/pdf/2005.00247.pdf). +In the following example, we activate the adapters `d`, `e` and `f` as well as the fusion layer that combines the outputs of all three. +The fusion layer is added beforehand using `model.add_adapter_fusion()`, where we specify the names of the adapters which should be fused. + +```python +import adapters.composition as ac + +// ... + +model.add_adapter("d") +model.add_adapter("e") +model.add_adapter("f") +model.add_adapter_fusion(["d", "e", "f"]) + +model.active_adapters = ac.Fuse("d", "e", "f") +``` + +```{eval-rst} +.. important:: + Fusing adapters with the ``Fuse`` block only works successfully if an adapter fusion layer combining all of the adapters listed in the ``Fuse`` has been added to the model. + This can be done either using ``add_adapter_fusion()`` or ``load_adapter_fusion()``. +``` + +To learn how training an _AdapterFusion_ layer works, check out [this Colab notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/03_Adapter_Fusion.ipynb) from the `adapters` repo. + +#### Retrieving AdapterFusion attentions + +Finally, it is possible to retrieve the attention scores computed by each fusion layer in a forward pass of the model. +These scores can be used for analyzing the fused adapter blocks and can serve as the basis for visualizations similar to those in the AdapterFusion paper. +You can collect the fusion attention scores by passing `output_adapter_fusion_attentions=True` to the model forward call. +The scores for each layer will then be saved in the `adapter_fusion_attentions` attribute of the output: + +```python +outputs = model(**inputs, output_adapter_fusion_attentions=True) +attention_scores = outputs.adapter_fusion_attentions +``` +Note that this parameter is only available to base model classes and [AdapterModel classes](prediction_heads.md#adaptermodel-classes). +In the example, `attention_scores` holds a dictionary of the following form: +``` +{ + '': { + : { + '': np.array([...]), + ... + }, + ... + }, + ... +} +``` + +## `Split` + +```{eval-rst} +.. figure:: img/splitting_adapters.png + :height: 300 + :align: center + :alt: Illustration of splitting adapters. + + Splitting the input between two adapters using the 'Split' block. +``` + +The `Split` block can be used to split an input sequence between multiple adapters. +This is done by specifying split indices at which the sequences should be divided. +In the following example, we split each input sequence between adapters `g` and `h`. +For each sequence, all tokens from 0 up to 63 are forwarded through `g` while the next 64 tokens are forwarded through `h`: + +```python +import adapters.composition as ac + +// ... + +model.add_adapter("g") +model.add_adapter("h") + +model.active_adapters = ac.Split("g", "h", splits=[64, 64]) +``` + +## `BatchSplit` + +The `BatchSplit` block is an alternative to split the input between several adapters. It does not split the input sequences but the +batch into smaller batches. As a result, the input sequences remain untouched. + +In the following example, we split the batch between adapters `i`, `k` and `l`. The `batch_sizes`parameter specifies +the batch size for each of the adapters. The adapter `i` gets two sequences, `k`gets 1 sequence and `l` gets two sequences. +If all adapters should get the same batch size this can be specified by passing one batch size e.g. `batch_sizes = 2`. The sum +specified batch has to match the batch size of the input. +```python +import adapters.composition as ac + +// ... + +model.add_adapter("i") +model.add_adapter("k") +model.add_adapter("l") + +model.active_adapters = ac.BatchSplit("i", "k", "l", batch_sizes=[2, 1, 2]) + +``` + +## `Parallel` + +```{eval-rst} +.. figure:: img/parallel.png + :height: 300 + :align: center + :alt: Illustration of parallel adapter forward pass. + + Parallel adapter forward pass as implemented by the 'Parallel' block. The input is replicated at the first layer with parallel adapters. +``` + +The `Parallel` block can be used to enable parallel multi-task training and inference on different adapters, each with their own prediction head. +Parallel adapter inference was first used in _AdapterDrop: On the Efficiency of Adapters in Transformers_ [(Rücklé et al., 2020)](https://arxiv.org/pdf/2010.11918.pdf). + +In the following example, we load two adapters for semantic textual similarity (STS) from the Hub, one trained on the STS benchmark, the other trained on the MRPC dataset. +We activate a parallel setup where the input is passed through both adapters and their respective prediction heads. + +```python +import adapters.composition as ac + +model = AutoAdapterModel.from_pretrained("distilbert-base-uncased") +tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased") + +adapter1 = model.load_adapter("sts/sts-b@ukp") +adapter2 = model.load_adapter("sts/mrpc@ukp") + +model.active_adapters = ac.Parallel(adapter1, adapter2) + +input_ids = tokenizer("Adapters are great!", "Adapters are awesome!", return_tensors="pt") + +output1, output2 = model(**input_ids) + +print("STS-B adapter output:", output1[0].item()) +print("MRPC adapter output:", bool(torch.argmax(output2[0]).item())) +``` + +## Averaging Outputs or Parameters + +Following approaches of ensembling full models at inference time for better generalization, recent work on adapters has explored methods of averaging pre-trained adapters. +This includes averaging output representations of adapters ([Wang et al., 2021](https://arxiv.org/pdf/2109.04877.pdf)) as well as averaging adapter parameters ([Wang et al., 2022](https://arxiv.org/pdf/2205.12410.pdf), [Chronopoulou et al., 2023](https://aclanthology.org/2023.findings-eacl.153.pdf)). +`adapters` provides built-in support for both types of inference time averaging methods. + +### Output averaging + +Output averaging allows to dynamically aggregate the output representations of multiple adapters in a model forward pass via weighted averaging. +This is realized via the `Average` composition block that works similar to other composition blocks. +In the example below, the three adapters are averaged with the weights `0.1` for `m`, `0.6` for `n` and `0.3` for `o`. + +```python +import adapters.composition as ac + +// ... + +model.add_adapter("m") +model.add_adapter("n") +model.add_adapter("o") + +model.active_adapters = ac.Average("m", "n", "o", weights=[0.1, 0.6, 0.3]) +``` + +### Parameter averaging + +Parameter averaging enables creating a new adapter via weighted averaging of the parameters of multiple pre-trained adapters. +As this process is typically not done dynamically at runtime, `adapters` provides `average_adapter()` as a dedicated method for parameter averaging. +In the example below, the parameters of the adapters `m`, `n` and `o` are averaged (with weights `0.1` `0.6` and `0.3`, respectively) to create a new adapter `avg`. +Note that for this to succeed, all averaged adapters must use the same adapter configuration. + +```python +model.add_adapter("m") +model.add_adapter("n") +model.add_adapter("o") + +model.average_adapter("avg", ["m", "n", "o"], weights=[0.1, 0.6, 0.3]) +``` + +Compared to output averaging, parameter averaging of adapters has the advantage of not inducing any additional inference time relative to using a single adapter. + +For both output and parameter averaging, passed weights are normalized by default. +To disable normalization, pass `normalize_weights=False`. + +## Nesting composition blocks + +Of course, it is also possible to combine different composition blocks in one adapter setup. +E.g., we can nest a `Split` block within a `Stack` of adapters: + +```python +import adapters.composition as ac + +model.active_adapters = ac.Stack("a", ac.Split("b", "c", splits=60)) +``` + +However, combinations of adapter composition blocks cannot be arbitrarily deep. All currently supported possibilities are visualized in the table below. + +|Block|Supported Nesting| +|---|---| +| [`Stack`](#stack)|[str, Fuse, Split, Parallel, BatchSplit, Average]| +| [`Fuse`](#fuse)|[str, Stack]| +|[`Split`](#split)|[str, Split, Stack, BatchSplit, Average]| +|[`Parallel`](#parallel)|[str, Stack, BatchSplit, Average]| +|[`BatchSplit`](#batchsplit)|[str, Stack, Split, BatchSplit, Average]| +|[`Average`](#output-averaging)|[str, Stack, Split, BatchSplit]| + +In the table, `str` represents an adapter, e.g. adapter "a" in the nesting example above. Depending on the individual model, some nested compositions might not be possible. diff --git a/adapters/docs/classes/adapter_config.rst b/adapters/docs/classes/adapter_config.rst new file mode 100644 index 00000000..91a9f506 --- /dev/null +++ b/adapters/docs/classes/adapter_config.rst @@ -0,0 +1,95 @@ +Adapter Configuration +======================= + +Classes representing the architectures of adapter modules and fusion layers. + +Single (bottleneck) adapters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.AdapterConfig + :members: + +.. autoclass:: adapters.BnConfig + :members: + :inherited-members: Mapping + +.. autoclass:: adapters.SeqBnConfig + :members: + +.. autoclass:: adapters.SeqBnInvConfig + :members: + +.. autoclass:: adapters.DoubleSeqBnConfig + :members: + +.. autoclass:: adapters.DoubleSeqBnInvConfig + :members: + +.. autoclass:: adapters.ParBnConfig + :members: + +.. autoclass:: adapters.CompacterConfig + :members: + +.. autoclass:: adapters.CompacterPlusPlusConfig + :members: + +Prefix Tuning +~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.PrefixTuningConfig + :members: + :inherited-members: Mapping + +LoRAConfig +~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.LoRAConfig + :members: + :inherited-members: Mapping + +IA3Config +~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.IA3Config + :members: + :inherited-members: Mapping + +PromptTuningConfig +~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.PromptTuningConfig + :members: + :inherited-members: Mapping + +Combined configurations +~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.ConfigUnion + :members: + :inherited-members: Mapping + +.. autoclass:: adapters.MAMConfig + :members: + +.. autoclass:: adapters.UniPELTConfig + :members: + +Adapter Fusion +~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.AdapterFusionConfig + :members: + :inherited-members: Mapping + +.. autoclass:: adapters.StaticAdapterFusionConfig + :members: + +.. autoclass:: adapters.DynamicAdapterFusionConfig + :members: + +Adapter Setup +~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.AdapterSetup + :members: diff --git a/adapters/docs/classes/adapter_layer.rst b/adapters/docs/classes/adapter_layer.rst new file mode 100644 index 00000000..01233d63 --- /dev/null +++ b/adapters/docs/classes/adapter_layer.rst @@ -0,0 +1,12 @@ +Adapter Implementation +======================= + +The following classes define the common interfaces for all adapter methods. +They further hold logic shared by all adapter implementations. +All newly added adapter methods should inherit from either one of these classes. + +.. autoclass:: adapters.AdapterLayerBase + :members: + +.. autoclass:: adapters.ComposableAdapterLayerBase + :members: diff --git a/adapters/docs/classes/adapter_training.rst b/adapters/docs/classes/adapter_training.rst new file mode 100644 index 00000000..67784c5d --- /dev/null +++ b/adapters/docs/classes/adapter_training.rst @@ -0,0 +1,10 @@ +Adapter Training +==================== + +Classes and methods related to training adapters. + +.. automodule:: adapters.training + :members: + +.. automodule:: adapters.trainer + :members: diff --git a/adapters/docs/classes/adapter_utils.rst b/adapters/docs/classes/adapter_utils.rst new file mode 100644 index 00000000..957e2aab --- /dev/null +++ b/adapters/docs/classes/adapter_utils.rst @@ -0,0 +1,8 @@ +Adapter Utilities +==================== + +A collection of utility methods mainly related to searching and loading adapter modules from +Adapter-Hub. + +.. automodule:: adapters.utils + :members: diff --git a/adapters/docs/classes/model_adapters_config.rst b/adapters/docs/classes/model_adapters_config.rst new file mode 100644 index 00000000..130f7b64 --- /dev/null +++ b/adapters/docs/classes/model_adapters_config.rst @@ -0,0 +1,7 @@ +Model Adapters Config +======================= + +This class manages the setup and configuration of adapter modules in a pre-trained model. + +.. autoclass:: adapters.ModelAdaptersConfig + :members: diff --git a/adapters/docs/classes/model_mixins.rst b/adapters/docs/classes/model_mixins.rst new file mode 100644 index 00000000..3a43525e --- /dev/null +++ b/adapters/docs/classes/model_mixins.rst @@ -0,0 +1,43 @@ +Model Mixins +======================= + +These classes provide the basis of adapter module integration into model classes such as adapter saving and loading. +Depending on the model, one of these mixins should be implemented by every adapter-supporting model class. + +InvertibleAdaptersMixin +---------------------------------- + +.. autoclass:: adapters.InvertibleAdaptersMixin + :members: + + +EmbeddingAdaptersMixin +---------------------------------- + +.. autoclass:: adapters.EmbeddingAdaptersMixin + :members: + + +ModelAdaptersMixin +------------------ + +.. autoclass:: adapters.ModelAdaptersMixin + :members: + +ModelWithHeadsAdaptersMixin +---------------------------------- + +.. autoclass:: adapters.ModelWithHeadsAdaptersMixin + :members: + +ModelWithFlexibleHeadsAdaptersMixin +--------------------------------------- + +.. autoclass:: adapters.ModelWithFlexibleHeadsAdaptersMixin + :members: + +PushAdapterToHubMixin +---------------------- + +.. autoclass:: adapters.hub_mixin.PushAdapterToHubMixin + :members: diff --git a/adapters/docs/classes/models/albert.rst b/adapters/docs/classes/models/albert.rst new file mode 100644 index 00000000..8db0d0c1 --- /dev/null +++ b/adapters/docs/classes/models/albert.rst @@ -0,0 +1,22 @@ +ALBERT +====== + +.. note:: + Adapter implementation notes for ALBERT: + - As layers are shared between groups, adapters added to a layer are also shared between groups. Therefore, changing the adapter configuration for a layer affects the behavior of all groups that use this layer. + - As usual, the ``leave_out`` parameter can be used to specify the layers in which adapters should be added. The layer IDs are counted by putting all layers of the groups into a sequence depending on the group number and their position in the group. I.e., for a ALBERT model with `inner_group_num=2` the first layer of the first group has ID 0, the second layer of the first group has ID 1, the first layer of the second group has ID 2, etc. + + +The ALBERT model was proposed in `ALBERT: A Lite BERT for Self-supervised Learning of Language Representations `__ +by Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut. +It presents two parameter-reduction techniques to lower memory consumption and increase the training speed of BERT: + +- Splitting the embedding matrix into two smaller matrices. +- Using repeating layers split among groups. + +AlbertAdapterModel +~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.AlbertAdapterModel + :members: + :inherited-members: AlbertPreTrainedModel diff --git a/adapters/docs/classes/models/auto.rst b/adapters/docs/classes/models/auto.rst new file mode 100644 index 00000000..f4081a77 --- /dev/null +++ b/adapters/docs/classes/models/auto.rst @@ -0,0 +1,11 @@ +Auto Classes +============ + +Similar to the ``AutoModel`` classes built-in into HuggingFace Transformers, adapters provides an ``AutoAdapterModel`` class. +As with other auto classes, the correct adapter model class is automatically instantiated based on the pre-trained model passed to the ``from_pretrained()`` method. + +AutoAdapterModel +~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.AutoAdapterModel + :members: diff --git a/adapters/docs/classes/models/bart.rst b/adapters/docs/classes/models/bart.rst new file mode 100644 index 00000000..5ea8eeb1 --- /dev/null +++ b/adapters/docs/classes/models/bart.rst @@ -0,0 +1,25 @@ +BART +===== + +The Bart model was proposed in `BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, +Translation, and Comprehension `__ by Mike Lewis, Yinhan Liu, Naman Goyal, Marjan +Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Ves Stoyanov and Luke Zettlemoyer on 29 Oct, 2019. + +According to the abstract, + +- Bart uses a standard seq2seq/machine translation architecture with a bidirectional encoder (like BERT) and a + left-to-right decoder (like GPT). +- The pretraining task involves randomly shuffling the order of the original sentences and a novel in-filling scheme, + where spans of text are replaced with a single mask token. +- BART is particularly effective when fine tuned for text generation but also works well for comprehension tasks. It + matches the performance of RoBERTa with comparable training resources on GLUE and SQuAD, achieves new + state-of-the-art results on a range of abstractive dialogue, question answering, and summarization tasks, with gains + of up to 6 ROUGE. + + +BartAdapterModel +~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.BartAdapterModel + :members: + :inherited-members: BartPretrainedModel diff --git a/adapters/docs/classes/models/beit.rst b/adapters/docs/classes/models/beit.rst new file mode 100644 index 00000000..8d581272 --- /dev/null +++ b/adapters/docs/classes/models/beit.rst @@ -0,0 +1,27 @@ +BEiT +====== + +The Bidirectional Encoder representation from Image Transformers (BEiT) model was proposed in `BERT Pre-Training of Image +Transformers `__ by Hangbo Bao, Li Dong, Songhao Piao, Furu Wei. + + +The abstract from the paper is the following: + +*We introduce a self-supervised vision representation model BEiT, which stands for Bidirectional Encoder representation +from Image Transformers. Following BERT developed in the natural language processing area, we propose a masked image +modeling task to pretrain vision Transformers. Specifically, each image has two views in our pre-training, i.e, image +patches (such as 16x16 pixels), and visual tokens (i.e., discrete tokens). We first "tokenize" the original image into +visual tokens. Then we randomly mask some image patches and fed them into the backbone Transformer. The pre-training +objective is to recover the original visual tokens based on the corrupted image patches. After pre-training BEiT, we +directly fine-tune the model parameters on downstream tasks by appending task layers upon the pretrained encoder. +Experimental results on image classification and semantic segmentation show that our model achieves competitive results +with previous pre-training methods. For example, base-size BEiT achieves 83.2% top-1 accuracy on ImageNet-1K, +significantly outperforming from-scratch DeiT training (81.8%) with the same setup. Moreover, large-size BEiT obtains +86.3% only using ImageNet-1K, even outperforming ViT-L with supervised pre-training on ImageNet-22K (85.2%).* + +BeitAdapterModel +~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.BeitAdapterModel + :members: + :inherited-members: BeitPreTrainedModel diff --git a/adapters/docs/classes/models/bert-generation.rst b/adapters/docs/classes/models/bert-generation.rst new file mode 100644 index 00000000..ebcdb320 --- /dev/null +++ b/adapters/docs/classes/models/bert-generation.rst @@ -0,0 +1,40 @@ +.. + Copyright 2020 The HuggingFace Team. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + specific language governing permissions and limitations under the License. + +BertGeneration +----------------------------------------------------------------------------------------------------------------------- + +Overview +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The BertGeneration model is a BERT model that can be leveraged for sequence-to-sequence tasks using +EncoderDecoderModel as proposed in `Leveraging Pre-trained Checkpoints for Sequence Generation +Tasks `__ by Sascha Rothe, Shashi Narayan, Aliaksei Severyn. + +The abstract from the paper is the following: + +*Unsupervised pretraining of large neural models has recently revolutionized Natural Language Processing. By +warm-starting from the publicly released checkpoints, NLP practitioners have pushed the state-of-the-art on multiple +benchmarks while saving significant amounts of compute time. So far the focus has been mainly on the Natural Language +Understanding tasks. In this paper, we demonstrate the efficacy of pre-trained checkpoints for Sequence Generation. We +developed a Transformer-based sequence-to-sequence model that is compatible with publicly available pre-trained BERT, +GPT-2 and RoBERTa checkpoints and conducted an extensive empirical study on the utility of initializing our model, both +encoder and decoder, with these checkpoints. Our models result in new state-of-the-art results on Machine Translation, +Text Summarization, Sentence Splitting, and Sentence Fusion.* + + +BertGenerationAdapterModel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.BertGenerationAdapterModel + :members: + :inherited-members: BertGenerationPreTrainedModel diff --git a/adapters/docs/classes/models/bert.rst b/adapters/docs/classes/models/bert.rst new file mode 100644 index 00000000..c022d137 --- /dev/null +++ b/adapters/docs/classes/models/bert.rst @@ -0,0 +1,14 @@ +BERT +====== + +The BERT model was proposed in `BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding `__ +by Jacob Devlin, Ming-Wei Chang, Kenton Lee and Kristina Toutanova. It is a bidirectional transformer +pre-trained using a combination of masked language modeling objective and next sentence prediction. + + +BertAdapterModel +~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.BertAdapterModel + :members: + :inherited-members: BertPreTrainedModel diff --git a/adapters/docs/classes/models/clip.rst b/adapters/docs/classes/models/clip.rst new file mode 100644 index 00000000..2112cf74 --- /dev/null +++ b/adapters/docs/classes/models/clip.rst @@ -0,0 +1,50 @@ +CLIP +===== + +.. note:: + Adapter implementation notes: + - CLIP consists of two separate Transformer encoder models, a ViT-style Transformer for visual features and a language model for textual features. Both encoders can be fitted with adapters. As usual, the ``leave_out`` parameter can be used to specify the layers in which adapters should be added. For CLIP, layer IDs are counted globally across both encoders, starting from the text encoder. I.e., for a CLIP model with 12 layers in each Transformer encoder, the text encoder will have IDs 0-11 and the vision encoder will have IDs 12-23. + - As CLIP does not come with pre-supported task-specific prediction heads, there is currently no ``CLIPAdapterModel`` class. Use ``CLIPModel`` instead. + +The CLIP model was proposed in `Learning Transferable Visual Models From Natural Language Supervision `_ by Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, +Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, Ilya Sutskever. CLIP +(Contrastive Language-Image Pre-Training) is a neural network trained on a variety of (image, text) pairs. It can be +instructed in natural language to predict the most relevant text snippet, given an image, without directly optimizing +for the task, similarly to the zero-shot capabilities of GPT-2 and 3. + +The abstract from the paper is the following: + +*State-of-the-art computer vision systems are trained to predict a fixed set of predetermined object categories. This +restricted form of supervision limits their generality and usability since additional labeled data is needed to specify +any other visual concept. Learning directly from raw text about images is a promising alternative which leverages a +much broader source of supervision. We demonstrate that the simple pre-training task of predicting which caption goes +with which image is an efficient and scalable way to learn SOTA image representations from scratch on a dataset of 400 +million (image, text) pairs collected from the internet. After pre-training, natural language is used to reference +learned visual concepts (or describe new ones) enabling zero-shot transfer of the model to downstream tasks. We study +the performance of this approach by benchmarking on over 30 different existing computer vision datasets, spanning tasks +such as OCR, action recognition in videos, geo-localization, and many types of fine-grained object classification. The +model transfers non-trivially to most tasks and is often competitive with a fully supervised baseline without the need +for any dataset specific training. For instance, we match the accuracy of the original ResNet-50 on ImageNet zero-shot +without needing to use any of the 1.28 million training examples it was trained on. We release our code and pre-trained +model weights at this https URL.* + +CLIPTextModel +~~~~~~~~~~~~~ + +.. autoclass:: transformers.CLIPTextModel + :members: + :inherited-members: CLIPPreTrainedModel + +CLIPVisionModel +~~~~~~~~~~~~~~~ + +.. autoclass:: transformers.CLIPVisionModel + :members: + :inherited-members: CLIPPreTrainedModel + +CLIPModel +~~~~~~~~~ + +.. autoclass:: transformers.CLIPModel + :members: + :inherited-members: CLIPPreTrainedModel diff --git a/adapters/docs/classes/models/deberta.rst b/adapters/docs/classes/models/deberta.rst new file mode 100644 index 00000000..9513ee83 --- /dev/null +++ b/adapters/docs/classes/models/deberta.rst @@ -0,0 +1,50 @@ +.. + Copyright 2020 The HuggingFace Team. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + specific language governing permissions and limitations under the License. + +DeBERTa +----------------------------------------------------------------------------------------------------------------------- + +Overview +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The DeBERTa model was proposed in `DeBERTa: Decoding-enhanced BERT with Disentangled Attention +`__ by Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen It is based on Google's +BERT model released in 2018 and Facebook's RoBERTa model released in 2019. + +It builds on RoBERTa with disentangled attention and enhanced mask decoder training with half of the data used in +RoBERTa. + +The abstract from the paper is the following: + +*Recent progress in pre-trained neural language models has significantly improved the performance of many natural +language processing (NLP) tasks. In this paper we propose a new model architecture DeBERTa (Decoding-enhanced BERT with +disentangled attention) that improves the BERT and RoBERTa models using two novel techniques. The first is the +disentangled attention mechanism, where each word is represented using two vectors that encode its content and +position, respectively, and the attention weights among words are computed using disentangled matrices on their +contents and relative positions. Second, an enhanced mask decoder is used to replace the output softmax layer to +predict the masked tokens for model pretraining. We show that these two techniques significantly improve the efficiency +of model pretraining and performance of downstream tasks. Compared to RoBERTa-Large, a DeBERTa model trained on half of +the training data performs consistently better on a wide range of NLP tasks, achieving improvements on MNLI by +0.9% +(90.2% vs. 91.1%), on SQuAD v2.0 by +2.3% (88.4% vs. 90.7%) and RACE by +3.6% (83.2% vs. 86.8%). The DeBERTa code and +pre-trained models will be made publicly available at https://github.com/microsoft/DeBERTa.* + + +This model was contributed by `DeBERTa `__. This model TF 2.0 implementation was +contributed by `kamalkraj `__ . The original code can be found `here +`__. + +DebertaAdapterModel +~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.DebertaAdapterModel + :members: + :inherited-members: DebertaPreTrainedModel diff --git a/adapters/docs/classes/models/deberta_v2.rst b/adapters/docs/classes/models/deberta_v2.rst new file mode 100644 index 00000000..d4e172dc --- /dev/null +++ b/adapters/docs/classes/models/deberta_v2.rst @@ -0,0 +1,71 @@ +.. + Copyright 2020 The HuggingFace Team. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + specific language governing permissions and limitations under the License. + +DeBERTa-v2 +----------------------------------------------------------------------------------------------------------------------- + +Overview +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The DeBERTa model was proposed in `DeBERTa: Decoding-enhanced BERT with Disentangled Attention +`__ by Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen It is based on Google's +BERT model released in 2018 and Facebook's RoBERTa model released in 2019. + +It builds on RoBERTa with disentangled attention and enhanced mask decoder training with half of the data used in +RoBERTa. + +The abstract from the paper is the following: + +*Recent progress in pre-trained neural language models has significantly improved the performance of many natural +language processing (NLP) tasks. In this paper we propose a new model architecture DeBERTa (Decoding-enhanced BERT with +disentangled attention) that improves the BERT and RoBERTa models using two novel techniques. The first is the +disentangled attention mechanism, where each word is represented using two vectors that encode its content and +position, respectively, and the attention weights among words are computed using disentangled matrices on their +contents and relative positions. Second, an enhanced mask decoder is used to replace the output softmax layer to +predict the masked tokens for model pretraining. We show that these two techniques significantly improve the efficiency +of model pretraining and performance of downstream tasks. Compared to RoBERTa-Large, a DeBERTa model trained on half of +the training data performs consistently better on a wide range of NLP tasks, achieving improvements on MNLI by +0.9% +(90.2% vs. 91.1%), on SQuAD v2.0 by +2.3% (88.4% vs. 90.7%) and RACE by +3.6% (83.2% vs. 86.8%). The DeBERTa code and +pre-trained models will be made publicly available at https://github.com/microsoft/DeBERTa.* + + +The following information is visible directly on the [original implementation +repository](https://github.com/microsoft/DeBERTa). DeBERTa v2 is the second version of the DeBERTa model. It includes +the 1.5B model used for the SuperGLUE single-model submission and achieving 89.9, versus human baseline 89.8. You can +find more details about this submission in the authors' +[blog](https://www.microsoft.com/en-us/research/blog/microsoft-deberta-surpasses-human-performance-on-the-superglue-benchmark/) + +New in v2: + +- **Vocabulary** In v2 the tokenizer is changed to use a new vocabulary of size 128K built from the training data. + Instead of a GPT2-based tokenizer, the tokenizer is now + [sentencepiece-based](https://github.com/google/sentencepiece) tokenizer. +- **nGiE(nGram Induced Input Encoding)** The DeBERTa-v2 model uses an additional convolution layer aside with the first + transformer layer to better learn the local dependency of input tokens. +- **Sharing position projection matrix with content projection matrix in attention layer** Based on previous + experiments, this can save parameters without affecting the performance. +- **Apply bucket to encode relative positions** The DeBERTa-v2 model uses log bucket to encode relative positions + similar to T5. +- **900M model & 1.5B model** Two additional model sizes are available: 900M and 1.5B, which significantly improves the + performance of downstream tasks. + +This model was contributed by `DeBERTa `__. This model TF 2.0 implementation was +contributed by `kamalkraj `__. The original code can be found `here +`__. + + +DebertaV2AdapterModel +~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.DebertaV2AdapterModel + :members: + :inherited-members: DebertaV2PreTrainedModel diff --git a/adapters/docs/classes/models/distilbert.rst b/adapters/docs/classes/models/distilbert.rst new file mode 100644 index 00000000..3fceae39 --- /dev/null +++ b/adapters/docs/classes/models/distilbert.rst @@ -0,0 +1,17 @@ +DistilBERT +=========== + +The DistilBERT model was proposed in the blog post +`Smaller, faster, cheaper, lighter: Introducing DistilBERT, a distilled version of BERT `__, +and the paper `DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter `__. +DistilBERT is a small, fast, cheap and light Transformer model trained by distilling Bert base. It has 40% less +parameters than `bert-base-uncased`, runs 60% faster while preserving over 95% of Bert's performances as measured on +the GLUE language understanding benchmark. + + +DistilBertAdapterModel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.DistilBertAdapterModel + :members: + :inherited-members: DistilBertPreTrainedModel diff --git a/adapters/docs/classes/models/electra.rst b/adapters/docs/classes/models/electra.rst new file mode 100644 index 00000000..d67a96d8 --- /dev/null +++ b/adapters/docs/classes/models/electra.rst @@ -0,0 +1,32 @@ +ELECTRA +====== + +The ELECTRA model was proposed in the paper `ELECTRA: Pre-training Text Encoders as Discriminators Rather Than +Generators `__. ELECTRA is a new pretraining approach which trains two +transformer models: the generator and the discriminator. The generator's role is to replace tokens in a sequence, and +is therefore trained as a masked language model. The discriminator, which is the model we're interested in, tries to +identify which tokens were replaced by the generator in the sequence. + +The abstract from the paper is the following: + +*Masked language modeling (MLM) pretraining methods such as BERT corrupt the input by replacing some tokens with [MASK] +and then train a model to reconstruct the original tokens. While they produce good results when transferred to +downstream NLP tasks, they generally require large amounts of compute to be effective. As an alternative, we propose a +more sample-efficient pretraining task called replaced token detection. Instead of masking the input, our approach +corrupts it by replacing some tokens with plausible alternatives sampled from a small generator network. Then, instead +of training a model that predicts the original identities of the corrupted tokens, we train a discriminative model that +predicts whether each token in the corrupted input was replaced by a generator sample or not. Thorough experiments +demonstrate this new pretraining task is more efficient than MLM because the task is defined over all input tokens +rather than just the small subset that was masked out. As a result, the contextual representations learned by our +approach substantially outperform the ones learned by BERT given the same model size, data, and compute. The gains are +particularly strong for small models; for example, we train a model on one GPU for 4 days that outperforms GPT (trained +using 30x more compute) on the GLUE natural language understanding benchmark. Our approach also works well at scale, +where it performs comparably to RoBERTa and XLNet while using less than 1/4 of their compute and outperforms them when +using the same amount of compute.* + +ElectraAdapterModel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.ElectraAdapterModel + :members: + :inherited-members: ElectraPreTrainedModel diff --git a/adapters/docs/classes/models/encoderdecoder.rst b/adapters/docs/classes/models/encoderdecoder.rst new file mode 100644 index 00000000..4b706738 --- /dev/null +++ b/adapters/docs/classes/models/encoderdecoder.rst @@ -0,0 +1,48 @@ +.. + Copyright 2020 The HuggingFace Team. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + specific language governing permissions and limitations under the License. + +Encoder Decoder Models +----------------------------------------------------------------------------------------------------------------------- + +The :class:`~transformers.EncoderDecoderModel` can be used to initialize a sequence-to-sequence model with any +pretrained autoencoding model as the encoder and any pretrained autoregressive model as the decoder. + +The effectiveness of initializing sequence-to-sequence models with pretrained checkpoints for sequence generation tasks +was shown in `Leveraging Pre-trained Checkpoints for Sequence Generation Tasks `__ by +Sascha Rothe, Shashi Narayan, Aliaksei Severyn. + +After such an :class:`~transformers.EncoderDecoderModel` has been trained/fine-tuned, it can be saved/loaded just like +any other models (see the examples for more information). + +An application of this architecture could be to leverage two pretrained :class:`~transformers.BertModel` as the encoder +and decoder for a summarization model as was shown in: `Text Summarization with Pretrained Encoders +`__ by Yang Liu and Mirella Lapata. + +.. note:: + Adapter implementation notes: + - Unlike other models, an explicit EncoderDecoderAdapterModel for the EncoderDecoderModel has not been implemented. This decision was made due to the lack of support for the EncoderDecoderModel in Hugging Face Transformers' ``AutoModel`` class. As a result, our ``AutoAdapterModel`` class would not support the EncoderDecoderAdapterModel either. Thus, to use an EncoderDecoderModel with *Adapters*, follow these steps: + + 1. First, create an :class:`~transformers.EncoderDecoderModel` instance, for example, using ``model = EncoderDecoderModel.from_encoder_decoder_pretrained("bert-base-uncased", "bert-base-uncased")``. + 2. Next, convert this model to an adapter model using the ``adapters.init(model)`` function. + + - Adapters can be added to both the encoder and the decoder. As usual, the ``leave_out`` parameter can be used to specify the layers where adapters are to be added. For the EncoderDecoderModel the layer IDs are counted seperately over the encoder and decoder starting from 0. Thus, specifying ``leave_out=[0,1]`` will leave out the first and second layer of the encoder and the first and second layer of the decoder. + +.. note:: + This class is nearly identical to the PyTorch implementation of DistilBERT in Huggingface Transformers. + For more information, visit `the corresponding section in their documentation `_. + + +EncoderDecoderModel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: transformers.EncoderDecoderModel + :members: forward, from_encoder_decoder_pretrained diff --git a/adapters/docs/classes/models/gpt2.rst b/adapters/docs/classes/models/gpt2.rst new file mode 100644 index 00000000..05100f0e --- /dev/null +++ b/adapters/docs/classes/models/gpt2.rst @@ -0,0 +1,23 @@ +OpenAI GPT2 +----------------------------------------------------------------------------------------------------------------------- + +OpenAI GPT-2 model was proposed in `Language Models are Unsupervised Multitask Learners +`_ by Alec +Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei and Ilya Sutskever. It's a causal (unidirectional) +transformer pretrained using language modeling on a very large corpus of ~40 GB of text data. + +The abstract from the paper is the following: + +*GPT-2 is a large transformer-based language model with 1.5 billion parameters, trained on a dataset[1] of 8 million +web pages. GPT-2 is trained with a simple objective: predict the next word, given all of the previous words within some +text. The diversity of the dataset causes this simple goal to contain naturally occurring demonstrations of many tasks +across diverse domains. GPT-2 is a direct scale-up of GPT, with more than 10X the parameters and trained on more than +10X the amount of data.* + + +GPT2AdapterModel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.GPT2AdapterModel + :members: + :inherited-members: GPT2PreTrainedModel diff --git a/adapters/docs/classes/models/gptj.rst b/adapters/docs/classes/models/gptj.rst new file mode 100644 index 00000000..31546df1 --- /dev/null +++ b/adapters/docs/classes/models/gptj.rst @@ -0,0 +1,24 @@ +EleutherAI GPT-J-6B +----------------------------------------------------------------------------------------------------------------------- + +EleutherAI GPT-J-6B is an open source, autoregressive language model created by a group of researchers called +EleutherAI. It's one of the most advanced alternatives to OpenAI's GPT-3 and performs well on a wide array of +natural language tasks such as chat, summarization, and question answering, to name a few. + +For a deeper dive, GPT-J is a transformer model trained using Ben Wang's Mesh Transformer JAX `Mesh Transformer JAX +`_. "GPT" is short for +generative pre-trained transformer, "J" distinguishes this model from other GPT models, and "6B" represents the 6 +billion trainable parameters. + +The model consists of 28 layers with a model dimension of 4096, and a feedforward dimension of 16384. The model +dimension is split into 16 heads, each with a dimension of 256. Rotary Position Embedding (RoPE) is applied to +64 dimensions of each head. The model is trained with a tokenization vocabulary of 50257, using the same set of +BPEs as GPT-2/GPT-3. + + +GPTJAdapterModel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.GPTJAdapterModel + :members: + :inherited-members: GPTJPreTrainedModel diff --git a/adapters/docs/classes/models/llama.rst b/adapters/docs/classes/models/llama.rst new file mode 100644 index 00000000..c7fffe18 --- /dev/null +++ b/adapters/docs/classes/models/llama.rst @@ -0,0 +1,21 @@ +LLaMA +----------------------------------------------------------------------------------------------------------------------- + +The LLaMA model was proposed in `LLaMA: Open and Efficient Foundation Language Models `__ by +Hugo Touvron, Thibaut Lavril, Gautier Izacard, Xavier Martinet, Marie-Anne Lachaux, Timothée Lacroix, Baptiste Rozière, Naman Goyal, +Eric Hambro, Faisal Azhar, Aurelien Rodriguez, Armand Joulin, Edouard Grave, Guillaume Lample. It is a collection of foundation language +models ranging from 7B to 65B parameters. + +The abstract from the paper is the following: + +*We introduce LLaMA, a collection of foundation language models ranging from 7B to 65B parameters. We train our models on trillions of tokens, +and show that it is possible to train state-of-the-art models using publicly available datasets exclusively, without resorting to proprietary +and inaccessible datasets. In particular, LLaMA-13B outperforms GPT-3 (175B) on most benchmarks, and LLaMA-65B is competitive with the best models, +Chinchilla-70B and PaLM-540B. We release all our models to the research community.* + +LlamaAdapterModel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.LlamaAdapterModel + :members: + :inherited-members: LlamaPreTrainedModel diff --git a/adapters/docs/classes/models/mbart.rst b/adapters/docs/classes/models/mbart.rst new file mode 100644 index 00000000..263ae456 --- /dev/null +++ b/adapters/docs/classes/models/mbart.rst @@ -0,0 +1,19 @@ +MBart +----------------------------------------------------------------------------------------------------------------------- + +The MBart model was presented in `Multilingual Denoising Pre-training for Neural Machine Translation +`_ by Yinhan Liu, Jiatao Gu, Naman Goyal, Xian Li, Sergey Edunov Marjan +Ghazvininejad, Mike Lewis, Luke Zettlemoyer. + +According to the abstract, MBART is a sequence-to-sequence denoising auto-encoder pretrained on large-scale monolingual +corpora in many languages using the BART objective. mBART is one of the first methods for pretraining a complete +sequence-to-sequence model by denoising full texts in multiple languages, while previous approaches have focused only +on the encoder, decoder, or reconstructing parts of the text. + + +MBartAdapterModel +~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.MBartAdapterModel + :members: + :inherited-members: MBartPreTrainedModel diff --git a/adapters/docs/classes/models/mt5.rst b/adapters/docs/classes/models/mt5.rst new file mode 100644 index 00000000..d0554205 --- /dev/null +++ b/adapters/docs/classes/models/mt5.rst @@ -0,0 +1,24 @@ +MT5 +===== + +The mT5 model was presented in `mT5: A massively multilingual pre-trained text-to-text transformer +`__ by Linting Xue, Noah Constant, Adam Roberts, Mihir Kale, Rami Al-Rfou, +Aditya Siddhant, Aditya Barua, Colin Raffel. + +The abstract from the paper is the following, + + +- The recent "Text-to-Text Transfer Transformer" (T5) leveraged a unified text-to-text format and scale to attain + state-of-the-art results on a wide variety of English-language NLP tasks. In this paper, we introduce mT5, a + multilingual variant of T5 that was pre-trained on a new Common Crawl-based dataset covering 101 languages. We detail + the design and modified training of mT5 and demonstrate its state-of-the-art performance on many multilingual + benchmarks. We also describe a simple technique to prevent "accidental translation" in the zero-shot setting, where a + generative model chooses to (partially) translate its prediction into the wrong language. All of the code and model + checkpoints used in this work are publicly available. + +MT5AdapterModel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.MT5AdapterModel + :members: + :inherited-members: MT5PreTrainedModel \ No newline at end of file diff --git a/adapters/docs/classes/models/roberta.rst b/adapters/docs/classes/models/roberta.rst new file mode 100644 index 00000000..93b6ab5b --- /dev/null +++ b/adapters/docs/classes/models/roberta.rst @@ -0,0 +1,14 @@ +RoBERTa +======== + +The RoBERTa model was proposed in `RoBERTa: A Robustly Optimized BERT Pretraining Approach `_ +by Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, +Veselin Stoyanov. It is based on Google's BERT model released in 2018. + + +RobertaAdapterModel +~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.RobertaAdapterModel + :members: + :inherited-members: RobertaPreTrainedModel diff --git a/adapters/docs/classes/models/t5.rst b/adapters/docs/classes/models/t5.rst new file mode 100644 index 00000000..085c5ba2 --- /dev/null +++ b/adapters/docs/classes/models/t5.rst @@ -0,0 +1,25 @@ +T5 +===== + +The T5 model was presented in `Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer +`__ by Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, +Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu. + +The abstract from the paper is the following, + + +- T5 is an encoder-decoder model pre-trained on a multi-task mixture of unsupervised and supervised tasks and for which + each task is converted into a text-to-text format. T5 works well on a variety of tasks out-of-the-box by prepending a + different prefix to the input corresponding to each task, e.g., for translation: *translate English to German: ...*, + for summarization: *summarize: ...*. + + For more information about which prefix to use, it is easiest to look into Appendix D of the `paper + `__. + + +T5AdapterModel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.T5AdapterModel + :members: + :inherited-members: T5PreTrainedModel diff --git a/adapters/docs/classes/models/vit.rst b/adapters/docs/classes/models/vit.rst new file mode 100644 index 00000000..28a44183 --- /dev/null +++ b/adapters/docs/classes/models/vit.rst @@ -0,0 +1,27 @@ +Vision Transformer (ViT) +========================= + +The Vision Transformer (ViT) model was proposed in `An Image is Worth 16x16 Words: Transformers for Image Recognition +at Scale `__ by Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk +Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob +Uszkoreit, Neil Houlsby. It's the first paper that successfully trains a Transformer encoder on ImageNet, attaining +very good results compared to familiar convolutional architectures. + + +The abstract from the paper is the following: + +*While the Transformer architecture has become the de-facto standard for natural language processing tasks, its +applications to computer vision remain limited. In vision, attention is either applied in conjunction with +convolutional networks, or used to replace certain components of convolutional networks while keeping their overall +structure in place. We show that this reliance on CNNs is not necessary and a pure transformer applied directly to +sequences of image patches can perform very well on image classification tasks. When pre-trained on large amounts of +data and transferred to multiple mid-sized or small image recognition benchmarks (ImageNet, CIFAR-100, VTAB, etc.), +Vision Transformer (ViT) attains excellent results compared to state-of-the-art convolutional networks while requiring +substantially fewer computational resources to train.* + +ViTAdapterModel +~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.ViTAdapterModel + :members: + :inherited-members: ViTPreTrainedModel diff --git a/adapters/docs/classes/models/xlmroberta.rst b/adapters/docs/classes/models/xlmroberta.rst new file mode 100644 index 00000000..dc4208c3 --- /dev/null +++ b/adapters/docs/classes/models/xlmroberta.rst @@ -0,0 +1,14 @@ +XLM-RoBERTa +============ + +The XLM-RoBERTa model was proposed in `Unsupervised Cross-lingual Representation Learning at Scale `__ +by Alexis Conneau, Kartikay Khandelwal, Naman Goyal, Vishrav Chaudhary, Guillaume Wenzek, Francisco Guzmán, +Edouard Grave, Myle Ott, Luke Zettlemoyer and Veselin Stoyanov. It is based on Facebook's RoBERTa model released in 2019. +It is a large multi-lingual language model, trained on 2.5TB of filtered CommonCrawl data. + + +XLMRobertaAdapterModel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.XLMRobertaAdapterModel + :members: diff --git a/adapters/docs/classes/models/xmod.rst b/adapters/docs/classes/models/xmod.rst new file mode 100644 index 00000000..1b922849 --- /dev/null +++ b/adapters/docs/classes/models/xmod.rst @@ -0,0 +1,23 @@ +X-MOD +===== + +.. important:: + The X-MOD implementation integrated into Transformers already supports adapters. + To make this implementation compatible with Adapters, a few changes were necessary: + + - Pre-trained X-MOD checkpoints require conversion before they can be used with Adapters. We provide pre-converted checkpoints for the following models: + - ``facebook/xmod-base`` -> ``AdapterHub/xmod-base`` with languages adapters split into separate repos (e.g. ``AdapterHub/xmod-base-af_ZA``) + - In Adapters, the X-MOD classes rely on the usual adapter methods instead of the custom methods introduced in Transformers, i.e.: + - ``set_active_adapters()`` instead of ``set_default_language()``. + - ``AdapterSetup`` context instead of ``lang_ids`` parameter. + +The abstract from the paper is the following: + +*Multilingual pre-trained models are known to suffer from the curse of multilinguality, which causes per-language performance to drop as they cover more languages. We address this issue by introducing language-specific modules, which allows us to grow the total capacity of the model, while keeping the total number of trainable parameters per language constant. In contrast with prior work that learns language-specific components post-hoc, we pre-train the modules of our Cross-lingual Modular (X-MOD) models from the start. Our experiments on natural language inference, named entity recognition and question answering show that our approach not only mitigates the negative interference between languages, but also enables positive transfer, resulting in improved monolingual and cross-lingual performance. Furthermore, our approach enables adding languages post-hoc with no measurable drop in performance, no longer limiting the model usage to the set of pre-trained languages.* + +XmodAdapterModel +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. autoclass:: adapters.XmodAdapterModel + :members: + :inherited-members: XmodPreTrainedModel diff --git a/adapters/docs/conf.py b/adapters/docs/conf.py new file mode 100644 index 00000000..417623a9 --- /dev/null +++ b/adapters/docs/conf.py @@ -0,0 +1,108 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/main/usage/configuration.html +import os +import sys +import re + + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +rootdir = os.path.join(os.getenv("SPHINX_MULTIVERSION_SOURCEDIR", default="."), "../src") +sys.path.insert(0, rootdir) + + +# -- Project information ----------------------------------------------------- + +project = "AdapterHub" +copyright = "2020-2024, AdapterHub Team" +author = "AdapterHub Team" + +docs_versions = [ + "adapters1.1.1", + "adapters2.3.0", + "adapters3.2.1", +] + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "myst_parser", + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", + "sphinx_copybutton", + "sphinx_multiversion", + "sphinx_markdown_tables", +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "README.md"] + +# MyST parser markdown options +myst_heading_anchors = 3 +myst_enable_extensions = [ + "dollarmath", +] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "sphinx_rtd_theme" + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ["_static"] + +html_logo = "logo.png" +html_favicon = "favicon.png" + + +# -- Options for sphinx-multiversion ------------------------------------------ + +# Whitelist pattern for tags (set to None to ignore all tags) +smv_tag_whitelist = r"({})".format("|".join([v.replace(".", r"\.") for v in docs_versions])) + +# Whitelist pattern for branches (set to None to ignore all branches) +smv_branch_whitelist = r"^main$" + +# Whitelist pattern for remotes (set to None to use local branches only) +smv_remote_whitelist = None + + +def skip_head_member(app, what, name, obj, skip, options): + if type(obj).__name__ == "function" and "inherited-members" in options and (m := re.match(r"add\_(.*)\_head$", name)): + cls_name = options["inherited-members"].replace("PreTrainedModel", "AdapterModel").replace("PretrainedModel", "AdapterModel") + cls = vars(sys.modules["adapters"])[cls_name] + # HACK: currently parses head type from name + head_type_str = m.group(1).replace("qa", "question_answering") + if head_type_str in cls.head_types: + return False + else: + return True + + return skip + + +def setup(app): + app.connect('autodoc-skip-member', skip_head_member) + app.add_config_value("recommonmark_config", {"enable_eval_rst": True}, True) + app.add_css_file("custom.css") diff --git a/adapters/docs/contributing.md b/adapters/docs/contributing.md new file mode 100644 index 00000000..c9fd05e8 --- /dev/null +++ b/adapters/docs/contributing.md @@ -0,0 +1,78 @@ +# Contributing to AdapterHub + +There are many ways in which you can contribute to AdapterHub and the `adapters` library. +This includes code contributions such as: +- implementing new adapter methods +- adding support for new Transformer +- fixing open issues + +as well as non-code contributions such as: +- training and uploading adapters to the Hub +- writing documentation and blog posts +- helping others with their issues and questions + +Whichever way you'd like to contribute, you're very welcome to do so! + +## Contributing to the `adapters` codebase + +### Setting up your dev environment + +To get started with writing code for `adapters`, you'd want to set up the project on a local development environment. + +`adapters` closely follows the original Hugging Face Transformers repository in many aspects. +This guide assumes that you want to set up your dev environment on a local machine and that you have basic knowledge of `git`. +Additionally, you require **Python 3.8** or above pre-installed to get started. + +In the following, we go through the setup procedure step by step: + +1. Fork [the `adapters` repository](https://github.com/adapter-hub/adapters) to get a local copy of the code under your user account. +2. Clone your fork to your local machine: + ``` + git clone --recursive git@github.com:/adapters.git + cd adapters + ``` + **Note:** The `--recursive` flag is important to initialize git submodules. +3. Create a virtual environment, e.g. via `virtualenv` or `conda`. +4. Install PyTorch, following the installation command for your environment [on their website](https://pytorch.org/get-started/locally/). +5. Install Hugging Face Transformers from the local git submodule: + ``` + pip install ./hf_transformers + ``` +6. Install `adapters` and required dev dependencies: + ``` + pip install -e ".[dev]" + ``` + +### Adding Adapter Methods + +How to integrate new efficient fine-tuning/ adapter methods to `adapters` is described at [https://docs.adapterhub.ml/contributing/adding_adapter_methods.html](https://docs.adapterhub.ml/contributing/adding_adapter_methods.html). + +### Adding Adapters to a Model + +How to add adapter support to a model type already supported by Hugging Face Transformers is described at [https://docs.adapterhub.ml/contributing/adding_adapters_to_a_model.html](https://docs.adapterhub.ml/contributing/adding_adapters_to_a_model.html). + +### Testing your changes to the codebase + +`adapters` provides multiple Makefile targets for easily running tests and repo checks. +Make sure these checks run without errors to pass the CI pipeline tasks when you open a pull request. + +To **run all tests** in the repository: +``` +make test +``` + +To **auto format code and imports** in the whole codebase: +``` +make style +``` +This will run `black` and `isort`. + +To **run all quality checks** ensuring code style and repo consistency: +``` +make quality +``` +This will run checks with `black`, `isort` and `flake8` as well as additional custom checks. + +## Contributing Adapters to the Hub + +How to make your own trained adapters accessible via AdapterHub is described at [https://docs.adapterhub.ml/hub_contributing.html](https://docs.adapterhub.ml/hub_contributing.html). diff --git a/adapters/docs/contributing/adding_adapter_methods.md b/adapters/docs/contributing/adding_adapter_methods.md new file mode 100644 index 00000000..af750a9e --- /dev/null +++ b/adapters/docs/contributing/adding_adapter_methods.md @@ -0,0 +1,101 @@ +# Adding Adapter Methods + +This document describes how different efficient fine-tuning methods can be integrated into the codebase of `adapters`. +It can be used as a guide to add new efficient fine-tuning/ adapter methods. + +Before we start to go into implementation details, first some important design philosophies of `adapters`: + +- _Adapters should integrate seamlessly with existing model classes_: This means (a) if a model architecture supports adapters, it should be possible to use them with all model classes of this architecture and (b) adapters should be entirely opt-in, i.e. the model classes still must work without adapters. +- _Copying original should be minimal_: `adapters` tries to avoid copying of the original HF code as far as possible. We extensively use Python mixins to achieve this. + +Now we highlight the most important components of integrating adapter methods into Transformer models. +Each integration is highly dependent on the specific details of the adapter methods. +Therefore, the described steps might not be applicable to each implementation. + +## Implementation + +❓ As adapter methods typically inject blocks of new parameters into an existing Transformer model, they mostly can be implemented using multiple blocks of classes deriving from `torch.nn.Module`. +These module classes then have to be inserted into the correct locations within the Transformer model implementation. +Thus, each adapter method implementation at least should provide two classes: + +- a configuration class deriving from `AdapterConfig` that provides attributes for all configuration options of the method +- a module class deriving from the abstract `AdapterLayerBase` that provides the method parameters and a set of standard adapter management functions + - modules supporting [adapter composition](https://docs.adapterhub.ml/adapter_composition.html) should instead derive from `ComposableAdapterLayerBase` + +### Configuration + +All configuration classes reside in `src/adapters/configuration/adapter_config.py`. +- To add a new configuration class for a new method, create a new subclass of [`AdapterConfig`](adapters.AdapterConfig). + Make sure to set the `architecture` attribute in your class. +- Finally, also make sure the config class is added to the `__init__.py` files in `src/adapters`. + +### Modeling + +All adapter method implementations reside in `src/adapters/methods`. + +#### For methods **without** composition support + +The [`AdapterLayerBase`](adapters.AdapterLayerBase) class from which any new adapter modules should derive resides in `src/adapters/methods/adapter_layer_base.py`. +- This abstract base class defines a set of methods that should be implemented by each deriving class, +including methods for adding, enabling and deleting adapter weights. These methods are marked as abstract in the base class. See [`AdapterLayerBase`](adapters.AdapterLayerBase) for details. +- Most importantly however, the module classes deriving from this base class should implement the forward pass through an adaptation component. +- The concrete implementation of these classes heavily depends on the specifics of the adapter method. + +#### For methods **with** composition support + +The [`ComposableAdapterLayerBase`](adapters.ComposableAdapterLayerBase) class (as subclass of [`AdapterLayerBase`](adapters.AdapterLayerBase)), which resides in `src/adapters/methods/adapter_layer_base.py` provides the basic skeleton for implementing adapter composition. +- Your deriving module class firstly should implement all methods required by [`AdapterLayerBase`](adapters.AdapterLayerBase). See section above for details. +- For adapter composition, the pre-implemented `compose()` method constitutes the main entry-point. This method should be called during the forward pass of your adapter module. +- `compose()` expects a `state` object, which is a generic named tuple object defined by your adapter method. This state object should hold all tensors (such as hidden states, attention masks etc.) and state attributes required for your adapter implementation. See `BottleneckState` for an example. +- Implementations for specific composition blocks are given in methods starting with `compose_`. Some composition blocks provide generic default implementations, some must be implemented by the deriving class if they should be supported. Make sure to list all supported composition blocks in the `supported_compositions` class attribute of your deriving module. +- In any case, a small set of helper methods should be implemented by any deriving module to support basic composition logic. These are marked as abstract methods in [`ComposableAdapterLayerBase`](adapters.ComposableAdapterLayerBase) and currently consist of the following: vslice(), pad_and_concat(), repeat(), mean(), compose_single(). See [`ComposableAdapterLayerBase`](adapters.ComposableAdapterLayerBase) for details. + +For a reference implementation, have a look at `BottleneckLayer` for bottleneck adapters. + +#### For all methods + +To actually make use of the newly implemented classes, it's finally necessary to integrate the forward calls to the modules in the actual model implementations. +- This, again, is highly dependent on how the adapter method interacts with the base model classes. Typically, module classes can be integrated either via mixins (see modules starting with "mixin" in `src/adapters/models`) or directly as submodules of the respective model components. +- The model class integration has to be repeated for each supported Transformer model, as they typically don't share a codebase. At this point it is often important to consider where the adapters need to be added to the transformer model and whether there is an implementation that does not require more copying of classes than the current implementation. +Please try to integrate any new adapter method into every model class when it's reasonable. +You can find all currently supported model classes at https://docs.adapterhub.ml/model_overview.html. + +**Additional things to consider** + +- New adapter methods typically also require some changes in the `AdapterLoader` class in `src/adapters/loading.py` (also see [here](https://docs.adapterhub.ml/extending.html#loading-custom-module-weights)). +- Depending on the method to be integrated, further changes in other classes might be necessary. + +## Testing + +❓ `adapters` provides a framework for testing adapter methods on implementing models in `tests`. +Tests for each adapter method are provided via a mixin class. +All test mixins derive from the common `AdapterMethodBaseTestMixin` class and reside in `tests/methods`. + +**📝 Steps** + +- Add a new `test_.py` module in `tests/methods`. + - This module should contain a `TestMixin` class deriving from `AdapterMethodBaseTestMixin` that implements typical methods of adding, loading and training modules of the new adapter method. + - Have a look at existing test mixins for reference. +- Next, add the newly implemented test mixin to the tests of all model types that support the new adapter method. + - Each model type has its own test class `tests/test_.py` that contains a `AdapterTest` class. + Add the new test mixin to the mixins of this class. + E.g., if the new method is supported by BERT, add the its test mixin to `BertAdapterTest`. + +## Documentation + +❓ The documentation for `adapters` lives in the `docs` folder. + +**📝 Steps** + +- Add the class documentation for the configuration class of the new method in `docs/classes/adapter_config.rst`. +- In `docs/overview.md`, add a new section for the new adapter method that describes the most important concepts. Please try to follow the general format of the existing methods. +- Add a new column in the table in `docs/model_overview.md` and check the models that support the new adapter method. + +Finally, please add a row for the new method in the table of supported methods under _Implemented Methods_ in the main `README.md` of this repository. + +## Training Example Adapters + +❓ To make sure the new adapter implementation works properly, it is useful to train some example adapters and compare the training results to full model fine-tuning and/or reference implementations. +Ideally, this would include training adapters on one (or more) tasks that are good for demonstrating the new method and uploading them to AdapterHub. + +Hugging Face already provides example training scripts for many tasks, some of them have already been modified to support adapter training (see https://github.com/Adapter-Hub/adapters/tree/main/examples). diff --git a/adapters/docs/contributing/adding_adapters_to_a_model.md b/adapters/docs/contributing/adding_adapters_to_a_model.md new file mode 100644 index 00000000..0c9164ff --- /dev/null +++ b/adapters/docs/contributing/adding_adapters_to_a_model.md @@ -0,0 +1,89 @@ +# Adding Adapters to a Model +This document gives an overview of how new model architectures of Hugging Face Transformers can be supported by `adapters`. +Before delving into implementation details, you should familiarize yourself with the main design philosophies of `adapters`: + +- _Adapters should integrate seamlessly with existing model classes_: If a model architecture supports adapters, it should be possible to use them with all model classes of this architecture. +- _Copied code should be minimal_: `adapters` extensively uses Python mixins to add adapter support to HF models. Functions that cannot be sufficiently modified by mixins are copied and then modified. Try to avoid copying functions as much as possible. + +## Relevant Classes +Adding adapter support to an existing model architecture requires modifying some parts of the model forward pass logic. These modifications are realized by the four files in the `src/adapters/models//` directory. Let's examine the purpose of these files in the example of BERT. It's important to note that we are adapting the original Hugging Face model, implemented in [transformers/models/bert/modeling_bert.py](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bert/modeling_bert.py). The files in `src/adapters/models/bert/` are: + +1. `src/adapters/models/bert/mixin_bert.py`: +This file contains mixins for each class we want to change. For example, in the `BertSelfAttention` class, we need to make changes for LoRA and Prefix Tuning. For this, we create a `BertSelfAttentionAdaptersMixin` to implement these changes. We will discuss how this works in detail below. +2. `src/adapters/models/bert/modeling_bert.py`: +For some classes of the BERT implementation (e.g. `BertModel` or `BertLayer`) the code can be sufficiently customized via mixins. For other classes (like `BertSelfAttention`), we need to edit the original code directly. These classes are copied into `src/adapters/models/bert/modeling_bert.py` and modified. +3. `src/adapters/models/bert/adapter_model.py`: +In this file, the adapter model class is defined. This class allows flexible adding of and switching between multiple prediction heads of different types. This looks about the same for each model, except that each model has different heads and thus different `add_..._head()` functions. +4. `src/adapters/models/bert/__init__.py`: Defines Python's import structure. + + +## Implementation Steps 📝 +Now that we have discussed the purpose of every file in `src/adapters/models//`, we go through the integration of adapters into an existing model architecture step by step. **The following steps might not be applicable to every model architecture.** + +1. **Files:** + - Create the `src/adapters/models//` directory and in it the 4 files: `mixin_.py`, `modeling_.py` `adapter_model.py` and `__init__.py` +2. **Mixins:** + - In `src/adapters/models//mixin_.py`, create mixins for any class you want to change and where you can't reuse an existing mixin from another class. + - To figure out which classes to change, think about where to insert LoRA, Prefix Tuning, and bottleneck adapters. + - You can use similar model implementations for guidance. + - Often, existing mixins of another class can be reused. E.g. `BertLayer`, `RobertaLayer`, `XLMRobertaLayer`, `DebertaLayer`, `DebertaV2Layer` and `BertGenerationLayer` (all models derived from BERT) use the `BertLayerAdaptersMixin`. + - To additionally support Prefix Tuning, it's necessary to apply the forward call to the `PrefixTuningLayer` module in the respective attention layer (see step 3 for how to modify the code of an Hugging Face class). + - Make sure the calls to `bottleneck_layer_forward()` are added in the right places. + - The mixin for the whole base model class (e.g., `BertModel`) should derive from `ModelBaseAdaptersMixin` and (if possible) `EmbeddingAdaptersMixin` and/or `InvertibleAdaptersMixin`. This mixin should at least implement the `iter_layers()` method but might require additional modifications depending on the architecture. + - If the model is a combination of different models, such as the EncoderDecoderModel, use `ModelUsingSubmodelsAdaptersMixin` instead of `ModelBaseAdaptersMixin`. +3. **Copied functions:** + - For those classes where the mixin is not enough to realize the wanted behavior, you must: + - Create a new class in `src/adapters/models//modeling_.py` with the name `WithAdapters`. This class should derive from the corresponding mixin and HF class. + - Copy the function you want to change into this class and modify it. + - e.g., the `forward` method of the `BertSelfAttention` class must be adapted to support prefix tuning. We therefore create a class `BertSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, BertSelfAttention)`, copy the forward method into it and modify it. +4. **Modify MODEL_MIXIN_MAPPING** + - For each mixin whose class was not copied into `modeling_.py`, add the mixin/class combination into `MODEL_MIXIN_MAPPING` in the file `src/adapters/models/__init__.py`. +5. **Create the adapter model:** + - Adapter-supporting architectures should provide a new model class `AdapterModel`. This class allows flexible adding of and switching between multiple prediction heads of different types. + - This is done in the `adapter_model.py` file: + - This module should implement the `AdapterModel` class, deriving from `ModelWithFlexibleHeadsAdaptersMixin` and `PreTrainedModel`. + - In the model class, add methods for those prediction heads that make sense for the new model architecture. + - Again, have a look at existing implementations. + - Add `AdapterModel` to the `ADAPTER_MODEL_MAPPING_NAMES` mapping in `src/adapters/models/auto/adapter_model.py` and to `src/adapters/__init__.py`. + - Define the classes to be added to Python's import structure in `src/adapters/models//__init__.py`. This will likely only be the `AdapterModel`. +6. **Adapt the config classes:** + - Adapt the config class to the requirements of adapters in `src/transformers/adapters/wrappers/configuration.py`. + - There are some naming differences in the config attributes of different model architectures. The adapter implementation requires some additional attributes with a specific name to be available. These currently are `num_attention_heads`, `hidden_size`, `hidden_dropout_prob` and `attention_probs_dropout_prob` as in the `BertConfig` class. + If your model config does not provide these, add corresponding mappings to `CONFIG_CLASS_KEYS_MAPPING`. + + +### Additional (optional) implementation steps 📝 + +- Parallel adapter inference via `Parallel` composition block (cf. [documentation](https://docs.adapterhub.ml/adapter_composition.html#parallel), [PR#150](https://github.com/Adapter-Hub/adapters/pull/150)). +- Provide mappings for an architecture's existing (static) prediction heads into `adapters` flex heads (cf. [implementation](https://github.com/adapter-hub/adapters/blob/main/src/adapters/head_utils.py#L11)). + +## Testing + +❓ In addition to the general Hugging Face model tests, there are adapter-specific test cases. All tests are executed from the `tests` folder. You need to add two different test classes. + +**📝 Steps** +1. Add a new `test_.py` module in `tests/` + - This file is used to test that everything related to the usage of adapters (adding, removing, activating, ...) works. + - This module typically holds 2 test classes and a test base class: + - `AdapterTestBase`: This class contains the `tokenizer_name`, `config_class` and `config`. + - `AdapterTest` derives from a collection of test mixins that hold various adapter tests (depending on the implementation). + - (optionally) `ClassConversionTest` runs tests for correct class conversion if conversion of prediction heads is implemented. +2. Add a new `test_.py` module in `tests/models/` + - This file is used to test the AdapterModel class. + - This module typically holds 1 test class with the name `AdapterModelTest` + - `AdapterModelTest` derives directly from Hugging Face's existing model test class `ModelTest` and adds `AdapterModel` as a class to test. + +## Documentation + +❓ The documentation for `adapters` lives in the `docs` folder. + +**📝 Steps** + +- Add `docs/classes/models/.rst` (oriented at the doc file in the HF docs). Make sure to include `AdapterModel` autodoc. Finally, list the file in `index.rst`. +- Add a new row for the model in the model table of the overview page at `docs/model_overview.md`, listing all the methods implemented by the new model. + +## Training Example Adapters + +❓ To make sure the new adapter implementation works properly, it is useful to train some example adapters and compare the training results to full model fine-tuning. Ideally, this would include training adapters on one (or more) tasks that are good for demonstrating the new model architecture (e.g. GLUE benchmark for BERT, summarization for BART) and uploading them to AdapterHub. + +We provide training scripts for many tasks here: [https://github.com/Adapter-Hub/adapters/tree/main/examples/pytorch/](https://github.com/Adapter-Hub/adapters/tree/main/examples/pytorch/) diff --git a/adapters/docs/embeddings.md b/adapters/docs/embeddings.md new file mode 100644 index 00000000..17146150 --- /dev/null +++ b/adapters/docs/embeddings.md @@ -0,0 +1,47 @@ +# Embeddings + +With `adapters`, we support dynamically adding, loading, and deleting of `Embeddings`. This section +will give you an overview of these features. + +## Adding and Deleting Embeddings +The methods for handling embeddings are similar to the ones handling adapters. To add new embeddings we call +`add_embeddings`. This adds new embeddings for the vocabulary of the `tokenizer`. +In some cases, it might be useful to initialize embeddings of tokens to the ones of another embeddings module. If a +`reference_embedding` and `reference_tokenizer` are provided all embeddings for tokens that are present in both embeddings are initialized to the embedding provided by the `reference_embedding`. The new embedding will be created and set as the active embedding. If you are unsure which embedding +is currently active, the `active_embeddings` property contains the currently active embedding. + +```python +model.add_embeddings('name', tokenizer, reference_embedding='default', reference_tokenizer=reference_tokenizer) +embedding_name = model.active_embeddings +``` + +The original embedding of the transformers model is always available under the name `"default"`. To set it as the active +embedding simply call the `set_active_embedding('name')` method. +```python +model.set_active_embeddings("default") +``` +Similarly, all other embeddings can be set as active by passing their name to the `set_active_embedding` method. + +To delete an embedding that is no longer needed, we can call the `delete_embeddings` method with the name of the adapter +we want to delete. However, you cannot delete the default embedding. +```python +model.delete_embeddings('name') +``` +Please note, that if the active embedding is deleted the default embedding is set as the active embedding. + +## Saving and Loading Embeddings +You can save the embeddings by calling `save_embeddings('path/to/dir', 'name')` and load them with `load_embeddings('path/to/dir', 'name')`. + +```python +model.save_embeddings(path, 'name') +model.load_embeddings(path, 'reloaded_name') +``` + +The path needs to be to a directory in which the weights of the embedding will be saved. + +You can also save and load the tokenizer +with the embedding by passing the tokenizer to `save_embeddings`. +```python +model.save_embeddings(path, 'name', tokenizer) +loaded_tokenizer = model.load_embeddings(path, 'name') +``` diff --git a/adapters/docs/extending.md b/adapters/docs/extending.md new file mode 100644 index 00000000..290c09b9 --- /dev/null +++ b/adapters/docs/extending.md @@ -0,0 +1,34 @@ +# Extending the Library + +## Integrating new Transformer models +Currently, not all model types included in Hugging Face's `transformers` support adapters yet. +However, it is possible to add the existing adapter implementation to new models. +For detailed instructions, see [Adding Adapters to a Model](https://docs.adapterhub.ml/contributing/adding_adapters_to_a_model.html). + +## Loading custom module weights + +`adapters` provides support for saving and loading adapter and prediction head modules from the local file system or the Hub out of the box. +However, countless additional module integrations into language models are thinkable. +To provide a basis for such new custom model plugins, `adapters` integrates a basic mechanism to save and load custom weights. + +All adapter and head module weights are extracted, saved and loaded by implementations of the `WeightsLoader` class, the two preincluded being `AdapterLoader` and `PredictionHeadLoader`. To add basic saving and loading functionalities to your custom module weights, you can implement a new subclass of `WeightsLoader`. The two required abstract methods to be implemented are: + +- `filter_func(self, name: str) -> Callable[[str], bool]`: The callable returned by this method is used to extract the module weights to be saved or loaded based on their names. + +- `rename_func(self, old_name: str, new_name: str) -> Callable[[str], str]`: The callable returned by this method is used to optionally rename the module weights after loading. + +For more advanced functionalities, you may also want to override the `save()` and `load()` method. + +Using the custom loader class, weights can now be saved with: +```python +loader = MyCustomWeightsLoader(model) +loader.save("path/to/save/dir", "custom_weights_name") +``` + +You can also upload these weights to the Hub and then load them from there together with an adapter: +```python +model.load_adapter( + "adapter_name", + custom_weights_loaders=[MyCustomWeightsLoader] +) +``` diff --git a/adapters/docs/hub_contributing.md b/adapters/docs/hub_contributing.md new file mode 100644 index 00000000..4569d3cd --- /dev/null +++ b/adapters/docs/hub_contributing.md @@ -0,0 +1,95 @@ +# Contributing Adapters to the Hub + +```{eval-rst} +.. note:: + This document describes how to contribute adapters via the AdapterHub `Hub repository `_. See `Integration with Hugging Face's Model Hub `_ for uploading adapters via the Hugging Face Model Hub. +``` + +You can easily add your own pre-trained adapter modules or architectures to Adapter Hub via our [Hub GitHub repo](https://github.com/adapter-hub/hub). Please make sure to follow the steps below corresponding to the type of contribution you would like to make. + +## Getting started + +Before making any kind of contribution to _Adapter-Hub_, you will first need to set up your own fork of the _Hub_ repository to be able to open a pull request later on: + +1. Fork [the Hub repository](https://github.com/adapter-hub/hub) by clicking the 'Fork' button on the repository's page. This creates a clone of the repository under your GitHub user. + +2. Clone your fork to your local file system: + ```bash + git clone git@github.com:/Hub.git + cd Hub + ``` + +3. Set up the Python environment. This includes the `adapter-hub-cli` which helps in preparing your adapters for the Hub. + ```bash + pip install -U ./scripts/. + ``` + +As you're fully set up now, you can proceed on the specific steps if your contribution: + +- [Contributing Adapters to the Hub](#contributing-adapters-to-the-hub) + - [Getting started](#getting-started) + - [Add your pre-trained adapter](#add-your-pre-trained-adapter) + - [Add a new adapter architecture](#add-a-new-adapter-architecture) + - [Add a new task or subtask](#add-a-new-task-or-subtask) + +## Add your pre-trained adapter + +You can add your pre-trained adapter modules to the Hub so others can load them via `model.load_adapter()`. + +_Note that we currently do not provide an option to host your module weights. Make sure you find an appropriate place to host them yourself or consider uploading your adapter to the huggingface hub!_ + +Let's go through the upload process step by step: + +1. After the training of your adapter has finished, we first would want to save its weights to the local file system: + ```python + model.save_adapter("/path/to/adapter/folder", "your-adapter-name") + ``` + +2. Pack your adapter with the `adapter-hub-cli`. Start the CLI by giving it the path to your saved adapter: + ``` + adapter-hub-cli pack /path/to/adapter/folder + ``` + `adapter-hub-cli` will search for available adapters in the path you specify and interactively lead you through the packing process. + + ```{eval-rst} + .. note:: + The configuration of the adapter is specified by an identifier string in the YAML file. This string should refer to an adapter architecture available in the Hub. If you use a new or custom architecture, make sure to also `add an entry for your architecture <#add-a-new-adapter-architecture>`_ to the repo. + ``` + +3. After step 2, a zipped adapter package and a corresponding YAML adapter card should have been created. + - Upload the zip package to your server space and move the YAML file into a subfolder for your user/ organization in the `adapters` folder of the cloned Hub repository. + - In the YAML adapter card, consider filling out some additional fields not filled out automatically, e.g. a description of your adapter is very useful! + Especially make sure to set a download URL pointing to your uploaded zip package. + +4. (optional) After you completed filling the YAML adapter card, you can perform some validation checks to make sure everything looks right: + ``` + adapter-hub-cli check adapters//.yaml + ``` + +5. Almost finished: Now create [a pull request](https://github.com/Adapter-Hub/Hub/pulls) from your fork back to our repository. + + _We will perform some automatic checks on your PR to make sure the files you added are correct and the provided download links are valid. Keep an eye on the results of these checks!_ + +6. That's it! Your adapter will become available via our website as soon as your pull request is accepted! 🎉🚀 + + +## Add a new adapter architecture + +The `adapters` libraries has some common adapter configurations preincluded. However, if you want to add a new adapter using a different architecture, you can easily do this by adding the architecture configuration to the Hub repo: + +1. After setting up your repository as described in the [Getting started section](#getting-started), create a new YAML file for your architecture in the `architectures` folder. + +2. Fill in the full configuration dictionary of your architecture and some additional details. You can use [our template for architecture files](https://github.com/adapter-hub/hub/blob/main/TEMPLATES/adapter.template.yaml). + +3. Create [a pull request](https://github.com/Adapter-Hub/Hub/pulls) from your fork back to our repository. 🚀 + + +## Add a new task or subtask + +Every adapter submitted to the Hub is identified by the task and the dataset (subtask) it was trained on. You're very encouraged to add additional information on the task and dataset of your adapter if they are not available yet. You can explore all currently available tasks at [https://adapterhub.ml/explore](https://adapterhub.ml/explore). To add a new task or subtask: + +1. After setting up your repository as described in the [Getting started section](#getting-started), create a new YAML file for the task or subtask you would like to add in the `tasks` or `subtasks` folder. + +2. Based on [our template for task files](https://github.com/adapter-hub/hub/blob/main/TEMPLATES/task.template.yaml) or [subtask files](https://github.com/adapter-hub/hub/blob/main/TEMPLATES/task.template.yaml), fill in some description and details on the task. + +3. Create [a pull request](https://github.com/Adapter-Hub/Hub/pulls) from your fork back to our repository. 🚀 diff --git a/adapters/docs/huggingface_hub.md b/adapters/docs/huggingface_hub.md new file mode 100644 index 00000000..f31c1d8c --- /dev/null +++ b/adapters/docs/huggingface_hub.md @@ -0,0 +1,72 @@ +# Integration with Hugging Face's Model Hub + +```{eval-rst} +.. figure:: img/hfhub.svg + :align: center + :alt: Hugging Face Hub logo. +``` + +You can download adapters from and upload them to [Hugging Face's Model Hub](https://huggingface.co/models). +This document describes how to interact with the Model Hub when working with adapters. + +## Downloading from the Hub + +The Hugging Face Model Hub already provides a few pre-trained adapters available for download. +To search for available adapters, use the _Adapter Transformers_ library filter on the Model Hub website or use this link: [https://huggingface.co/models?filter=adapters](https://huggingface.co/models?filter=adapters). +Alternatively, all adapters on the Hugging Face Model Hub are also listed on [https://adapterhub.ml/explore](https://adapterhub.ml/explore) together with all adapters directly uploaded to AdapterHub. + +After you have found an adapter you would like to use, loading it into a Transformer model is very similar to [loading adapters from AdapterHub](loading.md). +For example, for loading and activating the adapter [`AdapterHub/roberta-base-pf-sick`](https://huggingface.co/AdapterHub/roberta-base-pf-sick), write: +```python +from adapters import AutoAdapterModel + +model = AutoAdapterModel.from_pretrained("roberta-base") +adapter_name = model.load_adapter("AdapterHub/roberta-base-pf-sick", source="hf") +model.active_adapters = adapter_name +``` +Note that `source="hf"` is the only change from loading an adapter from AdapterHub. + +## Uploading to the Hub + +Hugging Face's Model Hub provides a convenient way for everyone to upload their pre-trained models and share them with the world. +Of course, this is also possible with adapters now! +In the following, we'll go through the fastest way of uploading an adapter directly via Python in the `adapters` library. +For more options and information, e.g. for managing models via the CLI and Git, refer to [HugginFace's documentation](https://huggingface.co/transformers/model_sharing.html). + +1. **Prepare access credentials**: Before being able to push to the Hugging Face Model Hub for the first time, we have to store our access token in the cache. + This can be done via the `transformers-cli` by running: + ``` + transformers-cli login + ``` + +2. **Push an adapter**: Next, we can proceed to upload our first adapter. + Let's say we have a standard pre-trained Transformers model with an existing adapter named `awesome_adapter` (e.g. added via `model.add_adapter("awesome_adapter")` and [trained](training.md) afterwards). + We can now push this adapter to the Model Hub using `model.push_adapter_to_hub()` like this: + ```python + model.push_adapter_to_hub( + "my-awesome-adapter", + "awesome_adapter", + adapterhub_tag="sentiment/imdb", + datasets_tag="imdb" + ) + ``` + This will create a repository `my-awesome-adapter` under your username, generate a default adapter card as `README.md` and upload the adapter named `awesome_adapter` together with the adapter card to the new repository. + `adapterhub_tag` and `datasets_tag` provide additional information for categorization. + + ```{eval-rst} + .. important:: + All adapters uploaded to Hugging Face's Model Hub are automatically also listed on AdapterHub.ml. Thus, for better categorization, either ``adapterhub_tag`` or ``datasets_tag`` is required when uploading a new adapter to the Model Hub. + + - ``adapterhub_tag`` specifies the AdapterHub categorization of the adapter in the format ``/`` according to the tasks and subtasks shown on https://adapterhub.ml/explore. For more, see `Add a new task or subtask `_. + - ``datasets_tag`` specifies the dataset the adapter was trained on as an identifier from `Hugging Face Datasets `_. + ``` + +Voilà! Your first adapter is on the Hugging Face Model Hub. +Anyone can now run: +``` +model.load_adapter("/my-awesome-adapter", source="hf") +``` + +To update your adapter, simply run `push_adapter_to_hub()` with the same repository name again. This will push a new commit to the existing repository. + +You can find the full documentation of `push_adapter_to_hub()` [here](adapters.hub_mixin.PushAdapterToHubMixin.push_adapter_to_hub). diff --git a/adapters/docs/img/hfhub.svg b/adapters/docs/img/hfhub.svg new file mode 100644 index 00000000..a3d076dd --- /dev/null +++ b/adapters/docs/img/hfhub.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adapters/docs/index.rst b/adapters/docs/index.rst new file mode 100644 index 00000000..4d13a194 --- /dev/null +++ b/adapters/docs/index.rst @@ -0,0 +1,168 @@ +.. adapters documentation main file, created by + sphinx-quickstart on Sat Apr 18 10:21:23 2020. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +AdapterHub Documentation +================================================ + +.. note:: + This documentation is based on the new *Adapters* library. + + The documentation based on the legacy *adapter-transformers* library can be found at: `https://docs-legacy.adapterhub.ml `_. + +*AdapterHub* is a framework simplifying the integration, training and usage of adapters and other efficient fine-tuning methods for Transformer-based language models. +For a full list of currently implemented methods, see the `table in our repository `_. + +The framework consists of two main components: + +.. list-table:: + :widths: 50 50 + :header-rows: 1 + + * - `Adapters `_ + - `AdapterHub.ml `_ + * - an add-on to Hugging Face's `Transformers `_ library that adds adapters into transformer models + - a central collection of pre-trained adapter modules + +Currently, we support the PyTorch versions of all models as listed on the `Model Overview `_ page. + +.. toctree:: + :maxdepth: 1 + :caption: Getting Started + + installation + quickstart + training + transitioning + +.. toctree:: + :maxdepth: 2 + :caption: Adapter Methods + + overview + methods + method_combinations + +.. toctree:: + :maxdepth: 2 + :caption: Advanced + + adapter_composition + prediction_heads + embeddings + extending + +.. toctree:: + :maxdepth: 2 + :caption: Loading and Sharing + + loading + hub_contributing + huggingface_hub + +.. toctree:: + :maxdepth: 1 + :caption: Supported Models + + model_overview + classes/models/albert + classes/models/auto + classes/models/bart + classes/models/beit + classes/models/bert + classes/models/bert-generation + classes/models/clip + classes/models/deberta + classes/models/deberta_v2 + classes/models/distilbert + classes/models/electra + classes/models/encoderdecoder + classes/models/gpt2 + classes/models/gptj + classes/models/llama + classes/models/mbart + classes/models/roberta + classes/models/t5 + classes/models/vit + classes/models/xlmroberta + classes/models/xmod + +.. toctree:: + :maxdepth: 1 + :caption: Adapter-Related Classes + + classes/adapter_config + classes/model_adapters_config + classes/adapter_layer + classes/model_mixins + classes/adapter_training + classes/adapter_utils + +.. toctree:: + :maxdepth: 1 + :caption: Contributing + + contributing + contributing/adding_adapter_methods + contributing/adding_adapters_to_a_model + +Citation +======== + +If you use _Adapters_ in your work, please consider citing our library paper `Adapters: A Unified Library for Parameter-Efficient and Modular Transfer Learning ` + + +.. code-block:: bibtex + + @inproceedings{poth-etal-2023-adapters, + title = "Adapters: A Unified Library for Parameter-Efficient and Modular Transfer Learning", + author = {Poth, Clifton and + Sterz, Hannah and + Paul, Indraneil and + Purkayastha, Sukannya and + Engl{\"a}nder, Leon and + Imhof, Timo and + Vuli{\'c}, Ivan and + Ruder, Sebastian and + Gurevych, Iryna and + Pfeiffer, Jonas}, + booktitle = "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations", + month = dec, + year = "2023", + address = "Singapore", + publisher = "Association for Computational Linguistics", + url = "https://aclanthology.org/2023.emnlp-demo.13", + pages = "149--160", + } + + +Alternatively, for the predecessor `adapter-transformers`, the Hub infrastructure and adapters uploaded by the AdapterHub team, please consider citing our initial paper: `AdapterHub: A Framework for Adapting Transformers `_ + + +.. code-block:: bibtex + + @inproceedings{pfeiffer2020AdapterHub, + title={AdapterHub: A Framework for Adapting Transformers}, + author={Jonas Pfeiffer and + Andreas R\"uckl\'{e} and + Clifton Poth and + Aishwarya Kamath and + Ivan Vuli\'{c} and + Sebastian Ruder and + Kyunghyun Cho and + Iryna Gurevych}, + booktitle={Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP 2020): Systems Demonstrations}, + year={2020}, + address = "Online", + publisher = "Association for Computational Linguistics", + url = "https://www.aclweb.org/anthology/2020.emnlp-demos.7", + pages = "46--54", + } + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` diff --git a/adapters/docs/installation.md b/adapters/docs/installation.md new file mode 100644 index 00000000..c3b8468e --- /dev/null +++ b/adapters/docs/installation.md @@ -0,0 +1,40 @@ +# Installation + +The `adapters` package is designed as an add-on for Hugging Face's Transformers library. +It currently supports Python 3.8+ and PyTorch 1.10+. You will have to [install PyTorch](https://pytorch.org/get-started/locally/) first. + +```{eval-rst} +.. important:: + Each ``adapters`` version is built for one specific version of Transformers. + While using a different version of Transformers with an ``adapters`` might work, it is highly recommended to use the intended version. + ``adapters`` will automatically install the correct Transformers version if not installed. +``` + +## Using pip + +### From PyPI + +The simplest way of installation is by using pip to install the package from the Python Package Index: + +``` +pip install adapters +``` + +### From GitHub + +You can also install the latest development version directly from our GitHub repository: + +``` +pip install git+https://github.com/adapter-hub/adapters.git +``` + +## From repository + +Alternatively, you can clone the repository first and install the package from source. +This allows you to run the included example scripts directly: + +``` +git clone https://github.com/adapter-hub/adapters.git +cd adapters +pip install . +``` diff --git a/adapters/docs/loading.md b/adapters/docs/loading.md new file mode 100644 index 00000000..1c9eac8a --- /dev/null +++ b/adapters/docs/loading.md @@ -0,0 +1,134 @@ +# Loading Pre-Trained Adapters + +## Finding pre-trained adapters + +**[AdapterHub.ml](https://adapterhub.ml/explore)** provides a central collection of all pre-trained adapters uploaded via [our Hub repository](https://github.com/adapter-hub/hub) or Hugging Face's [Model Hub](https://huggingface.co/models). +You can easily find pre-trained adapters for your task of interest along with all relevant information and code snippets to get started (also see below). + +Alternatively, [`list_adapters()`](adapters.utils.list_adapters) provides a programmatical way of accessing all available pre-trained adapters. +This will return an [`AdapterInfo`](adapters.utils.AdapterInfo) object for each retrieved adapter. +E.g., we can use it to retrieve information for all adapters trained for a specific model: + +```python +from adapters import list_adapters + +# source can be "ah" (AdapterHub), "hf" (huggingface.co) or None (for both, default) +adapter_infos = list_adapters(source="ah", model_name="bert-base-uncased") + +for adapter_info in adapter_infos: + print("Id:", adapter_info.adapter_id) + print("Model name:", adapter_info.model_name) + print("Uploaded by:", adapter_info.username) +``` + +In case the adapter ID is known, information for a single adapter can also be retrieved via [`get_adapter_info()`](adapters.utils.get_adapter_info): + +```python +adapter_info = get_adapter_info("@ukp/bert-base-uncased_sentiment_sst-2_pfeiffer", source="ah") + +print("Id:", adapter_info.adapter_id) +print("Model name:", adapter_info.model_name) +print("Uploaded by:", adapter_info.username) +``` + +## Using pre-trained adapters in your code + +Suppose we have loaded a pre-trained transformer model from Hugging Face, e.g. BERT, and initialized it for adding adapters: + +```python +from transformers import BertModel +import adapters + +model = BertModel.from_pretrained('bert-base-uncased') +adaptrers.init(model) +``` + +We can now easily load a pre-trained adapter module from Adapter Hub by its identifier using the [`load_adapter()`](adapters.ModelWithHeadsAdaptersMixin.load_adapter) method: + +```python +adapter_name = model.load_adapter('sst-2') +``` + +In the minimal case, that's everything we need to specify to load a pre-trained task adapter for sentiment analysis, trained on the `sst-2` dataset using BERT base and a suitable adapter configuration. +The name of the adapter is returned by [`load_adapter()`](adapters.ModelWithHeadsAdaptersMixin.load_adapter), so we can [activate it](adapter_composition.md) in the next step: +```python +model.set_active_adapters(adapter_name) +``` + +As the second example, let's have a look at how to load an adapter based on the [`AdapterInfo`](adapters.utils.AdapterInfo) returned by the [`list_adapters()`](adapters.utils.list_adapters) method from [above](#finding-pre-trained-adapters): +```python +from adapters import AutoAdapterModel, list_available_adapters + +adapter_infos = list_available_adapters(source="ah") +# Take the first adapter info as an example +adapter_info = adapter_infos[0] + +model = AutoAdapterModel.from_pretrained(adapter_info.model_name) +model.load_adapter(adapter_info.adapter_id, source=adapter_info.source) +``` + +### Advanced usage of `load_adapter()` + +To examine what's happening underneath in a bit more detail, let's first write out the full method call with all relevant arguments explicitly stated: + +```python +model.load_adapter( + 'sst-2', + config='pfeiffer', + model_name='bert-base-uncased', + version=1, + load_as='sst', + source='ah' +) +``` + +We will go through the different arguments and their meaning one by one: + +- The first argument passed to the method specifies the name of the adapter we want to load from Adapter-Hub. The library will search for an available adapter module with this name that matches the model architecture as well as the adapter type and configuration we requested. As the identifier `sst-2` resolves to a unique entry in the Hub, the corresponding adapter can be successfully loaded based on this information. To get an overview of all available adapter identifiers, please refer to [the Adapter-Hub website](https://adapterhub.ml/explore). The different format options of the identifier string are further described in [How adapter resolving works](#how-adapter-resolving-works). + +- The `config` argument defines the adapter architecture the loaded adapter should have. +The value of this parameter can be either a string identifier for one of the predefined architectures, the identifier of an architecture available in the Hub or a dictionary representing a full adapter configuration. +Based on this information, the library will only search for pre-trained adapter modules having the same configuration. + +- Adapter modules trained on different pre-trained language models in general can not be used interchangeably. +Therefore, we need to make sure to load an adapter matching the language model we are using. +If possible, the library will infer the name of the pre-trained model automatically (e.g. when we use `from_pretrained('identifier')` to load a model from Hugging Face). However, if this is not the case, we must specify the name of the host model in the `model_name` parameter. + +- There could be multiple versions of the same adapter available. To load a specific version, use the `version` parameter. + +- By default, the `load_adapter()` method will add the loaded adapter using the identifier string given as the first argument. +To load the adapter using a custom name, we can use the `load_as` parameter. + +- Finally the `source` parameter provides the possibility to load adapters from alternative adapter repositories. +Besides the default value `ah`, referring to AdapterHub, it's also possible to pass `hf` to [load adapters from Hugging Face's Model Hub](huggingface_hub.md). + +## How adapter resolving works + +As described in the previous section, the methods for loading adapters are able to resolve the correct adapter weights +based on the given identifier string, the model name and the adapter configuration. +Using this information, the `adapters` library searches for a matching entry in the index of the [Hub GitHub repo](https://github.com/adapter-hub/hub). + +The identifier string used to find a matching adapter follows a format consisting of three components: +``` +/@ +``` + +- ``: A generic task identifier referring to a category of similar tasked (e.g. `sentiment`, `nli`) +- ``: A dataset or domain, on which the adapter was trained (e.g. `multinli`, `wiki`) +- ``: The name of the user or organization that uploaded the pre-trained adapter + +An example of a full identifier following this format might look like `qa/squad1.1@example-org`. + +```{eval-rst} +.. important:: + In many cases, you don't have to give the full string identifier with all three components to successfully load an adapter from the Hub. You can drop the `` you don't care about the uploader of the adapter. Also, if the resulting identifier is still unique, you can drop the ```` or the ````. So, ``qa/squad1.1``, ``squad1.1`` or ``squad1.1@example-org`` all may be valid identifiers. +``` + +An alternative adapter identifier format is given by: + +``` +@/ +``` + +where `` refers to the name of a adapter file in the [Hub repo](https://github.com/adapter-hub/hub). +In contrast to the previous three-component identifier, this identifier is guaranteed to be unique. diff --git a/adapters/docs/make.bat b/adapters/docs/make.bat new file mode 100644 index 00000000..922152e9 --- /dev/null +++ b/adapters/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/adapters/docs/method_combinations.md b/adapters/docs/method_combinations.md new file mode 100644 index 00000000..3205b41f --- /dev/null +++ b/adapters/docs/method_combinations.md @@ -0,0 +1,124 @@ +# Method Combinations + +_Configuration class_: [`ConfigUnion`](adapters.ConfigUnion) + +While different efficient fine-tuning methods and configurations have often been proposed as standalone, combining them for joint training might be beneficial. +To make this process easier, `adapters` provides the possibility to group multiple configuration instances using the [`ConfigUnion`](adapters.ConfigUnion) class. + +For example, this could be used to define different reduction factors for the adapter modules placed after the multi-head attention and the feed-forward blocks: + +```python +from adapters import BnConfig, ConfigUnion + +config = ConfigUnion( + BnConfig(mh_adapter=True, output_adapter=False, reduction_factor=16, non_linearity="relu"), + BnConfig(mh_adapter=False, output_adapter=True, reduction_factor=2, non_linearity="relu"), +) +model.add_adapter("union_adapter", config=config) +``` + +## Mix-and-Match Adapters + +_Configuration class_: [`MAMConfig`](adapters.MAMConfig) + +[He et al. (2021)](https://arxiv.org/pdf/2110.04366.pdf) study various variants and combinations of efficient fine-tuning methods. +They propose _Mix-and-Match Adapters_ as a combination of Prefix Tuning and parallel bottleneck adapters. +This configuration is supported by `adapters` out-of-the-box: + +```python +from adapters import MAMConfig + +config = MAMConfig() +model.add_adapter("mam_adapter", config=config) +``` + +and is identical to using the following `ConfigUnion`: + +```python +from adapters import ConfigUnion, ParBnConfig, PrefixTuningConfig + +config = ConfigUnion( + PrefixTuningConfig(bottleneck_size=800), + ParBnConfig(), +) +model.add_adapter("mam_adapter", config=config) +``` + +_Papers:_ +- [Towards a Unified View of Parameter-Efficient Transfer Learning](https://arxiv.org/pdf/2110.04366.pdf) (He et al., 2021) + +## UniPELT + +_Configuration class_: [`UniPELTConfig`](adapters.UniPELTConfig) + +```{eval-rst} +.. figure:: img/unipelt.png + :height: 300 + :align: center + :alt: Illustration of UniPELT. + + Illustration of the UniPELT method within one Transformer layer. Trained components are colored in shades of magenta. +``` + +An approach similar to the work of [He et al. (2021)](https://arxiv.org/pdf/2110.04366.pdf) is taken by [Mao et al. (2022)](https://arxiv.org/pdf/2110.07577.pdf) in their _UniPELT_ framework. +They, too, combine multiple efficient fine-tuning methods, namely LoRA, Prefix Tuning and bottleneck adapters, in a single unified setup. +_UniPELT_ additionally introduces a gating mechanism that controls the activation of the different submodules. + +Concretely, for each adapted module $m$, UniPELT adds a trainable gating value $\mathcal{G}_m \in (0, 1)$ that is computed via a feed-forward network ($W_{\mathcal{G}_m}$) and sigmoid activation ($\sigma$) from the Transformer layer input states ($x$): + +$$\mathcal{G}_m \leftarrow \sigma(W_{\mathcal{G}_m} \cdot x)$$ + +These gating values are then used to scale the output activations of the injected adapter modules, e.g., for a LoRA layer: + +$$ +h \leftarrow W_0 x + \mathcal{G}_{LoRA} B A x +$$ + +In the configuration classes of `adapters`, these gating mechanisms can be activated via `use_gating=True`. +The full UniPELT setup can be instantiated using `UniPELTConfig`[^unipelt]: + +[^unipelt]: Note that the implementation of UniPELT in `adapters` follows the implementation in the original code, which is slightlty different from the description in the paper. See [here](https://github.com/morningmoni/UniPELT/issues/1) for more. + +```python +from adapters import UniPELTConfig + +config = UniPELTConfig() +model.add_adapter("unipelt", config=config) +``` + +which is identical to the following `ConfigUnion`: + +```python +from adapters import ConfigUnion, LoRAConfig, PrefixTuningConfig, SeqBnConfig + +config = ConfigUnion( + LoRAConfig(r=8, use_gating=True), + PrefixTuningConfig(prefix_length=10, use_gating=True), + SeqBnConfig(reduction_factor=16, use_gating=True), +) +model.add_adapter("unipelt", config=config) +``` + +Finally, as the gating values for each adapter module might provide interesting insights for analysis, `adapters` comes with an integrated mechanism of returning all gating values computed during a model forward pass via the `output_adapter_gating_scores` parameter: + +```python +outputs = model(**inputs, output_adapter_gating_scores=True) +gating_scores = outputs.adapter_gating_scores +``` +Note that this parameter is only available to base model classes and [AdapterModel classes](prediction_heads.md#adaptermodel-classes). +In the example, `gating_scores` holds a dictionary of the following form: +``` +{ + '': { + : { + '': np.array([...]), + ... + }, + ... + }, + ... +} +``` + +_Papers:_ +- [UNIPELT: A Unified Framework for Parameter-Efficient Language Model Tuning](https://arxiv.org/pdf/2110.07577.pdf) (Mao et al., 2022) diff --git a/adapters/docs/methods.md b/adapters/docs/methods.md new file mode 100644 index 00000000..06ad700e --- /dev/null +++ b/adapters/docs/methods.md @@ -0,0 +1,297 @@ +# Adapter Methods + +On this page, we present all adapter methods currently integrated into the `adapters` library. +A tabular overview of adapter methods is provided [here](overview.html#table-of-adapter-methods). +Additionally, options to combine multiple adapter methods in a single setup are presented [on the next page](method_combinations.md). + +## Bottleneck Adapters + +_Configuration class_: [`BnConfig`](adapters.BnConfig) + +Bottleneck adapters introduce bottleneck feed-forward layers in each layer of a Transformer model. +Generally, these adapter layers consist of a down-projection matrix $W_{down}$ that projects the layer hidden states into a lower dimension $d_{bottleneck}$, a non-linearity $f$, an up-projection $W_{up}$ that projects back into the original hidden layer dimension and a residual connection $r$: + +$$ +h \leftarrow W_{up} \cdot f(W_{down} \cdot h) + r +$$ + +Depending on the concrete adapter configuration, these layers can be introduced at different locations within a Transformer block. Further, residual connections, layer norms, activation functions and bottleneck sizes ,etc., can be configured. + +The most important configuration hyperparameter to be highlighted here is the bottleneck dimension $d_{bottleneck}$. +In adapters, this bottleneck dimension is specified indirectly via the `reduction_factor` attribute of a configuration. +This `reduction_factor` defines the ratio between a model's layer hidden dimension and the bottleneck dimension, i.e.: + +$$ +\text{reduction_factor} = \frac{d_{hidden}}{d_{bottleneck}} +$$ + +A visualization of further configuration options related to the adapter structure is given in the figure below. For more details, we refer to the documentation of `BnConfig`](adapters.BnConfig). + + +```{eval-rst} +.. figure:: img/architecture.png + :width: 350 + :align: center + :alt: Adapter architectures + + Visualization of possible adapter configurations with corresponding dictionary keys. +``` + +`adapters` comes with pre-defined configurations for some bottleneck adapter architectures proposed in literature: + +- [`DoubleSeqBnConfig`](adapters.DoubleSeqBnConfig), as proposed by [Houlsby et al. (2019)](https://arxiv.org/pdf/1902.00751.pdf) places adapter layers after both the multi-head attention and feed-forward block in each Transformer layer. +- [`SeqBnConfig`](adapters.SeqBnConfig), as proposed by [Pfeiffer et al. (2020)](https://arxiv.org/pdf/2005.00052.pdf) places an adapter layer only after the feed-forward block in each Transformer layer. +- [`ParBnConfig`](adapters.ParBnConfig), as proposed by [He et al. (2021)](https://arxiv.org/pdf/2110.04366.pdf) places adapter layers in parallel to the original Transformer layers. + +_Example_: +```python +from adapters import BnConfig + +config = BnConfig(mh_adapter=True, output_adapter=True, reduction_factor=16, non_linearity="relu") +model.add_adapter("bottleneck_adapter", config=config) +``` + +_Papers:_ + +* [Parameter-Efficient Transfer Learning for NLP](https://arxiv.org/pdf/1902.00751.pdf) (Houlsby et al., 2019) +* [Simple, Scalable Adaptation for Neural Machine Translation](https://arxiv.org/pdf/1909.08478.pdf) (Bapna and Firat, 2019) +* [AdapterFusion: Non-Destructive Task Composition for Transfer Learning](https://aclanthology.org/2021.eacl-main.39.pdf) (Pfeiffer et al., 2021) +* [AdapterHub: A Framework for Adapting Transformers](https://arxiv.org/pdf/2007.07779.pdf) (Pfeiffer et al., 2020) + +## Language Adapters - Invertible Adapters + +_Configuration class_: [`SeqBnInvConfig`](adapters.SeqBnInvConfig), [`DoubleSeqBnInvConfig`](adapters.DoubleSeqBnInvConfig) + +The MAD-X setup ([Pfeiffer et al., 2020](https://arxiv.org/pdf/2005.00052.pdf)) proposes language adapters to learn language-specific transformations. +After being trained on a language modeling task, a language adapter can be stacked before a task adapter for training on a downstream task. +To perform zero-shot cross-lingual transfer, one language adapter can simply be replaced by another. + +In terms of architecture, language adapters are largely similar to regular bottleneck adapters, except for an additional _invertible adapter_ layer after the LM embedding layer. +Embedding outputs are passed through this invertible adapter in the forward direction before entering the first Transformer layer and in the inverse direction after leaving the last Transformer layer. +Invertible adapter architectures are further detailed in [Pfeiffer et al. (2020)](https://arxiv.org/pdf/2005.00052.pdf) and can be configured via the `inv_adapter` attribute of the `BnConfig` class. + +_Example_: +```python +from adapters import SeqBnInvConfig + +config = SeqBnInvConfig() +model.add_adapter("lang_adapter", config=config) +``` + +_Papers:_ +- [MAD-X: An Adapter-based Framework for Multi-task Cross-lingual Transfer](https://arxiv.org/pdf/2005.00052.pdf) (Pfeiffer et al., 2020) + +```{eval-rst} +.. note:: + V1.x of adapters made a distinction between task adapters (without invertible adapters) and language adapters (with invertible adapters) with the help of the ``AdapterType`` enumeration. + This distinction was dropped with v2.x. +``` + +## Prefix Tuning + +_Configuration class_: [`PrefixTuningConfig`](adapters.PrefixTuningConfig) + +```{eval-rst} +.. figure:: img/prefix.png + :height: 300 + :align: center + :alt: Illustration of Prefix Tuning. + + Illustration of the Prefix Tuning method within one Transformer layer. Trained components are colored in shades of magenta. +``` + +Prefix Tuning ([Li and Liang, 2021](https://aclanthology.org/2021.acl-long.353.pdf)) introduces new parameters in the multi-head attention blocks in each Transformer layer. +More specifically, it prepends trainable prefix vectors $P^K$ and $P^V$ to the keys and values of the attention head input, each of a configurable prefix length $l$ (`prefix_length` attribute): + +$$ +head_i = \text{Attention}(Q W_i^Q, [P_i^K, K W_i^K], [P_i^V, V W_i^V]) +$$ + +Following the original authors, the prefix vectors in $P^K$ and $P^V$ are not optimized directly but reparameterized via a bottleneck MLP. +This behavior is controlled via the `flat` attribute of the configuration. +Using `PrefixTuningConfig(flat=True)` will create prefix tuning vectors that are optimized without reparameterization. + +_Example_: +```python +from adapters import PrefixTuningConfig + +config = PrefixTuningConfig(flat=False, prefix_length=30) +model.add_adapter("prefix_tuning", config=config) +``` + +As reparameterization using the bottleneck MLP is not necessary for performing inference on an already trained Prefix Tuning module, `adapters` includes a function to "eject" a reparameterized Prefix Tuning into a flat one: +```python +model.eject_prefix_tuning("prefix_tuning") +``` +This will only retain the necessary parameters and reduces the size of the trained Prefix Tuning. + +_Papers:_ +- [Prefix-Tuning: Optimizing Continuous Prompts for Generation](https://arxiv.org/pdf/2101.00190.pdf) (Li and Liang, 2021) + +## Compacter + +_Configuration class_: [`CompacterConfig`](adapters.CompacterConfig), [`CompacterPlusPlusConfig`](adapters.CompacterPlusPlusConfig) + +```{eval-rst} +.. figure:: img/compacter.png + :height: 300 + :align: center + :alt: Illustration of Compacter. + + Illustration of the Compacter method within one Transformer layer. Trained components are colored in shades of magenta. +``` + +The Compacter architecture proposed by [Mahabadi et al., 2021](https://arxiv.org/pdf/2106.04647.pdf) +is similar to the bottleneck adapter architecture. It only exchanges the linear down- and +up-projection with a PHM layer. Unlike the linear layer, the PHM layer constructs its weight matrix from two smaller matrices, which reduces the number of parameters. + These matrices can be factorized and shared between all adapter layers. You can exchange the down- and up-projection layers from any of the bottleneck adapters described in the previous section +for a PHM layer by specifying `use_phm=True` in the config. + +The PHM layer has the following additional properties: `phm_dim`, `shared_phm_rule`, `factorized_phm_rule`, `learn_phm`, +`factorized_phm_W`, `shared_W_phm`, `phm_c_init`, `phm_init_range`, `hypercomplex_nonlinearity` + +For more information, check out the [`BnConfig`](adapters.BnConfig) class. + +To add a Compacter to your model, you can use the predefined configs: +```python +from adapters import CompacterConfig + +config = CompacterConfig() +model.add_adapter("dummy", config=config) +``` +_Papers:_ +- [COMPACTER: Efficient Low-Rank Hypercomplex Adapter Layers](https://arxiv.org/pdf/2106.04647.pdf) (Mahabadi, Henderson and Ruder, 2021) + +## LoRA + +_Configuration class_: [`LoRAConfig`](adapters.LoRAConfig) + +```{eval-rst} +.. figure:: img/lora.png + :height: 300 + :align: center + :alt: Illustration of LoRA. + + Illustration of the LoRA method within one Transformer layer. Trained components are colored in shades of magenta. +``` + +Low-Rank Adaptation (LoRA) is an efficient fine-tuning technique proposed by [Hu et al. (2021)](https://arxiv.org/pdf/2106.09685.pdf). +LoRA injects trainable low-rank decomposition matrices into the layers of a pre-trained model. +For any model layer expressed as a matrix multiplication of the form $h = W_0 x$, it performs a reparameterization, such that: + +$$ +h = W_0 x + \frac{\alpha}{r} B A x +$$ + +Here, $A \in \mathbb{R}^{r\times k}$ and $B \in \mathbb{R}^{d\times r}$ are the decomposition matrices and $r$, the low-dimensional rank of the decomposition, is the most important hyperparameter. + +While, in principle, this reparameterization can be applied to any weight matrix in a model, the original paper only adapts the attention weights of the Transformer self-attention sub-layer with LoRA. +`adapters` additionally allows injecting LoRA into the dense feed-forward layers in the intermediate and output components of a Transformer block. +You can configure the locations where LoRA weights should be injected using the attributes in the [`LoRAConfig`](adapters.LoRAConfig) class. + +_Example_: +```python +from adapters import LoRAConfig + +config = LoRAConfig(r=8, alpha=16) +model.add_adapter("lora_adapter", config=config) +``` + +In the design of LoRA, Hu et al. (2021) also pay special attention to keeping the inference latency overhead compared to full fine-tuning at a minimum. +To accomplish this, the LoRA reparameterization can be merged with the original pre-trained weights of a model for inference. +Thus, the adapted weights are directly used in every forward pass without passing activations through an additional module. +In `adapters`, this can be realized using the built-in [`merge_adapter()`](adapters.ModelAdaptersMixin.merge_adapter) method: +```python +model.merge_adapter("lora_adapter") +``` + +To continue training on this LoRA adapter or to deactivate it entirely, the merged weights first have to be reset again: +```python +model.reset_adapter() +``` + +_Papers:_ +- [LoRA: Low-Rank Adaptation of Large Language Models](https://arxiv.org/pdf/2106.09685.pdf) (Hu et al., 2021) + +## (IA)^3 + +_Configuration class_: [`IA3Config`](adapters.IA3Config) + +```{eval-rst} +.. figure:: img/ia3.png + :height: 300 + :align: center + :alt: Illustration of (IA)^3. + + Illustration of the (IA)^3 method within one Transformer layer. Trained components are colored in shades of magenta. +``` + +_Infused Adapter by Inhibiting and Amplifying Inner Activations ((IA)^3)_ is an efficient fine-tuning method proposed within the _T-Few_ fine-tuning approach by [Liu et al. (2022)](https://arxiv.org/pdf/2205.05638.pdf). +(IA)^3 introduces trainable vectors $l_W$ into different components of a Transformer model, which perform element-wise rescaling of inner model activations. +For any model layer expressed as a matrix multiplication of the form $h = W x$, it therefore performs an element-wise multiplication with $l_W$, such that: + +$$ +h = l_W \odot W x +$$ + +Here, $\odot$ denotes element-wise multiplication where the entries of $l_W$ are broadcasted to the shape of $W$. + +_Example_: +```python +from adapters import IA3Config + +config = IA3Config() +model.add_adapter("ia3_adapter", config=config) +``` + +The implementation of (IA)^3, as well as the [`IA3Config`](adapters.IA3Config) class, are derived from the implementation of [LoRA](#lora), with a few main modifications. +First, (IA)^3 uses multiplicative composition of weights instead of additive composition, as in LoRA. +Second, the added weights are not further decomposed into low-rank matrices. +These modifications are controlled via the `composition_mode` configuration attribute by setting `composition_mode="scale"`. +Additionally, as the added weights are already of rank 1, `r=1` is set. + +Beyond that, both methods share the same configuration attributes that allow you to specify in which Transformer components rescaling vectors will be injected. +Following the original implementation, [`IA3Config`](adapters.IA3Config) adds rescaling vectors to the self-attention weights (`selfattn_lora=True`) and the final feed-forward layer (`output_lora=True`). +Further, you can modify which matrices of the attention mechanism to rescale by leveraging the `attn_matrices` attribute. +By default, (IA)^3 injects weights into the key ('k') and value ('v') matrices but not in the query ('q') matrix. + +Finally, similar to LoRA, (IA)^3 also allows merging the injected parameters with the original weight matrices of the Transformer model. +E.g.: +```python +# Merge (IA)^3 adapter +model.merge_adapter("ia3_adapter") + +# Reset merged weights +model.reset_adapter() +``` + +_Papers:_ +- [Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning](https://arxiv.org/pdf/2205.05638.pdf) (Liu et al., 2022) + +## Prompt Tuning +Prompt Tuning is an efficient fine-tuning technique proposed by Lester et al. (2021). Prompt tuning adds tunable tokens, called soft-prompts, that are prepended to the input text. +First, the input sequence ${x_1, x_2, \dots, x_n }$ gets embedded, resulting in the matrix $X_e \in \mathbb{R}^{n \times e}$ where $e$ is the dimension of +the embedding space. The soft-prompts with length $p$ are represented as $P_e \in \mathbb{R}^{p \times e}$. +$P_e$ and $X_e$ get concatenated, forming the input of the following encoder or decoder: + +$$ +\left[P_e; X_e\right] \in \mathbb{R}^{\left(p + n\right) \times e} +$$ + +The `PromptTuningConfig` has the properties: +- `prompt_length`: to set the soft-prompts length $p$ +- `prompt_init`: to set the weight initialisation method, which is either "random_uniform" or "from_string" to initialize each prompt token with an embedding drawn from the model’s vocabulary. + - `prompt_init_text` as the text use for initialisation if `prompt_init="from_string"` +- `combine`: To define if the prefix should be added before the embedded input sequence or after the BOS token + +To add Prompt Tuning to your model, you can use the predefined configs: +```python +from adapters import PromptTuningConfig + +config = PromptTuningConfig(prompt_length=10) +model.add_adapter("dummy", config=config) +``` + +_Papers:_ +- [The Power of Scale for Parameter-Efficient Prompt Tuning](https://aclanthology.org/2021.emnlp-main.243/) (Lester et al., 2021) + diff --git a/adapters/docs/model_overview.md b/adapters/docs/model_overview.md new file mode 100644 index 00000000..58ae523b --- /dev/null +++ b/adapters/docs/model_overview.md @@ -0,0 +1,42 @@ +# Model Overview + +This page gives an overview of the Transformer models currently supported by `adapters`. +The table below further shows which model architectures support which adaptation methods and which features of `adapters`. + +```{eval-rst} +.. note:: + Each supported model architecture X typically provides a class ``XAdapterModel`` for usage with ``AutoAdapterModel``. + Additionally, it is possible to use adapters with the model classes already shipped with Hugging Face Transformers. For these classes, initialize the model for adapters with `adapters.init(model)`. + E.g., for BERT, this means adapters provides a ``BertAdapterModel`` class, but you can also use ``BertModel``, ``BertForSequenceClassification`` etc. together with adapters. +``` + +| Model | (Bottleneck)
Adapters | Prefix
Tuning | LoRA | Compacter | Adapter
Fusion | Invertible
Adapters | Parallel
block | Prompt
Tuning | +| --------------------------------------- | -| - | - | - | - | - | - |- | +| [ALBERT](classes/models/albert.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [BART](classes/models/bart.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | +| [BEIT](classes/models/beit.html) | ✅ | ✅ | ✅ | ✅ | ✅ | | | ✅ | +| [BERT-Generation](classes/models/bert-generation.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [BERT](classes/models/bert.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [CLIP](classes/models/clip.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | | +| [DeBERTa](classes/models/deberta.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [DeBERTa-v2](classes/models/debertaV2.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [DistilBERT](classes/models/distilbert.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Electra](classes/models/electra.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Encoder Decoder](classes/models/encoderdecoder.html) | (*) | (*) | (*) | (*) | (*) | (*) | | | +| [GPT-2](classes/models/gpt2.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | +| [GPT-J](classes/models/gptj.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | +| [Llama](classes/models/llama.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | +| [MBart](classes/models/mbart.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | +| [MT5](classes/models/mt5.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | +| [RoBERTa](classes/models/roberta.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [T5](classes/models/t5.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | +| [ViT](classes/models/vit.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [XLM-RoBERTa](classes/models/xlmroberta.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [X-MOD](classes/models/xmod.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | + +(*) If the used encoder and decoder model class are supported. + +**Missing a model architecture you'd like to use?** +adapters can be easily extended to new model architectures as described in [Adding Adapters to a Model](https://docs.adapterhub.ml/contributing/adding_adapters_to_a_model.html). +Feel free to [open an issue](https://github.com/Adapter-Hub/adapters/issues) requesting support for a new architecture. +_We very much welcome pull requests adding new model implementations!_ diff --git a/adapters/docs/overview.md b/adapters/docs/overview.md new file mode 100644 index 00000000..ee76c2b3 --- /dev/null +++ b/adapters/docs/overview.md @@ -0,0 +1,99 @@ +# Overview and Configuration + +Large pre-trained Transformer-based language models (LMs) have become the foundation of NLP in recent years. +While the most prevalent method of using these LMs for transfer learning involves costly *full fine-tuning* of all model parameters, a series of *efficient* and *lightweight* alternatives have recently been established. +Instead of updating all parameters of the pre-trained LM towards a downstream target task, these methods commonly introduce a small number of new parameters and only update these while keeping the pre-trained model weights fixed. + +```{admonition} Why use Efficient Fine-Tuning? +Efficient fine-tuning methods offer multiple benefits over the full fine-tuning of LMs: + +- They are **parameter-efficient**, i.e., they only update a tiny subset (often under 1%) of a model's parameters. +- They often are **modular**, i.e., the updated parameters can be extracted and shared independently of the base model parameters. +- They are easy to share and deploy due to their **small file sizes**, e.g., having only ~3MB per task instead of ~440MB for sharing a full model. +- They **speed up training**, i.e., efficient fine-tuning often requires less training time than fully fine-tuning LMs. +- They are **composable**, e.g., multiple adapters trained on different tasks can be stacked, fused, or mixed to leverage their combined knowledge. +- They often provide **on-par performance** with full fine-tuning. +``` + +More specifically, let the parameters of a LM be composed of a set of pre-trained parameters $\Theta$ (frozen) and a set of (newly introduced) parameters $\Phi$. +Then, efficient fine-tuning methods optimize only $\Phi$ according to a loss function $L$ on a dataset $D$: + +$$ +\Phi^* \leftarrow \arg \min_{\Phi} L(D; \{\Theta, \Phi\}) +$$ + +Efficient fine-tuning might insert parameters $\Phi$ at different locations of a Transformer-based LM. +One early and successful method, (bottleneck) adapters, introduces bottleneck feed-forward layers in each layer of a Transformer model. +While these adapters have laid the foundation of the `adapters` library, multiple alternative methods have been introduced and integrated since. + +```{eval-rst} +.. important:: + In literature, different terms are used to refer to efficient fine-tuning methods. + The term "adapter" is usually only applied to bottleneck adapter modules. + However, most efficient fine-tuning methods follow the same general idea of inserting a small set of new parameters and, by this, "adapting" the pre-trained LM to a new task. + In ``adapters``, the term "adapter" thus may refer to any efficient fine-tuning method if not specified otherwise. +``` + +In the remaining sections, we will present how adapter methods can be configured in `adapters`. +The next two pages will then present the methodological details of all currently supported adapter methods. + +## Table of Adapter Methods + +The following table gives an overview of all adapter methods supported by `adapters`. +Identifiers and configuration classes are explained in more detail in the [next section](#configuration). + +| Identifier | Configuration class | More information +| --- | --- | --- | +| `seq_bn` | `SeqBnConfig()` | [Bottleneck Adapters](methods.html#bottleneck-adapters) | +| `double_seq_bn` | `DoubleSeqBnConfig()` | [Bottleneck Adapters](methods.html#bottleneck-adapters) | +| `par_bn` | `ParBnConfig()` | [Bottleneck Adapters](methods.html#bottleneck-adapters) | +| `scaled_par_bn` | `ParBnConfig(scaling="learned")` | [Bottleneck Adapters](methods.html#bottleneck-adapters) | +| `seq_bn_inv` | `SeqBnInvConfig()` | [Invertible Adapters](methods.html#language-adapters---invertible-adapters) | +| `double_seq_bn_inv` | `DoubleSeqBnInvConfig()` | [Invertible Adapters](methods.html#language-adapters---invertible-adapters) | +| `compacter` | `CompacterConfig()` | [Compacter](methods.html#compacter) | +| `compacter++` | `CompacterPlusPlusConfig()` | [Compacter](methods.html#compacter) | +| `prefix_tuning` | `PrefixTuningConfig()` | [Prefix Tuning](methods.html#prefix-tuning) | +| `prefix_tuning_flat` | `PrefixTuningConfig(flat=True)` | [Prefix Tuning](methods.html#prefix-tuning) | +| `lora` | `LoRAConfig()` | [LoRA](methods.html#lora) | +| `ia3` | `IA3Config()` | [IA³](methods.html#ia-3) | +| `mam` | `MAMConfig()` | [Mix-and-Match Adapters](method_combinations.html#mix-and-match-adapters) | +| `unipelt` | `UniPELTConfig()` | [UniPELT](method_combinations.html#unipelt) | +| `prompt_tuning` | `PromptTuningConfig()` | [Prompt Tuning](methods.html#prompt-tuning) + +## Configuration + +All supported adapter methods can be added, trained, saved and shared using the same set of model class functions (see [class documentation](adapters.ModelAdaptersMixin)). +Each method is specified and configured using a specific configuration class, all of which derive from the common [`AdapterConfig`](adapters.AdapterConfig) class. +E.g., adding one of the supported adapter methods to an existing model instance follows this scheme: +```python +model.add_adapter("name", config=) +``` + +Here, `` can either be: +- a configuration string, as described below +- an instance of a configuration class, as listed in the table above +- a path to a JSON file containing a configuration dictionary + +### Configuration strings + +Configuration strings are a concise way of defining a specific adapter method configuration. +They are especially useful when adapter configurations are passed from external sources such as the command-line, when using configuration classes is not an option. + +In general, a configuration string for a single method takes the form `[=, ...]`. +Here, `` refers to one of the identifiers listed in [the table above](#table-of-adapter-methods), e.g. `par_bn`. +In square brackets after the identifier, you can set specific configuration attributes from the respective configuration class, e.g. `par_bn[reduction_factor=2]`. +If all attributes remain at their default values, this can be omitted. + +Finally, it is also possible to specify a [method combination](method_combinations.md) as a configuration string by joining multiple configuration strings with `|`, e.g.: +```python +config = "prefix_tuning[bottleneck_size=800]|parallel" +``` + +is identical to the following `ConfigUnion`: + +```python +config = ConfigUnion( + PrefixTuningConfig(bottleneck_size=800), + ParBnConfig(), +) +``` diff --git a/adapters/docs/prediction_heads.md b/adapters/docs/prediction_heads.md new file mode 100644 index 00000000..33786385 --- /dev/null +++ b/adapters/docs/prediction_heads.md @@ -0,0 +1,152 @@ +# Prediction Heads + +This section gives an overview of how different prediction heads can be used together with adapter modules and how pre-trained adapters can be distributed side-by-side with matching prediction heads in AdapterHub. +We will take a look at the `AdapterModel` classes (e.g. `BertAdapterModel`) introduced by adapters, which provide **flexible** support for prediction heads, as well as models with **static** heads provided out-of-the-box by Hugging Face Transformers (e.g. `BertForSequenceClassification`). + +```{eval-rst} +.. tip:: + We recommend to use the `AdapterModel classes <#adaptermodel-classes>`_ whenever possible. + They have been created specifically for working with adapters and provide more flexibility. +``` + +## AdapterModel classes + +The AdapterModel classes provided by `adapters` allow a flexible configuration of prediction heads on top of a pre-trained language model. + +First, we load pre-trained model from the Hugging Face Hub via the [`AutoAdapterModel`](adapters.AutoAdapterModel) class: +```python +model = AutoAdapterModel.from_pretrained("bert-base-uncased") +``` + +By default, this model doesn't have any heads yet. We add a new one in the next step: +```python +model.add_classification_head("mrpc", num_labels=2) +``` +The line above adds a binary sequence classification head on top of our model. +Because this head is named, we could add multiple other heads with different names to the same model. +This is especially useful if used together with matching adapter modules. +To learn more about the different head types and the configuration options, please refer to the class references of the respective model classes, e.g. [`BertAdapterModel`](adapters.BertAdapterModel). + +Now, of course, we would like to train our classification head together with an adapter, so let's add one: +```python +model.add_adapter("mrpc", config="seq_bn") +model.set_active_adapters("mrpc") +``` + +Since we gave the task adapter the same name as our head, we can easily identify them as belonging together. +The call to `set_active_adapters()` in the second line tells our model to use the adapter - head configuration we specified by default in a forward pass. +At this point, we can start to [train our setup](training.md). + +```{eval-rst} +.. note:: + The ``set_active_adapters()`` will search for an adapter and a prediction head with the given name to be activated. + Alternatively, prediction heads can also be activated explicitly (i.e. without adapter modules). + These three options are possible (in order of priority when multiple are specified): + + 1. If ``head`` is passed to the forward call, the head with the given name is used. + 2. If the forward call is executed within an ``AdapterSetup`` context, the head configuration is read from the context. + 3. If the ``active_head`` property is set, the head configuration is read from there. +``` + +After training has completed, we can save our whole setup (adapter module _and_ prediction head), with a single call: +```python +model.save_adapter("/path/to/dir", "mrpc", with_head=True) +``` + +Now, you just have to [share your work with the world](./hub_contributing.md#add-your-pre-trained-adapter). +After you published the adapter together with its head in the Hub, anyone else can load both adapter and head by using the same model class. + +Alternatively, we can also save and load the prediction head separately from an adapter module: + +```python +# save +model.save_head("/path/to/dir", "mrpc") +# load +model.load_head("/path/to/dir") +``` + +Lastly, it's also possible to delete an added head again: + +```python +model.delete_head("mrpc") +``` + +## Model classes with static heads (Hugging Face Transformers) + +The `transformers` library provides strongly typed model classes with heads for various different tasks (e.g. `RobertaForSequenceClassification`, `AutoModelForMultipleChoice` ...). +If an adapter module is trained with one of these out-of-the-box classes, it is encouraged to also distribute the prediction head weights together with the adapter weights. +Therefore, we can also easily save the prediction head weights for these models together with an adapter: + +```python +model.save_adapter("/path/to/dir", "mrpc", with_head=True) +``` + +In the next step, we can provide both the adapter weights and the head weights to the Hub. +If someone else then downloads the pre-trained adapter, the resolving method will check if the prediction head matches the class of his model. +In case the classes match, the prediction head weights will be automatically loaded too. + +## Automatic conversion +`adapters` supports loading static heads, e.g., created with `AutoModelForSequenceClassification`, into model classes with flexible heads, e.g. `AutoAdapterModel`. + +For this, for a model created with `AutoModelForSequenceClassification` we first need to enable adapter support by calling the `init()` method. +```python +from adapters import init, AutoAdapterModel +from transformers import AutoModelForSequenceClassification +import os + +static_head_model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") +# Enable adapter support +init(static_head_model) +``` +Now we can add an adapter and save it together with the head as usual: +```python +static_head_model.add_adapter("test") + +temp_dir = os.path.join(os.getcwd(), "temp_dir") +static_head_model.save_adapter(temp_dir, "test", with_head=True) +``` +When now loading the adapter and head into a new AdapterModel, the conversion of weights happens automatically during the call of `load_adapter()`, so no additional steps are needed: + +```python +flex_head_model = AutoAdapterModel.from_pretrained("bert-base-uncased") +flex_head_model.load_adapter(temp_dir) + +assert "test" in flex_head_model.adapters_config +assert "test" in flex_head_model.heads +``` + +```{eval-rst} +.. note:: + The conversion in the opposite direction is not supported, i.e. you cannot load a head created with ``AutoAdapterModel`` into a model of type ``AutoModelForSequenceClassification``. +``` + +## Custom Heads +If none of the available prediction heads fit your requirements, you can define and add a custom head. + +First, we need to define the new head class. For that, the initialization and the forward pass need to be implemented. +The initialization of the head gets a reference to the model, the name of the head, and additionally defined kwargs. +You can use the following template as a guideline. +```python +class CustomHead(PredictionHead): + def __init__( + self, + model, + head_name, + **kwargs, + ): + # innitialization of the custom head + + def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): + # implementation of the forward pass +``` + + +Next, we can register the new custom head and give the new head type a name. This only notifies +the model that there is a new head type. Then, we can add an instance of the new head to the model by +calling `add_custom_head` with the name of the new head type, the name of the head instance we are creating, and +additional arguments required by the head. +```python +model.register_custom_head("my_custom_head", CustomHead) +model.add_custom_head(head_type="my_custom_head", head_name="custom_head", **kwargs) +``` +After adding the custom head you can treat it like any other build-in head type. diff --git a/adapters/docs/quickstart.md b/adapters/docs/quickstart.md new file mode 100644 index 00000000..c1181f1d --- /dev/null +++ b/adapters/docs/quickstart.md @@ -0,0 +1,123 @@ +# Quick Start + +## Introduction + +`adapters` adds adapter functionality to the PyTorch implementations of all Transformer models listed in the [Model Overview](https://docs.adapterhub.ml/model_overview.html). +For working with adapters, a couple of methods, e.g. for creation (`add_adapter()`), loading (`load_adapter()`), +storing (`save_adapter()`) and deletion (`delete_adapter()`) are added to the model classes. +In the following, we will briefly go through some examples to showcase these methods. + +```{eval-rst} +.. note:: + This document focuses on the adapter-related functionalities added by ``adapters``. + For a more general overview of the *transformers* library, visit + `the 'Usage' section in Hugging Face's documentation `_. +``` + +## Initialize Model with Adapters + +The `XAdapterModel` is the recommended model for training and inference of adapters: + +``` +from adapters import AutoAdapterModel + +model = AutoAdapterModel.from_pretrained(model_name) +```` + +This handles the initialization of the adapter-related functionality internally and provides you with the initialized model. The `XAdapterModel` also supports the dynamic adding, loading, and storing of heads for different tasks. + + +If you want to use adapters in Hugging Face models, the models need to be initialized with the adapters library. This initializes the functionality of adding, loading and storing of adapters within the `transformers` models. + +``` +import adapters + +adapters.init(model) +``` + + +## Using a Pre-Trained Adapter for Inference + +_We also have a Quickstart Colab notebook for adapter inference:_ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/02_Adapter_Inference.ipynb) + +The following example shows the usage of a basic pre-trained Transformer model with adapters. +Our goal here is to predict the sentiment of a given sentence. + +We use BERT in this example, so we first load a pre-trained `BertTokenizer` to encode the input sentence and a pre-trained +`bert-base-uncased` checkpoint from Hugging Face's Model Hub using the [`BertAdapterModel`](adapters.BertAdapterModel) class: + +```python +import os + +import torch +from transformers import BertTokenizer +from adapters import BertAdapterModel + +# Load pre-trained BERT tokenizer from Hugging Face +tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') + +# An input sentence +sentence = "It's also, clearly, great fun." + +# Tokenize the input sentence and create a PyTorch input tensor +input_data = tokenizer(sentence, return_tensors="pt") + +# Load pre-trained BERT model from Hugging Face Hub +# The `BertAdapterModel` class is specifically designed for working with adapters +# It can be used with different prediction heads +model = BertAdapterModel.from_pretrained('bert-base-uncased') +``` + +Having loaded the model, we now add a pre-trained task adapter that is useful to our task from AdapterHub. +In this case, for sentiment classification, we thus use [an adapter trained on the SST-2 dataset](https://adapterhub.ml/adapters/ukp/bert-base-uncased_sentiment_sst-2_pfeiffer/). +The task prediction head loaded together with the adapter gives us a class label for our sentence: + +```python +# Load pre-trained task adapter from Adapter Hub +# This method call will also load a pre-trained classification head for the adapter task +adapter_name = model.load_adapter("sentiment/sst-2@ukp", config='pfeiffer') + +# Activate the adapter we just loaded, so that it is used in every forward pass +model.set_active_adapters(adapter_name) + +# Predict output tensor +outputs = model(**input_data) + +# Retrieve the predicted class label +predicted = torch.argmax(outputs[0]).item() +assert predicted == 1 +``` + +To save our pre-trained model and adapters, we can easily store and reload them as follows: + +```python +# For the sake of this demonstration an example path for loading and storing is given below +example_path = os.path.join(os.getcwd(), "adapter-quickstart") + +# Save model +model.save_pretrained(example_path) +# Save adapter +model.save_adapter(example_path, adapter_name) + +# Load model, similar to Hugging Face's AutoModel class, +# you can also use AutoAdapterModel instead of BertAdapterModel +model = AutoAdapterModel.from_pretrained(example_path) +model.load_adapter(example_path) +``` + +Similar to how the weights of the full model are saved, the `save_adapter()` will create a file for saving the adapter weights and a file for saving the adapter configuration in the specified directory. + +Finally, if we have finished working with adapters, we can restore the base Transformer to its original form by deactivating and deleting the adapter: + +```python +# Deactivate all adapters +model.set_active_adapters(None) +# Delete the added adapter +model.delete_adapter(adapter_name) +``` + +## Adapter training + +_We also have a Quickstart Colab notebook for adapter training:_ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/01_Adapter_Training.ipynb) + +For more examples on training different adapter setups, refer to the section on [Adapter Training](training.md). diff --git a/adapters/docs/scripts/post_build.py b/adapters/docs/scripts/post_build.py new file mode 100644 index 00000000..bc142427 --- /dev/null +++ b/adapters/docs/scripts/post_build.py @@ -0,0 +1,16 @@ +import os +import shutil +import sys + + +BUILD_DIR = sys.argv[1] + +for folder in os.listdir(BUILD_DIR): + path = os.path.join(BUILD_DIR, folder) + if folder == "main": + file_names = os.listdir(path) + for file_name in file_names: + shutil.move(os.path.join(path, file_name), BUILD_DIR) + os.rmdir(path) + else: + shutil.move(path, path.replace("adapters", "v")) diff --git a/adapters/docs/training.md b/adapters/docs/training.md new file mode 100644 index 00000000..649ace6e --- /dev/null +++ b/adapters/docs/training.md @@ -0,0 +1,217 @@ +# Adapter Training + +This section describes some examples of training adapter methods for different scenarios. We focus on integrating adapter methods into existing training scripts for Transformer models. +All presented scripts are only slightly modified from the original [examples from Hugging Face Transformers](https://github.com/huggingface/transformers/tree/main/examples/pytorch#examples). +To run the scripts, make sure you have the latest version of the repository and have installed some additional requirements: + +``` +git clone https://github.com/adapter-hub/adapters +cd adapters +pip install . +pip install -r ./examples/pytorch//requirements.txt +``` + +## Train a Task Adapter + +Training a task adapter module on a dataset only requires minor modifications compared to training the entire model. +Suppose we have an existing script for training a Transformer model. +In the following, we will use Hugging Face's [run_glue.py](https://github.com/Adapter-Hub/adapters/blob/main/examples/pytorch/text-classification/run_glue.py) example script for training on the GLUE benchmark. +We go through all required changes step by step: + +### Step A - Parse `AdapterArguments` + +The [`AdapterArguments`](adapters.training.AdapterArguments) class integrated into adapters provides a set of command-line options useful for training adapters. +These include options such as `--train_adapter` for activating adapter training and `--load_adapter` for loading adapters from checkpoints. +Thus, the first step of integrating adapters is to add these arguments to the line where `HfArgumentParser` is instantiated: + +```python +parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) +# ... +model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() +``` + +### Step B - Switch model class (optional) + +In our example, we replace the built-in `AutoModelForSequenceClassification` class with the `AutoAdapterModel` class introduced by `adapters`. +Therefore, the model instantiation changed to: + +```python +model = AutoAdapterModel.from_pretrained( + model_args.model_name_or_path, + config=config, +) +model.add_classification_head(data_args.task_name, num_labels=num_labels) +``` + +Alternatively, you can also use the original `transformers` class and initialize the model for the usage of adapters by calling `adapters.init(model)`. +Learn more about the benefits of AdapterModel classes [here](prediction_heads.md) + +### Step C - Setup adapter methods + +```{eval-rst} +.. tip:: + In the following, we show how to set up adapters manually. In most cases, you can use the built-in ``setup_adapter_training()`` method to perform this job automatically. Just add a statement similar to this anywhere between model instantiation and training start in your script: ``setup_adapter_training(model, adapter_args, task_name)`` +``` + +Compared to fine-tuning the entire model, we have to make only one significant adaptation: adding an adapter setup and activating it. + +```python +# task adapter - only add if not existing +if task_name not in model.adapters_config: + # resolve the adapter config + adapter_config = AdapterConfig.load(adapter_args.adapter_config) + # add a new adapter + model.add_adapter(task_name, config=adapter_config) +# Enable adapter training +model.train_adapter(task_name) +``` + +```{eval-rst} +.. important:: + The most crucial step when training an adapter module is to freeze all weights in the model except for those of the + adapter. In the previous snippet, this is achieved by calling the ``train_adapter()`` method, which disables training + of all weights outside the task adapter. In case you want to unfreeze all model weights later on, you can use + ``freeze_model(False)``. +``` + +Besides this, we only have to make sure that the task adapter and prediction head are activated so that they are used in every forward pass. To specify the adapter modules to use, we can use the `model.set_active_adapters()` +method and pass the adapter setup. If you only use a single adapter, you can simply pass the name of the adapter. For more information +on complex setups, checkout the [Composition Blocks](https://docs.adapterhub.ml/adapter_composition.html). + +```python +model.set_active_adapters(task_name) +``` + +### Step D - Switch to `AdapterTrainer` class + +Finally, we exchange the `Trainer` class built into Transformers for the [`AdapterTrainer`](transformers.adapters.AdapterTrainer) class that is optimized for training adapter methods. +See [below for more information](#adaptertrainer). + +Technically, this change is not required as no changes to the training loop are required for training adapters. +However, `AdapterTrainer` e.g., provides better support for checkpointing and reloading adapter weights. + +### Step E - Start training + +The rest of the training procedure does not require any further changes in code. + +You can find the full version of the modified training script for GLUE at [run_glue.py](https://github.com/Adapter-Hub/adapters/blob/master/examples/pytorch/text-classification/run_glue.py) in the `examples` folder of our repository. +We also adapted [various other example scripts](https://github.com/Adapter-Hub/adapters/tree/master/examples/pytorch) (e.g., `run_glue.py`, `run_multiple_choice.py`, `run_squad.py`, ...) to support adapter training. + +To start adapter training on a GLUE task, you can run something similar to: + +``` +export TASK_NAME=mrpc + +python run_glue.py \ + --model_name_or_path bert-base-uncased \ + --task_name $TASK_NAME \ + --do_train \ + --do_eval \ + --max_seq_length 128 \ + --per_device_train_batch_size 32 \ + --learning_rate 1e-4 \ + --num_train_epochs 10.0 \ + --output_dir /tmp/$TASK_NAME \ + --overwrite_output_dir \ + --train_adapter \ + --adapter_config seq_bn +``` + +The important flag here is `--train_adapter`, which switches from fine-tuning the entire model to training an adapter module for the given GLUE task. + +```{eval-rst} +.. tip:: + Adapter weights are usually initialized randomly, which is why we require a higher learning rate. We have found that a default adapter learning rate of ``1e-4`` works well for most settings. +``` + +```{eval-rst} +.. tip:: + Depending on your data set size, you might also need to train longer than usual. To avoid overfitting, you can evaluate the adapters after each epoch on the development set and only save the best model. +``` + +## Train a Language Adapter + +Training a language adapter is equally straightforward as training a task adapter. Similarly to the steps for task adapters +described above, we add a language adapter module to an existing model training script. Here, we modified Hugging Face's [run_mlm.py](https://github.com/Adapter-Hub/adapters/blob/main/examples/pytorch/language-modeling/run_mlm.py) script for masked language modeling with BERT-based models. + +Training a language adapter on BERT using this script may look like the following: + +```bash +export TRAIN_FILE=/path/to/dataset/train +export VALIDATION_FILE=/path/to/dataset/validation + +python run_mlm.py \ + --model_name_or_path bert-base-uncased \ + --train_file $TRAIN_FILE \ + --validation_file $VALIDATION_FILE \ + --do_train \ + --do_eval \ + --learning_rate 1e-4 \ + --num_train_epochs 10.0 \ + --output_dir /tmp/test-mlm \ + --train_adapter \ + --adapter_config "seq_bn_inv" +``` + +## Train AdapterFusion + +We provide an example for training _AdapterFusion_ ([Pfeiffer et al., 2020](https://arxiv.org/pdf/2005.00247)) on the GLUE dataset: [run_fusion_glue.py](https://github.com/Adapter-Hub/adapters/blob/main/examples/pytorch/adapterfusion/run_fusion_glue.py). +You can adapt this script to train AdapterFusion with different pre-trained adapters on your own dataset. + +```{eval-rst} +.. important:: + AdapterFusion on a target task is trained in a second training stage after independently training adapters on individual tasks. + When setting up a fusion architecture on your model, make sure to load the pre-trained adapter modules to be fused using ``model.load_adapter()`` before adding a fusion layer. + For more on AdapterFusion, also refer to `Pfeiffer et al., 2020 `_. +``` + +To start fusion training on SST-2 as the target task, you can run something like the following: + +``` +export GLUE_DIR=/path/to/glue +export TASK_NAME=SST-2 + +python run_fusion_glue.py \ + --model_name_or_path bert-base-uncased \ + --task_name $TASK_NAME \ + --do_train \ + --do_eval \ + --data_dir $GLUE_DIR/$TASK_NAME \ + --max_seq_length 128 \ + --per_device_train_batch_size 32 \ + --learning_rate 5e-5 \ + --num_train_epochs 10.0 \ + --output_dir /tmp/$TASK_NAME \ + --overwrite_output_dir +``` + + +## AdapterTrainer + +Similar to the `Trainer` class provided by Hugging Face, adapters provides an `AdapterTrainer` class. This class is only +intended for training adapters. The `Trainer` class should still be used to fully fine-tune models. To train adapters with the `AdapterTrainer` +class, simply initialize it the same way you would initialize the `Trainer` class, e.g.: + +```python +model.add_adapter(task_name) +model.train_adapter(task_name) + +trainings_args = TrainingsArguments( + learning_rate=1e-4, + num_train_epochs=6, +) + +trainer = AdapterTrainer( + model=model, + args=training_args, + train_dataset=train_dataset, + eval_dataset=eval_dataset, + tokenizer=tokenizer, + data_collator=data_collator, + ) +``` +```{eval-rst} +.. tip:: + When you migrate from the previous versions, which use the Trainer class for adapter training and fully fine-tuning, note that the + specialized AdapterTrainer class does not have the parameters `do_save_full_model`, `do_save_adapters` and `do_save_adapter_fusion`. +``` diff --git a/adapters/docs/transitioning.md b/adapters/docs/transitioning.md new file mode 100644 index 00000000..f81ac94d --- /dev/null +++ b/adapters/docs/transitioning.md @@ -0,0 +1,77 @@ +# Transitioning from `adapter_transformers` + + +The new `adapters` library is the successor to the `adapter-transformers` library. It differs essentially in that `adapters` is now a stand-alone package, i.e., the package is disentangled from the `transformers` package from Hugging Face and is no longer a drop-in replacement. + +This results in some breaking changes. To transition your code from `adapter-transformers` to `adapters` you need to consider the following changes: + +## Package and Namespace + To use the library you need to install +`transformers` and `adapters` in the same environment (unlike `adapter-transformers` which contained `transformers` and could not be installed in the same environment). + +Run the following to install both (installing `adapters` will automatically trigger the installation of `transformers` if it is not yet installed in th environment): + +``` +pip install adapters +``` + +This also changes the namespace to `adapters`. For all imports of adapter classes change the import from `transformers` to `adapters`. +This mainly affects the following classes: +- AdapterModel classes, e.g. `AutoAdapterModel`(see [AdapterModels](https://docs.adapterhub.ml/model_overview.html) ) +- Adapter configurations e.g. `PrefixTuningConfig` (see [Configurations](https://docs.adapterhub.ml/overview.html) ) +- Adapter composition blocks, e.g. `Stack`(see [Composition Blocks](https://docs.adapterhub.ml/adapter_composition.html) ) +- The `AdapterTrainer` class + +## Model Initialisation + +The Hugging Face model classes, such as `BertModel`, cannot be used directly with adapters. They must first be initialised for adding adapters: + +``` +from transformers import AutoModel +import adapters + +model = AutoModel.from_pretrained("bert-base-uncased") +adapters.init(model) # prepare model for use with adapters +``` + +The necessary change is the call of the `adapters.init()` method. +Note that no additional initialisation is required to use the AdapterModel classes such as the `BertAdapterModel`'. These classes are provided by the `adapters` library and are already prepared for using adapters in training and inference. + +## Bottleneck Configuration Names + +The `adapters` library supports the configuration of adapters using [config strings](https://docs.adapterhub.ml/overview.html#configuration-strings). Compared to the `adapter-transformers` library, we have changed some of the strings to make them more consistent and intuitive: +- `houlsby` -> `double_seq_bn` +- `pfeiffer` -> `seq_bn` +- `parallel`-> `par_seq_bn` +- `houlsby+inv` -> `double_seq_bn_inv` +- `pfeiffer+inv`-> `seq_bn_inv` + + +For a complete list of config strings and classes see [here](https://docs.adapterhub.ml/overview.html). We strongly recommend using the new config strings, but we will continue to support the old config strings for the time being to make the transition easier. +Note that with the config strings the coresponding adapter config classes have changed, e.g. `PfeifferConfig` -> `SeqBnConfig`. + +Another consequence of this that the `AdapterConfig` class is now not only for the bottleneck adapters anymore, but the base class of all the configurations (previously `AdapterConfigBase`). Hence the function this class serves has changed. However, you can still load adapter configs with: +``` +adapter_config = AdapterConfig.load("lora") +``` + + +## Features that are not supported by `adapters` + +Compared to `adapter-transformers`, there are a few features that are no longer supported by the `adapters` library: +- Using `transformers` pipelines with adapters. +- Using invertible adapters in the Hugging Face model classes. To use invertible adapters you must use the AdapterModel class. +- Loading model and adapter checkpoints saved with `save_pretrained` using Hugging Face classes. This is only supported by the AdapterModel classes. + +## What has remained the same + +The functionality for adding, activating, and training adapters has __not__ changed, except for the renaming of some adapter configs. You still add and activate adapters as follows: +``` +# add adapter to the model +model.add_adapter("adapter_name", config="lora") +# activate adapter +model.set_active_adapters("adapter_name") +# freeze model weights and activate adapter +model.train_adapter("adapter_name") +``` + diff --git a/adapters/examples/pytorch/README.md b/adapters/examples/pytorch/README.md new file mode 100644 index 00000000..2d23a390 --- /dev/null +++ b/adapters/examples/pytorch/README.md @@ -0,0 +1,432 @@ + + + +# Examples + +This folder contains example scripts that show how adapters can be used for various tasks. +The examples are partly written by us and partly a modified version of [the example scripts provided by HuggingFace for the Transformers library](https://github.com/huggingface/transformers/tree/main/examples). + +All of the scripts here have been modified to support training adapters instead of full model fine-tuning. + +Before getting started with an example script, make sure to have everything set up. +It is best to install the latest `adapters` version from the repository: +``` +git clone https://github.com/adapter-hub/adapters +cd transformers +pip install . +``` + +Now, switch to an examples folder and run: +``` +pip install -r requirements.txt +``` + +## Adapter Specific Scripts +| Task | Description | +| --- | --- | +| [**`adapterdrop`**](https://github.com/adapter-hub/adapters/tree/master/examples/pytorch/adapterdrop) | Demonstrating how to use AdapterDrop ([ Rücklé et al., 2021](https://arxiv.org/pdf/2010.11918.pdf)) +| [**`adapterfusion`**](https://github.com/adapter-hub/adapters/tree/master/examples/pytorch/adapterfusion) | Training AdapterFusion ([Pfeiffer et al., 2020](https://arxiv.org/pdf/2005.00247.pdf)) on the GLUE dataset + +## Modified Hugging Face Transformers Example Scripts + +Modified scripts of the Hugging Face Transformers library that support adapters: + +| Task | Description | +| --- | --- | +| [**`language-modeling`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/language-modeling) | Causal & Masked language modeling +| [**`multiple-choice`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/multiple-choice) | SWAG Dataset +| [**`question-answering`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/question-answering) | SQuAD-style QA +| [**`summarization`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/seq2seq) | Summarization, e.g. on CNN/Dailymail or XSum +| [**`text-classification`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/text-classification) | GLUE benchmark +| [**`text-generation`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/text-generation) | Text generation, e.g. using GPT-2 +| [**`token-classification`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/token-classification) | NER, e.g. on CoNLL2003 +| [**`translation`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/seq2seq) | Machine translation, e.g. on WMT tasks +| [**`dependency-parsing`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/dependency-parsing) | Dependency parsing on Universal Dependencies +| [**`image-classification`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/image-classification) | Image classification, e.g. on CIFAR-10/-100 + +All scripts listed above which can be used for training provide a new `--train_adapter` option that switches between full fine-tuning and adapter training. +Loading pre-trained adapters can be done via `--load_adapter`. +You can find all additional, adapter-specific, command-line options [here](https://github.com/Adapter-Hub/adapters/blob/main/src/transformers/adapters/training.py). + +Fore more information and examples on training adapters, please refer to these locations: +- The section on adapter training [in the AdapterHub documentation](https://docs.adapterhub.ml/training). +- Our [collection of Colab notebook tutorials](https://github.com/Adapter-Hub/adapters/tree/main/notebooks). + +--- + +**NOTE: Below, you find the original, unmodified, documentation by Hugging Face. Check out [their examples folder](https://github.com/huggingface/transformers/tree/main/examples) for more example scripts.** + +--- + +This folder contains actively maintained examples of use of 🤗 Transformers using the PyTorch backend, organized by ML task. + +## The Big Table of Tasks + +Here is the list of all our examples: +- with information on whether they are **built on top of `Trainer`** (if not, they still work, they might + just lack some features), +- whether or not they have a version using the [🤗 Accelerate](https://github.com/huggingface/accelerate) library. +- whether or not they leverage the [🤗 Datasets](https://github.com/huggingface/datasets) library. +- links to **Colab notebooks** to walk through the scripts and run them easily, + + +| Task | Example datasets | Trainer support | 🤗 Accelerate | 🤗 Datasets | Colab +|---|---|:---:|:---:|:---:|:---:| +| [**`language-modeling`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/language-modeling) | [WikiText-2](https://huggingface.co/datasets/wikitext) | ✅ | ✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/language_modeling.ipynb) +| [**`multiple-choice`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/multiple-choice) | [SWAG](https://huggingface.co/datasets/swag) | ✅ | ✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/multiple_choice.ipynb) +| [**`question-answering`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/question-answering) | [SQuAD](https://huggingface.co/datasets/squad) | ✅ | ✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/question_answering.ipynb) +| [**`summarization`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/summarization) | [XSum](https://huggingface.co/datasets/xsum) | ✅ | ✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/summarization.ipynb) +| [**`text-classification`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/text-classification) | [GLUE](https://huggingface.co/datasets/glue) | ✅ | ✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/text_classification.ipynb) +| [**`text-generation`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/text-generation) | - | n/a | - | - | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/blog/blob/main/notebooks/02_how_to_generate.ipynb) +| [**`token-classification`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/token-classification) | [CoNLL NER](https://huggingface.co/datasets/conll2003) | ✅ |✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/token_classification.ipynb) +| [**`translation`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/translation) | [WMT](https://huggingface.co/datasets/wmt17) | ✅ | ✅ |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/translation.ipynb) +| [**`speech-recognition`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/speech-recognition) | [TIMIT](https://huggingface.co/datasets/timit_asr) | ✅ | - |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/speech_recognition.ipynb) +| [**`multi-lingual speech-recognition`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/speech-recognition) | [Common Voice](https://huggingface.co/datasets/common_voice) | ✅ | - |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/multi_lingual_speech_recognition.ipynb) +| [**`audio-classification`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/audio-classification) | [SUPERB KS](https://huggingface.co/datasets/superb) | ✅ | - |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/audio_classification.ipynb) +| [**`image-pretraining`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/image-pretraining) | [ImageNet-1k](https://huggingface.co/datasets/imagenet-1k) | ✅ | - |✅ | / +| [**`image-classification`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/image-classification) | [CIFAR-10](https://huggingface.co/datasets/cifar10) | ✅ | ✅ |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/image_classification.ipynb) +| [**`semantic-segmentation`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/semantic-segmentation) | [SCENE_PARSE_150](https://huggingface.co/datasets/scene_parse_150) | ✅ | ✅ |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/semantic_segmentation.ipynb) + + +## Running quick tests + +Most examples are equipped with a mechanism to truncate the number of dataset samples to the desired length. This is useful for debugging purposes, for example to quickly check that all stages of the programs can complete, before running the same setup on the full dataset which may take hours to complete. + +For example here is how to truncate all three splits to just 50 samples each: +``` +examples/pytorch/token-classification/run_ner.py \ +--max_train_samples 50 \ +--max_eval_samples 50 \ +--max_predict_samples 50 \ +[...] +``` + +Most example scripts should have the first two command line arguments and some have the third one. You can quickly check if a given example supports any of these by passing a `-h` option, e.g.: +``` +examples/pytorch/token-classification/run_ner.py -h +``` + +## Resuming training + +You can resume training from a previous checkpoint like this: + +1. Pass `--output_dir previous_output_dir` without `--overwrite_output_dir` to resume training from the latest checkpoint in `output_dir` (what you would use if the training was interrupted, for instance). +2. Pass `--resume_from_checkpoint path_to_a_specific_checkpoint` to resume training from that checkpoint folder. + +Should you want to turn an example into a notebook where you'd no longer have access to the command +line, 🤗 Trainer supports resuming from a checkpoint via `trainer.train(resume_from_checkpoint)`. + +1. If `resume_from_checkpoint` is `True` it will look for the last checkpoint in the value of `output_dir` passed via `TrainingArguments`. +2. If `resume_from_checkpoint` is a path to a specific checkpoint it will use that saved checkpoint folder to resume the training from. + + +### Upload the trained/fine-tuned model to the Hub + +All the example scripts support automatic upload of your final model to the [Model Hub](https://huggingface.co/models) by adding a `--push_to_hub` argument. It will then create a repository with your username slash the name of the folder you are using as `output_dir`. For instance, `"sgugger/test-mrpc"` if your username is `sgugger` and you are working in the folder `~/tmp/test-mrpc`. + +To specify a given repository name, use the `--hub_model_id` argument. You will need to specify the whole repository name (including your username), for instance `--hub_model_id sgugger/finetuned-bert-mrpc`. To upload to an organization you are a member of, just use the name of that organization instead of your username: `--hub_model_id huggingface/finetuned-bert-mrpc`. + +A few notes on this integration: + +- you will need to be logged in to the Hugging Face website locally for it to work, the easiest way to achieve this is to run `huggingface-cli login` and then type your username and password when prompted. You can also pass along your authentication token with the `--hub_token` argument. +- the `output_dir` you pick will either need to be a new folder or a local clone of the distant repository you are using. + +## Distributed training and mixed precision + +All the PyTorch scripts mentioned above work out of the box with distributed training and mixed precision, thanks to +the [Trainer API](https://huggingface.co/transformers/main_classes/trainer.html). To launch one of them on _n_ GPUs, +use the following command: + +```bash +python -m torch.distributed.launch \ + --nproc_per_node number_of_gpu_you_have path_to_script.py \ + --all_arguments_of_the_script +``` + +As an example, here is how you would fine-tune the BERT large model (with whole word masking) on the text +classification MNLI task using the `run_glue` script, with 8 GPUs: + +```bash +python -m torch.distributed.launch \ + --nproc_per_node 8 pytorch/text-classification/run_glue.py \ + --model_name_or_path bert-large-uncased-whole-word-masking \ + --task_name mnli \ + --do_train \ + --do_eval \ + --max_seq_length 128 \ + --per_device_train_batch_size 8 \ + --learning_rate 2e-5 \ + --num_train_epochs 3.0 \ + --output_dir /tmp/mnli_output/ +``` + +If you have a GPU with mixed precision capabilities (architecture Pascal or more recent), you can use mixed precision +training with PyTorch 1.6.0 or latest, or by installing the [Apex](https://github.com/NVIDIA/apex) library for previous +versions. Just add the flag `--fp16` to your command launching one of the scripts mentioned above! + +Using mixed precision training usually results in 2x-speedup for training with the same final results (as shown in +[this table](https://github.com/huggingface/transformers/tree/main/examples/text-classification#mixed-precision-training) +for text classification). + +## Running on TPUs + +When using Tensorflow, TPUs are supported out of the box as a `tf.distribute.Strategy`. + +When using PyTorch, we support TPUs thanks to `pytorch/xla`. For more context and information on how to setup your TPU environment refer to Google's documentation and to the +very detailed [pytorch/xla README](https://github.com/pytorch/xla/blob/master/README.md). + +In this repo, we provide a very simple launcher script named +[xla_spawn.py](https://github.com/huggingface/transformers/tree/main/examples/pytorch/xla_spawn.py) that lets you run our +example scripts on multiple TPU cores without any boilerplate. Just pass a `--num_cores` flag to this script, then your +regular training script with its arguments (this is similar to the `torch.distributed.launch` helper for +`torch.distributed`): + +```bash +python xla_spawn.py --num_cores num_tpu_you_have \ + path_to_script.py \ + --all_arguments_of_the_script +``` + +As an example, here is how you would fine-tune the BERT large model (with whole word masking) on the text +classification MNLI task using the `run_glue` script, with 8 TPUs (from this folder): + +```bash +python xla_spawn.py --num_cores 8 \ + text-classification/run_glue.py \ + --model_name_or_path bert-large-uncased-whole-word-masking \ + --task_name mnli \ + --do_train \ + --do_eval \ + --max_seq_length 128 \ + --per_device_train_batch_size 8 \ + --learning_rate 2e-5 \ + --num_train_epochs 3.0 \ + --output_dir /tmp/mnli_output/ +``` + +## Using Accelerate + +Most PyTorch example scripts have a version using the [🤗 Accelerate](https://github.com/huggingface/accelerate) library +that exposes the training loop so it's easy for you to customize or tweak them to your needs. They all require you to +install `accelerate` with the latest development version + +```bash +pip install git+https://github.com/huggingface/accelerate +``` + +Then you can easily launch any of the scripts by running + +```bash +accelerate config +``` + +and reply to the questions asked. Then + +```bash +accelerate test +``` + +that will check everything is ready for training. Finally, you can launch training with + +```bash +accelerate launch path_to_script.py --args_to_script +``` + +## Logging & Experiment tracking + +You can easily log and monitor your runs code. The following are currently supported: + +* [TensorBoard](https://www.tensorflow.org/tensorboard) +* [Weights & Biases](https://docs.wandb.ai/integrations/huggingface) +* [Comet ML](https://www.comet.ml/docs/python-sdk/huggingface/) +* [Neptune](https://docs.neptune.ai/integrations-and-supported-tools/model-training/hugging-face) +* [ClearML](https://clear.ml/docs/latest/docs/getting_started/ds/ds_first_steps) + +### Weights & Biases + +To use Weights & Biases, install the wandb package with: + +```bash +pip install wandb +``` + +Then log in the command line: + +```bash +wandb login +``` + +If you are in Jupyter or Colab, you should login with: + +```python +import wandb +wandb.login() +``` + +To enable logging to W&B, include `"wandb"` in the `report_to` of your `TrainingArguments` or script. Or just pass along `--report_to all` if you have `wandb` installed. + +Whenever you use `Trainer` or `TFTrainer` classes, your losses, evaluation metrics, model topology and gradients (for `Trainer` only) will automatically be logged. + +Advanced configuration is possible by setting environment variables: + +| Environment Variable | Value | +|---|---| +| WANDB_LOG_MODEL | Log the model as artifact (log the model as artifact at the end of training) (`false` by default) | +| WANDB_WATCH | one of `gradients` (default) to log histograms of gradients, `all` to log histograms of both gradients and parameters, or `false` for no histogram logging | +| WANDB_PROJECT | Organize runs by project | + +Set run names with `run_name` argument present in scripts or as part of `TrainingArguments`. + +Additional configuration options are available through generic [wandb environment variables](https://docs.wandb.com/library/environment-variables). + +Refer to related [documentation & examples](https://docs.wandb.ai/integrations/huggingface). + +### Comet.ml + +To use `comet_ml`, install the Python package with: + +```bash +pip install comet_ml +``` + +or if in a Conda environment: + +```bash +conda install -c comet_ml -c anaconda -c conda-forge comet_ml +``` + +### Neptune + +First, install the Neptune client library. You can do it with either `pip` or `conda`: + +`pip`: + +```bash +pip install neptune-client +``` + +`conda`: + +```bash +conda install -c conda-forge neptune-client +``` + +Next, in your model training script, import `NeptuneCallback`: + +```python +from transformers.integrations import NeptuneCallback +``` + +To enable Neptune logging, in your `TrainingArguments`, set the `report_to` argument to `"neptune"`: + +```python +training_args = TrainingArguments( + "quick-training-distilbert-mrpc", + evaluation_strategy="steps", + eval_steps = 20, + report_to = "neptune", +) + +trainer = Trainer( + model, + training_args, + ... +) +``` + +Alternatively, for more logging options, create a Neptune callback: + +```python +neptune_callback = NeptuneCallback() +``` + +To add more detail to the tracked run, you can supply optional arguments to `NeptuneCallback`. + +Some examples: + +```python +neptune_callback = NeptuneCallback( + name = "DistilBERT", + description = "DistilBERT fine-tuned on GLUE/MRPC", + tags = ["args-callback", "fine-tune", "MRPC"], # tags help you manage runs in Neptune + base_namespace="callback", # the default is "finetuning" + log_checkpoints = "best", # other options are "last", "same", and None + capture_hardware_metrics = False, # additional keyword arguments for a Neptune run +) +``` + +Pass the callback to the Trainer: + +```python +training_args = TrainingArguments(..., report_to = None) +trainer = Trainer( + model, + training_args, + ... + callbacks=[neptune_callback], +) +``` + +Now, when you start the training with `trainer.train()`, your metadata will be logged in Neptune. + +**Note:** Although you can pass your **Neptune API token** and **project name** as arguments when creating the callback, the recommended way is to save them as environment variables: + +| Environment variable | Value | +| :------------------- | :--------------------------------------------------- | +| `NEPTUNE_API_TOKEN` | Your Neptune API token. To find and copy it, click your Neptune avatar and select **Get your API token**. | +| `NEPTUNE_PROJECT` | The full name of your Neptune project (`workspace-name/project-name`). To find and copy it, head to **project settings** → **Properties**. | + +For detailed instructions and examples, see the [Neptune docs](https://docs.neptune.ai/integrations-and-supported-tools/model-training/hugging-face). + +### ClearML + +To use ClearML, install the clearml package with: + +```bash +pip install clearml +``` + +Then [create new credentials]() from the ClearML Server. You can get a free hosted server [here]() or [self-host your own]()! +After creating your new credentials, you can either copy the local snippet which you can paste after running: + +```bash +clearml-init +``` + +Or you can copy the jupyter snippet if you are in Jupyter or Colab: + +```python +%env CLEARML_WEB_HOST=https://app.clear.ml +%env CLEARML_API_HOST=https://api.clear.ml +%env CLEARML_FILES_HOST=https://files.clear.ml +%env CLEARML_API_ACCESS_KEY=*** +%env CLEARML_API_SECRET_KEY=*** +``` + + +To enable logging to ClearML, include `"clearml"` in the `report_to` of your `TrainingArguments` or script. Or just pass along `--report_to all` if you have `clearml` already installed. + +Advanced configuration is possible by setting environment variables: + +| Environment Variable | Value | +|---|---| +| CLEARML_PROJECT | Name of the project in ClearML. (default: `"HuggingFace Transformers"`) | +| CLEARML_TASK | Name of the task in ClearML. (default: `"Trainer"`) | + +Additional configuration options are available through generic [clearml environment variables](https://clear.ml/docs/latest/docs/configs/env_vars). \ No newline at end of file diff --git a/adapters/examples/pytorch/_tests_requirements.txt b/adapters/examples/pytorch/_tests_requirements.txt new file mode 100644 index 00000000..979890f4 --- /dev/null +++ b/adapters/examples/pytorch/_tests_requirements.txt @@ -0,0 +1,25 @@ +tensorboard +scikit-learn +seqeval +psutil +sacrebleu >= 1.4.12 +git+https://github.com/huggingface/accelerate@main#egg=accelerate +rouge-score +tensorflow_datasets +matplotlib +git-python==1.0.3 +faiss-cpu +streamlit +elasticsearch +nltk +pandas +datasets >= 1.13.3 +fire +pytest +conllu +sentencepiece != 0.1.92 +protobuf +torchvision +jiwer +librosa +evaluate >= 0.2.0 diff --git a/adapters/examples/pytorch/adapterdrop/drop_at_inference.py b/adapters/examples/pytorch/adapterdrop/drop_at_inference.py new file mode 100644 index 00000000..3f4fd2ec --- /dev/null +++ b/adapters/examples/pytorch/adapterdrop/drop_at_inference.py @@ -0,0 +1,28 @@ +# TODO: Replace this with a proper colab notebook +import torch + +import adapters +from transformers import AutoModelForSequenceClassification, AutoTokenizer + + +if __name__ == "__main__": + """A temporary example to highlight changes implemented for AdapterDrop at inference""" + model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") + # Convert the model into an adapter model + adapters.init(model) + model.load_adapter("sentiment/sst-2@ukp") + + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + tokens = tokenizer.tokenize("AdapterHub is awesome!") + input_tensor = torch.tensor([tokenizer.convert_tokens_to_ids(tokens)]) + + model.set_active_adapters("sst-2") + outputs_nodrop = model(input_tensor) + + model.set_active_adapters("sst-2", skip_layers=[0, 1]) + outputs_adapterdrop = model(input_tensor) + + # different probs + assert not torch.equal(outputs_nodrop[0], outputs_adapterdrop[0]) + # but they should still result in the same prediction + assert torch.equal(torch.argmax(outputs_nodrop[0]), torch.argmax(outputs_adapterdrop[0])) diff --git a/adapters/examples/pytorch/adapterfusion/README.md b/adapters/examples/pytorch/adapterfusion/README.md new file mode 100644 index 00000000..6aa0563f --- /dev/null +++ b/adapters/examples/pytorch/adapterfusion/README.md @@ -0,0 +1,3 @@ +# AdapterFusion examples + +More information, including an example of how to run the script, can be found here: https://docs.adapterhub.ml/training.html#train-adapterfusion. diff --git a/adapters/examples/pytorch/adapterfusion/run_fusion_glue.py b/adapters/examples/pytorch/adapterfusion/run_fusion_glue.py new file mode 100644 index 00000000..d02aa811 --- /dev/null +++ b/adapters/examples/pytorch/adapterfusion/run_fusion_glue.py @@ -0,0 +1,282 @@ +# coding=utf-8 +# Copyright 2018 The Google AI Language Team Authors and The HuggingFace Inc. team. +# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" Finetuning the library models for sequence classification on +GLUE (Bert, XLM, XLNet, RoBERTa, Albert, XLM-RoBERTa).""" + + +import dataclasses +import logging +import os +import sys +from dataclasses import dataclass, field +from typing import Dict, Optional + +import numpy as np + +import adapters +from adapters import AdapterArguments, AdapterTrainer +from transformers import AutoConfig, AutoModelForSequenceClassification, AutoTokenizer, EvalPrediction, GlueDataset +from transformers import GlueDataTrainingArguments as DataTrainingArguments +from transformers import ( + HfArgumentParser, + TrainingArguments, + glue_compute_metrics, + glue_output_modes, + glue_tasks_num_labels, + set_seed, +) + + +logger = logging.getLogger(__name__) + + +@dataclass +class ModelArguments: + """ + Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. + """ + + model_name_or_path: str = field( + metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} + ) + config_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} + ) + tokenizer_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} + ) + cache_dir: Optional[str] = field( + default=None, metadata={"help": "Where do you want to store the pretrained models downloaded from s3"} + ) + + +def main(): + # See all possible arguments in src/transformers/training_args.py + # or by passing the --help flag to this script. + # We now keep distinct sets of args, for a cleaner separation of concerns. + + parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) + + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, training_args, adapter_args = parser.parse_json_file( + json_file=os.path.abspath(sys.argv[1]) + ) + else: + model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() + + if ( + os.path.exists(training_args.output_dir) + and os.listdir(training_args.output_dir) + and training_args.do_train + and not training_args.overwrite_output_dir + ): + raise ValueError( + f"Output directory ({training_args.output_dir}) already exists and is not empty." + " Use --overwrite_output_dir to overcome." + ) + + # Setup logging + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + level=logging.INFO if training_args.local_rank in [-1, 0] else logging.WARN, + ) + logger.warning( + "Process rank: %s, device: %s, n_gpu: %s, distributed training: %s, 16-bits training: %s", + training_args.local_rank, + training_args.device, + training_args.n_gpu, + bool(training_args.local_rank != -1), + training_args.fp16, + ) + logger.info("Training/evaluation parameters %s", training_args) + + # Set seed + set_seed(training_args.seed) + + try: + num_labels = glue_tasks_num_labels[data_args.task_name] + output_mode = glue_output_modes[data_args.task_name] + except KeyError: + raise ValueError("Task not found: %s" % (data_args.task_name)) + + # Load pretrained model and tokenizer + # + # Distributed training: + # The .from_pretrained methods guarantee that only one local process can concurrently + # download model & vocab. + + config = AutoConfig.from_pretrained( + model_args.config_name if model_args.config_name else model_args.model_name_or_path, + num_labels=num_labels, + finetuning_task=data_args.task_name, + cache_dir=model_args.cache_dir, + ) + tokenizer = AutoTokenizer.from_pretrained( + model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + ) + model = AutoModelForSequenceClassification.from_pretrained( + model_args.model_name_or_path, + from_tf=bool(".ckpt" in model_args.model_name_or_path), + config=config, + cache_dir=model_args.cache_dir, + ) + + # Convert the model into an adapter model + adapters.init(model) + + # ~~~~~ Here comes the interesting part of setting up AdapterFusion training ~~~~~ + + from adapters.configuration import SeqBnConfig + + # First, load the pre-trained adapters we want to fuse from Hub + model.load_adapter("sentiment/sst-2@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("nli/multinli@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("nli/rte@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("sts/mrpc@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("sts/qqp@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("comsense/cosmosqa@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("comsense/csqa@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("comsense/hellaswag@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("comsense/siqa@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("comsense/winogrande@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("nli/cb@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("nli/sick@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("nli/scitail@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("qa/boolq@ukp", config=SeqBnConfig(), with_head=False) + model.load_adapter("sentiment/imdb@ukp", config=SeqBnConfig(), with_head=False) + + adapter_setup = [ + [ + "sst-2", + "mnli", + "rte", + "mrpc", + "qqp", + "cosmosqa", + "csqa", + "hellaswag", + "socialiqa", + "winogrande", + "cb", + "sick", + "scitail", + "boolq", + "imdb", + ] + ] + + # Add a fusion layer and tell the model to train fusion + model.add_adapter_fusion(adapter_setup[0], "dynamic") + model.train_adapter_fusion(adapter_setup) + + # ~~~~~ Rest is again same as in standard training setup ~~~~~ + + # Get datasets + train_dataset = GlueDataset(data_args, tokenizer=tokenizer) if training_args.do_train else None + eval_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="dev") if training_args.do_eval else None + test_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="test") if training_args.do_predict else None + + def compute_metrics(p: EvalPrediction) -> Dict: + if output_mode == "classification": + preds = np.argmax(p.predictions, axis=1) + elif output_mode == "regression": + preds = np.squeeze(p.predictions) + return glue_compute_metrics(data_args.task_name, preds, p.label_ids) + + trainer = AdapterTrainer( + model=model, + args=training_args, + train_dataset=train_dataset, + eval_dataset=eval_dataset, + compute_metrics=compute_metrics, + ) + + # Training + if training_args.do_train: + trainer.train( + model_path=model_args.model_name_or_path if os.path.isdir(model_args.model_name_or_path) else None + ) + trainer.save_model() + # For convenience, we also re-save the tokenizer to the same directory, + # so that you can share your model easily on huggingface.co/models =) + if trainer.is_world_process_zero(): + tokenizer.save_pretrained(training_args.output_dir) + + # Evaluation + eval_results = {} + if training_args.do_eval: + logger.info("*** Evaluate ***") + + # Loop to handle MNLI double evaluation (matched, mis-matched) + eval_datasets = [eval_dataset] + if data_args.task_name == "mnli": + mnli_mm_data_args = dataclasses.replace(data_args, task_name="mnli-mm") + eval_datasets.append(GlueDataset(mnli_mm_data_args, tokenizer=tokenizer, mode="dev")) + + for eval_dataset in eval_datasets: + eval_result = trainer.evaluate(eval_dataset=eval_dataset) + + output_eval_file = os.path.join( + training_args.output_dir, f"eval_results_{eval_dataset.args.task_name}.txt" + ) + if trainer.is_world_process_zero(): + with open(output_eval_file, "w") as writer: + logger.info("***** Eval results {} *****".format(eval_dataset.args.task_name)) + for key, value in eval_result.items(): + logger.info(" %s = %s", key, value) + writer.write("%s = %s\n" % (key, value)) + + eval_results.update(eval_result) + + if training_args.do_predict: + logging.info("*** Test ***") + test_datasets = [test_dataset] + if data_args.task_name == "mnli": + mnli_mm_data_args = dataclasses.replace(data_args, task_name="mnli-mm") + test_datasets.append(GlueDataset(mnli_mm_data_args, tokenizer=tokenizer, mode="test")) + + for test_dataset in test_datasets: + predictions = trainer.predict(test_dataset=test_dataset).predictions + if output_mode == "classification": + predictions = np.argmax(predictions, axis=1) + + output_test_file = os.path.join( + training_args.output_dir, f"test_results_{test_dataset.args.task_name}.txt" + ) + if trainer.is_world_process_zero(): + with open(output_test_file, "w") as writer: + logger.info("***** Test results {} *****".format(test_dataset.args.task_name)) + writer.write("index\tprediction\n") + for index, item in enumerate(predictions): + if output_mode == "regression": + writer.write("%d\t%3.3f\n" % (index, item)) + else: + item = test_dataset.get_labels()[item] + writer.write("%d\t%s\n" % (index, item)) + return eval_results + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/conftest.py b/adapters/examples/pytorch/conftest.py new file mode 100644 index 00000000..e85e5afb --- /dev/null +++ b/adapters/examples/pytorch/conftest.py @@ -0,0 +1,45 @@ +# Copyright 2020 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# tests directory-specific settings - this file is run automatically +# by pytest before any tests are run + +import sys +import warnings +from os.path import abspath, dirname, join + + +# allow having multiple repository checkouts and not needing to remember to rerun +# 'pip install -e .[dev]' when switching between checkouts and running tests. +git_repo_path = abspath(join(dirname(dirname(dirname(__file__))), "src")) +sys.path.insert(1, git_repo_path) + + +# silence FutureWarning warnings in tests since often we can't act on them until +# they become normal warnings - i.e. the tests still need to test the current functionality +warnings.simplefilter(action="ignore", category=FutureWarning) + + +def pytest_addoption(parser): + from transformers.testing_utils import pytest_addoption_shared + + pytest_addoption_shared(parser) + + +def pytest_terminal_summary(terminalreporter): + from transformers.testing_utils import pytest_terminal_summary_main + + make_reports = terminalreporter.config.getoption("--make-reports") + if make_reports: + pytest_terminal_summary_main(terminalreporter, id=make_reports) diff --git a/adapters/examples/pytorch/dependency-parsing/README.md b/adapters/examples/pytorch/dependency-parsing/README.md new file mode 100644 index 00000000..865b6fcc --- /dev/null +++ b/adapters/examples/pytorch/dependency-parsing/README.md @@ -0,0 +1,48 @@ +# Dependency parsing on Universal Dependencies with Adapters + +These example scripts are based on the fine-tuning code from the repository of ["How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models"](https://github.com/Adapter-Hub/hgiyt). +The scripts were upgraded to `adapters` v2.x and modified to use [flex heads](https://docs.adapterhub.ml/prediction_heads.html#models-with-flexible-heads) and HuggingFace Datasets. + +The used biaffine dependency parsing prediction head is described in ["Is Supervised Syntactic Parsing Beneficial for Language Understanding Tasks? An Empirical Investigation" (Glavaš & Vulić, 2021)](https://arxiv.org/pdf/2008.06788.pdf). + +A new prediction head can be added to BERT-based models via the `add_dependency_parsing_head()` methods, e.g.: +```python +model = AutoAdapterModel.from_pretrained("bert-base-uncased") +model.add_dependency_parsing_head( + "dependency_parsing", + num_labels=num_labels, + id2label=label_map, +) +``` + +## Training on Universal Dependencies + +Script: [`run_udp.py`](https://github.com/Adapter-Hub/adapters/blob/master/examples/dependency-parsing/run_udp.py). + +Fine-tuning on the treebanks of [Universal Dependencies](https://universaldependencies.org/). +The datasets are loaded from [HuggingFace Datasets](https://huggingface.co/datasets/universal_dependencies) and which dataset to use can be specified via the `--task_name` option. + +Training an adapter on the English Web Treebank (`en_ewt`) could be done as follows: + +```bash +export TASK_NAME="en_ewt" + +python run_udp.py \ + --model_name_or_path bert-base-cased \ + --do_train \ + --do_eval \ + --do_predict \ + --task_name $TASK_NAME \ + --per_device_train_batch_size 12 \ + --learning_rate 5e-4 \ + --num_train_epochs 10 \ + --max_seq_length 256 \ + --output_dir experiments/$TASK_NAME \ + --overwrite_output_dir \ + --store_best_model \ + --evaluation_strategy epoch \ + --metric_score las \ + --train_adapter +``` + +Fore more information, also visit the original code at https://github.com/Adapter-Hub/hgiyt/tree/master/finetuning. diff --git a/adapters/examples/pytorch/dependency-parsing/preprocessing.py b/adapters/examples/pytorch/dependency-parsing/preprocessing.py new file mode 100644 index 00000000..2188aab4 --- /dev/null +++ b/adapters/examples/pytorch/dependency-parsing/preprocessing.py @@ -0,0 +1,100 @@ +""" +Code taken and modified from: https://github.com/Adapter-Hub/hgiyt. +Credits: "How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models" (Rust et al., 2021) +https://arxiv.org/abs/2012.15613 +""" +from collections import defaultdict +from typing import List + +import datasets +import numpy as np + +from transformers import PreTrainedTokenizer + + +def preprocess_dataset( + dataset: datasets.DatasetDict, + tokenizer: PreTrainedTokenizer, + label_list: List[str], + data_args, + pad_token_id=-1, +): + label_map = {label: i for i, label in enumerate(label_list)} + + def encode_batch(examples): + features = defaultdict(list) + for words, heads, deprels in zip(examples["tokens"], examples["head"], examples["deprel"]): + # clean up + i = 0 + while i < len(heads): + if heads[i] == "None": + del words[i] + del heads[i] + del deprels[i] + i += 1 + tokens = [tokenizer.tokenize(w) for w in words] + word_lengths = [len(w) for w in tokens] + tokens_merged = [] + list(map(tokens_merged.extend, tokens)) + + if 0 in word_lengths: + continue + # Filter out sequences that are too long + if len(tokens_merged) >= (data_args.max_seq_length - 2): + continue + + encoding = tokenizer( + words, + add_special_tokens=True, + padding="max_length", + truncation=True, + max_length=data_args.max_seq_length, + is_split_into_words=True, + return_token_type_ids=True, + return_attention_mask=True, + ) + + input_ids = encoding["input_ids"] + token_type_ids = encoding["token_type_ids"] + attention_mask = encoding["attention_mask"] + + pad_item = [pad_token_id] + + # pad or truncate arc labels + labels_arcs = [int(h) for h in heads] + labels_arcs = labels_arcs + (data_args.max_seq_length - len(labels_arcs)) * pad_item + + # convert rel labels from map, pad or truncate if necessary + labels_rels = [label_map[i.split(":")[0]] for i in deprels] + labels_rels = labels_rels + (data_args.max_seq_length - len(labels_rels)) * pad_item + + # determine start indices of words, pad or truncate if necessary + word_starts = np.cumsum([1] + word_lengths).tolist() + word_starts = word_starts + (data_args.max_seq_length + 1 - len(word_starts)) * pad_item + + # sanity check lengths + assert len(input_ids) == data_args.max_seq_length + assert len(attention_mask) == data_args.max_seq_length + assert len(token_type_ids) == data_args.max_seq_length + assert len(labels_arcs) == data_args.max_seq_length + assert len(labels_rels) == data_args.max_seq_length + assert len(word_starts) == data_args.max_seq_length + 1 + + features["input_ids"].append(input_ids) + features["attention_mask"].append(attention_mask) + features["token_type_ids"].append(token_type_ids) + features["word_starts"].append(word_starts) + features["labels_arcs"].append(labels_arcs) + features["labels_rels"].append(labels_rels) + + return dict(features) + + # Expects columns in all splits to be identical + remove_columns = dataset.column_names["train"] + dataset = dataset.map( + encode_batch, + batched=True, + load_from_cache_file=not data_args.overwrite_cache, + remove_columns=remove_columns, + ) + return dataset diff --git a/adapters/examples/pytorch/dependency-parsing/requirements.txt b/adapters/examples/pytorch/dependency-parsing/requirements.txt new file mode 100644 index 00000000..b316ccf4 --- /dev/null +++ b/adapters/examples/pytorch/dependency-parsing/requirements.txt @@ -0,0 +1,3 @@ +datasets >= 1.8.0 +torch >= 1.3 +conllu diff --git a/adapters/examples/pytorch/dependency-parsing/run_udp.py b/adapters/examples/pytorch/dependency-parsing/run_udp.py new file mode 100644 index 00000000..8fefe1f4 --- /dev/null +++ b/adapters/examples/pytorch/dependency-parsing/run_udp.py @@ -0,0 +1,302 @@ +""" +Code taken and modified from: https://github.com/Adapter-Hub/hgiyt. +Credits: "How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models" (Rust et al., 2021) +https://arxiv.org/abs/2012.15613 +""" +import logging +import os +import sys +from dataclasses import dataclass, field +from typing import Dict, Optional + +from datasets import load_dataset + +import adapters +import adapters.composition as ac +from adapters import AdapterArguments, AdapterConfig, AutoAdapterModel, setup_adapter_training +from preprocessing import preprocess_dataset +from transformers import AutoConfig, AutoTokenizer, HfArgumentParser, set_seed +from utils_udp import UD_HEAD_LABELS, DependencyParsingAdapterTrainer, DependencyParsingTrainer, UDTrainingArguments + + +logger = logging.getLogger(__name__) + + +@dataclass +class ModelArguments: + """ + Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. + """ + + model_name_or_path: str = field( + metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} + ) + config_name: Optional[str] = field( + default=None, + metadata={"help": "Pretrained config name or path if not the same as model_name"}, + ) + tokenizer_name: Optional[str] = field( + default=None, + metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"}, + ) + use_fast: bool = field(default=False, metadata={"help": "Set this flag to use fast tokenization."}) + # If you want to tweak more attributes on your tokenizer, you should do it in a distinct script, + # or just modify its tokenizer_config.json. + cache_dir: Optional[str] = field( + default=None, + metadata={"help": "Where do you want to store the pretrained models downloaded from s3"}, + ) + replace_embeddings: bool = field(default=False, metadata={"help": "Whether or not to replace embeddings."}) + leave_out_twelvth: bool = field( + default=False, metadata={"help": "Whether or not to leave out adapters in twelvth layer"} + ) + do_lower_case: bool = field(default=False, metadata={"help": "Set this flag when using uncased model/tokenizer"}) + is_japanese: bool = field(default=False, metadata={"help": "Set this to true when using Japanese model/tokenizer"}) + mecab_dir: Optional[str] = field( + default=None, metadata={"help": "Path to mecab installation. Required when using Japanese model/tokenizer"} + ) + mecab_dic_dir: Optional[str] = field( + default=None, metadata={"help": "Path to mecab dictionary. Required when using Japanese model/tokenizer"} + ) + + +@dataclass +class DataTrainingArguments: + """ + Arguments pertaining to what data we are going to input our model for training and eval. + """ + + task_name: str = field(metadata={"help": "The identifier of the Universal Dependencies dataset to train on."}) + max_seq_length: int = field( + default=128, + metadata={ + "help": ( + "The maximum total input sequence length after tokenization. Sequences longer " + "than this will be truncated, sequences shorter will be padded." + ) + }, + ) + overwrite_cache: bool = field( + default=False, + metadata={"help": "Overwrite the cached training and evaluation sets."}, + ) + use_mock_data: bool = field(default=False) + evaluate_on: str = field(default="validation") + + +def main(): + # See all possible arguments in src/transformers/training_args.py + # or by passing the --help flag to this script. + # We now keep distinct sets of args, for a cleaner separation of concerns. + parser = HfArgumentParser((ModelArguments, DataTrainingArguments, UDTrainingArguments, AdapterArguments)) + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, training_args, adapter_args = parser.parse_json_file( + json_file=os.path.abspath(sys.argv[1]) + ) + else: + ( + model_args, + data_args, + training_args, + adapter_args, + ) = parser.parse_args_into_dataclasses() + + if ( + os.path.exists(training_args.output_dir) + and os.listdir(training_args.output_dir) + and training_args.do_train + and not training_args.overwrite_output_dir + ): + raise ValueError( + f"Output directory ({training_args.output_dir}) already exists and is not empty. Use" + " --overwrite_output_dir to overcome." + ) + + # Setup logging + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + level=logging.INFO if training_args.local_rank in [-1, 0] else logging.WARN, + ) + logger.warning( + "Process rank: %s, device: %s, n_gpu: %s, distributed training: %s, 16-bits training: %s", + training_args.local_rank, + training_args.device, + training_args.n_gpu, + bool(training_args.local_rank != -1), + training_args.fp16, + ) + logger.info("Training/evaluation parameters %s", training_args) + + # Set seed + set_seed(training_args.seed) + + # Prepare for UD dependency parsing task + labels = UD_HEAD_LABELS + label_map: Dict[int, str] = {i: label for i, label in enumerate(labels)} + num_labels = len(labels) + + config = AutoConfig.from_pretrained( + model_args.config_name if model_args.config_name else model_args.model_name_or_path, + num_labels=num_labels, + id2label=label_map, + label2id={label: i for i, label in enumerate(labels)}, + cache_dir=model_args.cache_dir, + pad_token_id=-1, + ) + + if model_args.is_japanese: + assert model_args.mecab_dir is not None + assert model_args.mecab_dic_dir is not None + + tokenizer = AutoTokenizer.from_pretrained( + model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + use_fast=model_args.use_fast, + do_lower_case=model_args.do_lower_case, + add_prefix_space=True, # Used e.g. for RoBERTa + mecab_kwargs={"mecab_option": f"-r {model_args.mecab_dir} -d {model_args.mecab_dic_dir}"} + if model_args.is_japanese + else None, + ) + + # The task name (with prefix) + task_name = "ud_" + data_args.task_name + + model = AutoAdapterModel.from_pretrained( + model_args.model_name_or_path, + config=config, + cache_dir=model_args.cache_dir, + ) + + # Convert the model into an adapter model + adapters.init(model) + model.add_dependency_parsing_head( + task_name, + num_labels=num_labels, + id2label=label_map, + ) + + # Load and preprocess dataset + if data_args.use_mock_data: + from datasets import Version, load_dataset_builder + from datasets.commands.dummy_data import MockDownloadManager + + dataset_builder = load_dataset_builder("universal_dependencies", data_args.task_name) + mock_dl_manager = MockDownloadManager("universal_dependencies", dataset_builder.config, Version("2.7.0")) + dataset_builder.download_and_prepare(dl_manager=mock_dl_manager, ignore_verifications=True) + dataset = dataset_builder.as_dataset() + else: + dataset = load_dataset("universal_dependencies", data_args.task_name) + dataset = preprocess_dataset(dataset, tokenizer, labels, data_args, pad_token_id=-1) + + # Setup adapters + if model_args.leave_out_twelvth: + logger.info("Leaving out 12") + adapter_config_kwargs = {"leave_out": [11]} + adapter_load_kwargs = {"leave_out": [11]} + else: + adapter_config_kwargs = {} + adapter_load_kwargs = {} + adapter_name, lang_adapter_name = setup_adapter_training( + model, + adapter_args, + task_name, + adapter_config_kwargs=adapter_config_kwargs, + adapter_load_kwargs=adapter_load_kwargs, + ) + # Initialize our Trainer + # HACK: Set this attribute to False to prevent label columns from being deleted + training_args.remove_unused_columns = False + trainer_class = DependencyParsingAdapterTrainer if adapter_args.train_adapter else DependencyParsingTrainer + trainer = trainer_class( + model=model, + args=training_args, + train_dataset=dataset["train"], + eval_dataset=dataset[data_args.evaluate_on], + ) + + # Training + if training_args.do_train: + train_result = trainer.train( + model_path=model_args.model_name_or_path if os.path.isdir(model_args.model_name_or_path) else None + ) + metrics = train_result.metrics + + trainer.save_model() + + trainer.log_metrics("train", metrics) + trainer.save_metrics("train", metrics) + trainer.save_state() + + # Evaluation + results = {} + if training_args.do_eval: + logger.info("*** Evaluate ***") + + result = trainer.evaluate() + + if trainer.is_world_process_zero(): + results.update(result) + + trainer.log_metrics("eval", result) + trainer.save_metrics("eval", result) + + # Predict + if training_args.do_predict: + logging.info("*** Test ***") + + if training_args.store_best_model: + logger.info("Loading best model for predictions.") + + if adapter_args.train_adapter: + adapter_config = AdapterConfig.load(adapter_args.adapter_config, **adapter_config_kwargs) + model.load_adapter( + os.path.join(training_args.output_dir, "best_model", task_name) + if training_args.do_train + else adapter_args.load_adapter, + config=adapter_config, + load_as=task_name, + **adapter_load_kwargs, + ) + if adapter_args.load_lang_adapter: + lang_adapter_config = AdapterConfig.load(adapter_args.lang_adapter_config, **adapter_config_kwargs) + lang_adapter_name = model.load_adapter( + os.path.join(training_args.output_dir, "best_model", lang_adapter_name) + if training_args.do_train + else adapter_args.load_lang_adapter, + config=lang_adapter_config, + load_as=lang_adapter_name, + **adapter_load_kwargs, + ) + else: + lang_adapter_name = None + if lang_adapter_name: + model.set_active_adapters(ac.Stack(lang_adapter_name, task_name)) + else: + model.set_active_adapters(task_name) + model.to(training_args.device) + else: + trainer.model = AutoAdapterModel.from_pretrained( + os.path.join(training_args.output_dir, "best_model"), + from_tf=bool(".ckpt" in model_args.model_name_or_path), + config=config, + cache_dir=model_args.cache_dir, + ).to(training_args.device) + + predictions, _, metrics = trainer.predict(dataset["test"]) + + output_test_results_file = os.path.join(training_args.output_dir, "test_results.txt") + if trainer.is_world_process_zero(): + with open(output_test_results_file, "w") as writer: + for key, value in metrics.items(): + logger.info(" %s = %s", key, value) + writer.write("%s = %s\n" % (key, value)) + + return results + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/dependency-parsing/utils_udp.py b/adapters/examples/pytorch/dependency-parsing/utils_udp.py new file mode 100644 index 00000000..34246383 --- /dev/null +++ b/adapters/examples/pytorch/dependency-parsing/utils_udp.py @@ -0,0 +1,376 @@ +""" +Code taken and modified from: https://github.com/Adapter-Hub/hgiyt. +Credits: "How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models" (Rust et al., 2021) +https://arxiv.org/abs/2012.15613 +""" +import collections +import logging +import os +from dataclasses import dataclass, field +from typing import Callable, Dict, List, Optional, Tuple, Union + +import numpy as np +import torch +from torch.utils.data import DataLoader +from torch.utils.data.dataset import Dataset +from tqdm import tqdm + +from adapters import AdapterTrainer +from transformers import ( + DataCollator, + EvalPrediction, + PreTrainedModel, + PreTrainedTokenizerBase, + Trainer, + TrainerCallback, + TrainingArguments, + is_torch_tpu_available, +) +from transformers.trainer_utils import PredictionOutput + + +if is_torch_tpu_available(): + import torch_xla.core.xla_model as xm + import torch_xla.debug.metrics as met + +logger = logging.getLogger(__name__) + +UD_HEAD_LABELS = [ + "_", + "acl", + "advcl", + "advmod", + "amod", + "appos", + "aux", + "case", + "cc", + "ccomp", + "clf", + "compound", + "conj", + "cop", + "csubj", + "dep", + "det", + "discourse", + "dislocated", + "expl", + "fixed", + "flat", + "goeswith", + "iobj", + "list", + "mark", + "nmod", + "nsubj", + "nummod", + "obj", + "obl", + "orphan", + "parataxis", + "punct", + "reparandum", + "root", + "vocative", + "xcomp", +] + + +@dataclass +class UDTrainingArguments(TrainingArguments): + """ + Extends TrainingArguments for Universal Dependencies (UD) dependency parsing. + TrainingArguments is the subset of the arguments we use in our example scripts + **which relate to the training loop itself**. + + Using `HfArgumentParser` we can turn this class + into argparse arguments to be able to specify them on + the command line. + """ + + decode_mode: str = field(default="greedy", metadata={"help": "Whether to use mst decoding or greedy decoding"}) + store_best_model: bool = field(default=False, metadata={"help": "Whether to store best model during training."}) + metric_score: Optional[str] = field( + default=None, metadata={"help": "Metric used to determine best model during training."} + ) + + +class Metric(object): + def add(self, gold, prediction): + raise NotImplementedError + + def get_metric(self) -> Dict[str, float]: + raise NotImplementedError + + def reset(self): + raise NotImplementedError + + @staticmethod + def unpack(*tensors: torch.Tensor): + return (x.detach().cpu() if isinstance(x, torch.Tensor) else x for x in tensors) + + +class ParsingMetric(Metric): + """ + based on allennlp.training.metrics.AttachmentScores + Computes labeled and unlabeled attachment scores for a dependency parse. Note that the input + to this metric is the sampled predictions, not the distribution itself. + """ + + def __init__(self): + self._labeled_correct = 0.0 + self._unlabeled_correct = 0.0 + self._total_words = 0.0 + + def add( + self, + gold_indices: torch.Tensor, + gold_labels: torch.Tensor, + predicted_indices: torch.Tensor, + predicted_labels: torch.Tensor, + ): + """ + Parameters + ---------- + predicted_indices : ``torch.Tensor``, required. + A tensor of head index predictions of shape (batch_size, timesteps). + predicted_labels : ``torch.Tensor``, required. + A tensor of arc label predictions of shape (batch_size, timesteps). + gold_indices : ``torch.Tensor``, required. + A tensor of the same shape as ``predicted_indices``. + gold_labels : ``torch.Tensor``, required. + A tensor of the same shape as ``predicted_labels``. + """ + unwrapped = self.unpack(predicted_indices, predicted_labels, gold_indices, gold_labels) + predicted_indices, predicted_labels, gold_indices, gold_labels = unwrapped + + predicted_indices = predicted_indices.long() + predicted_labels = predicted_labels.long() + gold_indices = gold_indices.long() + gold_labels = gold_labels.long() + + correct_indices = predicted_indices.eq(gold_indices).long() + correct_labels = predicted_labels.eq(gold_labels).long() + correct_labels_and_indices = correct_indices * correct_labels + + self._unlabeled_correct += correct_indices.sum().item() + self._labeled_correct += correct_labels_and_indices.sum().item() + self._total_words += correct_indices.numel() + + def get_metric(self): + unlabeled_attachment_score = 0.0 + labeled_attachment_score = 0.0 + if self._total_words > 0.0: + unlabeled_attachment_score = self._unlabeled_correct / self._total_words + labeled_attachment_score = self._labeled_correct / self._total_words + return { + "uas": unlabeled_attachment_score * 100, + "las": labeled_attachment_score * 100, + } + + def reset(self): + self._labeled_correct = 0.0 + self._unlabeled_correct = 0.0 + self._total_words = 0.0 + + +class DependencyParsingTrainer(Trainer): + def __init__( + self, + model: Union[PreTrainedModel, torch.nn.Module] = None, + args: UDTrainingArguments = None, + data_collator: Optional[DataCollator] = None, + train_dataset: Optional[Dataset] = None, + eval_dataset: Optional[Dataset] = None, + tokenizer: Optional["PreTrainedTokenizerBase"] = None, + model_init: Callable[[], PreTrainedModel] = None, + compute_metrics: Optional[Callable[[EvalPrediction], Dict]] = None, + callbacks: Optional[List[TrainerCallback]] = None, + optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = (None, None), + **kwargs, + ): + super().__init__( + model, + args, + data_collator, + train_dataset, + eval_dataset, + tokenizer, + model_init, + compute_metrics, + callbacks, + optimizers, + **kwargs, + ) + # assumes higher is better + self.best_score = 0.0 + # torch.autograd.set_detect_anomaly(True) + + def evaluate( + self, + eval_dataset: Optional[Dataset] = None, + ignore_keys: Optional[List[str]] = None, + metric_key_prefix: str = "eval", + ) -> Dict[str, float]: + """ + Run evaluation and return metrics. + + The calling script will be responsible for providing a method to compute metrics, as they are + task-dependent. + + Args: + eval_dataset: (Optional) Pass a dataset if you wish to override + the one on the instance. + Returns: + A dict containing: + - the eval loss + - the potential metrics computed from the predictions + """ + eval_dataloader = self.get_eval_dataloader(eval_dataset) + + output = self._prediction_loop( + eval_dataloader, + description="Evaluation", + prediction_loss_only=True if self.compute_metrics is None else None, + metric_key_prefix=metric_key_prefix, + ) + + if self.args.store_best_model: + self.store_best_model(output) + + self.log(output.metrics) + + if self.args.tpu_metrics_debug: + # tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.) + xm.master_print(met.metrics_report()) + + return output.metrics + + def predict(self, test_dataset: Dataset) -> PredictionOutput: + """ + Run prediction and returns predictions and potential metrics. + + Depending on the dataset and your use case, your test dataset may contain labels. In that case, this method + will also return metrics, like in :obj:`evaluate()`. + + Args: + test_dataset (:obj:`Dataset`): + Dataset to run the predictions on. If it is an :obj:`datasets.Dataset`, columns not accepted by the + ``model.forward()`` method are automatically removed. Has to implement the method :obj:`__len__` + ignore_keys (:obj:`Lst[str]`, `optional`): + A list of keys in the output of your model (if it is a dictionary) that should be ignored when + gathering predictions. + metric_key_prefix (:obj:`str`, `optional`, defaults to :obj:`"test"`): + An optional prefix to be used as the metrics key prefix. For example the metrics "bleu" will be named + "test_bleu" if the prefix is "test" (default) + + .. note:: + + If your predictions or labels have different sequence length (for instance because you're doing dynamic + padding in a token classification task) the predictions will be padded (on the right) to allow for + concatenation into one array. The padding index is -100. + + Returns: `NamedTuple` A namedtuple with the following keys: + + - predictions (:obj:`np.ndarray`): The predictions on :obj:`test_dataset`. + - label_ids (:obj:`np.ndarray`, `optional`): The labels (if the dataset contained some). + - metrics (:obj:`Dict[str, float]`, `optional`): The potential dictionary of metrics (if the dataset + contained labels). + """ + test_dataloader = self.get_test_dataloader(test_dataset) + + output = self._prediction_loop(test_dataloader, description="Prediction") + + self.log(output.metrics) + + return PredictionOutput(predictions=output.predictions, label_ids=output.label_ids, metrics=output.metrics) + + def store_best_model(self, output): + + if self.args.metric_score not in output.metrics: + raise Exception( + "Metric %s not in output.\nThe following output was generated: %s", + str(self.args.metric_score), + str(output), + ) + + if output.metrics[self.args.metric_score] > self.best_score: + self.best_score = output.metrics[self.args.metric_score] + # Save model checkpoint + self.save_model(os.path.join(self.args.output_dir, "best_model")) + with open(os.path.join(self.args.output_dir, "best_model", "output.txt"), "w") as f: + f.write(str(output.metrics)) + + def _prediction_loop( + self, + dataloader: DataLoader, + description: str, + prediction_loss_only: Optional[bool] = None, + metric_key_prefix: str = "eval", + ) -> PredictionOutput: + """ + Prediction/evaluation loop, shared by :obj:`Trainer.evaluate()` and :obj:`Trainer.predict()`. + Works both with or without labels. + """ + + if not isinstance(dataloader.dataset, collections.abc.Sized): + raise ValueError("dataset must implement __len__") + prediction_loss_only = ( + prediction_loss_only if prediction_loss_only is not None else self.args.prediction_loss_only + ) + + model = self.model + # multi-gpu eval + if self.args.n_gpu > 1: + model = torch.nn.DataParallel(model) + else: + model = self.model + # Note: in torch.distributed mode, there's no point in wrapping the model + # inside a DistributedDataParallel as we'll be under `no_grad` anyways. + + batch_size = dataloader.batch_size + logger.info("***** Running %s *****", description) + logger.info(" Num examples = %d", self.num_examples(dataloader)) + logger.info(" Batch size = %d", batch_size) + logger.info(" Decode mode = %s", self.args.decode_mode) + eval_losses: List[float] = [] + model.eval() + + metric = ParsingMetric() + + for inputs in tqdm(dataloader, desc=description): + + for k, v in inputs.items(): + inputs[k] = v.to(self.args.device) + + with torch.no_grad(): + step_eval_loss, rel_preds, arc_preds = model(**inputs, return_dict=False) + + eval_losses += [step_eval_loss.mean().item()] + + mask = inputs["labels_arcs"].ne(self.model.config.pad_token_id) + predictions_arcs = torch.argmax(arc_preds, dim=-1)[mask] + + labels_arcs = inputs["labels_arcs"][mask] + + predictions_rels, labels_rels = rel_preds[mask], inputs["labels_rels"][mask] + predictions_rels = predictions_rels[torch.arange(len(labels_arcs)), labels_arcs] + predictions_rels = torch.argmax(predictions_rels, dim=-1) + + metric.add(labels_arcs, labels_rels, predictions_arcs, predictions_rels) + + results = metric.get_metric() + results[f"{metric_key_prefix}_loss"] = np.mean(eval_losses) + + # Prefix all keys with metric_key_prefix + '_' + for key in list(results.keys()): + if not key.startswith(f"{metric_key_prefix}_"): + results[f"{metric_key_prefix}_{key}"] = results.pop(key) + + # Add predictions_rels to output, even though we are only interested in the metrics + return PredictionOutput(predictions=predictions_rels, label_ids=None, metrics=results) + + +class DependencyParsingAdapterTrainer(AdapterTrainer, DependencyParsingTrainer): + pass diff --git a/adapters/examples/pytorch/language-modeling/README.md b/adapters/examples/pytorch/language-modeling/README.md new file mode 100644 index 00000000..e90467da --- /dev/null +++ b/adapters/examples/pytorch/language-modeling/README.md @@ -0,0 +1,138 @@ + + +## Language model training using Adapters + +> **Note:** In the original Hugging Face Transformers examples, there are 5 scripts included. We have adapted `run_clm.py` and `run_mlm.py`. We have not adapted the scripts `run_clm_no_trainer.py`, `run_mlm_no_trainer.py` and `run_plm.py`. + +Fine-tuning (or training from scratch) the library models for language modeling on a text dataset for GPT, GPT-2, +ALBERT, BERT, DistilBERT, RoBERTa, XLNet... GPT and GPT-2 are trained or fine-tuned using a causal language modeling +(CLM) loss while ALBERT, BERT, DistilBERT and RoBERTa are trained or fine-tuned using a masked language modeling (MLM) +loss. XLNet uses permutation language modeling (PLM), you can find more information about the differences between those +objectives in our [model summary](https://huggingface.co/transformers/model_summary.html). + +**Note:** The old script `run_language_modeling.py` is still available [here](https://github.com/huggingface/transformers/blob/main/examples/legacy/run_language_modeling.py). + +The following examples, will run on datasets hosted on our [hub](https://huggingface.co/datasets) or with your own +text files for training and validation. We give examples of both below. + +### GPT-2/GPT and causal language modeling + +The following example fine-tunes GPT-2 on WikiText-2. We're using the raw WikiText-2 (no tokens were replaced before +the tokenization). The loss here is that of causal language modeling. + +```bash +python run_clm.py \ + --model_name_or_path gpt2 \ + --dataset_name wikitext \ + --dataset_config_name wikitext-2-raw-v1 \ + --per_device_train_batch_size 8 \ + --per_device_eval_batch_size 8 \ + --do_train \ + --do_eval \ + --output_dir /tmp/test-clm \ + --train_adapter \ + --adapter_config seq_bn \ + --overwrite_output_dir +``` + +This takes about half an hour to train on a single K80 GPU and about one minute for the evaluation to run. It reaches +a score of ~20 perplexity once fine-tuned on the dataset. + +To run on your own training and validation files, use the following command: + +```bash +python run_clm.py \ + --model_name_or_path gpt2 \ + --train_file path_to_train_file \ + --validation_file path_to_validation_file \ + --per_device_train_batch_size 8 \ + --per_device_eval_batch_size 8 \ + --do_train \ + --do_eval \ + --output_dir /tmp/test-clm \ + --train_adapter \ + --adapter_config seq_bn \ + --overwrite_output_dir +``` + + +### RoBERTa/BERT/DistilBERT and masked language modeling + +The following example fine-tunes RoBERTa on WikiText-2. Here too, we're using the raw WikiText-2. The loss is different +as BERT/RoBERTa have a bidirectional mechanism; we're therefore using the same loss that was used during their +pre-training: masked language modeling. + +In accordance to the RoBERTa paper, we use dynamic masking rather than static masking. The model may, therefore, +converge slightly slower (over-fitting takes more epochs). + +```bash +python run_mlm.py \ + --model_name_or_path roberta-base \ + --dataset_name wikitext \ + --dataset_config_name wikitext-2-raw-v1 \ + --per_device_train_batch_size 8 \ + --per_device_eval_batch_size 8 \ + --do_train \ + --do_eval \ + --output_dir /tmp/test-mlm \ + --train_adapter \ + --adapter_config seq_bn \ + --overwrite_output_dir +``` + +To run on your own training and validation files, use the following command: + +```bash +python run_mlm.py \ + --model_name_or_path roberta-base \ + --train_file path_to_train_file \ + --validation_file path_to_validation_file \ + --per_device_train_batch_size 8 \ + --per_device_eval_batch_size 8 \ + --do_train \ + --do_eval \ + --output_dir /tmp/test-mlm \ + --train_adapter \ + --adapter_config seq_bn \ + --overwrite_output_dir +``` + +If your dataset is organized with one sample per line, you can use the `--line_by_line` flag (otherwise the script +concatenates all texts and then splits them in blocks of the same length). + +**Note:** On TPU, you should use the flag `--pad_to_max_length` in conjunction with the `--line_by_line` flag to make +sure all your batches have the same length. + +### Whole word masking + +This part was moved to `examples/research_projects/mlm_wwm`. + +### XLNet and permutation language modeling + +We have not adapted the permutation language modeling training scripts to use Adapters. To avoid confusion we have not included the non-adapted version in the examples of Adapters. + +## Creating a model on the fly + +When training a model from scratch, configuration values may be overridden with the help of `--config_overrides`: + + +```bash +python run_clm.py --model_type gpt2 --tokenizer_name gpt2 \ --config_overrides="n_embd=1024,n_head=16,n_layer=48,n_positions=102" \ --train_adapter \ +[...] +``` + +This feature is only available in `run_clm.py` and `run_mlm.py`. diff --git a/adapters/examples/pytorch/language-modeling/requirements.txt b/adapters/examples/pytorch/language-modeling/requirements.txt new file mode 100644 index 00000000..19c487fe --- /dev/null +++ b/adapters/examples/pytorch/language-modeling/requirements.txt @@ -0,0 +1,7 @@ +accelerate >= 0.12.0 +torch >= 1.3 +datasets >= 1.8.0 +sentencepiece != 0.1.92 +protobuf +evaluate +scikit-learn diff --git a/adapters/examples/pytorch/language-modeling/run_clm.py b/adapters/examples/pytorch/language-modeling/run_clm.py new file mode 100644 index 00000000..30947383 --- /dev/null +++ b/adapters/examples/pytorch/language-modeling/run_clm.py @@ -0,0 +1,608 @@ +#!/usr/bin/env python +# coding=utf-8 +# Copyright 2020 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Fine-tuning the library models for causal language modeling (GPT, GPT-2, CTRL, ...) on a text file or a dataset. + +Here is the full list of checkpoints on the hub that can be fine-tuned by this script: +https://huggingface.co/models?filter=text-generation +""" +# You can also adapt this script on your own causal language modeling task. Pointers for this are left as comments. + +import logging +import math +import os +import sys +from dataclasses import dataclass, field +from itertools import chain +from typing import Optional + +import datasets +import torch +from datasets import load_dataset + +import adapters +import evaluate +import transformers +from adapters import AdapterArguments, AdapterTrainer, setup_adapter_training +from transformers import ( + CONFIG_MAPPING, + MODEL_FOR_CAUSAL_LM_MAPPING, + AutoConfig, + AutoModelForCausalLM, + AutoTokenizer, + HfArgumentParser, + Trainer, + TrainingArguments, + default_data_collator, + is_torch_tpu_available, + set_seed, +) +from transformers.testing_utils import CaptureLogger +from transformers.trainer_utils import get_last_checkpoint +from transformers.utils import check_min_version +from transformers.utils.versions import require_version + + +# Will error if the minimal version of Transformers is not installed. Remove at your own risks. +check_min_version("4.26.0") + +require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/language-modeling/requirements.txt") + +logger = logging.getLogger(__name__) + + +MODEL_CONFIG_CLASSES = list(MODEL_FOR_CAUSAL_LM_MAPPING.keys()) +MODEL_TYPES = tuple(conf.model_type for conf in MODEL_CONFIG_CLASSES) + + +@dataclass +class ModelArguments: + """ + Arguments pertaining to which model/config/tokenizer we are going to fine-tune, or train from scratch. + """ + + model_name_or_path: Optional[str] = field( + default=None, + metadata={ + "help": ( + "The model checkpoint for weights initialization.Don't set if you want to train a model from scratch." + ) + }, + ) + model_type: Optional[str] = field( + default=None, + metadata={"help": "If training from scratch, pass a model type from the list: " + ", ".join(MODEL_TYPES)}, + ) + config_overrides: Optional[str] = field( + default=None, + metadata={ + "help": ( + "Override some existing default config settings when a model is trained from scratch. Example: " + "n_embd=10,resid_pdrop=0.2,scale_attn_weights=false,summary_type=cls_index" + ) + }, + ) + config_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} + ) + tokenizer_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} + ) + cache_dir: Optional[str] = field( + default=None, + metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"}, + ) + use_fast_tokenizer: bool = field( + default=True, + metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, + ) + model_revision: str = field( + default="main", + metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, + ) + use_auth_token: bool = field( + default=False, + metadata={ + "help": ( + "Will use the token generated when running `huggingface-cli login` (necessary to use this script " + "with private models)." + ) + }, + ) + torch_dtype: Optional[str] = field( + default=None, + metadata={ + "help": ( + "Override the default `torch.dtype` and load the model under this dtype. If `auto` is passed, the " + "dtype will be automatically derived from the model's weights." + ), + "choices": ["auto", "bfloat16", "float16", "float32"], + }, + ) + + def __post_init__(self): + if self.config_overrides is not None and (self.config_name is not None or self.model_name_or_path is not None): + raise ValueError( + "--config_overrides can't be used in combination with --config_name or --model_name_or_path" + ) + + +@dataclass +class DataTrainingArguments: + """ + Arguments pertaining to what data we are going to input our model for training and eval. + """ + + dataset_name: Optional[str] = field( + default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} + ) + dataset_config_name: Optional[str] = field( + default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} + ) + train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a text file)."}) + validation_file: Optional[str] = field( + default=None, + metadata={"help": "An optional input evaluation data file to evaluate the perplexity on (a text file)."}, + ) + max_train_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of training examples to this " + "value if set." + ) + }, + ) + max_eval_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of evaluation examples to this " + "value if set." + ) + }, + ) + + block_size: Optional[int] = field( + default=None, + metadata={ + "help": ( + "Optional input sequence length after tokenization. " + "The training dataset will be truncated in block of this size for training. " + "Default to the model max input length for single sentence inputs (take into account special tokens)." + ) + }, + ) + overwrite_cache: bool = field( + default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} + ) + validation_split_percentage: Optional[int] = field( + default=5, + metadata={ + "help": "The percentage of the train set used as validation set in case there's no validation split" + }, + ) + preprocessing_num_workers: Optional[int] = field( + default=None, + metadata={"help": "The number of processes to use for the preprocessing."}, + ) + keep_linebreaks: bool = field( + default=True, metadata={"help": "Whether to keep line breaks when using TXT files or not."} + ) + + def __post_init__(self): + if self.dataset_name is None and self.train_file is None and self.validation_file is None: + raise ValueError("Need either a dataset name or a training/validation file.") + else: + if self.train_file is not None: + extension = self.train_file.split(".")[-1] + assert extension in ["csv", "json", "txt"], "`train_file` should be a csv, a json or a txt file." + if self.validation_file is not None: + extension = self.validation_file.split(".")[-1] + assert extension in ["csv", "json", "txt"], "`validation_file` should be a csv, a json or a txt file." + + +def main(): + # See all possible arguments in src/transformers/training_args.py + # or by passing the --help flag to this script. + # We now keep distinct sets of args, for a cleaner separation of concerns. + + parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) + + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, training_args, adapter_args = parser.parse_json_file( + json_file=os.path.abspath(sys.argv[1]) + ) + else: + model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() + + # Setup logging + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + handlers=[logging.StreamHandler(sys.stdout)], + ) + + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + datasets.utils.logging.set_verbosity(log_level) + transformers.utils.logging.set_verbosity(log_level) + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + + # Log on each process the small summary: + logger.warning( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" + ) + logger.info(f"Training/evaluation parameters {training_args}") + + # Detecting last checkpoint. + last_checkpoint = None + if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: + last_checkpoint = get_last_checkpoint(training_args.output_dir) + if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: + raise ValueError( + f"Output directory ({training_args.output_dir}) already exists and is not empty. " + "Use --overwrite_output_dir to overcome." + ) + elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: + logger.info( + f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " + "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." + ) + + # Set seed before initializing model. + set_seed(training_args.seed) + + # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) + # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ + # (the dataset will be downloaded automatically from the datasets Hub). + # + # For CSV/JSON files, this script will use the column called 'text' or the first column if no column called + # 'text' is found. You can easily tweak this behavior (see below). + # + # In distributed training, the load_dataset function guarantee that only one local process can concurrently + # download the dataset. + if data_args.dataset_name is not None: + # Downloading and loading a dataset from the hub. + raw_datasets = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + if "validation" not in raw_datasets.keys(): + raw_datasets["validation"] = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + split=f"train[:{data_args.validation_split_percentage}%]", + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + raw_datasets["train"] = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + split=f"train[{data_args.validation_split_percentage}%:]", + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + else: + data_files = {} + dataset_args = {} + if data_args.train_file is not None: + data_files["train"] = data_args.train_file + if data_args.validation_file is not None: + data_files["validation"] = data_args.validation_file + extension = ( + data_args.train_file.split(".")[-1] + if data_args.train_file is not None + else data_args.validation_file.split(".")[-1] + ) + if extension == "txt": + extension = "text" + dataset_args["keep_linebreaks"] = data_args.keep_linebreaks + raw_datasets = load_dataset( + extension, + data_files=data_files, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + **dataset_args, + ) + # If no validation data is there, validation_split_percentage will be used to divide the dataset. + if "validation" not in raw_datasets.keys(): + raw_datasets["validation"] = load_dataset( + extension, + data_files=data_files, + split=f"train[:{data_args.validation_split_percentage}%]", + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + **dataset_args, + ) + raw_datasets["train"] = load_dataset( + extension, + data_files=data_files, + split=f"train[{data_args.validation_split_percentage}%:]", + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + **dataset_args, + ) + + # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at + # https://huggingface.co/docs/datasets/loading_datasets.html. + + # Load pretrained model and tokenizer + # + # Distributed training: + # The .from_pretrained methods guarantee that only one local process can concurrently + # download model & vocab. + + config_kwargs = { + "cache_dir": model_args.cache_dir, + "revision": model_args.model_revision, + "use_auth_token": True if model_args.use_auth_token else None, + } + if model_args.config_name: + config = AutoConfig.from_pretrained(model_args.config_name, **config_kwargs) + elif model_args.model_name_or_path: + config = AutoConfig.from_pretrained(model_args.model_name_or_path, **config_kwargs) + else: + config = CONFIG_MAPPING[model_args.model_type]() + logger.warning("You are instantiating a new config instance from scratch.") + if model_args.config_overrides is not None: + logger.info(f"Overriding config: {model_args.config_overrides}") + config.update_from_string(model_args.config_overrides) + logger.info(f"New config: {config}") + + tokenizer_kwargs = { + "cache_dir": model_args.cache_dir, + "use_fast": model_args.use_fast_tokenizer, + "revision": model_args.model_revision, + "use_auth_token": True if model_args.use_auth_token else None, + } + if model_args.tokenizer_name: + tokenizer = AutoTokenizer.from_pretrained(model_args.tokenizer_name, **tokenizer_kwargs) + elif model_args.model_name_or_path: + tokenizer = AutoTokenizer.from_pretrained(model_args.model_name_or_path, **tokenizer_kwargs) + else: + raise ValueError( + "You are instantiating a new tokenizer from scratch. This is not supported by this script." + "You can do it from another script, save it, and load it from here, using --tokenizer_name." + ) + + if model_args.model_name_or_path: + torch_dtype = ( + model_args.torch_dtype + if model_args.torch_dtype in ["auto", None] + else getattr(torch, model_args.torch_dtype) + ) + model = AutoModelForCausalLM.from_pretrained( + model_args.model_name_or_path, + from_tf=bool(".ckpt" in model_args.model_name_or_path), + config=config, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + torch_dtype=torch_dtype, + ) + else: + model = AutoModelForCausalLM.from_config(config) + n_params = sum(dict((p.data_ptr(), p.numel()) for p in model.parameters()).values()) + logger.info(f"Training new model from scratch - Total size={n_params/2**20:.2f}M params") + + # Convert the model into an adapter model + adapters.init(model) + + # We resize the embeddings only when necessary to avoid index errors. If you are creating a model from scratch + # on a small vocab and want a smaller embedding size, remove this test. + embedding_size = model.get_input_embeddings().weight.shape[0] + if len(tokenizer) > embedding_size: + model.resize_token_embeddings(len(tokenizer)) + + # Preprocessing the datasets. + # First we tokenize all the texts. + if training_args.do_train: + column_names = raw_datasets["train"].column_names + else: + column_names = raw_datasets["validation"].column_names + text_column_name = "text" if "text" in column_names else column_names[0] + + # since this will be pickled to avoid _LazyModule error in Hasher force logger loading before tokenize_function + tok_logger = transformers.utils.logging.get_logger("transformers.tokenization_utils_base") + + def tokenize_function(examples): + with CaptureLogger(tok_logger) as cl: + output = tokenizer(examples[text_column_name]) + # clm input could be much much longer than block_size + if "Token indices sequence length is longer than the" in cl.out: + tok_logger.warning( + "^^^^^^^^^^^^^^^^ Please ignore the warning above - this long input will be chunked into smaller bits" + " before being passed to the model." + ) + return output + + with training_args.main_process_first(desc="dataset map tokenization"): + tokenized_datasets = raw_datasets.map( + tokenize_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on dataset", + ) + + if data_args.block_size is None: + block_size = tokenizer.model_max_length + if block_size > 1024: + logger.warning( + f"The tokenizer picked seems to have a very large `model_max_length` ({tokenizer.model_max_length}). " + "Picking 1024 instead. You can change that default value by passing --block_size xxx." + ) + block_size = 1024 + else: + if data_args.block_size > tokenizer.model_max_length: + logger.warning( + f"The block_size passed ({data_args.block_size}) is larger than the maximum length for the model" + f"({tokenizer.model_max_length}). Using block_size={tokenizer.model_max_length}." + ) + block_size = min(data_args.block_size, tokenizer.model_max_length) + + # Main data processing function that will concatenate all texts from our dataset and generate chunks of block_size. + def group_texts(examples): + # Concatenate all texts. + concatenated_examples = {k: list(chain(*examples[k])) for k in examples.keys()} + total_length = len(concatenated_examples[list(examples.keys())[0]]) + # We drop the small remainder, we could add padding if the model supported it instead of this drop, you can + # customize this part to your needs. + if total_length >= block_size: + total_length = (total_length // block_size) * block_size + # Split by chunks of max_len. + result = { + k: [t[i : i + block_size] for i in range(0, total_length, block_size)] + for k, t in concatenated_examples.items() + } + result["labels"] = result["input_ids"].copy() + return result + + # Note that with `batched=True`, this map processes 1,000 texts together, so group_texts throws away a remainder + # for each of those groups of 1,000 texts. You can adjust that batch_size here but a higher value might be slower + # to preprocess. + # + # To speed up this part, we use multiprocessing. See the documentation of the map method for more information: + # https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.map + + with training_args.main_process_first(desc="grouping texts together"): + lm_datasets = tokenized_datasets.map( + group_texts, + batched=True, + num_proc=data_args.preprocessing_num_workers, + load_from_cache_file=not data_args.overwrite_cache, + desc=f"Grouping texts in chunks of {block_size}", + ) + + if training_args.do_train: + if "train" not in tokenized_datasets: + raise ValueError("--do_train requires a train dataset") + train_dataset = lm_datasets["train"] + if data_args.max_train_samples is not None: + max_train_samples = min(len(train_dataset), data_args.max_train_samples) + train_dataset = train_dataset.select(range(max_train_samples)) + + if training_args.do_eval: + if "validation" not in tokenized_datasets: + raise ValueError("--do_eval requires a validation dataset") + eval_dataset = lm_datasets["validation"] + if data_args.max_eval_samples is not None: + max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) + eval_dataset = eval_dataset.select(range(max_eval_samples)) + + def preprocess_logits_for_metrics(logits, labels): + if isinstance(logits, tuple): + # Depending on the model and config, logits may contain extra tensors, + # like past_key_values, but logits always come first + logits = logits[0] + return logits.argmax(dim=-1) + + metric = evaluate.load("accuracy") + + def compute_metrics(eval_preds): + preds, labels = eval_preds + # preds have the same shape as the labels, after the argmax(-1) has been calculated + # by preprocess_logits_for_metrics but we need to shift the labels + labels = labels[:, 1:].reshape(-1) + preds = preds[:, :-1].reshape(-1) + return metric.compute(predictions=preds, references=labels) + + # Setup adapters + setup_adapter_training(model, adapter_args, data_args.dataset_name or "clm") + # Initialize our Trainer + trainer_class = AdapterTrainer if adapter_args.train_adapter else Trainer + trainer = trainer_class( + model=model, + args=training_args, + train_dataset=train_dataset if training_args.do_train else None, + eval_dataset=eval_dataset if training_args.do_eval else None, + tokenizer=tokenizer, + # Data collator will default to DataCollatorWithPadding, so we change it. + data_collator=default_data_collator, + compute_metrics=compute_metrics if training_args.do_eval and not is_torch_tpu_available() else None, + preprocess_logits_for_metrics=preprocess_logits_for_metrics + if training_args.do_eval and not is_torch_tpu_available() + else None, + ) + + # Training + if training_args.do_train: + checkpoint = None + if training_args.resume_from_checkpoint is not None: + checkpoint = training_args.resume_from_checkpoint + elif last_checkpoint is not None: + checkpoint = last_checkpoint + train_result = trainer.train(resume_from_checkpoint=checkpoint) + trainer.save_model() # Saves the tokenizer too for easy upload + + metrics = train_result.metrics + + max_train_samples = ( + data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) + ) + metrics["train_samples"] = min(max_train_samples, len(train_dataset)) + + trainer.log_metrics("train", metrics) + trainer.save_metrics("train", metrics) + trainer.save_state() + + # Evaluation + if training_args.do_eval: + logger.info("*** Evaluate ***") + + metrics = trainer.evaluate() + + max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) + metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) + try: + perplexity = math.exp(metrics["eval_loss"]) + except OverflowError: + perplexity = float("inf") + metrics["perplexity"] = perplexity + + trainer.log_metrics("eval", metrics) + trainer.save_metrics("eval", metrics) + + kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "text-generation"} + if data_args.dataset_name is not None: + kwargs["dataset_tags"] = data_args.dataset_name + if data_args.dataset_config_name is not None: + kwargs["dataset_args"] = data_args.dataset_config_name + kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" + else: + kwargs["dataset"] = data_args.dataset_name + + if training_args.push_to_hub: + trainer.push_to_hub(**kwargs) + else: + trainer.create_model_card(**kwargs) + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/language-modeling/run_mlm.py b/adapters/examples/pytorch/language-modeling/run_mlm.py new file mode 100644 index 00000000..bf6de170 --- /dev/null +++ b/adapters/examples/pytorch/language-modeling/run_mlm.py @@ -0,0 +1,623 @@ +#!/usr/bin/env python +# coding=utf-8 +# Copyright 2020 The HuggingFace Team All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Fine-tuning the library models for masked language modeling (BERT, ALBERT, RoBERTa...) on a text file or a dataset. + +Here is the full list of checkpoints on the hub that can be fine-tuned by this script: +https://huggingface.co/models?filter=fill-mask +""" +# You can also adapt this script on your own masked language modeling task. Pointers for this are left as comments. + +import logging +import math +import os +import sys +from dataclasses import dataclass, field +from itertools import chain +from typing import Optional + +import datasets +from datasets import load_dataset + +import adapters +import evaluate +import transformers +from adapters import AdapterArguments, AdapterTrainer, setup_adapter_training +from transformers import ( + CONFIG_MAPPING, + MODEL_FOR_MASKED_LM_MAPPING, + AutoConfig, + AutoModelForMaskedLM, + AutoTokenizer, + DataCollatorForLanguageModeling, + HfArgumentParser, + Trainer, + TrainingArguments, + is_torch_tpu_available, + set_seed, +) +from transformers.trainer_utils import get_last_checkpoint +from transformers.utils import check_min_version +from transformers.utils.versions import require_version + + +# Will error if the minimal version of Transformers is not installed. Remove at your own risks. +check_min_version("4.26.0") + +require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/language-modeling/requirements.txt") + +logger = logging.getLogger(__name__) +MODEL_CONFIG_CLASSES = list(MODEL_FOR_MASKED_LM_MAPPING.keys()) +MODEL_TYPES = tuple(conf.model_type for conf in MODEL_CONFIG_CLASSES) + + +@dataclass +class ModelArguments: + """ + Arguments pertaining to which model/config/tokenizer we are going to fine-tune, or train from scratch. + """ + + model_name_or_path: Optional[str] = field( + default=None, + metadata={ + "help": ( + "The model checkpoint for weights initialization. Don't set if you want to train a model from scratch." + ) + }, + ) + model_type: Optional[str] = field( + default=None, + metadata={"help": "If training from scratch, pass a model type from the list: " + ", ".join(MODEL_TYPES)}, + ) + config_overrides: Optional[str] = field( + default=None, + metadata={ + "help": ( + "Override some existing default config settings when a model is trained from scratch. Example: " + "n_embd=10,resid_pdrop=0.2,scale_attn_weights=false,summary_type=cls_index" + ) + }, + ) + config_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} + ) + tokenizer_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} + ) + cache_dir: Optional[str] = field( + default=None, + metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"}, + ) + use_fast_tokenizer: bool = field( + default=True, + metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, + ) + model_revision: str = field( + default="main", + metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, + ) + use_auth_token: bool = field( + default=False, + metadata={ + "help": ( + "Will use the token generated when running `huggingface-cli login` (necessary to use this script " + "with private models)." + ) + }, + ) + + def __post_init__(self): + if self.config_overrides is not None and (self.config_name is not None or self.model_name_or_path is not None): + raise ValueError( + "--config_overrides can't be used in combination with --config_name or --model_name_or_path" + ) + + +@dataclass +class DataTrainingArguments: + """ + Arguments pertaining to what data we are going to input our model for training and eval. + """ + + dataset_name: Optional[str] = field( + default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} + ) + dataset_config_name: Optional[str] = field( + default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} + ) + train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a text file)."}) + validation_file: Optional[str] = field( + default=None, + metadata={"help": "An optional input evaluation data file to evaluate the perplexity on (a text file)."}, + ) + overwrite_cache: bool = field( + default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} + ) + validation_split_percentage: Optional[int] = field( + default=5, + metadata={ + "help": "The percentage of the train set used as validation set in case there's no validation split" + }, + ) + max_seq_length: Optional[int] = field( + default=None, + metadata={ + "help": ( + "The maximum total input sequence length after tokenization. Sequences longer " + "than this will be truncated." + ) + }, + ) + preprocessing_num_workers: Optional[int] = field( + default=None, + metadata={"help": "The number of processes to use for the preprocessing."}, + ) + mlm_probability: float = field( + default=0.15, metadata={"help": "Ratio of tokens to mask for masked language modeling loss"} + ) + line_by_line: bool = field( + default=False, + metadata={"help": "Whether distinct lines of text in the dataset are to be handled as distinct sequences."}, + ) + pad_to_max_length: bool = field( + default=False, + metadata={ + "help": ( + "Whether to pad all samples to `max_seq_length`. " + "If False, will pad the samples dynamically when batching to the maximum length in the batch." + ) + }, + ) + max_train_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of training examples to this " + "value if set." + ) + }, + ) + max_eval_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of evaluation examples to this " + "value if set." + ) + }, + ) + + def __post_init__(self): + if self.dataset_name is None and self.train_file is None and self.validation_file is None: + raise ValueError("Need either a dataset name or a training/validation file.") + else: + if self.train_file is not None: + extension = self.train_file.split(".")[-1] + if extension not in ["csv", "json", "txt"]: + raise ValueError("`train_file` should be a csv, a json or a txt file.") + if self.validation_file is not None: + extension = self.validation_file.split(".")[-1] + if extension not in ["csv", "json", "txt"]: + raise ValueError("`validation_file` should be a csv, a json or a txt file.") + + +def main(): + # See all possible arguments in src/transformers/training_args.py + # or by passing the --help flag to this script. + # We now keep distinct sets of args, for a cleaner separation of concerns. + + parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, training_args, adapter_args = parser.parse_json_file( + json_file=os.path.abspath(sys.argv[1]) + ) + else: + model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() + + # Setup logging + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + handlers=[logging.StreamHandler(sys.stdout)], + ) + + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + datasets.utils.logging.set_verbosity(log_level) + transformers.utils.logging.set_verbosity(log_level) + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + + # Log on each process the small summary: + logger.warning( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" + ) + # Set the verbosity to info of the Transformers logger (on main process only): + logger.info(f"Training/evaluation parameters {training_args}") + + # Detecting last checkpoint. + last_checkpoint = None + if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: + last_checkpoint = get_last_checkpoint(training_args.output_dir) + if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: + raise ValueError( + f"Output directory ({training_args.output_dir}) already exists and is not empty. " + "Use --overwrite_output_dir to overcome." + ) + elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: + logger.info( + f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " + "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." + ) + + # Set seed before initializing model. + set_seed(training_args.seed) + + # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) + # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ + # (the dataset will be downloaded automatically from the datasets Hub + # + # For CSV/JSON files, this script will use the column called 'text' or the first column. You can easily tweak this + # behavior (see below) + # + # In distributed training, the load_dataset function guarantee that only one local process can concurrently + # download the dataset. + if data_args.dataset_name is not None: + # Downloading and loading a dataset from the hub. + raw_datasets = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + if "validation" not in raw_datasets.keys(): + raw_datasets["validation"] = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + split=f"train[:{data_args.validation_split_percentage}%]", + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + raw_datasets["train"] = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + split=f"train[{data_args.validation_split_percentage}%:]", + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + else: + data_files = {} + if data_args.train_file is not None: + data_files["train"] = data_args.train_file + extension = data_args.train_file.split(".")[-1] + if data_args.validation_file is not None: + data_files["validation"] = data_args.validation_file + extension = data_args.validation_file.split(".")[-1] + if extension == "txt": + extension = "text" + raw_datasets = load_dataset( + extension, + data_files=data_files, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + + # If no validation data is there, validation_split_percentage will be used to divide the dataset. + if "validation" not in raw_datasets.keys(): + raw_datasets["validation"] = load_dataset( + extension, + data_files=data_files, + split=f"train[:{data_args.validation_split_percentage}%]", + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + raw_datasets["train"] = load_dataset( + extension, + data_files=data_files, + split=f"train[{data_args.validation_split_percentage}%:]", + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + + # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at + # https://huggingface.co/docs/datasets/loading_datasets.html. + + # Load pretrained model and tokenizer + # + # Distributed training: + # The .from_pretrained methods guarantee that only one local process can concurrently + # download model & vocab. + config_kwargs = { + "cache_dir": model_args.cache_dir, + "revision": model_args.model_revision, + "use_auth_token": True if model_args.use_auth_token else None, + } + if model_args.config_name: + config = AutoConfig.from_pretrained(model_args.config_name, **config_kwargs) + elif model_args.model_name_or_path: + config = AutoConfig.from_pretrained(model_args.model_name_or_path, **config_kwargs) + else: + config = CONFIG_MAPPING[model_args.model_type]() + logger.warning("You are instantiating a new config instance from scratch.") + if model_args.config_overrides is not None: + logger.info(f"Overriding config: {model_args.config_overrides}") + config.update_from_string(model_args.config_overrides) + logger.info(f"New config: {config}") + + tokenizer_kwargs = { + "cache_dir": model_args.cache_dir, + "use_fast": model_args.use_fast_tokenizer, + "revision": model_args.model_revision, + "use_auth_token": True if model_args.use_auth_token else None, + } + if model_args.tokenizer_name: + tokenizer = AutoTokenizer.from_pretrained(model_args.tokenizer_name, **tokenizer_kwargs) + elif model_args.model_name_or_path: + tokenizer = AutoTokenizer.from_pretrained(model_args.model_name_or_path, **tokenizer_kwargs) + else: + raise ValueError( + "You are instantiating a new tokenizer from scratch. This is not supported by this script." + "You can do it from another script, save it, and load it from here, using --tokenizer_name." + ) + + if model_args.model_name_or_path: + model = AutoModelForMaskedLM.from_pretrained( + model_args.model_name_or_path, + from_tf=bool(".ckpt" in model_args.model_name_or_path), + config=config, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + else: + logger.info("Training new model from scratch") + model = AutoModelForMaskedLM.from_config(config) + + # Convert the model into an adapter model + adapters.init(model) + + # We resize the embeddings only when necessary to avoid index errors. If you are creating a model from scratch + # on a small vocab and want a smaller embedding size, remove this test. + embedding_size = model.get_input_embeddings().weight.shape[0] + if len(tokenizer) > embedding_size: + model.resize_token_embeddings(len(tokenizer)) + + # Preprocessing the datasets. + # First we tokenize all the texts. + if training_args.do_train: + column_names = raw_datasets["train"].column_names + else: + column_names = raw_datasets["validation"].column_names + text_column_name = "text" if "text" in column_names else column_names[0] + + if data_args.max_seq_length is None: + max_seq_length = tokenizer.model_max_length + if max_seq_length > 1024: + logger.warning( + f"The tokenizer picked seems to have a very large `model_max_length` ({tokenizer.model_max_length}). " + "Picking 1024 instead. You can change that default value by passing --max_seq_length xxx." + ) + max_seq_length = 1024 + else: + if data_args.max_seq_length > tokenizer.model_max_length: + logger.warning( + f"The max_seq_length passed ({data_args.max_seq_length}) is larger than the maximum length for the" + f"model ({tokenizer.model_max_length}). Using max_seq_length={tokenizer.model_max_length}." + ) + max_seq_length = min(data_args.max_seq_length, tokenizer.model_max_length) + + if data_args.line_by_line: + # When using line_by_line, we just tokenize each nonempty line. + padding = "max_length" if data_args.pad_to_max_length else False + + def tokenize_function(examples): + # Remove empty lines + examples[text_column_name] = [ + line for line in examples[text_column_name] if len(line) > 0 and not line.isspace() + ] + return tokenizer( + examples[text_column_name], + padding=padding, + truncation=True, + max_length=max_seq_length, + # We use this option because DataCollatorForLanguageModeling (see below) is more efficient when it + # receives the `special_tokens_mask`. + return_special_tokens_mask=True, + ) + + with training_args.main_process_first(desc="dataset map tokenization"): + tokenized_datasets = raw_datasets.map( + tokenize_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=[text_column_name], + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on dataset line_by_line", + ) + else: + # Otherwise, we tokenize every text, then concatenate them together before splitting them in smaller parts. + # We use `return_special_tokens_mask=True` because DataCollatorForLanguageModeling (see below) is more + # efficient when it receives the `special_tokens_mask`. + def tokenize_function(examples): + return tokenizer(examples[text_column_name], return_special_tokens_mask=True) + + with training_args.main_process_first(desc="dataset map tokenization"): + tokenized_datasets = raw_datasets.map( + tokenize_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on every text in dataset", + ) + + # Main data processing function that will concatenate all texts from our dataset and generate chunks of + # max_seq_length. + def group_texts(examples): + # Concatenate all texts. + concatenated_examples = {k: list(chain(*examples[k])) for k in examples.keys()} + total_length = len(concatenated_examples[list(examples.keys())[0]]) + # We drop the small remainder, we could add padding if the model supported it instead of this drop, you can + # customize this part to your needs. + if total_length >= max_seq_length: + total_length = (total_length // max_seq_length) * max_seq_length + # Split by chunks of max_len. + result = { + k: [t[i : i + max_seq_length] for i in range(0, total_length, max_seq_length)] + for k, t in concatenated_examples.items() + } + return result + + # Note that with `batched=True`, this map processes 1,000 texts together, so group_texts throws away a + # remainder for each of those groups of 1,000 texts. You can adjust that batch_size here but a higher value + # might be slower to preprocess. + # + # To speed up this part, we use multiprocessing. See the documentation of the map method for more information: + # https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.map + + with training_args.main_process_first(desc="grouping texts together"): + tokenized_datasets = tokenized_datasets.map( + group_texts, + batched=True, + num_proc=data_args.preprocessing_num_workers, + load_from_cache_file=not data_args.overwrite_cache, + desc=f"Grouping texts in chunks of {max_seq_length}", + ) + + if training_args.do_train: + if "train" not in tokenized_datasets: + raise ValueError("--do_train requires a train dataset") + train_dataset = tokenized_datasets["train"] + if data_args.max_train_samples is not None: + max_train_samples = min(len(train_dataset), data_args.max_train_samples) + train_dataset = train_dataset.select(range(max_train_samples)) + + if training_args.do_eval: + if "validation" not in tokenized_datasets: + raise ValueError("--do_eval requires a validation dataset") + eval_dataset = tokenized_datasets["validation"] + if data_args.max_eval_samples is not None: + max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) + eval_dataset = eval_dataset.select(range(max_eval_samples)) + + def preprocess_logits_for_metrics(logits, labels): + if isinstance(logits, tuple): + # Depending on the model and config, logits may contain extra tensors, + # like past_key_values, but logits always come first + logits = logits[0] + return logits.argmax(dim=-1) + + metric = evaluate.load("accuracy") + + def compute_metrics(eval_preds): + preds, labels = eval_preds + # preds have the same shape as the labels, after the argmax(-1) has been calculated + # by preprocess_logits_for_metrics + labels = labels.reshape(-1) + preds = preds.reshape(-1) + mask = labels != -100 + labels = labels[mask] + preds = preds[mask] + return metric.compute(predictions=preds, references=labels) + + # Data collator + # This one will take care of randomly masking the tokens. + pad_to_multiple_of_8 = data_args.line_by_line and training_args.fp16 and not data_args.pad_to_max_length + data_collator = DataCollatorForLanguageModeling( + tokenizer=tokenizer, + mlm_probability=data_args.mlm_probability, + pad_to_multiple_of=8 if pad_to_multiple_of_8 else None, + ) + + # Setup adapters + setup_adapter_training(model, adapter_args, data_args.dataset_name or "mlm") + # Initialize our Trainer + trainer_class = AdapterTrainer if adapter_args.train_adapter else Trainer + trainer = trainer_class( + model=model, + args=training_args, + train_dataset=train_dataset if training_args.do_train else None, + eval_dataset=eval_dataset if training_args.do_eval else None, + tokenizer=tokenizer, + data_collator=data_collator, + compute_metrics=compute_metrics if training_args.do_eval and not is_torch_tpu_available() else None, + preprocess_logits_for_metrics=preprocess_logits_for_metrics + if training_args.do_eval and not is_torch_tpu_available() + else None, + ) + + # Training + if training_args.do_train: + checkpoint = None + if training_args.resume_from_checkpoint is not None: + checkpoint = training_args.resume_from_checkpoint + elif last_checkpoint is not None: + checkpoint = last_checkpoint + train_result = trainer.train(resume_from_checkpoint=checkpoint) + trainer.save_model() # Saves the tokenizer too for easy upload + metrics = train_result.metrics + + max_train_samples = ( + data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) + ) + metrics["train_samples"] = min(max_train_samples, len(train_dataset)) + + trainer.log_metrics("train", metrics) + trainer.save_metrics("train", metrics) + trainer.save_state() + + # Evaluation + if training_args.do_eval: + logger.info("*** Evaluate ***") + + metrics = trainer.evaluate() + + max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) + metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) + try: + perplexity = math.exp(metrics["eval_loss"]) + except OverflowError: + perplexity = float("inf") + metrics["perplexity"] = perplexity + + trainer.log_metrics("eval", metrics) + trainer.save_metrics("eval", metrics) + + kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "fill-mask"} + if data_args.dataset_name is not None: + kwargs["dataset_tags"] = data_args.dataset_name + if data_args.dataset_config_name is not None: + kwargs["dataset_args"] = data_args.dataset_config_name + kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" + else: + kwargs["dataset"] = data_args.dataset_name + + if training_args.push_to_hub: + trainer.push_to_hub(**kwargs) + else: + trainer.create_model_card(**kwargs) + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/multiple-choice/README.md b/adapters/examples/pytorch/multiple-choice/README.md new file mode 100644 index 00000000..1aca8eae --- /dev/null +++ b/adapters/examples/pytorch/multiple-choice/README.md @@ -0,0 +1,48 @@ + + +# Multiple Choice with Adapters + +## Fine-tuning on SWAG with the Trainer + +`run_swag` allows you to fine-tune any model from our [hub](https://huggingface.co/models) (as long as its architecture as a `ForMultipleChoice` version in the library) on the SWAG dataset or your own csv/jsonlines files as long as they are structured the same way. To make it works on another dataset, you will need to tweak the `preprocess_function` inside the script. + +```bash +python run_swag.py \ +--model_name_or_path roberta-base \ +--do_train \ +--do_eval \ +--learning_rate 5e-5 \ +--num_train_epochs 3 \ +--output_dir /tmp/swag_base \ +--per_gpu_eval_batch_size=16 \ +--per_device_train_batch_size=16 \ +--overwrite_output \ +--train_adapter \ +--adapter_config seq_bn \ +--overwrite_output_dir +``` + +Training with the defined hyper-parameters yields the following results: +``` +***** Eval results ***** +eval_acc = 0.8338998300509847 +eval_loss = 0.44457291918821606 +``` + +## With Accelerate + +We have not adapted the `run_swag_no_trainer.py` script of Hugging Face Transformers to use Adapters. To avoid confusion we have not included the non-adapted version in the examples of Adapters. diff --git a/adapters/examples/pytorch/multiple-choice/requirements.txt b/adapters/examples/pytorch/multiple-choice/requirements.txt new file mode 100644 index 00000000..3bbfaef3 --- /dev/null +++ b/adapters/examples/pytorch/multiple-choice/requirements.txt @@ -0,0 +1,5 @@ +accelerate >= 0.12.0 +sentencepiece != 0.1.92 +protobuf +torch >= 1.3 +evaluate diff --git a/adapters/examples/pytorch/multiple-choice/run_swag.py b/adapters/examples/pytorch/multiple-choice/run_swag.py new file mode 100644 index 00000000..aa321cfc --- /dev/null +++ b/adapters/examples/pytorch/multiple-choice/run_swag.py @@ -0,0 +1,486 @@ +#!/usr/bin/env python +# coding=utf-8 +# Copyright The HuggingFace Team and The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Fine-tuning the library models for multiple choice. +""" +# You can also adapt this script on your own multiple choice task. Pointers for this are left as comments. + +import logging +import os +import sys +from dataclasses import dataclass, field +from itertools import chain +from typing import Optional, Union + +import datasets +import numpy as np +import torch +from datasets import load_dataset + +import adapters +import transformers +from adapters import AdapterArguments, AdapterTrainer, setup_adapter_training +from transformers import ( + AutoConfig, + AutoModelForMultipleChoice, + AutoTokenizer, + HfArgumentParser, + Trainer, + TrainingArguments, + default_data_collator, + set_seed, +) +from transformers.tokenization_utils_base import PreTrainedTokenizerBase +from transformers.trainer_utils import get_last_checkpoint +from transformers.utils import PaddingStrategy, check_min_version + + +# Will error if the minimal version of Transformers is not installed. Remove at your own risks. +check_min_version("4.26.0") + +logger = logging.getLogger(__name__) + + +@dataclass +class ModelArguments: + """ + Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. + """ + + model_name_or_path: str = field( + metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} + ) + config_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} + ) + tokenizer_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} + ) + cache_dir: Optional[str] = field( + default=None, + metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"}, + ) + use_fast_tokenizer: bool = field( + default=True, + metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, + ) + model_revision: str = field( + default="main", + metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, + ) + use_auth_token: bool = field( + default=False, + metadata={ + "help": ( + "Will use the token generated when running `huggingface-cli login` (necessary to use this script " + "with private models)." + ) + }, + ) + + +@dataclass +class DataTrainingArguments: + """ + Arguments pertaining to what data we are going to input our model for training and eval. + """ + + train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a text file)."}) + validation_file: Optional[str] = field( + default=None, + metadata={"help": "An optional input evaluation data file to evaluate the perplexity on (a text file)."}, + ) + overwrite_cache: bool = field( + default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} + ) + preprocessing_num_workers: Optional[int] = field( + default=None, + metadata={"help": "The number of processes to use for the preprocessing."}, + ) + max_seq_length: Optional[int] = field( + default=None, + metadata={ + "help": ( + "The maximum total input sequence length after tokenization. If passed, sequences longer " + "than this will be truncated, sequences shorter will be padded." + ) + }, + ) + pad_to_max_length: bool = field( + default=False, + metadata={ + "help": ( + "Whether to pad all samples to the maximum sentence length. " + "If False, will pad the samples dynamically when batching to the maximum length in the batch. More " + "efficient on GPU but very bad for TPU." + ) + }, + ) + max_train_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of training examples to this " + "value if set." + ) + }, + ) + max_eval_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of evaluation examples to this " + "value if set." + ) + }, + ) + + def __post_init__(self): + if self.train_file is not None: + extension = self.train_file.split(".")[-1] + assert extension in ["csv", "json"], "`train_file` should be a csv or a json file." + if self.validation_file is not None: + extension = self.validation_file.split(".")[-1] + assert extension in ["csv", "json"], "`validation_file` should be a csv or a json file." + + +@dataclass +class DataCollatorForMultipleChoice: + """ + Data collator that will dynamically pad the inputs for multiple choice received. + + Args: + tokenizer ([`PreTrainedTokenizer`] or [`PreTrainedTokenizerFast`]): + The tokenizer used for encoding the data. + padding (`bool`, `str` or [`~utils.PaddingStrategy`], *optional*, defaults to `True`): + Select a strategy to pad the returned sequences (according to the model's padding side and padding index) + among: + + - `True` or `'longest'`: Pad to the longest sequence in the batch (or no padding if only a single sequence + if provided). + - `'max_length'`: Pad to a maximum length specified with the argument `max_length` or to the maximum + acceptable input length for the model if that argument is not provided. + - `False` or `'do_not_pad'` (default): No padding (i.e., can output a batch with sequences of different + lengths). + max_length (`int`, *optional*): + Maximum length of the returned list and optionally padding length (see above). + pad_to_multiple_of (`int`, *optional*): + If set will pad the sequence to a multiple of the provided value. + + This is especially useful to enable the use of Tensor Cores on NVIDIA hardware with compute capability >= + 7.5 (Volta). + """ + + tokenizer: PreTrainedTokenizerBase + padding: Union[bool, str, PaddingStrategy] = True + max_length: Optional[int] = None + pad_to_multiple_of: Optional[int] = None + + def __call__(self, features): + label_name = "label" if "label" in features[0].keys() else "labels" + labels = [feature.pop(label_name) for feature in features] + batch_size = len(features) + num_choices = len(features[0]["input_ids"]) + flattened_features = [ + [{k: v[i] for k, v in feature.items()} for i in range(num_choices)] for feature in features + ] + flattened_features = list(chain(*flattened_features)) + + batch = self.tokenizer.pad( + flattened_features, + padding=self.padding, + max_length=self.max_length, + pad_to_multiple_of=self.pad_to_multiple_of, + return_tensors="pt", + ) + + # Un-flatten + batch = {k: v.view(batch_size, num_choices, -1) for k, v in batch.items()} + # Add back labels + batch["labels"] = torch.tensor(labels, dtype=torch.int64) + return batch + + +def main(): + # See all possible arguments in src/transformers/training_args.py + # or by passing the --help flag to this script. + # We now keep distinct sets of args, for a cleaner separation of concerns. + + parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, training_args, adapter_args = parser.parse_json_file( + json_file=os.path.abspath(sys.argv[1]) + ) + else: + model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() + + # Setup logging + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + handlers=[logging.StreamHandler(sys.stdout)], + ) + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + datasets.utils.logging.set_verbosity(log_level) + transformers.utils.logging.set_verbosity(log_level) + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + + # Log on each process the small summary: + logger.warning( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" + ) + logger.info(f"Training/evaluation parameters {training_args}") + + # Detecting last checkpoint. + last_checkpoint = None + if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: + last_checkpoint = get_last_checkpoint(training_args.output_dir) + if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: + raise ValueError( + f"Output directory ({training_args.output_dir}) already exists and is not empty. " + "Use --overwrite_output_dir to overcome." + ) + elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: + logger.info( + f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " + "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." + ) + + # Set seed before initializing model. + set_seed(training_args.seed) + + # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) + # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ + # (the dataset will be downloaded automatically from the datasets Hub). + + # For CSV/JSON files, this script will use the column called 'text' or the first column if no column called + # 'text' is found. You can easily tweak this behavior (see below). + + # In distributed training, the load_dataset function guarantee that only one local process can concurrently + # download the dataset. + if data_args.train_file is not None or data_args.validation_file is not None: + data_files = {} + if data_args.train_file is not None: + data_files["train"] = data_args.train_file + if data_args.validation_file is not None: + data_files["validation"] = data_args.validation_file + extension = data_args.train_file.split(".")[-1] + raw_datasets = load_dataset( + extension, + data_files=data_files, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + else: + # Downloading and loading the swag dataset from the hub. + raw_datasets = load_dataset( + "swag", + "regular", + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at + # https://huggingface.co/docs/datasets/loading_datasets.html. + + # Load pretrained model and tokenizer + + # Distributed training: + # The .from_pretrained methods guarantee that only one local process can concurrently + # download model & vocab. + config = AutoConfig.from_pretrained( + model_args.config_name if model_args.config_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + tokenizer = AutoTokenizer.from_pretrained( + model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + use_fast=model_args.use_fast_tokenizer, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + model = AutoModelForMultipleChoice.from_pretrained( + model_args.model_name_or_path, + from_tf=bool(".ckpt" in model_args.model_name_or_path), + config=config, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + + # Convert the model into an adapter model + adapters.init(model) + + # When using your own dataset or a different dataset from swag, you will probably need to change this. + ending_names = [f"ending{i}" for i in range(4)] + context_name = "sent1" + question_header_name = "sent2" + + if data_args.max_seq_length is None: + max_seq_length = tokenizer.model_max_length + if max_seq_length > 1024: + logger.warning( + f"The tokenizer picked seems to have a very large `model_max_length` ({tokenizer.model_max_length}). " + "Picking 1024 instead. You can change that default value by passing --max_seq_length xxx." + ) + max_seq_length = 1024 + else: + if data_args.max_seq_length > tokenizer.model_max_length: + logger.warning( + f"The max_seq_length passed ({data_args.max_seq_length}) is larger than the maximum length for the" + f"model ({tokenizer.model_max_length}). Using max_seq_length={tokenizer.model_max_length}." + ) + max_seq_length = min(data_args.max_seq_length, tokenizer.model_max_length) + + # Preprocessing the datasets. + def preprocess_function(examples): + first_sentences = [[context] * 4 for context in examples[context_name]] + question_headers = examples[question_header_name] + second_sentences = [ + [f"{header} {examples[end][i]}" for end in ending_names] for i, header in enumerate(question_headers) + ] + + # Flatten out + first_sentences = list(chain(*first_sentences)) + second_sentences = list(chain(*second_sentences)) + + # Tokenize + tokenized_examples = tokenizer( + first_sentences, + second_sentences, + truncation=True, + max_length=max_seq_length, + padding="max_length" if data_args.pad_to_max_length else False, + ) + # Un-flatten + return {k: [v[i : i + 4] for i in range(0, len(v), 4)] for k, v in tokenized_examples.items()} + + if training_args.do_train: + if "train" not in raw_datasets: + raise ValueError("--do_train requires a train dataset") + train_dataset = raw_datasets["train"] + if data_args.max_train_samples is not None: + max_train_samples = min(len(train_dataset), data_args.max_train_samples) + train_dataset = train_dataset.select(range(max_train_samples)) + with training_args.main_process_first(desc="train dataset map pre-processing"): + train_dataset = train_dataset.map( + preprocess_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + load_from_cache_file=not data_args.overwrite_cache, + ) + + if training_args.do_eval: + if "validation" not in raw_datasets: + raise ValueError("--do_eval requires a validation dataset") + eval_dataset = raw_datasets["validation"] + if data_args.max_eval_samples is not None: + max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) + eval_dataset = eval_dataset.select(range(max_eval_samples)) + with training_args.main_process_first(desc="validation dataset map pre-processing"): + eval_dataset = eval_dataset.map( + preprocess_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + load_from_cache_file=not data_args.overwrite_cache, + ) + + # Data collator + data_collator = ( + default_data_collator + if data_args.pad_to_max_length + else DataCollatorForMultipleChoice(tokenizer=tokenizer, pad_to_multiple_of=8 if training_args.fp16 else None) + ) + + # Metric + def compute_metrics(eval_predictions): + predictions, label_ids = eval_predictions + preds = np.argmax(predictions, axis=1) + return {"accuracy": (preds == label_ids).astype(np.float32).mean().item()} + + # Setup adapters + setup_adapter_training(model, adapter_args, "swag") + # Initialize our Trainer + trainer_class = AdapterTrainer if adapter_args.train_adapter else Trainer + trainer = trainer_class( + model=model, + args=training_args, + train_dataset=train_dataset if training_args.do_train else None, + eval_dataset=eval_dataset if training_args.do_eval else None, + tokenizer=tokenizer, + data_collator=data_collator, + compute_metrics=compute_metrics, + ) + + # Training + if training_args.do_train: + checkpoint = None + if training_args.resume_from_checkpoint is not None: + checkpoint = training_args.resume_from_checkpoint + elif last_checkpoint is not None: + checkpoint = last_checkpoint + train_result = trainer.train(resume_from_checkpoint=checkpoint) + trainer.save_model() # Saves the tokenizer too for easy upload + metrics = train_result.metrics + + max_train_samples = ( + data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) + ) + metrics["train_samples"] = min(max_train_samples, len(train_dataset)) + + trainer.log_metrics("train", metrics) + trainer.save_metrics("train", metrics) + trainer.save_state() + + # Evaluation + if training_args.do_eval: + logger.info("*** Evaluate ***") + + metrics = trainer.evaluate() + max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) + metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) + + trainer.log_metrics("eval", metrics) + trainer.save_metrics("eval", metrics) + + kwargs = dict( + finetuned_from=model_args.model_name_or_path, + tasks="multiple-choice", + dataset_tags="swag", + dataset_args="regular", + dataset="SWAG", + language="en", + ) + + if training_args.push_to_hub: + trainer.push_to_hub(**kwargs) + else: + trainer.create_model_card(**kwargs) + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/question-answering/README.md b/adapters/examples/pytorch/question-answering/README.md new file mode 100644 index 00000000..7513e025 --- /dev/null +++ b/adapters/examples/pytorch/question-answering/README.md @@ -0,0 +1,98 @@ + + +# Question answering with Adapters + +> **Note:** We have not adapted the following scripts of Hugging Face Transformers: +> - `run_qa_beam_search_no_trainer.py` +> - `run_qa_no_trainer.py` +> - `run_qa_beam_search.py` +> +> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. + +This folder contains several scripts that showcase how to fine-tune a 🤗 Transformers model on a question answering dataset, +like SQuAD. + +## Trainer-based scripts + +The [`run_qa.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_qa.py), +[`run_qa_beam_search.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_qa_beam_search.py) and [`run_seq2seq_qa.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_seq2seq_qa.py) leverage the 🤗 [Trainer](https://huggingface.co/transformers/main_classes/trainer.html) for fine-tuning. + +### Fine-tuning BERT on SQuAD1.0 + +The [`run_qa.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_qa.py) script +allows to fine-tune any model from our [hub](https://huggingface.co/models) (as long as its architecture has a `ForQuestionAnswering` version in the library) on a question-answering dataset (such as SQuAD, or any other QA dataset available in the `datasets` library, or your own csv/jsonlines files) as long as they are structured the same way as SQuAD. You might need to tweak the data processing inside the script if your data is structured differently. + +**Note:** This script only works with models that have a fast tokenizer (backed by the 🤗 Tokenizers library) as it +uses special features of those tokenizers. You can check if your favorite model has a fast tokenizer in +[this table](https://huggingface.co/transformers/index.html#supported-frameworks), if it doesn't you can still use the old version of the script which can be found [here](https://github.com/huggingface/transformers/tree/main/examples/legacy/question-answering). + +Note that if your dataset contains samples with no possible answers (like SQuAD version 2), you need to pass along the flag `--version_2_with_negative`. + +This example code fine-tunes BERT on the SQuAD1.0 dataset. It runs in 24 min (with BERT-base) or 68 min (with BERT-large) +on a single tesla V100 16GB. + +```bash +python run_qa.py \ + --model_name_or_path bert-base-uncased \ + --dataset_name squad \ + --do_train \ + --do_eval \ + --per_device_train_batch_size 12 \ + --learning_rate 3e-5 \ + --num_train_epochs 2 \ + --max_seq_length 384 \ + --doc_stride 128 \ + --output_dir /tmp/debug_squad/ \ + --train_adapter \ + --adapter_config seq_bn \ + --overwrite_output_dir +``` + +Training with the previously defined hyper-parameters yields the following results: + +```bash +f1 = 88.52 +exact_match = 81.22 +``` + + +### Fine-tuning T5 on SQuAD2.0 + +The [`run_seq2seq_qa.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_seq2seq_qa.py) script is meant for encoder-decoder (also called seq2seq) Transformer models, such as T5 or BART. These +models are generative, rather than discriminative. This means that they learn to generate the correct answer, rather than predicting the start and end position of the tokens of the answer. + +This example code fine-tunes T5 on the SQuAD2.0 dataset. + +```bash +python run_seq2seq_qa.py \ + --model_name_or_path t5-small \ + --dataset_name squad_v2 \ + --context_column context \ + --question_column question \ + --answer_column answers \ + --do_train \ + --do_eval \ + --per_device_train_batch_size 12 \ + --learning_rate 3e-5 \ + --num_train_epochs 2 \ + --max_seq_length 384 \ + --doc_stride 128 \ + --output_dir /tmp/debug_seq2seq_squad/ \ + --train_adapter \ + --adapter_config seq_bn \ + --overwrite_output_dir +``` diff --git a/adapters/examples/pytorch/question-answering/requirements.txt b/adapters/examples/pytorch/question-answering/requirements.txt new file mode 100644 index 00000000..c8200d86 --- /dev/null +++ b/adapters/examples/pytorch/question-answering/requirements.txt @@ -0,0 +1,4 @@ +accelerate >= 0.12.0 +datasets >= 1.8.0 +torch >= 1.3.0 +evaluate \ No newline at end of file diff --git a/adapters/examples/pytorch/question-answering/run_qa.py b/adapters/examples/pytorch/question-answering/run_qa.py new file mode 100644 index 00000000..8fad43ca --- /dev/null +++ b/adapters/examples/pytorch/question-answering/run_qa.py @@ -0,0 +1,687 @@ +#!/usr/bin/env python +# coding=utf-8 +# Copyright 2020 The HuggingFace Team All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Fine-tuning the library models for question answering using a slightly adapted version of the 🤗 Trainer. +""" +# You can also adapt this script on your own question answering task. Pointers for this are left as comments. + +import logging +import os +import sys +from dataclasses import dataclass, field +from typing import Optional + +import datasets +from datasets import load_dataset + +import adapters +import evaluate +import transformers +from adapters import AdapterArguments, setup_adapter_training +from trainer_qa import QuestionAnsweringAdapterTrainer, QuestionAnsweringTrainer +from transformers import ( + AutoConfig, + AutoModelForQuestionAnswering, + AutoTokenizer, + DataCollatorWithPadding, + EvalPrediction, + HfArgumentParser, + PreTrainedTokenizerFast, + TrainingArguments, + default_data_collator, + set_seed, +) +from transformers.trainer_utils import get_last_checkpoint +from transformers.utils import check_min_version +from transformers.utils.versions import require_version +from utils_qa import postprocess_qa_predictions + + +# Will error if the minimal version of Transformers is not installed. Remove at your own risks. +check_min_version("4.26.0") + +require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/question-answering/requirements.txt") + +logger = logging.getLogger(__name__) + + +@dataclass +class ModelArguments: + """ + Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. + """ + + model_name_or_path: str = field( + metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} + ) + config_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} + ) + tokenizer_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} + ) + cache_dir: Optional[str] = field( + default=None, + metadata={"help": "Path to directory to store the pretrained models downloaded from huggingface.co"}, + ) + model_revision: str = field( + default="main", + metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, + ) + use_auth_token: bool = field( + default=False, + metadata={ + "help": ( + "Will use the token generated when running `huggingface-cli login` (necessary to use this script " + "with private models)." + ) + }, + ) + + +@dataclass +class DataTrainingArguments: + """ + Arguments pertaining to what data we are going to input our model for training and eval. + """ + + dataset_name: Optional[str] = field( + default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} + ) + dataset_config_name: Optional[str] = field( + default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} + ) + train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a text file)."}) + validation_file: Optional[str] = field( + default=None, + metadata={"help": "An optional input evaluation data file to evaluate the perplexity on (a text file)."}, + ) + test_file: Optional[str] = field( + default=None, + metadata={"help": "An optional input test data file to evaluate the perplexity on (a text file)."}, + ) + overwrite_cache: bool = field( + default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} + ) + preprocessing_num_workers: Optional[int] = field( + default=None, + metadata={"help": "The number of processes to use for the preprocessing."}, + ) + max_seq_length: int = field( + default=384, + metadata={ + "help": ( + "The maximum total input sequence length after tokenization. Sequences longer " + "than this will be truncated, sequences shorter will be padded." + ) + }, + ) + pad_to_max_length: bool = field( + default=True, + metadata={ + "help": ( + "Whether to pad all samples to `max_seq_length`. If False, will pad the samples dynamically when" + " batching to the maximum length in the batch (which can be faster on GPU but will be slower on TPU)." + ) + }, + ) + max_train_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of training examples to this " + "value if set." + ) + }, + ) + max_eval_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of evaluation examples to this " + "value if set." + ) + }, + ) + max_predict_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of prediction examples to this " + "value if set." + ) + }, + ) + version_2_with_negative: bool = field( + default=False, metadata={"help": "If true, some of the examples do not have an answer."} + ) + null_score_diff_threshold: float = field( + default=0.0, + metadata={ + "help": ( + "The threshold used to select the null answer: if the best answer has a score that is less than " + "the score of the null answer minus this threshold, the null answer is selected for this example. " + "Only useful when `version_2_with_negative=True`." + ) + }, + ) + doc_stride: int = field( + default=128, + metadata={"help": "When splitting up a long document into chunks, how much stride to take between chunks."}, + ) + n_best_size: int = field( + default=20, + metadata={"help": "The total number of n-best predictions to generate when looking for an answer."}, + ) + max_answer_length: int = field( + default=30, + metadata={ + "help": ( + "The maximum length of an answer that can be generated. This is needed because the start " + "and end predictions are not conditioned on one another." + ) + }, + ) + + def __post_init__(self): + if ( + self.dataset_name is None + and self.train_file is None + and self.validation_file is None + and self.test_file is None + ): + raise ValueError("Need either a dataset name or a training/validation file/test_file.") + else: + if self.train_file is not None: + extension = self.train_file.split(".")[-1] + assert extension in ["csv", "json"], "`train_file` should be a csv or a json file." + if self.validation_file is not None: + extension = self.validation_file.split(".")[-1] + assert extension in ["csv", "json"], "`validation_file` should be a csv or a json file." + if self.test_file is not None: + extension = self.test_file.split(".")[-1] + assert extension in ["csv", "json"], "`test_file` should be a csv or a json file." + + +def main(): + # See all possible arguments in src/transformers/training_args.py + # or by passing the --help flag to this script. + # We now keep distinct sets of args, for a cleaner separation of concerns. + + parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, training_args, adapter_args = parser.parse_json_file( + json_file=os.path.abspath(sys.argv[1]) + ) + else: + model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() + + # Setup logging + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + handlers=[logging.StreamHandler(sys.stdout)], + ) + + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + datasets.utils.logging.set_verbosity(log_level) + transformers.utils.logging.set_verbosity(log_level) + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + + # Log on each process the small summary: + logger.warning( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" + ) + logger.info(f"Training/evaluation parameters {training_args}") + + # Detecting last checkpoint. + last_checkpoint = None + if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: + last_checkpoint = get_last_checkpoint(training_args.output_dir) + if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: + raise ValueError( + f"Output directory ({training_args.output_dir}) already exists and is not empty. " + "Use --overwrite_output_dir to overcome." + ) + elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: + logger.info( + f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " + "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." + ) + + # Set seed before initializing model. + set_seed(training_args.seed) + + # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) + # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ + # (the dataset will be downloaded automatically from the datasets Hub). + # + # For CSV/JSON files, this script will use the column called 'text' or the first column if no column called + # 'text' is found. You can easily tweak this behavior (see below). + # + # In distributed training, the load_dataset function guarantee that only one local process can concurrently + # download the dataset. + if data_args.dataset_name is not None: + # Downloading and loading a dataset from the hub. + raw_datasets = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + else: + data_files = {} + if data_args.train_file is not None: + data_files["train"] = data_args.train_file + extension = data_args.train_file.split(".")[-1] + + if data_args.validation_file is not None: + data_files["validation"] = data_args.validation_file + extension = data_args.validation_file.split(".")[-1] + if data_args.test_file is not None: + data_files["test"] = data_args.test_file + extension = data_args.test_file.split(".")[-1] + raw_datasets = load_dataset( + extension, + data_files=data_files, + field="data", + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at + # https://huggingface.co/docs/datasets/loading_datasets.html. + + # Load pretrained model and tokenizer + # + # Distributed training: + # The .from_pretrained methods guarantee that only one local process can concurrently + # download model & vocab. + config = AutoConfig.from_pretrained( + model_args.config_name if model_args.config_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + tokenizer = AutoTokenizer.from_pretrained( + model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + use_fast=True, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + model = AutoModelForQuestionAnswering.from_pretrained( + model_args.model_name_or_path, + from_tf=bool(".ckpt" in model_args.model_name_or_path), + config=config, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + + # Convert the model into an adapter model + adapters.init(model) + + # Tokenizer check: this script requires a fast tokenizer. + if not isinstance(tokenizer, PreTrainedTokenizerFast): + raise ValueError( + "This example script only works for models that have a fast tokenizer. Checkout the big table of models at" + " https://huggingface.co/transformers/index.html#supported-frameworks to find the model types that meet" + " this requirement" + ) + + # Preprocessing the datasets. + # Preprocessing is slighlty different for training and evaluation. + if training_args.do_train: + column_names = raw_datasets["train"].column_names + elif training_args.do_eval: + column_names = raw_datasets["validation"].column_names + else: + column_names = raw_datasets["test"].column_names + question_column_name = "question" if "question" in column_names else column_names[0] + context_column_name = "context" if "context" in column_names else column_names[1] + answer_column_name = "answers" if "answers" in column_names else column_names[2] + + # Padding side determines if we do (question|context) or (context|question). + pad_on_right = tokenizer.padding_side == "right" + + if data_args.max_seq_length > tokenizer.model_max_length: + logger.warning( + f"The max_seq_length passed ({data_args.max_seq_length}) is larger than the maximum length for the" + f"model ({tokenizer.model_max_length}). Using max_seq_length={tokenizer.model_max_length}." + ) + max_seq_length = min(data_args.max_seq_length, tokenizer.model_max_length) + + # Training preprocessing + def prepare_train_features(examples): + # Some of the questions have lots of whitespace on the left, which is not useful and will make the + # truncation of the context fail (the tokenized question will take a lots of space). So we remove that + # left whitespace + examples[question_column_name] = [q.lstrip() for q in examples[question_column_name]] + + # Tokenize our examples with truncation and maybe padding, but keep the overflows using a stride. This results + # in one example possible giving several features when a context is long, each of those features having a + # context that overlaps a bit the context of the previous feature. + tokenized_examples = tokenizer( + examples[question_column_name if pad_on_right else context_column_name], + examples[context_column_name if pad_on_right else question_column_name], + truncation="only_second" if pad_on_right else "only_first", + max_length=max_seq_length, + stride=data_args.doc_stride, + return_overflowing_tokens=True, + return_offsets_mapping=True, + padding="max_length" if data_args.pad_to_max_length else False, + ) + + # Since one example might give us several features if it has a long context, we need a map from a feature to + # its corresponding example. This key gives us just that. + sample_mapping = tokenized_examples.pop("overflow_to_sample_mapping") + # The offset mappings will give us a map from token to character position in the original context. This will + # help us compute the start_positions and end_positions. + offset_mapping = tokenized_examples.pop("offset_mapping") + + # Let's label those examples! + tokenized_examples["start_positions"] = [] + tokenized_examples["end_positions"] = [] + + for i, offsets in enumerate(offset_mapping): + # We will label impossible answers with the index of the CLS token. + input_ids = tokenized_examples["input_ids"][i] + cls_index = input_ids.index(tokenizer.cls_token_id) + + # Grab the sequence corresponding to that example (to know what is the context and what is the question). + sequence_ids = tokenized_examples.sequence_ids(i) + + # One example can give several spans, this is the index of the example containing this span of text. + sample_index = sample_mapping[i] + answers = examples[answer_column_name][sample_index] + # If no answers are given, set the cls_index as answer. + if len(answers["answer_start"]) == 0: + tokenized_examples["start_positions"].append(cls_index) + tokenized_examples["end_positions"].append(cls_index) + else: + # Start/end character index of the answer in the text. + start_char = answers["answer_start"][0] + end_char = start_char + len(answers["text"][0]) + + # Start token index of the current span in the text. + token_start_index = 0 + while sequence_ids[token_start_index] != (1 if pad_on_right else 0): + token_start_index += 1 + + # End token index of the current span in the text. + token_end_index = len(input_ids) - 1 + while sequence_ids[token_end_index] != (1 if pad_on_right else 0): + token_end_index -= 1 + + # Detect if the answer is out of the span (in which case this feature is labeled with the CLS index). + if not (offsets[token_start_index][0] <= start_char and offsets[token_end_index][1] >= end_char): + tokenized_examples["start_positions"].append(cls_index) + tokenized_examples["end_positions"].append(cls_index) + else: + # Otherwise move the token_start_index and token_end_index to the two ends of the answer. + # Note: we could go after the last offset if the answer is the last word (edge case). + while token_start_index < len(offsets) and offsets[token_start_index][0] <= start_char: + token_start_index += 1 + tokenized_examples["start_positions"].append(token_start_index - 1) + while offsets[token_end_index][1] >= end_char: + token_end_index -= 1 + tokenized_examples["end_positions"].append(token_end_index + 1) + + return tokenized_examples + + if training_args.do_train: + if "train" not in raw_datasets: + raise ValueError("--do_train requires a train dataset") + train_dataset = raw_datasets["train"] + if data_args.max_train_samples is not None: + # We will select sample from whole data if argument is specified + max_train_samples = min(len(train_dataset), data_args.max_train_samples) + train_dataset = train_dataset.select(range(max_train_samples)) + # Create train feature from dataset + with training_args.main_process_first(desc="train dataset map pre-processing"): + train_dataset = train_dataset.map( + prepare_train_features, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on train dataset", + ) + if data_args.max_train_samples is not None: + # Number of samples might increase during Feature Creation, We select only specified max samples + max_train_samples = min(len(train_dataset), data_args.max_train_samples) + train_dataset = train_dataset.select(range(max_train_samples)) + + # Validation preprocessing + def prepare_validation_features(examples): + # Some of the questions have lots of whitespace on the left, which is not useful and will make the + # truncation of the context fail (the tokenized question will take a lots of space). So we remove that + # left whitespace + examples[question_column_name] = [q.lstrip() for q in examples[question_column_name]] + + # Tokenize our examples with truncation and maybe padding, but keep the overflows using a stride. This results + # in one example possible giving several features when a context is long, each of those features having a + # context that overlaps a bit the context of the previous feature. + tokenized_examples = tokenizer( + examples[question_column_name if pad_on_right else context_column_name], + examples[context_column_name if pad_on_right else question_column_name], + truncation="only_second" if pad_on_right else "only_first", + max_length=max_seq_length, + stride=data_args.doc_stride, + return_overflowing_tokens=True, + return_offsets_mapping=True, + padding="max_length" if data_args.pad_to_max_length else False, + ) + + # Since one example might give us several features if it has a long context, we need a map from a feature to + # its corresponding example. This key gives us just that. + sample_mapping = tokenized_examples.pop("overflow_to_sample_mapping") + + # For evaluation, we will need to convert our predictions to substrings of the context, so we keep the + # corresponding example_id and we will store the offset mappings. + tokenized_examples["example_id"] = [] + + for i in range(len(tokenized_examples["input_ids"])): + # Grab the sequence corresponding to that example (to know what is the context and what is the question). + sequence_ids = tokenized_examples.sequence_ids(i) + context_index = 1 if pad_on_right else 0 + + # One example can give several spans, this is the index of the example containing this span of text. + sample_index = sample_mapping[i] + tokenized_examples["example_id"].append(examples["id"][sample_index]) + + # Set to None the offset_mapping that are not part of the context so it's easy to determine if a token + # position is part of the context or not. + tokenized_examples["offset_mapping"][i] = [ + (o if sequence_ids[k] == context_index else None) + for k, o in enumerate(tokenized_examples["offset_mapping"][i]) + ] + + return tokenized_examples + + if training_args.do_eval: + if "validation" not in raw_datasets: + raise ValueError("--do_eval requires a validation dataset") + eval_examples = raw_datasets["validation"] + if data_args.max_eval_samples is not None: + # We will select sample from whole data + max_eval_samples = min(len(eval_examples), data_args.max_eval_samples) + eval_examples = eval_examples.select(range(max_eval_samples)) + # Validation Feature Creation + with training_args.main_process_first(desc="validation dataset map pre-processing"): + eval_dataset = eval_examples.map( + prepare_validation_features, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on validation dataset", + ) + if data_args.max_eval_samples is not None: + # During Feature creation dataset samples might increase, we will select required samples again + max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) + eval_dataset = eval_dataset.select(range(max_eval_samples)) + + if training_args.do_predict: + if "test" not in raw_datasets: + raise ValueError("--do_predict requires a test dataset") + predict_examples = raw_datasets["test"] + if data_args.max_predict_samples is not None: + # We will select sample from whole data + predict_examples = predict_examples.select(range(data_args.max_predict_samples)) + # Predict Feature Creation + with training_args.main_process_first(desc="prediction dataset map pre-processing"): + predict_dataset = predict_examples.map( + prepare_validation_features, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on prediction dataset", + ) + if data_args.max_predict_samples is not None: + # During Feature creation dataset samples might increase, we will select required samples again + max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) + predict_dataset = predict_dataset.select(range(max_predict_samples)) + + # Data collator + # We have already padded to max length if the corresponding flag is True, otherwise we need to pad in the data + # collator. + data_collator = ( + default_data_collator + if data_args.pad_to_max_length + else DataCollatorWithPadding(tokenizer, pad_to_multiple_of=8 if training_args.fp16 else None) + ) + + # Post-processing: + def post_processing_function(examples, features, predictions, stage="eval"): + # Post-processing: we match the start logits and end logits to answers in the original context. + predictions = postprocess_qa_predictions( + examples=examples, + features=features, + predictions=predictions, + version_2_with_negative=data_args.version_2_with_negative, + n_best_size=data_args.n_best_size, + max_answer_length=data_args.max_answer_length, + null_score_diff_threshold=data_args.null_score_diff_threshold, + output_dir=training_args.output_dir, + log_level=log_level, + prefix=stage, + ) + # Format the result to the format the metric expects. + if data_args.version_2_with_negative: + formatted_predictions = [ + {"id": k, "prediction_text": v, "no_answer_probability": 0.0} for k, v in predictions.items() + ] + else: + formatted_predictions = [{"id": k, "prediction_text": v} for k, v in predictions.items()] + + references = [{"id": ex["id"], "answers": ex[answer_column_name]} for ex in examples] + return EvalPrediction(predictions=formatted_predictions, label_ids=references) + + metric = evaluate.load("squad_v2" if data_args.version_2_with_negative else "squad") + + def compute_metrics(p: EvalPrediction): + return metric.compute(predictions=p.predictions, references=p.label_ids) + + # Setup adapters + setup_adapter_training(model, adapter_args, data_args.dataset_name or "squad") + # Initialize our Trainer + trainer_class = QuestionAnsweringAdapterTrainer if adapter_args.train_adapter else QuestionAnsweringTrainer + trainer = trainer_class( + model=model, + args=training_args, + train_dataset=train_dataset if training_args.do_train else None, + eval_dataset=eval_dataset if training_args.do_eval else None, + eval_examples=eval_examples if training_args.do_eval else None, + tokenizer=tokenizer, + data_collator=data_collator, + post_process_function=post_processing_function, + compute_metrics=compute_metrics, + ) + + # Training + if training_args.do_train: + checkpoint = None + if training_args.resume_from_checkpoint is not None: + checkpoint = training_args.resume_from_checkpoint + elif last_checkpoint is not None: + checkpoint = last_checkpoint + train_result = trainer.train(resume_from_checkpoint=checkpoint) + trainer.save_model() # Saves the tokenizer too for easy upload + + metrics = train_result.metrics + max_train_samples = ( + data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) + ) + metrics["train_samples"] = min(max_train_samples, len(train_dataset)) + + trainer.log_metrics("train", metrics) + trainer.save_metrics("train", metrics) + trainer.save_state() + + # Evaluation + if training_args.do_eval: + logger.info("*** Evaluate ***") + metrics = trainer.evaluate() + + max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) + metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) + + trainer.log_metrics("eval", metrics) + trainer.save_metrics("eval", metrics) + + # Prediction + if training_args.do_predict: + logger.info("*** Predict ***") + results = trainer.predict(predict_dataset, predict_examples) + metrics = results.metrics + + max_predict_samples = ( + data_args.max_predict_samples if data_args.max_predict_samples is not None else len(predict_dataset) + ) + metrics["predict_samples"] = min(max_predict_samples, len(predict_dataset)) + + trainer.log_metrics("predict", metrics) + trainer.save_metrics("predict", metrics) + + kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "question-answering"} + if data_args.dataset_name is not None: + kwargs["dataset_tags"] = data_args.dataset_name + if data_args.dataset_config_name is not None: + kwargs["dataset_args"] = data_args.dataset_config_name + kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" + else: + kwargs["dataset"] = data_args.dataset_name + + if training_args.push_to_hub: + trainer.push_to_hub(**kwargs) + else: + trainer.create_model_card(**kwargs) + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/question-answering/run_seq2seq_qa.py b/adapters/examples/pytorch/question-answering/run_seq2seq_qa.py new file mode 100644 index 00000000..372d81ca --- /dev/null +++ b/adapters/examples/pytorch/question-answering/run_seq2seq_qa.py @@ -0,0 +1,733 @@ +#!/usr/bin/env python +# coding=utf-8 +# Copyright 2021 The HuggingFace Team All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Fine-tuning the library's seq2seq models for question answering using the 🤗 Seq2SeqTrainer. +""" +# You can also adapt this script on your own question answering task. Pointers for this are left as comments. + +import logging +import os +import sys +from dataclasses import dataclass, field +from typing import List, Optional, Tuple + +import datasets +from datasets import load_dataset + +import adapters +import evaluate +import transformers +from adapters import AdapterArguments, setup_adapter_training +from trainer_seq2seq_qa import QuestionAnsweringSeq2SeqAdapterTrainer, QuestionAnsweringSeq2SeqTrainer +from transformers import ( + AutoConfig, + AutoModelForSeq2SeqLM, + AutoTokenizer, + DataCollatorForSeq2Seq, + HfArgumentParser, + Seq2SeqTrainingArguments, + set_seed, +) +from transformers.trainer_utils import EvalLoopOutput, EvalPrediction, get_last_checkpoint +from transformers.utils import check_min_version, send_example_telemetry +from transformers.utils.versions import require_version + + +# Will error if the minimal version of Transformers is not installed. Remove at your own risks. +check_min_version("4.26.0") + +require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/question-answering/requirements.txt") + +logger = logging.getLogger(__name__) + + +@dataclass +class ModelArguments: + """ + Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. + """ + + model_name_or_path: str = field( + metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} + ) + config_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} + ) + tokenizer_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} + ) + cache_dir: Optional[str] = field( + default=None, + metadata={"help": "Path to directory to store the pretrained models downloaded from huggingface.co"}, + ) + use_fast_tokenizer: bool = field( + default=True, + metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, + ) + model_revision: str = field( + default="main", + metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, + ) + use_auth_token: bool = field( + default=False, + metadata={ + "help": ( + "Will use the token generated when running `huggingface-cli login` (necessary to use this script " + "with private models)." + ) + }, + ) + + +@dataclass +class DataTrainingArguments: + """ + Arguments pertaining to what data we are going to input our model for training and eval. + """ + + dataset_name: Optional[str] = field( + default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} + ) + dataset_config_name: Optional[str] = field( + default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} + ) + context_column: Optional[str] = field( + default="context", + metadata={"help": "The name of the column in the datasets containing the contexts (for question answering)."}, + ) + question_column: Optional[str] = field( + default="question", + metadata={"help": "The name of the column in the datasets containing the questions (for question answering)."}, + ) + answer_column: Optional[str] = field( + default="answers", + metadata={"help": "The name of the column in the datasets containing the answers (for question answering)."}, + ) + train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a text file)."}) + validation_file: Optional[str] = field( + default=None, + metadata={"help": "An optional input evaluation data file to evaluate the perplexity on (a text file)."}, + ) + test_file: Optional[str] = field( + default=None, + metadata={"help": "An optional input test data file to evaluate the perplexity on (a text file)."}, + ) + overwrite_cache: bool = field( + default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} + ) + preprocessing_num_workers: Optional[int] = field( + default=None, + metadata={"help": "The number of processes to use for the preprocessing."}, + ) + max_seq_length: int = field( + default=384, + metadata={ + "help": ( + "The maximum total input sequence length after tokenization. Sequences longer " + "than this will be truncated, sequences shorter will be padded." + ) + }, + ) + max_answer_length: int = field( + default=30, + metadata={ + "help": ( + "The maximum length of an answer that can be generated. This is needed because the start " + "and end predictions are not conditioned on one another." + ) + }, + ) + val_max_answer_length: Optional[int] = field( + default=None, + metadata={ + "help": ( + "The maximum total sequence length for validation target text after tokenization. Sequences longer " + "than this will be truncated, sequences shorter will be padded. Will default to `max_answer_length`." + "This argument is also used to override the ``max_length`` param of ``model.generate``, which is used " + "during ``evaluate`` and ``predict``." + ) + }, + ) + pad_to_max_length: bool = field( + default=True, + metadata={ + "help": ( + "Whether to pad all samples to `max_seq_length`. If False, will pad the samples dynamically when" + " batching to the maximum length in the batch (which can be faster on GPU but will be slower on TPU)." + ) + }, + ) + max_train_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of training examples to this " + "value if set." + ) + }, + ) + max_eval_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of evaluation examples to this " + "value if set." + ) + }, + ) + max_predict_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of prediction examples to this " + "value if set." + ) + }, + ) + version_2_with_negative: bool = field( + default=False, metadata={"help": "If true, some of the examples do not have an answer."} + ) + null_score_diff_threshold: float = field( + default=0.0, + metadata={ + "help": ( + "The threshold used to select the null answer: if the best answer has a score that is less than " + "the score of the null answer minus this threshold, the null answer is selected for this example. " + "Only useful when `version_2_with_negative=True`." + ) + }, + ) + doc_stride: int = field( + default=128, + metadata={"help": "When splitting up a long document into chunks, how much stride to take between chunks."}, + ) + n_best_size: int = field( + default=20, + metadata={"help": "The total number of n-best predictions to generate when looking for an answer."}, + ) + num_beams: Optional[int] = field( + default=None, + metadata={ + "help": ( + "Number of beams to use for evaluation. This argument will be passed to ``model.generate``, " + "which is used during ``evaluate`` and ``predict``." + ) + }, + ) + ignore_pad_token_for_loss: bool = field( + default=True, + metadata={ + "help": "Whether to ignore the tokens corresponding to padded labels in the loss computation or not." + }, + ) + + def __post_init__(self): + if ( + self.dataset_name is None + and self.train_file is None + and self.validation_file is None + and self.test_file is None + ): + raise ValueError("Need either a dataset name or a training/validation file/test_file.") + else: + if self.train_file is not None: + extension = self.train_file.split(".")[-1] + assert extension in ["csv", "json"], "`train_file` should be a csv or a json file." + if self.validation_file is not None: + extension = self.validation_file.split(".")[-1] + assert extension in ["csv", "json"], "`validation_file` should be a csv or a json file." + if self.test_file is not None: + extension = self.test_file.split(".")[-1] + assert extension in ["csv", "json"], "`test_file` should be a csv or a json file." + if self.val_max_answer_length is None: + self.val_max_answer_length = self.max_answer_length + + +question_answering_column_name_mapping = { + "squad_v2": ("question", "context", "answer"), +} + + +def main(): + # See all possible arguments in src/transformers/training_args.py + # or by passing the --help flag to this script. + # We now keep distinct sets of args, for a cleaner separation of concerns. + + parser = HfArgumentParser((ModelArguments, DataTrainingArguments, Seq2SeqTrainingArguments, AdapterArguments)) + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, training_args, adapter_args = parser.parse_json_file( + json_file=os.path.abspath(sys.argv[1]) + ) + else: + model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() + + # Sending telemetry. Tracking the example usage helps us better allocate resources to maintain them. The + # information sent is the one passed as arguments along with your Python/PyTorch versions. + send_example_telemetry("run_seq2seq_qa", model_args, data_args) + + # Setup logging + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + handlers=[logging.StreamHandler(sys.stdout)], + ) + + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + datasets.utils.logging.set_verbosity(log_level) + transformers.utils.logging.set_verbosity(log_level) + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + + # Log on each process the small summary: + logger.warning( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" + ) + logger.info(f"Training/evaluation parameters {training_args}") + + # Detecting last checkpoint. + last_checkpoint = None + if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: + last_checkpoint = get_last_checkpoint(training_args.output_dir) + if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: + raise ValueError( + f"Output directory ({training_args.output_dir}) already exists and is not empty. " + "Use --overwrite_output_dir to overcome." + ) + elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: + logger.info( + f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " + "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." + ) + + # Set seed before initializing model. + set_seed(training_args.seed) + + # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) + # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ + # (the dataset will be downloaded automatically from the datasets Hub). + # + # For CSV/JSON files, this script will use the column called 'text' or the first column if no column called + # 'text' is found. You can easily tweak this behavior (see below). + # + # In distributed training, the load_dataset function guarantee that only one local process can concurrently + # download the dataset. + if data_args.dataset_name is not None: + # Downloading and loading a dataset from the hub. + raw_datasets = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + else: + data_files = {} + if data_args.train_file is not None: + data_files["train"] = data_args.train_file + extension = data_args.train_file.split(".")[-1] + if data_args.validation_file is not None: + data_files["validation"] = data_args.validation_file + extension = data_args.validation_file.split(".")[-1] + if data_args.test_file is not None: + data_files["test"] = data_args.test_file + extension = data_args.test_file.split(".")[-1] + raw_datasets = load_dataset( + extension, + data_files=data_files, + field="data", + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at + # https://huggingface.co/docs/datasets/loading_datasets.html. + + # Load pretrained model and tokenizer + # + # Distributed training: + # The .from_pretrained methods guarantee that only one local process can concurrently + # download model & vocab. + config = AutoConfig.from_pretrained( + model_args.config_name if model_args.config_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + tokenizer = AutoTokenizer.from_pretrained( + model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + use_fast=model_args.use_fast_tokenizer, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + model = AutoModelForSeq2SeqLM.from_pretrained( + model_args.model_name_or_path, + from_tf=bool(".ckpt" in model_args.model_name_or_path), + config=config, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + + # Convert the model into an adapter model + adapters.init(model) + + # We resize the embeddings only when necessary to avoid index errors. If you are creating a model from scratch + # on a small vocab and want a smaller embedding size, remove this test. + embedding_size = model.get_input_embeddings().weight.shape[0] + if len(tokenizer) > embedding_size: + model.resize_token_embeddings(len(tokenizer)) + + if model.config.decoder_start_token_id is None: + raise ValueError("Make sure that `config.decoder_start_token_id` is correctly defined") + + # Preprocessing the datasets. + # We need to generate and tokenize inputs and targets. + if training_args.do_train: + column_names = raw_datasets["train"].column_names + elif training_args.do_eval: + column_names = raw_datasets["validation"].column_names + elif training_args.do_predict: + column_names = raw_datasets["test"].column_names + else: + logger.info("There is nothing to do. Please pass `do_train`, `do_eval` and/or `do_predict`.") + return + + # Get the column names for input/target. + dataset_columns = question_answering_column_name_mapping.get(data_args.dataset_name, None) + if data_args.question_column is None: + question_column = dataset_columns[0] if dataset_columns is not None else column_names[0] + else: + question_column = data_args.question_column + if question_column not in column_names: + raise ValueError( + f"--question_column' value '{data_args.question_column}' needs to be one of: {', '.join(column_names)}" + ) + if data_args.context_column is None: + context_column = dataset_columns[1] if dataset_columns is not None else column_names[1] + else: + context_column = data_args.context_column + if context_column not in column_names: + raise ValueError( + f"--context_column' value '{data_args.context_column}' needs to be one of: {', '.join(column_names)}" + ) + if data_args.answer_column is None: + answer_column = dataset_columns[2] if dataset_columns is not None else column_names[2] + else: + answer_column = data_args.answer_column + if answer_column not in column_names: + raise ValueError( + f"--answer_column' value '{data_args.answer_column}' needs to be one of: {', '.join(column_names)}" + ) + + # Temporarily set max_answer_length for training. + max_answer_length = data_args.max_answer_length + padding = "max_length" if data_args.pad_to_max_length else False + + if training_args.label_smoothing_factor > 0 and not hasattr(model, "prepare_decoder_input_ids_from_labels"): + logger.warning( + "label_smoothing is enabled but the `prepare_decoder_input_ids_from_labels` method is not defined for" + f"`{model.__class__.__name__}`. This will lead to loss being calculated twice and will take up more memory" + ) + + if data_args.max_seq_length > tokenizer.model_max_length: + logger.warning( + f"The max_seq_length passed ({data_args.max_seq_length}) is larger than the maximum length for the" + f"model ({tokenizer.model_max_length}). Using max_seq_length={tokenizer.model_max_length}." + ) + max_seq_length = min(data_args.max_seq_length, tokenizer.model_max_length) + + def preprocess_squad_batch( + examples, + question_column: str, + context_column: str, + answer_column: str, + ) -> Tuple[List[str], List[str]]: + questions = examples[question_column] + contexts = examples[context_column] + answers = examples[answer_column] + + def generate_input(_question, _context): + return " ".join(["question:", _question.lstrip(), "context:", _context.lstrip()]) + + inputs = [generate_input(question, context) for question, context in zip(questions, contexts)] + targets = [answer["text"][0] if len(answer["text"]) > 0 else "" for answer in answers] + return inputs, targets + + def preprocess_function(examples): + inputs, targets = preprocess_squad_batch(examples, question_column, context_column, answer_column) + + model_inputs = tokenizer(inputs, max_length=max_seq_length, padding=padding, truncation=True) + # Tokenize targets with text_target=... + labels = tokenizer(text_target=targets, max_length=max_answer_length, padding=padding, truncation=True) + + # If we are padding here, replace all tokenizer.pad_token_id in the labels by -100 when we want to ignore + # padding in the loss. + if padding == "max_length" and data_args.ignore_pad_token_for_loss: + labels["input_ids"] = [ + [(l if l != tokenizer.pad_token_id else -100) for l in label] for label in labels["input_ids"] + ] + + model_inputs["labels"] = labels["input_ids"] + return model_inputs + + # Validation preprocessing + def preprocess_validation_function(examples): + inputs, targets = preprocess_squad_batch(examples, question_column, context_column, answer_column) + + model_inputs = tokenizer( + inputs, + max_length=max_seq_length, + padding=padding, + truncation=True, + return_overflowing_tokens=True, + return_offsets_mapping=True, + ) + # Tokenize targets with the `text_target` keyword argument + labels = tokenizer(text_target=targets, max_length=max_answer_length, padding=padding, truncation=True) + + # If we are padding here, replace all tokenizer.pad_token_id in the labels by -100 when we want to ignore + # padding in the loss. + if padding == "max_length" and data_args.ignore_pad_token_for_loss: + labels["input_ids"] = [ + [(l if l != tokenizer.pad_token_id else -100) for l in label] for label in labels["input_ids"] + ] + + # Since one example might give us several features if it has a long context, we need a map from a feature to + # its corresponding example. This key gives us just that. + sample_mapping = model_inputs.pop("overflow_to_sample_mapping") + + # For evaluation, we will need to convert our predictions to substrings of the context, so we keep the + # corresponding example_id and we will store the offset mappings. + model_inputs["example_id"] = [] + # Augment the overflowing tokens to the labels + labels_out = [] + + for i in range(len(model_inputs["input_ids"])): + # One example can give several spans, this is the index of the example containing this span of text. + sample_index = sample_mapping[i] + model_inputs["example_id"].append(examples["id"][sample_index]) + labels_out.append(labels["input_ids"][sample_index]) + + model_inputs["labels"] = labels_out + return model_inputs + + if training_args.do_train: + if "train" not in raw_datasets: + raise ValueError("--do_train requires a train dataset") + train_dataset = raw_datasets["train"] + if data_args.max_train_samples is not None: + # We will select sample from whole data if agument is specified + max_train_samples = min(len(train_dataset), data_args.max_train_samples) + train_dataset = train_dataset.select(range(max_train_samples)) + # Create train feature from dataset + with training_args.main_process_first(desc="train dataset map pre-processing"): + train_dataset = train_dataset.map( + preprocess_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on train dataset", + ) + if data_args.max_train_samples is not None: + # Number of samples might increase during Feature Creation, We select only specified max samples + max_train_samples = min(len(train_dataset), data_args.max_train_samples) + train_dataset = train_dataset.select(range(max_train_samples)) + + if training_args.do_eval: + if "validation" not in raw_datasets: + raise ValueError("--do_eval requires a validation dataset") + eval_examples = raw_datasets["validation"] + if data_args.max_eval_samples is not None: + # We will select sample from whole data + max_eval_samples = min(len(eval_examples), data_args.max_eval_samples) + eval_examples = eval_examples.select(range(max_eval_samples)) + # Validation Feature Creation + with training_args.main_process_first(desc="validation dataset map pre-processing"): + eval_dataset = eval_examples.map( + preprocess_validation_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on validation dataset", + ) + if data_args.max_eval_samples is not None: + # During Feature creation dataset samples might increase, we will select required samples again + max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) + eval_dataset = eval_dataset.select(range(max_eval_samples)) + + if training_args.do_predict: + if "test" not in raw_datasets: + raise ValueError("--do_predict requires a test dataset") + predict_examples = raw_datasets["test"] + if data_args.max_predict_samples is not None: + # We will select sample from whole data + predict_examples = predict_examples.select(range(data_args.max_predict_samples)) + # Predict Feature Creation + with training_args.main_process_first(desc="prediction dataset map pre-processing"): + predict_dataset = predict_examples.map( + preprocess_validation_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on prediction dataset", + ) + if data_args.max_predict_samples is not None: + # During Feature creation dataset samples might increase, we will select required samples again + max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) + predict_dataset = predict_dataset.select(range(max_predict_samples)) + + # Data collator + label_pad_token_id = -100 if data_args.ignore_pad_token_for_loss else tokenizer.pad_token_id + data_collator = DataCollatorForSeq2Seq( + tokenizer, + model=model, + label_pad_token_id=label_pad_token_id, + pad_to_multiple_of=8 if training_args.fp16 else None, + ) + + metric = evaluate.load("squad_v2" if data_args.version_2_with_negative else "squad") + + def compute_metrics(p: EvalPrediction): + return metric.compute(predictions=p.predictions, references=p.label_ids) + + # Post-processing: + def post_processing_function( + examples: datasets.Dataset, features: datasets.Dataset, outputs: EvalLoopOutput, stage="eval" + ): + # Decode the predicted tokens. + preds = outputs.predictions + if isinstance(preds, tuple): + preds = preds[0] + decoded_preds = tokenizer.batch_decode(preds, skip_special_tokens=True) + + # Build a map example to its corresponding features. + example_id_to_index = {k: i for i, k in enumerate(examples["id"])} + feature_per_example = {example_id_to_index[feature["example_id"]]: i for i, feature in enumerate(features)} + predictions = {} + # Let's loop over all the examples! + for example_index, example in enumerate(examples): + # This is the index of the feature associated to the current example. + feature_index = feature_per_example[example_index] + predictions[example["id"]] = decoded_preds[feature_index] + + # Format the result to the format the metric expects. + if data_args.version_2_with_negative: + formatted_predictions = [ + {"id": k, "prediction_text": v, "no_answer_probability": 0.0} for k, v in predictions.items() + ] + else: + formatted_predictions = [{"id": k, "prediction_text": v} for k, v in predictions.items()] + + references = [{"id": ex["id"], "answers": ex[answer_column]} for ex in examples] + return EvalPrediction(predictions=formatted_predictions, label_ids=references) + + # Setup adapters + setup_adapter_training(model, adapter_args, data_args.dataset_name or "mlm") + + # Initialize our Trainer + trainer_class = ( + QuestionAnsweringSeq2SeqAdapterTrainer if adapter_args.train_adapter else QuestionAnsweringSeq2SeqTrainer + ) + trainer = trainer_class( + model=model, + args=training_args, + train_dataset=train_dataset if training_args.do_train else None, + eval_dataset=eval_dataset if training_args.do_eval else None, + eval_examples=eval_examples if training_args.do_eval else None, + tokenizer=tokenizer, + data_collator=data_collator, + compute_metrics=compute_metrics if training_args.predict_with_generate else None, + post_process_function=post_processing_function, + ) + + # Training + if training_args.do_train: + checkpoint = None + if training_args.resume_from_checkpoint is not None: + checkpoint = training_args.resume_from_checkpoint + elif last_checkpoint is not None: + checkpoint = last_checkpoint + train_result = trainer.train(resume_from_checkpoint=checkpoint) + trainer.save_model() # Saves the tokenizer too for easy upload + + metrics = train_result.metrics + max_train_samples = ( + data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) + ) + metrics["train_samples"] = min(max_train_samples, len(train_dataset)) + + trainer.log_metrics("train", metrics) + trainer.save_metrics("train", metrics) + trainer.save_state() + + # Evaluation + results = {} + max_length = ( + training_args.generation_max_length + if training_args.generation_max_length is not None + else data_args.val_max_answer_length + ) + num_beams = data_args.num_beams if data_args.num_beams is not None else training_args.generation_num_beams + if training_args.do_eval: + logger.info("*** Evaluate ***") + metrics = trainer.evaluate(max_length=max_length, num_beams=num_beams, metric_key_prefix="eval") + + max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) + metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) + + trainer.log_metrics("eval", metrics) + trainer.save_metrics("eval", metrics) + + # Prediction + if training_args.do_predict: + logger.info("*** Predict ***") + results = trainer.predict(predict_dataset, predict_examples) + metrics = results.metrics + + max_predict_samples = ( + data_args.max_predict_samples if data_args.max_predict_samples is not None else len(predict_dataset) + ) + metrics["predict_samples"] = min(max_predict_samples, len(predict_dataset)) + + trainer.log_metrics("predict", metrics) + trainer.save_metrics("predict", metrics) + + if training_args.push_to_hub: + kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "question-answering"} + if data_args.dataset_name is not None: + kwargs["dataset_tags"] = data_args.dataset_name + if data_args.dataset_config_name is not None: + kwargs["dataset_args"] = data_args.dataset_config_name + kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" + else: + kwargs["dataset"] = data_args.dataset_name + + trainer.push_to_hub(**kwargs) + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/question-answering/trainer_qa.py b/adapters/examples/pytorch/question-answering/trainer_qa.py new file mode 100644 index 00000000..8622175d --- /dev/null +++ b/adapters/examples/pytorch/question-answering/trainer_qa.py @@ -0,0 +1,141 @@ +# coding=utf-8 +# Copyright 2020 The HuggingFace Team All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +A subclass of `Trainer` specific to Question-Answering tasks +""" +import math +import time + +from adapters.trainer import AdapterTrainer +from transformers import Trainer, is_torch_tpu_available +from transformers.trainer_utils import PredictionOutput, speed_metrics + + +if is_torch_tpu_available(check_device=False): + import torch_xla.core.xla_model as xm + import torch_xla.debug.metrics as met + + +class QuestionAnsweringTrainer(Trainer): + def __init__(self, *args, eval_examples=None, post_process_function=None, **kwargs): + super().__init__(*args, **kwargs) + self.eval_examples = eval_examples + self.post_process_function = post_process_function + + def evaluate(self, eval_dataset=None, eval_examples=None, ignore_keys=None, metric_key_prefix: str = "eval"): + eval_dataset = self.eval_dataset if eval_dataset is None else eval_dataset + eval_dataloader = self.get_eval_dataloader(eval_dataset) + eval_examples = self.eval_examples if eval_examples is None else eval_examples + + # Temporarily disable metric computation, we will do it in the loop here. + compute_metrics = self.compute_metrics + self.compute_metrics = None + eval_loop = self.prediction_loop if self.args.use_legacy_prediction_loop else self.evaluation_loop + start_time = time.time() + try: + output = eval_loop( + eval_dataloader, + description="Evaluation", + # No point gathering the predictions if there are no metrics, otherwise we defer to + # self.args.prediction_loss_only + prediction_loss_only=True if compute_metrics is None else None, + ignore_keys=ignore_keys, + metric_key_prefix=metric_key_prefix, + ) + finally: + self.compute_metrics = compute_metrics + total_batch_size = self.args.eval_batch_size * self.args.world_size + if f"{metric_key_prefix}_jit_compilation_time" in output.metrics: + start_time += output.metrics[f"{metric_key_prefix}_jit_compilation_time"] + output.metrics.update( + speed_metrics( + metric_key_prefix, + start_time, + num_samples=output.num_samples, + num_steps=math.ceil(output.num_samples / total_batch_size), + ) + ) + if self.post_process_function is not None and self.compute_metrics is not None and self.args.should_save: + # Only the main node write the results by default + eval_preds = self.post_process_function(eval_examples, eval_dataset, output.predictions) + metrics = self.compute_metrics(eval_preds) + + # Prefix all keys with metric_key_prefix + '_' + for key in list(metrics.keys()): + if not key.startswith(f"{metric_key_prefix}_"): + metrics[f"{metric_key_prefix}_{key}"] = metrics.pop(key) + metrics.update(output.metrics) + else: + metrics = output.metrics + + if self.args.should_log: + # Only the main node log the results by default + self.log(metrics) + + if self.args.tpu_metrics_debug or self.args.debug: + # tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.) + xm.master_print(met.metrics_report()) + + self.control = self.callback_handler.on_evaluate(self.args, self.state, self.control, metrics) + return metrics + + def predict(self, predict_dataset, predict_examples, ignore_keys=None, metric_key_prefix: str = "test"): + predict_dataloader = self.get_test_dataloader(predict_dataset) + + # Temporarily disable metric computation, we will do it in the loop here. + compute_metrics = self.compute_metrics + self.compute_metrics = None + eval_loop = self.prediction_loop if self.args.use_legacy_prediction_loop else self.evaluation_loop + start_time = time.time() + try: + output = eval_loop( + predict_dataloader, + description="Prediction", + # No point gathering the predictions if there are no metrics, otherwise we defer to + # self.args.prediction_loss_only + prediction_loss_only=True if compute_metrics is None else None, + ignore_keys=ignore_keys, + metric_key_prefix=metric_key_prefix, + ) + finally: + self.compute_metrics = compute_metrics + total_batch_size = self.args.eval_batch_size * self.args.world_size + if f"{metric_key_prefix}_jit_compilation_time" in output.metrics: + start_time += output.metrics[f"{metric_key_prefix}_jit_compilation_time"] + output.metrics.update( + speed_metrics( + metric_key_prefix, + start_time, + num_samples=output.num_samples, + num_steps=math.ceil(output.num_samples / total_batch_size), + ) + ) + + if self.post_process_function is None or self.compute_metrics is None: + return output + + predictions = self.post_process_function(predict_examples, predict_dataset, output.predictions, "predict") + metrics = self.compute_metrics(predictions) + + # Prefix all keys with metric_key_prefix + '_' + for key in list(metrics.keys()): + if not key.startswith(f"{metric_key_prefix}_"): + metrics[f"{metric_key_prefix}_{key}"] = metrics.pop(key) + metrics.update(output.metrics) + return PredictionOutput(predictions=predictions.predictions, label_ids=predictions.label_ids, metrics=metrics) + + +class QuestionAnsweringAdapterTrainer(QuestionAnsweringTrainer, AdapterTrainer): + pass diff --git a/adapters/examples/pytorch/question-answering/trainer_seq2seq_qa.py b/adapters/examples/pytorch/question-answering/trainer_seq2seq_qa.py new file mode 100644 index 00000000..00d1d260 --- /dev/null +++ b/adapters/examples/pytorch/question-answering/trainer_seq2seq_qa.py @@ -0,0 +1,167 @@ +# coding=utf-8 +# Copyright 2021 The HuggingFace Team All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +A subclass of `Trainer` specific to Question-Answering tasks +""" +import math +import time +from typing import Dict, List, Optional + +from torch.utils.data import Dataset + +from adapters import AdapterTrainer +from transformers import Seq2SeqTrainer, is_torch_tpu_available +from transformers.trainer_utils import PredictionOutput, speed_metrics + + +if is_torch_tpu_available(check_device=False): + import torch_xla.core.xla_model as xm + import torch_xla.debug.metrics as met + + +class QuestionAnsweringSeq2SeqTrainer(Seq2SeqTrainer): + def __init__(self, *args, eval_examples=None, post_process_function=None, **kwargs): + super().__init__(*args, **kwargs) + self.eval_examples = eval_examples + self.post_process_function = post_process_function + + # def evaluate(self, eval_dataset=None, eval_examples=None, ignore_keys=None, metric_key_prefix: str = "eval"): + def evaluate( + self, + eval_dataset: Optional[Dataset] = None, + eval_examples=None, + ignore_keys: Optional[List[str]] = None, + metric_key_prefix: str = "eval", + **gen_kwargs, + ) -> Dict[str, float]: + gen_kwargs = gen_kwargs.copy() + gen_kwargs["max_length"] = ( + gen_kwargs["max_length"] if gen_kwargs.get("max_length") is not None else self.args.generation_max_length + ) + gen_kwargs["num_beams"] = ( + gen_kwargs["num_beams"] if gen_kwargs.get("num_beams") is not None else self.args.generation_num_beams + ) + self._gen_kwargs = gen_kwargs + + eval_dataset = self.eval_dataset if eval_dataset is None else eval_dataset + eval_dataloader = self.get_eval_dataloader(eval_dataset) + eval_examples = self.eval_examples if eval_examples is None else eval_examples + + # Temporarily disable metric computation, we will do it in the loop here. + compute_metrics = self.compute_metrics + self.compute_metrics = None + start_time = time.time() + eval_loop = self.prediction_loop if self.args.use_legacy_prediction_loop else self.evaluation_loop + try: + output = eval_loop( + eval_dataloader, + description="Evaluation", + # No point gathering the predictions if there are no metrics, otherwise we defer to + # self.args.prediction_loss_only + prediction_loss_only=True if compute_metrics is None else None, + ignore_keys=ignore_keys, + metric_key_prefix=metric_key_prefix, + ) + finally: + self.compute_metrics = compute_metrics + total_batch_size = self.args.eval_batch_size * self.args.world_size + if f"{metric_key_prefix}_jit_compilation_time" in output.metrics: + start_time += output.metrics[f"{metric_key_prefix}_jit_compilation_time"] + output.metrics.update( + speed_metrics( + metric_key_prefix, + start_time, + num_samples=output.num_samples, + num_steps=math.ceil(output.num_samples / total_batch_size), + ) + ) + + if self.post_process_function is not None and self.compute_metrics is not None and self.args.should_save: + # Only the main node write the results by default + eval_preds = self.post_process_function(eval_examples, eval_dataset, output) + metrics = self.compute_metrics(eval_preds) + + # Prefix all keys with metric_key_prefix + '_' + for key in list(metrics.keys()): + if not key.startswith(f"{metric_key_prefix}_"): + metrics[f"{metric_key_prefix}_{key}"] = metrics.pop(key) + + metrics.update(output.metrics) + else: + metrics = output.metrics + + if self.args.should_log: + # Only the main node log the results by default + self.log(metrics) + + if self.args.tpu_metrics_debug or self.args.debug: + # tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.) + xm.master_print(met.metrics_report()) + + self.control = self.callback_handler.on_evaluate(self.args, self.state, self.control, metrics) + return metrics + + def predict( + self, predict_dataset, predict_examples, ignore_keys=None, metric_key_prefix: str = "test", **gen_kwargs + ): + self._gen_kwargs = gen_kwargs.copy() + + predict_dataloader = self.get_test_dataloader(predict_dataset) + + # Temporarily disable metric computation, we will do it in the loop here. + compute_metrics = self.compute_metrics + self.compute_metrics = None + start_time = time.time() + eval_loop = self.prediction_loop if self.args.use_legacy_prediction_loop else self.evaluation_loop + try: + output = eval_loop( + predict_dataloader, + description="Prediction", + # No point gathering the predictions if there are no metrics, otherwise we defer to + # self.args.prediction_loss_only + prediction_loss_only=True if compute_metrics is None else None, + ignore_keys=ignore_keys, + metric_key_prefix=metric_key_prefix, + ) + finally: + self.compute_metrics = compute_metrics + + total_batch_size = self.args.eval_batch_size * self.args.world_size + if f"{metric_key_prefix}_jit_compilation_time" in output.metrics: + start_time += output.metrics[f"{metric_key_prefix}_jit_compilation_time"] + output.metrics.update( + speed_metrics( + metric_key_prefix, + start_time, + num_samples=output.num_samples, + num_steps=math.ceil(output.num_samples / total_batch_size), + ) + ) + if self.post_process_function is None or self.compute_metrics is None: + return output + + predictions = self.post_process_function(predict_examples, predict_dataset, output, "predict") + metrics = self.compute_metrics(predictions) + + # Prefix all keys with metric_key_prefix + '_' + for key in list(metrics.keys()): + if not key.startswith(f"{metric_key_prefix}_"): + metrics[f"{metric_key_prefix}_{key}"] = metrics.pop(key) + metrics.update(output.metrics) + return PredictionOutput(predictions=predictions.predictions, label_ids=predictions.label_ids, metrics=metrics) + + +class QuestionAnsweringSeq2SeqAdapterTrainer(QuestionAnsweringSeq2SeqTrainer, AdapterTrainer): + pass diff --git a/adapters/examples/pytorch/question-answering/utils_qa.py b/adapters/examples/pytorch/question-answering/utils_qa.py new file mode 100644 index 00000000..bf4d7c0a --- /dev/null +++ b/adapters/examples/pytorch/question-answering/utils_qa.py @@ -0,0 +1,439 @@ +# coding=utf-8 +# Copyright 2020 The HuggingFace Team All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Post-processing utilities for question answering. +""" +import collections +import json +import logging +import os +from typing import Optional, Tuple + +import numpy as np +from tqdm.auto import tqdm + + +logger = logging.getLogger(__name__) + + +def postprocess_qa_predictions( + examples, + features, + predictions: Tuple[np.ndarray, np.ndarray], + version_2_with_negative: bool = False, + n_best_size: int = 20, + max_answer_length: int = 30, + null_score_diff_threshold: float = 0.0, + output_dir: Optional[str] = None, + prefix: Optional[str] = None, + log_level: Optional[int] = logging.WARNING, +): + """ + Post-processes the predictions of a question-answering model to convert them to answers that are substrings of the + original contexts. This is the base postprocessing functions for models that only return start and end logits. + + Args: + examples: The non-preprocessed dataset (see the main script for more information). + features: The processed dataset (see the main script for more information). + predictions (:obj:`Tuple[np.ndarray, np.ndarray]`): + The predictions of the model: two arrays containing the start logits and the end logits respectively. Its + first dimension must match the number of elements of :obj:`features`. + version_2_with_negative (:obj:`bool`, `optional`, defaults to :obj:`False`): + Whether or not the underlying dataset contains examples with no answers. + n_best_size (:obj:`int`, `optional`, defaults to 20): + The total number of n-best predictions to generate when looking for an answer. + max_answer_length (:obj:`int`, `optional`, defaults to 30): + The maximum length of an answer that can be generated. This is needed because the start and end predictions + are not conditioned on one another. + null_score_diff_threshold (:obj:`float`, `optional`, defaults to 0): + The threshold used to select the null answer: if the best answer has a score that is less than the score of + the null answer minus this threshold, the null answer is selected for this example (note that the score of + the null answer for an example giving several features is the minimum of the scores for the null answer on + each feature: all features must be aligned on the fact they `want` to predict a null answer). + + Only useful when :obj:`version_2_with_negative` is :obj:`True`. + output_dir (:obj:`str`, `optional`): + If provided, the dictionaries of predictions, n_best predictions (with their scores and logits) and, if + :obj:`version_2_with_negative=True`, the dictionary of the scores differences between best and null + answers, are saved in `output_dir`. + prefix (:obj:`str`, `optional`): + If provided, the dictionaries mentioned above are saved with `prefix` added to their names. + log_level (:obj:`int`, `optional`, defaults to ``logging.WARNING``): + ``logging`` log level (e.g., ``logging.WARNING``) + """ + assert len(predictions) == 2, "`predictions` should be a tuple with two elements (start_logits, end_logits)." + all_start_logits, all_end_logits = predictions + + assert len(predictions[0]) == len(features), f"Got {len(predictions[0])} predictions and {len(features)} features." + + # Build a map example to its corresponding features. + example_id_to_index = {k: i for i, k in enumerate(examples["id"])} + features_per_example = collections.defaultdict(list) + for i, feature in enumerate(features): + features_per_example[example_id_to_index[feature["example_id"]]].append(i) + + # The dictionaries we have to fill. + all_predictions = collections.OrderedDict() + all_nbest_json = collections.OrderedDict() + if version_2_with_negative: + scores_diff_json = collections.OrderedDict() + + # Logging. + logger.setLevel(log_level) + logger.info(f"Post-processing {len(examples)} example predictions split into {len(features)} features.") + + # Let's loop over all the examples! + for example_index, example in enumerate(tqdm(examples)): + # Those are the indices of the features associated to the current example. + feature_indices = features_per_example[example_index] + + min_null_prediction = None + prelim_predictions = [] + + # Looping through all the features associated to the current example. + for feature_index in feature_indices: + # We grab the predictions of the model for this feature. + start_logits = all_start_logits[feature_index] + end_logits = all_end_logits[feature_index] + # This is what will allow us to map some the positions in our logits to span of texts in the original + # context. + offset_mapping = features[feature_index]["offset_mapping"] + # Optional `token_is_max_context`, if provided we will remove answers that do not have the maximum context + # available in the current feature. + token_is_max_context = features[feature_index].get("token_is_max_context", None) + + # Update minimum null prediction. + feature_null_score = start_logits[0] + end_logits[0] + if min_null_prediction is None or min_null_prediction["score"] > feature_null_score: + min_null_prediction = { + "offsets": (0, 0), + "score": feature_null_score, + "start_logit": start_logits[0], + "end_logit": end_logits[0], + } + + # Go through all possibilities for the `n_best_size` greater start and end logits. + start_indexes = np.argsort(start_logits)[-1 : -n_best_size - 1 : -1].tolist() + end_indexes = np.argsort(end_logits)[-1 : -n_best_size - 1 : -1].tolist() + for start_index in start_indexes: + for end_index in end_indexes: + # Don't consider out-of-scope answers, either because the indices are out of bounds or correspond + # to part of the input_ids that are not in the context. + if ( + start_index >= len(offset_mapping) + or end_index >= len(offset_mapping) + or offset_mapping[start_index] is None + or len(offset_mapping[start_index]) < 2 + or offset_mapping[end_index] is None + or len(offset_mapping[end_index]) < 2 + ): + continue + # Don't consider answers with a length that is either < 0 or > max_answer_length. + if end_index < start_index or end_index - start_index + 1 > max_answer_length: + continue + # Don't consider answer that don't have the maximum context available (if such information is + # provided). + if token_is_max_context is not None and not token_is_max_context.get(str(start_index), False): + continue + + prelim_predictions.append( + { + "offsets": (offset_mapping[start_index][0], offset_mapping[end_index][1]), + "score": start_logits[start_index] + end_logits[end_index], + "start_logit": start_logits[start_index], + "end_logit": end_logits[end_index], + } + ) + if version_2_with_negative and min_null_prediction is not None: + # Add the minimum null prediction + prelim_predictions.append(min_null_prediction) + null_score = min_null_prediction["score"] + + # Only keep the best `n_best_size` predictions. + predictions = sorted(prelim_predictions, key=lambda x: x["score"], reverse=True)[:n_best_size] + + # Add back the minimum null prediction if it was removed because of its low score. + if ( + version_2_with_negative + and min_null_prediction is not None + and not any(p["offsets"] == (0, 0) for p in predictions) + ): + predictions.append(min_null_prediction) + + # Use the offsets to gather the answer text in the original context. + context = example["context"] + for pred in predictions: + offsets = pred.pop("offsets") + pred["text"] = context[offsets[0] : offsets[1]] + + # In the very rare edge case we have not a single non-null prediction, we create a fake prediction to avoid + # failure. + if len(predictions) == 0 or (len(predictions) == 1 and predictions[0]["text"] == ""): + predictions.insert(0, {"text": "empty", "start_logit": 0.0, "end_logit": 0.0, "score": 0.0}) + + # Compute the softmax of all scores (we do it with numpy to stay independent from torch/tf in this file, using + # the LogSumExp trick). + scores = np.array([pred.pop("score") for pred in predictions]) + exp_scores = np.exp(scores - np.max(scores)) + probs = exp_scores / exp_scores.sum() + + # Include the probabilities in our predictions. + for prob, pred in zip(probs, predictions): + pred["probability"] = prob + + # Pick the best prediction. If the null answer is not possible, this is easy. + if not version_2_with_negative: + all_predictions[example["id"]] = predictions[0]["text"] + else: + # Otherwise we first need to find the best non-empty prediction. + i = 0 + while predictions[i]["text"] == "": + i += 1 + best_non_null_pred = predictions[i] + + # Then we compare to the null prediction using the threshold. + score_diff = null_score - best_non_null_pred["start_logit"] - best_non_null_pred["end_logit"] + scores_diff_json[example["id"]] = float(score_diff) # To be JSON-serializable. + if score_diff > null_score_diff_threshold: + all_predictions[example["id"]] = "" + else: + all_predictions[example["id"]] = best_non_null_pred["text"] + + # Make `predictions` JSON-serializable by casting np.float back to float. + all_nbest_json[example["id"]] = [ + {k: (float(v) if isinstance(v, (np.float16, np.float32, np.float64)) else v) for k, v in pred.items()} + for pred in predictions + ] + + # If we have an output_dir, let's save all those dicts. + if output_dir is not None: + assert os.path.isdir(output_dir), f"{output_dir} is not a directory." + + prediction_file = os.path.join( + output_dir, "predictions.json" if prefix is None else f"{prefix}_predictions.json" + ) + nbest_file = os.path.join( + output_dir, "nbest_predictions.json" if prefix is None else f"{prefix}_nbest_predictions.json" + ) + if version_2_with_negative: + null_odds_file = os.path.join( + output_dir, "null_odds.json" if prefix is None else f"{prefix}_null_odds.json" + ) + + logger.info(f"Saving predictions to {prediction_file}.") + with open(prediction_file, "w") as writer: + writer.write(json.dumps(all_predictions, indent=4) + "\n") + logger.info(f"Saving nbest_preds to {nbest_file}.") + with open(nbest_file, "w") as writer: + writer.write(json.dumps(all_nbest_json, indent=4) + "\n") + if version_2_with_negative: + logger.info(f"Saving null_odds to {null_odds_file}.") + with open(null_odds_file, "w") as writer: + writer.write(json.dumps(scores_diff_json, indent=4) + "\n") + + return all_predictions + + +def postprocess_qa_predictions_with_beam_search( + examples, + features, + predictions: Tuple[np.ndarray, np.ndarray], + version_2_with_negative: bool = False, + n_best_size: int = 20, + max_answer_length: int = 30, + start_n_top: int = 5, + end_n_top: int = 5, + output_dir: Optional[str] = None, + prefix: Optional[str] = None, + log_level: Optional[int] = logging.WARNING, +): + """ + Post-processes the predictions of a question-answering model with beam search to convert them to answers that are substrings of the + original contexts. This is the postprocessing functions for models that return start and end logits, indices, as well as + cls token predictions. + + Args: + examples: The non-preprocessed dataset (see the main script for more information). + features: The processed dataset (see the main script for more information). + predictions (:obj:`Tuple[np.ndarray, np.ndarray]`): + The predictions of the model: two arrays containing the start logits and the end logits respectively. Its + first dimension must match the number of elements of :obj:`features`. + version_2_with_negative (:obj:`bool`, `optional`, defaults to :obj:`False`): + Whether or not the underlying dataset contains examples with no answers. + n_best_size (:obj:`int`, `optional`, defaults to 20): + The total number of n-best predictions to generate when looking for an answer. + max_answer_length (:obj:`int`, `optional`, defaults to 30): + The maximum length of an answer that can be generated. This is needed because the start and end predictions + are not conditioned on one another. + start_n_top (:obj:`int`, `optional`, defaults to 5): + The number of top start logits too keep when searching for the :obj:`n_best_size` predictions. + end_n_top (:obj:`int`, `optional`, defaults to 5): + The number of top end logits too keep when searching for the :obj:`n_best_size` predictions. + output_dir (:obj:`str`, `optional`): + If provided, the dictionaries of predictions, n_best predictions (with their scores and logits) and, if + :obj:`version_2_with_negative=True`, the dictionary of the scores differences between best and null + answers, are saved in `output_dir`. + prefix (:obj:`str`, `optional`): + If provided, the dictionaries mentioned above are saved with `prefix` added to their names. + log_level (:obj:`int`, `optional`, defaults to ``logging.WARNING``): + ``logging`` log level (e.g., ``logging.WARNING``) + """ + assert len(predictions) == 5, "`predictions` should be a tuple with five elements." + start_top_log_probs, start_top_index, end_top_log_probs, end_top_index, cls_logits = predictions + + assert len(predictions[0]) == len( + features + ), f"Got {len(predictions[0])} predicitions and {len(features)} features." + + # Build a map example to its corresponding features. + example_id_to_index = {k: i for i, k in enumerate(examples["id"])} + features_per_example = collections.defaultdict(list) + for i, feature in enumerate(features): + features_per_example[example_id_to_index[feature["example_id"]]].append(i) + + # The dictionaries we have to fill. + all_predictions = collections.OrderedDict() + all_nbest_json = collections.OrderedDict() + scores_diff_json = collections.OrderedDict() if version_2_with_negative else None + + # Logging. + logger.setLevel(log_level) + logger.info(f"Post-processing {len(examples)} example predictions split into {len(features)} features.") + + # Let's loop over all the examples! + for example_index, example in enumerate(tqdm(examples)): + # Those are the indices of the features associated to the current example. + feature_indices = features_per_example[example_index] + + min_null_score = None + prelim_predictions = [] + + # Looping through all the features associated to the current example. + for feature_index in feature_indices: + # We grab the predictions of the model for this feature. + start_log_prob = start_top_log_probs[feature_index] + start_indexes = start_top_index[feature_index] + end_log_prob = end_top_log_probs[feature_index] + end_indexes = end_top_index[feature_index] + feature_null_score = cls_logits[feature_index] + # This is what will allow us to map some the positions in our logits to span of texts in the original + # context. + offset_mapping = features[feature_index]["offset_mapping"] + # Optional `token_is_max_context`, if provided we will remove answers that do not have the maximum context + # available in the current feature. + token_is_max_context = features[feature_index].get("token_is_max_context", None) + + # Update minimum null prediction + if min_null_score is None or feature_null_score < min_null_score: + min_null_score = feature_null_score + + # Go through all possibilities for the `n_start_top`/`n_end_top` greater start and end logits. + for i in range(start_n_top): + for j in range(end_n_top): + start_index = int(start_indexes[i]) + j_index = i * end_n_top + j + end_index = int(end_indexes[j_index]) + # Don't consider out-of-scope answers (last part of the test should be unnecessary because of the + # p_mask but let's not take any risk) + if ( + start_index >= len(offset_mapping) + or end_index >= len(offset_mapping) + or offset_mapping[start_index] is None + or len(offset_mapping[start_index]) < 2 + or offset_mapping[end_index] is None + or len(offset_mapping[end_index]) < 2 + ): + continue + + # Don't consider answers with a length negative or > max_answer_length. + if end_index < start_index or end_index - start_index + 1 > max_answer_length: + continue + # Don't consider answer that don't have the maximum context available (if such information is + # provided). + if token_is_max_context is not None and not token_is_max_context.get(str(start_index), False): + continue + prelim_predictions.append( + { + "offsets": (offset_mapping[start_index][0], offset_mapping[end_index][1]), + "score": start_log_prob[i] + end_log_prob[j_index], + "start_log_prob": start_log_prob[i], + "end_log_prob": end_log_prob[j_index], + } + ) + + # Only keep the best `n_best_size` predictions. + predictions = sorted(prelim_predictions, key=lambda x: x["score"], reverse=True)[:n_best_size] + + # Use the offsets to gather the answer text in the original context. + context = example["context"] + for pred in predictions: + offsets = pred.pop("offsets") + pred["text"] = context[offsets[0] : offsets[1]] + + # In the very rare edge case we have not a single non-null prediction, we create a fake prediction to avoid + # failure. + if len(predictions) == 0: + # Without predictions min_null_score is going to be None and None will cause an exception later + min_null_score = -2e-6 + predictions.insert(0, {"text": "", "start_logit": -1e-6, "end_logit": -1e-6, "score": min_null_score}) + + # Compute the softmax of all scores (we do it with numpy to stay independent from torch/tf in this file, using + # the LogSumExp trick). + scores = np.array([pred.pop("score") for pred in predictions]) + exp_scores = np.exp(scores - np.max(scores)) + probs = exp_scores / exp_scores.sum() + + # Include the probabilities in our predictions. + for prob, pred in zip(probs, predictions): + pred["probability"] = prob + + # Pick the best prediction and set the probability for the null answer. + all_predictions[example["id"]] = predictions[0]["text"] + if version_2_with_negative: + scores_diff_json[example["id"]] = float(min_null_score) + + # Make `predictions` JSON-serializable by casting np.float back to float. + all_nbest_json[example["id"]] = [ + {k: (float(v) if isinstance(v, (np.float16, np.float32, np.float64)) else v) for k, v in pred.items()} + for pred in predictions + ] + + # If we have an output_dir, let's save all those dicts. + if output_dir is not None: + assert os.path.isdir(output_dir), f"{output_dir} is not a directory." + + prediction_file = os.path.join( + output_dir, "predictions.json" if prefix is None else f"{prefix}_predictions.json" + ) + nbest_file = os.path.join( + output_dir, "nbest_predictions.json" if prefix is None else f"{prefix}_nbest_predictions.json" + ) + if version_2_with_negative: + null_odds_file = os.path.join( + output_dir, "null_odds.json" if prefix is None else f"{prefix}_null_odds.json" + ) + + logger.info(f"Saving predictions to {prediction_file}.") + with open(prediction_file, "w") as writer: + writer.write(json.dumps(all_predictions, indent=4) + "\n") + logger.info(f"Saving nbest_preds to {nbest_file}.") + with open(nbest_file, "w") as writer: + writer.write(json.dumps(all_nbest_json, indent=4) + "\n") + if version_2_with_negative: + logger.info(f"Saving null_odds to {null_odds_file}.") + with open(null_odds_file, "w") as writer: + writer.write(json.dumps(scores_diff_json, indent=4) + "\n") + + return all_predictions, scores_diff_json diff --git a/adapters/examples/pytorch/summarization/README.md b/adapters/examples/pytorch/summarization/README.md new file mode 100644 index 00000000..ecc89e96 --- /dev/null +++ b/adapters/examples/pytorch/summarization/README.md @@ -0,0 +1,148 @@ + + +## Summarization with Adapters + +> **Note:** We have not adapted the following scripts of Hugging Face Transformers: +> - `run_summarization_no_trainer.py` +> +> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. + + +This directory contains examples for finetuning and evaluating transformers on summarization tasks. +Please tag @patil-suraj with any issues/unexpected behaviors, or send a PR! +For deprecated `bertabs` instructions, see [`bertabs/README.md`](https://github.com/huggingface/transformers/blob/main/examples/research_projects/bertabs/README.md). +For the old `finetune_trainer.py` and related utils, see [`examples/legacy/seq2seq`](https://github.com/huggingface/transformers/blob/main/examples/legacy/seq2seq). + +### Supported Architectures + +- `BartForConditionalGeneration` +- `FSMTForConditionalGeneration` (translation only) +- `MBartForConditionalGeneration` +- `MarianMTModel` +- `PegasusForConditionalGeneration` +- `T5ForConditionalGeneration` +- `MT5ForConditionalGeneration` + +`run_summarization.py` is a lightweight example of how to download and preprocess a dataset from the [🤗 Datasets](https://github.com/huggingface/datasets) library or use your own files (jsonlines or csv), then fine-tune one of the architectures above on it. + +For custom datasets in `jsonlines` format please see: https://huggingface.co/docs/datasets/loading_datasets.html#json-files +and you also will find examples of these below. + +## With Trainer + +Here is an example on a summarization task: +```bash +python run_summarization.py \ + --model_name_or_path t5-small \ + --do_train \ + --do_eval \ + --dataset_name cnn_dailymail \ + --dataset_config "3.0.0" \ + --source_prefix "summarize: " \ + --output_dir /tmp/tst-summarization \ + --per_device_train_batch_size=4 \ + --per_device_eval_batch_size=4 \ + --overwrite_output_dir \ + --predict_with_generate \ + --train_adapter \ + --adapter_config seq_bn \ + --overwrite_output_dir +``` + +Only T5 models `t5-small`, `t5-base`, `t5-large`, `t5-3b` and `t5-11b` must use an additional argument: `--source_prefix "summarize: "`. + +We used CNN/DailyMail dataset in this example as `t5-small` was trained on it and one can get good scores even when pre-training with a very small sample. + +Extreme Summarization (XSum) Dataset is another commonly used dataset for the task of summarization. To use it replace `--dataset_name cnn_dailymail --dataset_config "3.0.0"` with `--dataset_name xsum`. + +And here is how you would use it on your own files, after adjusting the values for the arguments +`--train_file`, `--validation_file`, `--text_column` and `--summary_column` to match your setup: + +```bash +python examples/pytorch/summarization/run_summarization.py \ + --model_name_or_path t5-small \ + --do_train \ + --do_eval \ + --train_file path_to_csv_or_jsonlines_file \ + --validation_file path_to_csv_or_jsonlines_file \ + --source_prefix "summarize: " \ + --output_dir /tmp/tst-summarization \ + --overwrite_output_dir \ + --per_device_train_batch_size=4 \ + --per_device_eval_batch_size=4 \ + --predict_with_generate \ + --train_adapter \ + --adapter_config seq_bn \ + --overwrite_output_dir +``` + +The task of summarization supports custom CSV and JSONLINES formats. + +#### Custom CSV Files + +If it's a csv file the training and validation files should have a column for the inputs texts and a column for the summaries. + +If the csv file has just two columns as in the following example: + +```csv +text,summary +"I'm sitting here in a boring room. It's just another rainy Sunday afternoon. I'm wasting my time I got nothing to do. I'm hanging around I'm waiting for you. But nothing ever happens. And I wonder","I'm sitting in a room where I'm waiting for something to happen" +"I see trees so green, red roses too. I see them bloom for me and you. And I think to myself what a wonderful world. I see skies so blue and clouds so white. The bright blessed day, the dark sacred night. And I think to myself what a wonderful world.","I'm a gardener and I'm a big fan of flowers." +"Christmas time is here. Happiness and cheer. Fun for all that children call. Their favorite time of the year. Snowflakes in the air. Carols everywhere. Olden times and ancient rhymes. Of love and dreams to share","It's that time of year again." +``` + +The first column is assumed to be for `text` and the second is for summary. + +If the csv file has multiple columns, you can then specify the names of the columns to use: + +```bash + --text_column text_column_name \ + --summary_column summary_column_name \ +``` + +For example if the columns were: + +```csv +id,date,text,summary +``` + +and you wanted to select only `text` and `summary`, then you'd pass these additional arguments: + +```bash + --text_column text \ + --summary_column summary \ +``` + +#### Custom JSONLINES Files + +The second supported format is jsonlines. Here is an example of a jsonlines custom data file. + + +```json +{"text": "I'm sitting here in a boring room. It's just another rainy Sunday afternoon. I'm wasting my time I got nothing to do. I'm hanging around I'm waiting for you. But nothing ever happens. And I wonder", "summary": "I'm sitting in a room where I'm waiting for something to happen"} +{"text": "I see trees so green, red roses too. I see them bloom for me and you. And I think to myself what a wonderful world. I see skies so blue and clouds so white. The bright blessed day, the dark sacred night. And I think to myself what a wonderful world.", "summary": "I'm a gardener and I'm a big fan of flowers."} +{"text": "Christmas time is here. Happiness and cheer. Fun for all that children call. Their favorite time of the year. Snowflakes in the air. Carols everywhere. Olden times and ancient rhymes. Of love and dreams to share", "summary": "It's that time of year again."} +``` + +Same as with the CSV files, by default the first value will be used as the text record and the second as the summary record. Therefore you can use any key names for the entries, in this example `text` and `summary` were used. + +And as with the CSV files, you can specify which values to select from the file, by explicitly specifying the corresponding key names. In our example this again would be: + +```bash + --text_column text \ + --summary_column summary \ +``` diff --git a/adapters/examples/pytorch/summarization/requirements.txt b/adapters/examples/pytorch/summarization/requirements.txt new file mode 100644 index 00000000..efc06747 --- /dev/null +++ b/adapters/examples/pytorch/summarization/requirements.txt @@ -0,0 +1,9 @@ +accelerate >= 0.12.0 +datasets >= 1.8.0 +sentencepiece != 0.1.92 +protobuf +rouge-score +nltk +py7zr +torch >= 1.3 +evaluate diff --git a/adapters/examples/pytorch/summarization/run_summarization.py b/adapters/examples/pytorch/summarization/run_summarization.py new file mode 100644 index 00000000..df4ad644 --- /dev/null +++ b/adapters/examples/pytorch/summarization/run_summarization.py @@ -0,0 +1,759 @@ +#!/usr/bin/env python +# coding=utf-8 +# Copyright 2021 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Fine-tuning the library models for sequence to sequence. +""" +# You can also adapt this script on your own sequence to sequence task. Pointers for this are left as comments. + +import logging +import os +import sys +from dataclasses import dataclass, field +from typing import Optional + +import datasets +import nltk # Here to have a nice missing dependency error message early on +import numpy as np +from datasets import load_dataset + +import adapters +import evaluate +import transformers +from adapters import AdapterArguments, Seq2SeqAdapterTrainer, setup_adapter_training +from filelock import FileLock +from transformers import ( + AutoConfig, + AutoModelForSeq2SeqLM, + AutoTokenizer, + DataCollatorForSeq2Seq, + EarlyStoppingCallback, + HfArgumentParser, + MBart50Tokenizer, + MBart50TokenizerFast, + MBartTokenizer, + MBartTokenizerFast, + Seq2SeqTrainer, + Seq2SeqTrainingArguments, + set_seed, +) +from transformers.trainer_utils import get_last_checkpoint +from transformers.utils import check_min_version, is_offline_mode +from transformers.utils.versions import require_version + + +# Will error if the minimal version of Transformers is not installed. Remove at your own risks. +check_min_version("4.26.0") + +require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/summarization/requirements.txt") + +logger = logging.getLogger(__name__) + +try: + nltk.data.find("tokenizers/punkt") +except (LookupError, OSError): + if is_offline_mode(): + raise LookupError( + "Offline mode: run this script without TRANSFORMERS_OFFLINE first to download nltk data files" + ) + with FileLock(".lock") as lock: + nltk.download("punkt", quiet=True) + +# A list of all multilingual tokenizer which require lang attribute. +MULTILINGUAL_TOKENIZERS = [MBartTokenizer, MBartTokenizerFast, MBart50Tokenizer, MBart50TokenizerFast] + + +@dataclass +class ModelArguments: + """ + Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. + """ + + model_name_or_path: str = field( + metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} + ) + config_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} + ) + tokenizer_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} + ) + cache_dir: Optional[str] = field( + default=None, + metadata={"help": "Where to store the pretrained models downloaded from huggingface.co"}, + ) + use_fast_tokenizer: bool = field( + default=True, + metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, + ) + model_revision: str = field( + default="main", + metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, + ) + use_auth_token: bool = field( + default=False, + metadata={ + "help": ( + "Will use the token generated when running `huggingface-cli login` (necessary to use this script " + "with private models)." + ) + }, + ) + resize_position_embeddings: Optional[bool] = field( + default=None, + metadata={ + "help": ( + "Whether to automatically resize the position embeddings if `max_source_length` exceeds " + "the model's position embeddings." + ) + }, + ) + + +@dataclass +class DataTrainingArguments: + """ + Arguments pertaining to what data we are going to input our model for training and eval. + """ + + lang: Optional[str] = field(default=None, metadata={"help": "Language id for summarization."}) + + dataset_name: Optional[str] = field( + default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} + ) + dataset_config_name: Optional[str] = field( + default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} + ) + text_column: Optional[str] = field( + default=None, + metadata={"help": "The name of the column in the datasets containing the full texts (for summarization)."}, + ) + summary_column: Optional[str] = field( + default=None, + metadata={"help": "The name of the column in the datasets containing the summaries (for summarization)."}, + ) + train_file: Optional[str] = field( + default=None, metadata={"help": "The input training data file (a jsonlines or csv file)."} + ) + validation_file: Optional[str] = field( + default=None, + metadata={ + "help": ( + "An optional input evaluation data file to evaluate the metrics (rouge) on (a jsonlines or csv file)." + ) + }, + ) + test_file: Optional[str] = field( + default=None, + metadata={ + "help": "An optional input test data file to evaluate the metrics (rouge) on (a jsonlines or csv file)." + }, + ) + overwrite_cache: bool = field( + default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} + ) + preprocessing_num_workers: Optional[int] = field( + default=None, + metadata={"help": "The number of processes to use for the preprocessing."}, + ) + max_source_length: Optional[int] = field( + default=1024, + metadata={ + "help": ( + "The maximum total input sequence length after tokenization. Sequences longer " + "than this will be truncated, sequences shorter will be padded." + ) + }, + ) + max_target_length: Optional[int] = field( + default=128, + metadata={ + "help": ( + "The maximum total sequence length for target text after tokenization. Sequences longer " + "than this will be truncated, sequences shorter will be padded." + ) + }, + ) + val_max_target_length: Optional[int] = field( + default=None, + metadata={ + "help": ( + "The maximum total sequence length for validation target text after tokenization. Sequences longer " + "than this will be truncated, sequences shorter will be padded. Will default to `max_target_length`." + "This argument is also used to override the ``max_length`` param of ``model.generate``, which is used " + "during ``evaluate`` and ``predict``." + ) + }, + ) + pad_to_max_length: bool = field( + default=False, + metadata={ + "help": ( + "Whether to pad all samples to model maximum sentence length. " + "If False, will pad the samples dynamically when batching to the maximum length in the batch. More " + "efficient on GPU but very bad for TPU." + ) + }, + ) + max_train_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of training examples to this " + "value if set." + ) + }, + ) + max_eval_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of evaluation examples to this " + "value if set." + ) + }, + ) + max_predict_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of prediction examples to this " + "value if set." + ) + }, + ) + num_beams: Optional[int] = field( + default=None, + metadata={ + "help": ( + "Number of beams to use for evaluation. This argument will be passed to ``model.generate``, " + "which is used during ``evaluate`` and ``predict``." + ) + }, + ) + ignore_pad_token_for_loss: bool = field( + default=True, + metadata={ + "help": "Whether to ignore the tokens corresponding to padded labels in the loss computation or not." + }, + ) + source_prefix: Optional[str] = field( + default="", metadata={"help": "A prefix to add before every source text (useful for T5 models)."} + ) + + forced_bos_token: Optional[str] = field( + default=None, + metadata={ + "help": ( + "The token to force as the first generated token after the decoder_start_token_id." + "Useful for multilingual models like mBART where the first generated token" + "needs to be the target language token (Usually it is the target language token)" + ) + }, + ) + patience: Optional[int] = field( + default=None, + metadata={ + "help": ( + "Stop training when the metric specified for `metric_for_best_model` worsend for `patience` number of" + " evaluation calls." + ) + }, + ) + + def __post_init__(self): + if self.dataset_name is None and self.train_file is None and self.validation_file is None: + raise ValueError("Need either a dataset name or a training/validation file.") + else: + if self.train_file is not None: + extension = self.train_file.split(".")[-1] + assert extension in ["csv", "json"], "`train_file` should be a csv or a json file." + if self.validation_file is not None: + extension = self.validation_file.split(".")[-1] + assert extension in ["csv", "json"], "`validation_file` should be a csv or a json file." + if self.val_max_target_length is None: + self.val_max_target_length = self.max_target_length + + +summarization_name_mapping = { + "amazon_reviews_multi": ("review_body", "review_title"), + "big_patent": ("description", "abstract"), + "cnn_dailymail": ("article", "highlights"), + "orange_sum": ("text", "summary"), + "pn_summary": ("article", "summary"), + "psc": ("extract_text", "summary_text"), + "samsum": ("dialogue", "summary"), + "thaisum": ("body", "summary"), + "xglue": ("news_body", "news_title"), + "xsum": ("document", "summary"), + "wiki_summary": ("article", "highlights"), + "multi_news": ("document", "summary"), +} + + +def main(): + # See all possible arguments in src/transformers/training_args.py + # or by passing the --help flag to this script. + # We now keep distinct sets of args, for a cleaner separation of concerns. + + parser = HfArgumentParser((ModelArguments, DataTrainingArguments, Seq2SeqTrainingArguments, AdapterArguments)) + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, training_args, adapter_args = parser.parse_json_file( + json_file=os.path.abspath(sys.argv[1]) + ) + else: + model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() + + # Setup logging + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + handlers=[logging.StreamHandler(sys.stdout)], + ) + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + datasets.utils.logging.set_verbosity(log_level) + transformers.utils.logging.set_verbosity(log_level) + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + + # Log on each process the small summary: + logger.warning( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" + ) + logger.info(f"Training/evaluation parameters {training_args}") + + if data_args.source_prefix is None and model_args.model_name_or_path in [ + "t5-small", + "t5-base", + "t5-large", + "t5-3b", + "t5-11b", + ]: + logger.warning( + "You're running a t5 model but didn't provide a source prefix, which is the expected, e.g. with " + "`--source_prefix 'summarize: ' `" + ) + + # Detecting last checkpoint. + last_checkpoint = None + if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: + last_checkpoint = get_last_checkpoint(training_args.output_dir) + if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: + raise ValueError( + f"Output directory ({training_args.output_dir}) already exists and is not empty. " + "Use --overwrite_output_dir to overcome." + ) + elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: + logger.info( + f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " + "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." + ) + + # Set seed before initializing model. + set_seed(training_args.seed) + + # Get the datasets: you can either provide your own CSV/JSON training and evaluation files (see below) + # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ + # (the dataset will be downloaded automatically from the datasets Hub). + # + # For CSV/JSON files this script will use the first column for the full texts and the second column for the + # summaries (unless you specify column names for this with the `text_column` and `summary_column` arguments). + # + # In distributed training, the load_dataset function guarantee that only one local process can concurrently + # download the dataset. + if data_args.dataset_name is not None: + # Downloading and loading a dataset from the hub. + raw_datasets = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + else: + data_files = {} + if data_args.train_file is not None: + data_files["train"] = data_args.train_file + extension = data_args.train_file.split(".")[-1] + if data_args.validation_file is not None: + data_files["validation"] = data_args.validation_file + extension = data_args.validation_file.split(".")[-1] + if data_args.test_file is not None: + data_files["test"] = data_args.test_file + extension = data_args.test_file.split(".")[-1] + raw_datasets = load_dataset( + extension, + data_files=data_files, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at + # https://huggingface.co/docs/datasets/loading_datasets.html. + + # Load pretrained model and tokenizer + # + # Distributed training: + # The .from_pretrained methods guarantee that only one local process can concurrently + # download model & vocab. + config = AutoConfig.from_pretrained( + model_args.config_name if model_args.config_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + tokenizer = AutoTokenizer.from_pretrained( + model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + use_fast=model_args.use_fast_tokenizer, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + model = AutoModelForSeq2SeqLM.from_pretrained( + model_args.model_name_or_path, + from_tf=bool(".ckpt" in model_args.model_name_or_path), + config=config, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + + # Convert the model into an adapter model + adapters.init(model) + + # We resize the embeddings only when necessary to avoid index errors. If you are creating a model from scratch + # on a small vocab and want a smaller embedding size, remove this test. + embedding_size = model.get_input_embeddings().weight.shape[0] + if len(tokenizer) > embedding_size: + model.resize_token_embeddings(len(tokenizer)) + + if model.config.decoder_start_token_id is None and isinstance(tokenizer, (MBartTokenizer, MBartTokenizerFast)): + if isinstance(tokenizer, MBartTokenizer): + model.config.decoder_start_token_id = tokenizer.lang_code_to_id[data_args.lang] + else: + model.config.decoder_start_token_id = tokenizer.convert_tokens_to_ids(data_args.lang) + + if model.config.decoder_start_token_id is None: + raise ValueError("Make sure that `config.decoder_start_token_id` is correctly defined") + + if ( + hasattr(model.config, "max_position_embeddings") + and model.config.max_position_embeddings < data_args.max_source_length + ): + if model_args.resize_position_embeddings is None: + logger.warning( + "Increasing the model's number of position embedding vectors from" + f" {model.config.max_position_embeddings} to {data_args.max_source_length}." + ) + model.resize_position_embeddings(data_args.max_source_length) + elif model_args.resize_position_embeddings: + model.resize_position_embeddings(data_args.max_source_length) + else: + raise ValueError( + f"`--max_source_length` is set to {data_args.max_source_length}, but the model only has" + f" {model.config.max_position_embeddings} position encodings. Consider either reducing" + f" `--max_source_length` to {model.config.max_position_embeddings} or to automatically resize the" + " model's position encodings by passing `--resize_position_embeddings`." + ) + + prefix = data_args.source_prefix if data_args.source_prefix is not None else "" + + # Preprocessing the datasets. + # We need to tokenize inputs and targets. + if training_args.do_train: + column_names = raw_datasets["train"].column_names + elif training_args.do_eval: + column_names = raw_datasets["validation"].column_names + elif training_args.do_predict: + column_names = raw_datasets["test"].column_names + else: + logger.info("There is nothing to do. Please pass `do_train`, `do_eval` and/or `do_predict`.") + return + + if isinstance(tokenizer, tuple(MULTILINGUAL_TOKENIZERS)): + assert ( + data_args.lang is not None + ), f"{tokenizer.__class__.__name__} is a multilingual tokenizer which requires --lang argument" + + tokenizer.src_lang = data_args.lang + tokenizer.tgt_lang = data_args.lang + + # For multilingual translation models like mBART-50 and M2M100 we need to force the target language token + # as the first generated token. We ask the user to explicitly provide this as --forced_bos_token argument. + forced_bos_token_id = ( + tokenizer.lang_code_to_id[data_args.forced_bos_token] if data_args.forced_bos_token is not None else None + ) + model.config.forced_bos_token_id = forced_bos_token_id + + # Get the column names for input/target. + dataset_columns = summarization_name_mapping.get(data_args.dataset_name, None) + if data_args.text_column is None: + text_column = dataset_columns[0] if dataset_columns is not None else column_names[0] + else: + text_column = data_args.text_column + if text_column not in column_names: + raise ValueError( + f"--text_column' value '{data_args.text_column}' needs to be one of: {', '.join(column_names)}" + ) + if data_args.summary_column is None: + summary_column = dataset_columns[1] if dataset_columns is not None else column_names[1] + else: + summary_column = data_args.summary_column + if summary_column not in column_names: + raise ValueError( + f"--summary_column' value '{data_args.summary_column}' needs to be one of: {', '.join(column_names)}" + ) + + # Temporarily set max_target_length for training. + max_target_length = data_args.max_target_length + padding = "max_length" if data_args.pad_to_max_length else False + + if training_args.label_smoothing_factor > 0 and not hasattr(model, "prepare_decoder_input_ids_from_labels"): + logger.warning( + "label_smoothing is enabled but the `prepare_decoder_input_ids_from_labels` method is not defined for" + f"`{model.__class__.__name__}`. This will lead to loss being calculated twice and will take up more memory" + ) + + def preprocess_function(examples): + # remove pairs where at least one record is None + + inputs, targets = [], [] + for i in range(len(examples[text_column])): + if examples[text_column][i] and examples[summary_column][i]: + inputs.append(examples[text_column][i]) + targets.append(examples[summary_column][i]) + + inputs = [prefix + inp for inp in inputs] + model_inputs = tokenizer(inputs, max_length=data_args.max_source_length, padding=padding, truncation=True) + + # Tokenize targets with the `text_target` keyword argument + labels = tokenizer(text_target=targets, max_length=max_target_length, padding=padding, truncation=True) + + # If we are padding here, replace all tokenizer.pad_token_id in the labels by -100 when we want to ignore + # padding in the loss. + if padding == "max_length" and data_args.ignore_pad_token_for_loss: + labels["input_ids"] = [ + [(l if l != tokenizer.pad_token_id else -100) for l in label] for label in labels["input_ids"] + ] + + model_inputs["labels"] = labels["input_ids"] + return model_inputs + + if training_args.do_train: + if "train" not in raw_datasets: + raise ValueError("--do_train requires a train dataset") + train_dataset = raw_datasets["train"] + if data_args.max_train_samples is not None: + max_train_samples = min(len(train_dataset), data_args.max_train_samples) + train_dataset = train_dataset.select(range(max_train_samples)) + with training_args.main_process_first(desc="train dataset map pre-processing"): + train_dataset = train_dataset.map( + preprocess_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on train dataset", + ) + + if training_args.do_eval: + max_target_length = data_args.val_max_target_length + if "validation" not in raw_datasets: + raise ValueError("--do_eval requires a validation dataset") + eval_dataset = raw_datasets["validation"] + if data_args.max_eval_samples is not None: + max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) + eval_dataset = eval_dataset.select(range(max_eval_samples)) + with training_args.main_process_first(desc="validation dataset map pre-processing"): + eval_dataset = eval_dataset.map( + preprocess_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on validation dataset", + ) + + if training_args.do_predict: + max_target_length = data_args.val_max_target_length + if "test" not in raw_datasets: + raise ValueError("--do_predict requires a test dataset") + predict_dataset = raw_datasets["test"] + if data_args.max_predict_samples is not None: + max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) + predict_dataset = predict_dataset.select(range(max_predict_samples)) + with training_args.main_process_first(desc="prediction dataset map pre-processing"): + predict_dataset = predict_dataset.map( + preprocess_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on prediction dataset", + ) + + # Data collator + label_pad_token_id = -100 if data_args.ignore_pad_token_for_loss else tokenizer.pad_token_id + data_collator = DataCollatorForSeq2Seq( + tokenizer, + model=model, + label_pad_token_id=label_pad_token_id, + pad_to_multiple_of=8 if training_args.fp16 else None, + ) + + # Metric + metric = evaluate.load("rouge") + + def postprocess_text(preds, labels): + preds = [pred.strip() for pred in preds] + labels = [label.strip() for label in labels] + + # rougeLSum expects newline after each sentence + preds = ["\n".join(nltk.sent_tokenize(pred)) for pred in preds] + labels = ["\n".join(nltk.sent_tokenize(label)) for label in labels] + + return preds, labels + + def compute_metrics(eval_preds): + preds, labels = eval_preds + if isinstance(preds, tuple): + preds = preds[0] + decoded_preds = tokenizer.batch_decode(preds, skip_special_tokens=True) + if data_args.ignore_pad_token_for_loss: + # Replace -100 in the labels as we can't decode them. + labels = np.where(labels != -100, labels, tokenizer.pad_token_id) + decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=True) + + # Some simple post-processing + decoded_preds, decoded_labels = postprocess_text(decoded_preds, decoded_labels) + + result = metric.compute(predictions=decoded_preds, references=decoded_labels, use_stemmer=True) + result = {k: round(v * 100, 4) for k, v in result.items()} + prediction_lens = [np.count_nonzero(pred != tokenizer.pad_token_id) for pred in preds] + result["gen_len"] = np.mean(prediction_lens) + return result + + # Early stopping + if data_args.patience and data_args.patience > 0: + training_args.load_best_model_at_end = True + + # Setup adapters + setup_adapter_training(model, adapter_args, data_args.dataset_name or "summarization") + # Initialize our Trainer + trainer_class = Seq2SeqAdapterTrainer if adapter_args.train_adapter else Seq2SeqTrainer + trainer = trainer_class( + model=model, + args=training_args, + train_dataset=train_dataset if training_args.do_train else None, + eval_dataset=eval_dataset if training_args.do_eval else None, + tokenizer=tokenizer, + data_collator=data_collator, + compute_metrics=compute_metrics if training_args.predict_with_generate else None, + ) + if data_args.patience and data_args.patience > 0: + callback = EarlyStoppingCallback(early_stopping_patience=data_args.patience) + trainer.add_callback(callback) + + # Training + if training_args.do_train: + checkpoint = None + if training_args.resume_from_checkpoint is not None: + checkpoint = training_args.resume_from_checkpoint + elif last_checkpoint is not None: + checkpoint = last_checkpoint + train_result = trainer.train(resume_from_checkpoint=checkpoint) + trainer.save_model() # Saves the tokenizer too for easy upload + + metrics = train_result.metrics + max_train_samples = ( + data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) + ) + metrics["train_samples"] = min(max_train_samples, len(train_dataset)) + + trainer.log_metrics("train", metrics) + trainer.save_metrics("train", metrics) + trainer.save_state() + + # Evaluation + results = {} + max_length = ( + training_args.generation_max_length + if training_args.generation_max_length is not None + else data_args.val_max_target_length + ) + num_beams = data_args.num_beams if data_args.num_beams is not None else training_args.generation_num_beams + if training_args.do_eval: + logger.info("*** Evaluate ***") + metrics = trainer.evaluate(max_length=max_length, num_beams=num_beams, metric_key_prefix="eval") + max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) + metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) + + trainer.log_metrics("eval", metrics) + trainer.save_metrics("eval", metrics) + + if training_args.do_predict: + logger.info("*** Predict ***") + + predict_results = trainer.predict( + predict_dataset, metric_key_prefix="predict", max_length=max_length, num_beams=num_beams + ) + metrics = predict_results.metrics + max_predict_samples = ( + data_args.max_predict_samples if data_args.max_predict_samples is not None else len(predict_dataset) + ) + metrics["predict_samples"] = min(max_predict_samples, len(predict_dataset)) + + trainer.log_metrics("predict", metrics) + trainer.save_metrics("predict", metrics) + + if trainer.is_world_process_zero(): + if training_args.predict_with_generate: + predictions = tokenizer.batch_decode( + predict_results.predictions, skip_special_tokens=True, clean_up_tokenization_spaces=True + ) + predictions = [pred.strip() for pred in predictions] + output_prediction_file = os.path.join(training_args.output_dir, "generated_predictions.txt") + with open(output_prediction_file, "w") as writer: + writer.write("\n".join(predictions)) + + kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "summarization"} + if data_args.dataset_name is not None: + kwargs["dataset_tags"] = data_args.dataset_name + if data_args.dataset_config_name is not None: + kwargs["dataset_args"] = data_args.dataset_config_name + kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" + else: + kwargs["dataset"] = data_args.dataset_name + + if data_args.lang is not None: + kwargs["language"] = data_args.lang + + if training_args.push_to_hub: + trainer.push_to_hub(**kwargs) + else: + trainer.create_model_card(**kwargs) + + return results + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/test_adapter_examples.py b/adapters/examples/pytorch/test_adapter_examples.py new file mode 100644 index 00000000..1b4bd984 --- /dev/null +++ b/adapters/examples/pytorch/test_adapter_examples.py @@ -0,0 +1,395 @@ +# coding=utf-8 + +import json +import logging +import os +import sys +from unittest.mock import patch + +import torch + +from transformers.testing_utils import TestCasePlus, get_gpu_count, slow, torch_device + + +SRC_DIRS = [ + os.path.join(os.path.dirname(__file__), dirname) + for dirname in [ + "adapterfusion", + "text-generation", + "text-classification", + "token-classification", + "language-modeling", + "multiple-choice", + "question-answering", + "summarization", + "translation", + "dependency-parsing", + ] +] +sys.path.extend(SRC_DIRS) + +if SRC_DIRS is not None: + import run_clm + import run_fusion_glue + import run_glue + import run_mlm + import run_ner + import run_qa + import run_summarization + import run_swag + import run_translation + import run_udp + +logging.basicConfig(level=logging.DEBUG) + +logger = logging.getLogger() + + +def get_results(output_dir): + results = {} + path = os.path.join(output_dir, "all_results.json") + if os.path.exists(path): + with open(path, "r") as f: + results = json.load(f) + else: + raise ValueError(f"can't find {path}") + return results + + +class AdapterExamplesTests(TestCasePlus): + def test_run_glue_adapters(self): + stream_handler = logging.StreamHandler(sys.stdout) + logger.addHandler(stream_handler) + + tmp_dir = self.get_auto_remove_tmp_dir() + testargs = f""" + run_glue.py + --model_name_or_path bert-base-uncased + --output_dir {tmp_dir} + --overwrite_output_dir + --train_file ./tests/fixtures/samples/MRPC/train.csv + --validation_file ./tests/fixtures/samples/MRPC/dev.csv + --do_train + --do_eval + --per_device_train_batch_size=2 + --per_device_eval_batch_size=1 + --learning_rate=5e-4 + --max_steps=10 + --warmup_steps=2 + --seed=42 + --max_seq_length=128 + --train_adapter + --adapter_config=double_seq_bn + """.split() + with patch.object(sys, "argv", testargs): + run_glue.main() + result = get_results(tmp_dir) + self.assertGreaterEqual(result["eval_accuracy"], 0.75) + + def test_run_fusion_glue(self): + stream_handler = logging.StreamHandler(sys.stdout) + logger.addHandler(stream_handler) + + testargs = """ + run_fusion_glue.py + --model_name_or_path bert-base-uncased + --data_dir ./tests/fixtures/samples/MRPC/ + --task_name mrpc + --do_train + --do_eval + --output_dir ./tests/fixtures/samples/temp_dir + --per_device_train_batch_size=2 + --per_device_eval_batch_size=1 + --learning_rate=5e-5 + --max_steps=20 + --warmup_steps=2 + --overwrite_output_dir + --seed=42 + --max_seq_length=128 + --train_adapter + --adapter_config=double_seq_bn + --load_adapter=qqp@ukp + """.split() + with patch.object(sys, "argv", testargs): + result = run_fusion_glue.main() + del result["eval_loss"] + for value in result.values(): + self.assertGreaterEqual(value, 0.5) + + def test_run_squad_adapters(self): + stream_handler = logging.StreamHandler(sys.stdout) + logger.addHandler(stream_handler) + + tmp_dir = self.get_auto_remove_tmp_dir() + testargs = f""" + run_squad.py + --model_name_or_path bert-base-uncased + --version_2_with_negative + --train_file ./tests/fixtures/samples/SQUAD/sample.json + --validation_file ./tests/fixtures/samples/SQUAD/sample.json + --output_dir {tmp_dir} + --overwrite_output_dir + --max_steps=15 + --warmup_steps=2 + --do_train + --do_eval + --learning_rate=2e-3 + --per_device_train_batch_size=2 + --per_device_eval_batch_size=1 + --train_adapter + --adapter_config=double_seq_bn[reduction_factor=8] + """.split() + + with patch.object(sys, "argv", testargs): + run_qa.main() + result = get_results(tmp_dir) + self.assertGreaterEqual(result["eval_f1"], 30) + self.assertGreaterEqual(result["eval_exact"], 30) + + def test_run_swag_adapter(self): + stream_handler = logging.StreamHandler(sys.stdout) + logger.addHandler(stream_handler) + + tmp_dir = self.get_auto_remove_tmp_dir() + testargs = f""" + run_swag.py + --model_name_or_path bert-base-uncased + --train_file ./tests/fixtures/samples/swag/sample.json + --validation_file ./tests/fixtures/samples/swag/sample.json + --output_dir {tmp_dir} + --overwrite_output_dir + --max_steps=20 + --warmup_steps=2 + --do_train + --do_eval + --learning_rate=2e-4 + --per_device_train_batch_size=2 + --per_device_eval_batch_size=1 + --train_adapter + --adapter_config=double_seq_bn[reduction_factor=8] + """.split() + + with patch.object(sys, "argv", testargs): + run_swag.main() + result = get_results(tmp_dir) + self.assertGreaterEqual(result["eval_accuracy"], 0.8) + + def test_run_clm_adapter(self): + stream_handler = logging.StreamHandler(sys.stdout) + logger.addHandler(stream_handler) + + tmp_dir = self.get_auto_remove_tmp_dir() + testargs = f""" + run_clm.py + --model_name_or_path gpt2 + --train_file ./tests/fixtures/sample_text.txt + --validation_file ./tests/fixtures/sample_text.txt + --do_train + --do_eval + --learning_rate 1e-3 + --block_size 128 + --per_device_train_batch_size 5 + --per_device_eval_batch_size 5 + --num_train_epochs 2 + --output_dir {tmp_dir} + --overwrite_output_dir + --train_adapter + --adapter_config=double_seq_bn[reduction_factor=8] + """.split() + + if torch.cuda.device_count() > 1: + # Skipping because there are not enough batches to train the model + would need a drop_last to work. + return + + if torch_device != "cuda": + testargs.append("--no_cuda") + + with patch.object(sys, "argv", testargs): + run_clm.main() + result = get_results(tmp_dir) + self.assertLess(result["perplexity"], 100) + + def test_run_mlm_adapter(self): + stream_handler = logging.StreamHandler(sys.stdout) + logger.addHandler(stream_handler) + + tmp_dir = self.get_auto_remove_tmp_dir() + testargs = f""" + run_mlm.py + --model_name_or_path roberta-base + --train_file ./tests/fixtures/sample_text.txt + --validation_file ./tests/fixtures/sample_text.txt + --output_dir {tmp_dir} + --overwrite_output_dir + --do_train + --do_eval + --prediction_loss_only + --num_train_epochs=1 + --train_adapter + --adapter_config=double_seq_bn[reduction_factor=8] + """.split() + + if torch_device != "cuda": + testargs.append("--no_cuda") + + with patch.object(sys, "argv", testargs): + run_mlm.main() + result = get_results(tmp_dir) + self.assertLess(result["perplexity"], 42) + + # TODO: Add Adapter to load + # def test_generation_adapter(self): + # stream_handler = logging.StreamHandler(sys.stdout) + # logger.addHandler(stream_handler) + # + # testargs = [ + # "run_generation.py", + # "--prompt=Hello", + # "--length=10", + # "--seed=42", + # "--load_adapter=./test_adapter/adapter_poem", + # ] + # + # if is_cuda_and_apex_available(): + # testargs.append("--fp16") + # + # model_type, model_name = ( + # "--model_type=gpt2", + # "--model_name_or_path=gpt2", + # ) + # with patch.object(sys, "argv", testargs + [model_type, model_name]): + # result = run_generation.main() + # self.assertGreaterEqual(len(result[0]), 10) + + @slow + def test_run_summarization_adapter(self): + stream_handler = logging.StreamHandler(sys.stdout) + logger.addHandler(stream_handler) + + tmp_dir = self.get_auto_remove_tmp_dir() + testargs = f""" + run_summarization.py + --model_name_or_path facebook/bart-base + --train_file ./tests/fixtures/samples/xsum/sample.json + --validation_file ./tests/fixtures/samples/xsum/sample.json + --output_dir {tmp_dir} + --overwrite_output_dir + --max_steps=50 + --warmup_steps=8 + --do_train + --do_eval + --learning_rate=2e-4 + --per_device_train_batch_size=2 + --per_device_eval_batch_size=1 + --predict_with_generate + --train_adapter + --adapter_config=double_seq_bn[reduction_factor=8] + """.split() + + with patch.object(sys, "argv", testargs): + run_summarization.main() + result = get_results(tmp_dir) + self.assertGreaterEqual(result["eval_rouge1"], 10) + self.assertGreaterEqual(result["eval_rouge2"], 2) + self.assertGreaterEqual(result["eval_rougeL"], 7) + self.assertGreaterEqual(result["eval_rougeLsum"], 7) + + @slow + def test_run_translation_adapter(self): + stream_handler = logging.StreamHandler(sys.stdout) + logger.addHandler(stream_handler) + + tmp_dir = self.get_auto_remove_tmp_dir() + testargs = f""" + run_translation.py + --model_name_or_path facebook/bart-base + --source_lang en + --target_lang ro + --train_file ./tests/fixtures/samples/wmt16/sample.json + --validation_file ./tests/fixtures/samples/wmt16/sample.json + --output_dir {tmp_dir} + --overwrite_output_dir + --max_steps=50 + --warmup_steps=8 + --do_train + --do_eval + --learning_rate=3e-3 + --per_device_train_batch_size=2 + --per_device_eval_batch_size=1 + --predict_with_generate + --source_lang en_XX + --target_lang ro_RO + --train_adapter + --adapter_config=double_seq_bn[reduction_factor=8] + """.split() + + with patch.object(sys, "argv", testargs): + run_translation.main() + result = get_results(tmp_dir) + self.assertGreaterEqual(result["eval_bleu"], 30) + + def test_run_ner_adapter(self): + stream_handler = logging.StreamHandler(sys.stdout) + logger.addHandler(stream_handler) + + # with so little data distributed training needs more epochs to get the score on par with 0/1 gpu + epochs = 14 if get_gpu_count() > 1 else 6 + + tmp_dir = self.get_auto_remove_tmp_dir() + testargs = f""" + run_ner.py + --model_name_or_path bert-base-uncased + --train_file ./tests/fixtures/samples/conll/sample.json + --validation_file ./tests/fixtures/samples/conll/sample.json + --output_dir {tmp_dir} + --overwrite_output_dir + --do_train + --do_eval + --warmup_steps=2 + --learning_rate=5e-3 + --per_device_train_batch_size=2 + --per_device_eval_batch_size=2 + --num_train_epochs={epochs} + --train_adapter + --adapter_config=double_seq_bn[reduction_factor=16] + """.split() + + if torch_device != "cuda": + testargs.append("--no_cuda") + + with patch.object(sys, "argv", testargs): + run_ner.main() + result = get_results(tmp_dir) + self.assertGreaterEqual(result["eval_accuracy"], 0.75) + self.assertGreaterEqual(result["eval_precision"], 0.75) + self.assertLess(result["eval_loss"], 0.5) + + def test_run_udp_adapter(self): + stream_handler = logging.StreamHandler(sys.stdout) + logger.addHandler(stream_handler) + + tmp_dir = self.get_auto_remove_tmp_dir() + testargs = f""" + run_udp.py + --model_name_or_path bert-base-uncased + --do_train + --do_eval + --task_name en_ewt + --use_mock_data + --evaluate_on train + --per_device_train_batch_size=2 + --per_device_eval_batch_size=1 + --learning_rate=5e-4 + --max_steps=10 + --output_dir {tmp_dir} + --overwrite_output_dir + --train_adapter + """.split() + + if torch_device != "cuda": + testargs.append("--no_cuda") + + with patch.object(sys, "argv", testargs): + run_udp.main() + result = get_results(tmp_dir) + self.assertGreaterEqual(result["eval_uas"], 100.0) diff --git a/adapters/examples/pytorch/test_xla_examples.py b/adapters/examples/pytorch/test_xla_examples.py new file mode 100644 index 00000000..4a29ce3b --- /dev/null +++ b/adapters/examples/pytorch/test_xla_examples.py @@ -0,0 +1,94 @@ +# coding=utf-8 +# Copyright 2018 HuggingFace Inc.. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import json +import logging +import os +import sys +from time import time +from unittest.mock import patch + +from transformers.testing_utils import TestCasePlus, require_torch_tpu + + +logging.basicConfig(level=logging.DEBUG) + +logger = logging.getLogger() + + +def get_results(output_dir): + results = {} + path = os.path.join(output_dir, "all_results.json") + if os.path.exists(path): + with open(path, "r") as f: + results = json.load(f) + else: + raise ValueError(f"can't find {path}") + return results + + +stream_handler = logging.StreamHandler(sys.stdout) +logger.addHandler(stream_handler) + + +@require_torch_tpu +class TorchXLAExamplesTests(TestCasePlus): + def test_run_glue(self): + import xla_spawn + + tmp_dir = self.get_auto_remove_tmp_dir() + testargs = f""" + ./examples/pytorch/text-classification/run_glue.py + --num_cores=8 + ./examples/pytorch/text-classification/run_glue.py + --model_name_or_path distilbert-base-uncased + --output_dir {tmp_dir} + --overwrite_output_dir + --train_file ./tests/fixtures/tests_samples/MRPC/train.csv + --validation_file ./tests/fixtures/tests_samples/MRPC/dev.csv + --do_train + --do_eval + --debug tpu_metrics_debug + --per_device_train_batch_size=2 + --per_device_eval_batch_size=1 + --learning_rate=1e-4 + --max_steps=10 + --warmup_steps=2 + --seed=42 + --max_seq_length=128 + """.split() + + with patch.object(sys, "argv", testargs): + start = time() + xla_spawn.main() + end = time() + + result = get_results(tmp_dir) + self.assertGreaterEqual(result["eval_accuracy"], 0.75) + + # Assert that the script takes less than 500 seconds to make sure it doesn't hang. + self.assertLess(end - start, 500) + + def test_trainer_tpu(self): + import xla_spawn + + testargs = """ + ./tests/test_trainer_tpu.py + --num_cores=8 + ./tests/test_trainer_tpu.py + """.split() + with patch.object(sys, "argv", testargs): + xla_spawn.main() diff --git a/adapters/examples/pytorch/text-classification/README.md b/adapters/examples/pytorch/text-classification/README.md new file mode 100644 index 00000000..dd6bf8ef --- /dev/null +++ b/adapters/examples/pytorch/text-classification/README.md @@ -0,0 +1,235 @@ + + +# Text classification with Adapters +> **Note:** We have not adapted the following scripts of Hugging Face Transformers: +> - `run_glue_no_trainer.py` +> - `run_xnli.py` +> +> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. + + +## Training Adapters in PyTorch + +Based on script `run_glue.py` (using model classes with flexible heads). + +By specifying a few additional, adapter-specific flags, you can easily switch from fine-tuning a full model to training Adapter modules on GLUE: + +```bash +export TASK_NAME=mrpc + +python run_glue.py \ + --model_name_or_path bert-base-uncased \ + --task_name $TASK_NAME \ + --do_train \ + --do_eval \ + --max_seq_length 128 \ + --per_device_train_batch_size 32 \ + --learning_rate 1e-4 \ + --num_train_epochs 10.0 \ + --output_dir /tmp/$TASK_NAME \ + --overwrite_output_dir \ + --train_adapter \ + --adapter_config seq_bn +``` + +--- + +## Hugging Face Transformers version + +Based on the script [`run_glue.py`](https://github.com/Adapter-Hub/adapters/blob/master/examples/pytorch/text-classification/run_glue.py). + +Fine-tuning the library models for sequence classification on the GLUE benchmark: [General Language Understanding +Evaluation](https://gluebenchmark.com/). This script can fine-tune any of the models on the [hub](https://huggingface.co/models) +and can also be used for a dataset hosted on our [hub](https://huggingface.co/datasets) or your own data in a csv or a JSON file +(the script might need some tweaks in that case, refer to the comments inside for help). + +GLUE is made up of a total of 9 different tasks. Here is how to run the script on one of them: + +```bash +export TASK_NAME=mrpc + +python run_glue.py \ + --model_name_or_path bert-base-cased \ + --task_name $TASK_NAME \ + --do_train \ + --do_eval \ + --max_seq_length 128 \ + --per_device_train_batch_size 32 \ + --learning_rate 2e-5 \ + --num_train_epochs 3 \ + --output_dir /tmp/$TASK_NAME/ +``` + +where task name can be one of cola, sst2, mrpc, stsb, qqp, mnli, qnli, rte, wnli. + +We get the following results on the dev set of the benchmark with the previous commands (with an exception for MRPC and +WNLI which are tiny and where we used 5 epochs instead of 3). Trainings are seeded so you should obtain the same +results with PyTorch 1.6.0 (and close results with different versions), training times are given for information (a +single Titan RTX was used): + +| Task | Metric | Result | Training time | +|-------|------------------------------|-------------|---------------| +| CoLA | Matthews corr | 56.53 | 3:17 | +| SST-2 | Accuracy | 92.32 | 26:06 | +| MRPC | F1/Accuracy | 88.85/84.07 | 2:21 | +| STS-B | Pearson/Spearman corr. | 88.64/88.48 | 2:13 | +| QQP | Accuracy/F1 | 90.71/87.49 | 2:22:26 | +| MNLI | Matched acc./Mismatched acc. | 83.91/84.10 | 2:35:23 | +| QNLI | Accuracy | 90.66 | 40:57 | +| RTE | Accuracy | 65.70 | 57 | +| WNLI | Accuracy | 56.34 | 24 | + +Some of these results are significantly different from the ones reported on the test set of GLUE benchmark on the +website. For QQP and WNLI, please refer to [FAQ #12](https://gluebenchmark.com/faq) on the website. + +The following example fine-tunes BERT on the `imdb` dataset hosted on our [hub](https://huggingface.co/datasets): + +```bash +python run_glue.py \ + --model_name_or_path bert-base-cased \ + --dataset_name imdb \ + --do_train \ + --do_predict \ + --max_seq_length 128 \ + --per_device_train_batch_size 32 \ + --learning_rate 2e-5 \ + --num_train_epochs 3 \ + --output_dir /tmp/imdb/ +``` + +> If your model classification head dimensions do not fit the number of labels in the dataset, you can specify `--ignore_mismatched_sizes` to adapt it. + + +### Mixed precision training + +If you have a GPU with mixed precision capabilities (architecture Pascal or more recent), you can use mixed precision +training with PyTorch 1.6.0 or latest, or by installing the [Apex](https://github.com/NVIDIA/apex) library for previous +versions. Just add the flag `--fp16` to your command launching one of the scripts mentioned above! + +Using mixed precision training usually results in 2x-speedup for training with the same final results: + +| Task | Metric | Result | Training time | Result (FP16) | Training time (FP16) | +|-------|------------------------------|-------------|---------------|---------------|----------------------| +| CoLA | Matthews corr | 56.53 | 3:17 | 56.78 | 1:41 | +| SST-2 | Accuracy | 92.32 | 26:06 | 91.74 | 13:11 | +| MRPC | F1/Accuracy | 88.85/84.07 | 2:21 | 88.12/83.58 | 1:10 | +| STS-B | Pearson/Spearman corr. | 88.64/88.48 | 2:13 | 88.71/88.55 | 1:08 | +| QQP | Accuracy/F1 | 90.71/87.49 | 2:22:26 | 90.67/87.43 | 1:11:54 | +| MNLI | Matched acc./Mismatched acc. | 83.91/84.10 | 2:35:23 | 84.04/84.06 | 1:17:06 | +| QNLI | Accuracy | 90.66 | 40:57 | 90.96 | 20:16 | +| RTE | Accuracy | 65.70 | 57 | 65.34 | 29 | +| WNLI | Accuracy | 56.34 | 24 | 56.34 | 12 | + + +## PyTorch version, no Trainer + +Based on the script [`run_glue_no_trainer.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/text-classification/run_glue_no_trainer.py). + +Like `run_glue.py`, this script allows you to fine-tune any of the models on the [hub](https://huggingface.co/models) on a +text classification task, either a GLUE task or your own data in a csv or a JSON file. The main difference is that this +script exposes the bare training loop, to allow you to quickly experiment and add any customization you would like. + +It offers less options than the script with `Trainer` (for instance you can easily change the options for the optimizer +or the dataloaders directly in the script) but still run in a distributed setup, on TPU and supports mixed precision by +the mean of the [🤗 `Accelerate`](https://github.com/huggingface/accelerate) library. You can use the script normally +after installing it: + +```bash +pip install git+https://github.com/huggingface/accelerate +``` + +then + +```bash +export TASK_NAME=mrpc + +python run_glue_no_trainer.py \ + --model_name_or_path bert-base-cased \ + --task_name $TASK_NAME \ + --max_length 128 \ + --per_device_train_batch_size 32 \ + --learning_rate 2e-5 \ + --num_train_epochs 3 \ + --output_dir /tmp/$TASK_NAME/ +``` + +You can then use your usual launchers to run in it in a distributed environment, but the easiest way is to run + +```bash +accelerate config +``` + +and reply to the questions asked. Then + +```bash +accelerate test +``` + +that will check everything is ready for training. Finally, you can launch training with + +```bash +export TASK_NAME=mrpc + +accelerate launch run_glue_no_trainer.py \ + --model_name_or_path bert-base-cased \ + --task_name $TASK_NAME \ + --max_length 128 \ + --per_device_train_batch_size 32 \ + --learning_rate 2e-5 \ + --num_train_epochs 3 \ + --output_dir /tmp/$TASK_NAME/ +``` + +This command is the same and will work for: + +- a CPU-only setup +- a setup with one GPU +- a distributed training with several GPUs (single or multi node) +- a training on TPUs + +Note that this library is in alpha release so your feedback is more than welcome if you encounter any problem using it. + +## XNLI + +Based on the script [`run_xnli.py`](https://github.com/huggingface/transformers/examples/pytorch/text-classification/run_xnli.py). + +[XNLI](https://www.nyu.edu/projects/bowman/xnli/) is a crowd-sourced dataset based on [MultiNLI](http://www.nyu.edu/projects/bowman/multinli/). It is an evaluation benchmark for cross-lingual text representations. Pairs of text are labeled with textual entailment annotations for 15 different languages (including both high-resource language such as English and low-resource languages such as Swahili). + +#### Fine-tuning on XNLI + +This example code fine-tunes mBERT (multi-lingual BERT) on the XNLI dataset. It runs in 106 mins on a single tesla V100 16GB. + +```bash +python run_xnli.py \ + --model_name_or_path bert-base-multilingual-cased \ + --language de \ + --train_language en \ + --do_train \ + --do_eval \ + --per_device_train_batch_size 32 \ + --learning_rate 5e-5 \ + --num_train_epochs 2.0 \ + --max_seq_length 128 \ + --output_dir /tmp/debug_xnli/ \ + --save_steps -1 +``` + +Training with the previously defined hyper-parameters yields the following results on the **test** set: + +```bash +acc = 0.7093812375249501 +``` diff --git a/adapters/examples/pytorch/text-classification/requirements.txt b/adapters/examples/pytorch/text-classification/requirements.txt new file mode 100644 index 00000000..19090ab1 --- /dev/null +++ b/adapters/examples/pytorch/text-classification/requirements.txt @@ -0,0 +1,8 @@ +accelerate >= 0.12.0 +datasets >= 1.8.0 +sentencepiece != 0.1.92 +scipy +scikit-learn +protobuf +torch >= 1.3 +evaluate \ No newline at end of file diff --git a/adapters/examples/pytorch/text-classification/run_glue.py b/adapters/examples/pytorch/text-classification/run_glue.py new file mode 100644 index 00000000..5786e0df --- /dev/null +++ b/adapters/examples/pytorch/text-classification/run_glue.py @@ -0,0 +1,635 @@ +#!/usr/bin/env python +# coding=utf-8 +# Copyright 2020 The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" Finetuning the library models for sequence classification on GLUE.""" +# You can also adapt this script on your own text classification task. Pointers for this are left as comments. + +import logging +import os +import random +import sys +from dataclasses import dataclass, field +from typing import Optional + +import datasets +import numpy as np +from datasets import load_dataset + +import adapters +import evaluate +import transformers +from adapters import AdapterArguments, AdapterTrainer, AutoAdapterModel, setup_adapter_training +from transformers import ( + AutoConfig, + AutoTokenizer, + DataCollatorWithPadding, + EvalPrediction, + HfArgumentParser, + PretrainedConfig, + Trainer, + TrainingArguments, + default_data_collator, + set_seed, +) +from transformers.trainer_utils import get_last_checkpoint +from transformers.utils import check_min_version +from transformers.utils.versions import require_version + + +# Will error if the minimal version of Transformers is not installed. Remove at your own risks. +check_min_version("4.26.0") + +require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/text-classification/requirements.txt") + +task_to_keys = { + "cola": ("sentence", None), + "mnli": ("premise", "hypothesis"), + "mrpc": ("sentence1", "sentence2"), + "qnli": ("question", "sentence"), + "qqp": ("question1", "question2"), + "rte": ("sentence1", "sentence2"), + "sst2": ("sentence", None), + "stsb": ("sentence1", "sentence2"), + "wnli": ("sentence1", "sentence2"), +} + +logger = logging.getLogger(__name__) + + +@dataclass +class DataTrainingArguments: + """ + Arguments pertaining to what data we are going to input our model for training and eval. + + Using `HfArgumentParser` we can turn this class + into argparse arguments to be able to specify them on + the command line. + """ + + task_name: Optional[str] = field( + default=None, + metadata={"help": "The name of the task to train on: " + ", ".join(task_to_keys.keys())}, + ) + dataset_name: Optional[str] = field( + default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} + ) + dataset_config_name: Optional[str] = field( + default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} + ) + max_seq_length: int = field( + default=128, + metadata={ + "help": ( + "The maximum total input sequence length after tokenization. Sequences longer " + "than this will be truncated, sequences shorter will be padded." + ) + }, + ) + overwrite_cache: bool = field( + default=False, metadata={"help": "Overwrite the cached preprocessed datasets or not."} + ) + pad_to_max_length: bool = field( + default=True, + metadata={ + "help": ( + "Whether to pad all samples to `max_seq_length`. " + "If False, will pad the samples dynamically when batching to the maximum length in the batch." + ) + }, + ) + max_train_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of training examples to this " + "value if set." + ) + }, + ) + max_eval_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of evaluation examples to this " + "value if set." + ) + }, + ) + max_predict_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of prediction examples to this " + "value if set." + ) + }, + ) + train_file: Optional[str] = field( + default=None, metadata={"help": "A csv or a json file containing the training data."} + ) + validation_file: Optional[str] = field( + default=None, metadata={"help": "A csv or a json file containing the validation data."} + ) + test_file: Optional[str] = field(default=None, metadata={"help": "A csv or a json file containing the test data."}) + + def __post_init__(self): + if self.task_name is not None: + self.task_name = self.task_name.lower() + if self.task_name not in task_to_keys.keys(): + raise ValueError("Unknown task, you should pick one in " + ",".join(task_to_keys.keys())) + elif self.dataset_name is not None: + pass + elif self.train_file is None or self.validation_file is None: + raise ValueError("Need either a GLUE task, a training/validation file or a dataset name.") + else: + train_extension = self.train_file.split(".")[-1] + assert train_extension in ["csv", "json"], "`train_file` should be a csv or a json file." + validation_extension = self.validation_file.split(".")[-1] + assert ( + validation_extension == train_extension + ), "`validation_file` should have the same extension (csv or json) as `train_file`." + + +@dataclass +class ModelArguments: + """ + Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. + """ + + model_name_or_path: str = field( + metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} + ) + config_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} + ) + tokenizer_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} + ) + cache_dir: Optional[str] = field( + default=None, + metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"}, + ) + use_fast_tokenizer: bool = field( + default=True, + metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, + ) + model_revision: str = field( + default="main", + metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, + ) + use_auth_token: bool = field( + default=False, + metadata={ + "help": ( + "Will use the token generated when running `huggingface-cli login` (necessary to use this script " + "with private models)." + ) + }, + ) + ignore_mismatched_sizes: bool = field( + default=False, + metadata={"help": "Will enable to load a pretrained model whose head dimensions are different."}, + ) + + +def main(): + # See all possible arguments in src/transformers/training_args.py + # or by passing the --help flag to this script. + # We now keep distinct sets of args, for a cleaner separation of concerns. + + parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) + + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, training_args, adapter_args = parser.parse_json_file( + json_file=os.path.abspath(sys.argv[1]) + ) + else: + model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() + + # Setup logging + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + handlers=[logging.StreamHandler(sys.stdout)], + ) + + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + datasets.utils.logging.set_verbosity(log_level) + transformers.utils.logging.set_verbosity(log_level) + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + + # Log on each process the small summary: + logger.warning( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" + ) + logger.info(f"Training/evaluation parameters {training_args}") + + # Detecting last checkpoint. + last_checkpoint = None + if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: + last_checkpoint = get_last_checkpoint(training_args.output_dir) + if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: + raise ValueError( + f"Output directory ({training_args.output_dir}) already exists and is not empty. " + "Use --overwrite_output_dir to overcome." + ) + elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: + logger.info( + f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " + "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." + ) + + # Set seed before initializing model. + set_seed(training_args.seed) + + # Get the datasets: you can either provide your own CSV/JSON training and evaluation files (see below) + # or specify a GLUE benchmark task (the dataset will be downloaded automatically from the datasets Hub). + # + # For CSV/JSON files, this script will use as labels the column called 'label' and as pair of sentences the + # sentences in columns called 'sentence1' and 'sentence2' if such column exists or the first two columns not named + # label if at least two columns are provided. + # + # If the CSVs/JSONs contain only one non-label column, the script does single sentence classification on this + # single column. You can easily tweak this behavior (see below) + # + # In distributed training, the load_dataset function guarantee that only one local process can concurrently + # download the dataset. + if data_args.task_name is not None: + # Downloading and loading a dataset from the hub. + raw_datasets = load_dataset( + "glue", + data_args.task_name, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + elif data_args.dataset_name is not None: + # Downloading and loading a dataset from the hub. + raw_datasets = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + else: + # Loading a dataset from your local files. + # CSV/JSON training and evaluation files are needed. + data_files = {"train": data_args.train_file, "validation": data_args.validation_file} + + # Get the test dataset: you can provide your own CSV/JSON test file (see below) + # when you use `do_predict` without specifying a GLUE benchmark task. + if training_args.do_predict: + if data_args.test_file is not None: + train_extension = data_args.train_file.split(".")[-1] + test_extension = data_args.test_file.split(".")[-1] + assert ( + test_extension == train_extension + ), "`test_file` should have the same extension (csv or json) as `train_file`." + data_files["test"] = data_args.test_file + else: + raise ValueError("Need either a GLUE task or a test file for `do_predict`.") + + for key in data_files.keys(): + logger.info(f"load a local file for {key}: {data_files[key]}") + + if data_args.train_file.endswith(".csv"): + # Loading a dataset from local csv files + raw_datasets = load_dataset( + "csv", + data_files=data_files, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + else: + # Loading a dataset from local json files + raw_datasets = load_dataset( + "json", + data_files=data_files, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + # See more about loading any type of standard or custom dataset at + # https://huggingface.co/docs/datasets/loading_datasets.html. + + # Labels + if data_args.task_name is not None: + is_regression = data_args.task_name == "stsb" + if not is_regression: + label_list = raw_datasets["train"].features["label"].names + num_labels = len(label_list) + else: + num_labels = 1 + else: + # Trying to have good defaults here, don't hesitate to tweak to your needs. + is_regression = raw_datasets["train"].features["label"].dtype in ["float32", "float64"] + if is_regression: + num_labels = 1 + else: + # A useful fast method: + # https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.unique + label_list = raw_datasets["train"].unique("label") + label_list.sort() # Let's sort it for determinism + num_labels = len(label_list) + + # Load pretrained model and tokenizer + # + # In distributed training, the .from_pretrained methods guarantee that only one local process can concurrently + # download model & vocab. + config = AutoConfig.from_pretrained( + model_args.config_name if model_args.config_name else model_args.model_name_or_path, + num_labels=num_labels, + finetuning_task=data_args.task_name, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + tokenizer = AutoTokenizer.from_pretrained( + model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + use_fast=model_args.use_fast_tokenizer, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + # We use the AutoAdapterModel class here for better adapter support. + model = AutoAdapterModel.from_pretrained( + model_args.model_name_or_path, + from_tf=bool(".ckpt" in model_args.model_name_or_path), + config=config, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ignore_mismatched_sizes=model_args.ignore_mismatched_sizes, + ) + + # Convert the model into an adapter model + adapters.init(model) + + model.add_classification_head( + data_args.task_name or "glue", + num_labels=num_labels, + id2label={i: v for i, v in enumerate(label_list)} if not is_regression else None, + ) + + # Preprocessing the raw_datasets + if data_args.task_name is not None: + sentence1_key, sentence2_key = task_to_keys[data_args.task_name] + else: + # Again, we try to have some nice defaults but don't hesitate to tweak to your use case. + non_label_column_names = [name for name in raw_datasets["train"].column_names if name != "label"] + if "sentence1" in non_label_column_names and "sentence2" in non_label_column_names: + sentence1_key, sentence2_key = "sentence1", "sentence2" + else: + if len(non_label_column_names) >= 2: + sentence1_key, sentence2_key = non_label_column_names[:2] + else: + sentence1_key, sentence2_key = non_label_column_names[0], None + + # Padding strategy + if data_args.pad_to_max_length: + padding = "max_length" + else: + # We will pad later, dynamically at batch creation, to the max sequence length in each batch + padding = False + + # Some models have set the order of the labels to use, so let's make sure we do use it. + label_to_id = None + if ( + model.config.label2id != PretrainedConfig(num_labels=num_labels).label2id + and data_args.task_name is not None + and not is_regression + ): + # Some have all caps in their config, some don't. + label_name_to_id = {k.lower(): v for k, v in model.config.label2id.items()} + if list(sorted(label_name_to_id.keys())) == list(sorted(label_list)): + label_to_id = {i: int(label_name_to_id[label_list[i]]) for i in range(num_labels)} + else: + logger.warning( + "Your model seems to have been trained with labels, but they don't match the dataset: ", + f"model labels: {list(sorted(label_name_to_id.keys()))}, dataset labels: {list(sorted(label_list))}." + "\nIgnoring the model labels as a result.", + ) + elif data_args.task_name is None and not is_regression: + label_to_id = {v: i for i, v in enumerate(label_list)} + + if label_to_id is not None: + model.config.label2id = label_to_id + model.config.id2label = {id: label for label, id in config.label2id.items()} + elif data_args.task_name is not None and not is_regression: + model.config.label2id = {l: i for i, l in enumerate(label_list)} + model.config.id2label = {id: label for label, id in config.label2id.items()} + + if data_args.max_seq_length > tokenizer.model_max_length: + logger.warning( + f"The max_seq_length passed ({data_args.max_seq_length}) is larger than the maximum length for the" + f"model ({tokenizer.model_max_length}). Using max_seq_length={tokenizer.model_max_length}." + ) + max_seq_length = min(data_args.max_seq_length, tokenizer.model_max_length) + + def preprocess_function(examples): + # Tokenize the texts + args = ( + (examples[sentence1_key],) if sentence2_key is None else (examples[sentence1_key], examples[sentence2_key]) + ) + result = tokenizer(*args, padding=padding, max_length=max_seq_length, truncation=True) + + # Map labels to IDs (not necessary for GLUE tasks) + if label_to_id is not None and "label" in examples: + result["label"] = [(label_to_id[l] if l != -1 else -1) for l in examples["label"]] + return result + + with training_args.main_process_first(desc="dataset map pre-processing"): + raw_datasets = raw_datasets.map( + preprocess_function, + batched=True, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on dataset", + ) + if training_args.do_train: + if "train" not in raw_datasets: + raise ValueError("--do_train requires a train dataset") + train_dataset = raw_datasets["train"] + if data_args.max_train_samples is not None: + max_train_samples = min(len(train_dataset), data_args.max_train_samples) + train_dataset = train_dataset.select(range(max_train_samples)) + + if training_args.do_eval: + if "validation" not in raw_datasets and "validation_matched" not in raw_datasets: + raise ValueError("--do_eval requires a validation dataset") + eval_dataset = raw_datasets["validation_matched" if data_args.task_name == "mnli" else "validation"] + if data_args.max_eval_samples is not None: + max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) + eval_dataset = eval_dataset.select(range(max_eval_samples)) + + if training_args.do_predict or data_args.task_name is not None or data_args.test_file is not None: + if "test" not in raw_datasets and "test_matched" not in raw_datasets: + raise ValueError("--do_predict requires a test dataset") + predict_dataset = raw_datasets["test_matched" if data_args.task_name == "mnli" else "test"] + if data_args.max_predict_samples is not None: + max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) + predict_dataset = predict_dataset.select(range(max_predict_samples)) + + # Log a few random samples from the training set: + if training_args.do_train: + for index in random.sample(range(len(train_dataset)), 3): + logger.info(f"Sample {index} of the training set: {train_dataset[index]}.") + + # Get the metric function + if data_args.task_name is not None: + metric = evaluate.load("glue", data_args.task_name) + else: + metric = evaluate.load("accuracy") + + # You can define your custom compute_metrics function. It takes an `EvalPrediction` object (a namedtuple with a + # predictions and label_ids field) and has to return a dictionary string to float. + def compute_metrics(p: EvalPrediction): + preds = p.predictions[0] if isinstance(p.predictions, tuple) else p.predictions + preds = np.squeeze(preds) if is_regression else np.argmax(preds, axis=1) + if data_args.task_name is not None: + result = metric.compute(predictions=preds, references=p.label_ids) + if len(result) > 1: + result["combined_score"] = np.mean(list(result.values())).item() + return result + elif is_regression: + return {"mse": ((preds - p.label_ids) ** 2).mean().item()} + else: + return {"accuracy": (preds == p.label_ids).astype(np.float32).mean().item()} + + # Data collator will default to DataCollatorWithPadding when the tokenizer is passed to Trainer, so we change it if + # we already did the padding. + if data_args.pad_to_max_length: + data_collator = default_data_collator + elif training_args.fp16: + data_collator = DataCollatorWithPadding(tokenizer, pad_to_multiple_of=8) + else: + data_collator = None + + # Setup adapters + setup_adapter_training(model, adapter_args, data_args.task_name or "glue") + # Initialize our Trainer + trainer_class = AdapterTrainer if adapter_args.train_adapter else Trainer + trainer = trainer_class( + model=model, + args=training_args, + train_dataset=train_dataset if training_args.do_train else None, + eval_dataset=eval_dataset if training_args.do_eval else None, + compute_metrics=compute_metrics, + tokenizer=tokenizer, + data_collator=data_collator, + ) + + # Training + if training_args.do_train: + checkpoint = None + if training_args.resume_from_checkpoint is not None: + checkpoint = training_args.resume_from_checkpoint + elif last_checkpoint is not None: + checkpoint = last_checkpoint + train_result = trainer.train(resume_from_checkpoint=checkpoint) + metrics = train_result.metrics + max_train_samples = ( + data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) + ) + metrics["train_samples"] = min(max_train_samples, len(train_dataset)) + + trainer.save_model() # Saves the tokenizer too for easy upload + + trainer.log_metrics("train", metrics) + trainer.save_metrics("train", metrics) + trainer.save_state() + + # Evaluation + if training_args.do_eval: + logger.info("*** Evaluate ***") + + # Loop to handle MNLI double evaluation (matched, mis-matched) + tasks = [data_args.task_name] + eval_datasets = [eval_dataset] + if data_args.task_name == "mnli": + tasks.append("mnli-mm") + valid_mm_dataset = raw_datasets["validation_mismatched"] + if data_args.max_eval_samples is not None: + max_eval_samples = min(len(valid_mm_dataset), data_args.max_eval_samples) + valid_mm_dataset = valid_mm_dataset.select(range(max_eval_samples)) + eval_datasets.append(valid_mm_dataset) + combined = {} + + for eval_dataset, task in zip(eval_datasets, tasks): + metrics = trainer.evaluate(eval_dataset=eval_dataset) + + max_eval_samples = ( + data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) + ) + metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) + + if task == "mnli-mm": + metrics = {k + "_mm": v for k, v in metrics.items()} + if task is not None and "mnli" in task: + combined.update(metrics) + + trainer.log_metrics("eval", metrics) + trainer.save_metrics("eval", combined if task is not None and "mnli" in task else metrics) + + if training_args.do_predict: + logger.info("*** Predict ***") + + # Loop to handle MNLI double evaluation (matched, mis-matched) + tasks = [data_args.task_name] + predict_datasets = [predict_dataset] + if data_args.task_name == "mnli": + tasks.append("mnli-mm") + predict_datasets.append(raw_datasets["test_mismatched"]) + + for predict_dataset, task in zip(predict_datasets, tasks): + # Removing the `label` columns because it contains -1 and Trainer won't like that. + predict_dataset = predict_dataset.remove_columns("label") + predictions = trainer.predict(predict_dataset, metric_key_prefix="predict").predictions + predictions = np.squeeze(predictions) if is_regression else np.argmax(predictions, axis=1) + + output_predict_file = os.path.join(training_args.output_dir, f"predict_results_{task}.txt") + if trainer.is_world_process_zero(): + with open(output_predict_file, "w") as writer: + logger.info(f"***** Predict results {task} *****") + writer.write("index\tprediction\n") + for index, item in enumerate(predictions): + if is_regression: + writer.write(f"{index}\t{item:3.3f}\n") + else: + item = label_list[item] + writer.write(f"{index}\t{item}\n") + + kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "text-classification"} + if data_args.task_name is not None: + kwargs["language"] = "en" + kwargs["dataset_tags"] = "glue" + kwargs["dataset_args"] = data_args.task_name + kwargs["dataset"] = f"GLUE {data_args.task_name.upper()}" + + if training_args.push_to_hub: + trainer.push_to_hub(**kwargs) + else: + trainer.create_model_card(**kwargs) + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/text-generation/README.md b/adapters/examples/pytorch/text-generation/README.md new file mode 100644 index 00000000..16b1049a --- /dev/null +++ b/adapters/examples/pytorch/text-generation/README.md @@ -0,0 +1,46 @@ + + +## Language generation with Adapters +> **Note:** We have not adapted the following scripts of Hugging Face Transformers: +> - `run_generation_contrastive_search.py` +> +> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. + +Based on the script [`run_generation.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/text-generation/run_generation.py). + +Conditional text generation using the auto-regressive models of the library: GPT, GPT-2, Transformer-XL, XLNet, CTRL. +A similar script is used for our official demo [Write With Transfomer](https://transformer.huggingface.co), where you +can try out the different models available in the library. + +Example usage: + +```bash +python run_generation.py \ + --model_type=gpt2 \ + --model_name_or_path=gpt2 +``` + +This can also be done by using a trained adapter. With the `--adapter_path` argument you can specify an adapter to load +for language generation. + +Example with Adapters: +```bash +python run_generation.py \ + --model_type=gpt2 \ + --model_name_or_path=gpt2 + --load_adapter=./tmp/poem +``` \ No newline at end of file diff --git a/adapters/examples/pytorch/text-generation/requirements.txt b/adapters/examples/pytorch/text-generation/requirements.txt new file mode 100644 index 00000000..0ef50f18 --- /dev/null +++ b/adapters/examples/pytorch/text-generation/requirements.txt @@ -0,0 +1,3 @@ +sentencepiece != 0.1.92 +protobuf +torch >= 1.3 diff --git a/adapters/examples/pytorch/text-generation/run_generation.py b/adapters/examples/pytorch/text-generation/run_generation.py new file mode 100644 index 00000000..05dbe2fc --- /dev/null +++ b/adapters/examples/pytorch/text-generation/run_generation.py @@ -0,0 +1,301 @@ +#!/usr/bin/env python +# coding=utf-8 +# Copyright 2018 Google AI, Google Brain and Carnegie Mellon University Authors and the HuggingFace Inc. team. +# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" Conditional text generation with the auto-regressive models of the library (GPT/GPT-2/CTRL/Transformer-XL/XLNet) +""" + + +import argparse +import logging + +import numpy as np +import torch + +import adapters +from transformers import ( + CTRLLMHeadModel, + CTRLTokenizer, + GPT2LMHeadModel, + GPT2Tokenizer, + OpenAIGPTLMHeadModel, + OpenAIGPTTokenizer, + TransfoXLLMHeadModel, + TransfoXLTokenizer, + XLMTokenizer, + XLMWithLMHeadModel, + XLNetLMHeadModel, + XLNetTokenizer, +) + + +logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + level=logging.INFO, +) +logger = logging.getLogger(__name__) + +MAX_LENGTH = int(10000) # Hardcoded max length to avoid infinite loop + +MODEL_CLASSES = { + "gpt2": (GPT2LMHeadModel, GPT2Tokenizer), + "ctrl": (CTRLLMHeadModel, CTRLTokenizer), + "openai-gpt": (OpenAIGPTLMHeadModel, OpenAIGPTTokenizer), + "xlnet": (XLNetLMHeadModel, XLNetTokenizer), + "transfo-xl": (TransfoXLLMHeadModel, TransfoXLTokenizer), + "xlm": (XLMWithLMHeadModel, XLMTokenizer), +} + +# Padding text to help Transformer-XL and XLNet with short prompts as proposed by Aman Rusia +# in https://github.com/rusiaaman/XLNet-gen#methodology +# and https://medium.com/@amanrusia/xlnet-speaks-comparison-to-gpt-2-ea1a4e9ba39e +PREFIX = """In 1991, the remains of Russian Tsar Nicholas II and his family +(except for Alexei and Maria) are discovered. +The voice of Nicholas's young son, Tsarevich Alexei Nikolaevich, narrates the +remainder of the story. 1883 Western Siberia, +a young Grigori Rasputin is asked by his father and a group of men to perform magic. +Rasputin has a vision and denounces one of the men as a horse thief. Although his +father initially slaps him for making such an accusation, Rasputin watches as the +man is chased outside and beaten. Twenty years later, Rasputin sees a vision of +the Virgin Mary, prompting him to become a priest. Rasputin quickly becomes famous, +with people, even a bishop, begging for his blessing. """ + + +def set_seed(args): + np.random.seed(args.seed) + torch.manual_seed(args.seed) + if args.n_gpu > 0: + torch.cuda.manual_seed_all(args.seed) + + +# +# Functions to prepare models' input +# + + +def prepare_ctrl_input(args, _, tokenizer, prompt_text): + if args.temperature > 0.7: + logger.info("CTRL typically works better with lower temperatures (and lower top_k).") + + encoded_prompt = tokenizer.encode(prompt_text, add_special_tokens=False) + if not any(encoded_prompt[0] == x for x in tokenizer.control_codes.values()): + logger.info("WARNING! You are not starting your generation from a control code so you won't get good results") + return prompt_text + + +def prepare_xlm_input(args, model, tokenizer, prompt_text): + # kwargs = {"language": None, "mask_token_id": None} + + # Set the language + use_lang_emb = hasattr(model.config, "use_lang_emb") and model.config.use_lang_emb + if hasattr(model.config, "lang2id") and use_lang_emb: + available_languages = model.config.lang2id.keys() + if args.xlm_language in available_languages: + language = args.xlm_language + else: + language = None + while language not in available_languages: + language = input("Using XLM. Select language in " + str(list(available_languages)) + " >>> ") + + model.config.lang_id = model.config.lang2id[language] + # kwargs["language"] = tokenizer.lang2id[language] + + # TODO fix mask_token_id setup when configurations will be synchronized between models and tokenizers + # XLM masked-language modeling (MLM) models need masked token + # is_xlm_mlm = "mlm" in args.model_name_or_path + # if is_xlm_mlm: + # kwargs["mask_token_id"] = tokenizer.mask_token_id + + return prompt_text + + +def prepare_xlnet_input(args, _, tokenizer, prompt_text): + prefix = args.prefix if args.prefix else args.padding_text if args.padding_text else PREFIX + prompt_text = prefix + prompt_text + return prompt_text + + +def prepare_transfoxl_input(args, _, tokenizer, prompt_text): + prefix = args.prefix if args.prefix else args.padding_text if args.padding_text else PREFIX + prompt_text = prefix + prompt_text + return prompt_text + + +PREPROCESSING_FUNCTIONS = { + "ctrl": prepare_ctrl_input, + "xlm": prepare_xlm_input, + "xlnet": prepare_xlnet_input, + "transfo-xl": prepare_transfoxl_input, +} + + +def adjust_length_to_model(length, max_sequence_length): + if length < 0 and max_sequence_length > 0: + length = max_sequence_length + elif 0 < max_sequence_length < length: + length = max_sequence_length # No generation bigger than model size + elif length < 0: + length = MAX_LENGTH # avoid infinite loop + return length + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument( + "--model_type", + default=None, + type=str, + required=True, + help="Model type selected in the list: " + ", ".join(MODEL_CLASSES.keys()), + ) + parser.add_argument( + "--model_name_or_path", + default=None, + type=str, + required=True, + help="Path to pre-trained model or shortcut name selected in the list: " + ", ".join(MODEL_CLASSES.keys()), + ) + + parser.add_argument("--prompt", type=str, default="") + parser.add_argument("--length", type=int, default=20) + parser.add_argument("--stop_token", type=str, default=None, help="Token at which text generation is stopped") + + parser.add_argument( + "--temperature", + type=float, + default=1.0, + help="temperature of 1.0 has no effect, lower tend toward greedy sampling", + ) + parser.add_argument( + "--repetition_penalty", type=float, default=1.0, help="primarily useful for CTRL model; in that case, use 1.2" + ) + parser.add_argument("--k", type=int, default=0) + parser.add_argument("--p", type=float, default=0.9) + + parser.add_argument("--prefix", type=str, default="", help="Text added prior to input.") + parser.add_argument("--padding_text", type=str, default="", help="Deprecated, the use of `--prefix` is preferred.") + parser.add_argument("--xlm_language", type=str, default="", help="Optional language when used with the XLM model.") + + parser.add_argument("--seed", type=int, default=42, help="random seed for initialization") + parser.add_argument("--no_cuda", action="store_true", help="Avoid using CUDA when available") + parser.add_argument("--num_return_sequences", type=int, default=1, help="The number of samples to generate.") + parser.add_argument( + "--fp16", + action="store_true", + help="Whether to use 16-bit (mixed) precision (through NVIDIA apex) instead of 32-bit", + ) + parser.add_argument("--load_adapter", type=str, default=None, help="Path to a trained adapter") + args = parser.parse_args() + + args.device = torch.device("cuda" if torch.cuda.is_available() and not args.no_cuda else "cpu") + args.n_gpu = 0 if args.no_cuda else torch.cuda.device_count() + + logger.warning(f"device: {args.device}, n_gpu: {args.n_gpu}, 16-bits training: {args.fp16}") + + set_seed(args) + + # Initialize the model and tokenizer + try: + args.model_type = args.model_type.lower() + model_class, tokenizer_class = MODEL_CLASSES[args.model_type] + except KeyError: + raise KeyError("the model {} you specified is not supported. You are welcome to add it and open a PR :)") + + tokenizer = tokenizer_class.from_pretrained(args.model_name_or_path) + model = model_class.from_pretrained(args.model_name_or_path) + + # Convert the model into an adapter model + adapters.init(model) + + model.to(args.device) + + # Setup adapters + if args.load_adapter: + model.load_adapter(args.load_adapter, load_as="generation") + model.set_active_adapters(["generation"]) + + if args.fp16: + model.half() + + args.length = adjust_length_to_model(args.length, max_sequence_length=model.config.max_position_embeddings) + logger.info(args) + + prompt_text = args.prompt if args.prompt else input("Model prompt >>> ") + + # Different models need different input formatting and/or extra arguments + requires_preprocessing = args.model_type in PREPROCESSING_FUNCTIONS.keys() + if requires_preprocessing: + prepare_input = PREPROCESSING_FUNCTIONS.get(args.model_type) + preprocessed_prompt_text = prepare_input(args, model, tokenizer, prompt_text) + + if model.__class__.__name__ in ["TransfoXLLMHeadModel"]: + tokenizer_kwargs = {"add_space_before_punct_symbol": True} + else: + tokenizer_kwargs = {} + + encoded_prompt = tokenizer.encode( + preprocessed_prompt_text, add_special_tokens=False, return_tensors="pt", **tokenizer_kwargs + ) + else: + prefix = args.prefix if args.prefix else args.padding_text + encoded_prompt = tokenizer.encode(prefix + prompt_text, add_special_tokens=False, return_tensors="pt") + encoded_prompt = encoded_prompt.to(args.device) + + if encoded_prompt.size()[-1] == 0: + input_ids = None + else: + input_ids = encoded_prompt + + output_sequences = model.generate( + input_ids=input_ids, + max_length=args.length + len(encoded_prompt[0]), + temperature=args.temperature, + top_k=args.k, + top_p=args.p, + repetition_penalty=args.repetition_penalty, + do_sample=True, + num_return_sequences=args.num_return_sequences, + ) + + # Remove the batch dimension when returning multiple sequences + if len(output_sequences.shape) > 2: + output_sequences.squeeze_() + + generated_sequences = [] + + for generated_sequence_idx, generated_sequence in enumerate(output_sequences): + print(f"=== GENERATED SEQUENCE {generated_sequence_idx + 1} ===") + generated_sequence = generated_sequence.tolist() + + # Decode text + text = tokenizer.decode(generated_sequence, clean_up_tokenization_spaces=True) + + # Remove all text after the stop token + text = text[: text.find(args.stop_token) if args.stop_token else None] + + # Add the prompt at the beginning of the sequence. Remove the excess text that was used for pre-processing + total_sequence = ( + prompt_text + text[len(tokenizer.decode(encoded_prompt[0], clean_up_tokenization_spaces=True)) :] + ) + + generated_sequences.append(total_sequence) + print(total_sequence) + + return generated_sequences + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/token-classification/README.md b/adapters/examples/pytorch/token-classification/README.md new file mode 100644 index 00000000..a951ab09 --- /dev/null +++ b/adapters/examples/pytorch/token-classification/README.md @@ -0,0 +1,68 @@ + + +# Token classification with Adapters +> **Note:** We have not adapted the following scripts of Hugging Face Transformers: +> - `run_ner_no_trainer.py` +> +> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. + +## PyTorch version + +Fine-tuning the library models for token classification task such as Named Entity Recognition (NER), Parts-of-speech +tagging (POS) or phrase extraction (CHUNKS). The main scrip `run_ner.py` leverages the 🤗 Datasets library and the Trainer API. You can easily +customize it to your needs if you need extra processing on your datasets. + +It will either run on a datasets hosted on our [hub](https://huggingface.co/datasets) or with your own text files for +training and validation, you might just need to add some tweaks in the data preprocessing. + +The following example fine-tunes BERT on CoNLL-2003: + +```bash +python run_ner.py \ + --model_name_or_path bert-base-uncased \ + --dataset_name conll2003 \ + --output_dir /tmp/test-ner \ + --do_train \ + --do_eval \ + --overwrite_output_dir \ + --train_adapter \ + --adapter_config seq_bn +``` + +or just can just run the bash script `run.sh`. + +To run on your own training and validation files, use the following command: + +```bash +python run_ner.py \ + --model_name_or_path bert-base-uncased \ + --train_file path_to_train_file \ + --validation_file path_to_validation_file \ + --output_dir /tmp/test-ner \ + --do_train \ + --do_eval \ + --overwrite_output_dir \ + --train_adapter \ + --adapter_config seq_bn +``` + +**Note:** This script only works with models that have a fast tokenizer (backed by the 🤗 Tokenizers library) as it +uses special features of those tokenizers. You can check if your favorite model has a fast tokenizer in +[this table](https://huggingface.co/transformers/index.html#supported-frameworks), if it doesn't you can still use the old version +of the script. + +> If your model classification head dimensions do not fit the number of labels in the dataset, you can specify `--ignore_mismatched_sizes` to adapt it. diff --git a/adapters/examples/pytorch/token-classification/requirements.txt b/adapters/examples/pytorch/token-classification/requirements.txt new file mode 100644 index 00000000..53740bf4 --- /dev/null +++ b/adapters/examples/pytorch/token-classification/requirements.txt @@ -0,0 +1,5 @@ +accelerate >= 0.12.0 +seqeval +datasets >= 1.8.0 +torch >= 1.3 +evaluate \ No newline at end of file diff --git a/adapters/examples/pytorch/token-classification/run.sh b/adapters/examples/pytorch/token-classification/run.sh new file mode 100644 index 00000000..e015125b --- /dev/null +++ b/adapters/examples/pytorch/token-classification/run.sh @@ -0,0 +1,23 @@ +# Copyright 2020 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +python3 run_ner.py \ + --model_name_or_path bert-base-uncased \ + --dataset_name conll2003 \ + --output_dir /tmp/test-ner \ + --do_train \ + --do_eval \ + --overwrite_output_dir \ + --train_adapter \ + --adapter_config seq_bn diff --git a/adapters/examples/pytorch/token-classification/run_ner.py b/adapters/examples/pytorch/token-classification/run_ner.py new file mode 100644 index 00000000..83f0de61 --- /dev/null +++ b/adapters/examples/pytorch/token-classification/run_ner.py @@ -0,0 +1,636 @@ +#!/usr/bin/env python +# coding=utf-8 +# Copyright 2020 The HuggingFace Team All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Fine-tuning the library models for token classification. +""" +# You can also adapt this script on your own token classification task and datasets. Pointers for this are left as +# comments. + +import logging +import os +import sys +from dataclasses import dataclass, field +from typing import Optional + +import datasets +import numpy as np +from datasets import ClassLabel, load_dataset + +import adapters +import evaluate +import transformers +from adapters import AdapterArguments, AdapterTrainer, setup_adapter_training +from transformers import ( + AutoConfig, + AutoModelForTokenClassification, + AutoTokenizer, + DataCollatorForTokenClassification, + HfArgumentParser, + PretrainedConfig, + PreTrainedTokenizerFast, + Trainer, + TrainingArguments, + set_seed, +) +from transformers.trainer_utils import get_last_checkpoint +from transformers.utils import check_min_version +from transformers.utils.versions import require_version + + +# Will error if the minimal version of Transformers is not installed. Remove at your own risks. +check_min_version("4.26.0") + +require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/token-classification/requirements.txt") + +logger = logging.getLogger(__name__) + + +@dataclass +class ModelArguments: + """ + Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. + """ + + model_name_or_path: str = field( + metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} + ) + config_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} + ) + tokenizer_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} + ) + cache_dir: Optional[str] = field( + default=None, + metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"}, + ) + model_revision: str = field( + default="main", + metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, + ) + use_auth_token: bool = field( + default=False, + metadata={ + "help": ( + "Will use the token generated when running `huggingface-cli login` (necessary to use this script " + "with private models)." + ) + }, + ) + ignore_mismatched_sizes: bool = field( + default=False, + metadata={"help": "Will enable to load a pretrained model whose head dimensions are different."}, + ) + + +@dataclass +class DataTrainingArguments: + """ + Arguments pertaining to what data we are going to input our model for training and eval. + """ + + task_name: Optional[str] = field(default="ner", metadata={"help": "The name of the task (ner, pos...)."}) + dataset_name: Optional[str] = field( + default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} + ) + dataset_config_name: Optional[str] = field( + default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} + ) + train_file: Optional[str] = field( + default=None, metadata={"help": "The input training data file (a csv or JSON file)."} + ) + validation_file: Optional[str] = field( + default=None, + metadata={"help": "An optional input evaluation data file to evaluate on (a csv or JSON file)."}, + ) + test_file: Optional[str] = field( + default=None, + metadata={"help": "An optional input test data file to predict on (a csv or JSON file)."}, + ) + text_column_name: Optional[str] = field( + default=None, metadata={"help": "The column name of text to input in the file (a csv or JSON file)."} + ) + label_column_name: Optional[str] = field( + default=None, metadata={"help": "The column name of label to input in the file (a csv or JSON file)."} + ) + overwrite_cache: bool = field( + default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} + ) + preprocessing_num_workers: Optional[int] = field( + default=None, + metadata={"help": "The number of processes to use for the preprocessing."}, + ) + max_seq_length: int = field( + default=None, + metadata={ + "help": ( + "The maximum total input sequence length after tokenization. If set, sequences longer " + "than this will be truncated, sequences shorter will be padded." + ) + }, + ) + pad_to_max_length: bool = field( + default=False, + metadata={ + "help": ( + "Whether to pad all samples to model maximum sentence length. " + "If False, will pad the samples dynamically when batching to the maximum length in the batch. More " + "efficient on GPU but very bad for TPU." + ) + }, + ) + max_train_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of training examples to this " + "value if set." + ) + }, + ) + max_eval_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of evaluation examples to this " + "value if set." + ) + }, + ) + max_predict_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of prediction examples to this " + "value if set." + ) + }, + ) + label_all_tokens: bool = field( + default=False, + metadata={ + "help": ( + "Whether to put the label for one word on all tokens of generated by that word or just on the " + "one (in which case the other tokens will have a padding index)." + ) + }, + ) + return_entity_level_metrics: bool = field( + default=False, + metadata={"help": "Whether to return all the entity levels during evaluation or just the overall ones."}, + ) + + def __post_init__(self): + if self.dataset_name is None and self.train_file is None and self.validation_file is None: + raise ValueError("Need either a dataset name or a training/validation file.") + else: + if self.train_file is not None: + extension = self.train_file.split(".")[-1] + assert extension in ["csv", "json"], "`train_file` should be a csv or a json file." + if self.validation_file is not None: + extension = self.validation_file.split(".")[-1] + assert extension in ["csv", "json"], "`validation_file` should be a csv or a json file." + self.task_name = self.task_name.lower() + + +def main(): + # See all possible arguments in src/transformers/training_args.py + # or by passing the --help flag to this script. + # We now keep distinct sets of args, for a cleaner separation of concerns. + + parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, training_args, adapter_args = parser.parse_json_file( + json_file=os.path.abspath(sys.argv[1]) + ) + else: + model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() + + # Setup logging + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + handlers=[logging.StreamHandler(sys.stdout)], + ) + + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + datasets.utils.logging.set_verbosity(log_level) + transformers.utils.logging.set_verbosity(log_level) + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + + # Log on each process the small summary: + logger.warning( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" + ) + logger.info(f"Training/evaluation parameters {training_args}") + + # Detecting last checkpoint. + last_checkpoint = None + if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: + last_checkpoint = get_last_checkpoint(training_args.output_dir) + if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: + raise ValueError( + f"Output directory ({training_args.output_dir}) already exists and is not empty. " + "Use --overwrite_output_dir to overcome." + ) + elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: + logger.info( + f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " + "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." + ) + + # Set seed before initializing model. + set_seed(training_args.seed) + + # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) + # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ + # (the dataset will be downloaded automatically from the datasets Hub). + # + # For CSV/JSON files, this script will use the column called 'text' or the first column if no column called + # 'text' is found. You can easily tweak this behavior (see below). + # + # In distributed training, the load_dataset function guarantee that only one local process can concurrently + # download the dataset. + if data_args.dataset_name is not None: + # Downloading and loading a dataset from the hub. + raw_datasets = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + else: + data_files = {} + if data_args.train_file is not None: + data_files["train"] = data_args.train_file + if data_args.validation_file is not None: + data_files["validation"] = data_args.validation_file + if data_args.test_file is not None: + data_files["test"] = data_args.test_file + extension = data_args.train_file.split(".")[-1] + raw_datasets = load_dataset(extension, data_files=data_files, cache_dir=model_args.cache_dir) + # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at + # https://huggingface.co/docs/datasets/loading_datasets.html. + + if training_args.do_train: + column_names = raw_datasets["train"].column_names + features = raw_datasets["train"].features + else: + column_names = raw_datasets["validation"].column_names + features = raw_datasets["validation"].features + + if data_args.text_column_name is not None: + text_column_name = data_args.text_column_name + elif "tokens" in column_names: + text_column_name = "tokens" + else: + text_column_name = column_names[0] + + if data_args.label_column_name is not None: + label_column_name = data_args.label_column_name + elif f"{data_args.task_name}_tags" in column_names: + label_column_name = f"{data_args.task_name}_tags" + else: + label_column_name = column_names[1] + + # In the event the labels are not a `Sequence[ClassLabel]`, we will need to go through the dataset to get the + # unique labels. + def get_label_list(labels): + unique_labels = set() + for label in labels: + unique_labels = unique_labels | set(label) + label_list = list(unique_labels) + label_list.sort() + return label_list + + # If the labels are of type ClassLabel, they are already integers and we have the map stored somewhere. + # Otherwise, we have to get the list of labels manually. + labels_are_int = isinstance(features[label_column_name].feature, ClassLabel) + if labels_are_int: + label_list = features[label_column_name].feature.names + label_to_id = {i: i for i in range(len(label_list))} + else: + label_list = get_label_list(raw_datasets["train"][label_column_name]) + label_to_id = {l: i for i, l in enumerate(label_list)} + + num_labels = len(label_list) + + # Load pretrained model and tokenizer + # + # Distributed training: + # The .from_pretrained methods guarantee that only one local process can concurrently + # download model & vocab. + config = AutoConfig.from_pretrained( + model_args.config_name if model_args.config_name else model_args.model_name_or_path, + num_labels=num_labels, + finetuning_task=data_args.task_name, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + + tokenizer_name_or_path = model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path + if config.model_type in {"bloom", "gpt2", "roberta"}: + tokenizer = AutoTokenizer.from_pretrained( + tokenizer_name_or_path, + cache_dir=model_args.cache_dir, + use_fast=True, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + add_prefix_space=True, + ) + else: + tokenizer = AutoTokenizer.from_pretrained( + tokenizer_name_or_path, + cache_dir=model_args.cache_dir, + use_fast=True, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + + model = AutoModelForTokenClassification.from_pretrained( + model_args.model_name_or_path, + from_tf=bool(".ckpt" in model_args.model_name_or_path), + config=config, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ignore_mismatched_sizes=model_args.ignore_mismatched_sizes, + ) + + # Convert the model into an adapter model + adapters.init(model) + + # Tokenizer check: this script requires a fast tokenizer. + if not isinstance(tokenizer, PreTrainedTokenizerFast): + raise ValueError( + "This example script only works for models that have a fast tokenizer. Checkout the big table of models at" + " https://huggingface.co/transformers/index.html#supported-frameworks to find the model types that meet" + " this requirement" + ) + + # Model has labels -> use them. + if model.config.label2id != PretrainedConfig(num_labels=num_labels).label2id: + if list(sorted(model.config.label2id.keys())) == list(sorted(label_list)): + # Reorganize `label_list` to match the ordering of the model. + if labels_are_int: + label_to_id = {i: int(model.config.label2id[l]) for i, l in enumerate(label_list)} + label_list = [model.config.id2label[i] for i in range(num_labels)] + else: + label_list = [model.config.id2label[i] for i in range(num_labels)] + label_to_id = {l: i for i, l in enumerate(label_list)} + else: + logger.warning( + "Your model seems to have been trained with labels, but they don't match the dataset: ", + f"model labels: {list(sorted(model.config.label2id.keys()))}, dataset labels:" + f" {list(sorted(label_list))}.\nIgnoring the model labels as a result.", + ) + + # Set the correspondences label/ID inside the model config + model.config.label2id = {l: i for i, l in enumerate(label_list)} + model.config.id2label = {i: l for i, l in enumerate(label_list)} + + # Map that sends B-Xxx label to its I-Xxx counterpart + b_to_i_label = [] + for idx, label in enumerate(label_list): + if label.startswith("B-") and label.replace("B-", "I-") in label_list: + b_to_i_label.append(label_list.index(label.replace("B-", "I-"))) + else: + b_to_i_label.append(idx) + + # Preprocessing the dataset + # Padding strategy + padding = "max_length" if data_args.pad_to_max_length else False + + # Tokenize all texts and align the labels with them. + def tokenize_and_align_labels(examples): + tokenized_inputs = tokenizer( + examples[text_column_name], + padding=padding, + truncation=True, + max_length=data_args.max_seq_length, + # We use this argument because the texts in our dataset are lists of words (with a label for each word). + is_split_into_words=True, + ) + labels = [] + for i, label in enumerate(examples[label_column_name]): + word_ids = tokenized_inputs.word_ids(batch_index=i) + previous_word_idx = None + label_ids = [] + for word_idx in word_ids: + # Special tokens have a word id that is None. We set the label to -100 so they are automatically + # ignored in the loss function. + if word_idx is None: + label_ids.append(-100) + # We set the label for the first token of each word. + elif word_idx != previous_word_idx: + label_ids.append(label_to_id[label[word_idx]]) + # For the other tokens in a word, we set the label to either the current label or -100, depending on + # the label_all_tokens flag. + else: + if data_args.label_all_tokens: + label_ids.append(b_to_i_label[label_to_id[label[word_idx]]]) + else: + label_ids.append(-100) + previous_word_idx = word_idx + + labels.append(label_ids) + tokenized_inputs["labels"] = labels + return tokenized_inputs + + if training_args.do_train: + if "train" not in raw_datasets: + raise ValueError("--do_train requires a train dataset") + train_dataset = raw_datasets["train"] + if data_args.max_train_samples is not None: + max_train_samples = min(len(train_dataset), data_args.max_train_samples) + train_dataset = train_dataset.select(range(max_train_samples)) + with training_args.main_process_first(desc="train dataset map pre-processing"): + train_dataset = train_dataset.map( + tokenize_and_align_labels, + batched=True, + num_proc=data_args.preprocessing_num_workers, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on train dataset", + ) + + if training_args.do_eval: + if "validation" not in raw_datasets: + raise ValueError("--do_eval requires a validation dataset") + eval_dataset = raw_datasets["validation"] + if data_args.max_eval_samples is not None: + max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) + eval_dataset = eval_dataset.select(range(max_eval_samples)) + with training_args.main_process_first(desc="validation dataset map pre-processing"): + eval_dataset = eval_dataset.map( + tokenize_and_align_labels, + batched=True, + num_proc=data_args.preprocessing_num_workers, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on validation dataset", + ) + + if training_args.do_predict: + if "test" not in raw_datasets: + raise ValueError("--do_predict requires a test dataset") + predict_dataset = raw_datasets["test"] + if data_args.max_predict_samples is not None: + max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) + predict_dataset = predict_dataset.select(range(max_predict_samples)) + with training_args.main_process_first(desc="prediction dataset map pre-processing"): + predict_dataset = predict_dataset.map( + tokenize_and_align_labels, + batched=True, + num_proc=data_args.preprocessing_num_workers, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on prediction dataset", + ) + + # Data collator + data_collator = DataCollatorForTokenClassification(tokenizer, pad_to_multiple_of=8 if training_args.fp16 else None) + + # Metrics + metric = evaluate.load("seqeval") + + def compute_metrics(p): + predictions, labels = p + predictions = np.argmax(predictions, axis=2) + + # Remove ignored index (special tokens) + true_predictions = [ + [label_list[p] for (p, l) in zip(prediction, label) if l != -100] + for prediction, label in zip(predictions, labels) + ] + true_labels = [ + [label_list[l] for (p, l) in zip(prediction, label) if l != -100] + for prediction, label in zip(predictions, labels) + ] + + results = metric.compute(predictions=true_predictions, references=true_labels) + if data_args.return_entity_level_metrics: + # Unpack nested dictionaries + final_results = {} + for key, value in results.items(): + if isinstance(value, dict): + for n, v in value.items(): + final_results[f"{key}_{n}"] = v + else: + final_results[key] = value + return final_results + else: + return { + "precision": results["overall_precision"], + "recall": results["overall_recall"], + "f1": results["overall_f1"], + "accuracy": results["overall_accuracy"], + } + + # Setup adapters + setup_adapter_training(model, adapter_args, data_args.dataset_name or "ner") + # Initialize our Trainer + trainer_class = AdapterTrainer if adapter_args.train_adapter else Trainer + trainer = trainer_class( + model=model, + args=training_args, + train_dataset=train_dataset if training_args.do_train else None, + eval_dataset=eval_dataset if training_args.do_eval else None, + tokenizer=tokenizer, + data_collator=data_collator, + compute_metrics=compute_metrics, + ) + + # Training + if training_args.do_train: + checkpoint = None + if training_args.resume_from_checkpoint is not None: + checkpoint = training_args.resume_from_checkpoint + elif last_checkpoint is not None: + checkpoint = last_checkpoint + train_result = trainer.train(resume_from_checkpoint=checkpoint) + metrics = train_result.metrics + trainer.save_model() # Saves the tokenizer too for easy upload + + max_train_samples = ( + data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) + ) + metrics["train_samples"] = min(max_train_samples, len(train_dataset)) + + trainer.log_metrics("train", metrics) + trainer.save_metrics("train", metrics) + trainer.save_state() + + # Evaluation + if training_args.do_eval: + logger.info("*** Evaluate ***") + + metrics = trainer.evaluate() + + max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) + metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) + + trainer.log_metrics("eval", metrics) + trainer.save_metrics("eval", metrics) + + # Predict + if training_args.do_predict: + logger.info("*** Predict ***") + + predictions, labels, metrics = trainer.predict(predict_dataset, metric_key_prefix="predict") + predictions = np.argmax(predictions, axis=2) + + # Remove ignored index (special tokens) + true_predictions = [ + [label_list[p] for (p, l) in zip(prediction, label) if l != -100] + for prediction, label in zip(predictions, labels) + ] + + trainer.log_metrics("predict", metrics) + trainer.save_metrics("predict", metrics) + + # Save predictions + output_predictions_file = os.path.join(training_args.output_dir, "predictions.txt") + if trainer.is_world_process_zero(): + with open(output_predictions_file, "w") as writer: + for prediction in true_predictions: + writer.write(" ".join(prediction) + "\n") + + kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "token-classification"} + if data_args.dataset_name is not None: + kwargs["dataset_tags"] = data_args.dataset_name + if data_args.dataset_config_name is not None: + kwargs["dataset_args"] = data_args.dataset_config_name + kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" + else: + kwargs["dataset"] = data_args.dataset_name + + if training_args.push_to_hub: + trainer.push_to_hub(**kwargs) + else: + trainer.create_model_card(**kwargs) + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/translation/README.md b/adapters/examples/pytorch/translation/README.md new file mode 100644 index 00000000..83c70dbc --- /dev/null +++ b/adapters/examples/pytorch/translation/README.md @@ -0,0 +1,167 @@ + + +## Translation with Adapters +> **Note:** We have not adapted the following scripts of Hugging Face Transformers: +> - `run_translation_no_trainer.py` +> +> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. + +This directory contains examples for finetuning and evaluating transformers on translation tasks. +Please tag @patil-suraj with any issues/unexpected behaviors, or send a PR! +For deprecated `bertabs` instructions, see [`bertabs/README.md`](https://github.com/huggingface/transformers/blob/main/examples/research_projects/bertabs/README.md). +For the old `finetune_trainer.py` and related utils, see [`examples/legacy/seq2seq`](https://github.com/huggingface/transformers/blob/main/examples/legacy/seq2seq). + +### Supported Architectures + +- `BartForConditionalGeneration` +- `FSMTForConditionalGeneration` (translation only) +- `MBartForConditionalGeneration` +- `MarianMTModel` +- `PegasusForConditionalGeneration` +- `T5ForConditionalGeneration` +- `MT5ForConditionalGeneration` + +Of course, if you want to train your model using adapters, only architectures supported by Adapters will work (https://docs.adapterhub.ml/model_overview.html). + +`run_translation.py` is a lightweight examples of how to download and preprocess a dataset from the [🤗 Datasets](https://github.com/huggingface/datasets) library or use your own files (jsonlines or csv), then fine-tune one of the architectures above on it. + +For custom datasets in `jsonlines` format please see: https://huggingface.co/docs/datasets/loading_datasets.html#json-files +and you also will find examples of these below. + + +## With Trainer + +Here is an example of a translation fine-tuning with a MarianMT model **without adding adapters**: + +```bash +python run_translation.py \ + --model_name_or_path Helsinki-NLP/opus-mt-en-ro \ + --do_train \ + --do_eval \ + --source_lang en \ + --target_lang ro \ + --dataset_name wmt16 \ + --dataset_config_name ro-en \ + --output_dir /tmp/tst-translation \ + --per_device_train_batch_size=4 \ + --per_device_eval_batch_size=4 \ + --overwrite_output_dir \ + --predict_with_generate +``` + +MBart and some T5 models require special handling. + +T5 models `t5-small`, `t5-base`, `t5-large`, `t5-3b` and `t5-11b` must use an additional argument: `--source_prefix "translate {source_lang} to {target_lang}"`. For example **with adding adapters**: + +```bash +python run_translation.py \ + --model_name_or_path t5-small \ + --do_train \ + --do_eval \ + --source_lang en \ + --target_lang ro \ + --source_prefix "translate English to Romanian: " \ + --dataset_name wmt16 \ + --dataset_config_name ro-en \ + --output_dir /tmp/tst-translation \ + --per_device_train_batch_size=4 \ + --per_device_eval_batch_size=4 \ + --overwrite_output_dir \ + --predict_with_generate \ + --overwrite_output_dir \ + --train_adapter \ + --adapter_config seq_bn +``` + +If you get a terrible BLEU score, make sure that you didn't forget to use the `--source_prefix` argument. + +For the aforementioned group of T5 models it's important to remember that if you switch to a different language pair, make sure to adjust the source and target values in all 3 language-specific command line argument: `--source_lang`, `--target_lang` and `--source_prefix`. + +MBart models require a different format for `--source_lang` and `--target_lang` values, e.g. instead of `en` it expects `en_XX`, for `ro` it expects `ro_RO`. The full MBart specification for language codes can be found [here](https://huggingface.co/facebook/mbart-large-cc25). For example: + +```bash +python examples/pytorch/translation/run_translation.py \ + --model_name_or_path facebook/mbart-large-en-ro \ + --do_train \ + --do_eval \ + --dataset_name wmt16 \ + --dataset_config_name ro-en \ + --source_lang en_XX \ + --target_lang ro_RO \ + --output_dir /tmp/tst-translation \ + --per_device_train_batch_size=4 \ + --per_device_eval_batch_size=4 \ + --overwrite_output_dir \ + --predict_with_generate \ + --overwrite_output_dir \ + --train_adapter \ + --adapter_config seq_bn + ``` + +And here is how you would use the translation finetuning on your own files, after adjusting the +values for the arguments `--train_file`, `--validation_file` to match your setup: + +```bash +python examples/pytorch/translation/run_translation.py \ + --model_name_or_path t5-small \ + --do_train \ + --do_eval \ + --source_lang en \ + --target_lang ro \ + --source_prefix "translate English to Romanian: " \ + --dataset_name wmt16 \ + --dataset_config_name ro-en \ + --train_file path_to_jsonlines_file \ + --validation_file path_to_jsonlines_file \ + --output_dir /tmp/tst-translation \ + --per_device_train_batch_size=4 \ + --per_device_eval_batch_size=4 \ + --overwrite_output_dir \ + --predict_with_generate \ + --overwrite_output_dir \ + --train_adapter \ + --adapter_config seq_bn +``` + +The task of translation supports only custom JSONLINES files, with each line being a dictionary with a key `"translation"` and its value another dictionary whose keys is the language pair. For example: + +```json +{ "translation": { "en": "Others have dismissed him as a joke.", "ro": "Alții l-au numit o glumă." } } +{ "translation": { "en": "And some are holding out for an implosion.", "ro": "Iar alții așteaptă implozia." } } +``` +Here the languages are Romanian (`ro`) and English (`en`). + +If you want to use a pre-processed dataset that leads to high BLEU scores, but for the `en-de` language pair, you can use `--dataset_name stas/wmt14-en-de-pre-processed`, as following: + +```bash +python examples/pytorch/translation/run_translation.py \ + --model_name_or_path t5-small \ + --do_train \ + --do_eval \ + --source_lang en \ + --target_lang de \ + --source_prefix "translate English to German: " \ + --dataset_name stas/wmt14-en-de-pre-processed \ + --output_dir /tmp/tst-translation \ + --per_device_train_batch_size=4 \ + --per_device_eval_batch_size=4 \ + --overwrite_output_dir \ + --predict_with_generate \ + --overwrite_output_dir \ + --train_adapter \ + --adapter_config seq_bn + ``` diff --git a/adapters/examples/pytorch/translation/requirements.txt b/adapters/examples/pytorch/translation/requirements.txt new file mode 100644 index 00000000..9c925743 --- /dev/null +++ b/adapters/examples/pytorch/translation/requirements.txt @@ -0,0 +1,8 @@ +accelerate >= 0.12.0 +datasets >= 1.8.0 +sentencepiece != 0.1.92 +protobuf +sacrebleu >= 1.4.12 +py7zr +torch >= 1.3 +evaluate \ No newline at end of file diff --git a/adapters/examples/pytorch/translation/run_translation.py b/adapters/examples/pytorch/translation/run_translation.py new file mode 100644 index 00000000..77a288a9 --- /dev/null +++ b/adapters/examples/pytorch/translation/run_translation.py @@ -0,0 +1,684 @@ +#!/usr/bin/env python +# coding=utf-8 +# Copyright The HuggingFace Team and The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Fine-tuning the library models for sequence to sequence. +""" +# You can also adapt this script on your own sequence to sequence task. Pointers for this are left as comments. + +import logging +import os +import sys +from dataclasses import dataclass, field +from typing import Optional + +import datasets +import numpy as np +from datasets import load_dataset + +import adapters +import evaluate +import transformers +from adapters import AdapterArguments, Seq2SeqAdapterTrainer, setup_adapter_training +from transformers import ( + AutoConfig, + AutoModelForSeq2SeqLM, + AutoTokenizer, + DataCollatorForSeq2Seq, + EarlyStoppingCallback, + HfArgumentParser, + M2M100Tokenizer, + MBart50Tokenizer, + MBart50TokenizerFast, + MBartTokenizer, + MBartTokenizerFast, + Seq2SeqTrainer, + Seq2SeqTrainingArguments, + default_data_collator, + set_seed, +) +from transformers.trainer_utils import get_last_checkpoint +from transformers.utils import check_min_version +from transformers.utils.versions import require_version + + +# Will error if the minimal version of Transformers is not installed. Remove at your own risks. +check_min_version("4.26.0") + +require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/translation/requirements.txt") + +logger = logging.getLogger(__name__) + +# A list of all multilingual tokenizer which require src_lang and tgt_lang attributes. +MULTILINGUAL_TOKENIZERS = [MBartTokenizer, MBartTokenizerFast, MBart50Tokenizer, MBart50TokenizerFast, M2M100Tokenizer] + + +@dataclass +class ModelArguments: + """ + Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. + """ + + model_name_or_path: str = field( + metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} + ) + config_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} + ) + tokenizer_name: Optional[str] = field( + default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} + ) + cache_dir: Optional[str] = field( + default=None, + metadata={"help": "Where to store the pretrained models downloaded from huggingface.co"}, + ) + use_fast_tokenizer: bool = field( + default=True, + metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, + ) + model_revision: str = field( + default="main", + metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, + ) + use_auth_token: bool = field( + default=False, + metadata={ + "help": ( + "Will use the token generated when running `huggingface-cli login` (necessary to use this script " + "with private models)." + ) + }, + ) + + +@dataclass +class DataTrainingArguments: + """ + Arguments pertaining to what data we are going to input our model for training and eval. + """ + + source_lang: str = field(default=None, metadata={"help": "Source language id for translation."}) + target_lang: str = field(default=None, metadata={"help": "Target language id for translation."}) + + dataset_name: Optional[str] = field( + default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} + ) + dataset_config_name: Optional[str] = field( + default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} + ) + train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a jsonlines)."}) + validation_file: Optional[str] = field( + default=None, + metadata={ + "help": "An optional input evaluation data file to evaluate the metrics (sacrebleu) on a jsonlines file." + }, + ) + test_file: Optional[str] = field( + default=None, + metadata={"help": "An optional input test data file to evaluate the metrics (sacrebleu) on a jsonlines file."}, + ) + overwrite_cache: bool = field( + default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} + ) + preprocessing_num_workers: Optional[int] = field( + default=None, + metadata={"help": "The number of processes to use for the preprocessing."}, + ) + max_source_length: Optional[int] = field( + default=1024, + metadata={ + "help": ( + "The maximum total input sequence length after tokenization. Sequences longer " + "than this will be truncated, sequences shorter will be padded." + ) + }, + ) + max_target_length: Optional[int] = field( + default=128, + metadata={ + "help": ( + "The maximum total sequence length for target text after tokenization. Sequences longer " + "than this will be truncated, sequences shorter will be padded." + ) + }, + ) + val_max_target_length: Optional[int] = field( + default=None, + metadata={ + "help": ( + "The maximum total sequence length for validation target text after tokenization. Sequences longer " + "than this will be truncated, sequences shorter will be padded. Will default to `max_target_length`." + "This argument is also used to override the ``max_length`` param of ``model.generate``, which is used " + "during ``evaluate`` and ``predict``." + ) + }, + ) + pad_to_max_length: bool = field( + default=False, + metadata={ + "help": ( + "Whether to pad all samples to model maximum sentence length. " + "If False, will pad the samples dynamically when batching to the maximum length in the batch. More " + "efficient on GPU but very bad for TPU." + ) + }, + ) + max_train_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of training examples to this " + "value if set." + ) + }, + ) + max_eval_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of evaluation examples to this " + "value if set." + ) + }, + ) + max_predict_samples: Optional[int] = field( + default=None, + metadata={ + "help": ( + "For debugging purposes or quicker training, truncate the number of prediction examples to this " + "value if set." + ) + }, + ) + num_beams: Optional[int] = field( + default=None, + metadata={ + "help": ( + "Number of beams to use for evaluation. This argument will be passed to ``model.generate``, " + "which is used during ``evaluate`` and ``predict``." + ) + }, + ) + ignore_pad_token_for_loss: bool = field( + default=True, + metadata={ + "help": "Whether to ignore the tokens corresponding to padded labels in the loss computation or not." + }, + ) + source_prefix: Optional[str] = field( + default=None, metadata={"help": "A prefix to add before every source text (useful for T5 models)."} + ) + forced_bos_token: Optional[str] = field( + default=None, + metadata={ + "help": ( + "The token to force as the first generated token after the :obj:`decoder_start_token_id`.Useful for" + " multilingual models like :doc:`mBART <../model_doc/mbart>` where the first generated token needs to" + " be the target language token.(Usually it is the target language token)" + ) + }, + ) + patience: Optional[int] = field( + default=None, + metadata={ + "help": ( + "Stop training when the metric specified for `metric_for_best_model` worsend for `patience` number of" + " evaluation calls." + ) + }, + ) + + def __post_init__(self): + if self.dataset_name is None and self.train_file is None and self.validation_file is None: + raise ValueError("Need either a dataset name or a training/validation file.") + elif self.source_lang is None or self.target_lang is None: + raise ValueError("Need to specify the source language and the target language.") + + # accepting both json and jsonl file extensions, as + # many jsonlines files actually have a .json extension + valid_extensions = ["json", "jsonl"] + + if self.train_file is not None: + extension = self.train_file.split(".")[-1] + assert extension in valid_extensions, "`train_file` should be a jsonlines file." + if self.validation_file is not None: + extension = self.validation_file.split(".")[-1] + assert extension in valid_extensions, "`validation_file` should be a jsonlines file." + if self.val_max_target_length is None: + self.val_max_target_length = self.max_target_length + + +def main(): + # See all possible arguments in src/transformers/training_args.py + # or by passing the --help flag to this script. + # We now keep distinct sets of args, for a cleaner separation of concerns. + + parser = HfArgumentParser((ModelArguments, DataTrainingArguments, Seq2SeqTrainingArguments, AdapterArguments)) + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, training_args, adapter_args = parser.parse_json_file( + json_file=os.path.abspath(sys.argv[1]) + ) + else: + model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() + + # Setup logging + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + handlers=[logging.StreamHandler(sys.stdout)], + ) + + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + datasets.utils.logging.set_verbosity(log_level) + transformers.utils.logging.set_verbosity(log_level) + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + + # Log on each process the small summary: + logger.warning( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" + ) + logger.info(f"Training/evaluation parameters {training_args}") + + if data_args.source_prefix is None and model_args.model_name_or_path in [ + "t5-small", + "t5-base", + "t5-large", + "t5-3b", + "t5-11b", + ]: + logger.warning( + "You're running a t5 model but didn't provide a source prefix, which is expected, e.g. with " + "`--source_prefix 'translate English to German: ' `" + ) + + # Detecting last checkpoint. + last_checkpoint = None + if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: + last_checkpoint = get_last_checkpoint(training_args.output_dir) + if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: + raise ValueError( + f"Output directory ({training_args.output_dir}) already exists and is not empty. " + "Use --overwrite_output_dir to overcome." + ) + elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: + logger.info( + f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " + "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." + ) + + # Set seed before initializing model. + set_seed(training_args.seed) + + # Get the datasets: you can either provide your own JSON training and evaluation files (see below) + # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ + # (the dataset will be downloaded automatically from the datasets Hub). + # + # For translation, only JSON files are supported, with one field named "translation" containing two keys for the + # source and target languages (unless you adapt what follows). + # + # In distributed training, the load_dataset function guarantee that only one local process can concurrently + # download the dataset. + if data_args.dataset_name is not None: + # Downloading and loading a dataset from the hub. + raw_datasets = load_dataset( + data_args.dataset_name, + data_args.dataset_config_name, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + else: + data_files = {} + if data_args.train_file is not None: + data_files["train"] = data_args.train_file + extension = data_args.train_file.split(".")[-1] + if data_args.validation_file is not None: + data_files["validation"] = data_args.validation_file + extension = data_args.validation_file.split(".")[-1] + if data_args.test_file is not None: + data_files["test"] = data_args.test_file + extension = data_args.test_file.split(".")[-1] + raw_datasets = load_dataset( + extension, + data_files=data_files, + cache_dir=model_args.cache_dir, + use_auth_token=True if model_args.use_auth_token else None, + ) + # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at + # https://huggingface.co/docs/datasets/loading_datasets.html. + + # Load pretrained model and tokenizer + # + # Distributed training: + # The .from_pretrained methods guarantee that only one local process can concurrently + # download model & vocab. + config = AutoConfig.from_pretrained( + model_args.config_name if model_args.config_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + tokenizer = AutoTokenizer.from_pretrained( + model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, + cache_dir=model_args.cache_dir, + use_fast=model_args.use_fast_tokenizer, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + model = AutoModelForSeq2SeqLM.from_pretrained( + model_args.model_name_or_path, + from_tf=bool(".ckpt" in model_args.model_name_or_path), + config=config, + cache_dir=model_args.cache_dir, + revision=model_args.model_revision, + use_auth_token=True if model_args.use_auth_token else None, + ) + # Convert the model into an adapter model + adapters.init(model) + + # We resize the embeddings only when necessary to avoid index errors. If you are creating a model from scratch + # on a small vocab and want a smaller embedding size, remove this test. + embedding_size = model.get_input_embeddings().weight.shape[0] + if len(tokenizer) > embedding_size: + model.resize_token_embeddings(len(tokenizer)) + + # Set decoder_start_token_id + if model.config.decoder_start_token_id is None and isinstance(tokenizer, (MBartTokenizer, MBartTokenizerFast)): + if isinstance(tokenizer, MBartTokenizer): + model.config.decoder_start_token_id = tokenizer.lang_code_to_id[data_args.target_lang] + else: + model.config.decoder_start_token_id = tokenizer.convert_tokens_to_ids(data_args.target_lang) + + if model.config.decoder_start_token_id is None: + raise ValueError("Make sure that `config.decoder_start_token_id` is correctly defined") + + prefix = data_args.source_prefix if data_args.source_prefix is not None else "" + + # Preprocessing the datasets. + # We need to tokenize inputs and targets. + if training_args.do_train: + column_names = raw_datasets["train"].column_names + elif training_args.do_eval: + column_names = raw_datasets["validation"].column_names + elif training_args.do_predict: + column_names = raw_datasets["test"].column_names + else: + logger.info("There is nothing to do. Please pass `do_train`, `do_eval` and/or `do_predict`.") + return + + # For translation we set the codes of our source and target languages (only useful for mBART, the others will + # ignore those attributes). + if isinstance(tokenizer, tuple(MULTILINGUAL_TOKENIZERS)): + assert data_args.target_lang is not None and data_args.source_lang is not None, ( + f"{tokenizer.__class__.__name__} is a multilingual tokenizer which requires --source_lang and " + "--target_lang arguments." + ) + + tokenizer.src_lang = data_args.source_lang + tokenizer.tgt_lang = data_args.target_lang + + # For multilingual translation models like mBART-50 and M2M100 we need to force the target language token + # as the first generated token. We ask the user to explicitly provide this as --forced_bos_token argument. + forced_bos_token_id = ( + tokenizer.lang_code_to_id[data_args.forced_bos_token] if data_args.forced_bos_token is not None else None + ) + model.config.forced_bos_token_id = forced_bos_token_id + + # Get the language codes for input/target. + source_lang = data_args.source_lang.split("_")[0] + target_lang = data_args.target_lang.split("_")[0] + + # Temporarily set max_target_length for training. + max_target_length = data_args.max_target_length + padding = "max_length" if data_args.pad_to_max_length else False + + if training_args.label_smoothing_factor > 0 and not hasattr(model, "prepare_decoder_input_ids_from_labels"): + logger.warning( + "label_smoothing is enabled but the `prepare_decoder_input_ids_from_labels` method is not defined for" + f"`{model.__class__.__name__}`. This will lead to loss being calculated twice and will take up more memory" + ) + + def preprocess_function(examples): + inputs = [ex[source_lang] for ex in examples["translation"]] + targets = [ex[target_lang] for ex in examples["translation"]] + inputs = [prefix + inp for inp in inputs] + model_inputs = tokenizer(inputs, max_length=data_args.max_source_length, padding=padding, truncation=True) + + # Tokenize targets with the `text_target` keyword argument + labels = tokenizer(text_target=targets, max_length=max_target_length, padding=padding, truncation=True) + + # If we are padding here, replace all tokenizer.pad_token_id in the labels by -100 when we want to ignore + # padding in the loss. + if padding == "max_length" and data_args.ignore_pad_token_for_loss: + labels["input_ids"] = [ + [(l if l != tokenizer.pad_token_id else -100) for l in label] for label in labels["input_ids"] + ] + + model_inputs["labels"] = labels["input_ids"] + return model_inputs + + if training_args.do_train: + if "train" not in raw_datasets: + raise ValueError("--do_train requires a train dataset") + train_dataset = raw_datasets["train"] + if data_args.max_train_samples is not None: + max_train_samples = min(len(train_dataset), data_args.max_train_samples) + train_dataset = train_dataset.select(range(max_train_samples)) + with training_args.main_process_first(desc="train dataset map pre-processing"): + train_dataset = train_dataset.map( + preprocess_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on train dataset", + ) + + if training_args.do_eval: + max_target_length = data_args.val_max_target_length + if "validation" not in raw_datasets: + raise ValueError("--do_eval requires a validation dataset") + eval_dataset = raw_datasets["validation"] + if data_args.max_eval_samples is not None: + max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) + eval_dataset = eval_dataset.select(range(max_eval_samples)) + with training_args.main_process_first(desc="validation dataset map pre-processing"): + eval_dataset = eval_dataset.map( + preprocess_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on validation dataset", + ) + + if training_args.do_predict: + max_target_length = data_args.val_max_target_length + if "test" not in raw_datasets: + raise ValueError("--do_predict requires a test dataset") + predict_dataset = raw_datasets["test"] + if data_args.max_predict_samples is not None: + max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) + predict_dataset = predict_dataset.select(range(max_predict_samples)) + with training_args.main_process_first(desc="prediction dataset map pre-processing"): + predict_dataset = predict_dataset.map( + preprocess_function, + batched=True, + num_proc=data_args.preprocessing_num_workers, + remove_columns=column_names, + load_from_cache_file=not data_args.overwrite_cache, + desc="Running tokenizer on prediction dataset", + ) + + # Data collator + label_pad_token_id = -100 if data_args.ignore_pad_token_for_loss else tokenizer.pad_token_id + if data_args.pad_to_max_length: + data_collator = default_data_collator + else: + data_collator = DataCollatorForSeq2Seq( + tokenizer, + model=model, + label_pad_token_id=label_pad_token_id, + pad_to_multiple_of=8 if training_args.fp16 else None, + ) + + # Metric + metric = evaluate.load("sacrebleu") + + def postprocess_text(preds, labels): + preds = [pred.strip() for pred in preds] + labels = [[label.strip()] for label in labels] + + return preds, labels + + def compute_metrics(eval_preds): + preds, labels = eval_preds + if isinstance(preds, tuple): + preds = preds[0] + decoded_preds = tokenizer.batch_decode(preds, skip_special_tokens=True) + if data_args.ignore_pad_token_for_loss: + # Replace -100 in the labels as we can't decode them. + labels = np.where(labels != -100, labels, tokenizer.pad_token_id) + decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=True) + + # Some simple post-processing + decoded_preds, decoded_labels = postprocess_text(decoded_preds, decoded_labels) + + result = metric.compute(predictions=decoded_preds, references=decoded_labels) + result = {"bleu": result["score"]} + + prediction_lens = [np.count_nonzero(pred != tokenizer.pad_token_id) for pred in preds] + result["gen_len"] = np.mean(prediction_lens) + result = {k: round(v, 4) for k, v in result.items()} + return result + + # Early stopping + if data_args.patience and data_args.patience > 0: + training_args.load_best_model_at_end = True + + # Setup adapters + setup_adapter_training( + model, adapter_args, data_args.source_lang.split("_")[0] + "_" + data_args.target_lang.split("_")[0] + ) + # Initialize our Trainer + trainer_class = Seq2SeqAdapterTrainer if adapter_args.train_adapter else Seq2SeqTrainer + trainer = trainer_class( + model=model, + args=training_args, + train_dataset=train_dataset if training_args.do_train else None, + eval_dataset=eval_dataset if training_args.do_eval else None, + tokenizer=tokenizer, + data_collator=data_collator, + compute_metrics=compute_metrics if training_args.predict_with_generate else None, + ) + if data_args.patience and data_args.patience > 0: + callback = EarlyStoppingCallback(early_stopping_patience=data_args.patience) + trainer.add_callback(callback) + + # Training + if training_args.do_train: + checkpoint = None + if training_args.resume_from_checkpoint is not None: + checkpoint = training_args.resume_from_checkpoint + elif last_checkpoint is not None: + checkpoint = last_checkpoint + train_result = trainer.train(resume_from_checkpoint=checkpoint) + trainer.save_model() # Saves the tokenizer too for easy upload + + metrics = train_result.metrics + max_train_samples = ( + data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) + ) + metrics["train_samples"] = min(max_train_samples, len(train_dataset)) + + trainer.log_metrics("train", metrics) + trainer.save_metrics("train", metrics) + trainer.save_state() + + # Evaluation + results = {} + max_length = ( + training_args.generation_max_length + if training_args.generation_max_length is not None + else data_args.val_max_target_length + ) + num_beams = data_args.num_beams if data_args.num_beams is not None else training_args.generation_num_beams + if training_args.do_eval: + logger.info("*** Evaluate ***") + + metrics = trainer.evaluate(max_length=max_length, num_beams=num_beams, metric_key_prefix="eval") + max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) + metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) + + trainer.log_metrics("eval", metrics) + trainer.save_metrics("eval", metrics) + + if training_args.do_predict: + logger.info("*** Predict ***") + + predict_results = trainer.predict( + predict_dataset, metric_key_prefix="predict", max_length=max_length, num_beams=num_beams + ) + metrics = predict_results.metrics + max_predict_samples = ( + data_args.max_predict_samples if data_args.max_predict_samples is not None else len(predict_dataset) + ) + metrics["predict_samples"] = min(max_predict_samples, len(predict_dataset)) + + trainer.log_metrics("predict", metrics) + trainer.save_metrics("predict", metrics) + + if trainer.is_world_process_zero(): + if training_args.predict_with_generate: + predictions = tokenizer.batch_decode( + predict_results.predictions, skip_special_tokens=True, clean_up_tokenization_spaces=True + ) + predictions = [pred.strip() for pred in predictions] + output_prediction_file = os.path.join(training_args.output_dir, "generated_predictions.txt") + with open(output_prediction_file, "w", encoding="utf-8") as writer: + writer.write("\n".join(predictions)) + + kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "translation"} + if data_args.dataset_name is not None: + kwargs["dataset_tags"] = data_args.dataset_name + if data_args.dataset_config_name is not None: + kwargs["dataset_args"] = data_args.dataset_config_name + kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" + else: + kwargs["dataset"] = data_args.dataset_name + + languages = [l for l in [data_args.source_lang, data_args.target_lang] if l is not None] + if len(languages) > 0: + kwargs["language"] = languages + + if training_args.push_to_hub: + trainer.push_to_hub(**kwargs) + else: + trainer.create_model_card(**kwargs) + + return results + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + main() diff --git a/adapters/examples/pytorch/xla_spawn.py b/adapters/examples/pytorch/xla_spawn.py new file mode 100644 index 00000000..5df6bfa2 --- /dev/null +++ b/adapters/examples/pytorch/xla_spawn.py @@ -0,0 +1,83 @@ +# Copyright 2020 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +A simple launcher script for TPU training + +Inspired by https://github.com/pytorch/pytorch/blob/master/torch/distributed/launch.py + +:: + >>> python xla_spawn.py --num_cores=NUM_CORES_YOU_HAVE + YOUR_TRAINING_SCRIPT.py (--arg1 --arg2 --arg3 and all other + arguments of your training script) + +""" + + +import importlib +import sys +from argparse import REMAINDER, ArgumentParser +from pathlib import Path + +import torch_xla.distributed.xla_multiprocessing as xmp + + +def parse_args(): + """ + Helper function parsing the command line options + @retval ArgumentParser + """ + parser = ArgumentParser( + description=( + "PyTorch TPU distributed training launch helper utility that will spawn up multiple distributed processes" + ) + ) + + # Optional arguments for the launch helper + parser.add_argument("--num_cores", type=int, default=1, help="Number of TPU cores to use (1 or 8).") + + # positional + parser.add_argument( + "training_script", + type=str, + help=( + "The full path to the single TPU training " + "program/script to be launched in parallel, " + "followed by all the arguments for the " + "training script" + ), + ) + + # rest from the training program + parser.add_argument("training_script_args", nargs=REMAINDER) + + return parser.parse_args() + + +def main(): + args = parse_args() + + # Import training_script as a module. + script_fpath = Path(args.training_script) + sys.path.append(str(script_fpath.parent.resolve())) + mod_name = script_fpath.stem + mod = importlib.import_module(mod_name) + + # Patch sys.argv + sys.argv = [args.training_script] + args.training_script_args + ["--tpu_num_cores", str(args.num_cores)] + + xmp.spawn(mod._mp_fn, args=(), nprocs=args.num_cores) + + +if __name__ == "__main__": + main() diff --git a/adapters/pyproject.toml b/adapters/pyproject.toml new file mode 100644 index 00000000..291558c9 --- /dev/null +++ b/adapters/pyproject.toml @@ -0,0 +1,3 @@ +[tool.black] +line-length = 119 +target-version = ['py35'] diff --git a/adapters/setup.cfg b/adapters/setup.cfg new file mode 100644 index 00000000..ccad3796 --- /dev/null +++ b/adapters/setup.cfg @@ -0,0 +1,54 @@ +[isort] +default_section = FIRSTPARTY +ensure_newline_before_comments = True +force_grid_wrap = 0 +include_trailing_comma = True +known_first_party = transformers +known_third_party = + absl + conllu + datasets + elasticsearch + fairseq + faiss-cpu + fastprogress + fire + fugashi + git + h5py + matplotlib + nltk + numpy + packaging + pandas + PIL + psutil + pytest + pytorch_lightning + rouge_score + sacrebleu + seqeval + sklearn + streamlit + tensorboardX + tensorflow + tensorflow_datasets + timeout_decorator + torch + torchaudio + torchtext + torchvision + torch_xla + tqdm + +line_length = 119 +lines_after_imports = 2 +multi_line_output = 3 +use_parentheses = True + +[flake8] +ignore = E203, E501, E731, E741, W503, W605 +max-line-length = 119 + +[tool:pytest] +doctest_optionflags=NUMBER NORMALIZE_WHITESPACE ELLIPSIS \ No newline at end of file diff --git a/adapters/setup.py b/adapters/setup.py new file mode 100644 index 00000000..933c09bc --- /dev/null +++ b/adapters/setup.py @@ -0,0 +1,175 @@ +# Copyright 2020 The AdapterHub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import re + +from setuptools import find_packages, setup + + +# NOTE: All setup logic is transferred & adapted from Transformer's setup.py. +# We try to follow their general layout wherever sensible. + +_deps = [ + "accelerate>=0.21.0", + "beautifulsoup4", + "black==22.3", # after updating to black 2023, also update Python version in pyproject.toml to 3.7 + "datasets!=2.5.0", + "dill<0.3.5", + "docutils==0.16.0", + "evaluate>=0.2.0", + "flake8>=3.8.3", + "GitPython<3.1.19", + "isort>=5.5.4", + "Jinja2==2.11.3", + "nltk", + "onnxruntime-tools>=1.4.2", + "onnxruntime>=1.4.0", + "parameterized", + "pillow", + "protobuf", + "psutil", + "pytest>=7.2.0,<8.0.0", + "pytest-subtests", + "pytest-timeout", + "pytest-xdist", + "markupsafe==2.0.1", + "myst-parser", + "rjieba", + "rouge-score!=0.0.7,!=0.0.8,!=0.1,!=0.1.1", + "sacrebleu>=1.4.12,<2.0.0", + "sacremoses", + "scikit-learn", + "sentencepiece>=0.1.91,!=0.1.92", + "sphinx-copybutton", + "sphinx-markdown-tables", + "sphinx-rtd-theme==0.4.3", # sphinx-rtd-theme==0.5.0 introduced big changes in the style. + "sphinx==3.2.1", + "sphinxext-opengraph==0.4.1", + "sphinx-intl", + "sphinx-multiversion", + "timeout-decorator", + "torch>=1.10,!=1.12.0", + "transformers" # ~=4.36.0", +] + + +# this is a lookup table with items like: +# +# tokenizers: "tokenizers==0.9.4" +# packaging: "packaging" +# +# some of the values are versioned whereas others aren't. +deps = {b: a for a, b in (re.findall(r"^(([^!=<>~ ]+)(?:[!=<>~ ].*)?$)", x)[0] for x in _deps)} + + +def deps_list(*pkgs): + return [deps[pkg] for pkg in pkgs] + + +extras = {} + +extras["sklearn"] = deps_list("scikit-learn") + +extras["torch"] = deps_list("torch", "accelerate") + +extras["onnxruntime"] = deps_list("onnxruntime", "onnxruntime-tools") + +extras["sentencepiece"] = deps_list("sentencepiece", "protobuf") +extras["testing"] = deps_list( + "pytest", + "pytest-subtests", + "pytest-xdist", + "timeout-decorator", + "parameterized", + "psutil", + "datasets", + "dill", + "evaluate", + "pytest-timeout", + "black", + "sacrebleu", + "rouge-score", + "nltk", + "GitPython", + "sacremoses", + "rjieba", + "beautifulsoup4", + "pillow", + "accelerate", +) + +extras["quality"] = deps_list("black", "datasets", "isort", "flake8", "GitPython") + +extras["docs"] = deps_list( + "docutils", + "Jinja2", + "markupsafe", + "myst-parser", + "sphinx", + "sphinx-markdown-tables", + "sphinx-rtd-theme", + "sphinx-copybutton", + "sphinxext-opengraph", + "sphinx-intl", + "sphinx-multiversion", +) + +extras["dev"] = ( + extras["testing"] + + extras["torch"] + + extras["sentencepiece"] + + extras["quality"] + + extras["docs"] + + extras["sklearn"] + + extras["onnxruntime"] +) + +# when modifying the following list, make sure to update src/transformers/dependency_versions_check.py +install_requires = [ + deps["transformers"], +] + +setup( + name="adapters", + version="0.1.1", + author="The AdapterHub team and community contributors", + author_email="pfeiffer@ukp.tu-darmstadt.de", + description="A Unified Library for Parameter-Efficient and Modular Transfer Learning", + long_description=open("README.md", "r", encoding="utf-8").read(), + long_description_content_type="text/markdown", + keywords="NLP deep learning transformer pytorch BERT adapters", + license="Apache", + url="https://github.com/adapter-hub/adapters", + package_dir={"": "src"}, + packages=find_packages("src"), + include_package_data=True, + package_data={"transformers": ["*.cu", "*.cpp", "*.cuh", "*.h", "*.pyx"]}, + zip_safe=False, + extras_require=extras, + python_requires=">=3.8.0", + install_requires=install_requires, + classifiers=[ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: Education", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: Apache Software License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Scientific/Engineering :: Artificial Intelligence", + ], +) diff --git a/adapters/src/adapters/__init__.py b/adapters/src/adapters/__init__.py new file mode 100644 index 00000000..36232ada --- /dev/null +++ b/adapters/src/adapters/__init__.py @@ -0,0 +1,237 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +__version__ = "0.1.1" + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "composition": [ + "AdapterCompositionBlock", + "BatchSplit", + "Fuse", + "Parallel", + "Split", + "Stack", + "parse_composition", + "validate_composition", + ], + "configuration": [ + "ADAPTER_CONFIG_MAP", + "ADAPTERFUSION_CONFIG_MAP", + "DEFAULT_ADAPTER_CONFIG", + "DEFAULT_ADAPTERFUSION_CONFIG", + "AdapterConfig", + "AdapterFusionConfig", + "BnConfig", + "CompacterConfig", + "CompacterPlusPlusConfig", + "ConfigUnion", + "DoubleSeqBnConfig", + "DoubleSeqBnInvConfig", + "DynamicAdapterFusionConfig", + "IA3Config", + "LoRAConfig", + "MAMConfig", + "ModelAdaptersConfig", + "ParBnConfig", + "PrefixTuningConfig", + "PromptTuningConfig", + "SeqBnConfig", + "SeqBnInvConfig", + "StaticAdapterFusionConfig", + "UniPELTConfig", + ], + "context": [ + "AdapterSetup", + "ForwardContext", + ], + "heads": [ + "BertStyleMaskedLMHead", + "BiaffineParsingHead", + "CausalLMHead", + "ClassificationHead", + "DependencyParsingOutput", + "ModelWithFlexibleHeadsAdaptersMixin", + "MultiHeadOutput", + "MultiLabelClassificationHead", + "MultipleChoiceHead", + "PredictionHead", + "QuestionAnsweringHead", + "Seq2SeqLMHead", + "TaggingHead", + ], + "methods.adapter_layer_base": ["AdapterLayerBase", "ComposableAdapterLayerBase"], + "model_mixin": [ + "EmbeddingAdaptersMixin", + "InvertibleAdaptersMixin", + "InvertibleAdaptersWrapperMixin", + "ModelAdaptersMixin", + "ModelWithHeadsAdaptersMixin", + ], + "models.albert": ["AlbertAdapterModel"], + "models.auto": [ + "ADAPTER_MODEL_MAPPING", + "AutoAdapterModel", + ], + "models.bart": ["BartAdapterModel"], + "models.beit": ["BeitAdapterModel"], + "models.bert": ["BertAdapterModel"], + "models.bert_generation": ["BertGenerationAdapterModel"], + "models.clip": ["CLIPAdapterModel"], + "models.deberta": ["DebertaAdapterModel"], + "models.deberta_v2": ["DebertaV2AdapterModel"], + "models.distilbert": ["DistilBertAdapterModel"], + "models.electra": ["ElectraAdapterModel"], + "models.gpt2": ["GPT2AdapterModel"], + "models.gptj": ["GPTJAdapterModel"], + "models.llama": ["LlamaAdapterModel"], + "models.mbart": ["MBartAdapterModel"], + "models.mt5": ["MT5AdapterModel"], + "models.roberta": ["RobertaAdapterModel"], + "models.t5": ["T5AdapterModel"], + "models.vit": ["ViTAdapterModel"], + "models.xlm_roberta": ["XLMRobertaAdapterModel"], + "models.xmod": ["XmodAdapterModel"], + "trainer": ["AdapterTrainer", "Seq2SeqAdapterTrainer"], + "training": [ + "AdapterArguments", + "setup_adapter_training", + ], + "utils": [ + "ADAPTER_CACHE", + "AdapterInfo", + "AdapterType", + "get_adapter_config_hash", + "get_adapter_info", + "list_adapters", + ], + "wrappers": [ + "init", + "init_adapters_config", + "load_model", + ], +} + + +if TYPE_CHECKING: + from .composition import ( + AdapterCompositionBlock, + BatchSplit, + Fuse, + Parallel, + Split, + Stack, + parse_composition, + validate_composition, + ) + from .configuration import ( + ADAPTER_CONFIG_MAP, + ADAPTERFUSION_CONFIG_MAP, + DEFAULT_ADAPTER_CONFIG, + DEFAULT_ADAPTERFUSION_CONFIG, + AdapterConfig, + AdapterFusionConfig, + BnConfig, + CompacterConfig, + CompacterPlusPlusConfig, + ConfigUnion, + DoubleSeqBnConfig, + DoubleSeqBnInvConfig, + DynamicAdapterFusionConfig, + IA3Config, + LoRAConfig, + MAMConfig, + ModelAdaptersConfig, + ParBnConfig, + PrefixTuningConfig, + PromptTuningConfig, + SeqBnConfig, + SeqBnInvConfig, + StaticAdapterFusionConfig, + UniPELTConfig, + ) + from .context import AdapterSetup, ForwardContext + from .heads import ( + BertStyleMaskedLMHead, + BiaffineParsingHead, + CausalLMHead, + ClassificationHead, + DependencyParsingOutput, + ModelWithFlexibleHeadsAdaptersMixin, + MultiHeadOutput, + MultiLabelClassificationHead, + MultipleChoiceHead, + PredictionHead, + QuestionAnsweringHead, + Seq2SeqLMHead, + TaggingHead, + ) + from .methods.adapter_layer_base import AdapterLayerBase, ComposableAdapterLayerBase + from .model_mixin import ( + EmbeddingAdaptersMixin, + InvertibleAdaptersMixin, + InvertibleAdaptersWrapperMixin, + ModelAdaptersMixin, + ModelWithHeadsAdaptersMixin, + ) + from .models.albert import AlbertAdapterModel + from .models.auto import ADAPTER_MODEL_MAPPING, AutoAdapterModel + from .models.bart import BartAdapterModel + from .models.beit import BeitAdapterModel + from .models.bert import BertAdapterModel + from .models.bert_generation import BertGenerationAdapterModel + from .models.clip import CLIPAdapterModel + from .models.deberta import DebertaAdapterModel + from .models.deberta_v2 import DebertaV2AdapterModel + from .models.distilbert import DistilBertAdapterModel + from .models.electra import ElectraAdapterModel + from .models.gpt2 import GPT2AdapterModel + from .models.gptj import GPTJAdapterModel + from .models.llama import LlamaAdapterModel + from .models.mbart import MBartAdapterModel + from .models.mt5 import MT5AdapterModel + from .models.roberta import RobertaAdapterModel + from .models.t5 import T5AdapterModel + from .models.vit import ViTAdapterModel + from .models.xlm_roberta import XLMRobertaAdapterModel + from .models.xmod import XmodAdapterModel + from .trainer import AdapterTrainer, Seq2SeqAdapterTrainer + from .training import AdapterArguments, setup_adapter_training + from .utils import ( + ADAPTER_CACHE, + AdapterInfo, + AdapterType, + get_adapter_config_hash, + get_adapter_info, + list_adapters, + ) + from .wrappers import init, init_adapters_config, load_model + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + extra_objects={"__version__": __version__}, + ) diff --git a/adapters/src/adapters/composition.py b/adapters/src/adapters/composition.py new file mode 100644 index 00000000..6d37e44b --- /dev/null +++ b/adapters/src/adapters/composition.py @@ -0,0 +1,260 @@ +import itertools +from collections.abc import Sequence +from typing import List, Optional, Set, Tuple, Union + +import torch + + +class AdapterCompositionBlock(Sequence): + def __init__(self, *children): + self.children = [parse_composition(b, None) for b in children] + + def __getitem__(self, key): + return self.children[key] + + def __len__(self): + return len(self.children) + + def __eq__(self, o: object) -> bool: + if isinstance(o, type(self)): + return all([c1 == c2 for c1, c2 in zip(self.children, o.children)]) + else: + return False + + def __repr__(self): + child_repr = ", ".join(map(str, self.children)) + return f"{self.__class__.__name__}[{child_repr}]" + + def first(self): + if not isinstance(self.children[0], AdapterCompositionBlock): + return self.children[0] + else: + return self.children[0].first() + + def last(self): + if not isinstance(self.children[-1], AdapterCompositionBlock): + return self.children[-1] + else: + return self.children[-1].last() + + @property + def parallel_channels(self): + return max([b.parallel_channels if isinstance(b, AdapterCompositionBlock) else 1 for b in self.children]) + + def flatten(self) -> Set[str]: + return set(itertools.chain(*[[b] if isinstance(b, str) else b.flatten() for b in self.children])) + + +class Parallel(AdapterCompositionBlock): + def __init__(self, *parallel_adapters: List[str]): + """ + Can be used to perform inference for multiple tasks (i.e., adapters) in parallel (for the same input). + + See AdapterDrop https://arxiv.org/abs/2010.11918 + """ + super().__init__(*parallel_adapters) + + @property + def parallel_channels(self): + return len(self.children) + + +class Stack(AdapterCompositionBlock): + def __init__(self, *stack_layers: List[Union[AdapterCompositionBlock, str]]): + super().__init__(*stack_layers) + + +class Fuse(AdapterCompositionBlock): + def __init__(self, *fuse_stacks: List[Union[AdapterCompositionBlock, str]]): + super().__init__(*fuse_stacks) + + # TODO-V2 pull this up to all block classes? + @property + def name(self): + return ",".join([c if isinstance(c, str) else c.last() for c in self.children]) + + +class Split(AdapterCompositionBlock): + def __init__(self, *split_adapters: List[Union[AdapterCompositionBlock, str]], splits: Union[List[int], int]): + super().__init__(*split_adapters) + self.splits = splits if isinstance(splits, list) else [splits] * len(split_adapters) + + +class BatchSplit(AdapterCompositionBlock): + def __init__(self, *split_adapters: List[Union[AdapterCompositionBlock, str]], batch_sizes: Union[List[int], int]): + super().__init__(*split_adapters) + self.batch_sizes = batch_sizes if isinstance(batch_sizes, list) else [batch_sizes] * len(split_adapters) + + +class Average(AdapterCompositionBlock): + def __init__( + self, + *average_adapters: List[Union[AdapterCompositionBlock, str]], + weights: Optional[List[float]] = None, + normalize_weights: bool = True + ): + super().__init__(*average_adapters) + if weights is not None: + # normalize weights + if normalize_weights: + sum_weights = sum(weights) if weights else 1 + self.weights = [w / sum_weights for w in weights] + else: + self.weights = weights + else: + self.weights = [1 / len(average_adapters)] * len(average_adapters) + + +# Mapping each composition block type to the allowed nested types +ALLOWED_NESTINGS = { + Stack: [str, Fuse, Split, Parallel, BatchSplit, Average], + Fuse: [str, Stack], + Split: [str, Split, Stack, BatchSplit, Average], + Parallel: [str, Stack, BatchSplit, Average], + BatchSplit: [str, Stack, Split, BatchSplit, Average], + Average: [str, Stack, Split, BatchSplit], +} + +# Some composition blocks might not be supported by all models. +# Add a whitelist of models for those here. +SUPPORTED_MODELS = { + Parallel: [ + "albert", + "bert", + "roberta", + "distilbert", + "deberta-v2", + "deberta", + "bart", + "mbart", + "mt5", + "gpt2", + "gptj", + "t5", + "vit", + "xlm-roberta", + "bert-generation", + "llama", + "electra", + "xmod", + ], +} + + +def validate_composition(adapter_composition: AdapterCompositionBlock, level=0, model_type=None): + if level > 1 and not (isinstance(adapter_composition, Stack) or isinstance(adapter_composition, str)): + raise ValueError(f"Adapter setup is too deep. Cannot have {adapter_composition} at level {level}.") + if isinstance(adapter_composition, AdapterCompositionBlock): + block_type = type(adapter_composition) + if model_type and block_type in SUPPORTED_MODELS: + if model_type not in SUPPORTED_MODELS[block_type]: + raise ValueError( + f"Models of type {model_type} don't support adapter composition using {block_type.__name__}." + ) + for child in adapter_composition: + if not type(child) in ALLOWED_NESTINGS[type(adapter_composition)]: + raise ValueError(f"Adapter setup is invalid. Cannot nest {child} in {adapter_composition}") + # recursively validate children + validate_composition(child, level=level + 1) + + +def parse_composition(adapter_composition, level=0, model_type=None) -> AdapterCompositionBlock: + """ + Parses and validates a setup of adapters. + + Args: + adapter_composition: The adapter setup to be parsed. + level (int, optional): If set to none, disables validation. Defaults to 0. + """ + if not adapter_composition: + return None + elif isinstance(adapter_composition, AdapterCompositionBlock): + if level is not None: + validate_composition(adapter_composition, level=level, model_type=model_type) + return adapter_composition + elif isinstance(adapter_composition, str): + if level == 0: + return Stack(adapter_composition) + else: + return adapter_composition + elif isinstance(adapter_composition, Sequence): + # for backwards compatibility + if level == 1: + block_class = Fuse + else: + block_class = Stack + level = level + 1 if level is not None else None + return block_class(*[parse_composition(b, level) for b in adapter_composition]) + else: + raise TypeError(adapter_composition) + + +def parse_heads_from_composition(adapter_composition, reference_heads: list = None): + """ + Parses a potential head configuration from a setup of adapters. + + Args: + adapter_composition: The adapter setup to be parsed. + reference_heads: The list of available to validate the retrieved head configuration against. + """ + final_block = adapter_composition + if isinstance(final_block, Stack): + final_block = final_block.children[-1] + + if isinstance(final_block, str) and (reference_heads is None or final_block in reference_heads): + return final_block + elif isinstance(final_block, Parallel): + return [a if isinstance(a, str) else a.last() for a in final_block.children] + elif isinstance(final_block, BatchSplit): + # Convert BatchSplit of adapters to a BatchSplit of heads. + blocks = [block.last() if isinstance(block, AdapterCompositionBlock) else block for block in final_block] + head_setup = BatchSplit(*blocks, batch_sizes=final_block.batch_sizes) + if reference_heads is None or all(head in reference_heads for head in head_setup): + return head_setup + else: + raise ValueError( + "Missing at least one head for the given BatchSplit setup. Expected heads: {}".format(blocks) + ) + else: + return None + + +def adjust_tensors_for_parallel(hidden_states, *tensors): + """ + Replicates a given list of tensors based on the shape of the reference tensor (first argument). + """ + outputs = [] + for tensor in tensors: + if tensor is not None and hidden_states.shape[0] >= tensor.shape[0]: + repeats = [1] * len(tensor.shape) + repeats[0] = hidden_states.shape[0] // tensor.shape[0] + new_tensor = tensor.repeat(*repeats) + outputs.append(new_tensor) + else: + outputs.append(tensor) + return tuple(outputs) + + +def adjust_tensors_for_parallel_(hidden_states, *tensors): + """ + In-place version of adjust_tensors_for_parallel(). + """ + for tensor in tensors: + if tensor is not None and hidden_states.shape[0] >= tensor.shape[0]: + repeats = [1] * len(tensor.shape) + repeats[0] = hidden_states.shape[0] // tensor.shape[0] + new_tensor = tensor.repeat(*repeats) + tensor.set_(new_tensor) + + +def match_attn_matrices_for_parallel(query, key, value) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """ + Matches the shapes of query, key and value matrices for parallel composition. + """ + max_bsz = max(query.shape[0], key.shape[0], value.shape[0]) + + query = query.repeat(max_bsz // query.shape[0], *([1] * len(query.shape[1:]))) + key = key.repeat(max_bsz // key.shape[0], *([1] * len(key.shape[1:]))) + value = value.repeat(max_bsz // value.shape[0], *([1] * len(value.shape[1:]))) + + return query, key, value diff --git a/adapters/src/adapters/configuration/__init__.py b/adapters/src/adapters/configuration/__init__.py new file mode 100644 index 00000000..f320c0a3 --- /dev/null +++ b/adapters/src/adapters/configuration/__init__.py @@ -0,0 +1,4 @@ +# flake8: noqa +from .adapter_config import * +from .adapter_fusion_config import * +from .model_adapters_config import ModelAdaptersConfig, build_full_config diff --git a/adapters/src/adapters/configuration/adapter_config.py b/adapters/src/adapters/configuration/adapter_config.py new file mode 100644 index 00000000..c3b45ca3 --- /dev/null +++ b/adapters/src/adapters/configuration/adapter_config.py @@ -0,0 +1,655 @@ +import logging +from collections.abc import Mapping +from dataclasses import FrozenInstanceError, asdict, dataclass, field, replace +from typing import List, Optional, Union + +from ..utils import resolve_adapter_config + + +logger = logging.getLogger(__name__) + + +class AdapterConfig(Mapping): + """ + Base class for all adaptation methods. This class does not define specific configuration keys, but only provides + some common helper methods. + + Args: + architecture (str, optional): The type of adaptation method defined by the configuration. + """ + + architecture: Optional[str] = None + + def __init__(self): + raise TypeError("AdapterConfig is an abstract class and cannot be instantiated.") + + # We want to emulate a simple form of immutability while keeping the ability to add custom attributes. + # Therefore, we don't allow changing attribute values if set once. + def __setattr__(self, name, value): + if name in self.__dict__: + raise FrozenInstanceError() + else: + object.__setattr__(self, name, value) + + def __delattr__(self, name): + raise FrozenInstanceError() + + def __getitem__(self, key): + return self.__dict__[key] + + def __iter__(self): + return iter(self.__dict__) + + def __len__(self): + return len(self.__dict__) + + def __eq__(self, other): + return self.to_dict() == other.to_dict() + + def to_dict(self): + """Converts the config class to a Python dict.""" + return asdict(self) + + def replace(self, **changes): + """Returns a new instance of the config class with the specified changes applied.""" + return replace(self, **changes) + + @classmethod + def from_dict(cls, config): + """Creates a config class from a Python dict.""" + if isinstance(config, AdapterConfig): + return config + + # the constructor does not accept additional kwargs, so add them separately + defined_kwargs, new_kwargs = {}, {} + for k, v in config.items(): + if k in cls.__dataclass_fields__.keys(): + defined_kwargs[k] = v + else: + new_kwargs[k] = v + obj = cls(**defined_kwargs) + for k, v in new_kwargs.items(): + setattr(obj, k, v) + return obj + + @staticmethod + def _get_config_class(config_dict): + """ + Returns the matching config class for the given config dict based on its "architecture" key. + """ + architecture = config_dict.get("architecture", None) + if architecture == "prefix_tuning": + cls_new = PrefixTuningConfig + elif architecture == "lora": + cls_new = LoRAConfig + elif architecture == "union": + cls_new = ConfigUnion + elif architecture == "prompt_tuning": + cls_new = PromptTuningConfig + else: + cls_new = BnConfig + + return cls_new + + @classmethod + def load(cls, config: Union[dict, str], download_kwargs=None, **kwargs): + """ + Loads a given adapter configuration specifier into a full AdapterConfig instance. + + Args: + config (Union[dict, str]): The configuration to load. Can be either: + + - a dictionary representing the full config + - an identifier string available in ADAPTER_CONFIG_MAP + - the path to a file containing a full adapter configuration + - an identifier string available in Adapter-Hub + + Returns: + dict: The resolved adapter configuration dictionary. + """ + if not config: + return None + # if force_download is set, skip the local map + if download_kwargs and download_kwargs.get("force_download", False): + local_map = None + else: + local_map = ADAPTER_CONFIG_MAP + if download_kwargs: + config_dict = resolve_adapter_config(config, local_map=local_map, **download_kwargs) + else: + config_dict = resolve_adapter_config(config, local_map=local_map) + # convert back to dict to allow attr overrides + if isinstance(config_dict, AdapterConfig): + cls_new = config_dict.__class__ + config_dict = config_dict.to_dict() + else: + cls_new = cls._get_config_class(config_dict) + # The check for "None" is necessary because of the example script flags. + config_dict.update((k, v) for k, v in kwargs.items() if v is not None) + return cls_new.from_dict(config_dict) + + +@dataclass(eq=False) +class BnConfig(AdapterConfig): + """ + Base class that models the architecture of a bottleneck adapter. + + Args: + mh_adapter (:obj:`bool`): If True, add adapter modules after the multi-head attention block of each layer. + output_adapter (:obj:`bool`): If True, add adapter modules after the output FFN of each layer. + reduction_factor (:obj:`float` or :obj:`Mapping`): + Either a scalar float (> 0) specifying the reduction factor for all layers or a mapping from layer ID + (starting at 0) to values specifying the reduction_factor for individual layers. If not all layers are + represented in the mapping a default value should be given e.g. {'1': 8, '6': 32, 'default': 16}. + Specifying a reduction factor < 1 will result in an up-projection layer. + non_linearity (:obj:`str`): The activation function to use in the adapter bottleneck. + original_ln_before (:obj:`bool`, optional): + If True, apply layer pre-trained normalization and residual connection before the adapter modules. Defaults + to False. Only applicable if :obj:`is_parallel` is False. + original_ln_after (:obj:`bool`, optional): + If True, apply pre-trained layer normalization and residual connection after the adapter modules. Defaults + to True. + ln_before (:obj:`bool`, optional): If True, add a new layer normalization before the adapter bottleneck. + Defaults to False. + ln_after (:obj:`bool`, optional): If True, add a new layer normalization after the adapter bottleneck. + Defaults to False. + init_weights (:obj:`str`, optional): Initialization method for the weights of the adapter modules. + Currently, this can be either "bert" (default) or "mam_adapter". + is_parallel (:obj:`bool`, optional): If True, apply adapter transformations in parallel. + By default (False), sequential application is used. + scaling (:obj:`float` or :obj:`str`, optional): + Scaling factor to use for scaled addition of adapter outputs as done by He et al. (2021). Can be either a + constant factor (float) or the string "learned", in which case the scaling factor is learned. Defaults to + 1.0. + use_gating (:obj:`bool`, optional): + Place a trainable gating module besides the added parameter module to control module activation. This is + e.g. used for UniPELT. Defaults to False. + residual_before_ln (:obj:`bool` or :obj:`str`, optional): + If True, take the residual connection around the adapter bottleneck before the layer normalization. If set + to "post_add", take the residual connection around the adapter bottleneck after the previous residual + connection. Only applicable if :obj:`original_ln_before` is True. + adapter_residual_before_ln (:obj:`bool`, optional): + If True, apply the residual connection around the adapter modules before the new layer normalization within + the adapter. Only applicable if :obj:`ln_after` is True and :obj:`is_parallel` is False. + inv_adapter (:obj:`str`, optional): + If not None (default), add invertible adapter modules after the model embedding layer. Currently, this can + be either "nice" or "glow". + inv_adapter_reduction_factor (:obj:`float`, optional): + The reduction to use within the invertible adapter modules. Only applicable if :obj:`inv_adapter` is not + None. + cross_adapter (:obj:`bool`, optional): + If True, add adapter modules after the cross attention block of each decoder layer in an encoder-decoder + model. Defaults to False. + leave_out (:obj:`List[int]`, optional): + The IDs of the layers (starting at 0) where NO adapter modules should be added. + phm_layer (:obj:`bool`, optional): If True the down and up projection layers are a PHMLayer. + Defaults to False + phm_dim (:obj:`int`, optional): The dimension of the phm matrix. + Only applicable if `phm_layer` is set to `True`. Defaults to 4. + shared_phm_rule (:obj:`bool`, optional): Whether the phm matrix is shared across all layers. + Defaults to True + factorized_phm_rule (:obj:`bool`, optional): + Whether the phm matrix is factorized into a left and right matrix. Defaults to False. + learn_phm (:obj:`bool`, optional): Whether the phm matrix should be learned during training. + Defaults to True + factorized_phm_W (: + obj:`bool`, optional): Whether the weights matrix is factorized into a left and right matrix. Defaults to + True + shared_W_phm (:obj:`bool`, optional): Whether the weights matrix is shared across all layers. + Defaults to False. + phm_c_init (:obj:`str`, optional): The initialization function for the weights of the phm matrix. + The possible values are `["normal", "uniform"]`. Defaults to `normal`. + phm_init_range (:obj:`float`, optional): std for initializing phm weights if `phm_c_init="normal"`. + Defaults to 0.0001. + hypercomplex_nonlinearity (:obj:`str`, optional): + This specifies the distribution to draw the weights in the phm layer from. Defaults to `glorot-uniform`. + phm_rank (:obj:`int`, optional): + If the weight matrix is factorized this specifies the rank of the matrix. E.g. the left matrix of the down + projection has the shape (phm_dim, _in_feats_per_axis, phm_rank) and the right matrix (phm_dim, phm_rank, + _out_feats_per_axis). Defaults to 1 + phm_bias (:obj:`bool`, optional): + If True the down and up projection PHMLayer has a bias term. If `phm_layer` is False this is ignored. + Defaults to True + """ + + # Required options + mh_adapter: bool + output_adapter: bool + + reduction_factor: Union[float, Mapping] + non_linearity: str + + # Options with defaults + original_ln_before: bool = False + original_ln_after: bool = True + ln_before: bool = False + ln_after: bool = False + init_weights: str = "bert" + is_parallel: bool = False + scaling: Union[float, str] = 1.0 + use_gating: bool = False + residual_before_ln: Union[bool, str] = True + adapter_residual_before_ln: bool = False + inv_adapter: Optional[str] = None + inv_adapter_reduction_factor: Optional[float] = None + cross_adapter: bool = False + leave_out: List[int] = field(default_factory=list) + phm_layer: bool = False + phm_dim: int = 4 + factorized_phm_W: Optional[bool] = True + shared_W_phm: Optional[bool] = False + shared_phm_rule: Optional[bool] = True + factorized_phm_rule: Optional[bool] = False + phm_c_init: Optional[str] = "normal" + phm_init_range: Optional[float] = 0.0001 + learn_phm: Optional[bool] = True + hypercomplex_nonlinearity: Optional[str] = "glorot-uniform" + phm_rank: Optional[int] = 1 + phm_bias: Optional[bool] = True + + # We want to emulate a simple form of immutability while keeping the ability to add custom attributes. + # Therefore, we don't allow changing attribute values if set once. + def __setattr__(self, name, value): + if name in self.__dict__: + raise FrozenInstanceError() + elif name == "invertible_adapter": + # This is for backwards compatibility. In v1, invertible adapters were specified in a nested config dict. + # Now, we have two config keys directly in the adapter config. + if value: + object.__setattr__(self, "inv_adapter", value["block_type"]) + object.__setattr__(self, "inv_adapter_reduction_factor", value["reduction_factor"]) + else: + object.__setattr__(self, name, value) + + +@dataclass(eq=False) +class SeqBnConfig(BnConfig): + """ + The adapter architecture proposed by Pfeiffer et al. (2020). See https://arxiv.org/pdf/2005.00247.pdf. + """ + + original_ln_before: bool = True + original_ln_after: bool = True + residual_before_ln: Union[bool, str] = True + adapter_residual_before_ln: bool = False + ln_before: bool = False + ln_after: bool = False + mh_adapter: bool = False + output_adapter: bool = True + non_linearity: str = "relu" + reduction_factor: Union[float, Mapping] = 16 + + +@dataclass(eq=False) +class CompacterPlusPlusConfig(SeqBnConfig): + """ + The Compacter++ architecture proposed by Mahabadi et al. (2021). See https://arxiv.org/pdf/2106.04647.pdf. + """ + + phm_layer: bool = True + reduction_factor: Union[float, Mapping] = 32 + non_linearity: str = "gelu" + + +@dataclass(eq=False) +class SeqBnInvConfig(SeqBnConfig): + """ + The adapter architecture proposed by Pfeiffer et al. (2020). See https://arxiv.org/pdf/2005.00247.pdf. + """ + + inv_adapter: Optional[str] = "nice" + inv_adapter_reduction_factor: Optional[float] = 2 + + +@dataclass(eq=False) +class DoubleSeqBnConfig(BnConfig): + """ + The adapter architecture proposed by Houlsby et al. (2019). See https://arxiv.org/pdf/1902.00751.pdf. + """ + + original_ln_before: bool = False + original_ln_after: bool = True + residual_before_ln: Union[bool, str] = True + adapter_residual_before_ln: bool = False + ln_before: bool = False + ln_after: bool = False + mh_adapter: bool = True + output_adapter: bool = True + non_linearity: str = "swish" + reduction_factor: Union[float, Mapping] = 16 + + +@dataclass(eq=False) +class CompacterConfig(DoubleSeqBnConfig): + """ + The Compacter architecture proposed by Mahabadi et al. (2021). See https://arxiv.org/pdf/2106.04647.pdf. + """ + + phm_layer: bool = True + reduction_factor: Union[float, Mapping] = 32 + non_linearity: str = "gelu" + + +@dataclass(eq=False) +class DoubleSeqBnInvConfig(DoubleSeqBnConfig): + """ + The adapter architecture proposed by Houlsby et. al. (2019). See https://arxiv.org/pdf/1902.00751.pdf. + """ + + inv_adapter: Optional[str] = "nice" + inv_adapter_reduction_factor: Optional[float] = 2 + + +@dataclass(eq=False) +class ParBnConfig(BnConfig): + """ + The parallel adapter architecture proposed by He et al. (2021). See https://arxiv.org/pdf/2110.04366.pdf. + """ + + original_ln_before: bool = False + original_ln_after: bool = True + ln_before: bool = False + ln_after: bool = False + mh_adapter: bool = False + output_adapter: bool = True + non_linearity: str = "relu" + reduction_factor: Union[float, Mapping] = 2 + + init_weights: str = "mam_adapter" + is_parallel: bool = True + scaling: Union[float, str] = 4.0 + + +@dataclass(eq=False) +class PrefixTuningConfig(AdapterConfig): + """ + The Prefix Tuning architecture proposed by Li & Liang (2021). See https://arxiv.org/pdf/2101.00190.pdf. + + Args: + encoder_prefix (bool): If True, add prefixes to the encoder of an encoder-decoder model. + cross_prefix (bool): If True, add prefixes to the cross attention of an encoder-decoder model. + flat (bool): If True, train the prefix parameters directly. Otherwise, reparametrize using a bottleneck MLP. + prefix_length (int): The length of the prefix. + bottleneck_size (int): If flat=False, the size of the bottleneck MLP. + non_linearity (str): If flat=False, the non-linearity used in the bottleneck MLP. + dropout (float): The dropout rate used in the prefix tuning layer. + leave_out (List[int]): The IDs of the layers (starting at 0) where NO prefix should be added. + use_gating (:obj:`bool`, optional): + Place a trainable gating module besides the added parameter module to control module activation. This is + e.g. used for UniPELT. Defaults to False. + shared_gating (: + obj:`bool`, optional): Whether to use a shared gate for the prefixes of all attention matrices. Only + applicable if `use_gating=True`. Defaults to True. + """ + + architecture: Optional[str] = "prefix_tuning" + + encoder_prefix: bool = True + cross_prefix: bool = True + leave_out: List[int] = field(default_factory=list) + + flat: bool = False + prefix_length: int = 30 + bottleneck_size: int = 512 + non_linearity: str = "tanh" + dropout: float = 0.0 + use_gating: bool = False + shared_gating: bool = True + + +@dataclass(eq=False) +class PromptTuningConfig(AdapterConfig): + """ + The Prompt Tuning architecture proposed by Lester et al. (2021). See https://arxiv.org/pdf/2104.08691.pdf + + Args: + prompt_length (int): The number of tokens in the prompt. + Defaults to 10. + prompt_init (str): The initialization method for the prompt. Can be either "random_uniform" or "from_string". + Defaults to "random_uniform". + prompt_init_text (str): The text to use for prompt initialization if prompt_init="from_string". + random_uniform_scale (float): The scale of the random uniform initialization if prompt_init="random_uniform". + Defaults to 0.5 as in the paper. + combine (str): + The method used to combine the prompt with the input. Can be either "prefix" or "prefix_after_bos". + Defaults to "prefix". + """ + + architecture: str = "prompt_tuning" + + prompt_length: int = 10 + prompt_init: str = "random_uniform" + prompt_init_text: Optional[str] = None + random_uniform_scale = 0.5 + combine: str = "prefix" + + +@dataclass(eq=False) +class LoRAConfig(AdapterConfig): + """ + The Low-Rank Adaptation (LoRA) architecture proposed by Hu et al. (2021). See https://arxiv.org/pdf/2106.09685.pdf. + LoRA adapts a model by reparametrizing the weights of a layer matrix. You can merge the additional weights with the + original layer weights using ``model.merge_adapter("lora_name")``. + + Args: + selfattn_lora (bool, optional): If True, add LoRA to the self-attention weights of a model. + Defaults to True. + intermediate_lora (bool, optional): If True, add LoRA to the intermediate MLP weights of a model. + Defaults to False. + output_lora (bool, optional): If True, add LoRA to the output MLP weights of a model. + Defaults to False. + leave_out (:obj:`List[int]`, optional): + The IDs of the layers (starting at 0) where NO adapter modules should be added. + r (int, optional): The rank of the LoRA layer. Defaults to 8. + alpha (int, optional): The hyperparameter used for scaling the LoRA reparametrization. Defaults to 8. + dropout (float, optional): The dropout rate used in the LoRA layer. Defaults to 0.0. + attn_matrices (List[str], optional): Determines which matrices of the self-attention module to adapt. + A list that may contain the strings "q" (query), "k" (key), "v" (value). Defaults to ["q", "v"]. + composition_mode (str, optional): + Defines how the injected weights are composed with the original model weights. Can be either "add" + (addition of decomposed matrix, as in LoRA) or "scale" (element-wise multiplication of vector, as in + (IA)^3). "scale" can only be used together with r=1. Defaults to "add". + init_weights (:obj:`str`, optional): Initialization method for the weights of the LoRA modules. + Currently, this can be either "lora" (default) or "bert". + use_gating (:obj:`bool`, optional): + Place a trainable gating module besides the added parameter module to control module activation. This is + e.g. used for UniPELT. Defaults to False. Note that modules with use_gating=True cannot be merged using + `merge_adapter()`. + """ + + architecture: Optional[str] = "lora" + + selfattn_lora: bool = True + intermediate_lora: bool = False + output_lora: bool = False + leave_out: List[int] = field(default_factory=list) + + r: int = 8 + alpha: int = 8 + dropout: float = 0.0 + attn_matrices: List[str] = field(default_factory=lambda: ["q", "v"]) + composition_mode: str = "add" + init_weights: str = "lora" + use_gating: bool = False + + +@dataclass(eq=False) +class IA3Config(LoRAConfig): + """ + The 'Infused Adapter by Inhibiting and Amplifying Inner Activations' ((IA)^3) architecture proposed by Liu et al. + (2022). See https://arxiv.org/pdf/2205.05638.pdf. (IA)^3 builds on top of LoRA, however, unlike the additive + composition of LoRA, it scales weights of a layer using an injected vector. + """ + + selfattn_lora: bool = True + intermediate_lora: bool = True + output_lora: bool = False + leave_out: List[int] = field(default_factory=list) + + r: int = 1 + alpha: int = 1 + dropout: float = 0.0 + attn_matrices: List[str] = field(default_factory=lambda: ["k", "v"]) + composition_mode: str = "scale" + init_weights: str = "ia3" + use_gating: bool = False + + +class ConfigUnion(AdapterConfig): + """ + Composes multiple adaptation method configurations into one. This class can be used to define complex adaptation + method setups. + """ + + architecture: Optional[str] = "union" + + configs: List[AdapterConfig] + + def __init__(self, *configs: List[AdapterConfig]): + self.validate(configs) + self.configs = configs + + @staticmethod + def validate(configs): + """ + Performs simple validations of a list of configurations to check whether they can be combined to a common + setup. + + Args: + configs (List[AdapterConfig]): list of configs to check. + + Raises: + TypeError: One of the configurations has a wrong type. ValueError: At least two given configurations + conflict. + """ + # perform single config checks + for config in configs: + if not isinstance(config, AdapterConfig): + raise TypeError(f"{config} is not an instance of AdapterConfig") + elif isinstance(config, ConfigUnion): + raise TypeError(f"{config} of type {type(config)} is not supported in a config union.") + # perform pairwise check + for c_a, c_b in [(c_a, c_b) for i, c_a in enumerate(configs) for j, c_b in enumerate(configs) if i > j]: + if c_a.architecture != c_b.architecture: + continue + # if at least one config specifies a leave_out, we cannot make a final decision at this point + elif c_a.get("leave_out", []) or c_b.get("leave_out", []): + continue + elif c_a.architecture is None or c_a.architecture == "bottleneck": + is_valid = c_a.mh_adapter != c_b.mh_adapter and c_a.output_adapter != c_b.output_adapter + if not is_valid: + raise ValueError(f"{c_a} and {c_b} cannot be combined.") + else: + continue + # at this point, we know that the architectures are the same + raise ValueError(f"{c_a} and {c_b} have the same adapter architecture and cannot be combined.") + + def __getitem__(self, key): + if isinstance(key, int): + return self.configs[key] + elif hasattr(self, key): + return getattr(self, key) + else: + i, k = key.split(".") + return self.configs[int(i)][k] + + def __iter__(self): + for i, c in enumerate(self.configs): + for k in iter(c): + yield f"{i}.{k}" + + def __len__(self): + return sum([len(c) for c in self.configs]) + + def __eq__(self, other): + return all([c_a == c_b for c_a, c_b in zip(self.configs, other.configs)]) + + def to_dict(self): + return {"architecture": self.architecture, "configs": [c.to_dict() for c in self.configs]} + + def replace(self, **changes): + return ConfigUnion(*[c.replace(**changes) for c in self.configs]) + + @classmethod + def from_dict(cls, config): + if isinstance(config, AdapterConfig): + return config + + configs = [] + for c in config["configs"]: + config_class = cls._get_config_class(c) + configs.append(config_class.from_dict(c)) + + return cls(*configs) + + +class MAMConfig(ConfigUnion): + """ + The Mix-And-Match adapter architecture proposed by He et al. (2021). See https://arxiv.org/pdf/2110.04366.pdf. + """ + + def __init__(self, prefix_tuning: Optional[PrefixTuningConfig] = None, adapter: Optional[BnConfig] = None): + prefix_tuning = prefix_tuning or PrefixTuningConfig(bottleneck_size=800) + adapter = adapter or ParBnConfig() + + assert isinstance(prefix_tuning, PrefixTuningConfig) + assert isinstance(adapter, BnConfig) + super().__init__(prefix_tuning, adapter) + + @property + def prefix_tuning(self): + return self[0] + + @property + def adapter(self): + return self[1] + + +class UniPELTConfig(ConfigUnion): + """ + The UniPELT adapter architecture proposed by Mao et al. (2022). See https://arxiv.org/pdf/2110.07577.pdf. + """ + + def __init__( + self, + prefix_tuning: Optional[PrefixTuningConfig] = None, + adapter: Optional[BnConfig] = None, + lora: Optional[LoRAConfig] = None, + ): + components = [ + prefix_tuning or PrefixTuningConfig(prefix_length=10), + adapter or SeqBnConfig(reduction_factor=16), + lora or LoRAConfig(r=8), + ] + + super().__init__(*[c.replace(use_gating=True) for c in components]) + + +# IMPORTANT: When adding a new config here, also add it to docs/overview.md! +ADAPTER_CONFIG_MAP = { + # DEPRECATED STRINGS + "pfeiffer": SeqBnConfig(), + "houlsby": DoubleSeqBnConfig(), + "parallel": ParBnConfig(), + "scaled_parallel": ParBnConfig(scaling="learned"), + "pfeiffer+inv": SeqBnInvConfig(), + "houlsby+inv": DoubleSeqBnInvConfig(), + # CURRENT STRINGS + "seq_bn": SeqBnConfig(), + "double_seq_bn": DoubleSeqBnConfig(), + "par_bn": ParBnConfig(), + "scaled_par_bn": ParBnConfig(scaling="learned"), + "seq_bn_inv": SeqBnInvConfig(), + "double_seq_bn_inv": DoubleSeqBnInvConfig(), + "compacter++": CompacterPlusPlusConfig(), + "compacter": CompacterConfig(), + "prefix_tuning": PrefixTuningConfig(), + "prefix_tuning_flat": PrefixTuningConfig(flat=True), + "prompt_tuning": PromptTuningConfig(), + "lora": LoRAConfig(), + "ia3": IA3Config(), + "mam": MAMConfig(), + "unipelt": UniPELTConfig(), +} + +DEFAULT_ADAPTER_CONFIG = "seq_bn" diff --git a/adapters/src/adapters/configuration/adapter_fusion_config.py b/adapters/src/adapters/configuration/adapter_fusion_config.py new file mode 100644 index 00000000..552bcdbe --- /dev/null +++ b/adapters/src/adapters/configuration/adapter_fusion_config.py @@ -0,0 +1,85 @@ +from dataclasses import dataclass +from typing import Union + +from ..utils import resolve_adapter_config +from .adapter_config import AdapterConfig + + +@dataclass(eq=False) +class AdapterFusionConfig(AdapterConfig): + """Base class that models the architecture of an adapter fusion layer.""" + + key: bool + query: bool + value: bool + query_before_ln: bool + regularization: bool + residual_before: bool + temperature: bool + value_before_softmax: bool + value_initialized: str + dropout_prob: float + + @classmethod + def load(cls, config: Union[dict, str], **kwargs): + """ + Loads a given adapter fusion configuration specifier into a full AdapterFusionConfig instance. + + Args: + config (Union[dict, str]): The configuration to load. Can be either: + + - a dictionary representing the full config + - an identifier string available in ADAPTERFUSION_CONFIG_MAP + - the path to a file containing a full adapter fusion configuration + + Returns: + dict: The resolved adapter fusion configuration dictionary. + """ + # currently storing AdapterFusion weights on AdapterHub is not supported. + config_dict = resolve_adapter_config(config, local_map=ADAPTERFUSION_CONFIG_MAP, try_loading_from_hub=False) + # convert back to dict to allow attr overrides + if isinstance(config_dict, AdapterFusionConfig): + config_dict = config_dict.to_dict() + config_dict.update(kwargs) + return AdapterFusionConfig.from_dict(config_dict) + + +@dataclass(eq=False) +class StaticAdapterFusionConfig(AdapterFusionConfig): + """ + Static version of adapter fusion without a value matrix. See https://arxiv.org/pdf/2005.00247.pdf. + """ + + key: bool = True + query: bool = True + value: bool = False + query_before_ln: bool = False + regularization: bool = False + residual_before: bool = False + temperature: bool = False + value_before_softmax: bool = True + value_initialized: str = False + dropout_prob: float = None + + +@dataclass(eq=False) +class DynamicAdapterFusionConfig(AdapterFusionConfig): + """ + Dynamic version of adapter fusion with a value matrix and regularization. See https://arxiv.org/pdf/2005.00247.pdf. + """ + + key: bool = True + query: bool = True + value: bool = True + query_before_ln: bool = False + regularization: bool = True + residual_before: bool = False + temperature: bool = False + value_before_softmax: bool = True + value_initialized: str = True + dropout_prob: float = None + + +ADAPTERFUSION_CONFIG_MAP = {"static": StaticAdapterFusionConfig(), "dynamic": DynamicAdapterFusionConfig()} + +DEFAULT_ADAPTERFUSION_CONFIG = "dynamic" diff --git a/adapters/src/adapters/configuration/model_adapters_config.py b/adapters/src/adapters/configuration/model_adapters_config.py new file mode 100644 index 00000000..3f4c3023 --- /dev/null +++ b/adapters/src/adapters/configuration/model_adapters_config.py @@ -0,0 +1,241 @@ +import copy +import logging +from collections.abc import Collection, Mapping +from typing import List, Optional, Union + +from .. import __version__ +from ..composition import AdapterCompositionBlock +from ..utils import get_adapter_config_hash +from .adapter_config import ADAPTER_CONFIG_MAP, DEFAULT_ADAPTER_CONFIG, AdapterConfig, ConfigUnion +from .adapter_fusion_config import ADAPTERFUSION_CONFIG_MAP, DEFAULT_ADAPTERFUSION_CONFIG + + +logger = logging.getLogger(__name__) + + +class ModelAdaptersConfig(Collection): + """This class manages the setup and configuration of adapter modules in a pre-trained model.""" + + def __init__(self, **kwargs): + adapters_list = kwargs.pop("adapters", {}) + # this is for backwards compability: in v1.x, self.adapters values had shape (, ) + adapters_list = dict( + map(lambda t: (t[0], t[1][1] or t[1][0] if isinstance(t[1], tuple) else t[1]), adapters_list.items()) + ) + self.adapters: Mapping[str, str] = adapters_list + self.config_map = kwargs.pop("config_map", {}) + + self.fusions: Mapping[str, str] = kwargs.pop("fusions", {}) + self.fusion_config_map = kwargs.pop("fusion_config_map", {}) + + # TODO-V2 Save this with config? + self.active_setup: Optional[AdapterCompositionBlock] = None + self.skip_layers = None + + def __contains__(self, item): + return item in self.adapters.keys() + + def __iter__(self): + return iter(self.adapters) + + def __len__(self): + return len(self.adapters) + + def get(self, adapter_name: str) -> Optional[dict]: + """ + Gets the config dictionary for a given adapter. + + Args: + adapter_name (str): The name of the adapter. + + Returns: + Mapping: The adapter configuration. + """ + if adapter_name in self.adapters: + config_name = self.adapters[adapter_name] + if config_name in self.config_map: + config = self.config_map.get(config_name, None) + else: + config = ADAPTER_CONFIG_MAP.get(config_name, None) + if isinstance(config, str): + config = ADAPTER_CONFIG_MAP[config] + else: + config = None + return config + + def match( + self, + adapter_name: str, + config_type: type, + layer_idx: Optional[int] = None, + location_key: Optional[str] = None, + ) -> Optional[dict]: + """ + Tries to match the given criteria to an existing adapter. Return the adapter config if a match is found, + otherwise None. + """ + config = self.get(adapter_name) + if config is None: + return None + elif not isinstance(config, AdapterConfig): + config = AdapterConfig.load(config) + + if isinstance(config, config_type): + leave_out = config.get("leave_out", []) + if layer_idx is None or layer_idx not in leave_out: + if location_key is None or config.get(location_key, False): + return config + # if we have a config union, match with all child configs + elif isinstance(config, ConfigUnion): + results = [] + for c in config.configs: + if isinstance(c, config_type): + leave_out = c.get("leave_out", []) + if layer_idx is None or layer_idx not in leave_out: + if location_key is None or c.get(location_key, False): + results.append(c) + if len(results) == 1: + return results[0] + elif len(results) > 1: + raise ValueError( + "Multiple adapter definitions conflict for adapter '{}' in layer {}. " + "Please make sure there is only one adaptation block used per location and adapter.".format( + adapter_name, layer_idx + ) + ) + + return None + + def add(self, adapter_name: str, config: Optional[Union[str, dict]] = None): + """ + Adds a new adapter of the name to the model config. + + Args: + adapter_name (str): The name of the adapter. + config (Optional[Union[str, dict]], optional): The adapter config. Defaults to None. + """ + if adapter_name in self.adapters: + raise ValueError(f"An adapter with the name '{adapter_name}' has already been added.") + if config is None: + config = DEFAULT_ADAPTER_CONFIG + if isinstance(config, str): + if config not in ADAPTER_CONFIG_MAP and config not in self.config_map: + raise ValueError(f"Invalid adapter config identifier '{config}'.") + config_name = config + # if it's a dict, compute it's hash and add a new entry to the config map + elif isinstance(config, Mapping): + config_name = get_adapter_config_hash(config) + self.config_map[config_name] = AdapterConfig.load(config) + else: + raise ValueError("Invalid adapter config: {}".format(config)) + self.adapters[adapter_name] = config_name + logger.info(f"Adding adapter '{adapter_name}'.") + + def get_fusion(self, fusion_name: Union[str, List[str]]) -> Optional[dict]: + """ + Gets the config dictionary for a given AdapterFusion. + + Args: + fusion_name (Union[str, List[str]]): The name of the AdapterFusion or the adapters to fuse. + + Returns: + Optional[dict]: The AdapterFusion configuration. + """ + if isinstance(fusion_name, list): + fusion_name = ",".join(fusion_name) + if fusion_name in self.fusions: + config_name = self.fusions[fusion_name] + if config_name in self.fusion_config_map: + config = self.fusion_config_map.get(config_name, None) + else: + config = ADAPTERFUSION_CONFIG_MAP.get(config_name, None) + else: + config = None + return config + + def add_fusion(self, fusion_name: Union[str, List[str]], config: Optional[Union[str, dict]] = None): + """ + Adds a new AdapterFusion. + + Args: + fusion_name (Union[str, List[str]]): The name of the AdapterFusion or the adapters to fuse. + config (Optional[Union[str, dict]], optional): AdapterFusion config. Defaults to None. + """ + if isinstance(fusion_name, list): + fusion_name = ",".join(fusion_name) + if fusion_name in self.fusions: + raise ValueError(f"An AdapterFusion with the name '{fusion_name}' has already been added.") + if config is None: + config = DEFAULT_ADAPTERFUSION_CONFIG + if isinstance(config, str): + if config not in ADAPTERFUSION_CONFIG_MAP and config not in self.fusion_config_map: + raise ValueError(f"Invalid AdapterFusion config identifier '{config}'.") + config_name = config + # if it's a dict, compute it's hash and add a new entry to the config map + elif isinstance(config, Mapping): + config_name = get_adapter_config_hash(config) + self.fusion_config_map[config_name] = config + else: + raise ValueError("Invalid AdapterFusion config: {}".format(config)) + self.fusions[fusion_name] = config_name + logger.info(f"Adding AdapterFusion '{fusion_name}'.") + + def common_config_value(self, adapter_names: list, attribute: str): + """ + Checks whether all adapters in a list share the same config setting for a given attribute and returns the + shared value. + + Args: + adapter_names (list): The adapters to check. + attribute (str): The config attribute to check. + """ + common_value = None + for i, name in enumerate(adapter_names): + config = self.get(name) + if not config: + raise ValueError( + f"No adapter with name '{name}' found. Make sure that an adapter with this name is loaded." + ) + config_value = config.get(attribute, None) + if i > 0 and config_value != common_value: + raise ValueError(f"All given adapters must define the same value for config attribute {attribute}.") + common_value = config_value + return common_value + + def to_dict(self): + output_dict = {} + output_dict["adapters"] = copy.deepcopy(self.adapters) + output_dict["config_map"] = {} + for k, v in self.config_map.items(): + if isinstance(v, AdapterConfig): + output_dict["config_map"][k] = v.to_dict() + else: + output_dict["config_map"][k] = copy.deepcopy(v) + output_dict["fusions"] = copy.deepcopy(self.fusions) + output_dict["fusion_config_map"] = {} + for k, v in self.fusion_config_map.items(): + if isinstance(v, AdapterConfig): + output_dict["fusion_config_map"][k] = v.to_dict() + else: + output_dict["fusion_config_map"][k] = copy.deepcopy(v) + return output_dict + + def __eq__(self, other): + return isinstance(other, ModelAdaptersConfig) and (self.__dict__ == other.__dict__) + + +def build_full_config(adapter_config, model_config, save_id2label=False, **kwargs): + config_dict = { + "model_type": model_config.model_type, + # some models such as encoder-decoder don't have a model-wide hidden size + "hidden_size": getattr(model_config, "hidden_size", None), + } + config_dict.update(kwargs) + if not hasattr(model_config, "prediction_heads") and save_id2label: + config_dict["label2id"] = model_config.label2id + if isinstance(adapter_config, AdapterConfig): + config_dict["config"] = adapter_config.to_dict() + else: + config_dict["config"] = adapter_config + config_dict["version"] = __version__ + return config_dict diff --git a/adapters/src/adapters/context.py b/adapters/src/adapters/context.py new file mode 100644 index 00000000..70e685d0 --- /dev/null +++ b/adapters/src/adapters/context.py @@ -0,0 +1,151 @@ +import functools +import threading + +from .composition import parse_composition, parse_heads_from_composition + + +class AdapterSetup: + """ + Represents an adapter setup of a model including active adapters and active heads. This class is intended to be + used as a context manager using the ``with`` statement. The setup defined by the ``AdapterSetup`` context will + override static adapter setups defined in a model (i.e. setups specified via ``active_adapters``). + + Example:: + + with AdapterSetup(Stack("a", "b")): + # will use the adapter stack "a" and "b" outputs = model(**inputs) + + Note that the context manager is thread-local, i.e. it can be used with different setups in a multi-threaded + environment. + """ + + # thread-local storage that holds a stack of active contexts + storage = threading.local() + + def __init__(self, adapter_setup, head_setup=None, ignore_empty: bool = False): + self.adapter_setup = parse_composition(adapter_setup) + if head_setup: + self.head_setup = head_setup + else: + self.head_setup = parse_heads_from_composition(self.adapter_setup) + self._empty = ignore_empty and self.adapter_setup is None and self.head_setup is None + + def __enter__(self): + if not self._empty: + AdapterSetup.get_contexts().append(self) + return self + + def __exit__(self, type, value, traceback): + if not self._empty: + AdapterSetup.get_contexts().pop() + + @classmethod + def get_contexts(cls): + if not hasattr(cls.storage, "contexts"): + cls.storage.contexts = [] + return cls.storage.contexts + + @classmethod + def get_context(cls): + try: + return cls.get_contexts()[-1] + except IndexError: + return None + + @classmethod + def get_context_adapter_setup(cls): + context = cls.get_context() + if context: + return context.adapter_setup + return None + + @classmethod + def get_context_head_setup(cls): + context = cls.get_context() + if context: + return context.head_setup + return None + + +class ForwardContext: + """ + Holds context information during a forward pass through a model. This class should be used via the + ``ForwardContext.wrap()`` method. + + Note that the context is thread-local. + """ + + # thread-local storage that holds a stack of active contexts + storage = threading.local() + + context_attributes = [ + "adapter_gating_scores", + "adapter_fusion_attentions", + "adapter_input_parallelized", + ] + # Additional used attributes not exposed to the user + # - prompt_tokens_length: length of the prompt tokens + + def __init__(self, model, *args, **kwargs): + # If the model has a method ``forward_context()``, use it to create the context. + if hasattr(model, "forward_context"): + model.forward_context(self, *args, **kwargs) + + def __enter__(self): + ForwardContext.get_contexts().append(self) + return self + + def __exit__(self, type, value, traceback): + ForwardContext.get_contexts().pop() + + @classmethod + def wrap(cls, f): + """ + Decorator method that wraps a ``forward()`` function of a model class. + """ + + @functools.wraps(f) + def wrapper_func(self, *args, **kwargs): + if self.adapters_config is not None: + with cls(self, *args, **kwargs) as ctx: + # whether to output the context attributes + output_context = kwargs.pop("output_context", False) + kwargs = { + k: v for k, v in kwargs.items() if k.replace("output_", "") not in cls.context_attributes + } + results = f(self, *args, **kwargs) + + # append output attributes + if isinstance(results, tuple): + for attr in cls.context_attributes: + if getattr(ctx, "output_" + attr, False): + results = results + (dict(getattr(ctx, attr)),) + else: + for attr in cls.context_attributes: + if getattr(ctx, "output_" + attr, False): + results[attr] = dict(getattr(ctx, attr)) + + if output_context: + context_dict = ctx.__dict__ + + if output_context: + return results, context_dict + else: + return results + else: + return f(self, *args, **kwargs) + + return wrapper_func + + @classmethod + def get_contexts(cls): + if not hasattr(cls.storage, "contexts"): + cls.storage.contexts = [] + return cls.storage.contexts + + @classmethod + def get_context(cls): + try: + return cls.get_contexts()[-1] + except IndexError: + return None diff --git a/adapters/src/adapters/head_utils.py b/adapters/src/adapters/head_utils.py new file mode 100644 index 00000000..2144fbe5 --- /dev/null +++ b/adapters/src/adapters/head_utils.py @@ -0,0 +1,747 @@ +import copy +import logging +import re + + +logger = logging.getLogger(__name__) + + +# The "layers" attributes in the configs below map from static head module names to flex head module names. +# In this context, "None" refers to a flex-head layer without weights (e.g. dropout, acts). +STATIC_TO_FLEX_HEAD_MAP = { + # ALBERT + "AlbertForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 1, + "activation_function": None, + "use_pooler": True, + }, + "layers": [None, "classifier"], + }, + "AlbertForMultipleChoice": { + "config": { + "head_type": "multiple_choice", + "layers": 1, + "activation_function": None, + "use_pooler": True, + }, + "layers": [None, "classifier"], + }, + "AlbertForTokenClassification": { + "config": { + "head_type": "tagging", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "classifier"], + }, + "AlbertForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "AlbertForMaskedLM": { + "config": { + "head_type": "masked_lm", + "layers": 2, + "activation_function": "gelu_new", + "layer_norm": True, + "bias": True, + }, + "layers": [ + "predictions.dense", + None, + "predictions.LayerNorm", + "predictions.decoder", + ], + }, + # BEIT + "BeitForImageClassification": { + "config": { + "head_type": "image_classification", + "layers": 1, + "activation_function": None, + "use_pooler": True, + }, + "layers": [None, "classifier"], + }, + # BERT + "BertForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 1, + "activation_function": None, + "use_pooler": True, + }, + "layers": [None, "classifier"], + }, + "BertForMultipleChoice": { + "config": { + "head_type": "multiple_choice", + "layers": 1, + "activation_function": None, + "use_pooler": True, + }, + "layers": [None, "classifier"], + }, + "BertForTokenClassification": { + "config": { + "head_type": "tagging", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "classifier"], + }, + "BertForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "BertForMaskedLM": { + "config": { + "head_type": "masked_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": [ + "cls.predictions.transform.dense", + None, + "cls.predictions.transform.LayerNorm", + "cls.predictions.decoder", + ], + }, + "BertLMHeadModel": { + "config": { + "head_type": "causal_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": [ + "cls.predictions.transform.dense", + None, + "cls.predictions.transform.LayerNorm", + "cls.predictions.decoder", + ], + }, + # BertGeneration + "BertGenerationDecoder": { + "config": { + "head_type": "causal_lm", + "layers": 1, + "activation_function": None, + "bias": True, + }, + "layers": [ + "lm_head.decoder", + ], + }, + # RoBERTa + "RobertaForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 2, + "activation_function": "tanh", + "use_pooler": False, + }, + "layers": [None, "classifier.dense", None, None, "classifier.out_proj"], + }, + "RobertaForMultipleChoice": { + "config": { + "head_type": "multiple_choice", + "layers": 1, + "activation_function": None, + "use_pooler": True, + }, + "layers": [None, "classifier"], + }, + "RobertaForTokenClassification": { + "config": { + "head_type": "tagging", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "classifier"], + }, + "RobertaForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "RobertaForMaskedLM": { + "config": { + "head_type": "masked_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], + }, + "RobertaForCausalLM": { + "config": { + "head_type": "causal_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], + }, + # XLM-RoBERTa + "XLMRobertaForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 2, + "activation_function": "tanh", + "use_pooler": False, + }, + "layers": [None, "classifier.dense", None, None, "classifier.out_proj"], + }, + "XLMRobertaForMultipleChoice": { + "config": { + "head_type": "multiple_choice", + "layers": 1, + "activation_function": None, + "use_pooler": True, + }, + "layers": [None, "classifier"], + }, + "XLMRobertaForTokenClassification": { + "config": { + "head_type": "tagging", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "classifier"], + }, + "XLMRobertaForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "XLMRobertaForMaskedLM": { + "config": { + "head_type": "masked_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], + }, + "XLMRobertaForCausalLM": { + "config": { + "head_type": "causal_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], + }, + # Xmod + "XmodForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 2, + "activation_function": "tanh", + "use_pooler": False, + }, + "layers": [None, "classifier.dense", None, None, "classifier.out_proj"], + }, + "XmodForMultipleChoice": { + "config": { + "head_type": "multiple_choice", + "layers": 1, + "activation_function": None, + "use_pooler": True, + }, + "layers": [None, "classifier"], + }, + "XmodForTokenClassification": { + "config": { + "head_type": "tagging", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "classifier"], + }, + "XmodForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "XmodForMaskedLM": { + "config": { + "head_type": "masked_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], + }, + "XmodForCausalLM": { + "config": { + "head_type": "causal_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], + }, + # BART + "BartForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 2, + "activation_function": "tanh", + }, + "layers": [ + None, + "classification_head.dense", + None, + None, + "classification_head.out_proj", + ], + }, + "BartForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "BartForConditionalGeneration": { + "config": { + "head_type": "seq2seq_lm", + }, + "layers": ["lm_head"], + }, + # MBART + "MBartForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 2, + "activation_function": "tanh", + }, + "layers": [ + None, + "classification_head.dense", + None, + None, + "classification_head.out_proj", + ], + }, + "MBartForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "MBartForConditionalGeneration": { + "config": { + "head_type": "seq2seq_lm", + }, + "layers": ["lm_head"], + }, + # MT5 + "MT5ForConditionalGeneration": { + "config": { + "head_type": "seq2seq_lm", + }, + "layers": ["lm_head"], + }, + "MT5ForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "activation_function": None, + "layers": 1, + }, + "layers": [None, "qa_outputs"], + }, + "MT5ForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 2, + "activation_function": "tanh", + }, + "layers": [ + None, + "classification_head.dense", + None, + None, + "classification_head.out_proj", + ], + }, + # DistilBERT + "DistilBertForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 2, + "activation_function": "relu", + }, + "layers": [None, "pre_classifier", None, None, "classifier"], + }, + "DistilBertForMultipleChoice": { + "config": { + "head_type": "multiple_choice", + "layers": 2, + "activation_function": "relu", + }, + "layers": [None, "pre_classifier", None, None, "classifier"], + }, + "DistilBertForTokenClassification": { + "config": { + "head_type": "tagging", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "classifier"], + }, + "DistilBertForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "DistilBertForMaskedLM": { + "config": { + "head_type": "masked_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": ["vocab_transform", None, "vocab_layer_norm", "vocab_projector"], + }, + # GPT-2 + "GPT2ForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 1, + "activation_function": None, + "bias": False, + }, + "layers": [None, "score"], + }, + "GPT2LMHeadModel": { + "config": { + "head_type": "causal_lm", + }, + "layers": ["lm_head"], + }, + "GPT2ForTokenClassification": { + "config": { + "head_type": "tagging", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "classifier"], + }, + "GPT2ForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + # GPT-J + "GPTJForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 1, + "activation_function": None, + "bias": False, + }, + "layers": [None, "score"], + }, + "GPTJForCausalLM": { + "config": { + "head_type": "causal_lm", + "bias": True, + }, + "layers": ["lm_head"], + }, + "GPTJForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "T5ForConditionalGeneration": { + "config": { + "head_type": "seq2seq_lm", + }, + "layers": ["lm_head"], + }, + "T5ForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "activation_function": None, + "layers": 1, + }, + "layers": [None, "qa_outputs"], + }, + "T5ForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 2, + "activation_function": "tanh", + }, + "layers": [ + None, + "classification_head.dense", + None, + None, + "classification_head.out_proj", + ], + }, + "DebertaV2ForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 2, + "activation_function": "gelu", + "use_pooler": False, + }, + "layers": [None, "pooler.dense", None, None, "classifier"], + }, + "DebertaV2ForTokenClassification": { + "config": { + "head_type": "tagging", + "layers": 1, + "activation_function": None, + }, + "layers": ["dropout", "classifier"], + }, + "DebertaV2ForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "DebertaV2ForMaskedLM": { + "config": { + "head_type": "masked_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": [ + "cls.predictions.transform.dense", + None, + "cls.predictions.transform.LayerNorm", + "cls.predictions.decoder", + ], + }, + "DebertaV2ForMultipleChoice": { + "config": { + "head_type": "multiple_choice", + "layers": 2, + "activation_function": "gelu", + "use_pooler": False, + }, + "layers": [None, "pooler.dense", None, None, "classifier"], + }, + "DebertaForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 2, + "activation_function": "gelu", + "use_pooler": False, + }, + "layers": [None, "pooler.dense", None, None, "classifier"], + }, + "DebertaForTokenClassification": { + "config": { + "head_type": "tagging", + "layers": 1, + "activation_function": None, + }, + "layers": ["dropout", "classifier"], + }, + "DebertaForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "DebertaForMaskedLM": { + "config": { + "head_type": "masked_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": [ + "cls.predictions.transform.dense", + None, + "cls.predictions.transform.LayerNorm", + "cls.predictions.decoder", + ], + }, + # ViT + "ViTForImageClassification": { + "config": { + "head_type": "image_classification", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "classifier"], + }, + # Llama + "LlamaForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 1, + "dropout_prob": 0, + "activation_function": None, + "bias": False, + }, + "layers": [None, "score"], + }, + "LlamaForCausalLM": { + "config": { + "head_type": "causal_lm", + }, + "layers": ["lm_head"], + }, + "ElectraForTokenClassification": { + "config": { + "head_type": "tagging", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "classifier"], + }, + "ElectraForSequenceClassification": { + "config": { + "head_type": "classification", + "layers": 2, + "activation_function": "gelu", + "bias": True, + }, + "layers": [None, "classifier.dense", None, None, "classifier.out_proj"], + }, + "ElectraForQuestionAnswering": { + "config": { + "head_type": "question_answering", + "layers": 1, + "activation_function": None, + }, + "layers": [None, "qa_outputs"], + }, + "ElectraForMultipleChoice": { + "config": { + "head_type": "multiple_choice", + "layers": 2, + "activation_function": "gelu", + "use_pooler": False, + }, + "layers": [None, "sequence_summary.summary", None, None, "classifier"], + }, + "ElectraForMaskedLM": { + "config": { + "head_type": "masked_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": [ + "generator_predictions.dense", + None, + "generator_predictions.LayerNorm", + "generator_lm_head", + ], + }, + "ElectraForCausalLM": { + "config": { + "head_type": "causal_lm", + "layers": 2, + "activation_function": "gelu", + "layer_norm": True, + "bias": True, + }, + "layers": [ + "generator_predictions.dense", + None, + "generator_predictions.LayerNorm", + "generator_lm_head", + ], + }, +} + + +def _regex_list_rename_func(k, rename_list): + for o, n in rename_list: + match = re.match(o, k) + if match: + return n.format(match.group(1)) + return k + + +def get_head_config_and_rename_list(model_class_name, head_name, label2id, num_labels=None): + if label2id is None: + logger.warning( + "No valid map of labels in label2id. Falling back to default (num_labels=2). This may cause errors during" + " loading!" + ) + label2id = {"LABEL_" + str(i): i for i in range(2)} + # num_labels is optional (e.g. for regression, when no map given) + num_labels = num_labels or len(label2id) + data = STATIC_TO_FLEX_HEAD_MAP[model_class_name] + # copy config to keep original mapping untouched + config = copy.deepcopy(data["config"]) + if config["head_type"] == "multiple_choice": + config["num_choices"] = num_labels + config["label2id"] = label2id + elif config["head_type"] not in ["causal_lm", "masked_lm", "seq2seq_lm"]: + config["num_labels"] = num_labels + config["label2id"] = label2id + # rename + rename_list = [] + i = 0 + for name in data["layers"]: + if name is not None: + escaped_name = re.escape(name) + rename_list.append((rf"{escaped_name}\.(\S+)", f"heads.{head_name}.{i}.{{0}}")) + i += 1 + rename_func = lambda k, rename_list=rename_list: _regex_list_rename_func(k, rename_list) + + return config, rename_func diff --git a/adapters/src/adapters/heads/__init__.py b/adapters/src/adapters/heads/__init__.py new file mode 100644 index 00000000..a02c87fb --- /dev/null +++ b/adapters/src/adapters/heads/__init__.py @@ -0,0 +1,5 @@ +# flake8: noqa +from .base import * +from .dependency_parsing import * +from .language_modeling import BertStyleMaskedLMHead, CausalLMHead, Seq2SeqLMHead +from .model_mixin import ModelWithFlexibleHeadsAdaptersMixin diff --git a/adapters/src/adapters/heads/base.py b/adapters/src/adapters/heads/base.py new file mode 100644 index 00000000..3cfe9564 --- /dev/null +++ b/adapters/src/adapters/heads/base.py @@ -0,0 +1,513 @@ +import logging +from dataclasses import dataclass +from typing import List, Optional + +import torch +from torch import nn +from torch.nn import BCEWithLogitsLoss, CrossEntropyLoss, MSELoss + +from transformers.modeling_outputs import ( + ImageClassifierOutput, + MultipleChoiceModelOutput, + QuestionAnsweringModelOutput, + Seq2SeqModelOutput, + Seq2SeqQuestionAnsweringModelOutput, + Seq2SeqSequenceClassifierOutput, + SequenceClassifierOutput, + TokenClassifierOutput, +) +from transformers.utils import ModelOutput + +from ..composition import adjust_tensors_for_parallel +from ..methods.modeling import Activation_Function_Class + + +logger = logging.getLogger(__name__) + + +@dataclass +class MultiHeadOutput(ModelOutput): + head_outputs: List[ModelOutput] = None + loss: Optional[torch.FloatTensor] = None + + @property + def logits(self): + return torch.vstack([outputs["logits"] for outputs in self.head_outputs]) + + def __getitem__(self, k): + # with number indices the head output at that position is accessed + # e.g output[1] is equivalent to output.head_outputs[1] + if isinstance(k, int): + return self.head_outputs[k] + # with strings the attribute in the underlying dict can be adressed + # e.g output["loss"] is equivalent to output.loss + else: + return super().__getitem__(k) + + def __setitem__(self, k, v): + if isinstance(k, int): + self.head_outputs[k] = v + else: + return super().__setitem__(k, v) + + def __iter__(self): + # iterates over the head outputs + return iter(self.head_outputs) + + def __len__(self): + return len(self.head_outputs) + + +# Let this class inherit from nn.Sequential to provide iterable access as before +class PredictionHead(nn.Sequential): + def __init__(self, name): + super().__init__() + self.config = {} + self.name = name + + def build(self, model): + model_config = model.config + pred_head = [] + if "dropout_prob" in self.config and self.config["dropout_prob"] is not None: + dropout_prob = self.config["dropout_prob"] + elif hasattr(model_config, "classifier_dropout") and model_config.classifier_dropout is not None: + dropout_prob = model_config.classifier_dropout + else: + dropout_prob = model_config.hidden_dropout_prob + bias = self.config.get("bias", True) + for l_id in range(self.config["layers"]): + pred_head.append(nn.Dropout(dropout_prob)) + if l_id < self.config["layers"] - 1: + pred_head.append(nn.Linear(model_config.hidden_size, model_config.hidden_size)) + if self.config["activation_function"]: + pred_head.append(Activation_Function_Class(self.config["activation_function"])) + else: + if "num_labels" in self.config: + pred_head.append(nn.Linear(model_config.hidden_size, self.config["num_labels"], bias=bias)) + elif "num_choices" in self.config: # used for multiple_choice head + pred_head.append(nn.Linear(model_config.hidden_size, 1, bias=bias)) + else: + pred_head.append(nn.Linear(model_config.hidden_size, model_config.hidden_size, bias=bias)) + if self.config["activation_function"]: + pred_head.append(Activation_Function_Class(self.config["activation_function"])) + for i, module in enumerate(pred_head): + self.add_module(str(i), module) + + # We need to import the current value of _init_weights at each execution to determine if weights init is disabled. + from transformers.modeling_utils import _init_weights + + if _init_weights: + self.apply(model._init_weights) + self.train(model.training) # make sure training mode is consistent + + def get_output_embeddings(self): + return None # override for heads with output embeddings + + def get_label_names(self): + return ["labels"] + + def _get_cls_output(self, outputs, **kwargs): + if self.config["use_pooler"]: + cls_output = kwargs.pop("pooled_output") + elif kwargs.get("get_cls_from_eos_tokens", False): + x = outputs[0] # last hidden state + eos_mask = kwargs.get("eos_mask") + (eos_mask,) = adjust_tensors_for_parallel(x, eos_mask) + if len(torch.unique(eos_mask.sum(1))) > 1: + raise ValueError("All examples must have the same number of tokens.") + cls_output = x[eos_mask, :].view(x.size(0), -1, x.size(-1))[:, -1, :] + else: + cls_output = outputs[0][:, 0] + + return cls_output + + +class ClassificationHead(PredictionHead): + def __init__( + self, + model, + head_name, + num_labels=2, + layers=2, + activation_function="tanh", + id2label=None, + use_pooler=False, + bias=True, + dropout_prob=None, + ): + super().__init__(head_name) + self.config = { + "head_type": "classification", + "num_labels": num_labels, + "layers": layers, + "activation_function": activation_function, + "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, + "use_pooler": use_pooler, + "bias": bias, + "dropout_prob": dropout_prob, + } + self.build(model) + + def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): + if cls_output is None: + cls_output = self._get_cls_output(outputs, **kwargs) + logits = super().forward(cls_output) + loss = None + labels = kwargs.pop("labels", None) + if labels is not None: + if self.config["num_labels"] == 1: + # We are doing regression + loss_fct = MSELoss() + loss = loss_fct(logits.view(-1), labels.view(-1)) + else: + loss_fct = CrossEntropyLoss() + loss = loss_fct(logits.view(-1, self.config["num_labels"]), labels.view(-1)) + + if return_dict: + if isinstance(outputs, Seq2SeqModelOutput): + return Seq2SeqSequenceClassifierOutput( + loss=loss, + logits=logits, + past_key_values=outputs.past_key_values, + decoder_hidden_states=outputs.decoder_hidden_states, + decoder_attentions=outputs.decoder_attentions, + cross_attentions=outputs.cross_attentions, + encoder_last_hidden_state=outputs.encoder_last_hidden_state, + encoder_hidden_states=outputs.encoder_hidden_states, + encoder_attentions=outputs.encoder_attentions, + ) + else: + return SequenceClassifierOutput( + loss=loss, + logits=logits, + hidden_states=outputs.hidden_states, + attentions=outputs.attentions, + ) + else: + outputs = (logits,) + outputs[1:] + if labels is not None: + outputs = (loss,) + outputs + return outputs + + +class MultiLabelClassificationHead(PredictionHead): + def __init__( + self, + model, + head_name, + num_labels=2, + layers=2, + activation_function="tanh", + id2label=None, + use_pooler=False, + bias=True, + dropout_prob=None, + ): + super().__init__(head_name) + self.config = { + "head_type": "multilabel_classification", + "num_labels": num_labels, + "layers": layers, + "activation_function": activation_function, + "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, + "use_pooler": use_pooler, + "bias": bias, + "dropout_prob": dropout_prob, + } + self.build(model) + + def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): + if cls_output is None: + cls_output = self._get_cls_output(outputs, **kwargs) + logits = super().forward(cls_output) + loss = None + labels = kwargs.pop("labels", None) + if labels is not None: + loss_fct = BCEWithLogitsLoss() + if labels.dtype != torch.float32: + labels = labels.float() + loss = loss_fct(logits, labels) + + if return_dict: + if isinstance(outputs, Seq2SeqModelOutput): + return Seq2SeqSequenceClassifierOutput( + loss=loss, + logits=logits, + past_key_values=outputs.past_key_values, + decoder_hidden_states=outputs.decoder_hidden_states, + decoder_attentions=outputs.decoder_attentions, + cross_attentions=outputs.cross_attentions, + encoder_last_hidden_state=outputs.encoder_last_hidden_state, + encoder_hidden_states=outputs.encoder_hidden_states, + encoder_attentions=outputs.encoder_attentions, + ) + else: + return SequenceClassifierOutput( + loss=loss, + logits=logits, + hidden_states=outputs.hidden_states, + attentions=outputs.attentions, + ) + else: + outputs = (logits,) + outputs[1:] + if labels is not None: + outputs = (loss,) + outputs + return outputs + + +class MultipleChoiceHead(PredictionHead): + def __init__( + self, + model, + head_name, + num_choices=2, + layers=2, + activation_function="tanh", + id2label=None, + use_pooler=False, + dropout_prob=None, + ): + super().__init__(head_name) + self.config = { + "head_type": "multiple_choice", + "num_choices": num_choices, + "layers": layers, + "activation_function": activation_function, + "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, + "use_pooler": use_pooler, + "dropout_prob": dropout_prob, + } + self.build(model) + + def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=None, **kwargs): + if cls_output is None: + cls_output = self._get_cls_output(outputs, **kwargs) + logits = super().forward(cls_output) + logits = logits.view(-1, self.config["num_choices"]) + loss = None + labels = kwargs.pop("labels", None) + if labels is not None: + loss_fct = CrossEntropyLoss() + loss = loss_fct(logits, labels) + + if return_dict: + return MultipleChoiceModelOutput( + loss=loss, + logits=logits, + hidden_states=outputs.hidden_states, + attentions=outputs.attentions, + ) + else: + outputs = (logits,) + outputs[1:] + if labels is not None: + outputs = (loss,) + outputs + return outputs + + +class TaggingHead(PredictionHead): + def __init__( + self, + model, + head_name, + num_labels=2, + layers=1, + activation_function="tanh", + id2label=None, + dropout_prob=None, + ): + super().__init__(head_name) + self.config = { + "head_type": "tagging", + "num_labels": num_labels, + "layers": layers, + "activation_function": activation_function, + "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, + "dropout_prob": dropout_prob, + } + self.build(model) + + def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): + logits = super().forward(outputs[0]) + loss = None + + labels = kwargs.pop("labels", None) + if labels is not None: + loss_fct = CrossEntropyLoss() + # adjust labels for prompt tuning + if kwargs.get("prompt_tokens_length", 0) > 0: + prompt_length = kwargs.get("prompt_tokens_length") + prompt_labels = torch.full( + (labels.shape[0], prompt_length), loss_fct.ignore_index, dtype=torch.long, device=labels.device + ) + labels = torch.cat((prompt_labels, labels), dim=-1) + if attention_mask is not None: + attention_mask = torch.cat( + (torch.ones_like(prompt_labels, dtype=torch.long, device=labels.device), attention_mask), + dim=-1, + ) + + # Only keep active parts of the loss + if attention_mask is not None: + active_loss = attention_mask.view(-1) == 1 + active_logits = logits.view(-1, self.config["num_labels"]) + active_labels = torch.where( + active_loss, labels.view(-1), torch.tensor(loss_fct.ignore_index).type_as(labels) + ) + loss = loss_fct(active_logits, active_labels) + else: + loss = loss_fct(logits.view(-1, self.config["num_labels"]), labels.view(-1)) + + if return_dict: + return TokenClassifierOutput( + loss=loss, + logits=logits, + hidden_states=outputs.hidden_states, + attentions=outputs.attentions, + ) + else: + outputs = (logits,) + outputs[1:] + if labels is not None: + outputs = (loss,) + outputs + return outputs + + +class QuestionAnsweringHead(PredictionHead): + def __init__( + self, + model, + head_name, + num_labels=2, + layers=1, + activation_function="tanh", + id2label=None, + dropout_prob=None, + ): + super().__init__(head_name) + self.config = { + "head_type": "question_answering", + "num_labels": num_labels, + "layers": layers, + "activation_function": activation_function, + "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, + "dropout_prob": dropout_prob, + } + self.build(model) + + def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): + sequence_output = outputs[0] + logits = super().forward(sequence_output) + start_logits, end_logits = logits.split(1, dim=-1) + start_logits = start_logits.squeeze(-1) + end_logits = end_logits.squeeze(-1) + + start_positions = kwargs.pop("start_positions", None) + end_positions = kwargs.pop("end_positions", None) + total_loss = None + if start_positions is not None and end_positions is not None: + if len(start_positions.size()) > 1: + start_positions = start_positions.squeeze(-1) + if len(end_positions.size()) > 1: + end_positions = end_positions.squeeze(-1) + # sometimes the start/end positions are outside our model inputs, we ignore these terms + ignored_index = start_logits.size(1) + start_positions.clamp_(0, ignored_index) + end_positions.clamp_(0, ignored_index) + + loss_fct = CrossEntropyLoss(ignore_index=ignored_index) + start_loss = loss_fct(start_logits, start_positions) + end_loss = loss_fct(end_logits, end_positions) + total_loss = (start_loss + end_loss) / 2 + + if return_dict: + if isinstance(outputs, Seq2SeqModelOutput): + return Seq2SeqQuestionAnsweringModelOutput( + loss=total_loss, + start_logits=start_logits, + end_logits=end_logits, + past_key_values=outputs.past_key_values, + decoder_hidden_states=outputs.decoder_hidden_states, + decoder_attentions=outputs.decoder_attentions, + cross_attentions=outputs.cross_attentions, + encoder_last_hidden_state=outputs.encoder_last_hidden_state, + encoder_hidden_states=outputs.encoder_hidden_states, + encoder_attentions=outputs.encoder_attentions, + ) + else: + return QuestionAnsweringModelOutput( + loss=total_loss, + start_logits=start_logits, + end_logits=end_logits, + hidden_states=outputs.hidden_states, + attentions=outputs.attentions, + ) + else: + outputs = ( + start_logits, + end_logits, + ) + outputs[1:] + if total_loss is not None: + outputs = (total_loss,) + outputs + return outputs + + def get_label_names(self): + return ["start_positions", "end_positions"] + + +class ImageClassificationHead(PredictionHead): + def __init__( + self, + model, + head_name, + num_labels=2, + layers=2, + activation_function="tanh", + multilabel=False, + id2label=None, + use_pooler=False, + bias=True, + dropout_prob=None, + ): + super().__init__(head_name) + self.config = { + "head_type": "image_classification", + "num_labels": num_labels, + "layers": layers, + "activation_function": activation_function, + "multilabel": multilabel, + "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, + "use_pooler": use_pooler, + "bias": bias, + "dropout_prob": dropout_prob, + } + self.build(model) + + def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): + if cls_output is None: + cls_output = self._get_cls_output(outputs, **kwargs) + logits = super().forward(cls_output) + loss = None + labels = kwargs.pop("labels", None) + if labels is not None: + if self.config["num_labels"] == 1: + # We are doing regression + loss_fct = MSELoss() + loss = loss_fct(logits.view(-1), labels.view(-1)) + elif self.config["multilabel"]: + loss_fct = BCEWithLogitsLoss() + loss = loss_fct(logits, labels) + else: + loss_fct = CrossEntropyLoss() + loss = loss_fct(logits.view(-1, self.config["num_labels"]), labels.view(-1)) + + if return_dict: + return ImageClassifierOutput( + loss=loss, + logits=logits, + hidden_states=outputs.hidden_states, + attentions=outputs.attentions, + ) + else: + outputs = (logits,) + outputs[1:] + if labels is not None: + outputs = (loss,) + outputs + return outputs diff --git a/adapters/src/adapters/heads/dependency_parsing.py b/adapters/src/adapters/heads/dependency_parsing.py new file mode 100644 index 00000000..2b91d529 --- /dev/null +++ b/adapters/src/adapters/heads/dependency_parsing.py @@ -0,0 +1,183 @@ +""" +Code taken and modified from: https://github.com/Adapter-Hub/hgiyt. Credits: "How Good is Your Tokenizer? On the +Monolingual Performance of Multilingual Language Models" (Rust et al., 2021) https://arxiv.org/abs/2012.15613 +""" +from dataclasses import dataclass +from typing import Optional, Tuple + +import torch +from torch import nn +from torch.nn import CrossEntropyLoss + +from transformers.utils import ModelOutput + +from .base import PredictionHead + + +@dataclass +class DependencyParsingOutput(ModelOutput): + loss: Optional[torch.FloatTensor] = None + rel_preds: torch.FloatTensor = None + arc_preds: torch.FloatTensor = None + hidden_states: Optional[Tuple[torch.FloatTensor]] = None + attentions: Optional[Tuple[torch.FloatTensor]] = None + + +# Credit: +# Class taken from https://github.com/yzhangcs/biaffine-parser +class Biaffine(nn.Module): + def __init__(self, n_in, n_out=1, bias_x=True, bias_y=True): + super(Biaffine, self).__init__() + + self.n_in = n_in + self.n_out = n_out + self.bias_x = bias_x + self.bias_y = bias_y + self.weight = nn.Parameter(torch.Tensor(n_out, n_in + bias_x, n_in + bias_y)) + self.init_weights() + + def extra_repr(self): + s = f"n_in={self.n_in}, n_out={self.n_out}" + if self.bias_x: + s += f", bias_x={self.bias_x}" + if self.bias_y: + s += f", bias_y={self.bias_y}" + + return s + + def init_weights(self): + nn.init.zeros_(self.weight) + + def forward(self, x, y): + if self.bias_x: + x = torch.cat((x, torch.ones_like(x[..., :1])), -1) + if self.bias_y: + y = torch.cat((y, torch.ones_like(y[..., :1])), -1) + + # [batch_size, n_out, seq_len, seq_len] + s = torch.einsum("bxi,oij,byj->boxy", x, self.weight, y) + return s + + +class BiaffineParsingHead(PredictionHead): + """ + Credit: G. Glavaš & I. Vulić Based on paper "Is Supervised Syntactic Parsing Beneficial for Language Understanding? + An Empirical Investigation" (https://arxiv.org/pdf/2008.06788.pdf) + """ + + def __init__(self, model, head_name, num_labels=2, id2label=None): + super().__init__(head_name) + self.config = { + "head_type": "dependency_parsing", + "num_labels": num_labels, + "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, + } + self.model_config = model.config + self.build(model) + + def build(self, model): + self.biaffine_arcs = Biaffine(n_in=model.config.hidden_size, bias_x=True, bias_y=False) + self.biaffine_rels = Biaffine( + n_in=model.config.hidden_size, n_out=self.config["num_labels"], bias_x=True, bias_y=True + ) + + self.dropout = nn.Dropout(model.config.hidden_dropout_prob) + + self.loss_fn = CrossEntropyLoss() + + self.train(model.training) # make sure training mode is consistent + + def forward( + self, + outputs, + cls_output=None, + attention_mask=None, + return_dict=False, + word_starts=None, + labels_arcs=None, + labels_rels=None, + **kwargs + ): + outs = self.dropout(outputs[0]) + word_outputs_deps = self._merge_subword_tokens(outs, word_starts) + + # adding the CLS representation as the representation for the "root" parse token + # cls_output = self.pooler_activation(self.pooler_dense(outs[:, 0])) + cls_output = outs[:, 0] + word_outputs_heads = torch.cat([cls_output.unsqueeze(1), word_outputs_deps], dim=1) + + arc_preds = self.biaffine_arcs(word_outputs_deps, word_outputs_heads) + arc_preds = arc_preds.squeeze() + if len(arc_preds.shape) == 2: + arc_preds = arc_preds.unsqueeze(0) + + rel_preds = self.biaffine_rels(word_outputs_deps, word_outputs_heads) + rel_preds = rel_preds.permute(0, 2, 3, 1) + + loss = self._get_loss(arc_preds, rel_preds, labels_arcs, labels_rels, self.loss_fn) + + if return_dict: + return DependencyParsingOutput( + loss=loss, + rel_preds=rel_preds, + arc_preds=arc_preds, + hidden_states=outputs.hidden_states, + attentions=outputs.attentions, + ) + else: + outputs = (rel_preds, arc_preds) + if loss is not None: + outputs = (loss,) + outputs + return outputs + + def _merge_subword_tokens(self, subword_outputs, word_starts): + instances = [] + max_seq_length = subword_outputs.shape[1] + + # handling instance by instance + for i in range(len(subword_outputs)): + subword_vecs = subword_outputs[i] + word_vecs = [] + starts = word_starts[i] + mask = starts.ne(self.model_config.pad_token_id) + starts = starts[mask] + for j in range(len(starts) - 1): + if starts[j + 1] <= 0: + break + + start = starts[j] + end = starts[j + 1] + vecs_range = subword_vecs[start:end] + word_vecs.append(torch.mean(vecs_range, 0).unsqueeze(0)) + + instances.append(word_vecs) + + t_insts = [] + zero_tens = torch.zeros(self.model_config.hidden_size).unsqueeze(0) + zero_tens = zero_tens.to("cuda" if torch.cuda.is_available() else "cpu") + + for inst in instances: + if len(inst) < max_seq_length: + for i in range(max_seq_length - len(inst)): + inst.append(zero_tens) + t_insts.append(torch.cat(inst, dim=0).unsqueeze(0)) + + w_tens = torch.cat(t_insts, dim=0) + return w_tens + + def _get_loss(self, arc_preds, rel_preds, labels_arc, labels_rel, loss_fn): + if labels_arc is None or labels_rel is None: + return None + if len(arc_preds.shape) == 2: + arc_preds = arc_preds.unsqueeze(0) + + mask = labels_arc.ne(self.model_config.pad_token_id) + arc_scores, arcs = arc_preds[mask], labels_arc[mask] + loss = loss_fn(arc_scores, arcs) + + rel_scores, rels = rel_preds[mask], labels_rel[mask] + rel_scores = rel_scores[torch.arange(len(arcs)), arcs] + rel_loss = loss_fn(rel_scores, rels) + loss += rel_loss + + return loss diff --git a/adapters/src/adapters/heads/language_modeling.py b/adapters/src/adapters/heads/language_modeling.py new file mode 100644 index 00000000..bf91e5be --- /dev/null +++ b/adapters/src/adapters/heads/language_modeling.py @@ -0,0 +1,216 @@ +import torch +import torch.nn as nn + +from transformers.modeling_outputs import CausalLMOutput, CausalLMOutputWithPast, MaskedLMOutput, Seq2SeqLMOutput + +from ..methods.modeling import Activation_Function_Class +from .base import PredictionHead + + +class CausalLMHead(PredictionHead): + def __init__( + self, + model, + head_name, + vocab_size=None, + embedding_size=None, + layers=1, + activation_function=None, + layer_norm=False, + bias=False, + shift_labels=True, + dropout_prob=None, + ): + super(CausalLMHead, self).__init__(head_name) + self.config = { + "head_type": "causal_lm", + "vocab_size": vocab_size or model.config.vocab_size, + "embedding_size": embedding_size or getattr(model.config, "embedding_size", model.config.hidden_size), + "layers": layers, + "activation_function": activation_function, + "layer_norm": layer_norm, + "bias": bias, + "shift_labels": shift_labels, + "label2id": None, + "dropout_prob": dropout_prob, + } + self.build(model) + + def build(self, model): + model_config = model.config + # Additional FC layers + pred_head = [] + with_layer_norm = self.config.get("layer_norm", False) + embedding_size = self.config.get("embedding_size", model_config.hidden_size) + + for l_id in range(self.config["layers"] - 1): + if l_id == 0: + pred_head.append(nn.Linear(model_config.hidden_size, embedding_size)) + else: + pred_head.append(nn.Linear(embedding_size, embedding_size)) + if self.config["activation_function"]: + pred_head.append(Activation_Function_Class(self.config["activation_function"])) + if with_layer_norm: + eps = getattr(model_config, "layer_norm_eps", 1e-12) + pred_head.append(nn.LayerNorm(embedding_size, eps=eps)) + + for i, module in enumerate(pred_head): + self.add_module(str(i), module) + + # Final embedding layer + self.add_module( + str(len(pred_head)), + nn.Linear( + embedding_size, + self.config["vocab_size"], + bias=self.config["bias"], + ), + ) + + self.apply(model._init_weights) + self.train(model.training) # make sure training mode is consistent + + def get_output_embeddings(self): + # The last child is our embedding layer + return self._modules[next(reversed(self._modules))] + + def set_output_embeddings(self, new_embeddings): + # The last child is our embedding layer + self._modules[next(reversed(self._modules))] = new_embeddings + + @staticmethod + def _create_model_output(loss, logits, base_outputs): + if "past_key_values" in base_outputs: + return CausalLMOutputWithPast( + loss=loss, + logits=logits, + hidden_states=base_outputs.hidden_states, + attentions=base_outputs.attentions, + past_key_values=base_outputs.past_key_values, + ) + else: + return CausalLMOutput( + loss=loss, + logits=logits, + hidden_states=base_outputs.hidden_states, + attentions=base_outputs.attentions, + ) + + def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): + # First, pass through all layers except the last embedding layer + seq_outputs = outputs[0] + for i in range(len(self) - 1): + seq_outputs = self[i](seq_outputs) + + # Now, pass through an invertible adapter if available + inv_adapter = kwargs.pop("invertible_adapter", None) + if inv_adapter is not None: + seq_outputs = inv_adapter(seq_outputs, rev=True) + + # Finally, pass through the last embedding layer + lm_logits = self[len(self) - 1](seq_outputs) + + loss = None + labels = kwargs.pop("labels", None) + if labels is not None: + loss_fct = nn.CrossEntropyLoss() + if self.config["shift_labels"]: + logits_for_loss = lm_logits[..., :-1, :].contiguous() + labels = labels[..., 1:].contiguous() + else: + logits_for_loss = lm_logits + + # adjust labels for prompt tuning + if kwargs.get("prompt_tokens_length", 0) > 0: + prompt_length = kwargs.get("prompt_tokens_length") + prompt_labels = torch.full( + (labels.shape[0], prompt_length), loss_fct.ignore_index, dtype=torch.long, device=labels.device + ) + labels = torch.cat((prompt_labels, labels), dim=-1) + + loss = loss_fct(logits_for_loss.view(-1, self.config["vocab_size"]), labels.view(-1)) + + if return_dict: + return self._create_model_output(loss, lm_logits, outputs) + else: + outputs = (lm_logits,) + outputs[1:] + if loss is not None: + outputs = (loss,) + outputs + return outputs + + +class Seq2SeqLMHead(CausalLMHead): + def __init__( + self, + model, + head_name, + vocab_size=None, + layers=1, + activation_function=None, + layer_norm=False, + bias=False, + shift_labels=False, + ): + super(CausalLMHead, self).__init__(head_name) + self.config = { + "head_type": "seq2seq_lm", + "vocab_size": vocab_size or model.config.vocab_size, + "layers": layers, + "activation_function": activation_function, + "layer_norm": layer_norm, + "bias": bias, + "shift_labels": shift_labels, + "label2id": None, + } + self.build(model) + + @staticmethod + def _create_model_output(loss, logits, base_outputs): + return Seq2SeqLMOutput( + loss=loss, + logits=logits, + past_key_values=base_outputs.past_key_values, + decoder_hidden_states=base_outputs.decoder_hidden_states, + decoder_attentions=base_outputs.decoder_attentions, + cross_attentions=base_outputs.cross_attentions, + encoder_last_hidden_state=base_outputs.encoder_last_hidden_state, + encoder_hidden_states=base_outputs.encoder_hidden_states, + encoder_attentions=base_outputs.encoder_attentions, + ) + + +class BertStyleMaskedLMHead(CausalLMHead): + def __init__( + self, + model, + head_name, + vocab_size=None, + embedding_size=None, + layers=2, + activation_function="gelu", + layer_norm=True, + bias=True, + shift_labels=False, + ): + super(CausalLMHead, self).__init__(head_name) + self.config = { + "head_type": "masked_lm", + "vocab_size": vocab_size or model.config.vocab_size, + "embedding_size": embedding_size or getattr(model.config, "embedding_size", model.config.hidden_size), + "layers": layers, + "activation_function": activation_function, + "layer_norm": layer_norm, + "bias": bias, + "shift_labels": shift_labels, + "label2id": None, + } + self.build(model) + + @staticmethod + def _create_model_output(loss, logits, base_outputs): + return MaskedLMOutput( + loss=loss, + logits=logits, + hidden_states=base_outputs.hidden_states, + attentions=base_outputs.attentions, + ) diff --git a/adapters/src/adapters/heads/model_mixin.py b/adapters/src/adapters/heads/model_mixin.py new file mode 100644 index 00000000..4e0dfde8 --- /dev/null +++ b/adapters/src/adapters/heads/model_mixin.py @@ -0,0 +1,727 @@ +import functools +import logging +from typing import List, Optional, Union + +import torch +from torch import nn + +from transformers.utils import ModelOutput + +from ..composition import AdapterCompositionBlock, BatchSplit, Parallel, parse_heads_from_composition +from ..context import AdapterSetup, ForwardContext +from ..loading import PredictionHeadLoader +from ..model_mixin import ModelWithHeadsAdaptersMixin +from .base import ( + ClassificationHead, + ImageClassificationHead, + MultiHeadOutput, + MultiLabelClassificationHead, + MultipleChoiceHead, + PredictionHead, + QuestionAnsweringHead, + TaggingHead, +) +from .dependency_parsing import BiaffineParsingHead +from .language_modeling import BertStyleMaskedLMHead, CausalLMHead, Seq2SeqLMHead + + +logger = logging.getLogger(__name__) + + +MODEL_HEAD_MAP = { + "classification": ClassificationHead, + "multilabel_classification": MultiLabelClassificationHead, + "tagging": TaggingHead, + "multiple_choice": MultipleChoiceHead, + "question_answering": QuestionAnsweringHead, + "dependency_parsing": BiaffineParsingHead, + "masked_lm": BertStyleMaskedLMHead, + "causal_lm": CausalLMHead, + "seq2seq_lm": Seq2SeqLMHead, + "image_classification": ImageClassificationHead, +} + + +class ModelWithFlexibleHeadsAdaptersMixin(ModelWithHeadsAdaptersMixin): + """ + Adds flexible prediction heads to a model class. Implemented by the XModelWithHeads classes. + """ + + head_types: list = [] + use_pooler: bool = False + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._convert_to_flex_head = True + if not hasattr(self.config, "custom_heads"): + self.config.custom_heads = {} + self._active_heads = [] + + def head_type(head_type_str: str): + """ + Checks which head type the decorated function belongs to and raises an error if the model does not support the + head type. + """ + + def decorator(f): + @functools.wraps(f) + def wrapper(self, *args, **kwargs): + if head_type_str in self.head_types: + return f(self, *args, **kwargs) + else: + raise ValueError( + f"This model of type '{self.config.model_type}' does not support head type '{head_type_str}'." + ) + + return wrapper + + return decorator + + def _init_head_modules(self): + # HACK connect adapters_config to base model -> this should move to a better place + self.adapters_config = self.base_model.adapters_config + # this dict is _only_ used for saving & reloading the configs and should not be modified otherwise + if not hasattr(self.config, "prediction_heads"): + self.config.prediction_heads = {} + self.heads = nn.ModuleDict(dict()) + # add modules for heads in config + for head_name, config in self.config.prediction_heads.items(): + self.add_prediction_head_from_config(head_name, config) + + # The following methods are required for handling LM heads + + def get_output_embeddings(self) -> Union[nn.Module, List[nn.Module]]: + # Only gets the output embeddings for the currently active head + embeddings = [] + for head_name in self._active_heads: + if head_name in self.heads: + head = self.heads[head_name] + output_embeddings = head.get_output_embeddings() + embeddings.append(output_embeddings) + + if len(embeddings) == 1: + return embeddings[0] + elif len(embeddings) == 0 or all([e is None for e in embeddings]): + return None + else: + return embeddings + + def set_output_embeddings(self, new_embeddings: Union[nn.Module, List[nn.Module]]): + # Only sets the output embeddings for the currently active head + if not isinstance(new_embeddings, list): + new_embeddings = [new_embeddings] * len(self._active_heads) + for head_name, emb in zip(self._active_heads, new_embeddings): + if head_name in self.heads: + head = self.heads[head_name] + head.set_output_embeddings(emb) + + def tie_weights(self): + """ + Tie the weights between the input embeddings and the output embeddings. + + If the :obj:`torchscript` flag is set in the configuration, can't handle parameter sharing so we are cloning + the weights instead. + """ + for head_name, head in self.heads.items(): + output_embeddings = head.get_output_embeddings() + if output_embeddings is not None and self.config.tie_word_embeddings: + self._tie_or_clone_weights(output_embeddings, self.get_input_embeddings()) + + if self.config.is_encoder_decoder and self.config.tie_encoder_decoder: + if hasattr(self, self.base_model_prefix): + self = getattr(self, self.base_model_prefix) + self._tie_encoder_decoder_weights(self.encoder, self.decoder, self.base_model_prefix) + + def _resize_token_embeddings(self, new_num_tokens, pad_to_multiple_of=None): + old_embeddings = self.get_input_embeddings() + new_embeddings = self._get_resized_embeddings(old_embeddings, new_num_tokens, pad_to_multiple_of) + self.set_input_embeddings(new_embeddings) + + # if word embeddings are not tied, make sure that lm head is resized as well + if not self.config.tie_word_embeddings: + for head in self.heads.values(): + old_lm_head = self.get_output_embeddings() + if old_lm_head is not None: + new_lm_head = self._get_resized_lm_head(old_lm_head, new_num_tokens) + self.set_output_embeddings(new_lm_head) + + return self.get_input_embeddings() + + # Methods for managing prediction heads + + def add_prediction_head_from_config( + self, + head_name: str, + config: dict, + overwrite_ok: bool = False, + set_active: bool = True, + ): + head_type = config.pop("head_type") + # handle cases when id2label, label2id or both are available + id2label = config.pop("id2label", None) + if id2label is None: + label2id = config.pop("label2id", None) + if label2id is not None: + id2label = {id_: label for label, id_ in label2id.items()} + else: + # don't pass label2id to head_class + config.pop("label2id", None) + # re-add id2label map to config + if id2label is not None: + config["id2label"] = id2label + + if head_type in self.head_types: + head_class = MODEL_HEAD_MAP[head_type] + head = head_class(self, head_name, **config) + self.add_prediction_head(head, overwrite_ok=overwrite_ok, set_active=set_active) + elif head_type in self.config.custom_heads: + # we have to re-add the head type for custom heads + self.add_custom_head(head_type, head_name, overwrite_ok=overwrite_ok, **config) + else: + raise AttributeError( + "Given head type '{}' is not known. Please register this head type before loading the model".format( + head_type + ) + ) + + def get_prediction_heads_config(self): + heads = {} + for head_name, head in self.heads.items(): + heads[head_name] = head.config + return heads + + def register_custom_head(self, identifier, head): + self.config.custom_heads[identifier] = head + + @property + def active_head(self) -> Union[str, List[str]]: + """ + The active prediction head configuration of this model. Can be either the name of a single available head + (string) or a list of multiple available heads. In case of a list of heads, the same base model is forwarded + through all specified heads. + + Returns: + Union[str, List[str]]: A string or a list of strings describing the active head configuration. + """ + if not self._active_heads: + return None + elif len(self._active_heads) == 1: + return self._active_heads[0] + else: + return self._active_heads + + @active_head.setter + def active_head(self, head_name_or_list: Union[str, List[str], AdapterCompositionBlock]): + if isinstance(head_name_or_list, str): + if head_name_or_list and head_name_or_list not in self.heads: + raise ValueError(f"Model does not contain a head with name '{head_name_or_list}'.") + self._active_heads = [head_name_or_list] if head_name_or_list else None + # If we set a single head, also switch the label mapping. For multiple head, that doesn't make sense? + if head_name_or_list: + self.config.label2id = self.heads[head_name_or_list].config.get("label2id", None) + self.config.id2label = self.get_labels_dict(head_name_or_list) + else: + self._active_heads = head_name_or_list + + def set_active_adapters( + self, adapter_setup: Union[list, AdapterCompositionBlock], skip_layers: Optional[List[int]] = None + ): + """ + Sets the adapter modules to be used by default in every forward pass. This setting can be overriden by passing + the `adapter_names` parameter in the `foward()` pass. If no adapter with the given name is found, no module of + the respective type will be activated. In case the calling model class supports named prediction heads, this + method will attempt to activate a prediction head with the name of the last adapter in the list of passed + adapter names. + + Args: + adapter_setup (list): + The list of adapters to be activated by default. Can be a fusion or stacking configuration. + """ + self.base_model.set_active_adapters(adapter_setup, skip_layers) + # use last adapter name as name of prediction head + if self.active_adapters: + head_setup = parse_heads_from_composition(self.active_adapters) + if isinstance(head_setup, str): + head_setup = [head_setup] + if head_setup and all(head in self.heads for head in head_setup): + self.active_head = head_setup + else: + logger.info( + "Could not identify valid prediction head(s) from setup '{}'.".format(self.active_adapters) + ) + + def add_custom_head(self, head_type, head_name, overwrite_ok=False, set_active=True, **kwargs): + if head_type in self.config.custom_heads: + head = self.config.custom_heads[head_type](self, head_name, **kwargs) + # When a build-in head is added as a custom head it does not have the head_type property + if not hasattr(head.config, "head_type"): + head.config["head_type"] = head_type + self.add_prediction_head(head, overwrite_ok, set_active=set_active) + else: + raise AttributeError( + "The given head as a head_type that is not registered as a custom head yet." + " Please register the head first." + ) + + def add_prediction_head( + self, + head: PredictionHead, + overwrite_ok: bool = False, + set_active: bool = True, + ): + if head.name not in self.heads or overwrite_ok: + self.heads[head.name] = head + # add reference to model config to save all head configs too + self.config.prediction_heads[head.name] = head.config + + # Set a default label2id map if not given + if "label2id" in head.config.keys() and head.config["label2id"] is None: + if "num_labels" in head.config.keys(): + head.config["label2id"] = {"LABEL_" + str(num): num for num in range(head.config["num_labels"])} + if "num_choices" in head.config.keys(): + head.config["label2id"] = {"LABEL_" + str(num): num for num in range(head.config["num_choices"])} + + # In case the added head has tied weights, tie them here. + self.tie_weights() + + logger.info(f"Adding head '{head.name}' with config {head.config}.") + if set_active: + self.active_head = head.name + + else: + raise ValueError( + f"Model already contains a head with name '{head.name}'. Use overwrite_ok=True to force overwrite." + ) + + @head_type("classification") + def add_classification_head( + self, + head_name, + num_labels=2, + layers=2, + activation_function="tanh", + overwrite_ok=False, + multilabel=False, + id2label=None, + use_pooler=use_pooler, + ): + """ + Adds a sequence classification head on top of the model. + + Args: + head_name (str): The name of the head. + num_labels (int, optional): Number of classification labels. Defaults to 2. + layers (int, optional): Number of layers. Defaults to 2. + activation_function (str, optional): Activation function. Defaults to 'tanh'. + overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. + multilabel (bool, optional): Enable multilabel classification setup. Defaults to False. + """ + + if multilabel: + head = MultiLabelClassificationHead( + self, head_name, num_labels, layers, activation_function, id2label, use_pooler + ) + else: + head = ClassificationHead(self, head_name, num_labels, layers, activation_function, id2label, use_pooler) + self.add_prediction_head(head, overwrite_ok) + + @head_type("image_classification") + def add_image_classification_head( + self, + head_name, + num_labels=2, + layers=1, + activation_function="tanh", + overwrite_ok=False, + multilabel=False, + id2label=None, + use_pooler=use_pooler, + ): + """ + Adds an image classification head on top of the model. + + Args: + head_name (str): The name of the head. + num_labels (int, optional): Number of classification labels. Defaults to 2. + layers (int, optional): Number of layers. Defaults to 1. + activation_function (str, optional): Activation function. Defaults to 'tanh'. + overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. + multilabel (bool, optional): Enable multilabel classification setup. Defaults to False. + """ + + head = ImageClassificationHead( + self, + head_name, + num_labels=num_labels, + layers=layers, + activation_function=activation_function, + multilabel=multilabel, + id2label=id2label, + use_pooler=use_pooler, + ) + self.add_prediction_head(head, overwrite_ok) + + @head_type("multiple_choice") + def add_multiple_choice_head( + self, + head_name, + num_choices=2, + layers=2, + activation_function="tanh", + overwrite_ok=False, + id2label=None, + use_pooler=use_pooler, + ): + """ + Adds a multiple choice head on top of the model. + + Args: + head_name (str): The name of the head. + num_choices (int, optional): Number of choices. Defaults to 2. + layers (int, optional): Number of layers. Defaults to 2. + activation_function (str, optional): Activation function. Defaults to 'tanh'. + overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. + """ + head = MultipleChoiceHead(self, head_name, num_choices, layers, activation_function, id2label, use_pooler) + self.add_prediction_head(head, overwrite_ok) + + @head_type("tagging") + def add_tagging_head( + self, head_name, num_labels=2, layers=1, activation_function="tanh", overwrite_ok=False, id2label=None + ): + """ + Adds a token classification head on top of the model. + + Args: + head_name (str): The name of the head. + num_labels (int, optional): Number of classification labels. Defaults to 2. + layers (int, optional): Number of layers. Defaults to 1. + activation_function (str, optional): Activation function. Defaults to 'tanh'. + overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. + """ + head = TaggingHead(self, head_name, num_labels, layers, activation_function, id2label) + self.add_prediction_head(head, overwrite_ok) + + @head_type("question_answering") + def add_qa_head( + self, head_name, num_labels=2, layers=1, activation_function="tanh", overwrite_ok=False, id2label=None + ): + """ + Adds a question answering head on top of the model. + + Args: + head_name (str): The name of the head. + num_labels (int, optional): Number of classification labels. Defaults to 2. + layers (int, optional): Number of layers. Defaults to 1. + activation_function (str, optional): Activation function. Defaults to 'tanh'. + overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. + """ + head = QuestionAnsweringHead(self, head_name, num_labels, layers, activation_function, id2label) + self.add_prediction_head(head, overwrite_ok) + + @head_type("dependency_parsing") + def add_dependency_parsing_head(self, head_name, num_labels=2, overwrite_ok=False, id2label=None): + """ + Adds a biaffine dependency parsing head on top of the model. The parsing head uses the architecture described + in "Is Supervised Syntactic Parsing Beneficial for Language Understanding? An Empirical Investigation" (Glavaš + & Vulić, 2021) (https://arxiv.org/pdf/2008.06788.pdf). + + Args: + head_name (str): The name of the head. + num_labels (int, optional): Number of labels. Defaults to 2. + overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. + id2label (dict, optional): Mapping from label ids to labels. Defaults to None. + """ + head = BiaffineParsingHead(self, head_name, num_labels, id2label) + self.add_prediction_head(head, overwrite_ok) + + @head_type("masked_lm") + def add_masked_lm_head(self, head_name, activation_function="gelu", overwrite_ok=False): + """ + Adds a masked language modeling head on top of the model. + + Args: + head_name (str): The name of the head. + activation_function (str, optional): Activation function. Defaults to 'gelu'. + overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. + """ + head = BertStyleMaskedLMHead(self, head_name, activation_function=activation_function) + self.add_prediction_head(head, overwrite_ok=overwrite_ok) + + @head_type("causal_lm") + def add_causal_lm_head(self, head_name, activation_function="gelu", overwrite_ok=False): + """ + Adds a causal language modeling head on top of the model. + + Args: + head_name (str): The name of the head. + activation_function (str, optional): Activation function. Defaults to 'gelu'. + overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. + """ + head = CausalLMHead( + self, head_name, layers=2, activation_function=activation_function, layer_norm=True, bias=True + ) + self.add_prediction_head(head, overwrite_ok=overwrite_ok) + + @head_type("seq2seq_lm") + def add_seq2seq_lm_head( + self, + head_name, + overwrite_ok=False, + ): + """ + Adds a sequence-to-sequence language modeling head on top of the model. + + Args: + head_name (str): The name of the head. + overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. + """ + head = Seq2SeqLMHead(self, head_name) + self.add_prediction_head(head, overwrite_ok=overwrite_ok) + + def delete_head(self, head_name: str): + """ + Deletes the prediction head with the specified name from the model. + + Args: + head_name (str): The name of the prediction to delete. + """ + if head_name not in self.config.prediction_heads: + logger.info("No prediction head '%s' found for deletion. Skipping.", head_name) + return + del self.config.prediction_heads[head_name] + del self.heads[head_name] + if self.active_head == head_name: + self.active_head = None + + def _get_used_heads(self, head_name: str = None): + if head_name: + used_heads = [head_name] + # together with context, check if we have heads at all to allow for models without heads + elif len(self.heads) > 0 and AdapterSetup.get_context_head_setup(): + used_heads = AdapterSetup.get_context_head_setup() + if isinstance(used_heads, str): + used_heads = [used_heads] + elif self._active_heads: + used_heads = self._active_heads + else: + return [] + + head_modules = [] + for head in used_heads: + if head not in self.heads: + raise ValueError("Unknown head_name '{}'".format(head)) + head_modules.append(self.heads[head]) + + return head_modules + + def forward_head( + self, + all_outputs, + head_name=None, + cls_output=None, + attention_mask=None, + return_dict=False, + context=None, + **kwargs + ): + """ + The forward pass through a prediction head configuration. There are three ways to specify the used prediction + head configuration (in order of priority): + + 1. If a head_name is passed, the head with the given name is used. + 2. If the forward call is executed within an ``AdapterSetup`` context, the head configuration is read from + the context. + 3. If the ``active_head`` property is set, the head configuration is read from there. + + Args: + all_outputs (dict): The outputs of the base model. + head_name (str, optional): The name of the prediction head to use. If None, the active head is used. + cls_output (torch.Tensor, optional): The classification output of the model. + attention_mask (torch.Tensor, optional): The attention mask of the model. + return_dict (bool): Whether or not to return a ``ModelOutput`` instead of a plain tuple. + get_cls_from_eos_tokens (bool): + If set to True, retrieve classifier token representations from the last token in the sequence. + Setting to True requires `eos_mask` to be passed as well. + **kwargs: Additional keyword arguments passed to the forward pass of the head. + """ + used_head_modules = self._get_used_heads(head_name) + if len(used_head_modules) == 0: + logger.debug("No prediction head is used.") + return all_outputs + + def _get_head_input(outputs, cls_out, batch): + # TODO-AH check possible edge cases here + if isinstance(outputs, ModelOutput): + inputs = {} + for key, base_output in outputs.items(): + if torch.is_tensor(base_output): + inputs[key] = base_output[batch[0] : batch[-1] + 1] + inputs = outputs.__class__(**inputs) + else: + inputs = tuple() + for base_output in outputs: + inputs = inputs + (base_output[batch],) + if cls_out is not None: + cls_input = cls_out[batch] + else: + cls_input = None + return inputs, cls_input + + # Pass invertible adapter if we have one + if hasattr(self.base_model, "get_invertible_adapter"): + inv_adapter = self.base_model.get_invertible_adapter() + if inv_adapter: + kwargs["invertible_adapter"] = inv_adapter + + # Set prompt tokens length + if context is not None: + prompt_tokens_length = context.get("prompt_tokens_length", None) + if prompt_tokens_length is not None: + kwargs["prompt_tokens_length"] = prompt_tokens_length + + if isinstance(self.active_head, BatchSplit): + if sum(self.active_head.batch_sizes) != all_outputs[0].size()[0]: + raise ValueError( + "The specified batch sizes {} do not match the actual batch size {}".format( + self.active_head.batch_sizes, all_outputs[0].size()[0] + ) + ) + head_outputs = [] + labels = kwargs.pop("labels", None) + eos_mask = kwargs.pop("eos_mask", None) + for i, head in enumerate(self.active_head): + head_module = self.heads[head] + batch_idx = range(sum(self.active_head.batch_sizes[:i]), sum(self.active_head.batch_sizes[: i + 1])) + kwargs["labels"] = labels[batch_idx] if labels is not None else None + kwargs["eos_mask"] = eos_mask[batch_idx] if eos_mask is not None else None + head_inputs, head_cls_input = _get_head_input(all_outputs, cls_output, batch_idx) + # head_attention = attention_mask[batch_idx] if attention_mask is not None else None + head_output = head_module(head_inputs, head_cls_input, attention_mask, return_dict, **kwargs) + head_outputs.append(head_output) + combined_loss = ( + sum([out["loss"] for out in head_outputs]) + if all("loss" in out and out["loss"] is not None for out in head_outputs) + else None + ) + return_output = MultiHeadOutput(head_outputs=head_outputs, loss=combined_loss) + elif self.has_parallel_adapters or isinstance(self.active_head, Parallel): + if len(self.active_head) != self.adapters_config.active_setup.parallel_channels: + raise ValueError("The number of parallel adapters and the number of active heads must match.") + orig_batch_size = all_outputs[0].shape[0] // self.adapters_config.active_setup.parallel_channels + head_outputs = [] + for i, head in enumerate(self.active_head): + head_module = self.heads[head] + batch_idx = range(i * orig_batch_size, (i + 1) * orig_batch_size) + head_inputs, head_cls_input = _get_head_input(all_outputs, cls_output, batch_idx) + head_output = head_module(head_inputs, head_cls_input, attention_mask, return_dict, **kwargs) + head_outputs.append(head_output) + combined_loss = ( + torch.sum(torch.stack([out["loss"] for out in head_outputs])) + if all("loss" in out and out["loss"] is not None for out in head_outputs) + else None + ) + return_output = MultiHeadOutput(head_outputs=head_outputs, loss=combined_loss) + elif len(used_head_modules) > 1: + head_outputs = [] + for head_module in used_head_modules: + head_outputs.append(head_module(all_outputs, cls_output, attention_mask, return_dict, **kwargs)) + return_output = MultiHeadOutput(head_outputs=head_outputs) + else: + head_module = used_head_modules[0] + return_output = head_module(all_outputs, cls_output, attention_mask, return_dict, **kwargs) + + if isinstance(return_output, ModelOutput): + for attr in ForwardContext.context_attributes: + if attr not in return_output and attr in all_outputs: + return_output[attr] = all_outputs[attr] + return return_output + + def get_labels_dict(self, head_name=None): + """ + Returns the id2label dict for the given hea + + Args: + head_name: (str, optional) the name of the head which labels should be returned. Default is None. + If the name is None the labels of the active head are returned + + Returns: id2label + + """ + if head_name is None: + head_name = self.active_head + if head_name is None: + raise ValueError("No head name given and no active head in the model") + if "label2id" in self.heads[head_name].config.keys() and self.heads[head_name].config["label2id"] is not None: + return {id_: label for label, id_ in self.heads[head_name].config["label2id"].items()} + else: + return None + + def get_labels(self, head_name=None): + """ + Returns the labels the given head is assigning/predictin + + Args: + head_name: (str, optional) the name of the head which labels should be returned. Default is None. + If the name is None the labels of the active head are returned + + Returns: labels + + """ + label_dict = self.get_labels_dict(head_name) + if label_dict is None: + return None + else: + return list(label_dict.values()) + + # This method is called during model loading in from_pretrained() to apply the state_dict to the model. + # Override it to inject adapter head logic. + @classmethod + def _load_pretrained_model( + cls, + model, + state_dict, + loaded_keys, + *args, + **kwargs, + ): + # Filter only weights not part of base model + loader = PredictionHeadLoader(model, error_on_missing=False, convert_to_flex_head=True) + filter_func = loader.filter_func(None) + if state_dict is not None: + head_state_dict = {key: value for key, value in state_dict.items() if filter_func(key)} + else: + head_state_dict = None + head_name = "default" + head_config, new_head_state_dict = loader.convert_static_to_flex_head(head_state_dict, load_as=head_name) + + if head_config is not None: + # add head from config + if head_name in model.heads: + logger.warning("Overwriting existing head '{}'".format(head_name)) + + model.add_prediction_head_from_config(head_name, head_config, overwrite_ok=True) + + if new_head_state_dict is not None: + # Always ensure base_model_prefix is added, otherwise loading head weights does not work. + if len(model.base_model_prefix) > 0 and not any( + s.startswith(model.base_model_prefix) for s in loaded_keys + ): + rename_func = lambda x: model.base_model_prefix + "." + x if x not in head_state_dict else x + state_dict = {rename_func(k): v for k, v in state_dict.items()} + loaded_keys = [rename_func(k) for k in loaded_keys] + + for k in head_state_dict: + del state_dict[k] + loaded_keys.remove(k) + for k in new_head_state_dict: + state_dict[k] = new_head_state_dict[k] + loaded_keys.append(k) + + return super()._load_pretrained_model( + model, + state_dict, + loaded_keys, + *args, + **kwargs, + ) diff --git a/adapters/src/adapters/hub_mixin.py b/adapters/src/adapters/hub_mixin.py new file mode 100644 index 00000000..ece00238 --- /dev/null +++ b/adapters/src/adapters/hub_mixin.py @@ -0,0 +1,233 @@ +import logging +import os +import warnings +from typing import List, Optional, Union + +from transformers.utils.generic import working_or_temp_dir + + +logger = logging.getLogger(__name__) + +DEFAULT_TEXT = "" +# docstyle-ignore +ADAPTER_CARD_TEMPLATE = """ +--- +tags: +{tags} +--- + +# Adapter `{adapter_repo_name}` for {model_name} + +An [adapter](https://adapterhub.ml) for the `{model_name}` model that was trained on the {dataset_name} dataset{head_info}. + +This adapter was created for usage with the **[Adapters](https://github.com/Adapter-Hub/adapters)** library. + +## Usage + +First, install `adapters`: + +``` +pip install -U adapters +``` + +Now, the adapter can be loaded and activated like this: + +```python +from adapters import AutoAdapterModel + +model = AutoAdapterModel.from_pretrained("{model_name}") +adapter_name = model.load_adapter("{adapter_repo_name}", source="hf", set_active=True) +``` + +## Architecture & Training + +{architecture_training} + +## Evaluation results + +{results} + +## Citation + +{citation} + +""" + + +class PushAdapterToHubMixin: + """Mixin providing support for uploading adapters to HuggingFace's Model Hub.""" + + def _save_adapter_card( + self, + save_directory: str, + adapter_name: str, + adapter_repo_name: str, + adapterhub_tag: Optional[str] = None, + datasets_tag: Optional[str] = None, + tags: Optional[List[str]] = None, + language: Optional[str] = None, + license: Optional[str] = None, + metrics: Optional[List[str]] = None, + **kwargs + ): + all_tags = {"adapter-transformers"} # TODO: change this tag once changed on HF side + datasets = set() + # Dataset/ Task info + dataset_name = None + if adapterhub_tag is None and datasets_tag is None: + raise ValueError("Either adapterhub_tag or datasets_tag must be specified.") + if datasets_tag is not None: + dataset_name = f"[{datasets_tag}](https://huggingface.co/datasets/{datasets_tag}/)" + datasets.add(datasets_tag) + if adapterhub_tag is not None: + # adapterhub_tag overwrites datasets_tag + dataset_name = f"[{adapterhub_tag}](https://adapterhub.ml/explore/{adapterhub_tag}/)" + all_tags.add(f"adapterhub:{adapterhub_tag}") + + all_tags.add(self.config.model_type) + if tags is not None: + all_tags = all_tags | set(tags) + tag_string = "\n".join([f"- {tag}" for tag in all_tags]) + if datasets: + tag_string += "\ndatasets:\n" + tag_string += "\n".join([f"- {tag}" for tag in datasets]) + if language: + tag_string += f"\nlanguage:\n- {language}" + if license: + tag_string += f'\nlicense: "{license}"' + if metrics: + tag_string += "\nmetrics:\n" + tag_string += "\n".join([f"- {metric}" for metric in metrics]) + + if hasattr(self, "heads") and adapter_name in self.heads: + head_type = " ".join(self.heads[adapter_name].config["head_type"].split("_")) + head_info = f" and includes a prediction head for {head_type}" + else: + head_info = "" + + adapter_card = ADAPTER_CARD_TEMPLATE.format( + tags=tag_string, + model_name=self.model_name, + dataset_name=dataset_name, + head_info=head_info, + adapter_repo_name=adapter_repo_name, + architecture_training=kwargs.pop("architecture_training", DEFAULT_TEXT), + results=kwargs.pop("results", DEFAULT_TEXT), + citation=kwargs.pop("citation", DEFAULT_TEXT), + ) + + logger.info('Saving adapter card for adapter "%s" to %s.', adapter_name, save_directory) + with open(os.path.join(save_directory, "README.md"), "w") as f: + f.write(adapter_card.strip()) + + def push_adapter_to_hub( + self, + repo_name: str, + adapter_name: str, + organization: Optional[str] = None, + adapterhub_tag: Optional[str] = None, + datasets_tag: Optional[str] = None, + local_path: Optional[str] = None, + commit_message: Optional[str] = None, + private: Optional[bool] = None, + token: Optional[Union[bool, str]] = None, + overwrite_adapter_card: bool = False, + create_pr: bool = False, + revision: str = None, + commit_description: str = None, + adapter_card_kwargs: Optional[dict] = None, + **deprecated_kwargs, + ): + """Upload an adapter to HuggingFace's Model Hub. + + Args: + repo_name (str): The name of the repository on the model hub to upload to. + adapter_name (str): The name of the adapter to be uploaded. + organization (str, optional): Organization in which to push the adapter + (you must be a member of this organization). Defaults to None. + adapterhub_tag (str, optional): + Tag of the format `/` for categorization on https://adapterhub.ml/explore/. See + https://docs.adapterhub.ml/contributing.html#add-a-new-task-or-subtask for more. If not specified, + `datasets_tag` must be given in case a new adapter card is generated. Defaults to None. + datasets_tag (str, optional): Dataset identifier from https://huggingface.co/datasets. + If not specified, `adapterhub_tag` must be given in case a new adapter card is generated. Defaults to + None. + local_path (str, optional): Local path used as clone directory of the adapter repository. + If not specified, will create a temporary directory. Defaults to None. + commit_message (:obj:`str`, `optional`): + Message to commit while pushing. Will default to :obj:`"add config"`, :obj:`"add tokenizer"` or + :obj:`"add model"` depending on the type of the class. + private (:obj:`bool`, `optional`): + Whether or not the repository created should be private (requires a paying subscription). + token (`bool` or `str`, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, will use the token generated + when running `huggingface-cli login` (stored in `~/.huggingface`). Will default to `True` if `repo_url` + is not specified. + overwrite_adapter_card (bool, optional): Overwrite an existing adapter card with a newly generated one. + If set to `False`, will only generate an adapter card, if none exists. Defaults to False. + create_pr (bool, optional): + Whether or not to create a PR with the uploaded files or directly commit. + revision (`str`, *optional*): + Branch to push the uploaded files to. + commit_description (`str`, *optional*): + The description of the commit that will be created + + Returns: + str: The url of the adapter repository on the model hub. + """ + use_auth_token = deprecated_kwargs.pop("use_auth_token", None) + if use_auth_token is not None: + warnings.warn( + "The `use_auth_token` argument is deprecated and will be removed in future versions of Adapters." + " Please use `token` instead.", + FutureWarning, + ) + if token is not None: + raise ValueError( + "`token` and `use_auth_token` are both specified. Please set only the argument `token`." + ) + token = use_auth_token + + if organization is not None and not repo_name.startswith(organization): + warnings.warn( + "The `organization` argument is deprecated and will be removed in future versions of" + " Adapters. Set your organization directly in the `repo_id` passed instead" + " (`repo_id={organization}/{model_id}`)." + ) + if "/" in repo_name: + repo_name = repo_name.split("/")[-1] + repo_id = f"{organization}/{repo_name}" + else: + repo_id = repo_name + + use_temp_dir = not os.path.isdir(local_path) if local_path else True + + # Create repo or get retrieve an existing repo + repo_id = self._create_repo(repo_id, private=private, token=token) + + # Commit and push + logger.info('Pushing adapter "%s" to model hub at %s ...', adapter_name, repo_id) + with working_or_temp_dir(working_dir=local_path, use_temp_dir=use_temp_dir) as work_dir: + files_timestamps = self._get_files_timestamps(work_dir) + # Save adapter and optionally create model card + self.save_adapter(work_dir, adapter_name) + if overwrite_adapter_card or not os.path.exists(os.path.join(work_dir, "README.md")): + adapter_card_kwargs = adapter_card_kwargs or {} + self._save_adapter_card( + work_dir, + adapter_name, + repo_id, + adapterhub_tag=adapterhub_tag, + datasets_tag=datasets_tag, + **adapter_card_kwargs, + ) + return self._upload_modified_files( + work_dir, + repo_id, + files_timestamps, + commit_message=commit_message, + token=token, + create_pr=create_pr, + revision=revision, + commit_description=commit_description, + ) diff --git a/adapters/src/adapters/loading.py b/adapters/src/adapters/loading.py new file mode 100644 index 00000000..7dc3725f --- /dev/null +++ b/adapters/src/adapters/loading.py @@ -0,0 +1,939 @@ +import json +import logging +from abc import ABC, abstractmethod +from os import mkdir +from os.path import exists, isdir, isfile, join +from typing import Callable, Mapping, Sequence, Tuple + +import torch + +from .configuration import AdapterConfig, build_full_config +from .head_utils import STATIC_TO_FLEX_HEAD_MAP, get_head_config_and_rename_list +from .utils import ( + ACTIVATION_RENAME, + ADAPTERFUSION_CONFIG_NAME, + ADAPTERFUSION_WEIGHTS_NAME, + CONFIG_NAME, + HEAD_CONFIG_NAME, + HEAD_WEIGHTS_NAME, + WEIGHTS_NAME, + AdapterType, + resolve_adapter_path, +) + + +logger = logging.getLogger(__name__) + + +class WeightsLoaderHelper: + """ + A class providing helper methods for saving and loading module weights. + """ + + def __init__(self, model, weights_name, config_name): + self.model = model + self.weights_name = weights_name + self.config_name = config_name + + def state_dict(self, filter_func): + return {k: v for (k, v) in self.model.state_dict().items() if filter_func(k)} + + def rename_state_dict(self, state_dict, *rename_funcs): + new_state_dict = {} + for k, v in state_dict.items(): + new_k = k + for rename_func in rename_funcs: + new_k = rename_func(new_k) + new_state_dict[new_k] = v + return new_state_dict + + def save_weights_config(self, save_directory, config, meta_dict=None): + # add meta information if given + if meta_dict: + for k, v in meta_dict.items(): + if k not in config: + config[k] = v + # save to file system + output_config_file = join(save_directory, self.config_name) + with open(output_config_file, "w", encoding="utf-8") as f: + json.dump(config, f, indent=2, sort_keys=True) + logger.info("Configuration saved in {}".format(output_config_file)) + + def save_weights(self, save_directory, filter_func): + if not exists(save_directory): + mkdir(save_directory) + else: + assert isdir(save_directory), "Saving path should be a directory where the module weights can be saved." + + # Get the state of all adapter modules for this task + state_dict = self.state_dict(filter_func) + # Save the adapter weights + output_file = join(save_directory, self.weights_name) + torch.save(state_dict, output_file) + logger.info("Module weights saved in {}".format(output_file)) + + def load_weights_config(self, save_directory): + config_file = join(save_directory, self.config_name) + logger.info("Loading module configuration from {}".format(config_file)) + # Load the config + with open(config_file, "r", encoding="utf-8") as f: + loaded_config = json.load(f) + # For older versions translate the activation function to the new format + if "version" not in loaded_config: + if "config" in loaded_config and loaded_config["config"] is not None: + if ( + "non_linearity" in loaded_config["config"] + and loaded_config["config"]["non_linearity"] in ACTIVATION_RENAME + ): + loaded_config["config"]["non_linearity"] = ACTIVATION_RENAME[ + loaded_config["config"]["non_linearity"] + ] + return loaded_config + + @staticmethod + def _load_module_state_dict(module, state_dict, start_prefix=""): + missing_keys = [] + unexpected_keys = [] + error_msgs = [] + + # copy state_dict so _load_from_state_dict can modify it + metadata = getattr(state_dict, "_metadata", None) + state_dict = state_dict.copy() + if metadata is not None: + state_dict._metadata = metadata + + def load(module, prefix=""): + local_metadata = {} if metadata is None else metadata.get(prefix[:-1], {}) + module._load_from_state_dict( + state_dict, prefix, local_metadata, True, missing_keys, unexpected_keys, error_msgs + ) + for name, child in module._modules.items(): + if child is not None: + load(child, prefix + name + ".") + + load(module, prefix=start_prefix) + + if len(error_msgs) > 0: + raise RuntimeError( + "Error(s) in loading state_dict for {}:\n\t{}".format( + module.__class__.__name__, "\n\t".join(error_msgs) + ) + ) + return missing_keys, unexpected_keys + + def load_weights( + self, + save_directory, + filter_func, + rename_func=None, + loading_info=None, + in_base_model=False, + ): + weights_file = join(save_directory, self.weights_name) + # Load the weights of the adapter + try: + state_dict = torch.load(weights_file, map_location="cpu") + except Exception: + raise OSError("Unable to load weights from pytorch checkpoint file. ") + logger.info("Loading module weights from {}".format(weights_file)) + + return self.load_weights_from_state_dict( + state_dict, filter_func, rename_func=rename_func, loading_info=loading_info, in_base_model=in_base_model + ) + + def load_weights_from_state_dict( + self, state_dict, filter_func, rename_func=None, loading_info=None, in_base_model=False, start_prefix="" + ): + # Rename weights if needed + if rename_func: + if isinstance(rename_func, Sequence): + state_dict = self.rename_state_dict(state_dict, *rename_func) + else: + state_dict = self.rename_state_dict(state_dict, rename_func) + + # Add the weights to the model + # Make sure we are able to load base models as well as derived models (with heads) + model_to_load = self.model + has_prefix_module = any(s.startswith(self.model.base_model_prefix) for s in state_dict.keys()) + if not start_prefix and not hasattr(self.model, self.model.base_model_prefix) and has_prefix_module: + start_prefix = self.model.base_model_prefix + "." + if in_base_model and hasattr(self.model, self.model.base_model_prefix) and not has_prefix_module: + model_to_load = self.model.base_model + + missing_keys, unexpected_keys = self._load_module_state_dict( + model_to_load, state_dict, start_prefix=start_prefix + ) + + missing_keys = [k for k in missing_keys if filter_func(k)] + if len(missing_keys) > 0: + logger.info( + "Some module weights could not be found in loaded weights file: {}".format(", ".join(missing_keys)) + ) + if self.model._keys_to_ignore_on_load_unexpected: + unexpected_keys = [k for k in unexpected_keys if k not in self.model._keys_to_ignore_on_load_unexpected] + if len(unexpected_keys) > 0: + logger.info( + "Some weights of the state_dict could not be loaded into model: {}".format(", ".join(unexpected_keys)) + ) + + if isinstance(loading_info, dict): + if "missing_keys" not in loading_info: + loading_info["missing_keys"] = [] + if "unexpected_keys" not in loading_info: + loading_info["unexpected_keys"] = [] + loading_info["missing_keys"].extend(missing_keys) + loading_info["unexpected_keys"].extend(unexpected_keys) + + return missing_keys, unexpected_keys + + +class WeightsLoader(ABC): + """ + An abstract class providing basic methods for saving and loading weights of a model. Extend this class to build + custom module weight loaders. + """ + + def __init__(self, model, weights_name, config_name): + self.model = model + self.weights_helper = WeightsLoaderHelper(model, weights_name, config_name) + + @abstractmethod + def filter_func(self, name: str) -> Callable[[str], bool]: + """ + The callable returned by this method is used to extract the module weights to be saved or loaded based on their + names. + + Args: + name (str): An identifier of the weights to be saved. + + Returns: + Callable[str, bool]: A function that takes the fully qualified name of a module parameter and returns a + boolean value that specifies whether this parameter should be extracted. + """ + pass + + @abstractmethod + def rename_func(self, old_name: str, new_name: str) -> Callable[[str], str]: + """ + The callable returned by this method is used to optionally rename the module weights after loading. + + Args: + old_name (str): The string identifier of the weights as loaded from file. + new_name (str): The new string identifier to which the weights should be renamed. + + Returns: + Callable[str, str]: A function that takes the fully qualified name of a module parameter and returns a new + fully qualified name. + """ + pass + + def save(self, save_directory, name, **kwargs): + """ + Saves the module config and weights into the given directory. Override this method for additional saving + actions. + + Args: + save_directory (str): The directory to save the weights in. + name (str): An identifier of the weights to be saved. The details are specified by the implementor. + """ + if not exists(save_directory): + mkdir(save_directory) + else: + assert isdir( + save_directory + ), "Saving path should be a directory where weights and configuration can be saved." + + config_dict = build_full_config( + None, + self.model.config, + model_name=self.model.model_name, + name=name, + model_class=self.model.__class__.__name__, + ) + meta_dict = kwargs.pop("meta_dict", None) + + # Save the adapter configuration + self.weights_helper.save_weights_config(save_directory, config_dict, meta_dict=meta_dict) + + # Save adapter weights + filter_func = self.filter_func(name) + self.weights_helper.save_weights(save_directory, filter_func) + + def load(self, save_directory, load_as=None, loading_info=None, **kwargs) -> Tuple[str, str]: + """ + Loads the module weights from the given directory. Override this method for additional loading actions. If + adding the loaded weights to the model passed to the loader class requires adding additional modules, this + method should also perform the architectural changes to the model. + + Args: + save_directory (str): The directory from where to load the weights. + load_as (str, optional): Load the weights with this name. Defaults to None. + + Returns: + Tuple[str, str]: A tuple consisting of the local file system directory from which the weights where loaded + and the name of the loaded weights. + """ + if not exists(join(save_directory, self.weights_helper.weights_name)): + raise ValueError("Loading path should be a directory where the weights are saved.") + + # Load config + config = self.weights_helper.load_weights_config(save_directory) + + # Load head weights + filter_func = self.filter_func(config["name"]) + if load_as: + rename_func = self.rename_func(config["name"], load_as) + else: + rename_func = None + self.weights_helper.load_weights( + save_directory, filter_func, rename_func=rename_func, loading_info=loading_info + ) + + return save_directory, load_as or config["name"] + + +class AdapterLoader(WeightsLoader): + """ + A class providing methods for saving and loading adapter modules from the Hub, the filesystem or a remote url. + + Model classes passed to this loader must implement the `ModelAdaptersMixin` class. + """ + + def __init__(self, model, adapter_type=None): + super().__init__(model, WEIGHTS_NAME, CONFIG_NAME) + self.adapter_type = adapter_type + if adapter_type and not AdapterType.has(self.adapter_type): + raise ValueError("Invalid adapter type {}".format(self.adapter_type)) + + def filter_func(self, adapter_name): + return ( + lambda x: "_adapters.{}.".format(adapter_name) in x + or ".adapters.{}.".format(adapter_name) in x + or ".prefix_tunings.{}.".format(adapter_name) in x + or ".prefix_gates.{}.".format(adapter_name) in x + or ".loras.{}.".format(adapter_name) in x + or ".prompt_tunings.{}.".format(adapter_name) in x + ) + + # This dict maps the original weight names to the currently used equivalents. + # The mapping is used by rename_func() to support loading from older weights files. + # Old adapters will be loaded and converted to the new format automatically. + legacy_weights_mapping = { + "attention_text_task_adapters": "adapters", + "attention_text_lang_adapters": "adapters", + "layer_text_task_adapters": "adapters", + "layer_text_lang_adapters": "adapters", + "invertible_lang_adapters": "invertible_adapters", + } + + def _rename_legacy_weights(self, k): + for old, new in self.legacy_weights_mapping.items(): + k = k.replace(old, new) + return k + + # This method is used to remove unnecessary invertible adapters from task adapters using the old format. + # In the old format, task adapters e.g. using seq_bn config specify inv. adapters but don't use them. + # As inv. adapters would be incorrectly used in the new implementation, + # catch this case here when loading pretrained adapters. + def _fix_legacy_config(self, adapter_name, missing_keys): + if self.adapter_type == AdapterType.text_task: + inv_adapter_keys = [x for x in missing_keys if f"invertible_adapters.{adapter_name}." in x] + if len(inv_adapter_keys) > 0: + del self.model.base_model.invertible_adapters[adapter_name] + missing_keys = [k for k in missing_keys if k not in inv_adapter_keys] + # remove invertible_adapter from config + adapter_config_name = self.model.adapters_config.adapters[adapter_name] + if adapter_config_name in self.model.adapters_config.config_map: + adapter_config = self.model.adapters_config.config_map[adapter_config_name] + self.model.adapters_config.config_map[adapter_config_name] = adapter_config.replace( + inv_adapter=None, inv_adapter_reduction_factor=None + ) + return missing_keys + + def rename_func(self, old_name, new_name): + return ( + lambda k: self._rename_legacy_weights(k) + .replace("adapters.{}.".format(old_name), "adapters.{}.".format(new_name)) + .replace(".prefix_tunings.{}.".format(old_name), ".prefix_tunings.{}.".format(new_name)) + .replace(".prefix_gates.{}.".format(old_name), ".prefix_gates.{}.".format(new_name)) + .replace(".loras.{}.".format(old_name), ".loras.{}.".format(new_name)) + ) + + def save_to_state_dict(self, name: str): + """ + Extracts the weights of a given adapter from the model and returns them as a state dict. + + Args: + name (str): The name of the adapter to be saved. + + Returns: + Tuple[dict, dict]: A tuple consisting of the state dict containing the adapter weights and the adapter + configuration. + """ + if name not in self.model.adapters_config.adapters: + raise ValueError("No adapter of this type with the given name is part of this model.") + + adapter_config = self.model.adapters_config.get(name) + + config_dict = build_full_config( + adapter_config, + self.model.config, + model_name=self.model.model_name, + name=name, + model_class=self.model.__class__.__name__, + ) + + # Save adapter weights + filter_func = self.filter_func(config_dict["name"]) + state_dict = self.weights_helper.state_dict(filter_func) + + return state_dict, config_dict + + def save(self, save_directory, name, meta_dict=None): + """ + Saves an adapter and its configuration file to a directory, so that it can be reloaded using the `load()` + method. + + Args: + save_directory (str): a path to a directory where the adapter will be saved + task_name (str): the name of the adapter to be saved + """ + if not exists(save_directory): + mkdir(save_directory) + else: + assert isdir( + save_directory + ), "Saving path should be a directory where adapter and configuration can be saved." + assert ( + name in self.model.adapters_config.adapters + ), "No adapter of this type with the given name is part of this model." + + adapter_config = self.model.adapters_config.get(name) + + config_dict = build_full_config( + adapter_config, + self.model.config, + model_name=self.model.model_name, + name=name, + model_class=self.model.__class__.__name__, + ) + + # Save the adapter configuration + self.weights_helper.save_weights_config(save_directory, config_dict, meta_dict=meta_dict) + + # Save adapter weights + filter_func = self.filter_func(config_dict["name"]) + self.weights_helper.save_weights(save_directory, filter_func) + + def load_from_state_dict(self, state_dict, name, load_as=None, loading_info=None, start_prefix=""): + """ + Loads the weights of a given adapter from a state dict into the model. + + Args: + state_dict (dict): The state dict from which to load the adapter weights. + name (str): The name of the adapter to be loaded. + load_as (str, optional): Load the adapter using this name. By default, the name with which the adapter was + saved will be used. + loading_info (dict, optional): + A dictionary to which loading information (missing and unexpected keys) will be added. + start_prefix (str, optional): A custom prefix to be ignored in the given state dict. + """ + new_adapter_name = load_as or name + if new_adapter_name not in self.model.adapters_config.adapters: + raise ValueError("No adapter of this type with the given name is part of this model.") + + # Load adapter weights + filter_func = self.filter_func(name) + rename_func = self.rename_func(name, new_adapter_name) + missing_keys, _ = self.weights_helper.load_weights_from_state_dict( + state_dict, + filter_func, + rename_func=rename_func, + loading_info=loading_info, + in_base_model=True, + start_prefix=start_prefix, + ) + missing_keys = self._fix_legacy_config(new_adapter_name, missing_keys) + if isinstance(loading_info, Mapping): + loading_info["missing_keys"] = missing_keys + + def load( + self, + adapter_name_or_path, + config=None, + version=None, + model_name=None, + load_as=None, + loading_info=None, + leave_out=None, + set_active=False, + **kwargs + ): + """ + Loads a pre-trained pytorch adapter module from the local file system or a remote location. + + Args: + adapter_name_or_path (str): can be either: + + - the identifier of a pre-trained task adapter to be loaded from Adapter Hub + - a path to a directory containing adapter weights saved using `model.saved_adapter()` + - a URL pointing to a zip folder containing a saved adapter module + config (str, optional): The requested configuration of the adapter. + version (str, optional): The version of the adapter to be loaded. + model_name (str, optional): The string identifier of the pre-trained model. + load_as (str, optional): Load the adapter using this name. By default, the name with which the adapter was + saved will be used. + + Returns: + Tuple[str, str]: A tuple consisting of the local file system directory from which the weights where loaded + and the name of the loaded weights. + """ + requested_config = AdapterConfig.load(config) if config else None + # Resolve the weights to be loaded based on the given identifier and the current adapter config + model_name = self.model.model_name or model_name + resolved_folder = resolve_adapter_path( + adapter_name_or_path, + model_name, + adapter_config=requested_config, + version=version, + **kwargs, + ) + + # Load config of adapter + config = self.weights_helper.load_weights_config(resolved_folder) + if self.adapter_type and "type" in config: + assert config["type"] == self.adapter_type, "Loaded adapter has to be a {} adapter.".format( + self.adapter_type + ) + elif "type" in config: + self.adapter_type = config["type"] + # post-loading drop of layers + if leave_out is not None: + if "leave_out" in config["config"] and config["config"]["leave_out"] is not None: + # The conversion to a set and then back to a list removes all duplicates + leave_out = list(set(leave_out + config["config"]["leave_out"])) + config["config"]["leave_out"] = leave_out + + adapter_name = load_as or config["name"] + # If the adapter is not part of the model, add it + if adapter_name not in self.model.adapters_config.adapters: + self.model.add_adapter(adapter_name, config=config["config"], set_active=set_active) + else: + logger.warning("Overwriting existing adapter '{}'.".format(adapter_name)) + + # Load adapter weights + filter_func = self.filter_func(adapter_name) + rename_func = self.rename_func(config["name"], adapter_name) + missing_keys, _ = self.weights_helper.load_weights( + resolved_folder, filter_func, rename_func=rename_func, loading_info=loading_info, in_base_model=True + ) + missing_keys = self._fix_legacy_config(adapter_name, missing_keys) + if isinstance(loading_info, Mapping): + loading_info["missing_keys"] = missing_keys + + return resolved_folder, adapter_name + + +class AdapterFusionLoader(WeightsLoader): + """ + A class providing methods for saving and loading AdapterFusion modules from the file system. + + """ + + def __init__(self, model, error_on_missing=True): + super().__init__(model, ADAPTERFUSION_WEIGHTS_NAME, ADAPTERFUSION_CONFIG_NAME) + self.error_on_missing = error_on_missing + + def filter_func(self, adapter_fusion_name): + return lambda x: "adapter_fusion_layer.{}".format(adapter_fusion_name) in x + + def rename_func(self, old_name, new_name): + return lambda k: k.replace( + "adapter_fusion_layer.{}".format(old_name), "adapter_fusion_layer.{}".format(new_name) + ) + + def save_to_state_dict(self, name: str): + """ + Extracts the weights of a given AdapterFusion from the model and returns them as a state dict. + + Args: + name (str): The name of the AdapterFusion to be saved. + + Returns: + Tuple[dict, dict]: A tuple consisting of the state dict containing the AdapterFusion weights and the + AdapterFusion configuration. + """ + if name not in self.model.adapters_config.fusions: + raise ValueError(f"No AdapterFusion with name '{name}' available.") + + adapter_fusion_config = self.model.adapters_config.get_fusion(name) + + config_dict = build_full_config( + adapter_fusion_config, + self.model.config, + model_name=self.model.model_name, + name=name, + model_class=self.model.__class__.__name__, + ) + + # Save adapter weights + filter_func = self.filter_func(name) + state_dict = self.weights_helper.state_dict(filter_func) + + return state_dict, config_dict + + def save(self, save_directory: str, name: str, meta_dict=None): + """ + Saves a AdapterFusion module into the given directory. + + Args: + save_directory (str): The directory to save the weights in. + name (str, optional): The AdapterFusion name. + """ + + if name not in self.model.adapters_config.fusions: + if self.error_on_missing: + raise ValueError(f"Unknown AdapterFusion '{name}'.") + else: + logger.debug(f"No AdapterFusion with name '{name}' available.") + return + + if not exists(save_directory): + mkdir(save_directory) + else: + assert isdir(save_directory), "Saving path should be a directory where the head can be saved." + + adapter_fusion_config = self.model.adapters_config.get_fusion(name) + + # Save the adapter fusion configuration + config_dict = build_full_config( + adapter_fusion_config, + self.model.config, + name=name, + model_name=self.model.model_name, + model_class=self.model.__class__.__name__, + ) + self.weights_helper.save_weights_config(save_directory, config_dict, meta_dict=meta_dict) + + # Save head weights + filter_func = self.filter_func(name) + self.weights_helper.save_weights(save_directory, filter_func) + + def load_from_state_dict(self, state_dict, name, load_as=None, loading_info=None, start_prefix=""): + """ + Loads the weights of a given AdapterFusion module from a state dict into the model. + + Args: + state_dict (dict): The state dict from which to load the AdapterFusion weights. + name (str): The name of the AdapterFusion to be loaded. + load_as (str, optional): + Load the AdapterFusion using this name. By default, the name with which the AdapterFusion was saved + will be used. + loading_info (dict, optional): + A dictionary to which loading information (missing and unexpected keys) will be added. + start_prefix (str, optional): A custom prefix to be ignored in the given state dict. + """ + new_adapter_fusion_name = load_as or name + if new_adapter_fusion_name not in self.model.adapters_config.fusions: + raise ValueError(f"No AdapterFusion with name '{new_adapter_fusion_name}' available.") + + # Load adapter weights + filter_func = self.filter_func(name) + rename_func = self.rename_func(name, new_adapter_fusion_name) + self.weights_helper.load_weights_from_state_dict( + state_dict, + filter_func, + rename_func=rename_func, + loading_info=loading_info, + in_base_model=True, + start_prefix=start_prefix, + ) + + def load(self, save_directory, load_as=None, loading_info=None, **kwargs): + """ + Loads a AdapterFusion module from the given directory. + + Args: + save_directory (str): The directory from where to load the weights. + load_as (str, optional): Load the weights with this name. Defaults to None. + + Returns: + Tuple[str, str]: A tuple consisting of the local file system directory from which the weights where loaded + and the name of the loaded weights. + """ + if not exists(join(save_directory, ADAPTERFUSION_WEIGHTS_NAME)): + if self.error_on_missing: + raise ValueError("Loading path should be a directory where AdapterFusion is saved.") + else: + logger.debug("No matching adapter fusion found in '{}'".format(save_directory)) + return None, None + + config = self.weights_helper.load_weights_config(save_directory) + + adapter_fusion_name = load_as or config["name"] + if adapter_fusion_name not in self.model.adapters_config.fusions: + self.model.add_adapter_fusion( + adapter_fusion_name, config["config"], overwrite_ok=True, set_active=kwargs.pop("set_active", True) + ) + else: + logger.warning("Overwriting existing adapter fusion module '{}'".format(adapter_fusion_name)) + + # Load AdapterFusion weights + filter_func = self.filter_func(adapter_fusion_name) + if load_as: + rename_func = self.rename_func(config["name"], load_as) + else: + rename_func = None + self.weights_helper.load_weights( + save_directory, filter_func, rename_func=rename_func, loading_info=loading_info + ) + + return save_directory, adapter_fusion_name + + +class PredictionHeadLoader(WeightsLoader): + """ + A class providing methods for saving and loading prediction head modules from the file system. + + Model classes supporting configurable head modules via config files should provide a prediction head dict at + `model.heads` and a method `add_prediction_head(head_name, config)`. + """ + + def __init__(self, model, error_on_missing=True, convert_to_flex_head=False): + super().__init__(model, HEAD_WEIGHTS_NAME, HEAD_CONFIG_NAME) + self.error_on_missing = error_on_missing + self.convert_to_flex_head = convert_to_flex_head + + def filter_func(self, head_name): + # ToDo remove this workaround + if self.model.config.model_type in ["t5", "mt5"]: + if head_name: + return ( + lambda x: not x.startswith("encoder") + and not x.startswith("decoder") + and not x.startswith("shared") + and "heads.{}".format(head_name) in x + ) + else: + return ( + lambda x: not x.startswith("encoder") + and not x.startswith("decoder") + and not x.startswith("shared") + ) + + if head_name: + return lambda x: not x.startswith(self.model.base_model_prefix) and "heads.{}".format(head_name) in x + else: + return lambda x: not x.startswith(self.model.base_model_prefix) + + def rename_func(self, old_name, new_name): + return lambda k: k.replace("heads.{}".format(old_name), "heads.{}".format(new_name)) + + def save(self, save_directory: str, name: str = None): + """ + Saves a prediction head module into the given directory. + + Args: + save_directory (str): The directory to save the weights in. + name (str, optional): The prediction head name. + """ + + if name: + if hasattr(self.model, "heads"): + if name not in self.model.heads: + if self.error_on_missing: + raise ValueError(f"Unknown head_name '{name}'.") + else: + logger.debug(f"No prediction head with name '{name}' available.") + return + else: + # we haven't found a prediction head configuration, so we assume there is only one (unnamed) head + # (e.g. this is the case if we use a 'classic' Hf model with head) + # -> ignore the name and go on + name = None + if not exists(save_directory): + mkdir(save_directory) + else: + assert isdir(save_directory), "Saving path should be a directory where the head can be saved." + + # if we use a custom head, save it + if name and hasattr(self.model, "heads"): + head = self.model.heads[name] + head_config = head.config + else: + head_config = None + + # Save the adapter configuration + config_dict = build_full_config( + head_config, + self.model.config, + name=name, + model_name=self.model.model_name, + model_class=self.model.__class__.__name__, + save_id2label=True, + ) + # Add number of labels to config if present + if head_config is None and hasattr(self.model.config, "num_labels"): + config_dict["num_labels"] = self.model.config.num_labels + + self.weights_helper.save_weights_config(save_directory, config_dict) + + # Save head weights + + filter_func = self.filter_func(name) + self.weights_helper.save_weights(save_directory, filter_func) + + def load(self, save_directory, load_as=None, loading_info=None, **kwargs): + """ + Loads a prediction head module from the given directory. + + Args: + save_directory (str): The directory from where to load the weights. + load_as (str, optional): Load the weights with this name. Defaults to None. + + Returns: + Tuple[str, str]: A tuple consisting of the local file system directory from which the weights where loaded + and the name of the loaded weights. + """ + if not exists(join(save_directory, HEAD_WEIGHTS_NAME)): + if self.error_on_missing: + raise ValueError("Loading path should be a directory where the head is saved.") + else: + logger.info("No matching prediction head found in '{}'".format(save_directory)) + return None, None + # label2id map used to override default + custom_id2label = kwargs.pop("id2label", None) + if custom_id2label: + custom_label2id = {label: id_ for id_, label in custom_id2label.items()} + else: + custom_label2id = None + + head_name = None + conversion_rename_func = None + + # Load head config if available - otherwise just blindly try to load the weights + if isfile(join(save_directory, HEAD_CONFIG_NAME)): + config = self.weights_helper.load_weights_config(save_directory) + # make sure that the model class of the loaded head matches the current class + if not self.convert_to_flex_head and self.model.__class__.__name__ != config["model_class"]: + error_msg = ( + f"Model class '{config['model_class']}' of found prediction head does not match current model" + " class." + ) + if self.error_on_missing: + raise ValueError(error_msg) + else: + logger.warning(error_msg) + return None, None + + # model with flex heads + if hasattr(self.model, "heads"): + # load head of same model class, no conversion needed + if self.model.__class__.__name__ == config["model_class"]: + head_name = load_as or config["name"] + head_config = config["config"] + elif config["model_class"].endswith("ModelWithHeads"): + this_class = self.model.__class__.__name__.replace("AdapterModel", "") + other_class = config["model_class"].replace("ModelWithHeads", "") + if this_class == other_class: + head_name = load_as or config["name"] + head_config = config["config"] + else: + raise ValueError( + f"Cannot automatically convert prediction head of model class {config['model_class']} to" + " flex head." + ) + # try to convert a static head to a flex head + elif self.convert_to_flex_head and config["model_class"] in STATIC_TO_FLEX_HEAD_MAP: + head_name = kwargs.pop("main_load_name", load_as) + if head_name is None: + raise ValueError( + "Could not identify a name for the prediction head to be loaded. Please specify 'load_as'." + ) + head_config, conversion_rename_func = get_head_config_and_rename_list( + config["model_class"], + head_name, + custom_label2id or config.get("label2id"), + num_labels=config.get("num_labels"), + ) + else: + raise ValueError( + f"Cannot automatically convert prediction head of model class {config['model_class']} to flex" + " head." + ) + if head_name in self.model.heads: + logger.warning("Overwriting existing head '{}'".format(head_name)) + + # make sure the label2id map is correct + custom_label2id = custom_label2id or head_config.get("label2id", None) + if custom_label2id: + head_config["id2label"] = {int(id_): label for label, id_ in custom_label2id.items()} + head_config["label2id"] = {label: int(id_) for label, id_ in custom_label2id.items()} + + self.model.add_prediction_head_from_config( + head_name, head_config, overwrite_ok=True, set_active=kwargs.pop("set_active", True) + ) + # model with static head + else: + if self.convert_to_flex_head: + raise ValueError("Cannot set convert_flex_head on model class with static head.") + custom_label2id = custom_label2id or config.get("label2id", None) + if custom_label2id: + self.model.config.id2label = {int(id_): label for label, id_ in custom_label2id.items()} + self.model.config.label2id = {label: int(id_) for label, id_ in custom_label2id.items()} + + # Load head weights + filter_func = self.filter_func(head_name) + rename_funcs = [] + if load_as: + rename_funcs.append(self.rename_func(config["name"], load_as)) + if conversion_rename_func: + rename_funcs.append(conversion_rename_func) + self.weights_helper.load_weights( + save_directory, filter_func, rename_func=rename_funcs, loading_info=loading_info + ) + + return save_directory, head_name + + def convert_static_to_flex_head(self, state_dict, load_as="default"): + """ + Loads a prediction head module from the given state dict, which contains a static head checkpoint. + + Args: + state_dict (dict): The static head checkpoint from which to load the head module. Can be None. + load_as (str, optional): Load the weights with this name. Defaults to None. + + Returns: + Tuple[dict, dict]: A tuple consisting of the head config and the state dict of the loaded weights. + """ + assert self.convert_to_flex_head, "load_from_state_dict() can only be used with convert_to_flex_head=True." + assert hasattr(self.model, "heads"), "load_from_state_dict() can only be used with flex heads model class." + + if state_dict is None: + return None, None + + conversion_rename_func = None + + original_model_class = self.model.config.architectures[0] if self.model.config.architectures else None + if original_model_class in STATIC_TO_FLEX_HEAD_MAP: + head_config, conversion_rename_func = get_head_config_and_rename_list( + original_model_class, + load_as, + getattr(self.model.config, "label2id"), + ) + elif self.error_on_missing: + raise ValueError( + f"Cannot automatically convert prediction head of model class {original_model_class} to flex head." + ) + else: + return None, None + + # Load head weights + if state_dict is not None: + new_state_dict = {} + for k, v in state_dict.items(): + new_k = conversion_rename_func(k) + new_state_dict[new_k] = v + else: + new_state_dict = None + return head_config, new_state_dict diff --git a/adapters/src/adapters/methods/__init__.py b/adapters/src/adapters/methods/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/adapters/src/adapters/methods/adapter_layer_base.py b/adapters/src/adapters/methods/adapter_layer_base.py new file mode 100644 index 00000000..2489d445 --- /dev/null +++ b/adapters/src/adapters/methods/adapter_layer_base.py @@ -0,0 +1,482 @@ +from abc import ABCMeta, abstractmethod +from typing import Collection, Dict, List, NamedTuple, Union + +import numpy as np +import torch +from torch import nn + +from ..composition import ALLOWED_NESTINGS, AdapterCompositionBlock, Average, BatchSplit, Fuse, Parallel, Split, Stack +from ..context import AdapterSetup, ForwardContext + + +# We don't inherit from ABC because __slots__ changes object layout +class AdapterLayerBase(metaclass=ABCMeta): + """ + Base class for all adaptation methods that require per-layer modules. + + Make sure the 'adapter_modules_name' attribute is overriden in derived classes. + """ + + adapter_modules_name = "" + + @property + def adapter_modules(self) -> Collection: + return getattr(self, self.adapter_modules_name) + + @property + def layer_idx(self): + return getattr(self, "_layer_idx", -1) + + @layer_idx.setter + def layer_idx(self, layer_idx): + idx = getattr(self, "_layer_idx", layer_idx) + assert idx == layer_idx + setattr(self, "_layer_idx", idx) + + def get_active_setup(self): + if hasattr(self, "adapters_config"): + # First check current context before falling back to defined setup + context = AdapterSetup.get_context() + if context is not None: + adapter_setup = context.adapter_setup + else: + adapter_setup = self.adapters_config.active_setup + else: + adapter_setup = None + skip_adapters = adapter_setup is None or ( + self.adapters_config.skip_layers is not None and self.layer_idx in self.adapters_config.skip_layers + ) + if not skip_adapters and (len(set(self.adapter_modules.keys()) & adapter_setup.flatten()) > 0): + return adapter_setup + else: + return None + + def _store_gating_score(self, adapter_name, gating_score): + context = ForwardContext.get_context() + if context.output_adapter_gating_scores: + gating_cache = context.adapter_gating_scores + if self.layer_idx not in gating_cache[adapter_name]: + gating_cache[adapter_name][self.layer_idx] = {} + gating_score = gating_score.detach().squeeze().cpu().numpy() + if len(gating_score.shape) == 0: + gating_score = np.expand_dims(gating_score, axis=0) + cache_score = gating_cache[adapter_name][self.layer_idx].get(self.location_key, None) + if cache_score is not None: + gating_cache[adapter_name][self.layer_idx][self.location_key] = np.column_stack( + (cache_score, gating_score) + ) + else: + gating_cache[adapter_name][self.layer_idx][self.location_key] = gating_score + + def _store_fusion_attentions(self, fusion_name, attentions): + context = ForwardContext.get_context() + if context.output_adapter_fusion_attentions: + attention_cache = context.adapter_fusion_attentions + if self.layer_idx not in attention_cache[fusion_name]: + attention_cache[fusion_name][self.layer_idx] = {} + attention_cache[fusion_name][self.layer_idx][self.location_key] = attentions + + @abstractmethod + def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: + """Adds a new adapter module to the layer. + + Args: + adapter_name (str): The name of the new adapter to add. + layer_idx (int): + The index of the adapters layer (this should be set once by the first added adapter and the kept fix). + + Returns: + bool: True if the adapter was added, False otherwise. + """ + raise NotImplementedError() + + @abstractmethod + def average_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: + """Averages a set of adapter modules into a new adapter module. + + Args: + adapter_name (str): The name of the new (averaged) adapter module to add. + input_adapters (Dict[str, float]): Either: + - a list of adapter names (with equal weighting). + - a dictionary of adapter names and their corresponding weights. + + Returns: + bool: True if the adapter was added, False otherwise. + """ + raise NotImplementedError() + + @abstractmethod + def delete_adapter(self, adapter_name: str): + """Deletes an adapter module from the layer. + + Args: + adapter_name (str): The name of the adapter to delete. + """ + raise NotImplementedError() + + @abstractmethod + def add_fusion_layer(self, adapter_names: Union[List, str]): + # TODO remove this method from the base class + raise NotImplementedError() + + @abstractmethod + def delete_fusion_layer(self, adapter_names: Union[List, str]): + # TODO remove this method from the base class + raise NotImplementedError() + + @abstractmethod + def enable_adapters(self, adapter_setup: AdapterCompositionBlock, unfreeze_adapters: bool, unfreeze_fusion: bool): + """Enables/ disables a set of adapter modules within the layer. + + Args: + adapter_setup (AdapterCompositionBlock): The adapter setup to enable/ disable. + unfreeze_adapters (bool): Whether to unfreeze the adapters. + unfreeze_fusion (bool): Whether to unfreeze the fusion layers. + """ + raise NotImplementedError() + + @abstractmethod + def get_adapter(self, adapter_name: str) -> nn.Module: + """Returns the adapter module with the given name. + + Args: + adapter_name (str): The name of the adapter module. + """ + raise NotImplementedError() + + +class ComposableAdapterLayerBase(AdapterLayerBase): + """ + Base class for all adapter methods that support composition. + + Make sure the 'adapter_modules_name' and 'supported_compositions' attributes as well as all abstract methods are + overriden in derived classes. 'allow_multi_parallelize' can be set to True to allow inputs to be parallelized + independently multiple times. This is useful when there are multiple parallel input flows through an adapter layer + (e.g. in LoRA). + """ + + supported_compositions = [] + allow_multi_parallelize = False + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._init_mapping() + + def _init_mapping(self): + self.composition_to_func_map = { + Stack: self.compose_stack, + Fuse: self.compose_fuse, + Split: self.compose_split, + BatchSplit: self.compose_batch_split, + Parallel: self.compose_parallel, + Average: self.compose_average, + } + + # START CUSTOMIZABLE METHODS # + # The following methods should be implemented in derived classes. + + def _bsz(self, state: NamedTuple) -> int: + """ + Returns the batch size of the given state. + """ + return state[0].shape[0] + + def pre_block(self, adapter_setup: Union[AdapterCompositionBlock, str], state: NamedTuple) -> NamedTuple: + """ + Optional state pre-processing method which is invoked before passing the state to the first child block of a + composition. By default, this method does not contain any logic. E.g. used for bottleneck adapters to implement + residuals and LNs. + + Args: + adapter_setup (Union[AdapterCompositionBlock, str]): The current composition or single adapter. + state (NamedTuple): The current state. + + Returns: + NamedTuple: The pre-processed state. + """ + return state + + @abstractmethod + def vslice(self, state: NamedTuple, slice_obj: slice) -> NamedTuple: + """Slices the given state along the batch size (vertical) dimension. + This is e.g. used by the BatchSplit and Parallel composition blocks. IMPORTANT: Has to be implemented by all + derived classes. + + Args: + state (NamedTuple): The state to be sliced. + slice_obj (slice): The slice object. + + Returns: + NamedTuple: The sliced state. + """ + raise NotImplementedError() + + @abstractmethod + def pad_and_concat(self, states: List[NamedTuple]) -> NamedTuple: + """Concatenates the given states along the batch size dimension. + Pads the states before concatenation if necessary. This is e.g. used by the BatchSplit and Parallel composition + blocks. IMPORTANT: Has to be implemented by all derived classes. + + Args: + states (List[NamedTuple]): The states to be concatenated. + + Returns: + NamedTuple: The concatenated state. + """ + raise NotImplementedError() + + @abstractmethod + def repeat(self, state: NamedTuple, channels: int) -> NamedTuple: + """Repeats the given state along the batch size dimension for the given number of times. + This is e.g. used by the Parallel composition block. IMPORTANT: Has to be implemented by all derived classes. + + Args: + state (NamedTuple): The state to be repeated. + channels (int): The number of times the state should be repeated. + + Returns: + NamedTuple: The repeated state. + """ + raise NotImplementedError() + + @abstractmethod + def mean(self, states: List[NamedTuple], weights: torch.Tensor) -> NamedTuple: + """Averages the given states along the batch size dimension by the given weights. + This is e.g. used by the Average composition block. IMPORTANT: Has to be implemented by all derived classes. + + Args: + states (List[NamedTuple]): The states to be averaged. + weights (torch.Tensor): The averaging weights. + + Returns: + NamedTuple: The averaged state. + """ + raise NotImplementedError() + + @abstractmethod + def compose_single(self, adapter_setup: str, state: NamedTuple, lvl: int = 0) -> NamedTuple: + """Forwards the given state through the given single adapter. + + Args: + adapter_setup (str): The name of the adapter. + state (NamedTuple): The state to be forwarded. + lvl (int, optional): The composition depth. Defaults to 0. + + Returns: + NamedTuple: The state after forwarding through the adapter. + """ + raise NotImplementedError() + + # END CUSTOMIZABLE METHODS # + + def check_composition_valid(self, parent: AdapterCompositionBlock, child: AdapterCompositionBlock, lvl: int): + """Checks whether the given composition is valid. + + Args: + parent (AdapterCompositionBlock): The parent composition block. + child (AdapterCompositionBlock): The child composition block. + lvl (int): The composition depth. + + Raises: + ValueError: If the composition is invalid. + """ + # Break if setup is too deep + if isinstance(parent, Stack) and lvl >= 1: + raise ValueError( + "Specified adapter setup is too deep. Cannot have {} at level {}".format(child.__class__.__name__, lvl) + ) + elif type(child) not in ALLOWED_NESTINGS[type(parent)]: + raise ValueError( + "Cannot nest {} inside {}. Only the following nestings are allowed: {}".format( + child.__class__.__name__, + parent.__class__.__name__, + ", ".join([t.__name__ for t in ALLOWED_NESTINGS[type(parent)]]), + ) + ) + + def compose_stack(self, adapter_setup: Stack, state: NamedTuple, lvl: int = 0) -> NamedTuple: + """ + For sequentially stacking multiple adapters. + """ + for i, adapter_stack_layer in enumerate(adapter_setup): + if isinstance(adapter_stack_layer, AdapterCompositionBlock): + self.check_composition_valid(adapter_setup, adapter_stack_layer, lvl) + composition_func = self.composition_to_func_map[type(adapter_stack_layer)] + state = composition_func(adapter_stack_layer, state, lvl=lvl + 1) + elif adapter_stack_layer in self.adapter_modules: + state = self.pre_block(adapter_stack_layer, state) + state = self.compose_single(adapter_stack_layer, state, lvl=lvl + 1) + else: + raise ValueError( + "Invalid adapter setup: {} is not a valid adapter name or composition block.".format( + adapter_stack_layer.__class__.__name__ + ) + ) + + return state + + def compose_fuse(self, adapter_setup: Fuse, state: NamedTuple, lvl: int = 0): + """ + For fusing multiple adapters using adapter fusion. NOTE: This method has no default implementation. + """ + # Fuse is currently only applicable to bottleneck adapters, thus don't provide a default implementation + raise NotImplementedError() + + def compose_split(self, adapter_setup: Split, state: NamedTuple, lvl: int = 0): + """ + For splitting to multiple adapters along the sequence length dimension. NOTE: This method has no default + implementation. + """ + # Split is currently only applicable to bottleneck adapters, thus don't provide a default implementation + raise NotImplementedError() + + def compose_batch_split(self, adapter_setup: BatchSplit, state: NamedTuple, lvl: int = 0): + """ + For splitting to multiple adapters along the batch size dimension. + """ + if sum(adapter_setup.batch_sizes) != self._bsz(state): + raise IndexError( + "The given batch has a size of {} which is not equal to the sum of batch_sizes {}".format( + self._bsz(state), adapter_setup.batch_sizes + ) + ) + + state = self.pre_block(adapter_setup, state) + + # sequentially feed different parts of the blown-up batch into different adapters + children_states = [] + for i, child in enumerate(adapter_setup): + # compute ids of sequences that should be passed to the ith adapter + batch_idx = ( + sum(adapter_setup.batch_sizes[:i]), + sum(adapter_setup.batch_sizes[: i + 1]), + ) + if isinstance(child, AdapterCompositionBlock): + self.check_composition_valid(adapter_setup, child, lvl) + composition_func = self.composition_to_func_map[type(child)] + child_state = composition_func( + child, + self.vslice(state, slice(*batch_idx)), + lvl=lvl + 1, + ) + children_states.append(child_state) + elif child in self.adapter_modules: + child_state = self.compose_single( + child, + self.vslice(state, slice(*batch_idx)), + lvl=lvl + 1, + ) + children_states.append(child_state) + else: + children_states.append(self.vslice(state, slice(*batch_idx))) + + # concatenate all outputs and return + state = self.pad_and_concat(children_states) + return state + + def compose_parallel(self, adapter_setup: Parallel, state: NamedTuple, lvl: int = 0): + """ + For parallel execution of the adapters on the same input. This means that the input is repeated N times before + feeding it to the adapters (where N is the number of adapters). + """ + + context = ForwardContext.get_context() + if not context.adapters_parallelized: + orig_batch_size = self._bsz(state) + state = self.repeat(state, adapter_setup.parallel_channels) + context.adapters_parallelized = True + context.original_batch_size = orig_batch_size + else: + bsz = self._bsz(state) + # If the input was already parallelized, we can parallelize it again. + # This is useful e.g. for LoRA, where attention matrices are parallelized independently. + if self.allow_multi_parallelize and bsz == getattr(context, "original_batch_size", -1): + state = self.repeat(state, adapter_setup.parallel_channels) + orig_batch_size = bsz + # The base model should handle replication of input. + # Therefore, we assume the (replicated) input batch to be divisible by the number of parallel channels. + elif bsz % adapter_setup.parallel_channels != 0: + raise ValueError( + "The total input batch size in a Parallel adapter block must be divisible by the number of" + " parallel channels." + ) + else: + orig_batch_size = bsz // adapter_setup.parallel_channels + + state = self.pre_block(adapter_setup, state) + + # sequentially feed different parts of the blown-up batch into different adapters + children_states = [] + for i, child in enumerate(adapter_setup): + if isinstance(child, AdapterCompositionBlock): + self.check_composition_valid(adapter_setup, child, lvl) + composition_func = self.composition_to_func_map[type(child)] + child_state = composition_func( + child, + self.vslice(state, slice(i * orig_batch_size, (i + 1) * orig_batch_size)), + lvl=lvl + 1, + ) + children_states.append(child_state) + elif child in self.adapter_modules: + child_state = self.compose_single( + child, + self.vslice(state, slice(i * orig_batch_size, (i + 1) * orig_batch_size)), + lvl=lvl + 1, + ) + children_states.append(child_state) + else: + children_states.append(self.vslice(state, slice(i * orig_batch_size, (i + 1) * orig_batch_size))) + + # concatenate all outputs and return + state = self.pad_and_concat(children_states) + return state + + def compose_average(self, adapter_setup: Average, state: NamedTuple, lvl: int = 0): + """ + For averaging the output representations of multiple adapters. + """ + + state = self.pre_block(adapter_setup, state) + + children_states = [] + for i, child in enumerate(adapter_setup): + if isinstance(child, AdapterCompositionBlock): + self.check_composition_valid(adapter_setup, child, lvl) + composition_func = self.composition_to_func_map[type(child)] + child_state = composition_func(child, state, lvl=lvl + 1) + children_states.append(child_state) + elif child in self.adapter_modules: + child_state = self.compose_single(child, state, lvl=lvl + 1) + children_states.append(child_state) + else: + pass + + weights = torch.tensor(adapter_setup.weights)[:, None, None, None].to(state[0].device) + state = self.mean(children_states, weights) + + return state + + def compose(self, adapter_setup: Union[AdapterCompositionBlock, str], state: NamedTuple) -> NamedTuple: + """The main composition forward method which recursively calls the composition blocks forward methods. + This method should be called by the forward method of the derived class. + + Args: + adapter_setup (Union[AdapterCompositionBlock, str]): The adapter setup to be used. + state (NamedTuple): The current state. + + Returns: + NamedTuple: The state after forwarding through the adapter setup. + """ + if isinstance(adapter_setup, AdapterCompositionBlock): + composition_func = self.composition_to_func_map[type(adapter_setup)] + state = composition_func(adapter_setup, state, lvl=0) + elif adapter_setup in self.adapter_modules: + state = self.compose_single(adapter_setup, state, lvl=0) + else: + raise ValueError( + "Invalid adapter setup: {} is not a valid adapter name or composition block.".format( + adapter_setup.__class__.__name__ + ) + ) + + return state diff --git a/adapters/src/adapters/methods/bottleneck.py b/adapters/src/adapters/methods/bottleneck.py new file mode 100644 index 00000000..c1501916 --- /dev/null +++ b/adapters/src/adapters/methods/bottleneck.py @@ -0,0 +1,372 @@ +from typing import Dict, List, Mapping, NamedTuple, Optional, Union + +import torch +from torch import nn + +from ..composition import ( + AdapterCompositionBlock, + Average, + BatchSplit, + Fuse, + Parallel, + Split, + Stack, + adjust_tensors_for_parallel, +) +from ..configuration import BnConfig +from ..context import ForwardContext +from .adapter_layer_base import ComposableAdapterLayerBase +from .modeling import Adapter, BertFusion, ParallelAdapter + + +class BottleneckState(NamedTuple): + """ + Models the input and output states of a bottleneck adapter layer. + + Args: + hidden_states (torch.Tensor): The layer input/ output hidden states. + input_tensor (torch.Tensor): The Transformer sub-block residual connection inputs. + adapter_residual (torch.Tensor): The adapter residual connection inputs. + layer_norm (torch.nn.Module, optional): The Transformer layer norm module. + bottleneck_up (torch.Tensor, optional): + The up-projected bottleneck MLP output. This is only for Fuse compositions. + """ + + hidden_states: torch.Tensor + input_tensor: torch.Tensor + adapter_residual: torch.Tensor + layer_norm: Optional[torch.nn.Module] + bottleneck_up: Optional[torch.Tensor] = None + + +class BottleneckLayer(ComposableAdapterLayerBase, nn.Module): + adapter_modules_name = "adapters" + supported_compositions = [Stack, Fuse, Split, Parallel, BatchSplit, Average] + + def __init__(self, location_key: str): + super().__init__() + self.location_key = location_key + + def init_adapters(self, model_config, adapters_config): + self._init_mapping() + self.model_config = model_config + self.adapters_config = adapters_config + self.adapters = nn.ModuleDict(dict()) + self.adapter_fusion_layer = nn.ModuleDict(dict()) + + def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: + self.layer_idx = layer_idx + adapter_config = self.adapters_config.match( + adapter_name, + config_type=BnConfig, + layer_idx=self.layer_idx, + location_key=self.location_key, + ) + if adapter_config is not None: + reduction_factor = adapter_config["reduction_factor"] + if isinstance(reduction_factor, Mapping): + if str(self.layer_idx) in reduction_factor: + reduction_factor = reduction_factor[str(self.layer_idx)] + elif "default" in reduction_factor: + reduction_factor = reduction_factor["default"] + else: + raise KeyError( + "The given reduction factor mapping does not give a default value and does not specify each " + "reduction factor individually. You need to provide a default value like this: " + '{"1": 16, "default": 16}' + ) + + if adapter_config.is_parallel: + adapter_class = ParallelAdapter + else: + adapter_class = Adapter + adapter = adapter_class( + adapter_name=adapter_name, + input_size=self.model_config.hidden_size, + down_sample=int(self.model_config.hidden_size // reduction_factor), + config=adapter_config, + ) + adapter.train(self.training) # make sure training mode is consistent + self.adapters[adapter_name] = adapter + return True + + return False + + def average_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: + # add new adapter + if self.add_adapter(adapter_name, self.layer_idx): + # average weights + avg_state_dict = {} + for name, weight in input_adapters.items(): + if name in self.adapters: + module = self.adapters[name] + for k, v in module.state_dict().items(): + if k in avg_state_dict: + avg_state_dict[k] += weight * v + else: + avg_state_dict[k] = weight * v + else: + self.delete_adapter(adapter_name) # clean up before raising error + raise ValueError("Adapter {} not found.".format(name)) + # load averaged weights + self.adapters[adapter_name].load_state_dict(avg_state_dict) + return True + + return False + + def delete_adapter(self, adapter_name: str): + if adapter_name in self.adapters: + del self.adapters[adapter_name] + + def add_fusion_layer(self, adapter_names: Union[List, str]): + """See BertModel.add_fusion_layer""" + adapter_names = adapter_names if isinstance(adapter_names, list) else adapter_names.split(",") + if self.adapters_config.common_config_value(adapter_names, self.location_key): + fusion_config = self.adapters_config.get_fusion(adapter_names) + dropout_prob = fusion_config.dropout_prob or getattr(self.model_config, "attention_probs_dropout_prob", 0) + fusion = BertFusion( + fusion_config, + self.model_config.hidden_size, + dropout_prob, + ) + fusion.train(self.training) # make sure training mode is consistent + self.adapter_fusion_layer[",".join(adapter_names)] = fusion + + def delete_fusion_layer(self, adapter_names: Union[List, str]): + adapter_names = adapter_names if isinstance(adapter_names, str) else ",".join(adapter_names) + if adapter_names in self.adapter_fusion_layer: + del self.adapter_fusion_layer[adapter_names] + + def enable_adapters(self, adapter_setup: AdapterCompositionBlock, unfreeze_adapters: bool, unfreeze_fusion: bool): + """ + Unfreezes a given list of adapters, the adapter fusion layer, or both + + Args: + adapter_names: names of adapters to unfreeze (or names of adapters part of the fusion layer to unfreeze) + unfreeze_adapters: whether the adapter weights should be activated + unfreeze_fusion: whether the adapter fusion layer for the given adapters should be activated + """ + if unfreeze_adapters: + for adapter_name in adapter_setup.flatten(): + if adapter_name in self.adapters: + for param in self.adapters[adapter_name].parameters(): + param.requires_grad = True + if unfreeze_fusion: + if isinstance(adapter_setup, Fuse): + if adapter_setup.name in self.adapter_fusion_layer: + for param in self.adapter_fusion_layer[adapter_setup.name].parameters(): + param.requires_grad = True + for sub_setup in adapter_setup: + if isinstance(sub_setup, Fuse): + if sub_setup.name in self.adapter_fusion_layer: + for param in self.adapter_fusion_layer[sub_setup.name].parameters(): + param.requires_grad = True + + def freeze_adapter(self, adapter_name: str, freeze: bool = True): + if adapter_name in self.adapters: + self.adapters[adapter_name].train(not freeze) + for param in self.adapters[adapter_name].parameters(): + param.requires_grad = not freeze + + def get_adapter(self, adapter_name: str): + if adapter_name in self.adapters: + return self.adapters[adapter_name] + else: + return None + + def pre_block(self, adapter_setup: Union[AdapterCompositionBlock, str], state: BottleneckState) -> BottleneckState: + if isinstance(adapter_setup, AdapterCompositionBlock): + adapter_name = adapter_setup.first() + else: + adapter_name = adapter_setup + first_adapter = self.adapters[adapter_name] + hidden_states, _, residual = first_adapter.pre_forward( + state.hidden_states, state.input_tensor, state.layer_norm + ) + + return state._replace(hidden_states=hidden_states, adapter_residual=residual) + + def vslice(self, state: BottleneckState, slice_obj: slice) -> BottleneckState: + return BottleneckState( + state.hidden_states[slice_obj], + state.input_tensor[slice_obj], + state.adapter_residual[slice_obj], + state.layer_norm, + state.bottleneck_up[slice_obj] if state.bottleneck_up is not None else None, + ) + + def pad_and_concat(self, states: List[BottleneckState]) -> BottleneckState: + return BottleneckState( + torch.cat([state.hidden_states for state in states], dim=0), + torch.cat([state.input_tensor for state in states], dim=0), + torch.cat([state.adapter_residual for state in states], dim=0), + states[0].layer_norm, + torch.cat([state.bottleneck_up for state in states], dim=0) + if states[0].bottleneck_up is not None + else None, + ) + + def repeat(self, state: BottleneckState, channels: int) -> BottleneckState: + return BottleneckState( + state.hidden_states.repeat(channels, 1, 1), + state.input_tensor.repeat(channels, 1, 1), + state.adapter_residual.repeat(channels, 1, 1), + state.layer_norm, + state.bottleneck_up.repeat(channels, 1, 1) if state.bottleneck_up is not None else None, + ) + + def mean(self, states: List[BottleneckState], weights: torch.Tensor) -> BottleneckState: + return BottleneckState( + torch.mean(torch.stack([s.hidden_states for s in states], 0) * weights, dim=0), + states[0].input_tensor, + states[0].adapter_residual, + states[0].layer_norm, + states[0].bottleneck_up, + ) + + def compose_single(self, adapter_setup: str, state: BottleneckState, lvl: int = 0) -> BottleneckState: + adapter_layer = self.adapters[adapter_setup] + context = ForwardContext.get_context() + layer_output = adapter_layer( + state.hidden_states, + residual_input=state.adapter_residual, + output_gating=context.output_adapter_gating_scores, + ) + hidden_states, up = layer_output[0], layer_output[2] + self._store_gating_score(adapter_setup, layer_output[-1]) + + return BottleneckState(hidden_states, state.input_tensor, state.adapter_residual, state.layer_norm, up) + + def compose_fuse(self, adapter_setup: Fuse, state: BottleneckState, lvl: int = 0): + """ + Performs adapter fusion with the given adapters for the given input. + """ + context = ForwardContext.get_context() + + # config of _last_ fused adapter is significant + fusion_config = self.adapters_config.get_fusion(adapter_setup.name) + last_adapter = self.adapters[adapter_setup.last()] + hidden_states, query, residual = last_adapter.pre_forward( + state.hidden_states, state.input_tensor, state.layer_norm, fusion_config=fusion_config + ) + state = state._replace(hidden_states=hidden_states, adapter_residual=residual) + + children_states = [] + for child in adapter_setup: + if isinstance(child, AdapterCompositionBlock): + self.check_composition_valid(adapter_setup, child, lvl) + composition_func = self.composition_to_func_map[type(child)] + child_state = composition_func(child, state, lvl=lvl + 1) + children_states.append(child_state) + elif child in self.adapter_modules: + child_state = self.compose_single(child, state, lvl=lvl + 1) + children_states.append(child_state) + else: + pass + + if len(children_states) > 0: + up_list = torch.stack([state.bottleneck_up for state in children_states]) + up_list = up_list.permute(1, 2, 0, 3) + + fusion_output = self.adapter_fusion_layer[adapter_setup.name]( + query, + up_list, + up_list, + state.adapter_residual, + output_attentions=context.output_adapter_fusion_attentions, + ) + if context.output_adapter_fusion_attentions: + hidden_states = fusion_output[0] + self._store_fusion_attentions(adapter_setup.name, fusion_output[-1]) + else: + hidden_states = fusion_output + + return state._replace(hidden_states=hidden_states) + + def compose_split(self, adapter_setup: Split, state: BottleneckState, lvl: int = 0): + """ + Splits the given input between the given adapters. + """ + if sum(adapter_setup.splits) != state.hidden_states.shape[1]: + raise IndexError( + "The given input has sequence length {} which is not equal to the sum of splits {}".format( + state.hidden_states.shape[1], adapter_setup.splits + ) + ) + + state = self.pre_block(adapter_setup, state) + + children_states = [] + for i, child in enumerate(adapter_setup): + batch_idx = ( + sum(adapter_setup.splits[:i]), + sum(adapter_setup.splits[: i + 1]), + ) + child_state = BottleneckState( + state.hidden_states[:, batch_idx[0] : batch_idx[1], :], + state.input_tensor[:, batch_idx[0] : batch_idx[1], :], + state.adapter_residual[:, batch_idx[0] : batch_idx[1], :], + state.layer_norm, + state.bottleneck_up[:, batch_idx[0] : batch_idx[1], :] if state.bottleneck_up is not None else None, + ) + if isinstance(child, AdapterCompositionBlock): + self.check_composition_valid(adapter_setup, child, lvl) + composition_func = self.composition_to_func_map[type(child)] + child_state = composition_func(child, child_state, lvl=lvl + 1) + children_states.append(child_state) + elif child in self.adapter_modules: + child_state = self.compose_single(child, child_state, lvl=lvl + 1) + children_states.append(child_state) + else: + pass + + hidden_states = torch.cat([child.hidden_states for child in children_states], dim=1) + return state._replace(hidden_states=hidden_states) + + def bottleneck_layer_forward(self, hidden_states, residual_input, layer_norm): + """Forward pass through the adapter layer. + NOTE: This method should only be called if the calling module directly inherits from BottleneckLayer. + Otherwise, call the regular forward() method. + + Args: + hidden_states (torch.Tensor): Input hidden states to the adapter layer. + residual_input (torch.Tensor): Residual input to the adapter layer. + layer_norm (torch.nn.Module): Transformer layer normalization module to be used by the adapter layer. + + Returns: + torch.Tensor: Output hidden states of the adapter layer. + """ + # Batch sizes might be different due to prefix tuning w. Parallel block + (residual_input,) = adjust_tensors_for_parallel(hidden_states, residual_input) + # Replicate in both directions as residual might be larger (e.g. GPT-J) + (hidden_states,) = adjust_tensors_for_parallel(residual_input, hidden_states) + adapter_setup = self.get_active_setup() + if adapter_setup is not None: + input_hidden_states = hidden_states + + state = BottleneckState(hidden_states, residual_input, residual_input, layer_norm) + state = self.compose(adapter_setup, state) + hidden_states, residual_input, _, _, _ = state + + last_adapter = self.adapters[adapter_setup.last()] + hidden_states = last_adapter.post_forward(hidden_states, input_hidden_states, residual_input, layer_norm) + + elif layer_norm: + hidden_states = layer_norm(hidden_states + residual_input) + else: + hidden_states = hidden_states + residual_input + + return hidden_states + + def forward(self, hidden_states, residual_input, layer_norm): + """Forward pass through the adapter layer. + + Args: + hidden_states (torch.Tensor): Input hidden states to the adapter layer. + residual_input (torch.Tensor): Residual input to the adapter layer. + layer_norm (torch.nn.Module): Transformer layer normalization module to be used by the adapter layer. + + Returns: + torch.Tensor: Output hidden states of the adapter layer. + """ + return self.bottleneck_layer_forward(hidden_states, residual_input, layer_norm) diff --git a/adapters/src/adapters/methods/lora.py b/adapters/src/adapters/methods/lora.py new file mode 100644 index 00000000..db987a78 --- /dev/null +++ b/adapters/src/adapters/methods/lora.py @@ -0,0 +1,639 @@ +# Code adapted from https://github.com/microsoft/LoRA/blob/main/loralib/layers.py. +# ------------------------------------------------------------------------------------------ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License (MIT). See LICENSE in the repo root for license information. +# ------------------------------------------------------------------------------------------ +import logging +import math +from typing import Dict, List, NamedTuple, Optional, Union + +import torch +import torch.nn as nn +import torch.nn.functional as F + +from transformers.configuration_utils import PretrainedConfig +from transformers.pytorch_utils import Conv1D + +from ..composition import AdapterCompositionBlock, Average, BatchSplit, Parallel, Stack +from ..configuration import LoRAConfig, ModelAdaptersConfig +from .adapter_layer_base import AdapterLayerBase, ComposableAdapterLayerBase + + +logger = logging.getLogger(__name__) + + +class LoRA(nn.Module): + def __init__( + self, + lora_A_shape, + lora_B_shape, + config: LoRAConfig, + gating_heads: int = 1, + ): + super().__init__() + assert config.composition_mode == "add", "LoRA module only supports composition_mode='add'." + self.r = config.r + self.lora_alpha = config.alpha + self.composition_mode = config.composition_mode + self.attn_matrices = config.attn_matrices + self.use_gating = config.use_gating + # Optional dropout + if config.dropout > 0.0: + self.lora_dropout = nn.Dropout(p=config.dropout) + else: + self.lora_dropout = lambda x: x + + # Actual trainable parameters + self.lora_A = nn.Parameter(torch.zeros(lora_A_shape)) + self.lora_B = nn.Parameter(torch.zeros(lora_B_shape)) + self.scaling = self.lora_alpha / self.r + + # For compatibility with (IA)^3, allow all init_weights types here. + # Usually should be "lora". + if config.init_weights == "lora": + # initialize A the same way as the default for nn.Linear and B to zero + nn.init.kaiming_uniform_(self.lora_A, a=math.sqrt(5)) + nn.init.zeros_(self.lora_B) + elif config.init_weights == "bert": + nn.init.normal_(self.lora_A, std=0.02) + nn.init.normal_(self.lora_B, std=0.02) + elif config.init_weights == "ia3": + nn.init.ones_(self.lora_A) + nn.init.ones_(self.lora_B) + else: + raise ValueError("Unknown init_weights type: {}".format(config.init_weights)) + + if self.use_gating: + self.gate = nn.Linear(lora_A_shape[-1], gating_heads) + nn.init.normal_(self.gate.weight, std=0.02) + + @property + def delta_w(self) -> torch.Tensor: + return self.lora_B @ self.lora_A + + def com(self, weights: torch.Tensor, added: torch.Tensor, scaling=None) -> torch.Tensor: + """Performs the composition operation between existing and injected weights.""" + if scaling is None: + scaling = self.scaling + return weights + added * scaling + + def com_inv(self, weights: torch.Tensor, added: torch.Tensor) -> torch.Tensor: + """Inverts the composition operation between existing and injected weights.""" + return weights - added * self.scaling + + def forward(self, hidden_states: Optional[torch.Tensor], layer_input: torch.Tensor): + if hidden_states is None: + hidden_states = layer_input + hidden_states = self.lora_dropout(hidden_states) @ torch.t(self.lora_A) @ torch.t(self.lora_B) + if self.use_gating: + gate = torch.sigmoid(self.gate(layer_input)) + gate = torch.mean(gate, dim=1).unsqueeze(-1) + hidden_states = hidden_states * gate + else: + gate = None + + return hidden_states, gate + + +class IA3(nn.Module): + def __init__( + self, + lora_A_shape, + lora_B_shape, + config: LoRAConfig, + gating_heads: int = 1, + ): + super().__init__() + assert config.composition_mode == "scale", "IA3 module only supports composition_mode='scale'." + if config.r > 1: + raise ValueError("Can only use composition_mode='scale' when r == 1.") + self.r = config.r + self.lora_alpha = config.alpha + self.composition_mode = config.composition_mode + self.attn_matrices = config.attn_matrices + self.use_gating = config.use_gating + # Optional dropout + if config.dropout > 0.0: + raise ValueError("IA3 module does not support dropout.") + + # Actual trainable parameters + self.lora_B = nn.Parameter(torch.zeros(lora_B_shape)) + self.scaling = self.lora_alpha + + # For compatibility with LoRA, allow all init_weights types here. + # Usually should be "ia3". + if config.init_weights == "lora": + logger.warning("(IA)^3 module initialized with LoRA zeo init. Ignore if this is intended.") + nn.init.zeros_(self.lora_B) + elif config.init_weights == "bert": + nn.init.normal_(self.lora_B, std=0.02) + elif config.init_weights == "ia3": + nn.init.ones_(self.lora_B) + else: + raise ValueError("Unknown init_weights type: {}".format(config.init_weights)) + + if self.use_gating: + self.gate = nn.Linear(lora_A_shape[-1], gating_heads) + nn.init.normal_(self.gate.weight, std=0.02) + + @property + def delta_w(self) -> torch.Tensor: + return self.lora_B + + def com(self, weights: torch.Tensor, added: torch.Tensor, scaling=None) -> torch.Tensor: + """Performs the composition operation between existing and injected weights.""" + if scaling is None: + scaling = self.scaling + return weights * (added * scaling) + + def com_inv(self, weights: torch.Tensor, added: torch.Tensor) -> torch.Tensor: + """Inverts the composition operation between existing and injected weights.""" + return weights / (added * self.scaling) + + def forward(self, hidden_states: Optional[torch.Tensor], layer_input: torch.Tensor): + scaling_vector = self.lora_B.view(1, 1, -1).repeat(layer_input.shape[0], 1, 1) + if hidden_states is None: + hidden_states = scaling_vector + else: + hidden_states = hidden_states * scaling_vector + if self.use_gating: + gate = torch.sigmoid(self.gate(layer_input)) + gate = torch.mean(gate, dim=1).unsqueeze(-1) + hidden_states = hidden_states * gate + else: + gate = None + + return hidden_states, gate + + +class LoRALayer(AdapterLayerBase): + adapter_modules_name = "loras" + + def __init__( + self, location_key: str, model_config: PretrainedConfig, adapters_config: ModelAdaptersConfig, *args, **kwargs + ): + super().__init__(*args, **kwargs) + self.location_key = location_key + "_lora" + self.model_config = model_config + self.adapters_config = adapters_config + self.loras = nn.ModuleDict(dict()) + + self.merged = False + + def get_n_heads(self, lora: Union[LoRA, IA3, LoRAConfig]): + return 1 + + def _check_lora_location(self, config: LoRAConfig): + return True + + def _get_lora_shapes(self, config: LoRAConfig): + raise NotImplementedError() + + def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: + self.layer_idx = layer_idx + lora_config = self.adapters_config.match( + adapter_name, + config_type=LoRAConfig, + layer_idx=self.layer_idx, + location_key=self.location_key, + ) + if lora_config is not None and self._check_lora_location(lora_config): + if lora_config.composition_mode == "add": + lora_cls = LoRA + elif lora_config.composition_mode == "scale": + lora_cls = IA3 + else: + raise ValueError(f"Unknown composition_mode: {lora_config.composition_mode}") + lora = lora_cls( + *self._get_lora_shapes(lora_config), + lora_config, + gating_heads=self.get_n_heads(lora_config), + ) + lora.train(self.training) + self.loras[adapter_name] = lora + return True + + return False + + def average_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: + # add new adapter + if self.add_adapter(adapter_name, self.layer_idx): + # average weights + avg_state_dict = {} + for name, weight in input_adapters.items(): + if name in self.loras: + module = self.loras[name] + for k, v in module.state_dict().items(): + if k in avg_state_dict: + avg_state_dict[k] += weight * v + else: + avg_state_dict[k] = weight * v + else: + self.delete_adapter(adapter_name) # clean up before raising error + raise ValueError("Adapter {} not found.".format(name)) + # load averaged weights + self.loras[adapter_name].load_state_dict(avg_state_dict) + return True + + return False + + def delete_adapter(self, adapter_name: str): + if adapter_name in self.loras: + del self.loras[adapter_name] + + def add_fusion_layer(self, adapter_names: Union[List, str]): + pass # not applicable to lora + + def delete_fusion_layer(self, adapter_names: Union[List, str]): + pass # not applicable to lora + + def enable_adapters(self, adapter_setup: AdapterCompositionBlock, unfreeze_adapters: bool, unfreeze_fusion: bool): + if unfreeze_adapters: + for name in adapter_setup.flatten(): + if name in self.loras: + for param in self.loras[name].parameters(): + param.requires_grad = True + + def freeze_adapter(self, adapter_name: str, freeze: bool = True): + if adapter_name in self.loras: + self.loras[adapter_name].train(not freeze) + for param in self.loras[adapter_name].parameters(): + param.requires_grad = not freeze + + def get_adapter(self, adapter_name: str) -> nn.Module: + if adapter_name in self.loras: + return self.loras[adapter_name] + else: + return None + + +class LoRAState(NamedTuple): + """Models the input and output states of a LoRA layer. + + Args: + layer_input (torch.Tensor): The input states to the adapted layer. + hidden_states (Optional[torch.Tensor]): + The hidden states of the adaptation module. These can be None before passing through the first LoRA/ IA3 + module. + layer_output (torch.Tensor): The output states of the original layer without adaptation. + """ + + layer_input: torch.Tensor + hidden_states: Optional[torch.Tensor] + layer_output: torch.Tensor + + +class LoRALinear(LoRALayer, ComposableAdapterLayerBase, nn.Linear): + """ + LoRA implementation for Linear layer. This layer supports composition. + + Args: + fan_in_fan_out (bool, optional): + Set this to True if the layer to replace stores weight like (fan_in, fan_out). Defaults to False. + no_init_bias (bool, optional): Use this to add a bias that is not initialized by PyTorch. Defaults to False. + + """ + + supported_compositions = [Stack, BatchSplit, Average, Parallel] + allow_multi_parallelize = True + + def __init__( + self, + in_features: int, + out_features: int, + location_key: str, + model_config: PretrainedConfig, + adapters_config: ModelAdaptersConfig, + attn_key: str = None, + fan_in_fan_out: bool = False, + no_init_bias: bool = False, + **kwargs + ): + if no_init_bias and "bias" not in kwargs: + kwargs["bias"] = False + LoRALayer.__init__(self, location_key, model_config, adapters_config, in_features, out_features, **kwargs) + + self.attn_key = attn_key + self.fan_in_fan_out = fan_in_fan_out + if fan_in_fan_out: + self.weight.data = torch.t(self.weight.data) + if no_init_bias: + self.bias = nn.Parameter(torch.empty(out_features)) + + @classmethod + def wrap( + cls, + module: Union[nn.Linear, Conv1D], + location_key: str, + model_config: PretrainedConfig, + adapters_config: ModelAdaptersConfig, + attn_key: str = None, + **kwargs + ): + if isinstance(module, Conv1D): + new_module = cls( + module.weight.shape[0], + module.weight.shape[1], + location_key, + model_config, + adapters_config, + attn_key=attn_key, + **kwargs, + ) + else: + # Make sure that the bias is not added if the original module does not have one + if "bias" not in kwargs: + kwargs["bias"] = hasattr(module, "bias") and module.bias is not None + new_module = cls( + module.in_features, + module.out_features, + location_key, + model_config, + adapters_config, + attn_key=attn_key, + **kwargs, + ) + new_module.weight.data = module.weight.data + if module.bias is not None: + new_module.bias.data = module.bias.data + + return new_module + + def _check_lora_location(self, config: LoRAConfig): + return self.attn_key is None or self.attn_key in config.attn_matrices + + def _get_lora_shapes(self, config: LoRAConfig): + return (config.r, self.in_features), (self.out_features, config.r) + + def maybe_t(self, w): + return torch.t(w) if self.fan_in_fan_out else w + + def reset_adapter(self): + if self.merged: + lora = self.loras[self.merged] + # Make sure that the weights are not merged + delta_w = self.maybe_t(lora.delta_w) + self.weight.data = lora.com_inv(self.weight.data, delta_w) + self.merged = None + + def merge_adapter(self, name: str): + if name in self.loras: + if self.merged == name: + return # already merged + elif not self.merged: + lora = self.loras[name] + if lora.use_gating: + raise ValueError("Cannot merge LoRA layer with gating.") + delta_w = self.maybe_t(lora.delta_w) + self.weight.data = lora.com(self.weight.data, delta_w) + self.merged = name + elif self.merged != name: + raise ValueError("LoRALayer already has a merged LoRA module. Please reset it first.") + + def vslice(self, state: LoRAState, slice_obj: slice) -> LoRAState: + return LoRAState( + state.layer_input[slice_obj], + state.hidden_states[slice_obj] if state.hidden_states is not None else None, + state.layer_output[slice_obj], + ) + + def pad_and_concat(self, states: List[LoRAState]) -> LoRAState: + return LoRAState( + torch.cat([s.layer_input for s in states], dim=0), + torch.cat([s.hidden_states for s in states], dim=0) if states[0].hidden_states is not None else None, + torch.cat([s.layer_output for s in states], dim=0), + ) + + def repeat(self, state: LoRAState, channels: int) -> LoRAState: + return LoRAState( + state.layer_input.repeat(channels, 1, 1), + state.hidden_states.repeat(channels, 1, 1) if state.hidden_states is not None else None, + state.layer_output.repeat(channels, 1, 1), + ) + + def mean(self, states: List[LoRAState], weights: torch.Tensor) -> LoRAState: + return LoRAState( + states[0].layer_input, + torch.mean(torch.stack([s.hidden_states for s in states], dim=0) * weights, dim=0) + if states[0].hidden_states is not None + else None, + states[0].layer_output, + ) + + def compose_single(self, adapter_setup: str, state: LoRAState, lvl: int = 0) -> LoRAState: + lora = self.loras[adapter_setup] + hidden_states, gate = lora(state.hidden_states, state.layer_input) + if gate is not None: + self._store_gating_score(adapter_setup, gate) + + return state._replace(hidden_states=hidden_states) + + def forward(self, input_states: torch.Tensor): + weight = torch.transpose(self.weight, -2, -1) if self.fan_in_fan_out else self.weight + # result shape: x x + layer_output = F.linear(input_states, weight, bias=self.bias) + + if not self.merged: + adapter_setup = self.get_active_setup() + if adapter_setup is not None: + state = LoRAState(input_states, None, layer_output) + state = self.compose(adapter_setup, state) + _, hidden_states, layer_output = state + + last_lora = self.loras[adapter_setup.last()] + layer_output = last_lora.com( + layer_output, hidden_states, scaling=1.0 + ) # scaling already applied in compose + + return layer_output + + +class LoRAMergedLinear(LoRALayer, nn.Linear): + """ + LoRA implementation for merged attention layer, as used by some model implementations (e.g. GPT-2). This layer + currently does not support composition. + + Args: + fan_in_fan_out (bool, optional): + Set this to True if the layer to replace stores weight like (fan_in, fan_out). Defaults to False. + no_init_bias (bool, optional): Use this to add a bias that is not initialized by PyTorch. Defaults to False. + + """ + + def __init__( + self, + in_features: int, + out_features: int, + location_key: str, + model_config: PretrainedConfig, + adapters_config: ModelAdaptersConfig, + fan_in_fan_out: bool = False, + no_init_bias: bool = False, + **kwargs + ): + if no_init_bias and "bias" not in kwargs: + kwargs["bias"] = False + LoRALayer.__init__(self, location_key, model_config, adapters_config, in_features, out_features, **kwargs) + + self.fan_in_fan_out = fan_in_fan_out + if fan_in_fan_out: + self.weight.data = self.weight.data.T + if no_init_bias: + self.bias = nn.Parameter(torch.empty(out_features)) + + @classmethod + def wrap( + cls, + module: Union[nn.Linear, Conv1D], + location_key: str, + model_config: PretrainedConfig, + adapters_config: ModelAdaptersConfig, + **kwargs + ): + if isinstance(module, Conv1D): + new_module = cls( + module.weight.shape[0], module.weight.shape[1], location_key, model_config, adapters_config, **kwargs + ) + else: + new_module = cls( + module.in_features, module.out_features, location_key, model_config, adapters_config, **kwargs + ) + new_module.weight.data = module.weight.data + if module.bias is not None: + new_module.bias.data = module.bias.data + + return new_module + + def get_n_heads(self, lora: Union[LoRA, IA3, LoRAConfig]): + return len(set(lora.attn_matrices)) + + def _get_lora_shapes(self, config: LoRAConfig): + n_heads = self.get_n_heads(config) + return (config.r * n_heads, self.in_features), ( + self.out_features // 3 * n_heads, + config.r, + ) + + def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: + is_added = super().add_adapter(adapter_name, layer_idx) + if is_added: + lora_config = lora_config = self.adapters_config.match( + adapter_name, + config_type=LoRAConfig, + layer_idx=self.layer_idx, + location_key=self.location_key, + ) + lora = self.loras[adapter_name] + lora.enable_lora = [ + "q" in lora_config.attn_matrices, + "k" in lora_config.attn_matrices, + "v" in lora_config.attn_matrices, + ] + # Actual trainable parameters + if any(lora.enable_lora): + # Compute the indices + lora.lora_ind = self.weight.new_zeros((self.out_features,), dtype=torch.bool).view( + len(lora.enable_lora), -1 + ) + lora.lora_ind[lora.enable_lora, :] = True + lora.lora_ind = lora.lora_ind.view(-1) + return True + else: + return False + + def pad(self, x, lora, fill_value=None): + if fill_value is None: + if lora.composition_mode == "add": + fill_value = 0 + else: + fill_value = 1 + result = x.new_full((*x.shape[:-1], self.out_features), fill_value) + result = result.view(-1, self.out_features) + result[:, lora.lora_ind] = x.reshape(-1, self.out_features // 3 * self.get_n_heads(lora)) + return result.view((*x.shape[:-1], self.out_features)) + + def reset_adapter(self): + def T(w): + return w if self.fan_in_fan_out else torch.t(w) + + if self.merged: + lora = self.loras[self.merged] + # Make sure that the weights are not merged + if lora.r > 0 and any(lora.enable_lora): + if lora.composition_mode == "scale": + delta_w = lora.lora_B + else: + delta_w = F.conv1d( + lora.lora_A.data.unsqueeze(0), lora.lora_B.data.unsqueeze(-1), groups=sum(lora.enable_lora) + ).squeeze(0) + # shape after transpose: x + delta_w = delta_w.transpose(-2, -1) + self.weight.data = lora.com_inv(self.weight.data, T(self.pad(delta_w, lora))) + self.merged = None + + def _compute_adapted_weight(self, name, lora): + def T(w): + return w if self.fan_in_fan_out else torch.t(w) + + weight = self.weight + if lora.r > 0: + if lora.composition_mode == "scale": + delta_w = lora.lora_B + else: + delta_w = F.conv1d( + lora.lora_A.data.unsqueeze(0), lora.lora_B.data.unsqueeze(-1), groups=sum(lora.enable_lora) + ).squeeze(0) + # shape after transpose: x + delta_w = delta_w.transpose(-2, -1) + weight = lora.com(weight, T(self.pad(delta_w, lora))) + + return weight + + def merge_adapter(self, name: str): + if name in self.loras: + if self.merged == name: + return # already merged + elif not self.merged: + lora = self.loras[name] + if lora.use_gating: + raise ValueError("Cannot merge LoRA layer with gating.") + self.weight.data = self._compute_adapted_weight(name, lora) + self.merged = name + elif self.merged != name: + raise ValueError("LoRALayer already has a merged LoRA module. Please reset it first.") + + def forward(self, x: torch.Tensor): + def T(w): + return torch.t(w) if self.fan_in_fan_out else w + + if not self.merged: + adapter_setup = self.get_active_setup() + if adapter_setup is not None: + if len(adapter_setup) == 1: + result = F.linear(x, T(self.weight), bias=self.bias) + lora = self.loras[adapter_setup[0]] + if lora.r > 0: + if lora.composition_mode == "scale": + delta_w = lora.lora_B.view(1, 1, -1) + else: + after_A = F.linear(lora.lora_dropout(x), lora.lora_A) + after_B = F.conv1d( + after_A.transpose(-2, -1), lora.lora_B.unsqueeze(-1), groups=sum(lora.enable_lora) + ).transpose(-2, -1) + delta_w = after_B + if lora.use_gating: + gate = torch.sigmoid(lora.gate(x)) + gate = torch.mean(gate, dim=1) + self._store_gating_score(adapter_setup[0], gate) + gate = self.pad( + gate.repeat_interleave(self.out_features // 3, dim=-1), lora, fill_value=1 + ).unsqueeze(1) + else: + gate = None + # result = (batch_size, seq_len, head_dim * 3) + result = lora.com(result, self.pad(delta_w, lora), scaling=gate) + return result + else: + raise ValueError(f"Invalid adapter setup. Cannot use {adapter_setup} with LoRA.") + + return F.linear(x, T(self.weight), bias=self.bias) diff --git a/adapters/src/adapters/methods/modeling.py b/adapters/src/adapters/methods/modeling.py new file mode 100644 index 00000000..6b265e21 --- /dev/null +++ b/adapters/src/adapters/methods/modeling.py @@ -0,0 +1,803 @@ +import math + +import torch +from torch import nn + +from transformers.activations import get_activation + +from ..configuration import AdapterFusionConfig, BnConfig +from ..context import ForwardContext + + +class Activation_Function_Class(nn.Module): + """ + Implementation of various activation function. + """ + + def __init__(self, hidden_act): + super().__init__() + if hidden_act.lower() == "leakyrelu": + self.f = nn.functional.leaky_relu + else: + self.f = get_activation(hidden_act.lower()) + + def forward(self, x): + return self.f(x) + + +# Single Adapter + + +class Adapter(nn.Module): + """ + Implementation of a sequential bottleneck adapter block. + """ + + def __init__( + self, + adapter_name, + input_size, + down_sample, + config: BnConfig, + ): + super().__init__() + self.name = adapter_name + self.input_size = input_size + self.add_layer_norm_before = config["ln_before"] + self.add_layer_norm_after = config["ln_after"] + self.adapter_residual_before_ln = config["adapter_residual_before_ln"] + self.use_gating = config["use_gating"] + + # Params related to input & output of adapter + self.residual_before_ln = config["residual_before_ln"] + self.original_ln_before = config["original_ln_before"] + self.original_ln_after = config["original_ln_after"] + + # list for all modules of the adapter, passed into nn.Sequential() + seq_list = [] + + # If we want to have a layer norm on input, we add it to seq_list + if self.add_layer_norm_before: + self.adapter_norm_before = nn.LayerNorm(self.input_size) + seq_list.append(self.adapter_norm_before) + + # if a downsample size is not passed, we just half the size of the original input + self.down_sample = down_sample + if down_sample is None: + self.down_sample = self.input_size // 2 + + # ensure that the down sample size is at least 1 + if self.down_sample < 1: + self.down_sample = 1 + + if config["phm_layer"]: + # Linear down projection of the input + seq_list.append(PHMLayer(adapter_name, self.input_size, self.down_sample, "down", config)) + else: + seq_list.append(nn.Linear(self.input_size, self.down_sample)) + + # select non-linearity + self.non_linearity = Activation_Function_Class(config["non_linearity"].lower()) + + seq_list.append(self.non_linearity) + + # sequential adapter, first downproject, then non-linearity then upsample. In the forward pass we include the + # residual connection + self.adapter_down = nn.Sequential(*seq_list) + + # Up projection to input size + if config["phm_layer"]: + # Linear down projection of the input + self.adapter_up = PHMLayer(adapter_name, self.down_sample, self.input_size, "up", config) + else: + self.adapter_up = nn.Linear(self.down_sample, self.input_size) + + # Additional scaling factor (from He et al. (2021)) + if isinstance(config["scaling"], float): + self.scaling = config["scaling"] + elif config["scaling"] == "learned": + self.scaling = nn.Parameter(torch.ones(1)) + else: + raise ValueError("Unknown scaling type: {}".format(config["scaling"])) + + # If we want to have a layer norm on output, we apply it later after a separate residual connection + # This means that we learn a new output layer norm, which replaces another layer norm learned in the bert layer + if self.add_layer_norm_after: + self.adapter_norm_after = nn.LayerNorm(self.input_size) + + if self.use_gating: + self.gate = nn.Linear(self.input_size, 1) + + # if we want to initialize with the bert strategy then this function is called for all the linear layers + if config["init_weights"] == "bert": + self.adapter_down.apply(self.init_bert_weights) + self.adapter_up.apply(self.init_bert_weights) + if self.use_gating: + self.gate.apply(self.init_bert_weights) + elif config["init_weights"] == "mam_adapter": + with torch.no_grad(): + nn.init.kaiming_uniform_(self.adapter_down[0].weight, a=math.sqrt(5)) + nn.init.zeros_(self.adapter_up.weight) + nn.init.zeros_(self.adapter_down[0].bias) + nn.init.zeros_(self.adapter_up.bias) + if self.use_gating: + self.gate.apply(self.init_bert_weights) + else: + raise ValueError("Unknown init_weights type: {}".format(config["init_weights"])) + + def pre_forward( + self, + hidden_states, + input_tensor, + layer_norm, + fusion_config=None, + ): + """ + Retrieves the hidden_states, query (for Fusion), and residual connection according to the set configuration. + + Args: + adapter_config: config file according to what the parameters are passed + hidden_states: output of previous layer + input_tensor: residual connection before FFN + + Returns: hidden_states, query, residual + + """ + query = None + + if self.residual_before_ln is True: + residual = hidden_states + + if fusion_config is not None and fusion_config["query_before_ln"]: + query = hidden_states + + if self.original_ln_before: + if layer_norm: + hidden_states = hidden_states + input_tensor + if self.residual_before_ln == "post_add": + residual = hidden_states + hidden_states = layer_norm(hidden_states) + else: + hidden_states = hidden_states + input_tensor + + if not self.residual_before_ln: + residual = hidden_states + + if fusion_config is not None and not fusion_config["query_before_ln"]: + query = hidden_states + + return hidden_states, query, residual + + def forward(self, x, residual_input, output_gating=False): + down = self.adapter_down(x) + + up = self.adapter_up(down) + up = up * self.scaling + output = up + + if self.use_gating: + # x.shape = (batch_size, seq_len, hidden_size) + gate = torch.sigmoid(self.gate(x)) + gate = torch.mean(gate, dim=1).unsqueeze(-1) + output = output * gate + + # apply residual connection before layer norm if configured in this way + if self.adapter_residual_before_ln: + output = output + residual_input + + # apply layer norm if available + if self.add_layer_norm_after: + output = self.adapter_norm_after(output) + + # if residual should be applied after layer norm, apply it here + if not self.adapter_residual_before_ln: + output = output + residual_input + + if self.use_gating and output_gating: + return output, down, up, gate + return output, down, up + + def post_forward(self, hidden_states, input_hidden_states, input_tensor, layer_norm): + """ + Performs computations after the forward pass of the adapter block(s). This e.g. includes applying the residual + connection and layer norm if configured in this way. + + Args: + hidden_states: The hidden states outputted by the adapter block(s). + input_hidden_states: Residual connection before the adapter block(s). + input_tensor: Residual connection before the Transformer FFN/ attention layer. + layer_norm: Transformer LayerNorm. + + Returns: + The modified hidden states. + """ + if self.original_ln_after: + if layer_norm: + hidden_states = layer_norm(hidden_states + input_tensor) + else: + hidden_states = hidden_states + input_tensor + + return hidden_states + + # This is copied from the BertPreTrainedModel class to make this a self containing class. + @staticmethod + def init_bert_weights(module): + """Initialize the weights.""" + if isinstance(module, (nn.Linear, nn.Embedding)): + # std defaults to 0.02, this might need to be changed + module.weight.data.normal_(mean=0.0, std=0.02) + elif isinstance(module, nn.LayerNorm): + module.bias.data.zero_() + module.weight.data.fill_(1.0) + if isinstance(module, nn.Linear) and module.bias is not None: + module.bias.data.zero_() + + +class ParallelAdapter(Adapter): + """ + Implementation of a parallel bottleneck adapter block. + """ + + def __init__(self, adapter_name, input_size, down_sample, config: BnConfig): + super().__init__(adapter_name, input_size, down_sample, config) + + def pre_forward( + self, + hidden_states, + input_tensor, + layer_norm, + fusion_config=None, + ): + """ + Retrieves the hidden_states, query (for Fusion), and residual connection according to the set configuration. + + Args: + adapter_config: config file according to what the parameters are passed + hidden_states: output of previous layer + input_tensor: residual connection before FFN + + Returns: hidden_states, query, residual + + """ + # In case of parallel adapter, return the input tensor as hidden states + query = None + if fusion_config is not None: + query = input_tensor + return input_tensor, query, input_tensor + + def forward(self, x, residual_input, output_gating=False): + down = self.adapter_down(x) + + up = self.adapter_up(down) + up = up * self.scaling + + output = up + + if self.use_gating: + # x.shape = (batch_size, seq_len, hidden_size) + gate = torch.sigmoid(self.gate(x)) + gate = torch.mean(gate, dim=1).unsqueeze(-1) + output = output * gate + + # apply layer norm if available + if self.add_layer_norm_after: + output = self.adapter_norm_after(output) + + if self.use_gating and output_gating: + return output, down, up, gate + return output, down, up + + def post_forward(self, hidden_states, input_hidden_states, input_tensor, layer_norm): + """ + Performs computations after the forward pass of the adapter block(s). This e.g. includes applying the residual + connection and layer norm if configured in this way. + + Args: + hidden_states: The hidden states outputted by the adapter block(s). + input_hidden_states: Residual connection before the adapter block(s). + input_tensor: Residual connection before the Transformer FFN/ attention layer. + layer_norm: Transformer LayerNorm. + + Returns: + The modified hidden states. + """ + hidden_states = hidden_states + input_hidden_states + + if self.original_ln_after: + if layer_norm: + hidden_states = layer_norm(hidden_states + input_tensor) + else: + hidden_states = hidden_states + input_tensor + + return hidden_states + + +# Adapter Fusion + + +class BertFusion(nn.Module): + """ + Implementation of an AdapterFusion block. + """ + + def __init__( + self, + config: AdapterFusionConfig, + dense_size, + attention_probs_dropout_prob, + ): + super(BertFusion, self).__init__() + # if config.hidden_size % config.num_attention_heads != 0: + # raise ValueError( + # "The hidden size (%d) is not a multiple of the number of attention " + # "heads (%d)" % (config.hidden_size, config.num_attention_heads)) + self.config = config + + self.dense_size = dense_size + self.dropout = nn.Dropout(attention_probs_dropout_prob) + + if not self.config["query"] and not self.config["key"] and not self.config["value"]: + self.dense = nn.Linear(self.dense_size, 1) + + if self.config["query"]: + self.query = nn.Linear(self.dense_size, self.dense_size) + self.query.apply(Adapter.init_bert_weights) + + if self.config["key"]: + self.key = nn.Linear(self.dense_size, self.dense_size) + self.key.apply(Adapter.init_bert_weights) + + if self.config["value"]: + self.value = nn.Linear(self.dense_size, self.dense_size, bias=False) + self.value.apply(Adapter.init_bert_weights) + if self.config["value_initialized"]: + self.value.weight.data = (torch.zeros(self.dense_size, self.dense_size) + 0.000001).fill_diagonal_(1.0) + + if self.config["temperature"]: + self.T = 50.0 + else: + self.T = 1.0 + self.reduction = self.T / 1000.0 + + def forward(self, query, key, value, residual, output_attentions: bool = False): + + if self.config["residual_before"]: + value += residual[:, :, None, :].repeat(1, 1, value.size(2), 1) + + if self.config["query"]: + query_layer = self.query(query) + else: + query_layer = query + + if self.config["key"]: + key_layer = self.key(key) + else: + key_layer = key + + if self.config["value"] and self.config["value_before_softmax"]: + # key/value have dims => batch, toks, number-of-adapters, feats + value_layer = self.value(value) + else: + value_layer = value + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = torch.squeeze(torch.matmul(query_layer.unsqueeze(2), key_layer.transpose(-2, -1)), dim=2) + + attention_scores = self.dropout(attention_scores) + + # Normalize the attention scores to probabilities. + attention_probs = nn.Softmax(dim=-1)(attention_scores / self.T) + self.T = max(self.T - self.reduction, 1.0) + + context_layer = torch.squeeze(torch.matmul(attention_probs.unsqueeze(2), value_layer), dim=2) + + if self.config["value"] and not self.config["value_before_softmax"]: + # key/value have dims => batch, toks, number-of-adapters, feats + context_layer = self.value(context_layer) + else: + context_layer = context_layer + + if not self.config["residual_before"]: + context_layer += residual + + if output_attentions: + attention_probs = attention_probs.detach().cpu().numpy() + return context_layer, attention_probs + else: + return context_layer + + +# Invertible Adapters + + +def get_subnet_constructor(non_linearity, reduction_factor): + def subnet(dims_in, dims_out): + return nn.Sequential( + nn.Linear(dims_in, int(dims_in // reduction_factor)), + Activation_Function_Class(non_linearity), + nn.Linear(int(dims_in // reduction_factor), dims_out), + ) + + return subnet + + +class NICECouplingBlock(nn.Module): + """Coupling Block following the NICE design.""" + + def __init__(self, dims_in, dims_c=[], non_linearity="relu", reduction_factor=2): + super().__init__() + + channels = dims_in[0][0] + self.split_len1 = channels // 2 + self.split_len2 = channels - channels // 2 + + assert all( + [dims_c[i][1:] == dims_in[0][1:] for i in range(len(dims_c))] + ), "Dimensions of input and one or more conditions don't agree." + self.conditional = len(dims_c) > 0 + condition_length = sum([dims_c[i][0] for i in range(len(dims_c))]) + + subnet_constructor = get_subnet_constructor(non_linearity, reduction_factor) + self.F = subnet_constructor(self.split_len2 + condition_length, self.split_len1) + self.G = subnet_constructor(self.split_len1 + condition_length, self.split_len2) + + def forward(self, x, c=[], rev=False): + x1, x2 = (x[:, :, : self.split_len1], x[:, :, self.split_len1 :]) + if not rev: + x2_c = torch.cat([x2, *c], 1) if self.conditional else x2 + y1 = x1 + self.F(x2_c) + y1_c = torch.cat([y1, *c], 1) if self.conditional else y1 + y2 = x2 + self.G(y1_c) + else: + x1_c = torch.cat([x1, *c], 1) if self.conditional else x1 + y2 = x2 - self.G(x1_c) + y2_c = torch.cat([y2, *c], 1) if self.conditional else y2 + y1 = x1 - self.F(y2_c) + + return torch.cat((y1, y2), -1) + + def jacobian(self, x, rev=False): + return 0 + + def output_dims(self, input_dims): + assert len(input_dims) == 1, "Can only use 1 input" + return input_dims + + +class GLOWCouplingBlock(nn.Module): + """ + Coupling Block following the GLOW design. The only difference to the RealNVP coupling blocks, is the fact that it + uses a single subnetwork to jointly predict [s_i, t_i], instead of two separate subnetworks. This reduces + computational cost and speeds up learning. clamp: Soft clamping for the multiplicative component. The amplification + or attenuation of each input dimension can be at most ±exp(clamp). + """ + + def __init__(self, dims_in, dims_c=[], non_linearity="relu", reduction_factor=2, clamp=5.0): + super().__init__() + + channels = dims_in[0][0] + self.ndims = len(dims_in[0]) + self.split_len1 = channels // 2 + self.split_len2 = channels - channels // 2 + + self.clamp = clamp + self.max_s = math.exp(clamp) + self.min_s = math.exp(-clamp) + + assert all( + [tuple(dims_c[i][1:]) == tuple(dims_in[0][1:]) for i in range(len(dims_c))] + ), f"Dimensions of input and one or more conditions don't agree: {dims_c} vs {dims_in}." + self.conditional = len(dims_c) > 0 + condition_length = sum([dims_c[i][0] for i in range(len(dims_c))]) + + subnet_constructor = get_subnet_constructor(non_linearity, reduction_factor) + self.s1 = subnet_constructor(self.split_len1 + condition_length, self.split_len2 * 2) + self.s2 = subnet_constructor(self.split_len2 + condition_length, self.split_len1 * 2) + + def e(self, s): + return torch.exp(self.clamp * 0.636 * torch.atan(s / self.clamp)) + + def log_e(self, s): + return self.clamp * 0.636 * torch.atan(s / self.clamp) + + def forward(self, x, c=[], rev=False): + x1, x2 = (x[:, :, : self.split_len1], x[:, :, self.split_len1 :]) + + if not rev: + s2, t2 = x1.clone(), x2.clone() + y1 = self.e(s2) * x1 + t2 + + r1 = self.s1(torch.cat([y1, *c], 1) if self.conditional else y1) + s1, t1 = r1[:, : self.split_len2], r1[:, self.split_len2 :] + y2 = self.e(s1) * x2 + t1 + self.last_jac = torch.sum(self.log_e(s1), dim=tuple(range(1, self.ndims + 1))) + torch.sum( + self.log_e(s2), dim=tuple(range(1, self.ndims + 1)) + ) + + else: # names of x and y are swapped! + r1 = self.s1(torch.cat([x1, *c], 1) if self.conditional else x1) + s1, t1 = r1[:, : self.split_len2], r1[:, self.split_len2 :] + y2 = (x2 - t1) / self.e(s1) + + r2 = self.s2(torch.cat([y2, *c], 1) if self.conditional else y2) + s2, t2 = r2[:, : self.split_len1], r2[:, self.split_len1 :] + y1 = (x1 - t2) / self.e(s2) + self.last_jac = -torch.sum(self.log_e(s1), dim=tuple(range(1, self.ndims + 1))) - torch.sum( + self.log_e(s2), dim=tuple(range(1, self.ndims + 1)) + ) + + return [torch.cat((y1, y2), 1)] + + def jacobian(self, x, c=[], rev=False): + return self.last_jac + + def output_dims(self, input_dims): + return input_dims + + +def kronecker_product(a, b): + """ + Copied from rabeehk/compacter seq2seq/hypercomplex/kronecker.py + + Kronecker product of matrices a and b with leading batch dimensions. Batch dimensions are broadcast. The number of + them mush :type a: torch.Tensor :type b: torch.Tensor :rtype: torch.Tensor + """ + siz1 = torch.Size(torch.tensor(a.shape[-2:]) * torch.tensor(b.shape[-2:])) + res = a.unsqueeze(-1).unsqueeze(-3) * b.unsqueeze(-2).unsqueeze(-4) + siz0 = res.shape[:-4] + out = res.reshape(siz0 + siz1) + return out + + +class PHMLayer(nn.Module): + """ + This class is adapted from the compacter implementation at https://github.com/rabeehk/compacter + """ + + def __init__( + self, + adapter_name: str, + in_features: int, + out_features: int, + position: str, + config: dict, + ) -> None: + super(PHMLayer, self).__init__() + assert config["hypercomplex_nonlinearity"] in ["phm", "glorot-normal", "glorot-uniform", "normal"] + assert config["phm_c_init"] in ["normal", "uniform"] + assert ( + in_features % config["phm_dim"] == 0 + ), f"Argument `in_features`={in_features} is not divisble be `phm_dim`{config['phm_dim']}" + assert ( + out_features % config["phm_dim"] == 0 + ), f"Argument `out_features`={out_features} is not divisble be `phm_dim`{config['phm_dim']}" + self.config = config + self.name = adapter_name + self.in_features = in_features + self.out_features = out_features + self.position = position + self.learn_phm = config["learn_phm"] + self.phm_dim = config["phm_dim"] + self._in_feats_per_axis = in_features // config["phm_dim"] + self._out_feats_per_axis = out_features // config["phm_dim"] + self.phm_rank = config["phm_rank"] + self.phm_init_range = config["phm_init_range"] + self.shared_phm_rule = config["shared_phm_rule"] + self.factorized_phm_rule = config["factorized_phm_rule"] + if not self.shared_phm_rule: + if self.factorized_phm_rule: + self.phm_rule_left = nn.Parameter( + torch.FloatTensor(self.phm_dim, self.phm_dim, 1), requires_grad=self.learn_phm + ) + self.phm_rule_right = nn.Parameter( + torch.FloatTensor(self.phm_dim, 1, self.phm_dim), requires_grad=self.learn_phm + ) + else: + self.phm_rule = nn.Parameter( + torch.FloatTensor(self.phm_dim, self.phm_dim, self.phm_dim), requires_grad=self.learn_phm + ) + self.bias_flag = config["phm_bias"] + self.w_init = config["hypercomplex_nonlinearity"] + self.c_init = config["phm_c_init"] + self.shared_W_phm = config["shared_W_phm"] + self.factorized_phm_W = config["factorized_phm_W"] + if not self.shared_W_phm: + if self.factorized_phm_W: + self.W_left = nn.Parameter( + torch.Tensor(size=(self.phm_dim, self._in_feats_per_axis, self.phm_rank)), requires_grad=True + ) + self.W_right = nn.Parameter( + torch.Tensor(size=(self.phm_dim, self.phm_rank, self._out_feats_per_axis)), requires_grad=True + ) + else: + self.W = nn.Parameter( + torch.Tensor(size=(self.phm_dim, self._in_feats_per_axis, self._out_feats_per_axis)), + requires_grad=True, + ) + if self.bias_flag: + self.b = nn.Parameter(torch.Tensor(out_features)) + else: + self.register_parameter("b", None) + self.reset_parameters() + + def _init_W(self, W_left=None, W_right=None, W=None): + if self.factorized_phm_W: + W_left = W_left if W_left is not None else self.W_left + W_right = W_right if W_right is not None else self.W_right + return init_W(self.config, W_left, W_right, W) + else: + W = W if W is not None else self.W + return init_W(self.config, W_left, W_right, W) + + def reset_parameters(self): + if not self.shared_W_phm: + self._init_W() + + if self.bias_flag: + self.b.data = torch.zeros_like(self.b.data) + + if not self.shared_phm_rule: + if self.factorized_phm_rule: + if self.c_init == "uniform": + self.phm_rule_left.data.uniform_(-0.01, 0.01) + self.phm_rule_right.data.uniform_(-0.01, 0.01) + elif self.c_init == "normal": + self.phm_rule_left.data.normal_(std=0.01) + self.phm_rule_right.data.normal_(std=0.01) + else: + raise NotImplementedError + else: + if self.c_init == "uniform": + self.phm_rule.data.uniform_(-0.01, 0.01) + elif self.c_init == "normal": + self.phm_rule.data.normal_(mean=0, std=0.01) + else: + raise NotImplementedError + + def set_phm_rule(self, phm_rule=None, phm_rule_left=None, phm_rule_right=None): + """ + If factorized_phm_rules is set, phm_rule is a tuple, showing the left and right phm rules, and if this is not + set, this is showing the phm_rule. + """ + if self.factorized_phm_rule: + self.phm_rule_left = phm_rule_left + self.phm_rule_right = phm_rule_right + else: + self.phm_rule = phm_rule + + def set_W(self, W=None, W_left=None, W_right=None): + if self.factorized_phm_W: + self.W_left = W_left + self.W_right = W_right + else: + self.W = W + + def forward(self, x: torch.Tensor) -> torch.Tensor: + if self.shared_W_phm: + parameters = ForwardContext.get_context().shared_parameters[self.name] + if self.factorized_phm_W: + W = torch.bmm(parameters[f"W_{self.position}_left"], parameters[f"W_{self.position}_right"]) + else: + W = parameters[f"W_{self.position}"] + else: + if self.factorized_phm_W: + W = torch.bmm(self.W_left, self.W_right) + else: + W = self.W + if self.shared_phm_rule: + parameters = ForwardContext.get_context().shared_parameters[self.name] + if self.factorized_phm_rule: + phm_rule = torch.bmm(parameters["phm_rule_left"], parameters["phm_rule_right"]) + else: + phm_rule = parameters["phm_rule"] + else: + if self.factorized_phm_rule: + phm_rule = torch.bmm(self.phm_rule_left, self.phm_rule_right) + else: + phm_rule = self.phm_rule + + H = kronecker_product(phm_rule, W).sum(0) + + y = torch.matmul(input=x, other=H) + if self.b is not None: + y += self.b + return y + + +def init_shared_parameters(config, in_features, device): + """ + Create and initialize the parameters shared by all compacter modules + """ + parameters = nn.ParameterDict() + if config["shared_W_phm"]: + if config["factorized_phm_W"]: + out_features = in_features // config["reduction_factor"] + _in_feats_per_axis = in_features // config["phm_dim"] + _out_feats_per_axis = out_features // config["phm_dim"] + W_down_left = torch.Tensor(size=(config["phm_dim"], _in_feats_per_axis, config["phm_rank"])) + W_down_right = torch.Tensor(size=(config["phm_dim"], config["phm_rank"], _out_feats_per_axis)) + W_up_left = torch.Tensor(size=(config["phm_dim"], _out_feats_per_axis, config["phm_rank"])) + W_up_right = torch.Tensor(size=(config["phm_dim"], config["phm_rank"], _in_feats_per_axis)) + init_W(config, W_left=W_down_left, W_right=W_down_right) + init_W(config, W_left=W_up_left, W_right=W_up_right) + parameters["W_down_left"] = nn.Parameter(W_down_left, requires_grad=True) + parameters["W_down_right"] = nn.Parameter(W_down_right, requires_grad=True) + parameters["W_up_left"] = nn.Parameter(W_up_left, requires_grad=True) + parameters["W_up_right"] = nn.Parameter(W_up_right, requires_grad=True) + else: + W_down = torch.Tensor(size=(config["phm_dim"], _in_feats_per_axis, _out_feats_per_axis)) + W_up = torch.Tensor(size=(config["phm_dim"], _out_feats_per_axis, _in_feats_per_axis)) + init_W(config, W=W_down) + init_W(config, W=W_up) + parameters["W_down"] = nn.Parameter(W_down, requires_grad=True) + parameters["W_up"] = nn.Parameter(W_up, requires_grad=True) + if config["shared_phm_rule"]: + if config["factorized_phm_rule"]: + phm_rule_left = nn.Parameter( + torch.FloatTensor(config["phm_dim"], config["phm_dim"], 1).to(device), + requires_grad=config["learn_phm"], + ) + phm_rule_right = nn.Parameter( + torch.FloatTensor(config["phm_dim"], 1, config["phm_dim"]).to(device), + requires_grad=config["learn_phm"], + ) + if config["phm_c_init"] == "normal": + phm_rule_left.data.normal_(mean=0, std=config["phm_init_range"]) + phm_rule_right.data.normal_(mean=0, std=config["phm_init_range"]) + elif config["phm_c_init"] == "uniform": + phm_rule_left.data.uniform_(-1, 1) + phm_rule_right.data.uniform_(-1, 1) + else: + raise NotImplementedError + parameters["phm_rule_left"] = phm_rule_left + parameters["phm_rule_right"] = phm_rule_right + else: + phm_rule = nn.Parameter( + torch.FloatTensor(config["phm_dim"], config["phm_dim"], config["phm_dim"]), + requires_grad=config["learn_phm"], + ) + if config["phm_c_init"] == "normal": + phm_rule.data.normal_(mean=0, std=config["phm_init_range"]) + elif config["phm_c_init"] == "uniform": + phm_rule.data.uniform_(-1, 1) + else: + raise NotImplementedError + parameters["phm_rule"] = phm_rule + return parameters + + +def init_W(config, W_left=None, W_right=None, W=None): + """ + Initialize the weights for the compacter module or the shared parameters + """ + if config["factorized_phm_W"]: + W_left = W_left + W_right = W_right + else: + W = W + if config["hypercomplex_nonlinearity"]: + if config["factorized_phm_W"]: + for i in range(config["phm_dim"]): + W_left.data[i] = nn.init.xavier_normal_(W_left.data[i]) + W_right.data[i] = nn.init.xavier_normal_(W_right.data[i]) + else: + for i in range(config["phm_dim"]): + W.data[i] = nn.init.xavier_normal_(W.data[i]) + elif config["hypercomplex_nonlinearity"] == "glorot-uniform": + if config["factorized_phm_W"]: + for i in range(config["phm_dim"]): + W_left.data[i] = nn.init.xavier_uniform_(W_left.data[i]) + W_right.data[i] = nn.init.xavier_uniform_(W_right.data[i]) + else: + for i in range(config["phm_dim"]): + W.data[i] = nn.init.xavier_uniform_(W.data[i]) + elif config["hypercomplex_nonlinearity"] == "normal": + if config["factorized_phm_W"]: + for i in range(config["phm_dim"]): + W_left.data[i].normal_(mean=0, std=config["phm_init_range"]) + W_right.data[i].normal_(mean=0, std=config["phm_init_range"]) + else: + for i in range(config["phm_dim"]): + W.data[i].normal_(mean=0, std=config["phm_init_range"]) + else: + raise ValueError diff --git a/adapters/src/adapters/methods/prefix_tuning.py b/adapters/src/adapters/methods/prefix_tuning.py new file mode 100644 index 00000000..2a716e2a --- /dev/null +++ b/adapters/src/adapters/methods/prefix_tuning.py @@ -0,0 +1,543 @@ +from typing import Dict, List, NamedTuple, Optional, Union + +import torch +import torch.nn.functional as F +from torch import nn + +from transformers import PretrainedConfig +from transformers.modeling_utils import ModuleUtilsMixin + +from ..composition import AdapterCompositionBlock, BatchSplit, Parallel, Stack, adjust_tensors_for_parallel +from ..configuration import ModelAdaptersConfig, PrefixTuningConfig +from ..context import AdapterSetup, ForwardContext +from .adapter_layer_base import ComposableAdapterLayerBase +from .modeling import Activation_Function_Class + + +class PrefixTuning(nn.Module, ModuleUtilsMixin): + def __init__( + self, + n_layers: int, + n_heads: int, + input_size: int, + config: PrefixTuningConfig, + n_embd_per_head: Optional[int] = None, + ): + super().__init__() + self.n_layers = n_layers + self.n_heads = n_heads + self.input_size = input_size + self.n_embd_per_head = n_embd_per_head or self.input_size // self.n_heads + self.config = config + + self.wte = nn.Embedding(self.config.prefix_length, self.input_size) + self.control_trans = nn.Sequential( + nn.Linear(self.input_size, self.config.bottleneck_size), + Activation_Function_Class(self.config.non_linearity.lower()), + nn.Linear(self.config.bottleneck_size, self.n_layers * 2 * self.n_heads * self.n_embd_per_head), + ) + self.dropout = nn.Dropout(self.config.dropout) + + def eject(self): + input_tokens = torch.arange(self.config.prefix_length).long() + input_tokens = input_tokens.unsqueeze(0).expand(1, -1).to(self.device) + embs = self.wte(input_tokens) + key_values = self.control_trans(embs) # batch_size x prefix_length x n_layers*2*input_size + key_values = key_values.view( + self.config.prefix_length * self.n_layers * 2 * self.input_size + ) # *2 for key and value + + return key_values + + def forward(self, batch_size): + input_tokens = torch.arange(self.config.prefix_length).long() + input_tokens = input_tokens.unsqueeze(0).expand(batch_size, -1).to(self.device) + embs = self.wte(input_tokens) + key_values = self.control_trans(embs) # batch_size x prefix_length x n_layers*2*input_size + key_values = key_values.view( + batch_size, self.config.prefix_length, self.n_layers * 2, self.n_heads, self.n_embd_per_head + ) # *2 for key and value + key_values = self.dropout(key_values) + # n_layers * (2 x batch_size x n_heads x prefix_length x n_embd_per_head) + key_values = key_values.permute(2, 0, 3, 1, 4).split(2) + + return key_values + + +class FlatPrefixTuning(nn.Module, ModuleUtilsMixin): + def __init__( + self, + n_layers: int, + n_heads: int, + input_size: int, + config: PrefixTuningConfig, + n_embd_per_head: Optional[int] = None, + ): + super().__init__() + self.n_layers = n_layers + self.n_heads = n_heads + self.input_size = input_size + self.n_embd_per_head = n_embd_per_head or self.input_size // self.n_heads + self.config = config + + self.control_trans = nn.Parameter( + torch.randn(self.config.prefix_length * self.n_layers * 2 * self.n_heads * self.n_embd_per_head) + ) + + self.dropout = nn.Dropout(self.config.dropout) + + def forward(self, batch_size): + key_values = ( + self.control_trans.unsqueeze(0) + .expand(batch_size, -1) + .view(batch_size, self.config.prefix_length, self.n_layers * 2, self.n_heads, self.n_embd_per_head) + .to(self.device) + ) # *2 for key and value + key_values = self.dropout(key_values) + # n_layers * (2 x batch_size x n_heads x prefix_length x n_embd_per_head) + key_values = key_values.permute(2, 0, 3, 1, 4).split(2) + + return key_values + + +class PrefixTuningGroup(nn.ModuleDict): + def __init__(self, module_configs, prefix_tuning_config): + super().__init__() + if prefix_tuning_config["flat"]: + prefix_tuning_class = FlatPrefixTuning + else: + prefix_tuning_class = PrefixTuning + for k, kwargs in module_configs.items(): + self[k] = prefix_tuning_class(**kwargs, config=prefix_tuning_config) + + def eject(self): + """Converts all PrefixTuning modules into FlatPrefixTuning modules.""" + for k, v in self.items(): + if isinstance(v, PrefixTuning): + config = v.config.replace(flat=True) + self[k] = FlatPrefixTuning(v.n_layers, v.n_heads, v.input_size, config) + weights = v.eject() + self[k].control_trans = nn.Parameter(weights) + + def forward(self, batch_size): + return {k: v(batch_size) for k, v in self.items()} + + +class PrefixTuningPool(nn.Module): + """ + The model layer that holds all Prefix Tuning prefixes. While each Transformers layer has its own prefix, this layer + is shared across all Transformers layers. + + How it works: + + 1. A `PrefixTuningLayer` module that sets this module as pool module is added to each layer. + 2. On adding a prefix, each shim module where a prefix should be added increments a counter in `prefix_counts`. + 3. Finally, the base model class confirms adding a new prefix by calling `confirm_prefix()`. + 4. This module adds a prefix layer that produces outputs corresponding to the indicated number of layers. + + Notes: + + - The forward call to this layer is executed in the ForwardContext of each model pass. + - All other methods of this class (except for `confirm_prefix()`) should be called exclusively by + `PrefixTuningLayer`. + + Args: + config (:class:`~transformers.PretrainedConfig`): The model config. + """ + + def __init__(self, model_config: PretrainedConfig, adapters_config: ModelAdaptersConfig): + super().__init__() + self.model_config = model_config + self.adapters_config = adapters_config + self.prefix_counts = {} + self.prefix_tunings = nn.ModuleDict() + + def indicate_prefix(self, prefix_name: str, location_key: str, **kwargs): + if prefix_name not in self.prefix_counts: + self.prefix_counts[prefix_name] = {location_key: {"count": 1, **kwargs}} + elif location_key not in self.prefix_counts[prefix_name]: + self.prefix_counts[prefix_name][location_key] = {"count": 1, **kwargs} + else: + # TODO-AH: Check if kwargs are the same + self.prefix_counts[prefix_name][location_key]["count"] += 1 + + return self.prefix_counts[prefix_name][location_key]["count"] - 1 + + def confirm_prefix(self, prefix_name: str) -> bool: + """Create Prefix Tuning module based on shim layer infications.""" + prefix_tuning_config = self.adapters_config.match(prefix_name, PrefixTuningConfig) + if prefix_tuning_config is None: + return False + + if prefix_name not in self.prefix_counts: + raise ValueError(f"Prefix {prefix_name} not found in PrefixTuningPool") + + module_configs = {} + for location_key, location_config in self.prefix_counts[prefix_name].items(): + module_configs[location_key] = { + "n_layers": location_config["count"], + "n_heads": location_config["n_heads"], + "input_size": location_config["input_size"], + "n_embd_per_head": location_config["n_embd_per_head"], + } + prefix_tuning = PrefixTuningGroup(module_configs, prefix_tuning_config) + prefix_tuning.train(self.training) # make sure training mode is consistent + self.prefix_tunings[prefix_name] = prefix_tuning + del self.prefix_counts[prefix_name] + return True + + def average_prefix(self, prefix_name: str, input_adapters: Dict[str, float]) -> bool: + if self.confirm_prefix(prefix_name): + # average weights + avg_state_dict = {} + for name, weight in input_adapters.items(): + module = self.prefix_tunings[name] + if module is not None: + for k, v in module.state_dict().items(): + if k in avg_state_dict: + avg_state_dict[k] += weight * v + else: + avg_state_dict[k] = weight * v + # load averaged weights + self.prefix_tunings[prefix_name].load_state_dict(avg_state_dict) + return True + + return False + + def delete_prefix(self, prefix_name: str): + if prefix_name in self.prefix_tunings: + del self.prefix_tunings[prefix_name] + + def enable_prefix(self, prefix_name: str): + if prefix_name in self.prefix_tunings: + for param in self.prefix_tunings[prefix_name].parameters(): + param.requires_grad = True + + def get_prefix(self, prefix_name: str): + if prefix_name in self.prefix_tunings: + return self.prefix_tunings[prefix_name] + else: + return None + + def forward(self, *args, **kwargs): + context = AdapterSetup.get_context() + if context is not None: + adapter_setup = context.adapter_setup + else: + adapter_setup = self.adapters_config.active_setup + + prefix_states = {} + if adapter_setup is not None: + # Infer batch size + input_tensor_names = ["input_ids", "decoder_input_ids", "attention_mask", "inputs_embeds", "pixel_values"] + batch_size = None + for name in input_tensor_names: + if kwargs.get(name, None) is not None: + batch_size = kwargs[name].size(0) + break + if batch_size is None: + if len(args) > 0: + batch_size = args[0].size(0) + else: + raise ValueError("Could not infer batch size for prefix tuning from inputs.") + + # Pass to sub-layers + for name in adapter_setup.flatten(): + if name in self.prefix_tunings: + prefix_states[name] = self.prefix_tunings[name](batch_size) + + return prefix_states + + +class PrefixTuningState(NamedTuple): + """ + Models the input and output states of a prefix tuning layer. + + Args: + key_states (torch.Tensor): The key states of the attention layer. + value_states (torch.Tensor): The value states of the attention layer. + residual_input (torch.Tensor): The residual input of the attention layer. + attention_mask (torch.Tensor, optional): The attention mask of the attention layer. + invert_mask (bool): Whether the attention mask is inverted (ie. using '1' for padding). + idx_slice (slice, optional): Id slice for slicing prefix states along the batch size dimension. + + """ + + key_states: torch.Tensor + value_states: torch.Tensor + residual_input: torch.Tensor + attention_mask: Optional[torch.Tensor] + invert_mask: bool + idx_slice: Optional[slice] = None + + +class PrefixTuningLayer(ComposableAdapterLayerBase, nn.Module): + """ + Representation of a Prefix Tuning layer within one Transformer layer. This class implements `AdapterLayerBase` for + compatibility with adapters. It uses `PrefixTuningPool` in the background and `set_pool()` must be called after + initialization. + + Args: + location_key (str): The id describing the location of this layer in the model. + Currently, can be "encoder_prefix", "cross_prefix" or None. + config (:class:`~transformers.PretrainedConfig`): The model config. + """ + + adapter_modules_name = "prefixes" + supported_compositions = [Stack, Parallel, BatchSplit] + + def __init__( + self, + location_key: str, + model_config: PretrainedConfig, + adapters_config: ModelAdaptersConfig, + add_model_type_to_key: bool = False, + ): + super().__init__() + self.model_config = model_config + self.adapters_config = adapters_config + self.location_key = location_key + if add_model_type_to_key: + self.location_key = f"{self.model_config.model_type}_{self.location_key}" + self.prefixes = {} + self.prefix_gates = nn.ModuleDict() + + def set_pool(self, pool: PrefixTuningPool): + self.__setattr__("pool", pool) + + def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: + self.layer_idx = layer_idx + # only match location keys for which we have config keys + if self.location_key.startswith("cross") or self.location_key.startswith("encoder"): + used_location_key = self.location_key + else: + used_location_key = None + prefix_tuning_config = self.adapters_config.match( + adapter_name, + config_type=PrefixTuningConfig, + layer_idx=self.layer_idx, + location_key=used_location_key, + ) + if prefix_tuning_config is not None: + prefix_id = self.pool.indicate_prefix( + adapter_name, + self.location_key, + n_heads=self.model_config.num_attention_heads, + input_size=self.model_config.hidden_size, + n_embd_per_head=getattr(self.model_config, "d_kv", None), # this is currently specific to T5-3B + ) + self.prefixes[adapter_name] = prefix_id + + if prefix_tuning_config.use_gating: + gate_outputs = 1 if prefix_tuning_config.shared_gating else 2 + gate = nn.Linear(self.model_config.hidden_size, gate_outputs) + gate.weight.data.normal_(mean=0.0, std=0.02) + self.prefix_gates[adapter_name] = gate + return True + + return False + + def average_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: + # add new adapter + if self.add_adapter(adapter_name, self.layer_idx): + # prefix averaging is handled in pool, only average gates here + if adapter_name in self.prefix_gates: + avg_state_dict = {} + for name, weight in input_adapters.items(): + if name in self.prefix_gates: + module = self.prefix_gates[name] + for k, v in module.state_dict().items(): + if k in avg_state_dict: + avg_state_dict[k] += weight * v + else: + avg_state_dict[k] = weight * v + else: + self.delete_adapter(adapter_name) # clean up before raising error + raise ValueError("Adapter {} not found.".format(name)) + # load averaged weights + self.prefix_gates[adapter_name].load_state_dict(avg_state_dict) + return True + else: + return False + + def delete_adapter(self, adapter_name: str): + self.pool.delete_prefix(adapter_name) + if adapter_name in self.prefixes: + del self.prefixes[adapter_name] + if adapter_name in self.prefix_gates: + del self.prefix_gates[adapter_name] + + def add_fusion_layer(self, adapter_names: Union[List, str]): + pass # not applicable to prefix tuning + + def delete_fusion_layer(self, adapter_names: Union[List, str]): + pass # not applicable to prefix tuning + + def enable_adapters(self, adapter_setup: AdapterCompositionBlock, unfreeze_adapters: bool, unfreeze_fusion: bool): + if unfreeze_adapters: + for prefix_tuning_name in adapter_setup.flatten(): + self.pool.enable_prefix(prefix_tuning_name) + if prefix_tuning_name in self.prefix_gates: + for param in self.prefix_gates[prefix_tuning_name].parameters(): + param.requires_grad = unfreeze_adapters + + def freeze_adapter(self, adapter_name: str, freeze: bool = True): + if adapter_name in self.prefixes: + self.pool.get_prefix(adapter_name)[self.location_key].train(not freeze) + for param in self.pool.get_prefix(adapter_name)[self.location_key].parameters(): + param.requires_grad = not freeze + if adapter_name in self.prefix_gates: + for param in self.prefix_gates[adapter_name].parameters(): + param.requires_grad = not freeze + + def get_adapter(self, adapter_name): + return_dict = nn.ModuleDict() + # Make sure to only return params once + if adapter_name in self.prefixes and self.prefixes[adapter_name] == 0: + prefix_module = self.pool.get_prefix(adapter_name) + if prefix_module is not None: + return_dict["prefix"] = prefix_module[self.location_key] + if adapter_name in self.prefix_gates: + return_dict["gate"] = self.prefix_gates[adapter_name] + if len(return_dict) > 0: + return return_dict + + return None + + def vslice(self, state: PrefixTuningState, slice_obj: slice) -> PrefixTuningState: + if state.idx_slice is None: + split_idx_slice = slice_obj + else: + split_idx_slice = slice( + state.idx_slice.start + slice_obj.start, + state.idx_slice.start + slice_obj.stop, + ) + return PrefixTuningState( + key_states=state.key_states[slice_obj], + value_states=state.value_states[slice_obj], + residual_input=state.residual_input[slice_obj], + attention_mask=state.attention_mask[slice_obj] if state.attention_mask is not None else None, + invert_mask=state.invert_mask, + idx_slice=split_idx_slice, + ) + + def pad_and_concat(self, states: List[PrefixTuningState]) -> PrefixTuningState: + """Pads all key & value states to the longest prefix length in the current batch. + This is required e.g. for stacked prefix tunings. + """ + max_prefix_length = max([state.key_states.shape[-2] for state in states]) + all_key_states, all_value_states, all_residual_input, all_attention_mask = [], [], [], [] + for state in states: + key_states, value_states, residual_input, attention_mask = state[:4] + # pad sizes + pad_length = max_prefix_length - key_states.shape[-2] + pad_size = (0, 0, pad_length, 0) + key_states = F.pad(key_states, pad_size, "constant", self.model_config.pad_token_id) + value_states = F.pad(value_states, pad_size, "constant", self.model_config.pad_token_id) + + # pad attention mask + if pad_length > 0: + # Masking the padded tokens only works correctly if attention_mask is set + # We assume this to be the case at this point + assert attention_mask is not None, "Attention mask must be set for prefix tuning" + attention_mask = F.pad( + attention_mask, + (max_prefix_length - attention_mask.shape[-1], 0), + "constant", + 1.0 if state.invert_mask else 0.0, + ) + + all_key_states.append(key_states) + all_value_states.append(value_states) + all_residual_input.append(residual_input) + all_attention_mask.append(attention_mask) + + all_key_states = torch.cat(all_key_states, dim=0) + all_value_states = torch.cat(all_value_states, dim=0) + all_residual_input = torch.cat(all_residual_input, dim=0) + all_attention_mask = torch.cat(all_attention_mask, dim=0) if attention_mask is not None else None + + return PrefixTuningState( + key_states=all_key_states, + value_states=all_value_states, + residual_input=all_residual_input, + attention_mask=all_attention_mask, + invert_mask=states[0].invert_mask, + idx_slice=states[0].idx_slice, + ) + + def repeat(self, state: PrefixTuningState, channels: int) -> PrefixTuningState: + if state.attention_mask is not None: + if state.attention_mask.dim() == 2: # e.g. for DistilBERT, attention_mask has shape (batch_size, seq_len) + attention_mask = state.attention_mask.repeat(channels, 1) + else: + attention_mask = state.attention_mask.repeat(channels, 1, 1, 1) + else: + attention_mask = None + return PrefixTuningState( + key_states=state.key_states.repeat(channels, 1, 1, 1), + value_states=state.value_states.repeat(channels, 1, 1, 1), + residual_input=state.residual_input.repeat(channels, 1, 1), + attention_mask=attention_mask, + invert_mask=state.invert_mask, + idx_slice=state.idx_slice, + ) + + def mean(self, states: List[PrefixTuningState], weights: torch.Tensor) -> PrefixTuningState: + # TODO implement average composition + raise NotImplementedError() + + def compose_single(self, adapter_setup: str, state: PrefixTuningState, lvl: int = 0) -> PrefixTuningState: + prefix_id = self.prefixes[adapter_setup] + batch_size = state.key_states.size(0) + + # Retrieve pre-computed prefix states from context + context = ForwardContext.get_context() + # batch_size x n_heads x prefix_length x n_embd_per_head + prefix_keys, prefix_values = context.prefix_states[adapter_setup][self.location_key][prefix_id] + + # Select index range for batch split + # Ignore slices that go beyond the prefix states bsz + # (this is the case for slices produced by Parallel blocks which operate on replicated kv states) + if state.idx_slice is not None and state.idx_slice.start < prefix_keys.size(0): + prefix_keys = prefix_keys[state.idx_slice] + prefix_values = prefix_values[state.idx_slice] + + if adapter_setup in self.prefix_gates: + gate = self.prefix_gates[adapter_setup] + gate_output = torch.mean(torch.sigmoid(gate(state.residual_input)), dim=1) + self._store_gating_score(adapter_setup, gate_output) + gate_output_key = gate_output[:, 0].view(-1, 1, 1, 1) + gate_output_value = gate_output[:, -1].view(-1, 1, 1, 1) + prefix_keys = prefix_keys * gate_output_key + prefix_values = prefix_values * gate_output_value + + # Replicate for Parallel block + prefix_keys, prefix_values = adjust_tensors_for_parallel(state.key_states, prefix_keys, prefix_values) + + key_states = torch.cat([prefix_keys, state.key_states], dim=2) + value_states = torch.cat([prefix_values, state.value_states], dim=2) + if state.attention_mask is not None: + if state.attention_mask.dim() == 2: # e.g. for DistilBERT, attention_mask has shape (batch_size, seq_len) + prefix_mask = torch.ones(batch_size, prefix_keys.size(2)).to(state.attention_mask.device) + else: + prefix_mask = torch.ones(batch_size, 1, state.attention_mask.size(2), prefix_keys.size(2)).to( + state.attention_mask.device + ) + if state.invert_mask: + prefix_mask = 1.0 - prefix_mask + (prefix_mask,) = adjust_tensors_for_parallel(state.attention_mask, prefix_mask) + attention_mask = torch.cat([prefix_mask, state.attention_mask], dim=-1) + else: + attention_mask = None + + return state._replace(key_states=key_states, value_states=value_states, attention_mask=attention_mask) + + def forward(self, key_states, value_states, residual_input, attention_mask=None, invert_mask=True): + adapter_setup = self.get_active_setup() + if adapter_setup is not None: + state = PrefixTuningState(key_states, value_states, residual_input, attention_mask, invert_mask) + state = self.compose(adapter_setup, state) + key_states, value_states, residual_input, attention_mask = state[:4] + + return key_states, value_states, attention_mask diff --git a/adapters/src/adapters/methods/prompt_tuning.py b/adapters/src/adapters/methods/prompt_tuning.py new file mode 100644 index 00000000..fd9db60e --- /dev/null +++ b/adapters/src/adapters/methods/prompt_tuning.py @@ -0,0 +1,228 @@ +# https://github.com/google-research/prompt-tuning/blob/main/prompt_tuning/train/prompts.py + +import math +from typing import Callable, Dict, List, Union + +import numpy as np +import torch +from torch import nn + +from transformers import AutoTokenizer +from transformers.configuration_utils import PretrainedConfig + +from ..composition import AdapterCompositionBlock +from ..configuration import ModelAdaptersConfig, PromptTuningConfig +from ..context import ForwardContext +from .adapter_layer_base import AdapterLayerBase + + +class PromptTuning(nn.Module): + """Generate a Prompt and concatenate it with the input. + + This is the training time version of prompting a model. Calling the injected `prompt` module will generate your + unbatched prompt. This model then replicates it for the batched input and concatenates them together. + + Attributes: + prompt: The module that actually generates the unbatched prompt. + combine: A function that combines the prompt and the embedded input. + """ + + prompt: nn.Module + combination_fn: Callable[[torch.Tensor, torch.Tensor], torch.Tensor] + + def __init__( + self, + adapter_name: str, + prompt_tuning_config: PromptTuningConfig, + model_config: PretrainedConfig, + base_model_embeddings: nn.Module, + ): + super().__init__() + + self.name = adapter_name + self.model_config = model_config + self.prompt_tuning_config = prompt_tuning_config + + embedding_size = getattr(model_config, "embedding_size", model_config.hidden_size) + + self.prompt_embedding = nn.Embedding( + num_embeddings=prompt_tuning_config.prompt_length, embedding_dim=embedding_size + ) + # Initialize prompt tokens + self.prompt_tokens = torch.arange(prompt_tuning_config.prompt_length).long() + + self._init_prompt_embedding(base_model_embeddings) + + if prompt_tuning_config.combine == "prefix": + self.combination_fn = lambda prompt, embedded_input: torch.cat([prompt, embedded_input], dim=1) + elif prompt_tuning_config.combine == "prefix_after_bos": + self.combination_fn = lambda prompt, embedded_input: torch.cat( + [embedded_input[:, 0, np.newaxis], prompt, embedded_input[:, 1:]], dim=1 + ) + else: + raise ValueError( + f"Unknown combination function: {prompt_tuning_config.combine}. " + "Must be one of 'prefix' or 'prefix_after_bos'." + ) + + def _init_prompt_embedding(self, base_model_embeddings: nn.Module) -> None: + if self.prompt_tuning_config.prompt_init == "random_uniform": + nn.init.uniform_( + self.prompt_embedding.weight, + a=-self.prompt_tuning_config.random_uniform_scale, + b=self.prompt_tuning_config.random_uniform_scale, + ) + + elif self.prompt_tuning_config.prompt_init == "from_string": + tokenizer = AutoTokenizer.from_pretrained(self.model_config.tokenizer_name_or_path) + prompt_length = self.prompt_tuning_config.prompt_length + prompt_text = self.prompt_tuning_config.prompt_init_text + if prompt_text is None: + raise ValueError("Prompt text must be provided when using prompt_init='from_string'.") + + tokenized_prompt_text: list[int] = tokenizer(prompt_text)["input_ids"] # type: ignore + + # If the prompt text tokens are shorter than the prompt length, we repeat the prompt text tokens until we reach the prompt length + if len(tokenized_prompt_text) < prompt_length: + num_reps = math.ceil(prompt_length / len(tokenized_prompt_text)) + tokenized_prompt_text = tokenized_prompt_text * num_reps + + # Adjust length of prompt text tokens to match prompt_length + tokenized_prompt_text = tokenized_prompt_text[:prompt_length] + + # Initialize prompt embedding with tokenized prompt text + word_embedding_weights = base_model_embeddings(torch.LongTensor(tokenized_prompt_text)).detach().clone() + word_embedding_weights = word_embedding_weights.to(torch.float32) + self.prompt_embedding.weight = nn.Parameter(word_embedding_weights) + + else: + raise ValueError(f"Unknown prompt initialization: {self.prompt_tuning_config.prompt_init}") + + def forward(self, embedded_input): + # Compute prompt embedding + self.prompt_tokens = self.prompt_tokens.to(embedded_input.device) + prompt = self.prompt_embedding(self.prompt_tokens) + + # Prompt to batch size + batch_size = embedded_input.shape[0] + prompt = torch.tile(torch.unsqueeze(prompt, dim=0), [batch_size] + [1 for _ in prompt.shape]) + + # Merge prompt and input + output = self.combination_fn(prompt, embedded_input) + + # Adapt attention mask + prefix_attention_mask_length = self.prompt_tuning_config.prompt_length + + return output, prefix_attention_mask_length + + +class PromptTuningLayer(AdapterLayerBase, nn.Module): + """ + Prompt Tuning implementation. + + Args: + model_config: The model configuration. + adapters_config: The adapter configuration. + base_model_embeddings: + The embedding layer of the base model (used to initialize the prompt embedding if + prompt_init='from_string'). + """ + + adapter_modules_name = "prompt_tunings" + + def __init__( + self, + model_config: PretrainedConfig, + adapters_config: ModelAdaptersConfig, + base_model_embeddings: nn.Module, + ): + super().__init__() + self.model_config = model_config + self.adapters_config = adapters_config + self.base_model_embeddings = base_model_embeddings + self.prompt_tunings = nn.ModuleDict() + + def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: + # ignore layer_idx as prompt tunings are only added after the embedding layer + prompt_tuning_config = self.adapters_config.match( + adapter_name, + config_type=PromptTuningConfig, + ) + + if prompt_tuning_config is not None: + adapter = PromptTuning( + adapter_name=adapter_name, + prompt_tuning_config=prompt_tuning_config, # type: ignore + model_config=self.model_config, + base_model_embeddings=self.base_model_embeddings, + ) + adapter.train(self.training) # make sure training mode is consistent + self.prompt_tunings[adapter_name] = adapter + return True + + return False + + def average_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: + # add new adapter + if self.add_adapter(adapter_name, -1): + # average weights + avg_state_dict = {} + for name, weight in input_adapters.items(): + if name in self.prompt_tunings: + module = self.prompt_tunings[name] + for k, v in module.state_dict().items(): + if k in avg_state_dict: + avg_state_dict[k] += weight * v + else: + avg_state_dict[k] = weight * v + else: + self.delete_adapter(adapter_name) # clean up before raising error + raise ValueError("Adapter {} not found.".format(name)) + # load averaged weights + self.prompt_tunings[adapter_name].load_state_dict(avg_state_dict) + return True + + return False + + def delete_adapter(self, adapter_name: str): + if adapter_name in self.prompt_tunings: + del self.prompt_tunings[adapter_name] + + def add_fusion_layer(self, adapter_names: Union[List, str]): + pass # not applicable to prompt tuning + + def delete_fusion_layer(self, adapter_names: Union[List, str]): + pass # not applicable to prompt tuning + + def enable_adapters(self, adapter_setup: AdapterCompositionBlock, unfreeze_adapters: bool, unfreeze_fusion: bool): + if unfreeze_adapters: + for prompt_tuning_name in adapter_setup.flatten(): + if prompt_tuning_name in self.prompt_tunings: + for param in self.prompt_tunings[prompt_tuning_name].parameters(): + param.requires_grad = True + + def freeze_adapter(self, adapter_name: str, freeze: bool = True): + if adapter_name in self.prompt_tunings: + self.prompt_tunings[adapter_name].train(not freeze) + for param in self.prompt_tunings[adapter_name].parameters(): + param.requires_grad = not freeze + + def get_adapter(self, adapter_name): + if adapter_name in self.prompt_tunings: + return self.prompt_tunings[adapter_name] + else: + return None + + def forward(self, hidden_states: torch.Tensor): + prefix_attention_mask_length = None + adapter_setup = self.get_active_setup() + if adapter_setup is not None and len(adapter_setup) > 0: + first_adapter = adapter_setup.first() + if first_adapter in self.prompt_tunings: + hidden_states, prefix_attention_mask_length = self.prompt_tunings[first_adapter](hidden_states) + + context = ForwardContext.get_context() + if context is not None: + context.prompt_tokens_length = prefix_attention_mask_length + + return hidden_states diff --git a/adapters/src/adapters/model_mixin.py b/adapters/src/adapters/model_mixin.py new file mode 100644 index 00000000..f27a5fa0 --- /dev/null +++ b/adapters/src/adapters/model_mixin.py @@ -0,0 +1,1552 @@ +import inspect +import logging +import os +import warnings +from abc import ABC, abstractmethod +from collections import defaultdict +from os.path import join +from typing import Any, Dict, Iterable, List, Optional, Tuple, Union + +import torch +from torch import nn + +from transformers.modeling_outputs import ModelOutput + +from .composition import AdapterCompositionBlock, Fuse, Stack, parse_composition +from .configuration import ADAPTER_CONFIG_MAP, AdapterConfig, AdapterFusionConfig, BnConfig +from .context import AdapterSetup, ForwardContext +from .hub_mixin import PushAdapterToHubMixin +from .loading import AdapterFusionLoader, AdapterLoader, PredictionHeadLoader, WeightsLoader +from .methods.adapter_layer_base import AdapterLayerBase +from .methods.bottleneck import BottleneckLayer +from .methods.lora import LoRALayer +from .methods.modeling import Adapter, GLOWCouplingBlock, NICECouplingBlock, init_shared_parameters +from .methods.prefix_tuning import PrefixTuningLayer, PrefixTuningPool +from .methods.prompt_tuning import PromptTuningLayer +from .utils import EMBEDDING_FILE, TOKENIZER_PATH, get_adapter_config_hash, inherit_doc +from .wrappers.configuration import SUBMODEL_NAMES, init_adapters_config + + +logger = logging.getLogger(__name__) + + +class InvertibleAdaptersMixin: + """Mixin for Transformer models adding invertible adapters.""" + + def init_adapters(self, model_config, adapters_config, **kwargs): + self.invertible_adapters = nn.ModuleDict(dict()) + + init_adapters_config(self, model_config, adapters_config) + + if hasattr(super(), "init_adapters"): + super().init_adapters(self.config, self.adapters_config, **kwargs) + + def add_invertible_adapter(self, adapter_name: str) -> bool: + """ + Adds an invertible adapter module for the adapter with the given name. If the given adapter does not specify an + invertible adapter config, this method does nothing. + + Args: + adapter_name (str): The name of the adapter for which to add an invertible adapter module. + """ + if adapter_name in self.invertible_adapters: + raise ValueError(f"Model already contains an adapter module for '{adapter_name}'.") + embedding_size = getattr(self.config, "embedding_size", self.config.hidden_size) + adapter_config = self.adapters_config.match( + adapter_name, + config_type=BnConfig, + location_key="inv_adapter", + ) + if adapter_config and adapter_config["inv_adapter"]: + if adapter_config["inv_adapter"] == "nice": + inv_adap = NICECouplingBlock( + [[embedding_size]], + non_linearity=adapter_config["non_linearity"], + reduction_factor=adapter_config["inv_adapter_reduction_factor"], + ) + elif adapter_config["inv_adapter"] == "glow": + inv_adap = GLOWCouplingBlock( + [[embedding_size]], + non_linearity=adapter_config["non_linearity"], + reduction_factor=adapter_config["inv_adapter_reduction_factor"], + ) + else: + raise ValueError(f"Invalid invertible adapter type '{adapter_config['inv_adapter']}'.") + self.invertible_adapters[adapter_name] = inv_adap + self.invertible_adapters[adapter_name].apply(Adapter.init_bert_weights) + return True + + return False + + def _average_invertible_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: + # add new adapter + if self.add_invertible_adapter(adapter_name): + # average weights + avg_state_dict = {} + for name, weight in input_adapters.items(): + module = self.invertible_adapters[name] + if module is not None: + for k, v in module.state_dict().items(): + if k in avg_state_dict: + avg_state_dict[k] += weight * v + else: + avg_state_dict[k] = weight * v + # load averaged weights + self.invertible_adapters[adapter_name].load_state_dict(avg_state_dict) + return True + + return False + + def delete_invertible_adapter(self, adapter_name: str): + if adapter_name in self.invertible_adapters: + del self.invertible_adapters[adapter_name] + + def get_invertible_adapter(self): + # TODO: Currently no fusion over invertible adapters, takes only very first language adapter position + if self.adapters_config.active_setup is not None and len(self.adapters_config.active_setup) > 0: + first_adapter = self.adapters_config.active_setup.first() + if first_adapter in self.invertible_adapters: + return self.invertible_adapters[first_adapter] + return None + + def enable_invertible_adapters(self, adapter_names): + for adapter_name in adapter_names: + if adapter_name in self.invertible_adapters: + for param in self.invertible_adapters[adapter_name].parameters(): + param.requires_grad = True + + def invertible_adapters_forward(self, hidden_states, rev=False): + # TODO: Currently no fusion over invertible adapters, takes only very first language adapter position + adapter_setup = self._get_active_setup() + if adapter_setup is not None and len(adapter_setup) > 0: + first_adapter = adapter_setup.first() + if first_adapter in self.invertible_adapters: + hidden_states = self.invertible_adapters[first_adapter](hidden_states, rev=rev) + return hidden_states + + def _get_active_setup(self): + if hasattr(self, "adapters_config"): + # First check current context before falling back to defined setup + context = AdapterSetup.get_context() + if context is not None: + adapter_setup = context.adapter_setup + else: + adapter_setup = self.adapters_config.active_setup + else: + adapter_setup = None + if adapter_setup is not None and (len(adapter_setup.flatten()) > 0): + return adapter_setup + else: + return None + + +class InvertibleAdaptersWrapperMixin: + """ + Mixin for Transformer models supporting invertible adapters in a child module. When applying this mixin, set + `invertible_adapters_base_name` to the name of the child module that includes `InvertibleAdaptersMixin`. + """ + + invertible_adapters_base_name = "" + + @property + def invertible_adapters_base(self): + return getattr(self, self.invertible_adapters_base_name, None) + + @property + def invertible_adapters(self): + if self.invertible_adapters_base is not None: + return self.invertible_adapters_base.invertible_adapters + return None + + def add_invertible_adapter(self, adapter_name: str) -> bool: + """ + Adds an invertible adapter module for the adapter with the given name. If the given adapter does not specify an + invertible adapter config, this method does nothing. + + Args: + adapter_name (str): The name of the adapter for which to add an invertible adapter module. + """ + if self.invertible_adapters_base is not None: + return self.invertible_adapters_base.add_invertible_adapter(adapter_name) + return False + + def _average_invertible_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: + if self.invertible_adapters_base is not None: + return self.invertible_adapters_base._average_invertible_adapter(adapter_name, input_adapters) + return False + + def delete_invertible_adapter(self, adapter_name: str): + if self.invertible_adapters_base is not None: + self.invertible_adapters_base.delete_invertible_adapter(adapter_name) + + def get_invertible_adapter(self): + if self.invertible_adapters_base is not None: + return self.invertible_adapters_base.get_invertible_adapter() + return None + + def enable_invertible_adapters(self, adapter_names): + if self.invertible_adapters_base is not None: + self.invertible_adapters_base.enable_invertible_adapters(adapter_names) + + def invertible_adapters_forward(self, hidden_states, rev=False): + if self.invertible_adapters_base is not None: + return self.invertible_adapters_base.invertible_adapters_forward(hidden_states, rev=rev) + return hidden_states + + +class EmbeddingAdaptersMixin: + """Mixin for Transformer models adding support for dynamically switching embeddings.""" + + def init_adapters(self, model_config, adapters_config, **kwargs): + self.loaded_embeddings = {} + self._active_embedding = "default" + + init_adapters_config(self, model_config, adapters_config) + + super().init_adapters(self.config, self.adapters_config, **kwargs) + + def load_embeddings(self, path: str, name: str): + """ + Load a saved embedding from the given path. If the embedding was saved with a tokenizer it is returned + + Args: + path: the path to the saved embedding + name: the name the embedding should be loaded as + + Returns: a tokenizer if it ws saved with the embedding otherwise None + + """ + from transformers.models.auto.tokenization_auto import AutoTokenizer + + if name in self.loaded_embeddings: + raise ValueError("An embedding with the name {} already exists".format(name)) + tokenizer = None + tokenizer_path = os.path.join(path, TOKENIZER_PATH) + if os.path.isdir(tokenizer_path): + tokenizer = AutoTokenizer.from_pretrained(tokenizer_path) + + embedding_path = os.path.join(path, EMBEDDING_FILE) + if not os.path.isfile(embedding_path): + raise FileNotFoundError("No embeddings found at {}".format(embedding_path)) + weights = torch.load(embedding_path) + + self.loaded_embeddings[name] = nn.Embedding.from_pretrained(weights) + self.set_active_embeddings(name) + return tokenizer + + def add_embeddings(self, name, tokenizer, reference_embedding=None, reference_tokenizer=None, embedding_dim=None): + """ + Add a new embedding to the model. If a reference embedding and reference tokenizer are provided tokens in the + present in both tokenizers are initialized to the embedding in the reference_embedding. + + Args: + name: the name of the embedding + tokenizer: the tokenizer determining the vocab of the embedding + reference_embedding: + the reference embedding to use for initializing the embeddings of tokens present in the newly created + embedding + reference_tokenizer: the tokenizer providing the vocab for the reference embedding + embedding_dim: + the dimension of the embeddings (if None the embedding_size, or if this doesn't exist the hidden_size, + from the config is used) + """ + if name in self.loaded_embeddings: + raise ValueError("An embedding with the name {} already exists".format(name)) + if embedding_dim is not None: + embedding_size = embedding_dim + else: + embedding_size = getattr(self.config, "embedding_size", self.config.hidden_size) + embedding = nn.Embedding(len(tokenizer), embedding_size) + # Use same initialization as base Transformer model + embedding.weight.data.normal_(mean=0.0, std=0.02) + if embedding.padding_idx is not None: + embedding.weight.data[embedding.padding_idx].zero_() + embedding.requires_grad_(False) + if (reference_embedding is not None and reference_tokenizer is None) or ( + reference_tokenizer is not None and reference_embedding is None + ): + raise KeyError( + "Reference embedding and reference tokenizer are required to use initialize embeddings from reference" + " embedding" + ) + if reference_embedding is not None and reference_tokenizer is not None: + tokens = set(tokenizer.get_vocab().keys()) & set(reference_tokenizer.get_vocab().keys()) + reference_vocab = reference_tokenizer.get_vocab() + vocab = tokenizer.get_vocab() + for t in tokens: + idx_reference = reference_vocab[t] + idx = vocab[t] + embedding.weight[idx] = ( + self.loaded_embeddings[reference_embedding].weight[idx_reference].detach().clone() + ) + embedding.train(False) + self.loaded_embeddings[name] = embedding + self.set_active_embeddings(name) + + def delete_embeddings(self, name): + """ + Deletes the embedding with the given name + + Args: + name: The name of the embedding that should be deleted + + """ + if name not in self.loaded_embeddings: + raise ValueError("No embedding with name {}".format(name)) + if self.active_embeddings == name: + logger.warning("The active embedding is deleted. Setting the default embedding as active.") + self.set_active_embeddings("default") + del self.loaded_embeddings[name] + + def save_embeddings(self, path, name, tokenizer=None): + """ + Saves the embedding with the given name. If a tokenizer is passed as well the tokenizer is saved together with + the embedding. + + Args: + path: The path where the embedding should be saved + name: The name of the embedding that should be saved + tokenizer: optionally a tokenizer to save with the embedding (default is None) + + """ + if self.active_embeddings == name: + self.loaded_embeddings[name] = self.get_input_embeddings() + os.makedirs(path, exist_ok=True) + embedding_path = os.path.join(path, EMBEDDING_FILE) + torch.save(self.loaded_embeddings[name].weight, embedding_path) + if tokenizer: + tokenizer_path = os.path.join(path, TOKENIZER_PATH) + tokenizer.save_pretrained(tokenizer_path) + + def set_active_embeddings(self, name): + """ + Sets the active embedding for the forward pass of the model + + Args: + name: The name of the embedding that should be used + + """ + self.loaded_embeddings[self.active_embeddings] = self.get_input_embeddings() + self.set_input_embeddings(self.loaded_embeddings[name]) + self.config.vocab_size = self.loaded_embeddings[name].num_embeddings + self._active_embedding = name + + @property + def active_embeddings(self): + return self._active_embedding + + +class EmbeddingAdaptersWrapperMixin: + def load_embeddings(self, path: str, name: str): + return self.base_model.load_embeddings(path, name) + + def add_embeddings(self, name, tokenizer, reference_embedding=None, reference_tokenizer=None): + return self.base_model.add_embeddings(name, tokenizer, reference_embedding, reference_tokenizer) + + def delete_embeddings(self, name): + return self.base_model.delete_embeddings(name) + + def save_embeddings(self, path, name, tokenizer=None): + return self.base_model.save_embeddings(path, name, tokenizer) + + def set_active_embeddings(self, name): + return self.base_model.set_active_embeddings(name) + + @property + def active_embeddings(self): + return self.base_model.active_embeddings + + @property + def loaded_embeddings(self): + return self.base_model.loaded_embeddings + + +class ModelAdaptersMixin(PushAdapterToHubMixin, ABC): + """Mixin for transformer models adding support for loading/ saving adapters.""" + + add_base_adapters = False + support_prompt_tuning = True # If False, the prompt tuning layer is not added to the model. If True, the prompt tuning layer is added if add_base_adapters is True. + _tied_weights_keys = ["prompt_tuning.base_model_embeddings.*"] + + def __init__(self, config, *args, **kwargs): + super().__init__(config, *args, **kwargs) + + def _link_prefix_to_pool(self, layer): + if isinstance(layer, PrefixTuningLayer): + layer.set_pool(self.base_model.prefix_tuning) + + @property + def model_name(self): + return self.config.name_or_path + + def _init_adapters_submodules(self, model_config, adapters_config): + # Initialize adapters in all submodules + for module in self.modules(): + # skip calling module + if module == self: + continue + if hasattr(module, "init_adapters"): + module.init_adapters(model_config, adapters_config) + + def init_adapters(self, model_config, adapters_config, add_prefix_tuning_pool=True): + """ + This method initializes adapter modules and fusion modules from the model config. + """ + self.base_model.shared_parameters = nn.ModuleDict() + + # Initialize adapters config + init_adapters_config(self, model_config, adapters_config) + # Initialize adapters in all submodules + self._init_adapters_submodules(self.config, self.adapters_config) + + # Link all prefix tunings + if add_prefix_tuning_pool: + self.base_model.prefix_tuning = PrefixTuningPool(self.config, self.adapters_config) + self.apply_to_adapter_layers(lambda i, layer: self._link_prefix_to_pool(layer)) + + # Add Prompt Tuning + if self.add_base_adapters: + if self.support_prompt_tuning: + self.prompt_tuning = PromptTuningLayer(model_config, self.adapters_config, self.get_input_embeddings()) + + # Initialize adapters from config + for adapter_name in self.adapters_config: + self._add_adapter_weights(adapter_name) + # Initialize fusion from config + for fusion_name in self.adapters_config.fusions: + self.apply_to_adapter_layers(lambda i, layer: layer.add_fusion_layer(fusion_name)) + + if isinstance(self, EmbeddingAdaptersMixin): + self.loaded_embeddings["default"] = self.get_input_embeddings() + + # These methods have to be implemented by every deriving class: + + @abstractmethod + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + """ + Iterates over all layers of the model. + + This abstract method has to ne implemented by every implementing model. + """ + pass + + def apply_to_adapter_layers(self, fn): + """ + Applies a function to all adapter layers of the model. + """ + for i, layer in self.iter_layers(): + for module in layer.modules(): + if isinstance(module, AdapterLayerBase): + fn(i, module) + + def apply_to_basemodel_childs(self, fn): + """ + Applies a function to all direct childs of the model if they are a instance of AdapterLayerBase. + """ + if self.add_base_adapters: + for module in self.base_model.children(): + if isinstance(module, AdapterLayerBase): + # These childs don't have a layer index so we pass -1 + fn(-1, module) + + def train_adapter(self, adapter_setup: Union[list, AdapterCompositionBlock], train_embeddings=False): + """Sets the model into mode for training the given adapters.""" + self.train() + self.freeze_model(True) + adapter_setup = parse_composition(adapter_setup) + self.apply_to_adapter_layers(lambda i, layer: layer.enable_adapters(adapter_setup, True, False)) + self.apply_to_basemodel_childs(lambda i, child: child.enable_adapters(adapter_setup, True, False)) + for adapter_name in adapter_setup: + if adapter_name in self.base_model.shared_parameters: + for param in self.base_model.shared_parameters[adapter_name].values(): + param.requires_grad = True + + if isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin): + self.enable_invertible_adapters(adapter_setup.flatten()) + # use the adapters to be trained by default in every forward pass + self.set_active_adapters(adapter_setup) + if train_embeddings: + self.get_input_embeddings().train() + + def train_fusion(self, adapter_setup: Union[list, AdapterCompositionBlock], unfreeze_adapters=False): + """Sets the model into mode for training of adapter fusion determined by a list of adapter names.""" + warnings.warn( + "add_fusion() has been deprecated in favor of add_adapter_fusion(). Please use the newer method instead.", + FutureWarning, + ) + self.train_adapter_fusion(adapter_setup, unfreeze_adapters=unfreeze_adapters) + + def train_adapter_fusion(self, adapter_setup: Union[list, AdapterCompositionBlock], unfreeze_adapters=False): + """Sets the model into mode for training of adapter fusion determined by a list of adapter names.""" + self.train() + self.freeze_model(True) + adapter_setup = parse_composition(adapter_setup) + self.apply_to_adapter_layers(lambda i, layer: layer.enable_adapters(adapter_setup, unfreeze_adapters, True)) + self.apply_to_basemodel_childs(lambda i, child: child.enable_adapters(adapter_setup, unfreeze_adapters, True)) + # use the adapters to be trained by default in every forward pass + self.set_active_adapters(adapter_setup) + # TODO implement fusion for invertible adapters + + def has_adapters(self): + return len(self.adapters_config.adapters) > 0 + + @property + def has_parallel_adapters(self) -> bool: + if self.adapters_config.active_setup: + return self.adapters_config.active_setup.parallel_channels > 1 + else: + return False + + @property + def active_adapters(self) -> AdapterCompositionBlock: + return self.adapters_config.active_setup + + @active_adapters.setter + def active_adapters(self, adapter_setup: Union[list, AdapterCompositionBlock]): + self.set_active_adapters(adapter_setup) + + def set_shared_parameters(self, param): + self.base_model.shared_parameters = param + + def set_active_adapters( + self, adapter_setup: Union[list, AdapterCompositionBlock], skip_layers: Optional[List[int]] = None + ): + """ + Sets the adapter modules to be used by default in every forward pass. If no adapter with the given name is + found, no module of the respective type will be activated. + + Args: + adapter_setup (list): + The list of adapters to be activated by default. Can be a fusion or stacking configuration. + """ + adapter_setup = parse_composition(adapter_setup, model_type=self.config.model_type) + if adapter_setup: + for adapter_name in adapter_setup.flatten(): + if adapter_name not in self.adapters_config.adapters: + raise ValueError( + f"No adapter with name '{adapter_name}' found. Please make sure that all specified adapters" + " are correctly loaded." + ) + + # Make sure LoRA is reset + self.reset_adapter() + self.adapters_config.active_setup = adapter_setup + self.adapters_config.skip_layers = skip_layers + + def add_adapter(self, adapter_name: str, config=None, overwrite_ok: bool = False, set_active: bool = False): + """ + Adds a new adapter module of the specified type to the model. + + Args: + adapter_name (str): The name of the adapter module to be added. + config (str or dict or AdapterConfig, optional): The adapter configuration, can be either: + + - the string identifier of a pre-defined configuration dictionary + - a configuration dictionary specifying the full config + - if not given, the default configuration for this adapter type will be used + overwrite_ok (bool, optional): + Overwrite an adapter with the same name if it exists. By default (False), an + exception is thrown. set_active (bool, optional): + Set the adapter to be the active one. By default (False), + the adapter is added but not activated. + """ + config = AdapterConfig.load(config) # ensure config is ok and up-to-date + # In case adapter already exists and we allow overwriting, explicitly delete the existing one first + if overwrite_ok and adapter_name in self.adapters_config: + self.delete_adapter(adapter_name) + self.adapters_config.add(adapter_name, config=config) + try: + self._add_adapter_weights(adapter_name) + except ValueError as ex: + self.delete_adapter(adapter_name) + raise ex + if set_active: + self.set_active_adapters(adapter_name) + + def _add_adapter_weights(self, adapter_name: str): + """Helper method that performs the actual parameter additions when adding a new adapter.""" + self.apply_to_adapter_layers(lambda i, layer: layer.add_adapter(adapter_name, i)) + self.apply_to_basemodel_childs(lambda i, child: child.add_adapter(adapter_name, i)) + + # PHM Layer + if self.adapters_config.match(adapter_name, BnConfig, location_key="phm_layer"): + adapter_config = self.adapters_config.match(adapter_name, BnConfig, location_key="phm_layer") + if adapter_config["shared_phm_rule"] or adapter_config["shared_W_phm"]: + if self.config.model_type in SUBMODEL_NAMES: + hidden_sizes = [ + getattr(self.config, key).hidden_size for key in SUBMODEL_NAMES[self.config.model_type] + ] + if all(hidden_sizes[0] == h for h in hidden_sizes): + self.base_model.shared_parameters[adapter_name] = init_shared_parameters( + adapter_config, hidden_sizes[0], self.device + ) + else: + raise ValueError( + "The model has different hidden sizes {}. Sharing comapcter weights is only possible if" + " the hidden_sizes match.".format(hidden_sizes) + ) + else: + self.base_model.shared_parameters[adapter_name] = init_shared_parameters( + adapter_config, self.config.hidden_size, self.device + ) + # Prefix Tuning + for module in self.modules(): + if isinstance(module, PrefixTuningPool): + module.confirm_prefix(adapter_name) + if isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin): + self.add_invertible_adapter(adapter_name) + + def add_fusion(self, adapter_names: Union[Fuse, list], adapter_fusion_config=None, override_kwargs=None): + warnings.warn( + "add_fusion() has been deprecated in favor of add_adapter_fusion(). Please use the newer method instead.", + FutureWarning, + ) + adapter_fusion_config = AdapterFusionConfig.from_dict(adapter_fusion_config).replace(**override_kwargs) + self.add_adapter_fusion(adapter_names, adapter_fusion_config) + + def add_adapter_fusion( + self, + adapter_names: Union[Fuse, list, str], + config=None, + overwrite_ok: bool = False, + set_active: bool = False, + ): + """ + Adds AdapterFusion to the model with alll the necessary configurations and weight initializations + + Args: + adapter_names (Fuse or list or str): AdapterFusion layer to add. Can be either: + + - a ``Fuse`` composition block + - a list of adapter names to fuse + - a comma-separated string of adapter names to fuse + config (str or dict): adapter fusion configuration, can be either: + + - a string identifying a pre-defined adapter fusion configuration + - a dictionary representing the adapter fusion configuration + - the path to a file containing the adapter fusion configuration + overwrite_ok (bool, optional): + Overwrite an AdapterFusion layer with the same name if it exists. By default (False), an exception is + thrown. + set_active (bool, optional): + Activate the added AdapterFusion. By default (False), the AdapterFusion is added but not activated. + """ + if isinstance(adapter_names, Fuse): + adapter_names = adapter_names.children + elif isinstance(adapter_names, str): + adapter_names = adapter_names.split(",") + + if isinstance(config, dict): + config = AdapterFusionConfig.from_dict(config) # ensure config is ok and up-to-date + # In case adapter already exists and we allow overwriting, explicitly delete the existing one first + if overwrite_ok and self.adapters_config.get_fusion(adapter_names) is not None: + self.delete_adapter_fusion(adapter_names) + self.adapters_config.add_fusion(adapter_names, config=config) + self.apply_to_adapter_layers(lambda i, layer: layer.add_fusion_layer(adapter_names)) + self.apply_to_basemodel_childs(lambda i, child: child.add_fusion_layer(adapter_names)) + if set_active: + if not isinstance(adapter_names, list): + adapter_names = adapter_names.split(",") + self.set_active_adapters(Fuse(*adapter_names)) + + def delete_adapter(self, adapter_name: str): + """ + Deletes the adapter with the specified name from the model. + + Args: + adapter_name (str): The name of the adapter. + """ + if adapter_name not in self.adapters_config: + logger.info("No adapter '%s' found for deletion. Skipping.", adapter_name) + return + del self.adapters_config.adapters[adapter_name] + self.apply_to_adapter_layers(lambda i, layer: layer.delete_adapter(adapter_name)) + self.apply_to_basemodel_childs(lambda i, child: child.delete_adapter(adapter_name)) + # PHM Layer + if adapter_name in self.base_model.shared_parameters: + del self.base_model.shared_parameters[adapter_name] + if isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin): + self.delete_invertible_adapter(adapter_name) + + # Reset active adapters if this was the only active adapter + if self.active_adapters == Stack(adapter_name): + self.active_adapters = None + + def delete_adapter_fusion(self, adapter_names: Union[Fuse, list, str]): + """ + Deletes the AdapterFusion layer of the specified adapters. + + Args: + adapter_names (Union[Fuse, list, str]): AdapterFusion layer to delete. + """ + if isinstance(adapter_names, Fuse): + adapter_fusion_name = ",".join(adapter_names.children) + elif isinstance(adapter_names, list): + adapter_fusion_name = ",".join(adapter_names) + elif isinstance(adapter_names, str): + adapter_fusion_name = adapter_names + else: + raise ValueError("Invalid AdapterFusion definition: {}".format(adapter_names)) + + if adapter_fusion_name not in self.adapters_config.fusions: + logger.info("No AdapterFusion '%s' found for deletion. Skipping.", adapter_fusion_name) + return + del self.adapters_config.fusions[adapter_fusion_name] + self.apply_to_adapter_layers(lambda i, layer: layer.delete_fusion_layer(adapter_fusion_name)) + self.apply_to_basemodel_childs(lambda i, child: child.delete_fusion_layer(adapter_fusion_name)) + # Reset active adapters if this was the active setup + if self.active_adapters == adapter_names: + self.active_adapters = None + + def save_adapter( + self, + save_directory: str, + adapter_name: str, + meta_dict: dict = None, + custom_weights_loaders: Optional[List[WeightsLoader]] = None, + ): + """ + Saves an adapter and its configuration file to a directory so that it can be shared or reloaded using + `load_adapter()`. + + Args: + save_directory (str): Path to a directory where the adapter should be saved. + adapter_name (str): Name of the adapter to be saved. + + Raises: + ValueError: If the given adapter name is invalid. + """ + loader = AdapterLoader(self) + loader.save(save_directory, adapter_name, meta_dict) + # save additional custom weights + if custom_weights_loaders: + for weights_loader in custom_weights_loaders: + weights_loader.save(save_directory, adapter_name) + + def save_adapter_fusion( + self, + save_directory: str, + adapter_names: Union[Fuse, list, str], + meta_dict: dict = None, + custom_weights_loaders: Optional[List[WeightsLoader]] = None, + ): + """ + Saves an AdapterFusion layer and its configuration file to a directory so that it can be shared or reloaded + using `load_adapter_fusion()`. + + Args: + save_directory (str): Path to a directory where the AdapterFusion should be saved. + adapter_names (Union[Fuse, list, str]): AdapterFusion to be saved. + + Raises: + ValueError: If the given AdapterFusion name is invalid. + """ + if isinstance(adapter_names, Fuse): + adapter_fusion_name = ",".join(adapter_names.children) + elif isinstance(adapter_names, list): + adapter_fusion_name = ",".join(adapter_names) + elif isinstance(adapter_names, str): + adapter_fusion_name = adapter_names + else: + raise ValueError("Invalid AdapterFusion definition: {}".format(adapter_names)) + + loader = AdapterFusionLoader(self) + loader.save(save_directory, adapter_fusion_name, meta_dict) + # save additional custom weights + if custom_weights_loaders: + for weights_loader in custom_weights_loaders: + weights_loader.save(save_directory, adapter_fusion_name) + + def load_adapter( + self, + adapter_name_or_path: str, + config: Union[dict, str] = None, + version: str = None, + model_name: str = None, + load_as: str = None, + source: str = None, + custom_weights_loaders: Optional[List[WeightsLoader]] = None, + leave_out: Optional[List[int]] = None, + id2label=None, + set_active: bool = False, + **kwargs + ) -> str: + """ + Loads a pre-trained pytorch adapter module from the local file system or a remote location. + + Args: + adapter_name_or_path (str): can be either: + + - the identifier of a pre-trained task adapter to be loaded from Adapter Hub + - a path to a directory containing adapter weights saved using `model.saved_adapter()` + - a URL pointing to a zip folder containing a saved adapter module + config (dict or str, optional): The requested configuration of the adapter. + If not specified, will be either: - the default adapter config for the requested adapter if specified - + the global default adapter config + version (str, optional): The version of the adapter to be loaded. + model_name (str, optional): The string identifier of the pre-trained model. + load_as (str, optional): Load the adapter using this name. By default, the name with which the adapter was + saved will be used. + source (str, optional): Identifier of the source(s) from where to load the adapter. Can be: + + - "ah" (default): search on AdapterHub. + - "hf": search on HuggingFace model hub. + - None: search on all sources + leave_out: Dynamically drop adapter modules in the specified Transformer layers when loading the adapter. + set_active (bool, optional): + Set the loaded adapter to be the active one. By default (False), the adapter is loaded but not + activated. + + Returns: + str: The name with which the adapter was added to the model. + """ + loader = AdapterLoader(self) + load_dir, load_name = loader.load( + adapter_name_or_path, + config, + version, + model_name, + load_as, + source=source, + leave_out=leave_out, + set_active=set_active, + **kwargs, + ) + # load additional custom weights + if custom_weights_loaders: + for weights_loader in custom_weights_loaders: + weights_loader.load( + load_dir, + load_as=load_as, + loading_info=kwargs.get("loading_info", None), + main_load_name=load_name, + id2label=id2label, + set_active=set_active, + ) + return load_name + + def load_adapter_fusion( + self, + adapter_fusion_name_or_path: str, + load_as: str = None, + custom_weights_loaders: Optional[List[WeightsLoader]] = None, + set_active: bool = False, + **kwargs + ) -> str: + """ + Loads a pre-trained AdapterFusion layer from the local file system. + + Args: + adapter_fusion_name_or_path (str): + a path to a directory containing AdapterFusion weights saved using `model.save_adapter_fusion()`. + load_as (str, optional): Load the AdapterFusion using this name. + By default, the name with which the AdapterFusion layer was saved will be used. + set_active (bool, optional): + Activate the loaded AdapterFusion. By default (False), the AdapterFusion is loaded but not activated. + + Returns: + str: The name with which the AdapterFusion was added to the model. + """ + + loader = AdapterFusionLoader(self) + load_dir, load_name = loader.load(adapter_fusion_name_or_path, load_as, set_active=set_active) + # load additional custom weights + if custom_weights_loaders: + for weights_loader in custom_weights_loaders: + weights_loader.load( + load_dir, + load_as=load_as, + loading_info=kwargs.get("loading_info", None), + main_load_name=load_name, + set_active=set_active, + ) + return load_name + + def save_all_adapters( + self, + save_directory: str, + meta_dict: dict = None, + custom_weights_loaders: Optional[List[WeightsLoader]] = None, + ): + """ + Saves all adapters of this model together with their configuration to subfolders of the given location. + + Args: + save_directory (str): Path to a directory where the adapters should be saved. + """ + os.makedirs(save_directory, exist_ok=True) + for name in self.adapters_config: + adapter_config = self.adapters_config.get(name) + h = get_adapter_config_hash(adapter_config) + save_path = join(save_directory, name) + if meta_dict: + meta_dict.update({"config_id": h}) + else: + meta_dict = {"config_id": h} + self.save_adapter(save_path, name, meta_dict=meta_dict, custom_weights_loaders=custom_weights_loaders) + + def save_all_adapter_fusions( + self, + save_directory: str, + meta_dict: dict = None, + custom_weights_loaders: Optional[List[WeightsLoader]] = None, + ): + """ + Saves all AdapterFusion layers of this model together with their configuration to subfolders of the given + location. + + Args: + save_directory (str): Path to a directory where the AdapterFusion layers should be saved. + """ + os.makedirs(save_directory, exist_ok=True) + for name in self.adapters_config.fusions: + adapter_fusion_config = self.adapters_config.get_fusion(name) + h = get_adapter_config_hash(adapter_fusion_config) + save_path = join(save_directory, name) + if meta_dict: + meta_dict.update({"config_id": h}) + else: + meta_dict = {"config_id": h} + self.save_adapter_fusion( + save_path, name, meta_dict=meta_dict, custom_weights_loaders=custom_weights_loaders + ) + + def freeze_model(self, freeze=True): + """Freezes all weights of the model.""" + # first freeze/ unfreeze all model weights + for param in self.base_model.parameters(): + param.requires_grad = not freeze + self.model_frozen = freeze + + def forward_context(self, context: ForwardContext, *args, **kwargs): + """ + This method is called by the ``ForwardContext`` at the beginning of the forward pass. + """ + # some warnings if we don't use available adapters + active_adapters = getattr(self, "active_adapters", None) or AdapterSetup.get_context_adapter_setup() + if not active_adapters: + if self.has_adapters(): + logger.warning("There are adapters available but none are activated for the forward pass.") + return + + context.adapters_parallelized = False + # Check if already parallelized in encoder + adapter_input_parallelized = kwargs.pop("adapter_input_parallelized", None) + if adapter_input_parallelized: + if active_adapters.parallel_channels > 1: + context.adapters_parallelized = True + # Add the shared parameters for the active adapters to the context + context.shared_parameters = { + name: param + for name, param in self.base_model.shared_parameters.items() + if name in active_adapters.flatten() + } + + if hasattr(self.base_model, "prefix_tuning"): + context.prefix_states = self.base_model.prefix_tuning(*args, **kwargs) + + # Adapter gating and attention outputs + context.output_adapter_gating_scores = kwargs.get("output_adapter_gating_scores", False) + context.output_adapter_fusion_attentions = kwargs.get("output_adapter_fusion_attentions", False) + context.adapter_gating_scores = defaultdict(dict) + context.adapter_fusion_attentions = defaultdict(dict) + + def get_fusion_regularization_loss(self): + reg_loss = None + + target = torch.zeros((self.config.hidden_size, self.config.hidden_size)).fill_diagonal_(1.0).to(self.device) + for i, layer in self.iter_layers(): + for module in layer.modules(): + if isinstance(module, BottleneckLayer): + for _, layer_fusion in module.adapter_fusion_layer.items(): + if hasattr(layer_fusion, "value") and layer_fusion.value.weight.requires_grad: + layer_reg_loss = 0.01 * (target - layer_fusion.value.weight).pow(2).sum() + if reg_loss is None: + reg_loss = layer_reg_loss + else: + reg_loss += layer_reg_loss + + return reg_loss + + def get_adapter(self, name) -> dict: + """ + Returns a dictionary with all weights of the adapter with the specified name. + + Args: + name (str): The adapter name. + + Returns: + dict: A nested dictionary containing the weights of the adapter. The dictionary is structured as follow: + {: {: }}. = -1 indicates global/ shared weights. + """ + destination = defaultdict(dict) + + # global weights are saved at index -1 + if name in self.base_model.shared_parameters: + destination[-1]["shared"] = self.base_model.shared_parameters[name] + if ( + isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin) + ) and name in self.invertible_adapters: + destination[-1]["invertible"] = self.invertible_adapters[name] + + if self.support_prompt_tuning: + prompt_tuning = self.prompt_tuning.get_adapter(name) + if prompt_tuning is not None: + destination[-1]["prompt"] = prompt_tuning + + # use a custom index to ensure numbering is from 0 to N layers + for i, (_, layer) in enumerate(self.iter_layers()): + for module in layer.modules(): + if isinstance(module, AdapterLayerBase): + adapter_module = module.get_adapter(name) + if adapter_module is not None: + # location_key might already be added before -> concat to ModuleList + if module.location_key in destination[i]: + old_module = destination[i][module.location_key] + if isinstance(old_module, nn.ModuleList): + old_module.append(adapter_module) + else: + destination[i][module.location_key] = nn.ModuleList([old_module, adapter_module]) + else: + destination[i][module.location_key] = adapter_module + + return dict(destination) + + def adapter_summary(self, as_dict=False) -> Union[str, dict]: + """ + Returns a string summary of all adapters currently added to the model. Each entry in the summary table has the + following attributes: + + - name: the name of the adapter + - architecture: the architectural base of the adapter + - #param: the number of parameters of the adapter + - %param: the number of parameters of the adapter relative to the full model + - active: whether the adapter is active + - train: whether the adapter weights are enabled for training + """ + # table header + header = ["name", "architecture", "#param", "%param", "active", "train"] + # rows containing adapter info + rows = [] + # fill in data for adapters + for name, config_name in self.adapters_config.adapters.items(): + if config_name in self.adapters_config.config_map: + config = self.adapters_config.config_map.get(config_name, None) + else: + config = ADAPTER_CONFIG_MAP.get(config_name, None) + if isinstance(config, str): + config = ADAPTER_CONFIG_MAP[config] + row = {"name": name, "architecture": config.get("architecture", None) or "bottleneck"} + weights = self.get_adapter(name) + row["active"] = self.active_adapters is not None and name in self.active_adapters.flatten() + # count parameters + no_params = 0 + train = True + for _, module_dict in weights.items(): + for _, module in module_dict.items(): + no_params += sum(p.numel() for p in module.parameters()) + train &= all(p.requires_grad for p in module.parameters()) + row["#param"] = no_params + row["train"] = train + rows.append(row) + # count no. of parameters in base network + model_no_params = sum(p.numel() for p in self.base_model.parameters()) + model_no_params -= sum([r["#param"] for r in rows]) + # add %param info + for row in rows: + row["%param"] = row["#param"] / model_no_params * 100 + # add full model info + rows.append( + { + "name": "Full model", + "#param": model_no_params, + "%param": 100.0, + "train": not getattr(self.base_model, "model_frozen", False), + } + ) + + if as_dict: + return rows + else: + # print + total_length = 80 + header_format = "{:<25}{:<15}{:>12}{:>12}{:>8}{:>8}" + row_format = "{:<25}{:<15}{:>12,}{:>12.3f}{:>8}{:>8}" + s = ["=" * total_length] + s.append(header_format.format(*map(lambda x: x.title(), header))) + s.append("-" * total_length) + for row in rows: + s.append(row_format.format(*[row.get(h, "") for h in header])) + s.insert(len(s) - 1, "-" * total_length) + s.append("=" * total_length) + return "\n".join(s) + + def _average_shared_parameters(self, adapter_name: str, input_adapters: Dict[str, float]): + avg_state_dict = {} + for name, weight in input_adapters.items(): + if name in self.base_model.shared_parameters: + param_dict = self.base_model.shared_parameters[name] + for key, value in param_dict.items(): + if key in avg_state_dict: + avg_state_dict[key] += weight * value + else: + avg_state_dict[key] = weight * value + else: + raise ValueError(f"Adapter {name} not found in shared parameters.") + self.base_model.shared_parameters[adapter_name] = nn.ParameterDict(avg_state_dict) + + def average_adapter( + self, + adapter_name: str, + adapter_list: List[str], + weights: Optional[List[float]] = None, + normalize_weights: bool = True, + overwrite_ok: bool = False, + set_active: bool = False, + ): + """ + Adds a new adapter module as weighted average of a set of existing adapter modules. + + Args: + adapter_name (str): The name of the adapter module to be added. + input_adapters (List[str] or Dict[str, float]): + Specifies the existing adapters whose weights should be averaged. Can either be a list of adapter names + or a dictionary mapping adapter names to weights. + overwrite_ok (bool, optional): + Overwrite an adapter with the same name if it exists. By default (False), an exception is thrown. + set_active (bool, optional): + Set the adapter to be the active one. By default (False), the adapter is added but not activated. + """ + # To be able to average the weights, all adapter configs must be the same + config = None + for name in adapter_list: + if config is None: + config = self.adapters_config.get(name) + elif get_adapter_config_hash(config) != get_adapter_config_hash(self.adapters_config.get(name)): + raise ValueError( + "Cannot average adapters with different configurations. " + "Please make sure all adapters have the same configuration." + ) + # In case adapter already exists and we allow overwriting, explicitly delete the existing one first + if overwrite_ok and adapter_name in self.adapters_config: + self.delete_adapter(adapter_name) + self.adapters_config.add(adapter_name, config=config) + if weights is None: + eq_weight = 1.0 / len(adapter_list) + input_adapters = {name: eq_weight for name in adapter_list} + else: + # normalize weights + if normalize_weights: + sum_weights = sum(weights) + else: + sum_weights = 1.0 + input_adapters = {name: weight / sum_weights for name, weight in zip(adapter_list, weights)} + try: + self.apply_to_adapter_layers(lambda i, layer: layer.average_adapter(adapter_name, input_adapters)) + self.apply_to_basemodel_childs(lambda i, child: child.average_adapter(adapter_name, input_adapters)) + # PHM Layer + if self.adapters_config.match(adapter_name, BnConfig, location_key="phm_layer"): + self._average_shared_parameters(adapter_name, input_adapters) + # Prefix Tuning + for module in self.modules(): + if isinstance(module, PrefixTuningPool): + module.average_prefix(adapter_name, input_adapters) + if isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin): + self._average_invertible_adapter(adapter_name, input_adapters) + except ValueError as ex: + self.delete_adapter(adapter_name) + raise ex + if set_active: + self.set_active_adapters(adapter_name) + + def eject_prefix_tuning(self, name: str): + """ + Converts the prefix tuning with the given name from the reparameterized form into the flat form. + + Args: + name (str): The name of the prefix tuning. + """ + for module in self.modules(): + if isinstance(module, PrefixTuningPool): + if name in module.prefix_tunings: + module.prefix_tunings[name].eject() + + def merge_adapter(self, name: str): + """ + Merges the weights of the given LoRA module with the Transformer weights as described in the paper. + + Args: + name (str): LoRA module to merge. + """ + for module in self.modules(): + if isinstance(module, LoRALayer): + if name in module.loras: + module.merge_adapter(name) + + def reset_adapter(self): + """ + Resets weights of a LoRA module merged using `model.merge_adapter(name)`. + """ + for module in self.modules(): + if isinstance(module, LoRALayer): + module.reset_adapter() + + # HACK Copied from transformers/generation/utils.py + def _prepare_encoder_decoder_kwargs_for_generation( + self, inputs_tensor: torch.Tensor, model_kwargs, model_input_name: Optional[str] = None + ) -> Dict[str, Any]: + # 1. get encoder + encoder = self.get_encoder() + + # 2. prepare encoder args and encoder kwargs from model kwargs + irrelevant_prefix = ["decoder_", "cross_attn", "use_cache"] + encoder_kwargs = { + argument: value + for argument, value in model_kwargs.items() + if not any(argument.startswith(p) for p in irrelevant_prefix) + } + + encoder_signature = set(inspect.signature(encoder.forward).parameters) + encoder_accepts_wildcard = "kwargs" in encoder_signature or "model_kwargs" in encoder_signature + if not encoder_accepts_wildcard: + encoder_kwargs = { + argument: value + for argument, value in encoder_kwargs.items() + if argument in encoder_signature or argument == "adapter_input_parallelized" + } + + # 3. make sure that encoder returns `ModelOutput` + model_input_name = model_input_name if model_input_name is not None else self.main_input_name + encoder_kwargs["return_dict"] = True + encoder_kwargs[model_input_name] = inputs_tensor + with ForwardContext(self, **encoder_kwargs): + encoder_kwargs.pop("adapter_input_parallelized", None) # This should not be passed to actual model + model_kwargs["encoder_outputs"]: ModelOutput = encoder(**encoder_kwargs) + + return model_kwargs + + # Override method from transformers/generation/utils.py to handle parallel adapters + def _prepare_model_inputs(self, *args, **kwargs): + input_ids, input_name, model_kwargs = super()._prepare_model_inputs(*args, **kwargs) + + # Pre-replicate inputs for parallel adapters to avoid issues within generation code + if ( + hasattr(self, "adapters_config") + and self.adapters_config.active_setup + and self.adapters_config.active_setup.parallel_channels > 1 + ): + input_ids = input_ids.repeat(self.adapters_config.active_setup.parallel_channels, 1) + model_kwargs["adapter_input_parallelized"] = True + + return input_ids, input_name, model_kwargs + + # Override to support saving adapters_config + def save_pretrained( + self, + save_directory: Union[str, os.PathLike], + **kwargs, + ): + # Attach adapters_config to model_config to ensure saving with old format. + self.config.adapters = self.adapters_config.to_dict() + super().save_pretrained(save_directory, **kwargs) + # Remove adapters config + del self.config.adapters + + +@inherit_doc +class ModelBaseAdaptersMixin(ModelAdaptersMixin): + add_base_adapters = True + + def post_embedding_forward(self, module, args, embedding_output): + if isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin): + embedding_output = self.invertible_adapters_forward(embedding_output) + + embedding_output = self.prompt_tuning.forward(embedding_output) + + return embedding_output + + @ForwardContext.wrap + def forward(self, *args, **kwargs): + return super().forward(*args, **kwargs) + + +@inherit_doc +class ModelUsingSubmodelsAdaptersMixin(ModelAdaptersMixin): + """Mixin for models that only consist of submodels like the encoder-decoder model.""" + + @abstractmethod + def init_submodels(self): + """ + Function to initialize the submodels of the model. + """ + pass + + def _init_adapters_submodules(self, model_config, adapters_config): + """ + Initializes adapters in all submodules. Since all submodules have been wrapped by the init_submodels method + this method doesn't need to do anything. + """ + pass + + +@inherit_doc +class ModelWithHeadsAdaptersMixin(ModelAdaptersMixin): + """ + Mixin adding support for loading/ saving adapters to transformer models with head(s). + """ + + def __init__(self, config, *args, **kwargs): + super().__init__(config, *args, **kwargs) + + def init_adapters(self, model_config, adapters_config, add_prefix_tuning_pool=True): + super().init_adapters(model_config, adapters_config, add_prefix_tuning_pool=add_prefix_tuning_pool) + self._convert_to_flex_head = False + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + """ + Iterates over all layers of the model. + """ + if self.base_model is self: + return super().iter_layers() + else: + return self.base_model.iter_layers() + + def add_adapter(self, adapter_name: str, config=None, overwrite_ok: bool = False, set_active: bool = False): + """ + Adds a new adapter module of the specified type to the model. + + Args: + adapter_name (str): The name of the adapter module to be added. + config (str or dict, optional): The adapter configuration, can be either: + + - the string identifier of a pre-defined configuration dictionary + - a configuration dictionary specifying the full config + - if not given, the default configuration for this adapter type will be used + overwrite_ok (bool, optional): + Overwrite an adapter with the same name if it exists. By default (False), an exception is thrown. + set_active (bool, optional): + Set the adapter to be the active one. By default (False), the adapter is added but not activated. + + If self.base_model is self, must inherit from a class that implements this method, to preclude infinite + recursion + """ + if self.base_model is self: + super().add_adapter(adapter_name, config, overwrite_ok=overwrite_ok, set_active=set_active) + else: + self.base_model.add_adapter(adapter_name, config, overwrite_ok=overwrite_ok, set_active=set_active) + + def delete_adapter(self, adapter_name: str): + """ + Deletes the adapter with the specified name from the model. + + Args: + adapter_name (str): The name of the adapter. + """ + if self.base_model is self: + super().delete_adapter(adapter_name) + else: + self.base_model.delete_adapter(adapter_name) + + def train_adapter(self, adapter_setup: Union[list, AdapterCompositionBlock], train_embeddings=False): + """ + Sets the model into mode for training the given adapters. If self.base_model is self, must inherit from a class + that implements this method, to preclude infinite recursion + """ + if self.base_model is self: + super().train_adapter(adapter_setup, train_embeddings) + else: + self.base_model.train_adapter(adapter_setup, train_embeddings) + self.freeze_embeddings() + + def train_adapter_fusion(self, adapter_setup: Union[list, AdapterCompositionBlock], unfreeze_adapters=False): + """ + Sets the model into mode for training of adapter fusion determined by a list of adapter names. If + self.base_model is self, must inherit from a class that implements this method, to preclude infinite recursion + """ + if self.base_model is self: + super().train_adapter_fusion(adapter_setup, unfreeze_adapters=unfreeze_adapters) + else: + self.base_model.train_adapter_fusion(adapter_setup, unfreeze_adapters=unfreeze_adapters) + self.freeze_embeddings() + + def save_head(self, save_directory: str, head_name: str = None): + loader = PredictionHeadLoader(self) + loader.save(save_directory, name=head_name) + + def load_head(self, save_directory, load_as=None, id2label=None, **kwargs): + loader = PredictionHeadLoader(self, convert_to_flex_head=self._convert_to_flex_head) + return loader.load(save_directory, load_as=load_as, id2label=id2label, **kwargs) + + def save_adapter( + self, + save_directory: str, + adapter_name: str, + with_head: bool = True, + meta_dict: dict = None, + custom_weights_loaders: Optional[List[WeightsLoader]] = None, + ): + if with_head: + if custom_weights_loaders is None: + custom_weights_loaders = [] + custom_weights_loaders.append(PredictionHeadLoader(self, error_on_missing=False)) + super().save_adapter( + save_directory, + adapter_name, + meta_dict=meta_dict, + custom_weights_loaders=custom_weights_loaders, + ) + + def load_adapter( + self, + adapter_name_or_path: str, + config: Union[dict, str] = None, + version: str = None, + model_name: str = None, + load_as: str = None, + source: str = None, + with_head: bool = True, + custom_weights_loaders: Optional[List[WeightsLoader]] = None, + leave_out: Optional[List[int]] = None, + id2label=None, + set_active: bool = False, + **kwargs + ) -> str: + if with_head: + if custom_weights_loaders is None: + custom_weights_loaders = [] + custom_weights_loaders.append( + PredictionHeadLoader( + self, + error_on_missing=False, + convert_to_flex_head=self._convert_to_flex_head, + ) + ) + # Support passing a num_labels for compatibility reasons. Convert to label map here. + num_labels = kwargs.pop("num_labels", None) + if num_labels is not None: + id2label = {i: "LABEL_" + str(i) for i in range(num_labels)} + return super().load_adapter( + adapter_name_or_path, + config=config, + version=version, + model_name=model_name, + load_as=load_as, + source=source, + custom_weights_loaders=custom_weights_loaders, + leave_out=leave_out, + id2label=id2label, + set_active=set_active, + **kwargs, + ) + + def save_all_adapters( + self, + save_directory: str, + with_head: bool = True, + meta_dict: dict = None, + custom_weights_loaders: Optional[List[WeightsLoader]] = None, + ): + os.makedirs(save_directory, exist_ok=True) + for name in self.adapters_config: + adapter_config = self.adapters_config.get(name) + h = get_adapter_config_hash(adapter_config) + save_path = join(save_directory, name) + if meta_dict: + meta_dict.update({"config_id": h}) + else: + meta_dict = {"config_id": h} + self.save_adapter( + save_path, + name, + meta_dict=meta_dict, + with_head=with_head, + custom_weights_loaders=custom_weights_loaders, + ) + + def save_adapter_fusion( + self, + save_directory: str, + adapter_names: Union[Fuse, list, str], + meta_dict: dict = None, + custom_weights_loaders: Optional[List[WeightsLoader]] = None, + with_head: Union[bool, str] = False, + ): + """ + Saves an AdapterFusion layer and its configuration file to a directory so that it can be shared or reloaded + using `load_adapter_fusion()`. + + Args: + save_directory (str): Path to a directory where the AdapterFusion should be saved. + adapter_names (Union[Fuse, list, str]): AdapterFusion to be saved. + with_head (Union[bool, str]): + If True, will save a head with the same name as the AdapterFusionLayer. If a string, this will be used + as the name of the head to be saved. + + Raises: + ValueError: If the given AdapterFusion name is invalid. + """ + super().save_adapter_fusion(save_directory, adapter_names, meta_dict, custom_weights_loaders) + + if with_head: + # Make sure to cover the different options for adapter_names + if isinstance(with_head, str): + head_name = with_head + elif isinstance(adapter_names, Fuse): + head_name = adapter_names.name + elif isinstance(adapter_names, list): + head_name = ",".join(adapter_names) + else: + head_name = adapter_names + if head_name not in self.heads: + raise ValueError("No head with name {} found".format(head_name)) + loader = PredictionHeadLoader(self) + loader.save(save_directory, head_name) + + def load_adapter_fusion( + self, + adapter_fusion_name_or_path: str, + load_as: str = None, + custom_weights_loaders: Optional[List[WeightsLoader]] = None, + set_active: bool = False, + with_head: bool = True, + **kwargs + ) -> str: + if with_head: + if custom_weights_loaders is None: + custom_weights_loaders = [] + custom_weights_loaders.append(PredictionHeadLoader(self, error_on_missing=False)) + super().load_adapter_fusion(adapter_fusion_name_or_path, load_as, custom_weights_loaders, set_active) + + def save_all_heads(self, save_directory): + os.makedirs(save_directory, exist_ok=True) + for head_name in self.heads: + save_path = join(save_directory, head_name) + self.save_head(save_path, head_name) + + def get_labels(self): + return list(self.config.id2label.values()) + + def get_labels_dict(self): + return self.config.id2label + + def get_adapter(self, name): + """ + If self.base_model is self, must inherit from a class that implements this method, to preclude infinite + recursion + """ + if self.base_model is self: + return super().get_adapter(name) + else: + return self.base_model.get_adapter(name) + + def freeze_embeddings(self, freeze=True): + # If model has prediction head with embeddings, ensure these are frozen + if self.get_output_embeddings() is not None: + output_embeddings = self.get_output_embeddings() + if isinstance(output_embeddings, list): + for output_embedding in output_embeddings: + for p in output_embedding.parameters(): + p.requires_grad = not freeze + else: + for p in self.get_output_embeddings().parameters(): + p.requires_grad = not freeze diff --git a/adapters/src/adapters/models/__init__.py b/adapters/src/adapters/models/__init__.py new file mode 100644 index 00000000..7314e2a2 --- /dev/null +++ b/adapters/src/adapters/models/__init__.py @@ -0,0 +1,87 @@ +from .albert.mixin_albert import AlbertModelAdaptersMixin +from .bart.mixin_bart import ( + BartDecoderAdaptersMixin, + BartDecoderWrapperAdaptersMixin, + BartEncoderAdaptersMixin, + BartModelAdaptersMixin, +) +from .beit.mixin_beit import BeitIntermediateAdaptersMixin, BeitModelAdaptersMixin, BeitOutputAdaptersMixin +from .bert.mixin_bert import BertLayerAdaptersMixin, BertModelAdaptersMixin +from .clip.mixin_clip import ( + CLIPEncoderAdaptersMixin, + CLIPModelAdaptersMixin, + CLIPTextModelAdaptersMixin, + CLIPTextTransformerAdaptersMixin, + CLIPVisionModelAdaptersMixin, +) +from .distilbert.mixin_distilbert import DistilBertModelAdaptersMixin, DistilBertTransformerAdaptersMixin +from .gpt2.mixin_gpt2 import GPT2ModelAdapterMixin +from .gptj.mixin_gptj import GPTJMLPAdaptersMixin, GPTJModelAdapterMixin +from .llama.mixin_llama import LlamaModelAdapterMixin +from .t5.mixin_t5 import ( + T5BlockAdaptersMixin, + T5ForCondiditionalGenerationWithHeadsMixin, + T5ForQuestionAnsweringWithHeadsMixin, + T5ModelAdaptersMixin, +) +from .vit.mixin_vit import ViTIntermediateAdaptersMixin, ViTModelAdaptersMixin +from .xmod.mixin_xmod import XmodModelAdaptersMixin + + +# IMPORTANT: Only add classes to this mapping that are not copied into the adapters package +MODEL_MIXIN_MAPPING = { + "AlbertModel": AlbertModelAdaptersMixin, + "BartEncoder": BartEncoderAdaptersMixin, + "BartDecoder": BartDecoderAdaptersMixin, + "BartModel": BartModelAdaptersMixin, + "BartDecoderWrapper": BartDecoderWrapperAdaptersMixin, + "BeitIntermediate": BeitIntermediateAdaptersMixin, + "BeitOutput": BeitOutputAdaptersMixin, + "BeitModel": BeitModelAdaptersMixin, + "BertLayer": BertLayerAdaptersMixin, + "BertModel": BertModelAdaptersMixin, + "Transformer": DistilBertTransformerAdaptersMixin, + "DistilBertModel": DistilBertModelAdaptersMixin, + "CLIPEncoder": CLIPEncoderAdaptersMixin, + "CLIPTextTransformer": CLIPTextTransformerAdaptersMixin, + "CLIPTextModel": CLIPTextModelAdaptersMixin, + "CLIPVisionModel": CLIPVisionModelAdaptersMixin, + "CLIPModel": CLIPModelAdaptersMixin, + "CLIPTextModelWithProjection": CLIPTextModelAdaptersMixin, + "CLIPVisionModelWithProjection": CLIPVisionModelAdaptersMixin, + "ElectraLayer": BertLayerAdaptersMixin, + "ElectraModel": BertModelAdaptersMixin, + "MBartEncoder": BartEncoderAdaptersMixin, + "MBartDecoder": BartDecoderAdaptersMixin, + "MBartDecoderWrapper": BartDecoderWrapperAdaptersMixin, + "MBartModel": BartModelAdaptersMixin, + "MT5Block": T5BlockAdaptersMixin, + "MT5Model": T5ModelAdaptersMixin, + "MT5ForConditionalGeneration": T5ForCondiditionalGenerationWithHeadsMixin, + "MT5ForQuestionAnswering": T5ForQuestionAnsweringWithHeadsMixin, + "MT5EncoderModel": T5ModelAdaptersMixin, + "GPT2Model": GPT2ModelAdapterMixin, + "GPTJMLP": GPTJMLPAdaptersMixin, + "GPTJModel": GPTJModelAdapterMixin, + "RobertaLayer": BertLayerAdaptersMixin, + "RobertaModel": BertModelAdaptersMixin, + "T5Block": T5BlockAdaptersMixin, + "T5Model": T5ModelAdaptersMixin, + "T5ForConditionalGeneration": T5ForCondiditionalGenerationWithHeadsMixin, + "T5ForQuestionAnswering": T5ForQuestionAnsweringWithHeadsMixin, + "T5EncoderModel": T5ModelAdaptersMixin, + "ViTIntermediate": ViTIntermediateAdaptersMixin, + "ViTModel": ViTModelAdaptersMixin, + "XLMRobertaLayer": BertLayerAdaptersMixin, + "XLMRobertaModel": BertModelAdaptersMixin, + "SubwordXLMRobertaModel": BertModelAdaptersMixin, + "XmodLayer": BertLayerAdaptersMixin, + "XmodModel": XmodModelAdaptersMixin, + "DebertaModel": BertModelAdaptersMixin, + "DebertaLayer": BertLayerAdaptersMixin, + "DebertaV2Model": BertModelAdaptersMixin, + "DebertaV2Layer": BertLayerAdaptersMixin, + "BertGenerationEncoder": BertModelAdaptersMixin, + "BertGenerationLayer": BertLayerAdaptersMixin, + "LlamaModel": LlamaModelAdapterMixin, +} diff --git a/adapters/src/adapters/models/albert/__init__.py b/adapters/src/adapters/models/albert/__init__.py new file mode 100644 index 00000000..262eb2fc --- /dev/null +++ b/adapters/src/adapters/models/albert/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["AlbertAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import AlbertAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/albert/adapter_model.py b/adapters/src/adapters/models/albert/adapter_model.py new file mode 100644 index 00000000..8f6c07d4 --- /dev/null +++ b/adapters/src/adapters/models/albert/adapter_model.py @@ -0,0 +1,106 @@ +from transformers.models.albert.modeling_albert import ( + ALBERT_INPUTS_DOCSTRING, + ALBERT_START_DOCSTRING, + AlbertModel, + AlbertPreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + """Albert Model transformer with the option to add multiple flexible heads on top.""", + ALBERT_START_DOCSTRING, +) +class AlbertAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, AlbertPreTrainedModel): + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "multiple_choice", + "question_answering", + "masked_lm", + ] + use_pooler = True + + def __init__(self, config): + super().__init__(config) + + self.albert = AlbertModel(config) + init(self.albert) + + self._init_head_modules() + + self.init_weights() + + @add_start_docstrings_to_model_forward(ALBERT_INPUTS_DOCSTRING.format("batch_size, sequence_length")) + def forward( + self, + input_ids=None, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None + attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None + token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None + position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None + inputs_embeds = ( + inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) + if inputs_embeds is not None + else None + ) + + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.albert( + input_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + + # BERT & RoBERTa & ALBERT return the pooled output as second item, we don't need that in these heads + if not return_dict: + head_inputs = (outputs[0],) + outputs[2:] + else: + head_inputs = outputs + pooled_output = outputs[1] + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + head_inputs, + head_name=head, + attention_mask=attention_mask, + return_dict=return_dict, + pooled_output=pooled_output, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs diff --git a/adapters/src/adapters/models/albert/mixin_albert.py b/adapters/src/adapters/models/albert/mixin_albert.py new file mode 100644 index 00000000..4d84abd5 --- /dev/null +++ b/adapters/src/adapters/models/albert/mixin_albert.py @@ -0,0 +1,68 @@ +from typing import Iterable, Tuple + +import torch.nn as nn + +from ...composition import adjust_tensors_for_parallel_ +from ...methods.bottleneck import BottleneckLayer +from ...methods.lora import LoRALinear +from ...methods.prefix_tuning import PrefixTuningLayer +from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin + + +class AlbertAttentionAdaptersMixin: + """Adds adapters to the AlbertAttention module of ALBERT.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.query = LoRALinear.wrap(self.query, "selfattn", model_config, adapters_config, attn_key="q") + self.key = LoRALinear.wrap(self.key, "selfattn", model_config, adapters_config, attn_key="k") + self.value = LoRALinear.wrap(self.value, "selfattn", model_config, adapters_config, attn_key="v") + + self.attention_adapters = BottleneckLayer("mh_adapter") + + self.prefix_tuning = PrefixTuningLayer( + self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config + ) + + +class AlbertEncoderLayerAdaptersMixin: + """Adds adapters to the AlbertLayer module.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.ffn = LoRALinear.wrap(self.ffn, "intermediate", model_config, adapters_config) + self.ffn_output = LoRALinear.wrap(self.ffn_output, "output", model_config, adapters_config) + + # Set location keys for prefix tuning + self.location_key = "output_adapter" + + self.output_adapters = BottleneckLayer("output_adapter") + + self.attention.location_key = "self" + + +class AlbertModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): + """Adds adapters to the AlbertModel module.""" + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + + # Set hook for parallel composition + for _, layer in self.iter_layers(): + self._set_layer_hook_for_parallel(layer) + + self.embeddings.register_forward_hook(self.post_embedding_forward) + + def _set_layer_hook_for_parallel(self, layer: nn.Module): + def hook(module, input): + adjust_tensors_for_parallel_(input[0], input[1]) + return input + + layer.register_forward_pre_hook(hook) + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + i = 0 + for albertLayerGroup in self.encoder.albert_layer_groups: + for albertLayer in albertLayerGroup.albert_layers: + yield i, albertLayer + i += 1 diff --git a/adapters/src/adapters/models/albert/modeling_albert.py b/adapters/src/adapters/models/albert/modeling_albert.py new file mode 100644 index 00000000..f620240c --- /dev/null +++ b/adapters/src/adapters/models/albert/modeling_albert.py @@ -0,0 +1,124 @@ +# coding=utf-8 +# Copyright 2018 Google AI, Google Brain and the HuggingFace Inc. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""PyTorch ALBERT model.""" + +import math +from typing import Optional, Tuple, Union + +import torch +from torch import nn + +from transformers.models.albert.modeling_albert import AlbertAttention, AlbertLayer +from transformers.pytorch_utils import apply_chunking_to_forward + +from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from ...utils import prefix_attention_mask +from .mixin_albert import AlbertAttentionAdaptersMixin, AlbertEncoderLayerAdaptersMixin + + +class AlbertAttentionWithAdapters(AlbertAttentionAdaptersMixin, AlbertAttention): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.FloatTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + output_attentions: bool = False, + ) -> Union[Tuple[torch.Tensor], Tuple[torch.Tensor, torch.Tensor]]: + attention_mask = prefix_attention_mask(attention_mask) # type: ignore + + mixed_query_layer = self.query(hidden_states) + mixed_key_layer = self.key(hidden_states) + mixed_value_layer = self.value(hidden_states) + + query_layer = self.transpose_for_scores(mixed_query_layer) + key_layer = self.transpose_for_scores(mixed_key_layer) + value_layer = self.transpose_for_scores(mixed_value_layer) + query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) + (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) + + key_layer, value_layer, attention_mask = self.prefix_tuning( + key_layer, value_layer, hidden_states, attention_mask + ) + (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) + attention_scores = attention_scores / math.sqrt(self.attention_head_size) + + if attention_mask is not None: + # Apply the attention mask is (precomputed for all layers in BertModel forward() function) + attention_scores = attention_scores + attention_mask + + if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": + seq_length = hidden_states.size()[1] + position_ids_l = torch.arange(seq_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) + position_ids_r = torch.arange(seq_length, dtype=torch.long, device=hidden_states.device).view(1, -1) + distance = position_ids_l - position_ids_r + positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) + positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility + + if self.position_embedding_type == "relative_key": + relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores + elif self.position_embedding_type == "relative_key_query": + relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key + + # Normalize the attention scores to probabilities. + attention_probs = nn.functional.softmax(attention_scores, dim=-1) + + # This is actually dropping out entire tokens to attend to, which might + # seem a bit unusual, but is taken from the original Transformer paper. + attention_probs = self.attention_dropout(attention_probs) + + # Mask heads if we want to + if head_mask is not None: + attention_probs = attention_probs * head_mask + + context_layer = torch.matmul(attention_probs, value_layer) + context_layer = context_layer.transpose(2, 1).flatten(2) + + projected_context_layer = self.dense(context_layer) + projected_context_layer_dropout = self.output_dropout(projected_context_layer) + + layernormed_context_layer = self.attention_adapters( + hidden_states, projected_context_layer_dropout, self.LayerNorm + ) + + return (layernormed_context_layer, attention_probs) if output_attentions else (layernormed_context_layer,) + + +class AlbertLayerWithAdapters(AlbertEncoderLayerAdaptersMixin, AlbertLayer): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.FloatTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + output_attentions: bool = False, + output_hidden_states: bool = False, + ) -> Tuple[torch.Tensor, torch.Tensor]: + attention_output = self.attention(hidden_states, attention_mask, head_mask, output_attentions) + + ffn_output = apply_chunking_to_forward( + self.ff_chunk, + self.chunk_size_feed_forward, + self.seq_len_dim, + attention_output[0], + ) + + hidden_states = self.output_adapters(ffn_output, attention_output[0], self.full_layer_layer_norm) + + return (hidden_states,) + attention_output[1:] # add attentions if we output them diff --git a/adapters/src/adapters/models/auto/__init__.py b/adapters/src/adapters/models/auto/__init__.py new file mode 100644 index 00000000..eacaf647 --- /dev/null +++ b/adapters/src/adapters/models/auto/__init__.py @@ -0,0 +1,42 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": [ + "ADAPTER_MODEL_MAPPING", + "AutoAdapterModel", + ], +} + + +if TYPE_CHECKING: + from .adapter_model import ADAPTER_MODEL_MAPPING, AutoAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/auto/adapter_model.py b/adapters/src/adapters/models/auto/adapter_model.py new file mode 100644 index 00000000..2d59c6da --- /dev/null +++ b/adapters/src/adapters/models/auto/adapter_model.py @@ -0,0 +1,43 @@ +from collections import OrderedDict + +from transformers.models.auto.auto_factory import _BaseAutoModelClass, auto_class_update +from transformers.models.auto.configuration_auto import CONFIG_MAPPING_NAMES + +from .auto_factory import _LazyAdapterModelAutoMapping + + +# Make sure that children are placed before parents! +ADAPTER_MODEL_MAPPING_NAMES = OrderedDict( + [ + ("albert", "AlbertAdapterModel"), + ("bart", "BartAdapterModel"), + ("beit", "BeitAdapterModel"), + ("bert", "BertAdapterModel"), + ("bert-generation", "BertGenerationAdapterModel"), + ("clip", "CLIPAdapterModel"), + ("deberta", "DebertaAdapterModel"), + ("deberta-v2", "DebertaV2AdapterModel"), + ("distilbert", "DistilBertAdapterModel"), + ("electra", "ElectraAdapterModel"), + ("gpt2", "GPT2AdapterModel"), + ("gptj", "GPTJAdapterModel"), + ("llama", "LlamaAdapterModel"), + ("mbart", "MBartAdapterModel"), + ("mt5", "MT5AdapterModel"), + ("roberta", "RobertaAdapterModel"), + ("t5", "T5AdapterModel"), + ("vit", "ViTAdapterModel"), + ("xlm-roberta", "XLMRobertaAdapterModel"), + ("xmod", "XmodAdapterModel"), + ] +) + + +ADAPTER_MODEL_MAPPING = _LazyAdapterModelAutoMapping(CONFIG_MAPPING_NAMES, ADAPTER_MODEL_MAPPING_NAMES) + + +class AutoAdapterModel(_BaseAutoModelClass): + _model_mapping = ADAPTER_MODEL_MAPPING + + +AutoAdapterModel = auto_class_update(AutoAdapterModel, head_doc="adapters and flexible heads") diff --git a/adapters/src/adapters/models/auto/auto_factory.py b/adapters/src/adapters/models/auto/auto_factory.py new file mode 100644 index 00000000..fa0fb14a --- /dev/null +++ b/adapters/src/adapters/models/auto/auto_factory.py @@ -0,0 +1,11 @@ +import importlib + +from transformers.models.auto.auto_factory import _LazyAutoMapping, getattribute_from_module, model_type_to_module_name + + +class _LazyAdapterModelAutoMapping(_LazyAutoMapping): + def _load_attr_from_module(self, model_type, attr): + module_name = model_type_to_module_name(model_type) + if module_name not in self._modules: + self._modules[module_name] = importlib.import_module(f".{module_name}", "adapters.models") + return getattribute_from_module(self._modules[module_name], attr) diff --git a/adapters/src/adapters/models/bart/__init__.py b/adapters/src/adapters/models/bart/__init__.py new file mode 100644 index 00000000..4ed67ab1 --- /dev/null +++ b/adapters/src/adapters/models/bart/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["BartAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import BartAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/bart/adapter_model.py b/adapters/src/adapters/models/bart/adapter_model.py new file mode 100644 index 00000000..dec5a838 --- /dev/null +++ b/adapters/src/adapters/models/bart/adapter_model.py @@ -0,0 +1,162 @@ +import torch + +from transformers.models.bart.modeling_bart import ( + BART_INPUTS_DOCSTRING, + BART_START_DOCSTRING, + BartConfig, + BartModel, + BartPretrainedModel, + shift_tokens_right, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + "BART Model with the option to add multiple flexible prediction heads on top.", BART_START_DOCSTRING +) +class BartAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, BartPretrainedModel): + _tied_weights_keys = [ + "encoder.embed_tokens.weight", + "decoder.embed_tokens.weight", + ] + + head_types = [ + "classification", + "multilabel_classification", + "question_answering", + "seq2seq_lm", + ] + + def __init__(self, config: BartConfig, **kwargs): + super().__init__(config, **kwargs) + self.model = BartModel(config) + init(self.model) + + self._init_head_modules() + + self.post_init() + + def get_encoder(self): + return self.model.get_encoder() + + def get_decoder(self): + return self.model.get_decoder() + + @add_start_docstrings_to_model_forward(BART_INPUTS_DOCSTRING) + def forward( + self, + input_ids=None, + attention_mask=None, + decoder_input_ids=None, + decoder_attention_mask=None, + head_mask=None, + decoder_head_mask=None, + cross_attn_head_mask=None, + encoder_outputs=None, + inputs_embeds=None, + decoder_inputs_embeds=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + past_key_values=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + r""" + labels (:obj:`torch.LongTensor` of shape :obj:`(batch_size,)`, `optional`): + Labels for computing the sequence classification/regression loss. Indices should be in :obj:`[0, ..., + config.num_labels - 1]`. If :obj:`config.num_labels > 1` a classification loss is computed (Cross-Entropy). + """ + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + if "labels" in kwargs or "start_positions" in kwargs and "end_positions" in kwargs: + use_cache = False + + outputs, context = self.model( + input_ids, + attention_mask=attention_mask, + decoder_input_ids=decoder_input_ids, + decoder_attention_mask=decoder_attention_mask, + head_mask=head_mask, + decoder_head_mask=decoder_head_mask, + cross_attn_head_mask=cross_attn_head_mask, + encoder_outputs=encoder_outputs, + inputs_embeds=inputs_embeds, + decoder_inputs_embeds=decoder_inputs_embeds, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + past_key_values=past_key_values, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + + head_outputs = self.forward_head( + outputs, + head_name=head, + attention_mask=attention_mask, + return_dict=return_dict, + get_cls_from_eos_tokens=True, + # `get_cls_from_eos_tokens` requires passing eos mask + eos_mask=input_ids.eq(self.config.eos_token_id) if input_ids is not None else None, + **kwargs, + ) + + return head_outputs + + # Copied from BartForConditionalGeneration + def prepare_inputs_for_generation( + self, + decoder_input_ids, + past=None, + attention_mask=None, + head_mask=None, + decoder_head_mask=None, + cross_attn_head_mask=None, + use_cache=None, + encoder_outputs=None, + **kwargs + ): + # cut decoder_input_ids if past is used + if past is not None: + decoder_input_ids = decoder_input_ids[:, -1:] + + return { + "input_ids": None, # encoder_outputs is defined. input_ids not needed + "encoder_outputs": encoder_outputs, + "past_key_values": past, + "decoder_input_ids": decoder_input_ids, + "attention_mask": attention_mask, + "head_mask": head_mask, + "decoder_head_mask": decoder_head_mask, + "cross_attn_head_mask": cross_attn_head_mask, + "use_cache": use_cache, # change this to avoid caching (presumably for debugging) + "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), + } + + # Copied from BartForConditionalGeneration + def prepare_decoder_input_ids_from_labels(self, labels: torch.Tensor): + return shift_tokens_right(labels, self.config.pad_token_id, self.config.decoder_start_token_id) + + # Copied from BartForConditionalGeneration + @staticmethod + def _reorder_cache(past, beam_idx): + reordered_past = () + for layer_past in past: + # cached cross_attention states don't have to be reordered -> they are always the same + reordered_past += ( + tuple(past_state.index_select(0, beam_idx) for past_state in layer_past[:2]) + layer_past[2:], + ) + return reordered_past diff --git a/adapters/src/adapters/models/bart/mixin_bart.py b/adapters/src/adapters/models/bart/mixin_bart.py new file mode 100644 index 00000000..d269d72b --- /dev/null +++ b/adapters/src/adapters/models/bart/mixin_bart.py @@ -0,0 +1,109 @@ +from typing import Iterable, Optional, Tuple + +import torch +import torch.nn as nn + +from ...composition import adjust_tensors_for_parallel +from ...methods.bottleneck import BottleneckLayer +from ...methods.lora import LoRALinear +from ...methods.prefix_tuning import PrefixTuningLayer +from ...model_mixin import ( + EmbeddingAdaptersMixin, + EmbeddingAdaptersWrapperMixin, + InvertibleAdaptersMixin, + InvertibleAdaptersWrapperMixin, + ModelBaseAdaptersMixin, +) + + +class BartAttentionAdaptersMixin: + """Adds adapters to the BartAttention module.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.k_proj = LoRALinear.wrap(self.k_proj, "selfattn", model_config, adapters_config, attn_key="k") + self.v_proj = LoRALinear.wrap(self.v_proj, "selfattn", model_config, adapters_config, attn_key="v") + self.q_proj = LoRALinear.wrap(self.q_proj, "selfattn", model_config, adapters_config, attn_key="q") + + self.prefix_tuning = PrefixTuningLayer( + self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config + ) + + +class BartEncoderLayerAdaptersMixin: + """Adds adapters to the BartEncoderLayer module of BART.""" + + def init_adapters(self, model_config, adapters_config): + self.adapters_config = adapters_config + # Wrap layers for LoRA + self.fc1 = LoRALinear.wrap(self.fc1, "intermediate", model_config, adapters_config) + self.fc2 = LoRALinear.wrap(self.fc2, "output", model_config, adapters_config) + + # Set attention layer location key for prefix tuning + self.self_attn.location_key = "encoder" + self.attention_adapters = BottleneckLayer("mh_adapter") + self.output_adapters = BottleneckLayer("output_adapter") + + +class BartDecoderLayerAdaptersMixin(BartEncoderLayerAdaptersMixin): + """Adds adapters to the BartDecoderLayer module of BART.""" + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + # Set attention layer location key for prefix tuning + self.self_attn.location_key = "self" + self.encoder_attn.location_key = "cross" + self.cross_attention_adapters = BottleneckLayer("cross_adapter") + + +class BartEncoderAdaptersMixin(InvertibleAdaptersMixin): + """Adds adapters to the BartEncoder module of BART.""" + + pass + + +class BartDecoderAdaptersMixin: + """Adds adapters to the BartDecoder module of BART.""" + + def forward( + self, input_ids: torch.LongTensor = None, encoder_hidden_states: Optional[torch.FloatTensor] = None, **kwargs + ): + (input_ids,) = adjust_tensors_for_parallel(encoder_hidden_states, input_ids) + return super().forward(input_ids=input_ids, encoder_hidden_states=encoder_hidden_states, **kwargs) + + +class BartModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersWrapperMixin, ModelBaseAdaptersMixin): + """Adds adapters to the BartModel class.""" + + invertible_adapters_base_name = "encoder" + support_prompt_tuning = False + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + self.encoder.layernorm_embedding.register_forward_hook(self.post_embedding_forward) + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + if hasattr(self, "encoder"): + for i, layer in enumerate(self.encoder.layers): + yield i, layer + for i, layer in enumerate(self.decoder.layers, start=len(self.encoder.layers)): + yield i, layer + else: + for i, layer in enumerate(self.decoder.layers): + yield i, layer + + def post_embedding_forward(self, module, args, embedding_output): + embedding_output = self.invertible_adapters_forward(embedding_output) + # Prompt tuning not yet supported + return embedding_output + + +class BartDecoderWrapperAdaptersMixin(EmbeddingAdaptersWrapperMixin, ModelBaseAdaptersMixin): + """Adds adapters to the BartDecoderWrapper class.""" + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.decoder.layers): + yield i, layer + + def get_input_embeddings(self): + return self.decoder.get_input_embeddings() diff --git a/adapters/src/adapters/models/bart/modeling_bart.py b/adapters/src/adapters/models/bart/modeling_bart.py new file mode 100644 index 00000000..b347fddf --- /dev/null +++ b/adapters/src/adapters/models/bart/modeling_bart.py @@ -0,0 +1,533 @@ +# coding=utf-8 +# Copyright 2021 The Fairseq Authors and The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch BART model.""" +from typing import Optional, Tuple + +import torch +import torch.utils.checkpoint +from torch import nn + +from transformers.models.bart.modeling_bart import BartAttention, BartDecoderLayer, BartEncoderLayer +from transformers.utils import logging + +from ...composition import adjust_tensors_for_parallel, adjust_tensors_for_parallel_, match_attn_matrices_for_parallel +from .mixin_bart import BartAttentionAdaptersMixin, BartDecoderLayerAdaptersMixin, BartEncoderLayerAdaptersMixin + + +logger = logging.get_logger(__name__) + + +class BartAttentionWithAdapters(BartAttentionAdaptersMixin, BartAttention): + """Multi-headed attention from 'Attention Is All You Need' paper""" + + def forward( + self, + hidden_states: torch.Tensor, + key_value_states: Optional[torch.Tensor] = None, + past_key_value: Optional[Tuple[torch.Tensor]] = None, + attention_mask: Optional[torch.Tensor] = None, + layer_head_mask: Optional[torch.Tensor] = None, + output_attentions: bool = False, + ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: + """Input shape: Batch x Time x Channel""" + + # if key_value_states are provided this layer is used as a cross-attention layer + # for the decoder + is_cross_attention = key_value_states is not None + + bsz, tgt_len, _ = hidden_states.size() + + # get query proj + query_states = self.q_proj(hidden_states) * self.scaling + # get key, value proj + # `past_key_value[0].shape[2] == key_value_states.shape[1]` + # is checking that the `sequence_length` of the `past_key_value` is the same as + # the provided `key_value_states` to support prefix tuning + if ( + is_cross_attention + and past_key_value is not None + and past_key_value[0].shape[2] == key_value_states.shape[1] + ): + # reuse k,v, cross_attentions + key_states = past_key_value[0] + value_states = past_key_value[1] + elif is_cross_attention: + # cross_attentions + key_states = self._shape(self.k_proj(key_value_states), -1, bsz) + value_states = self._shape(self.v_proj(key_value_states), -1, bsz) + elif past_key_value is not None: + # reuse k, v, self_attention + key_states = self._shape(self.k_proj(hidden_states), -1, bsz) + value_states = self._shape(self.v_proj(hidden_states), -1, bsz) + key_states = torch.cat([past_key_value[0], key_states], dim=2) + value_states = torch.cat([past_key_value[1], value_states], dim=2) + else: + # self_attention + key_states = self._shape(self.k_proj(hidden_states), -1, bsz) + value_states = self._shape(self.v_proj(hidden_states), -1, bsz) + + query_states, key_states, value_states = match_attn_matrices_for_parallel( + query_states, key_states, value_states + ) + (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) + + if self.is_decoder: + # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. + # Further calls to cross_attention layer can then reuse all cross-attention + # key/value_states (first "if" case) + # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of + # all previous decoder key/value_states. Further calls to uni-directional self-attention + # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) + # if encoder bi-directional self-attention `past_key_value` is always `None` + past_key_value = (key_states, value_states) + + key_states, value_states, attention_mask = self.prefix_tuning( + key_states, value_states, hidden_states, attention_mask + ) + (query_states,) = adjust_tensors_for_parallel(key_states, query_states) + bsz = query_states.size(0) + + proj_shape = (bsz * self.num_heads, -1, self.head_dim) + query_states = self._shape(query_states, tgt_len, bsz).view(*proj_shape) + key_states = key_states.reshape(*proj_shape) + value_states = value_states.reshape(*proj_shape) + + src_len = key_states.size(1) + attn_weights = torch.bmm(query_states, key_states.transpose(1, 2)) + + if attn_weights.size() != (bsz * self.num_heads, tgt_len, src_len): + raise ValueError( + f"Attention weights should be of size {(bsz * self.num_heads, tgt_len, src_len)}, but is" + f" {attn_weights.size()}" + ) + + if attention_mask is not None: + if attention_mask.size() != (bsz, 1, tgt_len, src_len): + raise ValueError( + f"Attention mask should be of size {(bsz, 1, tgt_len, src_len)}, but is {attention_mask.size()}" + ) + attn_weights = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + attention_mask + attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) + + attn_weights = nn.functional.softmax(attn_weights, dim=-1) + + if layer_head_mask is not None: + if layer_head_mask.size() != (self.num_heads,): + raise ValueError( + f"Head mask for a single layer should be of size {(self.num_heads,)}, but is" + f" {layer_head_mask.size()}" + ) + attn_weights = layer_head_mask.view(1, -1, 1, 1) * attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) + + if output_attentions: + # this operation is a bit awkward, but it's required to + # make sure that attn_weights keeps its gradient. + # In order to do so, attn_weights have to be reshaped + # twice and have to be reused in the following + attn_weights_reshaped = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + attn_weights = attn_weights_reshaped.view(bsz * self.num_heads, tgt_len, src_len) + else: + attn_weights_reshaped = None + + attn_probs = nn.functional.dropout(attn_weights, p=self.dropout, training=self.training) + + attn_output = torch.bmm(attn_probs, value_states) + + if attn_output.size() != (bsz * self.num_heads, tgt_len, self.head_dim): + raise ValueError( + f"`attn_output` should be of size {(bsz * self.num_heads, tgt_len, self.head_dim)}, but is" + f" {attn_output.size()}" + ) + + attn_output = attn_output.view(bsz, self.num_heads, tgt_len, self.head_dim) + attn_output = attn_output.transpose(1, 2) + + # Use the `embed_dim` from the config (stored in the class) rather than `hidden_state` because `attn_output` can be + # partitioned across GPUs when using tensor-parallelism. + attn_output = attn_output.reshape(bsz, tgt_len, self.embed_dim) + + attn_output = self.out_proj(attn_output) + + return attn_output, attn_weights_reshaped, past_key_value + + +class BartFlashAttention2WithAdapters(BartAttentionAdaptersMixin, BartAttention): + def forward( + self, + hidden_states: torch.Tensor, + key_value_states: Optional[torch.Tensor] = None, + past_key_value: Optional[Tuple[torch.Tensor]] = None, + attention_mask: Optional[torch.Tensor] = None, + layer_head_mask: Optional[torch.Tensor] = None, + output_attentions: bool = False, + ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: + # BartFlashAttention2 attention does not support output_attentions + if output_attentions: + raise ValueError("BartFlashAttention2 attention does not support output_attentions") + + # if key_value_states are provided this layer is used as a cross-attention layer + # for the decoder + is_cross_attention = key_value_states is not None + + bsz, q_len, _ = hidden_states.size() + + # get query proj + query_states = self._reshape(self.q_proj(hidden_states), -1, bsz) + # get key, value proj + # `past_key_value[0].shape[2] == key_value_states.shape[1]` + # is checking that the `sequence_length` of the `past_key_value` is the same as + # the provided `key_value_states` to support prefix tuning + if ( + is_cross_attention + and past_key_value is not None + and past_key_value[0].shape[2] == key_value_states.shape[1] + ): + # reuse k,v, cross_attentions + key_states = past_key_value[0].transpose(1, 2) + value_states = past_key_value[1].transpose(1, 2) + elif is_cross_attention: + # cross_attentions + key_states = self._reshape(self.k_proj(key_value_states), -1, bsz) + value_states = self._reshape(self.v_proj(key_value_states), -1, bsz) + elif past_key_value is not None: + # reuse k, v, self_attention + key_states = self._reshape(self.k_proj(hidden_states), -1, bsz) + value_states = self._reshape(self.v_proj(hidden_states), -1, bsz) + key_states = torch.cat([past_key_value[0].transpose(1, 2), key_states], dim=1) + value_states = torch.cat([past_key_value[1].transpose(1, 2), value_states], dim=1) + else: + # self_attention + key_states = self._reshape(self.k_proj(hidden_states), -1, bsz) + value_states = self._reshape(self.v_proj(hidden_states), -1, bsz) + + query_states, key_states, value_states = match_attn_matrices_for_parallel( + query_states, key_states, value_states + ) + (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) + + if self.is_decoder: + # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. + # Further calls to cross_attention layer can then reuse all cross-attention + # key/value_states (first "if" case) + # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of + # all previous decoder key/value_states. Further calls to uni-directional self-attention + # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) + # if encoder bi-directional self-attention `past_key_value` is always `None` + past_key_value = (key_states.transpose(1, 2), value_states.transpose(1, 2)) + + key_states, value_states, attention_mask = self.prefix_tuning( + key_states, value_states, hidden_states, attention_mask + ) + (query_states,) = adjust_tensors_for_parallel(key_states, query_states) + bsz = query_states.size(0) + + kv_seq_len = key_states.shape[-2] + if past_key_value is not None: + kv_seq_len += past_key_value[0].shape[-2] + + # In PEFT, usually we cast the layer norms in float32 for training stability reasons + # therefore the input hidden states gets silently casted in float32. Hence, we need + # cast them back in the correct dtype just to be sure everything works as expected. + # This might slowdown training & inference so it is recommended to not cast the LayerNorms + # in fp32. (LlamaRMSNorm handles it correctly) + + input_dtype = query_states.dtype + if input_dtype == torch.float32: + # Handle the case where the model is quantized + if hasattr(self.config, "_pre_quantization_dtype"): + target_dtype = self.config._pre_quantization_dtype + else: + target_dtype = self.q_proj.weight.dtype + + logger.warning_once( + "The input hidden states seems to be silently casted in float32, this might be related to the fact" + " you have upcasted embedding or layer norm layers in float32. We will cast back the input in" + f" {target_dtype}." + ) + + query_states = query_states.to(target_dtype) + key_states = key_states.to(target_dtype) + value_states = value_states.to(target_dtype) + + attn_output = self._flash_attention_forward( + query_states, key_states, value_states, attention_mask, q_len, dropout=self.dropout + ) + + attn_output = attn_output.reshape(bsz, q_len, -1) + attn_output = self.out_proj(attn_output) + + if not output_attentions: + attn_weights = None + + return attn_output, attn_weights, past_key_value + + +class BartSdpaAttentionWithAdapters(BartAttentionAdaptersMixin, BartAttention): + def forward( + self, + hidden_states: torch.Tensor, + key_value_states: Optional[torch.Tensor] = None, + past_key_value: Optional[Tuple[torch.Tensor]] = None, + attention_mask: Optional[torch.Tensor] = None, + layer_head_mask: Optional[torch.Tensor] = None, + output_attentions: bool = False, + ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: + """Input shape: Batch x Time x Channel""" + if output_attentions or layer_head_mask is not None: + # TODO: Improve this warning with e.g. `model.config._attn_implementation = "manual"` once this is implemented. + logger.warning_once( + "BartModel is using BartSdpaAttention, but `torch.nn.functional.scaled_dot_product_attention` does not" + " support `output_attentions=True` or `layer_head_mask` not None. Falling back to the manual attention" + " implementation, but specifying the manual implementation will be required from Transformers version" + ' v5.0.0 onwards. This warning can be removed using the argument `attn_implementation="eager"` when' + " loading the model." + ) + return super().forward( + hidden_states, + key_value_states=key_value_states, + past_key_value=past_key_value, + attention_mask=attention_mask, + layer_head_mask=layer_head_mask, + output_attentions=output_attentions, + ) + + # if key_value_states are provided this layer is used as a cross-attention layer + # for the decoder + is_cross_attention = key_value_states is not None + + bsz, tgt_len, _ = hidden_states.size() + + # get query proj + query_states = self.q_proj(hidden_states) + # get key, value proj + # `past_key_value[0].shape[2] == key_value_states.shape[1]` + # is checking that the `sequence_length` of the `past_key_value` is the same as + # the provided `key_value_states` to support prefix tuning + if ( + is_cross_attention + and past_key_value is not None + and past_key_value[0].shape[2] == key_value_states.shape[1] + ): + # reuse k,v, cross_attentions + key_states = past_key_value[0] + value_states = past_key_value[1] + elif is_cross_attention: + # cross_attentions + key_states = self._shape(self.k_proj(key_value_states), -1, bsz) + value_states = self._shape(self.v_proj(key_value_states), -1, bsz) + elif past_key_value is not None: + # reuse k, v, self_attention + key_states = self._shape(self.k_proj(hidden_states), -1, bsz) + value_states = self._shape(self.v_proj(hidden_states), -1, bsz) + key_states = torch.cat([past_key_value[0], key_states], dim=2) + value_states = torch.cat([past_key_value[1], value_states], dim=2) + else: + # self_attention + key_states = self._shape(self.k_proj(hidden_states), -1, bsz) + value_states = self._shape(self.v_proj(hidden_states), -1, bsz) + + query_states, key_states, value_states = match_attn_matrices_for_parallel( + query_states, key_states, value_states + ) + (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) + + if self.is_decoder: + # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. + # Further calls to cross_attention layer can then reuse all cross-attention + # key/value_states (first "if" case) + # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of + # all previous decoder key/value_states. Further calls to uni-directional self-attention + # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) + # if encoder bi-directional self-attention `past_key_value` is always `None` + past_key_value = (key_states, value_states) + + key_states, value_states, attention_mask = self.prefix_tuning( + key_states, value_states, hidden_states, attention_mask + ) + (query_states,) = adjust_tensors_for_parallel(key_states, query_states) + bsz = query_states.size(0) + + query_states = self._shape(query_states, tgt_len, bsz) + + # NOTE: SDPA with memory-efficient backend is currently (torch==2.1.2) bugged when using non-contiguous inputs and a custom attn_mask, + # but we are fine here as `_shape` do call `.contiguous()`. Reference: https://github.com/pytorch/pytorch/issues/112577 + attn_output = torch.nn.functional.scaled_dot_product_attention( + query_states, + key_states, + value_states, + attn_mask=attention_mask, + dropout_p=self.dropout if self.training else 0.0, + # The tgt_len > 1 is necessary to match with AttentionMaskConverter.to_causal_4d that does not create a causal mask in case tgt_len == 1. + is_causal=self.is_causal and attention_mask is None and tgt_len > 1, + ) + + if attn_output.size() != (bsz, self.num_heads, tgt_len, self.head_dim): + raise ValueError( + f"`attn_output` should be of size {(bsz, self.num_heads, tgt_len, self.head_dim)}, but is" + f" {attn_output.size()}" + ) + + attn_output = attn_output.transpose(1, 2) + + # Use the `embed_dim` from the config (stored in the class) rather than `hidden_state` because `attn_output` can be + # partitioned across GPUs when using tensor-parallelism. + attn_output = attn_output.reshape(bsz, tgt_len, self.embed_dim) + + attn_output = self.out_proj(attn_output) + + return attn_output, None, past_key_value + + +class BartEncoderLayerWithAdapters(BartEncoderLayerAdaptersMixin, BartEncoderLayer): + def forward( + self, + hidden_states: torch.FloatTensor, + attention_mask: torch.FloatTensor, + layer_head_mask: torch.FloatTensor, + output_attentions: Optional[bool] = False, + ) -> Tuple[torch.FloatTensor, Optional[torch.FloatTensor]]: + """ + Args: + hidden_states (`torch.FloatTensor`): input to the layer of shape `(seq_len, batch, embed_dim)` + attention_mask (`torch.FloatTensor`): attention mask of size + `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. + layer_head_mask (`torch.FloatTensor`): mask for attention heads in a given layer of size + `(encoder_attention_heads,)`. + output_attentions (`bool`, *optional*): + Whether or not to return the attentions tensors of all attention layers. See `attentions` under + returned tensors for more detail. + """ + adjust_tensors_for_parallel_(hidden_states, attention_mask) + + residual = hidden_states + hidden_states, attn_weights, _ = self.self_attn( + hidden_states=hidden_states, + attention_mask=attention_mask, + layer_head_mask=layer_head_mask, + output_attentions=output_attentions, + ) + hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) + hidden_states = self.attention_adapters(hidden_states, residual, self.self_attn_layer_norm) + + residual = hidden_states + hidden_states = self.activation_fn(self.fc1(hidden_states)) + hidden_states = nn.functional.dropout(hidden_states, p=self.activation_dropout, training=self.training) + hidden_states = self.fc2(hidden_states) + hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) + hidden_states = self.output_adapters(hidden_states, residual, self.final_layer_norm) + + if hidden_states.dtype == torch.float16 and ( + torch.isinf(hidden_states).any() or torch.isnan(hidden_states).any() + ): + clamp_value = torch.finfo(hidden_states.dtype).max - 1000 + hidden_states = torch.clamp(hidden_states, min=-clamp_value, max=clamp_value) + + outputs = (hidden_states,) + + if output_attentions: + outputs += (attn_weights,) + + return outputs + + +class BartDecoderLayerWithAdapters(BartDecoderLayerAdaptersMixin, BartDecoderLayer): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + encoder_hidden_states: Optional[torch.Tensor] = None, + encoder_attention_mask: Optional[torch.Tensor] = None, + layer_head_mask: Optional[torch.Tensor] = None, + cross_attn_layer_head_mask: Optional[torch.Tensor] = None, + past_key_value: Optional[Tuple[torch.Tensor]] = None, + output_attentions: Optional[bool] = False, + use_cache: Optional[bool] = True, + ) -> Tuple[torch.FloatTensor, Optional[Tuple[torch.FloatTensor, torch.FloatTensor]]]: + """ + Args: + hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)` + attention_mask (`torch.FloatTensor`): attention mask of size + `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. + encoder_hidden_states (`torch.FloatTensor`): + cross attention input to the layer of shape `(batch, seq_len, embed_dim)` + encoder_attention_mask (`torch.FloatTensor`): encoder attention mask of size + `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. + layer_head_mask (`torch.FloatTensor`): mask for attention heads in a given layer of size + `(encoder_attention_heads,)`. + cross_attn_layer_head_mask (`torch.FloatTensor`): mask for cross-attention heads in a given layer of + size `(decoder_attention_heads,)`. + past_key_value (`Tuple(torch.FloatTensor)`): cached past key and value projection states + output_attentions (`bool`, *optional*): + Whether or not to return the attentions tensors of all attention layers. See `attentions` under + returned tensors for more detail. + """ + adjust_tensors_for_parallel_(hidden_states, attention_mask, encoder_attention_mask) + + residual = hidden_states + + # Self Attention + # decoder uni-directional self-attention cached key/values tuple is at positions 1,2 + self_attn_past_key_value = past_key_value[:2] if past_key_value is not None else None + # add present self-attn cache to positions 1,2 of present_key_value tuple + hidden_states, self_attn_weights, present_key_value = self.self_attn( + hidden_states=hidden_states, + past_key_value=self_attn_past_key_value, + attention_mask=attention_mask, + layer_head_mask=layer_head_mask, + output_attentions=output_attentions, + ) + hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) + hidden_states = self.attention_adapters(hidden_states, residual, self.self_attn_layer_norm) + + # Cross-Attention Block + cross_attn_present_key_value = None + cross_attn_weights = None + if encoder_hidden_states is not None: + residual = hidden_states + + # cross_attn cached key/values tuple is at positions 3,4 of present_key_value tuple + cross_attn_past_key_value = past_key_value[-2:] if past_key_value is not None else None + hidden_states, cross_attn_weights, cross_attn_present_key_value = self.encoder_attn( + hidden_states=hidden_states, + key_value_states=encoder_hidden_states, + attention_mask=encoder_attention_mask, + layer_head_mask=cross_attn_layer_head_mask, + past_key_value=cross_attn_past_key_value, + output_attentions=output_attentions, + ) + hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) + hidden_states = self.cross_attention_adapters(hidden_states, residual, self.encoder_attn_layer_norm) + + # add cross-attn to positions 3,4 of present_key_value tuple + present_key_value = present_key_value + cross_attn_present_key_value + + # Fully Connected + residual = hidden_states + hidden_states = self.activation_fn(self.fc1(hidden_states)) + hidden_states = nn.functional.dropout(hidden_states, p=self.activation_dropout, training=self.training) + hidden_states = self.fc2(hidden_states) + hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) + hidden_states = self.output_adapters(hidden_states, residual, self.final_layer_norm) + + outputs = (hidden_states,) + + if output_attentions: + outputs += (self_attn_weights, cross_attn_weights) + + if use_cache: + outputs += (present_key_value,) + + return outputs diff --git a/adapters/src/adapters/models/beit/__init__.py b/adapters/src/adapters/models/beit/__init__.py new file mode 100644 index 00000000..f04f7388 --- /dev/null +++ b/adapters/src/adapters/models/beit/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["BeitAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import BeitAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/beit/adapter_model.py b/adapters/src/adapters/models/beit/adapter_model.py new file mode 100644 index 00000000..5667fa09 --- /dev/null +++ b/adapters/src/adapters/models/beit/adapter_model.py @@ -0,0 +1,89 @@ +from typing import Optional + +import torch + +from transformers.models.beit.modeling_beit import ( + BEIT_INPUTS_DOCSTRING, + BEIT_START_DOCSTRING, + BeitModel, + BeitPreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...wrappers import init + + +@add_start_docstrings( + """Beit Model transformer with the option to add multiple flexible heads on top.""", + BEIT_START_DOCSTRING, +) +class BeitAdapterModel(ModelWithFlexibleHeadsAdaptersMixin, BeitPreTrainedModel): + head_types = [ + "image_classification", + ] + use_pooler = True + + def __init__(self, config): + super().__init__(config) + + self.beit = BeitModel(config) + init(self.beit) + + self._init_head_modules() + + # Initialize weights and apply final processing + self.post_init() + + @add_start_docstrings_to_model_forward(BEIT_INPUTS_DOCSTRING) + def forward( + self, + pixel_values: Optional[torch.Tensor] = None, + bool_masked_pos: Optional[torch.BoolTensor] = None, + head_mask: Optional[torch.Tensor] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs, + ): + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.beit( + pixel_values, + bool_masked_pos=bool_masked_pos, + head_mask=head_mask, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + + # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads + if not return_dict: + head_inputs = (outputs[0],) + outputs[2:] + else: + head_inputs = outputs + pooled_output = outputs[1] + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + head_inputs, + cls_output=pooled_output, # BEiT does classification based on average-pooling of last hidden state + head_name=head, + return_dict=return_dict, + pooled_output=pooled_output, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs diff --git a/adapters/src/adapters/models/beit/mixin_beit.py b/adapters/src/adapters/models/beit/mixin_beit.py new file mode 100644 index 00000000..d4490a33 --- /dev/null +++ b/adapters/src/adapters/models/beit/mixin_beit.py @@ -0,0 +1,61 @@ +from typing import Iterable, Tuple + +import torch.nn as nn + +from ...methods.bottleneck import BottleneckLayer +from ...methods.lora import LoRALinear +from ...methods.prefix_tuning import PrefixTuningLayer +from ...model_mixin import ModelBaseAdaptersMixin + + +class BeitSelfAttentionAdaptersMixin: + def init_adapters(self, model_config, adapters_config): + self.location_key = "self" + + # Wrap layers for LoRA + self.query = LoRALinear.wrap(self.query, "selfattn", model_config, adapters_config, attn_key="q") + self.key = LoRALinear.wrap(self.key, "selfattn", model_config, adapters_config, attn_key="k") + self.value = LoRALinear.wrap(self.value, "selfattn", model_config, adapters_config, attn_key="v") + + self.prefix_tuning = PrefixTuningLayer( + self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config + ) + + +class BeitIntermediateAdaptersMixin: + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.dense = LoRALinear.wrap(self.dense, "intermediate", model_config, adapters_config) + + +class BeitOutputAdaptersMixin: + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.dense = LoRALinear.wrap(self.dense, "output", model_config, adapters_config) + + +class BeitLayerAdaptersMixin: + """Adds adapters to the BeitLayer module.""" + + def init_adapters(self, model_config, adapters_config): + self.attention_adapters = BottleneckLayer("mh_adapter") + self.output_adapters = BottleneckLayer("output_adapter") + + +class BeitModelAdaptersMixin(ModelBaseAdaptersMixin): + """Adds adapters to the BeitModel module.""" + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + self.embeddings.register_forward_hook(self.post_embedding_forward) + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.encoder.layer): + yield i, layer + + def set_input_embeddings(self, value): + self.embeddings.patch_embeddings = value + + def post_embedding_forward(self, module, args, outputs): + embedding_output, tup = outputs + return super().post_embedding_forward(module, args, embedding_output), tup diff --git a/adapters/src/adapters/models/beit/modeling_beit.py b/adapters/src/adapters/models/beit/modeling_beit.py new file mode 100644 index 00000000..1ed5082b --- /dev/null +++ b/adapters/src/adapters/models/beit/modeling_beit.py @@ -0,0 +1,123 @@ +# coding=utf-8 +# Copyright 2021 Microsoft Research and The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch BEiT model.""" + + +import math +from typing import Optional, Tuple, Union + +import torch +import torch.utils.checkpoint +from torch import nn + +from transformers.models.beit.modeling_beit import BeitLayer, BeitRelativePositionBias, BeitSelfAttention + +from .mixin_beit import BeitLayerAdaptersMixin, BeitSelfAttentionAdaptersMixin + + +class BeitSelfAttentionWithAdapters(BeitSelfAttentionAdaptersMixin, BeitSelfAttention): + def forward( + self, + hidden_states: torch.Tensor, + head_mask: Optional[torch.Tensor] = None, + output_attentions: bool = False, + relative_position_bias: Optional[BeitRelativePositionBias] = None, + ) -> Union[Tuple[torch.Tensor], Tuple[torch.Tensor, torch.Tensor]]: + mixed_query_layer = self.query(hidden_states) + + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + query_layer = self.transpose_for_scores(mixed_query_layer) + + key_layer, value_layer, _ = self.prefix_tuning(key_layer, value_layer, hidden_states) + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) + + attention_scores = attention_scores / math.sqrt(self.attention_head_size) + + # Add relative position bias if present. + if self.relative_position_bias is not None: + attention_scores = attention_scores + self.relative_position_bias().unsqueeze(0) + + # Add shared relative position bias if provided. + if relative_position_bias is not None: + attention_scores = attention_scores + relative_position_bias + + # Normalize the attention scores to probabilities. + attention_probs = nn.functional.softmax(attention_scores, dim=-1) + + # This is actually dropping out entire tokens to attend to, which might + # seem a bit unusual, but is taken from the original Transformer paper. + attention_probs = self.dropout(attention_probs) + + # Mask heads if we want to + if head_mask is not None: + attention_probs = attention_probs * head_mask + + context_layer = torch.matmul(attention_probs, value_layer) + + context_layer = context_layer.permute(0, 2, 1, 3).contiguous() + new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) + context_layer = context_layer.view(*new_context_layer_shape) + + outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) + + return outputs + + +class BeitLayerWithAdapters(BeitLayerAdaptersMixin, BeitLayer): + """This corresponds to the Block class in the timm implementation.""" + + def forward( + self, + hidden_states: torch.Tensor, + head_mask: Optional[torch.Tensor] = None, + output_attentions: bool = False, + relative_position_bias: Optional[BeitRelativePositionBias] = None, + ) -> Union[Tuple[torch.Tensor], Tuple[torch.Tensor, torch.Tensor]]: + self_attention_outputs = self.attention( + self.layernorm_before(hidden_states), # in BEiT, layernorm is applied before self-attention + head_mask, + output_attentions=output_attentions, + relative_position_bias=relative_position_bias, + ) + attention_output = self_attention_outputs[0] + outputs = self_attention_outputs[1:] # add self attentions if we output attention weights + + # apply lambda_1 if present + if self.lambda_1 is not None: + attention_output = self.lambda_1 * attention_output + + # first residual connection + hidden_states = self.attention_adapters.bottleneck_layer_forward( + self.drop_path(attention_output), hidden_states, None + ) + + # in BEiT, layernorm is also applied after self-attention + layer_output = self.layernorm_after(hidden_states) + + layer_output = self.intermediate(layer_output) + layer_output = self.output(layer_output) + + if self.lambda_2 is not None: + layer_output = self.lambda_2 * layer_output + + # second residual connection + layer_output = self.output_adapters.bottleneck_layer_forward(self.drop_path(layer_output), hidden_states, None) + + outputs = (layer_output,) + outputs + + return outputs diff --git a/adapters/src/adapters/models/bert/__init__.py b/adapters/src/adapters/models/bert/__init__.py new file mode 100644 index 00000000..ed816cb0 --- /dev/null +++ b/adapters/src/adapters/models/bert/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["BertAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import BertAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/bert/adapter_model.py b/adapters/src/adapters/models/bert/adapter_model.py new file mode 100644 index 00000000..0b8e1894 --- /dev/null +++ b/adapters/src/adapters/models/bert/adapter_model.py @@ -0,0 +1,125 @@ +from transformers.models.bert.modeling_bert import ( + BERT_INPUTS_DOCSTRING, + BERT_START_DOCSTRING, + BertModel, + BertPreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + """Bert Model transformer with the option to add multiple flexible heads on top.""", + BERT_START_DOCSTRING, +) +class BertAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, BertPreTrainedModel): + + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "multiple_choice", + "question_answering", + "dependency_parsing", + "masked_lm", + "causal_lm", + ] + + def __init__(self, config): + super().__init__(config) + + self.bert = BertModel(config) + init(self.bert) + + self._init_head_modules() + + self.init_weights() + + @add_start_docstrings_to_model_forward(BERT_INPUTS_DOCSTRING.format("batch_size, sequence_length")) + def forward( + self, + input_ids=None, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None + attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None + token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None + position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None + inputs_embeds = ( + inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) + if inputs_embeds is not None + else None + ) + + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.bert( + input_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads + if not return_dict: + head_inputs = (outputs[0],) + outputs[2:] + else: + head_inputs = outputs + pooled_output = outputs[1] + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + head_inputs, + head_name=head, + attention_mask=attention_mask, + return_dict=return_dict, + pooled_output=pooled_output, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs + + # Copied from BertLMHeadModel + def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): + input_shape = input_ids.shape + # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly + if attention_mask is None: + attention_mask = input_ids.new_ones(input_shape) + + # cut decoder_input_ids if past is used + if past is not None: + input_ids = input_ids[:, -1:] + + return { + "input_ids": input_ids, + "attention_mask": attention_mask, + "past_key_values": past, + "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), + } diff --git a/adapters/src/adapters/models/bert/mixin_bert.py b/adapters/src/adapters/models/bert/mixin_bert.py new file mode 100644 index 00000000..4aa07924 --- /dev/null +++ b/adapters/src/adapters/models/bert/mixin_bert.py @@ -0,0 +1,92 @@ +import logging +from typing import Iterable, Tuple + +import torch.nn as nn + +from ...composition import adjust_tensors_for_parallel_ +from ...methods.bottleneck import BottleneckLayer +from ...methods.lora import LoRALinear +from ...methods.prefix_tuning import PrefixTuningLayer +from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin + + +logger = logging.getLogger(__name__) + + +class BertSelfAttentionAdaptersMixin: + """Adds adapters to the BertSelfAttention module.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.query = LoRALinear.wrap(self.query, "selfattn", model_config, adapters_config, attn_key="q") + self.key = LoRALinear.wrap(self.key, "selfattn", model_config, adapters_config, attn_key="k") + self.value = LoRALinear.wrap(self.value, "selfattn", model_config, adapters_config, attn_key="v") + + self.prefix_tuning = PrefixTuningLayer( + self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config + ) + + +# For backwards compatibility, BertSelfOutput inherits directly from BottleneckLayer +class BertSelfOutputAdaptersMixin(BottleneckLayer): + """Adds adapters to the BertSelfOutput module.""" + + def __init__(self): + super().__init__("mh_adapter") + + def init_adapters(self, model_config, adapters_config): + self.location_key = "mh_adapter" + super().init_adapters(model_config, adapters_config) + + +# For backwards compatibility, BertOutput inherits directly from BottleneckLayer +class BertOutputAdaptersMixin(BottleneckLayer): + """Adds adapters to the BertOutput module.""" + + def __init__(self): + super().__init__("output_adapter") + + def init_adapters(self, model_config, adapters_config): + self.location_key = "output_adapter" + super().init_adapters(model_config, adapters_config) + + +class BertLayerAdaptersMixin: + """Adds adapters to the BertLayer module.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.intermediate.dense = LoRALinear.wrap( + self.intermediate.dense, "intermediate", model_config, adapters_config + ) + self.output.dense = LoRALinear.wrap(self.output.dense, "output", model_config, adapters_config) + + # Set location keys for prefix tuning + self.attention.self.location_key = "self" + if hasattr(self, "add_cross_attention") and self.add_cross_attention: + self.crossattention.self.location_key = "cross" + + +class BertModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): + """Adds adapters to the BertModel module.""" + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + + # Set hook for parallel composition + for _, layer in self.iter_layers(): + self._set_layer_hook_for_parallel(layer) + + # Register hook for post embedding forward + self.embeddings.register_forward_hook(self.post_embedding_forward) + + def _set_layer_hook_for_parallel(self, layer: nn.Module): + def hook(module, input): + adjust_tensors_for_parallel_(input[0], input[1]) + return input + + layer.register_forward_pre_hook(hook) + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.encoder.layer): + yield i, layer diff --git a/adapters/src/adapters/models/bert/modeling_bert.py b/adapters/src/adapters/models/bert/modeling_bert.py new file mode 100644 index 00000000..ea60b6f5 --- /dev/null +++ b/adapters/src/adapters/models/bert/modeling_bert.py @@ -0,0 +1,158 @@ +# coding=utf-8 +# Copyright 2018 The Google AI Language Team Authors and The HuggingFace Inc. team. +# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""PyTorch BERT model.""" + + +import math +from typing import Optional, Tuple + +import torch +import torch.utils.checkpoint +from torch import nn + +from transformers.models.bert.modeling_bert import BertOutput, BertSelfAttention, BertSelfOutput + +from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from ...utils import prefix_attention_mask +from .mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin + + +class BertSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, BertSelfAttention): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.FloatTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + encoder_hidden_states: Optional[torch.FloatTensor] = None, + encoder_attention_mask: Optional[torch.FloatTensor] = None, + past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, + output_attentions: Optional[bool] = False, + ) -> Tuple[torch.Tensor]: + attention_mask = prefix_attention_mask(attention_mask) # type: ignore + + mixed_query_layer = self.query(hidden_states) + + # If this is instantiated as a cross-attention module, the keys + # and values come from an encoder; the attention mask needs to be + # such that the encoder's padding tokens are not attended to. + is_cross_attention = encoder_hidden_states is not None + + if is_cross_attention and past_key_value is not None: + # reuse k,v, cross_attentions + key_layer = past_key_value[0] + value_layer = past_key_value[1] + attention_mask = encoder_attention_mask + elif is_cross_attention: + key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) + value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) + attention_mask = encoder_attention_mask + elif past_key_value is not None: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + key_layer = torch.cat([past_key_value[0], key_layer], dim=2) + value_layer = torch.cat([past_key_value[1], value_layer], dim=2) + else: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + + query_layer = self.transpose_for_scores(mixed_query_layer) + query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) + (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) + + use_cache = past_key_value is not None + if self.is_decoder: + # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. + # Further calls to cross_attention layer can then reuse all cross-attention + # key/value_states (first "if" case) + # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of + # all previous decoder key/value_states. Further calls to uni-directional self-attention + # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) + # if encoder bi-directional self-attention `past_key_value` is always `None` + past_key_value = (key_layer, value_layer) + + key_layer, value_layer, attention_mask = self.prefix_tuning( + key_layer, value_layer, hidden_states, attention_mask + ) + (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) + + if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": + query_length, key_length = query_layer.shape[2], key_layer.shape[2] + if use_cache: + position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( + -1, 1 + ) + else: + position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) + position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) + distance = position_ids_l - position_ids_r + + positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) + positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility + + if self.position_embedding_type == "relative_key": + relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores + elif self.position_embedding_type == "relative_key_query": + relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key + + attention_scores = attention_scores / math.sqrt(self.attention_head_size) + if attention_mask is not None: + # Apply the attention mask is (precomputed for all layers in BertModel forward() function) + attention_scores = attention_scores + attention_mask + + # Normalize the attention scores to probabilities. + attention_probs = nn.functional.softmax(attention_scores, dim=-1) + + # This is actually dropping out entire tokens to attend to, which might + # seem a bit unusual, but is taken from the original Transformer paper. + attention_probs = self.dropout(attention_probs) + + # Mask heads if we want to + if head_mask is not None: + attention_probs = attention_probs * head_mask + + context_layer = torch.matmul(attention_probs, value_layer) + + context_layer = context_layer.permute(0, 2, 1, 3).contiguous() + new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) + context_layer = context_layer.view(new_context_layer_shape) + + outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) + + if self.is_decoder: + outputs = outputs + (past_key_value,) + return outputs + + +class BertSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, BertSelfOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states + + +class BertOutputWithAdapters(BertOutputAdaptersMixin, BertOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states diff --git a/adapters/src/adapters/models/bert_generation/__init__.py b/adapters/src/adapters/models/bert_generation/__init__.py new file mode 100644 index 00000000..083b755b --- /dev/null +++ b/adapters/src/adapters/models/bert_generation/__init__.py @@ -0,0 +1,51 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["BertGenerationAdapterModel"], + "modeling_bert_generation": [ + "BertGenerationDecoder", + "BertGenerationEncoder", + "BertGenerationPreTrainedModel", + "load_tf_weights_in_bert_generation", + ], +} + + +if TYPE_CHECKING: + from .adapter_model import BertGenerationAdapterModel + from .modeling_bert_generation import ( + BertGenerationDecoder, + BertGenerationEncoder, + BertGenerationPreTrainedModel, + load_tf_weights_in_bert_generation, + ) + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/bert_generation/adapter_model.py b/adapters/src/adapters/models/bert_generation/adapter_model.py new file mode 100644 index 00000000..072c1b09 --- /dev/null +++ b/adapters/src/adapters/models/bert_generation/adapter_model.py @@ -0,0 +1,125 @@ +from transformers.models.bert_generation.modeling_bert_generation import ( + BERT_GENERATION_INPUTS_DOCSTRING, + BERT_GENERATION_START_DOCSTRING, + BertGenerationEncoder, + BertGenerationPreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + """Bert Model transformer with the option to add multiple flexible heads on top.""", + BERT_GENERATION_START_DOCSTRING, +) +class BertGenerationAdapterModel( + EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, BertGenerationPreTrainedModel +): + _keys_to_ignore_on_load_unexpected = [r"lm_head.bias"] + + head_types = [ + "masked_lm", + "causal_lm", + ] + + def __init__(self, config): + super().__init__(config) + + self.bert = BertGenerationEncoder(config) + init(self.bert) + + self._init_head_modules() + + self.init_weights() + + @add_start_docstrings_to_model_forward(BERT_GENERATION_INPUTS_DOCSTRING.format("batch_size, sequence_length")) + def forward( + self, + input_ids=None, + attention_mask=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + encoder_hidden_states=None, + encoder_attention_mask=None, + past_key_values=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None + attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None + position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None + inputs_embeds = ( + inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) + if inputs_embeds is not None + else None + ) + + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.bert( + input_ids, + attention_mask=attention_mask, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + encoder_hidden_states=encoder_hidden_states, + encoder_attention_mask=encoder_attention_mask, + past_key_values=past_key_values, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads + if not return_dict: + head_inputs = (outputs[0],) + outputs[2:] + else: + head_inputs = outputs + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + head_inputs, + head_name=head, + attention_mask=attention_mask, + return_dict=return_dict, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs + + # Copied from BertLMHeadModel + def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): + input_shape = input_ids.shape + # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly + if attention_mask is None: + attention_mask = input_ids.new_ones(input_shape) + + # cut decoder_input_ids if past is used + if past is not None: + input_ids = input_ids[:, -1:] + + return { + "input_ids": input_ids, + "attention_mask": attention_mask, + "past_key_values": past, + "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), + } diff --git a/adapters/src/adapters/models/bert_generation/modeling_bert_generation.py b/adapters/src/adapters/models/bert_generation/modeling_bert_generation.py new file mode 100644 index 00000000..f0ef9a35 --- /dev/null +++ b/adapters/src/adapters/models/bert_generation/modeling_bert_generation.py @@ -0,0 +1,162 @@ +# coding=utf-8 +# Copyright 2020 The Google AI Language Team Authors and The HuggingFace Inc. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""PyTorch BERT model specific for generation.""" + +import math +from typing import Optional, Tuple + +import torch +import torch.utils.checkpoint +from torch import nn + +from transformers.models.bert_generation.modeling_bert_generation import ( + BertGenerationOutput, + BertGenerationSelfAttention, + BertGenerationSelfOutput, +) + +from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from ...utils import prefix_attention_mask +from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin + + +# Copied from transformers.models.bert.modeling_bert.BertSelfOutput with Bert->BertGeneration +class BertGenerationSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, BertGenerationSelfOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states + + +# Copied from transformers.models.bert.modeling_bert.BertSelfAttention with Bert->BertGeneration +class BertGenerationSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, BertGenerationSelfAttention): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.FloatTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + encoder_hidden_states: Optional[torch.FloatTensor] = None, + encoder_attention_mask: Optional[torch.FloatTensor] = None, + past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, + output_attentions: Optional[bool] = False, + ) -> Tuple[torch.Tensor]: + attention_mask = prefix_attention_mask(attention_mask) # type: ignore + + mixed_query_layer = self.query(hidden_states) + + # If this is instantiated as a cross-attention module, the keys + # and values come from an encoder; the attention mask needs to be + # such that the encoder's padding tokens are not attended to. + is_cross_attention = encoder_hidden_states is not None + + if is_cross_attention and past_key_value is not None: + # reuse k,v, cross_attentions + key_layer = past_key_value[0] + value_layer = past_key_value[1] + attention_mask = encoder_attention_mask + elif is_cross_attention: + key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) + value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) + attention_mask = encoder_attention_mask + elif past_key_value is not None: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + key_layer = torch.cat([past_key_value[0], key_layer], dim=2) + value_layer = torch.cat([past_key_value[1], value_layer], dim=2) + else: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + + query_layer = self.transpose_for_scores(mixed_query_layer) + query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) + (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) + + use_cache = past_key_value is not None + if self.is_decoder: + # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. + # Further calls to cross_attention layer can then reuse all cross-attention + # key/value_states (first "if" case) + # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of + # all previous decoder key/value_states. Further calls to uni-directional self-attention + # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) + # if encoder bi-directional self-attention `past_key_value` is always `None` + past_key_value = (key_layer, value_layer) + key_layer, value_layer, attention_mask = self.prefix_tuning( + key_layer, value_layer, hidden_states, attention_mask + ) + (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) + + if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": + query_length, key_length = query_layer.shape[2], key_layer.shape[2] + if use_cache: + position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( + -1, 1 + ) + else: + position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) + position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) + distance = position_ids_l - position_ids_r + + positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) + positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility + + if self.position_embedding_type == "relative_key": + relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores + elif self.position_embedding_type == "relative_key_query": + relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key + + attention_scores = attention_scores / math.sqrt(self.attention_head_size) + if attention_mask is not None: + # Apply the attention mask is (precomputed for all layers in BertGenerationModel forward() function) + attention_scores = attention_scores + attention_mask + + # Normalize the attention scores to probabilities. + attention_probs = nn.functional.softmax(attention_scores, dim=-1) + + # This is actually dropping out entire tokens to attend to, which might + # seem a bit unusual, but is taken from the original Transformer paper. + attention_probs = self.dropout(attention_probs) + + # Mask heads if we want to + if head_mask is not None: + attention_probs = attention_probs * head_mask + + context_layer = torch.matmul(attention_probs, value_layer) + + context_layer = context_layer.permute(0, 2, 1, 3).contiguous() + new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) + context_layer = context_layer.view(new_context_layer_shape) + + outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) + + if self.is_decoder: + outputs = outputs + (past_key_value,) + return outputs + + +# Copied from transformers.models.bert.modeling_bert.BertOutput with Bert->BertGeneration +class BertGenerationOutputWithAdapters(BertOutputAdaptersMixin, BertGenerationOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states diff --git a/adapters/src/adapters/models/clip/__init__.py b/adapters/src/adapters/models/clip/__init__.py new file mode 100644 index 00000000..7675094c --- /dev/null +++ b/adapters/src/adapters/models/clip/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["CLIPAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import CLIPAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/clip/adapter_model.py b/adapters/src/adapters/models/clip/adapter_model.py new file mode 100644 index 00000000..5aa15d41 --- /dev/null +++ b/adapters/src/adapters/models/clip/adapter_model.py @@ -0,0 +1,77 @@ +from typing import Optional + +import torch + +from transformers.models.clip.modeling_clip import ( + CLIP_INPUTS_DOCSTRING, + CLIP_START_DOCSTRING, + CLIPModel, + CLIPPreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings(CLIP_START_DOCSTRING) +class CLIPAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, CLIPPreTrainedModel): + _tied_weights_keys = [] # needs to be empty since CLIP does not yet support prompt tuning + + def __init__(self, config): + super().__init__(config) + + self.clip = CLIPModel(config) + init(self.clip) + + self._init_head_modules() + + self.post_init() + + @add_start_docstrings_to_model_forward(CLIP_INPUTS_DOCSTRING) + def forward( + self, + input_ids: Optional[torch.LongTensor] = None, + pixel_values: Optional[torch.FloatTensor] = None, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + return_loss: Optional[bool] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + outputs, context = self.clip( + input_ids=input_ids, + pixel_values=pixel_values, + attention_mask=attention_mask, + position_ids=position_ids, + return_loss=return_loss, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + outputs, + head_name=head, + attention_mask=attention_mask, + return_dict=return_dict, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs diff --git a/adapters/src/adapters/models/clip/mixin_clip.py b/adapters/src/adapters/models/clip/mixin_clip.py new file mode 100644 index 00000000..020d88f5 --- /dev/null +++ b/adapters/src/adapters/models/clip/mixin_clip.py @@ -0,0 +1,115 @@ +from typing import Iterable, Tuple + +import torch.nn as nn + +from ...composition import adjust_tensors_for_parallel_ +from ...methods.bottleneck import BottleneckLayer +from ...methods.lora import LoRALinear +from ...methods.prefix_tuning import PrefixTuningLayer +from ...model_mixin import ( + EmbeddingAdaptersMixin, + EmbeddingAdaptersWrapperMixin, + InvertibleAdaptersMixin, + InvertibleAdaptersWrapperMixin, + ModelBaseAdaptersMixin, +) + + +class CLIPAttentionAdaptersMixin: + """Adds adapters to the CLIPAttention module.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.q_proj = LoRALinear.wrap(self.q_proj, "selfattn", model_config, adapters_config, attn_key="q") + self.k_proj = LoRALinear.wrap(self.k_proj, "selfattn", model_config, adapters_config, attn_key="k") + self.v_proj = LoRALinear.wrap(self.v_proj, "selfattn", model_config, adapters_config, attn_key="v") + + self.prefix_tuning = PrefixTuningLayer( + "self_prefix", model_config, adapters_config, add_model_type_to_key=True + ) + + +class CLIPEncoderLayerAdaptersMixin: + """Adds adapters to the CLIPEncoderLayer module of CLIP.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.mlp.fc1 = LoRALinear.wrap(self.mlp.fc1, "intermediate", model_config, adapters_config) + self.mlp.fc2 = LoRALinear.wrap(self.mlp.fc2, "output", model_config, adapters_config) + + self.attention_adapters = BottleneckLayer("mh_adapter") + self.output_adapters = BottleneckLayer("output_adapter") + + +class CLIPEncoderAdaptersMixin: + """Adds adapters to the CLIPEncoder module of CLIP.""" + + def init_adapters(self, model_config, adapters_config): + # Set hook for parallel composition + for layer in self.layers: + self._set_layer_hook_for_parallel(layer) + + def _set_layer_hook_for_parallel(self, layer: nn.Module): + def hook(module, input): + adjust_tensors_for_parallel_(input[0], input[1]) + return input + + layer.register_forward_pre_hook(hook) + + +class CLIPTextTransformerAdaptersMixin(InvertibleAdaptersMixin): + """Adds adapters to the CLIPTextTransformer module of CLIP.""" + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + + # Register hook for post embedding forward + self.embeddings.register_forward_hook(self.post_embedding_forward) + + def post_embedding_forward(self, module, args, embedding_output): + embedding_output = self.invertible_adapters_forward(embedding_output) + # Prompt tuning not yet supported + return embedding_output + + +class CLIPTextModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersWrapperMixin, ModelBaseAdaptersMixin): + """Adds adapters to the CLIPTextModel class.""" + + invertible_adapters_base_name = "text_model" + support_prompt_tuning = False + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.text_model.encoder.layers): + yield i, layer + + +class CLIPVisionModelAdaptersMixin(ModelBaseAdaptersMixin): + """Adds adapters to the a CLIPVisionModel class.""" + + support_prompt_tuning = False + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.vision_model.encoder.layers): + yield i, layer + + +class CLIPModelAdaptersMixin(EmbeddingAdaptersWrapperMixin, InvertibleAdaptersWrapperMixin, ModelBaseAdaptersMixin): + """Adds adapters to the CLIPModel class.""" + + invertible_adapters_base_name = "text_model" + support_prompt_tuning = False + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.text_model.encoder.layers): + yield i, layer + for i, layer in enumerate(self.vision_model.encoder.layers, start=len(self.text_model.encoder.layers)): + yield i, layer + + def _init_adapters_submodules(self, model_config, adapters_config): + # Initialize adapters in text and vision model separately + for module in self.text_model.modules(): + if hasattr(module, "init_adapters"): + module.init_adapters(model_config.text_config, adapters_config) + for module in self.vision_model.modules(): + if hasattr(module, "init_adapters"): + module.init_adapters(model_config.vision_config, adapters_config) diff --git a/adapters/src/adapters/models/clip/modeling_clip.py b/adapters/src/adapters/models/clip/modeling_clip.py new file mode 100644 index 00000000..a67491dc --- /dev/null +++ b/adapters/src/adapters/models/clip/modeling_clip.py @@ -0,0 +1,157 @@ +# coding=utf-8 +# Copyright 2021 The OpenAI Team Authors and The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch CLIP model.""" + + +from typing import Optional, Tuple + +import torch +import torch.utils.checkpoint +from torch import nn + +from transformers.models.clip.modeling_clip import CLIPAttention, CLIPEncoderLayer + +from .mixin_clip import CLIPAttentionAdaptersMixin, CLIPEncoderLayerAdaptersMixin + + +class CLIPAttentionWithAdapters(CLIPAttentionAdaptersMixin, CLIPAttention): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + causal_attention_mask: Optional[torch.Tensor] = None, + output_attentions: Optional[bool] = False, + ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: + """Input shape: Batch x Time x Channel""" + + bsz, tgt_len, embed_dim = hidden_states.size() + + # get query proj + query_states = self.q_proj(hidden_states) * self.scale + key_states = self._shape(self.k_proj(hidden_states), -1, bsz) + value_states = self._shape(self.v_proj(hidden_states), -1, bsz) + + proj_shape = (bsz * self.num_heads, -1, self.head_dim) + query_states = self._shape(query_states, tgt_len, bsz).view(*proj_shape) + + key_states, value_states, attention_mask = self.prefix_tuning( + key_states, value_states, hidden_states, attention_mask + ) + + key_states = key_states.view(*proj_shape) + value_states = value_states.view(*proj_shape) + + src_len = key_states.size(1) + attn_weights = torch.bmm(query_states, key_states.transpose(1, 2)) + + if attn_weights.size() != (bsz * self.num_heads, tgt_len, src_len): + raise ValueError( + f"Attention weights should be of size {(bsz * self.num_heads, tgt_len, src_len)}, but is" + f" {attn_weights.size()}" + ) + + # apply the causal_attention_mask first + if causal_attention_mask is not None: + prefix_mask = torch.ones( + bsz, 1, causal_attention_mask.size(2), src_len - causal_attention_mask.size(-1) + ).to(causal_attention_mask.device) + causal_attention_mask = torch.cat([prefix_mask, causal_attention_mask], dim=-1) + if causal_attention_mask.size() != (bsz, 1, tgt_len, src_len): + raise ValueError( + f"Attention mask should be of size {(bsz, 1, tgt_len, src_len)}, but is" + f" {causal_attention_mask.size()}" + ) + attn_weights = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + causal_attention_mask + attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) + + if attention_mask is not None: + if attention_mask.size() != (bsz, 1, tgt_len, src_len): + raise ValueError( + f"Attention mask should be of size {(bsz, 1, tgt_len, src_len)}, but is {attention_mask.size()}" + ) + attn_weights = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + attention_mask + attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) + + attn_weights = nn.functional.softmax(attn_weights, dim=-1) + + if output_attentions: + # this operation is a bit akward, but it's required to + # make sure that attn_weights keeps its gradient. + # In order to do so, attn_weights have to reshaped + # twice and have to be reused in the following + attn_weights_reshaped = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + attn_weights = attn_weights_reshaped.view(bsz * self.num_heads, tgt_len, src_len) + else: + attn_weights_reshaped = None + + attn_probs = nn.functional.dropout(attn_weights, p=self.dropout, training=self.training) + + attn_output = torch.bmm(attn_probs, value_states) + + if attn_output.size() != (bsz * self.num_heads, tgt_len, self.head_dim): + raise ValueError( + f"`attn_output` should be of size {(bsz, self.num_heads, tgt_len, self.head_dim)}, but is" + f" {attn_output.size()}" + ) + + attn_output = attn_output.view(bsz, self.num_heads, tgt_len, self.head_dim) + attn_output = attn_output.transpose(1, 2) + attn_output = attn_output.reshape(bsz, tgt_len, embed_dim) + + attn_output = self.out_proj(attn_output) + + return attn_output, attn_weights_reshaped + + +class CLIPEncoderLayerWithAdapters(CLIPEncoderLayerAdaptersMixin, CLIPEncoderLayer): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: torch.Tensor, + causal_attention_mask: torch.Tensor, + output_attentions: Optional[bool] = False, + ) -> Tuple[torch.FloatTensor]: + """ + Args: + hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)` + attention_mask (`torch.FloatTensor`): attention mask of size + `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. + `(config.encoder_attention_heads,)`. + output_attentions (`bool`, *optional*): + Whether or not to return the attentions tensors of all attention layers. See `attentions` under + returned tensors for more detail. + """ + residual = hidden_states + + hidden_states = self.layer_norm1(hidden_states) + hidden_states, attn_weights = self.self_attn( + hidden_states=hidden_states, + attention_mask=attention_mask, + causal_attention_mask=causal_attention_mask, + output_attentions=output_attentions, + ) + hidden_states = self.attention_adapters(hidden_states, residual, layer_norm=None) + + residual = hidden_states + hidden_states = self.layer_norm2(hidden_states) + hidden_states = self.mlp(hidden_states) + hidden_states = self.output_adapters(hidden_states, residual, layer_norm=None) + + outputs = (hidden_states,) + + if output_attentions: + outputs += (attn_weights,) + + return outputs diff --git a/adapters/src/adapters/models/deberta/__init__.py b/adapters/src/adapters/models/deberta/__init__.py new file mode 100644 index 00000000..d72e9aa3 --- /dev/null +++ b/adapters/src/adapters/models/deberta/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["DebertaAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import DebertaAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/deberta/adapter_model.py b/adapters/src/adapters/models/deberta/adapter_model.py new file mode 100644 index 00000000..32ec9cd4 --- /dev/null +++ b/adapters/src/adapters/models/deberta/adapter_model.py @@ -0,0 +1,97 @@ +from transformers.file_utils import add_start_docstrings +from transformers.models.deberta.modeling_deberta import DebertaModel, DebertaPreTrainedModel + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + """Deberta Model transformer with the option to add multiple flexible heads on top.""", +) +class DebertaAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, DebertaPreTrainedModel): + _keys_to_ignore_on_load_unexpected = [r"cls.predictions.bias"] + + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "question_answering", + "multiple_choice", + "masked_lm", + ] + + def __init__(self, config): + super().__init__(config) + + self.deberta = DebertaModel(config) + init(self.deberta) + + self._init_head_modules() + + self.init_weights() + + def forward( + self, + input_ids=None, + attention_mask=None, + token_type_ids=None, + position_ids=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None + position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None + token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None + attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None + inputs_embeds = ( + inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) + if inputs_embeds is not None + else None + ) + + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.deberta( + input_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads + if not return_dict: + head_inputs = (outputs[0],) + outputs[2:] + else: + head_inputs = outputs + pooled_output = outputs[0] + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + head_inputs, + head_name=head, + attention_mask=attention_mask, + return_dict=return_dict, + pooled_output=pooled_output, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs diff --git a/adapters/src/adapters/models/deberta/mixin_deberta.py b/adapters/src/adapters/models/deberta/mixin_deberta.py new file mode 100644 index 00000000..d9907de3 --- /dev/null +++ b/adapters/src/adapters/models/deberta/mixin_deberta.py @@ -0,0 +1,14 @@ +from ...methods.lora import LoRAMergedLinear +from ...methods.prefix_tuning import PrefixTuningLayer + + +class DebertaSelfAttentionAdaptersMixin: + """Adds adapters to the BertSelfAttention module.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.in_proj = LoRAMergedLinear.wrap(self.in_proj, "selfattn", model_config, adapters_config) + + self.prefix_tuning = PrefixTuningLayer( + self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config + ) diff --git a/adapters/src/adapters/models/deberta/modeling_deberta.py b/adapters/src/adapters/models/deberta/modeling_deberta.py new file mode 100644 index 00000000..1feca72b --- /dev/null +++ b/adapters/src/adapters/models/deberta/modeling_deberta.py @@ -0,0 +1,165 @@ +# coding=utf-8 +# Copyright 2020 Microsoft and the Hugging Face Inc. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch DeBERTa model.""" + +import torch +import torch.utils.checkpoint + +from transformers.models.deberta.modeling_deberta import ( + DebertaOutput, + DebertaSelfOutput, + DisentangledSelfAttention, + XSoftmax, +) + +from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from ...utils import prefix_attention_mask +from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfOutputAdaptersMixin +from .mixin_deberta import DebertaSelfAttentionAdaptersMixin + + +class DebertaSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, DebertaSelfOutput): + def forward(self, hidden_states, input_tensor): + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states + + +class DebertaOutputWithAdapters(BertOutputAdaptersMixin, DebertaOutput): + def forward(self, hidden_states, input_tensor): + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states + + +class DisentangledSelfAttentionWithAdapters(DebertaSelfAttentionAdaptersMixin, DisentangledSelfAttention): + """ + Disentangled self-attention module + + Parameters: + config (`str`): + A model config class instance with the configuration to build a new model. The schema is similar to + *BertConfig*, for more details, please refer [`DebertaConfig`] + + """ + + def forward( + self, + hidden_states, + attention_mask, + output_attentions=False, + query_states=None, + relative_pos=None, + rel_embeddings=None, + ): + """ + Call the module + + Args: + hidden_states (`torch.FloatTensor`): + Input states to the module usually the output from previous layer, it will be the Q,K and V in + *Attention(Q,K,V)* + + attention_mask (`torch.ByteTensor`): + An attention mask matrix of shape [*B*, *N*, *N*] where *B* is the batch size, *N* is the maximum + sequence length in which element [i,j] = *1* means the *i* th token in the input can attend to the *j* + th token. + + output_attentions (`bool`, optional): + Whether return the attention matrix. + + query_states (`torch.FloatTensor`, optional): + The *Q* state in *Attention(Q,K,V)*. + + relative_pos (`torch.LongTensor`): + The relative position encoding between the tokens in the sequence. It's of shape [*B*, *N*, *N*] with + values ranging in [*-max_relative_positions*, *max_relative_positions*]. + + rel_embeddings (`torch.FloatTensor`): + The embedding of relative distances. It's a tensor of shape [\\(2 \\times + \\text{max_relative_positions}\\), *hidden_size*]. + + + """ + attention_mask = prefix_attention_mask(attention_mask, dim=3, prefix_value=1) # type: ignore + attention_mask = prefix_attention_mask(attention_mask, dim=2, prefix_value=1) # type: ignore + + if query_states is None: + qp = self.in_proj(hidden_states) # .split(self.all_head_size, dim=-1) + query_layer, key_layer, value_layer = self.transpose_for_scores(qp).chunk(3, dim=-1) + else: + + def linear(w, b, x): + if b is not None: + return torch.matmul(x, w.t()) + b.t() + else: + return torch.matmul(x, w.t()) # + b.t() + + ws = self.in_proj.weight.chunk(self.num_attention_heads * 3, dim=0) + qkvw = [torch.cat([ws[i * 3 + k] for i in range(self.num_attention_heads)], dim=0) for k in range(3)] + qkvb = [None] * 3 + + q = linear(qkvw[0], qkvb[0], query_states.to(dtype=qkvw[0].dtype)) + k, v = [linear(qkvw[i], qkvb[i], hidden_states.to(dtype=qkvw[i].dtype)) for i in range(1, 3)] + query_layer, key_layer, value_layer = [self.transpose_for_scores(x) for x in [q, k, v]] + + query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) + (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) + + query_layer = query_layer + self.transpose_for_scores(self.q_bias[None, None, :]) + value_layer = value_layer + self.transpose_for_scores(self.v_bias[None, None, :]) + + orig_key_layer = key_layer # save this for relative attention + key_layer, value_layer, attention_mask = self.prefix_tuning( + key_layer, value_layer, hidden_states, attention_mask, False + ) + (query_layer, orig_key_layer) = adjust_tensors_for_parallel(key_layer, query_layer, orig_key_layer) + + rel_att = None + # Take the dot product between "query" and "key" to get the raw attention scores. + scale_factor = 1 + len(self.pos_att_type) + scale = torch.sqrt(torch.tensor(query_layer.size(-1), dtype=torch.float) * scale_factor) + query_layer = query_layer / scale.to(dtype=query_layer.dtype) + attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) + if self.relative_attention: + rel_embeddings = self.pos_dropout(rel_embeddings) + rel_att = self.disentangled_att_bias( + query_layer, orig_key_layer, relative_pos, rel_embeddings, scale_factor + ) + + if rel_att is not None: + rel_att_padded = torch.zeros_like(attention_scores) + rel_att_padded[:, :, :, -rel_att.size(-1) :] = rel_att + attention_scores = attention_scores + rel_att_padded + + # bxhxlxd + if self.talking_head: + attention_scores = self.head_logits_proj(attention_scores.permute(0, 2, 3, 1)).permute(0, 3, 1, 2) + + attention_probs = XSoftmax.apply(attention_scores, attention_mask, -1) + attention_probs = self.dropout(attention_probs) + if self.talking_head: + attention_probs = self.head_weights_proj(attention_probs.permute(0, 2, 3, 1)).permute(0, 3, 1, 2) + + context_layer = torch.matmul(attention_probs, value_layer) + context_layer = context_layer.permute(0, 2, 1, 3).contiguous() + new_context_layer_shape = context_layer.size()[:-2] + (-1,) + context_layer = context_layer.view(new_context_layer_shape) + if output_attentions: + return (context_layer, attention_probs) + else: + return context_layer diff --git a/adapters/src/adapters/models/deberta_v2/__init__.py b/adapters/src/adapters/models/deberta_v2/__init__.py new file mode 100644 index 00000000..61ef443a --- /dev/null +++ b/adapters/src/adapters/models/deberta_v2/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["DebertaV2AdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import DebertaV2AdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/deberta_v2/adapter_model.py b/adapters/src/adapters/models/deberta_v2/adapter_model.py new file mode 100644 index 00000000..c306f8f4 --- /dev/null +++ b/adapters/src/adapters/models/deberta_v2/adapter_model.py @@ -0,0 +1,99 @@ +from transformers.file_utils import add_start_docstrings +from transformers.models.deberta_v2.modeling_deberta_v2 import DebertaV2Model, DebertaV2PreTrainedModel + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + """Deberta v2 Model transformer with the option to add multiple flexible heads on top.""", +) +class DebertaV2AdapterModel( + EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, DebertaV2PreTrainedModel +): + _keys_to_ignore_on_load_unexpected = [r"cls.predictions.bias"] + + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "question_answering", + "multiple_choice", + "masked_lm", + ] + + def __init__(self, config): + super().__init__(config) + + self.deberta = DebertaV2Model(config) + init(self.deberta) + + self._init_head_modules() + + self.init_weights() + + def forward( + self, + input_ids=None, + attention_mask=None, + token_type_ids=None, + position_ids=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None + position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None + token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None + attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None + inputs_embeds = ( + inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) + if inputs_embeds is not None + else None + ) + + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.deberta( + input_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads + if not return_dict: + head_inputs = (outputs[0],) + outputs[2:] + else: + head_inputs = outputs + pooled_output = outputs[0] + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + head_inputs, + head_name=head, + attention_mask=attention_mask, + return_dict=return_dict, + pooled_output=pooled_output, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs diff --git a/adapters/src/adapters/models/deberta_v2/mixin_deberta_v2.py b/adapters/src/adapters/models/deberta_v2/mixin_deberta_v2.py new file mode 100644 index 00000000..3a33fdf8 --- /dev/null +++ b/adapters/src/adapters/models/deberta_v2/mixin_deberta_v2.py @@ -0,0 +1,16 @@ +from ...methods.lora import LoRALinear +from ...methods.prefix_tuning import PrefixTuningLayer + + +class DebertaV2SelfAttentionAdaptersMixin: + """Adds adapters to the BertSelfAttention module.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.query_proj = LoRALinear.wrap(self.query_proj, "selfattn", model_config, adapters_config, attn_key="q") + self.key_proj = LoRALinear.wrap(self.key_proj, "selfattn", model_config, adapters_config, attn_key="k") + self.value_proj = LoRALinear.wrap(self.value_proj, "selfattn", model_config, adapters_config, attn_key="v") + + self.prefix_tuning = PrefixTuningLayer( + self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config + ) diff --git a/adapters/src/adapters/models/deberta_v2/modeling_deberta_v2.py b/adapters/src/adapters/models/deberta_v2/modeling_deberta_v2.py new file mode 100644 index 00000000..56d6fec4 --- /dev/null +++ b/adapters/src/adapters/models/deberta_v2/modeling_deberta_v2.py @@ -0,0 +1,156 @@ +# coding=utf-8 +# Copyright 2020 Microsoft and the Hugging Face Inc. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch DeBERTa-v2 model.""" + +import torch +import torch.utils.checkpoint + +from transformers.models.deberta_v2.modeling_deberta_v2 import ( + DebertaV2Output, + DebertaV2SelfOutput, + DisentangledSelfAttention, + XSoftmax, +) + +from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from ...utils import prefix_attention_mask +from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfOutputAdaptersMixin +from .mixin_deberta_v2 import DebertaV2SelfAttentionAdaptersMixin + + +# Copied from transformers.models.deberta.modeling_deberta.DebertaSelfOutput with DebertaLayerNorm->LayerNorm +class DebertaV2SelfOutputWithAdapters(BertSelfOutputAdaptersMixin, DebertaV2SelfOutput): + def forward(self, hidden_states, input_tensor): + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states + + +# Copied from transformers.models.deberta.modeling_deberta.DebertaOutput with DebertaLayerNorm->LayerNorm +class DebertaV2OutputWithAdapters(BertOutputAdaptersMixin, DebertaV2Output): + def forward(self, hidden_states, input_tensor): + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states + + +class DisentangledSelfAttentionWithAdapters(DebertaV2SelfAttentionAdaptersMixin, DisentangledSelfAttention): + def transpose_for_scores_extended(self, x, attention_heads): + new_x_shape = x.size()[:-1] + (attention_heads, -1) + x = x.view(new_x_shape) + return x.permute(0, 2, 1, 3) + + def forward( + self, + hidden_states, + attention_mask, + output_attentions=False, + query_states=None, + relative_pos=None, + rel_embeddings=None, + ): + """ + Call the module + + Args: + hidden_states (`torch.FloatTensor`): + Input states to the module usually the output from previous layer, it will be the Q,K and V in + *Attention(Q,K,V)* + + attention_mask (`torch.ByteTensor`): + An attention mask matrix of shape [*B*, *N*, *N*] where *B* is the batch size, *N* is the maximum + sequence length in which element [i,j] = *1* means the *i* th token in the input can attend to the *j* + th token. + + output_attentions (`bool`, optional): + Whether return the attention matrix. + + query_states (`torch.FloatTensor`, optional): + The *Q* state in *Attention(Q,K,V)*. + + relative_pos (`torch.LongTensor`): + The relative position encoding between the tokens in the sequence. It's of shape [*B*, *N*, *N*] with + values ranging in [*-max_relative_positions*, *max_relative_positions*]. + + rel_embeddings (`torch.FloatTensor`): + The embedding of relative distances. It's a tensor of shape [\\(2 \\times + \\text{max_relative_positions}\\), *hidden_size*]. + """ + attention_mask = prefix_attention_mask(attention_mask, dim=3, prefix_value=1) # type: ignore + attention_mask = prefix_attention_mask(attention_mask, dim=2, prefix_value=1) # type: ignore + + if query_states is None: + query_states = hidden_states + query_layer = self.transpose_for_scores_extended(self.query_proj(query_states), self.num_attention_heads) + key_layer = self.transpose_for_scores_extended(self.key_proj(hidden_states), self.num_attention_heads) + value_layer = self.transpose_for_scores_extended(self.value_proj(hidden_states), self.num_attention_heads) + + query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) + (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) + + orig_key_layer = key_layer.contiguous() # save this for relative attention + key_layer, value_layer, attention_mask = self.prefix_tuning( + key_layer, value_layer, hidden_states, attention_mask, False + ) # [:, 0, :, 0]) + query_layer, orig_key_layer = adjust_tensors_for_parallel(key_layer, query_layer, orig_key_layer) + + query_layer = query_layer.contiguous().view(-1, query_layer.size(2), query_layer.size(-1)) + key_layer = key_layer.contiguous().view(-1, key_layer.size(2), key_layer.size(-1)) + value_layer = value_layer.contiguous().view(-1, value_layer.size(2), value_layer.size(-1)) + orig_key_layer = orig_key_layer.contiguous().view(-1, orig_key_layer.size(2), orig_key_layer.size(-1)) + + rel_att = None + # Take the dot product between "query" and "key" to get the raw attention scores. + scale_factor = 1 + if "c2p" in self.pos_att_type: + scale_factor += 1 + if "p2c" in self.pos_att_type: + scale_factor += 1 + scale = torch.sqrt(torch.tensor(query_layer.size(-1), dtype=torch.float) * scale_factor) + attention_scores = torch.bmm(query_layer, key_layer.transpose(-1, -2)) / scale.to(dtype=query_layer.dtype) + if self.relative_attention: + rel_embeddings = self.pos_dropout(rel_embeddings) + rel_att = self.disentangled_attention_bias( + query_layer, orig_key_layer, relative_pos, rel_embeddings, scale_factor + ) + + if rel_att is not None: + rel_att_padded = torch.zeros_like(attention_scores) + rel_att_padded[:, :, -rel_att.size(2) :] = rel_att + attention_scores = attention_scores + rel_att_padded + attention_scores = attention_scores + attention_scores = attention_scores.view( + -1, self.num_attention_heads, attention_scores.size(-2), attention_scores.size(-1) + ) + + # bsz x height x length x dimension + attention_probs = XSoftmax.apply(attention_scores, attention_mask, -1) + attention_probs = self.dropout(attention_probs) + context_layer = torch.bmm( + attention_probs.view(-1, attention_probs.size(-2), attention_probs.size(-1)), value_layer + ) + context_layer = ( + context_layer.view(-1, self.num_attention_heads, context_layer.size(-2), context_layer.size(-1)) + .permute(0, 2, 1, 3) + .contiguous() + ) + new_context_layer_shape = context_layer.size()[:-2] + (-1,) + context_layer = context_layer.view(new_context_layer_shape) + if output_attentions: + return (context_layer, attention_probs) + else: + return context_layer diff --git a/adapters/src/adapters/models/distilbert/__init__.py b/adapters/src/adapters/models/distilbert/__init__.py new file mode 100644 index 00000000..0e125752 --- /dev/null +++ b/adapters/src/adapters/models/distilbert/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["DistilBertAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import DistilBertAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/distilbert/adapter_model.py b/adapters/src/adapters/models/distilbert/adapter_model.py new file mode 100644 index 00000000..c28f1244 --- /dev/null +++ b/adapters/src/adapters/models/distilbert/adapter_model.py @@ -0,0 +1,127 @@ +import torch.nn as nn + +from transformers.models.distilbert.modeling_distilbert import ( + DISTILBERT_INPUTS_DOCSTRING, + DISTILBERT_START_DOCSTRING, + DistilBertModel, + DistilBertPreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + """DistilBert Model transformer with the option to add multiple flexible heads on top.""", + DISTILBERT_START_DOCSTRING, +) +class DistilBertAdapterModel( + EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, DistilBertPreTrainedModel +): + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "question_answering", + "multiple_choice", + "dependency_parsing", + "masked_lm", + "causal_lm", + ] + + def __init__(self, config): + super().__init__(config) + self.distilbert = DistilBertModel(config) + init(self.distilbert) + + self._init_head_modules() + + self.init_weights() + + def get_position_embeddings(self) -> nn.Embedding: + """ + Returns the position embeddings + """ + return self.distilbert.get_position_embeddings() + + def resize_position_embeddings(self, new_num_position_embeddings: int): + """ + Resizes position embeddings of the model if :obj:`new_num_position_embeddings != + config.max_position_embeddings`. + + Arguments: + new_num_position_embeddings (:obj:`int`): + The number of new position embedding matrix. If position embeddings are learned, increasing the size + will add newly initialized vectors at the end, whereas reducing the size will remove vectors from the + end. If position embeddings are not learned (*e.g.* sinusoidal position embeddings), increasing the + size will add correct vectors at the end following the position encoding algorithm, whereas reducing + the size will remove vectors from the end. + """ + self.distilbert.resize_position_embeddings(new_num_position_embeddings) + + @add_start_docstrings_to_model_forward(DISTILBERT_INPUTS_DOCSTRING.format("batch_size, num_choices")) + def forward( + self, + input_ids=None, + attention_mask=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None + attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None + inputs_embeds = ( + inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) + if inputs_embeds is not None + else None + ) + + distilbert_output, context = self.distilbert( + input_ids=input_ids, + attention_mask=attention_mask, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + + outputs = self.forward_head( + distilbert_output, head_name=head, attention_mask=attention_mask, return_dict=return_dict, **kwargs + ) + + return outputs + + # Copied from RobertaForCausalLM + def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): + input_shape = input_ids.shape + # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly + if attention_mask is None: + attention_mask = input_ids.new_ones(input_shape) + + # cut decoder_input_ids if past is used + if past is not None: + input_ids = input_ids[:, -1:] + + return { + "input_ids": input_ids, + "attention_mask": attention_mask, + "past_key_values": past, + "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), + } diff --git a/adapters/src/adapters/models/distilbert/mixin_distilbert.py b/adapters/src/adapters/models/distilbert/mixin_distilbert.py new file mode 100644 index 00000000..3301cba9 --- /dev/null +++ b/adapters/src/adapters/models/distilbert/mixin_distilbert.py @@ -0,0 +1,53 @@ +from typing import Iterable, Tuple + +import torch.nn as nn + +from ...methods.bottleneck import BottleneckLayer +from ...methods.lora import LoRALinear +from ...methods.prefix_tuning import PrefixTuningLayer +from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin + + +class DistilBertMultiHeadSelfAttentionMixin: + """Adds adapters to the MultiHeadSelfAttention module of DistilBert.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.q_lin = LoRALinear.wrap(self.q_lin, "selfattn", model_config, adapters_config, attn_key="q") + self.k_lin = LoRALinear.wrap(self.k_lin, "selfattn", model_config, adapters_config, attn_key="k") + self.v_lin = LoRALinear.wrap(self.v_lin, "selfattn", model_config, adapters_config, attn_key="v") + + self.prefix_tuning = PrefixTuningLayer("self", model_config, adapters_config) + + +class DistilBertTransfomerBlockAdaptersMixin: + """Adds adapters to the TransformerBlock module of DistilBert.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.ffn.lin1 = LoRALinear.wrap(self.ffn.lin1, "intermediate", model_config, adapters_config) + self.ffn.lin2 = LoRALinear.wrap(self.ffn.lin2, "output", model_config, adapters_config) + + self.attention_adapters = BottleneckLayer("mh_adapter") + self.output_adapters = BottleneckLayer("output_adapter") + + +class DistilBertTransformerAdaptersMixin: + """Adds adapters to the Transformer module of DistilBert.""" + + def forward(self, *args, **kwargs): + if hasattr(self, "pre_forward_fn"): + kwargs["x"] = self.pre_forward_fn(self, kwargs["x"]) + return super().forward(*args, **kwargs) + + +class DistilBertModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): + """Adds adapters to the DistilBert module.""" + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + self.embeddings.register_forward_hook(self.post_embedding_forward) + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.transformer.layer): + yield i, layer diff --git a/adapters/src/adapters/models/distilbert/modeling_distilbert.py b/adapters/src/adapters/models/distilbert/modeling_distilbert.py new file mode 100644 index 00000000..cbd50194 --- /dev/null +++ b/adapters/src/adapters/models/distilbert/modeling_distilbert.py @@ -0,0 +1,154 @@ +# coding=utf-8 +# Copyright 2019-present, the HuggingFace Inc. team, The Google AI Language Team and Facebook, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" + PyTorch DistilBERT model adapted in part from Facebook, Inc XLM model (https://github.com/facebookresearch/XLM) and in + part from HuggingFace PyTorch version of Google AI Bert model (https://github.com/google-research/bert) +""" + + +import math +from typing import Optional, Tuple + +import torch +from torch import nn + +from transformers.models.distilbert.modeling_distilbert import MultiHeadSelfAttention, TransformerBlock + +from ...composition import adjust_tensors_for_parallel, adjust_tensors_for_parallel_, match_attn_matrices_for_parallel +from ...utils import prefix_attention_mask +from .mixin_distilbert import DistilBertMultiHeadSelfAttentionMixin, DistilBertTransfomerBlockAdaptersMixin + + +class MultiHeadSelfAttentionWithAdapters(DistilBertMultiHeadSelfAttentionMixin, MultiHeadSelfAttention): + def forward( + self, + query: torch.Tensor, + key: torch.Tensor, + value: torch.Tensor, + mask: torch.Tensor, + head_mask: Optional[torch.Tensor] = None, + output_attentions: bool = False, + ) -> Tuple[torch.Tensor, ...]: + """ + Parameters: + query: torch.tensor(bs, seq_length, dim) + key: torch.tensor(bs, seq_length, dim) + value: torch.tensor(bs, seq_length, dim) + mask: torch.tensor(bs, seq_length) + + Returns: + weights: torch.tensor(bs, n_heads, seq_length, seq_length) Attention weights context: torch.tensor(bs, + seq_length, dim) Contextualized layer. Optional: only if `output_attentions=True` + """ + bs, q_length, dim = query.size() + # assert dim == self.dim, f'Dimensions do not match: {dim} input vs {self.dim} configured' + # assert key.size() == value.size() + + dim_per_head = self.dim // self.n_heads + + def shape(x: torch.Tensor) -> torch.Tensor: + """separate heads""" + return x.view(bs, -1, self.n_heads, dim_per_head).transpose(1, 2) + + def unshape(x: torch.Tensor) -> torch.Tensor: + """group heads""" + return x.transpose(1, 2).contiguous().view(bs, -1, self.n_heads * dim_per_head) + + q = shape(self.q_lin(query)) # (bs, n_heads, q_length, dim_per_head) + k = shape(self.k_lin(key)) # (bs, n_heads, k_length, dim_per_head) + v = shape(self.v_lin(value)) # (bs, n_heads, k_length, dim_per_head) + + q, k, v = match_attn_matrices_for_parallel(q, k, v) + (mask,) = adjust_tensors_for_parallel(q, mask) + + k, v, mask = self.prefix_tuning(k, v, value, mask, invert_mask=False) + bs = k.size(0) # reset for Parallel block + (q,) = adjust_tensors_for_parallel(k, q) + + mask_reshp = (bs, 1, 1, k.size(2)) + + q = q / math.sqrt(dim_per_head) # (bs, n_heads, q_length, dim_per_head) + scores = torch.matmul(q, k.transpose(2, 3)) # (bs, n_heads, q_length, k_length) + mask = (mask == 0).view(mask_reshp).expand_as(scores) # (bs, n_heads, q_length, k_length) + scores = scores.masked_fill( + mask, torch.tensor(torch.finfo(scores.dtype).min) + ) # (bs, n_heads, q_length, k_length) + + weights = nn.functional.softmax(scores, dim=-1) # (bs, n_heads, q_length, k_length) + weights = self.dropout(weights) # (bs, n_heads, q_length, k_length) + + # Mask heads if we want to + if head_mask is not None: + weights = weights * head_mask + + context = torch.matmul(weights, v) # (bs, n_heads, q_length, dim_per_head) + context = unshape(context) # (bs, q_length, dim) + context = self.out_lin(context) # (bs, q_length, dim) + + if output_attentions: + return (context, weights) + else: + return (context,) + + +class TransformerBlockWithAdapters(DistilBertTransfomerBlockAdaptersMixin, TransformerBlock): + def forward( + self, + x: torch.Tensor, + attn_mask: Optional[torch.Tensor] = None, + head_mask: Optional[torch.Tensor] = None, + output_attentions: bool = False, + ) -> Tuple[torch.Tensor, ...]: + """ + Parameters: + x: torch.tensor(bs, seq_length, dim) + attn_mask: torch.tensor(bs, seq_length) + + Returns: + sa_weights: torch.tensor(bs, n_heads, seq_length, seq_length) The attention weights ffn_output: + torch.tensor(bs, seq_length, dim) The output of the transformer block contextualization. + """ + adjust_tensors_for_parallel_(x, attn_mask) + attn_mask = prefix_attention_mask(attn_mask, dim=1, prefix_value=1) # type: ignore + + # Self-Attention + sa_output = self.attention( + query=x, + key=x, + value=x, + mask=attn_mask, + head_mask=head_mask, + output_attentions=output_attentions, + ) + if output_attentions: + sa_output, sa_weights = sa_output # (bs, seq_length, dim), (bs, n_heads, seq_length, seq_length) + else: # To handle these `output_attentions` or `output_hidden_states` cases returning tuples + if type(sa_output) is not tuple: + raise TypeError(f"sa_output must be a tuple but it is {type(sa_output)} type") + + sa_output = sa_output[0] + sa_output = self.attention_adapters(sa_output, x, self.sa_layer_norm) # (bs, seq_length, dim) + + # Feed Forward Network + ffn_output = self.ffn(sa_output) # (bs, seq_length, dim) + ffn_output: torch.Tensor = self.output_adapters( + ffn_output, sa_output, self.output_layer_norm + ) # (bs, seq_length, dim) + + output = (ffn_output,) + if output_attentions: + output = (sa_weights,) + output + return output diff --git a/adapters/src/adapters/models/electra/__init__.py b/adapters/src/adapters/models/electra/__init__.py new file mode 100644 index 00000000..bbf0bdbc --- /dev/null +++ b/adapters/src/adapters/models/electra/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["ElectraAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import ElectraAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/electra/adapter_model.py b/adapters/src/adapters/models/electra/adapter_model.py new file mode 100644 index 00000000..dbccce40 --- /dev/null +++ b/adapters/src/adapters/models/electra/adapter_model.py @@ -0,0 +1,120 @@ +from transformers.models.electra.modeling_electra import ( + ELECTRA_INPUTS_DOCSTRING, + ELECTRA_START_DOCSTRING, + ElectraModel, + ElectraPreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + """Electra Model transformer with the option to add multiple flexible heads on top.""", + ELECTRA_START_DOCSTRING, +) +class ElectraAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, ElectraPreTrainedModel): + + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "question_answering", + "multiple_choice", + "dependency_parsing", + "masked_lm", + "causal_lm", + ] + + def __init__(self, config): + super().__init__(config) + + self.electra = ElectraModel(config) + init(self.electra) + + self._init_head_modules() + + self.init_weights() + + @add_start_docstrings_to_model_forward(ELECTRA_INPUTS_DOCSTRING.format("batch_size, sequence_length")) + def forward( + self, + input_ids=None, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None + attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None + token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None + position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None + inputs_embeds = ( + inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) + if inputs_embeds is not None + else None + ) + + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.electra( + input_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + + head_inputs = outputs + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + head_inputs, + head_name=head, + attention_mask=attention_mask, + return_dict=return_dict, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs + + # Copied from BertLMHeadModel + def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): + input_shape = input_ids.shape + # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly + if attention_mask is None: + attention_mask = input_ids.new_ones(input_shape) + + # cut decoder_input_ids if past is used + if past is not None: + input_ids = input_ids[:, -1:] + + return { + "input_ids": input_ids, + "attention_mask": attention_mask, + "past_key_values": past, + "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), + } diff --git a/adapters/src/adapters/models/electra/modeling_electra.py b/adapters/src/adapters/models/electra/modeling_electra.py new file mode 100644 index 00000000..53b5ed29 --- /dev/null +++ b/adapters/src/adapters/models/electra/modeling_electra.py @@ -0,0 +1,139 @@ +import math +from typing import Optional, Tuple + +import torch +from torch import nn + +from transformers.models.electra.modeling_electra import ElectraOutput, ElectraSelfAttention, ElectraSelfOutput + +from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from ...utils import prefix_attention_mask +from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin + + +class ElectraSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, ElectraSelfAttention): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.FloatTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + encoder_hidden_states: Optional[torch.FloatTensor] = None, + encoder_attention_mask: Optional[torch.FloatTensor] = None, + past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, + output_attentions: Optional[bool] = False, + ) -> Tuple[torch.Tensor]: + attention_mask = prefix_attention_mask(attention_mask) # type: ignore + + mixed_query_layer = self.query(hidden_states) + + # If this is instantiated as a cross-attention module, the keys + # and values come from an encoder; the attention mask needs to be + # such that the encoder's padding tokens are not attended to. + is_cross_attention = encoder_hidden_states is not None + + if is_cross_attention and past_key_value is not None: + # reuse k,v, cross_attentions + key_layer = past_key_value[0] + value_layer = past_key_value[1] + attention_mask = encoder_attention_mask + elif is_cross_attention: + key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) + value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) + attention_mask = encoder_attention_mask + elif past_key_value is not None: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + key_layer = torch.cat([past_key_value[0], key_layer], dim=2) + value_layer = torch.cat([past_key_value[1], value_layer], dim=2) + else: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + + query_layer = self.transpose_for_scores(mixed_query_layer) + query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) + (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) + + use_cache = past_key_value is not None + if self.is_decoder: + # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. + # Further calls to cross_attention layer can then reuse all cross-attention + # key/value_states (first "if" case) + # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of + # all previous decoder key/value_states. Further calls to uni-directional self-attention + # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) + # if encoder bi-directional self-attention `past_key_value` is always `None` + past_key_value = (key_layer, value_layer) + + key_layer, value_layer, attention_mask = self.prefix_tuning( + key_layer, value_layer, hidden_states, attention_mask + ) + (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) + + if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": + query_length, key_length = query_layer.shape[2], key_layer.shape[2] + if use_cache: + position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( + -1, 1 + ) + else: + position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) + position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) + distance = position_ids_l - position_ids_r + + positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) + positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility + + if self.position_embedding_type == "relative_key": + relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores + elif self.position_embedding_type == "relative_key_query": + relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key + + attention_scores = attention_scores / math.sqrt(self.attention_head_size) + if attention_mask is not None: + # Apply the attention mask is (precomputed for all layers in BertModel forward() function) + attention_scores = attention_scores + attention_mask + + # Normalize the attention scores to probabilities. + attention_probs = nn.functional.softmax(attention_scores, dim=-1) + + # This is actually dropping out entire tokens to attend to, which might + # seem a bit unusual, but is taken from the original Transformer paper. + attention_probs = self.dropout(attention_probs) + + # Mask heads if we want to + if head_mask is not None: + attention_probs = attention_probs * head_mask + + context_layer = torch.matmul(attention_probs, value_layer) + + context_layer = context_layer.permute(0, 2, 1, 3).contiguous() + new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) + context_layer = context_layer.view(new_context_layer_shape) + + outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) + + if self.is_decoder: + outputs = outputs + (past_key_value,) + return outputs + + +class ElectraSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, ElectraSelfOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states + + +class ElectraOutputWithAdapters(BertOutputAdaptersMixin, ElectraOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states diff --git a/adapters/src/adapters/models/encoder_decoder/mixin_encoder_decoder.py b/adapters/src/adapters/models/encoder_decoder/mixin_encoder_decoder.py new file mode 100644 index 00000000..50257d15 --- /dev/null +++ b/adapters/src/adapters/models/encoder_decoder/mixin_encoder_decoder.py @@ -0,0 +1,69 @@ +from typing import Iterable, Tuple + +import torch.nn as nn + +import adapters + +from ...model_mixin import ( + EmbeddingAdaptersMixin, + InvertibleAdaptersMixin, + ModelAdaptersMixin, + ModelUsingSubmodelsAdaptersMixin, +) + + +class EncoderDecoderModelAdaptersMixin( + EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelUsingSubmodelsAdaptersMixin +): + """Adds adapters to the EncoderDecoderModel class.""" + + support_prompt_tuning = False + + def init_adapters(self, model_config, adapters_config): + if not isinstance(self.encoder, ModelAdaptersMixin) or not isinstance(self.decoder, ModelAdaptersMixin): + return + + # Before initializing adapters, forward adding invertible adapters to the encoder + self.add_invertible_adapter = self.encoder.base_model.add_invertible_adapter + + super().init_adapters(model_config, adapters_config, add_prefix_tuning_pool=False) + + # ensure that encoder and decoder use the same shared parameters + if hasattr(self.encoder, "set_shared_parameters"): + self.encoder.set_shared_parameters(self.shared_parameters) + if hasattr(self.decoder, "set_shared_parameters"): + self.decoder.set_shared_parameters(self.shared_parameters) + + # Relay all invertible adapter calls to encoder + self.invertible_adapters = self.encoder.base_model.invertible_adapters + self.get_invertible_adapter = self.encoder.base_model.get_invertible_adapter + self.enable_invertible_adapters = self.encoder.base_model.enable_invertible_adapters + self.invertible_adapters_forward = self.encoder.base_model.invertible_adapters_forward + + # Decoder should use invertible adapters of encoder + self.decoder.base_model.invertible_adapters = self.encoder.base_model.invertible_adapters + self.decoder.base_model.add_invertible_adapter = lambda *args: None + self.decoder.base_model.get_invertible_adapter = self.encoder.base_model.get_invertible_adapter + + # Patched invertible adapters forward for decoder: + # In the decoder, only the reverse pass in the LM head should be active. + # Decoder inputs should not be forwarded through the invertible adapter again in its embeddings module. + def decoder_invertible_adapters_forward(hidden_states, rev=False): + if rev: + return self.encoder.base_model.invertible_adapters_forward(hidden_states, rev=True) + else: + return hidden_states + + self.decoder.base_model.invertible_adapters_forward = decoder_invertible_adapters_forward + + def init_submodels(self): + adapters.init(self.encoder, self.adapters_config) + adapters.init(self.decoder, self.adapters_config) + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + # Can't count the layers globally, because then saving and loading pretrained models won't work + for i, layer in self.encoder.iter_layers(): + yield i, layer + + for i, layer in self.decoder.iter_layers(): + yield i, layer diff --git a/adapters/src/adapters/models/encoder_decoder/modeling_encoder_decoder.py b/adapters/src/adapters/models/encoder_decoder/modeling_encoder_decoder.py new file mode 100644 index 00000000..43178898 --- /dev/null +++ b/adapters/src/adapters/models/encoder_decoder/modeling_encoder_decoder.py @@ -0,0 +1,24 @@ +# coding=utf-8 +# Copyright 2018 The HuggingFace Inc. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" Classes to support Encoder-Decoder architectures""" + +from transformers.models.encoder_decoder.modeling_encoder_decoder import EncoderDecoderModel + +from .mixin_encoder_decoder import EncoderDecoderModelAdaptersMixin + + +# Although this class is empty, we cannot add the mixin via the MODEL_MIXIN_MAPPING, as this would result in a circular import. +class EncoderDecoderModelWithAdapters(EncoderDecoderModelAdaptersMixin, EncoderDecoderModel): + pass diff --git a/adapters/src/adapters/models/gpt2/__init__.py b/adapters/src/adapters/models/gpt2/__init__.py new file mode 100644 index 00000000..dcd6009f --- /dev/null +++ b/adapters/src/adapters/models/gpt2/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["GPT2AdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import GPT2AdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/gpt2/adapter_model.py b/adapters/src/adapters/models/gpt2/adapter_model.py new file mode 100644 index 00000000..c15e5c99 --- /dev/null +++ b/adapters/src/adapters/models/gpt2/adapter_model.py @@ -0,0 +1,153 @@ +import logging + +import torch + +from transformers.models.gpt2.modeling_gpt2 import GPT2_START_DOCSTRING, GPT2Model, GPT2PreTrainedModel +from transformers.utils import add_start_docstrings + +from ...composition import adjust_tensors_for_parallel +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +logger = logging.getLogger(__name__) + + +@add_start_docstrings( + """ +The GPT2 Model that allows the loading of different heads dor different tasks. This enables a flexible use of the +models and adpters. Since this class does classification on the last token, it requires to know the position of the +last token. If a :obj:`pad_token_id` is defined in the configuration, it finds the last token that is not a padding +token in each row. If no :obj:`pad_token_id` is defined, it simply takes the last value in each row of the batch. Since +it cannot guess the padding tokens when :obj:`inputs_embeds` are passed instead of :obj:`input_ids`, it does the same +(take the last value in each row of the batch). +""", + GPT2_START_DOCSTRING, +) +class GPT2AdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, GPT2PreTrainedModel): + _tied_weights_keys = [] # needs to be empty since GPT2 does not yet support prompt tuning + + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "question_answering", + "causal_lm", + ] + + def __init__(self, config): + super().__init__(config) + self.transformer = GPT2Model(config) + init(self.transformer) + + self._init_head_modules() + + self.init_weights() + + # Model parallel + self.model_parallel = False + self.device_map = None + + def forward( + self, + input_ids=None, + past_key_values=None, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + encoder_hidden_states=None, + encoder_attention_mask=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.transformer( + input_ids, + past_key_values=past_key_values, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + encoder_hidden_states=encoder_hidden_states, + encoder_attention_mask=encoder_attention_mask, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + + batch_size = outputs[0].shape[0] + + if self.config.pad_token_id is None: + # TODO-AH: this may result in unexpected behavior for classification. Find a better way to do this? + sequence_lengths = -1 + else: + if input_ids is not None: + sequence_lengths = torch.ne(input_ids, self.config.pad_token_id).sum(-1) - 1 + (sequence_lengths,) = adjust_tensors_for_parallel(outputs[0], sequence_lengths) + else: + sequence_lengths = -1 + logger.warning( + f"{self.__class__.__name__} will not detect padding tokens in `inputs_embeds`. Results may be " + "unexpected if using padding tokens in conjunction with `inputs_embeds.`" + ) + + cls_logits = outputs[0][range(batch_size), sequence_lengths] + + outputs = self.forward_head( + outputs, + head_name=head, + cls_output=cls_logits, + attention_mask=attention_mask, + return_dict=return_dict, + **kwargs, + ) + + return outputs + + # Copied from GPT2LMHeadModel + def prepare_inputs_for_generation(self, input_ids, past=None, **kwargs): + token_type_ids = kwargs.get("token_type_ids", None) + # only last token for inputs_ids if past is defined in kwargs + if past: + input_ids = input_ids[:, -1].unsqueeze(-1) + if token_type_ids is not None: + token_type_ids = token_type_ids[:, -1].unsqueeze(-1) + + attention_mask = kwargs.get("attention_mask", None) + position_ids = kwargs.get("position_ids", None) + + if attention_mask is not None and position_ids is None: + # create position_ids on the fly for batch generation + position_ids = attention_mask.long().cumsum(-1) - 1 + position_ids.masked_fill_(attention_mask == 0, 1) + if past: + position_ids = position_ids[:, -1].unsqueeze(-1) + else: + position_ids = None + return { + "input_ids": input_ids, + "past_key_values": past, + "use_cache": kwargs.get("use_cache"), + "position_ids": position_ids, + "attention_mask": attention_mask, + "token_type_ids": token_type_ids, + "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), + } diff --git a/adapters/src/adapters/models/gpt2/mixin_gpt2.py b/adapters/src/adapters/models/gpt2/mixin_gpt2.py new file mode 100644 index 00000000..bd142eb4 --- /dev/null +++ b/adapters/src/adapters/models/gpt2/mixin_gpt2.py @@ -0,0 +1,72 @@ +from typing import Iterable, Tuple + +import torch.nn as nn + +from ...methods.bottleneck import BottleneckLayer +from ...methods.lora import LoRALinear, LoRAMergedLinear +from ...methods.prefix_tuning import PrefixTuningLayer +from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin + + +class GPT2AttentionAdaptersMixin: + """Adds adapters to the Attention module of GPT2.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + if not self.is_cross_attention: + self.c_attn = LoRAMergedLinear.wrap( + self.c_attn, + "selfattn", + model_config, + adapters_config, + fan_in_fan_out=True, + no_init_bias=True, + ) + + location_key = "cross_prefix" if self.is_cross_attention else "self_prefix" + self.prefix_tuning = PrefixTuningLayer(location_key, model_config, adapters_config) + + +class GPT2DecoderBlockAdaptersMixin: + """Adds adapters to the TransformerBlock module of DistilBert.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.mlp.c_fc = LoRALinear.wrap( + self.mlp.c_fc, + "intermediate", + model_config, + adapters_config, + fan_in_fan_out=True, + no_init_bias=True, + ) + self.mlp.c_proj = LoRALinear.wrap( + self.mlp.c_proj, + "output", + model_config, + adapters_config, + fan_in_fan_out=True, + no_init_bias=True, + ) + + self.attention_adapters = BottleneckLayer("mh_adapter") + self.output_adapters = BottleneckLayer("output_adapter") + + +class GPT2ModelAdapterMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): + support_prompt_tuning = False + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + + # Register hook for post embedding forward + self.drop.register_forward_hook(self.post_embedding_forward) + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.base_model.h): + yield i, layer + + def post_embedding_forward(self, module, args, embedding_output): + embedding_output = self.invertible_adapters_forward(embedding_output) + # Prompt tuning not yet supported + return embedding_output diff --git a/adapters/src/adapters/models/gpt2/modeling_gpt2.py b/adapters/src/adapters/models/gpt2/modeling_gpt2.py new file mode 100644 index 00000000..1c571c23 --- /dev/null +++ b/adapters/src/adapters/models/gpt2/modeling_gpt2.py @@ -0,0 +1,147 @@ +# coding=utf-8 +# Copyright 2018 The OpenAI Team Authors and HuggingFace Inc. team. +# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""PyTorch OpenAI GPT-2 model.""" + +from typing import Optional, Tuple, Union + +import torch +import torch.utils.checkpoint + +from transformers.models.gpt2.modeling_gpt2 import GPT2Attention, GPT2Block + +from ...composition import adjust_tensors_for_parallel, adjust_tensors_for_parallel_ +from .mixin_gpt2 import GPT2AttentionAdaptersMixin, GPT2DecoderBlockAdaptersMixin + + +class GPT2AttentionWithAdapters(GPT2AttentionAdaptersMixin, GPT2Attention): + def forward( + self, + hidden_states: Optional[Tuple[torch.FloatTensor]], + layer_past: Optional[Tuple[torch.Tensor]] = None, + attention_mask: Optional[torch.FloatTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + encoder_hidden_states: Optional[torch.Tensor] = None, + encoder_attention_mask: Optional[torch.FloatTensor] = None, + use_cache: Optional[bool] = False, + output_attentions: Optional[bool] = False, + ) -> Tuple[Union[torch.Tensor, Tuple[torch.Tensor]], ...]: + if encoder_hidden_states is not None: + if not hasattr(self, "q_attn"): + raise ValueError( + "If class is used as cross attention, the weights `q_attn` have to be defined. " + "Please make sure to instantiate class with `GPT2Attention(..., is_cross_attention=True)`." + ) + + query = self.q_attn(hidden_states) + key, value = self.c_attn(encoder_hidden_states).split(self.split_size, dim=2) + attention_mask = encoder_attention_mask + else: + query, key, value = self.c_attn(hidden_states).split(self.split_size, dim=2) + + query = self._split_heads(query, self.num_heads, self.head_dim) + key = self._split_heads(key, self.num_heads, self.head_dim) + value = self._split_heads(value, self.num_heads, self.head_dim) + + if layer_past is not None: + past_key, past_value = layer_past + key = torch.cat((past_key, key), dim=-2) + value = torch.cat((past_value, value), dim=-2) + + if use_cache is True: + present = (key, value) + else: + present = None + + key, value, attention_mask = self.prefix_tuning(key, value, hidden_states, attention_mask) + (query,) = adjust_tensors_for_parallel(key, query) + + if self.reorder_and_upcast_attn: + attn_output, attn_weights = self._upcast_and_reordered_attn(query, key, value, attention_mask, head_mask) + else: + attn_output, attn_weights = self._attn(query, key, value, attention_mask, head_mask) + + attn_output = self._merge_heads(attn_output, self.num_heads, self.head_dim) + attn_output = self.c_proj(attn_output) + attn_output = self.resid_dropout(attn_output) + + outputs = (attn_output, present) + if output_attentions: + outputs += (attn_weights,) + + return outputs # a, present, (attentions) + + +class GPT2BlockWithAdapters(GPT2DecoderBlockAdaptersMixin, GPT2Block): + def forward( + self, + hidden_states: Optional[Tuple[torch.FloatTensor]], + layer_past: Optional[Tuple[torch.Tensor]] = None, + attention_mask: Optional[torch.FloatTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + encoder_hidden_states: Optional[torch.Tensor] = None, + encoder_attention_mask: Optional[torch.FloatTensor] = None, + use_cache: Optional[bool] = False, + output_attentions: Optional[bool] = False, + ) -> Union[Tuple[torch.Tensor], Optional[Tuple[torch.Tensor, Tuple[torch.FloatTensor, ...]]]]: + adjust_tensors_for_parallel_(hidden_states, attention_mask) + residual = hidden_states + hidden_states = self.ln_1(hidden_states) + attn_outputs = self.attn( + hidden_states, + layer_past=layer_past, + attention_mask=attention_mask, + head_mask=head_mask, + use_cache=use_cache, + output_attentions=output_attentions, + ) + attn_output = attn_outputs[0] # output_attn: a, present, (attentions) + outputs = attn_outputs[1:] + hidden_states = self.attention_adapters(attn_output, residual, None) + + if encoder_hidden_states is not None: + # add one self-attention block for cross-attention + if not hasattr(self, "crossattention"): + raise ValueError( + f"If `encoder_hidden_states` are passed, {self} has to be instantiated with " + "cross-attention layers by setting `config.add_cross_attention=True`" + ) + residual = hidden_states + hidden_states = self.ln_cross_attn(hidden_states) + cross_attn_outputs = self.crossattention( + hidden_states, + attention_mask=attention_mask, + head_mask=head_mask, + encoder_hidden_states=encoder_hidden_states, + encoder_attention_mask=encoder_attention_mask, + output_attentions=output_attentions, + ) + attn_output = cross_attn_outputs[0] + # residual connection + hidden_states = residual + attn_output + outputs = outputs + cross_attn_outputs[2:] # add cross attentions if we output attention weights + + residual = hidden_states + hidden_states = self.ln_2(hidden_states) + feed_forward_hidden_states = self.mlp(hidden_states) + # residual connection + hidden_states = self.output_adapters(feed_forward_hidden_states, residual, None) + + if use_cache: + outputs = (hidden_states,) + outputs + else: + outputs = (hidden_states,) + outputs[1:] + + return outputs # hidden_states, present, (attentions, cross_attentions) diff --git a/adapters/src/adapters/models/gptj/__init__.py b/adapters/src/adapters/models/gptj/__init__.py new file mode 100644 index 00000000..381342bd --- /dev/null +++ b/adapters/src/adapters/models/gptj/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["GPTJAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import GPTJAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/gptj/adapter_model.py b/adapters/src/adapters/models/gptj/adapter_model.py new file mode 100644 index 00000000..3c585ba2 --- /dev/null +++ b/adapters/src/adapters/models/gptj/adapter_model.py @@ -0,0 +1,149 @@ +import logging + +import torch + +from transformers.models.gptj.modeling_gptj import GPTJ_START_DOCSTRING, GPTJModel, GPTJPreTrainedModel +from transformers.utils import add_start_docstrings + +from ...composition import adjust_tensors_for_parallel +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +logger = logging.getLogger(__name__) + + +@add_start_docstrings( + """ +The GPTJ Model that allows the loading of different heads for different tasks. This enables a flexible use of the +models and adapters. Since this class does classification on the last token, it requires to know the position of the +last token. If a :obj:`pad_token_id` is defined in the configuration, it finds the last token that is not a padding +token in each row. If no :obj:`pad_token_id` is defined, it simply takes the last value in each row of the batch. Since +it cannot guess the padding tokens when :obj:`inputs_embeds` are passed instead of :obj:`input_ids`, it does the same +(take the last value in each row of the batch). +""", + GPTJ_START_DOCSTRING, +) +class GPTJAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, GPTJPreTrainedModel): + _tied_weights_keys = [] # needs to be empty since GPT-J does not yet support prompt tuning + + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "question_answering", + "causal_lm", + ] + + def __init__(self, config): + super().__init__(config) + self.transformer = GPTJModel(config) + init(self.transformer) + + self._init_head_modules() + + self.init_weights() + + # Model parallel + self.model_parallel = False + self.device_map = None + + def forward( + self, + input_ids=None, + past_key_values=None, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.transformer( + input_ids, + past_key_values=past_key_values, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + + batch_size = outputs[0].shape[0] + + if self.config.pad_token_id is None: + # TODO-AH: this may result in unexpected behavior for classification. Find a better way to do this? + sequence_lengths = -1 + else: + if input_ids is not None: + sequence_lengths = torch.ne(input_ids, self.config.pad_token_id).sum(-1) - 1 + (sequence_lengths,) = adjust_tensors_for_parallel(outputs[0], sequence_lengths) + else: + sequence_lengths = -1 + logger.warning( + f"{self.__class__.__name__} will not detect padding tokens in `inputs_embeds`. Results may be " + "unexpected if using padding tokens in conjunction with `inputs_embeds.`" + ) + + cls_logits = outputs[0][range(batch_size), sequence_lengths] + + outputs = self.forward_head( + outputs, + head_name=head, + cls_output=cls_logits, + attention_mask=attention_mask, + return_dict=return_dict, + **kwargs, + ) + + return outputs + + # Copied from GPTJForCausalLM + def prepare_inputs_for_generation(self, input_ids, past=None, **kwargs): + token_type_ids = kwargs.get("token_type_ids", None) + # only last token for inputs_ids if past is defined in kwargs + if past: + input_ids = input_ids[:, -1].unsqueeze(-1) + if token_type_ids is not None: + token_type_ids = token_type_ids[:, -1].unsqueeze(-1) + + attention_mask = kwargs.get("attention_mask", None) + position_ids = kwargs.get("position_ids", None) + + if attention_mask is not None and position_ids is None: + # create position_ids on the fly for batch generation + position_ids = attention_mask.long().cumsum(-1) - 1 + position_ids.masked_fill_(attention_mask == 0, 1) + if past: + position_ids = position_ids[:, -1].unsqueeze(-1) + else: + position_ids = None + return { + "input_ids": input_ids, + "past_key_values": past, + "use_cache": kwargs.get("use_cache"), + "position_ids": position_ids, + "attention_mask": attention_mask, + "token_type_ids": token_type_ids, + "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), + } diff --git a/adapters/src/adapters/models/gptj/mixin_gptj.py b/adapters/src/adapters/models/gptj/mixin_gptj.py new file mode 100644 index 00000000..cc20e63c --- /dev/null +++ b/adapters/src/adapters/models/gptj/mixin_gptj.py @@ -0,0 +1,56 @@ +from typing import Iterable, Tuple + +import torch.nn as nn + +from ...methods.bottleneck import BottleneckLayer +from ...methods.lora import LoRALinear +from ...methods.prefix_tuning import PrefixTuningLayer +from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin + + +class GPTJAttentionAdaptersMixin: + def init_adapters(self, model_config, adapters_config): + self.location_key = "self" + + # Wrap layers for LoRA + self.q_proj = LoRALinear.wrap(self.q_proj, "selfattn", model_config, adapters_config, attn_key="q") + self.k_proj = LoRALinear.wrap(self.k_proj, "selfattn", model_config, adapters_config, attn_key="k") + self.v_proj = LoRALinear.wrap(self.v_proj, "selfattn", model_config, adapters_config, attn_key="v") + + self.prefix_tuning = PrefixTuningLayer( + self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config + ) + + +class GPTJMLPAdaptersMixin: + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.fc_in = LoRALinear.wrap(self.fc_in, "intermediate", model_config, adapters_config) + self.fc_out = LoRALinear.wrap(self.fc_out, "output", model_config, adapters_config) + + +class GPTJDecoderBlockAdaptersMixin: + """Adds adapters to the TransformerBlock module of GPTJ.""" + + def init_adapters(self, model_config, adapters_config): + self.attention_adapters = BottleneckLayer("mh_adapter") + self.output_adapters = BottleneckLayer("output_adapter") + + +class GPTJModelAdapterMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): + support_prompt_tuning = False + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + + # Register hook for post embedding forward + self.drop.register_forward_hook(self.post_embedding_forward) + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.base_model.h): + yield i, layer + + def post_embedding_forward(self, module, args, embedding_output): + embedding_output = self.invertible_adapters_forward(embedding_output) + # Prompt tuning not yet supported + return embedding_output diff --git a/adapters/src/adapters/models/gptj/modeling_gptj.py b/adapters/src/adapters/models/gptj/modeling_gptj.py new file mode 100644 index 00000000..700e919a --- /dev/null +++ b/adapters/src/adapters/models/gptj/modeling_gptj.py @@ -0,0 +1,149 @@ +# coding=utf-8 +# Copyright 2021 The EleutherAI and HuggingFace Teams. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch GPT-J model.""" + +from typing import Optional, Tuple, Union + +import torch +import torch.utils.checkpoint + +from transformers.models.gptj.modeling_gptj import GPTJAttention, GPTJBlock, apply_rotary_pos_emb, get_embed_positions +from transformers.utils.import_utils import is_torch_fx_proxy + +from ...composition import adjust_tensors_for_parallel, adjust_tensors_for_parallel_, match_attn_matrices_for_parallel +from .mixin_gptj import GPTJAttentionAdaptersMixin, GPTJDecoderBlockAdaptersMixin + + +class GPTJAttentionWithAdapters(GPTJAttentionAdaptersMixin, GPTJAttention): + def forward( + self, + hidden_states: torch.FloatTensor, + layer_past: Optional[Tuple[torch.Tensor]] = None, + attention_mask: Optional[torch.FloatTensor] = None, + position_ids: Optional[torch.LongTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + use_cache: Optional[bool] = False, + output_attentions: Optional[bool] = False, + ) -> Union[ + Tuple[torch.Tensor, Tuple[torch.Tensor]], + Optional[Tuple[torch.Tensor, Tuple[torch.Tensor], Tuple[torch.Tensor, ...]]], + ]: + query = self.q_proj(hidden_states) + key = self.k_proj(hidden_states) + value = self.v_proj(hidden_states) + + query, key, value = match_attn_matrices_for_parallel(query, key, value) + (attention_mask,) = adjust_tensors_for_parallel(query, attention_mask) + + query = self._split_heads(query, self.num_attention_heads, self.head_dim, True) + key = self._split_heads(key, self.num_attention_heads, self.head_dim, True) + value = self._split_heads(value, self.num_attention_heads, self.head_dim, False) + + if is_torch_fx_proxy(position_ids) or torch.jit.is_tracing(): + # The logic to conditionally copy to GPU could not be traced, so we do this + # every time in the torch.fx case + embed_positions = get_embed_positions(self.embed_positions, position_ids) + else: + embed_positions = self._get_embed_positions(position_ids) + + repeated_position_ids = position_ids.unsqueeze(-1).repeat(1, 1, embed_positions.shape[-1]) + sincos = torch.gather(embed_positions, 1, repeated_position_ids) + sin, cos = torch.split(sincos, sincos.shape[-1] // 2, dim=-1) + + if self.rotary_dim is not None: + k_rot = key[:, :, :, : self.rotary_dim] + k_pass = key[:, :, :, self.rotary_dim :] + + q_rot = query[:, :, :, : self.rotary_dim] + q_pass = query[:, :, :, self.rotary_dim :] + + k_rot = apply_rotary_pos_emb(k_rot, sin, cos) + q_rot = apply_rotary_pos_emb(q_rot, sin, cos) + + key = torch.cat([k_rot, k_pass], dim=-1) + query = torch.cat([q_rot, q_pass], dim=-1) + else: + key = apply_rotary_pos_emb(key, sin, cos) + query = apply_rotary_pos_emb(query, sin, cos) + + key = key.permute(0, 2, 1, 3) + query = query.permute(0, 2, 1, 3) + + if layer_past is not None: + past_key = layer_past[0] + past_value = layer_past[1] + key = torch.cat((past_key, key), dim=-2) + value = torch.cat((past_value, value), dim=-2) + + if use_cache is True: + present = (key, value) + else: + present = None + + key, value, attention_mask = self.prefix_tuning(key, value, hidden_states, attention_mask) + (query,) = adjust_tensors_for_parallel(key, query) + + # compute self-attention: V x Softmax(QK^T) + attn_output, attn_weights = self._attn(query, key, value, attention_mask, head_mask) + + attn_output = self._merge_heads(attn_output, self.num_attention_heads, self.head_dim) + attn_output = self.out_proj(attn_output) + attn_output = self.resid_dropout(attn_output) + + outputs = (attn_output, present) + if output_attentions: + outputs += (attn_weights,) + + return outputs # a, present, (attentions) + + +class GPTJBlockWithAdapters(GPTJDecoderBlockAdaptersMixin, GPTJBlock): + def forward( + self, + hidden_states: Optional[torch.FloatTensor], + layer_past: Optional[Tuple[torch.Tensor]] = None, + attention_mask: Optional[torch.FloatTensor] = None, + position_ids: Optional[torch.LongTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + use_cache: Optional[bool] = False, + output_attentions: Optional[bool] = False, + ) -> Union[Tuple[torch.Tensor], Optional[Tuple[torch.Tensor, Tuple[torch.FloatTensor, ...]]]]: + adjust_tensors_for_parallel_(hidden_states, attention_mask) + residual = hidden_states + hidden_states = self.ln_1(hidden_states) + attn_outputs = self.attn( + hidden_states, + layer_past=layer_past, + attention_mask=attention_mask, + position_ids=position_ids, + head_mask=head_mask, + use_cache=use_cache, + output_attentions=output_attentions, + ) + attn_output = attn_outputs[0] # output_attn: a, present, (attentions) + outputs = attn_outputs[1:] + + feed_forward_hidden_states = self.mlp(hidden_states) + # See https://github.com/adapter-hub/adapters/pull/426#discussion_r994450898 + hidden_states = self.attention_adapters(attn_output, residual, None) + + hidden_states = self.output_adapters(feed_forward_hidden_states, hidden_states, None) + + if use_cache: + outputs = (hidden_states,) + outputs + else: + outputs = (hidden_states,) + outputs[1:] + + return outputs # hidden_states, present, (attentions) diff --git a/adapters/src/adapters/models/llama/__init__.py b/adapters/src/adapters/models/llama/__init__.py new file mode 100644 index 00000000..884b3715 --- /dev/null +++ b/adapters/src/adapters/models/llama/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["LlamaAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import LlamaAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/llama/adapter_model.py b/adapters/src/adapters/models/llama/adapter_model.py new file mode 100644 index 00000000..97cc0c4e --- /dev/null +++ b/adapters/src/adapters/models/llama/adapter_model.py @@ -0,0 +1,151 @@ +import logging + +import torch + +from transformers.models.llama.modeling_llama import LLAMA_START_DOCSTRING, LlamaModel, LlamaPreTrainedModel +from transformers.utils import add_start_docstrings + +from ...composition import adjust_tensors_for_parallel +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +logger = logging.getLogger(__name__) + + +@add_start_docstrings( + """ +The Llama Model that allows the loading of different heads dor different tasks. This enables a flexible use of the +models and adpters. Since this class does classification on the last token, it requires to know the position of the +last token. If a :obj:`pad_token_id` is defined in the configuration, it finds the last token that is not a padding +token in each row. If no :obj:`pad_token_id` is defined, it simply takes the last value in each row of the batch. Since +it cannot guess the padding tokens when :obj:`inputs_embeds` are passed instead of :obj:`input_ids`, it does the same +(take the last value in each row of the batch). +""", + LLAMA_START_DOCSTRING, +) +class LlamaAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, LlamaPreTrainedModel): + _tied_weights_keys = [] # needs to be empty since LLaMA does not yet support prompt tuning + + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "question_answering", + "causal_lm", + ] + + def __init__(self, config): + super().__init__(config) + self.model = LlamaModel(config) + init(self.model) + + self._init_head_modules() + + self.init_weights() + + # Model parallel + self.model_parallel = False + self.device_map = None + self.post_init() + + def forward( + self, + input_ids=None, + attention_mask=None, + position_ids=None, + past_key_values=None, + inputs_embeds=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions + output_hidden_states = ( + output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states + ) + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.model( + input_ids, + past_key_values=past_key_values, + attention_mask=attention_mask, + position_ids=position_ids, + inputs_embeds=inputs_embeds, + use_cache=use_cache, + output_attentions=output_attentions, + return_dict=return_dict, + output_hidden_states=output_hidden_states, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + + batch_size = outputs[0].shape[0] + + if self.config.pad_token_id is None: + # TODO-AH: this may result in unexpected behavior for classification. Find a better way to do this? + sequence_lengths = -1 + else: + if input_ids is not None: + sequence_lengths = torch.ne(input_ids, self.config.pad_token_id).sum(-1) - 1 + (sequence_lengths,) = adjust_tensors_for_parallel(outputs[0], sequence_lengths) + else: + sequence_lengths = -1 + logger.warning( + f"{self.__class__.__name__} will not detect padding tokens in `inputs_embeds`. Results may be " + "unexpected if using padding tokens in conjunction with `inputs_embeds.`" + ) + + cls_logits = outputs[0][range(batch_size), sequence_lengths] + + outputs = self.forward_head( + outputs, + head_name=head, + cls_output=cls_logits, + attention_mask=attention_mask, + return_dict=return_dict, + **kwargs, + ) + + return outputs + + def prepare_inputs_for_generation( + self, input_ids, past_key_values=None, attention_mask=None, inputs_embeds=None, **kwargs + ): + if past_key_values: + input_ids = input_ids[:, -1:] + + position_ids = kwargs.get("position_ids", None) + if attention_mask is not None and position_ids is None: + # create position_ids on the fly for batch generation + position_ids = attention_mask.long().cumsum(-1) - 1 + position_ids.masked_fill_(attention_mask == 0, 1) + if past_key_values: + position_ids = position_ids[:, -1].unsqueeze(-1) + + # if `inputs_embeds` are passed, we only want to use them in the 1st generation step + if inputs_embeds is not None and past_key_values is None: + model_inputs = {"inputs_embeds": inputs_embeds} + else: + model_inputs = {"input_ids": input_ids} + + model_inputs.update( + { + "position_ids": position_ids, + "past_key_values": past_key_values, + "use_cache": kwargs.get("use_cache"), + "attention_mask": attention_mask, + "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), + } + ) + return model_inputs diff --git a/adapters/src/adapters/models/llama/mixin_llama.py b/adapters/src/adapters/models/llama/mixin_llama.py new file mode 100644 index 00000000..aae33943 --- /dev/null +++ b/adapters/src/adapters/models/llama/mixin_llama.py @@ -0,0 +1,46 @@ +from typing import Iterable, Tuple + +import torch.nn as nn + +from ...methods.bottleneck import BottleneckLayer +from ...methods.lora import LoRALinear +from ...methods.prefix_tuning import PrefixTuningLayer +from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin + + +class LlamaAttentionMixin: + def init_adapters(self, model_config, adapters_config): + self.q_proj = LoRALinear.wrap(self.q_proj, "selfattn", model_config, adapters_config, attn_key="q") + self.k_proj = LoRALinear.wrap(self.k_proj, "selfattn", model_config, adapters_config, attn_key="k") + self.v_proj = LoRALinear.wrap(self.v_proj, "selfattn", model_config, adapters_config, attn_key="v") + + self.prefix_tuning = PrefixTuningLayer("self_prefix", model_config, adapters_config) + + +class LlamaDecoderLayerMixin: + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.mlp.down_proj = LoRALinear.wrap(self.mlp.down_proj, "intermediate", model_config, adapters_config) + self.mlp.up_proj = LoRALinear.wrap(self.mlp.up_proj, "output", model_config, adapters_config) + + self.attention_adapters = BottleneckLayer("mh_adapter") + self.output_adapters = BottleneckLayer("output_adapter") + + +class LlamaModelAdapterMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): + support_prompt_tuning = False + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + + # Register hook for post embedding forward + self.embed_tokens.register_forward_hook(self.post_embedding_forward) + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.layers): + yield i, layer + + def post_embedding_forward(self, module, args, embedding_output): + embedding_output = self.invertible_adapters_forward(embedding_output) + # Prompt tuning not yet supported + return embedding_output diff --git a/adapters/src/adapters/models/llama/modeling_llama.py b/adapters/src/adapters/models/llama/modeling_llama.py new file mode 100644 index 00000000..baefac75 --- /dev/null +++ b/adapters/src/adapters/models/llama/modeling_llama.py @@ -0,0 +1,425 @@ +# coding=utf-8 +# Copyright 2022 EleutherAI and the HuggingFace Inc. team. All rights reserved. +# +# This code is based on EleutherAI's GPT-NeoX library and the GPT-NeoX +# and OPT implementations in this library. It has been modified from its +# original forms to accommodate minor architectural differences compared +# to GPT-NeoX and OPT used by the Meta AI team that trained the model. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch LLaMA model.""" +import math +import warnings +from typing import Optional, Tuple + +import torch +import torch.nn.functional as F +import torch.utils.checkpoint +from torch import nn + +from adapters.composition import ( + adjust_tensors_for_parallel, + adjust_tensors_for_parallel_, + match_attn_matrices_for_parallel, +) +from transformers.cache_utils import Cache +from transformers.models.llama.modeling_llama import LlamaAttention, LlamaDecoderLayer, apply_rotary_pos_emb, repeat_kv +from transformers.utils import logging + +from .mixin_llama import LlamaAttentionMixin, LlamaDecoderLayerMixin + + +logger = logging.get_logger(__name__) + + +class LlamaAttentionWithAdapters(LlamaAttentionMixin, LlamaAttention): + """Multi-headed attention from 'Attention Is All You Need' paper""" + + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_value: Optional[Cache] = None, + output_attentions: bool = False, + use_cache: bool = False, + **kwargs, + ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: + if "padding_mask" in kwargs: + warnings.warn( + "Passing `padding_mask` is deprecated and will be removed in v4.37. Please make sure use" + " `attention_mask` instead.`" + ) + + bsz, q_len, _ = hidden_states.size() + + if self.config.pretraining_tp > 1: + key_value_slicing = (self.num_key_value_heads * self.head_dim) // self.config.pretraining_tp + query_slices = self.q_proj.weight.split( + (self.num_heads * self.head_dim) // self.config.pretraining_tp, dim=0 + ) + key_slices = self.k_proj.weight.split(key_value_slicing, dim=0) + value_slices = self.v_proj.weight.split(key_value_slicing, dim=0) + + query_states = [F.linear(hidden_states, query_slices[i]) for i in range(self.config.pretraining_tp)] + query_states = torch.cat(query_states, dim=-1) + + key_states = [F.linear(hidden_states, key_slices[i]) for i in range(self.config.pretraining_tp)] + key_states = torch.cat(key_states, dim=-1) + + value_states = [F.linear(hidden_states, value_slices[i]) for i in range(self.config.pretraining_tp)] + value_states = torch.cat(value_states, dim=-1) + + else: + query_states = self.q_proj(hidden_states) + key_states = self.k_proj(hidden_states) + value_states = self.v_proj(hidden_states) + + query_states = query_states.view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) + key_states = key_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) + value_states = value_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) + + query_states, key_states, value_states = match_attn_matrices_for_parallel( + query_states, key_states, value_states + ) + (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) + + kv_seq_len = key_states.shape[-2] + if past_key_value is not None: + if self.layer_idx is None: + raise ValueError( + "The cache structure has changed since version v4.36. If you are using" + f" {self.__class__.__name__} for auto-regressive decoding with k/v caching, please make sure to" + " initialize the attention class with a layer index." + ) + kv_seq_len += past_key_value.get_usable_length(kv_seq_len, self.layer_idx) + cos, sin = self.rotary_emb(value_states, seq_len=kv_seq_len) + query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, position_ids) + + if past_key_value is not None: + cache_kwargs = {"sin": sin, "cos": cos} # Specific to RoPE models + key_states, value_states = past_key_value.update(key_states, value_states, self.layer_idx, cache_kwargs) + + key_states = repeat_kv(key_states, self.num_key_value_groups) + value_states = repeat_kv(value_states, self.num_key_value_groups) + + key_states, value_states, attention_mask = self.prefix_tuning( + key_states, value_states, hidden_states, attention_mask + ) + (query_states,) = adjust_tensors_for_parallel(key_states, query_states) + + attn_weights = torch.matmul(query_states, key_states.transpose(2, 3)) / math.sqrt(self.head_dim) + + # Make adjustments since (parallel) prefix tuning changes the attention mask + kv_seq_len = key_states.shape[-2] + bsz = key_states.shape[0] + + if attn_weights.size() != (bsz, self.num_heads, q_len, kv_seq_len): + raise ValueError( + f"Attention weights should be of size {(bsz, self.num_heads, q_len, kv_seq_len)}, but is" + f" {attn_weights.size()}" + ) + + if attention_mask is not None: + if attention_mask.size() != (bsz, 1, q_len, kv_seq_len): + raise ValueError( + f"Attention mask should be of size {(bsz, 1, q_len, kv_seq_len)}, but is {attention_mask.size()}" + ) + attn_weights = attn_weights + attention_mask + + # upcast attention to fp32 + attn_weights = nn.functional.softmax(attn_weights, dim=-1, dtype=torch.float32).to(query_states.dtype) + attn_weights = nn.functional.dropout(attn_weights, p=self.attention_dropout, training=self.training) + attn_output = torch.matmul(attn_weights, value_states) + + if attn_output.size() != (bsz, self.num_heads, q_len, self.head_dim): + raise ValueError( + f"`attn_output` should be of size {(bsz, self.num_heads, q_len, self.head_dim)}, but is" + f" {attn_output.size()}" + ) + + attn_output = attn_output.transpose(1, 2).contiguous() + + attn_output = attn_output.reshape(bsz, q_len, self.hidden_size) + + if self.config.pretraining_tp > 1: + attn_output = attn_output.split(self.hidden_size // self.config.pretraining_tp, dim=2) + o_proj_slices = self.o_proj.weight.split(self.hidden_size // self.config.pretraining_tp, dim=1) + attn_output = sum([F.linear(attn_output[i], o_proj_slices[i]) for i in range(self.config.pretraining_tp)]) + else: + attn_output = self.o_proj(attn_output) + + if not output_attentions: + attn_weights = None + + return attn_output, attn_weights, past_key_value + + +class LlamaFlashAttention2WithAdapters(LlamaAttentionMixin, LlamaAttention): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.LongTensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_value: Optional[Cache] = None, + output_attentions: bool = False, + use_cache: bool = False, + **kwargs, + ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: + # LlamaFlashAttention2 attention does not support output_attentions + if "padding_mask" in kwargs: + warnings.warn( + "Passing `padding_mask` is deprecated and will be removed in v4.37. Please make sure use" + " `attention_mask` instead.`" + ) + + # overwrite attention_mask with padding_mask + attention_mask = kwargs.pop("padding_mask") + + output_attentions = False + + bsz, q_len, _ = hidden_states.size() + + query_states = self.q_proj(hidden_states) + key_states = self.k_proj(hidden_states) + value_states = self.v_proj(hidden_states) + + # Flash attention requires the input to have the shape + # batch_size x seq_length x head_dim x hidden_dim + # therefore we just need to keep the original shape + query_states = query_states.view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) + key_states = key_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) + value_states = value_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) + + query_states, key_states, value_states = match_attn_matrices_for_parallel( + query_states, key_states, value_states + ) + (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) + + kv_seq_len = key_states.shape[-2] + if past_key_value is not None: + kv_seq_len += past_key_value.get_usable_length(kv_seq_len, self.layer_idx) + cos, sin = self.rotary_emb(value_states, seq_len=kv_seq_len) + query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, position_ids) + + key_states, value_states, attention_mask = self.prefix_tuning( + key_states, value_states, hidden_states, attention_mask + ) + (query_states,) = adjust_tensors_for_parallel(key_states, query_states) + + # Make adjustments since (parallel) prefix tuning changes the attention mask + kv_seq_len = key_states.shape[-2] + bsz = key_states.shape[0] + + if past_key_value is not None: + cache_kwargs = {"sin": sin, "cos": cos} # Specific to RoPE models + key_states, value_states = past_key_value.update(key_states, value_states, self.layer_idx, cache_kwargs) + + # TODO: These transpose are quite inefficient but Flash Attention requires the layout [batch_size, sequence_length, num_heads, head_dim]. We would need to refactor the KV cache + # to be able to avoid many of these transpose/reshape/view. + query_states = query_states.transpose(1, 2) + key_states = key_states.transpose(1, 2) + value_states = value_states.transpose(1, 2) + + dropout_rate = self.attention_dropout if self.training else 0.0 + + # In PEFT, usually we cast the layer norms in float32 for training stability reasons + # therefore the input hidden states gets silently casted in float32. Hence, we need + # cast them back in the correct dtype just to be sure everything works as expected. + # This might slowdown training & inference so it is recommended to not cast the LayerNorms + # in fp32. (LlamaRMSNorm handles it correctly) + + input_dtype = query_states.dtype + if input_dtype == torch.float32: + # Handle the case where the model is quantized + if hasattr(self.config, "_pre_quantization_dtype"): + target_dtype = self.config._pre_quantization_dtype + else: + target_dtype = self.q_proj.weight.dtype + + logger.warning_once( + "The input hidden states seems to be silently casted in float32, this might be related to the fact" + " you have upcasted embedding or layer norm layers in float32. We will cast back the input in" + f" {target_dtype}." + ) + + query_states = query_states.to(target_dtype) + key_states = key_states.to(target_dtype) + value_states = value_states.to(target_dtype) + + attn_output = self._flash_attention_forward( + query_states, key_states, value_states, attention_mask, q_len, dropout=dropout_rate + ) + + attn_output = attn_output.reshape(bsz, q_len, self.hidden_size).contiguous() + attn_output = self.o_proj(attn_output) + + if not output_attentions: + attn_weights = None + + return attn_output, attn_weights, past_key_value + + +class LlamaSdpaAttentionWithAdapters(LlamaAttentionMixin, LlamaAttention): + + # Adapted from LlamaAttention.forward + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_value: Optional[Cache] = None, + output_attentions: bool = False, + use_cache: bool = False, + ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: + if output_attentions: + # TODO: Improve this warning with e.g. `model.config.attn_implementation = "manual"` once this is implemented. + logger.warning_once( + "LlamaModel is using LlamaSdpaAttention, but `torch.nn.functional.scaled_dot_product_attention` does" + " not support `output_attentions=True`. Falling back to the manual attention implementation, but" + " specifying the manual implementation will be required from Transformers version v5.0.0 onwards. This" + ' warning can be removed using the argument `attn_implementation="eager"` when loading the model.' + ) + return super().forward( + hidden_states=hidden_states, + attention_mask=attention_mask, + position_ids=position_ids, + past_key_value=past_key_value, + output_attentions=output_attentions, + use_cache=use_cache, + ) + + bsz, q_len, _ = hidden_states.size() + + query_states = self.q_proj(hidden_states) + key_states = self.k_proj(hidden_states) + value_states = self.v_proj(hidden_states) + + query_states = query_states.view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) + key_states = key_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) + value_states = value_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) + + query_states, key_states, value_states = match_attn_matrices_for_parallel( + query_states, key_states, value_states + ) + (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) + + kv_seq_len = key_states.shape[-2] + if past_key_value is not None: + kv_seq_len += past_key_value.get_usable_length(kv_seq_len, self.layer_idx) + cos, sin = self.rotary_emb(value_states, seq_len=kv_seq_len) + + query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, position_ids) + + if past_key_value is not None: + cache_kwargs = {"sin": sin, "cos": cos} # Specific to RoPE models + key_states, value_states = past_key_value.update(key_states, value_states, self.layer_idx, cache_kwargs) + + key_states = repeat_kv(key_states, self.num_key_value_groups) + value_states = repeat_kv(value_states, self.num_key_value_groups) + + key_states, value_states, attention_mask = self.prefix_tuning( + key_states, value_states, hidden_states, attention_mask + ) + (query_states,) = adjust_tensors_for_parallel(key_states, query_states) + + # Make adjustments since (parallel) prefix tuning changes the attention mask + kv_seq_len = key_states.shape[-2] + bsz = key_states.shape[0] + + if attention_mask is not None: + if attention_mask.size() != (bsz, 1, q_len, kv_seq_len): + raise ValueError( + f"Attention mask should be of size {(bsz, 1, q_len, kv_seq_len)}, but is {attention_mask.size()}" + ) + + # SDPA with memory-efficient backend is currently (torch==2.1.2) bugged with non-contiguous inputs with custom attn_mask, + # Reference: https://github.com/pytorch/pytorch/issues/112577. + if query_states.device.type == "cuda" and attention_mask is not None: + query_states = query_states.contiguous() + key_states = key_states.contiguous() + value_states = value_states.contiguous() + + attn_output = torch.nn.functional.scaled_dot_product_attention( + query_states, + key_states, + value_states, + attn_mask=attention_mask, + dropout_p=self.attention_dropout if self.training else 0.0, + # The q_len > 1 is necessary to match with AttentionMaskConverter.to_causal_4d that does not create a causal mask in case q_len == 1. + is_causal=self.is_causal and attention_mask is None and q_len > 1, + ) + + attn_output = attn_output.transpose(1, 2).contiguous() + attn_output = attn_output.reshape(bsz, q_len, self.hidden_size) + + attn_output = self.o_proj(attn_output) + + return attn_output, None, past_key_value + + +class LlamaDecoderLayerWithAdapters(LlamaDecoderLayerMixin, LlamaDecoderLayer): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_value: Optional[Tuple[torch.Tensor]] = None, + output_attentions: Optional[bool] = False, + use_cache: Optional[bool] = False, + ) -> Tuple[torch.FloatTensor, Optional[Tuple[torch.FloatTensor, torch.FloatTensor]]]: + """ + Args: + hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)` + attention_mask (`torch.FloatTensor`, *optional*): attention mask of size + `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. + output_attentions (`bool`, *optional*): + Whether or not to return the attentions tensors of all attention layers. See `attentions` under + returned tensors for more detail. + use_cache (`bool`, *optional*): + If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding + (see `past_key_values`). + past_key_value (`Tuple(torch.FloatTensor)`, *optional*): cached past key and value projection states + """ + + adjust_tensors_for_parallel_(hidden_states, attention_mask, position_ids) + residual = hidden_states + + hidden_states = self.input_layernorm(hidden_states) + + # Self Attention + hidden_states, self_attn_weights, present_key_value = self.self_attn( + hidden_states=hidden_states, + attention_mask=attention_mask, + position_ids=position_ids, + past_key_value=past_key_value, + output_attentions=output_attentions, + use_cache=use_cache, + ) + hidden_states = self.attention_adapters(hidden_states, residual, None) + + # Fully Connected + residual = hidden_states + hidden_states = self.post_attention_layernorm(hidden_states) + hidden_states = self.mlp(hidden_states) + hidden_states = self.output_adapters(hidden_states, residual, None) + + outputs = (hidden_states,) + + if output_attentions: + outputs += (self_attn_weights,) + + if use_cache: + outputs += (present_key_value,) + + return outputs diff --git a/adapters/src/adapters/models/mbart/__init__.py b/adapters/src/adapters/models/mbart/__init__.py new file mode 100644 index 00000000..0783fb5e --- /dev/null +++ b/adapters/src/adapters/models/mbart/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["MBartAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import MBartAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/mbart/adapter_model.py b/adapters/src/adapters/models/mbart/adapter_model.py new file mode 100644 index 00000000..186aef5c --- /dev/null +++ b/adapters/src/adapters/models/mbart/adapter_model.py @@ -0,0 +1,171 @@ +import torch + +from transformers.models.mbart.modeling_mbart import ( + MBART_INPUTS_DOCSTRING, + MBART_START_DOCSTRING, + MBartConfig, + MBartModel, + MBartPreTrainedModel, + shift_tokens_right, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...composition import adjust_tensors_for_parallel +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + "MBART Model with the option to add multiple flexible prediction heads on top.", MBART_START_DOCSTRING +) +class MBartAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, MBartPreTrainedModel): + _tied_weights_keys = [ + "encoder.embed_tokens.weight", + "decoder.embed_tokens.weight", + ] + + head_types = [ + "classification", + "multilabel_classification", + "question_answering", + "seq2seq_lm", + ] + + def __init__(self, config: MBartConfig, **kwargs): + super().__init__(config, **kwargs) + self.model = MBartModel(config) + init(self.model) + + self._init_head_modules() + + self.post_init() + + def get_encoder(self): + return self.model.get_encoder() + + def get_decoder(self): + return self.model.get_decoder() + + @add_start_docstrings_to_model_forward(MBART_INPUTS_DOCSTRING) + def forward( + self, + input_ids=None, + attention_mask=None, + decoder_input_ids=None, + decoder_attention_mask=None, + head_mask=None, + decoder_head_mask=None, + cross_attn_head_mask=None, + encoder_outputs=None, + inputs_embeds=None, + decoder_inputs_embeds=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + past_key_values=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + r""" + labels (:obj:`torch.LongTensor` of shape :obj:`(batch_size,)`, `optional`): + Labels for computing the sequence classification/regression loss. Indices should be in :obj:`[0, ..., + config.num_labels - 1]`. If :obj:`config.num_labels > 1` a classification loss is computed (Cross-Entropy). + """ + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + if "labels" in kwargs or "start_positions" in kwargs and "end_positions" in kwargs: + use_cache = False + + outputs, context = self.model( + input_ids, + attention_mask=attention_mask, + decoder_input_ids=decoder_input_ids, + decoder_attention_mask=decoder_attention_mask, + head_mask=head_mask, + decoder_head_mask=decoder_head_mask, + cross_attn_head_mask=cross_attn_head_mask, + encoder_outputs=encoder_outputs, + inputs_embeds=inputs_embeds, + decoder_inputs_embeds=decoder_inputs_embeds, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + past_key_values=past_key_values, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + # sequence classification based on last token in sequence + x = outputs[0] # last hidden state + if input_ids is not None and x.shape[1] == input_ids.shape[1]: + eos_mask = input_ids.eq(self.config.eos_token_id) + (eos_mask,) = adjust_tensors_for_parallel(x, eos_mask) + if len(torch.unique(eos_mask.sum(1))) > 1: + raise ValueError("All examples must have the same number of tokens.") + cls_representation = x[eos_mask, :].view(x.size(0), -1, x.size(-1))[:, -1, :] + else: + cls_representation = x + + head_outputs = self.forward_head( + outputs, + head_name=head, + cls_output=cls_representation, + attention_mask=attention_mask, + return_dict=return_dict, + **kwargs, + ) + + return head_outputs + + # Copied from MBartForConditionalGeneration + def prepare_inputs_for_generation( + self, + decoder_input_ids, + past=None, + attention_mask=None, + head_mask=None, + decoder_head_mask=None, + cross_attn_head_mask=None, + use_cache=None, + encoder_outputs=None, + **kwargs + ): + # cut decoder_input_ids if past is used + if past is not None: + decoder_input_ids = decoder_input_ids[:, -1:] + + return { + "input_ids": None, # encoder_outputs is defined. input_ids not needed + "encoder_outputs": encoder_outputs, + "past_key_values": past, + "decoder_input_ids": decoder_input_ids, + "attention_mask": attention_mask, + "head_mask": head_mask, + "decoder_head_mask": decoder_head_mask, + "cross_attn_head_mask": cross_attn_head_mask, + "use_cache": use_cache, # change this to avoid caching (presumably for debugging) + "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), + } + + # Copied from MBartForConditionalGeneration + def prepare_decoder_input_ids_from_labels(self, labels: torch.Tensor): + return shift_tokens_right(labels, self.config.pad_token_id) + + # Copied from MBartForConditionalGeneration + @staticmethod + def _reorder_cache(past, beam_idx): + reordered_past = () + for layer_past in past: + # cached cross_attention states don't have to be reordered -> they are always the same + reordered_past += ( + tuple(past_state.index_select(0, beam_idx) for past_state in layer_past[:2]) + layer_past[2:], + ) + return reordered_past diff --git a/adapters/src/adapters/models/mbart/modeling_mbart.py b/adapters/src/adapters/models/mbart/modeling_mbart.py new file mode 100644 index 00000000..0f8f0d53 --- /dev/null +++ b/adapters/src/adapters/models/mbart/modeling_mbart.py @@ -0,0 +1,308 @@ +# coding=utf-8 +# Copyright 2021, The Facebook AI Research Team and The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch MBART model.""" +from typing import Optional, Tuple + +import torch +import torch.utils.checkpoint +from torch import nn + +from transformers.models.mbart.modeling_mbart import MBartAttention, MBartDecoderLayer, MBartEncoderLayer + +from ...composition import adjust_tensors_for_parallel, adjust_tensors_for_parallel_, match_attn_matrices_for_parallel +from ..bart.mixin_bart import BartAttentionAdaptersMixin, BartDecoderLayerAdaptersMixin, BartEncoderLayerAdaptersMixin + + +class MBartAttentionWithAdapters(BartAttentionAdaptersMixin, MBartAttention): + """Multi-headed attention from 'Attention Is All You Need' paper""" + + def forward( + self, + hidden_states: torch.Tensor, + key_value_states: Optional[torch.Tensor] = None, + past_key_value: Optional[Tuple[torch.Tensor]] = None, + attention_mask: Optional[torch.Tensor] = None, + layer_head_mask: Optional[torch.Tensor] = None, + output_attentions: bool = False, + ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: + """Input shape: Batch x Time x Channel""" + + # if key_value_states are provided this layer is used as a cross-attention layer + # for the decoder + is_cross_attention = key_value_states is not None + + bsz, tgt_len, _ = hidden_states.size() + + # get query proj + query_states = self.q_proj(hidden_states) * self.scaling + # get key, value proj + # `past_key_value[0].shape[2] == key_value_states.shape[1]` + # is checking that the `sequence_length` of the `past_key_value` is the same as + # the provided `key_value_states` to support prefix tuning + if ( + is_cross_attention + and past_key_value is not None + and past_key_value[0].shape[2] == key_value_states.shape[1] + ): + # reuse k,v, cross_attentions + key_states = past_key_value[0] + value_states = past_key_value[1] + elif is_cross_attention: + # cross_attentions + key_states = self._shape(self.k_proj(key_value_states), -1, bsz) + value_states = self._shape(self.v_proj(key_value_states), -1, bsz) + elif past_key_value is not None: + # reuse k, v, self_attention + key_states = self._shape(self.k_proj(hidden_states), -1, bsz) + value_states = self._shape(self.v_proj(hidden_states), -1, bsz) + key_states = torch.cat([past_key_value[0], key_states], dim=2) + value_states = torch.cat([past_key_value[1], value_states], dim=2) + else: + # self_attention + key_states = self._shape(self.k_proj(hidden_states), -1, bsz) + value_states = self._shape(self.v_proj(hidden_states), -1, bsz) + + query_states, key_states, value_states = match_attn_matrices_for_parallel( + query_states, key_states, value_states + ) + (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) + + if self.is_decoder: + # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. + # Further calls to cross_attention layer can then reuse all cross-attention + # key/value_states (first "if" case) + # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of + # all previous decoder key/value_states. Further calls to uni-directional self-attention + # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) + # if encoder bi-directional self-attention `past_key_value` is always `None` + past_key_value = (key_states, value_states) + + key_states, value_states, attention_mask = self.prefix_tuning( + key_states, value_states, hidden_states, attention_mask + ) + (query_states,) = adjust_tensors_for_parallel(key_states, query_states) + bsz = query_states.size(0) + + proj_shape = (bsz * self.num_heads, -1, self.head_dim) + + query_states = self._shape(query_states, tgt_len, bsz).view(*proj_shape) + key_states = key_states.view(*proj_shape) + value_states = value_states.view(*proj_shape) + + src_len = key_states.size(1) + attn_weights = torch.bmm(query_states, key_states.transpose(1, 2)) + + if attn_weights.size() != (bsz * self.num_heads, tgt_len, src_len): + raise ValueError( + f"Attention weights should be of size {(bsz * self.num_heads, tgt_len, src_len)}, but is" + f" {attn_weights.size()}" + ) + + if attention_mask is not None: + if attention_mask.size() != (bsz, 1, tgt_len, src_len): + raise ValueError( + f"Attention mask should be of size {(bsz, 1, tgt_len, src_len)}, but is {attention_mask.size()}" + ) + attn_weights = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + attention_mask + attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) + + attn_weights = nn.functional.softmax(attn_weights, dim=-1) + + if layer_head_mask is not None: + if layer_head_mask.size() != (self.num_heads,): + raise ValueError( + f"Head mask for a single layer should be of size {(self.num_heads,)}, but is" + f" {layer_head_mask.size()}" + ) + attn_weights = layer_head_mask.view(1, -1, 1, 1) * attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) + + if output_attentions: + # this operation is a bit awkward, but it's required to + # make sure that attn_weights keeps its gradient. + # In order to do so, attn_weights have to be reshaped + # twice and have to be reused in the following + attn_weights_reshaped = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + attn_weights = attn_weights_reshaped.view(bsz * self.num_heads, tgt_len, src_len) + else: + attn_weights_reshaped = None + + attn_probs = nn.functional.dropout(attn_weights, p=self.dropout, training=self.training) + + attn_output = torch.bmm(attn_probs, value_states) + + if attn_output.size() != (bsz * self.num_heads, tgt_len, self.head_dim): + raise ValueError( + f"`attn_output` should be of size {(bsz, self.num_heads, tgt_len, self.head_dim)}, but is" + f" {attn_output.size()}" + ) + + attn_output = attn_output.view(bsz, self.num_heads, tgt_len, self.head_dim) + attn_output = attn_output.transpose(1, 2) + + # Use the `embed_dim` from the config (stored in the class) rather than `hidden_state` because `attn_output` can be + # partitioned aross GPUs when using tensor-parallelism. + attn_output = attn_output.reshape(bsz, tgt_len, self.embed_dim) + + attn_output = self.out_proj(attn_output) + + return attn_output, attn_weights_reshaped, past_key_value + + +class MBartEncoderLayerWithAdapters(BartEncoderLayerAdaptersMixin, MBartEncoderLayer): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: torch.Tensor, + layer_head_mask: torch.Tensor, + output_attentions: bool = False, + ) -> torch.Tensor: + """ + Args: + hidden_states (`torch.FloatTensor`): input to the layer of shape `(seq_len, batch, embed_dim)` + attention_mask (`torch.FloatTensor`): attention mask of size + `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. + layer_head_mask (`torch.FloatTensor`): mask for attention heads in a given layer of size + `(encoder_attention_heads,)`. + output_attentions (`bool`, *optional*): + Whether or not to return the attentions tensors of all attention layers. See `attentions` under + returned tensors for more detail. + """ + adjust_tensors_for_parallel_(hidden_states, attention_mask) + + residual = hidden_states + hidden_states = self.self_attn_layer_norm(hidden_states) + hidden_states, attn_weights, _ = self.self_attn( + hidden_states=hidden_states, + attention_mask=attention_mask, + layer_head_mask=layer_head_mask, + output_attentions=output_attentions, + ) + hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) + hidden_states = self.attention_adapters(hidden_states, residual, None) + + residual = hidden_states + hidden_states = self.final_layer_norm(hidden_states) + hidden_states = self.activation_fn(self.fc1(hidden_states)) + hidden_states = nn.functional.dropout(hidden_states, p=self.activation_dropout, training=self.training) + hidden_states = self.fc2(hidden_states) + hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) + hidden_states = self.output_adapters(hidden_states, residual, None) + + if hidden_states.dtype == torch.float16 and ( + torch.isinf(hidden_states).any() or torch.isnan(hidden_states).any() + ): + clamp_value = torch.finfo(hidden_states.dtype).max - 1000 + hidden_states = torch.clamp(hidden_states, min=-clamp_value, max=clamp_value) + + outputs = (hidden_states,) + + if output_attentions: + outputs += (attn_weights,) + + return outputs + + +class MBartDecoderLayerWithAdapters(BartDecoderLayerAdaptersMixin, MBartDecoderLayer): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + encoder_hidden_states: Optional[torch.Tensor] = None, + encoder_attention_mask: Optional[torch.Tensor] = None, + layer_head_mask: Optional[torch.Tensor] = None, + cross_attn_layer_head_mask: Optional[torch.Tensor] = None, + past_key_value: Optional[Tuple[torch.Tensor]] = None, + output_attentions: Optional[bool] = False, + use_cache: Optional[bool] = True, + ) -> torch.Tensor: + """ + Args: + hidden_states (`torch.FloatTensor`): input to the layer of shape `(seq_len, batch, embed_dim)` + attention_mask (`torch.FloatTensor`): attention mask of size + `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. + encoder_hidden_states (`torch.FloatTensor`): + cross attention input to the layer of shape `(seq_len, batch, embed_dim)` + encoder_attention_mask (`torch.FloatTensor`): encoder attention mask of size + `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. + layer_head_mask (`torch.FloatTensor`): mask for attention heads in a given layer of size + `(encoder_attention_heads,)`. + cross_attn_layer_head_mask (`torch.FloatTensor`): mask for cross-attention heads in a given layer of + size `(decoder_attention_heads,)`. + past_key_value (`Tuple(torch.FloatTensor)`): cached past key and value projection states + output_attentions (`bool`, *optional*): + Whether or not to return the attentions tensors of all attention layers. See `attentions` under + returned tensors for more detail. + """ + adjust_tensors_for_parallel_(hidden_states, attention_mask, encoder_attention_mask) + + residual = hidden_states + hidden_states = self.self_attn_layer_norm(hidden_states) + + # Self Attention + # decoder uni-directional self-attention cached key/values tuple is at positions 1,2 + self_attn_past_key_value = past_key_value[:2] if past_key_value is not None else None + # add present self-attn cache to positions 1,2 of present_key_value tuple + hidden_states, self_attn_weights, present_key_value = self.self_attn( + hidden_states=hidden_states, + past_key_value=self_attn_past_key_value, + attention_mask=attention_mask, + layer_head_mask=layer_head_mask, + output_attentions=output_attentions, + ) + hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) + hidden_states = self.attention_adapters(hidden_states, residual, None) + + # Cross-Attention Block + cross_attn_present_key_value = None + cross_attn_weights = None + if encoder_hidden_states is not None: + residual = hidden_states + hidden_states = self.encoder_attn_layer_norm(hidden_states) + + # cross_attn cached key/values tuple is at positions 3,4 of present_key_value tuple + cross_attn_past_key_value = past_key_value[-2:] if past_key_value is not None else None + hidden_states, cross_attn_weights, cross_attn_present_key_value = self.encoder_attn( + hidden_states=hidden_states, + key_value_states=encoder_hidden_states, + attention_mask=encoder_attention_mask, + layer_head_mask=cross_attn_layer_head_mask, + past_key_value=cross_attn_past_key_value, + output_attentions=output_attentions, + ) + hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) + hidden_states = self.cross_attention_adapters(hidden_states, residual, None) + + # add cross-attn to positions 3,4 of present_key_value tuple + present_key_value = present_key_value + cross_attn_present_key_value + + # Fully Connected + residual = hidden_states + hidden_states = self.final_layer_norm(hidden_states) + hidden_states = self.activation_fn(self.fc1(hidden_states)) + hidden_states = nn.functional.dropout(hidden_states, p=self.activation_dropout, training=self.training) + hidden_states = self.fc2(hidden_states) + hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) + hidden_states = self.output_adapters(hidden_states, residual, None) + + outputs = (hidden_states,) + + if output_attentions: + outputs += (self_attn_weights, cross_attn_weights) + + if use_cache: + outputs += (present_key_value,) + + return outputs diff --git a/adapters/src/adapters/models/mt5/__init__.py b/adapters/src/adapters/models/mt5/__init__.py new file mode 100644 index 00000000..1a3469d9 --- /dev/null +++ b/adapters/src/adapters/models/mt5/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["MT5AdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import MT5AdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/mt5/adapter_model.py b/adapters/src/adapters/models/mt5/adapter_model.py new file mode 100644 index 00000000..2868aec3 --- /dev/null +++ b/adapters/src/adapters/models/mt5/adapter_model.py @@ -0,0 +1,209 @@ +import logging + +import torch + +from transformers.models.mt5.modeling_mt5 import ( + MT5_INPUTS_DOCSTRING, + MT5_START_DOCSTRING, + MT5Model, + MT5PreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...composition import adjust_tensors_for_parallel +from ...heads import ModelWithFlexibleHeadsAdaptersMixin, Seq2SeqLMHead +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +logger = logging.getLogger(__name__) + + +@add_start_docstrings( + "MT5 Model with the option to add multiple flexible prediction heads on top.", MT5_START_DOCSTRING +) +class MT5AdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, MT5PreTrainedModel): + _tied_weights_keys = [ + "encoder.embed_tokens.weight", + "decoder.embed_tokens.weight", + ] + + _keys_to_ignore_on_load_unexpected = [ + r"decoder.block.0.layer.1.EncDecAttention.relative_attention_bias.weight", + ] + + head_types = [ + "classification", + "multilabel_classification", + "question_answering", + "seq2seq_lm", + ] + + def __init__(self, config): + super().__init__(config) + + self.transformer = MT5Model(config) + init(self.transformer) + + self._init_head_modules() + + self.init_weights() + + # Model parallel + self.model_parallel = False + self.device_map = None + + def get_encoder(self): + return self.transformer.encoder + + def get_decoder(self): + return self.transformer.decoder + + @add_start_docstrings_to_model_forward(MT5_INPUTS_DOCSTRING) + def forward( + self, + input_ids=None, + attention_mask=None, + decoder_input_ids=None, + decoder_attention_mask=None, + head_mask=None, + decoder_head_mask=None, + cross_attn_head_mask=None, + encoder_outputs=None, + past_key_values=None, + inputs_embeds=None, + decoder_inputs_embeds=None, + labels=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + if decoder_input_ids is None and decoder_inputs_embeds is None: + # Check if we're using a LM head + if labels is not None and any([isinstance(head, Seq2SeqLMHead) for head in self._get_used_heads(head)]): + # get decoder inputs from shifting lm labels to the right + decoder_input_ids = self._shift_right(labels) + else: + # decoder_input_ids from input_ids if no decoder_input_ids are provided + decoder_input_ids = self._shift_right(input_ids) + + model_output, context = self.transformer( + input_ids=input_ids, + attention_mask=attention_mask, + decoder_input_ids=decoder_input_ids, + decoder_attention_mask=decoder_attention_mask, + head_mask=head_mask, + decoder_head_mask=decoder_head_mask, + cross_attn_head_mask=cross_attn_head_mask, + encoder_outputs=encoder_outputs, + past_key_values=past_key_values, + inputs_embeds=inputs_embeds, + decoder_inputs_embeds=decoder_inputs_embeds, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + sequence_output = model_output[0] + # ToDo move head to device for parallel forward pass + + if self.config.tie_word_embeddings: + # Rescale output before projecting on vocab + # See https://github.com/tensorflow/mesh/blob/fa19d69eafc9a482aff0b59ddd96b025c0cb207d/mesh_tensorflow/transformer/transformer.py#L586 + new_hidden_state = sequence_output * (self.config.d_model**-0.5) + if isinstance(model_output, tuple): + model_output = (new_hidden_state,) + model_output[1:] + else: + model_output["last_hidden_state"] = new_hidden_state + + # sequence classification based on last token in sequence + if input_ids is not None and sequence_output.shape[1] == input_ids.shape[1]: + eos_mask = input_ids.eq(self.config.eos_token_id) + (eos_mask,) = adjust_tensors_for_parallel(sequence_output, eos_mask) + if len(torch.unique(eos_mask.sum(1))) > 1: + raise ValueError("All examples must have the same number of tokens.") + cls_representation = sequence_output[eos_mask, :].view( + sequence_output.size(0), -1, sequence_output.size(-1) + )[:, -1, :] + else: + cls_representation = sequence_output + + kwargs["labels"] = labels + head_outputs = self.forward_head( + model_output, + head_name=head, + cls_output=cls_representation, + return_dict=return_dict, + **kwargs, + ) + return head_outputs + + # Copied from T5ForConditionalGeneration + def prepare_inputs_for_generation( + self, + input_ids, + past=None, + attention_mask=None, + head_mask=None, + decoder_head_mask=None, + cross_attn_head_mask=None, + use_cache=None, + encoder_outputs=None, + **kwargs + ): + # cut decoder_input_ids if past is used + if past is not None: + input_ids = input_ids[:, -1:] + + return { + "decoder_input_ids": input_ids, + "past_key_values": past, + "encoder_outputs": encoder_outputs, + "attention_mask": attention_mask, + "head_mask": head_mask, + "decoder_head_mask": decoder_head_mask, + "cross_attn_head_mask": cross_attn_head_mask, + "use_cache": use_cache, + "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), + } + + # Copied from T5ForConditionalGeneration + def prepare_decoder_input_ids_from_labels(self, labels: torch.Tensor): + return self._shift_right(labels) + + # Copied from T5ForConditionalGeneration + def _reorder_cache(self, past, beam_idx): + # if decoder past is not included in output + # speedy decoding is disabled and no need to reorder + if past is None: + logger.warning("You might want to consider setting `use_cache=True` to speed up decoding") + return past + + reordered_decoder_past = () + for layer_past_states in past: + # get the correct batch idx from layer past batch dim + # batch dim of `past` is at 2nd position + reordered_layer_past_states = () + for layer_past_state in layer_past_states: + # need to set correct `past` for each of the four key / value states + reordered_layer_past_states = reordered_layer_past_states + ( + layer_past_state.index_select(0, beam_idx.to(layer_past_state.device)), + ) + + assert reordered_layer_past_states[0].shape == layer_past_states[0].shape + assert len(reordered_layer_past_states) == len(layer_past_states) + + reordered_decoder_past = reordered_decoder_past + (reordered_layer_past_states,) + return reordered_decoder_past diff --git a/adapters/src/adapters/models/mt5/modeling_mt5.py b/adapters/src/adapters/models/mt5/modeling_mt5.py new file mode 100644 index 00000000..12ad630a --- /dev/null +++ b/adapters/src/adapters/models/mt5/modeling_mt5.py @@ -0,0 +1,484 @@ +# coding=utf-8 +# Copyright 2018 Mesh TensorFlow authors, MT5 Authors and HuggingFace Inc. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch MT5 model.""" + +import torch +from torch import nn +from torch.utils.checkpoint import checkpoint + +from transformers.modeling_outputs import BaseModelOutputWithPastAndCrossAttentions +from transformers.models.mt5.modeling_mt5 import ( + MT5Attention, + MT5LayerCrossAttention, + MT5LayerFF, + MT5LayerSelfAttention, + MT5Stack, +) +from transformers.utils import logging + +from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from ..t5.mixin_t5 import ( + T5AttentionAdaptersMixin, + T5CrossAttentionLayerAdaptersMixin, + T5FFLayerAdaptersMixin, + T5SelfAttentionLayerAdaptersMixin, + T5StackAdaptersMixin, +) + + +logger = logging.get_logger(__name__) + + +class MT5LayerFFWithAdapters(T5FFLayerAdaptersMixin, MT5LayerFF): + def forward(self, hidden_states): + forwarded_states = self.layer_norm(hidden_states) + forwarded_states = self.DenseReluDense(forwarded_states) + hidden_states = self.bottleneck_layer_forward( + hidden_states=self.dropout(forwarded_states), residual_input=hidden_states, layer_norm=None + ) + return hidden_states + + +class MT5AttentionWithAdapters(T5AttentionAdaptersMixin, MT5Attention): + def forward( + self, + hidden_states, + mask=None, + key_value_states=None, + position_bias=None, + past_key_value=None, + layer_head_mask=None, + query_length=None, + use_cache=False, + output_attentions=False, + ): + """ + Self-attention (if key_value_states is None) or attention over source sentence (provided by key_value_states). + """ + # Input is (batch_size, seq_length, dim) + # Mask is (batch_size, key_length) (non-causal) or (batch_size, key_length, key_length) + # past_key_value[0] is (batch_size, n_heads, q_len - 1, dim_per_head) + batch_size, seq_length = hidden_states.shape[:2] + + real_seq_length = seq_length + + if past_key_value is not None: + assert ( + len(past_key_value) == 2 + ), f"past_key_value should have 2 past states: keys and values. Got { len(past_key_value)} past states" + real_seq_length += past_key_value[0].shape[2] if query_length is None else query_length + + key_length = real_seq_length if key_value_states is None else key_value_states.shape[1] + + def shape(states): + """projection""" + return states.view(batch_size, -1, self.n_heads, self.key_value_proj_dim).transpose(1, 2) + + def unshape(states): + """reshape""" + return states.transpose(1, 2).contiguous().view(batch_size, -1, self.inner_dim) + + def project(hidden_states, proj_layer, key_value_states, past_key_value): + """projects hidden states correctly to key/query states""" + if key_value_states is None: + # self-attn + # (batch_size, n_heads, seq_length, dim_per_head) + hidden_states = shape(proj_layer(hidden_states)) + elif past_key_value is None: + # cross-attn + # (batch_size, n_heads, seq_length, dim_per_head) + hidden_states = shape(proj_layer(key_value_states)) + + if past_key_value is not None: + if key_value_states is None: + # self-attn + # (batch_size, n_heads, key_length, dim_per_head) + hidden_states = torch.cat([past_key_value, hidden_states], dim=2) + elif past_key_value.shape[2] != key_value_states.shape[1]: + # checking that the `sequence_length` of the `past_key_value` is the same as + # the provided `key_value_states` to support prefix tuning + # cross-attn + # (batch_size, n_heads, seq_length, dim_per_head) + hidden_states = shape(proj_layer(key_value_states)) + else: + # cross-attn + hidden_states = past_key_value + return hidden_states + + # get query states + query_states = shape(self.q(hidden_states)) # (batch_size, n_heads, seq_length, dim_per_head) + + # get key/value states + key_states = project( + hidden_states, self.k, key_value_states, past_key_value[0] if past_key_value is not None else None + ) + value_states = project( + hidden_states, self.v, key_value_states, past_key_value[1] if past_key_value is not None else None + ) + + query_states, key_states, value_states = match_attn_matrices_for_parallel( + query_states, key_states, value_states + ) + (mask,) = adjust_tensors_for_parallel(query_states, mask) + + present_key_value_state = (key_states, value_states) if (self.is_decoder and use_cache) else None + + key_states, value_states, mask = self.prefix_tuning(key_states, value_states, hidden_states, mask) + (query_states,) = adjust_tensors_for_parallel(key_states, query_states) + batch_size, key_length = key_states.shape[0], key_states.shape[2] + + # compute scores + scores = torch.matmul( + query_states, key_states.transpose(3, 2) + ) # equivalent of torch.einsum("bnqd,bnkd->bnqk", query_states, key_states), compatible with onnx op>9 + + if position_bias is None: + if not self.has_relative_attention_bias: + position_bias = torch.zeros( + (1, self.n_heads, real_seq_length, key_length), device=scores.device, dtype=scores.dtype + ) + if self.gradient_checkpointing and self.training: + position_bias.requires_grad = True + else: + position_bias = self.compute_bias(real_seq_length, key_length, device=scores.device) + + # if key and values are already calculated + # we want only the last query position bias + if past_key_value is not None: + position_bias = position_bias[:, :, -hidden_states.size(1) :, :] + + if mask is not None: + position_bias = position_bias + mask # (batch_size, n_heads, seq_length, key_length) + + if self.pruned_heads: + mask = torch.ones(position_bias.shape[1]) + mask[list(self.pruned_heads)] = 0 + position_bias_masked = position_bias[:, mask.bool()] + else: + position_bias_masked = position_bias + + scores += position_bias_masked + attn_weights = nn.functional.softmax(scores.float(), dim=-1).type_as( + scores + ) # (batch_size, n_heads, seq_length, key_length) + attn_weights = nn.functional.dropout( + attn_weights, p=self.dropout, training=self.training + ) # (batch_size, n_heads, seq_length, key_length) + + # Mask heads if we want to + if layer_head_mask is not None: + attn_weights = attn_weights * layer_head_mask + + attn_output = unshape(torch.matmul(attn_weights, value_states)) # (batch_size, seq_length, dim) + attn_output = self.o(attn_output) + + outputs = (attn_output,) + (present_key_value_state,) + (position_bias,) + + if output_attentions: + outputs = outputs + (attn_weights,) + return outputs + + +class MT5LayerSelfAttentionWithAdapters(T5SelfAttentionLayerAdaptersMixin, MT5LayerSelfAttention): + def forward( + self, + hidden_states, + attention_mask=None, + position_bias=None, + layer_head_mask=None, + past_key_value=None, + use_cache=False, + output_attentions=False, + ): + normed_hidden_states = self.layer_norm(hidden_states) + attention_output = self.SelfAttention( + normed_hidden_states, + mask=attention_mask, + position_bias=position_bias, + layer_head_mask=layer_head_mask, + past_key_value=past_key_value, + use_cache=use_cache, + output_attentions=output_attentions, + ) + hidden_states = self.bottleneck_layer_forward( + hidden_states=self.dropout(attention_output[0]), residual_input=hidden_states, layer_norm=None + ) + outputs = (hidden_states,) + attention_output[1:] # add attentions if we output them + return outputs + + +class MT5LayerCrossAttentionWithAdapters(T5CrossAttentionLayerAdaptersMixin, MT5LayerCrossAttention): + def forward( + self, + hidden_states, + key_value_states, + attention_mask=None, + position_bias=None, + layer_head_mask=None, + past_key_value=None, + use_cache=False, + query_length=None, + output_attentions=False, + ): + normed_hidden_states = self.layer_norm(hidden_states) + attention_output = self.EncDecAttention( + normed_hidden_states, + mask=attention_mask, + key_value_states=key_value_states, + position_bias=position_bias, + layer_head_mask=layer_head_mask, + past_key_value=past_key_value, + use_cache=use_cache, + query_length=query_length, + output_attentions=output_attentions, + ) + layer_output = self.bottleneck_layer_forward( + hidden_states=self.dropout(attention_output[0]), residual_input=hidden_states, layer_norm=None + ) + outputs = (layer_output,) + attention_output[1:] # add attentions if we output them + return outputs + + +class MT5StackWithAdapters(T5StackAdaptersMixin, MT5Stack): + def forward( + self, + input_ids=None, + attention_mask=None, + encoder_hidden_states=None, + encoder_attention_mask=None, + inputs_embeds=None, + head_mask=None, + cross_attn_head_mask=None, + past_key_values=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + ): + # Model parallel + if self.model_parallel: + torch.cuda.set_device(self.first_device) + self.embed_tokens = self.embed_tokens.to(self.first_device) + use_cache = use_cache if use_cache is not None else self.config.use_cache + output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions + output_hidden_states = ( + output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states + ) + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + if self.is_decoder and encoder_hidden_states is not None: + input_ids, encoder_attention_mask = adjust_tensors_for_parallel( + encoder_hidden_states, input_ids, encoder_attention_mask + ) + + if input_ids is not None and inputs_embeds is not None: + err_msg_prefix = "decoder_" if self.is_decoder else "" + raise ValueError( + f"You cannot specify both {err_msg_prefix}input_ids and {err_msg_prefix}inputs_embeds at the same time" + ) + elif input_ids is not None: + input_shape = input_ids.size() + input_ids = input_ids.view(-1, input_shape[-1]) + elif inputs_embeds is not None: + input_shape = inputs_embeds.size()[:-1] + else: + err_msg_prefix = "decoder_" if self.is_decoder else "" + raise ValueError(f"You have to specify either {err_msg_prefix}input_ids or {err_msg_prefix}inputs_embeds") + + if inputs_embeds is None: + if self.embed_tokens is None: + raise ValueError("You have to initialize the model with valid token embeddings") + inputs_embeds = self.embed_tokens(input_ids) + + batch_size, seq_length = input_shape + + # required mask seq length can be calculated via length of past + mask_seq_length = past_key_values[0][0].shape[2] + seq_length if past_key_values is not None else seq_length + + if use_cache is True: + if not self.is_decoder: + raise ValueError(f"`use_cache` can only be set to `True` if {self} is used as a decoder") + + if attention_mask is None: + attention_mask = torch.ones(batch_size, mask_seq_length, device=inputs_embeds.device) + if self.is_decoder and encoder_attention_mask is None and encoder_hidden_states is not None: + encoder_seq_length = encoder_hidden_states.shape[1] + encoder_attention_mask = torch.ones( + batch_size, encoder_seq_length, device=inputs_embeds.device, dtype=torch.long + ) + + # initialize past_key_values with `None` if past does not exist + if past_key_values is None: + past_key_values = [None] * len(self.block) + + # We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length] + # ourselves in which case we just need to make it broadcastable to all heads. + extended_attention_mask = self.get_extended_attention_mask(attention_mask, input_shape) + + # If a 2D or 3D attention mask is provided for the cross-attention + # we need to make broadcastable to [batch_size, num_heads, seq_length, seq_length] + if self.is_decoder and encoder_hidden_states is not None: + encoder_batch_size, encoder_sequence_length, _ = encoder_hidden_states.size() + encoder_hidden_shape = (encoder_batch_size, encoder_sequence_length) + if encoder_attention_mask is None: + encoder_attention_mask = torch.ones(encoder_hidden_shape, device=inputs_embeds.device) + encoder_extended_attention_mask = self.invert_attention_mask(encoder_attention_mask) + else: + encoder_extended_attention_mask = None + + if self.gradient_checkpointing and self.training: + if use_cache: + logger.warning_once( + "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`..." + ) + use_cache = False + + # Prepare head mask if needed + head_mask = self.get_head_mask(head_mask, self.config.num_layers) + cross_attn_head_mask = self.get_head_mask(cross_attn_head_mask, self.config.num_layers) + present_key_value_states = () if use_cache else None + all_hidden_states = () if output_hidden_states else None + all_attentions = () if output_attentions else None + all_cross_attentions = () if (output_attentions and self.is_decoder) else None + position_bias = None + encoder_decoder_position_bias = None + + hidden_states = self.dropout(inputs_embeds) + if not self.is_decoder: + hidden_states = self.post_embedding_forward(hidden_states) + + for i, (layer_module, past_key_value) in enumerate(zip(self.block, past_key_values)): + layer_head_mask = head_mask[i] + cross_attn_layer_head_mask = cross_attn_head_mask[i] + # Model parallel + if self.model_parallel: + torch.cuda.set_device(hidden_states.device) + # Ensure that attention_mask is always on the same device as hidden_states + if attention_mask is not None: + attention_mask = attention_mask.to(hidden_states.device) + if position_bias is not None: + position_bias = position_bias.to(hidden_states.device) + if encoder_hidden_states is not None: + encoder_hidden_states = encoder_hidden_states.to(hidden_states.device) + if encoder_extended_attention_mask is not None: + encoder_extended_attention_mask = encoder_extended_attention_mask.to(hidden_states.device) + if encoder_decoder_position_bias is not None: + encoder_decoder_position_bias = encoder_decoder_position_bias.to(hidden_states.device) + if layer_head_mask is not None: + layer_head_mask = layer_head_mask.to(hidden_states.device) + if cross_attn_layer_head_mask is not None: + cross_attn_layer_head_mask = cross_attn_layer_head_mask.to(hidden_states.device) + if output_hidden_states: + all_hidden_states = all_hidden_states + (hidden_states,) + + if self.gradient_checkpointing and self.training: + + def create_custom_forward(module): + def custom_forward(*inputs): + return tuple(module(*inputs, use_cache, output_attentions)) + + return custom_forward + + layer_outputs = checkpoint( + create_custom_forward(layer_module), + hidden_states, + extended_attention_mask, + position_bias, + encoder_hidden_states, + encoder_extended_attention_mask, + encoder_decoder_position_bias, + layer_head_mask, + cross_attn_layer_head_mask, + None, # past_key_value is always None with gradient checkpointing + ) + else: + layer_outputs = layer_module( + hidden_states, + attention_mask=extended_attention_mask, + position_bias=position_bias, + encoder_hidden_states=encoder_hidden_states, + encoder_attention_mask=encoder_extended_attention_mask, + encoder_decoder_position_bias=encoder_decoder_position_bias, + layer_head_mask=layer_head_mask, + cross_attn_layer_head_mask=cross_attn_layer_head_mask, + past_key_value=past_key_value, + use_cache=use_cache, + output_attentions=output_attentions, + ) + + # layer_outputs is a tuple with: + # hidden-states, key-value-states, (self-attention position bias), (self-attention weights), (cross-attention position bias), (cross-attention weights) + if use_cache is False: + layer_outputs = layer_outputs[:1] + (None,) + layer_outputs[1:] + + hidden_states, present_key_value_state = layer_outputs[:2] + + attention_mask, extended_attention_mask = adjust_tensors_for_parallel( + hidden_states, attention_mask, extended_attention_mask + ) + + # We share the position biases between the layers - the first layer store them + # layer_outputs = hidden-states, key-value-states (self-attention position bias), (self-attention weights), + # (cross-attention position bias), (cross-attention weights) + position_bias = layer_outputs[2] + if self.is_decoder and encoder_hidden_states is not None: + encoder_decoder_position_bias = layer_outputs[4 if output_attentions else 3] + # append next layer key value states + if use_cache: + present_key_value_states = present_key_value_states + (present_key_value_state,) + + if position_bias is not None: + position_bias = adjust_tensors_for_parallel(hidden_states, position_bias)[0] + if encoder_decoder_position_bias is not None: + encoder_decoder_position_bias = adjust_tensors_for_parallel( + hidden_states, encoder_decoder_position_bias + )[0] + + if output_attentions: + all_attentions = all_attentions + (layer_outputs[3],) + if self.is_decoder: + all_cross_attentions = all_cross_attentions + (layer_outputs[5],) + + # Model Parallel: If it's the last layer for that device, put things on the next device + if self.model_parallel: + for k, v in self.device_map.items(): + if i == v[-1] and "cuda:" + str(k) != self.last_device: + hidden_states = hidden_states.to("cuda:" + str(k + 1)) + + hidden_states = self.final_layer_norm(hidden_states) + hidden_states = self.dropout(hidden_states) + + # Add last layer + if output_hidden_states: + all_hidden_states = all_hidden_states + (hidden_states,) + + if not return_dict: + return tuple( + v + for v in [ + hidden_states, + present_key_value_states, + all_hidden_states, + all_attentions, + all_cross_attentions, + ] + if v is not None + ) + return BaseModelOutputWithPastAndCrossAttentions( + last_hidden_state=hidden_states, + past_key_values=present_key_value_states, + hidden_states=all_hidden_states, + attentions=all_attentions, + cross_attentions=all_cross_attentions, + ) diff --git a/adapters/src/adapters/models/roberta/__init__.py b/adapters/src/adapters/models/roberta/__init__.py new file mode 100644 index 00000000..56d7166d --- /dev/null +++ b/adapters/src/adapters/models/roberta/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["RobertaAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import RobertaAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/roberta/adapter_model.py b/adapters/src/adapters/models/roberta/adapter_model.py new file mode 100644 index 00000000..87858566 --- /dev/null +++ b/adapters/src/adapters/models/roberta/adapter_model.py @@ -0,0 +1,124 @@ +from transformers.models.roberta.modeling_roberta import ( + ROBERTA_INPUTS_DOCSTRING, + ROBERTA_START_DOCSTRING, + RobertaModel, + RobertaPreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + """Roberta Model transformer with the option to add multiple flexible heads on top.""", + ROBERTA_START_DOCSTRING, +) +class RobertaAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, RobertaPreTrainedModel): + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "multiple_choice", + "question_answering", + "dependency_parsing", + "masked_lm", + "causal_lm", + ] + + def __init__(self, config): + super().__init__(config) + + self.roberta = RobertaModel(config) + init(self.roberta) + + self._init_head_modules() + + self.init_weights() + + @add_start_docstrings_to_model_forward(ROBERTA_INPUTS_DOCSTRING.format("batch_size, sequence_length")) + def forward( + self, + input_ids=None, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None + position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None + token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None + attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None + inputs_embeds = ( + inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) + if inputs_embeds is not None + else None + ) + + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.roberta( + input_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads + if not return_dict: + head_inputs = (outputs[0],) + outputs[2:] + else: + head_inputs = outputs + pooled_output = outputs[1] + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + head_inputs, + head_name=head, + attention_mask=attention_mask, + return_dict=return_dict, + pooled_output=pooled_output, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs + + # Copied from RobertaForCausalLM + def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): + input_shape = input_ids.shape + # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly + if attention_mask is None: + attention_mask = input_ids.new_ones(input_shape) + + # cut decoder_input_ids if past is used + if past is not None: + input_ids = input_ids[:, -1:] + + return { + "input_ids": input_ids, + "attention_mask": attention_mask, + "past_key_values": past, + "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), + } diff --git a/adapters/src/adapters/models/roberta/modeling_roberta.py b/adapters/src/adapters/models/roberta/modeling_roberta.py new file mode 100644 index 00000000..8a79d4ef --- /dev/null +++ b/adapters/src/adapters/models/roberta/modeling_roberta.py @@ -0,0 +1,160 @@ +# coding=utf-8 +# Copyright 2018 The Google AI Language Team Authors and The HuggingFace Inc. team. +# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""PyTorch RoBERTa model.""" + +import math +from typing import Optional, Tuple + +import torch +import torch.utils.checkpoint +from torch import nn + +from transformers.models.roberta.modeling_roberta import RobertaOutput, RobertaSelfAttention, RobertaSelfOutput + +from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from ...utils import prefix_attention_mask +from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin + + +# Copied from transformers.models.bert.modeling_bert.BertSelfAttention with Bert->Roberta +class RobertaSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, RobertaSelfAttention): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.FloatTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + encoder_hidden_states: Optional[torch.FloatTensor] = None, + encoder_attention_mask: Optional[torch.FloatTensor] = None, + past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, + output_attentions: Optional[bool] = False, + ) -> Tuple[torch.Tensor]: + attention_mask = prefix_attention_mask(attention_mask) # type: ignore + + mixed_query_layer = self.query(hidden_states) + + # If this is instantiated as a cross-attention module, the keys + # and values come from an encoder; the attention mask needs to be + # such that the encoder's padding tokens are not attended to. + is_cross_attention = encoder_hidden_states is not None + + if is_cross_attention and past_key_value is not None: + # reuse k,v, cross_attentions + key_layer = past_key_value[0] + value_layer = past_key_value[1] + attention_mask = encoder_attention_mask + elif is_cross_attention: + key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) + value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) + attention_mask = encoder_attention_mask + elif past_key_value is not None: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + key_layer = torch.cat([past_key_value[0], key_layer], dim=2) + value_layer = torch.cat([past_key_value[1], value_layer], dim=2) + else: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + + query_layer = self.transpose_for_scores(mixed_query_layer) + query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) + (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) + + use_cache = past_key_value is not None + if self.is_decoder: + # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. + # Further calls to cross_attention layer can then reuse all cross-attention + # key/value_states (first "if" case) + # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of + # all previous decoder key/value_states. Further calls to uni-directional self-attention + # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) + # if encoder bi-directional self-attention `past_key_value` is always `None` + past_key_value = (key_layer, value_layer) + + key_layer, value_layer, attention_mask = self.prefix_tuning( + key_layer, value_layer, hidden_states, attention_mask + ) + (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) + + if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": + query_length, key_length = query_layer.shape[2], key_layer.shape[2] + if use_cache: + position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( + -1, 1 + ) + else: + position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) + position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) + distance = position_ids_l - position_ids_r + + positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) + positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility + + if self.position_embedding_type == "relative_key": + relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores + elif self.position_embedding_type == "relative_key_query": + relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key + + attention_scores = attention_scores / math.sqrt(self.attention_head_size) + if attention_mask is not None: + # Apply the attention mask is (precomputed for all layers in RobertaModel forward() function) + attention_scores = attention_scores + attention_mask + + # Normalize the attention scores to probabilities. + attention_probs = nn.functional.softmax(attention_scores, dim=-1) + + # This is actually dropping out entire tokens to attend to, which might + # seem a bit unusual, but is taken from the original Transformer paper. + attention_probs = self.dropout(attention_probs) + + # Mask heads if we want to + if head_mask is not None: + attention_probs = attention_probs * head_mask + + context_layer = torch.matmul(attention_probs, value_layer) + + context_layer = context_layer.permute(0, 2, 1, 3).contiguous() + new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) + context_layer = context_layer.view(new_context_layer_shape) + + outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) + + if self.is_decoder: + outputs = outputs + (past_key_value,) + return outputs + + +# Copied from transformers.models.modeling_bert.BertSelfOutput +class RobertaSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, RobertaSelfOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states + + +# Copied from transformers.models.bert.modeling_bert.BertOutput +class RobertaOutputWithAdapters(BertOutputAdaptersMixin, RobertaOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states diff --git a/adapters/src/adapters/models/t5/__init__.py b/adapters/src/adapters/models/t5/__init__.py new file mode 100644 index 00000000..c1b30b1f --- /dev/null +++ b/adapters/src/adapters/models/t5/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["T5AdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import T5AdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/t5/adapter_model.py b/adapters/src/adapters/models/t5/adapter_model.py new file mode 100644 index 00000000..b544252c --- /dev/null +++ b/adapters/src/adapters/models/t5/adapter_model.py @@ -0,0 +1,202 @@ +import logging + +import torch + +from transformers.models.t5.modeling_t5 import T5_INPUTS_DOCSTRING, T5_START_DOCSTRING, T5Model, T5PreTrainedModel +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...composition import adjust_tensors_for_parallel +from ...heads import ModelWithFlexibleHeadsAdaptersMixin, Seq2SeqLMHead +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +logger = logging.getLogger(__name__) + + +@add_start_docstrings("T5 Model with the option to add multiple flexible prediction heads on top.", T5_START_DOCSTRING) +class T5AdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, T5PreTrainedModel): + _tied_weights_keys = [ + "encoder.embed_tokens.weight", + "decoder.embed_tokens.weight", + ] + + _keys_to_ignore_on_load_unexpected = [ + r"decoder.block.0.layer.1.EncDecAttention.relative_attention_bias.weight", + ] + + head_types = [ + "classification", + "multilabel_classification", + "question_answering", + "seq2seq_lm", + ] + + def __init__(self, config): + super().__init__(config) + + self.transformer = T5Model(config) + init(self.transformer) + + self._init_head_modules() + + self.init_weights() + + # Model parallel + self.model_parallel = False + self.device_map = None + + def get_encoder(self): + return self.transformer.encoder + + def get_decoder(self): + return self.transformer.decoder + + @add_start_docstrings_to_model_forward(T5_INPUTS_DOCSTRING) + def forward( + self, + input_ids=None, + attention_mask=None, + decoder_input_ids=None, + decoder_attention_mask=None, + head_mask=None, + decoder_head_mask=None, + cross_attn_head_mask=None, + encoder_outputs=None, + past_key_values=None, + inputs_embeds=None, + decoder_inputs_embeds=None, + labels=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + if decoder_input_ids is None and decoder_inputs_embeds is None: + # Check if we're using a LM head + if labels is not None and any([isinstance(head, Seq2SeqLMHead) for head in self._get_used_heads(head)]): + # get decoder inputs from shifting lm labels to the right + decoder_input_ids = self._shift_right(labels) + else: + # decoder_input_ids from input_ids if no decoder_input_ids are provided + decoder_input_ids = self._shift_right(input_ids) + + model_output, context = self.transformer( + input_ids=input_ids, + attention_mask=attention_mask, + decoder_input_ids=decoder_input_ids, + decoder_attention_mask=decoder_attention_mask, + head_mask=head_mask, + decoder_head_mask=decoder_head_mask, + cross_attn_head_mask=cross_attn_head_mask, + encoder_outputs=encoder_outputs, + past_key_values=past_key_values, + inputs_embeds=inputs_embeds, + decoder_inputs_embeds=decoder_inputs_embeds, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + sequence_output = model_output[0] + # ToDo move head to device for parallel forward pass + + if self.config.tie_word_embeddings: + # Rescale output before projecting on vocab + # See https://github.com/tensorflow/mesh/blob/fa19d69eafc9a482aff0b59ddd96b025c0cb207d/mesh_tensorflow/transformer/transformer.py#L586 + new_hidden_state = sequence_output * (self.config.d_model**-0.5) + if isinstance(model_output, tuple): + model_output = (new_hidden_state,) + model_output[1:] + else: + model_output["last_hidden_state"] = new_hidden_state + + # sequence classification based on last token in sequence + if input_ids is not None and sequence_output.shape[1] == input_ids.shape[1]: + eos_mask = input_ids.eq(self.config.eos_token_id) + (eos_mask,) = adjust_tensors_for_parallel(sequence_output, eos_mask) + if len(torch.unique(eos_mask.sum(1))) > 1: + raise ValueError("All examples must have the same number of tokens.") + cls_representation = sequence_output[eos_mask, :].view( + sequence_output.size(0), -1, sequence_output.size(-1) + )[:, -1, :] + else: + cls_representation = sequence_output + + kwargs["labels"] = labels + head_outputs = self.forward_head( + model_output, + head_name=head, + cls_output=cls_representation, + return_dict=return_dict, + **kwargs, + ) + return head_outputs + + # Copied from T5ForConditionalGeneration + def prepare_inputs_for_generation( + self, + input_ids, + past=None, + attention_mask=None, + head_mask=None, + decoder_head_mask=None, + cross_attn_head_mask=None, + use_cache=None, + encoder_outputs=None, + **kwargs + ): + # cut decoder_input_ids if past is used + if past is not None: + input_ids = input_ids[:, -1:] + + return { + "decoder_input_ids": input_ids, + "past_key_values": past, + "encoder_outputs": encoder_outputs, + "attention_mask": attention_mask, + "head_mask": head_mask, + "decoder_head_mask": decoder_head_mask, + "cross_attn_head_mask": cross_attn_head_mask, + "use_cache": use_cache, + "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), + } + + # Copied from T5ForConditionalGeneration + def prepare_decoder_input_ids_from_labels(self, labels: torch.Tensor): + return self._shift_right(labels) + + # Copied from T5ForConditionalGeneration + def _reorder_cache(self, past, beam_idx): + # if decoder past is not included in output + # speedy decoding is disabled and no need to reorder + if past is None: + logger.warning("You might want to consider setting `use_cache=True` to speed up decoding") + return past + + reordered_decoder_past = () + for layer_past_states in past: + # get the correct batch idx from layer past batch dim + # batch dim of `past` is at 2nd position + reordered_layer_past_states = () + for layer_past_state in layer_past_states: + # need to set correct `past` for each of the four key / value states + reordered_layer_past_states = reordered_layer_past_states + ( + layer_past_state.index_select(0, beam_idx.to(layer_past_state.device)), + ) + + assert reordered_layer_past_states[0].shape == layer_past_states[0].shape + assert len(reordered_layer_past_states) == len(layer_past_states) + + reordered_decoder_past = reordered_decoder_past + (reordered_layer_past_states,) + return reordered_decoder_past diff --git a/adapters/src/adapters/models/t5/mixin_t5.py b/adapters/src/adapters/models/t5/mixin_t5.py new file mode 100644 index 00000000..1aa6227d --- /dev/null +++ b/adapters/src/adapters/models/t5/mixin_t5.py @@ -0,0 +1,133 @@ +from typing import Iterable, Optional, Tuple + +import torch +import torch.nn as nn + +from ...methods.bottleneck import BottleneckLayer +from ...methods.lora import LoRALinear +from ...methods.prefix_tuning import PrefixTuningLayer +from ...model_mixin import ( + EmbeddingAdaptersMixin, + InvertibleAdaptersMixin, + InvertibleAdaptersWrapperMixin, + ModelBaseAdaptersMixin, + ModelWithHeadsAdaptersMixin, +) + + +class T5AttentionAdaptersMixin: + """Adds adapters to the T5Attention module.""" + + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.q = LoRALinear.wrap(self.q, "selfattn", model_config, adapters_config, attn_key="q", bias=False) + self.k = LoRALinear.wrap(self.k, "selfattn", model_config, adapters_config, attn_key="k", bias=False) + self.v = LoRALinear.wrap(self.v, "selfattn", model_config, adapters_config, attn_key="v", bias=False) + + self.prefix_tuning = PrefixTuningLayer( + self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config + ) + + +class T5SelfAttentionLayerAdaptersMixin(BottleneckLayer): + def __init__(self): + super().__init__("mh_adapter", None) + + def init_adapters(self, model_config, adapters_config): + self.location_key = "mh_adapter" + super().init_adapters(model_config, adapters_config) + + +class T5CrossAttentionLayerAdaptersMixin(BottleneckLayer): + def __init__(self): + super().__init__("cross_adapter", None) + + def init_adapters(self, model_config, adapters_config): + self.location_key = "cross_adapter" + self.EncDecAttention.location_key = "cross" + super().init_adapters(model_config, adapters_config) + + +class T5FFLayerAdaptersMixin(BottleneckLayer): + def __init__(self): + super().__init__("output_adapter", None) + + def init_adapters(self, model_config, adapters_config): + self.location_key = "output_adapter" + super().init_adapters(model_config, adapters_config) + + if hasattr(self.DenseReluDense, "wi_1"): + self.DenseReluDense.wi_1 = LoRALinear.wrap( + self.DenseReluDense.wi_1, "intermediate", model_config, adapters_config + ) + else: + self.DenseReluDense.wi = LoRALinear.wrap( + self.DenseReluDense.wi, "intermediate", model_config, adapters_config + ) + self.DenseReluDense.wo = LoRALinear.wrap(self.DenseReluDense.wo, "output", model_config, adapters_config) + + +class T5BlockAdaptersMixin: + """Adds adapters to the T5Block module.""" + + def init_adapters(self, model_config, adapters_config): + location_key = "self" if self.is_decoder else "encoder" + self.layer[0].SelfAttention.location_key = location_key + self.layer[-1].location_key = location_key + + +class T5StackAdaptersMixin(InvertibleAdaptersMixin): + """Adds adapters to the T5Stack module.""" + + def init_adapters(self, model_config, adapters_config): + if not self.is_decoder: + InvertibleAdaptersMixin.init_adapters(self, self.config, adapters_config) + + def post_embedding_forward(self, embedding_output): + embedding_output = self.invertible_adapters_forward(embedding_output) + # Prompt tuning not yet supported + return embedding_output + + +class T5ModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersWrapperMixin, ModelBaseAdaptersMixin): + """Adds adapters to the T5Model class.""" + + invertible_adapters_base_name = "encoder" + support_prompt_tuning = False + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + global_i = 0 + if hasattr(self, "encoder"): + global_i = len(self.encoder.block) + for i, layer in enumerate(self.encoder.block): + yield i, layer + if hasattr(self, "decoder"): + for i, layer in enumerate(self.decoder.block, start=global_i): + yield i, layer + + +# Stating "labels" and "input_ids" explicitly is required for training using Trainer class +class T5ForCondiditionalGenerationWithHeadsMixin(ModelWithHeadsAdaptersMixin, T5ModelAdaptersMixin): + def forward( + self, + *args, + input_ids: Optional[torch.LongTensor] = None, + labels: Optional[torch.LongTensor] = None, + **kwargs, + ): + return super().forward(*args, input_ids=input_ids, labels=labels, **kwargs) + + +# Stating "start_positions"/"end_positions" and "input_ids" explicitly is required for training using Trainer class +class T5ForQuestionAnsweringWithHeadsMixin(ModelWithHeadsAdaptersMixin, T5ModelAdaptersMixin): + def forward( + self, + *args, + input_ids: Optional[torch.LongTensor] = None, + start_positions: Optional[torch.LongTensor] = None, + end_positions: Optional[torch.LongTensor] = None, + **kwargs, + ): + return super().forward( + *args, input_ids=input_ids, start_positions=start_positions, end_positions=end_positions, **kwargs + ) diff --git a/adapters/src/adapters/models/t5/modeling_t5.py b/adapters/src/adapters/models/t5/modeling_t5.py new file mode 100644 index 00000000..b366b9ce --- /dev/null +++ b/adapters/src/adapters/models/t5/modeling_t5.py @@ -0,0 +1,484 @@ +# coding=utf-8 +# Copyright 2018 Mesh TensorFlow authors, T5 Authors and HuggingFace Inc. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch T5 model.""" + +import torch +from torch import nn +from torch.utils.checkpoint import checkpoint + +from transformers.modeling_outputs import BaseModelOutputWithPastAndCrossAttentions +from transformers.models.t5.modeling_t5 import ( + T5Attention, + T5LayerCrossAttention, + T5LayerFF, + T5LayerSelfAttention, + T5Stack, +) +from transformers.utils import logging + +from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from .mixin_t5 import ( + T5AttentionAdaptersMixin, + T5CrossAttentionLayerAdaptersMixin, + T5FFLayerAdaptersMixin, + T5SelfAttentionLayerAdaptersMixin, + T5StackAdaptersMixin, +) + + +logger = logging.get_logger(__name__) + + +class T5LayerFFWithAdapters(T5FFLayerAdaptersMixin, T5LayerFF): + def forward(self, hidden_states): + forwarded_states = self.layer_norm(hidden_states) + forwarded_states = self.DenseReluDense(forwarded_states) + hidden_states = self.bottleneck_layer_forward( + hidden_states=self.dropout(forwarded_states), residual_input=hidden_states, layer_norm=None + ) + return hidden_states + + +class T5AttentionWithAdapters(T5AttentionAdaptersMixin, T5Attention): + def forward( + self, + hidden_states, + mask=None, + key_value_states=None, + position_bias=None, + past_key_value=None, + layer_head_mask=None, + query_length=None, + use_cache=False, + output_attentions=False, + ): + """ + Self-attention (if key_value_states is None) or attention over source sentence (provided by key_value_states). + """ + # Input is (batch_size, seq_length, dim) + # Mask is (batch_size, key_length) (non-causal) or (batch_size, key_length, key_length) + # past_key_value[0] is (batch_size, n_heads, q_len - 1, dim_per_head) + batch_size, seq_length = hidden_states.shape[:2] + + real_seq_length = seq_length + + if past_key_value is not None: + assert ( + len(past_key_value) == 2 + ), f"past_key_value should have 2 past states: keys and values. Got { len(past_key_value)} past states" + real_seq_length += past_key_value[0].shape[2] if query_length is None else query_length + + key_length = real_seq_length if key_value_states is None else key_value_states.shape[1] + + def shape(states): + """projection""" + return states.view(batch_size, -1, self.n_heads, self.key_value_proj_dim).transpose(1, 2) + + def unshape(states): + """reshape""" + return states.transpose(1, 2).contiguous().view(batch_size, -1, self.inner_dim) + + def project(hidden_states, proj_layer, key_value_states, past_key_value): + """projects hidden states correctly to key/query states""" + if key_value_states is None: + # self-attn + # (batch_size, n_heads, seq_length, dim_per_head) + hidden_states = shape(proj_layer(hidden_states)) + elif past_key_value is None: + # cross-attn + # (batch_size, n_heads, seq_length, dim_per_head) + hidden_states = shape(proj_layer(key_value_states)) + + if past_key_value is not None: + if key_value_states is None: + # self-attn + # (batch_size, n_heads, key_length, dim_per_head) + hidden_states = torch.cat([past_key_value, hidden_states], dim=2) + elif past_key_value.shape[2] != key_value_states.shape[1]: + # checking that the `sequence_length` of the `past_key_value` is the same as + # the provided `key_value_states` to support prefix tuning + # cross-attn + # (batch_size, n_heads, seq_length, dim_per_head) + hidden_states = shape(proj_layer(key_value_states)) + else: + # cross-attn + hidden_states = past_key_value + return hidden_states + + # get query states + query_states = shape(self.q(hidden_states)) # (batch_size, n_heads, seq_length, dim_per_head) + + # get key/value states + key_states = project( + hidden_states, self.k, key_value_states, past_key_value[0] if past_key_value is not None else None + ) + value_states = project( + hidden_states, self.v, key_value_states, past_key_value[1] if past_key_value is not None else None + ) + + query_states, key_states, value_states = match_attn_matrices_for_parallel( + query_states, key_states, value_states + ) + (mask,) = adjust_tensors_for_parallel(query_states, mask) + + present_key_value_state = (key_states, value_states) if (self.is_decoder and use_cache) else None + + key_states, value_states, mask = self.prefix_tuning(key_states, value_states, hidden_states, mask) + (query_states,) = adjust_tensors_for_parallel(key_states, query_states) + batch_size, key_length = key_states.shape[0], key_states.shape[2] + + # compute scores + scores = torch.matmul( + query_states, key_states.transpose(3, 2) + ) # equivalent of torch.einsum("bnqd,bnkd->bnqk", query_states, key_states), compatible with onnx op>9 + + if position_bias is None: + if not self.has_relative_attention_bias: + position_bias = torch.zeros( + (1, self.n_heads, real_seq_length, key_length), device=scores.device, dtype=scores.dtype + ) + if self.gradient_checkpointing and self.training: + position_bias.requires_grad = True + else: + position_bias = self.compute_bias(real_seq_length, key_length, device=scores.device) + + # if key and values are already calculated + # we want only the last query position bias + if past_key_value is not None: + position_bias = position_bias[:, :, -hidden_states.size(1) :, :] + + if mask is not None: + position_bias = position_bias + mask # (batch_size, n_heads, seq_length, key_length) + + if self.pruned_heads: + mask = torch.ones(position_bias.shape[1]) + mask[list(self.pruned_heads)] = 0 + position_bias_masked = position_bias[:, mask.bool()] + else: + position_bias_masked = position_bias + + scores += position_bias_masked + attn_weights = nn.functional.softmax(scores.float(), dim=-1).type_as( + scores + ) # (batch_size, n_heads, seq_length, key_length) + attn_weights = nn.functional.dropout( + attn_weights, p=self.dropout, training=self.training + ) # (batch_size, n_heads, seq_length, key_length) + + # Mask heads if we want to + if layer_head_mask is not None: + attn_weights = attn_weights * layer_head_mask + + attn_output = unshape(torch.matmul(attn_weights, value_states)) # (batch_size, seq_length, dim) + attn_output = self.o(attn_output) + + outputs = (attn_output,) + (present_key_value_state,) + (position_bias,) + + if output_attentions: + outputs = outputs + (attn_weights,) + return outputs + + +class T5LayerSelfAttentionWithAdapters(T5SelfAttentionLayerAdaptersMixin, T5LayerSelfAttention): + def forward( + self, + hidden_states, + attention_mask=None, + position_bias=None, + layer_head_mask=None, + past_key_value=None, + use_cache=False, + output_attentions=False, + ): + normed_hidden_states = self.layer_norm(hidden_states) + attention_output = self.SelfAttention( + normed_hidden_states, + mask=attention_mask, + position_bias=position_bias, + layer_head_mask=layer_head_mask, + past_key_value=past_key_value, + use_cache=use_cache, + output_attentions=output_attentions, + ) + hidden_states = self.bottleneck_layer_forward( + hidden_states=self.dropout(attention_output[0]), residual_input=hidden_states, layer_norm=None + ) + outputs = (hidden_states,) + attention_output[1:] # add attentions if we output them + return outputs + + +class T5LayerCrossAttentionWithAdapters(T5CrossAttentionLayerAdaptersMixin, T5LayerCrossAttention): + def forward( + self, + hidden_states, + key_value_states, + attention_mask=None, + position_bias=None, + layer_head_mask=None, + past_key_value=None, + use_cache=False, + query_length=None, + output_attentions=False, + ): + normed_hidden_states = self.layer_norm(hidden_states) + attention_output = self.EncDecAttention( + normed_hidden_states, + mask=attention_mask, + key_value_states=key_value_states, + position_bias=position_bias, + layer_head_mask=layer_head_mask, + past_key_value=past_key_value, + use_cache=use_cache, + query_length=query_length, + output_attentions=output_attentions, + ) + layer_output = self.bottleneck_layer_forward( + hidden_states=self.dropout(attention_output[0]), residual_input=hidden_states, layer_norm=None + ) + outputs = (layer_output,) + attention_output[1:] # add attentions if we output them + return outputs + + +class T5StackWithAdapters(T5StackAdaptersMixin, T5Stack): + def forward( + self, + input_ids=None, + attention_mask=None, + encoder_hidden_states=None, + encoder_attention_mask=None, + inputs_embeds=None, + head_mask=None, + cross_attn_head_mask=None, + past_key_values=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + ): + # Model parallel + if self.model_parallel: + torch.cuda.set_device(self.first_device) + self.embed_tokens = self.embed_tokens.to(self.first_device) + use_cache = use_cache if use_cache is not None else self.config.use_cache + output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions + output_hidden_states = ( + output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states + ) + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + if self.is_decoder and encoder_hidden_states is not None: + input_ids, encoder_attention_mask = adjust_tensors_for_parallel( + encoder_hidden_states, input_ids, encoder_attention_mask + ) + + if input_ids is not None and inputs_embeds is not None: + err_msg_prefix = "decoder_" if self.is_decoder else "" + raise ValueError( + f"You cannot specify both {err_msg_prefix}input_ids and {err_msg_prefix}inputs_embeds at the same time" + ) + elif input_ids is not None: + input_shape = input_ids.size() + input_ids = input_ids.view(-1, input_shape[-1]) + elif inputs_embeds is not None: + input_shape = inputs_embeds.size()[:-1] + else: + err_msg_prefix = "decoder_" if self.is_decoder else "" + raise ValueError(f"You have to specify either {err_msg_prefix}input_ids or {err_msg_prefix}inputs_embeds") + + if inputs_embeds is None: + if self.embed_tokens is None: + raise ValueError("You have to initialize the model with valid token embeddings") + inputs_embeds = self.embed_tokens(input_ids) + + batch_size, seq_length = input_shape + + # required mask seq length can be calculated via length of past + mask_seq_length = past_key_values[0][0].shape[2] + seq_length if past_key_values is not None else seq_length + + if use_cache is True: + if not self.is_decoder: + raise ValueError(f"`use_cache` can only be set to `True` if {self} is used as a decoder") + + if attention_mask is None: + attention_mask = torch.ones(batch_size, mask_seq_length, device=inputs_embeds.device) + if self.is_decoder and encoder_attention_mask is None and encoder_hidden_states is not None: + encoder_seq_length = encoder_hidden_states.shape[1] + encoder_attention_mask = torch.ones( + batch_size, encoder_seq_length, device=inputs_embeds.device, dtype=torch.long + ) + + # initialize past_key_values with `None` if past does not exist + if past_key_values is None: + past_key_values = [None] * len(self.block) + + # We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length] + # ourselves in which case we just need to make it broadcastable to all heads. + extended_attention_mask = self.get_extended_attention_mask(attention_mask, input_shape) + + # If a 2D or 3D attention mask is provided for the cross-attention + # we need to make broadcastable to [batch_size, num_heads, seq_length, seq_length] + if self.is_decoder and encoder_hidden_states is not None: + encoder_batch_size, encoder_sequence_length, _ = encoder_hidden_states.size() + encoder_hidden_shape = (encoder_batch_size, encoder_sequence_length) + if encoder_attention_mask is None: + encoder_attention_mask = torch.ones(encoder_hidden_shape, device=inputs_embeds.device) + encoder_extended_attention_mask = self.invert_attention_mask(encoder_attention_mask) + else: + encoder_extended_attention_mask = None + + if self.gradient_checkpointing and self.training: + if use_cache: + logger.warning_once( + "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`..." + ) + use_cache = False + + # Prepare head mask if needed + head_mask = self.get_head_mask(head_mask, self.config.num_layers) + cross_attn_head_mask = self.get_head_mask(cross_attn_head_mask, self.config.num_layers) + present_key_value_states = () if use_cache else None + all_hidden_states = () if output_hidden_states else None + all_attentions = () if output_attentions else None + all_cross_attentions = () if (output_attentions and self.is_decoder) else None + position_bias = None + encoder_decoder_position_bias = None + + hidden_states = self.dropout(inputs_embeds) + if not self.is_decoder: + hidden_states = self.post_embedding_forward(hidden_states) + + for i, (layer_module, past_key_value) in enumerate(zip(self.block, past_key_values)): + layer_head_mask = head_mask[i] + cross_attn_layer_head_mask = cross_attn_head_mask[i] + # Model parallel + if self.model_parallel: + torch.cuda.set_device(hidden_states.device) + # Ensure that attention_mask is always on the same device as hidden_states + if attention_mask is not None: + attention_mask = attention_mask.to(hidden_states.device) + if position_bias is not None: + position_bias = position_bias.to(hidden_states.device) + if encoder_hidden_states is not None: + encoder_hidden_states = encoder_hidden_states.to(hidden_states.device) + if encoder_extended_attention_mask is not None: + encoder_extended_attention_mask = encoder_extended_attention_mask.to(hidden_states.device) + if encoder_decoder_position_bias is not None: + encoder_decoder_position_bias = encoder_decoder_position_bias.to(hidden_states.device) + if layer_head_mask is not None: + layer_head_mask = layer_head_mask.to(hidden_states.device) + if cross_attn_layer_head_mask is not None: + cross_attn_layer_head_mask = cross_attn_layer_head_mask.to(hidden_states.device) + if output_hidden_states: + all_hidden_states = all_hidden_states + (hidden_states,) + + if self.gradient_checkpointing and self.training: + + def create_custom_forward(module): + def custom_forward(*inputs): + return tuple(module(*inputs, use_cache, output_attentions)) + + return custom_forward + + layer_outputs = checkpoint( + create_custom_forward(layer_module), + hidden_states, + extended_attention_mask, + position_bias, + encoder_hidden_states, + encoder_extended_attention_mask, + encoder_decoder_position_bias, + layer_head_mask, + cross_attn_layer_head_mask, + None, # past_key_value is always None with gradient checkpointing + ) + else: + layer_outputs = layer_module( + hidden_states, + attention_mask=extended_attention_mask, + position_bias=position_bias, + encoder_hidden_states=encoder_hidden_states, + encoder_attention_mask=encoder_extended_attention_mask, + encoder_decoder_position_bias=encoder_decoder_position_bias, + layer_head_mask=layer_head_mask, + cross_attn_layer_head_mask=cross_attn_layer_head_mask, + past_key_value=past_key_value, + use_cache=use_cache, + output_attentions=output_attentions, + ) + + # layer_outputs is a tuple with: + # hidden-states, key-value-states, (self-attention position bias), (self-attention weights), (cross-attention position bias), (cross-attention weights) + if use_cache is False: + layer_outputs = layer_outputs[:1] + (None,) + layer_outputs[1:] + + hidden_states, present_key_value_state = layer_outputs[:2] + + attention_mask, extended_attention_mask = adjust_tensors_for_parallel( + hidden_states, attention_mask, extended_attention_mask + ) + + # We share the position biases between the layers - the first layer store them + # layer_outputs = hidden-states, key-value-states (self-attention position bias), (self-attention weights), + # (cross-attention position bias), (cross-attention weights) + position_bias = layer_outputs[2] + if self.is_decoder and encoder_hidden_states is not None: + encoder_decoder_position_bias = layer_outputs[4 if output_attentions else 3] + # append next layer key value states + if use_cache: + present_key_value_states = present_key_value_states + (present_key_value_state,) + + if position_bias is not None: + position_bias = adjust_tensors_for_parallel(hidden_states, position_bias)[0] + if encoder_decoder_position_bias is not None: + encoder_decoder_position_bias = adjust_tensors_for_parallel( + hidden_states, encoder_decoder_position_bias + )[0] + + if output_attentions: + all_attentions = all_attentions + (layer_outputs[3],) + if self.is_decoder: + all_cross_attentions = all_cross_attentions + (layer_outputs[5],) + + # Model Parallel: If it's the last layer for that device, put things on the next device + if self.model_parallel: + for k, v in self.device_map.items(): + if i == v[-1] and "cuda:" + str(k) != self.last_device: + hidden_states = hidden_states.to("cuda:" + str(k + 1)) + + hidden_states = self.final_layer_norm(hidden_states) + hidden_states = self.dropout(hidden_states) + + # Add last layer + if output_hidden_states: + all_hidden_states = all_hidden_states + (hidden_states,) + + if not return_dict: + return tuple( + v + for v in [ + hidden_states, + present_key_value_states, + all_hidden_states, + all_attentions, + all_cross_attentions, + ] + if v is not None + ) + return BaseModelOutputWithPastAndCrossAttentions( + last_hidden_state=hidden_states, + past_key_values=present_key_value_states, + hidden_states=all_hidden_states, + attentions=all_attentions, + cross_attentions=all_cross_attentions, + ) diff --git a/adapters/src/adapters/models/vit/__init__.py b/adapters/src/adapters/models/vit/__init__.py new file mode 100644 index 00000000..8f87c889 --- /dev/null +++ b/adapters/src/adapters/models/vit/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["ViTAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import ViTAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/vit/adapter_model.py b/adapters/src/adapters/models/vit/adapter_model.py new file mode 100644 index 00000000..ece9ec52 --- /dev/null +++ b/adapters/src/adapters/models/vit/adapter_model.py @@ -0,0 +1,88 @@ +from typing import Optional + +import torch + +from transformers.models.vit.modeling_vit import ( + VIT_INPUTS_DOCSTRING, + VIT_START_DOCSTRING, + ViTModel, + ViTPreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...wrappers import init + + +@add_start_docstrings( + """ViT Model transformer with the option to add multiple flexible heads on top.""", + VIT_START_DOCSTRING, +) +class ViTAdapterModel(ModelWithFlexibleHeadsAdaptersMixin, ViTPreTrainedModel): + + head_types = [ + "image_classification", + ] + + def __init__(self, config): + super().__init__(config) + + self.vit = ViTModel(config) + init(self.vit) + + self._init_head_modules() + + # Initialize weights and apply final processing + self.post_init() + + @add_start_docstrings_to_model_forward(VIT_INPUTS_DOCSTRING) + def forward( + self, + pixel_values: Optional[torch.Tensor] = None, + head_mask: Optional[torch.Tensor] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + interpolate_pos_encoding: Optional[bool] = None, + return_dict: Optional[bool] = None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs, + ): + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.vit( + pixel_values, + head_mask=head_mask, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + interpolate_pos_encoding=interpolate_pos_encoding, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + + # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads + if not return_dict: + head_inputs = (outputs[0],) + outputs[2:] + else: + head_inputs = outputs + pooled_output = outputs[1] + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + head_inputs, + head_name=head, + return_dict=return_dict, + pooled_output=pooled_output, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs diff --git a/adapters/src/adapters/models/vit/mixin_vit.py b/adapters/src/adapters/models/vit/mixin_vit.py new file mode 100644 index 00000000..9b4a92e4 --- /dev/null +++ b/adapters/src/adapters/models/vit/mixin_vit.py @@ -0,0 +1,60 @@ +from typing import Iterable, Tuple + +import torch.nn as nn + +from ...methods.bottleneck import BottleneckLayer +from ...methods.lora import LoRALinear +from ...methods.prefix_tuning import PrefixTuningLayer +from ...model_mixin import ModelBaseAdaptersMixin + + +class ViTSelfAttentionAdaptersMixin: + def init_adapters(self, model_config, adapters_config): + self.location_key = "self" + + # Wrap layers for LoRA + self.query = LoRALinear.wrap(self.query, "selfattn", model_config, adapters_config, attn_key="q") + self.key = LoRALinear.wrap(self.key, "selfattn", model_config, adapters_config, attn_key="k") + self.value = LoRALinear.wrap(self.value, "selfattn", model_config, adapters_config, attn_key="v") + + self.prefix_tuning = PrefixTuningLayer( + self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config + ) + + +class ViTIntermediateAdaptersMixin: + def init_adapters(self, model_config, adapters_config): + # Wrap layers for LoRA + self.dense = LoRALinear.wrap(self.dense, "intermediate", model_config, adapters_config) + + +class ViTOutputAdaptersMixin: + """Adds adapters to the ViTOutput module.""" + + def init_adapters(self, model_config, adapters_config): + self.output_adapters = BottleneckLayer("output_adapter") + + # Wrap layers for LoRA + self.dense = LoRALinear.wrap(self.dense, "output", model_config, adapters_config) + + +# Unlike BERT, self attention adapters are added to Layer module in ViT +class ViTLayerAdaptersMixin: + """Adds adapters to the ViTSelfOutput module.""" + + def init_adapters(self, model_config, adapters_config): + self.attention_adapters = BottleneckLayer("mh_adapter") + + +class ViTModelAdaptersMixin(ModelBaseAdaptersMixin): + """Adds adapters to the ViTModel class.""" + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + + # Register hook for post embedding forward + self.embeddings.register_forward_hook(self.post_embedding_forward) + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.encoder.layer): + yield i, layer diff --git a/adapters/src/adapters/models/vit/modeling_vit.py b/adapters/src/adapters/models/vit/modeling_vit.py new file mode 100644 index 00000000..f8c02bd9 --- /dev/null +++ b/adapters/src/adapters/models/vit/modeling_vit.py @@ -0,0 +1,110 @@ +# coding=utf-8 +# Copyright 2021 Google AI, Ross Wightman, The HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch ViT model.""" + + +import math +from typing import Optional, Tuple, Union + +import torch +import torch.utils.checkpoint +from torch import nn + +from adapters.composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from transformers.models.vit.modeling_vit import ViTLayer, ViTOutput, ViTSelfAttention + +from .mixin_vit import ViTLayerAdaptersMixin, ViTOutputAdaptersMixin, ViTSelfAttentionAdaptersMixin + + +class ViTSelfAttentionWithAdapters(ViTSelfAttentionAdaptersMixin, ViTSelfAttention): + def forward( + self, hidden_states, head_mask: Optional[torch.Tensor] = None, output_attentions: bool = False + ) -> Union[Tuple[torch.Tensor, torch.Tensor], Tuple[torch.Tensor]]: + mixed_query_layer = self.query(hidden_states) + + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + query_layer = self.transpose_for_scores(mixed_query_layer) + + query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) + + key_layer, value_layer, _ = self.prefix_tuning(key_layer, value_layer, hidden_states) + (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) + + attention_scores = attention_scores / math.sqrt(self.attention_head_size) + + # Normalize the attention scores to probabilities. + attention_probs = nn.functional.softmax(attention_scores, dim=-1) + + # This is actually dropping out entire tokens to attend to, which might + # seem a bit unusual, but is taken from the original Transformer paper. + attention_probs = self.dropout(attention_probs) + + # Mask heads if we want to + if head_mask is not None: + attention_probs = attention_probs * head_mask + + context_layer = torch.matmul(attention_probs, value_layer) + + context_layer = context_layer.permute(0, 2, 1, 3).contiguous() + new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) + context_layer = context_layer.view(new_context_layer_shape) + + outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) + + return outputs + + +class ViTOutputWithAdapters(ViTOutputAdaptersMixin, ViTOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.output_adapters.bottleneck_layer_forward(hidden_states, input_tensor, None) + + return hidden_states + + +class ViTLayerWithAdapters(ViTLayerAdaptersMixin, ViTLayer): + """This corresponds to the Block class in the timm implementation.""" + + def forward( + self, + hidden_states: torch.Tensor, + head_mask: Optional[torch.Tensor] = None, + output_attentions: bool = False, + ) -> Union[Tuple[torch.Tensor, torch.Tensor], Tuple[torch.Tensor]]: + self_attention_outputs = self.attention( + self.layernorm_before(hidden_states), # in ViT, layernorm is applied before self-attention + head_mask, + output_attentions=output_attentions, + ) + attention_output = self_attention_outputs[0] + outputs = self_attention_outputs[1:] # add self attentions if we output attention weights + + hidden_states = self.attention_adapters.bottleneck_layer_forward(attention_output, hidden_states, None) + + # in ViT, layernorm is also applied after self-attention + layer_output = self.layernorm_after(hidden_states) + layer_output = self.intermediate(layer_output) + + # second residual connection is done here + layer_output = self.output(layer_output, hidden_states) + + outputs = (layer_output,) + outputs + + return outputs diff --git a/adapters/src/adapters/models/xlm_roberta/__init__.py b/adapters/src/adapters/models/xlm_roberta/__init__.py new file mode 100644 index 00000000..d744df18 --- /dev/null +++ b/adapters/src/adapters/models/xlm_roberta/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["XLMRobertaAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import XLMRobertaAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/xlm_roberta/adapter_model.py b/adapters/src/adapters/models/xlm_roberta/adapter_model.py new file mode 100644 index 00000000..8acfde79 --- /dev/null +++ b/adapters/src/adapters/models/xlm_roberta/adapter_model.py @@ -0,0 +1,127 @@ +from transformers.models.xlm_roberta.modeling_xlm_roberta import ( + XLM_ROBERTA_INPUTS_DOCSTRING, + XLM_ROBERTA_START_DOCSTRING, + XLMRobertaModel, + XLMRobertaPreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + """XLM-Roberta Model transformer with the option to add multiple flexible heads on top.""", + XLM_ROBERTA_START_DOCSTRING, +) +class XLMRobertaAdapterModel( + EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, XLMRobertaPreTrainedModel +): + + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "multiple_choice", + "question_answering", + "dependency_parsing", + "masked_lm", + "causal_lm", + ] + + def __init__(self, config): + super().__init__(config) + + self.roberta = XLMRobertaModel(config) + init(self.roberta) + + self._init_head_modules() + + self.init_weights() + + @add_start_docstrings_to_model_forward(XLM_ROBERTA_INPUTS_DOCSTRING.format("batch_size, sequence_length")) + def forward( + self, + input_ids=None, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + head=None, + output_adapter_gating_scores=False, + output_adapter_fusion_attentions=False, + **kwargs + ): + input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None + position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None + token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None + attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None + inputs_embeds = ( + inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) + if inputs_embeds is not None + else None + ) + + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.roberta( + input_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads + if not return_dict: + head_inputs = (outputs[0],) + outputs[2:] + else: + head_inputs = outputs + pooled_output = outputs[1] + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + head_inputs, + head_name=head, + attention_mask=attention_mask, + return_dict=return_dict, + pooled_output=pooled_output, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs + + # Copied from RobertaForCausalLM + def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): + input_shape = input_ids.shape + # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly + if attention_mask is None: + attention_mask = input_ids.new_ones(input_shape) + + # cut decoder_input_ids if past is used + if past is not None: + input_ids = input_ids[:, -1:] + + return { + "input_ids": input_ids, + "attention_mask": attention_mask, + "past_key_values": past, + "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), + } diff --git a/adapters/src/adapters/models/xlm_roberta/modeling_xlm_roberta.py b/adapters/src/adapters/models/xlm_roberta/modeling_xlm_roberta.py new file mode 100644 index 00000000..959f75c0 --- /dev/null +++ b/adapters/src/adapters/models/xlm_roberta/modeling_xlm_roberta.py @@ -0,0 +1,164 @@ +# coding=utf-8 +# Copyright 2019 Facebook AI Research and the HuggingFace Inc. team. +# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""PyTorch XLM-RoBERTa model.""" + +import math +from typing import Optional, Tuple + +import torch +import torch.utils.checkpoint +from torch import nn + +from transformers.models.xlm_roberta.modeling_xlm_roberta import ( + XLMRobertaOutput, + XLMRobertaSelfAttention, + XLMRobertaSelfOutput, +) + +from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from ...utils import prefix_attention_mask +from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin + + +# Copied from transformers.models.roberta.modeling_roberta.RobertaSelfAttention with Roberta->XLMRoberta +class XLMRobertaSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, XLMRobertaSelfAttention): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.FloatTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + encoder_hidden_states: Optional[torch.FloatTensor] = None, + encoder_attention_mask: Optional[torch.FloatTensor] = None, + past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, + output_attentions: Optional[bool] = False, + ) -> Tuple[torch.Tensor]: + attention_mask = prefix_attention_mask(attention_mask) # type: ignore + + mixed_query_layer = self.query(hidden_states) + + # If this is instantiated as a cross-attention module, the keys + # and values come from an encoder; the attention mask needs to be + # such that the encoder's padding tokens are not attended to. + is_cross_attention = encoder_hidden_states is not None + + if is_cross_attention and past_key_value is not None: + # reuse k,v, cross_attentions + key_layer = past_key_value[0] + value_layer = past_key_value[1] + attention_mask = encoder_attention_mask + elif is_cross_attention: + key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) + value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) + attention_mask = encoder_attention_mask + elif past_key_value is not None: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + key_layer = torch.cat([past_key_value[0], key_layer], dim=2) + value_layer = torch.cat([past_key_value[1], value_layer], dim=2) + else: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + + query_layer = self.transpose_for_scores(mixed_query_layer) + query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) + (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) + + use_cache = past_key_value is not None + if self.is_decoder: + # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. + # Further calls to cross_attention layer can then reuse all cross-attention + # key/value_states (first "if" case) + # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of + # all previous decoder key/value_states. Further calls to uni-directional self-attention + # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) + # if encoder bi-directional self-attention `past_key_value` is always `None` + past_key_value = (key_layer, value_layer) + + key_layer, value_layer, attention_mask = self.prefix_tuning( + key_layer, value_layer, hidden_states, attention_mask + ) + (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) + + if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": + query_length, key_length = query_layer.shape[2], key_layer.shape[2] + if use_cache: + position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( + -1, 1 + ) + else: + position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) + position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) + distance = position_ids_l - position_ids_r + + positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) + positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility + + if self.position_embedding_type == "relative_key": + relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores + elif self.position_embedding_type == "relative_key_query": + relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key + + attention_scores = attention_scores / math.sqrt(self.attention_head_size) + if attention_mask is not None: + # Apply the attention mask is (precomputed for all layers in XLMRobertaModel forward() function) + attention_scores = attention_scores + attention_mask + + # Normalize the attention scores to probabilities. + attention_probs = nn.functional.softmax(attention_scores, dim=-1) + + # This is actually dropping out entire tokens to attend to, which might + # seem a bit unusual, but is taken from the original Transformer paper. + attention_probs = self.dropout(attention_probs) + + # Mask heads if we want to + if head_mask is not None: + attention_probs = attention_probs * head_mask + + context_layer = torch.matmul(attention_probs, value_layer) + + context_layer = context_layer.permute(0, 2, 1, 3).contiguous() + new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) + context_layer = context_layer.view(new_context_layer_shape) + + outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) + + if self.is_decoder: + outputs = outputs + (past_key_value,) + return outputs + + +# Copied from transformers.models.roberta.modeling_roberta.RobertaSelfOutput with Roberta->XLMRoberta +class XLMRobertaSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, XLMRobertaSelfOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states + + +# Copied from transformers.models.roberta.modeling_roberta.RobertaOutput with Roberta->XLMRoberta +class XLMRobertaOutputWithAdapters(BertOutputAdaptersMixin, XLMRobertaOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) + return hidden_states diff --git a/adapters/src/adapters/models/xmod/__init__.py b/adapters/src/adapters/models/xmod/__init__.py new file mode 100644 index 00000000..7140f6f4 --- /dev/null +++ b/adapters/src/adapters/models/xmod/__init__.py @@ -0,0 +1,39 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2023 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = { + "adapter_model": ["XmodAdapterModel"], +} + + +if TYPE_CHECKING: + from .adapter_model import XmodAdapterModel + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/models/xmod/adapter_model.py b/adapters/src/adapters/models/xmod/adapter_model.py new file mode 100644 index 00000000..94cc43f7 --- /dev/null +++ b/adapters/src/adapters/models/xmod/adapter_model.py @@ -0,0 +1,133 @@ +from typing import Optional + +import torch + +from transformers.models.xmod.modeling_xmod import ( + XMOD_INPUTS_DOCSTRING, + XMOD_START_DOCSTRING, + XmodModel, + XmodPreTrainedModel, +) +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward + +from ...context import AdapterSetup +from ...heads import ModelWithFlexibleHeadsAdaptersMixin +from ...model_mixin import EmbeddingAdaptersWrapperMixin +from ...wrappers import init + + +@add_start_docstrings( + """X-MOD Model transformer with the option to add multiple flexible heads on top.""", + XMOD_START_DOCSTRING, +) +class XmodAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, XmodPreTrainedModel): + + head_types = [ + "classification", + "multilabel_classification", + "tagging", + "multiple_choice", + "question_answering", + "dependency_parsing", + "masked_lm", + "causal_lm", + ] + + def __init__(self, config): + super().__init__(config) + + self.roberta = XmodModel(config) + init(self.roberta) + + self._init_head_modules() + + self.init_weights() + + @add_start_docstrings_to_model_forward(XMOD_INPUTS_DOCSTRING.format("batch_size, sequence_length")) + def forward( + self, + input_ids: Optional[torch.Tensor] = None, + lang_ids: Optional[torch.LongTensor] = None, + attention_mask: Optional[torch.Tensor] = None, + token_type_ids: Optional[torch.Tensor] = None, + position_ids: Optional[torch.Tensor] = None, + head_mask: Optional[torch.Tensor] = None, + inputs_embeds: Optional[torch.Tensor] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + head: Optional[str] = None, + output_adapter_gating_scores: Optional[bool] = False, + output_adapter_fusion_attentions: Optional[bool] = False, + **kwargs + ): + # Flatten for multiple choice tasks + input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None + lang_ids = lang_ids.repeat(input_ids.size(0) * input_ids.size(1)) if lang_ids is not None else None + position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None + token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None + attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None + inputs_embeds = ( + inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) + if inputs_embeds is not None + else None + ) + + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + outputs, context = self.roberta( + input_ids, + lang_ids=lang_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + output_adapter_gating_scores=output_adapter_gating_scores, + output_adapter_fusion_attentions=output_adapter_fusion_attentions, + adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), + output_context=True, + ) + # required e.g. for prompt tuning in all models + kwargs["context"] = context + # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads + if not return_dict: + head_inputs = (outputs[0],) + outputs[2:] + else: + head_inputs = outputs + pooled_output = outputs[1] + + if head or AdapterSetup.get_context_head_setup() or self.active_head: + head_outputs = self.forward_head( + head_inputs, + head_name=head, + attention_mask=attention_mask, + return_dict=return_dict, + pooled_output=pooled_output, + **kwargs, + ) + return head_outputs + else: + # in case no head is used just return the output of the base model (including pooler output) + return outputs + + # Copied from RobertaForCausalLM + def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): + input_shape = input_ids.shape + # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly + if attention_mask is None: + attention_mask = input_ids.new_ones(input_shape) + + # cut decoder_input_ids if past is used + if past is not None: + input_ids = input_ids[:, -1:] + + return { + "input_ids": input_ids, + "attention_mask": attention_mask, + "past_key_values": past, + "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), + } diff --git a/adapters/src/adapters/models/xmod/mixin_xmod.py b/adapters/src/adapters/models/xmod/mixin_xmod.py new file mode 100644 index 00000000..bef4371f --- /dev/null +++ b/adapters/src/adapters/models/xmod/mixin_xmod.py @@ -0,0 +1,71 @@ +from typing import Iterable, Tuple + +import torch.nn as nn + +from transformers.utils import logging + +from ...composition import adjust_tensors_for_parallel_ +from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin + + +logger = logging.get_logger(__name__) + + +class XmodModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): + """Adds adapters to the BertModel module.""" + + def init_adapters(self, model_config, adapters_config): + super().init_adapters(model_config, adapters_config) + + # Set hook for parallel composition + for _, layer in self.iter_layers(): + self._set_layer_hook_for_parallel(layer) + + # Delete original adapter modules + for _, layer in self.iter_layers(): + del layer.output.adapter_modules + + # Register hook for post embedding forward + self.embeddings.register_forward_hook(self.post_embedding_forward) + + def _set_layer_hook_for_parallel(self, layer: nn.Module): + def hook(module, input): + # hook[1] is lang_ids tensor + adjust_tensors_for_parallel_(input[0], input[2]) + return input + + layer.register_forward_pre_hook(hook) + + def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: + for i, layer in enumerate(self.encoder.layer): + yield i, layer + + def forward(self, *args, **kwargs): + if "lang_ids" in kwargs and kwargs["lang_ids"] is not None: + raise ValueError( + "XmodModel with adapters does not support `lang_ids` as an argument. Use `set_active_adapters`" + " instead." + ) + else: + kwargs["lang_ids"] = 1 + return super().forward(*args, **kwargs) + + # Override adapter-specific methods in original implementation + + def set_default_language(self, language: str): + raise ValueError( + "`set_default_language` is not implemented for models using `adapters`. Use `set_active_adapters` instead." + ) + + def freeze_embeddings_and_language_adapters(self): + """ + Freeze the embeddings and language adapters of the model. Usually, this is applied before the model is + fine-tuned on a downstream task. + """ + # TODO: Replace this by a general method for `adapters`. + logger.info("Freezing embeddings") + for parameter in self.base_model.embeddings.parameters(): + parameter.requires_grad = False + logger.info("Freezing adapters") + for adapter_name in self.adapters_config: + self.apply_to_adapter_layers(lambda i, layer: layer.freeze_adapter(adapter_name)) diff --git a/adapters/src/adapters/models/xmod/modeling_xmod.py b/adapters/src/adapters/models/xmod/modeling_xmod.py new file mode 100644 index 00000000..e91131e9 --- /dev/null +++ b/adapters/src/adapters/models/xmod/modeling_xmod.py @@ -0,0 +1,161 @@ +# coding=utf-8 +# Copyright 2023 Meta AI Team and the HuggingFace Inc. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""PyTorch X-MOD model.""" + +import math +from typing import Optional, Tuple + +import torch +import torch.utils.checkpoint +from torch import nn + +from transformers.models.xmod.modeling_xmod import XmodOutput, XmodSelfAttention, XmodSelfOutput + +from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel +from ...utils import prefix_attention_mask +from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin + + +# Copied from transformers.models.roberta.modeling_roberta.RobertaSelfAttention with Roberta->Xmod +class XmodSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, XmodSelfAttention): + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.FloatTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + encoder_hidden_states: Optional[torch.FloatTensor] = None, + encoder_attention_mask: Optional[torch.FloatTensor] = None, + past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, + output_attentions: Optional[bool] = False, + ) -> Tuple[torch.Tensor]: + attention_mask = prefix_attention_mask(attention_mask) # type: ignore + + mixed_query_layer = self.query(hidden_states) + + # If this is instantiated as a cross-attention module, the keys + # and values come from an encoder; the attention mask needs to be + # such that the encoder's padding tokens are not attended to. + is_cross_attention = encoder_hidden_states is not None + + if is_cross_attention and past_key_value is not None: + # reuse k,v, cross_attentions + key_layer = past_key_value[0] + value_layer = past_key_value[1] + attention_mask = encoder_attention_mask + elif is_cross_attention: + key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) + value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) + attention_mask = encoder_attention_mask + elif past_key_value is not None: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + key_layer = torch.cat([past_key_value[0], key_layer], dim=2) + value_layer = torch.cat([past_key_value[1], value_layer], dim=2) + else: + key_layer = self.transpose_for_scores(self.key(hidden_states)) + value_layer = self.transpose_for_scores(self.value(hidden_states)) + + query_layer = self.transpose_for_scores(mixed_query_layer) + query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) + (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) + + use_cache = past_key_value is not None + if self.is_decoder: + # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. + # Further calls to cross_attention layer can then reuse all cross-attention + # key/value_states (first "if" case) + # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of + # all previous decoder key/value_states. Further calls to uni-directional self-attention + # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) + # if encoder bi-directional self-attention `past_key_value` is always `None` + past_key_value = (key_layer, value_layer) + + key_layer, value_layer, attention_mask = self.prefix_tuning( + key_layer, value_layer, hidden_states, attention_mask + ) + (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) + + if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": + query_length, key_length = query_layer.shape[2], key_layer.shape[2] + if use_cache: + position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( + -1, 1 + ) + else: + position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) + position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) + distance = position_ids_l - position_ids_r + + positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) + positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility + + if self.position_embedding_type == "relative_key": + relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores + elif self.position_embedding_type == "relative_key_query": + relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) + relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) + attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key + + attention_scores = attention_scores / math.sqrt(self.attention_head_size) + if attention_mask is not None: + # Apply the attention mask is (precomputed for all layers in XmodModel forward() function) + attention_scores = attention_scores + attention_mask + + # Normalize the attention scores to probabilities. + attention_probs = nn.functional.softmax(attention_scores, dim=-1) + + # This is actually dropping out entire tokens to attend to, which might + # seem a bit unusual, but is taken from the original Transformer paper. + attention_probs = self.dropout(attention_probs) + + # Mask heads if we want to + if head_mask is not None: + attention_probs = attention_probs * head_mask + + context_layer = torch.matmul(attention_probs, value_layer) + + context_layer = context_layer.permute(0, 2, 1, 3).contiguous() + new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) + context_layer = context_layer.view(new_context_layer_shape) + + outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) + + if self.is_decoder: + outputs = outputs + (past_key_value,) + return outputs + + +class XmodSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, XmodSelfOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, None) + return hidden_states + + +class XmodOutputWithAdapters(BertOutputAdaptersMixin, XmodOutput): + def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor, lang_ids: torch.Tensor) -> torch.Tensor: + hidden_states = self.dense(hidden_states) + hidden_states = self.dropout(hidden_states) + if self.adapter_layer_norm is not None: + layer_norm = self.adapter_layer_norm + elif self.adapter_reuse_layer_norm: + layer_norm = self.LayerNorm + hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, layer_norm) + return hidden_states diff --git a/adapters/src/adapters/trainer.py b/adapters/src/adapters/trainer.py new file mode 100644 index 00000000..ff915afc --- /dev/null +++ b/adapters/src/adapters/trainer.py @@ -0,0 +1,252 @@ +import os +import re +from typing import Callable, Dict, List, Optional, Tuple, Union + +import torch +from torch import nn +from torch.utils.data.dataset import Dataset + +from transformers import PreTrainedModel, Seq2SeqTrainer, Trainer, __version__ +from transformers.configuration_utils import PretrainedConfig +from transformers.data.data_collator import DataCollator +from transformers.modeling_utils import unwrap_model +from transformers.tokenization_utils_base import PreTrainedTokenizerBase +from transformers.trainer_callback import TrainerCallback, TrainerControl, TrainerState +from transformers.trainer_utils import EvalPrediction +from transformers.training_args import TrainingArguments +from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, is_sagemaker_mp_enabled, logging + +from .composition import AdapterCompositionBlock, Fuse + + +if is_sagemaker_mp_enabled(): + import smdistributed.modelparallel.torch as smp + + +logger = logging.get_logger(__name__) + + +class AdapterTrainer(Trainer): + def __init__( + self, + model: Union[PreTrainedModel, nn.Module] = None, + args: TrainingArguments = None, + data_collator: Optional[DataCollator] = None, + train_dataset: Optional[Dataset] = None, + eval_dataset: Optional[Dataset] = None, + tokenizer: Optional[PreTrainedTokenizerBase] = None, + model_init: Callable[[], PreTrainedModel] = None, + compute_metrics: Optional[Callable[[EvalPrediction], Dict]] = None, + callbacks: Optional[List[TrainerCallback]] = None, + adapter_names: Optional[List[List[str]]] = None, + optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = (None, None), + preprocess_logits_for_metrics: Callable[[torch.Tensor, torch.Tensor], torch.Tensor] = None, + ): + super().__init__( + model, + args, + data_collator, + train_dataset, + eval_dataset, + tokenizer=tokenizer, + model_init=model_init, + compute_metrics=compute_metrics, + callbacks=[AdapterTrainerCallback(self)] + callbacks if callbacks else [AdapterTrainerCallback(self)], + optimizers=optimizers, + preprocess_logits_for_metrics=preprocess_logits_for_metrics, + ) + + if adapter_names is not None: + self.model.set_active_adapters(adapter_names) + # Set the defaults for loading/ saving model & adapters + if isinstance(self.model, PreTrainedModel): + model_frozen = getattr(self.model.base_model, "model_frozen", False) + else: + model_frozen = False + if model_frozen and self.model.active_adapters: + # Check if training AdapterFusion + self.train_adapter_fusion = ( + isinstance(self.model.active_adapters, Fuse) + or isinstance(self.model.active_adapters, AdapterCompositionBlock) + and any([isinstance(child, Fuse) for child in self.model.active_adapters.children]) + ) + if self.model.active_adapters is None: + raise ValueError( + "Expected a model with an active adapter setup." + "If you want to fully finetune the model use the Trainer class." + ) + if (self.label_names is None or len(self.label_names) < 1) and self.model.active_head is not None: + all_label_names = set() + for head in self.model._active_heads: + all_label_names |= set(self.model.heads[head].get_label_names()) + self.label_names = list(all_label_names) + + def create_optimizer(self): + """ + Setup the optimizer. + + We provide a reasonable default that works well. If you want to use something else, you can pass a tuple in the + Trainer's init through `optimizers`, or subclass and override this method in a subclass. + """ + opt_model = self.model_wrapped if is_sagemaker_mp_enabled() else self.model + + if self.optimizer is None: + decay_parameters = self.get_decay_parameter_names(opt_model) + if hasattr(self.model, "config") and hasattr(self.model.config, "adapters"): + match_str = r"adapter_fusion_layer\..*\.value" + decay_parameters = [name for name in decay_parameters if not re.match(match_str, name)] + optimizer_grouped_parameters = [ + { + "params": [ + p for n, p in opt_model.named_parameters() if (n in decay_parameters and p.requires_grad) + ], + "weight_decay": self.args.weight_decay, + }, + { + "params": [ + p for n, p in opt_model.named_parameters() if (n not in decay_parameters and p.requires_grad) + ], + "weight_decay": 0.0, + }, + ] + + optimizer_cls, optimizer_kwargs = Trainer.get_optimizer_cls_and_kwargs(self.args) + self.optimizer = optimizer_cls(optimizer_grouped_parameters, **optimizer_kwargs) + + if is_sagemaker_mp_enabled(): + self.optimizer = smp.DistributedOptimizer(self.optimizer) + + return self.optimizer + + def _save(self, output_dir: Optional[str] = None, state_dict=None): + # If we are executing this function, we are the process zero, so we don't check for that. + output_dir = output_dir if output_dir is not None else self.args.output_dir + os.makedirs(output_dir, exist_ok=True) + logger.info(f"Saving model checkpoint to {output_dir}") + # Save a trained model and configuration using `save_pretrained()`. + # They can then be reloaded using `from_pretrained()` + if not isinstance(self.model, PreTrainedModel): + if isinstance(unwrap_model(self.model), PreTrainedModel): + if state_dict is None: + state_dict = self.model.state_dict() + unwrap_model(self.model).save_pretrained(output_dir, state_dict=state_dict) + else: + logger.info("Trainer.model is not a `PreTrainedModel`, only saving its state dict.") + if state_dict is None: + state_dict = self.model.state_dict() + torch.save(state_dict, os.path.join(output_dir, WEIGHTS_NAME)) + else: + self.model.save_all_adapters(output_dir) + if self.train_adapter_fusion: + self.model.save_all_adapter_fusions(output_dir) + if hasattr(self.model, "heads"): + self.model.save_all_heads(output_dir) + if self.tokenizer is not None: + self.tokenizer.save_pretrained(output_dir) + + # Good practice: save your training arguments together with the trained model + torch.save(self.args, os.path.join(output_dir, "training_args.bin")) + + def _load_from_checkpoint(self, resume_from_checkpoint): + args = self.args + if os.path.isfile(os.path.join(resume_from_checkpoint, WEIGHTS_NAME)): + logger.info(f"Loading model from {resume_from_checkpoint}).") + + if os.path.isfile(os.path.join(resume_from_checkpoint, CONFIG_NAME)): + config = PretrainedConfig.from_json_file(os.path.join(resume_from_checkpoint, CONFIG_NAME)) + checkpoint_version = config.transformers_version + if checkpoint_version is not None and checkpoint_version != __version__: + logger.warn( + f"You are resuming training from a checkpoint trained with {checkpoint_version} of " + f"Transformers but your current version is {__version__}. This is not recommended and could " + "yield to errors or unwanted behaviors." + ) + + if args.deepspeed: + # will be resumed in deepspeed_init + pass + else: + adapter_loaded = False + if os.path.isdir(resume_from_checkpoint): + adapter_loaded = self._load_adapters(resume_from_checkpoint) + self._load_adapter_fusions(resume_from_checkpoint) + # Save all heads for a model with heads + if hasattr(self.model, "heads"): + self._load_heads(resume_from_checkpoint) + + if not adapter_loaded: + raise Exception("Can't find a valid checkpoint at {}".format(resume_from_checkpoint)) + + def _load_adapters(self, resume_from_checkpoint): + adapter_loaded = False + for file_name in os.listdir(resume_from_checkpoint): + if os.path.isdir(os.path.join(resume_from_checkpoint, file_name)): + if "," not in file_name and "adapter_config.json" in os.listdir( + os.path.join(resume_from_checkpoint, file_name) + ): + self.model.load_adapter(os.path.join(os.path.join(resume_from_checkpoint, file_name))) + adapter_loaded = True + return adapter_loaded + + def _load_adapter_fusions(self, resume_from_checkpoint): + for file_name in os.listdir(resume_from_checkpoint): + if os.path.isdir(os.path.join(resume_from_checkpoint, file_name)): + if "," in file_name: + self.model.load_adapter_fusion(os.path.join(resume_from_checkpoint, file_name)) + + def _load_heads(self, resume_from_checkpoint): + for file_name in os.listdir(resume_from_checkpoint): + if os.path.isdir(os.path.join(resume_from_checkpoint, file_name)): + if "," not in file_name and "head_config.json" in os.listdir( + os.path.join(resume_from_checkpoint, file_name) + ): + self.model.load_head(os.path.join(resume_from_checkpoint, file_name)) + + def _load_best_model(self): + model = self.model_wrapped if is_sagemaker_mp_enabled() else self.model + logger.info( + f"Loading best adapter(s) from {self.state.best_model_checkpoint} (score: {self.state.best_metric})." + ) + # attempt to re-load all adapters from checkpoint + for adapter in model.adapters_config.adapters: + adapter_dir = os.path.join(self.state.best_model_checkpoint, adapter) + if os.path.exists(adapter_dir): + model.load_adapter(adapter_dir) + if self.train_adapter_fusion: + logger.info( + f"Loading best adapter fusion(s) from {self.state.best_model_checkpoint} (score:" + f" {self.state.best_metric})." + ) + # attempt to re-load all adapter fusions from checkpoint + for fusion in model.adapters_config.fusions: + fusion_dir = os.path.join(self.state.best_model_checkpoint, fusion) + if os.path.exists(fusion_dir): + model.load_adapter_fusion(fusion_dir) + model.to(self.args.device) + + +class AdapterTrainerCallback(TrainerCallback): + def __init__(self, trainer): + super().__init__() + self.trainer = trainer + + def on_train_begin(self, args: TrainingArguments, state: TrainerState, control: TrainerControl, **kwargs): + model = kwargs.pop("model") + model_frozen = getattr(model.base_model, "model_frozen", False) + if not model_frozen: + raise ValueError( + "The pre-trained model weights are not frozen. For training adapters, please call the train_adapter()" + " method" + ) + + def on_step_end(self, args: TrainingArguments, state: TrainerState, control: TrainerControl, **kwargs): + # apply adapter fusion weight regularization on the value matrix + model = kwargs.pop("model") + if self.trainer.train_adapter_fusion: + fusion_reg_loss = model.base_model.get_fusion_regularization_loss() + if fusion_reg_loss is not None: + fusion_reg_loss.backward() + + +class Seq2SeqAdapterTrainer(AdapterTrainer, Seq2SeqTrainer): + pass diff --git a/adapters/src/adapters/training.py b/adapters/src/adapters/training.py new file mode 100644 index 00000000..83160113 --- /dev/null +++ b/adapters/src/adapters/training.py @@ -0,0 +1,100 @@ +from dataclasses import dataclass, field +from typing import Optional + +from .composition import Stack +from .configuration import AdapterConfig + + +@dataclass +class AdapterArguments: + """ + The subset of arguments related to adapter training. + + Args: + train_adapter (bool): Whether to train an adapter instead of the full model. + load_adapter (str): Pre-trained adapter module to be loaded from Hub. + adapter_config (str): Adapter configuration. Either a config string or a path to a file. + load_lang_adapter (str): Pre-trained language adapter module to be loaded from Hub. + lang_adapter_config (str): Language adapter configuration. Either an identifier or a path to a file. + """ + + train_adapter: bool = field(default=False, metadata={"help": "Train an adapter instead of the full model."}) + load_adapter: Optional[str] = field( + default="", metadata={"help": "Pre-trained adapter module to be loaded from Hub."} + ) + adapter_config: Optional[str] = field( + default="seq_bn", metadata={"help": "Adapter configuration. Either a config string or a path to a file."} + ) + load_lang_adapter: Optional[str] = field( + default=None, metadata={"help": "Pre-trained language adapter module to be loaded from Hub."} + ) + lang_adapter_config: Optional[str] = field( + default=None, metadata={"help": "Language adapter configuration. Either an identifier or a path to a file."} + ) + + +def setup_adapter_training( + model, + adapter_args: AdapterArguments, + adapter_name: str, + adapter_config_kwargs: Optional[dict] = None, + adapter_load_kwargs: Optional[dict] = None, +): + """Setup model for adapter training based on given adapter arguments. + + Args: + model (_type_): The model instance to be trained. + adapter_args (AdapterArguments): The adapter arguments used for configuration. + adapter_name (str): The name of the adapter to be added. + + Returns: + Tuple[str, str]: A tuple containing the names of the loaded adapters. + """ + if adapter_config_kwargs is None: + adapter_config_kwargs = {} + if adapter_load_kwargs is None: + adapter_load_kwargs = {} + # Setup adapters + if adapter_args.train_adapter: + # resolve the adapter config + adapter_config = AdapterConfig.load(adapter_args.adapter_config, **adapter_config_kwargs) + # load a pre-trained from Hub if specified + # note: this logic has changed in versions > 3.1.0: adapter is also loaded if it already exists + if adapter_args.load_adapter: + model.load_adapter( + adapter_args.load_adapter, + config=adapter_config, + load_as=adapter_name, + **adapter_load_kwargs, + ) + # otherwise, if adapter does not exist, add it + elif adapter_name not in model.adapters_config: + model.add_adapter(adapter_name, config=adapter_config) + # optionally load a pre-trained language adapter + if adapter_args.load_lang_adapter: + # resolve the language adapter config + lang_adapter_config = AdapterConfig.load(adapter_args.lang_adapter_config, **adapter_config_kwargs) + # load the language adapter from Hub + lang_adapter_name = model.load_adapter( + adapter_args.load_lang_adapter, + config=lang_adapter_config, + **adapter_load_kwargs, + ) + else: + lang_adapter_name = None + # Freeze all model weights except of those of this adapter + model.train_adapter([adapter_name]) + # Set the adapters to be used in every forward pass + if lang_adapter_name: + model.set_active_adapters(Stack(lang_adapter_name, adapter_name)) + else: + model.set_active_adapters(adapter_name) + + return adapter_name, lang_adapter_name + else: + if adapter_args.load_adapter or adapter_args.load_lang_adapter: + raise ValueError( + "Adapters can only be loaded in adapters training mode.Use --train_adapter to enable adapter training" + ) + + return None, None diff --git a/adapters/src/adapters/utils.py b/adapters/src/adapters/utils.py new file mode 100644 index 00000000..0e3b20ca --- /dev/null +++ b/adapters/src/adapters/utils.py @@ -0,0 +1,864 @@ +import ast +import fnmatch +import hashlib +import inspect +import io +import json +import logging +import os +import re +import shutil +import tarfile +import tempfile +from collections.abc import Mapping +from contextlib import contextmanager +from dataclasses import dataclass +from enum import Enum +from functools import partial +from os.path import basename, isdir, isfile, join +from pathlib import Path +from typing import Callable, Dict, List, Optional, Tuple, Union +from urllib.parse import urlparse +from zipfile import ZipFile, is_zipfile + +import torch + +import requests +from filelock import FileLock +from huggingface_hub import HfApi, HfFolder, snapshot_download +from huggingface_hub.file_download import http_get, url_to_filename +from huggingface_hub.utils import ( + EntryNotFoundError, + RepositoryNotFoundError, + RevisionNotFoundError, + hf_raise_for_status, +) +from requests.exceptions import HTTPError +from transformers.utils import http_user_agent, is_remote_url +from transformers.utils.hub import torch_cache_home + +from . import __version__ +from .context import ForwardContext + + +logger = logging.getLogger(__name__) + +CONFIG_NAME = "adapter_config.json" +WEIGHTS_NAME = "pytorch_adapter.bin" +HEAD_CONFIG_NAME = "head_config.json" +HEAD_WEIGHTS_NAME = "pytorch_model_head.bin" +ADAPTERFUSION_CONFIG_NAME = "adapter_fusion_config.json" +ADAPTERFUSION_WEIGHTS_NAME = "pytorch_model_adapter_fusion.bin" +EMBEDDING_FILE = "embedding.pt" +TOKENIZER_PATH = "tokenizer" + +ADAPTER_HUB_URL = "https://raw.githubusercontent.com/Adapter-Hub/Hub/master/dist/v2/" +ADAPTER_HUB_INDEX_FILE = ADAPTER_HUB_URL + "index/{}.json" +ADAPTER_HUB_CONFIG_FILE = ADAPTER_HUB_URL + "architectures.json" +ADAPTER_HUB_ALL_FILE = ADAPTER_HUB_URL + "all.json" +ADAPTER_HUB_ADAPTER_ENTRY_JSON = ADAPTER_HUB_URL + "adapters/{}/{}.json" + +# the download cache +ADAPTER_CACHE = join(torch_cache_home, "adapters") + +# these keys are ignored when calculating the config hash +ADAPTER_CONFIG_HASH_IGNORE = [] + +# old: new +ACTIVATION_RENAME = { + "gelu": "gelu_new", + "gelu_orig": "gelu", +} +# HACK: To keep config hashs consistent with v2, remove default values of keys introduced in v3 from hash computation +ADAPTER_CONFIG_HASH_IGNORE_DEFAULT = { + "phm_layer": True, + "phm_dim": 4, + "factorized_phm_W": True, + "shared_W_phm": False, + "shared_phm_rule": True, + "factorized_phm_rule": False, + "phm_c_init": "normal", + "phm_init_range": 0.0001, + "learn_phm": True, + "hypercomplex_nonlinearity": "glorot-uniform", + "phm_rank": 1, + "phm_bias": True, + "init_weights": "bert", + "scaling": 1.0, +} +ADAPTER_CONFIG_STRING_PATTERN = re.compile(r"^(?P[^\[\]\|\n]+)(?:\[(?P.*)\])?$") + + +class AdapterType(str, Enum): + """Models all currently available model adapter types.""" + + text_task = "text_task" + text_lang = "text_lang" + + @classmethod + def has(cls, value): + return value in cls.__members__.values() + + def __repr__(self): + return self.value + + +@dataclass +class AdapterInfo: + """ + Holds information about an adapter publicly available on AdapterHub or huggingface.co. Returned by + :func:`list_adapters()`. + + Args: + source (str): The source repository of this adapter. Can be either "ah" (AdapterHub) or "hf" (huggingface.co). + adapter_id (str): The unique identifier of this adapter. + model_name (str, optional): The identifier of the model this adapter was trained for. + task (str, optional): The task this adapter was trained for. + subtask (str, optional): The subtask or dataset this adapter was trained on. + username (str, optional): The username of author(s) of this adapter. + adapter_config (dict, optional): The configuration dictionary of this adapter. + """ + + source: str + adapter_id: str + model_name: Optional[str] = None + task: Optional[str] = None + subtask: Optional[str] = None + username: Optional[str] = None + adapter_config: Optional[dict] = None + sha1_checksum: Optional[str] = None + + +def _minimize_dict(d): + if isinstance(d, Mapping): + return {k: _minimize_dict(v) for (k, v) in d.items() if v} + else: + return d + + +def get_adapter_config_hash(config, length=16): + """ + Calculates the hash of a given adapter configuration which is used to identify this configuration. + + Returns: + str: The resulting hash of the given config dict. + """ + minimized_config = _minimize_dict({k: v for (k, v) in config.items() if k not in ADAPTER_CONFIG_HASH_IGNORE}) + # ensure hash is kept consistent to previous versions + for name, default in ADAPTER_CONFIG_HASH_IGNORE_DEFAULT.items(): + if minimized_config.get(name, None) == default: + del minimized_config[name] + dict_str = json.dumps(minimized_config, sort_keys=True) + h = hashlib.sha1() + h.update(dict_str.encode(encoding="utf-8")) + return h.hexdigest()[:length] + + +def inherit_doc(cls): + for name, func in vars(cls).items(): + if isinstance(func, Callable) and not func.__doc__: + for parent in cls.__bases__: + parfunc = getattr(parent, name, None) + if parfunc and getattr(parfunc, "__doc__", None): + func.__doc__ = parfunc.__doc__ + break + return cls + + +def urljoin(*args): + return "/".join([s.strip("/") for s in args]) + + +def remote_file_exists(url): + r = requests.head(url) + return r.status_code == 200 + + +# Copied from last version of this method in HF codebase: +# https://github.com/huggingface/transformers/blob/9129fd0377e4d46cb2d0ea28dc1eb91a15f65b77/src/transformers/utils/hub.py#L460 +def get_from_cache( + url: str, + cache_dir=None, + force_download=False, + proxies=None, + etag_timeout=10, + resume_download=False, + user_agent: Union[Dict, str, None] = None, + use_auth_token: Union[bool, str, None] = None, + local_files_only=False, +) -> Optional[str]: + """ + Given a URL, look for the corresponding file in the local cache. If it's not there, download it. Then return the + path to the cached file. + + Return: + Local path (string) of file or if networking is off, last version of file cached on disk. + + Raises: + In case of non-recoverable file (non-existent or inaccessible url + no cache on disk). + """ + if cache_dir is None: + cache_dir = ADAPTER_CACHE + if isinstance(cache_dir, Path): + cache_dir = str(cache_dir) + + os.makedirs(cache_dir, exist_ok=True) + + headers = {"user-agent": http_user_agent(user_agent)} + if isinstance(use_auth_token, str): + headers["authorization"] = f"Bearer {use_auth_token}" + elif use_auth_token: + token = HfFolder.get_token() + if token is None: + raise EnvironmentError("You specified use_auth_token=True, but a huggingface token was not found.") + headers["authorization"] = f"Bearer {token}" + + url_to_download = url + etag = None + if not local_files_only: + try: + r = requests.head(url, headers=headers, allow_redirects=False, proxies=proxies, timeout=etag_timeout) + hf_raise_for_status(r) + etag = r.headers.get("X-Linked-Etag") or r.headers.get("ETag") + # We favor a custom header indicating the etag of the linked resource, and + # we fallback to the regular etag header. + # If we don't have any of those, raise an error. + if etag is None: + raise OSError( + "Distant resource does not have an ETag, we won't be able to reliably ensure reproducibility." + ) + # In case of a redirect, + # save an extra redirect on the request.get call, + # and ensure we download the exact atomic version even if it changed + # between the HEAD and the GET (unlikely, but hey). + if 300 <= r.status_code <= 399: + url_to_download = r.headers["Location"] + except ( + requests.exceptions.SSLError, + requests.exceptions.ProxyError, + RepositoryNotFoundError, + EntryNotFoundError, + RevisionNotFoundError, + ): + # Actually raise for those subclasses of ConnectionError + # Also raise the custom errors coming from a non existing repo/branch/file as they are caught later on. + raise + except (HTTPError, requests.exceptions.ConnectionError, requests.exceptions.Timeout): + # Otherwise, our Internet connection is down. + # etag is None + pass + + filename = url_to_filename(url, etag) + + # get cache path to put the file + cache_path = os.path.join(cache_dir, filename) + + # etag is None == we don't have a connection or we passed local_files_only. + # try to get the last downloaded one + if etag is None: + if os.path.exists(cache_path): + return cache_path + else: + matching_files = [ + file + for file in fnmatch.filter(os.listdir(cache_dir), filename.split(".")[0] + ".*") + if not file.endswith(".json") and not file.endswith(".lock") + ] + if len(matching_files) > 0: + return os.path.join(cache_dir, matching_files[-1]) + else: + # If files cannot be found and local_files_only=True, + # the models might've been found if local_files_only=False + # Notify the user about that + if local_files_only: + fname = url.split("/")[-1] + raise EntryNotFoundError( + f"Cannot find the requested file ({fname}) in the cached path and outgoing traffic has been" + " disabled. To enable model look-ups and downloads online, set 'local_files_only'" + " to False." + ) + else: + raise ValueError( + "Connection error, and we cannot find the requested files in the cached path." + " Please try again or make sure your Internet connection is on." + ) + + # From now on, etag is not None. + if os.path.exists(cache_path) and not force_download: + return cache_path + + # Prevent parallel downloads of the same file with a lock. + lock_path = cache_path + ".lock" + with FileLock(lock_path): + # If the download just completed while the lock was activated. + if os.path.exists(cache_path) and not force_download: + # Even if returning early like here, the lock will be released. + return cache_path + + if resume_download: + incomplete_path = cache_path + ".incomplete" + + @contextmanager + def _resumable_file_manager() -> "io.BufferedWriter": + with open(incomplete_path, "ab") as f: + yield f + + temp_file_manager = _resumable_file_manager + if os.path.exists(incomplete_path): + resume_size = os.stat(incomplete_path).st_size + else: + resume_size = 0 + else: + temp_file_manager = partial(tempfile.NamedTemporaryFile, mode="wb", dir=cache_dir, delete=False) + resume_size = 0 + + # Download to temporary file, then copy to cache dir once finished. + # Otherwise you get corrupt cache entries if the download gets interrupted. + with temp_file_manager() as temp_file: + logger.info(f"{url} not found in cache or force_download set to True, downloading to {temp_file.name}") + + http_get( + url_to_download, + temp_file, + proxies=proxies, + resume_size=resume_size, + headers=headers, + ) + + logger.info(f"storing {url} in cache at {cache_path}") + os.replace(temp_file.name, cache_path) + + # NamedTemporaryFile creates a file with hardwired 0600 perms (ignoring umask), so fixing it. + umask = os.umask(0o666) + os.umask(umask) + os.chmod(cache_path, 0o666 & ~umask) + + logger.info(f"creating metadata file for {cache_path}") + meta = {"url": url, "etag": etag} + meta_path = cache_path + ".json" + with open(meta_path, "w") as meta_file: + json.dump(meta, meta_file) + + return cache_path + + +def download_cached(url, checksum=None, checksum_algo="sha1", cache_dir=None, force_extract=False, **kwargs): + if isinstance(url, Path): + url = str(url) + + if is_remote_url(url): + output_path = get_from_cache(url, cache_dir=cache_dir, **kwargs) + else: + raise ValueError("Unable to parse '{}' as a URL".format(url)) + + if not output_path: + return None + + # if checksum is given, verify it + if checksum and checksum_algo: + h = hashlib.new(checksum_algo) + with open(output_path, "rb") as f: + h.update(f.read()) + calculated_checksum = h.hexdigest() + if calculated_checksum != checksum.lower(): + raise EnvironmentError("Failed to verify checksum of '{}'".format(output_path)) + + if not is_zipfile(output_path) and not tarfile.is_tarfile(output_path): + return output_path + + # Path where we extract compressed archives + # We avoid '.' in dir name and add "-extracted" at the end: "./model.zip" => "./model-zip-extracted/" + output_dir, output_file = os.path.split(output_path) + output_extract_dir_name = output_file.replace(".", "-") + "-extracted" + output_path_extracted = os.path.join(output_dir, output_extract_dir_name) + + if os.path.isdir(output_path_extracted) and os.listdir(output_path_extracted) and not force_extract: + return output_path_extracted + + # Prevent parallel extractions + lock_path = output_path + ".lock" + with FileLock(lock_path): + shutil.rmtree(output_path_extracted, ignore_errors=True) + os.makedirs(output_path_extracted) + if is_zipfile(output_path): + with ZipFile(output_path, "r") as zip_file: + # we want to extract all files into a flat folder structure (i.e. no subfolders) + for file in zip_file.namelist(): + # check if we have a valid file + if basename(file): + file_data = zip_file.read(file) + with open(join(output_path_extracted, basename(file)), "wb") as f: + f.write(file_data) + elif tarfile.is_tarfile(output_path): + tar_file = tarfile.open(output_path) + tar_file.extractall(output_path_extracted) + tar_file.close() + else: + raise EnvironmentError("Archive format of {} could not be identified".format(output_path)) + + return output_path_extracted + + +def parse_adapter_config_string(config_string: str) -> List[Tuple[str, dict]]: + """ + Parses an adapter configuration string into a list of tuples. Each tuple constists of an adapter config identifier + and dictionary. + """ + # First split by "|" into individual adapter configs + config_string_chunks = config_string.split("|") + # Now match each adapter config against the regex + adapter_configs = [] + for config_string_chunk in config_string_chunks: + match = re.match(ADAPTER_CONFIG_STRING_PATTERN, config_string_chunk.strip()) + if not match or not match.group("name"): + raise ValueError(f"Invalid adapter config string format: '{config_string_chunk}'.") + name = match.group("name") + if match.group("kvs"): + kvs = match.group("kvs") + # Replace "=" with ":" in key-value pairs for valid Python dict + kvs = re.sub(r"(\w+)=", r"'\1':", kvs) + else: + kvs = "" + # Now evaluate key-value pairs as Python dict + try: + config_kwargs = ast.literal_eval("{" + kvs + "}") + except Exception: + raise ValueError(f"Invalid adapter configguration '{kvs}' in '{name}'.") + adapter_configs.append((name, config_kwargs)) + + return adapter_configs + + +def resolve_adapter_config(config: Union[dict, str], local_map=None, try_loading_from_hub=True, **kwargs) -> dict: + """ + Resolves a given adapter configuration specifier to a full configuration dictionary. + + Args: + config (Union[dict, str]): The configuration to resolve. Can be either: + + - a dictionary: returned without further action + - an identifier string available in local_map + - the path to a file containing a full adapter configuration + - an identifier string available in Adapter-Hub + + Returns: + dict: The resolved adapter configuration dictionary. + """ + # already a dict, so we don't have to do anything + if isinstance(config, Mapping): + return config + # first, look in local map + if local_map and config in local_map: + return local_map[config] + # load from file system if it's a local file + if isfile(config): + with open(config, "r") as f: + loaded_config = json.load(f) + # search for nested config if the loaded dict has the form of a config saved with an adapter module + if "config" in loaded_config: + return loaded_config["config"] + else: + return loaded_config + # download hub index file + if try_loading_from_hub: + index_file = download_cached(ADAPTER_HUB_CONFIG_FILE, **kwargs) + if not index_file: + raise EnvironmentError("Unable to load adapter hub index file. The file might be temporarily unavailable.") + with open(index_file, "r") as f: + config_index = json.load(f) + # parse the config string + config_pairs = parse_adapter_config_string(config) + if len(config_pairs) > 0: + full_configs = [] + for name, config_kwargs in config_pairs: + # first, look in local map + if local_map and name in local_map: + config_obj = local_map[name] + full_configs.append(config_obj.replace(**config_kwargs)) + # now, try to find in hub index + elif try_loading_from_hub and name in config_index: + config_obj = config_index[name] + config_obj.update(**config_kwargs) + full_configs.append(config_obj) + else: + raise ValueError("Could not identify '{}' as a valid adapter configuration.".format(name)) + # Case 1: only one config, return it directly + if len(full_configs) == 1: + return full_configs[0] + # Case 2: multiple configs, return a config union + elif len(full_configs) > 1: + return {"architecture": "union", "configs": full_configs} + + raise ValueError("Could not identify '{}' as a valid adapter configuration.".format(config)) + + +def _split_identifier(identifier): + task, subtask, org_name = None, None, None + identifier = identifier.split("@") + if len(identifier) > 1: + org_name = identifier[1] + identifier = identifier[0].split("/") + if len(identifier) > 1: + subtask = identifier[1] + task = identifier[0] + return task, subtask, org_name + + +def _dict_extract(d, primary_key, secondary_key=None): + for k, v in d.items(): + if k == primary_key: + if secondary_key: + if secondary_key in v.keys(): + yield v[secondary_key] + else: + for k, v in v.items(): + yield v + elif secondary_key is None: + for k, v in v.items(): + if k == primary_key: + yield v + + +def find_in_index( + identifier: str, + model_name: str, + adapter_config: Optional[dict] = None, + strict: bool = False, + index_file: str = None, +) -> Optional[str]: + identifier = identifier.strip() + # identifiers of form "@/" are unique and can be retrieved directly + match = re.match(r"@(\S+)\/(\S+)", identifier) + if match: + return ADAPTER_HUB_ADAPTER_ENTRY_JSON.format(match.group(1), match.group(2)) + + if not index_file: + index_file = download_cached(ADAPTER_HUB_INDEX_FILE.format(model_name)) + if not index_file: + raise EnvironmentError("Unable to load adapter hub index file. The file might be temporarily unavailable.") + with open(index_file, "r") as f: + adapter_index = json.load(f) + # split into /@ + task, subtask, org = _split_identifier(identifier) + # find all entries for this task and subtask + entries = list(_dict_extract(adapter_index, task, subtask)) + if not entries: + # we found no matching entry + return None + elif len(entries) == 1: + index_entry = entries[0] + else: + # there are multiple possible options for this identifier + raise ValueError("Found multiple possible adapters matching '{}'.".format(identifier)) + # go on with searching a matching adapter_config hash in the task entry + if adapter_config: + config_hash = get_adapter_config_hash(adapter_config) + if config_hash in index_entry: + # now match the org if given + hub_entry = _get_matching_version(index_entry[config_hash], org) + if hub_entry: + logger.info("Found matching adapter at: {}".format(hub_entry)) + return hub_entry + # if we're here, no matching config is available or no config was given + if not adapter_config or not strict: + if "default" in index_entry: + logger.info("No exactly matching adapter config found for this specifier, falling back to default.") + return index_entry["default"] + # there's only one possible config and we allow matches with different configs + elif len(index_entry) == 1: + logger.info("Only one configuration available for this adapter, using default.") + config_entry = list(index_entry.values())[0] + return _get_matching_version(config_entry, org) + raise ValueError("No adapter '{}' found for the current model or configuration.".format(identifier)) + + +def _get_matching_version(config_entry, org): + if org: + return config_entry["versions"].get(org, None) + elif len(config_entry["versions"]) == 1: + return list(config_entry["versions"].values())[0] + elif "default" in config_entry: + return config_entry["default"] + else: + raise ValueError("Multiple adapters with this name are available for this config.") + + +def http_get_json(url): + # check if it's a relative url + if not urlparse(url).netloc: + url = urljoin(ADAPTER_HUB_URL, url) + response = requests.get(url) + if response.status_code == 200: + return response.json() + else: + raise EnvironmentError("Failed to get file {}".format(url)) + + +def get_checksum(file_entry: dict): + for algo in hashlib.algorithms_guaranteed: + if algo in file_entry: + return algo, file_entry[algo] + + +def pull_from_hub( + specifier: str, + model_name: str, + adapter_config: Optional[Union[dict, str]] = None, + version: str = None, + strict: bool = False, + **kwargs +) -> str: + """ + Downloads a pre-trained adapter module from Adapter-Hub + + Args: + specifier (str): A string specifying the adapter to be loaded. + model_name (str): The identifier of the pre-trained model for which to load an adapter. + adapter_config (Union[dict, str], optional): The configuration of the adapter to be loaded. + version (str, optional): The version of the adapter to be loaded. Defaults to None. + strict (bool, optional): + If set to True, only allow adapters exactly matching the given config to be loaded. Defaults to False. + + Returns: + str: The local path to which the adapter has been downloaded. + """ + if not model_name: + raise ValueError("Unable to resolve adapter without the name of a model. Please specify model_name.") + # resolve config if it's an identifier + if adapter_config: + adapter_config = resolve_adapter_config(adapter_config) + # search the correct entry in the index + hub_entry_url = find_in_index(specifier, model_name, adapter_config=adapter_config, strict=strict) + if not hub_entry_url: + raise EnvironmentError("No adapter with name '{}' was found in the adapter index.".format(specifier)) + hub_entry = http_get_json(hub_entry_url) + + # set version + if not version: + version = hub_entry["default_version"] + elif version not in hub_entry["files"]: + logger.warn("Version '{}' of adapter '{}' not found. Falling back to default.".format(version, specifier)) + version = hub_entry["default_version"] + file_entry = hub_entry["files"][version] + + # start downloading + logger.info("Resolved adapter files at {}.".format(file_entry["url"])) + checksum_algo, checksum = get_checksum(file_entry) + download_path = download_cached(file_entry["url"], checksum=checksum, checksum_algo=checksum_algo, **kwargs) + if not download_path: + raise EnvironmentError("Unable to load file from {}. The file might be unavailable.".format(file_entry["url"])) + return download_path + + +def pull_from_hf_model_hub(specifier: str, version: str = None, **kwargs) -> str: + download_path = snapshot_download( + specifier, + revision=version, + cache_dir=kwargs.pop("cache_dir", None), + library_name="adapters", + library_version=__version__, + ) + return download_path + + +def resolve_adapter_path( + adapter_name_or_path, + model_name: str = None, + adapter_config: Union[dict, str] = None, + version: str = None, + source: str = None, + **kwargs +) -> str: + """ + Resolves the path to a pre-trained adapter module. Note: If attempting to resolve an adapter from the Hub, + adapter_config and model_name must be present. + + Args: + adapter_name_or_path (str): Can be either: + + - the path to a folder in the file system containing the adapter configuration and weights + - an url pointing to a zip folder containing the adapter configuration and weights + - a specifier matching a pre-trained adapter uploaded to Adapter-Hub + model_name (str, optional): The identifier of the pre-trained model for which to load an adapter. + adapter_config (Union[dict, str], optional): The configuration of the adapter to be loaded. + version (str, optional): The version of the adapter to be loaded. Defaults to None. + source (str, optional): Identifier of the source(s) from where to get adapters. Can be either: + + - "ah": search on AdapterHub.ml. + - "hf": search on HuggingFace model hub (huggingface.co). + - None (default): search on all sources + + Returns: + str: The local path from where the adapter module can be loaded. + """ + # url of a folder containing pretrained adapters -> try to load from this url + if is_remote_url(adapter_name_or_path): + resolved_folder = download_cached(adapter_name_or_path, **kwargs) + if not resolved_folder: + raise EnvironmentError( + "Unable to load file from {}. The file might be unavailable.".format(resolved_folder) + ) + return resolved_folder + # path to a local folder saved using save() + elif isdir(adapter_name_or_path): + if isfile(join(adapter_name_or_path, WEIGHTS_NAME)) and isfile(join(adapter_name_or_path, CONFIG_NAME)): + return adapter_name_or_path + else: + raise EnvironmentError( + "No file {} or no file {} found in directory {}".format( + WEIGHTS_NAME, CONFIG_NAME, adapter_name_or_path + ) + ) + elif source == "ah": + return pull_from_hub( + adapter_name_or_path, model_name, adapter_config=adapter_config, version=version, **kwargs + ) + elif source == "hf": + return pull_from_hf_model_hub(adapter_name_or_path, version=version, **kwargs) + elif source is None: + try: + logger.info("Attempting to load adapter from source 'ah'...") + return pull_from_hub( + adapter_name_or_path, model_name, adapter_config=adapter_config, version=version, **kwargs + ) + except EnvironmentError as ex: + logger.info(ex) + logger.info("Attempting to load adapter from source 'hf'...") + try: + return pull_from_hf_model_hub(adapter_name_or_path, version=version, **kwargs) + except Exception as ex: + logger.info(ex) + raise EnvironmentError( + "Unable to load adapter {} from any source. Please check the name of the adapter or the source." + .format(adapter_name_or_path) + ) + else: + raise ValueError("Unable to identify {} as a valid module location.".format(adapter_name_or_path)) + + +def list_adapters(source: str = None, model_name: str = None) -> List[AdapterInfo]: + """ + Retrieves a list of all publicly available adapters on AdapterHub.ml or on huggingface.co. + + Args: + source (str, optional): Identifier of the source(s) from where to get adapters. Can be either: + + - "ah": search on AdapterHub.ml. + - "hf": search on HuggingFace model hub (huggingface.co). + - None (default): search on all sources + + model_name (str, optional): If specified, only returns adapters trained for the model with this identifier. + """ + adapters = [] + if source == "ah" or source is None: + try: + all_ah_adapters_file = download_cached(ADAPTER_HUB_ALL_FILE) + except requests.exceptions.HTTPError: + raise EnvironmentError( + "Unable to load list of adapters from AdapterHub.ml. The service might be temporarily unavailable." + ) + with open(all_ah_adapters_file, "r") as f: + all_ah_adapters_data = json.load(f) + adapters += [AdapterInfo(**info) for info in all_ah_adapters_data] + if source == "hf" or source is None: + if "fetch_config" in inspect.signature(HfApi.list_models).parameters: + kwargs = {"full": True, "fetch_config": True} + else: + logger.warning( + "Using old version of huggingface-hub package for fetching. Please upgrade to latest version for" + " accurate results." + ) + kwargs = {"full": True} + all_hf_adapters_data = HfApi().list_models(filter="adapters", **kwargs) + for model_info in all_hf_adapters_data: + adapter_info = AdapterInfo( + source="hf", + adapter_id=model_info.modelId, + model_name=model_info.config.get("adapters", {}).get("model_name") if model_info.config else None, + username=model_info.modelId.split("/")[0], + sha1_checksum=model_info.sha, + ) + adapters.append(adapter_info) + + if model_name is not None: + adapters = [adapter for adapter in adapters if adapter.model_name == model_name] + return adapters + + +def get_adapter_info(adapter_id: str, source: str = "ah") -> Optional[AdapterInfo]: + """ + Retrieves information about a specific adapter. + + Args: + adapter_id (str): The identifier of the adapter to retrieve. + source (str, optional): Identifier of the source(s) from where to get adapters. Can be either: + + - "ah": search on AdapterHub.ml. + - "hf": search on HuggingFace model hub (huggingface.co). + + Returns: + AdapterInfo: The adapter information or None if the adapter was not found. + """ + if source == "ah": + if adapter_id.startswith("@"): + adapter_id = adapter_id[1:] + try: + data = http_get_json(f"/adapters/{adapter_id}.json") + return AdapterInfo(**data["info"]) + except EnvironmentError: + return None + elif source == "hf": + try: + model_info = HfApi().model_info(adapter_id) + return AdapterInfo( + source="hf", + adapter_id=model_info.modelId, + model_name=model_info.config.get("adapters", {}).get("model_name") if model_info.config else None, + username=model_info.modelId.split("/")[0], + sha1_checksum=model_info.sha, + ) + except requests.exceptions.HTTPError: + return None + else: + raise ValueError("Please specify either 'ah' or 'hf' as source.") + + +def prefix_attention_mask(attention_mask, dim: int = 3, prefix_value: int = 0): + """ + Adds a prefix to an attention mask. The length of the prefix is determined by the `prefix_attention_mask_length` + attribute in the ForwardContext. + + Args: + attention_mask: + The attention mask to add the prefix to. + dim (int): + The dimension along which to concatenate the prefix_attention_mask. Defaults to 3. + prefix_value (int): + The value to use for the prefix_attention_mask. Defaults to 0, however some models, e.g. DistilBert, use + different values. BERT like models invert their extended_attention_mask, hence they use 0 as value for not + masked tokens. This inversion is usually done in the forward method of the model in 2 different ways: + 1) by calling self.invert_attention_mask, as BERT does 2) by doing the inversion manually, e.g. ALBERT + does: `extended_attention_mask = (1.0 - extended_attention_mask) * torch.finfo(self.dtype).min` + """ + + forward_context = ForwardContext.get_context() + + if ( + attention_mask is not None + and forward_context is not None + and getattr(forward_context, "prompt_tokens_length", None) is not None + ): + # Create a tensor of ones with the desired shape + ones_shape = list(attention_mask.shape) + ones_shape[dim] = forward_context.prompt_tokens_length + + prefix_attention_mask = torch.full( + ones_shape, + prefix_value, + dtype=attention_mask.dtype, + ).to(attention_mask.device) + + # Concatenate the prefix_attention_mask along the specified dimension + attention_mask = torch.cat((prefix_attention_mask, attention_mask), dim=dim) + + return attention_mask diff --git a/adapters/src/adapters/wrappers/__init__.py b/adapters/src/adapters/wrappers/__init__.py new file mode 100644 index 00000000..6ea65a3d --- /dev/null +++ b/adapters/src/adapters/wrappers/__init__.py @@ -0,0 +1,38 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from transformers.utils import _LazyModule + + +_import_structure = {"configuration": ["init_adapters_config"], "model": ["init", "load_model"]} + + +if TYPE_CHECKING: + from .configuration import init_adapters_config + from .model import init, load_model + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + ) diff --git a/adapters/src/adapters/wrappers/configuration.py b/adapters/src/adapters/wrappers/configuration.py new file mode 100644 index 00000000..c49f3b8b --- /dev/null +++ b/adapters/src/adapters/wrappers/configuration.py @@ -0,0 +1,110 @@ +import copy +from typing import Optional + +from transformers import PreTrainedModel +from transformers.configuration_utils import PretrainedConfig + +from ..configuration import ModelAdaptersConfig + + +CONFIG_CLASS_KEYS_MAPPING = { + "albert": { + "classifier_dropout": "classifier_dropout_prob", + }, + "bart": { + "num_attention_heads": "encoder_attention_heads", + "hidden_size": "d_model", + "hidden_dropout_prob": "dropout", + "attention_probs_dropout_prob": "attention_dropout", + }, + "beit": {}, + "bert": {}, + "clip_vision_model": { + "hidden_dropout_prob": "dropout", + "attention_probs_dropout_prob": "attention_dropout", + }, + "clip_text_model": { + "hidden_dropout_prob": "dropout", + "attention_probs_dropout_prob": "attention_dropout", + }, + "distilbert": { + "hidden_dropout_prob": "dropout", + "attention_probs_dropout_prob": "attention_dropout", + "classifier_dropout": "seq_classif_dropout", + }, + "gpt2": { + "hidden_dropout_prob": "resid_pdrop", + "attention_probs_dropout_prob": "attn_pdrop", + }, + "gptj": { + "hidden_dropout_prob": "resid_pdrop", + "attention_probs_dropout_prob": "attn_pdrop", + }, + "mbart": { + "num_attention_heads": "encoder_attention_heads", + "hidden_size": "d_model", + "hidden_dropout_prob": "dropout", + "attention_probs_dropout_prob": "attention_dropout", + }, + "roberta": {}, + "t5": { + "hidden_size": "d_model", + "num_attention_heads": "num_heads", + "num_hidden_layers": "num_layers", + "hidden_dropout_prob": "dropout_rate", + "attention_probs_dropout_prob": "dropout_rate", + }, + "vit": {}, + "xlm_roberta": {}, +} +SUBMODEL_NAMES = {"clip": ["vision_config", "text_config"], "encoder-decoder": ["encoder", "decoder"]} + + +def init_adapters_config( + model: PreTrainedModel, model_config: PretrainedConfig, adapters_config: Optional[ModelAdaptersConfig] = None +): + """Initializes the adapters config object of the model to enable adapter support. Also make required changes to the + model's config. + + Args: + model (PreTrainedModel): The model for which to add the adapters config. + model_config (PretrainedConfig): The model's config. + adapters_config (ModelAdaptersConfig): The adapters config to be added. + """ + # Make sure config is wrapped + model.config = model_config + wrap_config(model.config) + + # Init ModelAdaptersConfig + if adapters_config is not None: + model.adapters_config = adapters_config + elif not hasattr(model_config, "adapters"): + model.adapters_config = ModelAdaptersConfig() + elif model_config.adapters is not None and not isinstance(model_config.adapters, ModelAdaptersConfig): + model.adapters_config = ModelAdaptersConfig(**model_config.adapters) + + # Convert AdapterFusions from old format for backwards compatibility + fusion_models = getattr(model_config, "adapter_fusion_models", []) + fusion_config = getattr(model_config, "adapter_fusion", None) + for fusion_adapter_names in fusion_models: + model.adapters_config.add_fusion(fusion_adapter_names, config=fusion_config) + + +def wrap_config(config: PretrainedConfig): + """ + Makes required changes to a model config class to allow usage with adapters. + + Args: + config (PretrainedConfig): The config to be wrapped. + + Returns: + PretrainedConfig: The same config object, with modifications applied. + """ + + # Make sure each class has its own attribute_map + type(config).attribute_map = copy.deepcopy(type(config).attribute_map) + # Ensure missing keys are in class + if config.model_type in CONFIG_CLASS_KEYS_MAPPING: + for key, value in CONFIG_CLASS_KEYS_MAPPING[config.model_type].items(): + if key not in config.attribute_map: + config.attribute_map[key] = value diff --git a/adapters/src/adapters/wrappers/model.py b/adapters/src/adapters/wrappers/model.py new file mode 100644 index 00000000..23998a81 --- /dev/null +++ b/adapters/src/adapters/wrappers/model.py @@ -0,0 +1,130 @@ +import importlib +import os +from typing import Any, Optional, Type, Union + +from torch import nn + +from transformers import PreTrainedModel +from transformers.models.auto.auto_factory import getattribute_from_module +from transformers.models.auto.configuration_auto import model_type_to_module_name + +from ..configuration import ModelAdaptersConfig +from ..model_mixin import ( + EmbeddingAdaptersWrapperMixin, + ModelAdaptersMixin, + ModelUsingSubmodelsAdaptersMixin, + ModelWithHeadsAdaptersMixin, +) +from ..models import MODEL_MIXIN_MAPPING +from .configuration import init_adapters_config + + +SPECIAL_MODEL_TYPE_TO_MODULE_NAME = { + "clip_vision_model": "clip", + "clip_text_model": "clip", +} + + +def get_module_name(model_type: str) -> str: + if model_type in SPECIAL_MODEL_TYPE_TO_MODULE_NAME: + return SPECIAL_MODEL_TYPE_TO_MODULE_NAME[model_type] + return model_type_to_module_name(model_type) + + +def replace_with_adapter_class(module: nn.Module, modules_with_adapters) -> None: + # Check if module is a base model class + if module.__class__.__name__ in MODEL_MIXIN_MAPPING: + # Create new wrapper model class + model_class = type( + module.__class__.__name__, (MODEL_MIXIN_MAPPING[module.__class__.__name__], module.__class__), {} + ) + module.__class__ = model_class + elif module.__class__.__module__.startswith("transformers.models"): + try: + module_class = getattribute_from_module(modules_with_adapters, module.__class__.__name__ + "WithAdapters") + module.__class__ = module_class + except ValueError: + # Silently fail and keep original module class + pass + + +def init(model: PreTrainedModel, adapters_config: Optional[ModelAdaptersConfig] = None) -> None: + if isinstance(model, ModelAdaptersMixin): + return model + + # First, replace original module classes with their adapters counterparts + model_name = get_module_name(model.config.model_type) + modules_with_adapters = importlib.import_module(f".{model_name}.modeling_{model_name}", "adapters.models") + submodules = list(model.modules()) + + # Replace the base model class + replace_with_adapter_class(submodules.pop(0), modules_with_adapters) + + # Check if the base model class derives from ModelUsingSubmodelsAdaptersMixin + if isinstance(model, ModelUsingSubmodelsAdaptersMixin): + # Before initializing the submodels, make sure that adapters_config is set for the whole model. + # Otherwise, it would not be shared between the submodels. + init_adapters_config(model, model.config, adapters_config) + adapters_config = model.adapters_config + model.init_submodels() + submodules = [] + + # Change the class of all child modules to their adapters class + for module in submodules: + replace_with_adapter_class(module, modules_with_adapters) + + # Next, check if model class itself is not replaced and has an adapter-supporting base class + if not isinstance(model, ModelAdaptersMixin): + if hasattr(model, "base_model_prefix") and hasattr(model, model.base_model_prefix): + base_model = getattr(model, model.base_model_prefix) + if isinstance(base_model, ModelAdaptersMixin): + # Create new wrapper model class + model_class_name = model.__class__.__name__ + model_class = type( + model_class_name, + (EmbeddingAdaptersWrapperMixin, ModelWithHeadsAdaptersMixin, model.__class__), + {}, + ) + model.__class__ = model_class + + # Finally, initialize adapters + model.init_adapters(model.config, adapters_config) + + +def load_model( + model_name_or_path: Optional[Union[str, os.PathLike]], + model_class: Type[PreTrainedModel], + *model_args: Any, + **kwargs: Any +) -> PreTrainedModel: + """ + Loads a pretrained model with adapters from the given path or url. + + Parameters: + model_name_or_path (`str` or `os.PathLike`, *optional*): + Parameter identical to PreTrainedModel.from_pretrained + model_class (`PreTrainedModel` or `AutoModel`): + The model class to load (e.g. EncoderDecoderModel and EncoderDecoderAdapterModel both work) + model_args (sequence of positional arguments, *optional*): + All remaining positional arguments will be passed to the underlying model's `__init__` method. + kwargs (remaining dictionary of keyword arguments, *optional*): + Can be used to update the configuration object (after it being loaded) and initiate the model (e.g., + `output_attentions=True`). + Returns: + `PreTrainedModel`: The model with adapters loaded from the given path or url. + """ + + old_init = model_class.__init__ + + def new_init(self, config, *args, **kwargs): + old_init(self, config, *args, **kwargs) + init(self) + + # wrap model after it is initialized but before the weights are loaded + model_class.__init__ = new_init + model = model_class.from_pretrained(model_name_or_path, *model_args, **kwargs) + + # restore original __init__ function for when other models of the same type are created + model_class.__init__ = old_init + + return model diff --git a/adapters/tests/__init__.py b/adapters/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/adapters/tests/composition/test_adapter_composition.py b/adapters/tests/composition/test_adapter_composition.py new file mode 100644 index 00000000..3d0d4741 --- /dev/null +++ b/adapters/tests/composition/test_adapter_composition.py @@ -0,0 +1,250 @@ +import unittest + +import torch + +import adapters +from adapters import IA3Config, LoRAConfig, PrefixTuningConfig, SeqBnConfig +from adapters.composition import Average, BatchSplit, Fuse, Parallel, Split, Stack, parse_composition +from tests.test_adapter import ids_tensor +from transformers import BertConfig, BertForSequenceClassification +from transformers.testing_utils import require_torch, torch_device + + +class AdapterCompositionParsingTest(unittest.TestCase): + def test_parse_lists(self): + self.assertEqual(Stack("a"), parse_composition("a")) + self.assertEqual(Stack("a", "b", "c"), parse_composition(["a", "b", "c"])) + self.assertEqual(Stack("a", Fuse("b", "c")), parse_composition(["a", ["b", "c"]])) + + def test_to_deep(self): + self.assertRaises(ValueError, lambda: parse_composition(Stack("a", Fuse("b", Stack(Fuse("c", "d"), "e"))))) + + def test_invalid_nesting_fusion(self): + self.assertRaises(ValueError, lambda: parse_composition(Fuse(Fuse("a", "b"), "c"))) + self.assertRaises(ValueError, lambda: parse_composition(Fuse(Split("a", "b", splits=128), "c"))) + + def test_invalid_nesting_split(self): + self.assertRaises(ValueError, lambda: parse_composition(Split("a", Fuse("b", "c"), splits=128))) + + +@require_torch +class AdapterCompositionTest(unittest.TestCase): + unsupported_blocks = [] + + def get_adapter_config(self): + return SeqBnConfig() + + def build_model(self): + model = BertForSequenceClassification( + BertConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + ) + adapters.init(model) + adapter_config = self.get_adapter_config() + model.add_adapter("a", config=adapter_config) + model.add_adapter("b", config=adapter_config) + model.add_adapter("c", config=adapter_config) + model.add_adapter("d", config=adapter_config) + model.to(torch_device) + model.train() + + return model + + def training_pass(self, model): + inputs = {} + inputs["input_ids"] = ids_tensor((1, 128), 1000).to(torch_device) + inputs["labels"] = torch.ones(1, dtype=torch.long).to(torch_device) + loss = model(**inputs).loss + loss.backward() + + def batched_training_pass(self, model): + inputs = { + "input_ids": ids_tensor((4, 128), 1000).to(torch_device), + "labels": torch.ones(4, dtype=torch.long).to(torch_device), + } + loss = model(**inputs).loss + loss.backward() + + def test_simple_stack(self): + if Stack in self.unsupported_blocks: + self.skipTest("Stack not supported by adapter config.") + + model = self.build_model() + model.set_active_adapters(Stack("a", "b", "c", "d")) + self.training_pass(model) + + def test_simple_split(self): + if Split in self.unsupported_blocks: + self.skipTest("Split not supported by adapter config.") + + model = self.build_model() + # pass over split setup + model.set_active_adapters(Split("a", "b", splits=64)) + + self.training_pass(model) + + def test_stacked_split(self): + if Stack in self.unsupported_blocks or Split in self.unsupported_blocks: + self.skipTest("Stack or Split not supported by adapter config.") + + model = self.build_model() + # split into two stacks + model.set_active_adapters(Split(Stack("a", "b"), Stack("c", "d"), splits=64)) + + self.training_pass(model) + + def test_stacked_fusion(self): + if Stack in self.unsupported_blocks or Fuse in self.unsupported_blocks: + self.skipTest("Stack or Fuse not supported by adapter config.") + + model = self.build_model() + model.add_adapter_fusion(Fuse("b", "d")) + model.to(torch_device) + + # fuse two stacks + model.set_active_adapters(Fuse(Stack("a", "b"), Stack("c", "d"))) + + self.training_pass(model) + + def test_mixed_stack(self): + if Stack in self.unsupported_blocks or Fuse in self.unsupported_blocks: + self.skipTest("Stack or Fuse not supported by adapter config.") + + model = self.build_model() + model.add_adapter_fusion(Fuse("a", "b")) + model.to(torch_device) + + model.set_active_adapters(Stack("a", Split("c", "d", splits=64), Fuse("a", "b"))) + + self.training_pass(model) + + def test_nested_split(self): + if Split in self.unsupported_blocks: + self.skipTest("Split not supported by adapter config.") + + model = self.build_model() + # split into two stacks + model.set_active_adapters(Split(Split("a", "b", splits=32), "c", splits=64)) + + self.training_pass(model) + + def test_parallel(self): + if Parallel in self.unsupported_blocks: + self.skipTest("Parallel not supported by adapter config.") + + model = self.build_model() + model.set_active_adapters(Parallel("a", "b", "c", "d")) + + inputs = {} + inputs["input_ids"] = ids_tensor((2, 10), 1000) + logits = model(**inputs).logits + self.assertEqual(logits.shape, (8, 2)) + + def test_nested_parallel(self): + if Parallel in self.unsupported_blocks or Stack in self.unsupported_blocks: + self.skipTest("Parallel or Stack not supported by adapter config.") + + model = self.build_model() + model.set_active_adapters(Stack("a", Parallel(Stack("b", "c"), "d"))) + + inputs = {} + inputs["input_ids"] = ids_tensor((1, 10), 1000) + logits = model(**inputs).logits + self.assertEqual(logits.shape, (2, 2)) + + def test_batch_split(self): + if BatchSplit in self.unsupported_blocks: + self.skipTest("BatchSplit not supported by adapter config.") + + model = self.build_model() + model.set_active_adapters(BatchSplit("a", "b", "c", batch_sizes=[1, 1, 2])) + self.batched_training_pass(model) + + def test_batch_split_int(self): + if BatchSplit in self.unsupported_blocks: + self.skipTest("BatchSplit not supported by adapter config.") + + model = self.build_model() + model.set_active_adapters(BatchSplit("a", "b", batch_sizes=2)) + self.batched_training_pass(model) + + def test_nested_batch_split_1(self): + if BatchSplit in self.unsupported_blocks or Stack in self.unsupported_blocks: + self.skipTest("BatchSplit or Stack not supported by adapter config.") + + model = self.build_model() + model.set_active_adapters(Stack("a", BatchSplit("b", "c", batch_sizes=[2, 2]))) + self.batched_training_pass(model) + + def test_nested_batch_split_2(self): + if BatchSplit in self.unsupported_blocks or Stack in self.unsupported_blocks: + self.skipTest("BatchSplit or Stack not supported by adapter config.") + + model = self.build_model() + model.set_active_adapters(BatchSplit(Stack("a", "b"), "c", batch_sizes=[2, 2])) + self.batched_training_pass(model) + + def test_batch_split_invalid(self): + if BatchSplit in self.unsupported_blocks: + self.skipTest("BatchSplit not supported by adapter config.") + + model = self.build_model() + model.set_active_adapters(BatchSplit("a", "b", batch_sizes=[3, 4])) + with self.assertRaises(IndexError): + self.batched_training_pass(model) + + def test_batch_split_equivalent(self): + if BatchSplit in self.unsupported_blocks: + self.skipTest("BatchSplit not supported by adapter config.") + + model = self.build_model() + model.set_active_adapters("a") + model.eval() + input_ids = ids_tensor((2, 128), 1000) + output_a = model(input_ids[:1]) + + model.set_active_adapters("b") + output_b = model(input_ids[1:2]) + + model.set_active_adapters(BatchSplit("a", "b", batch_sizes=[1, 1])) + output = model(input_ids) + + self.assertTrue(torch.allclose(output_a[0], output[0][0], atol=1e-6)) + self.assertTrue(torch.allclose(output_b[0], output[0][1], atol=1e-6)) + + def test_average(self): + if Average in self.unsupported_blocks: + self.skipTest("Average not supported by adapter config.") + + model = self.build_model() + model.set_active_adapters(Average("a", "b", "c", "d")) + + inputs = {} + inputs["input_ids"] = ids_tensor((2, 128), 1000) + logits = model(**inputs).logits + self.assertEqual(logits.shape, (2, 2)) + + +class PrefixTuningCompositionTest(AdapterCompositionTest): + unsupported_blocks = [Split, Fuse, Average] + + def get_adapter_config(self): + return PrefixTuningConfig() + + +class LoRACompositionTest(AdapterCompositionTest): + unsupported_blocks = [Split, Fuse] + + def get_adapter_config(self): + return LoRAConfig(init_weights="bert") + + +class IA3CompositionTest(AdapterCompositionTest): + unsupported_blocks = [Split, Fuse] + + def get_adapter_config(self): + return IA3Config() diff --git a/adapters/tests/composition/test_parallel.py b/adapters/tests/composition/test_parallel.py new file mode 100644 index 00000000..538dd79c --- /dev/null +++ b/adapters/tests/composition/test_parallel.py @@ -0,0 +1,317 @@ +import copy +import random + +import torch + +from adapters import ADAPTER_MODEL_MAPPING, AutoAdapterModel, PrefixTuningConfig, SeqBnConfig, T5AdapterModel +from adapters.composition import BatchSplit, Parallel +from adapters.models.bert_generation.adapter_model import BertGenerationAdapterModel +from transformers import MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING, Trainer, TrainingArguments +from transformers.testing_utils import require_torch, torch_device + + +def filter_parameters(model, filter_string): + return {k: v for (k, v) in model.named_parameters() if filter_string in k} + + +@require_torch +class ParallelAdapterInferenceTestMixin: + def test_parallel_inference_with_heads(self): + model = AutoAdapterModel.from_config(self.config()) + + model.add_adapter("a") + model.add_adapter("b") + self.add_head(model, "a", num_labels=2) + self.add_head(model, "b", num_labels=3) + model.eval() + model.to(torch_device) + + inputs = self.get_input_samples(config=model.config) + inputs["attention_mask"] = torch.randint(0, 2, size=(3, 64), device=torch_device) + + # for reference, pass through single adapters + model.active_adapters = "a" + model.active_head = "a" + outputs_a = model(**inputs) + model.active_adapters = "b" + model.active_head = "b" + outputs_b = model(**inputs) + + model.active_adapters = Parallel("a", "b") + # active_adapters should set parallel heads too + self.assertEqual(model.active_head, ["a", "b"]) + outputs = model(**inputs) + + self.assertEqual(len(outputs), 2) + if self.config_class in MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING: + self.assertEqual(outputs[0][0].shape, (3, 2)) + self.assertEqual(outputs[1][0].shape, (3, 3)) + self.assertTrue(torch.allclose(outputs[0][0], outputs_a[0], atol=1e-5)) + self.assertTrue(torch.allclose(outputs[1][0], outputs_b[0], atol=1e-5)) + + def test_parallel_inference_with_wrong_number_of_heads(self): + model = AutoAdapterModel.from_config(self.config()) + model.eval() + + model.add_adapter("a") + model.add_adapter("b") + self.add_head(model, "a", num_labels=2) + model.to(torch_device) + + inputs = self.get_input_samples(config=model.config) + + model.active_adapters = Parallel("a", "b") + model.active_head = ["a"] + with self.assertRaises(ValueError): + model(**inputs) + + model.active_head = "a" + with self.assertRaises(ValueError): + model(**inputs) + + def test_batch_split_with_heads(self): + model = AutoAdapterModel.from_config(self.config()) + model.add_adapter("a") + model.add_adapter("b") + self.add_head(model, "a", num_labels=2) + self.add_head(model, "b", num_labels=3) + model.eval() + model.to(torch_device) + + inputs = self.get_input_samples(config=model.config) + if isinstance(model, T5AdapterModel): + inputs["decoder_input_ids"] = inputs["input_ids"] + + # for reference, pass through single adapters + model.active_adapters = "a" + model.active_head = "a" + outputs_a = model(**{k: v[:1] for k, v in inputs.items()}) + model.active_adapters = "b" + model.active_head = "b" + outputs_b = model(**{k: v[1:] for k, v in inputs.items()}) + + model.set_active_adapters(BatchSplit("a", "b", batch_sizes=[1, 2])) + output = model(**inputs) + + self.assertEqual(2, len(output)) + self.assertTrue( + torch.allclose( + output[0]["logits"], + outputs_a["logits"], + atol=1e-05, + ) + ) + self.assertTrue( + torch.allclose( + output[1]["logits"], + outputs_b["logits"], + atol=1e-05, + ) + ) + + def test_parallel_generate(self): + if self.config_class not in ADAPTER_MODEL_MAPPING or ( + "seq2seq_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types + and "causal_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types + ): + self.skipTest("No seq2seq or causal language model head") + + model1 = AutoAdapterModel.from_config(self.config()) + model1.add_adapter("adapter1") + model1.add_adapter("adapter2") + if "seq2seq_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + model1.add_seq2seq_lm_head("adapter1") + model1.add_seq2seq_lm_head("adapter2") + else: + model1.add_causal_lm_head("adapter1") + model1.add_causal_lm_head("adapter2") + model1.set_active_adapters(Parallel("adapter1", "adapter2")) + model1.to(torch_device) + + seq_output_length = 32 + + # Finally, also check if generation works properly + input_ids = self.get_input_samples((1, 4), config=model1.config)["input_ids"] + input_ids = input_ids.to(torch_device) + generated = model1.generate(input_ids, max_length=seq_output_length) + self.assertLessEqual(generated.shape, (2, seq_output_length)) + + +class ParallelTrainingMixin: + def create_twin_adapters(self, model, name, adapter_config): + # create adapter + adapter1, adapter2 = name + "_1", name + "_2" + model.add_adapter(adapter1, config=adapter_config) + self.add_head(model, adapter1) + # create a twin initialized with the same random weights + model.add_adapter(adapter2, config=adapter_config) + self.add_head(model, adapter2) + + state_dict = model.state_dict() + for k, v in state_dict.items(): + if adapter1 in k: + state_dict[k.replace(adapter1, adapter2)] = v + model.load_state_dict(state_dict) + + return adapter1, adapter2 + + def train_model(self, model, dataset): + # trains model in eval mode for 2 epochs + random.seed(42) + torch.manual_seed(42) + # Depending on the used optimizer the adapters are not exactly the same + model.to(torch_device) + optimizer = torch.optim.SGD(model.parameters(), lr=0.1) + for epoch in range(2): + for data_input in dataset: + for key, value in data_input.items(): + data_input[key] = value.to(torch_device) + + optimizer.zero_grad() + output = model(**data_input) + loss = output["loss"] + loss.backward() + optimizer.step() + return model + + def run_parallel_training_test(self, adapter_config, filter_key): + model = AutoAdapterModel.from_config(self.config()) + + model.add_adapter("mrpc1", config=adapter_config) + model.add_adapter("mrpc2", config=adapter_config) + self.add_head(model, "mrpc1") + self.add_head(model, "mrpc2") + model.active_adapters = Parallel("mrpc1", "mrpc2") + model.train_adapter(Parallel("mrpc1", "mrpc2")) + # model.eval() + + # all weights of the adapter should be activated + for k, v in filter_parameters(model, filter_key.format("mrpc1")).items(): + self.assertTrue(v.requires_grad, k) + # all weights of the adapter not used for training should be frozen + for k, v in filter_parameters(model, filter_key.format("mrpc1")).items(): + self.assertTrue(v.requires_grad, k) + # weights of the model should be frozen (check on some examples) + for k, v in filter_parameters(model, "encoder.layer.0.attention").items(): + if filter_key.format("mrpc1") not in k and filter_key.format("mrpc2") not in k: + self.assertFalse(v.requires_grad, k) + + state_dict_pre = copy.deepcopy(model.state_dict()) + + train_dataset = self.dataset() + training_args = TrainingArguments( + output_dir="./examples", + do_train=True, + learning_rate=1.0, + max_steps=20, + no_cuda=True, + remove_unused_columns=False, + ) + + # evaluate + trainer = Trainer( + model=model, + args=training_args, + train_dataset=train_dataset, + ) + trainer.train() + + # check that the weights of the adapters have changed + self.assertTrue( + any([not torch.equal(v, state_dict_pre[k]) for k, v in model.state_dict().items() if "mrpc" in k]) + ) + self.assertTrue( + all(torch.equal(v, state_dict_pre[k]) for k, v in model.state_dict().items() if "mrpc" not in k) + ) + + def run_parallel_training_equivalent_to_single(self, adapter_config): + model = AutoAdapterModel.from_config(self.config()) + model.eval() + + a1, a2 = self.create_twin_adapters(model, "a", adapter_config) + b1, b2 = self.create_twin_adapters(model, "b", adapter_config) + + dataset = [] + for i in range(3): + input_data = self.get_input_samples(config=model.config) + if isinstance(model, BertGenerationAdapterModel): + input_data["labels"] = torch.randint(0, 2, (3, 64)) + else: + input_data["labels"] = torch.randint(0, 2, (3, 1)) + dataset.append(input_data) + + for adapter in [a1, b1]: + model.active_head = adapter + model.set_active_adapters(adapter) + model.train_adapter(adapter) + model.eval() + + model = self.train_model(model, dataset) + + model.set_active_adapters(Parallel(a2, b2)) + model.train_adapter((Parallel(a2, b2))) + model.eval() + + model = self.train_model(model, dataset) + + state_dict = model.state_dict() + for k, v in state_dict.items(): + if a1 in k: + self.assertTrue( + torch.allclose(v, state_dict[k.replace(a1, a2)], atol=1e-5), + torch.max(torch.sub(v, state_dict[k.replace(a1, a2)])), + ) + if b1 in k: + self.assertTrue(torch.allclose(v, state_dict[k.replace(b1, b2)], atol=1e-5)) + + def test_parallel_training_bottleneck(self): + self.run_parallel_training_test(SeqBnConfig(), "adapters.{}") + + def test_parallel_training_prefix_tuning(self): + self.run_parallel_training_test(PrefixTuningConfig(), "prefix_tunings.{}") + + def test_parallel_training_equivalent_to_single_bottleneck(self): + self.run_parallel_training_equivalent_to_single(SeqBnConfig()) + + def test_parallel_training_equivalent_to_single_prefix_tuning(self): + self.run_parallel_training_equivalent_to_single(PrefixTuningConfig()) + + def test_parallel_training_single_forward_pass(self): + model = AutoAdapterModel.from_config(self.config()) + model.eval() + + a1, a2 = self.create_twin_adapters(model, "a", SeqBnConfig()) + b1, b2 = self.create_twin_adapters(model, "b", SeqBnConfig()) + + state_dict = model.state_dict() + for k, v in state_dict.items(): + if a1 in k: + self.assertTrue(torch.equal(v, state_dict[k.replace(a1, a2)])) + if b1 in k: + self.assertTrue(torch.equal(v, state_dict[k.replace(b1, b2)])) + + input_data = self.get_input_samples(config=model.config) + if isinstance(model, BertGenerationAdapterModel): + input_data["labels"] = torch.randint(0, 2, (3, 64), device=torch_device) + else: + input_data["labels"] = torch.randint(0, 2, (3, 1), device=torch_device) + + outputs = [] + for adapter in [a1, b1]: + model.active_head = adapter + model.set_active_adapters(adapter) + model.train_adapter(adapter) + model.eval() + model.to(torch_device) + outputs.append(model(**input_data)) + + model.set_active_adapters(Parallel(a2, b2)) + model.train_adapter((Parallel(a2, b2))) + model.eval() + model.to(torch_device) + + parallel_outputs = model(**input_data) + + for out1, out2 in zip(outputs, parallel_outputs.head_outputs): + self.assertTrue(torch.allclose(out1["loss"], out2["loss"])) + self.assertTrue(torch.allclose(out1["logits"], out2["logits"], atol=1e-5)) diff --git a/adapters/tests/extended/test_adapter_trainer_ext.py b/adapters/tests/extended/test_adapter_trainer_ext.py new file mode 100644 index 00000000..6e149446 --- /dev/null +++ b/adapters/tests/extended/test_adapter_trainer_ext.py @@ -0,0 +1,353 @@ +# Copyright 2020 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import math +import os +import re +import sys +from pathlib import Path +from typing import Tuple +from unittest.mock import patch + +from parameterized import parameterized +from transformers.testing_utils import ( + CaptureStderr, + ExtendSysPath, + TestCasePlus, + backend_device_count, + execute_subprocess_async, + get_torch_dist_unique_port, + require_apex, + require_bitsandbytes, + require_torch, + require_torch_gpu, + require_torch_multi_accelerator, + require_torch_non_multi_accelerator, + slow, + torch_device, +) +from transformers.trainer_callback import TrainerState +from transformers.trainer_utils import set_seed + + +bindir = os.path.abspath(os.path.dirname(__file__)) +with ExtendSysPath(f"{bindir}/../../examples/pytorch/translation"): + from run_translation import main # noqa + + +set_seed(42) +MARIAN_MODEL = "sshleifer/student_marian_en_ro_6_1" +MBART_TINY = "sshleifer/tiny-mbart" + + +@require_torch +class TestTrainerExt(TestCasePlus): + def run_seq2seq_quick( + self, + distributed=False, + extra_args_str=None, + predict_with_generate=True, + do_train=True, + do_eval=True, + do_predict=True, + ): + output_dir = self.run_trainer( + eval_steps=1, + max_len=12, + model_name=MBART_TINY, + num_train_epochs=1, + distributed=distributed, + extra_args_str=extra_args_str, + predict_with_generate=predict_with_generate, + do_train=do_train, + do_eval=do_eval, + do_predict=do_predict, + ) + logs = TrainerState.load_from_json(os.path.join(output_dir, "trainer_state.json")).log_history + + if not do_eval: + return + + eval_metrics = [log for log in logs if "eval_loss" in log.keys()] + + first_step_stats = eval_metrics[0] + if predict_with_generate: + assert "eval_bleu" in first_step_stats + + last_step_stats = eval_metrics[-1] + assert isinstance(last_step_stats["eval_bleu"], float) + assert not math.isnan(float(last_step_stats["eval_loss"])), "eval_loss must not be `nan`" + + @require_torch_non_multi_accelerator + def test_run_seq2seq_no_dist(self): + self.run_seq2seq_quick() + + # verify that the trainer can handle non-distributed with n_gpu > 1 + @require_torch_multi_accelerator + def test_run_seq2seq_dp(self): + self.run_seq2seq_quick(distributed=False) + + # verify that the trainer can handle distributed with n_gpu > 1 + @require_torch_multi_accelerator + def test_run_seq2seq_ddp(self): + self.run_seq2seq_quick(distributed=True) + + @require_apex + @require_torch_gpu + def test_run_seq2seq_apex(self): + # XXX: apex breaks the trainer if it's run twice e.g. run_seq2seq.main() from the same + # program and it breaks other tests that run from the same pytest worker, therefore until this is + # sorted out it must be run only in an external program, that is distributed=True in this + # test and only under one or more gpus - if we want cpu will need to make a special test + # + # specifically to the problem traced it to self.optimizer.step() - if it's run 2nd time via + # 2nd main() call it botches the future eval. + # + self.run_seq2seq_quick(distributed=True, extra_args_str="--fp16 --fp16_backend=apex") + # test 2nd time - was getting eval_loss': nan' + # to reproduce the problem set distributed=False + self.run_seq2seq_quick(distributed=True, extra_args_str="--fp16 --fp16_backend=apex") + + @parameterized.expand(["base", "low", "high", "mixed"]) + @require_torch_multi_accelerator + def test_trainer_log_level_replica(self, experiment_id): + # as each sub-test is slow-ish split into multiple sub-tests to avoid CI timeout + experiments = { + # test with the default log_level - should be info and thus log info once + "base": {"extra_args_str": "", "n_matches": 1}, + # test with low log_level and log_level_replica - should be noisy on all processes + # now the info string should appear twice on 2 processes + "low": {"extra_args_str": "--log_level debug --log_level_replica debug", "n_matches": 2}, + # test with high log_level and low log_level_replica + # now the info string should appear once only on the replica + "high": {"extra_args_str": "--log_level error --log_level_replica debug", "n_matches": 1}, + # test with high log_level and log_level_replica - should be quiet on all processes + "mixed": {"extra_args_str": "--log_level error --log_level_replica error", "n_matches": 0}, + } + + data = experiments[experiment_id] + kwargs = {"distributed": True, "predict_with_generate": False, "do_eval": False, "do_predict": False} + log_info_string = "Running training" + with CaptureStderr() as cl: + self.run_seq2seq_quick(**kwargs, extra_args_str=data["extra_args_str"]) + n_matches = len(re.findall(log_info_string, cl.err)) + self.assertEqual(n_matches, data["n_matches"]) + + @slow + def test_run_seq2seq(self): + output_dir = self.run_trainer( + eval_steps=2, + max_len=128, + model_name=MARIAN_MODEL, + learning_rate=3e-4, + num_train_epochs=10, + distributed=False, + ) + + # Check metrics + logs = TrainerState.load_from_json(os.path.join(output_dir, "trainer_state.json")).log_history + eval_metrics = [log for log in logs if "eval_loss" in log.keys()] + first_step_stats = eval_metrics[0] + last_step_stats = eval_metrics[-1] + + assert first_step_stats["eval_loss"] > last_step_stats["eval_loss"], "model learned nothing" + assert isinstance(last_step_stats["eval_bleu"], float) + + # test if do_predict saves generations and metrics + contents = os.listdir(output_dir) + contents = {os.path.basename(p) for p in contents} + assert "generated_predictions.txt" in contents + assert "predict_results.json" in contents + + @slow + @require_bitsandbytes + def test_run_seq2seq_bnb(self): + from transformers.training_args import OptimizerNames + + def train_and_return_metrics(optim: str) -> Tuple[int, float]: + extra_args = "--skip_memory_metrics 0" + + output_dir = self.run_trainer( + max_len=128, + model_name=MARIAN_MODEL, + learning_rate=3e-4, + num_train_epochs=1, + optim=optim, + distributed=True, # force run in a new process + extra_args_str=extra_args, + do_eval=False, + do_predict=False, + n_gpus_to_use=1, # to allow deterministic fixed memory usage + ) + + # Check metrics + logs = TrainerState.load_from_json(Path(output_dir, "trainer_state.json")).log_history + gpu_peak_mem_mb = int(logs[0]["train_mem_gpu_peaked_delta"] / 2**20) + gpu_alloc_mem_mb = int(logs[0]["train_mem_gpu_alloc_delta"] / 2**20) + + loss = logs[0]["train_loss"] + return gpu_peak_mem_mb, gpu_alloc_mem_mb, loss + + gpu_peak_mem_orig, gpu_alloc_mem_orig, loss_orig = train_and_return_metrics(OptimizerNames.ADAMW_TORCH.value) + gpu_peak_mem_bnb, gpu_alloc_mem_bnb, loss_bnb = train_and_return_metrics(OptimizerNames.ADAMW_BNB.value) + + gpu_alloc_mem_diff = gpu_alloc_mem_orig - gpu_alloc_mem_bnb + + gpu_total_mem_orig = gpu_peak_mem_orig + gpu_alloc_mem_orig + gpu_total_mem_bnb = gpu_peak_mem_bnb + gpu_alloc_mem_bnb + gpu_total_mem_diff = gpu_total_mem_orig - gpu_total_mem_bnb + + # sshleifer/student_marian_en_ro_6_1 has 54M parameter, 29M of which is `nn.Embedding` which + # doesn't get quantized and remains in fp32. Therefore we only have 25M parameters quantized + # in 2 bytes and the diff in optim memory usage is derived as so: + # + # - normal 25*8=~200MB (8 bytes per param) + # - bnb 25*2= ~50MB (2 bytes per param) + # + # Thus we should expect ~150MB total memory saved. + # + # Peak memory should be the same - the total should be different by about that same margin + # + # After leaving a small margin to accommodate for differences between gpus let's check + # that we have at least 120MB in savings + expected_savings = 120 + + # uncomment the following if this test starts failing - requires py38 for a new print feature + # gpu_peak_mem_diff = gpu_peak_mem_orig - gpu_peak_mem_bnb + # print(f"{gpu_alloc_mem_orig=}MB {gpu_peak_mem_orig=}MB {gpu_alloc_mem_orig+gpu_peak_mem_orig=}MB") + # print(f" {gpu_alloc_mem_bnb=}MB {gpu_peak_mem_bnb=}MB {gpu_alloc_mem_bnb+gpu_peak_mem_bnb=}MB") + # print(f"{gpu_alloc_mem_diff=}MB") + # print(f"{gpu_peak_mem_diff=}MB") + # print(f"{gpu_total_mem_orig=}MB, {gpu_total_mem_bnb=}MB") + # print(f"{gpu_total_mem_diff=}MB, {gpu_total_mem_diff=}MB") + + self.assertGreater( + gpu_alloc_mem_diff, + expected_savings, + "should use ~150MB less alloc gpu memory with BNB, compared to without it for this model but got" + f" a difference of {gpu_alloc_mem_diff}MB, with gpu_alloc_mem_orig={gpu_alloc_mem_orig}MB and" + f" gpu_alloc_mem_bnb={gpu_alloc_mem_bnb}MB", + ) + + self.assertGreater( + gpu_total_mem_diff, + expected_savings, + "should use ~150MB less total gpu memory with BNB, compared to without it for this model but got" + f" a difference of {gpu_total_mem_diff}MB, with gpu_total_mem_orig={gpu_total_mem_orig}MB and" + f" gpu_total_mem_bnb={gpu_total_mem_bnb}MB", + ) + + self.assertEqual( + loss_orig, loss_bnb, f"loss should be the same, but got loss_orig={loss_orig}, loss_bnb={loss_bnb}" + ) + + def run_trainer( + self, + max_len: int, + model_name: str, + num_train_epochs: int, + learning_rate: float = 3e-3, + optim: str = "adafactor", + distributed: bool = False, + extra_args_str: str = None, + eval_steps: int = 0, + predict_with_generate: bool = True, + do_train: bool = True, + do_eval: bool = True, + do_predict: bool = True, + n_gpus_to_use: int = None, + ): + data_dir = self.test_file_dir / "../../hf_transformers/tests/fixtures/tests_samples/wmt_en_ro" + output_dir = self.get_auto_remove_tmp_dir() + args_train = f""" + --model_name_or_path {model_name} + --train_file {data_dir}/train.json + --validation_file {data_dir}/val.json + --test_file {data_dir}/test.json + --output_dir {output_dir} + --overwrite_output_dir + --max_train_samples 8 + --max_source_length {max_len} + --max_target_length {max_len} + --do_train + --num_train_epochs {str(num_train_epochs)} + --per_device_train_batch_size 4 + --learning_rate {learning_rate} + --warmup_steps 8 + --logging_steps 0 + --logging_strategy no + --save_steps {str(eval_steps)} + --group_by_length + --label_smoothing_factor 0.1 + --target_lang ro_RO + --source_lang en_XX + --train_adapter + """.split() + + args_eval = f""" + --do_eval + --per_device_eval_batch_size 4 + --max_eval_samples 8 + --val_max_target_length {max_len} + --evaluation_strategy steps + --eval_steps {str(eval_steps)} + --train_adapter + """.split() + + args_predict = """ + --do_predict + """.split() + + args = [] + if do_train: + args += args_train + + if do_eval: + args += args_eval + + if do_predict: + args += args_predict + + if predict_with_generate: + args += "--predict_with_generate".split() + + if do_train: + if optim == "adafactor": + args += "--adafactor".split() + else: + args += f"--optim {optim}".split() + + if extra_args_str is not None: + args += extra_args_str.split() + + if distributed: + if n_gpus_to_use is None: + n_gpus_to_use = backend_device_count(torch_device) + master_port = get_torch_dist_unique_port() + distributed_args = f""" + -m torch.distributed.run + --nproc_per_node={n_gpus_to_use} + --master_port={master_port} + {self.examples_dir_str}/pytorch/translation/run_translation.py + """.split() + cmd = [sys.executable] + distributed_args + args + # keep for quick debug + # print(" ".join([f"\nPYTHONPATH={self.src_dir_str}"] +cmd)); die + execute_subprocess_async(cmd, env=self.get_env()) + else: + testargs = ["run_translation.py"] + args + with patch.object(sys, "argv", testargs): + main() + + return output_dir diff --git a/adapters/tests/fixtures/SiBERT/config.json b/adapters/tests/fixtures/SiBERT/config.json new file mode 100644 index 00000000..89f339fe --- /dev/null +++ b/adapters/tests/fixtures/SiBERT/config.json @@ -0,0 +1,45 @@ +{ + "architectures": [ + "BertForMaskedLM" + ], + "attention_probs_dropout_prob": 0.1, + "bos_token_id": null, + "directionality": "bidi", + "do_sample": false, + "eos_token_ids": null, + "finetuning_task": null, + "hidden_act": "gelu", + "hidden_dropout_prob": 0.1, + "hidden_size": 768, + "initializer_range": 0.02, + "intermediate_size": 3072, + "is_decoder": false, + "layer_norm_eps": 1e-12, + "length_penalty": 1.0, + "max_length": 20, + "max_position_embeddings": 512, + "model_type": "bert", + "num_attention_heads": 12, + "num_beams": 1, + "num_hidden_layers": 12, + "num_labels": 2, + "num_return_sequences": 1, + "output_attentions": false, + "output_hidden_states": false, + "output_past": true, + "pad_token_id": 0, + "pooler_fc_size": 768, + "pooler_num_attention_heads": 12, + "pooler_num_fc_layers": 3, + "pooler_size_per_head": 128, + "pooler_type": "first_token_transform", + "pruned_heads": {}, + "repetition_penalty": 1.0, + "temperature": 1.0, + "top_k": 50, + "top_p": 1.0, + "torchscript": false, + "type_vocab_size": 2, + "use_bfloat16": false, + "vocab_size": 10000 +} diff --git a/adapters/tests/fixtures/SiBERT/special_tokens_map.json b/adapters/tests/fixtures/SiBERT/special_tokens_map.json new file mode 100644 index 00000000..e7b03750 --- /dev/null +++ b/adapters/tests/fixtures/SiBERT/special_tokens_map.json @@ -0,0 +1 @@ +{"unk_token": "[UNK]", "sep_token": "[SEP]", "pad_token": "[PAD]", "cls_token": "[CLS]", "mask_token": "[MASK]"} \ No newline at end of file diff --git a/adapters/tests/fixtures/SiBERT/tokenizer_config.json b/adapters/tests/fixtures/SiBERT/tokenizer_config.json new file mode 100644 index 00000000..9de0d36b --- /dev/null +++ b/adapters/tests/fixtures/SiBERT/tokenizer_config.json @@ -0,0 +1 @@ +{"do_lower_case": false, "max_len": 512} \ No newline at end of file diff --git a/adapters/tests/fixtures/SiBERT/vocab.txt b/adapters/tests/fixtures/SiBERT/vocab.txt new file mode 100644 index 00000000..67084dbf --- /dev/null +++ b/adapters/tests/fixtures/SiBERT/vocab.txt @@ -0,0 +1,10000 @@ +[PAD] +[UNK] +[CLS] +[SEP] +[MASK] + + +! +" +# +$ +% +& +' +( +) +* ++ +, +- +. +/ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +: +; +< += +> +? +@ +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z +[ +\ +] +^ +_ +` +a +b +c +d +e +f +g +h +i +j +k +l +m +n +o +p +q +r +s +t +u +v +w +x +y +z +{ +| +} +~ +¡ +£ +¥ +§ +¨ +ª +« +¬ +® +° +± +² +³ +´ +µ +· +¸ +º +» +¼ +½ +¾ +Å +Æ +È +É +Í +Ö +× +Ø +Ü +Þ +ß +à +á +â +ã +ä +å +æ +ç +è +é +ê +ë +ì +í +î +ï +ñ +ò +ó +ô +õ +ö +÷ +ø +ù +ú +ü +ÿ +ā +ć +Đ +Ē +ē +ę +ě +ğ +ĩ +ī +ł +Ō +ō +ŏ +ś +ş +š +ū +ƒ +ǐ +ț +ɑ +ə +ɛ +ɡ +ɪ +ʊ +ʌ +ʷ +ˈ +ˌ +ː +ˑ +˘ +˛ +˜ +˝ +́ +̆ +Α +Β +Δ +Ε +Ζ +Ι +Κ +Λ +Μ +Ν +Ο +Π +Σ +Τ +Φ +Χ +Ψ +Ω +ά +έ +ή +ί +α +β +γ +δ +ε +η +θ +ι +κ +λ +μ +ν +ξ +ο +π +ρ +ς +σ +τ +υ +φ +χ +ψ +ω +ό +ύ +А +В +Г +И +К +М +Н +П +Р +С +Ч +а +б +в +г +д +е +з +и +й +к +л +м +н +о +п +р +с +т +у +х +ч +ш +ы +ь +я +Ө +ִ +ַ +ָ +ּ +א +ב +ד +ה +ו +י +ל +מ +פ +ק +ר +ש +ת +ء +آ +أ +إ +ئ +ا +ب +ة +ت +ج +ح +خ +د +ذ +ر +ز +س +ش +ص +ض +ع +ف +ق +ك +ل +م +ن +ه +و +ي +َ +ُ +ِ +ّ +ْ +ک +گ +ہ +ی +ހ +ނ +ރ +އ +މ +ފ +ދ +ަ +ާ +ި +ު +ޫ +ެ +ް +ँ +ं +ः +अ +आ +इ +उ +ऊ +क +ख +ग +घ +च +छ +ज +झ +ञ +ट +ठ +ड +ण +त +थ +द +ध +न +प +फ +ब +भ +म +य +र +ल +व +श +ष +स +ह +़ +ा +ि +ी +ु +ू +ृ +े +ै +ो +ौ +् +। +१ +ক +ত +দ +ন +ম +য +র +ল +় +া +ি +ে +্ +ਤ +ਨ +ਮ +ਰ +ਹ +ਾ +ੁ +ମ +ା +ஃ +அ +ஆ +இ +உ +ஊ +எ +ஒ +க +ங +ச +ஜ +ட +ண +த +ந +ன +ப +ம +ய +ர +ற +ல +ள +ழ +வ +ஷ +ஸ +ா +ி +ீ +ு +ூ +ெ +ே +ை +ொ +ோ +ௌ +் +ಕ +ಟ +ನ +ಪ +ರ +ಶ +ಾ +ಿ +ೆ +್ +ക +ച +ട +ന +പ +യ +ര +ള +ാ +ി +ു +് +ං +ඃ +අ +ආ +ඇ +ඈ +ඉ +ඊ +උ +ඌ +ඍ +ඎ +ඏ +එ +ඒ +ඓ +ඔ +ඕ +ඖ +ක +ඛ +ග +ඝ +ඞ +ඟ +ච +ඡ +ජ +ඣ +ඤ +ඥ +ඦ +ට +ඨ +ඩ +ඪ +ණ +ඬ +ත +ථ +ද +ධ +න +ඳ +ප +ඵ +බ +භ +ම +ඹ +ය +ර +ල +ව +ශ +ෂ +ස +හ +ළ +ෆ +් +ා +ැ +ෑ +ි +ී +ු +ූ +ෘ +ෙ +ේ +ෛ +ො +ෝ +ෞ +ෟ +ෲ +ෳ +෴ +ง +จ +น +ม +ล +ว +อ +ั +་ +ད +န +ស +ា +្ +ḍ +ḥ +ḫ +ḷ +ḻ +ṃ +ṇ +ṛ +ṟ +ṣ +ṭ +ṷ +ạ +ἀ +ἄ +Ἀ +ἰ +ὁ +ῖ +– +— +‘ +’ +‚ +‛ +“ +” +• +… +′ +″ +⁄ +€ +₹ +℟ +℣ +→ +∆ +− +√ +∞ +≈ +≠ +≡ +≤ +⋆ +▲ +● +◦ +☆ +♦ +⚛ +⚫ +✈ +⦁ +⭐ +、 +。 +い +か +が +け +こ +さ +し +す +た +て +で +と +な +に +の +は +ま +よ +ら +る +れ +を +ア +カ +チ +ト +メ +モ +ュ +リ +ル +ン +・ +ー +ㄱ +ㄷ +ㅂ +ㅈ +ㅎ +一 +三 +上 +世 +中 +之 +九 +事 +五 +京 +人 +仁 +仙 +令 +伐 +传 +佛 +側 +傳 +儀 +元 +光 +兒 +內 +公 +利 +則 +加 +北 +午 +南 +原 +參 +口 +古 +只 +可 +台 +史 +同 +后 +君 +周 +唐 +善 +四 +国 +國 +土 +地 +城 +基 +堂 +報 +士 +大 +天 +太 +夫 +奇 +女 +娘 +媚 +嬪 +子 +字 +孛 +學 +安 +宗 +官 +定 +宮 +家 +實 +寧 +小 +尙 +局 +居 +山 +岸 +島 +崇 +川 +州 +帝 +帶 +平 +年 +府 +張 +後 +徐 +德 +志 +性 +意 +慶 +成 +政 +文 +斤 +新 +方 +族 +日 +昌 +明 +昭 +時 +曌 +書 +月 +木 +本 +李 +村 +東 +楊 +機 +正 +武 +殿 +氏 +気 +水 +沖 +沿 +法 +波 +注 +洋 +津 +洪 +海 +淑 +渤 +漢 +濟 +無 +照 +爲 +玄 +玉 +王 +生 +発 +白 +百 +皇 +直 +県 +石 +神 +禍 +紀 +縣 +羅 +耶 +聖 +能 +花 +英 +蘭 +製 +西 +記 +語 +論 +諸 +謙 +警 +議 +趙 +辛 +道 +郡 +都 +醫 +里 +金 +鎭 +長 +門 +間 +阿 +院 +陵 +陽 +雲 +震 +韓 +食 +馬 +高 +麗 +龍 +가 +감 +건 +경 +고 +공 +과 +관 +광 +구 +국 +군 +궁 +금 +기 +김 +나 +남 +내 +녕 +당 +대 +덕 +도 +동 +라 +려 +로 +릉 +리 +마 +만 +명 +무 +문 +민 +박 +방 +벌 +보 +본 +봉 +부 +비 +빈 +사 +산 +상 +생 +서 +선 +성 +세 +소 +송 +수 +숙 +순 +시 +신 +씨 +아 +안 +야 +양 +어 +여 +연 +영 +오 +옥 +왕 +용 +우 +원 +유 +육 +음 +의 +이 +인 +임 +자 +장 +전 +정 +제 +조 +종 +주 +지 +직 +진 +천 +촌 +최 +태 +토 +표 +학 +한 +해 +향 +현 +형 +호 +홍 +화 +환 +황 +회 +후 +흥 +️ +( +) +, + +👇 +😉 +🙂 +🚂 +🚉 +🚌 +🛤 +🤔 +##ි +##ද +##් +##ය +##ඥ +##ා +##ත +##ම +##ක +##ර +##ෝ +##හ +##න +##ො +##ු +##ල +##ජ +##ව +##ෙ +##ග +##ැ +##ී +##ට +##ෂ +##ස +##බ +##i +##a +##r +##d +##g +##e +##ඞ +##ඳ +##ේ +##ඩ +##ප +##ං +##ණ +##l +##f +##1 +##6 +##8 +##0 +##ඇ +##2 +##7 +##ශ +##භ +##o +##n +##ධ +##ළ +##ෛ +##5 +##p +##x +##w +##s +##y +##m +##v +##c +##u +##t +##ඬ +##A +##h +##z +##ෞ +##ූ +##ෘ +##ඨ +##k +##ෑ +##අ +##ථ +##ච +##ඛ +##b +##4 +##S +##K +##ඹ +##ෆ +##E +##ν +##θ +##ρ +##ω +##π +##ο +##ς +##9 +##ඕ +##ඟ +##ඝ +##ä +##D +##R +##3 +##é +##ඤ +##q +##ா +##ற +##ை +##ப +##் +##ó +##र +##ब +##् +##ह +##म +##न +##V +##ඵ +##ඉ +##ඈ +##එ +##ෟ +##ඏ +##T +##े +##व +##ी +##j +##I +##M +##O +##ਹ +##ੁ +##ආ +##Z +##C +##ඡ +##ෳ +##˜ +##τ +##ά +##σ +##ι +##P +##Q +##L +##U +##X +##B +##ट +##ा +##ज +##J +##F +##️ +##N +##š +##έ +##G +##ē +##ō +##W +##Y +##ṇ +##ḍ +##H +##দ +##릉 +##ඒ +##ඔ +##국 +##시 +##대 +##උ +##ं +##क +##श +##ඊ +##া +##ল +##ে +##ो +##ඃ +##ඣ +##ḥ +##の +##प +##द +##ඪ +##자 +##사 +##화 +##ú +##á +##م +##ی +##د +##ہ +##ˌ +##왕 +##× +##상 +##의 +##학 +##ෲ +##ম +##ি +##´ +##˝ +##ˑ +##ि +##त +##भ +##ُ +##ت +##ِ +##ب +##َ +##ü +##ū +##ā +##˘ +##ூ +##ர +##ம +##य +##ु +##± +##🛤 +##ṭ +##ö +##° +##ר +##ק +##수 +##촌 +##च +##छ +##문 +##정 +##ñ +##ந +##த +##ி +##க +##ன +##® +##α +##δ +##ό +##κ +##빈 +##ا +##н +##т +##о +##ш +##а +##д +##ṛ +##ல +##る +##² +##å +##ح +##ட +##ச +##ய +##ு +##ள +##வ +##ே +##ï +##स +##ृ +##ύ +##ن +##़ +##в +##и +##ч +##ग +##ल +##ख +##Ζ +##Ο +##ô +##Þ +##í +##ඖ +##주 +##성 +##관 +##부 +##Í +##¬ +##р +##с +##е +##й +##녕 +##군 +##ī +##ඓ +##¼ +##к +##л +##у +##ௌ +##ध +##ः +##ç +##비 +##ष +##ण +##ड +##で +##Đ +##태 +##진 +##ˈ +##ெ +##ஷ +##기 +##ή +##ה +##ד +##ו +##ת +##м +##ل +##خ +##ر +##ṃ +##ś +##후 +##지 +##υ +##ඌ +##η +##μ +##ί +##Ω +##ج +##ّ +##ق +##و +##ص +##λ +##ṣ +##è +##â +##ة +##ַ +##ּ +##ত +##영 +##공 +##원 +##− +##ε +##ø +##👇 +##് +##ട +##പ +##ന +##방 +##인 +##ண +##ஜ +##황 +##ங +##ू +##ě +##제 +##금 +##동 +##향 +##로 +##ਾ +##ठ +##ऊ +##ँ +##æ +##ު +##މ +##ް +##ހ +##ޫ +##ރ +##ި +##އ +##ާ +##ழ +##ß +##യ +##ാ +##ി +##з +##ы +##마 +##ै +##ඍ +##ਰ +##チ +##ュ +##ー +##ル +##씨 +##্ +##র +##ন +##१ +##흥 +##ौ +##구 +##É +##ञ +##ீ +##만 +##생 +##∞ +##⚛ +##อ +##ม +##น +##ง +##ั +##ว +##จ +##÷ +##¾ +##ʷ +##ي +##ْ +##ك +##¨ +##à +##나 +##무 +##メ +##リ +##カ +##ض +##ء +##Ν +##Μ +##Ι +##Ε +##라 +##→ +##려 +##て +##い +##फ +##½ +##회 +##ì +##조 +##선 +##Α +##ḷ +## +##ொ +##õ +##я +##б +##ê +##ೆ +##ಟ +##್ +##ಿ +##ć +##민 +##한 +##ា +##ަ +##육 +##ş +##내 +##ə +##안 +##س +##た +##µ +##과 +##थ +##ב +##י +##야 +##ع +##х +##ש +##보 +##토 +##ف +##ز +##घ +##ÿ +##ę +##К +##형 +##표 +##ه +##이 +##Δ +##́ +##п +##ь +##ඦ +##γ +##ମ +##ା +##경 +##ோ +##ರ +##ಕ +##ಾ +##º +##ɑ +##ː +##ʌ +##궁 +##고 +##당 +##ł +##ɪ +##ஸ +##리 +##장 +##Λ +##א +##ל +##감 +##ދ +##ನ +##¸ +##φ +##ま +##か +##ئ +##は +##と +##す +##현 +##よ +##し +##こ +##ª +##̆ +##≡ +##Β +##Κ +##れ +##해 +##β +##ã +##г +##≤ +##Æ +##ര +##ਨ +##ു +##ള +##ɡ +##종 +##덕 +##순 +##گ +##˛ +##벌 +##¥ +##け +##🚂 +##ക +##ಶ +##오 +##ț +##ஆ +##ë +##서 +##🙂 +##도 +##ṷ +##신 +##환 +##उ +##ἰ +##χ +##় +##호 +##î +##ʊ +##ù +##ش +##Ü +##ނ +##😉 +##건 +##ŏ +##⁄ +##산 +##أ +##ִ +##ン +##ಪ +##ެ +##ਤ +##န +##ک +##유 +##ذ +##€ +##Σ +##ò +##양 +##직 +##ล +##ψ +##に +##ඎ +##ད +##ト +##ਮ +##전 +##³ +##🚌 +##ạ +##연 +##∆ +##세 +##음 +##ṟ +##ḫ +##ξ +##が +##ア +##ㄱ +##아 +##な +##آ +##য +##✈ +##ǐ +##용 +##ğ +##ָ +##Ē +##פ +##្ +##ស +##어 +##임 +##본 +##È +##モ +##إ +##ḻ +##광 +##ῖ +##С +##Р +##ɛ +##Å +##ক +##ら +##명 +##ފ +##झ +##숙 +##옥 +##박 +##송 +##천 +##ஊ +##ĩ +##봉 +##מ +##ἀ +##☆ +##න් +##ත් +##ක් +##ිය +##්ර +##ර් +##ාව +##ම් +##ින් +වි +##ස් +##ති +##ුව +##ීම +##නය +##ෙන් +##්ය +##හි +##ල් +ප්ර +##යි +##ිර +##ික +##යේ +##ාර +කර +##තු +##ෙන +##මා +##වා +සි +##තර +මෙ +##නු +##ාල +##ගේ +නි +##ණය +##දී +සහ +##ුර +##ෙස +##ිත +##න්න +##නි +##හා +##ුද +අතර +පි +##යක් +හා +හැ +##ුණ +වැ +##කි +##ුන් +##වි +වන +ලෙස +සං +කිර +සම +##ක්ෂ +පැ +##ත්ව +වූ +##යන් +ක්ර +##නා +##ියා +##ිබ +මෙම +##යෙන් +අව +##ීමට +##රි +කො +##හු +නො +##ාය +##දු +##ාර් +##යට +##ැන +##ාන +##ට් +ස් +බව +ඇති +##කර +##ත්ර +##ලි +විස +විය +වේ +දි +##දි +සඳ +ඇත +##he +##යා +##තා +##සු +##සා +##දා +##ලා +##කු +වෙ +##ංග +##ෙහි +කළ +දෙ +##වන +විශ +විසින් +##ද් +##ේශ +තු +##ද්ය +##සි +##තිය +##වර +19 +##කා +සිට +##ෙර +ඔහු +දී +වර් +කරන +##er +##මි +සඳහා +වල +සම් +සා +##ැබ +##ාජ +අන +##වල +##න්ද +##මු +##සේ +කිරීම +##න්ත +##ාවේ +නැ +සැ +යු +පිළ +##ත්ත +දැ +##ීය +මු +##ඩා +ලබ +##රු +##ුණු +##in +##කාර +##මය +##00 +##වේ +##on +හෝ +එය +##ෂ් +පව +හි +##කට +the +මි +##පා +##න්නේ +පරි +වෙන +අධ +සිය +##රා +##at +##ප් +##ඩි +##ණ් +කු +##ස්ථ +##තුව +##ණි +##ිරි +විද්ය +##an +තිබ +මේ +ලැබ +යන +##ටි +##es +එම +##ුද් +බල +ප්රති +රාජ +ජන +##ල්ල +##ණ්ඩ +##වැ +හැක +##ානය +##මින් +##වත් +ශ්ර +##en +භාව +එක් +##or +ගැන +##ොහ +##තාව +කොට +##හැ +##සර +##දේශ +මැ +##al +##ාග +දක් +උප +කල +රජ +##තික +##ංක +සමා +කි +##හන් +ක් +##ෙකු +##ෙක් +##ාප +##ළු +##ත්ම +වී +##ed +##ූප +කාල +නම් +පිළිබ +##ද්ධ +##යු +අප +##ුරු +##ාම +##විය +භාවිත +##ියාව +##ාස +එක +##න්ධ +##මණ +##ලය +##ar +##වුන් +බැ +සිදු +##කය +විට +##ර්මා +##ගින් +##ේෂ +##ධාන +##ic +##කින් +##ෝග +##ීන් +##ඩ් +එහි +##ුවන් +##ත්වය +වශ +යනු +##ියේ +පො +##නේ +අය +ව්ය +නිසා +බොහ +ආර +කැ +##ගම +##it +වශයෙන් +##පත් +ලදී +මහ +##ගත +##ව් +ගො +මෙය +තුළ +පිහි +##න්ය +ගැ +මත +##නයේ +##ලිය +##තුර +යො +ශ්රී +පහ +පිළිබඳ +##වීම +##ක්ර +පු +##nd +පමණ +බොහෝ +##ංශ +of +##වී +අනුව +පළ +හේ +තර +##මේ +බි +##ගෙන +හැකි +වඩා +ඔවුන් +ජා +ලද +දින +##වු +කිරීමට +සු +අනු +චි +##මන් +ස්ථ +සේ +##හාර +පසු +##ප්ර +##is +කා +##විධ +කට +වැඩි +වීම +##ත්මක +පර +##කාශ +##සුව +##න්නා +කෙර +##ion +ලබා +දු +වැනි +##ම්බ +20 +##වර් +පුර +වසර +##ගත් +##ුදු +නිර්මා +##ing +in +පත් +##ුද්ධ +ලංක +මගින් +දේ +200 +අඩ +##හර +##ත්තේ +චිත්ර +පැව +##ටු +##ලක +මා +රට +සම්බ +අධ්ය +පා +##දුව +නිර +තුල +##මුත් +##ොර +සමග +රැ +මෙහි +ප්රධාන +ග්ර +##ූල +##re +##තුරු +ජී +යුතු +##ෝක +බවට +##පය +අග +##මක් +##දන +විශේෂ +පාල +##ියානු +##ාවක් +පෙර +##දය +##as +##වූ +ක්රියා +ඔහුගේ +හම +අද +##ීත +වෙත +දේශ +වන්නේ +කරයි +සද +##ධ්ය +භාවිතා +##මැ +සම්බන්ධ +නිය +ප්රදේශ +##ගර +විශ් +විශාල +ඇතු +ඉද +හෙ +දක්වා +##ම්භ +##ිකා +නමුත් +##ත්ය +සාමා +සො +##ටන් +සිදුව +ප්රමා +##හෙ +රාජ්ය +##පි +##පට +##ර්ථ +##යින් +##නී +##ීම් +##ගල +and +##ටා +##හල +සිටි +ක්රි +ඒවා +##om +##ou +##සන් +ඇය +##ූර් +##ච් +භා +##ණයක් +නා +වා +##නට +##හිත +##ෝජ +##ීර +ගණ +##ලු +නව +##ාවන් +ලි +පසුව +##තන +##ියන් +වැඩ +##ෑම +##ීන +දිය +##හිර +##කම් +##ෙන්ම +චිත්රපට +##ර්ශ +ඉතා +##භාව +වර්ග +##ලේ +##විත +##ැයි +##යුතු +පෙ +18 +යට +##ඳු +ගැනීම +##ස්ත +ක්රම +පිරි +යොදා +##ශ්ය +##බ් +අවස්ථ +වෙනස් +##චාර +ඉන් +to +ශි +වු +කරනු +##le +##වය +201 +විවිධ +##තේ +##ශ් +##ායක +සමාජ +දෙක +##ජි +##වත +මහා +##කරණය +කෙ +##ල්ප +##යක +සදහා +##මර +ගෙන +නී +අභ +දෙන +දැක් +##ොන් +නගර +##වාස +##යේදී +##තනය +වලට +කටයුතු +##ාරි +කාර් +##ධනය +##ුවේ +තම +##කෘ +හේතුව +මාර් +ගත +##ක්ෂණ +ලංකාවේ +##ent +##දෙන +##තිවර +##ණු +##මට +##st +##ීට +##නම් +බ්ර +මූල +##ධි +ඉන්ද +##ට්ර +##දනය +ආකාර +##ව්ය +##ාවට +පිළි +විද්යා +##ළි +##ඛ්ය +##පාල +ගි +නිර්මාණය +##හස් +##මත් +##ුවෙන් +##ැන් +##el +##ඳින් +##am +##ාන් +සහිත +##ට්ට +##ශ්ර +පුද් +##පද +ප්රකාශ +##සිය +වලින් +ලෝක +##හාස +රජු +ආරම්භ +හැකිය +##ගය +වර +##et +මධ්ය +##හන්සේ +##සත් +##ර්ම +ඉහ +කලා +හමුද +##නික +##ීමේ +##සක් +##ගෙන් +වර්ෂ +හො +වෙයි +පැමි +භූ +##බි +කළේ +සංග +ජාතික +ශා +නිෂ් +මො +බෙ +##වින් +මුල් +##ගැන +සාමාන්ය +##කුණු +##වෙ +පිට +කිය +##තිහාස +වාර් +අම +##මික +අර +##ලෝ +තව +ඇත්තේ +##තී +##ක්ක +##තින +අන්ත +වූයේ +##ro +අත +පැහැ +භාෂ +##ct +##ඳුන් +##දිය +ලැබේ +නිෂ්පා +මිනි +සිං +##ග් +##රණ +අවශ්ය +ගොඩ +##නිය +##il +සමඟ +##ුවර +මුද +##ලින් +කෘ +ලේ +ප්රා +අත් +##දේ +##යෙහි +හැඳින් +ආය +##ol +වැද +රෝග +##පු +පද්ධ +##බා +ක්රී +අස +ක්ෂ +සංක +පුරා +සංස් +පැවැ +එක්සත් +##ෙනි +පත්ව +එසේ +##ධාර +බවයි +වග +##වයි +##ෝල +##ෙල් +තා +##ක්ත +##ක්ෂණය +යෙ +උත් +##ෝප +සොයා +ද්ර +ගත් +ගැනීමට +##ට්ඨ +කිරීමේ +##තුන් +##ation +මැතිවර +හර +අන්තර් +දර +රූප +##ජා +නැවත +අයත් +##රණය +##ෝධ +සැලක +පවතින +##නයක් +විද්යාව +##න්නට +##නයට +##ඩු +##මාන +##කො +th +අඩු +##ටුව +##කරණ +ගන්නා +##ch +නිද +වෙළ +මුහ +##යකි +තිබේ +කුඩා +##ir +දුර +පෙන් +##ග්ර +අයි +වහන්සේ +තවත් +රෝ +##ෙසේ +හඳුන් +වුව +සංඛ්ය +සමහර +තොර +##ම්ප +##වලට +##මැති +##ad +##න්ද්ර +පළමු +199 +ඉදිරි +##සට +උදා +##විට +##ක්රම +බලප +රු +##ුත් +##වීමට +කිහි +##සුන් +ලක් +##ියක් +ආරක්ෂ +##ෙයි +වැදගත් +කණ්ඩ +පූ +සඳහන් +සියව +##වාහ +කෙසේ +ඉහළ +ස්ථානය +The +ස්ව +ලෙසින් +##පුර +මඟ +##ෙන්නේ +##කයන් +කෝ +කණ්ඩාය +##නක් +##ප්ත +කාලය +ලා +පෙන +කොට්ඨ +මාන +##ot +කිරි +##න්ත්ර +පාස +දකුණු +##ri +නිරූප +මීට +බහු +පමණක් +පාලනය +##ෝස් +කාර්ය +ආර්ථ +10 +##ිතා +පැවති +ප්රථ +මෙන්ම +දැක +##දර +##ගු +ව්යාප +අධික +සී +පර් +පාර් +දේශපාල +යුද්ධ +වෛ +සැල +##නැ +##කිර +ක්රියාව +රස +for +##ස්ස +##ුවක් +##කාල +##තම +ඉතිහාස +පිහිටි +රා +##වල් +වෙනත් +කරමින් +ලො +ගේ +පෘ +ආස +ප්රමාණය +ඔවුන්ගේ +##දීම +##ුණි +ආහාර +##ම්බර් +##වරුන් +යන්න +##ොත් +##වැනි +සෙ +##ගණ +##iv +ආර්ථික +##ියට +##ෆ් +##ේක්ෂ +198 +සිංහල +වර්ත +##සුම් +ගුවන් +##ce +##ැම් +සංස්කෘ +##ළඹ +යටතේ +##ිනි +##ly +##id +##ලර් +##ur +පැමිණ +##ුවට +ගෙ +තේ +##ter +##නෙ +##ෙකුත් +is +පවතී +##ow +දැන +නොහැ +කේ +තැන +යුග +ලදි +ඇමර +##ාලය +හිමි +##වලින් +##රිත +අප්ර +##ාර්ථ +වෙන් +බට +පුද්ගල +197 +දක්නට +බෝ +##පති +##ස්ට +නොවන +17 +ශක් +ප්රථම +මෙහෙ +##ිකාව +නිල +යම් +##ිකානු +ත්ර +##ර්ය +අධ්යාප +##රඹ +##වනු +15 +නැත +එනම් +ලං +##නෝ +පී +විර +ආගම +ලබන +##ut +ඉදිරිපත් +##ස්ථානය +##වන් +වඩාත් +හැර +re +##ලී +යුර +##ul +තීර +##වාදී +වර්ධනය +කිසි +සමාන +චරිත +16 +##වාද +දර්ශ +##ෂ්ඨ +##තින් +උස +වීමට +##ay +##ුවා +අර් +##ia +විශ්ව +##ස්තර +ලද් +##ජන +##වෙන +විශ්වාස +ඇතැම් +පද්ධතිය +හට +මඟින් +##මන +##යික +ක්රමය +දෙවන +තත් +##දුර +බවත් +##තුමා +##කාරී +කොටස් +##ිරාජ +ලබයි +##ීර් +##න්විත +සීම +සිර +##us +ඒක +ලංකා +පක්ෂ +නික +##දාය +##කරන +පිහිටා +be +පරිගණ +බටහිර +##චි +කළේය +හේතුවෙන් +අති +ඇතුළ +බා +අංශ +මාල +යැයි +මැතිවරණ +උදාහර +##ෂ්ට +අධිරාජ +නීති +##තාවය +##im +පදන +නොව +අවස්ථාව +##ලන්ත +යා +##පයක් +##ල්ලා +##හස +12 +##න්ට +ඇම +සිටින +අධ්යය +පැවැත්ව +##ූර +සංවිධ +පිළිබඳව +සට +##ද්ර +සම්ප්ර +අර්ථ +තෙ +ජය +##කල +##em +අනෙකුත් +මණ්ඩ +##ාත්මක +##ෙස් +දෙස +දිස් +##පූර් +##න්තර +##ig +##ෝෂ +##os +වසරේ +196 +##ාසය +පරිදි +##ers +ගැට +##තය +##ත්රි +විහාර +as +සෑම +සමන්විත +ලෝ +##ටත් +ඉඩ +ලිය +හැකියාව +##ාරය +පැහැදි +පිළිබද +ජීව +##ුවත් +මාර්ග +##ියාවේ +පවු +තෝ +මූලික +සර +##od +##ංගු +##and +කොර +##um +##ඵල +ඇගේ +කතා +විෂ +හේතු +##දුන් +පිය +##තීන් +##ලට +##ag +වාර්තා +##ංග්ර +නිරූපණය +##ැක් +st +අවුර +මෙන් +##මිය +ති +##යන්ට +මට්ට +ගෝ +විස්තර +##යෝග +සියලු +යාම +සංගීත +##හන +අනතුර +##නාව +ගමන් +##ලියන +තමන් +##හය +සංවිධානය +තොරතුරු +##ෙකි +කෙරේ +විවාහ +##භාග +මානව +අවධ +##ිතාන්ය +on +අමතර +බ්රිතාන්ය +කථ +නීතිය +දේව +or +අල +##ගි +පැර +ඊට +උද +##ේත්ර +අරම +ලද්දේ +##මාර +අවසන් +11 +පද +##පො +##න්ගේ +මිය +##කරුවන් +ජල +ඉල +එර +යුතුය +##මත +##ra +වාය +සුදු +නිර්මාණ +වෘ +##ෂණ +##සින් +##පත +පියා +න්ය +ද් +වෙනුවෙන් +ද්රව්ය +##ඩිය +හරහා +##හැර +##ීමෙන් +ලබාග +ගුණ +##ගන්නා +ගොඩනැ +උතුරු +එහෙ +ජෝ +##න්තු +ඇරඹ +##සී +දේශපාලන +##ස්තුව +ඔහුට +හෙවත් +බුද්ධ +තිබූ +##ොක් +##කම +##ith +ඔස් +සේව +ගිය +##කළ +##ගලය +ස්වා +පවත් +ක්ෂේත්ර +##ik +සංවර් +ව්යා +හමුදා +##න්ඩ +සක +ජීවිත +##ොං +අභ්ය +ජනපද +##ist +පරිගණක +##යාගේ +භාෂාව +නොවේ +බලය +වෙළඳ +පොදු +වය +ක්රියාත්මක +සාමාන්යයෙන් +විදු +නිර් +රච +දිග +##දර්ශ +විනා +ව්යව +නොහැකි +ඉංග්ර +බෞ +##දින් +වර්ණ +194 +ගු +##යන්ගේ +රි +##ීසි +බලා +නිෂ්පාදනය +නෙ +නම +ක්රීඩා +නිපද +##ංගික +##්ල +ශාක +##බල +ලොව +සාමාජ +##ච්ඡ +දෙවිය +කොළඹ +ස්වභාව +එසේම +දිස්ත්රි +පල +සුව +##ලිමේ +එයට +වර්තමා +##ණිය +නියම +##ටිය +##ර්මාන්ත +පර්යේ +සෝ +රසාය +##ෂ්ය +පහත +බෞද්ධ +14 +එකක් +##යෙකු +##සයි +##දේශීය +පරී +ප්රතිඵල +ක්රීඩ +අදහස් +කරන්නේ +##ූන් +පාර්ලිමේ +##ෝන +##th +නමින් +ලංකාව +##ට්ය +මුල +ලැබූ +බුද +##රාධ +දහ +බිහි +##බර් +##ුණේ +පළා +##ෙක +195 +තරග +ජනතාව +නැගෙන +මේවා +මාස +ප්රභ +සම්පූර් +සන්න +##ගැ +කාන්ත +පුද්ගලය +පැහැදිලි +##සිද්ධ +කෙරෙහි +##ශ්ච +13 +වෛද්ය +al +යනුවෙන් +රාජධාන +##op +##ාර්ය +නැති +ජේ +දෙකක් +##ර්ග +රේ +අමතරව +##ජ් +ආයතනය +නාම +##වාරි +##est +හඳු +පිහිටුව +දේවා +##ip +##වාහි +රො +නොමැති +අංග +##පිය +යොමු +##ුවන +ලක්ෂණ +එල්ල +con +##ලාව +විම +##ටය +අභි +##වෘ +##හොත් +de +සැක +සිද්ධ +එහෙත් +හඳුනා +අනතුරුව +ජලය +ලේඛ +an +සෞ +කිහිපයක් +##ධන +##ත්වයක් +විද්යාත්මක +දෙම +නායක +කාලයේ +##ෂික +මෙසේ +සාමාජික +විජ +with +In +##ස්තු +##කයින් +නැගෙනහිර +##ැම්බර් +වැඩසට +##චනය +ජනප්ර +##ග්රහ +ගනී +##ess +වනු +නාට්ය +බැවින් +මිලියන +##ගැනීම +##ac +ව්යාපාර +එරෙහි +000 +දායක +##ාර්ථක +by +මස +වට +was +ප්රමාණයක් +සියවසේ +##ලිම් +විනාශ +ජනා +තැ +##තියක් +තරඟ +##යකට +පරිසර +ඉදික +එන +##මයක් +එකම +##න්ථ +ශිල්ප +නගරය +##සල +පිල +සමාගම +තමා +මහතා +ඉවත් +##නුම් +ඩි +com +දිනය +නියෝජ +##un +##her +තෝරා +##වීම් +මුළු +##ෂ්ණ +##ධක +පන් +පිහිට +මෙහිදී +විශේෂයෙන් +හොඳ +##චල +තහ +පදනම් +වැට +කර්මාන්ත +ඇතුළු +##ෝට +##ver +##ies +භාග +##ාවි +දැඩි +##ක්ෂි +##බැ +##ච්ච +චන්ද්ර +##කයා +වුවද +පැරණි +චිත්රපටය +මෘ +යි +##ාශ +##විද්ය +##ොහො +හදුන් +සතුන් +##නුවර +දෙදෙන +ඇස +##හ් +නාමය +නිදහස් +ග්රන්ථ +රූපවාහි +##ේද +ඇතුළත් +##ගා +that +##හී +##මාව +##සව +wh +ස්ථාන +##ියේය +බලපෑ +පරමා +ගණන +ඉන්දියානු +##ain +උපා +##සන +රටවල් +තිර +ඩො +##ak +යයි +මග +##av +##කාලීන +පූර් +භාර +ධර්ම +##පැ +සාහි +##ෝල් +##මෙන් +තවද +මාධ්ය +##ලයේ +##ණික +ගීත +##ජන් +සෑ +අනෙක් +##හල් +සලක +##රදි +ඔබ +බො +##ලව +##ජී +##යන්තර +##ංශය +##දාන +ජනාධි +##සිං +ගල් +##ලක් +ඉංග්රීසි +විද්යාඥ +සූ +සිටිය +පවත්වා +##se +භෞ +ගිවි +##ab +##නයන් +##රිණි +භාණ්ඩ +පරා +ප්රහාර +##ලෙස +##සාන +උපත +##තිර +යුද +##ate +දත්ත +අවසා +##oc +##කොට +##තියේ +ඔවු +##සික +##if +##ත්යන්තර +##මී +පුවත් +සභ +##යුම් +##කඩ +මී +මිනිසුන් +සාහිත්ය +##ලත් +##පිට +ඉස් +##වාදය +සමී +යුධ +ප්රාදේශීය +පිලිබ +යුක්ත +යුරෝප +ජූ +##ථි +මෘදු +##කුණ +විකාශ +##ශී +##නයා +වලදී +අධිරාජ්ය +වර්තමානයේ +##යයි +යෝජ +##වරු +##වීමේ +තිබෙන +##ත්වයට +පෞ +ආදී +ජාත්යන්තර +##රට +##ෛල +කී +මුහුණ +සටන් +##ud +සතු +##යකින් +##ඳි +ආශ්ර +පහළ +සල +##ap +අඩංගු +තන +එමෙන්ම +කිරීමෙන් +වායු +බී +##ස්ත්ර +ගා +ලිංගික +තීරණය +##යෙක් +##ard +අවුරුදු +are +ලැබෙන +##සීම +##නයෙන් +ඔස්සේ +හින් +පම +සිතුව +##නිමින් +කලාප +නිකුත් +පළම +අතීත +අර්ධ +##ts +##ඩ්ර +රැක +##ගැනීමට +සුළු +ලෝකයේ +දෙමළ +කරන්න +ස්ක +ආණ්ඩ +##බර +ඇල් +සේවය +ඇමෙර +pro +දෙප +යුගයේ +විද්යාල +හැඩ +ජනප්රිය +කොට්ඨාශ +##ධා +පෙළ +##සුන +ලේකම් +##සිංහ +##ගමනය +නිස +##ගො +නූ +පුළු +##our +මන්ත්ර +දැන් +චී +තාර +දෘ +##යකු +උත්සා +##දැ +30 +##ගම් +##දීය +##ලො +##ඤ් +සාර්ථක +##කීය +කැර +##ජු +##ෙව් +කාලයක් +සත්ව +කරුණු +එකි +ඉතිහාසය +ස්ට +##ොට +පාර +se +කාබ +රජුගේ +භෞතික +##කාංග +සත් +##ෝර් +##ාපනය +25 +##දක් +අවධානය +පට +ඉහල +නාග +හතර +එකිනෙ +##ිකාවේ +අතුර +ප්රමාණ +යටත් +ආගමික +ගත්තේ +රංග +දිස්ත්රික්ක +සර් +##ස්ට් +හිමික +පෘථි +පර්යේෂණ +##og +දළ +සකස් +##කූල +##ගාර +##ුද්ර +උසස් +ගනු +සත්ය +පවා +දියුණු +ක්රියාවලිය +##ිණි +ප්රදේශයේ +##තක +##ංච +සංචාර +##සියම් +තර් +වෙනුවට +අන් +මරණය +අදාල +ඕන +පැමිණි +ඉන්දියාවේ +තනි +##චාර්ය +කොටස +අවම +##ගහ +##තිහාසික +තිබු +දශ +පුළුල් +##ෂණය +##ීමක් +හඳුන්වා +උෂ්ණ +පටන් +සිදුවන +100 +රටවල +##ුරින් +කඩ +ඇමරිකානු +කියා +##ාවෙන් +එන් +අධ්යයනය +##ද්රව්ය +මිල +තත්වය +ඡාය +##මිනි +##ity +##දක +මතු +රූ +කොටසක් +සෘ +රජයේ +බැඳ +පාර්ලිමේන්තු +තරම් +සියළු +එහිදී +භි +පහසු +මැද +##නයි +ශ්රේ +සේවා +මෘදුකාංග +##මනා +මුද්ර +චීන +##පී +ප්රසිද්ධ +##සං +ග්රී +අධි +විද්යාලය +##රිය +නාල +මෙයට +##ල්පය +යුත් +ව්යවස්ථ +##ගී +##rom +යැ +##නො +##ර්මය +ශක්ති +ස්වර +su +##ලේෂ +##ප්ප +ඊජි +ජු +පන +##සය +en +##ාරූප +##ld +සමයේ +ශක්තිය +රජය +##යෝ +එකතු +ලක්ෂ +එරෙහිව +ආකෘ +කාර +මූ +##ric +##ම්ස් +නිව +තබා +##යෝජ +කිරීම් +##කරු +##දායික +ලබන්නේ +නිෂ්පාදන +ආකාරයට +##්රිය +සාධක +##ස්ථාන +තුළින් +193 +ජි +තුන් +ස්ත්ර +දරුවන් +දැම +රාජව +සම්බන්ධයෙන් +සැලසුම් +##මුඛ +ක්රියාකාර +ex +මැතිවරණය +උත්සාහ +චල +සහභාග +කණ්ඩායම් +අංක +සුර +##ටර් +අතරතුර +මල් +මනෝ +##ූහ +කෙරිණි +දැක්විය +සින +ගොස් +ඉදිර +##බෝධ +##විල් +##ිතව +තුන +##ට්ලර් +තෙක් +ගම් +කලේ +පද්ධති +ධා +පොළ +##ැති +##ටම +හිම +අධ්යාපන +##කයේ +##කෝ +සමත් +දෙවියන් +විසිනි +සංවර්ධනය +ඉක් +##pe +##ිකට් +රූපවාහිනී +කෙරෙන +##ක්රමණය +ආයතන +සම්පූර්ණ +ආදිය +##වෙන්නේ +##ාන්තර +සංඛ්යා +හිට්ලර් +##සුම +##පේක්ෂ +br +##සිර +තැබ +පත්ර +දුන් +වූහ +ප්රංශ +##නායක +සිත +##ෑන් +දුම +කළහ +##වික +##ැල් +##වරයා +ප්රදේශය +බර +වර්ෂයේ +අන්තර්ගත +මැයි +##ුරුෂ +ඉන්දියාව +නූතන +21 +##ත්න +තිබුණි +අගය +දැනට +ඔක් +මධ්යම +බුදු +රෙ +සියල්ල +පහර +ගැනීමේ +##යුර +පුහ +##ive +##කල්ප +ජනයා +දීම +යෙද +ආසන්න +ආදි +##ේල් +22 +##තෘ +මුදල් +ගෘ +සූර් +පරිවර් +ඡායාරූප +භික්ෂ +ගෞ +ආරක්ෂා +නිලධාර +අවස්ථා +##ඤ්ඤ +විද්යුත් +##වුරු +##ang +වේද +ඓතිහාසික +##රය +ලැයි +##ෙල +ප්රදර්ශ +කිහිපය +wik +මාර්ගය +ඉලෙක් +උදාහරණයක් +නිවැ +##යන්හි +##කර් +සැලකිය +##ණා +ග්රහ +##මානය +බැල +හමුදාව +නිළ +රාජකීය +පේ +පැතිර +අවසාන +මාර්තු +පෙන්වා +මන්ත්රී +චෝ +##ම්ප්ර +ව්යු +භාෂා +##ඹුරු +ක්රිකට් +කොට්ඨාසය +හී +තාක්ෂණ +ඉලෙක්ට්ර +##ළුව +ඉල්ල +##ිතය +##ාරා +මන +අපේක්ෂ +පීඩ +සම්මත +සංඛ්යාව +බු +##ෂා +##ical +ගොඩනැගි +දිනදී +ඊජිප් +මව +සපය +##tt +වළ +එස් +192 +අවි +##දුම් +##කයක් +නිරී +ඉහත +##වෘත +වංශ +ශත +පැන +පාරි +##ual +##ගිය +##පසු +ගුරු +ඇල +අධ්යාපනය +ආකාරය +පස් +##ෙහිදී +##වේද +බෙදා +අම් +විෂය +එමගින් +හමුව +බිඳ +##ීකරණය +අතරින් +පිණි +ශර +විද්යාවේ +පැවත +දක්වන +##හසු +##ine +අක් +##ශේෂ +රැස් +උඩ +පුරුෂ +##ස්ම +යුද්ධය +රසායනික +ආදාය +වේග +සන්නි +කෙන +##ල්ස් +යුගය +##ich +##ගෙ +##ක්ස් +දැකිය +සංකීර් +කල් +නිම +##ද්ගල +ජනගහ +වගා +සුදුසු +ඝා +ට්ර +අතින් +##චන +ප්රව +භාවිතය +සියවස +##ill +සංකේ +වනුයේ +දිස්ත්රික්කයේ +දා +##තිරි +කළු +pl +##ලිස් +තත්ව +දුම්රිය +##ංජි +හැදින් +ජනාධිපති +ලී +##කිරීම +කෙටි +තාප +රාජධානිය +වනාන්තර +මිනිස් +##සියන් +##ද්ද +පාලන +සෛල +##වරණය +මොවුන් +ලාංක +සීමා +##රළ +අරමුණ +අනා +මෙවැනි +##ද්ගලික +සබ +##න්දේ +අක්ෂ +##ක්ති +වන්නට +කථා +##දුරටත් +##ේප +සටහන් +ඕනෑම +##දුරු +##ial +##තාවක් +##ost +කණ්ඩායම +කරුණ +විදුලි +අඩි +වැඩිම +කම් +ඝන +##වක් +##ස්ට්ර +අවබෝධ +කුම +##ore +පමණි +ඇයට +##ant +##ෝස්තු +අවසානයේ +##ත්ති +මිනිසා +St +##්රා +ආර් +සංස්කෘතික +##ලික +##ගුණ +##කිය +##දින +උදාහරණ +හයි +##ුම් +එකල +මෝ +වැළ +##art +##සෝ +සාපේක්ෂ +පෞද්ගලික +##වහන්සේ +වුයේ +ආයු +සදහන් +ඇතිවන +භූමි +වාස +ෆ්ර +##ත්තා +##කේ +වෙමින් +කතාමා +යෝජනා +##ew +##ෙකුට +රතු +මුලින් +මිශ්ර +24 +##ාවලිය +කරග +නගරයේ +ඒවායේ +බේ +ප්රකාශයට +සමස්ත +ත්රි +එවැනි +වටා +##රුම +##වන්නේ +##ත්යා +Ch +අඟ +##ුම +##ගන් +සැම +ද්වි +සෞඛ්ය +වො +විවෘත +මණ්ඩලය +රන් +කරගත් +වෙතින් +හැසිර +සැලකේ +ජීවත් +වුවත් +මුහුදු +වර්තමාන +ජාතීන් +සූර්ය +##ටෝ +ව්යාප්ත +from +අතුරින් +මෙහෙයුම් +##ත්වන +වෙබ් +තාක්ෂණය +පූර්ව +තැන් +බාල +##ලෝක +නිවැරදි +දිගු +ගෘහ +##ටුම් +පාසල් +හින්දු +ලෙසද +##ෝගික +ටී +කරගෙන +සාම්ප්ර +මහජන +මෑ +පිණිස +##හත් +##pp +මරණ +නර් +ප්රශ් +අගෝස්තු +වස්තුව +චරිතය +##ොස +##ib +කාණ්ඩ +යානය +ඉටු +මම +##ර්ණ +ස්ප +කින් +සැපය +##ට්ස් +mat +ප්රමුඛ +##ණයෙන් +ආරක්ෂක +ප්රතිපත් +වින් +සිවිල් +විරුද්ධ +අණ +මුස් +කලාව +ආණ්ඩු +##කදී +ලැබීය +තවදුරටත් +##ාවිද්ය +පිලිබඳ +සැප්ත +##වුම් +කඳු +විශ්වවිද්ය +##තරම් +අයිති +##දෙස් +##ph +##ian +පස +2007 +කිරිම +සිතුවම් +උළ +##ust +ඡන්ද +අට +##ගෝල +ශරීර +##නුම +ජනප +අල් +නොවැ +රාජ්යය +මාර +##හේ +සමාජය +තො +තී +දුර් +##qu +සම්මාන +50 +ඔක්ත +රැජි +##බු +ඉංජි +II +##all +සතර +ගනිමින් +##සර් +##ංචි +සිහි +ජනවාරි +අප්රේල් +ඉංජිනේ +##දිග +සැප +ලිපි +ඉතිරි +ඇතැයි +කාම +##කරුව +සෙන +##ඹු +ආධාර +##තට +නැමැති +වෙති +අමා +##පන් +##ණන් +##ment +##පල +ප්රතිකාර +තත්ත්වය +ඉස්ලා +ජපා +##ටිනා +සිදුවේ +නිශ්ච +කත +අභ්යන්තර +සුවි +තුලින් +මාලි +##ගැන් +##ක්ෂේප +ඇතුලත් +හොඳම +නුවර +අක +විශ්ලේෂ +##පික් +කොරියානු +පළාතේ +##පර +##තියට +සිටියේ +##තුවේ +191 +##ඩියෝ +ලැයිස්තුව +රථ +##gh +##ාලි +පෘථිවිය +ශුද්ධ +සභාව +හැඳින්වේ +සිරි +ප්රේ +සාක්ෂි +2008 +23 +අනාව +කිසිදු +##ියක +##හුව +මෙහෙය +යුරෝ +ජනපදය +##ියෙන් +බිම් +කාන්තාවන් +##ඩුව +පිරිස +බලපෑම +පෙනී +##කථ +කෘෂික +වීමේ +පරමාණු +##ාවල +උදෙස +මුස්ලිම් +##තක් +##වතුන් +සැළ +පුරාවිද්ය +##භාවය +ලෙ +කාලීන +රුස +##igh +ඒකා +ගෝල +කිසියම් +te +දෙව +කැන +කුල +##ell +මරා +පරාජ +ශාස්ත්ර +බලපෑම් +පාසැල් +අනි +##ect +සාක +පිරිසක් +ශිෂ්ය +ඉදි +වස +චිත්රපටයේ +පිළිවෙ +ස්කන්ධ +මන්ද +not +ජෛ +##සාර +අනුගමනය +##ණයට +සැප්තැම්බර් +##age +අනුරාධ +දසුන +වෙතත් +ශබ් +දැකගත +ව්යාපෘ +වටිනා +පරීක්ෂ +##දාළ +අවස්ථාවේ +##ණයේ +##ුන්ගේ +##ාන්ත්ර +වෛර +වයස +ඵල +දැර +දේශීය +##ෙකුගේ +ප්රවාහ +සැබ +##ොස් +ඇන් +තබ +කුරු +ජාල +ඩී +##ng +සිදුකර +සන්නිවේ +##ෂි +විවේ +##per +##මානු +##ber +එකතුව +ස්වරූප +අස් +අල්ලා +විශාලතම +රාශ +දර්ශන +##ෂධ +සිදුවූ +පැවැත්වුණු +පුත්ර +##ear +##වෙයි +ශාල +##පූ +##ිරු +ක්රියාකාරී +උපකරණ +##ition +රැගෙන +ධාර +##ීමත් +ගෞර +උදෙසා +වීමෙන් +උන් +පෙබර +සරල +එව +බන්ධ +##ත්වයෙන් +තෙල් +ජෝන් +වීර +වැඩසටහන් +##ෙය +at +##මක +##න්තුව +ගණිත +පූජ +අසා +පාඨ +දෙපාර් +එත +##ිකයන් +තරංග +පත්විය +විහාරය +අනුරාධපුර +දූ +ප් +##සියාවේ +ජූලි +##ඩය +##ුරා +සමු +පවස +සාගර +කොළ +තවමත් +ලැ +##රී +එල් +වෙරළ +##වීය +දිනා +##ෝදර +##වට +ඇද +මස් +බාහිර +##්යා +පිලි +මහත් +රඟ +මෙලෙස +දිශ +සිදුවිය +##ොල +ප්රාන්ත +තාරකා +මින් +අදහස +ධන +ප්රචල +##විධාන +දෙසැම්බර් +දීමට +විනි +කඳ +##බාහු +##ාවක +ch +නයි +හානි +ජනපදයේ +එංග +##ov +පිළිබදව +##ඥා +##ure +##ද්වී +සාම +සහභාගී +##ක්රමණ +us +කළමනා +සෙන් +ප්රතිසං +සාම්ප්රදායික +පරිවර්තනය +27 +ගිනි +පුරාණ +##භා +##තනයේ +##ංකාර +##ated +ලෝහ +අයුරින් +විරෝධ +ජර් +##ලන්තය +චු +##ියු +##end +##ික් +##ත්තර +ගත්තේය +ආවේ +සම්ප්රදාය +##යාට +##ංගල +##pt +ගල +ගංග +##සැ +ප්රජ +එයින් +##දුනා +රේඛ +සංගමය +##ම්ම +##්ව +ඉන්දු +විකාශය +ඇයගේ +පෙබරවාරි +##ලාශ්ර +##edia +##ුණා +ප්රබල +##ටික් +which +කරා +සම්පත් +අතිශ +ගණනාවක් +යහ +පෙන්නුම් +දර්ශනය +##ort +##වාසික +සතුව +නිව් +ඉරා +කොන් +පරිපාල +ප්රතික්ර +2006 +පැවතු +##ord +බොහො +නොමැ +සංස්කෘතිය +##ල්ලේ +රජතුමා +##දීමට +##ගෝ +##ින්ද +යාමට +2009 +අන්තර්ජ +විජය +නොවූ +සහෝදර +අපි +මයි +බලන්න +කැටය +ජර්ම +##ere +##පෙන +රාජවංශ +කිලෝ +නිදහස +##000 +ක්රමයෙන් +2010 +##යන්ගෙන් +##land +##ුණුව +අලු +##ිකව +##ජාතික +නිෂ්පාද +විචාර +රචනා +ඖෂධ +##ත්රා +අරා +##ෆර් +form +න්යෂ්ට +මධ්යස්ථානය +අරමුණු +##ලන් +ගැනි +එළ +##මති +මැන +සන්ධ +##තාවයක් +දක්වයි +##ttp +ආලෝක +කෞ +comp +බර් +කර් +ප්රචාර +යුදෙව් +කුර +සුවිශේෂ +##මීට +##විනි +ඔක්තෝ +##ub +යානා +හදුනා +##ධිර +විභ +තුනක් +http +it +##ාව්ය +##නිසා +org +දූප +##ොල් +##ඳුම් +කුමරු +උද්ය +##න්දු +ඕස්ට්ර +තරුණ +ග්රීක +විදේශ +##ියාන +##ලියම් +පැවස +##ාග් +2000 +ක්රමයක් +තනතුර +ඝාතනය +ප්රවේශ +හු +මහනුවර +##රුම් +අවස්ථාවල +##ගොඩ +un +දක්ෂ +##ther +යාන්ත්ර +කෙරුණු +ගණනක් +##ලිම්පික් +ලු +##ංස +ක්රිස්ත +සාකච්ඡ +අස්ථ +##යිඩ් +නොල +##තල +විශි +##ීමේදී +26 +##වාර +පිවි +සංකේත +##හිමි +ලැබු +##ory +පිරිමි +සියලුම +ඔලිම්පික් +මානසික +##ave +උතුර +බදු +යන් +විසි +වෙනස්කම් +ලැබුවේ +ත් +ප්රයෝජ +##යෝගී +their +අලෙ +උෂ්ණත්වය +##ගාම +වූවා +භූමිය +බුදුන් +කුමාර +පහසුව +චක්ර +යන්ත්ර +##ත්තු +ප්රතිශ +මතය +පෘතු +සංවිධාන +රඳ +වචනය +ජයග්රහ +සොහ +##රික +##ායා +##ීන්ගේ +සිරුර +##ාවා +රෝම +අවට +එවිට +##වුර +විහි +2005 +ලියා +කුමර +##ෙට් +##ේර +ප්රතික්ෂේප +##ary +සහාය +ඔවුන්ට +සංකල්ප +සජී +කිරීමයි +දේවාලය +28 +##පතිවර +##ket +##ීමයි +අගනුවර +##ිලි +##ධික +##දානය +##ඩෝ +##ඟා +##මැත්ත +මීටර +ලෝකය +ප්රතිසංස් +අහ +##ree +සමහරක් +රුධිර +පුද්ගලයන් +190 +මැතිවරණයෙහි +සොහොන් +කරති +වසරේදී +අපහසු +පියවර +ආවරණය +##නාත්මක +##ong +ගණන් +වන්ද +වගක +##වස +ආක්රමණය +ප්රචලිත +නු +##රූප +ගැහැ +අදාළ +##කී +##ක්ෂක +ත්රස්ත +සංයු +පැළ +දෙනෙකු +කේන්ද්ර +ජාන +වරක් +පිර +ලිපිය +අසල +තහවුරු +ඩොලර් +යළි +හුව +##ල්ඩ් +ගැල +1960 +සඟ +නිතර +සම්මානය +ඉත +ඉල්ලා +##20 +වරට +සිංහ +ඕස්ට්රේ +##රැ +##රිම +##ප්රා +බෝම්බ +ගාය +සිදුකරන +##රුව +සංකල්පය +##ලන්තයේ +පාද +මණ්ඩල +##බද්ධ +##ry +##rou +සංඝ +බෙහෙ +##so +##ක්ඛ +##යෙනි +189 +තිය +##පොර +##යිට් +එකඟ +දකුණ +ස්වය +සිනමා +##රේ +වෙළෙ +අනාගත +Ind +##ok +##ක්ය +රෝගය +සංස්ථ +##ජය +##ඩර් +අන්තර්ජාතික +හමු +සමීප +සලකා +සදා +##පර් +ad +එබැ +දෑ +##ීන්ට +අපරාධ +##ction +##ence +##rit +##ස්ගේ +##න්නන් +කොට්ඨාස +නොවැම්බර් +නොමැත +##නන්ද +ප්රජා +##දනා +##ඟින් +සංඛ්යාවක් +##ධර්ම +2015 +Th +##ණිජ +##cl +කලාපය +##irst +පරීක්ෂණ +##ations +සංකීර්ණ +##පාදනය +පහසුකම් +were +2012 +නාව +##ෝන් +ඒකක +අවුරුද් +##ගනු +##සල් +සහිතව +පෙනේ +le +##ff +මුහුද +ගබ +##ge +ප්රතිචාර +##ර්ඝ +රටේ +40 +මත් +##හට +##බ්බ +දෙදෙනා +අන්ද +බහුලව +##යන +සිල් +භූම +##ියානි +ලංකාවට +නිසාය +ඉගෙන +වහන්සේගේ +පළමුව +##ast +##ත්තිය +විකිර +සොහො +##aw +##ල්ලක් +පසුකාලීන +විශේෂිත +Un +ගස් +හෙයින් +දෙනා +හිට +##වූයේ +ඔවුහු +##ෙමින් +##ච්චි +හුවමාර +එම් +##ෙන්නට +සංර +##ank +ක්රියාකාරකම් +නවී +හිත +##කයෙකු +දුර්වල +එබැවින් +විලා +භාවිතයෙන් +හැඳින්වෙන +##du +ගියේය +##ide +##ථමික +උත්ස +කොට්ඨාශය +වෘත්ත +##ාවර +මීටර් +##ipedia +සබඳ +ස්වයං +##iz +කැප +අණු +වචන +සම්භ +විධි +##ස්ක +සැත +නියෝජනය +##oun +ලේඛන +කතෝල +29 +sh +නේ +ඇත් +##මුන් +ඉන්දීය +මූලද්රව්ය +ක්රිපූ +මොහු +තහනම් +ජෛව +පටි +බස් +##තියි +ප්රාථමික +##ටික +##ඟු +##කාරක +##ational +විද් +වියද +##ාපිත +පෝෂ +දෙවි +##ame +##පුම් +##tern +##ාන්ත +##පස +තිබිය +සුළ +ලාංකික +විප් +##ූයේ +ලකුණු +අවකාශ +##ans +ඉංජිනේරු +ප්රවේ +තත්ත්ව +දො +වාසය +##ලූ +කෞතු +##ක්කය +කියන +##වර්ධන +හෙළ +ආරක්ෂාව +ගෙන් +2014 +ඔහුව +හරි +##භය +පුහුණු +මනු +##වද +සමය +2011 +පොළො +කැටයම් +##වක +##වයක් +##ස්තා +සැලකි +දෙයි +පූජා +ඉතාමත් +තාක්ෂණික +පින් +##50 +2004 +හැඳින්වෙන්නේ +උත්සව +ජර්මන් +විකි +සාපේක්ෂව +##ාවූ +සංයෝග +##ෂය +මෙමගින් +ටෙ +උරුම +##ප්පු +හඳුන්වනු +##වරුන්ගේ +බුද්ධි +විශ්වවිද්යාල +##ශි +කරන්නට +##ට්ටු +බලාපොර +ඔෆ් +සෙස +පක්ෂය +උපන් +සංගීතය +ස්වභාවික +සිටියේය +ප්රදර්ශනය +අයිතිවාසික +අමාත්ය +කාර්මික +##නියි +විශේෂයෙන්ම +##ish +වර්ගීකරණය +මෙරට +පවත්වාගෙන +හයිඩ්ර +##ේදය +නිවාස +නොද +##වලදී +වාර්තාව +he +##ණයන් +##ome +ඉන්පසු +sc +##ාකාර +වීමත් +තැනැ +res +කාව්ය +ජපන් +සමාගම් +##නයේදී +පරම්ප +##නුකූල +##ර්යෝ +මට්ටමේ +බොහොමයක් +ධර්මය +සන් +හවු +##ප්තිය +බැවිනි +යෙදු +හඳුන්වන +all +Eng +පවුලේ +තිබිණි +පාෂා +අධ්යයන +first +##ිරිය +කිරීමේදී +##ශීලී +කතෝලික +කුසල +දියණිය +අතීතයේ +හද +##ous +##රාව +අපට +රාම +##ාහ +##ass +වාර්ෂික +නිරීක්ෂණය +ගම +ගුර +##කැ +ගෝත්ර +ඉදිරියට +##දායක +##බන්ධ +##ියෝ +පරිමා +කෘති +කලේය +ser +මෙයින් +ක්රිස්තු +යුරෝපයේ +have +ටයි +ඉදිකිර +සිතිය +හිස +ගොවි +මූලාශ්ර +උණු +සති +##ින +බහුතර +ඉතිහාසයේ +වන්න +##cc +දැක්වීම +දුරට +තොරව +මතුපිට +##ගල් +නියු +ජීවිතය +නියෝජිත +ළමා +දෙයක් +ඉඩම් +ප්රතිඵලයක් +##ාංග +විධ +##විණි +පරිභ +අනුපා +##ස්ටර් +පදය +1970 +ගිවිසුම +##ult +කාබන් +රැජින +##ධීන +අක්ෂර +බණ්ඩ +##ork +පිහිටුවා +ව්යුහ +ශතවර් +##orld +සමාජයේ +ඇමෙරිකානු +පොත් +188 +2013 +යනා +##ළුවන් +##ුවල +අවසර +බොහෝවිට +කෘතිය +තමන්ගේ +ආශ්රිත +##විර +##බව +##න්දා +දිවයි +අලංකාර +තැන්පත් +කක්ෂ +ගන්න +##වේදී +සමූහ +##දේශය +cont +##බාධ +හඳුන්වයි +##යක්ෂ +##ාරිත්ර +හොඳින් +කිරිමට +වෙස +##වුණු +##ඝ්ර +පුන +බිරි +##ක්තිය +පවුල +ස්වාධීන +##විලි +මැදි +වාණිජ +ස්වාභාව +තෙර +පාර්ශ +නොලැබ +##ෑම් +ස්පා +##වියට් +න්යාය +##ire +ශ්රි +කාන් +කෞතුකා +##ෙන්න +##යෙන්ම +බවය +දුටු +දෙපාර්ත +ජැක් +මූල්ය +##ie +Al +බුදුර +නිශ්චිත +කන් +පෙද +ස්වභාවය +##හ්ම +නොකර +තුලදී +1990 +සංවර්ධන +##දැක +අයිතිවාසිකම් +ප්රතිමා +##ice +##තුල +##සාද +පෙරම +ගණනය +ජෝර් +cl +වනවිට +පුරාතන +##පොළ +දේවාල +පලා +කාලයේදී +පොර +##ෙප් +##ොත්තු +පරාජය +ප්රකට +පවතියි +අවස්ථාවන් +ආකාරයේ +රාජධානියේ +දෙපාර්තමේ +තෙවන +ආර්ය +තරු +පදි +##ru +බණ්ඩාර +ඇප +ප්රෝට +කෙළ +As +ආචාර්ය +##වේදය +භාවිතයට +has +##මනින් +ලබාගැන +පුද්ගලයින් +ශබ්ද +අරු +නෑ +##කෙර +රෝමානු +වෙළෙඳ +දීර්ඝ +දුන්නේ +හමුවේ +කතාමාලාව +ක්රිස්තියානි +##act +ලෙසට +ක්රමවේද +##පළ +තායි +ඉලක්ක +##ෂ්ප +පාසල +##ack +can +ගවේ +වාර +චීනය +සෙසු +ගරු +අයිස් +##ටීර +##fer +දැක්වෙන +මට්ටම +තුව +ෆෙ +වේගය +ග්රාම +##ase +පුද +දැනුම +හිමිකම් +ජාතීන්ගේ +කැබ +දොර +##ටින් +දැක්වේ +මුලින්ම +ආක්රමණ +එළි +##erm +##ාගාර +සේනා +හෙළි +පදනම +රසායන +wiki +ප්රතිපත්ති +##ජනය +##ach +##ම්භක +ඔක්සි +60 +##රිස් +නොති +සෝවියට් +ප්රමාණවත් +දමා +##පෙ +පසුබි +හැඟ +පවුල් +ශක්තිමත් +ar +ඩේ +බසින් +##we +2001 +යන්නයි +හිටපු +##ජොං +අප්රිකානු +පල්ල +##ම්බා +##wo +ප්රදේශවල +wikipedia +##බෝ +##ගන +##pl +එකකි +යෝග +##මාර් +##ens +කැමැත්ත +හන් +##මයි +නැතහොත් +ස්ත්රී +සහය +සම්භාව +මුලික +එවකට +අළු +පෙනෙන +සැබෑ +කහ +කන්ද +මට +##වම +අරාබි +ධාව +##මාර්ග +##ind +##ක්කේ +අයිතිය +තල +යූ +මහාචාර්ය +අතරට +එතරම් +this +ගැටළු +##යත් +##ral +සිහ +රැසක් +##කිරීමට +සූත්ර +ගී +##ඬුව +##ෝජනය +##වකාශ +##ගිරි +##භි +also +##res +පද්ධතියක් +පුරාවිද්යා +sy +ගඟ +##සම් +##සියේ +ලෙසත් +##orm +දෙසට +ඉගැන් +පෑ +##ඩන් +##ඹුර +කලින් +ඇතුල +පැවැති +ස්ථානයක් +එකිනෙකට +ගන +මල +##රල් +ටැ +ලන්ඩ +පිටු +ඉලෙක්ට්රෝන +අශ් +ව්යවහාර +##NA +සමගම +උපරිම +##වීමෙන් +##ුනු +##පක්ෂ +අඩවිය +පළමුවන +විචල +ප්රකාර +කමි +##සිල +යුතුව +එක්ව +ක්ෂුද්ර +උපාංග +නාගරික +whe +##වමින් +##ගනී +##වාන +පෘෂ්ඨ +තේරුම් +අත්ය +31 +ලන්දේ +හඬ +වැල +ආරෝප +කටයු +නැවතත් +අනාවරණය +ab +##ටන්ගේ +his +රහිත +සුන් +##ාත් +පරිශී +##ely +සංග්ර +රයි +සිටින් +කුළ +පුද්ගලයා +1947 +විද්යාලයේ +##පිරි +##ලෝකය +කාර්යය +පළාත් +නාවික +An +තද +නාය +##ond +1989 +පාරිභ +##ියාගේ +මායි +දියත් +ආසියානු +මාලිග +අහිමි +පෝ +##තන් +##බෙ +##ace +##සිල් +වීඩියෝ +බොහෝමයක් +ඇයව +##දානම් +##යෙකි +##පියන් +නිශ් +##ල්ලට +ගොඩනැගිලි +එතුමා +##ාපති +පුස්ත +ශිව +නමැති +##ress +පැය +2016 +පරාස +ගබඩා +##ස්ය +වැඩසටහන +##වශ්ය +බලවත් +##ight +තුරු +මනා +හෘ +##කමක් +##ාවෝ +පැවැත්ම +##මෝ +##භූ +කිහිප +සත්ත්ව +ඉදිකර +හදුන්වා +භාජ +ස්නා +බැහැර +වීමයි +වර්ගයේ +##දෑ +දිවි +වර්ෂයේදී +ගති +##තෙක් +##ue +ඔවුනට +ඇල්බ +ජනාව +විකිරණ +විලාස +Re +අලි +##්රැ +නිරත +යුරෝපා +##ර්ස් +නොය +උපදෙස් +හිමියන් +ag +දිවිය +නවක +##ලේඛ +ත්රික +ඊළ +##න්ස් +විද +##රාල් +ජනර +නොහැක +වස්ත +##සෙ +සිසුන් +ජ්ය +##දවා +##one +ව්යවස්ථා +දරා +සාක්ෂ +වටහා +ඉව +දස +##ැස් +උපයෝගී +ගත්හ +වහන්සේලා +ලාභ +##ිණ +80 +කුමක් +##කයකු +අත්දැක +##රුවන් +##පථ +තුමා +දිව +පිලිබද +මරණයට +භු +##ණයෙන්ම +පනත +ලෙසිනි +දක්වනු +අතට +ගර් +##ජේ +ආයතනයේ +අධිකරණ +ජර්මනිය +වැරදි +උපකාර +ආයුධ +ආකාරයෙන් +ශාන්ත +පවසන්නේ +ත්ය +##විඩ +##පාද +අධ්යක්ෂණය +දෙකම +##oll +පැමිණෙන +පුත්රයා +පහසුවෙන් +සමූ +සැර +සම්බන්ධව +පිටත +කෙසේන +1980 +සයි +##තිමත් +නිල් +පොල් +චීනයේ +අන්තර්ජාල +ඔක්තෝබර් +කළා +පාදක +ගෝලීය +ගුරුවර +උස් +##මිත +නැව +යුරෝපීය +විශිෂ්ට +කාන්තා +පණ +තිස් +##ද්වීප +සැතපුම් +බිරිඳ +but +කව +##ගාරය +##සම +ප්රි +##ance +play +ඕස්ට්රේල +ඇඟ +බවක් +සිදුකළ +බහුල +සීමාව +සාකච්ඡා +කල්ප +බයි +##ගැබ +##ඩී +නැග +##ions +එකට +වගේ +ග්රහල +##ක්ම +##ign +ආකෘතිය +කතාව +දැව +බලපා +##පොල +ආලෝකය +කැල +මොන +ක්රීඩාව +ත්යාග +##බුද +දශකයේ +පීඩනය +මනුෂ්ය +##ලන +කිරීමක් +ව්යාපාරය +සටන +න්යෂ්ටික +හුද +##සියානු +##ward +##තුම් +මිත්ර +187 +මුදා +##ධාරණ +චෝදනා +පණි +ප්රිය +සිටී +උපදේශ +2003 +186 +ජනාධිපතිවර +පුස්තකාල +ph +##වැන්න +අර්ථය +ස්පාඤ්ඤ +මොහො +##කාව +##ජුව +##ඳුරු +##නයෙහි +##්යය +කෙසේනමුත් +##දෙ +##ශාල +##olog +one +සිද්ධාන්ත +විද්යාඥයින් +ස්වාභාවික +සංගම +##ක්රීය +දත් +##ෑමට +පත්වූ +##වාදීන් +ගීතය +සොහොයුර +other +වෙනි +##වීමක් +මුල්ම +ද්රව +ප්රශ්න +ඥා +හමුදාවේ +බෙහෙවින් +මංගල +වෝල් +##ද්දී +ස්ථාපිත +##ියානුවන් +මර් +##තාවයන් +මාසයේ +නර්තන +##මස් +##චිත +සම්බන්ධතා +දෙකකට +ගොඩන +දිගටම +දහම +සෙල් +##තෙ +##ile +##ඩාව +##ාර්මික +they +2002 +උඩරට +කාමර +ජැක්සන් +ඇඳ +කීර් +##ah +විෂ් +##hes +##ates +ලැබී +##සරික +තිබුණේ +ස්ථානයේ +##ෆි +##ෂ්ටා +වෙනස +##මන්ත්ර +පිහිටුවන +චලනය +dis +දෙනු +ජනගහනය +මගේ +හිරු +##දන් +##පිර +කිරණ +##ත්වයේ +##ලාභ +අනන්ය +ස්ථිර +පූර්ණ +##රෝ +ස්ත +පවත්වන +ආරම්භක +පාරිභෝගික +අශ +බ්ල +හය +සුල +දිස්ත්රික්කය +දායකත්වය +කර්මාන්තය +man +හදි +රාත්ර +බෝධි +ශු +උන්වහන්සේ +ජනාවාස +ආදර +##ිතම +පොලිස් +ශිලා +අභ්යවකාශ +##සයිඩ් +තර්ක +ඒකාබද්ධ +සොහොන්ගැබ +වත් +##ound +වර්ෂය +භාගයේ +සභා +කලාපයේ +ඇත්ත +පාප +සිව් +දුක් +තුවාල +500 +පවසා +##ics +##ියේදී +ඇරඹෙන +##හරු +##ුල් +##ood +##ූව +ප්රාය +බැට +තරමක් +ගිවිසු +මර +ලතින් +කියැ +යෙදෙන +කිලෝමීට +##ණී +##ft +කුස +ශ්රිත +නියෝග +ආසියාවේ +##ාවර් +වැලි +හිස් +##දුවේ +Com +two +මළ +කරගැනීමට +##සේන +මිතුර +##ගත්තේ +ප්රාග් +දිගින් +මාතෘ +දැක්වූ +ශාඛ +තීරණ +විශ්ලේෂණය +ශීත +##දාස +පාරිසරික +ගැහැණු +සහගත +##යුම +අඩුව +##ාවන්ට +team +ෆි +පැහැති +උළෙල +දෙවැනි +පවසන +බලප්ර +##out +##ඵලය +උළෙ +එලෙස +රහ +වදන +##ඥයින් +##හනය +##සීන් +##ේරා +##mer +උඩු +##කෙ +##ob +ප්රතිමාව +ප්රායෝගික +සවි +සහයෝග +තිබීම +බලකො +##හැකි +දෙනෙක් +නවීන +##හෝ +##ඩියා +##ංකු +පවති +පවත්ව +ධාතු +ජපානය +ඔක්සිජන් +නොකළ +යහපත් +ලූ +දළදා +සංචාරක +විද්වතුන් +ගං +##ධිය +වික්රම +කිරීමත් +සලකනු +සපයන +පරීක්ෂා +සන්නිවේදන +වෙඩි +නාළ +පරාක්රම +##පේ +දරන +##ula +##ෙස්ට් +ලියන +පරමාණුක +පත +සළ +##වෙන් +##lic +##වේදනය +මෑත +අපේ +අත්පත් +නොවීය +##ose +රාජවංශයේ +බලාපොරොත්තු +part +න් +සින් +##ould +ආණ්ඩුක්රම +im +ne +සිටම +බලන +බැක් +##amp +##ර්ගික +විජිත +##ක්ෂිත +##වරයෙකු +බිලියන +කණ්ඩායමක් +සම්ප්රදා +ඊශ්ර +බෑ +##ey +##නික් +වැසියන් +int +අංශු +දඩය +##ජෝ +විභාග +බිම +සංස්කරණය +සුවිශේෂී +කඩා +ගැන් +##පිළි +ඔස්ට්ර +##ricket +used +Ar +ඇස් +නඩු +නිසි +##ents +කාර්යාල +උද්යානය +ගව +ජීවන +තුන්වන +පවර +ප්ල +යකඩ +##ංගම +බැව් +ශතවර්ෂ +කෑ +ගලා +ඇතිව +පවතින් +එමඟින් +රාශියක් +නට +පුව +##ුල +තිදෙන +##පෙර +ඇතිවූ +##ලිනි +##ath +කාර්යයන් +පවත්නා +පෙදෙස +වල් +##ඛණ්ඩ +නිම් +සහතික +##සිදු +##ite +පුවත්පත +32 +##බ්ර +##ංග් +ඉතාල +ධූර +##ථා +##inal +ගැනීමෙන් +ජීවීන් +පරිපාලන +35 +had +මඩ +##fter +භාෂාවෙන් +ආසන් +භ්ර +රී +අනතුරු +කටු +##stem +පිටපත් +##able +සිල්වා +හුවමාරු +##න්හි +විලියම් +ප්රේක්ෂ +##are +වර්ගය +##ගැනීමේ +විශ්වාසය +ආසා +වක්ර +හර් +##ටල් +##ුවද +වශයෙනි +වාද +ලෙන් +වැසි +ස්ථර +අලුත් +ඇඳුම් +රත් +##ියෝග +##වැන්ත +සොයුර +year +දෛ +පොත +ගැටුම් +වෙළද +පුද්ගලික +මාලාව +නිපදවන +නායකත්වය +##ොසොන් +නර +ශී +සල් +##ටේ +##ුවක +##ාර්ශ +අර්බුද +රාජවංශය +මයික්ර +ජයග්රහණය +දඬුව +වයි +##තන්ත්ර +##ලම +##ෑං +සංශ +##ියාවට +##ings +ප්රතික්රියා +අවය +නැව් +පරිණ +ජනවා +වශයෙන්ම +මාසයේදී +ආශ්රිතව +කවිය +##තයක් +බලපෑමක් +##යක්ෂම +ගනියි +වෙනම +අපේක්ෂා +##නුපා +හිදී +##ඩ්ස් +ගනි +පුවත්පත් +අලෙවි +චික +ශෛ +දේවිය +##ජාණන් +සෘජු +මාව +රණ +##වණ +මාර්ගයේ +ශ්රේෂ්ඨ +ව්යවස්ථාව +Ph +its +චාරිත්ර +දහස් +##ුයේ +##ජින් +සම්ප්රේෂ +වත්ම +##ram +##19 +විවිධාකාර +##වෙල +පං +ලක්ෂණය +##oy +වන්දනා +ඩබ් +ලෙන +##ිතාව +මිහි +අධිකාර +##බර්ග් +භාජනය +Test +ඇට +ඉස +##තිම +සංස +කැමර +Sh +##ක්කු +ප්රච +කරගත +තිබුණු +pre +චා +##ener +ලබාදෙන +පිළිම +##බිසව +##ධාතු +De +##යාන +අපනය +පෙරමුණ +කඩු +මං +##තත් +ප්රස +අධිරාජ්යය +වස්තූන් +අතුරු +බිය +##සිරි +##බඩ +වඩාත්ම +අධ්යක්ෂක +ප්රමාණයෙන් +සිටියහ +ජූල +හෙන් +ප්රවර් +දැවැන්ත +use +##පන්න +සිදුවීම් +වෛරස +අතු +##ුවෙනි +##ිරා +##දිව +රචිත +ප්රභේද +සියළුම +series +ඉර +##තූන් +කිරු +ස්ථාපනය +මණ්ඩලයේ +ප්ලා +චුම්භක +අවුරුද්දක් +දෝෂ +හානිය +සාධාරණ +පරිසරය +සාහිත්යය +World +උද් +ජෙ +##ාවකාශ +මෙවල +##සුස් +වසරෙහිදී +යාපනය +##rad +##ම්බර +පුරාව +##පුරා +සාමාජිකයන් +සර්ව +ඉක්ම +ප්රේම +ආවේණික +බුදුරජාණන් +යුගල +මහාව +90 +ආභ +ආපසු +නඩ +##up +##තුමන් +මැටි +##ධානි +යුව +##හාණ්ඩ +##enc +හැඳින්විය +ජූනි +ගැබ +පෙරදිග +කථාව +න්යා +භික්ෂූන් +ජෝර්ජ් +per +##ොප් +##vel +කැඳ +##ivers +රෙදි +Pro +ආබාධ +ලෙසයි +බවද +##ල්ලු +සුන +පත්කර +ඊශ්රාය +සිත් +##ම්භය +නිර්දේශ +ජනවාර්ගික +පැවර +##ාගත +කි්ර +උත්තර +සම්පූර්ණයෙන්ම +හොර +##ීක +##කයෙක් +අත්සන් +අම්ලය +02 +##රාජ +##වනය +##භාර +##නාථ +නොකරන +වෙහ +ස්ථාවර +කාබනික +ඇලෙක් +##ප්රාප් +ඉන්ධ +තෘ +##ශය +හැක්කේ +දුම් +වාදය +රංගන +දූපත් +තාව +පැල +ලැබිණි +අතිශයින් +He +Mar +ඇන්ඩ +සික +ෆ්ල +##දාම +උපකල්ප +වීම් +වැඩිහි +ඇතුල් +##කෘති +##ime +ලබාගත +වින්ඩ +ප්රජාතන්ත්ර +2017 +ඈත +ටෙස්ට් +මව් +##ee +සම්මා +බලපාන +##ෂ්ටාචාර +පථ +පන්ද +##ගන්න +##ium +##තුංග +වෙනසක් +##ණුම් +දේශපාලනික +අම්ල +රුසියානු +අමර +කූ +මුදු +යේ +හැදෑ +##ism +දුරකථ +ඇමරිකා +නළ +##නල් +##ගර් +කොමි +තිබුණ +කාච +පුරවැ +අවශ්යතා +සියවස් +been +##ොක්ස් +අභ්යාවකාශ +දිනයකින් +පෘථිවි +සබඳතා +උණුසුම් +03 +do +පොදුවේ +sp +දමන +##කුගේ +දුරටත් +who +එකිනෙක +ඊජිප්තුවේ +වේගයෙන් +ගංගා +Aust +more +##මුව +##ක්වා +විනෝ +##ාමී +ශිෂ්ටාචාර +ඉස්ලාම් +නොයෙකුත් +නැං +මුඛ +##ors +##පත්ය +පහල +##කරණයේ +කැරැ +තත්වයන් +බන්ධන +ස්නායු +ජූලියානු +70 +දාර්ශ +වක +##හනක් +##ix +##ුවෝ +##නිජ +අදහ +##නියම් +sex +නිලධාරීන් +වැළැක් +සජීවී +##වන්න +##ියම් +කරනුයේ +ක්රියාකාරි +ප්රයෝජන +##les +කරගන්නා +හැම +සමගින් +නියැ +තෙත් +stud +ටෙලි +කපා +##හො +##ron +නිරන්තර +පාලක +ඇමරිකාවේ +නමුදු +ඔබට +##ount +මෝට +පෙරේරා +1999 +සන්නිවේදනය +එච් +##නිර්මා +සාදා +පවසයි +##ට්ටේ +විප්ලව +බෝග +##සෙන් +##න්ති +##දීම් +##කරණයක් +විසූ +##ough +කාර්යක්ෂම +##over +##කුල +සම්පු +##වර්තන +භාෂාවේ +නියමිත +ගිවිසුම් +අක්නා +වින්ඩෝස් +ඇවි +කවර +##නියා +##බල් +##ේස් +##ියකි +විකල්ප +මැර +කැපී +පැවතිය +අගයක් +අවස්ථාවක් +නොතිබ +මඳ +ප්රවෘ +කරුවන් +සංඥා +රාජ්යයන් +##ධිපති +නිර්ණය +me +නෞ +##මිල් +අභියෝග +පිටුව +භාවය +එක්ස් +##කයෝ +181 +දරුවා +ජේම්ස් +කෘෂිකාර්මික +දුෂ් +##දායී +ගොඩනැග +වෙළඳාම +cons +such +ප්රතිසංස්කරණ +යම +රත්න +##සඳ +##බුන් +අතරම +දිව්ය +වරද +1978 +##ස්ථානයේ +සම්ප්රදායික +හැකියාවක් +##පාන +දාර්ශනික +මවු +1977 +1956 +පොළොන්න +විලාසිතා +ගියේ +ජර්මා +##සක +සුපිරි +රාජ්යයේ +භූගෝල +දරුණු +##ode +වෘත්තීය +එන්න +ඩය +##සේකර +නැගී +##lect +ආහාරයට +බීජ +##ජර් +##ටී +බිසව +##පිටිය +වගාව +##ෆ්ට් +වයඹ +ඇසුර +ගම්ප +මායා +##ටද +##මාල +ගැනේ +මුද්රණ +ව්යුහය +ඉස්ලාම +##න්දි +##ක්රා +##මණා +පිරිසිදු +සැලකෙන +ආත්ම +ගත්ත +වස්තු +සම්මු +rec +ගුණාංග +නිර්ව +##සිස් +අයුරු +කැම +අනුග්ර +ජුනි +කෞතුකාගාර +ණය +නෛ +ශෛල +##නියේ +ක්රියාවල +33 +ලැබුණු +වාසි +බ්රා +ආර්ථිකය +formula +01 +##නර් +##බී +පැට +ඇමරිකාව +කතාමාල +ඉන්ධන +Austral +නැරඹ +නියමය +ආදායම් +චින් +ජොසොන් +##ළිය +##tain +##වුනු +භූමික +වායුගෝල +මාරු +මායිම් +##බෙල් +පැත්ත +ඉතාම +කණ්ඩායමේ +##මීන් +විල් +හොද +##oth +පරිගණකය +කොරියාව +bl +##ගනි +සංක්රමණය +දේහ +##ෝර්ක් +දුෂ්කර +36 +45 +විමු +වැය +##int +ආරම්භය +පුද්ගලයෙකු +අනිවා +කළමනාකරණය +##clud +බැක්ටීර +app +##යිඩ +##ෂ්ටි +රාජපක්ෂ +රාජධානි +##own +හදුන්වයි +තිරගත +අවස්ථාවලදී +ඔර +##ුනි +##ලෙ +යොද +අතරතුරදී +මෙන +මුර +##ැක +##පයා +##හිදී +උපකාරී +කැමති +නාලන්දා +සහභාගි +පාෂාණ +සුනඛ +##ස්ර +##සැන් +##hed +තුළට +චිත්රපටයක් +##යෙහිදී +දශක +ප්රජාව +වගකීම +හයිඩ්රජන් +England +ආශ +ආදේශ +##ඞ් +##ේදී +##පන +පරිච්ඡ +සමානුපා +##ict +යෙදීම +සංස්කෘත +ලබාගත් +නයිට්ර +උච්ච +ළමය +පැවතිණි +අධිකරණය +ඒකකය +It +ආදර්ශ +සියා +##සුර +##form +##සුනක් +පාත්ර +##වතී +සිටියි +ආකෘති +III +ආනය +එළඹ +නෙර +##ාවේදී +ක්ෂේත්රය +##oci +අද් +ජො +ළමුන් +##රෝධ +##විම +හමුවන +##දැයි +තිබී +පහත් +තානා +සභාපති +අන්තර +බුරු +##සියා +සම්පාදනය +නවසී +##ධිපත්ය +පර්වත +තරගාවලිය +මුද්රණය +Se +භට +##ගමුව +නගරයට +මගිනි +ගෞරව +අබ +චෛ +##ail +හේතුවක් +නිළධාර +ආද +වස් +##ින්න +ස්මාර +##ලිංගික +##ater +ඊජිප්තු +##ඥයන් +##සියාව +##ේය +පැරණ +පුත් +Sc +දරුව +ලියැ +ව්යාපෘතිය +අශ්ව +පරිශීලක +ලත් +##ject +##මාන් +රජුට +සීඝ්ර +දම +කෙරෙයි +##වාදයට +##දූ +ප්රබන්ධ +කරවන +සිසුව +වෙස් +සොයාගෙන +උදව් +04 +ජංගම +මෝස් +වම් +##රින් +##esh +ලබාදීම +සිදුවීම +දරයි +##ock +දෘශ්ය +වියදම් +සමානුපාතික +තනා +සාර +##ne +##්යු +ලෙසය +##ල්ලන් +ලිප +1998 +ජනතාවගේ +out +ආත +##ිකාවක් +##ප්පා +අමෙර +කිසිව +කීපයක් +විධායක +##ප්රාප්තික +Cl +##ුදා +ප්රදේශයක් +යොදාගෙන +සංවිධානයේ +මන්දිර +අත්දැකීම් +spe +කවි +##පෝ +ගැස +පීඨ +ගැටලු +##ific +##anka +again +des +යන්නට +##ුනේ +ශිල්පය +only +අගම +ජලා +අපගේ +ගැනු +පෙළඹ +තමාගේ +ගොඩනැගිල්ල +කර්ම +අදිය +වේගවත් +##ුවි +ප්රො +සමර +##ට්ටි +බිත්ති +ඇමරික +bec +සිටින්නේ +tour +ආකර් +ග් +##ලීම +##ියාට +පුරාවට +රාජ්යයක් +ඒවාට +අභය +##කයන්ගේ +හැරුණු +ඇතුළුව +ඊජිප්තුව +කම්ප +තත්වයක් +##තෝ +##වකි +##CC +ඉහළින් +ගැටල +නාලිකාව +This +සංගමයේ +2ක් +උර +එමනිසා +මැක් +පිරිස් +##කොට් +කිසිම +ජීවත්ව +පරමාණ +අතිශය +ෆෙඩ +යෝ +##නත් +කුමන +ප්රතිඵලය +184 +පැවැත් +##ake +ප්රමාණයේ +නර්තනය +ආචාර +ජෙන +##න්තුවේ +වෙනවා +ප්රතිරෝධ +අග්ර +ක්ෂණික +රෝහල +පද්ධතියේ +කොරියාවේ +comm +පෘතුග +##තැන් +සාද +බලයක් +පැහැදිළි +උපාධි +පුහුණුව +මෝස්තර +කතුව +##බට් +##්රි +##කුට +වර්ණය +නැටුම් +අග් +යුගයේදී +පවතින්නේ +ප්රචණ්ඩ +හෙන්රි +හැදෑර +00 +ind +##පෑ +##ක්ෂික +ඇතිකර +සිටීම +##රියා +##කාරි +බැංක +##ited +තරගය +includ +1950 +deg +පන්දු +පිහිටයි +ඊළඟ +තිස්සේ +පොලි +අනුමත +පිරිවැ +නෙෆර් +##ternational +cap +##දර් +##ලයක් +##තිස්ස +කරනවා +මැලේ +චිත්ත +පර්යේෂ +Con +ඇඩ +දන් +හරිත +ගණිතමය +##ත්වික +රැඳ +##ඤ්ඤා +ජර්මානු +මුණ +ගොව +පාහේ +රැකියාව +සුළං +ධ්රැ +වතුර +##කන් +##මිතික +තමන්ට +සූදානම් +යුරෝපය +සංයුක්ත +කෙළවර +අම්බ +ටු +වොන් +පැවසේ +රටාව +##ාන්තික +මොළ +දෙවියන්ගේ +ආදායම +අයට +පාන +බස +වසා +##නද +##ියෙකු +විග්රහ +පැසි +වියළි +තුත්ම +කිව +##iss +##වෙතත් +පාරාවෝ +බැඳිය +උළෙලේ +උරු +දන්ත +ගණනාව +රැකියා +පදිංචි +most +##ටක +සිහසු +නැඟ +සුභ +##ූරිය +පරිභෝජනය +බලකොටුව +ග්ල +තත්වයට +##මල් +##මණය +නොස +##කාමී +මතක +වීමක් +ග්රැ +එකිනෙකා +රඳා +යතුරු +ස්වර් +බැංකු +##ස්තමේ +ප්රකාශන +ආරම්භයේ +රෝස +ජපානයේ +අස්ථි +දෙපාර්තමේන්තුව +ගමන +ස්ථානයට +ආසියාව +යන්නෙන් +##raph +පංච +බෙර +##BC +විල +හැට +කුර් +කලාවේ +කිතු +පිළිගත් +up +ටික +යමින් +##ෂන් +##තිකා +##ann +ලැබිය +ගැනීම් +පසුගිය +##ගුණය +අධිරාජයා +ජීවිතයේ +විකාශනය +ස්පර්ශ +පරාක්රමබාහු +300 +කණ +තක් +වහා +##මුණු +##කිරි +අනුරූප +විවාහය +තමාට +සදාචාර +ac +kn +කුණා +භාර්ය +යන්නේ +##තයේ +##ලයි +##air +ඇතිවිය +යුත්තේ +පාලකයා +ඉහළම +##ular +පදාර්ථ +ව්යාපාරික +කුමරිය +එදි +සංසිද්ධ +ලැබුණි +සමාන්තර +ශිල්පීන් +ග්රන්ථය +දැන්වීම් +match +විරෝධී +අනුපාතය +system +##io +##ඩේ +##ස්ටන් +##ative +යනුවෙනි +කිම් +ජාතිය +විධිමත් +වත්මන් +මොර +##යන්හී +මාළි +කියනු +නිදසුනක් +මියගිය +හදිසි +අඹ +ඉම +බෙන් +##නාගාර +නොයෙක් +##ණ්ඩා +ජාතිකයන් +1996 +දෙසින් +අරමුද +Sri +ලයි +##මො +##බද +##ශක +අධ්යනය +අඛණ්ඩ +උණ +##යාම +දේපළ +යුගයට +සරස +හැඩය +හතරක් +දැමීම +ඉක්මනින් +සැපයීම +##ෝධනය +##ook +සාධ +පුරාම +වරාය +##ගුර්යෝ +නායකයා +රිය +##ැස්ම +##ටර +##මාන්ය +මෙතෙක් +##ව්ව +##දියුණු +නිකාය +අවධියේ +කිරුළ +නැහැ +ක්ලෝ +පාර්ලිමේන්තුව +විකිණ +ජනරජ +සිහසුනට +bet +may +over +එඩ් +ශාර +##ll +නිවර්තන +හමුදාවට +පරම්පර +දිවයින +##ology +ප්රවෘත්ති +පකි +##නන් +##aus +##10 +##ced +වැව +ලෙසින්ද +සීනි +##roup +සොර +##ායී +වැඩම +අසාර්ථක +##ඩියම් +හිමිකර +ආරා +දක්ෂි +##ස්සා +##කරුවා +අනිවාර්ය +so +ඛාන් +##නීය +##ae +##ර්ප +ප්රංශය +දේශනා +##බිම් +##ධාරණය +1994 +පදවිය +වර්තමානය +ජේසුස් +නොමැතිව +කුසලා +DNA +Sp +##නස් +##ool +##ස්ථාපනය +##ාන්ස් +දුරින් +පක්ෂයේ +සටහන +සලකන +##ඳින +අඟල් +යෙදුම +කටයුතුව +ඇල්ල +ගන්නේ +ඩෙ +##සීමට +##80 +##මාණ +වැව් +මිස +කෙසේවෙතත් +ද්විත්ව +පසුකාලීනව +තුත්මෝස් +75 +එදා +##රත්න +##te +##තරා +වර්ථ +දියුණ +ශාකය +ඇතැම්විට +පස්වන +ආසන්නයේ +400 +මොන් +සන්ද +සරණ +කරගැනීම +ගොනු +ගොගුර්යෝ +සම්බන්ද +##eld +පැහැර +විමර්ශ +කිහිපයකට +ළඟා +##ys +නිව්ය +ජනරාල් +අගබිසව +පෙම් +##rib +දේශපාලනය +සැකසුම් +ප්රහාරය +මිලදී +එංගලන්තයේ +ඇලෙක්සැන් +තාවකාල +rel +එලි +##යිස් +##ුන්ට +1995 +බලපත්ර +ආරක්ෂිත +ආගම් +ග්ය +නෝ +##ගිරිය +දැනු +##පාදන +ක්ව +රුසියාව +අත්යවශ්ය +ආනන්ද +ධුර +සාය +නියත +ටීවී +වකවාන +උනන්ද +බඳුන් +##දීමේ +##ණියන් +##ර්ගේ +##ාවරණය +රාජා +ගැඹුරු +අනුකූල +අනුප්රාප්තික +මධ්යතන +ව්යාපෘති +උත්සවය +පාර්ශව +ඉස්ලාමීය +පශ්ච +රුව +##සනය +##pos +##තාවන් +180 +1991 +1997 +ස්වදේශ +##කයන්ට +##යිකල් +අංගයක් +සපයයි +ග්රහලෝක +34 +##පත්ව +##ශා +විවර +##ංගුවට +අරඹ +ක්ෂේත්රයේ +ජනතාවට +sub +බලප්රදේශය +අමු +##ොෆ්ට් +##ල්ය +##cess +මෙවන් +##යක්ද +##ුන්ය +අවශ +මතභ +අග්රා +යුද්ධයේ +අවස්ථාවක +මට්ටම් +නාට්යය +තර්ජ +හැදින්වේ +විශ්වවිද්යාලය +රඳවා +සම්භාව්ය +Le +සපයා +සමුද්ර +පරිපථ +යොදාගන්නා +##බිම +New +ඔප්පු +කෝප +බඳ +##සූ +අඩවි +වාෂ්ප +වෘත්තිය +හඳුනාගත +සංචාරය +ශාලාව +යාන්ත්රික +ගායනා +නෛතික +ආලේ +තුර +සය +සුද +##සෙන +කළමණා +##න්තය +මහින්ද +ජලයේ +මැදිහත් +දඩයම් +after +now +und +සනාථ +නිර්ම +##වුඩ් +නිවස +ඉදිකිරීම් +##ටුවේ +##ven +මුත් +පහක් +පාලි +##ොක්සයිඩ් +විනිශ්ච +පරිණාම +කැමරා +පැරණිතම +##වති +සිංග +පරපුර +දේශගුණ +අප්රිකාව +තිබුනේ +දැරූ +##ද්වීපය +කමිටුව +##ten +ප්රදානය +##ලික් +බැගින් +යුතුයි +183 +ක්රමවේදය +than +පදනම්ව +ඉරි +##ාගේ +##හිය +##ර්යා +2018 +විද්යාඥයන් +##ගාමී +හවුල් +time +ව් +##ව්ර +සුප්ර +බරපත +වටිනාකම +05 +##rans +##පදි +##වේය +##ත්මික +##කරණයට +1993 +කාර්යාලය +ජයවර්ධන +සභාවේ +ඉලෙක්ට්රො +දකි +වඩ +විනය +def +ජුලි +කරුණක් +ග්රාමීය +චෛත්ය +num +##හම +දෙමා +ප්රතිම +##තාවට +සිදුකල +සමාගමේ +##angu +දොළ +ත්රිකෝ +ගහ +බළ +වාරි +මාතර +පෙදෙස් +දැක්වීමට +ඉදිරියේ +##ණාමය +චෙ +##තිත +##ණයකි +##රික් +##ාගම +දුඹුරු +160 +කාන්තාව +ශ්රේණි +මනෝවිද්ය +විවේච +run +මූර් +වච +##ෂින් +කුමන්ත්ර +උපක්රම +කැට +මූලධර්ම +අප්රිකාවේ +විජේ +ප්රවාහනය +ඩේවි +ශෛලිය +Af +එද +නසා +නිකා +රහස් +##යාව +##ලනය +##වේග +වැඩිදියුණු +ලෝකඩ +150 +එල්ලේ +හඳුනාගෙන +දන්නා +##ැකි +##tic +##ක්ෂා +නොප +##වරයකු +පරිදී +ගෙනය +පටක +වේදිකා +එංගලන්ත +යත් +ර් +##මනය +##යිල් +වැටු +බලයට +කෙරුණේ +පාලනයට +##old +තෝමස් +දුන්නේය +පිපිර +පිළිය +##ත්තන් +දැනුම් +##ෂ්ම +දෙකෙහි +මධ්යයේ +චරිතයක් +ගුණාත්මක +වූවාය +බස්නා +against +රද +##ානු +##ල්ලි +##මාත්ය +සමස්ථ +අනුමාන +##හරණය +##ade +කාරක +වස්තුවක් +අන්දමට +මෝටර් +පශ්චාත් +සාර් +##ිනිය +##පිත +##xt +##ිකර +179 +දැමීමට +මයිකල් +##ඩො +නිවේදනය +කොටි +නොවී +පැවසුව +පිටත් +පලමු +අකුරු +අශෝක +දුරකථන +යලි +##ඥාව +##කගේ +##ේදනය +ගොවිත +පළල +##වාදයේ +අංශය +අණුක +අරුත +විචල්ය +රාව +පැවි +බලතල +උපාය +##වීමයි +බෙල් +අවසානය +විරුද්ධව +නාළිකාව +IS +##දැක් +##oh +##නාම +##වරක් +දීය +185 +කිසිවක් +අතිරේ +ගවේෂණය +fl +##නාවක් +##ෙත් +සිතා +කොන්දේ +##ලියන් +වාක්ය +විහාරයේ +නීතියේ +රූගත +ප්රවාහන +##red +##nam +බිත්තර +භාගය +උපාධිය +කම්කරු +අසාමාන්ය +පටිගත +ලන්දේසි +##ිම +##ේඛ +##වාන් +රාජසිංහ +අරගල +සිදුකරයි +37 +ආවර් +##හොට +##නුයේ +අවදාන +නොහොත් +කායික +අධ්යක්ෂ +පාට +##ජනක +බස්නාහිර +දරණ +බල් +##කට් +##ious +##පටි +##ංසා +##ින්ගේ +උපු +දෙකක +##කරුවන්ගේ +ඩිජි +එන්ජි +##හොටෙප් +පොහ +##ිත් +නිමැ +##ියාය +නොවු +දෙව් +ප්රතිවිර +සමාජීය +පත්වන +පාර්ශ් +ක්රියාවන් +reg +##ගැනි +අධිරාජ්යයේ +එතැන් +සුන්දර +dif +ටො +වෙල +අනූව +ලැබීම +කොටසේ +##ark +##වීමත් +තුලට +පෙරහැර +වාහන +දියුණුව +දෙකකින් +බාධා +සන්නායක +බැඳී +සැපයුම් +##තෙම +ප්ලාස් +උම +දෝ +ශූර +##කාය +##දුනු +##කටම +අපද්රව්ය +තමයි +පාසලේ +රංගනය +සෙනෙ +##සො +##ඟන +සමතුල +ස්කොට් +##ලිව් +දිනයේ +ගැටු +නීතිමය +තබන +ලන්ඩන් +##ollow +බවත්ය +ක්ල +යෙදුම් +##ස්ථානයක් +බුදුද +වැඩිමහල් +බේරා +පෘථිවියේ +නිතරම +දක්ෂිණ +##ied +##sh +රජයට +මෙහිදි +පිළිගැනීම +##ගැනීම් +ඇමෙරික +සන්ධානය +සැලකිල්ලට +Australia +pos +අඳුරු +ආච +බෙක් +##පතා +විසින්ම +නැමති +##කාරය +මැඩ +ක්ෂීර +පෙන්වයි +කිරිමේ +ඇපල් +අවශෝෂ +පේශ +යෑම +විදේශීය +නිගමනය +පුළුවන් +පියාගේ +චලන +ප්රතිසංස්කරණය +බණ්ඩාරනායක +ගස +ලුණු +##රූ +සමලිංගික +පිළිකා +බලයෙන් +මහතාගේ +සෘජුව +Te +ඔය +කන +පෝල +##යර් +කරණ +##ෙනවා +##anc +එක්තරා +විශේෂඥ +රේඛා +ෆෙඩරල් +පානය +##විල +##දිවි +##ating +කාලයක +ප්රදේශයට +පිරිනැ +අත්හ +බහුතරයක් +සංග්රහ +ගර්භ +අදියර +qu +##නියානු +##ාරී +සිසිල් +මිළ +උපකරණය +යොමුව +නිරිත +##දනාව +ලිඛ +ක්රමයට +රෝගී +ලක්ව +ආසන +තැනක් +රිච +3ක් +Ad +work +ආධිපත්ය +නං +රෑ +##මර් +##ve +##ාරු +##දිම +##att +##ක්රමය +බ්රහස් +ප්රකාශනය +අතහැර +ද්රාව +යුද්ධයෙන් +##ජනීය +තෙලි +හදුන්වන +ඉස්ම +ආදායමක් +විෂ්ණු +බින් +වික් +##ෝජන +##ට්ටුව +හොදින් +ඩිජිටල් +සෛ +##රුන් +##ළා +##ෙනු +පරිණාමය +##ally +පරතර +දේපල +සිදුවන්නේ +අත්හැර +ආණ්ඩුකාර +දව +බාර් +##ටීය +##යිනි +##ත්තුව +##ities +ස්ථානයක +ඇමති +මට්ටමක +වෘක්ෂ +සතුට +ස්කන්ධය +කොට්ඨාසයකි +ජින් +දාව +##නගර +##බො +##පමණ +නොබෙල් +කැල් +පරාවර් +පාප් +##outh +පිළිවෙලින් +යෝග්ය +Lanka +her +ඉවත +චතුර +යාන +වහල් +සබැ +හත +##ලස් +##ug +##DI +##මානයේ +##සිටි +සියදිවි +කලහ +ප්රධානතම +##යින්ගේ +##දේව +1992 +ආසියා +1965 +දේවතාව +එරට +##istan +අග්රාමාත්ය +ගුව +සත +##ින්ම +##ara +##ලියාවේ +##වුල් +##සියස් +කෝට්ටේ +##න්ත්රික +කඩදා +මෑතක +දිශාව +යනාදිය +Iවන +කයි +දරු +##ever +##යාස +there +කාලි +ව්යුත් +නිසාම +සමගාමී +අංශක +පිහිටීම +අඟහරු +ඉන්දුනී +වෙසෙන +##ween +දර්ප +පාවි +සිල්ල +සිටීමට +මිනුම් +කැණ +උෂ්ණත්ව +64 +ධජය +බඩ +##ෝය +නොපැ +##ංකය +##ළුම් +සිටිති +සීගිරි +වයස් +විදුහල +රිදී +සුවඳ +සත්යය +ඝනත්වය +ධාවනය +තක්සේ +උල් +එවන් +බහ +##ණ්ඩු +කැලි +මධ්යස්ථාන +##කරුවකු +ස්වරූපය +සහයෝගය +cent +වතු +ඇතිවේ +බැර +තත්පර +සීමිත +තිස්ස +##ගැනු +අන්තර්ජාලය +මෙවලම් +යක්ෂ +රක්ෂණ +සතුර +##ep +##ක්ද +විස් +නිවා +##කුළු +ගැනීමයි +අමෙන් +##වරුන්ට +##කරුවෙකු +##ලන්ඩ් +පෝෂණය +43 +ආක +##චික +##ල්ම් +කරවා +අවල +##ons +##ණික් +##නියාවේ +සමඟම +වැදගත්කම +rep +ගුණය +සලකුණු +ස්තූප +sexual +ටොල +වහල +##wn +##ාවලි +ජනතා +තුළදී +පාකි +ක්රමයේ +කියන්නේ +පෙන්වන +යාත්රා +පරීක්ෂණය +##ාවලියේ +කාලීනව +සම්භවය +ප්රයෝජනවත් +ඇන්ට +ඩයි +##දක්ෂ +##හාව +##ුන +##පසුව +##ඛ් +විසිර +##hen +භාවනා +1987 +ද්වී +සේවාව +භාගයේදී +හදුන්වනු +##විකරණ +when +සලා +##ධු +තිබිණ +පරම +නිරාවරණය +බ්රහ්ම +ප්රංශයේ +පැවතීම +##ublic +ලියාපදි +සංරක්ෂණය +some +##පෝෂ +##කිනි +##itt +##omen +නාමයෙන් +##ගොස් +මයික්රොස +55 +99 +ඇස්තමේ +හිර +##කලා +##සාව +වියට් +##සිට +ගොදුරු +දුක +ව්යාප්තිය +විදුලිය +චන්ද්රිකා +පටල +කිහිපයක +පුදු +##ේට් +මෙකල +සමකාලීන +##ායන +සාන්ද්ර +##ාවන්හි +බ්රි +රේඩියෝ +සිද්ධිය +චෝළ +අවයව +අගමැති +මයික්රොසොෆ්ට් +44 +we +මුව +##වතු +කොල +පුරෝග +ගණිතය +ද්රවිඩ +1000 +මරණින් +යෝධ +##ජිත +##pen +අවධාරණය +හිඟ +දියමන් +අවධිය +විප්ල +තැනැත්තා +කිලෝමීටර +අතිරේක +අමෙන්හොටෙප් +එල +කවුන් +ජාලය +වද +##ක්ශ +පිටි +සමයේදී +අනික +කොටුව +මාංශ +පැමිණියේ +ද්විත +ශරීරය +ඇන්ඩ් +පවරා +between +රාග +##යො +##තලේ +##ෙම් +##ැර +##ck +සංවේදී +කුලය +##ash +විවිධත්වය +1988 +සංස්කෘතීන් +##ower +ගුප්ත +එන්ජින් +රුධිරය +##හාණ්ඩුව +හැටියට +##නියාව +##rin +සැඟ +එකී +බැස +ලිංග +##uring +1948 +අවසානයේදී +06 +cricket +පාව +##වාට +##කුත් +##ත්තල +කලක් +අයර් +මෙහෙයුම +##ement +##ොහොසත් +හමුවූ +හැසිරීම් +බරපතල +Su +ආරාධ +##reat +විශේෂය +පිටපත +ප්රථි +පන්ති +දෘෂ්ට +##ෙයාර් +උතුරින් +දමි +වාන +ෆෝ +##අඩ +##ෆ්ර +##ක්කම් +කරන්නා +මෙතුමා +##ale +අයත්ව +අනුවා +ජාති +ක්රියාමාර්ග +කියලා +පිහිටන +ජර්මනියේ +වැලැක් +07 +අකු +උත්තේ +##කික +##නයක +කේත +sec +ලක්ෂ්ය +අග්නි +ශාරීර +ආකල්ප +කද +පටු +සන්ත +##හක +පැන් +සාදන +මිසයි +182 +රුපිය +ලක්වූ +වෙන්කර +විද්යාලයයේ +සිනම +කෙනෙකු +දෙමාපියන් +65 +මතුව +##aj +කොමිය +##ායාම +##ala +කාලසීම +සොල් +පෙල +අමුද්ර +ලංකාවෙහි +පැහැදිලිව +සෞන්ද +දශකය +සැමියා +බාලදක්ෂ +තබාග +ටැං +හෘද +##ද්වීපයේ +many +into +වස්ත්ර +වාග් +##fore +##ෆික් +##ියකු +පික් +පිති +##ත්තල් +දැයි +තිබෙන්නේ +##කිරීමේ +දෙදෙනෙකු +ඇසුරින් +කරන්නන් +හැසිරීම +විප්ලවය +langu +writ +ඇර +ඇෆ් +##ගික +##ේන් +##man +##ches +##II +##ත්වා +වර්ගයක් +කෙරි +ලබාගැනීමට +විදහා +විමුක්ති +එදිරි +km +ඛණ්ඩ +ටොන් +##දුණු +##ායි +##ධානය +##විද +off +වසරකට +වැඩිය +දැක්වෙන්නේ +ගිණුම් +මුදලක් +කෘෂි +177 +සරත් +හින්දි +කෙනෙක් +වාර්ෂිකව +ඉගැන්වීම් +ශතවර්ෂයේ +පිරිවැය +ශුන්ය +##හින් +##බන +##පරි +##පසින් +සියුම් +වර්ගී +ගිම් +##වින්ම +නිරූපිත +කුසලාන +under +call +gener +ty +කට්ට +ගන් +මාසය +##ගුරු +##සස් +##පුව +##පනය +නොගැ +දීප් +කොටගෙන +කෙරුණි +හේතුවෙනි +ගිනික +සකසා +ප්රභව +පුරාවිද්යාත්මක +පුරාවෘ +54 +For +follow +නබි +නරඹ +බොර +##ොයිඩ් +##ාරම් +##ිතිය +මිලි +අයෙකු +පිරින +කෝෂ +ගාල්ල +සිදුකරනු +කුරුණ +බඩු +##60 +##මාධ්ය +ගැඹුර +##වුනේ +inter +වැදග +තේරී +හැරීම +නැතිනම් +දේවාලයේ +සාමාජිකයින් +තනතුරු +රාත්රී +##velop +අනුග්රහය +win +ආවර +ඔබ්බ +පද්ය +මසුන් +ලිබ +##භව +##ිකාවන් +##වරයෙක් +සාමය +ලැබෙන්නේ +##owever +වායුව +සංඛ්යාත +ප්රතික්රියාව +පැවතුණි +ප්රිස්ට් +පවත්වනු +උපකල්පනය +තානාපති +po +ඉපැ +ඍජු +##ැසි +##hem +##ery +සඳහාද +සඳහාය +##ාගෙන් +කාලගුණ +##ට්රා +1979 +අවස්ථාවේදී +ප්රවර්ධනය +අන්ය +නමක් +යාප +##ාම් +##ෑගල +සිල්ලා +දිවෙන +ඉන්පසුව +##දෙනු +##ට්රො +ලද්ද +කරගනිමින් +ප්රයෝජනයට +විනිශ්චය +##හාන් +ස්වි +මැණික් +කිරීමටත් +අධිරාජිනිය +සාහිත්යයේ +ප්රතිපත්තිය +වගකීම් +හුදෙක් +ප්රිස්ට්ලි +ob +would +දවස +##රත් +##ved +##මිණි +මින +රාජ් +යෙදී +1985 +සෞර +නිවසේ +නිරීක්ෂණ +අක්කර +විශිෂ්ඨ +නිර්වචනය +Man +##මහා +##ණියේ +අවු +තුර් +##ene +මැති +##ise +##වෙස් +සොයාගත් +සතුන්ගේ +add +රත්නපුර +ප්රතිවිරුද්ධ +පයි +##mb +මහත්ම +1984 +තේර +පළාත +සන්නද්ධ +සාර්ථකව +මනස +මිනිසාගේ +දියමන්ති +US +ඉරිය +##lish +##vers +##යන්ත +ඉන්ද්ර +##ters +කැබලි +ඉදිකරන +වෙහෙස +පෘතුගීසි +47 +count +කෑම +හෙක් +##ිති +##කුරු +##ගල්ල +##ාරාම +##වැත්ව +##ick +අනුගාම +සිදුවී +පැවැත්වූ +ඇසුරු +කඳුකර +##iversity +ලිඛිත +39 +acc +group +##යම +විකෘති +සේම +යොදාගනු +නගරයක් +1983 +##ract +##ලොව +ඉලෙක්ට්රෝ +සුදුසුකම් +දාග +දුරු +ලින් +##ාධික +##ෝර +##වන්ත +##ැන්න +##lad +##විත්ර +බලශ +විටෙක +වැඩිපුර +ප්රධානියා +##ුවේය +වර්ෂාප +##ution +ass +හමුවී +විවේචනය +comple +42 +att +ටි +##ier +සමත්ව +නොසල +ලැබීමට +විටමින් +පසුපස +රටක් +හෙතෙම +මිනිස +three +##විටම +ගුවන්යා +පැවැත්වීමට +බ්රිතාන්යය +ලබාගන්නා +ආණ්ඩුව +char +මත්ස්ය +ආදරය +##meric +පොහොර +ඇස්තමේන්තු +රුපියල් +ඊසාන +දණ්ඩ +වඳ +වෑ +##ඬු +##ියගේ +වේල +විටම +පරණ +වෙතට +අවශ්යතාව +##ild +##chn +##chool +ප්රවණ +අදහසක් +බැක්ටීරියා +48 +Bang +new +trans +අබ් +උසු +කදු +චැ +චේ +නළුව +වන් +##තාන්ත්රික +##දාත්මක +පොකුණ +ගොර්යෝ +කාසි +යුද්ධයට +1972 +ඇතුළත +##iki +රොබට් +තිබෙනවා +අන්තර්ගතය +ලාංකීය +කථාංග +ඉතාලි +##ාහක +දඬුවම් +සිකුරු +ක්රියාකාරිත්වය +IIIවන +අමුද්රව්ය +කුරුණෑගල +##ජනයා +##න්ගෙන් +##නිල් +##ානං +වේලාව +මිට +##ලයින් +වැනිදා +දැනුවත් +මාලාවක් +විදුහ +years +කතාමාලාවේ +##ෙදී +##ගනිමින් +කරමිනි +##න්නෙ +##ේශ් +කුළු +##ital +පිටතට +##oph +නිසාවෙන් +කළමනාකරණ +සිතියම් +##resent +ලියාපදිංචි +col +ඇළ +ඔස +ගූ +චාර +චර්ය +තඹ +බඳු +රුවන් +සිත්තර +වැදි +##ern +කලු +##ංශයේ +සමගය +නිදසුන් +1982 +නොහැකිය +නිපදවා +තාපය +ෆ්රැන් +57 +එනිසා +සත්වය +##az +##ෆෝ +##ාවෙනි +තුඩු +them +රජවරුන් +නිර්මාණයක් +ක්රමලේඛ +කෙටික +යාමේ +සංවර්ධ +ක්රීඩාංග +කඳවුර +උපුටා +Col +මිරි +##ya +##ිකයින් +ස්තර +විසඳ +අයගේ +මතවාද +ඇතුලු +වාදනය +සැලකූ +සෙබ +පැවැත්වෙන +##pect +සංශෝධනය +නතර +බාර +##PU +නිහ +##orn +උපයා +##ාරිස් +##ීටී +International +##ually +##ත්යානුකූල +ඉරාක +චිකිත් +ඩබ්ලිව් +Pl +##ංකර +##ධර +පැස +ස්වී +දෙමින් +##පාත +කුහර +විද්යාවට +##වැට +පොලී +##ගතව +##තුරුව +පුතු +නිරව +දේශය +තාත්වික +සේවයේ +කලාපීය +විදුහල්ප +සීත +##මකට +##කාර් +##ටම් +##ඩාවේ +##ංඝ +##එන් +##හික +දිල +දීප +මුලු +##its +මුදල +1981 +අල්ලාහ් +ප්රාන්තයේ +spec +කොමියුනි +##වත්ත +##බින් +අනුපිළි +සොය +නිදහ +අංශයේ +ස්ටාර් +වළක්වා +ඉවහල් +නිව්යෝර්ක් +ඉස්මතු +ශාරීරික +මිසයිල +නොසලකා +##තීය +ප්රී +##ුරේ +සංවේ +යටතට +බෙදී +1940 +නිපදවීම +ආයතනයක් +IIවන +ආසාදනය +වහ +##ොඩ +##ගිර +##ෂේ +##පාක +ලබාද +##ීටර් +මුල්කාලීන +##ctor +##rig +##ages +තැත් +අවබෝධයක් +ඉතිරිව +ගෞරවය +නොකරයි +ජනාධිපතිවරයා +පාපන්දු +degree +කුසලානය +මනි +හුරු +##නාවට +##ෆා +පැති +##කරැ +මතයක් +රටෙහි +##ased +ක්ෂය +පූජනීය +රචනය +පත්රකල +52 +ඇකඩ +නුව +නෝර් +වරු +වුණි +සනි +##යන්ද +කොහො +හැකිවේ +විශාලත්වය +##imb +##ike +සම්පූර්ණයෙන් +කීපය +ඇමෙරිකාවේ +පින්ත +යනාදී +සම්ප්රේෂණය +සම්පුර්ණ +අත්හදා +Bl +තන්තු +දහස +මෛ +##හෙන +##vent +##ාවය +##ම්ය +සංක්රමණ +වීදුරු +භාවිතයේ +මහජනයා +පිළිතුරු +පත්වේ +##ays +විෂම +තැපැ +සලසා +පෘතුගී +ඉක්මවා +ගම්පහ +සිංගප්ප +ගිම්හා +Americ +West +ටර් +බෝධ +මද +##ඩින් +විකුණ +කොම +සැමර +කාලයට +##පත්ති +ස්ථූප +##ම්බි +සම්බන්ධතාවය +තත්ත්වයට +##පූර්ණ +නිරවද්ය +##ient +##ේන්ද්ර +##ණ්ය +##න්තිය +දිසා +විශ්ර +1952 +produ +නිමවා +නියුට්ර +South +won +කපු +නවා +මදුර +යවන +යමක් +##ධර්මය +##චර +##ියෙහි +නොසැ +##කයෙකි +රටා +රටක +##ලුම් +තේරුම +දේවස්ථානය +පරමාර්ථ +තීරු +ශාස්ත්රීය +සංකේතවත් +හරින +පරිමාණ +ඕස්ට්රේලියාව +තෙලිඟු +08 +මන් +යථ +##සුරු +##එස් +##ස්සන් +##ෙන්නා +##මාලා +නිපැ +##වැලි +##ision +දුක්ඛ +##ම්බක +දේහය +මාදි +සොං +##ාවන්ගේ +ද්රෝ +අතුරුද +කෘෂිකර්මාන්ත +India +භූමියේ +ආකර්ෂණය +##ause +කොන්දේසි +තැපැල් +##ines +ජාතක +වාතය +සංගම් +රෝගීන් +##ුවක්කු +මාර්ගයක් +වැටී +ස්ත්රීන් +ඉල්ලුම +1920 +පදිංච +වෝල්ටීය +Cup +pol +ශේෂ +සතිය +##ිඹු +##යද +සිදුකෙර +ප්රමාණයක +1975 +පියතුමා +##කරුවන්ට +1930 +තුනකට +සූර්යයා +ප්රෝටීන +ඩේවිඩ් +කොමියුනිස්ට් +600 +##මෙ +වනදා +##කාරයෙන් +ජනමාධ්ය +අනුවර් +##amil +##eth +භාෂාවක් +##ures +##ows +බාධක +ඉංග්රී +සියවසේදී +where +ටැංකි +95 +Wh +ආත් +නළු +##ලීමට +##කිසි +##ත්රී +##මිණී +සිරස් +සත්කාරක +අස්වැන්න +දූත +පරිපාලනය +ප්රචාරණය +ඔක්තෝම්බර් +ඇත්ද +කෞතුකාගාරය +බෙක්ජේ +##ladesh +Bangladesh +end +උන්න +සක් +##වත්ව +##eat +##ෆී +##න්දනය +##ොන්දු +##ries +අවධානයක් +අටවන +දකුණින් +differ +##ාවත් +##හුම් +##icro +කැළ +##වුඩ +##භාවයට +ලක්දිව +1986 +පර්යේෂණය +සිටියදී +මරණයෙන් +දිවයිනේ +හයවන +38 +නීත +පුවර +##හණ +##au +##ංගේ +ඇතිවීම +##කරයි +##සරණ +හැකිවිය +දේවල් +අසල් +178 +යම්කිසි +අනාවැකි +ඇතුලත +ජ්යෙ +ඕස්ට්රේලියානු +වගේම +imp +භූගෝලීය +nowiki +සමතුලිත +##ලද +##52 +පැත +නිසායි +##ලියෝ +පුෂ්ප +කලාතුර +ලියූ +කර්මාන්තයේ +ලැයිස්තු +ඵලදායී +ධනවත් +සෙන්ටි +තත්ත්වයන් +බ්රාහ් +ඉමහත් +එස +එදින +කෙන් +ධනය +පද් +##න්ට් +##ියයි +ප්රශ +සිදුරු +##සින +##ියන්ගේ +සොයාගන්නා +තත්ත්වයක් +##umb +##පීඩ +##ෑන්ක් +ගෞතම +ශාලා +පොරොන්දු +සමූහය +කිලෝමීටර් +අපනයන +ළමයින් +නල +යටි +##මෙහි +##වන්නට +##ම්මා +##දායි +##මිති +සැහැ +##හැන් +රටවලට +හැකියාවන් +ද්රව්යය +තීව්ර +ක්රියාකාරීත්වය +සරසවිය +අවලංගු +සොල්දා +51 +ජොං +දන +ළඟ +##ණාත්මක +ස්ඵ +සියලූ +##වැසි +##ානයේ +අයන +##ක්රිය +inf +රූපය +රුහ +අධිපති +පාවිච්චි +ටොලමි +දාගැබ +49 +both +final +no +ඛනිජ +තණ +දකින් +##ිසි +විදි +ප්රවී +කළාය +වසරෙහි +ජීවී +සම්බන්ධය +##stit +සැලකෙයි +ප්රතිශතය +උග +ඛා +චො +දාම +දඩුව +##dd +##ශික +##con +##ර්ව +විපර් +කොස් +##ැනිය +නැත් +බලකාය +බාධ +දෘෂ්ටි +##යෝජනය +බ්රහස්පති +අනිකුත් +called +අහිත +උන +එජ +එෆ් +##බේ +වනා +නොපෙන +##ානුවන් +##නේය +වන්නේය +ප්රදේශයක +පත්වීම +##ෝපැ +වහන්සේට +සැලැස්ම +ගියහ +වෙළඳපොළ +විමෝ +##වීමේදී +නිවැරදිව +ගැනිමට +උද්යාන +##ample +කතුවර +උව +ධාරා +වලිනි +##ෝද්ය +##ඩොල් +ප්රත්ය +නිවෙස් +##මික් +මහර +කාළ +නිර්මාතෘ +##ච්චාර +නාසා +##ග්රා +යාබද +යටත්වි +කාරණා +බැලීම +පූජක +ව්යවස්ථාදායක +ප්රජාතන්ත්රවාදී +තාවකාලික +Ex +##ාචාර +##හූ +##පාර +##වරට +ප්රතිබි +අයිතීන් +නිරූපනය +ක්රියාවලි +පැමිණීම +වෘත් +1945 +මේවායේ +ප්රසිද්ධියට +හැදින්විය +වොෂින් +##ove +වික්රමසිංහ +නඩත්තු +number +46 +will +උතුම් +ගන්නට +නින්ද +##දාව +##කයි +##ත්වයන් +දෙකකි +##කොළ +සැලැස් +##urn +නැගෙනහිරින් +ගම්ය +ධාන්ය +වැළඳ +ගැනිම +ලබාගැනීම +partic +කි්රයා +ඇන්ඩ්ර +භාර්යාව +කඩදාසි +ODI +four +set +ට් +තලය +##gram +##ඩියානු +විඳ +වැටි +නැඹුරු +කෙසේද +##cept +rem +නිකු +ක්ෂේත්රයක් +තැටි +චන්ද්රයා +තැබීම +සියල්ලම +තත්වයේ +වෛරසය +යුදෙව්වන් +පණිවිඩ +විශ්රාම +තදින් +දඹ +##ිමත් +##දියේ +##ාට +##කන +##ield +කොලො +##ත්තක් +කාඩ් +නාසි +බෙංග +වාර්ගික +අත්අඩ +##කිරීම් +වෙන්න +සීමාවන් +##usic +ගැටළුව +ගෘහස්ථ +කියැවේ +රැඳී +ඇසි +##රයක් +##ේල +##චර් +##නුත් +##ලිවුඩ් +භාවයට +ක්ලිය +නිසාත් +මාගේ +දේශසීම +ඉඩකඩ +ලබාගෙන +යුක්තය +ස්වර්ණ +එදිනෙ +කබ +තිරි +ධජ +පහන් +මෞ +ප්රතිස්ථාපනය +##ල්ලෙන් +අගයන් +අදටත් +පාසැ +බටහිරින් +ගෝරින් +කාන්තාර +ධාතුව +පිලිබඳව +සන්ධි +කුළුණ +කැණීම් +4ක් +දම් +දෙන්නේ +ෆී +##ෂල් +##විස් +නොනැ +##මිත් +සැන් +හෙයිනි +##තිවරයා +වුවහොත් +##ury +##ember +භාග්ය +තාරක +මන්ත්රීවරුන් +##ස්තානය +විශ්වවිද්යාලයේ +පැවිදි +වර්ෂාපතනය +අහිතකර +ක්ලියෝපැ +53 +5ක් +63 +අහි +කතර +ගෑ +##වාදි +ඉතිහාසඥ +රැජිණ +අමාත්යා +සඟරාව +ත්යාගය +චාල්ස් +ගැබ් +ආනයනය +var +අඳ +ඒම +පතිත +බැබ +රබර් +විස්ත +##ල්ම +පරිශ්ර +ප්රතිනිර්මා +වසරක් +##ටුහන් +##ගැනේ +හැඳින්වීමට +ලක්විය +උසින් +ගොඩනැඟ +මුල්ය +ස්ටී +අවකාශය +ස්මාරක +මතභේද +යටත්විජිත +එදිනෙදා +09 +තුවක්කු +##ාත්මික +##නගේ +##හැක +අගභාග +වරයා +සේවාවන් +ක්රියාවලියක් +වොට් +##ible +සැළක +නිෂ්පාදිත +ධාවන +සාධකය +ඉලෙක්ට්රොනික +අවශෝෂණය +ear +මනාව +සතුරු +ෆො +##ගියේ +##ox +##yl +වියේ +කුඩු +කලෙක +අගනගර +සමාජවාදී +ස්වකීය +being +වර්තමානයේදී +ග්රහයා +matches +පැවසූයේ +ජ්යෙෂ්ඨ +sim +අැ +නග +##ණියක් +##ියර් +##ස්බ +##තිනි +##තුරා +සම්මේ +##ේෂන් +2019 +1971 +ගෝලය +develop +පසුබිම් +සිහසුන +about +##භූත +සනිටුහන් +58 +ගමනා +හම්බ +##නින් +##ෂන +මෙක් +නිප +##සාදය +මුනි +කුඹුරු +දක්වන්නේ +නවතම +වෙනස්වීම් +වරුන් +දුරක +සෙයින් +ලක්ෂ් +ධාතූන් +තැබූ +සංකීර්ණය +කුළුණු +played +ගිවිසුමක් +am +mod +ශල්ය +##ේට +##ින්ද්ර +විවාද +වූවකි +##ිබෝධ +##න්තොට +මතකය +විශේෂයක් +##ටන්ඛ +මහායාන +කියයි +ඔබේ +##ograph +##ස්ථානික +කල්හි +පල්ලිය +ඇල්බමය +එලෙසම +ප්රසංග +ඇලෙක්සැන්ඩර් +උල්ල +චාල +##der +##ූන්ගේ +##ියං +##ුරි +##ත්වල +විටත් +කෘමි +ලාං +වැඩසටහ +තරඟය +තුනකින් +වැඩිහිටි +known +62 +මොහ +##සයේ +##ධාරි +##චක +##ුණාම +ස්ට්ර +##ana +##als +ඔවුන්ව +රටට +##බ්ස් +නීත්යානුකූල +සතුන්ට +කැරලි +තෙක්ම +නිළිය +බුද්ධිමය +English +තරුණය +කටයුතුවල +ඇෆ්ගනි +App +Cricket +Fr +නියා +හදා +##ගස් +##ෙන්ද +ප්රමිත +සමන් +අවධාන +##සරය +ජීවින් +ලිහි +යොදාගනී +##ාන්ති +අවශ්යතාවය +##ගුප්ත +ලොකු +##owl +ක්රමයකි +##ටියෙන් +විකාශන +ලක්ෂණයක් +ඉල්ලීම +##ම්මද් +පිලිබදව +ආභරණ +පන්දුව +පරිච්ඡේද +සිසුවෙකි +Afric +id +වංශය +##මාලාව +අවදානම් +කාලතුව +මතට +යොදාගත් +කෙතරම් +බෙදීම +අරගලය +සමහරවිට +යන්නෙහි +##ෝනියා +ඉදිකළ +ද්විත්වය +දේශගුණික +අත්අඩංගුවට +එයි +තමිල් +##ෙති +##ල්ගේ +ප්රත් +පරිපූර්ණ +සියයට +ප්රතිලාභ +##වීර +##ider +පීඩා +චලිත +භ්රමණය +මාළිග +66 +##ුමක් +##බාල +සහා +##හුල +then +සුබ +##ished +##මැතිය +ව්යාපාරයේ +ග්රහණය +මොවුන්ගේ +කරගත්තේ +ශරීරයේ +විරෝධය +ගවේෂණ +ජනරජය +Comp +ඇසුරෙන් +ජෙනරාල් +Pak +Zimb +කාය +ජොන් +ඩෙල් +දීමේ +##තනා +##ුක +##iew +##lor +##ma +##hip +##40 +බිල් +සේක +හෙලි +නගරයකි +##ලෝන් +මුළුමනින් +වැටීම +##abwe +අවධානයට +United +නේපාල +ලිපියක් +බැංකුව +දකින +ආසියාතික +දිලීර +Zimbabwe +act +if +බද්ධ +ලඟා +##ලතා +##වෙනි +##ෂාන් +##ඩම් +##ිරීම +නොවීම +වලසුන් +these +අධී +බලවේග +එකවර +වර්ගයකි +නිර්වා +නාමයන් +any +##ුරාදා +##ගෝලය +සඟර +බෙහෙත් +උත්සහ +මිතුරන් +නිම්න +නළුවා +Pakistan +mar +pe +ඌව +ගතික +සවික +ෆ් +##වංශ +##ata +මාත්ර +ග්රා +ආකාරයක් +##rop +##andard +බිහිවූ +සෑදී +නිසාවෙනි +රෙජි +වියදම +දුටුගැ +ඉසව් +කෞතුකාගාරයේ +ගැටලුව +found +ඌර් +දක +නදිය +මුද් +##කීර් +සැකි +##යින්ට +චිත්රපටයට +අභිබ +කලාත්මක +##ript +ක්රියාවට +පැමිණිය +එහෙයින් +##ists +සාමාජිකත්වය +රූපවාහිනිය +ප්රහාරක +example +බැලීමට +##ically +සබද +සැබැ +එංගලන්තය +පසුබිම +award +ඔපෙර +ඩ්ර +ධම්ම +මක් +වතාවක් +ෂා +ෆොන් +පිළිබිඹු +බිද +##ජනනය +##කයින්ගේ +පන්තිය +චක්රය +බලපායි +දුටුගැමුණු +mon +උගත් +කම +මල්ල +##ශු +##TE +##තිලක +බලකා +පාණ්ඩ +බ්රසී +කණ්ඩායමට +කාර්යයක් +##imes +අධ්යයනයන් +වෘත්තා +මිනිසුන්ගේ +කැනඩාව +වසංග +නෞකා +56 +69 +77 +ICC +##දික +##බලය +##gan +පිහිටු +අසුර +ස්ථානගත +කොට්ඨාශයෙහි +ශ්රේණිය +දැමූ +මෙහෙයවන +ගලවා +lead +ප්රවේණි +tournam +ක්වොන් +ඇන +##යම් +##ජාන +##ඳා +##ss +##ස්පර +වැර +කොංග්ර +දිළි +සුඛ +සමාජයට +පැහැය +අධ්යාපනික +නියෝජ්ය +මිනිසුන්ට +හිට්ලර්ගේ +බැලූ +එවක +class +නිශ්ශ +අක්නාටන් +par +ඒමට +සග +##තැන +##ෝක් +##ේෂ් +##ෑටි +එයාර් +දුර්ග +මාක්ස් +ශිෂ්ඨ +හැකියි +ආගමේ +##ull +පක්ෂපා +සටනේ +බ්රිතාන්යයේ +පුද්ගලයෙක් +දෙපස +පැතිරී +ආයුර් +කන්යා +Ass +කුමක්ද +Comm +පොළොන්නරුව +දීප්තිමත් +නැත්නම් +co +අම්ප +##මයේ +##ොළ +##ටියන් +##ඝා +##දුම +##තාවයට +රැහැන් +පාලනයක් +##aster +මූලස්ථානය +අසී +අසමත් +1974 +යුරේ +ජනගහනයෙන් +##ලිකන් +අකුර +ධාරාව +අහෝ +අවුරුද්ද +නිරන්තරයෙන් +අත්ත +කුවේ +ජෙර +නිරි +බංග +##හක් +##ole +##ww +අනෙක +ව්යාජ +පත්කරන +මාළු +ගැනීමත් +තේමාව +##ිකාවක +ප්රභවය +යෝජනාව +අර්ධද්වීපය +ජිවිත +කළුතර +ඡන්දය +සූත්රය +##overn +ජලාශ +ගසා +වලි +සව +සාරා +##PA +##ියෙක් +විරා +##ීමය +සංඛ +සමස්ථානික +මිත්යා +වානිජ +##කෘත +පියාසර +පෞරු +ශාස්ත්රය +##්වනි +##rough +නොලැබේ +අත්යාව +ඉතාලිය +නිවාඩු +පුරාවෘත්ත +ලද්දකි +E0 +ඩෙන් +හ්ය +##නියන් +##දීන් +##ට්ගේ +##මුහ +##වියන් +පොට +සම්බන්ධයක් +හරස් +සේවයට +විමසා +අභිප්ර +වේදනා +වංශයේ +ප්රශ්නය +ප්ලේ +##ization +කැරැල්ල +59 +www +##ුස් +##ුදය +##ට්ෂ +කිරීමෙනි +මේජර් +යොදන +ක්රියාවක් +1962 +ලැබූයේ +ඩිස් +දෙදෙනාම +ජනයාගේ +ආසන්නව +ටයිම්ස් +නයිට්රජන් +දර්පණ +72 +women +ඇරි +උචිත +දෙන්න +නන්ද +වරා +සබ් +##ැල්ල +##බඳු +සහයෝගී +##ටිටි +තරණය +දේශයේ +අවශ්යය +වර්ධනයක් +ක්රීඩකයා +සැකසීම +වැටෙන +ස්වරූපයක් +##ගත්තේය +අක්නාටන්ගේ +පෝලන්ත +ව්යුත්පන්න +කාලතුවක්කු +Be +world +නතු +සක්රීය +##ලෙන +##සුණු +##und +##ාරණය +##නිස් +##වරය +##රාණික +ලැබෙයි +කලකට +හේතූන් +##ames +රාමු +ප්රමාණයට +නීතියට +ග්රන්ථයේ +##ජීව +ගාන්ධ +##ාරාමය +එකතුවක් +මත්ද්රව්ය +ගනේෂ +##ශාලා +සම්ප්රදායන් +පැවසුවේ +දමිළ +අම්පාර +qual +අල්ප +කන්න +##වරයාගේ +##මේය +සමීකරණය +##දැම +අරාබ +##මීටර +මුහුදේ +පොරො +න්යායන් +runs +ආරාධනා +කතරගම +##ටන්ඛාම +dist +elect +ඉඳ +ඉංග +ඵලය +##නත +##ෙමි +##ton +##කරනු +##ලිමත් +අනවශ්ය +දිනපතා +##වුම +සුර්ය +##row +රෝහල් +තොරතුර +1968 +පෞරාණික +විද්යාලයට +එල්ට +නොදන්නා +කීර්ති +පුරවැසියන් +common +case +law +ඉවුර +දූර +##ගන්නේ +##ted +ප්රග +කොඩිය +##ලාකාර +හිඳ +##ටිං +කෙරෙන්නේ +දේශගුණය +##ety +නිෂ්පාදක +මට්ටමින් +ස්ථානවල +පරාසය +සාර්ථකත්වය +කිහිපයකි +##මානුකූල +ධාරිතාව +රඟපෑ +ඕස්ට්රේලියාවේ +මාලිගයේ +මුදාහැර +දෛනික +නිර්මිත +Car +අහස +දිරි +##ලභ +##ැඹ +##ර්ත +##යන්ය +##ෝගී +අනුමැතිය +දුන්න +අමතක +හඳුන්වන්නේ +ref +නිලධාරී +ත්රස්තවාදී +සල්ෆ +සෘජුවම +කැල්සියම් +අත්යාවශ්ය +41 +CPU +same +අවාස +ආභා +ටූ +##ොග් +##ෙකින් +##ience +##වාය +කොල්ල +උපත් +කාශ්ය +##වූහ +පිරිමින් +##ජිත් +176 +1969 +නෙදර් +පලස්ත +ක්රීඩකයන් +සාධකයක් +අරමුණින් +ඔක්තො +##බුක් +ගැලපෙන +පරාසයක +අඛණ්ඩව +sm +ඇග +ජන් +##කස් +##පතේ +##5දී +##AS +ක්රමා +විසඳු +සාධනය +##ince +පරිමාව +තිබෙයි +##හැම් +යොං +##මන්ඩ් +හෙල +සියවසට +මාර්ගයෙන් +ද්වාර +බලාගාර +සංකේතය +සැළකිය +සැළකේ +බලාපොරො +අරමුදල් +ස්වදේශික +ආත්මය +හම්බන්තොට +giv +made +උගන් +ඍජුව +ගන්ධ +සබර +##තාවේ +##ටස් +පිදුම් +##ත්වැ +##න්දුව +පරිහා +##වැත් +මැග් +පුපුර +වාර්තාවක් +පර්සියානු +ප්රභේදය +ඉරාකය +සංස්ථාව +පාර්ශවය +රීති +second +ඇගය +නැන +##මද +##නක +##බන් +##ළුන් +දක්වමින් +ගැමි +දිනකට +දියවැ +පත්වී +##rid +##rix +වෙන්ව +හැරී +උදෑ +දායකත්වයක් +සමීක්ෂණ +යුරෝපියානු +නිරීක්ෂ +එතෙක් +සිරුරේ diff --git a/adapters/tests/fixtures/hub-index.sample.json b/adapters/tests/fixtures/hub-index.sample.json new file mode 100644 index 00000000..0f21386a --- /dev/null +++ b/adapters/tests/fixtures/hub-index.sample.json @@ -0,0 +1,19 @@ +{ + "t": { + "s": { + "default": "path/to/default", + "9076f36a74755ac4": { + "default": "path/to/pfeiffer/default", + "versions": { + "example-org": "path/to/pfeiffer/example-org", + "ukp": "path/to/pfeiffer/ukp" + } + }, + "b1017368d7a97b11": { + "versions": { + "example-org": "path/to/houlsby/example-org" + } + } + } + } +} \ No newline at end of file diff --git a/adapters/tests/fixtures/sample_text.txt b/adapters/tests/fixtures/sample_text.txt new file mode 100644 index 00000000..a4281206 --- /dev/null +++ b/adapters/tests/fixtures/sample_text.txt @@ -0,0 +1,33 @@ +This text is included to make sure Unicode is handled properly: 力加勝北区ᴵᴺᵀᵃছজটডণত +Text should be one-sentence-per-line, with empty lines between documents. +This sample text is public domain and was randomly selected from Project Guttenberg. + +The rain had only ceased with the gray streaks of morning at Blazing Star, and the settlement awoke to a moral sense of cleanliness, and the finding of forgotten knives, tin cups, and smaller camp utensils, where the heavy showers had washed away the debris and dust heaps before the cabin doors. +Indeed, it was recorded in Blazing Star that a fortunate early riser had once picked up on the highway a solid chunk of gold quartz which the rain had freed from its incumbering soil, and washed into immediate and glittering popularity. +Possibly this may have been the reason why early risers in that locality, during the rainy season, adopted a thoughtful habit of body, and seldom lifted their eyes to the rifted or india-ink washed skies above them. +"Cass" Beard had risen early that morning, but not with a view to discovery. +A leak in his cabin roof,--quite consistent with his careless, improvident habits,--had roused him at 4 A. M., with a flooded "bunk" and wet blankets. +The chips from his wood pile refused to kindle a fire to dry his bed-clothes, and he had recourse to a more provident neighbor's to supply the deficiency. +This was nearly opposite. +Mr. Cassius crossed the highway, and stopped suddenly. +Something glittered in the nearest red pool before him. +Gold, surely! +But, wonderful to relate, not an irregular, shapeless fragment of crude ore, fresh from Nature's crucible, but a bit of jeweler's handicraft in the form of a plain gold ring. +Looking at it more attentively, he saw that it bore the inscription, "May to Cass." +Like most of his fellow gold-seekers, Cass was superstitious. + +The fountain of classic wisdom, Hypatia herself. +As the ancient sage--the name is unimportant to a monk--pumped water nightly that he might study by day, so I, the guardian of cloaks and parasols, at the sacred doors of her lecture-room, imbibe celestial knowledge. +From my youth I felt in me a soul above the matter-entangled herd. +She revealed to me the glorious fact, that I am a spark of Divinity itself. +A fallen star, I am, sir!' continued he, pensively, stroking his lean stomach--'a fallen star!--fallen, if the dignity of philosophy will allow of the simile, among the hogs of the lower world--indeed, even into the hog-bucket itself. Well, after all, I will show you the way to the Archbishop's. +There is a philosophic pleasure in opening one's treasures to the modest young. +Perhaps you will assist me by carrying this basket of fruit?' And the little man jumped up, put his basket on Philammon's head, and trotted off up a neighbouring street. +Philammon followed, half contemptuous, half wondering at what this philosophy might be, which could feed the self-conceit of anything so abject as his ragged little apish guide; +but the novel roar and whirl of the street, the perpetual stream of busy faces, the line of curricles, palanquins, laden asses, camels, elephants, which met and passed him, and squeezed him up steps and into doorways, as they threaded their way through the great Moon-gate into the ample street beyond, drove everything from his mind but wondering curiosity, and a vague, helpless dread of that great living wilderness, more terrible than any dead wilderness of sand which he had left behind. +Already he longed for the repose, the silence of the Laura--for faces which knew him and smiled upon him; but it was too late to turn back now. +His guide held on for more than a mile up the great main street, crossed in the centre of the city, at right angles, by one equally magnificent, at each end of which, miles away, appeared, dim and distant over the heads of the living stream of passengers, the yellow sand-hills of the desert; +while at the end of the vista in front of them gleamed the blue harbour, through a network of countless masts. +At last they reached the quay at the opposite end of the street; +and there burst on Philammon's astonished eyes a vast semicircle of blue sea, ringed with palaces and towers. +He stopped involuntarily; and his little guide stopped also, and looked askance at the young monk, to watch the effect which that grand panorama should produce on him. diff --git a/adapters/tests/fixtures/samples/MRPC/dev.tsv b/adapters/tests/fixtures/samples/MRPC/dev.tsv new file mode 100644 index 00000000..5b814856 --- /dev/null +++ b/adapters/tests/fixtures/samples/MRPC/dev.tsv @@ -0,0 +1,7 @@ +Quality #1 ID #2 ID #1 String #2 String +1 1355540 1355592 He said the foodservice pie business doesn 't fit the company 's long-term growth strategy . " The foodservice pie business does not fit our long-term growth strategy . +0 2029631 2029565 Magnarelli said Racicot hated the Iraqi regime and looked forward to using his long years of training in the war . His wife said he was " 100 percent behind George Bush " and looked forward to using his years of training in the war . +0 487993 487952 The dollar was at 116.92 yen against the yen , flat on the session , and at 1.2891 against the Swiss franc , also flat . The dollar was at 116.78 yen JPY = , virtually flat on the session , and at 1.2871 against the Swiss franc CHF = , down 0.1 percent . +1 1989515 1989458 The AFL-CIO is waiting until October to decide if it will endorse a candidate . The AFL-CIO announced Wednesday that it will decide in October whether to endorse a candidate before the primaries . +0 1783137 1782659 No dates have been set for the civil or the criminal trial . No dates have been set for the criminal or civil cases , but Shanley has pleaded not guilty . +1 3039165 3039036 Wal-Mart said it would check all of its million-plus domestic workers to ensure they were legally employed . It has also said it would review all of its domestic employees more than 1 million to ensure they have legal status . diff --git a/adapters/tests/fixtures/samples/MRPC/train.tsv b/adapters/tests/fixtures/samples/MRPC/train.tsv new file mode 100644 index 00000000..5b814856 --- /dev/null +++ b/adapters/tests/fixtures/samples/MRPC/train.tsv @@ -0,0 +1,7 @@ +Quality #1 ID #2 ID #1 String #2 String +1 1355540 1355592 He said the foodservice pie business doesn 't fit the company 's long-term growth strategy . " The foodservice pie business does not fit our long-term growth strategy . +0 2029631 2029565 Magnarelli said Racicot hated the Iraqi regime and looked forward to using his long years of training in the war . His wife said he was " 100 percent behind George Bush " and looked forward to using his years of training in the war . +0 487993 487952 The dollar was at 116.92 yen against the yen , flat on the session , and at 1.2891 against the Swiss franc , also flat . The dollar was at 116.78 yen JPY = , virtually flat on the session , and at 1.2871 against the Swiss franc CHF = , down 0.1 percent . +1 1989515 1989458 The AFL-CIO is waiting until October to decide if it will endorse a candidate . The AFL-CIO announced Wednesday that it will decide in October whether to endorse a candidate before the primaries . +0 1783137 1782659 No dates have been set for the civil or the criminal trial . No dates have been set for the criminal or civil cases , but Shanley has pleaded not guilty . +1 3039165 3039036 Wal-Mart said it would check all of its million-plus domestic workers to ensure they were legally employed . It has also said it would review all of its domestic employees more than 1 million to ensure they have legal status . diff --git a/adapters/tests/fixtures/samples/SQUAD/sample.json b/adapters/tests/fixtures/samples/SQUAD/sample.json new file mode 100644 index 00000000..ed3dcc27 --- /dev/null +++ b/adapters/tests/fixtures/samples/SQUAD/sample.json @@ -0,0 +1,201 @@ +{ + "version": 2.0, + "data": [ + { + "id": "56ddde6b9a695914005b9628", + "question": "In what country is Normandy located?", + "context": "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse (\"Norman\" comes from \"Norseman\") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries.", + "answers": { + "answer_start": [ + 159, + 159, + 159, + 159 + ], + "text": [ + "France", + "France", + "France", + "France" + ] + } + }, + { + "id": "56ddde6b9a695914005b9629", + "question": "When were the Normans in Normandy?", + "context": "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse (\"Norman\" comes from \"Norseman\") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries.", + "answers": { + "answer_start": [ + 94, + 87, + 94, + 94 + ], + "text": [ + "10th and 11th centuries", + "in the 10th and 11th centuries", + "10th and 11th centuries", + "10th and 11th centuries" + ] + } + }, + { + "id": "56ddde6b9a695914005b962a", + "question": "From which countries did the Norse originate?", + "context": "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse (\"Norman\" comes from \"Norseman\") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries.", + "answers": { + "answer_start": [ + 256, + 256, + 256, + 256 + ], + "text": [ + "Denmark, Iceland and Norway", + "Denmark, Iceland and Norway", + "Denmark, Iceland and Norway", + "Denmark, Iceland and Norway" + ] + } + }, + { + "id": "5ad39d53604f3c001a3fe8d3", + "question": "Who did King Charles III swear fealty to?", + "context": "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse (\"Norman\" comes from \"Norseman\") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries.", + "answers": { + "answer_start": [], + "text": [] + } + }, + { + "id": "5ad39d53604f3c001a3fe8d4", + "question": "When did the Frankish identity emerge?", + "context": "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse (\"Norman\" comes from \"Norseman\") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries.", + "answers": { + "answer_start": [], + "text": [] + } + }, + { + "id": "56dddf4066d3e219004dad5f", + "question": "Who was the duke in the battle of Hastings?", + "context": "The Norman dynasty had a major political, cultural and military impact on medieval Europe and even the Near East. The Normans were famed for their martial spirit and eventually for their Christian piety, becoming exponents of the Catholic orthodoxy into which they assimilated. They adopted the Gallo-Romance language of the Frankish land they settled, their dialect becoming known as Norman, Normaund or Norman French, an important literary language. The Duchy of Normandy, which they formed by treaty with the French crown, was a great fief of medieval France, and under Richard I of Normandy was forged into a cohesive and formidable principality in feudal tenure. The Normans are noted both for their culture, such as their unique Romanesque architecture and musical traditions, and for their significant military accomplishments and innovations. Norman adventurers founded the Kingdom of Sicily under Roger II after conquering southern Italy on the Saracens and Byzantines, and an expedition on behalf of their duke, William the Conqueror, led to the Norman conquest of England at the Battle of Hastings in 1066. Norman cultural and military influence spread from these new European centres to the Crusader states of the Near East, where their prince Bohemond I founded the Principality of Antioch in the Levant, to Scotland and Wales in Great Britain, to Ireland, and to the coasts of north Africa and the Canary Islands.", + "answers": { + "answer_start": [ + 1022, + 1022, + 1022 + ], + "text": [ + "William the Conqueror", + "William the Conqueror", + "William the Conqueror" + ] + } + }, + { + "id": "5ad3a266604f3c001a3fea2b", + "question": "What principality did William the conquerer found?", + "context": "The Norman dynasty had a major political, cultural and military impact on medieval Europe and even the Near East. The Normans were famed for their martial spirit and eventually for their Christian piety, becoming exponents of the Catholic orthodoxy into which they assimilated. They adopted the Gallo-Romance language of the Frankish land they settled, their dialect becoming known as Norman, Normaund or Norman French, an important literary language. The Duchy of Normandy, which they formed by treaty with the French crown, was a great fief of medieval France, and under Richard I of Normandy was forged into a cohesive and formidable principality in feudal tenure. The Normans are noted both for their culture, such as their unique Romanesque architecture and musical traditions, and for their significant military accomplishments and innovations. Norman adventurers founded the Kingdom of Sicily under Roger II after conquering southern Italy on the Saracens and Byzantines, and an expedition on behalf of their duke, William the Conqueror, led to the Norman conquest of England at the Battle of Hastings in 1066. Norman cultural and military influence spread from these new European centres to the Crusader states of the Near East, where their prince Bohemond I founded the Principality of Antioch in the Levant, to Scotland and Wales in Great Britain, to Ireland, and to the coasts of north Africa and the Canary Islands.", + "answers": { + "answer_start": [], + "text": [] + } + }, + { + "id": "56e16182e3433e1400422e28", + "question": "What branch of theoretical computer science deals with broadly classifying computational problems by difficulty and class of relationship?", + "context": "Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other. A computational problem is understood to be a task that is in principle amenable to being solved by a computer, which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps, such as an algorithm.", + "answers": { + "answer_start": [ + 0, + 0, + 0 + ], + "text": [ + "Computational complexity theory", + "Computational complexity theory", + "Computational complexity theory" + ] + } + }, + { + "id": "5ad5316b5b96ef001a10ab76", + "question": "What is a manual application of mathematical steps?", + "context": "Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other. A computational problem is understood to be a task that is in principle amenable to being solved by a computer, which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps, such as an algorithm.", + "answers": { + "answer_start": [], + "text": [] + } + }, + { + "id": "56e16839cd28a01900c67887", + "question": "What measure of a computational problem broadly defines the inherent difficulty of the solution?", + "context": "A problem is regarded as inherently difficult if its solution requires significant resources, whatever the algorithm used. The theory formalizes this intuition, by introducing mathematical models of computation to study these problems and quantifying the amount of resources needed to solve them, such as time and storage. Other complexity measures are also used, such as the amount of communication (used in communication complexity), the number of gates in a circuit (used in circuit complexity) and the number of processors (used in parallel computing). One of the roles of computational complexity theory is to determine the practical limits on what computers can and cannot do.", + "answers": { + "answer_start": [ + 46, + 49, + 46 + ], + "text": [ + "if its solution requires significant resources", + "its solution requires significant resources", + "if its solution requires significant resources" + ] + } + }, + { + "id": "56e16839cd28a01900c67888", + "question": "What method is used to intuitively assess or quantify the amount of resources required to solve a computational problem?", + "context": "A problem is regarded as inherently difficult if its solution requires significant resources, whatever the algorithm used. The theory formalizes this intuition, by introducing mathematical models of computation to study these problems and quantifying the amount of resources needed to solve them, such as time and storage. Other complexity measures are also used, such as the amount of communication (used in communication complexity), the number of gates in a circuit (used in circuit complexity) and the number of processors (used in parallel computing). One of the roles of computational complexity theory is to determine the practical limits on what computers can and cannot do.", + "answers": { + "answer_start": [ + 176, + 176, + 176 + ], + "text": [ + "mathematical models of computation", + "mathematical models of computation", + "mathematical models of computation" + ] + } + }, + { + "id": "56e16839cd28a01900c67889", + "question": "What are two basic primary resources used to guage complexity?", + "context": "A problem is regarded as inherently difficult if its solution requires significant resources, whatever the algorithm used. The theory formalizes this intuition, by introducing mathematical models of computation to study these problems and quantifying the amount of resources needed to solve them, such as time and storage. Other complexity measures are also used, such as the amount of communication (used in communication complexity), the number of gates in a circuit (used in circuit complexity) and the number of processors (used in parallel computing). One of the roles of computational complexity theory is to determine the practical limits on what computers can and cannot do.", + "answers": { + "answer_start": [ + 305, + 305, + 305 + ], + "text": [ + "time and storage", + "time and storage", + "time and storage" + ] + } + }, + { + "id": "5ad532575b96ef001a10ab7f", + "question": "What unit is measured to determine circuit simplicity?", + "context": "A problem is regarded as inherently difficult if its solution requires significant resources, whatever the algorithm used. The theory formalizes this intuition, by introducing mathematical models of computation to study these problems and quantifying the amount of resources needed to solve them, such as time and storage. Other complexity measures are also used, such as the amount of communication (used in communication complexity), the number of gates in a circuit (used in circuit complexity) and the number of processors (used in parallel computing). One of the roles of computational complexity theory is to determine the practical limits on what computers can and cannot do.", + "answers": { + "answer_start": [], + "text": [] + } + }, + { + "id": "5ad532575b96ef001a10ab80", + "question": "What number is used in perpendicular computing?", + "context": "A problem is regarded as inherently difficult if its solution requires significant resources, whatever the algorithm used. The theory formalizes this intuition, by introducing mathematical models of computation to study these problems and quantifying the amount of resources needed to solve them, such as time and storage. Other complexity measures are also used, such as the amount of communication (used in communication complexity), the number of gates in a circuit (used in circuit complexity) and the number of processors (used in parallel computing). One of the roles of computational complexity theory is to determine the practical limits on what computers can and cannot do.", + "answers": { + "answer_start": [], + "text": [] + } + } + ] +} diff --git a/adapters/tests/fixtures/samples/cifar10/cifar10.py b/adapters/tests/fixtures/samples/cifar10/cifar10.py new file mode 100644 index 00000000..cd00f026 --- /dev/null +++ b/adapters/tests/fixtures/samples/cifar10/cifar10.py @@ -0,0 +1,62 @@ +""" +CIFAR-10 demo data, adapted from https://huggingface.co/datasets/cifar10. +""" +import os +import pickle + +import datasets +import numpy as np + + +class Cifar10(datasets.GeneratorBasedBuilder): + """CIFAR-10 Data Set""" + + BUILDER_CONFIGS = [ + datasets.BuilderConfig( + name="plain_text", + version=datasets.Version("1.0.0", ""), + description="Plain text import of CIFAR-10 Data Set", + ) + ] + + def _info(self): + return datasets.DatasetInfo( + features=datasets.Features( + { + "img": datasets.Image(), + "label": datasets.features.ClassLabel(num_classes=10), + } + ), + ) + + def _split_generators(self, dl_manager): + return [ + datasets.SplitGenerator( + name=datasets.Split.TRAIN, + gen_kwargs={ + "files": ["data_batch_1", "data_batch_2", "data_batch_3", "data_batch_4", "data_batch_5"], + "split": "train", + }, + ), + datasets.SplitGenerator( + name=datasets.Split.TEST, + gen_kwargs={"files": ["test_batch"], "split": "test"}, + ), + ] + + def _generate_examples(self, files, split): + for file in files: + with open(os.path.join(self.config.data_dir, file), "rb") as fo: + dict = pickle.load(fo, encoding="bytes") + + labels = dict[b"labels"] + images = dict[b"data"] + + for idx, _ in enumerate(images): + + img_reshaped = np.transpose(np.reshape(images[idx], (3, 32, 32)), (1, 2, 0)) + + yield f"{file}_{idx}", { + "img": img_reshaped, + "label": labels[idx], + } diff --git a/adapters/tests/fixtures/samples/cifar10/data_batch_1 b/adapters/tests/fixtures/samples/cifar10/data_batch_1 new file mode 100644 index 0000000000000000000000000000000000000000..fb49275277afe6110e28825a12d11c76463b2efb GIT binary patch literal 6380 zcmXw;XH*l|y7!rT=FAzL(XlH!D!rFLfFvZ803nb7A-y+3LK-Cy2qA(98JoUuSaVT-iUEvafx3IfdDI${=2DK0heCP%0O3^YgjNx~$o>`oRfgI`$7 z)AvqJQ2)?`427l6;n1sXwPu~UveaTRm@LgbgF8Dqnj2O*tpQSswVE=ym@krL=P9y9 zYE6m0RH?5p7*vW9=T#y299_9mmX{|MX-msBB?ZOhdW)t^Q*J9SD$aKGB8v+O^F2>`bUc!f zqciDs3TcT-B*~R#u()`NfJ-T=HWf=K@$N3%TvfTLqC}~wDlL|zC!qKucw|hPsl?Kx zld?I~xB^9awLw#5)*C9NNkHGEiOcGQSez=)*ksNZ@yi5eZG~2$(v~aDdQ?Pc0O{QA z?#xs)Dn(*6>NE;J94n@+`|u_etG}o(W|?QH`}#3y+K>vV6Uq;#Kci# z2kupMUp)T%zyJN~>t{Eg|M|W{T~@j@9W}L06|sc8o`)Cfj-S8x@z=LMKc8=0`146m zT}`z~nO|R7-C)d=)?WEMHg@mvvzLo!rY7cgjX!_bZLhY}*|g1t`Kq!K=J+q4cO88H z?9l#xyJN@Ht!uAe_nRuqHRh%|jn+_M-2LXSrz1o6j;V~AroM`%v+v$LXjc^HW%8

M~k+X9rn=`W&N~x(vt=Fnr8v17r?CzVNYp!W-v006# z2CKCyH&>~v8n@~#mZ~PLX>4Tn!kNLQI=iFAQCnMAqf?d2q_T!nHI^zzXJdWS(7^b$ zbC(>JT60rdbG3v{5LFa$1Uu&(22*`w%Z~1`x&E_@Cywm5ms#6e3Q{r5GJ`@^eW-P~ z)@U+XT6+4Y`WvU(I|d!b@(QiSSYt71l*ZYsrn85dv?Z0c#+C-7rlr58T-(%aw6t}# zw$_wa?7lf&cnyI6|6cV>FH-DYcPw3IDX zr7zP|HMTlR%dBZN*X?8d^p5@Dp9eu|6VJ2*ab_RgJ4hsXMRdb(P6b~~yYx@z+j z<;9GwUALN4(LsQSWV&RDx-4Eno`@?Jb7grVk+fKE(v?@JOV>Gly9J1&lE|3E_(W7< z5(bH&GKf?hhDv8~D0uRwe{Bg(VlZ*3X&7`egUp~3F+?^;K%-I_A{K#=?7S`_CJ~hs zoj{Aga?A@1adNt$k6ek;%Q_$mrY{kXJ>O6ECMPE4JbI7%r@ClN`4<1bE) z=!EtVlj`5%U1FzWT}|O&XGy-L`<4~vW+xqD#@kbSea}_ z8kxsu;c+afkWJ4LNwfKqfe|L)Kx2cYI4e^s%Aha=d@2r0$rSR_hz1G(?_gg~KzJk!6bf1I^zBC9 z2vD$pKv19;AQ%h=`UgjVqJbfy;R%tUp?<5scK*@T-P6@IFx2KXNYfTTx1+D(AURh%SPv|n>@V&{ro*$1H7HL zZ+F|W-o?wqFUTVa6C3EZ=?AB;eLVcV0(`b@4~lT}c3Zi6_4|J^)d+0x#?{-RL9nO@Z#P$HP=YTI5a1sW;1dzPZq=$aKY*i= zAzL zIYY>pJma+&cTeo!)p_FSd|F6kSV&L=CIko!S?}wK?%x3>R)s~1PUto9$Fz3RnW0}cSMi2}Tg9^pi&RrRb{eIQTAJ#_1d4&W8 zLc6X^H!(mQQE((QEg~>Jue07x+U({Z>Jb|20`T`vAr{qF@DRM5xDaq8FaiWa!4r_4 z+ugkb@o@K`fKX&ulu%MsETh81!yr*nP$(1z@ZPra+vNd*qyWFLq}WIZmMp5Ou%bZV z;3#+u$jfb`v)j6_m&NcMD{XIRx;-bU6y#vVkk+{vyZoVPm;K&$g04x;>3`>LqLSx`D@eu(* ziDEi{ylSnxn|nxjIMB^E3=#nV!VodxK@ezkOaw$A3fWBGu<6Im+kog~h*xkl3>X3o zgTY}QzM!ZCXix@u*)opX<}Ge6eoL)_M1vr}u!u-lRBVu|cVx8Bcd*2Nt>gG@b9VD^ zaq;pB0f&VFm!O1!{awAbdT;yA3Bq!7le5V22`Nd57#xYgVi0IdIzANvf=0rjK@edz zAxXAIE?b)+{HO4LjK(_QlFL|+lWq7vm$6a!!+(52Yne!(ZX4cj%N1ve9yM(S4OUhMpsL-u?Rim!BWoI6O8r9Zq0yQjyh`g8Hh8UHf() zx%>0ex1WA{@#xjZy?j0;iv`EiFbVM{b4f+h#JPoqbK^t3>V5B?U!6ZQsid>$sfZ;U zVv#zlY5L~b-o`2gODc6KfB*W`)p>(jkU>eOu@J}vvdN@rsVZh>WN}CeZcyR5pI*Lx z(^po?prnyAQsS|6dntuTCZN+0;XV;?Vqxvr^%rmVYYXrwB#A`Br((NvVv-|+g17&$ z);orwq!e3PPrbT)#4hFYxXBn69;He2bPFcxgvl&*RY7rNymar(%LT{ekc>)zgDKb; zBq|A8($%45W@rsUMT95%$m18MvKx+c2odOXN<26uL!@e`$(OSEYAwGg&OLSR@r$e0 z_G9NpIY|N@69dhn=2exelu}8dI!m7Bn?Aev^18imZtCcmDmRP4CJ3?AB3ZsDQz$d4 zOOyPlhaWt|-SZFcK79W2=U;#R{^i-ln|E&CzIAP=`@p4>X9vy4r`s?7 z_2tVSOTo{d|M>XF(>phA-n?<^T7TDpg$q~4O=IW!?|ymz?&X79moJ>2KRC8~>csW? zckbL6?;O2&apCAd|JezPNg>G=U{YAQMG^#vK;~C=&tE^Xckh|=mv5ape&JLiiRcke z4g-)xl(x3I`ur4dQrnG_7fzi$d;aRem4)+d-OT_7D+*L<)jxm#?5D+B$9hKQIy%et zU%hz!>a{CZx=V9{$>``9MOjvdwan7mXWluX%atZ&7#sUWXOEqCL~h;g>+9(m3KlkN z7|HRz-@+&!agNK|Yb9Es!(P7Dy;p|0Pp(h{L43>6vXvT1EVTYFPW zXK#P+KzECyu>!a(*!BD6P#T3J=7C~EoW0$s0}X=GdYf9UYd_GYOpc26^jzUhAQCwA zXr#Y$G?+4K4e(!5MF3{xc0U)xLF3e({+Q$>0-2TM@0P_b?X?!j?|Z>Ky26?&&o|`M|K5aA-6zz}sH{a@pt?#q4X}sb>kK z+Sc|1<7zx5#vdIS=)QjCcPpVG5!fu1zNe$7&VTJXRHY(^7qw;0YUi!1{`t*vXJ7(N zURhmJQ?u7BzAPPG?Hgi77aZ{ae?b;Ciycp5;t~<{Hl<<5 z(Fac+-aR%oZ9VY%*|qu8lPVUMm7bJIPm4=7+bz@gZq4lLwwIVKVO4Kmy}o*^QY#TM za7=D;aw4_X(JJ!6M8%PRU$GLZx_nLFKTuu^(LrgK#!n`Bs z6}hy0$C9A~CFbov{N|jpvp0u~iviIIap(*tSvRn=GFQ>uTcr*I;Ep|gb0{uvvR#;v zjG-q&gGzK29ZdzYJXKStz9b$*Ir{X~JfmRp^e{V-FW}%Jl`?&6O+|T$#@<;`N{Zv2 zdiLUEmS)e$h*- zR1E`j`#SQ{_$Qw{T_{x!P3`F!IJg5FMU-di2FCVuH}{->^=@&paq#BzXIG7y!RbAd zBSZT-@V2QPllR`gd-7oM)$f1*GJNdCv*$nEsMhq%P0bAM9^O|w^X8|IA3y#6s#|AfW*qW8Bh9CN{r$_IU;g^?`S(A5`{Tvp{kwPX-oH|(Zk(Q) zurh5Etv5a|@qhn6{ErULUAVLO;Ng`Hm33-rU#qHOe86Na&6e`hQn-c10(dxyE;RR_ zzSLh;J8|&f^x(k3gGe67D~=cnU?~{(2CH3;fuVPv?d$2EoSK@Qnx38QJTL^LF(ScL zJ(jyK9zA|^|5X2;(UN>x=aJbH$BrC5)^F2<5|W@XT3dF5QDtr&tnS<|N{IHt6jwHN z4ey_;kMVZ%@^<$KgNR$TOjMlTa%g{u+mKr*U(VU4u@30=^dd)$;z#vag#PC@&Bb}EEc`Qy3DRqiOG$j><#;@zKGa8@~T$MQjKliJ7l#XlOUOEL)kN z&fzm-wy$63=DF^hZ7Cr@oh>A!e zAd!hftwj|hW2cXs1;y=$ZvOJ?+gDHTnTP~3DHWEIo)#U|>&V;L-8y$it;+U!cpz{$mDk8YnlK38+_m&ccmpFdJcW>Dfl>4~x7(As9( z+>?j%2ZtIBt@W_FUthkwe%h|*XA) z$My|5cFdgFV~+we&b@j&8N}!<$Av=UlEZvMYWw=e`y1NqZ4*ZZYO#q~XMcWs0!?r3 zv8O;8gw&Y$+M1nv`@6cE+jbx9YLHNiFD$+~gXLOujr9fD6f`E&UQs_jynAPB_r6m@ z%~^Eag?lf~;|XTHrmm};7@L%3Q&_uNt=5L&*@dY-oltS={1sxNOcBO2xhr|*CK^wXWY&p!SAa_H3a$4?(G zWzyA93x6g~GuH3q}`0!EztGL=+CnuXKRi~D)|Krau ze=hO=>9@zXZ{EFs|G`2rGv8cYuSkN38-Y^ZHF$Yc@%UR0{hLqcin{My0!;|9J+W2mwl%FXp8wG5ELhCz5Gy!N*GreY#I zwd1()|KChwjkU&HzyJ2pIFSSeH+5JRUp{*D@aBo#2lr;s5{m6Mhuv0LcVNT;=TXp! zDxTLW=KQ0( zPg3Wk9E(ZEVHug4lM559U`*)hHIicoRd=>o^kvO`MlBvqg+sPNr4m85I4OGDW+Fzis}T%-s8F{oX>Uz=DW;nAbFty}L0`0=~%zTe;%&o5c}4Y1Y9Hpykq8T`Va F{|D`+K575} literal 0 HcmV?d00001 diff --git a/adapters/tests/fixtures/samples/cifar10/data_batch_2 b/adapters/tests/fixtures/samples/cifar10/data_batch_2 new file mode 100644 index 0000000000000000000000000000000000000000..8c2b2d809f91a08d097095ca472173751a69562e GIT binary patch literal 6380 zcmZ`+cTl70dEaZhfEpkqBv{(g`?B;7LNw94=tu}vgpiN~0z_{T2oN9yqN#TTdwYB9 zJKKBboV|DFvvcu{%O4rf#Bnm7Ofut1{>h)o^TGNu@g(n{k5BK@KYhR7`#ekUDa8+x zsveFrm}BEp;&%qc?U|bN$`HRdD1JX_bV4SaRAh{bBx4yu*|?O)kVqJc zfMLnlsAytJDv^y!1H>QPYXwZO?xo^~4G-4EkE-5biv2dl{_WxbaNP6&y)H(*)nrK( zlVbs5H2vKN4<5*}#F&N$4exAohT0JgTZEUJl ztDA}mHjg!$g$p5(LdlOGlfzgW)50w^OTM>rVA#;?2@5lFazr%=QE{=caS4eDalGwS z@rHJ9Z}-rkTi-mKEiJ03njfjn%t}ei%*sel6`!4GHM`5l$NGzdea*>Id1Zam+-Q4# zPEKA?W^{Bkd;j!AySuK}?VlW<8jj?}h1E?upk*N~DuK&`4MYk2nfNk%=DI{T4kZf;U_ail-iO3O>@TIN|yT5Ur^S8iB*Lgl3C z6SZ_zDd{p;_O!<{1=%H)%CV99np#>9HMf+~w`w#GR}c1%boSe{GaEBy#nh%H!9-_c z`>24;=5oduEKYA>Q&(quGmFvPH8jv!R79z(A!v3MWI$wYieui%L}rf zWn|@~C$IKV+a~Is=26CFQ;fpQjLh`(w3MWzCy`lYX))o1kcF}4HU=%fyu18aVq#%> zYI<6FMtXW?W@b@pR9;aMfy?Qp_x6p>)WtWKVTxy_=ah?!%S%fevxS8PLPh~mG1WiF z<8NG5l$A7+a?cE>dflORcXPcrsfj{O4-Gy(85@^e);!3bl&R);J(W>-BCdp)9UhYsZOiW z>}qu<7iO!?;jq~qF1y)mwOA}Bv&rOgx*T?^)n>EX?GE>~*Wq-#T@IJW;|5Kq%Vh;4 zo6X^J!M5A$al5@1vQ9s?S{ggkU89gx)Z7d_r4n+6aZ;L z!8Sb!&5ZOExy#+ufgz#(;4!fe?%zREqc;TTH1& zwGa5;AA6dboW`kqLXLR+I3g-KDuS^xH@UvIyQ?`kJ=xkm6y=pyRLlD*$tkh%iAjk` zaeR0aRO*Gp!{ZCxk@i$pL~H4g4>dhaPtSOo5dJuPbXTw2-CjM`X$=Ve$MY!7opX#1 zfKpaYEa7n!Z%#UM{n6g>mGMY#*xh6obqw=o7(JyWh56O#VKM0~tsUww&Uf~fj;(-t1Bth9n^vfD)aE= zC-MQgOu-X8zg*vyl~p&kDTR`*#!k-Elw2kji)GWi`e81I&6pB%M%k>Py4p2%f6pk3 z4c{gN!~H!SUG1HnU0w9%+Nz3zqVl5Rm7xau>>!QSH9J4YuPQDnDK5;*&Cbq9Eu-b9 zCd8#I^1JE$-rA~uYIagm$+PU-+}ympyn?*k%B=X}^6Vu3_|V|s2xq1tt%DLoS)5;5 zS=-p!+T5BiE-soFEl-$}4Gr-HTgIx&^0tT~`6PF^t+Ko@ixk~nP+0sd^Z00gsloqYa!l`Ff7Fwt*r;$)2tF((Au+YQ zb%ZCDZYsERN;Dx1U(N#jrvd((=wlPIxkbSL?ymM=S1Dq2w>8vMR?=Fz@@4hD?gYWV z;lg-zae4wYaBk3PcM<&S&rKG97y?F{$z(B`%|@fi{1*QJF`xjK*8}X}a@r9R08NMU zFZhR7A2dB~7s3oq*EIkFwg3!o@sH4k*W<7OM}QcCC_)%;y~jV|$qiVuIh_swsoU)a z{D4P?3!WGt6iCT&hkw8zVg)8u6@7|J_v*0-)uF1kAF9? zkH_ou!SeVJGP=jV&3uo4yAx0e-hJ1%z#x#a+h#%V4*-6Pe}r0YJ_Krk3_u9_1++*-^5vyb;nMudu4Yp+IY@78>Wu%u4`gU87KNeD zO>o!NhefJQt#Ri_Hy1fIz=yk z^5k)3OiW}{BZc{g$0w%6gb+dp)CT?D&YD5Luh$!| z4!EVQ-6JzYty!rl$r+J>r{`A7vEk}qlUd1NPsxTl@^i8>%aTcPIc=ST zr{8%Dr>YD0$;rt9r=p9_ln&5~^NWjXGs4oc+f;A<@Zq`Fek}2Mw8v-s!bV!Fba=Ri zQeD?cqqg?T%wPUOJ*nDKD-^G;HV&t&8=HHldDDzR!LsH+uRGD}^m-L{R5ruK&#t=UPB=$Kr0mthHzrX)znbm6Gw4c&Bm*9c#0Zkc3)FNMsR@s zNI=a>uItQcqS8~I$rV!qW;>;#Fe^O1x3nN9DZy}Zw9Yg4;e*Lh z@rjw#j$!tMR6Q@~qs9`$2sIPMQSm9+aQ=5Q$0aih>nhEzMtiisFv;xcXs)MH8rpb@ zRn^|n@yYr5$?=&9PJYALndR~fDhH-G)SX?K?@m&y&2o8VGMS8*S4I=O*$x|WzQO?u z=cfy45#XeRSJw&$JG2Tw8F2o?$?O1XK+p^H;6R7~w%{m-P6DA0AQh+EWwXE*h(YQE z~xu6|D_zYs3><&Qj^(_Kkq*HM^Zb1(r6ORw@k30b|z6R=o{DA=+_7@-C z+`wV)yZsP)2CoNBexL6-umEBLN=|XGRE%eGKj7XC8X;VmG6?Nr;$NnWP%iF%P6!DJ z#si4|XF=0Xzz5-xe<2|R`23YT6!!5!$ZYU`%Zad!5B^?`$A526gdn6)VhGrW5Xqs4 zB6JtQ`1|-EC6GuYGBUHk%t0n0a&U#m14AH|BoZNv6c$D%62rqtG2!3G4pAl!>XABTq$h>2-cjO|6q{Qj40A|fXu>&|(2Xz-Jg$IX z`}CV*awt^rRvw10v%2gzC$s&A#){4xvFybg1DW(z4uL|Rxo>w2CNo=o!)TTo`Qo#` z`!f69K9oct5hK;kFLE+e`bRugb0rX@@L%Y4o>$!+&|YInWhU1H8REkO3lEJpTz&fDBa`X1NB#O{k+Zt2{ri9a+w6$2P$HQW@gyRu!=U#$ z4HuT(&NB_Cx@lZ;`I~>{Bt(WG4>dYDzH0BxyebzhoB5QU*4FM((ZciZ-jv5hhLedT zQXZvm^Yqwh=_LI-P`u!jGB`^O$Fw)b?$cj&lOr2la z(r#|-oppDOjBo90F0W1}6j#4dNczN!tjetLHt z&X0{qm$o*CB1)#KYsPof_TRI&-Hy}Ixy2L1n>Sy4H8?5|O0GWfMz?S0rB`h5#rs;9 zqs@G^p!v#0FY>)$w>J$A31>H=>AT(J$T7NLm_7N?OU3c@y7$*#!;c~BE$?Bn1_oj| zI(d6`S{0=^H>KFZSu{ZdQw(bxAsS3t4RcWba;9H?971v#fvwe z9xN|yNtryhfFdtT6XvuG)%Nn6o7k0|{9%s8@uN4d&W_iorJFNjl-A70m02BQ;+-YY zl#Vq#G&BWN`|*#ywC>vuHzt@R`Oh+nifHr!u6T9*Qq?~(AUqckEp-+7 zPbmeJ-BRB01V^;VWsi?ZO8lfwcp zLF51oDu93o4VX_55n_SE1qb1R@i;6RONt5(?^k7F@8yVEFk%nw5C$6+U)-Y%UNa%Fd&eLLC3IBd)b_bfH9-^qaO+^>Z{hAja4r9C7(_W^v7awD@w1k<-z`R%<@}6H)-E zKm~z;bo=(^&a!oNZ*}89&@;f@_~N(!O2;6H2LgQtlC?)ScAHk~JDa_}6m^S)i{Jjs z&yw&+`GLf6BB}9U*J{|_(au$F&2~O3=JAFQXB4(7_ja%L>u9`{t**SLt})@t=l}HCkEwAnk0W3P&2694 znN;S3z6!<^k2kiyd-eKv|7LZ3L(9)hND3$7<1^&zM~3~S$(H86mNDI}@8hq&RSubd z!yW9P4Wvax5o0B?`K`tI)t#EE=Kh(bg&ox@ou&R-A*PEK7)8nW7%6XTacc7F%bd8* z12&79H*)*!uRi{PlFg7VZ>{zba>ok`MwS;(zwMMA9jUs-l1dv=($w4mKD)gH=Me|X-IVZP>fw=$TLMK!5)jTR6@Zyapt=s7p?wnYo(Z$6({ z(I^J1`q_LIi!`X_Q4?Yc3Mfh8sfYa|Owr-XFTc<#r>E#cY$<2>u}nU<+DR&f*E1?K zze6@Na_aMZ_VMAy`nGI@%NONvv!WQuH9eFbZcD>(VT*vpzq)$)lUElfn=@0JbG*E& z*r2?`#*vBbMX`8qsBeg+(Cq9z|KyEj-+s6uWB+q0rz20|N#M^}QSg-cbR5 z{#d{(+TRcMK@MB@@gc4s3bDgL?|=(<_{bl!f(Zn+?$X0z(S8`X_kV;AM!)a({zDW< z?*LLKGN*>w-_+2ou73}WL!+=* zBqwwr4uyL3u74O!teWXx6OS;vwpt(J0@09yzrTL~DhTKQE`c&2n3r-I;%bk%Q)3oE zKwu#1FLEsUVe0tG;)GnzhzyT9rH!rVB=3U%w{kS@VaC$3a&e57DNc?`-Kecr?n&N< z@eA?;_W=PPL~N}O@4{|gn0OgPJM+=ua=!44f0llaxuA-uz z$2-VcjGek|mv)~dN9V}nbKNse&7hgwz7GQRjly?-DuB@~Vg2%eo%Ev-nT2TLP| z8+{Z2miKF4L{Km$0Emwe7)+IO=Vjv(#b}CXq%bTdKcDUVqLDzrV*-F;Lb1srk)(@O z(>Gg5&PYs1%P*^6uw2Cj0imLBxY*PZ#`u_GG9$Z#FD!{Eq_(t;nSXkIkqR9oIS`FX zp>Sqb7;}@QiL}0!)>g4nZT-==>l^M2WIDv5{K=6c0)?DE(2|o!$!l6XKR4fg%&c5_ zSxYG|ZXo0EsGxx%Hn)$?n9NActr{H{OiKh6bwX!HdwI`jO%lluJJi*|?r2hapWsSn z+ge)U8ctrlGU&UZ5gXwMDE`siiD@mo5yi`zQKfRKa&SZ}IX~B56jn90w9OlKF}eH* zQYw#HCy*@7BrBB+p>3@obYr_J`)PRzt)GJ_7M481HRV;6HPo-GJ7j&_ofnQ_&Uj~W zTv0_uaVeH2r5DGACp~!<9T>4tU0c_sxP0!J9%^qcD5-9%C=BMX`IAlftoPpkAP5Dg zPj`tze|l|_5A_bWR=3qRCH2P!H%FJ$Jgw;|$)`nS)|A$*sg2IlS@BSNr=YhwIT!z4 zY*-1cQ^M_~%PI;AirR!za-G4s!e11znkX^Ap%F1p3rlI;JkA_5yRM*qrnz%`!RVY_ xobO0UNQfXLMkN(>)|R(7v@$EpYb#sZlP7z)(-)Q+iinXdCP~F)=9nzwzX40Ma6$k8 literal 0 HcmV?d00001 diff --git a/adapters/tests/fixtures/samples/cifar10/data_batch_3 b/adapters/tests/fixtures/samples/cifar10/data_batch_3 new file mode 100644 index 0000000000000000000000000000000000000000..3e86141a9c832e4ac5c91c7c355974e585864a39 GIT binary patch literal 6380 zcmZ9PcU;qFx4>zukUhvG3D*u@prFlp%`j4cUwA zO$Z4PAnX-3$ac3?U*CK0gY6xk`}-sLC1?E3^PKZN=lR|F>K4_??I-KY0fFZ(M^L{w zP5shsA7tO+b3ZLQ8xR>l{pvJzkz3H!s4HPHYlA|=&#k=@bvg1vKzMjS49q|LTu|uM zh{*7$phy^X@n2f7t7rd`Qmyw{-KE<6^hF>Ql1POfrNZ3yeR04FahD4JTk~vWOxQUX z72)%xm6cW01}bu&)xIwhsi>n=wA;R~e7*qx-lSp<9z6KVe}e1t$3Ck_DmE}_hZVxg zih@NVkth@z1w&G7;V=XYiX&o)XdHq-!eY^6A|8o^!x3;I5rIS@VF)w??nZ!Ouy#-s zhO`Vva6|!XI1K4XfFm$?2m%Q~E<-|LHV8Cf8HI?oTY|)*P;e;D77mBwa1c1m28Bbz z5Ez0jVb!LcKW}lyU{FW|9F2q{kytDo1%n`wXe^n$eE+q|Ih`TlQGO77V=q@Zt4L%XSC~xe1TL?G;K++QOkk?;GV~|Ne98 zVY+1S{rrR_7>2{3AOF*K7kmCqZ^V-ICyO;=de5g%#wxjFw6`x7kHjL$LwS1(#^&bV z_UDD%x)jW6roH@+;ZrA{8QT)URzorPxgKu!i`l7(5tdis;a%5_oYv}JzD-fqr7Zu- z+L~YspPw9^o}HVUu%yRpPI+I6%+K7iyHKS_`4I_&SlglDZ|3J`U%Z+g8)r#0ks+}U zqqYYZ%4A7iBq$06g}@Q-=4WT04>i>HwJQ=IJSmO(;Zm+h7=LNK4GfM)Lf{UsU(C)J z8d!I_r&V_{X<_>Uuk!d0qJKew9ml|t1j_9E)<-2vO?7p=6@{7%h8INx7{XU~cL0t(Y zAYc$E0)ZuBH@LaEZ~WSYxF#m)UewlAY4tU&O;_;*V2(y2AWL_<+d6)~bJr1{`zdjO z->kZ4YVYhBN_B?8VZa;>k4agv7`@@AJ->t|+&I0`Dc;o9+uJova|a~}g(3+k_U%=K zMWhvLJ1ssV$l2A}6 zY=Lka81QBTgV;t)VM$5Hy+u0sOmS@s3~{fDMdd z3wGPq8V0w9yTENA)-V*{pMW7RfdclR))+Jd0>NOdp^(K0ED8cc;jn-4zZ3>rr~;4- zkWCZ>Zfy;RBhf^X>%PzYe~W?HSVJH{1w;vS5D;*KBQEo2jeq9f0SbeHzaSt)a04L` zK{U9fzU-;L_>W%b3Sdz%8wkkPVi*AfL6SHAFaQ6vv0d@*( zzxl@^kZ@3Dr0>?EVK5jJL*AKNnJwptM?SuP|9Yl*n++1Njf5l|kgNQ0(8ab#Bl7z` z{xOyIL^bk$ZrpMXg2SK+ezrR(eEp_3(rK+vv655N{O898mRdI6+Z&66W09oEa?kR~ z7xQli@`7)MUgVl9=KekIe=4u3GZ76|jlsPhlJ(8c%}$LmJ@a<|5LI8@UcKKvRbxt9 z_T}P5AUiK-p3lFSo15%^5G(iEeI}wTd+V-}THTX92&m0sG79?k#fulOUOpclDi`Xm z`-NrP`Z1(Xt;_It1nk?`Kw-bXn45V%R9Dkx)@5crE{WR{RwS1{2zLj2iiKOlC~scQ zO*OQ#uAAo@Qi?gz-WMaK^31qH=!I>A!tvz!7n9@l$z>H??S{(InA0cE6mznlTy|Up zgA?$e3D}HIjdnL&yd@BEi=RaK?>;T$Cp^9V^Y~ z{{bg}!UD?&6~2A_4&R-t9Z+t!a~|LRal_NrhVHf-4mhZ_4H5=j?0o2Z^zxmXJ&t-N zWk0;SWqnFpuVrv7e+?*QkRJpjK5NyN5WM4#6W7vH&#zma)ZQ~ZGBhsQ0lJHg4a^p< zNM7$?{S|7HS6F<&DyLg|L+9w|@KmcOC`kk$93~82`44A^mE-9M&t;U`EzKtL$mGP- z*e#HK1i}Fex#Hoz%=I7m^=A&dK%zR^%)J9sGgFfzymgDA2pk@1ec{Z`rRWvw)@^Y` zoi=p!S;od^W@lz6`pec@lfh86$v?f_eaGSBdsm{p)MG=V)6+9kBNKD4M(^5@To>3~ zYDXp!h(r?6mf+$@B#>~n4ofLZ$PPqjS4T&OPxi-#cNkcmfV6 z0W}Z+g$OR^C2nW=lMDO{+{i!->}_!iUWm(=k%=UyuTL>2|GhB(-`%ud0>TCwwm9&G zCA&Hi9hPm&oc;LcdkdKVLqC(2WAQ`+2#y4nfd{uP>oz~`dim+or+Mp=$%Q~7 zl2`8j!I5Z3wk0|2%B_4NW{F2Xe)#Zqrfnx!(w^lGZUGIA7oF^|g#8y%jc z|M_Ba;1XepqZ9M^>cF~BABJv!z0vC_w;);d>Qf6#A)Oeo+_WP*QdYhZo)^FSUBC;U%h@aJJg$9Vz_zW zOjgpqu!>q!LC{j10|kpClKusp&yDJ;YilLB&+=&ThhrJF#_ZV5NRq=cGLE?N&v&n1 zcJwkrYG>;6=<2(E;c>Nw(qu0jmh7;EKwi51&D*(|jvRVnTd!HgPY5}GiK(nCi&%;x z;g>mM?Co&V^AiJ|*ODbd35Onk_1GD0&Ev|%H87kl#l;Z?VjP*9H8T^AosOebq~6#S zCK1w0AO38O$5ANuPFM`qc6vh1VnwgnxIglm_wC4PMpp5!x1-msw|6B`NVa4mx%R$q z?62RT;iQ!g8wxdL<>}`y=uAh~5F7}01WFU)@jF{k zYd}tMA}`sy;n*GTwGLL!N#&K9M}Mps=olG%xXuxj6~&%HboM)dT77c&E}sKQw1V6F zcH|C?0mS$}FO(gL;%Jv#wPg{6;Iik!ql(<9Xg8K0RNpRV&J;X&QmyE-(M{^YXQ z3bF0#Lt{y<%biH6$yYsA?fB(@*LU_I z?V}Tu;3)a-^_v&ZS?&lICkH2TZPrD=kMni5c;qpC*%ID>({Q|x)Yyp z_wL<$_aCG@OiNFXIT3K~jDOJ0(i(-7kro#d6MHM}*WVKUmS<$#IPP~TC?Gg0xv;dP zFt4m6FF!Xc^&U`Iuusp(jP>+67koD8%I%C&rlh`JQ!Q21=*6WeNl6bLq&!Lo_Qy|O z2#qe38tXfUo{x7K>Khswo7JU>za=in({K13J06lG>>eJp3{SmzGoWVjRgEU2GAH3? zVsdI)dW^4^*R{&N;rDG`dDG#_&?Dx3UVu$qPmW5vq@P@y%d#{6tO!* zWa{j)v}?=dsuIt2?stT3tzBKMjVf9~Nbs-s!goi=TY3j4pAWTKTJm=|t+^xW9_em1 z8`RbL)H4ykQujwm8oGuir=AawbgOP2-F2%>Ki=2YRI8CO;sX6{gdL;`Yt4P5hJ5Umk9YhzChY&GAK1#wYWUtxS#L7 z3v{Vc+1At5($-R=kgJpmMU75bEmz1TjLa(swjU2GsFn!yt?dSrxyfMaY-_I9>*Y+b zR3c&JCU|eX6qm;l^0lT`V|`OwTi?X=Xm4|~mMs*Es#zuJ=YNcSR>|YBWX9I!)-KDy z$mGn-^kl!0FQ~3&(@U}<_GU9Gm`s{TZ*J=!9vU8>nwfk)J=iD|R0|li@@KIJ85|m& zP7~|R9o>DFf#I>K(ZP|yR+UsNpjDPUy}nN%WL8zu#k!`hwwBheUd!mv!014$Rwk*Y zm*r)I?^7u`6%{O@s=lMOxfz^;Ef&jgPm@|K63_~tJW9AyUni)n;8d%O<`z@Ev7x24 zt*xV3FXOV9m9)yj%$toyIfo^XYK;wbI*n4P(P-2PsgNh&F!^#x)uSj=ql(AkOI2F6 zOd^%3v?`TGudl7CQ;C%tIWsl1xk<%mbNM`;K%!8qG_`tTV^h6OA>#AIB5rwdXroCd zsTMB$)YR2!lnQliL#sg}tLAYy^wQi^s-dY~DHMprz`3$Ut=6bj+D5%f!e>=g73Vxn zi>f#2C0rI8BurE-k*jNzGKowo5^!jx#m_P`Gp;w8>t%dCc(_c&W$?r@A&$tz) zDc_)&EWV*{cA~RJq0-ihiW2XDE&`fJQp9mjpP&n&k2#vU_Tl;Y;pRrbf0MG{*Vwpt zV1GZ{`^eFt1Wrp=XXoJb?{6&%CSPqb85LPKBjV!kCf*PCIeIv}xYN>OlBnC?zOyjA zJWlg#O(sd!weZ;ZyZ5Naj-7d`8ye7L9Ho|9%(d*ulb5&#bF-eAwPWm%J$1LbN>SWZ38WZd)&4p$$Lk7+S}?i{3mCRoWF5-cciSb`!oNez1n!6{c+`n z=l$(Xby`_fwC91ai@UA@b^!llBfSmP`Kk8{tHj+sW?fB&EERaKOJ<$E@dR#8?d z)|pxxjg4(xeIo;XL%mHZsYJ*ueR?lot3=8uE2RUzTN>(&CUb|y(m&AIs1gYU^uo;F zB2MeH+_F-pKv`!p>T7EaO|5P1?MM zT7yBWQZDds)X1xOTrR!j*@IAHbAw7G5KCmB@IhDCYScAN2K8V3=RSQH0r-{jSZt9} zEfvdETAfNRlgq>l{FmfpJ@*VD0u+*&(C^N!~_lRGyhdp<@veU8L6oc)1DQTRU~cwr~9|xZaxzI z=yvp_)85C99`o|?J?-xw5Eyj!{Dq5`eZSkb-F?$`|4h&st6~FBoH*fo>Xe`VnSj8+ zv%w)3FZsG}`Dxph9}dS>#TQ>jj&+XgyoPQ{4w9LL5 zF@il-(jQ(44h#rbc)*FR?pt^6Kb}a}=-Y;7UyPXab@h#nqDR3e{murTzi`24`zH5a zLQ5Nax;uvEKD-;$Fa+9`=DO8Db>pQy!Iy5ChX_5El9S@|fU`{sGOP-zoVY9dY zv2}q0Q{V8+)L^rvt?clIof+yLOKW38t(hrYjol+t(-VV(UD~_;p7F)1 z!8W5#CFA9s*|P4?p^g45t+{_}Y}jH}GqMtY%g&>jOtli3OjH?raQV*N?*0`LeT&7? z)ozqlmK7HkQ))Rcf8q*xuJ}kcsKf zsyIA$N!qm^?fv7kD=JF_HH~^>Q>(e7Z+Nh;UC%41U~y?BS-&20yPK0!Qc}QC*VniA zbOFGJ`ntLsM8y>>PDN?Xeg6%)#RVlL#XNPr$z*C;u z3QKs(x~5u{s{1spZE5N}B zYylXS90@-+;cBf;%&24nuoPmUM6S^(m+N({~)EL!p7dslV!dZ}RH?4Z*d z8}vFI@X-Vg7kp+_6*#}#yQ3s1$$mU;H#J^nffc}|( gCar?atSlb*66E6CPxQas+hoPd+Btl$>e#%8ZixX?~YOOg%j9^fTTCc+8LJSj{-S`+JMl?Dc z(~EI8^z+}n+%%HkThYT6huYC2MW2Y!qn+rnI@B$$;*+XF9_^_6zdR+lSqr(L9*jR6 zI&?^%j(UQQKj}oh>QL{viccAzfU8ZYPjz*5`Tqd>xT`pXqrRfXzg(`s33%MPxxBgguMFG36MVLJT<0KsV;wZ# zSaP+4gxfo7%dYmFjho9$t`0VU!`iKtrH##-Q{%U`x7NqzKlZ#n)-%1e4qDf4P4~@# z_?w+_+4$DZf_@6**_oTX)V8uZI=Q|*V^fK+%QwbMVlEf&8}ATeBSZ6By#~8(Zrs*A zK49h0>XoxAFkd8w#0mu@fKdrzQwhalgG#O8GR0CJr+aclWm0e<87va$>_(*;!P@(p zwGf8E5~0>+?=}fBhlXeA(95_AiypPMwzaf&wIc`!;EGWU6*TJXn9|X0vKr(@vlg@3 zHFC7G&tbr5OfIWdsFXTet&Wx!t-1-8VM;My0HGR7v%!wn)95vo94&vqZgF<^H5m+A zgVBKS1ejWBFe_|M70jq>U8@NINhYtxjYzC7-8)yRFOd6fVqSw-BOdgNP=QD*Y zmP8=tF(Em8(aJxaTTsPi(HKlvr8L@X_BLCm4UBYGi>Z5bWN4_P?BoSDU8>cgh(@k4 z_4W)-O;1itPtQz^&(6;c^bOl9FL2JYMy`&@1U#Oyt9x{DVR3%(>f++U<;%0Z?XBH# zW_Df?duD$NEVzyR{b#S9KY020+4Cn4Z!b+Y>t$-?+3Xr6tscGo;>GjlFP=PocE>)@ zyS}&o_{rTXC}zQ!)#tKLBt%9qdM2*lytR5`rcc2YIeLdKjgO4sMq9ht-lSkw7Zv1} z^E67ZDs-rV%VzLoutaCnp+ccjZP6Io3|bzyE;}~+%sC+fSJ%{WU~!GkDB;r@#UiCt zs*uTLDlxr+BN9StxfF&~Dj82A)uI?~G#Yd|3^(X?7^cHkWEbr`PLI6hU=rSSppm5?BmoMy`~rWHUfL#D5!2kN+3F7T^TlkC-}HFSNz)AEf@aR*4IEQ z*tS-$yV|$bZ!BGRIk?(aZ!TY3TVI|SU)|hT8@v3m=e4oksf}A}z-~_VOfOwqTj^A( z#y7SXjFTYG*4*T%%yxWw%-%CTWaBfL zs+lE~1cqghQYnMvS}9`FNMX4}gJ?xuDa>U%Cq~p3l|U+!$zc@JDAXwK>}^7%YD6K0 z5WTL=0wHZ`fw>h`fSFJu*4AcQlNpyOm2xoj2%?p+l?IKfwOwz*A+=7WHQ-8_#$?gs z7>g_9GbBpbY&AAFH6a>b&4OX26Zv;Tp^Av)C<|b!nhXKqMszsDSF{V-) zEGkQ@R>Pq+vUrSPtI^VA!mOAaQRrK7LzhlzZ$s=3yGr_<^>Y-Wp2z>^^c9NfOa zVnF1m9))leXIIf1Xmx{*madBe22W{d(kdh-3%Dsn%A<)!8Sb)PVmgasHp9i^2 zB84CkjVBgz1rVRZVX~OCelx0;(P<1WtFfNZ$f%`pctW<2%@zy9d^RML_L+IPIj1W) zY&wI+2Y~P`wl-UPlcl+>quJOoJUBS$EICku3K4@C+xUPBQMA-hbk*Hx1T+G`s~@0$IotCE^6&7kMl(UJ#-P4miY=JPv~g%cVL4 zhKj{&ZlxP${PNg!K zCzdGH8jTi3vI{wh^cp^(Q1LILJW=K9Lyz!X47xpUV+& z!Km{1LXl9!<1^Vj9@j-Zm(5}^ne+yF!$V+?9`3mgzuVs4-tO*$2ls*9-Pv5*f3&~< zc>j^h_FV>!EFVJA zy?giW-r3&R-MhUwe|K;9-jx*)zq@O?H_jF3Ix+A<(S3V)dU+m zaoE;rR7>SLRM*_@aJ03U)f%NzDuyv!5A$%F9&PV7nQ(xeR%bCID%93uHR*XmiI}U< zDq8>_wkA|-Qfc%WnN+I6wbo`+i-{-XvzZc&WVF-K-PMlcMpTcZ8mYpFY0WmY*@5=x?5XXO=7VUvlulfX0V!dh{2>+ znDi!I9f!qYjCMJDharJPV{XB4#7%< zrJ_b5BoRpDA_1Sr=dwl|R$rVX>623qt5)1iqm3+8WQB}(oi1-W+ z6OxE|a(k<@xudz+;pl9&bPWxRj`lWIN(3Smszc;_0ZY-}KR7-yK0X2XADx_?8W|jM za(InQY;tJ=<_kHBp59BdvzKQ9{_}G)Gt&d$`9)h<$C8>>p55Nw*|`1e`N8Xh$FKJv zzj^uO-txG^j9{vII&8yr&b?P(yngli<-zMm1M_X2n=cMt?O#K6O*n^kp|~(F`xG=V zwY;`|YxVMoQ3Y}JBV*H(GkRl7kG-u~!*8f6D{X-ExY=wp=@GG*BT*_9CacLHlc^C4 zVrn;ILILe;Mp0=wgvx3g8@Z6U!C;b0*et+5BvpW7tq?Ugxp!C-ROjcf+J z7VH>|#>NI(J)PcAS5s3{h5F&Bzex7E?Bk0DK?dG30_xDf|9i_I%DjJnPY4MN4x%LT zdfVFvx>_~mh1#7r2M@md>g#u3zJC4k#mj>*vacUGou{)5wKl0LiuE_1JbSY9^4+(8 z`s%Cq@85s@bzB%BI5wrY0d?{!N-E)j)wPZ7rR_&A51zhqIlPY#CxxAej?dytb560P z*2^n5w(f3hKYH});N_dQ@4kAM8b=LJCdL)kRGotQ?as?L)_3miK7Dg*_wDm1U`h|t zPf~-^PZlc?dX1%7Z!xzoT-|>7;6CuWeSh!aqy4PZFyDNnO$h{ZptH%OuxvhkzO%A) zeS2kod1dR~{qtqjWi`qU8pDQSm&SYhcfbGo>GJl*(A;#VPTDj$Eyi$+Q;F#Z=d5zb zICtktyFtV;+87p_=u}w7nG%yxjp~ep6El65R>ZOYezMoWN=+`}wQFnA$Pw}BW4&FA zclVy$8_+KAuC4EW?KJCHsX>$~BV3&m6Q7(sH@S(U)~PIxj|n5adjIWL@4tKh3+G%t`*h(`s-gl9K3wE(4KdC=Ka%cn}B{UJu&ud_jQM083^y) z-~RFIcbk`ohmeTE`+xoZu9+)#j5zVG#W9Y0@8OGAum0;l->eUq)X0U9qSt?Yzo6I8 zzu3O9devH0HTU(qH_u=E_xEdqT?oB0n^>@N|MsY5>fz1DFZvlJb)(p0ErUwoeE9KC@5T^r@yXOQ{_5kezIpNF`Kz~+h(%ft zGty!sd;fZ{Vyno@KAxVMRH^SAn!k2q?atmPcw$ksiF2dr+gI$2bJ>~cDXB>j;fcp{ zcv{=g=u``=maFZ8tY}M5+4CsnG!*Zr;BB{(k-e z#oi(tSn4BdG(HipZ@&iFF*hCm!E(6<)4BI9L`+M5k zJCMFPwM=rJ)jrO^nyH5^Yzx$@9q&TmH1!d9~N=&TJ4%%9qg~oy5zV_k8+l`&oNpQi@i=)j~6egS==NDYS zsxHVsotsyL%G9m>pxCLa#-~+{vQ8F*oOdH(s6go5WE_S&i{OcTwh38_lX?SJ^-&c^27?{`AnlJwLB|E%dN z!Lyy}PG2G2-0llY^Jf9zD3f z>ZmQq&d7`>`j#v$bPdk;;G*0}YGT{7gBN>y_wVkvaOwFenP*~%fsH_TZt5#?;-ey| z)zcdf_cvD8Ht#~`YR_hzKNA@i(sFRg%sQSB8yOiHUMMrQ3=EG>%w31i7uS>vE0Zae z^KFgC<6~l?A|fLwQv7sJE-F*n8(6F%3kPu1;HG~Xc_Ve`yk`WRf z8%-tnczJmF1%O)!rIN|9)DQwV_ww@b4z#o81BvC+mil3)XNLVO{2nY-gjScnl^YQT`_!9{JfkbjxXgD=4 z|9n|}0XaG+JAxDv z>@)+Gt90O1xvi&vaCmfVbkqmje5j8X;ba~qFgc|F{69&H%Xm_`t*f_xXlQtd;N$HT zc-V^q#wC}YU&w+rh)l#4l!~1I@~)oV0J7&{e*z^Zixdo&c23q=PF-z1jaDtxo0?i$ zS{-D4NOwW8Q9VNof%z5+Ll$D>( zN(=V!_9W-0$3=yO2m1>Ie7;=Ske(8oa#GPDI-Qdl;p64ymYyFMSu19g<>+OQ8Wt4C zCc0639!+UdsZk-`o}Qj@Clg{V0|NtnBb`zqXHJB87xs%Ye7ysS zzTN}?M`&d1xmu1&gXE_mNQ|P8f@-hlhuUdiW82j(K?;JN&u3r>8%WLiBg{0?C3%!NFu| z6g4b>5a{vw;Uk9+A9eTeAdn~oPcM*!43vdTri2BPi0()J@X4p2eRkxio0oSG+26z6 z3&0P+1v=lNan@XXjP&J_M zmb^4bsY@)hJa}0tw8HzVWN0N9T7`r(K;qD4TBVTY7td5GJu6KE(!zYbY}qoJ6|_2d zS@2g}NE-?17zclY`3hKBkS+`c3sM0r4#CT)(3<25uVq@xmZ_BUvmf4m8XNjBJT(4! zWMuT+$mpxV%iNPgul_9QoLEpP7amvSH3)J_a!Ebs*?ASLVlg=rLn1P>6SIn5%&Qir z#ZXZ)j+KOGvnUi+JcWYf6y#lEq8TX?;p2IgYLF?1Xo9-tUO5}r&Et0}%1`i*_GK`t zdz%E$Kua$Q>H}Hr4aX0Xx|nhp_jt8P8r0r_mDZd&BzXb&@sdgzS0<~MR1Jywx%mw| zLRq*#QdCvdAQTR$RP*z{aJd!y5>m3{@2V7@n962xg(U@r1%+%@?#)8x4%~{jdeSKZC{= zu>krTee(R?L7&uu+-QV-*89p!FH8d7S zEUn??xER|YnJ<;fh4}^5$H|ew#}(o`!ykw5-v0ak-_M4J-`zQT=)l2yv$OLH^E0D^ zhc7<(^HTk-ccYWY^26KLuU>te8l9f|bnnc8bL}k$TN_G_{?mW+`orfHrztwBM4!Hi{-fzPXn+lWS z<9y84u5queRQPU-Cll~kg4tTb<=Z>&-Fx}=@wMKj24Mjdhl$S4r&4x?q$eaLC+zle z`%WYCw{v|{FR!2K5tc9#;?b}yD!yp1TWUgLLhN2l;L7h{$9})_`px63HHF1YA~7{G zGCG!Px-~F5Avwu5ilY6UO<_efPh5XWTwKm8VZ zoHeU7zDa%iaBNR1@4E$(b6tKqVLxLRIR$FFKGEFzT^R+dABl|w4k z!c={6bvC1t#;z0=l?cftrDXEAX=lnyl;=b-nr`hL3N0VzVDC7r{PX3V7+ws#6vX?-8(}Hx2q*SQvjl zcJES0A)OA9Ib2cCFMo}^8y+4W9D4l;qzC#P{p-q4zn+j5Wa0?q+@k8Pvk%6X)Tc=y4<4>Qw92@{!;?$ErE?>O(0&M*Y^Rr{GkNw#H z;HKi?^xXXP$MFRvSU{kwxv7b1<>Z|5^Zj#2FCRL5;b5EW=ZOyk&tFf^%+1fuj*NmO zG(Ylo?p9Y{-=QX1dz<~%kcUry{^RGdxtYmDNjmTyug&U@#Ouh2NN%kNOP&wXm6t(sIw=2 zfSb`pe1S;hyvcU8;o0G5Z$_Tqx%k7eb{Q|5kXhX+F0v!?%Xosa{V?R}HKhYrPENo2 z{g+GavMOd?7LMOgQRjlLC@C%FIAtVjYZLysfA{^z=eN7WB5qz@9+}KxDBR5wDY*=~ zFC_Y2BdA%{+|b&2xxTElf?so@#21C>wAWg-3zLAP06)CO=DSn(&+=mGOZ8W;(b=G< zZ(?X|VrFExOJ8rTo{k&cf&Ce*qPeiSUNYr+tA@7L(>ajnN5u=XU3)`MyHe?$3Ch5K0oQc{dsgyab`-npj5r@u04HF z+F38U_NcDzX#0UvQYlw1?~;jXTR(!8GIOB5i&xpsmvr=WNINC%9o+7=`iDKjc1hpS zci{MZQ~OhW^YJqmZ(Kaw^xMg!moIev*?aYR&4IqFKlHosZ)`1I* z?wdyso~2&AAij9`#_2AgZ`HWs%%vmePM$n+LV2)Pp*VG@`dHDC6I~~cp6u!X=k)x1 ze|Oh`p4MvN*>^|F`%cNbdygM)Yien2ZI)l0R?AfNdHmC(D?KHQoGhqVB1R!t|Q6Cg&Z^x*jilOQh$T$r8$6PUTw`1_;34@)x>(1@_8 z^zuX3A3Xa!I}5(*`I#A&QZ;$;^1#j0P31H@ zo7bui6f+UQ5yY6J^7bDeJQ!ch4-`H2%N=a1h^ej4k)`P2E+PZs8Y{wGIX965XI*3GU*Q?s*^Z{JUU znivPNS5A+A_%t^$ryRR;^6-y6J!cMd$gX{S_xS$P@$vD=iHX7C>FJr7p<(6k?Z-|W zY^+tZI&Fj9dvxLI`QeEVZ=Uy`JA3P|H>1z*j>q|RH|Lj>*JORKr(1LT-d{a$M{b;w zv)E*WZ|b3cZoM)y64Y?Z1rp@CZJLpfhMwLUdDI~Rrz^(GXeYAoL?3)#wonA%zST-= z@99^MUcPyBcsRs2rsBF zm)gQAxLhvVDJy05inQPUzVr6oliyqU{4xfMl}%ygDIAPabD8-JU#jT)Z~f%bCRuaG zrP|W63SQ0eVqbVfr}e7M+l}pFu^yW2A!4Wn8^Yc>ikT4 z9*b2}2x@^sz{XNfH_HqQrVMhcTg=O0@G{Vexh$|O)qDv(A==gwo|&s=nd&JP@PiCJ zY4ltc3zT9N=Y~clSX$el*i1T|4$iWKWSr0L1Og&9B{73tz%CXtl2TpK0Vo2EnMb2S zG$*_L`wf$0eUJg}fp{9X@8=6>b4%AuKHAyS)+!7gAL{Gn>;Q)cMg+P?q7fBu|2kde zxE;~MGGC*wvoSOV<^l`a@92l{cW@4k2o1~`cy#7$y?~VAZ||zN#*RRW+~wkF5EzBW z?Dq`vv9zps{LkZ?{r^y4?oOemhEBdwSi{}>tvyk!DC=NXyIsz`U<3Yj@F@juXJKiw z&Tz}_@a_9OU5w1_EOr@g-@e7TNM3Zjwv3U-blAF9WA#Q;d$_fSo1@{@jfQ6X40jtC zxO=5Ew_%XcM1OC`^&8f?;L~GcqA>ObyLKBJ8}BvP=j>M~@5@Zux5WYFwoZG6K0Z4< zA{_1O;_l|*i_?C4JJ)zpa#Wy$)84I{_H5D8Tw#U@4-A6A;i#}c z|GT2)~2DNPwB9Txmt^@#ARh7VR(Yj~=rpijdOT=oMI>Wz^R0x4VQYjXR#X>b- z^}pzLnsvR0WFXKPw`^E z>i()gmy&|A3ZXh$AP@@ql|rFtiT>A1lvm7G$1j2>5(q#%z|sJwTa;QL1_u+!Ef5L- z&j;^ngLn}F5!H_+0{PXvfL9?F@Pwd6Ay0jn0XLzDZBG-5#GpOUKd)TGFUw4)@c1R_ z*@y*_QbL-WOLQJr-9DdJQ6UhN_?q~03iEm3TF4g`pp$Wqj!uapK92|JatehUWRjK} zlbA`Qazzyt)dg6*cT8|>UU7M8Q6Z-Y9vBp4n*oKR;C`Xx0`aM9m!d4J-7+PKp8n1b znE3Pvcv!G2EG8m66gFOFC;qDKQi3Q#S2-{xVuY)jj6jYI>p|~!#x<4hp`ED zx8H5wIr(w)mw~5Lgsqjm<)(f5yAYPv<`+Dt_Tk#NqfW!Ik+h=NKVPauw;pz#x@kn*i(A5U={mLkVNW|l@URKr? z=9Z>bmX_9zdw1w>*sk~Wavd#=(}aAB@&ZTu<2=O=_yGmiOK0{#nMUv zhenEz^Yd~y-euwvi^t-zI06Bio}QYJmX6Jr2#fQwp%h#UGQift#xD+!!{c%3I4l;M zmW0FMIRarZg-S^$#J~gXEu2E*u{a!oh$Z6H4tN}vU0)~8A&}C*&l>9D=#5Gu;M3DV zJU%rkB_%B-jV7!rr{al;X)%#Oo?iYj>X`JD)D$p}q$I#IrB!Sw6PtibLL-BHLZcH? zySuu(djNV5bocc3_Vjdhc60z!cUMQ7qFJG6?r87mRHLgKyt+C&+uPb&+dF`*qgBz= z)Y#b8(gx7}AKF@5WKD~PmL_?lT;9^$(hBa`|3gblOLb#w3y4z4>t!;TqDj%B0LGRt zPKxG+5{aU@Nug+Lkk-~oL6XMCrshQ`0GgVltO{9ueZ5RtS1Xm)H8wOf$Qzpgmb@Ap z8_LDiQosU8rL~Rq^$kn(q8CV3moKQ5$)roD0Zo8-fTck$m-91t>c&9sI%yr?L8*GV z98>{ll*<~}urfd|@^!V~vyqDk8a{Lc}kxDB~qZBM~kTDFlWH4$CeU9XWq0+-$#BW_4Ns z%+oC{g^&=1LbDyOx8gd;N? zwryU!$-rvAe<&tA)O!0ia~sQjCdRwnykkXtCud}4fT!!0?fUNNao|2E+t<)=pQ)*- zxv8}ek|S&i4cxQC5#hdZt@bu7k)D^EgD_jtzqzHGhqIHneT<8)?kdgIn#=b>+29t6 z7Hn&6VQFP%$I{Fm+>y~h0S23v1(699YBsl4P)N%nCKBVqVXn>|;Y3*EJVwpQOWA&@I-QU2DzYG#3T{1Ng3Fr1PplQ Q&B%f_QlU-BX*Bcy0ZDD}lmGw# literal 0 HcmV?d00001 diff --git a/adapters/tests/fixtures/samples/cifar10/test_batch b/adapters/tests/fixtures/samples/cifar10/test_batch new file mode 100644 index 0000000000000000000000000000000000000000..3fce5a27edbd7196aecd913ef13822a028917602 GIT binary patch literal 6380 zcmZ{o2UJt(w#R9Xj^#S`Hdc_H1VRtUFjN7lAtaO}v@{^)q>&I3LJE-3dzFq%KcXIo~?x>&g0l|GoDSYYPDlLzi#jBcllM zEI<BIdv7DS=)^>_BLQtJpko+K<4_rVXf&NkfKoZ}Y)T}P8Oh&{XA+|6G!~o5 ziDqvHwtVfiofh-875K(mLk?_p(ToDNr2*dt0^1F}HGMR8%7GpK>>0!6GYH#(ofs_* z4GoStu*+M+TQd##TOhC-+yh1vtW5&G^Y!)h`ft#_6y6$aU{937S!1V$Mpbp=rJBmR z>Z@sBnL;U?d>R%uG+NsH|;msc*T|&~W*;ngU01)(Tnr97ojE-9#O zY-*}+tna-jj&yc&4&f#yFmcgg2$%RwWoj}NhAC@pZUtv3NJ)-y^*xW2PE%uZTWuy!lFP<~p?s3+(}}S$C~I@OIAwY($vUa5w*FFM2Ozvy$qx<; z@()nv188KhhpnNPT+y3~EAObPESpqMR(2E$vB6&U7Zf@2*kE*!H{1{}8;H+t?5e0v ze4&2ZFinnpUL8s05QFrE&ua3qNE{jE zY2$cdBsBR-$EEJ-$mV9n(5o5&j|DFtuMmU<1>u8(JpDXJu%%ZM(l0lW3i6spKK5pb zI3DFgMNG8+dH?8`&`8{PeDe?`y0R&TrM!K;J+C~UsT&AuX~GNSx)T_yk!D2%qs!ZfO{AC3?w zEXjRY-!RaLi>NG&P2n=xL{=~%m+LB)dpjUJi0qu=%;()rmphY!v&z!QKB-A51*q_1 z87I!$$@Iryc?Eb@?p$l@=*kUFNL1vyr^M$CvOT4W)DR0xSSY`~4Ll8vH+#DJN~5K1 zB&}~w6baZxQQm6j-$CD&x5<8LX>gr$#x3IOfFtM;VGch)b$ZhU!Z2awyIhuo&xw#p{ z7;3B!g_;;cp>P{33&`=~_R>qT@&Edqbq)@?99qn!5Pz$pYXFSE? zpZ@!rvo+k(5(+Uf(lanLG=bVXI@w#p-I12MCykuNA3h}^%x$erO<_7!Tb-;et|uWLn7+9!!phdc&I%4OIBo3c=V`0I%kZ4J zu8D!MsiE<)Lnn?M*Mr$QI(xgBo0vGDs91-i$M;*?LQD(|4fXYo9z1^J_`bcTVCTG? ztt=rfA(Rla!)FdK=xi>7$^z&Bn@;C&5;y>zL5+)xjUz-wM&iRz3>uTo060uGjZOm+ zI4l;O!J?6gF%%*(G72Atp;77dSQZCtU{dKUCctLWBSL+BP{9$T=;$bXNF0sIpmBH! zERG;w0(M}~{n4SJ-aoiIqN0d|Xj~kV#bg3JHoz9YtYp&T{jJmf`d`S}ET+UeTIk~%YD%8S@+Ztu%pX_=IU3i7gZ70Q#M0#K+6<|n*K1MHHPN(MJ% z;=^cKwIZH=!QT|sSWpmyBx3yR^`HTx@wr!;cmgcGzb(7AEg>!{NS}YNG$X_xOGbNJ z+1QRpr1n+{1XS1ZT;`?wMF5itFSu63#UO+5Xtbx7%^1FXm=>GFJ}(m%b-Zeqa+n^a zeYrH0zo&l;0TbeRE3RpX8j_Ic6)U*f+nAY?9^+AZMJ}cWVCBo^!e@{%snrGXsPh;yl@=U9evseL-x@3w@%?k^OJ%XK1VU(zGD||a;D-%EV&cg^ zU1}QaCq@)0uxtvE5=ILni6d-zA~#!GcPx&z$C45^Qc^9va5w1N6Ac8{L=tE|Su&P(pn| zxtIG3V|;ziSwc_SdBg|>RDi;}+uhQWi!S^9U1nBg|E;lhIn~kJ+C2aj6ipyUgojcl z2HLyw8B_oG<3o-tOD<2sq6341P*_}81UVi&!6Ay~j{eq5zy9Y^I>!Hk_j$j7fWY9; z5OfF@7ZHKOhlZhvWj*O5fB&@_2M$991qTKCA%jsN;Up4)7>y&*aj4kB^cR2J#)e@+ zLy>`j0shF~kZ^oFjT#?M5h$3^!AN}G!ml~uXk2(;ATkIUj0ug5rBOh5;w4HUEh;1! z89O~MBID4JX#c<u4gHij6Ei;j-O<1olDhD^$ibV9L-sIbs*OaSV#Mayd27&4uSz8(zo<4Ef2ySI#X$FTv^v|3; zbq01?&&+spfQgx%h5lJx1DLhBB^(Afv#~JHJ#*%?;i;3RCQvgoQ-~ej+X!ZjaDn}J zA;=kSX#jzm7#QdonVG{(3}L25#`X+SgaU>r%13iS9 zL1?(Xk*%?wfw_f+xlbI{4-@DXm&pjg1bHFMPr)q=aw+yepotOO8E@~)7Zbcd?$0p< zSa-JzE>_2M?IHC!lp=-&%pw2wrGz|ToS&bE6@rn-4Ds^y^)T6OYIh~EsyPvE0qglV zEUl1{$!olbUJ*4R6iEwjDQ>PNXZpiZf9;W+J~twjy7j7q?VTI%v2%Xy{I)gk%9~hCDZ+_U=!&bec3)3A4@EI zYEdC!5b)mId?mr(6&)RowKg+*Skpb+9x4I?&&n&ZIGE6IG=fYOaU;+B-~w$RHqf7X z2gipf#60>r3O*#nGYW$zI-R1h&RJOf=R@TKOp+$Dhz}Mtb3I8EuCFQF66@gVWC@4nU%S%YTSL#kN=JJJ zvoCiQ5}bdqv$imDLwW~ZIOq05(%sJHo`SIIzt83tG>ko&=*yuxB3#i#8a*+A$6&DJ zFUGq1i-D)V|6}=LQC($eVFH-|hSNf+BrPjjrjVsI4-b!ZG^jt%m(eMdI0B0Yu!TaA zSeBtsq@`xavm~jVql&(tf4!2-P2ls`peF-(LZKuzFFQLwH?ycNGbz0(=jneu;);dI z$$S<7IzxdpRasnGP*h&p)ZbVjNfb4xelKGRq$vrTCP`&;UYlyZ@B zMU^Q^Ns+j6Ys4d9JQVOf568K_CMw*nzC93t=jnkTF-E&tP2zS{EAB3Q8ke!y~Nd42UyTl-?_wKbJWwF=&Y z^08DYSr@U!jti<9gTyNAHQx!t)8D>UQ(&mYijkz#_WfcnSt8s^4y%t z+bdu8r`~w}VR3FjrC#6I*!XmBdgbMftAm#ttLugqR4Xg0HTC+dnc3O7rM30-b@j%? z+m*$qPp6+eefIjz?EL)V;;MR`n~;>=KD(+0r(1dXad~ZiZfSP*^}Va@O-)1ZSJ&35 zqZc(!%@EhI~b;m|ye?-1N=iJ9nSHe=+sy?ew#!U^)A7_RYYR zzV4yc?5opDs_zJc3s?sin?$=Ff2Xi8k7viRcg)m=wZA1k?8?R}GP=RYid?95eW z=am-~m0zs6eC>L7=QDn1{Rh zvE5s=H1^n?+^(au^>0Uv9D@^cWlWANzx}&iI@*vQt@ZZmXlZQa)=C)^3YDuYFG;4v z@=~%J1`WYndgqB#2exWyX=}LlKe{!3^IChcfP^O}rpQX$uDTu7)YRFzcc+e)mX7AB zvIjRudnyvb0&pCmFeSI{@*onXsin1LtB$6orncs>>_@j-_$V(FkuOf<%L*Dhhr+GD z(bfVRH%((V@gm2|)+?Hom?RL2(+lgmhS4Vbc5K@MF0QSurJ-Z&VP)qJ$WjGto-`w; zvZa4G5UO|b*ug#D?cKM3-@Zd>kU!?+}2d}^2U$p`V{B*VVJn+8@1H_$U5r8=E();F6nSv!Y&l_2~9+&#j;4H?;wTUcE54IKK?u zfPK^p^XiWiy}h0F)h&C%new`Mu>JY{sj1gY zKU+~Y@!ZNiDz_w#Rniz-;K~-q$>m3rpo)SLIkUb#|N8E$7tdcle|TfGudy;eryNr8 z@YclC)RV^#CMR#)?rf=TtCuS-7N@ZoOtw&-m7Ug8Q(jtHTwGjGP*jvBO5~-AsSFN- z6iK3U_(FLum^5Oeh(roKAxWx8m&w!R$q7_KWH>G+CW@SpR&->?cSnyNIdVb|O#9uu zef-dvfb%Y{Zf+jFAu&KwdOq~KU8ayDJGO1|w`=ddL&x<`pVT*nBiut-0+t}7#^~5S zqX2jK$uImn!Szm@IH7A|;}Mx8uCmUvnF$O3a{;z?V!SQEV`d zEh%UpH{7nR^Ucnk+rQD&)Y3qRCCP#WfEMBH?1AOVvg-OLe2#Ic4#J-bz zb{#{6vP4M&Nm^cY=h*#di$goN@7TUoM@L8dn=QKz9E1Br0V0u5tSl^V9-O!zVP~p) z;`^hAK+!vN?4+TMJBG;MCnhG#Gm2{3NABJyc)OglwX(9Yu|+t#cmzd|sBC_6l2DqS zS6bILaP#iJ@V^-YEUQ$YANvdbL9e-q6DR?jSpGl%uL52F+RFMDy1%&efARmS#iiw? ziRl-Mf5rcrdU3kv$;|Sm|KCLXf5&e=snpAFo=x5zx&QWS`zHVMON*Pn9^`j@abbP_ z;q}q$U2R=c8z8YDi|g-J)1JbO0v;MTRP4?*TZpTEBT`Ip~*`2;Qo zPPK9C&Coc*$m2`!vc9(d>GS%F(f0c4vYbl`8|xb%e){l!ZfWZA%XhQW?`IcR)El4GPac5O z-)gwO0xHnE*B?}$=bm&7yd36>WElmu9dFgE>z`KC3(wW6m7jkuEyyZqyz%JaN7X=h zSXgLOO3%vY&+3)e&)>d(dF#=fDxMibtY~PMRLx&kO4FJr-!IQSzu8e=keORrQc&~Y zl@E?xR!QU5_D|ftd;j&?>!J4QBBg*U5KHoEI|g4o(S?<~Ef%EK^-j&MEPq`TOEXz%o zq-JF0<`-5{fyCt0?1JLbn#T6Nq24R)&Gi+98M5RQc}k*4nO|viMAyvH7IDte-3J}Z z7m1QZJVq>;M5NGI31ZNP+3eqEg)lmCc+c+L`;BcK96bVjF8KN(LkV1^QYcnbL5}V< z3c6r-_P~yF(dEqrE$|r%)$+RDb++!=vvaF92)R>!VQ!WpB{3H1=8geGX;q!$P6t3;*zzqHU4WGD zuy=KFbFnu!hJr6qdE$b$fm?wlV7u04^QHjkZ@xY}V_+LdVX?T<;*M)~uy8PR(frE4 zmd5w6Lpu-J1VqyrK!Qk7(l&fA2dm+OkBjaM@ WIRbfBS$+5D9pEqr6WQljAi literal 0 HcmV?d00001 diff --git a/adapters/tests/fixtures/samples/conll/sample.json b/adapters/tests/fixtures/samples/conll/sample.json new file mode 100644 index 00000000..0bc42a92 --- /dev/null +++ b/adapters/tests/fixtures/samples/conll/sample.json @@ -0,0 +1,10 @@ +{"words": ["He", "was", "the", "27th", "pitcher", "used", "by", "the", "Angels", "this", "season", ",", "tying", "a", "major-league", "record", "."], "ner": ["O", "O", "O", "O", "O", "O", "O", "O", "B-ORG", "O", "O", "O", "O", "O", "O", "O", "O"]} +{"words": ["CHICAGO", "AT", "ATLANTA"], "ner": ["B-ORG", "O", "B-LOC"]} +{"words": ["President", "Bill", "Clinton", "earlier", "this", "month", "invoked", "special", "powers", "to", "appoint", "Fowler", "during", "the", "congressional", "recess", "because", "the", "Senate", "delayed", "confirming", "his", "nomination", "."], "ner": ["O", "B-PER", "I-PER", "O", "O", "O", "O", "O", "O", "O", "O", "B-PER", "O", "O", "O", "O", "O", "O", "B-ORG", "O", "O", "O", "O", "O"]} +{"words": ["goals", "for", ",", "goals", "against", ",", "points", ")", "."], "ner": ["O", "O", "O", "O", "O", "O", "O", "O", "O"]} +{"words": ["\"", "It", "is", "one", "step", "short", "of", "an", "emergency", "situation", ",", "\"", "a", "police", "spokesman", "said", "via", "telephone", "from", "a", "command", "post", "in", "the", "bush", "."], "ner": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]} +{"words": ["U.S.", "Ambassador", "Myles", "Frechette", "applauded", "the", "move", ",", "saying", "it", "could", "prompt", "the", "Clinton", "administration", "to", "remove", "Colombia", "from", "a", "list", "of", "outcast", "nations", "that", "have", "failed", "to", "cooperate", "in", "U.S.", "counternarcotics", "efforts", "."], "ner": ["B-LOC", "O", "B-PER", "I-PER", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B-PER", "O", "O", "O", "B-LOC", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B-LOC", "O", "O", "O"]} +{"words": ["Halftime"], "ner": ["O"]} +{"words": ["It", "has", "manufacturing", "plants", "in", "San", "Diego", ";", "Creedmoor", ",", "N.C.", ";", "Hampshire", ",", "England", ";", "and", "Tijuana", ",", "Mexico", ",", "and", "distributes", "its", "prodcuts", "in", "more", "than", "120", "countries", "."], "ner": ["O", "O", "O", "O", "O", "B-LOC", "I-LOC", "O", "B-LOC", "O", "B-LOC", "O", "B-LOC", "O", "B-LOC", "O", "O", "B-LOC", "O", "B-LOC", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]} +{"words": ["Scotland", "manager", "Craig", "Brown", "said", "on", "Thursday", ":", "\"", "I", "'ve", "watched", "Duncan", "Ferguson", "in", "action", "twice", "recently", "and", "he", "'s", "bang", "in", "form", "."], "ner": ["B-LOC", "O", "B-PER", "I-PER", "O", "O", "O", "O", "O", "O", "O", "O", "B-PER", "I-PER", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]} +{"words": ["Clinton", "flew", "in", "by", "helicopter", "from", "Michigan", "City", ",", "Indiana", ",", "after", "ending", "a", "four-day", ",", "559-mile", "trip", "aboard", "a", "campaign", "train", "from", "Washington", "."], "ner": ["B-PER", "O", "O", "O", "O", "O", "B-LOC", "I-LOC", "O", "B-LOC", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B-LOC", "O"]} \ No newline at end of file diff --git a/adapters/tests/fixtures/samples/swag/sample.json b/adapters/tests/fixtures/samples/swag/sample.json new file mode 100644 index 00000000..d00ad8d1 --- /dev/null +++ b/adapters/tests/fixtures/samples/swag/sample.json @@ -0,0 +1,10 @@ +{"ending0": "passes by walking down the street playing their instruments.", "ending1": "has heard approaching them.", "ending2": "arrives and they're outside dancing and asleep.", "ending3": "turns the lead singer watches the performance.", "label": 0, "sent1": "Members of the procession walk down the street holding small horn brass instruments.", "sent2": "A drum line"} +{"ending0": "are playing ping pong and celebrating one left each in quick.", "ending1": "wait slowly towards the cadets.", "ending2": "continues to play as well along the crowd along with the band being interviewed.", "ending3": "continue to play marching, interspersed.", "label": 3, "sent1": "A drum line passes by walking down the street playing their instruments.", "sent2": "Members of the procession"} +{"ending0": "pay the other coaches to cheer as people this chatter dips in lawn sheets.", "ending1": "walk down the street holding small horn brass instruments.", "ending2": "is seen in the background.", "ending3": "are talking a couple of people playing a game of tug of war.", "label": 1, "sent1": "A group of members in green uniforms walks waving flags.", "sent2": "Members of the procession"} +{"ending0": "are playing ping pong and celebrating one left each in quick.", "ending1": "wait slowly towards the cadets.", "ending2": "makes a square call and ends by jumping down into snowy streets where fans begin to take their positions.", "ending3": "play and go back and forth hitting the drums while the audience claps for them.", "label": 3, "sent1": "A drum line passes by walking down the street playing their instruments.", "sent2": "Members of the procession"} +{"ending0": "finishes the song and lowers the instrument.", "ending1": "hits the saxophone and demonstrates how to properly use the racquet.", "ending2": "finishes massage the instrument again and continues.", "ending3": "continues dancing while the man gore the music outside while drums.", "label": 0, "sent1": "The person plays a song on the violin.", "sent2": "The man"} +{"ending0": "finishes playing then marches their tenderly.", "ending1": "walks in frame and rubs on his hands, and then walks into a room.", "ending2": "continues playing guitar while moving from the camera.", "ending3": "plays a song on the violin.", "label": 3, "sent1": "The person holds up the violin to his chin and gets ready.", "sent2": "The person"} +{"ending0": "examines the instrument in his hand.", "ending1": "stops playing the drums and waves over the other boys.", "ending2": "lights the cigarette and sticks his head in.", "ending3": "drags off the vacuum.", "label": 0, "sent1": "A person retrieves an instrument from a closet.", "sent2": "The man"} +{"ending0": "studies a picture of the man playing the violin.", "ending1": "holds up the violin to his chin and gets ready.", "ending2": "stops to speak to the camera again.", "ending3": "puts his arm around the man and backs away.", "label": 1, "sent1": "The man examines the instrument in his hand.", "sent2": "The person"} +{"ending0": "hands her another phone.", "ending1": "takes the drink, then holds it.", "ending2": "looks off then looks at someone.", "ending3": "stares blearily down at the floor.", "label": 3, "sent1": "Someone walks over to the radio.", "sent2": "Someone"} +{"ending0": "looks off then looks at someone.", "ending1": "hands her another phone.", "ending2": "takes the drink, then holds it.", "ending3": "turns on a monitor.", "label": 3, "sent1": "Someone walks over to the radio.", "sent2": "Someone"} diff --git a/adapters/tests/fixtures/samples/wmt16/sample.json b/adapters/tests/fixtures/samples/wmt16/sample.json new file mode 100644 index 00000000..8c0e47b0 --- /dev/null +++ b/adapters/tests/fixtures/samples/wmt16/sample.json @@ -0,0 +1,10 @@ +{"translation": {"en": "Membership of Parliament: see Minutes", "ro": "Componenţa Parlamentului: a se vedea procesul-verbal"}} +{"translation": {"en": "Approval of Minutes of previous sitting: see Minutes", "ro": "Aprobarea procesului-verbal al şedinţei precedente: a se vedea procesul-verbal"}} +{"translation": {"en": "Membership of Parliament: see Minutes", "ro": "Componenţa Parlamentului: a se vedea procesul-verbal"}} +{"translation": {"en": "Verification of credentials: see Minutes", "ro": "Verificarea prerogativelor: a se vedea procesul-verbal"}} +{"translation": {"en": "Documents received: see Minutes", "ro": "Depunere de documente: a se vedea procesul-verbal"}} +{"translation": {"en": "Written statements and oral questions (tabling): see Minutes", "ro": "Declaraţii scrise şi întrebări orale (depunere): consultaţi procesul-verbal"}} +{"translation": {"en": "Petitions: see Minutes", "ro": "Petiţii: a se vedea procesul-verbal"}} +{"translation": {"en": "Texts of agreements forwarded by the Council: see Minutes", "ro": "Transmiterea de către Consiliu a textelor acordurilor: a se vedea procesul-verbal"}} +{"translation": {"en": "Action taken on Parliament's resolutions: see Minutes", "ro": "Cursul dat rezoluţiilor Parlamentului: a se vedea procesul-verbal"}} +{"translation": {"en": "Agenda for next sitting: see Minutes", "ro": "Ordinea de zi a următoarei şedinţe: a se vedea procesul-verbal"}} diff --git a/adapters/tests/fixtures/samples/xsum/sample.json b/adapters/tests/fixtures/samples/xsum/sample.json new file mode 100644 index 00000000..ea6e8a8b --- /dev/null +++ b/adapters/tests/fixtures/samples/xsum/sample.json @@ -0,0 +1,10 @@ +{"document": "The warning begins at 22:00 GMT on Saturday and ends at 10:00 on Sunday.\nThe ice could lead to difficult driving conditions on untreated roads and slippery conditions on pavements, the weather service warned.\nOnly the southernmost counties and parts of the most westerly counties are expected to escape.\nCounties expected to be affected are Carmarthenshire, Powys, Ceredigion, Pembrokeshire, Denbighshire, Gwynedd, Wrexham, Conwy, Flintshire, Anglesey, Monmouthshire, Blaenau Gwent, Caerphilly, Merthyr Tydfil, Neath Port Talbot, Rhondda Cynon Taff and Torfaen.", "summary": "The Met Office has issued a yellow weather warning for ice across most of Wales."} +{"document": "You can see highlights of Sunderland v Arsenal on Match of the Day at 22:20 BST on Saturday on BBC One and the BBC Sport website.\nStoke and West Ham, for example, have started to climb away from the relegation zone but the biggest worry for Sunderland fans is that their side do not look remotely capable of doing the same.\nI know the Black Cats have got out of trouble before having found themselves in a similar situation but this time, after picking up only two points from their first nine games, things look really desperate for the only top-flight team without a win.\nAt least one element of their struggles seems to be self-inflicted, with everyone at the club feeling sorry for themselves - and not just because they have lost some players to injury and conceded some costly late goals.\nThere is a negative feeling about the place with the manager David Moyes and his players talking about how they have gone backwards since last season, when they should be searching for any kind of spark that could change things around.\nFrom the outside, looking at the way they play and their lack of creativity, it is hard to see what that spark might be or what could fundamentally change under Moyes until the January transfer window opens.\nIf they can get one win under their belt then they will get a bit of belief back but, the longer this winless run goes on, the more negativity there will be.\nMedia playback is not supported on this device\nSunderland finished last season on a high under Sam Allardyce, with a run of just one defeat in their last 11 games securing their safety.\nIn the space of five months, all of that confidence and momentum seems to have been sucked out of the club, despite them effectively having the same group of players who, not so long ago, looked inspired.\nThat is not all down to Moyes, but he has to take some responsibility for it.\nI am yet to see a defined style of play from Sunderland since he took charge at the end of July.\nThat is in contrast to Allardyce's time as manager, when they were resolute and difficult to beat and, at the end of his stint at the Stadium of Light, also played with a purpose when they went forward.\nOff the pitch, Moyes has not helped himself much either.\nThere was no need for him to be so pessimistic when he came out after the second game of the season and announced they would be in a relegation fight, which did not send out the right message to his players or the fans.\nWhen he took charge, he had actually started out by being unrealistically positive - talking about Sunderland becoming a club that regularly finished in the top half of the Premier League - but his expectations went downhill very quickly.\nI know you can argue that he has been proved right, because Sunderland are now battling the drop, but it meant there was a cloud over from them almost as soon as the season had started.\nIt seems to be a case that if you stop Jermain Defoe, you stop Sunderland. His statistics stand up well in comparison to last season, but the rest of their team are not doing enough in attack.\nThey were reliant on Defoe last season too, but others did chip in - in their first nine league games of 2015-16, five players found the net. This time around, only Defoe and Patrick van Aanholt have scored in the same period.\nIt is going to be a massive struggle for them to stay up from the position they are now in anyway, but they badly need a win and quickly. I don't see it coming at home to Arsenal on Saturday, though.\nDo they even look capable of holding out for a draw against the Gunners, the way another struggling team Middlesbrough did at Emirates Stadium last weekend? No.\nIf you struggle to make chances and score goals, as Sunderland do, that puts more pressure on your defence because you know if you concede then you are in big trouble.\nAnd the Black Cats have problems at the back as well - their only clean sheet in 12 matches under Moyes was against League One side Shrewsbury Town in the EFL Cup.\nIt does not bode well against an Arsenal side that are averaging more than two goals a game this season.\nIt is hard to find any positives from Sunderland's situation but at least they have not been cut adrift at the bottom - yet.\nUnless they win soon, that could happen. I think Hull are also in for a very tough season but when I look at the other two teams immediately above them, Boro and Swansea, they definitely have more about them than the Black Cats do.\nMedia playback is not supported on this device\nChanging manager has clearly not helped Sunderland and comparisons with his predecessor do not help Moyes much either.\nYou cannot tell me that, if Allardyce was still in charge, Sunderland would have only picked up two points so far. It just would not have happened.\nMoyes replaced him relatively late in the summer, which is difficult in itself, but he can only complain about the things that have gone against him up to a point. He should be doing much better than he is.\nHe is still the manager and he is capable of turning things around, so it is right there is no suggestion of him getting the sack.\nBut that will not last forever. This industry is results-driven and Moyes' results are not good enough.\nThat clearly has to change soon and, looking at Sunderland's next few fixtures, the one that stands out as a must-win is their home game against Hull on 19 November.\nIf they fail to beat Arsenal and Bournemouth, then the visit of the Tigers will be the game to define Moyes' tenure. If Sunderland are still without a win after that, things will become extremely difficult for him.\nChris Sutton was speaking to BBC Sport's Chris Bevan.", "summary": "We are exactly a quarter of the way through the Premier League season and some teams at the bottom of the table seem to be turning things around after making a bad start."} +{"document": "The win keeps the Candystripes two points behind leaders Dundalk who won 2-0 away to Shamrock Rovers.\nFormer Plymouth striker Patterson scored his sixth goal of the season in the 14th minute at the Brandywell.\nHe shot into an empty net after the ball broke to him when keeper Dean Delany thwarted Barry McNamee.\nKurtis Byrne should have netted a speedy equaliser but the son of former Celtic player Paul Byrne completely missed his kick in front of goal.\nThat was the one big scare for Kenny Shiels' men on a night when both keepers had a quiet night.\nDerry City have won six and drawn two in the eight games they have played since losing to Finn Harps on the first day of the season.", "summary": "Rory Patterson's early goal proved enough to give second-placed Derry City a home victory over Bohemians in Friday night's Premier Division clash."} +{"document": "The centre-right coalition led by Mr Passos Coelho won the most seats in the election on 4 October.\nBut Socialist leader Antonio Costa has been working to build a coalition with far-left parties.\nMany believe that Mr Passos Coelho will fail to pass the test of a vote of no confidence in Portugal's parliament.\nPresident Anibal Cavaco Silva would then be expected to ask the left to form a government.\nThere are fears that weeks of uncertainty could harm Portugal's economic recovery, more than a year after it exited the strict terms of its €78bn (£57bn) international bailout.\nEU officials have threatened to take action against Portugal for missing a 15 October deadline to present its draft 2016 budget.\nPortugal is still running one of the highest budget deficits in the eurozone.\n12%\nof the workforce is unemployed\n20%\nof people live below the poverty line\n485,000 emigrated from Portugal between 2011 and 2014\n125% debt to GDP - the second highest rate in the European Union\nMr Passos Coelho's Social Democrats have promised to present a budget, but the two left-wing parties campaigned strongly against his outgoing government's record of harsh austerity.\nThe Left Bloc is seen as allied to the anti-austerity Syriza party in Greece, which for months tried to renegotiate the terms of Greece's eurozone bailout.\nPortugal's Communist Party is regarded as anti-euro and anti-Nato, although it is thought to have moderated its eurozone policies in recent weeks.\nIf Mr Costa's Socialists are eventually chosen to lead a left-wing coalition, it would be the first time since the fall of Portugal's dictatorship in 1974 that a right-wing president appointed a government backed by communists.\nAfter his re-appointment as prime minister leading a right-of-centre coalition, Pedro Passos Coelho has 10 days to appoint ministers and secure parliamentary approval.\nThat may prove impossible, since his coalition lost its majority in the 4 October election and the Socialists have pledged to reject his programme if their talks with other parties succeed.\nTogether, the Socialists, Left Bloc and Communist Party have a majority. All wanted the president to appoint Mr Costa - arguing that anything else was a waste of time.\nIf Mr Passos Coelho does fail, the president could then appoint Mr Costa or keep the incumbent on as caretaker.\nFresh legislative elections may only take place from June, after voters have elected a new president early next year.", "summary": "The Portuguese president has invited incumbent Prime Minister Pedro Passos Coelho to form the next government, despite him having lost his majority."} +{"document": "Nev Edwards scored an early try for Sale, before Castres' Florian Vialelle went over, but Julien Dumora's penalty put the hosts 10-7 ahead at the break.\nJoe Ford sent over a penalty before Castres' Marc-Antoine Rallier and Sales' Will Addison were sin-binned.\nJulien Caminati's late attempt to stop Charlie Ingall saw Sale awarded the decisive penalty try.\nThe win moves the English Premiership side to within one point of Pool Two leaders Newport Gwent Dragons after three games.\nSale got off to the ideal start, Edwards sprinting away for the game's opening points from an Andrei Ostrikov kick, but Castres heaped the pressure on in search of a reply, which came through Vialelle on eight minutes.\nSharks flanker Magnus Lund was forced off with a head injury before the television match official denied Castres a second try, with replays showing that the Sharks defence did enough to force full-back Caminati into touch.\nFord had a chance to put Sale ahead again, but his penalty on 27 minutes drifted wide. Dumora, however, made no mistake soon after, slotting over to give the French side the lead on 33 minutes.\nA combination of probing grubber kicks and scrappy play eventually led to Ford teeing up his second penalty attempt, with the fly-half this time booting the three points to make it 10-10.\nRallier's yellow card following a scuffle saw Ford opt for the posts soon after, but he was off target again before Sales' one-man advantage was lost as Addison was sin-binned.\nSharks pushed for the breakthrough as Ingall went close to touching down, and the video referee eventually gave the penalty try after deciding that Caminati's attempt to stop the winger was illegal.\nCastres: Caminati; Martial, Vialelle, Combezou, Decrop; Dumora, Dupont; Taumoepeau, Rallier, Montes; Samson, Moreaux, Caballero, Diarra, Beattie.\nReplacements: Beziat, Tichit, Martinez, Desroche, Babillot, Fontaine, Lamerat, Seron.\nSale: Arscott; Edwards, Addison, Jennings, Ingall; Ford, Mitchell, Lewis-Roberts, Briggs, Mujati, Mills, Ostrikov, Lund, Seymour (capt), Easter.\nReplacements: Taylor, Flynn, Parker, Beaumont, Neild, Jeffers, James, Haley.\nReferee: David Wilkinson (Ireland)", "summary": "A late penalty try gave Sale victory over Castres at Stade Pierre-Antoine in their European Challenge Cup clash."} +{"document": "The 33-year-old was released by Norwich this summer after five years at the club, during which time he made 75 Canaries first-team appearances.\nTurner also had spells on loan at Fulham and Sheffield Wednesday during his time at Carrow Road.\nIn total, the centre-back has made 436 senior career appearances for eight different clubs.\nFind all the latest football transfers on our dedicated page.", "summary": "League One side Southend United have signed former Hull and Norwich defender Michael Turner on a one-year deal."} +{"document": "United contacted St Johnstone this week with a view to speaking to 52-year-old Wright about the job but this approach was rejected by the Saints board.\nThe Tannadice club - bottom of the Premiership - are seeking to replace Jackie McNamara, who left last month.\nDave Bowman took the first team for Saturday's loss to Partick Thistle.\nThe Tangerines have won only once this season and prop up the table with five points from 10 games.\nFormer Northern Ireland goalkeeper Wright, who replaced Steve Lomas at McDiarmid Park in 2013, led St Johnstone to Scottish Cup success in his first season in charge.\nHe has also secured two successive top-six finishes for the Perth side and previously managed in his homeland.", "summary": "St Johnstone boss Tommy Wright is no longer under consideration for the Dundee United manager's job, BBC Scotland has learned."} +{"document": "Media playback is unsupported on your device\n2 November 2014 Last updated at 17:20 GMT\nHomes and businesses were damaged in the storm, but weather experts were not able to confirm it was a tornado.\nNavtej Johal reports.", "summary": "Residents in Coalville in Leicestershire are cleaning up after high winds hit the town."} +{"document": "5 August 2015 Last updated at 06:36 BST\nShe's now 84 and has been telling Newsround the inspiring story of her life before and after that devastating and world-changing event.\nThis animation contains some sad moments that you might find upsetting.\nYou can find out more about what happened in Hiroshima here.\nWatch 'Hiroshima: A Newsround Special' - Thursday 6 August at 5.30pm on the CBBC channel and on the Newsround website.", "summary": "Bun Hashizume was 14 years old and lived in Hiroshima, in Japan, when a nuclear bomb was dropped on the city 70 years ago, at the end of World War Two."} +{"document": "But what has been your moment of the year?\nFrom Ben Stokes' 258 off 198 balls against South Africa to Stuart Broad's 6-17 against the same opponents, and Alastair Cook being the first Englishman to reach 10,000 Test runs, there are lots of highlights.\nOr perhaps you revelled in Australia being skittled for just 85? Or the dog that invaded the pitch at Vizag?\nThe cricket brains of BBC Sport and BBC Radio 5 live asked you to rank your top 10, and your shortlist will be revealed on Tuesday's Tuffers and Vaughan Cricket Show (20:30 GMT, BBC Radio 5 live and online).\nVotes will no longer count but you can still pick your top 10 and share with friends.\nWhat are your top 10 cricketing moments from this year?", "summary": "It's been topsy-turvy for the England side but eventful and entertaining nonetheless."} diff --git a/adapters/tests/fixtures/tests_samples/COCO/coco_annotations.txt b/adapters/tests/fixtures/tests_samples/COCO/coco_annotations.txt new file mode 100644 index 00000000..bd8c86a9 --- /dev/null +++ b/adapters/tests/fixtures/tests_samples/COCO/coco_annotations.txt @@ -0,0 +1 @@ +[{"segmentation": [[333.96, 175.14, 338.26, 134.33, 342.55, 95.67, 348.99, 79.57, 368.32, 80.64, 371.54, 91.38, 364.03, 106.41, 356.51, 145.07, 351.14, 166.55, 350.07, 184.8, 345.77, 185.88, 332.89, 178.36, 332.89, 172.99]], "area": 2120.991099999999, "iscrowd": 0, "image_id": 39769, "bbox": [332.89, 79.57, 38.65, 106.31], "category_id": 75, "id": 1108446}, {"segmentation": [[44.03, 86.01, 112.75, 74.2, 173.96, 77.42, 175.03, 89.23, 170.74, 98.9, 147.11, 102.12, 54.77, 119.3, 53.69, 119.3, 44.03, 113.93, 41.88, 94.6, 41.88, 94.6]], "area": 4052.607, "iscrowd": 0, "image_id": 39769, "bbox": [41.88, 74.2, 133.15, 45.1], "category_id": 75, "id": 1110067}, {"segmentation": [[1.08, 473.53, 633.17, 473.53, 557.66, 376.45, 535.01, 366.74, 489.71, 305.26, 470.29, 318.2, 456.27, 351.64, 413.12, 363.51, 376.45, 358.11, 348.4, 350.56, 363.51, 331.15, 357.03, 288.0, 353.8, 257.8, 344.09, 190.92, 333.3, 177.98, 345.17, 79.82, 284.76, 130.52, 265.35, 151.01, 308.49, 189.84, 317.12, 215.73, 293.39, 243.78, 269.66, 212.49, 235.15, 199.55, 214.65, 193.08, 187.69, 217.89, 159.64, 278.29, 135.91, 313.89, 169.35, 292.31, 203.87, 281.53, 220.04, 292.31, 220.04, 307.42, 175.82, 345.17, 155.33, 360.27, 105.71, 363.51, 85.21, 374.29, 74.43, 366.74, 70.11, 465.98, 42.07, 471.37, 33.44, 457.35, 34.52, 414.2, 29.12, 368.9, 9.71, 291.24, 46.38, 209.26, 99.24, 128.36, 131.6, 107.87, 50.7, 117.57, 40.99, 103.55, 40.99, 85.21, 60.4, 77.66, 141.3, 70.11, 173.66, 72.27, 174.74, 92.76, 204.94, 72.27, 225.44, 62.56, 262.11, 56.09, 292.31, 53.93, 282.61, 81.98, 298.79, 96.0, 310.65, 102.47, 348.4, 74.43, 373.21, 81.98, 430.38, 35.6, 484.31, 23.73, 540.4, 46.38, 593.26, 66.88, 638.56, 80.9, 632.09, 145.62, 581.39, 118.65, 543.64, 130.52, 533.93, 167.19, 512.36, 197.39, 498.34, 218.97, 529.62, 253.48, 549.03, 273.98, 584.63, 276.13, 587.87, 293.39, 566.29, 305.26, 531.78, 298.79, 549.03, 319.28, 576.0, 358.11, 560.9, 376.45, 639.64, 471.37, 639.64, 2.16, 1.08, 0.0]], "area": 176277.55269999994, "iscrowd": 0, "image_id": 39769, "bbox": [1.08, 0.0, 638.56, 473.53], "category_id": 63, "id": 1605237}, {"segmentation": [[1.07, 1.18, 640.0, 3.33, 638.93, 472.59, 4.3, 479.03]], "area": 301552.6694999999, "iscrowd": 0, "image_id": 39769, "bbox": [1.07, 1.18, 638.93, 477.85], "category_id": 65, "id": 1612051}, {"segmentation": [[138.75, 319.38, 148.75, 294.38, 165.0, 246.87, 197.5, 205.63, 247.5, 203.13, 268.75, 216.88, 280.0, 239.38, 293.75, 244.38, 303.75, 241.88, 307.5, 228.13, 318.75, 220.63, 315.0, 200.63, 291.25, 171.88, 265.0, 156.88, 258.75, 148.13, 262.5, 135.63, 282.5, 123.13, 292.5, 115.63, 311.25, 108.13, 313.75, 106.88, 296.25, 93.13, 282.5, 84.38, 292.5, 64.38, 288.75, 60.63, 266.25, 54.38, 232.5, 63.12, 206.25, 70.63, 170.0, 100.63, 136.25, 114.38, 101.25, 138.13, 56.25, 194.38, 27.5, 259.38, 17.5, 299.38, 32.5, 378.13, 31.25, 448.13, 41.25, 469.38, 66.25, 466.88, 70.0, 419.38, 71.25, 391.88, 77.5, 365.63, 113.75, 364.38, 145.0, 360.63, 168.75, 349.38, 191.25, 330.63, 212.5, 319.38, 223.75, 305.63, 206.25, 286.88, 172.5, 288.13]], "area": 53301.618749999994, "iscrowd": 0, "image_id": 39769, "bbox": [17.5, 54.38, 301.25, 415.0], "category_id": 17, "id": 2190839}, {"segmentation": [[543.75, 136.88, 570.0, 114.38, 591.25, 123.13, 616.25, 140.63, 640.0, 143.13, 636.25, 124.37, 605.0, 103.13, 640.0, 103.13, 633.75, 86.88, 587.5, 73.13, 548.75, 49.38, 505.0, 35.63, 462.5, 25.63, 405.0, 48.13, 362.5, 111.88, 347.5, 179.38, 355.0, 220.63, 356.25, 230.63, 365.0, 264.38, 358.75, 266.88, 358.75, 270.63, 356.25, 291.88, 356.25, 325.63, 355.0, 338.13, 350.0, 348.13, 365.0, 354.38, 396.25, 351.88, 423.75, 355.63, 446.25, 350.63, 460.0, 345.63, 462.5, 321.88, 468.75, 306.88, 481.25, 299.38, 516.25, 341.88, 536.25, 368.13, 570.0, 369.38, 578.75, 359.38, 555.0, 330.63, 532.5, 298.13, 563.75, 299.38, 582.5, 298.13, 586.25, 286.88, 578.75, 278.13, 548.75, 269.38, 525.0, 256.88, 505.0, 206.88, 536.25, 161.88, 540.0, 149.38]], "area": 59700.95625, "iscrowd": 0, "image_id": 39769, "bbox": [347.5, 25.63, 292.5, 343.75], "category_id": 17, "id": 2190842}] \ No newline at end of file diff --git a/adapters/tests/fixtures/tests_samples/COCO/coco_panoptic_annotations.txt b/adapters/tests/fixtures/tests_samples/COCO/coco_panoptic_annotations.txt new file mode 100644 index 00000000..90a9798b --- /dev/null +++ b/adapters/tests/fixtures/tests_samples/COCO/coco_panoptic_annotations.txt @@ -0,0 +1 @@ +[{"id": 8222595, "category_id": 17, "iscrowd": 0, "bbox": [18, 54, 301, 415], "area": 53306}, {"id": 8225432, "category_id": 17, "iscrowd": 0, "bbox": [349, 26, 291, 343], "area": 59627}, {"id": 8798150, "category_id": 63, "iscrowd": 0, "bbox": [1, 0, 639, 474], "area": 174579}, {"id": 14466198, "category_id": 75, "iscrowd": 0, "bbox": [42, 74, 133, 45], "area": 4068}, {"id": 12821912, "category_id": 75, "iscrowd": 0, "bbox": [333, 80, 38, 106], "area": 2118}, {"id": 10898909, "category_id": 93, "iscrowd": 0, "bbox": [0, 0, 640, 480], "area": 2750}] \ No newline at end of file diff --git a/adapters/tests/methods/__init__.py b/adapters/tests/methods/__init__.py new file mode 100644 index 00000000..b1cbe52d --- /dev/null +++ b/adapters/tests/methods/__init__.py @@ -0,0 +1,26 @@ +# flake8: noqa +# There's no way to ignore "F401 '...' imported but unused" warnings in this +# module, but to preserve other warnings. So, don't check this module at all. + +# Copyright 2020 The Adapter-Hub Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .base import create_twin_models +from .test_adapter_common import BottleneckAdapterTestMixin +from .test_compacter import CompacterTestMixin +from .test_ia3 import IA3TestMixin +from .test_lora import LoRATestMixin +from .test_prefix_tuning import PrefixTuningTestMixin +from .test_prompt_tuning import PromptTuningTestMixin +from .test_unipelt import UniPELTTestMixin diff --git a/adapters/tests/methods/base.py b/adapters/tests/methods/base.py new file mode 100644 index 00000000..67d8e269 --- /dev/null +++ b/adapters/tests/methods/base.py @@ -0,0 +1,364 @@ +import copy +import os +import tempfile + +import torch + +import adapters +from adapters import ADAPTER_MODEL_MAPPING, AdapterSetup, AdapterTrainer, AutoAdapterModel +from adapters.heads import CausalLMHead +from adapters.utils import WEIGHTS_NAME +from adapters.wrappers import load_model +from transformers import TrainingArguments +from transformers.testing_utils import require_torch, torch_device + + +def create_twin_models(model_class, config_creator=None): + if config_creator and model_class.__name__.startswith("Auto"): + model_config = config_creator() + model1 = model_class.from_config(model_config) + elif config_creator: + model_config = config_creator() + model1 = model_class(model_config) + else: + model_config = model_class.config_class() + model1 = model_class(model_config) + adapters.init(model1) + model1.eval() + # create a twin initialized with the same random weights + model2 = copy.deepcopy(model1) + model2.eval() + return model1, model2 + + +@require_torch +class AdapterMethodBaseTestMixin: + """Provides base test running methods for testing an adapter method implementation.""" + + def filter_parameters(self, model, filter_keys): + return {k: v for (k, v) in model.named_parameters() if any([filter_key in k for filter_key in filter_keys])} + + def run_add_test(self, model, adapter_config, filter_keys): + model.eval() + + name = "test_adapter_" + adapter_config.__class__.__name__ + model.add_adapter(name, config=adapter_config) + model.set_active_adapters([name]) + model.to(torch_device) + + # adapter is correctly added to config + self.assertTrue(name in model.adapters_config) + self.assertEqual(adapter_config, model.adapters_config.get(name)) + + # check that weights are available and active + has_weights = False + filter_keys = [k.format(name=name) for k in filter_keys] + for k, v in self.filter_parameters(model, filter_keys).items(): + has_weights = True + self.assertTrue(v.requires_grad, k) + self.assertTrue(has_weights) + + def run_leave_out_test(self, model, adapter_config, leave_out): + model.eval() + + adapter_config = adapter_config.replace(leave_out=leave_out) + name = "test_adapter_" + adapter_config.__class__.__name__ + model.add_adapter(name, config=adapter_config) + model.set_active_adapters([name]) + + # adapter is correctly added to config + self.assert_adapter_available(model, name) + + adapter = model.get_adapter(name) + + self.assertNotEqual(len(adapter), 0) + found_layers = list(adapter.keys()) + for layer in leave_out: + self.assertNotIn(layer, found_layers) + + model.delete_adapter(name) + + def run_average_test(self, model, adapter_config, filter_keys): + model.eval() + + weights = [0.1, 0.6, 0.3] + + # add adapters to average + name = "test_adapter_" + adapter_config.__class__.__name__ + for i in range(len(weights)): + model.add_adapter(name + f"_{i}", config=adapter_config) + + # collect weighted average of adapter weights + averaged_weights = {} + for i, w in enumerate(weights): + this_filter_keys = [k.format(name=name + f"_{i}") for k in filter_keys] + for k, v in self.filter_parameters(model, this_filter_keys).items(): + base_k = k.replace(name + f"_{i}", name) + if base_k not in averaged_weights: + averaged_weights[base_k] = w * v + else: + averaged_weights[base_k] += w * v + + # average adapters + model.average_adapter(name, [name + f"_{i}" for i in range(len(weights))], weights=weights) + + # adapter is correctly added to config + self.assertTrue(name in model.adapters_config) + self.assertEqual(adapter_config, model.adapters_config.get(name)) + + # compare averaged weights to collected weights + this_filter_keys = [k.format(name=name) for k in filter_keys] + for k, v in self.filter_parameters(model, this_filter_keys).items(): + self.assertTrue(torch.allclose(v, averaged_weights[k]), k) + + def run_delete_test(self, model, adapter_config, filter_keys): + model.eval() + + name = "test_adapter_" + adapter_config.__class__.__name__ + model.add_adapter(name, config=adapter_config) + model.set_active_adapters([name]) + model.to(torch_device) + + # adapter is correctly added to config + self.assert_adapter_available(model, name) + + # remove the adapter again + model.delete_adapter(name) + self.assert_adapter_unavailable(model, name) + + # check that weights are available and active + has_weights = False + filter_keys = [k.format(name=name) for k in filter_keys] + for k, v in self.filter_parameters(model, filter_keys).items(): + has_weights = True + self.assertFalse(has_weights) + + def run_get_test(self, model, adapter_config, num_expected_modules): + model.eval() + + model.add_adapter("first", config=adapter_config) + model.set_active_adapters(["first"]) + + # adapter is correctly added to config + name = "first" + self.assert_adapter_available(model, name) + + adapter = model.get_adapter("first") + + self.assertNotEqual(len(adapter), 0) + num_found_modules = sum([len(layer_modules) for layer_modules in adapter.values()]) + self.assertEqual(num_expected_modules, num_found_modules) + + model.delete_adapter("first") + + def run_forward_test(self, model, adapter_config): + model.eval() + + name = adapter_config.__class__.__name__ + model.add_adapter(name, config=adapter_config) + model.to(torch_device) + + input_data = self.get_input_samples(config=model.config) + + # pass 1: set adapter via property + model.set_active_adapters([name]) + output_1 = model(**input_data) + + # pass 2: set via context + # unset and make sure it's unset + model.set_active_adapters(None) + self.assertEqual(None, model.active_adapters) + with AdapterSetup(name): + output_2 = model(**input_data) + + # pass 3: base output + model.set_active_adapters(None) + base_output = model(**input_data) + + self.assertEqual(len(output_1), len(output_2)) + self.assertTrue(torch.equal(output_1[0], output_2[0])) + self.assertGreaterEqual(len(output_1), len(base_output)) + self.assertFalse(torch.equal(output_1[0], base_output[0])) + + def run_load_test(self, adapter_config): + model1, model2 = create_twin_models(self.model_class, self.config) + + name = "dummy_adapter" + model1.add_adapter(name, config=adapter_config) + model1.set_active_adapters([name]) + with tempfile.TemporaryDirectory() as temp_dir: + model1.save_adapter(temp_dir, name) + + # Check that there are actually weights saved + weights = torch.load(os.path.join(temp_dir, WEIGHTS_NAME), map_location="cpu") + self.assertTrue(len(weights) > 0) + + # also tests that set_active works + loading_info = {} + model2.load_adapter(temp_dir, set_active=True, loading_info=loading_info) + + # check if all weights were loaded + self.assertEqual(0, len(loading_info["missing_keys"])) + self.assertEqual(0, len(loading_info["unexpected_keys"])) + + # check if adapter was correctly loaded + self.assertTrue(name in model2.adapters_config) + + # check equal output + input_data = self.get_input_samples(config=model1.config) + model1.to(torch_device) + model2.to(torch_device) + output1 = model1(**input_data) + output2 = model2(**input_data) + self.assertEqual(len(output1), len(output2)) + self.assertTrue(torch.allclose(output1[0], output2[0], atol=1e-4)) + + def run_full_model_load_test(self, adapter_config): + model1 = self.get_model() + model1.eval() + + name = "dummy" + model1.add_adapter(name, config=adapter_config) + with tempfile.TemporaryDirectory() as temp_dir: + model1.save_pretrained(temp_dir) + + model2, loading_info = load_model(temp_dir, self.model_class, output_loading_info=True) + + # check if all weights were loaded + self.assertEqual(0, len(loading_info["missing_keys"])) + self.assertEqual(0, len(loading_info["unexpected_keys"])) + + # check if adapter was correctly loaded + self.assertTrue(name in model2.adapters_config) + + # check equal output + input_data = self.get_input_samples(config=model1.config) + model1.to(torch_device) + model2.to(torch_device) + with AdapterSetup(name): + output1 = model1(**input_data) + output2 = model2(**input_data) + self.assertEqual(len(output1), len(output2)) + self.assertTrue(torch.equal(output1[0], output2[0])) + + def trainings_run(self, model, lr=1.0, steps=8): + # setup dataset + train_dataset = self.dataset() + + training_args = TrainingArguments( + output_dir="./examples", + do_train=True, + learning_rate=lr, + max_steps=steps, + no_cuda=True, + per_device_train_batch_size=2, + remove_unused_columns=False, + ) + + # evaluate + trainer = AdapterTrainer( + model=model, + args=training_args, + train_dataset=train_dataset, + ) + trainer.train() + + def run_train_test(self, adapter_config, filter_keys): + if not self.do_run_train_tests: + self.skipTest("Skipping training tests. Set `do_run_train_tests=True` to run them.") + if self.config_class not in ADAPTER_MODEL_MAPPING: + self.skipTest("Does not support flex heads.") + model = AutoAdapterModel.from_config(self.config()) + + # add two adapters: one will be trained and the other should be frozen + model.add_adapter("mrpc", config=adapter_config) + model.add_adapter("dummy", config=adapter_config) + self.add_head(model, "mrpc") + + self.assert_adapter_available(model, "mrpc") + self.assert_adapter_available(model, "dummy") + + # train the mrpc adapter -> should be activated & unfreezed + model.train_adapter("mrpc") + self.assertEqual(set(["mrpc"]), model.active_adapters.flatten()) + + # all weights of the adapter should be activated + has_weights = False + filter_keys_trained = [k.format(name="mrpc") for k in filter_keys] + for k, v in self.filter_parameters(model, filter_keys_trained).items(): + has_weights = True + self.assertTrue(v.requires_grad, k) + self.assertTrue(has_weights) + # all weights of the adapter not used for training should be frozen + filter_keys_untrained = [k.format(name="dummy") for k in filter_keys] + for k, v in self.filter_parameters(model, filter_keys_untrained).items(): + self.assertFalse(v.requires_grad, k) + + state_dict_pre = copy.deepcopy(model.state_dict()) + + self.trainings_run(model) + + # check that the adapters have changed, but the base model has not + adapters_with_change, base_with_change = False, False + # check whether the key corresponds to a tied embedding + + def has_tied_embeddings(k): + tied_embeddings = hasattr(model.config, "tie_word_embeddings") and model.config.tie_word_embeddings + is_tied_layer = ( + isinstance(model.heads["mrpc"], CausalLMHead) + and "heads.{}.{}.weight".format("mrpc", len(model.heads["mrpc"]._modules) - 1) in k + ) + return tied_embeddings and is_tied_layer + + for (k1, v1), (k2, v2) in zip(state_dict_pre.items(), model.state_dict().items()): + if "mrpc" in k1 and not has_tied_embeddings(k1): + adapters_with_change |= not torch.equal(v1, v2) + else: + base_with_change |= not torch.equal(v1, v2) + self.assertTrue(adapters_with_change) + self.assertFalse(base_with_change) + + def run_merge_test(self, adapter_config): + model = self.get_model() + model.eval() + model.add_adapter("test_lora", config=adapter_config) + model.to(torch_device) + + input_data = self.get_input_samples(config=model.config) + + # forward in training mode + model.set_active_adapters(["test_lora"]) + output_1 = model(**input_data) + + # forward in merged mode + model.set_active_adapters(None) + model.merge_adapter("test_lora") + model.to(torch_device) + model.eval() + output_2 = model(**input_data) + + # check forward pass + self.assertEqual(len(output_1), len(output_2)) + self.assertTrue(torch.allclose(output_1[0], output_2[0], atol=1e-3)) + + def run_reset_test(self, adapter_config): + model = self.get_model() + model.eval() + model.add_adapter("test_lora", config=adapter_config) + model.to(torch_device) + + input_data = self.get_input_samples(config=model.config) + + # before merging + output_1 = model(**input_data) + + # merge & reset + model.merge_adapter("test_lora") + model.reset_adapter() + + # after merging + output_2 = model(**input_data) + + # check forward pass + self.assertEqual(len(output_1), len(output_2)) + self.assertTrue(torch.allclose(output_1[0], output_2[0], atol=1e-3)) diff --git a/adapters/tests/methods/test_adapter_common.py b/adapters/tests/methods/test_adapter_common.py new file mode 100644 index 00000000..8d78c88e --- /dev/null +++ b/adapters/tests/methods/test_adapter_common.py @@ -0,0 +1,474 @@ +import copy +import tempfile + +import torch + +import adapters +from adapters import ( + ADAPTER_CONFIG_MAP, + ADAPTER_MODEL_MAPPING, + AutoAdapterModel, + BatchSplit, + DoubleSeqBnConfig, + DoubleSeqBnInvConfig, + Fuse, + InvertibleAdaptersMixin, + InvertibleAdaptersWrapperMixin, + MAMConfig, + SeqBnConfig, + SeqBnInvConfig, +) +from adapters.heads.language_modeling import CausalLMHead +from transformers import MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING, CLIPConfig +from transformers.testing_utils import require_torch, torch_device + +from .base import AdapterMethodBaseTestMixin, create_twin_models + + +@require_torch +class BottleneckAdapterTestMixin(AdapterMethodBaseTestMixin): + adapter_configs_to_test = [ + (SeqBnConfig(), ["adapters.{name}."]), + (MAMConfig(), ["adapters.{name}.", "prefix_tunings.{name}."]), + ] + + inv_adapter_configs_to_test = [ + (SeqBnInvConfig(), ["invertible_adapters.{name}"]), + (DoubleSeqBnInvConfig(), ["invertible_adapters.{name}"]), + ] + + def test_add_adapter(self): + model = self.get_model() + model.eval() + + for adapter_config, filter_keys in self.adapter_configs_to_test: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + self.run_add_test(model, adapter_config, filter_keys) + + def test_leave_out_adapter(self): + model = self.get_model() + model.eval() + + for adapter_config, _ in self.adapter_configs_to_test: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + self.run_leave_out_test(model, adapter_config, self.leave_out_layers) + + def test_average_adapter(self): + model = self.get_model() + model.eval() + + for adapter_config, filter_keys in self.adapter_configs_to_test: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + self.run_average_test(model, adapter_config, filter_keys) + + def test_delete_adapter(self): + model = self.get_model() + model.eval() + + for adapter_config, filter_keys in self.adapter_configs_to_test: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + self.run_delete_test(model, adapter_config, filter_keys) + + def test_add_adapter_with_invertible(self): + model = self.get_model().base_model + model.eval() + if not isinstance(model, InvertibleAdaptersMixin) and not isinstance(model, InvertibleAdaptersWrapperMixin): + self.skipTest("Model does not support invertible adapters.") + + for adapter_config in [SeqBnInvConfig(), DoubleSeqBnInvConfig()]: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + name = adapter_config.__class__.__name__ + model.add_adapter(name, config=adapter_config) + model.set_active_adapters([name]) + + # adapter is correctly added to config + self.assertTrue(name in model.adapters_config) + self.assertEqual(adapter_config, model.adapters_config.get(name)) + + # invertible adapter is correctly added and returned + self.assertTrue(name in model.invertible_adapters) + self.assertEqual(model.invertible_adapters[name], model.get_invertible_adapter()) + + # all invertible adapter weights should be activated for training + for param in model.invertible_adapters[name].parameters(): + self.assertTrue(param.requires_grad) + + # Set a hook before the invertible adapter to make sure it's actually called twice: + # Once after the embedding layer and once in the prediction head. + calls = 0 + + def forward_pre_hook(module, input): + nonlocal calls + calls += 1 + + model.get_invertible_adapter().register_forward_pre_hook(forward_pre_hook) + + # check forward pass + input_data = self.get_input_samples(config=model.config) + model.to(torch_device) + adapter_output = model(**input_data) + # make sure the output is different without invertible adapter + del model.invertible_adapters[name] + self.assertFalse(name in model.invertible_adapters) + adapter_output_no_inv = model(**input_data) + self.assertEqual(len(adapter_output), len(adapter_output_no_inv)) + self.assertFalse(torch.equal(adapter_output[0], adapter_output_no_inv[0])) + # We expect one call to invertible adapter + self.assertEqual(1, calls) + + def test_delete_adapter_with_invertible(self): + """Tests if the invertible adapters are deleted correctly.""" + model = self.get_model().base_model + model.eval() + if not isinstance(model, InvertibleAdaptersMixin) and not isinstance(model, InvertibleAdaptersWrapperMixin): + self.skipTest("Model does not support invertible adapters.") + + # iterate through all adapter invertible adapter configs + for adapter_config, filter_keys in self.inv_adapter_configs_to_test: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + name = adapter_config.__class__.__name__ + model.add_adapter(name, config=adapter_config) + model.set_active_adapters([name]) + + # check if adapter is correctly added to config + self.assert_adapter_available(model, name) + # remove the adapter again + model.delete_adapter(name) + + # check if adapter is correctly removed from the model + self.assert_adapter_unavailable(model, name) + + # check additionally if invertible adapter is removed correctly from the model + self.assertFalse(name in model.invertible_adapters) + self.assertEqual(None, model.get_invertible_adapter()) + + # check that weights are available and active + has_weights = False + filter_keys = [k.format(name=name) for k in filter_keys] + for k, v in self.filter_parameters(model, filter_keys).items(): + has_weights = True + self.assertFalse(has_weights) + + def test_get_adapter(self): + model = self.get_model() + model.eval() + n_layers = len(list(model.iter_layers())) + if model.config.is_encoder_decoder: + n_prefix_layers = 3 + elif model.config.is_composition or isinstance(model.config, CLIPConfig): + n_prefix_layers = 2 + else: + n_prefix_layers = 1 + + for adapter_config, n_expected in [ + (DoubleSeqBnConfig(), n_layers * 2), + (MAMConfig(), n_layers + n_prefix_layers), + ]: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + self.run_get_test(model, adapter_config, n_expected) + + def test_add_adapter_multiple_reduction_factors(self): + model = self.get_model() + model.eval() + reduction_factor = {"1": 1, "default": 2} + for adapter_config in [ + SeqBnConfig(reduction_factor=reduction_factor), + DoubleSeqBnConfig(reduction_factor=reduction_factor), + ]: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + name = adapter_config.__class__.__name__ + model.add_adapter(name, config=adapter_config) + model.set_active_adapters([name]) + + # adapter is correctly added to config + self.assertTrue(name in model.adapters_config) + self.assertEqual(adapter_config, model.adapters_config.get(name)) + + adapter = model.get_adapter(name) + + self.assertEqual( + adapter[0]["output_adapter"].adapter_down[0].in_features + / adapter[0]["output_adapter"].adapter_down[0].out_features, + reduction_factor["default"], + ) + self.assertEqual( + adapter[1]["output_adapter"].adapter_down[0].in_features + / adapter[1]["output_adapter"].adapter_down[0].out_features, + reduction_factor["1"], + ) + + def test_reduction_factor_no_default(self): + model = self.get_model() + model.eval() + reduction_factor = {"2": 8, "4": 32} + for adapter_config in [ + SeqBnConfig(reduction_factor=reduction_factor), + DoubleSeqBnConfig(reduction_factor=reduction_factor), + ]: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + name = adapter_config.__class__.__name__ + with self.assertRaises(KeyError): + model.add_adapter(name, config=adapter_config) + + def test_adapter_forward(self): + model = self.get_model() + model.eval() + + for adapter_config, _ in self.adapter_configs_to_test: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + self.run_forward_test(model, adapter_config) + + def test_invertible_adapter_forward(self): + model = self.get_model() + model.eval() + + for adapter_config, _ in self.inv_adapter_configs_to_test: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + self.run_forward_test(model, adapter_config) + + def test_load_adapter(self): + self.run_load_test(SeqBnConfig()) + + def test_load_mam_adapter(self): + self.run_load_test(MAMConfig()) + + def test_load_full_model_adapter(self): + self.run_full_model_load_test(SeqBnConfig()) + + def test_model_config_serialization(self): + """PretrainedConfigurations should not raise an Exception when serializing the config dict + + See, e.g., PretrainedConfig.to_json_string() + """ + for k, v in ADAPTER_CONFIG_MAP.items(): + model = self.get_model() + # HACK: reduce the reduction factor such that + # the small test model can have a phm_dim of 4 + if hasattr(v, "phm_layer") and v.phm_layer: + v = v.__class__(reduction_factor=4) + model.add_adapter("test", config=v) + # should not raise an exception + model.config.to_json_string() + + def test_model_adapter_summary(self): + # count model parameters before + model = self.get_model() + model_no_params = sum(p.numel() for p in model.parameters()) + for k, v in ADAPTER_CONFIG_MAP.items(): + # HACK: reduce the reduction factor such that + # the small test model can have a phm_dim of 4 + if hasattr(v, "phm_layer") and v.phm_layer: + v = v.__class__(reduction_factor=4) + model.add_adapter(k, config=v) + summary = model.adapter_summary(as_dict=True) + self.assertEqual(len(ADAPTER_CONFIG_MAP) + 1, len(summary)) + for name in ADAPTER_CONFIG_MAP.keys(): + self.assertTrue(any([row["name"] == name for row in summary])) + self.assertEqual(model_no_params, summary[-1]["#param"]) + + def test_loading_adapter_weights_with_prefix(self): + if self.config_class not in ADAPTER_MODEL_MAPPING: + self.skipTest("Does not support flex heads.") + + model_base, model_with_head = create_twin_models(self.model_class, self.config) + model_base = model_base.base_model # use base model w/o prefix + + model_with_head.add_adapter("dummy") + + with tempfile.TemporaryDirectory() as temp_dir: + model_with_head.save_adapter(temp_dir, "dummy") + + loading_info = {} + model_base.load_adapter(temp_dir, loading_info=loading_info) + + self.assertEqual(0, len(loading_info["missing_keys"])) + self.assertEqual(0, len(loading_info["unexpected_keys"])) + + # check equal output + input_data = self.get_input_samples(config=model_with_head.config) + model_with_head.to(torch_device) + model_base.to(torch_device) + output1 = model_with_head(**input_data) + output2 = model_base(**input_data) + self.assertEqual(len(output1), len(output2)) + self.assertTrue(torch.equal(output1[0], output2[0])) + + def test_loading_adapter_weights_without_prefix(self): + if self.config_class not in ADAPTER_MODEL_MAPPING: + self.skipTest("Does not support flex heads.") + + model_base, model_with_head = create_twin_models(self.model_class, self.config) + model_base = model_base.base_model # use base model w/o prefix + + model_base.add_adapter("dummy") + + with tempfile.TemporaryDirectory() as temp_dir: + model_base.save_adapter(temp_dir, "dummy") + + loading_info = {} + model_with_head.load_adapter(temp_dir, loading_info=loading_info) + + self.assertEqual(0, len(loading_info["missing_keys"])) + self.assertEqual(0, len(loading_info["unexpected_keys"])) + + # check equal output + input_data = self.get_input_samples(config=model_with_head.config) + model_with_head.to(torch_device) + model_base.to(torch_device) + output1 = model_with_head(**input_data) + output2 = model_base(**input_data) + self.assertEqual(len(output1), len(output2)) + self.assertTrue(torch.equal(output1[0], output2[0])) + + def test_forward_with_past(self): + if self.config_class not in ADAPTER_MODEL_MAPPING: + self.skipTest("Does not support flex heads.") + if self.config_class not in MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING: + self.skipTest("No causal lm class.") + + static_model = MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING[self.config_class](self.config()) + adapters.init(static_model) + flex_model = AutoAdapterModel.from_pretrained(None, config=self.config(), state_dict=static_model.state_dict()) + + static_model.add_adapter("dummy") + static_model.set_active_adapters("dummy") + static_model.eval() + flex_model.eval() + with tempfile.TemporaryDirectory() as temp_dir: + static_model.save_adapter(temp_dir, "dummy") + + loading_info = {} + flex_model.load_adapter(temp_dir, loading_info=loading_info) + flex_model.set_active_adapters("dummy") + + input_data = self.get_input_samples(config=static_model.config) + static_model.eval() + flex_model.eval() + static_model.to(torch_device) + flex_model.to(torch_device) + output = static_model(**input_data) + + input_data["past_key_values"] = output["past_key_values"] + output_base = static_model(**input_data) + output_with_head = flex_model(**input_data) + self.assertTrue(torch.allclose(output_base["logits"], output_with_head["logits"])) + + def test_train_single_adapter(self): + self.run_train_test(SeqBnConfig(), ["adapters.{name}."]) + + def test_train_mam_adapter(self): + self.run_train_test(MAMConfig(), ["adapters.{name}."]) + + def test_train_adapter_fusion(self): + if not self.do_run_train_tests: + self.skipTest("Skipping training tests. Set `do_run_train_tests=True` to run them.") + if self.config_class not in ADAPTER_MODEL_MAPPING: + self.skipTest("Does not support flex heads.") + model = AutoAdapterModel.from_config(self.config()) + self.add_head(model, "head") + + # add the adapters to be fused + model.add_adapter("a") + model.add_adapter("b") + model.add_adapter("c") + + self.assertIn("a", model.adapters_config.adapters) + self.assertIn("b", model.adapters_config.adapters) + self.assertIn("c", model.adapters_config.adapters) + + # setup fusion + adapter_setup = Fuse("a", "b", "c") + model.add_adapter_fusion(adapter_setup) + model.train_adapter_fusion(adapter_setup) + model.set_active_adapters(adapter_setup) + self.assertEqual(adapter_setup, model.active_adapters) + + # all weights of the adapters should be frozen (test for one) + for k, v in self.filter_parameters(model, ["adapters.a."]).items(): + self.assertFalse(v.requires_grad, k) + # all weights of the fusion layer should be activated + for k, v in self.filter_parameters(model, ["adapter_fusion_layer"]).items(): + self.assertTrue(v.requires_grad, k) + # weights of the model should be frozen (check on some examples) + for k, v in self.filter_parameters(model, ["encoder.layer.0.attention"]).items(): + self.assertFalse(v.requires_grad, k) + + state_dict_pre = copy.deepcopy(model.state_dict()) + + # Since our config has a value matrix, make sure it is regularized. + # We do this by patching the fusion regularization function. + regularization_called = False + orig_fusion_regularization_loss = model.base_model.get_fusion_regularization_loss + + def patched_fusion_reg_loss(): + nonlocal regularization_called + regularization_called = True + return orig_fusion_regularization_loss() + + model.base_model.get_fusion_regularization_loss = patched_fusion_reg_loss + + self.trainings_run(model) + self.assertTrue(regularization_called) + + def has_tied_embeddings(k): + tied_embeddings = hasattr(model.config, "tie_word_embeddings") and model.config.tie_word_embeddings + is_tied_layer = ( + isinstance(model.heads["head"], CausalLMHead) + and "heads.{}.{}.weight".format("head", len(model.heads["head"]._modules) - 1) in k + ) + return tied_embeddings and is_tied_layer + + # check that the adapters have changed, but the base model has not + adapters_with_change, base_with_change = False, False + for (k1, v1), (k2, v2) in zip(state_dict_pre.items(), model.state_dict().items()): + if ( + "adapter_fusion_layer" in k1 + or "classifier" in k1 + or "classification_head" in k1 + or "score" in k1 + or "head" in k1 + ) and not has_tied_embeddings(k1): + adapters_with_change |= not torch.equal(v1, v2) + else: + base_with_change |= not torch.equal(v1, v2) + self.assertTrue(adapters_with_change) + self.assertFalse(base_with_change) + + def test_batch_split_training(self): + if not self.do_run_train_tests: + self.skipTest("Skipping training tests. Set `do_run_train_tests=True` to run them.") + if self.config_class not in ADAPTER_MODEL_MAPPING: + self.skipTest("Does not support flex heads.") + model = AutoAdapterModel.from_config(self.config()) + + model.add_adapter("mrpc1") + model.add_adapter("mrpc2") + self.add_head(model, "mrpc1") + self.add_head(model, "mrpc2") + adapter_setup = BatchSplit("mrpc1", "mrpc2", batch_sizes=[1, 1]) + model.active_adapters = adapter_setup + model.train_adapter(adapter_setup) + + # all weights of the adapter should be activated + for k, v in self.filter_parameters(model, ["adapters.mrpc1."]).items(): + self.assertTrue(v.requires_grad, k) + # all weights of the adapter not used for training should be frozen + for k, v in self.filter_parameters(model, ["adapters.mrpc2."]).items(): + self.assertTrue(v.requires_grad, k) + # weights of the model should be frozen (check on some examples) + for k, v in self.filter_parameters(model, ["encoder.layer.0.attention"]).items(): + self.assertFalse(v.requires_grad, k) + + state_dict_pre = copy.deepcopy(model.state_dict()) + + self.trainings_run(model) + + # check that the adapters have changed, but the base model has not + adapters_with_change, base_with_change = False, False + for (k1, v1), (k2, v2) in zip(state_dict_pre.items(), model.state_dict().items()): + if "mrpc" in k1: + adapters_with_change |= not torch.equal(v1, v2) + else: + base_with_change |= not torch.equal(v1, v2) + self.assertTrue(adapters_with_change) + self.assertFalse(base_with_change) diff --git a/adapters/tests/methods/test_compacter.py b/adapters/tests/methods/test_compacter.py new file mode 100644 index 00000000..ffe7e0ea --- /dev/null +++ b/adapters/tests/methods/test_compacter.py @@ -0,0 +1,75 @@ +from adapters import ADAPTER_MODEL_MAPPING, AutoAdapterModel, CompacterPlusPlusConfig +from transformers.testing_utils import require_torch, torch_device + +from .base import AdapterMethodBaseTestMixin + + +@require_torch +class CompacterTestMixin(AdapterMethodBaseTestMixin): + def test_add_compacter(self): + model = self.get_model() + self.run_add_test(model, CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8), ["adapters.{name}."]) + + def test_leave_out_compacter(self): + model = self.get_model() + self.run_leave_out_test(model, CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8), self.leave_out_layers) + + def test_average_compacter(self): + model = self.get_model() + self.run_average_test(model, CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8), ["adapters.{name}."]) + + def test_delete_compacter(self): + model = self.get_model() + self.run_delete_test(model, CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8), ["adapters.{name}."]) + + def test_get_compacter(self): + model = self.get_model() + n_layers = len(list(model.iter_layers())) + self.run_get_test(model, CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8), n_layers + 1) + + def test_forward_compacter(self): + model = self.get_model() + adapter_config = CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8) + self.run_forward_test(model, adapter_config) + + def test_forward_shared_phm_compacter(self): + model = self.get_model() + adapter_config = CompacterPlusPlusConfig(phm_dim=4, shared_W_phm=True, reduction_factor=4) + self.run_forward_test(model, adapter_config) + + def test_load_compacter(self): + self.run_load_test(CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8)) + + def test_train_shared_w_compacter(self): + adapter_config = CompacterPlusPlusConfig( + phm_dim=2, shared_W_phm=True, shared_phm_rule=False, reduction_factor=8 + ) + self.run_train_test(adapter_config, ["adapters.{name}."]) + + def test_train_shared_phm_compacter(self): + adapter_config = CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8) + self.run_train_test(adapter_config, ["adapters.{name}."]) + + def test_compacter_generate(self): + if self.config_class not in ADAPTER_MODEL_MAPPING or ( + "seq2seq_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types + and "causal_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types + ): + self.skipTest("No seq2seq or causal language model head") + + model1 = AutoAdapterModel.from_config(self.config()) + model1.add_adapter("dummy", config=CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8)) + if "seq2seq_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + model1.add_seq2seq_lm_head("dummy") + else: + model1.add_causal_lm_head("dummy") + model1.set_active_adapters("dummy") + model1.to(torch_device) + + seq_output_length = 32 + + # Finally, also check if generation works properly + input_ids = self.get_input_samples((1, 4), config=model1.config)["input_ids"] + input_ids = input_ids.to(torch_device) + generated = model1.generate(input_ids, max_length=seq_output_length) + self.assertLessEqual(generated.shape, (1, seq_output_length)) diff --git a/adapters/tests/methods/test_config_union.py b/adapters/tests/methods/test_config_union.py new file mode 100644 index 00000000..12d82a5d --- /dev/null +++ b/adapters/tests/methods/test_config_union.py @@ -0,0 +1,53 @@ +from adapters.configuration import ( + CompacterConfig, + ConfigUnion, + LoRAConfig, + ParBnConfig, + PrefixTuningConfig, + SeqBnConfig, +) +from tests.methods.base import AdapterMethodBaseTestMixin +from transformers.testing_utils import require_torch + + +@require_torch +class ConfigUnionAdapterTest(AdapterMethodBaseTestMixin): + adapter_configs_to_test = [ + ( + ConfigUnion( + PrefixTuningConfig(), + ParBnConfig(), + ), + ["adapters.{name}.", "prefix_tunings.{name}."], + ), + ( + ConfigUnion( + CompacterConfig(), + LoRAConfig(), + ), + ["adapters.{name}.", "loras.{name}."], + ), + ( + ConfigUnion( + SeqBnConfig(), + LoRAConfig(), + ), + ["adapters.{name}.", "loras.{name}."], + ), + ] + + def test_add_union_adapter(self): + model = self.get_model() + model.eval() + + for adapter_config, filter_keys in self.adapter_configs_to_test: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + self.run_add_test(model, adapter_config, filter_keys) + + def test_union_adapter_forward(self): + model = self.get_model() + model.eval() + + for adapter_config, _ in self.adapter_configs_to_test: + with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): + self.run_forward_test(model, adapter_config) diff --git a/adapters/tests/methods/test_ia3.py b/adapters/tests/methods/test_ia3.py new file mode 100644 index 00000000..0dc81d02 --- /dev/null +++ b/adapters/tests/methods/test_ia3.py @@ -0,0 +1,47 @@ +from adapters import IA3Config +from transformers.testing_utils import require_torch + +from .base import AdapterMethodBaseTestMixin + + +@require_torch +class IA3TestMixin(AdapterMethodBaseTestMixin): + def test_add_ia3(self): + model = self.get_model() + self.run_add_test(model, IA3Config(), ["loras.{name}."]) + + def test_leave_out_ia3(self): + model = self.get_model() + self.run_leave_out_test(model, IA3Config(), self.leave_out_layers) + + def test_average_ia3(self): + model = self.get_model() + self.run_average_test(model, IA3Config(), ["loras.{name}."]) + + def test_delete_ia3(self): + model = self.get_model() + self.run_delete_test(model, IA3Config(), ["loras.{name}."]) + + def test_get_ia3(self): + model = self.get_model() + n_layers = len(list(model.iter_layers())) + self.run_get_test(model, IA3Config(intermediate_lora=True, output_lora=True), n_layers * 3) + + def test_forward_ia3(self): + model = self.get_model() + self.run_forward_test(model, IA3Config(init_weights="bert", intermediate_lora=True, output_lora=True)) + + def test_load_ia3(self): + self.run_load_test(IA3Config()) + + def test_load_full_model_ia3(self): + self.run_full_model_load_test(IA3Config(init_weights="bert")) + + def test_train_ia3(self): + self.run_train_test(IA3Config(init_weights="bert"), ["loras.{name}."]) + + def test_merge_ia3(self): + self.run_merge_test(IA3Config(init_weights="bert")) + + def test_reset_ia3(self): + self.run_reset_test(IA3Config(init_weights="bert")) diff --git a/adapters/tests/methods/test_lora.py b/adapters/tests/methods/test_lora.py new file mode 100644 index 00000000..90f6d26a --- /dev/null +++ b/adapters/tests/methods/test_lora.py @@ -0,0 +1,47 @@ +from adapters import LoRAConfig +from transformers.testing_utils import require_torch + +from .base import AdapterMethodBaseTestMixin + + +@require_torch +class LoRATestMixin(AdapterMethodBaseTestMixin): + def test_add_lora(self): + model = self.get_model() + self.run_add_test(model, LoRAConfig(), ["loras.{name}."]) + + def test_leave_out_lora(self): + model = self.get_model() + self.run_leave_out_test(model, LoRAConfig(), self.leave_out_layers) + + def test_average_lora(self): + model = self.get_model() + self.run_average_test(model, LoRAConfig(), ["loras.{name}."]) + + def test_delete_lora(self): + model = self.get_model() + self.run_delete_test(model, LoRAConfig(), ["loras.{name}."]) + + def test_get_lora(self): + model = self.get_model() + n_layers = len(list(model.iter_layers())) + self.run_get_test(model, LoRAConfig(intermediate_lora=True, output_lora=True), n_layers * 3) + + def test_forward_lora(self): + model = self.get_model() + self.run_forward_test(model, LoRAConfig(init_weights="bert", intermediate_lora=True, output_lora=True)) + + def test_load_lora(self): + self.run_load_test(LoRAConfig()) + + def test_load_full_model_lora(self): + self.run_full_model_load_test(LoRAConfig(init_weights="bert")) + + def test_train_lora(self): + self.run_train_test(LoRAConfig(init_weights="bert"), ["loras.{name}."]) + + def test_merge_lora(self): + self.run_merge_test(LoRAConfig(init_weights="bert")) + + def test_reset_lora(self): + self.run_reset_test(LoRAConfig(init_weights="bert")) diff --git a/adapters/tests/methods/test_prefix_tuning.py b/adapters/tests/methods/test_prefix_tuning.py new file mode 100644 index 00000000..3c98b285 --- /dev/null +++ b/adapters/tests/methods/test_prefix_tuning.py @@ -0,0 +1,98 @@ +import torch + +from adapters import ADAPTER_MODEL_MAPPING, AutoAdapterModel, PrefixTuningConfig +from transformers import CLIPConfig +from transformers.testing_utils import require_torch, torch_device + +from .base import AdapterMethodBaseTestMixin + + +@require_torch +class PrefixTuningTestMixin(AdapterMethodBaseTestMixin): + def test_add_prefix_tuning(self): + model = self.get_model() + self.run_add_test(model, PrefixTuningConfig(flat=True), ["prefix_tunings.{name}."]) + + def test_leave_out_prefix_tuning(self): + # Note: for prefix tuning, this test is a little weird as the prefix tuning weights are only returned for the first layer with a prefix and not all. + # It still kind of tests the right thing as we prune layers from the end, which will move the returned layer to the next layer with a prefix. + model = self.get_model() + self.run_leave_out_test(model, PrefixTuningConfig(flat=True), self.leave_out_layers) + + def test_average_prefix_tuning(self): + model = self.get_model() + self.run_average_test(model, PrefixTuningConfig(flat=True), ["prefix_tunings.{name}."]) + + def test_delete_prefix_tuning(self): + model = self.get_model() + self.run_delete_test(model, PrefixTuningConfig(flat=True), ["prefix_tunings.{name}."]) + + def test_get_prefix_tuning(self): + model = self.get_model() + if model.config.is_encoder_decoder: + n_prefix_layers = 3 + elif model.config.is_composition or isinstance(model.config, CLIPConfig): + n_prefix_layers = 2 + else: + n_prefix_layers = 1 + + self.run_get_test(model, PrefixTuningConfig(flat=True), n_prefix_layers) + + def test_forward_prefix_tuning(self): + model = self.get_model() + self.run_forward_test(model, PrefixTuningConfig(flat=True)) + + def test_load_prefix_tuning(self): + self.run_load_test(PrefixTuningConfig()) + + def test_load_full_model_prefix_tuning(self): + self.run_full_model_load_test(PrefixTuningConfig()) + + def test_train_prefix_tuning(self): + self.run_train_test(PrefixTuningConfig(), ["prefix_tunings.{name}."]) + + def test_eject_prefix(self): + model = self.get_model() + model.eval() + model.add_adapter("test_prefix", config="prefix_tuning") + model.to(torch_device) + + input_data = self.get_input_samples(config=model.config) + + # user reparamterized prefix + model.set_active_adapters(["test_prefix"]) + output_1 = model(**input_data) + + # eject prefix + model.eject_prefix_tuning("test_prefix") + model.to(torch_device) + model.eval() + output_2 = model(**input_data) + + # check forward pass + self.assertEqual(len(output_1), len(output_2)) + self.assertTrue(torch.allclose(output_1[0], output_2[0], atol=1e-4)) + + def test_prefix_tuning_generate(self): + if self.config_class not in ADAPTER_MODEL_MAPPING or ( + "seq2seq_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types + and "causal_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types + ): + self.skipTest("No seq2seq or causal language model head") + + model1 = AutoAdapterModel.from_config(self.config()) + model1.add_adapter("dummy", config="prefix_tuning") + if "seq2seq_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + model1.add_seq2seq_lm_head("dummy") + else: + model1.add_causal_lm_head("dummy") + model1.set_active_adapters("dummy") + model1.to(torch_device) + + seq_output_length = 32 + + # Finally, also check if generation works properly + input_ids = self.get_input_samples((1, 4), config=model1.config)["input_ids"] + input_ids = input_ids.to(torch_device) + generated = model1.generate(input_ids, max_length=seq_output_length) + self.assertLessEqual(generated.shape, (1, seq_output_length)) diff --git a/adapters/tests/methods/test_prompt_tuning.py b/adapters/tests/methods/test_prompt_tuning.py new file mode 100644 index 00000000..d0b12d25 --- /dev/null +++ b/adapters/tests/methods/test_prompt_tuning.py @@ -0,0 +1,36 @@ +from adapters import PromptTuningConfig +from transformers.testing_utils import require_torch + +from .base import AdapterMethodBaseTestMixin + + +@require_torch +class PromptTuningTestMixin(AdapterMethodBaseTestMixin): + def test_add_prompt_tuning(self): + model = self.get_model() + self.run_add_test(model, PromptTuningConfig(prompt_length=10), ["prompt_tunings.{name}."]) + + def test_average_prompt_tuning(self): + model = self.get_model() + self.run_average_test(model, PromptTuningConfig(prompt_length=10), ["prompt_tunings.{name}."]) + + def test_delete_prompt_tuning(self): + model = self.get_model() + self.run_delete_test(model, PromptTuningConfig(prompt_length=10), ["prompt_tunings.{name}."]) + + def test_get_prompt_tuning(self): + model = self.get_model() + self.run_get_test(model, PromptTuningConfig(prompt_length=10), 1) + + def test_forward_prompt_tuning(self): + model = self.get_model() + self.run_forward_test(model, PromptTuningConfig(prompt_length=10)) + + def test_load_prompt_tuning(self): + self.run_load_test(PromptTuningConfig(prompt_length=10)) + + def test_load_full_model_prompt_tuning(self): + self.run_full_model_load_test(PromptTuningConfig(prompt_length=10)) + + def test_train_prompt_tuning(self): + self.run_train_test(PromptTuningConfig(prompt_length=10), ["prompt_tunings.{name}."]) diff --git a/adapters/tests/methods/test_unipelt.py b/adapters/tests/methods/test_unipelt.py new file mode 100644 index 00000000..83bbec52 --- /dev/null +++ b/adapters/tests/methods/test_unipelt.py @@ -0,0 +1,64 @@ +from adapters import UniPELTConfig +from transformers.testing_utils import require_torch, torch_device + +from .base import AdapterMethodBaseTestMixin + + +@require_torch +class UniPELTTestMixin(AdapterMethodBaseTestMixin): + def test_add_unipelt(self): + model = self.get_model() + self.run_add_test(model, UniPELTConfig(), ["loras.{name}.", "adapters.{name}.", "prefix_tunings.{name}."]) + + def test_average_unipelt(self): + model = self.get_model() + self.run_average_test(model, UniPELTConfig(), ["loras.{name}.", "adapters.{name}.", "prefix_tunings.{name}."]) + + def test_delete_unipelt(self): + model = self.get_model() + self.run_delete_test(model, UniPELTConfig(), ["loras.{name}.", "adapters.{name}.", "prefix_tunings.{name}."]) + + def test_get_unipelt(self): + model = self.get_model() + n_layers = len(list(model.iter_layers())) + # In UniPELT, prefix tuning has gates in every layer + n_prefix_layers = 1.5 * n_layers if model.config.is_encoder_decoder else n_layers + self.run_get_test(model, UniPELTConfig(), n_layers * 2 + n_prefix_layers) + + def test_forward_unipelt(self): + model = self.get_model() + self.run_forward_test(model, UniPELTConfig()) + + def test_load_unipelt(self): + self.run_load_test(UniPELTConfig()) + + def test_load_full_model_unipelt(self): + self.run_full_model_load_test(UniPELTConfig()) + + def test_train_unipelt(self): + self.run_train_test( + UniPELTConfig(), ["loras.{name}.", "adapters.{name}.", "prefix_tunings.{name}.", "prefix_gates.{name}."] + ) + + def test_output_adapter_gating_scores_unipelt(self): + model = self.get_model() + model.eval() + + adapter_config = UniPELTConfig() + name = adapter_config.__class__.__name__ + model.add_adapter(name, config=adapter_config) + model.to(torch_device) + + input_data = self.get_input_samples(config=model.config) + + model.set_active_adapters([name]) + output_1 = model(**input_data, output_adapter_gating_scores=True) + + self.assertEqual(len(output_1[0]), self.default_input_samples_shape[0]) + self.assertTrue(hasattr(output_1, "adapter_gating_scores")) + gating_scores = output_1.adapter_gating_scores[name] + self.assertEqual(len(list(model.iter_layers())), len(gating_scores)) + for k, per_layer_scores in gating_scores.items(): + self.assertGreaterEqual(len(per_layer_scores), 3) + for k, v in per_layer_scores.items(): + self.assertEqual(self.default_input_samples_shape[0], v.shape[0], k) diff --git a/adapters/tests/models/__init__.py b/adapters/tests/models/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/adapters/tests/models/base.py b/adapters/tests/models/base.py new file mode 100644 index 00000000..771c1fd6 --- /dev/null +++ b/adapters/tests/models/base.py @@ -0,0 +1,16 @@ +from transformers.testing_utils import require_torch + + +@require_torch +class AdapterModelTesterMixin: + def test_training(self): + self.skipTest("Not applicable.") + + def check_training_gradient_checkpointing(self, gradient_checkpointing_kwargs=None): + self.skipTest("Not applicable.") + + def test_training_gradient_checkpointing(self): + self.skipTest("Not applicable.") + + def test_correct_missing_keys(self): + self.skipTest("Not applicable.") diff --git a/adapters/tests/models/test_albert.py b/adapters/tests/models/test_albert.py new file mode 100644 index 00000000..40a28914 --- /dev/null +++ b/adapters/tests/models/test_albert.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import AlbertAdapterModel +from hf_transformers.tests.models.albert.test_modeling_albert import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class AlbertAdapterModelTest(AdapterModelTesterMixin, AlbertModelTest): + all_model_classes = (AlbertAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_bart.py b/adapters/tests/models/test_bart.py new file mode 100644 index 00000000..70d97c97 --- /dev/null +++ b/adapters/tests/models/test_bart.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import BartAdapterModel +from hf_transformers.tests.models.bart.test_modeling_bart import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class BartAdapterModelTest(AdapterModelTesterMixin, BartModelTest): + all_model_classes = (BartAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_beit.py b/adapters/tests/models/test_beit.py new file mode 100644 index 00000000..1d6fc927 --- /dev/null +++ b/adapters/tests/models/test_beit.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import BeitAdapterModel +from hf_transformers.tests.models.beit.test_modeling_beit import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class BeitAdapterModelTest(AdapterModelTesterMixin, BeitModelTest): + all_model_classes = (BeitAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_bert.py b/adapters/tests/models/test_bert.py new file mode 100644 index 00000000..1ca69b0b --- /dev/null +++ b/adapters/tests/models/test_bert.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import BertAdapterModel +from hf_transformers.tests.models.bert.test_modeling_bert import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class BertAdapterModelTest(AdapterModelTesterMixin, BertModelTest): + all_model_classes = (BertAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_bert_generation.py b/adapters/tests/models/test_bert_generation.py new file mode 100644 index 00000000..15f867e0 --- /dev/null +++ b/adapters/tests/models/test_bert_generation.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import BertGenerationAdapterModel +from hf_transformers.tests.models.bert_generation.test_modeling_bert_generation import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class BertGenerationAdapterModelTest(AdapterModelTesterMixin, BertGenerationEncoderTest): + all_model_classes = (BertGenerationAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_clip.py b/adapters/tests/models/test_clip.py new file mode 100644 index 00000000..921e0668 --- /dev/null +++ b/adapters/tests/models/test_clip.py @@ -0,0 +1,39 @@ +# flake8: noqa: F403,F405 +import numpy as np + +from adapters import CLIPAdapterModel +from hf_transformers.tests.models.clip.test_modeling_clip import * # Imported to execute model tests +from hf_transformers.tests.test_modeling_common import _config_zero_init +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class CLIPAdapterModelTest(AdapterModelTesterMixin, CLIPModelTest): + all_model_classes = (CLIPAdapterModel,) + fx_compatible = False + + # override as the `logit_scale` parameter has a different name in the adapter model + def test_initialization(self): + config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common() + + configs_no_init = _config_zero_init(config) + for model_class in self.all_model_classes: + model = model_class(config=configs_no_init) + for name, param in model.named_parameters(): + if param.requires_grad: + # check if `logit_scale` is initilized as per the original implementation + if name == "clip.logit_scale": + self.assertAlmostEqual( + param.data.item(), + np.log(1 / 0.07), + delta=1e-3, + msg=f"Parameter {name} of model {model_class} seems not properly initialized", + ) + else: + self.assertIn( + ((param.data.mean() * 1e9).round() / 1e9).item(), + [0.0, 1.0], + msg=f"Parameter {name} of model {model_class} seems not properly initialized", + ) diff --git a/adapters/tests/models/test_deberta.py b/adapters/tests/models/test_deberta.py new file mode 100644 index 00000000..27f94bf1 --- /dev/null +++ b/adapters/tests/models/test_deberta.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import DebertaAdapterModel +from hf_transformers.tests.models.deberta.test_modeling_deberta import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class DebertaAdapterModelTest(AdapterModelTesterMixin, DebertaModelTest): + all_model_classes = (DebertaAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_debertaV2.py b/adapters/tests/models/test_debertaV2.py new file mode 100644 index 00000000..9e97466c --- /dev/null +++ b/adapters/tests/models/test_debertaV2.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import DebertaV2AdapterModel +from hf_transformers.tests.models.deberta_v2.test_modeling_deberta_v2 import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class DebertaV2AdapterModelTest(AdapterModelTesterMixin, DebertaV2ModelTest): + all_model_classes = (DebertaV2AdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_distilbert.py b/adapters/tests/models/test_distilbert.py new file mode 100644 index 00000000..56cad41d --- /dev/null +++ b/adapters/tests/models/test_distilbert.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import DistilBertAdapterModel +from hf_transformers.tests.models.distilbert.test_modeling_distilbert import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class DistilBertAdapterModelTest(AdapterModelTesterMixin, DistilBertModelTest): + all_model_classes = (DistilBertAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_electra.py b/adapters/tests/models/test_electra.py new file mode 100644 index 00000000..642eeb0c --- /dev/null +++ b/adapters/tests/models/test_electra.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import ElectraAdapterModel +from hf_transformers.tests.models.electra.test_modeling_electra import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class ElectraAdapterModelTest(AdapterModelTesterMixin, ElectraModelTester): + all_model_classes = (ElectraAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_encoder_decoder.py b/adapters/tests/models/test_encoder_decoder.py new file mode 100644 index 00000000..8f6f4b5f --- /dev/null +++ b/adapters/tests/models/test_encoder_decoder.py @@ -0,0 +1,2 @@ +# flake8: noqa +from hf_transformers.tests.models.encoder_decoder.test_modeling_encoder_decoder import * # Imported to execute model tests diff --git a/adapters/tests/models/test_gpt2.py b/adapters/tests/models/test_gpt2.py new file mode 100644 index 00000000..f904be53 --- /dev/null +++ b/adapters/tests/models/test_gpt2.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import GPT2AdapterModel +from hf_transformers.tests.models.gpt2.test_modeling_gpt2 import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class GPT2AdapterModelTest(AdapterModelTesterMixin, GPT2ModelTest): + all_model_classes = (GPT2AdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_gptj.py b/adapters/tests/models/test_gptj.py new file mode 100644 index 00000000..5cd76106 --- /dev/null +++ b/adapters/tests/models/test_gptj.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import GPTJAdapterModel +from hf_transformers.tests.models.gptj.test_modeling_gptj import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class GPTJAdapterModelTest(AdapterModelTesterMixin, GPTJModelTest): + all_model_classes = (GPTJAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_llama.py b/adapters/tests/models/test_llama.py new file mode 100644 index 00000000..4246f048 --- /dev/null +++ b/adapters/tests/models/test_llama.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import LlamaAdapterModel +from hf_transformers.tests.models.llama.test_modeling_llama import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class LlamaAdapterModelTest(AdapterModelTesterMixin, LlamaModelTest): + all_model_classes = (LlamaAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_mbart.py b/adapters/tests/models/test_mbart.py new file mode 100644 index 00000000..f874082a --- /dev/null +++ b/adapters/tests/models/test_mbart.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import MBartAdapterModel +from hf_transformers.tests.models.mbart.test_modeling_mbart import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class MBartAdapterModelTest(AdapterModelTesterMixin, MBartModelTest): + all_model_classes = (MBartAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_mt5.py b/adapters/tests/models/test_mt5.py new file mode 100644 index 00000000..8d9f551e --- /dev/null +++ b/adapters/tests/models/test_mt5.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import MT5AdapterModel +from hf_transformers.tests.models.mt5.test_modeling_mt5 import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class MT5AdapterModelTest(AdapterModelTesterMixin, MT5IntegrationTest): + all_model_classes = (MT5AdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_roberta.py b/adapters/tests/models/test_roberta.py new file mode 100644 index 00000000..e8988622 --- /dev/null +++ b/adapters/tests/models/test_roberta.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import RobertaAdapterModel +from hf_transformers.tests.models.roberta.test_modeling_roberta import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class RobertaAdapterModelTest(AdapterModelTesterMixin, RobertaModelTest): + all_model_classes = (RobertaAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_t5.py b/adapters/tests/models/test_t5.py new file mode 100644 index 00000000..12d31a03 --- /dev/null +++ b/adapters/tests/models/test_t5.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import T5AdapterModel +from hf_transformers.tests.models.t5.test_modeling_t5 import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class T5AdapterModelTest(AdapterModelTesterMixin, T5ModelTest): + all_model_classes = (T5AdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_vit.py b/adapters/tests/models/test_vit.py new file mode 100644 index 00000000..a5fc5a05 --- /dev/null +++ b/adapters/tests/models/test_vit.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import ViTAdapterModel +from hf_transformers.tests.models.vit.test_modeling_vit import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class ViTAdapterModelTest(AdapterModelTesterMixin, ViTModelTest): + all_model_classes = (ViTAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/models/test_xlm_roberta.py b/adapters/tests/models/test_xlm_roberta.py new file mode 100644 index 00000000..82325150 --- /dev/null +++ b/adapters/tests/models/test_xlm_roberta.py @@ -0,0 +1,2 @@ +# flake8: noqa +from hf_transformers.tests.models.xlm_roberta.test_modeling_xlm_roberta import * # Imported to execute model tests diff --git a/adapters/tests/models/test_xmod.py b/adapters/tests/models/test_xmod.py new file mode 100644 index 00000000..2a0faa06 --- /dev/null +++ b/adapters/tests/models/test_xmod.py @@ -0,0 +1,12 @@ +# flake8: noqa: F403,F405 +from adapters import XmodAdapterModel +from hf_transformers.tests.models.xmod.test_modeling_xmod import * +from transformers.testing_utils import require_torch + +from .base import AdapterModelTesterMixin + + +@require_torch +class XmodAdapterModelTest(AdapterModelTesterMixin, XmodModelTest): + all_model_classes = (XmodAdapterModel,) + fx_compatible = False diff --git a/adapters/tests/test_adapter.py b/adapters/tests/test_adapter.py new file mode 100644 index 00000000..c01f0295 --- /dev/null +++ b/adapters/tests/test_adapter.py @@ -0,0 +1,135 @@ +import random + +import datasets +import torch + +import adapters +from adapters import AutoAdapterModel +from transformers import AutoFeatureExtractor, AutoTokenizer, GlueDataset, GlueDataTrainingArguments +from transformers.testing_utils import torch_device + + +global_rng = random.Random() + + +def make_config(config_class, **kwargs): + return staticmethod(lambda: config_class(**kwargs)) + + +def ids_tensor(shape, vocab_size, rng=None, name=None): + # Creates a random int32 tensor of the shape within the vocab size + if rng is None: + rng = global_rng + + total_dims = 1 + for dim in shape: + total_dims *= dim + + values = [] + for _ in range(total_dims): + values.append(rng.randint(0, vocab_size - 1)) + + return torch.tensor(data=values, dtype=torch.long, device=torch_device).view(shape).contiguous() + + +class AdapterTestBase: + # If not overriden by subclass, AutoModel should be used. + model_class = AutoAdapterModel + # Default shape of inputs to use + default_input_samples_shape = (3, 64) + leave_out_layers = [0, 1] + do_run_train_tests = True + + def get_model(self): + if self.model_class == AutoAdapterModel: + model = AutoAdapterModel.from_config(self.config()) + else: + model = self.model_class(self.config()) + adapters.init(model) + model.to(torch_device) + return model + + def get_input_samples(self, shape=None, vocab_size=5000, config=None): + shape = shape or self.default_input_samples_shape + total_dims = 1 + for dim in shape: + total_dims *= dim + + values = [] + for _ in range(total_dims): + values.append(random.randint(0, vocab_size - 1)) + input_ids = torch.tensor(data=values, dtype=torch.long, device=torch_device).view(shape).contiguous() + # this is needed e.g. for BART + if config and config.eos_token_id is not None and config.eos_token_id < vocab_size: + input_ids[input_ids == config.eos_token_id] = random.randint(0, config.eos_token_id - 1) + input_ids[:, -1] = config.eos_token_id + in_data = {"input_ids": input_ids} + + if config and config.is_encoder_decoder: + in_data["decoder_input_ids"] = input_ids.clone() + return in_data + + def add_head(self, model, name, **kwargs): + model.add_classification_head(name, **kwargs) + return model.heads[name].config["num_labels"] + + def dataset(self, tokenizer=None): + # setup tokenizer + if tokenizer is None: + tokenizer = AutoTokenizer.from_pretrained(self.tokenizer_name, use_fast=False) + if tokenizer.pad_token is None: + tokenizer.pad_token = tokenizer.eos_token + data_args = GlueDataTrainingArguments( + task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True + ) + return GlueDataset(data_args, tokenizer=tokenizer, mode="train") + + def assert_adapter_available(self, model, adapter_name): + self.assertTrue(adapter_name in model.adapters_config) + self.assertGreater(len(model.get_adapter(adapter_name)), 0) + + def assert_adapter_unavailable(self, model, adapter_name): + self.assertFalse(adapter_name in model.adapters_config) + self.assertEqual(len(model.get_adapter(adapter_name)), 0) + + +class VisionAdapterTestBase(AdapterTestBase): + default_input_samples_shape = (3, 3, 224, 224) + + def get_input_samples(self, shape=None, config=None): + shape = shape or self.default_input_samples_shape + total_dims = 1 + for dim in shape: + total_dims *= dim + values = [] + for _ in range(total_dims): + values.append(random.random()) + pixel_values = torch.tensor(data=values, dtype=torch.float, device=torch_device).view(shape).contiguous() + in_data = {"pixel_values": pixel_values} + + return in_data + + def add_head(self, model, name, **kwargs): + if "num_labels" not in kwargs: + kwargs["num_labels"] = 10 + model.add_image_classification_head(name, **kwargs) + return model.heads[name].config["num_labels"] + + def dataset(self, feature_extractor=None): + if feature_extractor is None: + feature_extractor = AutoFeatureExtractor.from_pretrained(self.feature_extractor_name) + + def transform(example_batch): + inputs = feature_extractor([x for x in example_batch["img"]], return_tensors="pt") + + inputs["labels"] = example_batch["label"] + return inputs + + dataset = datasets.load_dataset( + "./tests/fixtures/samples/cifar10", + data_dir="./tests/fixtures/samples/cifar10", + split="train", + ) + dataset = dataset.with_transform(transform) + + return dataset diff --git a/adapters/tests/test_adapter_backward_compability.py b/adapters/tests/test_adapter_backward_compability.py new file mode 100644 index 00000000..03c04c79 --- /dev/null +++ b/adapters/tests/test_adapter_backward_compability.py @@ -0,0 +1,48 @@ +import json +import os +import tempfile + +from adapters import SeqBnConfig, __version__ +from tests.methods import create_twin_models +from transformers.testing_utils import require_torch + + +@require_torch +class CompabilityTestMixin: + def test_load_old_non_linearity(self): + model1, model2 = create_twin_models(self.model_class, self.config) + config = SeqBnConfig(non_linearity="gelu") + name = "dummy" + model1.add_adapter(name, config=config) + model1.set_active_adapters([name]) + with tempfile.TemporaryDirectory() as temp_dir: + model1.save_adapter(temp_dir, name) + + with open(os.path.join(temp_dir, "adapter_config.json"), "r") as file: + data = json.load(file) + data["config"]["non_linearity"] = "gelu_orig" + del data["version"] + with open(os.path.join(temp_dir, "adapter_config.json"), "w") as file: + json.dump(data, file) + + # also tests that set_active works + model2.load_adapter(temp_dir, set_active=True) + + # check if adapter was correctly loaded + self.assertTrue(name in model2.adapters_config) + self.assertEqual( + "gelu", model2.adapters_config.config_map[model2.adapters_config.adapters[name]]["non_linearity"] + ) + + def test_save_version_with_adapter(self): + model = self.get_model() + config = SeqBnConfig(non_linearity="gelu") + name = "dummy" + model.add_adapter(name, config=config) + model.set_active_adapters([name]) + with tempfile.TemporaryDirectory() as temp_dir: + model.save_adapter(temp_dir, name) + + with open(os.path.join(temp_dir, "adapter_config.json"), "r") as file: + data = json.load(file) + self.assertEqual(__version__, data["version"]) diff --git a/adapters/tests/test_adapter_config.py b/adapters/tests/test_adapter_config.py new file mode 100644 index 00000000..2bce31c7 --- /dev/null +++ b/adapters/tests/test_adapter_config.py @@ -0,0 +1,127 @@ +import json +import unittest +from dataclasses import FrozenInstanceError, dataclass + +from adapters import ( + ADAPTER_CONFIG_MAP, + AdapterConfig, + ConfigUnion, + DoubleSeqBnConfig, + LoRAConfig, + MAMConfig, + ParBnConfig, + PrefixTuningConfig, + SeqBnConfig, +) +from transformers.testing_utils import require_torch + + +@require_torch +class AdapterConfigTest(unittest.TestCase): + def test_config_load(self): + download_kwargs = {"force_download": True} + # TODO still uses the old config names as only these are available on the Hub + for config_name in ["pfeiffer", "houlsby"]: + with self.subTest(config_name=config_name): + config = AdapterConfig.load(config_name, download_kwargs=download_kwargs, non_linearity="leakyrelu") + self.assertTrue(isinstance(config, AdapterConfig)) + self.assertEqual(config.non_linearity, "leakyrelu") + + def test_config_immutable(self): + def set_attr(config: AdapterConfig): + config.non_linearity = "dummy" + config.r = -1 # for LoRA + config.prompt_length = -1 # for PromptTuning + + for config in ADAPTER_CONFIG_MAP.values(): + if isinstance(config, ConfigUnion): + continue + with self.subTest(config=config.__class__.__name__): + self.assertRaises(FrozenInstanceError, lambda: set_attr(config)) + + def test_custom_attr(self): + for config in ADAPTER_CONFIG_MAP.values(): + with self.subTest(config=config.__class__.__name__): + # create a copy to leave original untouched + config = config.replace() + config.dummy_attr = "test_value" + self.assertEqual(config.dummy_attr, "test_value") + + def test_custom_class(self): + @dataclass + class CustomAdapterConfig(SeqBnConfig): + custom_attr: str = "test_value" + + config = CustomAdapterConfig() + config_dict = config.to_dict() + self.assertEqual(config_dict["custom_attr"], "test_value") + # When calling load on an AdapterConfig instance, don't change the class of the config. + config = AdapterConfig.load(config, custom_attr="test_value_2") + self.assertTrue(isinstance(config, CustomAdapterConfig)) + self.assertEqual(config["custom_attr"], "test_value_2") + + def test_config_union_valid(self): + unions = [ + [PrefixTuningConfig(), ParBnConfig()], + [PrefixTuningConfig(), SeqBnConfig()], + [DoubleSeqBnConfig(mh_adapter=False), DoubleSeqBnConfig(output_adapter=False, reduction_factor=2)], + [SeqBnConfig(leave_out=[9, 10, 11], reduction_factor=2), SeqBnConfig(leave_out=list(range(9)))], + ] + for union in unions: + with self.subTest(union=union): + config = ConfigUnion(*union) + self.assertEqual(config.architecture, "union") + + # make sure serialization/ deserialization works + config_dict = config.to_dict() + config_dict = json.loads(json.dumps(config_dict)) + config_new = ConfigUnion.from_dict(config_dict) + self.assertEqual(config, config_new) + + self.assertIsInstance(config_new[0], AdapterConfig) + self.assertIsInstance(config_new[1], AdapterConfig) + + def test_config_union_invalid(self): + unions = [ + ([MAMConfig(), SeqBnConfig()], TypeError), + ([SeqBnConfig(), SeqBnConfig()], ValueError), + ([SeqBnConfig(), DoubleSeqBnConfig()], ValueError), + ] + for union, error_type in unions: + with self.subTest(union=union): + self.assertRaises(error_type, ConfigUnion, *union) + + def test_config_string_valid(self): + to_test = [ + ("double_seq_bn", DoubleSeqBnConfig()), + ("seq_bn[reduction_factor=2, leave_out=[11]]", SeqBnConfig(reduction_factor=2, leave_out=[11])), + ( + "par_bn[reduction_factor={'0': 8, '1': 8, 'default': 16}]", + ParBnConfig(reduction_factor={"0": 8, "1": 8, "default": 16}), + ), + ("prefix_tuning[prefix_length=30, flat=True]", PrefixTuningConfig(prefix_length=30, flat=True)), + ("lora[r=200,alpha=8]", LoRAConfig(r=200, alpha=8)), + ("prefix_tuning|par_bn", ConfigUnion(PrefixTuningConfig(), ParBnConfig())), + ("lora[attn_matrices=['k', 'v']]", LoRAConfig(attn_matrices=["k", "v"])), + ( + "lora[use_gating=True]|prefix_tuning[use_gating=True]|seq_bn[use_gating=True]", + ConfigUnion( + LoRAConfig(use_gating=True), PrefixTuningConfig(use_gating=True), SeqBnConfig(use_gating=True) + ), + ), + ] + for config_str, config in to_test: + with self.subTest(config_str=config_str): + config_new = AdapterConfig.load(config_str) + self.assertEqual(config, config_new) + + def test_config_string_invalid(self): + to_test = [ + ("seq_bn[invalid_key=2]", TypeError), + ("lora[r=8]|invalid_name", ValueError), + ("prefix_tuning[flat=True", ValueError), + ("double_seq_bn[reduction_factor=dict(default=1)]", ValueError), + ] + for config_str, error_type in to_test: + with self.subTest(config_str=config_str): + self.assertRaises(error_type, AdapterConfig.load, config_str) diff --git a/adapters/tests/test_adapter_conversion.py b/adapters/tests/test_adapter_conversion.py new file mode 100644 index 00000000..df209c12 --- /dev/null +++ b/adapters/tests/test_adapter_conversion.py @@ -0,0 +1,236 @@ +import inspect +import re +import tempfile + +import torch + +import adapters +from adapters import AutoAdapterModel +from transformers import ( + MODEL_FOR_CAUSAL_LM_MAPPING, + MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING, + MODEL_FOR_MASKED_LM_MAPPING, + MODEL_FOR_MULTIPLE_CHOICE_MAPPING, + MODEL_FOR_QUESTION_ANSWERING_MAPPING, + MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING, + MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING, + MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING, + AlbertPreTrainedModel, + BertPreTrainedModel, + RobertaPreTrainedModel, + XLMRobertaPreTrainedModel, + XmodPreTrainedModel, +) +from transformers.testing_utils import require_torch, torch_device + + +@require_torch +class ModelClassConversionTestMixin: + + batch_size = 1 + seq_length = 128 + + def run_test(self, static_model, input_shape=None, label_dict=None): + flex_model = AutoAdapterModel.from_pretrained(None, config=self.config(), state_dict=static_model.state_dict()) + static_model.eval() + flex_model.eval() + if ( + static_model.base_model.__class__.__name__ != flex_model.base_model.__class__.__name__ + and not static_model.base_model == static_model + ): + self.skipTest("Skipping as base model classes are different.") + + with tempfile.TemporaryDirectory() as temp_dir: + static_model.save_head(temp_dir) + + loading_info = {} + flex_model.load_head(temp_dir, load_as="test", loading_info=loading_info) + + self.assertEqual( + 0, len(loading_info["missing_keys"]), "Missing keys: {}".format(", ".join(loading_info["missing_keys"])) + ) + # We don't need to convert some of the weights, so remove them for the check + unexpected_keys = loading_info["unexpected_keys"] + if static_model._keys_to_ignore_on_load_missing is not None: + for pat in static_model._keys_to_ignore_on_load_missing: + unexpected_keys = [k for k in unexpected_keys if re.search(pat, k) is None] + # HACK for bert-based models + if isinstance(static_model, BertPreTrainedModel): + unexpected_keys = [k for k in unexpected_keys if "cls.predictions.bias" not in k] + elif ( + isinstance(static_model, RobertaPreTrainedModel) + or isinstance(static_model, XLMRobertaPreTrainedModel) + or isinstance(static_model, XmodPreTrainedModel) + ): + unexpected_keys = [k for k in unexpected_keys if "lm_head.bias" not in k] + elif isinstance(static_model, AlbertPreTrainedModel): + unexpected_keys = [k for k in unexpected_keys if "predictions.bias" not in k] + self.assertEqual(0, len(unexpected_keys), "Unexpected keys: {}".format(", ".join(unexpected_keys))) + + # adapter and head were loaded + self.assertIn("test", flex_model.heads) + + # check equal output + input_shape = input_shape or (self.batch_size, self.seq_length) + in_data = self.get_input_samples(input_shape, config=flex_model.config) + if label_dict: + for k, v in label_dict.items(): + in_data[k] = v + static_model.to(torch_device) + flex_model.to(torch_device) + output1 = static_model(**in_data) + output2 = flex_model(**in_data) + self.assertTrue(torch.allclose(output1.loss, output2.loss)) + self.assertTrue(torch.allclose(output1[1], output2[1])) # it's not called "logits" for all classes + + def test_conversion_causal_lm_model(self): + if self.config_class not in MODEL_FOR_CAUSAL_LM_MAPPING: + self.skipTest("No causal language modeling class.") + + model = MODEL_FOR_CAUSAL_LM_MAPPING[self.config_class](self.config()) + adapters.init(model) + label_dict = {} + label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) + self.run_test(model, label_dict=label_dict) + + def test_conversion_masked_lm_model(self): + if self.config_class not in MODEL_FOR_MASKED_LM_MAPPING: + self.skipTest("No masked language modeling class.") + + model = MODEL_FOR_MASKED_LM_MAPPING[self.config_class](self.config()) + adapters.init(model) + label_dict = {} + label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) + # for encoder-decoder models such as BART, we additionally pass the decoder input ids + if "decoder_input_ids" in inspect.signature(model.forward).parameters: + label_dict["decoder_input_ids"] = label_dict["labels"].clone() + self.run_test(model, label_dict=label_dict) + + def test_conversion_seq2seq_lm_model(self): + if self.config_class not in MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING: + self.skipTest("No seq2seq language modeling class.") + + model = MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING[self.config_class](self.config()) + adapters.init(model) + label_dict = {} + label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) + label_dict["decoder_input_ids"] = label_dict["labels"].clone() + self.run_test(model, label_dict=label_dict) + + def test_conversion_classification_model(self): + if self.config_class not in MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING: + self.skipTest("No sequence classification class.") + + model = MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING[self.config_class](self.config()) + adapters.init(model) + label_dict = {} + label_dict["labels"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) + self.run_test(model, label_dict=label_dict) + + def test_conversion_image_classification_model(self): + if self.config_class not in MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING: + self.skipTest("No image classification class.") + + model = MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING[self.config_class](self.config()) + adapters.init(model) + label_dict = {} + label_dict["labels"] = torch.zeros(3, dtype=torch.long, device=torch_device) + self.run_test(model, input_shape=(3, 3, 224, 224), label_dict=label_dict) + + def test_conversion_question_answering_model(self): + if self.config_class not in MODEL_FOR_QUESTION_ANSWERING_MAPPING: + self.skipTest("No question answering class.") + + model = MODEL_FOR_QUESTION_ANSWERING_MAPPING[self.config_class](self.config()) + adapters.init(model) + label_dict = {} + label_dict["start_positions"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) + label_dict["end_positions"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) + self.run_test(model, label_dict=label_dict) + + def test_conversion_token_classification_model(self): + if self.config_class not in MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING: + self.skipTest("No token classification class.") + + model = MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING[self.config_class](self.config()) + adapters.init(model) + label_dict = {} + label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) + self.run_test(model, label_dict=label_dict) + + def test_conversion_multiple_choice_model(self): + if self.config_class not in MODEL_FOR_MULTIPLE_CHOICE_MAPPING: + self.skipTest("No token classification class.") + + model = MODEL_FOR_MULTIPLE_CHOICE_MAPPING[self.config_class](self.config()) + adapters.init(model) + label_dict = {} + label_dict["labels"] = torch.ones(self.batch_size, dtype=torch.long, device=torch_device) + self.run_test(model, input_shape=(self.batch_size, 2, self.seq_length), label_dict=label_dict) + + def test_equivalent_language_generation(self): + if self.config_class not in MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING: + self.skipTest("no causal lm class.") + + static_model = MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING[self.config_class](self.config()) + adapters.init(static_model) + flex_model = AutoAdapterModel.from_pretrained(None, config=self.config(), state_dict=static_model.state_dict()) + static_model.add_adapter("dummy") + static_model.set_active_adapters("dummy") + static_model.eval() + flex_model.eval() + + with tempfile.TemporaryDirectory() as temp_dir: + static_model.save_adapter(temp_dir, "dummy") + + loading_info = {} + flex_model.load_adapter(temp_dir, loading_info=loading_info) + flex_model.set_active_adapters("dummy") + + input_shape = (self.batch_size, 5) + input_samples = self.get_input_samples(input_shape, config=flex_model.config) + + static_model.to(torch_device) + flex_model.to(torch_device) + + model_gen = static_model.generate(**input_samples) + flex_model_gen = flex_model.generate(**input_samples) + + self.assertEquals(model_gen.shape, flex_model_gen.shape) + self.assertTrue(torch.equal(model_gen, flex_model_gen)) + + def test_full_model_conversion(self): + if self.config_class not in MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING: + self.skipTest("No sequence classification class.") + + static_head_model = MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING[self.config_class](self.config()) + adapters.init(static_head_model) + static_head_model.eval() + + with tempfile.TemporaryDirectory() as temp_dir: + static_head_model.save_pretrained(temp_dir) + + flex_head_model, loading_info = AutoAdapterModel.from_pretrained(temp_dir, output_loading_info=True) + + # Roberta-based models always have a pooler, which is not used by the tested head + keys_to_ignore = ["roberta.pooler.dense.weight", "roberta.pooler.dense.bias"] + + missing_keys = [k for k in loading_info["missing_keys"] if k not in keys_to_ignore] + + self.assertEqual(0, len(missing_keys), "Missing keys: {}".format(", ".join(missing_keys))) + self.assertEqual( + 0, + len(loading_info["unexpected_keys"]), + "Unexpected keys: {}".format(", ".join(loading_info["unexpected_keys"])), + ) + + # static head is re-loaded as "default" + self.assertIn("default", flex_head_model.heads) + + # check equal output + in_data = self.get_input_samples(config=flex_head_model.config) + static_head_model.to(torch_device) + flex_head_model.to(torch_device) + output1 = static_head_model(**in_data) + output2 = flex_head_model(**in_data, head="default") + self.assertTrue(torch.allclose(output1.logits, output2.logits)) diff --git a/adapters/tests/test_adapter_custom_head.py b/adapters/tests/test_adapter_custom_head.py new file mode 100644 index 00000000..b68662bf --- /dev/null +++ b/adapters/tests/test_adapter_custom_head.py @@ -0,0 +1,91 @@ +import tempfile +import unittest + +import torch + +from adapters import AutoAdapterModel +from adapters.heads import ClassificationHead, PredictionHead +from transformers import AutoConfig +from transformers.testing_utils import require_torch, torch_device + +from .test_adapter import ids_tensor + + +class CustomHead(PredictionHead): + def __init__( + self, + model, + head_name, + **config, + ): + super().__init__(head_name) + self.config = config + self.build(model=model) + + def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): + logits = super().forward(outputs[0]) + outputs = (logits,) + outputs[2:] + return outputs + + +@require_torch +class AdapterCustomHeadTest(unittest.TestCase): + def test_add_custom_head(self): + model_name = "bert-base-uncased" + model = AutoAdapterModel.from_pretrained(model_name) + model.register_custom_head("tag", CustomHead) + config = {"num_labels": 3, "layers": 2, "activation_function": "tanh"} + model.add_custom_head(head_type="tag", head_name="custom_head", **config) + model.eval() + model.to(torch_device) + in_data = ids_tensor((1, 128), 1000) + output1 = model(in_data) + model.add_tagging_head("tagging_head", num_labels=3, layers=2) + model.to(torch_device) + output2 = model(in_data) + self.assertEqual(output1[0].size(), output2[0].size()) + + def test_save_load_custom_head(self): + model_name = "bert-base-uncased" + model_config = AutoConfig.from_pretrained(model_name) + model_config.custom_heads = {"tag": CustomHead} + model1 = AutoAdapterModel.from_pretrained(model_name, config=model_config) + model2 = AutoAdapterModel.from_pretrained(model_name, config=model_config) + config = {"num_labels": 3, "layers": 2, "activation_function": "tanh"} + model1.add_custom_head(head_type="tag", head_name="custom_head", **config) + + with tempfile.TemporaryDirectory() as temp_dir: + model1.save_head(temp_dir, "custom_head") + model2.load_head(temp_dir) + + model1.eval() + model2.eval() + + in_data = ids_tensor((1, 128), 1000) + model1.to(torch_device) + model2.to(torch_device) + output1 = model1(in_data) + output2 = model2(in_data) + self.assertEqual(output1[0].size(), output2[0].size()) + state1 = model1.heads["custom_head"].state_dict() + state2 = model2.heads["custom_head"].state_dict() + for (k1, v1), (k2, v2) in zip(state1.items(), state2.items()): + self.assertTrue(torch.equal(v1, v2)) + + def test_builtin_head_as_custom(self): + model_name = "bert-base-uncased" + model_config = AutoConfig.from_pretrained(model_name) + model_config.custom_heads = {"tag": CustomHead} + model = AutoAdapterModel.from_pretrained(model_name, config=model_config) + in_data = ids_tensor((1, 128), 1000) + + model.register_custom_head("classification", ClassificationHead) + model.add_custom_head( + head_type="classification", head_name="custom_head", num_labels=3, layers=2, activation_function="tanh" + ) + model.eval() + model.to(torch_device) + output = model(in_data) + + self.assertEqual((1, 3), output[0].shape) + self.assertEqual("custom_head", model.active_head) diff --git a/adapters/tests/test_adapter_embeddings.py b/adapters/tests/test_adapter_embeddings.py new file mode 100644 index 00000000..8298ae87 --- /dev/null +++ b/adapters/tests/test_adapter_embeddings.py @@ -0,0 +1,168 @@ +import copy +import tempfile + +import torch + +from adapters import AutoAdapterModel +from transformers import AutoTokenizer, Trainer, TrainingArguments +from transformers.testing_utils import require_torch, torch_device + + +def filter_parameters(model, filter_string): + return {k: v for (k, v) in model.named_parameters() if filter_string in k} + + +@require_torch +class EmbeddingTestMixin: + def test_load_embeddings(self): + model = self.get_model() + with tempfile.TemporaryDirectory() as tmp_dir: + model.save_embeddings(tmp_dir, "default") + model.load_embeddings(tmp_dir, "test") + + self.assertEqual(model.active_embeddings, "test") + + def test_add_embeddings(self): + model = self.get_model() + tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") + model.add_embeddings("test", tokenizer) + self.assertEqual(model.active_embeddings, "test") + + def test_add_embedding_tokens(self): + model = self.get_model() + tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") + self.assertEqual(tokenizer.vocab_size, 10000) + tokenizer.add_tokens(["test_token"]) + model.add_embeddings("test", tokenizer) + self.assertEqual(model.get_input_embeddings().num_embeddings, 10001) + + def test_delete_embeddings(self): + model = self.get_model() + tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") + model.add_embeddings("test", tokenizer) + self.assertEqual(model.active_embeddings, "test") + model.delete_embeddings("test") + self.assertFalse("test" in model.loaded_embeddings) + self.assertEqual(model.active_embeddings, "default") + + def test_save_load_embedding(self): + model = self.get_model() + tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") + input_data = self.get_input_samples((1, 128), vocab_size=tokenizer.vocab_size, config=model.config) + model.add_embeddings("test", tokenizer) + model.eval() + model.to(torch_device) + output1 = model(**input_data) + self.assertEqual(model.active_embeddings, "test") + + with tempfile.TemporaryDirectory() as tmp_dir: + model.save_embeddings(tmp_dir, "test", tokenizer=tokenizer) + tokenizer_ref = model.load_embeddings(tmp_dir, "test_reloaded") + + self.assertEqual(model.active_embeddings, "test_reloaded") + model.to(torch_device) + output2 = model(**input_data) + self.assertTrue( + torch.equal(model.loaded_embeddings["test"].weight, model.loaded_embeddings["test_reloaded"].weight) + ) + self.assertTrue(torch.equal(output1[0], output2[0])) + self.assertEqual(tokenizer.vocab, tokenizer_ref.vocab) + + def test_back_to_default(self): + model = self.get_model() + model.eval() + input_data = self.get_input_samples((1, 128), config=model.config) + output1 = model(**input_data) + tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") + model.add_embeddings("test", tokenizer) + self.assertEqual(model.active_embeddings, "test") + model.set_active_embeddings("default") + output2 = model(**input_data) + self.assertEqual(model.active_embeddings, "default") + self.assertTrue(torch.equal(output1[0], output2[0])) + + def test_training_embedding(self): + tokenizer = AutoTokenizer.from_pretrained(self.tokenizer_name, use_fast=False) + if tokenizer.pad_token is None: + tokenizer.pad_token = tokenizer.eos_token + model = AutoAdapterModel.from_config(self.config()) + model.add_embeddings("test", tokenizer) + self.assertEqual(model.active_embeddings, "test") + model.add_adapter("test") + self.add_head(model, "test") + model.train_adapter("test", train_embeddings=True) + + for k, v in filter_parameters(model, "adapters.test.").items(): + self.assertTrue(v.requires_grad, k) + + self.assertTrue(model.get_input_embeddings().train) + + state_dict_pre = copy.deepcopy(model.state_dict()) + + train_dataset = self.dataset() + training_args = TrainingArguments( + output_dir="./examples", + do_train=True, + learning_rate=0.4, + max_steps=15, + no_cuda=True, + per_device_train_batch_size=2, + label_names=["labels"], + ) + + # evaluate + trainer = Trainer( + model=model, + args=training_args, + train_dataset=train_dataset, + ) + trainer.train() + + self.assertFalse( + all( + torch.equal(v1, v2) + for ((k1, v1), (k2, v2)) in zip(state_dict_pre.items(), model.state_dict().items()) + if "test" in k1 + ) + ) + self.assertTrue( + all( + torch.equal(v1, v2) + for ((k1, v1), (k2, v2)) in zip(state_dict_pre.items(), model.state_dict().items()) + if "test" not in k1 + ) + ) + + def test_reference_embedding(self): + model = AutoAdapterModel.from_config(self.config()) # self.get_model() + tokenizer = AutoTokenizer.from_pretrained(self.tokenizer_name, use_fast=False) + if tokenizer.pad_token is None: + tokenizer.pad_token = tokenizer.eos_token + new_tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") + + model.add_embeddings("test", new_tokenizer, "default", tokenizer) + + default_embedding = model.base_model.loaded_embeddings["default"] + test_embedding = model.base_model.loaded_embeddings["test"] + + input_test = [] + input_default = [] + + for v, idx in new_tokenizer.get_vocab().items(): + if v in tokenizer.get_vocab() and not v.startswith("##"): + input_test.append(idx) + input_default.append(tokenizer.get_vocab()[v]) + if len(input_test) >= 5: + break + + input_default = torch.tensor([input_default]) + input_test = torch.tensor([input_test]) + + default = default_embedding(input_default) + test = test_embedding(input_test) + + self.assertTrue(torch.equal(default, test)) + + # activate for training + model.add_adapter("test") + model.train_adapter("test", train_embeddings=True) diff --git a/adapters/tests/test_adapter_fusion_common.py b/adapters/tests/test_adapter_fusion_common.py new file mode 100644 index 00000000..4ee25fa0 --- /dev/null +++ b/adapters/tests/test_adapter_fusion_common.py @@ -0,0 +1,216 @@ +import copy +import os +import tempfile +from dataclasses import asdict + +import torch + +from adapters import ADAPTER_MODEL_MAPPING, ADAPTERFUSION_CONFIG_MAP, AdapterConfig, AutoAdapterModel, SeqBnConfig +from adapters.composition import Fuse +from adapters.utils import ADAPTERFUSION_WEIGHTS_NAME +from adapters.wrappers import load_model +from transformers.testing_utils import require_torch, torch_device + + +@require_torch +class AdapterFusionModelTestMixin: + def test_add_adapter_fusion(self): + config_name = "seq_bn" + adapter_config = AdapterConfig.load(config_name) + + for adater_fusion_config_name, adapter_fusion_config in ADAPTERFUSION_CONFIG_MAP.items(): + model = self.get_model() + model.eval() + + with self.subTest(model_class=model.__class__.__name__, config=config_name): + name1 = f"{config_name}-1" + name2 = f"{config_name}-2" + model.add_adapter(name1, config=config_name) + model.add_adapter(name2, config=config_name) + + # adapter is correctly added to config + self.assertTrue(name1 in model.adapters_config) + self.assertTrue(name2 in model.adapters_config) + self.assertEqual(asdict(adapter_config), asdict(model.adapters_config.get(name1))) + self.assertEqual(asdict(adapter_config), asdict(model.adapters_config.get(name2))) + + model.add_adapter_fusion([name1, name2], adater_fusion_config_name) + + # check forward pass + input_data = self.get_input_samples(config=model.config) + model.set_active_adapters([[name1, name2]]) + model.to(torch_device) + adapter_output = model(**input_data) + model.set_active_adapters(None) + base_output = model(**input_data) + self.assertEqual(len(adapter_output), len(base_output)) + self.assertFalse(torch.equal(adapter_output[0], base_output[0])) + + def test_add_adapter_fusion_different_config(self): + model = self.get_model() + model.eval() + + # fusion between a and b should be possible whereas fusion between a and c should fail + model.add_adapter("a", config=SeqBnConfig(reduction_factor=16)) + model.add_adapter("b", config=SeqBnConfig(reduction_factor=2)) + model.add_adapter("c", config="double_seq_bn") + + # correct fusion + model.add_adapter_fusion(["a", "b"]) + self.assertIn("a,b", model.adapters_config.fusions) + # failing fusion + self.assertRaises(ValueError, lambda: model.add_adapter_fusion(["a", "c"])) + + def test_delete_adapter_fusion(self): + model = self.get_model() + model.eval() + + name1 = "test_adapter_1" + name2 = "test_adapter_2" + model.add_adapter(name1, config="double_seq_bn") + model.add_adapter(name2, config="double_seq_bn") + self.assertTrue(name1 in model.adapters_config) + self.assertTrue(name2 in model.adapters_config) + + model.add_adapter_fusion([name1, name2]) + self.assertTrue(",".join([name1, name2]) in model.adapters_config.fusions) + + model.delete_adapter_fusion([name1, name2]) + self.assertFalse(",".join([name1, name2]) in model.adapters_config.fusions) + + def test_load_adapter_fusion(self): + for adater_fusion_config_name, adapter_fusion_config in ADAPTERFUSION_CONFIG_MAP.items(): + model1 = self.get_model() + model1.eval() + + with self.subTest(model_class=model1.__class__.__name__): + name1 = "name1" + name2 = "name2" + model1.add_adapter(name1) + model1.add_adapter(name2) + + model2 = copy.deepcopy(model1) + model2.eval() + + model1.add_adapter_fusion([name1, name2], adater_fusion_config_name) + model1.set_active_adapters([[name1, name2]]) + + with tempfile.TemporaryDirectory() as temp_dir: + model1.save_adapter_fusion(temp_dir, ",".join([name1, name2])) + # also tests that set_active works + model2.load_adapter_fusion(temp_dir, set_active=True) + # In another directory, also check that saving via passing a Fuse block works + with tempfile.TemporaryDirectory() as temp_dir: + model1.save_adapter_fusion(temp_dir, Fuse(name1, name2)) + self.assertTrue(os.path.exists(os.path.join(temp_dir, ADAPTERFUSION_WEIGHTS_NAME))) + + # check if adapter was correctly loaded + self.assertEqual(model1.adapters_config.fusions.keys(), model2.adapters_config.fusions.keys()) + + # check equal output + in_data = self.get_input_samples(config=model1.config) + model1.to(torch_device) + model2.to(torch_device) + output1 = model1(**in_data) + output2 = model2(**in_data) + self.assertEqual(len(output1), len(output2)) + self.assertTrue(torch.equal(output1[0], output2[0])) + + def test_load_full_model_fusion(self): + model1 = self.get_model() + model1.eval() + + name1 = "name1" + name2 = "name2" + model1.add_adapter(name1) + model1.add_adapter(name2) + model1.add_adapter_fusion([name1, name2]) + # save & reload model + with tempfile.TemporaryDirectory() as temp_dir: + model1.save_pretrained(temp_dir) + + model2 = load_model(temp_dir, self.model_class) + + # check if AdapterFusion was correctly loaded + self.assertTrue(model1.adapters_config.fusions == model2.adapters_config.fusions) + + # check equal output + input_data = self.get_input_samples(config=model1.config) + model1.set_active_adapters([[name1, name2]]) + model2.set_active_adapters([[name1, name2]]) + model1.to(torch_device) + model2.to(torch_device) + output1 = model1(**input_data) + output2 = model2(**input_data) + self.assertEqual(len(output1), len(output2)) + self.assertTrue(torch.equal(output1[0], output2[0])) + + def test_model_config_serialization_fusion(self): + """PretrainedConfigurations should not raise an Exception when serializing the config dict + + See, e.g., PretrainedConfig.to_json_string() + """ + for k, v in ADAPTERFUSION_CONFIG_MAP.items(): + model = self.get_model() + model.add_adapter("test1") + model.add_adapter("test2") + model.add_adapter_fusion(["test1", "test2"], config=v) + # should not raise an exception + model.config.to_json_string() + + def test_adapter_fusion_save_with_head(self): + if self.config_class not in ADAPTER_MODEL_MAPPING: + self.skipTest("Does not support flex heads.") + model1 = AutoAdapterModel.from_config(self.config()) + model1.eval() + + name1 = "name1" + name2 = "name2" + head_name = "adapter_fusion_head" + model1.add_adapter(name1) + model1.add_adapter(name2) + model2 = copy.deepcopy(model1) + model2.eval() + model1.add_adapter_fusion([name1, name2]) + self.add_head(model1, head_name) + model1.set_active_adapters(Fuse(name1, name2)) + # save & reload model + with tempfile.TemporaryDirectory() as temp_dir: + model1.save_adapter_fusion(temp_dir, ",".join([name1, name2]), with_head=head_name) + model2.load_adapter_fusion(temp_dir, set_active=True) + + self.assertTrue(head_name in model2.heads) + self.assertEqual(model1.active_head, model2.active_head) + self.assertEqual(model1.active_adapters, model2.active_adapters) + + # assert equal forward pass + in_data = self.get_input_samples(config=model1.config) + model1.to(torch_device) + model2.to(torch_device) + output1 = model1(**in_data) + output2 = model2(**in_data) + self.assertEqual(len(output1), len(output2)) + self.assertTrue(torch.equal(output1[0], output2[0])) + + def test_output_adapter_fusion_attentions(self): + model = self.get_model() + model.eval() + + model.add_adapter("a") + model.add_adapter("b") + model.add_adapter_fusion(["a", "b"]) + model.to(torch_device) + + input_data = self.get_input_samples(config=model.config) + + model.set_active_adapters(Fuse("a", "b")) + output_1 = model(**input_data, output_adapter_fusion_attentions=True) + + self.assertEqual(len(output_1[0]), self.default_input_samples_shape[0]) + self.assertTrue(hasattr(output_1, "adapter_fusion_attentions")) + attention_scores = output_1.adapter_fusion_attentions["a,b"] + self.assertEqual(len(list(model.iter_layers())), len(attention_scores)) + for k, per_layer_scores in attention_scores.items(): + self.assertEqual(len(per_layer_scores), 1) + for k, v in per_layer_scores.items(): + self.assertEqual(self.default_input_samples_shape[0], v.shape[0], k) diff --git a/adapters/tests/test_adapter_fusion_config.py b/adapters/tests/test_adapter_fusion_config.py new file mode 100644 index 00000000..0ad1860f --- /dev/null +++ b/adapters/tests/test_adapter_fusion_config.py @@ -0,0 +1,32 @@ +import unittest +from dataclasses import FrozenInstanceError + +from adapters import ADAPTERFUSION_CONFIG_MAP, AdapterFusionConfig +from transformers.testing_utils import require_torch + + +@require_torch +class AdapterFusionConfigTest(unittest.TestCase): + + config_names = ADAPTERFUSION_CONFIG_MAP.keys() + + def test_config_load(self): + for config_name in self.config_names: + with self.subTest(config_name=config_name): + config = AdapterFusionConfig.load(config_name, temperature=True) + self.assertTrue(isinstance(config, AdapterFusionConfig)) + self.assertEqual(config.temperature, True) + + def test_config_immutable(self): + def set_attr(config: AdapterFusionConfig): + config.temperature = True + + for config in ADAPTERFUSION_CONFIG_MAP.values(): + with self.subTest(config=config.__class__.__name__): + self.assertRaises(FrozenInstanceError, lambda: set_attr(config)) + + def test_custom_attr(self): + for config in ADAPTERFUSION_CONFIG_MAP.values(): + with self.subTest(config=config.__class__.__name__): + config.dummy_attr = "test_value" + self.assertEqual(config.dummy_attr, "test_value") diff --git a/adapters/tests/test_adapter_heads.py b/adapters/tests/test_adapter_heads.py new file mode 100644 index 00000000..af1749a9 --- /dev/null +++ b/adapters/tests/test_adapter_heads.py @@ -0,0 +1,457 @@ +import os +import tempfile + +import torch + +import adapters +from adapters import ADAPTER_MODEL_MAPPING, AdapterSetup, AutoAdapterModel +from adapters.composition import BatchSplit, Stack +from transformers import AutoModelForSequenceClassification +from transformers.testing_utils import require_torch, torch_device + +from .methods import create_twin_models + + +@require_torch +class PredictionHeadModelTestMixin: + + batch_size = 1 + seq_length = 128 + + def run_prediction_head_test( + self, model, compare_model, head_name, input_shape=None, output_shape=(1, 2), label_dict=None + ): + # first, check if the head is actually correctly registered as part of the pt module + self.assertTrue(f"heads.{head_name}" in dict(model.named_modules())) + + # save & reload + with tempfile.TemporaryDirectory() as temp_dir: + model.save_head(temp_dir, head_name) + + compare_model.load_head(temp_dir) + + # check if adapter was correctly loaded + self.assertTrue(head_name in compare_model.heads) + + model.to(torch_device) + compare_model.to(torch_device) + + # make a forward pass + model.active_head = head_name + input_shape = input_shape or (self.batch_size, self.seq_length) + in_data = self.get_input_samples(input_shape, config=model.config) + if label_dict: + for k, v in label_dict.items(): + in_data[k] = v + output1 = model(**in_data) + # For the Seq2SeqLMOutput logits are at index 0 + # ToDo figure out why + idx = "logits" if hasattr(output1, "logits") else 1 + self.assertEqual(output_shape, tuple(output1[idx].size())) + # check equal output + compare_model.active_head = head_name + output2 = compare_model(**in_data) + self.assertEqual(len(output1), len(output2)) + self.assertTrue(torch.equal(output1[idx], output2[idx])) + + def test_classification_head(self): + if "classification" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + self.skipTest("No classification head") + + model1, model2 = create_twin_models(AutoAdapterModel, self.config) + + model1.add_classification_head("dummy") + label_dict = {} + label_dict["labels"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) + self.run_prediction_head_test(model1, model2, "dummy", label_dict=label_dict) + + def test_image_classification_head(self): + if "image_classification" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + self.skipTest("No image classification head") + + model1, model2 = create_twin_models(AutoAdapterModel, self.config) + + model1.add_image_classification_head("dummy") + label_dict = {} + label_dict["labels"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) + self.run_prediction_head_test(model1, model2, "dummy", input_shape=(1, 3, 224, 224), label_dict=label_dict) + + def test_multiple_choice_head(self): + if "multiple_choice" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + self.skipTest("No multiple choice head") + + model1, model2 = create_twin_models(AutoAdapterModel, self.config) + + model1.add_multiple_choice_head("dummy") + label_dict = {} + label_dict["labels"] = torch.ones(self.batch_size, dtype=torch.long, device=torch_device) + self.run_prediction_head_test( + model1, model2, "dummy", input_shape=(self.batch_size, 2, self.seq_length), label_dict=label_dict + ) + + def test_tagging_head(self): + if "tagging" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + self.skipTest("No tagging head") + + model1, model2 = create_twin_models(AutoAdapterModel, self.config) + + model1.add_tagging_head("dummy") + label_dict = {} + label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) + self.run_prediction_head_test( + model1, model2, "dummy", output_shape=(self.batch_size, self.seq_length, 2), label_dict=label_dict + ) + + def test_qa_head(self): + if "question_answering" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + self.skipTest("No QA head") + + model1, model2 = create_twin_models(AutoAdapterModel, self.config) + + model1.add_qa_head("dummy") + label_dict = {} + label_dict["start_positions"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) + label_dict["end_positions"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) + self.run_prediction_head_test( + model1, model2, "dummy", output_shape=(self.batch_size, self.seq_length), label_dict=label_dict + ) + + def test_causal_lm_head(self): + if "causal_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + self.skipTest("No causal language model head") + + model1, model2 = create_twin_models(AutoAdapterModel, self.config) + model1.add_causal_lm_head("dummy") + + label_dict = {} + label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) + + self.run_prediction_head_test( + model1, + model2, + "dummy", + output_shape=(self.batch_size, self.seq_length, model1.config.vocab_size), + label_dict=label_dict, + ) + + # Finally, also check if generation works properly + input_ids = self.get_input_samples((1, self.seq_length), config=model1.config)["input_ids"] + input_ids = input_ids.to(torch_device) + # Use a different length for the seq2seq output + seq_output_length = self.seq_length + 30 + generated = model1.generate(input_ids, max_length=seq_output_length) + self.assertEqual(generated.shape[0], 1) + self.assertLessEqual(generated.shape[1], seq_output_length) + + def test_seq2seq_lm_head(self): + if "seq2seq_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + self.skipTest("No seq2seq language model head") + + model1, model2 = create_twin_models(AutoAdapterModel, self.config) + model1.add_seq2seq_lm_head("dummy") + + label_dict = {} + label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) + + # prepare decoder_input_ids similar to how DataCollatorForSeq2Seq does it + if hasattr(model1, "prepare_decoder_input_ids_from_labels"): + decoder_input_ids = model1.prepare_decoder_input_ids_from_labels(labels=label_dict["labels"]) + label_dict["decoder_input_ids"] = decoder_input_ids + + self.run_prediction_head_test( + model1, + model2, + "dummy", + output_shape=(self.batch_size, self.seq_length, model1.config.vocab_size), + label_dict=label_dict, + ) + + # Finally, also check if generation works properly + input_ids = self.get_input_samples((1, self.seq_length), config=model1.config)["input_ids"] + input_ids = input_ids.to(torch_device) + # Use a different length for the seq2seq output + seq_output_length = self.seq_length + 30 + generated = model1.generate(input_ids, max_length=seq_output_length) + self.assertTrue(generated.shape[1] <= seq_output_length) + self.assertEqual(generated.shape[0], 1) + + def test_masked_lm_head(self): + if "masked_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + self.skipTest("No causal or seq2seq language model head") + + model1, model2 = create_twin_models(AutoAdapterModel, self.config) + + model1.add_masked_lm_head("dummy") + label_dict = {} + label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) + self.run_prediction_head_test( + model1, + model2, + "dummy", + output_shape=(self.batch_size, self.seq_length, model1.config.vocab_size), + label_dict=label_dict, + ) + + def test_lm_head_freeze_output_embeddings(self): + if self.config_class not in ADAPTER_MODEL_MAPPING or ( + "seq2seq_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types + and "causal_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types + ): + self.skipTest("No seq2seq or causal language model head") + + model1 = AutoAdapterModel.from_config(self.config()) + model1.add_adapter("adapter1") + if "seq2seq_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + model1.add_seq2seq_lm_head("adapter1") + else: + model1.add_causal_lm_head("adapter1") + + model1.train_adapter("adapter1") + + for n, p in model1.get_output_embeddings().named_parameters(): + self.assertFalse(p.requires_grad, f"Parameter {n} should not be trainable.") + + def test_dependency_parsing_head(self): + if "dependency_parsing" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + self.skipTest("No dependency parsing head") + + model1, model2 = create_twin_models(AutoAdapterModel, self.config) + + model1.add_dependency_parsing_head("dummy") + label_dict = {} + label_dict["labels_arcs"] = torch.zeros( + (self.batch_size, self.seq_length), dtype=torch.long, device=torch_device + ) + label_dict["labels_rels"] = torch.zeros( + (self.batch_size, self.seq_length), dtype=torch.long, device=torch_device + ) + label_dict["word_starts"] = torch.zeros( + (self.batch_size, self.seq_length), dtype=torch.long, device=torch_device + ) + self.run_prediction_head_test( + model1, model2, "dummy", output_shape=(1, self.seq_length, self.seq_length + 1, 2), label_dict=label_dict + ) + + def test_delete_head(self): + model = AutoAdapterModel.from_config(self.config()) + model.eval() + + name = "test_head" + self.add_head(model, name) + self.assertTrue(name in model.heads) + self.assertTrue(name in model.config.prediction_heads) + self.assertEqual(name, model.active_head) + + model.delete_head(name) + self.assertFalse(name in model.heads) + self.assertFalse(name in model.config.prediction_heads) + self.assertNotEqual(name, model.active_head) + + def test_adapter_with_head(self): + model1, model2 = create_twin_models(AutoAdapterModel, self.config) + + name = "dummy" + model1.add_adapter(name) + output_size = self.add_head(model1, name, num_labels=3) + model1.set_active_adapters(name) + with tempfile.TemporaryDirectory() as temp_dir: + model1.save_adapter(temp_dir, name) + + model2.load_adapter(temp_dir) + model2.set_active_adapters(name) + # check equal output + in_data = self.get_input_samples(config=model1.config) + model1.to(torch_device) + model2.to(torch_device) + output1 = model1(**in_data) + output2 = model2(**in_data) + self.assertEqual(len(output1), len(output2)) + self.assertTrue(torch.equal(output1[0], output2[0])) + self.assertEqual(output_size, output1[0].size()[1]) + + def test_adapter_with_head_load_as(self): + model1, model2 = create_twin_models(AutoAdapterModel, self.config) + + name = "dummy" + model1.add_adapter(name) + output_size = self.add_head(model1, name, num_labels=3) + model1.set_active_adapters(name) + with tempfile.TemporaryDirectory() as temp_dir: + model1.save_adapter(temp_dir, name) + + # reload using a different name + model2.load_adapter(temp_dir, load_as="new_name") + model2.set_active_adapters("new_name") + + # check equal output + in_data = self.get_input_samples(config=model1.config) + model1.to(torch_device) + model2.to(torch_device) + output1 = model1(**in_data) + output2 = model2(**in_data) + self.assertEqual(len(output1), len(output2)) + self.assertTrue(torch.equal(output1[0], output2[0])) + self.assertEqual(output_size, output1[0].size()[1]) + + def test_load_full_model(self): + model = AutoAdapterModel.from_config(self.config()) + self.add_head(model, "dummy", layers=1) + + true_config = model.get_prediction_heads_config() + with tempfile.TemporaryDirectory() as temp_dir: + # save + model.save_pretrained(temp_dir) + # reload + model = AutoAdapterModel.from_pretrained(temp_dir) + self.assertIn("dummy", model.heads) + self.assertDictEqual(true_config, model.get_prediction_heads_config()) + + def test_batch_split_head(self): + model = AutoAdapterModel.from_config(self.config()) + output_size_a = self.add_head(model, "a", num_labels=2) + output_size_b = self.add_head(model, "b", num_labels=2) + model.active_head = BatchSplit("a", "b", batch_sizes=[1, 2]) + + in_data = self.get_input_samples(config=model.config) + model.to(torch_device) + out = model(**in_data) + + self.assertEqual(2, len(out)) + self.assertEqual((1, output_size_a), out[0][0].shape[:2]) + self.assertEqual((2, output_size_b), out[1][0].shape[:2]) + + def test_batch_split_adapter_head(self): + model = AutoAdapterModel.from_config(self.config()) + self.add_head(model, "a") + self.add_head(model, "b") + model.add_adapter("a") + model.add_adapter("b") + model.add_adapter("c") + model.set_active_adapters(BatchSplit(Stack("c", "a"), "b", batch_sizes=[2, 1])) + + in_data = self.get_input_samples(config=model.config) + model.to(torch_device) + out = model(**in_data) + + self.assertEqual(2, len(out)) + self.assertTrue(isinstance(model.active_head, BatchSplit)) + + def test_reload_static_to_flex_head(self): + if "classification" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + self.skipTest("No classification head available") + static_head_model = AutoModelForSequenceClassification.from_config(self.config()) + adapters.init(static_head_model) + flex_head_model = AutoAdapterModel.from_pretrained( + None, config=self.config(), state_dict=static_head_model.state_dict() + ) + static_head_model.eval() + flex_head_model.eval() + + static_head_model.add_adapter("test") + + with tempfile.TemporaryDirectory() as temp_dir: + static_head_model.save_adapter(temp_dir, "test") + + loading_info = {} + flex_head_model.load_adapter(temp_dir, loading_info=loading_info) + + # Load the adapter a second time to make sure our conversion script doesn't break anything + flex_head_model.load_adapter(temp_dir, loading_info=loading_info) + self.assertEqual(0, len(loading_info["missing_keys"])) + self.assertEqual(0, len(loading_info["unexpected_keys"])) + + # adapter and head were loaded + self.assertIn("test", flex_head_model.adapters_config) + self.assertIn("test", flex_head_model.heads) + + # check equal output + in_data = self.get_input_samples(config=flex_head_model.config) + static_head_model.to(torch_device) + flex_head_model.to(torch_device) + with AdapterSetup("test"): + output1 = static_head_model(**in_data) + output2 = flex_head_model(**in_data, head="test") + self.assertTrue(torch.all(torch.isclose(output1.logits, output2.logits))) + + def test_invertible_adapter_with_head(self): + if "masked_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + lm_head = "masked_lm" + elif "casual_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + lm_head = "casual_lm" + elif "seq2seq_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: + lm_head = "seq2seq_lm" + else: + self.skipTest("No masked or causel language model head") + + model = AutoAdapterModel.from_config(self.config()) + model.add_adapter("test", config="seq_bn_inv") + if lm_head == "casual_lm": + model.add_causal_lm_head("test") + elif lm_head == "masked_lm": + model.add_masked_lm_head("test") + elif lm_head == "seq2seq_lm": + model.add_seq2seq_lm_head("test") + else: + raise RuntimeError("{} is not a valid lm head".format(lm_head)) + model.set_active_adapters("test") + + # Set a hook before the invertible adapter to make sure it's actually called twice: + # Once after the embedding layer and once in the prediction head. + calls = 0 + + def forward_pre_hook(module, input): + nonlocal calls + calls += 1 + + inv_adapter = model.base_model.get_invertible_adapter() + self.assertIsNotNone(inv_adapter) + inv_adapter.register_forward_pre_hook(forward_pre_hook) + + in_data = self.get_input_samples((self.batch_size, self.seq_length), config=model.config) + model.to(torch_device) + out = model(**in_data) + + self.assertEqual((self.batch_size, self.seq_length, model.config.vocab_size), out[0].shape) + self.assertEqual(2, calls) + + def test_context_simple(self, expected_number_of_adapter_calls=1): + model = AutoAdapterModel.from_config(self.config()) + model.add_adapter("a") + output_size = self.add_head(model, "a", num_labels=3) + # Make sure no adapter is activated + model.active_adapters = None + model.active_head = None + model.to(torch_device) + in_data = self.get_input_samples(config=model.config) + + # Set a hook before the adapter to make sure it's actually called. + calls = 0 + + def forward_pre_hook(module, input): + nonlocal calls + calls += 1 + + adapter = model.get_adapter("a")[0]["output_adapter"] + adapter.register_forward_pre_hook(forward_pre_hook) + + with AdapterSetup("a"): + out = model(**in_data) + + self.assertEqual(out[0].shape[:2], (3, output_size)) + self.assertEqual(calls, expected_number_of_adapter_calls) + + def test_save_all_adapters_with_head(self): + if self.config_class not in ADAPTER_MODEL_MAPPING: + self.skipTest("Does not support flex heads.") + + model = AutoAdapterModel.from_config(self.config()) + model.eval() + model.add_adapter("test") + self.add_head(model, "test") + with tempfile.TemporaryDirectory() as tmp_dir: + model.save_all_adapters(tmp_dir, with_head=True) + self.assertTrue(os.path.isfile(os.path.join(tmp_dir, "test", "head_config.json"))) + + with tempfile.TemporaryDirectory() as tmp_dir: + model.save_all_adapters(tmp_dir, with_head=False) + self.assertFalse(os.path.isfile(os.path.join(tmp_dir, "test", "head_config.json"))) diff --git a/adapters/tests/test_adapter_hub.py b/adapters/tests/test_adapter_hub.py new file mode 100644 index 00000000..7ebf9acb --- /dev/null +++ b/adapters/tests/test_adapter_hub.py @@ -0,0 +1,166 @@ +import os +import unittest + +import numpy as np + +import adapters +from adapters import ADAPTER_CONFIG_MAP, AdapterConfig, BertAdapterModel, get_adapter_config_hash +from adapters.trainer import AdapterTrainer as Trainer +from adapters.utils import find_in_index +from transformers import ( # get_adapter_config_hash, + AutoModel, + AutoTokenizer, + BertForSequenceClassification, + GlueDataset, + GlueDataTrainingArguments, + TrainingArguments, + glue_compute_metrics, +) +from transformers.testing_utils import require_torch, torch_device + +from .test_adapter import ids_tensor + + +SAMPLE_INDEX = os.path.join(os.path.dirname(os.path.abspath(__file__)), "fixtures/hub-index.sample.json") + + +@require_torch +class AdapterHubTest(unittest.TestCase): + search_samples = [ + ("t@ukp", "pfeiffer", "path/to/pfeiffer/ukp"), + ("s@ukp", "pfeiffer", "path/to/pfeiffer/ukp"), + ("xyz", "pfeiffer", None), + ("t/s", None, "path/to/default"), + ("t/s@ukp", "pfeiffer", "path/to/pfeiffer/ukp"), + ("t/s", "pfeiffer", "path/to/pfeiffer/default"), + ("t/s", "houlsby", "path/to/houlsby/example-org"), + ] + + def test_find_in_index(self): + for sample in self.search_samples: + with self.subTest(sample=sample): + config = ADAPTER_CONFIG_MAP[sample[1]] if sample[1] else None + found_entry = find_in_index(sample[0], None, config, index_file=SAMPLE_INDEX) + self.assertEqual(sample[2], found_entry) + + def test_load_task_adapter_from_hub(self): + """This test checks if an adapter is loaded from the Hub correctly by evaluating it on some MRPC samples + and comparing with the expected result. + """ + for config in ["pfeiffer", "houlsby"]: + with self.subTest(config=config): + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + model = BertForSequenceClassification.from_pretrained("bert-base-uncased") + adapters.init(model) + + loading_info = {} + adapter_name = model.load_adapter( + "sts/mrpc@ukp", config=config, version="1", loading_info=loading_info + ) + model.train_adapter(adapter_name) + + self.assertEqual(0, len(loading_info["missing_keys"])) + self.assertEqual(0, len(loading_info["unexpected_keys"])) + + self.assertIn(adapter_name, model.adapters_config.adapters) + self.assertNotIn(adapter_name, model.base_model.invertible_adapters) + + # check if config is valid + expected_hash = get_adapter_config_hash(AdapterConfig.load(config)) + real_hash = get_adapter_config_hash(model.adapters_config.get(adapter_name)) + self.assertEqual(expected_hash, real_hash) + + # setup dataset + data_args = GlueDataTrainingArguments( + task_name="mrpc", + data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", + overwrite_cache=True, + ) + eval_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="dev") + training_args = TrainingArguments(output_dir="./examples", no_cuda=True) + + # evaluate + trainer = Trainer( + model=model, + args=training_args, + eval_dataset=eval_dataset, + compute_metrics=self._compute_glue_metrics("mrpc"), + adapter_names=["mrpc"], + ) + result = trainer.evaluate() + self.assertGreater(result["eval_acc"], 0.9) + + def _compute_glue_metrics(self, task_name): + return lambda p: glue_compute_metrics(task_name, np.argmax(p.predictions, axis=1), p.label_ids) + + def test_load_task_adapter_from_hub_with_leave_out(self): + model = AutoModel.from_pretrained("bert-base-uncased") + adapters.init(model) + + loading_info = {} + adapter_name = model.load_adapter("sts/mrpc@ukp", config="pfeiffer", loading_info=loading_info, leave_out=[11]) + + self.assertEqual(0, len(loading_info["missing_keys"])) + # self.assertEqual(0, len(loading_info["unexpected_keys"])) + self.assertIn(adapter_name, model.adapters_config.adapters) + + # check if leave out was applied to config + self.assertEqual([11], model.adapters_config.get(adapter_name).leave_out) + + # layer 11 should be removed while others should still exist + self.assertIn(adapter_name, model.base_model.encoder.layer[10].output.adapters) + self.assertNotIn(adapter_name, model.base_model.encoder.layer[11].output.adapters) + + def test_load_lang_adapter_from_hub(self): + for config in ["seq_bn_inv", "double_seq_bn_inv"]: + with self.subTest(config=config): + model = AutoModel.from_pretrained("bert-base-multilingual-cased") + adapters.init(model) + config = AdapterConfig.load(config, non_linearity="gelu", reduction_factor=2) + + loading_info = {} + adapter_name = model.load_adapter( + "fi/wiki@ukp", config=config, set_active=True, loading_info=loading_info + ) + + self.assertEqual(0, len(loading_info["missing_keys"])) + self.assertEqual(0, len(loading_info["unexpected_keys"])) + + # check if adapter & invertible adapter were added + self.assertIn(adapter_name, model.adapters_config.adapters) + self.assertIn(adapter_name, model.invertible_adapters) + + # check if config is valid + # TODO-AH hashes are not guaranteed to be equal because of legacy keys in lang adapter config + # expected_hash = get_adapter_config_hash(config) + # real_hash = get_adapter_config_hash(model.adapters_config.get(adapter_name)) + # self.assertEqual(expected_hash, real_hash) + + # check size of output + in_data = ids_tensor((1, 128), 1000) + model.to(torch_device) + output = model(in_data) + self.assertEqual([1, 128, 768], list(output[0].size())) + + def test_load_adapter_with_head_from_hub(self): + model = BertAdapterModel.from_pretrained("bert-base-uncased") + + loading_info = {} + adapter_name = model.load_adapter( + "qa/squad1@ukp", config="houlsby", version="1", set_active=True, loading_info=loading_info + ) + + self.assertEqual(0, len(loading_info["missing_keys"])) + self.assertEqual(0, len(loading_info["unexpected_keys"])) + + self.assertIn(adapter_name, model.adapters_config.adapters) + # check if config is valid + expected_hash = get_adapter_config_hash(AdapterConfig.load("houlsby")) + real_hash = get_adapter_config_hash(model.adapters_config.get(adapter_name)) + self.assertEqual(expected_hash, real_hash) + + # check size of output + in_data = ids_tensor((1, 128), 1000) + model.to(torch_device) + output = model(in_data) + self.assertEqual([1, 128], list(output[0].size())) diff --git a/adapters/tests/test_adapter_save_id2label.py b/adapters/tests/test_adapter_save_id2label.py new file mode 100644 index 00000000..4d8eba70 --- /dev/null +++ b/adapters/tests/test_adapter_save_id2label.py @@ -0,0 +1,110 @@ +import unittest +from tempfile import TemporaryDirectory +from typing import Dict + +import adapters +from adapters import BertAdapterModel +from transformers import BertConfig, BertForSequenceClassification + + +def get_default(num_label): + labels = ["LABEL_" + str(i) for i in range(num_label)] + label_dict = {id_: label for id_, label in enumerate(labels)} + return labels, label_dict + + +class TestSaveLabel(unittest.TestCase): + def setUp(self): + self.labels = [ + "ADJ", + "ADP", + "ADV", + "AUX", + "CCONJ", + "DET", + "INTJ", + "NOUN", + "NUM", + "PART", + "PRON", + "PROPN", + "PUNCT", + "SCONJ", + "SYM", + "VERB", + "X", + ] + self.label_map: Dict[int, str] = {i: label for i, label in enumerate(self.labels)} + self.config = BertConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + num_labels=len(self.labels), + id2label=self.label_map, + label2id={label: i for i, label in enumerate(self.labels)}, + ) + + def test_classification_model_head_labels(self): + model = BertForSequenceClassification(self.config) + adapters.init(model) + with TemporaryDirectory() as temp_dir: + model.save_head(temp_dir) + model.load_head(temp_dir) + + self.assertEqual(self.labels, model.get_labels()) + self.assertDictEqual(self.label_map, model.get_labels_dict()) + + def test_sequ_classification_model_head_labels(self): + model = BertForSequenceClassification(self.config) + adapters.init(model) + with TemporaryDirectory() as temp_dir: + model.save_head(temp_dir) + model.load_head(temp_dir) + + self.assertEqual(self.labels, model.get_labels()) + self.assertDictEqual(self.label_map, model.get_labels_dict()) + + def test_model_with_heads_tagging_head_labels(self): + model = BertAdapterModel(self.config) + model.add_tagging_head("test_head", num_labels=len(self.labels), id2label=self.label_map) + with TemporaryDirectory() as temp_dir: + model.save_head(temp_dir, "test_head") + model.load_head(temp_dir) + # this is just loaded to test whether loading an adapter changes the label information + model.add_adapter("sst-2") + + self.assertEqual(self.labels, model.get_labels()) + self.assertDictEqual(self.label_map, model.get_labels_dict()) + + def test_multiple_heads_label(self): + model = BertAdapterModel(self.config) + model.add_tagging_head("test_head", num_labels=len(self.labels), id2label=self.label_map) + with TemporaryDirectory() as temp_dir: + model.save_head(temp_dir, "test_head") + model.load_head(temp_dir) + # adapter loaded for testing whether it changes label information + model.add_adapter("sst-2") + model.add_classification_head("classification_head") + default_label, default_label_dict = get_default(2) + + self.assertEqual(model.get_labels("classification_head"), default_label) + self.assertEqual(model.get_labels_dict("classification_head"), default_label_dict) + + def test_model_with_heads_multiple_heads(self): + model = BertAdapterModel(self.config) + model.add_tagging_head("test_head", num_labels=len(self.labels), id2label=self.label_map) + model.add_classification_head("second_head", num_labels=5) + with TemporaryDirectory() as temp_dir: + model.save_head(temp_dir + "/test_head", "test_head") + model.load_head(temp_dir + "/test_head") + model.save_head(temp_dir + "/second_head", "second_head") + model.load_head(temp_dir + "/second_head") + model.add_adapter("sst-2") + + self.assertEqual(model.get_labels("test_head"), self.labels) + self.assertEqual(model.get_labels_dict("test_head"), self.label_map) + + +if __name__ == "__main__": + unittest.main() diff --git a/adapters/tests/test_adapter_trainer.py b/adapters/tests/test_adapter_trainer.py new file mode 100644 index 00000000..7fc35870 --- /dev/null +++ b/adapters/tests/test_adapter_trainer.py @@ -0,0 +1,541 @@ +import os +import unittest +from tempfile import TemporaryDirectory + +import torch + +import adapters +from adapters import AutoAdapterModel +from adapters.composition import Fuse, Stack +from adapters.trainer import AdapterTrainer, logger +from transformers import ( + AutoModelForSequenceClassification, + AutoTokenizer, + BertConfig, + BertForSequenceClassification, + GlueDataset, + GlueDataTrainingArguments, + Trainer, + TrainingArguments, +) +from transformers.testing_utils import require_ray, slow + + +class TestAdapterTrainer(unittest.TestCase): + def get_model_config(self): + return BertConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + + def test_resume_training(self): + + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + data_args = GlueDataTrainingArguments( + task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True + ) + train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") + with TemporaryDirectory() as tmpdirname: + model = AutoModelForSequenceClassification.from_config(self.get_model_config()) + adapters.init(model) + model.add_adapter("adapter") + model.add_adapter("additional_adapter") + model.set_active_adapters("adapter") + model.train_adapter("adapter") + + training_args = TrainingArguments( + output_dir=tmpdirname, + do_train=True, + learning_rate=0.1, + logging_steps=1, + max_steps=1, + save_steps=1, + remove_unused_columns=False, + ) + trainer = AdapterTrainer( + model=model, + args=training_args, + train_dataset=train_dataset, + ) + + trainer.train() + # create second model that should resume the training of the first + model_resume = AutoModelForSequenceClassification.from_config(self.get_model_config()) + adapters.init(model_resume) + model_resume.add_adapter("adapter") + model_resume.add_adapter("additional_adapter") + model_resume.set_active_adapters("adapter") + model_resume.train_adapter("adapter") + trainer_resume = AdapterTrainer( + model=model_resume, + args=TrainingArguments(do_train=True, max_steps=1, output_dir=tmpdirname), + train_dataset=train_dataset, + ) + trainer_resume.train(resume_from_checkpoint=True) + + self.assertEqual(model.adapters_config.adapters, model_resume.adapters_config.adapters) + + for (k1, v1), (k2, v2) in zip( + trainer.model.state_dict().items(), trainer_resume.model.state_dict().items() + ): + self.assertEqual(k1, k2) + if "adapter" in k1: + self.assertTrue(torch.equal(v1, v2), k1) + + def test_resume_training_invalid_checkpoint(self): + + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + data_args = GlueDataTrainingArguments( + task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True + ) + train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") + with TemporaryDirectory() as tmpdirname: + model = AutoModelForSequenceClassification.from_config(self.get_model_config()) + adapters.init(model) + model.add_adapter("adapter") + model.add_adapter("additional_adapter") + model.set_active_adapters("adapter") + model.train_adapter("adapter") + + training_args = TrainingArguments( + output_dir=tmpdirname, + do_train=True, + learning_rate=0.1, + logging_steps=1, + max_steps=1, + save_steps=1, + remove_unused_columns=False, + ) + trainer = AdapterTrainer( + model=model, + args=training_args, + train_dataset=train_dataset, + ) + + trainer.train() + # create second model that should resume the training of the first + model_resume = AutoModelForSequenceClassification.from_config(self.get_model_config()) + adapters.init(model_resume) + model_resume.add_adapter("adapter") + model_resume.add_adapter("additional_adapter") + model_resume.set_active_adapters("adapter") + model_resume.train_adapter("adapter") + trainer_resume = AdapterTrainer( + model=model_resume, + args=TrainingArguments(do_train=True, max_steps=1, output_dir=tmpdirname), + train_dataset=train_dataset, + ) + with self.assertRaises(Exception): + trainer_resume.train(resume_from_checkpoint=tmpdirname + "_invalid") + + def test_resume_training_with_fusion(self): + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + data_args = GlueDataTrainingArguments( + task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True + ) + train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") + with TemporaryDirectory() as tmpdirname: + model = AutoModelForSequenceClassification.from_config(self.get_model_config()) + adapters.init(model) + model.add_adapter("adapter") + model.add_adapter("additional_adapter") + model.add_adapter_fusion(Fuse("adapter", "additional_adapter")) + model.set_active_adapters(Fuse("adapter", "additional_adapter")) + model.train_fusion(Fuse("adapter", "additional_adapter")) + + training_args = TrainingArguments( + output_dir=tmpdirname, + do_train=True, + learning_rate=0.1, + logging_steps=1, + max_steps=1, + save_steps=1, + remove_unused_columns=False, + ) + trainer = AdapterTrainer( + model=model, + args=training_args, + train_dataset=train_dataset, + ) + + trainer.train() + model_resume = AutoModelForSequenceClassification.from_config(self.get_model_config()) + adapters.init(model_resume) + model_resume.add_adapter("adapter") + model_resume.add_adapter("additional_adapter") + model_resume.add_adapter_fusion(Fuse("adapter", "additional_adapter")) + model_resume.set_active_adapters(Fuse("adapter", "additional_adapter")) + model_resume.train_fusion(Fuse("adapter", "additional_adapter")) + trainer_resume = AdapterTrainer( + model=model_resume, + args=TrainingArguments(do_train=True, max_steps=1, output_dir=tmpdirname), + train_dataset=train_dataset, + ) + trainer_resume.train(resume_from_checkpoint=True) + + self.assertEqual(model.adapters_config.adapters, model_resume.adapters_config.adapters) + + for (k1, v1), (k2, v2) in zip( + trainer.model.to("cpu").state_dict().items(), trainer_resume.model.to("cpu").state_dict().items() + ): + self.assertEqual(k1, k2) + if "adapter" in k1: + self.assertTrue(torch.equal(v1, v2), k1) + + def test_auto_set_save_adapters(self): + model = BertForSequenceClassification( + BertConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + ) + adapters.init(model) + model.add_adapter("adapter1") + model.add_adapter("adapter2") + model.add_adapter_fusion(Fuse("adapter1", "adapter2")) + model.train_adapter_fusion(Fuse("adapter1", "adapter2")) + + with TemporaryDirectory() as tmpdirname: + training_args = TrainingArguments( + output_dir=tmpdirname, + ) + trainer = AdapterTrainer( + model=model, + args=training_args, + ) + self.assertTrue(trainer.train_adapter_fusion) + + @slow + def test_training_load_best_model_at_end_full_model(self): + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + data_args = GlueDataTrainingArguments( + task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True + ) + train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") + eval_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="dev") + + model = AutoModelForSequenceClassification.from_config(self.get_model_config()) + adapters.init(model) + model.add_adapter("adapter") + model.train_adapter("adapter") + + with TemporaryDirectory() as tmpdirname: + training_args = TrainingArguments( + output_dir=tmpdirname, + do_train=True, + learning_rate=0.001, + max_steps=1, + save_steps=1, + remove_unused_columns=False, + load_best_model_at_end=True, + evaluation_strategy="epoch", + save_strategy="epoch", + num_train_epochs=2, + ) + trainer = Trainer( + model=model, + args=training_args, + train_dataset=train_dataset, + eval_dataset=eval_dataset, + ) + + trainer.train() + self.assertIsNotNone(trainer.model.active_adapters) + + def test_training_load_best_model_at_end_adapter(self): + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + data_args = GlueDataTrainingArguments( + task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True + ) + train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") + eval_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="dev") + + model = AutoModelForSequenceClassification.from_config(self.get_model_config()) + adapters.init(model) + model.add_adapter("adapter") + model.train_adapter("adapter") + + with TemporaryDirectory() as tmpdirname: + training_args = TrainingArguments( + output_dir=tmpdirname, + do_train=True, + learning_rate=0.001, + max_steps=1, + save_steps=1, + remove_unused_columns=False, + load_best_model_at_end=True, + evaluation_strategy="epoch", + save_strategy="epoch", + num_train_epochs=2, + ) + trainer = AdapterTrainer( + model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset + ) + with self.assertLogs(logger) as cm: + trainer.train() + self.assertTrue(any("Loading best adapter(s) from" in line for line in cm.output)) + self.assertEqual(Stack("adapter"), trainer.model.active_adapters) + + def test_training_load_best_model_at_end_fusion(self): + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + data_args = GlueDataTrainingArguments( + task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True + ) + train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") + eval_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="dev") + + model = AutoModelForSequenceClassification.from_config(self.get_model_config()) + adapters.init(model) + model.add_adapter("fuse_adapter_1") + model.add_adapter("fuse_adapter_2") + model.add_adapter_fusion(Fuse("fuse_adapter_1", "fuse_adapter_2")) + model.train_adapter_fusion(Fuse("fuse_adapter_1", "fuse_adapter_2")) + + with TemporaryDirectory() as tmpdirname: + training_args = TrainingArguments( + output_dir=tmpdirname, + do_train=True, + learning_rate=0.001, + max_steps=1, + save_steps=1, + remove_unused_columns=False, + load_best_model_at_end=True, + evaluation_strategy="epoch", + save_strategy="epoch", + num_train_epochs=2, + ) + trainer = AdapterTrainer( + model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset + ) + with self.assertLogs(logger) as cm: + trainer.train() + self.assertTrue(any("Loading best adapter fusion(s) from" in line for line in cm.output)) + self.assertEqual(Fuse("fuse_adapter_1", "fuse_adapter_2"), trainer.model.active_adapters) + + def test_reloading_prediction_head(self): + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + data_args = GlueDataTrainingArguments( + task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True + ) + train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") + + model = AutoAdapterModel.from_config(self.get_model_config()) + + model.add_classification_head("adapter", num_labels=3) + model.add_classification_head("dummy", num_labels=2) + + # add the adapters to be fused + model.add_adapter("adapter") + model.add_adapter("additional_adapter") + + # setup fusion + adapter_setup = Fuse("adapter", "additional_adapter") + model.add_adapter_fusion(adapter_setup) + model.train_adapter_fusion(adapter_setup) + model.set_active_adapters(adapter_setup) + self.assertEqual(adapter_setup, model.active_adapters) + self.assertEqual("dummy", model.active_head) + with TemporaryDirectory() as tempdir: + training_args = TrainingArguments( + output_dir=tempdir, + do_train=True, + learning_rate=0.1, + logging_steps=1, + max_steps=1, + save_steps=1, + remove_unused_columns=False, + ) + trainer = AdapterTrainer( + model=model, + args=training_args, + train_dataset=train_dataset, + ) + + trainer.train() + # create second model that should resume the training of the first + model_resume = AutoAdapterModel.from_config(self.get_model_config()) + + model_resume.add_classification_head("adapter", num_labels=3) + model_resume.add_classification_head("dummy", num_labels=2) + model_resume.add_adapter("adapter") + model_resume.add_adapter("additional_adapter") + # setup fusion + adapter_setup = Fuse("adapter", "additional_adapter") + model_resume.add_adapter_fusion(adapter_setup) + model_resume.train_adapter_fusion(adapter_setup) + model_resume.set_active_adapters(adapter_setup) + trainer_resume = AdapterTrainer( + model=model_resume, + args=TrainingArguments(do_train=True, max_steps=1, output_dir=tempdir), + train_dataset=train_dataset, + ) + trainer_resume.train(resume_from_checkpoint=True) + + self.assertEqual("dummy", model.active_head) + self.assertEqual(model.adapters_config.adapters, model_resume.adapters_config.adapters) + + for (k1, v1), (k2, v2) in zip( + trainer.model.to("cpu").state_dict().items(), trainer_resume.model.to("cpu").state_dict().items() + ): + self.assertEqual(k1, k2) + if "adapter" in k1 or "dummy" in k1: + self.assertTrue(torch.equal(v1, v2), k1) + + def test_general(self): + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + data_args = GlueDataTrainingArguments( + task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True + ) + train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") + + model = AutoAdapterModel.from_config(self.get_model_config()) + + model.add_classification_head("task", num_labels=3) + + # add the adapters to be fused + model.add_adapter("task") + model.add_adapter("additional_adapter") + + model.train_adapter("task") + self.assertEqual("task", model.active_head) + self.assertEqual(Stack("task"), model.active_adapters) + with TemporaryDirectory() as tempdir: + training_args = TrainingArguments( + output_dir=tempdir, + do_train=True, + learning_rate=0.1, + logging_steps=1, + max_steps=1, + save_steps=1, + remove_unused_columns=False, + ) + trainer = AdapterTrainer( + model=model, + args=training_args, + train_dataset=train_dataset, + ) + + trainer.train() + + # Check that adapters are actually saved but the full model is not + files_dir_checkpoint = [file_or_dir for file_or_dir in os.listdir(os.path.join(tempdir, "checkpoint-1"))] + self.assertTrue("task" in files_dir_checkpoint) + self.assertTrue("additional_adapter" in files_dir_checkpoint) + # Check that full model weights are not stored + self.assertFalse("pytorch_model.bin" in files_dir_checkpoint) + + # this should always be false in the adapter trainer + self.assertFalse(trainer.args.remove_unused_columns) + self.assertEqual("task", model.active_head) + self.assertEqual(Stack("task"), model.active_adapters) + + def test_train_with_frozen_adapter_fusion(self): + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + data_args = GlueDataTrainingArguments( + task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True + ) + train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") + + model = AutoAdapterModel.from_config(self.get_model_config()) + + model.add_adapter("a") + model.add_adapter("b") + + adapter_setup = Fuse("a", "b") + + model.add_adapter_fusion(adapter_setup, set_active=True) + + model.add_adapter("c") + model.add_classification_head("c") + + model.train_adapter("c") + + model.active_adapters = Stack(Fuse("a", "b"), "c") + + # Since our config has a value matrix, make sure it is regularized. + # We do this by patching the fusion regularization function. + regularization_called = False + orig_fusion_regularization_loss = model.base_model.get_fusion_regularization_loss + + def patched_fusion_reg_loss(): + nonlocal regularization_called + regularization_called = True + return orig_fusion_regularization_loss() + + model.base_model.get_fusion_regularization_loss = patched_fusion_reg_loss + + with TemporaryDirectory() as tempdir: + training_args = TrainingArguments( + output_dir=tempdir, + do_train=True, + learning_rate=0.1, + logging_steps=1, + max_steps=1, + save_steps=1, + remove_unused_columns=False, + ) + trainer = AdapterTrainer( + model=model, + args=training_args, + train_dataset=train_dataset, + ) + + trainer.train() + + self.assertTrue(regularization_called) + + @require_ray + def test_hyperparameter_search_works_with_AdapterTrainer(self): + tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") + data_args = GlueDataTrainingArguments( + task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True + ) + train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") + eval_dataset = train_dataset + + def hp_space(params): + from ray import tune + + return { + "learning_rate": tune.choice([0.1, 0.2]), + } + + def model_init(trail=None): + model = AutoAdapterModel.from_config(self.get_model_config()) + + model.add_classification_head("task", num_labels=3) + + # add the adapters to be fused + model.add_adapter("task") + model.add_adapter("additional_adapter") + + model.train_adapter("task") + return model + + with TemporaryDirectory() as tempdir: + training_args = TrainingArguments( + output_dir=tempdir, + do_train=True, + learning_rate=0.1, + logging_steps=1, + max_steps=1, + save_steps=1, + remove_unused_columns=False, + ) + trainer = AdapterTrainer( + model=None, + model_init=model_init, + args=training_args, + train_dataset=train_dataset, + eval_dataset=eval_dataset, + ) + + trainer.hyperparameter_search(direction="minimize", hp_space=hp_space, backend="ray", n_trials=2) + + +if __name__ == "__main__": + unittest.main() diff --git a/adapters/tests/test_albert.py b/adapters/tests/test_albert.py new file mode 100644 index 00000000..f7b1e98e --- /dev/null +++ b/adapters/tests/test_albert.py @@ -0,0 +1,69 @@ +import unittest +from math import ceil + +from transformers import AlbertConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class AlbertAdapterTestBase(AdapterTestBase): + config_class = AlbertConfig + config = make_config( + AlbertConfig, + embedding_size=16, + hidden_size=64, + num_hidden_layers=5, + num_attention_heads=4, + intermediate_size=37, + num_hidden_groups=2, + ) + tokenizer_name = "albert-base-v2" + leave_out_layers = [0] + + +@require_torch +class AlbertAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + EmbeddingTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + AlbertAdapterTestBase, + unittest.TestCase, +): + def test_context_simple(self): + expected_number_of_adapter_calls = ceil(self.config().num_hidden_layers / self.config().num_hidden_groups) + super().test_context_simple(expected_number_of_adapter_calls=expected_number_of_adapter_calls) + + +@require_torch +class AlbertClassConversionTest( + ModelClassConversionTestMixin, + AlbertAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_bart.py b/adapters/tests/test_bart.py new file mode 100644 index 00000000..4f10114b --- /dev/null +++ b/adapters/tests/test_bart.py @@ -0,0 +1,66 @@ +import unittest + +from tests.methods.test_config_union import ConfigUnionAdapterTest +from transformers import BartConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class BartAdapterTestBase(AdapterTestBase): + config_class = BartConfig + config = make_config( + BartConfig, + d_model=16, + encoder_layers=2, + decoder_layers=2, + encoder_attention_heads=4, + decoder_attention_heads=4, + encoder_ffn_dim=4, + decoder_ffn_dim=4, + ) + tokenizer_name = "facebook/bart-base" + + +@require_torch +class BartAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + EmbeddingTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + ConfigUnionAdapterTest, + BartAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class BartClassConversionTest( + ModelClassConversionTestMixin, + BartAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_beit.py b/adapters/tests/test_beit.py new file mode 100644 index 00000000..1e83c9e5 --- /dev/null +++ b/adapters/tests/test_beit.py @@ -0,0 +1,59 @@ +import unittest + +from transformers import BeitConfig +from transformers.testing_utils import require_torch + +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import VisionAdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class BeitAdapterTestBase(VisionAdapterTestBase): + config_class = BeitConfig + config = make_config( + BeitConfig, + image_size=224, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + feature_extractor_name = "microsoft/beit-base-patch16-224-pt22k" + + +@require_torch +class BeitAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + PredictionHeadModelTestMixin, + BeitAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class BeitClassConversionTest( + ModelClassConversionTestMixin, + BeitAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_bert.py b/adapters/tests/test_bert.py new file mode 100644 index 00000000..8bfe10b8 --- /dev/null +++ b/adapters/tests/test_bert.py @@ -0,0 +1,65 @@ +import unittest + +from tests.methods.test_config_union import ConfigUnionAdapterTest +from transformers import BertConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class BertAdapterTestBase(AdapterTestBase): + config_class = BertConfig + config = make_config( + BertConfig, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + tokenizer_name = "bert-base-uncased" + + +@require_torch +class BertAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + EmbeddingTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + ConfigUnionAdapterTest, + BertAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class BertClassConversionTest( + ModelClassConversionTestMixin, + BertAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_bert_generation.py b/adapters/tests/test_bert_generation.py new file mode 100644 index 00000000..162b3422 --- /dev/null +++ b/adapters/tests/test_bert_generation.py @@ -0,0 +1,108 @@ +import unittest + +from datasets import load_dataset + +from transformers import AutoTokenizer, BertGenerationConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class BertGenerationAdapterTestBase(AdapterTestBase): + config_class = BertGenerationConfig + config = make_config( + BertGenerationConfig, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + tokenizer_name = "bert-base-uncased" + + def add_head(self, model, name, **kwargs): + model.add_masked_lm_head(name) + return self.default_input_samples_shape[-1] + + def dataset(self, tokenizer=None): + # setup tokenizer + if tokenizer is None: + tokenizer = AutoTokenizer.from_pretrained(self.tokenizer_name, use_fast=False) + if tokenizer.pad_token is None: + tokenizer.pad_token = tokenizer.eos_token + + def preprocess_function(examples): + inputs = examples["document"] + targets = examples["summary"] + inputs = ["Summarize: " + inp for inp in inputs] + model_inputs = tokenizer(inputs, padding="max_length", truncation=True, max_length=128) + + # Setup the tokenizer for targets + with tokenizer.as_target_tokenizer(): + labels = tokenizer(targets, padding="max_length", truncation=True, max_length=128) + + # If we are padding here, replace all tokenizer.pad_token_id in the labels by -100 when we want to ignore + # padding in the loss. + labels["input_ids"] = [ + [(l if l != tokenizer.pad_token_id else -100) for l in label] for label in labels["input_ids"] + ] + + model_inputs["labels"] = labels["input_ids"] + return model_inputs + + data_args = { + "task_name": "xsum", + "path": "./tests/fixtures/samples/xsum/sample.json", + } + dataset = load_dataset("json", data_files=data_args["path"]) + train_dataset = dataset["train"] + train_dataset = train_dataset.map( + preprocess_function, + batched=True, + desc="Running tokenizer on train dataset", + ) + return train_dataset + + +@require_torch +class BertGenerationAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + EmbeddingTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + BertGenerationAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class BertGenerationClassConversionTest( + ModelClassConversionTestMixin, + BertGenerationAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_clip.py b/adapters/tests/test_clip.py new file mode 100644 index 00000000..2ed57268 --- /dev/null +++ b/adapters/tests/test_clip.py @@ -0,0 +1,221 @@ +import random +import unittest + +import torch + +from transformers import ( + CLIPConfig, + CLIPTextConfig, + CLIPTextModel, + CLIPTextModelWithProjection, + CLIPVisionConfig, + CLIPVisionModel, + CLIPVisionModelWithProjection, +) +from transformers.testing_utils import require_torch, torch_device + +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, VisionAdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin + + +class CLIPVisionAdapterTestBase(VisionAdapterTestBase): + model_class = CLIPVisionModel + config_class = CLIPVisionConfig + config = make_config( + CLIPVisionConfig, + image_size=30, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + feature_extractor_name = "openai/clip-vit-base-patch32" + + +@require_torch +class CLIPVisionAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + CLIPVisionAdapterTestBase, + unittest.TestCase, +): + pass + + +class CLIPVisionWithProjectionAdapterTestBase(VisionAdapterTestBase): + model_class = CLIPVisionModelWithProjection + config_class = CLIPVisionConfig + config = make_config( + CLIPVisionConfig, + image_size=30, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + feature_extractor_name = "openai/clip-vit-base-patch32" + + +@require_torch +class CLIPVisionWithProjectionAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + CLIPVisionWithProjectionAdapterTestBase, + unittest.TestCase, +): + pass + + +class CLIPTextAdapterTestBase(AdapterTestBase): + model_class = CLIPTextModel + config_class = CLIPTextConfig + config = make_config( + CLIPTextConfig, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + tokenizer_name = "openai/clip-vit-base-patch32" + + +@require_torch +class CLIPTextAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + CLIPTextAdapterTestBase, + unittest.TestCase, +): + pass + + +class CLIPTextWithProjectionAdapterTestBase(AdapterTestBase): + model_class = CLIPTextModelWithProjection + config_class = CLIPTextConfig + config = make_config( + CLIPTextConfig, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + tokenizer_name = "openai/clip-vit-base-patch32" + + +@require_torch +class CLIPTextWithProjectionAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + CLIPTextWithProjectionAdapterTestBase, + unittest.TestCase, +): + pass + + +class CLIPAdapterTestBase(AdapterTestBase): + config_class = CLIPConfig + config = staticmethod( + lambda: CLIPConfig.from_text_vision_configs( + CLIPTextConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ), + CLIPVisionConfig( + image_size=30, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ), + ) + ) + tokenizer_name = "openai/clip-vit-base-patch32" + # Default shape of inputs to use + default_text_input_samples_shape = (3, 64) + default_vision_input_samples_shape = (3, 3, 224, 224) + do_run_train_tests = False + + def get_input_samples(self, vocab_size=5000, config=None): + # text inputs + shape = self.default_text_input_samples_shape + total_dims = 1 + for dim in shape: + total_dims *= dim + values = [] + for _ in range(total_dims): + values.append(random.randint(0, vocab_size - 1)) + input_ids = torch.tensor(data=values, dtype=torch.long, device=torch_device).view(shape).contiguous() + # this is needed e.g. for BART + if config and config.eos_token_id is not None and config.eos_token_id < vocab_size: + input_ids[input_ids == config.eos_token_id] = random.randint(0, config.eos_token_id - 1) + input_ids[:, -1] = config.eos_token_id + in_data = {"input_ids": input_ids} + + # vision inputs + shape = self.default_vision_input_samples_shape + total_dims = 1 + for dim in shape: + total_dims *= dim + values = [] + for _ in range(total_dims): + values.append(random.random()) + pixel_values = torch.tensor(data=values, dtype=torch.float, device=torch_device).view(shape).contiguous() + in_data["pixel_values"] = pixel_values + + return in_data + + def add_head(self, *args, **kwargs): + pass + + +@require_torch +class CLIPAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + CLIPAdapterTestBase, + unittest.TestCase, +): + def test_adapter_fusion_save_with_head(self): + # This test is not applicable to CLIP + self.skipTest("Not applicable to CLIP.") diff --git a/adapters/tests/test_deberta.py b/adapters/tests/test_deberta.py new file mode 100644 index 00000000..8dfaf8d7 --- /dev/null +++ b/adapters/tests/test_deberta.py @@ -0,0 +1,68 @@ +import unittest + +from tests.methods.test_config_union import ConfigUnionAdapterTest +from transformers import DebertaConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class DebertaAdapterTestBase(AdapterTestBase): + config_class = DebertaConfig + config = make_config( + DebertaConfig, + hidden_size=32, + num_hidden_layers=5, + num_attention_heads=4, + intermediate_size=37, + hidden_act="gelu", + relative_attention=True, + pos_att_type="p2c|c2p", + ) + tokenizer_name = "microsoft/deberta-base" + + +@require_torch +class DebertaAdapterTest( + AdapterFusionModelTestMixin, + CompabilityTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + EmbeddingTestMixin, + ParallelTrainingMixin, + ConfigUnionAdapterTest, + DebertaAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class DebertaClassConversionTest( + ModelClassConversionTestMixin, + DebertaAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_debertaV2.py b/adapters/tests/test_debertaV2.py new file mode 100644 index 00000000..bb4aacb1 --- /dev/null +++ b/adapters/tests/test_debertaV2.py @@ -0,0 +1,68 @@ +import unittest + +from tests.methods.test_config_union import ConfigUnionAdapterTest +from transformers import DebertaV2Config +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class DebertaV2AdapterTestBase(AdapterTestBase): + config_class = DebertaV2Config + config = make_config( + DebertaV2Config, + hidden_size=32, + num_hidden_layers=5, + num_attention_heads=4, + intermediate_size=37, + hidden_act="gelu", + relative_attention=True, + pos_att_type="p2c|c2p", + ) + tokenizer_name = "microsoft/deberta-v3-base" + + +@require_torch +class DebertaV2AdapterTest( + AdapterFusionModelTestMixin, + CompabilityTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + EmbeddingTestMixin, + ParallelTrainingMixin, + ConfigUnionAdapterTest, + DebertaV2AdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class DebertaV2ClassConversionTest( + ModelClassConversionTestMixin, + DebertaV2AdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_distilbert.py b/adapters/tests/test_distilbert.py new file mode 100644 index 00000000..93b2a880 --- /dev/null +++ b/adapters/tests/test_distilbert.py @@ -0,0 +1,65 @@ +import unittest + +from tests.methods.test_config_union import ConfigUnionAdapterTest +from transformers import DistilBertConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class DistilBertAdapterTestBase(AdapterTestBase): + config_class = DistilBertConfig + config = make_config( + DistilBertConfig, + dim=32, + n_layers=4, + n_heads=4, + hidden_dim=37, + ) + tokenizer_name = "distilbert-base-uncased" + + +@require_torch +class DistilBertAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + EmbeddingTestMixin, + CompabilityTestMixin, + AdapterFusionModelTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + ConfigUnionAdapterTest, + DistilBertAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class DistilBertClassConversionTest( + ModelClassConversionTestMixin, + DistilBertAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_electra.py b/adapters/tests/test_electra.py new file mode 100644 index 00000000..7e5762c8 --- /dev/null +++ b/adapters/tests/test_electra.py @@ -0,0 +1,66 @@ +import unittest + +from tests.methods.test_config_union import ConfigUnionAdapterTest +from transformers import ElectraConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class ElectraAdapterTestBase(AdapterTestBase): + config_class = ElectraConfig + config = make_config( + ElectraConfig, + # vocab_size=99, + hidden_size=32, + num_hidden_layers=5, + num_attention_heads=4, + intermediate_size=37, + ) + tokenizer_name = "google/electra-base-generator" + + +@require_torch +class ElectraAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + EmbeddingTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + ConfigUnionAdapterTest, + ElectraAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class ElectraClassConversionTest( + ModelClassConversionTestMixin, + ElectraAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_encoder_decoder.py b/adapters/tests/test_encoder_decoder.py new file mode 100644 index 00000000..708a6bfb --- /dev/null +++ b/adapters/tests/test_encoder_decoder.py @@ -0,0 +1,90 @@ +# flake8: noqa: F403,F405 +import unittest + +import adapters +from hf_transformers.tests.models.encoder_decoder.test_modeling_encoder_decoder import * # Imported to execute model tests +from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, BertConfig +from transformers.testing_utils import require_torch, torch_device + +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase +from .test_adapter_fusion_common import AdapterFusionModelTestMixin + + +class EncoderDecoderAdapterTestBase(AdapterTestBase): + model_class = EncoderDecoderModel + config_class = EncoderDecoderConfig + config = staticmethod( + lambda: EncoderDecoderConfig.from_encoder_decoder_configs( + BertConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ), + BertConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + is_decoder=True, + add_cross_attention=True, + ), + ) + ) + tokenizer_name = "bert-base-uncased" + do_run_train_tests = False + + +@require_torch +class EncoderDecoderAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + EncoderDecoderAdapterTestBase, + unittest.TestCase, +): + def test_generation(self): + model = AutoModelForSeq2SeqLM.from_config(self.config()) + adapters.init(model) + model.add_adapter("test", config="pfeiffer") + model.set_active_adapters("test") + tokenizer = AutoTokenizer.from_pretrained(self.tokenizer_name, use_fast=False) + + text = "This is a test sentence." + input_ids = tokenizer(text, return_tensors="pt").input_ids + + generated_ids = model.generate(input_ids, bos_token_id=100) + generated_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] + self.assertNotEqual("", generated_text) + + def test_invertible_adapter_with_head(self): + """This test class is copied and adapted from the identically-named test in test_adapter_heads.py.""" + raise self.skipTest("AutoModelForSeq2SeqLM does not support using invertible adapters.") + + def test_adapter_fusion_save_with_head(self): + # This test is not applicable to the encoder-decoder model since it has no heads. + self.skipTest("Not applicable to the encoder-decoder model.") + + def test_forward_with_past(self): + # This test is not applicable to the encoder-decoder model since it has no heads. + self.skipTest("Not applicable to the encoder-decoder model.") + + def test_output_adapter_gating_scores_unipelt(self): + # TODO currently not supported + self.skipTest("Not implemented.") + + def test_output_adapter_fusion_attentions(self): + # TODO currently not supported + self.skipTest("Not implemented.") diff --git a/adapters/tests/test_gpt2.py b/adapters/tests/test_gpt2.py new file mode 100644 index 00000000..3ae2566a --- /dev/null +++ b/adapters/tests/test_gpt2.py @@ -0,0 +1,64 @@ +import unittest + +from tests.methods.test_config_union import ConfigUnionAdapterTest +from transformers import GPT2Config +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class GPT2AdapterTestBase(AdapterTestBase): + config_class = GPT2Config + config = make_config( + GPT2Config, + n_embd=32, + n_layer=4, + n_head=4, + # set pad token to eos token + pad_token_id=50256, + ) + tokenizer_name = "gpt2" + + +@require_torch +class GPT2AdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + EmbeddingTestMixin, + CompabilityTestMixin, + AdapterFusionModelTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + ConfigUnionAdapterTest, + GPT2AdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class GPT2ClassConversionTest( + ModelClassConversionTestMixin, + GPT2AdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_gptj.py b/adapters/tests/test_gptj.py new file mode 100644 index 00000000..00b7889a --- /dev/null +++ b/adapters/tests/test_gptj.py @@ -0,0 +1,66 @@ +import unittest + +from tests.methods.test_config_union import ConfigUnionAdapterTest +from transformers import GPTJConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class GPTJAdapterTestBase(AdapterTestBase): + config_class = GPTJConfig + config = make_config( + GPTJConfig, + n_embd=32, + n_layer=4, + n_head=4, + rotary_dim=4, + # set pad token to eos token + pad_token_id=50256, + resid_pdrop=0.1, + ) + tokenizer_name = "EleutherAI/gpt-j-6B" + + +@require_torch +class GPTJAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + UniPELTTestMixin, + PrefixTuningTestMixin, + EmbeddingTestMixin, + CompabilityTestMixin, + AdapterFusionModelTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + ConfigUnionAdapterTest, + GPTJAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class GPTJClassConversionTest( + ModelClassConversionTestMixin, + GPTJAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_llama.py b/adapters/tests/test_llama.py new file mode 100644 index 00000000..9cb6fcfd --- /dev/null +++ b/adapters/tests/test_llama.py @@ -0,0 +1,64 @@ +import unittest + +from transformers.models.llama.configuration_llama import LlamaConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class LlamaAdapterTestBase(AdapterTestBase): + config_class = LlamaConfig + config = make_config( + LlamaConfig, + hidden_size=32, + num_hidden_layers=5, + num_attention_heads=4, + intermediate_size=37, + hidden_act="gelu", + hidden_dropout_prob=0.1, + pad_token_id=0, + ) + tokenizer_name = "openlm-research/open_llama_13b" + + +@require_torch +class LlamaAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + EmbeddingTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + LlamaAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class LlamaClassConversionTest( + ModelClassConversionTestMixin, + LlamaAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_mbart.py b/adapters/tests/test_mbart.py new file mode 100644 index 00000000..775e1fde --- /dev/null +++ b/adapters/tests/test_mbart.py @@ -0,0 +1,60 @@ +import unittest + +from transformers import MBartConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class MBartAdapterTestBase(AdapterTestBase): + config_class = MBartConfig + config = make_config( + MBartConfig, + d_model=16, + encoder_layers=2, + decoder_layers=2, + encoder_attention_heads=4, + decoder_attention_heads=4, + encoder_ffn_dim=4, + decoder_ffn_dim=4, + vocab_size=250027, + ) + tokenizer_name = "facebook/mbart-large-cc25" + + +@require_torch +class MBartAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + MBartAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class MBartClassConversionTest( + ModelClassConversionTestMixin, + MBartAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_mt5.py b/adapters/tests/test_mt5.py new file mode 100644 index 00000000..67e56add --- /dev/null +++ b/adapters/tests/test_mt5.py @@ -0,0 +1,66 @@ +import unittest + +from transformers import MT5Config +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +@require_torch +class MT5AdapterTestBase(AdapterTestBase): + config_class = MT5Config + config = make_config( + MT5Config, + d_model=16, + num_layers=2, + num_decoder_layers=2, + num_heads=4, + d_ff=4, + d_kv=16 // 4, + tie_word_embeddings=False, + decoder_start_token_id=0, + ) + tokenizer_name = "google/mt5-base" + + +@require_torch +class MT5AdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + EmbeddingTestMixin, + CompabilityTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + AdapterFusionModelTestMixin, + PredictionHeadModelTestMixin, + MT5AdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class MT5ClassConversionTest( + ModelClassConversionTestMixin, + MT5AdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_roberta.py b/adapters/tests/test_roberta.py new file mode 100644 index 00000000..5259ace3 --- /dev/null +++ b/adapters/tests/test_roberta.py @@ -0,0 +1,63 @@ +import unittest + +from tests.methods.test_config_union import ConfigUnionAdapterTest +from transformers import RobertaConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class RobertaAdapterTestBase(AdapterTestBase): + config_class = RobertaConfig + config = make_config( + RobertaConfig, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + vocab_size=50265, + ) + tokenizer_name = "roberta-base" + + +@require_torch +class RobertaAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + ConfigUnionAdapterTest, + RobertaAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class RobertaClassConversionTest( + ModelClassConversionTestMixin, + RobertaAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_t5.py b/adapters/tests/test_t5.py new file mode 100644 index 00000000..c8717d8b --- /dev/null +++ b/adapters/tests/test_t5.py @@ -0,0 +1,66 @@ +import unittest + +from transformers import T5Config +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_embeddings import EmbeddingTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +@require_torch +class T5AdapterTestBase(AdapterTestBase): + config_class = T5Config + config = make_config( + T5Config, + d_model=16, + num_layers=2, + num_decoder_layers=2, + num_heads=4, + d_ff=4, + d_kv=16 // 4, + tie_word_embeddings=False, + decoder_start_token_id=0, + ) + tokenizer_name = "t5-base" + + +@require_torch +class T5AdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + UniPELTTestMixin, + EmbeddingTestMixin, + CompabilityTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + AdapterFusionModelTestMixin, + PredictionHeadModelTestMixin, + T5AdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class T5ClassConversionTest( + ModelClassConversionTestMixin, + T5AdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_vit.py b/adapters/tests/test_vit.py new file mode 100644 index 00000000..2de1b343 --- /dev/null +++ b/adapters/tests/test_vit.py @@ -0,0 +1,62 @@ +import unittest + +from transformers import ViTConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import VisionAdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class ViTAdapterTestBase(VisionAdapterTestBase): + config_class = ViTConfig + config = make_config( + ViTConfig, + image_size=224, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + feature_extractor_name = "google/vit-base-patch16-224-in21k" + + +@require_torch +class ViTAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + ParallelTrainingMixin, + ViTAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class ViTClassConversionTest( + ModelClassConversionTestMixin, + ViTAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_xlm_roberta.py b/adapters/tests/test_xlm_roberta.py new file mode 100644 index 00000000..96268302 --- /dev/null +++ b/adapters/tests/test_xlm_roberta.py @@ -0,0 +1,55 @@ +import unittest + +from transformers import XLMRobertaConfig +from transformers.testing_utils import require_torch + +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin + + +class XLMRobertaAdapterTestBase(AdapterTestBase): + config_class = XLMRobertaConfig + config = make_config( + XLMRobertaConfig, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + vocab_size=250002, + ) + tokenizer_name = "xlm-roberta-base" + + +@require_torch +class XLMRobertaAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + XLMRobertaAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class XLMRobertaClassConversionTest( + ModelClassConversionTestMixin, + XLMRobertaAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/tests/test_xmod.py b/adapters/tests/test_xmod.py new file mode 100644 index 00000000..a8cd02c4 --- /dev/null +++ b/adapters/tests/test_xmod.py @@ -0,0 +1,63 @@ +import unittest + +from transformers import XmodConfig +from transformers.testing_utils import require_torch + +from .composition.test_parallel import ParallelAdapterInferenceTestMixin +from .methods import ( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, +) +from .test_adapter import AdapterTestBase, make_config +from .test_adapter_backward_compability import CompabilityTestMixin +from .test_adapter_conversion import ModelClassConversionTestMixin +from .test_adapter_fusion_common import AdapterFusionModelTestMixin +from .test_adapter_heads import PredictionHeadModelTestMixin + + +class XmodAdapterTestBase(AdapterTestBase): + config_class = XmodConfig + config = make_config( + XmodConfig, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + vocab_size=250002, + max_position_embeddings=512, + default_language="en_XX", + ) + tokenizer_name = "xlm-roberta-base" + + +@require_torch +class XmodAdapterTest( + BottleneckAdapterTestMixin, + CompacterTestMixin, + IA3TestMixin, + LoRATestMixin, + PrefixTuningTestMixin, + PromptTuningTestMixin, + UniPELTTestMixin, + AdapterFusionModelTestMixin, + CompabilityTestMixin, + PredictionHeadModelTestMixin, + ParallelAdapterInferenceTestMixin, + XmodAdapterTestBase, + unittest.TestCase, +): + pass + + +@require_torch +class XmodClassConversionTest( + ModelClassConversionTestMixin, + XmodAdapterTestBase, + unittest.TestCase, +): + pass diff --git a/adapters/utils/back_comp/README.md b/adapters/utils/back_comp/README.md new file mode 100644 index 00000000..14896c61 --- /dev/null +++ b/adapters/utils/back_comp/README.md @@ -0,0 +1,26 @@ +# Backwards Compatibility Tests + +## Motivation + +This directory contains a set of tests that can be run to ensure that newly introduced changes or refactorings do not break existing functionalities. These tests verify model output consistency between two branches; here, we use the names `dev` and `main` for demonstration purposes, but these tests can be performed between any two branches where the `back_comp` directory with tests is available. +For this, the test script performs a forward pass for each supported model and compares the outputs between `dev` and `main` to identify any differences. + +## Requirements + +To execute these tests, you must meet the following requirements: + +- Ability to run bash scripts (in-built on Linux/macOS; for Windows, consider using third-party software like [GNU Bash](https://www.gnu.org/software/bash/)). +- Git as the version control system to switch between branches. +- The ability to check out the desired branch. If the branch is from another fork, you may need to add the repository as a remote. Refer to [GitHub's instructions](https://docs.github.com/en/get-started/getting-started-with-git/managing-remote-repositories) for details. +- A Python virtual environment to modify the installed package version of `adapters`. + +## Procedure + +To perform the compatibility tests, follow these steps: + +1. Determine a directory where you want to save the model output generated by the tests. Save this directory path to the variable `SaveDir` in the shell script `compare.sh`. (Careful: select a directory OUTSIDE of the repository; otherwise, the saved model output is no longer available when changing the branch.) +2. Select the branch you want to compare with `main` and save its name to the variable `Branch`. +3. Make sure you are checked out in `main` before starting the test script. +4. In your command line, navigate to the `back_comp` directory and execute the script by running `sh compare.sh`. + +The results will be displayed in the command line for visualization. \ No newline at end of file diff --git a/adapters/utils/back_comp/Utils.py b/adapters/utils/back_comp/Utils.py new file mode 100644 index 00000000..8ed48213 --- /dev/null +++ b/adapters/utils/back_comp/Utils.py @@ -0,0 +1,498 @@ +import os +import random +from typing import Any, Union + +import numpy as np +import torch +from PIL import Image +from torch import squeeze + +import jsonlines +import requests +import transformers +from adapters import AutoAdapterModel, init +from transformers import ( + AlbertConfig, + BartConfig, + BatchEncoding, + BeitConfig, + BeitImageProcessor, + BertConfig, + CLIPProcessor, + CLIPVisionConfig, + CLIPVisionModelWithProjection, + DebertaConfig, + DebertaV2Config, + DistilBertConfig, + EncoderDecoderConfig, + EncoderDecoderModel, + GPT2Config, + GPTJConfig, + MBartConfig, + RobertaConfig, + T5Config, + ViTConfig, + ViTImageProcessor, + XLMRobertaConfig, +) + + +def create_output(model: Any, model_name: str): + """Given a model run a forward pass with some dummy data. + Args: + model: The model for which the forward pass is run. + model_name: The name of the model. + Returns: + The model output.""" + + dummy_data = generate_dummy_data(model_name) + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # use GPU if available + model.to(device) + dummy_data.to(device) + with torch.no_grad(): + model_output = model(**dummy_data) + + return model_output + + +def load_model(model_name: str, model_save_dir: str): + """Loads a pre-trained model from a specified path based on the specified model_name. + Args: + model_name (str): The name of the model to be loaded. + model_save_dir (str): The directory path where the pre-trained model is saved. + Returns: + Any: The loaded pre-trained model.""" + if model_name == "clip": + model = CLIPVisionModelWithProjection.from_pretrained(model_save_dir) + init(model) + elif model_name == "encoder_decoder": + model = EncoderDecoderModel.from_pretrained(model_save_dir) + init(model) + else: + model = AutoAdapterModel.from_pretrained(model_save_dir) + model.eval() + init(model) + return model + + +def get_old_adapter_config_strings(): + """Returns a list of strings representing old adapter configuration strings.""" + return [ + "pfeiffer", + "houlsby", + "pfeiffer+inv", + "houlsby+inv", + "parallel", + "scaled_parallel", + "compacter", + "compacter++", + "prefix_tuning", + "prefix_tuning_flat", + "lora", + "ia3", + "mam", + "unipelt", + ] + + +def get_new_adapter_config_strings(): + """Returns a list of strings representing new adapter configurations.""" + return [ + "seq_bn", + "double_seq_bn", + "seq_bn_inv", + "double_seq_bn_inv", + "par_bn", + "scaled_par_bn", + "compacter", + "compacter++", + "prefix_tuning", + "prefix_tuning_flat", + "lora", + "ia3", + "mam", + "unipelt", + ] + + +def get_model_names(): + """Returns a list of strings representing the testable model names.""" + return [ + "bart", + "albert", + "beit", + "bert", + "clip", + "deberta", + "debertaV2", + "distilbert", + "encoder_decoder", + "gpt2", + "gptj", + "mbart", + "roberta", + "t5", + "vit", + "xlm-r", + ] + + +def create_model(model_name: str, model_class: Any) -> Any: + """Creates and returns an instance of a specified test model. + Args: + model_name (str): Specifies which model to instantiate. + Raises: + NotImplementedError: If the specified model type is not implemented.""" + + if model_name == "bart": + bart_config = BartConfig( + d_model=16, + encoder_layers=2, + decoder_layers=2, + encoder_attention_heads=4, + decoder_attention_heads=4, + encoder_ffn_dim=4, + decoder_ffn_dim=4, + ) + model = model_class.from_config(bart_config) + + elif model_name == "albert": + albert_config = AlbertConfig( + embedding_size=16, + hidden_size=64, + num_hidden_layers=5, + num_attention_heads=4, + intermediate_size=37, + num_hidden_groups=2, + ) + model = model_class.from_config(albert_config) + + elif model_name == "beit": + beit_config = BeitConfig( + image_size=224, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + model = model_class.from_config(beit_config) + + elif model_name == "bert": + bert_config = BertConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + model = model_class.from_config(bert_config) + + elif model_name == "clip": + clip_config = CLIPVisionConfig( + image_size=30, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + model = CLIPVisionModelWithProjection(clip_config) + + elif model_name == "deberta": + deberta_config = DebertaConfig( + hidden_size=32, + num_hidden_layers=5, + num_attention_heads=4, + intermediate_size=37, + hidden_act="gelu", + relative_attention=True, + pos_att_type="p2c|c2p", + ) + model = model_class.from_config(deberta_config) + + elif model_name == "debertaV2": + debertaV2_config = DebertaV2Config( + hidden_size=32, + num_hidden_layers=5, + num_attention_heads=4, + intermediate_size=37, + hidden_act="gelu", + relative_attention=True, + pos_att_type="p2c|c2p", + ) + model = model_class.from_config(debertaV2_config) + + elif model_name == "distilbert": + distilbert_config = DistilBertConfig( + dim=32, + n_layers=4, + n_heads=4, + hidden_dim=37, + ) + model = model_class.from_config(distilbert_config) + + elif model_name == "encoder_decoder": + enc_dec_config = EncoderDecoderConfig.from_encoder_decoder_configs( + BertConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ), + BertConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + is_decoder=True, + add_cross_attention=True, + ), + ) + model = EncoderDecoderModel(enc_dec_config) + + elif model_name == "gpt2": + gpt2_config = GPT2Config( + n_embd=32, + n_layer=4, + n_head=4, + # set pad token to eos token + pad_token_id=50256, + ) + model = model_class.from_config(gpt2_config) + + elif model_name == "gptj": + gptj_config = GPTJConfig( + n_embd=32, + n_layer=4, + n_head=4, + rotary_dim=4, + # set pad token to eos token + pad_token_id=50256, + resid_pdrop=0.1, + ) + model = model_class.from_config(gptj_config) + + elif model_name == "mbart": + mbart_config = MBartConfig( + d_model=16, + encoder_layers=2, + decoder_layers=2, + encoder_attention_heads=4, + decoder_attention_heads=4, + encoder_ffn_dim=4, + decoder_ffn_dim=4, + vocab_size=250027, + ) + model = model_class.from_config(mbart_config) + + elif model_name == "roberta": + roberta_config = RobertaConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + vocab_size=50265, + ) + model = model_class.from_config(roberta_config) + + elif model_name == "t5": + t5_config = T5Config( + d_model=16, + num_layers=2, + num_decoder_layers=2, + num_heads=4, + d_ff=4, + d_kv=16 // 4, + tie_word_embeddings=False, + decoder_start_token_id=0, + ) + model = model_class.from_config(t5_config) + + elif model_name == "vit": + vit_config = ViTConfig( + image_size=224, + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + ) + model = model_class.from_config(vit_config) + + elif model_name == "xlm-r": + xlm_config = XLMRobertaConfig( + hidden_size=32, + num_hidden_layers=4, + num_attention_heads=4, + intermediate_size=37, + vocab_size=250002, + ) + model = model_class.from_config(xlm_config) + + else: + raise NotImplementedError("The specified model type is not implemented.") + + return model + + +def generate_dummy_data(model: str = ""): + """Generates dummy data for text and vision transformers. + Args: + model (str, optional): The name of the transformer model. Defaults to an empty string.""" + # For the vision models load an image and process it + if model == "beit" or model == "clip" or model == "vit": + url = "http://images.cocodataset.org/val2017/000000039769.jpg" + image = Image.open(requests.get(url, stream=True).raw) + if model == "beit": + processor = BeitImageProcessor.from_pretrained("microsoft/beit-base-patch16-224-pt22k") + if model == "clip": + processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32") + if model == "vit": + processor = ViTImageProcessor.from_pretrained("google/vit-base-patch16-224-in21k") + return processor(images=image, return_tensors="pt") + + # For text just create and process a dummy string. + else: + input_ids = [i for i in range(20)] + attention_mask = [1 for i in range(len(input_ids))] + input_ids_tensor = torch.tensor([input_ids]) + attention_mask_tensor = torch.tensor([attention_mask]) + if model == "t5" or model == "encoder_decoder": + return BatchEncoding( + { + "input_ids": input_ids_tensor, + "decoder_input_ids": input_ids_tensor, + "attention_mask": attention_mask_tensor, + } + ) + return BatchEncoding({"input_ids": input_ids_tensor, "attention_mask": attention_mask_tensor}) + + +def fix_seeds(seed: int = 42): + """Sets seeds manually. + Args: + seed (int, optional): The seed value to use for random number generation.""" + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + + +def decode_tuple(tuple_to_decode: tuple): + """Reconstructs a potentially nested tuple of type `torch.Tensor` as a nested list. + Args: + tuple_to_decode (tuple): The tuple to decode. + Returns: + list: A nested list containing the same values as the input tuple. + Raises: + TypeError: If the tuple holds values of different type than `tuple` or `torch.Tensor`.""" + inner_model_output = [] + if isinstance(tuple_to_decode, torch.Tensor): + return tuple_to_decode.cpu().numpy().astype(np.float32).tolist() + elif isinstance(tuple_to_decode, tuple): + for value in tuple_to_decode: + inner_model_output.append(decode_tuple(value)) + return inner_model_output + else: + raise TypeError( + "ERROR occured during decoding of output tensors! The tuple holds values of different type " + "than `tuple` or `torch.Tensor`." + ) + + +def convert_tensors_to_list(model_output: transformers.utils.ModelOutput): + """Converts the model output, which consists of a Tuple of Tensors to a Tuple of lists, while preserving the + original dimensions. The converted output is returned. + Args: + model_output (transformers.utils.ModelOutput): The model's output of the forward pass. + Returns: + The converted model output as a tuple of lists and the last hidden state tensor also seperately. + Raises: + TypeError: If the model output is not a tuple of tensors.""" + # Model ouputs can't be unpacked directly, convert to tuple first + model_output_tensors = model_output.to_tuple() + model_output_numpy = [] + + # Recursively search each tuple entry + for output_value in model_output_tensors: + if isinstance(output_value, torch.Tensor): + model_output_numpy.append(squeeze(output_value.cpu()).numpy().astype(np.float32).tolist()) + + elif isinstance(output_value, tuple): + model_output_numpy.append(decode_tuple(output_value)) + + return model_output_numpy, model_output_tensors[0].cpu() + + +def save_to_jsonl(model_output: list, adapter_config: str, file_path: str): + """Save model output to a JSON Lines (.jsonl) file as a dictionary. Each line represents one model, where the key is the model name (specified by adapter_config) + and the value is the model output stored as a list of lists. If an output for a model already exists, it is overwritten. + Args: + model_output (list): The model's output as a list. + adapter_config (str): The model name, serving as the key for the dictionary. + file_path (str): The path of the file to save the new entry.""" + # Check if the file exists + if os.path.exists(file_path): + # Load content from .jsonl file + with jsonlines.open(file_path, mode="r") as f: + data = [line for line in f] + # Create empty list if file doesn't exist + else: + data = [] + + # Update result with new one if unique_id already exists in the file + for i, line in enumerate(data): + if adapter_config in line: + data[i] = {adapter_config: model_output} + break + # Add new result to the list if unique_id doesn't exist in the file + else: + data.append({adapter_config: model_output}) + with jsonlines.open(file_path, mode="w") as writer: + writer.write_all(data) + + +def compare_lists_close(a: list, b: list, rtol=1e-05, atol=1e-08): + """Reimplementation of `allclose()` for lists.""" + # Check if list a and b are numbers + if isinstance(a, (int, float)) and isinstance(b, (int, float)): + bad = abs(a - b) <= atol + rtol * abs(b) + if not bad: + print(f"Old package = {a}, New package = {b}") + print(f"Value diff: {abs(a - b)}") + return bad + + # Check if a and b are lists + if isinstance(a, list) and isinstance(b, list): + # Check if lenghts of the lists are equal + if len(a) != len(b): + return False + + for i in range(len(a)): + if not compare_lists_close(a[i], b[i], rtol=rtol, atol=atol): + return False + + return True + # If the inputs are not compatible types + return False + + +def restore_from_jsonl(config: str, file_path: str) -> Union[int, list]: + """Restores the model output from a JSON Lines (.jsonl) file as a list of lists for the specified model. + Args: + config (str): Name of the adapter config to restore the output for. + file_path (str): Path to the .jsonl file containing the model outputs. + Returns: + A list of lists representing the model output for the specified model. + Returns -1 if there is no output for the specified model in the file.""" + # Check if the file exists + if os.path.exists(file_path): + # Load content from .jsonl file + with jsonlines.open(file_path, mode="r") as f: + data = [line for line in f] + else: + raise FileExistsError(f"There exists no file at the specified path. \npath:{file_path}") + # Get result of specified model + for i, line in enumerate(data): + if config in line: + return data[i][config] + else: + print(f"File does not contain an output for the model {config}.") + return -1 diff --git a/adapters/utils/back_comp/compare.sh b/adapters/utils/back_comp/compare.sh new file mode 100644 index 00000000..b4236192 --- /dev/null +++ b/adapters/utils/back_comp/compare.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# This script performs backward compatibility tests by comparing adapter versions of different branches. +# The goal is to check if the model output produced under the same conditions is identical between branches. +# To do this, we need to determine a directory path to save the reference output produced by the current branch. +# It's important that this directory is outside the adapters repository to remain accessible when switching branches. + +# Select a directory to save the reference outputs (must be outside the repository!) +SaveDir="" + +# Now, determine the branch you want to compare against. +Branch= + +# After setting these variables, you can execute this script from the back_comp directory using the command: `sh compare.sh` + + +cd .. +pip install -e ".[dev]" # # Ensure that the adapters version of the current branch is installed +cd back_comp + +echo "Creating reference outputs..." +python create_outputs.py --path="$SaveDir" +cd .. + + +git checkout $Branch # Switch branch +pip install -e ".[dev]" # Install the other adapter version + +cd back_comp +echo "Comparing to reference outputs..." +python compare_outputs.py --path="$SaveDir" \ No newline at end of file diff --git a/adapters/utils/back_comp/compare_outputs.py b/adapters/utils/back_comp/compare_outputs.py new file mode 100644 index 00000000..0775bf1b --- /dev/null +++ b/adapters/utils/back_comp/compare_outputs.py @@ -0,0 +1,43 @@ +import argparse +import os + +from Utils import ( + compare_lists_close, + convert_tensors_to_list, + create_output, + fix_seeds, + get_model_names, + get_new_adapter_config_strings, + load_model, + restore_from_jsonl, +) + + +parser = argparse.ArgumentParser() +parser.add_argument("--path", type=str) +args = parser.parse_args() + + +# Create the root path +base_dir = os.path.join(args.path, "model_outputs") +fix_seeds() + +for model_name in get_model_names(): + # Load the reference model + print(f"Model = {model_name}") + model_dir = os.path.join(base_dir, model_name) + model = load_model(model_name, os.path.join(model_dir, "model_weights")) + + for adapter_config in get_new_adapter_config_strings(): + # Create a new model output + adapter_name = model.load_adapter(os.path.join(model_dir, "weights_" + adapter_config)) + model.set_active_adapters(adapter_name) + model_output = create_output(model, model_name) + + # Compare the model output to the reference output + model_output_n, last_hidden_state = convert_tensors_to_list(model_output) + ref_output = restore_from_jsonl(config=adapter_config, file_path=os.path.join(model_dir, "output.jsonl")) + is_equal = compare_lists_close(ref_output, model_output_n, rtol=1e-05, atol=1e-08) + print(f"Adapter: {adapter_config} -> {is_equal}") + + model.delete_adapter(adapter_name) diff --git a/adapters/utils/back_comp/create_outputs.py b/adapters/utils/back_comp/create_outputs.py new file mode 100644 index 00000000..8476b574 --- /dev/null +++ b/adapters/utils/back_comp/create_outputs.py @@ -0,0 +1,64 @@ +import argparse +import os + +from adapters import AutoAdapterModel, CompacterConfig, CompacterPlusPlusConfig +from Utils import ( + convert_tensors_to_list, + create_model, + create_output, + fix_seeds, + get_model_names, + get_new_adapter_config_strings, + load_model, + save_to_jsonl, +) + + +parser = argparse.ArgumentParser() +parser.add_argument("--path", type=str) +args = parser.parse_args() + + +# Create the root path +base_dir = os.path.join(args.path, "model_outputs") +fix_seeds() + +for model_name in get_model_names(): + print(f"Model = {model_name}") + # Create the dir to contain model- and adapter-weights and model outputs + model_dir = os.path.join(base_dir, model_name) + os.makedirs(model_dir, exist_ok=True) + + model = create_model(model_name=model_name, model_class=AutoAdapterModel) + # Save the model weights to reuse later + model_save_dir = os.path.join(model_dir, "model_weights") + os.makedirs(model_save_dir, exist_ok=True) + model.save_pretrained(model_save_dir, from_pt=True) # save the base model + + for config in get_new_adapter_config_strings(): + # Load the reference model + model = load_model(model_name, os.path.join(model_dir, "model_weights")) + + # Add the adapter which is tested + # For the compacter style adapters the phm_dim and reduction factor are set manually to ensure that the bottleneck dimension is divisible by phm_dim + if config == "compacter++": + adapter_config = CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8) + elif config == "compacter": + adapter_config = CompacterConfig(phm_dim=2, reduction_factor=8) + else: + adapter_config = config + adapter_name = "weights_" + config + model.add_adapter(adapter_name, config=adapter_config) + model.set_active_adapters(adapter_name) + + model_output = create_output(model, model_name) + + # Process and save the output + model_output_n, last_hidden_state = convert_tensors_to_list(model_output) + save_to_jsonl(model_output_n, config, os.path.join(model_dir, "output.jsonl")) + + # Save the adapter weights + adapter_save_dir = os.path.join(model_dir, adapter_name) + os.makedirs(adapter_save_dir, exist_ok=True) + model.save_adapter(save_directory=adapter_save_dir, adapter_name=adapter_name) + model.delete_adapter(adapter_name) diff --git a/adapters/utils/check_inits.py b/adapters/utils/check_inits.py new file mode 100644 index 00000000..57f60075 --- /dev/null +++ b/adapters/utils/check_inits.py @@ -0,0 +1,13 @@ +# flake8: noqa: E402 +import sys +from os.path import abspath, dirname, join + + +sys.path.insert(1, abspath(join(dirname(dirname(__file__)), "hf_transformers"))) + +import utils +from utils.check_inits import check_all_inits + + +utils.check_inits.PATH_TO_TRANSFORMERS = "src/adapters" +check_all_inits() diff --git a/adapters/utils/convert_xmod_checkpoint.py b/adapters/utils/convert_xmod_checkpoint.py new file mode 100644 index 00000000..30ca0ede --- /dev/null +++ b/adapters/utils/convert_xmod_checkpoint.py @@ -0,0 +1,85 @@ +""" +This script can be used to convert an Xmod checkpoints (including adapters) from the HF format to the Adapters format. +""" +import argparse +import os +import re + +import torch + +from adapters import SeqBnConfig, XmodAdapterModel +from transformers import XmodModel + + +def convert_xmod_checkpoint(model_name: str, output_dir: str): + # Instantiate new model + orig_model = XmodModel.from_pretrained(model_name) + model_config = orig_model.config + new_model = XmodAdapterModel.from_pretrained(model_name) + for lang in model_config.languages: + adapter_config = SeqBnConfig( + reduction_factor=model_config.adapter_reduction_factor, + # selection between (shared) adapter LN and original LN is done in XmodOutput + original_ln_before=model_config.adapter_layer_norm or model_config.adapter_reuse_layer_norm, + original_ln_after=False, + residual_before_ln=False if model_config.ln_before_adapter else "post_add", + non_linearity=model_config.hidden_act, + ) + new_model.add_adapter(lang, adapter_config) + + # Convert state dict + new_state_dict = {} + for k, v in orig_model.state_dict().items(): + if match := re.match(r"(.+)\.adapter_modules\.(?P\w+)\.(?P\w+)\.(.+)", k): + prefix, suffix = match.group(1, 4) + lang = match.group("lang") + layer = match.group("layer") + if layer == "dense1": + new_layer = "adapter_down.0" + elif layer == "dense2": + new_layer = "adapter_up" + else: + raise ValueError(f"Unknown layer {layer}") + new_k = f"{new_model.base_model_prefix}.{prefix}.adapters.{lang}.{new_layer}.{suffix}" + new_state_dict[new_k] = v + else: + new_state_dict[f"{new_model.base_model_prefix}.{k}"] = v + missing_keys, unexpected_keys = new_model.load_state_dict(new_state_dict, strict=False) + print("Missing keys:", missing_keys) + print("Unexpected keys:", unexpected_keys) + + # Check equal outputs + orig_model.eval() + new_model.eval() + inputs = orig_model.dummy_inputs + for lang in model_config.languages: + orig_model.set_default_language(lang) + orig_outputs = orig_model(**inputs) + new_model.set_active_adapters(lang) + new_outputs = new_model(**inputs) + all_close = torch.allclose(orig_outputs.last_hidden_state, new_outputs.last_hidden_state) + check_str = "OK" if all_close else "FAIL" + print(f"{lang:>6}: {check_str}") + + # Save new model & all adapters + os.makedirs(output_dir, exist_ok=True) + new_model.save_all_adapters(output_dir) + # Remove all adapters except for English + for lang in model_config.languages: + if lang != "en_XX": + new_model.delete_adapter(lang) + new_model.save_pretrained(output_dir) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-n", "--model_name", type=str, required=True) + parser.add_argument("-o", "--output_dir", type=str, required=True) + + args = parser.parse_args() + + convert_xmod_checkpoint(args.model_name, args.output_dir) + + +if __name__ == "__main__": + main() diff --git a/adapters/utils/custom_init_isort.py b/adapters/utils/custom_init_isort.py new file mode 100644 index 00000000..507363e1 --- /dev/null +++ b/adapters/utils/custom_init_isort.py @@ -0,0 +1,21 @@ +# flake8: noqa: E402 +import argparse +import sys +from os.path import abspath, dirname, join + + +sys.path.insert(1, abspath(join(dirname(dirname(__file__)), "hf_transformers"))) + +import utils +from utils.custom_init_isort import sort_imports_in_all_inits + + +utils.custom_init_isort.PATH_TO_TRANSFORMERS = "src/adapters" + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--check_only", action="store_true", help="Whether to only check or fix style.") + args = parser.parse_args() + + sort_imports_in_all_inits(check_only=args.check_only) diff --git a/adapters/utils/sort_auto_mappings.py b/adapters/utils/sort_auto_mappings.py new file mode 100644 index 00000000..dee148b7 --- /dev/null +++ b/adapters/utils/sort_auto_mappings.py @@ -0,0 +1,21 @@ +# flake8: noqa: E402 +import argparse +import sys +from os.path import abspath, dirname, join + + +sys.path.insert(1, abspath(join(dirname(dirname(__file__)), "hf_transformers"))) + +import utils +from utils.sort_auto_mappings import sort_all_auto_mappings + + +utils.sort_auto_mappings.PATH_TO_AUTO_MODULE = "src/adapters/models/auto" + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--check_only", action="store_true", help="Whether to only check or fix style.") + args = parser.parse_args() + + sort_all_auto_mappings(not args.check_only) diff --git a/configs/peft/adapter.json b/configs/peft/adapter.json new file mode 100644 index 00000000..63380939 --- /dev/null +++ b/configs/peft/adapter.json @@ -0,0 +1,36 @@ +{ + "model_name_or_path": "xlmr-normal-p-v3", + "output_dir": "xlmr-3l-v3_adapter_rf32_ep20", + "block_size": 256, + "eval_stride": 128, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "epoch", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 1, + "learning_rate": 3e-4, + "fp16": false, + "num_train_epochs": 20, + "logging_steps": 20, + "report_to": "wandb", + "save_steps": 100000000, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_ratio": 0.1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", + "adapter_config": "seq_bn[reduction_factor=32]", + "weight_decay": 0.0, + "auxiliary_remove_prob": 0.2 +} \ No newline at end of file diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index d44844b0..abfd447d 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -12,6 +12,7 @@ from tqdm.auto import tqdm from transformers import AutoModelForTokenClassification, HfArgumentParser import numpy as np +import adapters import wtpsplit.models # noqa: F401 from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs @@ -22,6 +23,7 @@ @dataclass class Args: model_path: str + adapter_path: str = None # eval data in the format: # { # "": { @@ -116,6 +118,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # valid data if valid_data is not None and "valid" not in lang_group: + if args.adapter_path: + raise NotImplementedError("Adapters not supported for valid data") valid_sentences = [sample["text"].strip() for sample in valid_data if sample["lang"] == lang_code] assert len(valid_sentences) > 0 @@ -132,6 +136,17 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # eval data for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): + try: + if args.adapter_path: + model.model.load_adapter( + args.adapter_path + "/" + dataset_name + "/" + lang_code, + set_active=True, + with_head=True, + load_as="text", + ) + except Exception as e: + print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") + continue print(dataset_name) if dataset_name not in lang_group: dset_group = lang_group.create_group(dataset_name) @@ -194,8 +209,11 @@ def compute_statistics(values): def main(args): + save_model_path = args.model_path + if args.adapter_path: + save_model_path = args.adapter_path save_str = ( - f"{args.model_path.replace('/','_')}_b{args.block_size}_s{args.stride}_u{args.threshold}{args.save_suffix}" + f"{save_model_path.replace('/','_')}_b{args.block_size}_s{args.stride}_u{args.threshold}{args.save_suffix}" ) if args.do_lowercase: save_str += "_lc" @@ -210,6 +228,13 @@ def main(args): print("Loading model...") model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) + if args.adapter_path: + model_type = model.model.config.model_type + # adapters need xlm-roberta as model type. + model.model.config.model_type = "xlm-roberta" + adapters.init(model.model) + # reset model type (used later) + model.model.config.model_type = model_type # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) @@ -267,7 +292,7 @@ def main(args): "t": score_t, "punct": score_punct, } - + if score_u is not None: u_scores.append((score_u, lang_code)) if score_t is not None: diff --git a/wtpsplit/models.py b/wtpsplit/models.py index 29582e08..593d08ee 100644 --- a/wtpsplit/models.py +++ b/wtpsplit/models.py @@ -1300,6 +1300,6 @@ def get_extended_attention_mask( print(tokenizer.tokenize(text)) print(tokenizer.encode(text)) print(tokens) - + # forward pass print(backbone(**tokens)) diff --git a/wtpsplit/train/adaptertrainer.py b/wtpsplit/train/adaptertrainer.py new file mode 100644 index 00000000..6f5294f1 --- /dev/null +++ b/wtpsplit/train/adaptertrainer.py @@ -0,0 +1,556 @@ +import os +from typing import Dict + +import numpy as np +import torch +from torch import nn +from transformers import PreTrainedModel +from transformers.trainer import ( + ALL_LAYERNORM_LAYERS, + TRAINING_ARGS_NAME, + WEIGHTS_NAME, + DataLoader, + EvalLoopOutput, + IterableDatasetShard, + List, + Optional, + deepspeed_init, + denumpify_detensorize, + find_batch_size, + has_length, + is_sagemaker_mp_enabled, + is_torch_tpu_available, + nested_concat, + nested_numpify, + nested_truncate, + get_parameter_names, +) +from transformers.modeling_utils import unwrap_model + +from wtpsplit.train.utils import Model + +if is_torch_tpu_available(check_device=False): + import torch_xla.core.xla_model as xm # noqa: F401 + import torch_xla.debug.metrics as met # noqa: F401 + import torch_xla.distributed.parallel_loader as pl # noqa: F401 + +from transformers.trainer_callback import TrainerCallback, TrainerControl, TrainerState +from adapters.composition import AdapterCompositionBlock, Fuse + +import re +from typing import Callable, Tuple, Union + +from torch.utils.data.dataset import Dataset + +from transformers import Trainer, __version__ +from transformers.configuration_utils import PretrainedConfig +from transformers.data.data_collator import DataCollator +from transformers.tokenization_utils_base import PreTrainedTokenizerBase +from transformers.trainer_utils import EvalPrediction +from transformers.training_args import TrainingArguments +from transformers.utils import CONFIG_NAME, logging + + +if is_sagemaker_mp_enabled(): + import smdistributed.modelparallel.torch as smp + + +logger = logging.get_logger(__name__) + +class AdapterTrainer(Trainer): + def __init__( + self, + model: Union[PreTrainedModel, nn.Module] = None, + args: TrainingArguments = None, + data_collator: Optional[DataCollator] = None, + train_dataset: Optional[Dataset] = None, + eval_dataset: Optional[Dataset] = None, + tokenizer: Optional[PreTrainedTokenizerBase] = None, + model_init: Callable[[], PreTrainedModel] = None, + compute_metrics: Optional[Callable[[EvalPrediction], Dict]] = None, + callbacks: Optional[List[TrainerCallback]] = None, + adapter_names: Optional[List[List[str]]] = None, + optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = (None, None), + preprocess_logits_for_metrics: Callable[[torch.Tensor, torch.Tensor], torch.Tensor] = None, + logging_suffix="", + ): + super().__init__( + model, + args, + data_collator, + train_dataset, + eval_dataset, + tokenizer=tokenizer, + model_init=model_init, + compute_metrics=compute_metrics, + callbacks=[AdapterTrainerCallback(self)] + callbacks if callbacks else [AdapterTrainerCallback(self)], + optimizers=optimizers, + preprocess_logits_for_metrics=preprocess_logits_for_metrics, + ) + + self.logging_suffix = logging_suffix + + if adapter_names is not None: + self.model.backbone.set_active_adapters(adapter_names) + # Set the defaults for loading/ saving model & adapters + if isinstance(self.model.backbone, PreTrainedModel): + model_frozen = getattr(self.model.backbone.base_model, "model_frozen", False) + else: + model_frozen = False + if model_frozen and self.model.backbone.active_adapters: + # Check if training AdapterFusion + self.train_adapter_fusion = ( + isinstance(self.model.backbone.active_adapters, Fuse) + or isinstance(self.model.backbone.active_adapters, AdapterCompositionBlock) + and any([isinstance(child, Fuse) for child in self.model.backbone.active_adapters.children]) + ) + if self.model.backbone.active_adapters is None: + raise ValueError( + "Expected a model with an active adapter setup." + "If you want to fully finetune the model use the Trainer class." + ) + if (self.label_names is None or len(self.label_names) < 1) and self.model.active_head is not None: + all_label_names = set() + for head in self.model.backbone._active_heads: + all_label_names |= set(self.model.backbone.heads[head].get_label_names()) + self.label_names = list(all_label_names) + + def create_optimizer(self): + """ + Setup the optimizer. + + We provide a reasonable default that works well. If you want to use something else, you can pass a tuple in the + Trainer's init through `optimizers`, or subclass and override this method in a subclass. + """ + opt_model = self.model_wrapped if is_sagemaker_mp_enabled() else self.model + + if self.optimizer is None: + decay_parameters = get_parameter_names(opt_model, ALL_LAYERNORM_LAYERS) + decay_parameters = [name for name in decay_parameters if "bias" not in name] + if hasattr(self.model, "config") and hasattr(self.model.config, "adapters"): + match_str = r"adapter_fusion_layer\..*\.value" + decay_parameters = [name for name in decay_parameters if not re.match(match_str, name)] + optimizer_grouped_parameters = [ + { + "params": [ + p for n, p in opt_model.named_parameters() if (n in decay_parameters and p.requires_grad) + ], + "weight_decay": self.args.weight_decay, + }, + { + "params": [ + p for n, p in opt_model.named_parameters() if (n not in decay_parameters and p.requires_grad) + ], + "weight_decay": 0.0, + }, + ] + + optimizer_cls, optimizer_kwargs = Trainer.get_optimizer_cls_and_kwargs(self.args) + self.optimizer = optimizer_cls(optimizer_grouped_parameters, **optimizer_kwargs) + + if is_sagemaker_mp_enabled(): + self.optimizer = smp.DistributedOptimizer(self.optimizer) + + return self.optimizer + + def _save(self, output_dir: Optional[str] = None, state_dict=None): + # If we are executing this function, we are the process zero, so we don't check for that. + output_dir = output_dir if output_dir is not None else self.args.output_dir + os.makedirs(output_dir, exist_ok=True) + logger.info(f"Saving model checkpoint to {output_dir}") + # Save a trained model and configuration using `save_pretrained()`. + # They can then be reloaded using `from_pretrained()` + if not isinstance(self.model, PreTrainedModel): + if isinstance(unwrap_model(self.model), PreTrainedModel): + if state_dict is None: + state_dict = self.model.state_dict() + unwrap_model(self.model).save_pretrained(output_dir, state_dict=state_dict) + else: + logger.info("Trainer.model is not a `PreTrainedModel`, only saving its state dict.") + if state_dict is None: + state_dict = self.model.state_dict() + torch.save(state_dict, os.path.join(output_dir, WEIGHTS_NAME)) + else: + self.model.save_all_adapters(output_dir) + if self.train_adapter_fusion: + self.model.save_all_adapter_fusions(output_dir) + if hasattr(self.model, "heads"): + self.model.save_all_heads(output_dir) + if self.tokenizer is not None: + self.tokenizer.save_pretrained(output_dir) + + # Good practice: save your training arguments together with the trained model + torch.save(self.args, os.path.join(output_dir, "training_args.bin")) + + def _load_from_checkpoint(self, resume_from_checkpoint): + args = self.args + if os.path.isfile(os.path.join(resume_from_checkpoint, WEIGHTS_NAME)): + logger.info(f"Loading model from {resume_from_checkpoint}).") + + if os.path.isfile(os.path.join(resume_from_checkpoint, CONFIG_NAME)): + config = PretrainedConfig.from_json_file(os.path.join(resume_from_checkpoint, CONFIG_NAME)) + checkpoint_version = config.transformers_version + if checkpoint_version is not None and checkpoint_version != __version__: + logger.warn( + f"You are resuming training from a checkpoint trained with {checkpoint_version} of " + f"Transformers but your current version is {__version__}. This is not recommended and could " + "yield to errors or unwanted behaviors." + ) + + if args.deepspeed: + # will be resumed in deepspeed_init + pass + else: + adapter_loaded = False + if os.path.isdir(resume_from_checkpoint): + adapter_loaded = self._load_adapters(resume_from_checkpoint) + self._load_adapter_fusions(resume_from_checkpoint) + # Save all heads for a model with heads + if hasattr(self.model, "heads"): + self._load_heads(resume_from_checkpoint) + + if not adapter_loaded: + raise Exception("Can't find a valid checkpoint at {}".format(resume_from_checkpoint)) + + def _load_adapters(self, resume_from_checkpoint): + adapter_loaded = False + for file_name in os.listdir(resume_from_checkpoint): + if os.path.isdir(os.path.join(resume_from_checkpoint, file_name)): + if "," not in file_name and "adapter_config.json" in os.listdir( + os.path.join(resume_from_checkpoint, file_name) + ): + self.model.load_adapter(os.path.join(os.path.join(resume_from_checkpoint, file_name))) + adapter_loaded = True + return adapter_loaded + + def _load_adapter_fusions(self, resume_from_checkpoint): + for file_name in os.listdir(resume_from_checkpoint): + if os.path.isdir(os.path.join(resume_from_checkpoint, file_name)): + if "," in file_name: + self.model.load_adapter_fusion(os.path.join(resume_from_checkpoint, file_name)) + + def _load_heads(self, resume_from_checkpoint): + for file_name in os.listdir(resume_from_checkpoint): + if os.path.isdir(os.path.join(resume_from_checkpoint, file_name)): + if "," not in file_name and "head_config.json" in os.listdir( + os.path.join(resume_from_checkpoint, file_name) + ): + self.model.load_head(os.path.join(resume_from_checkpoint, file_name)) + + def _load_best_model(self): + model = self.model_wrapped if is_sagemaker_mp_enabled() else self.model + logger.info( + f"Loading best adapter(s) from {self.state.best_model_checkpoint} (score: {self.state.best_metric})." + ) + # attempt to re-load all adapters from checkpoint + for adapter in model.adapters_config.adapters: + adapter_dir = os.path.join(self.state.best_model_checkpoint, adapter) + if os.path.exists(adapter_dir): + model.load_adapter(adapter_dir) + if self.train_adapter_fusion: + logger.info( + f"Loading best adapter fusion(s) from {self.state.best_model_checkpoint} (score:" + f" {self.state.best_metric})." + ) + # attempt to re-load all adapter fusions from checkpoint + for fusion in model.adapters_config.fusions: + fusion_dir = os.path.join(self.state.best_model_checkpoint, fusion) + if os.path.exists(fusion_dir): + model.load_adapter_fusion(fusion_dir) + model.to(self.args.device) + + def _maybe_log_save_evaluate(self, tr_loss, model, trial, epoch, ignore_keys_for_eval): + if self.control.should_log: + if is_torch_tpu_available(): + xm.mark_step() + + logs: Dict[str, float] = {} + + # all_gather + mean() to get average loss over all processes + tr_loss_scalar = self._nested_gather(tr_loss).mean().item() + + # reset tr_loss to zero + tr_loss -= tr_loss + + logs["loss"] = round(tr_loss_scalar / (self.state.global_step - self._globalstep_last_logged), 4) + logs["learning_rate"] = self._get_learning_rate() + + self._total_loss_scalar += tr_loss_scalar + self._globalstep_last_logged = self.state.global_step + self.store_flos() + + self.log(logs) + + metrics = None + if self.control.should_evaluate: + metrics = self.evaluate(ignore_keys=ignore_keys_for_eval) + self._report_to_hp_search(trial, self.state.global_step, metrics) + + if self.control.should_save: + self._save_checkpoint(model, trial, metrics=metrics) + self.control = self.callback_handler.on_save(self.args, self.state, self.control) + + def evaluation_loop( + self, + dataloader: DataLoader, + description: str, + prediction_loss_only: Optional[bool] = None, + ignore_keys: Optional[List[str]] = None, + metric_key_prefix: str = "eval", + ) -> EvalLoopOutput: + """ + Prediction/evaluation loop, shared by `Trainer.evaluate()` and `Trainer.predict()`. + + Works both with or without labels. + """ + args = self.args + + prediction_loss_only = prediction_loss_only if prediction_loss_only is not None else args.prediction_loss_only + + # if eval is called w/o train init deepspeed here + if args.deepspeed and not self.deepspeed: + # XXX: eval doesn't have `resume_from_checkpoint` arg but we should be able to do eval + # from the checkpoint eventually + deepspeed_engine, _, _ = deepspeed_init( + self, num_training_steps=0, resume_from_checkpoint=None, inference=True + ) + self.model = deepspeed_engine.module + self.model_wrapped = deepspeed_engine + self.deepspeed = deepspeed_engine + + model = self._wrap_model(self.model, training=False, dataloader=dataloader) + + # if full fp16 or bf16 eval is wanted and this ``evaluation`` or ``predict`` isn't called + # while ``train`` is running, cast it to the right dtype first and then put on device + if not self.is_in_train: + if args.fp16_full_eval: + model = model.to(dtype=torch.float16, device=args.device) + elif args.bf16_full_eval: + model = model.to(dtype=torch.bfloat16, device=args.device) + + batch_size = self.args.eval_batch_size + + logger.info(f"***** Running {description} *****") + if has_length(dataloader): + logger.warning(f" Num examples = {self.num_examples(dataloader)}") + else: + logger.info(" Num examples: Unknown") + logger.info(f" Batch size = {batch_size}") + + model.eval() + + self.callback_handler.eval_dataloader = dataloader + # Do this before wrapping. + eval_dataset = getattr(dataloader, "dataset", None) + + if is_torch_tpu_available(): + dataloader = pl.ParallelLoader(dataloader, [args.device]).per_device_loader(args.device) + + if args.past_index >= 0: + self._past = None + + # Initialize containers + # losses/preds/labels on GPU/TPU (accumulated for eval_accumulation_steps) + losses_host = None + preds_host = None + labels_host = None + inputs_host = None + + # losses/preds/labels on CPU (final containers) + all_losses = None + all_preds = None + all_labels = None + all_inputs = None + # Will be useful when we have an iterable dataset so don't know its length. + + observed_num_examples = 0 + # Main evaluation loop + for step, inputs in enumerate(dataloader): + # Update the observed num examples + observed_batch_size = find_batch_size(inputs) + if observed_batch_size is not None: + observed_num_examples += observed_batch_size + # For batch samplers, batch_size is not known by the dataloader in advance. + if batch_size is None: + batch_size = observed_batch_size + + # Prediction step + loss, logits, labels = self.prediction_step(model, inputs, prediction_loss_only, ignore_keys=ignore_keys) + inputs_decode = self._prepare_input(inputs["input_ids"]) if args.include_inputs_for_metrics else None + + if is_torch_tpu_available(): + xm.mark_step() + + # Update containers on host + if loss is not None: + losses = self._nested_gather(loss.repeat(batch_size)) + losses_host = losses if losses_host is None else torch.cat((losses_host, losses), dim=0) + if labels is not None: + labels = self._pad_across_processes(labels) + labels = self._nested_gather(labels) + labels_host = labels if labels_host is None else nested_concat(labels_host, labels, padding_index=-100) + if inputs_decode is not None: + inputs_decode = self._pad_across_processes(inputs_decode) + inputs_decode = self._nested_gather(inputs_decode) + inputs_host = ( + inputs_decode + if inputs_host is None + else nested_concat(inputs_host, inputs_decode, padding_index=-100) + ) + if logits is not None: + logits = self._pad_across_processes(logits) + logits = self._nested_gather(logits) + if self.preprocess_logits_for_metrics is not None: + logits = self.preprocess_logits_for_metrics(logits, labels) + preds_host = logits if preds_host is None else nested_concat(preds_host, logits, padding_index=-100) + self.control = self.callback_handler.on_prediction_step(args, self.state, self.control) + + # Gather all tensors and put them back on the CPU if we have done enough accumulation steps. + if args.eval_accumulation_steps is not None and (step + 1) % args.eval_accumulation_steps == 0: + if losses_host is not None: + losses = nested_numpify(losses_host) + all_losses = losses if all_losses is None else np.concatenate((all_losses, losses), axis=0) + if preds_host is not None: + logits = nested_numpify(preds_host) + all_preds = logits if all_preds is None else nested_concat(all_preds, logits, padding_index=-100) + if inputs_host is not None: + inputs_decode = nested_numpify(inputs_host) + all_inputs = ( + inputs_decode + if all_inputs is None + else nested_concat(all_inputs, inputs_decode, padding_index=-100) + ) + if labels_host is not None: + labels = nested_numpify(labels_host) + all_labels = labels if all_labels is None else nested_concat(all_labels, labels, padding_index=-100) + + # Set back to None to begin a new accumulation + losses_host, preds_host, inputs_host, labels_host = ( + None, + None, + None, + None, + ) + + if args.past_index and hasattr(self, "_past"): + # Clean the state at the end of the evaluation loop + delattr(self, "_past") + + # Gather all remaining tensors and put them back on the CPU + if losses_host is not None: + losses = nested_numpify(losses_host) + all_losses = losses if all_losses is None else np.concatenate((all_losses, losses), axis=0) + if preds_host is not None: + logits = nested_numpify(preds_host) + all_preds = logits if all_preds is None else nested_concat(all_preds, logits, padding_index=-100) + if inputs_host is not None: + inputs_decode = nested_numpify(inputs_host) + all_inputs = ( + inputs_decode if all_inputs is None else nested_concat(all_inputs, inputs_decode, padding_index=-100) + ) + if labels_host is not None: + labels = nested_numpify(labels_host) + all_labels = labels if all_labels is None else nested_concat(all_labels, labels, padding_index=-100) + + # Number of samples + if has_length(eval_dataset): + num_samples = len(eval_dataset) + # The instance check is weird and does not actually check for the type, but whether the dataset has the right + # methods. Therefore we need to make sure it also has the attribute. + elif isinstance(eval_dataset, IterableDatasetShard) and hasattr(eval_dataset, "num_examples"): + num_samples = eval_dataset.num_examples + else: + if has_length(dataloader): + num_samples = self.num_examples(dataloader) + else: # both len(dataloader.dataset) and len(dataloader) fail + num_samples = observed_num_examples + + # Number of losses has been rounded to a multiple of batch_size and in a distributed training, the number of + # samplers has been rounded to a multiple of batch_size, so we truncate. + if all_losses is not None: + all_losses = all_losses[:num_samples] + if all_preds is not None: + all_preds = nested_truncate(all_preds, num_samples) + if all_labels is not None: + all_labels = nested_truncate(all_labels, num_samples) + if all_inputs is not None: + all_inputs = nested_truncate(all_inputs, num_samples) + + # Metrics! + # MODIFIED: always compute metrics + if self.compute_metrics is not None: + metrics = self.compute_metrics(self) + else: + metrics = {} + + # To be JSON-serializable, we need to remove numpy types or zero-d tensors + metrics = denumpify_detensorize(metrics) + + if all_losses is not None: + metrics[f"{metric_key_prefix}_loss"] = all_losses.mean().item() + + # Prefix all keys with metric_key_prefix + '_' + for key in list(metrics.keys()): + if not key.startswith(f"{metric_key_prefix}_"): + metrics[f"{metric_key_prefix}_{key}"] = metrics.pop(key) + + return EvalLoopOutput( + predictions=all_preds, + label_ids=all_labels, + metrics=metrics, + num_samples=num_samples, + ) + + def _save_tpu(self, output_dir: Optional[str] = None): + output_dir = output_dir if output_dir is not None else self.args.output_dir + logger.warning(f"Saving model checkpoint to {output_dir}") + + if xm.is_master_ordinal(): + os.makedirs(output_dir, exist_ok=True) + torch.save(self.args, os.path.join(output_dir, TRAINING_ARGS_NAME)) + + # Save a trained model and configuration using `save_pretrained()`. + # They can then be reloaded using `from_pretrained()` + xm.rendezvous("saving_checkpoint") + if isinstance(self.model, Model): + actual_model = self.model.backbone + else: + actual_model = self.model + if not isinstance(actual_model, PreTrainedModel): + if isinstance(unwrap_model(actual_model), PreTrainedModel): + unwrap_model(actual_model).save_pretrained( + output_dir, + is_main_process=self.args.should_save, + state_dict=actual_model.state_dict(), + save_function=xm.save, + ) + else: + logger.warning("Trainer.model is not a `PreTrainedModel`, only saving its state dict.") + state_dict = actual_model.state_dict() + xm.save(state_dict, os.path.join(output_dir, WEIGHTS_NAME)) + else: + actual_model.save_pretrained(output_dir, is_main_process=self.args.should_save, save_function=xm.save) + if self.tokenizer is not None and self.args.should_save: + self.tokenizer.save_pretrained(output_dir) + +class AdapterTrainerCallback(TrainerCallback): + def __init__(self, trainer): + super().__init__() + self.trainer = trainer + + def on_train_begin(self, args: TrainingArguments, state: TrainerState, control: TrainerControl, **kwargs): + model = kwargs.pop("model") + model_frozen = getattr(model.backbone.base_model, "model_frozen", False) + if not model_frozen: + raise ValueError( + "The pre-trained model weights are not frozen. For training adapters, please call the train_adapter()" + " method" + ) + + def on_step_end(self, args: TrainingArguments, state: TrainerState, control: TrainerControl, **kwargs): + # apply adapter fusion weight regularization on the value matrix + model = kwargs.pop("model") + if self.trainer.train_adapter_fusion: + fusion_reg_loss = model.backbone.base_model.get_fusion_regularization_loss() + if fusion_reg_loss is not None: + fusion_reg_loss.backward() \ No newline at end of file diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 582db6e1..c782f3ca 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -1,4 +1,3 @@ -import copy import logging import sys @@ -7,10 +6,10 @@ import sklearn.metrics from wtpsplit.evaluation import token_to_char_probs +from wtpsplit.evaluation.intrinsic import corrupt from wtpsplit.evaluation.intrinsic_pairwise import generate_pairs, process_logits_pairwise from wtpsplit.extract import PyTorchWrapper, extract -from wtpsplit.utils import Constants -from wtpsplit.evaluation.intrinsic import corrupt +from wtpsplit.utils import Constants, sigmoid logger = logging.getLogger(__name__) @@ -38,20 +37,32 @@ def compute_f1(pred, true): ) -def get_metrics(labels, preds): +def get_metrics(labels, preds, threshold: float = 0.01): + # Compute precision-recall curve and AUC precision, recall, thresholds = sklearn.metrics.precision_recall_curve(labels, preds) - - # we can use raw logits (no sigmoid) since we only care about the ordering here pr_auc = sklearn.metrics.auc(recall, precision) - metrics = { - "pr_auc": pr_auc, - } + # Compute F1 scores for all thresholds + f1_scores = 2 * (precision * recall) / (precision + recall + 1e-10) + + # Find best F1 score and its corresponding threshold + best_f1_index = np.argmax(f1_scores[:-1]) # Exclude last value because it corresponds to recall of 0. + best_f1 = f1_scores[best_f1_index] + best_threshold = thresholds[best_f1_index] + + # Compute F1 score for a specific threshold (e.g., 0.01 after applying sigmoid) + f1_at_specific_threshold = sklearn.metrics.f1_score(labels, sigmoid(preds) > threshold) + + metrics = {"pr_auc": pr_auc} info = { "probs": preds, "labels": labels, "recalls": recall, "precisions": precision, + "f1_scores": f1_scores, + "f1_best": best_f1, + "threshold_best": sigmoid(best_threshold).item(), + "f1": f1_at_specific_threshold, "thresholds": thresholds, } @@ -141,7 +152,6 @@ def evaluate_sentence_pairwise( metrics_list = [] accuracy_list = [] - # get pairs of sentences (non-overlapping) sampled_pairs = generate_pairs( sentences=sentences, @@ -164,7 +174,6 @@ def evaluate_sentence_pairwise( # simulate performance for WtP-U DEFAULT_THRESHOLD = 0.01 - for i, (sentence1, sentence2) in enumerate(sampled_pairs): newline_probs = logits[i][:, positive_index] diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py new file mode 100644 index 00000000..951f708c --- /dev/null +++ b/wtpsplit/train/train_adapter.py @@ -0,0 +1,526 @@ +from dataclasses import dataclass +import logging +import sys +import os +import copy +from typing import List +from adapters import AdapterArguments +from transformers import AutoTokenizer, HfArgumentParser, TrainingArguments, set_seed +from wtpsplit.train.evaluate import evaluate_sentence +from wtpsplit.train.adaptertrainer import AdapterTrainer +from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict +from wtpsplit.train.utils import Model +from wtpsplit.train.train import setup_logging, collate_fn +from wtpsplit.models import SubwordXLMForTokenClassification, SubwordXLMConfig +from tokenizers import AddedToken + +import adapters +import datasets +import numpy as np +import math +from collections import Counter +import torch +import random +import wandb +from glob import glob +from functools import partial + +logger = logging.getLogger(__name__) + +os.environ["TOKENIZERS_PARALLELISM"] = "false" + + +@dataclass +class Args: + model_name_or_path: str + base_model: str = "xlm-roberta-base" + shuffle: bool = True + text_path: str = "data/eval.pth" + include_languages: List[str] = None + preprocessing_num_workers: int = 1 + block_size: int = 512 + overflow_size: int = 16 + eval_stride: int = 256 + loss_margin: float = 0.5 + pack_samples: bool = False + one_sample_per_line: bool = False + use_loss_weights: bool = False + do_sentence_training: bool = True + do_auxiliary_training: bool = True + aux_training_weight: float = 1.0 + ignore_non_hyphen: bool = False + non_punctuation_sample_ratio: float = None + adapter_warmup_steps: int = 0 + adapter_lr_multiplier: float = 1.0 + text_column: str = "text" + + # NEW PARAMS + use_subwords: bool = False + freeze_classifier: bool = False + clf_from_scratch: bool = False + + +def main(): + parser = HfArgumentParser([Args, TrainingArguments, LabelArgs, AdapterArguments]) + if sys.argv[1].endswith(".json"): + (args, training_args, label_args, adapter_args) = parser.parse_json_file(sys.argv[1]) + wandb_name = training_args.output_dir + else: + (args, training_args, label_args, adapter_args) = parser.parse_args_into_dataclasses() + wandb_name = None + + setup_logging(training_args) + set_seed(training_args.seed) + + num_labels = Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0) + config = SubwordXLMConfig.from_pretrained( + args.model_name_or_path, + num_labels=num_labels, + ) + + # since we pre-tokenize, running multiple epochs would iterate over data in same order + # hence, we duplicate & shuffle train data sentences in prepare_dataset + # and set num_train_epochs to 1 --> simulate multiple epochs, each with different sentence order + num_train_epochs = training_args.num_train_epochs + + training_args.num_train_epochs = 1 + training_args.evaluation_strategy = "steps" + + def prepare_dataset( + data, + num_workers=1, + include_languages=None, + dataset_name="ud", + shuffle=False, + split="train", + ): + # maybe we use more than 1 lang later at once. + with training_args.main_process_first(): + for lang in include_languages: + if split == "train": + dataset = data[lang]["sentence"][dataset_name]["meta"]["train_data"] + elif split == "valid": + dataset = data[lang]["sentence"][dataset_name]["data"] + data_list = [] + if dataset is None: + return None + for sample in dataset: + ends_with_punctuation = sample.endswith(tuple(Constants.PUNCTUATION_CHARS)) + data_list.append( + { + args.text_column: sample + "\n" if len(sample) > 0 and sample[-1] != "\n" else sample, + "lang": lang, + "ends_with_punctuation": ends_with_punctuation, + } + ) + dataset = datasets.Dataset.from_list(data_list) + with training_args.main_process_first(): + logger.warning(f"Loaded {len(dataset)} examples for {lang} {dataset_name} {split} dataset.") + + if include_languages is not None: + include_languages = set(include_languages) + + dataset = dataset.filter( + lambda example: example["lang"] in include_languages, + num_proc=args.preprocessing_num_workers, + ) + with training_args.main_process_first(): + logger.warning(f"Filtered to {len(dataset)} examples.") + + if shuffle: + # create n_epochs copies of the dataset and shuffle them individually + dataset = datasets.concatenate_datasets([dataset.shuffle(seed=i) for i in range(num_train_epochs)]) + + with training_args.main_process_first(): + logger.warning(f"Shuffled dataset to {len(dataset)} examples.") + + # very likely not relevant / used only for the compound part + if args.ignore_non_hyphen: + with training_args.main_process_first(): + dataset = dataset.filter( + lambda sample: any(c in sample[args.text_column] for c in label_args.hyphen_chars), + num_proc=args.preprocessing_num_workers, + ) + with training_args.main_process_first(): + logger.info(f"Filtered to {len(dataset)} examples.") + + # "punctuation-specific sampling" in the paper + if args.non_punctuation_sample_ratio is not None: + languages_without_punctuation = { + lang_code + for lang_code in Constants.LANGINFO.index + if Constants.LANGINFO.loc[lang_code, "no_punctuation"] + } + + def drop_some_non_punctuation_samples(examples): + include_indices = set( + np.where([lang_code not in languages_without_punctuation for lang_code in examples["lang"]])[0] + ) + punctuation_indices = { + i for i in np.where(examples["ends_with_punctuation"])[0] if i in include_indices + } + + target_n_non_punct = int( + (len(punctuation_indices) * args.non_punctuation_sample_ratio) + / (1 - args.non_punctuation_sample_ratio) + ) + n_drop = (len(include_indices) - len(punctuation_indices)) - target_n_non_punct + + out = [True for _ in range(len(examples["ends_with_punctuation"]))] + + if n_drop <= 0: + return out + drop_indices = np.random.choice( + list(include_indices - punctuation_indices), + n_drop, + replace=False, + ) + + for i in drop_indices: + out[i] = False + + return out + + with training_args.main_process_first(): + dataset = dataset.filter( + drop_some_non_punctuation_samples, + batched=True, + batch_size=1_000_000, + num_proc=num_workers, + ) + + def tokenize_texts(examples): + # do not return CLS and SEP token here + # there should only be 1 of these per block later, not multiple + # we still can't use return_special_tokens=False since we need the \n token later for the labels + tokenized = tokenizer(examples[args.text_column], verbose=False) + return {"input_ids": [example[1:-1] for example in tokenized["input_ids"]]} + + # similar to group_texts in huggingface's run_clm.py / run_mlm.py: https://github.com/huggingface/transformers/blob/main/examples/pytorch/language-modeling/run_mlm.py + def group_texts(examples): + all_input_blocks = [] + all_input_block_lengths = [] + all_langs = [] + + def maybe_pad(text): + if args.pack_samples: + padding = model.backbone.config.downsampling_rate - (len(text) % model.backbone.downsampling_rate) + if padding == model.backbone.downsampling_rate: + padding = 0 + + text += chr(0) * padding + + return text + + for current_lang in set(examples["lang"]): + if not args.use_subwords: + lang_texts = [ + maybe_pad(text) + for text, lang in zip(examples["input_ids"], examples["lang"]) + if lang == current_lang + ] + else: + # only retain current_lang examples (all columns) + lang_subwords = [ + subwords + for subwords, lang in zip(examples["input_ids"], examples["lang"]) + if lang == current_lang + ] + # filter out some special tokens + # from html tags, mostly in Latin, Thai & Korean + lang_subwords = [ + [subword for subword in subwords if subword not in special_tokens_ids] + for subwords in lang_subwords + ] + # pack_samples used for the compound part, so irrelevant + if args.pack_samples: + if args.use_subwords: + raise NotImplementedError + blocks = [] + block_ids = [] + + current_block = ["", []] + + for i, text in enumerate(lang_texts): + if len(text) > args.block_size: + continue + + current_block[0] += text + current_block[1] += [i] * len(text) + + if i + 1 < len(lang_texts) and len(current_block[0]) + len(lang_texts[i + 1]) > args.block_size: + padding = args.block_size - len(current_block[0]) + + current_block[0] += chr(0) * padding + current_block[1] += [i] * padding + blocks.append(current_block[0]) + block_ids.append(current_block[1]) + + current_block = ["", []] + + if len(current_block[0]) > 0: + padding = args.block_size - len(current_block[0]) + + current_block[0] += chr(0) * padding + current_block[1] += [i] * padding + blocks.append(current_block[0]) + block_ids.append(current_block[1]) + else: + if not args.use_subwords: + concatenated_texts = "".join(lang_texts) + concatenated_ids = [i for i, text in enumerate(lang_texts) for _ in text] + else: + # concatenate token lists + concatenated_texts = [item for sublist in lang_subwords for item in sublist] + concatenated_ids = [i for i, subwords in enumerate(lang_subwords) for _ in subwords] + + total_length = len(concatenated_texts) + + best_length = math.ceil(total_length / args.block_size) * args.block_size + args.overflow_size + while best_length > total_length: + best_length -= args.block_size + + if best_length < 0: + continue + + concatenated_texts = concatenated_texts[:best_length] + concatenated_ids = concatenated_ids[:best_length] + + blocks = [ + concatenated_texts[i : i + args.block_size + args.overflow_size] + for i in range(0, best_length - args.block_size, args.block_size) + ] + block_ids = [ + concatenated_ids[i : i + args.block_size + args.overflow_size] + for i in range(0, best_length - args.block_size, args.block_size) + ] + + block_langs = [current_lang] * len(blocks) + + all_input_blocks.extend(blocks) + all_input_block_lengths.extend([list(Counter(ids).values()) for ids in block_ids]) + all_langs.extend(block_langs) + + return { + "input_ids": all_input_blocks, + "block_lengths": all_input_block_lengths, + "lang": all_langs, + } + + if args.pack_samples: + assert not args.one_sample_per_line + + if args.use_subwords: + with training_args.main_process_first(): + dataset = dataset.map( + tokenize_texts, + batched=True, + num_proc=num_workers, + remove_columns=[args.text_column], + ) + else: + # this is no longer used and would cause an error otherwise + with training_args.main_process_first(): + dataset = dataset.rename_column(args.text_column, "input_ids") + + if not args.one_sample_per_line: + with training_args.main_process_first(): + dataset = dataset.map( + group_texts, + batched=True, + num_proc=num_workers, + # a bit hacky but oh well, only drop if sentence + remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], + ) + + return dataset + + with training_args.main_process_first(): + data = torch.load( + args.text_path, + ) + + if not args.include_languages: + args.include_languages = list(data.keys()) # use all + + # 1 wandb run for all language-dataset combinations + if "wandb" in training_args.report_to and training_args.process_index == 0: + wandb.init(name=wandb_name, project="sentence-peft") + wandb.config.update(args) + wandb.config.update(training_args) + wandb.config.update(label_args) + + for file in glob(os.path.join(os.path.dirname(__file__), "*.py")): + wandb.save(os.path.abspath(file), policy="now") + + for lang in data.keys(): + if lang in args.include_languages: + for dataset_name in data[lang]["sentence"].keys(): + if "a" in lang or "b" in lang or "cs" in lang: + continue + # do model stuff here; otherwise, head params would be overwritten every time + backbone = SubwordXLMForTokenClassification.from_pretrained( + args.model_name_or_path, config=config, ignore_mismatched_sizes=True + ) + backbone.config.base_model = args.base_model + + # setup adapters + model_type = backbone.config.model_type + # adapters need xlm-roberta as model type. + backbone.config.model_type = "xlm-roberta" # needed for adapter setup + adapters.init(backbone) + # reset model type (used later) + backbone.config.model_type = model_type + + tokenizer = AutoTokenizer.from_pretrained(args.base_model) + # needed since we create labels in collate_fn based on tokens + tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + custom_token_id = tokenizer.convert_tokens_to_ids("\n") + # used later to filter out special tokens + special_tokens_ids = set(tokenizer.all_special_ids) + special_tokens_ids.discard(custom_token_id) + + model = Model( + backbone, + loss_margin=args.loss_margin, + use_loss_weights=args.use_loss_weights, + do_sentence_training=args.do_sentence_training, + do_auxiliary_training=args.do_auxiliary_training, + aux_training_weight=args.aux_training_weight, + ) + + with training_args.main_process_first(): + valid_dataset = prepare_dataset( + data=data, + num_workers=1, + include_languages=[lang], + dataset_name=dataset_name, + shuffle=False, + split="valid", + ) + logger.warning(f"Valid ds for {lang} {dataset_name} has {len(valid_dataset)} examples.") + + train_dataset = prepare_dataset( + data=data, + num_workers=args.preprocessing_num_workers, + include_languages=[lang], + dataset_name=dataset_name, + shuffle=args.shuffle, + split="train", + ) + if train_dataset is None or valid_dataset is None: + logger.warning(f"Skipping {lang} {dataset_name} due to missing data.") + continue + logger.warning(f"Train ds for {lang} {dataset_name} has {len(train_dataset)} examples.") + + # eval every actual epoch, based on steps + training_args.eval_steps = ( + len(train_dataset) + // ( + training_args.per_device_train_batch_size + * training_args.gradient_accumulation_steps + * num_train_epochs + ) + ) + 1 + + # print some samples from the dataset + count = 0 + while count < 1: + index = random.choice(range(len(train_dataset))) + sample = train_dataset[index] + + logger.warning(f"Sample {index} of the training set: {sample}.") + if tokenizer: + logger.warning(tokenizer.decode(sample["input_ids"])) + count += 1 + + def compute_metrics(trainer): + metrics = {} + eval_data = data[lang]["sentence"][dataset_name]["data"] + + model = trainer._wrap_model(trainer.model, training=False) + + with training_args.main_process_first(): + score, info = evaluate_sentence( + lang, + eval_data, + model, + stride=64, + block_size=512, + batch_size=training_args.per_device_eval_batch_size, + ) + metrics[f"{lang}_{dataset_name}_pr_auc"] = score + metrics[f"{lang}_{dataset_name}_f1"] = info["f1"] + metrics[f"{lang}_{dataset_name}_f1_best"] = info["f1_best"] + metrics[f"{lang}_{dataset_name}_threshold_best"] = info["threshold_best"] + + return metrics + + label_dict = ( + get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) + ) + + # init new adapter + model.backbone.add_adapter( + "text", config=adapter_args.adapter_config, set_active=True, overwrite_ok=True + ) + model.backbone.train_adapter("text") + with training_args.main_process_first(): + logger.warning(model.backbone.adapter_summary()) + + if args.freeze_classifier: + for n, p in model.backbone.named_parameters(): + if "classifier" in n: + p.requires_grad = False + if args.clf_from_scratch: + model.backbone.classifier = torch.nn.Linear(model.backbone.config.hidden_size, num_labels) + + trainer = AdapterTrainer( + model, + training_args, + train_dataset=train_dataset, + eval_dataset=valid_dataset, + compute_metrics=compute_metrics, + data_collator=partial( + collate_fn, + args=args, + label_args=label_args, + label_dict=label_dict, + tokenizer=tokenizer, + ), + logging_suffix=f"{lang}_{dataset_name}", + ) + + trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) + with training_args.main_process_first(): + if not os.path.exists(os.path.join(training_args.output_dir, dataset_name, lang)): + os.makedirs(os.path.join(training_args.output_dir, dataset_name, lang)) + save_model = copy.deepcopy(model) + save_model = save_model.to("cpu") + save_model.to("cpu").save_adapter( + adapter_name="text", + save_directory=os.path.join(training_args.output_dir, dataset_name, lang), + with_head=True, + ) + + +# TODO: at end, do full eval? +# TODO: multi-TPU training - split up? + +# TODO: try 1. double aux, 2. no aux at all (new head?), 3. no aux training but use_aux 4. higher/different aux prob +# TODO: try freezing head + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + # try: + main() + # except Exception: + # # extype, value, tb = sys.exc_info() + # # tb.print_exc() + # # pdb.post_mortem(tb) + # pass diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 641869c3..69f40875 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -132,10 +132,33 @@ def get_subword_label_dict(label_args, tokenizer): return label_dict -def sigmoid(x): +# numerically more stable sigmoid taken from +# https://stackoverflow.com/questions/51976461/optimal-way-of-defining-a-numerically-stable-sigmoid-function-for-a-list-in-pyth +def _positive_sigmoid(x): return 1 / (1 + np.exp(-x)) +def _negative_sigmoid(x): + # Cache exp so you won't have to calculate it twice + exp = np.exp(x) + return exp / (exp + 1) + + +def sigmoid(x): + positive = x >= 0 + # Boolean array inversion is faster than another comparison + negative = ~positive + + # empty contains junk hence will be faster to allocate + # Zeros has to zero-out the array after allocation, no need for that + # See comment to the answer when it comes to dtype + result = np.empty_like(x, dtype=np.float) + result[positive] = _positive_sigmoid(x[positive]) + result[negative] = _negative_sigmoid(x[negative]) + + return result + + def encode(text): return [ord(c) for c in text] From d4abc80a9d942eea4d3d0df6318d7835d1b6b67d Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 21 Feb 2024 20:32:37 +0000 Subject: [PATCH 062/262] fix module saving --- wtpsplit/train/train_adapter.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 951f708c..cbe50330 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -356,8 +356,6 @@ def maybe_pad(text): for lang in data.keys(): if lang in args.include_languages: for dataset_name in data[lang]["sentence"].keys(): - if "a" in lang or "b" in lang or "cs" in lang: - continue # do model stuff here; otherwise, head params would be overwritten every time backbone = SubwordXLMForTokenClassification.from_pretrained( args.model_name_or_path, config=config, ignore_mismatched_sizes=True @@ -446,7 +444,7 @@ def compute_metrics(trainer): eval_data, model, stride=64, - block_size=512, + block_size=512, ## TODO: change to args version x2? batch_size=training_args.per_device_eval_batch_size, ) metrics[f"{lang}_{dataset_name}_pr_auc"] = score @@ -495,7 +493,7 @@ def compute_metrics(trainer): with training_args.main_process_first(): if not os.path.exists(os.path.join(training_args.output_dir, dataset_name, lang)): os.makedirs(os.path.join(training_args.output_dir, dataset_name, lang)) - save_model = copy.deepcopy(model) + save_model = copy.deepcopy(model.backbone) save_model = save_model.to("cpu") save_model.to("cpu").save_adapter( adapter_name="text", @@ -509,6 +507,7 @@ def compute_metrics(trainer): # TODO: try 1. double aux, 2. no aux at all (new head?), 3. no aux training but use_aux 4. higher/different aux prob # TODO: try freezing head +# TODO: faster safe?! def _mp_fn(index): From 4366677c0acb522850e371f431749d2d65833687 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 22 Feb 2024 10:02:01 +0000 Subject: [PATCH 063/262] skip if no logits --- wtpsplit/evaluation/intrinsic.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index abfd447d..f5ddeb75 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -259,6 +259,9 @@ def main(args): corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) for sentence in sentences ] + # check if f[lang_code][dataset_name] exists + if lang_code not in f or dataset_name not in f[lang_code]: + continue if "train_logits" in f[lang_code][dataset_name]: feature_indices = None From c346a889b60a05aaab255880ee32f915f40e26eb Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 26 Feb 2024 15:24:35 +0000 Subject: [PATCH 064/262] train adapters in parallel on TPUs --- .gitignore | 2 + configs/peft/adapter.json | 15 +- run_adapter.sh | 1 + wtpsplit/train/adapter_utils.py | 117 ++++ wtpsplit/train/adaptertrainer.py | 589 +++++++++++++++++-- wtpsplit/train/train_adapter_parallel.py | 684 +++++++++++++++++++++++ wtpsplit/utils.py | 4 +- 7 files changed, 1364 insertions(+), 48 deletions(-) create mode 100755 run_adapter.sh create mode 100644 wtpsplit/train/adapter_utils.py create mode 100644 wtpsplit/train/train_adapter_parallel.py diff --git a/.gitignore b/.gitignore index d4816017..637bb077 100644 --- a/.gitignore +++ b/.gitignore @@ -17,5 +17,7 @@ data_subset/** *.html *.csv *.png +*.txt +*.log xlmr-*/** **/checkpoint-*/** \ No newline at end of file diff --git a/configs/peft/adapter.json b/configs/peft/adapter.json index 63380939..76d3e8f8 100644 --- a/configs/peft/adapter.json +++ b/configs/peft/adapter.json @@ -1,29 +1,28 @@ { "model_name_or_path": "xlmr-normal-p-v3", - "output_dir": "xlmr-3l-v3_adapter_rf32_ep20", + "output_dir": "xlmr-3l-v3_adapter_rf32_ep20_v2_100-1k-10k", "block_size": 256, "eval_stride": 128, "do_train": true, "do_eval": true, - "evaluation_strategy": "epoch", "per_device_train_batch_size": 64, "per_device_eval_batch_size": 32, "gradient_accumulation_steps": 1, "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, + "dataloader_num_workers": 1, "preprocessing_num_workers": 1, "learning_rate": 3e-4, "fp16": false, "num_train_epochs": 20, - "logging_steps": 20, + "logging_steps": 50, "report_to": "wandb", "save_steps": 100000000, "remove_unused_columns": false, "one_sample_per_line": false, "do_sentence_training": true, - "do_auxiliary_training": true, + "do_auxiliary_training": false, "warmup_ratio": 0.1, - "non_punctuation_sample_ratio": 0.1, + "non_punctuation_sample_ratio": null, "prediction_loss_only": true, "use_auxiliary": true, "ddp_timeout": 3600, @@ -32,5 +31,7 @@ "log_level": "warning", "adapter_config": "seq_bn[reduction_factor=32]", "weight_decay": 0.0, - "auxiliary_remove_prob": 0.2 + "auxiliary_remove_prob": 0.0, + "do_process": false, + "n_train_steps": [100, 1000, 10000] } \ No newline at end of file diff --git a/run_adapter.sh b/run_adapter.sh new file mode 100755 index 00000000..e0d58697 --- /dev/null +++ b/run_adapter.sh @@ -0,0 +1 @@ +python3 ~/wtpsplit/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train_adapter_parallel.py $1 \ No newline at end of file diff --git a/wtpsplit/train/adapter_utils.py b/wtpsplit/train/adapter_utils.py new file mode 100644 index 00000000..2f2e5d0b --- /dev/null +++ b/wtpsplit/train/adapter_utils.py @@ -0,0 +1,117 @@ +from transformers import TrainingArguments +from transformers.training_args import ParallelMode +from transformers.utils import ( + is_sagemaker_dp_enabled, + is_sagemaker_mp_enabled, + is_torch_available, + is_torch_tpu_available, + requires_backends, +) +import numbers +import os + + +from transformers.utils import logging +from transformers.integrations import ( + rewrite_logs, + WandbCallback, + AzureMLCallback, + CometCallback, + MLflowCallback, + NeptuneCallback, + TensorBoardCallback, + CodeCarbonCallback, + ClearMLCallback, + DagsHubCallback, +) + +logger = logging.get_logger(__name__) +if is_torch_available(): + import torch + import torch.distributed as dist + +if is_sagemaker_mp_enabled(): + import smp.distributed.modelparallel.torch as smp + + smp.init() + + +class ParallelTPUAdapterTrainingArguments(TrainingArguments): + """ + Subclass of `TrainingArguments`, specific to training on TPU VMs in parallel using different data. + (Different optimization on different TPU cores, different data on different TPU cores, etc.) + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + @property + def world_size(self): + """ + The number of processes used in parallel. + """ + requires_backends(self, ["torch"]) + + if is_torch_tpu_available(): + # MODIFIED: otherwise, Trainer only logs on main (0) process, and DataLoader is of distributed type + return 1 + elif is_sagemaker_mp_enabled(): + return smp.dp_size() if not smp.state.cfg.prescaled_batch else smp.rdp_size() + elif is_sagemaker_dp_enabled(): + return dist.get_world_size() + elif self.parallel_mode == ParallelMode.DISTRIBUTED: + return torch.distributed.get_world_size() + return 1 + + +class ParallelTPUWandbCallback(WandbCallback): + """ + A [`TrainerCallback`] that logs metrics, media, model checkpoints to [Weight and Biases](https://www.wandb.com/). + """ + + def __init__(self): + super().__init__() + + def on_log(self, args, state, control, model=None, logs=None, **kwargs): + if self._wandb is None: + return + if not self._initialized: + self.setup(args, state, model) + # MODIFIED: log on all processes + # if state.is_world_process_zero: + logs = rewrite_logs(logs) + self._wandb.log({**logs, "train/global_step": state.global_step}) + + def on_save(self, args, state, control, **kwargs): + # MODIFIED: save on all + if self._log_model == "checkpoint" and self._initialized: + checkpoint_metadata = { + k: v + for k, v in dict(self._wandb.summary).items() + if isinstance(v, numbers.Number) and not k.startswith("_") + } + + ckpt_dir = f"checkpoint-{state.global_step}" + artifact_path = os.path.join(args.output_dir, ckpt_dir) + logger.info(f"Logging checkpoint artifacts in {ckpt_dir}. ...") + checkpoint_name = ( + f"checkpoint-{self._wandb.run.id}" + if (args.run_name is None or args.run_name == args.output_dir) + else f"checkpoint-{self._wandb.run.name}" + ) + artifact = self._wandb.Artifact(name=checkpoint_name, type="model", metadata=checkpoint_metadata) + artifact.add_dir(artifact_path) + self._wandb.log_artifact(artifact, aliases=[f"checkpoint-{state.global_step}"]) + + +INTEGRATION_TO_CALLBACK = { + "azure_ml": AzureMLCallback, + "comet_ml": CometCallback, + "mlflow": MLflowCallback, + "neptune": NeptuneCallback, + "tensorboard": TensorBoardCallback, + "wandb": ParallelTPUWandbCallback, + "codecarbon": CodeCarbonCallback, + "clearml": ClearMLCallback, + "dagshub": DagsHubCallback, +} \ No newline at end of file diff --git a/wtpsplit/train/adaptertrainer.py b/wtpsplit/train/adaptertrainer.py index 6f5294f1..cc5e256d 100644 --- a/wtpsplit/train/adaptertrainer.py +++ b/wtpsplit/train/adaptertrainer.py @@ -1,13 +1,28 @@ +import math import os +import shutil +import sys +import time from typing import Dict import numpy as np import torch from torch import nn +from tqdm.auto import tqdm + +# Integrations must be imported before ML frameworks: + +# isort: off +from transformers.integrations import ( + hp_params, +) + +# isort: on + from transformers import PreTrainedModel +from transformers.modeling_utils import unwrap_model from transformers.trainer import ( ALL_LAYERNORM_LAYERS, - TRAINING_ARGS_NAME, WEIGHTS_NAME, DataLoader, EvalLoopOutput, @@ -17,15 +32,15 @@ deepspeed_init, denumpify_detensorize, find_batch_size, + get_parameter_names, has_length, is_sagemaker_mp_enabled, is_torch_tpu_available, nested_concat, nested_numpify, nested_truncate, - get_parameter_names, ) -from transformers.modeling_utils import unwrap_model +from transformers.trainer_utils import TrainOutput, speed_metrics from wtpsplit.train.utils import Model @@ -34,29 +49,59 @@ import torch_xla.debug.metrics as met # noqa: F401 import torch_xla.distributed.parallel_loader as pl # noqa: F401 -from transformers.trainer_callback import TrainerCallback, TrainerControl, TrainerState -from adapters.composition import AdapterCompositionBlock, Fuse - import re from typing import Callable, Tuple, Union -from torch.utils.data.dataset import Dataset - +import torch.distributed as dist +from packaging import version +from torch.utils.data import Dataset, RandomSampler +from torch.utils.data.distributed import DistributedSampler from transformers import Trainer, __version__ from transformers.configuration_utils import PretrainedConfig from transformers.data.data_collator import DataCollator +from transformers.debug_utils import DebugOption, DebugUnderflowOverflow +from transformers.pytorch_utils import is_torch_less_than_1_11 from transformers.tokenization_utils_base import PreTrainedTokenizerBase -from transformers.trainer_utils import EvalPrediction -from transformers.training_args import TrainingArguments -from transformers.utils import CONFIG_NAME, logging +from transformers.trainer import TRAINER_STATE_NAME +from transformers.trainer_callback import ( + TrainerCallback, + TrainerControl, + TrainerState, +) +from transformers.trainer_pt_utils import ( + get_model_param_count, +) +from transformers.trainer_utils import ( + EvalPrediction, + HPSearchBackend, + ShardedDDPOption, +) +from transformers.training_args import ParallelMode, TrainingArguments +from transformers.utils import ( + CONFIG_NAME, + is_accelerate_available, + is_apex_available, + is_torch_tpu_available, + logging, +) + +from adapters.composition import AdapterCompositionBlock, Fuse +if is_apex_available(): + from apex import amp if is_sagemaker_mp_enabled(): import smdistributed.modelparallel.torch as smp +skip_first_batches = None +if is_accelerate_available(): + from accelerate import __version__ as accelerate_version + if version.parse(accelerate_version) >= version.parse("0.16"): + from accelerate import skip_first_batches logger = logging.get_logger(__name__) + class AdapterTrainer(Trainer): def __init__( self, @@ -72,7 +117,7 @@ def __init__( adapter_names: Optional[List[List[str]]] = None, optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = (None, None), preprocess_logits_for_metrics: Callable[[torch.Tensor, torch.Tensor], torch.Tensor] = None, - logging_suffix="", + logging_prefix="", ): super().__init__( model, @@ -88,8 +133,8 @@ def __init__( preprocess_logits_for_metrics=preprocess_logits_for_metrics, ) - self.logging_suffix = logging_suffix - + self.logging_prefix = logging_prefix + if adapter_names is not None: self.model.backbone.set_active_adapters(adapter_names) # Set the defaults for loading/ saving model & adapters @@ -126,7 +171,7 @@ def create_optimizer(self): if self.optimizer is None: decay_parameters = get_parameter_names(opt_model, ALL_LAYERNORM_LAYERS) - decay_parameters = [name for name in decay_parameters if "bias" not in name] + decay_parameters = [name for name in decay_parameters if "bias" not in name] if hasattr(self.model, "config") and hasattr(self.model.config, "adapters"): match_str = r"adapter_fusion_layer\..*\.value" decay_parameters = [name for name in decay_parameters if not re.match(match_str, name)] @@ -258,22 +303,457 @@ def _load_best_model(self): if os.path.exists(fusion_dir): model.load_adapter_fusion(fusion_dir) model.to(self.args.device) - + + def _inner_training_loop( + self, batch_size=None, args=None, resume_from_checkpoint=None, trial=None, ignore_keys_for_eval=None + ): + self._train_batch_size = batch_size + # Data loader and number of training steps + train_dataloader = self.get_train_dataloader() + + # Setting up training control variables: + # number of training epochs: num_train_epochs + # number of training steps per epoch: num_update_steps_per_epoch + # total number of training steps to execute: max_steps + total_train_batch_size = args.train_batch_size * args.gradient_accumulation_steps * args.world_size + + len_dataloader = None + if has_length(train_dataloader): + len_dataloader = len(train_dataloader) + num_update_steps_per_epoch = len_dataloader // args.gradient_accumulation_steps + num_update_steps_per_epoch = max(num_update_steps_per_epoch, 1) + num_examples = self.num_examples(train_dataloader) + if args.max_steps > 0: + max_steps = args.max_steps + num_train_epochs = args.max_steps // num_update_steps_per_epoch + int( + args.max_steps % num_update_steps_per_epoch > 0 + ) + # May be slightly incorrect if the last batch in the training dataloader has a smaller size but it's + # the best we can do. + num_train_samples = args.max_steps * total_train_batch_size + else: + max_steps = math.ceil(args.num_train_epochs * num_update_steps_per_epoch) + num_train_epochs = math.ceil(args.num_train_epochs) + num_train_samples = self.num_examples(train_dataloader) * args.num_train_epochs + elif args.max_steps > 0: # Rely on max_steps when dataloader does not have a working size + max_steps = args.max_steps + # Setting a very large number of epochs so we go as many times as necessary over the iterator. + num_train_epochs = sys.maxsize + num_update_steps_per_epoch = max_steps + num_examples = total_train_batch_size * args.max_steps + num_train_samples = args.max_steps * total_train_batch_size + else: + raise ValueError( + "args.max_steps must be set to a positive value if dataloader does not have a length, was" + f" {args.max_steps}" + ) + + # Compute absolute values for logging, eval, and save if given as ratio + if args.logging_steps and args.logging_steps < 1: + args.logging_steps = math.ceil(max_steps * args.logging_steps) + if args.eval_steps and args.eval_steps < 1: + args.eval_steps = math.ceil(max_steps * args.eval_steps) + if args.save_steps and args.save_steps < 1: + args.save_steps = math.ceil(max_steps * args.save_steps) + + if DebugOption.UNDERFLOW_OVERFLOW in self.args.debug: + if self.args.n_gpu > 1: + # nn.DataParallel(model) replicates the model, creating new variables and module + # references registered here no longer work on other gpus, breaking the module + raise ValueError( + "Currently --debug underflow_overflow is not supported under DP. Please use DDP" + " (torch.distributed.launch)." + ) + else: + debug_overflow = DebugUnderflowOverflow(self.model) # noqa + + delay_optimizer_creation = ( + self.sharded_ddp is not None + and self.sharded_ddp != ShardedDDPOption.SIMPLE + or is_sagemaker_mp_enabled() + or self.fsdp is not None + ) + if args.deepspeed: + deepspeed_engine, optimizer, lr_scheduler = deepspeed_init( + self, num_training_steps=max_steps, resume_from_checkpoint=resume_from_checkpoint + ) + self.model = deepspeed_engine.module + self.model_wrapped = deepspeed_engine + self.deepspeed = deepspeed_engine + self.optimizer = optimizer + self.lr_scheduler = lr_scheduler + elif not delay_optimizer_creation: + self.create_optimizer_and_scheduler(num_training_steps=max_steps) + + self.state = TrainerState() + self.state.is_hyper_param_search = trial is not None + + # Activate gradient checkpointing if needed + if args.gradient_checkpointing: + self.model.gradient_checkpointing_enable() + + model = self._wrap_model(self.model_wrapped) + + if is_sagemaker_mp_enabled() and resume_from_checkpoint is not None: + self._load_from_checkpoint(resume_from_checkpoint, model) + + # for the rest of this function `model` is the outside model, whether it was wrapped or not + if model is not self.model: + self.model_wrapped = model + + if delay_optimizer_creation: + self.create_optimizer_and_scheduler(num_training_steps=max_steps) + + # Check if saved optimizer or scheduler states exist + self._load_optimizer_and_scheduler(resume_from_checkpoint) + + # important: at this point: + # self.model is the Transformers Model + # self.model_wrapped is DDP(Transformers Model), Deepspeed(Transformers Model), etc. + + # Train! + # MODIFIED: changed to warn, added device + logger.warning(f"***** Running training on {xm.get_ordinal()}*****") + logger.warning(f" Num examples = {num_examples:,}") + logger.warning(f" Num Epochs = {num_train_epochs:,}") + logger.info(f" Instantaneous batch size per device = {args.per_device_train_batch_size:,}") + logger.info(f" Total train batch size (w. parallel, distributed & accumulation) = {total_train_batch_size:,}") + logger.info(f" Gradient Accumulation steps = {args.gradient_accumulation_steps}") + logger.warning(f" Total optimization steps = {max_steps:,}") + logger.warning(f" Eval steps = {args.eval_steps}") + logger.info(f" Number of trainable parameters = {get_model_param_count(model, trainable_only=True):,}") + + self.state.epoch = 0 + start_time = time.time() + epochs_trained = 0 + steps_trained_in_current_epoch = 0 + steps_trained_progress_bar = None + + # Check if continuing training from a checkpoint + if resume_from_checkpoint is not None and os.path.isfile( + os.path.join(resume_from_checkpoint, TRAINER_STATE_NAME) + ): + self.state = TrainerState.load_from_json(os.path.join(resume_from_checkpoint, TRAINER_STATE_NAME)) + epochs_trained = self.state.global_step // num_update_steps_per_epoch + if not args.ignore_data_skip: + steps_trained_in_current_epoch = self.state.global_step % (num_update_steps_per_epoch) + steps_trained_in_current_epoch *= args.gradient_accumulation_steps + else: + steps_trained_in_current_epoch = 0 + + logger.info(" Continuing training from checkpoint, will skip to saved global_step") + logger.info(f" Continuing training from epoch {epochs_trained}") + logger.info(f" Continuing training from global step {self.state.global_step}") + if not args.ignore_data_skip: + if skip_first_batches is None: + logger.info( + f" Will skip the first {epochs_trained} epochs then the first" + f" {steps_trained_in_current_epoch} batches in the first epoch. If this takes a lot of time," + " you can install the latest version of Accelerate with `pip install -U accelerate`.You can" + " also add the `--ignore_data_skip` flag to your launch command, but you will resume the" + " training on data already seen by your model." + ) + else: + logger.info( + f" Will skip the first {epochs_trained} epochs then the first" + f" {steps_trained_in_current_epoch} batches in the first epoch." + ) + if self.is_local_process_zero() and not args.disable_tqdm and skip_first_batches is None: + steps_trained_progress_bar = tqdm(total=steps_trained_in_current_epoch) + steps_trained_progress_bar.set_description("Skipping the first batches") + + # Update the references + self.callback_handler.model = self.model + self.callback_handler.optimizer = self.optimizer + self.callback_handler.lr_scheduler = self.lr_scheduler + self.callback_handler.train_dataloader = train_dataloader + if self.hp_name is not None and self._trial is not None: + # use self._trial because the SigOpt/Optuna hpo only call `_hp_search_setup(trial)` instead of passing trial + # parameter to Train when using DDP. + self.state.trial_name = self.hp_name(self._trial) + if trial is not None: + assignments = trial.assignments if self.hp_search_backend == HPSearchBackend.SIGOPT else trial + self.state.trial_params = hp_params(assignments) + else: + self.state.trial_params = None + # This should be the same if the state has been saved but in case the training arguments changed, it's safer + # to set this after the load. + self.state.max_steps = max_steps + self.state.num_train_epochs = num_train_epochs + self.state.is_local_process_zero = self.is_local_process_zero() + self.state.is_world_process_zero = self.is_world_process_zero() + + # tr_loss is a tensor to avoid synchronization of TPUs through .item() + tr_loss = torch.tensor(0.0).to(args.device) + # _total_loss_scalar is updated everytime .item() has to be called on tr_loss and stores the sum of all losses + self._total_loss_scalar = 0.0 + self._globalstep_last_logged = self.state.global_step + model.zero_grad() + + self.control = self.callback_handler.on_train_begin(args, self.state, self.control) + + # Skip the first epochs_trained epochs to get the random state of the dataloader at the right point. + if not args.ignore_data_skip: + for epoch in range(epochs_trained): + is_random_sampler = hasattr(train_dataloader, "sampler") and isinstance( + train_dataloader.sampler, RandomSampler + ) + if is_torch_less_than_1_11 or not is_random_sampler: + # We just need to begin an iteration to create the randomization of the sampler. + # That was before PyTorch 1.11 however... + for _ in train_dataloader: + break + else: + # Otherwise we need to call the whooooole sampler cause there is some random operation added + # AT THE VERY END! + _ = list(train_dataloader.sampler) + + total_batched_samples = 0 + for epoch in range(epochs_trained, num_train_epochs): + if isinstance(train_dataloader, DataLoader) and isinstance(train_dataloader.sampler, DistributedSampler): + train_dataloader.sampler.set_epoch(epoch) + elif hasattr(train_dataloader, "dataset") and isinstance(train_dataloader.dataset, IterableDatasetShard): + train_dataloader.dataset.set_epoch(epoch) + + # if is_torch_tpu_available(): + # parallel_loader = pl.MpDeviceLoader(train_dataloader, args.device) # .per_device_loader(args.device) + # epoch_iterator = parallel_loader + # else: + # MODIFIED: no parallel loader + epoch_iterator = train_dataloader + + # Reset the past mems state at the beginning of each epoch if necessary. + if args.past_index >= 0: + self._past = None + + steps_in_epoch = ( + len(epoch_iterator) if len_dataloader is not None else args.max_steps * args.gradient_accumulation_steps + ) + self.control = self.callback_handler.on_epoch_begin(args, self.state, self.control) + + if epoch == epochs_trained and resume_from_checkpoint is not None and steps_trained_in_current_epoch == 0: + self._load_rng_state(resume_from_checkpoint) + + rng_to_sync = False + steps_skipped = 0 + if skip_first_batches is not None and steps_trained_in_current_epoch > 0: + epoch_iterator = skip_first_batches(epoch_iterator, steps_trained_in_current_epoch) + steps_skipped = steps_trained_in_current_epoch + steps_trained_in_current_epoch = 0 + rng_to_sync = True + + step = -1 + for step, inputs in enumerate(epoch_iterator): + total_batched_samples += 1 + if rng_to_sync: + self._load_rng_state(resume_from_checkpoint) + rng_to_sync = False + + # Skip past any already trained steps if resuming training + if steps_trained_in_current_epoch > 0: + steps_trained_in_current_epoch -= 1 + if steps_trained_progress_bar is not None: + steps_trained_progress_bar.update(1) + if steps_trained_in_current_epoch == 0: + self._load_rng_state(resume_from_checkpoint) + continue + elif steps_trained_progress_bar is not None: + steps_trained_progress_bar.close() + steps_trained_progress_bar = None + + if step % args.gradient_accumulation_steps == 0: + self.control = self.callback_handler.on_step_begin(args, self.state, self.control) + + if ( + (total_batched_samples % args.gradient_accumulation_steps != 0) + and args.parallel_mode == ParallelMode.DISTRIBUTED + and args._no_sync_in_gradient_accumulation + and hasattr(model, "no_sync") + ): + # Avoid unnecessary DDP synchronization since there will be no backward pass on this example. + with model.no_sync(): + tr_loss_step = self.training_step(model, inputs) + else: + tr_loss_step = self.training_step(model, inputs) + + if ( + args.logging_nan_inf_filter + and not is_torch_tpu_available() + and (torch.isnan(tr_loss_step) or torch.isinf(tr_loss_step)) + ): + # if loss is nan or inf simply add the average of previous logged losses + tr_loss += tr_loss / (1 + self.state.global_step - self._globalstep_last_logged) + else: + tr_loss += tr_loss_step + + self.current_flos += float(self.floating_point_ops(inputs)) + + # Optimizer step for deepspeed must be called on every step regardless of the value of gradient_accumulation_steps + if self.deepspeed: + self.deepspeed.step() + + if total_batched_samples % args.gradient_accumulation_steps == 0 or ( + # last step in epoch but step is always smaller than gradient_accumulation_steps + steps_in_epoch <= args.gradient_accumulation_steps and (step + 1) == steps_in_epoch + ): + # Gradient clipping + if args.max_grad_norm is not None and args.max_grad_norm > 0 and not self.deepspeed: + # deepspeed does its own clipping + + if self.do_grad_scaling: + # Reduce gradients first for XLA + if is_torch_tpu_available(): + gradients = xm._fetch_gradients(self.optimizer) + xm.all_reduce("sum", gradients, scale=1.0 / xm.xrt_world_size()) + # AMP: gradients need unscaling + self.scaler.unscale_(self.optimizer) + + if is_sagemaker_mp_enabled() and args.fp16: + self.optimizer.clip_master_grads(args.max_grad_norm) + elif hasattr(self.optimizer, "clip_grad_norm"): + # Some optimizers (like the sharded optimizer) have a specific way to do gradient clipping + self.optimizer.clip_grad_norm(args.max_grad_norm) + elif hasattr(model, "clip_grad_norm_"): + # Some models (like FullyShardedDDP) have a specific way to do gradient clipping + model.clip_grad_norm_(args.max_grad_norm) + else: + # Revert to normal clipping otherwise, handling Apex or full precision + nn.utils.clip_grad_norm_( + amp.master_params(self.optimizer) if self.use_apex else model.parameters(), + args.max_grad_norm, + ) + + # Optimizer step + optimizer_was_run = True + if self.deepspeed: + pass # called outside the loop + elif is_torch_tpu_available(): + if self.do_grad_scaling: + self.scaler.step(self.optimizer) + self.scaler.update() + else: + # xm.optimizer_step(self.optimizer) + # MODIFIED: Crucial change! Do not aggregate gradients across TPU cores + self.optimizer.step() + xm.mark_step() + elif self.do_grad_scaling: + scale_before = self.scaler.get_scale() + self.scaler.step(self.optimizer) + self.scaler.update() + scale_after = self.scaler.get_scale() + optimizer_was_run = scale_before <= scale_after + else: + self.optimizer.step() + + if optimizer_was_run and not self.deepspeed: + # Delay optimizer scheduling until metrics are generated + if not isinstance(self.lr_scheduler, torch.optim.lr_scheduler.ReduceLROnPlateau): + self.lr_scheduler.step() + + model.zero_grad() + self.state.global_step += 1 + self.state.epoch = epoch + (step + 1 + steps_skipped) / steps_in_epoch + self.control = self.callback_handler.on_step_end(args, self.state, self.control) + + self._maybe_log_save_evaluate(tr_loss, model, trial, epoch, ignore_keys_for_eval) + else: + self.control = self.callback_handler.on_substep_end(args, self.state, self.control) + + if self.control.should_epoch_stop or self.control.should_training_stop: + break + if step < 0: + logger.warning( + "There seems to be not a single sample in your epoch_iterator, stopping training at step" + f" {self.state.global_step}! This is expected if you're using an IterableDataset and set" + f" num_steps ({max_steps}) higher than the number of available samples." + ) + self.control.should_training_stop = True + + self.control = self.callback_handler.on_epoch_end(args, self.state, self.control) + self._maybe_log_save_evaluate(tr_loss, model, trial, epoch, ignore_keys_for_eval) + + if DebugOption.TPU_METRICS_DEBUG in self.args.debug: + if is_torch_tpu_available(): + # tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.) + xm.master_print(met.metrics_report()) + else: + logger.warning( + "You enabled PyTorch/XLA debug metrics but you don't have a TPU " + "configured. Check your training configuration if this is unexpected." + ) + if self.control.should_training_stop: + break + + if args.past_index and hasattr(self, "_past"): + # Clean the state at the end of training + delattr(self, "_past") + + logger.info("\n\nTraining completed. Do not forget to share your model on huggingface.co/models =)\n\n") + if args.load_best_model_at_end and self.state.best_model_checkpoint is not None: + # Wait for everyone to get here so we are sur the model has been saved by process 0. + if is_torch_tpu_available(): + xm.rendezvous("load_best_model_at_end") + if args.parallel_mode == ParallelMode.DISTRIBUTED: + dist.barrier() + elif is_sagemaker_mp_enabled(): + smp.barrier() + + self._load_best_model() + + # add remaining tr_loss + self._total_loss_scalar += tr_loss.item() + train_loss = self._total_loss_scalar / self.state.global_step + + metrics = speed_metrics("train", start_time, num_samples=num_train_samples, num_steps=self.state.max_steps) + self.store_flos() + metrics["total_flos"] = self.state.total_flos + metrics["train_loss"] = train_loss + + self.is_in_train = False + + self._memory_tracker.stop_and_update_metrics(metrics) + + self.log(metrics) + + run_dir = self._get_output_dir(trial) + checkpoints_sorted = self._sorted_checkpoints(use_mtime=False, output_dir=run_dir) + + # Delete the last checkpoint when save_total_limit=1 if it's different from the best checkpoint and process allowed to save. + if self.args.should_save and self.state.best_model_checkpoint is not None and self.args.save_total_limit == 1: + for checkpoint in checkpoints_sorted: + if checkpoint != self.state.best_model_checkpoint: + logger.info(f"Deleting older checkpoint [{checkpoint}] due to args.save_total_limit") + shutil.rmtree(checkpoint) + + self.control = self.callback_handler.on_train_end(args, self.state, self.control) + + return TrainOutput(self.state.global_step, train_loss, metrics) + def _maybe_log_save_evaluate(self, tr_loss, model, trial, epoch, ignore_keys_for_eval): if self.control.should_log: - if is_torch_tpu_available(): - xm.mark_step() + # MODIFIED: removed --> faster + # if is_torch_tpu_available(): + # xm.mark_step() logs: Dict[str, float] = {} # all_gather + mean() to get average loss over all processes - tr_loss_scalar = self._nested_gather(tr_loss).mean().item() + # tr_loss_scalar = self._nested_gather(tr_loss).mean().item() + # MODIFIED: no gather since we train independently + tr_loss_scalar = tr_loss.item() # reset tr_loss to zero tr_loss -= tr_loss - logs["loss"] = round(tr_loss_scalar / (self.state.global_step - self._globalstep_last_logged), 4) - logs["learning_rate"] = self._get_learning_rate() + loss = round(tr_loss_scalar / (self.state.global_step - self._globalstep_last_logged), 4) + logs[f"{self.logging_prefix}loss"] = loss + logs["loss"] = loss + + logs[f"{self.logging_prefix}learning_rate"] = self._get_learning_rate() + # prepend logging_prefix to epoch + if self.state.epoch is not None: + logs[f"{self.logging_prefix}epoch"] = round(self.state.epoch, 2) + logs[f"{self.logging_prefix}global_step"] = self.state.global_step self._total_loss_scalar += tr_loss_scalar self._globalstep_last_logged = self.state.global_step @@ -290,6 +770,25 @@ def _maybe_log_save_evaluate(self, tr_loss, model, trial, epoch, ignore_keys_for self._save_checkpoint(model, trial, metrics=metrics) self.control = self.callback_handler.on_save(self.args, self.state, self.control) + def log(self, logs: Dict[str, float]) -> None: + """ + Log `logs` on the various objects watching training. + + Subclass and override this method to inject custom behavior. + + Args: + logs (`Dict[str, float]`): + The values to log. + """ + if self.state.epoch is not None: + logs["epoch"] = round(self.state.epoch, 2) + + output = {**logs, **{"step": self.state.global_step}} + self.state.log_history.append(output) + # MODIFIED: also log current device + logger.warning(f"{xm.get_ordinal()}: {output}") + self.control = self.callback_handler.on_log(self.args, self.state, self.control, logs) + def evaluation_loop( self, dataloader: DataLoader, @@ -343,8 +842,9 @@ def evaluation_loop( # Do this before wrapping. eval_dataset = getattr(dataloader, "dataset", None) - if is_torch_tpu_available(): - dataloader = pl.ParallelLoader(dataloader, [args.device]).per_device_loader(args.device) + # MODIFIED: not necessary. + # if is_torch_tpu_available(): + # dataloader = pl.MpDeviceLoader(dataloader, args.device) # .per_device_loader(args.device) if args.past_index >= 0: self._past = None @@ -378,20 +878,24 @@ def evaluation_loop( loss, logits, labels = self.prediction_step(model, inputs, prediction_loss_only, ignore_keys=ignore_keys) inputs_decode = self._prepare_input(inputs["input_ids"]) if args.include_inputs_for_metrics else None - if is_torch_tpu_available(): - xm.mark_step() + # MODIFIED: not necessary. + # if is_torch_tpu_available(): + # xm.mark_step() # Update containers on host if loss is not None: - losses = self._nested_gather(loss.repeat(batch_size)) + # MODIFIED: do not gather across devices. (different loss on each device) + losses = loss.repeat(batch_size) losses_host = losses if losses_host is None else torch.cat((losses_host, losses), dim=0) if labels is not None: labels = self._pad_across_processes(labels) - labels = self._nested_gather(labels) + # MODIFIED: do not gather across devices. + # labels = self._nested_gather(labels) labels_host = labels if labels_host is None else nested_concat(labels_host, labels, padding_index=-100) if inputs_decode is not None: inputs_decode = self._pad_across_processes(inputs_decode) - inputs_decode = self._nested_gather(inputs_decode) + # MODIFIED: do not gather across devices. + # inputs_decode = self._nested_gather(inputs_decode) inputs_host = ( inputs_decode if inputs_host is None @@ -399,7 +903,7 @@ def evaluation_loop( ) if logits is not None: logits = self._pad_across_processes(logits) - logits = self._nested_gather(logits) + # logits = self._nested_gather(logits) if self.preprocess_logits_for_metrics is not None: logits = self.preprocess_logits_for_metrics(logits, labels) preds_host = logits if preds_host is None else nested_concat(preds_host, logits, padding_index=-100) @@ -477,6 +981,8 @@ def evaluation_loop( all_inputs = nested_truncate(all_inputs, num_samples) # Metrics! + # MODIFIED: removed sincedone in compute_metrics + # xm.rendezvous("eval_metrics") # MODIFIED: always compute metrics if self.compute_metrics is not None: metrics = self.compute_metrics(self) @@ -487,7 +993,10 @@ def evaluation_loop( metrics = denumpify_detensorize(metrics) if all_losses is not None: - metrics[f"{metric_key_prefix}_loss"] = all_losses.mean().item() + # MODIFIED: no gather, add prefix + loss = all_losses.mean().item() + metrics[f"{metric_key_prefix}_{self.logging_prefix}loss"] = loss + metrics[f"{metric_key_prefix}_loss"] = loss # Prefix all keys with metric_key_prefix + '_' for key in list(metrics.keys()): @@ -503,15 +1012,16 @@ def evaluation_loop( def _save_tpu(self, output_dir: Optional[str] = None): output_dir = output_dir if output_dir is not None else self.args.output_dir - logger.warning(f"Saving model checkpoint to {output_dir}") + logger.info(f"Saving model checkpoint to {output_dir}") - if xm.is_master_ordinal(): - os.makedirs(output_dir, exist_ok=True) - torch.save(self.args, os.path.join(output_dir, TRAINING_ARGS_NAME)) + # MODIFIED: also save on other devices + # if xm.is_master_ordinal(): + # os.makedirs(output_dir, exist_ok=True) + # torch.save(self.args, os.path.join(output_dir, TRAINING_ARGS_NAME)) - # Save a trained model and configuration using `save_pretrained()`. - # They can then be reloaded using `from_pretrained()` - xm.rendezvous("saving_checkpoint") + # # Save a trained model and configuration using `save_pretrained()`. + # # They can then be reloaded using `from_pretrained()` + # xm.rendezvous("saving_checkpoint") if isinstance(self.model, Model): actual_model = self.model.backbone else: @@ -532,7 +1042,8 @@ def _save_tpu(self, output_dir: Optional[str] = None): actual_model.save_pretrained(output_dir, is_main_process=self.args.should_save, save_function=xm.save) if self.tokenizer is not None and self.args.should_save: self.tokenizer.save_pretrained(output_dir) - + + class AdapterTrainerCallback(TrainerCallback): def __init__(self, trainer): super().__init__() @@ -553,4 +1064,4 @@ def on_step_end(self, args: TrainingArguments, state: TrainerState, control: Tra if self.trainer.train_adapter_fusion: fusion_reg_loss = model.backbone.base_model.get_fusion_regularization_loss() if fusion_reg_loss is not None: - fusion_reg_loss.backward() \ No newline at end of file + fusion_reg_loss.backward() diff --git a/wtpsplit/train/train_adapter_parallel.py b/wtpsplit/train/train_adapter_parallel.py new file mode 100644 index 00000000..8061df4f --- /dev/null +++ b/wtpsplit/train/train_adapter_parallel.py @@ -0,0 +1,684 @@ +import copy +import dataclasses +import json +import logging +import math +import os +import random +import sys +from collections import Counter +from dataclasses import dataclass, field +from functools import partial +from glob import glob +from typing import List + +import datasets +import numpy as np +import torch +import torch_xla.core.xla_model as xm +import transformers +from tokenizers import AddedToken +from tqdm import tqdm +from transformers import AutoTokenizer, HfArgumentParser, set_seed + +import adapters +import wandb +from adapters import AdapterArguments +from wtpsplit.models import SubwordXLMConfig, SubwordXLMForTokenClassification +from wtpsplit.train.adaptertrainer import AdapterTrainer +from wtpsplit.train.evaluate import evaluate_sentence +from wtpsplit.train.train import collate_fn +from wtpsplit.train.utils import Model +from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict +from wtpsplit.train.adapter_utils import ( + ParallelTPUAdapterTrainingArguments as TrainingArguments, + ParallelTPUWandbCallback as WandbCallback, +) + +os.environ["TOKENIZERS_PARALLELISM"] = "false" + + +def setup_logging(training_args, job_id=None) -> None: + # TODO: log saving based on folders + # Generate a unique logger name based on the job_id or process identifier + unique_logger_name = f"{__name__}.{job_id}" if job_id is not None else __name__ + logger = logging.getLogger(unique_logger_name) + + # Clear existing handlers to avoid duplicate logging + if logger.hasHandlers(): + logger.handlers.clear() + + # Disable propagation to prevent logs from being handled elsewhere + logger.propagate = False # Note the correct attribute is `propagate` + + # Set the logger's level based on training arguments + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + + # Create and add a console handler + console_handler = logging.StreamHandler(sys.stdout) + console_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(name)s - %(message)s")) + logger.addHandler(console_handler) + + # Add a file handler if a job_id is provided, open in write mode to start from scratch + if job_id is not None: + file_handler = logging.FileHandler(f"logs/log_{job_id}.log", mode="w") # Open in write mode + file_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(name)s - %(message)s")) + logger.addHandler(file_handler) + + # Adjust verbosity settings for datasets and transformers + datasets.utils.logging.set_verbosity_warning() + transformers.utils.logging.set_verbosity_warning() + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + + # Log a summary message using the newly configured logger + logger.warning( + ( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}, " + + f"distributed training: {training_args.local_rank != -1}, 16-bits training: {training_args.fp16}" + ) + ) + + # Return the configured logger for use in the rest of the process + return logger + + +@dataclass +class Args: + model_name_or_path: str + base_model: str = "xlm-roberta-base" + shuffle: bool = True + text_path: str = "data/eval.pth" + include_languages: List[str] = None + preprocessing_num_workers: int = 1 + block_size: int = 512 + overflow_size: int = 16 + eval_stride: int = 256 + loss_margin: float = 0.5 + pack_samples: bool = False + one_sample_per_line: bool = False + use_loss_weights: bool = False + do_sentence_training: bool = True + do_auxiliary_training: bool = True + aux_training_weight: float = 1.0 + ignore_non_hyphen: bool = False + non_punctuation_sample_ratio: float = None + adapter_warmup_steps: int = 0 + adapter_lr_multiplier: float = 1.0 + text_column: str = "text" + + # NEW PARAMS + use_subwords: bool = False + freeze_classifier: bool = False + clf_from_scratch: bool = False + do_process: bool = False + n_train_steps: List[int] = field(default_factory=lambda: [1000, 10000, 100000]) + + +def main( + tpu_core_idx, + args, + training_args, + label_args, + adapter_args, + data, + train_ds, + valid_ds, + lang_groups, + train_steps, +): + wandb_name = training_args.output_dir + + logger = setup_logging(training_args, job_id=tpu_core_idx) + set_seed(training_args.seed) + logger.warning(f"{tpu_core_idx}: LANG GROUP {lang_groups}") + + num_labels = Constants.AUX_OFFSET + ( + (1 + len(Constants.PUNCTUATION_CHARS)) if label_args.use_auxiliary or args.do_auxiliary_training else 0 + ) + config = SubwordXLMConfig.from_pretrained( + args.model_name_or_path, + num_labels=num_labels, + ) + + # 1 wandb run for all language-dataset combinations + if "wandb" in training_args.report_to: + wandb.init(name=f"{wandb_name}-{tpu_core_idx}", project="sentence-peft-v2", group=wandb_name) + wandb.config.update(args) + wandb.config.update(training_args) + wandb.config.update(label_args) + wandb.config.update(adapter_args) + + for file in glob(os.path.join(os.path.dirname(__file__), "*.py")): + wandb.save(os.path.abspath(file), policy="now") + wandb.log({"train/total_n_batches": len(lang_groups)}) + training_args.report_to = [] + callbacks = WandbCallback() + else: + callbacks = None + + xm.rendezvous("wandb init done") + + for i, ((lang, dataset_name), train_step) in tqdm(enumerate(zip(lang_groups, train_steps)), total=len(lang_groups)): + # do model stuff here; otherwise, head params would be overwritten every time + backbone = SubwordXLMForTokenClassification.from_pretrained( + args.model_name_or_path, config=config, ignore_mismatched_sizes=True + ) + logger.warning(f"{tpu_core_idx}: Loaded backbone {args.model_name_or_path}.") + backbone.config.base_model = args.base_model + + # setup adapters + model_type = backbone.config.model_type + # adapters need xlm-roberta as model type. + backbone.config.model_type = "xlm-roberta" # needed for adapter setup + adapters.init(backbone) + # reset model type (used later) + backbone.config.model_type = model_type + + tokenizer = AutoTokenizer.from_pretrained(args.base_model) + # needed since we create labels in collate_fn based on tokens + tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + + model = Model( + backbone, + loss_margin=args.loss_margin, + use_loss_weights=args.use_loss_weights, + do_sentence_training=args.do_sentence_training, + do_auxiliary_training=args.do_auxiliary_training, + aux_training_weight=args.aux_training_weight, + ) + + # train for as many steps as the current group's steps. + training_args.max_steps = train_step + training_args.evaluation_strategy = "steps" + training_args.eval_steps = (train_step // training_args.num_train_epochs) + 1 + + # print some samples from the dataset + count = 0 + while count < 0: + index = random.choice(range(len(train_ds[(lang, dataset_name)]))) + sample = train_ds[(lang, dataset_name)][index] + + logger.warning(f"TPU {tpu_core_idx}: Sample {index} of the training set: {sample}.") + if tokenizer: + logger.warning(tokenizer.decode(sample["input_ids"])) + count += 1 + + def compute_metrics(trainer): + metrics = {} + eval_data = data[lang]["sentence"][dataset_name]["data"] + + model = trainer._wrap_model(trainer.model, training=False) + + score, info = evaluate_sentence( + lang, + eval_data, + model, + stride=64, + block_size=512, + batch_size=training_args.per_device_eval_batch_size, + ) + metrics[f"{dataset_name}/{lang}/pr_auc"] = score + metrics[f"{dataset_name}/{lang}/f1"] = info["f1"] + metrics[f"{dataset_name}/{lang}/f1_best"] = info["f1_best"] + metrics[f"{dataset_name}/{lang}/threshold_best"] = info["threshold_best"] + xm.rendezvous("eval log done") + + return metrics + + label_dict = get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) + + # init new adapter + model.backbone.add_adapter("text", config=adapter_args.adapter_config, set_active=True, overwrite_ok=True) + model.backbone.train_adapter("text") + if tpu_core_idx == 0: + logger.warning(f"{tpu_core_idx}: {model.backbone.adapter_summary()}") + + if args.freeze_classifier: + for n, p in model.backbone.named_parameters(): + if "classifier" in n: + p.requires_grad = False + if args.clf_from_scratch: + model.backbone.classifier = torch.nn.Linear(model.backbone.config.hidden_size, num_labels) + + trainer = AdapterTrainer( + model, + training_args, + train_dataset=train_ds[(lang, dataset_name)], + eval_dataset=valid_ds[(lang, dataset_name)], + compute_metrics=compute_metrics, + data_collator=partial( + collate_fn, + args=args, + label_args=label_args, + label_dict=label_dict, + tokenizer=tokenizer, + ), + logging_prefix=f"{dataset_name}/{lang}/", + ) + if callbacks: + trainer.add_callback(callbacks) + + logger.warning(f"{tpu_core_idx}: START TRAIN {lang} {dataset_name}.") + # wait until all TPUs are ready + xm.rendezvous("start_training") + + trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) + + if not os.path.exists(os.path.join(training_args.output_dir, dataset_name, lang)): + os.makedirs(os.path.join(training_args.output_dir, dataset_name, lang)) + save_model = copy.deepcopy(model.backbone) + # TODO: check if concurrent saving is fine (if ds duplicated for TPUs) + save_model = save_model.to("cpu") + save_model.save_adapter( + adapter_name="text", + save_directory=os.path.join(training_args.output_dir, dataset_name, lang), + with_head=True, + ) + logger.warning(f"{tpu_core_idx}: DONE TRAIN {lang} {dataset_name}.") + + if callbacks: + wandb.log({"train/batch_progress": (i + 1) / len(lang_groups)}) + + xm.rendezvous("end_training") + xm.rendezvous("all_done") + wandb.finish() + + +# split languages into groups of equal size for TPUs +def split_langs_into_groups(langs, n_groups=8): + return [langs[i::n_groups] for i in range(n_groups)] + + +def _mp_fn(index): + # For xla_spawn (TPUs) + setup(index) + + +def setup(index): + config_path = sys.argv[1] + parser = HfArgumentParser([Args, TrainingArguments, LabelArgs, AdapterArguments]) + (args, training_args, label_args, adapter_args) = parser.parse_json_file(config_path) + + data = torch.load( + args.text_path, + ) + if index == 0: + print(f"Using {xm.xrt_world_size()} processes/TPUs.") + print("Loaded data.") + print(f"Using step sizes {args.n_train_steps}.") + # create a csv file that writes the length of each train dataset + # used to sort the datasets by length and assign them to workers + if not os.path.exists("logs"): + os.makedirs("logs", exist_ok=True) + with open("logs/train_dataset_lengths.csv", "w") as f: + f.write("lang,dataset_name,token_length,original_length\n") + + def prepare_dataset( + data, + num_workers=1, + include_languages=None, + dataset_name="ud", + shuffle=False, + split="train", + ): + # maybe we use more than 1 lang later at once. + for lang in include_languages: + if split == "train": + dataset = data[lang]["sentence"][dataset_name]["meta"]["train_data"] + elif split == "valid": + dataset = data[lang]["sentence"][dataset_name]["data"] + if dataset is None: + return None + dataset = datasets.Dataset.from_list( + [ + { + args.text_column: sample + "\n" if sample and sample[-1] != "\n" else sample, + "lang": lang, + "ends_with_punctuation": sample.endswith(tuple(Constants.PUNCTUATION_CHARS)), + } + for sample in dataset + ] + ) + + if shuffle: + dataset = dataset.shuffle(seed=42) + + # very likely not relevant / used only for the compound part + if args.ignore_non_hyphen: + dataset = dataset.filter( + lambda sample: any(c in sample[args.text_column] for c in label_args.hyphen_chars), + num_proc=args.preprocessing_num_workers, + ) + + # "punctuation-specific sampling" in the paper + if args.non_punctuation_sample_ratio is not None: + languages_without_punctuation = { + lang_code + for lang_code in Constants.LANGINFO.index + if Constants.LANGINFO.loc[lang_code, "no_punctuation"] + } + + def drop_some_non_punctuation_samples(examples): + include_indices = set( + np.where([lang_code not in languages_without_punctuation for lang_code in examples["lang"]])[0] + ) + punctuation_indices = { + i for i in np.where(examples["ends_with_punctuation"])[0] if i in include_indices + } + + target_n_non_punct = int( + (len(punctuation_indices) * args.non_punctuation_sample_ratio) + / (1 - args.non_punctuation_sample_ratio) + ) + n_drop = (len(include_indices) - len(punctuation_indices)) - target_n_non_punct + + out = [True for _ in range(len(examples["ends_with_punctuation"]))] + + if n_drop <= 0: + return out + drop_indices = np.random.choice( + list(include_indices - punctuation_indices), + n_drop, + replace=False, + ) + + for i in drop_indices: + out[i] = False + + return out + + dataset = dataset.filter( + drop_some_non_punctuation_samples, + batched=True, + batch_size=1_000_000, + num_proc=num_workers, + ) + + def tokenize_texts(examples): + # do not return CLS and SEP token here + # there should only be 1 of these per block later, not multiple + # we still can't use return_special_tokens=False since we need the \n token later for the labels + tokenized = tokenizer(examples[args.text_column], verbose=False) + return {"input_ids": [example[1:-1] for example in tokenized["input_ids"]]} + + # similar to group_texts in huggingface's run_clm.py / run_mlm.py: https://github.com/huggingface/transformers/blob/main/examples/pytorch/language-modeling/run_mlm.py + def group_texts(examples): + all_input_blocks = [] + all_input_block_lengths = [] + all_langs = [] + + for current_lang in set(examples["lang"]): + # only retain current_lang examples (all columns) + lang_subwords = [ + subwords for subwords, lang in zip(examples["input_ids"], examples["lang"]) if lang == current_lang + ] + # filter out some special tokens + # from html tags, mostly in Latin, Thai & Korean + lang_subwords = [ + [subword for subword in subwords if subword not in special_tokens_ids] for subwords in lang_subwords + ] + # concatenate token lists + concatenated_texts = [item for sublist in lang_subwords for item in sublist] + concatenated_ids = [i for i, subwords in enumerate(lang_subwords) for _ in subwords] + + total_length = len(concatenated_texts) + + best_length = math.ceil(total_length / args.block_size) * args.block_size + args.overflow_size + while best_length > total_length: + best_length -= args.block_size + + if best_length < 0: + continue + + concatenated_texts = concatenated_texts[:best_length] + concatenated_ids = concatenated_ids[:best_length] + + blocks = [ + concatenated_texts[i : i + args.block_size + args.overflow_size] + for i in range(0, best_length - args.block_size, args.block_size) + ] + block_ids = [ + concatenated_ids[i : i + args.block_size + args.overflow_size] + for i in range(0, best_length - args.block_size, args.block_size) + ] + + block_langs = [current_lang] * len(blocks) + + all_input_blocks.extend(blocks) + all_input_block_lengths.extend([list(Counter(ids).values()) for ids in block_ids]) + all_langs.extend(block_langs) + + return { + "input_ids": all_input_blocks, + "block_lengths": all_input_block_lengths, + "lang": all_langs, + } + + if args.pack_samples: + raise NotImplementedError("Packing samples not implemented for subword-based models.") + + if args.use_subwords: + dataset = dataset.map( + tokenize_texts, + batched=True, + num_proc=num_workers, + remove_columns=[args.text_column], + ) + else: + # this is no longer used and would cause an error otherwise + dataset = dataset.rename_column(args.text_column, "input_ids") + + if not args.one_sample_per_line: + dataset = dataset.map( + group_texts, + batched=True, + num_proc=num_workers, + # a bit hacky but oh well, only drop if sentence + remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], + ) + + return dataset + + if not args.include_languages: + args.include_languages = list(data.keys()) # use all + # XXX: for testing + # args.include_languages = ["af", "az", "kk", "te", "tg", "be", "km",] # "ps", "ru"] + # get all lang-dataset combinations and their lengths + all_keys = [] + for lang in data.keys(): + for dataset_name in data[lang]["sentence"].keys(): + if lang in args.include_languages: + valid = data[lang]["sentence"][dataset_name]["data"] + train = data[lang]["sentence"][dataset_name]["meta"]["train_data"] + if train is not None and valid is not None: + all_keys.append((lang, dataset_name, len(train))) + # sort by length of train dataset + all_keys = sorted(all_keys, key=lambda x: x[2], reverse=True) + all_lang_groups = split_langs_into_groups(list(all_keys), n_groups=int(xm.xrt_world_size())) + current_lang_groups = [(lang, ds) for (lang, ds, _) in all_lang_groups[index]] + # TODO: check speed of parallelism here + # should be: longest (parallel), ..., shortest (parallel) + + tokenizer = AutoTokenizer.from_pretrained(args.base_model) + # needed since we create labels in collate_fn based on tokens + tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + custom_token_id = tokenizer.convert_tokens_to_ids("\n") + # used later to filter out special tokens + special_tokens_ids = set(tokenizer.all_special_ids) + special_tokens_ids.discard(custom_token_id) + + xm.rendezvous("loading data") + + if not os.path.exists("data/ft_data"): + os.makedirs("data/ft_data", exist_ok=True) + + def process_datasets(data, args, current_lang_groups, do_process=True, do_write=True): + all_ds = {"train": {}, "valid": {}} + + for lang in data.keys(): + if lang in args.include_languages: + for dataset_name in data[lang]["sentence"].keys(): + if (lang, dataset_name) not in current_lang_groups: + continue + train_path = f"data/ft_data/{lang}_{dataset_name}_train.pth" + valid_path = f"data/ft_data/{lang}_{dataset_name}_valid.pth" + + if not do_process and os.path.exists(train_path) and os.path.exists(valid_path): + # if exists and we don't want to process, load + train_dataset = torch.load(train_path) + valid_dataset = torch.load(valid_path) + + all_ds["train"][(lang, dataset_name)] = train_dataset + all_ds["valid"][(lang, dataset_name)] = valid_dataset + else: + # Process datasets + valid_dataset = prepare_dataset( + data=data, + num_workers=1, + include_languages=[lang], + dataset_name=dataset_name, + shuffle=False, + split="valid", + ) + + train_dataset = prepare_dataset( + data=data, + num_workers=args.preprocessing_num_workers, + include_languages=[lang], + dataset_name=dataset_name, + shuffle=args.shuffle, + split="train", + ) + + all_ds["valid"][(lang, dataset_name)] = valid_dataset + all_ds["train"][(lang, dataset_name)] = train_dataset + + torch.save(train_dataset, train_path) + torch.save(valid_dataset, valid_path) + + # Write length of train dataset to CSV + if do_write: + print(f"Valid ds for {lang} {dataset_name} has {len(valid_dataset)} examples.") + print(f"Train ds for {lang} {dataset_name} has {len(train_dataset)} examples.") + with open("logs/train_dataset_lengths.csv", "a") as f: + train_data_len = len(data[lang]["sentence"][dataset_name]["meta"]["train_data"]) + f.write(f"{lang},{dataset_name},{len(train_dataset)},{train_data_len}\n") + + if do_process and do_write and index == 0: + with open("data/ft_data/args.json", "w") as f: + json.dump(dataclasses.asdict(args), f) + return all_ds + + # first, pre-process datasets in distributed manner + # assignment of lang-dataset combinations to workers is done based on length of train dataset (string length) + _ = process_datasets(data, args, current_lang_groups, do_process=args.do_process, do_write=True) + xm.rendezvous("data loaded") + + # synchronize number of steps before training, for each worker + with open("logs/train_dataset_lengths.csv", "r") as f: + lines = f.readlines() + lines = [line.strip().split(",") for line in lines[1:]] + lines = sorted(lines, key=lambda x: int(x[2]), reverse=True) + # as tuple + lines = [ + ( + x[0], + x[1], + int(x[2]), + int(x[3]), + # calculate number of steps based on train dataset token length + # XXX: steps are dependent on epoch, too! So we set target number of epochs and calculate steps based on that + math.ceil( + (training_args.num_train_epochs * int(x[2])) + / (training_args.per_device_train_batch_size * training_args.gradient_accumulation_steps) + ), + ) + for x in lines + ] + + all_keys = lines # now contains lang, dataset, token length (!), original length, original train steps + + # bin the keys into groups based on number of steps + grouped_keys = {n_steps: [x for x in all_keys if x[4] <= n_steps] for n_steps in args.n_train_steps[:-1]} + # last group is all keys with >10_000 steps + grouped_keys[args.n_train_steps[-1]] = [x for x in all_keys if x[4] > args.n_train_steps[-2]] + + # split each group into equal parts for each worker + grouped_lang_groups = { + n_steps: split_langs_into_groups(grouped_keys[n_steps], n_groups=xm.xrt_world_size()) + for n_steps in args.n_train_steps + } + # ensure each last group is of equal length + for n_steps in args.n_train_steps: + for i, group in enumerate(grouped_lang_groups[n_steps]): + if len(group) < len(grouped_lang_groups[n_steps][0]): + grouped_lang_groups[n_steps][i].append(grouped_lang_groups[n_steps][0][-1]) + assert all([len(group) == len(grouped_lang_groups[n_steps][0]) for group in grouped_lang_groups[n_steps]]) + + # unwrap dict of lists (just remove dict dimension) + all_lang_groups = [] + + def merge_dict_into_sublists(d): + # Initialize a list with 8 empty sublists + merged_lists = [[] for _ in range(xm.xrt_world_size())] + + # Sort keys in descending order and iterate through them + for key in sorted(d.keys(), reverse=True): + # Iterate through each of the 8 sublists for the current key + for index, sublist in enumerate(d[key]): + # add key (number of used steps) to each item in the sublist + merged_lists[index].extend([item + (key,) for item in sublist]) + return merged_lists + + all_lang_groups = merge_dict_into_sublists(grouped_lang_groups) + train_steps = [x[5] for x in all_lang_groups[index]] + current_lang_groups = [(x[0], x[1]) for x in all_lang_groups[index]] + + all_ds = process_datasets(data, args, current_lang_groups, do_process=False, do_write=False) + + # all lang groups should be of equal length + assert all([len(lang_group) == len(all_lang_groups[0]) for lang_group in all_lang_groups]) + # all lang groups should contain unique lang-dataset combinations + assert all([len(lang_group) == len(set(lang_group)) for lang_group in all_lang_groups]) + + if index == 0: + # just for sanity chacking + with open("logs/all_lang_groups.txt", "w") as f: + f.write(f"{training_args.num_train_epochs}\n") + f.write("\n".join([str(x) for x in all_lang_groups])) + print(all_lang_groups) + xm.rendezvous("data sorted") + + main( + index, + args, + training_args, + label_args, + adapter_args, + data, + all_ds["train"], + all_ds["valid"], + current_lang_groups, + train_steps, + ) + + +if __name__ == "__main__": + import torch_xla.distributed.xla_multiprocessing as xmp + + xmp.spawn( + _mp_fn, + args=(), + nprocs=8, + ) + +# FIXME: integrate trainer, training_args (world!) +# FIXME: grouping for TPUs: 1k, 10k, ... +# TODO: what if very different token distribution? check & fix - duplicate data? +# TODO: accomodate last batch (or, generally, leverage division by 8) + +# TODO: see if shuffle x1, shuffle x num_epochs, or no shuffle is best +# TODO: double-check effect of non_punctuation_sample_ratio +# TODO: try Benjamin's idea: freeze head, add clf on top diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 69f40875..14d652fe 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -110,7 +110,7 @@ def get_subword_label_dict(label_args, tokenizer): n_unks = 0 # Map auxiliary characters to token IDs with labels - logger.warning(f"Using {Constants.PUNCTUATION_CHARS} auxiliary characters.") + logger.info(f"Using {Constants.PUNCTUATION_CHARS} auxiliary characters.") for i, c in enumerate(Constants.PUNCTUATION_CHARS): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i @@ -120,7 +120,7 @@ def get_subword_label_dict(label_args, tokenizer): if token_id == tokenizer.unk_token_id: n_unks += 1 - logger.warning(f"found {n_unks} UNK tokens in auxiliary characters") + logger.info(f"found {n_unks} UNK tokens in auxiliary characters") # Map newline characters to token IDs with labels for c in label_args.newline_chars: From 0fee97d19e62b60efad9f986b6da3fae1ab5fbce Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 26 Feb 2024 15:38:31 +0000 Subject: [PATCH 065/262] cleanup --- wtpsplit/train/train_adapter.py | 16 ++++------------ wtpsplit/train/train_adapter_parallel.py | 24 +++++++++++------------- 2 files changed, 15 insertions(+), 25 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index cbe50330..3e5959cf 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -72,7 +72,9 @@ def main(): setup_logging(training_args) set_seed(training_args.seed) - num_labels = Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0) + num_labels = Constants.AUX_OFFSET + ( + (1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training or label_args.use_auxiliary else 0 + ) config = SubwordXLMConfig.from_pretrained( args.model_name_or_path, num_labels=num_labels, @@ -349,7 +351,7 @@ def maybe_pad(text): wandb.config.update(args) wandb.config.update(training_args) wandb.config.update(label_args) - + for file in glob(os.path.join(os.path.dirname(__file__), "*.py")): wandb.save(os.path.abspath(file), policy="now") @@ -488,7 +490,6 @@ def compute_metrics(trainer): ), logging_suffix=f"{lang}_{dataset_name}", ) - trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) with training_args.main_process_first(): if not os.path.exists(os.path.join(training_args.output_dir, dataset_name, lang)): @@ -501,15 +502,6 @@ def compute_metrics(trainer): with_head=True, ) - -# TODO: at end, do full eval? -# TODO: multi-TPU training - split up? - -# TODO: try 1. double aux, 2. no aux at all (new head?), 3. no aux training but use_aux 4. higher/different aux prob -# TODO: try freezing head -# TODO: faster safe?! - - def _mp_fn(index): # For xla_spawn (TPUs) main() diff --git a/wtpsplit/train/train_adapter_parallel.py b/wtpsplit/train/train_adapter_parallel.py index 8061df4f..d36c5067 100644 --- a/wtpsplit/train/train_adapter_parallel.py +++ b/wtpsplit/train/train_adapter_parallel.py @@ -25,21 +25,22 @@ import wandb from adapters import AdapterArguments from wtpsplit.models import SubwordXLMConfig, SubwordXLMForTokenClassification +from wtpsplit.train.adapter_utils import ( + ParallelTPUAdapterTrainingArguments as TrainingArguments, +) +from wtpsplit.train.adapter_utils import ( + ParallelTPUWandbCallback as WandbCallback, +) from wtpsplit.train.adaptertrainer import AdapterTrainer from wtpsplit.train.evaluate import evaluate_sentence from wtpsplit.train.train import collate_fn from wtpsplit.train.utils import Model from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict -from wtpsplit.train.adapter_utils import ( - ParallelTPUAdapterTrainingArguments as TrainingArguments, - ParallelTPUWandbCallback as WandbCallback, -) os.environ["TOKENIZERS_PARALLELISM"] = "false" def setup_logging(training_args, job_id=None) -> None: - # TODO: log saving based on folders # Generate a unique logger name based on the job_id or process identifier unique_logger_name = f"{__name__}.{job_id}" if job_id is not None else __name__ logger = logging.getLogger(unique_logger_name) @@ -241,7 +242,7 @@ def compute_metrics(trainer): p.requires_grad = False if args.clf_from_scratch: model.backbone.classifier = torch.nn.Linear(model.backbone.config.hidden_size, num_labels) - + trainer = AdapterTrainer( model, training_args, @@ -257,9 +258,9 @@ def compute_metrics(trainer): ), logging_prefix=f"{dataset_name}/{lang}/", ) - if callbacks: + if callbacks: trainer.add_callback(callbacks) - + logger.warning(f"{tpu_core_idx}: START TRAIN {lang} {dataset_name}.") # wait until all TPUs are ready xm.rendezvous("start_training") @@ -674,11 +675,8 @@ def merge_dict_into_sublists(d): nprocs=8, ) -# FIXME: integrate trainer, training_args (world!) -# FIXME: grouping for TPUs: 1k, 10k, ... -# TODO: what if very different token distribution? check & fix - duplicate data? -# TODO: accomodate last batch (or, generally, leverage division by 8) +# TODO: check grouping for TPUs: 1k, 10k, ...; what is most sensible? # TODO: see if shuffle x1, shuffle x num_epochs, or no shuffle is best # TODO: double-check effect of non_punctuation_sample_ratio -# TODO: try Benjamin's idea: freeze head, add clf on top +# TODO: try: freeze head, add clf on top (or do not freeze head, diff LR, etc.) From 0cd453a104b54da3817fa356e0cb03dde6052837 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 27 Feb 2024 13:48:23 +0000 Subject: [PATCH 066/262] add meta clf for ft --- wtpsplit/train/train_adapter_parallel.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/wtpsplit/train/train_adapter_parallel.py b/wtpsplit/train/train_adapter_parallel.py index d36c5067..da616c7c 100644 --- a/wtpsplit/train/train_adapter_parallel.py +++ b/wtpsplit/train/train_adapter_parallel.py @@ -115,6 +115,7 @@ class Args: clf_from_scratch: bool = False do_process: bool = False n_train_steps: List[int] = field(default_factory=lambda: [1000, 10000, 100000]) + meta_clf: bool = False def main( @@ -140,7 +141,7 @@ def main( ) config = SubwordXLMConfig.from_pretrained( args.model_name_or_path, - num_labels=num_labels, + num_labels=num_labels if not args.meta_clf else 1, ) # 1 wandb run for all language-dataset combinations @@ -242,6 +243,12 @@ def compute_metrics(trainer): p.requires_grad = False if args.clf_from_scratch: model.backbone.classifier = torch.nn.Linear(model.backbone.config.hidden_size, num_labels) + if args.meta_clf: + clf = model.backbone.classifier + model.backbone.classifier = torch.nn.Sequential( + clf, # original classifier - if frozen above, also frozen here + torch.nn.Linear(clf.out_features, num_labels) + ) trainer = AdapterTrainer( model, From 934381d3b7657d86cb1e420321cf2a71467616ca Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 28 Feb 2024 12:08:29 +0000 Subject: [PATCH 067/262] add lora config --- configs/peft/lora.json | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 configs/peft/lora.json diff --git a/configs/peft/lora.json b/configs/peft/lora.json new file mode 100644 index 00000000..c11e972d --- /dev/null +++ b/configs/peft/lora.json @@ -0,0 +1,37 @@ +{ + "model_name_or_path": "xlmr-normal-p-v3", + "output_dir": "xlmr-3l-v3_lora_r8_ep20_v2_100-1k-10k", + "block_size": 256, + "eval_stride": 128, + "do_train": true, + "do_eval": true, + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 1, + "preprocessing_num_workers": 1, + "learning_rate": 3e-4, + "fp16": false, + "num_train_epochs": 20, + "logging_steps": 50, + "report_to": "wandb", + "save_steps": 100000000, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_ratio": 0.1, + "non_punctuation_sample_ratio": null, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", + "adapter_config": "lora[r=8]", + "weight_decay": 0.0, + "auxiliary_remove_prob": 0.0, + "do_process": false, + "n_train_steps": [100, 1000, 10000] +} \ No newline at end of file From 6459683cbaf94f1cdb54375f3c786e9ffe5c3df8 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 2 Mar 2024 07:25:45 +0000 Subject: [PATCH 068/262] add some stuff for adp --- wtpsplit/evaluation/intrinsic.py | 8 +++++ wtpsplit/extract.py | 2 +- wtpsplit/train/train_adapter_parallel.py | 37 +++++++++++++++++------- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index f5ddeb75..7abdb13f 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -144,6 +144,14 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st with_head=True, load_as="text", ) + if hasattr(model.model.config, "unfreeze_ln"): + if model.model.config.unfreeze_ln: + ln_dict = torch.load( + args.adapter_path + "/" + dataset_name + "/" + lang_code + "/ln_dict.pth" + ) + for n, p in model.backbone.named_parameters(): + if "LayerNorm" in n: + p.data = ln_dict[n].data except Exception as e: print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 75d65560..3a6fc688 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -174,7 +174,7 @@ def extract( np.zeros( ( length, - model.config.num_labels, + model.classifier.out_features ), dtype=np.float16, ) diff --git a/wtpsplit/train/train_adapter_parallel.py b/wtpsplit/train/train_adapter_parallel.py index da616c7c..8cbd4c9b 100644 --- a/wtpsplit/train/train_adapter_parallel.py +++ b/wtpsplit/train/train_adapter_parallel.py @@ -113,6 +113,7 @@ class Args: use_subwords: bool = False freeze_classifier: bool = False clf_from_scratch: bool = False + unfreeze_ln: bool = False do_process: bool = False n_train_steps: List[int] = field(default_factory=lambda: [1000, 10000, 100000]) meta_clf: bool = False @@ -137,11 +138,11 @@ def main( logger.warning(f"{tpu_core_idx}: LANG GROUP {lang_groups}") num_labels = Constants.AUX_OFFSET + ( - (1 + len(Constants.PUNCTUATION_CHARS)) if label_args.use_auxiliary or args.do_auxiliary_training else 0 + (1 + len(Constants.PUNCTUATION_CHARS)) if (label_args.use_auxiliary or args.do_auxiliary_training or args.meta_clf) else 0 ) config = SubwordXLMConfig.from_pretrained( args.model_name_or_path, - num_labels=num_labels if not args.meta_clf else 1, + num_labels=num_labels, ) # 1 wandb run for all language-dataset combinations @@ -165,7 +166,7 @@ def main( for i, ((lang, dataset_name), train_step) in tqdm(enumerate(zip(lang_groups, train_steps)), total=len(lang_groups)): # do model stuff here; otherwise, head params would be overwritten every time backbone = SubwordXLMForTokenClassification.from_pretrained( - args.model_name_or_path, config=config, ignore_mismatched_sizes=True + args.model_name_or_path, config=copy.deepcopy(config), ignore_mismatched_sizes=True ) logger.warning(f"{tpu_core_idx}: Loaded backbone {args.model_name_or_path}.") backbone.config.base_model = args.base_model @@ -243,12 +244,19 @@ def compute_metrics(trainer): p.requires_grad = False if args.clf_from_scratch: model.backbone.classifier = torch.nn.Linear(model.backbone.config.hidden_size, num_labels) + + if args.unfreeze_ln: + for n, p in model.backbone.named_parameters(): + if "LayerNorm" in n: + p.requires_grad = True + if args.meta_clf: clf = model.backbone.classifier model.backbone.classifier = torch.nn.Sequential( clf, # original classifier - if frozen above, also frozen here - torch.nn.Linear(clf.out_features, num_labels) + torch.nn.Linear(clf.out_features, 1) ) + model.backbone.config.num_labels = 1 trainer = AdapterTrainer( model, @@ -277,19 +285,24 @@ def compute_metrics(trainer): if not os.path.exists(os.path.join(training_args.output_dir, dataset_name, lang)): os.makedirs(os.path.join(training_args.output_dir, dataset_name, lang)) save_model = copy.deepcopy(model.backbone) - # TODO: check if concurrent saving is fine (if ds duplicated for TPUs) save_model = save_model.to("cpu") save_model.save_adapter( adapter_name="text", save_directory=os.path.join(training_args.output_dir, dataset_name, lang), with_head=True, ) + # also save LNs + if args.unfreeze_ln: + # no way within adapters to do this, need to do it manually + ln_dict = {n: p for n, p in save_model.named_parameters() if "LayerNorm" in n} + torch.save(ln_dict, os.path.join(training_args.output_dir, dataset_name, lang, "ln_dict.pth")) logger.warning(f"{tpu_core_idx}: DONE TRAIN {lang} {dataset_name}.") if callbacks: wandb.log({"train/batch_progress": (i + 1) / len(lang_groups)}) xm.rendezvous("end_training") + xm.mark_step() xm.rendezvous("all_done") wandb.finish() @@ -671,6 +684,13 @@ def merge_dict_into_sublists(d): current_lang_groups, train_steps, ) + + xm.rendezvous("all training done") + if index == 0: + # eval here within 1 go + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.5" + ) if __name__ == "__main__": @@ -681,9 +701,4 @@ def merge_dict_into_sublists(d): args=(), nprocs=8, ) - -# TODO: check grouping for TPUs: 1k, 10k, ...; what is most sensible? - -# TODO: see if shuffle x1, shuffle x num_epochs, or no shuffle is best -# TODO: double-check effect of non_punctuation_sample_ratio -# TODO: try: freeze head, add clf on top (or do not freeze head, diff LR, etc.) + \ No newline at end of file From 153485ae18b0c7860af6dbbe9a66829f5de6e496 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 2 Mar 2024 12:51:31 +0000 Subject: [PATCH 069/262] fix meta-clf head loading --- wtpsplit/evaluation/intrinsic.py | 9 +++++++++ wtpsplit/extract.py | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 7abdb13f..15b6aa6e 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -4,6 +4,7 @@ from typing import List import os import time +import logging import h5py import skops.io as sio @@ -19,6 +20,8 @@ from wtpsplit.extract import PyTorchWrapper, extract from wtpsplit.utils import Constants +logger = logging.getLogger() +logger.setLevel(logging.INFO) @dataclass class Args: @@ -243,6 +246,12 @@ def main(args): adapters.init(model.model) # reset model type (used later) model.model.config.model_type = model_type + if "meta-clf" in args.adapter_path: + clf = model.model.classifier + model.model.classifier = torch.nn.Sequential( + clf, + torch.nn.Linear(clf.out_features, 1) + ) # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 3a6fc688..9087ac74 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -174,7 +174,7 @@ def extract( np.zeros( ( length, - model.classifier.out_features + model.config.num_labels ), dtype=np.float16, ) From 0c0116d2d148a3cc82c33b64974568d404918427 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 3 Mar 2024 08:21:48 +0000 Subject: [PATCH 070/262] update default threshold --- wtpsplit/train/evaluate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index c782f3ca..f3927165 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -37,7 +37,7 @@ def compute_f1(pred, true): ) -def get_metrics(labels, preds, threshold: float = 0.01): +def get_metrics(labels, preds, threshold: float = 0.5): # Compute precision-recall curve and AUC precision, recall, thresholds = sklearn.metrics.precision_recall_curve(labels, preds) pr_auc = sklearn.metrics.auc(recall, precision) From 1773c4710867b2d039e40f889d6c3294a233556e Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 4 Mar 2024 16:25:33 +0000 Subject: [PATCH 071/262] add corruption to adp training --- wtpsplit/train/train_adapter_parallel.py | 29 +++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/wtpsplit/train/train_adapter_parallel.py b/wtpsplit/train/train_adapter_parallel.py index 8cbd4c9b..d8613234 100644 --- a/wtpsplit/train/train_adapter_parallel.py +++ b/wtpsplit/train/train_adapter_parallel.py @@ -36,6 +36,7 @@ from wtpsplit.train.train import collate_fn from wtpsplit.train.utils import Model from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict +from wtpsplit.evaluation.intrinsic import corrupt os.environ["TOKENIZERS_PARALLELISM"] = "false" @@ -117,6 +118,9 @@ class Args: do_process: bool = False n_train_steps: List[int] = field(default_factory=lambda: [1000, 10000, 100000]) meta_clf: bool = False + # corruption + do_lowercase: bool = False + do_remove_punct: bool = False def main( @@ -226,6 +230,23 @@ def compute_metrics(trainer): metrics[f"{dataset_name}/{lang}/f1"] = info["f1"] metrics[f"{dataset_name}/{lang}/f1_best"] = info["f1_best"] metrics[f"{dataset_name}/{lang}/threshold_best"] = info["threshold_best"] + if args.do_lowercase and args.do_remove_punct: + score_corrupted, info_corrupted = evaluate_sentence( + lang, + eval_data, + model, + stride=64, + block_size=512, + batch_size=training_args.per_device_eval_batch_size, + do_lowercase=True, + do_remove_punct=True + ) + metrics[f"{dataset_name}/{lang}/corrupted/pr_auc"] = score_corrupted + metrics[f"{dataset_name}/{lang}/corrupted/f1"] = info_corrupted["f1"] + metrics[f"{dataset_name}/{lang}/corrupted/f1_best"] = info_corrupted["f1_best"] + metrics[f"{dataset_name}/{lang}/corrupted/threshold_best"] = info_corrupted["threshold_best"] + elif args.do_lowercase or args.do_remove_punct: + raise NotImplementedError("Currently we only corrupt both ways!") xm.rendezvous("eval log done") return metrics @@ -343,6 +364,8 @@ def prepare_dataset( dataset_name="ud", shuffle=False, split="train", + do_lowercase=False, + do_remove_punct=False, ): # maybe we use more than 1 lang later at once. for lang in include_languages: @@ -355,7 +378,7 @@ def prepare_dataset( dataset = datasets.Dataset.from_list( [ { - args.text_column: sample + "\n" if sample and sample[-1] != "\n" else sample, + args.text_column: corrupt(sample, do_lowercase, do_remove_punct) + "\n" if sample and sample[-1] != "\n" else corrupt(sample, do_lowercase, do_remove_punct), "lang": lang, "ends_with_punctuation": sample.endswith(tuple(Constants.PUNCTUATION_CHARS)), } @@ -562,6 +585,8 @@ def process_datasets(data, args, current_lang_groups, do_process=True, do_write= dataset_name=dataset_name, shuffle=False, split="valid", + do_lowercase=args.do_lowercase, + do_remove_punct=args.do_remove_punct, ) train_dataset = prepare_dataset( @@ -571,6 +596,8 @@ def process_datasets(data, args, current_lang_groups, do_process=True, do_write= dataset_name=dataset_name, shuffle=args.shuffle, split="train", + do_lowercase=args.do_lowercase, + do_remove_punct=args.do_remove_punct, ) all_ds["valid"][(lang, dataset_name)] = valid_dataset From 45b892be9f996fefed3ca217e67a81ec86441664 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 6 Mar 2024 15:27:27 +0000 Subject: [PATCH 072/262] add corruptions & domain setup --- configs/peft/adapter_lyrics.json | 40 ++++++++++++++++++++ configs/peft/adapter_pairwise.json | 41 ++++++++++++++++++++ wtpsplit/evaluation/intrinsic_pairwise.py | 46 ++++++++++++++++++++++- wtpsplit/train/evaluate.py | 6 +-- wtpsplit/train/train_adapter_parallel.py | 45 ++++++++++++++++++---- wtpsplit/utils.py | 6 +-- 6 files changed, 169 insertions(+), 15 deletions(-) create mode 100644 configs/peft/adapter_lyrics.json create mode 100644 configs/peft/adapter_pairwise.json diff --git a/configs/peft/adapter_lyrics.json b/configs/peft/adapter_lyrics.json new file mode 100644 index 00000000..218e8fc6 --- /dev/null +++ b/configs/peft/adapter_lyrics.json @@ -0,0 +1,40 @@ +{ + "model_name_or_path": "xlmr-normal-p-v3", + "output_dir": "xlmr-3l-v3_adapter_rf32_ep20_v2_100-1k-10k_lines", + "block_size": 256, + "eval_stride": 128, + "do_train": true, + "do_eval": true, + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 1, + "preprocessing_num_workers": 1, + "learning_rate": 3e-4, + "fp16": false, + "num_train_epochs": 20, + "logging_steps": 50, + "report_to": "wandb", + "wandb_project": "lyrics-peft", + "save_steps": 100000000, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_ratio": 0.1, + "non_punctuation_sample_ratio": null, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", + "adapter_config": "seq_bn[reduction_factor=32]", + "weight_decay": 0.0, + "auxiliary_remove_prob": 0.0, + "do_process": true, + "n_train_steps": [100, 1000, 10000], + "do_lowercase": true, + "do_remove_punct": true +} \ No newline at end of file diff --git a/configs/peft/adapter_pairwise.json b/configs/peft/adapter_pairwise.json new file mode 100644 index 00000000..70dd60fc --- /dev/null +++ b/configs/peft/adapter_pairwise.json @@ -0,0 +1,41 @@ +{ + "model_name_or_path": "xlmr-normal-p-v3", + "output_dir": "xlmr-3l-v3_adapter_rf32_ep20_v2_100-1k-10k_pairwise_bs32", + "block_size": 32, + "eval_stride": 16, + "do_train": true, + "do_eval": true, + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 1, + "preprocessing_num_workers": 1, + "learning_rate": 3e-4, + "fp16": false, + "num_train_epochs": 20, + "logging_steps": 50, + "report_to": "wandb", + "wandb_project": "pairwise-peft", + "save_steps": 100000000, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_ratio": 0.1, + "non_punctuation_sample_ratio": null, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", + "adapter_config": "seq_bn[reduction_factor=32]", + "weight_decay": 0.0, + "auxiliary_remove_prob": 0.0, + "do_process": true, + "n_train_steps": [100, 1000, 10000], + "do_lowercase": true, + "do_remove_punct": true, + "eval_pairwise": true +} \ No newline at end of file diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index a9418a6b..cbf19e1b 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -6,6 +6,7 @@ import time import random import sys +import logging import h5py import skops.io as sio @@ -14,6 +15,7 @@ from tqdm.auto import tqdm from transformers import AutoModelForTokenClassification, HfArgumentParser import numpy as np +import adapters import wtpsplit.models # noqa: F401 from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs @@ -22,10 +24,13 @@ from wtpsplit.utils import Constants from wtpsplit.evaluation.intrinsic import compute_statistics, corrupt +logger = logging.getLogger() +logger.setLevel(logging.INFO) @dataclass class Args: model_path: str + adapter_path: str = None # eval data in the format: # { # "": { @@ -162,6 +167,25 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # eval data for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): + try: + if args.adapter_path: + model.model.load_adapter( + args.adapter_path + "/" + dataset_name + "/" + lang_code, + set_active=True, + with_head=True, + load_as="text", + ) + if hasattr(model.model.config, "unfreeze_ln"): + if model.model.config.unfreeze_ln: + ln_dict = torch.load( + args.adapter_path + "/" + dataset_name + "/" + lang_code + "/ln_dict.pth" + ) + for n, p in model.backbone.named_parameters(): + if "LayerNorm" in n: + p.data = ln_dict[n].data + except Exception as e: + print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") + continue print(dataset_name) if dataset_name not in lang_group: dset_group = lang_group.create_group(dataset_name) @@ -246,7 +270,12 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st def main(args): - save_str = f"{args.model_path.replace('/','_')}_b{args.block_size}_u{args.threshold}{args.save_suffix}" + save_model_path = args.model_path + if args.adapter_path: + save_model_path = args.adapter_path + save_str = ( + f"{save_model_path.replace('/','_')}_b{args.block_size}_u{args.threshold}{args.save_suffix}" + ) if args.do_lowercase: save_str += "_lc" if args.do_remove_punct: @@ -260,7 +289,20 @@ def main(args): print("Loading model...") model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) - + if args.adapter_path: + model_type = model.model.config.model_type + # adapters need xlm-roberta as model type. + model.model.config.model_type = "xlm-roberta" + adapters.init(model.model) + # reset model type (used later) + model.model.config.model_type = model_type + if "meta-clf" in args.adapter_path: + clf = model.model.classifier + model.model.classifier = torch.nn.Sequential( + clf, + torch.nn.Linear(clf.out_features, 1) + ) + # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index f3927165..c2558ff6 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -37,7 +37,7 @@ def compute_f1(pred, true): ) -def get_metrics(labels, preds, threshold: float = 0.5): +def get_metrics(labels, preds, threshold: float = 0.1): # Compute precision-recall curve and AUC precision, recall, thresholds = sklearn.metrics.precision_recall_curve(labels, preds) pr_auc = sklearn.metrics.auc(recall, precision) @@ -141,6 +141,7 @@ def evaluate_sentence_pairwise( positive_index=None, do_lowercase=False, do_remove_punct=False, + threshold: float = 0.1 ): if positive_index is None: positive_index = Constants.NEWLINE_INDEX @@ -173,7 +174,6 @@ def evaluate_sentence_pairwise( ) # simulate performance for WtP-U - DEFAULT_THRESHOLD = 0.01 for i, (sentence1, sentence2) in enumerate(sampled_pairs): newline_probs = logits[i][:, positive_index] @@ -188,7 +188,7 @@ def evaluate_sentence_pairwise( # Get metrics for the pair pair_metrics, _ = get_metrics(newline_labels, newline_probs) metrics_list.append(pair_metrics["pr_auc"]) - predicted_labels = newline_probs > np.log(DEFAULT_THRESHOLD / (1 - DEFAULT_THRESHOLD)) # inverse sigmoid + predicted_labels = newline_probs > np.log(threshold / (1 - threshold)) # inverse sigmoid # for accuracy, check if the single label in between is correctly predicted (ignore the one at the end) if sum(predicted_labels[:-1]) > 0: correct = (np.where(newline_labels[:-1])[0] == np.where(predicted_labels[:-1])[0]).all() diff --git a/wtpsplit/train/train_adapter_parallel.py b/wtpsplit/train/train_adapter_parallel.py index d8613234..f56a9d83 100644 --- a/wtpsplit/train/train_adapter_parallel.py +++ b/wtpsplit/train/train_adapter_parallel.py @@ -32,7 +32,7 @@ ParallelTPUWandbCallback as WandbCallback, ) from wtpsplit.train.adaptertrainer import AdapterTrainer -from wtpsplit.train.evaluate import evaluate_sentence +from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise from wtpsplit.train.train import collate_fn from wtpsplit.train.utils import Model from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict @@ -118,9 +118,11 @@ class Args: do_process: bool = False n_train_steps: List[int] = field(default_factory=lambda: [1000, 10000, 100000]) meta_clf: bool = False + wandb_project = "sentence" # corruption do_lowercase: bool = False do_remove_punct: bool = False + eval_pairwise: bool = False def main( @@ -151,7 +153,7 @@ def main( # 1 wandb run for all language-dataset combinations if "wandb" in training_args.report_to: - wandb.init(name=f"{wandb_name}-{tpu_core_idx}", project="sentence-peft-v2", group=wandb_name) + wandb.init(name=f"{wandb_name}-{tpu_core_idx}", project=args.wandb_project, group=wandb_name) wandb.config.update(args) wandb.config.update(training_args) wandb.config.update(label_args) @@ -207,7 +209,7 @@ def main( index = random.choice(range(len(train_ds[(lang, dataset_name)]))) sample = train_ds[(lang, dataset_name)][index] - logger.warning(f"TPU {tpu_core_idx}: Sample {index} of the training set: {sample}.") + logger.warning(f"{tpu_core_idx}: Sample {index} of the training set: {sample}.") if tokenizer: logger.warning(tokenizer.decode(sample["input_ids"])) count += 1 @@ -247,6 +249,18 @@ def compute_metrics(trainer): metrics[f"{dataset_name}/{lang}/corrupted/threshold_best"] = info_corrupted["threshold_best"] elif args.do_lowercase or args.do_remove_punct: raise NotImplementedError("Currently we only corrupt both ways!") + if args.eval_pairwise: + score_pairwise, avg_acc = evaluate_sentence_pairwise( + lang, + eval_data, + model, + stride=args.eval_stride, + block_size=args.block_size, + batch_size=training_args.per_device_eval_batch_size, + threshold=0.1, + ) + metrics[f"{dataset_name}/{lang}/pairwise/pr_auc"] = score_pairwise + metrics[f"{dataset_name}/{lang}/pairwise/acc"] = avg_acc xm.rendezvous("eval log done") return metrics @@ -312,7 +326,7 @@ def compute_metrics(trainer): save_directory=os.path.join(training_args.output_dir, dataset_name, lang), with_head=True, ) - # also save LNs + if args.unfreeze_ln: # no way within adapters to do this, need to do it manually ln_dict = {n: p for n, p in save_model.named_parameters() if "LayerNorm" in n} @@ -715,9 +729,26 @@ def merge_dict_into_sublists(d): xm.rendezvous("all training done") if index == 0: # eval here within 1 go - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.5" - ) + if args.do_lowercase and args.do_remove_punct: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --do_lowercase --do_remove_punct" + ) + elif args.eval_pairwise: + os.system( + f"python3 wtpsplit/evaluation/intrinsic_pairwise.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" + ) + elif "lines" in args.text_path: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1--custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines" + ) + elif "verses" in args.text_path: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses" + ) + else: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" + ) if __name__ == "__main__": diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 14d652fe..cf2af9e1 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -114,7 +114,7 @@ def get_subword_label_dict(label_args, tokenizer): for i, c in enumerate(Constants.PUNCTUATION_CHARS): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i - logger.info( + logger.warning( f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}" ) if token_id == tokenizer.unk_token_id: @@ -126,8 +126,8 @@ def get_subword_label_dict(label_args, tokenizer): for c in label_args.newline_chars: token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.NEWLINE_INDEX - logger.info(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") - logger.info(f"{tokenizer.decode([token_id])}") + logger.warning(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") + logger.warning(f"{tokenizer.decode([token_id])}") return label_dict From 4ac568cabc43d1dbc19739d030cedaeb71c1aee3 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 6 Mar 2024 15:49:05 +0000 Subject: [PATCH 073/262] fixes --- configs/peft/adapter_lyrics.json | 3 ++- wtpsplit/train/adaptertrainer.py | 2 +- wtpsplit/train/train.py | 4 ++-- wtpsplit/train/train_adapter_parallel.py | 25 +++++++++++++++++------- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/configs/peft/adapter_lyrics.json b/configs/peft/adapter_lyrics.json index 218e8fc6..8944a653 100644 --- a/configs/peft/adapter_lyrics.json +++ b/configs/peft/adapter_lyrics.json @@ -1,6 +1,7 @@ { "model_name_or_path": "xlmr-normal-p-v3", - "output_dir": "xlmr-3l-v3_adapter_rf32_ep20_v2_100-1k-10k_lines", + "output_dir": "xlmr-3l-v3_adapter_rf32_ep20_v2_100-1k-10k_lines_corrupted", + "text_path": "data/lyrics_lines.pt", "block_size": 256, "eval_stride": 128, "do_train": true, diff --git a/wtpsplit/train/adaptertrainer.py b/wtpsplit/train/adaptertrainer.py index cc5e256d..962cbc52 100644 --- a/wtpsplit/train/adaptertrainer.py +++ b/wtpsplit/train/adaptertrainer.py @@ -981,7 +981,7 @@ def evaluation_loop( all_inputs = nested_truncate(all_inputs, num_samples) # Metrics! - # MODIFIED: removed sincedone in compute_metrics + # MODIFIED: removed since done in compute_metrics # xm.rendezvous("eval_metrics") # MODIFIED: always compute metrics if self.compute_metrics is not None: diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 55ea91dc..7b043d30 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -103,7 +103,7 @@ class Args: use_subwords: bool = False -def collate_fn(batch, args, label_args, label_dict, tokenizer): +def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: bool = False): all_input_ids = [] all_labels = [] all_language_ids = [] @@ -172,7 +172,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer): all_input_ids.append(input_ids) all_label_weights.append(label_weights) all_labels.append(labels) - all_language_ids.append(Constants.LANG_CODE_TO_INDEX[lang]) + all_language_ids.append(Constants.LANG_CODE_TO_INDEX[lang] if add_lang_ids else 0) all_attention_masks.append(attention_mask) all_position_ids.append(position_ids) diff --git a/wtpsplit/train/train_adapter_parallel.py b/wtpsplit/train/train_adapter_parallel.py index f56a9d83..02146698 100644 --- a/wtpsplit/train/train_adapter_parallel.py +++ b/wtpsplit/train/train_adapter_parallel.py @@ -118,7 +118,7 @@ class Args: do_process: bool = False n_train_steps: List[int] = field(default_factory=lambda: [1000, 10000, 100000]) meta_clf: bool = False - wandb_project = "sentence" + wandb_project: str = "sentence" # corruption do_lowercase: bool = False do_remove_punct: bool = False @@ -305,6 +305,7 @@ def compute_metrics(trainer): label_args=label_args, label_dict=label_dict, tokenizer=tokenizer, + add_lang_ids=False ), logging_prefix=f"{dataset_name}/{lang}/", ) @@ -738,13 +739,23 @@ def merge_dict_into_sublists(d): f"python3 wtpsplit/evaluation/intrinsic_pairwise.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" ) elif "lines" in args.text_path: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1--custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines" - ) + if args.do_lowercase and args.do_remove_punct: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1--custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines --do_lowercase --do_remove_punct" + ) + else: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1--custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines" + ) elif "verses" in args.text_path: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses" - ) + if args.do_lowercase and args.do_remove_punct: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses --do_lowercase --do_remove_punct" + ) + else: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses" + ) else: os.system( f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" From 5c89af182eb8c43de7c2e1f8a19e0423ca0046b9 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 6 Mar 2024 16:03:25 +0000 Subject: [PATCH 074/262] optionally, skip eval loss --- wtpsplit/train/adaptertrainer.py | 329 ++++++++++++----------- wtpsplit/train/train_adapter_parallel.py | 2 + 2 files changed, 169 insertions(+), 162 deletions(-) diff --git a/wtpsplit/train/adaptertrainer.py b/wtpsplit/train/adaptertrainer.py index 962cbc52..5303ee48 100644 --- a/wtpsplit/train/adaptertrainer.py +++ b/wtpsplit/train/adaptertrainer.py @@ -118,6 +118,7 @@ def __init__( optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = (None, None), preprocess_logits_for_metrics: Callable[[torch.Tensor, torch.Tensor], torch.Tensor] = None, logging_prefix="", + skip_eval_loss: bool = False, ): super().__init__( model, @@ -134,6 +135,7 @@ def __init__( ) self.logging_prefix = logging_prefix + self.skip_eval_loss = skip_eval_loss if adapter_names is not None: self.model.backbone.set_active_adapters(adapter_names) @@ -803,182 +805,185 @@ def evaluation_loop( Works both with or without labels. """ args = self.args + + if not self.skip_eval_loss: + prediction_loss_only = prediction_loss_only if prediction_loss_only is not None else args.prediction_loss_only + + # if eval is called w/o train init deepspeed here + if args.deepspeed and not self.deepspeed: + # XXX: eval doesn't have `resume_from_checkpoint` arg but we should be able to do eval + # from the checkpoint eventually + deepspeed_engine, _, _ = deepspeed_init( + self, num_training_steps=0, resume_from_checkpoint=None, inference=True + ) + self.model = deepspeed_engine.module + self.model_wrapped = deepspeed_engine + self.deepspeed = deepspeed_engine - prediction_loss_only = prediction_loss_only if prediction_loss_only is not None else args.prediction_loss_only + model = self._wrap_model(self.model, training=False, dataloader=dataloader) - # if eval is called w/o train init deepspeed here - if args.deepspeed and not self.deepspeed: - # XXX: eval doesn't have `resume_from_checkpoint` arg but we should be able to do eval - # from the checkpoint eventually - deepspeed_engine, _, _ = deepspeed_init( - self, num_training_steps=0, resume_from_checkpoint=None, inference=True - ) - self.model = deepspeed_engine.module - self.model_wrapped = deepspeed_engine - self.deepspeed = deepspeed_engine + # if full fp16 or bf16 eval is wanted and this ``evaluation`` or ``predict`` isn't called + # while ``train`` is running, cast it to the right dtype first and then put on device + if not self.is_in_train: + if args.fp16_full_eval: + model = model.to(dtype=torch.float16, device=args.device) + elif args.bf16_full_eval: + model = model.to(dtype=torch.bfloat16, device=args.device) - model = self._wrap_model(self.model, training=False, dataloader=dataloader) + batch_size = self.args.eval_batch_size - # if full fp16 or bf16 eval is wanted and this ``evaluation`` or ``predict`` isn't called - # while ``train`` is running, cast it to the right dtype first and then put on device - if not self.is_in_train: - if args.fp16_full_eval: - model = model.to(dtype=torch.float16, device=args.device) - elif args.bf16_full_eval: - model = model.to(dtype=torch.bfloat16, device=args.device) + logger.info(f"***** Running {description} *****") + if has_length(dataloader): + logger.warning(f" Num examples = {self.num_examples(dataloader)}") + else: + logger.info(" Num examples: Unknown") + logger.info(f" Batch size = {batch_size}") - batch_size = self.args.eval_batch_size + model.eval() - logger.info(f"***** Running {description} *****") - if has_length(dataloader): - logger.warning(f" Num examples = {self.num_examples(dataloader)}") - else: - logger.info(" Num examples: Unknown") - logger.info(f" Batch size = {batch_size}") - - model.eval() - - self.callback_handler.eval_dataloader = dataloader - # Do this before wrapping. - eval_dataset = getattr(dataloader, "dataset", None) - - # MODIFIED: not necessary. - # if is_torch_tpu_available(): - # dataloader = pl.MpDeviceLoader(dataloader, args.device) # .per_device_loader(args.device) - - if args.past_index >= 0: - self._past = None - - # Initialize containers - # losses/preds/labels on GPU/TPU (accumulated for eval_accumulation_steps) - losses_host = None - preds_host = None - labels_host = None - inputs_host = None - - # losses/preds/labels on CPU (final containers) - all_losses = None - all_preds = None - all_labels = None - all_inputs = None - # Will be useful when we have an iterable dataset so don't know its length. - - observed_num_examples = 0 - # Main evaluation loop - for step, inputs in enumerate(dataloader): - # Update the observed num examples - observed_batch_size = find_batch_size(inputs) - if observed_batch_size is not None: - observed_num_examples += observed_batch_size - # For batch samplers, batch_size is not known by the dataloader in advance. - if batch_size is None: - batch_size = observed_batch_size - - # Prediction step - loss, logits, labels = self.prediction_step(model, inputs, prediction_loss_only, ignore_keys=ignore_keys) - inputs_decode = self._prepare_input(inputs["input_ids"]) if args.include_inputs_for_metrics else None + self.callback_handler.eval_dataloader = dataloader + # Do this before wrapping. + eval_dataset = getattr(dataloader, "dataset", None) # MODIFIED: not necessary. # if is_torch_tpu_available(): - # xm.mark_step() + # dataloader = pl.MpDeviceLoader(dataloader, args.device) # .per_device_loader(args.device) - # Update containers on host - if loss is not None: - # MODIFIED: do not gather across devices. (different loss on each device) - losses = loss.repeat(batch_size) - losses_host = losses if losses_host is None else torch.cat((losses_host, losses), dim=0) - if labels is not None: - labels = self._pad_across_processes(labels) - # MODIFIED: do not gather across devices. - # labels = self._nested_gather(labels) - labels_host = labels if labels_host is None else nested_concat(labels_host, labels, padding_index=-100) - if inputs_decode is not None: - inputs_decode = self._pad_across_processes(inputs_decode) - # MODIFIED: do not gather across devices. - # inputs_decode = self._nested_gather(inputs_decode) - inputs_host = ( - inputs_decode - if inputs_host is None - else nested_concat(inputs_host, inputs_decode, padding_index=-100) - ) - if logits is not None: - logits = self._pad_across_processes(logits) - # logits = self._nested_gather(logits) - if self.preprocess_logits_for_metrics is not None: - logits = self.preprocess_logits_for_metrics(logits, labels) - preds_host = logits if preds_host is None else nested_concat(preds_host, logits, padding_index=-100) - self.control = self.callback_handler.on_prediction_step(args, self.state, self.control) - - # Gather all tensors and put them back on the CPU if we have done enough accumulation steps. - if args.eval_accumulation_steps is not None and (step + 1) % args.eval_accumulation_steps == 0: - if losses_host is not None: - losses = nested_numpify(losses_host) - all_losses = losses if all_losses is None else np.concatenate((all_losses, losses), axis=0) - if preds_host is not None: - logits = nested_numpify(preds_host) - all_preds = logits if all_preds is None else nested_concat(all_preds, logits, padding_index=-100) - if inputs_host is not None: - inputs_decode = nested_numpify(inputs_host) - all_inputs = ( + if args.past_index >= 0: + self._past = None + + # Initialize containers + # losses/preds/labels on GPU/TPU (accumulated for eval_accumulation_steps) + losses_host = None + preds_host = None + labels_host = None + inputs_host = None + + # losses/preds/labels on CPU (final containers) + all_losses = None + all_preds = None + all_labels = None + all_inputs = None + # Will be useful when we have an iterable dataset so don't know its length. + + observed_num_examples = 0 + # Main evaluation loop + for step, inputs in enumerate(dataloader): + # Update the observed num examples + observed_batch_size = find_batch_size(inputs) + if observed_batch_size is not None: + observed_num_examples += observed_batch_size + # For batch samplers, batch_size is not known by the dataloader in advance. + if batch_size is None: + batch_size = observed_batch_size + + # Prediction step + loss, logits, labels = self.prediction_step(model, inputs, prediction_loss_only, ignore_keys=ignore_keys) + inputs_decode = self._prepare_input(inputs["input_ids"]) if args.include_inputs_for_metrics else None + + # MODIFIED: not necessary. + # if is_torch_tpu_available(): + # xm.mark_step() + + # Update containers on host + if loss is not None: + # MODIFIED: do not gather across devices. (different loss on each device) + losses = loss.repeat(batch_size) + losses_host = losses if losses_host is None else torch.cat((losses_host, losses), dim=0) + if labels is not None: + labels = self._pad_across_processes(labels) + # MODIFIED: do not gather across devices. + # labels = self._nested_gather(labels) + labels_host = labels if labels_host is None else nested_concat(labels_host, labels, padding_index=-100) + if inputs_decode is not None: + inputs_decode = self._pad_across_processes(inputs_decode) + # MODIFIED: do not gather across devices. + # inputs_decode = self._nested_gather(inputs_decode) + inputs_host = ( inputs_decode - if all_inputs is None - else nested_concat(all_inputs, inputs_decode, padding_index=-100) + if inputs_host is None + else nested_concat(inputs_host, inputs_decode, padding_index=-100) + ) + if logits is not None: + logits = self._pad_across_processes(logits) + # logits = self._nested_gather(logits) + if self.preprocess_logits_for_metrics is not None: + logits = self.preprocess_logits_for_metrics(logits, labels) + preds_host = logits if preds_host is None else nested_concat(preds_host, logits, padding_index=-100) + self.control = self.callback_handler.on_prediction_step(args, self.state, self.control) + + # Gather all tensors and put them back on the CPU if we have done enough accumulation steps. + if args.eval_accumulation_steps is not None and (step + 1) % args.eval_accumulation_steps == 0: + if losses_host is not None: + losses = nested_numpify(losses_host) + all_losses = losses if all_losses is None else np.concatenate((all_losses, losses), axis=0) + if preds_host is not None: + logits = nested_numpify(preds_host) + all_preds = logits if all_preds is None else nested_concat(all_preds, logits, padding_index=-100) + if inputs_host is not None: + inputs_decode = nested_numpify(inputs_host) + all_inputs = ( + inputs_decode + if all_inputs is None + else nested_concat(all_inputs, inputs_decode, padding_index=-100) + ) + if labels_host is not None: + labels = nested_numpify(labels_host) + all_labels = labels if all_labels is None else nested_concat(all_labels, labels, padding_index=-100) + + # Set back to None to begin a new accumulation + losses_host, preds_host, inputs_host, labels_host = ( + None, + None, + None, + None, ) - if labels_host is not None: - labels = nested_numpify(labels_host) - all_labels = labels if all_labels is None else nested_concat(all_labels, labels, padding_index=-100) - - # Set back to None to begin a new accumulation - losses_host, preds_host, inputs_host, labels_host = ( - None, - None, - None, - None, - ) - - if args.past_index and hasattr(self, "_past"): - # Clean the state at the end of the evaluation loop - delattr(self, "_past") - # Gather all remaining tensors and put them back on the CPU - if losses_host is not None: - losses = nested_numpify(losses_host) - all_losses = losses if all_losses is None else np.concatenate((all_losses, losses), axis=0) - if preds_host is not None: - logits = nested_numpify(preds_host) - all_preds = logits if all_preds is None else nested_concat(all_preds, logits, padding_index=-100) - if inputs_host is not None: - inputs_decode = nested_numpify(inputs_host) - all_inputs = ( - inputs_decode if all_inputs is None else nested_concat(all_inputs, inputs_decode, padding_index=-100) - ) - if labels_host is not None: - labels = nested_numpify(labels_host) - all_labels = labels if all_labels is None else nested_concat(all_labels, labels, padding_index=-100) - - # Number of samples - if has_length(eval_dataset): - num_samples = len(eval_dataset) - # The instance check is weird and does not actually check for the type, but whether the dataset has the right - # methods. Therefore we need to make sure it also has the attribute. - elif isinstance(eval_dataset, IterableDatasetShard) and hasattr(eval_dataset, "num_examples"): - num_samples = eval_dataset.num_examples + if args.past_index and hasattr(self, "_past"): + # Clean the state at the end of the evaluation loop + delattr(self, "_past") + + # Gather all remaining tensors and put them back on the CPU + if losses_host is not None: + losses = nested_numpify(losses_host) + all_losses = losses if all_losses is None else np.concatenate((all_losses, losses), axis=0) + if preds_host is not None: + logits = nested_numpify(preds_host) + all_preds = logits if all_preds is None else nested_concat(all_preds, logits, padding_index=-100) + if inputs_host is not None: + inputs_decode = nested_numpify(inputs_host) + all_inputs = ( + inputs_decode if all_inputs is None else nested_concat(all_inputs, inputs_decode, padding_index=-100) + ) + if labels_host is not None: + labels = nested_numpify(labels_host) + all_labels = labels if all_labels is None else nested_concat(all_labels, labels, padding_index=-100) + + # Number of samples + if has_length(eval_dataset): + num_samples = len(eval_dataset) + # The instance check is weird and does not actually check for the type, but whether the dataset has the right + # methods. Therefore we need to make sure it also has the attribute. + elif isinstance(eval_dataset, IterableDatasetShard) and hasattr(eval_dataset, "num_examples"): + num_samples = eval_dataset.num_examples + else: + if has_length(dataloader): + num_samples = self.num_examples(dataloader) + else: # both len(dataloader.dataset) and len(dataloader) fail + num_samples = observed_num_examples + + # Number of losses has been rounded to a multiple of batch_size and in a distributed training, the number of + # samplers has been rounded to a multiple of batch_size, so we truncate. + if all_losses is not None: + all_losses = all_losses[:num_samples] + if all_preds is not None: + all_preds = nested_truncate(all_preds, num_samples) + if all_labels is not None: + all_labels = nested_truncate(all_labels, num_samples) + if all_inputs is not None: + all_inputs = nested_truncate(all_inputs, num_samples) else: - if has_length(dataloader): - num_samples = self.num_examples(dataloader) - else: # both len(dataloader.dataset) and len(dataloader) fail - num_samples = observed_num_examples - - # Number of losses has been rounded to a multiple of batch_size and in a distributed training, the number of - # samplers has been rounded to a multiple of batch_size, so we truncate. - if all_losses is not None: - all_losses = all_losses[:num_samples] - if all_preds is not None: - all_preds = nested_truncate(all_preds, num_samples) - if all_labels is not None: - all_labels = nested_truncate(all_labels, num_samples) - if all_inputs is not None: - all_inputs = nested_truncate(all_inputs, num_samples) + all_losses, all_preds, all_labels, all_inputs, num_samples = None, None, None, None, 0 # Metrics! # MODIFIED: removed since done in compute_metrics diff --git a/wtpsplit/train/train_adapter_parallel.py b/wtpsplit/train/train_adapter_parallel.py index 02146698..ed715fd2 100644 --- a/wtpsplit/train/train_adapter_parallel.py +++ b/wtpsplit/train/train_adapter_parallel.py @@ -123,6 +123,7 @@ class Args: do_lowercase: bool = False do_remove_punct: bool = False eval_pairwise: bool = False + skip_eval_loss: bool = False def main( @@ -308,6 +309,7 @@ def compute_metrics(trainer): add_lang_ids=False ), logging_prefix=f"{dataset_name}/{lang}/", + skip_eval_loss=args.skip_eval_loss ) if callbacks: trainer.add_callback(callbacks) From c6361d9d80508a9898a19435d8336c5ca1d86482 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 7 Mar 2024 08:56:46 +0000 Subject: [PATCH 075/262] update non-parallel adp training --- wtpsplit/train/adaptertrainer.py | 33 ++--- wtpsplit/train/train_adapter.py | 210 ++++++++++++++++++++----------- 2 files changed, 156 insertions(+), 87 deletions(-) diff --git a/wtpsplit/train/adaptertrainer.py b/wtpsplit/train/adaptertrainer.py index 5303ee48..5a735471 100644 --- a/wtpsplit/train/adaptertrainer.py +++ b/wtpsplit/train/adaptertrainer.py @@ -806,22 +806,22 @@ def evaluation_loop( """ args = self.args - if not self.skip_eval_loss: - prediction_loss_only = prediction_loss_only if prediction_loss_only is not None else args.prediction_loss_only - - # if eval is called w/o train init deepspeed here - if args.deepspeed and not self.deepspeed: - # XXX: eval doesn't have `resume_from_checkpoint` arg but we should be able to do eval - # from the checkpoint eventually - deepspeed_engine, _, _ = deepspeed_init( - self, num_training_steps=0, resume_from_checkpoint=None, inference=True - ) - self.model = deepspeed_engine.module - self.model_wrapped = deepspeed_engine - self.deepspeed = deepspeed_engine - - model = self._wrap_model(self.model, training=False, dataloader=dataloader) + prediction_loss_only = prediction_loss_only if prediction_loss_only is not None else args.prediction_loss_only + + # if eval is called w/o train init deepspeed here + if args.deepspeed and not self.deepspeed: + # XXX: eval doesn't have `resume_from_checkpoint` arg but we should be able to do eval + # from the checkpoint eventually + deepspeed_engine, _, _ = deepspeed_init( + self, num_training_steps=0, resume_from_checkpoint=None, inference=True + ) + self.model = deepspeed_engine.module + self.model_wrapped = deepspeed_engine + self.deepspeed = deepspeed_engine + model = self._wrap_model(self.model, training=False, dataloader=dataloader) + + if not self.skip_eval_loss: # if full fp16 or bf16 eval is wanted and this ``evaluation`` or ``predict`` isn't called # while ``train`` is running, cast it to the right dtype first and then put on device if not self.is_in_train: @@ -832,7 +832,7 @@ def evaluation_loop( batch_size = self.args.eval_batch_size - logger.info(f"***** Running {description} *****") + logger.warning(f"***** Running {description} *****") if has_length(dataloader): logger.warning(f" Num examples = {self.num_examples(dataloader)}") else: @@ -983,6 +983,7 @@ def evaluation_loop( if all_inputs is not None: all_inputs = nested_truncate(all_inputs, num_samples) else: + xm.rendezvous("eval_metrics") all_losses, all_preds, all_labels, all_inputs, num_samples = None, None, None, None, 0 # Metrics! diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 3e5959cf..efb5b762 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -1,29 +1,32 @@ -from dataclasses import dataclass +import copy import logging -import sys +import math import os -import copy +import random +import sys +from collections import Counter +from dataclasses import dataclass +from functools import partial +from glob import glob from typing import List -from adapters import AdapterArguments -from transformers import AutoTokenizer, HfArgumentParser, TrainingArguments, set_seed -from wtpsplit.train.evaluate import evaluate_sentence -from wtpsplit.train.adaptertrainer import AdapterTrainer -from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict -from wtpsplit.train.utils import Model -from wtpsplit.train.train import setup_logging, collate_fn -from wtpsplit.models import SubwordXLMForTokenClassification, SubwordXLMConfig -from tokenizers import AddedToken -import adapters import datasets import numpy as np -import math -from collections import Counter import torch -import random +from tokenizers import AddedToken +from transformers import AutoTokenizer, HfArgumentParser, TrainingArguments, set_seed + +import adapters import wandb -from glob import glob -from functools import partial +from adapters import AdapterArguments +from wtpsplit.evaluation.intrinsic import corrupt +from wtpsplit.models import SubwordXLMConfig, SubwordXLMForTokenClassification +from wtpsplit.train.adaptertrainer import AdapterTrainer +from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise +from wtpsplit.train.train import collate_fn, setup_logging +from wtpsplit.train.utils import Model +from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict +from tqdm import tqdm logger = logging.getLogger(__name__) @@ -58,6 +61,15 @@ class Args: use_subwords: bool = False freeze_classifier: bool = False clf_from_scratch: bool = False + unfreeze_ln: bool = False + do_process: bool = False + meta_clf: bool = False + wandb_project: str = "sentence" + # corruption + do_lowercase: bool = False + do_remove_punct: bool = False + eval_pairwise: bool = False + skip_eval_loss: bool = False def main(): @@ -73,21 +85,15 @@ def main(): set_seed(training_args.seed) num_labels = Constants.AUX_OFFSET + ( - (1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training or label_args.use_auxiliary else 0 + (1 + len(Constants.PUNCTUATION_CHARS)) + if (label_args.use_auxiliary or args.do_auxiliary_training or args.meta_clf) + else 0 ) config = SubwordXLMConfig.from_pretrained( args.model_name_or_path, num_labels=num_labels, ) - # since we pre-tokenize, running multiple epochs would iterate over data in same order - # hence, we duplicate & shuffle train data sentences in prepare_dataset - # and set num_train_epochs to 1 --> simulate multiple epochs, each with different sentence order - num_train_epochs = training_args.num_train_epochs - - training_args.num_train_epochs = 1 - training_args.evaluation_strategy = "steps" - def prepare_dataset( data, num_workers=1, @@ -95,46 +101,36 @@ def prepare_dataset( dataset_name="ud", shuffle=False, split="train", + do_lowercase=False, + do_remove_punct=False, ): # maybe we use more than 1 lang later at once. with training_args.main_process_first(): + # maybe we use more than 1 lang later at once. for lang in include_languages: if split == "train": dataset = data[lang]["sentence"][dataset_name]["meta"]["train_data"] elif split == "valid": dataset = data[lang]["sentence"][dataset_name]["data"] - data_list = [] if dataset is None: return None - for sample in dataset: - ends_with_punctuation = sample.endswith(tuple(Constants.PUNCTUATION_CHARS)) - data_list.append( + dataset = datasets.Dataset.from_list( + [ { - args.text_column: sample + "\n" if len(sample) > 0 and sample[-1] != "\n" else sample, + args.text_column: corrupt(sample, do_lowercase, do_remove_punct) + "\n" + if sample and sample[-1] != "\n" + else corrupt(sample, do_lowercase, do_remove_punct), "lang": lang, - "ends_with_punctuation": ends_with_punctuation, + "ends_with_punctuation": sample.endswith(tuple(Constants.PUNCTUATION_CHARS)), } - ) - dataset = datasets.Dataset.from_list(data_list) - with training_args.main_process_first(): - logger.warning(f"Loaded {len(dataset)} examples for {lang} {dataset_name} {split} dataset.") - - if include_languages is not None: - include_languages = set(include_languages) - - dataset = dataset.filter( - lambda example: example["lang"] in include_languages, - num_proc=args.preprocessing_num_workers, - ) + for sample in dataset + ] + ) with training_args.main_process_first(): - logger.warning(f"Filtered to {len(dataset)} examples.") + logger.warning(f"Loaded {len(dataset)} examples for {lang} {dataset_name} {split} dataset.") if shuffle: - # create n_epochs copies of the dataset and shuffle them individually - dataset = datasets.concatenate_datasets([dataset.shuffle(seed=i) for i in range(num_train_epochs)]) - - with training_args.main_process_first(): - logger.warning(f"Shuffled dataset to {len(dataset)} examples.") + dataset = dataset.shuffle(seed=42) # very likely not relevant / used only for the compound part if args.ignore_non_hyphen: @@ -347,20 +343,21 @@ def maybe_pad(text): # 1 wandb run for all language-dataset combinations if "wandb" in training_args.report_to and training_args.process_index == 0: - wandb.init(name=wandb_name, project="sentence-peft") + wandb.init(name=wandb_name, project=args.wandb_project, group=wandb_name) wandb.config.update(args) wandb.config.update(training_args) wandb.config.update(label_args) + wandb.config.update(adapter_args) for file in glob(os.path.join(os.path.dirname(__file__), "*.py")): wandb.save(os.path.abspath(file), policy="now") - for lang in data.keys(): + for lang in tqdm(data.keys(), desc="Language"): if lang in args.include_languages: for dataset_name in data[lang]["sentence"].keys(): # do model stuff here; otherwise, head params would be overwritten every time backbone = SubwordXLMForTokenClassification.from_pretrained( - args.model_name_or_path, config=config, ignore_mismatched_sizes=True + args.model_name_or_path, config=copy.deepcopy(config), ignore_mismatched_sizes=True ) backbone.config.base_model = args.base_model @@ -397,6 +394,8 @@ def maybe_pad(text): dataset_name=dataset_name, shuffle=False, split="valid", + do_lowercase=args.do_lowercase, + do_remove_punct=args.do_remove_punct, ) logger.warning(f"Valid ds for {lang} {dataset_name} has {len(valid_dataset)} examples.") @@ -407,22 +406,14 @@ def maybe_pad(text): dataset_name=dataset_name, shuffle=args.shuffle, split="train", + do_lowercase=args.do_lowercase, + do_remove_punct=args.do_remove_punct, ) if train_dataset is None or valid_dataset is None: logger.warning(f"Skipping {lang} {dataset_name} due to missing data.") continue logger.warning(f"Train ds for {lang} {dataset_name} has {len(train_dataset)} examples.") - # eval every actual epoch, based on steps - training_args.eval_steps = ( - len(train_dataset) - // ( - training_args.per_device_train_batch_size - * training_args.gradient_accumulation_steps - * num_train_epochs - ) - ) + 1 - # print some samples from the dataset count = 0 while count < 1: @@ -446,15 +437,44 @@ def compute_metrics(trainer): eval_data, model, stride=64, - block_size=512, ## TODO: change to args version x2? + block_size=512, + batch_size=training_args.per_device_eval_batch_size, + ) + metrics[f"{dataset_name}/{lang}/pr_auc"] = score + metrics[f"{dataset_name}/{lang}/f1"] = info["f1"] + metrics[f"{dataset_name}/{lang}/f1_best"] = info["f1_best"] + metrics[f"{dataset_name}/{lang}/threshold_best"] = info["threshold_best"] + if args.do_lowercase and args.do_remove_punct: + score_corrupted, info_corrupted = evaluate_sentence( + lang, + eval_data, + model, + stride=64, + block_size=512, batch_size=training_args.per_device_eval_batch_size, + do_lowercase=True, + do_remove_punct=True, ) - metrics[f"{lang}_{dataset_name}_pr_auc"] = score - metrics[f"{lang}_{dataset_name}_f1"] = info["f1"] - metrics[f"{lang}_{dataset_name}_f1_best"] = info["f1_best"] - metrics[f"{lang}_{dataset_name}_threshold_best"] = info["threshold_best"] + metrics[f"{dataset_name}/{lang}/corrupted/pr_auc"] = score_corrupted + metrics[f"{dataset_name}/{lang}/corrupted/f1"] = info_corrupted["f1"] + metrics[f"{dataset_name}/{lang}/corrupted/f1_best"] = info_corrupted["f1_best"] + metrics[f"{dataset_name}/{lang}/corrupted/threshold_best"] = info_corrupted["threshold_best"] + elif args.do_lowercase or args.do_remove_punct: + raise NotImplementedError("Currently we only corrupt both ways!") + if args.eval_pairwise: + score_pairwise, avg_acc = evaluate_sentence_pairwise( + lang, + eval_data, + model, + stride=args.eval_stride, + block_size=args.block_size, + batch_size=training_args.per_device_eval_batch_size, + threshold=0.1, + ) + metrics[f"{dataset_name}/{lang}/pairwise/pr_auc"] = score_pairwise + metrics[f"{dataset_name}/{lang}/pairwise/acc"] = avg_acc - return metrics + return metrics label_dict = ( get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) @@ -475,6 +495,19 @@ def compute_metrics(trainer): if args.clf_from_scratch: model.backbone.classifier = torch.nn.Linear(model.backbone.config.hidden_size, num_labels) + if args.unfreeze_ln: + for n, p in model.backbone.named_parameters(): + if "LayerNorm" in n: + p.requires_grad = True + + if args.meta_clf: + clf = model.backbone.classifier + model.backbone.classifier = torch.nn.Sequential( + clf, # original classifier - if frozen above, also frozen here + torch.nn.Linear(clf.out_features, 1), + ) + model.backbone.config.num_labels = 1 + trainer = AdapterTrainer( model, training_args, @@ -487,8 +520,10 @@ def compute_metrics(trainer): label_args=label_args, label_dict=label_dict, tokenizer=tokenizer, + add_lang_ids=False, ), - logging_suffix=f"{lang}_{dataset_name}", + logging_prefix=f"{dataset_name}/{lang}/", + skip_eval_loss=args.skip_eval_loss, ) trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) with training_args.main_process_first(): @@ -501,6 +536,39 @@ def compute_metrics(trainer): save_directory=os.path.join(training_args.output_dir, dataset_name, lang), with_head=True, ) + if training_args.local_rank == 0: + # eval here within 1 go + if args.do_lowercase and args.do_remove_punct: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --do_lowercase --do_remove_punct" + ) + elif args.eval_pairwise: + os.system( + f"python3 wtpsplit/evaluation/intrinsic_pairwise.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" + ) + elif "lines" in args.text_path: + if args.do_lowercase and args.do_remove_punct: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines --do_lowercase --do_remove_punct" + ) + else: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines" + ) + elif "verses" in args.text_path: + if args.do_lowercase and args.do_remove_punct: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses --do_lowercase --do_remove_punct" + ) + else: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses" + ) + else: + os.system( + f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" + ) + def _mp_fn(index): # For xla_spawn (TPUs) From 985c6c2ca4df5f548086bd5910fc1dafc65882fd Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 7 Mar 2024 20:29:04 +0000 Subject: [PATCH 076/262] more convenient eval --- configs/peft/adapter_lyrics.json | 12 ++++++------ wtpsplit/train/train_adapter.py | 32 +++++++++++--------------------- 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/configs/peft/adapter_lyrics.json b/configs/peft/adapter_lyrics.json index 8944a653..92afcf64 100644 --- a/configs/peft/adapter_lyrics.json +++ b/configs/peft/adapter_lyrics.json @@ -1,7 +1,6 @@ { "model_name_or_path": "xlmr-normal-p-v3", - "output_dir": "xlmr-3l-v3_adapter_rf32_ep20_v2_100-1k-10k_lines_corrupted", - "text_path": "data/lyrics_lines.pt", + "output_dir": "xlmr-3l-v3_adapter_rf32_ep30_v2_100-1k-10k_lines_np_no-sl", "block_size": 256, "eval_stride": 128, "do_train": true, @@ -10,11 +9,12 @@ "per_device_eval_batch_size": 32, "gradient_accumulation_steps": 1, "eval_accumulation_steps": 8, + "evaluation_strategy": "epoch", "dataloader_num_workers": 1, "preprocessing_num_workers": 1, "learning_rate": 3e-4, "fp16": false, - "num_train_epochs": 20, + "num_train_epochs": 30, "logging_steps": 50, "report_to": "wandb", "wandb_project": "lyrics-peft", @@ -35,7 +35,7 @@ "weight_decay": 0.0, "auxiliary_remove_prob": 0.0, "do_process": true, - "n_train_steps": [100, 1000, 10000], - "do_lowercase": true, - "do_remove_punct": true + "text_path": "data/lyrics_lines.pt", + "skip_eval_loss": false, + "shuffle": false } \ No newline at end of file diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index efb5b762..50942765 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -538,36 +538,26 @@ def compute_metrics(trainer): ) if training_args.local_rank == 0: # eval here within 1 go + cmd = "" if args.do_lowercase and args.do_remove_punct: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --do_lowercase --do_remove_punct" - ) + cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --do_lowercase --do_remove_punct" elif args.eval_pairwise: - os.system( - f"python3 wtpsplit/evaluation/intrinsic_pairwise.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" - ) + cmd = f"python3 wtpsplit/evaluation/intrinsic_pairwise.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" elif "lines" in args.text_path: if args.do_lowercase and args.do_remove_punct: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines --do_lowercase --do_remove_punct" - ) + cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines --do_lowercase --do_remove_punct" else: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines" - ) + cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines" elif "verses" in args.text_path: if args.do_lowercase and args.do_remove_punct: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses --do_lowercase --do_remove_punct" - ) + cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses --do_lowercase --do_remove_punct" else: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses" - ) + cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses" else: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" - ) + cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" + print(cmd) + os.system(cmd) + def _mp_fn(index): From b847d0b56d7df16fd43b2eb1861a869b369e804d Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 7 Mar 2024 20:34:35 +0000 Subject: [PATCH 077/262] fix name --- configs/peft/adapter_lyrics.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/configs/peft/adapter_lyrics.json b/configs/peft/adapter_lyrics.json index 92afcf64..02ef0e44 100644 --- a/configs/peft/adapter_lyrics.json +++ b/configs/peft/adapter_lyrics.json @@ -1,6 +1,6 @@ { "model_name_or_path": "xlmr-normal-p-v3", - "output_dir": "xlmr-3l-v3_adapter_rf32_ep30_v2_100-1k-10k_lines_np_no-sl", + "output_dir": "xlmr-3l-v3_adapter_rf32_ep30_v2_corrupted_np_no-sl", "block_size": 256, "eval_stride": 128, "do_train": true, @@ -37,5 +37,7 @@ "do_process": true, "text_path": "data/lyrics_lines.pt", "skip_eval_loss": false, - "shuffle": false + "shuffle": false, + "do_remove_punct": true, + "do_lowercase": true } \ No newline at end of file From e8800e5f48e676893579cce34bea7de8ab5988ac Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 9 Mar 2024 11:07:36 +0000 Subject: [PATCH 078/262] add chunkwise eval function (for lyrics etc.) --- wtpsplit/evaluation/intrinsic_list.py | 405 ++++++++++++++++++++++++++ 1 file changed, 405 insertions(+) create mode 100644 wtpsplit/evaluation/intrinsic_list.py diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py new file mode 100644 index 00000000..7beeacd0 --- /dev/null +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -0,0 +1,405 @@ +import copy +import json +import logging +import os +import time +from dataclasses import dataclass +from typing import List + +import h5py +import numpy as np +import torch +from datasets import load_dataset +from tqdm.auto import tqdm +from transformers import AutoModelForTokenClassification, HfArgumentParser + +import adapters +import wtpsplit.models # noqa: F401 +from wtpsplit.evaluation import evaluate_mixture, get_labels, token_to_char_probs, train_mixture +from wtpsplit.extract import PyTorchWrapper, extract +from wtpsplit.utils import Constants + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + + +@dataclass +class Args: + model_path: str + adapter_path: str = None + # eval data in the format: + # { + # "": { + # "sentence": { + # "": { + # "meta": { + # "train_data": ["train sentence 1", "train sentence 2"] + # }, + # "data": ["test sentence 1", "test sentence 2"] + # } + # } + # } + # } + # TODO: for songs/etc., maybe feed in each sample separately? + eval_data_path: str = "data/eval.pth" + valid_text_path: str = None # "data/sentence/valid.parquet" + device: str = "cpu" + block_size: int = 512 + stride: int = 64 + batch_size: int = 1 + include_langs: List[str] = None + custom_language_list: str = None + threshold: float = 0.01 + max_n_train_sentences: int = 10_000 + save_suffix: str = "" + do_lowercase: bool = False + do_remove_punct: bool = False + + +def process_logits_list(text, model, lang_code, block_size, stride, batch_size, verbose=True) -> List[np.ndarray]: + logits_list = [] + + for chunk in tqdm(text, disable=not verbose): + merged_chunk = Constants.SEPARATORS[lang_code].join(chunk) + # Extract necessary data + logits, offsets_mapping, tokenizer = extract( + [merged_chunk], + model, + lang_code=lang_code, + stride=args.stride, + block_size=block_size, + batch_size=1, + pad_last_batch=True, + ) + logits = logits[0] + if offsets_mapping is not None: + offsets_mapping = offsets_mapping[0] + + if "xlm" in model.config.model_type: + tokens = tokenizer.tokenize(merged_chunk, verbose=False) + + # padding is also removed here (via offset_mapping) + logits = token_to_char_probs(merged_chunk, tokens, logits, tokenizer, offsets_mapping) + logits_list.append(logits) + else: + raise NotImplementedError("Only XLM models are supported for now") + + return logits_list + + +def corrupt(text: str, do_lowercase: bool, do_remove_punct: bool): + if do_lowercase: + text = text.lower() + if do_remove_punct: + for punct in Constants.PUNCTUATION_CHARS: + text = text.replace(punct, "") + return text + + +def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: str = None): + logits_path = Constants.CACHE_DIR / "intrinsic_list" / f"{save_str}.h5" + + if not os.path.exists(Constants.CACHE_DIR / "intrinsic_list"): + os.makedirs(Constants.CACHE_DIR / "intrinsic_list") + + if args.custom_language_list is not None: + with open(args.custom_language_list, "r") as f: + # file is a csv: l1,l2,... + use_langs = f.read().strip().split(",") + else: + use_langs = Constants.LANGINFO.index + + total_test_time = 0 # Initialize total test processing time + + # TODO: revert to "a" + with h5py.File(logits_path, "w") as f, torch.no_grad(): + for lang_code in use_langs: + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + print(f"Processing {lang_code}...") + if lang_code not in f: + lang_group = f.create_group(lang_code) + else: + lang_group = f[lang_code] + + # eval data + for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): + try: + if args.adapter_path: + model.model.load_adapter( + args.adapter_path + "/" + dataset_name + "/" + lang_code, + set_active=True, + with_head=True, + load_as="text", + ) + if hasattr(model.model.config, "unfreeze_ln"): + if model.model.config.unfreeze_ln: + ln_dict = torch.load( + args.adapter_path + "/" + dataset_name + "/" + lang_code + "/ln_dict.pth" + ) + for n, p in model.backbone.named_parameters(): + if "LayerNorm" in n: + p.data = ln_dict[n].data + except Exception as e: + print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") + continue + print(dataset_name) + if dataset_name not in lang_group: + dset_group = lang_group.create_group(dataset_name) + else: + dset_group = lang_group[dataset_name] + + if "test_logits" not in dset_group: + test_sentences = dataset["data"] + test_sentences = [ + corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + for sentence in test_sentences + ] + # test_text = Constants.SEPARATORS[lang_code].join(test_sentences) + + start_time = time.time() # Start timing for test logits processing + test_logits = process_logits_list( + test_sentences, + model, + lang_code, + args.block_size, + args.stride, + args.batch_size, + ) + end_time = time.time() # End timing for test logits processing + total_test_time += end_time - start_time # Accumulate test processing time + test_logit_lengths = [] + # store start and end indices for each pair, used later to slice the logits + all_logit_lengths = np.append(0, np.cumsum([len(logits) for logits in test_logits])) + # append tuple of start and end indices for each pair + for i in range(len(test_logits)): + test_logit_lengths.append((all_logit_lengths[i], all_logit_lengths[i + 1] - 1)) + + test_logits = np.concatenate(test_logits) + test_labels = [ + get_labels(lang_code, test_chunk, after_space=False)[:-1] for test_chunk in test_sentences + ] + test_labels = np.append(np.concatenate(test_labels), 0) + assert len(test_labels) == len(test_logits) + 1 + + dset_group.create_dataset("test_logits", data=test_logits) + dset_group.create_dataset("test_labels", data=test_labels) + dset_group.create_dataset("test_logit_lengths", data=test_logit_lengths) + + train_sentences = dataset["meta"].get("train_data") + if train_sentences is not None and "train_logits" not in dset_group: + train_sentences = [ + corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + for sentence in train_sentences + ] + train_sentences = train_sentences[: args.max_n_train_sentences] + + train_logits = process_logits_list( + train_sentences, + model, + lang_code, + args.block_size, + args.stride, + args.batch_size, + ) + train_logit_lengths = [] + # store start and end indices for each pair, used later to slice the logits + all_logit_lengths = np.append(0, np.cumsum([len(logits) for logits in train_logits])) + # append tuple of start and end indices for each pair + for i in range(len(train_logits)): + train_logit_lengths.append((all_logit_lengths[i], all_logit_lengths[i + 1] - 1)) + + train_logits = np.concatenate(train_logits) + train_labels = [ + get_labels(lang_code, train_chunk, after_space=False)[:-1] for train_chunk in train_sentences + ] + train_labels = np.append(np.concatenate(train_labels), 0) + assert len(train_labels) == len(train_logits) + 1 + + dset_group.create_dataset("train_logits", data=train_logits) + dset_group.create_dataset("train_labels", data=train_labels) + + end_time = time.time() + return h5py.File(logits_path, "r"), total_test_time / 60 # to minutes + + +def compute_statistics(values): + if not values: # Check for empty values list + return {"mean": None, "median": None, "std": None, "min": None, "min_lang": None, "max": None, "max_lang": None} + + scores, langs = zip(*values) # Unpack scores and languages + min_index = np.argmin(scores) + max_index = np.argmax(scores) + return { + "mean": np.mean(scores), + "median": np.median(scores), + "std": np.std(scores), + "min": scores[min_index], + "min_lang": langs[min_index], + "max": scores[max_index], + "max_lang": langs[max_index], + } + + +def main(args): + save_model_path = args.model_path + if args.adapter_path: + save_model_path = args.adapter_path + save_str = ( + f"{save_model_path.replace('/','_')}_b{args.block_size}_s{args.stride}_u{args.threshold}{args.save_suffix}" + ) + if args.do_lowercase: + save_str += "_lc" + if args.do_remove_punct: + save_str += "_rmp" + + eval_data = torch.load(args.eval_data_path) + if args.valid_text_path is not None: + valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") + else: + valid_data = None + + print("Loading model...") + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) + if args.adapter_path: + model_type = model.model.config.model_type + # adapters need xlm-roberta as model type. + model.model.config.model_type = "xlm-roberta" + adapters.init(model.model) + # reset model type (used later) + model.model.config.model_type = model_type + if "meta-clf" in args.adapter_path: + clf = model.model.classifier + model.model.classifier = torch.nn.Sequential(clf, torch.nn.Linear(clf.out_features, 1)) + + # first, logits for everything. + f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) + + # now, compute the intrinsic scores. + results = {} + clfs = {} + # Initialize lists to store scores for each metric across all languages + u_scores, t_scores, punct_scores = [], [], [] + + for lang_code, dsets in tqdm(eval_data.items()): + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + print(f"Predicting {lang_code}...") + results[lang_code] = {} + clfs[lang_code] = {} + + for dataset_name, dataset in dsets["sentence"].items(): + sentences = dataset["data"] + sentences = [ + corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + for sentence in sentences + ] + # check if f[lang_code][dataset_name] exists + if lang_code not in f or dataset_name not in f[lang_code]: + continue + + if "train_logits" in f[lang_code][dataset_name]: + feature_indices = None + clf = train_mixture( + [lang_code], + f[lang_code][dataset_name]["train_logits"][:], + f[lang_code][dataset_name]["train_labels"][:], + features=feature_indices, + ) + if clf[0] is not None: + print(clf) + + score_t = [] + score_punct = [] + for i, chunk in enumerate(sentences): + start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] + single_score_t, single_score_punct, info = evaluate_mixture( + lang_code, + f[lang_code][dataset_name]["test_logits"][:][start:end], + list(chunk), + *clf, + ) + score_t.append(single_score_t) + score_punct.append(single_score_punct) + + clfs[lang_code][dataset_name] = clf + + clf = list(copy.deepcopy(clf)) + clf[-1] = args.threshold + else: + score_t = score_punct = None + + score_u = [] + for i, chunk in enumerate(sentences): + start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] + single_score_u, _, info = evaluate_mixture( + lang_code, + f[lang_code][dataset_name]["test_logits"][:][start:end], + list(chunk), + *clf, + ) + score_u.append(single_score_u) + + score_u = np.mean(score_u) + score_t = np.mean(score_t) if score_t else None + score_punct = np.mean(score_punct) if score_punct else None + + results[lang_code][dataset_name] = { + "u": score_u, + "t": score_t, + "punct": score_punct, + } + + # just for printing + score_t = score_t or 0.0 + score_punct = score_punct or 0.0 + + u_scores.append((score_u, lang_code)) + t_scores.append((score_t, lang_code)) + punct_scores.append((score_punct, lang_code)) + + print(f"{lang_code} {dataset_name} {score_u:.3f} {score_t:.3f} {score_punct:.3f}") + + # Compute statistics for each metric across all languages + results_avg = { + "u": compute_statistics(u_scores), + "t": compute_statistics(t_scores), + "punct": compute_statistics(punct_scores), + "include_langs": args.include_langs, + } + + # sio.dump( + # clfs, + # open( + # Constants.CACHE_DIR / "intrinsic_list" / f"{save_str}.skops", + # "wb", + # ), + # ) + json.dump( + results, + open( + Constants.CACHE_DIR / "intrinsic_list" / f"{save_str}.json", + "w", + ), + indent=4, + ) + + # Write results_avg to JSON + json.dump( + results_avg, + open( + Constants.CACHE_DIR / "intrinsic_list" / f"{save_str}_AVG.json", + "w", + ), + indent=4, + ) + os.remove(f.filename) + return results, results_avg, total_test_time + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + results, results_avg, total_test_time = main(args) + print(total_test_time) From 32b9c14829d3bad7dd78edb6b1ae0b412fdab826 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 9 Mar 2024 11:39:01 +0000 Subject: [PATCH 079/262] ADP train with single samples --- wtpsplit/train/train_adapter.py | 148 +++++++++++++++++++++----------- 1 file changed, 100 insertions(+), 48 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 50942765..a90daa51 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -114,18 +114,37 @@ def prepare_dataset( dataset = data[lang]["sentence"][dataset_name]["data"] if dataset is None: return None - dataset = datasets.Dataset.from_list( - [ - { - args.text_column: corrupt(sample, do_lowercase, do_remove_punct) + "\n" - if sample and sample[-1] != "\n" - else corrupt(sample, do_lowercase, do_remove_punct), - "lang": lang, - "ends_with_punctuation": sample.endswith(tuple(Constants.PUNCTUATION_CHARS)), - } - for sample in dataset - ] - ) + + if args.one_sample_per_line: + processed_dataset = [] + for chunk in dataset: + processed_chunk = {} + processed_chunk["lang"] = lang + processed_chunk["ends_with_punctuation"] = chunk[-1].endswith( + tuple(Constants.PUNCTUATION_CHARS) + ) + # join all chunks + processed_chunk[args.text_column] = "\n".join(chunk) + # corrupt + processed_chunk[args.text_column] = corrupt( + processed_chunk[args.text_column], do_lowercase, do_remove_punct + ) + processed_dataset.append(processed_chunk) + dataset = datasets.Dataset.from_list(processed_dataset) + + else: + dataset = datasets.Dataset.from_list( + [ + { + args.text_column: corrupt(sample, do_lowercase, do_remove_punct) + "\n" + if sample and sample[-1] != "\n" + else corrupt(sample, do_lowercase, do_remove_punct), + "lang": lang, + "ends_with_punctuation": sample.endswith(tuple(Constants.PUNCTUATION_CHARS)), + } + for sample in dataset + ] + ) with training_args.main_process_first(): logger.warning(f"Loaded {len(dataset)} examples for {lang} {dataset_name} {split} dataset.") @@ -330,6 +349,18 @@ def maybe_pad(text): # a bit hacky but oh well, only drop if sentence remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], ) + else: + if args.use_subwords: + # add back the special tokens for every sample + with training_args.main_process_first(): + dataset = dataset.map( + lambda x: { + "input_ids": [ + tokenizer.convert_tokens_to_ids(tokenizer.bos_token) + ] + x["input_ids"] + [tokenizer.convert_tokens_to_ids(tokenizer.eos_token)] + }, + batched=False, + ) return dataset @@ -432,35 +463,44 @@ def compute_metrics(trainer): model = trainer._wrap_model(trainer.model, training=False) with training_args.main_process_first(): - score, info = evaluate_sentence( - lang, - eval_data, - model, - stride=64, - block_size=512, - batch_size=training_args.per_device_eval_batch_size, - ) + if args.one_sample_per_line: + score = [] + info = [] + for chunk in eval_data: + score_chunk, info_chunk = evaluate_sentence( + lang, + chunk, + model, + stride=64, + block_size=512, + batch_size=training_args.per_device_eval_batch_size, + do_lowercase=args.do_lowercase, + do_remove_punct=args.do_remove_punct, + ) + score.append(score_chunk) + info.append(info_chunk) + + score = np.mean(score) + info = { + "f1": np.mean([i["f1"] for i in info]), + "f1_best": np.mean([i["f1_best"] for i in info]), + "threshold_best": np.mean([i["threshold_best"] for i in info]), + } + else: + score, info = evaluate_sentence( + lang, + eval_data, + model, + stride=64, + block_size=512, + batch_size=training_args.per_device_eval_batch_size, + do_lowercase=args.do_lowercase, + do_remove_punct=args.do_remove_punct, + ) metrics[f"{dataset_name}/{lang}/pr_auc"] = score metrics[f"{dataset_name}/{lang}/f1"] = info["f1"] metrics[f"{dataset_name}/{lang}/f1_best"] = info["f1_best"] metrics[f"{dataset_name}/{lang}/threshold_best"] = info["threshold_best"] - if args.do_lowercase and args.do_remove_punct: - score_corrupted, info_corrupted = evaluate_sentence( - lang, - eval_data, - model, - stride=64, - block_size=512, - batch_size=training_args.per_device_eval_batch_size, - do_lowercase=True, - do_remove_punct=True, - ) - metrics[f"{dataset_name}/{lang}/corrupted/pr_auc"] = score_corrupted - metrics[f"{dataset_name}/{lang}/corrupted/f1"] = info_corrupted["f1"] - metrics[f"{dataset_name}/{lang}/corrupted/f1_best"] = info_corrupted["f1_best"] - metrics[f"{dataset_name}/{lang}/corrupted/threshold_best"] = info_corrupted["threshold_best"] - elif args.do_lowercase or args.do_remove_punct: - raise NotImplementedError("Currently we only corrupt both ways!") if args.eval_pairwise: score_pairwise, avg_acc = evaluate_sentence_pairwise( lang, @@ -507,6 +547,13 @@ def compute_metrics(trainer): torch.nn.Linear(clf.out_features, 1), ) model.backbone.config.num_labels = 1 + + if args.one_sample_per_line: + # eval only 10x during the entire training + training_args.evaluation_strategy = "steps" + training_args.eval_steps = max(len(train_dataset) // training_args.per_device_train_batch_size, 5) + # log twice as often + training_args.logging_steps = training_args.eval_steps // 2 trainer = AdapterTrainer( model, @@ -539,27 +586,32 @@ def compute_metrics(trainer): if training_args.local_rank == 0: # eval here within 1 go cmd = "" - if args.do_lowercase and args.do_remove_punct: - cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --do_lowercase --do_remove_punct" - elif args.eval_pairwise: - cmd = f"python3 wtpsplit/evaluation/intrinsic_pairwise.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" - elif "lines" in args.text_path: + + if args.eval_pairwise: + eval_function = "intrinsic_pairwise" + elif args.one_sample_per_line: + eval_function = "intrinsic_list" + else: + eval_function = "intrinsic" + cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" + if "lines" in args.text_path: if args.do_lowercase and args.do_remove_punct: - cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines --do_lowercase --do_remove_punct" + cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines --do_lowercase --do_remove_punct" else: - cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines" + cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines" elif "verses" in args.text_path: if args.do_lowercase and args.do_remove_punct: - cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses --do_lowercase --do_remove_punct" + cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses --do_lowercase --do_remove_punct" else: - cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses" + cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses" + elif args.do_lowercase and args.do_remove_punct: + cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --do_lowercase --do_remove_punct" else: - cmd = f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" + cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" print(cmd) os.system(cmd) - def _mp_fn(index): # For xla_spawn (TPUs) main() From 61ef0de3c3d0fa23eeb6005e8e8518dfbfb9919f Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 10 Mar 2024 20:30:26 +0000 Subject: [PATCH 080/262] simplify score calculation --- wtpsplit/evaluation/intrinsic_list.py | 2 +- wtpsplit/train/train_adapter.py | 66 +++++++++------------------ 2 files changed, 23 insertions(+), 45 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py index 7beeacd0..d2e938ba 100644 --- a/wtpsplit/evaluation/intrinsic_list.py +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -44,7 +44,7 @@ class Args: eval_data_path: str = "data/eval.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" - block_size: int = 512 + block_size: int = 510 stride: int = 64 batch_size: int = 1 include_langs: List[str] = None diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index a90daa51..adafd153 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -464,55 +464,33 @@ def compute_metrics(trainer): with training_args.main_process_first(): if args.one_sample_per_line: - score = [] - info = [] - for chunk in eval_data: - score_chunk, info_chunk = evaluate_sentence( - lang, - chunk, - model, - stride=64, - block_size=512, - batch_size=training_args.per_device_eval_batch_size, - do_lowercase=args.do_lowercase, - do_remove_punct=args.do_remove_punct, - ) - score.append(score_chunk) - info.append(info_chunk) - - score = np.mean(score) - info = { - "f1": np.mean([i["f1"] for i in info]), - "f1_best": np.mean([i["f1_best"] for i in info]), - "threshold_best": np.mean([i["threshold_best"] for i in info]), - } - else: - score, info = evaluate_sentence( - lang, - eval_data, - model, - stride=64, - block_size=512, - batch_size=training_args.per_device_eval_batch_size, - do_lowercase=args.do_lowercase, - do_remove_punct=args.do_remove_punct, - ) - metrics[f"{dataset_name}/{lang}/pr_auc"] = score - metrics[f"{dataset_name}/{lang}/f1"] = info["f1"] - metrics[f"{dataset_name}/{lang}/f1_best"] = info["f1_best"] - metrics[f"{dataset_name}/{lang}/threshold_best"] = info["threshold_best"] - if args.eval_pairwise: - score_pairwise, avg_acc = evaluate_sentence_pairwise( + eval_data = [item for sublist in eval_data for item in sublist] + score, info = evaluate_sentence( lang, eval_data, model, - stride=args.eval_stride, - block_size=args.block_size, + stride=64, + block_size=512, batch_size=training_args.per_device_eval_batch_size, - threshold=0.1, + do_lowercase=args.do_lowercase, + do_remove_punct=args.do_remove_punct, ) - metrics[f"{dataset_name}/{lang}/pairwise/pr_auc"] = score_pairwise - metrics[f"{dataset_name}/{lang}/pairwise/acc"] = avg_acc + metrics[f"{dataset_name}/{lang}/pr_auc"] = score + metrics[f"{dataset_name}/{lang}/f1"] = info["f1"] + metrics[f"{dataset_name}/{lang}/f1_best"] = info["f1_best"] + metrics[f"{dataset_name}/{lang}/threshold_best"] = info["threshold_best"] + if args.eval_pairwise: + score_pairwise, avg_acc = evaluate_sentence_pairwise( + lang, + eval_data, + model, + stride=args.eval_stride, + block_size=args.block_size, + batch_size=training_args.per_device_eval_batch_size, + threshold=0.1, + ) + metrics[f"{dataset_name}/{lang}/pairwise/pr_auc"] = score_pairwise + metrics[f"{dataset_name}/{lang}/pairwise/acc"] = avg_acc return metrics From f804804dc1d6b06eb73bfe3a606d5e389a3a3ecc Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 12 Mar 2024 07:58:30 +0000 Subject: [PATCH 081/262] fix corruption --- wtpsplit/evaluation/intrinsic_list.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py index d2e938ba..8126ecee 100644 --- a/wtpsplit/evaluation/intrinsic_list.py +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -152,11 +152,14 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"] + test_sentences = [ - corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - for sentence in test_sentences + [ + corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + for sentence in chunk + ] + for chunk in test_sentences ] - # test_text = Constants.SEPARATORS[lang_code].join(test_sentences) start_time = time.time() # Start timing for test logits processing test_logits = process_logits_list( @@ -190,8 +193,11 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st train_sentences = dataset["meta"].get("train_data") if train_sentences is not None and "train_logits" not in dset_group: train_sentences = [ - corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - for sentence in train_sentences + [ + corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + for sentence in chunk + ] + for chunk in train_sentences ] train_sentences = train_sentences[: args.max_n_train_sentences] @@ -293,8 +299,11 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"] sentences = [ - corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - for sentence in sentences + [ + corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + for sentence in chunk + ] + for chunk in sentences ] # check if f[lang_code][dataset_name] exists if lang_code not in f or dataset_name not in f[lang_code]: From e380c2a0c0ac8f6570cfca2202445c79bd4dddc2 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 26 Mar 2024 21:18:48 +0000 Subject: [PATCH 082/262] flatten list, add strip flag --- wtpsplit/evaluation/intrinsic.py | 14 ++++++++++++++ wtpsplit/train/train_adapter.py | 7 ++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 15b6aa6e..1c6e0b6e 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -54,6 +54,7 @@ class Args: save_suffix: str = "" do_lowercase: bool = False do_remove_punct: bool = False + do_strip: bool = False def process_logits(text, model, lang_code, args): @@ -166,6 +167,11 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"] + # if list of lists: flatten + if isinstance(test_sentences[0], list): + test_sentences = [item for sublist in test_sentences for item in sublist] + if args.do_strip: + test_sentences = [sentence.lstrip("-").strip() for sentence in test_sentences] test_sentences = [ corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) for sentence in test_sentences @@ -184,6 +190,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st train_sentences = dataset["meta"].get("train_data") if train_sentences is not None and "train_logits" not in dset_group: + if isinstance(train_sentences[0], list): + train_sentences = [item for sublist in train_sentences for item in sublist] + if args.do_strip: + train_sentences = [sentence.lstrip("-").strip() for sentence in train_sentences] train_sentences = [ corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) for sentence in train_sentences @@ -272,6 +282,10 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"] + if isinstance(sentences[0], list): + sentences = [item for sublist in sentences for item in sublist] + if args.do_strip: + sentences = [sentence.lstrip("-").strip() for sentence in sentences] sentences = [ corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) for sentence in sentences diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index adafd153..fb36b7b7 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -133,6 +133,9 @@ def prepare_dataset( dataset = datasets.Dataset.from_list(processed_dataset) else: + if isinstance(dataset[0], list): + # flatten + dataset = [item for sublist in dataset for item in sublist] dataset = datasets.Dataset.from_list( [ { @@ -465,6 +468,8 @@ def compute_metrics(trainer): with training_args.main_process_first(): if args.one_sample_per_line: eval_data = [item for sublist in eval_data for item in sublist] + elif isinstance(eval_data[0], list): + eval_data = [item for sublist in eval_data for item in sublist] score, info = evaluate_sentence( lang, eval_data, @@ -579,7 +584,7 @@ def compute_metrics(trainer): cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines" elif "verses" in args.text_path: if args.do_lowercase and args.do_remove_punct: - cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses --do_lowercase --do_remove_punct" + cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n_single.pt --save_suffix verses --do_lowercase --do_remove_punct" else: cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses" elif args.do_lowercase and args.do_remove_punct: From 76d58ca29b287b98fa7154489cab4bb2ec222dab Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 26 Mar 2024 21:19:07 +0000 Subject: [PATCH 083/262] undo parallel training changes --- wtpsplit/train/adaptertrainer.py | 988 +++++++++++++++---------------- 1 file changed, 494 insertions(+), 494 deletions(-) diff --git a/wtpsplit/train/adaptertrainer.py b/wtpsplit/train/adaptertrainer.py index 5a735471..9725e4df 100644 --- a/wtpsplit/train/adaptertrainer.py +++ b/wtpsplit/train/adaptertrainer.py @@ -306,490 +306,490 @@ def _load_best_model(self): model.load_adapter_fusion(fusion_dir) model.to(self.args.device) - def _inner_training_loop( - self, batch_size=None, args=None, resume_from_checkpoint=None, trial=None, ignore_keys_for_eval=None - ): - self._train_batch_size = batch_size - # Data loader and number of training steps - train_dataloader = self.get_train_dataloader() - - # Setting up training control variables: - # number of training epochs: num_train_epochs - # number of training steps per epoch: num_update_steps_per_epoch - # total number of training steps to execute: max_steps - total_train_batch_size = args.train_batch_size * args.gradient_accumulation_steps * args.world_size - - len_dataloader = None - if has_length(train_dataloader): - len_dataloader = len(train_dataloader) - num_update_steps_per_epoch = len_dataloader // args.gradient_accumulation_steps - num_update_steps_per_epoch = max(num_update_steps_per_epoch, 1) - num_examples = self.num_examples(train_dataloader) - if args.max_steps > 0: - max_steps = args.max_steps - num_train_epochs = args.max_steps // num_update_steps_per_epoch + int( - args.max_steps % num_update_steps_per_epoch > 0 - ) - # May be slightly incorrect if the last batch in the training dataloader has a smaller size but it's - # the best we can do. - num_train_samples = args.max_steps * total_train_batch_size - else: - max_steps = math.ceil(args.num_train_epochs * num_update_steps_per_epoch) - num_train_epochs = math.ceil(args.num_train_epochs) - num_train_samples = self.num_examples(train_dataloader) * args.num_train_epochs - elif args.max_steps > 0: # Rely on max_steps when dataloader does not have a working size - max_steps = args.max_steps - # Setting a very large number of epochs so we go as many times as necessary over the iterator. - num_train_epochs = sys.maxsize - num_update_steps_per_epoch = max_steps - num_examples = total_train_batch_size * args.max_steps - num_train_samples = args.max_steps * total_train_batch_size - else: - raise ValueError( - "args.max_steps must be set to a positive value if dataloader does not have a length, was" - f" {args.max_steps}" - ) - - # Compute absolute values for logging, eval, and save if given as ratio - if args.logging_steps and args.logging_steps < 1: - args.logging_steps = math.ceil(max_steps * args.logging_steps) - if args.eval_steps and args.eval_steps < 1: - args.eval_steps = math.ceil(max_steps * args.eval_steps) - if args.save_steps and args.save_steps < 1: - args.save_steps = math.ceil(max_steps * args.save_steps) - - if DebugOption.UNDERFLOW_OVERFLOW in self.args.debug: - if self.args.n_gpu > 1: - # nn.DataParallel(model) replicates the model, creating new variables and module - # references registered here no longer work on other gpus, breaking the module - raise ValueError( - "Currently --debug underflow_overflow is not supported under DP. Please use DDP" - " (torch.distributed.launch)." - ) - else: - debug_overflow = DebugUnderflowOverflow(self.model) # noqa - - delay_optimizer_creation = ( - self.sharded_ddp is not None - and self.sharded_ddp != ShardedDDPOption.SIMPLE - or is_sagemaker_mp_enabled() - or self.fsdp is not None - ) - if args.deepspeed: - deepspeed_engine, optimizer, lr_scheduler = deepspeed_init( - self, num_training_steps=max_steps, resume_from_checkpoint=resume_from_checkpoint - ) - self.model = deepspeed_engine.module - self.model_wrapped = deepspeed_engine - self.deepspeed = deepspeed_engine - self.optimizer = optimizer - self.lr_scheduler = lr_scheduler - elif not delay_optimizer_creation: - self.create_optimizer_and_scheduler(num_training_steps=max_steps) - - self.state = TrainerState() - self.state.is_hyper_param_search = trial is not None - - # Activate gradient checkpointing if needed - if args.gradient_checkpointing: - self.model.gradient_checkpointing_enable() - - model = self._wrap_model(self.model_wrapped) - - if is_sagemaker_mp_enabled() and resume_from_checkpoint is not None: - self._load_from_checkpoint(resume_from_checkpoint, model) - - # for the rest of this function `model` is the outside model, whether it was wrapped or not - if model is not self.model: - self.model_wrapped = model - - if delay_optimizer_creation: - self.create_optimizer_and_scheduler(num_training_steps=max_steps) - - # Check if saved optimizer or scheduler states exist - self._load_optimizer_and_scheduler(resume_from_checkpoint) - - # important: at this point: - # self.model is the Transformers Model - # self.model_wrapped is DDP(Transformers Model), Deepspeed(Transformers Model), etc. - - # Train! - # MODIFIED: changed to warn, added device - logger.warning(f"***** Running training on {xm.get_ordinal()}*****") - logger.warning(f" Num examples = {num_examples:,}") - logger.warning(f" Num Epochs = {num_train_epochs:,}") - logger.info(f" Instantaneous batch size per device = {args.per_device_train_batch_size:,}") - logger.info(f" Total train batch size (w. parallel, distributed & accumulation) = {total_train_batch_size:,}") - logger.info(f" Gradient Accumulation steps = {args.gradient_accumulation_steps}") - logger.warning(f" Total optimization steps = {max_steps:,}") - logger.warning(f" Eval steps = {args.eval_steps}") - logger.info(f" Number of trainable parameters = {get_model_param_count(model, trainable_only=True):,}") - - self.state.epoch = 0 - start_time = time.time() - epochs_trained = 0 - steps_trained_in_current_epoch = 0 - steps_trained_progress_bar = None - - # Check if continuing training from a checkpoint - if resume_from_checkpoint is not None and os.path.isfile( - os.path.join(resume_from_checkpoint, TRAINER_STATE_NAME) - ): - self.state = TrainerState.load_from_json(os.path.join(resume_from_checkpoint, TRAINER_STATE_NAME)) - epochs_trained = self.state.global_step // num_update_steps_per_epoch - if not args.ignore_data_skip: - steps_trained_in_current_epoch = self.state.global_step % (num_update_steps_per_epoch) - steps_trained_in_current_epoch *= args.gradient_accumulation_steps - else: - steps_trained_in_current_epoch = 0 - - logger.info(" Continuing training from checkpoint, will skip to saved global_step") - logger.info(f" Continuing training from epoch {epochs_trained}") - logger.info(f" Continuing training from global step {self.state.global_step}") - if not args.ignore_data_skip: - if skip_first_batches is None: - logger.info( - f" Will skip the first {epochs_trained} epochs then the first" - f" {steps_trained_in_current_epoch} batches in the first epoch. If this takes a lot of time," - " you can install the latest version of Accelerate with `pip install -U accelerate`.You can" - " also add the `--ignore_data_skip` flag to your launch command, but you will resume the" - " training on data already seen by your model." - ) - else: - logger.info( - f" Will skip the first {epochs_trained} epochs then the first" - f" {steps_trained_in_current_epoch} batches in the first epoch." - ) - if self.is_local_process_zero() and not args.disable_tqdm and skip_first_batches is None: - steps_trained_progress_bar = tqdm(total=steps_trained_in_current_epoch) - steps_trained_progress_bar.set_description("Skipping the first batches") - - # Update the references - self.callback_handler.model = self.model - self.callback_handler.optimizer = self.optimizer - self.callback_handler.lr_scheduler = self.lr_scheduler - self.callback_handler.train_dataloader = train_dataloader - if self.hp_name is not None and self._trial is not None: - # use self._trial because the SigOpt/Optuna hpo only call `_hp_search_setup(trial)` instead of passing trial - # parameter to Train when using DDP. - self.state.trial_name = self.hp_name(self._trial) - if trial is not None: - assignments = trial.assignments if self.hp_search_backend == HPSearchBackend.SIGOPT else trial - self.state.trial_params = hp_params(assignments) - else: - self.state.trial_params = None - # This should be the same if the state has been saved but in case the training arguments changed, it's safer - # to set this after the load. - self.state.max_steps = max_steps - self.state.num_train_epochs = num_train_epochs - self.state.is_local_process_zero = self.is_local_process_zero() - self.state.is_world_process_zero = self.is_world_process_zero() - - # tr_loss is a tensor to avoid synchronization of TPUs through .item() - tr_loss = torch.tensor(0.0).to(args.device) - # _total_loss_scalar is updated everytime .item() has to be called on tr_loss and stores the sum of all losses - self._total_loss_scalar = 0.0 - self._globalstep_last_logged = self.state.global_step - model.zero_grad() - - self.control = self.callback_handler.on_train_begin(args, self.state, self.control) - - # Skip the first epochs_trained epochs to get the random state of the dataloader at the right point. - if not args.ignore_data_skip: - for epoch in range(epochs_trained): - is_random_sampler = hasattr(train_dataloader, "sampler") and isinstance( - train_dataloader.sampler, RandomSampler - ) - if is_torch_less_than_1_11 or not is_random_sampler: - # We just need to begin an iteration to create the randomization of the sampler. - # That was before PyTorch 1.11 however... - for _ in train_dataloader: - break - else: - # Otherwise we need to call the whooooole sampler cause there is some random operation added - # AT THE VERY END! - _ = list(train_dataloader.sampler) - - total_batched_samples = 0 - for epoch in range(epochs_trained, num_train_epochs): - if isinstance(train_dataloader, DataLoader) and isinstance(train_dataloader.sampler, DistributedSampler): - train_dataloader.sampler.set_epoch(epoch) - elif hasattr(train_dataloader, "dataset") and isinstance(train_dataloader.dataset, IterableDatasetShard): - train_dataloader.dataset.set_epoch(epoch) - - # if is_torch_tpu_available(): - # parallel_loader = pl.MpDeviceLoader(train_dataloader, args.device) # .per_device_loader(args.device) - # epoch_iterator = parallel_loader - # else: - # MODIFIED: no parallel loader - epoch_iterator = train_dataloader - - # Reset the past mems state at the beginning of each epoch if necessary. - if args.past_index >= 0: - self._past = None - - steps_in_epoch = ( - len(epoch_iterator) if len_dataloader is not None else args.max_steps * args.gradient_accumulation_steps - ) - self.control = self.callback_handler.on_epoch_begin(args, self.state, self.control) - - if epoch == epochs_trained and resume_from_checkpoint is not None and steps_trained_in_current_epoch == 0: - self._load_rng_state(resume_from_checkpoint) - - rng_to_sync = False - steps_skipped = 0 - if skip_first_batches is not None and steps_trained_in_current_epoch > 0: - epoch_iterator = skip_first_batches(epoch_iterator, steps_trained_in_current_epoch) - steps_skipped = steps_trained_in_current_epoch - steps_trained_in_current_epoch = 0 - rng_to_sync = True - - step = -1 - for step, inputs in enumerate(epoch_iterator): - total_batched_samples += 1 - if rng_to_sync: - self._load_rng_state(resume_from_checkpoint) - rng_to_sync = False - - # Skip past any already trained steps if resuming training - if steps_trained_in_current_epoch > 0: - steps_trained_in_current_epoch -= 1 - if steps_trained_progress_bar is not None: - steps_trained_progress_bar.update(1) - if steps_trained_in_current_epoch == 0: - self._load_rng_state(resume_from_checkpoint) - continue - elif steps_trained_progress_bar is not None: - steps_trained_progress_bar.close() - steps_trained_progress_bar = None - - if step % args.gradient_accumulation_steps == 0: - self.control = self.callback_handler.on_step_begin(args, self.state, self.control) - - if ( - (total_batched_samples % args.gradient_accumulation_steps != 0) - and args.parallel_mode == ParallelMode.DISTRIBUTED - and args._no_sync_in_gradient_accumulation - and hasattr(model, "no_sync") - ): - # Avoid unnecessary DDP synchronization since there will be no backward pass on this example. - with model.no_sync(): - tr_loss_step = self.training_step(model, inputs) - else: - tr_loss_step = self.training_step(model, inputs) - - if ( - args.logging_nan_inf_filter - and not is_torch_tpu_available() - and (torch.isnan(tr_loss_step) or torch.isinf(tr_loss_step)) - ): - # if loss is nan or inf simply add the average of previous logged losses - tr_loss += tr_loss / (1 + self.state.global_step - self._globalstep_last_logged) - else: - tr_loss += tr_loss_step - - self.current_flos += float(self.floating_point_ops(inputs)) - - # Optimizer step for deepspeed must be called on every step regardless of the value of gradient_accumulation_steps - if self.deepspeed: - self.deepspeed.step() - - if total_batched_samples % args.gradient_accumulation_steps == 0 or ( - # last step in epoch but step is always smaller than gradient_accumulation_steps - steps_in_epoch <= args.gradient_accumulation_steps and (step + 1) == steps_in_epoch - ): - # Gradient clipping - if args.max_grad_norm is not None and args.max_grad_norm > 0 and not self.deepspeed: - # deepspeed does its own clipping - - if self.do_grad_scaling: - # Reduce gradients first for XLA - if is_torch_tpu_available(): - gradients = xm._fetch_gradients(self.optimizer) - xm.all_reduce("sum", gradients, scale=1.0 / xm.xrt_world_size()) - # AMP: gradients need unscaling - self.scaler.unscale_(self.optimizer) - - if is_sagemaker_mp_enabled() and args.fp16: - self.optimizer.clip_master_grads(args.max_grad_norm) - elif hasattr(self.optimizer, "clip_grad_norm"): - # Some optimizers (like the sharded optimizer) have a specific way to do gradient clipping - self.optimizer.clip_grad_norm(args.max_grad_norm) - elif hasattr(model, "clip_grad_norm_"): - # Some models (like FullyShardedDDP) have a specific way to do gradient clipping - model.clip_grad_norm_(args.max_grad_norm) - else: - # Revert to normal clipping otherwise, handling Apex or full precision - nn.utils.clip_grad_norm_( - amp.master_params(self.optimizer) if self.use_apex else model.parameters(), - args.max_grad_norm, - ) - - # Optimizer step - optimizer_was_run = True - if self.deepspeed: - pass # called outside the loop - elif is_torch_tpu_available(): - if self.do_grad_scaling: - self.scaler.step(self.optimizer) - self.scaler.update() - else: - # xm.optimizer_step(self.optimizer) - # MODIFIED: Crucial change! Do not aggregate gradients across TPU cores - self.optimizer.step() - xm.mark_step() - elif self.do_grad_scaling: - scale_before = self.scaler.get_scale() - self.scaler.step(self.optimizer) - self.scaler.update() - scale_after = self.scaler.get_scale() - optimizer_was_run = scale_before <= scale_after - else: - self.optimizer.step() - - if optimizer_was_run and not self.deepspeed: - # Delay optimizer scheduling until metrics are generated - if not isinstance(self.lr_scheduler, torch.optim.lr_scheduler.ReduceLROnPlateau): - self.lr_scheduler.step() - - model.zero_grad() - self.state.global_step += 1 - self.state.epoch = epoch + (step + 1 + steps_skipped) / steps_in_epoch - self.control = self.callback_handler.on_step_end(args, self.state, self.control) - - self._maybe_log_save_evaluate(tr_loss, model, trial, epoch, ignore_keys_for_eval) - else: - self.control = self.callback_handler.on_substep_end(args, self.state, self.control) - - if self.control.should_epoch_stop or self.control.should_training_stop: - break - if step < 0: - logger.warning( - "There seems to be not a single sample in your epoch_iterator, stopping training at step" - f" {self.state.global_step}! This is expected if you're using an IterableDataset and set" - f" num_steps ({max_steps}) higher than the number of available samples." - ) - self.control.should_training_stop = True - - self.control = self.callback_handler.on_epoch_end(args, self.state, self.control) - self._maybe_log_save_evaluate(tr_loss, model, trial, epoch, ignore_keys_for_eval) + # def _inner_training_loop( + # self, batch_size=None, args=None, resume_from_checkpoint=None, trial=None, ignore_keys_for_eval=None + # ): + # self._train_batch_size = batch_size + # # Data loader and number of training steps + # train_dataloader = self.get_train_dataloader() + + # # Setting up training control variables: + # # number of training epochs: num_train_epochs + # # number of training steps per epoch: num_update_steps_per_epoch + # # total number of training steps to execute: max_steps + # total_train_batch_size = args.train_batch_size * args.gradient_accumulation_steps * args.world_size + + # len_dataloader = None + # if has_length(train_dataloader): + # len_dataloader = len(train_dataloader) + # num_update_steps_per_epoch = len_dataloader // args.gradient_accumulation_steps + # num_update_steps_per_epoch = max(num_update_steps_per_epoch, 1) + # num_examples = self.num_examples(train_dataloader) + # if args.max_steps > 0: + # max_steps = args.max_steps + # num_train_epochs = args.max_steps // num_update_steps_per_epoch + int( + # args.max_steps % num_update_steps_per_epoch > 0 + # ) + # # May be slightly incorrect if the last batch in the training dataloader has a smaller size but it's + # # the best we can do. + # num_train_samples = args.max_steps * total_train_batch_size + # else: + # max_steps = math.ceil(args.num_train_epochs * num_update_steps_per_epoch) + # num_train_epochs = math.ceil(args.num_train_epochs) + # num_train_samples = self.num_examples(train_dataloader) * args.num_train_epochs + # elif args.max_steps > 0: # Rely on max_steps when dataloader does not have a working size + # max_steps = args.max_steps + # # Setting a very large number of epochs so we go as many times as necessary over the iterator. + # num_train_epochs = sys.maxsize + # num_update_steps_per_epoch = max_steps + # num_examples = total_train_batch_size * args.max_steps + # num_train_samples = args.max_steps * total_train_batch_size + # else: + # raise ValueError( + # "args.max_steps must be set to a positive value if dataloader does not have a length, was" + # f" {args.max_steps}" + # ) + + # # Compute absolute values for logging, eval, and save if given as ratio + # if args.logging_steps and args.logging_steps < 1: + # args.logging_steps = math.ceil(max_steps * args.logging_steps) + # if args.eval_steps and args.eval_steps < 1: + # args.eval_steps = math.ceil(max_steps * args.eval_steps) + # if args.save_steps and args.save_steps < 1: + # args.save_steps = math.ceil(max_steps * args.save_steps) + + # if DebugOption.UNDERFLOW_OVERFLOW in self.args.debug: + # if self.args.n_gpu > 1: + # # nn.DataParallel(model) replicates the model, creating new variables and module + # # references registered here no longer work on other gpus, breaking the module + # raise ValueError( + # "Currently --debug underflow_overflow is not supported under DP. Please use DDP" + # " (torch.distributed.launch)." + # ) + # else: + # debug_overflow = DebugUnderflowOverflow(self.model) # noqa + + # delay_optimizer_creation = ( + # self.sharded_ddp is not None + # and self.sharded_ddp != ShardedDDPOption.SIMPLE + # or is_sagemaker_mp_enabled() + # or self.fsdp is not None + # ) + # if args.deepspeed: + # deepspeed_engine, optimizer, lr_scheduler = deepspeed_init( + # self, num_training_steps=max_steps, resume_from_checkpoint=resume_from_checkpoint + # ) + # self.model = deepspeed_engine.module + # self.model_wrapped = deepspeed_engine + # self.deepspeed = deepspeed_engine + # self.optimizer = optimizer + # self.lr_scheduler = lr_scheduler + # elif not delay_optimizer_creation: + # self.create_optimizer_and_scheduler(num_training_steps=max_steps) + + # self.state = TrainerState() + # self.state.is_hyper_param_search = trial is not None + + # # Activate gradient checkpointing if needed + # if args.gradient_checkpointing: + # self.model.gradient_checkpointing_enable() + + # model = self._wrap_model(self.model_wrapped) + + # if is_sagemaker_mp_enabled() and resume_from_checkpoint is not None: + # self._load_from_checkpoint(resume_from_checkpoint, model) + + # # for the rest of this function `model` is the outside model, whether it was wrapped or not + # if model is not self.model: + # self.model_wrapped = model + + # if delay_optimizer_creation: + # self.create_optimizer_and_scheduler(num_training_steps=max_steps) + + # # Check if saved optimizer or scheduler states exist + # self._load_optimizer_and_scheduler(resume_from_checkpoint) + + # # important: at this point: + # # self.model is the Transformers Model + # # self.model_wrapped is DDP(Transformers Model), Deepspeed(Transformers Model), etc. + + # # Train! + # # MODIFIED: changed to warn, added device + # logger.warning(f"***** Running training on {xm.get_ordinal()}*****") + # logger.warning(f" Num examples = {num_examples:,}") + # logger.warning(f" Num Epochs = {num_train_epochs:,}") + # logger.info(f" Instantaneous batch size per device = {args.per_device_train_batch_size:,}") + # logger.info(f" Total train batch size (w. parallel, distributed & accumulation) = {total_train_batch_size:,}") + # logger.info(f" Gradient Accumulation steps = {args.gradient_accumulation_steps}") + # logger.warning(f" Total optimization steps = {max_steps:,}") + # logger.warning(f" Eval steps = {args.eval_steps}") + # logger.info(f" Number of trainable parameters = {get_model_param_count(model, trainable_only=True):,}") + + # self.state.epoch = 0 + # start_time = time.time() + # epochs_trained = 0 + # steps_trained_in_current_epoch = 0 + # steps_trained_progress_bar = None + + # # Check if continuing training from a checkpoint + # if resume_from_checkpoint is not None and os.path.isfile( + # os.path.join(resume_from_checkpoint, TRAINER_STATE_NAME) + # ): + # self.state = TrainerState.load_from_json(os.path.join(resume_from_checkpoint, TRAINER_STATE_NAME)) + # epochs_trained = self.state.global_step // num_update_steps_per_epoch + # if not args.ignore_data_skip: + # steps_trained_in_current_epoch = self.state.global_step % (num_update_steps_per_epoch) + # steps_trained_in_current_epoch *= args.gradient_accumulation_steps + # else: + # steps_trained_in_current_epoch = 0 + + # logger.info(" Continuing training from checkpoint, will skip to saved global_step") + # logger.info(f" Continuing training from epoch {epochs_trained}") + # logger.info(f" Continuing training from global step {self.state.global_step}") + # if not args.ignore_data_skip: + # if skip_first_batches is None: + # logger.info( + # f" Will skip the first {epochs_trained} epochs then the first" + # f" {steps_trained_in_current_epoch} batches in the first epoch. If this takes a lot of time," + # " you can install the latest version of Accelerate with `pip install -U accelerate`.You can" + # " also add the `--ignore_data_skip` flag to your launch command, but you will resume the" + # " training on data already seen by your model." + # ) + # else: + # logger.info( + # f" Will skip the first {epochs_trained} epochs then the first" + # f" {steps_trained_in_current_epoch} batches in the first epoch." + # ) + # if self.is_local_process_zero() and not args.disable_tqdm and skip_first_batches is None: + # steps_trained_progress_bar = tqdm(total=steps_trained_in_current_epoch) + # steps_trained_progress_bar.set_description("Skipping the first batches") + + # # Update the references + # self.callback_handler.model = self.model + # self.callback_handler.optimizer = self.optimizer + # self.callback_handler.lr_scheduler = self.lr_scheduler + # self.callback_handler.train_dataloader = train_dataloader + # if self.hp_name is not None and self._trial is not None: + # # use self._trial because the SigOpt/Optuna hpo only call `_hp_search_setup(trial)` instead of passing trial + # # parameter to Train when using DDP. + # self.state.trial_name = self.hp_name(self._trial) + # if trial is not None: + # assignments = trial.assignments if self.hp_search_backend == HPSearchBackend.SIGOPT else trial + # self.state.trial_params = hp_params(assignments) + # else: + # self.state.trial_params = None + # # This should be the same if the state has been saved but in case the training arguments changed, it's safer + # # to set this after the load. + # self.state.max_steps = max_steps + # self.state.num_train_epochs = num_train_epochs + # self.state.is_local_process_zero = self.is_local_process_zero() + # self.state.is_world_process_zero = self.is_world_process_zero() + + # # tr_loss is a tensor to avoid synchronization of TPUs through .item() + # tr_loss = torch.tensor(0.0).to(args.device) + # # _total_loss_scalar is updated everytime .item() has to be called on tr_loss and stores the sum of all losses + # self._total_loss_scalar = 0.0 + # self._globalstep_last_logged = self.state.global_step + # model.zero_grad() + + # self.control = self.callback_handler.on_train_begin(args, self.state, self.control) + + # # Skip the first epochs_trained epochs to get the random state of the dataloader at the right point. + # if not args.ignore_data_skip: + # for epoch in range(epochs_trained): + # is_random_sampler = hasattr(train_dataloader, "sampler") and isinstance( + # train_dataloader.sampler, RandomSampler + # ) + # if is_torch_less_than_1_11 or not is_random_sampler: + # # We just need to begin an iteration to create the randomization of the sampler. + # # That was before PyTorch 1.11 however... + # for _ in train_dataloader: + # break + # else: + # # Otherwise we need to call the whooooole sampler cause there is some random operation added + # # AT THE VERY END! + # _ = list(train_dataloader.sampler) + + # total_batched_samples = 0 + # for epoch in range(epochs_trained, num_train_epochs): + # if isinstance(train_dataloader, DataLoader) and isinstance(train_dataloader.sampler, DistributedSampler): + # train_dataloader.sampler.set_epoch(epoch) + # elif hasattr(train_dataloader, "dataset") and isinstance(train_dataloader.dataset, IterableDatasetShard): + # train_dataloader.dataset.set_epoch(epoch) + + # # if is_torch_tpu_available(): + # # parallel_loader = pl.MpDeviceLoader(train_dataloader, args.device) # .per_device_loader(args.device) + # # epoch_iterator = parallel_loader + # # else: + # # MODIFIED: no parallel loader + # epoch_iterator = train_dataloader + + # # Reset the past mems state at the beginning of each epoch if necessary. + # if args.past_index >= 0: + # self._past = None + + # steps_in_epoch = ( + # len(epoch_iterator) if len_dataloader is not None else args.max_steps * args.gradient_accumulation_steps + # ) + # self.control = self.callback_handler.on_epoch_begin(args, self.state, self.control) + + # if epoch == epochs_trained and resume_from_checkpoint is not None and steps_trained_in_current_epoch == 0: + # self._load_rng_state(resume_from_checkpoint) + + # rng_to_sync = False + # steps_skipped = 0 + # if skip_first_batches is not None and steps_trained_in_current_epoch > 0: + # epoch_iterator = skip_first_batches(epoch_iterator, steps_trained_in_current_epoch) + # steps_skipped = steps_trained_in_current_epoch + # steps_trained_in_current_epoch = 0 + # rng_to_sync = True + + # step = -1 + # for step, inputs in enumerate(epoch_iterator): + # total_batched_samples += 1 + # if rng_to_sync: + # self._load_rng_state(resume_from_checkpoint) + # rng_to_sync = False + + # # Skip past any already trained steps if resuming training + # if steps_trained_in_current_epoch > 0: + # steps_trained_in_current_epoch -= 1 + # if steps_trained_progress_bar is not None: + # steps_trained_progress_bar.update(1) + # if steps_trained_in_current_epoch == 0: + # self._load_rng_state(resume_from_checkpoint) + # continue + # elif steps_trained_progress_bar is not None: + # steps_trained_progress_bar.close() + # steps_trained_progress_bar = None + + # if step % args.gradient_accumulation_steps == 0: + # self.control = self.callback_handler.on_step_begin(args, self.state, self.control) + + # if ( + # (total_batched_samples % args.gradient_accumulation_steps != 0) + # and args.parallel_mode == ParallelMode.DISTRIBUTED + # and args._no_sync_in_gradient_accumulation + # and hasattr(model, "no_sync") + # ): + # # Avoid unnecessary DDP synchronization since there will be no backward pass on this example. + # with model.no_sync(): + # tr_loss_step = self.training_step(model, inputs) + # else: + # tr_loss_step = self.training_step(model, inputs) + + # if ( + # args.logging_nan_inf_filter + # and not is_torch_tpu_available() + # and (torch.isnan(tr_loss_step) or torch.isinf(tr_loss_step)) + # ): + # # if loss is nan or inf simply add the average of previous logged losses + # tr_loss += tr_loss / (1 + self.state.global_step - self._globalstep_last_logged) + # else: + # tr_loss += tr_loss_step + + # self.current_flos += float(self.floating_point_ops(inputs)) + + # # Optimizer step for deepspeed must be called on every step regardless of the value of gradient_accumulation_steps + # if self.deepspeed: + # self.deepspeed.step() + + # if total_batched_samples % args.gradient_accumulation_steps == 0 or ( + # # last step in epoch but step is always smaller than gradient_accumulation_steps + # steps_in_epoch <= args.gradient_accumulation_steps and (step + 1) == steps_in_epoch + # ): + # # Gradient clipping + # if args.max_grad_norm is not None and args.max_grad_norm > 0 and not self.deepspeed: + # # deepspeed does its own clipping + + # if self.do_grad_scaling: + # # Reduce gradients first for XLA + # if is_torch_tpu_available(): + # gradients = xm._fetch_gradients(self.optimizer) + # xm.all_reduce("sum", gradients, scale=1.0 / xm.xrt_world_size()) + # # AMP: gradients need unscaling + # self.scaler.unscale_(self.optimizer) + + # if is_sagemaker_mp_enabled() and args.fp16: + # self.optimizer.clip_master_grads(args.max_grad_norm) + # elif hasattr(self.optimizer, "clip_grad_norm"): + # # Some optimizers (like the sharded optimizer) have a specific way to do gradient clipping + # self.optimizer.clip_grad_norm(args.max_grad_norm) + # elif hasattr(model, "clip_grad_norm_"): + # # Some models (like FullyShardedDDP) have a specific way to do gradient clipping + # model.clip_grad_norm_(args.max_grad_norm) + # else: + # # Revert to normal clipping otherwise, handling Apex or full precision + # nn.utils.clip_grad_norm_( + # amp.master_params(self.optimizer) if self.use_apex else model.parameters(), + # args.max_grad_norm, + # ) + + # # Optimizer step + # optimizer_was_run = True + # if self.deepspeed: + # pass # called outside the loop + # elif is_torch_tpu_available(): + # if self.do_grad_scaling: + # self.scaler.step(self.optimizer) + # self.scaler.update() + # else: + # # xm.optimizer_step(self.optimizer) + # # MODIFIED: Crucial change! Do not aggregate gradients across TPU cores + # self.optimizer.step() + # xm.mark_step() + # elif self.do_grad_scaling: + # scale_before = self.scaler.get_scale() + # self.scaler.step(self.optimizer) + # self.scaler.update() + # scale_after = self.scaler.get_scale() + # optimizer_was_run = scale_before <= scale_after + # else: + # self.optimizer.step() + + # if optimizer_was_run and not self.deepspeed: + # # Delay optimizer scheduling until metrics are generated + # if not isinstance(self.lr_scheduler, torch.optim.lr_scheduler.ReduceLROnPlateau): + # self.lr_scheduler.step() + + # model.zero_grad() + # self.state.global_step += 1 + # self.state.epoch = epoch + (step + 1 + steps_skipped) / steps_in_epoch + # self.control = self.callback_handler.on_step_end(args, self.state, self.control) + + # self._maybe_log_save_evaluate(tr_loss, model, trial, epoch, ignore_keys_for_eval) + # else: + # self.control = self.callback_handler.on_substep_end(args, self.state, self.control) + + # if self.control.should_epoch_stop or self.control.should_training_stop: + # break + # if step < 0: + # logger.warning( + # "There seems to be not a single sample in your epoch_iterator, stopping training at step" + # f" {self.state.global_step}! This is expected if you're using an IterableDataset and set" + # f" num_steps ({max_steps}) higher than the number of available samples." + # ) + # self.control.should_training_stop = True + + # self.control = self.callback_handler.on_epoch_end(args, self.state, self.control) + # self._maybe_log_save_evaluate(tr_loss, model, trial, epoch, ignore_keys_for_eval) + + # if DebugOption.TPU_METRICS_DEBUG in self.args.debug: + # if is_torch_tpu_available(): + # # tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.) + # xm.master_print(met.metrics_report()) + # else: + # logger.warning( + # "You enabled PyTorch/XLA debug metrics but you don't have a TPU " + # "configured. Check your training configuration if this is unexpected." + # ) + # if self.control.should_training_stop: + # break + + # if args.past_index and hasattr(self, "_past"): + # # Clean the state at the end of training + # delattr(self, "_past") + + # logger.info("\n\nTraining completed. Do not forget to share your model on huggingface.co/models =)\n\n") + # if args.load_best_model_at_end and self.state.best_model_checkpoint is not None: + # # Wait for everyone to get here so we are sur the model has been saved by process 0. + # if is_torch_tpu_available(): + # xm.rendezvous("load_best_model_at_end") + # if args.parallel_mode == ParallelMode.DISTRIBUTED: + # dist.barrier() + # elif is_sagemaker_mp_enabled(): + # smp.barrier() + + # self._load_best_model() + + # # add remaining tr_loss + # self._total_loss_scalar += tr_loss.item() + # train_loss = self._total_loss_scalar / self.state.global_step + + # metrics = speed_metrics("train", start_time, num_samples=num_train_samples, num_steps=self.state.max_steps) + # self.store_flos() + # metrics["total_flos"] = self.state.total_flos + # metrics["train_loss"] = train_loss + + # self.is_in_train = False + + # self._memory_tracker.stop_and_update_metrics(metrics) + + # self.log(metrics) + + # run_dir = self._get_output_dir(trial) + # checkpoints_sorted = self._sorted_checkpoints(use_mtime=False, output_dir=run_dir) + + # # Delete the last checkpoint when save_total_limit=1 if it's different from the best checkpoint and process allowed to save. + # if self.args.should_save and self.state.best_model_checkpoint is not None and self.args.save_total_limit == 1: + # for checkpoint in checkpoints_sorted: + # if checkpoint != self.state.best_model_checkpoint: + # logger.info(f"Deleting older checkpoint [{checkpoint}] due to args.save_total_limit") + # shutil.rmtree(checkpoint) + + # self.control = self.callback_handler.on_train_end(args, self.state, self.control) + + # return TrainOutput(self.state.global_step, train_loss, metrics) + + # def _maybe_log_save_evaluate(self, tr_loss, model, trial, epoch, ignore_keys_for_eval): + # if self.control.should_log: + # # MODIFIED: removed --> faster + # # if is_torch_tpu_available(): + # # xm.mark_step() + + # logs: Dict[str, float] = {} + + # # all_gather + mean() to get average loss over all processes + # # tr_loss_scalar = self._nested_gather(tr_loss).mean().item() + # # MODIFIED: no gather since we train independently + # tr_loss_scalar = tr_loss.item() + + # # reset tr_loss to zero + # tr_loss -= tr_loss + + # loss = round(tr_loss_scalar / (self.state.global_step - self._globalstep_last_logged), 4) + # logs[f"{self.logging_prefix}loss"] = loss + # logs["loss"] = loss + + # logs[f"{self.logging_prefix}learning_rate"] = self._get_learning_rate() + # # prepend logging_prefix to epoch + # if self.state.epoch is not None: + # logs[f"{self.logging_prefix}epoch"] = round(self.state.epoch, 2) + # logs[f"{self.logging_prefix}global_step"] = self.state.global_step + + # self._total_loss_scalar += tr_loss_scalar + # self._globalstep_last_logged = self.state.global_step + # self.store_flos() + + # self.log(logs) + + # metrics = None + # if self.control.should_evaluate: + # metrics = self.evaluate(ignore_keys=ignore_keys_for_eval) + # self._report_to_hp_search(trial, self.state.global_step, metrics) + + # if self.control.should_save: + # self._save_checkpoint(model, trial, metrics=metrics) + # self.control = self.callback_handler.on_save(self.args, self.state, self.control) + + # def log(self, logs: Dict[str, float]) -> None: + # """ + # Log `logs` on the various objects watching training. + + # Subclass and override this method to inject custom behavior. + + # Args: + # logs (`Dict[str, float]`): + # The values to log. + # """ + # if self.state.epoch is not None: + # logs["epoch"] = round(self.state.epoch, 2) - if DebugOption.TPU_METRICS_DEBUG in self.args.debug: - if is_torch_tpu_available(): - # tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.) - xm.master_print(met.metrics_report()) - else: - logger.warning( - "You enabled PyTorch/XLA debug metrics but you don't have a TPU " - "configured. Check your training configuration if this is unexpected." - ) - if self.control.should_training_stop: - break - - if args.past_index and hasattr(self, "_past"): - # Clean the state at the end of training - delattr(self, "_past") - - logger.info("\n\nTraining completed. Do not forget to share your model on huggingface.co/models =)\n\n") - if args.load_best_model_at_end and self.state.best_model_checkpoint is not None: - # Wait for everyone to get here so we are sur the model has been saved by process 0. - if is_torch_tpu_available(): - xm.rendezvous("load_best_model_at_end") - if args.parallel_mode == ParallelMode.DISTRIBUTED: - dist.barrier() - elif is_sagemaker_mp_enabled(): - smp.barrier() - - self._load_best_model() - - # add remaining tr_loss - self._total_loss_scalar += tr_loss.item() - train_loss = self._total_loss_scalar / self.state.global_step - - metrics = speed_metrics("train", start_time, num_samples=num_train_samples, num_steps=self.state.max_steps) - self.store_flos() - metrics["total_flos"] = self.state.total_flos - metrics["train_loss"] = train_loss - - self.is_in_train = False - - self._memory_tracker.stop_and_update_metrics(metrics) - - self.log(metrics) - - run_dir = self._get_output_dir(trial) - checkpoints_sorted = self._sorted_checkpoints(use_mtime=False, output_dir=run_dir) - - # Delete the last checkpoint when save_total_limit=1 if it's different from the best checkpoint and process allowed to save. - if self.args.should_save and self.state.best_model_checkpoint is not None and self.args.save_total_limit == 1: - for checkpoint in checkpoints_sorted: - if checkpoint != self.state.best_model_checkpoint: - logger.info(f"Deleting older checkpoint [{checkpoint}] due to args.save_total_limit") - shutil.rmtree(checkpoint) - - self.control = self.callback_handler.on_train_end(args, self.state, self.control) - - return TrainOutput(self.state.global_step, train_loss, metrics) - - def _maybe_log_save_evaluate(self, tr_loss, model, trial, epoch, ignore_keys_for_eval): - if self.control.should_log: - # MODIFIED: removed --> faster - # if is_torch_tpu_available(): - # xm.mark_step() - - logs: Dict[str, float] = {} - - # all_gather + mean() to get average loss over all processes - # tr_loss_scalar = self._nested_gather(tr_loss).mean().item() - # MODIFIED: no gather since we train independently - tr_loss_scalar = tr_loss.item() - - # reset tr_loss to zero - tr_loss -= tr_loss - - loss = round(tr_loss_scalar / (self.state.global_step - self._globalstep_last_logged), 4) - logs[f"{self.logging_prefix}loss"] = loss - logs["loss"] = loss - - logs[f"{self.logging_prefix}learning_rate"] = self._get_learning_rate() - # prepend logging_prefix to epoch - if self.state.epoch is not None: - logs[f"{self.logging_prefix}epoch"] = round(self.state.epoch, 2) - logs[f"{self.logging_prefix}global_step"] = self.state.global_step - - self._total_loss_scalar += tr_loss_scalar - self._globalstep_last_logged = self.state.global_step - self.store_flos() - - self.log(logs) - - metrics = None - if self.control.should_evaluate: - metrics = self.evaluate(ignore_keys=ignore_keys_for_eval) - self._report_to_hp_search(trial, self.state.global_step, metrics) - - if self.control.should_save: - self._save_checkpoint(model, trial, metrics=metrics) - self.control = self.callback_handler.on_save(self.args, self.state, self.control) - - def log(self, logs: Dict[str, float]) -> None: - """ - Log `logs` on the various objects watching training. - - Subclass and override this method to inject custom behavior. - - Args: - logs (`Dict[str, float]`): - The values to log. - """ - if self.state.epoch is not None: - logs["epoch"] = round(self.state.epoch, 2) - - output = {**logs, **{"step": self.state.global_step}} - self.state.log_history.append(output) - # MODIFIED: also log current device - logger.warning(f"{xm.get_ordinal()}: {output}") - self.control = self.callback_handler.on_log(self.args, self.state, self.control, logs) + # output = {**logs, **{"step": self.state.global_step}} + # self.state.log_history.append(output) + # # MODIFIED: also log current device + # logger.warning(f"{xm.get_ordinal()}: {output}") + # self.control = self.callback_handler.on_log(self.args, self.state, self.control, logs) def evaluation_loop( self, @@ -846,8 +846,8 @@ def evaluation_loop( eval_dataset = getattr(dataloader, "dataset", None) # MODIFIED: not necessary. - # if is_torch_tpu_available(): - # dataloader = pl.MpDeviceLoader(dataloader, args.device) # .per_device_loader(args.device) + if is_torch_tpu_available(): + dataloader = pl.MpDeviceLoader(dataloader, args.device) # .per_device_loader(args.device) if args.past_index >= 0: self._past = None @@ -882,8 +882,8 @@ def evaluation_loop( inputs_decode = self._prepare_input(inputs["input_ids"]) if args.include_inputs_for_metrics else None # MODIFIED: not necessary. - # if is_torch_tpu_available(): - # xm.mark_step() + if is_torch_tpu_available(): + xm.mark_step() # Update containers on host if loss is not None: @@ -893,12 +893,12 @@ def evaluation_loop( if labels is not None: labels = self._pad_across_processes(labels) # MODIFIED: do not gather across devices. - # labels = self._nested_gather(labels) + labels = self._nested_gather(labels) labels_host = labels if labels_host is None else nested_concat(labels_host, labels, padding_index=-100) if inputs_decode is not None: inputs_decode = self._pad_across_processes(inputs_decode) # MODIFIED: do not gather across devices. - # inputs_decode = self._nested_gather(inputs_decode) + inputs_decode = self._nested_gather(inputs_decode) inputs_host = ( inputs_decode if inputs_host is None @@ -988,7 +988,7 @@ def evaluation_loop( # Metrics! # MODIFIED: removed since done in compute_metrics - # xm.rendezvous("eval_metrics") + xm.rendezvous("eval_metrics") # MODIFIED: always compute metrics if self.compute_metrics is not None: metrics = self.compute_metrics(self) @@ -1021,13 +1021,13 @@ def _save_tpu(self, output_dir: Optional[str] = None): logger.info(f"Saving model checkpoint to {output_dir}") # MODIFIED: also save on other devices - # if xm.is_master_ordinal(): - # os.makedirs(output_dir, exist_ok=True) - # torch.save(self.args, os.path.join(output_dir, TRAINING_ARGS_NAME)) + if xm.is_master_ordinal(): + os.makedirs(output_dir, exist_ok=True) + torch.save(self.args, os.path.join(output_dir, TRAINING_ARGS_NAME)) # # Save a trained model and configuration using `save_pretrained()`. # # They can then be reloaded using `from_pretrained()` - # xm.rendezvous("saving_checkpoint") + xm.rendezvous("saving_checkpoint") if isinstance(self.model, Model): actual_model = self.model.backbone else: From 87ddd27a34c582eca0130236849b7d54a3226353 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 26 Mar 2024 21:23:13 +0000 Subject: [PATCH 084/262] strip flag --- wtpsplit/evaluation/intrinsic_list.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py index 8126ecee..2d22b1eb 100644 --- a/wtpsplit/evaluation/intrinsic_list.py +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -54,6 +54,7 @@ class Args: save_suffix: str = "" do_lowercase: bool = False do_remove_punct: bool = False + do_strip: bool = False def process_logits_list(text, model, lang_code, block_size, stride, batch_size, verbose=True) -> List[np.ndarray]: @@ -152,7 +153,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"] - + if args.do_strip: + test_sentences = [[sentence.lstrip("-").strip() for sentence in chunk] for chunk in test_sentences] test_sentences = [ [ corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) @@ -199,6 +201,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st ] for chunk in train_sentences ] + if args.do_strip: + train_sentences = [[sentence.lstrip("-").strip() for sentence in chunk] for chunk in train_sentences] train_sentences = train_sentences[: args.max_n_train_sentences] train_logits = process_logits_list( @@ -298,6 +302,8 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"] + if args.do_strip: + sentences = [[sentence.lstrip("-").strip() for sentence in chunk] for chunk in sentences] sentences = [ [ corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) From 33a9fc63a2e7a6235b69409e0b2dbcb0b4b35106 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Mar 2024 07:43:27 +0000 Subject: [PATCH 085/262] add tqdm feature --- wtpsplit/evaluation/intrinsic_list.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py index 2d22b1eb..9620ed4e 100644 --- a/wtpsplit/evaluation/intrinsic_list.py +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -55,6 +55,7 @@ class Args: do_lowercase: bool = False do_remove_punct: bool = False do_strip: bool = False + tqdm: bool = False def process_logits_list(text, model, lang_code, block_size, stride, batch_size, verbose=True) -> List[np.ndarray]: @@ -154,7 +155,9 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"] if args.do_strip: - test_sentences = [[sentence.lstrip("-").strip() for sentence in chunk] for chunk in test_sentences] + test_sentences = [ + [sentence.lstrip("-").strip() for sentence in chunk] for chunk in test_sentences + ] test_sentences = [ [ corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) @@ -202,7 +205,9 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st for chunk in train_sentences ] if args.do_strip: - train_sentences = [[sentence.lstrip("-").strip() for sentence in chunk] for chunk in train_sentences] + train_sentences = [ + [sentence.lstrip("-").strip() for sentence in chunk] for chunk in train_sentences + ] train_sentences = train_sentences[: args.max_n_train_sentences] train_logits = process_logits_list( @@ -328,7 +333,7 @@ def main(args): score_t = [] score_punct = [] - for i, chunk in enumerate(sentences): + for i, chunk in tqdm(enumerate(sentences), total=len(sentences), disable=args.tqdm): start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] single_score_t, single_score_punct, info = evaluate_mixture( lang_code, @@ -347,7 +352,7 @@ def main(args): score_t = score_punct = None score_u = [] - for i, chunk in enumerate(sentences): + for i, chunk in tqdm(enumerate(sentences), total=len(sentences), disable=args.tqdm): start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] single_score_u, _, info = evaluate_mixture( lang_code, From d59964cb77135d70b3f1fecdcf38d8ce831a70d9 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Mar 2024 09:31:20 +0000 Subject: [PATCH 086/262] add option for simple full FT --- wtpsplit/train/train_adapter.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index fb36b7b7..23eabf9f 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -22,6 +22,7 @@ from wtpsplit.evaluation.intrinsic import corrupt from wtpsplit.models import SubwordXLMConfig, SubwordXLMForTokenClassification from wtpsplit.train.adaptertrainer import AdapterTrainer +from wtpsplit.train.trainer import Trainer from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise from wtpsplit.train.train import collate_fn, setup_logging from wtpsplit.train.utils import Model @@ -502,12 +503,20 @@ def compute_metrics(trainer): label_dict = ( get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) ) - - # init new adapter - model.backbone.add_adapter( - "text", config=adapter_args.adapter_config, set_active=True, overwrite_ok=True - ) - model.backbone.train_adapter("text") + + if adapter_args.train_adapter: + # init new adapter + model.backbone.add_adapter( + "text", config=adapter_args.adapter_config, set_active=True, overwrite_ok=True + ) + model.backbone.train_adapter("text") + kwargs = {"logging_prefix": f"{dataset_name}/{lang}/", "skip_eval_loss": args.skip_eval_loss} + else: + # needed in the trainer otherwise + training_args.adapter_warmup_steps = args.adapter_warmup_steps + training_args.adapter_lr_multiplier = args.adapter_lr_multiplier + kwargs = {} + with training_args.main_process_first(): logger.warning(model.backbone.adapter_summary()) @@ -538,7 +547,10 @@ def compute_metrics(trainer): # log twice as often training_args.logging_steps = training_args.eval_steps // 2 - trainer = AdapterTrainer( + trainer_cls = AdapterTrainer if adapter_args.train_adapter else Trainer + # add logging_prefix and skip_eval_loss as args to trainer_cls if trainer_cls is AdapterTrainer only + + trainer = trainer_cls( model, training_args, train_dataset=train_dataset, @@ -552,8 +564,7 @@ def compute_metrics(trainer): tokenizer=tokenizer, add_lang_ids=False, ), - logging_prefix=f"{dataset_name}/{lang}/", - skip_eval_loss=args.skip_eval_loss, + **kwargs, ) trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) with training_args.main_process_first(): From 3d12df47a22491bb2f35475d87e363c9433efaa6 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Mar 2024 19:58:24 +0000 Subject: [PATCH 087/262] add full FT save --- wtpsplit/train/train_adapter.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 23eabf9f..2a949820 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -567,16 +567,20 @@ def compute_metrics(trainer): **kwargs, ) trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) - with training_args.main_process_first(): + logger.warning(f"Finished training for {lang} {dataset_name}.") + if training_args.local_rank == 0: if not os.path.exists(os.path.join(training_args.output_dir, dataset_name, lang)): os.makedirs(os.path.join(training_args.output_dir, dataset_name, lang)) save_model = copy.deepcopy(model.backbone) save_model = save_model.to("cpu") - save_model.to("cpu").save_adapter( - adapter_name="text", - save_directory=os.path.join(training_args.output_dir, dataset_name, lang), - with_head=True, - ) + if adapter_args.train_adapter: + save_model.to("cpu").save_adapter( + adapter_name="text", + save_directory=os.path.join(training_args.output_dir, dataset_name, lang), + with_head=True, + ) + else: + save_model.save_pretrained(os.path.join(training_args.output_dir, dataset_name, lang)) if training_args.local_rank == 0: # eval here within 1 go cmd = "" From 88c73105272603349575d301ccf70228ddbbb218 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 27 Mar 2024 19:58:59 +0000 Subject: [PATCH 088/262] add config --- configs/xlmr_12l_baseline_lyrics.json | 42 +++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 configs/xlmr_12l_baseline_lyrics.json diff --git a/configs/xlmr_12l_baseline_lyrics.json b/configs/xlmr_12l_baseline_lyrics.json new file mode 100644 index 00000000..41a67742 --- /dev/null +++ b/configs/xlmr_12l_baseline_lyrics.json @@ -0,0 +1,42 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-12l_ep30_v2_5e-5_mldbW-verses-S_fs", + "block_size": 256, + "eval_stride": 128, + "do_train": true, + "do_eval": true, + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "evaluation_strategy": "epoch", + "dataloader_num_workers": 1, + "preprocessing_num_workers": 1, + "learning_rate": 5e-5, + "fp16": false, + "num_train_epochs": 30, + "logging_steps": 50, + "report_to": "wandb", + "wandb_project": "lyrics-peft", + "save_steps": 100000000, + "remove_unused_columns": false, + "one_sample_per_line": true, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_ratio": 0.1, + "non_punctuation_sample_ratio": null, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", + "weight_decay": 0.0, + "auxiliary_remove_prob": 0.0, + "text_path": "data/mldbW_verses_strip_n_strip_single_f.pt", + "skip_eval_loss": false, + "shuffle": false, + "do_remove_punct": false, + "do_lowercase": false, + "train_adapter": false +} \ No newline at end of file From fa5cb3aea5481858227ba1301136c06251a13687 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 28 Mar 2024 12:05:21 +0000 Subject: [PATCH 089/262] add full model ft support --- wtpsplit/evaluation/intrinsic.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 1c6e0b6e..580da0ef 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -156,6 +156,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st for n, p in model.backbone.named_parameters(): if "LayerNorm" in n: p.data = ln_dict[n].data + if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")): + model_path = os.path.join(args.model_path, dataset_name, "en") + print(model_path) + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) except Exception as e: print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue @@ -248,7 +252,14 @@ def main(args): valid_data = None print("Loading model...") - model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) + # if model_path does not contain a model, take first subfolder + if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")): + model_path = os.path.join(args.model_path, os.listdir(args.model_path)[0], "en") + print("joined") + print(model_path) + else: + model_path = args.model_path + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) if args.adapter_path: model_type = model.model.config.model_type # adapters need xlm-roberta as model type. From e2eae1cccc1fd7225c8161a3f606db559970867c Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 28 Mar 2024 15:48:11 +0000 Subject: [PATCH 090/262] generalize pairwise eval to k-mer eval --- .../xlmr_stratify_0.1_6layers_p_v3_look6.json | 45 ++++++ wtpsplit/evaluation/intrinsic_pairwise.py | 70 ++++++++-- wtpsplit/train/evaluate.py | 75 +++++++++- wtpsplit/train/train.py | 132 ++++++++++-------- 4 files changed, 251 insertions(+), 71 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_6layers_p_v3_look6.json diff --git a/configs/xlmr_stratify_0.1_6layers_p_v3_look6.json b/configs/xlmr_stratify_0.1_6layers_p_v3_look6.json new file mode 100644 index 00000000..445f0bce --- /dev/null +++ b/configs/xlmr_stratify_0.1_6layers_p_v3_look6.json @@ -0,0 +1,45 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-6l-v3_look6", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 256, + "eval_stride": 128, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 4, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 5000, + "logging_steps": 50, + "report_to": "none", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": 6, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "auxiliary_remove_prob": 0.2, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 6, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning" +} \ No newline at end of file diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index cbf19e1b..90ce3d57 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -61,14 +61,14 @@ class Args: min_pair_length: int = 0 -def process_logits_pairwise(pairs, model, lang_code, block_size, batch_size, verbose=True) -> List[np.ndarray]: +def process_logits_k_mers(pairs, model, lang_code, block_size, batch_size, verbose=True) -> List[np.ndarray]: logits_list = [] # create batches of sentence pairs - batched_pairs = [pairs[i : i + batch_size] for i in range(0, len(pairs), batch_size)] - for batch in tqdm(batched_pairs, disable=not verbose): - pair_texts = [pair[0] + Constants.SEPARATORS[lang_code] + pair[1] for pair in batch] + batched_k_mers = [pairs[i : i + batch_size] for i in range(0, len(pairs), batch_size)] + for batch in tqdm(batched_k_mers, disable=not verbose): + k_mer_texts = [Constants.SEPARATORS[lang_code].join(pair) for pair in batch] all_logits, offsets_mapping, tokenizer = extract_batched( - pair_texts, + k_mer_texts, model, lang_code=lang_code, block_size=block_size, @@ -76,12 +76,12 @@ def process_logits_pairwise(pairs, model, lang_code, block_size, batch_size, ver pad_last_batch=True, ) - for pair, logit, offset_mapping in zip(pair_texts, all_logits, offsets_mapping): + for k_mer, logit, offset_mapping in zip(k_mer_texts, all_logits, offsets_mapping): if "xlm" in model.config.model_type: - tokens = tokenizer.tokenize(pair, verbose=False) + tokens = tokenizer.tokenize(k_mer, verbose=False) # padding is also removed here (via offset_mapping) - logits = token_to_char_probs(pair, tokens, logit, tokenizer, offset_mapping) + logits = token_to_char_probs(k_mer, tokens, logit, tokenizer, offset_mapping) logits_list.append(logits) else: if len(logit) < offset_mapping: @@ -143,6 +143,56 @@ def generate_pairs( ] return all_pairs +def generate_k_mers( + sentences: List[str], + k: int, + do_lowercase: bool, + do_remove_punct: bool, + sample_pct: float = 1, + max_n_samples: int = sys.maxsize, + min_k_mer_length: int = 0, +) -> List[Tuple[str, ...]]: + """Generate k-mers from a list of sentences. + + Args: + sentences (List[str]): Input list of sentences. + k (int): The number of sentences to include in each k-mer. + sample_pct (float): Percentage of k-mers to sample. + max_n_samples (int): Maximum number of k-mers to sample. + min_k_mer_length (int): Minimum length of a k-mer. + do_lowercase (bool): Whether to lowercase the sentences. + do_remove_punct (bool): Whether to remove punctuation from the sentences. + + Returns: + List[Tuple[str, ...]]: List of k-mers. + """ + random.seed(42) + n_k_mers = len(sentences) // k + sample_size = min(round(n_k_mers * sample_pct), max_n_samples) + + # Efficient sampling of a subset of all possible k-mers if needed + if sample_size < n_k_mers: + sampled_indices = set(random.sample(range(n_k_mers), sample_size)) + all_k_mers = [ + tuple(sentences[i*k+j] for j in range(k)) + for i in sampled_indices + if sum(len(sentences[i*k+j]) for j in range(k)) > min_k_mer_length + ] + else: + # Generate all k-mers that meet the min_k_mer_length criterion + all_k_mers = [ + tuple(sentences[i+j] for j in range(k)) + for i in range(0, len(sentences) - k + 1, k) + if sum(len(sentences[i+j]) for j in range(k)) > min_k_mer_length + ] + + # Apply corruption to k-mers + all_k_mers = [ + tuple(corrupt(sentence, do_lowercase, do_remove_punct) for sentence in k_mer) + for k_mer in all_k_mers + ] + + return all_k_mers def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: str = None): logits_path = Constants.CACHE_DIR / "intrinsic_pairwise" / f"{save_str}.h5" @@ -204,7 +254,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st ) start_time = time.time() # Start timing for test logits processing - test_logits = process_logits_pairwise( + test_logits = process_logits_k_mers( all_pairs_test, model, lang_code, @@ -250,7 +300,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st min_pair_length=args.min_pair_length, ) - train_logits = process_logits_pairwise( + train_logits = process_logits_k_mers( all_pairs_train, model, lang_code, args.block_size, args.batch_size ) train_logits = np.concatenate(train_logits) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index c2558ff6..0cca1220 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -7,7 +7,7 @@ from wtpsplit.evaluation import token_to_char_probs from wtpsplit.evaluation.intrinsic import corrupt -from wtpsplit.evaluation.intrinsic_pairwise import generate_pairs, process_logits_pairwise +from wtpsplit.evaluation.intrinsic_pairwise import generate_pairs, generate_k_mers, process_logits_k_mers from wtpsplit.extract import PyTorchWrapper, extract from wtpsplit.utils import Constants, sigmoid @@ -164,7 +164,7 @@ def evaluate_sentence_pairwise( ) # get logits for each pair - logits = process_logits_pairwise( + logits = process_logits_k_mers( pairs=sampled_pairs, model=PyTorchWrapper(model.backbone), lang_code=lang_code, @@ -174,7 +174,6 @@ def evaluate_sentence_pairwise( ) # simulate performance for WtP-U - for i, (sentence1, sentence2) in enumerate(sampled_pairs): newline_probs = logits[i][:, positive_index] @@ -200,3 +199,73 @@ def evaluate_sentence_pairwise( average_metric = np.mean(metrics_list) avg_accuracy = np.mean(accuracy_list) return average_metric, avg_accuracy + +def evaluate_sentence_kmers( + lang_code, + sentences, + model, + stride, + block_size, + batch_size, + k: int = 3, + sample_pct: float = 0.1, + max_n_samples: int = sys.maxsize, + use_pysbd=False, + positive_index=None, + do_lowercase=False, + do_remove_punct=False, + threshold: float = 0.1 +): + if positive_index is None: + positive_index = Constants.NEWLINE_INDEX + + # Preprocess sentences + sentences = [sentence.lstrip("-").strip() for sentence in sentences] + + separator = Constants.SEPARATORS[lang_code] + metrics_list = [] + accuracy_list = [] + + # get pairs of sentences (non-overlapping) + sampled_k_mers = generate_k_mers( + sentences=sentences, + k=k, + do_lowercase=do_lowercase, + do_remove_punct=do_remove_punct, + sample_pct=sample_pct, + max_n_samples=max_n_samples, + min_k_mer_length=0, + ) + + # get logits for each pair + logits = process_logits_k_mers( # TODO + pairs=sampled_k_mers, + model=PyTorchWrapper(model.backbone), + lang_code=lang_code, + block_size=block_size, + batch_size=batch_size, + verbose=False, + ) + + for i, k_mer in enumerate(sampled_k_mers): + newline_probs = logits[i][:, positive_index] + + k_mer_text = separator.join(k_mer) + true_end_indices = np.cumsum(np.array([len(s) for s in k_mer])) + np.arange(len(k_mer)) * len(separator) + newline_labels = np.zeros(len(k_mer_text)) + newline_labels[true_end_indices - 1] = 1 + + # Get metrics for the k-mer + k_mer_metrics, _ = get_metrics(newline_labels, newline_probs) + metrics_list.append(k_mer_metrics["pr_auc"]) + predicted_labels = newline_probs > np.log(threshold / (1 - threshold)) # inverse sigmoid + # For accuracy, check if all the labels in between are correctly predicted (ignore the one at the end) + intermediate_newline_labels = newline_labels[:-len(separator)] # Exclude the end + intermediate_predicted_labels = predicted_labels[:-len(separator)] # Exclude the end + correct = np.array_equal(intermediate_newline_labels, intermediate_predicted_labels) + accuracy_list.append(correct) + + # Compute and return the average metric and accuracy + average_metric = np.mean(metrics_list) + avg_accuracy = np.mean(accuracy_list) + return average_metric, avg_accuracy diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 7b043d30..9645ddd6 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -32,7 +32,7 @@ SubwordXLMConfig, SubwordXLMForTokenClassification, ) -from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise +from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise, evaluate_sentence_kmers from wtpsplit.train.trainer import Trainer from wtpsplit.utils import Constants, LabelArgs, corrupt, get_label_dict, get_subword_label_dict from wtpsplit.train.utils import Model, cleanup_cache_files @@ -501,13 +501,13 @@ def maybe_pad(text): dataset = dataset.rename_column(args.text_column, "input_ids") logger.warning(f"Tokenized {split} dataset.") - if split == "train" and args.use_subwords: - with training_args.main_process_first(): - for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): - for file in files: - if file.startswith("m_c4-test-train"): - logger.warning(f"Removing {os.path.join(root, file)}") - os.remove(os.path.join(root, file)) + # if split == "train" and args.use_subwords: + # with training_args.main_process_first(): + # for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): + # for file in files: + # if file.startswith("m_c4-test-train"): + # logger.warning(f"Removing {os.path.join(root, file)}") + # os.remove(os.path.join(root, file)) if not args.one_sample_per_line: with training_args.main_process_first(): @@ -534,7 +534,7 @@ def maybe_pad(text): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="train", + split="valid", ) logger.warning(f"Train dataset has {len(train_dataset)} examples.") @@ -566,54 +566,70 @@ def compute_metrics(trainer): if trainer.args.process_index == 0 and args.do_sentence_training: # with training_args.main_process_first(): for dataset_name, dataset in lang_data["sentence"].items(): - score, _ = evaluate_sentence( - lang_code, - dataset["data"], - model, - stride=args.eval_stride, - block_size=args.block_size, - batch_size=training_args.per_device_eval_batch_size, - ) - metrics[f"{lang_code}_{dataset_name}_pr_auc"] = score - avg_metrics[f"average_{dataset_name}_pr_auc"].append(score) - if lang_code in ["zh", "ja", "my", "km"]: - avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - else: - avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) - score, _ = evaluate_sentence( - lang_code, - dataset["data"], - model, - stride=args.eval_stride, - block_size=args.block_size, - batch_size=training_args.per_device_eval_batch_size, - do_lowercase=True, - do_remove_punct=True, - ) - metrics[f"lower_rmp_{lang_code}_{dataset_name}_pr_auc"] = score - avg_metrics[f"lower_rmp_average_{dataset_name}_pr_auc"].append(score) - if lang_code in ["zh", "ja", "my", "km"]: - avg_metrics[f"lower_rmp_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - else: - avg_metrics[f"lower_rmp_average_whitespace_{dataset_name}_pr_auc"].append(score) - score, avg_acc = evaluate_sentence_pairwise( - lang_code, - dataset["data"], - model, - stride=args.eval_stride, - block_size=args.block_size, - batch_size=training_args.per_device_eval_batch_size, - ) - metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score - avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) - metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc - avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) - if lang_code in ["zh", "ja", "my", "km"]: - avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) - else: - avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) + # score, _ = evaluate_sentence( + # lang_code, + # dataset["data"], + # model, + # stride=args.eval_stride, + # block_size=args.block_size, + # batch_size=training_args.per_device_eval_batch_size, + # ) + # metrics[f"{lang_code}_{dataset_name}_pr_auc"] = score + # avg_metrics[f"average_{dataset_name}_pr_auc"].append(score) + # if lang_code in ["zh", "ja", "my", "km"]: + # avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + # else: + # avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) + # score, _ = evaluate_sentence( + # lang_code, + # dataset["data"], + # model, + # stride=args.eval_stride, + # block_size=args.block_size, + # batch_size=training_args.per_device_eval_batch_size, + # do_lowercase=True, + # do_remove_punct=True, + # ) + # metrics[f"lower_rmp_{lang_code}_{dataset_name}_pr_auc"] = score + # avg_metrics[f"lower_rmp_average_{dataset_name}_pr_auc"].append(score) + # if lang_code in ["zh", "ja", "my", "km"]: + # avg_metrics[f"lower_rmp_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + # else: + # avg_metrics[f"lower_rmp_average_whitespace_{dataset_name}_pr_auc"].append(score) + # k-mer based evaluation + for k in [2, 3, 4]: + score, avg_acc = evaluate_sentence_kmers( + lang_code, + dataset["data"], + model, + stride=args.eval_stride, + block_size=args.block_size, + batch_size=training_args.per_device_eval_batch_size, + k=k, + # sample_pct=0.1, + ) + metrics[f"k_{k}_{lang_code}_{dataset_name}_pr_auc"] = score + avg_metrics[f"k_{k}_average_{dataset_name}_pr_auc"].append(score) + metrics[f"k_{k}_{lang_code}_{dataset_name}_acc"] = avg_acc + avg_metrics[f"k_{k}_average_{dataset_name}_acc"].append(avg_acc) + if lang_code in ["zh", "ja", "my", "km"]: + avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) + else: + avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_acc"].append(avg_acc) + if k == 2: + # keep keys for backwards compat in wandb + metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score + avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) + metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc + avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) + if lang_code in ["zh", "ja", "my", "km"]: + avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) + else: + avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) for name, values in avg_metrics.items(): if len(values) > 1: @@ -622,7 +638,7 @@ def compute_metrics(trainer): return metrics if "wandb" in training_args.report_to and training_args.process_index == 0: - wandb.init(name=wandb_name, project="sentence") + wandb.init(name=wandb_name, project="sentence", entity="markus_583") wandb.config.update(args) wandb.config.update(training_args) wandb.config.update(label_args) From 19aa4b2b7db0f5c9b0e2dd5704e30ff1625cb5a7 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 28 Mar 2024 15:51:03 +0000 Subject: [PATCH 091/262] use train set! --- wtpsplit/train/train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 9645ddd6..3afc49c2 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -534,7 +534,7 @@ def maybe_pad(text): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="valid", + split="train", ) logger.warning(f"Train dataset has {len(train_dataset)} examples.") From ab776f8325c31d04e20803467eec14df510c0209 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 29 Mar 2024 07:27:20 +0000 Subject: [PATCH 092/262] full FT compat --- wtpsplit/evaluation/intrinsic_list.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py index 9620ed4e..ea867b6e 100644 --- a/wtpsplit/evaluation/intrinsic_list.py +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -143,6 +143,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st for n, p in model.backbone.named_parameters(): if "LayerNorm" in n: p.data = ln_dict[n].data + if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")): + model_path = os.path.join(args.model_path, dataset_name, "en") + print(model_path) + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) except Exception as e: print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue @@ -276,7 +280,14 @@ def main(args): valid_data = None print("Loading model...") - model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) + # if model_path does not contain a model, take first subfolder + if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")): + model_path = os.path.join(args.model_path, os.listdir(args.model_path)[0], "en") + print("joined") + print(model_path) + else: + model_path = args.model_path + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) if args.adapter_path: model_type = model.model.config.model_type # adapters need xlm-roberta as model type. From b05763038d94432f310824eb781737aac5b4595a Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 29 Mar 2024 09:55:01 +0000 Subject: [PATCH 093/262] indent --- wtpsplit/train/train.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 3afc49c2..d6c0776f 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -618,18 +618,18 @@ def compute_metrics(trainer): else: avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_pr_auc"].append(score) avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_acc"].append(avg_acc) - if k == 2: - # keep keys for backwards compat in wandb - metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score - avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) - metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc - avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) - if lang_code in ["zh", "ja", "my", "km"]: - avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) - else: - avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) + if k == 2: + # keep keys for backwards compat in wandb + metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score + avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) + metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc + avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) + if lang_code in ["zh", "ja", "my", "km"]: + avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) + else: + avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) for name, values in avg_metrics.items(): if len(values) > 1: From 52b6a480c4ff255a0bd43b878d13aad4d1f2d62c Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 29 Mar 2024 12:23:13 +0000 Subject: [PATCH 094/262] fix eval selection --- wtpsplit/train/train.py | 44 ++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 3afc49c2..49d0503d 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -566,16 +566,16 @@ def compute_metrics(trainer): if trainer.args.process_index == 0 and args.do_sentence_training: # with training_args.main_process_first(): for dataset_name, dataset in lang_data["sentence"].items(): - # score, _ = evaluate_sentence( - # lang_code, - # dataset["data"], - # model, - # stride=args.eval_stride, - # block_size=args.block_size, - # batch_size=training_args.per_device_eval_batch_size, - # ) - # metrics[f"{lang_code}_{dataset_name}_pr_auc"] = score - # avg_metrics[f"average_{dataset_name}_pr_auc"].append(score) + score, _ = evaluate_sentence( + lang_code, + dataset["data"], + model, + stride=args.eval_stride, + block_size=args.block_size, + batch_size=training_args.per_device_eval_batch_size, + ) + metrics[f"{lang_code}_{dataset_name}_pr_auc"] = score + avg_metrics[f"average_{dataset_name}_pr_auc"].append(score) # if lang_code in ["zh", "ja", "my", "km"]: # avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) # else: @@ -612,24 +612,24 @@ def compute_metrics(trainer): avg_metrics[f"k_{k}_average_{dataset_name}_pr_auc"].append(score) metrics[f"k_{k}_{lang_code}_{dataset_name}_acc"] = avg_acc avg_metrics[f"k_{k}_average_{dataset_name}_acc"].append(avg_acc) - if lang_code in ["zh", "ja", "my", "km"]: - avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) - else: - avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_acc"].append(avg_acc) + # if lang_code in ["zh", "ja", "my", "km"]: + # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) + # else: + # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_pr_auc"].append(score) + # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_acc"].append(avg_acc) if k == 2: # keep keys for backwards compat in wandb metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) - if lang_code in ["zh", "ja", "my", "km"]: - avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) - else: - avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) + # if lang_code in ["zh", "ja", "my", "km"]: + # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) + # else: + # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) + # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) for name, values in avg_metrics.items(): if len(values) > 1: From b12ee451d8984629764643471680818748918097 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 29 Mar 2024 12:31:09 +0000 Subject: [PATCH 095/262] expand kmers --- wtpsplit/train/train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 49d0503d..c8d2a18a 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -597,7 +597,7 @@ def compute_metrics(trainer): # else: # avg_metrics[f"lower_rmp_average_whitespace_{dataset_name}_pr_auc"].append(score) # k-mer based evaluation - for k in [2, 3, 4]: + for k in [2, 3, 4, 5, 6]: score, avg_acc = evaluate_sentence_kmers( lang_code, dataset["data"], From aec7fc23d735c9919a52db5ec92c3272c9b9c344 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 29 Mar 2024 12:32:02 +0000 Subject: [PATCH 096/262] indent! --- wtpsplit/train/train.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index c8d2a18a..6b9d0252 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -618,18 +618,18 @@ def compute_metrics(trainer): # else: # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_pr_auc"].append(score) # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_acc"].append(avg_acc) - if k == 2: - # keep keys for backwards compat in wandb - metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score - avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) - metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc - avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) - # if lang_code in ["zh", "ja", "my", "km"]: - # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) - # else: - # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) - # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) + if k == 2: + # keep keys for backwards compat in wandb + metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score + avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) + metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc + avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) + # if lang_code in ["zh", "ja", "my", "km"]: + # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) + # else: + # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) + # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) for name, values in avg_metrics.items(): if len(values) > 1: From 8ded82c3484de7657c9f49adc6b8226d3409ae32 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 29 Mar 2024 20:45:40 +0000 Subject: [PATCH 097/262] safer .to_cpu --- wtpsplit/train/train_adapter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 2a949820..66e438c1 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -580,7 +580,7 @@ def compute_metrics(trainer): with_head=True, ) else: - save_model.save_pretrained(os.path.join(training_args.output_dir, dataset_name, lang)) + save_model.to("cpu").save_pretrained(os.path.join(training_args.output_dir, dataset_name, lang)) if training_args.local_rank == 0: # eval here within 1 go cmd = "" From a37f2e2377ab33d37f0c15a14d8c1578b8593770 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 31 Mar 2024 11:07:43 +0000 Subject: [PATCH 098/262] eval mldbW for mldb models --- wtpsplit/evaluation/intrinsic_list.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py index ea867b6e..20bd6fc7 100644 --- a/wtpsplit/evaluation/intrinsic_list.py +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -127,10 +127,17 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # eval data for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): + # train on all mldb, eval on mldbW + if "mldbW" in args.eval_data_path and ( + "mldbW" not in args.model_path or "mldbW" not in args.adapter_path + ): + dataset_load_name = "unk" + else: + dataset_load_name = dataset_name try: if args.adapter_path: model.model.load_adapter( - args.adapter_path + "/" + dataset_name + "/" + lang_code, + args.adapter_path + "/" + dataset_load_name + "/" + lang_code, set_active=True, with_head=True, load_as="text", @@ -138,19 +145,21 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if hasattr(model.model.config, "unfreeze_ln"): if model.model.config.unfreeze_ln: ln_dict = torch.load( - args.adapter_path + "/" + dataset_name + "/" + lang_code + "/ln_dict.pth" + args.adapter_path + "/" + dataset_load_name + "/" + lang_code + "/ln_dict.pth" ) for n, p in model.backbone.named_parameters(): if "LayerNorm" in n: p.data = ln_dict[n].data if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")): - model_path = os.path.join(args.model_path, dataset_name, "en") + model_path = os.path.join(args.model_path, dataset_load_name, "en") print(model_path) - model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) + model = PyTorchWrapper( + AutoModelForTokenClassification.from_pretrained(model_path).to(args.device) + ) except Exception as e: - print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") + print(f"Error loading adapter for {dataset_load_name} in {lang_code}: {e}") continue - print(dataset_name) + print(dataset_name, dataset_load_name) if dataset_name not in lang_group: dset_group = lang_group.create_group(dataset_name) else: From 2ad784302820241750cd43670ff1325b2bb83747 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 1 Apr 2024 14:46:58 +0000 Subject: [PATCH 099/262] add subsampling + fix auto-eval (?) --- configs/peft/adapter_lyrics.json | 16 ++++++++------- wtpsplit/train/train_adapter.py | 35 +++++++++++++++++++------------- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/configs/peft/adapter_lyrics.json b/configs/peft/adapter_lyrics.json index 02ef0e44..668ce560 100644 --- a/configs/peft/adapter_lyrics.json +++ b/configs/peft/adapter_lyrics.json @@ -1,6 +1,6 @@ { - "model_name_or_path": "xlmr-normal-p-v3", - "output_dir": "xlmr-3l-v3_adapter_rf32_ep30_v2_corrupted_np_no-sl", + "model_name_or_path": "xlmr-12l-v3", + "output_dir": "xlmr-12l-v3_adapter_rf4_ep30_v2_mldbW-verses-S_fs_ss0.1", "block_size": 256, "eval_stride": 128, "do_train": true, @@ -20,7 +20,7 @@ "wandb_project": "lyrics-peft", "save_steps": 100000000, "remove_unused_columns": false, - "one_sample_per_line": false, + "one_sample_per_line": true, "do_sentence_training": true, "do_auxiliary_training": false, "warmup_ratio": 0.1, @@ -31,13 +31,15 @@ "use_subwords": true, "custom_punctuation_file": "punctuation_xlmr_unk.txt", "log_level": "warning", - "adapter_config": "seq_bn[reduction_factor=32]", + "adapter_config": "seq_bn[reduction_factor=4]", "weight_decay": 0.0, "auxiliary_remove_prob": 0.0, "do_process": true, - "text_path": "data/lyrics_lines.pt", + "text_path": "data/mldbW_verses_strip_n_strip_single_f.pt", "skip_eval_loss": false, "shuffle": false, - "do_remove_punct": true, - "do_lowercase": true + "do_remove_punct": false, + "do_lowercase": false, + "train_adapter": true, + "subsample": 0.1 } \ No newline at end of file diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 66e438c1..e377a259 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -28,6 +28,7 @@ from wtpsplit.train.utils import Model from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict from tqdm import tqdm +from typing import Union, Optional logger = logging.getLogger(__name__) @@ -71,6 +72,7 @@ class Args: do_remove_punct: bool = False eval_pairwise: bool = False skip_eval_loss: bool = False + subsample: Optional[float] = None def main(): @@ -104,6 +106,7 @@ def prepare_dataset( split="train", do_lowercase=False, do_remove_punct=False, + subsample: Union[None, int, float] = None ): # maybe we use more than 1 lang later at once. with training_args.main_process_first(): @@ -154,6 +157,13 @@ def prepare_dataset( if shuffle: dataset = dataset.shuffle(seed=42) + if subsample: + old_length = len(dataset) + if isinstance(subsample, int): + dataset = dataset.select(range(subsample)) + elif isinstance(subsample, float): + dataset = dataset.select(range(int(subsample * len(dataset)))) + logger.warning(f"Subsampled {len(dataset)} examples from {old_length}.") # very likely not relevant / used only for the compound part if args.ignore_non_hyphen: @@ -443,6 +453,7 @@ def maybe_pad(text): split="train", do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct, + subsample=args.subsample, ) if train_dataset is None or valid_dataset is None: logger.warning(f"Skipping {lang} {dataset_name} due to missing data.") @@ -591,21 +602,17 @@ def compute_metrics(trainer): eval_function = "intrinsic_list" else: eval_function = "intrinsic" - cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" - if "lines" in args.text_path: - if args.do_lowercase and args.do_remove_punct: - cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines --do_lowercase --do_remove_punct" - else: - cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines" - elif "verses" in args.text_path: - if args.do_lowercase and args.do_remove_punct: - cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n_single.pt --save_suffix verses --do_lowercase --do_remove_punct" - else: - cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses" - elif args.do_lowercase and args.do_remove_punct: - cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --do_lowercase --do_remove_punct" + if args.do_lowercase and args.do_remove_punct: + suffix = "--do_lowercase --do_remove_punct" + if "adapter" in training_args.output_dir: + model_info = f"--model_path {args.model_name_or_path} --adapter_path {training_args.output_dir}" else: - cmd = f"python3 wtpsplit/evaluation/{eval_function}.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" + model_info = f"--model_path {training_args.output_dir}" + + if "verses" in args.text_path or "lines" in args.text_path: + cmd = f"python3 wtpsplit/evaluation/{eval_function}.py {model_info} --threshold 0.1 --custom_language_list data/mldb_langs.csv --eval_data_path {args.text_path} {suffix}" + else: + cmd = f"python3 wtpsplit/evaluation/{eval_function}.py {model_info} --threshold 0.1 {suffix}" print(cmd) os.system(cmd) From cdcaeba3583d090e96a07d4c2ffd4a19b54ec4a5 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 1 Apr 2024 19:34:30 +0000 Subject: [PATCH 100/262] minor fixes --- wtpsplit/evaluation/intrinsic_list.py | 2 +- wtpsplit/train/train_adapter.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py index 20bd6fc7..62ca5e37 100644 --- a/wtpsplit/evaluation/intrinsic_list.py +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -129,7 +129,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): # train on all mldb, eval on mldbW if "mldbW" in args.eval_data_path and ( - "mldbW" not in args.model_path or "mldbW" not in args.adapter_path + "mldbW" not in args.model_path and "mldbW" not in args.adapter_path ): dataset_load_name = "unk" else: diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index e377a259..786ff523 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -603,7 +603,9 @@ def compute_metrics(trainer): else: eval_function = "intrinsic" if args.do_lowercase and args.do_remove_punct: - suffix = "--do_lowercase --do_remove_punct" + suffix = "--do_lowercase --do_remove_punct" + else: + suffix = "" if "adapter" in training_args.output_dir: model_info = f"--model_path {args.model_name_or_path} --adapter_path {training_args.output_dir}" else: From 31254c36c0097b8489dddfb02671fd20b4d617f6 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 2 Apr 2024 08:13:24 +0000 Subject: [PATCH 101/262] fix subsampling indexing --- wtpsplit/train/train_adapter.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 786ff523..734297e8 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -160,6 +160,8 @@ def prepare_dataset( if subsample: old_length = len(dataset) if isinstance(subsample, int): + # ensure that we don't try to select more than the dataset length + subsample = min(subsample, len(dataset)) dataset = dataset.select(range(subsample)) elif isinstance(subsample, float): dataset = dataset.select(range(int(subsample * len(dataset)))) From 284e925d327c1732b43222102e567637984e3e75 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 4 Apr 2024 07:38:34 +0000 Subject: [PATCH 102/262] threshold investigation --- wtpsplit/train/evaluate.py | 32 +++++++++++++++++++++++++------- wtpsplit/train/train.py | 24 ++++++++++++++++++++++-- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 0cca1220..c2cbc34f 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -141,7 +141,7 @@ def evaluate_sentence_pairwise( positive_index=None, do_lowercase=False, do_remove_punct=False, - threshold: float = 0.1 + threshold: float = 0.1, ): if positive_index is None: positive_index = Constants.NEWLINE_INDEX @@ -200,6 +200,7 @@ def evaluate_sentence_pairwise( avg_accuracy = np.mean(accuracy_list) return average_metric, avg_accuracy + def evaluate_sentence_kmers( lang_code, sentences, @@ -214,7 +215,7 @@ def evaluate_sentence_kmers( positive_index=None, do_lowercase=False, do_remove_punct=False, - threshold: float = 0.1 + threshold: float = 0.1, ): if positive_index is None: positive_index = Constants.NEWLINE_INDEX @@ -225,6 +226,8 @@ def evaluate_sentence_kmers( separator = Constants.SEPARATORS[lang_code] metrics_list = [] accuracy_list = [] + accuracy_list_optimal = [] + info_list = [] # get pairs of sentences (non-overlapping) sampled_k_mers = generate_k_mers( @@ -238,7 +241,7 @@ def evaluate_sentence_kmers( ) # get logits for each pair - logits = process_logits_k_mers( # TODO + logits = process_logits_k_mers( pairs=sampled_k_mers, model=PyTorchWrapper(model.backbone), lang_code=lang_code, @@ -256,16 +259,31 @@ def evaluate_sentence_kmers( newline_labels[true_end_indices - 1] = 1 # Get metrics for the k-mer - k_mer_metrics, _ = get_metrics(newline_labels, newline_probs) + k_mer_metrics, info = get_metrics(newline_labels, newline_probs) metrics_list.append(k_mer_metrics["pr_auc"]) + info_list.append(info) + predicted_labels = newline_probs > np.log(threshold / (1 - threshold)) # inverse sigmoid + predicted_labels_optimal = newline_probs > np.log( + info["threshold_best"] / (1 - info["threshold_best"]) + ) # inverse sigmoid # For accuracy, check if all the labels in between are correctly predicted (ignore the one at the end) - intermediate_newline_labels = newline_labels[:-len(separator)] # Exclude the end - intermediate_predicted_labels = predicted_labels[:-len(separator)] # Exclude the end + intermediate_newline_labels = newline_labels[: -len(separator)] # Exclude the end + intermediate_predicted_labels = predicted_labels[: -len(separator)] # Exclude the end + intermediate_predicted_labels_opt = predicted_labels_optimal[: -len(separator)] # Exclude the end correct = np.array_equal(intermediate_newline_labels, intermediate_predicted_labels) + correct_optimal = np.array_equal(intermediate_newline_labels, intermediate_predicted_labels_opt) accuracy_list.append(correct) + accuracy_list_optimal.append(correct_optimal) # Compute and return the average metric and accuracy average_metric = np.mean(metrics_list) avg_accuracy = np.mean(accuracy_list) - return average_metric, avg_accuracy + # get averages for info_list + avg_info = { + key: np.mean([info[key] for info in info_list]) + for key in info_list[0].keys() + if isinstance(info_list[0][key], (int, float)) + } + avg_info["accuracy_optimal"] = np.mean(accuracy_list_optimal) + return average_metric, avg_accuracy, avg_info diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 6b9d0252..3a2d61f6 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -566,7 +566,7 @@ def compute_metrics(trainer): if trainer.args.process_index == 0 and args.do_sentence_training: # with training_args.main_process_first(): for dataset_name, dataset in lang_data["sentence"].items(): - score, _ = evaluate_sentence( + score, info = evaluate_sentence( lang_code, dataset["data"], model, @@ -575,7 +575,13 @@ def compute_metrics(trainer): batch_size=training_args.per_device_eval_batch_size, ) metrics[f"{lang_code}_{dataset_name}_pr_auc"] = score + metrics[f"{lang_code}_{dataset_name}_f1"] = info["f1"] + metrics[f"{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] + metrics[f"{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] avg_metrics[f"average_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"average_{dataset_name}_f1"].append(info["f1"]) + avg_metrics[f"average_{dataset_name}_f1_best"].append(info["f1_best"]) + avg_metrics[f"average_{dataset_name}_threshold_best"].append(info["threshold_best"]) # if lang_code in ["zh", "ja", "my", "km"]: # avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) # else: @@ -598,7 +604,7 @@ def compute_metrics(trainer): # avg_metrics[f"lower_rmp_average_whitespace_{dataset_name}_pr_auc"].append(score) # k-mer based evaluation for k in [2, 3, 4, 5, 6]: - score, avg_acc = evaluate_sentence_kmers( + score, avg_acc, info = evaluate_sentence_kmers( lang_code, dataset["data"], model, @@ -612,6 +618,13 @@ def compute_metrics(trainer): avg_metrics[f"k_{k}_average_{dataset_name}_pr_auc"].append(score) metrics[f"k_{k}_{lang_code}_{dataset_name}_acc"] = avg_acc avg_metrics[f"k_{k}_average_{dataset_name}_acc"].append(avg_acc) + metrics[f"k_{k}_{lang_code}_{dataset_name}_f1"] = info["f1"] + metrics[f"k_{k}_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] + metrics[f"k_{k}_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] + avg_metrics[f"k_{k}_average_{dataset_name}_f1"].append(info["f1"]) + avg_metrics[f"k_{k}_average_{dataset_name}_f1_best"].append(info["f1_best"]) + avg_metrics[f"k_{k}_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) + # if lang_code in ["zh", "ja", "my", "km"]: # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) @@ -624,6 +637,12 @@ def compute_metrics(trainer): avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) + metrics[f"pairwise_{lang_code}_{dataset_name}_f1"] = info["f1"] + metrics[f"pairwise_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] + metrics[f"pairwise_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] + avg_metrics[f"pairwise_average_{dataset_name}_f1"].append(info["f1"]) + avg_metrics[f"pairwise_average_{dataset_name}_f1_best"].append(info["f1_best"]) + avg_metrics[f"pairwise_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) # if lang_code in ["zh", "ja", "my", "km"]: # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) @@ -676,6 +695,7 @@ def compute_metrics(trainer): label_args=label_args, label_dict=label_dict, tokenizer=tokenizer if args.use_subwords else None, + add_lang_ids=not args.use_subwords, ), ) From 99c6b9c31aef012fd6ae799c11350b3473a598a3 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 4 Apr 2024 10:42:30 +0000 Subject: [PATCH 103/262] fix threshold investigation --- wtpsplit/train/evaluate.py | 6 +++--- wtpsplit/train/train.py | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index c2cbc34f..c9991276 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -268,9 +268,9 @@ def evaluate_sentence_kmers( info["threshold_best"] / (1 - info["threshold_best"]) ) # inverse sigmoid # For accuracy, check if all the labels in between are correctly predicted (ignore the one at the end) - intermediate_newline_labels = newline_labels[: -len(separator)] # Exclude the end - intermediate_predicted_labels = predicted_labels[: -len(separator)] # Exclude the end - intermediate_predicted_labels_opt = predicted_labels_optimal[: -len(separator)] # Exclude the end + intermediate_newline_labels = newline_labels[:-1] # Exclude the end + intermediate_predicted_labels = predicted_labels[:-1] + intermediate_predicted_labels_opt = predicted_labels_optimal[:-1] correct = np.array_equal(intermediate_newline_labels, intermediate_predicted_labels) correct_optimal = np.array_equal(intermediate_newline_labels, intermediate_predicted_labels_opt) accuracy_list.append(correct) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 3a2d61f6..a4299768 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -570,8 +570,8 @@ def compute_metrics(trainer): lang_code, dataset["data"], model, - stride=args.eval_stride, - block_size=args.block_size, + stride=128, + block_size=512, batch_size=training_args.per_device_eval_batch_size, ) metrics[f"{lang_code}_{dataset_name}_pr_auc"] = score @@ -608,8 +608,8 @@ def compute_metrics(trainer): lang_code, dataset["data"], model, - stride=args.eval_stride, - block_size=args.block_size, + stride=128, + block_size=512, batch_size=training_args.per_device_eval_batch_size, k=k, # sample_pct=0.1, From d6088f16a08d622d688042dc34e7d588268e9898 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 5 Apr 2024 08:06:23 +0000 Subject: [PATCH 104/262] fix + propagate threshold --- wtpsplit/train/evaluate.py | 13 +++++++------ wtpsplit/train/train.py | 31 +++++++++++++++++-------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index c9991276..d4886d53 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -37,7 +37,7 @@ def compute_f1(pred, true): ) -def get_metrics(labels, preds, threshold: float = 0.1): +def get_metrics(labels, preds, threshold: float = 0.01): # Compute precision-recall curve and AUC precision, recall, thresholds = sklearn.metrics.precision_recall_curve(labels, preds) pr_auc = sklearn.metrics.auc(recall, precision) @@ -80,6 +80,7 @@ def evaluate_sentence( positive_index=None, do_lowercase=False, do_remove_punct=False, + threshold: float = 0.01, ): if positive_index is None: positive_index = Constants.NEWLINE_INDEX @@ -113,7 +114,7 @@ def evaluate_sentence( else: char_probs = logits newline_probs = char_probs[:, positive_index] - metrics, info = get_metrics(newline_labels, newline_probs) + metrics, info = get_metrics(newline_labels, newline_probs, threshold=threshold) info["newline_labels"] = newline_labels @@ -141,7 +142,7 @@ def evaluate_sentence_pairwise( positive_index=None, do_lowercase=False, do_remove_punct=False, - threshold: float = 0.1, + threshold: float = 0.01, ): if positive_index is None: positive_index = Constants.NEWLINE_INDEX @@ -185,7 +186,7 @@ def evaluate_sentence_pairwise( newline_labels[true_end_indices - 1] = 1 # Get metrics for the pair - pair_metrics, _ = get_metrics(newline_labels, newline_probs) + pair_metrics, _ = get_metrics(newline_labels, newline_probs, threshold=threshold) metrics_list.append(pair_metrics["pr_auc"]) predicted_labels = newline_probs > np.log(threshold / (1 - threshold)) # inverse sigmoid # for accuracy, check if the single label in between is correctly predicted (ignore the one at the end) @@ -215,7 +216,7 @@ def evaluate_sentence_kmers( positive_index=None, do_lowercase=False, do_remove_punct=False, - threshold: float = 0.1, + threshold: float = 0.01, ): if positive_index is None: positive_index = Constants.NEWLINE_INDEX @@ -259,7 +260,7 @@ def evaluate_sentence_kmers( newline_labels[true_end_indices - 1] = 1 # Get metrics for the k-mer - k_mer_metrics, info = get_metrics(newline_labels, newline_probs) + k_mer_metrics, info = get_metrics(newline_labels, newline_probs, threshold=threshold) metrics_list.append(k_mer_metrics["pr_auc"]) info_list.append(info) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index a4299768..5dad04b7 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -101,6 +101,7 @@ class Args: # NEW PARAMS use_subwords: bool = False + threshold: float = 0.01 def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: bool = False): @@ -501,13 +502,13 @@ def maybe_pad(text): dataset = dataset.rename_column(args.text_column, "input_ids") logger.warning(f"Tokenized {split} dataset.") - # if split == "train" and args.use_subwords: - # with training_args.main_process_first(): - # for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): - # for file in files: - # if file.startswith("m_c4-test-train"): - # logger.warning(f"Removing {os.path.join(root, file)}") - # os.remove(os.path.join(root, file)) + if split == "train" and args.use_subwords: + with training_args.main_process_first(): + for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): + for file in files: + if file.startswith("m_c4-test-train"): + logger.warning(f"Removing {os.path.join(root, file)}") + os.remove(os.path.join(root, file)) if not args.one_sample_per_line: with training_args.main_process_first(): @@ -573,6 +574,7 @@ def compute_metrics(trainer): stride=128, block_size=512, batch_size=training_args.per_device_eval_batch_size, + threshold=args.threshold, ) metrics[f"{lang_code}_{dataset_name}_pr_auc"] = score metrics[f"{lang_code}_{dataset_name}_f1"] = info["f1"] @@ -613,6 +615,7 @@ def compute_metrics(trainer): batch_size=training_args.per_device_eval_batch_size, k=k, # sample_pct=0.1, + threshold=args.threshold, ) metrics[f"k_{k}_{lang_code}_{dataset_name}_pr_auc"] = score avg_metrics[f"k_{k}_average_{dataset_name}_pr_auc"].append(score) @@ -675,13 +678,13 @@ def compute_metrics(trainer): training_args.adapter_lr_multiplier = args.adapter_lr_multiplier # give .map in multiprocessing enough of time to finish, to be safe - # time.sleep(10) - # if training_args.local_rank == 0: - # # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() - # # because that would remove the cache files of the other dataset! - # cleanup_cache_files([train_dataset, valid_dataset]) - # logger.warning("Cleaned up cache files.") - # time.sleep(10) + time.sleep(10) + if training_args.local_rank == 0: + # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() + # because that would remove the cache files of the other dataset! + cleanup_cache_files([train_dataset, valid_dataset]) + logger.warning("Cleaned up cache files.") + time.sleep(10) trainer = Trainer( model, From ac4380d2eb854d1f228f308c70e793a11dbc7d6b Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 5 Apr 2024 08:53:55 +0000 Subject: [PATCH 105/262] fix model loading --- wtpsplit/evaluation/intrinsic.py | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 580da0ef..563fedd1 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -54,7 +54,6 @@ class Args: save_suffix: str = "" do_lowercase: bool = False do_remove_punct: bool = False - do_strip: bool = False def process_logits(text, model, lang_code, args): @@ -148,16 +147,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st with_head=True, load_as="text", ) - if hasattr(model.model.config, "unfreeze_ln"): - if model.model.config.unfreeze_ln: - ln_dict = torch.load( - args.adapter_path + "/" + dataset_name + "/" + lang_code + "/ln_dict.pth" - ) - for n, p in model.backbone.named_parameters(): - if "LayerNorm" in n: - p.data = ln_dict[n].data if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")): model_path = os.path.join(args.model_path, dataset_name, "en") + if not os.path.exists(model_path): + model_path = args.model_path print(model_path) model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) except Exception as e: @@ -174,8 +167,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # if list of lists: flatten if isinstance(test_sentences[0], list): test_sentences = [item for sublist in test_sentences for item in sublist] - if args.do_strip: - test_sentences = [sentence.lstrip("-").strip() for sentence in test_sentences] test_sentences = [ corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) for sentence in test_sentences @@ -196,8 +187,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if train_sentences is not None and "train_logits" not in dset_group: if isinstance(train_sentences[0], list): train_sentences = [item for sublist in train_sentences for item in sublist] - if args.do_strip: - train_sentences = [sentence.lstrip("-").strip() for sentence in train_sentences] train_sentences = [ corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) for sentence in train_sentences @@ -254,8 +243,10 @@ def main(args): print("Loading model...") # if model_path does not contain a model, take first subfolder if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")): - model_path = os.path.join(args.model_path, os.listdir(args.model_path)[0], "en") - print("joined") + try: + model_path = os.path.join(args.model_path, os.listdir(args.model_path)[0], "en") + except: + model_path = args.model_path print(model_path) else: model_path = args.model_path @@ -295,8 +286,6 @@ def main(args): sentences = dataset["data"] if isinstance(sentences[0], list): sentences = [item for sublist in sentences for item in sublist] - if args.do_strip: - sentences = [sentence.lstrip("-").strip() for sentence in sentences] sentences = [ corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) for sentence in sentences From ce2d5aa66047283bcaf0ddf8a8e942b235595d1d Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 5 Apr 2024 11:57:44 +0000 Subject: [PATCH 106/262] enable threshold analyses --- wtpsplit/evaluation/intrinsic_pairwise.py | 132 ++++++++++++++++++---- 1 file changed, 109 insertions(+), 23 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index 90ce3d57..f120c0ae 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -27,6 +27,7 @@ logger = logging.getLogger() logger.setLevel(logging.INFO) + @dataclass class Args: model_path: str @@ -55,14 +56,66 @@ class Args: save_suffix: str = "" do_lowercase: bool = False do_remove_punct: bool = False + skip_adaptation: bool = False # pairwise-specific args max_n_pairs: int = sys.maxsize - pair_sample_pct: float = 1 + pair_sample_pct: float = 0.5 min_pair_length: int = 0 + adjust_threshold: bool = False + threshold_increase_type: str = "linear" + threshold_min_length: int = 0 + threshold_max_length: int = 256 + threshold_max: float = 0.1 + + +def calculate_threshold( + sequence_length, max_length, min_length, max_threshold, increase_type="linear", default_threshold=0.01 +): + """ + Calculates the threshold based on the sequence length with various increase types + ('linear', 'logarithmic', 'quadratic', 'exponential', 'sigmoidal') from default_threshold + to max_threshold as sequence length decreases from max_length to min_length. + + :param sequence_length: The current sequence length + :param max_length: The sequence length at which the default_threshold is applied + :param min_length: The sequence length at which the max_threshold is applied + :param max_threshold: The maximum threshold value + :param increase_type: Type of increase + :param default_threshold: The default threshold value (minimum threshold) + :return: The calculated threshold for the given sequence length + """ + + # Normalize sequence length to a range [0, 1] + normalized_length = (sequence_length - max_length) / (min_length - max_length) + + if increase_type == "linear": + threshold = normalized_length * (max_threshold - default_threshold) + default_threshold + elif increase_type == "logarithmic": + # Adjusted logarithmic calculation for a more distinctive curve + if normalized_length > 0: + threshold = ( + np.log1p(normalized_length * (np.e - 1)) / np.log(np.e) * (max_threshold - default_threshold) + + default_threshold + ) + else: + threshold = default_threshold + elif increase_type == "quadratic": + threshold = (normalized_length**2) * (max_threshold - default_threshold) + default_threshold + elif increase_type == "sigmoidal": + sigmoid_threshold = 1 / (1 + np.exp(-10 * (normalized_length - 0.5))) + threshold = sigmoid_threshold * (max_threshold - default_threshold) + default_threshold + else: + threshold = normalized_length * (max_threshold - default_threshold) + default_threshold + + # Ensure the threshold does not exceed the bounds + threshold = min(max(threshold, default_threshold), max_threshold) + + return threshold def process_logits_k_mers(pairs, model, lang_code, block_size, batch_size, verbose=True) -> List[np.ndarray]: logits_list = [] + n_tokens_list = [] # create batches of sentence pairs batched_k_mers = [pairs[i : i + batch_size] for i in range(0, len(pairs), batch_size)] for batch in tqdm(batched_k_mers, disable=not verbose): @@ -83,6 +136,7 @@ def process_logits_k_mers(pairs, model, lang_code, block_size, batch_size, verbo # padding is also removed here (via offset_mapping) logits = token_to_char_probs(k_mer, tokens, logit, tokenizer, offset_mapping) logits_list.append(logits) + n_tokens_list.append(len(tokens)) else: if len(logit) < offset_mapping: # truncated input --> pad back @@ -92,7 +146,7 @@ def process_logits_k_mers(pairs, model, lang_code, block_size, batch_size, verbo # since we pad to equal length, we need to remove the padding logits_list.append(logit[:offset_mapping]) - return logits_list + return logits_list, n_tokens_list def generate_pairs( @@ -143,6 +197,7 @@ def generate_pairs( ] return all_pairs + def generate_k_mers( sentences: List[str], k: int, @@ -174,26 +229,24 @@ def generate_k_mers( if sample_size < n_k_mers: sampled_indices = set(random.sample(range(n_k_mers), sample_size)) all_k_mers = [ - tuple(sentences[i*k+j] for j in range(k)) + tuple(sentences[i * k + j] for j in range(k)) for i in sampled_indices - if sum(len(sentences[i*k+j]) for j in range(k)) > min_k_mer_length + if sum(len(sentences[i * k + j]) for j in range(k)) > min_k_mer_length ] else: # Generate all k-mers that meet the min_k_mer_length criterion all_k_mers = [ - tuple(sentences[i+j] for j in range(k)) + tuple(sentences[i + j] for j in range(k)) for i in range(0, len(sentences) - k + 1, k) - if sum(len(sentences[i+j]) for j in range(k)) > min_k_mer_length + if sum(len(sentences[i + j]) for j in range(k)) > min_k_mer_length ] # Apply corruption to k-mers - all_k_mers = [ - tuple(corrupt(sentence, do_lowercase, do_remove_punct) for sentence in k_mer) - for k_mer in all_k_mers - ] + all_k_mers = [tuple(corrupt(sentence, do_lowercase, do_remove_punct) for sentence in k_mer) for k_mer in all_k_mers] return all_k_mers + def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: str = None): logits_path = Constants.CACHE_DIR / "intrinsic_pairwise" / f"{save_str}.h5" @@ -254,7 +307,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st ) start_time = time.time() # Start timing for test logits processing - test_logits = process_logits_k_mers( + test_logits, test_n_logits = process_logits_k_mers( all_pairs_test, model, lang_code, @@ -287,6 +340,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dset_group.create_dataset("test_logits", data=test_logits) dset_group.create_dataset("test_labels", data=test_labels) dset_group.create_dataset("test_logit_lengths", data=test_logit_lengths) + dset_group.create_dataset("test_n_logits", data=test_n_logits) train_sentences = dataset["meta"].get("train_data") if train_sentences is not None and "train_logits" not in dset_group: @@ -300,7 +354,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st min_pair_length=args.min_pair_length, ) - train_logits = process_logits_k_mers( + train_logits, train_n_logits = process_logits_k_mers( all_pairs_train, model, lang_code, args.block_size, args.batch_size ) train_logits = np.concatenate(train_logits) @@ -314,6 +368,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dset_group.create_dataset("train_logits", data=train_logits) dset_group.create_dataset("train_labels", data=train_labels) + dset_group.create_dataset("train_n_logits", data=train_n_logits) end_time = time.time() return h5py.File(logits_path, "r"), total_test_time / 60 # to minutes @@ -323,14 +378,19 @@ def main(args): save_model_path = args.model_path if args.adapter_path: save_model_path = args.adapter_path - save_str = ( - f"{save_model_path.replace('/','_')}_b{args.block_size}_u{args.threshold}{args.save_suffix}" - ) + save_str = f"{save_model_path.replace('/','_')}_b{args.block_size}_u{args.threshold}{args.save_suffix}" + if args.adjust_threshold: + save_str += ( + f"_adj_{args.threshold_increase_type}_{args.threshold_min_length}_{args.threshold_max_length}" + f"_{args.threshold}_{args.threshold_max}" + ) + if args.do_lowercase: save_str += "_lc" if args.do_remove_punct: save_str += "_rmp" + print(save_str) eval_data = torch.load(args.eval_data_path) if args.valid_text_path is not None: valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") @@ -348,11 +408,8 @@ def main(args): model.model.config.model_type = model_type if "meta-clf" in args.adapter_path: clf = model.model.classifier - model.model.classifier = torch.nn.Sequential( - clf, - torch.nn.Linear(clf.out_features, 1) - ) - + model.model.classifier = torch.nn.Sequential(clf, torch.nn.Linear(clf.out_features, 1)) + # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) @@ -362,6 +419,7 @@ def main(args): # Initialize lists to store scores for each metric across all languages u_scores, t_scores, punct_scores = [], [], [] u_accs, t_accs, punct_accs = [], [], [] + thresholds_t, thresholds_adj = [], [] for lang_code, dsets in tqdm(eval_data.items()): if args.include_langs is not None and lang_code not in args.include_langs: @@ -374,7 +432,7 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"] sent_pairs = generate_pairs( - sentences, + sentences, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct, pair_sample_pct=args.pair_sample_pct, @@ -382,7 +440,7 @@ def main(args): min_pair_length=args.min_pair_length, ) - if "train_logits" in f[lang_code][dataset_name]: + if "train_logits" in f[lang_code][dataset_name] and not args.skip_adaptation: feature_indices = None # it is sufficient to feed in 1 long sequence of tokens here since we only use logits for LR clf = train_mixture( @@ -419,15 +477,33 @@ def main(args): clfs[lang_code][dataset_name] = clf clf = list(copy.deepcopy(clf)) + threshold_t = float(clf[-1]) clf[-1] = args.threshold else: + threshold_t = 0 + clf = [None, None, None, args.threshold] score_t = score_punct = None acc_t = acc_punct = None score_u = [] acc_u = [] + thresholds = [] for i, pair in enumerate(sent_pairs): start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] + if args.adjust_threshold: + seq_len = f[lang_code][dataset_name]["test_n_logits"][i] + threshold_adjusted = calculate_threshold( + sequence_length=seq_len, + max_length=args.threshold_max_length, + min_length=args.threshold_min_length, + max_threshold=args.threshold_max, + default_threshold=args.threshold, + increase_type=args.threshold_increase_type, + ) + clf[-1] = threshold_adjusted + thresholds.append(threshold_adjusted) + else: + thresholds.append(args.threshold) single_score_u, _, info = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:][start:end], @@ -443,6 +519,7 @@ def main(args): acc_u = np.mean(acc_u) acc_t = np.mean(acc_t) if score_t else None acc_punct = np.mean(acc_punct) if score_punct else None + threshold = np.mean(thresholds) results[lang_code][dataset_name] = { "u": score_u, @@ -451,6 +528,8 @@ def main(args): "u_acc": acc_u, "t_acc": acc_t, "punct_acc": acc_punct, + "threshold_t": threshold_t, + "threshold_adj": threshold, } # just for printing @@ -465,9 +544,12 @@ def main(args): t_accs.append((acc_t, lang_code)) punct_scores.append((score_punct, lang_code)) punct_accs.append((acc_punct, lang_code)) + thresholds_t.append((threshold_t, lang_code)) + thresholds_adj.append((threshold, lang_code)) print(f"{lang_code} {dataset_name} {score_u:.3f} {score_t:.3f} {score_punct:.3f}") print(f"ACC: {acc_u:.3f} {acc_t:.3f} {acc_punct:.3f}") + print(f"Threshold_t: {threshold_t:.3f} Threshold_adj: {threshold:.3f}") # Compute statistics for each metric across all languages results_avg = { @@ -477,6 +559,8 @@ def main(args): "u_acc": compute_statistics(u_accs), "t_acc": compute_statistics(t_accs), "punct_acc": compute_statistics(punct_accs), + "threshold_t": compute_statistics(thresholds_t), + "threshold_adj": compute_statistics(thresholds_adj), "include_langs": args.include_langs, } @@ -489,7 +573,6 @@ def main(args): indent=4, ) - # Write results_avg to JSON json.dump( results_avg, open( @@ -499,6 +582,9 @@ def main(args): indent=4, ) os.remove(f.filename) + + print(results_avg) + print(save_str) return results, results_avg, total_test_time From e08ab571d21af417bfa757c6e3dd5068ccebc609 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 5 Apr 2024 14:21:05 +0000 Subject: [PATCH 107/262] fix f return --- wtpsplit/train/evaluate.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index d4886d53..26f864ba 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -165,7 +165,7 @@ def evaluate_sentence_pairwise( ) # get logits for each pair - logits = process_logits_k_mers( + logits, n_tokens_list = process_logits_k_mers( pairs=sampled_pairs, model=PyTorchWrapper(model.backbone), lang_code=lang_code, @@ -242,7 +242,7 @@ def evaluate_sentence_kmers( ) # get logits for each pair - logits = process_logits_k_mers( + logits, n_tokens_list = process_logits_k_mers( pairs=sampled_k_mers, model=PyTorchWrapper(model.backbone), lang_code=lang_code, From 4b748285a992c6f96a48d55bfe4cb753b581f751 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 8 Apr 2024 21:07:15 +0000 Subject: [PATCH 108/262] update --- wtpsplit/evaluation/intrinsic_pairwise.py | 122 ++++++++++------------ 1 file changed, 56 insertions(+), 66 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index f120c0ae..2dc7371e 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -57,20 +57,22 @@ class Args: do_lowercase: bool = False do_remove_punct: bool = False skip_adaptation: bool = False - # pairwise-specific args - max_n_pairs: int = sys.maxsize - pair_sample_pct: float = 0.5 - min_pair_length: int = 0 + keep_logits: bool = False + + # k_mer-specific args + k: int = 2 + max_n_samples: int = sys.maxsize + sample_pct: float = 0.5 + min_k_mer_length: int = 0 adjust_threshold: bool = False + # threshold threshold_increase_type: str = "linear" threshold_min_length: int = 0 threshold_max_length: int = 256 threshold_max: float = 0.1 -def calculate_threshold( - sequence_length, max_length, min_length, max_threshold, increase_type="linear", default_threshold=0.01 -): +def calculate_threshold(sequence_length, max_length, min_length, max_threshold, default_threshold=0.01): """ Calculates the threshold based on the sequence length with various increase types ('linear', 'logarithmic', 'quadratic', 'exponential', 'sigmoidal') from default_threshold @@ -86,26 +88,13 @@ def calculate_threshold( """ # Normalize sequence length to a range [0, 1] - normalized_length = (sequence_length - max_length) / (min_length - max_length) - - if increase_type == "linear": - threshold = normalized_length * (max_threshold - default_threshold) + default_threshold - elif increase_type == "logarithmic": - # Adjusted logarithmic calculation for a more distinctive curve - if normalized_length > 0: - threshold = ( - np.log1p(normalized_length * (np.e - 1)) / np.log(np.e) * (max_threshold - default_threshold) - + default_threshold - ) - else: - threshold = default_threshold - elif increase_type == "quadratic": - threshold = (normalized_length**2) * (max_threshold - default_threshold) + default_threshold - elif increase_type == "sigmoidal": - sigmoid_threshold = 1 / (1 + np.exp(-10 * (normalized_length - 0.5))) - threshold = sigmoid_threshold * (max_threshold - default_threshold) + default_threshold + if max_length == min_length: + # Ensure no division by zero + normalized_length = 0 else: - threshold = normalized_length * (max_threshold - default_threshold) + default_threshold + normalized_length = (sequence_length - max_length) / (min_length - max_length) + + threshold = normalized_length * (max_threshold - default_threshold) + default_threshold # Ensure the threshold does not exceed the bounds threshold = min(max(threshold, default_threshold), max_threshold) @@ -153,17 +142,17 @@ def generate_pairs( sentences: List[str], do_lowercase: bool, do_remove_punct: bool, - pair_sample_pct: float = 1, - max_n_pairs: int = sys.maxsize, - min_pair_length: int = 0, + sample_pct: float = 1, + max_n_samples: int = sys.maxsize, + min_k_mer_length: int = 0, ) -> List[Tuple[str, str]]: """Generate sentence pairs from a list of sentences. Args: sentences (List[str]): Input list of sentences. - pair_sample_pct (float): Percentage of pairs to sample. - max_n_pairs (int): Maximum number of pairs to sample. - min_pair_length (int): Minimum length of a sentence pair. + sample_pct (float): Percentage of pairs to sample. + max_n_samples (int): Maximum number of pairs to sample. + min_k_mer_length (int): Minimum length of a sentence pair. do_lowercase (bool): Whether to lowercase the sentences. do_remove_punct (bool): Whether to remove punctuation from the sentences. @@ -172,7 +161,7 @@ def generate_pairs( """ random.seed(42) n_pairs = len(sentences) // 2 - sample_size = min(round(n_pairs * pair_sample_pct), max_n_pairs) + sample_size = min(round(n_pairs * sample_pct), max_n_samples) # If we need to sample a subset of all possible pairs, do so efficiently if sample_size < n_pairs: @@ -180,14 +169,14 @@ def generate_pairs( all_pairs = [ (sentences[2 * i], sentences[2 * i + 1]) for i in sampled_indices - if len(sentences[2 * i]) + len(sentences[2 * i + 1]) > min_pair_length + if len(sentences[2 * i]) + len(sentences[2 * i + 1]) > min_k_mer_length ] else: - # Generate all pairs that meet the min_pair_length criterion + # Generate all pairs that meet the min_k_mer_length criterion all_pairs = [ (sentences[i], sentences[i + 1]) for i in range(0, len(sentences) - 1, 2) - if len(sentences[i]) + len(sentences[i + 1]) > min_pair_length + if len(sentences[i]) + len(sentences[i + 1]) > min_k_mer_length ] # corrupt pairs @@ -257,7 +246,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # FIXME: revert to "a" start_time = time.time() - with h5py.File(logits_path, "w") as f, torch.no_grad(): + with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in Constants.LANGINFO.index: if args.include_langs is not None and lang_code not in args.include_langs: continue @@ -297,13 +286,14 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"] - all_pairs_test = generate_pairs( + all_pairs_test = generate_k_mers( test_sentences, + k=args.k, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct, - pair_sample_pct=args.pair_sample_pct, - max_n_pairs=args.max_n_pairs, - min_pair_length=args.min_pair_length, + sample_pct=args.sample_pct, + max_n_samples=args.max_n_samples, + min_k_mer_length=args.min_k_mer_length, ) start_time = time.time() # Start timing for test logits processing @@ -329,8 +319,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # get_labels returns 2nd label at end of seq, which we do not want. # label is at position -2 --> remove and add back 0 to end of sequence test_labels = [ - np.append(get_labels(lang_code, [pair[0], pair[1]], after_space=False)[:-2], 0) - for pair in all_pairs_test + np.append(get_labels(lang_code, pair, after_space=False)[:-2], 0) for pair in all_pairs_test ] # flatten; append 0 eos to account for later indexing/slicing @@ -343,15 +332,16 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dset_group.create_dataset("test_n_logits", data=test_n_logits) train_sentences = dataset["meta"].get("train_data") - if train_sentences is not None and "train_logits" not in dset_group: + if train_sentences is not None and "train_logits" not in dset_group and not args.skip_adaptation: train_sentences = train_sentences[: args.max_n_train_sentences] - all_pairs_train = generate_pairs( + all_pairs_train = generate_k_mers( train_sentences, + k=args.k, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct, - pair_sample_pct=args.pair_sample_pct, - max_n_pairs=args.max_n_pairs, - min_pair_length=args.min_pair_length, + sample_pct=args.sample_pct, + max_n_samples=args.max_n_samples, + min_k_mer_length=args.min_k_mer_length, ) train_logits, train_n_logits = process_logits_k_mers( @@ -360,8 +350,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st train_logits = np.concatenate(train_logits) train_labels = [ - np.append(get_labels(lang_code, [pair[0], pair[1]], after_space=False)[:-2], 0) - for pair in all_pairs_train + np.append(get_labels(lang_code, pair, after_space=False)[:-2], 0) for pair in all_pairs_train ] train_labels = np.append(np.concatenate(train_labels), 0) assert len(train_labels) == len(train_logits) + 1 @@ -378,12 +367,7 @@ def main(args): save_model_path = args.model_path if args.adapter_path: save_model_path = args.adapter_path - save_str = f"{save_model_path.replace('/','_')}_b{args.block_size}_u{args.threshold}{args.save_suffix}" - if args.adjust_threshold: - save_str += ( - f"_adj_{args.threshold_increase_type}_{args.threshold_min_length}_{args.threshold_max_length}" - f"_{args.threshold}_{args.threshold_max}" - ) + save_str = f"{save_model_path.replace('/','_')}_b{args.block_size}_u{args.threshold}_k_{args.k}{args.save_suffix}" if args.do_lowercase: save_str += "_lc" @@ -412,6 +396,11 @@ def main(args): # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) + if args.adjust_threshold: + save_str += ( + f"_adj_{args.threshold_increase_type}_{args.threshold_min_length}_{args.threshold_max_length}" + f"_{args.threshold}_{args.threshold_max}" + ) # now, compute the intrinsic scores. results = {} @@ -431,13 +420,14 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"] - sent_pairs = generate_pairs( + sent_k_mers = generate_k_mers( sentences, + k=args.k, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct, - pair_sample_pct=args.pair_sample_pct, - max_n_pairs=args.max_n_pairs, - min_pair_length=args.min_pair_length, + sample_pct=args.sample_pct, + max_n_samples=args.max_n_samples, + min_k_mer_length=args.min_k_mer_length, ) if "train_logits" in f[lang_code][dataset_name] and not args.skip_adaptation: @@ -461,12 +451,12 @@ def main(args): acc_punct = [] # evaluate each pair - for i, pair in enumerate(sent_pairs): + for i, k_mer in enumerate(sent_k_mers): start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] single_score_t, single_score_punct, info = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:][start:end], - list(pair), + list(k_mer), *clf, ) score_t.append(single_score_t) @@ -488,7 +478,7 @@ def main(args): score_u = [] acc_u = [] thresholds = [] - for i, pair in enumerate(sent_pairs): + for i, k_mer in enumerate(sent_k_mers): start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] if args.adjust_threshold: seq_len = f[lang_code][dataset_name]["test_n_logits"][i] @@ -498,7 +488,6 @@ def main(args): min_length=args.threshold_min_length, max_threshold=args.threshold_max, default_threshold=args.threshold, - increase_type=args.threshold_increase_type, ) clf[-1] = threshold_adjusted thresholds.append(threshold_adjusted) @@ -507,7 +496,7 @@ def main(args): single_score_u, _, info = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:][start:end], - list(pair), + list(k_mer), *clf, ) score_u.append(single_score_u) @@ -581,7 +570,8 @@ def main(args): ), indent=4, ) - os.remove(f.filename) + if not args.keep_logits: + os.remove(f.filename) print(results_avg) print(save_str) From 5fba936822cc513a9686b66458e34aa6eed93828 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 8 Apr 2024 21:10:05 +0000 Subject: [PATCH 109/262] keep logits --- wtpsplit/evaluation/intrinsic.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 563fedd1..1381114d 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -54,6 +54,7 @@ class Args: save_suffix: str = "" do_lowercase: bool = False do_remove_punct: bool = False + keep_logits: bool = False def process_logits(text, model, lang_code, args): @@ -372,7 +373,8 @@ def main(args): ), indent=4, ) - os.remove(f.filename) + if not args.keep_logits: + os.remove(f.filename) return results, results_avg, total_test_time From 127dd5c5579cd406db05f6a22134be7c15c1f0e0 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 9 Apr 2024 13:11:57 +0000 Subject: [PATCH 110/262] reuse logits --- wtpsplit/evaluation/intrinsic.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 1381114d..6ed67fe3 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -109,7 +109,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st total_test_time = 0 # Initialize total test processing time # TODO: revert to "a" - with h5py.File(logits_path, "w") as f, torch.no_grad(): + with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in use_langs: if args.include_langs is not None and lang_code not in args.include_langs: continue @@ -228,7 +228,7 @@ def main(args): if args.adapter_path: save_model_path = args.adapter_path save_str = ( - f"{save_model_path.replace('/','_')}_b{args.block_size}_s{args.stride}_u{args.threshold}{args.save_suffix}" + f"{save_model_path.replace('/','_')}_b{args.block_size}_s{args.stride}" ) if args.do_lowercase: save_str += "_lc" @@ -268,6 +268,8 @@ def main(args): # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) + + save_str += f"_u{args.threshold}{args.save_suffix}" # now, compute the intrinsic scores. results = {} From 62b6d7bbe6b4eaf93bfeaffbbd6496788624aecc Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 9 Apr 2024 13:24:01 +0000 Subject: [PATCH 111/262] re-use logits --- wtpsplit/evaluation/intrinsic_pairwise.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index 2dc7371e..c5563d5f 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -57,7 +57,7 @@ class Args: do_lowercase: bool = False do_remove_punct: bool = False skip_adaptation: bool = False - keep_logits: bool = False + keep_logits: bool = True # k_mer-specific args k: int = 2 @@ -244,7 +244,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st total_test_time = 0 # Initialize total test processing time - # FIXME: revert to "a" start_time = time.time() with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in Constants.LANGINFO.index: @@ -367,7 +366,7 @@ def main(args): save_model_path = args.model_path if args.adapter_path: save_model_path = args.adapter_path - save_str = f"{save_model_path.replace('/','_')}_b{args.block_size}_u{args.threshold}_k_{args.k}{args.save_suffix}" + save_str = f"{save_model_path.replace('/','_')}_b{args.block_size}_k{args.k}{args.save_suffix}" if args.do_lowercase: save_str += "_lc" @@ -396,6 +395,7 @@ def main(args): # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) + save_str += f"_u{args.threshold}" if args.adjust_threshold: save_str += ( f"_adj_{args.threshold_increase_type}_{args.threshold_min_length}_{args.threshold_max_length}" From 02dba866e4cc44e9744653af99d2e140e3673f9d Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 13 Apr 2024 11:23:32 +0000 Subject: [PATCH 112/262] eval + train ADP on Igor's models --- configs/peft/adapter_igor.json | 36 +++++++++++++++++++++ wtpsplit/evaluation/intrinsic.py | 27 +++++++++------- wtpsplit/train/train_adapter.py | 54 +++++++++++++++++++------------- 3 files changed, 85 insertions(+), 32 deletions(-) create mode 100644 configs/peft/adapter_igor.json diff --git a/configs/peft/adapter_igor.json b/configs/peft/adapter_igor.json new file mode 100644 index 00000000..3b7c89af --- /dev/null +++ b/configs/peft/adapter_igor.json @@ -0,0 +1,36 @@ +{ + "model_name_or_path": "xlmr-multilingual-sentence-segmentation-09-04-3L-256BS-UD-OPUS-TED", + "output_dir": "xlmr-3l-v3-igor-mixture_adapter_rf16_ep30_v2", + "block_size": 256, + "eval_stride": 128, + "do_train": true, + "do_eval": true, + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 8, + "preprocessing_num_workers": 1, + "learning_rate": 3e-4, + "fp16": false, + "num_train_epochs": 30, + "logging_steps": 50, + "report_to": "wandb", + "save_steps": 100000000, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_ratio": 0.1, + "non_punctuation_sample_ratio": null, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", + "adapter_config": "seq_bn[reduction_factor=16]", + "weight_decay": 0.0, + "auxiliary_remove_prob": 0.0, + "train_adapter": true +} \ No newline at end of file diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 6ed67fe3..1f144848 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -23,6 +23,7 @@ logger = logging.getLogger() logger.setLevel(logging.INFO) + @dataclass class Args: model_path: str @@ -148,12 +149,16 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st with_head=True, load_as="text", ) - if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")): + if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( + os.path.join(args.model_path, "model.safetensors") + ): model_path = os.path.join(args.model_path, dataset_name, "en") if not os.path.exists(model_path): model_path = args.model_path print(model_path) - model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) + model = PyTorchWrapper( + AutoModelForTokenClassification.from_pretrained(model_path).to(args.device) + ) except Exception as e: print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue @@ -227,9 +232,7 @@ def main(args): save_model_path = args.model_path if args.adapter_path: save_model_path = args.adapter_path - save_str = ( - f"{save_model_path.replace('/','_')}_b{args.block_size}_s{args.stride}" - ) + save_str = f"{save_model_path.replace('/','_')}_b{args.block_size}_s{args.stride}" if args.do_lowercase: save_str += "_lc" if args.do_remove_punct: @@ -243,7 +246,9 @@ def main(args): print("Loading model...") # if model_path does not contain a model, take first subfolder - if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")): + if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( + os.path.join(args.model_path, "model.safetensors") + ): try: model_path = os.path.join(args.model_path, os.listdir(args.model_path)[0], "en") except: @@ -261,15 +266,15 @@ def main(args): model.model.config.model_type = model_type if "meta-clf" in args.adapter_path: clf = model.model.classifier - model.model.classifier = torch.nn.Sequential( - clf, - torch.nn.Linear(clf.out_features, 1) - ) + model.model.classifier = torch.nn.Sequential(clf, torch.nn.Linear(clf.out_features, 1)) # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) - + save_str += f"_u{args.threshold}{args.save_suffix}" + + if "multilingual" in model_path: + Constants.NEWLINE_INDEX += 1 # now, compute the intrinsic scores. results = {} diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 734297e8..7fb04766 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -40,7 +40,7 @@ class Args: model_name_or_path: str base_model: str = "xlm-roberta-base" shuffle: bool = True - text_path: str = "data/eval.pth" + text_path: str = "data/all_data.pth" include_languages: List[str] = None preprocessing_num_workers: int = 1 block_size: int = 512 @@ -67,6 +67,7 @@ class Args: do_process: bool = False meta_clf: bool = False wandb_project: str = "sentence" + eval_every: int = 5 # corruption do_lowercase: bool = False do_remove_punct: bool = False @@ -92,6 +93,9 @@ def main(): if (label_args.use_auxiliary or args.do_auxiliary_training or args.meta_clf) else 0 ) + if "multilingual" in args.model_name_or_path: + # Igor's models were not trained with aux. objective. + num_labels = 2 config = SubwordXLMConfig.from_pretrained( args.model_name_or_path, num_labels=num_labels, @@ -106,7 +110,7 @@ def prepare_dataset( split="train", do_lowercase=False, do_remove_punct=False, - subsample: Union[None, int, float] = None + subsample: Union[None, int, float] = None, ): # maybe we use more than 1 lang later at once. with training_args.main_process_first(): @@ -164,8 +168,8 @@ def prepare_dataset( subsample = min(subsample, len(dataset)) dataset = dataset.select(range(subsample)) elif isinstance(subsample, float): - dataset = dataset.select(range(int(subsample * len(dataset)))) - logger.warning(f"Subsampled {len(dataset)} examples from {old_length}.") + dataset = dataset.select(range(int(subsample * len(dataset)))) + logger.warning(f"Subsampled {len(dataset)} examples from {old_length}.") # very likely not relevant / used only for the compound part if args.ignore_non_hyphen: @@ -371,9 +375,9 @@ def maybe_pad(text): with training_args.main_process_first(): dataset = dataset.map( lambda x: { - "input_ids": [ - tokenizer.convert_tokens_to_ids(tokenizer.bos_token) - ] + x["input_ids"] + [tokenizer.convert_tokens_to_ids(tokenizer.eos_token)] + "input_ids": [tokenizer.convert_tokens_to_ids(tokenizer.bos_token)] + + x["input_ids"] + + [tokenizer.convert_tokens_to_ids(tokenizer.eos_token)] }, batched=False, ) @@ -516,7 +520,7 @@ def compute_metrics(trainer): label_dict = ( get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) ) - + if adapter_args.train_adapter: # init new adapter model.backbone.add_adapter( @@ -529,7 +533,7 @@ def compute_metrics(trainer): training_args.adapter_warmup_steps = args.adapter_warmup_steps training_args.adapter_lr_multiplier = args.adapter_lr_multiplier kwargs = {} - + with training_args.main_process_first(): logger.warning(model.backbone.adapter_summary()) @@ -552,17 +556,23 @@ def compute_metrics(trainer): torch.nn.Linear(clf.out_features, 1), ) model.backbone.config.num_labels = 1 - - if args.one_sample_per_line: - # eval only 10x during the entire training - training_args.evaluation_strategy = "steps" - training_args.eval_steps = max(len(train_dataset) // training_args.per_device_train_batch_size, 5) - # log twice as often - training_args.logging_steps = training_args.eval_steps // 2 - trainer_cls = AdapterTrainer if adapter_args.train_adapter else Trainer + # if args.one_sample_per_line: + # eval only 5x during the entire training + training_args.evaluation_strategy = "steps" + training_args.eval_steps = ( + len(train_dataset) + // training_args.per_device_train_batch_size + // training_args.gradient_accumulation_steps + // args.eval_every + * training_args.num_train_epochs + ) + # log more often than this + training_args.logging_steps = training_args.eval_steps // 4 + + trainer_cls = AdapterTrainer if adapter_args.train_adapter else Trainer # add logging_prefix and skip_eval_loss as args to trainer_cls if trainer_cls is AdapterTrainer only - + trainer = trainer_cls( model, training_args, @@ -605,14 +615,16 @@ def compute_metrics(trainer): else: eval_function = "intrinsic" if args.do_lowercase and args.do_remove_punct: - suffix = "--do_lowercase --do_remove_punct" + suffix = "--do_lowercase --do_remove_punct" + elif "multilingual" in trainings_args.model_name_or_path: + suffix = "--threshold 0.5" else: - suffix = "" + suffix = "" if "adapter" in training_args.output_dir: model_info = f"--model_path {args.model_name_or_path} --adapter_path {training_args.output_dir}" else: model_info = f"--model_path {training_args.output_dir}" - + if "verses" in args.text_path or "lines" in args.text_path: cmd = f"python3 wtpsplit/evaluation/{eval_function}.py {model_info} --threshold 0.1 --custom_language_list data/mldb_langs.csv --eval_data_path {args.text_path} {suffix}" else: From eadfc37ea239b9744f8d361eaf368558c843a0d4 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 13 Apr 2024 12:04:32 +0000 Subject: [PATCH 113/262] fix eval steps --- wtpsplit/train/train_adapter.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 7fb04766..72798f5a 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -560,15 +560,18 @@ def compute_metrics(trainer): # if args.one_sample_per_line: # eval only 5x during the entire training training_args.evaluation_strategy = "steps" - training_args.eval_steps = ( - len(train_dataset) - // training_args.per_device_train_batch_size - // training_args.gradient_accumulation_steps - // args.eval_every - * training_args.num_train_epochs + training_args.eval_steps = max( + ( + len(train_dataset) + // training_args.per_device_train_batch_size + // training_args.gradient_accumulation_steps + // args.eval_every + * training_args.num_train_epochs + ), + args.eval_every, ) # log more often than this - training_args.logging_steps = training_args.eval_steps // 4 + training_args.logging_steps = training_args.eval_steps // 5 trainer_cls = AdapterTrainer if adapter_args.train_adapter else Trainer # add logging_prefix and skip_eval_loss as args to trainer_cls if trainer_cls is AdapterTrainer only From b89c6b3bed5db62786d62e1e2780547194667bea Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 13 Apr 2024 18:57:05 +0000 Subject: [PATCH 114/262] add extra langs csv --- data/extra_langs.csv | 1 + 1 file changed, 1 insertion(+) create mode 100644 data/extra_langs.csv diff --git a/data/extra_langs.csv b/data/extra_langs.csv new file mode 100644 index 00000000..1c143b86 --- /dev/null +++ b/data/extra_langs.csv @@ -0,0 +1 @@ +ende,hineng,msaea,nepeng,spaeng \ No newline at end of file From 61661e1e9b168c8b2b5e1e41d0defcc379f02c1a Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 13 Apr 2024 19:06:42 +0000 Subject: [PATCH 115/262] return more metrics --- wtpsplit/evaluation/intrinsic_list.py | 98 ++++++++++++++++++--------- 1 file changed, 66 insertions(+), 32 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py index 62ca5e37..75c42918 100644 --- a/wtpsplit/evaluation/intrinsic_list.py +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -18,6 +18,7 @@ from wtpsplit.evaluation import evaluate_mixture, get_labels, token_to_char_probs, train_mixture from wtpsplit.extract import PyTorchWrapper, extract from wtpsplit.utils import Constants +from collections import defaultdict logger = logging.getLogger() logger.setLevel(logging.INFO) @@ -150,7 +151,9 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st for n, p in model.backbone.named_parameters(): if "LayerNorm" in n: p.data = ln_dict[n].data - if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")): + if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( + os.path.join(args.model_path, "model.safetensors") + ): model_path = os.path.join(args.model_path, dataset_load_name, "en") print(model_path) model = PyTorchWrapper( @@ -253,21 +256,34 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st def compute_statistics(values): - if not values: # Check for empty values list - return {"mean": None, "median": None, "std": None, "min": None, "min_lang": None, "max": None, "max_lang": None} - - scores, langs = zip(*values) # Unpack scores and languages - min_index = np.argmin(scores) - max_index = np.argmax(scores) - return { - "mean": np.mean(scores), - "median": np.median(scores), - "std": np.std(scores), - "min": scores[min_index], - "min_lang": langs[min_index], - "max": scores[max_index], - "max_lang": langs[max_index], - } + if not values: + return {} + + # Extract all possible keys (metrics) from the first score dictionary, assuming all dicts have the same keys + all_metrics = values[0][0].keys() + + # Prepare a dictionary to store statistics for each metric + stats_dict = {} + + for metric in all_metrics: + scores = [score[metric] for score, lang in values] + langs = [lang for score, lang in values] + + # Calculate statistics for the current metric + min_index = np.argmin(scores) + max_index = np.argmax(scores) + + stats_dict[metric] = { + "mean": np.mean(scores), + "median": np.median(scores), + "std": np.std(scores), + "min": scores[min_index], + "min_lang": langs[min_index], + "max": scores[max_index], + "max_lang": langs[max_index], + } + + return stats_dict def main(args): @@ -290,7 +306,9 @@ def main(args): print("Loading model...") # if model_path does not contain a model, take first subfolder - if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")): + if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( + os.path.join(args.model_path, "model.safetensors") + ): model_path = os.path.join(args.model_path, os.listdir(args.model_path)[0], "en") print("joined") print(model_path) @@ -351,8 +369,8 @@ def main(args): if clf[0] is not None: print(clf) - score_t = [] - score_punct = [] + score_t = defaultdict(list) + score_punct = defaultdict(list) for i, chunk in tqdm(enumerate(sentences), total=len(sentences), disable=args.tqdm): start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] single_score_t, single_score_punct, info = evaluate_mixture( @@ -361,9 +379,13 @@ def main(args): list(chunk), *clf, ) - score_t.append(single_score_t) - score_punct.append(single_score_punct) - + score_t["f1"].append(single_score_t) + for key in ["precision", "recall", "correct_pairwise"]: + score_t[key].append(info["info_newline"][key]) + score_punct["f1"].append(single_score_punct) + for key in ["precision", "recall", "correct_pairwise"]: + score_punct[key].append(info["info_transformed"][key]) + clfs[lang_code][dataset_name] = clf clf = list(copy.deepcopy(clf)) @@ -371,7 +393,7 @@ def main(args): else: score_t = score_punct = None - score_u = [] + score_u = defaultdict(list) for i, chunk in tqdm(enumerate(sentences), total=len(sentences), disable=args.tqdm): start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] single_score_u, _, info = evaluate_mixture( @@ -380,16 +402,28 @@ def main(args): list(chunk), *clf, ) - score_u.append(single_score_u) - - score_u = np.mean(score_u) - score_t = np.mean(score_t) if score_t else None - score_punct = np.mean(score_punct) if score_punct else None + + score_u["f1"].append(single_score_u) + for key in ["precision", "recall", "correct_pairwise"]: + score_u[key].append(info["info_newline"][key]) + + score_u = {key: np.mean(value) for key, value in score_u.items()} + score_t = {key: np.mean(value) for key, value in score_t.items()} if score_t else None + score_punct = {key: np.mean(value) for key, value in score_punct.items()} if score_punct else None results[lang_code][dataset_name] = { - "u": score_u, - "t": score_t, - "punct": score_punct, + "u": score_u["f1"], + "t": score_t["f1"], + "punct": score_punct["f1"], + "u_precision": score_u["precision"], + "t_precision": score_t["precision"], + "punct_precision": score_punct["precision"], + "u_recall": score_u["recall"], + "t_recall": score_t["recall"], + "punct_recall": score_punct["recall"], + "u_acc": score_u["correct_pairwise"], + "t_acc": score_t["correct_pairwise"], + "punct_acc": score_punct["correct_pairwise"], } # just for printing @@ -400,7 +434,7 @@ def main(args): t_scores.append((score_t, lang_code)) punct_scores.append((score_punct, lang_code)) - print(f"{lang_code} {dataset_name} {score_u:.3f} {score_t:.3f} {score_punct:.3f}") + print(f"{lang_code} {dataset_name} {score_u['f1']:.3f} {score_t['f1']:.3f} {score_punct['f1']:.3f}") # Compute statistics for each metric across all languages results_avg = { From b370546d53c7f1143d9dbf9884e2e2d34566efcc Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 14 Apr 2024 09:58:59 +0000 Subject: [PATCH 116/262] fix decision function for Igor's models --- wtpsplit/evaluation/intrinsic.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 1f144848..ec9a61b6 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -56,6 +56,7 @@ class Args: do_lowercase: bool = False do_remove_punct: bool = False keep_logits: bool = False + skip_adaptation: bool = False def process_logits(text, model, lang_code, args): @@ -82,6 +83,11 @@ def process_logits(text, model, lang_code, args): logits = char_probs + if len(model.model.config.id2label) == 2: + # Igor's models: take winning logit + logits = np.expand_dims(logits.argmax(axis=1), axis=1) + # we apply sigmoid later; convert to fake logits + logits = np.log((logits + 1e-8) / (1 - logits + 1e-8)) return logits @@ -109,7 +115,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st total_test_time = 0 # Initialize total test processing time - # TODO: revert to "a" with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in use_langs: if args.include_langs is not None and lang_code not in args.include_langs: @@ -190,7 +195,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dset_group.create_dataset("test_labels", data=test_labels) train_sentences = dataset["meta"].get("train_data") - if train_sentences is not None and "train_logits" not in dset_group: + if train_sentences is not None and "train_logits" not in dset_group and not args.skip_adaptation: if isinstance(train_sentences[0], list): train_sentences = [item for sublist in train_sentences for item in sublist] train_sentences = [ @@ -272,9 +277,6 @@ def main(args): f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) save_str += f"_u{args.threshold}{args.save_suffix}" - - if "multilingual" in model_path: - Constants.NEWLINE_INDEX += 1 # now, compute the intrinsic scores. results = {} @@ -302,7 +304,7 @@ def main(args): if lang_code not in f or dataset_name not in f[lang_code]: continue - if "train_logits" in f[lang_code][dataset_name]: + if "train_logits" in f[lang_code][dataset_name] and not args.skip_adaptation: feature_indices = None clf = train_mixture( [lang_code], @@ -326,6 +328,8 @@ def main(args): clf[-1] = args.threshold else: score_t = score_punct = None + clf = [None, None, None, args.threshold] + score_t = score_punct = None score_u, _, _ = evaluate_mixture(lang_code, f[lang_code][dataset_name]["test_logits"][:], sentences, *clf) From dd1e5fcac1c4b4dff23c6c0bc08cbcab904f5060 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 14 Apr 2024 10:09:26 +0000 Subject: [PATCH 117/262] same fix for listwise --- wtpsplit/evaluation/intrinsic.py | 1 - wtpsplit/evaluation/intrinsic_list.py | 25 ++++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index ec9a61b6..9523defe 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -329,7 +329,6 @@ def main(args): else: score_t = score_punct = None clf = [None, None, None, args.threshold] - score_t = score_punct = None score_u, _, _ = evaluate_mixture(lang_code, f[lang_code][dataset_name]["test_logits"][:], sentences, *clf) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py index 75c42918..6d641735 100644 --- a/wtpsplit/evaluation/intrinsic_list.py +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -57,6 +57,7 @@ class Args: do_remove_punct: bool = False do_strip: bool = False tqdm: bool = False + skip_adaptation: bool = False def process_logits_list(text, model, lang_code, block_size, stride, batch_size, verbose=True) -> List[np.ndarray]: @@ -83,6 +84,11 @@ def process_logits_list(text, model, lang_code, block_size, stride, batch_size, # padding is also removed here (via offset_mapping) logits = token_to_char_probs(merged_chunk, tokens, logits, tokenizer, offsets_mapping) + if len(model.model.config.id2label) == 2: + # Igor's models: take winning logit + logits = np.expand_dims(logits.argmax(axis=1), axis=1) + # we apply sigmoid later; convert to fake logits + logits = np.log((logits + 1e-8) / (1 - logits + 1e-8)) logits_list.append(logits) else: raise NotImplementedError("Only XLM models are supported for now") @@ -128,7 +134,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # eval data for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): - # train on all mldb, eval on mldbW + # train on all mldb, eval on mldbW if "mldbW" in args.eval_data_path and ( "mldbW" not in args.model_path and "mldbW" not in args.adapter_path ): @@ -212,7 +218,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dset_group.create_dataset("test_logit_lengths", data=test_logit_lengths) train_sentences = dataset["meta"].get("train_data") - if train_sentences is not None and "train_logits" not in dset_group: + if train_sentences is not None and "train_logits" not in dset_group and not args.skip_adaptation: train_sentences = [ [ corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) @@ -268,11 +274,11 @@ def compute_statistics(values): for metric in all_metrics: scores = [score[metric] for score, lang in values] langs = [lang for score, lang in values] - + # Calculate statistics for the current metric min_index = np.argmin(scores) max_index = np.argmax(scores) - + stats_dict[metric] = { "mean": np.mean(scores), "median": np.median(scores), @@ -282,7 +288,7 @@ def compute_statistics(values): "max": scores[max_index], "max_lang": langs[max_index], } - + return stats_dict @@ -358,7 +364,7 @@ def main(args): if lang_code not in f or dataset_name not in f[lang_code]: continue - if "train_logits" in f[lang_code][dataset_name]: + if "train_logits" in f[lang_code][dataset_name] and not args.skip_adaptation: feature_indices = None clf = train_mixture( [lang_code], @@ -385,12 +391,13 @@ def main(args): score_punct["f1"].append(single_score_punct) for key in ["precision", "recall", "correct_pairwise"]: score_punct[key].append(info["info_transformed"][key]) - + clfs[lang_code][dataset_name] = clf clf = list(copy.deepcopy(clf)) clf[-1] = args.threshold else: + clf = [None, None, None, args.threshold] score_t = score_punct = None score_u = defaultdict(list) @@ -402,11 +409,11 @@ def main(args): list(chunk), *clf, ) - + score_u["f1"].append(single_score_u) for key in ["precision", "recall", "correct_pairwise"]: score_u[key].append(info["info_newline"][key]) - + score_u = {key: np.mean(value) for key, value in score_u.items()} score_t = {key: np.mean(value) for key, value in score_t.items()} if score_t else None score_punct = {key: np.mean(value) for key, value in score_punct.items()} if score_punct else None From a96105ac2f5a0c92c90773a2a8179d916e9ee901 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 14 Apr 2024 11:11:57 +0000 Subject: [PATCH 118/262] also fix adp training w/ Igor's models. --- wtpsplit/train/train_adapter.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 72798f5a..666e1d80 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -93,9 +93,6 @@ def main(): if (label_args.use_auxiliary or args.do_auxiliary_training or args.meta_clf) else 0 ) - if "multilingual" in args.model_name_or_path: - # Igor's models were not trained with aux. objective. - num_labels = 2 config = SubwordXLMConfig.from_pretrained( args.model_name_or_path, num_labels=num_labels, From f97c280db6976449bd03b5d807d87cf2a784cbd3 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 14 Apr 2024 18:38:09 +0000 Subject: [PATCH 119/262] add possibility for clf_from_scratch --- wtpsplit/evaluation/intrinsic_list.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py index 6d641735..31413310 100644 --- a/wtpsplit/evaluation/intrinsic_list.py +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -58,6 +58,7 @@ class Args: do_strip: bool = False tqdm: bool = False skip_adaptation: bool = False + clf_from_scratch: bool = False def process_logits_list(text, model, lang_code, block_size, stride, batch_size, verbose=True) -> List[np.ndarray]: @@ -143,6 +144,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dataset_load_name = dataset_name try: if args.adapter_path: + if args.clf_from_scratch: + model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) model.model.load_adapter( args.adapter_path + "/" + dataset_load_name + "/" + lang_code, set_active=True, From c14a89353066c661bd5e425c8883570ec3beb102 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 15 Apr 2024 18:32:26 +0000 Subject: [PATCH 120/262] fix punct if no full logits --- wtpsplit/evaluation/intrinsic_list.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py index 31413310..fa7be03a 100644 --- a/wtpsplit/evaluation/intrinsic_list.py +++ b/wtpsplit/evaluation/intrinsic_list.py @@ -122,7 +122,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st total_test_time = 0 # Initialize total test processing time # TODO: revert to "a" - with h5py.File(logits_path, "w") as f, torch.no_grad(): + with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in use_langs: if args.include_langs is not None and lang_code not in args.include_langs: continue @@ -391,9 +391,13 @@ def main(args): score_t["f1"].append(single_score_t) for key in ["precision", "recall", "correct_pairwise"]: score_t[key].append(info["info_newline"][key]) - score_punct["f1"].append(single_score_punct) + score_punct["f1"].append(single_score_punct if single_score_punct is not None else 0.0) for key in ["precision", "recall", "correct_pairwise"]: - score_punct[key].append(info["info_transformed"][key]) + score_punct[key].append( + info["info_transformed"][key] + if single_score_punct is not None + else info["info_newline"][key] + ) clfs[lang_code][dataset_name] = clf From 7febe9a4fa9c116a57665330ef5b49a2dbfbe8af Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 16 Apr 2024 12:45:44 +0000 Subject: [PATCH 121/262] add option for lookahead only in first N layers --- wtpsplit/configs.py | 2 + wtpsplit/models.py | 261 +++++++++++++++++++++++++++++----------- wtpsplit/train/train.py | 5 +- 3 files changed, 196 insertions(+), 72 deletions(-) diff --git a/wtpsplit/configs.py b/wtpsplit/configs.py index 4eb5f25f..0b63587a 100644 --- a/wtpsplit/configs.py +++ b/wtpsplit/configs.py @@ -52,11 +52,13 @@ class SubwordXLMConfig(XLMRobertaConfig): def __init__( self, lookahead=None, + lookahead_split_layers=None, **kwargs, ): super().__init__(**kwargs) self.mixture_name = "xlm-token" self.lookahead = lookahead + self.lookahead_split_layers = lookahead_split_layers AutoConfig.register("bert-char", BertCharConfig) diff --git a/wtpsplit/models.py b/wtpsplit/models.py index 593d08ee..8579d1b3 100644 --- a/wtpsplit/models.py +++ b/wtpsplit/models.py @@ -8,7 +8,10 @@ from torch.nn import CrossEntropyLoss from torchinfo import summary from transformers import AutoModel, AutoModelForTokenClassification -from transformers.modeling_outputs import BaseModelOutputWithPoolingAndCrossAttentions +from transformers.modeling_outputs import ( + BaseModelOutputWithPoolingAndCrossAttentions, + BaseModelOutputWithPastAndCrossAttentions, +) from transformers.modeling_utils import ModuleUtilsMixin from transformers.models.bert.modeling_bert import BertEncoder, BertForTokenClassification, BertModel, BertPooler from transformers.models.canine.modeling_canine import ( @@ -39,6 +42,7 @@ XLMRobertaEmbeddings, XLMRobertaEncoder, XLMRobertaPooler, + XLMRobertaLayer, ) from wtpsplit.configs import BertCharConfig, LACanineConfig, SubwordXLMConfig @@ -1057,12 +1061,18 @@ def __init__(self, config, add_pooling_layer=True): self.config = config self.embeddings = XLMRobertaEmbeddings(config) - self.encoder = XLMRobertaEncoder(config) - + self.encoder = SubwordXLMRobertaEncoder(config) + self.lookahead_split_layers = config.lookahead_split_layers self.pooler = XLMRobertaPooler(config) if add_pooling_layer else None - self.effective_lookahead = ( - config.lookahead // config.num_hidden_layers if config.lookahead is not None else None - ) + if config.lookahead is not None: + divide_value = ( + self.lookahead_split_layers if self.lookahead_split_layers is not None else config.num_hidden_layers + ) + if config.lookahead_split_layers is not None: + assert self.lookahead_split_layers <= config.num_hidden_layers + self.effective_lookahead = config.lookahead // divide_value + else: + self.effective_lookahead = None # Initialize weights and apply final processing self.post_init() @@ -1143,8 +1153,8 @@ def forward( # We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length] # ourselves in which case we just need to make it broadcastable to all heads. - extended_attention_mask: torch.Tensor = self.get_extended_attention_mask( - attention_mask, input_shape, self.effective_lookahead + extended_attention_mask: torch.Tensor = get_extended_attention_mask( + self.config, attention_mask, input_shape, self.effective_lookahead, device, self.dtype ) # If a 2D or 3D attention mask is provided for the cross-attention @@ -1183,6 +1193,8 @@ def forward( output_attentions=output_attentions, output_hidden_states=output_hidden_states, return_dict=return_dict, + init_attention_mask=attention_mask, + dtype=self.dtype, ) sequence_output = encoder_outputs[0] pooled_output = self.pooler(sequence_output) if self.pooler is not None else None @@ -1199,74 +1211,179 @@ def forward( cross_attentions=encoder_outputs.cross_attentions, ) - def get_extended_attention_mask( + +def get_extended_attention_mask( + config, + attention_mask: Tensor, + input_shape: Tuple[int], + lookahead: Optional[int] = None, + device: torch.device = None, + dtype: torch.float = None, +) -> Tensor: + """ + Makes broadcastable attention and causal masks so that future and masked tokens are ignored. + + Arguments: + attention_mask (`torch.Tensor`): + Mask with ones indicating tokens to attend to, zeros for tokens to ignore. + input_shape (`Tuple[int]`): + The shape of the input to the model. + + Returns: + `torch.Tensor` The extended attention mask, with a the same dtype as `attention_mask.dtype`. + """ + + # if not (attention_mask.dim() == 2 and config.is_decoder): + # show warning only if it won't be shown in `create_extended_attention_mask_for_decoder` + # if device is not None: + # warnings.warn( + # "The `device` argument is deprecated and will be removed in v5 of Transformers.", FutureWarning + # ) + # We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length] + # ourselves in which case we just need to make it broadcastable to all heads. + if attention_mask.dim() == 3: + extended_attention_mask = attention_mask[:, None, :, :] + + elif attention_mask.dim() == 2: + # Provided a padding mask of dimensions [batch_size, seq_length] + # - if the model is a decoder, apply a causal mask in addition to the padding mask + # - if the model is an encoder, make the mask broadcastable to [batch_size, num_heads, seq_length, seq_length] + if config.is_decoder: + extended_attention_mask = ModuleUtilsMixin.create_extended_attention_mask_for_decoder( + input_shape, attention_mask, device + ) + if lookahead is not None: + # lookahead mask of shape [batch_size, 1, seq_length, seq_length] + # the current token should attend to the next `lookahead` tokens + # the current token should not attend to the previous `lookahead` tokens + _, seq_length = attention_mask.shape + # Create a lookahead mask + lookahead_mask = torch.tril(torch.ones(seq_length, seq_length), diagonal=lookahead, out=None).to( + attention_mask.device + ) + # Combine the attention mask with the lookahead mask + extended_attention_mask = attention_mask[:, None, None, :] * lookahead_mask + else: + extended_attention_mask = attention_mask[:, None, None, :] + else: + raise ValueError( + f"Wrong shape for input_ids (shape {input_shape}) or attention_mask (shape {attention_mask.shape})" + ) + + # Since attention_mask is 1.0 for positions we want to attend and 0.0 for + # masked positions, this operation will create a tensor which is 0.0 for + # positions we want to attend and the dtype's smallest value for masked positions. + # Since we are adding it to the raw scores before the softmax, this is + # effectively the same as removing these entirely. + extended_attention_mask = extended_attention_mask.to(dtype=dtype) # fp16 compatibility + extended_attention_mask = (1.0 - extended_attention_mask) * torch.finfo(dtype).min + return extended_attention_mask + + +# Copied from transformers.models.roberta.modeling_roberta.RobertaEncoder with Roberta->XLMRoberta +class SubwordXLMRobertaEncoder(nn.Module): + def __init__(self, config): + super().__init__() + self.config = config + self.layer = nn.ModuleList([XLMRobertaLayer(config) for _ in range(config.num_hidden_layers)]) + self.gradient_checkpointing = False + + def forward( self, - attention_mask: Tensor, - input_shape: Tuple[int], - lookahead: Optional[int] = None, - device: torch.device = None, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.FloatTensor] = None, + head_mask: Optional[torch.FloatTensor] = None, + encoder_hidden_states: Optional[torch.FloatTensor] = None, + encoder_attention_mask: Optional[torch.FloatTensor] = None, + past_key_values: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, + use_cache: Optional[bool] = None, + output_attentions: Optional[bool] = False, + output_hidden_states: Optional[bool] = False, + return_dict: Optional[bool] = True, + init_attention_mask: Optional[torch.Tensor] = None, dtype: torch.float = None, - ) -> Tensor: - """ - Makes broadcastable attention and causal masks so that future and masked tokens are ignored. + ) -> Union[Tuple[torch.Tensor], BaseModelOutputWithPastAndCrossAttentions]: + all_hidden_states = () if output_hidden_states else None + all_self_attentions = () if output_attentions else None + all_cross_attentions = () if output_attentions and self.config.add_cross_attention else None - Arguments: - attention_mask (`torch.Tensor`): - Mask with ones indicating tokens to attend to, zeros for tokens to ignore. - input_shape (`Tuple[int]`): - The shape of the input to the model. + if self.gradient_checkpointing and self.training: + if use_cache: + print("`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...") + use_cache = False - Returns: - `torch.Tensor` The extended attention mask, with a the same dtype as `attention_mask.dtype`. - """ - if dtype is None: - dtype = self.dtype - - if not (attention_mask.dim() == 2 and self.config.is_decoder): - # show warning only if it won't be shown in `create_extended_attention_mask_for_decoder` - if device is not None: - warnings.warn( - "The `device` argument is deprecated and will be removed in v5 of Transformers.", FutureWarning - ) - # We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length] - # ourselves in which case we just need to make it broadcastable to all heads. - if attention_mask.dim() == 3: - extended_attention_mask = attention_mask[:, None, :, :] - - elif attention_mask.dim() == 2: - # Provided a padding mask of dimensions [batch_size, seq_length] - # - if the model is a decoder, apply a causal mask in addition to the padding mask - # - if the model is an encoder, make the mask broadcastable to [batch_size, num_heads, seq_length, seq_length] - if self.config.is_decoder: - extended_attention_mask = ModuleUtilsMixin.create_extended_attention_mask_for_decoder( - input_shape, attention_mask, device - ) - if lookahead: - # lookahead mask of shape [batch_size, 1, seq_length, seq_length] - # the current token should attend to the next `lookahead` tokens - # the current token should not attend to the previous `lookahead` tokens - _, seq_length = attention_mask.shape - # Create a lookahead mask - lookahead_mask = torch.tril(torch.ones(seq_length, seq_length), diagonal=lookahead, out=None).to( - attention_mask.device + next_decoder_cache = () if use_cache else None + for i, layer_module in enumerate(self.layer): + # MODIFIED: if lookahead_split_layers is given, use causal mask starting from that layer + if self.config.lookahead_split_layers is not None: + if i == self.config.lookahead_split_layers: + attention_mask = get_extended_attention_mask( + self.config, init_attention_mask, init_attention_mask.shape, 0, hidden_states.device, dtype + ) + + if output_hidden_states: + all_hidden_states = all_hidden_states + (hidden_states,) + + layer_head_mask = head_mask[i] if head_mask is not None else None + past_key_value = past_key_values[i] if past_key_values is not None else None + + if self.gradient_checkpointing and self.training: + + def create_custom_forward(module): + def custom_forward(*inputs): + return module(*inputs, past_key_value, output_attentions) + + return custom_forward + + layer_outputs = torch.utils.checkpoint.checkpoint( + create_custom_forward(layer_module), + hidden_states, + attention_mask, + layer_head_mask, + encoder_hidden_states, + encoder_attention_mask, ) - # Combine the attention mask with the lookahead mask - extended_attention_mask = attention_mask[:, None, None, :] * lookahead_mask else: - extended_attention_mask = attention_mask[:, None, None, :] - else: - raise ValueError( - f"Wrong shape for input_ids (shape {input_shape}) or attention_mask (shape {attention_mask.shape})" - ) + layer_outputs = layer_module( + hidden_states, + attention_mask, + layer_head_mask, + encoder_hidden_states, + encoder_attention_mask, + past_key_value, + output_attentions, + ) + + hidden_states = layer_outputs[0] + if use_cache: + next_decoder_cache += (layer_outputs[-1],) + if output_attentions: + all_self_attentions = all_self_attentions + (layer_outputs[1],) + if self.config.add_cross_attention: + all_cross_attentions = all_cross_attentions + (layer_outputs[2],) - # Since attention_mask is 1.0 for positions we want to attend and 0.0 for - # masked positions, this operation will create a tensor which is 0.0 for - # positions we want to attend and the dtype's smallest value for masked positions. - # Since we are adding it to the raw scores before the softmax, this is - # effectively the same as removing these entirely. - extended_attention_mask = extended_attention_mask.to(dtype=dtype) # fp16 compatibility - extended_attention_mask = (1.0 - extended_attention_mask) * torch.finfo(dtype).min - return extended_attention_mask + if output_hidden_states: + all_hidden_states = all_hidden_states + (hidden_states,) + + if not return_dict: + return tuple( + v + for v in [ + hidden_states, + next_decoder_cache, + all_hidden_states, + all_self_attentions, + all_cross_attentions, + ] + if v is not None + ) + return BaseModelOutputWithPastAndCrossAttentions( + last_hidden_state=hidden_states, + past_key_values=next_decoder_cache, + hidden_states=all_hidden_states, + attentions=all_self_attentions, + cross_attentions=all_cross_attentions, + ) AutoModel.register(LACanineConfig, LACanineModel) @@ -1283,9 +1400,11 @@ def get_extended_attention_mask( from transformers import AutoConfig, AutoTokenizer model_str = "xlm-roberta-base" - config = AutoConfig.from_pretrained(model_str) + config = SubwordXLMConfig.from_pretrained(model_str) config.num_labels = 4 - config.num_hidden_layers = 1 + config.num_hidden_layers = 12 + config.lookahead = 48 + config.lookahead_split_layers = 6 backbone = SubwordXLMForTokenClassification.from_pretrained(model_str, config=config) print(summary(backbone, depth=4)) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 5dad04b7..605f7b9f 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -8,7 +8,7 @@ from dataclasses import dataclass from functools import partial from glob import glob -from typing import List +from typing import List, Optional import shutil import datasets @@ -102,6 +102,7 @@ class Args: # NEW PARAMS use_subwords: bool = False threshold: float = 0.01 + lookahead_split_layers: Optional[int] = None def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: bool = False): @@ -213,6 +214,7 @@ def main(): num_hidden_layers=args.num_hidden_layers, num_labels=num_labels, lookahead=args.lookahead, + lookahead_split_layers=args.lookahead_split_layers, ) backbone = SubwordXLMForTokenClassification(config) @@ -222,6 +224,7 @@ def main(): num_hidden_layers=args.num_hidden_layers, num_labels=num_labels, lookahead=args.lookahead, + lookahead_split_layers=args.lookahead_split_layers, ) backbone = SubwordXLMForTokenClassification.from_pretrained( args.model_name_or_path, From b794432bcc7edb3b8a1a44bb09aaf14a93895b05 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 21 Apr 2024 08:19:40 +0000 Subject: [PATCH 122/262] add clf from scratch --- wtpsplit/evaluation/intrinsic.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 9523defe..744d9c8c 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -42,7 +42,7 @@ class Args: # } # } # TODO: for songs/etc., maybe feed in each sample separately? - eval_data_path: str = "data/eval.pth" + eval_data_path: str = "data/all_data.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 @@ -57,6 +57,7 @@ class Args: do_remove_punct: bool = False keep_logits: bool = False skip_adaptation: bool = False + clf_from_scratch: bool = False def process_logits(text, model, lang_code, args): @@ -148,6 +149,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): try: if args.adapter_path: + if args.clf_from_scratch: + model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) model.model.load_adapter( args.adapter_path + "/" + dataset_name + "/" + lang_code, set_active=True, From 7c608c161cf4114bee0bf859ce357101c69d0651 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 21 Apr 2024 10:31:58 +0000 Subject: [PATCH 123/262] add possibility to corrupt entire chunks (v1) --- configs/xlmr_stratify_0.1_12layers_p_v3.json | 45 ++++++++++++++++++++ configs/xlmr_stratify_0.1_6layers_p_v3.json | 45 ++++++++++++++++++++ wtpsplit/train/evaluate.py | 19 ++++++--- wtpsplit/train/train.py | 6 +-- wtpsplit/utils.py | 13 +++++- 5 files changed, 117 insertions(+), 11 deletions(-) create mode 100644 configs/xlmr_stratify_0.1_12layers_p_v3.json create mode 100644 configs/xlmr_stratify_0.1_6layers_p_v3.json diff --git a/configs/xlmr_stratify_0.1_12layers_p_v3.json b/configs/xlmr_stratify_0.1_12layers_p_v3.json new file mode 100644 index 00000000..18fee9bd --- /dev/null +++ b/configs/xlmr_stratify_0.1_12layers_p_v3.json @@ -0,0 +1,45 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-12l-v3", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 256, + "eval_stride": 128, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "auxiliary_remove_prob": 0.2, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 12, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_6layers_p_v3.json b/configs/xlmr_stratify_0.1_6layers_p_v3.json new file mode 100644 index 00000000..87d05bd9 --- /dev/null +++ b/configs/xlmr_stratify_0.1_6layers_p_v3.json @@ -0,0 +1,45 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-6l-v3", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 256, + "eval_stride": 128, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 100000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": null, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "auxiliary_remove_prob": 0.2, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 6, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning" +} \ No newline at end of file diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 26f864ba..315b1857 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -281,10 +281,15 @@ def evaluate_sentence_kmers( average_metric = np.mean(metrics_list) avg_accuracy = np.mean(accuracy_list) # get averages for info_list - avg_info = { - key: np.mean([info[key] for info in info_list]) - for key in info_list[0].keys() - if isinstance(info_list[0][key], (int, float)) - } - avg_info["accuracy_optimal"] = np.mean(accuracy_list_optimal) - return average_metric, avg_accuracy, avg_info + if len(sampled_k_mers) > 0: + avg_info = { + key: np.mean([info[key] for info in info_list]) + for key in info_list[0].keys() + if isinstance(info_list[0][key], (int, float)) + } + avg_info["accuracy_optimal"] = np.mean(accuracy_list_optimal) + else: + avg_info = {} + avg_info["f1"] = 0 + avg_info["f1_best"] = 0 + avg_info["threshold_best"] = 0 diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 605f7b9f..9b2bdf13 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -76,7 +76,7 @@ class Args: train_text_path: str = "data/train.parquet" valid_text_path: str = "data/valid.parquet" include_languages: List[str] = None - eval_data_path: str = "data/eval.pth" + eval_data_path: str = "data/all_data.pth" num_hidden_layers: int = 1 preprocessing_num_workers: int = 6 block_size: int = 512 @@ -138,7 +138,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: boo label_args, label_dict=label_dict, pack_samples=args.pack_samples, - min_length=args.block_size, + # min_length=args.block_size, tokenizer=tokenizer if args.use_subwords else None, ) @@ -608,7 +608,7 @@ def compute_metrics(trainer): # else: # avg_metrics[f"lower_rmp_average_whitespace_{dataset_name}_pr_auc"].append(score) # k-mer based evaluation - for k in [2, 3, 4, 5, 6]: + for k in [2, 3, 4]: score, avg_acc, info = evaluate_sentence_kmers( lang_code, dataset["data"], diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index cf2af9e1..e7dcf453 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -84,6 +84,7 @@ class LabelArgs: non_whitespace_remove_spaces: bool = True case_corruption_prob_after_newline: float = 0.0 case_corruption_prob_after_punct: float = 0.0 + corrupt_entire_chunk_prob: float = 0.0 def __post_init__(self): if self.custom_punctuation_file: @@ -208,6 +209,16 @@ def corrupt( ): input_ids = input_ids.copy() block_ids = block_ids.copy() + if random.random() < label_args.corrupt_entire_chunk_prob: + # lowercase all text + lowercased = tokenizer.decode(input_ids).lower() + input_ids = tokenizer.encode(lowercased, add_special_tokens=False) + block_ids = [0] * len(input_ids) + # remove ALL punct + auxiliary_remove_prob = 1.0 + else: + auxiliary_remove_prob = label_args.auxiliary_remove_prob + labels = label(input_ids, label_dict) separator = Constants.SEPARATORS[lang] @@ -292,7 +303,7 @@ def corrupt( if pack_samples: raise NotImplementedError() - if random.random() < label_args.auxiliary_remove_prob: + if random.random() < auxiliary_remove_prob: removed_aux_char = False if label_args.retain_first_consecutive_punctuation: # remove only if the next token is not a newline From 41e198df99515416bbc120d71d8d3dd9004ae863 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 21 Apr 2024 10:42:21 +0000 Subject: [PATCH 124/262] update configs --- configs/xlmr_stratify_0.1_3layers_p_v3.json | 2 +- ...xlmr_stratify_0.1_3layers_p_v3_look48.json | 45 +++++++++++++++++++ ...xlmr_stratify_0.1_6layers_p_v3_look48.json | 45 +++++++++++++++++++ 3 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 configs/xlmr_stratify_0.1_3layers_p_v3_look48.json create mode 100644 configs/xlmr_stratify_0.1_6layers_p_v3_look48.json diff --git a/configs/xlmr_stratify_0.1_3layers_p_v3.json b/configs/xlmr_stratify_0.1_3layers_p_v3.json index 28037e53..f6fbb3a1 100644 --- a/configs/xlmr_stratify_0.1_3layers_p_v3.json +++ b/configs/xlmr_stratify_0.1_3layers_p_v3.json @@ -20,7 +20,7 @@ "fp16": false, "max_steps": 200000, "save_steps": 50000, - "eval_steps": 5000, + "eval_steps": 10000, "logging_steps": 50, "report_to": "wandb", "is_decoder": false, diff --git a/configs/xlmr_stratify_0.1_3layers_p_v3_look48.json b/configs/xlmr_stratify_0.1_3layers_p_v3_look48.json new file mode 100644 index 00000000..d0d0b585 --- /dev/null +++ b/configs/xlmr_stratify_0.1_3layers_p_v3_look48.json @@ -0,0 +1,45 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-3l-v3_look48", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 256, + "eval_stride": 128, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": 48, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "auxiliary_remove_prob": 0.2, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 3, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_6layers_p_v3_look48.json b/configs/xlmr_stratify_0.1_6layers_p_v3_look48.json new file mode 100644 index 00000000..5ce6d21d --- /dev/null +++ b/configs/xlmr_stratify_0.1_6layers_p_v3_look48.json @@ -0,0 +1,45 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-6l-v3_look48", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "block_size": 256, + "eval_stride": 128, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "lookahead": 48, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "auxiliary_remove_prob": 0.2, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "num_hidden_layers": 6, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning" +} \ No newline at end of file From 53edc76afdab38e8284726742152aceaede5bae6 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 21 Apr 2024 12:06:12 +0000 Subject: [PATCH 125/262] fix return --- wtpsplit/train/evaluate.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 315b1857..60b4b55b 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -281,6 +281,7 @@ def evaluate_sentence_kmers( average_metric = np.mean(metrics_list) avg_accuracy = np.mean(accuracy_list) # get averages for info_list + # print(len(info_list), len(sampled_k_mers)) if len(sampled_k_mers) > 0: avg_info = { key: np.mean([info[key] for info in info_list]) @@ -293,3 +294,4 @@ def evaluate_sentence_kmers( avg_info["f1"] = 0 avg_info["f1_best"] = 0 avg_info["threshold_best"] = 0 + return average_metric, avg_accuracy, avg_info From 42eb4f33b5e8dfd30fdf76972e6953f193af817c Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 22 Apr 2024 14:03:08 +0000 Subject: [PATCH 126/262] no pairwise eval + new corrupted data --- wtpsplit/train/train.py | 84 ++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 9b2bdf13..9dbe919f 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -76,7 +76,7 @@ class Args: train_text_path: str = "data/train.parquet" valid_text_path: str = "data/valid.parquet" include_languages: List[str] = None - eval_data_path: str = "data/all_data.pth" + eval_data_path: str = "data/all_data_21-04.pth" num_hidden_layers: int = 1 preprocessing_num_workers: int = 6 block_size: int = 512 @@ -608,47 +608,47 @@ def compute_metrics(trainer): # else: # avg_metrics[f"lower_rmp_average_whitespace_{dataset_name}_pr_auc"].append(score) # k-mer based evaluation - for k in [2, 3, 4]: - score, avg_acc, info = evaluate_sentence_kmers( - lang_code, - dataset["data"], - model, - stride=128, - block_size=512, - batch_size=training_args.per_device_eval_batch_size, - k=k, - # sample_pct=0.1, - threshold=args.threshold, - ) - metrics[f"k_{k}_{lang_code}_{dataset_name}_pr_auc"] = score - avg_metrics[f"k_{k}_average_{dataset_name}_pr_auc"].append(score) - metrics[f"k_{k}_{lang_code}_{dataset_name}_acc"] = avg_acc - avg_metrics[f"k_{k}_average_{dataset_name}_acc"].append(avg_acc) - metrics[f"k_{k}_{lang_code}_{dataset_name}_f1"] = info["f1"] - metrics[f"k_{k}_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] - metrics[f"k_{k}_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] - avg_metrics[f"k_{k}_average_{dataset_name}_f1"].append(info["f1"]) - avg_metrics[f"k_{k}_average_{dataset_name}_f1_best"].append(info["f1_best"]) - avg_metrics[f"k_{k}_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) - - # if lang_code in ["zh", "ja", "my", "km"]: - # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) - # else: - # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_pr_auc"].append(score) - # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_acc"].append(avg_acc) - if k == 2: - # keep keys for backwards compat in wandb - metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score - avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) - metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc - avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) - metrics[f"pairwise_{lang_code}_{dataset_name}_f1"] = info["f1"] - metrics[f"pairwise_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] - metrics[f"pairwise_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] - avg_metrics[f"pairwise_average_{dataset_name}_f1"].append(info["f1"]) - avg_metrics[f"pairwise_average_{dataset_name}_f1_best"].append(info["f1_best"]) - avg_metrics[f"pairwise_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) + # for k in [2, 3, 4]: + # score, avg_acc, info = evaluate_sentence_kmers( + # lang_code, + # dataset["data"], + # model, + # stride=128, + # block_size=512, + # batch_size=training_args.per_device_eval_batch_size, + # k=k, + # # sample_pct=0.1, + # threshold=args.threshold, + # ) + # metrics[f"k_{k}_{lang_code}_{dataset_name}_pr_auc"] = score + # avg_metrics[f"k_{k}_average_{dataset_name}_pr_auc"].append(score) + # metrics[f"k_{k}_{lang_code}_{dataset_name}_acc"] = avg_acc + # avg_metrics[f"k_{k}_average_{dataset_name}_acc"].append(avg_acc) + # metrics[f"k_{k}_{lang_code}_{dataset_name}_f1"] = info["f1"] + # metrics[f"k_{k}_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] + # metrics[f"k_{k}_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] + # avg_metrics[f"k_{k}_average_{dataset_name}_f1"].append(info["f1"]) + # avg_metrics[f"k_{k}_average_{dataset_name}_f1_best"].append(info["f1_best"]) + # avg_metrics[f"k_{k}_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) + + # # if lang_code in ["zh", "ja", "my", "km"]: + # # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + # # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) + # # else: + # # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_pr_auc"].append(score) + # # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_acc"].append(avg_acc) + # if k == 2: + # # keep keys for backwards compat in wandb + # metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score + # avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) + # metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc + # avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) + # metrics[f"pairwise_{lang_code}_{dataset_name}_f1"] = info["f1"] + # metrics[f"pairwise_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] + # metrics[f"pairwise_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] + # avg_metrics[f"pairwise_average_{dataset_name}_f1"].append(info["f1"]) + # avg_metrics[f"pairwise_average_{dataset_name}_f1_best"].append(info["f1_best"]) + # avg_metrics[f"pairwise_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) # if lang_code in ["zh", "ja", "my", "km"]: # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) From 3d1a8cc46e118fb94f5fc8c77f711b6081e2166e Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 23 Apr 2024 08:08:38 +0000 Subject: [PATCH 127/262] add full corruption param --- wtpsplit/evaluation/intrinsic.py | 13 ++------ wtpsplit/train/evaluate.py | 3 +- wtpsplit/train/train.py | 4 +-- wtpsplit/train/train_adapter.py | 13 ++++++-- wtpsplit/train/train_adapter_parallel.py | 3 +- wtpsplit/utils.py | 38 +++++++++++++++++++----- 6 files changed, 46 insertions(+), 28 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 744d9c8c..d49cd1d2 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -18,7 +18,7 @@ import wtpsplit.models # noqa: F401 from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs from wtpsplit.extract import PyTorchWrapper, extract -from wtpsplit.utils import Constants +from wtpsplit.utils import Constants, corrupt logger = logging.getLogger() logger.setLevel(logging.INFO) @@ -42,7 +42,7 @@ class Args: # } # } # TODO: for songs/etc., maybe feed in each sample separately? - eval_data_path: str = "data/all_data.pth" + eval_data_path: str = "data/all_data_21-04.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 @@ -92,15 +92,6 @@ def process_logits(text, model, lang_code, args): return logits -def corrupt(text: str, do_lowercase: bool, do_remove_punct: bool): - if do_lowercase: - text = text.lower() - if do_remove_punct: - for punct in Constants.PUNCTUATION_CHARS: - text = text.replace(punct, "") - return text - - def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: str = None): logits_path = Constants.CACHE_DIR / "intrinsic" / f"{save_str}.h5" diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index 60b4b55b..a5eec3ab 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -6,10 +6,9 @@ import sklearn.metrics from wtpsplit.evaluation import token_to_char_probs -from wtpsplit.evaluation.intrinsic import corrupt from wtpsplit.evaluation.intrinsic_pairwise import generate_pairs, generate_k_mers, process_logits_k_mers from wtpsplit.extract import PyTorchWrapper, extract -from wtpsplit.utils import Constants, sigmoid +from wtpsplit.utils import Constants, sigmoid, corrupt logger = logging.getLogger(__name__) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 9dbe919f..ed02dba3 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -34,7 +34,7 @@ ) from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise, evaluate_sentence_kmers from wtpsplit.train.trainer import Trainer -from wtpsplit.utils import Constants, LabelArgs, corrupt, get_label_dict, get_subword_label_dict +from wtpsplit.utils import Constants, LabelArgs, corrupt_training, get_label_dict, get_subword_label_dict from wtpsplit.train.utils import Model, cleanup_cache_files logger = logging.getLogger(__name__) @@ -131,7 +131,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: boo block_ids = [0] * len(input_ids) - input_ids, _, labels = corrupt( + input_ids, _, labels = corrupt_training( input_ids, block_ids, lang, diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 666e1d80..103fc31f 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -19,14 +19,13 @@ import adapters import wandb from adapters import AdapterArguments -from wtpsplit.evaluation.intrinsic import corrupt from wtpsplit.models import SubwordXLMConfig, SubwordXLMForTokenClassification from wtpsplit.train.adaptertrainer import AdapterTrainer from wtpsplit.train.trainer import Trainer from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise from wtpsplit.train.train import collate_fn, setup_logging from wtpsplit.train.utils import Model -from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict +from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict, corrupt from tqdm import tqdm from typing import Union, Optional @@ -117,6 +116,8 @@ def prepare_dataset( dataset = data[lang]["sentence"][dataset_name]["meta"]["train_data"] elif split == "valid": dataset = data[lang]["sentence"][dataset_name]["data"] + if dataset_name == "opus100" and lang == "fr": + dataset = data[lang]["sentence"][dataset_name]["data"] if dataset is None: return None @@ -403,6 +404,12 @@ def maybe_pad(text): for lang in tqdm(data.keys(), desc="Language"): if lang in args.include_languages: for dataset_name in data[lang]["sentence"].keys(): + if dataset_name != "ted2020": + continue + # skip langs starting with a, b, ..., k + if lang[0] < "d": + print(f"Skipping {lang} {dataset_name}") + continue # do model stuff here; otherwise, head params would be overwritten every time backbone = SubwordXLMForTokenClassification.from_pretrained( args.model_name_or_path, config=copy.deepcopy(config), ignore_mismatched_sizes=True @@ -551,7 +558,7 @@ def compute_metrics(trainer): model.backbone.classifier = torch.nn.Sequential( clf, # original classifier - if frozen above, also frozen here torch.nn.Linear(clf.out_features, 1), - ) + ) model.backbone.config.num_labels = 1 # if args.one_sample_per_line: diff --git a/wtpsplit/train/train_adapter_parallel.py b/wtpsplit/train/train_adapter_parallel.py index ed715fd2..b67760ba 100644 --- a/wtpsplit/train/train_adapter_parallel.py +++ b/wtpsplit/train/train_adapter_parallel.py @@ -35,8 +35,7 @@ from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise from wtpsplit.train.train import collate_fn from wtpsplit.train.utils import Model -from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict -from wtpsplit.evaluation.intrinsic import corrupt +from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict, corrupt os.environ["TOKENIZERS_PARALLELISM"] = "false" diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index e7dcf453..6505904c 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -85,6 +85,7 @@ class LabelArgs: case_corruption_prob_after_newline: float = 0.0 case_corruption_prob_after_punct: float = 0.0 corrupt_entire_chunk_prob: float = 0.0 + corrupt_entire_chunk_strategy: str = "full" def __post_init__(self): if self.custom_punctuation_file: @@ -133,7 +134,7 @@ def get_subword_label_dict(label_args, tokenizer): return label_dict -# numerically more stable sigmoid taken from +# numerically more stable sigmoid taken from # https://stackoverflow.com/questions/51976461/optimal-way-of-defining-a-numerically-stable-sigmoid-function-for-a-list-in-pyth def _positive_sigmoid(x): return 1 / (1 + np.exp(-x)) @@ -196,8 +197,17 @@ def lang_code_to_lang(lang_code): return languages.get(part3=lang_code).name +def corrupt(text: str, do_lowercase: bool, do_remove_punct: bool): + if do_lowercase: + text = text.lower() + if do_remove_punct: + for punct in Constants.PUNCTUATION_CHARS: + text = text.replace(punct, "") + return text + + # does the steps in Figure 2 of the paper -def corrupt( +def corrupt_training( input_ids, block_ids, lang, @@ -211,14 +221,24 @@ def corrupt( block_ids = block_ids.copy() if random.random() < label_args.corrupt_entire_chunk_prob: # lowercase all text - lowercased = tokenizer.decode(input_ids).lower() - input_ids = tokenizer.encode(lowercased, add_special_tokens=False) + input_text = tokenizer.decode(input_ids) + if label_args.corrupt_entire_chunk_strategy == "tokenizer": + if not tokenizer: + raise NotImplementedError() + corrupted = corrupt(input_text, do_lowercase=True, do_remove_punct=False) + input_ids = tokenizer.encode(corrupted, add_special_tokens=False) + # remove ALL punct *tokens* + auxiliary_remove_prob = 1.0 + elif label_args.corrupt_entire_chunk_strategy == "full": + # remove all punct *characters* + corrupted = corrupt(input_text, do_lowercase=True, do_remove_punct=True) + input_ids = tokenizer.encode(corrupted, add_special_tokens=False) + auxiliary_remove_prob = 1.0 # just for safety/consistency block_ids = [0] * len(input_ids) - # remove ALL punct - auxiliary_remove_prob = 1.0 + else: auxiliary_remove_prob = label_args.auxiliary_remove_prob - + labels = label(input_ids, label_dict) separator = Constants.SEPARATORS[lang] @@ -459,7 +479,9 @@ def reconstruct_sentences(text, partial_sentences): label_dict = get_subword_label_dict(label_args, tokenizer) # corrupt - input_ids, block_ids, labels = corrupt(input_ids, block_ids, "en", label_args, label_dict, tokenizer=tokenizer) + input_ids, block_ids, labels = corrupt_training( + input_ids, block_ids, "en", label_args, label_dict, tokenizer=tokenizer + ) print(input_ids) print(labels) print(tokenizer.tokenize(text)) From 6b9e2b8308c303f2288bb9ec07cba28335acb51a Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 23 Apr 2024 08:41:58 +0000 Subject: [PATCH 128/262] add asr strategy --- wtpsplit/utils.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 6505904c..8c6ca4f7 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -11,6 +11,7 @@ import numpy as np import pandas as pd from transformers import AutoTokenizer +from mosestokenizer import MosesTokenizer # same as in CANINE PRIMES = [31, 43, 59, 61, 73, 97, 103, 113, 137, 149, 157, 173, 181, 193, 211, 223] @@ -206,6 +207,24 @@ def corrupt(text: str, do_lowercase: bool, do_remove_punct: bool): return text +def corrupt_asr(text: str, lang): + try: + tokenizer = MosesTokenizer(lang) + except: + tokenizer = MosesTokenizer("en") + + sentences = text.split("\n") + tokenized_sentences = [tokenizer.tokenize(sentence) for sentence in sentences] + corrupted_tokenized_sentences = [ + [token for token in tokens if token not in Constants.PUNCTUATION_CHARS] for tokens in tokenized_sentences + ] + corrupted_sentences = [ + tokenizer.detokenize(corrupted_tokens).lower() for corrupted_tokens in corrupted_tokenized_sentences + ] + + return corrupted_sentences + + # does the steps in Figure 2 of the paper def corrupt_training( input_ids, @@ -234,6 +253,13 @@ def corrupt_training( corrupted = corrupt(input_text, do_lowercase=True, do_remove_punct=True) input_ids = tokenizer.encode(corrupted, add_special_tokens=False) auxiliary_remove_prob = 1.0 # just for safety/consistency + elif label_args.corrupt_entire_chunk_strategy == "asr": + if not tokenizer: + raise NotImplementedError() + corrupted_sentences = corrupt_asr(input_text, lang) + corrupted_text = "\n".join(corrupted_sentences) + input_ids = tokenizer.encode(corrupted_text, add_special_tokens=False) + auxiliary_remove_prob = 0.0 block_ids = [0] * len(input_ids) else: From 37824a491d73812b47dab1ec35df14c5fb74c962 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 23 Apr 2024 19:28:50 +0000 Subject: [PATCH 129/262] add mixed corruption strategy --- wtpsplit/utils.py | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 8c6ca4f7..abe5bbcf 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -1,17 +1,17 @@ import json +import logging import os import random +from collections import defaultdict from dataclasses import dataclass, field -from cached_property import cached_property from pathlib import Path from typing import List -import logging -from collections import defaultdict import numpy as np import pandas as pd -from transformers import AutoTokenizer +from cached_property import cached_property from mosestokenizer import MosesTokenizer +from transformers import AutoTokenizer # same as in CANINE PRIMES = [31, 43, 59, 61, 73, 97, 103, 113, 137, 149, 157, 173, 181, 193, 211, 223] @@ -86,7 +86,8 @@ class LabelArgs: case_corruption_prob_after_newline: float = 0.0 case_corruption_prob_after_punct: float = 0.0 corrupt_entire_chunk_prob: float = 0.0 - corrupt_entire_chunk_strategy: str = "full" + corrupt_entire_chunk_strategy: str = "mix" + corrupt_entire_chunk_prob_full: float = 0.5 def __post_init__(self): if self.custom_punctuation_file: @@ -239,27 +240,32 @@ def corrupt_training( input_ids = input_ids.copy() block_ids = block_ids.copy() if random.random() < label_args.corrupt_entire_chunk_prob: - # lowercase all text + # choose corruption strategy + if label_args.corrupt_entire_chunk_strategy == "mix": + corrupt_strategy = "full" if random.random() < label_args.corrupt_entire_chunk_prob_full else "asr" + else: + corrupt_strategy = label_args.corrupt_entire_chunk_strategy + input_text = tokenizer.decode(input_ids) - if label_args.corrupt_entire_chunk_strategy == "tokenizer": + if corrupt_strategy == "tokenizer": if not tokenizer: raise NotImplementedError() corrupted = corrupt(input_text, do_lowercase=True, do_remove_punct=False) - input_ids = tokenizer.encode(corrupted, add_special_tokens=False) + input_ids = tokenizer.encode(corrupted, add_special_tokens=False, verbose=False) # remove ALL punct *tokens* auxiliary_remove_prob = 1.0 - elif label_args.corrupt_entire_chunk_strategy == "full": + elif corrupt_strategy == "full": # remove all punct *characters* corrupted = corrupt(input_text, do_lowercase=True, do_remove_punct=True) - input_ids = tokenizer.encode(corrupted, add_special_tokens=False) + input_ids = tokenizer.encode(corrupted, add_special_tokens=False, verbose=False) auxiliary_remove_prob = 1.0 # just for safety/consistency - elif label_args.corrupt_entire_chunk_strategy == "asr": + elif corrupt_strategy == "asr": if not tokenizer: raise NotImplementedError() corrupted_sentences = corrupt_asr(input_text, lang) corrupted_text = "\n".join(corrupted_sentences) - input_ids = tokenizer.encode(corrupted_text, add_special_tokens=False) - auxiliary_remove_prob = 0.0 + input_ids = tokenizer.encode(corrupted_text, add_special_tokens=False, verbose=False) + auxiliary_remove_prob = 0.0 # do not remove additional characters. block_ids = [0] * len(input_ids) else: From baf398ae722537ecd46a872c4d1e67c16221f41b Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 23 Apr 2024 19:48:29 +0000 Subject: [PATCH 130/262] ensure same bs on all TPUs --- wtpsplit/train/train.py | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index ed02dba3..354ddc2e 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -2,6 +2,7 @@ import math import os import random +import shutil import sys import time from collections import Counter, defaultdict @@ -9,11 +10,11 @@ from functools import partial from glob import glob from typing import List, Optional -import shutil import datasets import numpy as np import torch +import torch_xla.core.xla_model as xm import transformers from datasets import load_dataset from datasets.download import DownloadConfig @@ -21,7 +22,6 @@ from torchinfo import summary from tqdm.auto import tqdm from transformers import AutoTokenizer, HfArgumentParser, TrainingArguments, set_seed -import pdb import wandb from wtpsplit.models import ( @@ -32,10 +32,10 @@ SubwordXLMConfig, SubwordXLMForTokenClassification, ) -from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise, evaluate_sentence_kmers +from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_kmers, evaluate_sentence_pairwise from wtpsplit.train.trainer import Trainer -from wtpsplit.utils import Constants, LabelArgs, corrupt_training, get_label_dict, get_subword_label_dict from wtpsplit.train.utils import Model, cleanup_cache_files +from wtpsplit.utils import Constants, LabelArgs, corrupt_training, get_label_dict, get_subword_label_dict logger = logging.getLogger(__name__) @@ -200,6 +200,13 @@ def main(): else: (args, training_args, label_args) = parser.parse_args_into_dataclasses() wandb_name = None + if xm.xrt_world_size() == 4: + # ensure same batch size on TPUv3 and TPUv4 + training_args.per_device_train_batch_size *= 2 + logger.warning(f"Per device train batch size: {training_args.per_device_train_batch_size}") + logger.warning( + f"Total train batch size: {training_args.per_device_train_batch_size * training_args.gradient_accumulation_steps* xm.xrt_world_size()}" + ) setup_logging(training_args) set_seed(training_args.seed) @@ -242,7 +249,6 @@ def main(): if args.lookahead: assert args.lookahead % args.num_hidden_layers == 0 - else: tokenizer = None config = LACanineConfig.from_pretrained( @@ -271,8 +277,7 @@ def main(): backbone = LACanineForTokenClassification.from_pretrained( args.model_name_or_path, ignore_mismatched_sizes=True, config=config ) - - + model = Model( backbone, loss_margin=args.loss_margin, @@ -649,12 +654,12 @@ def compute_metrics(trainer): # avg_metrics[f"pairwise_average_{dataset_name}_f1"].append(info["f1"]) # avg_metrics[f"pairwise_average_{dataset_name}_f1_best"].append(info["f1_best"]) # avg_metrics[f"pairwise_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) - # if lang_code in ["zh", "ja", "my", "km"]: - # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) - # else: - # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) - # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) + # if lang_code in ["zh", "ja", "my", "km"]: + # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) + # else: + # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) + # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) for name, values in avg_metrics.items(): if len(values) > 1: From 86a7f103ba735af5250ba862fc82a44ceb2f34d9 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 24 Apr 2024 07:07:41 +0000 Subject: [PATCH 131/262] update corrupt-asr --- wtpsplit/train/train.py | 10 +++++----- wtpsplit/utils.py | 21 +++++++++++++++++++-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 354ddc2e..a511915d 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -76,7 +76,7 @@ class Args: train_text_path: str = "data/train.parquet" valid_text_path: str = "data/valid.parquet" include_languages: List[str] = None - eval_data_path: str = "data/all_data_21-04.pth" + eval_data_path: str = "data/all_data_24-04.pth" num_hidden_layers: int = 1 preprocessing_num_workers: int = 6 block_size: int = 512 @@ -203,10 +203,10 @@ def main(): if xm.xrt_world_size() == 4: # ensure same batch size on TPUv3 and TPUv4 training_args.per_device_train_batch_size *= 2 - logger.warning(f"Per device train batch size: {training_args.per_device_train_batch_size}") - logger.warning( - f"Total train batch size: {training_args.per_device_train_batch_size * training_args.gradient_accumulation_steps* xm.xrt_world_size()}" - ) + logger.warning(f"Per device train batch size: {training_args.per_device_train_batch_size}") + logger.warning( + f"Total train batch size: {training_args.per_device_train_batch_size * training_args.gradient_accumulation_steps* xm.xrt_world_size()}" + ) setup_logging(training_args) set_seed(training_args.seed) diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index abe5bbcf..48650cfe 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -209,12 +209,29 @@ def corrupt(text: str, do_lowercase: bool, do_remove_punct: bool): def corrupt_asr(text: str, lang): + if text is None: + return None + + separator = Constants.SEPARATORS.get(lang, " ") + + sentences = text.split("\n") + + if separator == "": + corrupted_sentences = [ + "".join([char for char in sentence if char not in Constants.PUNCTUATION_CHARS]).lower() + for sentence in sentences + ] + return corrupted_sentences + try: tokenizer = MosesTokenizer(lang) except: - tokenizer = MosesTokenizer("en") + corrupted_sentences = [ + "".join([char for char in sentence if char not in Constants.PUNCTUATION_CHARS]).lower() + for sentence in sentences + ] + return corrupted_sentences - sentences = text.split("\n") tokenized_sentences = [tokenizer.tokenize(sentence) for sentence in sentences] corrupted_tokenized_sentences = [ [token for token in tokens if token not in Constants.PUNCTUATION_CHARS] for tokens in tokenized_sentences From 296e495ac1ba5eff51cfff383a58b24f9f533909 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 24 Apr 2024 07:32:53 +0000 Subject: [PATCH 132/262] fix data path --- wtpsplit/train/train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index a511915d..3b44a5cc 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -76,7 +76,7 @@ class Args: train_text_path: str = "data/train.parquet" valid_text_path: str = "data/valid.parquet" include_languages: List[str] = None - eval_data_path: str = "data/all_data_24-04.pth" + eval_data_path: str = "data/all_data_24_04.pth" num_hidden_layers: int = 1 preprocessing_num_workers: int = 6 block_size: int = 512 From b56e9f396f46aa07b6d7f2eb29c106b766acbf8c Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 25 Apr 2024 17:27:18 +0000 Subject: [PATCH 133/262] log more --- wtpsplit/train/train.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 3b44a5cc..af728c47 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -654,12 +654,16 @@ def compute_metrics(trainer): # avg_metrics[f"pairwise_average_{dataset_name}_f1"].append(info["f1"]) # avg_metrics[f"pairwise_average_{dataset_name}_f1_best"].append(info["f1_best"]) # avg_metrics[f"pairwise_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) - # if lang_code in ["zh", "ja", "my", "km"]: - # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - # avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) - # else: - # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) - # avg_metrics[f"pairwise_average_whitespace_{dataset_name}_acc"].append(avg_acc) + if lang_code in ["zh", "ja", "my", "km"]: + avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_f1"].append(info["f1"]) + avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_f1_best"].append(info["f1_best"]) + avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_threshold_best"].append(info["threshold_best"]) + else: + avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"pairwise_average_whitespace_{dataset_name}_f1"].append(info["f1"]) + avg_metrics[f"pairwise_average_whitespace_{dataset_name}_f1_best"].append(info["f1_best"]) + avg_metrics[f"pairwise_average_whitespace_{dataset_name}_threshold_best"].append(info["threshold_best"]) for name, values in avg_metrics.items(): if len(values) > 1: @@ -677,6 +681,8 @@ def compute_metrics(trainer): for file in glob(os.path.join(os.path.dirname(__file__), "*.py")): wandb.save(os.path.abspath(file), policy="now") + # also 1 dir above + wandb.save(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", file)), policy="now") label_dict = get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) logger.info(f"Label dict has {len(label_dict)} entries.") From 3c69061d8bbc18f6c1bb5d94299193a877671207 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 25 Apr 2024 20:36:52 +0000 Subject: [PATCH 134/262] add detok!? --- wtpsplit/utils.py | 101 +++++++++++++++++++++++++--------------------- 1 file changed, 56 insertions(+), 45 deletions(-) diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 48650cfe..adf0f00c 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -83,6 +83,7 @@ class LabelArgs: custom_punctuation_file: str = None retain_first_consecutive_punctuation: bool = True non_whitespace_remove_spaces: bool = True + non_whitespace_retokenize: bool = False case_corruption_prob_after_newline: float = 0.0 case_corruption_prob_after_punct: float = 0.0 corrupt_entire_chunk_prob: float = 0.0 @@ -225,6 +226,14 @@ def corrupt_asr(text: str, lang): try: tokenizer = MosesTokenizer(lang) + + tokenized_sentences = [tokenizer.tokenize(sentence) for sentence in sentences] + corrupted_tokenized_sentences = [ + [token for token in tokens if token not in Constants.PUNCTUATION_CHARS] for tokens in tokenized_sentences + ] + corrupted_sentences = [ + tokenizer.detokenize(corrupted_tokens).lower() for corrupted_tokens in corrupted_tokenized_sentences + ] except: corrupted_sentences = [ "".join([char for char in sentence if char not in Constants.PUNCTUATION_CHARS]).lower() @@ -232,14 +241,6 @@ def corrupt_asr(text: str, lang): ] return corrupted_sentences - tokenized_sentences = [tokenizer.tokenize(sentence) for sentence in sentences] - corrupted_tokenized_sentences = [ - [token for token in tokens if token not in Constants.PUNCTUATION_CHARS] for tokens in tokenized_sentences - ] - corrupted_sentences = [ - tokenizer.detokenize(corrupted_tokens).lower() for corrupted_tokens in corrupted_tokenized_sentences - ] - return corrupted_sentences @@ -328,43 +329,53 @@ def corrupt_training( labels.insert(last_index_in_block, 0) else: del block_ids[i + 1] - if ( - tokenizer - and separator == "" - and label_args.non_whitespace_remove_spaces - and i + 1 < len(input_ids) - ): - # tokenizer.decode() retains the space that leaks the information - # so we need to get the position within the tokenized text and then remove the space - # (so there is no more space when fed into the tokenizer call) - if input_ids[i + 1] == tokenizer.convert_tokens_to_ids("▁"): - # remove artificial space - del input_ids[i + 1] - del labels[i + 1] - del block_ids[i + 1] - if i + 1 < len(input_ids): - next_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) - if next_token.startswith("▁"): - # next token starts with _ --> remove the _ from the token and re-tokenize - remove_next = False - remaining_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) - if len(remaining_token) > 1: - # ▁Test --> Test - remaining_token = remaining_token[1:] - else: - # ▁ --> remove - remove_next = True - remaining_id = tokenizer.convert_tokens_to_ids(remaining_token) - # replace the token with the remaining token - if remaining_id != tokenizer.unk_token_id: - input_ids[i + 1] = remaining_id - else: - # UNK token, remove it - remove_next = True - if remove_next: - del input_ids[i + 1] - del labels[i + 1] - del block_ids[i + 1] + if tokenizer and separator == "": + if label_args.non_whitespace_remove_spaces and i + 1 < len(input_ids): + # tokenizer.decode() retains the space that leaks the information + # so we need to get the position within the tokenized text and then remove the space + # (so there is no more space when fed into the tokenizer call) + if input_ids[i + 1] == tokenizer.convert_tokens_to_ids("▁"): + # remove artificial space + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + if i + 1 < len(input_ids): + next_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) + if next_token.startswith("▁"): + # next token starts with _ --> remove the _ from the token and re-tokenize + remove_next = False + remaining_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) + if len(remaining_token) > 1: + # ▁Test --> Test + remaining_token = remaining_token[1:] + else: + # ▁ --> remove + remove_next = True + remaining_id = tokenizer.convert_tokens_to_ids(remaining_token) + # replace the token with the remaining token + if remaining_id != tokenizer.unk_token_id: + input_ids[i + 1] = remaining_id + else: + # UNK token, remove it + remove_next = True + if remove_next: + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + elif label_args.non_whitespace_retokenize: + # re-tokenize full span + # this is a bit more expensive, but it is the only way to ensure that the space is removed + # and the token is re-tokenized correctly + # but: only tokenize from current position onwards to keep re-usage labels + input_ids = input_ids[: i + 1] + tokenizer.encode( + tokenizer.decode(input_ids[i + 1 :]), add_special_tokens=False + ) + # if new_input_ids != input_ids: + # print("new_input_ids", tokenizer.decode(new_input_ids)) + # print("input_ids", tokenizer.decode(input_ids)) + # input_ids = new_input_ids + labels = labels[: i + 1] + label(input_ids[i + 1 :], label_dict) + if random.random() < label_args.case_corruption_prob_after_newline and i + 1 < len(input_ids): input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) From e5844cc7bbb9edd0b98282786f27bb0c3eb40584 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 26 Apr 2024 09:43:56 +0000 Subject: [PATCH 135/262] update xlmr labels --- data/punctuation_xlmr_top10_with.txt | 81 +++++++ data/punctuation_xlmr_top10_without.txt | 76 +++++++ data/punctuation_xlmr_top15_with.txt | 125 ++++++++++ data/punctuation_xlmr_top15_without.txt | 119 ++++++++++ data/punctuation_xlmr_top20_with.txt | 172 ++++++++++++++ data/punctuation_xlmr_top20_without.txt | 179 +++++++++++++++ data/punctuation_xlmr_top25_with.txt | 224 ++++++++++++++++++ data/punctuation_xlmr_top25_without.txt | 240 ++++++++++++++++++++ data/punctuation_xlmr_top30_with.txt | 276 ++++++++++++++++++++++ data/punctuation_xlmr_top30_without.txt | 290 ++++++++++++++++++++++++ data/punctuation_xlmr_top5_with.txt | 46 ++++ data/punctuation_xlmr_top5_without.txt | 36 +++ scripts/find_common_punctuation.py | 51 +++++ scripts/find_common_punctuation_xlmr.py | 60 +++++ 14 files changed, 1975 insertions(+) create mode 100644 data/punctuation_xlmr_top10_with.txt create mode 100644 data/punctuation_xlmr_top10_without.txt create mode 100644 data/punctuation_xlmr_top15_with.txt create mode 100644 data/punctuation_xlmr_top15_without.txt create mode 100644 data/punctuation_xlmr_top20_with.txt create mode 100644 data/punctuation_xlmr_top20_without.txt create mode 100644 data/punctuation_xlmr_top25_with.txt create mode 100644 data/punctuation_xlmr_top25_without.txt create mode 100644 data/punctuation_xlmr_top30_with.txt create mode 100644 data/punctuation_xlmr_top30_without.txt create mode 100644 data/punctuation_xlmr_top5_with.txt create mode 100644 data/punctuation_xlmr_top5_without.txt create mode 100644 scripts/find_common_punctuation.py create mode 100644 scripts/find_common_punctuation_xlmr.py diff --git a/data/punctuation_xlmr_top10_with.txt b/data/punctuation_xlmr_top10_with.txt new file mode 100644 index 00000000..53422f3a --- /dev/null +++ b/data/punctuation_xlmr_top10_with.txt @@ -0,0 +1,81 @@ +! +" +# +% +& +' +( +) +), +); +******* ++ +, +- +. +... +/ +: +:// +; += +? +] +_ +` +{ +| +~ +° +» +՝ +։ +، +۔ +। +၊ +။ +၏ +፡ +፡፡ +። +፣ +፤ +។ +‘ +’ +‚ +“ +” +′ +€ +╬ +▁ +▁" +▁# +▁& +▁' +▁( +▁+ +▁- +▁/ +▁: +▁` +▁« +▁· +▁» +▁̧ +▁، +▁۔ +▁। +▁។ +▁៖ +▁– +▁— +▁‘ +▁“ +▁„ +▁€ +、 +。 +】【 diff --git a/data/punctuation_xlmr_top10_without.txt b/data/punctuation_xlmr_top10_without.txt new file mode 100644 index 00000000..62fac613 --- /dev/null +++ b/data/punctuation_xlmr_top10_without.txt @@ -0,0 +1,76 @@ +! +" +", +# +$ +% +& +' +( +) +), +). +); +)، +******* ++ +, +- +. +..! +... +.” +/ +: +:// +:“ +; += +? +?? +[ +] +_ +` +{ +| +~ +° +· +» +՝ +։ +، +؛ +؟ +۔ +। +၊ +။ +၏ +፡ +፡፡ +። +፣ +፤ +។ +៖ +— +—— +‘ +’ +‚ +“ +” +”. +′ +′′ +‹ +⁊ +€ +║ +╬ +▁ +、 +。 +】【 diff --git a/data/punctuation_xlmr_top15_with.txt b/data/punctuation_xlmr_top15_with.txt new file mode 100644 index 00000000..368d9ad9 --- /dev/null +++ b/data/punctuation_xlmr_top15_with.txt @@ -0,0 +1,125 @@ +! +" +", +# +$ +% +& +&# +' +( +) +), +). +); +)، +******* ++ +, +- +. +..! +... +.” +/ +: +:// +:“ +; += +> +? +?? +[ +] +_ +` +{ +| +~ +° +· +» +՝ +։ +״ +، +؛ +؟ +۔ +। +၊ +။ +၍ +၏ +፡ +፡፡ +። +፣ +፤ +។ +៖ +— +—— +‘ +’ +‚ +“ +” +”. +′ +′′ +‹ +⁊ +€ +║ +╬ +▁ +▁" +▁# +▁$ +▁% +▁& +▁' +▁( +▁* +▁+ +▁- +▁.. +▁... +▁/ +▁: +▁; +▁= +▁>> +▁? +▁[ +▁^ +▁` +▁} +▁« +▁· +▁» +▁̧ +▁، +▁۔ +▁। +▁។ +▁៖ +▁– +▁— +▁‘ +▁“ +▁” +▁„ +▁• +▁€ +、 +。 +《 +「 +」 +】 +】【 +・ +😂 diff --git a/data/punctuation_xlmr_top15_without.txt b/data/punctuation_xlmr_top15_without.txt new file mode 100644 index 00000000..3a1fbf19 --- /dev/null +++ b/data/punctuation_xlmr_top15_without.txt @@ -0,0 +1,119 @@ +! +!!! +" +", +". +"; +# +$ +% +& +&# +' +( +) +), +). +); +)، +******* ++ +, +- +. +..! +... +...! +................ +.” +/ +: +:// +:“ +; += +> +? +?" +?? +?” +@ +[ +\ +] +]] +_ +________________ +` +{ +| +} +~ +¤ +° +± +¶ +· +» +») +», +». +˹ +՝ +։ +׳ +״ +، +؛ +؟ +۔ +। +।’ +၊ +။ +၍ +၏ +፡ +፡፡ +። +፣ +፤ +។ +៕ +៖ +– +— +—— +‘ +’ +‚ +“ +“, +” +”, +”. +′ +′′ +‹ +⁊ +€ +║ +╕ +╗ +╛ +╝ +╬ +▁ +░ +□ +✡ +、 +。 +《 +》 +「 +」 +】 +】【 +・ +😂 diff --git a/data/punctuation_xlmr_top20_with.txt b/data/punctuation_xlmr_top20_with.txt new file mode 100644 index 00000000..78ca81a1 --- /dev/null +++ b/data/punctuation_xlmr_top20_with.txt @@ -0,0 +1,172 @@ +! +!!! +" +"). +", +". +# +$ +% +& +&# +' +( +) +), +). +); +)، +******* ++ +, +- +. +..! +... +.” +/ +: +:// +:“ +; += +> +? +?" +?? +@ +[ +\ +] +]] +_ +` +{ +| +} +~ +¤ +° +± +· +» +») +», +˶ +˹ +՝ +։ +״ +، +؛ +؟ +۔ +। +।’ +၊ +။ +၍ +၏ +፡ +፡፡ +። +፣ +፤ +។ +៖ +– +— +—— +‘ +’ +‚ +“ +“, +” +”, +”. +′ +′′ +‹ +› +⁊ +€ +║ +╗ +╛ +╝ +╣ +╬ +▁ +▁! +▁" +▁# +▁$ +▁% +▁& +▁' +▁( +▁(...) +▁(« +▁) +▁* +▁+ +▁- +▁.. +▁... +▁/ +▁: +▁:) +▁; +▁;) +▁= +▁> +▁>> +▁? +▁@ +▁[ +▁[[ +▁^ +▁` +▁} +▁« +▁° +▁· +▁» +▁× +▁́ +▁̧ +▁، +▁۔ +▁। +▁ေ +▁့ +▁၊ +▁။ +▁។ +▁៖ +▁– +▁— +▁‘ +▁’’ +▁“ +▁” +▁„ +▁• +▁€ +▁↑ +▁【 +□ +○ +✡ +、 +。 +《 +》 +「 +」 +【 +】 +】【 +・ +😂 diff --git a/data/punctuation_xlmr_top20_without.txt b/data/punctuation_xlmr_top20_without.txt new file mode 100644 index 00000000..291e6a14 --- /dev/null +++ b/data/punctuation_xlmr_top20_without.txt @@ -0,0 +1,179 @@ +! +!! +!!! +!" +!“ +" +"). +", +". +"; +# +$ +% +%) +& +&# +' +( +) +))) +), +). +): +); +)، +* +** +******* ++ +, +- +. +." +..! +... +...! +..." +..... +...... +........ +.......... +................ +...” +..? +.” +/ +: +:// +:“ +; += +== +> +? +?! +?" +?? +?“ +?” +@ +[ +\ +] +]] +^ +_ +__ +________________ +` +`` +{ +{{ +| +} +}} +~ +¡ +¤ +© +« +® +° +± +¶ +· +» +») +», +»- +». +¿ +˵ +˶ +˹ +՝ +՞ +։ +׳ +״ +، +؛ +؟ +۔ +۔۔۔ +। +।’ +၊ +။ +၌ +၍ +၏ +፡ +፡፡ +። +፣ +፤ +፥ +។ +៕ +៖ +– +— +—— +‘ +‘‘ +’ +‚ +“ +“, +“. +” +”, +”. +‡ +• +′ +′′ +‹ +› +⁊ +€ +₺ +∼ +┐ +║ +╒ +╕ +╗ +╛ +╝ +╢ +╣ +╬ +▁ +░ +□ +○ +✖ +✡ +❥ +⤵ +⭐ +、 +。 +。” +《 +》 +「 +」 +【 +】 +】【 +〜 +・ +🌟 +🎁 +😂 +😄 +🙂 diff --git a/data/punctuation_xlmr_top25_with.txt b/data/punctuation_xlmr_top25_with.txt new file mode 100644 index 00000000..7daf84ad --- /dev/null +++ b/data/punctuation_xlmr_top25_with.txt @@ -0,0 +1,224 @@ +! +!! +!!! +!" +" +"). +", +". +"; +# +$ +% +%) +& +&# +' +( +) +), +). +): +); +)، +* +******* ++ +, +- +. +." +..! +... +...! +................ +.” +/ +: +:// +:“ +; += +> +? +?" +?? +?“ +?” +@ +[ +\ +] +]] +^ +_ +________________ +` +`` +{ +| +} +~ +¤ +° +± +· +» +») +», +»- +». +¿ +× +˵ +˶ +˹ +՝ +՞ +։ +׳ +״ +، +؛ +؟ +۔ +। +।’ +၊ +။ +၍ +၏ +፡ +፡፡ +። +፣ +፤ +፥ +។ +៕ +៖ +– +— +—— +‘ +‘‘ +’ +‚ +“ +“, +“. +” +”, +”. +”。 +‡ +• +′ +′′ +‹ +› +⁊ +€ +₺ +┐ +║ +╒ +╕ +╗ +╛ +╝ +╢ +╣ +╬ +▁ +▁! +▁" +▁# +▁$ +▁% +▁%. +▁& +▁' +▁( +▁(...) +▁(« +▁) +▁* +▁+ +▁- +▁.. +▁... +▁/ +▁: +▁:) +▁:-) +▁; +▁;) +▁< +▁= +▁> +▁>> +▁? +▁@ +▁[ +▁[...] +▁[[ +▁^ +▁` +▁{ +▁} +▁~ +▁“ +▁§ +▁« +▁° +▁· +▁» +▁¿ +▁× +▁́ +▁̧ +▁، +▁۔ +▁। +▁් +▁ေ +▁့ +▁၊ +▁။ +▁។ +▁៕ +▁៖ +▁– +▁— +▁‘ +▁‘‘ +▁’’ +▁“ +▁” +▁„ +▁• +▁‬ +▁› +▁€ +▁↑ +▁【 +▁😀 +░ +□ +○ +✡ +⭐ +、 +。 +《 +》 +「 +」 +【 +】 +】【 +〜 +・ +~ +😂 diff --git a/data/punctuation_xlmr_top25_without.txt b/data/punctuation_xlmr_top25_without.txt new file mode 100644 index 00000000..cd3c2b53 --- /dev/null +++ b/data/punctuation_xlmr_top25_without.txt @@ -0,0 +1,240 @@ +! +!! +!!! +!" +!) +!» +!“ +!” +" +") +"), +"). +", +". +"; +"، +# +$ +% +%) +& +&# +' +'' +( +) +))) +), +). +): +); +)، +* +** +**** +******* ++ +, +- +---------- +. +." +..! +..!! +... +...! +..." +...) +..... +...... +....... +........ +.......... +................ +...» +...” +..? +.” +/ +: +:// +:“ +; += +== +> +>< +? +?! +?" +?? +?“ +?” +@ +[ +[/ +\ +\\ +] +]] +^ +_ +__ +___ +________ +________________ +` +`` +{ +{{ +| +} +}} +~ +¡ +£ +¤ +§ +© +« +«. +® +° +± +¶ +· +» +») +», +»,- +»- +». +»; +»։ +¿ +× +˭ +˵ +˶ +˷ +˹ +˾ +՝ +՞ +։ +׳ +״ +، +؎ +؛ +؟ +؟؟؟؟ +٪ +٫ +٬ +۔ +۔۔۔ +। +।। +।’ +।” +၊ +။ +၌ +၍ +၎ +၏ +፡ +፡፡ +። +፣ +፤ +፥ +។ +៕ +៖ +‐ +– +— +—— +‘ +‘‘ +’ +‚ +“ +“, +“. +” +”) +”), +”, +”. +”; +”“ +”。 +„ +‡ +• +′ +′′ +‹ +› +›› +⁊ +€ +₱ +₺ +∼ +≥ +┐ +║ +╒ +╕ +╗ +╙ +╛ +╝ +╢ +╣ +╥ +╬ +▁ +░ +■ +□ +▼ +○ +⚜ +✖ +✡ +❥ +⤵ +⭐ +、 +。 +。” +《 +》 +「 +」 +」, +』 +【 +】 +】【 +〜 +・ +~ +🌟 +🎁 +🐛🐜 +🐝 +👍 +💕 +💪 +😂 +😄 +😍 +😘 +🙂 diff --git a/data/punctuation_xlmr_top30_with.txt b/data/punctuation_xlmr_top30_with.txt new file mode 100644 index 00000000..86389d4b --- /dev/null +++ b/data/punctuation_xlmr_top30_with.txt @@ -0,0 +1,276 @@ +! +!! +!!! +!" +!“ +" +"). +", +". +"; +# +$ +% +%) +& +&# +' +( +) +))) +), +). +): +); +)، +* +** +******* ++ +, +- +. +." +..! +... +...! +..." +...) +...... +................ +..? +.” +/ +: +:// +:“ +; += +== +> +>< +? +?! +?" +?? +?“ +?” +@ +[ +\ +\\ +] +]] +^ +_ +__ +___ +________ +________________ +` +`` +{ +{{ +| +} +}} +~ +¡ +¤ +© +« +® +° +± +¶ +· +» +») +», +»- +». +¿ +× +˵ +˶ +˹ +՝ +՞ +։ +׳ +״ +، +؛ +؟ +۔ +۔۔۔ +। +।’ +।” +၊ +။ +၍ +၏ +፡ +፡፡ +። +፣ +፤ +፥ +។ +៕ +៖ +– +— +—— +‘ +‘‘ +’ +‚ +“ +“, +“. +” +”, +”. +”。 +‡ +• +′ +′′ +‹ +› +⁊ +€ +₺ +┐ +║ +╒ +╕ +╗ +╙ +╛ +╝ +╢ +╣ +╬ +▁ +▁! +▁" +▁# +▁$ +▁% +▁%. +▁& +▁' +▁'' +▁( +▁(+ +▁(...) +▁(« +▁) +▁* +▁** +▁+ +▁- +▁-- +▁--> +▁.. +▁... +▁..... +▁......... +▁/ +▁: +▁:) +▁:- +▁:-) +▁:: +▁; +▁;) +▁< +▁= +▁> +▁>> +▁? +▁@ +▁[ +▁[...] +▁[[ +▁^ +▁` +▁{ +▁} +▁~ +▁“ +▁¡ +▁£ +▁§ +▁« +▁° +▁· +▁» +▁¿ +▁× +▁́ +▁̧ +▁، +▁۔ +▁। +▁් +▁ေ +▁့ +▁၊ +▁။ +▁፣ +▁។ +▁៕ +▁៖ +▁– +▁— +▁‘ +▁‘‘ +▁’’ +▁“ +▁” +▁„ +▁• +▁‬ +▁‹‹ +▁› +▁€ +▁€. +▁← +▁↑ +▁→ +▁「 +▁【 +▁😀 +▁😉 +▁🙂 +░ +■ +□ +○ +● +✖ +✡ +❥ +⤵ +⭐ +、 +。 +。” +《 +》 +「 +」 +』 +【 +】 +】【 +〜 +・ +~ +😂 +😄 +🙂 diff --git a/data/punctuation_xlmr_top30_without.txt b/data/punctuation_xlmr_top30_without.txt new file mode 100644 index 00000000..2a6d0402 --- /dev/null +++ b/data/punctuation_xlmr_top30_without.txt @@ -0,0 +1,290 @@ +! +!! +!!! +!!!! +!" +!) +!» +!“ +!” +" +") +"), +"). +", +". +"; +"? +"، +# +$ +% +%) +& +&# +' +'' +( +) +))) +), +). +): +); +)، +* +** +*** +**** +******* ++ +, +- +--- +---- +---------- +. +." +.'' +..! +..!! +... +...! +..." +...) +..... +...... +....... +........ +.......... +........... +................ +...» +...” +..? +.” +/ +// +: +:)) +:// +:“ +; +< +<<< += +== +> +>< +>> +>>> +? +?! +?" +?? +??? +???? +?“ +?” +@ +[ +[/ +\ +\\ +] +]] +^ +_ +__ +___ +____ +________ +________________ +` +`` +{ +{{ +| +} +}} +~ +~~ +¡ +£ +¤ +§ +© +« +«. +® +° +± +¶ +· +» +») +», +»,- +»- +». +»: +»; +»։ +»، +¿ +× +˭ +˳ +˵ +˶ +˷ +˹ +˽ +˾ +϶ +՝ +՞ +։ +֊ +׳ +״ +، +؎ +؛ +؟ +؟؟؟؟ +٪ +٫ +٬ +۔ +۔۔۔ +। +।। +।’ +।” +၊ +။ +၌ +၍ +၎ +၏ +፡ +፡፡ +። +፣ +፤ +፥ +፦ +។ +៕ +៖ +៚ +‐ +– +— +—— +‘ +‘‘ +’ +‚ +“ +“, +“. +” +”) +”), +”, +”. +”; +”“ +”。 +„ +‡ +• +‰ +′ +′′ +‹ +› +›› +⁊ +₫ +€ +₱ +₺ +− +∼ +≥ +─ +┐ +┴ +║ +╒ +╕ +╗ +╙ +╚ +╛ +╝ +╡ +╢ +╣ +╥ +╬ +▀ +▁ +░ +▒ +▓ +■ +□ +▼ +◄ +○ +● +☝ +⚜ +✈ +✖ +✡ +❥ +⤵ +⭐ +、 +、「 +。 +。” +《 +》 +》, +「 +」 +」, +」。 +『 +』 +【 +】 +】【 +〒 +〜 +・ +~ +🇩 +🇮 +🌟 +🎁 +🐛🐜 +🐝 +🐞 +👁 +👆 +👍 +💕 +💪 +😂 +😄 +😍 +😘 +🙂 +🦂 diff --git a/data/punctuation_xlmr_top5_with.txt b/data/punctuation_xlmr_top5_with.txt new file mode 100644 index 00000000..1fce3876 --- /dev/null +++ b/data/punctuation_xlmr_top5_with.txt @@ -0,0 +1,46 @@ +! +" +# +% +' +( +) +, +- +. +... +/ +: +; +? +| +° +։ +، +۔ +। +၊ +။ +፡፡ +። +፣ +។ +‘ +’ +‚ +▁ +▁# +▁( +▁- +▁« +▁· +▁، +▁۔ +▁। +▁។ +▁– +▁‘ +▁€ +、 +。 +】【 diff --git a/data/punctuation_xlmr_top5_without.txt b/data/punctuation_xlmr_top5_without.txt new file mode 100644 index 00000000..3d5d469a --- /dev/null +++ b/data/punctuation_xlmr_top5_without.txt @@ -0,0 +1,36 @@ +! +" +# +% +' +( +) +, +- +. +... +/ +: +; +? +_ +| +° +» +։ +، +۔ +। +၊ +။ +፡፡ +። +፣ +។ +‘ +’ +‚ +▁ +、 +。 +】【 diff --git a/scripts/find_common_punctuation.py b/scripts/find_common_punctuation.py new file mode 100644 index 00000000..2aea44d3 --- /dev/null +++ b/scripts/find_common_punctuation.py @@ -0,0 +1,51 @@ +from collections import Counter +from transformers import HfArgumentParser +from dataclasses import dataclass +from datasets import load_dataset +import unicodedata +import json +import pickle +import pandas as pd +import os +from pathlib import Path + + +ROOT_DIR = Path(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) + + +LANGINFO = pd.read_csv(os.path.join(ROOT_DIR, "data", "language_info.csv"), index_col=0) + + +@dataclass +class Args: + file: str = "data/sentence/train.parquet" + txt_output: str = "data/punctuation.txt" + json_output: str = "data/punctuation.json" + counter_output: str = "data/punctuation_counter.pkl" + top_n: int = 30 + + +all_chars = [chr(c) for c in range(0x110000)] +punctuation_chars = set(c for c in all_chars if "S" in unicodedata.category(c) or "P" in unicodedata.category(c)) + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + + dset = load_dataset("parquet", data_files=args.file, split="train") + + counters = {lang_code: Counter() for lang_code in LANGINFO.index} + + for i in range(len(dset)): + sample = dset[i] + + counters[sample["lang"]].update(c for c in sample["text"] if c in punctuation_chars) + + punctuation_to_include = sorted({x[0] for c in counters.values() for x in c.most_common(args.top_n)}) + + json.dump( + {key: [x[0] for x in c.most_common(args.top_n)] for key, c in counters.items()}, + open(args.json_output, "w"), + indent=4, + ) + pickle.dump(counters, open(args.counter_output, "wb")) + open(args.txt_output, "w").writelines([p + "\n" for p in punctuation_to_include]) diff --git a/scripts/find_common_punctuation_xlmr.py b/scripts/find_common_punctuation_xlmr.py new file mode 100644 index 00000000..83329e4c --- /dev/null +++ b/scripts/find_common_punctuation_xlmr.py @@ -0,0 +1,60 @@ +import re +from collections import Counter +from transformers import HfArgumentParser, XLMRobertaTokenizer +from dataclasses import dataclass +from datasets import load_dataset +import unicodedata +import json +import pickle +import pandas as pd +import os +from pathlib import Path + + +ROOT_DIR = Path(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) +LANGINFO = pd.read_csv(os.path.join(ROOT_DIR, "data", "language_info.csv"), index_col=0) + + +@dataclass +class Args: + file: str = "data/sentence/valid.parquet" + txt_output: str = "data/punctuation_xlmr" + json_output: str = "data/punctuation_xlmr" + top_n: int = 25 + include_whitespace: bool = True + + +tokenizer = XLMRobertaTokenizer.from_pretrained("xlm-roberta-base") + +# Regex for checking tokens that start with an underscore followed by punctuation +punctuation_pattern = re.compile(r"^▁+[^\w\s]+?$") + + +def is_punctuation(token, include_whitespace=False): + # Check if token matches the regular expression + if punctuation_pattern.match(token): + return include_whitespace + # Fallback to check if all characters in the token are punctuation + return all("P" in unicodedata.category(ch) for ch in token) or all("S" in unicodedata.category(ch) for ch in token) + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + dset = load_dataset("parquet", data_files=args.file, split="train") + counters = {lang_code: Counter() for lang_code in LANGINFO.index} + + for i in range(len(dset)): + sample = dset[i] + tokens = tokenizer.tokenize(sample["text"]) + counters[sample["lang"]].update(token for token in tokens if is_punctuation(token, args.include_whitespace)) + + punctuation_to_include = sorted({x[0] for c in counters.values() for x in c.most_common(args.top_n)}) + + json_output = f"{args.json_output}_top{args.top_n}_{'with' if args.include_whitespace else 'without'}.json" + txt_output = f"{args.txt_output}_top{args.top_n}_{'with' if args.include_whitespace else 'without'}.txt" + json.dump( + {key: [x[0] for x in c.most_common(args.top_n)] for key, c in counters.items()}, + open(json_output, "w"), + indent=4, + ) + open(txt_output, "w").writelines([p + "\n" for p in punctuation_to_include]) From b11dafe00889173fe04e994daa1a60ab1985a1b9 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 26 Apr 2024 12:33:19 +0000 Subject: [PATCH 136/262] add label token hierarchy --- wtpsplit/utils.py | 127 +++++++++++++++++++++++++--------------------- 1 file changed, 68 insertions(+), 59 deletions(-) diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index adf0f00c..75023601 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -83,12 +83,13 @@ class LabelArgs: custom_punctuation_file: str = None retain_first_consecutive_punctuation: bool = True non_whitespace_remove_spaces: bool = True - non_whitespace_retokenize: bool = False case_corruption_prob_after_newline: float = 0.0 case_corruption_prob_after_punct: float = 0.0 corrupt_entire_chunk_prob: float = 0.0 corrupt_entire_chunk_strategy: str = "mix" corrupt_entire_chunk_prob_full: float = 0.5 + use_all_labels: bool = False + use_all_labels_max_length: int = 3 def __post_init__(self): if self.custom_punctuation_file: @@ -124,6 +125,19 @@ def get_subword_label_dict(label_args, tokenizer): ) if token_id == tokenizer.unk_token_id: n_unks += 1 + if label_args.use_all_labels: + # check where c is in tokenizer.vocab keys + for i_t, (token, token_idx) in enumerate(tokenizer.vocab.items()): + if ( + c in token + and token_idx not in label_dict + and len(token) < label_args.use_all_labels_max_length + and not any(i.isdigit() for i in token) + ): + label_dict[token_idx] = 1 + Constants.AUX_OFFSET + i + logger.warning( + f"Special auxiliary character {c} has token ID {token_idx} and label {label_dict[token_idx]}, decoded: {tokenizer.decode([token_idx])}" + ) logger.info(f"found {n_unks} UNK tokens in auxiliary characters") @@ -329,53 +343,43 @@ def corrupt_training( labels.insert(last_index_in_block, 0) else: del block_ids[i + 1] - if tokenizer and separator == "": - if label_args.non_whitespace_remove_spaces and i + 1 < len(input_ids): - # tokenizer.decode() retains the space that leaks the information - # so we need to get the position within the tokenized text and then remove the space - # (so there is no more space when fed into the tokenizer call) - if input_ids[i + 1] == tokenizer.convert_tokens_to_ids("▁"): - # remove artificial space - del input_ids[i + 1] - del labels[i + 1] - del block_ids[i + 1] - if i + 1 < len(input_ids): - next_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) - if next_token.startswith("▁"): - # next token starts with _ --> remove the _ from the token and re-tokenize - remove_next = False - remaining_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) - if len(remaining_token) > 1: - # ▁Test --> Test - remaining_token = remaining_token[1:] - else: - # ▁ --> remove - remove_next = True - remaining_id = tokenizer.convert_tokens_to_ids(remaining_token) - # replace the token with the remaining token - if remaining_id != tokenizer.unk_token_id: - input_ids[i + 1] = remaining_id - else: - # UNK token, remove it - remove_next = True - if remove_next: - del input_ids[i + 1] - del labels[i + 1] - del block_ids[i + 1] - elif label_args.non_whitespace_retokenize: - # re-tokenize full span - # this is a bit more expensive, but it is the only way to ensure that the space is removed - # and the token is re-tokenized correctly - # but: only tokenize from current position onwards to keep re-usage labels - input_ids = input_ids[: i + 1] + tokenizer.encode( - tokenizer.decode(input_ids[i + 1 :]), add_special_tokens=False - ) - # if new_input_ids != input_ids: - # print("new_input_ids", tokenizer.decode(new_input_ids)) - # print("input_ids", tokenizer.decode(input_ids)) - # input_ids = new_input_ids - labels = labels[: i + 1] + label(input_ids[i + 1 :], label_dict) - + if ( + tokenizer + and separator == "" + and label_args.non_whitespace_remove_spaces + and i + 1 < len(input_ids) + ): + # tokenizer.decode() retains the space that leaks the information + # so we need to get the position within the tokenized text and then remove the space + # (so there is no more space when fed into the tokenizer call) + if input_ids[i + 1] == tokenizer.convert_tokens_to_ids("▁"): + # remove artificial space + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + if i + 1 < len(input_ids): + next_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) + if next_token.startswith("▁"): + # next token starts with _ --> remove the _ from the token and re-tokenize + remove_next = False + remaining_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) + if len(remaining_token) > 1: + # ▁Test --> Test + remaining_token = remaining_token[1:] + else: + # ▁ --> remove + remove_next = True + remaining_id = tokenizer.convert_tokens_to_ids(remaining_token) + # replace the token with the remaining token + if remaining_id != tokenizer.unk_token_id: + input_ids[i + 1] = remaining_id + else: + # UNK token, remove it + remove_next = True + if remove_next: + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] if random.random() < label_args.case_corruption_prob_after_newline and i + 1 < len(input_ids): input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) @@ -535,23 +539,28 @@ def reconstruct_sentences(text, partial_sentences): newline_whitespace_prob=1.0, case_corruption_prob_after_punct=1.0, case_corruption_prob_after_newline=1.0, + use_all_labels=True, ) label_dict = get_subword_label_dict(label_args, tokenizer) - + print(len(label_dict)) + # print all tokens with a number in it (from label_dict only) + print( + [tokenizer.decode(input_id) for input_id in input_ids if any(c.isdigit() for c in tokenizer.decode(input_id))] + ) # corrupt input_ids, block_ids, labels = corrupt_training( input_ids, block_ids, "en", label_args, label_dict, tokenizer=tokenizer ) - print(input_ids) - print(labels) - print(tokenizer.tokenize(text)) - print([(tokenizer.decode([input_id]), label) for input_id, label in zip(input_ids, labels)]) - print("newline labels in text:") - print(np.where(np.array(labels) == 1)) - print("newline ids in output text:") - print(np.where(np.array(input_ids) == tokenizer.all_special_ids[-1])) - print(tokenizer.decode(input_ids)) - print(tokenizer.decode(input_ids)) + # print(input_ids) + # print(labels) + # print(tokenizer.tokenize(text)) + # print([(tokenizer.decode([input_id]), label) for input_id, label in zip(input_ids, labels)]) + # print("newline labels in text:") + # print(np.where(np.array(labels) == 1)) + # print("newline ids in output text:") + # print(np.where(np.array(input_ids) == tokenizer.all_special_ids[-1])) + # print(tokenizer.decode(input_ids)) + # print(tokenizer.decode(input_ids)) # ords = [ord(c) for c in text] # block_ords = [0] * len(ords) From 070845468a6342d62f581c59eb127c7124123081 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 26 Apr 2024 16:54:11 +0000 Subject: [PATCH 137/262] skip corrupted evals (for now) --- wtpsplit/train/train.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index af728c47..daa5b372 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -575,6 +575,8 @@ def compute_metrics(trainer): if trainer.args.process_index == 0 and args.do_sentence_training: # with training_args.main_process_first(): for dataset_name, dataset in lang_data["sentence"].items(): + if "corrupt" in dataset_name: + continue score, info = evaluate_sentence( lang_code, dataset["data"], @@ -655,15 +657,15 @@ def compute_metrics(trainer): # avg_metrics[f"pairwise_average_{dataset_name}_f1_best"].append(info["f1_best"]) # avg_metrics[f"pairwise_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) if lang_code in ["zh", "ja", "my", "km"]: - avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_f1"].append(info["f1"]) - avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_f1_best"].append(info["f1_best"]) - avg_metrics[f"pairwise_average_nonwhitespace_{dataset_name}_threshold_best"].append(info["threshold_best"]) + avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"average_nonwhitespace_{dataset_name}_f1"].append(info["f1"]) + avg_metrics[f"average_nonwhitespace_{dataset_name}_f1_best"].append(info["f1_best"]) + avg_metrics[f"average_nonwhitespace_{dataset_name}_threshold_best"].append(info["threshold_best"]) else: - avg_metrics[f"pairwise_average_whitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"pairwise_average_whitespace_{dataset_name}_f1"].append(info["f1"]) - avg_metrics[f"pairwise_average_whitespace_{dataset_name}_f1_best"].append(info["f1_best"]) - avg_metrics[f"pairwise_average_whitespace_{dataset_name}_threshold_best"].append(info["threshold_best"]) + avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"average_whitespace_{dataset_name}_f1"].append(info["f1"]) + avg_metrics[f"average_whitespace_{dataset_name}_f1_best"].append(info["f1_best"]) + avg_metrics[f"average_whitespace_{dataset_name}_threshold_best"].append(info["threshold_best"]) for name, values in avg_metrics.items(): if len(values) > 1: From 3b066b3b61ec2c9b44be2af4903304e3bac1ca2e Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 27 Apr 2024 13:05:50 +0000 Subject: [PATCH 138/262] feats --- wtpsplit/evaluation/intrinsic.py | 54 +++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index d49cd1d2..9b6eddb2 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -5,6 +5,8 @@ import os import time import logging +import sys +import re import h5py import skops.io as sio @@ -42,7 +44,7 @@ class Args: # } # } # TODO: for songs/etc., maybe feed in each sample separately? - eval_data_path: str = "data/all_data_21-04.pth" + eval_data_path: str = "data/all_data_24_04.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 @@ -51,15 +53,48 @@ class Args: include_langs: List[str] = None custom_language_list: str = None threshold: float = 0.01 - max_n_train_sentences: int = 10_000 + max_n_train_sentences: int = 1_000 + max_n_test_sentences: int = sys.maxsize save_suffix: str = "" do_lowercase: bool = False do_remove_punct: bool = False keep_logits: bool = False skip_adaptation: bool = False + skip_corrupted: bool = False + zh_window: int = 10 clf_from_scratch: bool = False +ZH_CHAR_PATTERN = re.compile( + "[\u4e00-\u9fff\u3400-\u4dbf]" # Basic Multilingual Plane and Extension A +) + + +def preprocess_zh_sentence(text, n=10): + result = [] + length = len(text) + i = 0 + + while i < length: + # Determine the end of the current window + end = min(i + n, length) + window = text[i:end] + + # Use the compiled regex to check for the presence of Chinese characters + if ZH_CHAR_PATTERN.search(window): + # Remove all spaces from the window if it contains a Chinese character + modified_window = window.replace(" ", "") + else: + # Keep the window as is if no Chinese characters are found + modified_window = window + + result.append(modified_window) + # Increment the index by N to process non-overlapping windows + i += n + + return "".join(result) + + def process_logits(text, model, lang_code, args): # Extract necessary data logits, offsets_mapping, tokenizer = extract( @@ -138,6 +173,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # eval data for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): + if args.skip_corrupted and "corrupted" in dataset_name: + continue try: if args.adapter_path: if args.clf_from_scratch: @@ -168,7 +205,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dset_group = lang_group[dataset_name] if "test_logits" not in dset_group: - test_sentences = dataset["data"] + test_sentences = dataset["data"][: args.max_n_test_sentences] # if list of lists: flatten if isinstance(test_sentences[0], list): test_sentences = [item for sublist in test_sentences for item in sublist] @@ -176,6 +213,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) for sentence in test_sentences ] + test_sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in test_sentences] test_text = Constants.SEPARATORS[lang_code].join(test_sentences) start_time = time.time() # Start timing for test logits processing @@ -196,6 +234,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) for sentence in train_sentences ] + train_sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in train_sentences] train_sentences = train_sentences[: args.max_n_train_sentences] train_text = Constants.SEPARATORS[lang_code].join(train_sentences) @@ -267,10 +306,14 @@ def main(args): clf = model.model.classifier model.model.classifier = torch.nn.Sequential(clf, torch.nn.Linear(clf.out_features, 1)) + save_str += f"{args.save_suffix}" + if args.max_n_test_sentences < sys.maxsize: + save_str += f"_n{args.max_n_test_sentences}" + # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) - save_str += f"_u{args.threshold}{args.save_suffix}" + save_str += f"_u{args.threshold}" # now, compute the intrinsic scores. results = {} @@ -287,13 +330,14 @@ def main(args): clfs[lang_code] = {} for dataset_name, dataset in dsets["sentence"].items(): - sentences = dataset["data"] + sentences = dataset["data"][: args.max_n_test_sentences] if isinstance(sentences[0], list): sentences = [item for sublist in sentences for item in sublist] sentences = [ corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) for sentence in sentences ] + sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in sentences] # check if f[lang_code][dataset_name] exists if lang_code not in f or dataset_name not in f[lang_code]: continue From 2214fac853a27c68e2ecd7ce352984d4760ee152 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 27 Apr 2024 13:11:48 +0000 Subject: [PATCH 139/262] adapt window --- wtpsplit/evaluation/intrinsic.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 9b6eddb2..f7f10c38 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -61,7 +61,7 @@ class Args: keep_logits: bool = False skip_adaptation: bool = False skip_corrupted: bool = False - zh_window: int = 10 + zh_window: int = 0 clf_from_scratch: bool = False @@ -71,6 +71,8 @@ class Args: def preprocess_zh_sentence(text, n=10): + if n == 0: + return text result = [] length = len(text) i = 0 @@ -309,6 +311,8 @@ def main(args): save_str += f"{args.save_suffix}" if args.max_n_test_sentences < sys.maxsize: save_str += f"_n{args.max_n_test_sentences}" + if args.zh_window > 0: + save_str += f"_zh{args.zh_window}" # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) From 21ee4f8483225263d16e1aa3d53587b3b625b367 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 28 Apr 2024 06:46:11 +0000 Subject: [PATCH 140/262] eval corrupted again --- wtpsplit/train/train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index daa5b372..1d64ad44 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -575,8 +575,8 @@ def compute_metrics(trainer): if trainer.args.process_index == 0 and args.do_sentence_training: # with training_args.main_process_first(): for dataset_name, dataset in lang_data["sentence"].items(): - if "corrupt" in dataset_name: - continue + # if "corrupt" in dataset_name: + # continue score, info = evaluate_sentence( lang_code, dataset["data"], From 15d65b67aac11c8554e1a129189b41886aed7de0 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 28 Apr 2024 07:09:16 +0000 Subject: [PATCH 141/262] v3-3 backup --- calc_compression_rate.py | 31 ++++ wtpsplit/evaluation/kmer_optuna.py | 245 +++++++++++++++++++++++++++++ wtpsplit/summary_plot.py | 109 ++++--------- 3 files changed, 308 insertions(+), 77 deletions(-) create mode 100644 calc_compression_rate.py create mode 100644 wtpsplit/evaluation/kmer_optuna.py diff --git a/calc_compression_rate.py b/calc_compression_rate.py new file mode 100644 index 00000000..9acc5c1a --- /dev/null +++ b/calc_compression_rate.py @@ -0,0 +1,31 @@ +from datasets import load_dataset +from transformers import XLMRobertaTokenizer + +def calculate_compression_rate(dataset_name): + # Load the dataset + dataset = load_dataset(dataset_name, split='train') + + # Initialize the tokenizer + tokenizer = XLMRobertaTokenizer.from_pretrained('xlm-roberta-base') + + total_chars = 0 + total_tokens = 0 + + # Iterate over the dataset + for sample in dataset: + text = sample['text'] + total_chars += len(text) + + # Tokenize the text + tokens = tokenizer.tokenize(text) + total_tokens += len(tokens) + + # Calculate the average compression rate + avg_compression_rate = total_chars / total_tokens if total_tokens > 0 else 0 + + return avg_compression_rate + +# Example dataset +dataset_name = "markus583/mC4-TEST" +compression_rate = calculate_compression_rate(dataset_name) +print(compression_rate) diff --git a/wtpsplit/evaluation/kmer_optuna.py b/wtpsplit/evaluation/kmer_optuna.py new file mode 100644 index 00000000..17159c74 --- /dev/null +++ b/wtpsplit/evaluation/kmer_optuna.py @@ -0,0 +1,245 @@ +import copy +import logging +import sys +from dataclasses import dataclass +from datetime import datetime +from multiprocessing import Process +from typing import List + +import numpy as np +import optuna +import torch +from tqdm import tqdm +from transformers import AutoModelForTokenClassification, HfArgumentParser + +import wtpsplit.models # noqa: F401 +from wtpsplit.evaluation import evaluate_mixture +from wtpsplit.evaluation.intrinsic import compute_statistics +from wtpsplit.evaluation.intrinsic_pairwise import calculate_threshold, generate_k_mers, load_or_compute_logits +from wtpsplit.extract import PyTorchWrapper + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + + +@dataclass +class Args: + model_path: str + adapter_path: str = None + # eval data in the format: + # { + # "": { + # "sentence": { + # "": { + # "meta": { + # "train_data": ["train sentence 1", "train sentence 2"] + # }, + # "data": ["test sentence 1", "test sentence 2"] + # } + # } + # } + # } + eval_data_path: str = "data/eval.pth" + valid_text_path: str = None # "data/sentence/valid.parquet" + device: str = "cpu" + block_size: int = 512 + batch_size: int = 128 + include_langs: List[str] = None + threshold: float = 0.01 + max_n_train_sentences: int = 10_000 + save_suffix: str = "" + do_lowercase: bool = False + do_remove_punct: bool = False + skip_adaptation: bool = True + keep_logits: bool = True + + # k_mer-specific args + min_k: int = 2 + max_k: int = 4 + max_n_samples: int = sys.maxsize + sample_pct: float = 0.5 + min_k_mer_length: int = 0 + adjust_threshold: bool = True + # threshold + # threshold_increase_type: str = "linear" + threshold_min_length: int = 0 + threshold_max_length: int = 256 + threshold_max: float = 0.1 + # optuna args + n_trials: int = 16 + n_jobs: int = 32 + + +def objective(trial: optuna.Trial, args: Args, eval_data: dict, f_list) -> float: + # Suggest values for the hyperparameters we want to optimize + args.threshold_min_length = trial.suggest_int("threshold_min_length", 0, 256) + args.threshold_max_length = trial.suggest_int("threshold_max_length", 0, 256) + args.threshold_max = trial.suggest_float("threshold_max", 0.00, 0.5) + + # Execute the main function and retrieve results + all_results = [] + all_results_avg = [] + all_mean_u_acc = [] + for i, k in enumerate(range(args.min_k, args.max_k + 1)): + args.k = k + f = f_list[i] + results, results_avg = main(args, eval_data, f) + all_results.append(results) + all_results_avg.append(results_avg) + all_mean_u_acc.append(results_avg["u_acc"]["mean"]) + + # Store results in the trial's user attributes + trial.set_user_attr(f"{k}_detailed_results", results) + trial.set_user_attr(f"{k}_average_results", results_avg) + + # Objective is to maximize the average U accuracy + # return list as tuple + return tuple(all_mean_u_acc) + + +def load_data_and_model(args): + logger.info("Loading model...") + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) + + logger.info("Loading evaluation data...") + eval_data = torch.load(args.eval_data_path) + + # Possibly other initialization code here + return model, eval_data + + +def main(args, eval_data, f): + # now, compute the intrinsic scores. + results = {} + clfs = {} + # Initialize lists to store scores for each metric across all languages + u_scores = [] + u_accs = [] + thresholds_adj = [] + + for lang_code, dsets in tqdm(eval_data.items(), desc="Languages", total=len(eval_data), disable=True): + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + results[lang_code] = {} + clfs[lang_code] = {} + + for dataset_name, dataset in dsets["sentence"].items(): + sentences = dataset["data"] + sent_k_mers = generate_k_mers( + sentences, + k=args.k, + do_lowercase=args.do_lowercase, + do_remove_punct=args.do_remove_punct, + sample_pct=args.sample_pct, + max_n_samples=args.max_n_samples, + min_k_mer_length=args.min_k_mer_length, + ) + + clf = [None, None, None, args.threshold] + + score_u = [] + acc_u = [] + thresholds = [] + for i, k_mer in enumerate(sent_k_mers): + start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] + if args.adjust_threshold: + seq_len = f[lang_code][dataset_name]["test_n_logits"][i] + threshold_adjusted = calculate_threshold( + sequence_length=seq_len, + max_length=args.threshold_max_length, + min_length=args.threshold_min_length, + max_threshold=args.threshold_max, + default_threshold=args.threshold, + ) + clf[-1] = threshold_adjusted + thresholds.append(threshold_adjusted) + else: + raise NotImplementedError("Optuna runs are to select the optimal threshold config!") + single_score_u, _, info = evaluate_mixture( + lang_code, + f[lang_code][dataset_name]["test_logits"][:][start:end], + list(k_mer), + *clf, + ) + score_u.append(single_score_u) + acc_u.append(info["info_newline"]["correct_pairwise"]) + + score_u = np.mean(score_u) + acc_u = np.mean(acc_u) + threshold = np.mean(thresholds) + + results[lang_code][dataset_name] = { + "u": score_u, + "u_acc": acc_u, + "threshold_adj": threshold, + } + + u_scores.append((score_u, lang_code)) + u_accs.append((acc_u, lang_code)) + thresholds_adj.append((threshold, lang_code)) + + # Compute statistics for each metric across all languages + results_avg = { + "u": compute_statistics(u_scores), + "u_acc": compute_statistics(u_accs), + "threshold_adj": compute_statistics(thresholds_adj), + "include_langs": args.include_langs, + } + + return results, results_avg + + +def run_optimization(storage_url, study_name, args, eval_data, f_list): + """ + Function to run Optuna optimization in a separate process. + """ + study = optuna.load_study(study_name=study_name, storage=storage_url) + study.optimize( + lambda trial: objective(trial, copy.deepcopy(args), eval_data, f_list), + n_trials=args.n_trials, + show_progress_bar=True, + ) + + print(f"Completed optimization for study: {study_name}") + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + + model, eval_data = load_data_and_model(args) + + # first, logits for everything. + f_list = [] + for k in range(args.min_k, args.max_k + 1): + args.k = k + save_str = f"{args.model_path.replace('/','_')}_b{args.block_size}_u{args.threshold}_k_{k}{args.save_suffix}" + print(save_str) + out, _ = load_or_compute_logits(args, model, eval_data, None, save_str) + f_list.append(out) + + # replace k_[max_k] with k_mink-max_k in save_str + save_str = save_str.replace(f"k_{args.max_k}", f"k_{args.min_k}-{args.max_k}") + + # storage using SQLite URL + storage_url = "mysql://root@localhost/example" + study_name = f"{save_str}_{datetime.now().strftime('%Y%m%d%H%M%S')}" + + study = optuna.create_study( + study_name=study_name, + storage=storage_url, + directions=["maximize"] * (args.max_k - args.min_k + 1), + load_if_exists=True, + ) + + # Create multiple studies and launch them in separate processes + processes = [] + for i in range(args.n_jobs): + proc = Process(target=run_optimization, args=(storage_url, study_name, args, eval_data, f_list)) + processes.append(proc) + proc.start() + + # Wait for all processes to complete + for proc in processes: + proc.join() + diff --git a/wtpsplit/summary_plot.py b/wtpsplit/summary_plot.py index fc0f841c..7742565f 100644 --- a/wtpsplit/summary_plot.py +++ b/wtpsplit/summary_plot.py @@ -3,82 +3,33 @@ import json FILES = [ - # "xlm-normal-p-v2_auxp0.3_n0.9_b512_s64_intrinsic_results_u0.01.json", - # "xlmr-normal-9l-v2_L_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.0_b512_s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-aux0.0001_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-aux0.1_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-auxp0.1_b128+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-auxp0.1_b256+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-auxp0.1_b32+s16_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.1_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-auxp0.1_b64+s32_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-bs256_b8+s4_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-bs256_b16+s8_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-bs256_b32+s16_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-bs256_b64+s32_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-bs256_b128+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-bs256_b256+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2-bs256_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b8+s4_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b16+s8_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b32+s16_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b64+s32_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b128+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b256+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_0.1auxp0.2_bs256_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_b8+s4_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_b16+s8_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_b32+s16_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_b64+s32_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_b128+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_b256+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_b512+s128_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_bs256_b8+s4_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_bs256_b16+6_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_bs256_b32+16_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_bs256_b64+32_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_bs256_b128+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_bs256_b256+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.2_bs256_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.3_n0.9_b128_s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.3_n0.9_b16_s8_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.3_n0.9_b256_s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.3_n0.9_b32+s16_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.3_n0.9_b64_s32_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.3_n0.9_b8_s4_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.4_b128+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.4_b256+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.4_b32+s16_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.4_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_auxp0.4_b64+s32_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.3_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.5_b256+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.7_b16+s8_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.7_b32+s16_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.7_b64+s32_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.7_b128+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.7_b256+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.7_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.9_b8+s4_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.9_b16+s8_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.9_b32+s16_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.9_b64+s32_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.9_b128+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.9_b256+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-p-v2_n0.9_b512+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-v2_b128+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-v2_b256+s64_intrinsic_results_u0.01.json", - # "xlmr-normal-v2_b512+s64_intrinsic_results_u0.01.json", - "xlmr-normal-noaux_b16+s8_intrinsic_results_u0.01.json", - "xlmr-normal-noaux_b32+s16_intrinsic_results_u0.01.json", - "xlmr-normal-noaux_b64+s32_intrinsic_results_u0.01.json", - "xlmr-normal-noaux_b128+s64_intrinsic_results_u0.01.json", - "xlmr-normal-noaux_b256+s64_intrinsic_results_u0.01.json", - "xlmr-normal-noaux_b512+s64_intrinsic_results_u0.01.json", - # "evaluation/evaluation_results/wtp-canine-s-3l-no-adapters_intrinsic_results.json", - # "evaluation/evaluation_results/wtp-canine-s-3l_intrinsic_results.json" + # CS + # "intrinsic/xlmr-normal-p-v3_b512_s64_u0.01_extra-langs.json", + # "intrinsic/xlmr-normal-6l-p-v3_b512_s64_u0.01_extra-langs.json", + # "intrinsic/xlmr-12l-v3_b512_s64_u0.01_extra-langs.json", + # "intrinsic/xlmr-3l-v3_adapter_rf32_ep30_v2_np_b512_s64_u0.1_extra-langs.json", + # "intrinsic/xlmr-6l-v3_adapter_rf32_ep30_v2_np_b512_s64_u0.1_extra-langs.json", + # "intrinsic/xlmr-12l-v3_adapter_rf32_ep30_v2_np_b512_s64_u0.1_extra-langs.json", + # "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-3L-256BS-UD-OPUS-TED_b512_s64_u0.01_extra-langs_fix.json", + # "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-6L-256BS-UD-OPUS-TED_b512_s64_u0.01_extra-langs_fix.json", + # "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-12L-256BS-UD-OPUS-TED_b512_s64_u0.01_extra-langs_fix.json", + # TED + # "intrinsic/xlmr-normal-p-v3_b512_s64_u0.01_ted.json", + # "intrinsic/xlmr-normal-6l-p-v3_b512_s64_u0.01_ted.json", + # "intrinsic/xlmr-12l-v3_look60_b512_s64_u0.01_ted.json", + "intrinsic/xlmr-normal-p-v3_b512_s64_u0.01.json", + "intrinsic/xlmr-normal-6l-p-v3_b512+s64_intrinsic_results_u0.01.json", + "intrinsic/xlmr-12l-v3_b512_s64_u0.01.json", + "intrinsic/xlmr-3l-v3_adapter_rf32_ep30_v2_np_b512_s64_u0.1.json", + "intrinsic/xlmr-6l-v3_adapter_rf32_ep20_v2_100-1k-10k_b512_s64_u0.1.json", + "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-3L-256BS-UD-OPUS-TED_b512_s64_u0.01_fix.json", + "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-6L-256BS-UD-OPUS-TED_b512_s64_u0.01_fix.json", + "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-12L-256BS-UD-OPUS-TED_b512_s64_u0.01_fix.json", + "intrinsic/xlmr-3l-v3-igor-mixture_adapter_rf32_ep30_v2_b512_s64_u0.1.json", + "intrinsic/xlmr-6l-v3-igor-mixture_adapter_rf32_ep30_v2_b512_s64_u0.1.json", + # shared task subset + # "intrinsic/xlmr-12l-v3_adapter_rf32_ep30_v2_np_CORRUPT_b512_s64_u0.1_TED.json", + # "intrinsic/xlmr-12l-v3-igor-mixture_adapter_rf32_ep30_v2_np_CORRUPT_b512_s64_u0.1_TED.json", ] NAME = "test" @@ -121,7 +72,11 @@ def plot_violin_from_json(files, name): for lang, scores in content.items(): for dataset, values in scores.items(): for metric in ["u", "t", "punct"]: - data["score"].append(values[metric]) + # if not (lang in ["en", "de", "fr", "it"] and dataset == "ted2020"): + # continue + if dataset != "ersatz": + continue + data["score"].append(values[metric] if values[metric] is not None else 0.0) data["metric"].append(metric) data["file"].append(file.split("/")[-1]) # Use file base name without extension for legend data["x"].append(x_positions[metric][file]) # Use computed x position From 0600c1708feea8e37124a7b99020bc3b4cdefe7c Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 29 Apr 2024 07:40:31 +0000 Subject: [PATCH 142/262] draft t --- run.sh | 2 +- wtpsplit/tokenization_utils.py | 96 ++++++ wtpsplit/train/train_xlmr.py | 576 +++++++++++++++++++++++++++++++++ wtpsplit/utils.py | 83 +---- 4 files changed, 684 insertions(+), 73 deletions(-) create mode 100644 wtpsplit/tokenization_utils.py create mode 100644 wtpsplit/train/train_xlmr.py diff --git a/run.sh b/run.sh index d3ba4a89..ff595d23 100755 --- a/run.sh +++ b/run.sh @@ -1,2 +1,2 @@ # TODO: cleanup in case of no .arrow files but cache-* files available. -python3 ~/wtpsplit/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train.py $1 \ No newline at end of file +python3 ~/wtpsplit/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train_xlmr.py $1 \ No newline at end of file diff --git a/wtpsplit/tokenization_utils.py b/wtpsplit/tokenization_utils.py new file mode 100644 index 00000000..14a32d0c --- /dev/null +++ b/wtpsplit/tokenization_utils.py @@ -0,0 +1,96 @@ +from collections import defaultdict + +from wtpsplit.utils import Constants + + +def tokenize_and_get_labels(sentences, tokenizer, separator): + # Join sentences and prepare single string for tokenization + joined_sentence = separator.join(sentences) + sentence_lengths = [len(sentence) for sentence in sentences] + + # Calculate where each sentence ends in the joined string + sentence_end_positions = [sum(sentence_lengths[: i + 1]) + i * len(separator) - 1 for i in range(len(sentences))] + + # Tokenize the whole text at once + tokenized_input = tokenizer( + joined_sentence, + return_offsets_mapping=True, + add_special_tokens=False, + truncation=False, + verbose=False, + padding=False, + ) + + tokens = tokenized_input.tokens() + offsets = tokenized_input["offset_mapping"] + if not tokens: + return [], [] + + # labels + sentence_ending_labels = [0] * len(tokens) + + # last token of each sentence to 1 + sentence_index = 0 + for i, (start, end) in enumerate(offsets): + if sentence_index < len(sentence_end_positions) and end > sentence_end_positions[sentence_index]: + sentence_ending_labels[i - 1] = 1 + sentence_index += 1 + if sentence_index >= len(sentence_end_positions): + break + + # Make sure the last token of the last sentence is marked if it wasn't already + sentence_ending_labels[-1] = 1 + + return tokenized_input["input_ids"], sentence_ending_labels + + +def pack_sentences(examples, block_size, tokenizer, overflow_size=0): + all_input_blocks = [] + all_label_blocks = [] + all_langs = [] + + # Group by languages first + lang_grouped_examples = {lang: [] for lang in set(examples["lang"])} + for sentence, lang in zip(examples["text"], examples["lang"]): + lang_grouped_examples[lang].append(sentence.strip("\n")) + + for current_lang, sentences in lang_grouped_examples.items(): + separator = Constants.SEPARATORS.get(current_lang, " ") + token_count, one_block_sentences = 0, [] + + # Batch tokenize sentences + tokenized_sentences = tokenizer(sentences, add_special_tokens=False, verbose=False, padding=False) + input_ids_list = tokenized_sentences["input_ids"] + + for sentence, input_ids in zip(sentences, input_ids_list): + if not sentence or sentence.isnumeric(): + continue + num_sentence_tokens = len(input_ids) + + # Allow exceeding block size slightly to avoid underfilling blocks + if token_count + num_sentence_tokens > block_size + overflow_size: + # Once the limit is exceeded, process the current block before adding the sentence + if one_block_sentences: + input_ids, labels = tokenize_and_get_labels(one_block_sentences, tokenizer, separator) + all_input_blocks.append(input_ids) + all_label_blocks.append(labels) + all_langs.append(current_lang) + # Reset and start new block + token_count, one_block_sentences = 0, [] + + # Append sentence to the current or new block after processing the previous block + one_block_sentences.append(sentence) + token_count += num_sentence_tokens + + # Ensure the last batch of sentences is processed + if one_block_sentences: + input_ids, labels = tokenize_and_get_labels(one_block_sentences, tokenizer, separator) + all_input_blocks.append(input_ids) + all_label_blocks.append(labels) + all_langs.append(current_lang) + + return { + "input_ids": all_input_blocks, + "labels": all_label_blocks, + "lang": all_langs, + } diff --git a/wtpsplit/train/train_xlmr.py b/wtpsplit/train/train_xlmr.py new file mode 100644 index 00000000..54ab148a --- /dev/null +++ b/wtpsplit/train/train_xlmr.py @@ -0,0 +1,576 @@ +import logging +import math +import os +import random +import shutil +import sys +import time +from collections import Counter, defaultdict +from dataclasses import dataclass +from functools import partial +from glob import glob +from typing import List, Optional + +import datasets +import numpy as np +import torch +import torch_xla.core.xla_model as xm +import transformers +from datasets import load_dataset +from datasets.download import DownloadConfig +from torchinfo import summary +from tqdm.auto import tqdm +from transformers import AutoTokenizer, HfArgumentParser, TrainingArguments, set_seed + +import wandb +from wtpsplit.models import ( + SubwordXLMConfig, + SubwordXLMForTokenClassification, +) +from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_kmers, evaluate_sentence_pairwise +from wtpsplit.train.trainer import Trainer +from wtpsplit.train.utils import Model, cleanup_cache_files +from wtpsplit.utils import Constants, LabelArgs, corrupt_training, get_label_dict, get_subword_label_dict +from wtpsplit.tokenization_utils import pack_sentences + +logger = logging.getLogger(__name__) + + +# os.environ["PJRT_DEVICE"] = "None" + + +def setup_logging(training_args: transformers.TrainingArguments) -> None: + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", + datefmt="%m/%d/%Y %H:%M:%S", + handlers=[logging.StreamHandler(sys.stdout)], + ) + log_level = training_args.get_process_log_level() + logger.setLevel(log_level) + datasets.utils.logging.set_verbosity_warning() + transformers.utils.logging.set_verbosity_warning() + transformers.utils.logging.enable_default_handler() + transformers.utils.logging.enable_explicit_format() + # Log on each process the small summary: + logger.warning( + ( + f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + + f"distributed training: {training_args.local_rank != -1}, 16-bits training: {training_args.fp16}" + ) + ) + # logger.info(f"Training/evaluation parameters {training_args}") + + +@dataclass +class Args: + model_name_or_path: str + shuffle: bool = False + use_logits: bool = False + is_decoder: bool = False + use_bert: bool = False + # TODO: adapt to HF Hub + train_text_path: str = "data/train.parquet" + valid_text_path: str = "data/valid.parquet" + include_languages: List[str] = None + eval_data_path: str = "data/all_data_24_04.pth" + num_hidden_layers: int = 1 + preprocessing_num_workers: int = 6 + block_size: int = 512 + overflow_size: int = 16 + eval_stride: int = 256 + lookahead: int = None + loss_margin: float = 0.5 + ngram_order: int = 1 + language_adapter: str = "on" + from_scratch: bool = False + pack_samples: bool = False + one_sample_per_line: bool = False + use_loss_weights: bool = False + do_sentence_training: bool = True + do_auxiliary_training: bool = True + aux_training_weight: float = 1.0 + ignore_non_hyphen: bool = False + non_punctuation_sample_ratio: float = None + adapter_warmup_steps: int = 0 + adapter_lr_multiplier: float = 1.0 + text_column: str = "text" + + # NEW PARAMS + use_subwords: bool = False + threshold: float = 0.01 + lookahead_split_layers: Optional[int] = None + + +def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: bool = False): + all_input_ids = [] + all_labels = [] + all_language_ids = [] + + all_attention_masks = [] + all_position_ids = [] + all_label_weights = [] + + for sample in batch: + # subword-level + if args.use_subwords: + input_ids = sample["input_ids"] + # char-level + else: + input_ids = [ord(c) for c in sample["input_ids"]] + lang = sample["lang"] + + newline_labels = sample["labels"] + + while len(input_ids) < args.block_size + args.overflow_size: + input_ids.append(tokenizer.pad_token_id) + newline_labels.append(0) + + block_ids = [0] * len(input_ids) + + + input_ids, _, labels = corrupt_training( + input_ids, + block_ids, + newline_labels, + lang, + label_args, + label_dict=label_dict, + pack_samples=args.pack_samples, + # min_length=args.block_size, + tokenizer=tokenizer if args.use_subwords else None, + ) + + actual_block_size = args.block_size - 2 if args.use_subwords else args.block_size + + if len(input_ids) > args.block_size: + start = np.random.randint(0, len(input_ids) - actual_block_size) + input_ids = input_ids[start : start + actual_block_size] + labels = labels[start : start + actual_block_size] + elif len(input_ids) < actual_block_size: + padding = actual_block_size - len(input_ids) + # print(padding, lang) + input_ids += [tokenizer.pad_token_id] * padding if tokenizer else [0] * padding + labels += [0] * padding + + if tokenizer: + input_ids = [tokenizer.cls_token_id] + input_ids[:actual_block_size] + [tokenizer.sep_token_id] + # labels for CLS and SEP tokens are 0 (none) + labels = [0] + labels[:actual_block_size] + [0] + else: + input_ids = input_ids[:actual_block_size] + labels = labels[:actual_block_size] + + input_ids = torch.tensor(input_ids, dtype=torch.long) + labels = torch.tensor(labels, dtype=torch.long) + position_ids = torch.arange(len(input_ids), dtype=torch.long) + label_weights = torch.ones(args.block_size, dtype=torch.float32) + if tokenizer: + attention_mask = (input_ids != tokenizer.pad_token_id).to(torch.float32) + else: + attention_mask = (input_ids != 0).to(torch.float32) + + all_input_ids.append(input_ids) + all_label_weights.append(label_weights) + all_labels.append(labels) + all_language_ids.append(Constants.LANG_CODE_TO_INDEX[lang] if add_lang_ids else 0) + + all_attention_masks.append(attention_mask) + all_position_ids.append(position_ids) + + try: + out = { + "input_ids": torch.stack(all_input_ids, 0), + "attention_mask": torch.stack(all_attention_masks, 0), + "position_ids": torch.stack(all_position_ids, 0), + "language_ids": torch.tensor(all_language_ids, dtype=torch.long), + "label_weights": torch.stack(all_label_weights, 0), + "labels": torch.stack(all_labels, 0), + } + except: + pass + + return out + + +def main(): + parser = HfArgumentParser([Args, TrainingArguments, LabelArgs]) + + if sys.argv[1].endswith(".json"): + (args, training_args, label_args) = parser.parse_json_file(sys.argv[1]) + wandb_name = os.path.splitext(os.path.basename(sys.argv[1]))[0] + else: + (args, training_args, label_args) = parser.parse_args_into_dataclasses() + wandb_name = None + if xm.xrt_world_size() == 4: + # ensure same batch size on TPUv3 and TPUv4 + training_args.per_device_train_batch_size *= 2 + logger.warning(f"Per device train batch size: {training_args.per_device_train_batch_size}") + logger.warning( + f"Total train batch size: {training_args.per_device_train_batch_size * training_args.gradient_accumulation_steps* xm.xrt_world_size()}" + ) + + setup_logging(training_args) + set_seed(training_args.seed) + training_args.hub_strategy = "end" + training_args.save_total_limit = 1 + + num_labels = Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0) + if args.use_subwords: + if args.from_scratch: + config = SubwordXLMConfig( + args.model_name_or_path, + num_hidden_layers=args.num_hidden_layers, + num_labels=num_labels, + lookahead=args.lookahead, + lookahead_split_layers=args.lookahead_split_layers, + ) + backbone = SubwordXLMForTokenClassification(config) + + else: + config = SubwordXLMConfig.from_pretrained( + args.model_name_or_path, + num_hidden_layers=args.num_hidden_layers, + num_labels=num_labels, + lookahead=args.lookahead, + lookahead_split_layers=args.lookahead_split_layers, + ) + backbone = SubwordXLMForTokenClassification.from_pretrained( + args.model_name_or_path, + config=config, + ) + + backbone.config.base_model = args.model_name_or_path + tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) + + if args.lookahead: + assert args.lookahead % args.num_hidden_layers == 0 + + model = Model( + backbone, + loss_margin=args.loss_margin, + use_loss_weights=args.use_loss_weights, + do_sentence_training=args.do_sentence_training, + do_auxiliary_training=args.do_auxiliary_training, + aux_training_weight=args.aux_training_weight, + ) + + if training_args.local_rank == 0: + logger.warning(summary(model, depth=4)) + + def prepare_dataset( + num_workers=1, + include_languages=None, + shuffle=False, + split="train", + ): + with training_args.main_process_first(): + dlconf = DownloadConfig(cache_dir="/home/Markus/.cache/huggingface/datasets") + dataset = load_dataset("markus583/mC4-TEST", split=split, download_config=dlconf) + logger.warning(f"Loaded {split} dataset.") + # optional: delete downloaded dataset, it is stored in cache_dir now (but we delete it later) + # ~40GB on disk + # os.system("rm -rf /home/Markus/.cache/huggingface/datasets") + + if include_languages is not None: + include_languages = set(include_languages) + + dataset = dataset.filter( + lambda example: example["lang"] in include_languages, + num_proc=args.preprocessing_num_workers, + ) + logger.warning(f"Filtered to {len(dataset)} examples.") + + if shuffle: + dataset = dataset.shuffle(seed=42) + logger.warning("Shuffled dataset.") + + # "punctuation-specific sampling" in the paper + if args.non_punctuation_sample_ratio is not None: + languages_without_punctuation = { + lang_code + for lang_code in Constants.LANGINFO.index + if Constants.LANGINFO.loc[lang_code, "no_punctuation"] + } + + def drop_some_non_punctuation_samples(examples): + include_indices = set( + np.where([lang_code not in languages_without_punctuation for lang_code in examples["lang"]])[0] + ) + punctuation_indices = { + i for i in np.where(examples["ends_with_punctuation"])[0] if i in include_indices + } + + target_n_non_punct = int( + (len(punctuation_indices) * args.non_punctuation_sample_ratio) + / (1 - args.non_punctuation_sample_ratio) + ) + n_drop = (len(include_indices) - len(punctuation_indices)) - target_n_non_punct + + out = [True for _ in range(len(examples["ends_with_punctuation"]))] + + if n_drop <= 0: + return out + drop_indices = np.random.choice( + list(include_indices - punctuation_indices), + n_drop, + replace=False, + ) + + for i in drop_indices: + out[i] = False + + return out + + with training_args.main_process_first(): + dataset = dataset.filter( + drop_some_non_punctuation_samples, + batched=True, + batch_size=1_000_000, + num_proc=num_workers, + ) + + if args.do_auxiliary_training: + assert label_args.use_auxiliary + + if args.pack_samples: + assert not args.one_sample_per_line + + # if split == "train" and args.use_subwords: + # with training_args.main_process_first(): + # for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): + # for file in files: + # if file.startswith("m_c4-test-train"): + # logger.warning(f"Removing {os.path.join(root, file)}") + # os.remove(os.path.join(root, file)) + + if not args.one_sample_per_line: + with training_args.main_process_first(): + dataset = dataset.map( + pack_sentences, + batched=True, + num_proc=num_workers, + fn_kwargs={ + "block_size": args.block_size, + "tokenizer": tokenizer, + "overflow_size": args.overflow_size, + }, + # a bit hacky but oh well, only drop if sentence + remove_columns=["ends_with_punctuation", "text"], + # load_from_cache_file=False + ) + logger.warning(f"Grouped {split} dataset.") + + return dataset + + valid_dataset = prepare_dataset( + num_workers=args.preprocessing_num_workers, + include_languages=args.include_languages, + shuffle=False, + split="valid", + ) + logger.warning(f"Valid dataset has {len(valid_dataset)} examples.") + + train_dataset = prepare_dataset( + num_workers=args.preprocessing_num_workers, + include_languages=args.include_languages, + shuffle=args.shuffle, + split="valid", + ) + logger.warning(f"Train dataset has {len(train_dataset)} examples.") + + # print some samples from the dataset + count = 0 + while count < 5: + index = random.choice(range(len(train_dataset))) + sample = train_dataset[index] + + logger.warning(f"Sample {index} of the training set: {sample}.") + if tokenizer: + logger.warning(tokenizer.decode(sample["input_ids"])) + count += 1 + + eval_data = None + + def compute_metrics(trainer): + metrics = {} + avg_metrics = defaultdict(lambda: []) + + model = trainer._wrap_model(trainer.model, training=False) + + for lang_code, lang_data in tqdm(eval_data.items(), desc="Evaluate!"): + if args.include_languages is not None and lang_code not in args.include_languages: + continue + + if trainer.args.process_index == 0 and args.do_sentence_training: + # with training_args.main_process_first(): + for dataset_name, dataset in lang_data["sentence"].items(): + # if "corrupt" in dataset_name: + # continue + score, info = evaluate_sentence( + lang_code, + dataset["data"], + model, + stride=128, + block_size=512, + batch_size=training_args.per_device_eval_batch_size, + threshold=args.threshold, + ) + metrics[f"{lang_code}_{dataset_name}_pr_auc"] = score + metrics[f"{lang_code}_{dataset_name}_f1"] = info["f1"] + metrics[f"{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] + metrics[f"{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] + avg_metrics[f"average_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"average_{dataset_name}_f1"].append(info["f1"]) + avg_metrics[f"average_{dataset_name}_f1_best"].append(info["f1_best"]) + avg_metrics[f"average_{dataset_name}_threshold_best"].append(info["threshold_best"]) + # if lang_code in ["zh", "ja", "my", "km"]: + # avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + # else: + # avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) + # score, _ = evaluate_sentence( + # lang_code, + # dataset["data"], + # model, + # stride=args.eval_stride, + # block_size=args.block_size, + # batch_size=training_args.per_device_eval_batch_size, + # do_lowercase=True, + # do_remove_punct=True, + # ) + # metrics[f"lower_rmp_{lang_code}_{dataset_name}_pr_auc"] = score + # avg_metrics[f"lower_rmp_average_{dataset_name}_pr_auc"].append(score) + # if lang_code in ["zh", "ja", "my", "km"]: + # avg_metrics[f"lower_rmp_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + # else: + # avg_metrics[f"lower_rmp_average_whitespace_{dataset_name}_pr_auc"].append(score) + # k-mer based evaluation + # for k in [2, 3, 4]: + # score, avg_acc, info = evaluate_sentence_kmers( + # lang_code, + # dataset["data"], + # model, + # stride=128, + # block_size=512, + # batch_size=training_args.per_device_eval_batch_size, + # k=k, + # # sample_pct=0.1, + # threshold=args.threshold, + # ) + # metrics[f"k_{k}_{lang_code}_{dataset_name}_pr_auc"] = score + # avg_metrics[f"k_{k}_average_{dataset_name}_pr_auc"].append(score) + # metrics[f"k_{k}_{lang_code}_{dataset_name}_acc"] = avg_acc + # avg_metrics[f"k_{k}_average_{dataset_name}_acc"].append(avg_acc) + # metrics[f"k_{k}_{lang_code}_{dataset_name}_f1"] = info["f1"] + # metrics[f"k_{k}_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] + # metrics[f"k_{k}_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] + # avg_metrics[f"k_{k}_average_{dataset_name}_f1"].append(info["f1"]) + # avg_metrics[f"k_{k}_average_{dataset_name}_f1_best"].append(info["f1_best"]) + # avg_metrics[f"k_{k}_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) + + # # if lang_code in ["zh", "ja", "my", "km"]: + # # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + # # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) + # # else: + # # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_pr_auc"].append(score) + # # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_acc"].append(avg_acc) + # if k == 2: + # # keep keys for backwards compat in wandb + # metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score + # avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) + # metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc + # avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) + # metrics[f"pairwise_{lang_code}_{dataset_name}_f1"] = info["f1"] + # metrics[f"pairwise_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] + # metrics[f"pairwise_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] + # avg_metrics[f"pairwise_average_{dataset_name}_f1"].append(info["f1"]) + # avg_metrics[f"pairwise_average_{dataset_name}_f1_best"].append(info["f1_best"]) + # avg_metrics[f"pairwise_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) + if lang_code in ["zh", "ja", "my", "km"]: + avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"average_nonwhitespace_{dataset_name}_f1"].append(info["f1"]) + avg_metrics[f"average_nonwhitespace_{dataset_name}_f1_best"].append(info["f1_best"]) + avg_metrics[f"average_nonwhitespace_{dataset_name}_threshold_best"].append( + info["threshold_best"] + ) + else: + avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) + avg_metrics[f"average_whitespace_{dataset_name}_f1"].append(info["f1"]) + avg_metrics[f"average_whitespace_{dataset_name}_f1_best"].append(info["f1_best"]) + avg_metrics[f"average_whitespace_{dataset_name}_threshold_best"].append(info["threshold_best"]) + + for name, values in avg_metrics.items(): + if len(values) > 1: + metrics[name] = np.mean(values) + + return metrics + + if "wandb" in training_args.report_to and training_args.process_index == 0: + wandb.init(name=wandb_name, project="sentence", entity="markus_583") + wandb.config.update(args) + wandb.config.update(training_args) + wandb.config.update(label_args) + + model.config.wandb_run_id = wandb.run.id + + for file in glob(os.path.join(os.path.dirname(__file__), "*.py")): + wandb.save(os.path.abspath(file), policy="now") + # also 1 dir above + wandb.save(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", file)), policy="now") + + label_dict = get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) + logger.info(f"Label dict has {len(label_dict)} entries.") + + # needed in the trainer + training_args.adapter_warmup_steps = args.adapter_warmup_steps + training_args.adapter_lr_multiplier = args.adapter_lr_multiplier + + # give .map in multiprocessing enough of time to finish, to be safe + # time.sleep(10) + # if training_args.local_rank == 0: + # # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() + # # because that would remove the cache files of the other dataset! + # cleanup_cache_files([train_dataset, valid_dataset]) + # logger.warning("Cleaned up cache files.") + # time.sleep(10) + + trainer = Trainer( + model, + training_args, + train_dataset=train_dataset, + eval_dataset=valid_dataset, + compute_metrics=compute_metrics, + data_collator=partial( + collate_fn, + args=args, + label_args=label_args, + label_dict=label_dict, + tokenizer=tokenizer if args.use_subwords else None, + add_lang_ids=not args.use_subwords, + ), + ) + + trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) + trainer.save_model() + trainer.save_state() + # Pattern for checkpoint directories + checkpoint_pattern = os.path.join(training_args.output_dir, "checkpoint-*") + + # Use glob.glob to find all directories matching the pattern + for checkpoint_dir in glob(checkpoint_pattern): + if os.path.isdir(checkpoint_dir): + shutil.rmtree(checkpoint_dir) + + +def _mp_fn(index): + # For xla_spawn (TPUs) + main() + + +if __name__ == "__main__": + # try: + main() + # except Exception: + # # extype, value, tb = sys.exc_info() + # # tb.print_exc() + # # pdb.post_mortem(tb) + # pass diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 75023601..8d4acf86 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -194,8 +194,14 @@ def hash_encode(encoding, num_hashes=8, num_buckets=8192): return hash_ids -def label(input_ids, label_dict): - return [label_dict.get(input_id, 0) for input_id in input_ids[1:]] + [0] +# def label(input_ids, label_dict): +# return [label_dict.get(input_id, 0) for input_id in input_ids[1:]] + [0] + + +def label(input_ids, newline_labels, label_dict): + return [ + label_dict.get(input_id, newline_label) for input_id, newline_label in zip(input_ids[1:], newline_labels[1:]) + ] + [0] def lang_code_to_lang(lang_code): @@ -262,6 +268,7 @@ def corrupt_asr(text: str, lang): def corrupt_training( input_ids, block_ids, + newline_labels, lang, label_args, label_dict, @@ -303,7 +310,7 @@ def corrupt_training( else: auxiliary_remove_prob = label_args.auxiliary_remove_prob - labels = label(input_ids, label_dict) + labels = label(input_ids, newline_labels, label_dict) separator = Constants.SEPARATORS[lang] @@ -316,74 +323,7 @@ def corrupt_training( # account for CLS and SEP token, added later min_length = min_length - 2 if min_length is not None else None while min_length is None or len(input_ids) > min_length: - if labels[i] == Constants.NEWLINE_INDEX + 1: - if random.random() < label_args.newline_remove_prob: - if separator == " " and random.random() < label_args.newline_whitespace_prob: - if tokenizer: - # inserting " " leaks \n information - # the token is never there naturally, so it is a 1:1 proxy for \n - del input_ids[i + 1] - del labels[i + 1] - del block_ids[i + 1] - else: - input_ids[i + 1] = ord(" ") - else: - del input_ids[i + 1] - del labels[i + 1] - - if pack_samples: - last_index_in_block = i - while ( - last_index_in_block + 1 == len(block_ids) - or last_index_in_block < len(block_ids) - and block_ids[last_index_in_block + 1] == block_ids[last_index_in_block] - ): - last_index_in_block += 1 - input_ids.insert(last_index_in_block, 0) - labels.insert(last_index_in_block, 0) - else: - del block_ids[i + 1] - if ( - tokenizer - and separator == "" - and label_args.non_whitespace_remove_spaces - and i + 1 < len(input_ids) - ): - # tokenizer.decode() retains the space that leaks the information - # so we need to get the position within the tokenized text and then remove the space - # (so there is no more space when fed into the tokenizer call) - if input_ids[i + 1] == tokenizer.convert_tokens_to_ids("▁"): - # remove artificial space - del input_ids[i + 1] - del labels[i + 1] - del block_ids[i + 1] - if i + 1 < len(input_ids): - next_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) - if next_token.startswith("▁"): - # next token starts with _ --> remove the _ from the token and re-tokenize - remove_next = False - remaining_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) - if len(remaining_token) > 1: - # ▁Test --> Test - remaining_token = remaining_token[1:] - else: - # ▁ --> remove - remove_next = True - remaining_id = tokenizer.convert_tokens_to_ids(remaining_token) - # replace the token with the remaining token - if remaining_id != tokenizer.unk_token_id: - input_ids[i + 1] = remaining_id - else: - # UNK token, remove it - remove_next = True - if remove_next: - del input_ids[i + 1] - del labels[i + 1] - del block_ids[i + 1] - if random.random() < label_args.case_corruption_prob_after_newline and i + 1 < len(input_ids): - input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) - - elif label_args.use_auxiliary and labels[i] > Constants.AUX_OFFSET: # auxiliary + if label_args.use_auxiliary and labels[i] > Constants.AUX_OFFSET: # auxiliary if pack_samples: raise NotImplementedError() @@ -411,7 +351,6 @@ def corrupt_training( and i + 1 < len(input_ids) ): input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) - try: i = i + 1 + next(index for index, label in enumerate(labels[i + 1 :]) if label != 0) except StopIteration: From ec60916d564182a22a94711a720be96f1cf1f0eb Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 29 Apr 2024 07:42:22 +0000 Subject: [PATCH 143/262] fix eval data load --- wtpsplit/train/train_xlmr.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/wtpsplit/train/train_xlmr.py b/wtpsplit/train/train_xlmr.py index 54ab148a..9c535de1 100644 --- a/wtpsplit/train/train_xlmr.py +++ b/wtpsplit/train/train_xlmr.py @@ -374,7 +374,7 @@ def drop_some_non_punctuation_samples(examples): num_workers=args.preprocessing_num_workers, include_languages=args.include_languages, shuffle=args.shuffle, - split="valid", + split="train", ) logger.warning(f"Train dataset has {len(train_dataset)} examples.") @@ -389,8 +389,9 @@ def drop_some_non_punctuation_samples(examples): logger.warning(tokenizer.decode(sample["input_ids"])) count += 1 - eval_data = None - + eval_data = torch.load( + args.eval_data_path, + ) def compute_metrics(trainer): metrics = {} avg_metrics = defaultdict(lambda: []) From 2d4f8ede3dc68380ccebc256a9090a2f8613f93c Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 29 Apr 2024 08:42:38 +0000 Subject: [PATCH 144/262] cleanup, use label idx --- wtpsplit/tokenization_utils.py | 3 +++ wtpsplit/train/train_xlmr.py | 36 ++++++++++++++++------------------ 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/wtpsplit/tokenization_utils.py b/wtpsplit/tokenization_utils.py index 14a32d0c..c305dba0 100644 --- a/wtpsplit/tokenization_utils.py +++ b/wtpsplit/tokenization_utils.py @@ -89,6 +89,9 @@ def pack_sentences(examples, block_size, tokenizer, overflow_size=0): all_label_blocks.append(labels) all_langs.append(current_lang) + # only return label indices, ie == 1 + all_label_blocks = [[i for i, label in enumerate(labels) if label == 1] for labels in all_label_blocks] + return { "input_ids": all_input_blocks, "labels": all_label_blocks, diff --git a/wtpsplit/train/train_xlmr.py b/wtpsplit/train/train_xlmr.py index 9c535de1..29d9b5b6 100644 --- a/wtpsplit/train/train_xlmr.py +++ b/wtpsplit/train/train_xlmr.py @@ -119,7 +119,8 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: boo input_ids = [ord(c) for c in sample["input_ids"]] lang = sample["lang"] - newline_labels = sample["labels"] + newline_label_indices = sample["labels"] + newline_labels = [1 if i in newline_label_indices else 0 for i in range(len(input_ids))] while len(input_ids) < args.block_size + args.overflow_size: input_ids.append(tokenizer.pad_token_id) @@ -127,7 +128,6 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: boo block_ids = [0] * len(input_ids) - input_ids, _, labels = corrupt_training( input_ids, block_ids, @@ -177,7 +177,6 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: boo all_attention_masks.append(attention_mask) all_position_ids.append(position_ids) - try: out = { "input_ids": torch.stack(all_input_ids, 0), "attention_mask": torch.stack(all_attention_masks, 0), @@ -186,8 +185,6 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: boo "label_weights": torch.stack(all_label_weights, 0), "labels": torch.stack(all_labels, 0), } - except: - pass return out @@ -335,13 +332,13 @@ def drop_some_non_punctuation_samples(examples): if args.pack_samples: assert not args.one_sample_per_line - # if split == "train" and args.use_subwords: - # with training_args.main_process_first(): - # for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): - # for file in files: - # if file.startswith("m_c4-test-train"): - # logger.warning(f"Removing {os.path.join(root, file)}") - # os.remove(os.path.join(root, file)) + if split == "train" and args.use_subwords: + with training_args.main_process_first(): + for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): + for file in files: + if file.startswith("m_c4-test-train"): + logger.warning(f"Removing {os.path.join(root, file)}") + os.remove(os.path.join(root, file)) if not args.one_sample_per_line: with training_args.main_process_first(): @@ -392,6 +389,7 @@ def drop_some_non_punctuation_samples(examples): eval_data = torch.load( args.eval_data_path, ) + def compute_metrics(trainer): metrics = {} avg_metrics = defaultdict(lambda: []) @@ -526,13 +524,13 @@ def compute_metrics(trainer): training_args.adapter_lr_multiplier = args.adapter_lr_multiplier # give .map in multiprocessing enough of time to finish, to be safe - # time.sleep(10) - # if training_args.local_rank == 0: - # # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() - # # because that would remove the cache files of the other dataset! - # cleanup_cache_files([train_dataset, valid_dataset]) - # logger.warning("Cleaned up cache files.") - # time.sleep(10) + time.sleep(10) + if training_args.local_rank == 0: + # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() + # because that would remove the cache files of the other dataset! + cleanup_cache_files([train_dataset, valid_dataset]) + logger.warning("Cleaned up cache files.") + time.sleep(10) trainer = Trainer( model, From 96fa39c9a73e560e72833d5f6faa00899dd9dbe8 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 29 Apr 2024 09:40:03 +0000 Subject: [PATCH 145/262] no remove --- wtpsplit/train/train_xlmr.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/wtpsplit/train/train_xlmr.py b/wtpsplit/train/train_xlmr.py index 29d9b5b6..5be0e81d 100644 --- a/wtpsplit/train/train_xlmr.py +++ b/wtpsplit/train/train_xlmr.py @@ -332,13 +332,13 @@ def drop_some_non_punctuation_samples(examples): if args.pack_samples: assert not args.one_sample_per_line - if split == "train" and args.use_subwords: - with training_args.main_process_first(): - for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): - for file in files: - if file.startswith("m_c4-test-train"): - logger.warning(f"Removing {os.path.join(root, file)}") - os.remove(os.path.join(root, file)) + # if split == "train" and args.use_subwords: + # with training_args.main_process_first(): + # for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): + # for file in files: + # if file.startswith("m_c4-test-train"): + # logger.warning(f"Removing {os.path.join(root, file)}") + # os.remove(os.path.join(root, file)) if not args.one_sample_per_line: with training_args.main_process_first(): From 1ba048acb855f8ec475ecddc4d1e028d956376f3 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 29 Apr 2024 11:01:04 +0000 Subject: [PATCH 146/262] no corrupted eval! --- wtpsplit/train/train_xlmr.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wtpsplit/train/train_xlmr.py b/wtpsplit/train/train_xlmr.py index 5be0e81d..19510e30 100644 --- a/wtpsplit/train/train_xlmr.py +++ b/wtpsplit/train/train_xlmr.py @@ -403,8 +403,8 @@ def compute_metrics(trainer): if trainer.args.process_index == 0 and args.do_sentence_training: # with training_args.main_process_first(): for dataset_name, dataset in lang_data["sentence"].items(): - # if "corrupt" in dataset_name: - # continue + if "corrupt" in dataset_name: + continue score, info = evaluate_sentence( lang_code, dataset["data"], From cecb294dd4bd933c5b3cdeaab1afe56aca88407e Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 29 Apr 2024 11:18:50 +0000 Subject: [PATCH 147/262] clean-up --- wtpsplit/tokenization_utils.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/wtpsplit/tokenization_utils.py b/wtpsplit/tokenization_utils.py index c305dba0..42696614 100644 --- a/wtpsplit/tokenization_utils.py +++ b/wtpsplit/tokenization_utils.py @@ -4,14 +4,13 @@ def tokenize_and_get_labels(sentences, tokenizer, separator): - # Join sentences and prepare single string for tokenization joined_sentence = separator.join(sentences) sentence_lengths = [len(sentence) for sentence in sentences] - # Calculate where each sentence ends in the joined string + # calculate where each sentence ends sentence_end_positions = [sum(sentence_lengths[: i + 1]) + i * len(separator) - 1 for i in range(len(sentences))] - # Tokenize the whole text at once + # tokenize whole text at once tokenized_input = tokenizer( joined_sentence, return_offsets_mapping=True, @@ -49,7 +48,7 @@ def pack_sentences(examples, block_size, tokenizer, overflow_size=0): all_label_blocks = [] all_langs = [] - # Group by languages first + # group by langs first lang_grouped_examples = {lang: [] for lang in set(examples["lang"])} for sentence, lang in zip(examples["text"], examples["lang"]): lang_grouped_examples[lang].append(sentence.strip("\n")) @@ -58,7 +57,7 @@ def pack_sentences(examples, block_size, tokenizer, overflow_size=0): separator = Constants.SEPARATORS.get(current_lang, " ") token_count, one_block_sentences = 0, [] - # Batch tokenize sentences + # batch tokenize sentences tokenized_sentences = tokenizer(sentences, add_special_tokens=False, verbose=False, padding=False) input_ids_list = tokenized_sentences["input_ids"] @@ -69,27 +68,27 @@ def pack_sentences(examples, block_size, tokenizer, overflow_size=0): # Allow exceeding block size slightly to avoid underfilling blocks if token_count + num_sentence_tokens > block_size + overflow_size: - # Once the limit is exceeded, process the current block before adding the sentence + # limit exceeded, process the current block if one_block_sentences: input_ids, labels = tokenize_and_get_labels(one_block_sentences, tokenizer, separator) all_input_blocks.append(input_ids) all_label_blocks.append(labels) all_langs.append(current_lang) - # Reset and start new block + # reset token_count, one_block_sentences = 0, [] - # Append sentence to the current or new block after processing the previous block + # add sentence to block one_block_sentences.append(sentence) token_count += num_sentence_tokens - # Ensure the last batch of sentences is processed + # ensure last batch of sentences is processed if one_block_sentences: input_ids, labels = tokenize_and_get_labels(one_block_sentences, tokenizer, separator) all_input_blocks.append(input_ids) all_label_blocks.append(labels) all_langs.append(current_lang) - # only return label indices, ie == 1 + # only return label indices, ie == 1 --> save memory all_label_blocks = [[i for i, label in enumerate(labels) if label == 1] for labels in all_label_blocks] return { From 62a1affc76a75ad83ae7e96e0a50c712eedc37b3 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 29 Apr 2024 14:25:29 +0000 Subject: [PATCH 148/262] fix labeling!? --- wtpsplit/utils.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 8d4acf86..790f9b23 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -198,10 +198,22 @@ def hash_encode(encoding, num_hashes=8, num_buckets=8192): # return [label_dict.get(input_id, 0) for input_id in input_ids[1:]] + [0] +# def label(input_ids, newline_labels, label_dict): +# return [ +# label_dict.get(input_id, newline_label) for input_id, newline_label in zip(input_ids[1:], newline_labels[1:]) +# ] + [0] + +# def label(input_ids, newline_labels, label_dict): +# return [0] + [ +# label_dict.get(input_id, newline_label) for input_id, newline_label in zip(input_ids, newline_labels) +# ] + def label(input_ids, newline_labels, label_dict): - return [ - label_dict.get(input_id, newline_label) for input_id, newline_label in zip(input_ids[1:], newline_labels[1:]) - ] + [0] + labels = [label_dict.get(input_id, 0) for input_id in input_ids[1:]] + [0] + for i, newline_label in enumerate(newline_labels): + if newline_label == 1 and i+1 < len(labels): + labels[i + 1] = 1 + return labels def lang_code_to_lang(lang_code): @@ -311,6 +323,10 @@ def corrupt_training( auxiliary_remove_prob = label_args.auxiliary_remove_prob labels = label(input_ids, newline_labels, label_dict) + # for i, (newline_label, punct_label) in enumerate(zip(newline_labels, labels)): + # if newline_label == 1: + # labels[i + 1] = 1 + separator = Constants.SEPARATORS[lang] From f0e1f52b0776af5cbc8b8cc63c97b0bf11843897 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 30 Apr 2024 12:23:51 +0000 Subject: [PATCH 149/262] fix fix fix! --- wtpsplit/extract.py | 2 +- wtpsplit/tokenization_utils.py | 54 ++++++++++++++++++---------------- wtpsplit/train/train_xlmr.py | 12 ++++---- wtpsplit/utils.py | 26 ++++++++-------- 4 files changed, 48 insertions(+), 46 deletions(-) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 9087ac74..9ab8e507 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -86,7 +86,7 @@ def extract( if "xlm" in model.config.model_type: use_subwords = True tokenizer = AutoTokenizer.from_pretrained(model.config.base_model) - tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + # tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) tokens = tokenizer(batch_of_texts, return_offsets_mapping=True, verbose=False) # remove CLS and SEP tokens, they are added later anyhow batch_of_texts = [text[1:-1] for text in tokens["input_ids"]] diff --git a/wtpsplit/tokenization_utils.py b/wtpsplit/tokenization_utils.py index 42696614..e83894f4 100644 --- a/wtpsplit/tokenization_utils.py +++ b/wtpsplit/tokenization_utils.py @@ -1,49 +1,46 @@ -from collections import defaultdict - +import numpy as np from wtpsplit.utils import Constants -def tokenize_and_get_labels(sentences, tokenizer, separator): - joined_sentence = separator.join(sentences) - sentence_lengths = [len(sentence) for sentence in sentences] +def tokenize_and_get_labels(sentences, tokenizer, separator, lang_code): + joined_sentence = "" + sentence_start_positions = [] + current_position = 0 - # calculate where each sentence ends - sentence_end_positions = [sum(sentence_lengths[: i + 1]) + i * len(separator) - 1 for i in range(len(sentences))] + for sentence in sentences: + if joined_sentence: + joined_sentence += separator + current_position += len(separator) + start_position = current_position + joined_sentence += sentence + current_position += len(sentence) + sentence_start_positions.append(start_position + len(sentence) - 1) - # tokenize whole text at once tokenized_input = tokenizer( joined_sentence, return_offsets_mapping=True, add_special_tokens=False, truncation=False, - verbose=False, - padding=False, ) tokens = tokenized_input.tokens() offsets = tokenized_input["offset_mapping"] - if not tokens: - return [], [] - - # labels sentence_ending_labels = [0] * len(tokens) - # last token of each sentence to 1 sentence_index = 0 - for i, (start, end) in enumerate(offsets): - if sentence_index < len(sentence_end_positions) and end > sentence_end_positions[sentence_index]: + for i, (token_start, token_end) in enumerate(offsets): + if token_start > sentence_start_positions[sentence_index]: sentence_ending_labels[i - 1] = 1 sentence_index += 1 - if sentence_index >= len(sentence_end_positions): - break + # if any(start < token_end for start in sentence_start_positions if start >= token_start): + # print(tokens[i - 2 : i + 3]) - # Make sure the last token of the last sentence is marked if it wasn't already - sentence_ending_labels[-1] = 1 + # assert sum(sentence_ending_labels) == len(sentence_start_positions) return tokenized_input["input_ids"], sentence_ending_labels -def pack_sentences(examples, block_size, tokenizer, overflow_size=0): +def pack_sentences(examples, block_size, tokenizer, underflow_size=0, min_sentence_length=10): all_input_blocks = [] all_label_blocks = [] all_langs = [] @@ -57,6 +54,10 @@ def pack_sentences(examples, block_size, tokenizer, overflow_size=0): separator = Constants.SEPARATORS.get(current_lang, " ") token_count, one_block_sentences = 0, [] + # tokenization mapping gets problematic in such instances + sentences = [sentence.replace("\ufffd", "").strip() for sentence in sentences] + sentences = [sentence for sentence in sentences if len(sentence) > min_sentence_length] + # batch tokenize sentences tokenized_sentences = tokenizer(sentences, add_special_tokens=False, verbose=False, padding=False) input_ids_list = tokenized_sentences["input_ids"] @@ -66,11 +67,11 @@ def pack_sentences(examples, block_size, tokenizer, overflow_size=0): continue num_sentence_tokens = len(input_ids) - # Allow exceeding block size slightly to avoid underfilling blocks - if token_count + num_sentence_tokens > block_size + overflow_size: + # check if block limit is exceeded + if token_count > block_size - underflow_size: # limit exceeded, process the current block if one_block_sentences: - input_ids, labels = tokenize_and_get_labels(one_block_sentences, tokenizer, separator) + input_ids, labels = tokenize_and_get_labels(one_block_sentences, tokenizer, separator, current_lang) all_input_blocks.append(input_ids) all_label_blocks.append(labels) all_langs.append(current_lang) @@ -83,7 +84,7 @@ def pack_sentences(examples, block_size, tokenizer, overflow_size=0): # ensure last batch of sentences is processed if one_block_sentences: - input_ids, labels = tokenize_and_get_labels(one_block_sentences, tokenizer, separator) + input_ids, labels = tokenize_and_get_labels(one_block_sentences, tokenizer, separator, current_lang) all_input_blocks.append(input_ids) all_label_blocks.append(labels) all_langs.append(current_lang) @@ -91,6 +92,7 @@ def pack_sentences(examples, block_size, tokenizer, overflow_size=0): # only return label indices, ie == 1 --> save memory all_label_blocks = [[i for i, label in enumerate(labels) if label == 1] for labels in all_label_blocks] + # TODO: in addition, truncate blocks here already? (storage reasons) return { "input_ids": all_input_blocks, "labels": all_label_blocks, diff --git a/wtpsplit/train/train_xlmr.py b/wtpsplit/train/train_xlmr.py index 19510e30..9438ae5e 100644 --- a/wtpsplit/train/train_xlmr.py +++ b/wtpsplit/train/train_xlmr.py @@ -76,7 +76,7 @@ class Args: num_hidden_layers: int = 1 preprocessing_num_workers: int = 6 block_size: int = 512 - overflow_size: int = 16 + underflow_size: int = 16 eval_stride: int = 256 lookahead: int = None loss_margin: float = 0.5 @@ -99,6 +99,7 @@ class Args: use_subwords: bool = False threshold: float = 0.01 lookahead_split_layers: Optional[int] = None + min_sentence_length: int = 10 def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: bool = False): @@ -122,10 +123,6 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: boo newline_label_indices = sample["labels"] newline_labels = [1 if i in newline_label_indices else 0 for i in range(len(input_ids))] - while len(input_ids) < args.block_size + args.overflow_size: - input_ids.append(tokenizer.pad_token_id) - newline_labels.append(0) - block_ids = [0] * len(input_ids) input_ids, _, labels = corrupt_training( @@ -154,7 +151,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: boo if tokenizer: input_ids = [tokenizer.cls_token_id] + input_ids[:actual_block_size] + [tokenizer.sep_token_id] - # labels for CLS and SEP tokens are 0 (none) + # labels for CLS and SEP tokens are 0 (negative) labels = [0] + labels[:actual_block_size] + [0] else: input_ids = input_ids[:actual_block_size] @@ -349,7 +346,8 @@ def drop_some_non_punctuation_samples(examples): fn_kwargs={ "block_size": args.block_size, "tokenizer": tokenizer, - "overflow_size": args.overflow_size, + "underflow_size": args.underflow_size, + "min_sentence_length": args.min_sentence_length }, # a bit hacky but oh well, only drop if sentence remove_columns=["ends_with_punctuation", "text"], diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 790f9b23..6f2be4f6 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -208,12 +208,12 @@ def hash_encode(encoding, num_hashes=8, num_buckets=8192): # label_dict.get(input_id, newline_label) for input_id, newline_label in zip(input_ids, newline_labels) # ] -def label(input_ids, newline_labels, label_dict): - labels = [label_dict.get(input_id, 0) for input_id in input_ids[1:]] + [0] - for i, newline_label in enumerate(newline_labels): - if newline_label == 1 and i+1 < len(labels): - labels[i + 1] = 1 - return labels +# def label(input_ids, newline_labels, label_dict): +# labels = [label_dict.get(input_id, 0) for input_id in input_ids[1:]] + [0] +# # for i, newline_label in enumerate(newline_labels): +# # if newline_label == 1 and i+1 < len(labels): +# # labels[i + 1] = 1 +# return labels def lang_code_to_lang(lang_code): @@ -322,14 +322,16 @@ def corrupt_training( else: auxiliary_remove_prob = label_args.auxiliary_remove_prob - labels = label(input_ids, newline_labels, label_dict) - # for i, (newline_label, punct_label) in enumerate(zip(newline_labels, labels)): - # if newline_label == 1: - # labels[i + 1] = 1 - - separator = Constants.SEPARATORS[lang] + labels = newline_labels.copy() + + for i, input_id in enumerate(input_ids): + if input_id in label_dict: + if labels[i - 1] == 0: + labels[i - 1] = label_dict[input_id] + # TODO: configurable overwrite instead of nothing? + try: i = next(index for index, label in enumerate(labels) if label != 0) except StopIteration: From 0c5cae41e9c1014d6471f0603357c3ad8fa876b2 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 30 Apr 2024 13:34:18 +0000 Subject: [PATCH 150/262] remove ds at correct pos --- wtpsplit/train/train_xlmr.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/wtpsplit/train/train_xlmr.py b/wtpsplit/train/train_xlmr.py index 9438ae5e..2515e1ee 100644 --- a/wtpsplit/train/train_xlmr.py +++ b/wtpsplit/train/train_xlmr.py @@ -329,14 +329,6 @@ def drop_some_non_punctuation_samples(examples): if args.pack_samples: assert not args.one_sample_per_line - # if split == "train" and args.use_subwords: - # with training_args.main_process_first(): - # for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): - # for file in files: - # if file.startswith("m_c4-test-train"): - # logger.warning(f"Removing {os.path.join(root, file)}") - # os.remove(os.path.join(root, file)) - if not args.one_sample_per_line: with training_args.main_process_first(): dataset = dataset.map( @@ -347,12 +339,21 @@ def drop_some_non_punctuation_samples(examples): "block_size": args.block_size, "tokenizer": tokenizer, "underflow_size": args.underflow_size, - "min_sentence_length": args.min_sentence_length + "min_sentence_length": args.min_sentence_length, }, # a bit hacky but oh well, only drop if sentence remove_columns=["ends_with_punctuation", "text"], # load_from_cache_file=False ) + + if split == "train" and args.use_subwords: + with training_args.main_process_first(): + for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): + for file in files: + if file.startswith("m_c4-test-train"): + logger.warning(f"Removing {os.path.join(root, file)}") + os.remove(os.path.join(root, file)) + logger.warning(f"Grouped {split} dataset.") return dataset From b4b1704b88e31f81f95c5472e50fc968cc478252 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 30 Apr 2024 14:36:57 +0000 Subject: [PATCH 151/262] fix no sents --- wtpsplit/tokenization_utils.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/wtpsplit/tokenization_utils.py b/wtpsplit/tokenization_utils.py index e83894f4..cab53dcf 100644 --- a/wtpsplit/tokenization_utils.py +++ b/wtpsplit/tokenization_utils.py @@ -21,6 +21,8 @@ def tokenize_and_get_labels(sentences, tokenizer, separator, lang_code): return_offsets_mapping=True, add_special_tokens=False, truncation=False, + verbose=False, + padding=False, ) tokens = tokenized_input.tokens() @@ -57,6 +59,8 @@ def pack_sentences(examples, block_size, tokenizer, underflow_size=0, min_senten # tokenization mapping gets problematic in such instances sentences = [sentence.replace("\ufffd", "").strip() for sentence in sentences] sentences = [sentence for sentence in sentences if len(sentence) > min_sentence_length] + if not sentences: + continue # batch tokenize sentences tokenized_sentences = tokenizer(sentences, add_special_tokens=False, verbose=False, padding=False) From 8d9e8707e8a79089fc7d3b35f6bb90134e47999f Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 1 May 2024 10:40:24 +0000 Subject: [PATCH 152/262] use old tokenization --- wtpsplit/extract.py | 2 +- wtpsplit/utils.py | 103 +++++++++++++++++++++++++++++++------------- 2 files changed, 74 insertions(+), 31 deletions(-) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 9ab8e507..9087ac74 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -86,7 +86,7 @@ def extract( if "xlm" in model.config.model_type: use_subwords = True tokenizer = AutoTokenizer.from_pretrained(model.config.base_model) - # tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) tokens = tokenizer(batch_of_texts, return_offsets_mapping=True, verbose=False) # remove CLS and SEP tokens, they are added later anyhow batch_of_texts = [text[1:-1] for text in tokens["input_ids"]] diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 6f2be4f6..75023601 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -194,26 +194,8 @@ def hash_encode(encoding, num_hashes=8, num_buckets=8192): return hash_ids -# def label(input_ids, label_dict): -# return [label_dict.get(input_id, 0) for input_id in input_ids[1:]] + [0] - - -# def label(input_ids, newline_labels, label_dict): -# return [ -# label_dict.get(input_id, newline_label) for input_id, newline_label in zip(input_ids[1:], newline_labels[1:]) -# ] + [0] - -# def label(input_ids, newline_labels, label_dict): -# return [0] + [ -# label_dict.get(input_id, newline_label) for input_id, newline_label in zip(input_ids, newline_labels) -# ] - -# def label(input_ids, newline_labels, label_dict): -# labels = [label_dict.get(input_id, 0) for input_id in input_ids[1:]] + [0] -# # for i, newline_label in enumerate(newline_labels): -# # if newline_label == 1 and i+1 < len(labels): -# # labels[i + 1] = 1 -# return labels +def label(input_ids, label_dict): + return [label_dict.get(input_id, 0) for input_id in input_ids[1:]] + [0] def lang_code_to_lang(lang_code): @@ -280,7 +262,6 @@ def corrupt_asr(text: str, lang): def corrupt_training( input_ids, block_ids, - newline_labels, lang, label_args, label_dict, @@ -322,15 +303,9 @@ def corrupt_training( else: auxiliary_remove_prob = label_args.auxiliary_remove_prob - separator = Constants.SEPARATORS[lang] + labels = label(input_ids, label_dict) - labels = newline_labels.copy() - - for i, input_id in enumerate(input_ids): - if input_id in label_dict: - if labels[i - 1] == 0: - labels[i - 1] = label_dict[input_id] - # TODO: configurable overwrite instead of nothing? + separator = Constants.SEPARATORS[lang] try: i = next(index for index, label in enumerate(labels) if label != 0) @@ -341,7 +316,74 @@ def corrupt_training( # account for CLS and SEP token, added later min_length = min_length - 2 if min_length is not None else None while min_length is None or len(input_ids) > min_length: - if label_args.use_auxiliary and labels[i] > Constants.AUX_OFFSET: # auxiliary + if labels[i] == Constants.NEWLINE_INDEX + 1: + if random.random() < label_args.newline_remove_prob: + if separator == " " and random.random() < label_args.newline_whitespace_prob: + if tokenizer: + # inserting " " leaks \n information + # the token is never there naturally, so it is a 1:1 proxy for \n + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + else: + input_ids[i + 1] = ord(" ") + else: + del input_ids[i + 1] + del labels[i + 1] + + if pack_samples: + last_index_in_block = i + while ( + last_index_in_block + 1 == len(block_ids) + or last_index_in_block < len(block_ids) + and block_ids[last_index_in_block + 1] == block_ids[last_index_in_block] + ): + last_index_in_block += 1 + input_ids.insert(last_index_in_block, 0) + labels.insert(last_index_in_block, 0) + else: + del block_ids[i + 1] + if ( + tokenizer + and separator == "" + and label_args.non_whitespace_remove_spaces + and i + 1 < len(input_ids) + ): + # tokenizer.decode() retains the space that leaks the information + # so we need to get the position within the tokenized text and then remove the space + # (so there is no more space when fed into the tokenizer call) + if input_ids[i + 1] == tokenizer.convert_tokens_to_ids("▁"): + # remove artificial space + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + if i + 1 < len(input_ids): + next_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) + if next_token.startswith("▁"): + # next token starts with _ --> remove the _ from the token and re-tokenize + remove_next = False + remaining_token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) + if len(remaining_token) > 1: + # ▁Test --> Test + remaining_token = remaining_token[1:] + else: + # ▁ --> remove + remove_next = True + remaining_id = tokenizer.convert_tokens_to_ids(remaining_token) + # replace the token with the remaining token + if remaining_id != tokenizer.unk_token_id: + input_ids[i + 1] = remaining_id + else: + # UNK token, remove it + remove_next = True + if remove_next: + del input_ids[i + 1] + del labels[i + 1] + del block_ids[i + 1] + if random.random() < label_args.case_corruption_prob_after_newline and i + 1 < len(input_ids): + input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) + + elif label_args.use_auxiliary and labels[i] > Constants.AUX_OFFSET: # auxiliary if pack_samples: raise NotImplementedError() @@ -369,6 +411,7 @@ def corrupt_training( and i + 1 < len(input_ids) ): input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) + try: i = i + 1 + next(index for index, label in enumerate(labels[i + 1 :]) if label != 0) except StopIteration: From 2294c392e01e70246a4ac6d61e6b72f6fe2ed7dd Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 1 May 2024 10:50:11 +0000 Subject: [PATCH 153/262] add non-whitespace oversampling --- wtpsplit/train/train.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 1d64ad44..cd0c9d22 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -103,7 +103,7 @@ class Args: use_subwords: bool = False threshold: float = 0.01 lookahead_split_layers: Optional[int] = None - + sample_non_whitespace: int = 1 def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: bool = False): all_input_ids = [] @@ -484,6 +484,14 @@ def maybe_pad(text): all_input_block_lengths.extend([list(Counter(ids).values()) for ids in block_ids]) all_langs.extend(block_langs) + if args.sample_non_whitespace > 1: + separator = Constants.SEPARATORS.get(current_lang, " ") + if separator == "": + for i in range(args.sample_non_whitespace - 1): + all_input_blocks.extend(blocks) + all_input_block_lengths.extend([list(Counter(ids).values()) for ids in block_ids]) + all_langs.extend(block_langs) + return { "input_ids": all_input_blocks, "block_lengths": all_input_block_lengths, @@ -660,7 +668,9 @@ def compute_metrics(trainer): avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) avg_metrics[f"average_nonwhitespace_{dataset_name}_f1"].append(info["f1"]) avg_metrics[f"average_nonwhitespace_{dataset_name}_f1_best"].append(info["f1_best"]) - avg_metrics[f"average_nonwhitespace_{dataset_name}_threshold_best"].append(info["threshold_best"]) + avg_metrics[f"average_nonwhitespace_{dataset_name}_threshold_best"].append( + info["threshold_best"] + ) else: avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) avg_metrics[f"average_whitespace_{dataset_name}_f1"].append(info["f1"]) From d87d4d5979fd4da03d8dae075ecf5b6b7ee5c12f Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 1 May 2024 10:53:33 +0000 Subject: [PATCH 154/262] update run.sh --- run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run.sh b/run.sh index ff595d23..d3ba4a89 100755 --- a/run.sh +++ b/run.sh @@ -1,2 +1,2 @@ # TODO: cleanup in case of no .arrow files but cache-* files available. -python3 ~/wtpsplit/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train_xlmr.py $1 \ No newline at end of file +python3 ~/wtpsplit/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train.py $1 \ No newline at end of file From 187fa8c07523caecfde65468ba6f478a8c88d779 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 2 May 2024 21:03:06 +0000 Subject: [PATCH 155/262] optionally, store indices --- wtpsplit/evaluation/__init__.py | 28 ++++++++++++++++++++--- wtpsplit/evaluation/intrinsic.py | 39 +++++++++++++++++++++++++++++--- 2 files changed, 61 insertions(+), 6 deletions(-) diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index 6e2528b0..529900d6 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -39,7 +39,7 @@ def get_labels(lang_code, sentences, after_space=True): return labels -def evaluate_sentences(lang_code, sentences, predicted_sentences): +def evaluate_sentences(lang_code, sentences, predicted_sentences, return_indices: bool = False): separator = Constants.SEPARATORS[lang_code] text = separator.join(sentences) @@ -59,15 +59,18 @@ def evaluate_sentences(lang_code, sentences, predicted_sentences): # only correct if we correctly predict the single newline in between the sentence pair # --> no false positives, no false negatives allowed! "correct_pairwise": np.all(labels[:-1] == predictions[:-1]), + "true_indices": np.where(labels)[0].tolist() if return_indices else None, + "predicted_indices": np.where(predictions)[0].tolist() if return_indices else None, + "length": len(labels), } -def train_mixture(lang_code, original_train_x, train_y, n_subsample=None, features=None): +def train_mixture(lang_code, original_train_x, train_y, n_subsample=None, features=None, skip_punct: bool = False): original_train_x = torch.from_numpy(original_train_x).float() train_y = train_y[:-1] - if original_train_x.shape[1] > Constants.AUX_OFFSET: + if original_train_x.shape[1] > Constants.AUX_OFFSET and not skip_punct: if features is not None: train_x = original_train_x[:, features] else: @@ -89,6 +92,7 @@ def train_mixture(lang_code, original_train_x, train_y, n_subsample=None, featur p, r, t = precision_recall_curve(train_y, torch.sigmoid(original_train_x[:, Constants.NEWLINE_INDEX])) f1 = 2 * p * r / (p + r + 1e-6) best_threshold_newline = t[f1.argmax()] + print(best_threshold_transformed, best_threshold_newline) return clf, features, best_threshold_transformed, best_threshold_newline @@ -97,6 +101,7 @@ def evaluate_mixture( lang_code, test_x, true_sentences, + return_indices, clf, features, threshold_transformed, @@ -124,20 +129,35 @@ def evaluate_mixture( lang_code, true_sentences, reconstruct_sentences(text, indices_to_sentences(text, predicted_indices_newline)), + return_indices, ) + indices_newline_info = { + "true_indices": info_newline.pop("true_indices"), + "pred_indices": info_newline.pop("predicted_indices"), + "length": info_newline.pop("length"), + } + if predicted_indices_transformed is None: return ( score_newline, None, {"info_newline": info_newline, "info_transformed": None}, + indices_newline_info, + None, ) score_transformed, info_transformed = evaluate_sentences( lang_code, true_sentences, reconstruct_sentences(text, indices_to_sentences(text, predicted_indices_transformed)), + return_indices, ) + indices_transformed_info = { + "true_indices": info_transformed.pop("true_indices"), + "pred_indices": info_transformed.pop("predicted_indices"), + "length": info_transformed.pop("length"), + } return ( score_newline, @@ -146,6 +166,8 @@ def evaluate_mixture( "info_newline": info_newline, "info_transformed": info_transformed, }, + indices_newline_info, + indices_transformed_info, ) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index f7f10c38..08d7c720 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -63,6 +63,8 @@ class Args: skip_corrupted: bool = False zh_window: int = 0 clf_from_scratch: bool = False + return_indices: bool = False + skip_punct: bool = True ZH_CHAR_PATTERN = re.compile( @@ -70,7 +72,7 @@ class Args: ) -def preprocess_zh_sentence(text, n=10): +def preprocess_zh_sentence(text, n=0): if n == 0: return text result = [] @@ -322,6 +324,8 @@ def main(args): # now, compute the intrinsic scores. results = {} clfs = {} + if args.return_indices: + indices = {} # Initialize lists to store scores for each metric across all languages u_scores, t_scores, punct_scores = [], [], [] @@ -332,6 +336,8 @@ def main(args): print(f"Predicting {lang_code}...") results[lang_code] = {} clfs[lang_code] = {} + if args.return_indices: + indices[lang_code] = {} for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"][: args.max_n_test_sentences] @@ -353,14 +359,16 @@ def main(args): f[lang_code][dataset_name]["train_logits"][:], f[lang_code][dataset_name]["train_labels"][:], features=feature_indices, + skip_punct=args.skip_punct, ) if clf[0] is not None: print(clf) - score_t, score_punct, _ = evaluate_mixture( + score_t, score_punct, _, t_indices, punct_indices = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:], sentences, + args.return_indices, *clf, ) @@ -371,8 +379,11 @@ def main(args): else: score_t = score_punct = None clf = [None, None, None, args.threshold] + t_indices, punct_indices = None, None - score_u, _, _ = evaluate_mixture(lang_code, f[lang_code][dataset_name]["test_logits"][:], sentences, *clf) + score_u, _, _, u_indices, _ = evaluate_mixture( + lang_code, f[lang_code][dataset_name]["test_logits"][:], sentences, args.return_indices, *clf + ) results[lang_code][dataset_name] = { "u": score_u, @@ -380,6 +391,15 @@ def main(args): "punct": score_punct, } + if args.return_indices: + indices[lang_code][dataset_name] = { + "u": u_indices["pred_indices"], + "t": t_indices["pred_indices"] if t_indices is not None else None, + "punct": punct_indices["pred_indices"] if punct_indices is not None else None, + "true_indices": u_indices["true_indices"], + "length": u_indices["length"], + } + if score_u is not None: u_scores.append((score_u, lang_code)) if score_t is not None: @@ -415,6 +435,7 @@ def main(args): ), indent=4, ) + print(Constants.CACHE_DIR / "intrinsic" / f"{save_str}.json") # Write results_avg to JSON json.dump( @@ -425,6 +446,18 @@ def main(args): ), indent=4, ) + if args.return_indices: + json.dump( + indices, + open( + Constants.CACHE_DIR / "intrinsic" / f"{save_str}_IDX.json", + "w", + ), + # indent=4, + ) + print(Constants.CACHE_DIR / "intrinsic" / f"{save_str}_IDX.json") + print("Indices saved to file.") + if not args.keep_logits: os.remove(f.filename) return results, results_avg, total_test_time From 14f428388148a5c24b2e548193493a84b376050f Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 3 May 2024 12:37:22 +0000 Subject: [PATCH 156/262] adapt to intrinsic.py --- wtpsplit/evaluation/intrinsic_pairwise.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index c5563d5f..cfe9278d 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -45,19 +45,22 @@ class Args: # } # } # } - eval_data_path: str = "data/eval.pth" + eval_data_path: str = "data/all_data_24_04.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 batch_size: int = 128 include_langs: List[str] = None threshold: float = 0.01 - max_n_train_sentences: int = 10_000 + max_n_train_sentences: int = 1_000 + max_n_test_sentences: int = sys.maxsize save_suffix: str = "" do_lowercase: bool = False do_remove_punct: bool = False skip_adaptation: bool = False keep_logits: bool = True + skip_corrupted: bool = True + skip_punct: bool = True # k_mer-specific args k: int = 2 @@ -258,6 +261,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # eval data for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): + if args.skip_corrupted and "corrupted" in dataset_name: + continue try: if args.adapter_path: model.model.load_adapter( @@ -284,7 +289,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dset_group = lang_group[dataset_name] if "test_logits" not in dset_group: - test_sentences = dataset["data"] + test_sentences = dataset["data"][: args.max_n_test_sentences] all_pairs_test = generate_k_mers( test_sentences, k=args.k, @@ -419,7 +424,7 @@ def main(args): clfs[lang_code] = {} for dataset_name, dataset in dsets["sentence"].items(): - sentences = dataset["data"] + sentences = dataset["data"][: args.max_n_test_sentences] sent_k_mers = generate_k_mers( sentences, k=args.k, @@ -429,7 +434,9 @@ def main(args): max_n_samples=args.max_n_samples, min_k_mer_length=args.min_k_mer_length, ) - + if lang_code not in f or dataset_name not in f[lang_code]: + continue + if "train_logits" in f[lang_code][dataset_name] and not args.skip_adaptation: feature_indices = None # it is sufficient to feed in 1 long sequence of tokens here since we only use logits for LR @@ -438,6 +445,7 @@ def main(args): f[lang_code][dataset_name]["train_logits"][:], f[lang_code][dataset_name]["train_labels"][:], features=feature_indices, + skip_punct=args.skip_punct, ) # XXX: clf thresholds are still fitted on max. F1 score, not accuracy! # (but still without a positive label at the end) From a9f7fd98e9810bd2337be0c806e6651bf4bd23b5 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 3 May 2024 14:42:16 +0000 Subject: [PATCH 157/262] fix --- wtpsplit/evaluation/intrinsic_pairwise.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index cfe9278d..0f098e01 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -61,6 +61,7 @@ class Args: keep_logits: bool = True skip_corrupted: bool = True skip_punct: bool = True + return_indices: bool = False # k_mer-specific args k: int = 2 @@ -461,16 +462,17 @@ def main(args): # evaluate each pair for i, k_mer in enumerate(sent_k_mers): start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] - single_score_t, single_score_punct, info = evaluate_mixture( + single_score_t, single_score_punct, info, t_indices, punct_indices = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:][start:end], list(k_mer), + args.return_indices, *clf, ) score_t.append(single_score_t) score_punct.append(single_score_punct) - acc_t.append(info["info_newline"]["correct_pairwise"]) - acc_punct.append(info["info_transformed"]["correct_pairwise"]) + acc_t.append(info["info_newline"]["correct_pairwise"] if info["info_newline"] else None) + acc_punct.append(info["info_transformed"]["correct_pairwise"] if info["info_transformed"] else None) clfs[lang_code][dataset_name] = clf @@ -501,18 +503,19 @@ def main(args): thresholds.append(threshold_adjusted) else: thresholds.append(args.threshold) - single_score_u, _, info = evaluate_mixture( + single_score_u, _, info, u_indices, _ = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:][start:end], list(k_mer), + args.return_indices, *clf, ) score_u.append(single_score_u) acc_u.append(info["info_newline"]["correct_pairwise"]) score_u = np.mean(score_u) - score_t = np.mean(score_t) if score_t else None - score_punct = np.mean(score_punct) if score_punct else None + score_t = np.mean(score_t) if score_t and not args.skip_adaptation else None + score_punct = np.mean(score_punct) if score_punct and not (args.skip_punct or args.skip_adaptation) else None acc_u = np.mean(acc_u) acc_t = np.mean(acc_t) if score_t else None acc_punct = np.mean(acc_punct) if score_punct else None From 8cc90c0e8b8c178d73bc15446e09dd5b72bc5a81 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 4 May 2024 10:02:21 +0000 Subject: [PATCH 158/262] use new data, less verbose --- wtpsplit/evaluation/intrinsic.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 08d7c720..234211ad 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -44,7 +44,7 @@ class Args: # } # } # TODO: for songs/etc., maybe feed in each sample separately? - eval_data_path: str = "data/all_data_24_04.pth" + eval_data_path: str = "data/all_data_02_05.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 @@ -109,7 +109,7 @@ def process_logits(text, model, lang_code, args): block_size=args.block_size, batch_size=args.batch_size, pad_last_batch=True, - verbose=True, + verbose=False, ) logits = logits[0] if offsets_mapping is not None: @@ -142,16 +142,16 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # file is a csv: l1,l2,... use_langs = f.read().strip().split(",") else: - use_langs = Constants.LANGINFO.index + use_langs = eval_data.keys() total_test_time = 0 # Initialize total test processing time with h5py.File(logits_path, "a") as f, torch.no_grad(): - for lang_code in use_langs: + for lang_code in tqdm(use_langs, desc="Languages"): if args.include_langs is not None and lang_code not in args.include_langs: continue - print(f"Processing {lang_code}...") + # print(f"Processing {lang_code}...") if lang_code not in f: lang_group = f.create_group(lang_code) else: @@ -176,7 +176,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st lang_group.create_dataset("valid", data=valid_logits) # eval data - for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): + for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): if args.skip_corrupted and "corrupted" in dataset_name: continue try: @@ -195,14 +195,14 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st model_path = os.path.join(args.model_path, dataset_name, "en") if not os.path.exists(model_path): model_path = args.model_path - print(model_path) + # print(model_path) model = PyTorchWrapper( AutoModelForTokenClassification.from_pretrained(model_path).to(args.device) ) except Exception as e: print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue - print(dataset_name) + # print(dataset_name) if dataset_name not in lang_group: dset_group = lang_group.create_group(dataset_name) else: From 1e327b170e04dfce2b6ac474ce964552922c8ffb Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 5 May 2024 08:38:57 +0000 Subject: [PATCH 159/262] handle short-seqs --- wtpsplit/evaluation/intrinsic.py | 311 +++++++++++++++++++++++-------- 1 file changed, 234 insertions(+), 77 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 234211ad..4a4dacf2 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -44,7 +44,7 @@ class Args: # } # } # TODO: for songs/etc., maybe feed in each sample separately? - eval_data_path: str = "data/all_data_02_05.pth" + eval_data_path: str = "data/all_data_04_05.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 @@ -53,9 +53,10 @@ class Args: include_langs: List[str] = None custom_language_list: str = None threshold: float = 0.01 - max_n_train_sentences: int = 1_000 + max_n_train_sentences: int = 1000 max_n_test_sentences: int = sys.maxsize save_suffix: str = "" + # XXX: these are not used in the current implementation! done within data.pth already. do_lowercase: bool = False do_remove_punct: bool = False keep_logits: bool = False @@ -101,33 +102,60 @@ def preprocess_zh_sentence(text, n=0): def process_logits(text, model, lang_code, args): # Extract necessary data - logits, offsets_mapping, tokenizer = extract( - [text], - model, - lang_code=lang_code, - stride=args.stride, - block_size=args.block_size, - batch_size=args.batch_size, - pad_last_batch=True, - verbose=False, - ) - logits = logits[0] - if offsets_mapping is not None: - offsets_mapping = offsets_mapping[0] + if isinstance(text, list): + logits = [] + for short_seq in tqdm(text, desc="Short sequences", disable=False): + current_logits, current_offsets_mapping, tokenizer = extract( + [short_seq], + model, + lang_code=lang_code, + stride=args.stride, + block_size=args.block_size, + batch_size=args.batch_size, + pad_last_batch=True, + verbose=False, + ) + current_logits = current_logits[0] + if current_offsets_mapping is not None: + current_offsets_mapping = current_offsets_mapping[0] + + if "xlm" in model.config.model_type: + tokens = tokenizer.tokenize(short_seq, verbose=False) - if "xlm" in model.config.model_type: - tokens = tokenizer.tokenize(text, verbose=False) + char_probs = token_to_char_probs(short_seq, tokens, current_logits, tokenizer, current_offsets_mapping) - # Use the vectorized function to convert token probabilities to character probabilities for the entire array - char_probs = token_to_char_probs(text, tokens, logits, tokenizer, offsets_mapping) + current_logits = char_probs + # TODO: extra treatment for Canine necessary? - logits = char_probs + logits.append(current_logits) + else: + logits, offsets_mapping, tokenizer = extract( + [text], + model, + lang_code=lang_code, + stride=args.stride, + block_size=args.block_size, + batch_size=args.batch_size, + pad_last_batch=True, + verbose=False, + ) + logits = logits[0] + if offsets_mapping is not None: + offsets_mapping = offsets_mapping[0] - if len(model.model.config.id2label) == 2: - # Igor's models: take winning logit - logits = np.expand_dims(logits.argmax(axis=1), axis=1) - # we apply sigmoid later; convert to fake logits - logits = np.log((logits + 1e-8) / (1 - logits + 1e-8)) + if "xlm" in model.config.model_type: + tokens = tokenizer.tokenize(text, verbose=False) + + # Use the vectorized function to convert token probabilities to character probabilities for the entire array + char_probs = token_to_char_probs(text, tokens, logits, tokenizer, offsets_mapping) + + logits = char_probs + + if len(model.model.config.id2label) == 2: + # Igor's models: take winning logit + logits = np.expand_dims(logits.argmax(axis=1), axis=1) + # we apply sigmoid later; convert to fake logits + logits = np.log((logits + 1e-8) / (1 - logits + 1e-8)) return logits @@ -164,11 +192,11 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st valid_sentences = [sample["text"].strip() for sample in valid_data if sample["lang"] == lang_code] assert len(valid_sentences) > 0 - valid_sentences = [ - corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - for sentence in valid_sentences - ] - separator = Constants.SEPARATORS[lang_code] + # valid_sentences = [ + # corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + # for sentence in valid_sentences + # ] + separator = Constants.SEPARATORS.get(lang_code, " ") valid_text = separator.join(valid_sentences) valid_logits = process_logits(valid_text, model, lang_code, args) @@ -211,39 +239,81 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"][: args.max_n_test_sentences] # if list of lists: flatten + # if isinstance(test_sentences[0], list): + # test_sentences = [item for sublist in test_sentences for item in sublist] + # test_sentences = [ + # corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + # for sentence in test_sentences + # ] + # test_sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in test_sentences] if isinstance(test_sentences[0], list): - test_sentences = [item for sublist in test_sentences for item in sublist] - test_sentences = [ - corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - for sentence in test_sentences - ] - test_sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in test_sentences] - test_text = Constants.SEPARATORS[lang_code].join(test_sentences) + # short-seq eval: list of lists + test_text = [ + Constants.SEPARATORS.get(lang_code, " ").join(sentence) for sentence in test_sentences + ] + else: + test_text = Constants.SEPARATORS.get(lang_code, " ").join(test_sentences) start_time = time.time() # Start timing for test logits processing test_logits = process_logits(test_text, model, lang_code, args) end_time = time.time() # End timing for test logits processing total_test_time += end_time - start_time # Accumulate test processing time - - test_labels = get_labels(lang_code, test_sentences, after_space=False) + if isinstance(test_sentences[0], list): + test_logit_lengths = [] + # store start and end indices for each pair, used later to slice the logits + # (h5py does not like different length np arrays as list elements) + all_logit_lengths = np.append(0, np.cumsum([len(logits) for logits in test_logits])) + # append tuple of start and end indices for each pair + for i in range(len(test_logits)): + test_logit_lengths.append((all_logit_lengths[i], all_logit_lengths[i + 1] - 1)) + test_logits = np.concatenate(test_logits) + # NOTE: handled differently than in intrinsic_pairwise.py + # here, we keep the label at the end + # in intrinsic_pairwise.py, we only consider the labels in the middle. + test_labels = [ + get_labels(lang_code, short_seq, after_space=False)[:-1] for short_seq in test_sentences + ] + + # flatten; append 0 eos to account for later indexing/slicing + test_labels = np.append(np.concatenate(test_labels), 1) + assert len(test_labels) == len(test_logits) + 1 + dset_group.create_dataset("test_logit_lengths", data=test_logit_lengths) + else: + test_labels = get_labels(lang_code, test_sentences, after_space=False) dset_group.create_dataset("test_logits", data=test_logits) dset_group.create_dataset("test_labels", data=test_labels) train_sentences = dataset["meta"].get("train_data") if train_sentences is not None and "train_logits" not in dset_group and not args.skip_adaptation: - if isinstance(train_sentences[0], list): - train_sentences = [item for sublist in train_sentences for item in sublist] - train_sentences = [ - corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - for sentence in train_sentences - ] - train_sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in train_sentences] + # if isinstance(train_sentences[0], list): + # train_sentences = [item for sublist in train_sentences for item in sublist] + # train_sentences = [ + # corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + # for sentence in train_sentences + # ] + # train_sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in train_sentences] train_sentences = train_sentences[: args.max_n_train_sentences] - train_text = Constants.SEPARATORS[lang_code].join(train_sentences) + if isinstance(train_sentences[0], list): + # short-seq eval: list of lists + train_text = [ + Constants.SEPARATORS.get(lang_code, " ").join(sentence) for sentence in train_sentences + ] + else: + train_text = Constants.SEPARATORS.get(lang_code, " ").join(train_sentences) train_logits = process_logits(train_text, model, lang_code, args) - train_labels = get_labels(lang_code, train_sentences, after_space=False) + if isinstance(train_sentences[0], list): + train_logits = np.concatenate(train_logits) + train_labels = [ + get_labels(lang_code, short_seq, after_space=False)[:-1] for short_seq in train_sentences + ] + + # flatten; append 0 eos to account for later indexing/slicing + train_labels = np.append(np.concatenate(train_labels), 1) + assert len(train_labels) == len(train_logits) + 1 + else: + train_labels = get_labels(lang_code, train_sentences, after_space=False) dset_group.create_dataset("train_logits", data=train_logits) dset_group.create_dataset("train_labels", data=train_labels) @@ -341,13 +411,13 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"][: args.max_n_test_sentences] - if isinstance(sentences[0], list): - sentences = [item for sublist in sentences for item in sublist] - sentences = [ - corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - for sentence in sentences - ] - sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in sentences] + # if isinstance(sentences[0], list): + # sentences = [item for sublist in sentences for item in sublist] + # sentences = [ + # corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) + # for sentence in sentences + # ] + # sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in sentences] # check if f[lang_code][dataset_name] exists if lang_code not in f or dataset_name not in f[lang_code]: continue @@ -364,13 +434,45 @@ def main(args): if clf[0] is not None: print(clf) - score_t, score_punct, _, t_indices, punct_indices = evaluate_mixture( - lang_code, - f[lang_code][dataset_name]["test_logits"][:], - sentences, - args.return_indices, - *clf, - ) + if isinstance(sentences[0], list): + acc_t, acc_punct = [], [] + score_t, score_punct = [], [] + t_indices, punct_indices = [], [] + for i, short_seq in enumerate(sentences): + start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] + single_score_t, single_score_punct, info, cur_t_indices, cur_punct_indices = evaluate_mixture( + lang_code, + f[lang_code][dataset_name]["test_logits"][:][start:end], + list(short_seq), + args.return_indices, + *clf, + ) + score_t.append(single_score_t) + score_punct.append(single_score_punct) + acc_t.append(info["info_newline"]["correct_pairwise"] if info["info_newline"] else None) + acc_punct.append( + info["info_transformed"]["correct_pairwise"] if info["info_transformed"] else None + ) + # indices: accumulate from start + t_indices.extend( + [idx + start for idx in cur_t_indices["pred_indices"]] + if cur_t_indices and cur_t_indices["pred_indices"] + else [] + ) + punct_indices.extend( + [idx + start for idx in cur_punct_indices["pred_indices"]] + if cur_punct_indices and cur_punct_indices["pred_indices"] + else [] + ) + + else: + score_t, score_punct, _, t_indices, punct_indices = evaluate_mixture( + lang_code, + f[lang_code][dataset_name]["test_logits"][:], + sentences, + args.return_indices, + *clf, + ) clfs[lang_code][dataset_name] = clf @@ -381,25 +483,79 @@ def main(args): clf = [None, None, None, args.threshold] t_indices, punct_indices = None, None - score_u, _, _, u_indices, _ = evaluate_mixture( - lang_code, f[lang_code][dataset_name]["test_logits"][:], sentences, args.return_indices, *clf - ) + if isinstance(sentences[0], list): + acc_u = [] + score_u = [] + u_indices, true_indices = [], [] + length = 0 + for i, short_seq in enumerate(sentences): + start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] + single_score_u, _, info, cur_u_indices, _ = evaluate_mixture( + lang_code, + f[lang_code][dataset_name]["test_logits"][:][start:end], + list(short_seq), + args.return_indices, + *clf, + ) + score_u.append(single_score_u) + acc_u.append(info["info_newline"]["correct_pairwise"]) + # indices: accumulate from start + u_indices.extend( + [idx + start for idx in cur_u_indices["pred_indices"]] if cur_u_indices["pred_indices"] else [] + ) + true_indices.extend( + [idx + start for idx in cur_u_indices["true_indices"]] if cur_u_indices["true_indices"] else [] + ) + length += cur_u_indices["length"] - 1 - results[lang_code][dataset_name] = { - "u": score_u, - "t": score_t, - "punct": score_punct, - } + else: + score_u, _, _, u_indices, _ = evaluate_mixture( + lang_code, f[lang_code][dataset_name]["test_logits"][:], sentences, args.return_indices, *clf + ) - if args.return_indices: - indices[lang_code][dataset_name] = { - "u": u_indices["pred_indices"], - "t": t_indices["pred_indices"] if t_indices is not None else None, - "punct": punct_indices["pred_indices"] if punct_indices is not None else None, - "true_indices": u_indices["true_indices"], - "length": u_indices["length"], + if isinstance(sentences[0], list): + score_u = np.mean(score_u) + score_t = np.mean(score_t) if score_t and not args.skip_adaptation else None + score_punct = ( + np.mean(score_punct) if score_punct and not (args.skip_punct or args.skip_adaptation) else None + ) + acc_u = np.mean(acc_u) + acc_t = np.mean(acc_t) if score_t else None + acc_punct = np.mean(acc_punct) if score_punct else None + + results[lang_code][dataset_name] = { + "u": score_u, + "t": score_t, + "punct": score_punct, + "acc_u": acc_u, + "acc_t": acc_t, + "acc_punct": acc_punct, + } + else: + results[lang_code][dataset_name] = { + "u": score_u, + "t": score_t, + "punct": score_punct, } + if args.return_indices: + if isinstance(sentences[0], list): + indices[lang_code][dataset_name] = { + "u": u_indices, + "t": t_indices, + "punct": punct_indices, + "true_indices": true_indices, + "length": length, + } + else: + indices[lang_code][dataset_name] = { + "u": u_indices["pred_indices"], + "t": t_indices["pred_indices"] if t_indices is not None else None, + "punct": punct_indices["pred_indices"] if punct_indices is not None else None, + "true_indices": u_indices["true_indices"], + "length": u_indices["length"], + } + if score_u is not None: u_scores.append((score_u, lang_code)) if score_t is not None: @@ -453,6 +609,7 @@ def main(args): Constants.CACHE_DIR / "intrinsic" / f"{save_str}_IDX.json", "w", ), + default=int, # indent=4, ) print(Constants.CACHE_DIR / "intrinsic" / f"{save_str}_IDX.json") From 08c4b4532f6f4a36c0515ae523dfb7ff49ca231b Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 5 May 2024 19:09:38 +0000 Subject: [PATCH 160/262] fix case: len(input_tokens) == 511 --- wtpsplit/__init__.py | 2 +- wtpsplit/evaluation/__init__.py | 2 +- wtpsplit/evaluation/intrinsic.py | 4 ++-- wtpsplit/extract.py | 6 +++--- wtpsplit/train/evaluate.py | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/wtpsplit/__init__.py b/wtpsplit/__init__.py index d41729f5..f3717c39 100644 --- a/wtpsplit/__init__.py +++ b/wtpsplit/__init__.py @@ -221,7 +221,7 @@ def _predict_proba( self.model, lang_code=lang_code, stride=stride, - block_size=block_size, + max_block_size=block_size, batch_size=batch_size, pad_last_batch=pad_last_batch, verbose=verbose, diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index 529900d6..2d837124 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -189,7 +189,7 @@ def our_sentencize( sentence_model, lang_code=lang_code, stride=stride, - block_size=block_size, + max_block_size=block_size, batch_size=batch_size, pad_last_batch=False, use_hidden_states=False, diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 4a4dacf2..60b3253f 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -110,7 +110,7 @@ def process_logits(text, model, lang_code, args): model, lang_code=lang_code, stride=args.stride, - block_size=args.block_size, + max_block_size=args.block_size, batch_size=args.batch_size, pad_last_batch=True, verbose=False, @@ -134,7 +134,7 @@ def process_logits(text, model, lang_code, args): model, lang_code=lang_code, stride=args.stride, - block_size=args.block_size, + max_block_size=args.block_size, batch_size=args.batch_size, pad_last_batch=True, verbose=False, diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 9087ac74..41ffa712 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -69,7 +69,7 @@ def extract( batch_of_texts, model, stride, - block_size, + max_block_size, batch_size, lang_code=None, pad_last_batch=False, @@ -100,7 +100,7 @@ def extract( text_lengths = [len(text) for text in batch_of_texts] # reduce block size if possible - block_size = min(block_size, max(text_lengths)) + block_size = min(max_block_size, max(text_lengths)) # make sure block_size is a multiple of downsampling rate downsampling_rate = getattr(model.config, "downsampling_rate", 1) @@ -109,7 +109,7 @@ def extract( # total number of forward passes num_chunks = sum(math.ceil(max(length - actual_block_size, 0) / stride) + 1 for length in text_lengths) - if text_lengths[0] <= block_size: + if text_lengths[0] <= max_block_size - 2: # if the input is smaller than the block size, we only need one forward pass num_chunks = 1 if use_subwords: diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index a5eec3ab..fd2bcf2d 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -96,7 +96,7 @@ def evaluate_sentence( PyTorchWrapper(model.backbone), lang_code=lang_code, stride=stride, - block_size=block_size, + max_block_size=block_size, batch_size=batch_size, ) logits = logits[0] From 4c8f7bae17855fb17e939fb17f4ac799c3957a5c Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 5 May 2024 19:58:25 +0000 Subject: [PATCH 161/262] helper --- run_eval.sh | 18 ++++++++++++++++++ run_eval_kmer.sh | 22 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100755 run_eval.sh create mode 100755 run_eval_kmer.sh diff --git a/run_eval.sh b/run_eval.sh new file mode 100755 index 00000000..208e8187 --- /dev/null +++ b/run_eval.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Check if sufficient arguments are provided +if [[ $# -lt 2 ]]; then + echo "Usage: $0 MODEL_PATH 'threshold_list'" + echo "Example: $0 /path/to/model '0.1 0.2 0.3'" + exit 1 +fi + +# Assign arguments to variables +MODEL_PATH="$1" +threshold_list=($2) + +# Loop over threshold_list +for threshold in "${threshold_list[@]}"; do + # Execute the Python script + python3 wtpsplit/evaluation/intrinsic.py --model_path "$MODEL_PATH" --threshold "$threshold" --keep_logits +done \ No newline at end of file diff --git a/run_eval_kmer.sh b/run_eval_kmer.sh new file mode 100755 index 00000000..3fbc473f --- /dev/null +++ b/run_eval_kmer.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Check if sufficient arguments are provided +if [[ $# -lt 3 ]]; then + echo "Usage: $0 MODEL_PATH 'k_list' 'threshold_list'" + echo "Example: $0 /path/to/model '1 2 3' '0.1 0.2 0.3'" + exit 1 +fi + +# Assign arguments to variables +MODEL_PATH="$1" +k_list=($2) +threshold_list=($3) + +# Loop over k_list +for k in "${k_list[@]}"; do + # Loop over threshold_list + for threshold in "${threshold_list[@]}"; do + # Execute the Python script + python3 wtpsplit/evaluation/intrinsic_pairwise.py --model_path "$MODEL_PATH" --k "$k" --threshold "$threshold" --keep_logits + done +done \ No newline at end of file From 96d247dbe0581d4a24dda6d937b473c4b0dc3053 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 7 May 2024 07:02:49 +0000 Subject: [PATCH 162/262] code for legal data baseline --- wtpsplit/evaluation/law_bert.py | 300 ++++++++++++++++++++++++++++++++ 1 file changed, 300 insertions(+) create mode 100644 wtpsplit/evaluation/law_bert.py diff --git a/wtpsplit/evaluation/law_bert.py b/wtpsplit/evaluation/law_bert.py new file mode 100644 index 00000000..9a8f27fc --- /dev/null +++ b/wtpsplit/evaluation/law_bert.py @@ -0,0 +1,300 @@ +import json +import logging +import os +import sys +import time +from dataclasses import dataclass +from typing import List + +import h5py +import numpy as np +import torch +from tqdm.auto import tqdm +from transformers import AutoModelForTokenClassification, AutoTokenizer, HfArgumentParser, pipeline + +from wtpsplit.evaluation import evaluate_mixture +from wtpsplit.utils import Constants + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + + +@dataclass +class Args: + eval_data_path: str = "data/all_data_04_05.pth" + device: str = "cpu" + include_langs: List[str] = None + max_n_test_sentences: int = sys.maxsize + save_suffix: str = "" + return_indices: bool = False + type: str = "both" # laws, judgements, both, specific + lang_support: str = "multi" # mono, multi + + +def get_law_preds(texts, model, model_name, args) -> List[List[int]]: + tokenizer = AutoTokenizer.from_pretrained(model_name) + + pipe = pipeline( + "token-classification", + model=model, + tokenizer=tokenizer, + device=args.device, + aggregation_strategy="simple", + ) + sentences = pipe(texts) + sent_end_preds_all = [] + for text, sent_preds in zip(texts, sentences): + sent_end_indices = [short_seq["end"] - 1 for short_seq in sent_preds] + # indices to binary list + sent_end_preds = [1 if i in sent_end_indices else 0 for i in range(len(text))] + sent_end_preds_all.append(sent_end_preds) + return sent_end_preds_all + + +def load_or_compute_logits(args, eval_data, save_str: str = None): + logits_path = Constants.CACHE_DIR / "law_bert" / f"{save_str}.h5" + base_name = "rcds/distilbert-SBD" + + if not os.path.exists(Constants.CACHE_DIR / "law_bert"): + os.makedirs(Constants.CACHE_DIR / "law_bert") + + use_langs = eval_data.keys() + # law eval data is only one with _ + use_langs = [lang_code for lang_code in use_langs if "_" in lang_code] + + total_test_time = 0 # Initialize total test processing time + + with h5py.File(logits_path, "a") as f, torch.no_grad(): + for lang_code in tqdm(use_langs, desc="Languages"): + current_name = base_name + if args.lang_support == "multi": + current_name += "-fr-es-it-en-de" + elif args.lang_support == "mono": + if lang_code.split("_")[0] == "pt": + current_name += "-fr-es-it-en-de" + else: + current_name += f"-{lang_code.split('_')[0]}" + if lang_code.split("_")[0] == "en": + current_name += "-judgements-laws" + else: + raise NotImplementedError + if lang_code.split("_")[0] == "en" and args.lang_support == "mono": + pass + elif args.type == "laws": + current_name += "-laws" + elif args.type == "judgements": + current_name += "-judgements" + elif args.type == "both": + current_name += "-judgements-laws" + elif args.type == "specific": + current_name += f"-{lang_code.split('_')[1]}" + else: + raise NotImplementedError + + model = AutoModelForTokenClassification.from_pretrained(current_name).to(args.device) + + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + print(f"{lang_code}, model: {current_name}") + if lang_code not in f: + lang_group = f.create_group(lang_code) + else: + lang_group = f[lang_code] + + # eval data + for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): + if dataset_name not in lang_group: + dset_group = lang_group.create_group(dataset_name) + else: + dset_group = lang_group[dataset_name] + + if "test_logits" not in dset_group: + test_sentences = dataset["data"][: args.max_n_test_sentences] + if isinstance(test_sentences[0], list): + # short-seq eval: list of lists + test_text = [ + Constants.SEPARATORS.get(lang_code, " ").join(sentence) for sentence in test_sentences + ] + else: + raise NotImplementedError + + start_time = time.time() # Start timing for test logits processing + test_logits = get_law_preds(test_text, model, current_name, args) + end_time = time.time() # End timing for test logits processing + total_test_time += end_time - start_time # Accumulate test processing time + if isinstance(test_sentences[0], list): + test_logit_lengths = [] + # store start and end indices for each pair, used later to slice the logits + # (h5py does not like different length np arrays as list elements) + all_logit_lengths = np.append(0, np.cumsum([len(logits) for logits in test_logits])) + # append tuple of start and end indices for each pair + for i in range(len(test_logits)): + test_logit_lengths.append((all_logit_lengths[i], all_logit_lengths[i + 1] - 1)) + test_logits = np.concatenate(test_logits) + test_logits = np.expand_dims(test_logits, axis=1) + dset_group.create_dataset("test_logit_lengths", data=test_logit_lengths) + else: + raise NotImplementedError + + dset_group.create_dataset("test_logits", data=test_logits) + + end_time = time.time() + return h5py.File(logits_path, "r"), total_test_time / 60 # to minutes + + +def compute_statistics(values): + if not values: # Check for empty values list + return {"mean": None, "median": None, "std": None, "min": None, "min_lang": None, "max": None, "max_lang": None} + + scores, langs = zip(*values) # Unpack scores and languages + min_index = np.argmin(scores) + max_index = np.argmax(scores) + return { + "mean": np.mean(scores), + "median": np.median(scores), + "std": np.std(scores), + "min": scores[min_index], + "min_lang": langs[min_index], + "max": scores[max_index], + "max_lang": langs[max_index], + } + + +def main(args): + save_model_path = f"rcds/distilbert-SBD-{args.lang_support}-{args.type}" + save_str = f"{save_model_path.replace('/','_')}" + + eval_data = torch.load(args.eval_data_path) + + save_str += f"{args.save_suffix}" + + # first, logits for everything. + f, total_test_time = load_or_compute_logits(args, eval_data, save_str) + + # now, compute the law_bert scores. + results = {} + clfs = {} + if args.return_indices: + indices = {} + # Initialize lists to store scores for each metric across all languages + u_scores = [] + + for lang_code, dsets in tqdm(eval_data.items()): + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + print(f"Predicting {lang_code}...") + results[lang_code] = {} + clfs[lang_code] = {} + if args.return_indices: + indices[lang_code] = {} + + for dataset_name, dataset in dsets["sentence"].items(): + sentences = dataset["data"][: args.max_n_test_sentences] + # check if f[lang_code][dataset_name] exists + if lang_code not in f or dataset_name not in f[lang_code]: + continue + + clf = [None, None, None, 0.5] + + if isinstance(sentences[0], list): + acc_u = [] + score_u = [] + u_indices, true_indices = [], [] + length = 0 + for i, short_seq in enumerate(sentences): + start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] + single_score_u, _, info, cur_u_indices, _ = evaluate_mixture( + lang_code, + f[lang_code][dataset_name]["test_logits"][:][start:end], + list(short_seq), + args.return_indices, + *clf, + ) + score_u.append(single_score_u) + acc_u.append(info["info_newline"]["correct_pairwise"]) + # indices: accumulate from start + u_indices.extend( + [idx + start for idx in cur_u_indices["pred_indices"]] if cur_u_indices["pred_indices"] else [] + ) + true_indices.extend( + [idx + start for idx in cur_u_indices["true_indices"]] if cur_u_indices["true_indices"] else [] + ) + length += cur_u_indices["length"] - 1 + + else: + raise NotImplementedError + + if isinstance(sentences[0], list): + score_u = np.mean(score_u) + acc_u = np.mean(acc_u) + + results[lang_code][dataset_name] = { + "u": score_u, + "acc_u": acc_u, + } + else: + raise NotImplementedError + + if args.return_indices: + if isinstance(sentences[0], list): + indices[lang_code][dataset_name] = { + "u": u_indices, + "true_indices": true_indices, + "length": length, + } + else: + raise NotImplementedError + + if score_u is not None: + u_scores.append((score_u, lang_code)) + + # just for printing + print(f"{lang_code} {dataset_name} {score_u:.3f}") + + # Compute statistics for each metric across all languages + results_avg = { + "u": compute_statistics(u_scores), + "include_langs": args.include_langs, + } + + json.dump( + results, + open( + Constants.CACHE_DIR / "law_bert" / f"{save_str}.json", + "w", + ), + indent=4, + ) + print(Constants.CACHE_DIR / "law_bert" / f"{save_str}.json") + + # Write results_avg to JSON + json.dump( + results_avg, + open( + Constants.CACHE_DIR / "law_bert" / f"{save_str}_AVG.json", + "w", + ), + indent=4, + ) + if args.return_indices: + json.dump( + indices, + open( + Constants.CACHE_DIR / "law_bert" / f"{save_str}_IDX.json", + "w", + ), + default=int, + # indent=4, + ) + print(Constants.CACHE_DIR / "law_bert" / f"{save_str}_IDX.json") + print("Indices saved to file.") + + return results, results_avg, total_test_time + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + results, results_avg, total_test_time = main(args) + print(total_test_time) From 39a66eb37969eed7f2a0cced2a5ff2de6a5073ba Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 7 May 2024 13:25:41 +0000 Subject: [PATCH 163/262] update for newest data --- wtpsplit/evaluation/intrinsic_pairwise.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index 0f098e01..7b995ec1 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -45,7 +45,7 @@ class Args: # } # } # } - eval_data_path: str = "data/all_data_24_04.pth" + eval_data_path: str = "data/all_data_04_05.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 @@ -291,6 +291,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"][: args.max_n_test_sentences] + if isinstance(test_sentences[0], list): + continue all_pairs_test = generate_k_mers( test_sentences, k=args.k, @@ -426,6 +428,8 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"][: args.max_n_test_sentences] + if isinstance(sentences[0], list): + continue sent_k_mers = generate_k_mers( sentences, k=args.k, From f45976f32b821f7a5ab28f3f667e765db20e68e2 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 7 May 2024 19:56:30 +0000 Subject: [PATCH 164/262] update to recent changes --- configs/peft/lora.json | 13 ++-- wtpsplit/train/train_adapter.py | 118 ++++++++++++++------------------ 2 files changed, 56 insertions(+), 75 deletions(-) diff --git a/configs/peft/lora.json b/configs/peft/lora.json index c11e972d..33e01a8f 100644 --- a/configs/peft/lora.json +++ b/configs/peft/lora.json @@ -1,6 +1,6 @@ { - "model_name_or_path": "xlmr-normal-p-v3", - "output_dir": "xlmr-3l-v3_lora_r8_ep20_v2_100-1k-10k", + "model_name_or_path": "xlmr-3l-v3_look48_lc0.1-mix2", + "output_dir": "xlmr-3l-v4_LL_lora_r8_a16_ep30", "block_size": 256, "eval_stride": 128, "do_train": true, @@ -13,9 +13,10 @@ "preprocessing_num_workers": 1, "learning_rate": 3e-4, "fp16": false, - "num_train_epochs": 20, + "num_train_epochs": 30, "logging_steps": 50, "report_to": "wandb", + "wandb_project": "sentence-peft-v2", "save_steps": 100000000, "remove_unused_columns": false, "one_sample_per_line": false, @@ -29,9 +30,7 @@ "use_subwords": true, "custom_punctuation_file": "punctuation_xlmr_unk.txt", "log_level": "warning", - "adapter_config": "lora[r=8]", + "adapter_config": "lora[r=8,alpha=16]", "weight_decay": 0.0, - "auxiliary_remove_prob": 0.0, - "do_process": false, - "n_train_steps": [100, 1000, 10000] + "auxiliary_remove_prob": 0.0 } \ No newline at end of file diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 103fc31f..08dde693 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -39,7 +39,7 @@ class Args: model_name_or_path: str base_model: str = "xlm-roberta-base" shuffle: bool = True - text_path: str = "data/all_data.pth" + text_path: str = "data/all_data_04_05.pth" include_languages: List[str] = None preprocessing_num_workers: int = 1 block_size: int = 512 @@ -50,7 +50,7 @@ class Args: one_sample_per_line: bool = False use_loss_weights: bool = False do_sentence_training: bool = True - do_auxiliary_training: bool = True + do_auxiliary_training: bool = False aux_training_weight: float = 1.0 ignore_non_hyphen: bool = False non_punctuation_sample_ratio: float = None @@ -68,8 +68,6 @@ class Args: wandb_project: str = "sentence" eval_every: int = 5 # corruption - do_lowercase: bool = False - do_remove_punct: bool = False eval_pairwise: bool = False skip_eval_loss: bool = False subsample: Optional[float] = None @@ -104,11 +102,8 @@ def prepare_dataset( dataset_name="ud", shuffle=False, split="train", - do_lowercase=False, - do_remove_punct=False, subsample: Union[None, int, float] = None, ): - # maybe we use more than 1 lang later at once. with training_args.main_process_first(): # maybe we use more than 1 lang later at once. for lang in include_languages: @@ -116,12 +111,10 @@ def prepare_dataset( dataset = data[lang]["sentence"][dataset_name]["meta"]["train_data"] elif split == "valid": dataset = data[lang]["sentence"][dataset_name]["data"] - if dataset_name == "opus100" and lang == "fr": - dataset = data[lang]["sentence"][dataset_name]["data"] if dataset is None: return None - if args.one_sample_per_line: + if args.one_sample_per_line or isinstance(dataset[0], list): processed_dataset = [] for chunk in dataset: processed_chunk = {} @@ -132,22 +125,18 @@ def prepare_dataset( # join all chunks processed_chunk[args.text_column] = "\n".join(chunk) # corrupt - processed_chunk[args.text_column] = corrupt( - processed_chunk[args.text_column], do_lowercase, do_remove_punct - ) + # TODO: corrupt for lyrics. + # processed_chunk[args.text_column] = corrupt( + # processed_chunk[args.text_column], do_lowercase, do_remove_punct + # ) processed_dataset.append(processed_chunk) dataset = datasets.Dataset.from_list(processed_dataset) else: - if isinstance(dataset[0], list): - # flatten - dataset = [item for sublist in dataset for item in sublist] dataset = datasets.Dataset.from_list( [ { - args.text_column: corrupt(sample, do_lowercase, do_remove_punct) + "\n" - if sample and sample[-1] != "\n" - else corrupt(sample, do_lowercase, do_remove_punct), + args.text_column: sample + "\n" if sample and sample[-1] != "\n" else sample, # TODO "lang": lang, "ends_with_punctuation": sample.endswith(tuple(Constants.PUNCTUATION_CHARS)), } @@ -352,6 +341,7 @@ def maybe_pad(text): batched=True, num_proc=num_workers, remove_columns=[args.text_column], + desc="Tokenizing", ) else: # this is no longer used and would cause an error otherwise @@ -366,6 +356,7 @@ def maybe_pad(text): num_proc=num_workers, # a bit hacky but oh well, only drop if sentence remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], + desc="Grouping", ) else: if args.use_subwords: @@ -404,12 +395,12 @@ def maybe_pad(text): for lang in tqdm(data.keys(), desc="Language"): if lang in args.include_languages: for dataset_name in data[lang]["sentence"].keys(): - if dataset_name != "ted2020": - continue - # skip langs starting with a, b, ..., k - if lang[0] < "d": - print(f"Skipping {lang} {dataset_name}") - continue + # if dataset_name != "ted2020": + # continue + # skip langs starting with a, b, ..., k + # if lang[0] < "d": + # print(f"Skipping {lang} {dataset_name}") + # continue # do model stuff here; otherwise, head params would be overwritten every time backbone = SubwordXLMForTokenClassification.from_pretrained( args.model_name_or_path, config=copy.deepcopy(config), ignore_mismatched_sizes=True @@ -449,8 +440,6 @@ def maybe_pad(text): dataset_name=dataset_name, shuffle=False, split="valid", - do_lowercase=args.do_lowercase, - do_remove_punct=args.do_remove_punct, ) logger.warning(f"Valid ds for {lang} {dataset_name} has {len(valid_dataset)} examples.") @@ -461,8 +450,6 @@ def maybe_pad(text): dataset_name=dataset_name, shuffle=args.shuffle, split="train", - do_lowercase=args.do_lowercase, - do_remove_punct=args.do_remove_punct, subsample=args.subsample, ) if train_dataset is None or valid_dataset is None: @@ -472,7 +459,7 @@ def maybe_pad(text): # print some samples from the dataset count = 0 - while count < 1: + while count < 3: index = random.choice(range(len(train_dataset))) sample = train_dataset[index] @@ -488,6 +475,8 @@ def compute_metrics(trainer): model = trainer._wrap_model(trainer.model, training=False) with training_args.main_process_first(): + # XXX: feeding in single samples is too slow --> feed in as one long text + # also for lyrics, tweets, ... if args.one_sample_per_line: eval_data = [item for sublist in eval_data for item in sublist] elif isinstance(eval_data[0], list): @@ -496,11 +485,9 @@ def compute_metrics(trainer): lang, eval_data, model, - stride=64, + stride=128, block_size=512, batch_size=training_args.per_device_eval_batch_size, - do_lowercase=args.do_lowercase, - do_remove_punct=args.do_remove_punct, ) metrics[f"{dataset_name}/{lang}/pr_auc"] = score metrics[f"{dataset_name}/{lang}/f1"] = info["f1"] @@ -558,7 +545,7 @@ def compute_metrics(trainer): model.backbone.classifier = torch.nn.Sequential( clf, # original classifier - if frozen above, also frozen here torch.nn.Linear(clf.out_features, 1), - ) + ) model.backbone.config.num_labels = 1 # if args.one_sample_per_line: @@ -574,8 +561,6 @@ def compute_metrics(trainer): ), args.eval_every, ) - # log more often than this - training_args.logging_steps = training_args.eval_steps // 5 trainer_cls = AdapterTrainer if adapter_args.train_adapter else Trainer # add logging_prefix and skip_eval_loss as args to trainer_cls if trainer_cls is AdapterTrainer only @@ -611,33 +596,34 @@ def compute_metrics(trainer): ) else: save_model.to("cpu").save_pretrained(os.path.join(training_args.output_dir, dataset_name, lang)) - if training_args.local_rank == 0: - # eval here within 1 go - cmd = "" - - if args.eval_pairwise: - eval_function = "intrinsic_pairwise" - elif args.one_sample_per_line: - eval_function = "intrinsic_list" - else: - eval_function = "intrinsic" - if args.do_lowercase and args.do_remove_punct: - suffix = "--do_lowercase --do_remove_punct" - elif "multilingual" in trainings_args.model_name_or_path: - suffix = "--threshold 0.5" - else: - suffix = "" - if "adapter" in training_args.output_dir: - model_info = f"--model_path {args.model_name_or_path} --adapter_path {training_args.output_dir}" - else: - model_info = f"--model_path {training_args.output_dir}" - - if "verses" in args.text_path or "lines" in args.text_path: - cmd = f"python3 wtpsplit/evaluation/{eval_function}.py {model_info} --threshold 0.1 --custom_language_list data/mldb_langs.csv --eval_data_path {args.text_path} {suffix}" - else: - cmd = f"python3 wtpsplit/evaluation/{eval_function}.py {model_info} --threshold 0.1 {suffix}" - print(cmd) - os.system(cmd) + # TODO + # if training_args.local_rank == 0: + # # eval here within 1 go + # cmd = "" + + # if args.eval_pairwise: + # eval_function = "intrinsic_pairwise" + # elif args.one_sample_per_line: + # eval_function = "intrinsic_list" + # else: + # eval_function = "intrinsic" + # if args.do_lowercase and args.do_remove_punct: + # suffix = "--do_lowercase --do_remove_punct" + # elif "multilingual" in trainings_args.model_name_or_path: + # suffix = "--threshold 0.5" + # else: + # suffix = "" + # if "adapter" in training_args.output_dir: + # model_info = f"--model_path {args.model_name_or_path} --adapter_path {training_args.output_dir}" + # else: + # model_info = f"--model_path {training_args.output_dir}" + + # if "verses" in args.text_path or "lines" in args.text_path: + # cmd = f"python3 wtpsplit/evaluation/{eval_function}.py {model_info} --threshold 0.1 --custom_language_list data/mldb_langs.csv --eval_data_path {args.text_path} {suffix}" + # else: + # cmd = f"python3 wtpsplit/evaluation/{eval_function}.py {model_info} --threshold 0.1 {suffix}" + # print(cmd) + # os.system(cmd) def _mp_fn(index): @@ -648,8 +634,4 @@ def _mp_fn(index): if __name__ == "__main__": # try: main() - # except Exception: - # # extype, value, tb = sys.exc_info() - # # tb.print_exc() - # # pdb.post_mortem(tb) - # pass + From 6d199225ac3266532d399b1bf7b7d0185c6e5c39 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 8 May 2024 21:42:05 +0000 Subject: [PATCH 165/262] fix too short sequences for block creation + silence chars --- wtpsplit/train/train_adapter.py | 4 +++- wtpsplit/utils.py | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 08dde693..8dda40f5 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -301,6 +301,8 @@ def maybe_pad(text): total_length = len(concatenated_texts) best_length = math.ceil(total_length / args.block_size) * args.block_size + args.overflow_size + if best_length < args.block_size: + best_length = args.block_size while best_length > total_length: best_length -= args.block_size @@ -395,7 +397,7 @@ def maybe_pad(text): for lang in tqdm(data.keys(), desc="Language"): if lang in args.include_languages: for dataset_name in data[lang]["sentence"].keys(): - # if dataset_name != "ted2020": + # if dataset_name != "ted2020-corrupted" or lang != "la": # continue # skip langs starting with a, b, ..., k # if lang[0] < "d": diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 75023601..e26a66b7 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -120,7 +120,7 @@ def get_subword_label_dict(label_args, tokenizer): for i, c in enumerate(Constants.PUNCTUATION_CHARS): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i - logger.warning( + logger.info( f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}" ) if token_id == tokenizer.unk_token_id: @@ -145,8 +145,8 @@ def get_subword_label_dict(label_args, tokenizer): for c in label_args.newline_chars: token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.NEWLINE_INDEX - logger.warning(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") - logger.warning(f"{tokenizer.decode([token_id])}") + logger.info(f"newline character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded:") + logger.info(f"{tokenizer.decode([token_id])}") return label_dict From 87781b201ae354c3115acb2535276bcdb37c773e Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 8 May 2024 22:06:30 +0000 Subject: [PATCH 166/262] fix v2 --- wtpsplit/train/train_adapter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 8dda40f5..df84f0b5 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -301,10 +301,10 @@ def maybe_pad(text): total_length = len(concatenated_texts) best_length = math.ceil(total_length / args.block_size) * args.block_size + args.overflow_size - if best_length < args.block_size: - best_length = args.block_size while best_length > total_length: best_length -= args.block_size + if best_length < args.block_size: + best_length = args.block_size + 1 if best_length < 0: continue From 158af0e4fb2302e970cfc9b79e8d2dfdfcdbc76d Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 9 May 2024 12:08:54 +0000 Subject: [PATCH 167/262] handle nllb train --- wtpsplit/evaluation/intrinsic.py | 48 ++++++-------------------------- 1 file changed, 8 insertions(+), 40 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 60b3253f..7e93aa6d 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -23,7 +23,7 @@ from wtpsplit.utils import Constants, corrupt logger = logging.getLogger() -logger.setLevel(logging.INFO) +logger.setLevel(logging.WARNING) @dataclass @@ -62,44 +62,11 @@ class Args: keep_logits: bool = False skip_adaptation: bool = False skip_corrupted: bool = False - zh_window: int = 0 clf_from_scratch: bool = False return_indices: bool = False skip_punct: bool = True -ZH_CHAR_PATTERN = re.compile( - "[\u4e00-\u9fff\u3400-\u4dbf]" # Basic Multilingual Plane and Extension A -) - - -def preprocess_zh_sentence(text, n=0): - if n == 0: - return text - result = [] - length = len(text) - i = 0 - - while i < length: - # Determine the end of the current window - end = min(i + n, length) - window = text[i:end] - - # Use the compiled regex to check for the presence of Chinese characters - if ZH_CHAR_PATTERN.search(window): - # Remove all spaces from the window if it contains a Chinese character - modified_window = window.replace(" ", "") - else: - # Keep the window as is if no Chinese characters are found - modified_window = window - - result.append(modified_window) - # Increment the index by N to process non-overlapping windows - i += n - - return "".join(result) - - def process_logits(text, model, lang_code, args): # Extract necessary data if isinstance(text, list): @@ -211,8 +178,14 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if args.adapter_path: if args.clf_from_scratch: model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) + if any(code in dataset_name for code in ["ceb", "jv", "mn", "yo"]): + dataset_load_name = "nllb" + if "corrupted" in dataset_load_name: + dataset_load_name += "-corrupted" + else: + dataset_load_name = dataset_name model.model.load_adapter( - args.adapter_path + "/" + dataset_name + "/" + lang_code, + args.adapter_path + "/" + dataset_load_name + "/" + lang_code, set_active=True, with_head=True, load_as="text", @@ -245,7 +218,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) # for sentence in test_sentences # ] - # test_sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in test_sentences] if isinstance(test_sentences[0], list): # short-seq eval: list of lists test_text = [ @@ -292,7 +264,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) # for sentence in train_sentences # ] - # train_sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in train_sentences] train_sentences = train_sentences[: args.max_n_train_sentences] if isinstance(train_sentences[0], list): # short-seq eval: list of lists @@ -383,8 +354,6 @@ def main(args): save_str += f"{args.save_suffix}" if args.max_n_test_sentences < sys.maxsize: save_str += f"_n{args.max_n_test_sentences}" - if args.zh_window > 0: - save_str += f"_zh{args.zh_window}" # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) @@ -417,7 +386,6 @@ def main(args): # corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) # for sentence in sentences # ] - # sentences = [preprocess_zh_sentence(sentence, args.zh_window) for sentence in sentences] # check if f[lang_code][dataset_name] exists if lang_code not in f or dataset_name not in f[lang_code]: continue From 9335d0c543a0294c6c8e96a40781c39a7eee8ee6 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 9 May 2024 14:09:22 +0000 Subject: [PATCH 168/262] add ted2020 shared task data + eval --- .../extract_shared_task_data.py | 66 +++ .../evaluate_sepp_nlg_2021_subtask1.py | 98 +++++ wtpsplit/evaluation/intrinsic_ted.py | 414 ++++++++++++++++++ 3 files changed, 578 insertions(+) create mode 100644 wtpsplit/data_acquisition/extract_shared_task_data.py create mode 100644 wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py create mode 100644 wtpsplit/evaluation/intrinsic_ted.py diff --git a/wtpsplit/data_acquisition/extract_shared_task_data.py b/wtpsplit/data_acquisition/extract_shared_task_data.py new file mode 100644 index 00000000..c10f728e --- /dev/null +++ b/wtpsplit/data_acquisition/extract_shared_task_data.py @@ -0,0 +1,66 @@ +from pathlib import Path + +import torch +from mosestokenizer import MosesTokenizer +from tqdm.auto import tqdm + +from wtpsplit.utils import Constants + + +def process_tsv(file_path, detokenizer): + sentences = [] + current_sentence = [] + + with open(file_path, "r", encoding="utf-8") as file: + for line in file: + parts = line.strip().split("\t") + if len(parts) < 2: + continue + word, boundary = parts[0], parts[1] + current_sentence.append(word) + if boundary == "1": + detokenized_sentence = detokenizer.detokenize(current_sentence) + # detokenized_sentence = ' '.join(current_sentence) + sentences.append(detokenized_sentence) + current_sentence = [] + + return sentences + + +def build_data_dictionary(root_dir): + data_dict = {} + + for lang in tqdm(["fr", "de", "en", "it"]): + detokenizer = MosesTokenizer(lang) + data_dict[lang] = {"sentence": {}} + for dataset in ["test", "surprise_test"]: + data_dict[lang]["sentence"][dataset] = {"meta": {"train_data": []}, "data": []} + + train_data_path = Path(root_dir) / lang / "train" + train_files = sorted([f for f in train_data_path.glob("*.tsv") if f.is_file()]) + all_train_sentences = [] + for file_path in tqdm(train_files, desc=f"{lang} train"): + train_sentences = process_tsv(file_path, detokenizer) + all_train_sentences.append(train_sentences) + + # use train data for both test sets (same training data) + for dataset in ["test", "surprise_test"]: + data_dict[lang]["sentence"][dataset]["meta"]["train_data"] = all_train_sentences + + # test + surprise_test data + for dataset in ["test", "surprise_test"]: + test_data_path = Path(root_dir) / lang / dataset + test_files = sorted([f for f in test_data_path.glob("*.tsv") if f.is_file()]) + all_test_sentences = [] + for file_path in tqdm(test_files, desc=f"{lang} {dataset}"): + test_sentences = process_tsv(file_path, detokenizer) + all_test_sentences.append(test_sentences) + data_dict[lang]["sentence"][dataset]["data"] = all_test_sentences + + return data_dict + + +root_dir = Constants.ROOT_DIR.parent / "data/sepp_nlg_2021_data" +data = build_data_dictionary(root_dir) + +torch.save(data, Constants.ROOT_DIR.parent / "data" / "ted2020_join.pth") diff --git a/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py b/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py new file mode 100644 index 00000000..88a6e0ac --- /dev/null +++ b/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py @@ -0,0 +1,98 @@ +import json +import os +import sys +from pprint import pprint + +from sklearn.metrics import classification_report + +from wtpsplit.utils import Constants + + +def evaluate_subtask1(splits, langs, prediction_dir: str, supervisions, include_n_documents) -> None: + results = {} + for lang_code in langs: + results[lang_code] = {} + for split in splits: + results[lang_code][split] = {} + for supervision in supervisions: + print(lang_code, split, supervision) + relevant_dir = Constants.ROOT_DIR.parent / "data/sepp_nlg_2021_data" / lang_code / split + + all_gt_labels, all_predicted_labels = [], [] + fnames = sorted([f for f in relevant_dir.glob("*.tsv") if f.is_file()])[:include_n_documents] + gt_tsv_files = [ + fname + for fname in fnames + if str(fname).startswith(str(relevant_dir)) and str(fname).endswith(".tsv") + ] + + for i, gt_tsv_file in enumerate(gt_tsv_files, 0): + print(i, gt_tsv_file) + basename = os.path.basename(gt_tsv_file) + + with open(gt_tsv_file, encoding="utf-8") as f: + lines = f.read().strip().split("\n") + rows = [line.split("\t") for line in lines] + gt_labels = [row[1] for row in rows] + + with open( + os.path.join( + Constants.CACHE_DIR, "ted2020", prediction_dir, lang_code, split, supervision, basename + ), + "r", + encoding="utf8", + ) as f: + lines = f.read().strip().split("\n") + rows = [line.split("\t") for line in lines] + pred_labels = [row[1] for row in rows] + + assert ( + len(gt_labels) == len(pred_labels) + ), f"unequal no. of labels for files {gt_tsv_file} and {os.path.join(prediction_dir, lang_code, split, basename)}" + all_gt_labels.extend(gt_labels) + all_predicted_labels.extend(pred_labels) + + eval_result = classification_report(all_gt_labels, all_predicted_labels, output_dict=True) + pprint(eval_result, indent=4) + results[lang_code][split][supervision] = eval_result + json.dump( + results, + open( + Constants.CACHE_DIR / "ted2020" / f"{prediction_dir}.json", + "w", + ), + indent=4, + ) + print(Constants.CACHE_DIR / "ted2020" / f"{prediction_dir}.json") + return results + + +if __name__ == "__main__": + import argparse + + parser = argparse.ArgumentParser(description="Evaluate subtask 1 of SEPP-NLG 2021") + parser.add_argument( + "--include_languages", + help="target language ('en', 'de', 'fr', 'it'; i.e. one of the subfolders in the zip file's main folder)", + default=["fr", "de", "en", "it"], + nargs="+", + ) + parser.add_argument( + "--splits", + help="split to be evaluated (usually 'dev', 'test'), subfolder of 'lang'", + default=["test", "surprise_test"], + nargs="+", + ) + parser.add_argument( + "--prediction_dir", + help="path to folder containing the prediction TSVs (language and test set folder names are appended automatically)", + ) + parser.add_argument( + "--supervision", + help="u, t, punct", + default=["u", "t", "punct"], + nargs="+", + ) + parser.add_argument("--include_n_documents", default=sys.maxsize) + args = parser.parse_args() + results = evaluate_subtask1(args.splits, args.include_languages, args.prediction_dir, args.supervision) diff --git a/wtpsplit/evaluation/intrinsic_ted.py b/wtpsplit/evaluation/intrinsic_ted.py new file mode 100644 index 00000000..e23896ee --- /dev/null +++ b/wtpsplit/evaluation/intrinsic_ted.py @@ -0,0 +1,414 @@ +import copy +import logging +import os +import sys +import time +from dataclasses import dataclass +from typing import List + +import h5py +import numpy as np +import torch +from datasets import load_dataset +from tqdm.auto import tqdm +from transformers import AutoModelForTokenClassification, AutoTokenizer, HfArgumentParser + +import adapters +import wtpsplit.models # noqa: F401 +from wtpsplit.evaluation import get_labels, train_mixture +from wtpsplit.evaluation.evaluate_sepp_nlg_2021_subtask1 import evaluate_subtask1 +from wtpsplit.evaluation.intrinsic import process_logits +from wtpsplit.extract import PyTorchWrapper, extract +from wtpsplit.utils import Constants, sigmoid + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +import spacy_alignments as tokenizations + + +def get_token_labels(a, b, a_labels): + a2b, b2a = tokenizations.get_alignments(a, b) + + b_labels = [] + + for i, label_indices in enumerate(b2a): + aligned_subwords = [] + + if label_indices: + for j in label_indices: + if j < len(a_labels): + aligned_subwords.append(a_labels[j]) + + if True in aligned_subwords: + b_labels.append(1) + else: + b_labels.append(0) + if not np.sum(a_labels) == sum(b_labels): + print(np.sum(a_labels), sum(b_labels)) + b_labels[-1] = 1 # last is always 1 + return b_labels + + +@dataclass +class Args: + model_path: str + adapter_path: str = None + # eval data in the format: + # { + # "": { + # "sentence": { + # "": { + # "meta": { + # "train_data": ["train sentence 1", "train sentence 2"] + # }, + # "data": ["test sentence 1", "test sentence 2"] + # } + # } + # } + # } + eval_data_path: str = "data/ted2020.pth" + valid_text_path: str = None # "data/sentence/valid.parquet" + device: str = "cpu" + block_size: int = 512 + stride: int = 64 + batch_size: int = 32 + include_langs: List[str] = None + include_splits: List[str] = None + custom_language_list: str = None + threshold: float = 0.025 + max_n_train_sentences: int = 100 + max_n_test_sentences: int = sys.maxsize + save_suffix: str = "" + skip_adaptation: bool = False + clf_from_scratch: bool = False + skip_punct: bool = True + + +def process_logits_and_tokens(text, model, lang_code, args): + # variation of process_logits for word-based evals, returning tokens as well. + if isinstance(text, list): + logits = [] + tokens = [] + for short_seq in tqdm(text, desc="Short sequences", disable=False): + current_logits, current_offsets_mapping, tokenizer = extract( + [short_seq], + model, + lang_code=lang_code, + stride=args.stride, + max_block_size=args.block_size, + batch_size=args.batch_size, + pad_last_batch=True, + verbose=False, + ) + current_logits = current_logits[0] + if current_offsets_mapping is not None: + current_offsets_mapping = current_offsets_mapping[0] + + current_tokens = tokenizer.encode(short_seq, verbose=False, add_special_tokens=False) + + logits.append(current_logits) + tokens.append(current_tokens) + else: + raise NotImplementedError + return logits, tokens + + +def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: str = None): + logits_path = Constants.CACHE_DIR / "ted2020" / f"{save_str}.h5" + + if not os.path.exists(Constants.CACHE_DIR / "ted2020"): + os.makedirs(Constants.CACHE_DIR / "ted2020") + + if args.custom_language_list is not None: + with open(args.custom_language_list, "r") as f: + # file is a csv: l1,l2,... + use_langs = f.read().strip().split(",") + else: + use_langs = eval_data.keys() + + total_test_time = 0 # Initialize total test processing time + + with h5py.File(logits_path, "a") as f, torch.no_grad(): + if not args.include_splits: + splits = ["surprise_test", "test"] + else: + splits = args.include_splits + for lang_code in tqdm(use_langs, desc="Languages"): + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + # print(f"Processing {lang_code}...") + if lang_code not in f: + lang_group = f.create_group(lang_code) + else: + lang_group = f[lang_code] + + # eval data + for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): + if lang_code != "de" or "surprise" not in dataset_name: # FIXME + continue + if dataset_name not in splits: + continue + try: + if args.adapter_path: + if args.clf_from_scratch: + model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) + model.model.load_adapter( + args.adapter_path + "/" + dataset_name + "/" + lang_code, + set_active=True, + with_head=True, + load_as="text", + ) + if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( + os.path.join(args.model_path, "model.safetensors") + ): + model_path = os.path.join(args.model_path, dataset_name, "en") + if not os.path.exists(model_path): + model_path = args.model_path + # print(model_path) + model = PyTorchWrapper( + AutoModelForTokenClassification.from_pretrained(model_path).to(args.device) + ) + except Exception as e: + print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") + continue + # print(dataset_name) + if dataset_name not in lang_group: + dset_group = lang_group.create_group(dataset_name) + else: + dset_group = lang_group[dataset_name] + + if "test_logits" not in dset_group: + test_sentences = dataset["data"][: args.max_n_test_sentences] + if isinstance(test_sentences[0], list): + # short-seq eval: list of lists + test_text = [ + Constants.SEPARATORS.get(lang_code, " ").join(sentence) for sentence in test_sentences + ] + else: + raise NotImplementedError + + start_time = time.time() # Start timing for test logits processing + test_logits, test_tokens = process_logits_and_tokens(test_text, model, lang_code, args) + end_time = time.time() # End timing for test logits processing + total_test_time += end_time - start_time # Accumulate test processing time + if isinstance(test_sentences[0], list): + test_logit_lengths = [] + # store start and end indices for each pair, used later to slice the logits + # (h5py does not like different length np arrays as list elements) + all_logit_lengths = np.append(0, np.cumsum([len(logits) for logits in test_logits])) + # append tuple of start and end indices for each pair + for i in range(len(test_logits)): + test_logit_lengths.append((all_logit_lengths[i], all_logit_lengths[i + 1] - 1)) + test_logits = np.concatenate(test_logits) + test_tokens = np.concatenate(test_tokens) + + dset_group.create_dataset("test_logit_lengths", data=test_logit_lengths) + + dset_group.create_dataset("test_logits", data=test_logits) + dset_group.create_dataset("test_tokens", data=test_tokens) + + train_sentences = dataset["meta"].get("train_data") + if train_sentences is not None and "train_logits" not in dset_group and not args.skip_adaptation: + train_sentences = train_sentences[: args.max_n_train_sentences] + if isinstance(train_sentences[0], list): + # short-seq eval: list of lists + train_text = [ + Constants.SEPARATORS.get(lang_code, " ").join(sentence) for sentence in train_sentences + ] + train_logits = process_logits(train_text, model, lang_code, args) + if isinstance(train_sentences[0], list): + train_logits = np.concatenate(train_logits) + train_labels = [ + get_labels(lang_code, short_seq, after_space=False)[:-1] for short_seq in train_sentences + ] + + # flatten; append 0 eos to account for later indexing/slicing + train_labels = np.append(np.concatenate(train_labels), 1) + assert len(train_labels) == len(train_logits) + 1 + + dset_group.create_dataset("train_logits", data=train_logits) + dset_group.create_dataset("train_labels", data=train_labels) + + end_time = time.time() + return h5py.File(logits_path, "r"), total_test_time / 60 # to minutes + + +def compute_statistics(values): + if not values: # Check for empty values list + return {"mean": None, "median": None, "std": None, "min": None, "min_lang": None, "max": None, "max_lang": None} + + scores, langs = zip(*values) # Unpack scores and languages + min_index = np.argmin(scores) + max_index = np.argmax(scores) + return { + "mean": np.mean(scores), + "median": np.median(scores), + "std": np.std(scores), + "min": scores[min_index], + "min_lang": langs[min_index], + "max": scores[max_index], + "max_lang": langs[max_index], + } + + +def main(args): + save_model_path = args.model_path + if args.adapter_path: + save_model_path = args.adapter_path + save_str = f"{save_model_path.replace('/','_')}_b{args.block_size}_s{args.stride}" + + eval_data = torch.load(args.eval_data_path) + if args.valid_text_path is not None: + valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") + else: + valid_data = None + + print("Loading model...") + # if model_path does not contain a model, take first subfolder + if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( + os.path.join(args.model_path, "model.safetensors") + ): + try: + model_path = os.path.join(args.model_path, os.listdir(args.model_path)[0], "en") + except: + model_path = args.model_path + print(model_path) + else: + model_path = args.model_path + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) + if args.adapter_path: + model_type = model.model.config.model_type + # adapters need xlm-roberta as model type. + model.model.config.model_type = "xlm-roberta" + adapters.init(model.model) + # reset model type (used later) + model.model.config.model_type = model_type + if "meta-clf" in args.adapter_path: + clf = model.model.classifier + model.model.classifier = torch.nn.Sequential(clf, torch.nn.Linear(clf.out_features, 1)) + + save_str += f"{args.save_suffix}" + if args.max_n_test_sentences < sys.maxsize: + save_str += f"_n{args.max_n_test_sentences}" + + # first, logits for everything. + f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) + + save_str += f"_u{args.threshold}" + + tokenizer = AutoTokenizer.from_pretrained(model.config.base_model) + + clfs = {} + # now, compute the intrinsic scores. + for lang_code, dsets in tqdm(eval_data.items()): + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + print(f"Predicting {lang_code}...") + + for dataset_name, dataset in dsets["sentence"].items(): + if not os.path.exists(Constants.CACHE_DIR / "ted2020" / save_str / lang_code / dataset_name): + os.makedirs(Constants.CACHE_DIR / "ted2020" / save_str / lang_code / dataset_name) + for supervision in ["u", "t", "punct"]: + if not os.path.exists( + Constants.CACHE_DIR / "ted2020" / save_str / lang_code / dataset_name / supervision + ): + os.makedirs(Constants.CACHE_DIR / "ted2020" / save_str / lang_code / dataset_name / supervision) + if "surprise" not in dataset_name: + continue + sentences = dataset["data"][: args.max_n_test_sentences] + # check if f[lang_code][dataset_name] exists + if lang_code not in f or dataset_name not in f[lang_code]: + continue + + if "train_logits" in f[lang_code][dataset_name] and not args.skip_adaptation and "surprise" in dataset_name: + feature_indices = None + clf = train_mixture( + [lang_code], + f[lang_code][dataset_name]["train_logits"][:], + f[lang_code][dataset_name]["train_labels"][:], + features=feature_indices, + skip_punct=args.skip_punct, + ) + if clf[0] is not None: + print(clf) + + clf = list(copy.deepcopy(clf)) + # 1 clf for each lang: train data is same for both. + clfs[lang_code] = clf + + gt_dir = Constants.ROOT_DIR.parent / "data" / "sepp_nlg_2021_data" / lang_code / "surprise_test" + test_files = sorted([f for f in gt_dir.glob("*.tsv") if f.is_file()]) + + if isinstance(sentences[0], list): + for i, short_seq in enumerate(sentences): + start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] + current_logits = f[lang_code][dataset_name]["test_logits"][:][start : end + 1] + current_tokens = tokenizer.convert_ids_to_tokens( + f[lang_code][dataset_name]["test_tokens"][:][start : end + 1] + ) + + with open(test_files[i], "r", encoding="utf-8") as file: + idx = test_files[i].name.split(".")[0] + lines = file.read().strip().split("\n") + rows = [line.split("\t") for line in lines] + gt_words = [row[0] for row in rows] + gt_labels = [row[1] for row in rows] + if gt_labels[-1] != "1": + print("0 label at end!") + u_preds = sigmoid(current_logits[:, 0]) > args.threshold + if not args.skip_adaptation: + t_preds = sigmoid(current_logits[:, 0]) > clfs[lang_code][-1] + else: + t_preds = None + if not args.skip_adaptation and not args.skip_punct: + # TODO: punct, T on tokens, too? + punct_preds = clfs[lang_code][0].predict_proba(current_logits)[:, 1] > clf[2] + else: + punct_preds = None + + # write to tsv as per the challenge reqs + for supervision, preds in zip(["u", "t", "punct"], [u_preds, t_preds, punct_preds]): + if preds is None: + continue + + word_labels = get_token_labels(current_tokens, gt_words, preds) + + with open( + Constants.CACHE_DIR + / "ted2020" + / save_str + / lang_code + / dataset_name + / supervision + / f"{idx}.tsv", + "w", + encoding="utf-8", + ) as file: + for word, label in zip(gt_words, word_labels): + file.write(f"{word}\t{label}\n") + else: + raise NotImplementedError + return total_test_time, save_str + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + total_test_time, save_str = main(args) + print(total_test_time) + supervision = ["u", "t", "punct"] + if args.skip_adaptation: + supervision.remove("t") + if args.skip_punct: + supervision.remove("punct") + if not args.include_langs: + include_langs = ["en", "de", "fr", "it"] + else: + include_langs = args.include_langs + if not args.include_splits: + include_splits = ["surprise_test", "test"] + else: + include_splits = args.include_splits + results = evaluate_subtask1(include_splits, include_langs, save_str, supervision, args.max_n_test_sentences) From 23e097708f9088a789146b3c73d3b74b629ef1b4 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 9 May 2024 15:06:14 +0000 Subject: [PATCH 169/262] fixes --- wtpsplit/evaluation/intrinsic.py | 8 +++- wtpsplit/evaluation/law_bert.py | 66 +++++++++++++++++++++++++++++--- wtpsplit/train/train_adapter.py | 4 +- 3 files changed, 70 insertions(+), 8 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 7e93aa6d..f95b0dbc 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -178,9 +178,13 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if args.adapter_path: if args.clf_from_scratch: model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) - if any(code in dataset_name for code in ["ceb", "jv", "mn", "yo"]): + if ( + any(code in lang_code for code in ["ceb", "jv", "mn", "yo"]) + and "ted2020" not in dataset_name + ): + # no ersatz for these either. dataset_load_name = "nllb" - if "corrupted" in dataset_load_name: + if "corrupted" in dataset_load_name: dataset_load_name += "-corrupted" else: dataset_load_name = dataset_name diff --git a/wtpsplit/evaluation/law_bert.py b/wtpsplit/evaluation/law_bert.py index 9a8f27fc..19a754be 100644 --- a/wtpsplit/evaluation/law_bert.py +++ b/wtpsplit/evaluation/law_bert.py @@ -5,6 +5,7 @@ import time from dataclasses import dataclass from typing import List +import warnings import h5py import numpy as np @@ -13,11 +14,49 @@ from transformers import AutoModelForTokenClassification, AutoTokenizer, HfArgumentParser, pipeline from wtpsplit.evaluation import evaluate_mixture -from wtpsplit.utils import Constants +from wtpsplit.utils import Constants, corrupt_asr logger = logging.getLogger() logger.setLevel(logging.INFO) +warnings.filterwarnings("ignore", category=UserWarning) + + +def corrupt_document(document, lang): + """Corrupt sentences in a document for ASR simulation.""" + return [corrupt_asr(sentence, lang=lang)[0] for sentence in document] + + +def process_documents(documents, lang): + """Process each document and return a list of corrupted documents.""" + return [corrupt_document(document, lang) for document in documents] + + +def handle_legal_data(eval_data, lang_code): + """Process legal data for a specific language, corrupting the sentences.""" + sections = ["test", "train"] + corrupted_sentences = {} + + for section in sections: + key = "data" if section == "test" else "meta" + if key in eval_data[lang_code]["sentence"]["legal-data"].keys(): + original_data = eval_data[lang_code]["sentence"]["legal-data"][key] + documents = original_data if section == "test" else original_data["train_data"] + if not documents: + corrupted_sentences[section] = None + continue + corrupted_docs = process_documents(documents, lang=lang_code.split("_")[0]) + corrupted_sentences[section] = corrupted_docs + + if corrupted_sentences: + eval_data[lang_code]["sentence"][f"legal-data-corrupted"] = { + "data": corrupted_sentences.get("test", []), + "meta": { + "train_data": corrupted_sentences.get("train", []), + }, + } + print(f"Created corrupted legal data for {lang_code}") + @dataclass class Args: @@ -25,10 +64,12 @@ class Args: device: str = "cpu" include_langs: List[str] = None max_n_test_sentences: int = sys.maxsize + stride: int = 32 save_suffix: str = "" return_indices: bool = False type: str = "both" # laws, judgements, both, specific lang_support: str = "multi" # mono, multi + corrupt_legal: bool = False # FIXME def get_law_preds(texts, model, model_name, args) -> List[List[int]]: @@ -40,6 +81,7 @@ def get_law_preds(texts, model, model_name, args) -> List[List[int]]: tokenizer=tokenizer, device=args.device, aggregation_strategy="simple", + stride=args.stride, ) sentences = pipe(texts) sent_end_preds_all = [] @@ -60,11 +102,18 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): use_langs = eval_data.keys() # law eval data is only one with _ - use_langs = [lang_code for lang_code in use_langs if "_" in lang_code] + use_langs = [lang_code for lang_code in use_langs if "laws" in lang_code or "judgements" in lang_code] + + # create corrupted versions of legal data (unlike others, not contained in eval_data) + if args.corrupt_legal: + for lang_code in use_langs: + if "laws" in lang_code or "judgements" in lang_code: + handle_legal_data(eval_data, lang_code) + torch.save(eval_data, args.eval_data_path) total_test_time = 0 # Initialize total test processing time - with h5py.File(logits_path, "a") as f, torch.no_grad(): + with h5py.File(logits_path, "w") as f, torch.no_grad(): for lang_code in tqdm(use_langs, desc="Languages"): current_name = base_name if args.lang_support == "multi": @@ -72,7 +121,7 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): elif args.lang_support == "mono": if lang_code.split("_")[0] == "pt": current_name += "-fr-es-it-en-de" - else: + else: current_name += f"-{lang_code.split('_')[0]}" if lang_code.split("_")[0] == "en": current_name += "-judgements-laws" @@ -111,6 +160,10 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): if "test_logits" not in dset_group: test_sentences = dataset["data"][: args.max_n_test_sentences] + if args.corrupt_legal: + test_sentences = [ + corrupt_asr(sentence, lang=lang_code.split("_")[0]) for sentence in test_sentences + ] if isinstance(test_sentences[0], list): # short-seq eval: list of lists test_text = [ @@ -162,11 +215,14 @@ def compute_statistics(values): def main(args): - save_model_path = f"rcds/distilbert-SBD-{args.lang_support}-{args.type}" + save_model_path = f"rcds/distilbert-SBD-{args.lang_support}-{args.type}_s{args.stride}" save_str = f"{save_model_path.replace('/','_')}" eval_data = torch.load(args.eval_data_path) + if args.corrupt_legal: + save_str += "_corrupt" + save_str += f"{args.save_suffix}" # first, logits for everything. diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index df84f0b5..a21bed23 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -379,6 +379,8 @@ def maybe_pad(text): data = torch.load( args.text_path, ) + # sort alphabetically by key to enable alphabetical filtering w/o losses + data = dict(sorted(data.items())) if not args.include_languages: args.include_languages = list(data.keys()) # use all @@ -400,7 +402,7 @@ def maybe_pad(text): # if dataset_name != "ted2020-corrupted" or lang != "la": # continue # skip langs starting with a, b, ..., k - # if lang[0] < "d": + # if not lang.startswith(tuple("k")) and not "en-de" in lang: # print(f"Skipping {lang} {dataset_name}") # continue # do model stuff here; otherwise, head params would be overwritten every time From 0a7d43201dac4a745692c4f20f7ab86e0686c8d5 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 10 May 2024 08:08:44 +0000 Subject: [PATCH 170/262] minor stuff. --- configs/peft/lora.json | 6 +++-- configs/peft/lora_lyrics.json | 42 +++++++++++++++++++++++++++++++++ wtpsplit/train/train_adapter.py | 14 +---------- wtpsplit/utils.py | 10 ++++---- 4 files changed, 52 insertions(+), 20 deletions(-) create mode 100644 configs/peft/lora_lyrics.json diff --git a/configs/peft/lora.json b/configs/peft/lora.json index 33e01a8f..c3e67af4 100644 --- a/configs/peft/lora.json +++ b/configs/peft/lora.json @@ -1,6 +1,6 @@ { "model_name_or_path": "xlmr-3l-v3_look48_lc0.1-mix2", - "output_dir": "xlmr-3l-v4_LL_lora_r8_a16_ep30", + "output_dir": "xlmr-3l-v4_LL_lora_r8_a16_ep30_s1000", "block_size": 256, "eval_stride": 128, "do_train": true, @@ -32,5 +32,7 @@ "log_level": "warning", "adapter_config": "lora[r=8,alpha=16]", "weight_decay": 0.0, - "auxiliary_remove_prob": 0.0 + "auxiliary_remove_prob": 0.0, + "train_adapter": true, + "subsample": 1000 } \ No newline at end of file diff --git a/configs/peft/lora_lyrics.json b/configs/peft/lora_lyrics.json new file mode 100644 index 00000000..10df35ec --- /dev/null +++ b/configs/peft/lora_lyrics.json @@ -0,0 +1,42 @@ +{ + "model_name_or_path": "xlmr-12l-v3_lc0.1-mix2", + "output_dir": "xlmr-12l-v4_lora_r8_a16_qkv-int-out_ep30_mldbW-verses_s1000", + "block_size": 256, + "eval_stride": 128, + "do_train": true, + "do_eval": true, + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "evaluation_strategy": "epoch", + "dataloader_num_workers": 1, + "preprocessing_num_workers": 1, + "learning_rate": 3e-4, + "fp16": false, + "num_train_epochs": 30, + "logging_steps": 50, + "report_to": "wandb", + "wandb_project": "lyrics-peft", + "save_steps": 100000000, + "remove_unused_columns": false, + "one_sample_per_line": true, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_ratio": 0.1, + "non_punctuation_sample_ratio": null, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", + "adapter_config": "lora[r=8,alpha=16,dropout=0.1,intermediate_lora=True,output_lora=True,attn_matrices=['q','k','v']]", + "weight_decay": 0.0, + "auxiliary_remove_prob": 0.0, + "text_path": "data/mldbW_verses_strip_n_strip_single_f.pt", + "skip_eval_loss": false, + "shuffle": false, + "train_adapter": true, + "subsample": 1000 +} \ No newline at end of file diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index a21bed23..bd6d7538 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -360,18 +360,6 @@ def maybe_pad(text): remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], desc="Grouping", ) - else: - if args.use_subwords: - # add back the special tokens for every sample - with training_args.main_process_first(): - dataset = dataset.map( - lambda x: { - "input_ids": [tokenizer.convert_tokens_to_ids(tokenizer.bos_token)] - + x["input_ids"] - + [tokenizer.convert_tokens_to_ids(tokenizer.eos_token)] - }, - batched=False, - ) return dataset @@ -463,7 +451,7 @@ def maybe_pad(text): # print some samples from the dataset count = 0 - while count < 3: + while count < 1: index = random.choice(range(len(train_dataset))) sample = train_dataset[index] diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index e26a66b7..040fd7a0 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -121,8 +121,8 @@ def get_subword_label_dict(label_args, tokenizer): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i logger.info( - f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}" - ) + # f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}" + # ) if token_id == tokenizer.unk_token_id: n_unks += 1 if label_args.use_all_labels: @@ -135,9 +135,9 @@ def get_subword_label_dict(label_args, tokenizer): and not any(i.isdigit() for i in token) ): label_dict[token_idx] = 1 + Constants.AUX_OFFSET + i - logger.warning( - f"Special auxiliary character {c} has token ID {token_idx} and label {label_dict[token_idx]}, decoded: {tokenizer.decode([token_idx])}" - ) + # logger.warning( + # f"Special auxiliary character {c} has token ID {token_idx} and label {label_dict[token_idx]}, decoded: {tokenizer.decode([token_idx])}" + # ) logger.info(f"found {n_unks} UNK tokens in auxiliary characters") From bad5b8f5309385ee8e18062fb6f5d8df99c78909 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 10 May 2024 09:36:03 +0000 Subject: [PATCH 171/262] short seqs: no packing --- wtpsplit/train/train_adapter.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index bd6d7538..f53f370f 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -103,6 +103,7 @@ def prepare_dataset( shuffle=False, split="train", subsample: Union[None, int, float] = None, + one_sample_per_line: bool = False ): with training_args.main_process_first(): # maybe we use more than 1 lang later at once. @@ -114,7 +115,7 @@ def prepare_dataset( if dataset is None: return None - if args.one_sample_per_line or isinstance(dataset[0], list): + if one_sample_per_line or isinstance(dataset[0], list): processed_dataset = [] for chunk in dataset: processed_chunk = {} @@ -334,7 +335,7 @@ def maybe_pad(text): } if args.pack_samples: - assert not args.one_sample_per_line + assert not one_sample_per_line if args.use_subwords: with training_args.main_process_first(): @@ -350,7 +351,7 @@ def maybe_pad(text): with training_args.main_process_first(): dataset = dataset.rename_column(args.text_column, "input_ids") - if not args.one_sample_per_line: + if not one_sample_per_line: with training_args.main_process_first(): dataset = dataset.map( group_texts, @@ -414,6 +415,11 @@ def maybe_pad(text): # used later to filter out special tokens special_tokens_ids = set(tokenizer.all_special_ids) special_tokens_ids.discard(custom_token_id) + + if "short" in dataset_name: + one_sample_per_line = True + else: + one_sample_per_line = args.one_sample_per_line model = Model( backbone, @@ -432,6 +438,7 @@ def maybe_pad(text): dataset_name=dataset_name, shuffle=False, split="valid", + one_sample_per_line=one_sample_per_line, ) logger.warning(f"Valid ds for {lang} {dataset_name} has {len(valid_dataset)} examples.") @@ -442,7 +449,8 @@ def maybe_pad(text): dataset_name=dataset_name, shuffle=args.shuffle, split="train", - subsample=args.subsample, + subsample=args.subsample, + one_sample_per_line=one_sample_per_line, ) if train_dataset is None or valid_dataset is None: logger.warning(f"Skipping {lang} {dataset_name} due to missing data.") From 983ff2913e92f9ebe1cb1c0918e1fa075a417a65 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 10 May 2024 09:48:25 +0000 Subject: [PATCH 172/262] fix --- wtpsplit/train/train_adapter.py | 3 +++ wtpsplit/utils.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index f53f370f..e2891a4a 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -132,6 +132,9 @@ def prepare_dataset( # ) processed_dataset.append(processed_chunk) dataset = datasets.Dataset.from_list(processed_dataset) + if subsample: + # 10k sentences -> 1k documents. + subsample *= 0.1 else: dataset = datasets.Dataset.from_list( diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 040fd7a0..024764c3 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -120,7 +120,7 @@ def get_subword_label_dict(label_args, tokenizer): for i, c in enumerate(Constants.PUNCTUATION_CHARS): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i - logger.info( + # logger.info( # f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}" # ) if token_id == tokenizer.unk_token_id: From 0f7722ad2ea251e0de557e950aeca3936a96f4f5 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 10 May 2024 11:49:12 +0000 Subject: [PATCH 173/262] fix list of lists subsampling --- wtpsplit/train/train_adapter.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index e2891a4a..ef34d9e9 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -125,16 +125,11 @@ def prepare_dataset( ) # join all chunks processed_chunk[args.text_column] = "\n".join(chunk) - # corrupt - # TODO: corrupt for lyrics. - # processed_chunk[args.text_column] = corrupt( - # processed_chunk[args.text_column], do_lowercase, do_remove_punct - # ) processed_dataset.append(processed_chunk) dataset = datasets.Dataset.from_list(processed_dataset) if subsample: # 10k sentences -> 1k documents. - subsample *= 0.1 + subsample = subsample // 10 else: dataset = datasets.Dataset.from_list( From e6cd1966a8aa93306b644ef77c9540d0bdb97fc3 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 10 May 2024 11:53:26 +0000 Subject: [PATCH 174/262] sync --- configs/peft/lora_ted.json | 40 +++++++++++++++++++ .../evaluate_sepp_nlg_2021_subtask1.py | 4 +- wtpsplit/evaluation/intrinsic_ted.py | 2 - 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 configs/peft/lora_ted.json diff --git a/configs/peft/lora_ted.json b/configs/peft/lora_ted.json new file mode 100644 index 00000000..3c5283d3 --- /dev/null +++ b/configs/peft/lora_ted.json @@ -0,0 +1,40 @@ +{ + "model_name_or_path": "xlmr-12l-v3_lc0.1-mix2-FT", + "output_dir": "xlmr-12L-FT-TED_lora-v2_ep30_s1000", + "block_size": 256, + "eval_stride": 128, + "do_train": true, + "do_eval": true, + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 1, + "preprocessing_num_workers": 8, + "learning_rate": 3e-4, + "fp16": false, + "num_train_epochs": 30, + "logging_steps": 50, + "report_to": "wandb", + "wandb_project": "sentence-peft-v2", + "save_steps": 100000000, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_ratio": 0.1, + "non_punctuation_sample_ratio": null, + "prediction_loss_only": true, + "use_auxiliary": false, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", + "adapter_config": "lora[r=16,alpha=32,intermediate_lora=True]", + "weight_decay": 0.0, + "auxiliary_remove_prob": 0.0, + "text_path": "data/ted2020.pth", + "train_adapter": "true", + "eval_every": 1000000, + "subsample": 10000 +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py b/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py index 88a6e0ac..88b479fd 100644 --- a/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py +++ b/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py @@ -27,7 +27,7 @@ def evaluate_subtask1(splits, langs, prediction_dir: str, supervisions, include_ ] for i, gt_tsv_file in enumerate(gt_tsv_files, 0): - print(i, gt_tsv_file) + # print(i, gt_tsv_file) basename = os.path.basename(gt_tsv_file) with open(gt_tsv_file, encoding="utf-8") as f: @@ -58,7 +58,7 @@ def evaluate_subtask1(splits, langs, prediction_dir: str, supervisions, include_ json.dump( results, open( - Constants.CACHE_DIR / "ted2020" / f"{prediction_dir}.json", + Constants.CACHE_DIR / "ted2020" / f"{prediction_dir}_TED.json", "w", ), indent=4, diff --git a/wtpsplit/evaluation/intrinsic_ted.py b/wtpsplit/evaluation/intrinsic_ted.py index e23896ee..f723be2d 100644 --- a/wtpsplit/evaluation/intrinsic_ted.py +++ b/wtpsplit/evaluation/intrinsic_ted.py @@ -146,8 +146,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # eval data for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): - if lang_code != "de" or "surprise" not in dataset_name: # FIXME - continue if dataset_name not in splits: continue try: From 41b7960f7d9e437d7f23f4a2e859066d101761b7 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 10 May 2024 11:58:48 +0000 Subject: [PATCH 175/262] only load trained ADP --- wtpsplit/evaluation/intrinsic_ted.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic_ted.py b/wtpsplit/evaluation/intrinsic_ted.py index f723be2d..662f2c34 100644 --- a/wtpsplit/evaluation/intrinsic_ted.py +++ b/wtpsplit/evaluation/intrinsic_ted.py @@ -153,7 +153,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if args.clf_from_scratch: model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) model.model.load_adapter( - args.adapter_path + "/" + dataset_name + "/" + lang_code, + args.adapter_path + "/" + "surprise_test" + "/" + lang_code, set_active=True, with_head=True, load_as="text", From 6b65157577acc86bc4020fdc12ff1a05a51b8e92 Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 10 May 2024 19:59:37 +0000 Subject: [PATCH 176/262] new data + set lora config --- configs/peft/lora.json | 6 +++--- wtpsplit/train/train_adapter.py | 18 +++++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/configs/peft/lora.json b/configs/peft/lora.json index c3e67af4..41b8596f 100644 --- a/configs/peft/lora.json +++ b/configs/peft/lora.json @@ -1,6 +1,6 @@ { "model_name_or_path": "xlmr-3l-v3_look48_lc0.1-mix2", - "output_dir": "xlmr-3l-v4_LL_lora_r8_a16_ep30_s1000", + "output_dir": "xlmr-3l-v4_LL_lora-v2_ep30_s10k", "block_size": 256, "eval_stride": 128, "do_train": true, @@ -30,9 +30,9 @@ "use_subwords": true, "custom_punctuation_file": "punctuation_xlmr_unk.txt", "log_level": "warning", - "adapter_config": "lora[r=8,alpha=16]", + "adapter_config": "lora[r=16,alpha=32,intermediate_lora=True]", "weight_decay": 0.0, "auxiliary_remove_prob": 0.0, "train_adapter": true, - "subsample": 1000 + "subsample": 10000 } \ No newline at end of file diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index ef34d9e9..5022fe9f 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -39,7 +39,7 @@ class Args: model_name_or_path: str base_model: str = "xlm-roberta-base" shuffle: bool = True - text_path: str = "data/all_data_04_05.pth" + text_path: str = "data/all_data_11_05-all.pth" include_languages: List[str] = None preprocessing_num_workers: int = 1 block_size: int = 512 @@ -103,7 +103,7 @@ def prepare_dataset( shuffle=False, split="train", subsample: Union[None, int, float] = None, - one_sample_per_line: bool = False + one_sample_per_line: bool = False, ): with training_args.main_process_first(): # maybe we use more than 1 lang later at once. @@ -386,8 +386,13 @@ def maybe_pad(text): for lang in tqdm(data.keys(), desc="Language"): if lang in args.include_languages: for dataset_name in data[lang]["sentence"].keys(): - # if dataset_name != "ted2020-corrupted" or lang != "la": - # continue + if "corrupted" in dataset_name and dataset_name != "ted2020-corrupted-asr": + print("SKIP: ", lang, dataset_name) + continue + if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): + print("SKIP: ", lang, dataset_name) + continue + print("RUNNING:", dataset_name, lang) # skip langs starting with a, b, ..., k # if not lang.startswith(tuple("k")) and not "en-de" in lang: # print(f"Skipping {lang} {dataset_name}") @@ -413,7 +418,7 @@ def maybe_pad(text): # used later to filter out special tokens special_tokens_ids = set(tokenizer.all_special_ids) special_tokens_ids.discard(custom_token_id) - + if "short" in dataset_name: one_sample_per_line = True else: @@ -447,7 +452,7 @@ def maybe_pad(text): dataset_name=dataset_name, shuffle=args.shuffle, split="train", - subsample=args.subsample, + subsample=args.subsample, one_sample_per_line=one_sample_per_line, ) if train_dataset is None or valid_dataset is None: @@ -632,4 +637,3 @@ def _mp_fn(index): if __name__ == "__main__": # try: main() - From 5ddb9f05ca8abbcc1fa05aa9a9dd79c5e03dbb0f Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 11 May 2024 06:34:48 +0000 Subject: [PATCH 177/262] fix naming --- wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py | 2 +- wtpsplit/evaluation/intrinsic_ted.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py b/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py index 88b479fd..192e2f4e 100644 --- a/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py +++ b/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py @@ -63,7 +63,7 @@ def evaluate_subtask1(splits, langs, prediction_dir: str, supervisions, include_ ), indent=4, ) - print(Constants.CACHE_DIR / "ted2020" / f"{prediction_dir}.json") + print(Constants.CACHE_DIR / "ted2020" / f"{prediction_dir}_TED.json") return results diff --git a/wtpsplit/evaluation/intrinsic_ted.py b/wtpsplit/evaluation/intrinsic_ted.py index 662f2c34..f8fc872b 100644 --- a/wtpsplit/evaluation/intrinsic_ted.py +++ b/wtpsplit/evaluation/intrinsic_ted.py @@ -337,7 +337,7 @@ def main(args): # 1 clf for each lang: train data is same for both. clfs[lang_code] = clf - gt_dir = Constants.ROOT_DIR.parent / "data" / "sepp_nlg_2021_data" / lang_code / "surprise_test" + gt_dir = Constants.ROOT_DIR.parent / "data" / "sepp_nlg_2021_data" / lang_code / dataset_name test_files = sorted([f for f in gt_dir.glob("*.tsv") if f.is_file()]) if isinstance(sentences[0], list): From b119b5ef904c54221f3966da471b011489e2d50f Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 11 May 2024 06:41:01 +0000 Subject: [PATCH 178/262] skip en legal laws --- wtpsplit/train/train_adapter.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 5022fe9f..3d499f02 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -392,9 +392,13 @@ def maybe_pad(text): if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): print("SKIP: ", lang, dataset_name) continue + if lang == "en" and dataset_name == "legal-all-laws": + # not available. + print("SKIP: ", lang, dataset_name) + continue print("RUNNING:", dataset_name, lang) # skip langs starting with a, b, ..., k - # if not lang.startswith(tuple("k")) and not "en-de" in lang: + # if lang.startswith(tuple("abcd")): # print(f"Skipping {lang} {dataset_name}") # continue # do model stuff here; otherwise, head params would be overwritten every time From a27bd8972a1e921993a143244ffc2794ada115de Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 11 May 2024 19:48:35 +0000 Subject: [PATCH 179/262] strip + new data --- wtpsplit/evaluation/intrinsic.py | 39 ++++---------------------------- 1 file changed, 4 insertions(+), 35 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index f95b0dbc..f7ae02cb 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -44,7 +44,7 @@ class Args: # } # } # TODO: for songs/etc., maybe feed in each sample separately? - eval_data_path: str = "data/all_data_04_05.pth" + eval_data_path: str = "data/all_data_11_05-all.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 @@ -57,8 +57,6 @@ class Args: max_n_test_sentences: int = sys.maxsize save_suffix: str = "" # XXX: these are not used in the current implementation! done within data.pth already. - do_lowercase: bool = False - do_remove_punct: bool = False keep_logits: bool = False skip_adaptation: bool = False skip_corrupted: bool = False @@ -92,7 +90,6 @@ def process_logits(text, model, lang_code, args): char_probs = token_to_char_probs(short_seq, tokens, current_logits, tokenizer, current_offsets_mapping) current_logits = char_probs - # TODO: extra treatment for Canine necessary? logits.append(current_logits) else: @@ -119,7 +116,7 @@ def process_logits(text, model, lang_code, args): logits = char_probs if len(model.model.config.id2label) == 2: - # Igor's models: take winning logit + # Igor's old models: take winning logit logits = np.expand_dims(logits.argmax(axis=1), axis=1) # we apply sigmoid later; convert to fake logits logits = np.log((logits + 1e-8) / (1 - logits + 1e-8)) @@ -159,10 +156,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st valid_sentences = [sample["text"].strip() for sample in valid_data if sample["lang"] == lang_code] assert len(valid_sentences) > 0 - # valid_sentences = [ - # corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - # for sentence in valid_sentences - # ] separator = Constants.SEPARATORS.get(lang_code, " ") valid_text = separator.join(valid_sentences) @@ -174,6 +167,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): if args.skip_corrupted and "corrupted" in dataset_name: continue + elif "nllb" in dataset_name: + continue try: if args.adapter_path: if args.clf_from_scratch: @@ -200,14 +195,12 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st model_path = os.path.join(args.model_path, dataset_name, "en") if not os.path.exists(model_path): model_path = args.model_path - # print(model_path) model = PyTorchWrapper( AutoModelForTokenClassification.from_pretrained(model_path).to(args.device) ) except Exception as e: print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue - # print(dataset_name) if dataset_name not in lang_group: dset_group = lang_group.create_group(dataset_name) else: @@ -215,13 +208,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"][: args.max_n_test_sentences] - # if list of lists: flatten - # if isinstance(test_sentences[0], list): - # test_sentences = [item for sublist in test_sentences for item in sublist] - # test_sentences = [ - # corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - # for sentence in test_sentences - # ] if isinstance(test_sentences[0], list): # short-seq eval: list of lists test_text = [ @@ -262,12 +248,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st train_sentences = dataset["meta"].get("train_data") if train_sentences is not None and "train_logits" not in dset_group and not args.skip_adaptation: - # if isinstance(train_sentences[0], list): - # train_sentences = [item for sublist in train_sentences for item in sublist] - # train_sentences = [ - # corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - # for sentence in train_sentences - # ] train_sentences = train_sentences[: args.max_n_train_sentences] if isinstance(train_sentences[0], list): # short-seq eval: list of lists @@ -320,10 +300,6 @@ def main(args): if args.adapter_path: save_model_path = args.adapter_path save_str = f"{save_model_path.replace('/','_')}_b{args.block_size}_s{args.stride}" - if args.do_lowercase: - save_str += "_lc" - if args.do_remove_punct: - save_str += "_rmp" eval_data = torch.load(args.eval_data_path) if args.valid_text_path is not None: @@ -384,13 +360,6 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"][: args.max_n_test_sentences] - # if isinstance(sentences[0], list): - # sentences = [item for sublist in sentences for item in sublist] - # sentences = [ - # corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - # for sentence in sentences - # ] - # check if f[lang_code][dataset_name] exists if lang_code not in f or dataset_name not in f[lang_code]: continue From 4f27691e34f2724c4a599ab56a9e55bb62376aab Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 12 May 2024 09:36:58 +0000 Subject: [PATCH 180/262] eval: skip parts of ds, exclude every kth, xlmr compat --- configs/peft/lora_lyrics_xlmr.json | 41 ++++++++++++++++ wtpsplit/evaluation/__init__.py | 27 ++++++++++- wtpsplit/evaluation/intrinsic.py | 75 +++++++++++++++++++----------- wtpsplit/extract.py | 32 ++++++++----- wtpsplit/train/train_adapter.py | 4 +- 5 files changed, 139 insertions(+), 40 deletions(-) create mode 100644 configs/peft/lora_lyrics_xlmr.json diff --git a/configs/peft/lora_lyrics_xlmr.json b/configs/peft/lora_lyrics_xlmr.json new file mode 100644 index 00000000..c232420a --- /dev/null +++ b/configs/peft/lora_lyrics_xlmr.json @@ -0,0 +1,41 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlm-roberta-base_lora-v2_ep30_mldbW-verses_bs512", + "block_size": 512, + "do_train": true, + "do_eval": true, + "per_device_train_batch_size": 32, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 2, + "eval_accumulation_steps": 8, + "evaluation_strategy": "epoch", + "dataloader_num_workers": 1, + "preprocessing_num_workers": 1, + "learning_rate": 3e-4, + "fp16": false, + "num_train_epochs": 30, + "logging_steps": 50, + "report_to": "wandb", + "wandb_project": "lyrics-peft", + "save_steps": 100000000, + "remove_unused_columns": false, + "one_sample_per_line": true, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_ratio": 0.1, + "non_punctuation_sample_ratio": null, + "prediction_loss_only": true, + "use_auxiliary": false, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", + "adapter_config": "lora[r=16,alpha=32,intermediate_lora=True]", + "weight_decay": 0.0, + "auxiliary_remove_prob": 0.0, + "text_path": "data/all_data_11_05-lyrics.pth", + "skip_eval_loss": false, + "shuffle": false, + "train_adapter": true, + "subsample": null +} \ No newline at end of file diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index 2d837124..18c99376 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -39,7 +39,9 @@ def get_labels(lang_code, sentences, after_space=True): return labels -def evaluate_sentences(lang_code, sentences, predicted_sentences, return_indices: bool = False): +def evaluate_sentences( + lang_code, sentences, predicted_sentences, return_indices: bool = False, exclude_every_k: int = 0 +): separator = Constants.SEPARATORS[lang_code] text = separator.join(sentences) @@ -47,10 +49,28 @@ def evaluate_sentences(lang_code, sentences, predicted_sentences, return_indices assert len(text) == len("".join(predicted_sentences)) labels = get_labels(lang_code, sentences) - + predicted_end_indices = np.cumsum(np.array([len(s) for s in predicted_sentences])) predictions = np.zeros_like(labels) predictions[predicted_end_indices] = 1 + + assert len(labels) == len(predictions) + + if exclude_every_k > 0: + true_end_indices = np.where(labels == 1)[0] + # every k-th from those where labels are 1 + indices_to_remove = true_end_indices[exclude_every_k-1::exclude_every_k] + + # mask for indices to keep + mask = np.ones_like(labels, dtype=bool) + mask[indices_to_remove] = False + mask[-1] = False # last is always excluded + + # remove indices + labels = labels[mask] + predictions = predictions[mask] + + assert len(labels) == len(predictions) return f1_score(labels, predictions), { "recall": recall_score(labels, predictions), @@ -102,6 +122,7 @@ def evaluate_mixture( test_x, true_sentences, return_indices, + exclude_every_k, clf, features, threshold_transformed, @@ -130,6 +151,7 @@ def evaluate_mixture( true_sentences, reconstruct_sentences(text, indices_to_sentences(text, predicted_indices_newline)), return_indices, + exclude_every_k, ) indices_newline_info = { @@ -152,6 +174,7 @@ def evaluate_mixture( true_sentences, reconstruct_sentences(text, indices_to_sentences(text, predicted_indices_transformed)), return_indices, + exclude_every_k, ) indices_transformed_info = { "true_indices": info_transformed.pop("true_indices"), diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index f7ae02cb..006c5f98 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -63,6 +63,7 @@ class Args: clf_from_scratch: bool = False return_indices: bool = False skip_punct: bool = True + exclude_every_k: int = 0 def process_logits(text, model, lang_code, args): @@ -138,7 +139,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st total_test_time = 0 # Initialize total test processing time - with h5py.File(logits_path, "a") as f, torch.no_grad(): + with h5py.File(logits_path, "w") as f, torch.no_grad(): # FIXME for lang_code in tqdm(use_langs, desc="Languages"): if args.include_langs is not None and lang_code not in args.include_langs: continue @@ -167,12 +168,32 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): if args.skip_corrupted and "corrupted" in dataset_name: continue + if "Alternative" not in dataset_name: + continue elif "nllb" in dataset_name: continue + if "corrupted" in dataset_name and dataset_name != "ted2020-corrupted-asr": + print("SKIP: ", lang_code, dataset_name) + continue + if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): + print("SKIP: ", lang_code, dataset_name) + continue + if lang_code == "en" and dataset_name == "legal-all-laws": + # not available. + print("SKIP: ", lang_code, dataset_name) + continue try: if args.adapter_path: if args.clf_from_scratch: model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) + elif model.model.classifier.out_features == 2: + # we train XLM-R using our wrapper, needs to be adapted for adapters to be loaded + model.model.classifier = torch.nn.Linear( + model.model.classifier.in_features, + 1, # FIXME: hardcoded? + ) + model.model.__class__.__name__ = 'SubwordXLMForTokenClassification' + if ( any(code in lang_code for code in ["ceb", "jv", "mn", "yo"]) and "ted2020" not in dataset_name @@ -189,15 +210,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st with_head=True, load_as="text", ) - if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( - os.path.join(args.model_path, "model.safetensors") - ): - model_path = os.path.join(args.model_path, dataset_name, "en") - if not os.path.exists(model_path): - model_path = args.model_path - model = PyTorchWrapper( - AutoModelForTokenClassification.from_pretrained(model_path).to(args.device) - ) except Exception as e: print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue @@ -339,6 +351,8 @@ def main(args): f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) save_str += f"_u{args.threshold}" + if args.exclude_every_k > 0: + save_str += f"_k{args.exclude_every_k}" # now, compute the intrinsic scores. results = {} @@ -360,9 +374,16 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"][: args.max_n_test_sentences] + if len(sentences) == 0: + continue if lang_code not in f or dataset_name not in f[lang_code]: continue + if "lyrics" in dataset_name or "short" in dataset_name: + exclude_every_k = 0 + else: + exclude_every_k = args.exclude_every_k + if "train_logits" in f[lang_code][dataset_name] and not args.skip_adaptation: feature_indices = None clf = train_mixture( @@ -386,6 +407,7 @@ def main(args): f[lang_code][dataset_name]["test_logits"][:][start:end], list(short_seq), args.return_indices, + exclude_every_k, *clf, ) score_t.append(single_score_t) @@ -395,13 +417,11 @@ def main(args): info["info_transformed"]["correct_pairwise"] if info["info_transformed"] else None ) # indices: accumulate from start - t_indices.extend( - [idx + start for idx in cur_t_indices["pred_indices"]] - if cur_t_indices and cur_t_indices["pred_indices"] - else [] + t_indices.append( + cur_t_indices["pred_indices"] if cur_t_indices and cur_t_indices["pred_indices"] else [] ) - punct_indices.extend( - [idx + start for idx in cur_punct_indices["pred_indices"]] + punct_indices.append( + cur_punct_indices["pred_indices"] if cur_punct_indices and cur_punct_indices["pred_indices"] else [] ) @@ -412,6 +432,7 @@ def main(args): f[lang_code][dataset_name]["test_logits"][:], sentences, args.return_indices, + exclude_every_k, *clf, ) @@ -428,7 +449,7 @@ def main(args): acc_u = [] score_u = [] u_indices, true_indices = [], [] - length = 0 + length = [] for i, short_seq in enumerate(sentences): start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] single_score_u, _, info, cur_u_indices, _ = evaluate_mixture( @@ -436,22 +457,24 @@ def main(args): f[lang_code][dataset_name]["test_logits"][:][start:end], list(short_seq), args.return_indices, + exclude_every_k, *clf, ) score_u.append(single_score_u) acc_u.append(info["info_newline"]["correct_pairwise"]) # indices: accumulate from start - u_indices.extend( - [idx + start for idx in cur_u_indices["pred_indices"]] if cur_u_indices["pred_indices"] else [] - ) - true_indices.extend( - [idx + start for idx in cur_u_indices["true_indices"]] if cur_u_indices["true_indices"] else [] - ) - length += cur_u_indices["length"] - 1 + u_indices.append(cur_u_indices["pred_indices"] if cur_u_indices["pred_indices"] else []) + true_indices.append(cur_u_indices["true_indices"] if cur_u_indices["true_indices"] else []) + length.append(cur_u_indices["length"]) else: score_u, _, _, u_indices, _ = evaluate_mixture( - lang_code, f[lang_code][dataset_name]["test_logits"][:], sentences, args.return_indices, *clf + lang_code, + f[lang_code][dataset_name]["test_logits"][:], + sentences, + args.return_indices, + exclude_every_k, + *clf, ) if isinstance(sentences[0], list): @@ -551,7 +574,7 @@ def main(args): "w", ), default=int, - # indent=4, + indent=4, ) print(Constants.CACHE_DIR / "intrinsic" / f"{save_str}_IDX.json") print("Indices saved to file.") diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 41ffa712..e1bbd853 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -85,7 +85,9 @@ def extract( """ if "xlm" in model.config.model_type: use_subwords = True - tokenizer = AutoTokenizer.from_pretrained(model.config.base_model) + tokenizer = AutoTokenizer.from_pretrained( + model.config.base_model if hasattr(model.config, "base_model") else model.config._name_or_path + ) tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) tokens = tokenizer(batch_of_texts, return_offsets_mapping=True, verbose=False) # remove CLS and SEP tokens, they are added later anyhow @@ -172,10 +174,7 @@ def extract( # containers for the final logits all_logits = [ np.zeros( - ( - length, - model.config.num_labels - ), + (length, model.config.num_labels), dtype=np.float16, ) for length in text_lengths @@ -220,12 +219,23 @@ def extract( kwargs = {"language_ids": language_ids[: len(batch_attention_mask)]} if uses_lang_adapters else {} - logits = model( - input_ids=batch_input_ids if use_subwords else None, - hashed_ids=None if use_subwords else batch_input_hashes, - attention_mask=batch_attention_mask, - **kwargs, - )["logits"] + if use_subwords and model.config.model_type == "xlm-roberta": + # TODO: generalize + import torch + with torch.no_grad(): + logits = model.model( + input_ids=torch.from_numpy(batch_input_ids).to(model.model.device), + attention_mask=torch.from_numpy(batch_attention_mask).to(model.model.device), + **kwargs, + )["logits"].cpu().numpy() + else: + logits = model( + input_ids=batch_input_ids if use_subwords else None, + hashed_ids=None if use_subwords else batch_input_hashes, + attention_mask=batch_attention_mask, + **kwargs, + )["logits"] + if use_subwords: logits = logits[:, 1:-1, :] # remove CLS and SEP tokens diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 3d499f02..e4435290 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -392,13 +392,15 @@ def maybe_pad(text): if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): print("SKIP: ", lang, dataset_name) continue + if "media" in dataset_name: + continue if lang == "en" and dataset_name == "legal-all-laws": # not available. print("SKIP: ", lang, dataset_name) continue print("RUNNING:", dataset_name, lang) # skip langs starting with a, b, ..., k - # if lang.startswith(tuple("abcd")): + # if not lang.startswith(tuple("k")) and not "en-de" in lang: # print(f"Skipping {lang} {dataset_name}") # continue # do model stuff here; otherwise, head params would be overwritten every time From 66b97f412f2c38db46bd74ab1c1cde946a4b82cd Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 12 May 2024 09:40:21 +0000 Subject: [PATCH 181/262] some fixes --- wtpsplit/evaluation/intrinsic.py | 37 +++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 006c5f98..ca9401d8 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -139,7 +139,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st total_test_time = 0 # Initialize total test processing time - with h5py.File(logits_path, "w") as f, torch.no_grad(): # FIXME + with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in tqdm(use_langs, desc="Languages"): if args.include_langs is not None and lang_code not in args.include_langs: continue @@ -168,8 +168,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): if args.skip_corrupted and "corrupted" in dataset_name: continue - if "Alternative" not in dataset_name: - continue elif "nllb" in dataset_name: continue if "corrupted" in dataset_name and dataset_name != "ted2020-corrupted-asr": @@ -178,10 +176,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): print("SKIP: ", lang_code, dataset_name) continue - if lang_code == "en" and dataset_name == "legal-all-laws": - # not available. - print("SKIP: ", lang_code, dataset_name) - continue try: if args.adapter_path: if args.clf_from_scratch: @@ -193,7 +187,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st 1, # FIXME: hardcoded? ) model.model.__class__.__name__ = 'SubwordXLMForTokenClassification' - if ( any(code in lang_code for code in ["ceb", "jv", "mn", "yo"]) and "ted2020" not in dataset_name @@ -210,6 +203,15 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st with_head=True, load_as="text", ) + if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( + os.path.join(args.model_path, "model.safetensors") + ): + model_path = os.path.join(args.model_path, dataset_name, "en") + if not os.path.exists(model_path): + model_path = args.model_path + model = PyTorchWrapper( + AutoModelForTokenClassification.from_pretrained(model_path).to(args.device) + ) except Exception as e: print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue @@ -219,7 +221,14 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dset_group = lang_group[dataset_name] if "test_logits" not in dset_group: - test_sentences = dataset["data"][: args.max_n_test_sentences] + test_sentences = dataset["data"] + if not test_sentences: + continue + if isinstance(test_sentences[0], list): + max_n_test_sentences = args.max_n_test_sentences // 10 + else: + max_n_test_sentences = args.max_n_test_sentences + test_sentences = test_sentences[:max_n_test_sentences] if isinstance(test_sentences[0], list): # short-seq eval: list of lists test_text = [ @@ -373,7 +382,15 @@ def main(args): indices[lang_code] = {} for dataset_name, dataset in dsets["sentence"].items(): - sentences = dataset["data"][: args.max_n_test_sentences] + sentences = dataset["data"] + if not sentences: + continue + if isinstance(sentences[0], list): + # documents: only 10% of documents. 1000 sentences --> 100 docs + max_n_sentences = args.max_n_test_sentences // 10 + else: + max_n_sentences = args.max_n_test_sentences + sentences = sentences[:max_n_sentences] if len(sentences) == 0: continue if lang_code not in f or dataset_name not in f[lang_code]: From 57545b118ddc6ca296bfb037861a649abe0de1fc Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 12 May 2024 10:12:26 +0000 Subject: [PATCH 182/262] add entity (for v4) --- wtpsplit/train/train_adapter.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index e4435290..e7e7a031 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -374,7 +374,8 @@ def maybe_pad(text): # 1 wandb run for all language-dataset combinations if "wandb" in training_args.report_to and training_args.process_index == 0: - wandb.init(name=wandb_name, project=args.wandb_project, group=wandb_name) + # TODO: don't hardcode entity + wandb.init(name=wandb_name, project=args.wandb_project, group=wandb_name, entity="markus_583") wandb.config.update(args) wandb.config.update(training_args) wandb.config.update(label_args) From 70a9aea127833b74b3344911bfc69892cacc38fe Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 12 May 2024 10:20:12 +0000 Subject: [PATCH 183/262] LLM + new defaults --- wtpsplit/evaluation/intrinsic.py | 6 +- wtpsplit/evaluation/llm_sentence.py | 714 ++++++++++++++++++++++++++++ 2 files changed, 717 insertions(+), 3 deletions(-) create mode 100644 wtpsplit/evaluation/llm_sentence.py diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index ca9401d8..4f3cf5c0 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -54,16 +54,16 @@ class Args: custom_language_list: str = None threshold: float = 0.01 max_n_train_sentences: int = 1000 - max_n_test_sentences: int = sys.maxsize + max_n_test_sentences: int = 1000 save_suffix: str = "" # XXX: these are not used in the current implementation! done within data.pth already. keep_logits: bool = False skip_adaptation: bool = False skip_corrupted: bool = False clf_from_scratch: bool = False - return_indices: bool = False + return_indices: bool = True skip_punct: bool = True - exclude_every_k: int = 0 + exclude_every_k: int = 10 def process_logits(text, model, lang_code, args): diff --git a/wtpsplit/evaluation/llm_sentence.py b/wtpsplit/evaluation/llm_sentence.py new file mode 100644 index 00000000..87c4a4d9 --- /dev/null +++ b/wtpsplit/evaluation/llm_sentence.py @@ -0,0 +1,714 @@ +import json +import logging +import os +from dataclasses import dataclass +from datetime import datetime +from typing import List +import re + +import numpy as np +import h5py +import pandas as pd +import torch +from genalog.text import alignment +from pandarallel import pandarallel +from sklearn.metrics import f1_score, precision_score, recall_score +from tqdm import tqdm +from transformers import HfArgumentParser +import cohere +import replicate + +from wtpsplit.evaluation import get_labels +from wtpsplit.evaluation.intrinsic import corrupt +from wtpsplit.utils import Constants + +pandarallel.initialize(progress_bar=False, nb_workers=32) + +logging.getLogger().setLevel(logging.WARNING) + +SYSTEM_PROMPT = ( + "Separate the following text into sentences by adding a newline between each sentence. " + "Do not modify the text in any way and keep the exact ordering of words! " + "If you modify it, remove or add anything, you get fined $1000 per word. " + "Provide a concise answer without any introduction. " + "Indicate sentence boundaries only via a single newline, no more than this! " +) + +LYRICS_PROMPT = ( + "Separate the following song's lyrics into semantic units " + "(e.g., verse, chorus, bridge, intro/outro, etc - " + "similar to how they are presented in a lyrics booklet) " + "via double newlines, but do not annotate them. " + "Only include the song in the output, no annotations. " + "Do not modify the song in any way and keep the exact ordering of words! " + "If you modify it, remove or add anything, you get fined $1000 per word. " + "Indicate semantic units by double newlines. " +) + + +@dataclass +class Args: + eval_data_path: str = "data/all_data_11_05" + type: str = "lyrics" # all, lyrics + llm_provider: str = "cohere" # cohere, replicate + label_delimiter: str = "|" # NOT \n or \n\n + gap_char = "@" + # model: str = "mistralai/mixtral-8x7b-instruct-v0.1" + # model: str = "meta/meta-llama-3-70b-instruct" + model: str = "command-r" + save_suffix: str = "Pv2-TEST2" + include_langs: List[str] = None + custom_language_list: str = None + max_n_test_sentences: int = 100 + k: int = 10 + n_shots: int = 0 + + +def replicate_provider(text, train_data, lang_code, args): + api = replicate.Client(api_token=os.environ["REPLICATE_API_TOKEN"]) + llm_prompt = prompt_factory(text, train_data, lang_code, args) + # print(llm_prompt) + llm_input = { + "system_prompt": "", + "prompt": llm_prompt, + # "max_new_tokens": 50_000, + "max_tokens": 50_000, + } + llm_output = api.run(args.model, llm_input) + llm_output = "".join(llm_output) + # print(llm_output) + return llm_output + + +def cohere_provider(text, train_data, lang_code, args): + api = cohere.Client(os.environ["COHERE_API_TOKEN"]) + llm_prompt = prompt_factory(text, train_data, lang_code, args) + # print(llm_prompt) + llm_output = api.chat(model=args.model, preamble="", message=llm_prompt, max_tokens=4000, seed=42).text.replace( + "\\n", "\n" + ) + # print(llm_output) + return llm_output + + +def cohere_tokenize(text, args): + api = cohere.Client(os.environ["COHERE_API_TOKEN"]) + tokens = api.tokenize(text=text, model=args.model, offline=False).token_strings + return tokens + + +def load_h5_to_dataframe(filepath, args): + with h5py.File(filepath, "r") as h5file: + all_data = [] + + for lang_code, lang_group in h5file.items(): + for dataset_name, dset_group in lang_group.items(): + if ( + "test_preds" in dset_group + and "test_chunks" in dset_group + and not any("0" in key for key in dset_group.keys()) + ): + test_preds_data = dset_group["test_preds"].asstr()[:] + test_chunks_data = dset_group["test_chunks"].asstr()[:] + + if len(test_preds_data) != len(test_chunks_data): + raise ValueError("Mismatched lengths between test_preds and test_chunks.") + + # append item with metadata + for test_pred, test_chunk in zip(test_preds_data, test_chunks_data): + all_data.append( + { + "lang": lang_code, + "dataset_name": dataset_name, + "test_preds": test_pred, + "test_chunks": test_chunk.tolist(), + "doc_id": -1, + } + ) + elif any("0" in key for key in dset_group.keys()): + # each list is saved with x_i, x_i+1, ... + doc_ids = [key.split("_")[-1] for key in dset_group.keys() if "test_preds" in key] + for doc_id in doc_ids: + test_preds_data = dset_group[f"test_preds_{doc_id}"].asstr()[:] + test_chunks_data = dset_group[f"test_chunks_{doc_id}"].asstr()[:] + + if len(test_preds_data) != len(test_chunks_data): + raise ValueError("Mismatched lengths between test_preds and test_chunks.") + + # append item with metadata + for test_pred, test_chunk in zip(test_preds_data, test_chunks_data): + all_data.append( + { + "lang": lang_code, + "dataset_name": dataset_name, + "test_preds": test_pred, + "test_chunks": test_chunk.tolist(), + "doc_id": int(doc_id), + } + ) + else: + pass + + df = pd.DataFrame(all_data) + return df + + +def load_or_compute_logits(args, eval_data, save_str: str = None): + logits_dir = Constants.CACHE_DIR / "llm_sent" / "preds" + logits_dir.mkdir(parents=True, exist_ok=True) + logits_path = logits_dir / f"{save_str}.h5" + + if args.custom_language_list is not None: + with open(args.custom_language_list, "r") as f: + # file is a csv: l1,l2,... + use_langs = f.read().strip().split(",") + else: + use_langs = eval_data.keys() + + with h5py.File(logits_path, "a") as f: + for lang_code in tqdm(use_langs, desc="Languages"): + if args.include_langs is not None and lang_code not in args.include_langs: + continue + + print(f"Processing {lang_code}...") + if lang_code not in f: + lang_group = f.create_group(lang_code) + else: + lang_group = f[lang_code] + for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): + if "corrupted" in dataset_name and ( + dataset_name != "ted2020-corrupted-asr" and not ("lyrics" in dataset_name and "asr" in dataset_name) + ): + print("SKIP: ", lang_code, dataset_name) + continue + if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): + print("SKIP: ", lang_code, dataset_name) + continue + if "social-media" in dataset_name: + continue + if dataset_name not in lang_group: + dset_group = lang_group.create_group(dataset_name) + else: + dset_group = lang_group[dataset_name] + if "test_preds" not in dset_group and "test_preds_0" not in dset_group: + test_sentences = dataset["data"] + if not test_sentences: + continue + if isinstance(test_sentences[0], list): + max_n_test_sentences = args.max_n_test_sentences // 10 + else: + max_n_test_sentences = args.max_n_test_sentences + test_sentences = test_sentences[:max_n_test_sentences] + if isinstance(test_sentences[0], list): + # list of lists: chunk each sublist + if "short" in dataset_name or "lyrics" in dataset_name: + # only here: no chunking + test_chunks = test_sentences + test_texts = [ + [Constants.SEPARATORS[lang_code].join(test_chunk).strip()] for test_chunk in test_chunks + ] + else: + test_chunks = [ + [test_sentences[i][j : j + args.k] for j in range(0, len(test_sentences[i]), args.k)] + for i in range(len(test_sentences)) + ] + # last batch for each sublist: pad with None to enable saving w/ h5py + for i in range(len(test_chunks)): + test_chunks[i][-1] += [""] * (args.k - len(test_chunks[i][-1])) + # join sentences in each chunk + test_texts = [ + [ + Constants.SEPARATORS[lang_code].join(test_chunk).strip() + for test_chunk in test_sublist + ] + for test_sublist in test_chunks + ] + if args.n_shots: + train_sentences = eval_data[lang_code]["sentence"][dataset_name]["meta"]["train_data"][:100] + if train_sentences: + if "short" in dataset_name: + # here: entire samples (tweets e.g.) + train_chunks = train_sentences + train_texts = ["\n".join(train_chunk).strip() for train_chunk in train_chunks] + elif "lyrics" in dataset_name: + # here: entire samples (songs) + train_chunks = train_sentences + train_texts = ["\n\n".join(train_chunk).strip() for train_chunk in train_chunks] + else: + # flatten to have diversity among lengthy few-shot examples + train_sentences = [item for sublist in train_sentences[:100] for item in sublist] + train_chunks = [ + train_sentences[i : i + args.k] for i in range(0, len(train_sentences), args.k) + ] + train_texts = ["\n".join(train_chunk).strip() for train_chunk in train_chunks] + else: + train_texts = None + else: + train_texts = None + for i in tqdm(range(len(test_texts))): + test_preds = get_llm_preds(test_texts[i], train_texts, lang_code, args, verbose=False) + dset_group.create_dataset(f"test_preds_{i}", data=test_preds) + dset_group.create_dataset( + f"test_chunks_{i}", + data=[test_chunks[i]] + if "short" in dataset_name or "lyrics" in dataset_name + else test_chunks[i], + ) + + else: + test_chunks = [test_sentences[i : i + args.k] for i in range(0, len(test_sentences), args.k)] + # last batch: pad with None to enable saving w/ h5py + test_chunks[-1] += [""] * (args.k - len(test_chunks[-1])) + test_texts = [ + Constants.SEPARATORS[lang_code].join(test_chunk).strip() for test_chunk in test_chunks + ] + if args.n_shots: + train_sentences = eval_data[lang_code]["sentence"][dataset_name]["meta"]["train_data"] + if train_sentences: + train_sentences = train_sentences[:100] + train_chunks = [ + train_sentences[i : i + args.k] for i in range(0, len(train_sentences), args.k) + ] + train_texts = ["\n".join(train_chunk).strip() for train_chunk in train_chunks] + else: + train_texts = None + else: + train_texts = None + test_preds = get_llm_preds(test_texts, train_texts, lang_code, args) + dset_group.create_dataset("test_preds", data=test_preds) + dset_group.create_dataset("test_chunks", data=test_chunks) + return h5py.File(logits_path, "r") + + +def get_llm_preds( + test_texts, + train_data, + lang_code, + args, + verbose=True, +): + if args.llm_provider == "cohere": + llm_provider = cohere_provider + elif args.llm_provider == "replicate": + llm_provider = replicate_provider + else: + raise ValueError(f"Unknown LLM provider: {args.llm_provider}") + output = [] + for test_chunk in tqdm(test_texts, disable=not verbose): + try: + output.append(llm_provider(test_chunk, train_data, lang_code, args)) + except Exception as e: + print(f"API Error: {e}") + output.append("") + return output + + +def prompt_factory(test_chunk, train_data, lang_code, args): + n_shots = args.n_shots if train_data is not None else 0 + main_prompt = LYRICS_PROMPT if args.type == "lyrics" else SYSTEM_PROMPT + + prompt_start = ( + main_prompt + + f"When provided with multiple examples, you are to respond only to the last one: # Output {n_shots + 1}." + if n_shots + else main_prompt + ) + + llm_prompt = ( + prompt_start + + "\n\n" + + create_few_shot_prompt(train_data, lang_code, args) + + (f"# Input {n_shots + 1}:\n\n" if n_shots else "# Input:\n\n") + + test_chunk + + (f"\n\n# Output {n_shots + 1}:\n\n" if n_shots else "\n\n# Output:\n\n") + ) + return llm_prompt + + +def create_few_shot_prompt(train_data, lang_code, args): + if train_data is None: + return "" + num_samples = min(args.n_shots, len(train_data)) + samples_prompt = "" + counter = 1 + for _, sample in enumerate(train_data[:num_samples]): + current_input = sample.replace("\n", Constants.SEPARATORS.get(lang_code, " ")) + samples_prompt += f"# Input {counter}:\n\n{current_input}\n\n# Output {counter}:\n\n{sample}\n\n" + counter += 1 + return samples_prompt + + +def postprocess_llm_output(llm_output): + """ + Cleans the LLM output by removing specified characters and cleaning up lines. + """ + if llm_output == "": + # API refusal + return "" + llm_output = llm_output.strip(" -\n") + + # neither of them must be present in the output. + llm_output = llm_output.replace(args.gap_char, " ") + llm_output = llm_output.replace(args.label_delimiter, " ") + llm_output = llm_output.replace("\n\n", args.label_delimiter) + llm_output = llm_output.replace("\n", args.label_delimiter) + + # remove leading #, # Input, : + llm_output = llm_output.strip("#").strip().strip("Input").strip(":").strip() + # remove trailing #, Output, . + llm_output = llm_output.strip(":").strip("Output").strip().strip("#") + # replace multiple occurences of label_delimiter with only 1 + llm_output = re.sub(r"{0}+".format(re.escape(args.label_delimiter)), args.label_delimiter, llm_output) + + # Split into lines, strip each line, remove empty lines, and join back into a single string + llm_output = " ".join([line.strip() for line in llm_output.split("\n") if line.strip()]) + + return llm_output + + +def align_llm_output(row): + """ + Attempts to align input and output, including formatting. + """ + try: + aligned_in, aligned_llm = alignment.align( + row["test_chunks"], + row["test_preds"], + gap_char=args.gap_char, + ) + # same as aligned_in, aligned_llm, but with additional formatting. Latter used to debug only. + formatted_alignment = alignment._format_alignment(aligned_in, aligned_llm).split("\n") + except: + print("Alignment failed: ", row.name) + formatted_alignment = [row["test_chunks"], "", " " * len(row["test_chunks"])] + return pd.Series( + { + "alignment": formatted_alignment[1], + "alignment_in": formatted_alignment[0], + "alignment_out": formatted_alignment[2], + } + ) + + +def get_llm_metrics(row): + gt = row["alignment_in"] + preds = row["alignment_out"] + + # find gap_char idcs + gap_indices = [m.start() for m in re.finditer(args.gap_char, gt)] + # remove gap_char indices from gt and preds --> same len as original! + gt = "".join([char for i, char in enumerate(gt) if i not in gap_indices]) + preds = "".join([char for i, char in enumerate(preds) if i not in gap_indices]) + + assert ( + args.label_delimiter.join([chunk.replace(args.label_delimiter, "") for chunk in row.test_chunks]).count( + args.label_delimiter + ) + if isinstance(row.test_chunks, list) + else row.test_chunks.count(args.label_delimiter) == len(gt.split(args.label_delimiter)) - 1 + ) + # GT + sentences = gt.split(args.label_delimiter) + labels = get_labels(row.lang, sentences) + if not ("lyrics" in row.dataset_name or "short" in row.dataset_name): + # XXX: must be logically aligned with evaluate_sentences in wtpsplit/evaluation/__init__.py + # label at end is excluded! As used for main tables --> comparable. + labels = labels[:-1] + + chunk_len = len(labels) + true_indices = np.where(labels)[0].tolist() + + if len(gt) == len(preds): + # alignment is good. + predicted_sentences = preds.split(args.label_delimiter) + else: + # alignment not found, bad LLM prediction. + return (0.0, 0.0, 0.0, true_indices, [], chunk_len) + if row["test_preds"] == "": + # API refusal + return (0.0, 0.0, 0.0, true_indices, [], chunk_len) + predictions = get_labels(row.lang, predicted_sentences) + if not ("lyrics" in row.dataset_name or "short" in row.dataset_name): + predictions = predictions[:-1] + assert len(labels) == len(predictions) + + f1, precision, recall = ( + f1_score(labels, predictions, zero_division=0), + precision_score(labels, predictions, zero_division=0), + recall_score(labels, predictions, zero_division=0), + ) + + if len(row["test_chunks"].split(args.label_delimiter)) != args.k and ( + row["doc_id"] == -1 or row["is_last_and_truncated"] + ): + # re-scale to original + # XXX: hacky, but we later take mean over lang-dataset combination w/o this, final chunk is overrepresented + f1 = f1 * len(row["test_chunks"].split(args.label_delimiter)) / args.k + precision = precision * len(row["test_chunks"].split(args.label_delimiter)) / args.k + recall = recall * len(row["test_chunks"].split(args.label_delimiter)) / args.k + + # Compute F1 score + pred_indices = np.where(predictions)[0].tolist() + return f1, precision, recall, true_indices, pred_indices, chunk_len + + +def calc_hallucination_deletion_rate(row): + gt = row["alignment_in"] + preds = row["alignment_out"] + if all([char == args.gap_char for char in preds]): + # all @ + return 0.0, 0.0 + + + hallucination_count = 0 + deletion_count = 0 + + for gt_char, pred_char in zip(gt, preds): + if gt_char == args.gap_char and pred_char != args.label_delimiter: + hallucination_count += 1 + if pred_char == args.gap_char and gt_char != args.label_delimiter: + deletion_count += 1 + + deletion_rate = deletion_count / len(gt) + hallucination_rate = hallucination_count / len(gt) + return hallucination_rate, deletion_rate + + +def main(args): + print(args) + + # Define paths for different categories + avg_dir = Constants.CACHE_DIR / "llm_sent" / "AVG" + default_dir = Constants.CACHE_DIR / "llm_sent" / "results" + alignment_dir = Constants.CACHE_DIR / "llm_sent" / "alignments" + + # Ensure directories exist + avg_dir.mkdir(parents=True, exist_ok=True) + default_dir.mkdir(parents=True, exist_ok=True) + alignment_dir.mkdir(parents=True, exist_ok=True) + + if args.type == "all": + eval_data_path = args.eval_data_path + "-all.pth" + elif args.type == "lyrics": + eval_data_path = args.eval_data_path + "-lyrics.pth" + else: + raise ValueError(f"Unknown type: {args.type}") + + assert len(args.gap_char) == len(args.label_delimiter) == 1 + + eval_data = torch.load(eval_data_path) + + save_str = ( + f"{args.model.split('/')[-1]}_k{args.k}_n{args.max_n_test_sentences}_s{args.n_shots}{args.save_suffix}" + ).replace("/", "_") + save_str += f"-{args.type}" + + print(save_str) + + outputs = load_or_compute_logits(args, eval_data, save_str) + + # create df based on test_chunks and test_logits + df = load_h5_to_dataframe(outputs.filename, args) + print("Loaded df.") + + # postprocess + df["test_preds"] = df.apply(lambda row: postprocess_llm_output(row["test_preds"]), axis=1) + + # remove empty strings (just needed for h5py storage) + df["test_chunks"] = df["test_chunks"].apply(lambda x: [item for item in x if item != ""]) + # replace \n + # NOTE: length and labels remain the same, crucially! + df["test_chunks"] = df["test_chunks"].apply( + lambda x: args.label_delimiter.join( + chunk.replace(args.label_delimiter, " ").replace(args.gap_char, " ") for chunk in x + ) + ) + print("Processed df.") + + # needed to later down-scale F1 score contributions for last chunk + df["is_last"] = df["doc_id"] != df["doc_id"].shift(-1) + dataset_condition = ~df["dataset_name"].str.contains("lyrics|short") + df["is_last_and_truncated"] = df["is_last"] & dataset_condition + + # align with Needleman Wunsch algorithm + alignment = df.parallel_apply(align_llm_output, axis=1) + df = df.join(alignment) + print("Aligned df.") + + ( + df["f1"], + df["precision"], + df["recall"], + df["true_indices"], + df["pred_indices"], + df["chunk_len"], + ) = zip(*df.apply(get_llm_metrics, axis=1)) + + df["hallucination_rate"], df["deletion_rate"] = zip( + *df.apply( + calc_hallucination_deletion_rate, + axis=1, + ) + ) + # get stats + doc_level_metrics = df.groupby(["lang", "dataset_name", "doc_id"]).agg( + { + "f1": ["mean"], + "precision": ["mean"], + "recall": ["mean"], + } + ) + # mean of mean --> macro F1 (for list of lists) + metrics = doc_level_metrics.groupby(["lang", "dataset_name"]).mean().reset_index() + + # metrics without API complaints + doc_level_metrics_success = ( + df[df.test_preds != ""] + .groupby(["lang", "dataset_name", "doc_id"]) + .agg( + { + "f1": ["mean"], + "precision": ["mean"], + "recall": ["mean"], + } + ) + ) + metrics_success = doc_level_metrics_success.groupby(["lang", "dataset_name"]).mean().reset_index() + df["cumulative_chunk_len"] = df.groupby(["lang", "dataset_name", "doc_id"])["chunk_len"].cumsum() - df["chunk_len"] + # group by chunk len and get max. --> same for all rows of a doc belonging to a lang-dataset combination + + # adjust indices by adding cumulative chunk length + def adjust_indices(indices, cumulative_len): + return [index + cumulative_len for index in indices] + + # adjust indices in each row + df["true_indices_adj"] = df.apply( + lambda row: adjust_indices(row["true_indices"], row["cumulative_chunk_len"]), axis=1 + ) + df["pred_indices_adj"] = df.apply( + lambda row: adjust_indices(row["pred_indices"], row["cumulative_chunk_len"]), axis=1 + ) + + out_dict = { + "metrics": { + "f1": metrics["f1"]["mean"].mean(), + "success_f1": metrics_success["f1"]["mean"].mean(), + "precision": metrics["precision"]["mean"].mean(), + "success_precision": metrics_success["precision"]["mean"].mean(), + "recall": metrics["recall"]["mean"].mean(), + "success_recall": metrics_success["recall"]["mean"].mean(), + "median": df["f1"].median(), + "std": df["f1"].std(), + "min": df["f1"].min(), + "min_lang": df.loc[df["f1"].idxmin()]["lang"], + "max": df["f1"].max(), + "max_lang": df.loc[df["f1"].idxmax()]["lang"], + "hallucination_rate": df["hallucination_rate"].mean(), + "deletion_rate": df["deletion_rate"].mean(), + }, + "include_langs": args.include_langs, + "max_n_test_sentences": args.max_n_test_sentences, + "k": args.k, + "n_success": len(df[df["test_preds"] != ""]), + "success_rate": len(df[df["test_preds"] != ""]) / len(df), + "model": args.model, + "time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + "system_prompt": SYSTEM_PROMPT if args.type == "all" else LYRICS_PROMPT, + } + + fine_grained_dict = {} + fine_grained_indices = {} + for lang in df["lang"].unique(): + fine_grained_dict[lang] = {} + fine_grained_indices[lang] = {} + for dataset in df["dataset_name"].unique(): + local_df = df[(df["lang"] == lang) & (df["dataset_name"] == dataset)] + if len(local_df) == 0: + continue + results = { + "f1": local_df["f1"].mean(), + "precision": local_df["precision"].mean(), + "recall": local_df["recall"].mean(), + "success_f1": local_df[local_df["test_preds"] != ""]["f1"].mean(), + "success_precision": local_df[local_df["test_preds"] != ""]["precision"].mean(), + "success_recall": local_df[local_df["test_preds"] != ""]["recall"].mean(), + "success_rate": len(local_df[local_df["test_preds"] != ""]) / len(local_df) if len(local_df) else 0, + "hallucination_rate": local_df["hallucination_rate"].mean(), + "deletion_rate": local_df["deletion_rate"].mean(), + } + # indices: concat all lists + if any(local_df["doc_id"] > -1): + # group by doc id first + fine_grained_indices[lang][dataset] = {} + fine_grained_indices[lang][dataset]["true_indices"] = [] + fine_grained_indices[lang][dataset]["pred_indices"] = [] + fine_grained_indices[lang][dataset]["length"] = [] + for doc_id in local_df["doc_id"].unique(): + fine_grained_indices[lang][dataset]["true_indices"].append( + [ + item + for sublist in local_df[local_df["doc_id"] == doc_id]["true_indices_adj"].tolist() + for item in sublist + ] + ) + fine_grained_indices[lang][dataset]["pred_indices"].append( + [ + item + for sublist in local_df[local_df["doc_id"] == doc_id]["pred_indices_adj"].tolist() + for item in sublist + ] + ) + fine_grained_indices[lang][dataset]["length"].append( + local_df[local_df["doc_id"] == doc_id]["chunk_len"].sum() + ) + else: + fine_grained_indices[lang][dataset] = { + "true_indices": [item for sublist in local_df["true_indices_adj"].tolist() for item in sublist], + "pred_indices": [item for sublist in local_df["pred_indices_adj"].tolist() for item in sublist], + "length": local_df["chunk_len"].sum(), + } + + fine_grained_dict[lang][dataset] = results + + json.dump( + out_dict, + open( + avg_dir / f"{save_str}.json", + "w", + encoding="utf-8", + ), + indent=4, + ) + json.dump( + fine_grained_dict, + open( + default_dir / f"{save_str}.json", + "w", + encoding="utf-8", + ), + indent=4, + ) + json.dump( + fine_grained_indices, + open( + alignment_dir / f"{save_str}_IDX.json", + "w", + ), + default=int, + indent=4, + ) + print(alignment_dir / f"{save_str}_IDX.json") + print("Indices saved to file.") + + df.to_csv(default_dir / "csv" / f"{save_str}.csv", index=False) + print(out_dict) + print(save_str) + + print(avg_dir / f"{save_str}.json") + print(default_dir / f"{save_str}.json") + # TODO: count how many left outs/hallucinations are from LLM. + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + main(args) From 53277dc5a61052fb36711e3b732fe6f383f5d573 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 12 May 2024 10:52:17 +0000 Subject: [PATCH 184/262] docs: only legal + shuffle --- wtpsplit/evaluation/intrinsic.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 4f3cf5c0..1e5da3ac 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -385,9 +385,12 @@ def main(args): sentences = dataset["data"] if not sentences: continue - if isinstance(sentences[0], list): + if isinstance(sentences[0], list) and "lyrics" not in dataset_name and "short" not in dataset_name: # documents: only 10% of documents. 1000 sentences --> 100 docs max_n_sentences = args.max_n_test_sentences // 10 + # shuffle sentences + np.random.seed(42) + sentences = np.random.permutation(sentences).tolist() else: max_n_sentences = args.max_n_test_sentences sentences = sentences[:max_n_sentences] From 0f544ef991875aab5318c5e08d25b38e2dad8bc2 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 12 May 2024 10:57:51 +0000 Subject: [PATCH 185/262] also shuffle in forward --- wtpsplit/evaluation/intrinsic.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 1e5da3ac..9aba62ac 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -186,7 +186,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st model.model.classifier.in_features, 1, # FIXME: hardcoded? ) - model.model.__class__.__name__ = 'SubwordXLMForTokenClassification' + model.model.__class__.__name__ = "SubwordXLMForTokenClassification" if ( any(code in lang_code for code in ["ceb", "jv", "mn", "yo"]) and "ted2020" not in dataset_name @@ -224,11 +224,19 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st test_sentences = dataset["data"] if not test_sentences: continue - if isinstance(test_sentences[0], list): - max_n_test_sentences = args.max_n_test_sentences // 10 + if ( + isinstance(test_sentences[0], list) + and "lyrics" not in dataset_name + and "short" not in dataset_name + ): + # documents: only 10% of documents. 1000 sentences --> 100 docs + max_n_sentences = args.max_n_test_sentences // 10 + # shuffle sentences + np.random.seed(42) + test_sentences = np.random.permutation(test_sentences).tolist() else: - max_n_test_sentences = args.max_n_test_sentences - test_sentences = test_sentences[:max_n_test_sentences] + max_n_sentences = args.max_n_test_sentences + test_sentences = test_sentences[:max_n_sentences] if isinstance(test_sentences[0], list): # short-seq eval: list of lists test_text = [ From 312a5c2d10089f6fdcfd1290c40bec5ccbbea3df Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 12 May 2024 11:49:49 +0000 Subject: [PATCH 186/262] also shuffle here --- wtpsplit/evaluation/llm_sentence.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/wtpsplit/evaluation/llm_sentence.py b/wtpsplit/evaluation/llm_sentence.py index 87c4a4d9..98f005fc 100644 --- a/wtpsplit/evaluation/llm_sentence.py +++ b/wtpsplit/evaluation/llm_sentence.py @@ -194,11 +194,19 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): test_sentences = dataset["data"] if not test_sentences: continue - if isinstance(test_sentences[0], list): - max_n_test_sentences = args.max_n_test_sentences // 10 + if ( + isinstance(test_sentences[0], list) + and "lyrics" not in dataset_name + and "short" not in dataset_name + ): + # documents: only 10% of documents. 1000 sentences --> 100 docs + max_n_sentences = args.max_n_test_sentences // 10 + # shuffle sentences + np.random.seed(42) + test_sentences = np.random.permutation(test_sentences).tolist() else: - max_n_test_sentences = args.max_n_test_sentences - test_sentences = test_sentences[:max_n_test_sentences] + max_n_sentences = args.max_n_test_sentences + test_sentences = test_sentences[:max_n_sentences] if isinstance(test_sentences[0], list): # list of lists: chunk each sublist if "short" in dataset_name or "lyrics" in dataset_name: @@ -458,7 +466,6 @@ def calc_hallucination_deletion_rate(row): if all([char == args.gap_char for char in preds]): # all @ return 0.0, 0.0 - hallucination_count = 0 deletion_count = 0 From bc514cf0bb96b1c07b3d289b5662ee940af89de0 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 14 May 2024 08:19:58 +0000 Subject: [PATCH 187/262] v2 --- wtpsplit/evaluation/llm_sentence.py | 385 ++++++++++++++-------------- 1 file changed, 190 insertions(+), 195 deletions(-) diff --git a/wtpsplit/evaluation/llm_sentence.py b/wtpsplit/evaluation/llm_sentence.py index 98f005fc..3adb0adc 100644 --- a/wtpsplit/evaluation/llm_sentence.py +++ b/wtpsplit/evaluation/llm_sentence.py @@ -12,17 +12,15 @@ import torch from genalog.text import alignment from pandarallel import pandarallel -from sklearn.metrics import f1_score, precision_score, recall_score from tqdm import tqdm from transformers import HfArgumentParser import cohere import replicate -from wtpsplit.evaluation import get_labels -from wtpsplit.evaluation.intrinsic import corrupt +from wtpsplit.evaluation import get_labels, evaluate_sentences_llm from wtpsplit.utils import Constants -pandarallel.initialize(progress_bar=False, nb_workers=32) +pandarallel.initialize(progress_bar=True, nb_workers=32) logging.getLogger().setLevel(logging.WARNING) @@ -201,9 +199,9 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): ): # documents: only 10% of documents. 1000 sentences --> 100 docs max_n_sentences = args.max_n_test_sentences // 10 - # shuffle sentences + # shuffle docs np.random.seed(42) - test_sentences = np.random.permutation(test_sentences).tolist() + test_sentences = np.random.permutation(test_sentences).tolist() else: max_n_sentences = args.max_n_test_sentences test_sentences = test_sentences[:max_n_sentences] @@ -346,10 +344,8 @@ def create_few_shot_prompt(train_data, lang_code, args): return samples_prompt -def postprocess_llm_output(llm_output): - """ - Cleans the LLM output by removing specified characters and cleaning up lines. - """ +def postprocess_llm_output(llm_output, lang): + """Clean LLM output by removing specified characters and cleaning up lines.""" if llm_output == "": # API refusal return "" @@ -375,9 +371,7 @@ def postprocess_llm_output(llm_output): def align_llm_output(row): - """ - Attempts to align input and output, including formatting. - """ + """Align input and output, including formatting.""" try: aligned_in, aligned_llm = alignment.align( row["test_chunks"], @@ -398,73 +392,69 @@ def align_llm_output(row): ) -def get_llm_metrics(row): +def process_alignment(row, args): gt = row["alignment_in"] preds = row["alignment_out"] + old_label_count = preds.count("|") + + # we need the following to ensure that no label is overwritten. + processed_gt = [] + processed_preds = [] + + pred_index = 0 # separate index for preds to handle skipped characters in gt + + for gt_char in gt: + if gt_char == args.gap_char: + # check if the corresponding preds char is a label delimiter and needs to be shifted + if pred_index < len(preds) and preds[pred_index] == args.label_delimiter: + # only shift if there's room and it's safe to shift back + if processed_preds: + processed_preds[-1] = args.label_delimiter + # do not add the gap character from gt to processed_gt + else: + processed_gt.append(gt_char) + # only add characters from preds if not out of bounds + if pred_index < len(preds): + processed_preds.append(preds[pred_index]) + + # Increment regardless of whether it's a gap to keep alignment + pred_index += 1 + + gt = "".join(processed_gt) + preds = "".join(processed_preds) + # re-check + new_label_count = preds.count(args.label_delimiter) + if old_label_count != new_label_count: + # happens in some garbage LLM predictions, which can be easily picked up, so it is fine (favors LLM; less FPs) + print("Gap char not removed correctly or labels shifted improperly: ", row.name, row.lang, row.dataset_name) + assert len(gt) == len(preds), f"Length mismatch: {len(gt)} vs {len(preds)}" + + if Constants.SEPARATORS.get(row["lang"], " ") == "": + # ensure that, after label calculation, both seqs are of same lengths & labels at proper positions. + missing_indices = [ + i for i, char in enumerate(gt) if char == args.label_delimiter and preds[i] != args.label_delimiter + ] + extra_indices = [ + i for i, char in enumerate(preds) if char == args.label_delimiter and gt[i] != args.label_delimiter + ] + preds = "".join([char for i, char in enumerate(preds) if i not in missing_indices]) + for i in extra_indices: + preds = preds[:i] + " " + preds[i:] - # find gap_char idcs - gap_indices = [m.start() for m in re.finditer(args.gap_char, gt)] - # remove gap_char indices from gt and preds --> same len as original! - gt = "".join([char for i, char in enumerate(gt) if i not in gap_indices]) - preds = "".join([char for i, char in enumerate(preds) if i not in gap_indices]) - - assert ( - args.label_delimiter.join([chunk.replace(args.label_delimiter, "") for chunk in row.test_chunks]).count( - args.label_delimiter - ) - if isinstance(row.test_chunks, list) - else row.test_chunks.count(args.label_delimiter) == len(gt.split(args.label_delimiter)) - 1 - ) # GT sentences = gt.split(args.label_delimiter) labels = get_labels(row.lang, sentences) - if not ("lyrics" in row.dataset_name or "short" in row.dataset_name): - # XXX: must be logically aligned with evaluate_sentences in wtpsplit/evaluation/__init__.py - # label at end is excluded! As used for main tables --> comparable. - labels = labels[:-1] - - chunk_len = len(labels) - true_indices = np.where(labels)[0].tolist() - - if len(gt) == len(preds): - # alignment is good. - predicted_sentences = preds.split(args.label_delimiter) - else: - # alignment not found, bad LLM prediction. - return (0.0, 0.0, 0.0, true_indices, [], chunk_len) - if row["test_preds"] == "": - # API refusal - return (0.0, 0.0, 0.0, true_indices, [], chunk_len) - predictions = get_labels(row.lang, predicted_sentences) - if not ("lyrics" in row.dataset_name or "short" in row.dataset_name): - predictions = predictions[:-1] - assert len(labels) == len(predictions) - - f1, precision, recall = ( - f1_score(labels, predictions, zero_division=0), - precision_score(labels, predictions, zero_division=0), - recall_score(labels, predictions, zero_division=0), - ) - - if len(row["test_chunks"].split(args.label_delimiter)) != args.k and ( - row["doc_id"] == -1 or row["is_last_and_truncated"] - ): - # re-scale to original - # XXX: hacky, but we later take mean over lang-dataset combination w/o this, final chunk is overrepresented - f1 = f1 * len(row["test_chunks"].split(args.label_delimiter)) / args.k - precision = precision * len(row["test_chunks"].split(args.label_delimiter)) / args.k - recall = recall * len(row["test_chunks"].split(args.label_delimiter)) / args.k - - # Compute F1 score - pred_indices = np.where(predictions)[0].tolist() - return f1, precision, recall, true_indices, pred_indices, chunk_len + # PREDS + pred_sentences = preds.split(args.label_delimiter) + predictions = get_labels(row.lang, pred_sentences) + return labels, predictions def calc_hallucination_deletion_rate(row): gt = row["alignment_in"] preds = row["alignment_out"] if all([char == args.gap_char for char in preds]): - # all @ + # all @: alignment failure, just garbage output return 0.0, 0.0 hallucination_count = 0 @@ -481,6 +471,31 @@ def calc_hallucination_deletion_rate(row): return hallucination_rate, deletion_rate +def calculate_global_metric_averages(results): + """dict of results[lang_code][dataset_name] -> dict of metrics -> float""" + metric_totals = {} + metric_counts = {} + + for lang_datasets in results.values(): + for metrics in lang_datasets.values(): + # aggregate + for metric_key, metric_value in metrics.items(): + if isinstance(metric_value, (int, float)): + if metric_key not in metric_totals: + metric_totals[metric_key] = 0 + metric_counts[metric_key] = 0 + + metric_totals[metric_key] += metric_value + metric_counts[metric_key] += 1 + + # global average + global_metric_averages = { + metric: metric_totals[metric] / metric_counts[metric] for metric in metric_totals if metric_counts[metric] > 0 + } + + return global_metric_averages + + def main(args): print(args) @@ -517,39 +532,44 @@ def main(args): # create df based on test_chunks and test_logits df = load_h5_to_dataframe(outputs.filename, args) print("Loaded df.") + # df = df[df["lang"].isin(["ja", "en"])] # DEBUG # postprocess - df["test_preds"] = df.apply(lambda row: postprocess_llm_output(row["test_preds"]), axis=1) + df["test_preds"] = df.apply(lambda row: postprocess_llm_output(row["test_preds"], row["lang"]), axis=1) # remove empty strings (just needed for h5py storage) df["test_chunks"] = df["test_chunks"].apply(lambda x: [item for item in x if item != ""]) # replace \n # NOTE: length and labels remain the same, crucially! - df["test_chunks"] = df["test_chunks"].apply( - lambda x: args.label_delimiter.join( - chunk.replace(args.label_delimiter, " ").replace(args.gap_char, " ") for chunk in x - ) + df["test_chunks"] = df.apply( + lambda row: args.label_delimiter.join( + chunk.replace(args.label_delimiter, " ").replace(args.gap_char, " ") for chunk in row["test_chunks"] + ), + axis=1, ) print("Processed df.") - # needed to later down-scale F1 score contributions for last chunk - df["is_last"] = df["doc_id"] != df["doc_id"].shift(-1) - dataset_condition = ~df["dataset_name"].str.contains("lyrics|short") - df["is_last_and_truncated"] = df["is_last"] & dataset_condition - # align with Needleman Wunsch algorithm alignment = df.parallel_apply(align_llm_output, axis=1) df = df.join(alignment) print("Aligned df.") - ( - df["f1"], - df["precision"], - df["recall"], - df["true_indices"], - df["pred_indices"], - df["chunk_len"], - ) = zip(*df.apply(get_llm_metrics, axis=1)) + def concatenate_texts(group): + # refusal: @@@@ --> taken into account with success_METRIC + # alignment failure: " " --> garbage output, no pos. labels + return pd.Series( + { + "test_preds": args.label_delimiter.join(group["test_preds"]), + "test_chunks": args.label_delimiter.join(group["test_chunks"]), + "alignment": args.label_delimiter.join(group["alignment"]), + "alignment_in": args.label_delimiter.join(group["alignment_in"]), + "alignment_out": args.label_delimiter.join(group["alignment_out"]), + } + ) + + # concat chunks + # old_df = df.copy() + df = df.groupby(["lang", "dataset_name", "doc_id"]).apply(concatenate_texts).reset_index() df["hallucination_rate"], df["deletion_rate"] = zip( *df.apply( @@ -557,62 +577,92 @@ def main(args): axis=1, ) ) - # get stats - doc_level_metrics = df.groupby(["lang", "dataset_name", "doc_id"]).agg( - { - "f1": ["mean"], - "precision": ["mean"], - "recall": ["mean"], - } - ) - # mean of mean --> macro F1 (for list of lists) - metrics = doc_level_metrics.groupby(["lang", "dataset_name"]).mean().reset_index() - - # metrics without API complaints - doc_level_metrics_success = ( - df[df.test_preds != ""] - .groupby(["lang", "dataset_name", "doc_id"]) - .agg( - { - "f1": ["mean"], - "precision": ["mean"], - "recall": ["mean"], - } - ) - ) - metrics_success = doc_level_metrics_success.groupby(["lang", "dataset_name"]).mean().reset_index() - df["cumulative_chunk_len"] = df.groupby(["lang", "dataset_name", "doc_id"])["chunk_len"].cumsum() - df["chunk_len"] - # group by chunk len and get max. --> same for all rows of a doc belonging to a lang-dataset combination - # adjust indices by adding cumulative chunk length - def adjust_indices(indices, cumulative_len): - return [index + cumulative_len for index in indices] + results = {} + indices = {} + for lang_code in df["lang"].unique(): + results[lang_code] = {} + indices[lang_code] = {} + for dataset_name in df["dataset_name"].unique(): + if "lyrics" in dataset_name or "short" in dataset_name: + exclude_every_k = 0 + else: + exclude_every_k = args.k + n_docs = len(df[(df["lang"] == lang_code) & (df["dataset_name"] == dataset_name)]) + if n_docs == 0: + # combination non-existing + continue + indices[lang_code][dataset_name] = {} + if n_docs > 1: + # list of lists, TODO + rows = df[(df["lang"] == lang_code) & (df["dataset_name"] == dataset_name)] + metrics = [] + for i, row in rows.iterrows(): + # apply processing before label calculation + labels, preds = process_alignment(row, args) + doc_metrics = evaluate_sentences_llm( + labels, preds, return_indices=True, exclude_every_k=exclude_every_k + ) + doc_metrics["length"] = [doc_metrics["length"]] + doc_metrics["hallucination_rate"] = row["hallucination_rate"] + doc_metrics["deletion_rate"] = row["deletion_rate"] + doc_metrics["refused"] = [ + int(len(set(row["alignment_out"])) == 1 and args.gap_char in set(row["alignment_out"])) + ] + metrics.append(doc_metrics) + # Initialization and collection of data + avg_results = {} + concat_indices = {} + for doc in metrics: + for key, value in doc.items(): + if isinstance(value, (float, int)): + # Store all numeric results + if key not in avg_results: + avg_results[key] = [] + avg_results[key + "_success"] = [] # Initialize success list + + # Append to the general results + avg_results[key].append(value) + + # Append to success results if not refused + if not doc["refused"][0]: + avg_results[key + "_success"].append(value) + elif isinstance(value, list): + # Concatenate list values, handle 'refused' by only adding the first item of the list + if key not in concat_indices: + concat_indices[key] = [] + if key == "refused" or key == "length": + concat_indices[key].append(value[0]) # Only the first item for 'refused' + else: + concat_indices[key].append(value) # Extend with the full list otherwise - # adjust indices in each row - df["true_indices_adj"] = df.apply( - lambda row: adjust_indices(row["true_indices"], row["cumulative_chunk_len"]), axis=1 - ) - df["pred_indices_adj"] = df.apply( - lambda row: adjust_indices(row["pred_indices"], row["cumulative_chunk_len"]), axis=1 - ) + # Calculate the average for numeric values and success metrics + for key in list(avg_results): # Use list to include newly added success keys safely during iteration + if avg_results[key]: # Ensure there's data to calculate average + avg_results[key] = sum(avg_results[key]) / len(avg_results[key]) + + # Store the results and indices + results[lang_code][dataset_name] = avg_results + indices[lang_code][dataset_name] = concat_indices + else: + # one long string + row = df[(df["lang"] == lang_code) & (df["dataset_name"] == dataset_name)].iloc[0] + + # apply processing before label calculation + labels, preds = process_alignment(row, args) + # metrics! + metrics = evaluate_sentences_llm(labels, preds, return_indices=True, exclude_every_k=exclude_every_k) + if lang_code == "am": + print(metrics) + metrics["hallucination_rate"] = row["hallucination_rate"] + metrics["deletion_rate"] = row["deletion_rate"] + indices[lang_code][dataset_name]["true_indices"] = metrics.pop("true_indices") + indices[lang_code][dataset_name]["predicted_indices"] = metrics.pop("predicted_indices") + indices[lang_code][dataset_name]["length"] = metrics.pop("length") + results[lang_code][dataset_name] = metrics out_dict = { - "metrics": { - "f1": metrics["f1"]["mean"].mean(), - "success_f1": metrics_success["f1"]["mean"].mean(), - "precision": metrics["precision"]["mean"].mean(), - "success_precision": metrics_success["precision"]["mean"].mean(), - "recall": metrics["recall"]["mean"].mean(), - "success_recall": metrics_success["recall"]["mean"].mean(), - "median": df["f1"].median(), - "std": df["f1"].std(), - "min": df["f1"].min(), - "min_lang": df.loc[df["f1"].idxmin()]["lang"], - "max": df["f1"].max(), - "max_lang": df.loc[df["f1"].idxmax()]["lang"], - "hallucination_rate": df["hallucination_rate"].mean(), - "deletion_rate": df["deletion_rate"].mean(), - }, + "metrics": calculate_global_metric_averages(results), "include_langs": args.include_langs, "max_n_test_sentences": args.max_n_test_sentences, "k": args.k, @@ -623,60 +673,6 @@ def adjust_indices(indices, cumulative_len): "system_prompt": SYSTEM_PROMPT if args.type == "all" else LYRICS_PROMPT, } - fine_grained_dict = {} - fine_grained_indices = {} - for lang in df["lang"].unique(): - fine_grained_dict[lang] = {} - fine_grained_indices[lang] = {} - for dataset in df["dataset_name"].unique(): - local_df = df[(df["lang"] == lang) & (df["dataset_name"] == dataset)] - if len(local_df) == 0: - continue - results = { - "f1": local_df["f1"].mean(), - "precision": local_df["precision"].mean(), - "recall": local_df["recall"].mean(), - "success_f1": local_df[local_df["test_preds"] != ""]["f1"].mean(), - "success_precision": local_df[local_df["test_preds"] != ""]["precision"].mean(), - "success_recall": local_df[local_df["test_preds"] != ""]["recall"].mean(), - "success_rate": len(local_df[local_df["test_preds"] != ""]) / len(local_df) if len(local_df) else 0, - "hallucination_rate": local_df["hallucination_rate"].mean(), - "deletion_rate": local_df["deletion_rate"].mean(), - } - # indices: concat all lists - if any(local_df["doc_id"] > -1): - # group by doc id first - fine_grained_indices[lang][dataset] = {} - fine_grained_indices[lang][dataset]["true_indices"] = [] - fine_grained_indices[lang][dataset]["pred_indices"] = [] - fine_grained_indices[lang][dataset]["length"] = [] - for doc_id in local_df["doc_id"].unique(): - fine_grained_indices[lang][dataset]["true_indices"].append( - [ - item - for sublist in local_df[local_df["doc_id"] == doc_id]["true_indices_adj"].tolist() - for item in sublist - ] - ) - fine_grained_indices[lang][dataset]["pred_indices"].append( - [ - item - for sublist in local_df[local_df["doc_id"] == doc_id]["pred_indices_adj"].tolist() - for item in sublist - ] - ) - fine_grained_indices[lang][dataset]["length"].append( - local_df[local_df["doc_id"] == doc_id]["chunk_len"].sum() - ) - else: - fine_grained_indices[lang][dataset] = { - "true_indices": [item for sublist in local_df["true_indices_adj"].tolist() for item in sublist], - "pred_indices": [item for sublist in local_df["pred_indices_adj"].tolist() for item in sublist], - "length": local_df["chunk_len"].sum(), - } - - fine_grained_dict[lang][dataset] = results - json.dump( out_dict, open( @@ -687,7 +683,7 @@ def adjust_indices(indices, cumulative_len): indent=4, ) json.dump( - fine_grained_dict, + results, open( default_dir / f"{save_str}.json", "w", @@ -696,7 +692,7 @@ def adjust_indices(indices, cumulative_len): indent=4, ) json.dump( - fine_grained_indices, + indices, open( alignment_dir / f"{save_str}_IDX.json", "w", @@ -713,7 +709,6 @@ def adjust_indices(indices, cumulative_len): print(avg_dir / f"{save_str}.json") print(default_dir / f"{save_str}.json") - # TODO: count how many left outs/hallucinations are from LLM. if __name__ == "__main__": From 1d5d66a53278e07be7956b74583c866d6dab3680 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 14 May 2024 12:23:31 +0000 Subject: [PATCH 188/262] add avg --- .../evaluation/evaluate_sepp_nlg_2021_subtask1.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py b/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py index 192e2f4e..fb73bd94 100644 --- a/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py +++ b/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py @@ -10,6 +10,9 @@ def evaluate_subtask1(splits, langs, prediction_dir: str, supervisions, include_n_documents) -> None: results = {} + avg_holder = {} + for supervision in supervisions: + avg_holder[supervision] = 0 for lang_code in langs: results[lang_code] = {} for split in splits: @@ -53,8 +56,15 @@ def evaluate_subtask1(splits, langs, prediction_dir: str, supervisions, include_ all_predicted_labels.extend(pred_labels) eval_result = classification_report(all_gt_labels, all_predicted_labels, output_dict=True) - pprint(eval_result, indent=4) + # pprint(eval_result, indent=4) + print(eval_result["1"]["f1-score"]) + avg_holder[supervision] += eval_result["1"]["f1-score"] results[lang_code][split][supervision] = eval_result + results["avg"] = {} + for supervision in supervisions: + avg_holder[supervision] /= len(langs) + results["avg"][supervision] = avg_holder[supervision] + print(avg_holder) json.dump( results, open( From 34de88addfc8ae50db05dfd0af0223e99931780a Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 14 May 2024 14:03:53 +0000 Subject: [PATCH 189/262] skip non/empty lists --- wtpsplit/evaluation/intrinsic_pairwise.py | 4 ++++ wtpsplit/train/train.py | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index 7b995ec1..4dff0684 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -291,6 +291,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if "test_logits" not in dset_group: test_sentences = dataset["data"][: args.max_n_test_sentences] + if not test_sentences: + continue if isinstance(test_sentences[0], list): continue all_pairs_test = generate_k_mers( @@ -428,6 +430,8 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"][: args.max_n_test_sentences] + if not sentences: + continue if isinstance(sentences[0], list): continue sent_k_mers = generate_k_mers( diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index cd0c9d22..ea9cad87 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -105,6 +105,7 @@ class Args: lookahead_split_layers: Optional[int] = None sample_non_whitespace: int = 1 + def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: bool = False): all_input_ids = [] all_labels = [] @@ -585,6 +586,11 @@ def compute_metrics(trainer): for dataset_name, dataset in lang_data["sentence"].items(): # if "corrupt" in dataset_name: # continue + if not dataset["data"][0]: + continue + + if isinstance(dataset["data"][0], list): + continue score, info = evaluate_sentence( lang_code, dataset["data"], From 2e80a9d43abab57776caeb4cba549d33ea4a2f3a Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 14 May 2024 14:05:25 +0000 Subject: [PATCH 190/262] fix xlmr base + qol --- wtpsplit/evaluation/intrinsic.py | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 9aba62ac..91f0608f 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -180,7 +180,8 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if args.adapter_path: if args.clf_from_scratch: model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) - elif model.model.classifier.out_features == 2: + # elif model.model.classifier.out_features == 2: + elif args.model_path == "xlm-roberta-base" or args.model_path == "xlm-roberta-large": # we train XLM-R using our wrapper, needs to be adapted for adapters to be loaded model.model.classifier = torch.nn.Linear( model.model.classifier.in_features, @@ -203,15 +204,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st with_head=True, load_as="text", ) - if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( - os.path.join(args.model_path, "model.safetensors") - ): - model_path = os.path.join(args.model_path, dataset_name, "en") - if not os.path.exists(model_path): - model_path = args.model_path - model = PyTorchWrapper( - AutoModelForTokenClassification.from_pretrained(model_path).to(args.device) - ) except Exception as e: print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue @@ -337,17 +329,7 @@ def main(args): valid_data = None print("Loading model...") - # if model_path does not contain a model, take first subfolder - if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( - os.path.join(args.model_path, "model.safetensors") - ): - try: - model_path = os.path.join(args.model_path, os.listdir(args.model_path)[0], "en") - except: - model_path = args.model_path - print(model_path) - else: - model_path = args.model_path + model_path = args.model_path model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) if args.adapter_path: model_type = model.model.config.model_type @@ -361,14 +343,16 @@ def main(args): model.model.classifier = torch.nn.Sequential(clf, torch.nn.Linear(clf.out_features, 1)) save_str += f"{args.save_suffix}" - if args.max_n_test_sentences < sys.maxsize: + if args.max_n_test_sentences < sys.maxsize or args.max_n_test_sentences != -1: save_str += f"_n{args.max_n_test_sentences}" + if args.max_n_test_sentences == -1: + args.max_n_test_sentences = sys.maxsize # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) save_str += f"_u{args.threshold}" - if args.exclude_every_k > 0: + if args.exclude_every_k > 0 or "lyrics" in args.eval_data_path: save_str += f"_k{args.exclude_every_k}" # now, compute the intrinsic scores. From e6a88f8d8e55254bbc5ebb7d2e8b8e61399e4fdb Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 14 May 2024 14:16:36 +0000 Subject: [PATCH 191/262] only extra-subsample legal --- wtpsplit/train/train_adapter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index e7e7a031..ce71442e 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -127,7 +127,7 @@ def prepare_dataset( processed_chunk[args.text_column] = "\n".join(chunk) processed_dataset.append(processed_chunk) dataset = datasets.Dataset.from_list(processed_dataset) - if subsample: + if subsample and "legal" in dataset_name: # 10k sentences -> 1k documents. subsample = subsample // 10 From 53fe503433641b81b371a0226dd78d55bb986b76 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 14 May 2024 14:27:12 +0000 Subject: [PATCH 192/262] use ALL samples; baselines --- wtpsplit/evaluation/download_spacy.py | 34 ++++++ wtpsplit/evaluation/intrinsic.py | 2 +- wtpsplit/evaluation/intrinsic_baselines.py | 125 ++++++++++++++++++--- 3 files changed, 146 insertions(+), 15 deletions(-) create mode 100644 wtpsplit/evaluation/download_spacy.py diff --git a/wtpsplit/evaluation/download_spacy.py b/wtpsplit/evaluation/download_spacy.py new file mode 100644 index 00000000..0c1dfc31 --- /dev/null +++ b/wtpsplit/evaluation/download_spacy.py @@ -0,0 +1,34 @@ +import subprocess + +SPACY_LANG_TO_DP_MODEL = { + "ca": "ca_core_news_sm", + "zh": "zh_core_web_sm", + "hr": "hr_core_news_sm", + "da": "da_core_news_sm", + "nl": "nl_core_news_sm", + "en": "en_core_web_sm", + "fi": "fi_core_news_sm", + "fr": "fr_core_news_sm", + "de": "de_core_news_sm", + "el": "el_core_news_sm", + "it": "it_core_news_sm", + "ja": "ja_core_news_sm", + "ko": "ko_core_news_sm", + "lt": "lt_core_news_sm", + "mk": "mk_core_news_sm", + "nb": "nb_core_news_sm", + "pl": "pl_core_news_sm", + "pt": "pt_core_news_sm", + "ro": "ro_core_news_sm", + "ru": "ru_core_news_sm", + "es": "es_core_news_sm", + "sv": "sv_core_news_sm", + "uk": "uk_core_news_sm", +} + +def download_models(): + for lang, model in SPACY_LANG_TO_DP_MODEL.items(): + subprocess.run(["python3", "-m", "spacy", "download", model]) + +if __name__ == "__main__": + download_models() diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 91f0608f..844f1695 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -54,7 +54,7 @@ class Args: custom_language_list: str = None threshold: float = 0.01 max_n_train_sentences: int = 1000 - max_n_test_sentences: int = 1000 + max_n_test_sentences: int = sys.maxsize save_suffix: str = "" # XXX: these are not used in the current implementation! done within data.pth already. keep_logits: bool = False diff --git a/wtpsplit/evaluation/intrinsic_baselines.py b/wtpsplit/evaluation/intrinsic_baselines.py index 2a0a8c2a..3384ecf9 100644 --- a/wtpsplit/evaluation/intrinsic_baselines.py +++ b/wtpsplit/evaluation/intrinsic_baselines.py @@ -18,31 +18,64 @@ ) from wtpsplit.utils import Constants +def split_language_data(eval_data): + new_eval_data = {} + + for lang_code, lang_data in eval_data.items(): + if '-' in lang_code: + lang1, lang2 = lang_code.split('-') + new_lang1 = f"{lang_code}_{lang1.upper()}" + new_lang2 = f"{lang_code}_{lang2.upper()}" + + # Adding the same content for both new language keys + new_eval_data[new_lang1] = lang_data + new_eval_data[new_lang2] = lang_data + else: + new_eval_data[lang_code] = lang_data + + return new_eval_data + @dataclass class Args: - eval_data_path: str = "data/eval.pth" + eval_data_path: str = "data/all_data_11_05-all.pth" include_langs: List[str] = None + exclude_every_k: int = 10 if __name__ == "__main__": (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() eval_data = torch.load(args.eval_data_path) + eval_data = split_language_data(eval_data) results = {} + indices = {} - for lang_code, lang_data in tqdm(eval_data.items()): - if args.include_langs is not None and lang_code not in args.include_langs: + for lang, lang_data in tqdm(eval_data.items()): + if args.include_langs is not None and lang not in args.include_langs: continue - results[lang_code] = {} + results[lang] = {} + indices[lang] = {} for dataset_name, dataset in lang_data["sentence"].items(): - results[lang_code][dataset_name] = {} - - sentences = [preprocess_sentence(s) for s in dataset["data"]] - - text = Constants.SEPARATORS[lang_code].join(sentences) + if "nllb" in dataset_name: + continue + if "corrupted" in dataset_name and dataset_name != "ted2020-corrupted-asr": + print("SKIP: ", lang, dataset_name) + continue + if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): + print("SKIP: ", lang, dataset_name) + continue + if not dataset["data"]: + continue + results[lang][dataset_name] = {} + indices[lang][dataset_name] = {} + if "-" in lang: + # code-switched data: eval 2x + lang_code = lang.split("_")[1].lower() + else: + lang_code = lang for f, name in [ (punkt_sentencize, "punkt"), @@ -52,11 +85,75 @@ class Args: (ersatz_sentencize, "ersatz"), ]: print(f"Running {name} on {dataset_name} in {lang_code}...") + indices[lang][dataset_name][name] = {} + if "lyrics" in dataset_name or "short" in dataset_name: + exclude_every_k = 0 + else: + exclude_every_k = args.exclude_every_k try: - results[lang_code][dataset_name][name] = evaluate_sentences( - lang_code, sentences, f(lang_code, text) - ) + if isinstance(dataset["data"][0], list): + all_sentences = [[preprocess_sentence(s) for s in doc] for doc in dataset["data"]] + metrics = [] + for i, sentences in enumerate(all_sentences): + text = Constants.SEPARATORS[lang_code].join(sentences) + doc_metrics = {} + doc_metrics = evaluate_sentences( + lang_code, sentences, f(lang_code, text), return_indices=True, exclude_every_k=exclude_every_k + ) + f1 = doc_metrics[0] + doc_metrics = doc_metrics[1] + doc_metrics["f1"] = f1 + doc_metrics["length"] = [doc_metrics["length"]] + metrics.append(doc_metrics) + avg_results = {} + concat_indices = {} + for doc in metrics: + for key, value in doc.items(): + if isinstance(value, (float, int)): + # numeric + if key not in avg_results: + avg_results[key] = [] + + avg_results[key].append(value) + elif isinstance(value, list): + # concat + if key not in concat_indices: + concat_indices[key] = [] + if key == "length": + concat_indices[key].append(value[0]) + else: + concat_indices[key].append(value) + + # avg + for key in list(avg_results): + if avg_results[key]: + avg_results[key] = sum(avg_results[key]) / len(avg_results[key]) + + # Store the results and indices + results[lang][dataset_name][name] = avg_results + indices[lang][dataset_name][name] = concat_indices + else: + sentences = [preprocess_sentence(s) for s in dataset["data"]] + text = Constants.SEPARATORS[lang_code].join(sentences) + + metrics = evaluate_sentences( + lang_code, + sentences, + f(lang_code, text), + return_indices=True, + exclude_every_k=exclude_every_k, + ) + f1 = metrics[0] + metrics = metrics[1] + metrics["f1"] = f1 + indices[lang][dataset_name][name]["true_indices"] = metrics.pop("true_indices") + indices[lang][dataset_name][name]["predicted_indices"] = metrics.pop("predicted_indices") + indices[lang][dataset_name][name]["length"] = metrics.pop("length") + results[lang][dataset_name][name] = metrics except LanguageError: - results[lang_code][dataset_name][name] = None + print("Language not supported for", name) + results[lang][dataset_name][name] = None - json.dump(results, open(Constants.CACHE_DIR / "intrinsic_baselines.json", "w"), indent=4) + json.dump(results, open(Constants.CACHE_DIR / "intrinsic_baselines.json", "w"), indent=4, default=int) + json.dump(indices, open(Constants.CACHE_DIR / "intrinsic_baselines_IDX.json", "w"), indent=4, default=int) + print(Constants.CACHE_DIR / "intrinsic_baselines.json") From 419812558a9a55a4ef863515f0cec0b77845d6b5 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 14 May 2024 15:11:02 +0000 Subject: [PATCH 193/262] fix naming --- wtpsplit/evaluation/intrinsic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 844f1695..4cc42fcb 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -54,7 +54,7 @@ class Args: custom_language_list: str = None threshold: float = 0.01 max_n_train_sentences: int = 1000 - max_n_test_sentences: int = sys.maxsize + max_n_test_sentences: int = -1 save_suffix: str = "" # XXX: these are not used in the current implementation! done within data.pth already. keep_logits: bool = False @@ -343,7 +343,7 @@ def main(args): model.model.classifier = torch.nn.Sequential(clf, torch.nn.Linear(clf.out_features, 1)) save_str += f"{args.save_suffix}" - if args.max_n_test_sentences < sys.maxsize or args.max_n_test_sentences != -1: + if args.max_n_test_sentences < sys.maxsize and args.max_n_test_sentences != -1: save_str += f"_n{args.max_n_test_sentences}" if args.max_n_test_sentences == -1: args.max_n_test_sentences = sys.maxsize From 2211bec97bd97ad0c7997b420ba52d087b0a8fbd Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 14 May 2024 20:26:30 +0000 Subject: [PATCH 194/262] better E handling --- wtpsplit/evaluation/llm_sentence.py | 85 ++++++++++++++++++----------- 1 file changed, 54 insertions(+), 31 deletions(-) diff --git a/wtpsplit/evaluation/llm_sentence.py b/wtpsplit/evaluation/llm_sentence.py index 3adb0adc..abfb3523 100644 --- a/wtpsplit/evaluation/llm_sentence.py +++ b/wtpsplit/evaluation/llm_sentence.py @@ -5,6 +5,7 @@ from datetime import datetime from typing import List import re +import sys import numpy as np import h5py @@ -19,6 +20,7 @@ from wtpsplit.evaluation import get_labels, evaluate_sentences_llm from wtpsplit.utils import Constants +import time pandarallel.initialize(progress_bar=True, nb_workers=32) @@ -52,12 +54,12 @@ class Args: label_delimiter: str = "|" # NOT \n or \n\n gap_char = "@" # model: str = "mistralai/mixtral-8x7b-instruct-v0.1" - # model: str = "meta/meta-llama-3-70b-instruct" + # model: str = "meta/meta-llama-3-8b-instruct" model: str = "command-r" - save_suffix: str = "Pv2-TEST2" + save_suffix: str = "Pv2" include_langs: List[str] = None custom_language_list: str = None - max_n_test_sentences: int = 100 + max_n_test_sentences: int = sys.maxsize k: int = 10 n_shots: int = 0 @@ -66,27 +68,50 @@ def replicate_provider(text, train_data, lang_code, args): api = replicate.Client(api_token=os.environ["REPLICATE_API_TOKEN"]) llm_prompt = prompt_factory(text, train_data, lang_code, args) # print(llm_prompt) - llm_input = { - "system_prompt": "", - "prompt": llm_prompt, - # "max_new_tokens": 50_000, - "max_tokens": 50_000, - } - llm_output = api.run(args.model, llm_input) - llm_output = "".join(llm_output) - # print(llm_output) - return llm_output + n_tries = 0 + while n_tries < 100: + try: + llm_input = { + "system_prompt": "", + "prompt": llm_prompt, + # "max_new_tokens": 50_000, + "max_tokens": 50_000, + } + llm_output = api.run(args.model, llm_input) + llm_output = "".join(llm_output) + # print(llm_output) + return llm_output + except Exception as e: + n_tries += 1 + print(e) + time.sleep(10) + continue + return "" def cohere_provider(text, train_data, lang_code, args): api = cohere.Client(os.environ["COHERE_API_TOKEN"]) llm_prompt = prompt_factory(text, train_data, lang_code, args) - # print(llm_prompt) - llm_output = api.chat(model=args.model, preamble="", message=llm_prompt, max_tokens=4000, seed=42).text.replace( - "\\n", "\n" - ) - # print(llm_output) - return llm_output + n_tries = 0 + while True: + try: + llm_output = api.chat( + model=args.model, preamble="", message=llm_prompt, max_tokens=4000, seed=42 + ).text.replace("\\n", "\n") + return llm_output + except Exception as e: + status_code = getattr(e, "status_code", None) + if status_code and str(e.status_code)[0] == "4": + print("API refusal.") + llm_output = "" + return llm_output + elif status_code and str(e.status_code)[0] == "5": + # Cohere API issue: retry + n_tries += 1 + time.sleep(10) + continue + else: + raise e def cohere_tokenize(text, args): @@ -301,11 +326,7 @@ def get_llm_preds( raise ValueError(f"Unknown LLM provider: {args.llm_provider}") output = [] for test_chunk in tqdm(test_texts, disable=not verbose): - try: - output.append(llm_provider(test_chunk, train_data, lang_code, args)) - except Exception as e: - print(f"API Error: {e}") - output.append("") + output.append(llm_provider(test_chunk, train_data, lang_code, args)) return output @@ -600,15 +621,19 @@ def concatenate_texts(group): for i, row in rows.iterrows(): # apply processing before label calculation labels, preds = process_alignment(row, args) - doc_metrics = evaluate_sentences_llm( - labels, preds, return_indices=True, exclude_every_k=exclude_every_k + doc_metrics = {} + doc_metrics["refused"] = [ + int(len(set(row["alignment_out"])) == 1 and args.gap_char in set(row["alignment_out"])) + ] + if doc_metrics["refused"][0]: + preds[-1] = 0 + doc_metrics.update( + evaluate_sentences_llm(labels, preds, return_indices=True, exclude_every_k=exclude_every_k) ) doc_metrics["length"] = [doc_metrics["length"]] doc_metrics["hallucination_rate"] = row["hallucination_rate"] doc_metrics["deletion_rate"] = row["deletion_rate"] - doc_metrics["refused"] = [ - int(len(set(row["alignment_out"])) == 1 and args.gap_char in set(row["alignment_out"])) - ] + metrics.append(doc_metrics) # Initialization and collection of data avg_results = {} @@ -652,8 +677,6 @@ def concatenate_texts(group): labels, preds = process_alignment(row, args) # metrics! metrics = evaluate_sentences_llm(labels, preds, return_indices=True, exclude_every_k=exclude_every_k) - if lang_code == "am": - print(metrics) metrics["hallucination_rate"] = row["hallucination_rate"] metrics["deletion_rate"] = row["deletion_rate"] indices[lang_code][dataset_name]["true_indices"] = metrics.pop("true_indices") From b971b1c4fb485c9c633747857bc3af27a35d57c2 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 14 May 2024 20:27:02 +0000 Subject: [PATCH 195/262] add LLM eval sentence fn --- wtpsplit/evaluation/__init__.py | 40 ++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index 18c99376..37349fc7 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -72,9 +72,9 @@ def evaluate_sentences( assert len(labels) == len(predictions) - return f1_score(labels, predictions), { - "recall": recall_score(labels, predictions), - "precision": precision_score(labels, predictions), + return f1_score(labels, predictions, zero_division=0), { + "recall": recall_score(labels, predictions, zero_division=0), + "precision": precision_score(labels, predictions, zero_division=0), # pairwise: ignore end-of-text label # only correct if we correctly predict the single newline in between the sentence pair # --> no false positives, no false negatives allowed! @@ -84,6 +84,40 @@ def evaluate_sentences( "length": len(labels), } +def evaluate_sentences_llm( + labels, predictions, return_indices: bool = False, exclude_every_k: int = 0 +): + + assert len(labels) == len(predictions) + + if exclude_every_k > 0: + true_end_indices = np.where(labels == 1)[0] + # every k-th from those where labels are 1 + indices_to_remove = true_end_indices[exclude_every_k-1::exclude_every_k] + + # mask for indices to keep + mask = np.ones_like(labels, dtype=bool) + mask[indices_to_remove] = False + mask[-1] = False # last is always excluded + + # remove indices + labels = labels[mask] + predictions = predictions[mask] + + assert len(labels) == len(predictions) + + return { + "f1": f1_score(labels, predictions, zero_division=0), + "recall": recall_score(labels, predictions, zero_division=0), + "precision": precision_score(labels, predictions, zero_division=0), + # pairwise: ignore end-of-text label + # only correct if we correctly predict the single newline in between the sentence pair + # --> no false positives, no false negatives allowed! + "correct_pairwise": int(np.all(labels[:-1] == predictions[:-1])), + "true_indices": np.where(labels)[0].tolist() if return_indices else None, + "predicted_indices": np.where(predictions)[0].tolist() if return_indices else None, + "length": len(labels), + } def train_mixture(lang_code, original_train_x, train_y, n_subsample=None, features=None, skip_punct: bool = False): original_train_x = torch.from_numpy(original_train_x).float() From f7554d3d79907066eaf348434391981c81a5850a Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 15 May 2024 04:25:13 +0000 Subject: [PATCH 196/262] k = 0 --- wtpsplit/evaluation/intrinsic_pairwise.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index 4dff0684..79ca74a3 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -475,6 +475,7 @@ def main(args): f[lang_code][dataset_name]["test_logits"][:][start:end], list(k_mer), args.return_indices, + 0, *clf, ) score_t.append(single_score_t) @@ -516,6 +517,7 @@ def main(args): f[lang_code][dataset_name]["test_logits"][:][start:end], list(k_mer), args.return_indices, + 0, *clf, ) score_u.append(single_score_u) From 7ad9a3e89dfbd7353a3d047e2920b2af6b86e67c Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 15 May 2024 15:24:10 +0000 Subject: [PATCH 197/262] final eval setup? --- wtpsplit/evaluation/intrinsic.py | 62 +++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 4cc42fcb..f93fdd01 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -6,10 +6,8 @@ import time import logging import sys -import re import h5py -import skops.io as sio import torch from datasets import load_dataset from tqdm.auto import tqdm @@ -20,7 +18,7 @@ import wtpsplit.models # noqa: F401 from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs from wtpsplit.extract import PyTorchWrapper, extract -from wtpsplit.utils import Constants, corrupt +from wtpsplit.utils import Constants logger = logging.getLogger() logger.setLevel(logging.WARNING) @@ -53,17 +51,16 @@ class Args: include_langs: List[str] = None custom_language_list: str = None threshold: float = 0.01 - max_n_train_sentences: int = 1000 + max_n_train_sentences: int = 10000 max_n_test_sentences: int = -1 - save_suffix: str = "" - # XXX: these are not used in the current implementation! done within data.pth already. keep_logits: bool = False skip_adaptation: bool = False + skip_punct: bool = True skip_corrupted: bool = False - clf_from_scratch: bool = False + clf_from_scratch: bool = False # for FT + LoRA return_indices: bool = True - skip_punct: bool = True exclude_every_k: int = 10 + save_suffix: str = "" def process_logits(text, model, lang_code, args): @@ -168,14 +165,21 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): if args.skip_corrupted and "corrupted" in dataset_name: continue - elif "nllb" in dataset_name: - continue - if "corrupted" in dataset_name and dataset_name != "ted2020-corrupted-asr": + if "corrupted-asr" in dataset_name and ( + "lyrics" not in dataset_name + and "short" not in dataset_name + and "code" not in dataset_name + and "ted" not in dataset_name + ): print("SKIP: ", lang_code, dataset_name) continue if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): print("SKIP: ", lang_code, dataset_name) continue + if "social-media" in dataset_name: + continue + if "nllb" in dataset_name: + continue try: if args.adapter_path: if args.clf_from_scratch: @@ -517,19 +521,35 @@ def main(args): if args.return_indices: if isinstance(sentences[0], list): indices[lang_code][dataset_name] = { - "u": u_indices, - "t": t_indices, - "punct": punct_indices, - "true_indices": true_indices, - "length": length, + "u": {"predicted_indices": u_indices, "true_indices": true_indices, "length": length}, + "t": {"predicted_indices": t_indices, "true_indices": t_indices, "length": length} + if t_indices + else None, + "punct": {"predicted_indices": punct_indices, "true_indices": t_indices, "length": length} + if punct_indices + else None, } else: indices[lang_code][dataset_name] = { - "u": u_indices["pred_indices"], - "t": t_indices["pred_indices"] if t_indices is not None else None, - "punct": punct_indices["pred_indices"] if punct_indices is not None else None, - "true_indices": u_indices["true_indices"], - "length": u_indices["length"], + "u": { + "predicted_indices": [u_indices["pred_indices"]], + "true_indices": [u_indices["true_indices"]], + "length": [u_indices["length"]], + }, + "t": { + "predicted_indices": [t_indices["pred_indices"]], + "true_indices": [t_indices["true_indices"]], + "length": [t_indices["length"]], + } + if t_indices is not None + else None, + "punct": { + "predicted_indices": [punct_indices["pred_indices"]], + "true_indices": [punct_indices["true_indices"]], + "length": [punct_indices["length"]], + } + if punct_indices is not None + else None, } if score_u is not None: From 1825000bedb987eaad91f6c07932cbde5eb483e7 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 15 May 2024 17:43:28 +0000 Subject: [PATCH 198/262] also do legal asr corruptions --- wtpsplit/evaluation/intrinsic.py | 1 + 1 file changed, 1 insertion(+) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index f93fdd01..b75fd6d6 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -170,6 +170,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st and "short" not in dataset_name and "code" not in dataset_name and "ted" not in dataset_name + and "legal" not in dataset_name ): print("SKIP: ", lang_code, dataset_name) continue From c4a4ff3793fd9cf7194c000ea8866b49b56208b5 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 15 May 2024 18:44:08 +0000 Subject: [PATCH 199/262] feats --- wtpsplit/evaluation/llm_sentence.py | 38 +++++++++++++++++++---------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/wtpsplit/evaluation/llm_sentence.py b/wtpsplit/evaluation/llm_sentence.py index abfb3523..43df0f90 100644 --- a/wtpsplit/evaluation/llm_sentence.py +++ b/wtpsplit/evaluation/llm_sentence.py @@ -59,7 +59,7 @@ class Args: save_suffix: str = "Pv2" include_langs: List[str] = None custom_language_list: str = None - max_n_test_sentences: int = sys.maxsize + max_n_test_sentences: int = -1 k: int = 10 n_shots: int = 0 @@ -199,8 +199,12 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): else: lang_group = f[lang_code] for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): - if "corrupted" in dataset_name and ( - dataset_name != "ted2020-corrupted-asr" and not ("lyrics" in dataset_name and "asr" in dataset_name) + if "corrupted-asr" in dataset_name and ( + "lyrics" not in dataset_name + and "short" not in dataset_name + and "code" not in dataset_name + and "ted" not in dataset_name + and "legal" not in dataset_name ): print("SKIP: ", lang_code, dataset_name) continue @@ -209,6 +213,8 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): continue if "social-media" in dataset_name: continue + if "nllb" in dataset_name: + continue if dataset_name not in lang_group: dset_group = lang_group.create_group(dataset_name) else: @@ -542,8 +548,14 @@ def main(args): eval_data = torch.load(eval_data_path) save_str = ( - f"{args.model.split('/')[-1]}_k{args.k}_n{args.max_n_test_sentences}_s{args.n_shots}{args.save_suffix}" + f"{args.model.split('/')[-1]}_k{args.k}_s{args.n_shots}" ).replace("/", "_") + + if args.max_n_test_sentences < sys.maxsize and args.max_n_test_sentences != -1: + save_str += f"_n{args.max_n_test_sentences}" + if args.max_n_test_sentences == -1: + args.max_n_test_sentences = sys.maxsize + save_str += f"{args.save_suffix}" save_str += f"-{args.type}" print(save_str) @@ -602,8 +614,8 @@ def concatenate_texts(group): results = {} indices = {} for lang_code in df["lang"].unique(): - results[lang_code] = {} - indices[lang_code] = {} + results[lang_code][dataset_name] = {args.model: {}} + indices[lang_code][dataset_name] = {args.model: {}} for dataset_name in df["dataset_name"].unique(): if "lyrics" in dataset_name or "short" in dataset_name: exclude_every_k = 0 @@ -613,7 +625,7 @@ def concatenate_texts(group): if n_docs == 0: # combination non-existing continue - indices[lang_code][dataset_name] = {} + indices[lang_code][dataset_name][args.model] = {} if n_docs > 1: # list of lists, TODO rows = df[(df["lang"] == lang_code) & (df["dataset_name"] == dataset_name)] @@ -667,8 +679,8 @@ def concatenate_texts(group): avg_results[key] = sum(avg_results[key]) / len(avg_results[key]) # Store the results and indices - results[lang_code][dataset_name] = avg_results - indices[lang_code][dataset_name] = concat_indices + results[lang_code][dataset_name][args.model] = avg_results + indices[lang_code][dataset_name][args.model] = concat_indices else: # one long string row = df[(df["lang"] == lang_code) & (df["dataset_name"] == dataset_name)].iloc[0] @@ -679,10 +691,10 @@ def concatenate_texts(group): metrics = evaluate_sentences_llm(labels, preds, return_indices=True, exclude_every_k=exclude_every_k) metrics["hallucination_rate"] = row["hallucination_rate"] metrics["deletion_rate"] = row["deletion_rate"] - indices[lang_code][dataset_name]["true_indices"] = metrics.pop("true_indices") - indices[lang_code][dataset_name]["predicted_indices"] = metrics.pop("predicted_indices") - indices[lang_code][dataset_name]["length"] = metrics.pop("length") - results[lang_code][dataset_name] = metrics + indices[lang_code][dataset_name][args.model]["true_indices"] = [metrics.pop("true_indices")] + indices[lang_code][dataset_name][args.model]["predicted_indices"] = [metrics.pop("predicted_indices")] + indices[lang_code][dataset_name][args.model]["length"] = [metrics.pop("length")] + results[lang_code][dataset_name][args.model] = metrics out_dict = { "metrics": calculate_global_metric_averages(results), From a4f91afc41882f360391c2a562fe8f886644d276 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 15 May 2024 18:55:23 +0000 Subject: [PATCH 200/262] don't store logits if no punct applied --- wtpsplit/evaluation/intrinsic.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index b75fd6d6..ce8f05c7 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -268,7 +268,13 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dset_group.create_dataset("test_logit_lengths", data=test_logit_lengths) else: test_labels = get_labels(lang_code, test_sentences, after_space=False) - + if args.skip_punct: + print(test_logits[:, 0].shape) + # remove punct logits + test_logits = test_logits[:, 0] + # back to [N, 1] + test_logits = np.expand_dims(test_logits, axis=1) + print(test_logits.shape) dset_group.create_dataset("test_logits", data=test_logits) dset_group.create_dataset("test_labels", data=test_labels) @@ -296,6 +302,11 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st else: train_labels = get_labels(lang_code, train_sentences, after_space=False) + if args.skip_punct: + # remove punct logits + train_logits = train_logits[:, 0] + # back to [N, 1] + train_logits = np.expand_dims(train_logits, axis=1) dset_group.create_dataset("train_logits", data=train_logits) dset_group.create_dataset("train_labels", data=train_labels) From 4362896d25cf19fe00e7ce88a925bfa05b7ad90c Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 15 May 2024 18:56:14 +0000 Subject: [PATCH 201/262] no print --- wtpsplit/evaluation/intrinsic.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index ce8f05c7..e69528f4 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -269,12 +269,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st else: test_labels = get_labels(lang_code, test_sentences, after_space=False) if args.skip_punct: - print(test_logits[:, 0].shape) # remove punct logits test_logits = test_logits[:, 0] # back to [N, 1] test_logits = np.expand_dims(test_logits, axis=1) - print(test_logits.shape) dset_group.create_dataset("test_logits", data=test_logits) dset_group.create_dataset("test_labels", data=test_labels) From f2355421caa825014e550e293553fd4755f3205a Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 15 May 2024 19:24:05 +0000 Subject: [PATCH 202/262] proper dict assignment --- wtpsplit/evaluation/llm_sentence.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/wtpsplit/evaluation/llm_sentence.py b/wtpsplit/evaluation/llm_sentence.py index 43df0f90..8d03867a 100644 --- a/wtpsplit/evaluation/llm_sentence.py +++ b/wtpsplit/evaluation/llm_sentence.py @@ -506,6 +506,7 @@ def calculate_global_metric_averages(results): for lang_datasets in results.values(): for metrics in lang_datasets.values(): # aggregate + metrics = metrics[args.model] for metric_key, metric_value in metrics.items(): if isinstance(metric_value, (int, float)): if metric_key not in metric_totals: @@ -614,9 +615,11 @@ def concatenate_texts(group): results = {} indices = {} for lang_code in df["lang"].unique(): - results[lang_code][dataset_name] = {args.model: {}} - indices[lang_code][dataset_name] = {args.model: {}} + results[lang_code] = {} + indices[lang_code] = {} for dataset_name in df["dataset_name"].unique(): + results[lang_code][dataset_name] = {args.model: {}} # Initialize nested dict with model + indices[lang_code][dataset_name] = {args.model: {}} if "lyrics" in dataset_name or "short" in dataset_name: exclude_every_k = 0 else: From 2c998841bff9f4e1be3a9086a5ca304683b4a5b3 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 16 May 2024 06:51:21 +0000 Subject: [PATCH 203/262] cs lang code for canine --- wtpsplit/evaluation/intrinsic.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index e69528f4..5b07bbe3 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -17,6 +17,7 @@ import wtpsplit.models # noqa: F401 from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs +from wtpsplit.evaluation.intrinsic_baselines import split_language_data from wtpsplit.extract import PyTorchWrapper, extract from wtpsplit.utils import Constants @@ -181,6 +182,9 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st continue if "nllb" in dataset_name: continue + if "-" in lang_code and "canine" in args.model_path and not "no-adapters" in args.model_path: + # code-switched data: eval 2x + lang_code = lang_code.split("_")[1].lower() try: if args.adapter_path: if args.clf_from_scratch: @@ -337,6 +341,8 @@ def main(args): save_str = f"{save_model_path.replace('/','_')}_b{args.block_size}_s{args.stride}" eval_data = torch.load(args.eval_data_path) + if "canine" in args.model_path and not "no-adapters" in args.model_path: + eval_data = split_language_data(eval_data) if args.valid_text_path is not None: valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") else: From 9feb8d58cad58f8098e704f2fa51b3e2a56c349b Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 16 May 2024 06:51:56 +0000 Subject: [PATCH 204/262] new skip --- wtpsplit/train/train_adapter.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index ce71442e..5278f795 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -127,9 +127,6 @@ def prepare_dataset( processed_chunk[args.text_column] = "\n".join(chunk) processed_dataset.append(processed_chunk) dataset = datasets.Dataset.from_list(processed_dataset) - if subsample and "legal" in dataset_name: - # 10k sentences -> 1k documents. - subsample = subsample // 10 else: dataset = datasets.Dataset.from_list( @@ -146,7 +143,7 @@ def prepare_dataset( logger.warning(f"Loaded {len(dataset)} examples for {lang} {dataset_name} {split} dataset.") if shuffle: - dataset = dataset.shuffle(seed=42) + dataset = dataset.shuffle(seed=training_args.seed) if subsample: old_length = len(dataset) if isinstance(subsample, int): @@ -387,13 +384,21 @@ def maybe_pad(text): for lang in tqdm(data.keys(), desc="Language"): if lang in args.include_languages: for dataset_name in data[lang]["sentence"].keys(): - if "corrupted" in dataset_name and dataset_name != "ted2020-corrupted-asr": + if "corrupted-asr" in dataset_name and ( + "lyrics" not in dataset_name + and "short" not in dataset_name + and "code" not in dataset_name + and "ted" not in dataset_name + and "legal" not in dataset_name + ): print("SKIP: ", lang, dataset_name) continue if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): print("SKIP: ", lang, dataset_name) continue - if "media" in dataset_name: + if "social-media" in dataset_name: + continue + if "nllb" in dataset_name: continue if lang == "en" and dataset_name == "legal-all-laws": # not available. From edab6570ca4de235da76c93a3260f9ce45b23b06 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 16 May 2024 20:54:42 +0000 Subject: [PATCH 205/262] fix imports + legal en --- wtpsplit/evaluation/intrinsic_pairwise.py | 10 +--------- wtpsplit/train/train_adapter.py | 6 +++--- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index 79ca74a3..f20864e1 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -22,7 +22,7 @@ from wtpsplit.extract import PyTorchWrapper from wtpsplit.extract_batched import extract_batched from wtpsplit.utils import Constants -from wtpsplit.evaluation.intrinsic import compute_statistics, corrupt +from wtpsplit.evaluation.intrinsic import compute_statistics logger = logging.getLogger() logger.setLevel(logging.INFO) @@ -183,11 +183,6 @@ def generate_pairs( if len(sentences[i]) + len(sentences[i + 1]) > min_k_mer_length ] - # corrupt pairs - all_pairs = [ - (corrupt(pair[0], do_lowercase, do_remove_punct), corrupt(pair[1], do_lowercase, do_remove_punct)) - for pair in all_pairs - ] return all_pairs @@ -234,9 +229,6 @@ def generate_k_mers( if sum(len(sentences[i + j]) for j in range(k)) > min_k_mer_length ] - # Apply corruption to k-mers - all_k_mers = [tuple(corrupt(sentence, do_lowercase, do_remove_punct) for sentence in k_mer) for k_mer in all_k_mers] - return all_k_mers diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 5278f795..1d5203bc 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -22,7 +22,7 @@ from wtpsplit.models import SubwordXLMConfig, SubwordXLMForTokenClassification from wtpsplit.train.adaptertrainer import AdapterTrainer from wtpsplit.train.trainer import Trainer -from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise +from wtpsplit.train.evaluate import evaluate_sentence from wtpsplit.train.train import collate_fn, setup_logging from wtpsplit.train.utils import Model from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict, corrupt @@ -400,13 +400,13 @@ def maybe_pad(text): continue if "nllb" in dataset_name: continue - if lang == "en" and dataset_name == "legal-all-laws": + if lang == "en" and "legal-all-laws" in dataset_name: # not available. print("SKIP: ", lang, dataset_name) continue print("RUNNING:", dataset_name, lang) # skip langs starting with a, b, ..., k - # if not lang.startswith(tuple("k")) and not "en-de" in lang: + # if not lang.startswith(tuple("abcd")): # print(f"Skipping {lang} {dataset_name}") # continue # do model stuff here; otherwise, head params would be overwritten every time From 8809327d5c96f16321fe9c69740bf96ae298e82c Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 17 May 2024 21:48:08 +0000 Subject: [PATCH 206/262] fix ted filter --- wtpsplit/evaluation/intrinsic.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 5b07bbe3..cfbe80a3 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -142,7 +142,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if args.include_langs is not None and lang_code not in args.include_langs: continue - # print(f"Processing {lang_code}...") if lang_code not in f: lang_group = f.create_group(lang_code) else: @@ -166,19 +165,16 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): if args.skip_corrupted and "corrupted" in dataset_name: continue - if "corrupted-asr" in dataset_name and ( - "lyrics" not in dataset_name - and "short" not in dataset_name - and "code" not in dataset_name - and "ted" not in dataset_name - and "legal" not in dataset_name + if "asr" in dataset_name and not any( + x in dataset_name for x in ["lyrics", "short", "code", "ted2020", "legal"] ): - print("SKIP: ", lang_code, dataset_name) + logger.warning(f"SKIP: {lang_code} {dataset_name}") continue if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): - print("SKIP: ", lang_code, dataset_name) + logger.warning(f"SKIP: {lang_code} {dataset_name}") continue if "social-media" in dataset_name: + logger.warning(f"SKIP: {lang_code} {dataset_name}") continue if "nllb" in dataset_name: continue @@ -214,7 +210,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st load_as="text", ) except Exception as e: - print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") + logger.error(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue if dataset_name not in lang_group: dset_group = lang_group.create_group(dataset_name) @@ -222,6 +218,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dset_group = lang_group[dataset_name] if "test_logits" not in dset_group: + # logger.warning(f"RUN: {lang_code} {dataset_name}") test_sentences = dataset["data"] if not test_sentences: continue @@ -348,7 +345,7 @@ def main(args): else: valid_data = None - print("Loading model...") + logger.warning("Loading model...") model_path = args.model_path model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) if args.adapter_path: @@ -387,7 +384,7 @@ def main(args): if args.include_langs is not None and lang_code not in args.include_langs: continue - print(f"Predicting {lang_code}...") + logger.warning(f"Predicting {lang_code}...") results[lang_code] = {} clfs[lang_code] = {} if args.return_indices: @@ -426,7 +423,7 @@ def main(args): skip_punct=args.skip_punct, ) if clf[0] is not None: - print(clf) + logger.warning(clf) if isinstance(sentences[0], list): acc_t, acc_punct = [], [] @@ -575,10 +572,10 @@ def main(args): if score_punct is not None: punct_scores.append((score_punct, lang_code)) - # just for printing + # just for logging score_t = score_t or 0.0 score_punct = score_punct or 0.0 - print(f"{lang_code} {dataset_name} {score_u:.3f} {score_t:.3f} {score_punct:.3f}") + logger.warning(f"{lang_code} {dataset_name} {score_u:.3f} {score_t:.3f} {score_punct:.3f}") # Compute statistics for each metric across all languages results_avg = { From 545beca7af74f72c4cf352ef4221cb886f06475f Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 17 May 2024 21:51:32 +0000 Subject: [PATCH 207/262] fix filter, cf. intrinsic --- wtpsplit/train/train_adapter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 1d5203bc..637599de 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -388,7 +388,7 @@ def maybe_pad(text): "lyrics" not in dataset_name and "short" not in dataset_name and "code" not in dataset_name - and "ted" not in dataset_name + and "ted2020" not in dataset_name and "legal" not in dataset_name ): print("SKIP: ", lang, dataset_name) @@ -406,7 +406,7 @@ def maybe_pad(text): continue print("RUNNING:", dataset_name, lang) # skip langs starting with a, b, ..., k - # if not lang.startswith(tuple("abcd")): + # if lang.startswith(tuple("abcd")): # print(f"Skipping {lang} {dataset_name}") # continue # do model stuff here; otherwise, head params would be overwritten every time From fd6716eb0154a04d91eadde68d35103db23971f4 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 18 May 2024 18:09:17 +0000 Subject: [PATCH 208/262] update data pth, idcs --- wtpsplit/evaluation/intrinsic_pairwise.py | 40 +++++++++++++++++++---- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index f20864e1..fe109cb0 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -45,7 +45,7 @@ class Args: # } # } # } - eval_data_path: str = "data/all_data_04_05.pth" + eval_data_path: str = "data/all_data_11_05-all.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 @@ -61,7 +61,7 @@ class Args: keep_logits: bool = True skip_corrupted: bool = True skip_punct: bool = True - return_indices: bool = False + return_indices: bool = True # k_mer-specific args k: int = 2 @@ -254,7 +254,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # eval data for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): - if args.skip_corrupted and "corrupted" in dataset_name: + if args.skip_corrupted and "corrupted" in dataset_name and"ted2020" not in dataset_name: continue try: if args.adapter_path: @@ -407,6 +407,8 @@ def main(args): # now, compute the intrinsic scores. results = {} clfs = {} + if args.return_indices: + indices = {} # Initialize lists to store scores for each metric across all languages u_scores, t_scores, punct_scores = [], [], [] u_accs, t_accs, punct_accs = [], [], [] @@ -419,6 +421,8 @@ def main(args): print(f"Predicting {lang_code}...") results[lang_code] = {} clfs[lang_code] = {} + if args.return_indices: + indices[lang_code] = {} for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"][: args.max_n_test_sentences] @@ -437,7 +441,7 @@ def main(args): ) if lang_code not in f or dataset_name not in f[lang_code]: continue - + if "train_logits" in f[lang_code][dataset_name] and not args.skip_adaptation: feature_indices = None # it is sufficient to feed in 1 long sequence of tokens here since we only use logits for LR @@ -489,6 +493,8 @@ def main(args): score_u = [] acc_u = [] thresholds = [] + u_indices, true_indices = [], [] + length = [] for i, k_mer in enumerate(sent_k_mers): start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] if args.adjust_threshold: @@ -504,7 +510,7 @@ def main(args): thresholds.append(threshold_adjusted) else: thresholds.append(args.threshold) - single_score_u, _, info, u_indices, _ = evaluate_mixture( + single_score_u, _, info, cur_u_indices, _ = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:][start:end], list(k_mer), @@ -517,11 +523,16 @@ def main(args): score_u = np.mean(score_u) score_t = np.mean(score_t) if score_t and not args.skip_adaptation else None - score_punct = np.mean(score_punct) if score_punct and not (args.skip_punct or args.skip_adaptation) else None + score_punct = ( + np.mean(score_punct) if score_punct and not (args.skip_punct or args.skip_adaptation) else None + ) acc_u = np.mean(acc_u) acc_t = np.mean(acc_t) if score_t else None acc_punct = np.mean(acc_punct) if score_punct else None threshold = np.mean(thresholds) + u_indices.append(cur_u_indices["pred_indices"] if cur_u_indices["pred_indices"] else []) + true_indices.append(cur_u_indices["true_indices"] if cur_u_indices["true_indices"] else []) + length.append(cur_u_indices["length"]) results[lang_code][dataset_name] = { "u": score_u, @@ -534,6 +545,10 @@ def main(args): "threshold_adj": threshold, } + if args.return_indices: + indices[lang_code][dataset_name] = { + "u": {"predicted_indices": u_indices, "true_indices": true_indices, "length": length}, + } # just for printing score_t = score_t or 0.0 score_punct = score_punct or 0.0 @@ -583,6 +598,19 @@ def main(args): ), indent=4, ) + + if args.return_indices: + json.dump( + indices, + open( + Constants.CACHE_DIR / "intrinsic_pairwise" / f"{save_str}_IDX.json", + "w", + ), + default=int, + indent=4, + ) + print(Constants.CACHE_DIR / "intrinsic_pairwise" / f"{save_str}_IDX.json") + print("Indices saved to file.") if not args.keep_logits: os.remove(f.filename) From 2f06d8484d1754bdf7853e56adcf875b8e630d2f Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 19 May 2024 06:06:19 +0000 Subject: [PATCH 209/262] baselines --- wtpsplit/evaluation/__init__.py | 3 + wtpsplit/evaluation/download_spacy.py | 47 +++--- wtpsplit/evaluation/intrinsic_baselines.py | 36 ++-- .../intrinsic_baselines_multilingual.py | 157 ++++++++++++++++++ 4 files changed, 203 insertions(+), 40 deletions(-) create mode 100644 wtpsplit/evaluation/intrinsic_baselines_multilingual.py diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index 37349fc7..5a0c7a7f 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -365,6 +365,7 @@ def pysbd_sentencize(lang_code, text): "es": "es_core_news_sm", "sv": "sv_core_news_sm", "uk": "uk_core_news_sm", + "xx": "xx_sent_ud_sm", } @@ -374,6 +375,7 @@ def spacy_sent_sentencize(lang_code, text): try: nlp = spacy.blank(lang_code) nlp.add_pipe("sentencizer") + nlp.max_length = 1_000_000_000 if lang_code == "ja": # spacy uses SudachiPy for japanese, which has a length limit: @@ -397,6 +399,7 @@ def spacy_dp_sentencize(lang_code, text): try: nlp = spacy.load(SPACY_LANG_TO_DP_MODEL[lang_code], disable=["ner"]) + nlp.max_length = 1_000_000_000 if lang_code == "ja": # spacy uses SudachiPy for japanese, which has a length limit: diff --git a/wtpsplit/evaluation/download_spacy.py b/wtpsplit/evaluation/download_spacy.py index 0c1dfc31..fc72ade6 100644 --- a/wtpsplit/evaluation/download_spacy.py +++ b/wtpsplit/evaluation/download_spacy.py @@ -1,29 +1,30 @@ import subprocess SPACY_LANG_TO_DP_MODEL = { - "ca": "ca_core_news_sm", - "zh": "zh_core_web_sm", - "hr": "hr_core_news_sm", - "da": "da_core_news_sm", - "nl": "nl_core_news_sm", - "en": "en_core_web_sm", - "fi": "fi_core_news_sm", - "fr": "fr_core_news_sm", - "de": "de_core_news_sm", - "el": "el_core_news_sm", - "it": "it_core_news_sm", - "ja": "ja_core_news_sm", - "ko": "ko_core_news_sm", - "lt": "lt_core_news_sm", - "mk": "mk_core_news_sm", - "nb": "nb_core_news_sm", - "pl": "pl_core_news_sm", - "pt": "pt_core_news_sm", - "ro": "ro_core_news_sm", - "ru": "ru_core_news_sm", - "es": "es_core_news_sm", - "sv": "sv_core_news_sm", - "uk": "uk_core_news_sm", + # "ca": "ca_core_news_sm", + # "zh": "zh_core_web_sm", + # "hr": "hr_core_news_sm", + # "da": "da_core_news_sm", + # "nl": "nl_core_news_sm", + # "en": "en_core_web_sm", + # "fi": "fi_core_news_sm", + # "fr": "fr_core_news_sm", + # "de": "de_core_news_sm", + # "el": "el_core_news_sm", + # "it": "it_core_news_sm", + # "ja": "ja_core_news_sm", + # "ko": "ko_core_news_sm", + # "lt": "lt_core_news_sm", + # "mk": "mk_core_news_sm", + # "nb": "nb_core_news_sm", + # "pl": "pl_core_news_sm", + # "pt": "pt_core_news_sm", + # "ro": "ro_core_news_sm", + # "ru": "ru_core_news_sm", + # "es": "es_core_news_sm", + # "sv": "sv_core_news_sm", + # "uk": "uk_core_news_sm", + "multi": "xx_sent_ud_sm" } def download_models(): diff --git a/wtpsplit/evaluation/intrinsic_baselines.py b/wtpsplit/evaluation/intrinsic_baselines.py index 3384ecf9..ce0132c2 100644 --- a/wtpsplit/evaluation/intrinsic_baselines.py +++ b/wtpsplit/evaluation/intrinsic_baselines.py @@ -61,12 +61,12 @@ class Args: for dataset_name, dataset in lang_data["sentence"].items(): if "nllb" in dataset_name: continue - if "corrupted" in dataset_name and dataset_name != "ted2020-corrupted-asr": - print("SKIP: ", lang, dataset_name) - continue - if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): - print("SKIP: ", lang, dataset_name) - continue + # if "corrupted" in dataset_name and dataset_name != "ted2020-corrupted-asr": + # print("SKIP: ", lang, dataset_name) + # continue + # if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): + # print("SKIP: ", lang, dataset_name) + # continue if not dataset["data"]: continue results[lang][dataset_name] = {} @@ -79,10 +79,10 @@ class Args: for f, name in [ (punkt_sentencize, "punkt"), - (spacy_dp_sentencize, "spacy_dp"), - (spacy_sent_sentencize, "spacy_sent"), - (pysbd_sentencize, "pysbd"), - (ersatz_sentencize, "ersatz"), + # (spacy_dp_sentencize, "spacy_dp"), + # (spacy_sent_sentencize, "spacy_sent"), + # (pysbd_sentencize, "pysbd"), + # (ersatz_sentencize, "ersatz"), ]: print(f"Running {name} on {dataset_name} in {lang_code}...") indices[lang][dataset_name][name] = {} @@ -146,14 +146,16 @@ class Args: f1 = metrics[0] metrics = metrics[1] metrics["f1"] = f1 - indices[lang][dataset_name][name]["true_indices"] = metrics.pop("true_indices") - indices[lang][dataset_name][name]["predicted_indices"] = metrics.pop("predicted_indices") - indices[lang][dataset_name][name]["length"] = metrics.pop("length") + print(f1) + indices[lang][dataset_name][name]["true_indices"] = [metrics.pop("true_indices")] + indices[lang][dataset_name][name]["predicted_indices"] =[ metrics.pop("predicted_indices")] + indices[lang][dataset_name][name]["length"] = [metrics.pop("length")] results[lang][dataset_name][name] = metrics - except LanguageError: - print("Language not supported for", name) + except LanguageError as e: + # print("Language not supported for", name) + # print(e) results[lang][dataset_name][name] = None - json.dump(results, open(Constants.CACHE_DIR / "intrinsic_baselines.json", "w"), indent=4, default=int) - json.dump(indices, open(Constants.CACHE_DIR / "intrinsic_baselines_IDX.json", "w"), indent=4, default=int) + json.dump(results, open(Constants.CACHE_DIR / "intrinsic_baselines_punkt.json", "w"), indent=4, default=int) + json.dump(indices, open(Constants.CACHE_DIR / "intrinsic_baselines_punkt_IDX.json", "w"), indent=4, default=int) print(Constants.CACHE_DIR / "intrinsic_baselines.json") diff --git a/wtpsplit/evaluation/intrinsic_baselines_multilingual.py b/wtpsplit/evaluation/intrinsic_baselines_multilingual.py new file mode 100644 index 00000000..20a30a90 --- /dev/null +++ b/wtpsplit/evaluation/intrinsic_baselines_multilingual.py @@ -0,0 +1,157 @@ +import json +from dataclasses import dataclass +from typing import List + +import torch +from tqdm import tqdm +from transformers import HfArgumentParser + +from wtpsplit.evaluation import ( + LanguageError, + ersatz_sentencize, + evaluate_sentences, + preprocess_sentence, + punkt_sentencize, + pysbd_sentencize, + spacy_dp_sentencize, + spacy_sent_sentencize, +) +from wtpsplit.utils import Constants + +def split_language_data(eval_data): + new_eval_data = {} + + for lang_code, lang_data in eval_data.items(): + if '-' in lang_code: + lang1, lang2 = lang_code.split('-') + new_lang1 = f"{lang_code}_{lang1.upper()}" + new_lang2 = f"{lang_code}_{lang2.upper()}" + + # Adding the same content for both new language keys + new_eval_data[new_lang1] = lang_data + new_eval_data[new_lang2] = lang_data + else: + new_eval_data[lang_code] = lang_data + + return new_eval_data + + +@dataclass +class Args: + eval_data_path: str = "data/all_data_11_05-all.pth" + include_langs: List[str] = None + exclude_every_k: int = 10 + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + + eval_data = torch.load(args.eval_data_path) + eval_data = split_language_data(eval_data) + results = {} + indices = {} + + for lang, lang_data in tqdm(eval_data.items()): + if args.include_langs is not None and lang not in args.include_langs: + continue + + results[lang] = {} + indices[lang] = {} + + for dataset_name, dataset in lang_data["sentence"].items(): + if "nllb" in dataset_name: + continue + # if "corrupted" in dataset_name and dataset_name != "ted2020-corrupted-asr": + # print("SKIP: ", lang, dataset_name) + # continue + # if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): + # print("SKIP: ", lang, dataset_name) + # continue + if not dataset["data"]: + continue + results[lang][dataset_name] = {} + indices[lang][dataset_name] = {} + if "-" in lang: + # code-switched data: eval 2x + lang_code = lang.split("_")[1].lower() + else: + lang_code = lang + + for f, name in [ + (spacy_dp_sentencize, "spacy_dp"), + (spacy_sent_sentencize, "spacy_sent"), + ]: + print(f"Running {name} on {dataset_name} in {lang_code}...") + indices[lang][dataset_name][name] = {} + if "lyrics" in dataset_name or "short" in dataset_name: + exclude_every_k = 0 + else: + exclude_every_k = args.exclude_every_k + try: + if isinstance(dataset["data"][0], list): + all_sentences = [[preprocess_sentence(s) for s in doc] for doc in dataset["data"]] + metrics = [] + for i, sentences in enumerate(all_sentences): + text = Constants.SEPARATORS[lang_code].join(sentences) + doc_metrics = {} + doc_metrics = evaluate_sentences( + lang_code, sentences, f("xx", text), return_indices=True, exclude_every_k=exclude_every_k + ) + f1 = doc_metrics[0] + doc_metrics = doc_metrics[1] + doc_metrics["f1"] = f1 + doc_metrics["length"] = [doc_metrics["length"]] + metrics.append(doc_metrics) + avg_results = {} + concat_indices = {} + for doc in metrics: + for key, value in doc.items(): + if isinstance(value, (float, int)): + # numeric + if key not in avg_results: + avg_results[key] = [] + + avg_results[key].append(value) + elif isinstance(value, list): + # concat + if key not in concat_indices: + concat_indices[key] = [] + if key == "length": + concat_indices[key].append(value[0]) + else: + concat_indices[key].append(value) + + # avg + for key in list(avg_results): + if avg_results[key]: + avg_results[key] = sum(avg_results[key]) / len(avg_results[key]) + + # Store the results and indices + results[lang][dataset_name][name] = avg_results + indices[lang][dataset_name][name] = concat_indices + else: + sentences = [preprocess_sentence(s) for s in dataset["data"]] + text = Constants.SEPARATORS[lang_code].join(sentences) + + metrics = evaluate_sentences( + lang_code, + sentences, + f("xx", text), + return_indices=True, + exclude_every_k=exclude_every_k, + ) + f1 = metrics[0] + metrics = metrics[1] + metrics["f1"] = f1 + print(f1) + indices[lang][dataset_name][name]["true_indices"] = [metrics.pop("true_indices")] + indices[lang][dataset_name][name]["predicted_indices"] =[ metrics.pop("predicted_indices")] + indices[lang][dataset_name][name]["length"] = [metrics.pop("length")] + results[lang][dataset_name][name] = metrics + except LanguageError as l: + print("Language not supported for", name, l) + results[lang][dataset_name][name] = None + + json.dump(results, open(Constants.CACHE_DIR / "intrinsic_baselines_multi.json", "w"), indent=4, default=int) + json.dump(indices, open(Constants.CACHE_DIR / "intrinsic_baselines_multi_IDX.json", "w"), indent=4, default=int) + print(Constants.CACHE_DIR / "intrinsic_baselines.json") From 27e56f0409656c49cd9c0811af06deb280e1d9ef Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 19 May 2024 07:58:19 +0000 Subject: [PATCH 210/262] no subsample --- wtpsplit/evaluation/intrinsic.py | 60 ++++++++++++++++---------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index cfbe80a3..3045cc85 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -193,16 +193,16 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st 1, # FIXME: hardcoded? ) model.model.__class__.__name__ = "SubwordXLMForTokenClassification" - if ( - any(code in lang_code for code in ["ceb", "jv", "mn", "yo"]) - and "ted2020" not in dataset_name - ): - # no ersatz for these either. - dataset_load_name = "nllb" - if "corrupted" in dataset_load_name: - dataset_load_name += "-corrupted" - else: - dataset_load_name = dataset_name + # if ( + # any(code in lang_code for code in ["ceb", "jv", "mn", "yo"]) + # and "ted2020" not in dataset_name + # ): + # # no ersatz for these either. + # dataset_load_name = "nllb" + # if "corrupted" in dataset_load_name: + # dataset_load_name += "-corrupted" + # else: + dataset_load_name = dataset_name model.model.load_adapter( args.adapter_path + "/" + dataset_load_name + "/" + lang_code, set_active=True, @@ -222,18 +222,18 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st test_sentences = dataset["data"] if not test_sentences: continue - if ( - isinstance(test_sentences[0], list) - and "lyrics" not in dataset_name - and "short" not in dataset_name - ): - # documents: only 10% of documents. 1000 sentences --> 100 docs - max_n_sentences = args.max_n_test_sentences // 10 - # shuffle sentences - np.random.seed(42) - test_sentences = np.random.permutation(test_sentences).tolist() - else: - max_n_sentences = args.max_n_test_sentences + # if ( + # isinstance(test_sentences[0], list) + # and "lyrics" not in dataset_name + # and "short" not in dataset_name + # ): + # # documents: only 10% of documents. 1000 sentences --> 100 docs + # max_n_sentences = args.max_n_test_sentences // 10 + # # shuffle sentences + # np.random.seed(42) + # test_sentences = np.random.permutation(test_sentences).tolist() + # else: + max_n_sentences = args.max_n_test_sentences test_sentences = test_sentences[:max_n_sentences] if isinstance(test_sentences[0], list): # short-seq eval: list of lists @@ -394,14 +394,14 @@ def main(args): sentences = dataset["data"] if not sentences: continue - if isinstance(sentences[0], list) and "lyrics" not in dataset_name and "short" not in dataset_name: - # documents: only 10% of documents. 1000 sentences --> 100 docs - max_n_sentences = args.max_n_test_sentences // 10 - # shuffle sentences - np.random.seed(42) - sentences = np.random.permutation(sentences).tolist() - else: - max_n_sentences = args.max_n_test_sentences + # if isinstance(sentences[0], list) and "lyrics" not in dataset_name and "short" not in dataset_name: + # # documents: only 10% of documents. 1000 sentences --> 100 docs + # max_n_sentences = args.max_n_test_sentences // 10 + # # shuffle sentences + # np.random.seed(42) + # sentences = np.random.permutation(sentences).tolist() + # else: + max_n_sentences = args.max_n_test_sentences sentences = sentences[:max_n_sentences] if len(sentences) == 0: continue From 29e4d06119e11cfc44e22c58ba591e1ed581b477 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 19 May 2024 14:33:20 +0000 Subject: [PATCH 211/262] fix append --- wtpsplit/evaluation/intrinsic_pairwise.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index fe109cb0..457f5033 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -530,9 +530,7 @@ def main(args): acc_t = np.mean(acc_t) if score_t else None acc_punct = np.mean(acc_punct) if score_punct else None threshold = np.mean(thresholds) - u_indices.append(cur_u_indices["pred_indices"] if cur_u_indices["pred_indices"] else []) - true_indices.append(cur_u_indices["true_indices"] if cur_u_indices["true_indices"] else []) - length.append(cur_u_indices["length"]) + results[lang_code][dataset_name] = { "u": score_u, From 98443b7fa94e0aeafbdf9c0335854742b3def97e Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 19 May 2024 16:08:31 +0000 Subject: [PATCH 212/262] finally fix indices --- wtpsplit/evaluation/intrinsic_pairwise.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index 457f5033..bf3a7fba 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -19,6 +19,7 @@ import wtpsplit.models # noqa: F401 from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs +from wtpsplit.evaluation.intrinsic_baselines import split_language_data from wtpsplit.extract import PyTorchWrapper from wtpsplit.extract_batched import extract_batched from wtpsplit.utils import Constants @@ -241,11 +242,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st total_test_time = 0 # Initialize total test processing time start_time = time.time() - with h5py.File(logits_path, "a") as f, torch.no_grad(): + with h5py.File(logits_path, "w") as f, torch.no_grad(): for lang_code in Constants.LANGINFO.index: if args.include_langs is not None and lang_code not in args.include_langs: continue - print(f"Processing {lang_code}...") if lang_code not in f: lang_group = f.create_group(lang_code) @@ -254,8 +254,11 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st # eval data for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): - if args.skip_corrupted and "corrupted" in dataset_name and"ted2020" not in dataset_name: + if args.skip_corrupted and "corrupted" in dataset_name and "ted2020" not in dataset_name: continue + if "-" in lang_code and "canine" in args.model_path and "no-adapters" not in args.model_path: + # code-switched data: eval 2x + lang_code = lang_code.split("_")[1].lower() try: if args.adapter_path: model.model.load_adapter( @@ -377,6 +380,8 @@ def main(args): print(save_str) eval_data = torch.load(args.eval_data_path) + if "canine" in args.model_path and not "no-adapters" in args.model_path: + eval_data = split_language_data(eval_data) if args.valid_text_path is not None: valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") else: @@ -530,7 +535,9 @@ def main(args): acc_t = np.mean(acc_t) if score_t else None acc_punct = np.mean(acc_punct) if score_punct else None threshold = np.mean(thresholds) - + u_indices.append(cur_u_indices["pred_indices"] if cur_u_indices["pred_indices"] else []) + true_indices.append(cur_u_indices["true_indices"] if cur_u_indices["true_indices"] else []) + length.append(cur_u_indices["length"]) results[lang_code][dataset_name] = { "u": score_u, @@ -596,7 +603,7 @@ def main(args): ), indent=4, ) - + if args.return_indices: json.dump( indices, From d875c7724f486dfa4af2da8aa0a3f0ab27397e27 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 20 May 2024 13:58:35 +0000 Subject: [PATCH 213/262] add xlmr+lora --- configs/peft/lora_xlmr.json | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 configs/peft/lora_xlmr.json diff --git a/configs/peft/lora_xlmr.json b/configs/peft/lora_xlmr.json new file mode 100644 index 00000000..8b9a3ab3 --- /dev/null +++ b/configs/peft/lora_xlmr.json @@ -0,0 +1,38 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "xlmr-base-3_lora-v2_ep30_s10k", + "block_size": 256, + "eval_stride": 128, + "do_train": true, + "do_eval": true, + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 1, + "preprocessing_num_workers": 1, + "learning_rate": 3e-4, + "fp16": false, + "num_train_epochs": 30, + "logging_steps": 50, + "report_to": "wandb", + "wandb_project": "sentence-peft-v2", + "save_steps": 100000000, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_ratio": 0.1, + "non_punctuation_sample_ratio": null, + "prediction_loss_only": true, + "use_auxiliary": false, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", + "adapter_config": "lora[r=16,alpha=32,intermediate_lora=True]", + "weight_decay": 0.0, + "auxiliary_remove_prob": 0.0, + "train_adapter": true, + "subsample": 10000 +} \ No newline at end of file From 6a09358c82af5cba5718662a9537281a43c55b9f Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 20 May 2024 18:22:58 +0000 Subject: [PATCH 214/262] finally fix idcs --- wtpsplit/evaluation/intrinsic_pairwise.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index bf3a7fba..ed326157 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -242,7 +242,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st total_test_time = 0 # Initialize total test processing time start_time = time.time() - with h5py.File(logits_path, "w") as f, torch.no_grad(): + with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in Constants.LANGINFO.index: if args.include_langs is not None and lang_code not in args.include_langs: continue @@ -525,6 +525,9 @@ def main(args): ) score_u.append(single_score_u) acc_u.append(info["info_newline"]["correct_pairwise"]) + u_indices.append(cur_u_indices["pred_indices"] if cur_u_indices["pred_indices"] else []) + true_indices.append(cur_u_indices["true_indices"] if cur_u_indices["true_indices"] else []) + length.append(cur_u_indices["length"]) score_u = np.mean(score_u) score_t = np.mean(score_t) if score_t and not args.skip_adaptation else None @@ -535,9 +538,7 @@ def main(args): acc_t = np.mean(acc_t) if score_t else None acc_punct = np.mean(acc_punct) if score_punct else None threshold = np.mean(thresholds) - u_indices.append(cur_u_indices["pred_indices"] if cur_u_indices["pred_indices"] else []) - true_indices.append(cur_u_indices["true_indices"] if cur_u_indices["true_indices"] else []) - length.append(cur_u_indices["length"]) + results[lang_code][dataset_name] = { "u": score_u, From 5a990386a5f24a5dec6dc9a5c62922e759e3853e Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 21 May 2024 11:02:57 +0000 Subject: [PATCH 215/262] quick xlm-r small model fix --- wtpsplit/train/train_adapter.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 637599de..423e1ac6 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -57,6 +57,7 @@ class Args: adapter_warmup_steps: int = 0 adapter_lr_multiplier: float = 1.0 text_column: str = "text" + num_hidden_layers = None # NEW PARAMS use_subwords: bool = False @@ -90,10 +91,15 @@ def main(): if (label_args.use_auxiliary or args.do_auxiliary_training or args.meta_clf) else 0 ) - config = SubwordXLMConfig.from_pretrained( - args.model_name_or_path, - num_labels=num_labels, - ) + + if args.num_hidden_layers: + config = SubwordXLMConfig.from_pretrained( + args.model_name_or_path, + num_labels=num_labels, + num_hidden_layers=args.num_hidden_layers, + ) + else: + config = SubwordXLMConfig.from_pretrained(args.model_name_or_path, num_labels=num_labels) def prepare_dataset( data, From f46b995ea0fdecccff86df31de29d7ace715c11d Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 21 May 2024 11:12:06 +0000 Subject: [PATCH 216/262] fix num layers --- configs/peft/lora_xlmr.json | 3 ++- wtpsplit/train/train_adapter.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/configs/peft/lora_xlmr.json b/configs/peft/lora_xlmr.json index 8b9a3ab3..a061210f 100644 --- a/configs/peft/lora_xlmr.json +++ b/configs/peft/lora_xlmr.json @@ -1,8 +1,9 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-base-3_lora-v2_ep30_s10k", + "output_dir": "xlmr-base-3l_lora-v2_ep30_s10k", "block_size": 256, "eval_stride": 128, + "num_hidden_layers": 3, "do_train": true, "do_eval": true, "per_device_train_batch_size": 64, diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index 423e1ac6..bc38c30f 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -57,7 +57,7 @@ class Args: adapter_warmup_steps: int = 0 adapter_lr_multiplier: float = 1.0 text_column: str = "text" - num_hidden_layers = None + num_hidden_layers: int = 0 # NEW PARAMS use_subwords: bool = False From 79598b18b0617785dd9657f0166bfb51798548ba Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 21 May 2024 18:57:37 +0000 Subject: [PATCH 217/262] fix short seq inclusion --- wtpsplit/evaluation/intrinsic_baselines.py | 14 +++++++------- .../evaluation/intrinsic_baselines_multilingual.py | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_baselines.py b/wtpsplit/evaluation/intrinsic_baselines.py index ce0132c2..a471427e 100644 --- a/wtpsplit/evaluation/intrinsic_baselines.py +++ b/wtpsplit/evaluation/intrinsic_baselines.py @@ -79,10 +79,10 @@ class Args: for f, name in [ (punkt_sentencize, "punkt"), - # (spacy_dp_sentencize, "spacy_dp"), - # (spacy_sent_sentencize, "spacy_sent"), - # (pysbd_sentencize, "pysbd"), - # (ersatz_sentencize, "ersatz"), + (spacy_dp_sentencize, "spacy_dp"), + (spacy_sent_sentencize, "spacy_sent"), + (pysbd_sentencize, "pysbd"), + (ersatz_sentencize, "ersatz"), ]: print(f"Running {name} on {dataset_name} in {lang_code}...") indices[lang][dataset_name][name] = {} @@ -109,7 +109,7 @@ class Args: concat_indices = {} for doc in metrics: for key, value in doc.items(): - if isinstance(value, (float, int)): + if not isinstance(value, list): # numeric if key not in avg_results: avg_results[key] = [] @@ -156,6 +156,6 @@ class Args: # print(e) results[lang][dataset_name][name] = None - json.dump(results, open(Constants.CACHE_DIR / "intrinsic_baselines_punkt.json", "w"), indent=4, default=int) - json.dump(indices, open(Constants.CACHE_DIR / "intrinsic_baselines_punkt_IDX.json", "w"), indent=4, default=int) + json.dump(results, open(Constants.CACHE_DIR / "intrinsic_baselines.json", "w"), indent=4, default=int) + json.dump(indices, open(Constants.CACHE_DIR / "intrinsic_baselines_IDX.json", "w"), indent=4, default=int) print(Constants.CACHE_DIR / "intrinsic_baselines.json") diff --git a/wtpsplit/evaluation/intrinsic_baselines_multilingual.py b/wtpsplit/evaluation/intrinsic_baselines_multilingual.py index 20a30a90..b8b1835d 100644 --- a/wtpsplit/evaluation/intrinsic_baselines_multilingual.py +++ b/wtpsplit/evaluation/intrinsic_baselines_multilingual.py @@ -106,7 +106,7 @@ class Args: concat_indices = {} for doc in metrics: for key, value in doc.items(): - if isinstance(value, (float, int)): + if not isinstance(value, list): # numeric if key not in avg_results: avg_results[key] = [] From c5a5cb9d1fb9fe2715ce181c19432d168af56baa Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 23 May 2024 07:06:17 +0000 Subject: [PATCH 218/262] update legal baseline --- wtpsplit/evaluation/law_bert.py | 48 ++------------------------------- 1 file changed, 2 insertions(+), 46 deletions(-) diff --git a/wtpsplit/evaluation/law_bert.py b/wtpsplit/evaluation/law_bert.py index 19a754be..7ffbfc5a 100644 --- a/wtpsplit/evaluation/law_bert.py +++ b/wtpsplit/evaluation/law_bert.py @@ -22,54 +22,17 @@ warnings.filterwarnings("ignore", category=UserWarning) -def corrupt_document(document, lang): - """Corrupt sentences in a document for ASR simulation.""" - return [corrupt_asr(sentence, lang=lang)[0] for sentence in document] - - -def process_documents(documents, lang): - """Process each document and return a list of corrupted documents.""" - return [corrupt_document(document, lang) for document in documents] - - -def handle_legal_data(eval_data, lang_code): - """Process legal data for a specific language, corrupting the sentences.""" - sections = ["test", "train"] - corrupted_sentences = {} - - for section in sections: - key = "data" if section == "test" else "meta" - if key in eval_data[lang_code]["sentence"]["legal-data"].keys(): - original_data = eval_data[lang_code]["sentence"]["legal-data"][key] - documents = original_data if section == "test" else original_data["train_data"] - if not documents: - corrupted_sentences[section] = None - continue - corrupted_docs = process_documents(documents, lang=lang_code.split("_")[0]) - corrupted_sentences[section] = corrupted_docs - - if corrupted_sentences: - eval_data[lang_code]["sentence"][f"legal-data-corrupted"] = { - "data": corrupted_sentences.get("test", []), - "meta": { - "train_data": corrupted_sentences.get("train", []), - }, - } - print(f"Created corrupted legal data for {lang_code}") - - @dataclass class Args: - eval_data_path: str = "data/all_data_04_05.pth" + eval_data_path: str = "data/all_data_11_05-all.pth" device: str = "cpu" include_langs: List[str] = None max_n_test_sentences: int = sys.maxsize - stride: int = 32 + stride: int = 64 save_suffix: str = "" return_indices: bool = False type: str = "both" # laws, judgements, both, specific lang_support: str = "multi" # mono, multi - corrupt_legal: bool = False # FIXME def get_law_preds(texts, model, model_name, args) -> List[List[int]]: @@ -104,13 +67,6 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): # law eval data is only one with _ use_langs = [lang_code for lang_code in use_langs if "laws" in lang_code or "judgements" in lang_code] - # create corrupted versions of legal data (unlike others, not contained in eval_data) - if args.corrupt_legal: - for lang_code in use_langs: - if "laws" in lang_code or "judgements" in lang_code: - handle_legal_data(eval_data, lang_code) - torch.save(eval_data, args.eval_data_path) - total_test_time = 0 # Initialize total test processing time with h5py.File(logits_path, "w") as f, torch.no_grad(): From a20ce916e910c9759995cbba8932438867563c67 Mon Sep 17 00:00:00 2001 From: markus583 Date: Thu, 23 May 2024 08:38:08 +0000 Subject: [PATCH 219/262] adapt to new data config --- wtpsplit/evaluation/law_bert.py | 85 +++++++++++++++++---------------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/wtpsplit/evaluation/law_bert.py b/wtpsplit/evaluation/law_bert.py index 7ffbfc5a..a3efc9c9 100644 --- a/wtpsplit/evaluation/law_bert.py +++ b/wtpsplit/evaluation/law_bert.py @@ -14,7 +14,7 @@ from transformers import AutoModelForTokenClassification, AutoTokenizer, HfArgumentParser, pipeline from wtpsplit.evaluation import evaluate_mixture -from wtpsplit.utils import Constants, corrupt_asr +from wtpsplit.utils import Constants logger = logging.getLogger() logger.setLevel(logging.INFO) @@ -63,45 +63,15 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): if not os.path.exists(Constants.CACHE_DIR / "law_bert"): os.makedirs(Constants.CACHE_DIR / "law_bert") - use_langs = eval_data.keys() + use_langs = ["fr", "es", "it", "en", "de", "pt"] # law eval data is only one with _ - use_langs = [lang_code for lang_code in use_langs if "laws" in lang_code or "judgements" in lang_code] total_test_time = 0 # Initialize total test processing time - with h5py.File(logits_path, "w") as f, torch.no_grad(): + with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in tqdm(use_langs, desc="Languages"): - current_name = base_name - if args.lang_support == "multi": - current_name += "-fr-es-it-en-de" - elif args.lang_support == "mono": - if lang_code.split("_")[0] == "pt": - current_name += "-fr-es-it-en-de" - else: - current_name += f"-{lang_code.split('_')[0]}" - if lang_code.split("_")[0] == "en": - current_name += "-judgements-laws" - else: - raise NotImplementedError - if lang_code.split("_")[0] == "en" and args.lang_support == "mono": - pass - elif args.type == "laws": - current_name += "-laws" - elif args.type == "judgements": - current_name += "-judgements" - elif args.type == "both": - current_name += "-judgements-laws" - elif args.type == "specific": - current_name += f"-{lang_code.split('_')[1]}" - else: - raise NotImplementedError - - model = AutoModelForTokenClassification.from_pretrained(current_name).to(args.device) - if args.include_langs is not None and lang_code not in args.include_langs: continue - - print(f"{lang_code}, model: {current_name}") if lang_code not in f: lang_group = f.create_group(lang_code) else: @@ -109,6 +79,39 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): # eval data for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): + if not "legal" in dataset_name: + continue + if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): + continue + if "social-media" in dataset_name: + continue + current_name = base_name + if args.lang_support == "multi": + current_name += "-fr-es-it-en-de" + elif args.lang_support == "mono": + if lang_code.split("_")[0] == "pt": + current_name += "-fr-es-it-en-de" + else: + current_name += f"-{lang_code.split('_')[0]}" + if lang_code.split("_")[0] == "en": + current_name += "-judgements-laws" + else: + raise NotImplementedError + if lang_code.split("_")[0] == "en" and args.lang_support == "mono": + pass + elif args.type == "laws": + current_name += "-laws" + elif args.type == "judgements": + current_name += "-judgements" + elif args.type == "both": + current_name += "-judgements-laws" + elif args.type == "specific": + current_name += f"-{dataset_name.split('-')[-1]}" + else: + raise NotImplementedError + + model = AutoModelForTokenClassification.from_pretrained(current_name).to(args.device) + logger.info(f"RUN {lang_code} {dataset_name} {current_name}") if dataset_name not in lang_group: dset_group = lang_group.create_group(dataset_name) else: @@ -116,10 +119,8 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): if "test_logits" not in dset_group: test_sentences = dataset["data"][: args.max_n_test_sentences] - if args.corrupt_legal: - test_sentences = [ - corrupt_asr(sentence, lang=lang_code.split("_")[0]) for sentence in test_sentences - ] + if not test_sentences: + continue if isinstance(test_sentences[0], list): # short-seq eval: list of lists test_text = [ @@ -176,9 +177,6 @@ def main(args): eval_data = torch.load(args.eval_data_path) - if args.corrupt_legal: - save_str += "_corrupt" - save_str += f"{args.save_suffix}" # first, logits for everything. @@ -204,6 +202,8 @@ def main(args): for dataset_name, dataset in dsets["sentence"].items(): sentences = dataset["data"][: args.max_n_test_sentences] + if not sentences: + continue # check if f[lang_code][dataset_name] exists if lang_code not in f or dataset_name not in f[lang_code]: continue @@ -222,15 +222,16 @@ def main(args): f[lang_code][dataset_name]["test_logits"][:][start:end], list(short_seq), args.return_indices, + 0, *clf, ) score_u.append(single_score_u) acc_u.append(info["info_newline"]["correct_pairwise"]) # indices: accumulate from start - u_indices.extend( + u_indices.append( [idx + start for idx in cur_u_indices["pred_indices"]] if cur_u_indices["pred_indices"] else [] ) - true_indices.extend( + true_indices.append( [idx + start for idx in cur_u_indices["true_indices"]] if cur_u_indices["true_indices"] else [] ) length += cur_u_indices["length"] - 1 From 1a11667fd526f03a8ca7e778c29b910100bdeb1f Mon Sep 17 00:00:00 2001 From: markus583 Date: Fri, 24 May 2024 14:30:14 +0000 Subject: [PATCH 220/262] xlmr + adapters compat --- wtpsplit/evaluation/intrinsic_pairwise.py | 23 +++++++++++++++++++++- wtpsplit/extract_batched.py | 24 ++++++++++++++++------- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index ed326157..0b90b095 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -63,6 +63,7 @@ class Args: skip_corrupted: bool = True skip_punct: bool = True return_indices: bool = True + clf_from_scratch: bool = False # k_mer-specific args k: int = 2 @@ -261,8 +262,28 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st lang_code = lang_code.split("_")[1].lower() try: if args.adapter_path: + if args.clf_from_scratch: + model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) + # elif model.model.classifier.out_features == 2: + elif args.model_path == "xlm-roberta-base" or args.model_path == "xlm-roberta-large": + # we train XLM-R using our wrapper, needs to be adapted for adapters to be loaded + model.model.classifier = torch.nn.Linear( + model.model.classifier.in_features, + 1, # FIXME: hardcoded? + ) + model.model.__class__.__name__ = "SubwordXLMForTokenClassification" + # if ( + # any(code in lang_code for code in ["ceb", "jv", "mn", "yo"]) + # and "ted2020" not in dataset_name + # ): + # # no ersatz for these either. + # dataset_load_name = "nllb" + # if "corrupted" in dataset_load_name: + # dataset_load_name += "-corrupted" + # else: + dataset_load_name = dataset_name model.model.load_adapter( - args.adapter_path + "/" + dataset_name + "/" + lang_code, + args.adapter_path + "/" + dataset_load_name + "/" + lang_code, set_active=True, with_head=True, load_as="text", diff --git a/wtpsplit/extract_batched.py b/wtpsplit/extract_batched.py index 3ea4a71d..ba7006da 100644 --- a/wtpsplit/extract_batched.py +++ b/wtpsplit/extract_batched.py @@ -28,7 +28,7 @@ def extract_batched( """ if "xlm" in model.config.model_type: use_subwords = True - tokenizer = AutoTokenizer.from_pretrained(model.config.base_model) + tokenizer = AutoTokenizer.from_pretrained("xlm-roberta-base") tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) tokens = tokenizer( batch_of_texts, @@ -108,12 +108,22 @@ def extract_batched( kwargs = {"language_ids": language_ids} if uses_lang_adapters else {} - logits = model( - input_ids=input_ids if use_subwords else None, - hashed_ids=None if use_subwords else hashed_ids, - attention_mask=attention_mask, - **kwargs, - )["logits"] + if use_subwords and model.config.model_type == "xlm-roberta": + # TODO: generalize + import torch + with torch.no_grad(): + logits = model.model( + input_ids=torch.from_numpy(input_ids).to(model.model.device), + attention_mask=torch.from_numpy(attention_mask).to(model.model.device), + **kwargs, + )["logits"].cpu().numpy() + else: + logits = model( + input_ids=input_ids if use_subwords else None, + hashed_ids=None if use_subwords else hashed_ids, + attention_mask=attention_mask, + **kwargs, + )["logits"] if use_subwords: logits = logits[:, 1:-1, :] # remove CLS and SEP tokens From 2b77d401542214fb65b3842997c3fffe2250c94a Mon Sep 17 00:00:00 2001 From: markus583 Date: Sat, 25 May 2024 06:00:12 +0000 Subject: [PATCH 221/262] fix xlmr 3l eval --- utils/clean_tweets.py | 70 ++++++++++++++++++++++++++++++++ wtpsplit/evaluation/intrinsic.py | 28 +++++++------ wtpsplit/extract.py | 22 +++------- 3 files changed, 92 insertions(+), 28 deletions(-) create mode 100644 utils/clean_tweets.py diff --git a/utils/clean_tweets.py b/utils/clean_tweets.py new file mode 100644 index 00000000..696a07bc --- /dev/null +++ b/utils/clean_tweets.py @@ -0,0 +1,70 @@ +import re +import torch + + +def remove_emojis_and_special_chars(text): + emoji_pattern = re.compile( + "[" + "\U0001f600-\U0001f64f" # emoticons + "\U0001f300-\U0001f5ff" # symbols & pictographs + "\U0001f680-\U0001f6ff" # transport & map symbols + "\U0001f700-\U0001f77f" # alchemical symbols + "\U0001f780-\U0001f7ff" # Geometric Shapes Extended + "\U0001f800-\U0001f8ff" # Supplemental Arrows-C + "\U0001f900-\U0001f9ff" # Supplemental Symbols and Pictographs + "\U0001fa00-\U0001fa6f" # Chess Symbols + "\U0001fa70-\U0001faff" # Symbols and Pictographs Extended-A + "\U00002702-\U000027b0" # Dingbats + "\U000024c2-\U0001f251" + "]+", + flags=re.UNICODE, + ) + text = emoji_pattern.sub(r"", text) + text = re.sub(r"[:;=Xx][\-oO\']*[\)\(\[\]DdPp3><\|\\\/]", "", text) + return text + + +def transform_data(data): + def pair_sentences(sequences): + paired_sequences = [] + for sequence in sequences: + processed_sequence = [] + for sentence in sequence: + words = sentence.strip().split() + filtered_words = [ + remove_emojis_and_special_chars(word) + for word in words + if not (word.startswith("http") or word.startswith("#") or word.startswith("@")) + ] + cleaned_sentence = " ".join(filtered_words) # fine for our langs. + if cleaned_sentence and len(cleaned_sentence.split()) > 0: + processed_sequence.append(cleaned_sentence.strip()) + if processed_sequence and len(processed_sequence) < 6: + paired_sequences.append(processed_sequence) + return paired_sequences + + transformed_data = {} + for lang_code, lang_data in data.items(): + if lang_code == "en-de": + continue + transformed_data[lang_code] = {} + for content_type, datasets in lang_data.items(): + if content_type != "sentence": + continue + transformed_data[lang_code] = {} + transformed_data[lang_code][content_type] = {} + for dataset_name, content in datasets.items(): + if "short" not in dataset_name: + continue + transformed_data[lang_code][content_type][dataset_name] = { + "meta": {"train_data": pair_sentences(content["meta"]["train_data"])}, + "data": pair_sentences(content["data"]), + } + + return transformed_data + + +data = torch.load("data/all_data_11_05-all.pth") + +transformed_data = transform_data(data) +torch.save(transformed_data, "data/all_data_11_05-short_proc_SM.pth") diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 3045cc85..10e132bc 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -1,7 +1,7 @@ import copy import json from dataclasses import dataclass -from typing import List +from typing import List, Union import os import time import logging @@ -16,6 +16,7 @@ import adapters import wtpsplit.models # noqa: F401 +from wtpsplit.models import SubwordXLMConfig, SubwordXLMForTokenClassification from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs from wtpsplit.evaluation.intrinsic_baselines import split_language_data from wtpsplit.extract import PyTorchWrapper, extract @@ -62,6 +63,7 @@ class Args: return_indices: bool = True exclude_every_k: int = 10 save_suffix: str = "" + num_hidden_layers: Union[int, None] = None def process_logits(text, model, lang_code, args): @@ -178,21 +180,13 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st continue if "nllb" in dataset_name: continue - if "-" in lang_code and "canine" in args.model_path and not "no-adapters" in args.model_path: + if "-" in lang_code and "canine" in args.model_path and "no-adapters" not in args.model_path: # code-switched data: eval 2x lang_code = lang_code.split("_")[1].lower() try: if args.adapter_path: if args.clf_from_scratch: model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) - # elif model.model.classifier.out_features == 2: - elif args.model_path == "xlm-roberta-base" or args.model_path == "xlm-roberta-large": - # we train XLM-R using our wrapper, needs to be adapted for adapters to be loaded - model.model.classifier = torch.nn.Linear( - model.model.classifier.in_features, - 1, # FIXME: hardcoded? - ) - model.model.__class__.__name__ = "SubwordXLMForTokenClassification" # if ( # any(code in lang_code for code in ["ceb", "jv", "mn", "yo"]) # and "ted2020" not in dataset_name @@ -338,7 +332,7 @@ def main(args): save_str = f"{save_model_path.replace('/','_')}_b{args.block_size}_s{args.stride}" eval_data = torch.load(args.eval_data_path) - if "canine" in args.model_path and not "no-adapters" in args.model_path: + if "canine" in args.model_path and "no-adapters" not in args.model_path: eval_data = split_language_data(eval_data) if args.valid_text_path is not None: valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") @@ -347,7 +341,17 @@ def main(args): logger.warning("Loading model...") model_path = args.model_path - model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) + if args.model_path == "xlm-roberta-base" or args.model_path == "xlm-roberta-large": + config = SubwordXLMConfig.from_pretrained( + args.model_path, + num_hidden_layers=args.num_hidden_layers, + num_labels=1, + ) + model = PyTorchWrapper( + SubwordXLMForTokenClassification.from_pretrained(model_path, config=config).to(args.device) + ) + else: + model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) if args.adapter_path: model_type = model.model.config.model_type # adapters need xlm-roberta as model type. diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index e1bbd853..f6dd39a9 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -219,22 +219,12 @@ def extract( kwargs = {"language_ids": language_ids[: len(batch_attention_mask)]} if uses_lang_adapters else {} - if use_subwords and model.config.model_type == "xlm-roberta": - # TODO: generalize - import torch - with torch.no_grad(): - logits = model.model( - input_ids=torch.from_numpy(batch_input_ids).to(model.model.device), - attention_mask=torch.from_numpy(batch_attention_mask).to(model.model.device), - **kwargs, - )["logits"].cpu().numpy() - else: - logits = model( - input_ids=batch_input_ids if use_subwords else None, - hashed_ids=None if use_subwords else batch_input_hashes, - attention_mask=batch_attention_mask, - **kwargs, - )["logits"] + logits = model( + input_ids=batch_input_ids if use_subwords else None, + hashed_ids=None if use_subwords else batch_input_hashes, + attention_mask=batch_attention_mask, + **kwargs, + )["logits"] if use_subwords: logits = logits[:, 1:-1, :] # remove CLS and SEP tokens From e6a31e72e95d877922e4071c2348b6c5200d5495 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 4 Jun 2024 13:19:42 +0000 Subject: [PATCH 222/262] fix idcs count --- wtpsplit/evaluation/intrinsic_baselines.py | 40 +++++++++++++----- .../intrinsic_baselines_multilingual.py | 42 +++++++++++++------ 2 files changed, 60 insertions(+), 22 deletions(-) diff --git a/wtpsplit/evaluation/intrinsic_baselines.py b/wtpsplit/evaluation/intrinsic_baselines.py index a471427e..dd6a46fe 100644 --- a/wtpsplit/evaluation/intrinsic_baselines.py +++ b/wtpsplit/evaluation/intrinsic_baselines.py @@ -18,21 +18,22 @@ ) from wtpsplit.utils import Constants + def split_language_data(eval_data): new_eval_data = {} - + for lang_code, lang_data in eval_data.items(): - if '-' in lang_code: - lang1, lang2 = lang_code.split('-') + if "-" in lang_code: + lang1, lang2 = lang_code.split("-") new_lang1 = f"{lang_code}_{lang1.upper()}" new_lang2 = f"{lang_code}_{lang2.upper()}" - + # Adding the same content for both new language keys new_eval_data[new_lang1] = lang_data new_eval_data[new_lang2] = lang_data else: new_eval_data[lang_code] = lang_data - + return new_eval_data @@ -67,12 +68,25 @@ class Args: # if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): # print("SKIP: ", lang, dataset_name) # continue + # if "ted2020-corrupted-asr" not in dataset_name: + # continue if not dataset["data"]: continue results[lang][dataset_name] = {} indices[lang][dataset_name] = {} + if "asr" in dataset_name and not any( + x in dataset_name for x in ["lyrics", "short", "code", "ted2020", "legal"] + ): + continue + if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): + continue + if "social-media" in dataset_name: + continue + if "nllb" in dataset_name: + continue + if "-" in lang: - # code-switched data: eval 2x + # code-switched data: eval 2x lang_code = lang.split("_")[1].lower() else: lang_code = lang @@ -92,13 +106,18 @@ class Args: exclude_every_k = args.exclude_every_k try: if isinstance(dataset["data"][0], list): - all_sentences = [[preprocess_sentence(s) for s in doc] for doc in dataset["data"]] + # all_sentences = [[preprocess_sentence(s) for s in doc] for doc in dataset["data"]] + all_sentences = dataset["data"] metrics = [] for i, sentences in enumerate(all_sentences): text = Constants.SEPARATORS[lang_code].join(sentences) doc_metrics = {} doc_metrics = evaluate_sentences( - lang_code, sentences, f(lang_code, text), return_indices=True, exclude_every_k=exclude_every_k + lang_code, + sentences, + f(lang_code, text), + return_indices=True, + exclude_every_k=exclude_every_k, ) f1 = doc_metrics[0] doc_metrics = doc_metrics[1] @@ -133,7 +152,8 @@ class Args: results[lang][dataset_name][name] = avg_results indices[lang][dataset_name][name] = concat_indices else: - sentences = [preprocess_sentence(s) for s in dataset["data"]] + # sentences = [preprocess_sentence(s) for s in dataset["data"]] + sentences = dataset["data"] text = Constants.SEPARATORS[lang_code].join(sentences) metrics = evaluate_sentences( @@ -148,7 +168,7 @@ class Args: metrics["f1"] = f1 print(f1) indices[lang][dataset_name][name]["true_indices"] = [metrics.pop("true_indices")] - indices[lang][dataset_name][name]["predicted_indices"] =[ metrics.pop("predicted_indices")] + indices[lang][dataset_name][name]["predicted_indices"] = [metrics.pop("predicted_indices")] indices[lang][dataset_name][name]["length"] = [metrics.pop("length")] results[lang][dataset_name][name] = metrics except LanguageError as e: diff --git a/wtpsplit/evaluation/intrinsic_baselines_multilingual.py b/wtpsplit/evaluation/intrinsic_baselines_multilingual.py index b8b1835d..9ad420ab 100644 --- a/wtpsplit/evaluation/intrinsic_baselines_multilingual.py +++ b/wtpsplit/evaluation/intrinsic_baselines_multilingual.py @@ -18,21 +18,22 @@ ) from wtpsplit.utils import Constants + def split_language_data(eval_data): new_eval_data = {} - + for lang_code, lang_data in eval_data.items(): - if '-' in lang_code: - lang1, lang2 = lang_code.split('-') + if "-" in lang_code: + lang1, lang2 = lang_code.split("-") new_lang1 = f"{lang_code}_{lang1.upper()}" new_lang2 = f"{lang_code}_{lang2.upper()}" - + # Adding the same content for both new language keys new_eval_data[new_lang1] = lang_data new_eval_data[new_lang2] = lang_data else: new_eval_data[lang_code] = lang_data - + return new_eval_data @@ -71,15 +72,26 @@ class Args: continue results[lang][dataset_name] = {} indices[lang][dataset_name] = {} + if "asr" in dataset_name and not any( + x in dataset_name for x in ["lyrics", "short", "code", "ted2020", "legal"] + ): + continue + if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): + continue + if "social-media" in dataset_name: + continue + if "nllb" in dataset_name: + continue + if "-" in lang: - # code-switched data: eval 2x + # code-switched data: eval 2x lang_code = lang.split("_")[1].lower() else: lang_code = lang for f, name in [ (spacy_dp_sentencize, "spacy_dp"), - (spacy_sent_sentencize, "spacy_sent"), + # (spacy_sent_sentencize, "spacy_sent"), ]: print(f"Running {name} on {dataset_name} in {lang_code}...") indices[lang][dataset_name][name] = {} @@ -89,13 +101,18 @@ class Args: exclude_every_k = args.exclude_every_k try: if isinstance(dataset["data"][0], list): - all_sentences = [[preprocess_sentence(s) for s in doc] for doc in dataset["data"]] + # all_sentences = [[preprocess_sentence(s) for s in doc] for doc in dataset["data"]] + all_sentences = dataset["data"] metrics = [] for i, sentences in enumerate(all_sentences): text = Constants.SEPARATORS[lang_code].join(sentences) doc_metrics = {} doc_metrics = evaluate_sentences( - lang_code, sentences, f("xx", text), return_indices=True, exclude_every_k=exclude_every_k + lang_code, + sentences, + f("xx", text), + return_indices=True, + exclude_every_k=exclude_every_k, ) f1 = doc_metrics[0] doc_metrics = doc_metrics[1] @@ -130,7 +147,8 @@ class Args: results[lang][dataset_name][name] = avg_results indices[lang][dataset_name][name] = concat_indices else: - sentences = [preprocess_sentence(s) for s in dataset["data"]] + # sentences = [preprocess_sentence(s) for s in dataset["data"]] + sentences = dataset["data"] text = Constants.SEPARATORS[lang_code].join(sentences) metrics = evaluate_sentences( @@ -145,7 +163,7 @@ class Args: metrics["f1"] = f1 print(f1) indices[lang][dataset_name][name]["true_indices"] = [metrics.pop("true_indices")] - indices[lang][dataset_name][name]["predicted_indices"] =[ metrics.pop("predicted_indices")] + indices[lang][dataset_name][name]["predicted_indices"] = [metrics.pop("predicted_indices")] indices[lang][dataset_name][name]["length"] = [metrics.pop("length")] results[lang][dataset_name][name] = metrics except LanguageError as l: @@ -154,4 +172,4 @@ class Args: json.dump(results, open(Constants.CACHE_DIR / "intrinsic_baselines_multi.json", "w"), indent=4, default=int) json.dump(indices, open(Constants.CACHE_DIR / "intrinsic_baselines_multi_IDX.json", "w"), indent=4, default=int) - print(Constants.CACHE_DIR / "intrinsic_baselines.json") + print(Constants.CACHE_DIR / "intrinsic_baselines_multi.json") From b4e70c52cbfde1dc5d551caee5849d0a84526953 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 5 Jun 2024 13:09:07 +0000 Subject: [PATCH 223/262] up --- wtpsplit/evaluation/llm_sentence.py | 42 +++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/wtpsplit/evaluation/llm_sentence.py b/wtpsplit/evaluation/llm_sentence.py index 8d03867a..23714762 100644 --- a/wtpsplit/evaluation/llm_sentence.py +++ b/wtpsplit/evaluation/llm_sentence.py @@ -19,6 +19,7 @@ import replicate from wtpsplit.evaluation import get_labels, evaluate_sentences_llm +from wtpsplit.evaluation.intrinsic_pairwise import generate_k_mers from wtpsplit.utils import Constants import time @@ -49,7 +50,7 @@ @dataclass class Args: eval_data_path: str = "data/all_data_11_05" - type: str = "lyrics" # all, lyrics + type: str = "lyrics" # all, lyrics, pairs, short_proc llm_provider: str = "cohere" # cohere, replicate label_delimiter: str = "|" # NOT \n or \n\n gap_char = "@" @@ -69,13 +70,13 @@ def replicate_provider(text, train_data, lang_code, args): llm_prompt = prompt_factory(text, train_data, lang_code, args) # print(llm_prompt) n_tries = 0 - while n_tries < 100: + while n_tries < 1: try: llm_input = { "system_prompt": "", "prompt": llm_prompt, # "max_new_tokens": 50_000, - "max_tokens": 50_000, + "max_tokens": 4000, } llm_output = api.run(args.model, llm_input) llm_output = "".join(llm_output) @@ -217,6 +218,11 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): continue if dataset_name not in lang_group: dset_group = lang_group.create_group(dataset_name) + if args.type == "pairs" and dataset_name != "ersatz" and dataset_name != "ted2020-corrupted-asr": + continue + if (args.k != 10 or args.n_shots != 0) and dataset_name != "ersatz": + print("SKIP: ", lang_code, dataset_name) + continue else: dset_group = lang_group[dataset_name] if "test_preds" not in dset_group and "test_preds_0" not in dset_group: @@ -227,6 +233,7 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): isinstance(test_sentences[0], list) and "lyrics" not in dataset_name and "short" not in dataset_name + and args.type != "pairs" ): # documents: only 10% of documents. 1000 sentences --> 100 docs max_n_sentences = args.max_n_test_sentences // 10 @@ -236,9 +243,18 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): else: max_n_sentences = args.max_n_test_sentences test_sentences = test_sentences[:max_n_sentences] - if isinstance(test_sentences[0], list): + if isinstance(test_sentences[0], list) or args.type == "pairs": + if args.type == "pairs": + all_pairs = generate_k_mers( + test_sentences, + k=2, + do_lowercase=False, + do_remove_punct=False, + sample_pct=0.5 + ) + test_sentences = all_pairs # list of lists: chunk each sublist - if "short" in dataset_name or "lyrics" in dataset_name: + if "short" in dataset_name or "lyrics" in dataset_name or args.type == "pairs": # only here: no chunking test_chunks = test_sentences test_texts = [ @@ -263,7 +279,7 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): if args.n_shots: train_sentences = eval_data[lang_code]["sentence"][dataset_name]["meta"]["train_data"][:100] if train_sentences: - if "short" in dataset_name: + if "short" in dataset_name or args.type == "pairs": # here: entire samples (tweets e.g.) train_chunks = train_sentences train_texts = ["\n".join(train_chunk).strip() for train_chunk in train_chunks] @@ -288,7 +304,7 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): dset_group.create_dataset( f"test_chunks_{i}", data=[test_chunks[i]] - if "short" in dataset_name or "lyrics" in dataset_name + if "short" in dataset_name or "lyrics" in dataset_name or args.type == "pairs" else test_chunks[i], ) @@ -342,7 +358,7 @@ def prompt_factory(test_chunk, train_data, lang_code, args): prompt_start = ( main_prompt - + f"When provided with multiple examples, you are to respond only to the last one: # Output {n_shots + 1}." + + f"When provided with multiple examples, you are to respond only to the last one: Output {n_shots + 1}." if n_shots else main_prompt ) @@ -383,6 +399,8 @@ def postprocess_llm_output(llm_output, lang): llm_output = llm_output.replace(args.label_delimiter, " ") llm_output = llm_output.replace("\n\n", args.label_delimiter) llm_output = llm_output.replace("\n", args.label_delimiter) + # replace multiple newlines with 1 + llm_output = re.sub(r"\n+", "\n", llm_output) # remove leading #, # Input, : llm_output = llm_output.strip("#").strip().strip("Input").strip(":").strip() @@ -537,10 +555,12 @@ def main(args): default_dir.mkdir(parents=True, exist_ok=True) alignment_dir.mkdir(parents=True, exist_ok=True) - if args.type == "all": + if args.type == "all" or args.type == "pairs": eval_data_path = args.eval_data_path + "-all.pth" elif args.type == "lyrics": eval_data_path = args.eval_data_path + "-lyrics.pth" + elif args.type == "short_proc": + eval_data_path = args.eval_data_path + "-short_proc.pth" else: raise ValueError(f"Unknown type: {args.type}") @@ -620,7 +640,7 @@ def concatenate_texts(group): for dataset_name in df["dataset_name"].unique(): results[lang_code][dataset_name] = {args.model: {}} # Initialize nested dict with model indices[lang_code][dataset_name] = {args.model: {}} - if "lyrics" in dataset_name or "short" in dataset_name: + if "lyrics" in dataset_name or "short" in dataset_name or args.type == "pairs": exclude_every_k = 0 else: exclude_every_k = args.k @@ -708,7 +728,7 @@ def concatenate_texts(group): "success_rate": len(df[df["test_preds"] != ""]) / len(df), "model": args.model, "time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), - "system_prompt": SYSTEM_PROMPT if args.type == "all" else LYRICS_PROMPT, + "system_prompt": LYRICS_PROMPT if args.type == "lyrics" else SYSTEM_PROMPT, } json.dump( From 07c78dc615d35efd0582658e19a4df80e8da51bd Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 12:24:03 +0000 Subject: [PATCH 224/262] prepare for v2 --- LICENSE | 2 +- data/punctuation_xlmr_top10_with.txt | 81 -- data/punctuation_xlmr_top10_without.txt | 76 -- data/punctuation_xlmr_top15_with.txt | 125 --- data/punctuation_xlmr_top15_without.txt | 119 --- data/punctuation_xlmr_top20_with.txt | 172 --- data/punctuation_xlmr_top20_without.txt | 179 ---- data/punctuation_xlmr_top25_with.txt | 224 ---- data/punctuation_xlmr_top25_without.txt | 240 ----- data/punctuation_xlmr_top30_with.txt | 276 ----- data/punctuation_xlmr_top30_without.txt | 290 ------ data/punctuation_xlmr_top5_with.txt | 46 - data/punctuation_xlmr_top5_without.txt | 36 - scripts/find_common_punctuation_xlmr.py | 18 +- scripts/intrinsic_eval_all.sh | 25 - scripts/lyrics_eval_all.sh | 39 - utils/clean_tweets.py | 6 +- .../evaluation => utils}/download_spacy.py | 0 wtpsplit/__init__.py | 341 +++++- wtpsplit/configs.py | 2 +- wtpsplit/data/punctuation_xlmv.txt | 98 -- wtpsplit/data/punctuation_xlmv_unk.txt | 99 -- .../extract_shared_task_data.py | 2 + wtpsplit/evaluation/__init__.py | 29 +- ...task1.py => evaluate_sepp_nlg_subtask1.py} | 10 +- .../wtp-bert-mini_intrinsic_results.json | 977 ------------------ .../wtp-bert-tiny_intrinsic_results.json | 977 ------------------ ...e-s-12l-no-adapters_intrinsic_results.json | 977 ------------------ .../wtp-canine-s-12l_intrinsic_results.json | 977 ------------------ ...ne-s-1l-no-adapters_intrinsic_results.json | 977 ------------------ .../wtp-canine-s-1l_intrinsic_results.json | 977 ------------------ ...ne-s-3l-no-adapters_intrinsic_results.json | 977 ------------------ .../wtp-canine-s-3l_intrinsic_results.json | 977 ------------------ ...ne-s-6l-no-adapters_intrinsic_results.json | 977 ------------------ .../wtp-canine-s-6l_intrinsic_results.json | 977 ------------------ ...ne-s-9l-no-adapters_intrinsic_results.json | 977 ------------------ .../wtp-canine-s-9l_intrinsic_results.json | 977 ------------------ wtpsplit/evaluation/intrinsic.py | 97 +- wtpsplit/evaluation/intrinsic_baselines.py | 27 +- .../intrinsic_baselines_multilingual.py | 33 +- wtpsplit/evaluation/intrinsic_list.py | 493 --------- wtpsplit/evaluation/intrinsic_pairwise.py | 156 +-- wtpsplit/evaluation/intrinsic_ted.py | 34 +- wtpsplit/evaluation/kmer_optuna.py | 245 ----- .../{law_bert.py => legal_baselines.py} | 18 +- wtpsplit/evaluation/time_intrinsic.py | 78 -- wtpsplit/tokenization_utils.py | 104 -- wtpsplit/train/adapter_utils.py | 117 --- wtpsplit/train/adaptertrainer.py | 543 +--------- wtpsplit/train/train.py | 160 +-- wtpsplit/train/train_adapter.py | 100 +- wtpsplit/train/train_adapter_parallel.py | 774 -------------- wtpsplit/train/train_xlmr.py | 574 ---------- wtpsplit/train/trainer.py | 2 +- wtpsplit/utils.py | 101 +- 55 files changed, 532 insertions(+), 17383 deletions(-) delete mode 100644 data/punctuation_xlmr_top10_with.txt delete mode 100644 data/punctuation_xlmr_top10_without.txt delete mode 100644 data/punctuation_xlmr_top15_with.txt delete mode 100644 data/punctuation_xlmr_top15_without.txt delete mode 100644 data/punctuation_xlmr_top20_with.txt delete mode 100644 data/punctuation_xlmr_top20_without.txt delete mode 100644 data/punctuation_xlmr_top25_with.txt delete mode 100644 data/punctuation_xlmr_top25_without.txt delete mode 100644 data/punctuation_xlmr_top30_with.txt delete mode 100644 data/punctuation_xlmr_top30_without.txt delete mode 100644 data/punctuation_xlmr_top5_with.txt delete mode 100644 data/punctuation_xlmr_top5_without.txt delete mode 100755 scripts/intrinsic_eval_all.sh delete mode 100755 scripts/lyrics_eval_all.sh rename {wtpsplit/evaluation => utils}/download_spacy.py (100%) delete mode 100644 wtpsplit/data/punctuation_xlmv.txt delete mode 100644 wtpsplit/data/punctuation_xlmv_unk.txt rename wtpsplit/evaluation/{evaluate_sepp_nlg_2021_subtask1.py => evaluate_sepp_nlg_subtask1.py} (95%) delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-bert-mini_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-bert-tiny_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-canine-s-12l-no-adapters_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-canine-s-12l_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-canine-s-1l-no-adapters_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-canine-s-1l_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-canine-s-3l-no-adapters_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-canine-s-3l_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-canine-s-6l-no-adapters_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-canine-s-6l_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-canine-s-9l-no-adapters_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/evaluation_results/wtp-canine-s-9l_intrinsic_results.json delete mode 100644 wtpsplit/evaluation/intrinsic_list.py delete mode 100644 wtpsplit/evaluation/kmer_optuna.py rename wtpsplit/evaluation/{law_bert.py => legal_baselines.py} (95%) delete mode 100644 wtpsplit/evaluation/time_intrinsic.py delete mode 100644 wtpsplit/tokenization_utils.py delete mode 100644 wtpsplit/train/adapter_utils.py delete mode 100644 wtpsplit/train/train_adapter_parallel.py delete mode 100644 wtpsplit/train/train_xlmr.py diff --git a/LICENSE b/LICENSE index a3b4e14f..56e70848 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Benjamin Minixhofer +Copyright (c) 2024 Benjamin Minixhofer, Markus Frohmann, Igor Sterner Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/data/punctuation_xlmr_top10_with.txt b/data/punctuation_xlmr_top10_with.txt deleted file mode 100644 index 53422f3a..00000000 --- a/data/punctuation_xlmr_top10_with.txt +++ /dev/null @@ -1,81 +0,0 @@ -! -" -# -% -& -' -( -) -), -); -******* -+ -, -- -. -... -/ -: -:// -; -= -? -] -_ -` -{ -| -~ -° -» -՝ -։ -، -۔ -। -၊ -။ -၏ -፡ -፡፡ -። -፣ -፤ -។ -‘ -’ -‚ -“ -” -′ -€ -╬ -▁ -▁" -▁# -▁& -▁' -▁( -▁+ -▁- -▁/ -▁: -▁` -▁« -▁· -▁» -▁̧ -▁، -▁۔ -▁। -▁។ -▁៖ -▁– -▁— -▁‘ -▁“ -▁„ -▁€ -、 -。 -】【 diff --git a/data/punctuation_xlmr_top10_without.txt b/data/punctuation_xlmr_top10_without.txt deleted file mode 100644 index 62fac613..00000000 --- a/data/punctuation_xlmr_top10_without.txt +++ /dev/null @@ -1,76 +0,0 @@ -! -" -", -# -$ -% -& -' -( -) -), -). -); -)، -******* -+ -, -- -. -..! -... -.” -/ -: -:// -:“ -; -= -? -?? -[ -] -_ -` -{ -| -~ -° -· -» -՝ -։ -، -؛ -؟ -۔ -। -၊ -။ -၏ -፡ -፡፡ -። -፣ -፤ -។ -៖ -— -—— -‘ -’ -‚ -“ -” -”. -′ -′′ -‹ -⁊ -€ -║ -╬ -▁ -、 -。 -】【 diff --git a/data/punctuation_xlmr_top15_with.txt b/data/punctuation_xlmr_top15_with.txt deleted file mode 100644 index 368d9ad9..00000000 --- a/data/punctuation_xlmr_top15_with.txt +++ /dev/null @@ -1,125 +0,0 @@ -! -" -", -# -$ -% -& -&# -' -( -) -), -). -); -)، -******* -+ -, -- -. -..! -... -.” -/ -: -:// -:“ -; -= -> -? -?? -[ -] -_ -` -{ -| -~ -° -· -» -՝ -։ -״ -، -؛ -؟ -۔ -। -၊ -။ -၍ -၏ -፡ -፡፡ -። -፣ -፤ -។ -៖ -— -—— -‘ -’ -‚ -“ -” -”. -′ -′′ -‹ -⁊ -€ -║ -╬ -▁ -▁" -▁# -▁$ -▁% -▁& -▁' -▁( -▁* -▁+ -▁- -▁.. -▁... -▁/ -▁: -▁; -▁= -▁>> -▁? -▁[ -▁^ -▁` -▁} -▁« -▁· -▁» -▁̧ -▁، -▁۔ -▁। -▁។ -▁៖ -▁– -▁— -▁‘ -▁“ -▁” -▁„ -▁• -▁€ -、 -。 -《 -「 -」 -】 -】【 -・ -😂 diff --git a/data/punctuation_xlmr_top15_without.txt b/data/punctuation_xlmr_top15_without.txt deleted file mode 100644 index 3a1fbf19..00000000 --- a/data/punctuation_xlmr_top15_without.txt +++ /dev/null @@ -1,119 +0,0 @@ -! -!!! -" -", -". -"; -# -$ -% -& -&# -' -( -) -), -). -); -)، -******* -+ -, -- -. -..! -... -...! -................ -.” -/ -: -:// -:“ -; -= -> -? -?" -?? -?” -@ -[ -\ -] -]] -_ -________________ -` -{ -| -} -~ -¤ -° -± -¶ -· -» -») -», -». -˹ -՝ -։ -׳ -״ -، -؛ -؟ -۔ -। -।’ -၊ -။ -၍ -၏ -፡ -፡፡ -። -፣ -፤ -។ -៕ -៖ -– -— -—— -‘ -’ -‚ -“ -“, -” -”, -”. -′ -′′ -‹ -⁊ -€ -║ -╕ -╗ -╛ -╝ -╬ -▁ -░ -□ -✡ -、 -。 -《 -》 -「 -」 -】 -】【 -・ -😂 diff --git a/data/punctuation_xlmr_top20_with.txt b/data/punctuation_xlmr_top20_with.txt deleted file mode 100644 index 78ca81a1..00000000 --- a/data/punctuation_xlmr_top20_with.txt +++ /dev/null @@ -1,172 +0,0 @@ -! -!!! -" -"). -", -". -# -$ -% -& -&# -' -( -) -), -). -); -)، -******* -+ -, -- -. -..! -... -.” -/ -: -:// -:“ -; -= -> -? -?" -?? -@ -[ -\ -] -]] -_ -` -{ -| -} -~ -¤ -° -± -· -» -») -», -˶ -˹ -՝ -։ -״ -، -؛ -؟ -۔ -। -।’ -၊ -။ -၍ -၏ -፡ -፡፡ -። -፣ -፤ -។ -៖ -– -— -—— -‘ -’ -‚ -“ -“, -” -”, -”. -′ -′′ -‹ -› -⁊ -€ -║ -╗ -╛ -╝ -╣ -╬ -▁ -▁! -▁" -▁# -▁$ -▁% -▁& -▁' -▁( -▁(...) -▁(« -▁) -▁* -▁+ -▁- -▁.. -▁... -▁/ -▁: -▁:) -▁; -▁;) -▁= -▁> -▁>> -▁? -▁@ -▁[ -▁[[ -▁^ -▁` -▁} -▁« -▁° -▁· -▁» -▁× -▁́ -▁̧ -▁، -▁۔ -▁। -▁ေ -▁့ -▁၊ -▁။ -▁។ -▁៖ -▁– -▁— -▁‘ -▁’’ -▁“ -▁” -▁„ -▁• -▁€ -▁↑ -▁【 -□ -○ -✡ -、 -。 -《 -》 -「 -」 -【 -】 -】【 -・ -😂 diff --git a/data/punctuation_xlmr_top20_without.txt b/data/punctuation_xlmr_top20_without.txt deleted file mode 100644 index 291e6a14..00000000 --- a/data/punctuation_xlmr_top20_without.txt +++ /dev/null @@ -1,179 +0,0 @@ -! -!! -!!! -!" -!“ -" -"). -", -". -"; -# -$ -% -%) -& -&# -' -( -) -))) -), -). -): -); -)، -* -** -******* -+ -, -- -. -." -..! -... -...! -..." -..... -...... -........ -.......... -................ -...” -..? -.” -/ -: -:// -:“ -; -= -== -> -? -?! -?" -?? -?“ -?” -@ -[ -\ -] -]] -^ -_ -__ -________________ -` -`` -{ -{{ -| -} -}} -~ -¡ -¤ -© -« -® -° -± -¶ -· -» -») -», -»- -». -¿ -˵ -˶ -˹ -՝ -՞ -։ -׳ -״ -، -؛ -؟ -۔ -۔۔۔ -। -।’ -၊ -။ -၌ -၍ -၏ -፡ -፡፡ -። -፣ -፤ -፥ -។ -៕ -៖ -– -— -—— -‘ -‘‘ -’ -‚ -“ -“, -“. -” -”, -”. -‡ -• -′ -′′ -‹ -› -⁊ -€ -₺ -∼ -┐ -║ -╒ -╕ -╗ -╛ -╝ -╢ -╣ -╬ -▁ -░ -□ -○ -✖ -✡ -❥ -⤵ -⭐ -、 -。 -。” -《 -》 -「 -」 -【 -】 -】【 -〜 -・ -🌟 -🎁 -😂 -😄 -🙂 diff --git a/data/punctuation_xlmr_top25_with.txt b/data/punctuation_xlmr_top25_with.txt deleted file mode 100644 index 7daf84ad..00000000 --- a/data/punctuation_xlmr_top25_with.txt +++ /dev/null @@ -1,224 +0,0 @@ -! -!! -!!! -!" -" -"). -", -". -"; -# -$ -% -%) -& -&# -' -( -) -), -). -): -); -)، -* -******* -+ -, -- -. -." -..! -... -...! -................ -.” -/ -: -:// -:“ -; -= -> -? -?" -?? -?“ -?” -@ -[ -\ -] -]] -^ -_ -________________ -` -`` -{ -| -} -~ -¤ -° -± -· -» -») -», -»- -». -¿ -× -˵ -˶ -˹ -՝ -՞ -։ -׳ -״ -، -؛ -؟ -۔ -। -।’ -၊ -။ -၍ -၏ -፡ -፡፡ -። -፣ -፤ -፥ -។ -៕ -៖ -– -— -—— -‘ -‘‘ -’ -‚ -“ -“, -“. -” -”, -”. -”。 -‡ -• -′ -′′ -‹ -› -⁊ -€ -₺ -┐ -║ -╒ -╕ -╗ -╛ -╝ -╢ -╣ -╬ -▁ -▁! -▁" -▁# -▁$ -▁% -▁%. -▁& -▁' -▁( -▁(...) -▁(« -▁) -▁* -▁+ -▁- -▁.. -▁... -▁/ -▁: -▁:) -▁:-) -▁; -▁;) -▁< -▁= -▁> -▁>> -▁? -▁@ -▁[ -▁[...] -▁[[ -▁^ -▁` -▁{ -▁} -▁~ -▁“ -▁§ -▁« -▁° -▁· -▁» -▁¿ -▁× -▁́ -▁̧ -▁، -▁۔ -▁। -▁් -▁ေ -▁့ -▁၊ -▁။ -▁។ -▁៕ -▁៖ -▁– -▁— -▁‘ -▁‘‘ -▁’’ -▁“ -▁” -▁„ -▁• -▁‬ -▁› -▁€ -▁↑ -▁【 -▁😀 -░ -□ -○ -✡ -⭐ -、 -。 -《 -》 -「 -」 -【 -】 -】【 -〜 -・ -~ -😂 diff --git a/data/punctuation_xlmr_top25_without.txt b/data/punctuation_xlmr_top25_without.txt deleted file mode 100644 index cd3c2b53..00000000 --- a/data/punctuation_xlmr_top25_without.txt +++ /dev/null @@ -1,240 +0,0 @@ -! -!! -!!! -!" -!) -!» -!“ -!” -" -") -"), -"). -", -". -"; -"، -# -$ -% -%) -& -&# -' -'' -( -) -))) -), -). -): -); -)، -* -** -**** -******* -+ -, -- ----------- -. -." -..! -..!! -... -...! -..." -...) -..... -...... -....... -........ -.......... -................ -...» -...” -..? -.” -/ -: -:// -:“ -; -= -== -> ->< -? -?! -?" -?? -?“ -?” -@ -[ -[/ -\ -\\ -] -]] -^ -_ -__ -___ -________ -________________ -` -`` -{ -{{ -| -} -}} -~ -¡ -£ -¤ -§ -© -« -«. -® -° -± -¶ -· -» -») -», -»,- -»- -». -»; -»։ -¿ -× -˭ -˵ -˶ -˷ -˹ -˾ -՝ -՞ -։ -׳ -״ -، -؎ -؛ -؟ -؟؟؟؟ -٪ -٫ -٬ -۔ -۔۔۔ -। -।। -।’ -।” -၊ -။ -၌ -၍ -၎ -၏ -፡ -፡፡ -። -፣ -፤ -፥ -។ -៕ -៖ -‐ -– -— -—— -‘ -‘‘ -’ -‚ -“ -“, -“. -” -”) -”), -”, -”. -”; -”“ -”。 -„ -‡ -• -′ -′′ -‹ -› -›› -⁊ -€ -₱ -₺ -∼ -≥ -┐ -║ -╒ -╕ -╗ -╙ -╛ -╝ -╢ -╣ -╥ -╬ -▁ -░ -■ -□ -▼ -○ -⚜ -✖ -✡ -❥ -⤵ -⭐ -、 -。 -。” -《 -》 -「 -」 -」, -』 -【 -】 -】【 -〜 -・ -~ -🌟 -🎁 -🐛🐜 -🐝 -👍 -💕 -💪 -😂 -😄 -😍 -😘 -🙂 diff --git a/data/punctuation_xlmr_top30_with.txt b/data/punctuation_xlmr_top30_with.txt deleted file mode 100644 index 86389d4b..00000000 --- a/data/punctuation_xlmr_top30_with.txt +++ /dev/null @@ -1,276 +0,0 @@ -! -!! -!!! -!" -!“ -" -"). -", -". -"; -# -$ -% -%) -& -&# -' -( -) -))) -), -). -): -); -)، -* -** -******* -+ -, -- -. -." -..! -... -...! -..." -...) -...... -................ -..? -.” -/ -: -:// -:“ -; -= -== -> ->< -? -?! -?" -?? -?“ -?” -@ -[ -\ -\\ -] -]] -^ -_ -__ -___ -________ -________________ -` -`` -{ -{{ -| -} -}} -~ -¡ -¤ -© -« -® -° -± -¶ -· -» -») -», -»- -». -¿ -× -˵ -˶ -˹ -՝ -՞ -։ -׳ -״ -، -؛ -؟ -۔ -۔۔۔ -। -।’ -।” -၊ -။ -၍ -၏ -፡ -፡፡ -። -፣ -፤ -፥ -។ -៕ -៖ -– -— -—— -‘ -‘‘ -’ -‚ -“ -“, -“. -” -”, -”. -”。 -‡ -• -′ -′′ -‹ -› -⁊ -€ -₺ -┐ -║ -╒ -╕ -╗ -╙ -╛ -╝ -╢ -╣ -╬ -▁ -▁! -▁" -▁# -▁$ -▁% -▁%. -▁& -▁' -▁'' -▁( -▁(+ -▁(...) -▁(« -▁) -▁* -▁** -▁+ -▁- -▁-- -▁--> -▁.. -▁... -▁..... -▁......... -▁/ -▁: -▁:) -▁:- -▁:-) -▁:: -▁; -▁;) -▁< -▁= -▁> -▁>> -▁? -▁@ -▁[ -▁[...] -▁[[ -▁^ -▁` -▁{ -▁} -▁~ -▁“ -▁¡ -▁£ -▁§ -▁« -▁° -▁· -▁» -▁¿ -▁× -▁́ -▁̧ -▁، -▁۔ -▁। -▁් -▁ေ -▁့ -▁၊ -▁။ -▁፣ -▁។ -▁៕ -▁៖ -▁– -▁— -▁‘ -▁‘‘ -▁’’ -▁“ -▁” -▁„ -▁• -▁‬ -▁‹‹ -▁› -▁€ -▁€. -▁← -▁↑ -▁→ -▁「 -▁【 -▁😀 -▁😉 -▁🙂 -░ -■ -□ -○ -● -✖ -✡ -❥ -⤵ -⭐ -、 -。 -。” -《 -》 -「 -」 -』 -【 -】 -】【 -〜 -・ -~ -😂 -😄 -🙂 diff --git a/data/punctuation_xlmr_top30_without.txt b/data/punctuation_xlmr_top30_without.txt deleted file mode 100644 index 2a6d0402..00000000 --- a/data/punctuation_xlmr_top30_without.txt +++ /dev/null @@ -1,290 +0,0 @@ -! -!! -!!! -!!!! -!" -!) -!» -!“ -!” -" -") -"), -"). -", -". -"; -"? -"، -# -$ -% -%) -& -&# -' -'' -( -) -))) -), -). -): -); -)، -* -** -*** -**** -******* -+ -, -- ---- ----- ----------- -. -." -.'' -..! -..!! -... -...! -..." -...) -..... -...... -....... -........ -.......... -........... -................ -...» -...” -..? -.” -/ -// -: -:)) -:// -:“ -; -< -<<< -= -== -> ->< ->> ->>> -? -?! -?" -?? -??? -???? -?“ -?” -@ -[ -[/ -\ -\\ -] -]] -^ -_ -__ -___ -____ -________ -________________ -` -`` -{ -{{ -| -} -}} -~ -~~ -¡ -£ -¤ -§ -© -« -«. -® -° -± -¶ -· -» -») -», -»,- -»- -». -»: -»; -»։ -»، -¿ -× -˭ -˳ -˵ -˶ -˷ -˹ -˽ -˾ -϶ -՝ -՞ -։ -֊ -׳ -״ -، -؎ -؛ -؟ -؟؟؟؟ -٪ -٫ -٬ -۔ -۔۔۔ -। -।। -।’ -।” -၊ -။ -၌ -၍ -၎ -၏ -፡ -፡፡ -። -፣ -፤ -፥ -፦ -។ -៕ -៖ -៚ -‐ -– -— -—— -‘ -‘‘ -’ -‚ -“ -“, -“. -” -”) -”), -”, -”. -”; -”“ -”。 -„ -‡ -• -‰ -′ -′′ -‹ -› -›› -⁊ -₫ -€ -₱ -₺ -− -∼ -≥ -─ -┐ -┴ -║ -╒ -╕ -╗ -╙ -╚ -╛ -╝ -╡ -╢ -╣ -╥ -╬ -▀ -▁ -░ -▒ -▓ -■ -□ -▼ -◄ -○ -● -☝ -⚜ -✈ -✖ -✡ -❥ -⤵ -⭐ -、 -、「 -。 -。” -《 -》 -》, -「 -」 -」, -」。 -『 -』 -【 -】 -】【 -〒 -〜 -・ -~ -🇩 -🇮 -🌟 -🎁 -🐛🐜 -🐝 -🐞 -👁 -👆 -👍 -💕 -💪 -😂 -😄 -😍 -😘 -🙂 -🦂 diff --git a/data/punctuation_xlmr_top5_with.txt b/data/punctuation_xlmr_top5_with.txt deleted file mode 100644 index 1fce3876..00000000 --- a/data/punctuation_xlmr_top5_with.txt +++ /dev/null @@ -1,46 +0,0 @@ -! -" -# -% -' -( -) -, -- -. -... -/ -: -; -? -| -° -։ -، -۔ -। -၊ -။ -፡፡ -። -፣ -។ -‘ -’ -‚ -▁ -▁# -▁( -▁- -▁« -▁· -▁، -▁۔ -▁। -▁។ -▁– -▁‘ -▁€ -、 -。 -】【 diff --git a/data/punctuation_xlmr_top5_without.txt b/data/punctuation_xlmr_top5_without.txt deleted file mode 100644 index 3d5d469a..00000000 --- a/data/punctuation_xlmr_top5_without.txt +++ /dev/null @@ -1,36 +0,0 @@ -! -" -# -% -' -( -) -, -- -. -... -/ -: -; -? -_ -| -° -» -։ -، -۔ -। -၊ -။ -፡፡ -። -፣ -។ -‘ -’ -‚ -▁ -、 -。 -】【 diff --git a/scripts/find_common_punctuation_xlmr.py b/scripts/find_common_punctuation_xlmr.py index 83329e4c..c7f00f05 100644 --- a/scripts/find_common_punctuation_xlmr.py +++ b/scripts/find_common_punctuation_xlmr.py @@ -1,15 +1,14 @@ +import json +import os import re +import unicodedata from collections import Counter -from transformers import HfArgumentParser, XLMRobertaTokenizer from dataclasses import dataclass -from datasets import load_dataset -import unicodedata -import json -import pickle -import pandas as pd -import os from pathlib import Path +import pandas as pd +from datasets import load_dataset +from transformers import HfArgumentParser, XLMRobertaTokenizer ROOT_DIR = Path(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) LANGINFO = pd.read_csv(os.path.join(ROOT_DIR, "data", "language_info.csv"), index_col=0) @@ -26,15 +25,14 @@ class Args: tokenizer = XLMRobertaTokenizer.from_pretrained("xlm-roberta-base") -# Regex for checking tokens that start with an underscore followed by punctuation punctuation_pattern = re.compile(r"^▁+[^\w\s]+?$") def is_punctuation(token, include_whitespace=False): - # Check if token matches the regular expression + # check if token matches the regular expression if punctuation_pattern.match(token): return include_whitespace - # Fallback to check if all characters in the token are punctuation + # fallback return all("P" in unicodedata.category(ch) for ch in token) or all("S" in unicodedata.category(ch) for ch in token) diff --git a/scripts/intrinsic_eval_all.sh b/scripts/intrinsic_eval_all.sh deleted file mode 100755 index f804b2e2..00000000 --- a/scripts/intrinsic_eval_all.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -# This script takes one argument: --model_path -MODEL_PATH="$1" - -# array to hold the following additional commands: -# "--do_lowercase", "--do_remove_punct", "--do_lowercase --do_remove_punct" -assoc_array=( - # "--do_lowercase" - "--do_remove_punct" - "--do_lowercase --do_remove_punct" -) -# Loop through the associative array -for i in "${assoc_array[@]}" -do - # Construct the command - cmd="python3 wtpsplit/evaluation/intrinsic.py --model_path $MODEL_PATH $i" - - - # Execute the command - echo "Executing: $cmd" - eval $cmd -done - -echo "All evaluations completed." diff --git a/scripts/lyrics_eval_all.sh b/scripts/lyrics_eval_all.sh deleted file mode 100755 index d00392ee..00000000 --- a/scripts/lyrics_eval_all.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -# This script takes one argument: --model_path -MODEL_PATH="$1" - -# Define an associative array for eval_data_path and their corresponding save_suffixes -declare -A eval_data_paths=( - ["data/lyrics_lines.pt"]="lines" - ["data/lyrics_lines_lower.pt"]="lines_lower" - ["data/lyrics_lines_rmp_lower.pt"]="lines_lower" - ["data/lyrics_lines_rmp_lower.pt"]="lines_lower_rmp" - ["data/lyrics_lines_rmp.pt"]="lines_rmp" - ["data/lyrics_verses_strip_n.pt"]="verses" - ["data/lyrics_verses_lower_strip_n.pt"]="verses_lower" - ["data/lyrics_verses_rmp_strip_n.pt"]="verses_rmp" - ["data/lyrics_verses_rmp_lower_strip_n.pt"]="verses_lower_rmp" -) - -# Path to the custom_language_list file -CUSTOM_LANG_LIST="data/lyrics_langs.csv" - -# Loop through the associative array -for eval_data_path in "${!eval_data_paths[@]}"; do - save_suffix="${eval_data_paths[$eval_data_path]}" - - # Construct the command - cmd="python3 wtpsplit/evaluation/intrinsic.py --model_path $MODEL_PATH --eval_data_path $eval_data_path --custom_language_list $CUSTOM_LANG_LIST" - - # Append --save_suffix if it's not empty - if [[ -n $save_suffix ]]; then - cmd="$cmd --save_suffix $save_suffix" - fi - - # Execute the command - echo "Executing: $cmd" - eval $cmd -done - -echo "All evaluations completed." diff --git a/utils/clean_tweets.py b/utils/clean_tweets.py index 696a07bc..b30c9135 100644 --- a/utils/clean_tweets.py +++ b/utils/clean_tweets.py @@ -45,8 +45,6 @@ def pair_sentences(sequences): transformed_data = {} for lang_code, lang_data in data.items(): - if lang_code == "en-de": - continue transformed_data[lang_code] = {} for content_type, datasets in lang_data.items(): if content_type != "sentence": @@ -64,7 +62,7 @@ def pair_sentences(sequences): return transformed_data -data = torch.load("data/all_data_11_05-all.pth") +data = torch.load("data/all_tweets.pth") transformed_data = transform_data(data) -torch.save(transformed_data, "data/all_data_11_05-short_proc_SM.pth") +torch.save(transformed_data, "data/all_data_tweets_cleaned.pth") diff --git a/wtpsplit/evaluation/download_spacy.py b/utils/download_spacy.py similarity index 100% rename from wtpsplit/evaluation/download_spacy.py rename to utils/download_spacy.py diff --git a/wtpsplit/__init__.py b/wtpsplit/__init__.py index f3717c39..9a4307fe 100644 --- a/wtpsplit/__init__.py +++ b/wtpsplit/__init__.py @@ -1,7 +1,7 @@ +import contextlib import math import os from pathlib import Path -import contextlib # avoid the "None of PyTorch, TensorFlow, etc. have been found" warning. with contextlib.redirect_stderr(open(os.devnull, "w")): @@ -9,13 +9,16 @@ import numpy as np import skops.io as sio +from huggingface_hub import hf_hub_download from transformers import AutoConfig, AutoModelForTokenClassification from transformers.utils.hub import cached_file +import adapters +from wtpsplit.evaluation import token_to_char_probs from wtpsplit.extract import ORTWrapper, PyTorchWrapper, extract from wtpsplit.utils import Constants, indices_to_sentences, sigmoid -__version__ = "1.2.4" +__version__ = "1.0.0" class WtP: @@ -199,7 +202,7 @@ def _predict_proba( input_texts = [] space_positions = [] - for text in input_texts: + for text in outer_batch_texts: if remove_whitespace_before_inference: text_space_positions = [] input_text = "" @@ -217,7 +220,7 @@ def _predict_proba( input_texts.append(input_text) outer_batch_logits = extract( - outer_batch_texts, + input_texts, self.model, lang_code=lang_code, stride=stride, @@ -225,7 +228,7 @@ def _predict_proba( batch_size=batch_size, pad_last_batch=pad_last_batch, verbose=verbose, - ) + )[0] def newline_probability_fn(logits): return sigmoid(logits[:, Constants.NEWLINE_INDEX]) @@ -238,14 +241,14 @@ def newline_probability_fn(logits): sentence_probs = newline_probs = newline_probability_fn(logits) if remove_whitespace_before_inference: - newline_probs, sentence_probs = list(newline_probs), list(sentence_probs) + full_newline_probs, full_sentence_probs = list(newline_probs), list(sentence_probs) - for i in space_positions: - newline_probs.insert(i, np.zeros_like(newline_probs[0])) - sentence_probs.insert(i, np.zeros_like(sentence_probs[0])) + for j in space_positions[i]: + full_newline_probs.insert(j, np.zeros_like(newline_probs[0])) + full_sentence_probs.insert(j, np.zeros_like(sentence_probs[0])) - newline_probs = np.array(newline_probs) - sentence_probs = np.array(sentence_probs) + newline_probs = np.array(full_newline_probs) + sentence_probs = np.array(full_sentence_probs) if return_paragraph_probabilities: yield sentence_probs, newline_probs @@ -397,3 +400,319 @@ def _split( text, np.where(probs > sentence_threshold)[0], strip_whitespace=strip_whitespace ) yield sentences + + +class SaT: + def __init__( + self, + model_name_or_model, + from_pretrained_kwargs=None, + ort_providers=None, + ort_kwargs=None, + style_or_domain: str = None, + language: str = None, + lora_path: str = None, # local + hub_prefix="segment-any-text", + ): + self.model_name_or_model = model_name_or_model + self.ort_providers = ort_providers + self.ort_kwargs = ort_kwargs + + self.use_lora = False + + if isinstance(model_name_or_model, (str, Path)): + model_name = str(model_name_or_model) + is_local = os.path.isdir(model_name) + + if not is_local and hub_prefix is not None: + model_name_to_fetch = f"{hub_prefix}/{model_name}" + else: + model_name_to_fetch = model_name + + if is_local: + model_path = Path(model_name) + onnx_path = model_path / "model.onnx" + if not onnx_path.exists(): + onnx_path = None + else: + # no need to load if no ort_providers set + if ort_providers is not None: + onnx_path = cached_file(model_name_to_fetch, "model.onnx", **(from_pretrained_kwargs or {})) + else: + onnx_path = None + + if ort_providers is not None: + if onnx_path is None: + raise ValueError( + "Could not find an ONNX model in the model directory. Try `use_ort=False` to run with PyTorch." + ) + + try: + import onnxruntime as ort # noqa + except ModuleNotFoundError: + raise ValueError("Please install `onnxruntime` to use WtP with an ONNX model.") + + # to register models for AutoConfig + import wtpsplit.configs # noqa + + # TODO: ONNX integration + self.model = ORTWrapper( + AutoConfig.from_pretrained(model_name_to_fetch, **(from_pretrained_kwargs or {})), + ort.InferenceSession(str(onnx_path), providers=ort_providers, **(ort_kwargs or {})), + ) + else: + # to register models for AutoConfig + try: + import torch # noqa + except ModuleNotFoundError: + raise ValueError("Please install `torch` to use WtP with a PyTorch model.") + + import wtpsplit.models # noqa + + self.model = PyTorchWrapper( + AutoModelForTokenClassification.from_pretrained( + model_name_to_fetch, **(from_pretrained_kwargs or {}) + ) + ) + # LoRA LOADING + # TODO: LoRA + ONNX ? + if (style_or_domain and not language) or (language and not style_or_domain): + raise ValueError("Please specify both language and style_or_domain!") + if style_or_domain and language: + model_type = self.model.model.config.model_type + # adapters need xlm-roberta as model type. + self.model.model.config.model_type = "xlm-roberta" + adapters.init(self.model.model) + # reset model type (used later) + self.model.model.config.model_type = model_type + try: + if not lora_path: + for file in [ + "adapter_config.json", + "head_config.json", + "pytorch_adapter.bin", + "pytorch_model_head.bin", + ]: + hf_hub_download( + repo_id=model_name_to_fetch, + subfolder=f"loras/{style_or_domain}/{language}", + filename=file, + local_dir=Constants.CACHE_DIR, + ) + lora_load_path = str(Constants.CACHE_DIR / "loras" / style_or_domain / language) + else: + lora_load_path = lora_path + + self.model.model.load_adapter( + lora_load_path, + set_active=True, + with_head=True, + load_as="sat-lora", + ) + # merge lora weights into transformer for 0 efficiency overhead + self.model.model.merge_adapter("sat-lora") + self.use_lora = True + except: + if lora_path: + print(f"LoRA at {lora_path} not found, using base model...") + else: + print(f"LoRA {style_or_domain}/{language} not found, using base model...") + else: + if ort_providers is not None: + raise ValueError("You can only use onnxruntime with a model directory, not a model object.") + + self.model = model_name_or_model + + def __getattr__(self, name): + assert hasattr(self, "model") + return getattr(self.model, name) + + def predict_proba( + self, + text_or_texts, + stride=256, + block_size: int = 512, + batch_size=32, + pad_last_batch: bool = False, + return_paragraph_probabilities=False, + verbose: bool = False, + ): + if isinstance(text_or_texts, str): + return next( + self._predict_proba( + [text_or_texts], + stride=stride, + block_size=block_size, + batch_size=batch_size, + pad_last_batch=pad_last_batch, + return_paragraph_probabilities=return_paragraph_probabilities, + verbose=verbose, + ) + ) + else: + return self._predict_proba( + text_or_texts, + stride=stride, + block_size=block_size, + batch_size=batch_size, + pad_last_batch=pad_last_batch, + return_paragraph_probabilities=return_paragraph_probabilities, + verbose=verbose, + ) + + def _predict_proba( + self, + texts, + stride: int, + block_size: int, + batch_size: int, + pad_last_batch: bool, + return_paragraph_probabilities: bool, + verbose: bool, + ): + def newline_probability_fn(logits): + return sigmoid(logits[:, Constants.NEWLINE_INDEX]) + + for text in texts: + outer_batch_logits, offsets_mapping, tokenizer = extract( + [text], + self.model, + stride=stride, + max_block_size=block_size, + batch_size=batch_size, + pad_last_batch=pad_last_batch, + verbose=verbose, + ) + + logits = outer_batch_logits[0] + if offsets_mapping is not None: + offsets_mapping = offsets_mapping[0] + tokens = tokenizer.tokenize(text, verbose=False) + + # convert token probabilities to character probabilities for the entire array + logits = token_to_char_probs(text, tokens, logits, tokenizer, offsets_mapping) + sentence_probs = newline_probs = newline_probability_fn(logits) + + if return_paragraph_probabilities: + yield sentence_probs, newline_probs + else: + yield sentence_probs + + def split( + self, + text_or_texts, + threshold: float = None, + stride=64, + block_size: int = 512, + batch_size=32, + pad_last_batch: bool = False, + paragraph_threshold: float = 0.5, + strip_whitespace: bool = False, + do_paragraph_segmentation=False, + verbose: bool = False, + ): + if isinstance(text_or_texts, str): + return next( + self._split( + [text_or_texts], + threshold=threshold, + stride=stride, + block_size=block_size, + batch_size=batch_size, + pad_last_batch=pad_last_batch, + paragraph_threshold=paragraph_threshold, + strip_whitespace=strip_whitespace, + do_paragraph_segmentation=do_paragraph_segmentation, + verbose=verbose, + ) + ) + else: + return self._split( + text_or_texts, + threshold=threshold, + stride=stride, + block_size=block_size, + batch_size=batch_size, + pad_last_batch=pad_last_batch, + paragraph_threshold=paragraph_threshold, + strip_whitespace=strip_whitespace, + do_paragraph_segmentation=do_paragraph_segmentation, + verbose=verbose, + ) + + def _split( + self, + texts, + threshold: float, + stride: int, + block_size: int, + batch_size: int, + pad_last_batch: bool, + paragraph_threshold: float, + do_paragraph_segmentation: bool, + strip_whitespace: bool, + verbose: bool, + ): + def get_default_threshold(model_str: str): + if "sm" in model_str: + return 0.25 + if self.use_lora: + return 0.5 + if "no-limited-lookahead" in model_str and "sm" not in model_str: + return 0.01 + return 0.025 + + default_threshold = get_default_threshold(self.model_name_or_model) + sentence_threshold = threshold if threshold is not None else default_threshold + + for text, probs in zip( + texts, + self.predict_proba( + texts, + stride=stride, + block_size=block_size, + batch_size=batch_size, + pad_last_batch=pad_last_batch, + return_paragraph_probabilities=do_paragraph_segmentation, + verbose=verbose, + ), + ): + if do_paragraph_segmentation: + sentence_probs, newline_probs = probs + + offset = 0 + paragraphs = [] + + for paragraph in indices_to_sentences(text, np.where(newline_probs > paragraph_threshold)[0]): + sentences = [] + + for sentence in indices_to_sentences( + paragraph, + np.where( + sentence_probs[offset : offset + len(paragraph)] > sentence_threshold, + )[0], + strip_whitespace=strip_whitespace, + ): + sentences.append(sentence) + + paragraphs.append(sentences) + offset += len(paragraph) + + yield paragraphs + else: + sentences = indices_to_sentences( + text, np.where(probs > sentence_threshold)[0], strip_whitespace=strip_whitespace + ) + yield sentences + + +if __name__ == "__main__": + sat_lora = SaT("sat-3l", style_or_domain="ud", language="en") + out = sat_lora.split( + "Hello this is a test But this is different now Now the next one starts looool", + do_paragraph_segmentation=False, + strip_whitespace=True, + ) + print(out) + splits = list(sat_lora.split(["Paragraph-A Paragraph-B", "Paragraph-C100 Paragraph-D"])) + print(splits) diff --git a/wtpsplit/configs.py b/wtpsplit/configs.py index 0b63587a..0eaffd02 100644 --- a/wtpsplit/configs.py +++ b/wtpsplit/configs.py @@ -40,7 +40,7 @@ def __init__( class SubwordXLMConfig(XLMRobertaConfig): - """Config for XLM-R and XLM-V models. Used for token-level training. + """Config for XLM-R. Used for token-level training, i.e., SaT models. Args: XLMRobertaConfig: Base class. diff --git a/wtpsplit/data/punctuation_xlmv.txt b/wtpsplit/data/punctuation_xlmv.txt deleted file mode 100644 index 723c5b2f..00000000 --- a/wtpsplit/data/punctuation_xlmv.txt +++ /dev/null @@ -1,98 +0,0 @@ -! -" -# -$ -% -& -' -( -) -* -+ -, -- -. -/ -: -; -< -= -> -? -@ -[ -\ -] -^ -_ -` -{ -| -} -~ -¡ -£ -§ -© -« -¬ -® -° -± -· -» -¿ -÷ -՝ -՞ -։ -־ -׳ -، -؛ -؟ -۔ -। -॥ -၊ -။ -၌ -၍ -၎ -၏ -፡ -። -፣ -፤ -፥ -។ -៕ -៖ -– -— -‘ -’ -“ -” -„ -• -′ -‹ -› -€ -↑ -→ -□ -➖ -、 -。 -《 -》 -「 -」 -『 -』 -【 -】 -・ -~ diff --git a/wtpsplit/data/punctuation_xlmv_unk.txt b/wtpsplit/data/punctuation_xlmv_unk.txt deleted file mode 100644 index c4b6017d..00000000 --- a/wtpsplit/data/punctuation_xlmv_unk.txt +++ /dev/null @@ -1,99 +0,0 @@ -! -" -# -$ -% -& -' -( -) -* -+ -, -- -. -/ -: -; -< -= -> -? -@ -[ -\ -] -^ -_ -` -{ -| -} -~ -¡ -£ - -§ -© -« -¬ -® -° -± -· -» -¿ -÷ -՝ -՞ -։ -־ -׳ -، -؛ -؟ -۔ -। -॥ -၊ -။ -၌ -၍ -၎ -၏ -፡ -። -፣ -፤ -፥ -។ -៕ -៖ -– -— -‘ -’ -“ -” -„ -• -′ -‹ -› -€ -↑ -→ -□ -➖ -、 -。 -《 -》 -「 -」 -『 -』 -【 -】 -・ -~ diff --git a/wtpsplit/data_acquisition/extract_shared_task_data.py b/wtpsplit/data_acquisition/extract_shared_task_data.py index c10f728e..7998e835 100644 --- a/wtpsplit/data_acquisition/extract_shared_task_data.py +++ b/wtpsplit/data_acquisition/extract_shared_task_data.py @@ -60,6 +60,8 @@ def build_data_dictionary(root_dir): return data_dict +# this must be downloaded first from the linked drive here +# https://sites.google.com/view/sentence-segmentation root_dir = Constants.ROOT_DIR.parent / "data/sepp_nlg_2021_data" data = build_data_dictionary(root_dir) diff --git a/wtpsplit/evaluation/__init__.py b/wtpsplit/evaluation/__init__.py index 5a0c7a7f..8d3ed68c 100644 --- a/wtpsplit/evaluation/__init__.py +++ b/wtpsplit/evaluation/__init__.py @@ -49,17 +49,18 @@ def evaluate_sentences( assert len(text) == len("".join(predicted_sentences)) labels = get_labels(lang_code, sentences) - + predicted_end_indices = np.cumsum(np.array([len(s) for s in predicted_sentences])) predictions = np.zeros_like(labels) predictions[predicted_end_indices] = 1 - + assert len(labels) == len(predictions) - + + # we exclude labels for metrics calculation to enable a fair comparison with LLMs. if exclude_every_k > 0: true_end_indices = np.where(labels == 1)[0] # every k-th from those where labels are 1 - indices_to_remove = true_end_indices[exclude_every_k-1::exclude_every_k] + indices_to_remove = true_end_indices[exclude_every_k - 1 :: exclude_every_k] # mask for indices to keep mask = np.ones_like(labels, dtype=bool) @@ -69,7 +70,7 @@ def evaluate_sentences( # remove indices labels = labels[mask] predictions = predictions[mask] - + assert len(labels) == len(predictions) return f1_score(labels, predictions, zero_division=0), { @@ -84,16 +85,14 @@ def evaluate_sentences( "length": len(labels), } -def evaluate_sentences_llm( - labels, predictions, return_indices: bool = False, exclude_every_k: int = 0 -): - + +def evaluate_sentences_llm(labels, predictions, return_indices: bool = False, exclude_every_k: int = 0): assert len(labels) == len(predictions) - + if exclude_every_k > 0: true_end_indices = np.where(labels == 1)[0] # every k-th from those where labels are 1 - indices_to_remove = true_end_indices[exclude_every_k-1::exclude_every_k] + indices_to_remove = true_end_indices[exclude_every_k - 1 :: exclude_every_k] # mask for indices to keep mask = np.ones_like(labels, dtype=bool) @@ -103,7 +102,7 @@ def evaluate_sentences_llm( # remove indices labels = labels[mask] predictions = predictions[mask] - + assert len(labels) == len(predictions) return { @@ -119,6 +118,7 @@ def evaluate_sentences_llm( "length": len(labels), } + def train_mixture(lang_code, original_train_x, train_y, n_subsample=None, features=None, skip_punct: bool = False): original_train_x = torch.from_numpy(original_train_x).float() @@ -273,7 +273,9 @@ def our_sentencize( return reconstruct_sentences(text, indices_to_sentences(text, predicted_indices_transformed)) -# baselines +########### +# BASELINES +########### ERSATZ_LANGUAGES = { "ar", @@ -442,6 +444,7 @@ def get_token_spans(tokenizer, offsets_mapping, tokens): def token_to_char_probs(text, tokens, token_logits, tokenizer, offsets_mapping): + """Map from token probabalities to character probabilities""" char_probs = np.full((len(text), token_logits.shape[1]), np.min(token_logits)) # Initialize with very low numbers valid_indices, valid_offsets = get_token_spans(tokenizer, offsets_mapping, tokens) diff --git a/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py b/wtpsplit/evaluation/evaluate_sepp_nlg_subtask1.py similarity index 95% rename from wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py rename to wtpsplit/evaluation/evaluate_sepp_nlg_subtask1.py index fb73bd94..baca8648 100644 --- a/wtpsplit/evaluation/evaluate_sepp_nlg_2021_subtask1.py +++ b/wtpsplit/evaluation/evaluate_sepp_nlg_subtask1.py @@ -1,7 +1,6 @@ import json import os import sys -from pprint import pprint from sklearn.metrics import classification_report @@ -9,6 +8,11 @@ def evaluate_subtask1(splits, langs, prediction_dir: str, supervisions, include_n_documents) -> None: + """ + Mirrors the original SEPP-NLG 2021 Shared Task evaluation function + https://sites.google.com/view/sentence-segmentation + """ + results = {} avg_holder = {} for supervision in supervisions: @@ -29,8 +33,7 @@ def evaluate_subtask1(splits, langs, prediction_dir: str, supervisions, include_ if str(fname).startswith(str(relevant_dir)) and str(fname).endswith(".tsv") ] - for i, gt_tsv_file in enumerate(gt_tsv_files, 0): - # print(i, gt_tsv_file) + for _, gt_tsv_file in enumerate(gt_tsv_files, 0): basename = os.path.basename(gt_tsv_file) with open(gt_tsv_file, encoding="utf-8") as f: @@ -56,7 +59,6 @@ def evaluate_subtask1(splits, langs, prediction_dir: str, supervisions, include_ all_predicted_labels.extend(pred_labels) eval_result = classification_report(all_gt_labels, all_predicted_labels, output_dict=True) - # pprint(eval_result, indent=4) print(eval_result["1"]["f1-score"]) avg_holder[supervision] += eval_result["1"]["f1-score"] results[lang_code][split][supervision] = eval_result diff --git a/wtpsplit/evaluation/evaluation_results/wtp-bert-mini_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-bert-mini_intrinsic_results.json deleted file mode 100644 index 812ca9ff..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-bert-mini_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.7537688442211055, - "t": 0.7562749237626084, - "punct": 0.849820604818042 - }, - "ud": { - "u": 0.9792626728110598, - "t": 0.9952830188679245, - "punct": 0.9988249118683901 - } - }, - "am": { - "opus100": { - "u": 0.5768080239310224, - "t": 0.5240899357601713, - "punct": 0.655965500718735 - } - }, - "ar": { - "ersatz": { - "u": 0.8523364485981307, - "t": 0.8742342342342343, - "punct": 0.8734491315136477 - }, - "opus100": { - "u": 0.6039680494717856, - "t": 0.6161731207289294, - "punct": 0.6883116883116884 - }, - "ud": { - "u": 0.7401296405421333, - "t": 0.8123249299719887, - "punct": 0.8460987831066571 - } - }, - "az": { - "opus100": { - "u": 0.6520431629223421, - "t": 0.7372149656851892, - "punct": 0.820888685295465 - } - }, - "be": { - "opus100": { - "u": 0.6778835510294442, - "t": 0.6862702702702703, - "punct": 0.8523228652997664 - }, - "ud": { - "u": 0.8551047703967899, - "t": 0.840530141085934, - "punct": 0.873141724479683 - } - }, - "bg": { - "opus100": { - "u": 0.9277566539923954, - "t": 0.9006410256410255, - "punct": 0.9602551521099116 - }, - "ud": { - "u": 0.9623992837958818, - "t": 0.9640287769784173, - "punct": 0.9838854073410923 - } - }, - "bn": { - "opus100": { - "u": 0.7760803142732432, - "t": 0.819579096713171, - "punct": 0.844738778513613 - }, - "ud": { - "u": 0.9909909909909909, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8935567618598065, - "t": 0.8934561776517836, - "punct": 0.9356265356265356 - }, - "ud": { - "u": 0.9710373880989994, - "t": 0.990280777537797, - "punct": 0.9989165763813651 - } - }, - "ceb": { - "ud": { - "u": 0.9946808510638298, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.9489472166137872, - "t": 0.9424948392804483, - "punct": 0.9713114754098361 - }, - "opus100": { - "u": 0.8925813245963025, - "t": 0.8923724847917641, - "punct": 0.9412643106022898 - }, - "ud": { - "u": 0.90336094449205, - "t": 0.9072699542450433, - "punct": 0.9264823717948718 - } - }, - "cy": { - "opus100": { - "u": 0.6786703601108033, - "t": 0.6995424504321301, - "punct": 0.7924217462932455 - }, - "ud": { - "u": 0.9766233766233766, - "t": 0.9616008653326122, - "punct": 0.9936708860759494 - } - }, - "da": { - "opus100": { - "u": 0.8930060213061602, - "t": 0.9046720151014629, - "punct": 0.9439252336448598 - }, - "ud": { - "u": 0.9466553767993225, - "t": 0.9518810148731408, - "punct": 0.9769094138543517 - } - }, - "de": { - "ersatz": { - "u": 0.9228187919463087, - "t": 0.9399692149820421, - "punct": 0.9825908858166922 - }, - "opus100": { - "u": 0.7708016510971106, - "t": 0.8231208136938725, - "punct": 0.8609137055837564 - }, - "ud": { - "u": 0.9284657128761717, - "t": 0.9550679205851621, - "punct": 0.952934955050238 - } - }, - "el": { - "opus100": { - "u": 0.9128397375820057, - "t": 0.9225302061122957, - "punct": 0.9614723926380369 - }, - "ud": { - "u": 0.9693654266958425, - "t": 0.9709821428571428, - "punct": 0.9699666295884315 - } - }, - "en": { - "ersatz": { - "u": 0.9292496171516079, - "t": 0.9607716209218021, - "punct": 0.9809761217528207 - }, - "opus100": { - "u": 0.9040217123118678, - "t": 0.8962061560486757, - "punct": 0.9386352479135984 - }, - "ud": { - "u": 0.9206773618538325, - "t": 0.9212175470008952, - "punct": 0.9564007421150278 - } - }, - "eo": { - "opus100": { - "u": 0.9002457002457002, - "t": 0.9000729394602479, - "punct": 0.9474199070677427 - } - }, - "es": { - "ersatz": { - "u": 0.9753900595142352, - "t": 0.9770513455506025, - "punct": 0.990011462256427 - }, - "opus100": { - "u": 0.8976268031642625, - "t": 0.9055436592909827, - "punct": 0.9454635597421914 - }, - "ud": { - "u": 0.9567401618755234, - "t": 0.9765963594336896, - "punct": 0.9959396751740139 - } - }, - "et": { - "ersatz": { - "u": 0.9440459110473458, - "t": 0.9526197041865129, - "punct": 0.9746394828443561 - }, - "opus100": { - "u": 0.8586556169429098, - "t": 0.8767647762622637, - "punct": 0.9386245994577274 - }, - "ud": { - "u": 0.8961077844311377, - "t": 0.9194283021831318, - "punct": 0.963464566929134 - } - }, - "eu": { - "opus100": { - "u": 0.8735196589294174, - "t": 0.8714218676677615, - "punct": 0.9107958643904783 - }, - "ud": { - "u": 0.9627245910431751, - "t": 0.9866962305986696, - "punct": 0.999722145040289 - } - }, - "fa": { - "opus100": { - "u": 0.5503489531405783, - "t": 0.5644308377400501, - "punct": 0.6569162121963312 - }, - "ud": { - "u": 0.9729187562688064, - "t": 0.9901192504258944, - "punct": 0.9993122420907841 - } - }, - "fi": { - "ersatz": { - "u": 0.9243373493975904, - "t": 0.9535714285714285, - "punct": 0.9761784085149519 - }, - "opus100": { - "u": 0.9157820240622788, - "t": 0.9259971167707832, - "punct": 0.9557739557739557 - }, - "ud": { - "u": 0.9151087955868833, - "t": 0.9368900455432662, - "punct": 0.9670687968699055 - } - }, - "fr": { - "ersatz": { - "u": 0.9558779982232751, - "t": 0.9609756097560975, - "punct": 0.9741275571600482 - }, - "opus100": { - "u": 0.887190178364605, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9489559164733179, - "t": 0.9724550898203593, - "punct": 0.983132530120482 - } - }, - "fy": { - "opus100": { - "u": 0.6877828054298643, - "t": 0.6963220675944335, - "punct": 0.8597545050927135 - } - }, - "ga": { - "opus100": { - "u": 0.7676228596842338, - "t": 0.779862700228833, - "punct": 0.8354114713216957 - }, - "ud": { - "u": 0.8834476003917727, - "t": 0.9141039236479322, - "punct": 0.9889135254988914 - } - }, - "gd": { - "opus100": { - "u": 0.7688723205964585, - "t": 0.8244592346089848, - "punct": 0.9140733859730609 - }, - "ud": { - "u": 0.6635838150289017, - "t": 0.668903803131991, - "punct": 0.756385068762279 - } - }, - "gl": { - "opus100": { - "u": 0.8829588014981273, - "t": 0.8854925934634376, - "punct": 0.9330727894479727 - }, - "ud": { - "u": 0.9444444444444444, - "t": 0.9684741488020178, - "punct": 0.9533169533169534 - } - }, - "gu": { - "ersatz": { - "u": 0.875626423690205, - "t": 0.8908641975308642, - "punct": 0.936 - }, - "opus100": { - "u": 0.6388256137686661, - "t": 0.6450856204550787, - "punct": 0.726624203821656 - } - }, - "ha": { - "opus100": { - "u": 0.8318356867779204, - "t": 0.8702326697049652, - "punct": 0.9116523400191022 - } - }, - "he": { - "opus100": { - "u": 0.9069040173201829, - "t": 0.9004450691028343, - "punct": 0.9405568096313017 - }, - "ud": { - "u": 0.8956310679611651, - "t": 0.9341935483870967, - "punct": 0.9520000000000001 - } - }, - "hi": { - "ersatz": { - "u": 0.91011025976453, - "t": 0.9445536767597327, - "punct": 0.9575116893677577 - }, - "opus100": { - "u": 0.61438202247191, - "t": 0.5867951033513948, - "punct": 0.7148148148148148 - }, - "ud": { - "u": 0.9008863819500403, - "t": 0.9496112870716958, - "punct": 0.9994061757719715 - } - }, - "hu": { - "opus100": { - "u": 0.9169419537517697, - "t": 0.9165094339622643, - "punct": 0.9608418991678903 - }, - "ud": { - "u": 0.9664138678223185, - "t": 0.9867256637168141, - "punct": 0.9833147942157953 - } - }, - "hy": { - "opus100": { - "u": 0.8283446121811557, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9235618597320726, - "t": 0.940983606557377, - "punct": 0.9692307692307692 - } - }, - "id": { - "opus100": { - "u": 0.8864292589027911, - "t": 0.888404744613895, - "punct": 0.9376408715251691 - }, - "ud": { - "u": 0.9631067961165048, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.8090090090090091, - "t": 0.816267666570522, - "punct": 0.8879336813018116 - } - }, - "is": { - "opus100": { - "u": 0.9426906265177271, - "t": 0.9453924914675769, - "punct": 0.9631268436578172 - }, - "ud": { - "u": 0.8760646619155225, - "t": 0.9137546468401487, - "punct": 0.9649307214524606 - } - }, - "it": { - "opus100": { - "u": 0.8615591397849464, - "t": 0.8896697118763176, - "punct": 0.9281849483521888 - }, - "ud": { - "u": 0.9687814702920444, - "t": 0.9836734693877551, - "punct": 0.9917355371900826 - } - }, - "ja": { - "ersatz": { - "u": 0.7918181818181818, - "t": 0.7968750000000001, - "punct": 0.9329474191992283 - }, - "opus100": { - "u": 0.47619047619047616, - "t": 0.6895551257253385, - "punct": 0.8183884819398838 - }, - "ud": { - "u": 0.9597754911131899, - "t": 0.955534531693472, - "punct": 0.9832713754646839 - } - }, - "jv": { - "ud": { - "u": 0.9541984732824427, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.9093553078041687, - "t": 0.9087854056649064, - "punct": 0.9353086419753086 - } - }, - "kk": { - "ersatz": { - "u": 0.9688715953307393, - "t": 0.9724862431215608, - "punct": 0.995019920318725 - }, - "opus100": { - "u": 0.7247776365946633, - "t": 0.7314629258517034, - "punct": 0.8941115702479339 - }, - "ud": { - "u": 0.9615745079662605, - "t": 0.8516129032258066, - "punct": 0.9458375125376128 - } - }, - "km": { - "ersatz": { - "u": 0.8669135264648226, - "t": 0.9030330882352942, - "punct": 0.9072923855532551 - }, - "opus100": { - "u": 0.6313364055299538, - "t": 0.641421497232741, - "punct": 0.7237932019423022 - } - }, - "kn": { - "opus100": { - "u": 0.5131128848346637, - "t": 0.5715705765407555, - "punct": 0.7471526195899773 - } - }, - "ko": { - "opus100": { - "u": 0.5429219306770328, - "t": 0.6279170267934313, - "punct": 0.794822627037392 - }, - "ud": { - "u": 0.9917391304347826, - "t": 0.9938650306748466, - "punct": 0.9989061474513237 - } - }, - "ku": { - "opus100": { - "u": 0.7462551066727191, - "t": 0.5642611683848798, - "punct": 0.8367518966001686 - } - }, - "ky": { - "opus100": { - "u": 0.7999999999999999, - "t": 0.7952228371686572, - "punct": 0.8749625187406296 - } - }, - "la": { - "ud": { - "u": 0.7529751172015867, - "t": 0.9010682768230377, - "punct": 0.9626123994320871 - } - }, - "lt": { - "ersatz": { - "u": 0.9155937052932761, - "t": 0.9309462915601024, - "punct": 0.9655521783181358 - }, - "opus100": { - "u": 0.7846121327414923, - "t": 0.8330601732615313, - "punct": 0.8866386762163496 - }, - "ud": { - "u": 0.9467040673211781, - "t": 0.9601181683899557, - "punct": 0.9719350073855244 - } - }, - "lv": { - "ersatz": { - "u": 0.9470198675496688, - "t": 0.9714285714285714, - "punct": 0.9883921956038529 - }, - "opus100": { - "u": 0.7910803204156743, - "t": 0.832391713747646, - "punct": 0.8796092796092796 - }, - "ud": { - "u": 0.958898393490507, - "t": 0.9472076788830714, - "punct": 0.9888123924268503 - } - }, - "mg": { - "opus100": { - "u": 0.8011720385098369, - "t": 0.8773517504167659, - "punct": 0.9355077835433655 - } - }, - "mk": { - "opus100": { - "u": 0.9086306098964327, - "t": 0.9123294008790191, - "punct": 0.9550861859674679 - } - }, - "ml": { - "opus100": { - "u": 0.7902595910866068, - "t": 0.8215255492470994, - "punct": 0.845909645909646 - } - }, - "mn": { - "opus100": { - "u": 0.9139120958953869, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.8805277302711948, - "t": 0.8798053527980535, - "punct": 0.9110947832476121 - }, - "ud": { - "u": 0.9263157894736843, - "t": 0.9148936170212766, - "punct": 0.8791208791208791 - } - }, - "ms": { - "opus100": { - "u": 0.867933723196881, - "t": 0.8708251473477406, - "punct": 0.9330994738160863 - } - }, - "mt": { - "opus100": { - "u": 0.7198820556023589, - "t": 0.7812340642529321, - "punct": 0.8525073746312684 - }, - "ud": { - "u": 0.883936861652739, - "t": 0.9031639501438159, - "punct": 0.9264990328820116 - } - }, - "my": { - "opus100": { - "u": 0.5424963574550753, - "t": 0.5445230544035129, - "punct": 0.7461622807017543 - } - }, - "ne": { - "opus100": { - "u": 0.6493443419135503, - "t": 0.655791962174941, - "punct": 0.715046942400406 - } - }, - "nl": { - "opus100": { - "u": 0.9135687732342007, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9096722621902478, - "t": 0.934656741108354, - "punct": 0.9495798319327732 - } - }, - "no": { - "opus100": { - "u": 0.9460701330108827, - "t": 0.9460701330108827, - "punct": 0.965398773006135 - }, - "ud": { - "u": 0.969450101832994, - "t": 0.9739757794382891, - "punct": 0.9845041322314051 - } - }, - "pa": { - "opus100": { - "u": 0.6185026227944683, - "t": 0.6201442195859502, - "punct": 0.7120472643205754 - } - }, - "pl": { - "ersatz": { - "u": 0.9250720461095101, - "t": 0.9202264539372105, - "punct": 0.9614243323442137 - }, - "opus100": { - "u": 0.9159544159544158, - "t": 0.919627951347484, - "punct": 0.955435847208619 - }, - "ud": { - "u": 0.946167097329888, - "t": 0.967885816235504, - "punct": 0.9897657493745736 - } - }, - "ps": { - "ersatz": { - "u": 0.8647574904817084, - "t": 0.9411979547114682, - "punct": 0.9472300469483568 - }, - "opus100": { - "u": 0.5739967897271269, - "t": 0.6234947819106236, - "punct": 0.7254672897196262 - } - }, - "pt": { - "opus100": { - "u": 0.9022801302931596, - "t": 0.9126398476553201, - "punct": 0.9493268053855568 - }, - "ud": { - "u": 0.9470588235294117, - "t": 0.9478632478632478, - "punct": 0.9742489270386266 - } - }, - "ro": { - "ersatz": { - "u": 0.9577739809616792, - "t": 0.9633004302708176, - "punct": 0.9841827768014061 - }, - "opus100": { - "u": 0.8795126353790613, - "t": 0.87073007367716, - "punct": 0.9690670626082654 - }, - "ud": { - "u": 0.8205928237129485, - "t": 0.896709323583181, - "punct": 0.9942748091603053 - } - }, - "ru": { - "ersatz": { - "u": 0.9396039603960396, - "t": 0.9475308641975309, - "punct": 0.9693251533742331 - }, - "opus100": { - "u": 0.7655640024655845, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8283464566929133, - "t": 0.8348214285714286, - "punct": 0.902675014228799 - } - }, - "si": { - "opus100": { - "u": 0.7871604938271606, - "t": 0.8097102584181677, - "punct": 0.8392494929006085 - } - }, - "sk": { - "opus100": { - "u": 0.9144876325088338, - "t": 0.9245694882367207, - "punct": 0.9560117302052786 - }, - "ud": { - "u": 0.9294173377546187, - "t": 0.9299242424242423, - "punct": 0.9530137636449929 - } - }, - "sl": { - "opus100": { - "u": 0.9174917491749175, - "t": 0.9258373205741627, - "punct": 0.9535392848455365 - }, - "ud": { - "u": 0.9474076837001119, - "t": 0.9680154142581888, - "punct": 0.9894490035169988 - } - }, - "sq": { - "opus100": { - "u": 0.8699795779441797, - "t": 0.8756013745704468, - "punct": 0.9479192623972091 - }, - "ud": { - "u": 0.9917355371900827, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9389312977099237, - "t": 0.9389312977099237, - "punct": 0.9609184171958964 - }, - "ud": { - "u": 0.936247723132969, - "t": 0.9727626459143969, - "punct": 0.9873908826382153 - } - }, - "sv": { - "opus100": { - "u": 0.9182478332162098, - "t": 0.9282136894824707, - "punct": 0.9536811311555338 - }, - "ud": { - "u": 0.9359925788497218, - "t": 0.9447911665866539, - "punct": 0.962000962000962 - } - }, - "ta": { - "ersatz": { - "u": 0.945765937202664, - "t": 0.9670000000000001, - "punct": 0.978131212723658 - }, - "opus100": { - "u": 0.5535986083931288, - "t": 0.5500282645562464, - "punct": 0.6814854974247764 - }, - "ud": { - "u": 0.967741935483871, - "t": 0.983050847457627, - "punct": 1.0 - } - }, - "te": { - "opus100": { - "u": 0.7217412812268118, - "t": 0.7248427672955975, - "punct": 0.8036219581211093 - } - }, - "tg": { - "opus100": { - "u": 0.7652325835335227, - "t": 0.7689438097458614, - "punct": 0.8987951807228916 - } - }, - "th": { - "opus100": { - "u": 0.6788050203287963, - "t": 0.6838095238095238, - "punct": 0.7024331870761866 - }, - "ud": { - "u": 0.6119402985074627, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.9060256009990634, - "t": 0.9247984202731612, - "punct": 0.9769307923771314 - }, - "opus100": { - "u": 0.9230400383601054, - "t": 0.9223766171538093, - "punct": 0.9565432098765432 - }, - "ud": { - "u": 0.9300333174678724, - "t": 0.9560493827160493, - "punct": 0.9908629441624364 - } - }, - "uk": { - "opus100": { - "u": 0.8870626907724818, - "t": 0.8817254174397031, - "punct": 0.9385556915544675 - }, - "ud": { - "u": 0.9007551240560949, - "t": 0.9178690344062154, - "punct": 0.9797752808988766 - } - }, - "ur": { - "opus100": { - "u": 0.46293818571046297, - "t": 0.430117501546073, - "punct": 0.5775709219858155 - }, - "ud": { - "u": 0.8191653786707883, - "t": 0.972972972972973, - "punct": 0.9897292250233426 - } - }, - "uz": { - "opus100": { - "u": 0.7466666666666667, - "t": 0.7607307946290996, - "punct": 0.8331338281062963 - } - }, - "vi": { - "opus100": { - "u": 0.9137314956610514, - "t": 0.9138327793403223, - "punct": 0.946041351487645 - }, - "ud": { - "u": 0.8900112233445566, - "t": 0.9340727048675294, - "punct": 0.9794903666873834 - } - }, - "xh": { - "opus100": { - "u": 0.810678422728386, - "t": 0.8121301775147929, - "punct": 0.8896236012207528 - } - }, - "yi": { - "opus100": { - "u": 0.6704185719310587, - "t": 0.6684350132625995, - "punct": 0.724588781105019 - } - }, - "yo": { - "opus100": { - "u": 0.6918930458451192, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8489795918367348, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.578965399109284, - "t": 0.8775849774185881, - "punct": 0.9603015075376885 - }, - "opus100": { - "u": 0.5167464114832536, - "t": 0.6962996389891697, - "punct": 0.8410872974385781 - }, - "ud": { - "u": 0.4709480122324159, - "t": 0.971028971028971, - "punct": 0.9939879759519038 - } - }, - "zu": { - "opus100": { - "u": 0.8233102714209686, - "t": 0.8365580448065173, - "punct": 0.8937315039009954 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/wtp-bert-tiny_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-bert-tiny_intrinsic_results.json deleted file mode 100644 index c8c4602b..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-bert-tiny_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.7015956180042868, - "t": 0.718082788671024, - "punct": 0.8136407300672431 - }, - "ud": { - "u": 0.9465478841870824, - "t": 0.9976525821596244, - "punct": 0.9988249118683901 - } - }, - "am": { - "opus100": { - "u": 0.5158638829524906, - "t": 0.4637281910009183, - "punct": 0.5807962529274004 - } - }, - "ar": { - "ersatz": { - "u": 0.8155628155628156, - "t": 0.7814100039385585, - "punct": 0.9067229848644843 - }, - "opus100": { - "u": 0.5555267926482008, - "t": 0.6051637279596978, - "punct": 0.6197982345523328 - }, - "ud": { - "u": 0.670547147846333, - "t": 0.8116560056858564, - "punct": 0.8179190751445087 - } - }, - "az": { - "opus100": { - "u": 0.49191848208011235, - "t": 0.7065217391304347, - "punct": 0.8082740213523132 - } - }, - "be": { - "opus100": { - "u": 0.6700421940928271, - "t": 0.666088088522456, - "punct": 0.8074055026999228 - }, - "ud": { - "u": 0.7622917513206015, - "t": 0.8084133516232281, - "punct": 0.8461916461916462 - } - }, - "bg": { - "opus100": { - "u": 0.9215962441314555, - "t": 0.930054905705419, - "punct": 0.9559623948540326 - }, - "ud": { - "u": 0.9257340241796199, - "t": 0.9325997248968363, - "punct": 0.9584664536741213 - } - }, - "bn": { - "opus100": { - "u": 0.7520927237604635, - "t": 0.8056849953401678, - "punct": 0.8342298288508557 - }, - "ud": { - "u": 0.9824561403508771, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8664660958111547, - "t": 0.8787584869059165, - "punct": 0.9105020616056271 - }, - "ud": { - "u": 0.9039215686274509, - "t": 0.9879129734085415, - "punct": 0.9964836353800379 - } - }, - "ceb": { - "ud": { - "u": 0.9973474801061007, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.900896008688569, - "t": 0.9595989383662636, - "punct": 0.9676077265973254 - }, - "opus100": { - "u": 0.8332605848974246, - "t": 0.8775948460987831, - "punct": 0.9172743273824491 - }, - "ud": { - "u": 0.8110325565156672, - "t": 0.8806473364801078, - "punct": 0.8781939965269165 - } - }, - "cy": { - "opus100": { - "u": 0.6215182960131076, - "t": 0.6704753199268738, - "punct": 0.7520976353928298 - }, - "ud": { - "u": 0.9612640163098877, - "t": 0.9688841201716739, - "punct": 0.990546218487395 - } - }, - "da": { - "opus100": { - "u": 0.8311062431544358, - "t": 0.872148288973384, - "punct": 0.9166871467190956 - }, - "ud": { - "u": 0.8616352201257863, - "t": 0.9228039041703637, - "punct": 0.9488536155202822 - } - }, - "de": { - "ersatz": { - "u": 0.8593930970581423, - "t": 0.9338140612928149, - "punct": 0.9587762509722583 - }, - "opus100": { - "u": 0.6693227091633467, - "t": 0.7412280701754386, - "punct": 0.7802141764405915 - }, - "ud": { - "u": 0.8522144522144521, - "t": 0.9237199582027168, - "punct": 0.921832884097035 - } - }, - "el": { - "opus100": { - "u": 0.9021335807050093, - "t": 0.913064133016627, - "punct": 0.9485094850948511 - }, - "ud": { - "u": 0.90927624872579, - "t": 0.9435215946843853, - "punct": 0.9496080627099664 - } - }, - "en": { - "ersatz": { - "u": 0.7561907597637835, - "t": 0.8670212765957446, - "punct": 0.9088375039594552 - }, - "opus100": { - "u": 0.8781211372064276, - "t": 0.859417652411283, - "punct": 0.9078384798099762 - }, - "ud": { - "u": 0.8795232013622818, - "t": 0.9037238873751136, - "punct": 0.9409005628517825 - } - }, - "eo": { - "opus100": { - "u": 0.8960975609756097, - "t": 0.8944099378881987, - "punct": 0.932422542083435 - } - }, - "es": { - "ersatz": { - "u": 0.9126094301950545, - "t": 0.9544093178036606, - "punct": 0.973718791064389 - }, - "opus100": { - "u": 0.8411007545494895, - "t": 0.8813397129186603, - "punct": 0.9149777558082056 - }, - "ud": { - "u": 0.897463002114165, - "t": 0.981922525107604, - "punct": 0.9927473165071076 - } - }, - "et": { - "ersatz": { - "u": 0.8796958855098389, - "t": 0.9629814907453726, - "punct": 0.9721946375372393 - }, - "opus100": { - "u": 0.8000872981230903, - "t": 0.8501240694789083, - "punct": 0.8961885656970913 - }, - "ud": { - "u": 0.8313592780597857, - "t": 0.9057971014492754, - "punct": 0.9498647143084513 - } - }, - "eu": { - "opus100": { - "u": 0.8514526710402999, - "t": 0.8499305233904586, - "punct": 0.8866855524079319 - }, - "ud": { - "u": 0.9450144698763484, - "t": 0.9914151204652452, - "punct": 0.9977777777777778 - } - }, - "fa": { - "opus100": { - "u": 0.5016385177716158, - "t": 0.5443686006825939, - "punct": 0.5947295423023579 - }, - "ud": { - "u": 0.953160825417622, - "t": 0.9931693989071039, - "punct": 0.9986263736263736 - } - }, - "fi": { - "ersatz": { - "u": 0.8645690834473324, - "t": 0.9565442317640972, - "punct": 0.9641209636084059 - }, - "opus100": { - "u": 0.8897041962852557, - "t": 0.9253658536585366, - "punct": 0.947290274684484 - }, - "ud": { - "u": 0.8403118683222639, - "t": 0.9085696081554635, - "punct": 0.9357259380097879 - } - }, - "fr": { - "ersatz": { - "u": 0.8697886921758995, - "t": 0.9554606467358147, - "punct": 0.9633958781913257 - }, - "opus100": { - "u": 0.8470376210858301, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8685344827586207, - "t": 0.9596199524940617, - "punct": 0.9743589743589745 - } - }, - "fy": { - "opus100": { - "u": 0.6976096542121142, - "t": 0.69844943300162, - "punct": 0.8449391664509449 - } - }, - "ga": { - "opus100": { - "u": 0.6617067833698032, - "t": 0.6497163269594453, - "punct": 0.7316271425217188 - }, - "ud": { - "u": 0.8398510242085662, - "t": 0.9174503657262278, - "punct": 0.9770992366412214 - } - }, - "gd": { - "opus100": { - "u": 0.6442166910688142, - "t": 0.7189045264359072, - "punct": 0.855268911237429 - }, - "ud": { - "u": 0.6231884057971013, - "t": 0.6482758620689655, - "punct": 0.701123595505618 - } - }, - "gl": { - "opus100": { - "u": 0.8635315813739052, - "t": 0.8624942896299681, - "punct": 0.9130538922155689 - }, - "ud": { - "u": 0.8857808857808858, - "t": 0.9464285714285715, - "punct": 0.9445129469790382 - } - }, - "gu": { - "ersatz": { - "u": 0.8491773308957952, - "t": 0.9246435845213848, - "punct": 0.931910569105691 - }, - "opus100": { - "u": 0.5310734463276836, - "t": 0.5376926280716368, - "punct": 0.6523652365236523 - } - }, - "ha": { - "opus100": { - "u": 0.8057142857142857, - "t": 0.9019426456984273, - "punct": 0.9082375029335837 - } - }, - "he": { - "opus100": { - "u": 0.9123723581097127, - "t": 0.9149797570850203, - "punct": 0.9395701643489255 - }, - "ud": { - "u": 0.7801724137931034, - "t": 0.940554821664465, - "punct": 0.9479305740987984 - } - }, - "hi": { - "ersatz": { - "u": 0.8281516911513496, - "t": 0.914901809780516, - "punct": 0.9438480594549958 - }, - "opus100": { - "u": 0.5520788684097728, - "t": 0.5160109789569992, - "punct": 0.638583912166704 - }, - "ud": { - "u": 0.876633559853633, - "t": 0.9677043933663079, - "punct": 0.9970238095238096 - } - }, - "hu": { - "opus100": { - "u": 0.8891928864569084, - "t": 0.9199711607786589, - "punct": 0.9480934809348094 - }, - "ud": { - "u": 0.7780925401322002, - "t": 0.9769484083424808, - "punct": 0.9811320754716981 - } - }, - "hy": { - "opus100": { - "u": 0.7941584616401243, - "t": null, - "punct": null - }, - "ud": { - "u": 0.853008377760853, - "t": 0.880275624461671, - "punct": 0.9248251748251747 - } - }, - "id": { - "opus100": { - "u": 0.8787010506208213, - "t": 0.9074582190072337, - "punct": 0.929923273657289 - }, - "ud": { - "u": 0.9337094499294781, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.7773025377815795, - "t": 0.7957101752550354, - "punct": 0.8679800058806234 - } - }, - "is": { - "opus100": { - "u": 0.9233301975540922, - "t": 0.9453125, - "punct": 0.9591937069813176 - }, - "ud": { - "u": 0.8294363770612847, - "t": 0.9005339849760159, - "punct": 0.9460876076375889 - } - }, - "it": { - "opus100": { - "u": 0.8141971349155441, - "t": 0.8580720092915215, - "punct": 0.8964346349745331 - }, - "ud": { - "u": 0.9385365853658536, - "t": 0.9687184661957619, - "punct": 0.976313079299691 - } - }, - "ja": { - "ersatz": { - "u": 0.8298245614035087, - "t": 0.841078066914498, - "punct": 0.9237536656891495 - }, - "opus100": { - "u": 0.47233748271092674, - "t": 0.5304818092428711, - "punct": 0.760578468130691 - }, - "ud": { - "u": 0.9511754068716094, - "t": 0.9545032497678738, - "punct": 0.9785647716682199 - } - }, - "jv": { - "ud": { - "u": 0.8741258741258742, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.9196188614708039, - "t": 0.9213759213759214, - "punct": 0.9299678297451126 - } - }, - "kk": { - "ersatz": { - "u": 0.8694516971279372, - "t": 0.9714857428714357, - "punct": 0.9856790123456791 - }, - "opus100": { - "u": 0.7573079537729436, - "t": 0.7506029908345393, - "punct": 0.8537220197813639 - }, - "ud": { - "u": 0.9396396396396396, - "t": 0.9119840875186475, - "punct": 0.9410618606916707 - } - }, - "km": { - "ersatz": { - "u": 0.8973244911959753, - "t": 0.906906906906907, - "punct": 0.9004587155963303 - }, - "opus100": { - "u": 0.484312859036677, - "t": 0.5987025023169601, - "punct": 0.6685552407932012 - } - }, - "kn": { - "opus100": { - "u": 0.5091684434968017, - "t": 0.510221465076661, - "punct": 0.5983009708737863 - } - }, - "ko": { - "opus100": { - "u": 0.5140822272580123, - "t": 0.5579817680729277, - "punct": 0.7518981141317659 - }, - "ud": { - "u": 0.966744333827579, - "t": 0.9865100087032203, - "punct": 0.9986876640419947 - } - }, - "ku": { - "opus100": { - "u": 0.7050742300022159, - "t": 0.33918128654970764, - "punct": 0.7530827067669174 - } - }, - "ky": { - "opus100": { - "u": 0.7780195865070729, - "t": 0.7770906157569238, - "punct": 0.836950146627566 - } - }, - "la": { - "ud": { - "u": 0.9176161262050833, - "t": 0.9176524112829846, - "punct": 0.9560256714998813 - } - }, - "lt": { - "ersatz": { - "u": 0.7636508569151056, - "t": 0.8588899341486359, - "punct": 0.9266802443991854 - }, - "opus100": { - "u": 0.6679146387120929, - "t": 0.7488883688275215, - "punct": 0.8019323671497585 - }, - "ud": { - "u": 0.8737607402511567, - "t": 0.9383611312545324, - "punct": 0.943904263275991 - } - }, - "lv": { - "ersatz": { - "u": 0.8566523605150215, - "t": 0.9775474956822108, - "punct": 0.9817733990147782 - }, - "opus100": { - "u": 0.6008316008316008, - "t": 0.7431348724179829, - "punct": 0.8190715181932245 - }, - "ud": { - "u": 0.8971450919045757, - "t": 0.944204152249135, - "punct": 0.9814655172413793 - } - }, - "mg": { - "opus100": { - "u": 0.712599187149216, - "t": 0.8738807879253004, - "punct": 0.8664027709054923 - } - }, - "mk": { - "opus100": { - "u": 0.8685764268532693, - "t": 0.9172123479887745, - "punct": 0.9527043414989086 - } - }, - "ml": { - "opus100": { - "u": 0.7880055788005579, - "t": 0.811202800700175, - "punct": 0.8333333333333334 - } - }, - "mn": { - "opus100": { - "u": 0.7745554035567715, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.852116024726581, - "t": 0.8656204021579205, - "punct": 0.9010933129926265 - }, - "ud": { - "u": 0.9292929292929293, - "t": 0.9032258064516129, - "punct": 0.8705882352941177 - } - }, - "ms": { - "opus100": { - "u": 0.8477425552353506, - "t": 0.8686299615877081, - "punct": 0.9009457441513191 - } - }, - "mt": { - "opus100": { - "u": 0.6026974951830443, - "t": 0.708006279434851, - "punct": 0.7571497818710615 - }, - "ud": { - "u": 0.8417329796640142, - "t": 0.8840304182509505, - "punct": 0.888030888030888 - } - }, - "my": { - "opus100": { - "u": 0.38558352402746005, - "t": 0.4022842639593908, - "punct": 0.6842259291776412 - } - }, - "ne": { - "opus100": { - "u": 0.5066864784546805, - "t": 0.518348623853211, - "punct": 0.613861386138614 - } - }, - "nl": { - "opus100": { - "u": 0.9092172301991662, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8624708624708625, - "t": 0.9217830109335576, - "punct": 0.9221453287197232 - } - }, - "no": { - "opus100": { - "u": 0.934735835524743, - "t": 0.9441354292623942, - "punct": 0.9568838804507594 - }, - "ud": { - "u": 0.9339925834363412, - "t": 0.9655172413793104, - "punct": 0.9711488923235446 - } - }, - "pa": { - "opus100": { - "u": 0.541077085533263, - "t": 0.5458996328029376, - "punct": 0.6440154440154441 - } - }, - "pl": { - "ersatz": { - "u": 0.8152593227603944, - "t": 0.9250125817815802, - "punct": 0.9429581019687027 - }, - "opus100": { - "u": 0.8917987594762233, - "t": 0.9179140511830033, - "punct": 0.9431902753659142 - }, - "ud": { - "u": 0.8968335035750765, - "t": 0.9496937882764654, - "punct": 0.9756541524459613 - } - }, - "ps": { - "ersatz": { - "u": 0.8733031674208145, - "t": 0.9424501424501425, - "punct": 0.9429383886255924 - }, - "opus100": { - "u": 0.5847874720357942, - "t": 0.5855161787365177, - "punct": 0.67651235444476 - } - }, - "pt": { - "opus100": { - "u": 0.8580385132109271, - "t": 0.9078219013237063, - "punct": 0.931358024691358 - }, - "ud": { - "u": 0.8480184686417853, - "t": 0.9214986619090099, - "punct": 0.9480576167612397 - } - }, - "ro": { - "ersatz": { - "u": 0.8901226000462641, - "t": 0.9504596527068437, - "punct": 0.9606259464916709 - }, - "opus100": { - "u": 0.8632743362831858, - "t": 0.9063600093874676, - "punct": 0.9538002980625931 - }, - "ud": { - "u": 0.8161365399534523, - "t": 0.9368800721370604, - "punct": 0.991908614945264 - } - }, - "ru": { - "ersatz": { - "u": 0.818221638195357, - "t": 0.9134020618556701, - "punct": 0.9419831223628691 - }, - "opus100": { - "u": 0.6395537160338313, - "t": null, - "punct": null - }, - "ud": { - "u": 0.7547169811320755, - "t": 0.8258138206739006, - "punct": 0.8561682774303582 - } - }, - "si": { - "opus100": { - "u": 0.783987915407855, - "t": 0.8094479830148619, - "punct": 0.830575256107171 - } - }, - "sk": { - "opus100": { - "u": 0.8599377501111606, - "t": 0.9046584600531016, - "punct": 0.9290259422418012 - }, - "ud": { - "u": 0.8082191780821917, - "t": 0.8597415031115366, - "punct": 0.8809407153356198 - } - }, - "sl": { - "opus100": { - "u": 0.8885350318471338, - "t": 0.9140942809284517, - "punct": 0.9314079422382672 - }, - "ud": { - "u": 0.8743859649122807, - "t": 0.9658611430763331, - "punct": 0.9835809225957779 - } - }, - "sq": { - "opus100": { - "u": 0.8124868171271884, - "t": 0.8986340762041696, - "punct": 0.9406163868704585 - }, - "ud": { - "u": 0.9917355371900827, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9189189189189189, - "t": 0.9420009666505558, - "punct": 0.9580573951434879 - }, - "ud": { - "u": 0.7993680884676145, - "t": 0.9707031249999999, - "punct": 0.9774288518155054 - } - }, - "sv": { - "opus100": { - "u": 0.894712643678161, - "t": 0.9256756756756758, - "punct": 0.9420077972709551 - }, - "ud": { - "u": 0.9120728929384966, - "t": 0.9358851674641148, - "punct": 0.9526542324246772 - } - }, - "ta": { - "ersatz": { - "u": 0.8581255374032675, - "t": 0.9395843402609957, - "punct": 0.9402697495183044 - }, - "opus100": { - "u": 0.4773922187171398, - "t": 0.47893301000303123, - "punct": 0.5889212827988339 - }, - "ud": { - "u": 0.8823529411764706, - "t": 0.9486166007905138, - "punct": 0.9558232931726908 - } - }, - "te": { - "opus100": { - "u": 0.6797006999758629, - "t": 0.6950959488272921, - "punct": 0.7597163120567376 - } - }, - "tg": { - "opus100": { - "u": 0.7460004383081307, - "t": 0.7447786131996658, - "punct": 0.8717827626918536 - } - }, - "th": { - "opus100": { - "u": 0.6650709522995384, - "t": 0.6694766420793818, - "punct": 0.6797773654916512 - }, - "ud": { - "u": 0.5011343584572725, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.8237646386746643, - "t": 0.934352667442247, - "punct": 0.9614223414961421 - }, - "opus100": { - "u": 0.9156626506024096, - "t": 0.9342105263157895, - "punct": 0.9490273331691702 - }, - "ud": { - "u": 0.9278252611585945, - "t": 0.956308296514482, - "punct": 0.9903602232369355 - } - }, - "uk": { - "opus100": { - "u": 0.8741355463347165, - "t": 0.8852459016393444, - "punct": 0.9236381322957198 - }, - "ud": { - "u": 0.8219306466729147, - "t": 0.9271948608137044, - "punct": 0.9651293588301463 - } - }, - "ur": { - "opus100": { - "u": 0.39232303090727816, - "t": 0.38651247039152853, - "punct": 0.509812108559499 - }, - "ud": { - "u": 0.8776859504132232, - "t": 0.985941893158388, - "punct": 0.9897100093545369 - } - }, - "uz": { - "opus100": { - "u": 0.7003703703703704, - "t": 0.7485004284490145, - "punct": 0.8151041666666667 - } - }, - "vi": { - "opus100": { - "u": 0.8995024875621891, - "t": 0.9025012761613068, - "punct": 0.9352226720647774 - }, - "ud": { - "u": 0.8980281690140844, - "t": 0.9516324062877871, - "punct": 0.9684601113172543 - } - }, - "xh": { - "opus100": { - "u": 0.7358974358974358, - "t": 0.7437185929648241, - "punct": 0.8589775253148926 - } - }, - "yi": { - "opus100": { - "u": 0.41967871485943775, - "t": 0.6143633071816536, - "punct": 0.6944024205748865 - } - }, - "yo": { - "opus100": { - "u": 0.6851424806456927, - "t": null, - "punct": null - }, - "ud": { - "u": 0.7649208282582216, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.6756915832842849, - "t": 0.8161413562559695, - "punct": 0.9216520650813517 - }, - "opus100": { - "u": 0.5599556909443368, - "t": 0.6201888162672475, - "punct": 0.7806671920147097 - }, - "ud": { - "u": 0.6961038961038961, - "t": 0.945382323733863, - "punct": 0.9959839357429718 - } - }, - "zu": { - "opus100": { - "u": 0.8099974496301964, - "t": 0.831400966183575, - "punct": 0.8736594297671985 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-12l-no-adapters_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-canine-s-12l-no-adapters_intrinsic_results.json deleted file mode 100644 index 0a0ac95b..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-12l-no-adapters_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.765533111736129, - "t": 0.7920133111480866, - "punct": 0.883944374209861 - }, - "ud": { - "u": 0.9747706422018348, - "t": 0.9906759906759907, - "punct": 0.9929906542056075 - } - }, - "am": { - "opus100": { - "u": 0.5900526226447123, - "t": 0.6281961060286184, - "punct": 0.6986692015209125 - } - }, - "ar": { - "ersatz": { - "u": 0.8940182054616385, - "t": 0.8753993610223643, - "punct": 0.9252209381373215 - }, - "opus100": { - "u": 0.6798614547253835, - "t": 0.6784615384615384, - "punct": 0.7693069306930694 - }, - "ud": { - "u": 0.8289637952559301, - "t": 0.8765264586160109, - "punct": 0.8931351733899505 - } - }, - "az": { - "opus100": { - "u": 0.7594339622641509, - "t": 0.7880810488676996, - "punct": 0.8443271767810028 - } - }, - "be": { - "opus100": { - "u": 0.710348162475822, - "t": 0.7216447216447216, - "punct": 0.8920425747592499 - }, - "ud": { - "u": 0.893212669683258, - "t": 0.8972296693476317, - "punct": 0.9508970727101038 - } - }, - "bg": { - "opus100": { - "u": 0.9399377841588897, - "t": 0.932323710364411, - "punct": 0.9647749510763209 - }, - "ud": { - "u": 0.9833707865168538, - "t": 0.9825347066726378, - "punct": 0.9959659345584939 - } - }, - "bn": { - "opus100": { - "u": 0.7958069447477615, - "t": 0.8307767226686146, - "punct": 0.8724035608308605 - }, - "ud": { - "u": 0.9911504424778761, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8949343339587242, - "t": 0.8986262434864992, - "punct": 0.946380034593526 - }, - "ud": { - "u": 0.9857181352735113, - "t": 0.9867531765341984, - "punct": 0.998917748917749 - } - }, - "ceb": { - "ud": { - "u": 0.9973474801061007, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.9347305389221556, - "t": 0.9476761180941246, - "punct": 0.9921716439547694 - }, - "opus100": { - "u": 0.8920166128287956, - "t": 0.9020341360766893, - "punct": 0.9500124347177319 - }, - "ud": { - "u": 0.9288367255979795, - "t": 0.9289146480408184, - "punct": 0.964886397167306 - } - }, - "cy": { - "opus100": { - "u": 0.7388429752066115, - "t": 0.7612269938650307, - "punct": 0.8189679218967921 - }, - "ud": { - "u": 0.9926470588235294, - "t": 0.9926547743966422, - "punct": 0.9957983193277311 - } - }, - "da": { - "opus100": { - "u": 0.9010633379565418, - "t": 0.9126946672958943, - "punct": 0.9511718749999999 - }, - "ud": { - "u": 0.9477351916376308, - "t": 0.9373881932021467, - "punct": 0.9866190900981268 - } - }, - "de": { - "ersatz": { - "u": 0.958883628208323, - "t": 0.9598383430159132, - "punct": 0.9921139659119816 - }, - "opus100": { - "u": 0.8073555166374781, - "t": 0.855702280912365, - "punct": 0.9017281403146763 - }, - "ud": { - "u": 0.9608938547486033, - "t": 0.9604925602873268, - "punct": 0.9717573221757322 - } - }, - "el": { - "opus100": { - "u": 0.9223852342640796, - "t": 0.9319271332694153, - "punct": 0.9625984251968502 - }, - "ud": { - "u": 0.9694323144104805, - "t": 0.9675251959686451, - "punct": 0.9767441860465117 - } - }, - "en": { - "ersatz": { - "u": 0.9715676229508197, - "t": 0.9726973471890531, - "punct": 0.9901852453688658 - }, - "opus100": { - "u": 0.9179122764028425, - "t": 0.9099976252671574, - "punct": 0.9502084866323278 - }, - "ud": { - "u": 0.9465095194922938, - "t": 0.9464123524069029, - "punct": 0.9709006928406466 - } - }, - "eo": { - "opus100": { - "u": 0.920448999511957, - "t": 0.9189320388349514, - "punct": 0.9577187807276303 - } - }, - "es": { - "ersatz": { - "u": 0.9871062510200751, - "t": 0.9869067103109657, - "punct": 0.9952622120568535 - }, - "opus100": { - "u": 0.920416864045476, - "t": 0.924726060028585, - "punct": 0.9556263790144643 - }, - "ud": { - "u": 0.9724770642201835, - "t": 0.9740184757505774, - "punct": 0.9973890339425587 - } - }, - "et": { - "ersatz": { - "u": 0.959188721246599, - "t": 0.952092788703984, - "punct": 0.994297049342921 - }, - "opus100": { - "u": 0.8434839554682384, - "t": 0.8832866479925304, - "punct": 0.9516765285996056 - }, - "ud": { - "u": 0.9401234567901234, - "t": 0.939729397293973, - "punct": 0.9817044566067239 - } - }, - "eu": { - "opus100": { - "u": 0.8704639412034911, - "t": 0.871889400921659, - "punct": 0.9290259422418011 - }, - "ud": { - "u": 0.9716175254891154, - "t": 0.9744586340921709, - "punct": 0.998609952738393 - } - }, - "fa": { - "opus100": { - "u": 0.6015073009891663, - "t": 0.6019417475728156, - "punct": 0.7280376144518684 - }, - "ud": { - "u": 0.9732441471571907, - "t": 0.9807367353835754, - "punct": 0.9989701338825953 - } - }, - "fi": { - "ersatz": { - "u": 0.9722013523666416, - "t": 0.9726775956284153, - "punct": 0.9952488122030507 - }, - "opus100": { - "u": 0.9202915588996002, - "t": 0.9324681566931026, - "punct": 0.964014687882497 - }, - "ud": { - "u": 0.9482046393390532, - "t": 0.9462435233160622, - "punct": 0.9828423438005828 - } - }, - "fr": { - "ersatz": { - "u": 0.97610513739546, - "t": 0.9686834904226209, - "punct": 0.9897528631705846 - }, - "opus100": { - "u": 0.884580291970803, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9671361502347419, - "t": 0.970344009489917, - "punct": 0.9915764139590855 - } - }, - "fy": { - "opus100": { - "u": 0.6572008113590263, - "t": 0.6978094484032725, - "punct": 0.8897596656217346 - } - }, - "ga": { - "opus100": { - "u": 0.7926023778071334, - "t": 0.7920792079207921, - "punct": 0.888055972013993 - }, - "ud": { - "u": 0.8667953667953668, - "t": 0.905349794238683, - "punct": 0.9878453038674033 - } - }, - "gd": { - "opus100": { - "u": 0.8315473639091299, - "t": 0.8345740281224151, - "punct": 0.9254829806807727 - }, - "ud": { - "u": 0.7150715071507151, - "t": 0.7378640776699029, - "punct": 0.7831207065750735 - } - }, - "gl": { - "opus100": { - "u": 0.9012287334593573, - "t": 0.9022485207100591, - "punct": 0.9416687176962835 - }, - "ud": { - "u": 0.9887359198998749, - "t": 0.9899497487437187, - "punct": 0.9875621890547265 - } - }, - "gu": { - "ersatz": { - "u": 0.9084041548630784, - "t": 0.8970163618864293, - "punct": 0.9768586903003447 - }, - "opus100": { - "u": 0.7049910873440285, - "t": 0.718351324828263, - "punct": 0.7772435897435898 - } - }, - "ha": { - "opus100": { - "u": 0.8213087248322147, - "t": 0.8576206402293359, - "punct": 0.9179389312977099 - } - }, - "he": { - "opus100": { - "u": 0.9067234848484849, - "t": 0.9043355325164938, - "punct": 0.9431137724550896 - }, - "ud": { - "u": 0.9615861214374226, - "t": 0.9569620253164556, - "punct": 0.9732484076433121 - } - }, - "hi": { - "ersatz": { - "u": 0.9502314814814814, - "t": 0.9472849782005548, - "punct": 0.97514033680834 - }, - "opus100": { - "u": 0.6652977412731005, - "t": 0.6513102282333052, - "punct": 0.7567181926278241 - }, - "ud": { - "u": 0.9669947886508397, - "t": 0.9690601284296556, - "punct": 0.9985158800831107 - } - }, - "hu": { - "opus100": { - "u": 0.9291637052831082, - "t": 0.9336832061068703, - "punct": 0.9663803680981595 - }, - "ud": { - "u": 0.9664429530201342, - "t": 0.9652076318742985, - "punct": 0.9944382647385984 - } - }, - "hy": { - "opus100": { - "u": 0.8681114551083592, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9688013136288999, - "t": 0.9727947238252268, - "punct": 0.9799666110183639 - } - }, - "id": { - "opus100": { - "u": 0.8975230694511899, - "t": 0.9065281899109793, - "punct": 0.9475269897062516 - }, - "ud": { - "u": 0.9836390679226573, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.8189785433665759, - "t": 0.8318531675547661, - "punct": 0.8943985307621671 - } - }, - "is": { - "opus100": { - "u": 0.9477012892240332, - "t": 0.9509803921568626, - "punct": 0.969786293294031 - }, - "ud": { - "u": 0.8612963913117837, - "t": 0.892476011120079, - "punct": 0.9673777862814503 - } - }, - "it": { - "opus100": { - "u": 0.8732899753307916, - "t": 0.8933302347199629, - "punct": 0.9479090242112986 - }, - "ud": { - "u": 0.9544554455445544, - "t": 0.9497536945812808, - "punct": 0.9968976215098242 - } - }, - "ja": { - "ersatz": { - "u": 0.8203799654576857, - "t": 0.8249780123131046, - "punct": 0.9532357109116675 - }, - "opus100": { - "u": 0.416860015467904, - "t": 0.7776744186046513, - "punct": 0.8620170597089813 - }, - "ud": { - "u": 0.9601449275362317, - "t": 0.9674418604651163, - "punct": 0.9851301115241634 - } - }, - "jv": { - "ud": { - "u": 0.9652509652509652, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.9122807017543859, - "t": 0.9083073976538185, - "punct": 0.935244686109738 - } - }, - "kk": { - "ersatz": { - "u": 0.9604406609914873, - "t": 0.9604406609914873, - "punct": 0.998503740648379 - }, - "opus100": { - "u": 0.7403345215245408, - "t": 0.7555673382820786, - "punct": 0.912280701754386 - }, - "ud": { - "u": 0.9649207111965401, - "t": 0.9280322093608456, - "punct": 0.9796116504854369 - } - }, - "km": { - "ersatz": { - "u": 0.828270796108795, - "t": 0.9101303453007089, - "punct": 0.9149176258180998 - }, - "opus100": { - "u": 0.6928361138370951, - "t": 0.690566037735849, - "punct": 0.7809098520792631 - } - }, - "kn": { - "opus100": { - "u": 0.6932923707117256, - "t": 0.657694558221182, - "punct": 0.7707865168539326 - } - }, - "ko": { - "opus100": { - "u": 0.5615162222936074, - "t": 0.7116509221772379, - "punct": 0.8023032629558541 - }, - "ud": { - "u": 0.9913194444444444, - "t": 0.9919372412290259, - "punct": 0.9986893840104849 - } - }, - "ku": { - "opus100": { - "u": 0.7924528301886793, - "t": 0.6713153724247226, - "punct": 0.8068924539512775 - } - }, - "ky": { - "opus100": { - "u": 0.8395061728395062, - "t": 0.8449656750572082, - "punct": 0.910655981003265 - } - }, - "la": { - "ud": { - "u": 0.9170984455958548, - "t": 0.9196914700544464, - "punct": 0.9667142177841179 - } - }, - "lt": { - "ersatz": { - "u": 0.9684526790185277, - "t": 0.9647177419354839, - "punct": 0.9924812030075189 - }, - "opus100": { - "u": 0.8088794926004228, - "t": 0.8562818729717199, - "punct": 0.9153884215734786 - }, - "ud": { - "u": 0.9746192893401016, - "t": 0.9773226042428675, - "punct": 0.9896907216494846 - } - }, - "lv": { - "ersatz": { - "u": 0.9722627737226277, - "t": 0.9690721649484537, - "punct": 0.995546759030183 - }, - "opus100": { - "u": 0.8226643598615917, - "t": 0.8660230751118437, - "punct": 0.914553065747353 - }, - "ud": { - "u": 0.9608479342418343, - "t": 0.9630104768013684, - "punct": 0.9916147065147279 - } - }, - "mg": { - "opus100": { - "u": 0.8924780802953393, - "t": 0.917228103946102, - "punct": 0.9608771492648891 - } - }, - "mk": { - "opus100": { - "u": 0.9276516038398502, - "t": 0.9340607210626186, - "punct": 0.9598062953995158 - } - }, - "ml": { - "opus100": { - "u": 0.8062898814949863, - "t": 0.8112874779541446, - "punct": 0.8656361474435197 - } - }, - "mn": { - "opus100": { - "u": 0.7772485289997199, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.8933171324422842, - "t": 0.894240317775571, - "punct": 0.919260700389105 - }, - "ud": { - "u": 0.9183673469387754, - "t": 0.9108910891089108, - "punct": 0.9787234042553191 - } - }, - "ms": { - "opus100": { - "u": 0.884313725490196, - "t": 0.8840970350404312, - "punct": 0.9434343434343434 - } - }, - "mt": { - "opus100": { - "u": 0.6731426515560354, - "t": 0.8103033220991815, - "punct": 0.8929529383077298 - }, - "ud": { - "u": 0.8970727101038716, - "t": 0.876847290640394, - "punct": 0.9436893203883494 - } - }, - "my": { - "opus100": { - "u": 0.6565404670142825, - "t": 0.7073673364245234, - "punct": 0.8065366367949395 - } - }, - "ne": { - "opus100": { - "u": 0.7088856161021109, - "t": 0.7094576892847785, - "punct": 0.7342391304347827 - } - }, - "nl": { - "opus100": { - "u": 0.9249941217963791, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9328859060402684, - "t": 0.9174757281553398, - "punct": 0.9733777038269552 - } - }, - "no": { - "opus100": { - "u": 0.9497938394373029, - "t": 0.9513145082765336, - "punct": 0.9676945668135095 - }, - "ud": { - "u": 0.9775222164140094, - "t": 0.9855446566855963, - "punct": 0.9956174271719515 - } - }, - "pa": { - "opus100": { - "u": 0.643329658213892, - "t": 0.6673448626653103, - "punct": 0.7664827948515891 - } - }, - "pl": { - "ersatz": { - "u": 0.954248366013072, - "t": 0.945010183299389, - "punct": 0.991504247876062 - }, - "opus100": { - "u": 0.9243256147051803, - "t": 0.9320106460198402, - "punct": 0.9607458292443571 - }, - "ud": { - "u": 0.9572984749455339, - "t": 0.9575070821529745, - "punct": 0.9931880108991825 - } - }, - "ps": { - "ersatz": { - "u": 0.8681991069952043, - "t": 0.9199496312286384, - "punct": 0.9569449644327966 - }, - "opus100": { - "u": 0.6355987055016181, - "t": 0.6987688098495213, - "punct": 0.7511210762331839 - } - }, - "pt": { - "opus100": { - "u": 0.9096005606166784, - "t": 0.9219419324131366, - "punct": 0.9582009288682474 - }, - "ud": { - "u": 0.9627089584226317, - "t": 0.9609507640067912, - "punct": 0.9853574504737295 - } - }, - "ro": { - "ersatz": { - "u": 0.9759960405840139, - "t": 0.9628130533771818, - "punct": 0.9955022488755622 - }, - "opus100": { - "u": 0.9082867783985101, - "t": 0.9147031102733271, - "punct": 0.9719950433705081 - }, - "ud": { - "u": 0.8109567901234568, - "t": 0.914018691588785, - "punct": 0.9942748091603053 - } - }, - "ru": { - "ersatz": { - "u": 0.9797775530839231, - "t": 0.9789156626506025, - "punct": 0.9939271255060729 - }, - "opus100": { - "u": 0.8385826771653543, - "t": null, - "punct": null - }, - "ud": { - "u": 0.863849765258216, - "t": 0.8717948717948718, - "punct": 0.9309376754632229 - } - }, - "si": { - "opus100": { - "u": 0.8027831094049904, - "t": 0.8115222249813757, - "punct": 0.8634538152610443 - } - }, - "sk": { - "opus100": { - "u": 0.9192867198498357, - "t": 0.9322979859257461, - "punct": 0.9635647464303299 - }, - "ud": { - "u": 0.9586698337292162, - "t": 0.9499518768046198, - "punct": 0.9804854831032841 - } - }, - "sl": { - "opus100": { - "u": 0.9228235294117647, - "t": 0.9296446458383019, - "punct": 0.9530493707647628 - }, - "ud": { - "u": 0.967766692248657, - "t": 0.9685681024447031, - "punct": 0.9929577464788732 - } - }, - "sq": { - "opus100": { - "u": 0.9017313991576977, - "t": 0.9151732377538829, - "punct": 0.9612632617813965 - }, - "ud": { - "u": 0.9917355371900827, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9466602594906295, - "t": 0.9476982405398892, - "punct": 0.9660063585228662 - }, - "ud": { - "u": 0.9844961240310077, - "t": 0.9808429118773947, - "punct": 0.9990393852065321 - } - }, - "sv": { - "opus100": { - "u": 0.9219592219357863, - "t": 0.9319971367215462, - "punct": 0.9588306942752741 - }, - "ud": { - "u": 0.9578256794751641, - "t": 0.9574669187145557, - "punct": 0.9721689059500959 - } - }, - "ta": { - "ersatz": { - "u": 0.945765937202664, - "t": 0.9580838323353293, - "punct": 0.9826989619377162 - }, - "opus100": { - "u": 0.6327497425334706, - "t": 0.6319404693760733, - "punct": 0.7274211099020675 - }, - "ud": { - "u": 0.9795918367346939, - "t": 0.9752066115702478, - "punct": 1.0 - } - }, - "te": { - "opus100": { - "u": 0.7634164777021921, - "t": 0.7675675675675675, - "punct": 0.8396821046862153 - } - }, - "tg": { - "opus100": { - "u": 0.8012022327179047, - "t": 0.8405225536110427, - "punct": 0.8996990972918756 - } - }, - "th": { - "opus100": { - "u": 0.6886003912502223, - "t": 0.7151036525172755, - "punct": 0.7292980243799916 - }, - "ud": { - "u": 0.6986837424404126, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.9363222871994801, - "t": 0.9350008227743952, - "punct": 0.9870388833499502 - }, - "opus100": { - "u": 0.9334301621883321, - "t": 0.9337570276216084, - "punct": 0.9600788565795959 - }, - "ud": { - "u": 0.9495548961424333, - "t": 0.9483709273182959, - "punct": 0.988855116514691 - } - }, - "uk": { - "opus100": { - "u": 0.8947491248541423, - "t": 0.8982373678025852, - "punct": 0.9463366821857387 - }, - "ud": { - "u": 0.9205113952195663, - "t": 0.9238521836506158, - "punct": 0.9832962138084632 - } - }, - "ur": { - "opus100": { - "u": 0.5225858804436029, - "t": 0.5240532241555782, - "punct": 0.6474149976711691 - }, - "ud": { - "u": 0.9397163120567376, - "t": 0.9590536851683349, - "punct": 0.9953051643192489 - } - }, - "uz": { - "opus100": { - "u": 0.7757475083056478, - "t": 0.8021158932435681, - "punct": 0.8633510381458233 - } - }, - "vi": { - "opus100": { - "u": 0.9117126233240577, - "t": 0.9116969541847966, - "punct": 0.9523329129886506 - }, - "ud": { - "u": 0.7332408691631992, - "t": 0.9115479115479116, - "punct": 0.9813432835820896 - } - }, - "xh": { - "opus100": { - "u": 0.7999043748505857, - "t": 0.8016350084154845, - "punct": 0.9048346055979644 - } - }, - "yi": { - "opus100": { - "u": 0.7567567567567567, - "t": 0.7530905446040761, - "punct": 0.7622090369694203 - } - }, - "yo": { - "opus100": { - "u": 0.7729161802474901, - "t": null, - "punct": null - }, - "ud": { - "u": 0.848901098901099, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.8807631160572337, - "t": 0.9033685763462012, - "punct": 0.9785 - }, - "opus100": { - "u": 0.7072135785007072, - "t": 0.7100877192982455, - "punct": 0.8789776998246054 - }, - "ud": { - "u": 0.9650924024640656, - "t": 0.9810945273631841, - "punct": 0.998 - } - }, - "zu": { - "opus100": { - "u": 0.7916194790486977, - "t": 0.8411795137092601, - "punct": 0.9046587215601299 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-12l_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-canine-s-12l_intrinsic_results.json deleted file mode 100644 index 76ba635d..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-12l_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.7837281153450052, - "t": 0.8062631455947652, - "punct": 0.8954081632653061 - }, - "ud": { - "u": 0.9906759906759907, - "t": 0.9941383352872216, - "punct": 0.9988249118683901 - } - }, - "am": { - "opus100": { - "u": 0.6339332517910187, - "t": 0.6960000000000001, - "punct": 0.7380543984317569 - } - }, - "ar": { - "ersatz": { - "u": 0.9008535784635587, - "t": 0.8923705722070845, - "punct": 0.9233390119250426 - }, - "opus100": { - "u": 0.7076142131979696, - "t": 0.7105694867588469, - "punct": 0.8156693102619562 - }, - "ud": { - "u": 0.863075924724205, - "t": 0.8712871287128714, - "punct": 0.9017667844522967 - } - }, - "az": { - "opus100": { - "u": 0.7924528301886792, - "t": 0.8152306565779839, - "punct": 0.8513547733603445 - } - }, - "be": { - "opus100": { - "u": 0.7702735415153715, - "t": 0.7700980392156862, - "punct": 0.9055276381909548 - }, - "ud": { - "u": 0.913871260199456, - "t": 0.9129454217410915, - "punct": 0.9259796806966618 - } - }, - "bg": { - "opus100": { - "u": 0.9452087859039343, - "t": 0.9289591692235073, - "punct": 0.9648780487804878 - }, - "ud": { - "u": 0.9852216748768474, - "t": 0.9852744310575636, - "punct": 0.9950914770191879 - } - }, - "bn": { - "opus100": { - "u": 0.819420035149385, - "t": 0.8511056511056512, - "punct": 0.8910271830647102 - }, - "ud": { - "u": 0.9911504424778761, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8992502343017807, - "t": 0.9037458511142721, - "punct": 0.9515287099179718 - }, - "ud": { - "u": 0.9861676159479251, - "t": 0.9869918699186991, - "punct": 0.9972855591748101 - } - }, - "ceb": { - "ud": { - "u": 0.9973474801061007, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.9325264750378215, - "t": 0.9511764705882352, - "punct": 0.9942096120440069 - }, - "opus100": { - "u": 0.9054401120709783, - "t": 0.9107981220657277, - "punct": 0.9538690476190477 - }, - "ud": { - "u": 0.9260889361056306, - "t": 0.9268366421445128, - "punct": 0.9717525264974118 - } - }, - "cy": { - "opus100": { - "u": 0.7370564281559046, - "t": 0.7844416562107905, - "punct": 0.844223876481941 - }, - "ud": { - "u": 0.9942196531791908, - "t": 0.9942135718043135, - "punct": 0.9968520461699895 - } - }, - "da": { - "opus100": { - "u": 0.9172332942555685, - "t": 0.9213695395513578, - "punct": 0.9545232273838631 - }, - "ud": { - "u": 0.9569798068481123, - "t": 0.9541446208112875, - "punct": 0.9892857142857143 - } - }, - "de": { - "ersatz": { - "u": 0.9670719351570416, - "t": 0.9658511722731906, - "punct": 0.9946469538618405 - }, - "opus100": { - "u": 0.8209354120267262, - "t": 0.8695443645083933, - "punct": 0.9158542842483326 - }, - "ud": { - "u": 0.9645972293483838, - "t": 0.9673066943435392, - "punct": 0.9807592303692148 - } - }, - "el": { - "opus100": { - "u": 0.9241672572643516, - "t": 0.9348970799425562, - "punct": 0.9633251833740831 - }, - "ud": { - "u": 0.9768467475192943, - "t": 0.9779735682819383, - "punct": 0.9878987898789879 - } - }, - "en": { - "ersatz": { - "u": 0.9757945425361155, - "t": 0.9757852142077205, - "punct": 0.9909581734209327 - }, - "opus100": { - "u": 0.9206583149103414, - "t": 0.90750353940538, - "punct": 0.9483521888834235 - }, - "ud": { - "u": 0.944007403979639, - "t": 0.9505041246562785, - "punct": 0.974548819990745 - } - }, - "eo": { - "opus100": { - "u": 0.9237931879441315, - "t": 0.9224033081975189, - "punct": 0.9552755127254756 - } - }, - "es": { - "ersatz": { - "u": 0.9883892068683564, - "t": 0.9826989619377162, - "punct": 0.9957446808510638 - }, - "opus100": { - "u": 0.920416864045476, - "t": 0.9241018320247443, - "punct": 0.9587959536146066 - }, - "ud": { - "u": 0.9676495848840537, - "t": 0.9662921348314606, - "punct": 0.9968088192631275 - } - }, - "et": { - "ersatz": { - "u": 0.9603392367173859, - "t": 0.9538773441459707, - "punct": 0.9867599300524605 - }, - "opus100": { - "u": 0.8617849988871579, - "t": 0.8982571832312765, - "punct": 0.9583230579531443 - }, - "ud": { - "u": 0.9477623577108997, - "t": 0.948905109489051, - "punct": 0.9841022443890275 - } - }, - "eu": { - "opus100": { - "u": 0.8684627575277337, - "t": 0.8797585886722378, - "punct": 0.9321577271614009 - }, - "ud": { - "u": 0.9665936473165389, - "t": 0.9673704414587332, - "punct": 0.9983314794215795 - } - }, - "fa": { - "opus100": { - "u": 0.659158814065732, - "t": 0.6590659942994957, - "punct": 0.7777509068923822 - }, - "ud": { - "u": 0.9758389261744966, - "t": 0.9824086603518268, - "punct": 0.9996564754379939 - } - }, - "fi": { - "ersatz": { - "u": 0.9765684051398338, - "t": 0.9789684526790184, - "punct": 0.9969984992496249 - }, - "opus100": { - "u": 0.9285883748517201, - "t": 0.9359036144578313, - "punct": 0.9639263803680982 - }, - "ud": { - "u": 0.9381475667189952, - "t": 0.9337139232477005, - "punct": 0.9832041343669252 - } - }, - "fr": { - "ersatz": { - "u": 0.9772998805256871, - "t": 0.9744052996085516, - "punct": 0.9879154078549849 - }, - "opus100": { - "u": 0.8942374450358713, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9729093050647822, - "t": 0.9749702026221693, - "punct": 0.9903381642512078 - } - }, - "fy": { - "opus100": { - "u": 0.6262688403568133, - "t": 0.671244635193133, - "punct": 0.8951351351351352 - } - }, - "ga": { - "opus100": { - "u": 0.8238147739801542, - "t": 0.8375565610859729, - "punct": 0.9083763203144191 - }, - "ud": { - "u": 0.8628954937679769, - "t": 0.9037487335359675, - "punct": 0.9792802617230099 - } - }, - "gd": { - "opus100": { - "u": 0.844642857142857, - "t": 0.864910790144435, - "punct": 0.942316566682049 - }, - "ud": { - "u": 0.7185104052573932, - "t": 0.7396798652064026, - "punct": 0.8556053811659193 - } - }, - "gl": { - "opus100": { - "u": 0.9009135628952917, - "t": 0.9089179548156956, - "punct": 0.9453565302621906 - }, - "ud": { - "u": 0.9912390488110137, - "t": 0.9912170639899623, - "punct": 0.9851116625310173 - } - }, - "gu": { - "ersatz": { - "u": 0.9273525109702585, - "t": 0.9031281533804238, - "punct": 0.9837358304583539 - }, - "opus100": { - "u": 0.74085637823372, - "t": 0.7547360444556707, - "punct": 0.8074599422117154 - } - }, - "ha": { - "opus100": { - "u": 0.8872593950504125, - "t": 0.9050953875875393, - "punct": 0.9164407197436528 - } - }, - "he": { - "opus100": { - "u": 0.9109099571224393, - "t": 0.8908337171810227, - "punct": 0.941351888667992 - }, - "ud": { - "u": 0.9724310776942355, - "t": 0.9737171464330412, - "punct": 0.989821882951654 - } - }, - "hi": { - "ersatz": { - "u": 0.9590436997844405, - "t": 0.9500201531640468, - "punct": 0.9787830264211369 - }, - "opus100": { - "u": 0.7033363390441839, - "t": 0.6969303934284479, - "punct": 0.7932530120481929 - }, - "ud": { - "u": 0.9869745411486087, - "t": 0.9882144961697114, - "punct": 0.9997031760166222 - } - }, - "hu": { - "opus100": { - "u": 0.9333651779316933, - "t": 0.9359251259899208, - "punct": 0.9659397206567018 - }, - "ud": { - "u": 0.9517396184062851, - "t": 0.9505617977528089, - "punct": 0.9921787709497207 - } - }, - "hy": { - "opus100": { - "u": 0.8798998616509651, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9654036243822075, - "t": 0.9653465346534653, - "punct": 0.9858215179316097 - } - }, - "id": { - "opus100": { - "u": 0.9052062868369353, - "t": 0.9063429137760158, - "punct": 0.9442917811641269 - }, - "ud": { - "u": 0.9880597014925374, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.8360655737704917, - "t": 0.8576439637532886, - "punct": 0.9083129584352079 - } - }, - "is": { - "opus100": { - "u": 0.9479065238558909, - "t": 0.9480077745383868, - "punct": 0.96759941089838 - }, - "ud": { - "u": 0.8997568224804108, - "t": 0.8968417285497002, - "punct": 0.9641380636477263 - } - }, - "it": { - "opus100": { - "u": 0.8854166666666666, - "t": 0.9120905020032996, - "punct": 0.9449317738791424 - }, - "ud": { - "u": 0.9611166500498505, - "t": 0.9639278557114229, - "punct": 0.9968976215098242 - } - }, - "ja": { - "ersatz": { - "u": 0.8424747696358051, - "t": 0.8391408114558473, - "punct": 0.9607935758148323 - }, - "opus100": { - "u": 0.5557509672880759, - "t": 0.814519906323185, - "punct": 0.8955987717502559 - }, - "ud": { - "u": 0.959349593495935, - "t": 0.9646840148698885, - "punct": 0.9813780260707635 - } - }, - "jv": { - "ud": { - "u": 0.9763779527559056, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.9050953875875393, - "t": 0.9050953875875393, - "punct": 0.9351737737244269 - } - }, - "kk": { - "ersatz": { - "u": 0.95643259866735, - "t": 0.9510056730273336, - "punct": 0.9985022466300548 - }, - "opus100": { - "u": 0.7963589076723017, - "t": 0.7382588774341351, - "punct": 0.9203402938901779 - }, - "ud": { - "u": 0.9651162790697675, - "t": 0.8952579468473163, - "punct": 0.9625769777356703 - } - }, - "km": { - "ersatz": { - "u": 0.7107282693813626, - "t": 0.927354260089686, - "punct": 0.9265232974910395 - }, - "opus100": { - "u": 0.7387387387387386, - "t": 0.7251059322033898, - "punct": 0.8084163898117386 - } - }, - "kn": { - "opus100": { - "u": 0.7282099343955013, - "t": 0.6893716970052849, - "punct": 0.8402699662542182 - } - }, - "ko": { - "opus100": { - "u": 0.5660377358490566, - "t": 0.7177339901477833, - "punct": 0.82588746679546 - }, - "ud": { - "u": 0.9939050936003483, - "t": 0.9932388222464559, - "punct": 0.9995627459554001 - } - }, - "ku": { - "opus100": { - "u": 0.81333033100653, - "t": 0.7676827463746669, - "punct": 0.8674832962138085 - } - }, - "ky": { - "opus100": { - "u": 0.8510878779316191, - "t": 0.8374807987711214, - "punct": 0.9203965154701111 - } - }, - "la": { - "ud": { - "u": 0.8582974137931034, - "t": 0.9144893111638955, - "punct": 0.9765680473372782 - } - }, - "lt": { - "ersatz": { - "u": 0.9819458375125377, - "t": 0.9730554143365532, - "punct": 0.9939819458375125 - }, - "opus100": { - "u": 0.8327601031814273, - "t": 0.8726772195457673, - "punct": 0.928659590224636 - }, - "ud": { - "u": 0.9728937728937728, - "t": 0.9721407624633431, - "punct": 0.9831994156318481 - } - }, - "lv": { - "ersatz": { - "u": 0.9758477677482312, - "t": 0.9724273756770063, - "punct": 0.9975259772389906 - }, - "opus100": { - "u": 0.8477926641774655, - "t": 0.8901623686723974, - "punct": 0.9313388916135361 - }, - "ud": { - "u": 0.9591304347826087, - "t": 0.9633911368015414, - "punct": 0.9918419922713612 - } - }, - "mg": { - "opus100": { - "u": 0.9310924369747899, - "t": 0.938715953307393, - "punct": 0.9681433549029368 - } - }, - "mk": { - "opus100": { - "u": 0.9341825902335457, - "t": 0.9388045540796964, - "punct": 0.9621175327829042 - } - }, - "ml": { - "opus100": { - "u": 0.8178506375227687, - "t": 0.8201697967584256, - "punct": 0.8822393822393823 - } - }, - "mn": { - "opus100": { - "u": 0.7923367361208223, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.9149301299338073, - "t": 0.9184079601990051, - "punct": 0.9483057135790255 - }, - "ud": { - "u": 0.8842105263157894, - "t": 0.8775510204081632, - "punct": 0.9583333333333333 - } - }, - "ms": { - "opus100": { - "u": 0.882266731802638, - "t": 0.888447204968944, - "punct": 0.9438596491228071 - } - }, - "mt": { - "opus100": { - "u": 0.6699611719025768, - "t": 0.849566055930569, - "punct": 0.9073075036782736 - }, - "ud": { - "u": 0.8957528957528957, - "t": 0.8752475247524751, - "punct": 0.9576107899807322 - } - }, - "my": { - "opus100": { - "u": 0.6684547142562409, - "t": 0.7996882307092752, - "punct": 0.8586470123716767 - } - }, - "ne": { - "opus100": { - "u": 0.734818288393904, - "t": 0.7359192348565357, - "punct": 0.7781975175391257 - } - }, - "nl": { - "opus100": { - "u": 0.929283341243474, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9362786745964315, - "t": 0.9147034930950447, - "punct": 0.9757727652464494 - } - }, - "no": { - "opus100": { - "u": 0.9512254307206989, - "t": 0.9509946627850558, - "punct": 0.969845550379995 - }, - "ud": { - "u": 0.9758909853249477, - "t": 0.9858720780888774, - "punct": 0.9956264471314639 - } - }, - "pa": { - "opus100": { - "u": 0.5729729729729729, - "t": 0.6368778280542986, - "punct": 0.8081073966833376 - } - }, - "pl": { - "ersatz": { - "u": 0.9456024402643619, - "t": 0.9350515463917525, - "punct": 0.9925335988053758 - }, - "opus100": { - "u": 0.9274946159368269, - "t": 0.9313418453384726, - "punct": 0.9625642280401273 - }, - "ud": { - "u": 0.9621478873239436, - "t": 0.962684919408258, - "punct": 0.9929753002492635 - } - }, - "ps": { - "ersatz": { - "u": 0.8599316739873109, - "t": 0.9209170072862982, - "punct": 0.9563417388031614 - }, - "opus100": { - "u": 0.48456428292301673, - "t": 0.7323943661971831, - "punct": 0.7844482561463693 - } - }, - "pt": { - "opus100": { - "u": 0.9201789498469508, - "t": 0.9255369928400955, - "punct": 0.9589442815249266 - }, - "ud": { - "u": 0.961038961038961, - "t": 0.9655465759251384, - "punct": 0.9875376020627417 - } - }, - "ro": { - "ersatz": { - "u": 0.9786917740336968, - "t": 0.9645390070921986, - "punct": 0.9952511872031993 - }, - "opus100": { - "u": 0.9176857949200375, - "t": 0.9196702002355713, - "punct": 0.9740163325909428 - }, - "ud": { - "u": 0.8111025443330764, - "t": 0.9363057324840764, - "punct": 0.9938006676204101 - } - }, - "ru": { - "ersatz": { - "u": 0.980691056910569, - "t": 0.9843671205244579, - "punct": 0.9954522486104093 - }, - "opus100": { - "u": 0.8590634102621555, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8631138975966561, - "t": 0.8636124275934702, - "punct": 0.9369067560022334 - } - }, - "si": { - "opus100": { - "u": 0.8123195380173244, - "t": 0.8117704280155641, - "punct": 0.8704663212435233 - } - }, - "sk": { - "opus100": { - "u": 0.9204705882352942, - "t": 0.9342327150084316, - "punct": 0.9636542239685658 - }, - "ud": { - "u": 0.9715370018975332, - "t": 0.9740688354549739, - "punct": 0.9858088930936614 - } - }, - "sl": { - "opus100": { - "u": 0.9310916410134975, - "t": 0.937304828248859, - "punct": 0.9565007249879168 - }, - "ud": { - "u": 0.9603421461897357, - "t": 0.959968907889623, - "punct": 0.9921996879875195 - } - }, - "sq": { - "opus100": { - "u": 0.9116541353383459, - "t": 0.9252720677146312, - "punct": 0.9612058314801087 - }, - "ud": { - "u": 1.0, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9488103821196827, - "t": 0.9542926239419588, - "punct": 0.9659564046044574 - }, - "ud": { - "u": 0.9834791059280854, - "t": 0.9903846153846154, - "punct": 1.0 - } - }, - "sv": { - "opus100": { - "u": 0.9275430729289592, - "t": 0.9372003835091083, - "punct": 0.9607604192054594 - }, - "ud": { - "u": 0.9579990561585654, - "t": 0.9579990561585654, - "punct": 0.9770114942528736 - } - }, - "ta": { - "ersatz": { - "u": 0.957950700821653, - "t": 0.9496761335326357, - "punct": 0.9851632047477745 - }, - "opus100": { - "u": 0.6957062850031115, - "t": 0.6975461814171492, - "punct": 0.7741582261155215 - }, - "ud": { - "u": 0.9876543209876543, - "t": 0.9917355371900827, - "punct": 0.9917355371900827 - } - }, - "te": { - "opus100": { - "u": 0.7616294349540078, - "t": 0.7629187224097637, - "punct": 0.8517548454688318 - } - }, - "tg": { - "opus100": { - "u": 0.8097768331562168, - "t": 0.8693293885601578, - "punct": 0.9143431298668676 - } - }, - "th": { - "opus100": { - "u": 0.6911032028469751, - "t": 0.7285657842749901, - "punct": 0.7501053518752634 - }, - "ud": { - "u": 0.7542726927459172, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.949069539666993, - "t": 0.9488099119660907, - "punct": 0.9892259240842035 - }, - "opus100": { - "u": 0.939437984496124, - "t": 0.9406593406593406, - "punct": 0.9591133004926109 - }, - "ud": { - "u": 0.9530400395452299, - "t": 0.954954954954955, - "punct": 0.9887983706720977 - } - }, - "uk": { - "opus100": { - "u": 0.9087479368073568, - "t": 0.9084905660377358, - "punct": 0.95010951569725 - }, - "ud": { - "u": 0.9260089686098655, - "t": 0.9284116331096196, - "punct": 0.9854260089686099 - } - }, - "ur": { - "opus100": { - "u": 0.6165413533834587, - "t": 0.5921663263411918, - "punct": 0.7024271844660194 - }, - "ud": { - "u": 0.9624885635864592, - "t": 0.9641214351425943, - "punct": 0.9924812030075186 - } - }, - "uz": { - "opus100": { - "u": 0.8074507255793805, - "t": 0.8279386712095401, - "punct": 0.8759881422924901 - } - }, - "vi": { - "opus100": { - "u": 0.9176767676767678, - "t": 0.9196746314184038, - "punct": 0.9554268446235205 - }, - "ud": { - "u": 0.7327466419638723, - "t": 0.9063074096754439, - "punct": 0.985705407085146 - } - }, - "xh": { - "opus100": { - "u": 0.7987435494727395, - "t": 0.8276519666269369, - "punct": 0.911353032659409 - } - }, - "yi": { - "opus100": { - "u": 0.7231139646869984, - "t": 0.7258193445243806, - "punct": 0.8248828291435875 - } - }, - "yo": { - "opus100": { - "u": 0.7968392013840184, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8409703504043127, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.872134769400718, - "t": 0.9245803056877975, - "punct": 0.9822810082355877 - }, - "opus100": { - "u": 0.8371967654986522, - "t": 0.823614807645778, - "punct": 0.9023602484472051 - }, - "ud": { - "u": 0.9479166666666667, - "t": 0.9750747756729811, - "punct": 0.9969969969969971 - } - }, - "zu": { - "opus100": { - "u": 0.6405315614617939, - "t": 0.8377158034528552, - "punct": 0.9122525414660246 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-1l-no-adapters_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-canine-s-1l-no-adapters_intrinsic_results.json deleted file mode 100644 index 75cadb52..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-1l-no-adapters_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.7524606299212598, - "t": 0.7609977324263039, - "punct": 0.8546703995927717 - }, - "ud": { - "u": 0.9736540664375716, - "t": 0.9929411764705882, - "punct": 0.9988249118683901 - } - }, - "am": { - "opus100": { - "u": 0.5809196530846015, - "t": 0.6135265700483091, - "punct": 0.6721426895095048 - } - }, - "ar": { - "ersatz": { - "u": 0.8585669781931463, - "t": 0.8898891966759003, - "punct": 0.8894070619586943 - }, - "opus100": { - "u": 0.6224410469033428, - "t": 0.6253186066270179, - "punct": 0.7110091743119267 - }, - "ud": { - "u": 0.7435750999428897, - "t": 0.8289655172413792, - "punct": 0.8492008339124393 - } - }, - "az": { - "opus100": { - "u": 0.7347094801223241, - "t": 0.7605051664753159, - "punct": 0.8266296809986129 - } - }, - "be": { - "opus100": { - "u": 0.6553254437869823, - "t": 0.699486301369863, - "punct": 0.8663404584084471 - }, - "ud": { - "u": 0.8724353256021409, - "t": 0.8613945578231292, - "punct": 0.8930507639231148 - } - }, - "bg": { - "opus100": { - "u": 0.9349535382416011, - "t": 0.9176196032672113, - "punct": 0.9609184171958963 - }, - "ud": { - "u": 0.9730458221024259, - "t": 0.9730941704035875, - "punct": 0.9905533063427799 - } - }, - "bn": { - "opus100": { - "u": 0.7741517181759239, - "t": 0.8098976921246728, - "punct": 0.8435440566268 - }, - "ud": { - "u": 0.9911504424778761, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8940568475452196, - "t": 0.8941563013377141, - "punct": 0.9341584158415841 - }, - "ud": { - "u": 0.9761019649495486, - "t": 0.9857181352735113, - "punct": 0.9986460871919848 - } - }, - "ceb": { - "ud": { - "u": 0.9973474801061007, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.9430800346720601, - "t": 0.9299703264094955, - "punct": 0.9779837775202781 - }, - "opus100": { - "u": 0.8985304408677396, - "t": 0.9030288800187839, - "punct": 0.9450931677018632 - }, - "ud": { - "u": 0.9130393551446183, - "t": 0.9177953068412958, - "punct": 0.9390317396544797 - } - }, - "cy": { - "opus100": { - "u": 0.6659012629161882, - "t": 0.701565306646138, - "punct": 0.783612867748144 - }, - "ud": { - "u": 0.9827856025039123, - "t": 0.950603732162459, - "punct": 0.9910761154855643 - } - }, - "da": { - "opus100": { - "u": 0.8955154877484974, - "t": 0.9119466920514041, - "punct": 0.9457934755948 - }, - "ud": { - "u": 0.9354838709677419, - "t": 0.937112488928255, - "punct": 0.9795191451469277 - } - }, - "de": { - "ersatz": { - "u": 0.9290353620399326, - "t": 0.9435665914221218, - "punct": 0.9826264690853347 - }, - "opus100": { - "u": 0.7767491926803014, - "t": 0.8366803774497943, - "punct": 0.8710659898477157 - }, - "ud": { - "u": 0.945054945054945, - "t": 0.9621172807472755, - "punct": 0.9595800524934384 - } - }, - "el": { - "opus100": { - "u": 0.9203581526861451, - "t": 0.926956935522246, - "punct": 0.9603936039360395 - }, - "ud": { - "u": 0.9694323144104805, - "t": 0.974472807991121, - "punct": 0.9790055248618785 - } - }, - "en": { - "ersatz": { - "u": 0.954041005705687, - "t": 0.969337799536202, - "punct": 0.9825040650406505 - }, - "opus100": { - "u": 0.9063116370808678, - "t": 0.9005736137667303, - "punct": 0.94482421875 - }, - "ud": { - "u": 0.931909212283044, - "t": 0.9320822162645219, - "punct": 0.9634089856415007 - } - }, - "eo": { - "opus100": { - "u": 0.9098901098901099, - "t": 0.9067632850241546, - "punct": 0.9506990434142752 - } - }, - "es": { - "ersatz": { - "u": 0.9795653584171262, - "t": 0.9808102345415778, - "punct": 0.9913327882256746 - }, - "opus100": { - "u": 0.9046168268104054, - "t": 0.9104689720511606, - "punct": 0.9513752455795678 - }, - "ud": { - "u": 0.9598427408031452, - "t": 0.9712292938099389, - "punct": 0.9944847605224965 - } - }, - "et": { - "ersatz": { - "u": 0.9355222460147513, - "t": 0.9480552070263488, - "punct": 0.9826216484607746 - }, - "opus100": { - "u": 0.8479467258601554, - "t": 0.8892609423582875, - "punct": 0.9422507403751236 - }, - "ud": { - "u": 0.8968502761606211, - "t": 0.9041906839071506, - "punct": 0.9667294413057125 - } - }, - "eu": { - "opus100": { - "u": 0.8706317981948624, - "t": 0.874446773817843, - "punct": 0.9189713731198448 - }, - "ud": { - "u": 0.9491525423728814, - "t": 0.9808492922564529, - "punct": 0.9994441356309061 - } - }, - "fa": { - "opus100": { - "u": 0.5578664056765353, - "t": 0.5655849468230161, - "punct": 0.671623296158612 - }, - "ud": { - "u": 0.9651741293532339, - "t": 0.9877467665078284, - "punct": 0.9989687177724303 - } - }, - "fi": { - "ersatz": { - "u": 0.9410354745925216, - "t": 0.9542743538767395, - "punct": 0.9800756620428752 - }, - "opus100": { - "u": 0.9145138562705496, - "t": 0.9276126558005752, - "punct": 0.9575402635431918 - }, - "ud": { - "u": 0.9242658423493044, - "t": 0.9368662087013413, - "punct": 0.9716704656463692 - } - }, - "fr": { - "ersatz": { - "u": 0.9643281807372176, - "t": 0.9667271627344223, - "punct": 0.9806060606060606 - }, - "opus100": { - "u": 0.8813793103448276, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9579439252336448, - "t": 0.9725864123957092, - "punct": 0.9819059107358263 - } - }, - "fy": { - "opus100": { - "u": 0.5929229854296758, - "t": 0.6859241126070992, - "punct": 0.8612640965119329 - } - }, - "ga": { - "opus100": { - "u": 0.7586206896551724, - "t": 0.7652519893899205, - "punct": 0.8551045510455105 - }, - "ud": { - "u": 0.876953125, - "t": 0.9022082018927445, - "punct": 0.9878987898789879 - } - }, - "gd": { - "opus100": { - "u": 0.7881006864988559, - "t": 0.8101793909052983, - "punct": 0.9180778032036614 - }, - "ud": { - "u": 0.6573426573426574, - "t": 0.6636363636363636, - "punct": 0.7340529931305202 - } - }, - "gl": { - "opus100": { - "u": 0.8822289861859051, - "t": 0.8823391812865498, - "punct": 0.9364077669902912 - }, - "ud": { - "u": 0.9536585365853658, - "t": 0.9699248120300752, - "punct": 0.9712140175219024 - } - }, - "gu": { - "ersatz": { - "u": 0.8683498647430118, - "t": 0.8815165876777251, - "punct": 0.9407114624505928 - }, - "opus100": { - "u": 0.6794003868471953, - "t": 0.6789473684210527, - "punct": 0.7335907335907336 - } - }, - "ha": { - "opus100": { - "u": 0.8229604709840203, - "t": 0.8781190019193857, - "punct": 0.9099142040038131 - } - }, - "he": { - "opus100": { - "u": 0.9105188005711565, - "t": 0.9035294117647059, - "punct": 0.9391435011269722 - }, - "ud": { - "u": 0.9187878787878787, - "t": 0.9431524547803617, - "punct": 0.9593709043250327 - } - }, - "hi": { - "ersatz": { - "u": 0.9092599479360358, - "t": 0.9387674739121875, - "punct": 0.9585607438851829 - }, - "opus100": { - "u": 0.63155505107832, - "t": 0.6118852459016394, - "punct": 0.7153284671532847 - }, - "ud": { - "u": 0.9336307863915226, - "t": 0.9485484334578902, - "punct": 0.9979234648472265 - } - }, - "hu": { - "opus100": { - "u": 0.9233325421314976, - "t": 0.9239904988123515, - "punct": 0.9611721611721611 - }, - "ud": { - "u": 0.959051724137931, - "t": 0.9721913236929923, - "punct": 0.9910514541387024 - } - }, - "hy": { - "opus100": { - "u": 0.8564746759321128, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9140625, - "t": 0.9537953795379537, - "punct": 0.9763513513513513 - } - }, - "id": { - "opus100": { - "u": 0.8873884735953701, - "t": 0.8966699314397649, - "punct": 0.9393258426966292 - }, - "ud": { - "u": 0.9640077821011673, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.7918067869153164, - "t": 0.806219406852865, - "punct": 0.8864115697499246 - } - }, - "is": { - "opus100": { - "u": 0.9415190487745693, - "t": 0.943754565376187, - "punct": 0.9636184857423796 - }, - "ud": { - "u": 0.8904724201636317, - "t": 0.9077833409194356, - "punct": 0.962715105162524 - } - }, - "it": { - "opus100": { - "u": 0.8630965718126822, - "t": 0.8832675794847993, - "punct": 0.9310428260343576 - }, - "ud": { - "u": 0.9487179487179487, - "t": 0.96579476861167, - "punct": 0.9958592132505175 - } - }, - "ja": { - "ersatz": { - "u": 0.7925184862983906, - "t": 0.7894039735099337, - "punct": 0.9339712918660286 - }, - "opus100": { - "u": 0.268542199488491, - "t": 0.7364269141531322, - "punct": 0.8490759753593429 - }, - "ud": { - "u": 0.9624885635864592, - "t": 0.962406015037594, - "punct": 0.9822926374650512 - } - }, - "jv": { - "ud": { - "u": 0.9578544061302682, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.8911995942176006, - "t": 0.9110576923076923, - "punct": 0.9322159230958836 - } - }, - "kk": { - "ersatz": { - "u": 0.9702293801854563, - "t": 0.9667493796526054, - "punct": 0.9975012493753124 - }, - "opus100": { - "u": 0.713617606602476, - "t": 0.7763649962602843, - "punct": 0.8898817345597898 - }, - "ud": { - "u": 0.9666510098637859, - "t": 0.9048843187660668, - "punct": 0.9299748110831233 - } - }, - "km": { - "ersatz": { - "u": 0.8443612151477321, - "t": 0.9058070416095108, - "punct": 0.9091322126306225 - }, - "opus100": { - "u": 0.6618953603158934, - "t": 0.6659505907626209, - "punct": 0.7542890375109044 - } - }, - "kn": { - "opus100": { - "u": 0.5966292134831461, - "t": 0.6050328227571116, - "punct": 0.7167155425219941 - } - }, - "ko": { - "opus100": { - "u": 0.5285145888594164, - "t": 0.6504897595725735, - "punct": 0.7888372093023256 - }, - "ud": { - "u": 0.9941240478781285, - "t": 0.9945235487404163, - "punct": 0.999343975508419 - } - }, - "ku": { - "opus100": { - "u": 0.7828901734104048, - "t": 0.6248331108144193, - "punct": 0.8660235798499464 - } - }, - "ky": { - "opus100": { - "u": 0.7991644285287973, - "t": 0.8080046403712298, - "punct": 0.892962743938498 - } - }, - "la": { - "ud": { - "u": 0.9003550295857987, - "t": 0.897686620558073, - "punct": 0.9528571428571428 - } - }, - "lt": { - "ersatz": { - "u": 0.9426506024096385, - "t": 0.9498495486459377, - "punct": 0.9756345177664975 - }, - "opus100": { - "u": 0.7775919732441471, - "t": 0.8313980492336275, - "punct": 0.8881222276983736 - }, - "ud": { - "u": 0.9502452697967765, - "t": 0.9671292914536158, - "punct": 0.9822485207100592 - } - }, - "lv": { - "ersatz": { - "u": 0.9479166666666666, - "t": 0.9656694458067681, - "punct": 0.991571641051066 - }, - "opus100": { - "u": 0.7927194860813704, - "t": 0.8500237304224015, - "punct": 0.8852618757612668 - }, - "ud": { - "u": 0.9608796785789807, - "t": 0.9561270801815431, - "punct": 0.9845559845559845 - } - }, - "mg": { - "opus100": { - "u": 0.8203924914675768, - "t": 0.8901515151515151, - "punct": 0.9422552664188352 - } - }, - "mk": { - "opus100": { - "u": 0.9140083217753121, - "t": 0.9177891314444959, - "punct": 0.9560145808019441 - } - }, - "ml": { - "opus100": { - "u": 0.8023148148148149, - "t": 0.8217208033721795, - "punct": 0.847165749820617 - } - }, - "mn": { - "opus100": { - "u": 0.8647806903711395, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.8894324853228963, - "t": 0.8950770760815515, - "punct": 0.926017874875869 - }, - "ud": { - "u": 0.9278350515463918, - "t": 0.898876404494382, - "punct": 0.924731182795699 - } - }, - "ms": { - "opus100": { - "u": 0.8714180749448933, - "t": 0.8723509117792015, - "punct": 0.9324391455538997 - } - }, - "mt": { - "opus100": { - "u": 0.6975734858946537, - "t": 0.7864125122189637, - "punct": 0.8671532846715327 - }, - "ud": { - "u": 0.8998109640831757, - "t": 0.904397705544933, - "punct": 0.9220272904483431 - } - }, - "my": { - "opus100": { - "u": 0.6280662983425415, - "t": 0.6759581881533101, - "punct": 0.7785967785967787 - } - }, - "ne": { - "opus100": { - "u": 0.6519507186858317, - "t": 0.6605762473647223, - "punct": 0.7294911734164071 - } - }, - "nl": { - "opus100": { - "u": 0.9153094462540716, - "t": null, - "punct": null - }, - "ud": { - "u": 0.922077922077922, - "t": 0.912449799196787, - "punct": 0.9526970954356847 - } - }, - "no": { - "opus100": { - "u": 0.9484386347131446, - "t": 0.9523346303501945, - "punct": 0.9646017699115044 - }, - "ud": { - "u": 0.9830595482546202, - "t": 0.9822393822393822, - "punct": 0.9904368053760662 - } - }, - "pa": { - "opus100": { - "u": 0.6360191967668605, - "t": 0.6546285714285714, - "punct": 0.725083269280041 - } - }, - "pl": { - "ersatz": { - "u": 0.9203109815354713, - "t": 0.9226830517153098, - "punct": 0.9406657018813315 - }, - "opus100": { - "u": 0.9181188827882549, - "t": 0.9274661508704062, - "punct": 0.9585479519254354 - }, - "ud": { - "u": 0.9442299442299442, - "t": 0.966079295154185, - "punct": 0.9892865283793024 - } - }, - "ps": { - "ersatz": { - "u": 0.8574712643678161, - "t": 0.9304793267471644, - "punct": 0.9486745628877609 - }, - "opus100": { - "u": 0.6623486341875529, - "t": 0.6721748400852878, - "punct": 0.7277339346110485 - } - }, - "pt": { - "opus100": { - "u": 0.9078146934955544, - "t": 0.920172084130019, - "punct": 0.9511480214948705 - }, - "ud": { - "u": 0.9518987341772153, - "t": 0.9504096593359207, - "punct": 0.9781021897810219 - } - }, - "ro": { - "ersatz": { - "u": 0.969889840881273, - "t": 0.9702127659574468, - "punct": 0.9892634207240949 - }, - "opus100": { - "u": 0.8798011748757343, - "t": 0.8792052382027546, - "punct": 0.9702675916749257 - }, - "ud": { - "u": 0.8132972555083108, - "t": 0.908762420957543, - "punct": 0.991908614945264 - } - }, - "ru": { - "ersatz": { - "u": 0.9486552567237163, - "t": 0.95748987854251, - "punct": 0.9787018255578094 - }, - "opus100": { - "u": 0.8040265581494966, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8457919498170412, - "t": 0.8497757847533632, - "punct": 0.908670520231214 - } - }, - "si": { - "opus100": { - "u": 0.8020502806931901, - "t": 0.8158295281582952, - "punct": 0.8475359342915811 - } - }, - "sk": { - "opus100": { - "u": 0.9116344136162275, - "t": 0.9275431861804223, - "punct": 0.9592538046146294 - }, - "ud": { - "u": 0.941342092914125, - "t": 0.9434141702330004, - "punct": 0.953199617956065 - } - }, - "sl": { - "opus100": { - "u": 0.9193776520509193, - "t": 0.9252380952380953, - "punct": 0.9531667071099247 - }, - "ud": { - "u": 0.9472107824784725, - "t": 0.9621036349574633, - "punct": 0.9917743830787309 - } - }, - "sq": { - "opus100": { - "u": 0.8911074994195496, - "t": 0.900165211234364, - "punct": 0.9555774925962488 - }, - "ud": { - "u": 0.9917355371900827, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9422754491017965, - "t": 0.9422754491017965, - "punct": 0.9610961585515048 - }, - "ud": { - "u": 0.9376146788990826, - "t": 0.9586935638808838, - "punct": 0.9942196531791908 - } - }, - "sv": { - "opus100": { - "u": 0.913660693507098, - "t": 0.9315525876460768, - "punct": 0.9552311435523114 - }, - "ud": { - "u": 0.9396471680594243, - "t": 0.946919431279621, - "punct": 0.9683604985618409 - } - }, - "ta": { - "ersatz": { - "u": 0.9320754716981132, - "t": 0.9663823381836428, - "punct": 0.9785749875435974 - }, - "opus100": { - "u": 0.5893719806763286, - "t": 0.574530516431925, - "punct": 0.6902068965517242 - }, - "ud": { - "u": 0.944, - "t": 0.9629629629629629, - "punct": 1.0 - } - }, - "te": { - "opus100": { - "u": 0.7624254473161033, - "t": 0.7684154742978271, - "punct": 0.8290527478597074 - } - }, - "tg": { - "opus100": { - "u": 0.7901775926331944, - "t": 0.8081612341378452, - "punct": 0.905484818805093 - } - }, - "th": { - "opus100": { - "u": 0.6880602366439584, - "t": 0.6981132075471698, - "punct": 0.7110577884423115 - }, - "ud": { - "u": 0.6397153945666235, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.9153187440532826, - "t": 0.9235513715305955, - "punct": 0.9743504330446369 - }, - "opus100": { - "u": 0.9285542458503729, - "t": 0.9304347826086957, - "punct": 0.9535802469135802 - }, - "ud": { - "u": 0.9362934362934363, - "t": 0.9445262641138931, - "punct": 0.990872210953347 - } - }, - "uk": { - "opus100": { - "u": 0.888113514770877, - "t": 0.8894073728418105, - "punct": 0.9421487603305784 - }, - "ud": { - "u": 0.9084010840108401, - "t": 0.9214245336348219, - "punct": 0.9824759751271904 - } - }, - "ur": { - "opus100": { - "u": 0.48287385129490396, - "t": 0.4684684684684685, - "punct": 0.5970961887477314 - }, - "ud": { - "u": 0.898723404255319, - "t": 0.9757009345794393, - "punct": 0.9915966386554622 - } - }, - "uz": { - "opus100": { - "u": 0.766845804051261, - "t": 0.7797592510031208, - "punct": 0.8393186003683242 - } - }, - "vi": { - "opus100": { - "u": 0.9119754350051177, - "t": 0.9128310619696579, - "punct": 0.9480584972264247 - }, - "ud": { - "u": 0.8227979274611399, - "t": 0.920099875156055, - "punct": 0.9732753262896209 - } - }, - "xh": { - "opus100": { - "u": 0.80523890371089, - "t": 0.8054408549914986, - "punct": 0.8921444809295276 - } - }, - "yi": { - "opus100": { - "u": 0.6427492447129909, - "t": 0.652906976744186, - "punct": 0.7825383993532741 - } - }, - "yo": { - "opus100": { - "u": 0.744346824139421, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8380187416331996, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.670755326016785, - "t": 0.8827721798967806, - "punct": 0.9657057654075547 - }, - "opus100": { - "u": 0.5328813559322033, - "t": 0.6854965254427259, - "punct": 0.8590943587149 - }, - "ud": { - "u": 0.7669543773119606, - "t": 0.9518935516888434, - "punct": 0.998998998998999 - } - }, - "zu": { - "opus100": { - "u": 0.8156606851549756, - "t": 0.8472081218274112, - "punct": 0.884227730863525 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-1l_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-canine-s-1l_intrinsic_results.json deleted file mode 100644 index 4b672219..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-1l_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.7420956362686177, - "t": 0.7782638728989177, - "punct": 0.8768171384850804 - }, - "ud": { - "u": 0.9770114942528736, - "t": 0.988262910798122, - "punct": 0.9269356597600872 - } - }, - "am": { - "opus100": { - "u": 0.5617293835068055, - "t": 0.6032897919690372, - "punct": 0.6987771400049912 - } - }, - "ar": { - "ersatz": { - "u": 0.8654750705550329, - "t": 0.886426592797784, - "punct": 0.9219021173203749 - }, - "opus100": { - "u": 0.6600936652699039, - "t": 0.6649006622516556, - "punct": 0.7645169261181122 - }, - "ud": { - "u": 0.7949940405244339, - "t": 0.8606726149622511, - "punct": 0.8821022727272727 - } - }, - "az": { - "opus100": { - "u": 0.7624693376941947, - "t": 0.7672318872495044, - "punct": 0.8343825665859564 - } - }, - "be": { - "opus100": { - "u": 0.7080066524114992, - "t": 0.7204857207105914, - "punct": 0.8685540950455005 - }, - "ud": { - "u": 0.8930648769574945, - "t": 0.8842471714534378, - "punct": 0.8937221947602572 - } - }, - "bg": { - "opus100": { - "u": 0.9364851957975167, - "t": 0.9243816254416961, - "punct": 0.9632713026444663 - }, - "ud": { - "u": 0.9753030983385721, - "t": 0.9753030983385721, - "punct": 0.9902048085485308 - } - }, - "bn": { - "opus100": { - "u": 0.7814313346228241, - "t": 0.8233046800382045, - "punct": 0.8573511543134872 - }, - "ud": { - "u": 0.9824561403508771, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8968421052631579, - "t": 0.9075750357313005, - "punct": 0.9443207126948775 - }, - "ud": { - "u": 0.9831415573989832, - "t": 0.9880952380952381, - "punct": 0.9994585814834868 - } - }, - "ceb": { - "ud": { - "u": 0.9973474801061007, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.9393761035903474, - "t": 0.9384025935750073, - "punct": 0.9877977919814063 - }, - "opus100": { - "u": 0.8925581395348837, - "t": 0.8954248366013072, - "punct": 0.9480712166172107 - }, - "ud": { - "u": 0.9229269243894116, - "t": 0.9236179908856746, - "punct": 0.9480958536342846 - } - }, - "cy": { - "opus100": { - "u": 0.7069065583284968, - "t": 0.75, - "punct": 0.8209157409916013 - }, - "ud": { - "u": 0.9900575614861329, - "t": 0.9846316905140434, - "punct": 0.9947478991596639 - } - }, - "da": { - "opus100": { - "u": 0.8970114942528735, - "t": 0.9105423808405729, - "punct": 0.9456415279138101 - }, - "ud": { - "u": 0.9496527777777778, - "t": 0.9471830985915494, - "punct": 0.983050847457627 - } - }, - "de": { - "ersatz": { - "u": 0.9505291656411519, - "t": 0.9494640122511485, - "punct": 0.9902813299232738 - }, - "opus100": { - "u": 0.7847177505902554, - "t": 0.8410329305851694, - "punct": 0.8890015205271161 - }, - "ud": { - "u": 0.9589457678661937, - "t": 0.9634585692228512, - "punct": 0.9666319082377477 - } - }, - "el": { - "opus100": { - "u": 0.9129213483146068, - "t": 0.9206349206349207, - "punct": 0.964180569185476 - }, - "ud": { - "u": 0.9804347826086957, - "t": 0.9690265486725664, - "punct": 0.9901853871319519 - } - }, - "en": { - "ersatz": { - "u": 0.9721938775510204, - "t": 0.9758585076168345, - "punct": 0.9859889214727924 - }, - "opus100": { - "u": 0.9175257731958764, - "t": 0.9081364829396325, - "punct": 0.9467745891586952 - }, - "ud": { - "u": 0.9438706780422093, - "t": 0.9437696806117859, - "punct": 0.9622119815668203 - } - }, - "eo": { - "opus100": { - "u": 0.9138014527845036, - "t": 0.9102256361017763, - "punct": 0.9537173806006892 - } - }, - "es": { - "ersatz": { - "u": 0.985855958380751, - "t": 0.9839080459770115, - "punct": 0.9949420786425193 - }, - "opus100": { - "u": 0.9188165680473372, - "t": 0.9259525521207764, - "punct": 0.9546574667323804 - }, - "ud": { - "u": 0.9640328518833191, - "t": 0.9702398150823461, - "punct": 0.9953569355774812 - } - }, - "et": { - "ersatz": { - "u": 0.9539136795903438, - "t": 0.9541927409261577, - "punct": 0.9817545613596601 - }, - "opus100": { - "u": 0.8535003354954147, - "t": 0.8789659224441833, - "punct": 0.9494799405646359 - }, - "ud": { - "u": 0.9103909934580862, - "t": 0.9140829862717877, - "punct": 0.9715274500550574 - } - }, - "eu": { - "opus100": { - "u": 0.8647409445208619, - "t": 0.8731673260414242, - "punct": 0.91796875 - }, - "ud": { - "u": 0.9699945444626297, - "t": 0.9735537190082645, - "punct": 0.999166435120867 - } - }, - "fa": { - "opus100": { - "u": 0.6019235280319024, - "t": 0.6049966239027684, - "punct": 0.7139376218323586 - }, - "ud": { - "u": 0.9706275033377837, - "t": 0.9816700610997964, - "punct": 1.0 - } - }, - "fi": { - "ersatz": { - "u": 0.9709645669291339, - "t": 0.9716678984971668, - "punct": 0.992496248124062 - }, - "opus100": { - "u": 0.9145259224661373, - "t": 0.9301990885104342, - "punct": 0.9606453189929113 - }, - "ud": { - "u": 0.9281288723667905, - "t": 0.9293252318516149, - "punct": 0.9751211631663974 - } - }, - "fr": { - "ersatz": { - "u": 0.9668953176260066, - "t": 0.9659574468085106, - "punct": 0.9894610057211684 - }, - "opus100": { - "u": 0.8863897176956621, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9660023446658851, - "t": 0.9704142011834319, - "punct": 0.9805825242718447 - } - }, - "fy": { - "opus100": { - "u": 0.5708206686930092, - "t": 0.6727456940222897, - "punct": 0.8719723183391004 - } - }, - "ga": { - "opus100": { - "u": 0.8113671962407697, - "t": 0.8084350721420643, - "punct": 0.892245720040282 - }, - "ud": { - "u": 0.8832188420019628, - "t": 0.9167523124357656, - "punct": 0.986784140969163 - } - }, - "gd": { - "opus100": { - "u": 0.823216659282233, - "t": 0.8395270270270271, - "punct": 0.9250693802035153 - }, - "ud": { - "u": 0.6980728051391863, - "t": 0.7088830255057167, - "punct": 0.8056603773584906 - } - }, - "gl": { - "opus100": { - "u": 0.8891498356035699, - "t": 0.8920320603488922, - "punct": 0.9407443682664055 - }, - "ud": { - "u": 0.9788819875776398, - "t": 0.9849246231155778, - "punct": 0.9800498753117208 - } - }, - "gu": { - "ersatz": { - "u": 0.8846153846153847, - "t": 0.8836987607244995, - "punct": 0.9581256231306081 - }, - "opus100": { - "u": 0.70703125, - "t": 0.7075030750307503, - "punct": 0.7653319817536748 - } - }, - "ha": { - "opus100": { - "u": 0.8395273899033299, - "t": 0.8765730880929332, - "punct": 0.9144641999038924 - } - }, - "he": { - "opus100": { - "u": 0.9105999525729191, - "t": 0.9007955077211044, - "punct": 0.9437810945273631 - }, - "ud": { - "u": 0.9529702970297029, - "t": 0.9514066496163683, - "punct": 0.9664082687338501 - } - }, - "hi": { - "ersatz": { - "u": 0.9329789253844694, - "t": 0.9425874950845458, - "punct": 0.9639877924720244 - }, - "opus100": { - "u": 0.6672748004561003, - "t": 0.6463286345466022, - "punct": 0.7571022727272727 - }, - "ud": { - "u": 0.9494430162810625, - "t": 0.9501871580765909, - "punct": 0.9985158800831107 - } - }, - "hu": { - "opus100": { - "u": 0.9187793427230048, - "t": 0.9283341243474134, - "punct": 0.9637610186092066 - }, - "ud": { - "u": 0.9640130861504908, - "t": 0.9614512471655328, - "punct": 0.9921436588103255 - } - }, - "hy": { - "opus100": { - "u": 0.8674359318395276, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9461847389558233, - "t": 0.9548810500410173, - "punct": 0.9839119390347164 - } - }, - "id": { - "opus100": { - "u": 0.8858513189448441, - "t": 0.8977690610443735, - "punct": 0.9436970602889885 - }, - "ud": { - "u": 0.9826818406729342, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.8112522686025408, - "t": 0.8237716975581052, - "punct": 0.9050961245041195 - } - }, - "is": { - "opus100": { - "u": 0.9439884113954611, - "t": 0.9482129832239241, - "punct": 0.9674418604651163 - }, - "ud": { - "u": 0.8910681155579113, - "t": 0.9038496294957528, - "punct": 0.9645484949832775 - } - }, - "it": { - "opus100": { - "u": 0.8680679785330948, - "t": 0.8866312629877627, - "punct": 0.938319572608062 - }, - "ud": { - "u": 0.9554013875123885, - "t": 0.964964964964965, - "punct": 0.9968976215098242 - } - }, - "ja": { - "ersatz": { - "u": 0.7773820124666074, - "t": 0.7816901408450704, - "punct": 0.9419047619047619 - }, - "opus100": { - "u": 0.39716312056737585, - "t": 0.8076099881093936, - "punct": 0.8682092555331992 - }, - "ud": { - "u": 0.959780621572212, - "t": 0.9589552238805971, - "punct": 0.9812734082397003 - } - }, - "jv": { - "ud": { - "u": 0.9803921568627451, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.9109720885466795, - "t": 0.9109720885466795, - "punct": 0.9339901477832512 - } - }, - "kk": { - "ersatz": { - "u": 0.96575682382134, - "t": 0.9651741293532339, - "punct": 0.9960079840319361 - }, - "opus100": { - "u": 0.7331362536952432, - "t": 0.7604485219164118, - "punct": 0.9143452225982817 - }, - "ud": { - "u": 0.9588122605363985, - "t": 0.8973697782362042, - "punct": 0.9686444766039556 - } - }, - "km": { - "ersatz": { - "u": 0.8365727885759618, - "t": 0.9129540781357094, - "punct": 0.9145548329221798 - }, - "opus100": { - "u": 0.6985555292446128, - "t": 0.6936887921653971, - "punct": 0.7782305005820722 - } - }, - "kn": { - "opus100": { - "u": 0.630221763795771, - "t": 0.619047619047619, - "punct": 0.7423631123919306 - } - }, - "ko": { - "opus100": { - "u": 0.5872367180132034, - "t": 0.718957345971564, - "punct": 0.8185053380782917 - }, - "ud": { - "u": 0.9923830250272035, - "t": 0.9923664122137404, - "punct": 0.999343975508419 - } - }, - "ku": { - "opus100": { - "u": 0.7883442511859047, - "t": 0.6757634827810266, - "punct": 0.8596004439511654 - } - }, - "ky": { - "opus100": { - "u": 0.8481471161883534, - "t": 0.846929950994523, - "punct": 0.9011715229798739 - } - }, - "la": { - "ud": { - "u": 0.8895768833849329, - "t": 0.9005442850074221, - "punct": 0.9637010676156584 - } - }, - "lt": { - "ersatz": { - "u": 0.9542547958681751, - "t": 0.9616548940464178, - "punct": 0.9880239520958083 - }, - "opus100": { - "u": 0.8007630351844001, - "t": 0.852879459081371, - "punct": 0.9073146292585171 - }, - "ud": { - "u": 0.9691756272401434, - "t": 0.9742457689477556, - "punct": 0.9867060561299852 - } - }, - "lv": { - "ersatz": { - "u": 0.9660322813779813, - "t": 0.9711182424092817, - "punct": 0.991861898890259 - }, - "opus100": { - "u": 0.8035065212743212, - "t": 0.8612485276796231, - "punct": 0.9110127826941986 - }, - "ud": { - "u": 0.9685426920607747, - "t": 0.9675338636852291, - "punct": 0.9896818572656921 - } - }, - "mg": { - "opus100": { - "u": 0.8945538818076477, - "t": 0.9123649459783912, - "punct": 0.9544436146377894 - } - }, - "mk": { - "opus100": { - "u": 0.9199255121042831, - "t": 0.9237605238540691, - "punct": 0.9552529182879378 - } - }, - "ml": { - "opus100": { - "u": 0.8050056882821388, - "t": 0.8173913043478263, - "punct": 0.8637905962190984 - } - }, - "mn": { - "opus100": { - "u": 0.8910990809517814, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.8853410740203193, - "t": 0.8879668049792531, - "punct": 0.9265986563821846 - }, - "ud": { - "u": 0.9375000000000001, - "t": 0.9484536082474226, - "punct": 0.967032967032967 - } - }, - "ms": { - "opus100": { - "u": 0.8697967086156824, - "t": 0.8790720631786771, - "punct": 0.9389505549949545 - } - }, - "mt": { - "opus100": { - "u": 0.6812080536912751, - "t": 0.8060208788540908, - "punct": 0.8860510805500983 - }, - "ud": { - "u": 0.8943396226415093, - "t": 0.888671875, - "punct": 0.9268292682926829 - } - }, - "my": { - "opus100": { - "u": 0.6952129995608257, - "t": 0.7625099285146942, - "punct": 0.8162722680138261 - } - }, - "ne": { - "opus100": { - "u": 0.7056128293241695, - "t": 0.7156374501992032, - "punct": 0.7552742616033755 - } - }, - "nl": { - "opus100": { - "u": 0.9158878504672898, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9261410788381743, - "t": 0.9095315024232633, - "punct": 0.959731543624161 - } - }, - "no": { - "opus100": { - "u": 0.9466827503015681, - "t": 0.9480048367593711, - "punct": 0.9666503187837175 - }, - "ud": { - "u": 0.986060918946825, - "t": 0.9865841073271413, - "punct": 0.9930286599535244 - } - }, - "pa": { - "opus100": { - "u": 0.6444677503932879, - "t": 0.6651917404129793, - "punct": 0.7445652173913044 - } - }, - "pl": { - "ersatz": { - "u": 0.9324191968658179, - "t": 0.9334006054490415, - "punct": 0.9835082458770614 - }, - "opus100": { - "u": 0.9196768060836503, - "t": 0.9248499399759904, - "punct": 0.9605295415543025 - }, - "ud": { - "u": 0.9507984462667242, - "t": 0.961386573058359, - "punct": 0.9925356254241121 - } - }, - "ps": { - "ersatz": { - "u": 0.8551477752517052, - "t": 0.9231605654222546, - "punct": 0.9651722860318638 - }, - "opus100": { - "u": 0.6923990498812351, - "t": 0.7177963813124493, - "punct": 0.7615819209039547 - } - }, - "pt": { - "opus100": { - "u": 0.9125849543004453, - "t": 0.9237389433420989, - "punct": 0.9562454167685163 - }, - "ud": { - "u": 0.9558198810535259, - "t": 0.9543320529236022, - "punct": 0.9810834049871022 - } - }, - "ro": { - "ersatz": { - "u": 0.975202553400442, - "t": 0.9683417085427135, - "punct": 0.9927770859277708 - }, - "opus100": { - "u": 0.8944099378881988, - "t": 0.8976668976668978, - "punct": 0.9687344913151364 - }, - "ud": { - "u": 0.8205928237129485, - "t": 0.902360018509949, - "punct": 0.9933269780743567 - } - }, - "ru": { - "ersatz": { - "u": 0.9704852426213106, - "t": 0.970126582278481, - "punct": 0.9878172588832487 - }, - "opus100": { - "u": 0.8193450444589025, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8481675392670156, - "t": 0.8569868995633187, - "punct": 0.920045045045045 - } - }, - "si": { - "opus100": { - "u": 0.7944234404536862, - "t": 0.8042669312825601, - "punct": 0.8565022421524664 - } - }, - "sk": { - "opus100": { - "u": 0.9057481964161043, - "t": 0.9260247392675236, - "punct": 0.9619940769990128 - }, - "ud": { - "u": 0.9639126305792972, - "t": 0.9610511496949787, - "punct": 0.9733079122974261 - } - }, - "sl": { - "opus100": { - "u": 0.9158091674462114, - "t": 0.9274327861051629, - "punct": 0.9534658264663112 - }, - "ud": { - "u": 0.9596958174904943, - "t": 0.9631067961165048, - "punct": 0.9937353171495693 - } - }, - "sq": { - "opus100": { - "u": 0.8980446927374303, - "t": 0.91, - "punct": 0.9563501849568434 - }, - "ud": { - "u": 1.0, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9437664513041397, - "t": 0.9466089466089466, - "punct": 0.9656357388316151 - }, - "ud": { - "u": 0.9657142857142856, - "t": 0.9720347155255544, - "punct": 0.9961538461538462 - } - }, - "sv": { - "opus100": { - "u": 0.9149382428338384, - "t": 0.929845422116528, - "punct": 0.9575402635431918 - }, - "ud": { - "u": 0.9486940298507464, - "t": 0.9532357109116675, - "punct": 0.9679272379128769 - } - }, - "ta": { - "ersatz": { - "u": 0.939667458432304, - "t": 0.9552683896620278, - "punct": 0.9812807881773399 - }, - "opus100": { - "u": 0.6387655886704714, - "t": 0.632155573815393, - "punct": 0.7176079734219268 - }, - "ud": { - "u": 0.975609756097561, - "t": 0.9752066115702478, - "punct": 0.975 - } - }, - "te": { - "opus100": { - "u": 0.7686472819216182, - "t": 0.7740932642487047, - "punct": 0.8409212640599893 - } - }, - "tg": { - "opus100": { - "u": 0.810386209906175, - "t": 0.8406296114117068, - "punct": 0.9097187962506166 - } - }, - "th": { - "opus100": { - "u": 0.691788126555279, - "t": 0.7067812798471823, - "punct": 0.7247459033395561 - }, - "ud": { - "u": 0.6891939457937346, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.9204453767952236, - "t": 0.9173676397822861, - "punct": 0.981113320079523 - }, - "opus100": { - "u": 0.9301088270858525, - "t": 0.9315201554152501, - "punct": 0.9592693162182178 - }, - "ud": { - "u": 0.9344422700587085, - "t": 0.9364919354838711, - "punct": 0.9918616480162767 - } - }, - "uk": { - "opus100": { - "u": 0.8924581005586593, - "t": 0.895278167367929, - "punct": 0.9435721295387636 - }, - "ud": { - "u": 0.9228206551915603, - "t": 0.9207419898819562, - "punct": 0.9842873176206509 - } - }, - "ur": { - "opus100": { - "u": 0.529923830250272, - "t": 0.50790413054564, - "punct": 0.6368869445084043 - }, - "ud": { - "u": 0.9058219178082192, - "t": 0.9517743403093722, - "punct": 0.9924953095684803 - } - }, - "uz": { - "opus100": { - "u": 0.7745688759609392, - "t": 0.7889528193325662, - "punct": 0.8643984220907297 - } - }, - "vi": { - "opus100": { - "u": 0.906210711591652, - "t": 0.9101552557902773, - "punct": 0.9494241362043064 - }, - "ud": { - "u": 0.8260416666666667, - "t": 0.9340659340659341, - "punct": 0.9757311761045426 - } - }, - "xh": { - "opus100": { - "u": 0.798978644382544, - "t": 0.8280159521435693, - "punct": 0.9070841889117043 - } - }, - "yi": { - "opus100": { - "u": 0.7341115434500648, - "t": 0.7322368421052632, - "punct": 0.7883271681052199 - } - }, - "yo": { - "opus100": { - "u": 0.7457842018511475, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8339973439575034, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.8518105849582172, - "t": 0.90963554667998, - "punct": 0.9715852442671984 - }, - "opus100": { - "u": 0.7765714285714286, - "t": 0.7954492686324588, - "punct": 0.8854457708915418 - }, - "ud": { - "u": 0.8847006651884702, - "t": 0.9681908548707753, - "punct": 0.9979959919839679 - } - }, - "zu": { - "opus100": { - "u": 0.7584795321637428, - "t": 0.8374281233664402, - "punct": 0.8971506105834465 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-3l-no-adapters_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-canine-s-3l-no-adapters_intrinsic_results.json deleted file mode 100644 index 2dbcb95c..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-3l-no-adapters_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.7701346389228886, - "t": 0.7708779443254818, - "punct": 0.8685626441199078 - }, - "ud": { - "u": 0.9747706422018348, - "t": 0.985981308411215, - "punct": 1.0 - } - }, - "am": { - "opus100": { - "u": 0.5893962201036963, - "t": 0.6090457021075064, - "punct": 0.6816969696969697 - } - }, - "ar": { - "ersatz": { - "u": 0.8697866921362624, - "t": 0.890282131661442, - "punct": 0.9275660830758667 - }, - "opus100": { - "u": 0.6372828623282344, - "t": 0.6391184573002755, - "punct": 0.7223320158102767 - }, - "ud": { - "u": 0.7742316784869976, - "t": 0.8473177441540577, - "punct": 0.8597475455820476 - } - }, - "az": { - "opus100": { - "u": 0.7387944358578052, - "t": 0.7722955756312253, - "punct": 0.8295640009326184 - } - }, - "be": { - "opus100": { - "u": 0.6746268656716418, - "t": 0.7104464672735153, - "punct": 0.880161127895267 - }, - "ud": { - "u": 0.8811002661934338, - "t": 0.874067573497148, - "punct": 0.9076848719188013 - } - }, - "bg": { - "opus100": { - "u": 0.9296577946768061, - "t": 0.9182242990654205, - "punct": 0.9632352941176471 - }, - "ud": { - "u": 0.9745876058849755, - "t": 0.973142345568487, - "punct": 0.9901610017889089 - } - }, - "bn": { - "opus100": { - "u": 0.776029316663074, - "t": 0.8268129770992367, - "punct": 0.8563078421821724 - }, - "ud": { - "u": 0.9911504424778761, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8885780885780886, - "t": 0.8973203699312308, - "punct": 0.9386954389406572 - }, - "ud": { - "u": 0.9727729315358181, - "t": 0.9804551539491297, - "punct": 0.9989171629669735 - } - }, - "ceb": { - "ud": { - "u": 0.9973474801061007, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.9497822931785196, - "t": 0.9433186490455213, - "punct": 0.988070992144312 - }, - "opus100": { - "u": 0.8970792767732962, - "t": 0.9050751879699247, - "punct": 0.9456710493674026 - }, - "ud": { - "u": 0.920630344960123, - "t": 0.9218773280357586, - "punct": 0.9454995054401583 - } - }, - "cy": { - "opus100": { - "u": 0.661896243291592, - "t": 0.7173857544038805, - "punct": 0.7998918334234723 - }, - "ud": { - "u": 0.9864442127215851, - "t": 0.9792442788717403, - "punct": 0.995260663507109 - } - }, - "da": { - "opus100": { - "u": 0.891555145362252, - "t": 0.909952606635071, - "punct": 0.9470051762385998 - }, - "ud": { - "u": 0.9414802065404476, - "t": 0.937112488928255, - "punct": 0.9857397504456328 - } - }, - "de": { - "ersatz": { - "u": 0.9457743038593063, - "t": 0.9530776992936428, - "punct": 0.9890334098444274 - }, - "opus100": { - "u": 0.7821229050279329, - "t": 0.8537954600927508, - "punct": 0.8872987477638641 - }, - "ud": { - "u": 0.9562154001006543, - "t": 0.9631551634665283, - "punct": 0.9608879492600424 - } - }, - "el": { - "opus100": { - "u": 0.9134705332086063, - "t": 0.9295774647887324, - "punct": 0.9621993127147765 - }, - "ud": { - "u": 0.9725576289791438, - "t": 0.9767955801104973, - "punct": 0.9779735682819383 - } - }, - "en": { - "ersatz": { - "u": 0.9634370445472403, - "t": 0.9707096774193549, - "punct": 0.9843414982782145 - }, - "opus100": { - "u": 0.9110127826941987, - "t": 0.9054151624548736, - "punct": 0.9452054794520548 - }, - "ud": { - "u": 0.9384822631342613, - "t": 0.938093086308179, - "punct": 0.9613970588235294 - } - }, - "eo": { - "opus100": { - "u": 0.9091352009744215, - "t": 0.9090909090909092, - "punct": 0.9538613372810264 - } - }, - "es": { - "ersatz": { - "u": 0.9824902723735409, - "t": 0.9846605744125326, - "punct": 0.9921285667431944 - }, - "opus100": { - "u": 0.9048288795124237, - "t": 0.9200191570881225, - "punct": 0.9515375153751536 - }, - "ud": { - "u": 0.9611923509561304, - "t": 0.9742103738046943, - "punct": 0.9956483899042645 - } - }, - "et": { - "ersatz": { - "u": 0.9511432009626957, - "t": 0.9578736208625879, - "punct": 0.9755489021956087 - }, - "opus100": { - "u": 0.853019538188277, - "t": 0.8939539347408828, - "punct": 0.944059405940594 - }, - "ud": { - "u": 0.9089266897486075, - "t": 0.9218362282878413, - "punct": 0.9733270940570894 - } - }, - "eu": { - "opus100": { - "u": 0.8698471514590088, - "t": 0.8734827264239028, - "punct": 0.9236399121737008 - }, - "ud": { - "u": 0.9670804101457097, - "t": 0.9828634604754007, - "punct": 0.9994444444444445 - } - }, - "fa": { - "opus100": { - "u": 0.5678776290630975, - "t": 0.5673146148308135, - "punct": 0.6987437781464803 - }, - "ud": { - "u": 0.9635036496350364, - "t": 0.9786946229286438, - "punct": 0.9989701338825953 - } - }, - "fi": { - "ersatz": { - "u": 0.9624206930209858, - "t": 0.9717993511355129, - "punct": 0.9879336349924586 - }, - "opus100": { - "u": 0.9130028063610852, - "t": 0.93125, - "punct": 0.9590786571918647 - }, - "ud": { - "u": 0.9316846986089645, - "t": 0.943579766536965, - "punct": 0.9748224661071659 - } - }, - "fr": { - "ersatz": { - "u": 0.968564650059312, - "t": 0.9532073132940813, - "punct": 0.9803089972735534 - }, - "opus100": { - "u": 0.8812243033348561, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9602803738317758, - "t": 0.9704142011834319, - "punct": 0.9854368932038836 - } - }, - "fy": { - "opus100": { - "u": 0.5774735532047294, - "t": 0.6527173913043479, - "punct": 0.864353312302839 - } - }, - "ga": { - "opus100": { - "u": 0.7839422643211547, - "t": 0.787685290763968, - "punct": 0.8676907829534193 - }, - "ud": { - "u": 0.8814887365328109, - "t": 0.9118852459016393, - "punct": 0.9867549668874173 - } - }, - "gd": { - "opus100": { - "u": 0.7910787437414656, - "t": 0.8248355263157895, - "punct": 0.910174152153987 - }, - "ud": { - "u": 0.6651270207852193, - "t": 0.7023346303501946, - "punct": 0.7568627450980393 - } - }, - "gl": { - "opus100": { - "u": 0.8875878220140515, - "t": 0.891463703003074, - "punct": 0.9388154674498288 - }, - "ud": { - "u": 0.9656019656019655, - "t": 0.9774436090225564, - "punct": 0.978776529338327 - } - }, - "gu": { - "ersatz": { - "u": 0.8834467120181406, - "t": 0.8734852157052836, - "punct": 0.9563492063492064 - }, - "opus100": { - "u": 0.685401286020481, - "t": 0.6860209807270067, - "punct": 0.7549094618719714 - } - }, - "ha": { - "opus100": { - "u": 0.8144286905754795, - "t": 0.8667301285102332, - "punct": 0.9117994797824545 - } - }, - "he": { - "opus100": { - "u": 0.9115065243179121, - "t": 0.9014282369468508, - "punct": 0.9440120512176752 - }, - "ud": { - "u": 0.9258809234507898, - "t": 0.9538461538461538, - "punct": 0.9608355091383812 - } - }, - "hi": { - "ersatz": { - "u": 0.9303030303030302, - "t": 0.9424290220820191, - "punct": 0.9502151198524893 - }, - "opus100": { - "u": 0.6432616081540204, - "t": 0.6172890447699607, - "punct": 0.7322156773901224 - }, - "ud": { - "u": 0.9461756373937679, - "t": 0.9477633477633477, - "punct": 0.9991084695393759 - } - }, - "hu": { - "opus100": { - "u": 0.9239516702203269, - "t": 0.9296446458383019, - "punct": 0.9624170965364776 - }, - "ud": { - "u": 0.9664864864864865, - "t": 0.9800884955752213, - "punct": 0.9933333333333333 - } - }, - "hy": { - "opus100": { - "u": 0.8618930913426508, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9476228847703466, - "t": 0.9551227773073667, - "punct": 0.9786871270247229 - } - }, - "id": { - "opus100": { - "u": 0.8884078884078884, - "t": 0.900518390520859, - "punct": 0.9399152331089504 - }, - "ud": { - "u": 0.976401179941003, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.8144391408114559, - "t": 0.8223645894001166, - "punct": 0.8930370370370371 - } - }, - "is": { - "opus100": { - "u": 0.9448091417456844, - "t": 0.9481915933528837, - "punct": 0.964972866304884 - }, - "ud": { - "u": 0.8985738329347152, - "t": 0.9147201612164514, - "punct": 0.9667300380228137 - } - }, - "it": { - "opus100": { - "u": 0.8579684374305402, - "t": 0.8924581005586593, - "punct": 0.9356866537717602 - }, - "ud": { - "u": 0.9432485322896282, - "t": 0.9460255152109912, - "punct": 0.9948293691830403 - } - }, - "ja": { - "ersatz": { - "u": 0.8029969149405025, - "t": 0.8023360287511231, - "punct": 0.9341029341029342 - }, - "opus100": { - "u": 0.3294987674609696, - "t": 0.778698224852071, - "punct": 0.8663291139240507 - }, - "ud": { - "u": 0.9651376146788991, - "t": 0.9612842304060436, - "punct": 0.9850467289719625 - } - }, - "jv": { - "ud": { - "u": 0.9727626459143969, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.9047146401985112, - "t": 0.9100935027571326, - "punct": 0.9345794392523363 - } - }, - "kk": { - "ersatz": { - "u": 0.9699062654168722, - "t": 0.9633718013045659, - "punct": 0.999001996007984 - }, - "opus100": { - "u": 0.7373599344083083, - "t": 0.7534391534391534, - "punct": 0.8953125 - }, - "ud": { - "u": 0.9686311787072244, - "t": 0.8829396325459317, - "punct": 0.9827751196172249 - } - }, - "km": { - "ersatz": { - "u": 0.8258013139558033, - "t": 0.9085872576177286, - "punct": 0.9106940990278092 - }, - "opus100": { - "u": 0.6660386245878475, - "t": 0.6687402799377916, - "punct": 0.7521222410865874 - } - }, - "kn": { - "opus100": { - "u": 0.6121521862578081, - "t": 0.6131221719457014, - "punct": 0.7581920903954802 - } - }, - "ko": { - "opus100": { - "u": 0.5417354008578028, - "t": 0.6965930018416205, - "punct": 0.7963224893917963 - }, - "ud": { - "u": 0.9917534722222222, - "t": 0.9956331877729259, - "punct": 0.9995627459554001 - } - }, - "ku": { - "opus100": { - "u": 0.7855203619909502, - "t": 0.6082229018008835, - "punct": 0.7933734939759035 - } - }, - "ky": { - "opus100": { - "u": 0.8078962875662936, - "t": 0.8171428571428572, - "punct": 0.8984560570071259 - } - }, - "la": { - "ud": { - "u": 0.9217512808570099, - "t": 0.9191652674502279, - "punct": 0.9619834710743801 - } - }, - "lt": { - "ersatz": { - "u": 0.9547004383828543, - "t": 0.9541099344427634, - "punct": 0.9813036887316827 - }, - "opus100": { - "u": 0.7984726347051336, - "t": 0.8463138433094523, - "punct": 0.9045705675539929 - }, - "ud": { - "u": 0.9635974304068522, - "t": 0.9772893772893771, - "punct": 0.9853157121879589 - } - }, - "lv": { - "ersatz": { - "u": 0.9620739318290926, - "t": 0.9721880383952745, - "punct": 0.9916049382716049 - }, - "opus100": { - "u": 0.8126361655773421, - "t": 0.852328574771823, - "punct": 0.9088657751362059 - }, - "ud": { - "u": 0.9633886760323541, - "t": 0.9628363947031183, - "punct": 0.9896774193548387 - } - }, - "mg": { - "opus100": { - "u": 0.8471001757469244, - "t": 0.8986197049024274, - "punct": 0.9498011928429423 - } - }, - "mk": { - "opus100": { - "u": 0.9210037174721191, - "t": 0.9295973628443608, - "punct": 0.9560999272374485 - } - }, - "ml": { - "opus100": { - "u": 0.8013714285714285, - "t": 0.8031901209158734, - "punct": 0.8584344515822032 - } - }, - "mn": { - "opus100": { - "u": 0.8857689853222718, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.8993055555555556, - "t": 0.9010715175679043, - "punct": 0.9312089023773394 - }, - "ud": { - "u": 0.9591836734693878, - "t": 0.9591836734693878, - "punct": 0.9072164948453608 - } - }, - "ms": { - "opus100": { - "u": 0.8704914064391188, - "t": 0.8816936488169366, - "punct": 0.9371714643304129 - } - }, - "mt": { - "opus100": { - "u": 0.7165712028441636, - "t": 0.8082553395728342, - "punct": 0.8763440860215054 - }, - "ud": { - "u": 0.8949343339587242, - "t": 0.888888888888889, - "punct": 0.9297725024727992 - } - }, - "my": { - "opus100": { - "u": 0.6458238247375627, - "t": 0.684446791655664, - "punct": 0.782016348773842 - } - }, - "ne": { - "opus100": { - "u": 0.6947096774193549, - "t": 0.6931137724550899, - "punct": 0.7301333333333333 - } - }, - "nl": { - "opus100": { - "u": 0.913953488372093, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9240816326530612, - "t": 0.9117174959871589, - "punct": 0.9633333333333334 - } - }, - "no": { - "opus100": { - "u": 0.9477503628447024, - "t": 0.9515697249939159, - "punct": 0.9650934119960668 - }, - "ud": { - "u": 0.9832344596337376, - "t": 0.9832084732627228, - "punct": 0.990735975295934 - } - }, - "pa": { - "opus100": { - "u": 0.6385772913816689, - "t": 0.6572366759282647, - "punct": 0.7567975830815711 - } - }, - "pl": { - "ersatz": { - "u": 0.9323529411764706, - "t": 0.9299232736572889, - "punct": 0.9789789789789789 - }, - "opus100": { - "u": 0.9179548156956004, - "t": 0.9296931625996617, - "punct": 0.9601564409679785 - }, - "ud": { - "u": 0.9520311149524633, - "t": 0.9672167216721673, - "punct": 0.9918256130790192 - } - }, - "ps": { - "ersatz": { - "u": 0.8642833498841443, - "t": 0.9276100400145507, - "punct": 0.9518977827884254 - }, - "opus100": { - "u": 0.5157048940832725, - "t": 0.6554149085794656, - "punct": 0.7363353157745681 - } - }, - "pt": { - "opus100": { - "u": 0.9082847141190199, - "t": 0.9231505865453674, - "punct": 0.9548670407416443 - }, - "ud": { - "u": 0.9543918918918918, - "t": 0.9570815450643777, - "punct": 0.9780267126238691 - } - }, - "ro": { - "ersatz": { - "u": 0.9725490196078431, - "t": 0.9699570815450644, - "punct": 0.9937640309304066 - }, - "opus100": { - "u": 0.8811568007230005, - "t": 0.897761366258943, - "punct": 0.9694258016405668 - }, - "ud": { - "u": 0.8193146417445483, - "t": 0.9202965708989805, - "punct": 0.9942748091603053 - } - }, - "ru": { - "ersatz": { - "u": 0.971201588877855, - "t": 0.9711099847947289, - "punct": 0.9913924050632911 - }, - "opus100": { - "u": 0.8155799440499248, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8481078278900985, - "t": 0.8542825361512792, - "punct": 0.9260523321956768 - } - }, - "si": { - "opus100": { - "u": 0.8037518037518039, - "t": 0.8187075685189842, - "punct": 0.854235563469855 - } - }, - "sk": { - "opus100": { - "u": 0.9109557109557108, - "t": 0.9373177842565598, - "punct": 0.9625615763546799 - }, - "ud": { - "u": 0.9527856468366382, - "t": 0.9534662867996202, - "punct": 0.9738965353583293 - } - }, - "sl": { - "opus100": { - "u": 0.9202830188679246, - "t": 0.9307120594581635, - "punct": 0.9554852833860374 - }, - "ud": { - "u": 0.9609700644183402, - "t": 0.9692070823710548, - "punct": 0.9925810230378759 - } - }, - "sq": { - "opus100": { - "u": 0.8940520446096654, - "t": 0.9089609151572927, - "punct": 0.9535403726708075 - }, - "ud": { - "u": 1.0, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9409514702366722, - "t": 0.9454720153735288, - "punct": 0.9630905511811024 - }, - "ud": { - "u": 0.9690721649484535, - "t": 0.9691714836223506, - "punct": 0.9961612284069097 - } - }, - "sv": { - "opus100": { - "u": 0.9176580359225566, - "t": 0.9351519502273271, - "punct": 0.9597855227882036 - }, - "ud": { - "u": 0.9483480688692414, - "t": 0.9554924242424242, - "punct": 0.9699857074797522 - } - }, - "ta": { - "ersatz": { - "u": 0.9317004239284032, - "t": 0.957436154231347, - "punct": 0.9748644652538195 - }, - "opus100": { - "u": 0.612141652613828, - "t": 0.5931558935361216, - "punct": 0.7004936917169501 - }, - "ud": { - "u": 0.9795918367346939, - "t": 0.9745762711864409, - "punct": 0.995850622406639 - } - }, - "te": { - "opus100": { - "u": 0.7651533742331288, - "t": 0.7784743991640543, - "punct": 0.83663631494376 - } - }, - "tg": { - "opus100": { - "u": 0.782608695652174, - "t": 0.8194375925012333, - "punct": 0.9059454191033139 - } - }, - "th": { - "opus100": { - "u": 0.6879432624113475, - "t": 0.7043227665706052, - "punct": 0.7179281268821521 - }, - "ud": { - "u": 0.6533066132264529, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.9249680715197958, - "t": 0.9239612415831828, - "punct": 0.9788579990011653 - }, - "opus100": { - "u": 0.9300867888138862, - "t": 0.9349890430971513, - "punct": 0.9579624134520277 - }, - "ud": { - "u": 0.9383195726080622, - "t": 0.9455984174085065, - "punct": 0.9928861788617886 - } - }, - "uk": { - "opus100": { - "u": 0.8846776057314537, - "t": 0.892422825070159, - "punct": 0.9431929480901078 - }, - "ud": { - "u": 0.9097826086956523, - "t": 0.9246344206974128, - "punct": 0.9837716843872413 - } - }, - "ur": { - "opus100": { - "u": 0.47888888888888886, - "t": 0.48346636259977194, - "punct": 0.6070947462954648 - }, - "ud": { - "u": 0.9036658141517475, - "t": 0.9640552995391705, - "punct": 0.9934272300469483 - } - }, - "uz": { - "opus100": { - "u": 0.7796469366562824, - "t": 0.7956541840036986, - "punct": 0.8458646616541353 - } - }, - "vi": { - "opus100": { - "u": 0.9076768690416457, - "t": 0.9106317411402157, - "punct": 0.9501627848735286 - }, - "ud": { - "u": 0.8187919463087249, - "t": 0.9281210592686003, - "punct": 0.9743589743589743 - } - }, - "xh": { - "opus100": { - "u": 0.7868852459016394, - "t": 0.7881254488867608, - "punct": 0.891835673426937 - } - }, - "yi": { - "opus100": { - "u": 0.7192362093352193, - "t": 0.7173702868192071, - "punct": 0.7881388997268824 - } - }, - "yo": { - "opus100": { - "u": 0.7203116883116885, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8770949720670391, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.8640350877192983, - "t": 0.9168968114486569, - "punct": 0.9507232164746261 - }, - "opus100": { - "u": 0.6613238349658652, - "t": 0.7077137546468402, - "punct": 0.8541140837960626 - }, - "ud": { - "u": 0.9270386266094421, - "t": 0.979020979020979, - "punct": 0.9979959919839679 - } - }, - "zu": { - "opus100": { - "u": 0.7799097065462754, - "t": 0.8419974391805378, - "punct": 0.897705802968961 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-3l_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-canine-s-3l_intrinsic_results.json deleted file mode 100644 index 07263e1c..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-3l_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.7576292559899118, - "t": 0.7782764811490125, - "punct": 0.8854139964111767 - }, - "ud": { - "u": 0.9803921568627451, - "t": 0.990632318501171, - "punct": 0.9988249118683901 - } - }, - "am": { - "opus100": { - "u": 0.6037735849056605, - "t": 0.651238139319602, - "punct": 0.7191977077363898 - } - }, - "ar": { - "ersatz": { - "u": 0.8783610755441741, - "t": 0.8893513701005896, - "punct": 0.929299796057104 - }, - "opus100": { - "u": 0.6617790811339198, - "t": 0.6642616642616642, - "punct": 0.771964461994077 - }, - "ud": { - "u": 0.8208955223880596, - "t": 0.8752556237218814, - "punct": 0.8822695035460993 - } - }, - "az": { - "opus100": { - "u": 0.7658971243418388, - "t": 0.760575858250277, - "punct": 0.8387096774193549 - } - }, - "be": { - "opus100": { - "u": 0.7314519799726901, - "t": 0.7421383647798743, - "punct": 0.8979489744872436 - }, - "ud": { - "u": 0.8978518193774659, - "t": 0.896431679721497, - "punct": 0.9214758751182591 - } - }, - "bg": { - "opus100": { - "u": 0.9368421052631579, - "t": 0.9333333333333333, - "punct": 0.9651474530831099 - }, - "ud": { - "u": 0.9815895823978447, - "t": 0.9811659192825112, - "punct": 0.9959695476936856 - } - }, - "bn": { - "opus100": { - "u": 0.7949826989619376, - "t": 0.8308966861598441, - "punct": 0.874031007751938 - }, - "ud": { - "u": 0.9411764705882353, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8868799258229022, - "t": 0.895662368112544, - "punct": 0.9450332758195712 - }, - "ud": { - "u": 0.984467059453669, - "t": 0.9851712051765974, - "punct": 0.9975669099756691 - } - }, - "ceb": { - "ud": { - "u": 0.9973474801061007, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.9371866705986435, - "t": 0.9411420204978037, - "punct": 0.9892722528269063 - }, - "opus100": { - "u": 0.8854333409558655, - "t": 0.9077177248052868, - "punct": 0.9523573200992557 - }, - "ud": { - "u": 0.9247068098945501, - "t": 0.9256609024050884, - "punct": 0.9550707312213589 - } - }, - "cy": { - "opus100": { - "u": 0.6982248520710058, - "t": 0.7564385577630611, - "punct": 0.8263244128891317 - }, - "ud": { - "u": 0.9921259842519685, - "t": 0.9889182058047494, - "punct": 0.9947478991596639 - } - }, - "da": { - "opus100": { - "u": 0.8922443376801648, - "t": 0.9088774072334428, - "punct": 0.9497672139181573 - }, - "ud": { - "u": 0.9521322889469105, - "t": 0.9456812110418521, - "punct": 0.9857142857142857 - } - }, - "de": { - "ersatz": { - "u": 0.9569093610698365, - "t": 0.9598586215602121, - "punct": 0.9933639612046963 - }, - "opus100": { - "u": 0.7846746575342467, - "t": 0.8578210301447899, - "punct": 0.9006893030380393 - }, - "ud": { - "u": 0.9565217391304347, - "t": 0.9576446280991735, - "punct": 0.9668595476065229 - } - }, - "el": { - "opus100": { - "u": 0.9173708920187793, - "t": 0.9256355428842956, - "punct": 0.9623103279490944 - }, - "ud": { - "u": 0.9736263736263737, - "t": 0.9767955801104973, - "punct": 0.9767955801104973 - } - }, - "en": { - "ersatz": { - "u": 0.9679229640966776, - "t": 0.9691804959313128, - "punct": 0.9870787611194078 - }, - "opus100": { - "u": 0.9132976132489041, - "t": 0.9031035299692016, - "punct": 0.9503335804299481 - }, - "ud": { - "u": 0.950316169828365, - "t": 0.9499323410013532, - "punct": 0.9668202764976959 - } - }, - "eo": { - "opus100": { - "u": 0.9157384987893463, - "t": 0.9122302158273381, - "punct": 0.9567367119901112 - } - }, - "es": { - "ersatz": { - "u": 0.9878068606730613, - "t": 0.9776156524622783, - "punct": 0.9952622120568535 - }, - "opus100": { - "u": 0.9080648953679754, - "t": 0.9211657907310081, - "punct": 0.9541554302525128 - }, - "ud": { - "u": 0.9673202614379085, - "t": 0.9711649365628605, - "punct": 0.9970980847359256 - } - }, - "et": { - "ersatz": { - "u": 0.9623430962343096, - "t": 0.9580629056415376, - "punct": 0.9799196787148594 - }, - "opus100": { - "u": 0.8395222584147666, - "t": 0.8861712135465661, - "punct": 0.9491358024691359 - }, - "ud": { - "u": 0.9297895222000307, - "t": 0.9316345556246116, - "punct": 0.9820564830706818 - } - }, - "eu": { - "opus100": { - "u": 0.8571428571428572, - "t": 0.8704088704088704, - "punct": 0.9221351616062683 - }, - "ud": { - "u": 0.9737274220032841, - "t": 0.9755292823755843, - "punct": 0.9988876529477196 - } - }, - "fa": { - "opus100": { - "u": 0.6115702479338843, - "t": 0.6123931623931623, - "punct": 0.736245572609209 - }, - "ud": { - "u": 0.9696767744085304, - "t": 0.9803122878479295, - "punct": 0.9989701338825953 - } - }, - "fi": { - "ersatz": { - "u": 0.9753208292201382, - "t": 0.9731493099121707, - "punct": 0.9939909864797195 - }, - "opus100": { - "u": 0.9153810191678354, - "t": 0.9309683604985617, - "punct": 0.961038961038961 - }, - "ud": { - "u": 0.9275541795665635, - "t": 0.9304403318442885, - "punct": 0.9820166987797045 - } - }, - "fr": { - "ersatz": { - "u": 0.9738251041046995, - "t": 0.9684848484848485, - "punct": 0.9861529199277544 - }, - "opus100": { - "u": 0.8793298618972153, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9672131147540984, - "t": 0.9705535924617198, - "punct": 0.9879518072289156 - } - }, - "fy": { - "opus100": { - "u": 0.4505531344284278, - "t": 0.6180443003781738, - "punct": 0.8858204992033988 - } - }, - "ga": { - "opus100": { - "u": 0.7910863509749304, - "t": 0.7861541728604798, - "punct": 0.8798208509579497 - }, - "ud": { - "u": 0.8566001899335233, - "t": 0.9133537206931701, - "punct": 0.9813800657174152 - } - }, - "gd": { - "opus100": { - "u": 0.8461873638344227, - "t": 0.8487603305785123, - "punct": 0.9292076887013596 - }, - "ud": { - "u": 0.7183406113537117, - "t": 0.7197943444730076, - "punct": 0.8119349005424955 - } - }, - "gl": { - "opus100": { - "u": 0.8943165805542509, - "t": 0.8980651250589902, - "punct": 0.9437377690802348 - }, - "ud": { - "u": 0.9777227722772278, - "t": 0.9887359198998749, - "punct": 0.9863354037267081 - } - }, - "gu": { - "ersatz": { - "u": 0.9050070191857744, - "t": 0.8962172647914647, - "punct": 0.9688581314878892 - }, - "opus100": { - "u": 0.7088068181818181, - "t": 0.7101935483870968, - "punct": 0.7777185501066096 - } - }, - "ha": { - "opus100": { - "u": 0.8412017167381975, - "t": 0.8953121204760748, - "punct": 0.9209770114942529 - } - }, - "he": { - "opus100": { - "u": 0.9083570750237417, - "t": 0.9014479215319944, - "punct": 0.9410007468259896 - }, - "ud": { - "u": 0.9554455445544554, - "t": 0.9633375474083439, - "punct": 0.9717948717948718 - } - }, - "hi": { - "ersatz": { - "u": 0.943570057581574, - "t": 0.9474102004365946, - "punct": 0.9643070787637088 - }, - "opus100": { - "u": 0.6668127053669223, - "t": 0.6614736842105263, - "punct": 0.7742243436754176 - }, - "ud": { - "u": 0.9646043165467627, - "t": 0.9705796679289251, - "punct": 0.9991095280498665 - } - }, - "hu": { - "opus100": { - "u": 0.9220291216533583, - "t": 0.9269330811066445, - "punct": 0.9649595687331537 - }, - "ud": { - "u": 0.9613259668508287, - "t": 0.9641255605381165, - "punct": 0.9933333333333333 - } - }, - "hy": { - "opus100": { - "u": 0.8625008196183855, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9633251833740832, - "t": 0.9630872483221476, - "punct": 0.980688497061293 - } - }, - "id": { - "opus100": { - "u": 0.8983463035019454, - "t": 0.9037037037037038, - "punct": 0.9440000000000001 - }, - "ud": { - "u": 0.9816922315685305, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.7912087912087912, - "t": 0.8286805759623862, - "punct": 0.9076136021667168 - } - }, - "is": { - "opus100": { - "u": 0.944108395838374, - "t": 0.9483933787731257, - "punct": 0.9686428221460068 - }, - "ud": { - "u": 0.8689475963620615, - "t": 0.8974057669709844, - "punct": 0.9667875548768848 - } - }, - "it": { - "opus100": { - "u": 0.8585925435693801, - "t": 0.8928406466512703, - "punct": 0.9399806389157792 - }, - "ud": { - "u": 0.9432485322896282, - "t": 0.9432485322896282, - "punct": 0.9948400412796699 - } - }, - "ja": { - "ersatz": { - "u": 0.8153250107619457, - "t": 0.8259072117593018, - "punct": 0.9481132075471699 - }, - "opus100": { - "u": 0.4490106544901066, - "t": 0.8053498925244805, - "punct": 0.8741556167125344 - }, - "ud": { - "u": 0.9387755102040817, - "t": 0.9575645756457565, - "punct": 0.9803554724041159 - } - }, - "jv": { - "ud": { - "u": 0.9727626459143969, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.9186159844054581, - "t": 0.9168680521991301, - "punct": 0.9319862000985708 - } - }, - "kk": { - "ersatz": { - "u": 0.9638916750250751, - "t": 0.957932083122149, - "punct": 0.9975062344139651 - }, - "opus100": { - "u": 0.7443946188340809, - "t": 0.7595262615859938, - "punct": 0.9244992295839752 - }, - "ud": { - "u": 0.9761677788369876, - "t": 0.8302094818081588, - "punct": 0.9724170172978027 - } - }, - "km": { - "ersatz": { - "u": 0.721262950172669, - "t": 0.9146118721461187, - "punct": 0.9199909848997071 - }, - "opus100": { - "u": 0.7292401787814632, - "t": 0.7204328781241948, - "punct": 0.7934352009054896 - } - }, - "kn": { - "opus100": { - "u": 0.6603245663122552, - "t": 0.6128029832193909, - "punct": 0.7856723429242514 - } - }, - "ko": { - "opus100": { - "u": 0.575307862330281, - "t": 0.7180198935924127, - "punct": 0.8258493703967689 - }, - "ud": { - "u": 0.9928245270711025, - "t": 0.9943231441048035, - "punct": 0.999343975508419 - } - }, - "ku": { - "opus100": { - "u": 0.7955575702629193, - "t": 0.6701030927835051, - "punct": 0.8486748361356512 - } - }, - "ky": { - "opus100": { - "u": 0.8532212885154062, - "t": 0.8516388729154686, - "punct": 0.9094117647058825 - } - }, - "la": { - "ud": { - "u": 0.8946171341925702, - "t": 0.9050144648023144, - "punct": 0.9727294285036756 - } - }, - "lt": { - "ersatz": { - "u": 0.9687344913151364, - "t": 0.966144517433047, - "punct": 0.9915127309036444 - }, - "opus100": { - "u": 0.7825199101490709, - "t": 0.8525271174705746, - "punct": 0.9072063178677195 - }, - "ud": { - "u": 0.9833694866232827, - "t": 0.981021897810219, - "punct": 0.9948717948717949 - } - }, - "lv": { - "ersatz": { - "u": 0.9718172983479106, - "t": 0.9725759059745348, - "punct": 0.9938164729161514 - }, - "opus100": { - "u": 0.7959824231010671, - "t": 0.8654254065519681, - "punct": 0.9191743347426015 - }, - "ud": { - "u": 0.9652807543934848, - "t": 0.9641485275288092, - "punct": 0.9907784687969119 - } - }, - "mg": { - "opus100": { - "u": 0.8997214484679665, - "t": 0.9208253358925144, - "punct": 0.9546693088927423 - } - }, - "mk": { - "opus100": { - "u": 0.9296105114969498, - "t": 0.9304837952090184, - "punct": 0.9604656803298569 - } - }, - "ml": { - "opus100": { - "u": 0.812856165944837, - "t": 0.8242939265183704, - "punct": 0.8743117069667226 - } - }, - "mn": { - "opus100": { - "u": 0.8096339638045993, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.890926640926641, - "t": 0.8903836571998008, - "punct": 0.9373134328358209 - }, - "ud": { - "u": 0.9052631578947369, - "t": 0.9278350515463918, - "punct": 0.9787234042553191 - } - }, - "ms": { - "opus100": { - "u": 0.8773035887487876, - "t": 0.8847290640394089, - "punct": 0.9424533064109036 - } - }, - "mt": { - "opus100": { - "u": 0.6299797434166104, - "t": 0.8113067195636002, - "punct": 0.8907891522110922 - }, - "ud": { - "u": 0.9063097514340344, - "t": 0.8795180722891567, - "punct": 0.9443902439024391 - } - }, - "my": { - "opus100": { - "u": 0.7054915854738707, - "t": 0.7547921334329101, - "punct": 0.827622561939905 - } - }, - "ne": { - "opus100": { - "u": 0.7063770147161879, - "t": 0.7022514545914496, - "punct": 0.760419467598817 - } - }, - "nl": { - "opus100": { - "u": 0.9224642773483251, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9444444444444444, - "t": 0.9360655737704918, - "punct": 0.9721518987341773 - } - }, - "no": { - "opus100": { - "u": 0.947139753801593, - "t": 0.9480048367593711, - "punct": 0.9639617553321892 - }, - "ud": { - "u": 0.9823468328141226, - "t": 0.9850283944243676, - "punct": 0.9945862335653519 - } - }, - "pa": { - "opus100": { - "u": 0.56289592760181, - "t": 0.6331945889698232, - "punct": 0.786707882534776 - } - }, - "pl": { - "ersatz": { - "u": 0.9479424888448189, - "t": 0.9280910501810656, - "punct": 0.9795307039440839 - }, - "opus100": { - "u": 0.9239182120779839, - "t": 0.9282964388835419, - "punct": 0.9601564409679785 - }, - "ud": { - "u": 0.949255020513928, - "t": 0.9582331073693418, - "punct": 0.9938872537921667 - } - }, - "ps": { - "ersatz": { - "u": 0.8496520472568376, - "t": 0.915911111111111, - "punct": 0.960179472798654 - }, - "opus100": { - "u": 0.6421959782955634, - "t": 0.7160426345996175, - "punct": 0.7672883787661405 - } - }, - "pt": { - "opus100": { - "u": 0.9071877180739706, - "t": 0.9212410501193318, - "punct": 0.9582213535304177 - }, - "ud": { - "u": 0.960817717206133, - "t": 0.9574924860455132, - "punct": 0.9828620394173093 - } - }, - "ro": { - "ersatz": { - "u": 0.9778978388998036, - "t": 0.9706398996235884, - "punct": 0.9940209267563528 - }, - "opus100": { - "u": 0.8951465201465203, - "t": 0.8995854444956242, - "punct": 0.9692765113974231 - }, - "ud": { - "u": 0.8247745981967856, - "t": 0.939565627950897, - "punct": 0.9938006676204101 - } - }, - "ru": { - "ersatz": { - "u": 0.9763462506290891, - "t": 0.9773755656108597, - "punct": 0.9939271255060729 - }, - "opus100": { - "u": 0.8212290502793297, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8607329842931937, - "t": 0.8773635872501351, - "punct": 0.9341657207718501 - } - }, - "si": { - "opus100": { - "u": 0.8039867109634552, - "t": 0.8084147257700975, - "punct": 0.8599556977602756 - } - }, - "sk": { - "opus100": { - "u": 0.9065615580802225, - "t": 0.9309178743961353, - "punct": 0.9621380846325167 - }, - "ud": { - "u": 0.9618104667609618, - "t": 0.9603024574669187, - "punct": 0.9805595068752964 - } - }, - "sl": { - "opus100": { - "u": 0.9203747072599532, - "t": 0.9325708839647368, - "punct": 0.9544573643410853 - }, - "ud": { - "u": 0.9603658536585367, - "t": 0.964769647696477, - "punct": 0.9914196567862714 - } - }, - "sq": { - "opus100": { - "u": 0.8967114404817045, - "t": 0.9078885214926784, - "punct": 0.9583126550868487 - }, - "ud": { - "u": 1.0, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9431166347992352, - "t": 0.9481018740989908, - "punct": 0.9669036528560921 - }, - "ud": { - "u": 0.9788461538461538, - "t": 0.9818529130850048, - "punct": 0.9980806142034548 - } - }, - "sv": { - "opus100": { - "u": 0.912630359212051, - "t": 0.9307307783860985, - "punct": 0.96142578125 - }, - "ud": { - "u": 0.9509116409537167, - "t": 0.9528301886792453, - "punct": 0.9685114503816793 - } - }, - "ta": { - "ersatz": { - "u": 0.945765937202664, - "t": 0.9504659146640511, - "punct": 0.9821782178217822 - }, - "opus100": { - "u": 0.6605014385532264, - "t": 0.6645817044566067, - "punct": 0.7512328767123289 - }, - "ud": { - "u": 0.97165991902834, - "t": 0.979253112033195, - "punct": 0.9876543209876543 - } - }, - "te": { - "opus100": { - "u": 0.7869339272457312, - "t": 0.7865853658536585, - "punct": 0.8442816016749543 - } - }, - "tg": { - "opus100": { - "u": 0.8148309705561614, - "t": 0.8378119001919386, - "punct": 0.9189189189189189 - } - }, - "th": { - "opus100": { - "u": 0.6884083658277207, - "t": 0.7151862464183382, - "punct": 0.7326396262476109 - }, - "ud": { - "u": 0.6954689146469969, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.9337844369260512, - "t": 0.9339265117811831, - "punct": 0.9842689186951481 - }, - "opus100": { - "u": 0.934010152284264, - "t": 0.9359223300970874, - "punct": 0.957037037037037 - }, - "ud": { - "u": 0.9425511197663096, - "t": 0.9433771486349848, - "punct": 0.9913749365804161 - } - }, - "uk": { - "opus100": { - "u": 0.8909426987060999, - "t": 0.8984283368519822, - "punct": 0.9472910026967393 - }, - "ud": { - "u": 0.9261521377012771, - "t": 0.9310151430173864, - "punct": 0.9837535014005602 - } - }, - "ur": { - "opus100": { - "u": 0.5378430828943721, - "t": 0.52972791400739, - "punct": 0.6809015421115066 - }, - "ud": { - "u": 0.9240174672489082, - "t": 0.9614678899082569, - "punct": 0.9943609022556391 - } - }, - "uz": { - "opus100": { - "u": 0.7815996684624946, - "t": 0.8042402826855124, - "punct": 0.8589928057553957 - } - }, - "vi": { - "opus100": { - "u": 0.9074912016088487, - "t": 0.9091831557584982, - "punct": 0.9492462311557789 - }, - "ud": { - "u": 0.6783425886373345, - "t": 0.9139318885448916, - "punct": 0.9794135995009358 - } - }, - "xh": { - "opus100": { - "u": 0.7868852459016392, - "t": 0.8194511314395764, - "punct": 0.9041450777202072 - } - }, - "yi": { - "opus100": { - "u": 0.7468634686346862, - "t": 0.7569965870307167, - "punct": 0.8179631114675221 - } - }, - "yo": { - "opus100": { - "u": 0.7693839677725978, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8446866485013624, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.9354177344951307, - "t": 0.9372873116188625, - "punct": 0.9785963165754107 - }, - "opus100": { - "u": 0.8096644295302012, - "t": 0.7784926470588236, - "punct": 0.8917576961271102 - }, - "ud": { - "u": 0.9810568295114657, - "t": 0.982178217821782, - "punct": 0.9979959919839679 - } - }, - "zu": { - "opus100": { - "u": 0.7315010570824524, - "t": 0.8391281785158278, - "punct": 0.9082666666666666 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-6l-no-adapters_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-canine-s-6l-no-adapters_intrinsic_results.json deleted file mode 100644 index 7e140efd..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-6l-no-adapters_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.7786370227162882, - "t": 0.7836393214036719, - "punct": 0.8710174717368961 - }, - "ud": { - "u": 0.9770114942528736, - "t": 0.9859154929577465, - "punct": 0.9976525821596244 - } - }, - "am": { - "opus100": { - "u": 0.6030716723549487, - "t": 0.6284530386740331, - "punct": 0.6870748299319728 - } - }, - "ar": { - "ersatz": { - "u": 0.8728786423310919, - "t": 0.8858921161825726, - "punct": 0.9207886544448288 - }, - "opus100": { - "u": 0.6535723054259759, - "t": 0.6587383660806617, - "punct": 0.7393341553637485 - }, - "ud": { - "u": 0.788171394085697, - "t": 0.8537931034482757, - "punct": 0.8793718772305497 - } - }, - "az": { - "opus100": { - "u": 0.7528487229862476, - "t": 0.7784915536521533, - "punct": 0.8375780874579529 - } - }, - "be": { - "opus100": { - "u": 0.6675018792282635, - "t": 0.7104913678618858, - "punct": 0.8687022900763358 - }, - "ud": { - "u": 0.8901531728665207, - "t": 0.8875379939209727, - "punct": 0.911976911976912 - } - }, - "bg": { - "opus100": { - "u": 0.9387266634753471, - "t": 0.9224988257397839, - "punct": 0.9644520715861731 - }, - "ud": { - "u": 0.9807949977668603, - "t": 0.9794091316025068, - "punct": 0.9968623935454953 - } - }, - "bn": { - "opus100": { - "u": 0.7769017685915193, - "t": 0.8273328434974284, - "punct": 0.8669423497932377 - }, - "ud": { - "u": 1.0, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8899721448467967, - "t": 0.9025082820634169, - "punct": 0.943276283618582 - }, - "ud": { - "u": 0.982652788897785, - "t": 0.9844337090713902, - "punct": 0.9989171629669735 - } - }, - "ceb": { - "ud": { - "u": 0.9973474801061007, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.9498834498834497, - "t": 0.9451974071891573, - "punct": 0.9912739965095986 - }, - "opus100": { - "u": 0.8957564575645756, - "t": 0.9046397761716016, - "punct": 0.9482288828337875 - }, - "ud": { - "u": 0.9245200486026731, - "t": 0.9222600681226206, - "punct": 0.9580512871189288 - } - }, - "cy": { - "opus100": { - "u": 0.7051792828685259, - "t": 0.7417746759720838, - "punct": 0.8232378854625552 - }, - "ud": { - "u": 0.9900471451021478, - "t": 0.9915611814345991, - "punct": 0.9957939011566773 - } - }, - "da": { - "opus100": { - "u": 0.8968217411331184, - "t": 0.9138790035587188, - "punct": 0.9481699828052075 - }, - "ud": { - "u": 0.9541918755401901, - "t": 0.9473684210526315, - "punct": 0.9884238646482635 - } - }, - "de": { - "ersatz": { - "u": 0.9507874015748032, - "t": 0.9515640766902118, - "punct": 0.9900281257990283 - }, - "opus100": { - "u": 0.7884408022428293, - "t": 0.8570739937334297, - "punct": 0.8910191725529768 - }, - "ud": { - "u": 0.9616935483870966, - "t": 0.9634961439588688, - "punct": 0.9647924330005254 - } - }, - "el": { - "opus100": { - "u": 0.9182567726737337, - "t": 0.9239904988123515, - "punct": 0.9628901449987712 - }, - "ud": { - "u": 0.972617743702081, - "t": 0.975609756097561, - "punct": 0.9834254143646409 - } - }, - "en": { - "ersatz": { - "u": 0.9676599529830359, - "t": 0.9721187202878068, - "punct": 0.9872594903796152 - }, - "opus100": { - "u": 0.914804812177756, - "t": 0.9073941134242642, - "punct": 0.9479115479115479 - }, - "ud": { - "u": 0.9499323410013532, - "t": 0.9495495495495496, - "punct": 0.9695290858725761 - } - }, - "eo": { - "opus100": { - "u": 0.9114481409001957, - "t": 0.9066795273691823, - "punct": 0.9590786571918648 - } - }, - "es": { - "ersatz": { - "u": 0.9853990914990266, - "t": 0.9777998674618954, - "punct": 0.9937786509495744 - }, - "opus100": { - "u": 0.9042056074766355, - "t": 0.9174399238639068, - "punct": 0.950284442245857 - }, - "ud": { - "u": 0.9602256699576869, - "t": 0.9721739130434782, - "punct": 0.9956534337873081 - } - }, - "et": { - "ersatz": { - "u": 0.9552964042759962, - "t": 0.9547839120659505, - "punct": 0.985319731276437 - }, - "opus100": { - "u": 0.8363321049208757, - "t": 0.8831048105972577, - "punct": 0.9501726689689196 - }, - "ud": { - "u": 0.9225640248522503, - "t": 0.9314435372053613, - "punct": 0.9792479325947886 - } - }, - "eu": { - "opus100": { - "u": 0.866073465662788, - "t": 0.8768908540842449, - "punct": 0.921277114306605 - }, - "ud": { - "u": 0.9638424177010254, - "t": 0.9790518191841237, - "punct": 0.9994441356309061 - } - }, - "fa": { - "opus100": { - "u": 0.5752354697909488, - "t": 0.5800762631077215, - "punct": 0.7071099247755399 - }, - "ud": { - "u": 0.9622516556291391, - "t": 0.9816949152542372, - "punct": 0.9996564754379939 - } - }, - "fi": { - "ersatz": { - "u": 0.9744094488188976, - "t": 0.9772502472799209, - "punct": 0.9919959979989995 - }, - "opus100": { - "u": 0.9142322972657162, - "t": 0.9271809661139149, - "punct": 0.9601181683899557 - }, - "ud": { - "u": 0.9321351100092966, - "t": 0.943359375, - "punct": 0.9791063966570235 - } - }, - "fr": { - "ersatz": { - "u": 0.9693907875185735, - "t": 0.9642424242424243, - "punct": 0.987410071942446 - }, - "opus100": { - "u": 0.8702118071203245, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9614935822637106, - "t": 0.9704142011834319, - "punct": 0.9855769230769231 - } - }, - "fy": { - "opus100": { - "u": 0.6272973787285326, - "t": 0.6732007840940912, - "punct": 0.866252364225885 - } - }, - "ga": { - "opus100": { - "u": 0.7979528259902092, - "t": 0.7838716670279645, - "punct": 0.880648330058939 - }, - "ud": { - "u": 0.8538899430740039, - "t": 0.9141675284384695, - "punct": 0.988962472406181 - } - }, - "gd": { - "opus100": { - "u": 0.7943637164244827, - "t": 0.8178835110746513, - "punct": 0.9274826789838336 - }, - "ud": { - "u": 0.7027027027027026, - "t": 0.7263157894736844, - "punct": 0.7842003853564549 - } - }, - "gl": { - "opus100": { - "u": 0.8935771214252226, - "t": 0.8982007575757575, - "punct": 0.9400785854616897 - }, - "ud": { - "u": 0.9788819875776398, - "t": 0.9848101265822785, - "punct": 0.9800995024875623 - } - }, - "gu": { - "ersatz": { - "u": 0.8996793403573065, - "t": 0.8984526112185687, - "punct": 0.9612326043737575 - }, - "opus100": { - "u": 0.7112274024738345, - "t": 0.7096617181796057, - "punct": 0.769271383315734 - } - }, - "ha": { - "opus100": { - "u": 0.8238024899767885, - "t": 0.8666345690900337, - "punct": 0.9120192307692307 - } - }, - "he": { - "opus100": { - "u": 0.9086186540731995, - "t": 0.8969527797162129, - "punct": 0.9397650587353161 - }, - "ud": { - "u": 0.9394313967861558, - "t": 0.9419354838709678, - "punct": 0.9611398963730571 - } - }, - "hi": { - "ersatz": { - "u": 0.9320204506722211, - "t": 0.9443012884043608, - "punct": 0.96797583081571 - }, - "opus100": { - "u": 0.6525981393238031, - "t": 0.6191051995163241, - "punct": 0.7593123209169055 - }, - "ud": { - "u": 0.9516770892552585, - "t": 0.9564716056500433, - "punct": 0.9991095280498665 - } - }, - "hu": { - "opus100": { - "u": 0.9246753246753248, - "t": 0.93044306812768, - "punct": 0.9622918707149853 - }, - "ud": { - "u": 0.976897689768977, - "t": 0.9742441209406495, - "punct": 0.9933035714285714 - } - }, - "hy": { - "opus100": { - "u": 0.8578230392805185, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9585702680747361, - "t": 0.9734219269102992, - "punct": 0.9772535804549284 - } - }, - "id": { - "opus100": { - "u": 0.8901762008206614, - "t": 0.8997050147492626, - "punct": 0.9436689930209372 - }, - "ud": { - "u": 0.9783037475345167, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.8290522586359611, - "t": 0.831427733802404, - "punct": 0.9031866464339908 - } - }, - "is": { - "opus100": { - "u": 0.9450389105058367, - "t": 0.9498409591387327, - "punct": 0.9699803149606299 - }, - "ud": { - "u": 0.8865148861646235, - "t": 0.915802038380314, - "punct": 0.967470340604669 - } - }, - "it": { - "opus100": { - "u": 0.8514373491332016, - "t": 0.8848540565387267, - "punct": 0.9415204678362573 - }, - "ud": { - "u": 0.9359223300970874, - "t": 0.962962962962963, - "punct": 0.9968976215098242 - } - }, - "ja": { - "ersatz": { - "u": 0.8135451505016721, - "t": 0.8141906873614191, - "punct": 0.9479606188466948 - }, - "opus100": { - "u": 0.37010391686650684, - "t": 0.792864222001982, - "punct": 0.8675311467073481 - }, - "ud": { - "u": 0.9445438282647584, - "t": 0.9588785046728971, - "punct": 0.9879294336118849 - } - }, - "jv": { - "ud": { - "u": 0.9652509652509652, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.9129040217123119, - "t": 0.9052380952380953, - "punct": 0.9355077835433655 - } - }, - "kk": { - "ersatz": { - "u": 0.9708641975308643, - "t": 0.9644822411205604, - "punct": 0.9970089730807578 - }, - "opus100": { - "u": 0.7235794674718639, - "t": 0.7549805950840879, - "punct": 0.9023883696780892 - }, - "ud": { - "u": 0.9710763394973921, - "t": 0.9103024090210147, - "punct": 0.9791565681047019 - } - }, - "km": { - "ersatz": { - "u": 0.8393574297188755, - "t": 0.9045362220717671, - "punct": 0.9056768558951965 - }, - "opus100": { - "u": 0.6933520599250936, - "t": 0.695740882427952, - "punct": 0.7787810383747179 - } - }, - "kn": { - "opus100": { - "u": 0.6319910514541387, - "t": 0.6070588235294118, - "punct": 0.7400000000000001 - } - }, - "ko": { - "opus100": { - "u": 0.5524180460889321, - "t": 0.7012138188608777, - "punct": 0.7996223743214539 - }, - "ud": { - "u": 0.9934754240974336, - "t": 0.9965034965034965, - "punct": 0.9984712819392881 - } - }, - "ku": { - "opus100": { - "u": 0.7784217565760143, - "t": 0.5999316706525454, - "punct": 0.8060141509433963 - } - }, - "ky": { - "opus100": { - "u": 0.8228334812185742, - "t": 0.826945412311266, - "punct": 0.9062961868164351 - } - }, - "la": { - "ud": { - "u": 0.9087788131436979, - "t": 0.9181232750689972, - "punct": 0.9688466111771701 - } - }, - "lt": { - "ersatz": { - "u": 0.9669135802469135, - "t": 0.9619095987811072, - "punct": 0.9889224572004028 - }, - "opus100": { - "u": 0.79856267173959, - "t": 0.8512628624883068, - "punct": 0.9069593414816662 - }, - "ud": { - "u": 0.9664045746962115, - "t": 0.9736456808199121, - "punct": 0.9831006612784718 - } - }, - "lv": { - "ersatz": { - "u": 0.9669162038155035, - "t": 0.9698159509202454, - "punct": 0.9938195302843016 - }, - "opus100": { - "u": 0.8083170890188434, - "t": 0.8592347661785544, - "punct": 0.9073339940535182 - }, - "ud": { - "u": 0.9655172413793104, - "t": 0.9659747485555317, - "punct": 0.9901160292221745 - } - }, - "mg": { - "opus100": { - "u": 0.8712960868581768, - "t": 0.9043519846963175, - "punct": 0.9533730158730158 - } - }, - "mk": { - "opus100": { - "u": 0.9280524958987579, - "t": 0.9312941176470588, - "punct": 0.9582726831635129 - } - }, - "ml": { - "opus100": { - "u": 0.7975432211101, - "t": 0.8153187200806249, - "punct": 0.8537927733907634 - } - }, - "mn": { - "opus100": { - "u": 0.7327021121631464, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.8914956011730205, - "t": 0.9030333167578319, - "punct": 0.9318692288495133 - }, - "ud": { - "u": 0.9387755102040817, - "t": 0.9387755102040817, - "punct": 0.9484536082474226 - } - }, - "ms": { - "opus100": { - "u": 0.8775857872961793, - "t": 0.883399209486166, - "punct": 0.9454910826425521 - } - }, - "mt": { - "opus100": { - "u": 0.6951871657754011, - "t": 0.8067346454825706, - "punct": 0.8829184126201626 - }, - "ud": { - "u": 0.9092627599243857, - "t": 0.9099616858237548, - "punct": 0.9545014520813164 - } - }, - "my": { - "opus100": { - "u": 0.6724910394265233, - "t": 0.7197404542051411, - "punct": 0.7995660428532682 - } - }, - "ne": { - "opus100": { - "u": 0.6877987421383648, - "t": 0.6866782436120069, - "punct": 0.7445217839649393 - } - }, - "nl": { - "opus100": { - "u": 0.9223915592028137, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9347646573080098, - "t": 0.9225806451612903, - "punct": 0.9608006672226855 - } - }, - "no": { - "opus100": { - "u": 0.9492017416545718, - "t": 0.9507401116233924, - "punct": 0.966887417218543 - }, - "ud": { - "u": 0.9852675109847505, - "t": 0.9853432759064027, - "punct": 0.9924967658473479 - } - }, - "pa": { - "opus100": { - "u": 0.6266999722453511, - "t": 0.6592909228061353, - "punct": 0.7526041666666666 - } - }, - "pl": { - "ersatz": { - "u": 0.9381494309747649, - "t": 0.9363867684478373, - "punct": 0.9880478087649402 - }, - "opus100": { - "u": 0.9173003802281369, - "t": 0.9325272067714631, - "punct": 0.960548885077187 - }, - "ud": { - "u": 0.9471876341777588, - "t": 0.964881474978051, - "punct": 0.9915889974994317 - } - }, - "ps": { - "ersatz": { - "u": 0.8682813536828136, - "t": 0.9250496658840527, - "punct": 0.9650946899368733 - }, - "opus100": { - "u": 0.5173716012084593, - "t": 0.6792351198491785, - "punct": 0.7463442069741283 - } - }, - "pt": { - "opus100": { - "u": 0.9101123595505617, - "t": 0.9204761904761904, - "punct": 0.9565853658536586 - }, - "ud": { - "u": 0.9612270984235194, - "t": 0.9597257926306769, - "punct": 0.9805783340526544 - } - }, - "ro": { - "ersatz": { - "u": 0.975442043222004, - "t": 0.9654650869674818, - "punct": 0.9945246391239422 - }, - "opus100": { - "u": 0.8973768982972848, - "t": 0.9089210649229331, - "punct": 0.9701640974639483 - }, - "ud": { - "u": 0.8458752515090543, - "t": 0.9359698681732581, - "punct": 0.9937888198757764 - } - }, - "ru": { - "ersatz": { - "u": 0.9778894472361809, - "t": 0.9776876267748479, - "punct": 0.994436014162873 - }, - "opus100": { - "u": 0.8295973884657235, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8587926509186352, - "t": 0.8705625341343528, - "punct": 0.9217391304347826 - } - }, - "si": { - "opus100": { - "u": 0.7974927675988428, - "t": 0.8107160741111668, - "punct": 0.8524096385542168 - } - }, - "sk": { - "opus100": { - "u": 0.9129927688360159, - "t": 0.9388149939540508, - "punct": 0.964135542913678 - }, - "ud": { - "u": 0.9627534181989628, - "t": 0.9615567157095396, - "punct": 0.968779564806055 - } - }, - "sl": { - "opus100": { - "u": 0.9183243622747483, - "t": 0.9324743497971845, - "punct": 0.9530038759689922 - }, - "ud": { - "u": 0.963159893657425, - "t": 0.9698608964451314, - "punct": 0.9925810230378759 - } - }, - "sq": { - "opus100": { - "u": 0.9027291812456263, - "t": 0.912742051159455, - "punct": 0.9560493827160493 - }, - "ud": { - "u": 1.0, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9421329507412721, - "t": 0.944337811900192, - "punct": 0.9652131308182265 - }, - "ud": { - "u": 0.9808061420345489, - "t": 0.9808061420345489, - "punct": 0.9980769230769231 - } - }, - "sv": { - "opus100": { - "u": 0.9182242990654206, - "t": 0.9328233325364571, - "punct": 0.9581712062256807 - }, - "ud": { - "u": 0.951048951048951, - "t": 0.9553656220322887, - "punct": 0.9668428640076886 - } - }, - "ta": { - "ersatz": { - "u": 0.9378852536747273, - "t": 0.9530469530469531, - "punct": 0.9806835066864783 - }, - "opus100": { - "u": 0.6262711864406779, - "t": 0.6094859414938938, - "punct": 0.6996681415929203 - }, - "ud": { - "u": 0.97165991902834, - "t": 0.9663865546218487, - "punct": 1.0 - } - }, - "te": { - "opus100": { - "u": 0.7635299853729889, - "t": 0.7660026560424966, - "punct": 0.8259290304554344 - } - }, - "tg": { - "opus100": { - "u": 0.7911802853437095, - "t": 0.8259351620947631, - "punct": 0.9095330739299612 - } - }, - "th": { - "opus100": { - "u": 0.6843678565148584, - "t": 0.7079265911753221, - "punct": 0.7166500498504486 - }, - "ud": { - "u": 0.6747237569060774, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.9273974788575076, - "t": 0.9260237780713343, - "punct": 0.9823215476984656 - }, - "opus100": { - "u": 0.9319826338639653, - "t": 0.9343704423918328, - "punct": 0.9588162762022194 - }, - "ud": { - "u": 0.9375907111756169, - "t": 0.9455445544554455, - "punct": 0.9918616480162767 - } - }, - "uk": { - "opus100": { - "u": 0.8891471066697653, - "t": 0.8987911827447261, - "punct": 0.9438092921430309 - }, - "ud": { - "u": 0.9223140495867769, - "t": 0.9316770186335404, - "punct": 0.9865470852017937 - } - }, - "ur": { - "opus100": { - "u": 0.5076086956521739, - "t": 0.5075368560543316, - "punct": 0.6364053186611648 - }, - "ud": { - "u": 0.9192006950477846, - "t": 0.9739776951672863, - "punct": 0.9934518241347053 - } - }, - "uz": { - "opus100": { - "u": 0.7701554404145078, - "t": 0.8004662004662004, - "punct": 0.8523878437047757 - } - }, - "vi": { - "opus100": { - "u": 0.9121741331308528, - "t": 0.9139344262295082, - "punct": 0.9498243853487205 - }, - "ud": { - "u": 0.7291954022988506, - "t": 0.9226932668329176, - "punct": 0.976889444097439 - } - }, - "xh": { - "opus100": { - "u": 0.7934040047114251, - "t": 0.7941523225654327, - "punct": 0.895169578622816 - } - }, - "yi": { - "opus100": { - "u": 0.729144479943202, - "t": 0.7197164948453608, - "punct": 0.8077879038939519 - } - }, - "yo": { - "opus100": { - "u": 0.7610900761931473, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8835227272727272, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.8872839824606655, - "t": 0.9009523809523808, - "punct": 0.9733499377334994 - }, - "opus100": { - "u": 0.6192236598890942, - "t": 0.7037366548042704, - "punct": 0.8682926829268292 - }, - "ud": { - "u": 0.9714285714285714, - "t": 0.9831181727904666, - "punct": 0.9979959919839679 - } - }, - "zu": { - "opus100": { - "u": 0.7851263128015896, - "t": 0.8391895357784047, - "punct": 0.8989981045220689 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-6l_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-canine-s-6l_intrinsic_results.json deleted file mode 100644 index 29f95068..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-6l_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.7210626185958254, - "t": 0.7779316712834718, - "punct": 0.8891186353062807 - }, - "ud": { - "u": 0.9883720930232558, - "t": 0.9976525821596244, - "punct": 1.0 - } - }, - "am": { - "opus100": { - "u": 0.621072730428745, - "t": 0.6529175050301811, - "punct": 0.718105423987777 - } - }, - "ar": { - "ersatz": { - "u": 0.881975625400898, - "t": 0.8865417376490631, - "punct": 0.9275163174166953 - }, - "opus100": { - "u": 0.6858124693176239, - "t": 0.6840269704719832, - "punct": 0.7828471702817253 - }, - "ud": { - "u": 0.8386277001270648, - "t": 0.8706365503080082, - "punct": 0.8956884561891516 - } - }, - "az": { - "opus100": { - "u": 0.7702647657841141, - "t": 0.765639589169001, - "punct": 0.8422843256379102 - } - }, - "be": { - "opus100": { - "u": 0.7182569496619083, - "t": 0.7464199162811191, - "punct": 0.8934588701684835 - }, - "ud": { - "u": 0.9002671415850401, - "t": 0.9029126213592232, - "punct": 0.9337094499294781 - } - }, - "bg": { - "opus100": { - "u": 0.937005988023952, - "t": 0.928284023668639, - "punct": 0.9643206256109481 - }, - "ud": { - "u": 0.9838854073410923, - "t": 0.9830053667262969, - "punct": 0.9964125560538117 - } - }, - "bn": { - "opus100": { - "u": 0.8027151302824612, - "t": 0.8357418111753373, - "punct": 0.8806584362139918 - }, - "ud": { - "u": 1.0, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8968588842006564, - "t": 0.9040835707502374, - "punct": 0.9473941766576951 - }, - "ud": { - "u": 0.9833512352309346, - "t": 0.9840927473712591, - "punct": 0.9989165763813651 - } - }, - "ceb": { - "ud": { - "u": 0.9973474801061007, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.9350493864112541, - "t": 0.9479227618490345, - "punct": 0.9927641099855282 - }, - "opus100": { - "u": 0.8922722029988466, - "t": 0.9080568720379146, - "punct": 0.9514419521814148 - }, - "ud": { - "u": 0.925398406374502, - "t": 0.9258873169520973, - "punct": 0.9648390941597139 - } - }, - "cy": { - "opus100": { - "u": 0.6793363499245852, - "t": 0.7520355292376018, - "punct": 0.8356239692138538 - }, - "ud": { - "u": 0.9926470588235294, - "t": 0.992639327024185, - "punct": 0.9968487394957984 - } - }, - "da": { - "opus100": { - "u": 0.9001614018907078, - "t": 0.9079439252336448, - "punct": 0.948743223262691 - }, - "ud": { - "u": 0.9574283231972198, - "t": 0.9499561018437226, - "punct": 0.9884444444444446 - } - }, - "de": { - "ersatz": { - "u": 0.9645995480793371, - "t": 0.9664463650228775, - "punct": 0.9931104873692269 - }, - "opus100": { - "u": 0.7999129109514478, - "t": 0.8564570331253001, - "punct": 0.903358113304281 - }, - "ud": { - "u": 0.9633401221995925, - "t": 0.9604113110539846, - "punct": 0.9717277486910993 - } - }, - "el": { - "opus100": { - "u": 0.9201037002121141, - "t": 0.9309438470728794, - "punct": 0.9663142365379886 - }, - "ud": { - "u": 0.9768467475192943, - "t": 0.9778761061946903, - "punct": 0.9789590254706534 - } - }, - "en": { - "ersatz": { - "u": 0.9694334313850876, - "t": 0.970098385955887, - "punct": 0.9881864208749838 - }, - "opus100": { - "u": 0.914117934915586, - "t": 0.8976525821596244, - "punct": 0.9519607843137254 - }, - "ud": { - "u": 0.9522944116310768, - "t": 0.9498175182481751, - "punct": 0.9729729729729729 - } - }, - "eo": { - "opus100": { - "u": 0.9206271435570799, - "t": 0.9131786653910547, - "punct": 0.9572271386430679 - } - }, - "es": { - "ersatz": { - "u": 0.9884157285038342, - "t": 0.9843827059016933, - "punct": 0.996079712512251 - }, - "opus100": { - "u": 0.9171793658305726, - "t": 0.9196386115073704, - "punct": 0.9557697059550284 - }, - "ud": { - "u": 0.9639102017618641, - "t": 0.9673504767408264, - "punct": 0.9985477781004937 - } - }, - "et": { - "ersatz": { - "u": 0.9644092931290164, - "t": 0.9589937106918239, - "punct": 0.995795201582983 - }, - "opus100": { - "u": 0.8490857016964087, - "t": 0.8985507246376813, - "punct": 0.9581786686463747 - }, - "ud": { - "u": 0.932077801790676, - "t": 0.9336426914153133, - "punct": 0.9774506733479487 - } - }, - "eu": { - "opus100": { - "u": 0.8619986403806935, - "t": 0.8808071328015016, - "punct": 0.928921568627451 - }, - "ud": { - "u": 0.9694635488308115, - "t": 0.970678581401843, - "punct": 0.9988876529477196 - } - }, - "fa": { - "opus100": { - "u": 0.6354142492457647, - "t": 0.627931544474963, - "punct": 0.7555238774055595 - }, - "ud": { - "u": 0.9689896632210737, - "t": 0.9777177582714383, - "punct": 1.0 - } - }, - "fi": { - "ersatz": { - "u": 0.9794794794794794, - "t": 0.9777999501122475, - "punct": 0.9964982491245622 - }, - "opus100": { - "u": 0.9206498704968212, - "t": 0.9295977011494252, - "punct": 0.963235294117647 - }, - "ud": { - "u": 0.9306683322923173, - "t": 0.9296046287367405, - "punct": 0.9829417444480206 - } - }, - "fr": { - "ersatz": { - "u": 0.9738406658739595, - "t": 0.9678007290400973, - "punct": 0.9878934624697335 - }, - "opus100": { - "u": 0.8758495695514271, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9694117647058823, - "t": 0.976303317535545, - "punct": 0.9806763285024154 - } - }, - "fy": { - "opus100": { - "u": 0.5050916496945009, - "t": 0.6705324196099104, - "punct": 0.8878779769868879 - } - }, - "ga": { - "opus100": { - "u": 0.8207295373665481, - "t": 0.8196357174589071, - "punct": 0.894175960346964 - }, - "ud": { - "u": 0.8673076923076922, - "t": 0.9116751269035532, - "punct": 0.9792802617230099 - } - }, - "gd": { - "opus100": { - "u": 0.8217122683142101, - "t": 0.8358700123406005, - "punct": 0.9342592592592592 - }, - "ud": { - "u": 0.7042553191489362, - "t": 0.7307001795332135, - "punct": 0.8171846435100549 - } - }, - "gl": { - "opus100": { - "u": 0.9007344231224828, - "t": 0.8994334277620395, - "punct": 0.9436172809372712 - }, - "ud": { - "u": 0.9912390488110137, - "t": 0.9899244332493703, - "punct": 0.9875311720698254 - } - }, - "gu": { - "ersatz": { - "u": 0.9122974261201144, - "t": 0.9051808406647116, - "punct": 0.9742574257425742 - }, - "opus100": { - "u": 0.7262464722483538, - "t": 0.7225362496927993, - "punct": 0.79768177028451 - } - }, - "ha": { - "opus100": { - "u": 0.8551906546175887, - "t": 0.8943405392275929, - "punct": 0.9214079074252652 - } - }, - "he": { - "opus100": { - "u": 0.9107355391573435, - "t": 0.9060229669557066, - "punct": 0.9460333250435214 - }, - "ud": { - "u": 0.9688667496886674, - "t": 0.9672544080604534, - "punct": 0.9820512820512821 - } - }, - "hi": { - "ersatz": { - "u": 0.9535063928709803, - "t": 0.9535297607277041, - "punct": 0.9728744939271255 - }, - "opus100": { - "u": 0.6779584462511293, - "t": 0.6621535857837952, - "punct": 0.7715426156374735 - }, - "ud": { - "u": 0.9746577337605592, - "t": 0.9752114319043453, - "punct": 0.9991095280498665 - } - }, - "hu": { - "opus100": { - "u": 0.9280983916745507, - "t": 0.9392557022809124, - "punct": 0.9657198824681684 - }, - "ud": { - "u": 0.9665924276169265, - "t": 0.9666666666666667, - "punct": 0.9899888765294772 - } - }, - "hy": { - "opus100": { - "u": 0.8656834342902291, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9720394736842105, - "t": 0.9792874896437448, - "punct": 0.979933110367893 - } - }, - "id": { - "opus100": { - "u": 0.9022298456260721, - "t": 0.9045622688039457, - "punct": 0.9450658712403679 - }, - "ud": { - "u": 0.9846306395637084, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.7906542056074767, - "t": 0.8234260614934114, - "punct": 0.903632542779946 - } - }, - "is": { - "opus100": { - "u": 0.9469069654164637, - "t": 0.9501222493887531, - "punct": 0.9686735193343123 - }, - "ud": { - "u": 0.8853677967602017, - "t": 0.9058295964125561, - "punct": 0.9612462006079028 - } - }, - "it": { - "opus100": { - "u": 0.8687318921328281, - "t": 0.902484763244257, - "punct": 0.948443579766537 - }, - "ud": { - "u": 0.9488188976377953, - "t": 0.9423264907135874, - "punct": 0.9948293691830403 - } - }, - "ja": { - "ersatz": { - "u": 0.8438308886971527, - "t": 0.8403908794788274, - "punct": 0.9546971864568432 - }, - "opus100": { - "u": 0.5210810810810811, - "t": 0.8080614203454894, - "punct": 0.880484114977307 - }, - "ud": { - "u": 0.9574660633484162, - "t": 0.9713228492136909, - "punct": 0.9813432835820896 - } - }, - "jv": { - "ud": { - "u": 0.9649805447470818, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.9188665536449504, - "t": 0.9219858156028369, - "punct": 0.9351418002466091 - } - }, - "kk": { - "ersatz": { - "u": 0.96113074204947, - "t": 0.9605263157894738, - "punct": 0.9944917376064095 - }, - "opus100": { - "u": 0.6826036866359446, - "t": 0.7316813216093792, - "punct": 0.9194337194337194 - }, - "ud": { - "u": 0.972195589645254, - "t": 0.9075025693730729, - "punct": 0.9658489658489658 - } - }, - "km": { - "ersatz": { - "u": 0.776150996648439, - "t": 0.9208988764044943, - "punct": 0.9180848649875197 - }, - "opus100": { - "u": 0.7192608386638237, - "t": 0.7065527065527065, - "punct": 0.7947247706422018 - } - }, - "kn": { - "opus100": { - "u": 0.7138397502601457, - "t": 0.6803887935963407, - "punct": 0.7865818392134182 - } - }, - "ko": { - "opus100": { - "u": 0.5354645354645355, - "t": 0.7252336448598131, - "punct": 0.8188865398167724 - }, - "ud": { - "u": 0.9947757945145842, - "t": 0.9952048823016565, - "punct": 0.9991254919108001 - } - }, - "ku": { - "opus100": { - "u": 0.7974769092137869, - "t": 0.6985616010006255, - "punct": 0.8739310344827586 - } - }, - "ky": { - "opus100": { - "u": 0.8321917808219179, - "t": 0.8282652765710975, - "punct": 0.9154553544942153 - } - }, - "la": { - "ud": { - "u": 0.8911300749935351, - "t": 0.9175377468060396, - "punct": 0.9741399762752077 - } - }, - "lt": { - "ersatz": { - "u": 0.9745889387144993, - "t": 0.9681978798586572, - "punct": 0.992 - }, - "opus100": { - "u": 0.7968425425841297, - "t": 0.8498519024834814, - "punct": 0.9177294323580895 - }, - "ud": { - "u": 0.9847936278059377, - "t": 0.9840579710144928, - "punct": 0.9955947136563876 - } - }, - "lv": { - "ersatz": { - "u": 0.9732750242954324, - "t": 0.9747239263803681, - "punct": 0.9967829745112595 - }, - "opus100": { - "u": 0.7997491638795986, - "t": 0.8744650499286734, - "punct": 0.9287493771798704 - }, - "ud": { - "u": 0.967269595176572, - "t": 0.969270166453265, - "punct": 0.990149892933619 - } - }, - "mg": { - "opus100": { - "u": 0.9129821260583254, - "t": 0.9251080172827653, - "punct": 0.9648115797354629 - } - }, - "mk": { - "opus100": { - "u": 0.9311969839773798, - "t": 0.9327036599763873, - "punct": 0.961594555177443 - } - }, - "ml": { - "opus100": { - "u": 0.810126582278481, - "t": 0.803129074315515, - "punct": 0.8790361445783132 - } - }, - "mn": { - "opus100": { - "u": 0.7744031642887413, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.9082862060486846, - "t": 0.9118888061553737, - "punct": 0.9294949987801904 - }, - "ud": { - "u": 0.8958333333333333, - "t": 0.9199999999999999, - "punct": 0.989247311827957 - } - }, - "ms": { - "opus100": { - "u": 0.8809231524674687, - "t": 0.8851401637310841, - "punct": 0.9405028628329599 - } - }, - "mt": { - "opus100": { - "u": 0.6342530282637955, - "t": 0.8271515151515152, - "punct": 0.8968742308638937 - }, - "ud": { - "u": 0.9078822412155745, - "t": 0.8999028182701652, - "punct": 0.9631782945736435 - } - }, - "my": { - "opus100": { - "u": 0.7012817727568977, - "t": 0.7745490981963927, - "punct": 0.8344406058995483 - } - }, - "ne": { - "opus100": { - "u": 0.7179245283018867, - "t": 0.7065806451612903, - "punct": 0.7465865647187329 - } - }, - "nl": { - "opus100": { - "u": 0.926921263554927, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9398998330550918, - "t": 0.9358552631578948, - "punct": 0.9632721202003339 - } - }, - "no": { - "opus100": { - "u": 0.949636803874092, - "t": 0.9517107498180053, - "punct": 0.9671084928816888 - }, - "ud": { - "u": 0.9804432855280313, - "t": 0.9868590569440865, - "punct": 0.9938144329896907 - } - }, - "pa": { - "opus100": { - "u": 0.5963330327622482, - "t": 0.647374062165059, - "punct": 0.7737148913619502 - } - }, - "pl": { - "ersatz": { - "u": 0.9488977955911824, - "t": 0.93573264781491, - "punct": 0.9363722697056029 - }, - "opus100": { - "u": 0.9273422562141492, - "t": 0.9338822959554373, - "punct": 0.9614534740977168 - }, - "ud": { - "u": 0.9537860707311782, - "t": 0.9563890100305277, - "punct": 0.9941149841557265 - } - }, - "ps": { - "ersatz": { - "u": 0.8459807073954985, - "t": 0.9180560482440581, - "punct": 0.9702048417132217 - }, - "opus100": { - "u": 0.44329896907216493, - "t": 0.6832513740237199, - "punct": 0.7700688073394495 - } - }, - "pt": { - "opus100": { - "u": 0.9096864763687411, - "t": 0.9237753882915173, - "punct": 0.9587301587301588 - }, - "ud": { - "u": 0.9635974304068522, - "t": 0.9641025641025641, - "punct": 0.9793991416309014 - } - }, - "ro": { - "ersatz": { - "u": 0.9794909809735607, - "t": 0.968149646107179, - "punct": 0.995260663507109 - }, - "opus100": { - "u": 0.9015711645101664, - "t": 0.903899721448468, - "punct": 0.9715135001238544 - }, - "ud": { - "u": 0.8177225029148854, - "t": 0.9056776556776556, - "punct": 0.9947494033412888 - } - }, - "ru": { - "ersatz": { - "u": 0.9796954314720813, - "t": 0.9823499747856783, - "punct": 0.9954522486104093 - }, - "opus100": { - "u": 0.8330787693650448, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8675703858185609, - "t": 0.8815013404825737, - "punct": 0.937923250564334 - } - }, - "si": { - "opus100": { - "u": 0.8081692195477752, - "t": 0.8110414052697615, - "punct": 0.869198312236287 - } - }, - "sk": { - "opus100": { - "u": 0.9168033747363487, - "t": 0.934108527131783, - "punct": 0.9602763385146805 - }, - "ud": { - "u": 0.9632422243166824, - "t": 0.959047619047619, - "punct": 0.9858088930936614 - } - }, - "sl": { - "opus100": { - "u": 0.9257250648431974, - "t": 0.9340659340659342, - "punct": 0.957070094591317 - }, - "ud": { - "u": 0.9633911368015414, - "t": 0.9644238205723125, - "punct": 0.9953161592505854 - } - }, - "sq": { - "opus100": { - "u": 0.9033317691224777, - "t": 0.9175332527206771, - "punct": 0.9605717102020701 - }, - "ud": { - "u": 1.0, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9465356029729082, - "t": 0.949699157641396, - "punct": 0.9654665686994857 - }, - "ud": { - "u": 0.9854227405247813, - "t": 0.9913710450623201, - "punct": 1.0 - } - }, - "sv": { - "opus100": { - "u": 0.9204119850187266, - "t": 0.9335246293639407, - "punct": 0.9611911154503294 - }, - "ud": { - "u": 0.956766917293233, - "t": 0.959280303030303, - "punct": 0.962607861936721 - } - }, - "ta": { - "ersatz": { - "u": 0.9489747257987601, - "t": 0.9530400395452298, - "punct": 0.983184965380811 - }, - "opus100": { - "u": 0.6819571865443425, - "t": 0.683289124668435, - "punct": 0.75 - }, - "ud": { - "u": 0.975609756097561, - "t": 0.975609756097561, - "punct": 0.995850622406639 - } - }, - "te": { - "opus100": { - "u": 0.7861570247933883, - "t": 0.7850753897265526, - "punct": 0.8511309836927932 - } - }, - "tg": { - "opus100": { - "u": 0.8174482006543076, - "t": 0.8390488110137672, - "punct": 0.9120715350223547 - } - }, - "th": { - "opus100": { - "u": 0.6923625981441828, - "t": 0.7218372599485251, - "punct": 0.7325776658270361 - }, - "ud": { - "u": 0.709585121602289, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.9451899757477769, - "t": 0.9429831726842018, - "punct": 0.9852478037460634 - }, - "opus100": { - "u": 0.9361185329123148, - "t": 0.936542669584245, - "punct": 0.9576771653543307 - }, - "ud": { - "u": 0.9496332518337408, - "t": 0.955955955955956, - "punct": 0.990872210953347 - } - }, - "uk": { - "opus100": { - "u": 0.8953623863901187, - "t": 0.8973277074542898, - "punct": 0.9461426491994178 - }, - "ud": { - "u": 0.9284916201117319, - "t": 0.9313835770528683, - "punct": 0.9849414389291691 - } - }, - "ur": { - "opus100": { - "u": 0.5455534403045961, - "t": 0.5305591677503252, - "punct": 0.695066185318893 - }, - "ud": { - "u": 0.948787061994609, - "t": 0.9704251386321627, - "punct": 0.9915492957746478 - } - }, - "uz": { - "opus100": { - "u": 0.7950257289879931, - "t": 0.8070257611241218, - "punct": 0.86562123039807 - } - }, - "vi": { - "opus100": { - "u": 0.9101947887680243, - "t": 0.9131882202304737, - "punct": 0.9523096129837703 - }, - "ud": { - "u": 0.760536398467433, - "t": 0.9278728606356969, - "punct": 0.9780839073262366 - } - }, - "xh": { - "opus100": { - "u": 0.8107983387171205, - "t": 0.820849964780465, - "punct": 0.8993808049535604 - } - }, - "yi": { - "opus100": { - "u": 0.6078173034694774, - "t": 0.6465408805031446, - "punct": 0.8139145012573344 - } - }, - "yo": { - "opus100": { - "u": 0.7700611730838431, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8634482758620688, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.9224426694150992, - "t": 0.9333661175313499, - "punct": 0.9735998026153466 - }, - "opus100": { - "u": 0.8208677136012776, - "t": 0.7907300115874856, - "punct": 0.8939929328621908 - }, - "ud": { - "u": 0.9790628115653042, - "t": 0.9811320754716981, - "punct": 0.997002997002997 - } - }, - "zu": { - "opus100": { - "u": 0.5591246028944582, - "t": 0.8276939094221759, - "punct": 0.9085481682496608 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-9l-no-adapters_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-canine-s-9l-no-adapters_intrinsic_results.json deleted file mode 100644 index f0e559de..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-9l-no-adapters_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.7706283118849356, - "t": 0.7890083632019116, - "punct": 0.8745882949075247 - }, - "ud": { - "u": 0.9803921568627451, - "t": 0.982373678025852, - "punct": 0.9988249118683901 - } - }, - "am": { - "opus100": { - "u": 0.5865531914893617, - "t": 0.6183574879227053, - "punct": 0.6907039489820946 - } - }, - "ar": { - "ersatz": { - "u": 0.8861736334405145, - "t": 0.8854274835583247, - "punct": 0.9151740452855696 - }, - "opus100": { - "u": 0.6842105263157894, - "t": 0.6847389558232931, - "punct": 0.7635752042287363 - }, - "ud": { - "u": 0.8189172370877412, - "t": 0.8728755948334466, - "punct": 0.8868841082581541 - } - }, - "az": { - "opus100": { - "u": 0.7589479928811549, - "t": 0.7741935483870966, - "punct": 0.840356368889959 - } - }, - "be": { - "opus100": { - "u": 0.6703853955375253, - "t": 0.7112311501237902, - "punct": 0.8834012219959266 - }, - "ud": { - "u": 0.89937106918239, - "t": 0.8890845070422535, - "punct": 0.9144486692015209 - } - }, - "bg": { - "opus100": { - "u": 0.9320665083135392, - "t": 0.9259346343757348, - "punct": 0.9627815866797258 - }, - "ud": { - "u": 0.9815895823978447, - "t": 0.9808463251670377, - "punct": 0.9968623935454953 - } - }, - "bn": { - "opus100": { - "u": 0.7977381470204437, - "t": 0.8337705699976151, - "punct": 0.8670187229956793 - }, - "ud": { - "u": 0.9911504424778761, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8925464378086057, - "t": 0.9014684983420179, - "punct": 0.9463892288861688 - }, - "ud": { - "u": 0.9828693790149893, - "t": 0.9837662337662338, - "punct": 0.9981024667931689 - } - }, - "ceb": { - "ud": { - "u": 0.9973474801061007, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.9463126843657816, - "t": 0.9467490438364224, - "punct": 0.9915917657291968 - }, - "opus100": { - "u": 0.8932532347504621, - "t": 0.9030743956817647, - "punct": 0.9489846458642892 - }, - "ud": { - "u": 0.9266873736626732, - "t": 0.9245547328397039, - "punct": 0.9599645442458266 - } - }, - "cy": { - "opus100": { - "u": 0.631680618158403, - "t": 0.7404778802933523, - "punct": 0.8313120176405733 - }, - "ud": { - "u": 0.9916142557651991, - "t": 0.9915700737618546, - "punct": 0.9958027282266527 - } - }, - "da": { - "opus100": { - "u": 0.8974418068679418, - "t": 0.9091762497066418, - "punct": 0.950354609929078 - }, - "ud": { - "u": 0.9522983521248916, - "t": 0.9454225352112676, - "punct": 0.987544483985765 - } - }, - "de": { - "ersatz": { - "u": 0.9575155279503105, - "t": 0.9596139192278385, - "punct": 0.9943991853360489 - }, - "opus100": { - "u": 0.7963446475195821, - "t": 0.8495617152333571, - "punct": 0.898801937292888 - }, - "ud": { - "u": 0.9598781107160996, - "t": 0.9665121071612571, - "punct": 0.9712192569335426 - } - }, - "el": { - "opus100": { - "u": 0.919415645617342, - "t": 0.9278055754110078, - "punct": 0.9620876415558838 - }, - "ud": { - "u": 0.9704918032786886, - "t": 0.9778270509977827, - "punct": 0.9725576289791438 - } - }, - "en": { - "ersatz": { - "u": 0.9687738975274024, - "t": 0.9715533294805112, - "punct": 0.9888635623575383 - }, - "opus100": { - "u": 0.9110893991206643, - "t": 0.901375059269796, - "punct": 0.9486107696090484 - }, - "ud": { - "u": 0.9497054825555052, - "t": 0.9508344609833107, - "punct": 0.9696969696969697 - } - }, - "eo": { - "opus100": { - "u": 0.9145236345824148, - "t": 0.9154204461877911, - "punct": 0.9575876440303995 - } - }, - "es": { - "ersatz": { - "u": 0.9874654077812144, - "t": 0.9825197889182058, - "punct": 0.9962473486702562 - }, - "opus100": { - "u": 0.9175746091899574, - "t": 0.9228932919551205, - "punct": 0.9535802469135802 - }, - "ud": { - "u": 0.9704209328782708, - "t": 0.9754548079699682, - "punct": 0.9959420289855072 - } - }, - "et": { - "ersatz": { - "u": 0.9636005902606986, - "t": 0.9537060460409815, - "punct": 0.988328780730072 - }, - "opus100": { - "u": 0.831359035106612, - "t": 0.8805412972468502, - "punct": 0.9503090234857849 - }, - "ud": { - "u": 0.9271665642286416, - "t": 0.92868169188021, - "punct": 0.9758922980588604 - } - }, - "eu": { - "opus100": { - "u": 0.8784313725490196, - "t": 0.8823802882380288, - "punct": 0.9276574803149606 - }, - "ud": { - "u": 0.9769230769230769, - "t": 0.979490022172949, - "punct": 0.9994441356309061 - } - }, - "fa": { - "opus100": { - "u": 0.5960709151892669, - "t": 0.5953510436432637, - "punct": 0.7200962695547533 - }, - "ud": { - "u": 0.9742216270505525, - "t": 0.9847094801223242, - "punct": 0.9993131868131867 - } - }, - "fi": { - "ersatz": { - "u": 0.9765142150803462, - "t": 0.9764326469858596, - "punct": 0.9950024987506246 - }, - "opus100": { - "u": 0.9225335530963034, - "t": 0.9340052795776337, - "punct": 0.9622178606476939 - }, - "ud": { - "u": 0.9496994621955076, - "t": 0.9490094186424164, - "punct": 0.981958762886598 - } - }, - "fr": { - "ersatz": { - "u": 0.9734882335418529, - "t": 0.9696417729204615, - "punct": 0.9877428998505232 - }, - "opus100": { - "u": 0.8817498291182502, - "t": null, - "punct": null - }, - "ud": { - "u": 0.971764705882353, - "t": 0.9726516052318668, - "punct": 0.9878934624697335 - } - }, - "fy": { - "opus100": { - "u": 0.571336966976595, - "t": 0.6380510440835266, - "punct": 0.8887134964483031 - } - }, - "ga": { - "opus100": { - "u": 0.7986813186813186, - "t": 0.7625750362243842, - "punct": 0.8808139534883721 - }, - "ud": { - "u": 0.8645533141210375, - "t": 0.9109730848861284, - "punct": 0.9867549668874173 - } - }, - "gd": { - "opus100": { - "u": 0.7777777777777778, - "t": 0.8303608461219412, - "punct": 0.9330254041570438 - }, - "ud": { - "u": 0.7145969498910676, - "t": 0.7523892267593397, - "punct": 0.8025247971145175 - } - }, - "gl": { - "opus100": { - "u": 0.9037914691943127, - "t": 0.9062276306370795, - "punct": 0.9441176470588236 - }, - "ud": { - "u": 0.9875, - "t": 0.9899749373433584, - "punct": 0.9851116625310173 - } - }, - "gu": { - "ersatz": { - "u": 0.9165103189493433, - "t": 0.9069767441860466, - "punct": 0.9705014749262537 - }, - "opus100": { - "u": 0.702166897187644, - "t": 0.7032598274209013, - "punct": 0.7702349869451697 - } - }, - "ha": { - "opus100": { - "u": 0.8282700421940928, - "t": 0.8853166986564299, - "punct": 0.9162038155035016 - } - }, - "he": { - "opus100": { - "u": 0.9102564102564102, - "t": 0.9050647820965843, - "punct": 0.9406800694961529 - }, - "ud": { - "u": 0.9627791563275434, - "t": 0.9579617834394903, - "punct": 0.9731800766283524 - } - }, - "hi": { - "ersatz": { - "u": 0.945510360706063, - "t": 0.9423307969563476, - "punct": 0.9722110350382601 - }, - "opus100": { - "u": 0.6538637402834934, - "t": 0.6493955094991365, - "punct": 0.7571084337349397 - }, - "ud": { - "u": 0.9758369723435225, - "t": 0.9756526840715753, - "punct": 0.9991095280498665 - } - }, - "hu": { - "opus100": { - "u": 0.9207688701359589, - "t": 0.9309852451213707, - "punct": 0.9644520715861731 - }, - "ud": { - "u": 0.9713656387665198, - "t": 0.9688888888888889, - "punct": 0.9944506104328524 - } - }, - "hy": { - "opus100": { - "u": 0.8686219365206911, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9711934156378601, - "t": 0.9735099337748345, - "punct": 0.9805579036348266 - } - }, - "id": { - "opus100": { - "u": 0.8941517641372643, - "t": 0.9031941031941032, - "punct": 0.9425056490082852 - }, - "ud": { - "u": 0.9797730636408486, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.8289199642963405, - "t": 0.8382568002339866, - "punct": 0.9083181542197936 - } - }, - "is": { - "opus100": { - "u": 0.9435151515151515, - "t": 0.9480614484272128, - "punct": 0.9693251533742331 - }, - "ud": { - "u": 0.8807307525010873, - "t": 0.9015301530153016, - "punct": 0.9651826484018265 - } - }, - "it": { - "opus100": { - "u": 0.8690396239086636, - "t": 0.8913597405605745, - "punct": 0.9383313180169286 - }, - "ud": { - "u": 0.9611166500498505, - "t": 0.9630369630369631, - "punct": 0.9958592132505175 - } - }, - "ja": { - "ersatz": { - "u": 0.8166519043401239, - "t": 0.814404432132964, - "punct": 0.9504761904761905 - }, - "opus100": { - "u": 0.3958990536277603, - "t": 0.7920887602508443, - "punct": 0.85578367551327 - }, - "ud": { - "u": 0.9661482159194876, - "t": 0.9685185185185186, - "punct": 0.9841269841269841 - } - }, - "jv": { - "ud": { - "u": 0.9615384615384615, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.9111166130230255, - "t": 0.9110734189483887, - "punct": 0.93553963941714 - } - }, - "kk": { - "ersatz": { - "u": 0.9720837487537387, - "t": 0.9662468513853905, - "punct": 0.999001996007984 - }, - "opus100": { - "u": 0.70223752151463, - "t": 0.7317744154057771, - "punct": 0.9178117708063261 - }, - "ud": { - "u": 0.9790874524714829, - "t": 0.9010875194199897, - "punct": 0.9725759059745347 - } - }, - "km": { - "ersatz": { - "u": 0.8385155466399198, - "t": 0.907604994324631, - "punct": 0.9140170174652933 - }, - "opus100": { - "u": 0.6823529411764706, - "t": 0.689974293059126, - "punct": 0.7785007072135784 - } - }, - "kn": { - "opus100": { - "u": 0.6185804962492787, - "t": 0.6036406341749854, - "punct": 0.7552941176470587 - } - }, - "ko": { - "opus100": { - "u": 0.5300564596479574, - "t": 0.676056338028169, - "punct": 0.8004807692307694 - }, - "ud": { - "u": 0.9934782608695651, - "t": 0.9938944614042738, - "punct": 0.9995627459554001 - } - }, - "ku": { - "opus100": { - "u": 0.7825696316262354, - "t": 0.6381450032658393, - "punct": 0.753441802252816 - } - }, - "ky": { - "opus100": { - "u": 0.8018154311649017, - "t": 0.8296967979597619, - "punct": 0.9150249926492208 - } - }, - "la": { - "ud": { - "u": 0.8448862150143867, - "t": 0.8992822412595509, - "punct": 0.9638895444890252 - } - }, - "lt": { - "ersatz": { - "u": 0.9690927218344965, - "t": 0.966144517433047, - "punct": 0.9939698492462311 - }, - "opus100": { - "u": 0.8024457094665823, - "t": 0.8585343228200372, - "punct": 0.9071253071253071 - }, - "ud": { - "u": 0.9754689754689754, - "t": 0.9730909090909091, - "punct": 0.9904481998530493 - } - }, - "lv": { - "ersatz": { - "u": 0.9699029126213592, - "t": 0.9733727810650888, - "punct": 0.9970297029702969 - }, - "opus100": { - "u": 0.8087012156110044, - "t": 0.8719789423307012, - "punct": 0.9230007427581084 - }, - "ud": { - "u": 0.9622479622479622, - "t": 0.9625212947189097, - "punct": 0.9903412749517064 - } - }, - "mg": { - "opus100": { - "u": 0.8779491833030852, - "t": 0.9071770334928229, - "punct": 0.9548834903321765 - } - }, - "mk": { - "opus100": { - "u": 0.9245855708615456, - "t": 0.930562116202173, - "punct": 0.9582726831635129 - } - }, - "ml": { - "opus100": { - "u": 0.8089579524680073, - "t": 0.8171443063657113, - "punct": 0.8585690515806987 - } - }, - "mn": { - "opus100": { - "u": 0.49153140437544107, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.9043736100815418, - "t": 0.9066400399400899, - "punct": 0.9320099255583127 - }, - "ud": { - "u": 0.9591836734693878, - "t": 0.9591836734693878, - "punct": 0.9278350515463918 - } - }, - "ms": { - "opus100": { - "u": 0.8829578844270323, - "t": 0.8845208845208845, - "punct": 0.9398852581691195 - } - }, - "mt": { - "opus100": { - "u": 0.6946308724832216, - "t": 0.8259642521166509, - "punct": 0.8906326630701324 - }, - "ud": { - "u": 0.9102927289896129, - "t": 0.8956692913385829, - "punct": 0.950533462657614 - } - }, - "my": { - "opus100": { - "u": 0.6822682268226822, - "t": 0.7147192716236721, - "punct": 0.7964649169791109 - } - }, - "ne": { - "opus100": { - "u": 0.6960061053167133, - "t": 0.6967840735068913, - "punct": 0.7452552793370757 - } - }, - "nl": { - "opus100": { - "u": 0.9234022556390977, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9324437030859049, - "t": 0.9283387622149837, - "punct": 0.9673093042749371 - } - }, - "no": { - "opus100": { - "u": 0.9505574406204557, - "t": 0.9526354141365072, - "punct": 0.967156862745098 - }, - "ud": { - "u": 0.9831124967524032, - "t": 0.986060918946825, - "punct": 0.9938112429087158 - } - }, - "pa": { - "opus100": { - "u": 0.5778849050918952, - "t": 0.6543370669445168, - "punct": 0.7706855791962176 - } - }, - "pl": { - "ersatz": { - "u": 0.9465267366316842, - "t": 0.9393166751657318, - "punct": 0.9474689589302769 - }, - "opus100": { - "u": 0.921353670162059, - "t": 0.926923076923077, - "punct": 0.9608470819995075 - }, - "ud": { - "u": 0.9471649484536082, - "t": 0.9582696089141359, - "punct": 0.99389278443791 - } - }, - "ps": { - "ersatz": { - "u": 0.8680991735537189, - "t": 0.9250589729631645, - "punct": 0.9568168960965491 - }, - "opus100": { - "u": 0.6168853010427179, - "t": 0.6971046770601337, - "punct": 0.7366809552969994 - } - }, - "pt": { - "opus100": { - "u": 0.9085807809212064, - "t": 0.9217183770883055, - "punct": 0.9560975609756096 - }, - "ud": { - "u": 0.9589041095890412, - "t": 0.9597257926306769, - "punct": 0.9866551872578562 - } - }, - "ro": { - "ersatz": { - "u": 0.976343026121242, - "t": 0.9675471698113207, - "punct": 0.9955089820359282 - }, - "opus100": { - "u": 0.9041222788327928, - "t": 0.9119437939110069, - "punct": 0.9699378881987578 - }, - "ud": { - "u": 0.8701406120760959, - "t": 0.92, - "punct": 0.9947494033412888 - } - }, - "ru": { - "ersatz": { - "u": 0.9788519637462236, - "t": 0.9770759042282221, - "punct": 0.992936427850656 - }, - "opus100": { - "u": 0.834896401308615, - "t": null, - "punct": null - }, - "ud": { - "u": 0.863849765258216, - "t": 0.8775176918889493, - "punct": 0.933870040253019 - } - }, - "si": { - "opus100": { - "u": 0.8039075530140576, - "t": 0.8087215064420218, - "punct": 0.8630517023959646 - } - }, - "sk": { - "opus100": { - "u": 0.9132867132867134, - "t": 0.9353980159690297, - "punct": 0.9608470819995075 - }, - "ud": { - "u": 0.9646393210749646, - "t": 0.9634898055950688, - "punct": 0.9886363636363636 - } - }, - "sl": { - "opus100": { - "u": 0.9191588785046729, - "t": 0.9323809523809523, - "punct": 0.9529326574945691 - }, - "ud": { - "u": 0.9659395331037123, - "t": 0.9675675675675676, - "punct": 0.9925694172858818 - } - }, - "sq": { - "opus100": { - "u": 0.9055542535739396, - "t": 0.9129916567342073, - "punct": 0.9604743083003953 - }, - "ud": { - "u": 1.0, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9460043196544277, - "t": 0.9463813416686703, - "punct": 0.9641025641025641 - }, - "ud": { - "u": 0.9816779170684666, - "t": 0.9846449136276392, - "punct": 0.9990375360923965 - } - }, - "sv": { - "opus100": { - "u": 0.9182624941616068, - "t": 0.9336515513126492, - "punct": 0.9575963169372427 - }, - "ud": { - "u": 0.9532273152478952, - "t": 0.9534992954438704, - "punct": 0.9717568214456678 - } - }, - "ta": { - "ersatz": { - "u": 0.9442591710338257, - "t": 0.9541561712846347, - "punct": 0.9811881188118811 - }, - "opus100": { - "u": 0.6329223447977504, - "t": 0.6214819069500288, - "punct": 0.7178631051752922 - }, - "ud": { - "u": 0.9836065573770492, - "t": 0.975, - "punct": 1.0 - } - }, - "te": { - "opus100": { - "u": 0.778990104034509, - "t": 0.7778355879292405, - "punct": 0.8427267847557702 - } - }, - "tg": { - "opus100": { - "u": 0.8075240594925635, - "t": 0.8382676780034255, - "punct": 0.915362035225049 - } - }, - "th": { - "opus100": { - "u": 0.6914950760966876, - "t": 0.7093405530845098, - "punct": 0.729114971050455 - }, - "ud": { - "u": 0.6843946815955213, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.9383794274623968, - "t": 0.9359605911330049, - "punct": 0.9843905679176355 - }, - "opus100": { - "u": 0.9317907929621596, - "t": 0.9343385214007782, - "punct": 0.9564575645756458 - }, - "ud": { - "u": 0.9411764705882353, - "t": 0.9498031496062992, - "punct": 0.9923896499238964 - } - }, - "uk": { - "opus100": { - "u": 0.8894565722248027, - "t": 0.8961466165413533, - "punct": 0.9445794846864365 - }, - "ud": { - "u": 0.9175824175824177, - "t": 0.9276500280426249, - "punct": 0.9826135726303982 - } - }, - "ur": { - "opus100": { - "u": 0.5175487465181058, - "t": 0.5174244938599403, - "punct": 0.64049955396967 - }, - "ud": { - "u": 0.9472743521000894, - "t": 0.9768303985171455, - "punct": 0.9943714821763602 - } - }, - "uz": { - "opus100": { - "u": 0.7887205387205387, - "t": 0.803689687795648, - "punct": 0.855132249454016 - } - }, - "vi": { - "opus100": { - "u": 0.9129994941831058, - "t": 0.9157678479712377, - "punct": 0.951329653788259 - }, - "ud": { - "u": 0.7474081055607916, - "t": 0.9346733668341709, - "punct": 0.9769757311761046 - } - }, - "xh": { - "opus100": { - "u": 0.7912243453644727, - "t": 0.7911466917824348, - "punct": 0.9008455034588778 - } - }, - "yi": { - "opus100": { - "u": 0.7369872457773182, - "t": 0.722509899482181, - "punct": 0.8082644628099174 - } - }, - "yo": { - "opus100": { - "u": 0.76493060592872, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8575342465753424, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.8674121405750799, - "t": 0.9067713444553485, - "punct": 0.9694258016405666 - }, - "opus100": { - "u": 0.6529873264936632, - "t": 0.7129197242606181, - "punct": 0.8749367088607596 - }, - "ud": { - "u": 0.9755102040816326, - "t": 0.989010989010989, - "punct": 0.996 - } - }, - "zu": { - "opus100": { - "u": 0.7922840369024322, - "t": 0.8506444275966641, - "punct": 0.8975054229934925 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-9l_intrinsic_results.json b/wtpsplit/evaluation/evaluation_results/wtp-canine-s-9l_intrinsic_results.json deleted file mode 100644 index ab9c6bd9..00000000 --- a/wtpsplit/evaluation/evaluation_results/wtp-canine-s-9l_intrinsic_results.json +++ /dev/null @@ -1,977 +0,0 @@ -{ - "af": { - "opus100": { - "u": 0.7588595790034638, - "t": 0.8030054003287156, - "punct": 0.8931548370800706 - }, - "ud": { - "u": 0.9941520467836257, - "t": 0.9917550058892816, - "punct": 0.9976470588235294 - } - }, - "am": { - "opus100": { - "u": 0.6770488612030368, - "t": 0.6951663832888025, - "punct": 0.7405775819872736 - } - }, - "ar": { - "ersatz": { - "u": 0.8910505836575875, - "t": 0.9011432414256894, - "punct": 0.9258876249569113 - }, - "opus100": { - "u": 0.7012609117361784, - "t": 0.6966452533904355, - "punct": 0.8080357142857142 - }, - "ud": { - "u": 0.851255634256278, - "t": 0.87292817679558, - "punct": 0.8969359331476323 - } - }, - "az": { - "opus100": { - "u": 0.7819611088125776, - "t": 0.7668368587405786, - "punct": 0.8520884520884521 - } - }, - "be": { - "opus100": { - "u": 0.7593913456966239, - "t": 0.7644485378770435, - "punct": 0.895484525621512 - }, - "ud": { - "u": 0.9, - "t": 0.9014844804318488, - "punct": 0.9367327667610954 - } - }, - "bg": { - "opus100": { - "u": 0.9381591562799617, - "t": 0.9245593419506464, - "punct": 0.9656013661868749 - }, - "ud": { - "u": 0.9851685393258426, - "t": 0.9835042353990191, - "punct": 0.9973142345568488 - } - }, - "bn": { - "opus100": { - "u": 0.8097624754848551, - "t": 0.8495228774161977, - "punct": 0.8939207482156042 - }, - "ud": { - "u": 1.0, - "t": null, - "punct": null - } - }, - "ca": { - "opus100": { - "u": 0.8938156359393232, - "t": 0.9010158280179542, - "punct": 0.9524283935242839 - }, - "ud": { - "u": 0.9861900893582453, - "t": 0.9851471779638131, - "punct": 0.999729070712544 - } - }, - "ceb": { - "ud": { - "u": 0.9973474801061007, - "t": null, - "punct": null - } - }, - "cs": { - "ersatz": { - "u": 0.9331727874774232, - "t": 0.9475534720187518, - "punct": 0.9936342592592592 - }, - "opus100": { - "u": 0.8941068139963166, - "t": 0.9080244016893476, - "punct": 0.9531598513011152 - }, - "ud": { - "u": 0.9244332493702772, - "t": 0.9245937924442879, - "punct": 0.9711028500619577 - } - }, - "cy": { - "opus100": { - "u": 0.7078955268688083, - "t": 0.7689576464620848, - "punct": 0.8349301943607993 - }, - "ud": { - "u": 0.9910761154855643, - "t": 0.9936842105263157, - "punct": 0.9957939011566773 - } - }, - "da": { - "opus100": { - "u": 0.9058358521274122, - "t": 0.9098993681254388, - "punct": 0.9550342130987292 - }, - "ud": { - "u": 0.9507908611599297, - "t": 0.9507908611599297, - "punct": 0.9838420107719928 - } - }, - "de": { - "ersatz": { - "u": 0.9667170953101362, - "t": 0.9657099314198628, - "punct": 0.9949005609382967 - }, - "opus100": { - "u": 0.8083989501312336, - "t": 0.8601997146932953, - "punct": 0.9085334695963209 - }, - "ud": { - "u": 0.9627740948495664, - "t": 0.9644513137557958, - "punct": 0.9608879492600424 - } - }, - "el": { - "opus100": { - "u": 0.924056603773585, - "t": 0.9342294767162745, - "punct": 0.9638198375584544 - }, - "ud": { - "u": 0.9724972497249724, - "t": 0.9735099337748344, - "punct": 0.9766925638179799 - } - }, - "en": { - "ersatz": { - "u": 0.9751205400192864, - "t": 0.974869177595452, - "punct": 0.9891248058001035 - }, - "opus100": { - "u": 0.9191572758451738, - "t": 0.9060434372049102, - "punct": 0.9502572898799314 - }, - "ud": { - "u": 0.9495875343721357, - "t": 0.9506398537477148, - "punct": 0.9717984281091077 - } - }, - "eo": { - "opus100": { - "u": 0.9215066828675577, - "t": 0.9192965550469766, - "punct": 0.9594460929772501 - } - }, - "es": { - "ersatz": { - "u": 0.9875816993464053, - "t": 0.9795176742649487, - "punct": 0.995591836734694 - }, - "opus100": { - "u": 0.9216938727229713, - "t": 0.9231863442389758, - "punct": 0.9575518262586378 - }, - "ud": { - "u": 0.968372627947096, - "t": 0.9691019347386659, - "punct": 0.995937318630296 - } - }, - "et": { - "ersatz": { - "u": 0.9607990012484394, - "t": 0.9491611591255719, - "punct": 0.9849774661992989 - }, - "opus100": { - "u": 0.8641534686593799, - "t": 0.9034564958283672, - "punct": 0.9541420118343193 - }, - "ud": { - "u": 0.9425287356321838, - "t": 0.9422689986070267, - "punct": 0.9813975300922307 - } - }, - "eu": { - "opus100": { - "u": 0.8570145903479237, - "t": 0.8643604915794265, - "punct": 0.9316406250000001 - }, - "ud": { - "u": 0.965592572364828, - "t": 0.967991169977925, - "punct": 0.9986091794158554 - } - }, - "fa": { - "opus100": { - "u": 0.6538112522686026, - "t": 0.6497484139138044, - "punct": 0.7698315840859166 - }, - "ud": { - "u": 0.9709321750751754, - "t": 0.98110661268556, - "punct": 0.998627316403569 - } - }, - "fi": { - "ersatz": { - "u": 0.9796226415094339, - "t": 0.9807932152656523, - "punct": 0.9962453066332917 - }, - "opus100": { - "u": 0.9227863046044864, - "t": 0.9324389075227599, - "punct": 0.963107744930369 - }, - "ud": { - "u": 0.9339593114241002, - "t": 0.9339652448657189, - "punct": 0.9842291599613775 - } - }, - "fr": { - "ersatz": { - "u": 0.9744047619047619, - "t": 0.9707037148897614, - "punct": 0.9915915915915916 - }, - "opus100": { - "u": 0.8919043238270469, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9694835680751175, - "t": 0.9773539928486292, - "punct": 0.9866989117291415 - } - }, - "fy": { - "opus100": { - "u": 0.5809735921094495, - "t": 0.6807576173483393, - "punct": 0.876847290640394 - } - }, - "ga": { - "opus100": { - "u": 0.8220150909897914, - "t": 0.8349647165945823, - "punct": 0.9072011878247958 - }, - "ud": { - "u": 0.8598665395614872, - "t": 0.9050505050505051, - "punct": 0.98787210584344 - } - }, - "gd": { - "opus100": { - "u": 0.860616587060356, - "t": 0.8685762426284751, - "punct": 0.9408450704225352 - }, - "ud": { - "u": 0.7101769911504425, - "t": 0.7439446366782007, - "punct": 0.8306306306306306 - } - }, - "gl": { - "opus100": { - "u": 0.9071090047393364, - "t": 0.9117929050814957, - "punct": 0.942969518190757 - }, - "ud": { - "u": 0.9899749373433584, - "t": 0.9886792452830189, - "punct": 0.9925373134328358 - } - }, - "gu": { - "ersatz": { - "u": 0.9251700680272108, - "t": 0.9131513647642681, - "punct": 0.9783677482792528 - }, - "opus100": { - "u": 0.7474370922646785, - "t": 0.746879680479281, - "punct": 0.7906976744186045 - } - }, - "ha": { - "opus100": { - "u": 0.8791506663654844, - "t": 0.9042089985486211, - "punct": 0.9183374083129584 - } - }, - "he": { - "opus100": { - "u": 0.91412213740458, - "t": 0.9086617890016521, - "punct": 0.9417018109650211 - }, - "ud": { - "u": 0.9612983770287141, - "t": 0.961104140526976, - "punct": 0.989821882951654 - } - }, - "hi": { - "ersatz": { - "u": 0.9547758284600389, - "t": 0.9496893164962918, - "punct": 0.9745324313569439 - }, - "opus100": { - "u": 0.6857646540326134, - "t": 0.6840180684018069, - "punct": 0.7901468498342018 - }, - "ud": { - "u": 0.9817109144542772, - "t": 0.9832303618711384, - "punct": 0.9991095280498665 - } - }, - "hu": { - "opus100": { - "u": 0.9264253607759642, - "t": 0.9326968973747016, - "punct": 0.9635607728050869 - }, - "ud": { - "u": 0.9653631284916202, - "t": 0.9632925472747497, - "punct": 0.991130820399113 - } - }, - "hy": { - "opus100": { - "u": 0.8740435158693194, - "t": null, - "punct": null - }, - "ud": { - "u": 0.967266775777414, - "t": 0.9660314830157416, - "punct": 0.980849292256453 - } - }, - "id": { - "opus100": { - "u": 0.9024031387935262, - "t": 0.9048678033110946, - "punct": 0.9458717884759291 - }, - "ud": { - "u": 0.9865871833084948, - "t": null, - "punct": null - } - }, - "ig": { - "opus100": { - "u": 0.7557480839720093, - "t": 0.8528649582493522, - "punct": 0.9136712749615975 - } - }, - "is": { - "opus100": { - "u": 0.943579766536965, - "t": 0.9453658536585366, - "punct": 0.9698455503799951 - }, - "ud": { - "u": 0.8831214689265537, - "t": 0.8917927145797906, - "punct": 0.9699176087373059 - } - }, - "it": { - "opus100": { - "u": 0.8759550561797754, - "t": 0.9035294117647059, - "punct": 0.9428431851489985 - }, - "ud": { - "u": 0.9554013875123885, - "t": 0.9404878048780487, - "punct": 0.9948293691830403 - } - }, - "ja": { - "ersatz": { - "u": 0.8428949691085613, - "t": 0.8548463356973994, - "punct": 0.96548463356974 - }, - "opus100": { - "u": 0.5768435561681599, - "t": 0.8266918179674606, - "punct": 0.8858148893360162 - }, - "ud": { - "u": 0.9603603603603604, - "t": 0.9676225716928769, - "punct": 0.9860205032618825 - } - }, - "jv": { - "ud": { - "u": 0.9575289575289575, - "t": null, - "punct": null - } - }, - "ka": { - "opus100": { - "u": 0.9069600574025353, - "t": 0.9068767908309456, - "punct": 0.9344181459566073 - } - }, - "kk": { - "ersatz": { - "u": 0.9512069851052901, - "t": 0.9479112944816916, - "punct": 0.9965017491254372 - }, - "opus100": { - "u": 0.7036496350364964, - "t": 0.7466373867691464, - "punct": 0.9261186264308012 - }, - "ud": { - "u": 0.9701923076923077, - "t": 0.9178990311065783, - "punct": 0.9856870229007634 - } - }, - "km": { - "ersatz": { - "u": 0.751590224305323, - "t": 0.9269827005167378, - "punct": 0.9322071571460325 - }, - "opus100": { - "u": 0.7332139659803043, - "t": 0.7349609866599547, - "punct": 0.8132413793103448 - } - }, - "kn": { - "opus100": { - "u": 0.717741935483871, - "t": 0.6535714285714286, - "punct": 0.7923854848304581 - } - }, - "ko": { - "opus100": { - "u": 0.6097635861221984, - "t": 0.7293544457978076, - "punct": 0.8260147163541419 - }, - "ud": { - "u": 0.992595818815331, - "t": 0.9925990422289944, - "punct": 0.999343975508419 - } - }, - "ku": { - "opus100": { - "u": 0.7962752668635021, - "t": 0.721331689272503, - "punct": 0.8354503464203233 - } - }, - "ky": { - "opus100": { - "u": 0.8592178770949721, - "t": 0.8534046981861433, - "punct": 0.9181008902077151 - } - }, - "la": { - "ud": { - "u": 0.8504398826979472, - "t": 0.9034945614441102, - "punct": 0.9744812783210112 - } - }, - "lt": { - "ersatz": { - "u": 0.9753892516323456, - "t": 0.9722362443210499, - "punct": 0.9934967483741871 - }, - "opus100": { - "u": 0.8150800336983993, - "t": 0.8669905158454776, - "punct": 0.926829268292683 - }, - "ud": { - "u": 0.9773887673231219, - "t": 0.9765739385065886, - "punct": 0.9948792977322602 - } - }, - "lv": { - "ersatz": { - "u": 0.9770955165692008, - "t": 0.9781487846795974, - "punct": 0.9975222993062439 - }, - "opus100": { - "u": 0.8343824614716735, - "t": 0.8857278330962541, - "punct": 0.9319812020776651 - }, - "ud": { - "u": 0.9656061908856407, - "t": 0.9702127659574469, - "punct": 0.9941847943140212 - } - }, - "mg": { - "opus100": { - "u": 0.9239904988123516, - "t": 0.9318892900120337, - "punct": 0.962889658584859 - } - }, - "mk": { - "opus100": { - "u": 0.9330819981149859, - "t": 0.9320159962361798, - "punct": 0.9592825981580222 - } - }, - "ml": { - "opus100": { - "u": 0.8146620847651774, - "t": 0.8229376257545271, - "punct": 0.8737266050698886 - } - }, - "mn": { - "opus100": { - "u": 0.8186798137496576, - "t": null, - "punct": null - } - }, - "mr": { - "opus100": { - "u": 0.9055867284703586, - "t": 0.9105367793240557, - "punct": 0.9324586977648203 - }, - "ud": { - "u": 0.9375000000000001, - "t": 0.9292929292929293, - "punct": 0.9894736842105264 - } - }, - "ms": { - "opus100": { - "u": 0.8851897184822521, - "t": 0.8895463510848126, - "punct": 0.9461615154536391 - } - }, - "mt": { - "opus100": { - "u": 0.6833514689880306, - "t": 0.8293706293706292, - "punct": 0.8995886765061697 - }, - "ud": { - "u": 0.9048543689320389, - "t": 0.9014634146341464, - "punct": 0.9506292352371731 - } - }, - "my": { - "opus100": { - "u": 0.6614913176710929, - "t": 0.7849546044098573, - "punct": 0.842409892133649 - } - }, - "ne": { - "opus100": { - "u": 0.7364672364672364, - "t": 0.7340134361781538, - "punct": 0.7772435897435898 - } - }, - "nl": { - "opus100": { - "u": 0.9267831837505904, - "t": null, - "punct": null - }, - "ud": { - "u": 0.9493243243243243, - "t": 0.9246963562753037, - "punct": 0.9603305785123966 - } - }, - "no": { - "opus100": { - "u": 0.9491525423728814, - "t": 0.949842500605767, - "punct": 0.9661598822952429 - }, - "ud": { - "u": 0.9791013584117032, - "t": 0.9845995893223819, - "punct": 0.9935550399587523 - } - }, - "pa": { - "opus100": { - "u": 0.5848580441640379, - "t": 0.643453237410072, - "punct": 0.799583007557988 - } - }, - "pl": { - "ersatz": { - "u": 0.9441056910569106, - "t": 0.9435897435897436, - "punct": 0.9493487698986975 - }, - "opus100": { - "u": 0.9293413173652695, - "t": 0.9350084561488282, - "punct": 0.9593933463796478 - }, - "ud": { - "u": 0.9617319046577738, - "t": 0.9645764576457646, - "punct": 0.99479520253451 - } - }, - "ps": { - "ersatz": { - "u": 0.8401403956604977, - "t": 0.9120141342756183, - "punct": 0.9661458333333334 - }, - "opus100": { - "u": 0.653194263363755, - "t": 0.7293274531422271, - "punct": 0.7882517482517484 - } - }, - "pt": { - "opus100": { - "u": 0.9147540983606557, - "t": 0.9249521988527725, - "punct": 0.9578151670324311 - }, - "ud": { - "u": 0.9667099005620406, - "t": 0.967686342093925, - "punct": 0.9836488812392428 - } - }, - "ro": { - "ersatz": { - "u": 0.9789447609611097, - "t": 0.9639593908629441, - "punct": 0.9955112219451371 - }, - "opus100": { - "u": 0.9104895104895104, - "t": 0.9143393569584604, - "punct": 0.9724907063197027 - }, - "ud": { - "u": 0.8342585249801745, - "t": 0.9223702342673403, - "punct": 0.9947494033412888 - } - }, - "ru": { - "ersatz": { - "u": 0.9797160243407708, - "t": 0.9823499747856783, - "punct": 0.9939455095862765 - }, - "opus100": { - "u": 0.8411174159755566, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8675703858185609, - "t": 0.8689295039164491, - "punct": 0.9313669880884856 - } - }, - "si": { - "opus100": { - "u": 0.8043581241117953, - "t": 0.8105705112373425, - "punct": 0.8682323856613101 - } - }, - "sk": { - "opus100": { - "u": 0.9199623352165724, - "t": 0.936678032148076, - "punct": 0.9636767976278724 - }, - "ud": { - "u": 0.9630331753554502, - "t": 0.9585121602288984, - "punct": 0.9896324222431668 - } - }, - "sl": { - "opus100": { - "u": 0.9276114124027351, - "t": 0.9351454458750595, - "punct": 0.9568589432864759 - }, - "ud": { - "u": 0.9638183217859891, - "t": 0.9631925610228594, - "punct": 0.99375 - } - }, - "sq": { - "opus100": { - "u": 0.9118755890669179, - "t": 0.9217391304347826, - "punct": 0.9610261470152937 - }, - "ud": { - "u": 1.0, - "t": null, - "punct": null - } - }, - "sr": { - "opus100": { - "u": 0.9464585834333734, - "t": 0.9484585741811176, - "punct": 0.9676787463271304 - }, - "ud": { - "u": 0.9776046738072055, - "t": 0.985645933014354, - "punct": 0.9990375360923965 - } - }, - "sv": { - "opus100": { - "u": 0.925064599483204, - "t": 0.9357841967056577, - "punct": 0.9600778967867575 - }, - "ud": { - "u": 0.960489181561618, - "t": 0.9591740966682308, - "punct": 0.9741379310344828 - } - }, - "ta": { - "ersatz": { - "u": 0.9557266602502407, - "t": 0.9511465603190429, - "punct": 0.9797930014785609 - }, - "opus100": { - "u": 0.6882303839732888, - "t": 0.6838674633351439, - "punct": 0.7681867535287731 - }, - "ud": { - "u": 0.9876543209876543, - "t": 0.9833333333333333, - "punct": 0.9917355371900827 - } - }, - "te": { - "opus100": { - "u": 0.7778936392075078, - "t": 0.7825436408977557, - "punct": 0.8459709379128136 - } - }, - "tg": { - "opus100": { - "u": 0.8056027164685908, - "t": 0.8613393079412496, - "punct": 0.905284656624968 - } - }, - "th": { - "opus100": { - "u": 0.6984069514844315, - "t": 0.7222884386174016, - "punct": 0.7515409139213602 - }, - "ud": { - "u": 0.7521755580779418, - "t": null, - "punct": null - } - }, - "tr": { - "ersatz": { - "u": 0.9504145667371159, - "t": 0.9491691104594331, - "punct": 0.9873879853966147 - }, - "opus100": { - "u": 0.9374999999999999, - "t": 0.9366902957712051, - "punct": 0.9569945625308947 - }, - "ud": { - "u": 0.9439844130540672, - "t": 0.9490000000000001, - "punct": 0.9913749365804161 - } - }, - "uk": { - "opus100": { - "u": 0.9006529850746269, - "t": 0.9051886792452831, - "punct": 0.949514563106796 - }, - "ud": { - "u": 0.9270482603815937, - "t": 0.9279279279279279, - "punct": 0.9876819708846584 - } - }, - "ur": { - "opus100": { - "u": 0.6002858504049547, - "t": 0.5684727336489568, - "punct": 0.6860493525531395 - }, - "ud": { - "u": 0.9566003616636527, - "t": 0.9658986175115206, - "punct": 0.9934272300469483 - } - }, - "uz": { - "opus100": { - "u": 0.8007720351704911, - "t": 0.8186602870813398, - "punct": 0.8712178044511127 - } - }, - "vi": { - "opus100": { - "u": 0.9117572692793932, - "t": 0.9129327902240325, - "punct": 0.9562609347663084 - }, - "ud": { - "u": 0.7814504193389245, - "t": 0.9123867069486404, - "punct": 0.9837702871410736 - } - }, - "xh": { - "opus100": { - "u": 0.793065125583463, - "t": 0.8298536117110632, - "punct": 0.9095593919093017 - } - }, - "yi": { - "opus100": { - "u": 0.5842490842490843, - "t": 0.6279982555604011, - "punct": 0.7867549668874172 - } - }, - "yo": { - "opus100": { - "u": 0.7815097784825332, - "t": null, - "punct": null - }, - "ud": { - "u": 0.8831908831908832, - "t": null, - "punct": null - } - }, - "zh": { - "ersatz": { - "u": 0.8890670943597969, - "t": 0.9194029850746269, - "punct": 0.9758382642998028 - }, - "opus100": { - "u": 0.8357732233164759, - "t": 0.811303129378795, - "punct": 0.9091821374811841 - }, - "ud": { - "u": 0.968335035750766, - "t": 0.979187314172448, - "punct": 0.9979959919839679 - } - }, - "zu": { - "opus100": { - "u": 0.6777281429483089, - "t": 0.8616417139907072, - "punct": 0.9095773140716961 - } - } -} \ No newline at end of file diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 10e132bc..18b6b60a 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -1,25 +1,26 @@ import copy import json -from dataclasses import dataclass -from typing import List, Union -import os -import time import logging +import os import sys +import time +from dataclasses import dataclass +from typing import List, Union import h5py +import numpy as np +import skops.io as sio import torch from datasets import load_dataset from tqdm.auto import tqdm from transformers import AutoModelForTokenClassification, HfArgumentParser -import numpy as np -import adapters +import adapters import wtpsplit.models # noqa: F401 -from wtpsplit.models import SubwordXLMConfig, SubwordXLMForTokenClassification -from wtpsplit.evaluation import evaluate_mixture, get_labels, train_mixture, token_to_char_probs +from wtpsplit.evaluation import evaluate_mixture, get_labels, token_to_char_probs, train_mixture from wtpsplit.evaluation.intrinsic_baselines import split_language_data from wtpsplit.extract import PyTorchWrapper, extract +from wtpsplit.models import SubwordXLMConfig, SubwordXLMForTokenClassification from wtpsplit.utils import Constants logger = logging.getLogger() @@ -43,8 +44,7 @@ class Args: # } # } # } - # TODO: for songs/etc., maybe feed in each sample separately? - eval_data_path: str = "data/all_data_11_05-all.pth" + eval_data_path: str = "data/all_data.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 @@ -54,7 +54,7 @@ class Args: custom_language_list: str = None threshold: float = 0.01 max_n_train_sentences: int = 10000 - max_n_test_sentences: int = -1 + max_n_test_sentences: int = -1 # -1 is all keep_logits: bool = False skip_adaptation: bool = False skip_punct: bool = True @@ -63,14 +63,14 @@ class Args: return_indices: bool = True exclude_every_k: int = 10 save_suffix: str = "" - num_hidden_layers: Union[int, None] = None + num_hidden_layers: Union[int, None] = None # for original XLM-R def process_logits(text, model, lang_code, args): # Extract necessary data if isinstance(text, list): logits = [] - for short_seq in tqdm(text, desc="Short sequences", disable=False): + for short_seq in tqdm(text, desc="Listwise", disable=False): current_logits, current_offsets_mapping, tokenizer = extract( [short_seq], model, @@ -111,16 +111,11 @@ def process_logits(text, model, lang_code, args): if "xlm" in model.config.model_type: tokens = tokenizer.tokenize(text, verbose=False) - # Use the vectorized function to convert token probabilities to character probabilities for the entire array + # convert token probabilities to character probabilities for the entire array char_probs = token_to_char_probs(text, tokens, logits, tokenizer, offsets_mapping) logits = char_probs - if len(model.model.config.id2label) == 2: - # Igor's old models: take winning logit - logits = np.expand_dims(logits.argmax(axis=1), axis=1) - # we apply sigmoid later; convert to fake logits - logits = np.log((logits + 1e-8) / (1 - logits + 1e-8)) return logits @@ -137,7 +132,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st else: use_langs = eval_data.keys() - total_test_time = 0 # Initialize total test processing time + total_test_time = 0 with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in tqdm(use_langs, desc="Languages"): @@ -187,15 +182,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if args.adapter_path: if args.clf_from_scratch: model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) - # if ( - # any(code in lang_code for code in ["ceb", "jv", "mn", "yo"]) - # and "ted2020" not in dataset_name - # ): - # # no ersatz for these either. - # dataset_load_name = "nllb" - # if "corrupted" in dataset_load_name: - # dataset_load_name += "-corrupted" - # else: + dataset_load_name = dataset_name model.model.load_adapter( args.adapter_path + "/" + dataset_load_name + "/" + lang_code, @@ -212,21 +199,9 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st dset_group = lang_group[dataset_name] if "test_logits" not in dset_group: - # logger.warning(f"RUN: {lang_code} {dataset_name}") test_sentences = dataset["data"] if not test_sentences: continue - # if ( - # isinstance(test_sentences[0], list) - # and "lyrics" not in dataset_name - # and "short" not in dataset_name - # ): - # # documents: only 10% of documents. 1000 sentences --> 100 docs - # max_n_sentences = args.max_n_test_sentences // 10 - # # shuffle sentences - # np.random.seed(42) - # test_sentences = np.random.permutation(test_sentences).tolist() - # else: max_n_sentences = args.max_n_test_sentences test_sentences = test_sentences[:max_n_sentences] if isinstance(test_sentences[0], list): @@ -237,10 +212,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st else: test_text = Constants.SEPARATORS.get(lang_code, " ").join(test_sentences) - start_time = time.time() # Start timing for test logits processing + start_time = time.time() test_logits = process_logits(test_text, model, lang_code, args) - end_time = time.time() # End timing for test logits processing - total_test_time += end_time - start_time # Accumulate test processing time + end_time = time.time() + total_test_time += end_time - start_time if isinstance(test_sentences[0], list): test_logit_lengths = [] # store start and end indices for each pair, used later to slice the logits @@ -252,7 +227,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st test_logits = np.concatenate(test_logits) # NOTE: handled differently than in intrinsic_pairwise.py # here, we keep the label at the end - # in intrinsic_pairwise.py, we only consider the labels in the middle. + # in intrinsic_pairwise.py, we only consider non-ending labels. test_labels = [ get_labels(lang_code, short_seq, after_space=False)[:-1] for short_seq in test_sentences ] @@ -311,7 +286,7 @@ def compute_statistics(values): if not values: # Check for empty values list return {"mean": None, "median": None, "std": None, "min": None, "min_lang": None, "max": None, "max_lang": None} - scores, langs = zip(*values) # Unpack scores and languages + scores, langs = zip(*values) min_index = np.argmin(scores) max_index = np.argmax(scores) return { @@ -342,6 +317,7 @@ def main(args): logger.warning("Loading model...") model_path = args.model_path if args.model_path == "xlm-roberta-base" or args.model_path == "xlm-roberta-large": + # init models here config = SubwordXLMConfig.from_pretrained( args.model_path, num_hidden_layers=args.num_hidden_layers, @@ -359,9 +335,6 @@ def main(args): adapters.init(model.model) # reset model type (used later) model.model.config.model_type = model_type - if "meta-clf" in args.adapter_path: - clf = model.model.classifier - model.model.classifier = torch.nn.Sequential(clf, torch.nn.Linear(clf.out_features, 1)) save_str += f"{args.save_suffix}" if args.max_n_test_sentences < sys.maxsize and args.max_n_test_sentences != -1: @@ -381,7 +354,7 @@ def main(args): clfs = {} if args.return_indices: indices = {} - # Initialize lists to store scores for each metric across all languages + u_scores, t_scores, punct_scores = [], [], [] for lang_code, dsets in tqdm(eval_data.items()): @@ -398,13 +371,6 @@ def main(args): sentences = dataset["data"] if not sentences: continue - # if isinstance(sentences[0], list) and "lyrics" not in dataset_name and "short" not in dataset_name: - # # documents: only 10% of documents. 1000 sentences --> 100 docs - # max_n_sentences = args.max_n_test_sentences // 10 - # # shuffle sentences - # np.random.seed(42) - # sentences = np.random.permutation(sentences).tolist() - # else: max_n_sentences = args.max_n_test_sentences sentences = sentences[:max_n_sentences] if len(sentences) == 0: @@ -412,6 +378,7 @@ def main(args): if lang_code not in f or dataset_name not in f[lang_code]: continue + # to be in line w/ LLM eval; for fair comparison if "lyrics" in dataset_name or "short" in dataset_name: exclude_every_k = 0 else: @@ -589,13 +556,14 @@ def main(args): "include_langs": args.include_langs, } - # sio.dump( - # clfs, - # open( - # Constants.CACHE_DIR / "intrinsic" / f"{save_str}.skops", - # "wb", - # ), - # ) + if not args.skip_adaptation: + sio.dump( + clfs, + open( + Constants.CACHE_DIR / "intrinsic" / f"{save_str}.skops", + "wb", + ), + ) json.dump( results, open( @@ -606,7 +574,6 @@ def main(args): ) print(Constants.CACHE_DIR / "intrinsic" / f"{save_str}.json") - # Write results_avg to JSON json.dump( results_avg, open( diff --git a/wtpsplit/evaluation/intrinsic_baselines.py b/wtpsplit/evaluation/intrinsic_baselines.py index dd6a46fe..97ba0fa3 100644 --- a/wtpsplit/evaluation/intrinsic_baselines.py +++ b/wtpsplit/evaluation/intrinsic_baselines.py @@ -10,7 +10,6 @@ LanguageError, ersatz_sentencize, evaluate_sentences, - preprocess_sentence, punkt_sentencize, pysbd_sentencize, spacy_dp_sentencize, @@ -20,6 +19,7 @@ def split_language_data(eval_data): + # used if 2 language codes given (i.e., code-switching) new_eval_data = {} for lang_code, lang_data in eval_data.items(): @@ -28,7 +28,6 @@ def split_language_data(eval_data): new_lang1 = f"{lang_code}_{lang1.upper()}" new_lang2 = f"{lang_code}_{lang2.upper()}" - # Adding the same content for both new language keys new_eval_data[new_lang1] = lang_data new_eval_data[new_lang2] = lang_data else: @@ -39,7 +38,7 @@ def split_language_data(eval_data): @dataclass class Args: - eval_data_path: str = "data/all_data_11_05-all.pth" + eval_data_path: str = "data/all_data.pth" include_langs: List[str] = None exclude_every_k: int = 10 @@ -62,28 +61,10 @@ class Args: for dataset_name, dataset in lang_data["sentence"].items(): if "nllb" in dataset_name: continue - # if "corrupted" in dataset_name and dataset_name != "ted2020-corrupted-asr": - # print("SKIP: ", lang, dataset_name) - # continue - # if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): - # print("SKIP: ", lang, dataset_name) - # continue - # if "ted2020-corrupted-asr" not in dataset_name: - # continue if not dataset["data"]: continue results[lang][dataset_name] = {} indices[lang][dataset_name] = {} - if "asr" in dataset_name and not any( - x in dataset_name for x in ["lyrics", "short", "code", "ted2020", "legal"] - ): - continue - if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): - continue - if "social-media" in dataset_name: - continue - if "nllb" in dataset_name: - continue if "-" in lang: # code-switched data: eval 2x @@ -106,7 +87,6 @@ class Args: exclude_every_k = args.exclude_every_k try: if isinstance(dataset["data"][0], list): - # all_sentences = [[preprocess_sentence(s) for s in doc] for doc in dataset["data"]] all_sentences = dataset["data"] metrics = [] for i, sentences in enumerate(all_sentences): @@ -172,8 +152,7 @@ class Args: indices[lang][dataset_name][name]["length"] = [metrics.pop("length")] results[lang][dataset_name][name] = metrics except LanguageError as e: - # print("Language not supported for", name) - # print(e) + print("Language not supported for", name) results[lang][dataset_name][name] = None json.dump(results, open(Constants.CACHE_DIR / "intrinsic_baselines.json", "w"), indent=4, default=int) diff --git a/wtpsplit/evaluation/intrinsic_baselines_multilingual.py b/wtpsplit/evaluation/intrinsic_baselines_multilingual.py index 9ad420ab..e1091ded 100644 --- a/wtpsplit/evaluation/intrinsic_baselines_multilingual.py +++ b/wtpsplit/evaluation/intrinsic_baselines_multilingual.py @@ -8,18 +8,14 @@ from wtpsplit.evaluation import ( LanguageError, - ersatz_sentencize, evaluate_sentences, - preprocess_sentence, - punkt_sentencize, - pysbd_sentencize, spacy_dp_sentencize, - spacy_sent_sentencize, ) from wtpsplit.utils import Constants def split_language_data(eval_data): + # used if 2 language codes given (i.e., code-switching) new_eval_data = {} for lang_code, lang_data in eval_data.items(): @@ -28,7 +24,6 @@ def split_language_data(eval_data): new_lang1 = f"{lang_code}_{lang1.upper()}" new_lang2 = f"{lang_code}_{lang2.upper()}" - # Adding the same content for both new language keys new_eval_data[new_lang1] = lang_data new_eval_data[new_lang2] = lang_data else: @@ -39,7 +34,7 @@ def split_language_data(eval_data): @dataclass class Args: - eval_data_path: str = "data/all_data_11_05-all.pth" + eval_data_path: str = "data/all_data.pth" include_langs: List[str] = None exclude_every_k: int = 10 @@ -62,27 +57,11 @@ class Args: for dataset_name, dataset in lang_data["sentence"].items(): if "nllb" in dataset_name: continue - # if "corrupted" in dataset_name and dataset_name != "ted2020-corrupted-asr": - # print("SKIP: ", lang, dataset_name) - # continue - # if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): - # print("SKIP: ", lang, dataset_name) - # continue if not dataset["data"]: continue results[lang][dataset_name] = {} indices[lang][dataset_name] = {} - if "asr" in dataset_name and not any( - x in dataset_name for x in ["lyrics", "short", "code", "ted2020", "legal"] - ): - continue - if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): - continue - if "social-media" in dataset_name: - continue - if "nllb" in dataset_name: - continue - + if "-" in lang: # code-switched data: eval 2x lang_code = lang.split("_")[1].lower() @@ -95,13 +74,13 @@ class Args: ]: print(f"Running {name} on {dataset_name} in {lang_code}...") indices[lang][dataset_name][name] = {} + # exclude also here for fair comparison with others if "lyrics" in dataset_name or "short" in dataset_name: exclude_every_k = 0 else: exclude_every_k = args.exclude_every_k try: if isinstance(dataset["data"][0], list): - # all_sentences = [[preprocess_sentence(s) for s in doc] for doc in dataset["data"]] all_sentences = dataset["data"] metrics = [] for i, sentences in enumerate(all_sentences): @@ -110,7 +89,7 @@ class Args: doc_metrics = evaluate_sentences( lang_code, sentences, - f("xx", text), + f("xx", text), # xx is multilingual key return_indices=True, exclude_every_k=exclude_every_k, ) @@ -143,11 +122,9 @@ class Args: if avg_results[key]: avg_results[key] = sum(avg_results[key]) / len(avg_results[key]) - # Store the results and indices results[lang][dataset_name][name] = avg_results indices[lang][dataset_name][name] = concat_indices else: - # sentences = [preprocess_sentence(s) for s in dataset["data"]] sentences = dataset["data"] text = Constants.SEPARATORS[lang_code].join(sentences) diff --git a/wtpsplit/evaluation/intrinsic_list.py b/wtpsplit/evaluation/intrinsic_list.py deleted file mode 100644 index fa7be03a..00000000 --- a/wtpsplit/evaluation/intrinsic_list.py +++ /dev/null @@ -1,493 +0,0 @@ -import copy -import json -import logging -import os -import time -from dataclasses import dataclass -from typing import List - -import h5py -import numpy as np -import torch -from datasets import load_dataset -from tqdm.auto import tqdm -from transformers import AutoModelForTokenClassification, HfArgumentParser - -import adapters -import wtpsplit.models # noqa: F401 -from wtpsplit.evaluation import evaluate_mixture, get_labels, token_to_char_probs, train_mixture -from wtpsplit.extract import PyTorchWrapper, extract -from wtpsplit.utils import Constants -from collections import defaultdict - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - - -@dataclass -class Args: - model_path: str - adapter_path: str = None - # eval data in the format: - # { - # "": { - # "sentence": { - # "": { - # "meta": { - # "train_data": ["train sentence 1", "train sentence 2"] - # }, - # "data": ["test sentence 1", "test sentence 2"] - # } - # } - # } - # } - # TODO: for songs/etc., maybe feed in each sample separately? - eval_data_path: str = "data/eval.pth" - valid_text_path: str = None # "data/sentence/valid.parquet" - device: str = "cpu" - block_size: int = 510 - stride: int = 64 - batch_size: int = 1 - include_langs: List[str] = None - custom_language_list: str = None - threshold: float = 0.01 - max_n_train_sentences: int = 10_000 - save_suffix: str = "" - do_lowercase: bool = False - do_remove_punct: bool = False - do_strip: bool = False - tqdm: bool = False - skip_adaptation: bool = False - clf_from_scratch: bool = False - - -def process_logits_list(text, model, lang_code, block_size, stride, batch_size, verbose=True) -> List[np.ndarray]: - logits_list = [] - - for chunk in tqdm(text, disable=not verbose): - merged_chunk = Constants.SEPARATORS[lang_code].join(chunk) - # Extract necessary data - logits, offsets_mapping, tokenizer = extract( - [merged_chunk], - model, - lang_code=lang_code, - stride=args.stride, - block_size=block_size, - batch_size=1, - pad_last_batch=True, - ) - logits = logits[0] - if offsets_mapping is not None: - offsets_mapping = offsets_mapping[0] - - if "xlm" in model.config.model_type: - tokens = tokenizer.tokenize(merged_chunk, verbose=False) - - # padding is also removed here (via offset_mapping) - logits = token_to_char_probs(merged_chunk, tokens, logits, tokenizer, offsets_mapping) - if len(model.model.config.id2label) == 2: - # Igor's models: take winning logit - logits = np.expand_dims(logits.argmax(axis=1), axis=1) - # we apply sigmoid later; convert to fake logits - logits = np.log((logits + 1e-8) / (1 - logits + 1e-8)) - logits_list.append(logits) - else: - raise NotImplementedError("Only XLM models are supported for now") - - return logits_list - - -def corrupt(text: str, do_lowercase: bool, do_remove_punct: bool): - if do_lowercase: - text = text.lower() - if do_remove_punct: - for punct in Constants.PUNCTUATION_CHARS: - text = text.replace(punct, "") - return text - - -def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: str = None): - logits_path = Constants.CACHE_DIR / "intrinsic_list" / f"{save_str}.h5" - - if not os.path.exists(Constants.CACHE_DIR / "intrinsic_list"): - os.makedirs(Constants.CACHE_DIR / "intrinsic_list") - - if args.custom_language_list is not None: - with open(args.custom_language_list, "r") as f: - # file is a csv: l1,l2,... - use_langs = f.read().strip().split(",") - else: - use_langs = Constants.LANGINFO.index - - total_test_time = 0 # Initialize total test processing time - - # TODO: revert to "a" - with h5py.File(logits_path, "a") as f, torch.no_grad(): - for lang_code in use_langs: - if args.include_langs is not None and lang_code not in args.include_langs: - continue - - print(f"Processing {lang_code}...") - if lang_code not in f: - lang_group = f.create_group(lang_code) - else: - lang_group = f[lang_code] - - # eval data - for dataset_name, dataset in eval_data[lang_code]["sentence"].items(): - # train on all mldb, eval on mldbW - if "mldbW" in args.eval_data_path and ( - "mldbW" not in args.model_path and "mldbW" not in args.adapter_path - ): - dataset_load_name = "unk" - else: - dataset_load_name = dataset_name - try: - if args.adapter_path: - if args.clf_from_scratch: - model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) - model.model.load_adapter( - args.adapter_path + "/" + dataset_load_name + "/" + lang_code, - set_active=True, - with_head=True, - load_as="text", - ) - if hasattr(model.model.config, "unfreeze_ln"): - if model.model.config.unfreeze_ln: - ln_dict = torch.load( - args.adapter_path + "/" + dataset_load_name + "/" + lang_code + "/ln_dict.pth" - ) - for n, p in model.backbone.named_parameters(): - if "LayerNorm" in n: - p.data = ln_dict[n].data - if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( - os.path.join(args.model_path, "model.safetensors") - ): - model_path = os.path.join(args.model_path, dataset_load_name, "en") - print(model_path) - model = PyTorchWrapper( - AutoModelForTokenClassification.from_pretrained(model_path).to(args.device) - ) - except Exception as e: - print(f"Error loading adapter for {dataset_load_name} in {lang_code}: {e}") - continue - print(dataset_name, dataset_load_name) - if dataset_name not in lang_group: - dset_group = lang_group.create_group(dataset_name) - else: - dset_group = lang_group[dataset_name] - - if "test_logits" not in dset_group: - test_sentences = dataset["data"] - if args.do_strip: - test_sentences = [ - [sentence.lstrip("-").strip() for sentence in chunk] for chunk in test_sentences - ] - test_sentences = [ - [ - corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - for sentence in chunk - ] - for chunk in test_sentences - ] - - start_time = time.time() # Start timing for test logits processing - test_logits = process_logits_list( - test_sentences, - model, - lang_code, - args.block_size, - args.stride, - args.batch_size, - ) - end_time = time.time() # End timing for test logits processing - total_test_time += end_time - start_time # Accumulate test processing time - test_logit_lengths = [] - # store start and end indices for each pair, used later to slice the logits - all_logit_lengths = np.append(0, np.cumsum([len(logits) for logits in test_logits])) - # append tuple of start and end indices for each pair - for i in range(len(test_logits)): - test_logit_lengths.append((all_logit_lengths[i], all_logit_lengths[i + 1] - 1)) - - test_logits = np.concatenate(test_logits) - test_labels = [ - get_labels(lang_code, test_chunk, after_space=False)[:-1] for test_chunk in test_sentences - ] - test_labels = np.append(np.concatenate(test_labels), 0) - assert len(test_labels) == len(test_logits) + 1 - - dset_group.create_dataset("test_logits", data=test_logits) - dset_group.create_dataset("test_labels", data=test_labels) - dset_group.create_dataset("test_logit_lengths", data=test_logit_lengths) - - train_sentences = dataset["meta"].get("train_data") - if train_sentences is not None and "train_logits" not in dset_group and not args.skip_adaptation: - train_sentences = [ - [ - corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - for sentence in chunk - ] - for chunk in train_sentences - ] - if args.do_strip: - train_sentences = [ - [sentence.lstrip("-").strip() for sentence in chunk] for chunk in train_sentences - ] - train_sentences = train_sentences[: args.max_n_train_sentences] - - train_logits = process_logits_list( - train_sentences, - model, - lang_code, - args.block_size, - args.stride, - args.batch_size, - ) - train_logit_lengths = [] - # store start and end indices for each pair, used later to slice the logits - all_logit_lengths = np.append(0, np.cumsum([len(logits) for logits in train_logits])) - # append tuple of start and end indices for each pair - for i in range(len(train_logits)): - train_logit_lengths.append((all_logit_lengths[i], all_logit_lengths[i + 1] - 1)) - - train_logits = np.concatenate(train_logits) - train_labels = [ - get_labels(lang_code, train_chunk, after_space=False)[:-1] for train_chunk in train_sentences - ] - train_labels = np.append(np.concatenate(train_labels), 0) - assert len(train_labels) == len(train_logits) + 1 - - dset_group.create_dataset("train_logits", data=train_logits) - dset_group.create_dataset("train_labels", data=train_labels) - - end_time = time.time() - return h5py.File(logits_path, "r"), total_test_time / 60 # to minutes - - -def compute_statistics(values): - if not values: - return {} - - # Extract all possible keys (metrics) from the first score dictionary, assuming all dicts have the same keys - all_metrics = values[0][0].keys() - - # Prepare a dictionary to store statistics for each metric - stats_dict = {} - - for metric in all_metrics: - scores = [score[metric] for score, lang in values] - langs = [lang for score, lang in values] - - # Calculate statistics for the current metric - min_index = np.argmin(scores) - max_index = np.argmax(scores) - - stats_dict[metric] = { - "mean": np.mean(scores), - "median": np.median(scores), - "std": np.std(scores), - "min": scores[min_index], - "min_lang": langs[min_index], - "max": scores[max_index], - "max_lang": langs[max_index], - } - - return stats_dict - - -def main(args): - save_model_path = args.model_path - if args.adapter_path: - save_model_path = args.adapter_path - save_str = ( - f"{save_model_path.replace('/','_')}_b{args.block_size}_s{args.stride}_u{args.threshold}{args.save_suffix}" - ) - if args.do_lowercase: - save_str += "_lc" - if args.do_remove_punct: - save_str += "_rmp" - - eval_data = torch.load(args.eval_data_path) - if args.valid_text_path is not None: - valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") - else: - valid_data = None - - print("Loading model...") - # if model_path does not contain a model, take first subfolder - if not os.path.exists(os.path.join(args.model_path, "pytorch_model.bin")) and not os.path.exists( - os.path.join(args.model_path, "model.safetensors") - ): - model_path = os.path.join(args.model_path, os.listdir(args.model_path)[0], "en") - print("joined") - print(model_path) - else: - model_path = args.model_path - model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(model_path).to(args.device)) - if args.adapter_path: - model_type = model.model.config.model_type - # adapters need xlm-roberta as model type. - model.model.config.model_type = "xlm-roberta" - adapters.init(model.model) - # reset model type (used later) - model.model.config.model_type = model_type - if "meta-clf" in args.adapter_path: - clf = model.model.classifier - model.model.classifier = torch.nn.Sequential(clf, torch.nn.Linear(clf.out_features, 1)) - - # first, logits for everything. - f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) - - # now, compute the intrinsic scores. - results = {} - clfs = {} - # Initialize lists to store scores for each metric across all languages - u_scores, t_scores, punct_scores = [], [], [] - - for lang_code, dsets in tqdm(eval_data.items()): - if args.include_langs is not None and lang_code not in args.include_langs: - continue - - print(f"Predicting {lang_code}...") - results[lang_code] = {} - clfs[lang_code] = {} - - for dataset_name, dataset in dsets["sentence"].items(): - sentences = dataset["data"] - if args.do_strip: - sentences = [[sentence.lstrip("-").strip() for sentence in chunk] for chunk in sentences] - sentences = [ - [ - corrupt(sentence, do_lowercase=args.do_lowercase, do_remove_punct=args.do_remove_punct) - for sentence in chunk - ] - for chunk in sentences - ] - # check if f[lang_code][dataset_name] exists - if lang_code not in f or dataset_name not in f[lang_code]: - continue - - if "train_logits" in f[lang_code][dataset_name] and not args.skip_adaptation: - feature_indices = None - clf = train_mixture( - [lang_code], - f[lang_code][dataset_name]["train_logits"][:], - f[lang_code][dataset_name]["train_labels"][:], - features=feature_indices, - ) - if clf[0] is not None: - print(clf) - - score_t = defaultdict(list) - score_punct = defaultdict(list) - for i, chunk in tqdm(enumerate(sentences), total=len(sentences), disable=args.tqdm): - start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] - single_score_t, single_score_punct, info = evaluate_mixture( - lang_code, - f[lang_code][dataset_name]["test_logits"][:][start:end], - list(chunk), - *clf, - ) - score_t["f1"].append(single_score_t) - for key in ["precision", "recall", "correct_pairwise"]: - score_t[key].append(info["info_newline"][key]) - score_punct["f1"].append(single_score_punct if single_score_punct is not None else 0.0) - for key in ["precision", "recall", "correct_pairwise"]: - score_punct[key].append( - info["info_transformed"][key] - if single_score_punct is not None - else info["info_newline"][key] - ) - - clfs[lang_code][dataset_name] = clf - - clf = list(copy.deepcopy(clf)) - clf[-1] = args.threshold - else: - clf = [None, None, None, args.threshold] - score_t = score_punct = None - - score_u = defaultdict(list) - for i, chunk in tqdm(enumerate(sentences), total=len(sentences), disable=args.tqdm): - start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] - single_score_u, _, info = evaluate_mixture( - lang_code, - f[lang_code][dataset_name]["test_logits"][:][start:end], - list(chunk), - *clf, - ) - - score_u["f1"].append(single_score_u) - for key in ["precision", "recall", "correct_pairwise"]: - score_u[key].append(info["info_newline"][key]) - - score_u = {key: np.mean(value) for key, value in score_u.items()} - score_t = {key: np.mean(value) for key, value in score_t.items()} if score_t else None - score_punct = {key: np.mean(value) for key, value in score_punct.items()} if score_punct else None - - results[lang_code][dataset_name] = { - "u": score_u["f1"], - "t": score_t["f1"], - "punct": score_punct["f1"], - "u_precision": score_u["precision"], - "t_precision": score_t["precision"], - "punct_precision": score_punct["precision"], - "u_recall": score_u["recall"], - "t_recall": score_t["recall"], - "punct_recall": score_punct["recall"], - "u_acc": score_u["correct_pairwise"], - "t_acc": score_t["correct_pairwise"], - "punct_acc": score_punct["correct_pairwise"], - } - - # just for printing - score_t = score_t or 0.0 - score_punct = score_punct or 0.0 - - u_scores.append((score_u, lang_code)) - t_scores.append((score_t, lang_code)) - punct_scores.append((score_punct, lang_code)) - - print(f"{lang_code} {dataset_name} {score_u['f1']:.3f} {score_t['f1']:.3f} {score_punct['f1']:.3f}") - - # Compute statistics for each metric across all languages - results_avg = { - "u": compute_statistics(u_scores), - "t": compute_statistics(t_scores), - "punct": compute_statistics(punct_scores), - "include_langs": args.include_langs, - } - - # sio.dump( - # clfs, - # open( - # Constants.CACHE_DIR / "intrinsic_list" / f"{save_str}.skops", - # "wb", - # ), - # ) - json.dump( - results, - open( - Constants.CACHE_DIR / "intrinsic_list" / f"{save_str}.json", - "w", - ), - indent=4, - ) - - # Write results_avg to JSON - json.dump( - results_avg, - open( - Constants.CACHE_DIR / "intrinsic_list" / f"{save_str}_AVG.json", - "w", - ), - indent=4, - ) - os.remove(f.filename) - return results, results_avg, total_test_time - - -if __name__ == "__main__": - (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() - results, results_avg, total_test_time = main(args) - print(total_test_time) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index 0b90b095..18845289 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -46,7 +46,7 @@ class Args: # } # } # } - eval_data_path: str = "data/all_data_11_05-all.pth" + eval_data_path: str = "data/all_data.pth" valid_text_path: str = None # "data/sentence/valid.parquet" device: str = "cpu" block_size: int = 512 @@ -56,8 +56,6 @@ class Args: max_n_train_sentences: int = 1_000 max_n_test_sentences: int = sys.maxsize save_suffix: str = "" - do_lowercase: bool = False - do_remove_punct: bool = False skip_adaptation: bool = False keep_logits: bool = True skip_corrupted: bool = True @@ -66,47 +64,13 @@ class Args: clf_from_scratch: bool = False # k_mer-specific args + # k=2 means pairwise, k=3 triplets, ... k: int = 2 max_n_samples: int = sys.maxsize sample_pct: float = 0.5 min_k_mer_length: int = 0 - adjust_threshold: bool = False - # threshold - threshold_increase_type: str = "linear" - threshold_min_length: int = 0 - threshold_max_length: int = 256 - threshold_max: float = 0.1 -def calculate_threshold(sequence_length, max_length, min_length, max_threshold, default_threshold=0.01): - """ - Calculates the threshold based on the sequence length with various increase types - ('linear', 'logarithmic', 'quadratic', 'exponential', 'sigmoidal') from default_threshold - to max_threshold as sequence length decreases from max_length to min_length. - - :param sequence_length: The current sequence length - :param max_length: The sequence length at which the default_threshold is applied - :param min_length: The sequence length at which the max_threshold is applied - :param max_threshold: The maximum threshold value - :param increase_type: Type of increase - :param default_threshold: The default threshold value (minimum threshold) - :return: The calculated threshold for the given sequence length - """ - - # Normalize sequence length to a range [0, 1] - if max_length == min_length: - # Ensure no division by zero - normalized_length = 0 - else: - normalized_length = (sequence_length - max_length) / (min_length - max_length) - - threshold = normalized_length * (max_threshold - default_threshold) + default_threshold - - # Ensure the threshold does not exceed the bounds - threshold = min(max(threshold, default_threshold), max_threshold) - - return threshold - def process_logits_k_mers(pairs, model, lang_code, block_size, batch_size, verbose=True) -> List[np.ndarray]: logits_list = [] @@ -144,55 +108,9 @@ def process_logits_k_mers(pairs, model, lang_code, block_size, batch_size, verbo return logits_list, n_tokens_list -def generate_pairs( - sentences: List[str], - do_lowercase: bool, - do_remove_punct: bool, - sample_pct: float = 1, - max_n_samples: int = sys.maxsize, - min_k_mer_length: int = 0, -) -> List[Tuple[str, str]]: - """Generate sentence pairs from a list of sentences. - - Args: - sentences (List[str]): Input list of sentences. - sample_pct (float): Percentage of pairs to sample. - max_n_samples (int): Maximum number of pairs to sample. - min_k_mer_length (int): Minimum length of a sentence pair. - do_lowercase (bool): Whether to lowercase the sentences. - do_remove_punct (bool): Whether to remove punctuation from the sentences. - - Returns: - List[Tuple[str, str]]: List of sentence pairs. - """ - random.seed(42) - n_pairs = len(sentences) // 2 - sample_size = min(round(n_pairs * sample_pct), max_n_samples) - - # If we need to sample a subset of all possible pairs, do so efficiently - if sample_size < n_pairs: - sampled_indices = set(random.sample(range(n_pairs), sample_size)) - all_pairs = [ - (sentences[2 * i], sentences[2 * i + 1]) - for i in sampled_indices - if len(sentences[2 * i]) + len(sentences[2 * i + 1]) > min_k_mer_length - ] - else: - # Generate all pairs that meet the min_k_mer_length criterion - all_pairs = [ - (sentences[i], sentences[i + 1]) - for i in range(0, len(sentences) - 1, 2) - if len(sentences[i]) + len(sentences[i + 1]) > min_k_mer_length - ] - - return all_pairs - - def generate_k_mers( sentences: List[str], k: int, - do_lowercase: bool, - do_remove_punct: bool, sample_pct: float = 1, max_n_samples: int = sys.maxsize, min_k_mer_length: int = 0, @@ -205,8 +123,6 @@ def generate_k_mers( sample_pct (float): Percentage of k-mers to sample. max_n_samples (int): Maximum number of k-mers to sample. min_k_mer_length (int): Minimum length of a k-mer. - do_lowercase (bool): Whether to lowercase the sentences. - do_remove_punct (bool): Whether to remove punctuation from the sentences. Returns: List[Tuple[str, ...]]: List of k-mers. @@ -215,7 +131,7 @@ def generate_k_mers( n_k_mers = len(sentences) // k sample_size = min(round(n_k_mers * sample_pct), max_n_samples) - # Efficient sampling of a subset of all possible k-mers if needed + # sample if needed if sample_size < n_k_mers: sampled_indices = set(random.sample(range(n_k_mers), sample_size)) all_k_mers = [ @@ -224,7 +140,7 @@ def generate_k_mers( if sum(len(sentences[i * k + j]) for j in range(k)) > min_k_mer_length ] else: - # Generate all k-mers that meet the min_k_mer_length criterion + # all all_k_mers = [ tuple(sentences[i + j] for j in range(k)) for i in range(0, len(sentences) - k + 1, k) @@ -240,7 +156,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if not os.path.exists(Constants.CACHE_DIR / "intrinsic_pairwise"): os.makedirs(Constants.CACHE_DIR / "intrinsic_pairwise") - total_test_time = 0 # Initialize total test processing time + total_test_time = 0 start_time = time.time() with h5py.File(logits_path, "a") as f, torch.no_grad(): @@ -264,23 +180,13 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if args.adapter_path: if args.clf_from_scratch: model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) - # elif model.model.classifier.out_features == 2: elif args.model_path == "xlm-roberta-base" or args.model_path == "xlm-roberta-large": # we train XLM-R using our wrapper, needs to be adapted for adapters to be loaded model.model.classifier = torch.nn.Linear( model.model.classifier.in_features, - 1, # FIXME: hardcoded? + 1, ) model.model.__class__.__name__ = "SubwordXLMForTokenClassification" - # if ( - # any(code in lang_code for code in ["ceb", "jv", "mn", "yo"]) - # and "ted2020" not in dataset_name - # ): - # # no ersatz for these either. - # dataset_load_name = "nllb" - # if "corrupted" in dataset_load_name: - # dataset_load_name += "-corrupted" - # else: dataset_load_name = dataset_name model.model.load_adapter( args.adapter_path + "/" + dataset_load_name + "/" + lang_code, @@ -288,14 +194,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st with_head=True, load_as="text", ) - if hasattr(model.model.config, "unfreeze_ln"): - if model.model.config.unfreeze_ln: - ln_dict = torch.load( - args.adapter_path + "/" + dataset_name + "/" + lang_code + "/ln_dict.pth" - ) - for n, p in model.backbone.named_parameters(): - if "LayerNorm" in n: - p.data = ln_dict[n].data except Exception as e: print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue @@ -314,14 +212,12 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st all_pairs_test = generate_k_mers( test_sentences, k=args.k, - do_lowercase=args.do_lowercase, - do_remove_punct=args.do_remove_punct, sample_pct=args.sample_pct, max_n_samples=args.max_n_samples, min_k_mer_length=args.min_k_mer_length, ) - start_time = time.time() # Start timing for test logits processing + start_time = time.time() test_logits, test_n_logits = process_logits_k_mers( all_pairs_test, model, @@ -339,7 +235,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st test_logit_lengths.append((all_logit_lengths[i], all_logit_lengths[i + 1] - 1)) test_logits = np.concatenate(test_logits) - total_test_time += end_time - start_time # Accumulate test processing time + total_test_time += end_time - start_time # get_labels returns 2nd label at end of seq, which we do not want. # label is at position -2 --> remove and add back 0 to end of sequence @@ -362,8 +258,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st all_pairs_train = generate_k_mers( train_sentences, k=args.k, - do_lowercase=args.do_lowercase, - do_remove_punct=args.do_remove_punct, sample_pct=args.sample_pct, max_n_samples=args.max_n_samples, min_k_mer_length=args.min_k_mer_length, @@ -394,11 +288,6 @@ def main(args): save_model_path = args.adapter_path save_str = f"{save_model_path.replace('/','_')}_b{args.block_size}_k{args.k}{args.save_suffix}" - if args.do_lowercase: - save_str += "_lc" - if args.do_remove_punct: - save_str += "_rmp" - print(save_str) eval_data = torch.load(args.eval_data_path) if "canine" in args.model_path and not "no-adapters" in args.model_path: @@ -417,25 +306,17 @@ def main(args): adapters.init(model.model) # reset model type (used later) model.model.config.model_type = model_type - if "meta-clf" in args.adapter_path: - clf = model.model.classifier - model.model.classifier = torch.nn.Sequential(clf, torch.nn.Linear(clf.out_features, 1)) # first, logits for everything. f, total_test_time = load_or_compute_logits(args, model, eval_data, valid_data, save_str) save_str += f"_u{args.threshold}" - if args.adjust_threshold: - save_str += ( - f"_adj_{args.threshold_increase_type}_{args.threshold_min_length}_{args.threshold_max_length}" - f"_{args.threshold}_{args.threshold_max}" - ) # now, compute the intrinsic scores. results = {} clfs = {} if args.return_indices: indices = {} - # Initialize lists to store scores for each metric across all languages + # lists to store scores for each metric across *all* languages u_scores, t_scores, punct_scores = [], [], [] u_accs, t_accs, punct_accs = [], [], [] thresholds_t, thresholds_adj = [], [] @@ -459,8 +340,6 @@ def main(args): sent_k_mers = generate_k_mers( sentences, k=args.k, - do_lowercase=args.do_lowercase, - do_remove_punct=args.do_remove_punct, sample_pct=args.sample_pct, max_n_samples=args.max_n_samples, min_k_mer_length=args.min_k_mer_length, @@ -485,7 +364,7 @@ def main(args): score_t = [] score_punct = [] - # acc: average of correct 100% pairwise segmentation + # acc: average of correct 100% pairwise (or: k-mer) segmentation acc_t = [] acc_punct = [] @@ -523,19 +402,7 @@ def main(args): length = [] for i, k_mer in enumerate(sent_k_mers): start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] - if args.adjust_threshold: - seq_len = f[lang_code][dataset_name]["test_n_logits"][i] - threshold_adjusted = calculate_threshold( - sequence_length=seq_len, - max_length=args.threshold_max_length, - min_length=args.threshold_min_length, - max_threshold=args.threshold_max, - default_threshold=args.threshold, - ) - clf[-1] = threshold_adjusted - thresholds.append(threshold_adjusted) - else: - thresholds.append(args.threshold) + thresholds.append(args.threshold) single_score_u, _, info, cur_u_indices, _ = evaluate_mixture( lang_code, f[lang_code][dataset_name]["test_logits"][:][start:end], @@ -560,7 +427,6 @@ def main(args): acc_punct = np.mean(acc_punct) if score_punct else None threshold = np.mean(thresholds) - results[lang_code][dataset_name] = { "u": score_u, "t": score_t, diff --git a/wtpsplit/evaluation/intrinsic_ted.py b/wtpsplit/evaluation/intrinsic_ted.py index f8fc872b..8ada2671 100644 --- a/wtpsplit/evaluation/intrinsic_ted.py +++ b/wtpsplit/evaluation/intrinsic_ted.py @@ -8,6 +8,7 @@ import h5py import numpy as np +import spacy_alignments as tokenizations import torch from datasets import load_dataset from tqdm.auto import tqdm @@ -16,7 +17,7 @@ import adapters import wtpsplit.models # noqa: F401 from wtpsplit.evaluation import get_labels, train_mixture -from wtpsplit.evaluation.evaluate_sepp_nlg_2021_subtask1 import evaluate_subtask1 +from wtpsplit.evaluation.evaluate_sepp_nlg_subtask1 import evaluate_subtask1 from wtpsplit.evaluation.intrinsic import process_logits from wtpsplit.extract import PyTorchWrapper, extract from wtpsplit.utils import Constants, sigmoid @@ -24,8 +25,6 @@ logger = logging.getLogger() logger.setLevel(logging.INFO) -import spacy_alignments as tokenizations - def get_token_labels(a, b, a_labels): a2b, b2a = tokenizations.get_alignments(a, b) @@ -75,7 +74,6 @@ class Args: batch_size: int = 32 include_langs: List[str] = None include_splits: List[str] = None - custom_language_list: str = None threshold: float = 0.025 max_n_train_sentences: int = 100 max_n_test_sentences: int = sys.maxsize @@ -86,11 +84,11 @@ class Args: def process_logits_and_tokens(text, model, lang_code, args): - # variation of process_logits for word-based evals, returning tokens as well. + # variation of process_logits used in intrinsic.py for word-based evals, returning tokens as well. if isinstance(text, list): logits = [] tokens = [] - for short_seq in tqdm(text, desc="Short sequences", disable=False): + for short_seq in tqdm(text, desc="Evaluating...", disable=False): current_logits, current_offsets_mapping, tokenizer = extract( [short_seq], model, @@ -120,12 +118,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if not os.path.exists(Constants.CACHE_DIR / "ted2020"): os.makedirs(Constants.CACHE_DIR / "ted2020") - if args.custom_language_list is not None: - with open(args.custom_language_list, "r") as f: - # file is a csv: l1,l2,... - use_langs = f.read().strip().split(",") - else: - use_langs = eval_data.keys() + use_langs = eval_data.keys() total_test_time = 0 # Initialize total test processing time @@ -138,7 +131,6 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if args.include_langs is not None and lang_code not in args.include_langs: continue - # print(f"Processing {lang_code}...") if lang_code not in f: lang_group = f.create_group(lang_code) else: @@ -152,6 +144,7 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st if args.adapter_path: if args.clf_from_scratch: model.model.classifier = torch.nn.Linear(model.model.classifier.in_features, 1) + # we trained adapters on "train" split but uniformly save as "surprise_test" model.model.load_adapter( args.adapter_path + "/" + "surprise_test" + "/" + lang_code, set_active=True, @@ -164,14 +157,12 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st model_path = os.path.join(args.model_path, dataset_name, "en") if not os.path.exists(model_path): model_path = args.model_path - # print(model_path) model = PyTorchWrapper( AutoModelForTokenClassification.from_pretrained(model_path).to(args.device) ) except Exception as e: print(f"Error loading adapter for {dataset_name} in {lang_code}: {e}") continue - # print(dataset_name) if dataset_name not in lang_group: dset_group = lang_group.create_group(dataset_name) else: @@ -187,10 +178,10 @@ def load_or_compute_logits(args, model, eval_data, valid_data=None, save_str: st else: raise NotImplementedError - start_time = time.time() # Start timing for test logits processing + start_time = time.time() test_logits, test_tokens = process_logits_and_tokens(test_text, model, lang_code, args) - end_time = time.time() # End timing for test logits processing - total_test_time += end_time - start_time # Accumulate test processing time + end_time = time.time() + total_test_time += end_time - start_time if isinstance(test_sentences[0], list): test_logit_lengths = [] # store start and end indices for each pair, used later to slice the logits @@ -237,7 +228,7 @@ def compute_statistics(values): if not values: # Check for empty values list return {"mean": None, "median": None, "std": None, "min": None, "min_lang": None, "max": None, "max_lang": None} - scores, langs = zip(*values) # Unpack scores and languages + scores, langs = zip(*values) min_index = np.argmin(scores) max_index = np.argmax(scores) return { @@ -283,9 +274,6 @@ def main(args): adapters.init(model.model) # reset model type (used later) model.model.config.model_type = model_type - if "meta-clf" in args.adapter_path: - clf = model.model.classifier - model.model.classifier = torch.nn.Sequential(clf, torch.nn.Linear(clf.out_features, 1)) save_str += f"{args.save_suffix}" if args.max_n_test_sentences < sys.maxsize: @@ -362,12 +350,12 @@ def main(args): else: t_preds = None if not args.skip_adaptation and not args.skip_punct: - # TODO: punct, T on tokens, too? punct_preds = clfs[lang_code][0].predict_proba(current_logits)[:, 1] > clf[2] else: punct_preds = None # write to tsv as per the challenge reqs + # can then be evaluated via evaluate_sepp_nlg_subtask1.py for supervision, preds in zip(["u", "t", "punct"], [u_preds, t_preds, punct_preds]): if preds is None: continue diff --git a/wtpsplit/evaluation/kmer_optuna.py b/wtpsplit/evaluation/kmer_optuna.py deleted file mode 100644 index 17159c74..00000000 --- a/wtpsplit/evaluation/kmer_optuna.py +++ /dev/null @@ -1,245 +0,0 @@ -import copy -import logging -import sys -from dataclasses import dataclass -from datetime import datetime -from multiprocessing import Process -from typing import List - -import numpy as np -import optuna -import torch -from tqdm import tqdm -from transformers import AutoModelForTokenClassification, HfArgumentParser - -import wtpsplit.models # noqa: F401 -from wtpsplit.evaluation import evaluate_mixture -from wtpsplit.evaluation.intrinsic import compute_statistics -from wtpsplit.evaluation.intrinsic_pairwise import calculate_threshold, generate_k_mers, load_or_compute_logits -from wtpsplit.extract import PyTorchWrapper - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - - -@dataclass -class Args: - model_path: str - adapter_path: str = None - # eval data in the format: - # { - # "": { - # "sentence": { - # "": { - # "meta": { - # "train_data": ["train sentence 1", "train sentence 2"] - # }, - # "data": ["test sentence 1", "test sentence 2"] - # } - # } - # } - # } - eval_data_path: str = "data/eval.pth" - valid_text_path: str = None # "data/sentence/valid.parquet" - device: str = "cpu" - block_size: int = 512 - batch_size: int = 128 - include_langs: List[str] = None - threshold: float = 0.01 - max_n_train_sentences: int = 10_000 - save_suffix: str = "" - do_lowercase: bool = False - do_remove_punct: bool = False - skip_adaptation: bool = True - keep_logits: bool = True - - # k_mer-specific args - min_k: int = 2 - max_k: int = 4 - max_n_samples: int = sys.maxsize - sample_pct: float = 0.5 - min_k_mer_length: int = 0 - adjust_threshold: bool = True - # threshold - # threshold_increase_type: str = "linear" - threshold_min_length: int = 0 - threshold_max_length: int = 256 - threshold_max: float = 0.1 - # optuna args - n_trials: int = 16 - n_jobs: int = 32 - - -def objective(trial: optuna.Trial, args: Args, eval_data: dict, f_list) -> float: - # Suggest values for the hyperparameters we want to optimize - args.threshold_min_length = trial.suggest_int("threshold_min_length", 0, 256) - args.threshold_max_length = trial.suggest_int("threshold_max_length", 0, 256) - args.threshold_max = trial.suggest_float("threshold_max", 0.00, 0.5) - - # Execute the main function and retrieve results - all_results = [] - all_results_avg = [] - all_mean_u_acc = [] - for i, k in enumerate(range(args.min_k, args.max_k + 1)): - args.k = k - f = f_list[i] - results, results_avg = main(args, eval_data, f) - all_results.append(results) - all_results_avg.append(results_avg) - all_mean_u_acc.append(results_avg["u_acc"]["mean"]) - - # Store results in the trial's user attributes - trial.set_user_attr(f"{k}_detailed_results", results) - trial.set_user_attr(f"{k}_average_results", results_avg) - - # Objective is to maximize the average U accuracy - # return list as tuple - return tuple(all_mean_u_acc) - - -def load_data_and_model(args): - logger.info("Loading model...") - model = PyTorchWrapper(AutoModelForTokenClassification.from_pretrained(args.model_path).to(args.device)) - - logger.info("Loading evaluation data...") - eval_data = torch.load(args.eval_data_path) - - # Possibly other initialization code here - return model, eval_data - - -def main(args, eval_data, f): - # now, compute the intrinsic scores. - results = {} - clfs = {} - # Initialize lists to store scores for each metric across all languages - u_scores = [] - u_accs = [] - thresholds_adj = [] - - for lang_code, dsets in tqdm(eval_data.items(), desc="Languages", total=len(eval_data), disable=True): - if args.include_langs is not None and lang_code not in args.include_langs: - continue - - results[lang_code] = {} - clfs[lang_code] = {} - - for dataset_name, dataset in dsets["sentence"].items(): - sentences = dataset["data"] - sent_k_mers = generate_k_mers( - sentences, - k=args.k, - do_lowercase=args.do_lowercase, - do_remove_punct=args.do_remove_punct, - sample_pct=args.sample_pct, - max_n_samples=args.max_n_samples, - min_k_mer_length=args.min_k_mer_length, - ) - - clf = [None, None, None, args.threshold] - - score_u = [] - acc_u = [] - thresholds = [] - for i, k_mer in enumerate(sent_k_mers): - start, end = f[lang_code][dataset_name]["test_logit_lengths"][i] - if args.adjust_threshold: - seq_len = f[lang_code][dataset_name]["test_n_logits"][i] - threshold_adjusted = calculate_threshold( - sequence_length=seq_len, - max_length=args.threshold_max_length, - min_length=args.threshold_min_length, - max_threshold=args.threshold_max, - default_threshold=args.threshold, - ) - clf[-1] = threshold_adjusted - thresholds.append(threshold_adjusted) - else: - raise NotImplementedError("Optuna runs are to select the optimal threshold config!") - single_score_u, _, info = evaluate_mixture( - lang_code, - f[lang_code][dataset_name]["test_logits"][:][start:end], - list(k_mer), - *clf, - ) - score_u.append(single_score_u) - acc_u.append(info["info_newline"]["correct_pairwise"]) - - score_u = np.mean(score_u) - acc_u = np.mean(acc_u) - threshold = np.mean(thresholds) - - results[lang_code][dataset_name] = { - "u": score_u, - "u_acc": acc_u, - "threshold_adj": threshold, - } - - u_scores.append((score_u, lang_code)) - u_accs.append((acc_u, lang_code)) - thresholds_adj.append((threshold, lang_code)) - - # Compute statistics for each metric across all languages - results_avg = { - "u": compute_statistics(u_scores), - "u_acc": compute_statistics(u_accs), - "threshold_adj": compute_statistics(thresholds_adj), - "include_langs": args.include_langs, - } - - return results, results_avg - - -def run_optimization(storage_url, study_name, args, eval_data, f_list): - """ - Function to run Optuna optimization in a separate process. - """ - study = optuna.load_study(study_name=study_name, storage=storage_url) - study.optimize( - lambda trial: objective(trial, copy.deepcopy(args), eval_data, f_list), - n_trials=args.n_trials, - show_progress_bar=True, - ) - - print(f"Completed optimization for study: {study_name}") - - -if __name__ == "__main__": - (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() - - model, eval_data = load_data_and_model(args) - - # first, logits for everything. - f_list = [] - for k in range(args.min_k, args.max_k + 1): - args.k = k - save_str = f"{args.model_path.replace('/','_')}_b{args.block_size}_u{args.threshold}_k_{k}{args.save_suffix}" - print(save_str) - out, _ = load_or_compute_logits(args, model, eval_data, None, save_str) - f_list.append(out) - - # replace k_[max_k] with k_mink-max_k in save_str - save_str = save_str.replace(f"k_{args.max_k}", f"k_{args.min_k}-{args.max_k}") - - # storage using SQLite URL - storage_url = "mysql://root@localhost/example" - study_name = f"{save_str}_{datetime.now().strftime('%Y%m%d%H%M%S')}" - - study = optuna.create_study( - study_name=study_name, - storage=storage_url, - directions=["maximize"] * (args.max_k - args.min_k + 1), - load_if_exists=True, - ) - - # Create multiple studies and launch them in separate processes - processes = [] - for i in range(args.n_jobs): - proc = Process(target=run_optimization, args=(storage_url, study_name, args, eval_data, f_list)) - processes.append(proc) - proc.start() - - # Wait for all processes to complete - for proc in processes: - proc.join() - diff --git a/wtpsplit/evaluation/law_bert.py b/wtpsplit/evaluation/legal_baselines.py similarity index 95% rename from wtpsplit/evaluation/law_bert.py rename to wtpsplit/evaluation/legal_baselines.py index a3efc9c9..d1d9382d 100644 --- a/wtpsplit/evaluation/law_bert.py +++ b/wtpsplit/evaluation/legal_baselines.py @@ -58,15 +58,14 @@ def get_law_preds(texts, model, model_name, args) -> List[List[int]]: def load_or_compute_logits(args, eval_data, save_str: str = None): logits_path = Constants.CACHE_DIR / "law_bert" / f"{save_str}.h5" - base_name = "rcds/distilbert-SBD" + base_name = "rcds/distilbert-SBD" # take from HF hub if not os.path.exists(Constants.CACHE_DIR / "law_bert"): os.makedirs(Constants.CACHE_DIR / "law_bert") use_langs = ["fr", "es", "it", "en", "de", "pt"] - # law eval data is only one with _ - total_test_time = 0 # Initialize total test processing time + total_test_time = 0 with h5py.File(logits_path, "a") as f, torch.no_grad(): for lang_code in tqdm(use_langs, desc="Languages"): @@ -79,13 +78,14 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): # eval data for dataset_name, dataset in tqdm(eval_data[lang_code]["sentence"].items(), desc=lang_code): - if not "legal" in dataset_name: + if "legal" not in dataset_name: continue if "legal" in dataset_name and not ("laws" in dataset_name or "judgements" in dataset_name): continue if "social-media" in dataset_name: continue current_name = base_name + # map to correct model if args.lang_support == "multi": current_name += "-fr-es-it-en-de" elif args.lang_support == "mono": @@ -129,10 +129,10 @@ def load_or_compute_logits(args, eval_data, save_str: str = None): else: raise NotImplementedError - start_time = time.time() # Start timing for test logits processing + start_time = time.time() test_logits = get_law_preds(test_text, model, current_name, args) - end_time = time.time() # End timing for test logits processing - total_test_time += end_time - start_time # Accumulate test processing time + end_time = time.time() + total_test_time += end_time - start_time if isinstance(test_sentences[0], list): test_logit_lengths = [] # store start and end indices for each pair, used later to slice the logits @@ -182,12 +182,12 @@ def main(args): # first, logits for everything. f, total_test_time = load_or_compute_logits(args, eval_data, save_str) - # now, compute the law_bert scores. + # now, compute scores. results = {} clfs = {} if args.return_indices: indices = {} - # Initialize lists to store scores for each metric across all languages + u_scores = [] for lang_code, dsets in tqdm(eval_data.items()): diff --git a/wtpsplit/evaluation/time_intrinsic.py b/wtpsplit/evaluation/time_intrinsic.py deleted file mode 100644 index 0c8a0b89..00000000 --- a/wtpsplit/evaluation/time_intrinsic.py +++ /dev/null @@ -1,78 +0,0 @@ -import argparse -import sys -import pandas as pd -import math -from multiprocessing import Process, Queue -import intrinsic - - -def run_intrinsic_with_stride(stride, args, results_queue): - modified_args = argparse.Namespace(**vars(args)) - modified_args.stride = stride - results, results_avg, total_test_time = intrinsic.main(modified_args) # Capture results - results_queue.put((stride, results, results_avg, total_test_time)) - - -def benchmark_strides(low_stride, high_stride, args): - stride_values = [2**i for i in range(int(math.log2(low_stride)), int(math.log2(high_stride)) + 1)] - results_data = [] - - for stride in stride_values: - results_queue = Queue() - p = Process(target=run_intrinsic_with_stride, args=(stride, args, results_queue)) - p.start() - p.join() - - # intrinsic.main() returns a tuple of (results, results_avg, total_test_timee) - stride, stride_results, stride_results_avg, total_test_time = results_queue.get() - - results_data.append( - { - "stride": stride, - "block_size": args.block_size, - "batch_size": args.batch_size, - "execution_time": total_test_time, - "results": stride_results, - "results_avg": stride_results_avg, - "threshold": args.threshold, - "include_langs": args.include_langs, - "max_n_train_sentences": args.max_n_train_sentences, - } - ) - print(results_data) - - return pd.DataFrame(results_data) - - -if __name__ == "__main__": - # Extract low_stride and high_stride values - stride_args = ["--low_stride", "--high_stride"] - strides = {} - - # Iterate over stride_args to extract and remove them from sys.argv - for stride_arg in stride_args: - if stride_arg in sys.argv: - index = sys.argv.index(stride_arg) - try: - strides[stride_arg] = int(sys.argv[index + 1]) - # Remove the stride argument and its value - del sys.argv[index : index + 2] - except (IndexError, ValueError): - raise ValueError(f"Invalid or missing value for {stride_arg}.") - - if "--low_stride" not in strides or "--high_stride" not in strides: - raise ValueError("Both --low_stride and --high_stride must be provided.") - - low_stride = strides["--low_stride"] - high_stride = strides["--high_stride"] - - # Remaining arguments are passed to intrinsic.Args - args = intrinsic.HfArgumentParser(intrinsic.Args).parse_args_into_dataclasses()[0] - - df_results = benchmark_strides(low_stride, high_stride, args) - print(df_results) - # Optionally save df_results to a file - # to csv - df_results.to_csv( - f"timing_results_{args.model_path.replace('/','__')}_batch{args.batch_size}_b{args.block_size}+s{args.stride}_n{args.max_n_train_sentences}_u{args.threshold}_AVG.csv" - ) diff --git a/wtpsplit/tokenization_utils.py b/wtpsplit/tokenization_utils.py deleted file mode 100644 index cab53dcf..00000000 --- a/wtpsplit/tokenization_utils.py +++ /dev/null @@ -1,104 +0,0 @@ -import numpy as np -from wtpsplit.utils import Constants - - -def tokenize_and_get_labels(sentences, tokenizer, separator, lang_code): - joined_sentence = "" - sentence_start_positions = [] - current_position = 0 - - for sentence in sentences: - if joined_sentence: - joined_sentence += separator - current_position += len(separator) - start_position = current_position - joined_sentence += sentence - current_position += len(sentence) - sentence_start_positions.append(start_position + len(sentence) - 1) - - tokenized_input = tokenizer( - joined_sentence, - return_offsets_mapping=True, - add_special_tokens=False, - truncation=False, - verbose=False, - padding=False, - ) - - tokens = tokenized_input.tokens() - offsets = tokenized_input["offset_mapping"] - sentence_ending_labels = [0] * len(tokens) - - sentence_index = 0 - for i, (token_start, token_end) in enumerate(offsets): - if token_start > sentence_start_positions[sentence_index]: - sentence_ending_labels[i - 1] = 1 - sentence_index += 1 - # if any(start < token_end for start in sentence_start_positions if start >= token_start): - # print(tokens[i - 2 : i + 3]) - - # assert sum(sentence_ending_labels) == len(sentence_start_positions) - - return tokenized_input["input_ids"], sentence_ending_labels - - -def pack_sentences(examples, block_size, tokenizer, underflow_size=0, min_sentence_length=10): - all_input_blocks = [] - all_label_blocks = [] - all_langs = [] - - # group by langs first - lang_grouped_examples = {lang: [] for lang in set(examples["lang"])} - for sentence, lang in zip(examples["text"], examples["lang"]): - lang_grouped_examples[lang].append(sentence.strip("\n")) - - for current_lang, sentences in lang_grouped_examples.items(): - separator = Constants.SEPARATORS.get(current_lang, " ") - token_count, one_block_sentences = 0, [] - - # tokenization mapping gets problematic in such instances - sentences = [sentence.replace("\ufffd", "").strip() for sentence in sentences] - sentences = [sentence for sentence in sentences if len(sentence) > min_sentence_length] - if not sentences: - continue - - # batch tokenize sentences - tokenized_sentences = tokenizer(sentences, add_special_tokens=False, verbose=False, padding=False) - input_ids_list = tokenized_sentences["input_ids"] - - for sentence, input_ids in zip(sentences, input_ids_list): - if not sentence or sentence.isnumeric(): - continue - num_sentence_tokens = len(input_ids) - - # check if block limit is exceeded - if token_count > block_size - underflow_size: - # limit exceeded, process the current block - if one_block_sentences: - input_ids, labels = tokenize_and_get_labels(one_block_sentences, tokenizer, separator, current_lang) - all_input_blocks.append(input_ids) - all_label_blocks.append(labels) - all_langs.append(current_lang) - # reset - token_count, one_block_sentences = 0, [] - - # add sentence to block - one_block_sentences.append(sentence) - token_count += num_sentence_tokens - - # ensure last batch of sentences is processed - if one_block_sentences: - input_ids, labels = tokenize_and_get_labels(one_block_sentences, tokenizer, separator, current_lang) - all_input_blocks.append(input_ids) - all_label_blocks.append(labels) - all_langs.append(current_lang) - - # only return label indices, ie == 1 --> save memory - all_label_blocks = [[i for i, label in enumerate(labels) if label == 1] for labels in all_label_blocks] - - # TODO: in addition, truncate blocks here already? (storage reasons) - return { - "input_ids": all_input_blocks, - "labels": all_label_blocks, - "lang": all_langs, - } diff --git a/wtpsplit/train/adapter_utils.py b/wtpsplit/train/adapter_utils.py deleted file mode 100644 index 2f2e5d0b..00000000 --- a/wtpsplit/train/adapter_utils.py +++ /dev/null @@ -1,117 +0,0 @@ -from transformers import TrainingArguments -from transformers.training_args import ParallelMode -from transformers.utils import ( - is_sagemaker_dp_enabled, - is_sagemaker_mp_enabled, - is_torch_available, - is_torch_tpu_available, - requires_backends, -) -import numbers -import os - - -from transformers.utils import logging -from transformers.integrations import ( - rewrite_logs, - WandbCallback, - AzureMLCallback, - CometCallback, - MLflowCallback, - NeptuneCallback, - TensorBoardCallback, - CodeCarbonCallback, - ClearMLCallback, - DagsHubCallback, -) - -logger = logging.get_logger(__name__) -if is_torch_available(): - import torch - import torch.distributed as dist - -if is_sagemaker_mp_enabled(): - import smp.distributed.modelparallel.torch as smp - - smp.init() - - -class ParallelTPUAdapterTrainingArguments(TrainingArguments): - """ - Subclass of `TrainingArguments`, specific to training on TPU VMs in parallel using different data. - (Different optimization on different TPU cores, different data on different TPU cores, etc.) - """ - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - @property - def world_size(self): - """ - The number of processes used in parallel. - """ - requires_backends(self, ["torch"]) - - if is_torch_tpu_available(): - # MODIFIED: otherwise, Trainer only logs on main (0) process, and DataLoader is of distributed type - return 1 - elif is_sagemaker_mp_enabled(): - return smp.dp_size() if not smp.state.cfg.prescaled_batch else smp.rdp_size() - elif is_sagemaker_dp_enabled(): - return dist.get_world_size() - elif self.parallel_mode == ParallelMode.DISTRIBUTED: - return torch.distributed.get_world_size() - return 1 - - -class ParallelTPUWandbCallback(WandbCallback): - """ - A [`TrainerCallback`] that logs metrics, media, model checkpoints to [Weight and Biases](https://www.wandb.com/). - """ - - def __init__(self): - super().__init__() - - def on_log(self, args, state, control, model=None, logs=None, **kwargs): - if self._wandb is None: - return - if not self._initialized: - self.setup(args, state, model) - # MODIFIED: log on all processes - # if state.is_world_process_zero: - logs = rewrite_logs(logs) - self._wandb.log({**logs, "train/global_step": state.global_step}) - - def on_save(self, args, state, control, **kwargs): - # MODIFIED: save on all - if self._log_model == "checkpoint" and self._initialized: - checkpoint_metadata = { - k: v - for k, v in dict(self._wandb.summary).items() - if isinstance(v, numbers.Number) and not k.startswith("_") - } - - ckpt_dir = f"checkpoint-{state.global_step}" - artifact_path = os.path.join(args.output_dir, ckpt_dir) - logger.info(f"Logging checkpoint artifacts in {ckpt_dir}. ...") - checkpoint_name = ( - f"checkpoint-{self._wandb.run.id}" - if (args.run_name is None or args.run_name == args.output_dir) - else f"checkpoint-{self._wandb.run.name}" - ) - artifact = self._wandb.Artifact(name=checkpoint_name, type="model", metadata=checkpoint_metadata) - artifact.add_dir(artifact_path) - self._wandb.log_artifact(artifact, aliases=[f"checkpoint-{state.global_step}"]) - - -INTEGRATION_TO_CALLBACK = { - "azure_ml": AzureMLCallback, - "comet_ml": CometCallback, - "mlflow": MLflowCallback, - "neptune": NeptuneCallback, - "tensorboard": TensorBoardCallback, - "wandb": ParallelTPUWandbCallback, - "codecarbon": CodeCarbonCallback, - "clearml": ClearMLCallback, - "dagshub": DagsHubCallback, -} \ No newline at end of file diff --git a/wtpsplit/train/adaptertrainer.py b/wtpsplit/train/adaptertrainer.py index 9725e4df..36883761 100644 --- a/wtpsplit/train/adaptertrainer.py +++ b/wtpsplit/train/adaptertrainer.py @@ -1,23 +1,9 @@ -import math import os -import shutil -import sys -import time from typing import Dict import numpy as np import torch from torch import nn -from tqdm.auto import tqdm - -# Integrations must be imported before ML frameworks: - -# isort: off -from transformers.integrations import ( - hp_params, -) - -# isort: on from transformers import PreTrainedModel from transformers.modeling_utils import unwrap_model @@ -40,7 +26,6 @@ nested_numpify, nested_truncate, ) -from transformers.trainer_utils import TrainOutput, speed_metrics from wtpsplit.train.utils import Model @@ -52,31 +37,21 @@ import re from typing import Callable, Tuple, Union -import torch.distributed as dist from packaging import version -from torch.utils.data import Dataset, RandomSampler -from torch.utils.data.distributed import DistributedSampler +from torch.utils.data import Dataset from transformers import Trainer, __version__ from transformers.configuration_utils import PretrainedConfig from transformers.data.data_collator import DataCollator -from transformers.debug_utils import DebugOption, DebugUnderflowOverflow -from transformers.pytorch_utils import is_torch_less_than_1_11 from transformers.tokenization_utils_base import PreTrainedTokenizerBase -from transformers.trainer import TRAINER_STATE_NAME from transformers.trainer_callback import ( TrainerCallback, TrainerControl, TrainerState, ) -from transformers.trainer_pt_utils import ( - get_model_param_count, -) from transformers.trainer_utils import ( EvalPrediction, - HPSearchBackend, - ShardedDDPOption, ) -from transformers.training_args import ParallelMode, TrainingArguments +from transformers.training_args import TrainingArguments from transformers.utils import ( CONFIG_NAME, is_accelerate_available, @@ -88,7 +63,7 @@ from adapters.composition import AdapterCompositionBlock, Fuse if is_apex_available(): - from apex import amp + pass if is_sagemaker_mp_enabled(): import smdistributed.modelparallel.torch as smp @@ -98,7 +73,7 @@ from accelerate import __version__ as accelerate_version if version.parse(accelerate_version) >= version.parse("0.16"): - from accelerate import skip_first_batches + pass logger = logging.get_logger(__name__) @@ -306,491 +281,6 @@ def _load_best_model(self): model.load_adapter_fusion(fusion_dir) model.to(self.args.device) - # def _inner_training_loop( - # self, batch_size=None, args=None, resume_from_checkpoint=None, trial=None, ignore_keys_for_eval=None - # ): - # self._train_batch_size = batch_size - # # Data loader and number of training steps - # train_dataloader = self.get_train_dataloader() - - # # Setting up training control variables: - # # number of training epochs: num_train_epochs - # # number of training steps per epoch: num_update_steps_per_epoch - # # total number of training steps to execute: max_steps - # total_train_batch_size = args.train_batch_size * args.gradient_accumulation_steps * args.world_size - - # len_dataloader = None - # if has_length(train_dataloader): - # len_dataloader = len(train_dataloader) - # num_update_steps_per_epoch = len_dataloader // args.gradient_accumulation_steps - # num_update_steps_per_epoch = max(num_update_steps_per_epoch, 1) - # num_examples = self.num_examples(train_dataloader) - # if args.max_steps > 0: - # max_steps = args.max_steps - # num_train_epochs = args.max_steps // num_update_steps_per_epoch + int( - # args.max_steps % num_update_steps_per_epoch > 0 - # ) - # # May be slightly incorrect if the last batch in the training dataloader has a smaller size but it's - # # the best we can do. - # num_train_samples = args.max_steps * total_train_batch_size - # else: - # max_steps = math.ceil(args.num_train_epochs * num_update_steps_per_epoch) - # num_train_epochs = math.ceil(args.num_train_epochs) - # num_train_samples = self.num_examples(train_dataloader) * args.num_train_epochs - # elif args.max_steps > 0: # Rely on max_steps when dataloader does not have a working size - # max_steps = args.max_steps - # # Setting a very large number of epochs so we go as many times as necessary over the iterator. - # num_train_epochs = sys.maxsize - # num_update_steps_per_epoch = max_steps - # num_examples = total_train_batch_size * args.max_steps - # num_train_samples = args.max_steps * total_train_batch_size - # else: - # raise ValueError( - # "args.max_steps must be set to a positive value if dataloader does not have a length, was" - # f" {args.max_steps}" - # ) - - # # Compute absolute values for logging, eval, and save if given as ratio - # if args.logging_steps and args.logging_steps < 1: - # args.logging_steps = math.ceil(max_steps * args.logging_steps) - # if args.eval_steps and args.eval_steps < 1: - # args.eval_steps = math.ceil(max_steps * args.eval_steps) - # if args.save_steps and args.save_steps < 1: - # args.save_steps = math.ceil(max_steps * args.save_steps) - - # if DebugOption.UNDERFLOW_OVERFLOW in self.args.debug: - # if self.args.n_gpu > 1: - # # nn.DataParallel(model) replicates the model, creating new variables and module - # # references registered here no longer work on other gpus, breaking the module - # raise ValueError( - # "Currently --debug underflow_overflow is not supported under DP. Please use DDP" - # " (torch.distributed.launch)." - # ) - # else: - # debug_overflow = DebugUnderflowOverflow(self.model) # noqa - - # delay_optimizer_creation = ( - # self.sharded_ddp is not None - # and self.sharded_ddp != ShardedDDPOption.SIMPLE - # or is_sagemaker_mp_enabled() - # or self.fsdp is not None - # ) - # if args.deepspeed: - # deepspeed_engine, optimizer, lr_scheduler = deepspeed_init( - # self, num_training_steps=max_steps, resume_from_checkpoint=resume_from_checkpoint - # ) - # self.model = deepspeed_engine.module - # self.model_wrapped = deepspeed_engine - # self.deepspeed = deepspeed_engine - # self.optimizer = optimizer - # self.lr_scheduler = lr_scheduler - # elif not delay_optimizer_creation: - # self.create_optimizer_and_scheduler(num_training_steps=max_steps) - - # self.state = TrainerState() - # self.state.is_hyper_param_search = trial is not None - - # # Activate gradient checkpointing if needed - # if args.gradient_checkpointing: - # self.model.gradient_checkpointing_enable() - - # model = self._wrap_model(self.model_wrapped) - - # if is_sagemaker_mp_enabled() and resume_from_checkpoint is not None: - # self._load_from_checkpoint(resume_from_checkpoint, model) - - # # for the rest of this function `model` is the outside model, whether it was wrapped or not - # if model is not self.model: - # self.model_wrapped = model - - # if delay_optimizer_creation: - # self.create_optimizer_and_scheduler(num_training_steps=max_steps) - - # # Check if saved optimizer or scheduler states exist - # self._load_optimizer_and_scheduler(resume_from_checkpoint) - - # # important: at this point: - # # self.model is the Transformers Model - # # self.model_wrapped is DDP(Transformers Model), Deepspeed(Transformers Model), etc. - - # # Train! - # # MODIFIED: changed to warn, added device - # logger.warning(f"***** Running training on {xm.get_ordinal()}*****") - # logger.warning(f" Num examples = {num_examples:,}") - # logger.warning(f" Num Epochs = {num_train_epochs:,}") - # logger.info(f" Instantaneous batch size per device = {args.per_device_train_batch_size:,}") - # logger.info(f" Total train batch size (w. parallel, distributed & accumulation) = {total_train_batch_size:,}") - # logger.info(f" Gradient Accumulation steps = {args.gradient_accumulation_steps}") - # logger.warning(f" Total optimization steps = {max_steps:,}") - # logger.warning(f" Eval steps = {args.eval_steps}") - # logger.info(f" Number of trainable parameters = {get_model_param_count(model, trainable_only=True):,}") - - # self.state.epoch = 0 - # start_time = time.time() - # epochs_trained = 0 - # steps_trained_in_current_epoch = 0 - # steps_trained_progress_bar = None - - # # Check if continuing training from a checkpoint - # if resume_from_checkpoint is not None and os.path.isfile( - # os.path.join(resume_from_checkpoint, TRAINER_STATE_NAME) - # ): - # self.state = TrainerState.load_from_json(os.path.join(resume_from_checkpoint, TRAINER_STATE_NAME)) - # epochs_trained = self.state.global_step // num_update_steps_per_epoch - # if not args.ignore_data_skip: - # steps_trained_in_current_epoch = self.state.global_step % (num_update_steps_per_epoch) - # steps_trained_in_current_epoch *= args.gradient_accumulation_steps - # else: - # steps_trained_in_current_epoch = 0 - - # logger.info(" Continuing training from checkpoint, will skip to saved global_step") - # logger.info(f" Continuing training from epoch {epochs_trained}") - # logger.info(f" Continuing training from global step {self.state.global_step}") - # if not args.ignore_data_skip: - # if skip_first_batches is None: - # logger.info( - # f" Will skip the first {epochs_trained} epochs then the first" - # f" {steps_trained_in_current_epoch} batches in the first epoch. If this takes a lot of time," - # " you can install the latest version of Accelerate with `pip install -U accelerate`.You can" - # " also add the `--ignore_data_skip` flag to your launch command, but you will resume the" - # " training on data already seen by your model." - # ) - # else: - # logger.info( - # f" Will skip the first {epochs_trained} epochs then the first" - # f" {steps_trained_in_current_epoch} batches in the first epoch." - # ) - # if self.is_local_process_zero() and not args.disable_tqdm and skip_first_batches is None: - # steps_trained_progress_bar = tqdm(total=steps_trained_in_current_epoch) - # steps_trained_progress_bar.set_description("Skipping the first batches") - - # # Update the references - # self.callback_handler.model = self.model - # self.callback_handler.optimizer = self.optimizer - # self.callback_handler.lr_scheduler = self.lr_scheduler - # self.callback_handler.train_dataloader = train_dataloader - # if self.hp_name is not None and self._trial is not None: - # # use self._trial because the SigOpt/Optuna hpo only call `_hp_search_setup(trial)` instead of passing trial - # # parameter to Train when using DDP. - # self.state.trial_name = self.hp_name(self._trial) - # if trial is not None: - # assignments = trial.assignments if self.hp_search_backend == HPSearchBackend.SIGOPT else trial - # self.state.trial_params = hp_params(assignments) - # else: - # self.state.trial_params = None - # # This should be the same if the state has been saved but in case the training arguments changed, it's safer - # # to set this after the load. - # self.state.max_steps = max_steps - # self.state.num_train_epochs = num_train_epochs - # self.state.is_local_process_zero = self.is_local_process_zero() - # self.state.is_world_process_zero = self.is_world_process_zero() - - # # tr_loss is a tensor to avoid synchronization of TPUs through .item() - # tr_loss = torch.tensor(0.0).to(args.device) - # # _total_loss_scalar is updated everytime .item() has to be called on tr_loss and stores the sum of all losses - # self._total_loss_scalar = 0.0 - # self._globalstep_last_logged = self.state.global_step - # model.zero_grad() - - # self.control = self.callback_handler.on_train_begin(args, self.state, self.control) - - # # Skip the first epochs_trained epochs to get the random state of the dataloader at the right point. - # if not args.ignore_data_skip: - # for epoch in range(epochs_trained): - # is_random_sampler = hasattr(train_dataloader, "sampler") and isinstance( - # train_dataloader.sampler, RandomSampler - # ) - # if is_torch_less_than_1_11 or not is_random_sampler: - # # We just need to begin an iteration to create the randomization of the sampler. - # # That was before PyTorch 1.11 however... - # for _ in train_dataloader: - # break - # else: - # # Otherwise we need to call the whooooole sampler cause there is some random operation added - # # AT THE VERY END! - # _ = list(train_dataloader.sampler) - - # total_batched_samples = 0 - # for epoch in range(epochs_trained, num_train_epochs): - # if isinstance(train_dataloader, DataLoader) and isinstance(train_dataloader.sampler, DistributedSampler): - # train_dataloader.sampler.set_epoch(epoch) - # elif hasattr(train_dataloader, "dataset") and isinstance(train_dataloader.dataset, IterableDatasetShard): - # train_dataloader.dataset.set_epoch(epoch) - - # # if is_torch_tpu_available(): - # # parallel_loader = pl.MpDeviceLoader(train_dataloader, args.device) # .per_device_loader(args.device) - # # epoch_iterator = parallel_loader - # # else: - # # MODIFIED: no parallel loader - # epoch_iterator = train_dataloader - - # # Reset the past mems state at the beginning of each epoch if necessary. - # if args.past_index >= 0: - # self._past = None - - # steps_in_epoch = ( - # len(epoch_iterator) if len_dataloader is not None else args.max_steps * args.gradient_accumulation_steps - # ) - # self.control = self.callback_handler.on_epoch_begin(args, self.state, self.control) - - # if epoch == epochs_trained and resume_from_checkpoint is not None and steps_trained_in_current_epoch == 0: - # self._load_rng_state(resume_from_checkpoint) - - # rng_to_sync = False - # steps_skipped = 0 - # if skip_first_batches is not None and steps_trained_in_current_epoch > 0: - # epoch_iterator = skip_first_batches(epoch_iterator, steps_trained_in_current_epoch) - # steps_skipped = steps_trained_in_current_epoch - # steps_trained_in_current_epoch = 0 - # rng_to_sync = True - - # step = -1 - # for step, inputs in enumerate(epoch_iterator): - # total_batched_samples += 1 - # if rng_to_sync: - # self._load_rng_state(resume_from_checkpoint) - # rng_to_sync = False - - # # Skip past any already trained steps if resuming training - # if steps_trained_in_current_epoch > 0: - # steps_trained_in_current_epoch -= 1 - # if steps_trained_progress_bar is not None: - # steps_trained_progress_bar.update(1) - # if steps_trained_in_current_epoch == 0: - # self._load_rng_state(resume_from_checkpoint) - # continue - # elif steps_trained_progress_bar is not None: - # steps_trained_progress_bar.close() - # steps_trained_progress_bar = None - - # if step % args.gradient_accumulation_steps == 0: - # self.control = self.callback_handler.on_step_begin(args, self.state, self.control) - - # if ( - # (total_batched_samples % args.gradient_accumulation_steps != 0) - # and args.parallel_mode == ParallelMode.DISTRIBUTED - # and args._no_sync_in_gradient_accumulation - # and hasattr(model, "no_sync") - # ): - # # Avoid unnecessary DDP synchronization since there will be no backward pass on this example. - # with model.no_sync(): - # tr_loss_step = self.training_step(model, inputs) - # else: - # tr_loss_step = self.training_step(model, inputs) - - # if ( - # args.logging_nan_inf_filter - # and not is_torch_tpu_available() - # and (torch.isnan(tr_loss_step) or torch.isinf(tr_loss_step)) - # ): - # # if loss is nan or inf simply add the average of previous logged losses - # tr_loss += tr_loss / (1 + self.state.global_step - self._globalstep_last_logged) - # else: - # tr_loss += tr_loss_step - - # self.current_flos += float(self.floating_point_ops(inputs)) - - # # Optimizer step for deepspeed must be called on every step regardless of the value of gradient_accumulation_steps - # if self.deepspeed: - # self.deepspeed.step() - - # if total_batched_samples % args.gradient_accumulation_steps == 0 or ( - # # last step in epoch but step is always smaller than gradient_accumulation_steps - # steps_in_epoch <= args.gradient_accumulation_steps and (step + 1) == steps_in_epoch - # ): - # # Gradient clipping - # if args.max_grad_norm is not None and args.max_grad_norm > 0 and not self.deepspeed: - # # deepspeed does its own clipping - - # if self.do_grad_scaling: - # # Reduce gradients first for XLA - # if is_torch_tpu_available(): - # gradients = xm._fetch_gradients(self.optimizer) - # xm.all_reduce("sum", gradients, scale=1.0 / xm.xrt_world_size()) - # # AMP: gradients need unscaling - # self.scaler.unscale_(self.optimizer) - - # if is_sagemaker_mp_enabled() and args.fp16: - # self.optimizer.clip_master_grads(args.max_grad_norm) - # elif hasattr(self.optimizer, "clip_grad_norm"): - # # Some optimizers (like the sharded optimizer) have a specific way to do gradient clipping - # self.optimizer.clip_grad_norm(args.max_grad_norm) - # elif hasattr(model, "clip_grad_norm_"): - # # Some models (like FullyShardedDDP) have a specific way to do gradient clipping - # model.clip_grad_norm_(args.max_grad_norm) - # else: - # # Revert to normal clipping otherwise, handling Apex or full precision - # nn.utils.clip_grad_norm_( - # amp.master_params(self.optimizer) if self.use_apex else model.parameters(), - # args.max_grad_norm, - # ) - - # # Optimizer step - # optimizer_was_run = True - # if self.deepspeed: - # pass # called outside the loop - # elif is_torch_tpu_available(): - # if self.do_grad_scaling: - # self.scaler.step(self.optimizer) - # self.scaler.update() - # else: - # # xm.optimizer_step(self.optimizer) - # # MODIFIED: Crucial change! Do not aggregate gradients across TPU cores - # self.optimizer.step() - # xm.mark_step() - # elif self.do_grad_scaling: - # scale_before = self.scaler.get_scale() - # self.scaler.step(self.optimizer) - # self.scaler.update() - # scale_after = self.scaler.get_scale() - # optimizer_was_run = scale_before <= scale_after - # else: - # self.optimizer.step() - - # if optimizer_was_run and not self.deepspeed: - # # Delay optimizer scheduling until metrics are generated - # if not isinstance(self.lr_scheduler, torch.optim.lr_scheduler.ReduceLROnPlateau): - # self.lr_scheduler.step() - - # model.zero_grad() - # self.state.global_step += 1 - # self.state.epoch = epoch + (step + 1 + steps_skipped) / steps_in_epoch - # self.control = self.callback_handler.on_step_end(args, self.state, self.control) - - # self._maybe_log_save_evaluate(tr_loss, model, trial, epoch, ignore_keys_for_eval) - # else: - # self.control = self.callback_handler.on_substep_end(args, self.state, self.control) - - # if self.control.should_epoch_stop or self.control.should_training_stop: - # break - # if step < 0: - # logger.warning( - # "There seems to be not a single sample in your epoch_iterator, stopping training at step" - # f" {self.state.global_step}! This is expected if you're using an IterableDataset and set" - # f" num_steps ({max_steps}) higher than the number of available samples." - # ) - # self.control.should_training_stop = True - - # self.control = self.callback_handler.on_epoch_end(args, self.state, self.control) - # self._maybe_log_save_evaluate(tr_loss, model, trial, epoch, ignore_keys_for_eval) - - # if DebugOption.TPU_METRICS_DEBUG in self.args.debug: - # if is_torch_tpu_available(): - # # tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.) - # xm.master_print(met.metrics_report()) - # else: - # logger.warning( - # "You enabled PyTorch/XLA debug metrics but you don't have a TPU " - # "configured. Check your training configuration if this is unexpected." - # ) - # if self.control.should_training_stop: - # break - - # if args.past_index and hasattr(self, "_past"): - # # Clean the state at the end of training - # delattr(self, "_past") - - # logger.info("\n\nTraining completed. Do not forget to share your model on huggingface.co/models =)\n\n") - # if args.load_best_model_at_end and self.state.best_model_checkpoint is not None: - # # Wait for everyone to get here so we are sur the model has been saved by process 0. - # if is_torch_tpu_available(): - # xm.rendezvous("load_best_model_at_end") - # if args.parallel_mode == ParallelMode.DISTRIBUTED: - # dist.barrier() - # elif is_sagemaker_mp_enabled(): - # smp.barrier() - - # self._load_best_model() - - # # add remaining tr_loss - # self._total_loss_scalar += tr_loss.item() - # train_loss = self._total_loss_scalar / self.state.global_step - - # metrics = speed_metrics("train", start_time, num_samples=num_train_samples, num_steps=self.state.max_steps) - # self.store_flos() - # metrics["total_flos"] = self.state.total_flos - # metrics["train_loss"] = train_loss - - # self.is_in_train = False - - # self._memory_tracker.stop_and_update_metrics(metrics) - - # self.log(metrics) - - # run_dir = self._get_output_dir(trial) - # checkpoints_sorted = self._sorted_checkpoints(use_mtime=False, output_dir=run_dir) - - # # Delete the last checkpoint when save_total_limit=1 if it's different from the best checkpoint and process allowed to save. - # if self.args.should_save and self.state.best_model_checkpoint is not None and self.args.save_total_limit == 1: - # for checkpoint in checkpoints_sorted: - # if checkpoint != self.state.best_model_checkpoint: - # logger.info(f"Deleting older checkpoint [{checkpoint}] due to args.save_total_limit") - # shutil.rmtree(checkpoint) - - # self.control = self.callback_handler.on_train_end(args, self.state, self.control) - - # return TrainOutput(self.state.global_step, train_loss, metrics) - - # def _maybe_log_save_evaluate(self, tr_loss, model, trial, epoch, ignore_keys_for_eval): - # if self.control.should_log: - # # MODIFIED: removed --> faster - # # if is_torch_tpu_available(): - # # xm.mark_step() - - # logs: Dict[str, float] = {} - - # # all_gather + mean() to get average loss over all processes - # # tr_loss_scalar = self._nested_gather(tr_loss).mean().item() - # # MODIFIED: no gather since we train independently - # tr_loss_scalar = tr_loss.item() - - # # reset tr_loss to zero - # tr_loss -= tr_loss - - # loss = round(tr_loss_scalar / (self.state.global_step - self._globalstep_last_logged), 4) - # logs[f"{self.logging_prefix}loss"] = loss - # logs["loss"] = loss - - # logs[f"{self.logging_prefix}learning_rate"] = self._get_learning_rate() - # # prepend logging_prefix to epoch - # if self.state.epoch is not None: - # logs[f"{self.logging_prefix}epoch"] = round(self.state.epoch, 2) - # logs[f"{self.logging_prefix}global_step"] = self.state.global_step - - # self._total_loss_scalar += tr_loss_scalar - # self._globalstep_last_logged = self.state.global_step - # self.store_flos() - - # self.log(logs) - - # metrics = None - # if self.control.should_evaluate: - # metrics = self.evaluate(ignore_keys=ignore_keys_for_eval) - # self._report_to_hp_search(trial, self.state.global_step, metrics) - - # if self.control.should_save: - # self._save_checkpoint(model, trial, metrics=metrics) - # self.control = self.callback_handler.on_save(self.args, self.state, self.control) - - # def log(self, logs: Dict[str, float]) -> None: - # """ - # Log `logs` on the various objects watching training. - - # Subclass and override this method to inject custom behavior. - - # Args: - # logs (`Dict[str, float]`): - # The values to log. - # """ - # if self.state.epoch is not None: - # logs["epoch"] = round(self.state.epoch, 2) - - # output = {**logs, **{"step": self.state.global_step}} - # self.state.log_history.append(output) - # # MODIFIED: also log current device - # logger.warning(f"{xm.get_ordinal()}: {output}") - # self.control = self.callback_handler.on_log(self.args, self.state, self.control, logs) - def evaluation_loop( self, dataloader: DataLoader, @@ -805,7 +295,7 @@ def evaluation_loop( Works both with or without labels. """ args = self.args - + prediction_loss_only = prediction_loss_only if prediction_loss_only is not None else args.prediction_loss_only # if eval is called w/o train init deepspeed here @@ -820,7 +310,7 @@ def evaluation_loop( self.deepspeed = deepspeed_engine model = self._wrap_model(self.model, training=False, dataloader=dataloader) - + if not self.skip_eval_loss: # if full fp16 or bf16 eval is wanted and this ``evaluation`` or ``predict`` isn't called # while ``train`` is running, cast it to the right dtype first and then put on device @@ -878,7 +368,9 @@ def evaluation_loop( batch_size = observed_batch_size # Prediction step - loss, logits, labels = self.prediction_step(model, inputs, prediction_loss_only, ignore_keys=ignore_keys) + loss, logits, labels = self.prediction_step( + model, inputs, prediction_loss_only, ignore_keys=ignore_keys + ) inputs_decode = self._prepare_input(inputs["input_ids"]) if args.include_inputs_for_metrics else None # MODIFIED: not necessary. @@ -894,7 +386,9 @@ def evaluation_loop( labels = self._pad_across_processes(labels) # MODIFIED: do not gather across devices. labels = self._nested_gather(labels) - labels_host = labels if labels_host is None else nested_concat(labels_host, labels, padding_index=-100) + labels_host = ( + labels if labels_host is None else nested_concat(labels_host, labels, padding_index=-100) + ) if inputs_decode is not None: inputs_decode = self._pad_across_processes(inputs_decode) # MODIFIED: do not gather across devices. @@ -919,7 +413,9 @@ def evaluation_loop( all_losses = losses if all_losses is None else np.concatenate((all_losses, losses), axis=0) if preds_host is not None: logits = nested_numpify(preds_host) - all_preds = logits if all_preds is None else nested_concat(all_preds, logits, padding_index=-100) + all_preds = ( + logits if all_preds is None else nested_concat(all_preds, logits, padding_index=-100) + ) if inputs_host is not None: inputs_decode = nested_numpify(inputs_host) all_inputs = ( @@ -929,7 +425,9 @@ def evaluation_loop( ) if labels_host is not None: labels = nested_numpify(labels_host) - all_labels = labels if all_labels is None else nested_concat(all_labels, labels, padding_index=-100) + all_labels = ( + labels if all_labels is None else nested_concat(all_labels, labels, padding_index=-100) + ) # Set back to None to begin a new accumulation losses_host, preds_host, inputs_host, labels_host = ( @@ -953,7 +451,9 @@ def evaluation_loop( if inputs_host is not None: inputs_decode = nested_numpify(inputs_host) all_inputs = ( - inputs_decode if all_inputs is None else nested_concat(all_inputs, inputs_decode, padding_index=-100) + inputs_decode + if all_inputs is None + else nested_concat(all_inputs, inputs_decode, padding_index=-100) ) if labels_host is not None: labels = nested_numpify(labels_host) @@ -987,7 +487,6 @@ def evaluation_loop( all_losses, all_preds, all_labels, all_inputs, num_samples = None, None, None, None, 0 # Metrics! - # MODIFIED: removed since done in compute_metrics xm.rendezvous("eval_metrics") # MODIFIED: always compute metrics if self.compute_metrics is not None: diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index ea9cad87..96cc7c11 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -32,7 +32,7 @@ SubwordXLMConfig, SubwordXLMForTokenClassification, ) -from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_kmers, evaluate_sentence_pairwise +from wtpsplit.train.evaluate import evaluate_sentence from wtpsplit.train.trainer import Trainer from wtpsplit.train.utils import Model, cleanup_cache_files from wtpsplit.utils import Constants, LabelArgs, corrupt_training, get_label_dict, get_subword_label_dict @@ -40,9 +40,6 @@ logger = logging.getLogger(__name__) -# os.environ["PJRT_DEVICE"] = "None" - - def setup_logging(training_args: transformers.TrainingArguments) -> None: logging.basicConfig( format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", @@ -62,7 +59,6 @@ def setup_logging(training_args: transformers.TrainingArguments) -> None: + f"distributed training: {training_args.local_rank != -1}, 16-bits training: {training_args.fp16}" ) ) - # logger.info(f"Training/evaluation parameters {training_args}") @dataclass @@ -72,20 +68,16 @@ class Args: use_logits: bool = False is_decoder: bool = False use_bert: bool = False - # TODO: adapt to HF Hub train_text_path: str = "data/train.parquet" valid_text_path: str = "data/valid.parquet" include_languages: List[str] = None - eval_data_path: str = "data/all_data_24_04.pth" - num_hidden_layers: int = 1 + eval_data_path: str = "data/all_data.pth" + num_hidden_layers: int = 3 preprocessing_num_workers: int = 6 block_size: int = 512 overflow_size: int = 16 eval_stride: int = 256 - lookahead: int = None loss_margin: float = 0.5 - ngram_order: int = 1 - language_adapter: str = "on" from_scratch: bool = False pack_samples: bool = False one_sample_per_line: bool = False @@ -95,13 +87,16 @@ class Args: aux_training_weight: float = 1.0 ignore_non_hyphen: bool = False non_punctuation_sample_ratio: float = None + text_column: str = "text" + threshold: float = 0.01 # just for eval + # WtP-related args + ngram_order: int = 1 + language_adapter: str = "on" adapter_warmup_steps: int = 0 adapter_lr_multiplier: float = 1.0 - text_column: str = "text" - - # NEW PARAMS - use_subwords: bool = False - threshold: float = 0.01 + # SaT-related args + use_subwords: bool = False # uses XLM-R + lookahead: int = None lookahead_split_layers: Optional[int] = None sample_non_whitespace: int = 1 @@ -118,6 +113,7 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: boo for sample in batch: # subword-level if args.use_subwords: + # already tokenized! input_ids = sample["input_ids"] # char-level else: @@ -151,7 +147,6 @@ def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: boo labels = labels[start : start + actual_block_size] elif len(input_ids) < actual_block_size: padding = actual_block_size - len(input_ids) - # print(padding, lang) input_ids += [tokenizer.pad_token_id] * padding if tokenizer else [0] * padding labels += [0] * padding @@ -202,7 +197,7 @@ def main(): (args, training_args, label_args) = parser.parse_args_into_dataclasses() wandb_name = None if xm.xrt_world_size() == 4: - # ensure same batch size on TPUv3 and TPUv4 + # ensure same batch size on TPUv3 and TPUv4 using same config.json training_args.per_device_train_batch_size *= 2 logger.warning(f"Per device train batch size: {training_args.per_device_train_batch_size}") logger.warning( @@ -216,6 +211,7 @@ def main(): num_labels = Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0) if args.use_subwords: + # SaT models if args.from_scratch: config = SubwordXLMConfig( args.model_name_or_path, @@ -248,9 +244,11 @@ def main(): special_tokens_ids = set(tokenizer.all_special_ids) special_tokens_ids.discard(custom_token_id) if args.lookahead: + # we split lookahead evenly into N layers assert args.lookahead % args.num_hidden_layers == 0 else: + # WtP models (char-based) tokenizer = None config = LACanineConfig.from_pretrained( args.model_name_or_path, @@ -290,7 +288,6 @@ def main(): if training_args.local_rank == 0: logger.warning(summary(model, depth=4)) - # backbone.push_to_hub("markus583/xlm-token-untrained", private=True) def prepare_dataset( num_workers=1, @@ -299,8 +296,10 @@ def prepare_dataset( split="train", ): with training_args.main_process_first(): - dlconf = DownloadConfig(cache_dir="/home/Markus/.cache/huggingface/datasets") - dataset = load_dataset("markus583/mC4-TEST", split=split, download_config=dlconf) + # this can be used if space issues arise + # dlconf = DownloadConfig(cache_dir="/home/Markus/.cache/huggingface/datasets") + # dataset = load_dataset("markus583/mC4-TEST", split=split, download_config=dlconf) + dataset = load_dataset("markus583/mC4-TEST", split=split) logger.warning(f"Loaded {split} dataset.") # optional: delete downloaded dataset, it is stored in cache_dir now (but we delete it later) # ~40GB on disk @@ -319,7 +318,7 @@ def prepare_dataset( dataset = dataset.shuffle(seed=42) logger.warning("Shuffled dataset.") - # very likely not relevant / used only for the compound part + # not used for sentence segmentation, ignore. if args.ignore_non_hyphen: with training_args.main_process_first(): dataset = dataset.filter( @@ -328,7 +327,7 @@ def prepare_dataset( ) logger.info(f"Filtered to {len(dataset)} examples.") - # "punctuation-specific sampling" in the paper + # "punctuation-specific sampling" in the WtP paper if args.non_punctuation_sample_ratio is not None: languages_without_punctuation = { lang_code @@ -514,18 +513,19 @@ def maybe_pad(text): remove_columns=[args.text_column], ) else: - # this is no longer used and would cause an error otherwise + # this column is no longer used and would cause an error otherwise with training_args.main_process_first(): dataset = dataset.rename_column(args.text_column, "input_ids") logger.warning(f"Tokenized {split} dataset.") - if split == "train" and args.use_subwords: - with training_args.main_process_first(): - for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): - for file in files: - if file.startswith("m_c4-test-train"): - logger.warning(f"Removing {os.path.join(root, file)}") - os.remove(os.path.join(root, file)) + # uncomment if space issues arise (e.g., on TPU VMs): + # if split == "train" and args.use_subwords: + # with training_args.main_process_first(): + # for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): + # for file in files: + # if file.startswith("m_c4-test-train"): + # logger.warning(f"Removing {os.path.join(root, file)}") + # os.remove(os.path.join(root, file)) if not args.one_sample_per_line: with training_args.main_process_first(): @@ -582,21 +582,19 @@ def compute_metrics(trainer): continue if trainer.args.process_index == 0 and args.do_sentence_training: - # with training_args.main_process_first(): for dataset_name, dataset in lang_data["sentence"].items(): - # if "corrupt" in dataset_name: - # continue if not dataset["data"][0]: continue if isinstance(dataset["data"][0], list): + # too slow here continue score, info = evaluate_sentence( lang_code, dataset["data"], model, - stride=128, - block_size=512, + stride=args.eval_stride, + block_size=args.block_size, batch_size=training_args.per_device_eval_batch_size, threshold=args.threshold, ) @@ -608,68 +606,7 @@ def compute_metrics(trainer): avg_metrics[f"average_{dataset_name}_f1"].append(info["f1"]) avg_metrics[f"average_{dataset_name}_f1_best"].append(info["f1_best"]) avg_metrics[f"average_{dataset_name}_threshold_best"].append(info["threshold_best"]) - # if lang_code in ["zh", "ja", "my", "km"]: - # avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - # else: - # avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) - # score, _ = evaluate_sentence( - # lang_code, - # dataset["data"], - # model, - # stride=args.eval_stride, - # block_size=args.block_size, - # batch_size=training_args.per_device_eval_batch_size, - # do_lowercase=True, - # do_remove_punct=True, - # ) - # metrics[f"lower_rmp_{lang_code}_{dataset_name}_pr_auc"] = score - # avg_metrics[f"lower_rmp_average_{dataset_name}_pr_auc"].append(score) - # if lang_code in ["zh", "ja", "my", "km"]: - # avg_metrics[f"lower_rmp_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - # else: - # avg_metrics[f"lower_rmp_average_whitespace_{dataset_name}_pr_auc"].append(score) - # k-mer based evaluation - # for k in [2, 3, 4]: - # score, avg_acc, info = evaluate_sentence_kmers( - # lang_code, - # dataset["data"], - # model, - # stride=128, - # block_size=512, - # batch_size=training_args.per_device_eval_batch_size, - # k=k, - # # sample_pct=0.1, - # threshold=args.threshold, - # ) - # metrics[f"k_{k}_{lang_code}_{dataset_name}_pr_auc"] = score - # avg_metrics[f"k_{k}_average_{dataset_name}_pr_auc"].append(score) - # metrics[f"k_{k}_{lang_code}_{dataset_name}_acc"] = avg_acc - # avg_metrics[f"k_{k}_average_{dataset_name}_acc"].append(avg_acc) - # metrics[f"k_{k}_{lang_code}_{dataset_name}_f1"] = info["f1"] - # metrics[f"k_{k}_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] - # metrics[f"k_{k}_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] - # avg_metrics[f"k_{k}_average_{dataset_name}_f1"].append(info["f1"]) - # avg_metrics[f"k_{k}_average_{dataset_name}_f1_best"].append(info["f1_best"]) - # avg_metrics[f"k_{k}_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) - - # # if lang_code in ["zh", "ja", "my", "km"]: - # # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - # # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) - # # else: - # # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_pr_auc"].append(score) - # # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_acc"].append(avg_acc) - # if k == 2: - # # keep keys for backwards compat in wandb - # metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score - # avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) - # metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc - # avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) - # metrics[f"pairwise_{lang_code}_{dataset_name}_f1"] = info["f1"] - # metrics[f"pairwise_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] - # metrics[f"pairwise_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] - # avg_metrics[f"pairwise_average_{dataset_name}_f1"].append(info["f1"]) - # avg_metrics[f"pairwise_average_{dataset_name}_f1_best"].append(info["f1_best"]) - # avg_metrics[f"pairwise_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) + if lang_code in ["zh", "ja", "my", "km"]: avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) avg_metrics[f"average_nonwhitespace_{dataset_name}_f1"].append(info["f1"]) @@ -690,7 +627,7 @@ def compute_metrics(trainer): return metrics if "wandb" in training_args.report_to and training_args.process_index == 0: - wandb.init(name=wandb_name, project="sentence", entity="markus_583") + wandb.init(name=wandb_name, project="sentence") wandb.config.update(args) wandb.config.update(training_args) wandb.config.update(label_args) @@ -709,14 +646,15 @@ def compute_metrics(trainer): training_args.adapter_warmup_steps = args.adapter_warmup_steps training_args.adapter_lr_multiplier = args.adapter_lr_multiplier + # again: uncomment this if space issues arise. # give .map in multiprocessing enough of time to finish, to be safe - time.sleep(10) - if training_args.local_rank == 0: - # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() - # because that would remove the cache files of the other dataset! - cleanup_cache_files([train_dataset, valid_dataset]) - logger.warning("Cleaned up cache files.") - time.sleep(10) + # time.sleep(10) + # if training_args.local_rank == 0: + # # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() + # # because that would remove the cache files of the other dataset! + # cleanup_cache_files([train_dataset, valid_dataset]) + # logger.warning("Cleaned up cache files.") + # time.sleep(10) trainer = Trainer( model, @@ -737,10 +675,10 @@ def compute_metrics(trainer): trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) trainer.save_model() trainer.save_state() - # Pattern for checkpoint directories + + # remove old checkpoints to save space checkpoint_pattern = os.path.join(training_args.output_dir, "checkpoint-*") - # Use glob.glob to find all directories matching the pattern for checkpoint_dir in glob(checkpoint_pattern): if os.path.isdir(checkpoint_dir): shutil.rmtree(checkpoint_dir) @@ -752,10 +690,4 @@ def _mp_fn(index): if __name__ == "__main__": - # try: main() - # except Exception: - # # extype, value, tb = sys.exc_info() - # # tb.print_exc() - # # pdb.post_mortem(tb) - # pass diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_adapter.py index bc38c30f..06b399f0 100644 --- a/wtpsplit/train/train_adapter.py +++ b/wtpsplit/train/train_adapter.py @@ -8,12 +8,13 @@ from dataclasses import dataclass from functools import partial from glob import glob -from typing import List +from typing import List, Optional, Union import datasets import numpy as np import torch from tokenizers import AddedToken +from tqdm import tqdm from transformers import AutoTokenizer, HfArgumentParser, TrainingArguments, set_seed import adapters @@ -21,13 +22,11 @@ from adapters import AdapterArguments from wtpsplit.models import SubwordXLMConfig, SubwordXLMForTokenClassification from wtpsplit.train.adaptertrainer import AdapterTrainer -from wtpsplit.train.trainer import Trainer from wtpsplit.train.evaluate import evaluate_sentence from wtpsplit.train.train import collate_fn, setup_logging +from wtpsplit.train.trainer import Trainer from wtpsplit.train.utils import Model -from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict, corrupt -from tqdm import tqdm -from typing import Union, Optional +from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict logger = logging.getLogger(__name__) @@ -39,7 +38,7 @@ class Args: model_name_or_path: str base_model: str = "xlm-roberta-base" shuffle: bool = True - text_path: str = "data/all_data_11_05-all.pth" + text_path: str = "data/all_data.pth" include_languages: List[str] = None preprocessing_num_workers: int = 1 block_size: int = 512 @@ -69,7 +68,6 @@ class Args: wandb_project: str = "sentence" eval_every: int = 5 # corruption - eval_pairwise: bool = False skip_eval_loss: bool = False subsample: Optional[float] = None @@ -112,7 +110,7 @@ def prepare_dataset( one_sample_per_line: bool = False, ): with training_args.main_process_first(): - # maybe we use more than 1 lang later at once. + # this only uses 1 dataset-language combination, but can be easily adapted if needed for lang in include_languages: if split == "train": dataset = data[lang]["sentence"][dataset_name]["meta"]["train_data"] @@ -160,7 +158,7 @@ def prepare_dataset( dataset = dataset.select(range(int(subsample * len(dataset)))) logger.warning(f"Subsampled {len(dataset)} examples from {old_length}.") - # very likely not relevant / used only for the compound part + # ignore if args.ignore_non_hyphen: with training_args.main_process_first(): dataset = dataset.filter( @@ -170,7 +168,7 @@ def prepare_dataset( with training_args.main_process_first(): logger.info(f"Filtered to {len(dataset)} examples.") - # "punctuation-specific sampling" in the paper + # "punctuation-specific sampling" in the WtP paper if args.non_punctuation_sample_ratio is not None: languages_without_punctuation = { lang_code @@ -369,7 +367,7 @@ def maybe_pad(text): data = torch.load( args.text_path, ) - # sort alphabetically by key to enable alphabetical filtering w/o losses + # sort alphabetically by key for alphabetical filtering data = dict(sorted(data.items())) if not args.include_languages: @@ -377,8 +375,7 @@ def maybe_pad(text): # 1 wandb run for all language-dataset combinations if "wandb" in training_args.report_to and training_args.process_index == 0: - # TODO: don't hardcode entity - wandb.init(name=wandb_name, project=args.wandb_project, group=wandb_name, entity="markus_583") + wandb.init(name=wandb_name, project=args.wandb_project, group=wandb_name) wandb.config.update(args) wandb.config.update(training_args) wandb.config.update(label_args) @@ -410,11 +407,10 @@ def maybe_pad(text): # not available. print("SKIP: ", lang, dataset_name) continue + if not any(x in dataset_name for x in ["ersatz", "opus", "ud"]): + print("SKIP: ", lang, dataset_name) + continue print("RUNNING:", dataset_name, lang) - # skip langs starting with a, b, ..., k - # if lang.startswith(tuple("abcd")): - # print(f"Skipping {lang} {dataset_name}") - # continue # do model stuff here; otherwise, head params would be overwritten every time backbone = SubwordXLMForTokenClassification.from_pretrained( args.model_name_or_path, config=copy.deepcopy(config), ignore_mismatched_sizes=True @@ -440,7 +436,7 @@ def maybe_pad(text): if "short" in dataset_name: one_sample_per_line = True else: - one_sample_per_line = args.one_sample_per_line + one_sample_per_line = args.one_sample_per_line # used for lyrics model = Model( backbone, @@ -496,8 +492,7 @@ def compute_metrics(trainer): model = trainer._wrap_model(trainer.model, training=False) with training_args.main_process_first(): - # XXX: feeding in single samples is too slow --> feed in as one long text - # also for lyrics, tweets, ... + # feeding in single samples is too slow --> feed in as one long text if args.one_sample_per_line: eval_data = [item for sublist in eval_data for item in sublist] elif isinstance(eval_data[0], list): @@ -506,26 +501,14 @@ def compute_metrics(trainer): lang, eval_data, model, - stride=128, - block_size=512, + stride=args.eval_stride, + block_size=args.block_size, batch_size=training_args.per_device_eval_batch_size, ) metrics[f"{dataset_name}/{lang}/pr_auc"] = score metrics[f"{dataset_name}/{lang}/f1"] = info["f1"] metrics[f"{dataset_name}/{lang}/f1_best"] = info["f1_best"] metrics[f"{dataset_name}/{lang}/threshold_best"] = info["threshold_best"] - if args.eval_pairwise: - score_pairwise, avg_acc = evaluate_sentence_pairwise( - lang, - eval_data, - model, - stride=args.eval_stride, - block_size=args.block_size, - batch_size=training_args.per_device_eval_batch_size, - threshold=0.1, - ) - metrics[f"{dataset_name}/{lang}/pairwise/pr_auc"] = score_pairwise - metrics[f"{dataset_name}/{lang}/pairwise/acc"] = avg_acc return metrics @@ -541,7 +524,7 @@ def compute_metrics(trainer): model.backbone.train_adapter("text") kwargs = {"logging_prefix": f"{dataset_name}/{lang}/", "skip_eval_loss": args.skip_eval_loss} else: - # needed in the trainer otherwise + # needed in the trainer otherwise (WtP-related only) training_args.adapter_warmup_steps = args.adapter_warmup_steps training_args.adapter_lr_multiplier = args.adapter_lr_multiplier kwargs = {} @@ -553,23 +536,10 @@ def compute_metrics(trainer): for n, p in model.backbone.named_parameters(): if "classifier" in n: p.requires_grad = False + # not done: keeping clf head is much better if args.clf_from_scratch: model.backbone.classifier = torch.nn.Linear(model.backbone.config.hidden_size, num_labels) - if args.unfreeze_ln: - for n, p in model.backbone.named_parameters(): - if "LayerNorm" in n: - p.requires_grad = True - - if args.meta_clf: - clf = model.backbone.classifier - model.backbone.classifier = torch.nn.Sequential( - clf, # original classifier - if frozen above, also frozen here - torch.nn.Linear(clf.out_features, 1), - ) - model.backbone.config.num_labels = 1 - - # if args.one_sample_per_line: # eval only 5x during the entire training training_args.evaluation_strategy = "steps" training_args.eval_steps = max( @@ -584,7 +554,6 @@ def compute_metrics(trainer): ) trainer_cls = AdapterTrainer if adapter_args.train_adapter else Trainer - # add logging_prefix and skip_eval_loss as args to trainer_cls if trainer_cls is AdapterTrainer only trainer = trainer_cls( model, @@ -604,6 +573,8 @@ def compute_metrics(trainer): ) trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) logger.warning(f"Finished training for {lang} {dataset_name}.") + + # only save trained module if training_args.local_rank == 0: if not os.path.exists(os.path.join(training_args.output_dir, dataset_name, lang)): os.makedirs(os.path.join(training_args.output_dir, dataset_name, lang)) @@ -617,34 +588,6 @@ def compute_metrics(trainer): ) else: save_model.to("cpu").save_pretrained(os.path.join(training_args.output_dir, dataset_name, lang)) - # TODO - # if training_args.local_rank == 0: - # # eval here within 1 go - # cmd = "" - - # if args.eval_pairwise: - # eval_function = "intrinsic_pairwise" - # elif args.one_sample_per_line: - # eval_function = "intrinsic_list" - # else: - # eval_function = "intrinsic" - # if args.do_lowercase and args.do_remove_punct: - # suffix = "--do_lowercase --do_remove_punct" - # elif "multilingual" in trainings_args.model_name_or_path: - # suffix = "--threshold 0.5" - # else: - # suffix = "" - # if "adapter" in training_args.output_dir: - # model_info = f"--model_path {args.model_name_or_path} --adapter_path {training_args.output_dir}" - # else: - # model_info = f"--model_path {training_args.output_dir}" - - # if "verses" in args.text_path or "lines" in args.text_path: - # cmd = f"python3 wtpsplit/evaluation/{eval_function}.py {model_info} --threshold 0.1 --custom_language_list data/mldb_langs.csv --eval_data_path {args.text_path} {suffix}" - # else: - # cmd = f"python3 wtpsplit/evaluation/{eval_function}.py {model_info} --threshold 0.1 {suffix}" - # print(cmd) - # os.system(cmd) def _mp_fn(index): @@ -653,5 +596,4 @@ def _mp_fn(index): if __name__ == "__main__": - # try: main() diff --git a/wtpsplit/train/train_adapter_parallel.py b/wtpsplit/train/train_adapter_parallel.py deleted file mode 100644 index b67760ba..00000000 --- a/wtpsplit/train/train_adapter_parallel.py +++ /dev/null @@ -1,774 +0,0 @@ -import copy -import dataclasses -import json -import logging -import math -import os -import random -import sys -from collections import Counter -from dataclasses import dataclass, field -from functools import partial -from glob import glob -from typing import List - -import datasets -import numpy as np -import torch -import torch_xla.core.xla_model as xm -import transformers -from tokenizers import AddedToken -from tqdm import tqdm -from transformers import AutoTokenizer, HfArgumentParser, set_seed - -import adapters -import wandb -from adapters import AdapterArguments -from wtpsplit.models import SubwordXLMConfig, SubwordXLMForTokenClassification -from wtpsplit.train.adapter_utils import ( - ParallelTPUAdapterTrainingArguments as TrainingArguments, -) -from wtpsplit.train.adapter_utils import ( - ParallelTPUWandbCallback as WandbCallback, -) -from wtpsplit.train.adaptertrainer import AdapterTrainer -from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_pairwise -from wtpsplit.train.train import collate_fn -from wtpsplit.train.utils import Model -from wtpsplit.utils import Constants, LabelArgs, get_label_dict, get_subword_label_dict, corrupt - -os.environ["TOKENIZERS_PARALLELISM"] = "false" - - -def setup_logging(training_args, job_id=None) -> None: - # Generate a unique logger name based on the job_id or process identifier - unique_logger_name = f"{__name__}.{job_id}" if job_id is not None else __name__ - logger = logging.getLogger(unique_logger_name) - - # Clear existing handlers to avoid duplicate logging - if logger.hasHandlers(): - logger.handlers.clear() - - # Disable propagation to prevent logs from being handled elsewhere - logger.propagate = False # Note the correct attribute is `propagate` - - # Set the logger's level based on training arguments - log_level = training_args.get_process_log_level() - logger.setLevel(log_level) - - # Create and add a console handler - console_handler = logging.StreamHandler(sys.stdout) - console_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(name)s - %(message)s")) - logger.addHandler(console_handler) - - # Add a file handler if a job_id is provided, open in write mode to start from scratch - if job_id is not None: - file_handler = logging.FileHandler(f"logs/log_{job_id}.log", mode="w") # Open in write mode - file_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(name)s - %(message)s")) - logger.addHandler(file_handler) - - # Adjust verbosity settings for datasets and transformers - datasets.utils.logging.set_verbosity_warning() - transformers.utils.logging.set_verbosity_warning() - transformers.utils.logging.enable_default_handler() - transformers.utils.logging.enable_explicit_format() - - # Log a summary message using the newly configured logger - logger.warning( - ( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}, " - + f"distributed training: {training_args.local_rank != -1}, 16-bits training: {training_args.fp16}" - ) - ) - - # Return the configured logger for use in the rest of the process - return logger - - -@dataclass -class Args: - model_name_or_path: str - base_model: str = "xlm-roberta-base" - shuffle: bool = True - text_path: str = "data/eval.pth" - include_languages: List[str] = None - preprocessing_num_workers: int = 1 - block_size: int = 512 - overflow_size: int = 16 - eval_stride: int = 256 - loss_margin: float = 0.5 - pack_samples: bool = False - one_sample_per_line: bool = False - use_loss_weights: bool = False - do_sentence_training: bool = True - do_auxiliary_training: bool = True - aux_training_weight: float = 1.0 - ignore_non_hyphen: bool = False - non_punctuation_sample_ratio: float = None - adapter_warmup_steps: int = 0 - adapter_lr_multiplier: float = 1.0 - text_column: str = "text" - - # NEW PARAMS - use_subwords: bool = False - freeze_classifier: bool = False - clf_from_scratch: bool = False - unfreeze_ln: bool = False - do_process: bool = False - n_train_steps: List[int] = field(default_factory=lambda: [1000, 10000, 100000]) - meta_clf: bool = False - wandb_project: str = "sentence" - # corruption - do_lowercase: bool = False - do_remove_punct: bool = False - eval_pairwise: bool = False - skip_eval_loss: bool = False - - -def main( - tpu_core_idx, - args, - training_args, - label_args, - adapter_args, - data, - train_ds, - valid_ds, - lang_groups, - train_steps, -): - wandb_name = training_args.output_dir - - logger = setup_logging(training_args, job_id=tpu_core_idx) - set_seed(training_args.seed) - logger.warning(f"{tpu_core_idx}: LANG GROUP {lang_groups}") - - num_labels = Constants.AUX_OFFSET + ( - (1 + len(Constants.PUNCTUATION_CHARS)) if (label_args.use_auxiliary or args.do_auxiliary_training or args.meta_clf) else 0 - ) - config = SubwordXLMConfig.from_pretrained( - args.model_name_or_path, - num_labels=num_labels, - ) - - # 1 wandb run for all language-dataset combinations - if "wandb" in training_args.report_to: - wandb.init(name=f"{wandb_name}-{tpu_core_idx}", project=args.wandb_project, group=wandb_name) - wandb.config.update(args) - wandb.config.update(training_args) - wandb.config.update(label_args) - wandb.config.update(adapter_args) - - for file in glob(os.path.join(os.path.dirname(__file__), "*.py")): - wandb.save(os.path.abspath(file), policy="now") - wandb.log({"train/total_n_batches": len(lang_groups)}) - training_args.report_to = [] - callbacks = WandbCallback() - else: - callbacks = None - - xm.rendezvous("wandb init done") - - for i, ((lang, dataset_name), train_step) in tqdm(enumerate(zip(lang_groups, train_steps)), total=len(lang_groups)): - # do model stuff here; otherwise, head params would be overwritten every time - backbone = SubwordXLMForTokenClassification.from_pretrained( - args.model_name_or_path, config=copy.deepcopy(config), ignore_mismatched_sizes=True - ) - logger.warning(f"{tpu_core_idx}: Loaded backbone {args.model_name_or_path}.") - backbone.config.base_model = args.base_model - - # setup adapters - model_type = backbone.config.model_type - # adapters need xlm-roberta as model type. - backbone.config.model_type = "xlm-roberta" # needed for adapter setup - adapters.init(backbone) - # reset model type (used later) - backbone.config.model_type = model_type - - tokenizer = AutoTokenizer.from_pretrained(args.base_model) - # needed since we create labels in collate_fn based on tokens - tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) - - model = Model( - backbone, - loss_margin=args.loss_margin, - use_loss_weights=args.use_loss_weights, - do_sentence_training=args.do_sentence_training, - do_auxiliary_training=args.do_auxiliary_training, - aux_training_weight=args.aux_training_weight, - ) - - # train for as many steps as the current group's steps. - training_args.max_steps = train_step - training_args.evaluation_strategy = "steps" - training_args.eval_steps = (train_step // training_args.num_train_epochs) + 1 - - # print some samples from the dataset - count = 0 - while count < 0: - index = random.choice(range(len(train_ds[(lang, dataset_name)]))) - sample = train_ds[(lang, dataset_name)][index] - - logger.warning(f"{tpu_core_idx}: Sample {index} of the training set: {sample}.") - if tokenizer: - logger.warning(tokenizer.decode(sample["input_ids"])) - count += 1 - - def compute_metrics(trainer): - metrics = {} - eval_data = data[lang]["sentence"][dataset_name]["data"] - - model = trainer._wrap_model(trainer.model, training=False) - - score, info = evaluate_sentence( - lang, - eval_data, - model, - stride=64, - block_size=512, - batch_size=training_args.per_device_eval_batch_size, - ) - metrics[f"{dataset_name}/{lang}/pr_auc"] = score - metrics[f"{dataset_name}/{lang}/f1"] = info["f1"] - metrics[f"{dataset_name}/{lang}/f1_best"] = info["f1_best"] - metrics[f"{dataset_name}/{lang}/threshold_best"] = info["threshold_best"] - if args.do_lowercase and args.do_remove_punct: - score_corrupted, info_corrupted = evaluate_sentence( - lang, - eval_data, - model, - stride=64, - block_size=512, - batch_size=training_args.per_device_eval_batch_size, - do_lowercase=True, - do_remove_punct=True - ) - metrics[f"{dataset_name}/{lang}/corrupted/pr_auc"] = score_corrupted - metrics[f"{dataset_name}/{lang}/corrupted/f1"] = info_corrupted["f1"] - metrics[f"{dataset_name}/{lang}/corrupted/f1_best"] = info_corrupted["f1_best"] - metrics[f"{dataset_name}/{lang}/corrupted/threshold_best"] = info_corrupted["threshold_best"] - elif args.do_lowercase or args.do_remove_punct: - raise NotImplementedError("Currently we only corrupt both ways!") - if args.eval_pairwise: - score_pairwise, avg_acc = evaluate_sentence_pairwise( - lang, - eval_data, - model, - stride=args.eval_stride, - block_size=args.block_size, - batch_size=training_args.per_device_eval_batch_size, - threshold=0.1, - ) - metrics[f"{dataset_name}/{lang}/pairwise/pr_auc"] = score_pairwise - metrics[f"{dataset_name}/{lang}/pairwise/acc"] = avg_acc - xm.rendezvous("eval log done") - - return metrics - - label_dict = get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) - - # init new adapter - model.backbone.add_adapter("text", config=adapter_args.adapter_config, set_active=True, overwrite_ok=True) - model.backbone.train_adapter("text") - if tpu_core_idx == 0: - logger.warning(f"{tpu_core_idx}: {model.backbone.adapter_summary()}") - - if args.freeze_classifier: - for n, p in model.backbone.named_parameters(): - if "classifier" in n: - p.requires_grad = False - if args.clf_from_scratch: - model.backbone.classifier = torch.nn.Linear(model.backbone.config.hidden_size, num_labels) - - if args.unfreeze_ln: - for n, p in model.backbone.named_parameters(): - if "LayerNorm" in n: - p.requires_grad = True - - if args.meta_clf: - clf = model.backbone.classifier - model.backbone.classifier = torch.nn.Sequential( - clf, # original classifier - if frozen above, also frozen here - torch.nn.Linear(clf.out_features, 1) - ) - model.backbone.config.num_labels = 1 - - trainer = AdapterTrainer( - model, - training_args, - train_dataset=train_ds[(lang, dataset_name)], - eval_dataset=valid_ds[(lang, dataset_name)], - compute_metrics=compute_metrics, - data_collator=partial( - collate_fn, - args=args, - label_args=label_args, - label_dict=label_dict, - tokenizer=tokenizer, - add_lang_ids=False - ), - logging_prefix=f"{dataset_name}/{lang}/", - skip_eval_loss=args.skip_eval_loss - ) - if callbacks: - trainer.add_callback(callbacks) - - logger.warning(f"{tpu_core_idx}: START TRAIN {lang} {dataset_name}.") - # wait until all TPUs are ready - xm.rendezvous("start_training") - - trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) - - if not os.path.exists(os.path.join(training_args.output_dir, dataset_name, lang)): - os.makedirs(os.path.join(training_args.output_dir, dataset_name, lang)) - save_model = copy.deepcopy(model.backbone) - save_model = save_model.to("cpu") - save_model.save_adapter( - adapter_name="text", - save_directory=os.path.join(training_args.output_dir, dataset_name, lang), - with_head=True, - ) - - if args.unfreeze_ln: - # no way within adapters to do this, need to do it manually - ln_dict = {n: p for n, p in save_model.named_parameters() if "LayerNorm" in n} - torch.save(ln_dict, os.path.join(training_args.output_dir, dataset_name, lang, "ln_dict.pth")) - logger.warning(f"{tpu_core_idx}: DONE TRAIN {lang} {dataset_name}.") - - if callbacks: - wandb.log({"train/batch_progress": (i + 1) / len(lang_groups)}) - - xm.rendezvous("end_training") - xm.mark_step() - xm.rendezvous("all_done") - wandb.finish() - - -# split languages into groups of equal size for TPUs -def split_langs_into_groups(langs, n_groups=8): - return [langs[i::n_groups] for i in range(n_groups)] - - -def _mp_fn(index): - # For xla_spawn (TPUs) - setup(index) - - -def setup(index): - config_path = sys.argv[1] - parser = HfArgumentParser([Args, TrainingArguments, LabelArgs, AdapterArguments]) - (args, training_args, label_args, adapter_args) = parser.parse_json_file(config_path) - - data = torch.load( - args.text_path, - ) - if index == 0: - print(f"Using {xm.xrt_world_size()} processes/TPUs.") - print("Loaded data.") - print(f"Using step sizes {args.n_train_steps}.") - # create a csv file that writes the length of each train dataset - # used to sort the datasets by length and assign them to workers - if not os.path.exists("logs"): - os.makedirs("logs", exist_ok=True) - with open("logs/train_dataset_lengths.csv", "w") as f: - f.write("lang,dataset_name,token_length,original_length\n") - - def prepare_dataset( - data, - num_workers=1, - include_languages=None, - dataset_name="ud", - shuffle=False, - split="train", - do_lowercase=False, - do_remove_punct=False, - ): - # maybe we use more than 1 lang later at once. - for lang in include_languages: - if split == "train": - dataset = data[lang]["sentence"][dataset_name]["meta"]["train_data"] - elif split == "valid": - dataset = data[lang]["sentence"][dataset_name]["data"] - if dataset is None: - return None - dataset = datasets.Dataset.from_list( - [ - { - args.text_column: corrupt(sample, do_lowercase, do_remove_punct) + "\n" if sample and sample[-1] != "\n" else corrupt(sample, do_lowercase, do_remove_punct), - "lang": lang, - "ends_with_punctuation": sample.endswith(tuple(Constants.PUNCTUATION_CHARS)), - } - for sample in dataset - ] - ) - - if shuffle: - dataset = dataset.shuffle(seed=42) - - # very likely not relevant / used only for the compound part - if args.ignore_non_hyphen: - dataset = dataset.filter( - lambda sample: any(c in sample[args.text_column] for c in label_args.hyphen_chars), - num_proc=args.preprocessing_num_workers, - ) - - # "punctuation-specific sampling" in the paper - if args.non_punctuation_sample_ratio is not None: - languages_without_punctuation = { - lang_code - for lang_code in Constants.LANGINFO.index - if Constants.LANGINFO.loc[lang_code, "no_punctuation"] - } - - def drop_some_non_punctuation_samples(examples): - include_indices = set( - np.where([lang_code not in languages_without_punctuation for lang_code in examples["lang"]])[0] - ) - punctuation_indices = { - i for i in np.where(examples["ends_with_punctuation"])[0] if i in include_indices - } - - target_n_non_punct = int( - (len(punctuation_indices) * args.non_punctuation_sample_ratio) - / (1 - args.non_punctuation_sample_ratio) - ) - n_drop = (len(include_indices) - len(punctuation_indices)) - target_n_non_punct - - out = [True for _ in range(len(examples["ends_with_punctuation"]))] - - if n_drop <= 0: - return out - drop_indices = np.random.choice( - list(include_indices - punctuation_indices), - n_drop, - replace=False, - ) - - for i in drop_indices: - out[i] = False - - return out - - dataset = dataset.filter( - drop_some_non_punctuation_samples, - batched=True, - batch_size=1_000_000, - num_proc=num_workers, - ) - - def tokenize_texts(examples): - # do not return CLS and SEP token here - # there should only be 1 of these per block later, not multiple - # we still can't use return_special_tokens=False since we need the \n token later for the labels - tokenized = tokenizer(examples[args.text_column], verbose=False) - return {"input_ids": [example[1:-1] for example in tokenized["input_ids"]]} - - # similar to group_texts in huggingface's run_clm.py / run_mlm.py: https://github.com/huggingface/transformers/blob/main/examples/pytorch/language-modeling/run_mlm.py - def group_texts(examples): - all_input_blocks = [] - all_input_block_lengths = [] - all_langs = [] - - for current_lang in set(examples["lang"]): - # only retain current_lang examples (all columns) - lang_subwords = [ - subwords for subwords, lang in zip(examples["input_ids"], examples["lang"]) if lang == current_lang - ] - # filter out some special tokens - # from html tags, mostly in Latin, Thai & Korean - lang_subwords = [ - [subword for subword in subwords if subword not in special_tokens_ids] for subwords in lang_subwords - ] - # concatenate token lists - concatenated_texts = [item for sublist in lang_subwords for item in sublist] - concatenated_ids = [i for i, subwords in enumerate(lang_subwords) for _ in subwords] - - total_length = len(concatenated_texts) - - best_length = math.ceil(total_length / args.block_size) * args.block_size + args.overflow_size - while best_length > total_length: - best_length -= args.block_size - - if best_length < 0: - continue - - concatenated_texts = concatenated_texts[:best_length] - concatenated_ids = concatenated_ids[:best_length] - - blocks = [ - concatenated_texts[i : i + args.block_size + args.overflow_size] - for i in range(0, best_length - args.block_size, args.block_size) - ] - block_ids = [ - concatenated_ids[i : i + args.block_size + args.overflow_size] - for i in range(0, best_length - args.block_size, args.block_size) - ] - - block_langs = [current_lang] * len(blocks) - - all_input_blocks.extend(blocks) - all_input_block_lengths.extend([list(Counter(ids).values()) for ids in block_ids]) - all_langs.extend(block_langs) - - return { - "input_ids": all_input_blocks, - "block_lengths": all_input_block_lengths, - "lang": all_langs, - } - - if args.pack_samples: - raise NotImplementedError("Packing samples not implemented for subword-based models.") - - if args.use_subwords: - dataset = dataset.map( - tokenize_texts, - batched=True, - num_proc=num_workers, - remove_columns=[args.text_column], - ) - else: - # this is no longer used and would cause an error otherwise - dataset = dataset.rename_column(args.text_column, "input_ids") - - if not args.one_sample_per_line: - dataset = dataset.map( - group_texts, - batched=True, - num_proc=num_workers, - # a bit hacky but oh well, only drop if sentence - remove_columns=["ends_with_punctuation"] if args.text_column == "text" else [], - ) - - return dataset - - if not args.include_languages: - args.include_languages = list(data.keys()) # use all - # XXX: for testing - # args.include_languages = ["af", "az", "kk", "te", "tg", "be", "km",] # "ps", "ru"] - # get all lang-dataset combinations and their lengths - all_keys = [] - for lang in data.keys(): - for dataset_name in data[lang]["sentence"].keys(): - if lang in args.include_languages: - valid = data[lang]["sentence"][dataset_name]["data"] - train = data[lang]["sentence"][dataset_name]["meta"]["train_data"] - if train is not None and valid is not None: - all_keys.append((lang, dataset_name, len(train))) - # sort by length of train dataset - all_keys = sorted(all_keys, key=lambda x: x[2], reverse=True) - all_lang_groups = split_langs_into_groups(list(all_keys), n_groups=int(xm.xrt_world_size())) - current_lang_groups = [(lang, ds) for (lang, ds, _) in all_lang_groups[index]] - # TODO: check speed of parallelism here - # should be: longest (parallel), ..., shortest (parallel) - - tokenizer = AutoTokenizer.from_pretrained(args.base_model) - # needed since we create labels in collate_fn based on tokens - tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) - custom_token_id = tokenizer.convert_tokens_to_ids("\n") - # used later to filter out special tokens - special_tokens_ids = set(tokenizer.all_special_ids) - special_tokens_ids.discard(custom_token_id) - - xm.rendezvous("loading data") - - if not os.path.exists("data/ft_data"): - os.makedirs("data/ft_data", exist_ok=True) - - def process_datasets(data, args, current_lang_groups, do_process=True, do_write=True): - all_ds = {"train": {}, "valid": {}} - - for lang in data.keys(): - if lang in args.include_languages: - for dataset_name in data[lang]["sentence"].keys(): - if (lang, dataset_name) not in current_lang_groups: - continue - train_path = f"data/ft_data/{lang}_{dataset_name}_train.pth" - valid_path = f"data/ft_data/{lang}_{dataset_name}_valid.pth" - - if not do_process and os.path.exists(train_path) and os.path.exists(valid_path): - # if exists and we don't want to process, load - train_dataset = torch.load(train_path) - valid_dataset = torch.load(valid_path) - - all_ds["train"][(lang, dataset_name)] = train_dataset - all_ds["valid"][(lang, dataset_name)] = valid_dataset - else: - # Process datasets - valid_dataset = prepare_dataset( - data=data, - num_workers=1, - include_languages=[lang], - dataset_name=dataset_name, - shuffle=False, - split="valid", - do_lowercase=args.do_lowercase, - do_remove_punct=args.do_remove_punct, - ) - - train_dataset = prepare_dataset( - data=data, - num_workers=args.preprocessing_num_workers, - include_languages=[lang], - dataset_name=dataset_name, - shuffle=args.shuffle, - split="train", - do_lowercase=args.do_lowercase, - do_remove_punct=args.do_remove_punct, - ) - - all_ds["valid"][(lang, dataset_name)] = valid_dataset - all_ds["train"][(lang, dataset_name)] = train_dataset - - torch.save(train_dataset, train_path) - torch.save(valid_dataset, valid_path) - - # Write length of train dataset to CSV - if do_write: - print(f"Valid ds for {lang} {dataset_name} has {len(valid_dataset)} examples.") - print(f"Train ds for {lang} {dataset_name} has {len(train_dataset)} examples.") - with open("logs/train_dataset_lengths.csv", "a") as f: - train_data_len = len(data[lang]["sentence"][dataset_name]["meta"]["train_data"]) - f.write(f"{lang},{dataset_name},{len(train_dataset)},{train_data_len}\n") - - if do_process and do_write and index == 0: - with open("data/ft_data/args.json", "w") as f: - json.dump(dataclasses.asdict(args), f) - return all_ds - - # first, pre-process datasets in distributed manner - # assignment of lang-dataset combinations to workers is done based on length of train dataset (string length) - _ = process_datasets(data, args, current_lang_groups, do_process=args.do_process, do_write=True) - xm.rendezvous("data loaded") - - # synchronize number of steps before training, for each worker - with open("logs/train_dataset_lengths.csv", "r") as f: - lines = f.readlines() - lines = [line.strip().split(",") for line in lines[1:]] - lines = sorted(lines, key=lambda x: int(x[2]), reverse=True) - # as tuple - lines = [ - ( - x[0], - x[1], - int(x[2]), - int(x[3]), - # calculate number of steps based on train dataset token length - # XXX: steps are dependent on epoch, too! So we set target number of epochs and calculate steps based on that - math.ceil( - (training_args.num_train_epochs * int(x[2])) - / (training_args.per_device_train_batch_size * training_args.gradient_accumulation_steps) - ), - ) - for x in lines - ] - - all_keys = lines # now contains lang, dataset, token length (!), original length, original train steps - - # bin the keys into groups based on number of steps - grouped_keys = {n_steps: [x for x in all_keys if x[4] <= n_steps] for n_steps in args.n_train_steps[:-1]} - # last group is all keys with >10_000 steps - grouped_keys[args.n_train_steps[-1]] = [x for x in all_keys if x[4] > args.n_train_steps[-2]] - - # split each group into equal parts for each worker - grouped_lang_groups = { - n_steps: split_langs_into_groups(grouped_keys[n_steps], n_groups=xm.xrt_world_size()) - for n_steps in args.n_train_steps - } - # ensure each last group is of equal length - for n_steps in args.n_train_steps: - for i, group in enumerate(grouped_lang_groups[n_steps]): - if len(group) < len(grouped_lang_groups[n_steps][0]): - grouped_lang_groups[n_steps][i].append(grouped_lang_groups[n_steps][0][-1]) - assert all([len(group) == len(grouped_lang_groups[n_steps][0]) for group in grouped_lang_groups[n_steps]]) - - # unwrap dict of lists (just remove dict dimension) - all_lang_groups = [] - - def merge_dict_into_sublists(d): - # Initialize a list with 8 empty sublists - merged_lists = [[] for _ in range(xm.xrt_world_size())] - - # Sort keys in descending order and iterate through them - for key in sorted(d.keys(), reverse=True): - # Iterate through each of the 8 sublists for the current key - for index, sublist in enumerate(d[key]): - # add key (number of used steps) to each item in the sublist - merged_lists[index].extend([item + (key,) for item in sublist]) - return merged_lists - - all_lang_groups = merge_dict_into_sublists(grouped_lang_groups) - train_steps = [x[5] for x in all_lang_groups[index]] - current_lang_groups = [(x[0], x[1]) for x in all_lang_groups[index]] - - all_ds = process_datasets(data, args, current_lang_groups, do_process=False, do_write=False) - - # all lang groups should be of equal length - assert all([len(lang_group) == len(all_lang_groups[0]) for lang_group in all_lang_groups]) - # all lang groups should contain unique lang-dataset combinations - assert all([len(lang_group) == len(set(lang_group)) for lang_group in all_lang_groups]) - - if index == 0: - # just for sanity chacking - with open("logs/all_lang_groups.txt", "w") as f: - f.write(f"{training_args.num_train_epochs}\n") - f.write("\n".join([str(x) for x in all_lang_groups])) - print(all_lang_groups) - xm.rendezvous("data sorted") - - main( - index, - args, - training_args, - label_args, - adapter_args, - data, - all_ds["train"], - all_ds["valid"], - current_lang_groups, - train_steps, - ) - - xm.rendezvous("all training done") - if index == 0: - # eval here within 1 go - if args.do_lowercase and args.do_remove_punct: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --do_lowercase --do_remove_punct" - ) - elif args.eval_pairwise: - os.system( - f"python3 wtpsplit/evaluation/intrinsic_pairwise.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" - ) - elif "lines" in args.text_path: - if args.do_lowercase and args.do_remove_punct: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1--custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines --do_lowercase --do_remove_punct" - ) - else: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1--custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_lines.pt --save_suffix lines" - ) - elif "verses" in args.text_path: - if args.do_lowercase and args.do_remove_punct: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses --do_lowercase --do_remove_punct" - ) - else: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1 --custom_language_list data/lyrics_langs.csv --eval_data_path data/lyrics_verses_strip_n.pt --save_suffix verses" - ) - else: - os.system( - f"python3 wtpsplit/evaluation/intrinsic.py --model_path {args.model_name_or_path} --adapter_path {training_args.output_dir} --threshold 0.1" - ) - - -if __name__ == "__main__": - import torch_xla.distributed.xla_multiprocessing as xmp - - xmp.spawn( - _mp_fn, - args=(), - nprocs=8, - ) - \ No newline at end of file diff --git a/wtpsplit/train/train_xlmr.py b/wtpsplit/train/train_xlmr.py deleted file mode 100644 index 2515e1ee..00000000 --- a/wtpsplit/train/train_xlmr.py +++ /dev/null @@ -1,574 +0,0 @@ -import logging -import math -import os -import random -import shutil -import sys -import time -from collections import Counter, defaultdict -from dataclasses import dataclass -from functools import partial -from glob import glob -from typing import List, Optional - -import datasets -import numpy as np -import torch -import torch_xla.core.xla_model as xm -import transformers -from datasets import load_dataset -from datasets.download import DownloadConfig -from torchinfo import summary -from tqdm.auto import tqdm -from transformers import AutoTokenizer, HfArgumentParser, TrainingArguments, set_seed - -import wandb -from wtpsplit.models import ( - SubwordXLMConfig, - SubwordXLMForTokenClassification, -) -from wtpsplit.train.evaluate import evaluate_sentence, evaluate_sentence_kmers, evaluate_sentence_pairwise -from wtpsplit.train.trainer import Trainer -from wtpsplit.train.utils import Model, cleanup_cache_files -from wtpsplit.utils import Constants, LabelArgs, corrupt_training, get_label_dict, get_subword_label_dict -from wtpsplit.tokenization_utils import pack_sentences - -logger = logging.getLogger(__name__) - - -# os.environ["PJRT_DEVICE"] = "None" - - -def setup_logging(training_args: transformers.TrainingArguments) -> None: - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - handlers=[logging.StreamHandler(sys.stdout)], - ) - log_level = training_args.get_process_log_level() - logger.setLevel(log_level) - datasets.utils.logging.set_verbosity_warning() - transformers.utils.logging.set_verbosity_warning() - transformers.utils.logging.enable_default_handler() - transformers.utils.logging.enable_explicit_format() - # Log on each process the small summary: - logger.warning( - ( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" - + f"distributed training: {training_args.local_rank != -1}, 16-bits training: {training_args.fp16}" - ) - ) - # logger.info(f"Training/evaluation parameters {training_args}") - - -@dataclass -class Args: - model_name_or_path: str - shuffle: bool = False - use_logits: bool = False - is_decoder: bool = False - use_bert: bool = False - # TODO: adapt to HF Hub - train_text_path: str = "data/train.parquet" - valid_text_path: str = "data/valid.parquet" - include_languages: List[str] = None - eval_data_path: str = "data/all_data_24_04.pth" - num_hidden_layers: int = 1 - preprocessing_num_workers: int = 6 - block_size: int = 512 - underflow_size: int = 16 - eval_stride: int = 256 - lookahead: int = None - loss_margin: float = 0.5 - ngram_order: int = 1 - language_adapter: str = "on" - from_scratch: bool = False - pack_samples: bool = False - one_sample_per_line: bool = False - use_loss_weights: bool = False - do_sentence_training: bool = True - do_auxiliary_training: bool = True - aux_training_weight: float = 1.0 - ignore_non_hyphen: bool = False - non_punctuation_sample_ratio: float = None - adapter_warmup_steps: int = 0 - adapter_lr_multiplier: float = 1.0 - text_column: str = "text" - - # NEW PARAMS - use_subwords: bool = False - threshold: float = 0.01 - lookahead_split_layers: Optional[int] = None - min_sentence_length: int = 10 - - -def collate_fn(batch, args, label_args, label_dict, tokenizer, add_lang_ids: bool = False): - all_input_ids = [] - all_labels = [] - all_language_ids = [] - - all_attention_masks = [] - all_position_ids = [] - all_label_weights = [] - - for sample in batch: - # subword-level - if args.use_subwords: - input_ids = sample["input_ids"] - # char-level - else: - input_ids = [ord(c) for c in sample["input_ids"]] - lang = sample["lang"] - - newline_label_indices = sample["labels"] - newline_labels = [1 if i in newline_label_indices else 0 for i in range(len(input_ids))] - - block_ids = [0] * len(input_ids) - - input_ids, _, labels = corrupt_training( - input_ids, - block_ids, - newline_labels, - lang, - label_args, - label_dict=label_dict, - pack_samples=args.pack_samples, - # min_length=args.block_size, - tokenizer=tokenizer if args.use_subwords else None, - ) - - actual_block_size = args.block_size - 2 if args.use_subwords else args.block_size - - if len(input_ids) > args.block_size: - start = np.random.randint(0, len(input_ids) - actual_block_size) - input_ids = input_ids[start : start + actual_block_size] - labels = labels[start : start + actual_block_size] - elif len(input_ids) < actual_block_size: - padding = actual_block_size - len(input_ids) - # print(padding, lang) - input_ids += [tokenizer.pad_token_id] * padding if tokenizer else [0] * padding - labels += [0] * padding - - if tokenizer: - input_ids = [tokenizer.cls_token_id] + input_ids[:actual_block_size] + [tokenizer.sep_token_id] - # labels for CLS and SEP tokens are 0 (negative) - labels = [0] + labels[:actual_block_size] + [0] - else: - input_ids = input_ids[:actual_block_size] - labels = labels[:actual_block_size] - - input_ids = torch.tensor(input_ids, dtype=torch.long) - labels = torch.tensor(labels, dtype=torch.long) - position_ids = torch.arange(len(input_ids), dtype=torch.long) - label_weights = torch.ones(args.block_size, dtype=torch.float32) - if tokenizer: - attention_mask = (input_ids != tokenizer.pad_token_id).to(torch.float32) - else: - attention_mask = (input_ids != 0).to(torch.float32) - - all_input_ids.append(input_ids) - all_label_weights.append(label_weights) - all_labels.append(labels) - all_language_ids.append(Constants.LANG_CODE_TO_INDEX[lang] if add_lang_ids else 0) - - all_attention_masks.append(attention_mask) - all_position_ids.append(position_ids) - - out = { - "input_ids": torch.stack(all_input_ids, 0), - "attention_mask": torch.stack(all_attention_masks, 0), - "position_ids": torch.stack(all_position_ids, 0), - "language_ids": torch.tensor(all_language_ids, dtype=torch.long), - "label_weights": torch.stack(all_label_weights, 0), - "labels": torch.stack(all_labels, 0), - } - - return out - - -def main(): - parser = HfArgumentParser([Args, TrainingArguments, LabelArgs]) - - if sys.argv[1].endswith(".json"): - (args, training_args, label_args) = parser.parse_json_file(sys.argv[1]) - wandb_name = os.path.splitext(os.path.basename(sys.argv[1]))[0] - else: - (args, training_args, label_args) = parser.parse_args_into_dataclasses() - wandb_name = None - if xm.xrt_world_size() == 4: - # ensure same batch size on TPUv3 and TPUv4 - training_args.per_device_train_batch_size *= 2 - logger.warning(f"Per device train batch size: {training_args.per_device_train_batch_size}") - logger.warning( - f"Total train batch size: {training_args.per_device_train_batch_size * training_args.gradient_accumulation_steps* xm.xrt_world_size()}" - ) - - setup_logging(training_args) - set_seed(training_args.seed) - training_args.hub_strategy = "end" - training_args.save_total_limit = 1 - - num_labels = Constants.AUX_OFFSET + ((1 + len(Constants.PUNCTUATION_CHARS)) if args.do_auxiliary_training else 0) - if args.use_subwords: - if args.from_scratch: - config = SubwordXLMConfig( - args.model_name_or_path, - num_hidden_layers=args.num_hidden_layers, - num_labels=num_labels, - lookahead=args.lookahead, - lookahead_split_layers=args.lookahead_split_layers, - ) - backbone = SubwordXLMForTokenClassification(config) - - else: - config = SubwordXLMConfig.from_pretrained( - args.model_name_or_path, - num_hidden_layers=args.num_hidden_layers, - num_labels=num_labels, - lookahead=args.lookahead, - lookahead_split_layers=args.lookahead_split_layers, - ) - backbone = SubwordXLMForTokenClassification.from_pretrained( - args.model_name_or_path, - config=config, - ) - - backbone.config.base_model = args.model_name_or_path - tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) - - if args.lookahead: - assert args.lookahead % args.num_hidden_layers == 0 - - model = Model( - backbone, - loss_margin=args.loss_margin, - use_loss_weights=args.use_loss_weights, - do_sentence_training=args.do_sentence_training, - do_auxiliary_training=args.do_auxiliary_training, - aux_training_weight=args.aux_training_weight, - ) - - if training_args.local_rank == 0: - logger.warning(summary(model, depth=4)) - - def prepare_dataset( - num_workers=1, - include_languages=None, - shuffle=False, - split="train", - ): - with training_args.main_process_first(): - dlconf = DownloadConfig(cache_dir="/home/Markus/.cache/huggingface/datasets") - dataset = load_dataset("markus583/mC4-TEST", split=split, download_config=dlconf) - logger.warning(f"Loaded {split} dataset.") - # optional: delete downloaded dataset, it is stored in cache_dir now (but we delete it later) - # ~40GB on disk - # os.system("rm -rf /home/Markus/.cache/huggingface/datasets") - - if include_languages is not None: - include_languages = set(include_languages) - - dataset = dataset.filter( - lambda example: example["lang"] in include_languages, - num_proc=args.preprocessing_num_workers, - ) - logger.warning(f"Filtered to {len(dataset)} examples.") - - if shuffle: - dataset = dataset.shuffle(seed=42) - logger.warning("Shuffled dataset.") - - # "punctuation-specific sampling" in the paper - if args.non_punctuation_sample_ratio is not None: - languages_without_punctuation = { - lang_code - for lang_code in Constants.LANGINFO.index - if Constants.LANGINFO.loc[lang_code, "no_punctuation"] - } - - def drop_some_non_punctuation_samples(examples): - include_indices = set( - np.where([lang_code not in languages_without_punctuation for lang_code in examples["lang"]])[0] - ) - punctuation_indices = { - i for i in np.where(examples["ends_with_punctuation"])[0] if i in include_indices - } - - target_n_non_punct = int( - (len(punctuation_indices) * args.non_punctuation_sample_ratio) - / (1 - args.non_punctuation_sample_ratio) - ) - n_drop = (len(include_indices) - len(punctuation_indices)) - target_n_non_punct - - out = [True for _ in range(len(examples["ends_with_punctuation"]))] - - if n_drop <= 0: - return out - drop_indices = np.random.choice( - list(include_indices - punctuation_indices), - n_drop, - replace=False, - ) - - for i in drop_indices: - out[i] = False - - return out - - with training_args.main_process_first(): - dataset = dataset.filter( - drop_some_non_punctuation_samples, - batched=True, - batch_size=1_000_000, - num_proc=num_workers, - ) - - if args.do_auxiliary_training: - assert label_args.use_auxiliary - - if args.pack_samples: - assert not args.one_sample_per_line - - if not args.one_sample_per_line: - with training_args.main_process_first(): - dataset = dataset.map( - pack_sentences, - batched=True, - num_proc=num_workers, - fn_kwargs={ - "block_size": args.block_size, - "tokenizer": tokenizer, - "underflow_size": args.underflow_size, - "min_sentence_length": args.min_sentence_length, - }, - # a bit hacky but oh well, only drop if sentence - remove_columns=["ends_with_punctuation", "text"], - # load_from_cache_file=False - ) - - if split == "train" and args.use_subwords: - with training_args.main_process_first(): - for root, dirs, files in os.walk(os.environ.get("HF_DATASETS_CACHE")): - for file in files: - if file.startswith("m_c4-test-train"): - logger.warning(f"Removing {os.path.join(root, file)}") - os.remove(os.path.join(root, file)) - - logger.warning(f"Grouped {split} dataset.") - - return dataset - - valid_dataset = prepare_dataset( - num_workers=args.preprocessing_num_workers, - include_languages=args.include_languages, - shuffle=False, - split="valid", - ) - logger.warning(f"Valid dataset has {len(valid_dataset)} examples.") - - train_dataset = prepare_dataset( - num_workers=args.preprocessing_num_workers, - include_languages=args.include_languages, - shuffle=args.shuffle, - split="train", - ) - logger.warning(f"Train dataset has {len(train_dataset)} examples.") - - # print some samples from the dataset - count = 0 - while count < 5: - index = random.choice(range(len(train_dataset))) - sample = train_dataset[index] - - logger.warning(f"Sample {index} of the training set: {sample}.") - if tokenizer: - logger.warning(tokenizer.decode(sample["input_ids"])) - count += 1 - - eval_data = torch.load( - args.eval_data_path, - ) - - def compute_metrics(trainer): - metrics = {} - avg_metrics = defaultdict(lambda: []) - - model = trainer._wrap_model(trainer.model, training=False) - - for lang_code, lang_data in tqdm(eval_data.items(), desc="Evaluate!"): - if args.include_languages is not None and lang_code not in args.include_languages: - continue - - if trainer.args.process_index == 0 and args.do_sentence_training: - # with training_args.main_process_first(): - for dataset_name, dataset in lang_data["sentence"].items(): - if "corrupt" in dataset_name: - continue - score, info = evaluate_sentence( - lang_code, - dataset["data"], - model, - stride=128, - block_size=512, - batch_size=training_args.per_device_eval_batch_size, - threshold=args.threshold, - ) - metrics[f"{lang_code}_{dataset_name}_pr_auc"] = score - metrics[f"{lang_code}_{dataset_name}_f1"] = info["f1"] - metrics[f"{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] - metrics[f"{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] - avg_metrics[f"average_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"average_{dataset_name}_f1"].append(info["f1"]) - avg_metrics[f"average_{dataset_name}_f1_best"].append(info["f1_best"]) - avg_metrics[f"average_{dataset_name}_threshold_best"].append(info["threshold_best"]) - # if lang_code in ["zh", "ja", "my", "km"]: - # avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - # else: - # avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) - # score, _ = evaluate_sentence( - # lang_code, - # dataset["data"], - # model, - # stride=args.eval_stride, - # block_size=args.block_size, - # batch_size=training_args.per_device_eval_batch_size, - # do_lowercase=True, - # do_remove_punct=True, - # ) - # metrics[f"lower_rmp_{lang_code}_{dataset_name}_pr_auc"] = score - # avg_metrics[f"lower_rmp_average_{dataset_name}_pr_auc"].append(score) - # if lang_code in ["zh", "ja", "my", "km"]: - # avg_metrics[f"lower_rmp_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - # else: - # avg_metrics[f"lower_rmp_average_whitespace_{dataset_name}_pr_auc"].append(score) - # k-mer based evaluation - # for k in [2, 3, 4]: - # score, avg_acc, info = evaluate_sentence_kmers( - # lang_code, - # dataset["data"], - # model, - # stride=128, - # block_size=512, - # batch_size=training_args.per_device_eval_batch_size, - # k=k, - # # sample_pct=0.1, - # threshold=args.threshold, - # ) - # metrics[f"k_{k}_{lang_code}_{dataset_name}_pr_auc"] = score - # avg_metrics[f"k_{k}_average_{dataset_name}_pr_auc"].append(score) - # metrics[f"k_{k}_{lang_code}_{dataset_name}_acc"] = avg_acc - # avg_metrics[f"k_{k}_average_{dataset_name}_acc"].append(avg_acc) - # metrics[f"k_{k}_{lang_code}_{dataset_name}_f1"] = info["f1"] - # metrics[f"k_{k}_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] - # metrics[f"k_{k}_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] - # avg_metrics[f"k_{k}_average_{dataset_name}_f1"].append(info["f1"]) - # avg_metrics[f"k_{k}_average_{dataset_name}_f1_best"].append(info["f1_best"]) - # avg_metrics[f"k_{k}_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) - - # # if lang_code in ["zh", "ja", "my", "km"]: - # # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - # # avg_metrics[f"k_{k}_average_nonwhitespace_{dataset_name}_acc"].append(avg_acc) - # # else: - # # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_pr_auc"].append(score) - # # avg_metrics[f"k_{k}_average_whitespace_{dataset_name}_acc"].append(avg_acc) - # if k == 2: - # # keep keys for backwards compat in wandb - # metrics[f"pairwise_{lang_code}_{dataset_name}_pr_auc"] = score - # avg_metrics[f"pairwise_average_{dataset_name}_pr_auc"].append(score) - # metrics[f"pairwise_{lang_code}_{dataset_name}_acc"] = avg_acc - # avg_metrics[f"pairwise_average_{dataset_name}_acc"].append(avg_acc) - # metrics[f"pairwise_{lang_code}_{dataset_name}_f1"] = info["f1"] - # metrics[f"pairwise_{lang_code}_{dataset_name}_f1_best"] = info["f1_best"] - # metrics[f"pairwise_{lang_code}_{dataset_name}_threshold_best"] = info["threshold_best"] - # avg_metrics[f"pairwise_average_{dataset_name}_f1"].append(info["f1"]) - # avg_metrics[f"pairwise_average_{dataset_name}_f1_best"].append(info["f1_best"]) - # avg_metrics[f"pairwise_average_{dataset_name}_threshold_best"].append(info["threshold_best"]) - if lang_code in ["zh", "ja", "my", "km"]: - avg_metrics[f"average_nonwhitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"average_nonwhitespace_{dataset_name}_f1"].append(info["f1"]) - avg_metrics[f"average_nonwhitespace_{dataset_name}_f1_best"].append(info["f1_best"]) - avg_metrics[f"average_nonwhitespace_{dataset_name}_threshold_best"].append( - info["threshold_best"] - ) - else: - avg_metrics[f"average_whitespace_{dataset_name}_pr_auc"].append(score) - avg_metrics[f"average_whitespace_{dataset_name}_f1"].append(info["f1"]) - avg_metrics[f"average_whitespace_{dataset_name}_f1_best"].append(info["f1_best"]) - avg_metrics[f"average_whitespace_{dataset_name}_threshold_best"].append(info["threshold_best"]) - - for name, values in avg_metrics.items(): - if len(values) > 1: - metrics[name] = np.mean(values) - - return metrics - - if "wandb" in training_args.report_to and training_args.process_index == 0: - wandb.init(name=wandb_name, project="sentence", entity="markus_583") - wandb.config.update(args) - wandb.config.update(training_args) - wandb.config.update(label_args) - - model.config.wandb_run_id = wandb.run.id - - for file in glob(os.path.join(os.path.dirname(__file__), "*.py")): - wandb.save(os.path.abspath(file), policy="now") - # also 1 dir above - wandb.save(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", file)), policy="now") - - label_dict = get_subword_label_dict(label_args, tokenizer) if args.use_subwords else get_label_dict(label_args) - logger.info(f"Label dict has {len(label_dict)} entries.") - - # needed in the trainer - training_args.adapter_warmup_steps = args.adapter_warmup_steps - training_args.adapter_lr_multiplier = args.adapter_lr_multiplier - - # give .map in multiprocessing enough of time to finish, to be safe - time.sleep(10) - if training_args.local_rank == 0: - # since both share the *same* cache_dir, we cannot simply call dataset.cleanup_cache_files() - # because that would remove the cache files of the other dataset! - cleanup_cache_files([train_dataset, valid_dataset]) - logger.warning("Cleaned up cache files.") - time.sleep(10) - - trainer = Trainer( - model, - training_args, - train_dataset=train_dataset, - eval_dataset=valid_dataset, - compute_metrics=compute_metrics, - data_collator=partial( - collate_fn, - args=args, - label_args=label_args, - label_dict=label_dict, - tokenizer=tokenizer if args.use_subwords else None, - add_lang_ids=not args.use_subwords, - ), - ) - - trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) - trainer.save_model() - trainer.save_state() - # Pattern for checkpoint directories - checkpoint_pattern = os.path.join(training_args.output_dir, "checkpoint-*") - - # Use glob.glob to find all directories matching the pattern - for checkpoint_dir in glob(checkpoint_pattern): - if os.path.isdir(checkpoint_dir): - shutil.rmtree(checkpoint_dir) - - -def _mp_fn(index): - # For xla_spawn (TPUs) - main() - - -if __name__ == "__main__": - # try: - main() - # except Exception: - # # extype, value, tb = sys.exc_info() - # # tb.print_exc() - # # pdb.post_mortem(tb) - # pass diff --git a/wtpsplit/train/trainer.py b/wtpsplit/train/trainer.py index ddb7f6f6..ca25780b 100644 --- a/wtpsplit/train/trainer.py +++ b/wtpsplit/train/trainer.py @@ -131,7 +131,7 @@ def create_scheduler(self, num_training_steps: int, optimizer: torch.optim.Optim if self.lr_scheduler is None: warmup_steps = self.args.get_warmup_steps(self.args.max_steps) - # MODIFIED: add lang adapter lr scheduler + # MODIFIED: add lang adapter lr scheduler (wtp only) def lr_lambda(current_step: int): if current_step < self.args.adapter_warmup_steps: return 0.0 diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 024764c3..cfae534a 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -83,13 +83,9 @@ class LabelArgs: custom_punctuation_file: str = None retain_first_consecutive_punctuation: bool = True non_whitespace_remove_spaces: bool = True - case_corruption_prob_after_newline: float = 0.0 - case_corruption_prob_after_punct: float = 0.0 corrupt_entire_chunk_prob: float = 0.0 corrupt_entire_chunk_strategy: str = "mix" corrupt_entire_chunk_prob_full: float = 0.5 - use_all_labels: bool = False - use_all_labels_max_length: int = 3 def __post_init__(self): if self.custom_punctuation_file: @@ -120,24 +116,9 @@ def get_subword_label_dict(label_args, tokenizer): for i, c in enumerate(Constants.PUNCTUATION_CHARS): token_id = tokenizer.convert_tokens_to_ids(c) label_dict[token_id] = 1 + Constants.AUX_OFFSET + i - # logger.info( - # f"auxiliary character {c} has token ID {token_id} and label {label_dict[token_id]}, decoded: {tokenizer.decode([token_id])}" - # ) + if token_id == tokenizer.unk_token_id: n_unks += 1 - if label_args.use_all_labels: - # check where c is in tokenizer.vocab keys - for i_t, (token, token_idx) in enumerate(tokenizer.vocab.items()): - if ( - c in token - and token_idx not in label_dict - and len(token) < label_args.use_all_labels_max_length - and not any(i.isdigit() for i in token) - ): - label_dict[token_idx] = 1 + Constants.AUX_OFFSET + i - # logger.warning( - # f"Special auxiliary character {c} has token ID {token_idx} and label {label_dict[token_idx]}, decoded: {tokenizer.decode([token_idx])}" - # ) logger.info(f"found {n_unks} UNK tokens in auxiliary characters") @@ -258,7 +239,6 @@ def corrupt_asr(text: str, lang): return corrupted_sentences -# does the steps in Figure 2 of the paper def corrupt_training( input_ids, block_ids, @@ -274,7 +254,7 @@ def corrupt_training( if random.random() < label_args.corrupt_entire_chunk_prob: # choose corruption strategy if label_args.corrupt_entire_chunk_strategy == "mix": - corrupt_strategy = "full" if random.random() < label_args.corrupt_entire_chunk_prob_full else "asr" + corrupt_strategy = "full" # if random.random() < label_args.corrupt_entire_chunk_prob_full else "asr" else: corrupt_strategy = label_args.corrupt_entire_chunk_strategy @@ -380,15 +360,12 @@ def corrupt_training( del input_ids[i + 1] del labels[i + 1] del block_ids[i + 1] - if random.random() < label_args.case_corruption_prob_after_newline and i + 1 < len(input_ids): - input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) elif label_args.use_auxiliary and labels[i] > Constants.AUX_OFFSET: # auxiliary if pack_samples: raise NotImplementedError() if random.random() < auxiliary_remove_prob: - removed_aux_char = False if label_args.retain_first_consecutive_punctuation: # remove only if the next token is not a newline # this retains the current auxiliary character, even though we decided to remove it @@ -397,20 +374,12 @@ def corrupt_training( del input_ids[i + 1] del labels[i + 1] del block_ids[i + 1] - removed_aux_char = True else: # in case of something like ".\n", this removes the "." and the \n label (=1) # so the newline in the text is kept, but the label is removed! del input_ids[i + 1] del labels[i + 1] del block_ids[i + 1] - removed_aux_char = True - if ( - random.random() < label_args.case_corruption_prob_after_punct - and removed_aux_char - and i + 1 < len(input_ids) - ): - input_ids, labels, block_ids = _corrupt_case(tokenizer, input_ids, labels, block_ids, i) try: i = i + 1 + next(index for index, label in enumerate(labels[i + 1 :]) if label != 0) @@ -420,42 +389,6 @@ def corrupt_training( return input_ids, block_ids, labels -def _corrupt_case(tokenizer: AutoTokenizer, input_ids: List[int], labels: List[int], block_ids: List[int], i: int): - if not tokenizer: - raise NotImplementedError() - - token = tokenizer.convert_ids_to_tokens(input_ids[i + 1]) - insert_ = token.startswith("▁") - if insert_: - token = token[1:] - - do_exchange = token.istitle() - if do_exchange: - token = token.lower() - - # Re-tokenize - token_ids = tokenizer.encode(token if not insert_ else "▁" + token, add_special_tokens=False) - if len(token_ids) == 0 or input_ids[i + 1] == tokenizer.unk_token_id: - # UNK or whitespace token, remove it - del input_ids[i + 1] - del labels[i + 1] - del block_ids[i + 1] - else: - if token_ids[0] == tokenizer.convert_tokens_to_ids("▁"): - token_ids = token_ids[1:] - elif len(token_ids) > 1: - # Replace the token with the remaining token - input_ids[i + 1] = token_ids[0] - for token_id in token_ids[1:]: - input_ids.insert(i + 2, token_id) - labels.insert(i + 2, 0) - block_ids.insert(i + 2, block_ids[i + 1]) - elif len(token_ids) == 1: - input_ids[i + 1] = token_ids[0] - - return input_ids, labels, block_ids - - def indices_to_sentences(text, indices, strip_whitespace=False): sentences = [] @@ -537,9 +470,6 @@ def reconstruct_sentences(text, partial_sentences): use_auxiliary=True, auxiliary_remove_prob=1.0, newline_whitespace_prob=1.0, - case_corruption_prob_after_punct=1.0, - case_corruption_prob_after_newline=1.0, - use_all_labels=True, ) label_dict = get_subword_label_dict(label_args, tokenizer) print(len(label_dict)) @@ -551,26 +481,7 @@ def reconstruct_sentences(text, partial_sentences): input_ids, block_ids, labels = corrupt_training( input_ids, block_ids, "en", label_args, label_dict, tokenizer=tokenizer ) - # print(input_ids) - # print(labels) - # print(tokenizer.tokenize(text)) - # print([(tokenizer.decode([input_id]), label) for input_id, label in zip(input_ids, labels)]) - # print("newline labels in text:") - # print(np.where(np.array(labels) == 1)) - # print("newline ids in output text:") - # print(np.where(np.array(input_ids) == tokenizer.all_special_ids[-1])) - # print(tokenizer.decode(input_ids)) - # print(tokenizer.decode(input_ids)) - - # ords = [ord(c) for c in text] - # block_ords = [0] * len(ords) - # label_args = LabelArgs(use_auxiliary=True, auxiliary_remove_prob=1.0) - # label_dict = get_label_dict(label_args) - - # ords, block_ords, labels = corrupt(ords, block_ords, "en", label_args, label_dict) - # print("ords", ords) - # print("labels", labels) - # print("newline labels in text:") - # print(np.where(np.array(labels) == 1)) - # print("newline ids in output text:") - # print(np.where(np.array([ord("\n")]) == ords)) + print(input_ids) + print(labels) + print(tokenizer.tokenize(text)) + print([(tokenizer.decode([input_id]), label) for input_id, label in zip(input_ids, labels)]) From c6983d5ed7dd0c3616323040763ab5f6e1eb6303 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:03:15 +0000 Subject: [PATCH 225/262] integrate igor's code --- wtpsplit/data_acquisition/extract_all_data.py | 736 ++++++++++++++++++ .../evaluation/stat_tests/permutation_test.py | 167 ++++ .../stat_tests/permutation_test_data.py | 242 ++++++ .../stat_tests/permutation_test_utils.py | 135 ++++ wtpsplit/train/adaptertrainer.py | 1 + wtpsplit/train/train_SM.py | 509 ++++++++++++ 6 files changed, 1790 insertions(+) create mode 100644 wtpsplit/data_acquisition/extract_all_data.py create mode 100644 wtpsplit/evaluation/stat_tests/permutation_test.py create mode 100644 wtpsplit/evaluation/stat_tests/permutation_test_data.py create mode 100644 wtpsplit/evaluation/stat_tests/permutation_test_utils.py create mode 100644 wtpsplit/train/train_SM.py diff --git a/wtpsplit/data_acquisition/extract_all_data.py b/wtpsplit/data_acquisition/extract_all_data.py new file mode 100644 index 00000000..68a923bf --- /dev/null +++ b/wtpsplit/data_acquisition/extract_all_data.py @@ -0,0 +1,736 @@ +import glob +import gzip +import json +import os +import random +from dataclasses import dataclass +from io import BytesIO + +import conllu +import numpy as np +import requests +import torch +from datasets import load_dataset +from mosestokenizer import MosesTokenizer +from tqdm.auto import tqdm +from transformers import HfArgumentParser + +from wtpsplit.evaluation import preprocess_sentence +from wtpsplit.utils import Constants + +UD_TREEBANK_PATH = "../data/ud-treebanks-v2.13" # source: https://universaldependencies.org/#download + +ERSATZ_DATA_PATH = "../data/ersatz-test-suite/segmented" # source: https://github.com/rewicks/ersatz-test-suite + +ERSATZ_TEST_DATASETS = { + "ar": "iwsltt2017.ar", + "cs": "wmt20.cs-en.cs", + "de": "wmt20.de-en.de", + "en": "wsj.03-06.en", + "es": "wmt13.es-en.es", + "et": "wmt18.et-en.et", + "fi": "wmt19.fi-en.fi", + "fr": "wmt20.fr-de.fr", + "gu": "wmt19.gu-en.gu", + "hi": "wmt14.hi-en.hi", + "iu": "wmt20.iu-en.iu", + "ja": "wmt20.ja-en.ja", + "kk": "wmt19.kk-en.kk", + "km": "wmt20.km-en.km", + "lt": "wmt19.lt-en.lt", + "lv": "wmt17.lv-en.lv", + "pl": "wmt20.pl-en.pl", + "ps": "wmt20.ps-en.ps", + "ro": "wmt16.ro-en.ro", + "ru": "wmt20.ru-en.ru", + "ta": "wmt20.ta-en.ta", + "tr": "wmt18.tr-en.tr", + "zh": "wmt20.zh-en.zh", +} +ERSATZ_TRAIN_DATASETS = { + "ar": "news-commentary-v15.dev.ar", + "cs": "wmt18.cs-en.cs", + "de": "wmt19.de-en.de", + "en": "merged.nc-wsj.en", + "es": None, + "et": "newscrawl.2019.dev.et", + "fi": "wmt18.fi-en.fi", + "fr": "wmt15.fr-en.fr", + "gu": "newscrawl.2019.dev.gu", + "hi": "newscrawl.2013.dev.hi", + "iu": "nhi-3.0.iu", + "ja": "newscrawl.2019.dev.ja", + "kk": "newscrawl.2019.dev.kk", + "km": "wikimatrix.dev.km", + "lt": "newscrawl.2019.dev.lt", + "lv": "newscrawl.2019.dev.lv", + "pl": "newscrawl.2019.dev.pl", + "ps": "wikimatrix.dev.ps", + "ro": "newscrawl.2019.dev.ro", + "ru": "wmt18.ru-en.ru", + "ta": "newscrawl.2019.dev.ta", + "tr": "wmt16.tr-en.tr", + "zh": "wmt18.zh-en.zh", +} + + +punct_chars = set(Constants.PUNCTUATION_CHARS) + + +def corrupt_asr(sentences, lang): + # first corruption scheme of SM in the SaT paper + if sentences is None: + return None + + separator = Constants.SEPARATORS.get(lang, " ") + + if separator == "": + corrupted_sentences = [ + preprocess_sentence("".join([char for char in sentence if char not in punct_chars]).lower()) + for sentence in sentences + ] + return corrupted_sentences + + try: + tokenizer = MosesTokenizer(lang) + except: + corrupted_sentences = [ + preprocess_sentence("".join([char for char in sentence if char not in punct_chars]).lower()) + for sentence in sentences + ] + return corrupted_sentences + + tokenized_sentences = [tokenizer.tokenize(sentence) for sentence in sentences] + corrupted_tokenized_sentences = [ + [token for token in tokens if token not in punct_chars] for tokens in tokenized_sentences + ] + + corrupted_sentences = [ + preprocess_sentence(tokenizer.detokenize(corrupted_tokens).lower()) + for corrupted_tokens in corrupted_tokenized_sentences + ] + + return corrupted_sentences + + +def corrupt_social_media(sentences, lang): + # second corruption scheme of SM in the SaT paper + if sentences is None: + return None + + corrupted_sentences = [] + for sentence in sentences: + if random.random() < 0.5: + sentence = "".join([char for char in sentence if char not in punct_chars]) + if random.random() < 0.5: + sentence = sentence.lower() + + for punct in punct_chars: + count = 0 + while random.random() < 0.5: + count += 1 + sentence = sentence.replace(punct, punct * count) + + sentence = preprocess_sentence(sentence) + corrupted_sentences.append(sentence) + + return corrupted_sentences + + +@dataclass +class Args: + output_file: str = "../data/preprocessed_training_data/all_data.pth" + include_train_data: bool = True + cache_dir: str = "../data/cache/" + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + + eval_data = {lang_code: {"sentence": {}, "compound": {}} for lang_code in Constants.LANGINFO.index} + + # Ersatz data + for lang_code in tqdm(Constants.LANGINFO.index): + if lang_code in ERSATZ_TEST_DATASETS: + eval_data[lang_code]["sentence"]["ersatz"] = { + "meta": { + "train_data": ( + [ + preprocess_sentence(line) + for line in open( + os.path.join( + ERSATZ_DATA_PATH, + lang_code, + ERSATZ_TRAIN_DATASETS[lang_code], + ) + ) + ] + if args.include_train_data and ERSATZ_TRAIN_DATASETS[lang_code] is not None + else None + ), + }, + "data": [ + preprocess_sentence(line) + for line in open(os.path.join(ERSATZ_DATA_PATH, lang_code, ERSATZ_TEST_DATASETS[lang_code])) + ], + } + + eval_data[lang_code]["sentence"]["ersatz-corrupted-asr"] = { + "meta": { + "train_data": ( + corrupt_asr( + ( + eval_data[lang_code]["sentence"]["ersatz"]["meta"]["train_data"][:10000] + if eval_data[lang_code]["sentence"]["ersatz"]["meta"]["train_data"] is not None + else None + ), + lang_code, + ) + ) + }, + "data": corrupt_asr( + eval_data[lang_code]["sentence"]["ersatz"]["data"][:10000], + lang_code, + ), + } + + eval_data[lang_code]["sentence"]["ersatz-corrupted-social-media"] = { + "meta": { + "train_data": ( + corrupt_social_media( + ( + eval_data[lang_code]["sentence"]["ersatz"]["meta"]["train_data"][:10000] + if eval_data[lang_code]["sentence"]["ersatz"]["meta"]["train_data"] is not None + else None + ), + lang_code, + ) + ) + }, + "data": corrupt_social_media( + eval_data[lang_code]["sentence"]["ersatz"]["data"][:10000], + lang_code, + ), + } + + # UD + OPUS100 sentences + TED + NLLB + for lang_code in tqdm(Constants.LANGINFO.index): + opus_dset_name = Constants.LANGINFO.loc[lang_code, "opus100"] + + if opus_dset_name not in (np.nan, None): + other_lang_code = set(opus_dset_name.split("-")) - {lang_code} + assert len(other_lang_code) == 1 + other_lang_code = other_lang_code.pop() + + dset_args = ["opus100", opus_dset_name] + + try: + opus100_sentences = [ + preprocess_sentence(sample[lang_code]) + for sample in load_dataset(*dset_args, split="test", cache_dir=args.cache_dir)["translation"] + if sample[lang_code].strip() != sample[other_lang_code].strip() + ] + try: + opus100_train_sentences = [ + preprocess_sentence(sample[lang_code]) + for sample in load_dataset(*dset_args, split="train", cache_dir=args.cache_dir)["translation"] + if sample[lang_code].strip() != sample[other_lang_code].strip() + ] + except ValueError: + opus100_train_sentences = None + except ValueError: + opus100_sentences = [ + preprocess_sentence(sample[lang_code]) + for sample in load_dataset(*dset_args, split="train", cache_dir=args.cache_dir)["translation"] + if sample[lang_code].strip() != sample[other_lang_code].strip() + ] + opus100_train_sentences = None + + opus100_train_sentences = opus100_train_sentences[:10000] if opus100_train_sentences is not None else None + + eval_data[lang_code]["sentence"]["opus100"] = { + "meta": {"train_data": (opus100_train_sentences if args.include_train_data else None)}, + "data": opus100_sentences, + } + + eval_data[lang_code]["sentence"]["opus100-corrupted-asr"] = { + "meta": { + "train_data": ( + corrupt_asr( + (opus100_train_sentences), + lang_code, + ) + if args.include_train_data + else None + ) + }, + "data": corrupt_asr(opus100_sentences[:10000], lang_code), + } + + eval_data[lang_code]["sentence"]["opus100-corrupted-social-media"] = { + "meta": { + "train_data": ( + corrupt_social_media( + (opus100_train_sentences), + lang_code, + ) + if args.include_train_data + else None + ) + }, + "data": corrupt_social_media(opus100_sentences[:10000], lang_code), + } + + if Constants.LANGINFO.loc[lang_code, "ud"] not in (np.nan, None): + ud_data = conllu.parse( + open( + glob.glob( + os.path.join( + UD_TREEBANK_PATH, + Constants.LANGINFO.loc[lang_code, "ud"], + "*-ud-test.conllu", + ) + )[0] + ).read() + ) + + try: + ud_train_data = conllu.parse( + open( + glob.glob( + os.path.join( + UD_TREEBANK_PATH, + Constants.LANGINFO.loc[lang_code, "ud"], + "*-ud-train.conllu", + ) + )[0] + ).read() + ) + ud_train_sentences = [preprocess_sentence(sentence.metadata["text"]) for sentence in ud_train_data][ + :10000 + ] + except IndexError: + ud_train_sentences = None + + ud_sentences = [preprocess_sentence(sentence.metadata["text"]) for sentence in ud_data] + + eval_data[lang_code]["sentence"]["ud"] = { + "meta": {"train_data": (ud_train_sentences if args.include_train_data else None)}, + "data": ud_sentences, + } + + eval_data[lang_code]["sentence"]["ud-corrupted-asr"] = { + "meta": { + "train_data": (corrupt_asr(ud_train_sentences, lang_code) if args.include_train_data else None) + }, + "data": corrupt_asr(ud_sentences, lang_code), + } + + eval_data[lang_code]["sentence"]["ud-corrupted-social-media"] = { + "meta": { + "train_data": ( + corrupt_social_media(ud_train_sentences, lang_code) if args.include_train_data else None + ) + }, + "data": corrupt_social_media(ud_sentences, lang_code), + } + + # TED 2020 + url = f"https://object.pouta.csc.fi/OPUS-TED2020/v1/mono/{lang_code}.txt.gz" + res = requests.get(url) + + if res.status_code == 200: + with gzip.open(BytesIO(res.content), "rt", encoding="utf-8") as f: + sentences = f.read().splitlines() + + sentences = sentences[:20000] + + sentences = [preprocess_sentence(sentence) for sentence in sentences] + + train_sentences = sentences[: len(sentences) // 2] + test_sentences = sentences[len(sentences) // 2 :] + + eval_data[lang_code]["sentence"]["ted2020-corrupted-asr"] = { + "meta": {"train_data": (corrupt_asr(train_sentences, lang_code) if args.include_train_data else None)}, + "data": corrupt_asr(test_sentences, lang_code), + } + + eval_data[lang_code]["sentence"]["ted2020-corrupted-social-media"] = { + "meta": { + "train_data": ( + corrupt_social_media(train_sentences, lang_code) if args.include_train_data else None + ) + }, + "data": corrupt_social_media(test_sentences, lang_code), + } + + else: + print(f"Failed to download TED2020 data for {lang_code}") + + for lang_code in ["ceb", "jv", "mn", "yo"]: + url = f"https://object.pouta.csc.fi/OPUS-NLLB/v1/mono/{lang_code}.txt.gz" + res = requests.get(url) + + if res.status_code == 200: + with gzip.open(BytesIO(res.content), "rt", encoding="utf-8") as f: + sentences = f.read().splitlines() + + random.shuffle(sentences) # because they come alphabetically sorted + + sentences = sentences[:20000] + + sentences = [preprocess_sentence(sentence) for sentence in sentences] + + else: + raise Exception + + train_sentences = sentences[: len(sentences) // 2] + test_sentences = sentences[len(sentences) // 2 :] + + eval_data[lang_code]["sentence"]["nllb"] = { + "meta": {"train_data": (train_sentences if args.include_train_data else None)}, + "data": test_sentences, + } + + eval_data[lang_code]["sentence"]["nllb-corrupted-asr"] = { + "meta": {"train_data": (corrupt_asr(train_sentences, lang_code) if args.include_train_data else None)}, + "data": corrupt_asr(test_sentences, lang_code), + } + + eval_data[lang_code]["sentence"]["nllb-corrupted-social-media"] = { + "meta": { + "train_data": (corrupt_social_media(train_sentences, lang_code) if args.include_train_data else None) + }, + "data": corrupt_social_media(test_sentences, lang_code), + } + + # UD Code-Switching Corpora + + # UD_Turkish_German-SAGT + + ud_data = conllu.parse( + open( + glob.glob( + os.path.join( + UD_TREEBANK_PATH, + "UD_Turkish_German-SAGT", + "*-ud-test.conllu", + ) + )[0] + ).read() + ) + + ud_train_data = conllu.parse( + open( + glob.glob( + os.path.join( + UD_TREEBANK_PATH, + "UD_Turkish_German-SAGT", + "*-ud-train.conllu", + ) + )[0] + ).read() + ) + + ud_train_sentences = [preprocess_sentence(sentence.metadata["text"]) for sentence in ud_train_data] + ud_test_sentences = [preprocess_sentence(sentence.metadata["text"]) for sentence in ud_data] + + eval_data["tr-de"] = {} + eval_data["tr-de"]["sentence"] = {} + + eval_data["tr-de"]["sentence"]["code-switching"] = { + "meta": {"train_data": ud_train_sentences}, + "data": ud_test_sentences, + } + + eval_data["tr-de"]["sentence"]["code-switching-corrupted-asr"] = { + "meta": {"train_data": corrupt_asr(ud_train_sentences, "en")}, + "data": corrupt_asr(ud_test_sentences, "en"), + } + + eval_data["tr-de"]["sentence"]["code-switching-corrupted-social-media"] = { + "meta": {"train_data": corrupt_social_media(ud_train_sentences, "en")}, + "data": corrupt_social_media(ud_test_sentences, "en"), + } + + # UD_Spanish_English-Miami + + ud_data = conllu.parse( + open( + glob.glob( + os.path.join( + UD_TREEBANK_PATH, + "UD_Spanish_English-Miami", + "*-ud-test.conllu", + ) + )[0] + ).read() + ) + + ud_sentences = [preprocess_sentence(sentence.metadata["text"]) for sentence in ud_data] + ud_train_sentences = ud_sentences[len(ud_sentences) // 2 :] + ud_test_sentences = ud_sentences[: len(ud_sentences) // 2] + + eval_data["es-en"] = {} + eval_data["es-en"]["sentence"] = {} + + eval_data["es-en"]["sentence"]["code-switching"] = { + "meta": {"train_data": ud_train_sentences}, + "data": ud_test_sentences, + } + + eval_data["es-en"]["sentence"]["code-switching-corrupted-asr"] = { + "meta": {"train_data": corrupt_asr(ud_train_sentences, "es")}, + "data": corrupt_asr(ud_test_sentences, "es"), + } + + eval_data["es-en"]["sentence"]["code-switching-corrupted-social-media"] = { + "meta": {"train_data": corrupt_social_media(ud_train_sentences, "es")}, + "data": corrupt_social_media(ud_test_sentences, "es"), + } + + # Short sequences + + # serbian + + serbian_train_data = conllu.parse(open("../data/short-sequences/serbian/reldi-normtagner-sr-train.conllu").read()) + + serbian_train_tweets = [] + tweet_sentences = [] + for sentence in serbian_train_data: + if "newdoc id" in sentence.metadata: + if tweet_sentences: + serbian_train_tweets.append(tweet_sentences) + tweet_sentences = [] + tweet_sentences.append(preprocess_sentence(sentence.metadata["text"])) + + if tweet_sentences: + serbian_train_tweets.append(tweet_sentences) + + serbian_test_data = conllu.parse(open("../data/short-sequences/serbian/reldi-normtagner-sr-test.conllu").read()) + + serbian_test_tweets = [] + tweet_sentences = [] + for sentence in serbian_test_data: + if "newdoc id" in sentence.metadata: + if tweet_sentences: + serbian_test_tweets.append(tweet_sentences) + tweet_sentences = [] + tweet_sentences.append(preprocess_sentence(sentence.metadata["text"])) + + if tweet_sentences: + serbian_test_tweets.append(tweet_sentences) + + serbian_train_tweets = [tweet for tweet in serbian_train_tweets if len(tweet) > 1] + serbian_test_tweets = [tweet for tweet in serbian_test_tweets if len(tweet) > 1] + + eval_data["sr"]["sentence"]["short-sequences"] = { + "meta": {"train_data": serbian_train_tweets}, + "data": serbian_test_tweets, + } + + eval_data["sr"]["sentence"]["short-sequences-corrupted-asr"] = { + "meta": {"train_data": [corrupt_asr(s, "sr") for s in serbian_train_tweets]}, + "data": [corrupt_asr(s, "sr") for s in serbian_test_tweets], + } + + eval_data["sr"]["sentence"]["short-sequences-corrupted-social-media"] = { + "meta": {"train_data": [corrupt_social_media(s, "sr") for s in serbian_train_tweets]}, + "data": [corrupt_social_media(s, "sr") for s in serbian_test_tweets], + } + + # slovenian + + slovenian_data = conllu.parse( + open("../data/short-sequences/slovenian/Janes-Tag.3.0.CoNLL-U/janes-rsdo.ud.connlu").read() + ) + + slovenian_tweets = [] + tweet_sentences = [] + for sentence in slovenian_data: + if "newdoc id" in sentence.metadata: + if tweet_sentences: + slovenian_tweets.append(tweet_sentences) + tweet_sentences = [] + tweet_sentences.append(preprocess_sentence(sentence.metadata["text"])) + + if tweet_sentences: + slovenian_tweets.append(tweet_sentences) + + random.shuffle(slovenian_tweets) + + # keep only if more than one sentence in a tweet + slovenian_tweets = [tweet for tweet in slovenian_tweets if len(tweet) > 1] + + slovenian_train_tweeets = slovenian_tweets[: len(slovenian_tweets) // 2] + slovenian_test_tweets = slovenian_tweets[len(slovenian_tweets) // 2 :] + + eval_data["sl"]["sentence"]["short-sequences"] = { + "meta": {"train_data": slovenian_train_tweeets}, + "data": slovenian_test_tweets, + } + + eval_data["sl"]["sentence"]["short-sequences-corrupted-asr"] = { + "meta": {"train_data": [corrupt_asr(s, "sl") for s in slovenian_train_tweeets]}, + "data": [corrupt_asr(s, "sl") for s in slovenian_test_tweets], + } + + eval_data["sl"]["sentence"]["short-sequences-corrupted-social-media"] = { + "meta": {"train_data": [corrupt_social_media(s, "sl") for s in slovenian_train_tweeets]}, + "data": [corrupt_social_media(s, "sl") for s in slovenian_test_tweets], + } + + # LEGAL + + langs = ["de", "en", "es", "fr", "it"] + + all_subset_data = { + lang: { + "laws": {"train": [], "test": []}, + "judgements": {"train": [], "test": []}, + } + for lang in langs + } + + for lang in tqdm(langs, desc="Legal data"): + data_dir = f"../data/MultiLegalSBD/data/{lang}/gold/" + + all_files = glob.glob(f"{data_dir}/*_test.jsonl") + subsets = [file.split("/")[-1].split("_test.jsonl")[0] for file in all_files] + + for subset in subsets: + if subset == "Constitution": + continue + + train_data = [] + + with open( + f"../data/MultiLegalSBD/data/{lang}/gold/{subset}_train.jsonl", + "r", + encoding="utf-8", + ) as f: + for line in f: + train_data.append(json.loads(line)) + + train_subset_sentences = [] + for doc in train_data: + doc_sentences = [] + text = doc["text"] + for span in doc["spans"]: + sentence = text[span["start"] : span["end"]] + doc_sentences.append(preprocess_sentence(sentence)) + train_subset_sentences.append(doc_sentences) + + test_data = [] + + test_data_file = f"../data/MultiLegalSBD/data/{lang}/gold/{subset}_test.jsonl" + + with open( + test_data_file, + "r", + encoding="utf-8", + ) as f: + for line in f: + test_data.append(json.loads(line)) + + test_subset_sentences = [] + for doc in test_data: + doc_sentences = [] + text = doc["text"] + for span in doc["spans"]: + sentence = text[span["start"] : span["end"]] + doc_sentences.append(preprocess_sentence(sentence)) + test_subset_sentences.append(doc_sentences) + + eval_data[lang]["sentence"][f"legal-{subset}"] = { + "meta": {"train_data": train_subset_sentences}, + "data": test_subset_sentences, + } + + eval_data[lang]["sentence"][f"legal-{subset}-corrupted-asr"] = { + "meta": {"train_data": [corrupt_asr(s, lang) for s in train_subset_sentences]}, + "data": [corrupt_asr(s, lang) for s in test_subset_sentences], + } + + eval_data[lang]["sentence"][f"legal-{subset}-corrupted-social-media"] = { + "meta": {"train_data": [corrupt_social_media(s, lang) for s in train_subset_sentences]}, + "data": [corrupt_social_media(s, lang) for s in test_subset_sentences], + } + + subsets2set = { + "CD_jug": "judgements", + "gesCode": "laws", + "CD_multi_legal": "judgements", + "CD_wipolex": "judgements", + "CivilCode": "laws", + "CriminalCode": "laws", + "CD_swiss_judgement": "judgements", + } + + if lang != "en": + set = subsets2set[subset] + else: + set = "judgements" + + all_subset_data[lang][set]["train"].extend(train_subset_sentences) + all_subset_data[lang][set]["test"].extend(test_subset_sentences) + + # constitution + + if lang in ["de", "en"]: + continue + + test_data = [] + test_data_file = f"../data/MultiLegalSBD/data/{lang}/gold/Constitution.jsonl" + with open( + test_data_file, + "r", + encoding="utf-8", + ) as f: + for line in f: + test_data.append(json.loads(line)) + + test_subset_sentences = [] + for doc in test_data: + doc_sentences = [] + text = doc["text"] + for span in doc["spans"]: + sentence = text[span["start"] : span["end"]] + doc_sentences.append(preprocess_sentence(sentence)) + test_subset_sentences.append(doc_sentences) + + eval_data[lang]["sentence"]["legal-constitution"] = { + "meta": {"train_data": None}, + "data": test_subset_sentences, + } + + eval_data[lang]["sentence"]["legal-constitution-corrupted-asr"] = { + "meta": {"train_data": None}, + "data": [corrupt_asr(s, lang) for s in test_subset_sentences], + } + + eval_data[lang]["sentence"]["legal-constitution-corrupted-social-media"] = { + "meta": {"train_data": None}, + "data": [corrupt_social_media(s, lang) for s in test_subset_sentences], + } + + all_subset_data[lang]["laws"]["test"].extend(test_subset_sentences) + + for lang in all_subset_data: + for set in ["laws", "judgements"]: + eval_data[lang]["sentence"][f"legal-all-{set}"] = { + "meta": {"train_data": all_subset_data[lang][set]["train"]}, + "data": all_subset_data[lang][set]["test"], + } + + eval_data[lang]["sentence"][f"legal-all-{set}-corrupted-asr"] = { + "meta": {"train_data": [corrupt_asr(s, lang) for s in all_subset_data[lang][set]["train"]]}, + "data": [corrupt_asr(s, lang) for s in all_subset_data[lang][set]["test"]], + } + + eval_data[lang]["sentence"][f"legal-all-{set}-corrupted-social-media"] = { + "meta": {"train_data": [corrupt_social_media(s, lang) for s in all_subset_data[lang][set]["train"]]}, + "data": [corrupt_social_media(s, lang) for s in all_subset_data[lang][set]["test"]], + } + + torch.save(eval_data, args.output_file.replace(".pth", "-all.pth")) diff --git a/wtpsplit/evaluation/stat_tests/permutation_test.py b/wtpsplit/evaluation/stat_tests/permutation_test.py new file mode 100644 index 00000000..4eb442b9 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/permutation_test.py @@ -0,0 +1,167 @@ +import argparse +import pickle +from collections import defaultdict +from pathlib import Path + +import numpy as np +import pandas as pd + +from wtpsplit.evaluation.stat_tests.permutation_test_utils import ( + compute_prf, + permutation_test, + print_latex, + reverse_where, +) + +parser = argparse.ArgumentParser() + +parser.add_argument("--lang", type=str, required=True) +parser.add_argument("--table", type=str, required=True) + +args = parser.parse_args() + +ALL_DIR = Path("../data/permutation-test-data/") + +raw_data = defaultdict(lambda: defaultdict(dict)) +val_results = defaultdict(lambda: defaultdict(dict)) + + +DATA_DIR = ALL_DIR / f"all-stat-test-data/{args.table}" +LATEX_DIR = ALL_DIR / "p-values" +RESULTS_DATA_DIR = ALL_DIR / "results_data" + +spacy_langs = open("../data/permutation-test-data/all-stat-test-data/spacy_m_langs.txt").read().splitlines() + +with open(DATA_DIR / f"{args.table}_raw_data.pkl", "rb") as f: + raw_data = pickle.load(f) + +with open(DATA_DIR / f"{args.table}_val_results.pkl", "rb") as f: + val_results = pickle.load(f) + +# results taken from wtpsplit/evaluation/evaluation_results +# file names possibly need to be changed; content remains same. +all_systems_mapping = { + "benjamin_wtp-canine-s-3l_b512_s64_u0.01_k10-punct": "WtP-P", + "benjamin_wtp-canine-s-3l_b512_s64_u0.01_k10-t": "WtP-T", + "benjamin_wtp-canine-s-3l_b512_s64_u0.01_k10-u": "WtP-U", + "command-r_k10_s0Pv2-all-command-r": "C-R", + "meta-llama-3-8b-instruct_k10_s0Pv2-all-meta/meta-llama-3-8b-instruct": "L-3", + "xlmr-3l-v3_lc0.1-mix2-FT-33-33-33-v2-CorrSep_b512_s64_u0.25_k10-u": "SaT-SM", + "xlmr-3l-v3_look48_lc0.1-mix2_b512_s64_u0.025_k10-t": "SaT-T", + "xlmr-3l-v3_look48_lc0.1-mix2_b512_s64_u0.025_k10-u": "SaT-U", + "xlmr-3l-v4_LL_lora-v2_ep30_s10k_b512_s64_u0.5_k10-t": "SaT-Lora-T", + "xlmr-3l-v4_LL_lora-v2_ep30_s10k_b512_s64_u0.5_k10-u": "SaT-Lora-U", + "intrinsic_baselines-spacy_dp": "spacy-dp", + "intrinsic_baselines_multi-spacy_dp": "spacy-m", +} + +# not using "t" adaptation +lora_filter_data = [ + ["ceb", "ted2020-corrupted-asr"], + ["et", "short-sequences"], + ["et", "short-sequences-corrupted-asr"], + ["ga", "ted2020-corrupted-asr"], + ["ha", "ted2020-corrupted-asr"], + ["ig", "ted2020-corrupted-asr"], + ["kk", "ud"], + ["ky", "ted2020-corrupted-asr"], + ["la", "ted2020-corrupted-asr"], + ["mg", "ted2020-corrupted-asr"], + ["mr", "ud"], + ["mt", "ted2020-corrupted-asr"], + ["pa", "ted2020-corrupted-asr"], + ["ta", "ud"], + ["tg", "ted2020-corrupted-asr"], + ["en-de", "short-sequences"], + ["en-de", "short-sequences-corrupted-asr"], + ["sr", "short-sequences"], + ["sr", "short-sequences-corrupted-asr"], + ["sl", "short-sequences"], + ["sl", "short-sequences-corrupted-asr"], +] + +for dataset in raw_data[args.lang].keys(): + systems = list(all_systems_mapping.keys()).copy() + + if [args.lang, dataset] in lora_filter_data: + systems.remove("xlmr-3l-v4_LL_lora-v2_ep30_s10k_b512_s64_u0.5_k10-t") + else: + systems.remove("xlmr-3l-v4_LL_lora-v2_ep30_s10k_b512_s64_u0.5_k10-u") + + systems = [ + s for s in systems if s in val_results[args.lang][dataset] and val_results[args.lang][dataset][s] is not None + ] + + systems = sorted(systems, key=lambda x: val_results[args.lang][dataset][x], reverse=True) + + num_systems = len(systems) + + p_pvalues = pd.DataFrame(-100 + np.zeros((num_systems, num_systems)), index=systems, columns=systems) + r_pvalues = pd.DataFrame(-100 + np.zeros((num_systems, num_systems)), index=systems, columns=systems) + f_pvalues = pd.DataFrame(-100 + np.zeros((num_systems, num_systems)), index=systems, columns=systems) + + all_diffs = {system1: {} for system1 in systems} + + total_permutation_tests = num_systems * (num_systems - 1) // 2 + + for model in systems: + true_indices = raw_data[args.lang][dataset]["true_indices"] + pred_indices = raw_data[args.lang][dataset][model] + if pred_indices is None: + continue + lengths = raw_data[args.lang][dataset]["lengths"] + y_true, y_pred = reverse_where(true_indices, pred_indices, lengths) + num_docs = len(y_true) + + _, _, f1 = compute_prf(y_true, y_pred, num_docs) + + assert np.allclose( + f1, val_results[args.lang][dataset][model] + ), f" MISMATCH! {args.lang} {dataset} {model} F1: {f1} intrinsic_py_out: {val_results[args.lang][dataset][model]}" + + for i in range(num_systems): + for j in range(i + 1, num_systems): + true_indices = raw_data[args.lang][dataset]["true_indices"] + pred1_indices = raw_data[args.lang][dataset][systems[i]] + pred2_indices = raw_data[args.lang][dataset][systems[j]] + lengths = raw_data[args.lang][dataset]["lengths"] + y_true, y_pred1 = reverse_where(true_indices, pred1_indices, lengths) + y_true, y_pred2 = reverse_where(true_indices, pred2_indices, lengths) + + diffs, p_pvalue, r_pvalue, f_pvalue = permutation_test( + y_pred1, + y_pred2, + y_true, + num_rounds=10000, + ) + + p_pvalues.at[systems[i], systems[j]] = p_pvalue + r_pvalues.at[systems[i], systems[j]] = r_pvalue + f_pvalues.at[systems[i], systems[j]] = f_pvalue + + all_diffs[systems[i]][systems[j]] = diffs + + print_latex( + f_pvalues, + systems, + all_systems_mapping, + val_results[args.lang][dataset], + LATEX_DIR / f"{dataset}/{args.lang}_f.tex", + ) + + saving_data = { + "p_pvalues": p_pvalues, + "r_pvalues": r_pvalues, + "f_pvalues": f_pvalues, + "all_diffs": all_diffs, + } + + if not (RESULTS_DATA_DIR / dataset).exists(): + (RESULTS_DATA_DIR / dataset).mkdir() + + with open(RESULTS_DATA_DIR / f"{dataset}/{args.lang}_data.pkl", "wb") as f: + pickle.dump(saving_data, f) + + print(f"Finished {args.lang} {dataset}") + +print("All validation tests passed and significance tests done!") diff --git a/wtpsplit/evaluation/stat_tests/permutation_test_data.py b/wtpsplit/evaluation/stat_tests/permutation_test_data.py new file mode 100644 index 00000000..2e05e3d4 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/permutation_test_data.py @@ -0,0 +1,242 @@ +import json +from collections import defaultdict +from pathlib import Path + +from tqdm import tqdm +import pickle + +ALL_DIR = Path("../data/permutation-test-data/") + +raw_data = defaultdict(lambda: defaultdict(dict)) +val_results = defaultdict(lambda: defaultdict(dict)) + + +DATA_DIR = ALL_DIR / "all-stat-test-data/main_all" +LATEX_DIR = ALL_DIR / "p-values" +RESULTS_DATA_DIR = ALL_DIR / "results_data" + +# https://spacy.io/models/xx +spacy_langs = open("../data/permutation-test-data/all-stat-test-data/spacy_m_langs.txt").read().splitlines() + + +for file in tqdm(DATA_DIR.glob("*IDX.json"), desc="Loading indices"): + model = str(file.stem)[:-4] + with open(file, "r") as f: + data = json.load(f) + for lang in data.keys(): + if file.stem.startswith("intrinsic_baselines_multi") and lang not in spacy_langs: + continue + + for dataset in data[lang].keys(): + if ( + dataset.startswith("legal") + or dataset.startswith("ted") + or "corrupted-asr" in dataset + or "short-sequences" in dataset + or "code-switching" in dataset + ): + continue + + for model_type in data[lang][dataset].keys(): + if model_type.startswith("spacy_sent"): + continue + + if ( + ( + model_type == "true_indices" + or model_type == "length" + or model_type == "lengths" + or model_type == "refused" + ) + or data[lang][dataset][model_type] is None + or "predicted_indices" not in data[lang][dataset][model_type] + ): + continue + + data_list = data[lang][dataset][model_type]["predicted_indices"] + + if data_list is None: + continue + + if len(data_list) == 0: + data_list = [[]] + try: + if isinstance(data_list[0], int): + data_list = [data_list] + except: + print(data_list) + print(lang, dataset, model_type) + raise Exception + + raw_data[lang][dataset][model + "-" + model_type] = data_list + + true_indices = data[lang][dataset][model_type]["true_indices"] + + if isinstance(true_indices[0], int): + true_indices = [true_indices] + + if "true_indicies" in raw_data[lang][dataset]: + assert raw_data[lang][dataset]["true_indices"] == true_indices + else: + raw_data[lang][dataset]["true_indices"] = true_indices + + data_lengths = ( + data[lang][dataset][model_type]["length"] + if "length" in data[lang][dataset][model_type] + else data[lang][dataset][model_type]["lengths"] + ) + + if isinstance(data_lengths, int): + data_lengths = [data_lengths] + + if "lengths" in raw_data[lang][dataset]: + assert ( + raw_data[lang][dataset]["lengths"] == data_lengths + ), f"{lang}, {dataset}, {model_type}... [lengths assertion] before: {raw_data[lang][dataset]['lengths']} after: {data_lengths}" + else: + raw_data[lang][dataset]["lengths"] = data_lengths + + +for file in tqdm(DATA_DIR.glob("*.json"), desc="Loading F1s"): + if file.stem.endswith("IDX"): + continue + + with open(file, "r") as f: + data = json.load(f) + + model = file.stem + + for lang in data.keys(): + if file.stem.startswith("intrinsic_baselines_multi") and lang not in spacy_langs: + continue + + for dataset in data[lang].keys(): + for model_type in data[lang][dataset].keys(): + if model_type == "f1": + renamed_model_type = "llm" + else: + renamed_model_type = model_type + result = data[lang][dataset][model_type] + + if result is None or result == {}: + continue + elif not isinstance(result, float): + result = result["f1"] + + val_results[lang][dataset][model + "-" + renamed_model_type] = result + + +# taken from wtpsplit/evaluation/evaluation_results +# file names possibly need to be changed; content remains same. +all_systems_mapping = { + "benjamin_wtp-canine-s-3l_b512_s64_u0.01_k10-punct": "WtP-P", + "benjamin_wtp-canine-s-3l_b512_s64_u0.01_k10-t": "WtP-T", + "benjamin_wtp-canine-s-3l_b512_s64_u0.01_k10-u": "WtP-U", + "command-r_k10_s0Pv2-all-command-r": "C-R", + "meta-llama-3-8b-instruct_k10_s0Pv2-all-meta/meta-llama-3-8b-instruct": "L-3", + "xlmr-3l-v3_lc0.1-mix2-FT-33-33-33-v2-CorrSep_b512_s64_u0.25_k10-u": "SaT-SM", + "xlmr-3l-v3_look48_lc0.1-mix2_b512_s64_u0.025_k10-t": "SaT-T", + "xlmr-3l-v3_look48_lc0.1-mix2_b512_s64_u0.025_k10-u": "SaT-U", + "xlmr-3l-v4_LL_lora-v2_ep30_s10k_b512_s64_u0.5_k10-t": "SaT-Lora-T", + "xlmr-3l-v4_LL_lora-v2_ep30_s10k_b512_s64_u0.5_k10-u": "SaT-Lora-U", + "intrinsic_baselines-spacy_dp": "spacy-dp", + "intrinsic_baselines_multi-spacy_dp": "spacy-m", +} + +# no train data here; for fair comparison +main_table_exclude = [ + ["bn", "ud"], + ["ceb", "ud"], + ["es", "ersatz"], + ["fr", "opus100"], + ["hy", "opus100"], + ["id", "ud"], + ["jv", "ud"], + ["mn", "opus100"], + ["nl", "opus100"], + ["ru", "opus100"], + ["sq", "ud"], + ["th", "ud"], + ["yo", "opus100"], + ["yo", "ud"], +] + + +for lang in raw_data.keys(): + for system in all_systems_mapping.keys(): + main_results = [] + if ( + "opus100" in raw_data[lang] + and system in raw_data[lang]["opus100"] + and [lang, "opus100"] not in main_table_exclude + ): + main_results.append(val_results[lang]["opus100"][system]) + if "ud" in raw_data[lang] and system in raw_data[lang]["ud"] and [lang, "ud"] not in main_table_exclude: + main_results.append(val_results[lang]["ud"][system]) + if ( + "ersatz" in raw_data[lang] + and system in raw_data[lang]["ersatz"] + and [lang, "ersatz"] not in main_table_exclude + ): + main_results.append(val_results[lang]["ersatz"][system]) + + if main_results == []: + continue + + avg_f1 = sum(main_results) / len(main_results) + + preds_main_results_indicies = [] + trues_main_results_indicies = [] + lengths_main_results = [] + + val_results[lang]["main_table_mean"][system] = avg_f1 + + if ( + "opus100" in raw_data[lang] + and system in raw_data[lang]["opus100"] + and [lang, "opus100"] not in main_table_exclude + ): + preds_main_results_indicies.append(raw_data[lang]["opus100"][system][0]) + trues_main_results_indicies.append(raw_data[lang]["opus100"]["true_indices"]) + lengths_main_results.append(raw_data[lang]["opus100"]["lengths"][0]) + + if "ud" in raw_data[lang] and system in raw_data[lang]["ud"] and [lang, "ud"] not in main_table_exclude: + preds_main_results_indicies.append(raw_data[lang]["ud"][system][0]) + trues_main_results_indicies.append(raw_data[lang]["ud"]["true_indices"]) + lengths_main_results.append(raw_data[lang]["ud"]["lengths"][0]) + + if ( + "ersatz" in raw_data[lang] + and system in raw_data[lang]["ersatz"] + and [lang, "ersatz"] not in main_table_exclude + ): + preds_main_results_indicies.append(raw_data[lang]["ersatz"][system][0]) + trues_main_results_indicies.append(raw_data[lang]["ersatz"]["true_indices"]) + lengths_main_results.append(raw_data[lang]["ersatz"]["lengths"][0]) + + raw_data[lang]["main_table_mean"][system] = preds_main_results_indicies + + if "true_indices" in raw_data[lang]["main_table_mean"]: + assert ( + raw_data[lang]["main_table_mean"]["true_indices"] == trues_main_results_indicies + ), f"{lang} {system}, {[len(i) for i in trues_main_results_indicies]}, {[len(i) for i in raw_data[lang]['main_table_mean']['true_indices']]}" + else: + raw_data[lang]["main_table_mean"]["true_indices"] = trues_main_results_indicies + + if "lengths" in raw_data[lang]["main_table_mean"]: + assert ( + raw_data[lang]["main_table_mean"]["lengths"] == lengths_main_results + ), f"{lang} {system} {raw_data[lang]['main_table_mean']['lengths']} {lengths_main_results}" + else: + raw_data[lang]["main_table_mean"]["lengths"] = lengths_main_results + + +raw_data = {k: dict(v) for k, v in raw_data.items()} + +with open(DATA_DIR / "main_all_raw_data.pkl", "wb") as f: + pickle.dump(raw_data, f) + +val_results = {k: dict(v) for k, v in val_results.items()} + +with open(DATA_DIR / "main_all_val_results.pkl", "wb") as f: + pickle.dump(val_results, f) diff --git a/wtpsplit/evaluation/stat_tests/permutation_test_utils.py b/wtpsplit/evaluation/stat_tests/permutation_test_utils.py new file mode 100644 index 00000000..b8692b6d --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/permutation_test_utils.py @@ -0,0 +1,135 @@ +from multiprocessing import Pool + +import numpy as np +from tqdm import tqdm + + +def compute_prf(true_values, predicted_values, num_docs): + f1 = 0 + r = 0 + p = 0 + + for true, pred in zip(true_values, predicted_values): + TP = np.sum((pred == 1) & (true == 1)) + FP = np.sum((pred == 1) & (true == 0)) + FN = np.sum((pred == 0) & (true == 1)) + + precision = TP / (TP + FP) if (TP + FP) > 0 else 0 + recall = TP / (TP + FN) if (TP + FN) > 0 else 0 + + p += precision + r += recall + f1 += 2 * (precision * recall) / (precision + recall) if (precision + recall) > 0 else 0 + + p /= num_docs + r /= num_docs + f1 /= num_docs + + return p, r, f1 + + +def test_func(x, y, true, num_docs): + p_x, r_x, f1_x = compute_prf(true, x, num_docs) + p_y, r_y, f1_y = compute_prf(true, y, num_docs) + + diff_p = np.abs(p_x - p_y) + diff_r = np.abs(r_x - r_y) + diff_f1 = np.abs(f1_x - f1_y) + + return diff_p, diff_r, diff_f1 + + +def permutation_test_single_round(x, y, true, y_lengths, num_docs, flips): + sample_x = [np.where(flips[:m], y[i], x[i]) for i, m in enumerate(y_lengths)] + sample_y = [np.where(flips[:m], x[i], y[i]) for i, m in enumerate(y_lengths)] + + return test_func(sample_x, sample_y, true, num_docs) + + +def permutation_test( + x, + y, + true, + num_rounds=10000, +): + # print(num_rounds) + + x_lengths = [len(i) for i in x] + y_lengths = [len(i) for i in y] + + for i, j in zip(x_lengths, y_lengths): + assert i == j + + p_at_least_as_extreme = 0.0 + r_at_least_as_extreme = 0.0 + f_at_least_as_extreme = 0.0 + + num_docs = len(true) + + p_reference_stat, r_reference_stat, f_reference_stat = test_func(x, y, true, num_docs) + + flips = np.random.randint(2, size=(num_rounds, max(y_lengths))) + + with Pool(5) as pool: + results = list( + pool.starmap( + permutation_test_single_round, + tqdm( + [(x, y, true, y_lengths, num_docs, flips[i]) for i in range(num_rounds)], + total=num_rounds, + ), + ), + ) + + for diff_p, diff_r, diff_f in results: + if diff_p > p_reference_stat or np.isclose(diff_p, p_reference_stat): + p_at_least_as_extreme += 1.0 + + if diff_r > r_reference_stat or np.isclose(diff_r, r_reference_stat): + r_at_least_as_extreme += 1.0 + + if diff_f > f_reference_stat or np.isclose(diff_f, f_reference_stat): + f_at_least_as_extreme += 1.0 + + return ( + results, + p_at_least_as_extreme / num_rounds, + r_at_least_as_extreme / num_rounds, + f_at_least_as_extreme / num_rounds, + ) + + +def print_latex(df, systems, all_systems_mapping, results, filename): + filename.parent.mkdir(parents=True, exist_ok=True) + + with open(filename, "w") as f: + latex = df.to_latex(float_format="%.3f", escape=False, columns=systems) + while " " in latex: + latex = latex.replace(" ", " ") + latex = latex.replace("-100.000", "-") + + for system, system_name in all_systems_mapping.items(): + latex = latex.replace(system, system_name) + + for system, system_name in all_systems_mapping.items(): + if system in results: + latex += "\n" + latex += f"% {system_name}: {round(results[system], 3)}" + + f.write(latex) + + +def reverse_where(true_indices, pred_indices, lengths): + y_true_all = [] + y_pred_all = [] + + for true, pred, length in zip(true_indices, pred_indices, lengths): + y_true = np.zeros(length) + y_true[true] = 1 + y_pred = np.zeros(length) + y_pred[pred] = 1 + + y_true_all.append(y_true) + y_pred_all.append(y_pred) + + return y_true_all, y_pred_all diff --git a/wtpsplit/train/adaptertrainer.py b/wtpsplit/train/adaptertrainer.py index 36883761..e9f584e1 100644 --- a/wtpsplit/train/adaptertrainer.py +++ b/wtpsplit/train/adaptertrainer.py @@ -76,6 +76,7 @@ pass logger = logging.get_logger(__name__) +TRAINING_ARGS_NAME = "training_args.bin" class AdapterTrainer(Trainer): def __init__( diff --git a/wtpsplit/train/train_SM.py b/wtpsplit/train/train_SM.py new file mode 100644 index 00000000..da1526a6 --- /dev/null +++ b/wtpsplit/train/train_SM.py @@ -0,0 +1,509 @@ +import argparse +import math +import random +from collections import defaultdict +from itertools import cycle +from typing import Iterable, List, Sequence, Tuple + +import numpy as np +import torch +import transformers +from datasets import Dataset +from torch.utils.data import BatchSampler, ConcatDataset, DataLoader, SubsetRandomSampler +from tqdm import tqdm +from transformers import AutoTokenizer, Trainer, TrainerCallback, TrainingArguments + +import wandb +from wtpsplit.models import SubwordXLMForTokenClassification +from wtpsplit.utils import Constants + +parser = argparse.ArgumentParser() + +parser.add_argument("--block_size", type=int, default=256) +parser.add_argument("--num_layers", type=int, default=12) +parser.add_argument("--lim_lookahead", type=bool, default=False) +parser.add_argument("--without_pretraining", type=bool, default=False) +parser.add_argument("--no_sm_corruption", type=bool, default=False) + +args = parser.parse_args() + +data_path = "data/all_data_11_05-all.pth" +all_data = torch.load(data_path) + +block_size = args.block_size + +train_sentences = defaultdict(lambda: defaultdict(list)) +test_sentences = defaultdict(lambda: defaultdict(list)) + +punct_chars = set(Constants.PUNCTUATION_CHARS) + + +for lang_code in tqdm(all_data, desc="Loading train/dev data"): + if "-" in lang_code or "_" in lang_code: + pass + elif ( + "ud" in all_data[lang_code]["sentence"] + and all_data[lang_code]["sentence"]["ud"]["meta"]["train_data"] is not None + ): + train_data = all_data[lang_code]["sentence"]["ud"]["meta"]["train_data"] + # cf. Appendix A.2 + if len(train_data) < 10000: + train_data = train_data * (10000 // len(train_data) + 1) + + if len(train_data) < 5000: + train_data = train_data * (10000 // len(train_data) + 1) + + train_sentences[lang_code]["uncorrupted"].extend(train_data) + + if not args.no_sm_corruption: + train_data = all_data[lang_code]["sentence"]["ud-corrupted-asr"]["meta"]["train_data"] + + if len(train_data) < 5000: + train_data = train_data * (10000 // len(train_data) + 1) + + train_sentences[lang_code]["corrupted-asr"].extend(train_data) + + train_data = all_data[lang_code]["sentence"]["ud-corrupted-social-media"]["meta"]["train_data"] + + if len(train_data) < 5000: + train_data = train_data * (10000 // len(train_data) + 1) + + train_sentences[lang_code]["corrupted-social-media"].extend(train_data) + + elif ( + "opus100" in all_data[lang_code]["sentence"] + and all_data[lang_code]["sentence"]["opus100"]["meta"]["train_data"] is not None + ): + train_data = all_data[lang_code]["sentence"]["opus100"]["meta"]["train_data"] + assert len(train_data) == 10000 + train_sentences[lang_code]["uncorrupted"].extend(train_data) + + if not args.no_sm_corruption: + train_data = all_data[lang_code]["sentence"]["opus100-corrupted-asr"]["meta"]["train_data"] + assert len(train_data) == 10000 + train_sentences[lang_code]["corrupted-asr"].extend(train_data) + + train_data = all_data[lang_code]["sentence"]["opus100-corrupted-social-media"]["meta"]["train_data"] + assert len(train_data) == 10000 + train_sentences[lang_code]["corrupted-social-media"].extend(train_data) + else: + train_data = all_data[lang_code]["sentence"]["nllb"]["meta"]["train_data"] + assert len(train_data) == 10000 + train_sentences[lang_code]["uncorrupted"].extend(train_data) + + if not args.no_sm_corruption: + train_data = all_data[lang_code]["sentence"]["nllb-corrupted-asr"]["meta"]["train_data"] + assert len(train_data) == 10000 + train_sentences[lang_code]["corrupted-asr"].extend(train_data) + + train_data = all_data[lang_code]["sentence"]["nllb-corrupted-social-media"]["meta"]["train_data"] + assert len(train_data) == 10000 + train_sentences[lang_code]["corrupted-social-media"].extend(train_data) + + for dataset in all_data[lang_code]["sentence"]: + if any(dataset.startswith(x) for x in ["short-sequences", "legal"]): + continue + + test_data = all_data[lang_code]["sentence"][dataset]["data"] + test_sentences[lang_code][dataset].extend(test_data[:200]) + + +tokenizer_checkpoint = "xlm-roberta-base" + +if args.without_pretraining: + model_checkpoint = "xlm-roberta-base" +elif args.num_layers == 1: + if args.lim_lookahead: + raise NotImplementedError("Not implemented") + else: + model_checkpoint = "segment-any-text/sat-1l-no-limited-lookahead" +elif args.num_layers == 3: + if args.lim_lookahead: + model_checkpoint = "segment-any-text/sat-3l-no-limited-lookahead" + else: + model_checkpoint = "segment-any-text/sat-3" +elif args.num_layers == 6: + if args.lim_lookahead: + model_checkpoint = "segment-any-text/sat-6l-no-limited-lookahead" + else: + model_checkpoint = "segment-any-text/sat-6l" +elif args.num_layers == 9: + if args.lim_lookahead: + model_checkpoint = "segment-any-text/sat-9l-no-limited-lookahead" + else: + model_checkpoint = "segment-any-text/sat-9l" +elif args.num_layers == 12: + if args.lim_lookahead: + model_checkpoint = "segment-any-text/sat-12l-no-limited-lookahead" + else: + model_checkpoint = "segment-any-text/sat-12l" + +else: + raise ValueError("Invalid number of layers. Valid values are 3, 6, 12.") + +print(model_checkpoint) + +tokenizer = AutoTokenizer.from_pretrained(tokenizer_checkpoint) +assert isinstance(tokenizer, transformers.PreTrainedTokenizerFast) + +if args.num_layers == 3 and args.without_pretraining: + model = SubwordXLMForTokenClassification.from_pretrained( + model_checkpoint, + num_labels=1, + ignore_mismatched_sizes=True, + num_hidden_layers=3, + ) +else: + model = SubwordXLMForTokenClassification.from_pretrained( + model_checkpoint, + num_labels=1, + ignore_mismatched_sizes=True, + ) + + +def tokenize_and_get_labels(sentences, lang_code, dataset_name): + separator = Constants.SEPARATORS.get(lang_code, " ") + + joined_sentence = "" + sentence_start_positions = [] + current_position = 0 + + for sentence in sentences: + if random.random() < 0.1 and sentence[-1] in punct_chars and dataset_name == "corrupted-social-media": + if separator == " ": + separator_used = "" + else: + separator_used = " " + else: + separator_used = separator + + if joined_sentence: + joined_sentence += separator_used + current_position += len(separator_used) + start_position = current_position + joined_sentence += sentence + current_position += len(sentence) + sentence_start_positions.append(start_position + len(sentence) - 1) + + tokenized_input = tokenizer( + joined_sentence, + return_offsets_mapping=True, + add_special_tokens=False, + truncation=False, + ) + + tokens = tokenized_input.tokens() + offsets = tokenized_input["offset_mapping"] + sentence_ending_labels = [0] * len(tokens) + + sentence_ending_labels[-1] = 1 + sentence_index = 0 + + for i in range(len(offsets)): + if offsets[i][0] > sentence_start_positions[sentence_index]: + sentence_ending_labels[i - 1] = 1 + sentence_index += 1 + + input_ids = [0] + tokenized_input["input_ids"] + [2] + labels = [0] + sentence_ending_labels + [0] + + return input_ids, labels + + +def pack_sentences(input_data_dict, block_size): + packed_data = defaultdict(lambda: defaultdict(lambda: {"input_ids": [], "attention_mask": [], "labels": []})) + + for lang_code in tqdm(input_data_dict): + for dataset_name, sentences in input_data_dict[lang_code].items(): + if dataset_name == "corrupted-social-media": + p_add_to_block = 0.5 + else: + p_add_to_block = 1.0 + + token_count, one_block_sentences = 0, [] + + for sentence in sentences: + num_sentence_tokens = len(tokenizer(sentence, add_special_tokens=False)["input_ids"]) + + if not sentence or sentence.isnumeric() or num_sentence_tokens == 0: + continue + + if token_count + num_sentence_tokens < block_size - 4 and ( + random.random() <= p_add_to_block or len(one_block_sentences) == 0 + ): + one_block_sentences.append(sentence) + token_count += num_sentence_tokens + else: + if one_block_sentences: + input_ids, labels = tokenize_and_get_labels(one_block_sentences, lang_code, dataset_name) + + num_to_pad = block_size - len(input_ids) + attention_mask = [1] * len(input_ids) + [0] * num_to_pad + input_ids += [tokenizer.pad_token_id] * num_to_pad + labels += [-100] * num_to_pad + + assert len(input_ids) == block_size, len(input_ids) + assert len(input_ids) == len(labels), ( + len(input_ids), + len(labels), + ) + + packed_data[lang_code][dataset_name]["input_ids"].append(input_ids) + packed_data[lang_code][dataset_name]["attention_mask"].append(attention_mask) + packed_data[lang_code][dataset_name]["labels"].append(labels) + + if num_sentence_tokens > block_size - 4: + one_block_sentences = [] + token_count = 0 + else: + one_block_sentences = [sentence] + token_count = num_sentence_tokens + + if one_block_sentences: + input_ids, labels = tokenize_and_get_labels(one_block_sentences, lang_code, dataset_name) + + num_to_pad = block_size - len(input_ids) + attention_mask = [1] * len(input_ids) + [0] * num_to_pad + input_ids += [tokenizer.pad_token_id] * num_to_pad + labels += [-100] * num_to_pad + + assert len(input_ids) == block_size, len(input_ids) + assert len(input_ids) == len(labels), (len(input_ids), len(labels)) + + packed_data[lang_code][dataset_name]["input_ids"].append(input_ids) + packed_data[lang_code][dataset_name]["attention_mask"].append(attention_mask) + packed_data[lang_code][dataset_name]["labels"].append(labels) + + assert len(packed_data[lang_code][dataset_name]["input_ids"]) == len( + packed_data[lang_code][dataset_name]["labels"] + ) + + return packed_data + + +packed_train_data = pack_sentences(train_sentences, block_size) +packed_test_data = pack_sentences(test_sentences, block_size) +test_dataset = {lang_code: defaultdict(dict) for lang_code in packed_test_data} + +for lang_code in packed_test_data: + for dataset_name in packed_test_data[lang_code]: + test_dataset[lang_code][dataset_name] = Dataset.from_dict(packed_test_data[lang_code][dataset_name]) + +experiment_name = model_checkpoint.split("/")[-1] + +experiment_name += str(args.num_layers) + "L" + +if args.no_sm_corruption: + experiment_name += "-no-corruption" + + +def compute_prf(true_values, predicted_values): + TP = np.sum((predicted_values == 1) & (true_values == 1)) + FP = np.sum((predicted_values == 1) & (true_values == 0)) + FN = np.sum((predicted_values == 0) & (true_values == 1)) + + precision = TP / (TP + FP) if (TP + FP) > 0 else 0 + recall = TP / (TP + FN) if (TP + FN) > 0 else 0 + f1_score = 2 * (precision * recall) / (precision + recall) if (precision + recall) > 0 else 0 + + return precision, recall, f1_score + + +def sigmoid_array(x): + return 1 / (1 + np.exp(-x)) + + +def compute_metrics(p): + predictions, labels = p + + predictions = np.reshape(predictions, (-1,)) + labels = np.reshape(labels, (-1,)) + + predictions = sigmoid_array(predictions) + + predictions = predictions[labels != -100] + labels = labels[labels != -100] + + threshold = 0.25 + + preds = (predictions > threshold).astype(int) + + precision, recall, f1 = compute_prf(labels, preds) + + output_dict = { + "precision": precision, + "recall": recall, + "f1": f1, + } + + return output_dict + + +class MultiDatasetEvalCallback(TrainerCallback): + def __init__(self, eval_datasets): + self.eval_datasets = eval_datasets + + def on_evaluate(self, args, state, control, metrics=None, **kwargs): + pass + + def on_step_end(self, args, state, control, **kwargs): + if state.global_step % args.eval_steps == 0: + for lang_code in self.eval_datasets: + for dataset_name, eval_dataset in self.eval_datasets[lang_code].items(): + metrics = trainer.evaluate(eval_dataset) + for metric, result in metrics.items(): + wandb.log( + { + f"eval/{dataset_name}/{lang_code}/{metric}": result, + "train/global_step": state.global_step, + } + ) + + +multi_dataset_eval_callback = MultiDatasetEvalCallback(test_dataset) + +train_datasets = [] + +for lang_code in packed_train_data: + for dataset_name in packed_train_data[lang_code]: + train_datasets.append(Dataset.from_dict(packed_train_data[lang_code][dataset_name])) + +random.shuffle(train_datasets) + +train_datasets = ConcatDataset(train_datasets) + +run = wandb.init(project="sentence") +wandb.run.name = experiment_name + +args = TrainingArguments( + output_dir=experiment_name, + overwrite_output_dir=True, + evaluation_strategy="steps", + eval_steps=250, + report_to="wandb", + learning_rate=3e-5, + warmup_steps=500, + per_device_train_batch_size=128, + per_device_eval_batch_size=128, + weight_decay=0.01, + push_to_hub=False, + save_total_limit=1, + save_strategy="steps", + save_steps=1000, + load_best_model_at_end=False, + max_steps=20000, +) + + +class RoundRobinSampler: + def __init__(self, samplers: Sequence[Iterable], reinit: bool = False): + self.samplers = samplers + self.reinit = reinit + + def __iter__(self): + iterators = [iter(sampler) for sampler in self.samplers] + + for i in cycle(range(len(iterators))): + it = iterators[i] + + try: + yield next(it) + + except StopIteration: + if not self.reinit: + break + + it = iter(self.samplers[i]) + iterators[i] = it + yield next(it) + + +def get_subset(length: int, i: int, k: int, offset: int = 0) -> Tuple[int, int]: + assert i < k + s = math.ceil(length / k) # size of one split + start = i * s + end = min((i + 1) * s, length) + return offset + start, offset + end + + +class DistributedRoundRobinBatchSampler: + def __init__( + self, + lengths: List[int], + batch_size: int, + rank: int, + num_replicas: int, + drop_last: bool = False, + seed: int = 0, + shuffle: bool = True, + reinit: bool = False, + ): + self.lengths = lengths + offsets = [sum(lengths[:i]) for i in range(len(lengths))] + self.ranges = [get_subset(length, rank, num_replicas, offset) for offset, length in zip(offsets, lengths)] + self.seed = seed + self.shuffle = shuffle + self.drop_last = drop_last + self.epoch = 0 + self.reinit = reinit + self.batch_size = batch_size + self.batch_start = 0 + + def __iter__(self): + g = torch.Generator() + g.manual_seed(self.seed + self.epoch) + + batch_samplers = [ + BatchSampler( + (SubsetRandomSampler(range(start, end), generator=g) if self.shuffle else range(start, end)), + self.batch_size, + self.drop_last, + ) + for (start, end) in self.ranges + ] + + sampler = RoundRobinSampler(batch_samplers, reinit=self.reinit) + return iter(sampler) + + def __len__(self): + return min(length for length in self.lengths) // self.batch_size + + +class CustomTrainer(Trainer): + def get_train_dataloader(self) -> DataLoader: + dataset = self.train_dataset + + if isinstance(dataset, ConcatDataset): + sizes = [len(ds) for ds in dataset.datasets] + else: + sizes = [len(dataset)] + + loader = DataLoader( + dataset, + batch_sampler=DistributedRoundRobinBatchSampler( + lengths=sizes, + batch_size=self.args.train_batch_size, + drop_last=False, + rank=self.args.process_index, + num_replicas=self.args.world_size, + seed=self.args.seed, + reinit=True, + ), + num_workers=self.args.dataloader_num_workers, + pin_memory=self.args.dataloader_pin_memory, + collate_fn=self.data_collator, + ) + return loader + + +trainer = CustomTrainer( + model=model, + args=args, + train_dataset=train_datasets, + eval_dataset=None, + compute_metrics=compute_metrics, + tokenizer=tokenizer, + callbacks=[multi_dataset_eval_callback], +) + +trainer.train() From a4f9e2069fc95654bd26b9f22226fa038780cb1b Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:11:51 +0000 Subject: [PATCH 226/262] fix some lint errors --- adapters/src/adapters/composition.py | 2 +- adapters/src/adapters/head_utils.py | 4 +- adapters/src/adapters/heads/model_mixin.py | 5 +- wtpsplit/evaluation/intrinsic_baselines.py | 2 +- wtpsplit/evaluation/intrinsic_pairwise.py | 3 +- .../stat_tests/permutation_test_data.py | 4 -- wtpsplit/extract_batched.py | 1 - wtpsplit/models.py | 57 +++++++++---------- wtpsplit/train/train.py | 5 +- 9 files changed, 40 insertions(+), 43 deletions(-) diff --git a/adapters/src/adapters/composition.py b/adapters/src/adapters/composition.py index 6d37e44b..6a7fd14e 100644 --- a/adapters/src/adapters/composition.py +++ b/adapters/src/adapters/composition.py @@ -152,7 +152,7 @@ def validate_composition(adapter_composition: AdapterCompositionBlock, level=0, f"Models of type {model_type} don't support adapter composition using {block_type.__name__}." ) for child in adapter_composition: - if not type(child) in ALLOWED_NESTINGS[type(adapter_composition)]: + if type(child) not in ALLOWED_NESTINGS[type(adapter_composition)]: raise ValueError(f"Adapter setup is invalid. Cannot nest {child} in {adapter_composition}") # recursively validate children validate_composition(child, level=level + 1) diff --git a/adapters/src/adapters/head_utils.py b/adapters/src/adapters/head_utils.py index 2144fbe5..d0caeecf 100644 --- a/adapters/src/adapters/head_utils.py +++ b/adapters/src/adapters/head_utils.py @@ -742,6 +742,8 @@ def get_head_config_and_rename_list(model_class_name, head_name, label2id, num_l escaped_name = re.escape(name) rename_list.append((rf"{escaped_name}\.(\S+)", f"heads.{head_name}.{i}.{{0}}")) i += 1 - rename_func = lambda k, rename_list=rename_list: _regex_list_rename_func(k, rename_list) + def rename_func(k, rename_list=rename_list): + return _regex_list_rename_func(k, rename_list) + return config, rename_func diff --git a/adapters/src/adapters/heads/model_mixin.py b/adapters/src/adapters/heads/model_mixin.py index 4e0dfde8..d19beda5 100644 --- a/adapters/src/adapters/heads/model_mixin.py +++ b/adapters/src/adapters/heads/model_mixin.py @@ -707,7 +707,10 @@ def _load_pretrained_model( if len(model.base_model_prefix) > 0 and not any( s.startswith(model.base_model_prefix) for s in loaded_keys ): - rename_func = lambda x: model.base_model_prefix + "." + x if x not in head_state_dict else x + def rename_func(x): + if x not in head_state_dict: + return model.base_model_prefix + "." + x + return x state_dict = {rename_func(k): v for k, v in state_dict.items()} loaded_keys = [rename_func(k) for k in loaded_keys] diff --git a/wtpsplit/evaluation/intrinsic_baselines.py b/wtpsplit/evaluation/intrinsic_baselines.py index 97ba0fa3..fbf03d67 100644 --- a/wtpsplit/evaluation/intrinsic_baselines.py +++ b/wtpsplit/evaluation/intrinsic_baselines.py @@ -152,7 +152,7 @@ class Args: indices[lang][dataset_name][name]["length"] = [metrics.pop("length")] results[lang][dataset_name][name] = metrics except LanguageError as e: - print("Language not supported for", name) + print("Language not supported for", name, e) results[lang][dataset_name][name] = None json.dump(results, open(Constants.CACHE_DIR / "intrinsic_baselines.json", "w"), indent=4, default=int) diff --git a/wtpsplit/evaluation/intrinsic_pairwise.py b/wtpsplit/evaluation/intrinsic_pairwise.py index 18845289..37aac490 100644 --- a/wtpsplit/evaluation/intrinsic_pairwise.py +++ b/wtpsplit/evaluation/intrinsic_pairwise.py @@ -9,7 +9,6 @@ import logging import h5py -import skops.io as sio import torch from datasets import load_dataset from tqdm.auto import tqdm @@ -290,7 +289,7 @@ def main(args): print(save_str) eval_data = torch.load(args.eval_data_path) - if "canine" in args.model_path and not "no-adapters" in args.model_path: + if "canine" in args.model_path and "no-adapters" not in args.model_path: eval_data = split_language_data(eval_data) if args.valid_text_path is not None: valid_data = load_dataset("parquet", data_files=args.valid_text_path, split="train") diff --git a/wtpsplit/evaluation/stat_tests/permutation_test_data.py b/wtpsplit/evaluation/stat_tests/permutation_test_data.py index 2e05e3d4..553318c5 100644 --- a/wtpsplit/evaluation/stat_tests/permutation_test_data.py +++ b/wtpsplit/evaluation/stat_tests/permutation_test_data.py @@ -63,10 +63,6 @@ try: if isinstance(data_list[0], int): data_list = [data_list] - except: - print(data_list) - print(lang, dataset, model_type) - raise Exception raw_data[lang][dataset][model + "-" + model_type] = data_list diff --git a/wtpsplit/extract_batched.py b/wtpsplit/extract_batched.py index ba7006da..3464aadd 100644 --- a/wtpsplit/extract_batched.py +++ b/wtpsplit/extract_batched.py @@ -3,7 +3,6 @@ import logging import numpy as np -from tqdm.auto import tqdm from transformers import AutoTokenizer from tokenizers import AddedToken diff --git a/wtpsplit/models.py b/wtpsplit/models.py index 8579d1b3..90580a99 100644 --- a/wtpsplit/models.py +++ b/wtpsplit/models.py @@ -1,12 +1,10 @@ import copy import math -import warnings from typing import List, Optional, Tuple, Union import torch from torch import Tensor, nn from torch.nn import CrossEntropyLoss -from torchinfo import summary from transformers import AutoModel, AutoModelForTokenClassification from transformers.modeling_outputs import ( BaseModelOutputWithPoolingAndCrossAttentions, @@ -40,7 +38,6 @@ ) from transformers.models.xlm_roberta.modeling_xlm_roberta import ( XLMRobertaEmbeddings, - XLMRobertaEncoder, XLMRobertaPooler, XLMRobertaLayer, ) @@ -1395,30 +1392,30 @@ def custom_forward(*inputs): AutoModel.register(SubwordXLMConfig, SubwordXLMForTokenClassification) AutoModelForTokenClassification.register(SubwordXLMConfig, SubwordXLMForTokenClassification) -if __name__ == "__main__": - # test XLM - from transformers import AutoConfig, AutoTokenizer - - model_str = "xlm-roberta-base" - config = SubwordXLMConfig.from_pretrained(model_str) - config.num_labels = 4 - config.num_hidden_layers = 12 - config.lookahead = 48 - config.lookahead_split_layers = 6 - backbone = SubwordXLMForTokenClassification.from_pretrained(model_str, config=config) - print(summary(backbone, depth=4)) - - # some sample input - text = "A sentence. Now we move on. And on and this is the last sentence. Now, we are starting to move on to the next sentence. This is the last sentence." - tokenizer = AutoTokenizer.from_pretrained(model_str) - - tokens = tokenizer(text, return_tensors="pt", add_special_tokens=False, pad_to_multiple_of=512, padding=True) - from tokenizers import AddedToken - - tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) - print(tokenizer.tokenize(text)) - print(tokenizer.encode(text)) - print(tokens) - - # forward pass - print(backbone(**tokens)) +# if __name__ == "__main__": +# # test XLM +# from transformers import AutoTokenizer + +# model_str = "xlm-roberta-base" +# config = SubwordXLMConfig.from_pretrained(model_str) +# config.num_labels = 4 +# config.num_hidden_layers = 12 +# config.lookahead = 48 +# config.lookahead_split_layers = 6 +# backbone = SubwordXLMForTokenClassification.from_pretrained(model_str, config=config) +# print(summary(backbone, depth=4)) + +# # some sample input +# text = "A sentence. Now we move on. And on and this is the last sentence. Now, we are starting to move on to the next sentence. This is the last sentence." +# tokenizer = AutoTokenizer.from_pretrained(model_str) + +# tokens = tokenizer(text, return_tensors="pt", add_special_tokens=False, pad_to_multiple_of=512, padding=True) +# from tokenizers import AddedToken + +# tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) +# print(tokenizer.tokenize(text)) +# print(tokenizer.encode(text)) +# print(tokens) + +# # forward pass +# print(backbone(**tokens)) diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 96cc7c11..761dc112 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -4,7 +4,7 @@ import random import shutil import sys -import time +# import time from collections import Counter, defaultdict from dataclasses import dataclass from functools import partial @@ -17,7 +17,7 @@ import torch_xla.core.xla_model as xm import transformers from datasets import load_dataset -from datasets.download import DownloadConfig +# from datasets.download import DownloadConfig from tokenizers import AddedToken from torchinfo import summary from tqdm.auto import tqdm @@ -35,6 +35,7 @@ from wtpsplit.train.evaluate import evaluate_sentence from wtpsplit.train.trainer import Trainer from wtpsplit.train.utils import Model, cleanup_cache_files +# from wtpsplit.train.utils import cleanup_cache_files from wtpsplit.utils import Constants, LabelArgs, corrupt_training, get_label_dict, get_subword_label_dict logger = logging.getLogger(__name__) From c995b70fbca6a49e569a3e2847aabb14dc5e7079 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:14:24 +0000 Subject: [PATCH 227/262] fix try: --- wtpsplit/evaluation/stat_tests/permutation_test_data.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wtpsplit/evaluation/stat_tests/permutation_test_data.py b/wtpsplit/evaluation/stat_tests/permutation_test_data.py index 553318c5..c05c239d 100644 --- a/wtpsplit/evaluation/stat_tests/permutation_test_data.py +++ b/wtpsplit/evaluation/stat_tests/permutation_test_data.py @@ -60,9 +60,9 @@ if len(data_list) == 0: data_list = [[]] - try: - if isinstance(data_list[0], int): - data_list = [data_list] + if isinstance(data_list[0], int): + data_list = [data_list] + raw_data[lang][dataset][model + "-" + model_type] = data_list From 1add5b52a44d3070e4ff0d57945042e6a97bf643 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:17:49 +0000 Subject: [PATCH 228/262] f --- wtpsplit/evaluation/llm_sentence.py | 2 +- wtpsplit/train/train.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wtpsplit/evaluation/llm_sentence.py b/wtpsplit/evaluation/llm_sentence.py index 23714762..28468707 100644 --- a/wtpsplit/evaluation/llm_sentence.py +++ b/wtpsplit/evaluation/llm_sentence.py @@ -425,7 +425,7 @@ def align_llm_output(row): ) # same as aligned_in, aligned_llm, but with additional formatting. Latter used to debug only. formatted_alignment = alignment._format_alignment(aligned_in, aligned_llm).split("\n") - except: + except: # ruff: ignore=E722 print("Alignment failed: ", row.name) formatted_alignment = [row["test_chunks"], "", " " * len(row["test_chunks"])] return pd.Series( diff --git a/wtpsplit/train/train.py b/wtpsplit/train/train.py index 761dc112..6be21cfd 100644 --- a/wtpsplit/train/train.py +++ b/wtpsplit/train/train.py @@ -34,7 +34,7 @@ ) from wtpsplit.train.evaluate import evaluate_sentence from wtpsplit.train.trainer import Trainer -from wtpsplit.train.utils import Model, cleanup_cache_files +from wtpsplit.train.utils import Model # from wtpsplit.train.utils import cleanup_cache_files from wtpsplit.utils import Constants, LabelArgs, corrupt_training, get_label_dict, get_subword_label_dict From 3f3ad11c03808699801247fedbf555f1e8a958c7 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:20:37 +0000 Subject: [PATCH 229/262] ignore bare except --- .github/workflows/python.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 11f1f4a2..e9f65718 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -25,7 +25,7 @@ jobs: - name: Lint with ruff run: | # stop the build if there are Python syntax errors or undefined names - ruff --output-format=github --select=E9,F63,F7,F82 --target-version=py37 . + ruff --output-format=github --select=E9,F63,F7,F82 --ignore=E722 --target-version=py37 . # default set of ruff rules with GitHub Annotations ruff --output-format=github --target-version=py37 . - name: Test with pytest From fceca3fd8b94ce3105e18007c7d330f826ff23ca Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:26:05 +0000 Subject: [PATCH 230/262] noqa --- .github/workflows/python.yml | 2 +- adapters/tests/test_encoder_decoder.py | 2 +- wtpsplit/__init__.py | 2 +- wtpsplit/data_acquisition/extract_all_data.py | 2 +- wtpsplit/evaluation/intrinsic_ted.py | 2 +- wtpsplit/evaluation/llm_sentence.py | 2 +- wtpsplit/utils.py | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index e9f65718..11f1f4a2 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -25,7 +25,7 @@ jobs: - name: Lint with ruff run: | # stop the build if there are Python syntax errors or undefined names - ruff --output-format=github --select=E9,F63,F7,F82 --ignore=E722 --target-version=py37 . + ruff --output-format=github --select=E9,F63,F7,F82 --target-version=py37 . # default set of ruff rules with GitHub Annotations ruff --output-format=github --target-version=py37 . - name: Test with pytest diff --git a/adapters/tests/test_encoder_decoder.py b/adapters/tests/test_encoder_decoder.py index 708a6bfb..46a3e20c 100644 --- a/adapters/tests/test_encoder_decoder.py +++ b/adapters/tests/test_encoder_decoder.py @@ -4,7 +4,7 @@ import adapters from hf_transformers.tests.models.encoder_decoder.test_modeling_encoder_decoder import * # Imported to execute model tests from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, BertConfig -from transformers.testing_utils import require_torch, torch_device +from transformers.testing_utils import require_torch from .methods import ( BottleneckAdapterTestMixin, diff --git a/wtpsplit/__init__.py b/wtpsplit/__init__.py index 9a4307fe..c3a268bb 100644 --- a/wtpsplit/__init__.py +++ b/wtpsplit/__init__.py @@ -512,7 +512,7 @@ def __init__( # merge lora weights into transformer for 0 efficiency overhead self.model.model.merge_adapter("sat-lora") self.use_lora = True - except: + except: # noqa if lora_path: print(f"LoRA at {lora_path} not found, using base model...") else: diff --git a/wtpsplit/data_acquisition/extract_all_data.py b/wtpsplit/data_acquisition/extract_all_data.py index 68a923bf..b8a867b9 100644 --- a/wtpsplit/data_acquisition/extract_all_data.py +++ b/wtpsplit/data_acquisition/extract_all_data.py @@ -93,7 +93,7 @@ def corrupt_asr(sentences, lang): try: tokenizer = MosesTokenizer(lang) - except: + except: # noqa corrupted_sentences = [ preprocess_sentence("".join([char for char in sentence if char not in punct_chars]).lower()) for sentence in sentences diff --git a/wtpsplit/evaluation/intrinsic_ted.py b/wtpsplit/evaluation/intrinsic_ted.py index 8ada2671..2853d3c4 100644 --- a/wtpsplit/evaluation/intrinsic_ted.py +++ b/wtpsplit/evaluation/intrinsic_ted.py @@ -261,7 +261,7 @@ def main(args): ): try: model_path = os.path.join(args.model_path, os.listdir(args.model_path)[0], "en") - except: + except: # noqa model_path = args.model_path print(model_path) else: diff --git a/wtpsplit/evaluation/llm_sentence.py b/wtpsplit/evaluation/llm_sentence.py index 28468707..64f9cbe0 100644 --- a/wtpsplit/evaluation/llm_sentence.py +++ b/wtpsplit/evaluation/llm_sentence.py @@ -425,7 +425,7 @@ def align_llm_output(row): ) # same as aligned_in, aligned_llm, but with additional formatting. Latter used to debug only. formatted_alignment = alignment._format_alignment(aligned_in, aligned_llm).split("\n") - except: # ruff: ignore=E722 + except: # noqa print("Alignment failed: ", row.name) formatted_alignment = [row["test_chunks"], "", " " * len(row["test_chunks"])] return pd.Series( diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index cfae534a..015730a7 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -229,7 +229,7 @@ def corrupt_asr(text: str, lang): corrupted_sentences = [ tokenizer.detokenize(corrupted_tokens).lower() for corrupted_tokens in corrupted_tokenized_sentences ] - except: + except: # noqa corrupted_sentences = [ "".join([char for char in sentence if char not in Constants.PUNCTUATION_CHARS]).lower() for sentence in sentences From c61973f47daf1f2f556a131e4d8742a2bb54350f Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:34:25 +0000 Subject: [PATCH 231/262] test --- wtpsplit/data_acquisition/extract_all_data.py | 1 - 1 file changed, 1 deletion(-) diff --git a/wtpsplit/data_acquisition/extract_all_data.py b/wtpsplit/data_acquisition/extract_all_data.py index b8a867b9..c7fb5a85 100644 --- a/wtpsplit/data_acquisition/extract_all_data.py +++ b/wtpsplit/data_acquisition/extract_all_data.py @@ -581,7 +581,6 @@ class Args: } # LEGAL - langs = ["de", "en", "es", "fr", "it"] all_subset_data = { From 4d222f5217a6608c6edbb9f23ef75462dfbe29e9 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:36:15 +0000 Subject: [PATCH 232/262] fix reqs --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1e72bade..43ec95ee 100644 --- a/setup.py +++ b/setup.py @@ -10,13 +10,14 @@ install_requires=[ "onnxruntime>=1.13.1", "transformers>=4.22.2", - "numpy>=1", + "numpy>=1.0,<=2.0", "scikit-learn>=1", "tqdm", "skops", "pandas>=1", "cached_property", # for Py37 "torchinfo", + "fast-mosestokenizer" ], url="https://github.com/bminixhofer/wtpsplit", package_data={"wtpsplit": ["data/*"]}, From 45de2ca5aad919528101726db9db1dfa08f7bd2f Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:38:02 +0000 Subject: [PATCH 233/262] reqs? --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 43ec95ee..f6890d5f 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ "pandas>=1", "cached_property", # for Py37 "torchinfo", - "fast-mosestokenizer" + "mosestokenizer" ], url="https://github.com/bminixhofer/wtpsplit", package_data={"wtpsplit": ["data/*"]}, From 6a76f73376e8fb4209e661503d58d93846460d98 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:41:42 +0000 Subject: [PATCH 234/262] fix np!!! --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f6890d5f..8198ff83 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ install_requires=[ "onnxruntime>=1.13.1", "transformers>=4.22.2", - "numpy>=1.0,<=2.0", + "numpy>=1.0,<2.0", "scikit-learn>=1", "tqdm", "skops", From 0a2f530367b9472495f83f336dc9e20faac52496 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:44:16 +0000 Subject: [PATCH 235/262] update --- setup.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/setup.py b/setup.py index 8198ff83..a9908930 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,12 @@ from setuptools import setup setup( - name="wtpsplit", - version="1.2.4", + name="segment-any-text", + version="1.0.0", packages=["wtpsplit"], - description="Robust, adaptible sentence segmentation for 85 languages", - author="Benjamin Minixhofer", - author_email="bminixhofer@gmail.com", + description="Universal Robust, Efficient and Adaptable Sentence Segmentation", + author="Markus Frohmann, Igor Sterner, Benjamin Minixhofer", + author_email="markus.frohmann@gmail.com", install_requires=[ "onnxruntime>=1.13.1", "transformers>=4.22.2", From 15651e215298d8028a4627315a339d8d7e10f2c7 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:54:01 +0000 Subject: [PATCH 236/262] regular sigmoid --- setup.py | 2 +- wtpsplit/utils.py | 25 +------------------------ 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/setup.py b/setup.py index a9908930..402e5cc5 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="segment-any-text", version="1.0.0", - packages=["wtpsplit"], + packages=["segment-any-text"], description="Universal Robust, Efficient and Adaptable Sentence Segmentation", author="Markus Frohmann, Igor Sterner, Benjamin Minixhofer", author_email="markus.frohmann@gmail.com", diff --git a/wtpsplit/utils.py b/wtpsplit/utils.py index 015730a7..6a25ae8c 100644 --- a/wtpsplit/utils.py +++ b/wtpsplit/utils.py @@ -132,31 +132,8 @@ def get_subword_label_dict(label_args, tokenizer): return label_dict -# numerically more stable sigmoid taken from -# https://stackoverflow.com/questions/51976461/optimal-way-of-defining-a-numerically-stable-sigmoid-function-for-a-list-in-pyth -def _positive_sigmoid(x): - return 1 / (1 + np.exp(-x)) - - -def _negative_sigmoid(x): - # Cache exp so you won't have to calculate it twice - exp = np.exp(x) - return exp / (exp + 1) - - def sigmoid(x): - positive = x >= 0 - # Boolean array inversion is faster than another comparison - negative = ~positive - - # empty contains junk hence will be faster to allocate - # Zeros has to zero-out the array after allocation, no need for that - # See comment to the answer when it comes to dtype - result = np.empty_like(x, dtype=np.float) - result[positive] = _positive_sigmoid(x[positive]) - result[negative] = _negative_sigmoid(x[negative]) - - return result + return 1 / (1 + np.exp(-x.astype(np.float32))) # fp32 for better precision def encode(text): From 08b34c0ff563f1eb4994058b101b81fe31b07608 Mon Sep 17 00:00:00 2001 From: markus583 Date: Sun, 16 Jun 2024 13:55:26 +0000 Subject: [PATCH 237/262] refvert for now --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 402e5cc5..a9908930 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="segment-any-text", version="1.0.0", - packages=["segment-any-text"], + packages=["wtpsplit"], description="Universal Robust, Efficient and Adaptable Sentence Segmentation", author="Markus Frohmann, Igor Sterner, Benjamin Minixhofer", author_email="markus.frohmann@gmail.com", From d7af259defe87226e3aea111f8ac8a0b9f829757 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 17 Jun 2024 08:39:53 +0000 Subject: [PATCH 238/262] add results + configs --- configs/SM/sat_sm_12l.json | 22 + configs/SM/sat_sm_12l_ll.json | 22 + configs/SM/sat_sm_12l_no-pretraining.json | 23 + configs/SM/sat_sm_12l_only_clean.json | 22 + configs/SM/sat_sm_1l.json | 22 + configs/SM/sat_sm_3l.json | 22 + configs/SM/sat_sm_6l.json | 22 + configs/SM/sat_sm_9l.json | 22 + .../{ => WtP}/bertchar_mini_stratify_0.1.json | 0 .../{ => WtP}/bertchar_tiny_stratify_0.1.json | 0 .../{ => WtP}/canine_no_stratify_3layers.json | 0 .../canine_stratify_0.1_12layers_long.json | 0 ...nine_stratify_0.1_12layers_long_no_la.json | 0 .../canine_stratify_0.1_1layer_long.json | 0 ...canine_stratify_0.1_1layer_long_no_la.json | 0 .../canine_stratify_0.1_3layers_long.json | 0 ...anine_stratify_0.1_3layers_long_no_la.json | 0 ...stratify_0.1_3layers_long_subsample25.json | 0 ...stratify_0.1_3layers_long_subsample50.json | 0 ...stratify_0.1_3layers_long_subsample75.json | 0 .../canine_stratify_0.1_3layers_no_aux.json | 0 ..._stratify_0.1_3layers_no_aux_training.json | 0 ...atify_0.1_3layers_shared_lang_adapter.json | 0 .../canine_stratify_0.1_6layers_long.json | 0 ...anine_stratify_0.1_6layers_long_no_la.json | 0 .../canine_stratify_0.1_9layers_long.json | 0 ...anine_stratify_0.1_9layers_long_no_la.json | 0 .../{ => WtP}/canine_stratify_0.1_debug.json | 0 ...ne_stratify_0.1_3layers_lookahead_128.json | 40 - .../{peft/lora.json => lora/lora_12l.json} | 6 +- .../{peft/adapter.json => lora/lora_3l.json} | 13 +- configs/lora/lora_lyrics.json | 42 + .../lora_lyrics_no_pretraining.json} | 15 +- .../lora_no_pretraining.json} | 7 +- .../lora_tweets.json} | 15 +- configs/peft/adapter_igor.json | 36 - configs/peft/adapter_pairwise.json | 41 - configs/peft/lora_lyrics.json | 42 - configs/peft/lora_ted.json | 40 - configs/sat_12l.json | 46 + ..._12layers_p_v3.json => sat_12l_no_ll.json} | 15 +- configs/sat_12l_only_clean.json | 46 + configs/sat_1l.json | 46 + configs/sat_1l_no_ll.json | 46 + ...1_3layers_p_v3_look48.json => sat_3l.json} | 15 +- ....1_3layers_p_v3.json => sat_3l_no_ll.json} | 15 +- configs/sat_3l_only_clean.json | 46 + ...yers_p_v3_look48.json => sat_6l copy.json} | 15 +- configs/sat_6l.json | 46 + ....1_6layers_p_v3.json => sat_6l_no_ll.json} | 17 +- configs/sat_9l.json | 46 + configs/sat_9l_no_ll.json | 46 + configs/xlmr_12l_baseline_lyrics.json | 42 - configs/xlmr_stratify_0.1_3layers.json | 43 - configs/xlmr_stratify_0.1_3layers_100k.json | 43 - configs/xlmr_stratify_0.1_3layers_1e-5.json | 43 - .../xlmr_stratify_0.1_3layers_400k_3e-4.json | 43 - configs/xlmr_stratify_0.1_3layers_bs128.json | 44 - ...lmr_stratify_0.1_3layers_bs128_no_aux.json | 44 - configs/xlmr_stratify_0.1_3layers_bs256.json | 44 - ...lmr_stratify_0.1_3layers_bs256_no_aux.json | 44 - configs/xlmr_stratify_0.1_3layers_bs64.json | 44 - ...stratify_0.1_3layers_bs64_no_aux_400k.json | 44 - configs/xlmr_stratify_0.1_3layers_debug.json | 44 - configs/xlmr_stratify_0.1_3layers_highlr.json | 43 - configs/xlmr_stratify_0.1_3layers_no_aux.json | 43 - configs/xlmr_stratify_0.1_3layers_nounks.json | 43 - ...lmr_stratify_0.1_3layers_p_v2_0.5Case.json | 45 - ...xlmr_stratify_0.1_3layers_p_v2_0.5aux.json | 44 - ...lmr_stratify_0.1_3layers_p_v2_0.9Case.json | 45 - ...lmr_stratify_0.1_3layers_p_v2_auxp0.3.json | 45 - ...xlmr_stratify_0.1_3layers_p_v2_look10.json | 43 - .../xlmr_stratify_0.1_3layers_p_v3_bs512.json | 45 - .../xlmr_stratify_0.1_3layers_shorter.json | 43 - ...r_stratify_0.1_3layers_stride128_400k.json | 44 - ...mr_stratify_0.1_3layers_stride32_400k.json | 44 - configs/xlmr_stratify_0.1_6layers.json | 43 - .../xlmr_stratify_0.1_6layers_p_v3_look6.json | 45 - configs/xlmv_stratify_0.1_3layers.json | 43 - utils/clean_tweets.py | 2 +- .../evaluation_results/lyrics/command-r.json | 516 ++ .../evaluation_results/lyrics/llama-3.json | 516 ++ .../lyrics/sat-12l_lora.json | 260 + .../lyrics/sat-12l_lora_no_pretraining.json | 260 + .../sat-12l_lora_no_pretraining_s100.json | 260 + .../sat-12l_lora_no_pretraining_s1000.json | 260 + .../lyrics/sat-12l_lora_s100.json | 260 + .../lyrics/sat-12l_lora_s1000.json | 260 + .../evaluation_results/lyrics/wtp-12l.json | 260 + .../lyrics/wtp-12l_s100.json | 260 + .../lyrics/wtp_12l_s1000.json | 260 + .../evaluation_results/main/baselines.json | 6017 +++++++++++++ .../main/baselines_multilingual.json | 2962 +++++++ .../evaluation_results/main/command-r.json | 7417 +++++++++++++++++ .../evaluation_results/main/llama-3.json | 7417 +++++++++++++++++ .../main/sat-12l-no_ll.json | 1645 ++++ .../evaluation_results/main/sat-12l.json | 2450 ++++++ .../evaluation_results/main/sat-12l_lora.json | 1578 ++++ .../main/sat-12l_only_clean.json | 2450 ++++++ .../evaluation_results/main/sat-1l-sm.json | 1645 ++++ .../evaluation_results/main/sat-1l.json | 2450 ++++++ .../evaluation_results/main/sat-3l.json | 2450 ++++++ .../evaluation_results/main/sat-3l_lora.json | 1477 ++++ .../evaluation_results/main/sat-3l_no_ll.json | 2450 ++++++ .../main/sat-3l_only_clean.json | 1645 ++++ .../evaluation_results/main/sat-6l.json | 2450 ++++++ .../evaluation_results/main/sat-9l.json | 2450 ++++++ .../evaluation_results/main/sat-sm-12l.json | 1645 ++++ .../main/sat-sm-12l_no_corruptions.json | 1645 ++++ .../main/sat-sm-12l_no_pretraining.json | 1645 ++++ .../evaluation_results/main/sat-sm-1l.json | 1645 ++++ .../evaluation_results/main/sat-sm-3l.json | 1645 ++++ .../main/sat-sm-3l_no_corruptions.json | 1645 ++++ .../main/sat-sm-3l_no_pretraining.json | 1645 ++++ .../evaluation_results/main/sat-sm-6l.json | 1645 ++++ .../evaluation_results/main/wtp-12l.json | 1709 ++++ .../evaluation_results/main/wtp-1l.json | 1709 ++++ .../evaluation_results/main/wtp-3l.json | 1709 ++++ .../evaluation_results/main/wtp-6l.json | 1709 ++++ .../evaluation_results/short/command-r.json | 1884 +++++ .../short/command-r_tweets.json | 138 + .../evaluation_results/short/llama-3.json | 1884 +++++ .../short/llama-3_tweets.json | 138 + .../short/sat-12l-no-limited-lookahead.json | 3346 ++++++++ .../evaluation_results/short/sat-12l.json | 3346 ++++++++ .../short/sat-12l_lora.json | 1137 +++ .../short/sat-12l_lora_tweets.json | 125 + .../short/sat-12l_tweets.json | 159 + .../short/sat-3l-no-limited-lookahead.json | 3346 ++++++++ .../evaluation_results/short/sat-3l.json | 3346 ++++++++ .../short/sat-sm-12l-limited-lookahead.json | 3346 ++++++++ .../evaluation_results/short/sat-sm-12l.json | 3346 ++++++++ .../short/sat-sm-3l-limited-looakahead.json | 3346 ++++++++ .../evaluation_results/short/sat-sm-3l.json | 3346 ++++++++ .../evaluation_results/short/wtp-12l.json | 3350 ++++++++ .../short/wtp-12l_tweets.json | 180 + .../evaluation_results/short/wtp-3l.json | 3350 ++++++++ .../main-table-p-values/ersatz/ar_f.tex | 30 + .../main-table-p-values/ersatz/cs_f.tex | 26 + .../main-table-p-values/ersatz/de_f.tex | 34 + .../main-table-p-values/ersatz/en_f.tex | 34 + .../main-table-p-values/ersatz/es_f.tex | 25 + .../main-table-p-values/ersatz/et_f.tex | 28 + .../main-table-p-values/ersatz/fi_f.tex | 32 + .../main-table-p-values/ersatz/fr_f.tex | 36 + .../main-table-p-values/ersatz/gu_f.tex | 28 + .../main-table-p-values/ersatz/hi_f.tex | 30 + .../main-table-p-values/ersatz/ja_f.tex | 32 + .../main-table-p-values/ersatz/kk_f.tex | 30 + .../main-table-p-values/ersatz/km_f.tex | 28 + .../main-table-p-values/ersatz/lt_f.tex | 32 + .../main-table-p-values/ersatz/lv_f.tex | 30 + .../main-table-p-values/ersatz/pl_f.tex | 32 + .../main-table-p-values/ersatz/ps_f.tex | 28 + .../main-table-p-values/ersatz/ro_f.tex | 32 + .../main-table-p-values/ersatz/ru_f.tex | 34 + .../main-table-p-values/ersatz/ta_f.tex | 28 + .../main-table-p-values/ersatz/tr_f.tex | 28 + .../main-table-p-values/ersatz/zh_f.tex | 32 + .../main_table_mean/af_f.tex | 28 + .../main_table_mean/am_f.tex | 26 + .../main_table_mean/ar_f.tex | 26 + .../main_table_mean/az_f.tex | 26 + .../main_table_mean/be_f.tex | 26 + .../main_table_mean/bg_f.tex | 26 + .../main_table_mean/bn_f.tex | 26 + .../main_table_mean/ca_f.tex | 28 + .../main_table_mean/cs_f.tex | 24 + .../main_table_mean/cy_f.tex | 26 + .../main_table_mean/da_f.tex | 30 + .../main_table_mean/de_f.tex | 30 + .../main_table_mean/el_f.tex | 28 + .../main_table_mean/en_f.tex | 30 + .../main_table_mean/eo_f.tex | 26 + .../main_table_mean/es_f.tex | 30 + .../main_table_mean/et_f.tex | 26 + .../main_table_mean/eu_f.tex | 26 + .../main_table_mean/fa_f.tex | 28 + .../main_table_mean/fi_f.tex | 30 + .../main_table_mean/fr_f.tex | 30 + .../main_table_mean/fy_f.tex | 26 + .../main_table_mean/ga_f.tex | 28 + .../main_table_mean/gd_f.tex | 26 + .../main_table_mean/gl_f.tex | 26 + .../main_table_mean/gu_f.tex | 26 + .../main_table_mean/ha_f.tex | 26 + .../main_table_mean/he_f.tex | 26 + .../main_table_mean/hi_f.tex | 26 + .../main_table_mean/hu_f.tex | 26 + .../main_table_mean/hy_f.tex | 26 + .../main_table_mean/id_f.tex | 28 + .../main_table_mean/ig_f.tex | 26 + .../main_table_mean/is_f.tex | 26 + .../main_table_mean/it_f.tex | 30 + .../main_table_mean/ja_f.tex | 28 + .../main_table_mean/ka_f.tex | 26 + .../main_table_mean/kk_f.tex | 26 + .../main_table_mean/km_f.tex | 26 + .../main_table_mean/kn_f.tex | 26 + .../main_table_mean/ko_f.tex | 30 + .../main_table_mean/ku_f.tex | 26 + .../main_table_mean/ky_f.tex | 26 + .../main_table_mean/la_f.tex | 26 + .../main_table_mean/lt_f.tex | 30 + .../main_table_mean/lv_f.tex | 28 + .../main_table_mean/mg_f.tex | 26 + .../main_table_mean/mk_f.tex | 28 + .../main_table_mean/ml_f.tex | 26 + .../main_table_mean/mr_f.tex | 28 + .../main_table_mean/ms_f.tex | 26 + .../main_table_mean/mt_f.tex | 26 + .../main_table_mean/my_f.tex | 26 + .../main_table_mean/ne_f.tex | 26 + .../main_table_mean/nl_f.tex | 30 + .../main_table_mean/no_f.tex | 28 + .../main_table_mean/pa_f.tex | 26 + .../main_table_mean/pl_f.tex | 28 + .../main_table_mean/ps_f.tex | 26 + .../main_table_mean/pt_f.tex | 30 + .../main_table_mean/ro_f.tex | 30 + .../main_table_mean/ru_f.tex | 30 + .../main_table_mean/si_f.tex | 26 + .../main_table_mean/sk_f.tex | 28 + .../main_table_mean/sl_f.tex | 26 + .../main_table_mean/sq_f.tex | 26 + .../main_table_mean/sr_f.tex | 28 + .../main_table_mean/sv_f.tex | 30 + .../main_table_mean/ta_f.tex | 26 + .../main_table_mean/te_f.tex | 28 + .../main_table_mean/tg_f.tex | 26 + .../main_table_mean/th_f.tex | 26 + .../main_table_mean/tr_f.tex | 26 + .../main_table_mean/uk_f.tex | 28 + .../main_table_mean/ur_f.tex | 26 + .../main_table_mean/uz_f.tex | 26 + .../main_table_mean/vi_f.tex | 28 + .../main_table_mean/xh_f.tex | 26 + .../main_table_mean/yi_f.tex | 26 + .../main_table_mean/zh_f.tex | 28 + .../main_table_mean/zu_f.tex | 26 + .../main-table-p-values/opus100/af_f.tex | 28 + .../main-table-p-values/opus100/am_f.tex | 28 + .../main-table-p-values/opus100/ar_f.tex | 30 + .../main-table-p-values/opus100/az_f.tex | 26 + .../main-table-p-values/opus100/be_f.tex | 26 + .../main-table-p-values/opus100/bg_f.tex | 28 + .../main-table-p-values/opus100/bn_f.tex | 26 + .../main-table-p-values/opus100/ca_f.tex | 28 + .../main-table-p-values/opus100/cs_f.tex | 26 + .../main-table-p-values/opus100/cy_f.tex | 26 + .../main-table-p-values/opus100/da_f.tex | 32 + .../main-table-p-values/opus100/de_f.tex | 34 + .../main-table-p-values/opus100/el_f.tex | 30 + .../main-table-p-values/opus100/en_f.tex | 34 + .../main-table-p-values/opus100/eo_f.tex | 26 + .../main-table-p-values/opus100/es_f.tex | 34 + .../main-table-p-values/opus100/et_f.tex | 28 + .../main-table-p-values/opus100/eu_f.tex | 26 + .../main-table-p-values/opus100/fa_f.tex | 30 + .../main-table-p-values/opus100/fi_f.tex | 32 + .../main-table-p-values/opus100/fr_f.tex | 27 + .../main-table-p-values/opus100/fy_f.tex | 26 + .../main-table-p-values/opus100/ga_f.tex | 28 + .../main-table-p-values/opus100/gd_f.tex | 26 + .../main-table-p-values/opus100/gl_f.tex | 26 + .../main-table-p-values/opus100/gu_f.tex | 28 + .../main-table-p-values/opus100/ha_f.tex | 26 + .../main-table-p-values/opus100/he_f.tex | 26 + .../main-table-p-values/opus100/hi_f.tex | 30 + .../main-table-p-values/opus100/hu_f.tex | 26 + .../main-table-p-values/opus100/hy_f.tex | 19 + .../main-table-p-values/opus100/id_f.tex | 28 + .../main-table-p-values/opus100/ig_f.tex | 26 + .../main-table-p-values/opus100/is_f.tex | 26 + .../main-table-p-values/opus100/it_f.tex | 32 + .../main-table-p-values/opus100/ja_f.tex | 32 + .../main-table-p-values/opus100/ka_f.tex | 26 + .../main-table-p-values/opus100/kk_f.tex | 30 + .../main-table-p-values/opus100/km_f.tex | 28 + .../main-table-p-values/opus100/kn_f.tex | 26 + .../main-table-p-values/opus100/ko_f.tex | 30 + .../main-table-p-values/opus100/ku_f.tex | 26 + .../main-table-p-values/opus100/ky_f.tex | 26 + .../main-table-p-values/opus100/lt_f.tex | 32 + .../main-table-p-values/opus100/lv_f.tex | 30 + .../main-table-p-values/opus100/mg_f.tex | 26 + .../main-table-p-values/opus100/mk_f.tex | 28 + .../main-table-p-values/opus100/ml_f.tex | 26 + .../main-table-p-values/opus100/mn_f.tex | 17 + .../main-table-p-values/opus100/mr_f.tex | 30 + .../main-table-p-values/opus100/ms_f.tex | 26 + .../main-table-p-values/opus100/mt_f.tex | 26 + .../main-table-p-values/opus100/my_f.tex | 28 + .../main-table-p-values/opus100/ne_f.tex | 26 + .../main-table-p-values/opus100/nl_f.tex | 23 + .../main-table-p-values/opus100/no_f.tex | 28 + .../main-table-p-values/opus100/pa_f.tex | 26 + .../main-table-p-values/opus100/pl_f.tex | 32 + .../main-table-p-values/opus100/ps_f.tex | 28 + .../main-table-p-values/opus100/pt_f.tex | 30 + .../main-table-p-values/opus100/ro_f.tex | 32 + .../main-table-p-values/opus100/ru_f.tex | 25 + .../main-table-p-values/opus100/si_f.tex | 26 + .../main-table-p-values/opus100/sk_f.tex | 30 + .../main-table-p-values/opus100/sl_f.tex | 26 + .../main-table-p-values/opus100/sq_f.tex | 26 + .../main-table-p-values/opus100/sr_f.tex | 28 + .../main-table-p-values/opus100/sv_f.tex | 30 + .../main-table-p-values/opus100/ta_f.tex | 28 + .../main-table-p-values/opus100/te_f.tex | 28 + .../main-table-p-values/opus100/tg_f.tex | 26 + .../main-table-p-values/opus100/th_f.tex | 26 + .../main-table-p-values/opus100/tr_f.tex | 28 + .../main-table-p-values/opus100/uk_f.tex | 28 + .../main-table-p-values/opus100/ur_f.tex | 28 + .../main-table-p-values/opus100/uz_f.tex | 26 + .../main-table-p-values/opus100/vi_f.tex | 28 + .../main-table-p-values/opus100/xh_f.tex | 26 + .../main-table-p-values/opus100/yi_f.tex | 26 + .../main-table-p-values/opus100/yo_f.tex | 17 + .../main-table-p-values/opus100/zh_f.tex | 32 + .../main-table-p-values/opus100/zu_f.tex | 26 + wtpsplit/train/train_SM.py | 84 +- 323 files changed, 117262 insertions(+), 1482 deletions(-) create mode 100644 configs/SM/sat_sm_12l.json create mode 100644 configs/SM/sat_sm_12l_ll.json create mode 100644 configs/SM/sat_sm_12l_no-pretraining.json create mode 100644 configs/SM/sat_sm_12l_only_clean.json create mode 100644 configs/SM/sat_sm_1l.json create mode 100644 configs/SM/sat_sm_3l.json create mode 100644 configs/SM/sat_sm_6l.json create mode 100644 configs/SM/sat_sm_9l.json rename configs/{ => WtP}/bertchar_mini_stratify_0.1.json (100%) rename configs/{ => WtP}/bertchar_tiny_stratify_0.1.json (100%) rename configs/{ => WtP}/canine_no_stratify_3layers.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_12layers_long.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_12layers_long_no_la.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_1layer_long.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_1layer_long_no_la.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_3layers_long.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_3layers_long_no_la.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_3layers_long_subsample25.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_3layers_long_subsample50.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_3layers_long_subsample75.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_3layers_no_aux.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_3layers_no_aux_training.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_3layers_shared_lang_adapter.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_6layers_long.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_6layers_long_no_la.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_9layers_long.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_9layers_long_no_la.json (100%) rename configs/{ => WtP}/canine_stratify_0.1_debug.json (100%) delete mode 100644 configs/canine_stratify_0.1_3layers_lookahead_128.json rename configs/{peft/lora.json => lora/lora_12l.json} (87%) rename configs/{peft/adapter.json => lora/lora_3l.json} (77%) create mode 100644 configs/lora/lora_lyrics.json rename configs/{peft/lora_lyrics_xlmr.json => lora/lora_lyrics_no_pretraining.json} (78%) rename configs/{peft/lora_xlmr.json => lora/lora_no_pretraining.json} (87%) rename configs/{peft/adapter_lyrics.json => lora/lora_tweets.json} (73%) delete mode 100644 configs/peft/adapter_igor.json delete mode 100644 configs/peft/adapter_pairwise.json delete mode 100644 configs/peft/lora_lyrics.json delete mode 100644 configs/peft/lora_ted.json create mode 100644 configs/sat_12l.json rename configs/{xlmr_stratify_0.1_12layers_p_v3.json => sat_12l_no_ll.json} (91%) create mode 100644 configs/sat_12l_only_clean.json create mode 100644 configs/sat_1l.json create mode 100644 configs/sat_1l_no_ll.json rename configs/{xlmr_stratify_0.1_3layers_p_v3_look48.json => sat_3l.json} (92%) rename configs/{xlmr_stratify_0.1_3layers_p_v3.json => sat_3l_no_ll.json} (91%) create mode 100644 configs/sat_3l_only_clean.json rename configs/{xlmr_stratify_0.1_6layers_p_v3_look48.json => sat_6l copy.json} (92%) create mode 100644 configs/sat_6l.json rename configs/{xlmr_stratify_0.1_6layers_p_v3.json => sat_6l_no_ll.json} (89%) create mode 100644 configs/sat_9l.json create mode 100644 configs/sat_9l_no_ll.json delete mode 100644 configs/xlmr_12l_baseline_lyrics.json delete mode 100644 configs/xlmr_stratify_0.1_3layers.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_100k.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_1e-5.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_400k_3e-4.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_bs128.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_bs256.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_bs64.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_debug.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_highlr.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_no_aux.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_nounks.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_p_v2_0.5Case.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_p_v2_0.5aux.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_p_v2_0.9Case.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_p_v2_auxp0.3.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_p_v2_look10.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_p_v3_bs512.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_shorter.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_stride128_400k.json delete mode 100644 configs/xlmr_stratify_0.1_3layers_stride32_400k.json delete mode 100644 configs/xlmr_stratify_0.1_6layers.json delete mode 100644 configs/xlmr_stratify_0.1_6layers_p_v3_look6.json delete mode 100644 configs/xlmv_stratify_0.1_3layers.json create mode 100644 wtpsplit/evaluation/evaluation_results/lyrics/command-r.json create mode 100644 wtpsplit/evaluation/evaluation_results/lyrics/llama-3.json create mode 100644 wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora.json create mode 100644 wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining.json create mode 100644 wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining_s100.json create mode 100644 wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining_s1000.json create mode 100644 wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_s100.json create mode 100644 wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_s1000.json create mode 100644 wtpsplit/evaluation/evaluation_results/lyrics/wtp-12l.json create mode 100644 wtpsplit/evaluation/evaluation_results/lyrics/wtp-12l_s100.json create mode 100644 wtpsplit/evaluation/evaluation_results/lyrics/wtp_12l_s1000.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/baselines.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/baselines_multilingual.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/command-r.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/llama-3.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-12l-no_ll.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-12l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-12l_lora.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-12l_only_clean.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-1l-sm.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-1l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-3l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-3l_lora.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-3l_no_ll.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-3l_only_clean.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-6l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-9l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-sm-12l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-sm-12l_no_corruptions.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-sm-12l_no_pretraining.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-sm-1l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-sm-3l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-sm-3l_no_corruptions.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-sm-3l_no_pretraining.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/sat-sm-6l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/wtp-12l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/wtp-1l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/wtp-3l.json create mode 100644 wtpsplit/evaluation/evaluation_results/main/wtp-6l.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/command-r.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/command-r_tweets.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/llama-3.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/llama-3_tweets.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/sat-12l-no-limited-lookahead.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/sat-12l.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/sat-12l_lora.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/sat-12l_lora_tweets.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/sat-12l_tweets.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/sat-3l-no-limited-lookahead.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/sat-3l.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/sat-sm-12l-limited-lookahead.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/sat-sm-12l.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/sat-sm-3l-limited-looakahead.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/sat-sm-3l.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/wtp-12l.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/wtp-12l_tweets.json create mode 100644 wtpsplit/evaluation/evaluation_results/short/wtp-3l.json create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ar_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/cs_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/de_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/en_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/es_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/et_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/fi_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/fr_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/gu_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/hi_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ja_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/kk_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/km_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/lt_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/lv_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/pl_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ps_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ro_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ru_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ta_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/tr_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/zh_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/af_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/am_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ar_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/az_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/be_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/bg_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/bn_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ca_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/cs_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/cy_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/da_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/de_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/el_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/en_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/eo_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/es_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/et_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/eu_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fa_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fi_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fr_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fy_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ga_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gd_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gl_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gu_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ha_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/he_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hi_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hu_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hy_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/id_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ig_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/is_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/it_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ja_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ka_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/kk_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/km_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/kn_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ko_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ku_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ky_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/la_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/lt_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/lv_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mg_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mk_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ml_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mr_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ms_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mt_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/my_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ne_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/nl_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/no_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pa_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pl_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ps_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pt_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ro_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ru_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/si_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sk_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sl_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sq_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sr_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sv_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ta_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/te_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/tg_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/th_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/tr_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/uk_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ur_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/uz_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/vi_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/xh_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/yi_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/zh_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/zu_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/af_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/am_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ar_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/az_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/be_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/bg_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/bn_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ca_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/cs_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/cy_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/da_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/de_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/el_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/en_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/eo_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/es_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/et_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/eu_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fa_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fi_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fr_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fy_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ga_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gd_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gl_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gu_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ha_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/he_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hi_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hu_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hy_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/id_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ig_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/is_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/it_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ja_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ka_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/kk_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/km_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/kn_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ko_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ku_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ky_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/lt_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/lv_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mg_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mk_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ml_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mn_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mr_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ms_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mt_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/my_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ne_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/nl_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/no_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pa_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pl_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ps_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pt_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ro_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ru_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/si_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sk_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sl_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sq_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sr_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sv_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ta_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/te_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/tg_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/th_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/tr_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/uk_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ur_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/uz_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/vi_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/xh_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/yi_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/yo_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/zh_f.tex create mode 100644 wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/zu_f.tex diff --git a/configs/SM/sat_sm_12l.json b/configs/SM/sat_sm_12l.json new file mode 100644 index 00000000..d24358a9 --- /dev/null +++ b/configs/SM/sat_sm_12l.json @@ -0,0 +1,22 @@ +{ + "output_dir": "sat_sm_12l", + "lim_lookahead": false, + "block_size": 256, + "no_sm_corruption": false, + "overwrite_output_dir": true, + "evaluation_strategy": "steps", + "eval_steps": 250, + "report_to": "wandb", + "learning_rate": 0.00003, + "warmup_steps": 500, + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 128, + "weight_decay": 0.01, + "push_to_hub": false, + "save_total_limit": 1, + "save_strategy": "steps", + "save_steps": 1000, + "load_best_model_at_end": false, + "max_steps": 20000, + "num_layers": 12 +} \ No newline at end of file diff --git a/configs/SM/sat_sm_12l_ll.json b/configs/SM/sat_sm_12l_ll.json new file mode 100644 index 00000000..deb73db6 --- /dev/null +++ b/configs/SM/sat_sm_12l_ll.json @@ -0,0 +1,22 @@ +{ + "output_dir": "sat_sm_12l", + "lim_lookahead": true, + "block_size": 256, + "no_sm_corruption": false, + "overwrite_output_dir": true, + "evaluation_strategy": "steps", + "eval_steps": 250, + "report_to": "wandb", + "learning_rate": 0.00003, + "warmup_steps": 500, + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 128, + "weight_decay": 0.01, + "push_to_hub": false, + "save_total_limit": 1, + "save_strategy": "steps", + "save_steps": 1000, + "load_best_model_at_end": false, + "max_steps": 20000, + "num_layers": 12 +} \ No newline at end of file diff --git a/configs/SM/sat_sm_12l_no-pretraining.json b/configs/SM/sat_sm_12l_no-pretraining.json new file mode 100644 index 00000000..38000346 --- /dev/null +++ b/configs/SM/sat_sm_12l_no-pretraining.json @@ -0,0 +1,23 @@ +{ + "output_dir": "sat_sm_12l", + "lim_lookahead": true, + "block_size": 256, + "no_sm_corruption": false, + "without_pretraining" : true, + "overwrite_output_dir": true, + "evaluation_strategy": "steps", + "eval_steps": 250, + "report_to": "wandb", + "learning_rate": 0.00003, + "warmup_steps": 500, + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 128, + "weight_decay": 0.01, + "push_to_hub": false, + "save_total_limit": 1, + "save_strategy": "steps", + "save_steps": 1000, + "load_best_model_at_end": false, + "max_steps": 20000, + "num_layers": 12 +} \ No newline at end of file diff --git a/configs/SM/sat_sm_12l_only_clean.json b/configs/SM/sat_sm_12l_only_clean.json new file mode 100644 index 00000000..8c59c316 --- /dev/null +++ b/configs/SM/sat_sm_12l_only_clean.json @@ -0,0 +1,22 @@ +{ + "output_dir": "sat_sm_12l", + "lim_lookahead": true, + "block_size": 256, + "no_sm_corruption": true, + "overwrite_output_dir": true, + "evaluation_strategy": "steps", + "eval_steps": 250, + "report_to": "wandb", + "learning_rate": 0.00003, + "warmup_steps": 500, + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 128, + "weight_decay": 0.01, + "push_to_hub": false, + "save_total_limit": 1, + "save_strategy": "steps", + "save_steps": 1000, + "load_best_model_at_end": false, + "max_steps": 20000, + "num_layers": 12 +} \ No newline at end of file diff --git a/configs/SM/sat_sm_1l.json b/configs/SM/sat_sm_1l.json new file mode 100644 index 00000000..9aa99e31 --- /dev/null +++ b/configs/SM/sat_sm_1l.json @@ -0,0 +1,22 @@ +{ + "output_dir": "sat_sm_1l", + "lim_lookahead": false, + "block_size": 256, + "no_sm_corruption": false, + "overwrite_output_dir": true, + "evaluation_strategy": "steps", + "eval_steps": 250, + "report_to": "wandb", + "learning_rate": 0.00003, + "warmup_steps": 500, + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 128, + "weight_decay": 0.01, + "push_to_hub": false, + "save_total_limit": 1, + "save_strategy": "steps", + "save_steps": 1000, + "load_best_model_at_end": false, + "max_steps": 20000, + "num_layers": 1 +} diff --git a/configs/SM/sat_sm_3l.json b/configs/SM/sat_sm_3l.json new file mode 100644 index 00000000..3e6cc462 --- /dev/null +++ b/configs/SM/sat_sm_3l.json @@ -0,0 +1,22 @@ +{ + "output_dir": "sat_sm_3l", + "lim_lookahead": false, + "block_size": 256, + "no_sm_corruption": false, + "overwrite_output_dir": true, + "evaluation_strategy": "steps", + "eval_steps": 250, + "report_to": "wandb", + "learning_rate": 0.00003, + "warmup_steps": 500, + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 128, + "weight_decay": 0.01, + "push_to_hub": false, + "save_total_limit": 1, + "save_strategy": "steps", + "save_steps": 1000, + "load_best_model_at_end": false, + "max_steps": 20000, + "num_layers": 3 +} diff --git a/configs/SM/sat_sm_6l.json b/configs/SM/sat_sm_6l.json new file mode 100644 index 00000000..bf58e2e6 --- /dev/null +++ b/configs/SM/sat_sm_6l.json @@ -0,0 +1,22 @@ +{ + "output_dir": "sat_sm_6l", + "lim_lookahead": false, + "block_size": 256, + "no_sm_corruption": false, + "overwrite_output_dir": true, + "evaluation_strategy": "steps", + "eval_steps": 250, + "report_to": "wandb", + "learning_rate": 0.00003, + "warmup_steps": 500, + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 128, + "weight_decay": 0.01, + "push_to_hub": false, + "save_total_limit": 1, + "save_strategy": "steps", + "save_steps": 1000, + "load_best_model_at_end": false, + "max_steps": 20000, + "num_layers": 6 +} diff --git a/configs/SM/sat_sm_9l.json b/configs/SM/sat_sm_9l.json new file mode 100644 index 00000000..b0423fb2 --- /dev/null +++ b/configs/SM/sat_sm_9l.json @@ -0,0 +1,22 @@ +{ + "output_dir": "sat_sm_9", + "lim_lookahead": false, + "block_size": 256, + "no_sm_corruption": false, + "overwrite_output_dir": true, + "evaluation_strategy": "steps", + "eval_steps": 250, + "report_to": "wandb", + "learning_rate": 0.00003, + "warmup_steps": 500, + "per_device_train_batch_size": 128, + "per_device_eval_batch_size": 128, + "weight_decay": 0.01, + "push_to_hub": false, + "save_total_limit": 1, + "save_strategy": "steps", + "save_steps": 1000, + "load_best_model_at_end": false, + "max_steps": 20000, + "num_layers": 9 +} \ No newline at end of file diff --git a/configs/bertchar_mini_stratify_0.1.json b/configs/WtP/bertchar_mini_stratify_0.1.json similarity index 100% rename from configs/bertchar_mini_stratify_0.1.json rename to configs/WtP/bertchar_mini_stratify_0.1.json diff --git a/configs/bertchar_tiny_stratify_0.1.json b/configs/WtP/bertchar_tiny_stratify_0.1.json similarity index 100% rename from configs/bertchar_tiny_stratify_0.1.json rename to configs/WtP/bertchar_tiny_stratify_0.1.json diff --git a/configs/canine_no_stratify_3layers.json b/configs/WtP/canine_no_stratify_3layers.json similarity index 100% rename from configs/canine_no_stratify_3layers.json rename to configs/WtP/canine_no_stratify_3layers.json diff --git a/configs/canine_stratify_0.1_12layers_long.json b/configs/WtP/canine_stratify_0.1_12layers_long.json similarity index 100% rename from configs/canine_stratify_0.1_12layers_long.json rename to configs/WtP/canine_stratify_0.1_12layers_long.json diff --git a/configs/canine_stratify_0.1_12layers_long_no_la.json b/configs/WtP/canine_stratify_0.1_12layers_long_no_la.json similarity index 100% rename from configs/canine_stratify_0.1_12layers_long_no_la.json rename to configs/WtP/canine_stratify_0.1_12layers_long_no_la.json diff --git a/configs/canine_stratify_0.1_1layer_long.json b/configs/WtP/canine_stratify_0.1_1layer_long.json similarity index 100% rename from configs/canine_stratify_0.1_1layer_long.json rename to configs/WtP/canine_stratify_0.1_1layer_long.json diff --git a/configs/canine_stratify_0.1_1layer_long_no_la.json b/configs/WtP/canine_stratify_0.1_1layer_long_no_la.json similarity index 100% rename from configs/canine_stratify_0.1_1layer_long_no_la.json rename to configs/WtP/canine_stratify_0.1_1layer_long_no_la.json diff --git a/configs/canine_stratify_0.1_3layers_long.json b/configs/WtP/canine_stratify_0.1_3layers_long.json similarity index 100% rename from configs/canine_stratify_0.1_3layers_long.json rename to configs/WtP/canine_stratify_0.1_3layers_long.json diff --git a/configs/canine_stratify_0.1_3layers_long_no_la.json b/configs/WtP/canine_stratify_0.1_3layers_long_no_la.json similarity index 100% rename from configs/canine_stratify_0.1_3layers_long_no_la.json rename to configs/WtP/canine_stratify_0.1_3layers_long_no_la.json diff --git a/configs/canine_stratify_0.1_3layers_long_subsample25.json b/configs/WtP/canine_stratify_0.1_3layers_long_subsample25.json similarity index 100% rename from configs/canine_stratify_0.1_3layers_long_subsample25.json rename to configs/WtP/canine_stratify_0.1_3layers_long_subsample25.json diff --git a/configs/canine_stratify_0.1_3layers_long_subsample50.json b/configs/WtP/canine_stratify_0.1_3layers_long_subsample50.json similarity index 100% rename from configs/canine_stratify_0.1_3layers_long_subsample50.json rename to configs/WtP/canine_stratify_0.1_3layers_long_subsample50.json diff --git a/configs/canine_stratify_0.1_3layers_long_subsample75.json b/configs/WtP/canine_stratify_0.1_3layers_long_subsample75.json similarity index 100% rename from configs/canine_stratify_0.1_3layers_long_subsample75.json rename to configs/WtP/canine_stratify_0.1_3layers_long_subsample75.json diff --git a/configs/canine_stratify_0.1_3layers_no_aux.json b/configs/WtP/canine_stratify_0.1_3layers_no_aux.json similarity index 100% rename from configs/canine_stratify_0.1_3layers_no_aux.json rename to configs/WtP/canine_stratify_0.1_3layers_no_aux.json diff --git a/configs/canine_stratify_0.1_3layers_no_aux_training.json b/configs/WtP/canine_stratify_0.1_3layers_no_aux_training.json similarity index 100% rename from configs/canine_stratify_0.1_3layers_no_aux_training.json rename to configs/WtP/canine_stratify_0.1_3layers_no_aux_training.json diff --git a/configs/canine_stratify_0.1_3layers_shared_lang_adapter.json b/configs/WtP/canine_stratify_0.1_3layers_shared_lang_adapter.json similarity index 100% rename from configs/canine_stratify_0.1_3layers_shared_lang_adapter.json rename to configs/WtP/canine_stratify_0.1_3layers_shared_lang_adapter.json diff --git a/configs/canine_stratify_0.1_6layers_long.json b/configs/WtP/canine_stratify_0.1_6layers_long.json similarity index 100% rename from configs/canine_stratify_0.1_6layers_long.json rename to configs/WtP/canine_stratify_0.1_6layers_long.json diff --git a/configs/canine_stratify_0.1_6layers_long_no_la.json b/configs/WtP/canine_stratify_0.1_6layers_long_no_la.json similarity index 100% rename from configs/canine_stratify_0.1_6layers_long_no_la.json rename to configs/WtP/canine_stratify_0.1_6layers_long_no_la.json diff --git a/configs/canine_stratify_0.1_9layers_long.json b/configs/WtP/canine_stratify_0.1_9layers_long.json similarity index 100% rename from configs/canine_stratify_0.1_9layers_long.json rename to configs/WtP/canine_stratify_0.1_9layers_long.json diff --git a/configs/canine_stratify_0.1_9layers_long_no_la.json b/configs/WtP/canine_stratify_0.1_9layers_long_no_la.json similarity index 100% rename from configs/canine_stratify_0.1_9layers_long_no_la.json rename to configs/WtP/canine_stratify_0.1_9layers_long_no_la.json diff --git a/configs/canine_stratify_0.1_debug.json b/configs/WtP/canine_stratify_0.1_debug.json similarity index 100% rename from configs/canine_stratify_0.1_debug.json rename to configs/WtP/canine_stratify_0.1_debug.json diff --git a/configs/canine_stratify_0.1_3layers_lookahead_128.json b/configs/canine_stratify_0.1_3layers_lookahead_128.json deleted file mode 100644 index 5da687b6..00000000 --- a/configs/canine_stratify_0.1_3layers_lookahead_128.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "model_name_or_path": "google/canine-s", - "output_dir": "output_margin_sentence_only", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 64, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 1, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 6, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 400000, - "save_steps": 50000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": 128, - "num_hidden_layers": 3, - "language_adapter": "on", - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 5000, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600 -} \ No newline at end of file diff --git a/configs/peft/lora.json b/configs/lora/lora_12l.json similarity index 87% rename from configs/peft/lora.json rename to configs/lora/lora_12l.json index 41b8596f..6a268ada 100644 --- a/configs/peft/lora.json +++ b/configs/lora/lora_12l.json @@ -1,6 +1,6 @@ { - "model_name_or_path": "xlmr-3l-v3_look48_lc0.1-mix2", - "output_dir": "xlmr-3l-v4_LL_lora-v2_ep30_s10k", + "model_name_or_path": "segment-any-text/sat-12l", + "output_dir": "sat-12l-LL_lora", "block_size": 256, "eval_stride": 128, "do_train": true, @@ -16,7 +16,7 @@ "num_train_epochs": 30, "logging_steps": 50, "report_to": "wandb", - "wandb_project": "sentence-peft-v2", + "wandb_project": "sentence", "save_steps": 100000000, "remove_unused_columns": false, "one_sample_per_line": false, diff --git a/configs/peft/adapter.json b/configs/lora/lora_3l.json similarity index 77% rename from configs/peft/adapter.json rename to configs/lora/lora_3l.json index 76d3e8f8..cf4a4065 100644 --- a/configs/peft/adapter.json +++ b/configs/lora/lora_3l.json @@ -1,6 +1,6 @@ { - "model_name_or_path": "xlmr-normal-p-v3", - "output_dir": "xlmr-3l-v3_adapter_rf32_ep20_v2_100-1k-10k", + "model_name_or_path": "segment-any-text/sat-3l", + "output_dir": "sat-3l-LL_lora", "block_size": 256, "eval_stride": 128, "do_train": true, @@ -13,9 +13,10 @@ "preprocessing_num_workers": 1, "learning_rate": 3e-4, "fp16": false, - "num_train_epochs": 20, + "num_train_epochs": 30, "logging_steps": 50, "report_to": "wandb", + "wandb_project": "sentence", "save_steps": 100000000, "remove_unused_columns": false, "one_sample_per_line": false, @@ -29,9 +30,9 @@ "use_subwords": true, "custom_punctuation_file": "punctuation_xlmr_unk.txt", "log_level": "warning", - "adapter_config": "seq_bn[reduction_factor=32]", + "adapter_config": "lora[r=16,alpha=32,intermediate_lora=True]", "weight_decay": 0.0, "auxiliary_remove_prob": 0.0, - "do_process": false, - "n_train_steps": [100, 1000, 10000] + "train_adapter": true, + "subsample": 10000 } \ No newline at end of file diff --git a/configs/lora/lora_lyrics.json b/configs/lora/lora_lyrics.json new file mode 100644 index 00000000..e8968994 --- /dev/null +++ b/configs/lora/lora_lyrics.json @@ -0,0 +1,42 @@ +{ + "model_name_or_path": "segment-any-text/sat-12l", + "output_dir": "sat-12l-no-LL_lora_lyrics", + "block_size": 512, + "eval_stride": 256, + "do_train": true, + "do_eval": true, + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 32, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "evaluation_strategy": "epoch", + "dataloader_num_workers": 1, + "preprocessing_num_workers": 1, + "learning_rate": 3e-4, + "fp16": false, + "num_train_epochs": 30, + "logging_steps": 50, + "report_to": "wandb", + "wandb_project": "sentence", + "save_steps": 100000000, + "remove_unused_columns": false, + "one_sample_per_line": true, + "do_sentence_training": true, + "do_auxiliary_training": false, + "warmup_ratio": 0.1, + "non_punctuation_sample_ratio": null, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "log_level": "warning", + "adapter_config": "lora[r=16,alpha=32,intermediate_lora=True]", + "weight_decay": 0.0, + "auxiliary_remove_prob": 0.0, + "text_path": "data/lyrics.pth", + "skip_eval_loss": false, + "shuffle": false, + "train_adapter": true, + "subsample": 10000 +} \ No newline at end of file diff --git a/configs/peft/lora_lyrics_xlmr.json b/configs/lora/lora_lyrics_no_pretraining.json similarity index 78% rename from configs/peft/lora_lyrics_xlmr.json rename to configs/lora/lora_lyrics_no_pretraining.json index c232420a..17b7d816 100644 --- a/configs/peft/lora_lyrics_xlmr.json +++ b/configs/lora/lora_lyrics_no_pretraining.json @@ -1,12 +1,13 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlm-roberta-base_lora-v2_ep30_mldbW-verses_bs512", + "output_dir": "xlmr-12l_lora_lyrics", "block_size": 512, + "eval_stride": 256, "do_train": true, "do_eval": true, - "per_device_train_batch_size": 32, + "per_device_train_batch_size": 64, "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, + "gradient_accumulation_steps": 1, "eval_accumulation_steps": 8, "evaluation_strategy": "epoch", "dataloader_num_workers": 1, @@ -16,7 +17,7 @@ "num_train_epochs": 30, "logging_steps": 50, "report_to": "wandb", - "wandb_project": "lyrics-peft", + "wandb_project": "sentence", "save_steps": 100000000, "remove_unused_columns": false, "one_sample_per_line": true, @@ -25,7 +26,7 @@ "warmup_ratio": 0.1, "non_punctuation_sample_ratio": null, "prediction_loss_only": true, - "use_auxiliary": false, + "use_auxiliary": true, "ddp_timeout": 3600, "use_subwords": true, "custom_punctuation_file": "punctuation_xlmr_unk.txt", @@ -33,9 +34,9 @@ "adapter_config": "lora[r=16,alpha=32,intermediate_lora=True]", "weight_decay": 0.0, "auxiliary_remove_prob": 0.0, - "text_path": "data/all_data_11_05-lyrics.pth", + "text_path": "data/lyrics.pth", "skip_eval_loss": false, "shuffle": false, "train_adapter": true, - "subsample": null + "subsample": 10000 } \ No newline at end of file diff --git a/configs/peft/lora_xlmr.json b/configs/lora/lora_no_pretraining.json similarity index 87% rename from configs/peft/lora_xlmr.json rename to configs/lora/lora_no_pretraining.json index a061210f..ca56e255 100644 --- a/configs/peft/lora_xlmr.json +++ b/configs/lora/lora_no_pretraining.json @@ -1,9 +1,8 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-base-3l_lora-v2_ep30_s10k", + "output_dir": "xlmr-12l_lora", "block_size": 256, "eval_stride": 128, - "num_hidden_layers": 3, "do_train": true, "do_eval": true, "per_device_train_batch_size": 64, @@ -17,7 +16,7 @@ "num_train_epochs": 30, "logging_steps": 50, "report_to": "wandb", - "wandb_project": "sentence-peft-v2", + "wandb_project": "sentence", "save_steps": 100000000, "remove_unused_columns": false, "one_sample_per_line": false, @@ -26,7 +25,7 @@ "warmup_ratio": 0.1, "non_punctuation_sample_ratio": null, "prediction_loss_only": true, - "use_auxiliary": false, + "use_auxiliary": true, "ddp_timeout": 3600, "use_subwords": true, "custom_punctuation_file": "punctuation_xlmr_unk.txt", diff --git a/configs/peft/adapter_lyrics.json b/configs/lora/lora_tweets.json similarity index 73% rename from configs/peft/adapter_lyrics.json rename to configs/lora/lora_tweets.json index 668ce560..5db21a88 100644 --- a/configs/peft/adapter_lyrics.json +++ b/configs/lora/lora_tweets.json @@ -1,6 +1,6 @@ { - "model_name_or_path": "xlmr-12l-v3", - "output_dir": "xlmr-12l-v3_adapter_rf4_ep30_v2_mldbW-verses-S_fs_ss0.1", + "model_name_or_path": "segment-any-text/sat-12l", + "output_dir": "sat-12l_lora_tweets", "block_size": 256, "eval_stride": 128, "do_train": true, @@ -17,7 +17,7 @@ "num_train_epochs": 30, "logging_steps": 50, "report_to": "wandb", - "wandb_project": "lyrics-peft", + "wandb_project": "sentence", "save_steps": 100000000, "remove_unused_columns": false, "one_sample_per_line": true, @@ -31,15 +31,12 @@ "use_subwords": true, "custom_punctuation_file": "punctuation_xlmr_unk.txt", "log_level": "warning", - "adapter_config": "seq_bn[reduction_factor=4]", + "adapter_config": "lora[r=16,alpha=32,intermediate_lora=True]", "weight_decay": 0.0, "auxiliary_remove_prob": 0.0, - "do_process": true, - "text_path": "data/mldbW_verses_strip_n_strip_single_f.pt", + "text_path": "data/all_data_tweets_cleaned.pth", "skip_eval_loss": false, "shuffle": false, - "do_remove_punct": false, - "do_lowercase": false, "train_adapter": true, - "subsample": 0.1 + "subsample": 10000 } \ No newline at end of file diff --git a/configs/peft/adapter_igor.json b/configs/peft/adapter_igor.json deleted file mode 100644 index 3b7c89af..00000000 --- a/configs/peft/adapter_igor.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "model_name_or_path": "xlmr-multilingual-sentence-segmentation-09-04-3L-256BS-UD-OPUS-TED", - "output_dir": "xlmr-3l-v3-igor-mixture_adapter_rf16_ep30_v2", - "block_size": 256, - "eval_stride": 128, - "do_train": true, - "do_eval": true, - "per_device_train_batch_size": 64, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 1, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 8, - "preprocessing_num_workers": 1, - "learning_rate": 3e-4, - "fp16": false, - "num_train_epochs": 30, - "logging_steps": 50, - "report_to": "wandb", - "save_steps": 100000000, - "remove_unused_columns": false, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": false, - "warmup_ratio": 0.1, - "non_punctuation_sample_ratio": null, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning", - "adapter_config": "seq_bn[reduction_factor=16]", - "weight_decay": 0.0, - "auxiliary_remove_prob": 0.0, - "train_adapter": true -} \ No newline at end of file diff --git a/configs/peft/adapter_pairwise.json b/configs/peft/adapter_pairwise.json deleted file mode 100644 index 70dd60fc..00000000 --- a/configs/peft/adapter_pairwise.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "model_name_or_path": "xlmr-normal-p-v3", - "output_dir": "xlmr-3l-v3_adapter_rf32_ep20_v2_100-1k-10k_pairwise_bs32", - "block_size": 32, - "eval_stride": 16, - "do_train": true, - "do_eval": true, - "per_device_train_batch_size": 64, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 1, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 1, - "preprocessing_num_workers": 1, - "learning_rate": 3e-4, - "fp16": false, - "num_train_epochs": 20, - "logging_steps": 50, - "report_to": "wandb", - "wandb_project": "pairwise-peft", - "save_steps": 100000000, - "remove_unused_columns": false, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": false, - "warmup_ratio": 0.1, - "non_punctuation_sample_ratio": null, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning", - "adapter_config": "seq_bn[reduction_factor=32]", - "weight_decay": 0.0, - "auxiliary_remove_prob": 0.0, - "do_process": true, - "n_train_steps": [100, 1000, 10000], - "do_lowercase": true, - "do_remove_punct": true, - "eval_pairwise": true -} \ No newline at end of file diff --git a/configs/peft/lora_lyrics.json b/configs/peft/lora_lyrics.json deleted file mode 100644 index 10df35ec..00000000 --- a/configs/peft/lora_lyrics.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "model_name_or_path": "xlmr-12l-v3_lc0.1-mix2", - "output_dir": "xlmr-12l-v4_lora_r8_a16_qkv-int-out_ep30_mldbW-verses_s1000", - "block_size": 256, - "eval_stride": 128, - "do_train": true, - "do_eval": true, - "per_device_train_batch_size": 64, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 1, - "eval_accumulation_steps": 8, - "evaluation_strategy": "epoch", - "dataloader_num_workers": 1, - "preprocessing_num_workers": 1, - "learning_rate": 3e-4, - "fp16": false, - "num_train_epochs": 30, - "logging_steps": 50, - "report_to": "wandb", - "wandb_project": "lyrics-peft", - "save_steps": 100000000, - "remove_unused_columns": false, - "one_sample_per_line": true, - "do_sentence_training": true, - "do_auxiliary_training": false, - "warmup_ratio": 0.1, - "non_punctuation_sample_ratio": null, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning", - "adapter_config": "lora[r=8,alpha=16,dropout=0.1,intermediate_lora=True,output_lora=True,attn_matrices=['q','k','v']]", - "weight_decay": 0.0, - "auxiliary_remove_prob": 0.0, - "text_path": "data/mldbW_verses_strip_n_strip_single_f.pt", - "skip_eval_loss": false, - "shuffle": false, - "train_adapter": true, - "subsample": 1000 -} \ No newline at end of file diff --git a/configs/peft/lora_ted.json b/configs/peft/lora_ted.json deleted file mode 100644 index 3c5283d3..00000000 --- a/configs/peft/lora_ted.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "model_name_or_path": "xlmr-12l-v3_lc0.1-mix2-FT", - "output_dir": "xlmr-12L-FT-TED_lora-v2_ep30_s1000", - "block_size": 256, - "eval_stride": 128, - "do_train": true, - "do_eval": true, - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 1, - "preprocessing_num_workers": 8, - "learning_rate": 3e-4, - "fp16": false, - "num_train_epochs": 30, - "logging_steps": 50, - "report_to": "wandb", - "wandb_project": "sentence-peft-v2", - "save_steps": 100000000, - "remove_unused_columns": false, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": false, - "warmup_ratio": 0.1, - "non_punctuation_sample_ratio": null, - "prediction_loss_only": true, - "use_auxiliary": false, - "ddp_timeout": 3600, - "use_subwords": true, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning", - "adapter_config": "lora[r=16,alpha=32,intermediate_lora=True]", - "weight_decay": 0.0, - "auxiliary_remove_prob": 0.0, - "text_path": "data/ted2020.pth", - "train_adapter": "true", - "eval_every": 1000000, - "subsample": 10000 -} \ No newline at end of file diff --git a/configs/sat_12l.json b/configs/sat_12l.json new file mode 100644 index 00000000..d526663c --- /dev/null +++ b/configs/sat_12l.json @@ -0,0 +1,46 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "sat-12l", + "num_hidden_layers": 12, + "lookahead": 48, + "block_size": 256, + "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.1, + "auxiliary_remove_prob": 0.2, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_12layers_p_v3.json b/configs/sat_12l_no_ll.json similarity index 91% rename from configs/xlmr_stratify_0.1_12layers_p_v3.json rename to configs/sat_12l_no_ll.json index 18fee9bd..47bf2719 100644 --- a/configs/xlmr_stratify_0.1_12layers_p_v3.json +++ b/configs/sat_12l_no_ll.json @@ -1,15 +1,17 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-12l-v3", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", + "output_dir": "sat-12l-no-limited-lookahead", + "num_hidden_layers": 12, + "lookahead": null, "block_size": 256, "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.1, + "auxiliary_remove_prob": 0.2, "use_bert": true, "do_train": true, "do_eval": true, "evaluation_strategy": "steps", - "per_device_train_batch_size": 128, + "per_device_train_batch_size": 64, "per_device_eval_batch_size": 64, "gradient_accumulation_steps": 1, "eval_accumulation_steps": 8, @@ -25,11 +27,9 @@ "report_to": "wandb", "is_decoder": false, "remove_unused_columns": false, - "lookahead": null, "one_sample_per_line": false, "do_sentence_training": true, "do_auxiliary_training": true, - "auxiliary_remove_prob": 0.2, "warmup_steps": 5000, "adapter_warmup_steps": 0, "adapter_lr_multiplier": 1, @@ -39,7 +39,8 @@ "use_auxiliary": true, "ddp_timeout": 3600, "use_subwords": true, - "num_hidden_layers": 12, "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", "log_level": "warning" } \ No newline at end of file diff --git a/configs/sat_12l_only_clean.json b/configs/sat_12l_only_clean.json new file mode 100644 index 00000000..6ccd08c0 --- /dev/null +++ b/configs/sat_12l_only_clean.json @@ -0,0 +1,46 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "sat-12l_only_clean", + "num_hidden_layers": 12, + "lookahead": 48, + "block_size": 256, + "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.0, + "auxiliary_remove_prob": 0.2, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/sat_1l.json b/configs/sat_1l.json new file mode 100644 index 00000000..70c54687 --- /dev/null +++ b/configs/sat_1l.json @@ -0,0 +1,46 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "sat-1l", + "num_hidden_layers": 1, + "lookahead": 48, + "block_size": 256, + "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.1, + "auxiliary_remove_prob": 0.2, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/sat_1l_no_ll.json b/configs/sat_1l_no_ll.json new file mode 100644 index 00000000..6a47576e --- /dev/null +++ b/configs/sat_1l_no_ll.json @@ -0,0 +1,46 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "sat-1l-no-limited-lookahead", + "num_hidden_layers": 1, + "lookahead": 48, + "block_size": 256, + "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.1, + "auxiliary_remove_prob": 0.2, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_p_v3_look48.json b/configs/sat_3l.json similarity index 92% rename from configs/xlmr_stratify_0.1_3layers_p_v3_look48.json rename to configs/sat_3l.json index d0d0b585..29e1cf85 100644 --- a/configs/xlmr_stratify_0.1_3layers_p_v3_look48.json +++ b/configs/sat_3l.json @@ -1,15 +1,17 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-3l-v3_look48", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", + "output_dir": "sat-3l", + "num_hidden_layers": 3, + "lookahead": 48, "block_size": 256, "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.1, + "auxiliary_remove_prob": 0.2, "use_bert": true, "do_train": true, "do_eval": true, "evaluation_strategy": "steps", - "per_device_train_batch_size": 128, + "per_device_train_batch_size": 64, "per_device_eval_batch_size": 64, "gradient_accumulation_steps": 1, "eval_accumulation_steps": 8, @@ -25,11 +27,9 @@ "report_to": "wandb", "is_decoder": false, "remove_unused_columns": false, - "lookahead": 48, "one_sample_per_line": false, "do_sentence_training": true, "do_auxiliary_training": true, - "auxiliary_remove_prob": 0.2, "warmup_steps": 5000, "adapter_warmup_steps": 0, "adapter_lr_multiplier": 1, @@ -39,7 +39,8 @@ "use_auxiliary": true, "ddp_timeout": 3600, "use_subwords": true, - "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", "log_level": "warning" } \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_p_v3.json b/configs/sat_3l_no_ll.json similarity index 91% rename from configs/xlmr_stratify_0.1_3layers_p_v3.json rename to configs/sat_3l_no_ll.json index f6fbb3a1..a0481f0d 100644 --- a/configs/xlmr_stratify_0.1_3layers_p_v3.json +++ b/configs/sat_3l_no_ll.json @@ -1,15 +1,17 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-3l-v3", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", + "output_dir": "sat-3l-no-limited-lookahead", + "num_hidden_layers": 3, + "lookahead": null, "block_size": 256, "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.1, + "auxiliary_remove_prob": 0.2, "use_bert": true, "do_train": true, "do_eval": true, "evaluation_strategy": "steps", - "per_device_train_batch_size": 128, + "per_device_train_batch_size": 64, "per_device_eval_batch_size": 64, "gradient_accumulation_steps": 1, "eval_accumulation_steps": 8, @@ -25,11 +27,9 @@ "report_to": "wandb", "is_decoder": false, "remove_unused_columns": false, - "lookahead": null, "one_sample_per_line": false, "do_sentence_training": true, "do_auxiliary_training": true, - "auxiliary_remove_prob": 0.2, "warmup_steps": 5000, "adapter_warmup_steps": 0, "adapter_lr_multiplier": 1, @@ -39,7 +39,8 @@ "use_auxiliary": true, "ddp_timeout": 3600, "use_subwords": true, - "num_hidden_layers": 3, "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", "log_level": "warning" } \ No newline at end of file diff --git a/configs/sat_3l_only_clean.json b/configs/sat_3l_only_clean.json new file mode 100644 index 00000000..4f95b61a --- /dev/null +++ b/configs/sat_3l_only_clean.json @@ -0,0 +1,46 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "sat-3l", + "num_hidden_layers": 3, + "lookahead": 48, + "block_size": 256, + "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.0, + "auxiliary_remove_prob": 0.2, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_6layers_p_v3_look48.json b/configs/sat_6l copy.json similarity index 92% rename from configs/xlmr_stratify_0.1_6layers_p_v3_look48.json rename to configs/sat_6l copy.json index 5ce6d21d..4f394eef 100644 --- a/configs/xlmr_stratify_0.1_6layers_p_v3_look48.json +++ b/configs/sat_6l copy.json @@ -1,15 +1,17 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-6l-v3_look48", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", + "output_dir": "sat-6l", + "num_hidden_layers": 6, + "lookahead": 48, "block_size": 256, "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.1, + "auxiliary_remove_prob": 0.2, "use_bert": true, "do_train": true, "do_eval": true, "evaluation_strategy": "steps", - "per_device_train_batch_size": 128, + "per_device_train_batch_size": 64, "per_device_eval_batch_size": 64, "gradient_accumulation_steps": 1, "eval_accumulation_steps": 8, @@ -25,11 +27,9 @@ "report_to": "wandb", "is_decoder": false, "remove_unused_columns": false, - "lookahead": 48, "one_sample_per_line": false, "do_sentence_training": true, "do_auxiliary_training": true, - "auxiliary_remove_prob": 0.2, "warmup_steps": 5000, "adapter_warmup_steps": 0, "adapter_lr_multiplier": 1, @@ -39,7 +39,8 @@ "use_auxiliary": true, "ddp_timeout": 3600, "use_subwords": true, - "num_hidden_layers": 6, "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", "log_level": "warning" } \ No newline at end of file diff --git a/configs/sat_6l.json b/configs/sat_6l.json new file mode 100644 index 00000000..4f394eef --- /dev/null +++ b/configs/sat_6l.json @@ -0,0 +1,46 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "sat-6l", + "num_hidden_layers": 6, + "lookahead": 48, + "block_size": 256, + "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.1, + "auxiliary_remove_prob": 0.2, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_6layers_p_v3.json b/configs/sat_6l_no_ll.json similarity index 89% rename from configs/xlmr_stratify_0.1_6layers_p_v3.json rename to configs/sat_6l_no_ll.json index 87d05bd9..a415561f 100644 --- a/configs/xlmr_stratify_0.1_6layers_p_v3.json +++ b/configs/sat_6l_no_ll.json @@ -1,15 +1,17 @@ { "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-6l-v3", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", + "output_dir": "sat-6l-no-limited-lookahead", + "num_hidden_layers": 6, + "lookahead": null, "block_size": 256, "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.1, + "auxiliary_remove_prob": 0.2, "use_bert": true, "do_train": true, "do_eval": true, "evaluation_strategy": "steps", - "per_device_train_batch_size": 128, + "per_device_train_batch_size": 64, "per_device_eval_batch_size": 64, "gradient_accumulation_steps": 1, "eval_accumulation_steps": 8, @@ -19,17 +21,15 @@ "save_strategy": "steps", "fp16": false, "max_steps": 200000, - "save_steps": 100000, + "save_steps": 50000, "eval_steps": 10000, "logging_steps": 50, "report_to": "wandb", "is_decoder": false, "remove_unused_columns": false, - "lookahead": null, "one_sample_per_line": false, "do_sentence_training": true, "do_auxiliary_training": true, - "auxiliary_remove_prob": 0.2, "warmup_steps": 5000, "adapter_warmup_steps": 0, "adapter_lr_multiplier": 1, @@ -39,7 +39,8 @@ "use_auxiliary": true, "ddp_timeout": 3600, "use_subwords": true, - "num_hidden_layers": 6, "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", "log_level": "warning" } \ No newline at end of file diff --git a/configs/sat_9l.json b/configs/sat_9l.json new file mode 100644 index 00000000..f588467d --- /dev/null +++ b/configs/sat_9l.json @@ -0,0 +1,46 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "sat-9l", + "num_hidden_layers": 9, + "lookahead": 48, + "block_size": 256, + "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.1, + "auxiliary_remove_prob": 0.2, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/sat_9l_no_ll.json b/configs/sat_9l_no_ll.json new file mode 100644 index 00000000..b7a4c8be --- /dev/null +++ b/configs/sat_9l_no_ll.json @@ -0,0 +1,46 @@ +{ + "model_name_or_path": "xlm-roberta-base", + "output_dir": "sat-9l-no-limited-lookahead", + "num_hidden_layers": 9, + "lookahead": null, + "block_size": 256, + "eval_stride": 128, + "corrupt_entire_chunk_prob": 0.1, + "auxiliary_remove_prob": 0.2, + "use_bert": true, + "do_train": true, + "do_eval": true, + "evaluation_strategy": "steps", + "per_device_train_batch_size": 64, + "per_device_eval_batch_size": 64, + "gradient_accumulation_steps": 1, + "eval_accumulation_steps": 8, + "dataloader_num_workers": 4, + "preprocessing_num_workers": 32, + "learning_rate": 1e-4, + "save_strategy": "steps", + "fp16": false, + "max_steps": 200000, + "save_steps": 50000, + "eval_steps": 10000, + "logging_steps": 50, + "report_to": "wandb", + "is_decoder": false, + "remove_unused_columns": false, + "one_sample_per_line": false, + "do_sentence_training": true, + "do_auxiliary_training": true, + "warmup_steps": 5000, + "adapter_warmup_steps": 0, + "adapter_lr_multiplier": 1, + "ngram_order": 1, + "non_punctuation_sample_ratio": 0.1, + "prediction_loss_only": true, + "use_auxiliary": true, + "ddp_timeout": 3600, + "use_subwords": true, + "custom_punctuation_file": "punctuation_xlmr_unk.txt", + "train_text_path": "data/sentence/train.parquet", + "valid_text_path": "data/sentence/valid.parquet", + "log_level": "warning" +} \ No newline at end of file diff --git a/configs/xlmr_12l_baseline_lyrics.json b/configs/xlmr_12l_baseline_lyrics.json deleted file mode 100644 index 41a67742..00000000 --- a/configs/xlmr_12l_baseline_lyrics.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-12l_ep30_v2_5e-5_mldbW-verses-S_fs", - "block_size": 256, - "eval_stride": 128, - "do_train": true, - "do_eval": true, - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "evaluation_strategy": "epoch", - "dataloader_num_workers": 1, - "preprocessing_num_workers": 1, - "learning_rate": 5e-5, - "fp16": false, - "num_train_epochs": 30, - "logging_steps": 50, - "report_to": "wandb", - "wandb_project": "lyrics-peft", - "save_steps": 100000000, - "remove_unused_columns": false, - "one_sample_per_line": true, - "do_sentence_training": true, - "do_auxiliary_training": false, - "warmup_ratio": 0.1, - "non_punctuation_sample_ratio": null, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning", - "weight_decay": 0.0, - "auxiliary_remove_prob": 0.0, - "text_path": "data/mldbW_verses_strip_n_strip_single_f.pt", - "skip_eval_loss": false, - "shuffle": false, - "do_remove_punct": false, - "do_lowercase": false, - "train_adapter": false -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers.json b/configs/xlmr_stratify_0.1_3layers.json deleted file mode 100644 index dd7484f0..00000000 --- a/configs/xlmr_stratify_0.1_3layers.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 2000000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_100k.json b/configs/xlmr_stratify_0.1_3layers_100k.json deleted file mode 100644 index d312cb77..00000000 --- a/configs/xlmr_stratify_0.1_3layers_100k.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-100k", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 100000, - "save_steps": 50000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_1e-5.json b/configs/xlmr_stratify_0.1_3layers_1e-5.json deleted file mode 100644 index 3797f740..00000000 --- a/configs/xlmr_stratify_0.1_3layers_1e-5.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 64, - "per_device_eval_batch_size": 1, - "gradient_accumulation_steps": 1, - "eval_accumulation_steps": 256, - "dataloader_num_workers": 1, - "preprocessing_num_workers": 32, - "learning_rate": 1e-5, - "save_strategy": "steps", - "fp16": false, - "max_steps": 2000000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_400k_3e-4.json b/configs/xlmr_stratify_0.1_3layers_400k_3e-4.json deleted file mode 100644 index c91a03c9..00000000 --- a/configs/xlmr_stratify_0.1_3layers_400k_3e-4.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-400k-3e-4", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 3e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 400000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs128.json b/configs/xlmr_stratify_0.1_3layers_bs128.json deleted file mode 100644 index b636b755..00000000 --- a/configs/xlmr_stratify_0.1_3layers_bs128.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-bs-128", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 128, - "eval_stride" : 64, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 200000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json b/configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json deleted file mode 100644 index 59f28cd7..00000000 --- a/configs/xlmr_stratify_0.1_3layers_bs128_no_aux.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-bs256-noaux", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 128, - "eval_stride" : 64, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 2000000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": false, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": false, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs256.json b/configs/xlmr_stratify_0.1_3layers_bs256.json deleted file mode 100644 index dec5637e..00000000 --- a/configs/xlmr_stratify_0.1_3layers_bs256.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-bs256", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 256, - "eval_stride" : 128, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 2000000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json b/configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json deleted file mode 100644 index ea6d0a2f..00000000 --- a/configs/xlmr_stratify_0.1_3layers_bs256_no_aux.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-bs256-noaux", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 256, - "eval_stride" : 128, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 2000000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": false, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": false, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs64.json b/configs/xlmr_stratify_0.1_3layers_bs64.json deleted file mode 100644 index 8a1c2ae9..00000000 --- a/configs/xlmr_stratify_0.1_3layers_bs64.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-bs64", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 64, - "eval_stride" : 32, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 2000000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json b/configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json deleted file mode 100644 index cf8b1903..00000000 --- a/configs/xlmr_stratify_0.1_3layers_bs64_no_aux_400k.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-bs64-noaux", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 64, - "eval_stride" : 32, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 400000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_debug.json b/configs/xlmr_stratify_0.1_3layers_debug.json deleted file mode 100644 index 101c5ec3..00000000 --- a/configs/xlmr_stratify_0.1_3layers_debug.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-DEBUG", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 1, - "preprocessing_num_workers": 8, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 200000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "none", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "aux_training_weight": 0.5, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_highlr.json b/configs/xlmr_stratify_0.1_3layers_highlr.json deleted file mode 100644 index 7925562d..00000000 --- a/configs/xlmr_stratify_0.1_3layers_highlr.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-highlr", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 3e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 2000000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_no_aux.json b/configs/xlmr_stratify_0.1_3layers_no_aux.json deleted file mode 100644 index 52bb14f8..00000000 --- a/configs/xlmr_stratify_0.1_3layers_no_aux.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-noaux", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 200000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": false, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": false, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_nounks.json b/configs/xlmr_stratify_0.1_3layers_nounks.json deleted file mode 100644 index 4912d666..00000000 --- a/configs/xlmr_stratify_0.1_3layers_nounks.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-nounks", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 2000000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_p_v2_0.5Case.json b/configs/xlmr_stratify_0.1_3layers_p_v2_0.5Case.json deleted file mode 100644 index 808fdb1a..00000000 --- a/configs/xlmr_stratify_0.1_3layers_p_v2_0.5Case.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-p-v2-Case0.5", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 200000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "aux_training_weight": 1.0, - "case_corruption_prob": 0.5, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_p_v2_0.5aux.json b/configs/xlmr_stratify_0.1_3layers_p_v2_0.5aux.json deleted file mode 100644 index 3a37c177..00000000 --- a/configs/xlmr_stratify_0.1_3layers_p_v2_0.5aux.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-p-v2-aux0.5", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 200000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "aux_training_weight": 0.5, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_p_v2_0.9Case.json b/configs/xlmr_stratify_0.1_3layers_p_v2_0.9Case.json deleted file mode 100644 index b34a5715..00000000 --- a/configs/xlmr_stratify_0.1_3layers_p_v2_0.9Case.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-p-v2-Case0.9", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 200000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "aux_training_weight": 1.0, - "case_corruption_prob": 0.9, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_p_v2_auxp0.3.json b/configs/xlmr_stratify_0.1_3layers_p_v2_auxp0.3.json deleted file mode 100644 index 7bcedcf0..00000000 --- a/configs/xlmr_stratify_0.1_3layers_p_v2_auxp0.3.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-p-v2_auxp0.3", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 200000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "aux_training_weight": 1.0, - "auxiliary_remove_prob": 0.3, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_p_v2_look10.json b/configs/xlmr_stratify_0.1_3layers_p_v2_look10.json deleted file mode 100644 index 72ae58cb..00000000 --- a/configs/xlmr_stratify_0.1_3layers_p_v2_look10.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-v2-look10", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 64, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 1, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 200000, - "save_steps": 200000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": 10, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning", -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_p_v3_bs512.json b/configs/xlmr_stratify_0.1_3layers_p_v3_bs512.json deleted file mode 100644 index f9573c89..00000000 --- a/configs/xlmr_stratify_0.1_3layers_p_v3_bs512.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-3l-v3", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "eval_stride": 256, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 64, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 1, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 200000, - "save_steps": 50000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "auxiliary_remove_prob": 0.2, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "info" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_shorter.json b/configs/xlmr_stratify_0.1_3layers_shorter.json deleted file mode 100644 index 0adc76f6..00000000 --- a/configs/xlmr_stratify_0.1_3layers_shorter.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-shorter", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 400000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_stride128_400k.json b/configs/xlmr_stratify_0.1_3layers_stride128_400k.json deleted file mode 100644 index c9dbd15c..00000000 --- a/configs/xlmr_stratify_0.1_3layers_stride128_400k.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "eval_stride" : 128, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 400000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_3layers_stride32_400k.json b/configs/xlmr_stratify_0.1_3layers_stride32_400k.json deleted file mode 100644 index 5d1d2679..00000000 --- a/configs/xlmr_stratify_0.1_3layers_stride32_400k.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "eval_stride" : 128, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 64, - "per_device_eval_batch_size": 1, - "gradient_accumulation_steps": 1, - "eval_accumulation_steps": 256, - "dataloader_num_workers": 1, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 400000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_6layers.json b/configs/xlmr_stratify_0.1_6layers.json deleted file mode 100644 index fbb88103..00000000 --- a/configs/xlmr_stratify_0.1_6layers.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-normal-6", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 2000000, - "save_steps": 100000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 6, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmr_stratify_0.1_6layers_p_v3_look6.json b/configs/xlmr_stratify_0.1_6layers_p_v3_look6.json deleted file mode 100644 index 445f0bce..00000000 --- a/configs/xlmr_stratify_0.1_6layers_p_v3_look6.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "model_name_or_path": "xlm-roberta-base", - "output_dir": "xlmr-6l-v3_look6", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 256, - "eval_stride": 128, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 128, - "per_device_eval_batch_size": 64, - "gradient_accumulation_steps": 1, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 4, - "preprocessing_num_workers": 4, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 200000, - "save_steps": 50000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "none", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": 6, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "auxiliary_remove_prob": 0.2, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 6, - "custom_punctuation_file": "punctuation_xlmr_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/configs/xlmv_stratify_0.1_3layers.json b/configs/xlmv_stratify_0.1_3layers.json deleted file mode 100644 index c57b4859..00000000 --- a/configs/xlmv_stratify_0.1_3layers.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "model_name_or_path": "facebook/xlm-v-base", - "output_dir": "xlmv-normal", - "train_text_path": "data/sentence/train.parquet", - "valid_text_path": "data/sentence/valid.parquet", - "block_size": 512, - "use_bert": true, - "do_train": true, - "do_eval": true, - "evaluation_strategy": "steps", - "per_device_train_batch_size": 32, - "per_device_eval_batch_size": 32, - "gradient_accumulation_steps": 2, - "eval_accumulation_steps": 8, - "dataloader_num_workers": 1, - "preprocessing_num_workers": 32, - "learning_rate": 1e-4, - "save_strategy": "steps", - "fp16": false, - "max_steps": 400000, - "save_steps": 20000, - "eval_steps": 5000, - "logging_steps": 50, - "report_to": "wandb", - "is_decoder": false, - "remove_unused_columns": false, - "lookahead": null, - "one_sample_per_line": false, - "do_sentence_training": true, - "do_auxiliary_training": true, - "warmup_steps": 5000, - "adapter_warmup_steps": 0, - "adapter_lr_multiplier": 1, - "ngram_order": 1, - "non_punctuation_sample_ratio": 0.1, - "prediction_loss_only": true, - "use_auxiliary": true, - "ddp_timeout": 3600, - "use_subwords": true, - "num_hidden_layers": 3, - "custom_punctuation_file": "punctuation_xlmv_unk.txt", - "log_level": "warning" -} \ No newline at end of file diff --git a/utils/clean_tweets.py b/utils/clean_tweets.py index b30c9135..b35f868e 100644 --- a/utils/clean_tweets.py +++ b/utils/clean_tweets.py @@ -62,7 +62,7 @@ def pair_sentences(sequences): return transformed_data -data = torch.load("data/all_tweets.pth") +data = torch.load("data/all_data.pth") transformed_data = transform_data(data) torch.save(transformed_data, "data/all_data_tweets_cleaned.pth") diff --git a/wtpsplit/evaluation/evaluation_results/lyrics/command-r.json b/wtpsplit/evaluation/evaluation_results/lyrics/command-r.json new file mode 100644 index 00000000..51f31d9b --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/lyrics/command-r.json @@ -0,0 +1,516 @@ +{ + "en": { + "lyrics-Alternative Metal": { + "command-r": { + "f1": 0.39108228890715657, + "f1_success": 0.39108228890715657, + "recall": 0.8530871279258373, + "recall_success": 0.8530871279258373, + "precision": 0.2949629576169459, + "precision_success": 0.2949629576169459, + "correct_pairwise": 0.0064516129032258064, + "correct_pairwise_success": 0.0064516129032258064, + "hallucination_rate": 0.008394542755942659, + "hallucination_rate_success": 0.008394542755942659, + "deletion_rate": 0.016175208298022603, + "deletion_rate_success": 0.016175208298022603 + } + }, + "lyrics-Alternative Metal-corrupted-asr": { + "command-r": { + "f1": 0.40683570267451397, + "f1_success": 0.40683570267451397, + "recall": 0.7091291146129853, + "recall_success": 0.7091291146129853, + "precision": 0.32991162613103553, + "precision_success": 0.32991162613103553, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.01109613323567453, + "hallucination_rate_success": 0.01109613323567453, + "deletion_rate": 0.01954567660708773, + "deletion_rate_success": 0.01954567660708773 + } + }, + "lyrics-Alternative Rock": { + "command-r": { + "f1": 0.40005201984804456, + "f1_success": 0.4009889098242695, + "recall": 0.9147786755460958, + "recall_success": 0.916921014364705, + "precision": 0.2776246515735878, + "precision_success": 0.278274826401629, + "correct_pairwise": 0.002336448598130841, + "correct_pairwise_success": 0.00234192037470726, + "hallucination_rate": 0.008369091521378874, + "hallucination_rate_success": 0.008388691267330581, + "deletion_rate": 0.017137624322079156, + "deletion_rate_success": 0.01717775927365311 + } + }, + "lyrics-Alternative Rock-corrupted-asr": { + "command-r": { + "f1": 0.4129162657085903, + "f1_success": 0.4138832827243013, + "recall": 0.71593191641295, + "recall_success": 0.7176085719549006, + "precision": 0.33890799110718084, + "precision_success": 0.33970168663670586, + "correct_pairwise": 0.0011682242990654205, + "correct_pairwise_success": 0.00117096018735363, + "hallucination_rate": 0.00923662319674093, + "hallucination_rate_success": 0.009258254632798873, + "deletion_rate": 0.01324190471518413, + "deletion_rate_success": 0.013272916201636552 + } + }, + "lyrics-Country": { + "command-r": { + "f1": 0.3531230271416377, + "f1_success": 0.3531230271416377, + "recall": 0.9503922628395204, + "recall_success": 0.9503922628395204, + "precision": 0.22847797893361751, + "precision_success": 0.22847797893361751, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.010842849204092878, + "hallucination_rate_success": 0.010842849204092878, + "deletion_rate": 0.015702687130417035, + "deletion_rate_success": 0.015702687130417035 + } + }, + "lyrics-Country-corrupted-asr": { + "command-r": { + "f1": 0.38752964785239086, + "f1_success": 0.38752964785239086, + "recall": 0.7919593299340129, + "recall_success": 0.7919593299340129, + "precision": 0.2860314996278578, + "precision_success": 0.2860314996278578, + "correct_pairwise": 0.0014064697609001407, + "correct_pairwise_success": 0.0014064697609001407, + "hallucination_rate": 0.008035179107681265, + "hallucination_rate_success": 0.008035179107681265, + "deletion_rate": 0.013719309949454136, + "deletion_rate_success": 0.013719309949454136 + } + }, + "lyrics-Gangsta Rap": { + "command-r": { + "f1": 0.05604007401572994, + "f1_success": 0.29888039475055966, + "recall": 0.1474587912087912, + "recall_success": 0.7864468864468864, + "precision": 0.04026254960665955, + "precision_success": 0.21473359790218427, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0003470127504118168, + "hallucination_rate_success": 0.0018507346688630228, + "deletion_rate": 0.0028687781285254657, + "deletion_rate_success": 0.015300150018802484 + } + }, + "lyrics-Gangsta Rap-corrupted-asr": { + "command-r": { + "f1": 0.04932870844952844, + "f1_success": 0.2630864450641517, + "recall": 0.11516426282051281, + "recall_success": 0.6142094017094016, + "precision": 0.037212934888357405, + "precision_success": 0.1984689860712395, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.002050427453072793, + "hallucination_rate_success": 0.010935613083054895, + "deletion_rate": 0.000517436224892638, + "deletion_rate_success": 0.002759659866094069 + } + }, + "lyrics-Hard Rock": { + "command-r": { + "f1": 0.3835102446722949, + "f1_success": 0.38440420794658925, + "recall": 0.90881861716335, + "recall_success": 0.9109370754784161, + "precision": 0.26677842614232955, + "precision_success": 0.26740028727552845, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.013697568310825959, + "hallucination_rate_success": 0.013729497374487558, + "deletion_rate": 0.0190498841146695, + "deletion_rate_success": 0.01909428943894612 + } + }, + "lyrics-Hard Rock-corrupted-asr": { + "command-r": { + "f1": 0.40611559047850454, + "f1_success": 0.40611559047850454, + "recall": 0.7348368890571362, + "recall_success": 0.7348368890571362, + "precision": 0.3224581568901358, + "precision_success": 0.3224581568901358, + "correct_pairwise": 0.004651162790697674, + "correct_pairwise_success": 0.004651162790697674, + "hallucination_rate": 0.010006474639291855, + "hallucination_rate_success": 0.010006474639291855, + "deletion_rate": 0.01855517725433367, + "deletion_rate_success": 0.01855517725433367 + } + }, + "lyrics-Heavy Metal": { + "command-r": { + "f1": 0.416362753313865, + "f1_success": 0.416362753313865, + "recall": 0.878844863832609, + "recall_success": 0.878844863832609, + "precision": 0.3026287840947823, + "precision_success": 0.3026287840947823, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.007995910564636322, + "hallucination_rate_success": 0.007995910564636322, + "deletion_rate": 0.010270308218400628, + "deletion_rate_success": 0.010270308218400628 + } + }, + "lyrics-Heavy Metal-corrupted-asr": { + "command-r": { + "f1": 0.415708291665135, + "f1_success": 0.415708291665135, + "recall": 0.6712422410217599, + "recall_success": 0.6712422410217599, + "precision": 0.36980453103438193, + "precision_success": 0.36980453103438193, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.010900114355622612, + "hallucination_rate_success": 0.010900114355622612, + "deletion_rate": 0.007891628235724913, + "deletion_rate_success": 0.007891628235724913 + } + }, + "lyrics-Hip Hop": { + "command-r": { + "f1": 0.10968004964730087, + "f1_success": 0.27092984740858495, + "recall": 0.33397582419755406, + "recall_success": 0.8249815657357012, + "precision": 0.08778925086270498, + "precision_success": 0.21685555775030563, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0013587332960124628, + "hallucination_rate_success": 0.0033563205500124365, + "deletion_rate": 0.0045344496047933095, + "deletion_rate_success": 0.011200922532941271 + } + }, + "lyrics-Hip Hop-corrupted-asr": { + "command-r": { + "f1": 0.11987232000823395, + "f1_success": 0.29678733022728265, + "recall": 0.22827062828481046, + "recall_success": 0.5651665900292894, + "precision": 0.11751045260644351, + "precision_success": 0.2909396723152636, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.002158664804529414, + "hallucination_rate_success": 0.0053445563091452375, + "deletion_rate": 0.0024605765335609813, + "deletion_rate_success": 0.006092048107230292 + } + }, + "lyrics-Indie Rock": { + "command-r": { + "f1": 0.40222723970787355, + "f1_success": 0.40222723970787355, + "recall": 0.9076812474267177, + "recall_success": 0.9076812474267177, + "precision": 0.2800711641794083, + "precision_success": 0.2800711641794083, + "correct_pairwise": 0.003278688524590164, + "correct_pairwise_success": 0.003278688524590164, + "hallucination_rate": 0.014263582712727816, + "hallucination_rate_success": 0.014263582712727816, + "deletion_rate": 0.012600876387321151, + "deletion_rate_success": 0.012600876387321151 + } + }, + "lyrics-Indie Rock-corrupted-asr": { + "command-r": { + "f1": 0.42637491093105734, + "f1_success": 0.42637491093105734, + "recall": 0.7204121982896788, + "recall_success": 0.7204121982896788, + "precision": 0.34796122593193723, + "precision_success": 0.34796122593193723, + "correct_pairwise": 0.009836065573770493, + "correct_pairwise_success": 0.009836065573770493, + "hallucination_rate": 0.012134281567991222, + "hallucination_rate_success": 0.012134281567991222, + "deletion_rate": 0.009995056426197925, + "deletion_rate_success": 0.009995056426197925 + } + }, + "lyrics-Pop": { + "command-r": { + "f1": 0.3628709307081095, + "f1_success": 0.3632786508549725, + "recall": 0.8910603366261599, + "recall_success": 0.8920615280156275, + "precision": 0.25211994742192295, + "precision_success": 0.25240322826172285, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.008428188841258434, + "hallucination_rate_success": 0.008437658716360973, + "deletion_rate": 0.01834220117719613, + "deletion_rate_success": 0.01836281039200197 + } + }, + "lyrics-Pop Punk": { + "command-r": { + "f1": 0.39162452937238523, + "f1_success": 0.39162452937238523, + "recall": 0.8784277975767336, + "recall_success": 0.8784277975767336, + "precision": 0.2989313718689513, + "precision_success": 0.2989313718689513, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.007517486332679925, + "hallucination_rate_success": 0.007517486332679925, + "deletion_rate": 0.037630119988919394, + "deletion_rate_success": 0.037630119988919394 + } + }, + "lyrics-Pop Punk-corrupted-asr": { + "command-r": { + "f1": 0.4135220009719154, + "f1_success": 0.4135220009719154, + "recall": 0.7502154268111709, + "recall_success": 0.7502154268111709, + "precision": 0.3427047510212102, + "precision_success": 0.3427047510212102, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.005989172651917396, + "hallucination_rate_success": 0.005989172651917396, + "deletion_rate": 0.011941700084311457, + "deletion_rate_success": 0.011941700084311457 + } + }, + "lyrics-Pop Rock": { + "command-r": { + "f1": 0.37647709437083543, + "f1_success": 0.37647709437083543, + "recall": 0.9218385147045088, + "recall_success": 0.9218385147045088, + "precision": 0.2589703328988178, + "precision_success": 0.2589703328988178, + "correct_pairwise": 0.0048543689320388345, + "correct_pairwise_success": 0.0048543689320388345, + "hallucination_rate": 0.00794438728287772, + "hallucination_rate_success": 0.00794438728287772, + "deletion_rate": 0.011296908905556478, + "deletion_rate_success": 0.011296908905556478 + } + }, + "lyrics-Pop Rock-corrupted-asr": { + "command-r": { + "f1": 0.39493822891441094, + "f1_success": 0.39493822891441094, + "recall": 0.7308018844835401, + "recall_success": 0.7308018844835401, + "precision": 0.3119690331581676, + "precision_success": 0.3119690331581676, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.008067986168624317, + "hallucination_rate_success": 0.008067986168624317, + "deletion_rate": 0.011494572498533608, + "deletion_rate_success": 0.011494572498533608 + } + }, + "lyrics-Pop-corrupted-asr": { + "command-r": { + "f1": 0.37478474184894167, + "f1_success": 0.37520584830045733, + "recall": 0.6931107694259073, + "recall_success": 0.6938895455713296, + "precision": 0.3036395301662735, + "precision_success": 0.30398069817769624, + "correct_pairwise": 0.001122334455667789, + "correct_pairwise_success": 0.0011235955056179776, + "hallucination_rate": 0.007150958127739269, + "hallucination_rate_success": 0.007158992912152458, + "deletion_rate": 0.013049755200660715, + "deletion_rate_success": 0.013064417846953592 + } + }, + "lyrics-Punk Rock": { + "command-r": { + "f1": 0.3944256642088234, + "f1_success": 0.3965125724850606, + "recall": 0.9022595538547958, + "recall_success": 0.9070334139281016, + "precision": 0.2733678353127308, + "precision_success": 0.2748142259757611, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.017012658749047872, + "hallucination_rate_success": 0.017102672816503153, + "deletion_rate": 0.017243037281368067, + "deletion_rate_success": 0.017334270282856785 + } + }, + "lyrics-Punk Rock-corrupted-asr": { + "command-r": { + "f1": 0.42357032921491566, + "f1_success": 0.42581144206790467, + "recall": 0.7332573711028166, + "recall_success": 0.7371370397329903, + "precision": 0.34183618385498754, + "precision_success": 0.34364484091242137, + "correct_pairwise": 0.010526315789473684, + "correct_pairwise_success": 0.010582010582010581, + "hallucination_rate": 0.005537139328227569, + "hallucination_rate_success": 0.005566436361710255, + "deletion_rate": 0.02043813957990098, + "deletion_rate_success": 0.020546277884556537 + } + }, + "lyrics-RnB": { + "command-r": { + "f1": 0.3156687968882929, + "f1_success": 0.33314527007241984, + "recall": 0.7976443830635622, + "recall_success": 0.8418046257245206, + "precision": 0.2317169087557601, + "precision_success": 0.24454552654154613, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.006911420436159492, + "hallucination_rate_success": 0.007294059629856903, + "deletion_rate": 0.014782545960279937, + "deletion_rate_success": 0.015600956809291975 + } + }, + "lyrics-RnB-corrupted-asr": { + "command-r": { + "f1": 0.32170534958079605, + "f1_success": 0.33951602637419653, + "recall": 0.5770075341784361, + "recall_success": 0.608952587973782, + "precision": 0.2834511189537723, + "precision_success": 0.2991439144667839, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.007593762871887184, + "hallucination_rate_success": 0.008014178809431111, + "deletion_rate": 0.012988527967619882, + "deletion_rate_success": 0.013707616021190533 + } + }, + "lyrics-Rock": { + "command-r": { + "f1": 0.3783112376485677, + "f1_success": 0.3783112376485677, + "recall": 0.9209847802258546, + "recall_success": 0.9209847802258546, + "precision": 0.2573163390683118, + "precision_success": 0.2573163390683118, + "correct_pairwise": 0.0008460236886632825, + "correct_pairwise_success": 0.0008460236886632825, + "hallucination_rate": 0.009821806369111494, + "hallucination_rate_success": 0.009821806369111494, + "deletion_rate": 0.012442012671942535, + "deletion_rate_success": 0.012442012671942535 + } + }, + "lyrics-Rock-corrupted-asr": { + "command-r": { + "f1": 0.4114434756196615, + "f1_success": 0.4114434756196615, + "recall": 0.7651769579502323, + "recall_success": 0.7651769579502323, + "precision": 0.3176075126956109, + "precision_success": 0.3176075126956109, + "correct_pairwise": 0.001692047377326565, + "correct_pairwise_success": 0.001692047377326565, + "hallucination_rate": 0.009348457175397592, + "hallucination_rate_success": 0.009348457175397592, + "deletion_rate": 0.013443023328574897, + "deletion_rate_success": 0.013443023328574897 + } + }, + "lyrics-Soul": { + "command-r": { + "f1": 0.3613940709961107, + "f1_success": 0.36470961293185483, + "recall": 0.9137844174932548, + "recall_success": 0.9221677607730094, + "precision": 0.23818106886443347, + "precision_success": 0.2403662162852081, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.009933250948224833, + "hallucination_rate_success": 0.010024381690869097, + "deletion_rate": 0.028068895382401288, + "deletion_rate_success": 0.028326408184074694 + } + }, + "lyrics-Soul-corrupted-asr": { + "command-r": { + "f1": 0.3965933441454215, + "f1_success": 0.40023181519262724, + "recall": 0.7126969841929028, + "recall_success": 0.7192354886350396, + "precision": 0.31038819707748405, + "precision_success": 0.3132357952158096, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.009340354178423533, + "hallucination_rate_success": 0.009426045501161365, + "deletion_rate": 0.01334059645370459, + "deletion_rate_success": 0.013462987246857842 + } + }, + "lyrics-Southern Hip Hop": { + "command-r": { + "f1": 0.056791205150023776, + "f1_success": 0.2747109458419755, + "recall": 0.18040946531472551, + "recall_success": 0.8726783438479746, + "precision": 0.04423429867188851, + "precision_success": 0.2139705610175072, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0004954591512172795, + "hallucination_rate_success": 0.0023966396151905616, + "deletion_rate": 0.001021735668875933, + "deletion_rate_success": 0.004942349282004512 + } + }, + "lyrics-Southern Hip Hop-corrupted-asr": { + "command-r": { + "f1": 0.07395210324307092, + "f1_success": 0.34959176078542614, + "recall": 0.13404413349973307, + "recall_success": 0.6336631765441928, + "precision": 0.06946070292305538, + "precision_success": 0.32835968654535275, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.00038200052081470984, + "hallucination_rate_success": 0.0018058206438513558, + "deletion_rate": 0.0015034277064492388, + "deletion_rate_success": 0.0071071127941236744 + } + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/lyrics/llama-3.json b/wtpsplit/evaluation/evaluation_results/lyrics/llama-3.json new file mode 100644 index 00000000..b6a3de4a --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/lyrics/llama-3.json @@ -0,0 +1,516 @@ +{ + "en": { + "lyrics-Alternative Metal": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.47571215989814275, + "f1_success": 0.47571215989814275, + "recall": 0.8120123066897259, + "recall_success": 0.8120123066897259, + "precision": 0.4428542106670182, + "precision_success": 0.4428542106670182, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0028618859176862475, + "hallucination_rate_success": 0.0028618859176862475, + "deletion_rate": 0.004320942548054267, + "deletion_rate_success": 0.004320942548054267 + } + }, + "lyrics-Alternative Metal-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5232335423354388, + "f1_success": 0.5232335423354388, + "recall": 0.5962992921057435, + "recall_success": 0.5962992921057435, + "precision": 0.5938863772846535, + "precision_success": 0.5938863772846535, + "correct_pairwise": 0.025806451612903226, + "correct_pairwise_success": 0.025806451612903226, + "hallucination_rate": 0.002817763188822882, + "hallucination_rate_success": 0.002817763188822882, + "deletion_rate": 0.007514711290043217, + "deletion_rate_success": 0.007514711290043217 + } + }, + "lyrics-Alternative Rock": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4927912082835997, + "f1_success": 0.4927912082835997, + "recall": 0.8650785519532082, + "recall_success": 0.8650785519532082, + "precision": 0.4368440390032589, + "precision_success": 0.4368440390032589, + "correct_pairwise": 0.01985981308411215, + "correct_pairwise_success": 0.01985981308411215, + "hallucination_rate": 0.0031471912540192155, + "hallucination_rate_success": 0.0031471912540192155, + "deletion_rate": 0.007142651676932983, + "deletion_rate_success": 0.007142651676932983 + } + }, + "lyrics-Alternative Rock-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5407653146280289, + "f1_success": 0.5407653146280289, + "recall": 0.6421414011436002, + "recall_success": 0.6421414011436002, + "precision": 0.6030560546580574, + "precision_success": 0.6030560546580574, + "correct_pairwise": 0.012850467289719626, + "correct_pairwise_success": 0.012850467289719626, + "hallucination_rate": 0.005968895538800839, + "hallucination_rate_success": 0.005968895538800839, + "deletion_rate": 0.012948717437108426, + "deletion_rate_success": 0.012948717437108426 + } + }, + "lyrics-Country": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.46990725530633265, + "f1_success": 0.46990725530633265, + "recall": 0.8950296421815411, + "recall_success": 0.8950296421815411, + "precision": 0.3846907482224643, + "precision_success": 0.3846907482224643, + "correct_pairwise": 0.03938115330520394, + "correct_pairwise_success": 0.03938115330520394, + "hallucination_rate": 0.0038347409729824543, + "hallucination_rate_success": 0.0038347409729824543, + "deletion_rate": 0.004177017770087422, + "deletion_rate_success": 0.004177017770087422 + } + }, + "lyrics-Country-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5461575882937414, + "f1_success": 0.5461575882937414, + "recall": 0.6908638556317879, + "recall_success": 0.6908638556317879, + "precision": 0.5518917528540344, + "precision_success": 0.5518917528540344, + "correct_pairwise": 0.02390998593530239, + "correct_pairwise_success": 0.02390998593530239, + "hallucination_rate": 0.005769656112096943, + "hallucination_rate_success": 0.005769656112096943, + "deletion_rate": 0.006843178640639219, + "deletion_rate_success": 0.006843178640639219 + } + }, + "lyrics-Gangsta Rap": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3280520114572881, + "f1_success": 0.3280520114572881, + "recall": 0.7226021374458873, + "recall_success": 0.7226021374458873, + "precision": 0.3010132164573576, + "precision_success": 0.3010132164573576, + "correct_pairwise": 0.015625, + "correct_pairwise_success": 0.015625, + "hallucination_rate": 0.002672397716042446, + "hallucination_rate_success": 0.002672397716042446, + "deletion_rate": 0.020529351582990605, + "deletion_rate_success": 0.020529351582990605 + } + }, + "lyrics-Gangsta Rap-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.36163431551826364, + "f1_success": 0.36163431551826364, + "recall": 0.49132965558746794, + "recall_success": 0.49132965558746794, + "precision": 0.3923645110723202, + "precision_success": 0.3923645110723202, + "correct_pairwise": 0.015625, + "correct_pairwise_success": 0.015625, + "hallucination_rate": 0.0005653571996204706, + "hallucination_rate_success": 0.0005653571996204706, + "deletion_rate": 0.033429576473969276, + "deletion_rate_success": 0.033429576473969276 + } + }, + "lyrics-Hard Rock": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4873554112780847, + "f1_success": 0.4873554112780847, + "recall": 0.8568046685796338, + "recall_success": 0.8568046685796338, + "precision": 0.4175304224728504, + "precision_success": 0.4175304224728504, + "correct_pairwise": 0.013953488372093023, + "correct_pairwise_success": 0.013953488372093023, + "hallucination_rate": 0.004263309423223886, + "hallucination_rate_success": 0.004263309423223886, + "deletion_rate": 0.005194537236623749, + "deletion_rate_success": 0.005194537236623749 + } + }, + "lyrics-Hard Rock-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5218410057954037, + "f1_success": 0.5218410057954037, + "recall": 0.6338722692416265, + "recall_success": 0.6338722692416265, + "precision": 0.574149862807808, + "precision_success": 0.574149862807808, + "correct_pairwise": 0.0069767441860465115, + "correct_pairwise_success": 0.0069767441860465115, + "hallucination_rate": 0.005252136328205107, + "hallucination_rate_success": 0.005252136328205107, + "deletion_rate": 0.009611467898911217, + "deletion_rate_success": 0.009611467898911217 + } + }, + "lyrics-Heavy Metal": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4713740817195306, + "f1_success": 0.4713740817195306, + "recall": 0.8276989441205126, + "recall_success": 0.8276989441205126, + "precision": 0.41988739484271953, + "precision_success": 0.41988739484271953, + "correct_pairwise": 0.027777777777777776, + "correct_pairwise_success": 0.027777777777777776, + "hallucination_rate": 0.004125768761574286, + "hallucination_rate_success": 0.004125768761574286, + "deletion_rate": 0.004090632121435744, + "deletion_rate_success": 0.004090632121435744 + } + }, + "lyrics-Heavy Metal-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4920087151834146, + "f1_success": 0.4920087151834146, + "recall": 0.601009798579028, + "recall_success": 0.601009798579028, + "precision": 0.5523882992192902, + "precision_success": 0.5523882992192902, + "correct_pairwise": 0.009259259259259259, + "correct_pairwise_success": 0.009259259259259259, + "hallucination_rate": 0.003629584208979596, + "hallucination_rate_success": 0.003629584208979596, + "deletion_rate": 0.005104671063477011, + "deletion_rate_success": 0.005104671063477011 + } + }, + "lyrics-Hip Hop": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.35661311390596717, + "f1_success": 0.35661311390596717, + "recall": 0.6972772552568671, + "recall_success": 0.6972772552568671, + "precision": 0.33490122048504134, + "precision_success": 0.33490122048504134, + "correct_pairwise": 0.008356545961002786, + "correct_pairwise_success": 0.008356545961002786, + "hallucination_rate": 0.0016279138100711865, + "hallucination_rate_success": 0.0016279138100711865, + "deletion_rate": 0.01972996251149363, + "deletion_rate_success": 0.01972996251149363 + } + }, + "lyrics-Hip Hop-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3811124446129976, + "f1_success": 0.3811124446129976, + "recall": 0.45429892135369676, + "recall_success": 0.45429892135369676, + "precision": 0.445708414433919, + "precision_success": 0.445708414433919, + "correct_pairwise": 0.002785515320334262, + "correct_pairwise_success": 0.002785515320334262, + "hallucination_rate": 0.004314719579215101, + "hallucination_rate_success": 0.004314719579215101, + "deletion_rate": 0.031030264629988456, + "deletion_rate_success": 0.031030264629988456 + } + }, + "lyrics-Indie Rock": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.48355534701288366, + "f1_success": 0.48355534701288366, + "recall": 0.8618755671516678, + "recall_success": 0.8618755671516678, + "precision": 0.42070837579064496, + "precision_success": 0.42070837579064496, + "correct_pairwise": 0.009836065573770493, + "correct_pairwise_success": 0.009836065573770493, + "hallucination_rate": 0.002408457329505608, + "hallucination_rate_success": 0.002408457329505608, + "deletion_rate": 0.003792629718803859, + "deletion_rate_success": 0.003792629718803859 + } + }, + "lyrics-Indie Rock-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.539864799612169, + "f1_success": 0.539864799612169, + "recall": 0.6704107966618751, + "recall_success": 0.6704107966618751, + "precision": 0.5768639594241539, + "precision_success": 0.5768639594241539, + "correct_pairwise": 0.013114754098360656, + "correct_pairwise_success": 0.013114754098360656, + "hallucination_rate": 0.006402296622954274, + "hallucination_rate_success": 0.006402296622954274, + "deletion_rate": 0.009230011525746217, + "deletion_rate_success": 0.009230011525746217 + } + }, + "lyrics-Pop": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.469954728584912, + "f1_success": 0.469954728584912, + "recall": 0.8163465843002439, + "recall_success": 0.8163465843002439, + "precision": 0.43992955608031453, + "precision_success": 0.43992955608031453, + "correct_pairwise": 0.02132435465768799, + "correct_pairwise_success": 0.02132435465768799, + "hallucination_rate": 0.0038892259327546613, + "hallucination_rate_success": 0.0038892259327546613, + "deletion_rate": 0.005039723008703935, + "deletion_rate_success": 0.005039723008703935 + } + }, + "lyrics-Pop Punk": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4946987234481033, + "f1_success": 0.4946987234481033, + "recall": 0.8208832341811065, + "recall_success": 0.8208832341811065, + "precision": 0.4593284825077087, + "precision_success": 0.4593284825077087, + "correct_pairwise": 0.0070921985815602835, + "correct_pairwise_success": 0.0070921985815602835, + "hallucination_rate": 0.004645805843607475, + "hallucination_rate_success": 0.004645805843607475, + "deletion_rate": 0.0044133656695961474, + "deletion_rate_success": 0.0044133656695961474 + } + }, + "lyrics-Pop Punk-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5705073967936827, + "f1_success": 0.5705073967936827, + "recall": 0.6146541992286672, + "recall_success": 0.6146541992286672, + "precision": 0.6563566038743089, + "precision_success": 0.6563566038743089, + "correct_pairwise": 0.0070921985815602835, + "correct_pairwise_success": 0.0070921985815602835, + "hallucination_rate": 0.006023352744393245, + "hallucination_rate_success": 0.006023352744393245, + "deletion_rate": 0.008012511651428128, + "deletion_rate_success": 0.008012511651428128 + } + }, + "lyrics-Pop Rock": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4711883947176374, + "f1_success": 0.4711883947176374, + "recall": 0.8527220675055368, + "recall_success": 0.8527220675055368, + "precision": 0.4179975141379932, + "precision_success": 0.4179975141379932, + "correct_pairwise": 0.019417475728155338, + "correct_pairwise_success": 0.019417475728155338, + "hallucination_rate": 0.003299162753881552, + "hallucination_rate_success": 0.003299162753881552, + "deletion_rate": 0.005054984111733084, + "deletion_rate_success": 0.005054984111733084 + } + }, + "lyrics-Pop Rock-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5277145690521913, + "f1_success": 0.5277145690521913, + "recall": 0.6445151133570916, + "recall_success": 0.6445151133570916, + "precision": 0.5705202364093735, + "precision_success": 0.5705202364093735, + "correct_pairwise": 0.01699029126213592, + "correct_pairwise_success": 0.01699029126213592, + "hallucination_rate": 0.0046537848672379084, + "hallucination_rate_success": 0.0046537848672379084, + "deletion_rate": 0.008868443110152885, + "deletion_rate_success": 0.008868443110152885 + } + }, + "lyrics-Pop-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5169027427161252, + "f1_success": 0.5169027427161252, + "recall": 0.6245401945762101, + "recall_success": 0.6245401945762101, + "precision": 0.5827947482607292, + "precision_success": 0.5827947482607292, + "correct_pairwise": 0.01122334455667789, + "correct_pairwise_success": 0.01122334455667789, + "hallucination_rate": 0.006421711010705094, + "hallucination_rate_success": 0.006421711010705094, + "deletion_rate": 0.009229849466959296, + "deletion_rate_success": 0.009229849466959296 + } + }, + "lyrics-Punk Rock": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5018948749058487, + "f1_success": 0.5018948749058487, + "recall": 0.8389908565625527, + "recall_success": 0.8389908565625527, + "precision": 0.4466888137337874, + "precision_success": 0.4466888137337874, + "correct_pairwise": 0.015789473684210527, + "correct_pairwise_success": 0.015789473684210527, + "hallucination_rate": 0.0032100253821084747, + "hallucination_rate_success": 0.0032100253821084747, + "deletion_rate": 0.0052815679982145675, + "deletion_rate_success": 0.0052815679982145675 + } + }, + "lyrics-Punk Rock-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5348527914122733, + "f1_success": 0.5348527914122733, + "recall": 0.688915080357153, + "recall_success": 0.688915080357153, + "precision": 0.5553741132105721, + "precision_success": 0.5553741132105721, + "correct_pairwise": 0.021052631578947368, + "correct_pairwise_success": 0.021052631578947368, + "hallucination_rate": 0.00463885935636689, + "hallucination_rate_success": 0.00463885935636689, + "deletion_rate": 0.006733275639224856, + "deletion_rate_success": 0.006733275639224856 + } + }, + "lyrics-RnB": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4569610063918978, + "f1_success": 0.4569610063918978, + "recall": 0.725223477839801, + "recall_success": 0.725223477839801, + "precision": 0.46136623472987565, + "precision_success": 0.46136623472987565, + "correct_pairwise": 0.017486338797814208, + "correct_pairwise_success": 0.017486338797814208, + "hallucination_rate": 0.003071638709458078, + "hallucination_rate_success": 0.003071638709458078, + "deletion_rate": 0.011804183130616298, + "deletion_rate_success": 0.011804183130616298 + } + }, + "lyrics-RnB-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4735712247816916, + "f1_success": 0.4735712247816916, + "recall": 0.525471205809609, + "recall_success": 0.525471205809609, + "precision": 0.5689081467996766, + "precision_success": 0.5689081467996766, + "correct_pairwise": 0.006557377049180328, + "correct_pairwise_success": 0.006557377049180328, + "hallucination_rate": 0.004552839880019815, + "hallucination_rate_success": 0.004552839880019815, + "deletion_rate": 0.013471080225304303, + "deletion_rate_success": 0.013471080225304303 + } + }, + "lyrics-Rock": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.48225109961929474, + "f1_success": 0.48225109961929474, + "recall": 0.8518827864646923, + "recall_success": 0.8518827864646923, + "precision": 0.42013912240143403, + "precision_success": 0.42013912240143403, + "correct_pairwise": 0.02284263959390863, + "correct_pairwise_success": 0.02284263959390863, + "hallucination_rate": 0.003711453963284602, + "hallucination_rate_success": 0.003711453963284602, + "deletion_rate": 0.006557807247720643, + "deletion_rate_success": 0.006557807247720643 + } + }, + "lyrics-Rock-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5377580890388446, + "f1_success": 0.5377580890388446, + "recall": 0.6684055473491832, + "recall_success": 0.6684055473491832, + "precision": 0.5686608084479471, + "precision_success": 0.5686608084479471, + "correct_pairwise": 0.023688663282571912, + "correct_pairwise_success": 0.023688663282571912, + "hallucination_rate": 0.004436346851859637, + "hallucination_rate_success": 0.004436346851859637, + "deletion_rate": 0.007239958332443037, + "deletion_rate_success": 0.007239958332443037 + } + }, + "lyrics-Soul": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4869711724510954, + "f1_success": 0.4869711724510954, + "recall": 0.813061300350211, + "recall_success": 0.813061300350211, + "precision": 0.4468388221570048, + "precision_success": 0.4468388221570048, + "correct_pairwise": 0.01818181818181818, + "correct_pairwise_success": 0.01818181818181818, + "hallucination_rate": 0.001864791148739862, + "hallucination_rate_success": 0.001864791148739862, + "deletion_rate": 0.006594616753692189, + "deletion_rate_success": 0.006594616753692189 + } + }, + "lyrics-Soul-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5194884554678562, + "f1_success": 0.5194884554678562, + "recall": 0.6125367149346883, + "recall_success": 0.6125367149346883, + "precision": 0.5870334031004198, + "precision_success": 0.5870334031004198, + "correct_pairwise": 0.00909090909090909, + "correct_pairwise_success": 0.00909090909090909, + "hallucination_rate": 0.001632130662386947, + "hallucination_rate_success": 0.001632130662386947, + "deletion_rate": 0.013857480261042563, + "deletion_rate_success": 0.013857480261042563 + } + }, + "lyrics-Southern Hip Hop": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.34744561438565164, + "f1_success": 0.34744561438565164, + "recall": 0.7384071522577631, + "recall_success": 0.7384071522577631, + "precision": 0.3224396620726566, + "precision_success": 0.3224396620726566, + "correct_pairwise": 0.004807692307692308, + "correct_pairwise_success": 0.004807692307692308, + "hallucination_rate": 0.0015509072107167997, + "hallucination_rate_success": 0.0015509072107167997, + "deletion_rate": 0.012350043088450526, + "deletion_rate_success": 0.012350043088450526 + } + }, + "lyrics-Southern Hip Hop-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3664443742407662, + "f1_success": 0.3664443742407662, + "recall": 0.4828060928186684, + "recall_success": 0.4828060928186684, + "precision": 0.38539508300173686, + "precision_success": 0.38539508300173686, + "correct_pairwise": 0.004807692307692308, + "correct_pairwise_success": 0.004807692307692308, + "hallucination_rate": 0.006252788235703268, + "hallucination_rate_success": 0.006252788235703268, + "deletion_rate": 0.02770300046784307, + "deletion_rate_success": 0.02770300046784307 + } + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora.json b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora.json new file mode 100644 index 00000000..e9a57501 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora.json @@ -0,0 +1,260 @@ +{ + "en": { + "lyrics-Alternative Metal": { + "u": 0.5988529118481084, + "t": 0.7772459544663071, + "punct": null, + "acc_u": 0.0064516129032258064, + "acc_t": 0.14838709677419354, + "acc_punct": null + }, + "lyrics-Alternative Metal-corrupted-asr": { + "u": 0.5486571786193001, + "t": 0.7349506584250233, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0967741935483871, + "acc_punct": null + }, + "lyrics-Alternative Rock": { + "u": 0.6370400170638606, + "t": 0.7735102733517133, + "punct": null, + "acc_u": 0.014018691588785047, + "acc_t": 0.09345794392523364, + "acc_punct": null + }, + "lyrics-Alternative Rock-corrupted-asr": { + "u": 0.5548626360376492, + "t": 0.7333972874730412, + "punct": null, + "acc_u": 0.005841121495327103, + "acc_t": 0.0794392523364486, + "acc_punct": null + }, + "lyrics-Country": { + "u": 0.6352728791084664, + "t": 0.7928827148624048, + "punct": null, + "acc_u": 0.02531645569620253, + "acc_t": 0.15752461322081576, + "acc_punct": null + }, + "lyrics-Country-corrupted-asr": { + "u": 0.5412005229729456, + "t": 0.7522220141892892, + "punct": null, + "acc_u": 0.005625879043600563, + "acc_t": 0.11392405063291139, + "acc_punct": null + }, + "lyrics-Gangsta Rap": { + "u": 0.24517162571428588, + "t": 0.6031791667064016, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.03125, + "acc_punct": null + }, + "lyrics-Gangsta Rap-corrupted-asr": { + "u": 0.19788509772240295, + "t": 0.5577505804860177, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.03125, + "acc_punct": null + }, + "lyrics-Hard Rock": { + "u": 0.6301211669322279, + "t": 0.7662994718475816, + "punct": null, + "acc_u": 0.009302325581395349, + "acc_t": 0.10930232558139535, + "acc_punct": null + }, + "lyrics-Hard Rock-corrupted-asr": { + "u": 0.565394846646696, + "t": 0.7270093914026863, + "punct": null, + "acc_u": 0.0069767441860465115, + "acc_t": 0.09302325581395349, + "acc_punct": null + }, + "lyrics-Heavy Metal": { + "u": 0.600450085100658, + "t": 0.74409163450037, + "punct": null, + "acc_u": 0.004629629629629629, + "acc_t": 0.08333333333333333, + "acc_punct": null + }, + "lyrics-Heavy Metal-corrupted-asr": { + "u": 0.4970570397441726, + "t": 0.6683753953284727, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.032407407407407406, + "acc_punct": null + }, + "lyrics-Hip Hop": { + "u": 0.37095484396920125, + "t": 0.6827412067772639, + "punct": null, + "acc_u": 0.0018570102135561746, + "acc_t": 0.06313834726090993, + "acc_punct": null + }, + "lyrics-Hip Hop-corrupted-asr": { + "u": 0.26247178793141246, + "t": 0.6056653182848258, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.03899721448467967, + "acc_punct": null + }, + "lyrics-Indie Rock": { + "u": 0.607318723696591, + "t": 0.7349178666628272, + "punct": null, + "acc_u": 0.013114754098360656, + "acc_t": 0.09508196721311475, + "acc_punct": null + }, + "lyrics-Indie Rock-corrupted-asr": { + "u": 0.5544638106964047, + "t": 0.6954792272516411, + "punct": null, + "acc_u": 0.006557377049180328, + "acc_t": 0.07540983606557378, + "acc_punct": null + }, + "lyrics-Pop": { + "u": 0.5813306371368652, + "t": 0.7555640045315639, + "punct": null, + "acc_u": 0.012345679012345678, + "acc_t": 0.08866442199775533, + "acc_punct": null + }, + "lyrics-Pop-corrupted-asr": { + "u": 0.49061846093358435, + "t": 0.7147957673968632, + "punct": null, + "acc_u": 0.003367003367003367, + "acc_t": 0.05948372615039282, + "acc_punct": null + }, + "lyrics-Pop Punk": { + "u": 0.6030235326969494, + "t": 0.7760070113663831, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.09929078014184398, + "acc_punct": null + }, + "lyrics-Pop Punk-corrupted-asr": { + "u": 0.5245639212743416, + "t": 0.7466991988016122, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0851063829787234, + "acc_punct": null + }, + "lyrics-Pop Rock": { + "u": 0.5926334432877418, + "t": 0.7561421949966286, + "punct": null, + "acc_u": 0.014563106796116505, + "acc_t": 0.11893203883495146, + "acc_punct": null + }, + "lyrics-Pop Rock-corrupted-asr": { + "u": 0.5199419183616502, + "t": 0.7037973335847227, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.06067961165048544, + "acc_punct": null + }, + "lyrics-Punk Rock": { + "u": 0.600067960919291, + "t": 0.7684081146710896, + "punct": null, + "acc_u": 0.010526315789473684, + "acc_t": 0.11052631578947368, + "acc_punct": null + }, + "lyrics-Punk Rock-corrupted-asr": { + "u": 0.536402959528165, + "t": 0.7136647761297278, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.07368421052631578, + "acc_punct": null + }, + "lyrics-RnB": { + "u": 0.508732040003862, + "t": 0.7343546012008627, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.07759562841530054, + "acc_punct": null + }, + "lyrics-RnB-corrupted-asr": { + "u": 0.39654186128002367, + "t": 0.6713411539645355, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.04590163934426229, + "acc_punct": null + }, + "lyrics-Rock": { + "u": 0.6481394255810446, + "t": 0.7813869628874406, + "punct": null, + "acc_u": 0.04568527918781726, + "acc_t": 0.16328257191201354, + "acc_punct": null + }, + "lyrics-Rock-corrupted-asr": { + "u": 0.5493670726793072, + "t": 0.7323609420583056, + "punct": null, + "acc_u": 0.007614213197969543, + "acc_t": 0.09898477157360407, + "acc_punct": null + }, + "lyrics-Soul": { + "u": 0.5257539251951444, + "t": 0.71683589498408, + "punct": null, + "acc_u": 0.00909090909090909, + "acc_t": 0.08181818181818182, + "acc_punct": null + }, + "lyrics-Soul-corrupted-asr": { + "u": 0.46672651458781883, + "t": 0.6513294702248005, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.045454545454545456, + "acc_punct": null + }, + "lyrics-Southern Hip Hop": { + "u": 0.3475980237788523, + "t": 0.6420557071070611, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.07211538461538461, + "acc_punct": null + }, + "lyrics-Southern Hip Hop-corrupted-asr": { + "u": 0.26017585875413984, + "t": 0.5476628532576611, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.04807692307692308, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining.json b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining.json new file mode 100644 index 00000000..e49a69cb --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining.json @@ -0,0 +1,260 @@ +{ + "en": { + "lyrics-Alternative Metal": { + "u": 0.3960842625632832, + "t": 0.5381896409580537, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0064516129032258064, + "acc_punct": null + }, + "lyrics-Alternative Metal-corrupted-asr": { + "u": 0.3458751486533141, + "t": 0.6680087836125759, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.025806451612903226, + "acc_punct": null + }, + "lyrics-Alternative Rock": { + "u": 0.5407133050564393, + "t": 0.7628176697765947, + "punct": null, + "acc_u": 0.004672897196261682, + "acc_t": 0.09929906542056074, + "acc_punct": null + }, + "lyrics-Alternative Rock-corrupted-asr": { + "u": 0.48874041131161833, + "t": 0.7260814165800046, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0630841121495327, + "acc_punct": null + }, + "lyrics-Country": { + "u": 0.5666374805802891, + "t": 0.7813881629140269, + "punct": null, + "acc_u": 0.009845288326300985, + "acc_t": 0.12517580872011252, + "acc_punct": null + }, + "lyrics-Country-corrupted-asr": { + "u": 0.44802613246216405, + "t": 0.7351764349732218, + "punct": null, + "acc_u": 0.0014064697609001407, + "acc_t": 0.0829817158931083, + "acc_punct": null + }, + "lyrics-Gangsta Rap": { + "u": 0.13743976850275103, + "t": 0.2839144388081268, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Gangsta Rap-corrupted-asr": { + "u": 0.06424855667794993, + "t": 0.10368987852305275, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Hard Rock": { + "u": 0.5079361745153413, + "t": 0.74605268888876, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.06744186046511629, + "acc_punct": null + }, + "lyrics-Hard Rock-corrupted-asr": { + "u": 0.4425205607053814, + "t": 0.6900879122249913, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.046511627906976744, + "acc_punct": null + }, + "lyrics-Heavy Metal": { + "u": 0.4377812792626794, + "t": 0.6704171749528207, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.018518518518518517, + "acc_punct": null + }, + "lyrics-Heavy Metal-corrupted-asr": { + "u": 0.36481910215365543, + "t": 0.6411368995592276, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.023148148148148147, + "acc_punct": null + }, + "lyrics-Hip Hop": { + "u": 0.2943302997158756, + "t": 0.6618394964880608, + "punct": null, + "acc_u": 0.0009285051067780873, + "acc_t": 0.0436397400185701, + "acc_punct": null + }, + "lyrics-Hip Hop-corrupted-asr": { + "u": 0.2185635510522691, + "t": 0.5824913255793743, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.03064066852367688, + "acc_punct": null + }, + "lyrics-Indie Rock": { + "u": 0.44546619217755, + "t": 0.6952721096237301, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.05245901639344262, + "acc_punct": null + }, + "lyrics-Indie Rock-corrupted-asr": { + "u": 0.3931859426665492, + "t": 0.6625983726599258, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.03934426229508197, + "acc_punct": null + }, + "lyrics-Pop": { + "u": 0.4899403569294573, + "t": 0.7359514548589647, + "punct": null, + "acc_u": 0.001122334455667789, + "acc_t": 0.05723905723905724, + "acc_punct": null + }, + "lyrics-Pop-corrupted-asr": { + "u": 0.41886277073421346, + "t": 0.6949015349673535, + "punct": null, + "acc_u": 0.001122334455667789, + "acc_t": 0.06397306397306397, + "acc_punct": null + }, + "lyrics-Pop Punk": { + "u": 0.36861922243718803, + "t": 0.46623348982288265, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Pop Punk-corrupted-asr": { + "u": 0.3015669941937891, + "t": 0.6198629390248109, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Pop Rock": { + "u": 0.4609528208397485, + "t": 0.7112486552319592, + "punct": null, + "acc_u": 0.0024271844660194173, + "acc_t": 0.07281553398058252, + "acc_punct": null + }, + "lyrics-Pop Rock-corrupted-asr": { + "u": 0.3886876307928284, + "t": 0.6788833167155313, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.043689320388349516, + "acc_punct": null + }, + "lyrics-Punk Rock": { + "u": 0.408281295449736, + "t": 0.5391986932317608, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Punk Rock-corrupted-asr": { + "u": 0.35902410398888934, + "t": 0.6850152160656036, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.042105263157894736, + "acc_punct": null + }, + "lyrics-RnB": { + "u": 0.4233517725726673, + "t": 0.7169453653768366, + "punct": null, + "acc_u": 0.001092896174863388, + "acc_t": 0.046994535519125684, + "acc_punct": null + }, + "lyrics-RnB-corrupted-asr": { + "u": 0.35758547932526735, + "t": 0.6493685395020797, + "punct": null, + "acc_u": 0.001092896174863388, + "acc_t": 0.034972677595628415, + "acc_punct": null + }, + "lyrics-Rock": { + "u": 0.5779057592419603, + "t": 0.7689245034502628, + "punct": null, + "acc_u": 0.021150592216582064, + "acc_t": 0.12690355329949238, + "acc_punct": null + }, + "lyrics-Rock-corrupted-asr": { + "u": 0.4732801206558836, + "t": 0.718761460428608, + "punct": null, + "acc_u": 0.0025380710659898475, + "acc_t": 0.06937394247038917, + "acc_punct": null + }, + "lyrics-Soul": { + "u": 0.33830113865789724, + "t": 0.4057955308104497, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Soul-corrupted-asr": { + "u": 0.28103301888527293, + "t": 0.49645544031991823, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Southern Hip Hop": { + "u": 0.19331356087202586, + "t": 0.4583437545782493, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.004807692307692308, + "acc_punct": null + }, + "lyrics-Southern Hip Hop-corrupted-asr": { + "u": 0.09352902313849773, + "t": 0.23131538734170828, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining_s100.json b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining_s100.json new file mode 100644 index 00000000..de74e235 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining_s100.json @@ -0,0 +1,260 @@ +{ + "en": { + "lyrics-Alternative Metal": { + "u": 0.26067550202037015, + "t": 0.3840469867833381, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Alternative Metal-corrupted-asr": { + "u": 0.1014614698994034, + "t": 0.26436199363528196, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Alternative Rock": { + "u": 0.1829326098754813, + "t": 0.37856233718897675, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Alternative Rock-corrupted-asr": { + "u": 0.07802675175226857, + "t": 0.24789870579113332, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Country": { + "u": 0.18114631484019617, + "t": 0.33841062767051827, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Country-corrupted-asr": { + "u": 0.07378575870137612, + "t": 0.2386905820571392, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Gangsta Rap": { + "u": 0.31389225306964275, + "t": 0.292371687349836, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Gangsta Rap-corrupted-asr": { + "u": 0.29772737219887957, + "t": 0.137221027865285, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Hard Rock": { + "u": 0.1997118164654061, + "t": 0.36992443418277554, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Hard Rock-corrupted-asr": { + "u": 0.08234191500208936, + "t": 0.21926289155756684, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Heavy Metal": { + "u": 0.2255662852257455, + "t": 0.38865839398928803, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Heavy Metal-corrupted-asr": { + "u": 0.07372033951545938, + "t": 0.19310020196929417, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Hip Hop": { + "u": 0.21186332474440342, + "t": 0.25968155630050277, + "punct": null, + "acc_u": 0.0009285051067780873, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Hip Hop-corrupted-asr": { + "u": 0.25702334257263715, + "t": 0.1823499024594573, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Indie Rock": { + "u": 0.2169995591488169, + "t": 0.3903996295907317, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Indie Rock-corrupted-asr": { + "u": 0.09725219227238854, + "t": 0.22587305667280372, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Pop": { + "u": 0.1866283794907915, + "t": 0.337255556818978, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Pop-corrupted-asr": { + "u": 0.06952686953528116, + "t": 0.18468851154305693, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Pop Punk": { + "u": 0.1857568405174699, + "t": 0.31473391927838296, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Pop Punk-corrupted-asr": { + "u": 0.07152012071735152, + "t": 0.21322278771211034, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Pop Rock": { + "u": 0.20100808314482052, + "t": 0.3587127351484565, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Pop Rock-corrupted-asr": { + "u": 0.06177038773719732, + "t": 0.21926740824373, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Punk Rock": { + "u": 0.19496063158025675, + "t": 0.3831371744876172, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Punk Rock-corrupted-asr": { + "u": 0.060831299055357044, + "t": 0.23283238395632103, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-RnB": { + "u": 0.11076766843617666, + "t": 0.2753288154229138, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-RnB-corrupted-asr": { + "u": 0.05007322919317772, + "t": 0.15781360169421646, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Rock": { + "u": 0.21031915518241576, + "t": 0.37792588337781313, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0008460236886632825, + "acc_punct": null + }, + "lyrics-Rock-corrupted-asr": { + "u": 0.06662583747373405, + "t": 0.2120705229213521, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Soul": { + "u": 0.22753194430674448, + "t": 0.36830078567964275, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Soul-corrupted-asr": { + "u": 0.058571749702551086, + "t": 0.16221602729619966, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Southern Hip Hop": { + "u": 0.28496048117486605, + "t": 0.2789849789101765, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Southern Hip Hop-corrupted-asr": { + "u": 0.27192423560880213, + "t": 0.1620831600629744, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining_s1000.json b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining_s1000.json new file mode 100644 index 00000000..39b44611 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_no_pretraining_s1000.json @@ -0,0 +1,260 @@ +{ + "en": { + "lyrics-Alternative Metal": { + "u": 0.3960842625632832, + "t": 0.5381896409580537, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0064516129032258064, + "acc_punct": null + }, + "lyrics-Alternative Metal-corrupted-asr": { + "u": 0.3317218808097468, + "t": 0.6497824445616628, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.012903225806451613, + "acc_punct": null + }, + "lyrics-Alternative Rock": { + "u": 0.4317088490913833, + "t": 0.7066222949463764, + "punct": null, + "acc_u": 0.0011682242990654205, + "acc_t": 0.04205607476635514, + "acc_punct": null + }, + "lyrics-Alternative Rock-corrupted-asr": { + "u": 0.4209599604131566, + "t": 0.6888645356453023, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.04088785046728972, + "acc_punct": null + }, + "lyrics-Country": { + "u": 0.4321197636832044, + "t": 0.7209216694247289, + "punct": null, + "acc_u": 0.0014064697609001407, + "acc_t": 0.06751054852320675, + "acc_punct": null + }, + "lyrics-Country-corrupted-asr": { + "u": 0.3946258786320697, + "t": 0.6929280256912499, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.05907172995780591, + "acc_punct": null + }, + "lyrics-Gangsta Rap": { + "u": 0.14282456167849802, + "t": 0.22339555716256473, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Gangsta Rap-corrupted-asr": { + "u": 0.07075451759503279, + "t": 0.0975811544329328, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Hard Rock": { + "u": 0.4212817743701047, + "t": 0.699366292001328, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.04186046511627907, + "acc_punct": null + }, + "lyrics-Hard Rock-corrupted-asr": { + "u": 0.38780842660204584, + "t": 0.6738157193697628, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.037209302325581395, + "acc_punct": null + }, + "lyrics-Heavy Metal": { + "u": 0.42200883782359094, + "t": 0.640188358877735, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.009259259259259259, + "acc_punct": null + }, + "lyrics-Heavy Metal-corrupted-asr": { + "u": 0.362947687489114, + "t": 0.6360938892541428, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.027777777777777776, + "acc_punct": null + }, + "lyrics-Hip Hop": { + "u": 0.2041301353934126, + "t": 0.5252074536959614, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0064995357474466105, + "acc_punct": null + }, + "lyrics-Hip Hop-corrupted-asr": { + "u": 0.12969940467705102, + "t": 0.37919035408322854, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Indie Rock": { + "u": 0.43587533090485736, + "t": 0.6662711036438543, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.03278688524590164, + "acc_punct": null + }, + "lyrics-Indie Rock-corrupted-asr": { + "u": 0.37594779759134933, + "t": 0.6446338235101063, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.029508196721311476, + "acc_punct": null + }, + "lyrics-Pop": { + "u": 0.3595094021185154, + "t": 0.5948719640574208, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.013468013468013467, + "acc_punct": null + }, + "lyrics-Pop-corrupted-asr": { + "u": 0.3279841839679929, + "t": 0.6447668305331143, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.02356902356902357, + "acc_punct": null + }, + "lyrics-Pop Punk": { + "u": 0.3616312685728841, + "t": 0.4676349382726165, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Pop Punk-corrupted-asr": { + "u": 0.2742965846651044, + "t": 0.5586717455597852, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0070921985815602835, + "acc_punct": null + }, + "lyrics-Pop Rock": { + "u": 0.4317491982772025, + "t": 0.6865031607347261, + "punct": null, + "acc_u": 0.0024271844660194173, + "acc_t": 0.055825242718446605, + "acc_punct": null + }, + "lyrics-Pop Rock-corrupted-asr": { + "u": 0.369407163203332, + "t": 0.6597915482634924, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.03640776699029126, + "acc_punct": null + }, + "lyrics-Punk Rock": { + "u": 0.40785294960147817, + "t": 0.5101763341094415, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Punk Rock-corrupted-asr": { + "u": 0.3493776942943937, + "t": 0.6879615576472806, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.07368421052631578, + "acc_punct": null + }, + "lyrics-RnB": { + "u": 0.3144044881687763, + "t": 0.6170328455396791, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.01092896174863388, + "acc_punct": null + }, + "lyrics-RnB-corrupted-asr": { + "u": 0.24947130782233348, + "t": 0.595986035216544, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.009836065573770493, + "acc_punct": null + }, + "lyrics-Rock": { + "u": 0.41705901901854237, + "t": 0.6931329305308803, + "punct": null, + "acc_u": 0.0008460236886632825, + "acc_t": 0.04060913705583756, + "acc_punct": null + }, + "lyrics-Rock-corrupted-asr": { + "u": 0.38484816268675814, + "t": 0.6703205865791755, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.03468697123519458, + "acc_punct": null + }, + "lyrics-Soul": { + "u": 0.3417047056099728, + "t": 0.4243850795681146, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Soul-corrupted-asr": { + "u": 0.2681832703748049, + "t": 0.43457415324174065, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Southern Hip Hop": { + "u": 0.18811435483895994, + "t": 0.42716348593485826, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Southern Hip Hop-corrupted-asr": { + "u": 0.09027237052804736, + "t": 0.21366351216139162, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_s100.json b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_s100.json new file mode 100644 index 00000000..75ff95d4 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_s100.json @@ -0,0 +1,260 @@ +{ + "en": { + "lyrics-Alternative Metal": { + "u": 0.4469515683912542, + "t": 0.6860349188045153, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.03225806451612903, + "acc_punct": null + }, + "lyrics-Alternative Metal-corrupted-asr": { + "u": 0.3989775541652121, + "t": 0.6686111189942725, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.01935483870967742, + "acc_punct": null + }, + "lyrics-Alternative Rock": { + "u": 0.44205289001197307, + "t": 0.6490157146285984, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.017523364485981307, + "acc_punct": null + }, + "lyrics-Alternative Rock-corrupted-asr": { + "u": 0.42603584083605006, + "t": 0.6740627756396088, + "punct": null, + "acc_u": 0.0011682242990654205, + "acc_t": 0.029205607476635514, + "acc_punct": null + }, + "lyrics-Country": { + "u": 0.4250390594766046, + "t": 0.6668032021467015, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.02531645569620253, + "acc_punct": null + }, + "lyrics-Country-corrupted-asr": { + "u": 0.4192402335541667, + "t": 0.6666240935316466, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0450070323488045, + "acc_punct": null + }, + "lyrics-Gangsta Rap": { + "u": 0.19815414912703533, + "t": 0.5032758449585243, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Gangsta Rap-corrupted-asr": { + "u": 0.15177778670867306, + "t": 0.48446371216997736, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "lyrics-Hard Rock": { + "u": 0.4434991611004468, + "t": 0.640597316091893, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.023255813953488372, + "acc_punct": null + }, + "lyrics-Hard Rock-corrupted-asr": { + "u": 0.3959473458834924, + "t": 0.6359387632943083, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.018604651162790697, + "acc_punct": null + }, + "lyrics-Heavy Metal": { + "u": 0.4351408419940857, + "t": 0.6372617149624907, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.023148148148148147, + "acc_punct": null + }, + "lyrics-Heavy Metal-corrupted-asr": { + "u": 0.39931442365362274, + "t": 0.6240857035977596, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.018518518518518517, + "acc_punct": null + }, + "lyrics-Hip Hop": { + "u": 0.22833279418736022, + "t": 0.5226172376909056, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.003714020427112349, + "acc_punct": null + }, + "lyrics-Hip Hop-corrupted-asr": { + "u": 0.16016221876039913, + "t": 0.4557354570199437, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0018570102135561746, + "acc_punct": null + }, + "lyrics-Indie Rock": { + "u": 0.4281170733796194, + "t": 0.6387854312673187, + "punct": null, + "acc_u": 0.006557377049180328, + "acc_t": 0.022950819672131147, + "acc_punct": null + }, + "lyrics-Indie Rock-corrupted-asr": { + "u": 0.42901862043042843, + "t": 0.6272677225024937, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.022950819672131147, + "acc_punct": null + }, + "lyrics-Pop": { + "u": 0.4100042978887628, + "t": 0.6383337748577316, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.012345679012345678, + "acc_punct": null + }, + "lyrics-Pop-corrupted-asr": { + "u": 0.3657318823330395, + "t": 0.6215624826147331, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.02356902356902357, + "acc_punct": null + }, + "lyrics-Pop Punk": { + "u": 0.4884909784147525, + "t": 0.6920661641377792, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0425531914893617, + "acc_punct": null + }, + "lyrics-Pop Punk-corrupted-asr": { + "u": 0.4503542547225345, + "t": 0.6774460026050241, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0425531914893617, + "acc_punct": null + }, + "lyrics-Pop Rock": { + "u": 0.442941035493167, + "t": 0.6381600394268023, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.024271844660194174, + "acc_punct": null + }, + "lyrics-Pop Rock-corrupted-asr": { + "u": 0.40727833309278705, + "t": 0.634981022009173, + "punct": null, + "acc_u": 0.0024271844660194173, + "acc_t": 0.014563106796116505, + "acc_punct": null + }, + "lyrics-Punk Rock": { + "u": 0.45029726955501687, + "t": 0.6752782365432769, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.021052631578947368, + "acc_punct": null + }, + "lyrics-Punk Rock-corrupted-asr": { + "u": 0.4367399124163557, + "t": 0.6721634633942115, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.04736842105263158, + "acc_punct": null + }, + "lyrics-RnB": { + "u": 0.380773963914889, + "t": 0.6146528442393894, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.014207650273224045, + "acc_punct": null + }, + "lyrics-RnB-corrupted-asr": { + "u": 0.33214041157705937, + "t": 0.5882947175131545, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.015300546448087432, + "acc_punct": null + }, + "lyrics-Rock": { + "u": 0.44163048194744214, + "t": 0.6540898970614307, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0338409475465313, + "acc_punct": null + }, + "lyrics-Rock-corrupted-asr": { + "u": 0.41629476172106705, + "t": 0.6449536435157445, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.027918781725888325, + "acc_punct": null + }, + "lyrics-Soul": { + "u": 0.38622367351087045, + "t": 0.5976782330976226, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.00909090909090909, + "acc_punct": null + }, + "lyrics-Soul-corrupted-asr": { + "u": 0.38528337315270855, + "t": 0.6075695237128256, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.01818181818181818, + "acc_punct": null + }, + "lyrics-Southern Hip Hop": { + "u": 0.22689918659214176, + "t": 0.5299465049718649, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.009615384615384616, + "acc_punct": null + }, + "lyrics-Southern Hip Hop-corrupted-asr": { + "u": 0.15788282116734015, + "t": 0.44927483035117494, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.009615384615384616, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_s1000.json b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_s1000.json new file mode 100644 index 00000000..2e4c289c --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/lyrics/sat-12l_lora_s1000.json @@ -0,0 +1,260 @@ +{ + "en": { + "lyrics-Alternative Metal": { + "u": 0.5988529118481084, + "t": 0.7772459544663071, + "punct": null, + "acc_u": 0.0064516129032258064, + "acc_t": 0.14838709677419354, + "acc_punct": null + }, + "lyrics-Alternative Metal-corrupted-asr": { + "u": 0.5564615113889976, + "t": 0.7309783626258677, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0967741935483871, + "acc_punct": null + }, + "lyrics-Alternative Rock": { + "u": 0.6132343610410046, + "t": 0.7530626819453197, + "punct": null, + "acc_u": 0.008177570093457943, + "acc_t": 0.08177570093457943, + "acc_punct": null + }, + "lyrics-Alternative Rock-corrupted-asr": { + "u": 0.5505143187142724, + "t": 0.71401356013445, + "punct": null, + "acc_u": 0.004672897196261682, + "acc_t": 0.06425233644859812, + "acc_punct": null + }, + "lyrics-Country": { + "u": 0.6041256601791448, + "t": 0.76709262610866, + "punct": null, + "acc_u": 0.009845288326300985, + "acc_t": 0.13783403656821377, + "acc_punct": null + }, + "lyrics-Country-corrupted-asr": { + "u": 0.5631957782587781, + "t": 0.7266872692409987, + "punct": null, + "acc_u": 0.005625879043600563, + "acc_t": 0.09142053445850915, + "acc_punct": null + }, + "lyrics-Gangsta Rap": { + "u": 0.2519563701835238, + "t": 0.6092029263535144, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.03125, + "acc_punct": null + }, + "lyrics-Gangsta Rap-corrupted-asr": { + "u": 0.19637577790063188, + "t": 0.5577490187508569, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.03125, + "acc_punct": null + }, + "lyrics-Hard Rock": { + "u": 0.6080021269429338, + "t": 0.7571663916149076, + "punct": null, + "acc_u": 0.0069767441860465115, + "acc_t": 0.1, + "acc_punct": null + }, + "lyrics-Hard Rock-corrupted-asr": { + "u": 0.5442373083285911, + "t": 0.7135799091689692, + "punct": null, + "acc_u": 0.004651162790697674, + "acc_t": 0.06511627906976744, + "acc_punct": null + }, + "lyrics-Heavy Metal": { + "u": 0.6028604827645633, + "t": 0.7342973873776605, + "punct": null, + "acc_u": 0.004629629629629629, + "acc_t": 0.06944444444444445, + "acc_punct": null + }, + "lyrics-Heavy Metal-corrupted-asr": { + "u": 0.49217428232745286, + "t": 0.669771607723614, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.05555555555555555, + "acc_punct": null + }, + "lyrics-Hip Hop": { + "u": 0.3439066954660199, + "t": 0.6482304267040572, + "punct": null, + "acc_u": 0.0009285051067780873, + "acc_t": 0.039925719591457756, + "acc_punct": null + }, + "lyrics-Hip Hop-corrupted-asr": { + "u": 0.2560107969513277, + "t": 0.5692786802408403, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.022284122562674095, + "acc_punct": null + }, + "lyrics-Indie Rock": { + "u": 0.6009526107219114, + "t": 0.7262205374792136, + "punct": null, + "acc_u": 0.009836065573770493, + "acc_t": 0.10163934426229508, + "acc_punct": null + }, + "lyrics-Indie Rock-corrupted-asr": { + "u": 0.5537250602718192, + "t": 0.6985187116680864, + "punct": null, + "acc_u": 0.009836065573770493, + "acc_t": 0.08196721311475409, + "acc_punct": null + }, + "lyrics-Pop": { + "u": 0.5543215499615035, + "t": 0.7272630892737137, + "punct": null, + "acc_u": 0.003367003367003367, + "acc_t": 0.07407407407407407, + "acc_punct": null + }, + "lyrics-Pop-corrupted-asr": { + "u": 0.48403666100055753, + "t": 0.6851514650040965, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.04826038159371493, + "acc_punct": null + }, + "lyrics-Pop Punk": { + "u": 0.5987664644902588, + "t": 0.7679556126952615, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.09929078014184398, + "acc_punct": null + }, + "lyrics-Pop Punk-corrupted-asr": { + "u": 0.532754320523378, + "t": 0.7445272539909141, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.07801418439716312, + "acc_punct": null + }, + "lyrics-Pop Rock": { + "u": 0.5921746728745484, + "t": 0.7448848339756798, + "punct": null, + "acc_u": 0.009708737864077669, + "acc_t": 0.09951456310679611, + "acc_punct": null + }, + "lyrics-Pop Rock-corrupted-asr": { + "u": 0.5206007701322529, + "t": 0.6834524247597168, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.055825242718446605, + "acc_punct": null + }, + "lyrics-Punk Rock": { + "u": 0.6013572833424036, + "t": 0.7602415905538168, + "punct": null, + "acc_u": 0.010526315789473684, + "acc_t": 0.08947368421052632, + "acc_punct": null + }, + "lyrics-Punk Rock-corrupted-asr": { + "u": 0.5299839219438212, + "t": 0.7180420070368423, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.07894736842105263, + "acc_punct": null + }, + "lyrics-RnB": { + "u": 0.49024174073040416, + "t": 0.7120074489872393, + "punct": null, + "acc_u": 0.003278688524590164, + "acc_t": 0.05792349726775956, + "acc_punct": null + }, + "lyrics-RnB-corrupted-asr": { + "u": 0.3924585797082518, + "t": 0.6520094697693402, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0273224043715847, + "acc_punct": null + }, + "lyrics-Rock": { + "u": 0.6113568377959996, + "t": 0.7472875593106564, + "punct": null, + "acc_u": 0.018612521150592216, + "acc_t": 0.11082910321489002, + "acc_punct": null + }, + "lyrics-Rock-corrupted-asr": { + "u": 0.5354005354097071, + "t": 0.7036127882382638, + "punct": null, + "acc_u": 0.00338409475465313, + "acc_t": 0.06429780033840947, + "acc_punct": null + }, + "lyrics-Soul": { + "u": 0.5308148684263901, + "t": 0.7109230114145656, + "punct": null, + "acc_u": 0.00909090909090909, + "acc_t": 0.045454545454545456, + "acc_punct": null + }, + "lyrics-Soul-corrupted-asr": { + "u": 0.47616990991422287, + "t": 0.6560414245251781, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.05454545454545454, + "acc_punct": null + }, + "lyrics-Southern Hip Hop": { + "u": 0.34477111693172896, + "t": 0.6453360899929991, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.08173076923076923, + "acc_punct": null + }, + "lyrics-Southern Hip Hop-corrupted-asr": { + "u": 0.25891496829808947, + "t": 0.5473085230914199, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.04326923076923077, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/lyrics/wtp-12l.json b/wtpsplit/evaluation/evaluation_results/lyrics/wtp-12l.json new file mode 100644 index 00000000..54291db2 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/lyrics/wtp-12l.json @@ -0,0 +1,260 @@ +{ + "en": { + "lyrics-Alternative Metal": { + "u": 0.4714284167569595, + "t": 0.4795402694217955, + "punct": 0.6045785596452294, + "acc_u": 0.025806451612903226, + "acc_t": 0.012903225806451613, + "acc_punct": 0.03225806451612903 + }, + "lyrics-Alternative Metal-corrupted-asr": { + "u": 0.43648480793621064, + "t": 0.4640767115236401, + "punct": 0.5417266559043615, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Alternative Rock": { + "u": 0.4824696078860648, + "t": 0.49178273474197853, + "punct": 0.6329907647171042, + "acc_u": 0.037383177570093455, + "acc_t": 0.030373831775700934, + "acc_punct": 0.05724299065420561 + }, + "lyrics-Alternative Rock-corrupted-asr": { + "u": 0.43640531171583063, + "t": 0.4437378265813664, + "punct": 0.5498425972561133, + "acc_u": 0.0011682242990654205, + "acc_t": 0.004672897196261682, + "acc_punct": 0.0035046728971962616 + }, + "lyrics-Country": { + "u": 0.45326577459277106, + "t": 0.45300468718360654, + "punct": 0.5891059634353808, + "acc_u": 0.02531645569620253, + "acc_t": 0.02109704641350211, + "acc_punct": 0.03656821378340366 + }, + "lyrics-Country-corrupted-asr": { + "u": 0.4126911040755251, + "t": 0.41392721938941135, + "punct": 0.5192411190546573, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.004219409282700422 + }, + "lyrics-Gangsta Rap": { + "u": 0.2252379379612935, + "t": 0.33747881105799615, + "punct": 0.43932591821233463, + "acc_u": 0.0, + "acc_t": 0.015625, + "acc_punct": 0.015625 + }, + "lyrics-Gangsta Rap-corrupted-asr": { + "u": 0.15982379413322545, + "t": 0.2855951251196227, + "punct": 0.3948034106300934, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Hard Rock": { + "u": 0.4458674041487899, + "t": 0.45918996681809665, + "punct": 0.5948997810709413, + "acc_u": 0.018604651162790697, + "acc_t": 0.011627906976744186, + "acc_punct": 0.037209302325581395 + }, + "lyrics-Hard Rock-corrupted-asr": { + "u": 0.42751608292095555, + "t": 0.438222993565981, + "punct": 0.5259336350983038, + "acc_u": 0.0, + "acc_t": 0.002325581395348837, + "acc_punct": 0.002325581395348837 + }, + "lyrics-Heavy Metal": { + "u": 0.43886457842297516, + "t": 0.4529400362944922, + "punct": 0.5889103048291916, + "acc_u": 0.009259259259259259, + "acc_t": 0.009259259259259259, + "acc_punct": 0.023148148148148147 + }, + "lyrics-Heavy Metal-corrupted-asr": { + "u": 0.393621296912312, + "t": 0.3934729795356966, + "punct": 0.5120234009989637, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.004629629629629629 + }, + "lyrics-Hip Hop": { + "u": 0.26682530880199484, + "t": 0.3256795679057545, + "punct": 0.4608203511830775, + "acc_u": 0.004642525533890436, + "acc_t": 0.004642525533890436, + "acc_punct": 0.012999071494893221 + }, + "lyrics-Hip Hop-corrupted-asr": { + "u": 0.20361034357274263, + "t": 0.270917537234025, + "punct": 0.3794199866710667, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Indie Rock": { + "u": 0.45767240471309323, + "t": 0.47176191863698663, + "punct": 0.6006239014690943, + "acc_u": 0.019672131147540985, + "acc_t": 0.013114754098360656, + "acc_punct": 0.03278688524590164 + }, + "lyrics-Indie Rock-corrupted-asr": { + "u": 0.4482110973749633, + "t": 0.4515454864816756, + "punct": 0.5484166792496219, + "acc_u": 0.006557377049180328, + "acc_t": 0.0, + "acc_punct": 0.009836065573770493 + }, + "lyrics-Pop": { + "u": 0.4531558595109399, + "t": 0.4582876759067434, + "punct": 0.5817968138103935, + "acc_u": 0.028058361391694726, + "acc_t": 0.02244668911335578, + "acc_punct": 0.04264870931537598 + }, + "lyrics-Pop-corrupted-asr": { + "u": 0.3948934440077052, + "t": 0.4003138545726256, + "punct": 0.493515901498656, + "acc_u": 0.0, + "acc_t": 0.001122334455667789, + "acc_punct": 0.001122334455667789 + }, + "lyrics-Pop Punk": { + "u": 0.43000569904561575, + "t": 0.42018495207641243, + "punct": 0.5745531265063477, + "acc_u": 0.0070921985815602835, + "acc_t": 0.0070921985815602835, + "acc_punct": 0.0 + }, + "lyrics-Pop Punk-corrupted-asr": { + "u": 0.42193827374802717, + "t": 0.42187782231298926, + "punct": 0.5309155405883286, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Pop Rock": { + "u": 0.46014219480734986, + "t": 0.46072607222583, + "punct": 0.58327223166007, + "acc_u": 0.01699029126213592, + "acc_t": 0.019417475728155338, + "acc_punct": 0.050970873786407765 + }, + "lyrics-Pop Rock-corrupted-asr": { + "u": 0.4012863623235893, + "t": 0.40757455636979084, + "punct": 0.5096269490438436, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0048543689320388345 + }, + "lyrics-Punk Rock": { + "u": 0.44859463097427427, + "t": 0.45349935864547475, + "punct": 0.5882064005807826, + "acc_u": 0.010526315789473684, + "acc_t": 0.010526315789473684, + "acc_punct": 0.02631578947368421 + }, + "lyrics-Punk Rock-corrupted-asr": { + "u": 0.46027058805618526, + "t": 0.45473201197208996, + "punct": 0.5561104450789125, + "acc_u": 0.010526315789473684, + "acc_t": 0.010526315789473684, + "acc_punct": 0.015789473684210527 + }, + "lyrics-RnB": { + "u": 0.3937693750817419, + "t": 0.39602094549630157, + "punct": 0.5347280752137566, + "acc_u": 0.009836065573770493, + "acc_t": 0.007650273224043716, + "acc_punct": 0.024043715846994537 + }, + "lyrics-RnB-corrupted-asr": { + "u": 0.3616762826646102, + "t": 0.351425956224702, + "punct": 0.43233707809157673, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.002185792349726776 + }, + "lyrics-Rock": { + "u": 0.48111768463717075, + "t": 0.4856364827122496, + "punct": 0.6070942084709554, + "acc_u": 0.031302876480541454, + "acc_t": 0.02030456852791878, + "acc_punct": 0.048223350253807105 + }, + "lyrics-Rock-corrupted-asr": { + "u": 0.4135269037501443, + "t": 0.4161043867328755, + "punct": 0.5310123123126836, + "acc_u": 0.00338409475465313, + "acc_t": 0.0025380710659898475, + "acc_punct": 0.00676818950930626 + }, + "lyrics-Soul": { + "u": 0.389016800235301, + "t": 0.4017853294353386, + "punct": 0.5496621991159818, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Soul-corrupted-asr": { + "u": 0.3819155698789365, + "t": 0.3987921537228817, + "punct": 0.4864007430436162, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Southern Hip Hop": { + "u": 0.26530086872579095, + "t": 0.3329801825590716, + "punct": 0.4593993417887896, + "acc_u": 0.0, + "acc_t": 0.004807692307692308, + "acc_punct": 0.009615384615384616 + }, + "lyrics-Southern Hip Hop-corrupted-asr": { + "u": 0.1933803086455429, + "t": 0.27731864497159553, + "punct": 0.36464739579259065, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/lyrics/wtp-12l_s100.json b/wtpsplit/evaluation/evaluation_results/lyrics/wtp-12l_s100.json new file mode 100644 index 00000000..2c4bf119 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/lyrics/wtp-12l_s100.json @@ -0,0 +1,260 @@ +{ + "en": { + "lyrics-Alternative Metal": { + "u": 0.4714284167569595, + "t": 0.47982084373906, + "punct": 0.5855454429942885, + "acc_u": 0.025806451612903226, + "acc_t": 0.012903225806451613, + "acc_punct": 0.03870967741935484 + }, + "lyrics-Alternative Metal-corrupted-asr": { + "u": 0.43648480793621064, + "t": 0.4604803094604032, + "punct": 0.5265806988231057, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Alternative Rock": { + "u": 0.4824696078860648, + "t": 0.48983133140151014, + "punct": 0.5993187660945967, + "acc_u": 0.037383177570093455, + "acc_t": 0.029205607476635514, + "acc_punct": 0.054906542056074766 + }, + "lyrics-Alternative Rock-corrupted-asr": { + "u": 0.43640531171583063, + "t": 0.44259706032788393, + "punct": 0.525731252187386, + "acc_u": 0.0011682242990654205, + "acc_t": 0.0035046728971962616, + "acc_punct": 0.004672897196261682 + }, + "lyrics-Country": { + "u": 0.45326577459277106, + "t": 0.4501214536276475, + "punct": 0.5651101524077704, + "acc_u": 0.02531645569620253, + "acc_t": 0.02109704641350211, + "acc_punct": 0.03375527426160337 + }, + "lyrics-Country-corrupted-asr": { + "u": 0.4126911040755251, + "t": 0.4143327124233372, + "punct": 0.4889273567702918, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0028129395218002813 + }, + "lyrics-Gangsta Rap": { + "u": 0.2252379379612935, + "t": 0.3509258509945281, + "punct": 0.4239974933951878, + "acc_u": 0.0, + "acc_t": 0.015625, + "acc_punct": 0.0 + }, + "lyrics-Gangsta Rap-corrupted-asr": { + "u": 0.15982379413322545, + "t": 0.28490114551159473, + "punct": 0.36406051800474215, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Hard Rock": { + "u": 0.4458674041487899, + "t": 0.4526853653379654, + "punct": 0.569722771864532, + "acc_u": 0.018604651162790697, + "acc_t": 0.0069767441860465115, + "acc_punct": 0.02558139534883721 + }, + "lyrics-Hard Rock-corrupted-asr": { + "u": 0.42751608292095555, + "t": 0.4343916135531064, + "punct": 0.5035860858456335, + "acc_u": 0.0, + "acc_t": 0.002325581395348837, + "acc_punct": 0.0 + }, + "lyrics-Heavy Metal": { + "u": 0.43886457842297516, + "t": 0.4490574681625056, + "punct": 0.5667979891072067, + "acc_u": 0.009259259259259259, + "acc_t": 0.009259259259259259, + "acc_punct": 0.009259259259259259 + }, + "lyrics-Heavy Metal-corrupted-asr": { + "u": 0.393621296912312, + "t": 0.3934945620711774, + "punct": 0.46480086909426704, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Hip Hop": { + "u": 0.26682530880199484, + "t": 0.3248049129192988, + "punct": 0.4393260345711645, + "acc_u": 0.004642525533890436, + "acc_t": 0.0064995357474466105, + "acc_punct": 0.01021355617455896 + }, + "lyrics-Hip Hop-corrupted-asr": { + "u": 0.20361034357274263, + "t": 0.2743630466530315, + "punct": 0.3692445767786846, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0009285051067780873 + }, + "lyrics-Indie Rock": { + "u": 0.45767240471309323, + "t": 0.46953149729020266, + "punct": 0.5626674725249013, + "acc_u": 0.019672131147540985, + "acc_t": 0.013114754098360656, + "acc_punct": 0.02622950819672131 + }, + "lyrics-Indie Rock-corrupted-asr": { + "u": 0.4482110973749633, + "t": 0.45330284804628374, + "punct": 0.523631843735176, + "acc_u": 0.006557377049180328, + "acc_t": 0.0, + "acc_punct": 0.006557377049180328 + }, + "lyrics-Pop": { + "u": 0.4531558595109399, + "t": 0.45602665247591384, + "punct": 0.5587700012489281, + "acc_u": 0.028058361391694726, + "acc_t": 0.02244668911335578, + "acc_punct": 0.03591470258136925 + }, + "lyrics-Pop-corrupted-asr": { + "u": 0.3948934440077052, + "t": 0.39363373225066917, + "punct": 0.47011445112257866, + "acc_u": 0.0, + "acc_t": 0.001122334455667789, + "acc_punct": 0.001122334455667789 + }, + "lyrics-Pop Punk": { + "u": 0.43000569904561575, + "t": 0.4230568630503112, + "punct": 0.5485745647453766, + "acc_u": 0.0070921985815602835, + "acc_t": 0.0070921985815602835, + "acc_punct": 0.0 + }, + "lyrics-Pop Punk-corrupted-asr": { + "u": 0.42193827374802717, + "t": 0.41889833230226964, + "punct": 0.500226895399416, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Pop Rock": { + "u": 0.46014219480734986, + "t": 0.4557669191406876, + "punct": 0.5748328248228198, + "acc_u": 0.01699029126213592, + "acc_t": 0.01699029126213592, + "acc_punct": 0.050970873786407765 + }, + "lyrics-Pop Rock-corrupted-asr": { + "u": 0.4012863623235893, + "t": 0.40694459526623517, + "punct": 0.4881655378755054, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0024271844660194173 + }, + "lyrics-Punk Rock": { + "u": 0.44859463097427427, + "t": 0.45144534980546003, + "punct": 0.5613527277076541, + "acc_u": 0.010526315789473684, + "acc_t": 0.015789473684210527, + "acc_punct": 0.03684210526315789 + }, + "lyrics-Punk Rock-corrupted-asr": { + "u": 0.46027058805618526, + "t": 0.44948150382750346, + "punct": 0.5245057274729023, + "acc_u": 0.010526315789473684, + "acc_t": 0.005263157894736842, + "acc_punct": 0.021052631578947368 + }, + "lyrics-RnB": { + "u": 0.3937693750817419, + "t": 0.38843469216442317, + "punct": 0.5136901998081873, + "acc_u": 0.009836065573770493, + "acc_t": 0.01092896174863388, + "acc_punct": 0.025136612021857924 + }, + "lyrics-RnB-corrupted-asr": { + "u": 0.3616762826646102, + "t": 0.34806573903983234, + "punct": 0.41459871473614246, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.001092896174863388 + }, + "lyrics-Rock": { + "u": 0.48111768463717075, + "t": 0.48019536830591436, + "punct": 0.5754793155109519, + "acc_u": 0.031302876480541454, + "acc_t": 0.02030456852791878, + "acc_punct": 0.04991539763113367 + }, + "lyrics-Rock-corrupted-asr": { + "u": 0.4135269037501443, + "t": 0.41552473403588147, + "punct": 0.5145872657148876, + "acc_u": 0.00338409475465313, + "acc_t": 0.0025380710659898475, + "acc_punct": 0.004230118443316413 + }, + "lyrics-Soul": { + "u": 0.389016800235301, + "t": 0.39020909277870286, + "punct": 0.5249928343634843, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Soul-corrupted-asr": { + "u": 0.3819155698789365, + "t": 0.3974376927282239, + "punct": 0.47285867302365964, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Southern Hip Hop": { + "u": 0.26530086872579095, + "t": 0.3316081463806268, + "punct": 0.4328929563813117, + "acc_u": 0.0, + "acc_t": 0.004807692307692308, + "acc_punct": 0.004807692307692308 + }, + "lyrics-Southern Hip Hop-corrupted-asr": { + "u": 0.1933803086455429, + "t": 0.27731864497159553, + "punct": 0.3548766723524055, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/lyrics/wtp_12l_s1000.json b/wtpsplit/evaluation/evaluation_results/lyrics/wtp_12l_s1000.json new file mode 100644 index 00000000..37e65f05 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/lyrics/wtp_12l_s1000.json @@ -0,0 +1,260 @@ +{ + "en": { + "lyrics-Alternative Metal": { + "u": 0.4714284167569595, + "t": 0.4795402694217955, + "punct": 0.6045785596452294, + "acc_u": 0.025806451612903226, + "acc_t": 0.012903225806451613, + "acc_punct": 0.03225806451612903 + }, + "lyrics-Alternative Metal-corrupted-asr": { + "u": 0.43648480793621064, + "t": 0.4640767115236401, + "punct": 0.5417266559043615, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Alternative Rock": { + "u": 0.4824696078860648, + "t": 0.49234774868776526, + "punct": 0.6299395626156862, + "acc_u": 0.037383177570093455, + "acc_t": 0.03154205607476635, + "acc_punct": 0.056074766355140186 + }, + "lyrics-Alternative Rock-corrupted-asr": { + "u": 0.43640531171583063, + "t": 0.4437378265813664, + "punct": 0.5489144879741099, + "acc_u": 0.0011682242990654205, + "acc_t": 0.004672897196261682, + "acc_punct": 0.0035046728971962616 + }, + "lyrics-Country": { + "u": 0.45326577459277106, + "t": 0.45300468718360654, + "punct": 0.588656592112457, + "acc_u": 0.02531645569620253, + "acc_t": 0.02109704641350211, + "acc_punct": 0.040787623066104076 + }, + "lyrics-Country-corrupted-asr": { + "u": 0.4126911040755251, + "t": 0.4124837155278861, + "punct": 0.5172117385205047, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.005625879043600563 + }, + "lyrics-Gangsta Rap": { + "u": 0.2252379379612935, + "t": 0.33747881105799615, + "punct": 0.43932591821233463, + "acc_u": 0.0, + "acc_t": 0.015625, + "acc_punct": 0.015625 + }, + "lyrics-Gangsta Rap-corrupted-asr": { + "u": 0.15982379413322545, + "t": 0.2855951251196227, + "punct": 0.3948034106300934, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Hard Rock": { + "u": 0.4458674041487899, + "t": 0.4599599179967258, + "punct": 0.5938050151339006, + "acc_u": 0.018604651162790697, + "acc_t": 0.011627906976744186, + "acc_punct": 0.04186046511627907 + }, + "lyrics-Hard Rock-corrupted-asr": { + "u": 0.42751608292095555, + "t": 0.43734373082662065, + "punct": 0.519683840587878, + "acc_u": 0.0, + "acc_t": 0.002325581395348837, + "acc_punct": 0.002325581395348837 + }, + "lyrics-Heavy Metal": { + "u": 0.43886457842297516, + "t": 0.4529400362944922, + "punct": 0.5889103048291916, + "acc_u": 0.009259259259259259, + "acc_t": 0.009259259259259259, + "acc_punct": 0.023148148148148147 + }, + "lyrics-Heavy Metal-corrupted-asr": { + "u": 0.393621296912312, + "t": 0.3934729795356966, + "punct": 0.5120234009989637, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.004629629629629629 + }, + "lyrics-Hip Hop": { + "u": 0.26682530880199484, + "t": 0.3318018473257449, + "punct": 0.46070753605078474, + "acc_u": 0.004642525533890436, + "acc_t": 0.002785515320334262, + "acc_punct": 0.009285051067780872 + }, + "lyrics-Hip Hop-corrupted-asr": { + "u": 0.20361034357274263, + "t": 0.28068868235667843, + "punct": 0.3760339804157275, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0009285051067780873 + }, + "lyrics-Indie Rock": { + "u": 0.45767240471309323, + "t": 0.4730271969757203, + "punct": 0.5978844925443441, + "acc_u": 0.019672131147540985, + "acc_t": 0.013114754098360656, + "acc_punct": 0.03278688524590164 + }, + "lyrics-Indie Rock-corrupted-asr": { + "u": 0.4482110973749633, + "t": 0.4515454864816756, + "punct": 0.5507110778551686, + "acc_u": 0.006557377049180328, + "acc_t": 0.0, + "acc_punct": 0.009836065573770493 + }, + "lyrics-Pop": { + "u": 0.4531558595109399, + "t": 0.45776216459121305, + "punct": 0.5769744456783863, + "acc_u": 0.028058361391694726, + "acc_t": 0.02356902356902357, + "acc_punct": 0.04377104377104377 + }, + "lyrics-Pop-corrupted-asr": { + "u": 0.3948934440077052, + "t": 0.3980869754814845, + "punct": 0.488590653656266, + "acc_u": 0.0, + "acc_t": 0.001122334455667789, + "acc_punct": 0.001122334455667789 + }, + "lyrics-Pop Punk": { + "u": 0.43000569904561575, + "t": 0.42018495207641243, + "punct": 0.5745531265063477, + "acc_u": 0.0070921985815602835, + "acc_t": 0.0070921985815602835, + "acc_punct": 0.0 + }, + "lyrics-Pop Punk-corrupted-asr": { + "u": 0.42193827374802717, + "t": 0.42187782231298926, + "punct": 0.5309155405883286, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Pop Rock": { + "u": 0.46014219480734986, + "t": 0.46075634525932213, + "punct": 0.5810873582221945, + "acc_u": 0.01699029126213592, + "acc_t": 0.021844660194174758, + "acc_punct": 0.05339805825242718 + }, + "lyrics-Pop Rock-corrupted-asr": { + "u": 0.4012863623235893, + "t": 0.40757455636979084, + "punct": 0.5121322188477768, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0048543689320388345 + }, + "lyrics-Punk Rock": { + "u": 0.44859463097427427, + "t": 0.45349935864547475, + "punct": 0.5882064005807826, + "acc_u": 0.010526315789473684, + "acc_t": 0.010526315789473684, + "acc_punct": 0.02631578947368421 + }, + "lyrics-Punk Rock-corrupted-asr": { + "u": 0.46027058805618526, + "t": 0.45473201197208996, + "punct": 0.5561104450789125, + "acc_u": 0.010526315789473684, + "acc_t": 0.010526315789473684, + "acc_punct": 0.015789473684210527 + }, + "lyrics-RnB": { + "u": 0.3937693750817419, + "t": 0.39244475877305396, + "punct": 0.5310143925169679, + "acc_u": 0.009836065573770493, + "acc_t": 0.006557377049180328, + "acc_punct": 0.025136612021857924 + }, + "lyrics-RnB-corrupted-asr": { + "u": 0.3616762826646102, + "t": 0.35164818161065814, + "punct": 0.43078043719114867, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Rock": { + "u": 0.48111768463717075, + "t": 0.4836668387396376, + "punct": 0.605372063815591, + "acc_u": 0.031302876480541454, + "acc_t": 0.021996615905245348, + "acc_punct": 0.04991539763113367 + }, + "lyrics-Rock-corrupted-asr": { + "u": 0.4135269037501443, + "t": 0.4173835308916316, + "punct": 0.5282926471426291, + "acc_u": 0.00338409475465313, + "acc_t": 0.00338409475465313, + "acc_punct": 0.008460236886632826 + }, + "lyrics-Soul": { + "u": 0.389016800235301, + "t": 0.4017853294353386, + "punct": 0.5496621991159818, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Soul-corrupted-asr": { + "u": 0.3819155698789365, + "t": 0.3987921537228817, + "punct": 0.4864007430436162, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "lyrics-Southern Hip Hop": { + "u": 0.26530086872579095, + "t": 0.3329801825590716, + "punct": 0.4593993417887896, + "acc_u": 0.0, + "acc_t": 0.004807692307692308, + "acc_punct": 0.009615384615384616 + }, + "lyrics-Southern Hip Hop-corrupted-asr": { + "u": 0.1933803086455429, + "t": 0.27731864497159553, + "punct": 0.36464739579259065, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/baselines.json b/wtpsplit/evaluation/evaluation_results/main/baselines.json new file mode 100644 index 00000000..27903eb4 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/baselines.json @@ -0,0 +1,6017 @@ +{ + "af": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.19495412844036697, + "precision": 0.6451612903225806, + "correct_pairwise": 0, + "f1": 0.2994275649493615 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9842931937172775, + "precision": 0.9842931937172775, + "correct_pairwise": 0, + "f1": 0.9842931937172775 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "am": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.03788300835654596, + "precision": 0.21316614420062696, + "correct_pairwise": 0, + "f1": 0.06433301797540208 + }, + "pysbd": { + "recall": 0.03175487465181059, + "precision": 0.3825503355704698, + "correct_pairwise": 0, + "f1": 0.05864197530864198 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ar": { + "ersatz": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8322246858832225, + "precision": 0.9623931623931624, + "correct_pairwise": 0, + "f1": 0.8925881886642887 + }, + "pysbd": { + "recall": 0.5587583148558758, + "precision": 0.39375, + "correct_pairwise": 0, + "f1": 0.461961503208066 + }, + "ersatz": { + "recall": 0.8994826311899483, + "precision": 0.9582677165354331, + "correct_pairwise": 0, + "f1": 0.9279451010293557 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.3599330357142857, + "precision": 0.8588548601864181, + "correct_pairwise": 0, + "f1": 0.5072748721981911 + }, + "pysbd": { + "recall": 0.35044642857142855, + "precision": 0.4145214521452145, + "correct_pairwise": 0, + "f1": 0.37980042334442093 + }, + "ersatz": { + "recall": 0.44252232142857145, + "precision": 0.8920134983127109, + "correct_pairwise": 0, + "f1": 0.5915703095859753 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.673202614379085, + "precision": 0.7862595419847328, + "correct_pairwise": 0, + "f1": 0.7253521126760564 + }, + "pysbd": { + "recall": 0.3235294117647059, + "precision": 0.24780976220275344, + "correct_pairwise": 0, + "f1": 0.2806520198440822 + }, + "ersatz": { + "recall": 0.8202614379084967, + "precision": 0.7758887171561051, + "correct_pairwise": 0, + "f1": 0.7974583002382843 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "az": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.807799442896936, + "precision": 0.6079664570230608, + "correct_pairwise": 0, + "f1": 0.6937799043062202 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "be": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "bg": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.90929326655537, + "precision": 0.9164329781267526, + "correct_pairwise": 0, + "f1": 0.9128491620111733 + }, + "pysbd": { + "recall": 0.5998887033945465, + "precision": 0.9285099052540913, + "correct_pairwise": 0, + "f1": 0.7288708586883028 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8735059760956175, + "precision": 0.9491341991341992, + "correct_pairwise": 0, + "f1": 0.9097510373443983 + }, + "pysbd": { + "recall": 0.603585657370518, + "precision": 0.9853658536585366, + "correct_pairwise": 0, + "f1": 0.7486102532427426 + }, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "bn": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.7547486033519553, + "precision": 0.8084979054458408, + "correct_pairwise": 0, + "f1": 0.7806992198786477 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 1.0, + "precision": 1.0, + "correct_pairwise": 1, + "f1": 1.0 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.00021367521367521368, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.0004272591326639607 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ca": { + "opus100": { + "punkt": null, + "spacy_dp": { + "recall": 0.8737316798196166, + "precision": 0.8722566122678672, + "correct_pairwise": 0, + "f1": 0.8729935229512813 + }, + "spacy_sent": { + "recall": 0.8449830890642616, + "precision": 0.876608187134503, + "correct_pairwise": 0, + "f1": 0.8605051664753157 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": { + "recall": 0.9981938591210114, + "precision": 0.9981938591210114, + "correct_pairwise": 0, + "f1": 0.9981938591210114 + }, + "spacy_sent": { + "recall": 0.950632149307646, + "precision": 0.9472105578884223, + "correct_pairwise": 0, + "f1": 0.9489182692307693 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": { + "recall": 0.009222222222222222, + "precision": 0.48823529411764705, + "correct_pairwise": 0, + "f1": 0.018102508178844054 + }, + "spacy_sent": { + "recall": 0.003, + "precision": 0.54, + "correct_pairwise": 0, + "f1": 0.0059668508287292815 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ceb": { + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "cs": { + "ersatz": { + "punkt": { + "recall": 0.9401159047005795, + "precision": 0.9952283571915473, + "correct_pairwise": 0, + "f1": 0.966887417218543 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8312942691564713, + "precision": 0.8345184227537169, + "correct_pairwise": 0, + "f1": 0.8329032258064516 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9401159047005795, + "precision": 0.9952283571915473, + "correct_pairwise": 0, + "f1": 0.966887417218543 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": { + "recall": 0.8364354201917654, + "precision": 0.899878640776699, + "correct_pairwise": 0, + "f1": 0.866997953814674 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8200789622109419, + "precision": 0.8774894387447194, + "correct_pairwise": 0, + "f1": 0.8478134110787171 + }, + "pysbd": null, + "ersatz": { + "recall": 0.8212069937958263, + "precision": 0.914572864321608, + "correct_pairwise": 0, + "f1": 0.8653789004457652 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.8298105355382762, + "precision": 0.962525406504065, + "correct_pairwise": 0, + "f1": 0.8912544845027349 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.7972839776585259, + "precision": 0.8701888596700932, + "correct_pairwise": 0, + "f1": 0.8321426530262331 + }, + "pysbd": null, + "ersatz": { + "recall": 0.8299200525681744, + "precision": 0.9673219300485065, + "correct_pairwise": 0, + "f1": 0.893368700265252 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.0036666666666666666, + "precision": 0.55, + "correct_pairwise": 0, + "f1": 0.0072847682119205285 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.004, + "precision": 0.4090909090909091, + "correct_pairwise": 0, + "f1": 0.007922535211267605 + }, + "pysbd": null, + "ersatz": { + "recall": 0.0012222222222222222, + "precision": 0.3055555555555556, + "correct_pairwise": 0, + "f1": 0.002434705621956618 + } + }, + "ted2020-corrupted-social-media": {} + }, + "cy": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {} + }, + "da": { + "opus100": { + "punkt": { + "recall": 0.8891377379619261, + "precision": 0.9089868345735547, + "correct_pairwise": 0, + "f1": 0.8989527313897536 + }, + "spacy_dp": { + "recall": 0.9316909294512878, + "precision": 0.873490813648294, + "correct_pairwise": 0, + "f1": 0.9016526686534814 + }, + "spacy_sent": { + "recall": 0.851063829787234, + "precision": 0.9010077059869591, + "correct_pairwise": 0, + "f1": 0.8753239274402533 + }, + "pysbd": { + "recall": 0.574468085106383, + "precision": 0.9007901668129938, + "correct_pairwise": 0, + "f1": 0.7015384615384617 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.9114173228346457, + "precision": 0.9788583509513742, + "correct_pairwise": 0, + "f1": 0.943934760448522 + }, + "spacy_dp": { + "recall": 0.9488188976377953, + "precision": 0.9323017408123792, + "correct_pairwise": 0, + "f1": 0.9404878048780488 + }, + "spacy_sent": { + "recall": 0.8208661417322834, + "precision": 0.8872340425531915, + "correct_pairwise": 0, + "f1": 0.852760736196319 + }, + "pysbd": { + "recall": 0.5885826771653543, + "precision": 0.9462025316455697, + "correct_pairwise": 0, + "f1": 0.7257281553398058 + }, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_dp": { + "recall": 0.010222222222222223, + "precision": 0.4125560538116592, + "correct_pairwise": 0, + "f1": 0.0199501246882793 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "de": { + "ersatz": { + "punkt": { + "recall": 0.9168552036199095, + "precision": 0.9920440636474909, + "correct_pairwise": 0, + "f1": 0.9529688418577308 + }, + "spacy_dp": { + "recall": 0.9824660633484162, + "precision": 0.9440217391304347, + "correct_pairwise": 0, + "f1": 0.9628603104212861 + }, + "spacy_sent": { + "recall": 0.8585972850678733, + "precision": 0.9324324324324325, + "correct_pairwise": 0, + "f1": 0.8939929328621907 + }, + "pysbd": { + "recall": 0.9157239819004525, + "precision": 0.9932515337423313, + "correct_pairwise": 0, + "f1": 0.9529134785167744 + }, + "ersatz": { + "recall": 0.9145927601809954, + "precision": 0.9975323874151758, + "correct_pairwise": 0, + "f1": 0.9542637946296841 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": { + "recall": 0.6696009389671361, + "precision": 0.8086463501063076, + "correct_pairwise": 0, + "f1": 0.7325842696629213 + }, + "spacy_dp": { + "recall": 0.8057511737089202, + "precision": 0.6847880299251871, + "correct_pairwise": 0, + "f1": 0.7403612833647883 + }, + "spacy_sent": { + "recall": 0.6220657276995305, + "precision": 0.790454884414616, + "correct_pairwise": 0, + "f1": 0.6962233169129721 + }, + "pysbd": { + "recall": 0.636150234741784, + "precision": 0.6962106615285806, + "correct_pairwise": 0, + "f1": 0.6648267402637228 + }, + "ersatz": { + "recall": 0.6555164319248826, + "precision": 0.8255728011825573, + "correct_pairwise": 0, + "f1": 0.7307818122342166 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.8703071672354948, + "precision": 0.9896507115135834, + "correct_pairwise": 0, + "f1": 0.9261501210653753 + }, + "spacy_dp": { + "recall": 0.9601820250284414, + "precision": 0.9734717416378316, + "correct_pairwise": 0, + "f1": 0.9667812142038946 + }, + "spacy_sent": { + "recall": 0.8373151308304891, + "precision": 0.9671484888304862, + "correct_pairwise": 0, + "f1": 0.8975609756097561 + }, + "pysbd": { + "recall": 0.70193401592719, + "precision": 0.9292168674698795, + "correct_pairwise": 0, + "f1": 0.7997407647440051 + }, + "ersatz": { + "recall": 0.8680318543799772, + "precision": 0.9883419689119171, + "correct_pairwise": 0, + "f1": 0.9242883101150817 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.0006666666666666666, + "precision": 0.10526315789473684, + "correct_pairwise": 0, + "f1": 0.001324942033786022 + }, + "spacy_dp": { + "recall": 0.08811111111111111, + "precision": 0.40939597315436244, + "correct_pairwise": 0, + "f1": 0.14501234342141356 + }, + "spacy_sent": { + "recall": 0.0006666666666666666, + "precision": 0.10526315789473684, + "correct_pairwise": 0, + "f1": 0.001324942033786022 + }, + "pysbd": { + "recall": 0.0008888888888888889, + "precision": 0.09876543209876543, + "correct_pairwise": 0, + "f1": 0.0017619204933377384 + }, + "ersatz": { + "recall": 0.00022222222222222223, + "precision": 0.09090909090909091, + "correct_pairwise": 0, + "f1": 0.0004433606739082244 + } + }, + "ted2020-corrupted-social-media": {}, + "legal-CD_jug": {}, + "legal-CD_jug-corrupted-asr": {}, + "legal-CD_jug-corrupted-social-media": {}, + "legal-gesCode": {}, + "legal-gesCode-corrupted-asr": {}, + "legal-gesCode-corrupted-social-media": {}, + "legal-all-laws": { + "punkt": { + "recall": 0.6110802377614015, + "precision": 0.9146295680820066, + "correct_pairwise": 0.0, + "f1": 0.7326309653877026 + }, + "spacy_dp": { + "recall": 0.6788502911002993, + "precision": 0.6273689120448086, + "correct_pairwise": 0.0, + "f1": 0.6519638733969589 + }, + "spacy_sent": { + "recall": 0.267304146425098, + "precision": 0.39922980545596315, + "correct_pairwise": 0.0, + "f1": 0.3201233080271882 + }, + "pysbd": { + "recall": 0.6146930298226795, + "precision": 0.8256068776902111, + "correct_pairwise": 0.0, + "f1": 0.7043076801884866 + }, + "ersatz": { + "recall": 0.6028669505062375, + "precision": 0.7946143756965077, + "correct_pairwise": 0.0, + "f1": 0.6853508499666288 + } + }, + "legal-all-laws-corrupted-asr": { + "punkt": { + "recall": 0.00018426386585590566, + "precision": 0.0196078431372549, + "correct_pairwise": 0.0, + "f1": 0.0003650967506389193 + }, + "spacy_dp": { + "recall": 0.058576506723190515, + "precision": 0.18125071864334666, + "correct_pairwise": 0.0, + "f1": 0.0880252012943759 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + } + }, + "legal-all-laws-corrupted-social-media": {}, + "legal-all-judgements": { + "punkt": { + "recall": 0.627900773974595, + "precision": 0.6893184010838761, + "correct_pairwise": 0.0, + "f1": 0.6509144938429862 + }, + "spacy_dp": { + "recall": 0.7036834038013832, + "precision": 0.6735047920789652, + "correct_pairwise": 0.0, + "f1": 0.6820980107341197 + }, + "spacy_sent": { + "recall": 0.602922500985393, + "precision": 0.7701011850447579, + "correct_pairwise": 0.0, + "f1": 0.6686784144259688 + }, + "pysbd": { + "recall": 0.6230537322185206, + "precision": 0.7487892689720005, + "correct_pairwise": 0.0, + "f1": 0.6760849004221184 + }, + "ersatz": { + "recall": 0.5788758491535569, + "precision": 0.6284051197627135, + "correct_pairwise": 0.0, + "f1": 0.5976164549262956 + } + }, + "legal-all-judgements-corrupted-asr": { + "punkt": { + "recall": 0.027855769500135616, + "precision": 0.3167124979281545, + "correct_pairwise": 0.0, + "f1": 0.048983110895547514 + }, + "spacy_dp": { + "recall": 0.10855562902453109, + "precision": 0.18590738414484761, + "correct_pairwise": 0.0, + "f1": 0.1308178794774271 + }, + "spacy_sent": { + "recall": 0.0223186825971055, + "precision": 0.18285216826225367, + "correct_pairwise": 0.0, + "f1": 0.03767008998327682 + }, + "pysbd": { + "recall": 0.0025940810341104677, + "precision": 0.00821570209047523, + "correct_pairwise": 0.0, + "f1": 0.003934235710191861 + }, + "ersatz": { + "recall": 0.02305858295540053, + "precision": 0.27766884726614854, + "correct_pairwise": 0.0, + "f1": 0.04074564490893818 + } + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "el": { + "opus100": { + "punkt": { + "recall": 0.7839195979899497, + "precision": 0.924292297564187, + "correct_pairwise": 0, + "f1": 0.8483383685800605 + }, + "spacy_dp": { + "recall": 0.9302065884980458, + "precision": 0.8918629550321199, + "correct_pairwise": 0, + "f1": 0.9106313200327959 + }, + "spacy_sent": { + "recall": 0.7453936348408711, + "precision": 0.9081632653061225, + "correct_pairwise": 0, + "f1": 0.8187672493100276 + }, + "pysbd": { + "recall": 0.4768285873813512, + "precision": 0.9133689839572192, + "correct_pairwise": 0, + "f1": 0.6265590608950844 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.8829268292682927, + "precision": 0.9757412398921833, + "correct_pairwise": 0, + "f1": 0.9270166453265044 + }, + "spacy_dp": { + "recall": 0.9341463414634147, + "precision": 0.945679012345679, + "correct_pairwise": 0, + "f1": 0.939877300613497 + }, + "spacy_sent": { + "recall": 0.848780487804878, + "precision": 0.9586776859504132, + "correct_pairwise": 0, + "f1": 0.9003880983182406 + }, + "pysbd": { + "recall": 0.8926829268292683, + "precision": 0.9289340101522843, + "correct_pairwise": 0, + "f1": 0.9104477611940299 + }, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.0011111111111111111, + "precision": 0.1694915254237288, + "correct_pairwise": 0, + "f1": 0.002207749199690915 + }, + "spacy_dp": { + "recall": 0.004666666666666667, + "precision": 0.21, + "correct_pairwise": 0, + "f1": 0.009130434782608695 + }, + "spacy_sent": { + "recall": 0.0007777777777777777, + "precision": 0.125, + "correct_pairwise": 0, + "f1": 0.0015459363957597175 + }, + "pysbd": { + "recall": 0.0017777777777777779, + "precision": 0.14814814814814814, + "correct_pairwise": 0, + "f1": 0.0035133948177426444 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "en": { + "ersatz": { + "punkt": { + "recall": 0.9675511970002885, + "precision": 0.9866176470588235, + "correct_pairwise": 0, + "f1": 0.9769914081840687 + }, + "spacy_dp": { + "recall": 0.9793769829824055, + "precision": 0.9899416909620992, + "correct_pairwise": 0, + "f1": 0.984630998985066 + }, + "spacy_sent": { + "recall": 0.8807326218632824, + "precision": 0.9054114158636026, + "correct_pairwise": 0, + "f1": 0.8929015278894656 + }, + "pysbd": { + "recall": 0.6097490625901356, + "precision": 0.9393468118195957, + "correct_pairwise": 0, + "f1": 0.7394840402273722 + }, + "ersatz": { + "recall": 0.9766368618402077, + "precision": 0.9725692948441763, + "correct_pairwise": 0, + "f1": 0.9745988342807801 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": { + "recall": 0.8457655636567583, + "precision": 0.9223241590214067, + "correct_pairwise": 0, + "f1": 0.8823873610298419 + }, + "spacy_dp": { + "recall": 0.8676388109927089, + "precision": 0.9137625516834023, + "correct_pairwise": 0, + "f1": 0.8901035673187572 + }, + "spacy_sent": { + "recall": 0.8210880538418396, + "precision": 0.911014312383323, + "correct_pairwise": 0, + "f1": 0.863716814159292 + }, + "pysbd": { + "recall": 0.44195176668536174, + "precision": 0.9162790697674419, + "correct_pairwise": 0, + "f1": 0.596292092319334 + }, + "ersatz": { + "recall": 0.8272574312955693, + "precision": 0.9300126103404792, + "correct_pairwise": 0, + "f1": 0.875630750964678 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.859026369168357, + "precision": 0.9625, + "correct_pairwise": 0, + "f1": 0.9078242229367631 + }, + "spacy_dp": { + "recall": 0.8762677484787018, + "precision": 0.9536423841059603, + "correct_pairwise": 0, + "f1": 0.9133192389006342 + }, + "spacy_sent": { + "recall": 0.8438133874239351, + "precision": 0.9369369369369369, + "correct_pairwise": 0, + "f1": 0.887940234791889 + }, + "pysbd": { + "recall": 0.6156186612576064, + "precision": 0.9696485623003195, + "correct_pairwise": 0, + "f1": 0.7531017369727048 + }, + "ersatz": { + "recall": 0.8245436105476673, + "precision": 0.9690107270560191, + "correct_pairwise": 0, + "f1": 0.890958904109589 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.00011111111111111112, + "precision": 0.06666666666666667, + "correct_pairwise": 0, + "f1": 0.0002218524681087077 + }, + "spacy_dp": { + "recall": 0.08511111111111111, + "precision": 0.4516509433962264, + "correct_pairwise": 0, + "f1": 0.14323111443530293 + }, + "spacy_sent": { + "recall": 0.0005555555555555556, + "precision": 0.09615384615384616, + "correct_pairwise": 0, + "f1": 0.0011047282368537338 + }, + "pysbd": { + "recall": 0.0011111111111111111, + "precision": 0.18181818181818182, + "correct_pairwise": 0, + "f1": 0.0022087244616234123 + }, + "ersatz": { + "recall": 0.0003333333333333333, + "precision": 0.21428571428571427, + "correct_pairwise": 0, + "f1": 0.0006656312402928777 + } + }, + "ted2020-corrupted-social-media": {}, + "legal-CD_scotus": {}, + "legal-CD_scotus-corrupted-asr": {}, + "legal-CD_scotus-corrupted-social-media": {}, + "legal-CD_cyber_crime": {}, + "legal-CD_cyber_crime-corrupted-asr": {}, + "legal-CD_cyber_crime-corrupted-social-media": {}, + "legal-CD_intellectual_property": {}, + "legal-CD_intellectual_property-corrupted-asr": {}, + "legal-CD_intellectual_property-corrupted-social-media": {}, + "legal-CD_bva": {}, + "legal-CD_bva-corrupted-asr": {}, + "legal-CD_bva-corrupted-social-media": {}, + "legal-all-judgements": { + "punkt": { + "recall": 0.8055046203925332, + "precision": 0.7339993770133266, + "correct_pairwise": 0.0, + "f1": 0.7629657539230765 + }, + "spacy_dp": { + "recall": 0.8379297511217254, + "precision": 0.8564778109384532, + "correct_pairwise": 0.0, + "f1": 0.8451672604142533 + }, + "spacy_sent": { + "recall": 0.7401792198228426, + "precision": 0.7129276046042443, + "correct_pairwise": 0.0, + "f1": 0.7232017535574135 + }, + "pysbd": { + "recall": 0.7359549648236674, + "precision": 0.7762481827879161, + "correct_pairwise": 0.0, + "f1": 0.7502585787016597 + }, + "ersatz": { + "recall": 0.769306152555419, + "precision": 0.827642837776469, + "correct_pairwise": 0.0, + "f1": 0.7951781690515791 + } + }, + "legal-all-judgements-corrupted-asr": { + "punkt": { + "recall": 0.0012041598016787542, + "precision": 0.013164893617021277, + "correct_pairwise": 0.0, + "f1": 0.0021960257759280196 + }, + "spacy_dp": { + "recall": 0.013395441681692724, + "precision": 0.14265375321412518, + "correct_pairwise": 0.0, + "f1": 0.02382068481951557 + }, + "spacy_sent": { + "recall": 0.0009610581756333816, + "precision": 0.0027572168763878606, + "correct_pairwise": 0.0, + "f1": 0.0014222427476737823 + }, + "pysbd": { + "recall": 0.009090947857824015, + "precision": 0.03816229084940208, + "correct_pairwise": 0.0, + "f1": 0.013201148688975345 + }, + "ersatz": { + "recall": 0.0032007161304701496, + "precision": 0.024592699011303662, + "correct_pairwise": 0.0, + "f1": 0.005565477357656156 + } + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "eo": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "es": { + "ersatz": { + "punkt": { + "recall": 0.9452303228146536, + "precision": 0.9845107669059312, + "correct_pairwise": 0, + "f1": 0.9644707623982236 + }, + "spacy_dp": { + "recall": 0.9394269133115706, + "precision": 0.9896828429499427, + "correct_pairwise": 0, + "f1": 0.9639002605135839 + }, + "spacy_sent": { + "recall": 0.8277112803772216, + "precision": 0.8604826546003017, + "correct_pairwise": 0, + "f1": 0.8437788870401183 + }, + "pysbd": { + "recall": 0.774392455567646, + "precision": 0.9226447709593777, + "correct_pairwise": 0, + "f1": 0.8420429895484126 + }, + "ersatz": { + "recall": 0.9463184620964817, + "precision": 0.9863894139886579, + "correct_pairwise": 0, + "f1": 0.965938541281007 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": { + "recall": 0.8781583380123527, + "precision": 0.9194591416813639, + "correct_pairwise": 0, + "f1": 0.8983342906375646 + }, + "spacy_dp": { + "recall": 0.8427849522740034, + "precision": 0.9214241866175568, + "correct_pairwise": 0, + "f1": 0.8803519061583577 + }, + "spacy_sent": { + "recall": 0.7478944413250983, + "precision": 0.7980826842420611, + "correct_pairwise": 0, + "f1": 0.7721739130434782 + }, + "pysbd": { + "recall": 0.5373385738349242, + "precision": 0.9114285714285715, + "correct_pairwise": 0, + "f1": 0.6760861886259274 + }, + "ersatz": { + "recall": 0.8725435148792813, + "precision": 0.9283154121863799, + "correct_pairwise": 0, + "f1": 0.8995658465991317 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.9877260981912145, + "precision": 0.9813863928112966, + "correct_pairwise": 0, + "f1": 0.9845460399227303 + }, + "spacy_dp": { + "recall": 0.9909560723514211, + "precision": 0.9903163331181407, + "correct_pairwise": 0, + "f1": 0.9906360994510817 + }, + "spacy_sent": { + "recall": 0.8940568475452196, + "precision": 0.8826530612244898, + "correct_pairwise": 0, + "f1": 0.8883183568677792 + }, + "pysbd": { + "recall": 0.3029715762273902, + "precision": 0.975051975051975, + "correct_pairwise": 0, + "f1": 0.4622966978807294 + }, + "ersatz": { + "recall": 0.958656330749354, + "precision": 0.991315965263861, + "correct_pairwise": 0, + "f1": 0.9747126436781608 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.0022222222222222222, + "precision": 0.14925373134328357, + "correct_pairwise": 0, + "f1": 0.004379242391066346 + }, + "spacy_dp": { + "recall": 0.0071111111111111115, + "precision": 0.25196850393700787, + "correct_pairwise": 0, + "f1": 0.01383185649448887 + }, + "spacy_sent": { + "recall": 0.0044444444444444444, + "precision": 0.1941747572815534, + "correct_pairwise": 0, + "f1": 0.008689984792526613 + }, + "pysbd": { + "recall": 0.002111111111111111, + "precision": 0.19, + "correct_pairwise": 0, + "f1": 0.004175824175824175 + }, + "ersatz": { + "recall": 0.0033333333333333335, + "precision": 0.19480519480519481, + "correct_pairwise": 0, + "f1": 0.006554511688879179 + } + }, + "ted2020-corrupted-social-media": {}, + "legal-CD_wipolex": {}, + "legal-CD_wipolex-corrupted-asr": {}, + "legal-CD_wipolex-corrupted-social-media": {}, + "legal-CD_multi_legal": {}, + "legal-CD_multi_legal-corrupted-asr": {}, + "legal-CD_multi_legal-corrupted-social-media": {}, + "legal-CriminalCode": {}, + "legal-CriminalCode-corrupted-asr": {}, + "legal-CriminalCode-corrupted-social-media": {}, + "legal-CivilCode": {}, + "legal-CivilCode-corrupted-asr": {}, + "legal-CivilCode-corrupted-social-media": {}, + "legal-constitution": {}, + "legal-constitution-corrupted-asr": {}, + "legal-constitution-corrupted-social-media": {}, + "legal-all-laws": { + "punkt": { + "recall": 0.8183417841101599, + "precision": 0.9616453757804586, + "correct_pairwise": 0.26229508196721313, + "f1": 0.8768659017940752 + }, + "spacy_dp": { + "recall": 0.8194919897381303, + "precision": 0.9520293457123263, + "correct_pairwise": 0.25136612021857924, + "f1": 0.8734054455324901 + }, + "spacy_sent": { + "recall": 0.816566716755442, + "precision": 0.9537084192126035, + "correct_pairwise": 0.26229508196721313, + "f1": 0.8726965114993499 + }, + "pysbd": { + "recall": 0.6977825428023867, + "precision": 0.9572477185610584, + "correct_pairwise": 0.18032786885245902, + "f1": 0.7967651011412472 + }, + "ersatz": { + "recall": 0.7106524938567865, + "precision": 0.9980359920601787, + "correct_pairwise": 0.18579234972677597, + "f1": 0.8185103386711878 + } + }, + "legal-all-laws-corrupted-asr": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + }, + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + } + }, + "legal-all-laws-corrupted-social-media": {}, + "legal-all-judgements": { + "punkt": { + "recall": 0.5622868252714968, + "precision": 0.8231222380083449, + "correct_pairwise": 0.0, + "f1": 0.6524177796136126 + }, + "spacy_dp": { + "recall": 0.5599282781152487, + "precision": 0.8181914883777187, + "correct_pairwise": 0.0, + "f1": 0.6491552830692907 + }, + "spacy_sent": { + "recall": 0.5565086359445321, + "precision": 0.8612893843364282, + "correct_pairwise": 0.0, + "f1": 0.6598815530828445 + }, + "pysbd": { + "recall": 0.49952265708875115, + "precision": 0.8123520088885258, + "correct_pairwise": 0.0, + "f1": 0.6082012536567349 + }, + "ersatz": { + "recall": 0.5182087296752135, + "precision": 0.8560149051844144, + "correct_pairwise": 0.0, + "f1": 0.635946902166459 + } + }, + "legal-all-judgements-corrupted-asr": { + "punkt": { + "recall": 0.023824305253968198, + "precision": 0.13637174791020948, + "correct_pairwise": 0.0, + "f1": 0.038015263765051426 + }, + "spacy_dp": { + "recall": 0.029936473259667203, + "precision": 0.1318896079765645, + "correct_pairwise": 0.0, + "f1": 0.045561793956961125 + }, + "spacy_sent": { + "recall": 0.02577790720757015, + "precision": 0.1401931401931402, + "correct_pairwise": 0.0, + "f1": 0.04002494602346138 + }, + "pysbd": { + "recall": 0.021572978659242036, + "precision": 0.2330891330891331, + "correct_pairwise": 0.0, + "f1": 0.03800104214967322 + }, + "ersatz": { + "recall": 0.02662282544006751, + "precision": 0.32048229548229545, + "correct_pairwise": 0.0, + "f1": 0.046867959869149656 + } + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "et": { + "ersatz": { + "punkt": { + "recall": 0.9641873278236914, + "precision": 0.9864712514092446, + "correct_pairwise": 0, + "f1": 0.9752020061298412 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8545454545454545, + "precision": 0.8065522620904836, + "correct_pairwise": 0, + "f1": 0.8298555377207063 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9652892561983472, + "precision": 0.9948892674616695, + "correct_pairwise": 0, + "f1": 0.9798657718120806 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": { + "recall": 0.8416619876473891, + "precision": 0.9134673979280926, + "correct_pairwise": 0, + "f1": 0.8760958503798948 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8225715889949466, + "precision": 0.8648170011806375, + "correct_pairwise": 0, + "f1": 0.8431654676258992 + }, + "pysbd": null, + "ersatz": { + "recall": 0.8304323413812464, + "precision": 0.9232209737827716, + "correct_pairwise": 0, + "f1": 0.8743718592964824 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.9118257261410788, + "precision": 0.9617067833698031, + "correct_pairwise": 0, + "f1": 0.9361022364217253 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8623789764868603, + "precision": 0.872027972027972, + "correct_pairwise": 0, + "f1": 0.8671766342141863 + }, + "pysbd": null, + "ersatz": { + "recall": 0.8924619640387276, + "precision": 0.9688438438438438, + "correct_pairwise": 0, + "f1": 0.9290856731461484 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.00011111111111111112, + "precision": 0.02564102564102564, + "correct_pairwise": 0, + "f1": 0.00022126341409447952 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.00011111111111111112, + "precision": 0.02564102564102564, + "correct_pairwise": 0, + "f1": 0.00022126341409447952 + }, + "pysbd": null, + "ersatz": { + "recall": 0.00044444444444444447, + "precision": 0.13793103448275862, + "correct_pairwise": 0, + "f1": 0.0008860338907963231 + } + }, + "ted2020-corrupted-social-media": {}, + "short-sequences": { + "punkt": { + "recall": 0.8258805061501456, + "precision": 0.9706567242281533, + "correct_pairwise": 0.46798029556650245, + "f1": 0.872666765363673 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8186425837579585, + "precision": 0.9666904250648093, + "correct_pairwise": 0.458128078817734, + "f1": 0.8647540599924126 + }, + "pysbd": null, + "ersatz": { + "recall": 0.8256890582985992, + "precision": 0.9782680783912313, + "correct_pairwise": 0.5073891625615764, + "f1": 0.878697441176868 + } + }, + "short-sequences-corrupted-asr": { + "punkt": { + "recall": 0.2777854577796246, + "precision": 0.9926108374384236, + "correct_pairwise": 0.0, + "f1": 0.4155368995950679 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.2777854577796246, + "precision": 0.9926108374384236, + "correct_pairwise": 0.0, + "f1": 0.4155368995950679 + }, + "pysbd": null, + "ersatz": { + "recall": 0.28143826796601007, + "precision": 0.9817733990147783, + "correct_pairwise": 0.0, + "f1": 0.4183411748001728 + } + }, + "short-sequences-corrupted-social-media": {} + }, + "eu": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.7462099943851769, + "precision": 0.8400758533501896, + "correct_pairwise": 0, + "f1": 0.7903657448706513 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9122915379864114, + "precision": 0.9371827411167513, + "correct_pairwise": 0, + "f1": 0.9245696400625979 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "fa": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.4148106904231626, + "precision": 0.6616341030195382, + "correct_pairwise": 0, + "f1": 0.5099247091033539 + }, + "pysbd": { + "recall": 0.3123608017817372, + "precision": 0.6084598698481561, + "correct_pairwise": 0, + "f1": 0.41280353200883 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9969442322383499, + "precision": 0.9954233409610984, + "correct_pairwise": 0, + "f1": 0.9961832061068703 + }, + "pysbd": { + "recall": 0.9992360580595875, + "precision": 0.9768483943241225, + "correct_pairwise": 0, + "f1": 0.987915407854985 + }, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "fi": { + "ersatz": { + "punkt": { + "recall": 0.9253897550111359, + "precision": 0.9946140035906643, + "correct_pairwise": 0, + "f1": 0.9587539659648111 + }, + "spacy_dp": { + "recall": 0.9465478841870824, + "precision": 0.9609949123798757, + "correct_pairwise": 0, + "f1": 0.9537166900420758 + }, + "spacy_sent": { + "recall": 0.9192650334075724, + "precision": 0.9769230769230769, + "correct_pairwise": 0, + "f1": 0.9472174411933447 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9253897550111359, + "precision": 0.9975990396158463, + "correct_pairwise": 0, + "f1": 0.9601386481802425 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": { + "recall": 0.9329608938547486, + "precision": 0.92880978865406, + "correct_pairwise": 0, + "f1": 0.9308807134894092 + }, + "spacy_dp": { + "recall": 0.9530726256983241, + "precision": 0.8913270637408568, + "correct_pairwise": 0, + "f1": 0.9211663066954643 + }, + "spacy_sent": { + "recall": 0.912290502793296, + "precision": 0.9077265147304058, + "correct_pairwise": 0, + "f1": 0.910002786291446 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9083798882681564, + "precision": 0.9470005824111823, + "correct_pairwise": 0, + "f1": 0.9272882805816938 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.8863473909935669, + "precision": 0.9695074276778733, + "correct_pairwise": 0, + "f1": 0.9260642270351007 + }, + "spacy_dp": { + "recall": 0.9442458899213724, + "precision": 0.9531024531024531, + "correct_pairwise": 0, + "f1": 0.9486535008976661 + }, + "spacy_sent": { + "recall": 0.8434596140100071, + "precision": 0.899390243902439, + "correct_pairwise": 0, + "f1": 0.8705274806344523 + }, + "pysbd": null, + "ersatz": { + "recall": 0.8863473909935669, + "precision": 0.974076983503535, + "correct_pairwise": 0, + "f1": 0.9281437125748503 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_dp": { + "recall": 0.010444444444444444, + "precision": 0.39662447257383965, + "correct_pairwise": 0, + "f1": 0.020352928439969685 + }, + "spacy_sent": { + "recall": 0.00011111111111111112, + "precision": 0.0625, + "correct_pairwise": 0, + "f1": 0.00022182786157941436 + }, + "pysbd": null, + "ersatz": { + "recall": 0.0003333333333333333, + "precision": 0.15, + "correct_pairwise": 0, + "f1": 0.0006651884700665188 + } + }, + "ted2020-corrupted-social-media": {} + }, + "fr": { + "ersatz": { + "punkt": { + "recall": 0.9303415941058272, + "precision": 0.9921428571428571, + "correct_pairwise": 0, + "f1": 0.9602488765986864 + }, + "spacy_dp": { + "recall": 0.9048894842598795, + "precision": 0.8158212560386473, + "correct_pairwise": 0, + "f1": 0.8580501746586218 + }, + "spacy_sent": { + "recall": 0.8774279973208305, + "precision": 0.9323843416370107, + "correct_pairwise": 0, + "f1": 0.904071773636991 + }, + "pysbd": { + "recall": 0.927662424648359, + "precision": 0.99568655643422, + "correct_pairwise": 0, + "f1": 0.9604715672676838 + }, + "ersatz": { + "recall": 0.9296718017414601, + "precision": 0.9978432782171099, + "correct_pairwise": 0, + "f1": 0.9625520110957003 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": { + "recall": 0.8359639233370914, + "precision": 0.88116458704694, + "correct_pairwise": 0, + "f1": 0.857969337575933 + }, + "spacy_dp": { + "recall": 0.8979706877113867, + "precision": 0.7909632571996028, + "correct_pairwise": 0, + "f1": 0.8410770855332629 + }, + "spacy_sent": { + "recall": 0.8167981961668546, + "precision": 0.8702702702702703, + "correct_pairwise": 0, + "f1": 0.8426868275661529 + }, + "pysbd": { + "recall": 0.7576099210822999, + "precision": 0.8676565526145901, + "correct_pairwise": 0, + "f1": 0.8089076136021666 + }, + "ersatz": { + "recall": 0.8201803833145435, + "precision": 0.9071072319201995, + "correct_pairwise": 0, + "f1": 0.8614564831261101 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.9545454545454546, + "precision": 0.9861878453038674, + "correct_pairwise": 0, + "f1": 0.970108695652174 + }, + "spacy_dp": { + "recall": 0.9705882352941176, + "precision": 0.8663484486873508, + "correct_pairwise": 0, + "f1": 0.9155107187894073 + }, + "spacy_sent": { + "recall": 0.9278074866310161, + "precision": 0.9747191011235955, + "correct_pairwise": 0, + "f1": 0.9506849315068494 + }, + "pysbd": { + "recall": 0.45187165775401067, + "precision": 0.9941176470588236, + "correct_pairwise": 0, + "f1": 0.6213235294117646 + }, + "ersatz": { + "recall": 0.9572192513368984, + "precision": 0.988950276243094, + "correct_pairwise": 0, + "f1": 0.9728260869565218 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.00044444444444444447, + "precision": 0.1, + "correct_pairwise": 0, + "f1": 0.0008849557522123894 + }, + "spacy_dp": { + "recall": 0.007, + "precision": 0.14482758620689656, + "correct_pairwise": 0, + "f1": 0.013354531001589825 + }, + "spacy_sent": { + "recall": 0.00044444444444444447, + "precision": 0.09090909090909091, + "correct_pairwise": 0, + "f1": 0.0008845643520566122 + }, + "pysbd": { + "recall": 0.0017777777777777779, + "precision": 0.2711864406779661, + "correct_pairwise": 0, + "f1": 0.0035323987195054647 + }, + "ersatz": { + "recall": 0.0006666666666666666, + "precision": 0.1875, + "correct_pairwise": 0, + "f1": 0.001328609388839681 + } + }, + "ted2020-corrupted-social-media": {}, + "legal-CD_swiss_judgement": {}, + "legal-CD_swiss_judgement-corrupted-asr": {}, + "legal-CD_swiss_judgement-corrupted-social-media": {}, + "legal-CriminalCode": {}, + "legal-CriminalCode-corrupted-asr": {}, + "legal-CriminalCode-corrupted-social-media": {}, + "legal-CivilCode": {}, + "legal-CivilCode-corrupted-asr": {}, + "legal-CivilCode-corrupted-social-media": {}, + "legal-constitution": {}, + "legal-constitution-corrupted-asr": {}, + "legal-constitution-corrupted-social-media": {}, + "legal-all-laws": { + "punkt": { + "recall": 0.4286560090522883, + "precision": 0.6772163067506205, + "correct_pairwise": 0.02178649237472767, + "f1": 0.5149316257132532 + }, + "spacy_dp": { + "recall": 0.7586175095768077, + "precision": 0.7631145115147238, + "correct_pairwise": 0.3899782135076253, + "f1": 0.7430228798374218 + }, + "spacy_sent": { + "recall": 0.42801837700895395, + "precision": 0.6855055349948509, + "correct_pairwise": 0.02178649237472767, + "f1": 0.5176107821916892 + }, + "pysbd": { + "recall": 0.415886861644407, + "precision": 0.6727880933349734, + "correct_pairwise": 0.008714596949891068, + "f1": 0.5048081279186801 + }, + "ersatz": { + "recall": 0.4266965814065862, + "precision": 0.6855614663019205, + "correct_pairwise": 0.02178649237472767, + "f1": 0.5168431057956944 + } + }, + "legal-all-laws-corrupted-asr": { + "punkt": { + "recall": 4.841442749939482e-05, + "precision": 0.0007262164124909223, + "correct_pairwise": 0.0, + "f1": 9.07770515613653e-05 + }, + "spacy_dp": { + "recall": 0.03911850664702132, + "precision": 0.07204904753924361, + "correct_pairwise": 0.023965141612200435, + "f1": 0.0443734159674756 + }, + "spacy_sent": { + "recall": 4.841442749939482e-05, + "precision": 0.002178649237472767, + "correct_pairwise": 0.0, + "f1": 9.472387989012031e-05 + }, + "pysbd": { + "recall": 0.0010145980023786218, + "precision": 0.0037672476397966593, + "correct_pairwise": 0.0, + "f1": 0.0015427991206537917 + }, + "ersatz": { + "recall": 0.0008714596949891067, + "precision": 0.0034858387799564274, + "correct_pairwise": 0.0, + "f1": 0.0013507625272331154 + } + }, + "legal-all-laws-corrupted-social-media": {}, + "legal-all-judgements": { + "punkt": { + "recall": 0.7788523732456694, + "precision": 0.7662984397159626, + "correct_pairwise": 0.0, + "f1": 0.7564528110312992 + }, + "spacy_dp": { + "recall": 0.8531669548014641, + "precision": 0.638083299444851, + "correct_pairwise": 0.0, + "f1": 0.7157576348237682 + }, + "spacy_sent": { + "recall": 0.7510145206884017, + "precision": 0.762138958425231, + "correct_pairwise": 0.0, + "f1": 0.7392909697578267 + }, + "pysbd": { + "recall": 0.7670795026391336, + "precision": 0.7242743413075078, + "correct_pairwise": 0.0, + "f1": 0.7421646707759868 + }, + "ersatz": { + "recall": 0.7740569375888892, + "precision": 0.8753218587286918, + "correct_pairwise": 0.0, + "f1": 0.8152240875562068 + } + }, + "legal-all-judgements-corrupted-asr": { + "punkt": { + "recall": 0.00981104937784479, + "precision": 0.03607997401807608, + "correct_pairwise": 0.0, + "f1": 0.013580901736371302 + }, + "spacy_dp": { + "recall": 0.055750786744406, + "precision": 0.17668364386299562, + "correct_pairwise": 0.0, + "f1": 0.07873273487699088 + }, + "spacy_sent": { + "recall": 0.00981104937784479, + "precision": 0.03570618263528267, + "correct_pairwise": 0.0, + "f1": 0.01364315242538612 + }, + "pysbd": { + "recall": 0.17364082598952116, + "precision": 0.3303464591069173, + "correct_pairwise": 0.0, + "f1": 0.21722915107457527 + }, + "ersatz": { + "recall": 0.0036846881274779017, + "precision": 0.04246386506922905, + "correct_pairwise": 0.0, + "f1": 0.006564483451710907 + } + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "fy": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {} + }, + "ga": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.4013452914798206, + "precision": 0.8453364817001181, + "correct_pairwise": 0, + "f1": 0.5442797415431395 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8431372549019608, + "precision": 0.8472906403940886, + "correct_pairwise": 0, + "f1": 0.8452088452088452 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "gd": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {} + }, + "gl": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "gu": { + "ersatz": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.017467248908296942, + "precision": 0.9411764705882353, + "correct_pairwise": 0, + "f1": 0.03429796355841372 + }, + "pysbd": null, + "ersatz": { + "recall": 0.8941048034934498, + "precision": 0.997563946406821, + "correct_pairwise": 0, + "f1": 0.9430051813471502 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.017826336975273145, + "precision": 0.45588235294117646, + "correct_pairwise": 0, + "f1": 0.03431101272827891 + }, + "pysbd": null, + "ersatz": { + "recall": 0.12478435882691202, + "precision": 0.6932907348242812, + "correct_pairwise": 0, + "f1": 0.2115009746588694 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": { + "recall": 0.003651172588119646, + "precision": 0.6046511627906976, + "correct_pairwise": 0, + "f1": 0.007258514796203239 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ha": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "he": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9131403118040089, + "precision": 0.9136490250696379, + "correct_pairwise": 0, + "f1": 0.9133945976051239 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8838526912181303, + "precision": 0.9968051118210862, + "correct_pairwise": 0, + "f1": 0.9369369369369368 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "hi": { + "ersatz": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9426807760141094, + "precision": 0.8457278481012658, + "correct_pairwise": 0, + "f1": 0.8915763135946623 + }, + "pysbd": { + "recall": 0.8258377425044092, + "precision": 0.9304520615996026, + "correct_pairwise": 0, + "f1": 0.8750291987853306 + }, + "ersatz": { + "recall": 0.9567901234567902, + "precision": 0.9796839729119639, + "correct_pairwise": 0, + "f1": 0.9681017175998217 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.4577702702702703, + "precision": 0.6457505957108817, + "correct_pairwise": 0, + "f1": 0.5357495881383856 + }, + "pysbd": { + "recall": 0.15822072072072071, + "precision": 0.42319277108433734, + "correct_pairwise": 0, + "f1": 0.23032786885245898 + }, + "ersatz": { + "recall": 0.4966216216216216, + "precision": 0.6961325966850829, + "correct_pairwise": 0, + "f1": 0.5796910943148208 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9927392739273927, + "precision": 0.9054786273329319, + "correct_pairwise": 0, + "f1": 0.947103274559194 + }, + "pysbd": { + "recall": 0.9953795379537954, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.9976844194508766 + }, + "ersatz": { + "recall": 0.9953795379537954, + "precision": 0.994067237969677, + "correct_pairwise": 0, + "f1": 0.9947229551451188 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.002, + "precision": 0.15384615384615385, + "correct_pairwise": 0, + "f1": 0.003948667324777887 + } + }, + "ted2020-corrupted-social-media": {} + }, + "hu": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9031897034135422, + "precision": 0.9165247018739353, + "correct_pairwise": 0, + "f1": 0.9098083427282976 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8985148514851485, + "precision": 0.8962962962962963, + "correct_pairwise": 0, + "f1": 0.8974042027194067 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.00011111111111111112, + "precision": 0.041666666666666664, + "correct_pairwise": 0, + "f1": 0.0002216312056737589 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "hy": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.008860759493670886, + "precision": 0.7, + "correct_pairwise": 0, + "f1": 0.017499999999999998 + }, + "pysbd": { + "recall": 0.4558544303797468, + "precision": 0.8117779656241195, + "correct_pairwise": 0, + "f1": 0.5838484142263654 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.8691588785046729, + "precision": 0.9957173447537473, + "correct_pairwise": 0, + "f1": 0.9281437125748503 + }, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.00022222222222222223, + "precision": 0.0625, + "correct_pairwise": 0, + "f1": 0.0004428697962798937 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "id": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8510517339397385, + "precision": 0.8985594237695078, + "correct_pairwise": 0, + "f1": 0.8741605839416059 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9422222222222222, + "precision": 0.9370165745856354, + "correct_pairwise": 0, + "f1": 0.939612188365651 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ig": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "is": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9335195530726257, + "precision": 0.9262749445676275, + "correct_pairwise": 0, + "f1": 0.9298831385642737 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9566903684550744, + "precision": 0.9164086687306502, + "correct_pairwise": 0, + "f1": 0.9361163820366857 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0063604240282685515, + "precision": 0.375, + "correct_pairwise": 0, + "f1": 0.012508686587908272 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "it": { + "opus100": { + "punkt": { + "recall": 0.8643497757847534, + "precision": 0.8851894374282434, + "correct_pairwise": 0, + "f1": 0.8746454906409529 + }, + "spacy_dp": { + "recall": 0.867152466367713, + "precision": 0.838937093275488, + "correct_pairwise": 0, + "f1": 0.8528114663726571 + }, + "spacy_sent": { + "recall": 0.8340807174887892, + "precision": 0.8706846108835576, + "correct_pairwise": 0, + "f1": 0.8519896936730604 + }, + "pysbd": { + "recall": 0.5902466367713004, + "precision": 0.865953947368421, + "correct_pairwise": 0, + "f1": 0.702 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.9445727482678984, + "precision": 0.960093896713615, + "correct_pairwise": 0, + "f1": 0.9522700814901048 + }, + "spacy_dp": { + "recall": 0.9953810623556582, + "precision": 0.9953810623556582, + "correct_pairwise": 0, + "f1": 0.9953810623556582 + }, + "spacy_sent": { + "recall": 0.9168591224018475, + "precision": 0.9474940334128878, + "correct_pairwise": 0, + "f1": 0.931924882629108 + }, + "pysbd": { + "recall": 0.5981524249422633, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.7485549132947976 + }, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.00022222222222222223, + "precision": 0.05263157894736842, + "correct_pairwise": 0, + "f1": 0.0004425757911042266 + }, + "spacy_dp": { + "recall": 0.001, + "precision": 0.1, + "correct_pairwise": 0, + "f1": 0.0019801980198019802 + }, + "spacy_sent": { + "recall": 0.00022222222222222223, + "precision": 0.041666666666666664, + "correct_pairwise": 0, + "f1": 0.00044208664898320074 + }, + "pysbd": { + "recall": 0.0012222222222222222, + "precision": 0.2682926829268293, + "correct_pairwise": 0, + "f1": 0.0024333591416878663 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {}, + "legal-CD_multi_legal": {}, + "legal-CD_multi_legal-corrupted-asr": {}, + "legal-CD_multi_legal-corrupted-social-media": {}, + "legal-CD_swiss_judgement": {}, + "legal-CD_swiss_judgement-corrupted-asr": {}, + "legal-CD_swiss_judgement-corrupted-social-media": {}, + "legal-CriminalCode": {}, + "legal-CriminalCode-corrupted-asr": {}, + "legal-CriminalCode-corrupted-social-media": {}, + "legal-CivilCode": {}, + "legal-CivilCode-corrupted-asr": {}, + "legal-CivilCode-corrupted-social-media": {}, + "legal-constitution": {}, + "legal-constitution-corrupted-asr": {}, + "legal-constitution-corrupted-social-media": {}, + "legal-all-laws": { + "punkt": { + "recall": 0.48313708663495625, + "precision": 0.4520000722363275, + "correct_pairwise": 0.015625, + "f1": 0.45290270241766445 + }, + "spacy_dp": { + "recall": 0.507955779227086, + "precision": 0.622861765570337, + "correct_pairwise": 0.12357954545454546, + "f1": 0.5435105810182068 + }, + "spacy_sent": { + "recall": 0.45843886030320674, + "precision": 0.6339565697875353, + "correct_pairwise": 0.11505681818181818, + "f1": 0.5179914303849871 + }, + "pysbd": { + "recall": 0.4893078906573226, + "precision": 0.6688938200787781, + "correct_pairwise": 0.11647727272727272, + "f1": 0.5504824717116096 + }, + "ersatz": null + }, + "legal-all-laws-corrupted-asr": { + "punkt": { + "recall": 0.012757034632034632, + "precision": 0.0234375, + "correct_pairwise": 0.0014204545454545455, + "f1": 0.015584415584415583 + }, + "spacy_dp": { + "recall": 0.020052647005772004, + "precision": 0.03413825757575757, + "correct_pairwise": 0.005681818181818182, + "f1": 0.022987274056353004 + }, + "spacy_sent": { + "recall": 0.013514610389610387, + "precision": 0.024857954545454544, + "correct_pairwise": 0.0014204545454545455, + "f1": 0.016558441558441557 + }, + "pysbd": { + "recall": 0.002130681818181818, + "precision": 0.002840909090909091, + "correct_pairwise": 0.002840909090909091, + "f1": 0.002367424242424242 + }, + "ersatz": null + }, + "legal-all-laws-corrupted-social-media": {}, + "legal-all-judgements": { + "punkt": { + "recall": 0.8383178310024467, + "precision": 0.664069368838985, + "correct_pairwise": 0.0, + "f1": 0.7288448969040336 + }, + "spacy_dp": { + "recall": 0.8720241864586609, + "precision": 0.6608076019592067, + "correct_pairwise": 0.0, + "f1": 0.73951613509609 + }, + "spacy_sent": { + "recall": 0.7479171963199338, + "precision": 0.720796307024293, + "correct_pairwise": 0.0, + "f1": 0.723203116933546 + }, + "pysbd": { + "recall": 0.697306242925527, + "precision": 0.8192072734438138, + "correct_pairwise": 0.0, + "f1": 0.7412556069474203 + }, + "ersatz": null + }, + "legal-all-judgements-corrupted-asr": { + "punkt": { + "recall": 0.0075215594571841835, + "precision": 0.0688632595895501, + "correct_pairwise": 0.0, + "f1": 0.013488028622707387 + }, + "spacy_dp": { + "recall": 0.03027572903757546, + "precision": 0.28984884908622827, + "correct_pairwise": 0.0, + "f1": 0.05308396368699987 + }, + "spacy_sent": { + "recall": 0.007272679417363377, + "precision": 0.06814868804664723, + "correct_pairwise": 0.0, + "f1": 0.013114892165320843 + }, + "pysbd": { + "recall": 0.15603123429365598, + "precision": 0.3955351387682214, + "correct_pairwise": 0.0, + "f1": 0.19976770841455596 + }, + "ersatz": null + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "ja": { + "ersatz": { + "punkt": null, + "spacy_dp": { + "recall": 0.8475103734439834, + "precision": 0.9819711538461539, + "correct_pairwise": 0, + "f1": 0.9097995545657016 + }, + "spacy_sent": { + "recall": 0.7925311203319502, + "precision": 0.8967136150234741, + "correct_pairwise": 0, + "f1": 0.8414096916299558 + }, + "pysbd": { + "recall": 0.7738589211618258, + "precision": 0.9946666666666667, + "correct_pairwise": 0, + "f1": 0.8704784130688448 + }, + "ersatz": { + "recall": 0.75, + "precision": 0.9986187845303868, + "correct_pairwise": 0, + "f1": 0.8566350710900473 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": { + "recall": 0.28236607142857145, + "precision": 0.864957264957265, + "correct_pairwise": 0, + "f1": 0.42574673958771564 + }, + "spacy_sent": { + "recall": 0.29854910714285715, + "precision": 0.8268933539412674, + "correct_pairwise": 0, + "f1": 0.43870438704387044 + }, + "pysbd": { + "recall": 0.28683035714285715, + "precision": 0.8923611111111112, + "correct_pairwise": 0, + "f1": 0.43412162162162166 + }, + "ersatz": { + "recall": 0.17578125, + "precision": 0.7894736842105263, + "correct_pairwise": 0, + "f1": 0.28753993610223644 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": { + "recall": 0.9692622950819673, + "precision": 0.9874739039665971, + "correct_pairwise": 0, + "f1": 0.9782833505687694 + }, + "spacy_sent": { + "recall": 0.9528688524590164, + "precision": 0.9707724425887265, + "correct_pairwise": 0, + "f1": 0.9617373319544984 + }, + "pysbd": { + "recall": 0.9672131147540983, + "precision": 0.9915966386554622, + "correct_pairwise": 0, + "f1": 0.979253112033195 + }, + "ersatz": { + "recall": 0.8770491803278688, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.9344978165938864 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": { + "recall": 0.001889098788754306, + "precision": 0.2125, + "correct_pairwise": 0, + "f1": 0.003744905826632889 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "jv": { + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {} + }, + "ka": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "kk": { + "ersatz": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": { + "recall": 0.48834628190899, + "precision": 0.9565217391304348, + "correct_pairwise": 0, + "f1": 0.6465833945628214 + }, + "ersatz": { + "recall": 0.9944506104328524, + "precision": 0.996662958843159, + "correct_pairwise": 0, + "f1": 0.9955555555555555 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": { + "recall": 0.2448394495412844, + "precision": 0.662015503875969, + "correct_pairwise": 0, + "f1": 0.35747174550020927 + }, + "ersatz": { + "recall": 0.25229357798165136, + "precision": 0.7638888888888888, + "correct_pairwise": 0, + "f1": 0.3793103448275862 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": { + "recall": 0.9596602972399151, + "precision": 0.9495798319327731, + "correct_pairwise": 0, + "f1": 0.9545934530095036 + }, + "ersatz": { + "recall": 0.9511677282377919, + "precision": 0.9603429796355841, + "correct_pairwise": 0, + "f1": 0.9557333333333333 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "km": { + "ersatz": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": { + "recall": 0.1873822975517891, + "precision": 0.9521531100478469, + "correct_pairwise": 0, + "f1": 0.3131392604248623 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "kn": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.05766871165644172, + "precision": 0.26704545454545453, + "correct_pairwise": 0, + "f1": 0.09485368314833502 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ko": { + "opus100": { + "punkt": null, + "spacy_dp": { + "recall": 0.3219101123595506, + "precision": 0.8463810930576071, + "correct_pairwise": 0, + "f1": 0.4664224664224665 + }, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": { + "recall": 0.999514091350826, + "precision": 0.9990286546867412, + "correct_pairwise": 0, + "f1": 0.9992713140636384 + }, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": { + "recall": 0.005222222222222222, + "precision": 0.42727272727272725, + "correct_pairwise": 0, + "f1": 0.01031833150384193 + }, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ku": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ky": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.04563492063492063, + "precision": 0.4394904458598726, + "correct_pairwise": 0, + "f1": 0.08268424206111442 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "la": { + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8396825396825397, + "precision": 0.9566003616636528, + "correct_pairwise": 0, + "f1": 0.8943364327979713 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "lt": { + "ersatz": { + "punkt": null, + "spacy_dp": { + "recall": 0.8211111111111111, + "precision": 0.6887232059645852, + "correct_pairwise": 0, + "f1": 0.749113025848961 + }, + "spacy_sent": { + "recall": 0.8166666666666667, + "precision": 0.6544968833481746, + "correct_pairwise": 0, + "f1": 0.726643598615917 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9177777777777778, + "precision": 0.9845053635280095, + "correct_pairwise": 0, + "f1": 0.9499712478435883 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": { + "recall": 0.7516816143497758, + "precision": 0.8303405572755418, + "correct_pairwise": 0, + "f1": 0.7890556045895851 + }, + "spacy_sent": { + "recall": 0.6754484304932735, + "precision": 0.6468062265163714, + "correct_pairwise": 0, + "f1": 0.6608171099533864 + }, + "pysbd": null, + "ersatz": { + "recall": 0.6816143497757847, + "precision": 0.8850072780203785, + "correct_pairwise": 0, + "f1": 0.7701076630778975 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": { + "recall": 0.9235772357723577, + "precision": 0.9161290322580645, + "correct_pairwise": 0, + "f1": 0.9198380566801618 + }, + "spacy_sent": { + "recall": 0.8796747967479674, + "precision": 0.8739903069466882, + "correct_pairwise": 0, + "f1": 0.8768233387358184 + }, + "pysbd": null, + "ersatz": { + "recall": 0.8878048780487805, + "precision": 0.9595782073813708, + "correct_pairwise": 0, + "f1": 0.9222972972972974 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": { + "recall": 0.01588888888888889, + "precision": 0.34963325183374083, + "correct_pairwise": 0, + "f1": 0.030396428951004358 + }, + "spacy_sent": { + "recall": 0.006666666666666667, + "precision": 0.2575107296137339, + "correct_pairwise": 0, + "f1": 0.012996859092386008 + }, + "pysbd": null, + "ersatz": { + "recall": 0.0005555555555555556, + "precision": 0.16129032258064516, + "correct_pairwise": 0, + "f1": 0.0011072970878086591 + } + }, + "ted2020-corrupted-social-media": {} + }, + "lv": { + "ersatz": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9267217630853994, + "precision": 0.8577256501784803, + "correct_pairwise": 0, + "f1": 0.8908898305084747 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9823691460055096, + "precision": 0.991106170094497, + "correct_pairwise": 0, + "f1": 0.9867183176535694 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.6450704225352113, + "precision": 0.5041831792162044, + "correct_pairwise": 0, + "f1": 0.5659911023232823 + }, + "pysbd": null, + "ersatz": { + "recall": 0.6732394366197183, + "precision": 0.9164110429447853, + "correct_pairwise": 0, + "f1": 0.776226047417993 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9317972350230415, + "precision": 0.9083557951482479, + "correct_pairwise": 0, + "f1": 0.9199272065514104 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9470046082949308, + "precision": 0.9922742636407532, + "correct_pairwise": 0, + "f1": 0.9691110587125678 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.00022222222222222223, + "precision": 0.013245033112582781, + "correct_pairwise": 0, + "f1": 0.0004371106982843405 + }, + "pysbd": null, + "ersatz": { + "recall": 0.0008888888888888889, + "precision": 0.14035087719298245, + "correct_pairwise": 0, + "f1": 0.0017665893783813628 + } + }, + "ted2020-corrupted-social-media": {} + }, + "mg": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "mk": { + "opus100": { + "punkt": null, + "spacy_dp": { + "recall": 0.9466666666666667, + "precision": 0.726033233915637, + "correct_pairwise": 0, + "f1": 0.821798890764408 + }, + "spacy_sent": { + "recall": 0.8961111111111111, + "precision": 0.9016210173281163, + "correct_pairwise": 0, + "f1": 0.898857620507105 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": { + "recall": 0.023777777777777776, + "precision": 0.07435719249478805, + "correct_pairwise": 0, + "f1": 0.03603300218892069 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ml": { + "opus100": { + "punkt": { + "recall": 0.75390625, + "precision": 0.8566899175649968, + "correct_pairwise": 0, + "f1": 0.8020184030869694 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.25613839285714285, + "precision": 0.864406779661017, + "correct_pairwise": 0, + "f1": 0.3951786482996125 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "mn": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "mr": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.7940682708449917, + "precision": 0.9072890025575447, + "correct_pairwise": 0, + "f1": 0.8469113697403761 + }, + "pysbd": { + "recall": 0.8041410184667039, + "precision": 0.9294954721862871, + "correct_pairwise": 0, + "f1": 0.8622862286228623 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.6666666666666666, + "precision": 0.6222222222222222, + "correct_pairwise": 0, + "f1": 0.6436781609195403 + }, + "pysbd": { + "recall": 0.4523809523809524, + "precision": 0.9047619047619048, + "correct_pairwise": 0, + "f1": 0.6031746031746031 + }, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.002111111111111111, + "precision": 0.1450381679389313, + "correct_pairwise": 0, + "f1": 0.0041616471361296675 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ms": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.7871853546910755, + "precision": 0.8987589810581319, + "correct_pairwise": 0, + "f1": 0.8392802683745044 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "mt": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "my": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": { + "recall": 0.17245240761478164, + "precision": 0.6666666666666666, + "correct_pairwise": 0, + "f1": 0.27402135231316727 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ne": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.09048178613396005, + "precision": 0.5422535211267606, + "correct_pairwise": 0, + "f1": 0.15508559919436052 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "nl": { + "opus100": { + "punkt": { + "recall": 0.9672222222222222, + "precision": 0.9020725388601036, + "correct_pairwise": 0, + "f1": 0.9335120643431636 + }, + "spacy_dp": { + "recall": 0.9827777777777778, + "precision": 0.8727183029107055, + "correct_pairwise": 0, + "f1": 0.9244839299712568 + }, + "spacy_sent": { + "recall": 0.9394444444444444, + "precision": 0.8942358540454786, + "correct_pairwise": 0, + "f1": 0.9162828501761041 + }, + "pysbd": { + "recall": 0.10166666666666667, + "precision": 0.8714285714285714, + "correct_pairwise": 0, + "f1": 0.182089552238806 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.9235074626865671, + "precision": 0.9939759036144579, + "correct_pairwise": 0, + "f1": 0.9574468085106383 + }, + "spacy_dp": { + "recall": 0.960820895522388, + "precision": 0.9035087719298246, + "correct_pairwise": 0, + "f1": 0.9312839059674503 + }, + "spacy_sent": { + "recall": 0.8694029850746269, + "precision": 0.9433198380566802, + "correct_pairwise": 0, + "f1": 0.9048543689320389 + }, + "pysbd": { + "recall": 0.9029850746268657, + "precision": 0.9718875502008032, + "correct_pairwise": 0, + "f1": 0.9361702127659575 + }, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.00011111111111111112, + "precision": 0.023255813953488372, + "correct_pairwise": 0, + "f1": 0.00022116554240849277 + }, + "spacy_dp": { + "recall": 0.37677777777777777, + "precision": 0.5966918880872778, + "correct_pairwise": 0, + "f1": 0.46189470816590616 + }, + "spacy_sent": { + "recall": 0.00011111111111111112, + "precision": 0.024390243902439025, + "correct_pairwise": 0, + "f1": 0.0002212144674261697 + }, + "pysbd": { + "recall": 0.00022222222222222223, + "precision": 0.045454545454545456, + "correct_pairwise": 0, + "f1": 0.0004422821760283061 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "no": { + "opus100": { + "punkt": { + "recall": 0.9608282036933408, + "precision": 0.9301191765980499, + "correct_pairwise": 0, + "f1": 0.9452243325075695 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9182988248461108, + "precision": 0.9136971046770601, + "correct_pairwise": 0, + "f1": 0.9159921853195646 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.9197707736389685, + "precision": 0.9944237918215614, + "correct_pairwise": 0, + "f1": 0.9556415599880916 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8865329512893982, + "precision": 0.9853503184713376, + "correct_pairwise": 0, + "f1": 0.9333333333333332 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {} + }, + "pa": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "pl": { + "ersatz": { + "punkt": { + "recall": 0.9004424778761062, + "precision": 0.9830917874396136, + "correct_pairwise": 0, + "f1": 0.9399538106235567 + }, + "spacy_dp": { + "recall": 0.9148230088495575, + "precision": 0.9763872491145218, + "correct_pairwise": 0, + "f1": 0.9446030839520274 + }, + "spacy_sent": { + "recall": 0.8064159292035398, + "precision": 0.7239324726911619, + "correct_pairwise": 0, + "f1": 0.7629513343799058 + }, + "pysbd": { + "recall": 0.3064159292035398, + "precision": 0.9022801302931596, + "correct_pairwise": 0, + "f1": 0.45747316267547483 + }, + "ersatz": { + "recall": 0.9148230088495575, + "precision": 0.986873508353222, + "correct_pairwise": 0, + "f1": 0.9494833524684271 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": { + "recall": 0.9254066180594503, + "precision": 0.9238521836506159, + "correct_pairwise": 0, + "f1": 0.9246287475483329 + }, + "spacy_dp": { + "recall": 0.9467190128996074, + "precision": 0.9119394921663966, + "correct_pairwise": 0, + "f1": 0.9290038525041278 + }, + "spacy_sent": { + "recall": 0.9248457655636567, + "precision": 0.8530781169167098, + "correct_pairwise": 0, + "f1": 0.88751345532831 + }, + "pysbd": { + "recall": 0.09702748177229388, + "precision": 0.8693467336683417, + "correct_pairwise": 0, + "f1": 0.17457114026236123 + }, + "ersatz": { + "recall": 0.9125070106561974, + "precision": 0.9291833238149628, + "correct_pairwise": 0, + "f1": 0.9207696661007356 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.9713998996487707, + "precision": 0.9723756906077348, + "correct_pairwise": 0, + "f1": 0.9718875502008032 + }, + "spacy_dp": { + "recall": 0.982940291018565, + "precision": 0.9869017632241813, + "correct_pairwise": 0, + "f1": 0.9849170437405731 + }, + "spacy_sent": { + "recall": 0.9578524836929252, + "precision": 0.8912231559290383, + "correct_pairwise": 0, + "f1": 0.9233373639661429 + }, + "pysbd": { + "recall": 0.7631710988459609, + "precision": 0.9536050156739811, + "correct_pairwise": 0, + "f1": 0.8478260869565217 + }, + "ersatz": { + "recall": 0.963371801304566, + "precision": 0.9846153846153847, + "correct_pairwise": 0, + "f1": 0.9738777580522445 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.0003333333333333333, + "precision": 0.05357142857142857, + "correct_pairwise": 0, + "f1": 0.0006625441696113074 + }, + "spacy_dp": { + "recall": 0.014222222222222223, + "precision": 0.40634920634920635, + "correct_pairwise": 0, + "f1": 0.0274825550187869 + }, + "spacy_sent": { + "recall": 0.011555555555555555, + "precision": 0.3895131086142322, + "correct_pairwise": 0, + "f1": 0.022445235782885507 + }, + "pysbd": { + "recall": 0.0015555555555555555, + "precision": 0.1320754716981132, + "correct_pairwise": 0, + "f1": 0.0030748956731825165 + }, + "ersatz": { + "recall": 0.0047777777777777775, + "precision": 0.44329896907216493, + "correct_pairwise": 0, + "f1": 0.009453666043750687 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ps": { + "ersatz": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": { + "recall": 0.8935996738687322, + "precision": 0.9838420107719928, + "correct_pairwise": 0, + "f1": 0.9365520187994019 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": { + "recall": 0.009282178217821782, + "precision": 0.6818181818181818, + "correct_pairwise": 0, + "f1": 0.018315018315018316 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "pt": { + "opus100": { + "punkt": { + "recall": 0.9174620999438517, + "precision": 0.9257790368271954, + "correct_pairwise": 0, + "f1": 0.9216018048505358 + }, + "spacy_dp": { + "recall": 0.9522740033688939, + "precision": 0.8679631525076765, + "correct_pairwise": 0, + "f1": 0.9081659973226238 + }, + "spacy_sent": { + "recall": 0.8888265019651881, + "precision": 0.9050886220697542, + "correct_pairwise": 0, + "f1": 0.8968838526912181 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.8590476190476191, + "precision": 0.9890350877192983, + "correct_pairwise": 0, + "f1": 0.9194699286442407 + }, + "spacy_dp": { + "recall": 0.979047619047619, + "precision": 0.982791586998088, + "correct_pairwise": 0, + "f1": 0.9809160305343512 + }, + "spacy_sent": { + "recall": 0.8085714285714286, + "precision": 0.9129032258064517, + "correct_pairwise": 0, + "f1": 0.8575757575757577 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.0008888888888888889, + "precision": 0.12307692307692308, + "correct_pairwise": 0, + "f1": 0.0017650303364589082 + }, + "spacy_dp": { + "recall": 0.013, + "precision": 0.35454545454545455, + "correct_pairwise": 0, + "f1": 0.02508038585209003 + }, + "spacy_sent": { + "recall": 0.001, + "precision": 0.13846153846153847, + "correct_pairwise": 0, + "f1": 0.0019856591285162713 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {}, + "legal-CivilCode": {}, + "legal-CivilCode-corrupted-asr": {}, + "legal-CivilCode-corrupted-social-media": {}, + "legal-CD_wipolex": {}, + "legal-CD_wipolex-corrupted-asr": {}, + "legal-CD_wipolex-corrupted-social-media": {}, + "legal-CriminalCode": {}, + "legal-CriminalCode-corrupted-asr": {}, + "legal-CriminalCode-corrupted-social-media": {}, + "legal-constitution": {}, + "legal-constitution-corrupted-asr": {}, + "legal-constitution-corrupted-social-media": {}, + "legal-all-laws": { + "punkt": { + "recall": 0.5321500379590887, + "precision": 0.6338618491414674, + "correct_pairwise": 0.0, + "f1": 0.544255627200519 + }, + "spacy_dp": { + "recall": 0.7714565948980429, + "precision": 0.8580439502886701, + "correct_pairwise": 0.15517241379310345, + "f1": 0.794197339408791 + }, + "spacy_sent": { + "recall": 0.40458199054964844, + "precision": 0.5752511404174155, + "correct_pairwise": 0.1206896551724138, + "f1": 0.45899235842659614 + }, + "pysbd": null, + "ersatz": null + }, + "legal-all-laws-corrupted-asr": { + "punkt": { + "recall": 0.0013262599469496023, + "precision": 0.004310344827586207, + "correct_pairwise": 0.0, + "f1": 0.002028397565922921 + }, + "spacy_dp": { + "recall": 0.032750824283265305, + "precision": 0.19051724137931036, + "correct_pairwise": 0.0, + "f1": 0.052656699626267574 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "legal-all-laws-corrupted-social-media": {}, + "legal-all-judgements": { + "punkt": { + "recall": 0.71032111781407, + "precision": 0.6884708364249039, + "correct_pairwise": 0.0, + "f1": 0.695861176013074 + }, + "spacy_dp": { + "recall": 0.8066203807216624, + "precision": 0.6590163097195972, + "correct_pairwise": 0.0, + "f1": 0.7228867305209412 + }, + "spacy_sent": { + "recall": 0.7109362272161194, + "precision": 0.7353319526772872, + "correct_pairwise": 0.0, + "f1": 0.7179572150415312 + }, + "pysbd": null, + "ersatz": null + }, + "legal-all-judgements-corrupted-asr": { + "punkt": { + "recall": 0.004650432050274942, + "precision": 0.05, + "correct_pairwise": 0.0, + "f1": 0.008166877370417195 + }, + "spacy_dp": { + "recall": 0.01999819032799023, + "precision": 0.16712885154061624, + "correct_pairwise": 0.0, + "f1": 0.03515001855397335 + }, + "spacy_sent": { + "recall": 0.004650432050274942, + "precision": 0.15, + "correct_pairwise": 0.0, + "f1": 0.008881770529994176 + }, + "pysbd": null, + "ersatz": null + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "ro": { + "ersatz": { + "punkt": null, + "spacy_dp": { + "recall": 0.9216666666666666, + "precision": 0.968476357267951, + "correct_pairwise": 0, + "f1": 0.9444918872758328 + }, + "spacy_sent": { + "recall": 0.87, + "precision": 0.9157894736842105, + "correct_pairwise": 0, + "f1": 0.8923076923076922 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9311111111111111, + "precision": 0.9905437352245863, + "correct_pairwise": 0, + "f1": 0.9599083619702177 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": { + "recall": 0.9163860830527497, + "precision": 0.9215575620767494, + "correct_pairwise": 0, + "f1": 0.9189645469893077 + }, + "spacy_sent": { + "recall": 0.8821548821548821, + "precision": 0.928529238038984, + "correct_pairwise": 0, + "f1": 0.9047482014388489 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9051627384960719, + "precision": 0.9516224188790561, + "correct_pairwise": 0, + "f1": 0.9278113316077078 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": { + "recall": 0.9883720930232558, + "precision": 0.9202755905511811, + "correct_pairwise": 0, + "f1": 0.9531090723751275 + }, + "spacy_sent": { + "recall": 0.9873150105708245, + "precision": 0.9831578947368421, + "correct_pairwise": 0, + "f1": 0.9852320675105485 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9778012684989429, + "precision": 0.9882478632478633, + "correct_pairwise": 0, + "f1": 0.9829968119022315 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": { + "recall": 0.009, + "precision": 0.5126582278481012, + "correct_pairwise": 0, + "f1": 0.017689451845381086 + }, + "spacy_sent": { + "recall": 0.0005555555555555556, + "precision": 0.14705882352941177, + "correct_pairwise": 0, + "f1": 0.0011069293779056896 + }, + "pysbd": null, + "ersatz": { + "recall": 0.0007777777777777777, + "precision": 0.25, + "correct_pairwise": 0, + "f1": 0.0015507310589277803 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ru": { + "ersatz": { + "punkt": { + "recall": 0.8877665544332211, + "precision": 0.9924717691342535, + "correct_pairwise": 0, + "f1": 0.9372037914691944 + }, + "spacy_dp": { + "recall": 0.9023569023569024, + "precision": 0.9828850855745721, + "correct_pairwise": 0, + "f1": 0.9409011117612639 + }, + "spacy_sent": { + "recall": 0.8484848484848485, + "precision": 0.9242053789731052, + "correct_pairwise": 0, + "f1": 0.8847279110590989 + }, + "pysbd": { + "recall": 0.3872053872053872, + "precision": 0.9636871508379888, + "correct_pairwise": 0, + "f1": 0.5524419535628503 + }, + "ersatz": { + "recall": 0.9012345679012346, + "precision": 0.9876998769987699, + "correct_pairwise": 0, + "f1": 0.9424882629107981 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": { + "recall": 0.7351936218678815, + "precision": 0.7819503331314355, + "correct_pairwise": 0, + "f1": 0.757851482242442 + }, + "spacy_dp": { + "recall": 0.7733485193621867, + "precision": 0.7352463454250135, + "correct_pairwise": 0, + "f1": 0.7538162642242575 + }, + "spacy_sent": { + "recall": 0.7226651480637813, + "precision": 0.7251428571428571, + "correct_pairwise": 0, + "f1": 0.7239018824871648 + }, + "pysbd": { + "recall": 0.7591116173120729, + "precision": 0.5667517006802721, + "correct_pairwise": 0, + "f1": 0.6489776046738073 + }, + "ersatz": { + "recall": 0.6366742596810934, + "precision": 0.7428571428571429, + "correct_pairwise": 0, + "f1": 0.6856792394970868 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.6755050505050505, + "precision": 0.9304347826086956, + "correct_pairwise": 0, + "f1": 0.7827359180687636 + }, + "spacy_dp": { + "recall": 0.7297979797979798, + "precision": 0.893353941267388, + "correct_pairwise": 0, + "f1": 0.8033356497567756 + }, + "spacy_sent": { + "recall": 0.6742424242424242, + "precision": 0.8885191347753744, + "correct_pairwise": 0, + "f1": 0.7666905958363244 + }, + "pysbd": { + "recall": 0.5467171717171717, + "precision": 0.8964803312629399, + "correct_pairwise": 0, + "f1": 0.6792156862745098 + }, + "ersatz": { + "recall": 0.6679292929292929, + "precision": 0.929701230228471, + "correct_pairwise": 0, + "f1": 0.7773695811903013 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.00011111111111111112, + "precision": 0.09090909090909091, + "correct_pairwise": 0, + "f1": 0.00022195094884030627 + }, + "spacy_dp": { + "recall": 0.005, + "precision": 0.3543307086614173, + "correct_pairwise": 0, + "f1": 0.009860852415908842 + }, + "spacy_sent": { + "recall": 0.00044444444444444447, + "precision": 0.10810810810810811, + "correct_pairwise": 0, + "f1": 0.0008852495297111874 + }, + "pysbd": { + "recall": 0.0011111111111111111, + "precision": 0.15873015873015872, + "correct_pairwise": 0, + "f1": 0.0022067747986317995 + }, + "ersatz": { + "recall": 0.00011111111111111112, + "precision": 0.07692307692307693, + "correct_pairwise": 0, + "f1": 0.00022190169754798624 + } + }, + "ted2020-corrupted-social-media": {} + }, + "si": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.6653587443946188, + "precision": 0.8676900584795322, + "correct_pairwise": 0, + "f1": 0.7531725888324873 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "sk": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.873247335950645, + "precision": 0.8796610169491526, + "correct_pairwise": 0, + "f1": 0.8764424430059105 + }, + "pysbd": { + "recall": 0.1772293886707796, + "precision": 0.8802228412256268, + "correct_pairwise": 0, + "f1": 0.2950513538748833 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8291404612159329, + "precision": 0.8701870187018702, + "correct_pairwise": 0, + "f1": 0.8491680085882984 + }, + "pysbd": { + "recall": 0.8176100628930818, + "precision": 0.9112149532710281, + "correct_pairwise": 0, + "f1": 0.861878453038674 + }, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0015555555555555555, + "precision": 0.20588235294117646, + "correct_pairwise": 0, + "f1": 0.0030877812086457872 + }, + "pysbd": { + "recall": 0.0012222222222222222, + "precision": 0.2894736842105263, + "correct_pairwise": 0, + "f1": 0.002434166851073246 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "sl": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8678929765886287, + "precision": 0.8979238754325259, + "correct_pairwise": 0, + "f1": 0.8826530612244898 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9176062445793582, + "precision": 0.9497307001795332, + "correct_pairwise": 0, + "f1": 0.933392148213498 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.00044444444444444447, + "precision": 0.13793103448275862, + "correct_pairwise": 0, + "f1": 0.0008860338907963231 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {}, + "short-sequences": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.7328825408462515, + "precision": 0.9687499999999997, + "correct_pairwise": 0.4472140762463343, + "f1": 0.8100220018658485 + }, + "pysbd": null, + "ersatz": null + }, + "short-sequences-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.461737333007494, + "precision": 1.0, + "correct_pairwise": 0.02969208211143695, + "f1": 0.6213561304287266 + }, + "pysbd": null, + "ersatz": null + }, + "short-sequences-corrupted-social-media": {} + }, + "sq": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.874224478285392, + "precision": 0.8872352604464797, + "correct_pairwise": 0, + "f1": 0.8806818181818182 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 1.0, + "precision": 1.0, + "correct_pairwise": 1, + "f1": 1.0 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "sr": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9095982142857143, + "precision": 0.9101060859854829, + "correct_pairwise": 0, + "f1": 0.9098520792631872 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.7991452991452992, + "precision": 0.8219780219780219, + "correct_pairwise": 0, + "f1": 0.8104008667388949 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {}, + "short-sequences": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8238715277777776, + "precision": 0.9618055555555554, + "correct_pairwise": 0.609375, + "f1": 0.8678034060846559 + }, + "pysbd": null, + "ersatz": null + }, + "short-sequences-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.43632812499999996, + "precision": 1.0, + "correct_pairwise": 0.005208333333333333, + "f1": 0.5994212962962973 + }, + "pysbd": null, + "ersatz": null + }, + "short-sequences-corrupted-social-media": {} + }, + "sv": { + "opus100": { + "punkt": { + "recall": 0.9335566722501396, + "precision": 0.9166666666666666, + "correct_pairwise": 0, + "f1": 0.9250345781466113 + }, + "spacy_dp": { + "recall": 0.9631490787269682, + "precision": 0.8480825958702065, + "correct_pairwise": 0, + "f1": 0.9019607843137255 + }, + "spacy_sent": { + "recall": 0.9061976549413735, + "precision": 0.9036748329621381, + "correct_pairwise": 0, + "f1": 0.9049344856425983 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.9344790547798066, + "precision": 0.9436008676789588, + "correct_pairwise": 0, + "f1": 0.9390178089584457 + }, + "spacy_dp": { + "recall": 0.9452201933404941, + "precision": 0.8065994500458296, + "correct_pairwise": 0, + "f1": 0.8704253214638973 + }, + "spacy_sent": { + "recall": 0.8872180451127819, + "precision": 0.9037199124726477, + "correct_pairwise": 0, + "f1": 0.8953929539295393 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.00022222222222222223, + "precision": 0.09523809523809523, + "correct_pairwise": 0, + "f1": 0.00044340982152754686 + }, + "spacy_dp": { + "recall": 0.005888888888888889, + "precision": 0.21285140562248997, + "correct_pairwise": 0, + "f1": 0.011460698453886906 + }, + "spacy_sent": { + "recall": 0.00011111111111111112, + "precision": 0.05, + "correct_pairwise": 0, + "f1": 0.00022172949002217295 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ta": { + "ersatz": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9756637168141593, + "precision": 0.8010899182561307, + "correct_pairwise": 0, + "f1": 0.8798004987531173 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9723451327433629, + "precision": 0.9331210191082803, + "correct_pairwise": 0, + "f1": 0.952329360780065 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.31864406779661014, + "precision": 0.5623130608175474, + "correct_pairwise": 0, + "f1": 0.4067796610169491 + }, + "pysbd": null, + "ersatz": { + "recall": 0.3463276836158192, + "precision": 0.6528221512247071, + "correct_pairwise": 0, + "f1": 0.4525655223329642 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 1.0, + "precision": 0.84375, + "correct_pairwise": 0, + "f1": 0.9152542372881356 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9722222222222222, + "precision": 0.8467741935483871, + "correct_pairwise": 0, + "f1": 0.9051724137931034 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.00019770660340055358, + "precision": 0.5, + "correct_pairwise": 0, + "f1": 0.0003952569169960474 + }, + "pysbd": null, + "ersatz": { + "recall": 0.00276789244760775, + "precision": 0.32558139534883723, + "correct_pairwise": 0, + "f1": 0.005489119780435209 + } + }, + "ted2020-corrupted-social-media": {} + }, + "te": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.4923425978445831, + "precision": 0.8402710551790901, + "correct_pairwise": 0, + "f1": 0.6208869814020029 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "tg": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "th": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "tr": { + "ersatz": { + "punkt": { + "recall": 0.920605612998523, + "precision": 0.9305711086226204, + "correct_pairwise": 0, + "f1": 0.9255615370335993 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8401033973412112, + "precision": 0.8555848063181647, + "correct_pairwise": 0, + "f1": 0.8477734302217254 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9309453471196455, + "precision": 0.994869771112865, + "correct_pairwise": 0, + "f1": 0.9618466234261732 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": { + "recall": 0.9420697412823397, + "precision": 0.9259259259259259, + "correct_pairwise": 0, + "f1": 0.9339280735991078 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9139482564679415, + "precision": 0.9124087591240876, + "correct_pairwise": 0, + "f1": 0.9131778589491429 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9201349831271091, + "precision": 0.9332572732458643, + "correct_pairwise": 0, + "f1": 0.9266496743132256 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": { + "recall": 0.9242424242424242, + "precision": 0.9394250513347022, + "correct_pairwise": 0, + "f1": 0.9317718940936862 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.8808080808080808, + "precision": 0.923728813559322, + "correct_pairwise": 0, + "f1": 0.9017580144777662 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9575757575757575, + "precision": 0.9793388429752066, + "correct_pairwise": 0, + "f1": 0.968335035750766 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "uk": { + "opus100": { + "punkt": null, + "spacy_dp": { + "recall": 0.9184812953657174, + "precision": 0.8782701548318206, + "correct_pairwise": 0, + "f1": 0.8979257641921398 + }, + "spacy_sent": { + "recall": 0.8514796203238414, + "precision": 0.8669698692438885, + "correct_pairwise": 0, + "f1": 0.8591549295774648 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": { + "recall": 0.9554455445544554, + "precision": 0.9747474747474747, + "correct_pairwise": 0, + "f1": 0.965 + }, + "spacy_sent": { + "recall": 0.9084158415841584, + "precision": 0.8940316686967114, + "correct_pairwise": 0, + "f1": 0.9011663597298956 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": { + "recall": 0.0036666666666666666, + "precision": 0.36666666666666664, + "correct_pairwise": 0, + "f1": 0.007260726072607261 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "ur": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.3274544385655497, + "precision": 0.5366088631984586, + "correct_pairwise": 0, + "f1": 0.4067177802117561 + }, + "pysbd": { + "recall": 0.23162845385067607, + "precision": 0.4876237623762376, + "correct_pairwise": 0, + "f1": 0.31406935033878036 + }, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9854469854469855, + "precision": 0.9978947368421053, + "correct_pairwise": 0, + "f1": 0.9916317991631799 + }, + "pysbd": { + "recall": 0.9854469854469855, + "precision": 0.9978947368421053, + "correct_pairwise": 0, + "f1": 0.9916317991631799 + }, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "uz": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "vi": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "ted2020-corrupted-social-media": {} + }, + "xh": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {} + }, + "yi": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {} + }, + "yo": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.08913120777527557, + "precision": 0.49022164276401564, + "correct_pairwise": 0, + "f1": 0.15083742854277404 + }, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.7307692307692307, + "precision": 0.8007662835249042, + "correct_pairwise": 0, + "f1": 0.7641681901279707 + }, + "pysbd": null, + "ersatz": null + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {} + }, + "zh": { + "ersatz": { + "punkt": null, + "spacy_dp": { + "recall": 0.9633740288568258, + "precision": 0.9548954895489549, + "correct_pairwise": 0, + "f1": 0.9591160220994476 + }, + "spacy_sent": { + "recall": 0.9206437291897891, + "precision": 0.8838572189664358, + "correct_pairwise": 0, + "f1": 0.9018755096493613 + }, + "pysbd": { + "recall": 0.9223085460599334, + "precision": 0.9321368480089737, + "correct_pairwise": 0, + "f1": 0.9271966527196653 + }, + "ersatz": { + "recall": 0.8018867924528302, + "precision": 0.9607712765957447, + "correct_pairwise": 0, + "f1": 0.8741681790683606 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "punkt": null, + "spacy_dp": { + "recall": 0.6489659027389603, + "precision": 0.7193308550185874, + "correct_pairwise": 0, + "f1": 0.6823391125477519 + }, + "spacy_sent": { + "recall": 0.6338736724427054, + "precision": 0.6261733848702374, + "correct_pairwise": 0, + "f1": 0.6299999999999999 + }, + "pysbd": { + "recall": 0.6523197316936836, + "precision": 0.7316614420062696, + "correct_pairwise": 0, + "f1": 0.6897163120567376 + }, + "ersatz": { + "recall": 0.45612073784237006, + "precision": 0.6834170854271356, + "correct_pairwise": 0, + "f1": 0.5471002346630909 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "punkt": null, + "spacy_dp": { + "recall": 0.9977777777777778, + "precision": 0.9824945295404814, + "correct_pairwise": 0, + "f1": 0.9900771775082691 + }, + "spacy_sent": { + "recall": 0.9844444444444445, + "precision": 0.9486081370449678, + "correct_pairwise": 0, + "f1": 0.9661941112322793 + }, + "pysbd": { + "recall": 0.9866666666666667, + "precision": 0.9910714285714286, + "correct_pairwise": 0, + "f1": 0.9888641425389756 + }, + "ersatz": { + "recall": 0.8066666666666666, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.8929889298892989 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "punkt": null, + "spacy_dp": { + "recall": 0.004249485949280329, + "precision": 0.1962025316455696, + "correct_pairwise": 0, + "f1": 0.008318797799543809 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "zu": { + "opus100": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {} + }, + "tr-de_TR": { + "code-switching": { + "punkt": { + "recall": 0.988950276243094, + "precision": 0.99860529986053, + "correct_pairwise": 0, + "f1": 0.9937543372657878 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.9806629834254144, + "precision": 0.9943977591036415, + "correct_pairwise": 0, + "f1": 0.9874826147426982 + }, + "pysbd": null, + "ersatz": { + "recall": 0.9958563535911602, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.9979238754325259 + } + }, + "code-switching-corrupted-asr": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_dp": null, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": null, + "ersatz": { + "recall": 0.0013812154696132596, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.002758620689655172 + } + }, + "code-switching-corrupted-social-media": {} + }, + "tr-de_DE": { + "code-switching": { + "punkt": { + "recall": 0.9861878453038674, + "precision": 0.9986013986013986, + "correct_pairwise": 0, + "f1": 0.9923558026407229 + }, + "spacy_dp": { + "recall": 0.9917127071823204, + "precision": 0.4851351351351351, + "correct_pairwise": 0, + "f1": 0.6515426497277677 + }, + "spacy_sent": { + "recall": 0.9792817679558011, + "precision": 0.9943899018232819, + "correct_pairwise": 0, + "f1": 0.9867780097425192 + }, + "pysbd": { + "recall": 0.7679558011049724, + "precision": 0.9928571428571429, + "correct_pairwise": 0, + "f1": 0.8660436137071652 + }, + "ersatz": { + "recall": 0.9958563535911602, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.9979238754325259 + } + }, + "code-switching-corrupted-asr": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_dp": { + "recall": 0.17955801104972377, + "precision": 0.09259259259259259, + "correct_pairwise": 0, + "f1": 0.12218045112781956 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.0013812154696132596, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.002758620689655172 + } + }, + "code-switching-corrupted-social-media": {} + }, + "es-en_ES": { + "code-switching": { + "punkt": { + "recall": 0.8875, + "precision": 0.9971910112359551, + "correct_pairwise": 0, + "f1": 0.9391534391534392 + }, + "spacy_dp": { + "recall": 0.8525, + "precision": 0.9932038834951457, + "correct_pairwise": 0, + "f1": 0.9174887892376681 + }, + "spacy_sent": { + "recall": 0.8875, + "precision": 0.9971910112359551, + "correct_pairwise": 0, + "f1": 0.9391534391534392 + }, + "pysbd": { + "recall": 0.8541666666666666, + "precision": 0.9970817120622568, + "correct_pairwise": 0, + "f1": 0.9201077199281869 + }, + "ersatz": { + "recall": 0.29833333333333334, + "precision": 0.9944444444444445, + "correct_pairwise": 0, + "f1": 0.458974358974359 + } + }, + "code-switching-corrupted-asr": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-social-media": {} + }, + "es-en_EN": { + "code-switching": { + "punkt": { + "recall": 0.8875, + "precision": 0.9971910112359551, + "correct_pairwise": 0, + "f1": 0.9391534391534392 + }, + "spacy_dp": { + "recall": 0.8841666666666667, + "precision": 0.8130268199233717, + "correct_pairwise": 0, + "f1": 0.8471057884231536 + }, + "spacy_sent": { + "recall": 0.8875, + "precision": 0.9971910112359551, + "correct_pairwise": 0, + "f1": 0.9391534391534392 + }, + "pysbd": { + "recall": 0.8541666666666666, + "precision": 0.9970817120622568, + "correct_pairwise": 0, + "f1": 0.9201077199281869 + }, + "ersatz": { + "recall": 0.29833333333333334, + "precision": 0.9944444444444445, + "correct_pairwise": 0, + "f1": 0.458974358974359 + } + }, + "code-switching-corrupted-asr": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_dp": { + "recall": 0.125, + "precision": 0.2994011976047904, + "correct_pairwise": 0, + "f1": 0.1763668430335097 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-social-media": {} + }, + "vi-en_VI": { + "code-switching": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "code-switching-corrupted-asr": { + "punkt": null, + "spacy_dp": null, + "spacy_sent": null, + "pysbd": null, + "ersatz": null + }, + "code-switching-corrupted-social-media": {} + }, + "vi-en_EN": { + "code-switching": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_dp": { + "recall": 0.08251633986928104, + "precision": 0.1806797853309481, + "correct_pairwise": 0, + "f1": 0.11329220415030847 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-asr": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_dp": { + "recall": 0.07761437908496732, + "precision": 0.18129770992366412, + "correct_pairwise": 0, + "f1": 0.10869565217391304 + }, + "spacy_sent": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "pysbd": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "ersatz": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-social-media": {} + }, + "en-de_EN": { + "code-switching": { + "punkt": { + "recall": 0.8589981447124304, + "precision": 0.9204771371769384, + "correct_pairwise": 0, + "f1": 0.8886756238003838 + }, + "spacy_dp": { + "recall": 0.8812615955473099, + "precision": 0.5952380952380952, + "correct_pairwise": 0, + "f1": 0.7105459985041137 + }, + "spacy_sent": { + "recall": 0.8385899814471243, + "precision": 0.8042704626334519, + "correct_pairwise": 0, + "f1": 0.821071752951862 + }, + "pysbd": { + "recall": 0.4972170686456401, + "precision": 0.9115646258503401, + "correct_pairwise": 0, + "f1": 0.6434573829531813 + }, + "ersatz": { + "recall": 0.8330241187384044, + "precision": 0.9492600422832981, + "correct_pairwise": 0, + "f1": 0.8873517786561266 + } + }, + "code-switching-corrupted-asr": { + "punkt": { + "recall": 0.0055658627087198514, + "precision": 0.15789473684210525, + "correct_pairwise": 0, + "f1": 0.010752688172043012 + }, + "spacy_dp": { + "recall": 0.05380333951762523, + "precision": 0.15263157894736842, + "correct_pairwise": 0, + "f1": 0.07956104252400549 + }, + "spacy_sent": { + "recall": 0.0074211502782931356, + "precision": 0.15384615384615385, + "correct_pairwise": 0, + "f1": 0.014159292035398232 + }, + "pysbd": { + "recall": 0.011131725417439703, + "precision": 0.18181818181818182, + "correct_pairwise": 0, + "f1": 0.020979020979020976 + }, + "ersatz": { + "recall": 0.0018552875695732839, + "precision": 0.07142857142857142, + "correct_pairwise": 0, + "f1": 0.003616636528028933 + } + }, + "code-switching-corrupted-social-media": {}, + "short-sequences": { + "punkt": { + "recall": 0.9752503619019458, + "precision": 0.9641890622303922, + "correct_pairwise": 0.8108108108108109, + "f1": 0.9654735387043918 + }, + "spacy_dp": { + "recall": 0.9699358730348253, + "precision": 0.8492675677412015, + "correct_pairwise": 0.5218295218295218, + "f1": 0.8906598223470783 + }, + "spacy_sent": { + "recall": 0.9477470633460158, + "precision": 0.9435548559655494, + "correct_pairwise": 0.735966735966736, + "f1": 0.9406641469968986 + }, + "pysbd": { + "recall": 0.9695024206782963, + "precision": 0.965512862896298, + "correct_pairwise": 0.7920997920997921, + "f1": 0.9612661777710537 + }, + "ersatz": { + "recall": 0.9563618277300107, + "precision": 0.9751128309951844, + "correct_pairwise": 0.7837837837837838, + "f1": 0.9599591876104498 + } + }, + "short-sequences-corrupted-asr": { + "punkt": { + "recall": 0.38169497474986874, + "precision": 0.975051975051975, + "correct_pairwise": 0.10187110187110188, + "f1": 0.505852254019675 + }, + "spacy_dp": { + "recall": 0.40635290613856956, + "precision": 0.81512969012969, + "correct_pairwise": 0.06652806652806653, + "f1": 0.4907784778820866 + }, + "spacy_sent": { + "recall": 0.38169497474986874, + "precision": 0.9674289674289672, + "correct_pairwise": 0.10187110187110188, + "f1": 0.504511340914056 + }, + "pysbd": { + "recall": 0.3873976495701907, + "precision": 0.9746765996765997, + "correct_pairwise": 0.09771309771309772, + "f1": 0.5102455310373865 + }, + "ersatz": { + "recall": 0.38172714978204375, + "precision": 0.9797297297297297, + "correct_pairwise": 0.10395010395010396, + "f1": 0.5070683699654887 + } + }, + "short-sequences-corrupted-social-media": {} + }, + "en-de_DE": { + "code-switching": { + "punkt": { + "recall": 0.8571428571428571, + "precision": 0.9409368635437881, + "correct_pairwise": 0, + "f1": 0.8970873786407767 + }, + "spacy_dp": { + "recall": 0.8794063079777366, + "precision": 0.3298538622129436, + "correct_pairwise": 0, + "f1": 0.4797570850202429 + }, + "spacy_sent": { + "recall": 0.8256029684601113, + "precision": 0.8302238805970149, + "correct_pairwise": 0, + "f1": 0.8279069767441859 + }, + "pysbd": { + "recall": 0.5677179962894249, + "precision": 0.8947368421052632, + "correct_pairwise": 0, + "f1": 0.6946651532349604 + }, + "ersatz": { + "recall": 0.8330241187384044, + "precision": 0.9492600422832981, + "correct_pairwise": 0, + "f1": 0.8873517786561266 + } + }, + "code-switching-corrupted-asr": { + "punkt": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + }, + "spacy_dp": { + "recall": 0.150278293135436, + "precision": 0.060267857142857144, + "correct_pairwise": 0, + "f1": 0.08603292618162507 + }, + "spacy_sent": { + "recall": 0.0018552875695732839, + "precision": 0.09090909090909091, + "correct_pairwise": 0, + "f1": 0.003636363636363636 + }, + "pysbd": { + "recall": 0.011131725417439703, + "precision": 0.20689655172413793, + "correct_pairwise": 0, + "f1": 0.02112676056338028 + }, + "ersatz": { + "recall": 0.0018552875695732839, + "precision": 0.07142857142857142, + "correct_pairwise": 0, + "f1": 0.003616636528028933 + } + }, + "code-switching-corrupted-social-media": {}, + "short-sequences": { + "punkt": { + "recall": 0.9768055634571473, + "precision": 0.9728171504399281, + "correct_pairwise": 0.8503118503118503, + "f1": 0.9715335308334949 + }, + "spacy_dp": { + "recall": 0.9607768656976803, + "precision": 0.6522092831411755, + "correct_pairwise": 0.28274428274428276, + "f1": 0.7419349567795894 + }, + "spacy_sent": { + "recall": 0.9424299113183374, + "precision": 0.955479383060355, + "correct_pairwise": 0.762993762993763, + "f1": 0.9445086001261273 + }, + "pysbd": { + "recall": 0.9626161387920142, + "precision": 0.9667454141288493, + "correct_pairwise": 0.7900207900207901, + "f1": 0.9569482845222718 + }, + "ersatz": { + "recall": 0.9563618277300107, + "precision": 0.9751128309951844, + "correct_pairwise": 0.7837837837837838, + "f1": 0.9599591876104498 + } + }, + "short-sequences-corrupted-asr": { + "punkt": { + "recall": 0.38077427382916784, + "precision": 0.9892584892584892, + "correct_pairwise": 0.10602910602910603, + "f1": 0.5082941040859597 + }, + "spacy_dp": { + "recall": 0.48178885410964506, + "precision": 0.4244844146964414, + "correct_pairwise": 0.033264033264033266, + "f1": 0.3794327295178452 + }, + "spacy_sent": { + "recall": 0.38042777348266743, + "precision": 0.987179487179487, + "correct_pairwise": 0.10395010395010396, + "f1": 0.5070821449554483 + }, + "pysbd": { + "recall": 0.38581529798783915, + "precision": 0.980913605913606, + "correct_pairwise": 0.09771309771309772, + "f1": 0.5097074804993359 + }, + "ersatz": { + "recall": 0.38172714978204375, + "precision": 0.9797297297297297, + "correct_pairwise": 0.10395010395010396, + "f1": 0.5070683699654887 + } + }, + "short-sequences-corrupted-social-media": {} + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/baselines_multilingual.json b/wtpsplit/evaluation/evaluation_results/main/baselines_multilingual.json new file mode 100644 index 00000000..ef1c59be --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/baselines_multilingual.json @@ -0,0 +1,2962 @@ +{ + "af": { + "opus100": { + "spacy_dp": { + "recall": 0.28727064220183485, + "precision": 0.7707692307692308, + "correct_pairwise": 0, + "f1": 0.41854636591478694 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9842931937172775, + "precision": 0.9817232375979112, + "correct_pairwise": 0, + "f1": 0.9830065359477125 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "am": { + "opus100": { + "spacy_dp": { + "recall": 0.03676880222841226, + "precision": 0.22372881355932203, + "correct_pairwise": 0, + "f1": 0.06315789473684211 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ar": { + "ersatz": { + "spacy_dp": { + "recall": 0.8721359940872137, + "precision": 0.9539207760711399, + "correct_pairwise": 0, + "f1": 0.9111969111969114 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.4291294642857143, + "precision": 0.8879907621247113, + "correct_pairwise": 0, + "f1": 0.5786305492851768 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.8071895424836601, + "precision": 0.7755102040816326, + "correct_pairwise": 0, + "f1": 0.7910328262610089 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0003333333333333333, + "precision": 0.17647058823529413, + "correct_pairwise": 0, + "f1": 0.0006654097815237884 + } + }, + "ted2020-corrupted-social-media": {} + }, + "az": { + "opus100": { + "spacy_dp": { + "recall": 0.8395543175487465, + "precision": 0.6353288364249579, + "correct_pairwise": 0, + "f1": 0.7233021358291336 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "be": { + "opus100": { + "spacy_dp": { + "recall": 0.22807017543859648, + "precision": 0.660655737704918, + "correct_pairwise": 0, + "f1": 0.3390828775767774 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.718266253869969, + "precision": 0.9015544041450777, + "correct_pairwise": 0, + "f1": 0.7995404939689833 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "bg": { + "opus100": { + "spacy_dp": { + "recall": 0.9454646633277685, + "precision": 0.9233695652173913, + "correct_pairwise": 0, + "f1": 0.9342864998625241 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9073705179282868, + "precision": 0.9712153518123667, + "correct_pairwise": 0, + "f1": 0.9382080329557158 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "bn": { + "opus100": { + "spacy_dp": { + "recall": 0.253072625698324, + "precision": 0.703416149068323, + "correct_pairwise": 0, + "f1": 0.372226787181594 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.34, + "precision": 0.8095238095238095, + "correct_pairwise": 0, + "f1": 0.47887323943661975 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0014957264957264958, + "precision": 0.04, + "correct_pairwise": 0, + "f1": 0.002883625128733265 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ca": { + "opus100": { + "spacy_dp": { + "recall": 0.8742953776775648, + "precision": 0.8857795545402627, + "correct_pairwise": 0, + "f1": 0.88 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9927754364840458, + "precision": 0.983890214797136, + "correct_pairwise": 0, + "f1": 0.9883128558585557 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ceb": { + "ud": { + "spacy_dp": { + "recall": 1.0, + "precision": 0.9712643678160919, + "correct_pairwise": 0, + "f1": 0.9854227405247813 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "cs": { + "ersatz": { + "spacy_dp": { + "recall": 0.9394719896973599, + "precision": 0.9891525423728813, + "correct_pairwise": 0, + "f1": 0.963672391017173 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.8510998307952623, + "precision": 0.8960807600950119, + "correct_pairwise": 0, + "f1": 0.8730112814579115 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.8316723250465448, + "precision": 0.9702312507985179, + "correct_pairwise": 0, + "f1": 0.8956244840193419 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "cy": { + "opus100": { + "spacy_dp": { + "recall": 0.15818181818181817, + "precision": 0.696, + "correct_pairwise": 0, + "f1": 0.2577777777777778 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9813302217036173, + "precision": 0.9964454976303317, + "correct_pairwise": 0, + "f1": 0.988830099941211 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {} + }, + "da": { + "opus100": { + "spacy_dp": { + "recall": 0.9042553191489362, + "precision": 0.8992204899777283, + "correct_pairwise": 0, + "f1": 0.9017308766052484 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.937007874015748, + "precision": 0.9616161616161616, + "correct_pairwise": 0, + "f1": 0.9491525423728813 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "de": { + "ersatz": { + "spacy_dp": { + "recall": 0.9202488687782805, + "precision": 0.9503504672897196, + "correct_pairwise": 0, + "f1": 0.9350574712643679 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.6942488262910798, + "precision": 0.7666882696046662, + "correct_pairwise": 0, + "f1": 0.7286726208808131 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.838452787258248, + "precision": 0.9189526184538653, + "correct_pairwise": 0, + "f1": 0.8768590124925639 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.00022222222222222223, + "precision": 0.6666666666666666, + "correct_pairwise": 0, + "f1": 0.00044429634566255696 + } + }, + "ted2020-corrupted-social-media": {}, + "legal-CD_jug": {}, + "legal-CD_jug-corrupted-asr": {}, + "legal-CD_jug-corrupted-social-media": {}, + "legal-gesCode": {}, + "legal-gesCode-corrupted-asr": {}, + "legal-gesCode-corrupted-social-media": {}, + "legal-all-laws": { + "spacy_dp": { + "recall": 0.5929768620717848, + "precision": 0.7944919354544225, + "correct_pairwise": 0.0, + "f1": 0.678502657105934 + } + }, + "legal-all-laws-corrupted-asr": { + "spacy_dp": { + "recall": 0.00018426386585590566, + "precision": 0.16666666666666666, + "correct_pairwise": 0.0, + "f1": 0.000368120743603902 + } + }, + "legal-all-laws-corrupted-social-media": {}, + "legal-all-judgements": { + "spacy_dp": { + "recall": 0.6250474316231315, + "precision": 0.7088479534185868, + "correct_pairwise": 0.0, + "f1": 0.6576812011883165 + } + }, + "legal-all-judgements-corrupted-asr": { + "spacy_dp": { + "recall": 0.011306203549478498, + "precision": 0.5652263374485598, + "correct_pairwise": 0.0, + "f1": 0.022007225889482316 + } + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "el": { + "opus100": { + "spacy_dp": { + "recall": 0.8844221105527639, + "precision": 0.8989784335981839, + "correct_pairwise": 0, + "f1": 0.891640866873065 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9146341463414634, + "precision": 0.9615384615384616, + "correct_pairwise": 0, + "f1": 0.9375000000000001 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0034444444444444444, + "precision": 0.3229166666666667, + "correct_pairwise": 0, + "f1": 0.006816182937554969 + } + }, + "ted2020-corrupted-social-media": {} + }, + "en": { + "ersatz": { + "spacy_dp": { + "recall": 0.9600519180847995, + "precision": 0.9203649937785151, + "correct_pairwise": 0, + "f1": 0.9397896520081881 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.8609085810431857, + "precision": 0.9164179104477612, + "correct_pairwise": 0, + "f1": 0.8877964141122036 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.8732251521298174, + "precision": 0.9663299663299664, + "correct_pairwise": 0, + "f1": 0.9174214171550347 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {}, + "legal-CD_scotus": {}, + "legal-CD_scotus-corrupted-asr": {}, + "legal-CD_scotus-corrupted-social-media": {}, + "legal-CD_cyber_crime": {}, + "legal-CD_cyber_crime-corrupted-asr": {}, + "legal-CD_cyber_crime-corrupted-social-media": {}, + "legal-CD_intellectual_property": {}, + "legal-CD_intellectual_property-corrupted-asr": {}, + "legal-CD_intellectual_property-corrupted-social-media": {}, + "legal-CD_bva": {}, + "legal-CD_bva-corrupted-asr": {}, + "legal-CD_bva-corrupted-social-media": {}, + "legal-all-judgements": { + "spacy_dp": { + "recall": 0.809353050430616, + "precision": 0.8256017933295092, + "correct_pairwise": 0.0, + "f1": 0.8139672157555427 + } + }, + "legal-all-judgements-corrupted-asr": { + "spacy_dp": { + "recall": 0.0008068458875978191, + "precision": 0.020604727398205656, + "correct_pairwise": 0.0, + "f1": 0.0015406011575137654 + } + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "eo": { + "opus100": { + "spacy_dp": { + "recall": 0.8457655636567583, + "precision": 0.9251533742331288, + "correct_pairwise": 0, + "f1": 0.8836800468795781 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "es": { + "ersatz": { + "spacy_dp": { + "recall": 0.9535727239753355, + "precision": 0.9909536373916321, + "correct_pairwise": 0, + "f1": 0.9719038817005545 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.8921953958450309, + "precision": 0.9153225806451613, + "correct_pairwise": 0, + "f1": 0.903611032129656 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9896640826873385, + "precision": 0.9833119383825417, + "correct_pairwise": 0, + "f1": 0.986477784932389 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.00022222222222222223, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.0004443457009553433 + } + }, + "ted2020-corrupted-social-media": {}, + "legal-CD_wipolex": {}, + "legal-CD_wipolex-corrupted-asr": {}, + "legal-CD_wipolex-corrupted-social-media": {}, + "legal-CD_multi_legal": {}, + "legal-CD_multi_legal-corrupted-asr": {}, + "legal-CD_multi_legal-corrupted-social-media": {}, + "legal-CriminalCode": {}, + "legal-CriminalCode-corrupted-asr": {}, + "legal-CriminalCode-corrupted-social-media": {}, + "legal-CivilCode": {}, + "legal-CivilCode-corrupted-asr": {}, + "legal-CivilCode-corrupted-social-media": {}, + "legal-constitution": {}, + "legal-constitution-corrupted-asr": {}, + "legal-constitution-corrupted-social-media": {}, + "legal-all-laws": { + "spacy_dp": { + "recall": 0.7719608128010266, + "precision": 0.9710974960047031, + "correct_pairwise": 0.20218579234972678, + "f1": 0.8520410296265981 + } + }, + "legal-all-laws-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + } + }, + "legal-all-laws-corrupted-social-media": {}, + "legal-all-judgements": { + "spacy_dp": { + "recall": 0.5584242272996296, + "precision": 0.8943712092950141, + "correct_pairwise": 0.0, + "f1": 0.6768126285646107 + } + }, + "legal-all-judgements-corrupted-asr": { + "spacy_dp": { + "recall": 0.007819912505792663, + "precision": 0.2735042735042735, + "correct_pairwise": 0.0, + "f1": 0.01500094629132969 + } + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "et": { + "ersatz": { + "spacy_dp": { + "recall": 0.962534435261708, + "precision": 0.977069351230425, + "correct_pairwise": 0, + "f1": 0.9697474326949764 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.8461538461538461, + "precision": 0.8954248366013072, + "correct_pairwise": 0, + "f1": 0.8700923787528868 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9083679114799447, + "precision": 0.9654538772510106, + "correct_pairwise": 0, + "f1": 0.9360413326207019 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.00011111111111111112, + "precision": 0.5, + "correct_pairwise": 0, + "f1": 0.00022217285047767166 + } + }, + "ted2020-corrupted-social-media": {}, + "short-sequences": { + "spacy_dp": { + "recall": 0.797742848572509, + "precision": 0.9808925021914392, + "correct_pairwise": 0.47783251231527096, + "f1": 0.853932413643405 + } + }, + "short-sequences-corrupted-asr": { + "spacy_dp": { + "recall": 0.2780591304670904, + "precision": 1.0, + "correct_pairwise": 0.0, + "f1": 0.41700835327030683 + } + }, + "short-sequences-corrupted-social-media": {} + }, + "eu": { + "opus100": { + "spacy_dp": { + "recall": 0.7574396406513195, + "precision": 0.8630838131797824, + "correct_pairwise": 0, + "f1": 0.8068181818181819 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9302038295243977, + "precision": 0.9856020942408377, + "correct_pairwise": 0, + "f1": 0.9571020019065777 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "fa": { + "opus100": { + "spacy_dp": { + "recall": 0.45712694877505566, + "precision": 0.6751644736842105, + "correct_pairwise": 0, + "f1": 0.5451527224435591 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9992360580595875, + "precision": 0.9969512195121951, + "correct_pairwise": 0, + "f1": 0.9980923311713087 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.00011111111111111112, + "precision": 0.25, + "correct_pairwise": 0, + "f1": 0.00022212350066637052 + } + }, + "ted2020-corrupted-social-media": {} + }, + "fi": { + "ersatz": { + "spacy_dp": { + "recall": 0.928173719376392, + "precision": 0.9731465265615878, + "correct_pairwise": 0, + "f1": 0.9501282416642919 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.9379888268156424, + "precision": 0.9194961664841182, + "correct_pairwise": 0, + "f1": 0.9286504424778762 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.8934953538241601, + "precision": 0.963020030816641, + "correct_pairwise": 0, + "f1": 0.9269558769002596 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "fr": { + "ersatz": { + "spacy_dp": { + "recall": 0.9370395177494977, + "precision": 0.9921985815602837, + "correct_pairwise": 0, + "f1": 0.9638305201515673 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.8286358511837655, + "precision": 0.8739595719381689, + "correct_pairwise": 0, + "f1": 0.8506944444444444 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9438502673796791, + "precision": 0.9778393351800554, + "correct_pairwise": 0, + "f1": 0.9605442176870749 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.00011111111111111112, + "precision": 0.25, + "correct_pairwise": 0, + "f1": 0.00022212350066637052 + } + }, + "ted2020-corrupted-social-media": {}, + "legal-CD_swiss_judgement": {}, + "legal-CD_swiss_judgement-corrupted-asr": {}, + "legal-CD_swiss_judgement-corrupted-social-media": {}, + "legal-CriminalCode": {}, + "legal-CriminalCode-corrupted-asr": {}, + "legal-CriminalCode-corrupted-social-media": {}, + "legal-CivilCode": {}, + "legal-CivilCode-corrupted-asr": {}, + "legal-CivilCode-corrupted-social-media": {}, + "legal-constitution": {}, + "legal-constitution-corrupted-asr": {}, + "legal-constitution-corrupted-social-media": {}, + "legal-all-laws": { + "spacy_dp": { + "recall": 0.5430177518729712, + "precision": 0.7372314776726542, + "correct_pairwise": 0.1655773420479303, + "f1": 0.6122465655902699 + } + }, + "legal-all-laws-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + } + }, + "legal-all-laws-corrupted-social-media": {}, + "legal-all-judgements": { + "spacy_dp": { + "recall": 0.8136576618840008, + "precision": 0.8524152516626565, + "correct_pairwise": 0.0, + "f1": 0.8266024799701818 + } + }, + "legal-all-judgements-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + } + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "fy": { + "opus100": { + "spacy_dp": { + "recall": 0.12880143112701253, + "precision": 0.6923076923076923, + "correct_pairwise": 0, + "f1": 0.21719457013574664 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {} + }, + "ga": { + "opus100": { + "spacy_dp": { + "recall": 0.452914798206278, + "precision": 0.9319492502883506, + "correct_pairwise": 0, + "f1": 0.6095812900792154 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9534313725490197, + "precision": 0.9725, + "correct_pairwise": 0, + "f1": 0.9628712871287128 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "gd": { + "opus100": { + "spacy_dp": { + "recall": 0.25308641975308643, + "precision": 0.6473684210526316, + "correct_pairwise": 0, + "f1": 0.363905325443787 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.4673469387755102, + "precision": 0.9621848739495799, + "correct_pairwise": 0, + "f1": 0.6291208791208791 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {} + }, + "gl": { + "opus100": { + "spacy_dp": { + "recall": 0.867152466367713, + "precision": 0.897852582704585, + "correct_pairwise": 0, + "f1": 0.8822355289421157 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.875, + "precision": 0.9722222222222222, + "correct_pairwise": 0, + "f1": 0.9210526315789473 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "gu": { + "ersatz": { + "spacy_dp": { + "recall": 0.02292576419213974, + "precision": 0.1099476439790576, + "correct_pairwise": 0, + "f1": 0.037940379403794036 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.02875215641173088, + "precision": 0.2976190476190476, + "correct_pairwise": 0, + "f1": 0.05243838489774515 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.006740626316528577, + "precision": 0.0730593607305936, + "correct_pairwise": 0, + "f1": 0.012342504499871431 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ha": { + "opus100": { + "spacy_dp": { + "recall": 0.9655364091161757, + "precision": 0.8174117647058824, + "correct_pairwise": 0, + "f1": 0.8853211009174312 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "he": { + "opus100": { + "spacy_dp": { + "recall": 0.9354120267260579, + "precision": 0.9017713365539453, + "correct_pairwise": 0, + "f1": 0.9182836840666849 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.886685552407932, + "precision": 0.9968152866242038, + "correct_pairwise": 0, + "f1": 0.9385307346326837 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "hi": { + "ersatz": { + "spacy_dp": { + "recall": 0.11331569664902998, + "precision": 0.4233937397034596, + "correct_pairwise": 0, + "f1": 0.17878260869565218 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.3997747747747748, + "precision": 0.7768052516411379, + "correct_pairwise": 0, + "f1": 0.5278810408921932 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.0006600660066006601, + "precision": 0.005917159763313609, + "correct_pairwise": 0, + "f1": 0.0011876484560570072 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0023333333333333335, + "precision": 0.10096153846153846, + "correct_pairwise": 0, + "f1": 0.004561251086012163 + } + }, + "ted2020-corrupted-social-media": {} + }, + "hu": { + "opus100": { + "spacy_dp": { + "recall": 0.9384443200895355, + "precision": 0.9209225700164745, + "correct_pairwise": 0, + "f1": 0.9296008869179602 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9900990099009901, + "precision": 0.975609756097561, + "correct_pairwise": 0, + "f1": 0.9828009828009828 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.00011111111111111112, + "precision": 0.043478260869565216, + "correct_pairwise": 0, + "f1": 0.0002216557685913776 + } + }, + "ted2020-corrupted-social-media": {} + }, + "hy": { + "opus100": { + "spacy_dp": { + "recall": 0.14129746835443038, + "precision": 0.8424528301886792, + "correct_pairwise": 0, + "f1": 0.24200542005420056 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.06542056074766354, + "precision": 0.4069767441860465, + "correct_pairwise": 0, + "f1": 0.11272141706924314 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "id": { + "opus100": { + "spacy_dp": { + "recall": 0.8772029562251279, + "precision": 0.9151838671411625, + "correct_pairwise": 0, + "f1": 0.8957910014513788 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9844444444444445, + "precision": 0.9714912280701754, + "correct_pairwise": 0, + "f1": 0.9779249448123621 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ig": { + "opus100": { + "spacy_dp": { + "recall": 0.18653198653198652, + "precision": 0.7466307277628033, + "correct_pairwise": 0, + "f1": 0.29849137931034475 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "is": { + "opus100": { + "spacy_dp": { + "recall": 0.9631284916201117, + "precision": 0.9364475828354155, + "correct_pairwise": 0, + "f1": 0.949600660974938 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9638009049773756, + "precision": 0.938719832109129, + "correct_pairwise": 0, + "f1": 0.9510950457155007 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "it": { + "opus100": { + "spacy_dp": { + "recall": 0.8480941704035875, + "precision": 0.867545871559633, + "correct_pairwise": 0, + "f1": 0.8577097505668934 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.8799076212471132, + "precision": 0.9694656488549618, + "correct_pairwise": 0, + "f1": 0.9225181598062954 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {}, + "legal-CD_multi_legal": {}, + "legal-CD_multi_legal-corrupted-asr": {}, + "legal-CD_multi_legal-corrupted-social-media": {}, + "legal-CD_swiss_judgement": {}, + "legal-CD_swiss_judgement-corrupted-asr": {}, + "legal-CD_swiss_judgement-corrupted-social-media": {}, + "legal-CriminalCode": {}, + "legal-CriminalCode-corrupted-asr": {}, + "legal-CriminalCode-corrupted-social-media": {}, + "legal-CivilCode": {}, + "legal-CivilCode-corrupted-asr": {}, + "legal-CivilCode-corrupted-social-media": {}, + "legal-constitution": {}, + "legal-constitution-corrupted-asr": {}, + "legal-constitution-corrupted-social-media": {}, + "legal-all-laws": { + "spacy_dp": { + "recall": 0.5268200963335908, + "precision": 0.5930653744929315, + "correct_pairwise": 0.125, + "f1": 0.5384060549262739 + } + }, + "legal-all-laws-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0014204545454545455, + "f1": 0.0 + } + }, + "legal-all-laws-corrupted-social-media": {}, + "legal-all-judgements": { + "spacy_dp": { + "recall": 0.7531369243767247, + "precision": 0.736497603661552, + "correct_pairwise": 0.0, + "f1": 0.736498935685725 + } + }, + "legal-all-judgements-corrupted-asr": { + "spacy_dp": { + "recall": 0.0020469180956228373, + "precision": 0.0663265306122449, + "correct_pairwise": 0.0, + "f1": 0.003907190271968741 + } + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "ja": { + "ersatz": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.0005580357142857143, + "precision": 0.022222222222222223, + "correct_pairwise": 0, + "f1": 0.0010887316276537832 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "jv": { + "ud": { + "spacy_dp": { + "recall": 0.9933333333333333, + "precision": 0.9644012944983819, + "correct_pairwise": 0, + "f1": 0.9786535303776683 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {} + }, + "ka": { + "opus100": { + "spacy_dp": { + "recall": 0.24555555555555555, + "precision": 0.8735177865612648, + "correct_pairwise": 0, + "f1": 0.3833477883781439 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "kk": { + "ersatz": { + "spacy_dp": { + "recall": 0.9722530521642619, + "precision": 0.9658213891951488, + "correct_pairwise": 0, + "f1": 0.9690265486725664 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.28211009174311924, + "precision": 0.826890756302521, + "correct_pairwise": 0, + "f1": 0.4206926036767849 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9723991507430998, + "precision": 0.950207468879668, + "correct_pairwise": 0, + "f1": 0.9611752360965372 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "km": { + "ersatz": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "kn": { + "opus100": { + "spacy_dp": { + "recall": 0.05521472392638037, + "precision": 0.4326923076923077, + "correct_pairwise": 0, + "f1": 0.09793253536452665 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.005842259006815969, + "precision": 0.08571428571428572, + "correct_pairwise": 0, + "f1": 0.010938924339106653 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ko": { + "opus100": { + "spacy_dp": { + "recall": 0.3707865168539326, + "precision": 0.8108108108108109, + "correct_pairwise": 0, + "f1": 0.5088666152659985 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9975704567541303, + "precision": 0.9980554205153136, + "correct_pairwise": 0, + "f1": 0.997812879708384 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.12233333333333334, + "precision": 0.6608643457382953, + "correct_pairwise": 0, + "f1": 0.20645040315019692 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ku": { + "opus100": { + "spacy_dp": { + "recall": 0.16002310803004044, + "precision": 0.8244047619047619, + "correct_pairwise": 0, + "f1": 0.2680212868892114 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ky": { + "opus100": { + "spacy_dp": { + "recall": 0.12698412698412698, + "precision": 0.7529411764705882, + "correct_pairwise": 0, + "f1": 0.21731748726655348 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "la": { + "ud": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "lt": { + "ersatz": { + "spacy_dp": { + "recall": 0.9111111111111111, + "precision": 0.9568261376896149, + "correct_pairwise": 0, + "f1": 0.93340922026181 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.6642376681614349, + "precision": 0.9025133282559025, + "correct_pairwise": 0, + "f1": 0.7652567000322893 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9056910569105691, + "precision": 0.9720767888307156, + "correct_pairwise": 0, + "f1": 0.9377104377104377 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.00022222222222222223, + "precision": 0.6666666666666666, + "correct_pairwise": 0, + "f1": 0.00044429634566255696 + } + }, + "ted2020-corrupted-social-media": {} + }, + "lv": { + "ersatz": { + "spacy_dp": { + "recall": 0.9790633608815427, + "precision": 0.993847874720358, + "correct_pairwise": 0, + "f1": 0.9864002220371914 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.663661971830986, + "precision": 0.9153069153069153, + "correct_pairwise": 0, + "f1": 0.7694317439581972 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9774193548387097, + "precision": 0.9920486435921422, + "correct_pairwise": 0, + "f1": 0.9846796657381616 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0006666666666666666, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.0013324450366422385 + } + }, + "ted2020-corrupted-social-media": {} + }, + "mg": { + "opus100": { + "spacy_dp": { + "recall": 0.7587176602924635, + "precision": 0.917687074829932, + "correct_pairwise": 0, + "f1": 0.8306650246305418 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "mk": { + "opus100": { + "spacy_dp": { + "recall": 0.9533333333333334, + "precision": 0.9122807017543859, + "correct_pairwise": 0, + "f1": 0.932355338223309 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ml": { + "opus100": { + "spacy_dp": { + "recall": 0.26674107142857145, + "precision": 0.7071005917159763, + "correct_pairwise": 0, + "f1": 0.38735818476499195 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0069801616458486405, + "precision": 0.06209150326797386, + "correct_pairwise": 0, + "f1": 0.012549537648612946 + } + }, + "ted2020-corrupted-social-media": {} + }, + "mn": { + "opus100": { + "spacy_dp": { + "recall": 0.19724284199363734, + "precision": 0.9815303430079155, + "correct_pairwise": 0, + "f1": 0.328476821192053 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "mr": { + "opus100": { + "spacy_dp": { + "recall": 0.7929490766648013, + "precision": 0.9503688799463448, + "correct_pairwise": 0, + "f1": 0.8645515558267237 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.8809523809523809, + "precision": 0.9736842105263158, + "correct_pairwise": 0, + "f1": 0.925 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.003777777777777778, + "precision": 0.26356589147286824, + "correct_pairwise": 0, + "f1": 0.0074487895716946004 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ms": { + "opus100": { + "spacy_dp": { + "recall": 0.8346681922196796, + "precision": 0.9210858585858586, + "correct_pairwise": 0, + "f1": 0.8757503001200481 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "mt": { + "opus100": { + "spacy_dp": { + "recall": 0.4622747747747748, + "precision": 0.697536108751062, + "correct_pairwise": 0, + "f1": 0.5560447003047749 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.8841201716738197, + "precision": 0.8306451612903226, + "correct_pairwise": 0, + "f1": 0.8565488565488565 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "my": { + "opus100": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ne": { + "opus100": { + "spacy_dp": { + "recall": 0.03407755581668625, + "precision": 0.5576923076923077, + "correct_pairwise": 0, + "f1": 0.06423034330011074 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0005367686527106817, + "precision": 0.024390243902439025, + "correct_pairwise": 0, + "f1": 0.001050420168067227 + } + }, + "ted2020-corrupted-social-media": {} + }, + "nl": { + "opus100": { + "spacy_dp": { + "recall": 0.9705555555555555, + "precision": 0.8926928972917731, + "correct_pairwise": 0, + "f1": 0.9299973383018366 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.8955223880597015, + "precision": 0.9619238476953907, + "correct_pairwise": 0, + "f1": 0.927536231884058 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "no": { + "opus100": { + "spacy_dp": { + "recall": 0.9736989367655288, + "precision": 0.9265175718849841, + "correct_pairwise": 0, + "f1": 0.9495225102319237 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.954727793696275, + "precision": 0.9840519787359716, + "correct_pairwise": 0, + "f1": 0.9691681210005817 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {} + }, + "pa": { + "opus100": { + "spacy_dp": { + "recall": 0.025611838360842343, + "precision": 0.4891304347826087, + "correct_pairwise": 0, + "f1": 0.048674959437533805 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.020527859237536656, + "precision": 0.15217391304347827, + "correct_pairwise": 0, + "f1": 0.03617571059431524 + } + }, + "ted2020-corrupted-social-media": {} + }, + "pl": { + "ersatz": { + "spacy_dp": { + "recall": 0.911504424778761, + "precision": 0.9548088064889919, + "correct_pairwise": 0, + "f1": 0.9326542161856254 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.9214806505888952, + "precision": 0.9183901621017329, + "correct_pairwise": 0, + "f1": 0.91993281075028 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9603612644254892, + "precision": 0.976530612244898, + "correct_pairwise": 0, + "f1": 0.9683784467493044 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.001, + "precision": 0.6, + "correct_pairwise": 0, + "f1": 0.0019966722129783694 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ps": { + "ersatz": { + "spacy_dp": { + "recall": 0.905829596412556, + "precision": 0.9840566873339238, + "correct_pairwise": 0, + "f1": 0.9433241350031839 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.012376237623762377, + "precision": 0.7142857142857143, + "correct_pairwise": 0, + "f1": 0.024330900243309 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "pt": { + "opus100": { + "spacy_dp": { + "recall": 0.927007299270073, + "precision": 0.9061470911086718, + "correct_pairwise": 0, + "f1": 0.9164585067998889 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9123809523809524, + "precision": 0.9896694214876033, + "correct_pairwise": 0, + "f1": 0.9494549058473736 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.00011111111111111112, + "precision": 0.5, + "correct_pairwise": 0, + "f1": 0.00022217285047767166 + } + }, + "ted2020-corrupted-social-media": {}, + "legal-CivilCode": {}, + "legal-CivilCode-corrupted-asr": {}, + "legal-CivilCode-corrupted-social-media": {}, + "legal-CD_wipolex": {}, + "legal-CD_wipolex-corrupted-asr": {}, + "legal-CD_wipolex-corrupted-social-media": {}, + "legal-CriminalCode": {}, + "legal-CriminalCode-corrupted-asr": {}, + "legal-CriminalCode-corrupted-social-media": {}, + "legal-constitution": {}, + "legal-constitution-corrupted-asr": {}, + "legal-constitution-corrupted-social-media": {}, + "legal-all-laws": { + "spacy_dp": { + "recall": 0.5659702227229676, + "precision": 0.8441405837426906, + "correct_pairwise": 0.10344827586206896, + "f1": 0.6453821632414989 + } + }, + "legal-all-laws-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + } + }, + "legal-all-laws-corrupted-social-media": {}, + "legal-all-judgements": { + "spacy_dp": { + "recall": 0.727548404207832, + "precision": 0.8081849683472037, + "correct_pairwise": 0.0, + "f1": 0.7603588516644859 + } + }, + "legal-all-judgements-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0.0, + "f1": 0.0 + } + }, + "legal-all-judgements-corrupted-social-media": {} + }, + "ro": { + "ersatz": { + "spacy_dp": { + "recall": 0.9255555555555556, + "precision": 0.9719953325554259, + "correct_pairwise": 0, + "f1": 0.9482071713147411 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.909652076318743, + "precision": 0.915819209039548, + "correct_pairwise": 0, + "f1": 0.9127252252252253 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9809725158562368, + "precision": 0.9778714436248683, + "correct_pairwise": 0, + "f1": 0.9794195250659631 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ru": { + "ersatz": { + "spacy_dp": { + "recall": 0.9147025813692481, + "precision": 0.9509918319719953, + "correct_pairwise": 0, + "f1": 0.9324942791762014 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.770501138952164, + "precision": 0.734926670287887, + "correct_pairwise": 0, + "f1": 0.7522935779816513 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.7727272727272727, + "precision": 0.9216867469879518, + "correct_pairwise": 0, + "f1": 0.8406593406593407 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "si": { + "opus100": { + "spacy_dp": { + "recall": 0.6804932735426009, + "precision": 0.8442280945757997, + "correct_pairwise": 0, + "f1": 0.7535692116697704 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.004310344827586207, + "precision": 0.045454545454545456, + "correct_pairwise": 0, + "f1": 0.007874015748031496 + } + }, + "ted2020-corrupted-social-media": {} + }, + "sk": { + "opus100": { + "spacy_dp": { + "recall": 0.8996074032529445, + "precision": 0.9331006399069226, + "correct_pairwise": 0, + "f1": 0.9160479725870931 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.8301886792452831, + "precision": 0.9887640449438202, + "correct_pairwise": 0, + "f1": 0.9025641025641026 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "sl": { + "opus100": { + "spacy_dp": { + "recall": 0.9464882943143813, + "precision": 0.9060832443970117, + "correct_pairwise": 0, + "f1": 0.925845147219193 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9757155247181266, + "precision": 0.9868421052631579, + "correct_pairwise": 0, + "f1": 0.981247274313127 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.00022222222222222223, + "precision": 0.6666666666666666, + "correct_pairwise": 0, + "f1": 0.00044429634566255696 + } + }, + "ted2020-corrupted-social-media": {}, + "short-sequences": { + "spacy_dp": { + "recall": 0.679992174044594, + "precision": 0.971770702415863, + "correct_pairwise": 0.31708211143695014, + "f1": 0.7729565420731193 + } + }, + "short-sequences-corrupted-asr": { + "spacy_dp": { + "recall": 0.4661208862821763, + "precision": 0.9965175953079178, + "correct_pairwise": 0.0344574780058651, + "f1": 0.6238615998696797 + } + }, + "short-sequences-corrupted-social-media": {} + }, + "sq": { + "opus100": { + "spacy_dp": { + "recall": 0.928369994359842, + "precision": 0.9236812570145904, + "correct_pairwise": 0, + "f1": 0.9260196905766526 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 1.0, + "precision": 1.0, + "correct_pairwise": 1, + "f1": 1.0 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "sr": { + "opus100": { + "spacy_dp": { + "recall": 0.9693080357142857, + "precision": 0.9244278871740287, + "correct_pairwise": 0, + "f1": 0.9463361481885045 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9572649572649573, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.9781659388646288 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {}, + "short-sequences": { + "spacy_dp": { + "recall": 0.8490885416666666, + "precision": 0.9791666666666665, + "correct_pairwise": 0.6510416666666666, + "f1": 0.8910269129019128 + } + }, + "short-sequences-corrupted-asr": { + "spacy_dp": { + "recall": 0.43632812499999996, + "precision": 1.0, + "correct_pairwise": 0.005208333333333333, + "f1": 0.5994212962962973 + } + }, + "short-sequences-corrupted-social-media": {} + }, + "sv": { + "opus100": { + "spacy_dp": { + "recall": 0.9452819653824679, + "precision": 0.9166215484569572, + "correct_pairwise": 0, + "f1": 0.9307311709730621 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9484425349087003, + "precision": 0.9474248927038627, + "correct_pairwise": 0, + "f1": 0.9479334406870639 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ta": { + "ersatz": { + "spacy_dp": { + "recall": 0.620575221238938, + "precision": 0.75, + "correct_pairwise": 0, + "f1": 0.679176755447942 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.2598870056497175, + "precision": 0.6199460916442049, + "correct_pairwise": 0, + "f1": 0.3662420382165605 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.6018518518518519, + "precision": 0.6842105263157895, + "correct_pairwise": 0, + "f1": 0.6403940886699506 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.017793594306049824, + "precision": 0.11936339522546419, + "correct_pairwise": 0, + "f1": 0.030970406056434967 + } + }, + "ted2020-corrupted-social-media": {} + }, + "te": { + "opus100": { + "spacy_dp": { + "recall": 0.4883720930232558, + "precision": 0.9308108108108109, + "correct_pairwise": 0, + "f1": 0.640625 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.12636439966414778, + "precision": 0.40511440107671604, + "correct_pairwise": 0, + "f1": 0.19264 + } + }, + "ted2020-corrupted-social-media": {} + }, + "tg": { + "opus100": { + "spacy_dp": { + "recall": 0.6497490239821528, + "precision": 0.7463164638052531, + "correct_pairwise": 0, + "f1": 0.6946929039952296 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "th": { + "opus100": { + "spacy_dp": { + "recall": 0.12626262626262627, + "precision": 0.78125, + "correct_pairwise": 0, + "f1": 0.21739130434782608 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.01, + "precision": 0.34615384615384615, + "correct_pairwise": 0, + "f1": 0.019438444924406047 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.006111111111111111, + "precision": 0.2412280701754386, + "correct_pairwise": 0, + "f1": 0.011920242739488513 + } + }, + "ted2020-corrupted-social-media": {} + }, + "tr": { + "ersatz": { + "spacy_dp": { + "recall": 0.9298375184638109, + "precision": 0.9752130131680867, + "correct_pairwise": 0, + "f1": 0.9519848771266539 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.954443194600675, + "precision": 0.9177934018388318, + "correct_pairwise": 0, + "f1": 0.9357595809208713 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9737373737373738, + "precision": 0.9757085020242915, + "correct_pairwise": 0, + "f1": 0.9747219413549039 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "uk": { + "opus100": { + "spacy_dp": { + "recall": 0.8922389726409827, + "precision": 0.8912437255995538, + "correct_pairwise": 0, + "f1": 0.8917410714285715 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9331683168316832, + "precision": 0.9448621553884712, + "correct_pairwise": 0, + "f1": 0.9389788293897883 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "ur": { + "opus100": { + "spacy_dp": { + "recall": 0.19047619047619047, + "precision": 0.6403162055335968, + "correct_pairwise": 0, + "f1": 0.29361123697326685 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "uz": { + "opus100": { + "spacy_dp": { + "recall": 0.6660997732426304, + "precision": 0.6081780538302277, + "correct_pairwise": 0, + "f1": 0.6358225108225108 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "vi": { + "opus100": { + "spacy_dp": { + "recall": 0.875, + "precision": 0.9296543359611886, + "correct_pairwise": 0, + "f1": 0.9014995589532491 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.9847222222222223, + "precision": 0.9365918097754293, + "correct_pairwise": 0, + "f1": 0.9600541638456331 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "xh": { + "opus100": { + "spacy_dp": { + "recall": 0.5192861255037421, + "precision": 0.8549763033175355, + "correct_pairwise": 0, + "f1": 0.6461318051575932 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {} + }, + "yi": { + "opus100": { + "spacy_dp": { + "recall": 0.020905923344947737, + "precision": 0.96, + "correct_pairwise": 0, + "f1": 0.040920716112531966 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {} + }, + "yo": { + "opus100": { + "spacy_dp": { + "recall": 0.17103235747303544, + "precision": 0.6649769585253457, + "correct_pairwise": 0, + "f1": 0.2720844725181484 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.7587412587412588, + "precision": 0.8282442748091603, + "correct_pairwise": 0, + "f1": 0.791970802919708 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {} + }, + "zh": { + "ersatz": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ersatz-corrupted-asr": {}, + "ersatz-corrupted-social-media": {}, + "opus100": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {}, + "ud": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ud-corrupted-asr": {}, + "ud-corrupted-social-media": {}, + "ted2020-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "ted2020-corrupted-social-media": {} + }, + "zu": { + "opus100": { + "spacy_dp": { + "recall": 0.1538918597742127, + "precision": 0.7254901960784313, + "correct_pairwise": 0, + "f1": 0.25392156862745097 + } + }, + "opus100-corrupted-asr": {}, + "opus100-corrupted-social-media": {} + }, + "tr-de_TR": { + "code-switching": { + "spacy_dp": { + "recall": 0.9986187845303868, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.9993089149965445 + } + }, + "code-switching-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-social-media": {} + }, + "tr-de_DE": { + "code-switching": { + "spacy_dp": { + "recall": 0.9986187845303868, + "precision": 1.0, + "correct_pairwise": 0, + "f1": 0.9993089149965445 + } + }, + "code-switching-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-social-media": {} + }, + "es-en_ES": { + "code-switching": { + "spacy_dp": { + "recall": 0.7766666666666666, + "precision": 0.9957264957264957, + "correct_pairwise": 0, + "f1": 0.8726591760299625 + } + }, + "code-switching-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-social-media": {} + }, + "es-en_EN": { + "code-switching": { + "spacy_dp": { + "recall": 0.7766666666666666, + "precision": 0.9957264957264957, + "correct_pairwise": 0, + "f1": 0.8726591760299625 + } + }, + "code-switching-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-social-media": {} + }, + "vi-en_VI": { + "code-switching": { + "spacy_dp": { + "recall": 0.0016339869281045752, + "precision": 0.5, + "correct_pairwise": 0, + "f1": 0.003257328990228013 + } + }, + "code-switching-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-social-media": {} + }, + "vi-en_EN": { + "code-switching": { + "spacy_dp": { + "recall": 0.0016339869281045752, + "precision": 0.5, + "correct_pairwise": 0, + "f1": 0.003257328990228013 + } + }, + "code-switching-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-social-media": {} + }, + "en-de_EN": { + "code-switching": { + "spacy_dp": { + "recall": 0.8441558441558441, + "precision": 0.8488805970149254, + "correct_pairwise": 0, + "f1": 0.8465116279069768 + } + }, + "code-switching-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-social-media": {}, + "short-sequences": { + "spacy_dp": { + "recall": 0.946311929004237, + "precision": 0.9433599566260463, + "correct_pairwise": 0.6964656964656964, + "f1": 0.9330828034336727 + } + }, + "short-sequences-corrupted-asr": { + "spacy_dp": { + "recall": 0.38094752400241794, + "precision": 0.9958419958419958, + "correct_pairwise": 0.10602910602910603, + "f1": 0.5094625591005684 + } + }, + "short-sequences-corrupted-social-media": {} + }, + "en-de_DE": { + "code-switching": { + "spacy_dp": { + "recall": 0.8441558441558441, + "precision": 0.8488805970149254, + "correct_pairwise": 0, + "f1": 0.8465116279069768 + } + }, + "code-switching-corrupted-asr": { + "spacy_dp": { + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "f1": 0.0 + } + }, + "code-switching-corrupted-social-media": {}, + "short-sequences": { + "spacy_dp": { + "recall": 0.946311929004237, + "precision": 0.9433599566260463, + "correct_pairwise": 0.6964656964656964, + "f1": 0.9330828034336727 + } + }, + "short-sequences-corrupted-asr": { + "spacy_dp": { + "recall": 0.38094752400241794, + "precision": 0.9958419958419958, + "correct_pairwise": 0.10602910602910603, + "f1": 0.5094625591005684 + } + }, + "short-sequences-corrupted-social-media": {} + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/command-r.json b/wtpsplit/evaluation/evaluation_results/main/command-r.json new file mode 100644 index 00000000..b3814fc1 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/command-r.json @@ -0,0 +1,7417 @@ +{ + "af": { + "opus100": { + "command-r": { + "f1": 0.5578496299181924, + "recall": 0.4105504587155963, + "precision": 0.8699878493317132, + "correct_pairwise": 0, + "hallucination_rate": 0.006414780658416851, + "deletion_rate": 0.004517009363383993 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.3749498193496588, + "recall": 0.2677752293577982, + "precision": 0.6251673360107095, + "correct_pairwise": 0, + "hallucination_rate": 0.003561887800534283, + "deletion_rate": 0.0018798852280597605 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5010615711252654, + "recall": 0.40341880341880343, + "precision": 0.6610644257703081, + "correct_pairwise": 0, + "hallucination_rate": 0.005024738019415764, + "deletion_rate": 0.0019944683805137135 + } + }, + "ud": { + "command-r": { + "f1": 0.8613569321533923, + "recall": 0.7643979057591623, + "precision": 0.9864864864864865, + "correct_pairwise": 0, + "hallucination_rate": 0.001169313155620329, + "deletion_rate": 0.0018302292870579064 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.760989010989011, + "recall": 0.725130890052356, + "precision": 0.8005780346820809, + "correct_pairwise": 0, + "hallucination_rate": 0.007071089395086367, + "deletion_rate": 0.006778611244924644 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "am": { + "opus100": { + "command-r": { + "f1": 0.06559083810515356, + "recall": 0.0350974930362117, + "precision": 0.5, + "correct_pairwise": 0, + "hallucination_rate": 0.019289566220986345, + "deletion_rate": 0.022529241443545286 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.011037527593818984, + "recall": 0.005571030640668524, + "precision": 0.5882352941176471, + "correct_pairwise": 0, + "hallucination_rate": 0.002434693172413239, + "deletion_rate": 0.03192421113530627 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.0, + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "hallucination_rate": 0.06266277939747328, + "deletion_rate": 0.020719144800777453 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ar": { + "opus100": { + "command-r": { + "f1": 0.4446308724832215, + "recall": 0.29575892857142855, + "precision": 0.8952702702702703, + "correct_pairwise": 0, + "hallucination_rate": 0.012625604763676964, + "deletion_rate": 0.006084852995906215 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.3486556808326106, + "recall": 0.22433035714285715, + "precision": 0.7821011673151751, + "correct_pairwise": 0, + "hallucination_rate": 0.03129372612789774, + "deletion_rate": 0.0036682675944484365 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.20871712088120786, + "recall": 0.12211111111111111, + "precision": 0.7178314826910516, + "correct_pairwise": 0, + "hallucination_rate": 0.027267025299489638, + "deletion_rate": 0.003991026371744522 + } + }, + "ud": { + "command-r": { + "f1": 0.7559471365638767, + "recall": 0.7009803921568627, + "precision": 0.8202676864244742, + "correct_pairwise": 0, + "hallucination_rate": 0.004437769341655409, + "deletion_rate": 0.009781205895893553 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6337522441651705, + "recall": 0.576797385620915, + "precision": 0.703187250996016, + "correct_pairwise": 0, + "hallucination_rate": 0.011385980154556679, + "deletion_rate": 0.0028121999176917096 + } + }, + "ersatz": { + "command-r": { + "f1": 0.558237145855194, + "recall": 0.39320029563932, + "precision": 0.9620253164556962, + "correct_pairwise": 0, + "hallucination_rate": 0.009535279629093016, + "deletion_rate": 0.008738409156766155 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.2720097146326655, + "recall": 0.1655580192165558, + "precision": 0.7619047619047619, + "correct_pairwise": 0, + "hallucination_rate": 0.02766320645905421, + "deletion_rate": 0.003607843137254902 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "az": { + "opus100": { + "command-r": { + "f1": 0.6045102659037361, + "recall": 0.5002785515320334, + "precision": 0.7636054421768708, + "correct_pairwise": 0, + "hallucination_rate": 0.1920297182045984, + "deletion_rate": 0.02672879940211896 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.30994152046783624, + "recall": 0.20668523676880224, + "precision": 0.6193656093489148, + "correct_pairwise": 0, + "hallucination_rate": 0.30896023039059956, + "deletion_rate": 0.01929273716740039 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.32039699707341907, + "recall": 0.20680026281208935, + "precision": 0.7108977978543196, + "correct_pairwise": 0, + "hallucination_rate": 0.4056503741767093, + "deletion_rate": 0.020134938113007483 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "be": { + "opus100": { + "command-r": { + "f1": 0.36134453781512604, + "recall": 0.24335031126202603, + "precision": 0.7014681892332789, + "correct_pairwise": 0, + "hallucination_rate": 0.004731058807569694, + "deletion_rate": 0.009445160415112256 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.1899810964083176, + "recall": 0.11381653454133635, + "precision": 0.5742857142857143, + "correct_pairwise": 0, + "hallucination_rate": 0.0064017071218991735, + "deletion_rate": 0.0010847337067662489 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.16555237185609678, + "recall": 0.09374436632413917, + "precision": 0.7074829931972789, + "correct_pairwise": 0, + "hallucination_rate": 0.0038197819971265605, + "deletion_rate": 0.0004000447361855519 + } + }, + "ud": { + "command-r": { + "f1": 0.6805369127516779, + "recall": 0.5232198142414861, + "precision": 0.9731285988483686, + "correct_pairwise": 0, + "hallucination_rate": 0.002034228521220919, + "deletion_rate": 0.004202162203461053 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.17610062893081763, + "recall": 0.10113519091847266, + "precision": 0.6805555555555556, + "correct_pairwise": 0, + "hallucination_rate": 0.005249658173398405, + "deletion_rate": 0.0040619978642075115 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "bg": { + "opus100": { + "command-r": { + "f1": 0.5794753086419753, + "recall": 0.41791875347801893, + "precision": 0.9446540880503145, + "correct_pairwise": 0, + "hallucination_rate": 0.002949633154868134, + "deletion_rate": 0.001499603410668253 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.1296579887697805, + "recall": 0.07067334446299388, + "precision": 0.7839506172839507, + "correct_pairwise": 0, + "hallucination_rate": 0.004367663689895878, + "deletion_rate": 0.00019498498615606598 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.19033646322378717, + "recall": 0.1081351411424761, + "precision": 0.7936378466557912, + "correct_pairwise": 0, + "hallucination_rate": 0.007492848072808842, + "deletion_rate": 0.001159872129964969 + } + }, + "ud": { + "command-r": { + "f1": 0.7694189602446484, + "recall": 0.6264940239043825, + "precision": 0.9968304278922345, + "correct_pairwise": 0, + "hallucination_rate": 0.004909832372546528, + "deletion_rate": 0.003084529984635113 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.19237435008665513, + "recall": 0.11055776892430279, + "precision": 0.74, + "correct_pairwise": 0, + "hallucination_rate": 0.0028029245834376975, + "deletion_rate": 0.0003220381436290121 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "bn": { + "opus100": { + "command-r": { + "f1": 0.04774823657080846, + "recall": 0.024581005586592177, + "precision": 0.8301886792452831, + "correct_pairwise": 0, + "hallucination_rate": 5.041302672610603e-05, + "deletion_rate": 0.9137649168545152 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.003342618384401114, + "recall": 0.0016759776536312849, + "precision": 0.6, + "correct_pairwise": 0, + "hallucination_rate": 0.0001359184489306416, + "deletion_rate": 0.9009714171497102 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.0, + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "hallucination_rate": 3.4195828108970706e-05, + "deletion_rate": 0.9443565485010829 + } + }, + "ud": { + "command-r": { + "f1": 0.5915492957746479, + "recall": 0.42, + "precision": 1.0, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.5524316109422492 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.0, + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "hallucination_rate": 0.018231540565177756, + "deletion_rate": 0.5013673655423884 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ca": { + "opus100": { + "command-r": { + "f1": 0.6596745027124773, + "recall": 0.5140924464487034, + "precision": 0.9202825428859738, + "correct_pairwise": 0, + "hallucination_rate": 0.0023203538539627293, + "deletion_rate": 0.0037394988450024343 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.3791851553045583, + "recall": 0.2649379932356257, + "precision": 0.6666666666666666, + "correct_pairwise": 0, + "hallucination_rate": 0.009288122654112857, + "deletion_rate": 0.00411391733994953 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5155131264916468, + "recall": 0.396440489432703, + "precision": 0.7368203431879264, + "correct_pairwise": 0, + "hallucination_rate": 0.008450256815676684, + "deletion_rate": 0.007481749427673039 + } + }, + "ud": { + "command-r": { + "f1": 0.7663482733284349, + "recall": 0.6279349789283564, + "precision": 0.9830348727615457, + "correct_pairwise": 0, + "hallucination_rate": 0.0015913824633664426, + "deletion_rate": 0.007679423357883863 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6170662905500705, + "recall": 0.526791089704997, + "precision": 0.7446808510638298, + "correct_pairwise": 0, + "hallucination_rate": 0.0053416854183137704, + "deletion_rate": 0.015295262421699204 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ceb": { + "opus100": { + "command-r": {} + }, + "opus100-corrupted-asr": { + "command-r": {} + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.28125, + "recall": 0.1836734693877551, + "precision": 0.6, + "correct_pairwise": 0, + "hallucination_rate": 0.01685866816521495, + "deletion_rate": 0.0008429334082607474 + } + }, + "ud": { + "command-r": { + "f1": 0.8990228013029316, + "recall": 0.8165680473372781, + "precision": 1.0, + "correct_pairwise": 0, + "hallucination_rate": 0.002751031636863824, + "deletion_rate": 0.000343878954607978 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.5, + "recall": 0.35502958579881655, + "precision": 0.8450704225352113, + "correct_pairwise": 0, + "hallucination_rate": 0.0055288032816122705, + "deletion_rate": 0.0017834849295523454 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "cs": { + "opus100": { + "command-r": { + "f1": 0.6899501069137562, + "recall": 0.5459672870840383, + "precision": 0.9370764762826719, + "correct_pairwise": 0, + "hallucination_rate": 0.004554212646698196, + "deletion_rate": 0.006259123022128802 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.5121765601217655, + "recall": 0.3795826283135928, + "precision": 0.7871345029239766, + "correct_pairwise": 0, + "hallucination_rate": 0.011525981887742748, + "deletion_rate": 0.003946922369121991 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5075252714339199, + "recall": 0.3766392531673705, + "precision": 0.7778287812715171, + "correct_pairwise": 0, + "hallucination_rate": 0.015059925038934347, + "deletion_rate": 0.003884804783912713 + } + }, + "ud": { + "command-r": { + "f1": 0.6892768079800499, + "recall": 0.5298499287983349, + "precision": 0.9859355890746025, + "correct_pairwise": 0, + "hallucination_rate": 0.002406545804588481, + "deletion_rate": 0.00504156114758726 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6424403183023873, + "recall": 0.5308493150684932, + "precision": 0.8134340890008396, + "correct_pairwise": 0, + "hallucination_rate": 0.00996626198981861, + "deletion_rate": 0.004187774470400119 + } + }, + "ersatz": { + "command-r": { + "f1": 0.6641221374045801, + "recall": 0.5041854475209272, + "precision": 0.9726708074534162, + "correct_pairwise": 0, + "hallucination_rate": 0.0027071660277204366, + "deletion_rate": 0.006823945738720141 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.6377708978328174, + "recall": 0.5305859626529298, + "precision": 0.7992240543161979, + "correct_pairwise": 0, + "hallucination_rate": 0.007842405566121771, + "deletion_rate": 0.002371379733731372 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "cy": { + "opus100": { + "command-r": { + "f1": 0.39799635701275043, + "recall": 0.26484848484848483, + "precision": 0.8003663003663004, + "correct_pairwise": 0, + "hallucination_rate": 0.008955276399591823, + "deletion_rate": 0.003448397199056969 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.18099999999999997, + "recall": 0.1096969696969697, + "precision": 0.5171428571428571, + "correct_pairwise": 0, + "hallucination_rate": 0.00537984698151492, + "deletion_rate": 0.002587538859621363 + } + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": { + "f1": 0.8079561042524006, + "recall": 0.6872812135355892, + "precision": 0.9800332778702163, + "correct_pairwise": 0, + "hallucination_rate": 0.0011155241737766009, + "deletion_rate": 0.0011277826811807393 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.4228660924040721, + "recall": 0.31505250875145857, + "precision": 0.6428571428571429, + "correct_pairwise": 0, + "hallucination_rate": 0.0034728799646397677, + "deletion_rate": 0.0025131022289575046 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "da": { + "opus100": { + "command-r": { + "f1": 0.7537112010796222, + "recall": 0.6254199328107503, + "precision": 0.9482173174872666, + "correct_pairwise": 0, + "hallucination_rate": 0.0028991434017102756, + "deletion_rate": 0.005842102572715921 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.5332409972299168, + "recall": 0.4311310190369541, + "precision": 0.6987295825771325, + "correct_pairwise": 0, + "hallucination_rate": 0.004485627836611195, + "deletion_rate": 0.005007564296520424 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5614441416893733, + "recall": 0.45804156941202623, + "precision": 0.7251451698046806, + "correct_pairwise": 0, + "hallucination_rate": 0.008269846967944371, + "deletion_rate": 0.003894394465173453 + } + }, + "ud": { + "command-r": { + "f1": 0.7383863080684596, + "recall": 0.594488188976378, + "precision": 0.9741935483870968, + "correct_pairwise": 0, + "hallucination_rate": 0.001614326206521127, + "deletion_rate": 0.001802038556116607 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.5995423340961098, + "recall": 0.515748031496063, + "precision": 0.7158469945355191, + "correct_pairwise": 0, + "hallucination_rate": 0.0024615742445680613, + "deletion_rate": 0.0011435659876339814 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "de": { + "opus100": { + "command-r": { + "f1": 0.7616279069767442, + "recall": 0.6919014084507042, + "precision": 0.8469827586206896, + "correct_pairwise": 0, + "hallucination_rate": 0.0033190996233735154, + "deletion_rate": 0.021212006701180265 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.5877976190476191, + "recall": 0.4636150234741784, + "precision": 0.8028455284552846, + "correct_pairwise": 0, + "hallucination_rate": 0.009414510795565064, + "deletion_rate": 0.02557219736756792 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5560322885608319, + "recall": 0.42487219382084906, + "precision": 0.804334104775931, + "correct_pairwise": 0, + "hallucination_rate": 0.012909191874365403, + "deletion_rate": 0.01215871149721997 + } + }, + "ud": { + "command-r": { + "f1": 0.8525434642627173, + "recall": 0.7531285551763367, + "precision": 0.9821958456973294, + "correct_pairwise": 0, + "hallucination_rate": 0.005317151873687202, + "deletion_rate": 0.03173040822332038 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.7038801906058544, + "recall": 0.5881683731513083, + "precision": 0.8762711864406779, + "correct_pairwise": 0, + "hallucination_rate": 0.0067933793160846, + "deletion_rate": 0.029327008104199827 + } + }, + "ersatz": { + "command-r": { + "f1": 0.7593433461404121, + "recall": 0.6148190045248869, + "precision": 0.9926940639269406, + "correct_pairwise": 0, + "hallucination_rate": 0.002734820849092496, + "deletion_rate": 0.019497347984692166 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.61794500723589, + "recall": 0.4830316742081448, + "precision": 0.857429718875502, + "correct_pairwise": 0, + "hallucination_rate": 0.01173433572609316, + "deletion_rate": 0.025900681596884127 + } + }, + "legal-all-judgements": { + "command-r": { + "f1": 0.5574282127576015, + "f1_success": 0.5574282127576015, + "recall": 0.395119329240012, + "recall_success": 0.395119329240012, + "precision": 0.9613304664937231, + "precision_success": 0.9613304664937231, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.003284928909576044, + "hallucination_rate_success": 0.003284928909576044, + "deletion_rate": 0.018504864246254762, + "deletion_rate_success": 0.018504864246254762 + } + }, + "legal-all-judgements-corrupted-asr": { + "command-r": { + "f1": 0.4538489619087348, + "f1_success": 0.4538489619087348, + "recall": 0.3140160582057992, + "recall_success": 0.3140160582057992, + "precision": 0.8566800093138417, + "precision_success": 0.8566800093138417, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.011387247763065707, + "hallucination_rate_success": 0.011387247763065707, + "deletion_rate": 0.020100430577313772, + "deletion_rate_success": 0.020100430577313772 + } + }, + "legal-all-laws": { + "command-r": { + "f1": 0.6426847481261577, + "f1_success": 0.6426847481261577, + "recall": 0.4896334539570413, + "recall_success": 0.4896334539570413, + "precision": 0.9395963712496572, + "precision_success": 0.9395963712496572, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.011491805858697912, + "hallucination_rate_success": 0.011491805858697912, + "deletion_rate": 0.03201969885267037, + "deletion_rate_success": 0.03201969885267037 + } + }, + "legal-all-laws-corrupted-asr": { + "command-r": { + "f1": 0.6409905137874913, + "f1_success": 0.6409905137874913, + "recall": 0.4984533298178948, + "recall_success": 0.4984533298178948, + "precision": 0.8984300633726647, + "precision_success": 0.8984300633726647, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.009138970315355613, + "hallucination_rate_success": 0.009138970315355613, + "deletion_rate": 0.03397841524938666, + "deletion_rate_success": 0.03397841524938666 + } + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "el": { + "opus100": { + "command-r": { + "f1": 0.6511627906976744, + "recall": 0.49246231155778897, + "precision": 0.9607843137254902, + "correct_pairwise": 0, + "hallucination_rate": 0.00497964177164376, + "deletion_rate": 0.0015005830290749909 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.18799212598425197, + "recall": 0.10664433277498604, + "precision": 0.7925311203319502, + "correct_pairwise": 0, + "hallucination_rate": 0.009285980721283154, + "deletion_rate": 0.002159530400298408 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.1904947409427347, + "recall": 0.10866666666666666, + "precision": 0.7712933753943217, + "correct_pairwise": 0, + "hallucination_rate": 0.00721127718487924, + "deletion_rate": 0.0023761378934805794 + } + }, + "ud": { + "command-r": { + "f1": 0.6666666666666667, + "recall": 0.5048780487804878, + "precision": 0.981042654028436, + "correct_pairwise": 0, + "hallucination_rate": 0.002838357921744708, + "deletion_rate": 0.0014592687620269404 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.4351005484460695, + "recall": 0.29024390243902437, + "precision": 0.8686131386861314, + "correct_pairwise": 0, + "hallucination_rate": 0.004631064003261313, + "deletion_rate": 0.005038728088055442 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "en": { + "opus100": { + "command-r": { + "f1": 0.8945022288261517, + "recall": 0.8440830061693775, + "precision": 0.9513274336283186, + "correct_pairwise": 0, + "hallucination_rate": 0.0054419997396172376, + "deletion_rate": 0.0026689233172763963 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.717817014446228, + "recall": 0.6270330902972518, + "precision": 0.8393393393393394, + "correct_pairwise": 0, + "hallucination_rate": 0.008534736107569881, + "deletion_rate": 0.006213180531139709 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5254296249913032, + "recall": 0.41955555555555557, + "precision": 0.7027731248836776, + "correct_pairwise": 0, + "hallucination_rate": 0.005328803775428343, + "deletion_rate": 0.0035988472932455507 + } + }, + "ud": { + "command-r": { + "f1": 0.7714987714987716, + "recall": 0.6369168356997972, + "precision": 0.9781931464174455, + "correct_pairwise": 0, + "hallucination_rate": 0.003482390185991294, + "deletion_rate": 0.012811634349030472 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.5815251084934904, + "recall": 0.47565922920892495, + "precision": 0.748006379585327, + "correct_pairwise": 0, + "hallucination_rate": 0.0047836221749265224, + "deletion_rate": 0.0018648018648018648 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8716531079693547, + "recall": 0.7957888664551486, + "precision": 0.963506198707875, + "correct_pairwise": 0, + "hallucination_rate": 0.002664469138818742, + "deletion_rate": 0.012745594764383228 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.6939574201628053, + "recall": 0.6393135275454284, + "precision": 0.7588154741526875, + "correct_pairwise": 0, + "hallucination_rate": 0.009205201708358257, + "deletion_rate": 0.0072526758063086155 + } + }, + "legal-all-judgements": { + "command-r": { + "f1": 0.6895032569081385, + "f1_success": 0.6895032569081385, + "recall": 0.5455180085332269, + "recall_success": 0.5455180085332269, + "precision": 0.9482049163562982, + "precision_success": 0.9482049163562982, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0031159387589780392, + "hallucination_rate_success": 0.0031159387589780392, + "deletion_rate": 0.019178040000778485, + "deletion_rate_success": 0.019178040000778485 + } + }, + "legal-all-judgements-corrupted-asr": { + "command-r": { + "f1": 0.5602868190187108, + "f1_success": 0.5602868190187108, + "recall": 0.43883052660801414, + "recall_success": 0.43883052660801414, + "precision": 0.7874240964416931, + "precision_success": 0.7874240964416931, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0047918226361659925, + "hallucination_rate_success": 0.0047918226361659925, + "deletion_rate": 0.005481473829638015, + "deletion_rate_success": 0.005481473829638015 + } + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "en-de": { + "opus100": { + "command-r": {} + }, + "opus100-corrupted-asr": { + "command-r": {} + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": { + "f1": 0.6367432150313151, + "recall": 0.5658627087198516, + "precision": 0.7279236276849642, + "correct_pairwise": 0, + "hallucination_rate": 0.003340732270576893, + "deletion_rate": 0.03248806080581153 + } + }, + "code-switching-corrupted-asr": { + "command-r": { + "f1": 0.5108695652173912, + "recall": 0.4359925788497217, + "precision": 0.6167979002624672, + "correct_pairwise": 0, + "hallucination_rate": 0.012348517947892474, + "deletion_rate": 0.03724101455607423 + } + }, + "short-sequences": { + "command-r": { + "f1": 0.7613330697887734, + "f1_success": 0.7677174141895178, + "recall": 0.7566376910179007, + "recall_success": 0.762982661173187, + "precision": 0.8736964175858795, + "precision_success": 0.8810230122826165, + "correct_pairwise": 0.3388773388773389, + "correct_pairwise_success": 0.3417190775681342, + "hallucination_rate": 0.009170057288843415, + "hallucination_rate_success": 0.009246955043886127, + "deletion_rate": 0.02053851226979671, + "deletion_rate_success": 0.020710742980654544 + } + }, + "short-sequences-corrupted-asr": { + "command-r": { + "f1": 0.6485107266105019, + "f1_success": 0.6539489716973824, + "recall": 0.6974350641116538, + "recall_success": 0.7032835761796761, + "precision": 0.7478720297327373, + "precision_success": 0.7541434932944374, + "correct_pairwise": 0.13513513513513514, + "correct_pairwise_success": 0.13626834381551362, + "hallucination_rate": 0.01000287629457981, + "hallucination_rate_success": 0.010086757856798507, + "deletion_rate": 0.00705831630644462, + "deletion_rate_success": 0.007117505541718788 + } + } + }, + "eo": { + "opus100": { + "command-r": { + "f1": 0.8462962962962962, + "recall": 0.7689287717330342, + "precision": 0.940974605353466, + "correct_pairwise": 0, + "hallucination_rate": 0.0016528710500286325, + "deletion_rate": 0.0025378728720912075 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.5630865484880083, + "recall": 0.4542905215928211, + "precision": 0.7404021937842779, + "correct_pairwise": 0, + "hallucination_rate": 0.003256356679601639, + "deletion_rate": 0.010664568125695368 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5195465621358195, + "recall": 0.42710329210938863, + "precision": 0.6630611141157382, + "correct_pairwise": 0, + "hallucination_rate": 0.003033102654836404, + "deletion_rate": 0.0018975568333212973 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "es": { + "opus100": { + "command-r": { + "f1": 0.8010403120936281, + "recall": 0.6917462099943852, + "precision": 0.9513513513513514, + "correct_pairwise": 0, + "hallucination_rate": 0.0017744233124234623, + "deletion_rate": 0.003273935970809487 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.5708061002178649, + "recall": 0.4413250982594048, + "precision": 0.8078108941418294, + "correct_pairwise": 0, + "hallucination_rate": 0.004431636247198206, + "deletion_rate": 0.0018956131924431636 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.47013188518231186, + "recall": 0.3375292413946753, + "precision": 0.7743419371326348, + "correct_pairwise": 0, + "hallucination_rate": 0.006398207896977338, + "deletion_rate": 0.005060643984684312 + } + }, + "ud": { + "command-r": { + "f1": 0.8179808400884304, + "recall": 0.7170542635658915, + "precision": 0.9519725557461407, + "correct_pairwise": 0, + "hallucination_rate": 0.0017168951081034582, + "deletion_rate": 0.007960801743419166 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6172539489671932, + "recall": 0.49224806201550386, + "precision": 0.8273615635179153, + "correct_pairwise": 0, + "hallucination_rate": 0.010135233492488646, + "deletion_rate": 0.0014775241644346105 + } + }, + "ersatz": { + "command-r": { + "f1": 0.7684489615554575, + "recall": 0.6307580703663402, + "precision": 0.9830412662521198, + "correct_pairwise": 0, + "hallucination_rate": 0.001164681698395745, + "deletion_rate": 0.0035074630871042363 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.5332387035722734, + "recall": 0.4087776568734131, + "precision": 0.7666666666666667, + "correct_pairwise": 0, + "hallucination_rate": 0.006545067307429757, + "deletion_rate": 0.00510608087813669 + } + }, + "legal-all-judgements": { + "command-r": { + "f1": 0.5554704779938139, + "f1_success": 0.5554704779938139, + "recall": 0.4015404284142861, + "recall_success": 0.4015404284142861, + "precision": 0.9472724840314323, + "precision_success": 0.9472724840314323, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.022759368142653467, + "hallucination_rate_success": 0.022759368142653467, + "deletion_rate": 0.005819233115060146, + "deletion_rate_success": 0.005819233115060146 + } + }, + "legal-all-judgements-corrupted-asr": { + "command-r": { + "f1": 0.42768372023644, + "f1_success": 0.42768372023644, + "recall": 0.29361528345194177, + "recall_success": 0.29361528345194177, + "precision": 0.838406117520644, + "precision_success": 0.838406117520644, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.015546227090679503, + "hallucination_rate_success": 0.015546227090679503, + "deletion_rate": 0.002793596620663167, + "deletion_rate_success": 0.002793596620663167 + } + }, + "legal-all-laws": { + "command-r": { + "f1": 0.5275682620715346, + "f1_success": 0.5275682620715346, + "recall": 0.3692876917076649, + "recall_success": 0.3692876917076649, + "precision": 0.9777796265035592, + "precision_success": 0.9777796265035592, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.008082716129314693, + "hallucination_rate_success": 0.008082716129314693, + "deletion_rate": 0.00378194297465389, + "deletion_rate_success": 0.00378194297465389 + } + }, + "legal-all-laws-corrupted-asr": { + "command-r": { + "f1": 0.4451635396980757, + "f1_success": 0.4451635396980757, + "recall": 0.3023401379142773, + "recall_success": 0.3023401379142773, + "precision": 0.9162194230130549, + "precision_success": 0.9162194230130549, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.005028166468336565, + "hallucination_rate_success": 0.005028166468336565, + "deletion_rate": 0.0012719927340842062, + "deletion_rate_success": 0.0012719927340842062 + } + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "es-en": { + "opus100": { + "command-r": {} + }, + "opus100-corrupted-asr": { + "command-r": {} + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": { + "f1": 0.722107438016529, + "recall": 0.5825, + "precision": 0.9497282608695652, + "correct_pairwise": 0, + "hallucination_rate": 0.007634160242373339, + "deletion_rate": 0.008954015058343583 + } + }, + "code-switching-corrupted-asr": { + "command-r": { + "f1": 0.30369026013309136, + "recall": 0.20916666666666667, + "precision": 0.5540838852097131, + "correct_pairwise": 0, + "hallucination_rate": 0.006383210599243356, + "deletion_rate": 0.006725724338714951 + } + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "et": { + "opus100": { + "command-r": { + "f1": 0.6718694572543454, + "recall": 0.5317237507018528, + "precision": 0.9123314065510597, + "correct_pairwise": 0, + "hallucination_rate": 0.0028599993444127576, + "deletion_rate": 0.002556790244861835 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.3174603174603175, + "recall": 0.21897810218978103, + "precision": 0.5769230769230769, + "correct_pairwise": 0, + "hallucination_rate": 0.0025200458190148913, + "deletion_rate": 0.003979466293326545 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5129125811352022, + "recall": 0.4126666666666667, + "precision": 0.6774899671652681, + "correct_pairwise": 0, + "hallucination_rate": 0.0027713644830139306, + "deletion_rate": 0.0030382366184152723 + } + }, + "ud": { + "command-r": { + "f1": 0.749100148210883, + "recall": 0.6116874135546335, + "precision": 0.9661387220098306, + "correct_pairwise": 0, + "hallucination_rate": 0.0011031421863441932, + "deletion_rate": 0.003971955102434631 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.4619310931518502, + "recall": 0.3755186721991701, + "precision": 0.6, + "correct_pairwise": 0, + "hallucination_rate": 0.0015425523130026921, + "deletion_rate": 0.0015293398734908916 + } + }, + "ersatz": { + "command-r": { + "f1": 0.7716849451645065, + "recall": 0.6396694214876033, + "precision": 0.9723618090452262, + "correct_pairwise": 0, + "hallucination_rate": 0.0026939074588909723, + "deletion_rate": 0.0027628714898385812 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.47787021630615645, + "recall": 0.3955922865013774, + "precision": 0.6033613445378151, + "correct_pairwise": 0, + "hallucination_rate": 0.002377459211991586, + "deletion_rate": 0.0012152440209994167 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": { + "f1": 0.7979033218426083, + "f1_success": 0.7979033218426083, + "recall": 0.7439706402404093, + "recall_success": 0.7439706402404093, + "precision": 0.9264543748533897, + "precision_success": 0.9264543748533897, + "correct_pairwise": 0.31527093596059114, + "correct_pairwise_success": 0.31527093596059114, + "hallucination_rate": 0.010320822151753775, + "hallucination_rate_success": 0.010320822151753775, + "deletion_rate": 0.002759067244350838, + "deletion_rate_success": 0.002759067244350838 + } + }, + "short-sequences-corrupted-asr": { + "command-r": { + "f1": 0.5622178168624664, + "f1_success": 0.5622178168624664, + "recall": 0.5493002125780193, + "recall_success": 0.5493002125780193, + "precision": 0.6585059413877147, + "precision_success": 0.6585059413877147, + "correct_pairwise": 0.034482758620689655, + "correct_pairwise_success": 0.034482758620689655, + "hallucination_rate": 0.0035434640299334044, + "hallucination_rate_success": 0.0035434640299334044, + "deletion_rate": 0.0038716375690068592, + "deletion_rate_success": 0.0038716375690068592 + } + } + }, + "eu": { + "opus100": { + "command-r": { + "f1": 0.5779100037188545, + "recall": 0.43627175743964064, + "precision": 0.8557268722466961, + "correct_pairwise": 0, + "hallucination_rate": 0.0025351651946352634, + "deletion_rate": 0.0022006126029678534 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.179080824088748, + "recall": 0.12689500280741156, + "precision": 0.3041722745625841, + "correct_pairwise": 0, + "hallucination_rate": 0.0048682571178072075, + "deletion_rate": 0.002061126236291203 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.3528554070473876, + "recall": 0.2713004484304933, + "precision": 0.5045170257123002, + "correct_pairwise": 0, + "hallucination_rate": 0.004020741603451303, + "deletion_rate": 0.003460638295507838 + } + }, + "ud": { + "command-r": { + "f1": 0.7943362831858406, + "recall": 0.6930203829524397, + "precision": 0.9303482587064676, + "correct_pairwise": 0, + "hallucination_rate": 0.0025845820226560678, + "deletion_rate": 0.0028115209319624543 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.24772162386081192, + "recall": 0.18468190240889437, + "precision": 0.37610062893081764, + "correct_pairwise": 0, + "hallucination_rate": 0.002803913823359905, + "deletion_rate": 0.002667927240702727 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "fa": { + "opus100": { + "command-r": { + "f1": 0.4288642886428864, + "recall": 0.29120267260579064, + "precision": 0.8133748055987559, + "correct_pairwise": 0, + "hallucination_rate": 0.009797383441539336, + "deletion_rate": 0.031029951160190652 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.34574468085106386, + "recall": 0.21727019498607242, + "precision": 0.8459869848156182, + "correct_pairwise": 0, + "hallucination_rate": 0.010901588018518328, + "deletion_rate": 0.003880226243879405 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.1944256919664384, + "recall": 0.112, + "precision": 0.7363038714390066, + "correct_pairwise": 0, + "hallucination_rate": 0.017068034485945526, + "deletion_rate": 0.013863033231671089 + } + }, + "ud": { + "command-r": { + "f1": 0.954509177972865, + "recall": 0.9136745607333843, + "precision": 0.9991645781119465, + "correct_pairwise": 0, + "hallucination_rate": 0.0021540261674289967, + "deletion_rate": 0.0027124773960217 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6819313091090093, + "recall": 0.5233002291825821, + "precision": 0.9785714285714285, + "correct_pairwise": 0, + "hallucination_rate": 0.011608964949339443, + "deletion_rate": 0.0011993841967706132 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "fi": { + "opus100": { + "command-r": { + "f1": 0.6835352815395582, + "recall": 0.535754189944134, + "precision": 0.9438976377952756, + "correct_pairwise": 0, + "hallucination_rate": 0.002309425635559545, + "deletion_rate": 0.0025992725776743057 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.48150782361308675, + "recall": 0.3782122905027933, + "precision": 0.662426614481409, + "correct_pairwise": 0, + "hallucination_rate": 0.0025703959955936067, + "deletion_rate": 0.002386796281622635 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5232017019013429, + "recall": 0.43722222222222223, + "precision": 0.6512744124462099, + "correct_pairwise": 0, + "hallucination_rate": 0.0059211957324425135, + "deletion_rate": 0.0037823148250091974 + } + }, + "ud": { + "command-r": { + "f1": 0.752725686873092, + "recall": 0.6168691922802001, + "precision": 0.9653243847874721, + "correct_pairwise": 0, + "hallucination_rate": 0.003089856180041769, + "deletion_rate": 0.0076686409244533455 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6032786885245902, + "recall": 0.5260900643316655, + "precision": 0.7070124879923151, + "correct_pairwise": 0, + "hallucination_rate": 0.003718747057953277, + "deletion_rate": 0.004539157801299208 + } + }, + "ersatz": { + "command-r": { + "f1": 0.7880398671096346, + "recall": 0.6603563474387528, + "precision": 0.9769357495881383, + "correct_pairwise": 0, + "hallucination_rate": 0.0011194309648530814, + "deletion_rate": 0.0029030219279922013 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.6068244697202583, + "recall": 0.549554565701559, + "precision": 0.6774193548387096, + "correct_pairwise": 0, + "hallucination_rate": 0.0044892280266962325, + "deletion_rate": 0.0017011239374769016 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "fr": { + "opus100": { + "command-r": { + "f1": 0.8084156837743067, + "recall": 0.7147688838782412, + "precision": 0.9303008070432869, + "correct_pairwise": 0, + "hallucination_rate": 0.0036565770123948875, + "deletion_rate": 0.001930490969276804 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.5686274509803922, + "recall": 0.4740698985343856, + "precision": 0.7103040540540541, + "correct_pairwise": 0, + "hallucination_rate": 0.007296089969618989, + "deletion_rate": 0.009985651797591593 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.4669909659485754, + "recall": 0.336, + "precision": 0.765375854214123, + "correct_pairwise": 0, + "hallucination_rate": 0.010008534076879504, + "deletion_rate": 0.006729820977125034 + } + }, + "ud": { + "command-r": { + "f1": 0.9232954545454546, + "recall": 0.8689839572192514, + "precision": 0.9848484848484849, + "correct_pairwise": 0, + "hallucination_rate": 0.0025320525702343154, + "deletion_rate": 0.001085165387243278 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.7823529411764706, + "recall": 0.7112299465240641, + "precision": 0.869281045751634, + "correct_pairwise": 0, + "hallucination_rate": 0.005104561172402437, + "deletion_rate": 0.0009468137658488391 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8460949464012252, + "recall": 0.7401205626255861, + "precision": 0.9874888293118856, + "correct_pairwise": 0, + "hallucination_rate": 0.003219210651450309, + "deletion_rate": 0.00891583452211127 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.6674698795180724, + "recall": 0.5565974547890155, + "precision": 0.8335005015045135, + "correct_pairwise": 0, + "hallucination_rate": 0.011765783750681113, + "deletion_rate": 0.0041083802276968475 + } + }, + "legal-all-judgements": { + "command-r": { + "f1": 0.6253790688751862, + "f1_success": 0.6253790688751862, + "recall": 0.4834769566500833, + "recall_success": 0.4834769566500833, + "precision": 0.9400039442324822, + "precision_success": 0.9400039442324822, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.006224528886512645, + "hallucination_rate_success": 0.006224528886512645, + "deletion_rate": 0.022572552369201315, + "deletion_rate_success": 0.022572552369201315 + } + }, + "legal-all-judgements-corrupted-asr": { + "command-r": { + "f1": 0.5433932513120631, + "f1_success": 0.5433932513120631, + "recall": 0.42396969842841054, + "recall_success": 0.42396969842841054, + "precision": 0.8078631749993206, + "precision_success": 0.8078631749993206, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.01356544353744219, + "hallucination_rate_success": 0.01356544353744219, + "deletion_rate": 0.012308120476171054, + "deletion_rate_success": 0.012308120476171054 + } + }, + "legal-all-laws": { + "command-r": { + "f1": 0.5121944722900803, + "f1_success": 0.5121944722900803, + "recall": 0.4422375397471522, + "recall_success": 0.4422375397471522, + "precision": 0.6929799658505262, + "precision_success": 0.6929799658505262, + "correct_pairwise": 0.10893246187363835, + "correct_pairwise_success": 0.10893246187363835, + "hallucination_rate": 0.01647265157233318, + "hallucination_rate_success": 0.01647265157233318, + "deletion_rate": 0.002820276469763727, + "deletion_rate_success": 0.002820276469763727 + } + }, + "legal-all-laws-corrupted-asr": { + "command-r": { + "f1": 0.5770438337112256, + "f1_success": 0.5770438337112256, + "recall": 0.550962761460483, + "recall_success": 0.550962761460483, + "precision": 0.6904632915498929, + "precision_success": 0.6904632915498929, + "correct_pairwise": 0.20697167755991286, + "correct_pairwise_success": 0.20697167755991286, + "hallucination_rate": 0.007233747906736536, + "hallucination_rate_success": 0.007233747906736536, + "deletion_rate": 0.0027985320197124255, + "deletion_rate_success": 0.0027985320197124255 + } + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "fy": { + "opus100": { + "command-r": { + "f1": 0.30603649976602715, + "recall": 0.19499105545617174, + "precision": 0.7108695652173913, + "correct_pairwise": 0, + "hallucination_rate": 0.004049343547141456, + "deletion_rate": 0.004675530693606629 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.20293978188715028, + "recall": 0.12760882528324388, + "precision": 0.49537037037037035, + "correct_pairwise": 0, + "hallucination_rate": 0.013165290328159454, + "deletion_rate": 0.0037398936400190237 + } + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ga": { + "opus100": { + "command-r": { + "f1": 0.5590062111801242, + "recall": 0.40358744394618834, + "precision": 0.9090909090909091, + "correct_pairwise": 0, + "hallucination_rate": 0.0011084097556239658, + "deletion_rate": 0.002649665656692327 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.11170471102476931, + "recall": 0.06446188340807175, + "precision": 0.41818181818181815, + "correct_pairwise": 0, + "hallucination_rate": 0.0007948569051649225, + "deletion_rate": 0.003595389006264131 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.18181818181818182, + "recall": 0.12195121951219512, + "precision": 0.35714285714285715, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.000688989940746865 + } + }, + "ud": { + "command-r": { + "f1": 0.7349397590361445, + "recall": 0.5980392156862745, + "precision": 0.953125, + "correct_pairwise": 0, + "hallucination_rate": 0.0008653070856850676, + "deletion_rate": 0.0019272748726621958 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.2735674676524954, + "recall": 0.18226600985221675, + "precision": 0.5481481481481482, + "correct_pairwise": 0, + "hallucination_rate": 0.0011870749668021407, + "deletion_rate": 0.0020522312985392943 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "gd": { + "opus100": { + "command-r": { + "f1": 0.505307855626327, + "recall": 0.36728395061728397, + "precision": 0.8095238095238095, + "correct_pairwise": 0, + "hallucination_rate": 0.0042752367965208414, + "deletion_rate": 0.0013083698816938783 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.13508771929824562, + "recall": 0.07921810699588477, + "precision": 0.4583333333333333, + "correct_pairwise": 0, + "hallucination_rate": 0.0024516427937145285, + "deletion_rate": 0.0012354735338403922 + } + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": { + "f1": 0.5417867435158501, + "recall": 0.3836734693877551, + "precision": 0.9215686274509803, + "correct_pairwise": 0, + "hallucination_rate": 0.001569189639473837, + "deletion_rate": 0.0017629167554582615 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.29102167182662536, + "recall": 0.19222903885480572, + "precision": 0.5987261146496815, + "correct_pairwise": 0, + "hallucination_rate": 0.0005862257171157694, + "deletion_rate": 0.0011926661141320827 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "gl": { + "opus100": { + "command-r": { + "f1": 0.7156527682843473, + "recall": 0.5868834080717489, + "precision": 0.9168126094570929, + "correct_pairwise": 0, + "hallucination_rate": 0.0024430251631591808, + "deletion_rate": 0.002245256459474866 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.3567921440261866, + "recall": 0.24439461883408073, + "precision": 0.6606060606060606, + "correct_pairwise": 0, + "hallucination_rate": 0.003361058002606038, + "deletion_rate": 0.008731444158943946 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.4423348501490663, + "recall": 0.31343117633978207, + "precision": 0.7513326226012793, + "correct_pairwise": 0, + "hallucination_rate": 0.008340033389638393, + "deletion_rate": 0.0027378028241044666 + } + }, + "ud": { + "command-r": { + "f1": 0.7373913043478261, + "recall": 0.5888888888888889, + "precision": 0.986046511627907, + "correct_pairwise": 0, + "hallucination_rate": 0.002872432517510034, + "deletion_rate": 0.00330526481466908 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.42389210019267826, + "recall": 0.3055555555555556, + "precision": 0.6918238993710691, + "correct_pairwise": 0, + "hallucination_rate": 0.003137885949914513, + "deletion_rate": 0.0013677964397063262 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "gu": { + "opus100": { + "command-r": { + "f1": 0.16733067729083664, + "recall": 0.09660724554341575, + "precision": 0.6245353159851301, + "correct_pairwise": 0, + "hallucination_rate": 0.09913897942306757, + "deletion_rate": 0.0041672747320458566 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.02, + "recall": 0.010350776308223116, + "precision": 0.29508196721311475, + "correct_pairwise": 0, + "hallucination_rate": 0.3481703705611207, + "deletion_rate": 0.01064816007004352 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.005299121461441919, + "recall": 0.0026681645836258952, + "precision": 0.38, + "correct_pairwise": 0, + "hallucination_rate": 0.0671734329256213, + "deletion_rate": 0.026164987636566415 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": { + "f1": 0.7484662576687117, + "recall": 0.5993449781659389, + "precision": 0.9963702359346642, + "correct_pairwise": 0, + "hallucination_rate": 0.0019964136282127915, + "deletion_rate": 0.0019964136282127915 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.012889366272824918, + "recall": 0.006550218340611353, + "precision": 0.4, + "correct_pairwise": 0, + "hallucination_rate": 0.04508595124712368, + "deletion_rate": 0.01769475925037223 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ha": { + "opus100": { + "command-r": { + "f1": 0.6575342465753425, + "recall": 0.5336297943301834, + "precision": 0.856378233719893, + "correct_pairwise": 0, + "hallucination_rate": 0.0014815122861553977, + "deletion_rate": 0.0009772782799902272 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.027382833070036864, + "recall": 0.014452473596442469, + "precision": 0.26, + "correct_pairwise": 0, + "hallucination_rate": 0.00014137734156221963, + "deletion_rate": 0.0005655093662488785 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.16666666666666669, + "recall": 0.18181818181818182, + "precision": 0.15384615384615385, + "correct_pairwise": 0, + "hallucination_rate": 0.0010351966873706005, + "deletion_rate": 0.004140786749482402 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "he": { + "opus100": { + "command-r": { + "f1": 0.6273338312173263, + "recall": 0.46770601336302897, + "precision": 0.9523809523809523, + "correct_pairwise": 0, + "hallucination_rate": 0.0060486054174465915, + "deletion_rate": 0.004996674040499358 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.33955709943551887, + "recall": 0.21770601336302894, + "precision": 0.7712031558185405, + "correct_pairwise": 0, + "hallucination_rate": 0.020594631438865266, + "deletion_rate": 0.00172027654256873 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.2348548492485765, + "recall": 0.13977777777777778, + "precision": 0.7343841214244017, + "correct_pairwise": 0, + "hallucination_rate": 0.020750120950955794, + "deletion_rate": 0.008510165505912532 + } + }, + "ud": { + "command-r": { + "f1": 0.7716262975778547, + "recall": 0.6317280453257791, + "precision": 0.9911111111111112, + "correct_pairwise": 0, + "hallucination_rate": 0.001370941125694991, + "deletion_rate": 0.003249638223869608 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.5115384615384615, + "recall": 0.37677053824362605, + "precision": 0.7964071856287425, + "correct_pairwise": 0, + "hallucination_rate": 0.019847525520093036, + "deletion_rate": 0.004703450058147048 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "hi": { + "opus100": { + "command-r": { + "f1": 0.39302035729123397, + "recall": 0.26632882882882886, + "precision": 0.7496038034865293, + "correct_pairwise": 0, + "hallucination_rate": 0.011143352982919614, + "deletion_rate": 0.013377644438511315 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.08220603537981269, + "recall": 0.04448198198198198, + "precision": 0.541095890410959, + "correct_pairwise": 0, + "hallucination_rate": 0.05939582766906464, + "deletion_rate": 0.04062107328400215 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.05380689068481497, + "recall": 0.02811111111111111, + "precision": 0.6262376237623762, + "correct_pairwise": 0, + "hallucination_rate": 0.09173451563946662, + "deletion_rate": 0.05723653440491758 + } + }, + "ud": { + "command-r": { + "f1": 0.9178812655527907, + "recall": 0.8521452145214522, + "precision": 0.9946070878274268, + "correct_pairwise": 0, + "hallucination_rate": 0.0017592892236180165, + "deletion_rate": 0.006819452207937395 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.10199004975124377, + "recall": 0.05412541254125412, + "precision": 0.8817204301075269, + "correct_pairwise": 0, + "hallucination_rate": 0.0703904263275991, + "deletion_rate": 0.050333582647718776 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8493356731010279, + "recall": 0.7469135802469136, + "precision": 0.9843114468332365, + "correct_pairwise": 0, + "hallucination_rate": 0.008269879647000204, + "deletion_rate": 0.009717861000478202 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.09971157807993407, + "recall": 0.05335097001763668, + "precision": 0.7610062893081762, + "correct_pairwise": 0, + "hallucination_rate": 0.0874913311676461, + "deletion_rate": 0.05648594570739331 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "hu": { + "opus100": { + "command-r": { + "f1": 0.6260284218399401, + "recall": 0.46838276440962506, + "precision": 0.943630214205186, + "correct_pairwise": 0, + "hallucination_rate": 0.0030114479307366978, + "deletion_rate": 0.001837868957729014 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.40542635658914733, + "recall": 0.2926692781197538, + "precision": 0.6595208070617906, + "correct_pairwise": 0, + "hallucination_rate": 0.0060877184891389565, + "deletion_rate": 0.007148457316791957 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.491903660361954, + "recall": 0.40184526456202757, + "precision": 0.6339880743598737, + "correct_pairwise": 0, + "hallucination_rate": 0.007027695375307279, + "deletion_rate": 0.007578719473753659 + } + }, + "ud": { + "command-r": { + "f1": 0.7323162274618585, + "recall": 0.6534653465346535, + "precision": 0.832807570977918, + "correct_pairwise": 0, + "hallucination_rate": 0.0020547639254924733, + "deletion_rate": 0.00588138949688063 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.4238975817923186, + "recall": 0.3688118811881188, + "precision": 0.4983277591973244, + "correct_pairwise": 0, + "hallucination_rate": 0.005925070645073076, + "deletion_rate": 0.021786028987268693 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "hy": { + "opus100": { + "command-r": { + "f1": 0.4671891449292315, + "recall": 0.31598101265822787, + "precision": 0.8959174517720951, + "correct_pairwise": 0, + "hallucination_rate": 0.004558155706598938, + "deletion_rate": 0.012487226563659415 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.25922497024203145, + "recall": 0.15518606492478226, + "precision": 0.7865168539325843, + "correct_pairwise": 0, + "hallucination_rate": 0.09665905840603525, + "deletion_rate": 0.01050267791651129 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.16142409224233842, + "recall": 0.08867651961329037, + "precision": 0.8986486486486487, + "correct_pairwise": 0, + "hallucination_rate": 0.04406136364600703, + "deletion_rate": 0.0518442614255952 + } + }, + "ud": { + "command-r": { + "f1": 0.5034770514603616, + "recall": 0.3383177570093458, + "precision": 0.9836956521739131, + "correct_pairwise": 0, + "hallucination_rate": 0.005819907986929592, + "deletion_rate": 0.0444784029392161 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.08027923211169286, + "recall": 0.04299065420560748, + "precision": 0.6052631578947368, + "correct_pairwise": 0, + "hallucination_rate": 0.006398844513116791, + "deletion_rate": 0.03197742769809546 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "id": { + "opus100": { + "command-r": { + "f1": 0.7133891213389122, + "recall": 0.5815804434337691, + "precision": 0.9224526600541028, + "correct_pairwise": 0, + "hallucination_rate": 0.005737447880976992, + "deletion_rate": 0.006643360704289149 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.44751381215469616, + "recall": 0.3223422399090392, + "precision": 0.7316129032258064, + "correct_pairwise": 0, + "hallucination_rate": 0.009241068180164447, + "deletion_rate": 0.0021586747192510127 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.3792181757434013, + "recall": 0.25227828406312514, + "precision": 0.7632817753866846, + "correct_pairwise": 0, + "hallucination_rate": 0.008124958921930136, + "deletion_rate": 0.002930424514938819 + } + }, + "ud": { + "command-r": { + "f1": 0.9168162776780372, + "recall": 0.8511111111111112, + "precision": 0.993514915693904, + "correct_pairwise": 0, + "hallucination_rate": 0.002089611881649711, + "deletion_rate": 0.004620456551058126 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.5534682080924856, + "recall": 0.4255555555555556, + "precision": 0.7913223140495868, + "correct_pairwise": 0, + "hallucination_rate": 0.007031203616532234, + "deletion_rate": 0.0035452872276362773 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ig": { + "opus100": { + "command-r": { + "f1": 0.2802617230098146, + "recall": 0.17306397306397306, + "precision": 0.7363896848137536, + "correct_pairwise": 0, + "hallucination_rate": 0.0030314097881665447, + "deletion_rate": 0.004127100073046019 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.051604782882315924, + "recall": 0.027609427609427608, + "precision": 0.3942307692307692, + "correct_pairwise": 0, + "hallucination_rate": 0.11048499321387462, + "deletion_rate": 0.001288504819008023 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.04000000000000001, + "recall": 0.021505376344086023, + "precision": 0.2857142857142857, + "correct_pairwise": 0, + "hallucination_rate": 0.0002908244874218409, + "deletion_rate": 0.0008724734622655228 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "is": { + "opus100": { + "command-r": { + "f1": 0.7772293517604475, + "recall": 0.6597765363128492, + "precision": 0.9455564451561249, + "correct_pairwise": 0, + "hallucination_rate": 0.0020208632786371983, + "deletion_rate": 0.0030455263494954957 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.2616740088105727, + "recall": 0.1659217877094972, + "precision": 0.61875, + "correct_pairwise": 0, + "hallucination_rate": 0.0015363479237144166, + "deletion_rate": 0.006204481999615913 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.36571998006975587, + "recall": 0.2593639575971731, + "precision": 0.6199324324324325, + "correct_pairwise": 0, + "hallucination_rate": 0.0012204166314623407, + "deletion_rate": 0.0012861313731564667 + } + }, + "ud": { + "command-r": { + "f1": 0.7461988304093566, + "recall": 0.6186166774402069, + "precision": 0.9400785854616895, + "correct_pairwise": 0, + "hallucination_rate": 0.0007950737757921345, + "deletion_rate": 0.0021221562518370465 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.3248333816285135, + "recall": 0.24154277095453566, + "precision": 0.4957983193277311, + "correct_pairwise": 0, + "hallucination_rate": 0.001626168055434262, + "deletion_rate": 0.0009757008332605573 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "it": { + "opus100": { + "command-r": { + "f1": 0.7858040201005024, + "recall": 0.7012331838565022, + "precision": 0.8935714285714286, + "correct_pairwise": 0, + "hallucination_rate": 0.0023042574223676587, + "deletion_rate": 0.010457783686130142 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.5572322414427677, + "recall": 0.42432735426008966, + "precision": 0.8113612004287245, + "correct_pairwise": 0, + "hallucination_rate": 0.004537077418719489, + "deletion_rate": 0.009376626665353612 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5354805500404441, + "recall": 0.4049605160716272, + "precision": 0.7901475694444444, + "correct_pairwise": 0, + "hallucination_rate": 0.005457420437680955, + "deletion_rate": 0.0030664734167639277 + } + }, + "ud": { + "command-r": { + "f1": 0.8877551020408163, + "recall": 0.8036951501154734, + "precision": 0.9914529914529915, + "correct_pairwise": 0, + "hallucination_rate": 0.005664561089682673, + "deletion_rate": 0.004583822460730058 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.7476882430647293, + "recall": 0.6535796766743649, + "precision": 0.8734567901234568, + "correct_pairwise": 0, + "hallucination_rate": 0.006475203778471852, + "deletion_rate": 0.0012188618877123486 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": { + "f1": 0.5623343897821672, + "f1_success": 0.5623343897821672, + "recall": 0.42743102722875054, + "recall_success": 0.42743102722875054, + "precision": 0.9025285981382704, + "precision_success": 0.9025285981382704, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0036082947213565753, + "hallucination_rate_success": 0.0036082947213565753, + "deletion_rate": 0.004972620377552352, + "deletion_rate_success": 0.004972620377552352 + } + }, + "legal-all-judgements-corrupted-asr": { + "command-r": { + "f1": 0.46394094912043854, + "f1_success": 0.46394094912043854, + "recall": 0.3498628134566153, + "recall_success": 0.3498628134566153, + "precision": 0.7779687095541279, + "precision_success": 0.7779687095541279, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.00464187234518331, + "hallucination_rate_success": 0.00464187234518331, + "deletion_rate": 0.007072193537346345, + "deletion_rate_success": 0.007072193537346345 + } + }, + "legal-all-laws": { + "command-r": { + "f1": 0.7034971435375462, + "f1_success": 0.7034971435375462, + "recall": 0.6642576094990867, + "recall_success": 0.6642576094990867, + "precision": 0.8218450228748527, + "precision_success": 0.8218450228748527, + "correct_pairwise": 0.421875, + "correct_pairwise_success": 0.421875, + "hallucination_rate": 0.01381756514063648, + "hallucination_rate_success": 0.01381756514063648, + "deletion_rate": 0.0031855258432613347, + "deletion_rate_success": 0.0031855258432613347 + } + }, + "legal-all-laws-corrupted-asr": { + "command-r": { + "f1": 0.4285455887775843, + "f1_success": 0.4285455887775843, + "recall": 0.4226865680878465, + "recall_success": 0.4226865680878465, + "precision": 0.4924524851726559, + "precision_success": 0.4924524851726559, + "correct_pairwise": 0.15625, + "correct_pairwise_success": 0.15625, + "hallucination_rate": 0.008380199767217643, + "hallucination_rate_success": 0.008380199767217643, + "deletion_rate": 0.005261308211497012, + "deletion_rate_success": 0.005261308211497012 + } + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ja": { + "opus100": { + "command-r": { + "f1": 0.060015588464536244, + "recall": 0.04296875, + "precision": 0.09948320413436693, + "correct_pairwise": 0, + "hallucination_rate": 0.01904568055595941, + "deletion_rate": 0.013317437701724288 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.0544, + "recall": 0.03794642857142857, + "precision": 0.096045197740113, + "correct_pairwise": 0, + "hallucination_rate": 0.024731345542606326, + "deletion_rate": 0.008718026335704556 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.04688483322844556, + "recall": 0.03311479053228136, + "precision": 0.08025855103689739, + "correct_pairwise": 0, + "hallucination_rate": 0.015655171903553488, + "deletion_rate": 0.020629412881730452 + } + }, + "ud": { + "command-r": { + "f1": 0.9072625698324022, + "recall": 0.8319672131147541, + "precision": 0.9975429975429976, + "correct_pairwise": 0, + "hallucination_rate": 0.005230601291731102, + "deletion_rate": 0.0013190211953061038 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6104972375690608, + "recall": 0.45286885245901637, + "precision": 0.9364406779661016, + "correct_pairwise": 0, + "hallucination_rate": 0.030665280665280667, + "deletion_rate": 0.001323001323001323 + } + }, + "ersatz": { + "command-r": { + "f1": 0.5974376264329063, + "recall": 0.45954356846473027, + "precision": 0.8535645472061657, + "correct_pairwise": 0, + "hallucination_rate": 0.00492601358502184, + "deletion_rate": 0.011987915872924243 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.2426584234930448, + "recall": 0.1628630705394191, + "precision": 0.47575757575757577, + "correct_pairwise": 0, + "hallucination_rate": 0.037288204626914304, + "deletion_rate": 0.005030140110785272 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "jv": { + "opus100": { + "command-r": {} + }, + "opus100-corrupted-asr": { + "command-r": {} + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": { + "f1": 0.8328115216030056, + "recall": 0.7388888888888889, + "precision": 0.9540889526542324, + "correct_pairwise": 0, + "hallucination_rate": 0.0002920820369547273, + "deletion_rate": 0.0014477109657756047 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.2147293700088731, + "recall": 0.13444444444444445, + "precision": 0.5330396475770925, + "correct_pairwise": 0, + "hallucination_rate": 0.0009835420628155531, + "deletion_rate": 0.0008655170152776867 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ka": { + "opus100": { + "command-r": { + "f1": 0.2564802182810369, + "recall": 0.15666666666666668, + "precision": 0.706766917293233, + "correct_pairwise": 0, + "hallucination_rate": 0.05284869464878119, + "deletion_rate": 0.007082071253425646 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.010471204188481676, + "recall": 0.005555555555555556, + "precision": 0.09090909090909091, + "correct_pairwise": 0, + "hallucination_rate": 0.03311102761600601, + "deletion_rate": 0.008328636733671489 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.010779892201077989, + "recall": 0.0054444444444444445, + "precision": 0.5384615384615384, + "correct_pairwise": 0, + "hallucination_rate": 0.02785161084659776, + "deletion_rate": 0.044429167333149555 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "kk": { + "opus100": { + "command-r": { + "f1": 0.3454384410983171, + "recall": 0.22362385321100917, + "precision": 0.7587548638132295, + "correct_pairwise": 0, + "hallucination_rate": 0.005155603600607031, + "deletion_rate": 0.003471716940731347 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.10797174571140263, + "recall": 0.06135321100917431, + "precision": 0.4495798319327731, + "correct_pairwise": 0, + "hallucination_rate": 0.25405175794013857, + "deletion_rate": 0.0003921056071101817 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.07532281205164994, + "recall": 0.03993154592127781, + "precision": 0.6624605678233438, + "correct_pairwise": 0, + "hallucination_rate": 0.03664701483268635, + "deletion_rate": 0.000761057129493342 + } + }, + "ud": { + "command-r": { + "f1": 0.8610778443113773, + "recall": 0.7632696390658175, + "precision": 0.9876373626373627, + "correct_pairwise": 0, + "hallucination_rate": 0.0030279204376265118, + "deletion_rate": 0.001355036217943356 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.1499513145082765, + "recall": 0.08174097664543524, + "precision": 0.9058823529411765, + "correct_pairwise": 0, + "hallucination_rate": 0.10674902125933898, + "deletion_rate": 0.001450563848205512 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8666249217282405, + "recall": 0.7680355160932297, + "precision": 0.9942528735632183, + "correct_pairwise": 0, + "hallucination_rate": 0.0024683478962730762, + "deletion_rate": 0.0011168570329144337 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.06131078224101479, + "recall": 0.03218645948945616, + "precision": 0.6444444444444445, + "correct_pairwise": 0, + "hallucination_rate": 0.0010846932351944215, + "deletion_rate": 0.00048423805142608107 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "km": { + "opus100": { + "command-r": { + "f1": 0.04270109235352532, + "recall": 0.024627720504009163, + "precision": 0.16044776119402984, + "correct_pairwise": 0, + "hallucination_rate": 0.0020174699596506008, + "deletion_rate": 0.4572229858555403 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.024287222808870117, + "recall": 0.013172966781214204, + "precision": 0.1554054054054054, + "correct_pairwise": 0, + "hallucination_rate": 0.04215773099893272, + "deletion_rate": 0.3743215932057134 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.0, + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "hallucination_rate": 0.0601661889935875, + "deletion_rate": 0.727478917091074 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": { + "f1": 0.06699864191942055, + "recall": 0.03483992467043315, + "precision": 0.8705882352941177, + "correct_pairwise": 0, + "hallucination_rate": 0.018520080998987512, + "deletion_rate": 0.7897823152210597 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.0046801872074883, + "recall": 0.002824858757062147, + "precision": 0.013636363636363636, + "correct_pairwise": 0, + "hallucination_rate": 0.00748937493521302, + "deletion_rate": 0.7741309906361218 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "kn": { + "opus100": { + "command-r": { + "f1": 0.0547645125958379, + "recall": 0.03067484662576687, + "precision": 0.25510204081632654, + "correct_pairwise": 0, + "hallucination_rate": 0.35152338340257805, + "deletion_rate": 0.10338766379034836 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.02561117578579744, + "recall": 0.013496932515337423, + "precision": 0.25, + "correct_pairwise": 0, + "hallucination_rate": 0.42863593036672853, + "deletion_rate": 0.10888978076556464 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.0, + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "hallucination_rate": 0.015026764652513156, + "deletion_rate": 0.5478928506623117 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ko": { + "opus100": { + "command-r": { + "f1": 0.3893728222996516, + "recall": 0.25112359550561797, + "precision": 0.8662790697674418, + "correct_pairwise": 0, + "hallucination_rate": 0.030282336873336944, + "deletion_rate": 0.004309228342006735 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.3030861354214648, + "recall": 0.18483146067415732, + "precision": 0.8414322250639387, + "correct_pairwise": 0, + "hallucination_rate": 0.04141288128959664, + "deletion_rate": 0.0029353489396051957 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.2248363532871644, + "recall": 0.13166666666666665, + "precision": 0.7689811810512654, + "correct_pairwise": 0, + "hallucination_rate": 0.03466090035016553, + "deletion_rate": 0.0038410496430262594 + } + }, + "ud": { + "command-r": { + "f1": 0.7990694969467869, + "recall": 0.6676384839650146, + "precision": 0.9949312092686459, + "correct_pairwise": 0, + "hallucination_rate": 0.011041788641686182, + "deletion_rate": 0.008910275175644028 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.3613979348689436, + "recall": 0.22108843537414966, + "precision": 0.9891304347826086, + "correct_pairwise": 0, + "hallucination_rate": 0.02842950652244557, + "deletion_rate": 0.006629218699224735 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ku": { + "opus100": { + "command-r": { + "f1": 0.2984514312529329, + "recall": 0.18370883882149047, + "precision": 0.795, + "correct_pairwise": 0, + "hallucination_rate": 0.021396677621392683, + "deletion_rate": 0.006183260246331499 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.2233201581027668, + "recall": 0.13056036972848065, + "precision": 0.7713310580204779, + "correct_pairwise": 0, + "hallucination_rate": 0.04932901341973161, + "deletion_rate": 0.009029819403611928 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.06255265374894693, + "recall": 0.033, + "precision": 0.5987903225806451, + "correct_pairwise": 0, + "hallucination_rate": 0.023040927081352944, + "deletion_rate": 0.0024369588136677095 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ky": { + "opus100": { + "command-r": { + "f1": 0.26464208242950105, + "recall": 0.16137566137566137, + "precision": 0.7349397590361446, + "correct_pairwise": 0, + "hallucination_rate": 0.009137289340526074, + "deletion_rate": 0.012294567808305106 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.12536273940800927, + "recall": 0.07142857142857142, + "precision": 0.5118483412322274, + "correct_pairwise": 0, + "hallucination_rate": 0.005934913056808725, + "deletion_rate": 0.0011607025535456178 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.07161125319693094, + "recall": 0.037940379403794036, + "precision": 0.6363636363636364, + "correct_pairwise": 0, + "hallucination_rate": 0.0004728611477015571, + "deletion_rate": 0.0001013273887931908 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "la": { + "opus100": { + "command-r": {} + }, + "opus100-corrupted-asr": { + "command-r": {} + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.25, + "recall": 0.2, + "precision": 0.3333333333333333, + "correct_pairwise": 0, + "hallucination_rate": 0.004143646408839779, + "deletion_rate": 0.0 + } + }, + "ud": { + "command-r": { + "f1": 0.6514886164623468, + "recall": 0.49206349206349204, + "precision": 0.9637305699481865, + "correct_pairwise": 0, + "hallucination_rate": 0.005912718647408315, + "deletion_rate": 0.0026355141257827764 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.4476430370636921, + "recall": 0.3291005291005291, + "precision": 0.6996625421822272, + "correct_pairwise": 0, + "hallucination_rate": 0.0028169180088279144, + "deletion_rate": 0.001903482252827231 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "lt": { + "opus100": { + "command-r": { + "f1": 0.7027972027972028, + "recall": 0.5633408071748879, + "precision": 0.9340148698884758, + "correct_pairwise": 0, + "hallucination_rate": 0.0022364501356097995, + "deletion_rate": 0.007385176292739318 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.407513270722744, + "recall": 0.2797085201793722, + "precision": 0.750375939849624, + "correct_pairwise": 0, + "hallucination_rate": 0.00859626265295152, + "deletion_rate": 0.006587279171260147 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5380975919779677, + "recall": 0.42361574382921946, + "precision": 0.7373717824656474, + "correct_pairwise": 0, + "hallucination_rate": 0.006444175937113731, + "deletion_rate": 0.004334415358956003 + } + }, + "ud": { + "command-r": { + "f1": 0.6572972972972974, + "recall": 0.4943089430894309, + "precision": 0.9806451612903225, + "correct_pairwise": 0, + "hallucination_rate": 0.001429087189361574, + "deletion_rate": 0.0017750767194175342 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.44962884411452814, + "recall": 0.34471544715447155, + "precision": 0.6463414634146342, + "correct_pairwise": 0, + "hallucination_rate": 0.08040064194417379, + "deletion_rate": 0.002994784203588009 + } + }, + "ersatz": { + "command-r": { + "f1": 0.7826086956521738, + "recall": 0.65, + "precision": 0.9831932773109243, + "correct_pairwise": 0, + "hallucination_rate": 0.0009783900048919501, + "deletion_rate": 0.0036262550181312752 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.4697406340057637, + "recall": 0.3622222222222222, + "precision": 0.6680327868852459, + "correct_pairwise": 0, + "hallucination_rate": 0.010345100522399873, + "deletion_rate": 0.002517017571632104 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "lv": { + "opus100": { + "command-r": { + "f1": 0.7044590390597996, + "recall": 0.5740845070422536, + "precision": 0.9114490161001789, + "correct_pairwise": 0, + "hallucination_rate": 0.003784505788067676, + "deletion_rate": 0.004225619207809768 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.33049817739975695, + "recall": 0.22985915492957745, + "precision": 0.5878962536023055, + "correct_pairwise": 0, + "hallucination_rate": 0.014695844884683121, + "deletion_rate": 0.006854971223445939 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.4435242039126089, + "recall": 0.3451111111111111, + "precision": 0.620455453455853, + "correct_pairwise": 0, + "hallucination_rate": 0.0036678337667301404, + "deletion_rate": 0.0027245985107530184 + } + }, + "ud": { + "command-r": { + "f1": 0.6945857014657494, + "recall": 0.5350230414746544, + "precision": 0.989769820971867, + "correct_pairwise": 0, + "hallucination_rate": 0.0011010350658762753, + "deletion_rate": 0.0030429450132867524 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.45951359084406296, + "recall": 0.3702166897187644, + "precision": 0.6055806938159879, + "correct_pairwise": 0, + "hallucination_rate": 0.005367368123956545, + "deletion_rate": 0.002071363990796064 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8267840301791889, + "recall": 0.7245179063360881, + "precision": 0.9626647144948756, + "correct_pairwise": 0, + "hallucination_rate": 0.001239841333261936, + "deletion_rate": 0.0024838017407207555 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.4933028422084286, + "recall": 0.41597796143250687, + "precision": 0.6059390048154093, + "correct_pairwise": 0, + "hallucination_rate": 0.003872482569605446, + "deletion_rate": 0.0019130148353667033 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "mg": { + "opus100": { + "command-r": { + "f1": 0.6403867608776497, + "recall": 0.484251968503937, + "precision": 0.9451152579582875, + "correct_pairwise": 0, + "hallucination_rate": 0.0018144208883862749, + "deletion_rate": 0.0027735230542393747 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.01994750656167979, + "recall": 0.010686164229471317, + "precision": 0.14960629921259844, + "correct_pairwise": 0, + "hallucination_rate": 0.00041072975475699733, + "deletion_rate": 0.0004443349165098426 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.009852216748768473, + "recall": 0.0051813471502590676, + "precision": 0.1, + "correct_pairwise": 0, + "hallucination_rate": 5.678914191606565e-05, + "deletion_rate": 0.00039752399341245955 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "mk": { + "opus100": { + "command-r": { + "f1": 0.48187808896210876, + "recall": 0.325, + "precision": 0.9315286624203821, + "correct_pairwise": 0, + "hallucination_rate": 0.004050292734427488, + "deletion_rate": 0.04775890200595067 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.054284193720063864, + "recall": 0.028333333333333332, + "precision": 0.6455696202531646, + "correct_pairwise": 0, + "hallucination_rate": 0.009102601170476865, + "deletion_rate": 0.0005383794777719065 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.18158313444709626, + "recall": 0.10148955091151624, + "precision": 0.8613207547169811, + "correct_pairwise": 0, + "hallucination_rate": 0.028490035318918933, + "deletion_rate": 0.0007238760446166513 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ml": { + "opus100": { + "command-r": { + "f1": 0.006670372429127293, + "recall": 0.0033482142857142855, + "precision": 0.8571428571428571, + "correct_pairwise": 0, + "hallucination_rate": 6.506533644201052e-05, + "deletion_rate": 0.9501599522854199 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.002229654403567447, + "recall": 0.0011160714285714285, + "precision": 1.0, + "correct_pairwise": 0, + "hallucination_rate": 7.038288288288288e-05, + "deletion_rate": 0.9458286411411412 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.0, + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "hallucination_rate": 1.074083091067925e-05, + "deletion_rate": 0.9769823993584144 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "mn": { + "opus100": { + "command-r": { + "f1": 0.2658802177858439, + "recall": 0.15535524920466595, + "precision": 0.9213836477987422, + "correct_pairwise": 0, + "hallucination_rate": 0.017783175658399385, + "deletion_rate": 0.0032728202505753006 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.21321184510250568, + "recall": 0.12410501193317422, + "precision": 0.7560581583198708, + "correct_pairwise": 0, + "hallucination_rate": 0.23833867105808185, + "deletion_rate": 0.0011618391408452127 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.1994454347395524, + "recall": 0.11190132236915212, + "precision": 0.916287534121929, + "correct_pairwise": 0, + "hallucination_rate": 0.007819119612744395, + "deletion_rate": 0.0005905496945302412 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "mr": { + "opus100": { + "command-r": { + "f1": 0.6523350630096367, + "recall": 0.4924454392837157, + "precision": 0.9659714599341384, + "correct_pairwise": 0, + "hallucination_rate": 0.006834554522504772, + "deletion_rate": 0.004417831414321778 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.04081632653061224, + "recall": 0.021264689423614997, + "precision": 0.5066666666666667, + "correct_pairwise": 0, + "hallucination_rate": 0.012290427028768076, + "deletion_rate": 0.0027462747291867977 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.00812829525483304, + "recall": 0.004111111111111111, + "precision": 0.3557692307692308, + "correct_pairwise": 0, + "hallucination_rate": 0.0033157086996304258, + "deletion_rate": 0.0035553825313529124 + } + }, + "ud": { + "command-r": { + "f1": 0.7164179104477612, + "recall": 0.5714285714285714, + "precision": 0.96, + "correct_pairwise": 0, + "hallucination_rate": 0.006818181818181818, + "deletion_rate": 0.002840909090909091 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.0, + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "hallucination_rate": 0.0032916392363396972, + "deletion_rate": 0.0 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ms": { + "opus100": { + "command-r": { + "f1": 0.6789587852494576, + "recall": 0.5371853546910755, + "precision": 0.9223968565815324, + "correct_pairwise": 0, + "hallucination_rate": 0.005602691128689682, + "deletion_rate": 0.002847269262120986 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.37027812370278124, + "recall": 0.2551487414187643, + "precision": 0.6747352496217852, + "correct_pairwise": 0, + "hallucination_rate": 0.006736230352661471, + "deletion_rate": 0.0020532894657845128 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.39083525275791003, + "recall": 0.2665343915343915, + "precision": 0.7323943661971831, + "correct_pairwise": 0, + "hallucination_rate": 0.009187082924138548, + "deletion_rate": 0.008600078639939026 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "mt": { + "opus100": { + "command-r": { + "f1": 0.6512301013024603, + "recall": 0.5067567567567568, + "precision": 0.9109311740890689, + "correct_pairwise": 0, + "hallucination_rate": 0.003293494016996845, + "deletion_rate": 0.006356052639058636 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.08106772120612951, + "recall": 0.04617117117117117, + "precision": 0.3319838056680162, + "correct_pairwise": 0, + "hallucination_rate": 0.005620455720848164, + "deletion_rate": 0.0005209759362355876 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.09708737864077671, + "recall": 0.05434782608695652, + "precision": 0.45454545454545453, + "correct_pairwise": 0, + "hallucination_rate": 0.000733810310034856, + "deletion_rate": 0.002017978352595854 + } + }, + "ud": { + "command-r": { + "f1": 0.7005347593582888, + "recall": 0.5622317596566524, + "precision": 0.9290780141843972, + "correct_pairwise": 0, + "hallucination_rate": 0.004986548314683757, + "deletion_rate": 0.008259506143221892 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.1554054054054054, + "recall": 0.09871244635193133, + "precision": 0.36507936507936506, + "correct_pairwise": 0, + "hallucination_rate": 0.0027802006105538597, + "deletion_rate": 0.0007995348161069923 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "my": { + "opus100": { + "command-r": { + "f1": 0.17108119843682154, + "recall": 0.1103023516237402, + "precision": 0.38104448742746616, + "correct_pairwise": 0, + "hallucination_rate": 0.0028540164923798886, + "deletion_rate": 0.06441278328651844 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.0275049115913556, + "recall": 0.015677491601343786, + "precision": 0.112, + "correct_pairwise": 0, + "hallucination_rate": 0.09399768737517082, + "deletion_rate": 0.05064648375906654 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.06018872736546799, + "recall": 0.039342076016892644, + "precision": 0.12802893309222424, + "correct_pairwise": 0, + "hallucination_rate": 0.07519055390398452, + "deletion_rate": 0.09730201847800829 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ne": { + "opus100": { + "command-r": { + "f1": 0.23273780782230807, + "recall": 0.14159811985898943, + "precision": 0.6531165311653117, + "correct_pairwise": 0, + "hallucination_rate": 0.011473510248276125, + "deletion_rate": 0.003704196189426894 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.15626638699528056, + "recall": 0.08754406580493537, + "precision": 0.7268292682926829, + "correct_pairwise": 0, + "hallucination_rate": 0.011687695289324843, + "deletion_rate": 0.0025906735751295338 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.06268958543983821, + "recall": 0.03327965646806227, + "precision": 0.5391304347826087, + "correct_pairwise": 0, + "hallucination_rate": 0.008615890352853848, + "deletion_rate": 0.02649717663900745 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "nl": { + "opus100": { + "command-r": { + "f1": 0.7479297780722093, + "recall": 0.6272222222222222, + "precision": 0.92616899097621, + "correct_pairwise": 0, + "hallucination_rate": 0.002748177229388671, + "deletion_rate": 0.002142456533931576 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.6398390342052315, + "recall": 0.53, + "precision": 0.8071065989847716, + "correct_pairwise": 0, + "hallucination_rate": 0.005973881633787163, + "deletion_rate": 0.0029637862369176625 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6341365461847389, + "recall": 0.5266259032795998, + "precision": 0.7968040370058873, + "correct_pairwise": 0, + "hallucination_rate": 0.006176197555228085, + "deletion_rate": 0.005906143089916452 + } + }, + "ud": { + "command-r": { + "f1": 0.6634146341463415, + "recall": 0.5074626865671642, + "precision": 0.9577464788732394, + "correct_pairwise": 0, + "hallucination_rate": 0.001716177631978616, + "deletion_rate": 0.022553307818480042 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6744186046511628, + "recall": 0.5410447761194029, + "precision": 0.8950617283950617, + "correct_pairwise": 0, + "hallucination_rate": 0.004452552487554497, + "deletion_rate": 0.0034940168825948487 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "no": { + "opus100": { + "command-r": { + "f1": 0.7154191100379441, + "recall": 0.5803021824286514, + "precision": 0.9325539568345323, + "correct_pairwise": 0, + "hallucination_rate": 0.004388062220471998, + "deletion_rate": 0.006019521251160305 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.5699226985242446, + "recall": 0.45383324006715164, + "precision": 0.7658168083097262, + "correct_pairwise": 0, + "hallucination_rate": 0.004836670488959454, + "deletion_rate": 0.004968980623915792 + } + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": { + "f1": 0.6946676406135867, + "recall": 0.5449856733524355, + "precision": 0.9577039274924471, + "correct_pairwise": 0, + "hallucination_rate": 0.0018080710801826711, + "deletion_rate": 0.004678616918823201 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6447978793903247, + "recall": 0.5575931232091691, + "precision": 0.7643362136684996, + "correct_pairwise": 0, + "hallucination_rate": 0.0033724135303009133, + "deletion_rate": 0.0012257548236310287 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "pa": { + "opus100": { + "command-r": { + "f1": 0.14376528117359413, + "recall": 0.08366533864541832, + "precision": 0.5104166666666666, + "correct_pairwise": 0, + "hallucination_rate": 0.21562290383559973, + "deletion_rate": 0.009939630465272273 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.07769028871391076, + "recall": 0.04214123006833713, + "precision": 0.4966442953020134, + "correct_pairwise": 0, + "hallucination_rate": 0.4755760904309418, + "deletion_rate": 0.0018452329061691803 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.0, + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "hallucination_rate": 0.09813650262505048, + "deletion_rate": 0.0017019558068424392 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "pl": { + "opus100": { + "command-r": { + "f1": 0.7439189189189189, + "recall": 0.6174985978687605, + "precision": 0.935429056924384, + "correct_pairwise": 0, + "hallucination_rate": 0.0031418944540145826, + "deletion_rate": 0.002177657880196314 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.5301470588235294, + "recall": 0.40437464946719015, + "precision": 0.7694770544290288, + "correct_pairwise": 0, + "hallucination_rate": 0.008639695596217335, + "deletion_rate": 0.0032230988752727885 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5789548625943328, + "recall": 0.45263275075141934, + "precision": 0.8030811771676871, + "correct_pairwise": 0, + "hallucination_rate": 0.007660254532979676, + "deletion_rate": 0.004666159051037683 + } + }, + "ud": { + "command-r": { + "f1": 0.9140393424952843, + "recall": 0.8509784244856999, + "precision": 0.9871944121071012, + "correct_pairwise": 0, + "hallucination_rate": 0.0016213074467976629, + "deletion_rate": 0.0009585088050250333 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.7272727272727274, + "recall": 0.6482689412945308, + "precision": 0.8282051282051283, + "correct_pairwise": 0, + "hallucination_rate": 0.004353012577694996, + "deletion_rate": 0.00786890735198711 + } + }, + "ersatz": { + "command-r": { + "f1": 0.7014084507042254, + "recall": 0.5508849557522124, + "precision": 0.9651162790697675, + "correct_pairwise": 0, + "hallucination_rate": 0.0027253277939048534, + "deletion_rate": 0.009649613394053992 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.6465177398160316, + "recall": 0.5442477876106194, + "precision": 0.7961165048543689, + "correct_pairwise": 0, + "hallucination_rate": 0.00612109598496063, + "deletion_rate": 0.0022885996857716306 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ps": { + "opus100": { + "command-r": { + "f1": 0.07188405797101449, + "recall": 0.038366336633663366, + "precision": 0.5688073394495413, + "correct_pairwise": 0, + "hallucination_rate": 0.30316380625015127, + "deletion_rate": 0.012103313887342355 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.04088785046728972, + "recall": 0.021658415841584157, + "precision": 0.3645833333333333, + "correct_pairwise": 0, + "hallucination_rate": 0.4484086967044492, + "deletion_rate": 0.0011899479649872939 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.0037807183364839316, + "recall": 0.002028397565922921, + "precision": 0.027777777777777776, + "correct_pairwise": 0, + "hallucination_rate": 0.0003996614632311454, + "deletion_rate": 0.002938687229640775 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": { + "f1": 0.7070548124836088, + "recall": 0.5495311863024868, + "precision": 0.9911764705882353, + "correct_pairwise": 0, + "hallucination_rate": 0.0014279657288225082, + "deletion_rate": 0.0009439773445437309 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.02490960224989956, + "recall": 0.012637586628618018, + "precision": 0.8611111111111112, + "correct_pairwise": 0, + "hallucination_rate": 0.0005626398899361383, + "deletion_rate": 0.00013552639684593113 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "pt": { + "opus100": { + "command-r": { + "f1": 0.8081841432225063, + "recall": 0.7097136440202133, + "precision": 0.9383815887156645, + "correct_pairwise": 0, + "hallucination_rate": 0.0020508936036415866, + "deletion_rate": 0.0025796954387268737 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.5382059800664452, + "recall": 0.40932060640089835, + "precision": 0.7855603448275862, + "correct_pairwise": 0, + "hallucination_rate": 0.005605817135897041, + "deletion_rate": 0.0041309882820811964 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.4504490310382858, + "recall": 0.31770196688520946, + "precision": 0.7737483085250338, + "correct_pairwise": 0, + "hallucination_rate": 0.007349504099204379, + "deletion_rate": 0.005908424864066265 + } + }, + "ud": { + "command-r": { + "f1": 0.7221556886227544, + "recall": 0.5742857142857143, + "precision": 0.9725806451612903, + "correct_pairwise": 0, + "hallucination_rate": 0.004154829806132411, + "deletion_rate": 0.003472145756714895 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6127659574468085, + "recall": 0.48, + "precision": 0.8470588235294118, + "correct_pairwise": 0, + "hallucination_rate": 0.004357528421941437, + "deletion_rate": 0.0009272941105515515 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": { + "f1": 0.5801366429701792, + "f1_success": 0.5801366429701792, + "recall": 0.44116808877042757, + "recall_success": 0.44116808877042757, + "precision": 0.8650921534605744, + "precision_success": 0.8650921534605744, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.011213281553022297, + "hallucination_rate_success": 0.011213281553022297, + "deletion_rate": 0.00983541041061648, + "deletion_rate_success": 0.00983541041061648 + } + }, + "legal-all-judgements-corrupted-asr": { + "command-r": { + "f1": 0.4378736316577285, + "f1_success": 0.4378736316577285, + "recall": 0.3169515561706855, + "recall_success": 0.3169515561706855, + "precision": 0.7518448564097222, + "precision_success": 0.7518448564097222, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.005713714651661448, + "hallucination_rate_success": 0.005713714651661448, + "deletion_rate": 0.0014604907260973997, + "deletion_rate_success": 0.0014604907260973997 + } + }, + "legal-all-laws": { + "command-r": { + "f1": 0.4724564203628435, + "f1_success": 0.4724564203628435, + "recall": 0.3888479606698253, + "recall_success": 0.3888479606698253, + "precision": 0.7330396756192835, + "precision_success": 0.7330396756192835, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.06634806480486767, + "hallucination_rate_success": 0.06634806480486767, + "deletion_rate": 0.007160415273107892, + "deletion_rate_success": 0.007160415273107892 + } + }, + "legal-all-laws-corrupted-asr": { + "command-r": { + "f1": 0.40148531094998263, + "f1_success": 0.40148531094998263, + "recall": 0.31894917538212786, + "recall_success": 0.31894917538212786, + "precision": 0.7214949409014793, + "precision_success": 0.7214949409014793, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.006256627798443249, + "hallucination_rate_success": 0.006256627798443249, + "deletion_rate": 0.0029088541306945105, + "deletion_rate_success": 0.0029088541306945105 + } + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ro": { + "opus100": { + "command-r": { + "f1": 0.7043354655294953, + "recall": 0.5561167227833894, + "precision": 0.9602713178294574, + "correct_pairwise": 0, + "hallucination_rate": 0.003451726425383119, + "deletion_rate": 0.0015178601544844335 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.4300813008130081, + "recall": 0.29685746352413017, + "precision": 0.7802359882005899, + "correct_pairwise": 0, + "hallucination_rate": 0.011787636903656952, + "deletion_rate": 0.003120939298310748 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.48345858836290384, + "recall": 0.3468593663146192, + "precision": 0.7975460122699386, + "correct_pairwise": 0, + "hallucination_rate": 0.010384987558750346, + "deletion_rate": 0.0039520715668075355 + } + }, + "ud": { + "command-r": { + "f1": 0.5957446808510638, + "recall": 0.4883720930232558, + "precision": 0.7636363636363637, + "correct_pairwise": 0, + "hallucination_rate": 0.003865038143158578, + "deletion_rate": 0.007943109884758968 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.28502024291497974, + "recall": 0.18604651162790697, + "precision": 0.6089965397923875, + "correct_pairwise": 0, + "hallucination_rate": 0.017436035161293655, + "deletion_rate": 0.0103397341211226 + } + }, + "ersatz": { + "command-r": { + "f1": 0.7131672597864768, + "recall": 0.5566666666666666, + "precision": 0.9920792079207921, + "correct_pairwise": 0, + "hallucination_rate": 0.0025836310125586935, + "deletion_rate": 0.007095624302606846 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.5547920433996384, + "recall": 0.4261111111111111, + "precision": 0.794818652849741, + "correct_pairwise": 0, + "hallucination_rate": 0.008580913368560508, + "deletion_rate": 0.002421233763267295 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ru": { + "opus100": { + "command-r": { + "f1": 0.8809155583049798, + "recall": 0.8109339407744874, + "precision": 0.964116452268111, + "correct_pairwise": 0, + "hallucination_rate": 0.0063410111958924625, + "deletion_rate": 0.00273835841118163 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.6495726495726496, + "recall": 0.5193621867881549, + "precision": 0.8669201520912547, + "correct_pairwise": 0, + "hallucination_rate": 0.010325249717861609, + "deletion_rate": 0.0021091476664471453 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.4906483790523691, + "recall": 0.3498166462940327, + "precision": 0.8212888077224106, + "correct_pairwise": 0, + "hallucination_rate": 0.010462678791440232, + "deletion_rate": 0.0010456506119586875 + } + }, + "ud": { + "command-r": { + "f1": 0.611625947767481, + "recall": 0.4583333333333333, + "precision": 0.9189873417721519, + "correct_pairwise": 0, + "hallucination_rate": 0.006168916140127865, + "deletion_rate": 0.0030657643847908176 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.3796548592188919, + "recall": 0.2638888888888889, + "precision": 0.6763754045307443, + "correct_pairwise": 0, + "hallucination_rate": 0.007152348940827015, + "deletion_rate": 0.0020909872586570783 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8015978695073236, + "recall": 0.675645342312009, + "precision": 0.9852700490998363, + "correct_pairwise": 0, + "hallucination_rate": 0.0033323151259337424, + "deletion_rate": 0.007821684115038923 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.6072218128224023, + "recall": 0.4624017957351291, + "precision": 0.8841201716738197, + "correct_pairwise": 0, + "hallucination_rate": 0.010374933857434425, + "deletion_rate": 0.009704059263738756 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "si": { + "opus100": { + "command-r": { + "f1": 0.08616562948779319, + "recall": 0.10089686098654709, + "precision": 0.07518796992481203, + "correct_pairwise": 0, + "hallucination_rate": 0.8316343753328267, + "deletion_rate": 0.020367639227607422 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.0824493731918997, + "recall": 0.09585201793721973, + "precision": 0.07233502538071065, + "correct_pairwise": 0, + "hallucination_rate": 0.8262696149899043, + "deletion_rate": 0.024510275242679392 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.02770083102493075, + "recall": 0.021551724137931036, + "precision": 0.03875968992248062, + "correct_pairwise": 0, + "hallucination_rate": 0.6504433167089567, + "deletion_rate": 0.05382506489339983 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "sk": { + "opus100": { + "command-r": { + "f1": 0.7483782861044725, + "recall": 0.6146943353897925, + "precision": 0.956369982547993, + "correct_pairwise": 0, + "hallucination_rate": 0.003138315741084531, + "deletion_rate": 0.002289644442087024 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.4820822331195775, + "recall": 0.3583847448121144, + "precision": 0.7361751152073732, + "correct_pairwise": 0, + "hallucination_rate": 0.005553420797423652, + "deletion_rate": 0.0022597939653437264 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5169951442445015, + "recall": 0.4023563410025564, + "precision": 0.7229878170561215, + "correct_pairwise": 0, + "hallucination_rate": 0.0074412774034251904, + "deletion_rate": 0.004709772506023179 + } + }, + "ud": { + "command-r": { + "f1": 0.7348284960422162, + "recall": 0.5838574423480084, + "precision": 0.9911032028469751, + "correct_pairwise": 0, + "hallucination_rate": 0.008316035288012455, + "deletion_rate": 0.0020108977685521535 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6530359355638166, + "recall": 0.5524109014675053, + "precision": 0.7984848484848485, + "correct_pairwise": 0, + "hallucination_rate": 0.004517048861410545, + "deletion_rate": 0.0045703473730496075 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "sl": { + "opus100": { + "command-r": { + "f1": 0.6377551020408163, + "recall": 0.48773690078037907, + "precision": 0.9210526315789473, + "correct_pairwise": 0, + "hallucination_rate": 0.003890468352536286, + "deletion_rate": 0.001841641823685816 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.4217102694260055, + "recall": 0.3010033444816054, + "precision": 0.7040417209908736, + "correct_pairwise": 0, + "hallucination_rate": 0.004941804540207772, + "deletion_rate": 0.004027991535205848 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5078530408911645, + "recall": 0.4077777777777778, + "precision": 0.6730240234733175, + "correct_pairwise": 0, + "hallucination_rate": 0.006052582064195551, + "deletion_rate": 0.0029569342373980075 + } + }, + "ud": { + "command-r": { + "f1": 0.7542918454935622, + "recall": 0.6097137901127494, + "precision": 0.9887482419127989, + "correct_pairwise": 0, + "hallucination_rate": 0.003761986896928657, + "deletion_rate": 0.004585365161162099 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.5560538116591929, + "recall": 0.4839549002601908, + "precision": 0.6533957845433255, + "correct_pairwise": 0, + "hallucination_rate": 0.004325883201153569, + "deletion_rate": 0.003837946880484732 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": { + "f1": 0.8021341134427682, + "f1_success": 0.8021341134427682, + "recall": 0.748944805194806, + "recall_success": 0.748944805194806, + "precision": 0.9273346948750171, + "precision_success": 0.9273346948750171, + "correct_pairwise": 0.44208211143695014, + "correct_pairwise_success": 0.44208211143695014, + "hallucination_rate": 0.030257306227628507, + "hallucination_rate_success": 0.030257306227628507, + "deletion_rate": 0.020430091524588547, + "deletion_rate_success": 0.020430091524588547 + } + }, + "short-sequences-corrupted-asr": { + "command-r": { + "f1": 0.6697332127554712, + "f1_success": 0.6697332127554712, + "recall": 0.6354437229437228, + "recall_success": 0.6354437229437228, + "precision": 0.7881495520608434, + "precision_success": 0.7881495520608434, + "correct_pairwise": 0.21737536656891496, + "correct_pairwise_success": 0.21737536656891496, + "hallucination_rate": 0.04056417283008161, + "hallucination_rate_success": 0.04056417283008161, + "deletion_rate": 0.009793122130795535, + "deletion_rate_success": 0.009793122130795535 + } + } + }, + "sq": { + "opus100": { + "command-r": { + "f1": 0.5927873779113448, + "recall": 0.4450084602368866, + "precision": 0.8875140607424072, + "correct_pairwise": 0, + "hallucination_rate": 0.0026900491985399145, + "deletion_rate": 0.0021504523091572768 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.30782029950083195, + "recall": 0.2086858432036097, + "precision": 0.5863708399366085, + "correct_pairwise": 0, + "hallucination_rate": 0.0028252775855820236, + "deletion_rate": 0.0018203683568910414 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.3694854376512845, + "recall": 0.2629181020113346, + "precision": 0.6213235294117647, + "correct_pairwise": 0, + "hallucination_rate": 0.0027538058084494994, + "deletion_rate": 0.0032699264411854964 + } + }, + "ud": { + "command-r": { + "f1": 0.92, + "recall": 0.8518518518518519, + "precision": 1.0, + "correct_pairwise": 0, + "hallucination_rate": 0.0003750234389649353, + "deletion_rate": 0.0013125820363772737 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.5853658536585367, + "recall": 0.4444444444444444, + "precision": 0.8571428571428571, + "correct_pairwise": 0, + "hallucination_rate": 0.002283539486203616, + "deletion_rate": 0.000570884871550904 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "sr": { + "opus100": { + "command-r": { + "f1": 0.6719310839913855, + "recall": 0.5223214285714286, + "precision": 0.9416498993963782, + "correct_pairwise": 0, + "hallucination_rate": 0.0034524696928086625, + "deletion_rate": 0.002000863117423202 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.4595419847328244, + "recall": 0.3359375, + "precision": 0.7270531400966184, + "correct_pairwise": 0, + "hallucination_rate": 0.005046626439934174, + "deletion_rate": 0.0020981897970378497 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.4424224343675418, + "recall": 0.32955555555555555, + "precision": 0.6728675136116152, + "correct_pairwise": 0, + "hallucination_rate": 0.03053158628755982, + "deletion_rate": 0.0019710218870067782 + } + }, + "ud": { + "command-r": { + "f1": 0.820125786163522, + "recall": 0.6965811965811965, + "precision": 0.9969418960244648, + "correct_pairwise": 0, + "hallucination_rate": 0.0007308742150560089, + "deletion_rate": 0.0036394552749727787 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.6485819975339088, + "recall": 0.561965811965812, + "precision": 0.7667638483965015, + "correct_pairwise": 0, + "hallucination_rate": 0.015664066030062956, + "deletion_rate": 0.0013856673795824923 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": { + "f1": 0.8371445105820116, + "f1_success": 0.8371445105820116, + "recall": 0.8107638888888887, + "recall_success": 0.8107638888888887, + "precision": 0.9235243055555556, + "precision_success": 0.9235243055555556, + "correct_pairwise": 0.4895833333333333, + "correct_pairwise_success": 0.4895833333333333, + "hallucination_rate": 0.008602126494568688, + "hallucination_rate_success": 0.008602126494568688, + "deletion_rate": 0.006745412805554879, + "deletion_rate_success": 0.006745412805554879 + } + }, + "short-sequences-corrupted-asr": { + "command-r": { + "f1": 0.6906787367724868, + "f1_success": 0.6906787367724868, + "recall": 0.7206597222222223, + "recall_success": 0.7206597222222223, + "precision": 0.7320808531746033, + "precision_success": 0.7320808531746033, + "correct_pairwise": 0.20833333333333334, + "correct_pairwise_success": 0.20833333333333334, + "hallucination_rate": 0.009444040459804808, + "hallucination_rate_success": 0.009444040459804808, + "deletion_rate": 0.005029328501519919, + "deletion_rate_success": 0.005029328501519919 + } + } + }, + "sv": { + "opus100": { + "command-r": { + "f1": 0.7693823915900131, + "recall": 0.653824678950307, + "precision": 0.9345570630486831, + "correct_pairwise": 0, + "hallucination_rate": 0.0028095508053489846, + "deletion_rate": 0.0014923133357788376 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.598479612992398, + "recall": 0.4835287548855388, + "precision": 0.785131459655485, + "correct_pairwise": 0, + "hallucination_rate": 0.003935727852974897, + "deletion_rate": 0.0020705350878694024 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5510359642436422, + "recall": 0.44197421076033794, + "precision": 0.7315547378104876, + "correct_pairwise": 0, + "hallucination_rate": 0.0036551778358202437, + "deletion_rate": 0.0038698212594327672 + } + }, + "ud": { + "command-r": { + "f1": 0.7284595300261097, + "recall": 0.5993555316863588, + "precision": 0.9284525790349417, + "correct_pairwise": 0, + "hallucination_rate": 0.0009601165382832675, + "deletion_rate": 0.0015781225859138764 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.573208722741433, + "recall": 0.4940923737916219, + "precision": 0.6824925816023739, + "correct_pairwise": 0, + "hallucination_rate": 0.0019831432821021317, + "deletion_rate": 0.006591697841078109 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ta": { + "opus100": { + "command-r": { + "f1": 0.018973214285714288, + "recall": 0.0096045197740113, + "precision": 0.7727272727272727, + "correct_pairwise": 0, + "hallucination_rate": 0.00022900611346755083, + "deletion_rate": 0.895453730808292 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.02184598580010923, + "recall": 0.011299435028248588, + "precision": 0.32786885245901637, + "correct_pairwise": 0, + "hallucination_rate": 0.0026633732481340278, + "deletion_rate": 0.6922300381248994 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.0015785319652722968, + "recall": 0.0007908264136022143, + "precision": 0.4, + "correct_pairwise": 0, + "hallucination_rate": 0.0006062717367664352, + "deletion_rate": 0.8352538353904871 + } + }, + "ud": { + "command-r": { + "f1": 0.0, + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.946791972866026 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.0, + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.8313836524849118 + } + }, + "ersatz": { + "command-r": { + "f1": 0.013186813186813187, + "recall": 0.00663716814159292, + "precision": 1.0, + "correct_pairwise": 0, + "hallucination_rate": 1.6693097404223353e-05, + "deletion_rate": 0.9487855771638427 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.006600660066006601, + "recall": 0.00331858407079646, + "precision": 0.6, + "correct_pairwise": 0, + "hallucination_rate": 0.0003181167488468268, + "deletion_rate": 0.8616015410989166 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "te": { + "opus100": { + "command-r": { + "f1": 0.36099773242630384, + "recall": 0.2257515598411798, + "precision": 0.9004524886877828, + "correct_pairwise": 0, + "hallucination_rate": 0.006225796290463044, + "deletion_rate": 0.07079990364839074 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.039045553145336226, + "recall": 0.02041973908111174, + "precision": 0.4444444444444444, + "correct_pairwise": 0, + "hallucination_rate": 0.0873811791510262, + "deletion_rate": 0.019328813939156256 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.0535931790499391, + "recall": 0.02771944561108778, + "precision": 0.8048780487804879, + "correct_pairwise": 0, + "hallucination_rate": 0.001242939918477764, + "deletion_rate": 0.1331316602387176 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "tg": { + "opus100": { + "command-r": { + "f1": 0.5494505494505495, + "recall": 0.40435025097601784, + "precision": 0.8569739952718676, + "correct_pairwise": 0, + "hallucination_rate": 0.0018968163393805833, + "deletion_rate": 0.006493250954311125 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.03952991452991453, + "recall": 0.02063580591187953, + "precision": 0.46835443037974683, + "correct_pairwise": 0, + "hallucination_rate": 0.0008364426585755874, + "deletion_rate": 0.012226823568001968 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.028469750889679714, + "recall": 0.014705882352941176, + "precision": 0.4444444444444444, + "correct_pairwise": 0, + "hallucination_rate": 0.0009749756256093598, + "deletion_rate": 5.416531253385332e-05 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "th": { + "opus100": { + "command-r": { + "f1": 0.10619469026548674, + "recall": 0.05723905723905724, + "precision": 0.7338129496402878, + "correct_pairwise": 0, + "hallucination_rate": 0.008249996413045038, + "deletion_rate": 0.008623039729113161 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.05920344456404736, + "recall": 0.030864197530864196, + "precision": 0.7236842105263158, + "correct_pairwise": 0, + "hallucination_rate": 0.0037106835546595377, + "deletion_rate": 0.008356342493170297 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.021004266491631108, + "recall": 0.010666666666666666, + "precision": 0.6808510638297872, + "correct_pairwise": 0, + "hallucination_rate": 0.011276870943387392, + "deletion_rate": 0.029651826316990804 + } + }, + "ud": { + "command-r": { + "f1": 0.12409513960703206, + "recall": 0.06666666666666667, + "precision": 0.8955223880597015, + "correct_pairwise": 0, + "hallucination_rate": 0.0019269554104514865, + "deletion_rate": 0.030252201521595877 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.0824524312896406, + "recall": 0.043333333333333335, + "precision": 0.8478260869565217, + "correct_pairwise": 0, + "hallucination_rate": 0.0014934798079525293, + "deletion_rate": 0.037417182034139546 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "tr": { + "opus100": { + "command-r": { + "f1": 0.724496877168633, + "recall": 0.5871766029246345, + "precision": 0.9456521739130435, + "correct_pairwise": 0, + "hallucination_rate": 0.0030640809018233173, + "deletion_rate": 0.0026479711497238542 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.46098726114649685, + "recall": 0.32564679415073117, + "precision": 0.7888283378746594, + "correct_pairwise": 0, + "hallucination_rate": 0.008245936025170425, + "deletion_rate": 0.0029496591504981646 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5191425347875142, + "recall": 0.38361493997332147, + "precision": 0.8027448243777623, + "correct_pairwise": 0, + "hallucination_rate": 0.006584702293869913, + "deletion_rate": 0.009686890686842512 + } + }, + "ud": { + "command-r": { + "f1": 0.6177285318559558, + "recall": 0.4505050505050505, + "precision": 0.9823788546255506, + "correct_pairwise": 0, + "hallucination_rate": 0.001823077823679941, + "deletion_rate": 0.004448978909163893 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.4634322954380884, + "recall": 0.32323232323232326, + "precision": 0.8184143222506394, + "correct_pairwise": 0, + "hallucination_rate": 0.0035279192228150364, + "deletion_rate": 0.001199144957508559 + } + }, + "ersatz": { + "command-r": { + "f1": 0.7176250584385226, + "recall": 0.5668389955686853, + "precision": 0.9777070063694268, + "correct_pairwise": 0, + "hallucination_rate": 0.0033748272643437166, + "deletion_rate": 0.00954986419403575 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.6346933905989024, + "recall": 0.4911373707533235, + "precision": 0.8968307484828051, + "correct_pairwise": 0, + "hallucination_rate": 0.007963559120396516, + "deletion_rate": 0.0070404971921144135 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "tr-de": { + "opus100": { + "command-r": {} + }, + "opus100-corrupted-asr": { + "command-r": {} + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": { + "f1": 0.5465116279069768, + "recall": 0.38950276243093923, + "precision": 0.9155844155844156, + "correct_pairwise": 0, + "hallucination_rate": 0.014009011341861308, + "deletion_rate": 0.03051685742399917 + } + }, + "code-switching-corrupted-asr": { + "command-r": { + "f1": 0.17610062893081763, + "recall": 0.11602209944751381, + "precision": 0.3652173913043478, + "correct_pairwise": 0, + "hallucination_rate": 0.015033737126622737, + "deletion_rate": 0.03084349392994778 + } + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "uk": { + "opus100": { + "command-r": { + "f1": 0.7983354673495517, + "recall": 0.6962590731434952, + "precision": 0.9354838709677419, + "correct_pairwise": 0, + "hallucination_rate": 0.009610973213970614, + "deletion_rate": 0.007469973061042032 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.3959983326385994, + "recall": 0.26521496370742603, + "precision": 0.78125, + "correct_pairwise": 0, + "hallucination_rate": 0.019911395520551316, + "deletion_rate": 0.004750184592665518 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.46550766055410014, + "recall": 0.32592263228101376, + "precision": 0.8142182727020272, + "correct_pairwise": 0, + "hallucination_rate": 0.014040400153394788, + "deletion_rate": 0.0021085148704039617 + } + }, + "ud": { + "command-r": { + "f1": 0.6206896551724138, + "recall": 0.4566831683168317, + "precision": 0.968503937007874, + "correct_pairwise": 0, + "hallucination_rate": 0.001217382627351195, + "deletion_rate": 0.0026044005388414907 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.40186046511627904, + "recall": 0.26732673267326734, + "precision": 0.8089887640449438, + "correct_pairwise": 0, + "hallucination_rate": 0.00714799958860434, + "deletion_rate": 0.0007610819705852103 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "ur": { + "opus100": { + "command-r": { + "f1": 0.26616328456819255, + "recall": 0.1657848324514991, + "precision": 0.6746411483253588, + "correct_pairwise": 0, + "hallucination_rate": 0.005499687397344467, + "deletion_rate": 0.007290529729042376 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.23363636363636361, + "recall": 0.15108759553204, + "precision": 0.5150300601202404, + "correct_pairwise": 0, + "hallucination_rate": 0.028528512645842368, + "deletion_rate": 0.002163174206924273 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.20946915351506457, + "recall": 0.125, + "precision": 0.6460176991150443, + "correct_pairwise": 0, + "hallucination_rate": 0.009487554733072707, + "deletion_rate": 0.00957407184733102 + } + }, + "ud": { + "command-r": { + "f1": 0.8228155339805826, + "recall": 0.7047817047817048, + "precision": 0.9883381924198251, + "correct_pairwise": 0, + "hallucination_rate": 0.002208187960959237, + "deletion_rate": 0.000662456388287771 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.38815789473684215, + "recall": 0.24532224532224534, + "precision": 0.9291338582677166, + "correct_pairwise": 0, + "hallucination_rate": 0.00856397795294257, + "deletion_rate": 0.0009186273928761927 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "uz": { + "opus100": { + "command-r": { + "f1": 0.44782939832444785, + "recall": 0.3333333333333333, + "precision": 0.6821345707656613, + "correct_pairwise": 0, + "hallucination_rate": 0.002011054554538925, + "deletion_rate": 0.004134528307778784 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.19705434230573896, + "recall": 0.10997732426303855, + "precision": 0.9463414634146341, + "correct_pairwise": 0, + "hallucination_rate": 0.0004176673279732693, + "deletion_rate": 0.002120966899864258 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.17421052631578948, + "recall": 0.0970389914980944, + "precision": 0.8508997429305912, + "correct_pairwise": 0, + "hallucination_rate": 0.031182101753253737, + "deletion_rate": 0.04168011186404216 + } + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "vi": { + "opus100": { + "command-r": { + "f1": 0.7720242098184262, + "recall": 0.6552511415525114, + "precision": 0.939443535188216, + "correct_pairwise": 0, + "hallucination_rate": 0.003563592846220331, + "deletion_rate": 0.007326640515923143 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.45295055821371616, + "recall": 0.3242009132420091, + "precision": 0.7513227513227513, + "correct_pairwise": 0, + "hallucination_rate": 0.011012820689750348, + "deletion_rate": 0.0018906722236789444 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.3942829766847652, + "recall": 0.2743333333333333, + "precision": 0.7006242905788876, + "correct_pairwise": 0, + "hallucination_rate": 0.007026732459955459, + "deletion_rate": 0.0031498748230067595 + } + }, + "ud": { + "command-r": { + "f1": 0.9239766081871346, + "recall": 0.8777777777777778, + "precision": 0.9753086419753086, + "correct_pairwise": 0, + "hallucination_rate": 0.0013200378172996308, + "deletion_rate": 0.0018730266326548815 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.38006230529595014, + "recall": 0.25416666666666665, + "precision": 0.7530864197530864, + "correct_pairwise": 0, + "hallucination_rate": 0.013045035534525986, + "deletion_rate": 0.0007163458819537392 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "vi-en": { + "opus100": { + "command-r": {} + }, + "opus100-corrupted-asr": { + "command-r": {} + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": { + "f1": 0.2919975565058033, + "recall": 0.19526143790849673, + "precision": 0.5786924939467313, + "correct_pairwise": 0, + "hallucination_rate": 0.00622365777760271, + "deletion_rate": 0.0027967069760113446 + } + }, + "code-switching-corrupted-asr": { + "command-r": { + "f1": 0.3005497861942578, + "recall": 0.20098039215686275, + "precision": 0.5956416464891041, + "correct_pairwise": 0, + "hallucination_rate": 0.00654084085267347, + "deletion_rate": 0.004393396114898144 + } + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "xh": { + "opus100": { + "command-r": { + "f1": 0.56069592724397, + "recall": 0.408175014392631, + "precision": 0.8952020202020202, + "correct_pairwise": 0, + "hallucination_rate": 0.0016233054007809414, + "deletion_rate": 0.03719186968430157 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.0422462648119526, + "recall": 0.02360391479562464, + "precision": 0.20098039215686275, + "correct_pairwise": 0, + "hallucination_rate": 0.0005337414633518964, + "deletion_rate": 0.04215914498475943 + } + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "yi": { + "opus100": { + "command-r": { + "f1": 0.08280254777070063, + "recall": 0.04529616724738676, + "precision": 0.48148148148148145, + "correct_pairwise": 0, + "hallucination_rate": 0.2880811541446963, + "deletion_rate": 0.005165814619523032 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.04429860541427399, + "recall": 0.023519163763066203, + "precision": 0.38028169014084506, + "correct_pairwise": 0, + "hallucination_rate": 0.02233440416093009, + "deletion_rate": 0.019389628269848556 + } + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "yo": { + "opus100": { + "command-r": { + "f1": 0.26640819717529773, + "recall": 0.17103235747303544, + "precision": 0.6022537562604341, + "correct_pairwise": 0, + "hallucination_rate": 0.3262069201381694, + "deletion_rate": 0.020729433018623095 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.04817421909370875, + "recall": 0.025957093753703923, + "precision": 0.33435114503816793, + "correct_pairwise": 0, + "hallucination_rate": 0.2959766135856604, + "deletion_rate": 0.017025485476904818 + } + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": { + "f1": 0.6610169491525423, + "recall": 0.5454545454545454, + "precision": 0.8387096774193549, + "correct_pairwise": 0, + "hallucination_rate": 0.24691046658259774, + "deletion_rate": 0.0403530895334174 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.032786885245901634, + "recall": 0.017482517482517484, + "precision": 0.2631578947368421, + "correct_pairwise": 0, + "hallucination_rate": 0.2372922129471481, + "deletion_rate": 0.03276480069282398 + } + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "zh": { + "opus100": { + "command-r": { + "f1": 0.5867331049517285, + "recall": 0.5265511458915595, + "precision": 0.6624472573839663, + "correct_pairwise": 0, + "hallucination_rate": 0.006422692710906528, + "deletion_rate": 0.008880909058045236 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.23780267437658115, + "recall": 0.18390162101732813, + "precision": 0.33640081799591004, + "correct_pairwise": 0, + "hallucination_rate": 0.04856309556734468, + "deletion_rate": 0.004550825937193573 + } + }, + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.020222653457256663, + "recall": 0.0135709389993146, + "precision": 0.039663461538461536, + "correct_pairwise": 0, + "hallucination_rate": 0.0181932843642105, + "deletion_rate": 0.004496145836641547 + } + }, + "ud": { + "command-r": { + "f1": 0.9177001127395715, + "recall": 0.9044444444444445, + "precision": 0.931350114416476, + "correct_pairwise": 0, + "hallucination_rate": 0.0019217153838373621, + "deletion_rate": 0.002478001416000809 + } + }, + "ud-corrupted-asr": { + "command-r": { + "f1": 0.41574803149606304, + "recall": 0.29333333333333333, + "precision": 0.7135135135135136, + "correct_pairwise": 0, + "hallucination_rate": 0.06242521978879467, + "deletion_rate": 0.002705092857514436 + } + }, + "ersatz": { + "command-r": { + "f1": 0.7054187192118226, + "recall": 0.5960044395116537, + "precision": 0.8640386162510056, + "correct_pairwise": 0, + "hallucination_rate": 0.009658392955937099, + "deletion_rate": 0.011440038258488602 + } + }, + "ersatz-corrupted-asr": { + "command-r": { + "f1": 0.1861490957212175, + "recall": 0.11709211986681466, + "precision": 0.45376344086021503, + "correct_pairwise": 0, + "hallucination_rate": 0.0582710503299674, + "deletion_rate": 0.0035083883279001353 + } + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + }, + "zu": { + "opus100": { + "command-r": { + "f1": 0.3489995346672871, + "recall": 0.22281639928698752, + "precision": 0.8047210300429185, + "correct_pairwise": 0, + "hallucination_rate": 0.007260112299273988, + "deletion_rate": 0.0036121740996387826 + } + }, + "opus100-corrupted-asr": { + "command-r": { + "f1": 0.11679586563307495, + "recall": 0.06714200831847891, + "precision": 0.44841269841269843, + "correct_pairwise": 0, + "hallucination_rate": 0.0014985763524651581, + "deletion_rate": 0.0018170238273640042 + } + }, + "ted2020-corrupted-asr": { + "command-r": {} + }, + "ud": { + "command-r": {} + }, + "ud-corrupted-asr": { + "command-r": {} + }, + "ersatz": { + "command-r": {} + }, + "ersatz-corrupted-asr": { + "command-r": {} + }, + "legal-all-judgements": { + "command-r": {} + }, + "legal-all-judgements-corrupted-asr": { + "command-r": {} + }, + "legal-all-laws": { + "command-r": {} + }, + "legal-all-laws-corrupted-asr": { + "command-r": {} + }, + "code-switching": { + "command-r": {} + }, + "code-switching-corrupted-asr": { + "command-r": {} + }, + "short-sequences": { + "command-r": {} + }, + "short-sequences-corrupted-asr": { + "command-r": {} + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/llama-3.json b/wtpsplit/evaluation/evaluation_results/main/llama-3.json new file mode 100644 index 00000000..8fc070f4 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/llama-3.json @@ -0,0 +1,7417 @@ +{ + "af": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6541666666666667, + "recall": 0.5401376146788991, + "precision": 0.829225352112676, + "correct_pairwise": 0, + "hallucination_rate": 0.001732774644781198, + "deletion_rate": 0.006080463753504931 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.39312231340367326, + "recall": 0.28841743119266056, + "precision": 0.6171779141104294, + "correct_pairwise": 0, + "hallucination_rate": 0.0008268973158913126, + "deletion_rate": 0.0016207187391469727 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5560791705937794, + "recall": 0.5042735042735043, + "precision": 0.6197478991596639, + "correct_pairwise": 0, + "hallucination_rate": 0.0005315261444422297, + "deletion_rate": 0.0008748034460611698 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 1.0, + "recall": 1.0, + "precision": 1.0, + "correct_pairwise": 1, + "hallucination_rate": 0.00018659881255301102, + "deletion_rate": 0.00044105173876166244 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.824468085106383, + "recall": 0.8115183246073299, + "precision": 0.8378378378378378, + "correct_pairwise": 0, + "hallucination_rate": 0.000103978926937474, + "deletion_rate": 0.0006065437404685984 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "am": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.36157024793388426, + "recall": 0.2924791086350975, + "precision": 0.4733994589720469, + "correct_pairwise": 0, + "hallucination_rate": 0.006167437026502202, + "deletion_rate": 0.018379235839509886 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.2588066139468008, + "recall": 0.20055710306406685, + "precision": 0.364741641337386, + "correct_pairwise": 0, + "hallucination_rate": 0.0058468306338732255, + "deletion_rate": 0.041823635272945414 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.2723404255319149, + "recall": 0.2077922077922078, + "precision": 0.3950617283950617, + "correct_pairwise": 0, + "hallucination_rate": 0.0009517897786054211, + "deletion_rate": 0.0026070763500931097 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ar": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6222996515679442, + "recall": 0.49832589285714285, + "precision": 0.8283858998144712, + "correct_pairwise": 0, + "hallucination_rate": 0.0022932761894020564, + "deletion_rate": 0.0038158612003985036 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5267624020887728, + "recall": 0.45033482142857145, + "precision": 0.6344339622641509, + "correct_pairwise": 0, + "hallucination_rate": 0.0020925388822922546, + "deletion_rate": 0.0016059019329219628 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5469962114378496, + "recall": 0.5053333333333333, + "precision": 0.5961462839166339, + "correct_pairwise": 0, + "hallucination_rate": 0.0020718876991506997, + "deletion_rate": 0.0036568217536201335 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8012718600953895, + "recall": 0.8235294117647058, + "precision": 0.7801857585139319, + "correct_pairwise": 0, + "hallucination_rate": 0.0009616549551732494, + "deletion_rate": 0.0052550278652774415 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6302943287867911, + "recall": 0.7173202614379085, + "precision": 0.5620998719590269, + "correct_pairwise": 0, + "hallucination_rate": 0.004627320374789929, + "deletion_rate": 0.014633996608166491 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9236058059587472, + "recall": 0.893569844789357, + "precision": 0.9557312252964427, + "correct_pairwise": 0, + "hallucination_rate": 0.0018068496025843424, + "deletion_rate": 0.004654006552111185 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5862068965517242, + "recall": 0.565410199556541, + "precision": 0.6085918854415274, + "correct_pairwise": 0, + "hallucination_rate": 0.0019406997879430476, + "deletion_rate": 0.002792714328991215 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "az": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.767934643860097, + "recall": 0.8378830083565459, + "precision": 0.708765315739868, + "correct_pairwise": 0, + "hallucination_rate": 0.002711364412799809, + "deletion_rate": 0.026913003161450906 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5803370786516855, + "recall": 0.5754874651810585, + "precision": 0.5852691218130311, + "correct_pairwise": 0, + "hallucination_rate": 0.0006443260528466683, + "deletion_rate": 0.0012170603220437069 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6528469750889679, + "recall": 0.6026609724047306, + "precision": 0.7121506211180124, + "correct_pairwise": 0, + "hallucination_rate": 0.0019517623643717766, + "deletion_rate": 0.004123954030860103 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "be": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5447684391080617, + "recall": 0.4493491794001132, + "precision": 0.6916376306620209, + "correct_pairwise": 0, + "hallucination_rate": 0.0017500339812423543, + "deletion_rate": 0.0030753024330569525 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.33184221228141525, + "recall": 0.23103057757644394, + "precision": 0.5887445887445888, + "correct_pairwise": 0, + "hallucination_rate": 0.002407618775859609, + "deletion_rate": 0.001605079183906406 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.44803749267721155, + "recall": 0.3446908238687579, + "precision": 0.6398929049531459, + "correct_pairwise": 0, + "hallucination_rate": 0.006434316353887399, + "deletion_rate": 0.005379088471849866 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8809926677946983, + "recall": 0.8059855521155831, + "precision": 0.9713930348258707, + "correct_pairwise": 0, + "hallucination_rate": 0.0005452197618250514, + "deletion_rate": 0.04075756851116744 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4756898817345597, + "recall": 0.3735810113519092, + "precision": 0.6546112115732369, + "correct_pairwise": 0, + "hallucination_rate": 0.003548722459914431, + "deletion_rate": 0.015944260066376104 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "bg": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9463013698630138, + "recall": 0.9610461880912632, + "precision": 0.9320021586616298, + "correct_pairwise": 0, + "hallucination_rate": 0.0015263954729344022, + "deletion_rate": 0.0008190414732818744 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5197662426950842, + "recall": 0.42070116861435725, + "precision": 0.6798561151079137, + "correct_pairwise": 0, + "hallucination_rate": 0.0010819830272060069, + "deletion_rate": 0.0015903846905919621 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5563507457695137, + "recall": 0.4622138252945099, + "precision": 0.6986393415084832, + "correct_pairwise": 0, + "hallucination_rate": 0.0006081628135178799, + "deletion_rate": 0.003760908687276214 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9734422880490297, + "recall": 0.9492031872509961, + "precision": 0.9989517819706499, + "correct_pairwise": 0, + "hallucination_rate": 0.00046416097102475136, + "deletion_rate": 0.00034812072826856356 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5866517106001121, + "recall": 0.5209163346613546, + "precision": 0.6713735558408216, + "correct_pairwise": 0, + "hallucination_rate": 0.00046623947972456006, + "deletion_rate": 0.006312165263963275 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "bn": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.799651061355045, + "recall": 0.7681564245810056, + "precision": 0.8338386901152214, + "correct_pairwise": 0, + "hallucination_rate": 0.0019401151134967342, + "deletion_rate": 0.005561663325357304 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.1542056074766355, + "recall": 0.1106145251396648, + "precision": 0.2544987146529563, + "correct_pairwise": 0, + "hallucination_rate": 0.002852511640472293, + "deletion_rate": 0.0027174344875808476 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.14964925954793454, + "recall": 0.14358974358974358, + "precision": 0.15624273424784935, + "correct_pairwise": 0, + "hallucination_rate": 0.0036045709026765855, + "deletion_rate": 0.010096407609749936 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9690721649484536, + "recall": 0.94, + "precision": 1.0, + "correct_pairwise": 0, + "hallucination_rate": 0.006792452830188679, + "deletion_rate": 0.0037735849056603774 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.33802816901408445, + "recall": 0.24, + "precision": 0.5714285714285714, + "correct_pairwise": 0, + "hallucination_rate": 0.009149130832570906, + "deletion_rate": 0.0 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ca": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9088888888888889, + "recall": 0.9222096956031567, + "precision": 0.895947426067908, + "correct_pairwise": 0, + "hallucination_rate": 0.0016272128021226318, + "deletion_rate": 0.0016893992786368725 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.531578947368421, + "recall": 0.455467869222097, + "precision": 0.6382306477093207, + "correct_pairwise": 0, + "hallucination_rate": 0.0012290263973495778, + "deletion_rate": 0.002778668376616437 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6319161327897496, + "recall": 0.603448275862069, + "precision": 0.66320293398533, + "correct_pairwise": 0, + "hallucination_rate": 0.0007184504576060076, + "deletion_rate": 0.003083199451233821 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9936575052854122, + "recall": 0.9903672486453944, + "precision": 0.996969696969697, + "correct_pairwise": 0, + "hallucination_rate": 4.687824380704915e-05, + "deletion_rate": 0.0003549352745390864 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6773238602723504, + "recall": 0.6887417218543046, + "precision": 0.6662783925451369, + "correct_pairwise": 0, + "hallucination_rate": 0.00015623195690715066, + "deletion_rate": 0.0018645944422179504 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ceb": { + "opus100": { + "meta/meta-llama-3-8b-instruct": {} + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.2816901408450704, + "recall": 0.20408163265306123, + "precision": 0.45454545454545453, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.0011441647597254005 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9970501474926253, + "recall": 1.0, + "precision": 0.9941176470588236, + "correct_pairwise": 0, + "hallucination_rate": 0.0030938466827088347, + "deletion_rate": 0.00017188037126160193 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.625, + "recall": 0.5325443786982249, + "precision": 0.7563025210084033, + "correct_pairwise": 0, + "hallucination_rate": 0.0023251654444643175, + "deletion_rate": 0.0016097299230906814 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "cs": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9126712328767124, + "recall": 0.9018612521150592, + "precision": 0.9237435008665511, + "correct_pairwise": 0, + "hallucination_rate": 0.0015227653418608193, + "deletion_rate": 0.001581333239624697 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.552317880794702, + "recall": 0.4703891708967851, + "precision": 0.6688051323175621, + "correct_pairwise": 0, + "hallucination_rate": 0.0026995333838223438, + "deletion_rate": 0.0036156646226760806 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6303711509190961, + "recall": 0.5983551900422316, + "precision": 0.6660069272637308, + "correct_pairwise": 0, + "hallucination_rate": 0.0019024221574328332, + "deletion_rate": 0.005664213071281632 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9298378189850607, + "recall": 0.8761091028590207, + "precision": 0.9905870696061432, + "correct_pairwise": 0, + "hallucination_rate": 0.00040189940712206446, + "deletion_rate": 0.0010225541877409488 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6427396949594603, + "recall": 0.6211506849315068, + "precision": 0.6658834586466166, + "correct_pairwise": 0, + "hallucination_rate": 0.0013969161433012706, + "deletion_rate": 0.0025392784860308387 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9590954439640839, + "recall": 0.9285254346426272, + "precision": 0.9917469050894085, + "correct_pairwise": 0, + "hallucination_rate": 0.00044928675727282937, + "deletion_rate": 0.0014483586254189895 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5975130890052356, + "recall": 0.587894397939472, + "precision": 0.6074517631403858, + "correct_pairwise": 0, + "hallucination_rate": 0.001381324253751689, + "deletion_rate": 0.0037077651021755857 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "cy": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4629629629629629, + "recall": 0.3333333333333333, + "precision": 0.7575757575757576, + "correct_pairwise": 0, + "hallucination_rate": 0.0018779675430515201, + "deletion_rate": 0.004092551909857558 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.20770355923939546, + "recall": 0.1290909090909091, + "precision": 0.5311720698254364, + "correct_pairwise": 0, + "hallucination_rate": 0.006083494567643994, + "deletion_rate": 0.0020650394403929156 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9870588235294118, + "recall": 0.9789964994165694, + "precision": 0.9952550415183867, + "correct_pairwise": 0, + "hallucination_rate": 0.00041711138100671057, + "deletion_rate": 0.0001472157815317802 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4996282527881041, + "recall": 0.3920653442240373, + "precision": 0.6885245901639344, + "correct_pairwise": 0, + "hallucination_rate": 0.0004433747149733975, + "deletion_rate": 0.000709399543957436 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "da": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9317803660565723, + "recall": 0.9406494960806271, + "precision": 0.9230769230769231, + "correct_pairwise": 0, + "hallucination_rate": 0.001009532030695626, + "deletion_rate": 0.0013021500106074019 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5994415141172821, + "recall": 0.5408734602463606, + "precision": 0.6722338204592901, + "correct_pairwise": 0, + "hallucination_rate": 0.0007971575638864848, + "deletion_rate": 0.001396923731001078 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6535724452035296, + "recall": 0.6379904412581971, + "precision": 0.6699346405228758, + "correct_pairwise": 0, + "hallucination_rate": 0.0005736955126292185, + "deletion_rate": 0.0012923374498929954 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9518935516888434, + "recall": 0.9153543307086615, + "precision": 0.9914712153518124, + "correct_pairwise": 0, + "hallucination_rate": 0.004268783583905937, + "deletion_rate": 0.0031828649529123216 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6314699792960664, + "recall": 0.6003937007874016, + "precision": 0.665938864628821, + "correct_pairwise": 0, + "hallucination_rate": 0.0001554665941155894, + "deletion_rate": 0.0003886664852889735 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "de": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8379290939786157, + "recall": 0.8738262910798122, + "precision": 0.8048648648648649, + "correct_pairwise": 0, + "hallucination_rate": 0.0008018334838086459, + "deletion_rate": 0.002601223585268993 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6466398265716939, + "recall": 0.6126760563380281, + "precision": 0.6845901639344262, + "correct_pairwise": 0, + "hallucination_rate": 0.0004972422682098624, + "deletion_rate": 0.002747917798001871 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7128469113697404, + "recall": 0.7079350966881529, + "precision": 0.7178273608293892, + "correct_pairwise": 0, + "hallucination_rate": 0.003505669003388383, + "deletion_rate": 0.002691706377643473 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.967251461988304, + "recall": 0.9408418657565415, + "precision": 0.9951865222623345, + "correct_pairwise": 0, + "hallucination_rate": 0.0002651681267911597, + "deletion_rate": 0.001203455344667571 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7671541057367829, + "recall": 0.7758816837315131, + "precision": 0.7586206896551724, + "correct_pairwise": 0, + "hallucination_rate": 0.0005862216964837167, + "deletion_rate": 0.004250107299506946 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9732065687121868, + "recall": 0.955316742081448, + "precision": 0.991779213153259, + "correct_pairwise": 0, + "hallucination_rate": 2.6929015116153818e-05, + "deletion_rate": 0.001099601450576281 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7529473408435945, + "recall": 0.8127828054298643, + "precision": 0.7013177159590044, + "correct_pairwise": 0, + "hallucination_rate": 0.00037564707499198317, + "deletion_rate": 0.006596729121810436 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7834726424082814, + "f1_success": 0.7834726424082814, + "recall": 0.6617850577993488, + "recall_success": 0.6617850577993488, + "precision": 0.9660756573438994, + "precision_success": 0.9660756573438994, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.00022528944962314188, + "hallucination_rate_success": 0.00022528944962314188, + "deletion_rate": 0.0019204568514467394, + "deletion_rate_success": 0.0019204568514467394 + } + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5920407383180792, + "f1_success": 0.5920407383180792, + "recall": 0.5196850573108305, + "recall_success": 0.5196850573108305, + "precision": 0.6972586325163447, + "precision_success": 0.6972586325163447, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0004436358399903133, + "hallucination_rate_success": 0.0004436358399903133, + "deletion_rate": 0.0029532818335113544, + "deletion_rate_success": 0.0029532818335113544 + } + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.833600082879754, + "f1_success": 0.833600082879754, + "recall": 0.742347966632166, + "recall_success": 0.742347966632166, + "precision": 0.9533076419682033, + "precision_success": 0.9533076419682033, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0009080290841756802, + "hallucination_rate_success": 0.0009080290841756802, + "deletion_rate": 0.0055146294529662505, + "deletion_rate_success": 0.0055146294529662505 + } + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7419815878097253, + "f1_success": 0.7419815878097253, + "recall": 0.717094791861486, + "recall_success": 0.717094791861486, + "precision": 0.769598227029852, + "precision_success": 0.769598227029852, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0006545361189937276, + "hallucination_rate_success": 0.0006545361189937276, + "deletion_rate": 0.0030738792959210236, + "deletion_rate_success": 0.0030738792959210236 + } + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "el": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9425666391865897, + "recall": 0.9575656058068118, + "precision": 0.928030303030303, + "correct_pairwise": 0, + "hallucination_rate": 0.001266308518802763, + "deletion_rate": 0.000546815042210284 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5085574572127141, + "recall": 0.4064768285873814, + "precision": 0.6791044776119403, + "correct_pairwise": 0, + "hallucination_rate": 0.0016807221173144038, + "deletion_rate": 0.001235825086260591 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5612928655892787, + "recall": 0.4746666666666667, + "precision": 0.686595949855352, + "correct_pairwise": 0, + "hallucination_rate": 0.0011139088131945692, + "deletion_rate": 0.0026564939043532292 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9468354430379746, + "recall": 0.9121951219512195, + "precision": 0.9842105263157894, + "correct_pairwise": 0, + "hallucination_rate": 3.216261417728033e-05, + "deletion_rate": 0.0006271709764569664 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6869220607661823, + "recall": 0.6341463414634146, + "precision": 0.7492795389048992, + "correct_pairwise": 0, + "hallucination_rate": 0.000638433709299851, + "deletion_rate": 0.0017843403670175324 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "en": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9277652370203161, + "recall": 0.9220415030846887, + "precision": 0.9335604770017035, + "correct_pairwise": 0, + "hallucination_rate": 0.0007457804527018187, + "deletion_rate": 0.0030747088839460945 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7999999999999999, + "recall": 0.7986539540100953, + "precision": 0.8013505908835116, + "correct_pairwise": 0, + "hallucination_rate": 0.000906311717122528, + "deletion_rate": 0.0023131239347455564 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6680829652820485, + "recall": 0.6638888888888889, + "precision": 0.6723303702036683, + "correct_pairwise": 0, + "hallucination_rate": 0.00046279458113712344, + "deletion_rate": 0.002509900538575786 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9475357710651828, + "recall": 0.9066937119675457, + "precision": 0.9922308546059934, + "correct_pairwise": 0, + "hallucination_rate": 8.934243964421855e-05, + "deletion_rate": 0.0010125476493011436 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7103882476390347, + "recall": 0.6866125760649088, + "precision": 0.7358695652173913, + "correct_pairwise": 0, + "hallucination_rate": 3.0558922696111886e-05, + "deletion_rate": 0.0010288170641024334 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9819457641985235, + "recall": 0.968704932218056, + "precision": 0.9955535793686082, + "correct_pairwise": 0, + "hallucination_rate": 0.00010039082146797483, + "deletion_rate": 0.0007479116199364124 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7659718005801796, + "recall": 0.8187193539082781, + "precision": 0.7196095829636202, + "correct_pairwise": 0, + "hallucination_rate": 6.788419367977586e-05, + "deletion_rate": 0.0008331241951608856 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8922367357788888, + "f1_success": 0.8922367357788888, + "recall": 0.8234349791355353, + "recall_success": 0.8234349791355353, + "precision": 0.9778770916409213, + "precision_success": 0.9778770916409213, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.00034346403169817753, + "hallucination_rate_success": 0.00034346403169817753, + "deletion_rate": 0.0023349062738609334, + "deletion_rate_success": 0.0023349062738609334 + } + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6920991032358444, + "f1_success": 0.6920991032358444, + "recall": 0.6781120228241735, + "recall_success": 0.6781120228241735, + "precision": 0.7186293521688591, + "precision_success": 0.7186293521688591, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 9.704703416968173e-05, + "hallucination_rate_success": 9.704703416968173e-05, + "deletion_rate": 0.0015335851160265357, + "deletion_rate_success": 0.0015335851160265357 + } + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "en-de": { + "opus100": { + "meta/meta-llama-3-8b-instruct": {} + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8215767634854771, + "recall": 0.9183673469387755, + "precision": 0.7432432432432432, + "correct_pairwise": 0, + "hallucination_rate": 0.0007750544784669647, + "deletion_rate": 0.011378698357783119 + } + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5625, + "recall": 0.601113172541744, + "precision": 0.5285481239804242, + "correct_pairwise": 0, + "hallucination_rate": 0.0002909209393255289, + "deletion_rate": 0.0010473153815719041 + } + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.899216487051897, + "f1_success": 0.899216487051897, + "recall": 0.9635731350663478, + "recall_success": 0.9635731350663478, + "precision": 0.879775429531632, + "precision_success": 0.879775429531632, + "correct_pairwise": 0.6133056133056133, + "correct_pairwise_success": 0.6133056133056133, + "hallucination_rate": 0.0006370849056134787, + "hallucination_rate_success": 0.0006370849056134787, + "deletion_rate": 0.009718267983594507, + "deletion_rate_success": 0.009718267983594507 + } + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6767763917877446, + "f1_success": 0.6767763917877446, + "recall": 0.8175586437285662, + "recall_success": 0.8175586437285662, + "precision": 0.6345990341126608, + "precision_success": 0.6345990341126608, + "correct_pairwise": 0.11850311850311851, + "correct_pairwise_success": 0.11850311850311851, + "hallucination_rate": 0.0010736983348593233, + "hallucination_rate_success": 0.0010736983348593233, + "deletion_rate": 0.005756466286959291, + "deletion_rate_success": 0.005756466286959291 + } + } + }, + "eo": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9160261884429263, + "recall": 0.9024116657319126, + "precision": 0.9300578034682081, + "correct_pairwise": 0, + "hallucination_rate": 0.001938438321234356, + "deletion_rate": 0.0005073764733432207 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6732612055641423, + "recall": 0.6107683679192373, + "precision": 0.75, + "correct_pairwise": 0, + "hallucination_rate": 0.0013867551289546314, + "deletion_rate": 0.001332372574877979 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5847194812517621, + "recall": 0.5418916565058353, + "precision": 0.6348979591836734, + "correct_pairwise": 0, + "hallucination_rate": 0.000718930590746265, + "deletion_rate": 0.0020344737203409928 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "es": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9361939258846474, + "recall": 0.9432902863559798, + "precision": 0.9292035398230089, + "correct_pairwise": 0, + "hallucination_rate": 0.0007130080182129767, + "deletion_rate": 0.001225873434822311 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6127272727272728, + "recall": 0.5676586187535093, + "precision": 0.6655694535878868, + "correct_pairwise": 0, + "hallucination_rate": 0.0004050743600789574, + "deletion_rate": 0.001041619783060176 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6390217969165337, + "recall": 0.602539823994653, + "precision": 0.6802062374245473, + "correct_pairwise": 0, + "hallucination_rate": 0.0005896122948201858, + "deletion_rate": 0.0015477322739029878 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9847649918962722, + "recall": 0.9812661498708011, + "precision": 0.9882888744307091, + "correct_pairwise": 0, + "hallucination_rate": 0.00014361058553625988, + "deletion_rate": 0.0005600812835914135 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6862113402061855, + "recall": 0.687984496124031, + "precision": 0.6844473007712082, + "correct_pairwise": 0, + "hallucination_rate": 0.00015439530344191245, + "deletion_rate": 0.000694778865488606 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9832566697332107, + "recall": 0.9691693870148712, + "precision": 0.9977595220313666, + "correct_pairwise": 0, + "hallucination_rate": 0.00024175416824478416, + "deletion_rate": 0.0004861944939145104 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6689213243147027, + "recall": 0.681537903518317, + "precision": 0.6567633694512408, + "correct_pairwise": 0, + "hallucination_rate": 0.00020887900683529067, + "deletion_rate": 0.0008877357790499853 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7038474094376762, + "f1_success": 0.7038474094376762, + "recall": 0.572661175247794, + "recall_success": 0.572661175247794, + "precision": 0.947680383315367, + "precision_success": 0.947680383315367, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0032343800086468946, + "hallucination_rate_success": 0.0032343800086468946, + "deletion_rate": 0.004975602300297705, + "deletion_rate_success": 0.004975602300297705 + } + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5050869280095259, + "f1_success": 0.5050869280095259, + "recall": 0.4237323792635769, + "recall_success": 0.4237323792635769, + "precision": 0.6682079889661346, + "precision_success": 0.6682079889661346, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0025679865068117627, + "hallucination_rate_success": 0.0025679865068117627, + "deletion_rate": 0.0035159004128685312, + "deletion_rate_success": 0.0035159004128685312 + } + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6648358514904357, + "f1_success": 0.6648358514904357, + "recall": 0.5125253578959488, + "recall_success": 0.5125253578959488, + "precision": 0.9759027355403542, + "precision_success": 0.9759027355403542, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0003445138441666999, + "hallucination_rate_success": 0.0003445138441666999, + "deletion_rate": 0.0026756747255556115, + "deletion_rate_success": 0.0026756747255556115 + } + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5587316066381027, + "f1_success": 0.5587316066381027, + "recall": 0.4307246018227942, + "recall_success": 0.4307246018227942, + "precision": 0.8509224060340708, + "precision_success": 0.8509224060340708, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0001512091733658365, + "hallucination_rate_success": 0.0001512091733658365, + "deletion_rate": 0.0011083481325874674, + "deletion_rate_success": 0.0011083481325874674 + } + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "es-en": { + "opus100": { + "meta/meta-llama-3-8b-instruct": {} + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9283842794759825, + "recall": 0.8858333333333334, + "precision": 0.9752293577981651, + "correct_pairwise": 0, + "hallucination_rate": 0.004409064917085503, + "deletion_rate": 0.019306588015770308 + } + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.47916666666666674, + "recall": 0.44083333333333335, + "precision": 0.5248015873015873, + "correct_pairwise": 0, + "hallucination_rate": 0.0008762459121563473, + "deletion_rate": 0.0022062620288222316 + } + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "et": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8901767603593163, + "recall": 0.862436833239753, + "precision": 0.9197604790419162, + "correct_pairwise": 0, + "hallucination_rate": 0.00196043047444058, + "deletion_rate": 0.0017307566113262025 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4031238378579397, + "recall": 0.3043234138124649, + "precision": 0.5969162995594713, + "correct_pairwise": 0, + "hallucination_rate": 0.00033169470479171273, + "deletion_rate": 0.001871098334722482 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5315292315547613, + "recall": 0.46266666666666667, + "precision": 0.6244751049790042, + "correct_pairwise": 0, + "hallucination_rate": 0.00045954936726225177, + "deletion_rate": 0.001642031619740046 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9408823004107875, + "recall": 0.9107883817427386, + "precision": 0.9730328777244182, + "correct_pairwise": 0, + "hallucination_rate": 0.0003315393727146315, + "deletion_rate": 0.000756424782407169 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4788445890968267, + "recall": 0.406984785615491, + "precision": 0.5815217391304348, + "correct_pairwise": 0, + "hallucination_rate": 0.0003968621433201487, + "deletion_rate": 0.0011740505073221065 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9700226244343891, + "recall": 0.9449035812672176, + "precision": 0.9965136548518303, + "correct_pairwise": 0, + "hallucination_rate": 0.00020309569696393538, + "deletion_rate": 0.0018365036427589903 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4982720703738612, + "recall": 0.4369146005509642, + "precision": 0.5796783625730995, + "correct_pairwise": 0, + "hallucination_rate": 0.0003808511580532306, + "deletion_rate": 0.0008502723528630265 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9177388767782068, + "f1_success": 0.9177388767782068, + "recall": 0.892944203263104, + "recall_success": 0.892944203263104, + "precision": 0.9658964735319413, + "precision_success": 0.9658964735319413, + "correct_pairwise": 0.5467980295566502, + "correct_pairwise_success": 0.5467980295566502, + "hallucination_rate": 0.0010983809387897269, + "hallucination_rate_success": 0.0010983809387897269, + "deletion_rate": 0.003637372325083711, + "deletion_rate_success": 0.003637372325083711 + } + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5669393084451254, + "f1_success": 0.5669393084451254, + "recall": 0.5748643633755122, + "recall_success": 0.5748643633755122, + "precision": 0.6291463544665514, + "precision_success": 0.6291463544665514, + "correct_pairwise": 0.054187192118226604, + "correct_pairwise_success": 0.054187192118226604, + "hallucination_rate": 0.0007806303170134423, + "hallucination_rate_success": 0.0007806303170134423, + "deletion_rate": 0.002662472479524569, + "deletion_rate_success": 0.002662472479524569 + } + } + }, + "eu": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.845185835528241, + "recall": 0.8107804604154969, + "precision": 0.882640586797066, + "correct_pairwise": 0, + "hallucination_rate": 0.0007596859964547987, + "deletion_rate": 0.00090119613304932 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.30510846745976206, + "recall": 0.24480628860190903, + "precision": 0.40482822655524603, + "correct_pairwise": 0, + "hallucination_rate": 0.0024132799790283657, + "deletion_rate": 0.0016576843306424875 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.45005813338970513, + "recall": 0.39779521674140506, + "precision": 0.5181309321002677, + "correct_pairwise": 0, + "hallucination_rate": 0.0006467987920474973, + "deletion_rate": 0.002865987750969083 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9733671528218135, + "recall": 0.9481161210623842, + "precision": 1.0, + "correct_pairwise": 0, + "hallucination_rate": 0.0003349914355963164, + "deletion_rate": 0.005284015852047556 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.44532090354965936, + "recall": 0.3835701050030883, + "precision": 0.5307692307692308, + "correct_pairwise": 0, + "hallucination_rate": 0.00015585630049094734, + "deletion_rate": 0.0009221497779047718 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "fa": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6041131105398457, + "recall": 0.5233853006681515, + "precision": 0.7142857142857143, + "correct_pairwise": 0, + "hallucination_rate": 0.0024784493399030343, + "deletion_rate": 0.013399425315730748 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5576255131038838, + "recall": 0.49192200557103066, + "precision": 0.6435860058309038, + "correct_pairwise": 0, + "hallucination_rate": 0.002079905628162543, + "deletion_rate": 0.0013141692277444923 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6260381465146916, + "recall": 0.6072222222222222, + "precision": 0.6460574535997162, + "correct_pairwise": 0, + "hallucination_rate": 0.0020284655373087983, + "deletion_rate": 0.004221129551481249 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9973231357552582, + "recall": 0.9961802902979373, + "precision": 0.998468606431853, + "correct_pairwise": 0, + "hallucination_rate": 0.0008964311390000798, + "deletion_rate": 0.005857866848911413 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8969877277798438, + "recall": 0.9213139801375095, + "precision": 0.8739130434782608, + "correct_pairwise": 0, + "hallucination_rate": 0.0005882459411030064, + "deletion_rate": 0.0005429962533258521 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "fi": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9392510402219142, + "recall": 0.9458100558659218, + "precision": 0.9327823691460055, + "correct_pairwise": 0, + "hallucination_rate": 0.001235503889029287, + "deletion_rate": 0.003903069103978884 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5522292993630573, + "recall": 0.48435754189944136, + "precision": 0.6422222222222222, + "correct_pairwise": 0, + "hallucination_rate": 0.0004552102199537042, + "deletion_rate": 0.001840211527472421 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5594363117293324, + "recall": 0.5116666666666667, + "precision": 0.6170440841484658, + "correct_pairwise": 0, + "hallucination_rate": 0.0003240961431208568, + "deletion_rate": 0.001831143208632841 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9585185185185185, + "recall": 0.9249463902787706, + "precision": 0.994619523443505, + "correct_pairwise": 0, + "hallucination_rate": 6.608773808107643e-05, + "deletion_rate": 0.0024584638566160434 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6340014847809948, + "recall": 0.6104360257326662, + "precision": 0.6594594594594595, + "correct_pairwise": 0, + "hallucination_rate": 0.00011475088931939223, + "deletion_rate": 0.0013905107764585175 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9672977624784854, + "recall": 0.9387527839643652, + "precision": 0.9976331360946745, + "correct_pairwise": 0, + "hallucination_rate": 0.00017692093242692629, + "deletion_rate": 0.007934635757328815 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6542688081149619, + "recall": 0.6464365256124721, + "precision": 0.6622932116371933, + "correct_pairwise": 0, + "hallucination_rate": 7.644550254727336e-05, + "deletion_rate": 0.0040516116350054875 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "fr": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.913826544749238, + "recall": 0.9295377677564826, + "precision": 0.8986376021798365, + "correct_pairwise": 0, + "hallucination_rate": 0.001064520168956998, + "deletion_rate": 0.0030797080823836143 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6445182724252492, + "recall": 0.6014656144306652, + "precision": 0.6942094990240729, + "correct_pairwise": 0, + "hallucination_rate": 0.0006088957324605828, + "deletion_rate": 0.0012821938981621888 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6392740969012155, + "recall": 0.6223333333333333, + "precision": 0.6571629707849349, + "correct_pairwise": 0, + "hallucination_rate": 0.00045086540208111683, + "deletion_rate": 0.003201468718374549 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9906542056074765, + "recall": 0.9919786096256684, + "precision": 0.9893333333333333, + "correct_pairwise": 0, + "hallucination_rate": 0.00020143015409406788, + "deletion_rate": 0.0013898680632490684 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7225806451612905, + "recall": 0.7486631016042781, + "precision": 0.6982543640897756, + "correct_pairwise": 0, + "hallucination_rate": 0.0001654978381844887, + "deletion_rate": 0.00028962121682285524 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9789972899728997, + "recall": 0.9678499665103818, + "precision": 0.9904043865661412, + "correct_pairwise": 0, + "hallucination_rate": 0.00013832644086067666, + "deletion_rate": 0.00044359858620837683 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7324777887462982, + "recall": 0.7454789015405224, + "precision": 0.7199223803363519, + "correct_pairwise": 0, + "hallucination_rate": 0.00031709637290533454, + "deletion_rate": 0.0012439934629363124 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8553410784360195, + "f1_success": 0.8553410784360195, + "recall": 0.7694855829254675, + "recall_success": 0.7694855829254675, + "precision": 0.970478717878179, + "precision_success": 0.970478717878179, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.00033991571476978106, + "hallucination_rate_success": 0.00033991571476978106, + "deletion_rate": 0.001339102530848083, + "deletion_rate_success": 0.001339102530848083 + } + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6003577768746724, + "f1_success": 0.6003577768746724, + "recall": 0.5640650692160706, + "recall_success": 0.5640650692160706, + "precision": 0.6648582717345891, + "precision_success": 0.6648582717345891, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.000776263637572764, + "hallucination_rate_success": 0.000776263637572764, + "deletion_rate": 0.00158901978103394, + "deletion_rate_success": 0.00158901978103394 + } + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.527317401532291, + "f1_success": 0.527317401532291, + "recall": 0.4571205144402872, + "recall_success": 0.4571205144402872, + "precision": 0.6582475385042649, + "precision_success": 0.6582475385042649, + "correct_pairwise": 0.004357298474945534, + "correct_pairwise_success": 0.004357298474945534, + "hallucination_rate": 4.474804666844771e-05, + "hallucination_rate_success": 4.474804666844771e-05, + "deletion_rate": 0.0022215015812996316, + "deletion_rate_success": 0.0022215015812996316 + } + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4070258776069714, + "f1_success": 0.4070258776069714, + "recall": 0.3828537910548782, + "recall_success": 0.3828537910548782, + "precision": 0.4754422480932415, + "precision_success": 0.4754422480932415, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0004020142784319656, + "hallucination_rate_success": 0.0004020142784319656, + "deletion_rate": 0.0027224235449210136, + "deletion_rate_success": 0.0027224235449210136 + } + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "fy": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4239359460598399, + "recall": 0.29994036970781157, + "precision": 0.7227011494252874, + "correct_pairwise": 0, + "hallucination_rate": 0.0011092507325240687, + "deletion_rate": 0.007325240686479699 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.2748299319727891, + "recall": 0.1806797853309481, + "precision": 0.5738636363636364, + "correct_pairwise": 0, + "hallucination_rate": 0.002926019739715259, + "deletion_rate": 0.002467464407371823 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ga": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7130919220055709, + "recall": 0.5739910313901345, + "precision": 0.9411764705882353, + "correct_pairwise": 0, + "hallucination_rate": 0.00024294251979981537, + "deletion_rate": 0.0013078405649223394 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.25895765472312704, + "recall": 0.17825112107623317, + "precision": 0.4732142857142857, + "correct_pairwise": 0, + "hallucination_rate": 0.00016895441939431902, + "deletion_rate": 0.004800778014497113 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.08888888888888888, + "recall": 0.04878048780487805, + "precision": 0.5, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.00041339396444811904 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9453681710213776, + "recall": 0.9754901960784313, + "precision": 0.9170506912442397, + "correct_pairwise": 0, + "hallucination_rate": 0.000334467900918803, + "deletion_rate": 0.0009443799555354438 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.41254125412541254, + "recall": 0.3078817733990148, + "precision": 0.625, + "correct_pairwise": 0, + "hallucination_rate": 0.023976240116439163, + "deletion_rate": 0.0013178081114039574 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "gd": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.627906976744186, + "recall": 0.5277777777777778, + "precision": 0.7749244712990937, + "correct_pairwise": 0, + "hallucination_rate": 0.0007763831635765384, + "deletion_rate": 0.0028097676396103295 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.17031630170316303, + "recall": 0.10802469135802469, + "precision": 0.40229885057471265, + "correct_pairwise": 0, + "hallucination_rate": 0.01584279076852769, + "deletion_rate": 0.0011996343971361109 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6759847522236341, + "recall": 0.5428571428571428, + "precision": 0.8956228956228957, + "correct_pairwise": 0, + "hallucination_rate": 0.0004653868528214078, + "deletion_rate": 0.0031607523754120614 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.2971768202080238, + "recall": 0.20449897750511248, + "precision": 0.5434782608695652, + "correct_pairwise": 0, + "hallucination_rate": 0.00020222446916076846, + "deletion_rate": 0.0008695652173913044 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "gl": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9075208913649025, + "recall": 0.9131165919282511, + "precision": 0.9019933554817275, + "correct_pairwise": 0, + "hallucination_rate": 0.002477147442606936, + "deletion_rate": 0.0011746098202032888 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5104712041884817, + "recall": 0.437219730941704, + "precision": 0.6132075471698113, + "correct_pairwise": 0, + "hallucination_rate": 0.0014266030995086145, + "deletion_rate": 0.0013290575884311025 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6155502392344498, + "recall": 0.5721592172559484, + "precision": 0.6660626456122185, + "correct_pairwise": 0, + "hallucination_rate": 0.0007494580365438216, + "deletion_rate": 0.0016636729637658717 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9459854014598541, + "recall": 0.9, + "precision": 0.9969230769230769, + "correct_pairwise": 0, + "hallucination_rate": 7.891725525786213e-05, + "deletion_rate": 0.0006510673558773626 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.600297176820208, + "recall": 0.5611111111111111, + "precision": 0.645367412140575, + "correct_pairwise": 0, + "hallucination_rate": 0.0012493702770780856, + "deletion_rate": 0.0011889168765743072 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "gu": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3299425033171163, + "recall": 0.21449108683151236, + "precision": 0.7145593869731801, + "correct_pairwise": 0, + "hallucination_rate": 0.0014037613605687033, + "deletion_rate": 0.0021776298029335013 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.18889374726716224, + "recall": 0.1242093156986774, + "precision": 0.39416058394160586, + "correct_pairwise": 0, + "hallucination_rate": 0.0027160542423586374, + "deletion_rate": 0.006022555059143065 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.20436074211086822, + "recall": 0.2560033703131583, + "precision": 0.17005597014925372, + "correct_pairwise": 0, + "hallucination_rate": 0.01252931271768297, + "deletion_rate": 0.026919262203701284 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9313501144164761, + "recall": 0.888646288209607, + "precision": 0.9783653846153846, + "correct_pairwise": 0, + "hallucination_rate": 0.0005028133604692925, + "deletion_rate": 0.0012211181611397103 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.34437751004016065, + "recall": 0.37445414847161573, + "precision": 0.3187732342007435, + "correct_pairwise": 0, + "hallucination_rate": 0.002730253505313788, + "deletion_rate": 0.002947142802464883 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ha": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8811225840614244, + "recall": 0.924958310172318, + "precision": 0.8412537917087968, + "correct_pairwise": 0, + "hallucination_rate": 0.016394449848958065, + "deletion_rate": 0.0007987302237468639 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.09465791940018745, + "recall": 0.05614230127848805, + "precision": 0.30149253731343284, + "correct_pairwise": 0, + "hallucination_rate": 0.04642297758461523, + "deletion_rate": 0.0009387285155642225 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.0, + "recall": 0.0, + "precision": 0.0, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.003134796238244514 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "he": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9163168205989366, + "recall": 0.9114699331848553, + "precision": 0.9212155317951604, + "correct_pairwise": 0, + "hallucination_rate": 0.001414075489876152, + "deletion_rate": 0.002159961462558078 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3682140047206923, + "recall": 0.26057906458797325, + "precision": 0.6273458445040214, + "correct_pairwise": 0, + "hallucination_rate": 0.0005300031468936846, + "deletion_rate": 0.0008281299170213823 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.36192316984778933, + "recall": 0.24966666666666668, + "precision": 0.6575943810359964, + "correct_pairwise": 0, + "hallucination_rate": 0.0011433670365992219, + "deletion_rate": 0.005221902149587412 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.933933933933934, + "recall": 0.8810198300283286, + "precision": 0.9936102236421726, + "correct_pairwise": 0, + "hallucination_rate": 0.000482809442736259, + "deletion_rate": 7.62330699057251e-05 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.46460980036297644, + "recall": 0.3626062322946176, + "precision": 0.6464646464646465, + "correct_pairwise": 0, + "hallucination_rate": 0.00018458942038921997, + "deletion_rate": 0.0037708981593797797 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "hi": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5956072351421188, + "recall": 0.5191441441441441, + "precision": 0.6984848484848485, + "correct_pairwise": 0, + "hallucination_rate": 0.0012132650310056618, + "deletion_rate": 0.003483702515928538 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.2850609756097561, + "recall": 0.21058558558558557, + "precision": 0.4410377358490566, + "correct_pairwise": 0, + "hallucination_rate": 0.0009984087859973168, + "deletion_rate": 0.0021840192193691307 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.38700206845933144, + "recall": 0.32222222222222224, + "precision": 0.4843828294638383, + "correct_pairwise": 0, + "hallucination_rate": 0.0017145778441936372, + "deletion_rate": 0.0037503113243409756 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9980184940554822, + "recall": 0.9973597359735974, + "precision": 0.998678122934567, + "correct_pairwise": 0, + "hallucination_rate": 0.00013555406249631647, + "deletion_rate": 0.0017445218477786814 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6901899961225281, + "recall": 0.5874587458745875, + "precision": 0.8364661654135338, + "correct_pairwise": 0, + "hallucination_rate": 0.0008230929001806946, + "deletion_rate": 0.0005144330626129342 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9732884399551066, + "recall": 0.9559082892416225, + "precision": 0.9913122999542753, + "correct_pairwise": 0, + "hallucination_rate": 0.0004920712492206063, + "deletion_rate": 0.004341012116411924 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5619072032812099, + "recall": 0.48324514991181655, + "precision": 0.6711573790569504, + "correct_pairwise": 0, + "hallucination_rate": 0.006350697203959251, + "deletion_rate": 0.008771042554728705 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "hu": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9417288041977354, + "recall": 0.9541130386121992, + "precision": 0.9296619411123228, + "correct_pairwise": 0, + "hallucination_rate": 0.0023814270840256087, + "deletion_rate": 0.002182051793269976 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.49277357192016513, + "recall": 0.40067151650811417, + "precision": 0.6398570151921358, + "correct_pairwise": 0, + "hallucination_rate": 0.0007423043911944142, + "deletion_rate": 0.0022269131735832425 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.560603204524034, + "recall": 0.49588706091596263, + "precision": 0.6447463506287036, + "correct_pairwise": 0, + "hallucination_rate": 0.0005105612359764821, + "deletion_rate": 0.001400045027810209 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9813200498132005, + "recall": 0.9752475247524752, + "precision": 0.9874686716791979, + "correct_pairwise": 0, + "hallucination_rate": 0.00020885547201336674, + "deletion_rate": 0.001163623344074472 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5178571428571429, + "recall": 0.5024752475247525, + "precision": 0.5342105263157895, + "correct_pairwise": 0, + "hallucination_rate": 0.00010706474357993912, + "deletion_rate": 0.0012388920328535813 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "hy": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7308904294588997, + "recall": 0.642246835443038, + "precision": 0.8479214539377481, + "correct_pairwise": 0, + "hallucination_rate": 0.0028232756790720977, + "deletion_rate": 0.009476017016073566 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.47684809098294073, + "recall": 0.3718131433095804, + "precision": 0.6645909991508633, + "correct_pairwise": 0, + "hallucination_rate": 0.0024743070130998045, + "deletion_rate": 0.005581891872331186 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5163462715807519, + "recall": 0.46860762306922993, + "precision": 0.5749147920927062, + "correct_pairwise": 0, + "hallucination_rate": 0.004745547874495827, + "deletion_rate": 0.017543510976701766 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.920353982300885, + "recall": 0.874766355140187, + "precision": 0.970954356846473, + "correct_pairwise": 0, + "hallucination_rate": 0.003113385929451653, + "deletion_rate": 0.015240920649409923 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.48088531187122735, + "recall": 0.44672897196261685, + "precision": 0.5206971677559913, + "correct_pairwise": 0, + "hallucination_rate": 0.011914098349713829, + "deletion_rate": 0.02399506082197267 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "id": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9226425748164879, + "recall": 0.9289368959636157, + "precision": 0.9164329781267526, + "correct_pairwise": 0, + "hallucination_rate": 0.0017840069028240947, + "deletion_rate": 0.0036146545089899957 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.49217638691322896, + "recall": 0.39340534394542354, + "precision": 0.6571699905033238, + "correct_pairwise": 0, + "hallucination_rate": 0.0006117255554468044, + "deletion_rate": 0.0015660174219438191 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5597564070032988, + "recall": 0.4903311847077128, + "precision": 0.6520839491575525, + "correct_pairwise": 0, + "hallucination_rate": 0.00042714006882208703, + "deletion_rate": 0.001757669962345433 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9933184855233853, + "recall": 0.9911111111111112, + "precision": 0.9955357142857143, + "correct_pairwise": 0, + "hallucination_rate": 5.8395134851050695e-05, + "deletion_rate": 0.0013597724258173234 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5977011494252873, + "recall": 0.5488888888888889, + "precision": 0.6560424966799469, + "correct_pairwise": 0, + "hallucination_rate": 0.00026475134724274283, + "deletion_rate": 0.0010504650229308829 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ig": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3934262948207171, + "recall": 0.265993265993266, + "precision": 0.7552581261950286, + "correct_pairwise": 0, + "hallucination_rate": 0.0016271459129385524, + "deletion_rate": 0.0013529078377241897 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.10059171597633136, + "recall": 0.05723905723905724, + "precision": 0.4146341463414634, + "correct_pairwise": 0, + "hallucination_rate": 0.011475159430251652, + "deletion_rate": 0.0012410738152518425 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.07476635514018691, + "recall": 0.043010752688172046, + "precision": 0.2857142857142857, + "correct_pairwise": 0, + "hallucination_rate": 0.0008718395815170009, + "deletion_rate": 0.0007265329845975008 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "is": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9509831071725284, + "recall": 0.9592178770949721, + "precision": 0.942888522789676, + "correct_pairwise": 0, + "hallucination_rate": 0.0029146643159780475, + "deletion_rate": 0.0009525976057098985 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.21837549933422104, + "recall": 0.13743016759776536, + "precision": 0.531317494600432, + "correct_pairwise": 0, + "hallucination_rate": 0.0009750044318383265, + "deletion_rate": 0.0022454647521125094 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.39283986453797776, + "recall": 0.28692579505300353, + "precision": 0.6226993865030674, + "correct_pairwise": 0, + "hallucination_rate": 0.0004977834548050192, + "deletion_rate": 0.002141408069727252 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.941378939442831, + "recall": 0.9429002370178841, + "precision": 0.9398625429553265, + "correct_pairwise": 0, + "hallucination_rate": 0.001423227244887618, + "deletion_rate": 0.0003965648669965499 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.33088451366441374, + "recall": 0.24262012497306615, + "precision": 0.5200923787528868, + "correct_pairwise": 0, + "hallucination_rate": 0.0029483977765983518, + "deletion_rate": 0.0012614511650005187 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "it": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9069767441860465, + "recall": 0.9400224215246636, + "precision": 0.8761755485893417, + "correct_pairwise": 0, + "hallucination_rate": 0.0012556641371403614, + "deletion_rate": 0.0023543702571381777 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.571944611679711, + "recall": 0.5325112107623319, + "precision": 0.6176853055916776, + "correct_pairwise": 0, + "hallucination_rate": 0.00083307446838553, + "deletion_rate": 0.0014825901556013669 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6495649733370755, + "recall": 0.643532421310199, + "precision": 0.6557116953762466, + "correct_pairwise": 0, + "hallucination_rate": 0.0008727159478090298, + "deletion_rate": 0.0017675112604760776 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9812206572769954, + "recall": 0.9653579676674365, + "precision": 0.9976133651551312, + "correct_pairwise": 0, + "hallucination_rate": 0.0003371607320134115, + "deletion_rate": 0.0006181280086912544 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7466666666666667, + "recall": 0.7759815242494227, + "precision": 0.7194860813704497, + "correct_pairwise": 0, + "hallucination_rate": 0.00036408929769090736, + "deletion_rate": 0.00021078854076842004 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8109522899348085, + "f1_success": 0.8109522899348085, + "recall": 0.7150370743338387, + "recall_success": 0.7150370743338387, + "precision": 0.9418977180525319, + "precision_success": 0.9418977180525319, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0001023505184993108, + "hallucination_rate_success": 0.0001023505184993108, + "deletion_rate": 0.01739265249266973, + "deletion_rate_success": 0.01739265249266973 + } + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5416550831347876, + "f1_success": 0.5416550831347876, + "recall": 0.49815401743211746, + "recall_success": 0.49815401743211746, + "precision": 0.6205911086720479, + "precision_success": 0.6205911086720479, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0002710895721389426, + "hallucination_rate_success": 0.0002710895721389426, + "deletion_rate": 0.016814819973430328, + "deletion_rate_success": 0.016814819973430328 + } + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7716122896902438, + "f1_success": 0.7716122896902438, + "recall": 0.7921993863932787, + "recall_success": 0.7921993863932787, + "precision": 0.8165279007608551, + "precision_success": 0.8165279007608551, + "correct_pairwise": 0.4090909090909091, + "correct_pairwise_success": 0.4090909090909091, + "hallucination_rate": 0.0005535752225670821, + "hallucination_rate_success": 0.0005535752225670821, + "deletion_rate": 0.0010131069344531485, + "deletion_rate_success": 0.0010131069344531485 + } + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3560013937067671, + "f1_success": 0.3560013937067671, + "recall": 0.41209671602072134, + "recall_success": 0.41209671602072134, + "precision": 0.35954455851264, + "precision_success": 0.35954455851264, + "correct_pairwise": 0.014204545454545454, + "correct_pairwise_success": 0.014204545454545454, + "hallucination_rate": 0.0007064752561380622, + "hallucination_rate_success": 0.0007064752561380622, + "deletion_rate": 0.001696570921862626, + "deletion_rate_success": 0.001696570921862626 + } + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ja": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.09034653465346536, + "recall": 0.08147321428571429, + "precision": 0.10138888888888889, + "correct_pairwise": 0, + "hallucination_rate": 0.0023639264818864133, + "deletion_rate": 0.004609656639678506 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.07129798903107862, + "recall": 0.06529017857142858, + "precision": 0.07852348993288591, + "correct_pairwise": 0, + "hallucination_rate": 0.0015159014973394381, + "deletion_rate": 0.002660561811656973 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.03668763102725367, + "recall": 0.04278253139237693, + "precision": 0.032112770039202605, + "correct_pairwise": 0, + "hallucination_rate": 0.0009405619857865075, + "deletion_rate": 0.005878512411165672 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9791231732776617, + "recall": 0.9610655737704918, + "precision": 0.997872340425532, + "correct_pairwise": 0, + "hallucination_rate": 9.1441111923921e-05, + "deletion_rate": 0.000182882223847842 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6905027932960894, + "recall": 0.6331967213114754, + "precision": 0.7592137592137592, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 9.718172983479106e-05 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8711162255466053, + "recall": 0.7852697095435685, + "precision": 0.9780361757105943, + "correct_pairwise": 0, + "hallucination_rate": 7.736046106834796e-05, + "deletion_rate": 0.007407264147294318 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.43542857142857144, + "recall": 0.39522821576763484, + "precision": 0.4847328244274809, + "correct_pairwise": 0, + "hallucination_rate": 0.00042194983016519334, + "deletion_rate": 0.0014346294225616575 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "jv": { + "opus100": { + "meta/meta-llama-3-8b-instruct": {} + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9905607995558023, + "recall": 0.9911111111111112, + "precision": 0.9900110987791343, + "correct_pairwise": 0, + "hallucination_rate": 0.00025409409104191284, + "deletion_rate": 0.0002667987955940085 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.22628951747088186, + "recall": 0.1511111111111111, + "precision": 0.4503311258278146, + "correct_pairwise": 0, + "hallucination_rate": 9.187557422233889e-05, + "deletion_rate": 0.0004987531172069825 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ka": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8918535339199545, + "recall": 0.8727777777777778, + "precision": 0.9117817759721416, + "correct_pairwise": 0, + "hallucination_rate": 0.006004275772140767, + "deletion_rate": 0.002350158446166209 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.06766553890768487, + "recall": 0.03888888888888889, + "precision": 0.26022304832713755, + "correct_pairwise": 0, + "hallucination_rate": 0.007268750804065354, + "deletion_rate": 0.003296667953171234 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.38871071199486845, + "recall": 0.303, + "precision": 0.5420393559928444, + "correct_pairwise": 0, + "hallucination_rate": 0.0034512069340421796, + "deletion_rate": 0.014230414575070146 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "kk": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5639491398653702, + "recall": 0.4323394495412844, + "precision": 0.810752688172043, + "correct_pairwise": 0, + "hallucination_rate": 0.001668335001668335, + "deletion_rate": 0.0025233566900233566 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3194860813704497, + "recall": 0.21387614678899083, + "precision": 0.6311336717428088, + "correct_pairwise": 0, + "hallucination_rate": 0.0020760943202430123, + "deletion_rate": 0.0012238029677221968 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5075721722669191, + "recall": 0.40787221905305193, + "precision": 0.6717820231756968, + "correct_pairwise": 0, + "hallucination_rate": 0.0005099047629491137, + "deletion_rate": 0.0004084720950506341 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9850107066381157, + "recall": 0.9766454352441614, + "precision": 0.9935205183585313, + "correct_pairwise": 0, + "hallucination_rate": 0.0010894706848580335, + "deletion_rate": 0.00010056652475612618 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.699439950217797, + "recall": 0.5966029723991507, + "precision": 0.8451127819548873, + "correct_pairwise": 0, + "hallucination_rate": 0.0004886050326318361, + "deletion_rate": 0.0004013541339475797 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9899441340782122, + "recall": 0.9833518312985572, + "precision": 0.9966254218222722, + "correct_pairwise": 0, + "hallucination_rate": 0.000479611796569365, + "deletion_rate": 0.0093853445681613 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5452035886818496, + "recall": 0.4384017758046615, + "precision": 0.7208029197080292, + "correct_pairwise": 0, + "hallucination_rate": 0.0009395674115402125, + "deletion_rate": 0.00453317060413216 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "km": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.09876543209876543, + "recall": 0.07331042382588775, + "precision": 0.15130023640661938, + "correct_pairwise": 0, + "hallucination_rate": 0.0003661784287616511, + "deletion_rate": 0.01217265867731913 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.054858934169279, + "recall": 0.04009163802978236, + "precision": 0.08684863523573201, + "correct_pairwise": 0, + "hallucination_rate": 0.0076979127491538174, + "deletion_rate": 0.007991726212861977 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.05322128851540617, + "recall": 0.03966597077244259, + "precision": 0.08085106382978724, + "correct_pairwise": 0, + "hallucination_rate": 2.1938484489491466e-05, + "deletion_rate": 0.006603483831336931 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8561132561132562, + "recall": 0.7829566854990584, + "precision": 0.9443498012492901, + "correct_pairwise": 0, + "hallucination_rate": 8.596530440314289e-06, + "deletion_rate": 0.0013539535443495006 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.01423246357167062, + "recall": 0.009887005649717515, + "precision": 0.02539298669891173, + "correct_pairwise": 0, + "hallucination_rate": 0.007705961297025846, + "deletion_rate": 0.0035282912680202607 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "kn": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.2670509125840538, + "recall": 0.1705521472392638, + "precision": 0.6150442477876106, + "correct_pairwise": 0, + "hallucination_rate": 0.0020904209533959095, + "deletion_rate": 0.0020494323072508913 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.16281407035175877, + "recall": 0.09938650306748466, + "precision": 0.45, + "correct_pairwise": 0, + "hallucination_rate": 0.0023191703496258697, + "deletion_rate": 0.005032162079376887 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.15612802498048403, + "recall": 0.09737098344693282, + "precision": 0.3937007874015748, + "correct_pairwise": 0, + "hallucination_rate": 0.008814842689838414, + "deletion_rate": 0.01830248708562827 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ko": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7032339885859227, + "recall": 0.6230337078651685, + "precision": 0.8071324599708879, + "correct_pairwise": 0, + "hallucination_rate": 0.012691874805431165, + "deletion_rate": 0.005843051797217366 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6806060606060607, + "recall": 0.6308988764044944, + "precision": 0.7388157894736842, + "correct_pairwise": 0, + "hallucination_rate": 0.004466098254161592, + "deletion_rate": 0.0018016646366220057 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7611667308432808, + "recall": 0.8785555555555555, + "precision": 0.6714504076086957, + "correct_pairwise": 0, + "hallucination_rate": 0.0015802867632070574, + "deletion_rate": 0.0011684035110945798 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9987843423292, + "recall": 0.9980563654033042, + "precision": 0.9995133819951338, + "correct_pairwise": 0, + "hallucination_rate": 0.009483319436681664, + "deletion_rate": 0.00047645662870284683 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9639684106614018, + "recall": 0.9489795918367347, + "precision": 0.9794383149448345, + "correct_pairwise": 0, + "hallucination_rate": 0.00551226002661091, + "deletion_rate": 0.0009408857631628968 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ku": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.41868365180467093, + "recall": 0.2848064702484113, + "precision": 0.7900641025641025, + "correct_pairwise": 0, + "hallucination_rate": 0.000744464954057334, + "deletion_rate": 0.002233394862172002 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.31154014918824047, + "recall": 0.2050837666088966, + "precision": 0.6478102189781022, + "correct_pairwise": 0, + "hallucination_rate": 0.0005150900356358208, + "deletion_rate": 0.0012614449852305816 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.33285489713621763, + "recall": 0.27055555555555555, + "precision": 0.4324276327472918, + "correct_pairwise": 0, + "hallucination_rate": 0.0012652651591683697, + "deletion_rate": 0.0034060584782150266 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ky": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5830099180681327, + "recall": 0.4470899470899471, + "precision": 0.8376703841387856, + "correct_pairwise": 0, + "hallucination_rate": 0.02196736865988738, + "deletion_rate": 0.003114622223138962 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.33447098976109213, + "recall": 0.22685185185185186, + "precision": 0.6363636363636364, + "correct_pairwise": 0, + "hallucination_rate": 0.008431813713711527, + "deletion_rate": 0.002337316236702418 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4110091743119266, + "recall": 0.3035230352303523, + "precision": 0.6363636363636364, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.0014529972291680746 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "la": { + "opus100": { + "meta/meta-llama-3-8b-instruct": {} + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.33333333333333337, + "recall": 0.2, + "precision": 1.0, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.0 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9001390820584144, + "recall": 0.8560846560846561, + "precision": 0.9489736070381232, + "correct_pairwise": 0, + "hallucination_rate": 0.00023049441051054513, + "deletion_rate": 0.0006569090699550536 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.566246541653858, + "recall": 0.4873015873015873, + "precision": 0.6757153338224505, + "correct_pairwise": 0, + "hallucination_rate": 0.00014185906302088876, + "deletion_rate": 0.0010521213840715916 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "lt": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.827543424317618, + "recall": 0.7477578475336323, + "precision": 0.9263888888888889, + "correct_pairwise": 0, + "hallucination_rate": 0.10835316695605876, + "deletion_rate": 0.0011324038350743215 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3692857142857142, + "recall": 0.2897982062780269, + "precision": 0.5088582677165354, + "correct_pairwise": 0, + "hallucination_rate": 0.0006795412178480583, + "deletion_rate": 0.00099176285848095 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5218420888639621, + "recall": 0.46553257727373804, + "precision": 0.5936480930100666, + "correct_pairwise": 0, + "hallucination_rate": 0.00044458840640461357, + "deletion_rate": 0.0020400256591023127 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9429787234042553, + "recall": 0.9008130081300812, + "precision": 0.9892857142857143, + "correct_pairwise": 0, + "hallucination_rate": 0.0008429291788966659, + "deletion_rate": 0.002634153684052081 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.37989949748743723, + "recall": 0.3073170731707317, + "precision": 0.49736842105263157, + "correct_pairwise": 0, + "hallucination_rate": 0.0002492483604131292, + "deletion_rate": 0.0014799121399529543 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9493302271403611, + "recall": 0.9055555555555556, + "precision": 0.9975520195838433, + "correct_pairwise": 0, + "hallucination_rate": 9.32625574147619e-05, + "deletion_rate": 0.0001942969946140873 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4682634730538922, + "recall": 0.43444444444444447, + "precision": 0.5077922077922078, + "correct_pairwise": 0, + "hallucination_rate": 0.00198708791866506, + "deletion_rate": 0.0014843307344245026 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "lv": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8313554028732043, + "recall": 0.7498591549295774, + "precision": 0.9327259985984583, + "correct_pairwise": 0, + "hallucination_rate": 0.00035163198610019443, + "deletion_rate": 0.001973275969056385 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.384257602862254, + "recall": 0.30253521126760563, + "precision": 0.5264705882352941, + "correct_pairwise": 0, + "hallucination_rate": 0.00013683634373289546, + "deletion_rate": 0.001971298576902025 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.46636252650517257, + "recall": 0.4032222222222222, + "precision": 0.5529483467926253, + "correct_pairwise": 0, + "hallucination_rate": 0.00044371648160219994, + "deletion_rate": 0.0018310152342658683 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9696684693157771, + "recall": 0.9502304147465438, + "precision": 0.9899183869419107, + "correct_pairwise": 0, + "hallucination_rate": 0.0006367472903381732, + "deletion_rate": 0.0002788674264254773 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.46053702196908053, + "recall": 0.3914246196403873, + "precision": 0.5592885375494071, + "correct_pairwise": 0, + "hallucination_rate": 0.0006055625243306371, + "deletion_rate": 0.0014225913269989572 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.987750556792873, + "recall": 0.9774104683195592, + "precision": 0.9983117613956106, + "correct_pairwise": 0, + "hallucination_rate": 0.00014846830201751927, + "deletion_rate": 0.0008413203780992758 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.49305769824128354, + "recall": 0.4402203856749311, + "precision": 0.5603085553997195, + "correct_pairwise": 0, + "hallucination_rate": 0.00021622538316409812, + "deletion_rate": 0.0014330231276365717 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "mg": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8565284178187405, + "recall": 0.7840269966254219, + "precision": 0.943805010155721, + "correct_pairwise": 0, + "hallucination_rate": 0.00016489110018209712, + "deletion_rate": 0.0007814404312977646 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.0776965265082267, + "recall": 0.047806524184476944, + "precision": 0.2073170731707317, + "correct_pairwise": 0, + "hallucination_rate": 4.108647582621168e-05, + "deletion_rate": 0.0003249566724436742 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.08372093023255814, + "recall": 0.046632124352331605, + "precision": 0.4090909090909091, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.0003975465697410268 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "mk": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9409844982322546, + "recall": 0.9611111111111111, + "precision": 0.921683537559936, + "correct_pairwise": 0, + "hallucination_rate": 0.002086478274665154, + "deletion_rate": 0.0012403488360912666 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4242204496011603, + "recall": 0.325, + "precision": 0.6106471816283925, + "correct_pairwise": 0, + "hallucination_rate": 0.0010546827915946804, + "deletion_rate": 0.00019084736228856122 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5310443102395331, + "recall": 0.434971098265896, + "precision": 0.6815885734192649, + "correct_pairwise": 0, + "hallucination_rate": 0.0026350785295228443, + "deletion_rate": 0.00248991547327462 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ml": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8089228059876725, + "recall": 0.7689732142857143, + "precision": 0.853250773993808, + "correct_pairwise": 0, + "hallucination_rate": 0.001774776529662576, + "deletion_rate": 0.005097071618726056 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.23833757421543683, + "recall": 0.15680803571428573, + "precision": 0.49646643109540634, + "correct_pairwise": 0, + "hallucination_rate": 0.0015102203282680465, + "deletion_rate": 0.005947224238450912 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.2517233711363131, + "recall": 0.20793534166054373, + "precision": 0.3188732394366197, + "correct_pairwise": 0, + "hallucination_rate": 0.004813460600472089, + "deletion_rate": 0.04214270201759476 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "mn": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4934911242603551, + "recall": 0.3316542948038176, + "precision": 0.9637904468412943, + "correct_pairwise": 0, + "hallucination_rate": 0.004045275973394531, + "deletion_rate": 0.0017244285399406175 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.34857382550335575, + "recall": 0.2203659506762132, + "precision": 0.8335005015045135, + "correct_pairwise": 0, + "hallucination_rate": 0.0025090271877655054, + "deletion_rate": 0.0013939039932030586 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.454095826893354, + "recall": 0.3264807200800089, + "precision": 0.7454960669880741, + "correct_pairwise": 0, + "hallucination_rate": 0.002788284650925583, + "deletion_rate": 0.0009258865743411027 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "mr": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8811315076737888, + "recall": 0.8192501398992725, + "precision": 0.953125, + "correct_pairwise": 0, + "hallucination_rate": 0.0029050451981766207, + "deletion_rate": 0.0014834273352391254 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.22383325781603988, + "recall": 0.13822048125349748, + "precision": 0.5880952380952381, + "correct_pairwise": 0, + "hallucination_rate": 0.0038420818961101056, + "deletion_rate": 0.0022369454595129947 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.1564255617977528, + "recall": 0.099, + "precision": 0.3724916387959866, + "correct_pairwise": 0, + "hallucination_rate": 0.004398239646554448, + "deletion_rate": 0.0011607016560489345 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9, + "recall": 0.8571428571428571, + "precision": 0.9473684210526315, + "correct_pairwise": 0, + "hallucination_rate": 0.006246450880181715, + "deletion_rate": 0.0017035775127768314 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.19999999999999998, + "recall": 0.11904761904761904, + "precision": 0.625, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.0 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ms": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9099360836722835, + "recall": 0.8958810068649885, + "precision": 0.9244391971664699, + "correct_pairwise": 0, + "hallucination_rate": 0.0020508566359038172, + "deletion_rate": 0.002154551634348392 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4473211075152823, + "recall": 0.35583524027459956, + "precision": 0.6021297192642788, + "correct_pairwise": 0, + "hallucination_rate": 0.0028808370097152913, + "deletion_rate": 0.0016031436079168777 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5786644802769427, + "recall": 0.5251322751322751, + "precision": 0.6443497666869548, + "correct_pairwise": 0, + "hallucination_rate": 0.0006580159503066354, + "deletion_rate": 0.001883805663449282 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "mt": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7880347378578321, + "recall": 0.6897522522522522, + "precision": 0.918979744936234, + "correct_pairwise": 0, + "hallucination_rate": 0.000466743625921017, + "deletion_rate": 0.002761269542662505 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.24327678940835748, + "recall": 0.16554054054054054, + "precision": 0.45865834633385333, + "correct_pairwise": 0, + "hallucination_rate": 0.010646307274976638, + "deletion_rate": 0.011077607569698505 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3529411764705882, + "recall": 0.2608695652173913, + "precision": 0.5454545454545454, + "correct_pairwise": 0, + "hallucination_rate": 0.394643254056457, + "deletion_rate": 0.00144476550344521 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9435215946843853, + "recall": 0.9141630901287554, + "precision": 0.9748283752860412, + "correct_pairwise": 0, + "hallucination_rate": 0.00018942003030720484, + "deletion_rate": 0.002273040363686458 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.23696682464454977, + "recall": 0.1609442060085837, + "precision": 0.4491017964071856, + "correct_pairwise": 0, + "hallucination_rate": 0.005528467073900197, + "deletion_rate": 0.0010513150501187262 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "my": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.16268717118575474, + "recall": 0.11254199328107503, + "precision": 0.2934306569343066, + "correct_pairwise": 0, + "hallucination_rate": 0.0004758991093888096, + "deletion_rate": 0.004917624130351032 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.09560229445506692, + "recall": 0.06998880179171332, + "precision": 0.15078407720144751, + "correct_pairwise": 0, + "hallucination_rate": 0.00038298168651208135, + "deletion_rate": 0.0074275236172040016 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.060217176702862786, + "recall": 0.05423427428317404, + "precision": 0.06768377253814147, + "correct_pairwise": 0, + "hallucination_rate": 0.010585394866350798, + "deletion_rate": 0.06759549815223378 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ne": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3965591397849462, + "recall": 0.2708578143360752, + "precision": 0.7399678972712681, + "correct_pairwise": 0, + "hallucination_rate": 0.0014392078599938594, + "deletion_rate": 0.0050084433527786305 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4662921348314607, + "recall": 0.34136310223266747, + "precision": 0.7354430379746836, + "correct_pairwise": 0, + "hallucination_rate": 0.0016771488469601676, + "deletion_rate": 0.002056503943296396 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4781936282090937, + "recall": 0.41492216854535696, + "precision": 0.5642335766423358, + "correct_pairwise": 0, + "hallucination_rate": 0.0006747187558453358, + "deletion_rate": 0.0015632097907703818 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "nl": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9371489703129179, + "recall": 0.9733333333333334, + "precision": 0.9035585353274884, + "correct_pairwise": 0, + "hallucination_rate": 0.0016506653191847734, + "deletion_rate": 0.0019089326820504182 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6601597160603372, + "recall": 0.62, + "precision": 0.7058823529411765, + "correct_pairwise": 0, + "hallucination_rate": 0.0010821251541737451, + "deletion_rate": 0.002955481603872379 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7092548974550468, + "recall": 0.6862701500833797, + "precision": 0.7338326200665716, + "correct_pairwise": 0, + "hallucination_rate": 0.000579727554163397, + "deletion_rate": 0.0025800487545650282 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9595375722543351, + "recall": 0.9291044776119403, + "precision": 0.9920318725099602, + "correct_pairwise": 0, + "hallucination_rate": 0.00016733601070950468, + "deletion_rate": 0.0014755993671656323 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7419056429232191, + "recall": 0.7481343283582089, + "precision": 0.7357798165137615, + "correct_pairwise": 0, + "hallucination_rate": 0.0017362187635642091, + "deletion_rate": 0.0007905996155515595 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "no": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9530864197530864, + "recall": 0.9720201454952434, + "precision": 0.9348762109795479, + "correct_pairwise": 0, + "hallucination_rate": 0.0025087736606954096, + "deletion_rate": 0.0008738425110287381 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6589122917321597, + "recall": 0.5864577504196978, + "precision": 0.7517934002869441, + "correct_pairwise": 0, + "hallucination_rate": 0.0016371198489720067, + "deletion_rate": 0.0018436034335270347 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9647407407407408, + "recall": 0.9329512893982808, + "precision": 0.9987730061349693, + "correct_pairwise": 0, + "hallucination_rate": 0.0002800928663459085, + "deletion_rate": 0.001985547208096551 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6690712353471596, + "recall": 0.6378223495702006, + "precision": 0.7035398230088495, + "correct_pairwise": 0, + "hallucination_rate": 0.0006113909781618785, + "deletion_rate": 0.001706799814035244 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "pa": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.26672777268560954, + "recall": 0.16562322140011382, + "precision": 0.6847058823529412, + "correct_pairwise": 0, + "hallucination_rate": 0.0017854370439372767, + "deletion_rate": 0.005226931635874347 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.20410022779043283, + "recall": 0.1275626423690205, + "precision": 0.510250569476082, + "correct_pairwise": 0, + "hallucination_rate": 0.003639973527465255, + "deletion_rate": 0.011885065078314582 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3126934984520124, + "recall": 0.2961876832844575, + "precision": 0.33114754098360655, + "correct_pairwise": 0, + "hallucination_rate": 0.0037746621835944936, + "deletion_rate": 0.035462792615618854 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "pl": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9377410468319558, + "recall": 0.9545709478407179, + "precision": 0.9214943151055766, + "correct_pairwise": 0, + "hallucination_rate": 0.0026223113181990574, + "deletion_rate": 0.0013111556590995287 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6049185563717663, + "recall": 0.5311273135165452, + "precision": 0.7025222551928784, + "correct_pairwise": 0, + "hallucination_rate": 0.0017686354470592212, + "deletion_rate": 0.0014870055988013833 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6575523175631108, + "recall": 0.6103751530669042, + "precision": 0.7126332206914479, + "correct_pairwise": 0, + "hallucination_rate": 0.0009519076059944907, + "deletion_rate": 0.0021031822917105415 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9929506545820745, + "recall": 0.9894631209232313, + "precision": 0.9964628600303184, + "correct_pairwise": 0, + "hallucination_rate": 0.0003828855274375769, + "deletion_rate": 0.0002552570182917179 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6704516129032259, + "recall": 0.6517812343201205, + "precision": 0.6902231668437833, + "correct_pairwise": 0, + "hallucination_rate": 0.0017102805699536231, + "deletion_rate": 0.0011436845529137726 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9538106235565821, + "recall": 0.9137168141592921, + "precision": 0.9975845410628019, + "correct_pairwise": 0, + "hallucination_rate": 0.0003203531003061152, + "deletion_rate": 0.00034704919199829144 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6293706293706295, + "recall": 0.5973451327433629, + "precision": 0.6650246305418719, + "correct_pairwise": 0, + "hallucination_rate": 0.0017605794404458917, + "deletion_rate": 0.0008392399405234303 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ps": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.26078334159643035, + "recall": 0.16274752475247525, + "precision": 0.655860349127182, + "correct_pairwise": 0, + "hallucination_rate": 0.010667123992454125, + "deletion_rate": 0.005213513977019379 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.2870999030067895, + "recall": 0.18316831683168316, + "precision": 0.6636771300448431, + "correct_pairwise": 0, + "hallucination_rate": 0.005817335660267597, + "deletion_rate": 0.0014543339150668994 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5051903114186851, + "recall": 0.44421906693711966, + "precision": 0.5855614973262032, + "correct_pairwise": 0, + "hallucination_rate": 0.0005170023265104693, + "deletion_rate": 0.0005875026437618969 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.963320058687906, + "recall": 0.9368120668569099, + "precision": 0.99137187230371, + "correct_pairwise": 0, + "hallucination_rate": 0.0003563777604260516, + "deletion_rate": 0.0003723947384227281 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6375202405736756, + "recall": 0.5617611088463106, + "precision": 0.7368983957219252, + "correct_pairwise": 0, + "hallucination_rate": 0.0006896834845437005, + "deletion_rate": 0.003694732952912681 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "pt": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9411441144114411, + "recall": 0.9606962380685008, + "precision": 0.9223719676549865, + "correct_pairwise": 0, + "hallucination_rate": 0.001643960945206067, + "deletion_rate": 0.0008577187540205566 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5812869132732359, + "recall": 0.5249859629421674, + "precision": 0.6511142061281338, + "correct_pairwise": 0, + "hallucination_rate": 0.00022132217869552708, + "deletion_rate": 0.000959062774347284 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6615715309290662, + "recall": 0.6156239582175798, + "precision": 0.7149309588333979, + "correct_pairwise": 0, + "hallucination_rate": 0.0005535417527765484, + "deletion_rate": 0.0014631059544754582 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9348813730439172, + "recall": 0.8819047619047619, + "precision": 0.9946294307196563, + "correct_pairwise": 0, + "hallucination_rate": 0.00022847540572809954, + "deletion_rate": 0.0016361787119883256 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6274509803921569, + "recall": 0.5942857142857143, + "precision": 0.6645367412140575, + "correct_pairwise": 0, + "hallucination_rate": 6.0574396716867696e-05, + "deletion_rate": 0.0008253261552673224 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8115233542617579, + "f1_success": 0.8115233542617579, + "recall": 0.7699378047243919, + "recall_success": 0.7699378047243919, + "precision": 0.8739924236670811, + "precision_success": 0.8739924236670811, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.00038436827638679925, + "hallucination_rate_success": 0.00038436827638679925, + "deletion_rate": 0.003536775754674823, + "deletion_rate_success": 0.003536775754674823 + } + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5207146248791963, + "f1_success": 0.5207146248791963, + "recall": 0.46318300330932755, + "recall_success": 0.46318300330932755, + "precision": 0.6073436679569005, + "precision_success": 0.6073436679569005, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0001951654817221239, + "hallucination_rate_success": 0.0001951654817221239, + "deletion_rate": 0.002196155735392704, + "deletion_rate_success": 0.002196155735392704 + } + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.498499591779185, + "f1_success": 0.498499591779185, + "recall": 0.41199150976902843, + "recall_success": 0.41199150976902843, + "precision": 0.7181267053421895, + "precision_success": 0.7181267053421895, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0012045126318469622, + "hallucination_rate_success": 0.0012045126318469622, + "deletion_rate": 0.00819693803445955, + "deletion_rate_success": 0.00819693803445955 + } + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.45406734413633626, + "f1_success": 0.45406734413633626, + "recall": 0.3822220918576872, + "recall_success": 0.3822220918576872, + "precision": 0.6327317408227991, + "precision_success": 0.6327317408227991, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.000278596215206653, + "hallucination_rate_success": 0.000278596215206653, + "deletion_rate": 0.004035948055438261, + "deletion_rate_success": 0.004035948055438261 + } + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ro": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9491051454138704, + "recall": 0.952300785634119, + "precision": 0.9459308807134894, + "correct_pairwise": 0, + "hallucination_rate": 0.0026216006390854777, + "deletion_rate": 0.0018902528213148508 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5229327084030799, + "recall": 0.4382716049382716, + "precision": 0.6481327800829876, + "correct_pairwise": 0, + "hallucination_rate": 0.0013013353341852585, + "deletion_rate": 0.002157168481892681 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6351286939942803, + "recall": 0.5925514174541412, + "precision": 0.6842983694954423, + "correct_pairwise": 0, + "hallucination_rate": 0.0005783553021096257, + "deletion_rate": 0.0018285500607647003 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9354838709677419, + "recall": 0.9809725158562368, + "precision": 0.8940269749518305, + "correct_pairwise": 0, + "hallucination_rate": 0.00028504530184261426, + "deletion_rate": 0.00043774814211544334 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3968565815324165, + "recall": 0.3202959830866808, + "precision": 0.5215146299483648, + "correct_pairwise": 0, + "hallucination_rate": 0.0008296314965922099, + "deletion_rate": 0.0015542463480461653 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.97678369195923, + "recall": 0.9583333333333334, + "precision": 0.995958429561201, + "correct_pairwise": 0, + "hallucination_rate": 0.00010135059046103258, + "deletion_rate": 0.0003828800084083453 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5954198473282444, + "recall": 0.585, + "precision": 0.6062176165803109, + "correct_pairwise": 0, + "hallucination_rate": 0.00019581719121356745, + "deletion_rate": 0.0009022949006899676 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ru": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8926389292988071, + "recall": 0.8735763097949886, + "precision": 0.9125520523497918, + "correct_pairwise": 0, + "hallucination_rate": 0.0003185371397086677, + "deletion_rate": 0.0010675298736182377 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6179275270184361, + "recall": 0.5535307517084282, + "precision": 0.6992805755395683, + "correct_pairwise": 0, + "hallucination_rate": 0.0007528377883559136, + "deletion_rate": 0.0019860856829000367 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6522428083861531, + "recall": 0.5946216246249584, + "precision": 0.7222297206100688, + "correct_pairwise": 0, + "hallucination_rate": 0.0009510585044324562, + "deletion_rate": 0.0016141818653211413 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8851828094932649, + "recall": 0.8712121212121212, + "precision": 0.8996088657105606, + "correct_pairwise": 0, + "hallucination_rate": 0.0006577340123653994, + "deletion_rate": 0.004378629282318231 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.48475609756097565, + "recall": 0.4015151515151515, + "precision": 0.6115384615384616, + "correct_pairwise": 0, + "hallucination_rate": 0.0011599331563943772, + "deletion_rate": 0.0022215668927553327 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9700115340253749, + "recall": 0.9438832772166106, + "precision": 0.9976275207591934, + "correct_pairwise": 0, + "hallucination_rate": 0.0004363285275304734, + "deletion_rate": 0.0009190749835216354 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6746126340882002, + "recall": 0.6352413019079686, + "precision": 0.7191867852604829, + "correct_pairwise": 0, + "hallucination_rate": 0.0005534087114164401, + "deletion_rate": 0.0021850102571442202 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "si": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7692307692307692, + "recall": 0.6978699551569507, + "precision": 0.8568479008947006, + "correct_pairwise": 0, + "hallucination_rate": 0.04626104736410229, + "deletion_rate": 0.005636341624181116 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3724188790560472, + "recall": 0.2830717488789238, + "precision": 0.5441810344827587, + "correct_pairwise": 0, + "hallucination_rate": 0.0024724425672195322, + "deletion_rate": 0.0018984826855435693 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.34515366430260047, + "recall": 0.3146551724137931, + "precision": 0.38219895287958117, + "correct_pairwise": 0, + "hallucination_rate": 0.010440641084654978, + "deletion_rate": 0.033811775536678246 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "sk": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9434806939003918, + "recall": 0.9455973079080202, + "precision": 0.9413735343383585, + "correct_pairwise": 0, + "hallucination_rate": 0.0018497866992370736, + "deletion_rate": 0.0011948382985502628 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.48047010024196335, + "recall": 0.38979248457655635, + "precision": 0.6261261261261262, + "correct_pairwise": 0, + "hallucination_rate": 0.0006618924608610118, + "deletion_rate": 0.0020316421368094945 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5716629851688231, + "recall": 0.5033900188951873, + "precision": 0.6613609813084113, + "correct_pairwise": 0, + "hallucination_rate": 0.0013528689987811868, + "deletion_rate": 0.0031311598970779945 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.906392694063927, + "recall": 0.8322851153039832, + "precision": 0.9949874686716792, + "correct_pairwise": 0, + "hallucination_rate": 1.3082669387861899e-05, + "deletion_rate": 0.0006018027918416474 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6628830874006811, + "recall": 0.6121593291404612, + "precision": 0.7227722772277227, + "correct_pairwise": 0, + "hallucination_rate": 0.0010426831713609688, + "deletion_rate": 0.0009758445065301375 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "sl": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9376544905245812, + "recall": 0.9515050167224081, + "precision": 0.924201407688143, + "correct_pairwise": 0, + "hallucination_rate": 0.0025814183972157558, + "deletion_rate": 0.002051305690644663 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5118577075098814, + "recall": 0.4331103678929766, + "precision": 0.6256038647342995, + "correct_pairwise": 0, + "hallucination_rate": 0.0011702961935211437, + "deletion_rate": 0.0019303854738493094 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5605846588466499, + "recall": 0.5071111111111111, + "precision": 0.626664835919264, + "correct_pairwise": 0, + "hallucination_rate": 0.0006794097420728625, + "deletion_rate": 0.0014527216436192101 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9855326611135466, + "recall": 0.9748482220294883, + "precision": 0.9964539007092199, + "correct_pairwise": 0, + "hallucination_rate": 0.00015672417969139584, + "deletion_rate": 0.0014033937908729537 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5935604293047131, + "recall": 0.5516045099739809, + "precision": 0.6424242424242425, + "correct_pairwise": 0, + "hallucination_rate": 0.0004167001732595457, + "deletion_rate": 0.0010088530510494265 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8302314071558937, + "f1_success": 0.8302314071558937, + "recall": 0.8714582460550201, + "recall_success": 0.8714582460550201, + "precision": 0.8318262962599492, + "precision_success": 0.8318262962599492, + "correct_pairwise": 0.4633431085043988, + "correct_pairwise_success": 0.4633431085043988, + "hallucination_rate": 0.004081883228045568, + "hallucination_rate_success": 0.004081883228045568, + "deletion_rate": 0.02186771025984602, + "deletion_rate_success": 0.02186771025984602 + } + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6856436908636155, + "f1_success": 0.6856436908636155, + "recall": 0.6672000826234706, + "recall_success": 0.6672000826234706, + "precision": 0.7884698766938508, + "precision_success": 0.7884698766938508, + "correct_pairwise": 0.23936950146627567, + "correct_pairwise_success": 0.23936950146627567, + "hallucination_rate": 0.002608565983595842, + "hallucination_rate_success": 0.002608565983595842, + "deletion_rate": 0.01242321468172652, + "deletion_rate_success": 0.01242321468172652 + } + } + }, + "sq": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9225589225589227, + "recall": 0.9272419627749577, + "precision": 0.9179229480737019, + "correct_pairwise": 0, + "hallucination_rate": 0.001898166164989556, + "deletion_rate": 0.001421639094280881 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.43111266131845133, + "recall": 0.34856175972927245, + "precision": 0.5648994515539305, + "correct_pairwise": 0, + "hallucination_rate": 0.0003303737352880446, + "deletion_rate": 0.0016188313029114187 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4933386624034106, + "recall": 0.4114901655739527, + "precision": 0.6158323632130385, + "correct_pairwise": 0, + "hallucination_rate": 0.0005662303042730582, + "deletion_rate": 0.003081644351444936 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 1.0, + "recall": 1.0, + "precision": 1.0, + "correct_pairwise": 1, + "hallucination_rate": 0.0003750234389649353, + "deletion_rate": 0.0 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8108108108108109, + "recall": 0.8333333333333334, + "precision": 0.7894736842105263, + "correct_pairwise": 0, + "hallucination_rate": 0.0, + "deletion_rate": 0.0007627765064836003 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "sr": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9462719298245614, + "recall": 0.9631696428571429, + "precision": 0.9299568965517241, + "correct_pairwise": 0, + "hallucination_rate": 0.002617561218212991, + "deletion_rate": 0.001164814742104781 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5430197522597926, + "recall": 0.4525669642857143, + "precision": 0.6786610878661088, + "correct_pairwise": 0, + "hallucination_rate": 0.001979707993071022, + "deletion_rate": 0.0019659600208969175 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5692594897324206, + "recall": 0.5082222222222222, + "precision": 0.6469589816124469, + "correct_pairwise": 0, + "hallucination_rate": 0.001125712868832135, + "deletion_rate": 0.0019724770642201837 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9648351648351648, + "recall": 0.938034188034188, + "precision": 0.9932126696832579, + "correct_pairwise": 0, + "hallucination_rate": 0.0002984451010236667, + "deletion_rate": 0.009072731071119467 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6609257265877287, + "recall": 0.655982905982906, + "precision": 0.665943600867679, + "correct_pairwise": 0, + "hallucination_rate": 0.0008103603810222773, + "deletion_rate": 0.001483112395455866 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9194587241462248, + "f1_success": 0.9194587241462248, + "recall": 0.9372395833333328, + "recall_success": 0.9372395833333328, + "precision": 0.923784722222222, + "precision_success": 0.923784722222222, + "correct_pairwise": 0.7135416666666666, + "correct_pairwise_success": 0.7135416666666666, + "hallucination_rate": 0.0013961414512797486, + "hallucination_rate_success": 0.0013961414512797486, + "deletion_rate": 0.008095481069393238, + "deletion_rate_success": 0.008095481069393238 + } + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6690273268398274, + "f1_success": 0.6690273268398274, + "recall": 0.7321180555555559, + "recall_success": 0.7321180555555559, + "precision": 0.668721064814815, + "precision_success": 0.668721064814815, + "correct_pairwise": 0.19270833333333334, + "correct_pairwise_success": 0.19270833333333334, + "hallucination_rate": 0.0012995441584618547, + "hallucination_rate_success": 0.0012995441584618547, + "deletion_rate": 0.0041681823658253825, + "deletion_rate_success": 0.0041681823658253825 + } + } + }, + "sv": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9426611796982167, + "recall": 0.9592406476828588, + "precision": 0.9266450916936354, + "correct_pairwise": 0, + "hallucination_rate": 0.0017606809078771696, + "deletion_rate": 0.0006842456608811749 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6436090225563911, + "recall": 0.5974316024567281, + "precision": 0.6975228161668839, + "correct_pairwise": 0, + "hallucination_rate": 0.0010037662683058655, + "deletion_rate": 0.0018102109625003217 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.632955223880597, + "recall": 0.5892618941751889, + "precision": 0.6836471498581377, + "correct_pairwise": 0, + "hallucination_rate": 0.0006583360868302744, + "deletion_rate": 0.002386781212139417 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9551593733117234, + "recall": 0.949516648764769, + "precision": 0.9608695652173913, + "correct_pairwise": 0, + "hallucination_rate": 0.0006514586047744186, + "deletion_rate": 0.001170417154340481 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.68561872909699, + "recall": 0.6605800214822771, + "precision": 0.712630359212051, + "correct_pairwise": 0, + "hallucination_rate": 0.00032731746407973003, + "deletion_rate": 0.001501145611124279 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ta": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.45253283302063796, + "recall": 0.34067796610169493, + "precision": 0.6737430167597765, + "correct_pairwise": 0, + "hallucination_rate": 0.0009050133762966057, + "deletion_rate": 0.007787093116925739 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.17019360648356596, + "recall": 0.10677966101694915, + "precision": 0.4190687361419069, + "correct_pairwise": 0, + "hallucination_rate": 0.0363762719248203, + "deletion_rate": 0.02237342986650624 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.1461296601287618, + "recall": 0.09648082245947015, + "precision": 0.30104873534855026, + "correct_pairwise": 0, + "hallucination_rate": 0.006700052200749167, + "deletion_rate": 0.010707845982932458 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9665071770334929, + "recall": 0.9351851851851852, + "precision": 1.0, + "correct_pairwise": 0, + "hallucination_rate": 0.0006355483369818516, + "deletion_rate": 0.0 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3105590062111801, + "recall": 0.23148148148148148, + "precision": 0.4716981132075472, + "correct_pairwise": 0, + "hallucination_rate": 0.00037227309954582683, + "deletion_rate": 0.006849825031643214 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9695603156708005, + "recall": 0.9513274336283186, + "precision": 0.9885057471264368, + "correct_pairwise": 0, + "hallucination_rate": 0.0012920112029874632, + "deletion_rate": 0.0064017071218991735 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.223717409587889, + "recall": 0.14712389380530974, + "precision": 0.4666666666666667, + "correct_pairwise": 0, + "hallucination_rate": 0.0043814501016179695, + "deletion_rate": 0.031769912283017045 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "te": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6588836191171106, + "recall": 0.5121951219512195, + "precision": 0.9233128834355828, + "correct_pairwise": 0, + "hallucination_rate": 0.002751287342219248, + "deletion_rate": 0.0014685925678062201 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.21361815754339122, + "recall": 0.13613159387407828, + "precision": 0.49586776859504134, + "correct_pairwise": 0, + "hallucination_rate": 0.0019383403725694232, + "deletion_rate": 0.0027136765215971925 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.33048433048433046, + "recall": 0.26795464090718185, + "precision": 0.43108108108108106, + "correct_pairwise": 0, + "hallucination_rate": 0.00263705633462833, + "deletion_rate": 0.005151141130336168 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "tg": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7607818802358053, + "recall": 0.6837702175125489, + "precision": 0.8573426573426574, + "correct_pairwise": 0, + "hallucination_rate": 0.0007485678714669567, + "deletion_rate": 0.0020723510546927326 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.35893648449039883, + "recall": 0.27105409927495816, + "precision": 0.5311475409836065, + "correct_pairwise": 0, + "hallucination_rate": 0.0006968469724048599, + "deletion_rate": 0.001877387725655446 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4471153846153846, + "recall": 0.34191176470588236, + "precision": 0.6458333333333334, + "correct_pairwise": 0, + "hallucination_rate": 0.0017853278511144775, + "deletion_rate": 0.0012443194113828176 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "th": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6604379562043795, + "recall": 0.6346801346801347, + "precision": 0.6883749239196592, + "correct_pairwise": 0, + "hallucination_rate": 0.0028094744121715076, + "deletion_rate": 0.0025933609958506223 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6414777497900923, + "recall": 0.6430976430976431, + "precision": 0.6398659966499163, + "correct_pairwise": 0, + "hallucination_rate": 0.0027600911268181555, + "deletion_rate": 0.00026286582160172907 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5784341356180598, + "recall": 0.5701111111111111, + "precision": 0.5870037753117492, + "correct_pairwise": 0, + "hallucination_rate": 0.001002232567594559, + "deletion_rate": 0.0017208144085114128 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8142857142857143, + "recall": 0.8233333333333334, + "precision": 0.8054347826086956, + "correct_pairwise": 0, + "hallucination_rate": 0.0008094738420026983, + "deletion_rate": 0.0017788437515614851 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8083427282976324, + "recall": 0.7966666666666666, + "precision": 0.8203661327231121, + "correct_pairwise": 0, + "hallucination_rate": 0.001102701618966468, + "deletion_rate": 0.0012029472206906923 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "tr": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9381557150745443, + "recall": 0.9555680539932508, + "precision": 0.9213665943600867, + "correct_pairwise": 0, + "hallucination_rate": 0.003591003591003591, + "deletion_rate": 0.002041202041202041 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6344916344916345, + "recall": 0.5545556805399325, + "precision": 0.7413533834586467, + "correct_pairwise": 0, + "hallucination_rate": 0.001003949749673056, + "deletion_rate": 0.0017040726014187395 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6778625954198473, + "recall": 0.6416184971098265, + "precision": 0.7184466019417476, + "correct_pairwise": 0, + "hallucination_rate": 0.00330476748963603, + "deletion_rate": 0.00373853412318718 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9754851889683349, + "recall": 0.9646464646464646, + "precision": 0.9865702479338843, + "correct_pairwise": 0, + "hallucination_rate": 0.0013219766060342374, + "deletion_rate": 0.0006860891246506803 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6197827329902802, + "recall": 0.5474747474747474, + "precision": 0.7140974967061924, + "correct_pairwise": 0, + "hallucination_rate": 0.0009232484409295196, + "deletion_rate": 0.0011497056056858168 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9426972795678178, + "recall": 0.9021418020679468, + "precision": 0.9870707070707071, + "correct_pairwise": 0, + "hallucination_rate": 0.00033738665916918534, + "deletion_rate": 0.0012764461938567513 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7359004278490858, + "recall": 0.6986706056129985, + "precision": 0.7773212818405916, + "correct_pairwise": 0, + "hallucination_rate": 0.0008113742543152983, + "deletion_rate": 0.004729647788499853 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "tr-de": { + "opus100": { + "meta/meta-llama-3-8b-instruct": {} + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9896623018607857, + "recall": 0.9917127071823204, + "precision": 0.9876203576341128, + "correct_pairwise": 0, + "hallucination_rate": 0.0004725835882221668, + "deletion_rate": 0.001037058429709755 + } + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3391655450874832, + "recall": 0.34806629834254144, + "precision": 0.33070866141732286, + "correct_pairwise": 0, + "hallucination_rate": 0.055285946579607476, + "deletion_rate": 0.0017268980121765217 + } + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "uk": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9113785557986872, + "recall": 0.9302065884980458, + "precision": 0.8932975871313673, + "correct_pairwise": 0, + "hallucination_rate": 0.0027596172067462575, + "deletion_rate": 0.003612374455182869 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5429833503227999, + "recall": 0.44611948632049137, + "precision": 0.6935763888888888, + "correct_pairwise": 0, + "hallucination_rate": 0.00548099132280417, + "deletion_rate": 0.006192646232598789 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6170639899623588, + "recall": 0.5466874166296132, + "precision": 0.7082373271889401, + "correct_pairwise": 0, + "hallucination_rate": 0.004379665703827954, + "deletion_rate": 0.004147887739079641 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9489334195216548, + "recall": 0.9084158415841584, + "precision": 0.993234100135318, + "correct_pairwise": 0, + "hallucination_rate": 0.0006689430699494798, + "deletion_rate": 0.001577507538089818 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5261606484893147, + "recall": 0.44183168316831684, + "precision": 0.6502732240437158, + "correct_pairwise": 0, + "hallucination_rate": 0.0010244417309960886, + "deletion_rate": 0.0012727912415405947 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ur": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.47563083304528175, + "recall": 0.4044679600235156, + "precision": 0.5771812080536913, + "correct_pairwise": 0, + "hallucination_rate": 0.0007185284537267676, + "deletion_rate": 0.0016765663920291244 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.43088655862726405, + "recall": 0.3985890652557319, + "precision": 0.46887966804979253, + "correct_pairwise": 0, + "hallucination_rate": 0.0005875632446548065, + "deletion_rate": 0.0013056960992329036 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4872180451127819, + "recall": 0.4160958904109589, + "precision": 0.5876662636033857, + "correct_pairwise": 0, + "hallucination_rate": 0.002606285504179655, + "deletion_rate": 0.0016863331704097258 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9696356275303644, + "recall": 0.9958419958419958, + "precision": 0.9447731755424064, + "correct_pairwise": 0, + "hallucination_rate": 0.040715276009393654, + "deletion_rate": 8.48824378236143e-05 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.838235294117647, + "recall": 0.8295218295218295, + "precision": 0.8471337579617835, + "correct_pairwise": 0, + "hallucination_rate": 0.0403235057932775, + "deletion_rate": 0.00048755305724446486 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "uz": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.674269819193324, + "recall": 0.6870748299319728, + "precision": 0.6619333697433096, + "correct_pairwise": 0, + "hallucination_rate": 0.0012243266203588027, + "deletion_rate": 0.0026048173504572484 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4516129032258064, + "recall": 0.3492063492063492, + "precision": 0.6390041493775933, + "correct_pairwise": 0, + "hallucination_rate": 0.0005871262778151074, + "deletion_rate": 0.0013569140642838038 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5766045548654244, + "recall": 0.48988566402814426, + "precision": 0.70062893081761, + "correct_pairwise": 0, + "hallucination_rate": 0.0002996492993385519, + "deletion_rate": 0.0005882004764793797 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "vi": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9289586305278176, + "recall": 0.9292237442922374, + "precision": 0.9286936679977182, + "correct_pairwise": 0, + "hallucination_rate": 0.0021038895324837882, + "deletion_rate": 0.003049308246448022 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.43883792048929665, + "recall": 0.3276255707762557, + "precision": 0.6643518518518519, + "correct_pairwise": 0, + "hallucination_rate": 0.0005581603036392052, + "deletion_rate": 0.002358227282875642 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5269606279114288, + "recall": 0.4587777777777778, + "precision": 0.6189476840053965, + "correct_pairwise": 0, + "hallucination_rate": 0.000306274805068848, + "deletion_rate": 0.0031161141152080524 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9846368715083799, + "recall": 0.9791666666666666, + "precision": 0.9901685393258427, + "correct_pairwise": 0, + "hallucination_rate": 0.002263249812880921, + "deletion_rate": 0.026071925009801475 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5021645021645021, + "recall": 0.4027777777777778, + "precision": 0.6666666666666666, + "correct_pairwise": 0, + "hallucination_rate": 0.00032458233890214795, + "deletion_rate": 0.0014701670644391407 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "vi-en": { + "opus100": { + "meta/meta-llama-3-8b-instruct": {} + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.36691052335396734, + "recall": 0.26633986928104575, + "precision": 0.5895117540687161, + "correct_pairwise": 0, + "hallucination_rate": 0.0015036998931581655, + "deletion_rate": 0.0027897590123065964 + } + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3545301069217783, + "recall": 0.25735294117647056, + "precision": 0.569620253164557, + "correct_pairwise": 0, + "hallucination_rate": 0.0017420913014213881, + "deletion_rate": 0.0025141544918240487 + } + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "xh": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7169811320754718, + "recall": 0.6016119746689695, + "precision": 0.8870967741935484, + "correct_pairwise": 0, + "hallucination_rate": 0.00041418001769678257, + "deletion_rate": 0.0018198818959404082 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.08455114822546972, + "recall": 0.046632124352331605, + "precision": 0.45251396648044695, + "correct_pairwise": 0, + "hallucination_rate": 0.022570154304873215, + "deletion_rate": 0.0006164646382044523 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "yi": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.13601236476043274, + "recall": 0.07665505226480836, + "precision": 0.6027397260273972, + "correct_pairwise": 0, + "hallucination_rate": 0.0021021810128007807, + "deletion_rate": 0.0036412778257442096 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.13963636363636361, + "recall": 0.08362369337979095, + "precision": 0.42290748898678415, + "correct_pairwise": 0, + "hallucination_rate": 0.0025744041814564885, + "deletion_rate": 0.00460272262745251 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "yo": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.3749139710942877, + "recall": 0.2582671565722413, + "precision": 0.6837150925635394, + "correct_pairwise": 0, + "hallucination_rate": 0.0015287187127710714, + "deletion_rate": 0.002537911925498849 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.08054116900961844, + "recall": 0.04515823159890957, + "precision": 0.3720703125, + "correct_pairwise": 0, + "hallucination_rate": 0.008206772065230922, + "deletion_rate": 0.0016183244118013196 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8981636060100168, + "recall": 0.9405594405594405, + "precision": 0.8594249201277955, + "correct_pairwise": 0, + "hallucination_rate": 0.0009426217046249278, + "deletion_rate": 0.00027366436585885 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.24936386768447835, + "recall": 0.17132867132867133, + "precision": 0.45794392523364486, + "correct_pairwise": 0, + "hallucination_rate": 0.028903857930189833, + "deletion_rate": 0.0005817513778322106 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "zh": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5566265060240964, + "recall": 0.5164896590273896, + "precision": 0.6035271064663619, + "correct_pairwise": 0, + "hallucination_rate": 0.0009083972239380836, + "deletion_rate": 0.004396642563860325 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.347143243975088, + "recall": 0.3583007266629402, + "precision": 0.33665966386554624, + "correct_pairwise": 0, + "hallucination_rate": 0.001234146469553344, + "deletion_rate": 0.002468292939106688 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.044274637599730306, + "recall": 0.05400959561343386, + "precision": 0.037513091497667336, + "correct_pairwise": 0, + "hallucination_rate": 0.0038482256164921345, + "deletion_rate": 0.0019081355963151984 + } + }, + "ud": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9579288025889968, + "recall": 0.9866666666666667, + "precision": 0.9308176100628931, + "correct_pairwise": 0, + "hallucination_rate": 0.00015177577658605687, + "deletion_rate": 0.00015177577658605687 + } + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4416094210009814, + "recall": 0.5, + "precision": 0.3954305799648506, + "correct_pairwise": 0, + "hallucination_rate": 0.00010990218705352236, + "deletion_rate": 0.0 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9448294981979485, + "recall": 0.9456159822419534, + "precision": 0.9440443213296399, + "correct_pairwise": 0, + "hallucination_rate": 0.0005581518551454033, + "deletion_rate": 0.004966605490700622 + } + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.29078014184397166, + "recall": 0.31853496115427304, + "precision": 0.2674743709226468, + "correct_pairwise": 0, + "hallucination_rate": 0.0010163134017162076, + "deletion_rate": 0.0008905839087203881 + } + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "zu": { + "opus100": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4245614035087719, + "recall": 0.2875816993464052, + "precision": 0.8107202680067002, + "correct_pairwise": 0, + "hallucination_rate": 0.002210163156759865, + "deletion_rate": 0.0031265722705383454 + } + }, + "opus100-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.15904572564612326, + "recall": 0.09506833036244801, + "precision": 0.48632218844984804, + "correct_pairwise": 0, + "hallucination_rate": 0.0016853301374480357, + "deletion_rate": 0.0016291524661997678 + } + }, + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ud-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + }, + "ersatz-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-judgements-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws": { + "meta/meta-llama-3-8b-instruct": {} + }, + "legal-all-laws-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching": { + "meta/meta-llama-3-8b-instruct": {} + }, + "code-switching-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences": { + "meta/meta-llama-3-8b-instruct": {} + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": {} + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-12l-no_ll.json b/wtpsplit/evaluation/evaluation_results/main/sat-12l-no_ll.json new file mode 100644 index 00000000..90038c02 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-12l-no_ll.json @@ -0,0 +1,1645 @@ +{ + "af": { + "opus100": { + "u": 0.7690660957987691, + "t": 0.7828245222139489, + "punct": null + }, + "ud": { + "u": 0.9922077922077922, + "t": 0.9986928104575163, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5789473684210527, + "t": 0.6996254681647941, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.6118433265268238, + "t": 0.6663101604278076, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5732899022801302, + "t": 0.596078431372549, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.9003262051467923, + "t": 0.9027830728173847, + "punct": null + }, + "opus100": { + "u": 0.7029926595143987, + "t": 0.6973684210526315, + "punct": null + }, + "ud": { + "u": 0.8602461984069515, + "t": 0.8616780045351474, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5797826883164449, + "t": 0.6176470588235294, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.7061159650516283, + "t": 0.8203821656050955, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6210854898801732, + "t": 0.7241885739462475, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.7147484344633989, + "t": 0.7392014942797104, + "punct": null + }, + "ud": { + "u": 0.8971233544612385, + "t": 0.9024875621890547, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5161603888213852, + "t": 0.6880922299431459, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9379824327921213, + "t": 0.9375166179207657, + "punct": null + }, + "ud": { + "u": 0.9895988112927191, + "t": 0.9895988112927191, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4108821104699093, + "t": 0.6951110272971571, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.8034228666508201, + "t": 0.8459263242807206, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4269480519480519, + "t": 0.4396820448877805, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.8911196911196911, + "t": 0.9103043246129204, + "punct": null + }, + "ud": { + "u": 0.9873570138470801, + "t": 0.9873722188815395, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5558962921661555, + "t": 0.6570365718150636, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3384615384615384, + "t": 0.5116279069767442, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9410205434062292, + "t": 0.9556203433754454, + "punct": null + }, + "opus100": { + "u": 0.9089498189342989, + "t": 0.9147489539748953, + "punct": null + }, + "ud": { + "u": 0.9267860111954774, + "t": 0.9251495332327129, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39528270324523246, + "t": 0.6968934481757476, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.7155067155067154, + "t": 0.7492118085411292, + "punct": null + }, + "ud": { + "u": 0.9935710111046172, + "t": 0.9935710111046172, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9187777487594672, + "t": 0.9258081611022788, + "punct": null + }, + "ud": { + "u": 0.9606903163950143, + "t": 0.9470588235294117, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6288951841359773, + "t": 0.7195737256566227, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.965478841870824, + "t": 0.9694397283531409, + "punct": null + }, + "opus100": { + "u": 0.806966618287373, + "t": 0.8635886673662121, + "punct": null + }, + "ud": { + "u": 0.9707536557930259, + "t": 0.9626168224299065, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7361635402752773, + "t": 0.7617489133214013, + "punct": null + }, + "legal-all-laws": { + "u": 0.867818167495103, + "t": 0.8718771651192956, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7499710895205015, + "t": 0.7456537746530766, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7432955853412212, + "t": 0.7462492266143663, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6334982606555456, + "t": 0.6432127448722463, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9226763863577194, + "t": 0.9434267241379309, + "punct": null + }, + "ud": { + "u": 0.976969696969697, + "t": 0.9803921568627451, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6483902202856451, + "t": 0.6871927298008641, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9699680511182108, + "t": 0.972659604924134, + "punct": null + }, + "opus100": { + "u": 0.9205658324265507, + "t": 0.9191077667293738, + "punct": null + }, + "ud": { + "u": 0.9469429004547751, + "t": 0.9492385786802031, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5376997036073158, + "t": 0.685161031403632, + "punct": null + }, + "legal-all-judgements": { + "u": 0.8167711408200564, + "t": 0.8352571592438407, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6386633944299502, + "t": 0.6960332097646635, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.907097835023294, + "t": 0.9064827586206896, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3890918580375783, + "t": 0.6487991092731034, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9887558940877765, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9075890552400618, + "t": 0.9361245303274288, + "punct": null + }, + "ud": { + "u": 0.9676385773790452, + "t": 0.9683462532299741, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5755058287551923, + "t": 0.6637802329053448, + "punct": null + }, + "legal-all-laws": { + "u": 0.7240284113244922, + "t": 0.6999037328764973, + "punct": null, + "acc_u": 0.09836065573770492, + "acc_t": 0.08196721311475409, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7150710835333455, + "t": 0.7476465875000121, + "punct": null, + "acc_u": 0.07650273224043716, + "acc_t": 0.0273224043715847, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7138289296447768, + "t": 0.7175431703237722, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6102785660672524, + "t": 0.6372005914631566, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9746556473829201, + "t": 0.9740224227508888, + "punct": null + }, + "opus100": { + "u": 0.8443056222969727, + "t": 0.9127445795875199, + "punct": null + }, + "ud": { + "u": 0.9574944071588366, + "t": 0.9571403782752039, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.477357739753283, + "t": 0.71527498996387, + "punct": null + }, + "short-sequences": { + "u": 0.6253971868595398, + "t": 0.7146791496895656, + "punct": null, + "acc_u": 0.20689655172413793, + "acc_t": 0.19704433497536947, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6526957475960835, + "t": 0.7202499213503668, + "punct": null, + "acc_u": 0.08374384236453201, + "acc_t": 0.10837438423645321, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8584858980702623, + "t": 0.876278118609407, + "punct": null + }, + "ud": { + "u": 0.9778988798062367, + "t": 0.988950276243094, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5081712990576166, + "t": 0.6108759881817455, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.6171584913034982, + "t": 0.6453576864535768, + "punct": null + }, + "ud": { + "u": 0.9842105263157895, + "t": 0.9924184988627748, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6750211685012701, + "t": 0.6863911290322581, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.988404196576477, + "t": 0.9881313828319073, + "punct": null + }, + "opus100": { + "u": 0.9309071729957805, + "t": 0.9427954668105775, + "punct": null + }, + "ud": { + "u": 0.9512893982808023, + "t": 0.9522784355938284, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5443203249673582, + "t": 0.694174052012204, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9739187850775833, + "t": 0.959917780061665, + "punct": null + }, + "opus100": { + "u": 0.8865717192268565, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9661458333333333, + "t": 0.9758713136729223, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.66299585553582, + "t": 0.6918412067471844, + "punct": null + }, + "legal-all-laws": { + "u": 0.7939727413149424, + "t": 0.8069750559044062, + "punct": null, + "acc_u": 0.43790849673202614, + "acc_t": 0.5119825708061002, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7495366089669345, + "t": 0.8144297428975972, + "punct": null, + "acc_u": 0.2178649237472767, + "acc_t": 0.40305010893246185, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7998564349065631, + "t": 0.839065021984381, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6514016992476991, + "t": 0.6623419314633298, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.7147019867549669, + "t": 0.6699252443933295, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.7609624465932089, + "t": 0.8122122607220742, + "punct": null + }, + "ud": { + "u": 0.8604898828541001, + "t": 0.9213226909920181, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5185185185185185, + "t": 0.5271317829457364, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.8619560131024802, + "t": 0.8654545454545454, + "punct": null + }, + "ud": { + "u": 0.6683417085427136, + "t": 0.6728971962616823, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.8873932177064457, + "t": 0.8984892658362046, + "punct": null + }, + "ud": { + "u": 0.9820689655172414, + "t": 0.9875173370319003, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5463290422973546, + "t": 0.6708364358401588, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9435569755058573, + "t": 0.8361858190709046, + "punct": null + }, + "opus100": { + "u": 0.7385430463576159, + "t": 0.7332224070992789, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4776891571459365, + "t": 0.48565834557023985, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8758654797230465, + "t": 0.9053129931614939, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.47619047619047616, + "t": 0.5882352941176471, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9118895966029723, + "t": 0.9100473435034193, + "punct": null + }, + "ud": { + "u": 0.9750692520775623, + "t": 0.9750692520775623, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5284581374131518, + "t": 0.6390894744392904, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9692241005635024, + "t": 0.8754901960784315, + "punct": null + }, + "opus100": { + "u": 0.6568296795952783, + "t": 0.6880150694607958, + "punct": null + }, + "ud": { + "u": 0.9970228250082699, + "t": 0.9986789960369881, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5759411178409876, + "t": 0.5909350683606629, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9361140443505808, + "t": 0.9466058492084786, + "punct": null + }, + "ud": { + "u": 0.9679802955665024, + "t": 0.9680589680589681, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5258607840214636, + "t": 0.683138151004475, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.835667215815486, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9504950495049505, + "t": 0.9615745079662605, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5756175938943563, + "t": 0.6784128872820465, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.8886503890528576, + "t": 0.9042464612822647, + "punct": null + }, + "ud": { + "u": 0.9878318584070798, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5363360044211108, + "t": 0.6491555380989787, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.8479750778816199, + "t": 0.8325041459369817, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.35602094240837695, + "t": 0.35416666666666663, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9464909922022049, + "t": 0.9526934645884605, + "punct": null + }, + "ud": { + "u": 0.9006714060031594, + "t": 0.9131675499388504, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5906382978723405, + "t": 0.6787386824851701, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.8907477820025348, + "t": 0.9108129439621152, + "punct": null + }, + "ud": { + "u": 0.9401523394994558, + "t": 0.930032292787944, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6134156537397902, + "t": 0.6690384119618458, + "punct": null + }, + "legal-all-laws": { + "u": 0.5828088857404178, + "t": 0.7115109649454916, + "punct": null, + "acc_u": 0.15767045454545456, + "acc_t": 0.4786931818181818, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.513427799022953, + "t": 0.5569332505953035, + "punct": null, + "acc_u": 0.03125, + "acc_t": 0.048295454545454544, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8471124518474256, + "t": 0.8502248833319214, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5935051571284837, + "t": 0.5955803413346902, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.877466251298027, + "t": 0.871297242083759, + "punct": null + }, + "opus100": { + "u": 0.5351329892814609, + "t": 0.8549125168236877, + "punct": null + }, + "ud": { + "u": 0.9761163032191069, + "t": 0.9780564263322884, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.537827352085354, + "t": 0.877342419080068, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9900771775082691, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.6548672566371682, + "t": 0.9136400322841002, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49169728141072744, + "t": 0.6352266315591499, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9834619625137817, + "t": 0.9412449098312973, + "punct": null + }, + "opus100": { + "u": 0.7835926449787836, + "t": 0.7795454545454545, + "punct": null + }, + "ud": { + "u": 0.9841938883034773, + "t": 0.8927738927738929, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5720338983050848, + "t": 0.7520704845814979, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.8194281237759498, + "t": 0.9552884615384616, + "punct": null + }, + "opus100": { + "u": 0.7367605269956083, + "t": 0.7273721629751162, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8439790575916231, + "t": 0.8380213385063047, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.7005076142131978, + "t": 0.675745784695201, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4838182412553123, + "t": 0.5042830540037243, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.7203086249655553, + "t": 0.7453136715821046, + "punct": null + }, + "ud": { + "u": 0.9858547111004554, + "t": 0.9908034849951597, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7241758241758242, + "t": 0.7562394445486957, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.6757748776508973, + "t": 0.7633811055864288, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.36380907147945857, + "t": 0.36320772946859897, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.8660795627087762, + "t": 0.8680187207488299, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5925925925925926, + "t": 0.750642673521851, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.7882054533925175, + "t": 0.9102370146243066, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6, + "t": 0.7058823529411764, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9849077697037452, + "t": 0.9627507163323782, + "punct": null + }, + "opus100": { + "u": 0.807781380268643, + "t": 0.8731533367294957, + "punct": null + }, + "ud": { + "u": 0.9813765182186235, + "t": 0.9813765182186235, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49885653300808047, + "t": 0.6670625314027314, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9757281553398058, + "t": 0.9590048063330506, + "punct": null + }, + "opus100": { + "u": 0.7729403884795714, + "t": 0.8818774445893091, + "punct": null + }, + "ud": { + "u": 0.977319587628866, + "t": 0.979256895372692, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4034896401308615, + "t": 0.6824211457207428, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.906274206041828, + "t": 0.9209549071618037, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39405204460966536, + "t": 0.6054590570719602, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9297971918876755, + "t": 0.9384086703674333, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5683990233693758, + "t": 0.6771805911663684, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.7788439035806225, + "t": 0.8115183246073298, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5316144874155925, + "t": 0.5510959294050669, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.5529149647233568, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7359414799817124, + "t": 0.8366897588743891, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9301321823577016, + "t": 0.9265415549597855, + "punct": null + }, + "ud": { + "u": 0.9302325581395349, + "t": 0.9411764705882352, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4797332583457196, + "t": 0.4859551788912672, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.8863146551724138, + "t": 0.8859060402684563, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5237944497203756, + "t": 0.6625906441063557, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.47951908290227874, + "t": 0.8201438848920863, + "punct": null + }, + "ud": { + "u": 0.9102296450939458, + "t": 0.9375, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.23728813559322035, + "t": 0.41237113402061853, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.797558494404883, + "t": 0.8146892655367232, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8919887955182073, + "t": 0.8900517538815411, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.3131991051454139, + "t": 0.6457971014492754, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6019127316198446, + "t": 0.657242178447277, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9281796813789502, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9465791940018744, + "t": 0.9500471253534402, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6550821871855081, + "t": 0.7745621924765884, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9500674763832657, + "t": 0.9520974289580514, + "punct": null + }, + "ud": { + "u": 0.9902411021814008, + "t": 0.9902690326273612, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.49929378531073443, + "t": 0.6444212721584984, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5837957824639289, + "t": 0.5937921727395411, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9484304932735425, + "t": 0.9188235294117647, + "punct": null + }, + "opus100": { + "u": 0.9284384144719341, + "t": 0.9349112426035503, + "punct": null + }, + "ud": { + "u": 0.9646255184191266, + "t": 0.9834170854271357, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4396115881550438, + "t": 0.7028560250391237, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.8522809558291093, + "t": 0.9253609924750865, + "punct": null + }, + "opus100": { + "u": 0.7500766636001226, + "t": 0.7215870880968392, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6181139122315593, + "t": 0.6176991150442478, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9153605015673981, + "t": 0.935344827586207, + "punct": null + }, + "ud": { + "u": 0.9658444022770398, + "t": 0.9654846335697399, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5857666711938069, + "t": 0.6951603383828447, + "punct": null + }, + "legal-all-laws": { + "u": 0.43765280081390523, + "t": 0.47730978103635135, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.4974993211040599, + "t": 0.35612715771865683, + "punct": null, + "acc_u": 0.034482758620689655, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8100966701748018, + "t": 0.7430360984587867, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5569086639828299, + "t": 0.32610565238154476, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9792122538293218, + "t": 0.9789706696181516, + "punct": null + }, + "opus100": { + "u": 0.9155002592016588, + "t": 0.9373996789727126, + "punct": null + }, + "ud": { + "u": 0.7926267281105991, + "t": 0.9726890756302521, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.556121006502686, + "t": 0.6765524522506958, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9781757134862898, + "t": 0.978675645342312, + "punct": null + }, + "opus100": { + "u": 0.7817305485425751, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8517906336088154, + "t": 0.8702975856260527, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4748700173310226, + "t": 0.7060260586319219, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.7973273942093541, + "t": 0.8384744812114413, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5893037336024217, + "t": 0.5959595959595959, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9157566302652105, + "t": 0.9413671980545797, + "punct": null + }, + "ud": { + "u": 0.97838692672641, + "t": 0.97838692672641, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.407795371498173, + "t": 0.6900431640719725, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9313338595106551, + "t": 0.9414595028067361, + "punct": null + }, + "ud": { + "u": 0.9715762273901808, + "t": 0.971551724137931, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39959259887964693, + "t": 0.7119747583512798, + "punct": null + }, + "short-sequences": { + "u": 0.6735666441769254, + "t": 0.7148835073163156, + "punct": null, + "acc_u": 0.10410557184750734, + "acc_t": 0.17925219941348974, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.48320903413278893, + "t": 0.5809269458859528, + "punct": null, + "acc_u": 0.024560117302052785, + "acc_t": 0.08321114369501466, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9116957541026308, + "t": 0.9264069264069265, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6169142015465816, + "t": 0.6585610070090117, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9487726787620064, + "t": 0.9539207760711399, + "punct": null + }, + "ud": { + "u": 0.9773462783171522, + "t": 0.9862433862433864, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5088917235686952, + "t": 0.6789079023264757, + "punct": null + }, + "short-sequences": { + "u": 0.6892181368296928, + "t": 0.8297268992581492, + "punct": null, + "acc_u": 0.22916666666666666, + "acc_t": 0.4635416666666667, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5485792727670525, + "t": 0.6365032392376143, + "punct": null, + "acc_u": 0.03125, + "acc_t": 0.109375, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9225571725571725, + "t": 0.9338274219163579, + "punct": null + }, + "ud": { + "u": 0.9515789473684211, + "t": 0.9488126649076517, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6317391016736125, + "t": 0.7285662356545674, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9599144842330305, + "t": 0.952054794520548, + "punct": null + }, + "opus100": { + "u": 0.5884297520661157, + "t": 0.633726490277335, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.47794077548126734, + "t": 0.5829865157316464, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.7399942412899512, + "t": 0.7385844748858448, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5938931297709924, + "t": 0.6093882392814778, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.7634168157423971, + "t": 0.8513948497854077, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6530612244897959, + "t": 0.6941896024464832, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.6694882647171989, + "t": 0.7045912653975364, + "punct": null + }, + "ud": { + "u": 0.7835787594823739, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5192164641705926, + "t": 0.6254125412541255, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.947331087072176, + "t": 0.9503365472075678, + "punct": null + }, + "opus100": { + "u": 0.9317634466149318, + "t": 0.9420723415828121, + "punct": null + }, + "ud": { + "u": 0.958783120706575, + "t": 0.9649298597194388, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6701305284501331, + "t": 0.7347307190853476, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.8908811475409836, + "t": 0.9103043246129204, + "punct": null + }, + "ud": { + "u": 0.928921568627451, + "t": 0.9318463444857497, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49938875305623476, + "t": 0.7039457022742238, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.6061713357693869, + "t": 0.6077752900468146, + "punct": null + }, + "ud": { + "u": 0.9927007299270073, + "t": 0.9937369519832986, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6606998570451862, + "t": 0.6598447424135497, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.7567567567567567, + "t": 0.7833122629582806, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5741239892183289, + "t": 0.7181467181467182, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9162699523942873, + "t": 0.9211050982626033, + "punct": null + }, + "ud": { + "u": 0.8712629652226969, + "t": 0.9683501683501683, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6070424257244162, + "t": 0.6494472165150181, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.7743181269611391, + "t": 0.7997970058360823, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.6756007393715343, + "t": 0.6989773232547799, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.7332394219230971, + "t": null, + "punct": null + }, + "ud": { + "u": 0.7032418952618454, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.791891035793475, + "t": 0.8031788079470199, + "punct": null + }, + "opus100": { + "u": 0.5267883867105657, + "t": 0.6068881190136539, + "punct": null + }, + "ud": { + "u": 0.98989898989899, + "t": 0.9921787709497207, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.22326510234648025, + "t": 0.49081219356214023, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.8330424665503201, + "t": 0.8492533107917724, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9723905723905724, + "t": 0.9882515549412578, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.11083123425692697, + "t": 0.3655770513675784, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.927186557518311, + "t": 0.9379674439067311, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.0, + "t": 0.4881936245572609, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.07395993836671803, + "t": 0.4794151596767987, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.1566352429296592, + "t": 0.5484588496981253, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.6107226107226107, + "t": 0.8222591362126246, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.546099290780142, + "t": 0.6120481927710844, + "punct": null + }, + "short-sequences": { + "u": 0.5184446151775264, + "t": 0.7243105177126854, + "punct": null, + "acc_u": 0.0997920997920998, + "acc_t": 0.24532224532224534, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5990563164391406, + "t": 0.6642961865329301, + "punct": null, + "acc_u": 0.060291060291060294, + "acc_t": 0.12681912681912683, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-12l.json b/wtpsplit/evaluation/evaluation_results/main/sat-12l.json new file mode 100644 index 00000000..a37e6bcc --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-12l.json @@ -0,0 +1,2450 @@ +{ + "af": { + "opus100": { + "u": 0.7500764759865403, + "t": 0.8072471061902365, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7113202324937725, + "t": 0.7135531135531135, + "punct": null + }, + "ud": { + "u": 0.9947780678851176, + "t": 0.9947780678851176, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9207547169811321, + "t": 0.9033149171270718, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7332511302918208, + "t": 0.7344184200079397, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.6632272857552308, + "t": 0.667027905716608, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.598644578313253, + "t": 0.6335208098987626, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.588686481303931, + "t": 0.6037735849056604, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.9052396878483836, + "t": 0.9077212806026365, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6932350971198928, + "t": 0.6840579710144927, + "punct": null + }, + "opus100": { + "u": 0.7674291938997821, + "t": 0.7642276422764228, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6791290961073235, + "t": 0.7123486682808716, + "punct": null + }, + "ud": { + "u": 0.8596620132255695, + "t": 0.8599545798637397, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7423750811161582, + "t": 0.7881548974943051, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.630438913167395, + "t": 0.6305954140248843, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.7804539138490043, + "t": 0.8011664899257689, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7400511985105889, + "t": 0.7557036657267368, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7177768696362893, + "t": 0.7285238623751387, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.7271721084670725, + "t": 0.7539111000744971, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7400503778337532, + "t": 0.7409565428502064, + "punct": null + }, + "ud": { + "u": 0.9029322548028311, + "t": 0.8973981345115366, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7095681625740897, + "t": 0.7198135198135198, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6981164679453948, + "t": 0.7022792022792022, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9432756324900133, + "t": 0.9452018176958032, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7599225556631171, + "t": 0.7620664564637402, + "punct": null + }, + "ud": { + "u": 0.9895261845386534, + "t": 0.9881422924901185, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7982683982683982, + "t": 0.7960327727468737, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7048669907685586, + "t": 0.7159994218817748, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.8294029101856498, + "t": 0.8535542490646714, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.48019691206086373, + "t": 0.48305489260143203, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5806451612903226, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4390524757361408, + "t": 0.4396167189823228, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.8992768595041322, + "t": 0.9096671949286845, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7061946902654866, + "t": 0.7167630057803468, + "punct": null + }, + "ud": { + "u": 0.9811550151975683, + "t": 0.9829085457271365, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7792943600309039, + "t": 0.8018275271273558, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6913411492560854, + "t": 0.6959902794653705, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8125000000000001, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.576271186440678, + "t": 0.5904761904761905, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9280162216965191, + "t": 0.9579993587688362, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7770045385779123, + "t": 0.777496839443742, + "punct": null + }, + "opus100": { + "u": 0.9048856548856549, + "t": 0.9142253892847717, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7336028751123091, + "t": 0.7593350999759093, + "punct": null + }, + "ud": { + "u": 0.9123587812393016, + "t": 0.9238918316141622, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7610023816920368, + "t": 0.7602659366445053, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6969182768624446, + "t": 0.7107168544713497, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.7372747391716724, + "t": 0.7783995523223279, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6709248850281042, + "t": 0.6644182124789207, + "punct": null + }, + "ud": { + "u": 0.9929906542056075, + "t": 0.9947582993593477, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7296296296296296, + "t": 0.7682539682539683, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9226736566186109, + "t": 0.9310344827586208, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7781504551988501, + "t": 0.7924717691342535, + "punct": null + }, + "ud": { + "u": 0.9375619425173439, + "t": 0.9307923771313942, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8260481712756467, + "t": 0.8316633266533066, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7484212670605012, + "t": 0.747236623300401, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9686073059360731, + "t": 0.9702970297029704, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8440414507772019, + "t": 0.8469038208168643, + "punct": null + }, + "opus100": { + "u": 0.8225966303270564, + "t": 0.856103896103896, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6723404255319149, + "t": 0.7784272051009565, + "punct": null + }, + "ud": { + "u": 0.965675057208238, + "t": 0.9648414985590777, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8366211431461811, + "t": 0.8509052183173589, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7656202065650884, + "t": 0.7658449809402794, + "punct": null + }, + "legal-all-laws": { + "u": 0.8658224319818021, + "t": 0.8732951149295006, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.763142906143795, + "t": 0.7668318453920858, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.6999004657736407, + "t": 0.7838123009084484, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5870611033799433, + "t": 0.5963228141341896, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9316442333069411, + "t": 0.9412080536912751, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.709083119108826, + "t": 0.7436578883788355, + "punct": null + }, + "ud": { + "u": 0.9778325123152709, + "t": 0.976629766297663, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8148148148148148, + "t": 0.8339307048984468, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.705251770259638, + "t": 0.7040539898293808, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9709853490376329, + "t": 0.9676139182198286, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7345801830481496, + "t": 0.7506199078993977, + "punct": null + }, + "opus100": { + "u": 0.9232854432095419, + "t": 0.9134640522875817, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8155727476915399, + "t": 0.8023952095808384, + "punct": null + }, + "ud": { + "u": 0.9248554913294798, + "t": 0.9406345957011258, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7028372324539572, + "t": 0.7090909090909091, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7088539711481738, + "t": 0.713005157994892, + "punct": null + }, + "legal-all-judgements": { + "u": 0.8468375201611653, + "t": 0.8700718423337438, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6781465425894244, + "t": 0.6880411304178919, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9188172043010753, + "t": 0.922077922077922, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8280383257690368, + "t": 0.8278833967046895, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6686825053995681, + "t": 0.6856709628506444, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.980723333945291, + "t": null, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7494086106292384, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9266490765171503, + "t": 0.9318423855165069, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7221731448763251, + "t": 0.75, + "punct": null + }, + "ud": { + "u": 0.9588330632090762, + "t": 0.9581032802858072, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7385187151579505, + "t": 0.7761664564943254, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6821370180897631, + "t": 0.687244480784955, + "punct": null + }, + "legal-all-laws": { + "u": 0.7324895492686906, + "t": 0.8664986627202442, + "punct": null, + "acc_u": 0.01092896174863388, + "acc_t": 0.17486338797814208, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7549703281061608, + "t": 0.7649450233393279, + "punct": null, + "acc_u": 0.03278688524590164, + "acc_t": 0.04371584699453552, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7250387644818482, + "t": 0.7627780602568561, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6109240198183359, + "t": 0.6126634906527547, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9593267882187938, + "t": 0.9479107040641098, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8011782032400588, + "t": 0.7783783783783783, + "punct": null + }, + "opus100": { + "u": 0.8658265381764271, + "t": 0.9054933611038792, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6566191446028513, + "t": 0.7086577022882755, + "punct": null + }, + "ud": { + "u": 0.9411346256446735, + "t": 0.952823691460055, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7519736842105262, + "t": 0.7511045655375552, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7342810278840897, + "t": 0.7443103005394297, + "punct": null + }, + "short-sequences": { + "u": 0.8854222944374401, + "t": 0.8931732264121146, + "punct": null, + "acc_u": 0.43842364532019706, + "acc_t": 0.4729064039408867, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7362542299969711, + "t": 0.7380598209413246, + "punct": null, + "acc_u": 0.09852216748768473, + "acc_t": 0.09359605911330049, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8454925079832966, + "t": 0.8714285714285714, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.608955223880597, + "t": 0.6237320122670441, + "punct": null + }, + "ud": { + "u": 0.9761467889908257, + "t": 0.9764885496183205, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7030545818728093, + "t": 0.7252681764004768, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6195403351341452, + "t": 0.6313638963798317, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.6582742046234837, + "t": 0.6610288935870332, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6263490124210955, + "t": 0.6575771122038445, + "punct": null + }, + "ud": { + "u": 0.9886706948640485, + "t": 0.9946808510638299, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9336203803372802, + "t": 0.9511926605504588, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6913663518982464, + "t": 0.6912597140938309, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9888579387186629, + "t": 0.9870630333058079, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7859976662777131, + "t": 0.8128144029653165, + "punct": null + }, + "opus100": { + "u": 0.9309435951502372, + "t": 0.9392235609103079, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7619271445358401, + "t": 0.7751450676982592, + "punct": null + }, + "ud": { + "u": 0.942763397739701, + "t": 0.9475574712643678, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7862423657987786, + "t": 0.7875335120643432, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7042482003447228, + "t": 0.7058713886300093, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9749582637729549, + "t": 0.9705782888062224, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7515680392691573, + "t": 0.7686768676867686, + "punct": null + }, + "opus100": { + "u": 0.9024896265560166, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6981616075245832, + "t": null, + "punct": null + }, + "ud": { + "u": 0.976315789473684, + "t": 0.9774236387782205, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7286012526096033, + "t": 0.7885572139303482, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7149553908967186, + "t": 0.7156251534043494, + "punct": null + }, + "legal-all-laws": { + "u": 0.9256451789086151, + "t": 0.9438731149022712, + "punct": null, + "acc_u": 0.7058823529411765, + "acc_t": 0.7233115468409586, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8046378931522016, + "t": 0.8267105859583278, + "punct": null, + "acc_u": 0.3159041394335512, + "acc_t": 0.38344226579520696, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8509461042330533, + "t": 0.8486306851059219, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6487591856661709, + "t": 0.6488700192223228, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.6646626586506346, + "t": 0.6951258362535839, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6992896606156275, + "t": 0.6700971983990852, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.8514698298091801, + "t": 0.8461735346813413, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.59913112164297, + "t": 0.6374589266155531, + "punct": null + }, + "ud": { + "u": 0.8629550321199143, + "t": 0.91156462585034, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5538945712037766, + "t": 0.6492027334851936, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5170068027210885, + "t": 0.528, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.8530534351145039, + "t": 0.859542697153523, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6474763406940063, + "t": 0.6690486824475212, + "punct": null + }, + "ud": { + "u": 0.7058823529411764, + "t": 0.7417218543046357, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5703592814371257, + "t": 0.5928393005828477, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.8968725768932541, + "t": 0.9039518450667365, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7088025741208916, + "t": 0.7190745986779981, + "punct": null + }, + "ud": { + "u": 0.9888579387186631, + "t": 0.9902912621359222, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7493975903614457, + "t": 0.7463479415670651, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6863018100032129, + "t": 0.6959216805234417, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9115492957746479, + "t": 0.920245398773006, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.817891373801917, + "t": 0.8105677346824058, + "punct": null + }, + "opus100": { + "u": 0.7568647029455815, + "t": 0.7669795692987299, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5894319027536592, + "t": 0.5809128630705394, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.47425435456931514, + "t": 0.4715804181845401, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8891149542217701, + "t": 0.8991924980463663, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5551382724479345, + "t": 0.62570104852475, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4444444444444444, + "t": 0.4444444444444444, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.900103519668737, + "t": 0.9143161255987228, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6925668088928811, + "t": 0.6961706030726899, + "punct": null + }, + "ud": { + "u": 0.9731258840169731, + "t": 0.9750692520775623, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7933673469387754, + "t": 0.797979797979798, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6524591831544683, + "t": 0.6564690885914596, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9657155496571554, + "t": 0.9523166891587944, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8202224469160767, + "t": 0.8159095848728537, + "punct": null + }, + "opus100": { + "u": 0.699409681227863, + "t": 0.7063197026022305, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5100744236703576, + "t": 0.5594723675233114, + "punct": null + }, + "ud": { + "u": 0.977088948787062, + "t": 0.9963684384285243, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9144781144781146, + "t": 0.9265573770491804, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5642032899582617, + "t": 0.5705635569395787, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9351265822784811, + "t": 0.9438502673796791, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7352806937471474, + "t": 0.7405671431919382, + "punct": null + }, + "ud": { + "u": 0.9595959595959594, + "t": 0.9702970297029703, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6797642436149312, + "t": 0.6922279792746114, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7007836238605468, + "t": 0.7043587513288876, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.8608920120464649, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7462624004471147, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9702602230483272, + "t": 0.9732225300092336, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7233304423243713, + "t": 0.7238095238095238, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6930902497985495, + "t": 0.6973249748767766, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.8863815271582263, + "t": 0.9007015650296817, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7076023391812866, + "t": 0.6955706585423015, + "punct": null + }, + "ud": { + "u": 0.9894620077648364, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.712082262210797, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6868627737938436, + "t": 0.6864718405264176, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.8502604166666666, + "t": 0.8470432771721176, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.552260573650948, + "t": 0.5548345230369889, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3816254416961131, + "t": 0.3660714285714286, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9419009370816599, + "t": 0.9468834688346883, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6512141280353201, + "t": 0.6831560722235963, + "punct": null + }, + "ud": { + "u": 0.8856199339537677, + "t": 0.8665826954752447, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.621559225714793, + "t": 0.6142024824791016, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6938511326860841, + "t": 0.6861564918314703, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.8936170212765957, + "t": 0.9057387691508698, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6665299425758818, + "t": 0.7055016181229774, + "punct": null + }, + "ud": { + "u": 0.9674523007856342, + "t": 0.935064935064935, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.766990291262136, + "t": 0.7731755424063115, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7004598770216504, + "t": 0.69947242206235, + "punct": null + }, + "legal-all-laws": { + "u": 0.8203894181601638, + "t": 0.8230478559495904, + "punct": null, + "acc_u": 0.4928977272727273, + "acc_t": 0.5454545454545454, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.557304060462588, + "t": 0.5579979181076697, + "punct": null, + "acc_u": 0.03977272727272727, + "acc_t": 0.045454545454545456, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8555049651388689, + "t": 0.8559927720515405, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5685242528371491, + "t": 0.5741551972329544, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8605024051309459, + "t": 0.8257403189066059, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7840629611411707, + "t": 0.7544159544159545, + "punct": null + }, + "opus100": { + "u": 0.9085314685314685, + "t": 0.9080748812517463, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8819599109131402, + "t": 0.8793335124966407, + "punct": null + }, + "ud": { + "u": 0.9594320486815416, + "t": 0.9710743801652894, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9090909090909091, + "t": 0.9046153846153847, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9263266950615864, + "t": 0.9283471310305453, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9866814650388457, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5800604229607251, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.7604280410569993, + "t": 0.917211328976035, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3333909138020384, + "t": 0.33210195788695973, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6476325231189044, + "t": 0.6491855757461633, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9624573378839589, + "t": 0.9672316384180791, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8586147681740125, + "t": 0.8457415128052412, + "punct": null + }, + "opus100": { + "u": 0.7640117994100296, + "t": 0.7612826603325415, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7598402738163148, + "t": 0.7599200685127033, + "punct": null + }, + "ud": { + "u": 0.9618736383442265, + "t": 0.9169510807736063, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8331441543700341, + "t": 0.7815384615384615, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7301982568719473, + "t": 0.7492316637594484, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.8959512407488027, + "t": 0.9458937198067633, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6629270780214176, + "t": 0.802701398938736, + "punct": null + }, + "opus100": { + "u": 0.7521141649048625, + "t": 0.7505668934240363, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7569925583782395, + "t": 0.7733172351343193, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8392857142857144, + "t": 0.8501026694045174, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.7559912854030502, + "t": 0.7344701583434835, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6340179041600842, + "t": 0.6381059751972943, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.482708409173644, + "t": 0.47611527832609557, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.7891891891891892, + "t": 0.8003076134324532, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7429116035263282, + "t": 0.7536800785083416, + "punct": null + }, + "ud": { + "u": 0.991953182150695, + "t": 0.996116504854369, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.95499119939653, + "t": 0.984973339796413, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7516809861785579, + "t": 0.7504375863657301, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.810540184453228, + "t": 0.7486321210170583, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6050280490338666, + "t": 0.6689873417721519, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38557711150303736, + "t": 0.3880878256595117, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.8816248809901618, + "t": 0.8820189274447949, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7485786481364497, + "t": 0.7480190174326465, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7645502645502645, + "t": 0.7621359223300971, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.6729297146833682, + "t": 0.8844563366577476, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.37648054145516074, + "t": 0.7647355163727959, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5, + "t": 0.48, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9693877551020408, + "t": 0.9586681974741676, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7645709040844424, + "t": 0.7982878544676297, + "punct": null + }, + "opus100": { + "u": 0.8548107840712342, + "t": 0.8766350346242626, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.642061855670103, + "t": 0.6862281116895409, + "punct": null + }, + "ud": { + "u": 0.9594034797017399, + "t": 0.9689034369885434, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6919770773638969, + "t": 0.6902654867256637, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.696107541974842, + "t": 0.6989010989010989, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9770240700218819, + "t": 0.9725228975853456, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7730530339225993, + "t": 0.7637655417406749, + "punct": null + }, + "opus100": { + "u": 0.8446293124541228, + "t": 0.8766066838046275, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6395301741595787, + "t": 0.7115148539160323, + "punct": null + }, + "ud": { + "u": 0.9515108924806746, + "t": 0.9649083088068825, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6847084708470847, + "t": 0.6862408915559365, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.703201361814288, + "t": 0.7135238095238094, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9245082402977138, + "t": 0.9276368491321761, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.530507605537515, + "t": 0.6050534941953107, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5941043083900227, + "t": 0.5843621399176954, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9390115667718191, + "t": 0.94263811789585, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7091778638123433, + "t": 0.7085792101679529, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6954328342188589, + "t": 0.7001020556932497, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.781037315184229, + "t": 0.8255127844900252, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5842696629213483, + "t": 0.6253731343283583, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5295476158130689, + "t": 0.5344, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.4932682926829268, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8213820078226858, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.808678275763631, + "t": 0.8236091558475416, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9262361523912457, + "t": 0.9312638580931264, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.687759336099585, + "t": 0.6920433518371663, + "punct": null + }, + "ud": { + "u": 0.9397590361445782, + "t": 0.9523809523809523, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5974025974025974, + "t": 0.6190476190476191, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4707112970711297, + "t": 0.4705176551251285, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.8812140240711669, + "t": 0.8816753926701569, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6748554913294798, + "t": 0.6716733161229758, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6893819334389858, + "t": 0.6905848787446506, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.6879606879606881, + "t": 0.8197059582151148, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.44244149272612265, + "t": 0.5047454702329595, + "punct": null + }, + "ud": { + "u": 0.896774193548387, + "t": 0.8951351351351352, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4652206432311144, + "t": 0.4966698382492864, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4579439252336449, + "t": 0.4761904761904762, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.8, + "t": 0.8274067649609714, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8004115226337449, + "t": 0.8269340974212034, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8843176038428935, + "t": 0.8927509185280224, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.7312876398049899, + "t": 0.720143669560012, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7180049328583172, + "t": 0.7120778477389812, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.643934122013454, + "t": 0.6441558441558441, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9240769630785233, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7704497786063855, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9182879377431906, + "t": 0.9486238532110092, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8021778584392014, + "t": 0.7978533094812166, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.763613068545804, + "t": 0.7719924524453057, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9478774852229984, + "t": 0.9486421080935735, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.811460731644922, + "t": 0.7967757694186615, + "punct": null + }, + "ud": { + "u": 0.982323964068386, + "t": 0.9879793932455638, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8600979858464888, + "t": 0.8600217864923747, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.7253914988814317, + "t": 0.7250932338838572, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6321243523316061, + "t": 0.6473656755346896, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5997719498289623, + "t": 0.6138888888888889, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9288174512055108, + "t": 0.9226327944572749, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7870646766169154, + "t": 0.7672663958212421, + "punct": null + }, + "opus100": { + "u": 0.9313464608834486, + "t": 0.9346195069667738, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.745404411764706, + "t": 0.7633136094674556, + "punct": null + }, + "ud": { + "u": 0.9707832064817088, + "t": 0.9735998026153466, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7633844215830359, + "t": 0.7929936305732483, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7092058257763122, + "t": 0.7232493812782065, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9164556962025316, + "t": 0.9301389168512182, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7656628591208031, + "t": 0.7955265610438023, + "punct": null + }, + "opus100": { + "u": 0.7628988965105876, + "t": 0.7623850489469001, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7369985141158989, + "t": 0.7385524372230429, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6182136602451839, + "t": 0.615916955017301, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9158829676071055, + "t": 0.9243386243386242, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7138488422892092, + "t": 0.747278750591576, + "punct": null + }, + "ud": { + "u": 0.9568627450980393, + "t": 0.9646271510516252, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7334685598377282, + "t": 0.7588339222614839, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7177824267782427, + "t": 0.7231542788868424, + "punct": null + }, + "legal-all-laws": { + "u": 0.5461879341997217, + "t": 0.537572595432317, + "punct": null, + "acc_u": 0.017241379310344827, + "acc_t": 0.017241379310344827, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5642605877333239, + "t": 0.5642739377924899, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7896479550166049, + "t": 0.7844919926448092, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.629781108550879, + "t": 0.6341641848223347, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9756771697070203, + "t": 0.959090909090909, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7443486366814263, + "t": 0.725181598062954, + "punct": null + }, + "opus100": { + "u": 0.921993216801461, + "t": 0.9370666666666667, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6955955738771968, + "t": 0.7011135857461024, + "punct": null + }, + "ud": { + "u": 0.7586206896551725, + "t": 0.8676684440135725, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.46604441583521083, + "t": 0.5045289855072463, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6943778601002397, + "t": 0.7001441614608361, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9743589743589745, + "t": 0.9786995515695067, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8308483290488432, + "t": 0.8427397260273972, + "punct": null + }, + "opus100": { + "u": 0.8705054060849887, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6501885211562631, + "t": null, + "punct": null + }, + "ud": { + "u": 0.848249027237354, + "t": 0.8436123348017621, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6430282702443699, + "t": 0.6351851851851852, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7159482052122603, + "t": 0.7316377232252669, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8103186646433992, + "t": 0.8224142737663787, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.690497737556561, + "t": 0.7000241721053905, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5836909871244634, + "t": 0.5916824196597352, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9221118661787768, + "t": 0.9374160623153371, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7310529845741114, + "t": 0.7510020040080161, + "punct": null + }, + "ud": { + "u": 0.9590958019375673, + "t": 0.9749216300940439, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8249322493224932, + "t": 0.8375192209123525, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6987050983366744, + "t": 0.7128911857594028, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9288330716902145, + "t": 0.9344608879492601, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7306205955899069, + "t": 0.7546057479734708, + "punct": null + }, + "ud": { + "u": 0.9624125874125874, + "t": 0.9672131147540983, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7913322632423755, + "t": 0.7911468812877264, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7224157955865272, + "t": 0.7323815309842041, + "punct": null + }, + "short-sequences": { + "u": 0.7918601790481132, + "t": 0.7830115594250628, + "punct": null, + "acc_u": 0.34384164222873903, + "acc_t": 0.27712609970674484, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6239909072085053, + "t": 0.6269180729935142, + "punct": null, + "acc_u": 0.12573313782991202, + "acc_t": 0.12903225806451613, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.914854597851716, + "t": 0.9237788513150832, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6966688727112288, + "t": 0.7140186915887851, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8672566371681415, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6846184819810751, + "t": 0.6833601796261043, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.941956003180493, + "t": 0.9472, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7156549520766773, + "t": 0.7259085580304808, + "punct": null + }, + "ud": { + "u": 0.981541802388708, + "t": 0.9819341126461212, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7989130434782609, + "t": 0.8509803921568628, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7021186887319489, + "t": 0.7057986819022333, + "punct": null + }, + "short-sequences": { + "u": 0.9130309505309505, + "t": 0.9198844847282347, + "punct": null, + "acc_u": 0.65625, + "acc_t": 0.6875, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6556993102392678, + "t": 0.6822591440601308, + "punct": null, + "acc_u": 0.13541666666666666, + "acc_t": 0.16666666666666666, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9223553934340802, + "t": 0.9264590421355667, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7774163568773235, + "t": 0.8025477707006369, + "punct": null + }, + "ud": { + "u": 0.9527851458885942, + "t": 0.953781512605042, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.813314037626628, + "t": 0.8131436978911231, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7424311577666209, + "t": 0.7423702705304707, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9743589743589743, + "t": 0.9704075935231714, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8439538384345208, + "t": 0.8602860286028603, + "punct": null + }, + "opus100": { + "u": 0.6751918158567775, + "t": 0.6853731343283582, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5151705377694079, + "t": 0.5159253945480631, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8947368421052632, + "t": 0.8807339449541284, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5396441758979523, + "t": 0.567483438422859, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.7892401552967276, + "t": 0.7846778874056878, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6298290798407867, + "t": 0.6291374728195216, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.601318235592361, + "t": 0.5970976683515409, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.8111111111111111, + "t": 0.8589290568089154, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6499889307062209, + "t": 0.6716112531969309, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7137931034482757, + "t": 0.7193277310924369, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.6883168316831684, + "t": 0.7358446960942917, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6921690366513119, + "t": 0.7225512528473804, + "punct": null + }, + "ud": { + "u": 0.8642964446670005, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8384879725085911, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6083587696642404, + "t": 0.6418242491657397, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9399189089568744, + "t": 0.948509485094851, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8181981657975185, + "t": 0.8184937691890917, + "punct": null + }, + "opus100": { + "u": 0.9329414907827944, + "t": 0.9378196500672948, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7475283337352303, + "t": 0.7457142857142858, + "punct": null + }, + "ud": { + "u": 0.960960960960961, + "t": 0.96048024012006, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7197549770290965, + "t": 0.7371202113606341, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7294356129307586, + "t": 0.7349415568266601, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9083830781209447, + "t": 0.9130434782608696, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7366705471478463, + "t": 0.7386629266012156, + "punct": null + }, + "ud": { + "u": 0.920152091254753, + "t": 0.9287042777433354, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6826547685443392, + "t": 0.6880434782608695, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.714885922459182, + "t": 0.7196580375582345, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.6715, + "t": 0.6131595029537584, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5940555338287056, + "t": 0.6623586429725363, + "punct": null + }, + "ud": { + "u": 0.9842271293375394, + "t": 0.9852941176470589, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9357218124341412, + "t": 0.9431230610134436, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6473086994471923, + "t": 0.6467291924733086, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.7858823529411765, + "t": 0.7924528301886793, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7269848450576794, + "t": 0.7572102779234399, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7196882217090068, + "t": 0.7305678614579137, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9263565891472868, + "t": 0.9265317438314388, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.673801768264309, + "t": 0.6802325581395349, + "punct": null + }, + "ud": { + "u": 0.9434464404524285, + "t": 0.9504685408299867, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6753569211669771, + "t": 0.6657807308970098, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6701928162715777, + "t": 0.670947655185834, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.8156572335361015, + "t": 0.8134347940173183, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5145505097312327, + "t": 0.5632070831283816, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.738095238095238, + "t": 0.696522153406384, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7287623975851659, + "t": 0.7284427284427284, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.766677340164372, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3774142152100416, + "t": null, + "punct": null + }, + "ud": { + "u": 0.7877094972067038, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.27621113521330437, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.7843137254901961, + "t": 0.8730489073881372, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6310904872389791, + "t": 0.7394422310756972, + "punct": null + }, + "opus100": { + "u": 0.7393162393162394, + "t": 0.7118884424485937, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.588265306122449, + "t": 0.6016466117796074, + "punct": null + }, + "ud": { + "u": 0.9691428571428572, + "t": 0.9910714285714286, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8351648351648352, + "t": 0.8377192982456141, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5887359531883768, + "t": 0.601757551067916, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.8009981285090455, + "t": 0.8595183486238532, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6882818483533316, + "t": 0.6904619076184763, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9843217450579413, + "t": 0.9875346260387812, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.3975488318651858, + "t": 0.42573662056524353, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.92987012987013, + "t": 0.9357394366197184, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.5452229299363056, + "t": 0.5835929387331257, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.25032594524119944, + "t": 0.5042735042735043, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.49253731343283585, + "t": 0.5371386754482254, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.7006711409395974, + "t": 0.8075970272502064, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4917869586859133, + "t": 0.5917542441390461, + "punct": null + }, + "short-sequences": { + "u": 0.863267663982132, + "t": 0.8685264733326602, + "punct": null, + "acc_u": 0.4677754677754678, + "acc_t": 0.4781704781704782, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6533749310199742, + "t": 0.6911678669013269, + "punct": null, + "acc_u": 0.09355509355509356, + "acc_t": 0.13721413721413722, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-12l_lora.json b/wtpsplit/evaluation/evaluation_results/main/sat-12l_lora.json new file mode 100644 index 00000000..f63926ed --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-12l_lora.json @@ -0,0 +1,1578 @@ +{ + "af": { + "opus100": { + "u": 0.818655303030303, + "t": 0.9259579371938923, + "punct": null + }, + "ud": { + "u": 0.9986928104575163, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6110201854882706, + "t": 0.7813765182186235, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.7814748201438848, + "t": 0.859541130386122, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4610526315789473, + "t": 0.6130473637176049, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.9279043705640643, + "t": 0.9296728093268145, + "punct": null + }, + "opus100": { + "u": 0.760308710033076, + "t": 0.8638090070537167, + "punct": null + }, + "ud": { + "u": 0.8362676056338029, + "t": 0.8824451410658307, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6331015061654649, + "t": 0.6501351632355998, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.8692649235323138, + "t": 0.8897100625355316, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6875268949406774, + "t": 0.7519209659714599, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.8763874873864783, + "t": 0.9107565011820331, + "punct": null + }, + "ud": { + "u": 0.9334687658710006, + "t": 0.9347939488784559, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.676048858204992, + "t": 0.7463701982908819, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9534202821400054, + "t": 0.966567001902691, + "punct": null + }, + "ud": { + "u": 0.9985067197610752, + "t": 0.9985067197610752, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7063520227111426, + "t": 0.7408776469345726, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.8579881656804733, + "t": 0.9162726008344922, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.40008367763192304, + "t": 0.51323706377858, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.9383306751727803, + "t": 0.9624309392265192, + "punct": null + }, + "ud": { + "u": 0.9987959060806743, + "t": 0.9984935221452245, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6849036629261063, + "t": 0.7392224688935928, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4411764705882353, + "t": 0.4935064935064935, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9916613213598462, + "t": 0.9929577464788732, + "punct": null + }, + "opus100": { + "u": 0.945054945054945, + "t": 0.9614112458654908, + "punct": null + }, + "ud": { + "u": 0.9688067337844528, + "t": 0.9697539397290572, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7331087233655071, + "t": 0.7592173431919923, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.7828820116054158, + "t": 0.8826436071649166, + "punct": null + }, + "ud": { + "u": 0.9959278650378127, + "t": 0.9976635514018692, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9434563312981151, + "t": 0.9604796947397111, + "punct": null + }, + "ud": { + "u": 0.979631425800194, + "t": 0.9930898321816387, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7293735331287236, + "t": 0.7592133705910266, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9957615145521334, + "t": 0.9963162368943043, + "punct": null + }, + "opus100": { + "u": 0.9094360086767895, + "t": 0.9411088767595519, + "punct": null + }, + "ud": { + "u": 0.9896907216494845, + "t": 0.9791666666666665, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.772648124617629, + "t": 0.7987254954906303, + "punct": null + }, + "legal-all-laws": { + "u": 0.9649257474111196, + "t": 0.9705960236324414, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.9131890839331006, + "t": 0.9353687455686869, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8875972180379131, + "t": 0.8887242719501803, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.8132559827660183, + "t": 0.8376057857708238, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9572695511959151, + "t": 0.9652910631320032, + "punct": null + }, + "ud": { + "u": 0.9802955665024631, + "t": 0.9802955665024631, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7015318654816667, + "t": 0.7332289923903071, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9903513824884793, + "t": 0.9907567879838244, + "punct": null + }, + "opus100": { + "u": 0.9245969838793552, + "t": 0.9612021857923498, + "punct": null + }, + "ud": { + "u": 0.9701952723535457, + "t": 0.9711637487126673, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7428490911652811, + "t": 0.7605633802816902, + "punct": null + }, + "legal-all-judgements": { + "u": 0.9575248676837953, + "t": 0.9733983512869242, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0625, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.7582996930570501, + "t": 0.841694122143023, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9439872577647995, + "t": 0.9645002730748224, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6682320091382153, + "t": 0.7360850020433183, + "punct": null + } + }, + "es": { + "opus100": { + "u": 0.9490616621983913, + "t": 0.9649122807017544, + "punct": null + }, + "ud": { + "u": 0.9935649935649936, + "t": 0.993573264781491, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6933867735470941, + "t": 0.7340295817208292, + "punct": null + }, + "legal-all-laws": { + "u": 0.9397166830504324, + "t": 0.943527177779413, + "punct": null, + "acc_u": 0.5136612021857924, + "acc_t": 0.546448087431694, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.829026328239694, + "t": 0.8553096064480514, + "punct": null, + "acc_u": 0.1366120218579235, + "acc_t": 0.22404371584699453, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8877621973484705, + "t": 0.8906752052277276, + "punct": null, + "acc_u": 0.10256410256410256, + "acc_t": 0.10256410256410256, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.7286878474704218, + "t": 0.7606698858272536, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9945145364783324, + "t": 0.9945054945054944, + "punct": null + }, + "opus100": { + "u": 0.9469168900804289, + "t": 0.9604612850082371, + "punct": null + }, + "ud": { + "u": 0.9861062869051754, + "t": 0.9861255636489769, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7316985538489176, + "t": 0.7762222700839974, + "punct": null + }, + "short-sequences": { + "u": 0.8696584689032849, + "t": 0.9329023834737062, + "punct": null, + "acc_u": 0.32019704433497537, + "acc_t": 0.5763546798029556, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6834353108908288, + "t": 0.803904196792055, + "punct": null, + "acc_u": 0.06403940886699508, + "acc_t": 0.21674876847290642, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.9184415584415583, + "t": 0.9491059147180193, + "punct": null + }, + "ud": { + "u": 0.9993823347745522, + "t": 0.9993819530284301, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5937595036798248, + "t": 0.6903396157698262, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.656710628394104, + "t": 0.8306325143753267, + "punct": null + }, + "ud": { + "u": 0.9977134146341464, + "t": 0.9984744469870328, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7107462835977776, + "t": 0.7111066459034511, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.995834490419328, + "t": 0.9972160356347439, + "punct": null + }, + "opus100": { + "u": 0.9539614561027837, + "t": 0.9678123295144572, + "punct": null + }, + "ud": { + "u": 0.9849246231155779, + "t": 0.9831722162549229, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6967833688877734, + "t": 0.7709052296256969, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9903686482896049, + "t": 0.9929364278506558, + "punct": null + }, + "ud": { + "u": 0.9919786096256684, + "t": 0.9851951547779273, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.724518660461721, + "t": 0.7492338003502625, + "punct": null + }, + "legal-all-laws": { + "u": 0.9715660707299615, + "t": 0.9847150284148085, + "punct": null, + "acc_u": 0.7973856209150327, + "acc_t": 0.840958605664488, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8925819127993804, + "t": 0.9016509497389597, + "punct": null, + "acc_u": 0.4880174291938998, + "acc_t": 0.5206971677559913, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.9675620324937908, + "t": 0.967903990621569, + "punct": null, + "acc_u": 0.5079365079365079, + "acc_t": 0.49206349206349204, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.7572482656937781, + "t": 0.7754018708203787, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.015873015873015872, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.862212943632568, + "t": 0.9265099672716453, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.8956142600666837, + "t": 0.9388904533934103, + "punct": null + }, + "ud": { + "u": 0.9877750611246944, + "t": 0.9901960784313726, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.34977578475336324, + "t": 0.5370370370370371, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.9008841321544905, + "t": 0.9600409836065574, + "punct": null + }, + "ud": { + "u": 0.7586206896551724, + "t": 0.8602576808721506, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.9341758820431807, + "t": 0.9589339135164536, + "punct": null + }, + "ud": { + "u": 0.9875862068965517, + "t": 0.9903181189488244, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6821838096868047, + "t": 0.7377542932628798, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9613960867265996, + "t": 0.9841095890410959, + "punct": null + }, + "opus100": { + "u": 0.7256750964423488, + "t": 0.8696418085731062, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.47526388941061565, + "t": 0.5659767914822347, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.9212310902451747, + "t": 0.922437673130194, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.36363636363636365, + "t": 0.761904761904762, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.8382075471698113, + "t": 0.9433131535498073, + "punct": null + }, + "ud": { + "u": 0.9858757062146892, + "t": 0.9858356940509915, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6563889466029502, + "t": 0.6930869199980235, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9748045178105995, + "t": 0.9710799819249887, + "punct": null + }, + "opus100": { + "u": 0.7139616415755826, + "t": 0.8708446866485013, + "punct": null + }, + "ud": { + "u": 0.9983514671941972, + "t": 0.9990102276476411, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5912766199749458, + "t": 0.6408697444352844, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.952177397809244, + "t": 0.9681632653061224, + "punct": null + }, + "ud": { + "u": 0.9901719901719902, + "t": 0.991389913899139, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6810855603894759, + "t": 0.7446447507953341, + "punct": null + } + }, + "hy": { + "ud": { + "u": 0.987037037037037, + "t": 0.9806807727690893, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6890859601369742, + "t": 0.7144478844169248, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.907528002083876, + "t": 0.9539234850600391, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.648075412411626, + "t": 0.7181645125738905, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.9191759112519811, + "t": 0.9393014581213971, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2176165803108808, + "t": 0.37209302325581395, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9636020490698302, + "t": 0.9691846195800381, + "punct": null + }, + "ud": { + "u": 0.9733775259275098, + "t": 0.9735800620387206, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5454545454545454, + "t": 0.7382113821138211, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.9390018484288354, + "t": 0.9557185547405597, + "punct": null + }, + "ud": { + "u": 0.9976958525345622, + "t": 0.9976958525345622, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.692020879940343, + "t": 0.7285959349170869, + "punct": null + }, + "legal-all-laws": { + "u": 0.9819210051931878, + "t": 0.9826970592609908, + "punct": null, + "acc_u": 0.8963068181818182, + "acc_t": 0.9034090909090909, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8549019738294672, + "t": 0.8752447520883535, + "punct": null, + "acc_u": 0.48011363636363635, + "acc_t": 0.5511363636363636, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.9527911913433799, + "t": 0.9545606918490654, + "punct": null, + "acc_u": 0.24489795918367346, + "acc_t": 0.22448979591836735, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6540938441767498, + "t": 0.7124028400340834, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.9487043892120571, + "t": 0.9481641468682506, + "punct": null + }, + "opus100": { + "u": 0.8370530357571395, + "t": 0.9465181058495822, + "punct": null + }, + "ud": { + "u": 0.9813664596273292, + "t": 0.9783281733746131, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.952120230180457, + "t": 0.9540552684789935, + "punct": null + } + }, + "jv": {}, + "ka": { + "opus100": { + "u": 0.871301775147929, + "t": 0.9386973180076629, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6416656214724695, + "t": 0.6650557254167078, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9961261759822911, + "t": 0.9983342587451416, + "punct": null + }, + "opus100": { + "u": 0.9113857480936103, + "t": 0.9601366742596812, + "punct": null + }, + "ud": { + "u": 0.9786791471658866, + "t": 0.866865671641791, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7080976587670939, + "t": 0.7834148853978884, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.9380572501173158, + "t": 0.9458744286745249, + "punct": null + }, + "opus100": { + "u": 0.848743987172635, + "t": 0.896280616873299, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6466809421841542, + "t": 0.8952380952380952, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.8119122257053292, + "t": 0.8938053097345133, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4258127597164507, + "t": 0.5314099581200559, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.7345360824742267, + "t": 0.8546875, + "punct": null + }, + "ud": { + "u": 0.999514091350826, + "t": 0.9992709599027946, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7485026926367707, + "t": 0.7507938834334847, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.9296244784422809, + "t": 0.9393495458540873, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.41172038509836745, + "t": 0.494111801242236, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.8905457798985983, + "t": 0.9461738002594033, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.640074211502783, + "t": 0.8010471204188481, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.9770833333333334, + "t": 0.9779179810725551, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3389830508474576, + "t": 0.4, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9933481152993349, + "t": 0.9938718662952647, + "punct": null + }, + "opus100": { + "u": 0.9257386212403513, + "t": 0.9449339207048458, + "punct": null + }, + "ud": { + "u": 0.9910350448247758, + "t": 0.9927125506072875, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6805932734489242, + "t": 0.7266333151716281, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9967032967032967, + "t": 0.9972451790633609, + "punct": null + }, + "opus100": { + "u": 0.9213305174234425, + "t": 0.9448388858547243, + "punct": null + }, + "ud": { + "u": 0.9926436781609195, + "t": 0.9917393299678752, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7036142499784352, + "t": 0.7497510612651329, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9577464788732393, + "t": 0.9670391061452513, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4004474272930649, + "t": 0.598984771573604, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9502645502645503, + "t": 0.962823275862069, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6790958019375672, + "t": 0.7190431025397829, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8288590604026845, + "t": 0.8965703483661894, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4949022939677145, + "t": 0.5575447570332481, + "punct": null + } + }, + "mn": { + "ted2020-corrupted-asr": { + "u": 0.8087103798693444, + "t": 0.8609080841638981, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9143446852425181, + "t": 0.9709382784389704, + "punct": null + }, + "ud": { + "u": 0.9767441860465117, + "t": 0.988235294117647, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4679291762894535, + "t": 0.5655185777261057, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.8910585817060638, + "t": 0.9523544162719421, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6428277846280313, + "t": 0.7280025690430314, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.8938053097345133, + "t": 0.9272177973084318, + "punct": null + }, + "ud": { + "u": 0.9112050739957718, + "t": 0.9443254817987153, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3295880149812734, + "t": 0.5527638190954773, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.8611251900658896, + "t": 0.9124212936462508, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9084652443220921, + "t": 0.9093530157997926, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.6940314136125655, + "t": 0.8454545454545455, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5779046339825387, + "t": 0.6837972876516775, + "punct": null + } + }, + "nl": { + "ud": { + "u": 0.9631675874769797, + "t": 0.9694727104532841, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.791660689523263, + "t": 0.8265630900361439, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9499467518636848, + "t": 0.9674952198852772, + "punct": null + }, + "ud": { + "u": 0.9925799086757991, + "t": 0.9937106918238994, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.7283531409168081, + "t": 0.8438818565400843, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42983050847457627, + "t": 0.6259168704156479, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.989010989010989, + "t": 0.992797783933518, + "punct": null + }, + "opus100": { + "u": 0.9487179487179487, + "t": 0.9647444657010111, + "punct": null + }, + "ud": { + "u": 0.9969864389753893, + "t": 0.9957211175434182, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7128582697870103, + "t": 0.7688598371195885, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9680829436877415, + "t": 0.9687563814580356, + "punct": null + }, + "opus100": { + "u": 0.7070151306740028, + "t": 0.8509537665696735, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.532867946480512, + "t": 0.6508087535680304, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9506008010680908, + "t": 0.9598915989159892, + "punct": null + }, + "ud": { + "u": 0.982791586998088, + "t": 0.9832295160517489, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7086866239833882, + "t": 0.7637485373896394, + "punct": null + }, + "legal-all-laws": { + "u": 0.8176684574932447, + "t": 0.8172131866373794, + "punct": null, + "acc_u": 0.1724137931034483, + "acc_t": 0.15517241379310345, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.6945125423761382, + "t": 0.676233510890942, + "punct": null, + "acc_u": 0.08620689655172414, + "acc_t": 0.06896551724137931, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8210959600743131, + "t": 0.8479886680287196, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6252811260392563, + "t": 0.6503229525863692, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9892709766162311, + "t": 0.9944382647385984, + "punct": null + }, + "opus100": { + "u": 0.958985429033999, + "t": 0.9741046831955923, + "punct": null + }, + "ud": { + "u": 0.9920927780706379, + "t": 0.9946977730646872, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.707213830593058, + "t": 0.7378166120559628, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9971925884334644, + "t": 0.9971925884334644, + "punct": null + }, + "ud": { + "u": 0.9368932038834952, + "t": 0.9433021806853582, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7147838214783822, + "t": 0.7546357955127548, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.7772112613611173, + "t": 0.8882240957302149, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.48642779587404994, + "t": 0.6494623655913978, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9517943224424211, + "t": 0.9706286027998903, + "punct": null + }, + "ud": { + "u": 0.9795275590551181, + "t": 0.982124079915878, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7311963314301129, + "t": 0.7625361746908709, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9482346694982746, + "t": 0.9593320764880151, + "punct": null + }, + "ud": { + "u": 0.9922346850733391, + "t": 0.9926502377864245, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7234576757532282, + "t": 0.7730928059117583, + "punct": null + }, + "short-sequences": { + "u": 0.9416569358468184, + "t": 0.934972875771996, + "punct": null, + "acc_u": 0.7778592375366569, + "acc_t": 0.751466275659824, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6714680635567006, + "t": 0.7860486979621877, + "punct": null, + "acc_u": 0.156158357771261, + "acc_t": 0.3841642228739003, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9484148307361634, + "t": 0.9655742219774167, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6593351662084479, + "t": 0.7064248386105135, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9540106951871659, + "t": 0.9655546514781664, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7030438675022382, + "t": 0.7344978626840468, + "punct": null + }, + "short-sequences": { + "u": 0.9718191964285715, + "t": 0.9512049437830689, + "punct": null, + "acc_u": 0.890625, + "acc_t": 0.8020833333333334, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.707797308184305, + "t": 0.7705342111592112, + "punct": null, + "acc_u": 0.125, + "acc_t": 0.265625, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9520255863539445, + "t": 0.9667574931880109, + "punct": null + }, + "ud": { + "u": 0.957983193277311, + "t": 0.9686003193187867, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7508031206975677, + "t": 0.7840353368039122, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9750271444082519, + "t": 0.9867403314917127, + "punct": null + }, + "opus100": { + "u": 0.8307769675634902, + "t": 0.863528009535161, + "punct": null + }, + "ud": { + "u": 0.9863013698630138, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5344804409194784, + "t": 0.5653767092680311, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.7391304347826086, + "t": 0.884125144843569, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5577382532519246, + "t": 0.6140450501608935, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.9091374456104427, + "t": 0.9210822998872603, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6368038740920097, + "t": 0.7445255474452556, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.7079107505070995, + "t": 0.780619773733399, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6819499113283447, + "t": 0.6949239097130018, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9822960394232524, + "t": 0.9868737289702347, + "punct": null + }, + "opus100": { + "u": 0.9420828905419767, + "t": 0.9621917808219178, + "punct": null + }, + "ud": { + "u": 0.9848942598187311, + "t": 0.9843037974683545, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7215566165210342, + "t": 0.741874376869392, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.918751612071189, + "t": 0.9598480737927292, + "punct": null + }, + "ud": { + "u": 0.9863692688971499, + "t": 0.9882060831781502, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.710704755238637, + "t": 0.7497704784249719, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.688158449220396, + "t": 0.8393691588785047, + "punct": null + }, + "ud": { + "u": 0.9937759336099584, + "t": 0.9937759336099584, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6584540551972083, + "t": 0.6821088189166366, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.8684603886397607, + "t": 0.9094984589520875, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6629367676554418, + "t": 0.7651484065107372, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9240976645435244, + "t": 0.9591494124230554, + "punct": null + }, + "ud": { + "u": 0.9863013698630138, + "t": 0.9972222222222222, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6274585871125422, + "t": 0.6900596830623585, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.8510853104492679, + "t": 0.9280931586608443, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.9069958847736626, + "t": 0.9140027014858172, + "punct": null + } + }, + "yo": {}, + "zh": { + "ersatz": { + "u": 0.9490586932447398, + "t": 0.9487960143924717, + "punct": null + }, + "opus100": { + "u": 0.8348803126526625, + "t": 0.9413407821229051, + "punct": null + }, + "ud": { + "u": 0.9866962305986697, + "t": 0.9921787709497207, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.777926694248587, + "t": 0.8590493224186557, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.895048439181916, + "t": 0.9421930870083433, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9698593436034829, + "t": 0.9951489951489951, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.2795517022626348, + "t": 0.48810872027180063, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.7421546425105144, + "t": 0.9375549692172382, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.38117394416607014, + "t": 0.6498353457738748, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.41876172607879925, + "t": 0.652122173740579, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.41616989567809237, + "t": 0.6747744213417025, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.880794701986755, + "t": 0.9271523178807948, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4973288003885381, + "t": 0.6720386784850927, + "punct": null + }, + "short-sequences": { + "u": 0.9598515584103916, + "t": 0.9653369814149964, + "punct": null, + "acc_u": 0.8004158004158004, + "acc_t": 0.817047817047817, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6724859469544794, + "t": 0.7570553985301427, + "punct": null, + "acc_u": 0.08523908523908524, + "acc_t": 0.22245322245322247, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-12l_only_clean.json b/wtpsplit/evaluation/evaluation_results/main/sat-12l_only_clean.json new file mode 100644 index 00000000..a37e6bcc --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-12l_only_clean.json @@ -0,0 +1,2450 @@ +{ + "af": { + "opus100": { + "u": 0.7500764759865403, + "t": 0.8072471061902365, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7113202324937725, + "t": 0.7135531135531135, + "punct": null + }, + "ud": { + "u": 0.9947780678851176, + "t": 0.9947780678851176, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9207547169811321, + "t": 0.9033149171270718, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7332511302918208, + "t": 0.7344184200079397, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.6632272857552308, + "t": 0.667027905716608, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.598644578313253, + "t": 0.6335208098987626, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.588686481303931, + "t": 0.6037735849056604, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.9052396878483836, + "t": 0.9077212806026365, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6932350971198928, + "t": 0.6840579710144927, + "punct": null + }, + "opus100": { + "u": 0.7674291938997821, + "t": 0.7642276422764228, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6791290961073235, + "t": 0.7123486682808716, + "punct": null + }, + "ud": { + "u": 0.8596620132255695, + "t": 0.8599545798637397, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7423750811161582, + "t": 0.7881548974943051, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.630438913167395, + "t": 0.6305954140248843, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.7804539138490043, + "t": 0.8011664899257689, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7400511985105889, + "t": 0.7557036657267368, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7177768696362893, + "t": 0.7285238623751387, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.7271721084670725, + "t": 0.7539111000744971, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7400503778337532, + "t": 0.7409565428502064, + "punct": null + }, + "ud": { + "u": 0.9029322548028311, + "t": 0.8973981345115366, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7095681625740897, + "t": 0.7198135198135198, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6981164679453948, + "t": 0.7022792022792022, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9432756324900133, + "t": 0.9452018176958032, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7599225556631171, + "t": 0.7620664564637402, + "punct": null + }, + "ud": { + "u": 0.9895261845386534, + "t": 0.9881422924901185, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7982683982683982, + "t": 0.7960327727468737, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7048669907685586, + "t": 0.7159994218817748, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.8294029101856498, + "t": 0.8535542490646714, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.48019691206086373, + "t": 0.48305489260143203, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5806451612903226, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4390524757361408, + "t": 0.4396167189823228, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.8992768595041322, + "t": 0.9096671949286845, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7061946902654866, + "t": 0.7167630057803468, + "punct": null + }, + "ud": { + "u": 0.9811550151975683, + "t": 0.9829085457271365, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7792943600309039, + "t": 0.8018275271273558, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6913411492560854, + "t": 0.6959902794653705, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8125000000000001, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.576271186440678, + "t": 0.5904761904761905, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9280162216965191, + "t": 0.9579993587688362, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7770045385779123, + "t": 0.777496839443742, + "punct": null + }, + "opus100": { + "u": 0.9048856548856549, + "t": 0.9142253892847717, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7336028751123091, + "t": 0.7593350999759093, + "punct": null + }, + "ud": { + "u": 0.9123587812393016, + "t": 0.9238918316141622, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7610023816920368, + "t": 0.7602659366445053, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6969182768624446, + "t": 0.7107168544713497, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.7372747391716724, + "t": 0.7783995523223279, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6709248850281042, + "t": 0.6644182124789207, + "punct": null + }, + "ud": { + "u": 0.9929906542056075, + "t": 0.9947582993593477, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7296296296296296, + "t": 0.7682539682539683, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9226736566186109, + "t": 0.9310344827586208, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7781504551988501, + "t": 0.7924717691342535, + "punct": null + }, + "ud": { + "u": 0.9375619425173439, + "t": 0.9307923771313942, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8260481712756467, + "t": 0.8316633266533066, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7484212670605012, + "t": 0.747236623300401, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9686073059360731, + "t": 0.9702970297029704, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8440414507772019, + "t": 0.8469038208168643, + "punct": null + }, + "opus100": { + "u": 0.8225966303270564, + "t": 0.856103896103896, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6723404255319149, + "t": 0.7784272051009565, + "punct": null + }, + "ud": { + "u": 0.965675057208238, + "t": 0.9648414985590777, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8366211431461811, + "t": 0.8509052183173589, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7656202065650884, + "t": 0.7658449809402794, + "punct": null + }, + "legal-all-laws": { + "u": 0.8658224319818021, + "t": 0.8732951149295006, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.763142906143795, + "t": 0.7668318453920858, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.6999004657736407, + "t": 0.7838123009084484, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5870611033799433, + "t": 0.5963228141341896, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9316442333069411, + "t": 0.9412080536912751, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.709083119108826, + "t": 0.7436578883788355, + "punct": null + }, + "ud": { + "u": 0.9778325123152709, + "t": 0.976629766297663, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8148148148148148, + "t": 0.8339307048984468, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.705251770259638, + "t": 0.7040539898293808, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9709853490376329, + "t": 0.9676139182198286, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7345801830481496, + "t": 0.7506199078993977, + "punct": null + }, + "opus100": { + "u": 0.9232854432095419, + "t": 0.9134640522875817, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8155727476915399, + "t": 0.8023952095808384, + "punct": null + }, + "ud": { + "u": 0.9248554913294798, + "t": 0.9406345957011258, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7028372324539572, + "t": 0.7090909090909091, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7088539711481738, + "t": 0.713005157994892, + "punct": null + }, + "legal-all-judgements": { + "u": 0.8468375201611653, + "t": 0.8700718423337438, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6781465425894244, + "t": 0.6880411304178919, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9188172043010753, + "t": 0.922077922077922, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8280383257690368, + "t": 0.8278833967046895, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6686825053995681, + "t": 0.6856709628506444, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.980723333945291, + "t": null, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7494086106292384, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9266490765171503, + "t": 0.9318423855165069, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7221731448763251, + "t": 0.75, + "punct": null + }, + "ud": { + "u": 0.9588330632090762, + "t": 0.9581032802858072, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7385187151579505, + "t": 0.7761664564943254, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6821370180897631, + "t": 0.687244480784955, + "punct": null + }, + "legal-all-laws": { + "u": 0.7324895492686906, + "t": 0.8664986627202442, + "punct": null, + "acc_u": 0.01092896174863388, + "acc_t": 0.17486338797814208, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7549703281061608, + "t": 0.7649450233393279, + "punct": null, + "acc_u": 0.03278688524590164, + "acc_t": 0.04371584699453552, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7250387644818482, + "t": 0.7627780602568561, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6109240198183359, + "t": 0.6126634906527547, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9593267882187938, + "t": 0.9479107040641098, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8011782032400588, + "t": 0.7783783783783783, + "punct": null + }, + "opus100": { + "u": 0.8658265381764271, + "t": 0.9054933611038792, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6566191446028513, + "t": 0.7086577022882755, + "punct": null + }, + "ud": { + "u": 0.9411346256446735, + "t": 0.952823691460055, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7519736842105262, + "t": 0.7511045655375552, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7342810278840897, + "t": 0.7443103005394297, + "punct": null + }, + "short-sequences": { + "u": 0.8854222944374401, + "t": 0.8931732264121146, + "punct": null, + "acc_u": 0.43842364532019706, + "acc_t": 0.4729064039408867, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7362542299969711, + "t": 0.7380598209413246, + "punct": null, + "acc_u": 0.09852216748768473, + "acc_t": 0.09359605911330049, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8454925079832966, + "t": 0.8714285714285714, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.608955223880597, + "t": 0.6237320122670441, + "punct": null + }, + "ud": { + "u": 0.9761467889908257, + "t": 0.9764885496183205, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7030545818728093, + "t": 0.7252681764004768, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6195403351341452, + "t": 0.6313638963798317, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.6582742046234837, + "t": 0.6610288935870332, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6263490124210955, + "t": 0.6575771122038445, + "punct": null + }, + "ud": { + "u": 0.9886706948640485, + "t": 0.9946808510638299, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9336203803372802, + "t": 0.9511926605504588, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6913663518982464, + "t": 0.6912597140938309, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9888579387186629, + "t": 0.9870630333058079, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7859976662777131, + "t": 0.8128144029653165, + "punct": null + }, + "opus100": { + "u": 0.9309435951502372, + "t": 0.9392235609103079, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7619271445358401, + "t": 0.7751450676982592, + "punct": null + }, + "ud": { + "u": 0.942763397739701, + "t": 0.9475574712643678, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7862423657987786, + "t": 0.7875335120643432, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7042482003447228, + "t": 0.7058713886300093, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9749582637729549, + "t": 0.9705782888062224, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7515680392691573, + "t": 0.7686768676867686, + "punct": null + }, + "opus100": { + "u": 0.9024896265560166, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6981616075245832, + "t": null, + "punct": null + }, + "ud": { + "u": 0.976315789473684, + "t": 0.9774236387782205, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7286012526096033, + "t": 0.7885572139303482, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7149553908967186, + "t": 0.7156251534043494, + "punct": null + }, + "legal-all-laws": { + "u": 0.9256451789086151, + "t": 0.9438731149022712, + "punct": null, + "acc_u": 0.7058823529411765, + "acc_t": 0.7233115468409586, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8046378931522016, + "t": 0.8267105859583278, + "punct": null, + "acc_u": 0.3159041394335512, + "acc_t": 0.38344226579520696, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8509461042330533, + "t": 0.8486306851059219, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6487591856661709, + "t": 0.6488700192223228, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.6646626586506346, + "t": 0.6951258362535839, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6992896606156275, + "t": 0.6700971983990852, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.8514698298091801, + "t": 0.8461735346813413, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.59913112164297, + "t": 0.6374589266155531, + "punct": null + }, + "ud": { + "u": 0.8629550321199143, + "t": 0.91156462585034, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5538945712037766, + "t": 0.6492027334851936, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5170068027210885, + "t": 0.528, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.8530534351145039, + "t": 0.859542697153523, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6474763406940063, + "t": 0.6690486824475212, + "punct": null + }, + "ud": { + "u": 0.7058823529411764, + "t": 0.7417218543046357, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5703592814371257, + "t": 0.5928393005828477, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.8968725768932541, + "t": 0.9039518450667365, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7088025741208916, + "t": 0.7190745986779981, + "punct": null + }, + "ud": { + "u": 0.9888579387186631, + "t": 0.9902912621359222, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7493975903614457, + "t": 0.7463479415670651, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6863018100032129, + "t": 0.6959216805234417, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9115492957746479, + "t": 0.920245398773006, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.817891373801917, + "t": 0.8105677346824058, + "punct": null + }, + "opus100": { + "u": 0.7568647029455815, + "t": 0.7669795692987299, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5894319027536592, + "t": 0.5809128630705394, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.47425435456931514, + "t": 0.4715804181845401, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8891149542217701, + "t": 0.8991924980463663, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5551382724479345, + "t": 0.62570104852475, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4444444444444444, + "t": 0.4444444444444444, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.900103519668737, + "t": 0.9143161255987228, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6925668088928811, + "t": 0.6961706030726899, + "punct": null + }, + "ud": { + "u": 0.9731258840169731, + "t": 0.9750692520775623, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7933673469387754, + "t": 0.797979797979798, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6524591831544683, + "t": 0.6564690885914596, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9657155496571554, + "t": 0.9523166891587944, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8202224469160767, + "t": 0.8159095848728537, + "punct": null + }, + "opus100": { + "u": 0.699409681227863, + "t": 0.7063197026022305, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5100744236703576, + "t": 0.5594723675233114, + "punct": null + }, + "ud": { + "u": 0.977088948787062, + "t": 0.9963684384285243, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9144781144781146, + "t": 0.9265573770491804, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5642032899582617, + "t": 0.5705635569395787, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9351265822784811, + "t": 0.9438502673796791, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7352806937471474, + "t": 0.7405671431919382, + "punct": null + }, + "ud": { + "u": 0.9595959595959594, + "t": 0.9702970297029703, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6797642436149312, + "t": 0.6922279792746114, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7007836238605468, + "t": 0.7043587513288876, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.8608920120464649, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7462624004471147, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9702602230483272, + "t": 0.9732225300092336, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7233304423243713, + "t": 0.7238095238095238, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6930902497985495, + "t": 0.6973249748767766, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.8863815271582263, + "t": 0.9007015650296817, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7076023391812866, + "t": 0.6955706585423015, + "punct": null + }, + "ud": { + "u": 0.9894620077648364, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.712082262210797, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6868627737938436, + "t": 0.6864718405264176, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.8502604166666666, + "t": 0.8470432771721176, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.552260573650948, + "t": 0.5548345230369889, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3816254416961131, + "t": 0.3660714285714286, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9419009370816599, + "t": 0.9468834688346883, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6512141280353201, + "t": 0.6831560722235963, + "punct": null + }, + "ud": { + "u": 0.8856199339537677, + "t": 0.8665826954752447, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.621559225714793, + "t": 0.6142024824791016, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6938511326860841, + "t": 0.6861564918314703, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.8936170212765957, + "t": 0.9057387691508698, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6665299425758818, + "t": 0.7055016181229774, + "punct": null + }, + "ud": { + "u": 0.9674523007856342, + "t": 0.935064935064935, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.766990291262136, + "t": 0.7731755424063115, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7004598770216504, + "t": 0.69947242206235, + "punct": null + }, + "legal-all-laws": { + "u": 0.8203894181601638, + "t": 0.8230478559495904, + "punct": null, + "acc_u": 0.4928977272727273, + "acc_t": 0.5454545454545454, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.557304060462588, + "t": 0.5579979181076697, + "punct": null, + "acc_u": 0.03977272727272727, + "acc_t": 0.045454545454545456, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8555049651388689, + "t": 0.8559927720515405, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5685242528371491, + "t": 0.5741551972329544, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8605024051309459, + "t": 0.8257403189066059, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7840629611411707, + "t": 0.7544159544159545, + "punct": null + }, + "opus100": { + "u": 0.9085314685314685, + "t": 0.9080748812517463, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8819599109131402, + "t": 0.8793335124966407, + "punct": null + }, + "ud": { + "u": 0.9594320486815416, + "t": 0.9710743801652894, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9090909090909091, + "t": 0.9046153846153847, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9263266950615864, + "t": 0.9283471310305453, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9866814650388457, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5800604229607251, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.7604280410569993, + "t": 0.917211328976035, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3333909138020384, + "t": 0.33210195788695973, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6476325231189044, + "t": 0.6491855757461633, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9624573378839589, + "t": 0.9672316384180791, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8586147681740125, + "t": 0.8457415128052412, + "punct": null + }, + "opus100": { + "u": 0.7640117994100296, + "t": 0.7612826603325415, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7598402738163148, + "t": 0.7599200685127033, + "punct": null + }, + "ud": { + "u": 0.9618736383442265, + "t": 0.9169510807736063, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8331441543700341, + "t": 0.7815384615384615, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7301982568719473, + "t": 0.7492316637594484, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.8959512407488027, + "t": 0.9458937198067633, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6629270780214176, + "t": 0.802701398938736, + "punct": null + }, + "opus100": { + "u": 0.7521141649048625, + "t": 0.7505668934240363, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7569925583782395, + "t": 0.7733172351343193, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8392857142857144, + "t": 0.8501026694045174, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.7559912854030502, + "t": 0.7344701583434835, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6340179041600842, + "t": 0.6381059751972943, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.482708409173644, + "t": 0.47611527832609557, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.7891891891891892, + "t": 0.8003076134324532, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7429116035263282, + "t": 0.7536800785083416, + "punct": null + }, + "ud": { + "u": 0.991953182150695, + "t": 0.996116504854369, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.95499119939653, + "t": 0.984973339796413, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7516809861785579, + "t": 0.7504375863657301, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.810540184453228, + "t": 0.7486321210170583, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6050280490338666, + "t": 0.6689873417721519, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38557711150303736, + "t": 0.3880878256595117, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.8816248809901618, + "t": 0.8820189274447949, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7485786481364497, + "t": 0.7480190174326465, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7645502645502645, + "t": 0.7621359223300971, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.6729297146833682, + "t": 0.8844563366577476, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.37648054145516074, + "t": 0.7647355163727959, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5, + "t": 0.48, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9693877551020408, + "t": 0.9586681974741676, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7645709040844424, + "t": 0.7982878544676297, + "punct": null + }, + "opus100": { + "u": 0.8548107840712342, + "t": 0.8766350346242626, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.642061855670103, + "t": 0.6862281116895409, + "punct": null + }, + "ud": { + "u": 0.9594034797017399, + "t": 0.9689034369885434, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6919770773638969, + "t": 0.6902654867256637, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.696107541974842, + "t": 0.6989010989010989, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9770240700218819, + "t": 0.9725228975853456, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7730530339225993, + "t": 0.7637655417406749, + "punct": null + }, + "opus100": { + "u": 0.8446293124541228, + "t": 0.8766066838046275, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6395301741595787, + "t": 0.7115148539160323, + "punct": null + }, + "ud": { + "u": 0.9515108924806746, + "t": 0.9649083088068825, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6847084708470847, + "t": 0.6862408915559365, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.703201361814288, + "t": 0.7135238095238094, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9245082402977138, + "t": 0.9276368491321761, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.530507605537515, + "t": 0.6050534941953107, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5941043083900227, + "t": 0.5843621399176954, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9390115667718191, + "t": 0.94263811789585, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7091778638123433, + "t": 0.7085792101679529, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6954328342188589, + "t": 0.7001020556932497, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.781037315184229, + "t": 0.8255127844900252, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5842696629213483, + "t": 0.6253731343283583, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5295476158130689, + "t": 0.5344, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.4932682926829268, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8213820078226858, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.808678275763631, + "t": 0.8236091558475416, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9262361523912457, + "t": 0.9312638580931264, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.687759336099585, + "t": 0.6920433518371663, + "punct": null + }, + "ud": { + "u": 0.9397590361445782, + "t": 0.9523809523809523, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5974025974025974, + "t": 0.6190476190476191, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4707112970711297, + "t": 0.4705176551251285, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.8812140240711669, + "t": 0.8816753926701569, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6748554913294798, + "t": 0.6716733161229758, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6893819334389858, + "t": 0.6905848787446506, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.6879606879606881, + "t": 0.8197059582151148, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.44244149272612265, + "t": 0.5047454702329595, + "punct": null + }, + "ud": { + "u": 0.896774193548387, + "t": 0.8951351351351352, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4652206432311144, + "t": 0.4966698382492864, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4579439252336449, + "t": 0.4761904761904762, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.8, + "t": 0.8274067649609714, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8004115226337449, + "t": 0.8269340974212034, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8843176038428935, + "t": 0.8927509185280224, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.7312876398049899, + "t": 0.720143669560012, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7180049328583172, + "t": 0.7120778477389812, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.643934122013454, + "t": 0.6441558441558441, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9240769630785233, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7704497786063855, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9182879377431906, + "t": 0.9486238532110092, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8021778584392014, + "t": 0.7978533094812166, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.763613068545804, + "t": 0.7719924524453057, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9478774852229984, + "t": 0.9486421080935735, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.811460731644922, + "t": 0.7967757694186615, + "punct": null + }, + "ud": { + "u": 0.982323964068386, + "t": 0.9879793932455638, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8600979858464888, + "t": 0.8600217864923747, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.7253914988814317, + "t": 0.7250932338838572, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6321243523316061, + "t": 0.6473656755346896, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5997719498289623, + "t": 0.6138888888888889, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9288174512055108, + "t": 0.9226327944572749, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7870646766169154, + "t": 0.7672663958212421, + "punct": null + }, + "opus100": { + "u": 0.9313464608834486, + "t": 0.9346195069667738, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.745404411764706, + "t": 0.7633136094674556, + "punct": null + }, + "ud": { + "u": 0.9707832064817088, + "t": 0.9735998026153466, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7633844215830359, + "t": 0.7929936305732483, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7092058257763122, + "t": 0.7232493812782065, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9164556962025316, + "t": 0.9301389168512182, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7656628591208031, + "t": 0.7955265610438023, + "punct": null + }, + "opus100": { + "u": 0.7628988965105876, + "t": 0.7623850489469001, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7369985141158989, + "t": 0.7385524372230429, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6182136602451839, + "t": 0.615916955017301, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9158829676071055, + "t": 0.9243386243386242, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7138488422892092, + "t": 0.747278750591576, + "punct": null + }, + "ud": { + "u": 0.9568627450980393, + "t": 0.9646271510516252, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7334685598377282, + "t": 0.7588339222614839, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7177824267782427, + "t": 0.7231542788868424, + "punct": null + }, + "legal-all-laws": { + "u": 0.5461879341997217, + "t": 0.537572595432317, + "punct": null, + "acc_u": 0.017241379310344827, + "acc_t": 0.017241379310344827, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5642605877333239, + "t": 0.5642739377924899, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7896479550166049, + "t": 0.7844919926448092, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.629781108550879, + "t": 0.6341641848223347, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9756771697070203, + "t": 0.959090909090909, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7443486366814263, + "t": 0.725181598062954, + "punct": null + }, + "opus100": { + "u": 0.921993216801461, + "t": 0.9370666666666667, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6955955738771968, + "t": 0.7011135857461024, + "punct": null + }, + "ud": { + "u": 0.7586206896551725, + "t": 0.8676684440135725, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.46604441583521083, + "t": 0.5045289855072463, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6943778601002397, + "t": 0.7001441614608361, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9743589743589745, + "t": 0.9786995515695067, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8308483290488432, + "t": 0.8427397260273972, + "punct": null + }, + "opus100": { + "u": 0.8705054060849887, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6501885211562631, + "t": null, + "punct": null + }, + "ud": { + "u": 0.848249027237354, + "t": 0.8436123348017621, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6430282702443699, + "t": 0.6351851851851852, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7159482052122603, + "t": 0.7316377232252669, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8103186646433992, + "t": 0.8224142737663787, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.690497737556561, + "t": 0.7000241721053905, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5836909871244634, + "t": 0.5916824196597352, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9221118661787768, + "t": 0.9374160623153371, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7310529845741114, + "t": 0.7510020040080161, + "punct": null + }, + "ud": { + "u": 0.9590958019375673, + "t": 0.9749216300940439, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8249322493224932, + "t": 0.8375192209123525, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6987050983366744, + "t": 0.7128911857594028, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9288330716902145, + "t": 0.9344608879492601, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7306205955899069, + "t": 0.7546057479734708, + "punct": null + }, + "ud": { + "u": 0.9624125874125874, + "t": 0.9672131147540983, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7913322632423755, + "t": 0.7911468812877264, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7224157955865272, + "t": 0.7323815309842041, + "punct": null + }, + "short-sequences": { + "u": 0.7918601790481132, + "t": 0.7830115594250628, + "punct": null, + "acc_u": 0.34384164222873903, + "acc_t": 0.27712609970674484, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6239909072085053, + "t": 0.6269180729935142, + "punct": null, + "acc_u": 0.12573313782991202, + "acc_t": 0.12903225806451613, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.914854597851716, + "t": 0.9237788513150832, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6966688727112288, + "t": 0.7140186915887851, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8672566371681415, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6846184819810751, + "t": 0.6833601796261043, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.941956003180493, + "t": 0.9472, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7156549520766773, + "t": 0.7259085580304808, + "punct": null + }, + "ud": { + "u": 0.981541802388708, + "t": 0.9819341126461212, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7989130434782609, + "t": 0.8509803921568628, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7021186887319489, + "t": 0.7057986819022333, + "punct": null + }, + "short-sequences": { + "u": 0.9130309505309505, + "t": 0.9198844847282347, + "punct": null, + "acc_u": 0.65625, + "acc_t": 0.6875, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6556993102392678, + "t": 0.6822591440601308, + "punct": null, + "acc_u": 0.13541666666666666, + "acc_t": 0.16666666666666666, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9223553934340802, + "t": 0.9264590421355667, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7774163568773235, + "t": 0.8025477707006369, + "punct": null + }, + "ud": { + "u": 0.9527851458885942, + "t": 0.953781512605042, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.813314037626628, + "t": 0.8131436978911231, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7424311577666209, + "t": 0.7423702705304707, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9743589743589743, + "t": 0.9704075935231714, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8439538384345208, + "t": 0.8602860286028603, + "punct": null + }, + "opus100": { + "u": 0.6751918158567775, + "t": 0.6853731343283582, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5151705377694079, + "t": 0.5159253945480631, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8947368421052632, + "t": 0.8807339449541284, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5396441758979523, + "t": 0.567483438422859, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.7892401552967276, + "t": 0.7846778874056878, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6298290798407867, + "t": 0.6291374728195216, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.601318235592361, + "t": 0.5970976683515409, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.8111111111111111, + "t": 0.8589290568089154, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6499889307062209, + "t": 0.6716112531969309, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7137931034482757, + "t": 0.7193277310924369, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.6883168316831684, + "t": 0.7358446960942917, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6921690366513119, + "t": 0.7225512528473804, + "punct": null + }, + "ud": { + "u": 0.8642964446670005, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8384879725085911, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6083587696642404, + "t": 0.6418242491657397, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9399189089568744, + "t": 0.948509485094851, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8181981657975185, + "t": 0.8184937691890917, + "punct": null + }, + "opus100": { + "u": 0.9329414907827944, + "t": 0.9378196500672948, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7475283337352303, + "t": 0.7457142857142858, + "punct": null + }, + "ud": { + "u": 0.960960960960961, + "t": 0.96048024012006, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7197549770290965, + "t": 0.7371202113606341, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7294356129307586, + "t": 0.7349415568266601, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9083830781209447, + "t": 0.9130434782608696, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7366705471478463, + "t": 0.7386629266012156, + "punct": null + }, + "ud": { + "u": 0.920152091254753, + "t": 0.9287042777433354, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6826547685443392, + "t": 0.6880434782608695, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.714885922459182, + "t": 0.7196580375582345, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.6715, + "t": 0.6131595029537584, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5940555338287056, + "t": 0.6623586429725363, + "punct": null + }, + "ud": { + "u": 0.9842271293375394, + "t": 0.9852941176470589, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9357218124341412, + "t": 0.9431230610134436, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6473086994471923, + "t": 0.6467291924733086, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.7858823529411765, + "t": 0.7924528301886793, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7269848450576794, + "t": 0.7572102779234399, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7196882217090068, + "t": 0.7305678614579137, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9263565891472868, + "t": 0.9265317438314388, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.673801768264309, + "t": 0.6802325581395349, + "punct": null + }, + "ud": { + "u": 0.9434464404524285, + "t": 0.9504685408299867, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6753569211669771, + "t": 0.6657807308970098, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6701928162715777, + "t": 0.670947655185834, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.8156572335361015, + "t": 0.8134347940173183, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5145505097312327, + "t": 0.5632070831283816, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.738095238095238, + "t": 0.696522153406384, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7287623975851659, + "t": 0.7284427284427284, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.766677340164372, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3774142152100416, + "t": null, + "punct": null + }, + "ud": { + "u": 0.7877094972067038, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.27621113521330437, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.7843137254901961, + "t": 0.8730489073881372, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6310904872389791, + "t": 0.7394422310756972, + "punct": null + }, + "opus100": { + "u": 0.7393162393162394, + "t": 0.7118884424485937, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.588265306122449, + "t": 0.6016466117796074, + "punct": null + }, + "ud": { + "u": 0.9691428571428572, + "t": 0.9910714285714286, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8351648351648352, + "t": 0.8377192982456141, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5887359531883768, + "t": 0.601757551067916, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.8009981285090455, + "t": 0.8595183486238532, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6882818483533316, + "t": 0.6904619076184763, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9843217450579413, + "t": 0.9875346260387812, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.3975488318651858, + "t": 0.42573662056524353, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.92987012987013, + "t": 0.9357394366197184, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.5452229299363056, + "t": 0.5835929387331257, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.25032594524119944, + "t": 0.5042735042735043, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.49253731343283585, + "t": 0.5371386754482254, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.7006711409395974, + "t": 0.8075970272502064, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4917869586859133, + "t": 0.5917542441390461, + "punct": null + }, + "short-sequences": { + "u": 0.863267663982132, + "t": 0.8685264733326602, + "punct": null, + "acc_u": 0.4677754677754678, + "acc_t": 0.4781704781704782, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6533749310199742, + "t": 0.6911678669013269, + "punct": null, + "acc_u": 0.09355509355509356, + "acc_t": 0.13721413721413722, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-1l-sm.json b/wtpsplit/evaluation/evaluation_results/main/sat-1l-sm.json new file mode 100644 index 00000000..bc16d28f --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-1l-sm.json @@ -0,0 +1,1645 @@ +{ + "af": { + "opus100": { + "u": 0.598806860551827, + "t": 0.801516382344977, + "punct": null + }, + "ud": { + "u": 0.9986928104575163, + "t": 0.9986928104575163, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4001996007984032, + "t": 0.4262189215369713, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.26799242424242425, + "t": 0.6443243243243243, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.40825688073394495, + "t": 0.46095954844778925, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.9216730038022813, + "t": 0.9240847784200387, + "punct": null + }, + "opus100": { + "u": 0.5961043733921353, + "t": 0.6196943972835314, + "punct": null + }, + "ud": { + "u": 0.8015810276679841, + "t": 0.8037825059101655, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1128400954653938, + "t": 0.3953082295778925, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.7732984293193716, + "t": 0.799203782035332, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.637619927823255, + "t": 0.666460443894517, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.6385110952040086, + "t": 0.8014480646059594, + "punct": null + }, + "ud": { + "u": 0.8189349112426034, + "t": 0.8746298124383021, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.34089573292582576, + "t": 0.4332084011031751, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.943789415958322, + "t": 0.9447318268445413, + "punct": null + }, + "ud": { + "u": 0.9484004127966976, + "t": 0.9560493827160493, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.46117064423856896, + "t": 0.4606182326231226, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.8275490987355395, + "t": 0.8225591912742751, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.11409513779182025, + "t": 0.2682464454976303, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.8942093541202673, + "t": 0.8938923395445135, + "punct": null + }, + "ud": { + "u": 0.9898688915375448, + "t": 0.9966957044157405, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.36219559335137225, + "t": 0.4018569217950244, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9940828402366864, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.21951219512195122, + "t": 0.3064516129032258, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.965016501650165, + "t": 0.9662698412698413, + "punct": null + }, + "opus100": { + "u": 0.8868253047011028, + "t": 0.9014159764894468, + "punct": null + }, + "ud": { + "u": 0.8908920627487708, + "t": 0.8838667106565491, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42280556131977587, + "t": 0.42526526861057734, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.32270531400966185, + "t": 0.729918509895227, + "punct": null + }, + "ud": { + "u": 0.9923753665689149, + "t": 0.9900642898889539, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9048283561261512, + "t": 0.905902004454343, + "punct": null + }, + "ud": { + "u": 0.9398797595190381, + "t": 0.9530612244897959, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42885999242519884, + "t": 0.4578535684788418, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9522693997071742, + "t": 0.9551622418879055, + "punct": null + }, + "opus100": { + "u": 0.7506329113924051, + "t": 0.7681947681947683, + "punct": null + }, + "ud": { + "u": 0.9310137972405519, + "t": 0.9327680193821926, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4312662374336383, + "t": 0.44431048873226375, + "punct": null + }, + "legal-all-laws": { + "u": 0.7511333158520798, + "t": 0.7138931377419722, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.38178681912872037, + "t": 0.4138642671014776, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7303298029145556, + "t": 0.7435221996908239, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.26195438692366907, + "t": 0.343377546245001, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9394190871369295, + "t": 0.9390681003584229, + "punct": null + }, + "ud": { + "u": 0.9422110552763818, + "t": 0.9388753056234719, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.350365952832746, + "t": 0.4174117075933492, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.8268693009118541, + "t": 0.9676330275229358, + "punct": null + }, + "opus100": { + "u": 0.8909657320872274, + "t": 0.9158928097638632, + "punct": null + }, + "ud": { + "u": 0.9284611425630469, + "t": 0.9247881355932204, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4284306095979248, + "t": 0.43589527027027025, + "punct": null + }, + "legal-all-judgements": { + "u": 0.814894197525921, + "t": 0.8183175167912022, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.18078062728425967, + "t": 0.31343055392811003, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9234246962418762, + "t": 0.9341383095499453, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4301628106255356, + "t": 0.4376858610435253, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9550072568940494, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.8888278891023882, + "t": 0.9022598870056496, + "punct": null + }, + "ud": { + "u": 0.9737258626147515, + "t": 0.9863901490602722, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37759436824857384, + "t": 0.4187545315395151, + "punct": null + }, + "legal-all-laws": { + "u": 0.9045060557523987, + "t": 0.9182986699192894, + "punct": null, + "acc_u": 0.29508196721311475, + "acc_t": 0.3825136612021858, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.4399150853685214, + "t": 0.47869651723131773, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7104359605424839, + "t": 0.7161027929370346, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.1453422160864028, + "t": 0.26496507368443073, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9749303621169917, + "t": 0.963626492942454, + "punct": null + }, + "opus100": { + "u": 0.8646864686468646, + "t": 0.904006453347674, + "punct": null + }, + "ud": { + "u": 0.9311393310677875, + "t": 0.929872002884442, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.31184148451014315, + "t": 0.4179773267016176, + "punct": null + }, + "short-sequences": { + "u": 0.8974419733739167, + "t": 0.9076816220772879, + "punct": null, + "acc_u": 0.4729064039408867, + "acc_t": 0.5221674876847291, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5868210473447151, + "t": 0.5864281691488229, + "punct": null, + "acc_u": 0.029556650246305417, + "acc_t": 0.029556650246305417, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8486424032351242, + "t": 0.8772298006295908, + "punct": null + }, + "ud": { + "u": 0.9938309685379396, + "t": 0.9935324915306437, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2872126757420219, + "t": 0.3665512233270025, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.5332912590722626, + "t": 0.5405272234540527, + "punct": null + }, + "ud": { + "u": 0.9977134146341464, + "t": 0.9988553987027853, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.550229302437847, + "t": 0.5504605328315342, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9610389610389609, + "t": 0.9619891397542155, + "punct": null + }, + "opus100": { + "u": 0.9339622641509434, + "t": 0.9327978580990629, + "punct": null + }, + "ud": { + "u": 0.9359970403255642, + "t": 0.9387464387464387, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.36614730878186963, + "t": 0.4406611719137054, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9612349914236707, + "t": 0.9597523219814241, + "punct": null + }, + "opus100": { + "u": 0.8661679135494597, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9602122015915119, + "t": 0.9666221628838451, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3570672500176416, + "t": 0.4554878786656448, + "punct": null + }, + "legal-all-laws": { + "u": 0.8291674012781539, + "t": 0.8737060666508869, + "punct": null, + "acc_u": 0.5032679738562091, + "acc_t": 0.5751633986928104, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.2701776843198047, + "t": 0.34533075261778245, + "punct": null, + "acc_u": 0.010893246187363835, + "acc_t": 0.02832244008714597, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7216251860392519, + "t": 0.7631318015487888, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2208019252290554, + "t": 0.3008127399908799, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.6339321357285429, + "t": 0.8403990024937656, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.6192816635160681, + "t": 0.8030176026823135, + "punct": null + }, + "ud": { + "u": 0.9818181818181818, + "t": 0.9829268292682927, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2985074626865672, + "t": 0.3132530120481927, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.4428571428571429, + "t": 0.799225931301403, + "punct": null + }, + "ud": { + "u": 0.7075351213282248, + "t": 0.7366120218579235, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.889811738648948, + "t": 0.8809278350515464, + "punct": null + }, + "ud": { + "u": 0.943342776203966, + "t": 0.9432432432432432, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38562425481178675, + "t": 0.40444949277349107, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9262926292629263, + "t": 0.9229910714285714, + "punct": null + }, + "opus100": { + "u": 0.6659412404787813, + "t": 0.7522098659823211, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2721396250808016, + "t": 0.3377372641781573, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8891257995735607, + "t": 0.8964992389649924, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.23076923076923075, + "t": 0.30769230769230765, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9172690763052209, + "t": 0.9360755975541968, + "punct": null + }, + "ud": { + "u": 0.9415292353823089, + "t": 0.9418777943368107, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.16521896489323198, + "t": 0.3700076265403604, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.90741956664478, + "t": 0.9473684210526316, + "punct": null + }, + "opus100": { + "u": 0.6379258365993367, + "t": 0.6477244153884839, + "punct": null + }, + "ud": { + "u": 0.9966974900924702, + "t": 0.9976844194508766, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4525027585515097, + "t": 0.45556249099726315, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9400386847195358, + "t": 0.940980881130507, + "punct": null + }, + "ud": { + "u": 0.9900744416873448, + "t": 0.9888198757763975, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1119359249853487, + "t": 0.38493181991315606, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.8077994428969358, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9312063808574277, + "t": 0.9640831758034026, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.33775723232925736, + "t": 0.44937915836758907, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.9166197183098592, + "t": 0.9139815074250491, + "punct": null + }, + "ud": { + "u": 0.9775095995611629, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4333591416878664, + "t": 0.43979451196591907, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.2600116076610563, + "t": 0.8922670191672175, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.07142857142857142, + "t": 0.14685314685314688, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9530646051905025, + "t": 0.9449492250133618, + "punct": null + }, + "ud": { + "u": 0.9638168427793788, + "t": 0.9592417061611375, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.23468803663423013, + "t": 0.4357682619647355, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.8664563617245006, + "t": 0.8876498466685252, + "punct": null + }, + "ud": { + "u": 0.981859410430839, + "t": 0.9874285714285714, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3899880562912188, + "t": 0.4048074296640263, + "punct": null + }, + "legal-all-laws": { + "u": 0.7947146106617172, + "t": 0.7866469110157553, + "punct": null, + "acc_u": 0.3849431818181818, + "acc_t": 0.46875, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.32938855033230535, + "t": 0.3088533447264671, + "punct": null, + "acc_u": 0.05397727272727273, + "acc_t": 0.048295454545454544, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7519384988845592, + "t": 0.7678155802126032, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.21564356303066126, + "t": 0.2655048042428471, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8562019758507136, + "t": 0.8773148148148148, + "punct": null + }, + "opus100": { + "u": 0.5659259259259259, + "t": 0.7011788826242952, + "punct": null + }, + "ud": { + "u": 0.9679420889348501, + "t": 0.9665271966527197, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7827259003666164, + "t": 0.8411815597577554, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9906336088154271, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.9139966273187183, + "t": 0.9225294278675061, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2708710261049367, + "t": 0.34910001353363107, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9961046188091263, + "t": 0.9846322722283204, + "punct": null + }, + "opus100": { + "u": 0.6798534798534799, + "t": 0.8611996522747031, + "punct": null + }, + "ud": { + "u": 0.9847448711204629, + "t": 0.9842602308499474, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42433397418291674, + "t": 0.6264309918490704, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.8642672312397084, + "t": 0.9050422318914769, + "punct": null + }, + "opus100": { + "u": 0.6810302129767211, + "t": 0.727433628318584, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3787289234760052, + "t": 0.37865748709122204, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.5843270868824532, + "t": 0.7063711911357342, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.22514619883040937, + "t": 0.35607843137254896, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.6786296900489397, + "t": 0.7397029980386663, + "punct": null + }, + "ud": { + "u": 0.9987855234393976, + "t": 0.9975657254138267, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7753145027296463, + "t": 0.7762161132021536, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.776874435411021, + "t": 0.7244094488188977, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.02726014268980939, + "t": 0.2608580508474576, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.8236162361623617, + "t": 0.8722149410222805, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49840255591054317, + "t": 0.5761843790012804, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.9390402075226978, + "t": 0.9380530973451328, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.30769230769230765, + "t": 0.4, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9143173023770038, + "t": 0.9387521465369204, + "punct": null + }, + "opus100": { + "u": 0.8136349155782097, + "t": 0.8223738062755797, + "punct": null + }, + "ud": { + "u": 0.9261410788381743, + "t": 0.9213114754098359, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.31572912934432107, + "t": 0.40300505159535427, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9859154929577465, + "t": 0.9891936824605153, + "punct": null + }, + "opus100": { + "u": 0.8052784036047635, + "t": 0.785027293995321, + "punct": null + }, + "ud": { + "u": 0.9863457532978478, + "t": 0.9872360176375029, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3240495453569127, + "t": 0.41390062774381486, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.8502475247524752, + "t": 0.8715811409221152, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.21926910299003322, + "t": 0.3018181818181818, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9415900486749594, + "t": 0.943264318365152, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.44251926246789586, + "t": 0.4461493313210078, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8392711449551264, + "t": 0.83528102392877, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4114546732255797, + "t": 0.41999441496788603, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.3473707178703906, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7401774397972116, + "t": 0.7429537153137435, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9028901734104046, + "t": 0.9079059223576084, + "punct": null + }, + "ud": { + "u": 0.9523809523809523, + "t": 0.923076923076923, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.32495205625399526, + "t": 0.32319545823195456, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.9007153075822604, + "t": 0.89470871191876, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42477608936298683, + "t": 0.4397712379363756, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.6450884456153556, + "t": 0.7099381835473133, + "punct": null + }, + "ud": { + "u": 0.9222096956031567, + "t": 0.9392265193370166, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.021052631578947368, + "t": 0.24832214765100669, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.7725631768953067, + "t": 0.7704764870756774, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8701734750979295, + "t": 0.8786862087232915, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.6888731396172927, + "t": 0.7558509101415776, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.47644603458556944, + "t": 0.5547385620915033, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9366551815531408, + "t": null, + "punct": null + }, + "ud": { + "u": 0.934720908230842, + "t": 0.9348441926345609, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4675442122186495, + "t": 0.46821586326099485, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9523550231418458, + "t": 0.9518891002989943, + "punct": null + }, + "ud": { + "u": 0.967032967032967, + "t": 0.9675952245594088, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.6173205033308661, + "t": 0.7148721187243449, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1783132530120482, + "t": 0.386892177589852, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9484536082474226, + "t": 0.9452852153667054, + "punct": null + }, + "opus100": { + "u": 0.9337766694375172, + "t": 0.9335180055401662, + "punct": null + }, + "ud": { + "u": 0.9818913480885311, + "t": 0.9852866565195333, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.41516395881687795, + "t": 0.44775997048817473, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.899304865938431, + "t": 0.9338947368421052, + "punct": null + }, + "opus100": { + "u": 0.6976217440543601, + "t": 0.7540773904700991, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4871606749816582, + "t": 0.4720194647201946, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9121676067687349, + "t": 0.9218106995884774, + "punct": null + }, + "ud": { + "u": 0.9274790330537742, + "t": 0.9301895515487748, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4549335165104755, + "t": 0.45387293298520454, + "punct": null + }, + "legal-all-laws": { + "u": 0.6963796272508191, + "t": 0.6308973944151256, + "punct": null, + "acc_u": 0.08620689655172414, + "acc_t": 0.05172413793103448, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.4577408649060269, + "t": 0.4223303079429923, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7578737438881799, + "t": 0.7805533325013817, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.18379273145245, + "t": 0.11036936634520882, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9576584256891162, + "t": 0.9606389047347405, + "punct": null + }, + "opus100": { + "u": 0.9369571308489772, + "t": 0.9356270810210877, + "punct": null + }, + "ud": { + "u": 0.988929889298893, + "t": 0.988929889298893, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.33991037388803425, + "t": 0.40681702560624045, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9438596491228071, + "t": 0.9434628975265017, + "punct": null + }, + "opus100": { + "u": 0.8111206649469762, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8520302821748107, + "t": 0.8711111111111112, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4396690279183285, + "t": 0.47033703160979695, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8338593974175037, + "t": 0.8355452971725332, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4113980409617097, + "t": 0.3962920046349942, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9280089988751407, + "t": 0.9117802430005283, + "punct": null + }, + "ud": { + "u": 0.8803131991051455, + "t": 0.882286995515695, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42931174089068824, + "t": 0.43168654173764903, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9309031556039172, + "t": 0.9273209549071617, + "punct": null + }, + "ud": { + "u": 0.9813124728378966, + "t": 0.986013986013986, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3768232302957313, + "t": 0.41823757553891944, + "punct": null + }, + "short-sequences": { + "u": 0.7858032953524154, + "t": 0.7839318753908197, + "punct": null, + "acc_u": 0.3280791788856305, + "acc_t": 0.32368035190615835, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6752926529319492, + "t": 0.6771202475839573, + "punct": null, + "acc_u": 0.14222873900293256, + "acc_t": 0.15249266862170088, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9311018131101813, + "t": 0.9094725793754921, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39649871595471475, + "t": 0.40040737984253205, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9488017429193899, + "t": 0.9475970676079283, + "punct": null + }, + "ud": { + "u": 0.9696312364425164, + "t": 0.9694323144104804, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3626393492015667, + "t": 0.3879302716573755, + "punct": null + }, + "short-sequences": { + "u": 0.9007207491582493, + "t": 0.9129464285714285, + "punct": null, + "acc_u": 0.640625, + "acc_t": 0.6770833333333334, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6059689153439153, + "t": 0.6202008928571429, + "punct": null, + "acc_u": 0.036458333333333336, + "acc_t": 0.06770833333333333, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9360417238539664, + "t": 0.9279829922933829, + "punct": null + }, + "ud": { + "u": 0.944385026737968, + "t": 0.9413008989952406, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42548639433041385, + "t": 0.46778331069865703, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9418666666666667, + "t": 0.9771332961517011, + "punct": null + }, + "opus100": { + "u": 0.5532217871128515, + "t": 0.5911620294599018, + "punct": null + }, + "ud": { + "u": 0.923076923076923, + "t": 0.981651376146789, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.18572574178027268, + "t": 0.3989637305699482, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.7817292006525286, + "t": 0.7884733292458616, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.41629867523083103, + "t": 0.4239007891770012, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.6752613240418118, + "t": 0.8787640743650169, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.16993464052287582, + "t": 0.5408450704225352, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.2925925925925926, + "t": 0.6825535636204635, + "punct": null + }, + "ud": { + "u": 0.03683640303358614, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.08256595964821521, + "t": 0.5100112485939258, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9507398389211463, + "t": 0.9388201019664967, + "punct": null + }, + "opus100": { + "u": 0.94010989010989, + "t": 0.939917695473251, + "punct": null + }, + "ud": { + "u": 0.9798590130916416, + "t": 0.9804118533400302, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6344361475990625, + "t": 0.6384384689676206, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9051937345424567, + "t": 0.8961072441350865, + "punct": null + }, + "ud": { + "u": 0.9457562220804084, + "t": 0.9432314410480349, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3806155861165685, + "t": 0.4371738257727821, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.48041594454072795, + "t": 0.5403225806451614, + "punct": null + }, + "ud": { + "u": 0.9906735751295338, + "t": 0.9937369519832986, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5101172683375489, + "t": 0.5101172683375489, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.5308134757600658, + "t": 0.8109020742884708, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6214553638409602, + "t": 0.6270714569799815, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9121894858463316, + "t": 0.9107625743645213, + "punct": null + }, + "ud": { + "u": 0.9755766621438263, + "t": 0.9848275862068965, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2828900583131845, + "t": 0.37115498686551984, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.7096774193548386, + "t": 0.867104887110603, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.5431632010081915, + "t": 0.8098495212038302, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.2378160146111699, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8851913477537438, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.8922991071428572, + "t": 0.9159953970080552, + "punct": null + }, + "opus100": { + "u": 0.692191739523666, + "t": 0.7489249090307641, + "punct": null + }, + "ud": { + "u": 0.9833518312985573, + "t": 0.9910313901345292, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.10473702146995344, + "t": 0.3338077243951514, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.42639593908629453, + "t": 0.8852744699390066, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9836734693877551, + "t": 0.9930458970792767, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.2837837837837837, + "t": 0.2860318636532049, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.9298474945533769, + "t": 0.9379128137384412, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4607843137254902, + "t": 0.4694749694749694, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.36338672768878727, + "t": 0.4141689373297003, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4064516129032258, + "t": 0.41058887088060503, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.8111298482293423, + "t": 0.889970788704966, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.330488750969744, + "t": 0.33499377334993774, + "punct": null + }, + "short-sequences": { + "u": 0.8733915125186017, + "t": 0.9382167870053434, + "punct": null, + "acc_u": 0.4781704781704782, + "acc_t": 0.7068607068607069, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6041694576385344, + "t": 0.6068916729617004, + "punct": null, + "acc_u": 0.11226611226611227, + "acc_t": 0.10395010395010396, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-1l.json b/wtpsplit/evaluation/evaluation_results/main/sat-1l.json new file mode 100644 index 00000000..e5db5c63 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-1l.json @@ -0,0 +1,2450 @@ +{ + "af": { + "opus100": { + "u": 0.4740050197203299, + "t": 0.6678949792722249, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4870013891645168, + "t": 0.4878447395301327, + "punct": null + }, + "ud": { + "u": 0.9526184538653367, + "t": 0.9934810951760106, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.47297297297297297, + "t": 0.5714285714285714, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.436697247706422, + "t": 0.4431731502669718, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.15532335498446764, + "t": 0.40687838025239215, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.44655216611125353, + "t": 0.45684620376378976, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4715284715284715, + "t": 0.4742857142857143, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.897080291970803, + "t": 0.8953714507973551, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.41674780915287246, + "t": 0.42550000000000004, + "punct": null + }, + "opus100": { + "u": 0.609072715143429, + "t": 0.608122179798681, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4572916666666666, + "t": 0.46003984945760457, + "punct": null + }, + "ud": { + "u": 0.774721189591078, + "t": 0.8019017432646592, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4685587089593768, + "t": 0.5063091482649842, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3851970885716987, + "t": 0.3959431722139494, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.7330784798740724, + "t": 0.7579585649317838, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5762792922046868, + "t": 0.5763808643401895, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.644286938235065, + "t": 0.6470767356881851, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.45652861207714196, + "t": 0.6101000909918107, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5269482884195192, + "t": 0.5378341640235613, + "punct": null + }, + "ud": { + "u": 0.8330716902145473, + "t": 0.8186732186732187, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.37303370786516854, + "t": 0.3937377690802348, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4015372074065448, + "t": 0.40354601073791985, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.931367292225201, + "t": 0.9365721997300944, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4974874371859297, + "t": 0.5076142131979696, + "punct": null + }, + "ud": { + "u": 0.9386098427194318, + "t": 0.9432404540763673, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4345323741007194, + "t": 0.4556354916067146, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4288685203727952, + "t": 0.4307220628119963, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.8030106410589151, + "t": 0.8018162393162394, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.2798001427551749, + "t": 0.3301734104046242, + "punct": null + }, + "ud": { + "u": 0.9333333333333333, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.27499999999999997, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.19493537325243998, + "t": 0.24157167111326702, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.8482349909817057, + "t": 0.882803943044907, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.41208969775755605, + "t": 0.4180943214629451, + "punct": null + }, + "ud": { + "u": 0.983121113414273, + "t": 0.9931075816601738, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.29174412247129583, + "t": 0.39305159450350013, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3670606729344902, + "t": 0.38026092724994476, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9881656804733728, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.463963963963964, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.25974025974025977, + "t": 0.25225225225225223, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9512036434612882, + "t": 0.9573553719008264, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.3335647344671989, + "t": 0.36668334167083544, + "punct": null + }, + "opus100": { + "u": 0.8696343402225756, + "t": 0.8794557823129252, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.45057941376959776, + "t": 0.47927461139896377, + "punct": null + }, + "ud": { + "u": 0.8668624300515264, + "t": 0.8843497600374576, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3554235170993552, + "t": 0.366871590613906, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3827877507919747, + "t": 0.3935437930215998, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.361284939507718, + "t": 0.5969049373618275, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.46077097505668935, + "t": 0.4641697337085949, + "punct": null + }, + "ud": { + "u": 0.9877693651718115, + "t": 0.9900642898889539, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.38253133845531745, + "t": 0.385593220338983, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.8741478762454116, + "t": 0.8932249322493225, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4386119429276026, + "t": 0.46167323696890056, + "punct": null + }, + "ud": { + "u": 0.8981921979067554, + "t": 0.9298067141403866, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.36826347305389223, + "t": 0.46208742194469227, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4133390582510376, + "t": 0.4366504291347715, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9220338983050848, + "t": 0.9471520845566648, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.4079619517350714, + "t": 0.43744998666311014, + "punct": null + }, + "opus100": { + "u": 0.739305485656769, + "t": 0.7727016356457981, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.38652373660030626, + "t": 0.4521957340025095, + "punct": null + }, + "ud": { + "u": 0.9342560553633218, + "t": 0.9367541766109785, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4044036697247706, + "t": 0.4328638497652582, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39758956360505926, + "t": 0.416403785488959, + "punct": null + }, + "legal-all-laws": { + "u": 0.7594576633080057, + "t": 0.7792309668479116, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.42056365377138477, + "t": 0.49064465706706323, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.691578526504995, + "t": 0.7330234622968677, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.29739446068875136, + "t": 0.31072160591158104, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9092832583972493, + "t": 0.9194721249663346, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4706976744186047, + "t": 0.4704983769333588, + "punct": null + }, + "ud": { + "u": 0.9400244798041616, + "t": 0.9404466501240695, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.46049046321525877, + "t": 0.5272914521112256, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4188006942230723, + "t": 0.42620493807683213, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.7919930374238469, + "t": 0.9506758700028761, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.2827936788595425, + "t": 0.32410284119050836, + "punct": null + }, + "opus100": { + "u": 0.8750349454850435, + "t": 0.7930528375733855, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5448042168674698, + "t": 0.5707607309817255, + "punct": null + }, + "ud": { + "u": 0.8986653484923381, + "t": 0.9139004149377594, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3824561403508772, + "t": 0.39365918097754293, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38124439126533055, + "t": 0.38479292775334234, + "punct": null + }, + "legal-all-judgements": { + "u": 0.7035407141331292, + "t": 0.7859171697354853, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2886026117351331, + "t": 0.31649539624828754, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.8756665731125456, + "t": 0.8132423553196868, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5041476214660572, + "t": 0.544111439425918, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4046712892966999, + "t": 0.4118789549526972, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9578794480755264, + "t": null, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.34446895682319567, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.878539296110082, + "t": 0.9030654515327258, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3945968072042571, + "t": 0.4427899686520376, + "punct": null + }, + "ud": { + "u": 0.9762432689261957, + "t": 0.9874799357945426, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.2814781534314276, + "t": 0.39051522248243553, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38273031676889796, + "t": 0.40390597314643456, + "punct": null + }, + "legal-all-laws": { + "u": 0.8318368312251105, + "t": 0.8318096753971416, + "punct": null, + "acc_u": 0.17486338797814208, + "acc_t": 0.17486338797814208, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.39971416161577017, + "t": 0.5558734842057265, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.00546448087431694, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.6683888281152442, + "t": 0.6888833475490792, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.23414838539551125, + "t": 0.276325105055905, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9579464773347898, + "t": 0.9660167130919222, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.30204523906271163, + "t": 0.3356093523691289, + "punct": null + }, + "opus100": { + "u": 0.8632454923717059, + "t": 0.8626342566421709, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3707502374169041, + "t": 0.37641154328732745, + "punct": null + }, + "ud": { + "u": 0.9184269277004982, + "t": 0.9437765205091938, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.33378280261383675, + "t": 0.341692789968652, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37686994550692443, + "t": 0.3830065359477124, + "punct": null + }, + "short-sequences": { + "u": 0.864256522232845, + "t": 0.8870907230774118, + "punct": null, + "acc_u": 0.3842364532019704, + "acc_t": 0.458128078817734, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.3910998970196787, + "t": 0.4760218391291092, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.009852216748768473, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8284541723666211, + "t": 0.8419864559819413, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3566799080075267, + "t": 0.35880640465793306, + "punct": null + }, + "ud": { + "u": 0.9916692378895402, + "t": 0.991358024691358, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.36748962202315927, + "t": 0.3723083115314953, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3545011374715632, + "t": 0.3555778768284261, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.5004170141784821, + "t": 0.5441586612953208, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4282589676290463, + "t": 0.4221318720169701, + "punct": null + }, + "ud": { + "u": 0.9754098360655737, + "t": 0.9901589704769115, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7371495327102804, + "t": 0.8032564450474898, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5332914572864321, + "t": 0.5493524332810048, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.956273220920263, + "t": 0.9581770983559272, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.3686875994790913, + "t": 0.40809443507588533, + "punct": null + }, + "opus100": { + "u": 0.917401764234162, + "t": 0.9209603452926893, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.44469826765657716, + "t": 0.4430707876370888, + "punct": null + }, + "ud": { + "u": 0.9259525521207764, + "t": 0.9328467153284672, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.37787828947368424, + "t": 0.39558181351143074, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39238134887593673, + "t": 0.401437612313462, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9482526881720431, + "t": 0.9625815310676279, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.3896910985194663, + "t": 0.4277831872768582, + "punct": null + }, + "opus100": { + "u": 0.8536836682122616, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.40139140955837865, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9446589446589446, + "t": 0.9679144385026738, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3483788938334393, + "t": 0.39570277529095793, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4106765150243411, + "t": 0.4246432579765913, + "punct": null + }, + "legal-all-laws": { + "u": 0.9003150485053685, + "t": 0.9128454817097417, + "punct": null, + "acc_u": 0.5925925925925926, + "acc_t": 0.6470588235294118, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.40256371504442773, + "t": 0.5069009120475133, + "punct": null, + "acc_u": 0.023965141612200435, + "acc_t": 0.08278867102396514, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.6902370502551352, + "t": 0.726538384724516, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2542930999004763, + "t": 0.27214432504403707, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.31087662337662336, + "t": 0.6228868660598179, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4666121559007904, + "t": 0.48721132356592994, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.6991368680641183, + "t": 0.5465547530743704, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3611798287345386, + "t": 0.3652275379229871, + "punct": null + }, + "ud": { + "u": 0.9121621621621622, + "t": 0.9561091340450771, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.37202152190622595, + "t": 0.39173014145810664, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2573099415204678, + "t": 0.26455026455026454, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.4194407456724367, + "t": 0.6458593424885559, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4116473873155166, + "t": 0.4048991354466859, + "punct": null + }, + "ud": { + "u": 0.6565272496831432, + "t": 0.6692810457516339, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.36632891660171474, + "t": 0.35555555555555557, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.8515215110178385, + "t": 0.8781853822458695, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4571529745042493, + "t": 0.4745409015025042, + "punct": null + }, + "ud": { + "u": 0.9460227272727274, + "t": 0.9425287356321839, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3555900621118012, + "t": 0.381243628950051, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3952766936855799, + "t": 0.40628609140405875, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9307822172200338, + "t": 0.9318309859154931, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6261530113944654, + "t": 0.6323377960865088, + "punct": null + }, + "opus100": { + "u": 0.5143859649122806, + "t": 0.6094251171971379, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.38734896943852165, + "t": 0.43341604631927205, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3435424137322909, + "t": 0.3462683276375262, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8585437607256681, + "t": 0.8860158311345645, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.23434077967586509, + "t": 0.2588038010061487, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3, + "t": 0.14285714285714285, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9025346224196499, + "t": 0.9106292966684294, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5082444228903977, + "t": 0.512455516014235, + "punct": null + }, + "ud": { + "u": 0.9121813031161473, + "t": 0.9300291545189504, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.34347826086956523, + "t": 0.3436563436563436, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37992945186476956, + "t": 0.37896694695237726, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9228813559322034, + "t": 0.938474870017331, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6007002026902525, + "t": 0.5996827075621364, + "punct": null + }, + "opus100": { + "u": 0.5604674796747967, + "t": 0.4927234927234927, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4078774617067834, + "t": 0.4078774617067834, + "punct": null + }, + "ud": { + "u": 0.9700868446445802, + "t": 0.985592665356909, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.720073103868413, + "t": 0.7201708880073238, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43671569849580316, + "t": 0.4362818590704648, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9230769230769231, + "t": 0.9277301927194862, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.45612632420547666, + "t": 0.4524920664551055, + "punct": null + }, + "ud": { + "u": 0.9734299516908212, + "t": 0.9865030674846625, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.2754098360655738, + "t": 0.27899432278994324, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3765123765123765, + "t": 0.3765029697233087, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.7583190394511148, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5383919484337895, + "t": null, + "punct": null + }, + "ud": { + "u": 0.925287356321839, + "t": 0.9114173228346457, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.38209331651954603, + "t": 0.3847750865051904, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4320128051220488, + "t": 0.4344886606760805, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.8731422505307856, + "t": 0.9035307200444814, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.48347529812606477, + "t": 0.5002886280546469, + "punct": null + }, + "ud": { + "u": 0.9685124864277959, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.31698113207547174, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38236644726771774, + "t": 0.40861538461538466, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.39783357951747905, + "t": 0.7007424328954882, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.11079053664166187, + "t": 0.34208683473389356, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.09448818897637795, + "t": 0.16741405082212257, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9312197743148846, + "t": 0.9378068739770867, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.40583777715408365, + "t": 0.4071983062808751, + "punct": null + }, + "ud": { + "u": 0.7631118152255483, + "t": 0.9072060168716334, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.2566328201768752, + "t": 0.2495868861127636, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4243037974683544, + "t": 0.42898550724637685, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.8502147006819905, + "t": 0.8677531391931605, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3702632340179346, + "t": 0.3864248518585024, + "punct": null + }, + "ud": { + "u": 0.9752252252252251, + "t": 0.9722863741339491, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3548387096774193, + "t": 0.3812765957446809, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3726035416361774, + "t": 0.3972400961314831, + "punct": null + }, + "legal-all-laws": { + "u": 0.7624323805423202, + "t": 0.7645523584179768, + "punct": null, + "acc_u": 0.21306818181818182, + "acc_t": 0.40198863636363635, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.3202226730065487, + "t": 0.3599793252788645, + "punct": null, + "acc_u": 0.008522727272727272, + "acc_t": 0.022727272727272728, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.6691441394773842, + "t": 0.7307688808469813, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2199352711170134, + "t": 0.23222016437742257, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.7895238095238096, + "t": 0.8451790633608814, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5752175714877746, + "t": 0.6143344709897611, + "punct": null + }, + "opus100": { + "u": 0.586132952108649, + "t": 0.7153806847215125, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7097345132743365, + "t": 0.7087492660011744, + "punct": null + }, + "ud": { + "u": 0.9621289662231322, + "t": 0.9719042663891778, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7169811320754716, + "t": 0.7140000000000001, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8412401519016041, + "t": 0.8658846293384932, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9761388286334057, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.2675974403723095, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.829435253850542, + "t": 0.8337595907928389, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.07715648027741656, + "t": 0.2732702379858495, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3711031175059952, + "t": 0.3711718600649972, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9824368825466521, + "t": 0.9823982398239824, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6827309236947792, + "t": 0.6876668446342765, + "punct": null + }, + "opus100": { + "u": 0.5149489975378122, + "t": 0.6924034869240349, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6199649737302976, + "t": 0.619332336821126, + "punct": null + }, + "ud": { + "u": 0.9537836465210766, + "t": 0.89171974522293, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7375132837407012, + "t": 0.7288231949971574, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6168067226890757, + "t": 0.618929457639135, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.8729769494850417, + "t": 0.8984094407388404, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.4333263554532133, + "t": 0.43371166384931176, + "punct": null + }, + "opus100": { + "u": 0.5211422295442064, + "t": 0.5070738827756568, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5340248962655603, + "t": 0.6070038910505836, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5163329820864068, + "t": 0.5148514851485149, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.43918474687705455, + "t": 0.56777727065267, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4650259067357513, + "t": 0.48737864077669907, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3646778042959427, + "t": 0.37410714285714286, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.5339043540328337, + "t": 0.6500798904359736, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6495907050435702, + "t": 0.6432828977533241, + "punct": null + }, + "ud": { + "u": 0.9922779922779923, + "t": 0.995384989069711, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.98095703125, + "t": 0.9811689899730985, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7570720058780309, + "t": 0.7672878630214738, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.543175487465181, + "t": 0.35853327297419646, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5124223602484471, + "t": 0.5030940594059405, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.12567907240736237, + "t": 0.2317497864511466, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.4736842105263158, + "t": 0.7273778548713502, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5688017162120749, + "t": 0.575261604507647, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6052303860523038, + "t": 0.6141935483870967, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.8961996596710153, + "t": 0.8964554842310913, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.0104384133611691, + "t": 0.38496831986017044, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3529411764705882, + "t": 0.32432432432432434, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.8746048472075869, + "t": 0.9053221288515406, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.28598043782021426, + "t": 0.31119691119691123, + "punct": null + }, + "opus100": { + "u": 0.797232570516232, + "t": 0.8005383580080754, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.31454819690113817, + "t": 0.325112455405615, + "punct": null + }, + "ud": { + "u": 0.9287429943955164, + "t": 0.9377049180327869, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3070803500397772, + "t": 0.32952252858103565, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37213333333333337, + "t": 0.3779067561928606, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9672175562178271, + "t": 0.9734900245968844, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.30306161994574343, + "t": 0.32301587301587303, + "punct": null + }, + "opus100": { + "u": 0.7869471413160734, + "t": 0.8090466647580875, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.30059141167395215, + "t": 0.3441336284966794, + "punct": null + }, + "ud": { + "u": 0.9604672057502246, + "t": 0.9730470534490635, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.322674036057376, + "t": 0.33004926108374383, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3832236842105263, + "t": 0.3852400196396873, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.8457738748627881, + "t": 0.8711621233859399, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.26461272674920816, + "t": 0.2737525632262474, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2833052276559865, + "t": 0.2979942693409742, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9242860885512182, + "t": 0.937816920202829, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.438670490973511, + "t": 0.44712182061579653, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4081001076426265, + "t": 0.41916314905126845, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8068577551567103, + "t": 0.8023320377568017, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4952924393723252, + "t": 0.4931586608442503, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.407349735284958, + "t": 0.4104443426477325, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.31852654387865653, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.373134328358209, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6792658549881883, + "t": 0.6955028442631749, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.8674220963172805, + "t": 0.8489054991991457, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5329996872067564, + "t": 0.5405252753459475, + "punct": null + }, + "ud": { + "u": 0.7042253521126761, + "t": 0.6956521739130435, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4390243902439024, + "t": 0.39215686274509803, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3160725585319553, + "t": 0.3195597177222494, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.8475693490799232, + "t": 0.8696642003414912, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4409814323607427, + "t": 0.4600674915635546, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3929170549860205, + "t": 0.41836734693877553, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.6659636171895598, + "t": 0.7083960276858262, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.17437636231533057, + "t": 0.171072319201995, + "punct": null + }, + "ud": { + "u": 0.9024134312696747, + "t": 0.8922742110990206, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.09562841530054646, + "t": 0.15187557182067704, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.10769230769230768, + "t": 0.19354838709677422, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.49522597071928703, + "t": 0.5142540824799335, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6353015472055573, + "t": 0.6344430217669654, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7656799737298869, + "t": 0.8699856115107913, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.5284754156349487, + "t": 0.6118721461187214, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.581842726965913, + "t": 0.5925345862699034, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5587422987040578, + "t": 0.5388480865867801, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9079251090023083, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.49734480864310565, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9213691026827012, + "t": 0.9463601532567051, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3535714285714286, + "t": 0.40551181102362205, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4254846105745848, + "t": 0.44073337751270153, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9415549597855227, + "t": 0.9455727051177905, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5379733879222108, + "t": 0.5400728597449909, + "punct": null + }, + "ud": { + "u": 0.9646653260557312, + "t": 0.9641113982199254, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.40041188584877907, + "t": 0.47616695480365523, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.4748055461616503, + "t": 0.5923492137995775, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.47434292866082606, + "t": 0.5051464766429137, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3829268292682927, + "t": 0.3936063936063936, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9029810298102982, + "t": 0.9182968929804373, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.3042986425339367, + "t": 0.31256830601092894, + "punct": null + }, + "opus100": { + "u": 0.9164665065385641, + "t": 0.9228687415426252, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4669652855543113, + "t": 0.4709651581898278, + "punct": null + }, + "ud": { + "u": 0.9405017921146953, + "t": 0.9575460122699386, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3644918444165621, + "t": 0.3664782174925174, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4124188712187346, + "t": 0.41413618816412623, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9166156982670746, + "t": 0.9235524417885843, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5975831815924516, + "t": 0.6053036126056879, + "punct": null + }, + "opus100": { + "u": 0.45668016194331984, + "t": 0.5969785575048733, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4624553039332539, + "t": 0.6042189854344552, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4939329050678088, + "t": 0.5089430894308944, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.8961919666145018, + "t": 0.92253136933988, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3984984117816922, + "t": 0.4267352185089974, + "punct": null + }, + "ud": { + "u": 0.9238329238329238, + "t": 0.9236145781328008, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.33028269269880006, + "t": 0.3907962016070124, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.40179981525075237, + "t": 0.43768545994065283, + "punct": null + }, + "legal-all-laws": { + "u": 0.5593707485722074, + "t": 0.5383207819332309, + "punct": null, + "acc_u": 0.017241379310344827, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.3756616596304983, + "t": 0.41038814424356446, + "punct": null, + "acc_u": 0.017241379310344827, + "acc_t": 0.017241379310344827, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.6976969093187156, + "t": 0.7227049698506929, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2777151861383879, + "t": 0.29525120087487444, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9505617977528088, + "t": 0.959521094640821, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.2970997944736241, + "t": 0.32809683234612413, + "punct": null + }, + "opus100": { + "u": 0.9076029567053856, + "t": 0.923329682365827, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4468412942989214, + "t": 0.4468412942989214, + "punct": null + }, + "ud": { + "u": 0.7196652719665272, + "t": 0.8651206814955041, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.20845839017735335, + "t": 0.20698306502195277, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38608376556931656, + "t": 0.3894083444645242, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9297544260422614, + "t": 0.9427570093457944, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.37600221177771637, + "t": 0.4393747359526827, + "punct": null + }, + "opus100": { + "u": 0.7730246602918973, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3389694041867955, + "t": null, + "punct": null + }, + "ud": { + "u": 0.7671865973425767, + "t": 0.8103015075376885, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3838731909028256, + "t": 0.403960396039604, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43333933393339336, + "t": 0.4448066875653082, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.7964852607709749, + "t": 0.7965217391304348, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5398622047244094, + "t": 0.5393309222423146, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38253968253968257, + "t": 0.32944228274967574, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9048253798986937, + "t": 0.92001092001092, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.41248448306437313, + "t": 0.4122110464090348, + "punct": null + }, + "ud": { + "u": 0.8744493392070485, + "t": 0.8763290430889759, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.38642714570858283, + "t": 0.38991343620624763, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3851816989948566, + "t": 0.3943352555804009, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9059829059829061, + "t": 0.9261923794297896, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4285470377326276, + "t": 0.4457027300303336, + "punct": null + }, + "ud": { + "u": 0.9587542087542088, + "t": 0.9792207792207791, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.32995352767215885, + "t": 0.35085574572127143, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37201091317605517, + "t": 0.38007150629566305, + "punct": null + }, + "short-sequences": { + "u": 0.7609860587961501, + "t": 0.7904884083661047, + "punct": null, + "acc_u": 0.2467008797653959, + "acc_t": 0.313049853372434, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.4380693542022763, + "t": 0.572848310036386, + "punct": null, + "acc_u": 0.012096774193548387, + "acc_t": 0.09310850439882698, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.898727465535525, + "t": 0.9236303265080245, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3746591820368885, + "t": 0.3779355543418897, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.44210526315789467, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.35051731893837157, + "t": 0.37122051606775364, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9342872284048755, + "t": 0.9448479956954533, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4184523809523809, + "t": 0.43913658881811746, + "punct": null + }, + "ud": { + "u": 0.951271186440678, + "t": 0.964169381107492, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.24474660074165638, + "t": 0.2859226841721371, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3272450532724505, + "t": 0.35157333333333335, + "punct": null + }, + "short-sequences": { + "u": 0.8621824789793541, + "t": 0.9041056166056166, + "punct": null, + "acc_u": 0.5104166666666666, + "acc_t": 0.6458333333333334, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.3930740256386058, + "t": 0.4688491723418194, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.010416666666666666, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9053347280334727, + "t": 0.9252437703141927, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.43943928177665775, + "t": 0.5066548358473825, + "punct": null + }, + "ud": { + "u": 0.9146090534979424, + "t": 0.9456697149004842, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3813559322033898, + "t": 0.444637429439861, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39282445542742084, + "t": 0.43644164498607874, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9638814016172508, + "t": 0.9773605742683601, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.623076923076923, + "t": 0.6179463459759481, + "punct": null + }, + "opus100": { + "u": 0.47274846983386765, + "t": 0.48355263157894735, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3771608171817706, + "t": 0.37789203084832906, + "punct": null + }, + "ud": { + "u": 0.9422222222222223, + "t": 0.9454545454545454, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.658008658008658, + "t": 0.6507936507936508, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3766045748479877, + "t": 0.3927716808317518, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.6718218373028146, + "t": 0.6725, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4321065989847716, + "t": 0.4402420574886535, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42353951890034364, + "t": 0.43652420753824317, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.7040395713107997, + "t": 0.6843335931410756, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4318181818181818, + "t": 0.43890063424947146, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5143824027072758, + "t": 0.5105008077544426, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.39338976219266425, + "t": 0.6330848277251662, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3509463722397476, + "t": 0.6349942062572422, + "punct": null + }, + "ud": { + "u": 0.13786213786213786, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.13894324853228962, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2494835531542984, + "t": 0.4371359815854637, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9116798846431147, + "t": 0.9148065476190476, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7015558698727016, + "t": 0.7288543401813806, + "punct": null + }, + "opus100": { + "u": 0.9325087389083088, + "t": 0.9329715061058345, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6101520226745685, + "t": 0.5931034482758621, + "punct": null + }, + "ud": { + "u": 0.9431762991743565, + "t": 0.9576482311908321, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5928338762214984, + "t": 0.5888671875, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6190046156933574, + "t": 0.6191653630721098, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.8754598003152917, + "t": 0.8872785829307568, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4493280632411067, + "t": 0.46920152091254747, + "punct": null + }, + "ud": { + "u": 0.9122388059701492, + "t": 0.9358255451713396, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.2979472140762463, + "t": 0.31450161928751347, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38830273830578765, + "t": 0.4065711616318904, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.4203120220250841, + "t": 0.4438338451592048, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4620167087623859, + "t": 0.47543511786737164, + "punct": null + }, + "ud": { + "u": 0.9865563598759048, + "t": 0.9864442127215849, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7309027777777778, + "t": 0.7991120976692563, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.506242102602982, + "t": 0.5132021388016096, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.6171305052688463, + "t": 0.6364077669902912, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5130890052356021, + "t": 0.5209258826280103, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6112752022601773, + "t": 0.6244084325254553, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9102308349957253, + "t": 0.9137085137085137, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.460852959898154, + "t": 0.4684807256235828, + "punct": null + }, + "ud": { + "u": 0.898758981058132, + "t": 0.965846994535519, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.31261595547309834, + "t": 0.3087681549220011, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3444444444444445, + "t": 0.3454497012141743, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.7156084656084657, + "t": 0.6509433962264151, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.21323277339732605, + "t": 0.26993429231042443, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.27648578811369506, + "t": 0.6000642467073563, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.45054945054945056, + "t": 0.5405596882748849, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.2949425495340631, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.047040805163548846, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8794788273615636, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.060606060606060615, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.8385354141656662, + "t": 0.8550763461023306, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.349718574108818, + "t": 0.44678362573099417, + "punct": null + }, + "opus100": { + "u": 0.5670982001894537, + "t": 0.6288278775079197, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.24491362763915545, + "t": 0.3548991054711878, + "punct": null + }, + "ud": { + "u": 0.9057971014492753, + "t": 0.9589345172031076, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.2630691399662732, + "t": 0.3758389261744966, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.23985264127360043, + "t": 0.2857595061923792, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.3594228246611281, + "t": 0.724111082273553, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3320839580209895, + "t": 0.45765286745157613, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.971736204576043, + "t": 0.992408557625949, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.24369747899159663, + "t": 0.255206361226808, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.9175257731958764, + "t": 0.9361514751210921, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.40744320927984534, + "t": 0.41850619897187785, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.3604123711340206, + "t": 0.37774725274725274, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4060324825986078, + "t": 0.4026931708881051, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.5882352941176471, + "t": 0.7779690189328745, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.23901773533424284, + "t": 0.30784508440913605, + "punct": null + }, + "short-sequences": { + "u": 0.7864609307019255, + "t": 0.8598707618360697, + "punct": null, + "acc_u": 0.288981288981289, + "acc_t": 0.4698544698544699, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.39114206833872445, + "t": 0.5211824210285274, + "punct": null, + "acc_u": 0.014553014553014554, + "acc_t": 0.0395010395010395, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-3l.json b/wtpsplit/evaluation/evaluation_results/main/sat-3l.json new file mode 100644 index 00000000..f10309a0 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-3l.json @@ -0,0 +1,2450 @@ +{ + "af": { + "opus100": { + "u": 0.7844112769485903, + "t": 0.7988683127572016, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6321919403680409, + "t": 0.6317254174397031, + "punct": null + }, + "ud": { + "u": 0.9909208819714656, + "t": 0.9947780678851176, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7049504950495049, + "t": 0.7879581151832461, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5867486338797814, + "t": 0.599537037037037, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.5796545105566219, + "t": 0.5914305783188949, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5468864468864468, + "t": 0.5660633484162896, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.555735056542811, + "t": 0.5614646904969486, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.8971553610503281, + "t": 0.9114307342922029, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5504538174052322, + "t": 0.5638072143073659, + "punct": null + }, + "opus100": { + "u": 0.6695278969957081, + "t": 0.6698430493273543, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5733140853784285, + "t": 0.5938468876699261, + "punct": null + }, + "ud": { + "u": 0.8293040293040294, + "t": 0.8325859491778774, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6103542234332424, + "t": 0.6903703703703703, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5073835668307459, + "t": 0.5179567254070935, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.7497749774977499, + "t": 0.7454860252287906, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6580440208758793, + "t": 0.6575278810408922, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6848397167440798, + "t": 0.6841040245821779, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.7035175879396985, + "t": 0.7086304401278584, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6387817258883248, + "t": 0.6765834932821496, + "punct": null + }, + "ud": { + "u": 0.8897676717745923, + "t": 0.884708152436083, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5083281924737816, + "t": 0.5755084379056685, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5341989024227012, + "t": 0.538484398216939, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9346787041954328, + "t": 0.9335099337748345, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6414855454737286, + "t": 0.6652152878567973, + "punct": null + }, + "ud": { + "u": 0.9785107446276862, + "t": 0.9800995024875623, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5884732052578362, + "t": 0.6489041684572411, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5676477862973041, + "t": 0.5768660641706116, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.805457301667509, + "t": 0.8201400107700593, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4068148763764804, + "t": 0.4107485604606526, + "punct": null + }, + "ud": { + "u": 0.9615384615384615, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5098039215686274, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3353008926000576, + "t": 0.34059775840597756, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.8769506267587619, + "t": 0.8963689371852637, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5579723850955173, + "t": 0.5851703406813628, + "punct": null + }, + "ud": { + "u": 0.9886159376872379, + "t": 0.9880095923261392, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5201921366304928, + "t": 0.6291879613855764, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5224319306930694, + "t": 0.5353897238727717, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6724890829694322, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.440251572327044, + "t": 0.4444444444444445, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9433587280556475, + "t": 0.9537760416666666, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5305432255337138, + "t": 0.5718999175144349, + "punct": null + }, + "opus100": { + "u": 0.8923709221679939, + "t": 0.902818014221754, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6084361321130123, + "t": 0.6344950848972297, + "punct": null + }, + "ud": { + "u": 0.9153348448819333, + "t": 0.9140816781968311, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5476291852138572, + "t": 0.5764909248055315, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5389466649960322, + "t": 0.5465068586793055, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.7202690308774076, + "t": 0.7397260273972602, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5991106950620173, + "t": 0.5980916918780544, + "punct": null + }, + "ud": { + "u": 0.9912536443148688, + "t": 0.9924109748978401, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6026936026936027, + "t": 0.6562500000000001, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9086675291073739, + "t": 0.9207188160676533, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5993157576977259, + "t": 0.6512552821277654, + "punct": null + }, + "ud": { + "u": 0.9552529182879378, + "t": 0.9529411764705882, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6082824168363884, + "t": 0.6883365200764818, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5767705855348273, + "t": 0.5946022862021534, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.966499162479062, + "t": 0.9703306018649337, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6133979015334947, + "t": 0.6744897959183673, + "punct": null + }, + "opus100": { + "u": 0.78234037502967, + "t": 0.83564875491481, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.533381191672649, + "t": 0.6405919661733616, + "punct": null + }, + "ud": { + "u": 0.9644087256027555, + "t": 0.9651229273870783, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6267397722479966, + "t": 0.6682998530132288, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5927172708239253, + "t": 0.6185299690834746, + "punct": null + }, + "legal-all-laws": { + "u": 0.8670709299778934, + "t": 0.8678598702979, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5335568105967087, + "t": 0.6885652827057314, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7686534328567418, + "t": 0.7767043315951652, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.49200016940806296, + "t": 0.5407954641079867, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9202841357537491, + "t": 0.9304324469513833, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5878606219557887, + "t": 0.618832148243913, + "punct": null + }, + "ud": { + "u": 0.9753694581280787, + "t": 0.9791921664626683, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6009463722397477, + "t": 0.7039627039627039, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5374388223052912, + "t": 0.5551754838105056, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.966621592769198, + "t": 0.9675849731663686, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.4961703560306371, + "t": 0.5446704885596875, + "punct": null + }, + "opus100": { + "u": 0.9037837837837838, + "t": 0.8946532556908418, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6892554614355774, + "t": 0.6937656999314913, + "punct": null + }, + "ud": { + "u": 0.9387129724208376, + "t": 0.9412355600200905, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5666167664670658, + "t": 0.5907563025210084, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5459693402904179, + "t": 0.5514292354171508, + "punct": null + }, + "legal-all-judgements": { + "u": 0.860244037398626, + "t": 0.860415428179353, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5328636152274224, + "t": 0.5491487542093547, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9032608695652175, + "t": 0.9032082653616096, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6945770065075921, + "t": 0.7145324451023933, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5510230179028133, + "t": 0.5519399249061326, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9843579483448527, + "t": null, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5309613410879234, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9110469692993965, + "t": 0.9226666666666666, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5678280207561157, + "t": 0.6090293453724606, + "punct": null + }, + "ud": { + "u": 0.9697355845810767, + "t": 0.9698331193838255, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.48693502824858753, + "t": 0.5917901938426454, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5311842470919846, + "t": 0.5385982402149885, + "punct": null + }, + "legal-all-laws": { + "u": 0.8014508233904071, + "t": 0.852749657949208, + "punct": null, + "acc_u": 0.0273224043715847, + "acc_t": 0.1912568306010929, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.6499323482162638, + "t": 0.6494958072339356, + "punct": null, + "acc_u": 0.00546448087431694, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.749505934625553, + "t": 0.7572088104559261, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.45343066148723027, + "t": 0.477205729311395, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9591892632155574, + "t": 0.9583101723179545, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5229173636667781, + "t": 0.6000996015936254, + "punct": null + }, + "opus100": { + "u": 0.8460606060606062, + "t": 0.8933263268523385, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4904884318766067, + "t": 0.5262706412181, + "punct": null + }, + "ud": { + "u": 0.9280055115397864, + "t": 0.9275312066574202, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.538188697091511, + "t": 0.5698424606151538, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5675106392124835, + "t": 0.5762997472369531, + "punct": null + }, + "short-sequences": { + "u": 0.8921858085778527, + "t": 0.8915558848927472, + "punct": null, + "acc_u": 0.47783251231527096, + "acc_t": 0.4729064039408867, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5791776286071589, + "t": 0.6073876789084955, + "punct": null, + "acc_u": 0.024630541871921183, + "acc_t": 0.03940886699507389, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8221843833617125, + "t": 0.8461343472750317, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.45865834633385333, + "t": 0.47301772842392364, + "punct": null + }, + "ud": { + "u": 0.9702850212249848, + "t": 0.9739503524364083, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5120505728960885, + "t": 0.5403470118424677, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4666749719696026, + "t": 0.47458357265939116, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.5675529028757461, + "t": 0.5691881918819188, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5445371628177761, + "t": 0.5727902946273831, + "punct": null + }, + "ud": { + "u": 0.9845806694245957, + "t": 0.9882797731568997, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.850099933377748, + "t": 0.8829147506190308, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5950909253784824, + "t": 0.6070574162679425, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9755147468002225, + "t": 0.9767054908485857, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5206400000000001, + "t": 0.611837413834086, + "punct": null + }, + "opus100": { + "u": 0.9130096078940534, + "t": 0.9258570289662502, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6081967213114754, + "t": 0.6250569476082005, + "punct": null + }, + "ud": { + "u": 0.9380849532037436, + "t": 0.9331872946330778, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5512367491166078, + "t": 0.6051568810189499, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5501196594609439, + "t": 0.5585624222670155, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9730269730269729, + "t": 0.9706972044459415, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5434694702790133, + "t": 0.6314547064030688, + "punct": null + }, + "opus100": { + "u": 0.8732394366197183, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5374721317098267, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9749670619235836, + "t": 0.9736147757255936, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5227447956823439, + "t": 0.6238738738738738, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5405559312382106, + "t": 0.5773268019594121, + "punct": null + }, + "legal-all-laws": { + "u": 0.9374714856549669, + "t": 0.9366931074528413, + "punct": null, + "acc_u": 0.681917211328976, + "acc_t": 0.673202614379085, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.6354405736174986, + "t": 0.7217960788277703, + "punct": null, + "acc_u": 0.11546840958605664, + "acc_t": 0.2113289760348584, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7746987897476786, + "t": 0.8095148860280578, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.4320462077529347, + "t": 0.46737914513985795, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.6491985203452527, + "t": 0.6769950306927799, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6444153577661431, + "t": 0.6323713927227103, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.8229166666666666, + "t": 0.8183448629259543, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5046974821495678, + "t": 0.5216680294358136, + "punct": null + }, + "ud": { + "u": 0.8725701943844493, + "t": 0.9080717488789238, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4684014869888476, + "t": 0.5328798185941043, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39263803680981596, + "t": 0.4096385542168674, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.8156748911465892, + "t": 0.831180811808118, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.547314578005115, + "t": 0.5623409669211197, + "punct": null + }, + "ud": { + "u": 0.6807453416149069, + "t": 0.6822033898305085, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.438813349814586, + "t": 0.49432739059967584, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.8789907312049433, + "t": 0.8880146865984788, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5850173504796897, + "t": 0.5899117846641032, + "punct": null + }, + "ud": { + "u": 0.9737206085753803, + "t": 0.96986301369863, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5094696969696969, + "t": 0.5398633257403189, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5378124246564333, + "t": 0.5430568499534018, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.92041147807255, + "t": 0.9133367929423974, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7666844634276562, + "t": 0.7640941434044882, + "punct": null + }, + "opus100": { + "u": 0.7147208121827412, + "t": 0.716081718177056, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5277995301487861, + "t": 0.5281018027571579, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4002125963327133, + "t": 0.404445727482679, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8378506894912031, + "t": 0.8839309428950863, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4719852818197023, + "t": 0.4830111902339776, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.33333333333333337, + "t": 0.29787234042553196, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.8936936936936936, + "t": 0.9100026392187912, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5948103792415169, + "t": 0.6055531070956368, + "punct": null + }, + "ud": { + "u": 0.9415121255349499, + "t": 0.9426934097421203, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5371747211895911, + "t": 0.5704142011834319, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5002094041500095, + "t": 0.5117397089754046, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9546946815495733, + "t": 0.9553279581608194, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7168784029038113, + "t": 0.7408859270874167, + "punct": null + }, + "opus100": { + "u": 0.6293532338308458, + "t": 0.6039215686274509, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4716384601078668, + "t": 0.505911330049261, + "punct": null + }, + "ud": { + "u": 0.9620915032679739, + "t": 0.9655172413793104, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8689350976685569, + "t": 0.8784985182746131, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4822718319107025, + "t": 0.48745680563658395, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9233576642335767, + "t": 0.935244161358811, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5989827060020346, + "t": 0.6167093320921573, + "punct": null + }, + "ud": { + "u": 0.9695493300852619, + "t": 0.9684466019417476, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4180522565320665, + "t": 0.46025104602510464, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.520038706555923, + "t": 0.5292000359938811, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.8531658219715899, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6183727626898536, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9758812615955473, + "t": 0.9669499527856469, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5215157353885677, + "t": 0.5588723051409619, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.558703819661866, + "t": 0.5706435029250133, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.8656167979002626, + "t": 0.8885254837830472, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5939075169844401, + "t": 0.5981136415919024, + "punct": null + }, + "ud": { + "u": 0.9845474613686535, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5083056478405317, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5237374325530841, + "t": 0.5353942439903276, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.8167680865449629, + "t": 0.8325820991629105, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4529717253317946, + "t": 0.4719748559455212, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2839506172839506, + "t": 0.2755555555555556, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9374496644295301, + "t": 0.9445809445809445, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5177132146204312, + "t": 0.5672430355427475, + "punct": null + }, + "ud": { + "u": 0.7343636216522372, + "t": 0.7828062205137166, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3916676907951333, + "t": 0.4250782638125053, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5574387947269303, + "t": 0.5570776255707762, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.870213823968175, + "t": 0.8938489488710095, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5001619695497246, + "t": 0.5644038294168843, + "punct": null + }, + "ud": { + "u": 0.9632925472747498, + "t": 0.9547960308710033, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5309200603318249, + "t": 0.5870445344129555, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.516047475244048, + "t": 0.5441979221693961, + "punct": null + }, + "legal-all-laws": { + "u": 0.8720041289545027, + "t": 0.8661166030013528, + "punct": null, + "acc_u": 0.5227272727272727, + "acc_t": 0.5923295454545454, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.4513554968069439, + "t": 0.4796426486171296, + "punct": null, + "acc_u": 0.028409090909090908, + "acc_t": 0.036931818181818184, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8317903228233894, + "t": 0.8437422714651226, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.3701218702300787, + "t": 0.40893302803976406, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8649193548387096, + "t": 0.8707037643207857, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6511046269278866, + "t": 0.6847935548841894, + "punct": null + }, + "opus100": { + "u": 0.8314606741573033, + "t": 0.8459783228750712, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8147928994082839, + "t": 0.8126410835214447, + "punct": null + }, + "ud": { + "u": 0.9611451942740287, + "t": 0.9708939708939709, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8252032520325203, + "t": 0.8240081383519837, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9028356719309576, + "t": 0.9007327684909548, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9878721058434398, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.40437158469945356, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.7570032573289902, + "t": 0.8388232335931608, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.27926582945464123, + "t": 0.30674689540391753, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4822146042979837, + "t": 0.5002446510386548, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9709821428571429, + "t": 0.9796143250688706, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7564966313763234, + "t": 0.7758346581875993, + "punct": null + }, + "opus100": { + "u": 0.8029678483099754, + "t": 0.7991083867372527, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7095837366892546, + "t": 0.72024302678818, + "punct": null + }, + "ud": { + "u": 0.9584457636265514, + "t": 0.8998282770463653, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7836257309941521, + "t": 0.7841880341880343, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6936574509971754, + "t": 0.6914849514965592, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.8936562860438293, + "t": 0.9226560557075354, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5192455144916425, + "t": 0.632172633643943, + "punct": null + }, + "opus100": { + "u": 0.7044228694714132, + "t": 0.6954225352112676, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7189922480620156, + "t": 0.762536023054755, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6601073345259392, + "t": 0.6795740561471443, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.7022564667033572, + "t": 0.6991596638655463, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5997045790251108, + "t": 0.5912627169359667, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43696275071633234, + "t": 0.4288107202680067, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.723721998851235, + "t": 0.7371763556424035, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6917258766903507, + "t": 0.7108433734939757, + "punct": null + }, + "ud": { + "u": 0.996361872422993, + "t": 0.9963601067702014, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9818269929731039, + "t": 0.9826254826254825, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7468495346662509, + "t": 0.7571237241952616, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.7720151269584009, + "t": 0.6772558296721864, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5394839718530102, + "t": 0.5918301704728208, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.34949711402205097, + "t": 0.35319502074688797, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.8411042944785276, + "t": 0.8414896891351185, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6869940636805181, + "t": 0.6996152707901746, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6738609112709831, + "t": 0.6842105263157895, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.6784110535405872, + "t": 0.883720930232558, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.32064985036340315, + "t": 0.6255307104443816, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43243243243243246, + "t": 0.1818181818181818, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9630459126539754, + "t": 0.9654403567447046, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.44363432417274257, + "t": 0.5540349221330817, + "punct": null + }, + "opus100": { + "u": 0.8255984367366878, + "t": 0.8487981390540191, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.463448275862069, + "t": 0.4956268221574344, + "punct": null + }, + "ud": { + "u": 0.970873786407767, + "t": 0.9717969379532634, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.46738620366025335, + "t": 0.5194621372965323, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.513854104551779, + "t": 0.5212375010682848, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9751082251082251, + "t": 0.9766177270255574, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.49437118044387257, + "t": 0.5500122880314574, + "punct": null + }, + "opus100": { + "u": 0.8258317025440313, + "t": 0.8538042066995586, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4680067001675042, + "t": 0.5108568760214802, + "punct": null + }, + "ud": { + "u": 0.9637664435725827, + "t": 0.9628278221208666, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4722596081950052, + "t": 0.484304932735426, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5434464293184956, + "t": 0.550970984692712, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.8854059609455294, + "t": 0.8963350785340314, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.38134576948700866, + "t": 0.45334451667016146, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.45150501672240806, + "t": 0.4669603524229075, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9301470588235294, + "t": 0.9301103520756698, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5623762376237624, + "t": 0.5627105211016445, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5423466057441253, + "t": 0.5492592429770959, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.7761341222879684, + "t": 0.8097534833869239, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5620886353663888, + "t": 0.5799404170804369, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4605475040257649, + "t": 0.4789607455521039, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.735408560311284, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7971785999467661, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7742803336023675, + "t": 0.7735238890047986, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.8988639512330285, + "t": 0.9008958566629339, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6183083511777301, + "t": 0.6288209606986901, + "punct": null + }, + "ud": { + "u": 0.8354430379746834, + "t": 0.8915662650602411, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5238095238095238, + "t": 0.5161290322580646, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38515607945863345, + "t": 0.38282002933165726, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.8579725448785639, + "t": 0.8737071311921611, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5695504664970313, + "t": 0.5726569217540842, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5420867526377492, + "t": 0.5581736866697817, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.622358816749904, + "t": 0.7730960481549333, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.32906976744186045, + "t": 0.3451706982329731, + "punct": null + }, + "ud": { + "u": 0.8672032193158955, + "t": 0.8898216159496327, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3257529194837124, + "t": 0.3537626066718386, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.32456140350877194, + "t": 0.3269961977186312, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.7411083540115797, + "t": 0.7488009592326139, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7815642458100559, + "t": 0.7835665376600179, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8993600930773706, + "t": 0.9174597873879891, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.6981450252951097, + "t": 0.7029676014157364, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.669540958660918, + "t": 0.6764466177669112, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5889847924373202, + "t": 0.5893300248138958, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9206019719771666, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6626349892008639, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9256198347107438, + "t": 0.9103815439219167, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6021798365122616, + "t": 0.649795918367347, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6358329991534108, + "t": 0.6493737054936384, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9478494623655914, + "t": 0.9497840172786177, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6854009595613434, + "t": 0.6951663832888025, + "punct": null + }, + "ud": { + "u": 0.9856156501726121, + "t": 0.9859879897054618, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6626799557032116, + "t": 0.7025435073627844, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.6949277137956383, + "t": 0.6952063573442707, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6082425390810043, + "t": 0.6153846153846154, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.48290598290598297, + "t": 0.5114503816793894, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9352841868317388, + "t": 0.9291784702549575, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.49277266754270693, + "t": 0.5421800947867298, + "punct": null + }, + "opus100": { + "u": 0.9241379310344827, + "t": 0.9333693013218235, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6146769809742839, + "t": 0.6290467625899281, + "punct": null + }, + "ud": { + "u": 0.9529780564263323, + "t": 0.9575551782682513, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5386576040781649, + "t": 0.5700854700854701, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5663984773769357, + "t": 0.5703107228970474, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9242454527283629, + "t": 0.9285859613428282, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6975626501888088, + "t": 0.7243222604047347, + "punct": null + }, + "opus100": { + "u": 0.685590867016353, + "t": 0.6916210768787792, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6801365964712578, + "t": 0.6737525834071451, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5368502715283165, + "t": 0.5473856209150327, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9174553101997897, + "t": 0.9227479283614006, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5674157303370786, + "t": 0.5884599066610098, + "punct": null + }, + "ud": { + "u": 0.966183574879227, + "t": 0.9668428640076886, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5214285714285714, + "t": 0.5906155832974602, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5696105489113769, + "t": 0.59254968362891, + "punct": null + }, + "legal-all-laws": { + "u": 0.5911212659933321, + "t": 0.542344896275228, + "punct": null, + "acc_u": 0.017241379310344827, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.542679507146995, + "t": 0.5479502384622081, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7704945056829777, + "t": 0.7704016269930583, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.4497643794189914, + "t": 0.48208843650518585, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.97465564738292, + "t": 0.9642354266403831, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.4873868046571798, + "t": 0.5528002229033157, + "punct": null + }, + "opus100": { + "u": 0.9111688311688311, + "t": 0.9290082424886998, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5826296743063933, + "t": 0.5835942391984972, + "punct": null + }, + "ud": { + "u": 0.731631863882444, + "t": 0.8020164986251146, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.2565115861325669, + "t": 0.306145251396648, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5405813514533786, + "t": 0.5430595930232558, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9723943661971831, + "t": 0.9715877437325905, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5639044943820225, + "t": 0.6483790523690773, + "punct": null + }, + "opus100": { + "u": 0.8281212121212121, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.47039897039897033, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8267108167770421, + "t": 0.8345567476002258, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4753157290470723, + "t": 0.5160126296797475, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5650107264543811, + "t": 0.5671547645866185, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.791953414505029, + "t": 0.8038603462957705, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.619200734956362, + "t": 0.6180257510729613, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.47763347763347763, + "t": 0.4835924006908463, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9135416666666667, + "t": 0.9296685529506872, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5793905372894947, + "t": 0.6070763500931099, + "punct": null + }, + "ud": { + "u": 0.9483315392895587, + "t": 0.9512064343163539, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6287477954144621, + "t": 0.6383399209486166, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5498450961252811, + "t": 0.552510374390077, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9163636363636364, + "t": 0.9287039491121124, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5817888799355357, + "t": 0.6057977630677928, + "punct": null + }, + "ud": { + "u": 0.9681257968550786, + "t": 0.9699828473413379, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5923827510229775, + "t": 0.6169415292353823, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5728550781763238, + "t": 0.5806296331953402, + "punct": null + }, + "short-sequences": { + "u": 0.780581296652166, + "t": 0.7562668338140054, + "punct": null, + "acc_u": 0.27675953079178883, + "acc_t": 0.21664222873900293, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5448322046317181, + "t": 0.583781616602017, + "punct": null, + "acc_u": 0.07074780058651027, + "acc_t": 0.1030058651026393, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.8972496107939804, + "t": 0.9106904825379899, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5552135436706425, + "t": 0.5643645279934614, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7175572519083969, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5111874761359297, + "t": 0.5368938861560084, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9402390438247012, + "t": 0.9450080085424453, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6074074074074074, + "t": 0.6165104047564601, + "punct": null + }, + "ud": { + "u": 0.9795479009687836, + "t": 0.9807692307692307, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4648526077097506, + "t": 0.5894160583941607, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5377235772357724, + "t": 0.5432924248836225, + "punct": null + }, + "short-sequences": { + "u": 0.8825378036315538, + "t": 0.9237668870481371, + "punct": null, + "acc_u": 0.53125, + "acc_t": 0.6979166666666666, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5371028847796939, + "t": 0.5840039156445407, + "punct": null, + "acc_u": 0.005208333333333333, + "acc_t": 0.041666666666666664, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9132231404958677, + "t": 0.9293837609098122, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6231512522184973, + "t": 0.6821368141165095, + "punct": null + }, + "ud": { + "u": 0.9502878074306647, + "t": 0.9490278507619547, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6115269461077844, + "t": 0.6875602700096433, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5745520302482329, + "t": 0.5937197131226981, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.976464148877942, + "t": 0.9705063995548135, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7222222222222223, + "t": 0.8012854847348688, + "punct": null + }, + "opus100": { + "u": 0.6047322540473226, + "t": 0.5884590995561192, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4624394184168013, + "t": 0.4879032258064516, + "punct": null + }, + "ud": { + "u": 0.9953917050691244, + "t": 0.9953488372093023, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.803088803088803, + "t": 0.852017937219731, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.45673494723774055, + "t": 0.49339207048458145, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.764804469273743, + "t": 0.7597278911564627, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5485951174573929, + "t": 0.5470127326150833, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5319790509442945, + "t": 0.534402566158781, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.7955854126679462, + "t": 0.8168103448275863, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5556946182728411, + "t": 0.566102526367427, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6105919003115265, + "t": 0.6214285714285714, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.6796154600745535, + "t": 0.7070933094652048, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6672992977794647, + "t": 0.6950633464394933, + "punct": null + }, + "ud": { + "u": 0.7270429654591406, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.718181818181818, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5168539325842697, + "t": 0.5751582964697718, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.934524895130403, + "t": 0.9378612716763006, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7766497461928934, + "t": 0.7896451846488052, + "punct": null + }, + "opus100": { + "u": 0.9317204301075268, + "t": 0.9352829677768751, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6920980926430519, + "t": 0.6929521931986201, + "punct": null + }, + "ud": { + "u": 0.9631106679960119, + "t": 0.9644110275689224, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6672613737734167, + "t": 0.6663716814159292, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6797985781990521, + "t": 0.6821150855365474, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.883435582822086, + "t": 0.8904392764857881, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5820003854307189, + "t": 0.6113671274961597, + "punct": null + }, + "ud": { + "u": 0.9268897149938042, + "t": 0.9253547193090685, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4483018867924528, + "t": 0.48765432098765427, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5403494837172359, + "t": 0.5467955925342928, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.513496143958869, + "t": 0.5193494111048794, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5409440175631175, + "t": 0.5405527865881287, + "punct": null + }, + "ud": { + "u": 0.977319587628866, + "t": 0.9782833505687694, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9169169169169169, + "t": 0.9222903885480573, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5519951297802866, + "t": 0.5513932057364087, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.7630911188004614, + "t": 0.7650646499146132, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6511531269478495, + "t": 0.6809329165664822, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6656437795678303, + "t": 0.6677215189873417, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9113853056646101, + "t": 0.9113565562163692, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.565416285452882, + "t": 0.5675024108003858, + "punct": null + }, + "ud": { + "u": 0.9075520833333334, + "t": 0.9534883720930233, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.46061814556331, + "t": 0.4630102040816326, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49144684252597914, + "t": 0.49995674366294657, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.8031032637774211, + "t": 0.8028923406534547, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4024314214463841, + "t": 0.4518739352640545, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.6111869031377899, + "t": 0.7019400352733686, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.728586917238887, + "t": 0.7258426966292135, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.6727192484710927, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3023930384336475, + "t": null, + "punct": null + }, + "ud": { + "u": 0.7698630136986302, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.16648764769065522, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.8405185408501658, + "t": 0.8743257820927723, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.554676048079742, + "t": 0.591304347826087, + "punct": null + }, + "opus100": { + "u": 0.5558210993513145, + "t": 0.6413268832066343, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.2899969409605384, + "t": 0.4466128729592795, + "punct": null + }, + "ud": { + "u": 0.9451575262543758, + "t": 0.9788182831661092, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5379494007989347, + "t": 0.5921192758253461, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.33584541062801937, + "t": 0.3677350427350427, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.8210023866348449, + "t": 0.8476672287802137, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6144000000000001, + "t": 0.6097435897435898, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9652406417112299, + "t": 0.9701181375955525, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.29934406678592723, + "t": 0.3368189323059989, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.9100126742712293, + "t": 0.9173838209982788, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4569954128440368, + "t": 0.4609130706691682, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.2650887573964497, + "t": 0.42563940637827596, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4532967032967033, + "t": 0.4561182761874804, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.6088004822182037, + "t": 0.7478532396565183, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.36464968152866245, + "t": 0.46249999999999997, + "punct": null + }, + "short-sequences": { + "u": 0.8337844010142457, + "t": 0.8730279976492102, + "punct": null, + "acc_u": 0.3970893970893971, + "acc_t": 0.5072765072765073, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5289969936568553, + "t": 0.5794579932176974, + "punct": null, + "acc_u": 0.029106029106029108, + "acc_t": 0.05405405405405406, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-3l_lora.json b/wtpsplit/evaluation/evaluation_results/main/sat-3l_lora.json new file mode 100644 index 00000000..4c13a649 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-3l_lora.json @@ -0,0 +1,1477 @@ +{ + "af": { + "opus100": { + "u": 0.885282596530498, + "t": 0.8852275900586428, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6072607260726073, + "t": 0.6372093023255814, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.674547983310153, + "t": 0.7587808417997097, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4330175913396482, + "t": 0.5676190476190477, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.9289827255278311, + "t": 0.931060606060606, + "punct": null + }, + "opus100": { + "u": 0.7940403155127083, + "t": 0.7906602254428341, + "punct": null + }, + "ud": { + "u": 0.7429130009775171, + "t": 0.8661538461538462, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4391732133323164, + "t": 0.5870677307141395, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.8171344165435747, + "t": 0.8504415011037528, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7300928998009291, + "t": 0.736307350373075, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.8921029794619613, + "t": 0.8943601488691669, + "punct": null + }, + "ud": { + "u": 0.905286343612335, + "t": 0.912, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5709212450386463, + "t": 0.6174430937423513, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.962080173347779, + "t": 0.9641499185225421, + "punct": null + }, + "ud": { + "u": 0.9930209371884346, + "t": 0.9935226706527155, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6034011337112372, + "t": 0.6704096485755874, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.8878796480272494, + "t": 0.8861317893575958, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.14537862972100968, + "t": 0.4604699022466129, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.9444293846570886, + "t": 0.9461307082307903, + "punct": null + }, + "ud": { + "u": 0.9987966305655835, + "t": 0.9987966305655835, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5851551250163634, + "t": 0.6430861621456563, + "punct": null + } + }, + "ceb": { + "ted2020-corrupted-asr": { + "u": 0.12903225806451613, + "t": 0.3529411764705882, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9827642276422764, + "t": 0.9851325145442793, + "punct": null + }, + "opus100": { + "u": 0.9502460360852925, + "t": 0.949986335064225, + "punct": null + }, + "ud": { + "u": 0.9506858632808073, + "t": 0.9516129032258065, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6155917425310938, + "t": 0.6620981557996574, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.8307307932542161, + "t": 0.8300751879699247, + "punct": null + }, + "ud": { + "u": 0.9970811441914769, + "t": 0.9964953271028038, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9521479064709081, + "t": 0.9524067063277447, + "punct": null + }, + "ud": { + "u": 0.9850746268656716, + "t": 0.987090367428004, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6324642556770395, + "t": 0.6879657037868735, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9923230025589992, + "t": 0.9931972789115646, + "punct": null + }, + "opus100": { + "u": 0.902027027027027, + "t": 0.9006547110731569, + "punct": null + }, + "ud": { + "u": 0.9659224441833137, + "t": 0.9684579439252335, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6828370055241603, + "t": 0.7167508417508418, + "punct": null + }, + "legal-all-laws": { + "u": 0.9627034208088494, + "t": 0.966368191398839, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.874883102046527, + "t": 0.8809695099173611, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9611729568286724, + "t": 0.9611729568286724, + "punct": null + }, + "ud": { + "u": 0.972568578553616, + "t": 0.9890643985419199, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5783148889945006, + "t": 0.6550971735931395, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9867034803458548, + "t": 0.9865412445730827, + "punct": null + }, + "opus100": { + "u": 0.9491617090319092, + "t": 0.9477370689655171, + "punct": null + }, + "ud": { + "u": 0.9655891553701772, + "t": 0.9675425038639877, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5984358144552319, + "t": 0.6714831251935184, + "punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9573021484906175, + "t": 0.9575394665215025, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5909272581934453, + "t": 0.6459244854966779, + "punct": null + } + }, + "es": { + "opus100": { + "u": 0.9574700109051253, + "t": 0.9582537517053206, + "punct": null + }, + "ud": { + "u": 0.9958050984188448, + "t": 0.9961290322580645, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5791621327529923, + "t": 0.6473567584678694, + "punct": null + }, + "legal-all-laws": { + "u": 0.9402611551848725, + "t": 0.9427306110622854, + "punct": null, + "acc_u": 0.5191256830601093, + "acc_t": 0.5355191256830601, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7989462167034019, + "t": 0.8050100030146816, + "punct": null, + "acc_u": 0.08196721311475409, + "acc_t": 0.08743169398907104, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9911651021535063, + "t": 0.9898267803134451, + "punct": null + }, + "opus100": { + "u": 0.9441821716189949, + "t": 0.9469634514976641, + "punct": null + }, + "ud": { + "u": 0.9754979728538693, + "t": 0.9769487946507127, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6420057009587976, + "t": 0.6830920850015398, + "punct": null + }, + "short-sequences": { + "u": 0.9216181020020738, + "t": 0.9066144208913438, + "punct": null, + "acc_u": 0.5566502463054187, + "acc_t": 0.45320197044334976, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6767176142647279, + "t": 0.6883712408506577, + "punct": null, + "acc_u": 0.10837438423645321, + "acc_t": 0.1330049261083744, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.9288025889967638, + "t": 0.9278794402583422, + "punct": null + }, + "ud": { + "u": 0.9996910719802286, + "t": 0.9996910719802286, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.46516798418972327, + "t": 0.5696757230499562, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.7454344216934146, + "t": 0.7406438105208061, + "punct": null + }, + "ud": { + "u": 0.999236641221374, + "t": 0.9996181748759068, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.29549812802483794, + "t": 0.6531572100470329, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9876335019673975, + "t": 0.9864303517031293, + "punct": null + }, + "opus100": { + "u": 0.9635671560630777, + "t": 0.9630635524171646, + "punct": null + }, + "ud": { + "u": 0.9753086419753086, + "t": 0.9769949676491733, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6264603725923586, + "t": 0.6664283525686855, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9906040268456376, + "t": 0.9909547738693467, + "punct": null + }, + "ud": { + "u": 0.9892761394101877, + "t": 0.9892761394101877, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5985939069300301, + "t": 0.679759845324107, + "punct": null + }, + "legal-all-laws": { + "u": 0.9874580062049924, + "t": 0.9832933110415377, + "punct": null, + "acc_u": 0.8801742919389978, + "acc_t": 0.8496732026143791, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8619316273746731, + "t": 0.8615419611361653, + "punct": null, + "acc_u": 0.5206971677559913, + "acc_t": 0.485838779956427, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.8879003558718862, + "t": 0.8879003558718862, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.910025706940874, + "t": 0.9064507120915946, + "punct": null + }, + "ud": { + "u": 0.9902200488997556, + "t": 0.9878048780487806, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4507042253521127, + "t": 0.4666666666666667, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.9352084379708688, + "t": 0.9450777202072539, + "punct": null + }, + "ud": { + "u": 0.8146453089244853, + "t": 0.8224489795918367, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.9435483870967741, + "t": 0.9463467241844163, + "punct": null + }, + "ud": { + "u": 0.9874826147426982, + "t": 0.9874476987447698, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5626255860683188, + "t": 0.6293802526170935, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9563294637921502, + "t": 0.9536279323513367, + "punct": null + }, + "opus100": { + "u": 0.7973977695167286, + "t": 0.8054452637549631, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38260698861405573, + "t": 0.5259005742792504, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8943642027754177, + "t": 0.9103410341034103, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.26666666666666666, + "t": 0.3333333333333333, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9411764705882353, + "t": 0.9412742382271467, + "punct": null + }, + "ud": { + "u": 0.9495548961424333, + "t": 0.9636098981077147, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4784710017574692, + "t": 0.6125203407676846, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9697380307136405, + "t": 0.9734950584007188, + "punct": null + }, + "opus100": { + "u": 0.8119953863898501, + "t": 0.8148947652455477, + "punct": null + }, + "ud": { + "u": 0.998678122934567, + "t": 0.998678122934567, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43437790878063914, + "t": 0.6040573973280554, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.963123644251627, + "t": 0.9634047167253997, + "punct": null + }, + "ud": { + "u": 0.9962917181705809, + "t": 0.995049504950495, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.528202947845805, + "t": 0.6229991161740155, + "punct": null + } + }, + "hy": { + "ud": { + "u": 0.9809885931558935, + "t": 0.9832089552238806, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.574226664865595, + "t": 0.6523297491039426, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.9390344827586207, + "t": 0.9407530454042081, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5790207931973693, + "t": 0.6391036304922204, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.9230769230769231, + "t": 0.9228187919463087, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.0, + "t": 0.28025477707006374, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9659863945578232, + "t": 0.9659863945578232, + "punct": null + }, + "ud": { + "u": 0.9707614865588519, + "t": 0.967721384582714, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5895230648944487, + "t": 0.6187775677378702, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.942627345844504, + "t": 0.942627345844504, + "punct": null + }, + "ud": { + "u": 0.9953917050691244, + "t": 0.9965477560414269, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5613571577556838, + "t": 0.6390472312703583, + "punct": null + }, + "legal-all-laws": { + "u": 0.9412967772493975, + "t": 0.9647519766590481, + "punct": null, + "acc_u": 0.8181818181818182, + "acc_t": 0.8323863636363636, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7608781391014017, + "t": 0.7776205988148323, + "punct": null, + "acc_u": 0.47017045454545453, + "acc_t": 0.46732954545454547, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.939311098961181, + "t": 0.9460043196544277, + "punct": null + }, + "opus100": { + "u": 0.9052987598647125, + "t": 0.9050279329608939, + "punct": null + }, + "ud": { + "u": 0.9801876955161626, + "t": 0.9801876955161626, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9466529586474755, + "t": 0.9491012934654797, + "punct": null + } + }, + "jv": {}, + "ka": { + "opus100": { + "u": 0.9335149863760217, + "t": 0.9332970323985841, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5141320832758859, + "t": 0.6014236598711926, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9988901220865705, + "t": 0.9977827050997783, + "punct": null + }, + "opus100": { + "u": 0.9219101123595506, + "t": 0.9207977207977209, + "punct": null + }, + "ud": { + "u": 0.9696969696969698, + "t": 0.8005050505050504, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7302504816955684, + "t": 0.7387701700828609, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.9129994941831058, + "t": 0.9202880556245344, + "punct": null + }, + "opus100": { + "u": 0.8703187867533272, + "t": 0.8778718258766627, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.682230869001297, + "t": 0.7278165503489532, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.8276324614352785, + "t": 0.8394113883557262, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2593144560357675, + "t": 0.47391304347826085, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.8204994797086368, + "t": 0.8183683940482299, + "punct": null + }, + "ud": { + "u": 0.9992709599027946, + "t": 0.9992709599027946, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6539682539682541, + "t": 0.7766915109863517, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.9091448931116389, + "t": 0.9094662341492186, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1789352296751874, + "t": 0.454708934902122, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.9198832306195265, + "t": 0.920388349514563, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.631578947368421, + "t": 0.7199017199017198, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.9740740740740741, + "t": 0.97531512605042, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37499999999999994, + "t": 0.1904761904761905, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.982002249718785, + "t": 0.9837352776219853, + "punct": null + }, + "opus100": { + "u": 0.9274553571428571, + "t": 0.9257617728531857, + "punct": null + }, + "ud": { + "u": 0.9802955665024631, + "t": 0.9822294022617124, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5955432106558929, + "t": 0.6309417485362707, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9942068965517241, + "t": 0.9936761066813308, + "punct": null + }, + "opus100": { + "u": 0.9295302013422819, + "t": 0.9281370923161968, + "punct": null + }, + "ud": { + "u": 0.9905070618198657, + "t": 0.9894106813996317, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5972176866305271, + "t": 0.653832145272907, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9554879734586674, + "t": 0.9540071605618287, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2924901185770751, + "t": 0.5034324942791762, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9551918433056078, + "t": 0.9545211342964153, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5922586462291493, + "t": 0.6373367377000884, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8696830127336765, + "t": 0.8646218931782126, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2149954832881662, + "t": 0.5246698041597085, + "punct": null + } + }, + "mn": { + "ted2020-corrupted-asr": { + "u": 0.8255135387488328, + "t": 0.8311081441922564, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9525921818685887, + "t": 0.9493392070484581, + "punct": null + }, + "ud": { + "u": 0.9647058823529412, + "t": 0.9523809523809523, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.307980580870454, + "t": 0.5302016477764122, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.9409166206515738, + "t": 0.9379461834157056, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5763212282255683, + "t": 0.6317014508495616, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.8943044906900329, + "t": 0.8922659430122117, + "punct": null + }, + "ud": { + "u": 0.9094827586206896, + "t": 0.9094827586206896, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.0, + "t": 0.36458333333333337, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.8600910470409711, + "t": 0.866977829638273, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9529994872671339, + "t": 0.9545888296379456, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.7625760974046778, + "t": 0.7732558139534884, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5813190092509699, + "t": 0.6321652355534927, + "punct": null + } + }, + "nl": { + "ud": { + "u": 0.9711090400745573, + "t": 0.9600742804085421, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7336683417085427, + "t": 0.7490865463270981, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9638292085939625, + "t": 0.9630836047774157, + "punct": null + }, + "ud": { + "u": 0.9931192660550459, + "t": 0.9908519153802172, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.7826358525921299, + "t": 0.7957544463568561, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3587628865979381, + "t": 0.5196850393700787, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9810055865921787, + "t": 0.9810055865921787, + "punct": null + }, + "opus100": { + "u": 0.959804454101032, + "t": 0.959804454101032, + "punct": null + }, + "ud": { + "u": 0.9926749179085628, + "t": 0.9893563101875317, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6135867471426737, + "t": 0.6528031767594963, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9565033783783785, + "t": 0.9606659729448492, + "punct": null + }, + "opus100": { + "u": 0.7660441426146011, + "t": 0.7764265668849392, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5314834578441835, + "t": 0.5897644191714054, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9535956580732701, + "t": 0.9536208299430432, + "punct": null + }, + "ud": { + "u": 0.9769008662175168, + "t": 0.977587029089175, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6344242577704627, + "t": 0.6735973092799266, + "punct": null + }, + "legal-all-laws": { + "u": 0.6821491431050434, + "t": 0.7827947885292934, + "punct": null, + "acc_u": 0.017241379310344827, + "acc_t": 0.06896551724137931, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.24914385522456498, + "t": 0.30097136112809814, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9927657206455203, + "t": 0.9927616926503341, + "punct": null + }, + "opus100": { + "u": 0.9735391400220507, + "t": 0.9732413793103448, + "punct": null + }, + "ud": { + "u": 0.9946977730646872, + "t": 0.9946977730646872, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5756680542500335, + "t": 0.6381572256686666, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9869835880022637, + "t": 0.9876819708846584, + "punct": null + }, + "ud": { + "u": 0.9210866752910738, + "t": 0.9274447949526814, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6002714405739029, + "t": 0.6532451923076923, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8550643536653609, + "t": 0.8590381426202323, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3430321592649311, + "t": 0.5256849315068493, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9648021828103683, + "t": 0.9648021828103683, + "punct": null + }, + "ud": { + "u": 0.9628032345013479, + "t": 0.9690170940170941, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6089266049102806, + "t": 0.661879766267208, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9550712940543449, + "t": 0.9525596354864648, + "punct": null + }, + "ud": { + "u": 0.9934867564046894, + "t": 0.9922212618841832, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6382699868938401, + "t": 0.6820700470465237, + "punct": null + }, + "short-sequences": { + "u": 0.9460695686685424, + "t": 0.9416314257589918, + "punct": null, + "acc_u": 0.8009530791788856, + "acc_t": 0.782624633431085, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7682513051464664, + "t": 0.7292216432885145, + "punct": null, + "acc_u": 0.36363636363636365, + "acc_t": 0.2631964809384164, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9544706527701592, + "t": 0.9545951859956237, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4694049904030711, + "t": 0.6171184589415152, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9619358346927678, + "t": 0.9614340032590984, + "punct": null + }, + "ud": { + "u": 0.9913793103448275, + "t": 0.9967914438502674, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5246252676659529, + "t": 0.6257904588455506, + "punct": null + }, + "short-sequences": { + "u": 0.9607018849206349, + "t": 0.9660361050986052, + "punct": null, + "acc_u": 0.8541666666666666, + "acc_t": 0.8645833333333334, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.700277904965405, + "t": 0.6691220238095238, + "punct": null, + "acc_u": 0.20833333333333334, + "acc_t": 0.109375, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9592882178484767, + "t": 0.959007551240561, + "punct": null + }, + "ud": { + "u": 0.9654439128123338, + "t": 0.964968152866242, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6603785609585113, + "t": 0.703783840835928, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9823204419889503, + "t": 0.9812775330396475, + "punct": null + }, + "opus100": { + "u": 0.7789948453608248, + "t": 0.8078549848942598, + "punct": null + }, + "ud": { + "u": 0.9953917050691244, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.275355524300672, + "t": 0.5456488821590808, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.853932584269663, + "t": 0.8562446413260932, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.34233668341708545, + "t": 0.5828417326816113, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.9096486335750139, + "t": 0.9212022745735174, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5317073170731708, + "t": 0.6407407407407406, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.7291905526255447, + "t": 0.7368913857677903, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5817916583780917, + "t": 0.6623412226994426, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9838560029690111, + "t": 0.9815905743740796, + "punct": null + }, + "opus100": { + "u": 0.9538125170811698, + "t": 0.9536026200873361, + "punct": null + }, + "ud": { + "u": 0.9853164556962026, + "t": 0.9848484848484849, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6943747322029749, + "t": 0.7246109635091905, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9441760601180891, + "t": 0.9470556455969746, + "punct": null + }, + "ud": { + "u": 0.9819539514623523, + "t": 0.9814814814814814, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5951401388531756, + "t": 0.650630126025205, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.6872509960159362, + "t": 0.7195357833655707, + "punct": null + }, + "ud": { + "u": 0.9947970863683663, + "t": 0.9947970863683663, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5251396648044694, + "t": 0.6384233979790372, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.872684504557483, + "t": 0.8761904761904762, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7004129071723505, + "t": 0.7151411462788707, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9490392648287386, + "t": 0.948073701842546, + "punct": null + }, + "ud": { + "u": 0.9937629937629938, + "t": 0.993745656706046, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5143222688179686, + "t": 0.6105850117771475, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.9068501003152766, + "t": 0.9076923076923078, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.8313840155945419, + "t": 0.8663003663003662, + "punct": null + } + }, + "yo": {}, + "zh": { + "ersatz": { + "u": 0.952054794520548, + "t": 0.9495118549511855, + "punct": null + }, + "opus100": { + "u": 0.9041174776849985, + "t": 0.9053708439897697, + "punct": null + }, + "ud": { + "u": 0.9932885906040269, + "t": 0.9932885906040269, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.734876422126324, + "t": 0.7593248593456969, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.9185533666568657, + "t": 0.920011894142135, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.987688098495212, + "t": 0.988826815642458, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.12239902080783355, + "t": 0.3838489774514945, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.9380764163372859, + "t": 0.9387934830471159, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.37338044758539457, + "t": 0.5507142857142857, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.24530663329161448, + "t": 0.4829086389061529, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.2546623794212219, + "t": 0.5210256410256409, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.9142318567389256, + "t": 0.9207828518173345, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.3847133757961783, + "t": 0.5092186128182616, + "punct": null + }, + "short-sequences": { + "u": 0.9782410725653264, + "t": 0.9753754347140544, + "punct": null, + "acc_u": 0.8711018711018711, + "acc_t": 0.8586278586278586, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6836295327543963, + "t": 0.6804737983454006, + "punct": null, + "acc_u": 0.15176715176715178, + "acc_t": 0.11850311850311851, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-3l_no_ll.json b/wtpsplit/evaluation/evaluation_results/main/sat-3l_no_ll.json new file mode 100644 index 00000000..4027c6bc --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-3l_no_ll.json @@ -0,0 +1,2450 @@ +{ + "af": { + "opus100": { + "u": 0.6598530820824018, + "t": 0.7818317200297841, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.32717904680120224, + "t": 0.5672514619883041, + "punct": null + }, + "ud": { + "u": 0.9858064516129033, + "t": 0.9934469200524245, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7094861660079052, + "t": 0.7989756722151089, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5826050769870995, + "t": 0.5806198509219301, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.47680995475113125, + "t": 0.5055203194738078, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5603926589842083, + "t": 0.5563322368421053, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5555555555555557, + "t": 0.5596638655462185, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.8898519321054533, + "t": 0.9062259800153728, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.561573373676248, + "t": 0.5004156275976724, + "punct": null + }, + "opus100": { + "u": 0.6479713603818615, + "t": 0.6511759705298951, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5668530757498729, + "t": 0.5637878123629987, + "punct": null + }, + "ud": { + "u": 0.820916905444126, + "t": 0.827850038255547, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5412101000476418, + "t": 0.6813020439061318, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5229694172453954, + "t": 0.5233644859813085, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.7509459158691297, + "t": 0.7500000000000001, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6668316831683168, + "t": 0.6579082946934569, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.691846921797005, + "t": 0.6959400867165944, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.6666666666666667, + "t": 0.7117924528301887, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.532150776053215, + "t": 0.6340160284951024, + "punct": null + }, + "ud": { + "u": 0.8970448045757865, + "t": 0.9034786869181775, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4685050798258345, + "t": 0.5308134757600658, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5198776758409787, + "t": 0.5186704384724188, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9388518024032042, + "t": 0.926255230125523, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.546097012528108, + "t": 0.6007311129163282, + "punct": null + }, + "ud": { + "u": 0.9831181727904666, + "t": 0.9825610363726957, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5612879619465788, + "t": 0.5833333333333333, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.547394540942928, + "t": 0.5513934129569309, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.7943156320119672, + "t": 0.822198275862069, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.37602369750827674, + "t": 0.39834024896265563, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5714285714285715, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.32692196615260205, + "t": 0.3406616562478051, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.902542372881356, + "t": 0.9032086979581013, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5134474327628362, + "t": 0.530214424951267, + "punct": null + }, + "ud": { + "u": 0.9845605700712589, + "t": 0.9907046476761618, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4382493138812653, + "t": 0.611968589222854, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5181833417127535, + "t": 0.5181565422529277, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6569767441860466, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4354838709677419, + "t": 0.39560439560439564, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9653846153846154, + "t": 0.9610894941634242, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.4922093487814622, + "t": 0.5525227460711332, + "punct": null + }, + "opus100": { + "u": 0.894575230296827, + "t": 0.9024896265560166, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5361334156886968, + "t": 0.589249076733689, + "punct": null + }, + "ud": { + "u": 0.9171885122003888, + "t": 0.9192698218942462, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.52069006169686, + "t": 0.5262169992247113, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5240883977900552, + "t": 0.5355866731047803, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.6871597822606467, + "t": 0.7349429556911647, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4272863568215892, + "t": 0.5646571560055224, + "punct": null + }, + "ud": { + "u": 0.9901105293775451, + "t": 0.9924021040327293, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5821474773609314, + "t": 0.6082051282051282, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9047864127637674, + "t": 0.9152008401155158, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6244295302013424, + "t": 0.6012699802934093, + "punct": null + }, + "ud": { + "u": 0.9618320610687023, + "t": 0.958614051973051, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6168091168091168, + "t": 0.6774483378256964, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5816720754133828, + "t": 0.5855296444505773, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9526916802610115, + "t": 0.9679039910689365, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5311300283758971, + "t": 0.6523855890944498, + "punct": null + }, + "opus100": { + "u": 0.7749941465698901, + "t": 0.8387431835886783, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5314842578710645, + "t": 0.6141373194831519, + "punct": null + }, + "ud": { + "u": 0.9627118644067797, + "t": 0.964203233256351, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5559222588925559, + "t": 0.656298600311042, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5807365439093485, + "t": 0.5974404328373739, + "punct": null + }, + "legal-all-laws": { + "u": 0.8343385738474086, + "t": 0.8754949622706542, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.4647154569671972, + "t": 0.673220716520376, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7862029418028487, + "t": 0.7866154534210487, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.47044297938879476, + "t": 0.5473817178297633, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9206932773109244, + "t": 0.9292553191489361, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5802409638554218, + "t": 0.5673263484672099, + "punct": null + }, + "ud": { + "u": 0.9685230024213075, + "t": 0.969549330085262, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5217391304347826, + "t": 0.6590649942987457, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5225101769376487, + "t": 0.5332781380801251, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9707254985150615, + "t": 0.9771604496312737, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.4704911591355599, + "t": 0.5527920151065552, + "punct": null + }, + "opus100": { + "u": 0.9133425034387895, + "t": 0.9105820105820106, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6075149984212188, + "t": 0.6623655913978495, + "punct": null + }, + "ud": { + "u": 0.9467871485943776, + "t": 0.9490670700958144, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5487900078064012, + "t": 0.5478294275835573, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5439936073870194, + "t": 0.5450639935558936, + "punct": null + }, + "legal-all-judgements": { + "u": 0.8835832241270046, + "t": 0.8910497666549781, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5277924718648596, + "t": 0.5338885400175334, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9057127010537993, + "t": 0.9079125033756414, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6357294510160753, + "t": 0.6844547563805105, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5315487571701721, + "t": 0.5438962909614693, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9870176703930761, + "t": null, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.49136868064118366, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9149159663865547, + "t": 0.9183293429103484, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5625405055087491, + "t": 0.5429553264604812, + "punct": null + }, + "ud": { + "u": 0.9716446124763705, + "t": 0.9745899002894821, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.40311614730878187, + "t": 0.5557215416791156, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5168965517241378, + "t": 0.5179078501419804, + "punct": null + }, + "legal-all-laws": { + "u": 0.5913426034933152, + "t": 0.5897314932344037, + "punct": null, + "acc_u": 0.04371584699453552, + "acc_t": 0.00546448087431694, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.604022955192762, + "t": 0.6430362448883582, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7630319932272605, + "t": 0.7690519356711966, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.47157596602672125, + "t": 0.5076053778146637, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9603854389721628, + "t": 0.9639416460225708, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5038978271686847, + "t": 0.5769691165908547, + "punct": null + }, + "opus100": { + "u": 0.8455757575757576, + "t": 0.89358372456964, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5165659008464328, + "t": 0.5095088819226751, + "punct": null + }, + "ud": { + "u": 0.9189646421925224, + "t": 0.9306108323239315, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5212692254399336, + "t": 0.5227236986947633, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.559131573205324, + "t": 0.5633617241541574, + "punct": null + }, + "short-sequences": { + "u": 0.30132937937699517, + "t": 0.7021570486469835, + "punct": null, + "acc_u": 0.009852216748768473, + "acc_t": 0.17733990147783252, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.3269796736521152, + "t": 0.554655988465032, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.029556650246305417, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.82656288007784, + "t": 0.8336614173228346, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4477611940298508, + "t": 0.4381846635367762, + "punct": null + }, + "ud": { + "u": 0.9725821030430853, + "t": 0.9879815100154082, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.48559822747415066, + "t": 0.5185185185185185, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4577207200745894, + "t": 0.45761749254579015, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.5302690582959642, + "t": 0.5585585585585585, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.514751334644563, + "t": 0.5344214270767943, + "punct": null + }, + "ud": { + "u": 0.967122275581825, + "t": 0.989044200982244, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8681739130434781, + "t": 0.8696260048933939, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6127571611379072, + "t": 0.6141375490887121, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9709160097852677, + "t": 0.9788170563961486, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5037831021437579, + "t": 0.5949890537582097, + "punct": null + }, + "opus100": { + "u": 0.9199372056514914, + "t": 0.9277364505844846, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5844698023935431, + "t": 0.5868969875710974, + "punct": null + }, + "ud": { + "u": 0.9315164220824599, + "t": 0.9392304926285509, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.558344827586207, + "t": 0.5672356993111709, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5586805033338347, + "t": 0.5594246438162866, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9698952879581152, + "t": 0.9719499831023994, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5059215396002961, + "t": 0.596144578313253, + "punct": null + }, + "opus100": { + "u": 0.8766086298258895, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5720776538620406, + "t": null, + "punct": null + }, + "ud": { + "u": 0.961038961038961, + "t": 0.9761904761904762, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5274365274365275, + "t": 0.576388888888889, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5576115061409179, + "t": 0.5652331700235892, + "punct": null + }, + "legal-all-laws": { + "u": 0.3734667935570888, + "t": 0.5076331931895421, + "punct": null, + "acc_u": 0.0784313725490196, + "acc_t": 0.13725490196078433, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.38090152129506577, + "t": 0.6531381986001912, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.14814814814814814, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.785262346807204, + "t": 0.8088092559389753, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.44150969016942887, + "t": 0.44957254731069507, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.43381180223285487, + "t": 0.6136222910216717, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4051927616050354, + "t": 0.6045599411620496, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.7616374269005848, + "t": 0.7504587155963303, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5002806361085126, + "t": 0.43797766019988243, + "punct": null + }, + "ud": { + "u": 0.8632478632478632, + "t": 0.9169510807736063, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4713754646840149, + "t": 0.5319148936170214, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4050632911392405, + "t": 0.47154471544715443, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.821411192214112, + "t": 0.8369118318867061, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.49706457925636, + "t": 0.5207451312447079, + "punct": null + }, + "ud": { + "u": 0.6868932038834952, + "t": 0.6928645294725957, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4354354354354354, + "t": 0.4360418342719228, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.9002407060711419, + "t": 0.9013262599469496, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5224182817471796, + "t": 0.5400744660003919, + "punct": null + }, + "ud": { + "u": 0.9794238683127573, + "t": 0.9833795013850416, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.46243739565943237, + "t": 0.5123537061118335, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5205877327866052, + "t": 0.5193554361918873, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9280500521376435, + "t": 0.9324034334763949, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7659788626069451, + "t": 0.7703943814154511, + "punct": null + }, + "opus100": { + "u": 0.7087699944842802, + "t": 0.7052603753634681, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5169573643410852, + "t": 0.5171658144631117, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4188630859096738, + "t": 0.41880101322825786, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8119580100410771, + "t": 0.9021882414974953, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4440116845180136, + "t": 0.45589083221218535, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.31034482758620685, + "t": 0.2222222222222222, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9110583267352863, + "t": 0.907567426027756, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.34817488969113514, + "t": 0.5660075893748752, + "punct": null + }, + "ud": { + "u": 0.9340813464235624, + "t": 0.9423631123919308, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.524401913875598, + "t": 0.5749385749385749, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4862598975314392, + "t": 0.4911330716122919, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.953037483843171, + "t": 0.9626209322779243, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6897621509824198, + "t": 0.7358602897400277, + "punct": null + }, + "opus100": { + "u": 0.6008814887365328, + "t": 0.5693030540328895, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4542857142857143, + "t": 0.49377224199288255, + "punct": null + }, + "ud": { + "u": 0.9596697364242617, + "t": 0.9709302325581396, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8516949152542374, + "t": 0.8681501162404517, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4826291799134331, + "t": 0.49419274758400566, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9340021119324182, + "t": 0.9366215857862636, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4496551724137931, + "t": 0.5755511022044089, + "punct": null + }, + "ud": { + "u": 0.9734299516908212, + "t": 0.9733009708737865, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.38758845944474685, + "t": 0.4475409836065573, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.501982638516772, + "t": 0.5118815392800142, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.861491406932712, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5591318059549206, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9770009199632015, + "t": 0.9820585457979226, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5130813953488372, + "t": 0.5068870523415978, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5518801755735553, + "t": 0.5479258458724748, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.898486932599725, + "t": 0.900497512437811, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5322128851540616, + "t": 0.5583151202066361, + "punct": null + }, + "ud": { + "u": 0.9807797913234486, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.46581972171808833, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5188528289500677, + "t": 0.5277723450029337, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.7889655172413793, + "t": 0.8042895442359249, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.43796489140136863, + "t": 0.46428571428571425, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.23387096774193547, + "t": 0.2246376811594203, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9449715370018976, + "t": 0.9475400924164175, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5055165496489468, + "t": 0.5549645390070921, + "punct": null + }, + "ud": { + "u": 0.793521565910272, + "t": 0.8883661668136823, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4234800838574423, + "t": 0.4299847180889568, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5736102626756262, + "t": 0.558062740781508, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.8753448708301981, + "t": 0.8977569118414188, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5200537324889657, + "t": 0.5233100233100234, + "punct": null + }, + "ud": { + "u": 0.967525195968645, + "t": 0.96, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4863760217983651, + "t": 0.5597722960151803, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5130479781178384, + "t": 0.5325942350332594, + "punct": null + }, + "legal-all-laws": { + "u": 0.218809724180572, + "t": 0.6180142933096878, + "punct": null, + "acc_u": 0.009943181818181818, + "acc_t": 0.234375, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.2866085725261172, + "t": 0.4511085497701767, + "punct": null, + "acc_u": 0.0014204545454545455, + "acc_t": 0.028409090909090908, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8226333732255872, + "t": 0.8568641015628923, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.3727226980614981, + "t": 0.41872762722741474, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8489835430784124, + "t": 0.8768267223382047, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6501408450704225, + "t": 0.6361990950226243, + "punct": null + }, + "opus100": { + "u": 0.5695718654434251, + "t": 0.8133259911894273, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3624887285843102, + "t": 0.7803353225348111, + "punct": null + }, + "ud": { + "u": 0.970010341261634, + "t": 0.974947807933194, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7217280813214739, + "t": 0.7973856209150327, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8532423208191127, + "t": 0.9016704181968962, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9895432030820034, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.40073800738007387, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.7389643463497454, + "t": 0.8503297818366311, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.30726376687379475, + "t": 0.3125, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4833436788744051, + "t": 0.4895185136148992, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9782372143634385, + "t": 0.9787697332607512, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7558305568776773, + "t": 0.7892677473448854, + "punct": null + }, + "opus100": { + "u": 0.6728257406817457, + "t": 0.7274357441721458, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.49423520368946966, + "t": 0.6875621890547264, + "punct": null + }, + "ud": { + "u": 0.9832285115303985, + "t": 0.9077363896848137, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.792966534316506, + "t": 0.8078920041536866, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6912122915495598, + "t": 0.6969616908850726, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.9004963365634603, + "t": 0.9190679027812578, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5296610169491526, + "t": 0.6112412177985947, + "punct": null + }, + "opus100": { + "u": 0.7058823529411765, + "t": 0.6980703745743474, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7189770415576867, + "t": 0.7147971360381861, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6785714285714286, + "t": 0.6942482341069627, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.6365372374283895, + "t": 0.6493827160493827, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5815109343936382, + "t": 0.5635478637101135, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4349247874427731, + "t": 0.44725370531822145, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.5489208633093526, + "t": 0.7127962085308057, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5906491759165826, + "t": 0.688395061728395, + "punct": null + }, + "ud": { + "u": 0.9851532567049809, + "t": 0.9949164851125636, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9834469328140214, + "t": 0.9830917874396135, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7663729459395093, + "t": 0.7667664812966395, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.7479224376731302, + "t": 0.55301611090296, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5124664365170695, + "t": 0.4840989399293286, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.32034007058068653, + "t": 0.338931416966099, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.8173799411956877, + "t": 0.8378631677600749, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5229244114002479, + "t": 0.647843623952839, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6888604353393086, + "t": 0.6834170854271358, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.8714660448848732, + "t": 0.9237483953786906, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.37581699346405234, + "t": 0.6411830357142857, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.25641025641025644, + "t": 0.3870967741935483, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.970620239390642, + "t": 0.9735391400220508, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.3999000249937516, + "t": 0.5127825120414968, + "punct": null + }, + "opus100": { + "u": 0.7902777777777777, + "t": 0.8570691434468525, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4736842105263158, + "t": 0.4431372549019608, + "punct": null + }, + "ud": { + "u": 0.9721115537848606, + "t": 0.9812550937245313, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.48912404467960025, + "t": 0.5052770448548813, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5120772946859904, + "t": 0.5104564315352698, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9678628816282807, + "t": 0.9742337944128018, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.4520665901262917, + "t": 0.5337910319673889, + "punct": null + }, + "opus100": { + "u": 0.7930954047119197, + "t": 0.8581098672220776, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4972089314194577, + "t": 0.5031626198734952, + "punct": null + }, + "ud": { + "u": 0.9711166704571299, + "t": 0.9714677014380279, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4377019748653501, + "t": 0.44010684199712347, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5423496599305182, + "t": 0.5428080643703102, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.8630375341784738, + "t": 0.8707070707070708, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3895622415514045, + "t": 0.43084409507767174, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4439746300211416, + "t": 0.4559386973180077, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9250780437044746, + "t": 0.930853850183342, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5440077164215095, + "t": 0.49400558383971105, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5352943728578246, + "t": 0.5356498790411259, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.7765531062124248, + "t": 0.8183807439824945, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5479048220678038, + "t": 0.5691411935953421, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4493270447486483, + "t": 0.47815285693409326, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.30597014925373134, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5040742846314193, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7810834049871024, + "t": 0.7850477489768075, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9000561482313307, + "t": 0.9000000000000001, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6045949214026602, + "t": 0.6226415094339622, + "punct": null + }, + "ud": { + "u": 0.8641975308641975, + "t": 0.8641975308641975, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5454545454545454, + "t": 0.5411764705882354, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3933556350213404, + "t": 0.4011544011544011, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.8837468636743797, + "t": 0.8799351000540833, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5186799501867996, + "t": 0.5365661344372167, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5504489524442967, + "t": 0.5508298058187193, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.5756302521008403, + "t": 0.7782664941785252, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.3270460882401181, + "t": 0.3402080028203773, + "punct": null + }, + "ud": { + "u": 0.8695652173913043, + "t": 0.8921775898520083, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.30184049079754605, + "t": 0.3266613290632506, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.32258064516129037, + "t": 0.30303030303030304, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.7553976496310467, + "t": 0.7666570522065186, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7559006211180124, + "t": 0.7562589928057554, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9086809470124013, + "t": 0.9274179840217577, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.6650015610365283, + "t": 0.686053077357425, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5627347858752817, + "t": 0.6565910999160369, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6024830171000234, + "t": 0.6065934065934065, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9285527348861553, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6396449704142012, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9372156505914467, + "t": 0.9029982363315696, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6196969696969696, + "t": 0.6387434554973822, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6491989818835154, + "t": 0.6501926534806062, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9488146551724137, + "t": 0.9488422186322024, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5770833333333333, + "t": 0.6565498772595403, + "punct": null + }, + "ud": { + "u": 0.9874213836477986, + "t": 0.9891179839633448, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6522027894620324, + "t": 0.685575364667747, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.654576367242845, + "t": 0.6756187467087942, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5981308411214953, + "t": 0.592248062015504, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4694656488549619, + "t": 0.5025, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9470842332613391, + "t": 0.9446618222470654, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.4557495484647802, + "t": 0.5080713678844521, + "punct": null + }, + "opus100": { + "u": 0.9258964143426295, + "t": 0.9319399785637728, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4835384103757899, + "t": 0.5946061643835616, + "punct": null + }, + "ud": { + "u": 0.9422665716322166, + "t": 0.964014687882497, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5138943248532288, + "t": 0.5152169644610248, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5188911367488654, + "t": 0.5366121720016486, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9091269055632548, + "t": 0.9262985013344284, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6992388033280227, + "t": 0.7232070910556003, + "punct": null + }, + "opus100": { + "u": 0.39741219963031416, + "t": 0.6930274675520675, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.23991726990692863, + "t": 0.6794602698650675, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.556836902800659, + "t": 0.55929203539823, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9153522607781284, + "t": 0.9235685752330226, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5625979843225084, + "t": 0.54876866395191, + "punct": null + }, + "ud": { + "u": 0.9669499527856468, + "t": 0.9667616334283001, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.485799296727076, + "t": 0.5710670603121046, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5497500000000001, + "t": 0.5570921663178964, + "punct": null + }, + "legal-all-laws": { + "u": 0.46999754017130435, + "t": 0.42956302674399355, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5166397001531029, + "t": 0.44884055960269686, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.017241379310344827, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7723002081475754, + "t": 0.4745571567448653, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.40284192528119034, + "t": 0.15335378989208093, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9744426318651441, + "t": 0.9769380383439845, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.4444763271162123, + "t": 0.540862520848225, + "punct": null + }, + "opus100": { + "u": 0.9005397070161912, + "t": 0.9154671551949752, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5311904113320621, + "t": 0.5597058254306174, + "punct": null + }, + "ud": { + "u": 0.8665749656121045, + "t": 0.9567869852567361, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3313253012048193, + "t": 0.3292349726775956, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5245120086354232, + "t": 0.5236036354010412, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9690607734806629, + "t": 0.9731843575418994, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.4887556221889056, + "t": 0.6120218579234973, + "punct": null + }, + "opus100": { + "u": 0.7755941499085923, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4657890459938241, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8476672287802137, + "t": 0.8646135967460779, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4758317639673572, + "t": 0.47417218543046363, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5432568665775126, + "t": 0.5495954177652513, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8098495212038302, + "t": 0.8180272108843537, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4747474747474748, + "t": 0.6127247579529738, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.46060606060606063, + "t": 0.4619422572178477, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9170146137787056, + "t": 0.9335135135135135, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5549559784152228, + "t": 0.5728643216080402, + "punct": null + }, + "ud": { + "u": 0.9516214779372673, + "t": 0.9433551198257082, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5969281859692819, + "t": 0.5532786885245902, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5208027410670582, + "t": 0.5386915887850469, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9248494370253993, + "t": 0.9351753453772581, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.47665687234737186, + "t": 0.5655504486758591, + "punct": null + }, + "ud": { + "u": 0.9646464646464646, + "t": 0.9676584734799483, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5632107023411372, + "t": 0.5780260707635009, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.556427699284842, + "t": 0.5706231752743379, + "punct": null + }, + "short-sequences": { + "u": 0.41197551176687547, + "t": 0.7042514951671045, + "punct": null, + "acc_u": 0.0021994134897360706, + "acc_t": 0.16385630498533724, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.346976611768149, + "t": 0.5075844015527202, + "punct": null, + "acc_u": 0.0010997067448680353, + "acc_t": 0.04032258064516129, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9022869022869022, + "t": 0.910337552742616, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.533698399326032, + "t": 0.4905153600805775, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.712121212121212, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49920773253050227, + "t": 0.5076218792769833, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9446967672989581, + "t": 0.9472274310206268, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5112634671890304, + "t": 0.5831775700934579, + "punct": null + }, + "ud": { + "u": 0.9789473684210526, + "t": 0.982010582010582, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3937728937728938, + "t": 0.5826235093696762, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5310861087453493, + "t": 0.53125, + "punct": null + }, + "short-sequences": { + "u": 0.3645802617135165, + "t": 0.8100326178451178, + "punct": null, + "acc_u": 0.005208333333333333, + "acc_t": 0.4114583333333333, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.3207246668978108, + "t": 0.4899656279962765, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.010416666666666666, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9162357807652534, + "t": 0.9329446064139942, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6578313253012048, + "t": 0.6414333706606943, + "punct": null + }, + "ud": { + "u": 0.9479708636836628, + "t": 0.9481946624803768, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6430653894210745, + "t": 0.6847117794486215, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5751802029291584, + "t": 0.5798729126644008, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9644779332615716, + "t": 0.9766666666666667, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5841137703780784, + "t": 0.7886855241264559, + "punct": null + }, + "opus100": { + "u": 0.582529335071708, + "t": 0.5285264263213161, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.42269409422694093, + "t": 0.4751595892311963, + "punct": null + }, + "ud": { + "u": 0.972972972972973, + "t": 0.9953917050691244, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6349206349206349, + "t": 0.8611111111111112, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4003228410008072, + "t": 0.49462907015777113, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.7506038647342995, + "t": 0.7490535424553814, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5560640732265447, + "t": 0.5581615730869462, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.51995199519952, + "t": 0.5420903483913986, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.7638283222400734, + "t": 0.7857857857857858, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5334862385321102, + "t": 0.5294484911550469, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6153846153846153, + "t": 0.618066561014263, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.6733629515163221, + "t": 0.704766107678729, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6823061630218689, + "t": 0.6914529914529914, + "punct": null + }, + "ud": { + "u": 0.6569022336140607, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6528535078153398, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5063890203502129, + "t": 0.5847877051315448, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9458689458689458, + "t": 0.9440635149765428, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7842114414884368, + "t": 0.7854435178165277, + "punct": null + }, + "opus100": { + "u": 0.932258064516129, + "t": 0.9332615715823466, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6210253082414017, + "t": 0.6728624535315986, + "punct": null + }, + "ud": { + "u": 0.9675810473815462, + "t": 0.9674511767651477, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5560318432333129, + "t": 0.6396677050882659, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6827980168139685, + "t": 0.6839425720395071, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.8983845752996352, + "t": 0.8967306694343539, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.486447415973979, + "t": 0.578169881001231, + "punct": null + }, + "ud": { + "u": 0.9323583180987203, + "t": 0.9365671641791046, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4353852425601305, + "t": 0.43432715551974216, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.535180817610063, + "t": 0.5401032702237522, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.5101190476190476, + "t": 0.49257045260461146, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5263157894736842, + "t": 0.5322373490881068, + "punct": null + }, + "ud": { + "u": 0.9804325437693101, + "t": 0.9905956112852665, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9022265246853824, + "t": 0.9232343909928352, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.560392798690671, + "t": 0.5604017686554943, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.7450462351387055, + "t": 0.7546262917567892, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6305010893246188, + "t": 0.6433430515063168, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6732313285865777, + "t": 0.677855096193205, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9132523311669964, + "t": 0.9173789173789173, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4988573294156056, + "t": 0.5463129496402879, + "punct": null + }, + "ud": { + "u": 0.8859145952836203, + "t": 0.9640883977900553, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4524216524216524, + "t": 0.4576687116564417, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.476358781024191, + "t": 0.48133140376266276, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.7709739633558342, + "t": 0.776665853063217, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.39645592431295984, + "t": 0.4278928367851036, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.2332695984703633, + "t": 0.6653589642997254, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4405724953329186, + "t": 0.7241513850955911, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.6442344528157323, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.2216053299492386, + "t": null, + "punct": null + }, + "ud": { + "u": 0.7690217391304348, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.14519906323185014, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.8050924522582601, + "t": 0.8204350025290844, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.18744971842316974, + "t": 0.5161613630669005, + "punct": null + }, + "opus100": { + "u": 0.41774744027303756, + "t": 0.5899033297529538, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.014058453570107286, + "t": 0.38131797824696095, + "punct": null + }, + "ud": { + "u": 0.909310761789601, + "t": 0.9799554565701558, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.32798573975044565, + "t": 0.5548387096774193, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.0982721382289417, + "t": 0.32519534416237067, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.7683155917345023, + "t": 0.8272101033295063, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6071428571428572, + "t": 0.6069000251825736, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.967828418230563, + "t": 0.9733520336605891, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.31626120358514725, + "t": 0.31841733396137534, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.9349736379613357, + "t": 0.9349164467897977, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.33725490196078434, + "t": 0.46360655737704914, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.24753694581280788, + "t": 0.44410413476263405, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.3228346456692913, + "t": 0.4603121886416473, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.6446280991735537, + "t": 0.8192771084337349, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4078352586639879, + "t": 0.47766043866774976, + "punct": null + }, + "short-sequences": { + "u": 0.30943486819180166, + "t": 0.7122295835077708, + "punct": null, + "acc_u": 0.002079002079002079, + "acc_t": 0.2203742203742204, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.33777378365447025, + "t": 0.5304546312989732, + "punct": null, + "acc_u": 0.004158004158004158, + "acc_t": 0.0395010395010395, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-3l_only_clean.json b/wtpsplit/evaluation/evaluation_results/main/sat-3l_only_clean.json new file mode 100644 index 00000000..4f8287ab --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-3l_only_clean.json @@ -0,0 +1,1645 @@ +{ + "af": { + "opus100": { + "u": 0.7819971870604782, + "t": 0.7944572748267898, + "punct": null + }, + "ud": { + "u": 0.9922077922077922, + "t": 0.9921259842519685, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.06372549019607843, + "t": 0.5314240254574384, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.5767062026054831, + "t": 0.5870435806831567, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3850415512465375, + "t": 0.5201646090534979, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.8888086642599278, + "t": 0.9065955013343501, + "punct": null + }, + "opus100": { + "u": 0.6700999697061496, + "t": 0.6753534793457167, + "punct": null + }, + "ud": { + "u": 0.8345534407027818, + "t": 0.8309104820198928, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1862422246615441, + "t": 0.474684764585663, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.7452200978212539, + "t": 0.7501256913021619, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.07065812099421605, + "t": 0.6141300527240774, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.7177805800756621, + "t": 0.7173281703775412, + "punct": null + }, + "ud": { + "u": 0.8853910477127397, + "t": 0.8853410740203194, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.11726907630522089, + "t": 0.4620174346201743, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9373500399893362, + "t": 0.9332627118644068, + "punct": null + }, + "ud": { + "u": 0.9805486284289276, + "t": 0.9806451612903225, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.06981092873467692, + "t": 0.5225720620842571, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.7990936555891239, + "t": 0.8187599364069953, + "punct": null + }, + "ud": { + "u": 0.99009900990099, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.017829457364341085, + "t": 0.1432300937462917, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.8820960698689957, + "t": 0.8967334035827187, + "punct": null + }, + "ud": { + "u": 0.9847624738571856, + "t": 0.9865067466266867, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.03654520344204823, + "t": 0.4592812268310766, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4444444444444444, + "t": 0.3516483516483516, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9386666666666666, + "t": 0.9546477967192023, + "punct": null + }, + "opus100": { + "u": 0.8863926474342608, + "t": 0.9021567596002105, + "punct": null + }, + "ud": { + "u": 0.913384089153702, + "t": 0.9113938176542796, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.08839440645095438, + "t": 0.497278664731495, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.7213915166310649, + "t": 0.7478448275862069, + "punct": null + }, + "ud": { + "u": 0.9924198250728863, + "t": 0.9924109748978401, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.908714765968451, + "t": 0.9253573319216516, + "punct": null + }, + "ud": { + "u": 0.9471624266144814, + "t": 0.9460255152109911, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.012748653698208594, + "t": 0.5186746177644262, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9623010332309411, + "t": 0.9646067415730337, + "punct": null + }, + "opus100": { + "u": 0.7804301583549988, + "t": 0.8466648950305607, + "punct": null + }, + "ud": { + "u": 0.9650028686173263, + "t": 0.9650829994275902, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4156798081247189, + "t": 0.5418013627095041, + "punct": null + }, + "legal-all-laws": { + "u": 0.8611150213562196, + "t": 0.8665179725294054, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.26663020821157657, + "t": 0.31358222104936684, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.781903236216006, + "t": 0.7776481725762847, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.32638518471576133, + "t": 0.3843367949446761, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9206516027325276, + "t": 0.9309696481332259, + "punct": null + }, + "ud": { + "u": 0.9828850855745721, + "t": 0.9803921568627451, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.03647480497575374, + "t": 0.48393178131439346, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9664553806708923, + "t": 0.9689316208653226, + "punct": null + }, + "opus100": { + "u": 0.9066305818673883, + "t": 0.898505114083399, + "punct": null + }, + "ud": { + "u": 0.9391304347826087, + "t": 0.9378473976755937, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.12255138473415032, + "t": 0.45243649009712034, + "punct": null + }, + "legal-all-judgements": { + "u": 0.854427519594934, + "t": 0.8526616448707376, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.1251063252790053, + "t": 0.3341612421581971, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9023331524688009, + "t": 0.9031556039173013, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.04048050024683232, + "t": 0.4804323518449497, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.984184693692056, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9150223625361747, + "t": 0.9268423883808499, + "punct": null + }, + "ud": { + "u": 0.9681528662420382, + "t": 0.9696774193548386, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.06254442075337598, + "t": 0.462220447284345, + "punct": null + }, + "legal-all-laws": { + "u": 0.7944512449380017, + "t": 0.8401717259237861, + "punct": null, + "acc_u": 0.01639344262295082, + "acc_t": 0.15300546448087432, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.16442108542006062, + "t": 0.5869337310644828, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7557220155686801, + "t": 0.7548465923185533, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.19337270104972842, + "t": 0.32850675226159204, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9577619308831596, + "t": 0.9579269991641125, + "punct": null + }, + "opus100": { + "u": 0.845650593651563, + "t": 0.8925318761384334, + "punct": null + }, + "ud": { + "u": 0.927038626609442, + "t": 0.9268713349430838, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1905576137551059, + "t": 0.5039162112932605, + "punct": null + }, + "short-sequences": { + "u": 0.900122633947663, + "t": 0.9020610728027874, + "punct": null, + "acc_u": 0.4975369458128079, + "acc_t": 0.49261083743842365, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5196526231437348, + "t": 0.5643700359809631, + "punct": null, + "acc_u": 0.014778325123152709, + "acc_t": 0.029556650246305417, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8201160541586073, + "t": 0.8466039175782244, + "punct": null + }, + "ud": { + "u": 0.9638118214716526, + "t": 0.9705159705159705, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.04004290311047551, + "t": 0.41809141066684835, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.5583536420254536, + "t": 0.5515898767034393, + "punct": null + }, + "ud": { + "u": 0.9838406614054866, + "t": 0.9878603945371774, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.22368184272089256, + "t": 0.5449840015057407, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9763954457095252, + "t": 0.974387221151198, + "punct": null + }, + "opus100": { + "u": 0.91139896373057, + "t": 0.9294494922501336, + "punct": null + }, + "ud": { + "u": 0.937455579246624, + "t": 0.9350180505415162, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.08544916896094626, + "t": 0.4850642036494706, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.972379367720466, + "t": 0.9719689294157379, + "punct": null + }, + "opus100": { + "u": 0.8762964836832784, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9724047306176085, + "t": 0.9775429326287978, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1226911666188152, + "t": 0.51396933560477, + "punct": null + }, + "legal-all-laws": { + "u": 0.9354421057101969, + "t": 0.9359189339542819, + "punct": null, + "acc_u": 0.6928104575163399, + "acc_t": 0.6884531590413944, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.272183580438751, + "t": 0.605609380320305, + "punct": null, + "acc_u": 0.12200435729847495, + "acc_t": 0.15904139433551198, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8099247029816242, + "t": 0.8188017500467555, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.1770150674697659, + "t": 0.31782242069355476, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.658309225329476, + "t": 0.7182257605914131, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.8225848225848226, + "t": 0.8106598984771574, + "punct": null + }, + "ud": { + "u": 0.861407249466951, + "t": 0.901565995525727, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.0, + "t": 0.41935483870967744, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.818137493905412, + "t": 0.8281249999999999, + "punct": null + }, + "ud": { + "u": 0.6733167082294265, + "t": 0.6488156539649845, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.88791095003883, + "t": 0.89477827341905, + "punct": null + }, + "ud": { + "u": 0.9752066115702478, + "t": 0.9686221009549795, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.009015942825728422, + "t": 0.4611934834340106, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9209252286175362, + "t": 0.9139618753219989, + "punct": null + }, + "opus100": { + "u": 0.7151420380505604, + "t": 0.7166089042921887, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.24841213832039521, + "t": 0.2800440003666697, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8380952380952381, + "t": 0.887357540418765, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.0, + "t": 0.2631578947368421, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9033098775084701, + "t": 0.9086614173228347, + "punct": null + }, + "ud": { + "u": 0.9386590584878745, + "t": 0.9413447782546495, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1886208466090123, + "t": 0.4768373389063044, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9569798068481123, + "t": 0.9577403109262098, + "punct": null + }, + "opus100": { + "u": 0.623202776400595, + "t": 0.606425702811245, + "punct": null + }, + "ud": { + "u": 0.9753370601775733, + "t": 0.9759584145549058, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.016023306627822285, + "t": 0.3626141393197496, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.927710843373494, + "t": 0.9352785145888595, + "punct": null + }, + "ud": { + "u": 0.9668711656441719, + "t": 0.966952264381885, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.05123897522049559, + "t": 0.4676010562665041, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.8560383706779296, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9768303985171455, + "t": 0.9746001881467545, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.08098060886164976, + "t": 0.4581404174573055, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.8808567603748326, + "t": 0.8902804247209366, + "punct": null + }, + "ud": { + "u": 0.9834254143646408, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.15121338103064877, + "t": 0.4862451025824661, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.8222442899702085, + "t": 0.8309492847854355, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.0, + "t": 0.17777777777777778, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9364099812181379, + "t": 0.9450489662676822, + "punct": null + }, + "ud": { + "u": 0.7636455525606469, + "t": 0.8199761314605709, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.15650030807147258, + "t": 0.46553497942386834, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.870430241233524, + "t": 0.8948731227343346, + "punct": null + }, + "ud": { + "u": 0.9578713968957872, + "t": 0.9463307776560789, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.19139359020525745, + "t": 0.48304376511985925, + "punct": null + }, + "legal-all-laws": { + "u": 0.8357741214529066, + "t": 0.8487923004514616, + "punct": null, + "acc_u": 0.4375, + "acc_t": 0.5696022727272727, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.22009161100138067, + "t": 0.41389330675191016, + "punct": null, + "acc_u": 0.03409090909090909, + "acc_t": 0.028409090909090908, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8412007831695276, + "t": 0.851391903413075, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.02040816326530612, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2148720599071291, + "t": 0.30783690501929106, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8582794629537542, + "t": 0.8707557502738225, + "punct": null + }, + "opus100": { + "u": 0.7958280657395702, + "t": 0.8361549497847918, + "punct": null + }, + "ud": { + "u": 0.9690721649484535, + "t": 0.9729166666666667, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4698815566835871, + "t": 0.9006555153707052, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9878587196467993, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.7519931049342814, + "t": 0.8552531162554059, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3256059009483667, + "t": 0.46783983232173265, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9704075935231714, + "t": 0.9760087241003271, + "punct": null + }, + "opus100": { + "u": 0.8238838674335799, + "t": 0.8093607305936072, + "punct": null + }, + "ud": { + "u": 0.9573664328116568, + "t": 0.9006318207926479, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.18363273453093812, + "t": 0.6410109132682368, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.8951179630927353, + "t": 0.9184741959611069, + "punct": null + }, + "opus100": { + "u": 0.6983437415150693, + "t": 0.6875182695118387, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.31652173913043485, + "t": 0.6509723643807575, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.6819221967963386, + "t": 0.6819221967963386, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.25236051502145923, + "t": 0.2702394526795895, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.7174418604651164, + "t": 0.7369758576874206, + "punct": null + }, + "ud": { + "u": 0.994914022765803, + "t": 0.9941747572815534, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.03264696468579964, + "t": 0.723272971160295, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.7680209698558323, + "t": 0.6892692560895326, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.039285341134677666, + "t": 0.32871652816251157, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.8460829493087557, + "t": 0.8474366893143916, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5060658578856153, + "t": 0.6018735362997658, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.6177745664739884, + "t": 0.854160944795386, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.16666666666666669, + "t": 0.47058823529411764, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.961387800783436, + "t": 0.9622222222222222, + "punct": null + }, + "opus100": { + "u": 0.8223523670082967, + "t": 0.8584140277414289, + "punct": null + }, + "ud": { + "u": 0.9725363489499194, + "t": 0.9742351046698873, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.17720808383233533, + "t": 0.4813885041551246, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9745808545159546, + "t": 0.9746524938675388, + "punct": null + }, + "opus100": { + "u": 0.8311176760216643, + "t": 0.8614173228346457, + "punct": null + }, + "ud": { + "u": 0.9613157285151726, + "t": 0.9613183794918746, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.09306990271788186, + "t": 0.4863370926759685, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.883183568677792, + "t": 0.890795631825273, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.0, + "t": 0.3653846153846154, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9264590421355666, + "t": 0.9319261213720317, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.05156498673740053, + "t": 0.4783693843594011, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.7798617966436328, + "t": 0.8125677139761646, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.07778131973222824, + "t": 0.3336049986416735, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.6800067831100559, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2815811296415738, + "t": 0.7121320158908017, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.900831024930748, + "t": 0.9014941892639734, + "punct": null + }, + "ud": { + "u": 0.8395061728395062, + "t": 0.8333333333333334, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.010364886303543099, + "t": 0.239141765114663, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.8651804670912951, + "t": 0.8682087143625605, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1856091578086672, + "t": 0.48973393269347587, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.6443166038484428, + "t": 0.7981991525423728, + "punct": null + }, + "ud": { + "u": 0.8831967213114754, + "t": 0.8924050632911392, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.0, + "t": 0.31868131868131866, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.671443736730361, + "t": 0.6936084838062483, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8995095243526863, + "t": 0.8991539763113368, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.6917593384659253, + "t": 0.6993154291732491, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.07287050713934023, + "t": 0.4982844071673657, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.921120913336793, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9247706422018349, + "t": 0.8992112182296231, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.16208476517754866, + "t": 0.5696946157207361, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9483593329747176, + "t": 0.9498652291105122, + "punct": null + }, + "ud": { + "u": 0.985632183908046, + "t": 0.9868496283590622, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.6941262490860346, + "t": 0.692385274836107, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.043596730245231606, + "t": 0.37192342752962626, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9346110484780158, + "t": 0.9344632768361583, + "punct": null + }, + "opus100": { + "u": 0.9250797024442083, + "t": 0.9305331179321487, + "punct": null + }, + "ud": { + "u": 0.9541505791505791, + "t": 0.9556578628543736, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.07743521458568063, + "t": 0.5110040369839823, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9231076492909926, + "t": 0.9284701114488348, + "punct": null + }, + "opus100": { + "u": 0.6683448709880427, + "t": 0.6972122550372619, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4078947368421053, + "t": 0.46666666666666673, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9106583072100313, + "t": 0.9231590181430096, + "punct": null + }, + "ud": { + "u": 0.9671179883945842, + "t": 0.9659145463274125, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.06490830414176799, + "t": 0.5142343667034268, + "punct": null + }, + "legal-all-laws": { + "u": 0.5756256307942803, + "t": 0.529698914913671, + "punct": null, + "acc_u": 0.017241379310344827, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.11523235129033794, + "t": 0.436230699087125, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7617860831193743, + "t": 0.772353377152171, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.07435879337117733, + "t": 0.25141905995991565, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9730621220450796, + "t": 0.9667504889633977, + "punct": null + }, + "opus100": { + "u": 0.9058064516129033, + "t": 0.9265836204611715, + "punct": null + }, + "ud": { + "u": 0.718299164768413, + "t": 0.8297766749379654, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.07762230619957104, + "t": 0.47401750791581304, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.970274817722939, + "t": 0.9708520179372198, + "punct": null + }, + "opus100": { + "u": 0.8241811175337187, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8276243093922653, + "t": 0.8313856427378966, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.09949849548645938, + "t": 0.5109871534820825, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8034557235421166, + "t": 0.8095774647887324, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.30769230769230765, + "t": 0.43487621097954793, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9149713093375066, + "t": 0.9274431057563587, + "punct": null + }, + "ud": { + "u": 0.947198275862069, + "t": 0.9512064343163539, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.12945231711987745, + "t": 0.48877995182352196, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9158878504672898, + "t": 0.9269200106298167, + "punct": null + }, + "ud": { + "u": 0.9635593220338983, + "t": 0.9639484978540773, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.06376084456987562, + "t": 0.49110800520507014, + "punct": null + }, + "short-sequences": { + "u": 0.7878786615407417, + "t": 0.7510648241981032, + "punct": null, + "acc_u": 0.3101173020527859, + "acc_t": 0.21737536656891496, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6452657970580004, + "t": 0.5724011913218351, + "punct": null, + "acc_u": 0.11986803519061584, + "acc_t": 0.05865102639296188, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9028720626631854, + "t": 0.9098143236074271, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.015520821947753853, + "t": 0.47024123965486875, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.938710533297957, + "t": 0.9422103861517976, + "punct": null + }, + "ud": { + "u": 0.9732047159699893, + "t": 0.975609756097561, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.045999144201968344, + "t": 0.48225027535372367, + "punct": null + }, + "short-sequences": { + "u": 0.8842179232804233, + "t": 0.9105498957061456, + "punct": null, + "acc_u": 0.5416666666666666, + "acc_t": 0.6302083333333334, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6158745189995191, + "t": 0.5974482922782555, + "punct": null, + "acc_u": 0.057291666666666664, + "acc_t": 0.07291666666666667, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.914536534985799, + "t": 0.9217118997912317, + "punct": null + }, + "ud": { + "u": 0.9460020768431984, + "t": 0.9473129610115912, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.05918010890783931, + "t": 0.504361118604442, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9753694581280787, + "t": 0.9750415973377705, + "punct": null + }, + "opus100": { + "u": 0.6033797216699801, + "t": 0.5854430379746834, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.16217596730941128, + "t": 0.26094457623463446, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.7633069082672708, + "t": 0.7573833839359647, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.22157772621809743, + "t": 0.3563166591557759, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.7835590401520551, + "t": 0.8194780737153617, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.03597122302158273, + "t": 0.5676126878130217, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.6830225711481844, + "t": 0.7028670721112076, + "punct": null + }, + "ud": { + "u": 0.7001194743130227, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5112923844889511, + "t": 0.5752790997642663, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9319009468317552, + "t": 0.9351818509182571, + "punct": null + }, + "opus100": { + "u": 0.9305071102763617, + "t": 0.9313593539703903, + "punct": null + }, + "ud": { + "u": 0.9625561657513729, + "t": 0.9654827413706852, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.08394500155070815, + "t": 0.6041849148418491, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.8908252178370067, + "t": 0.8950649350649349, + "punct": null + }, + "ud": { + "u": 0.9187848729076256, + "t": 0.9183168316831684, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1955981213739755, + "t": 0.49757184228113166, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.5306248076331178, + "t": 0.5126475548060708, + "punct": null + }, + "ud": { + "u": 0.9784172661870505, + "t": 0.9823100936524454, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42312296904395413, + "t": 0.5045138888888889, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.7595931576514101, + "t": 0.7622549019607844, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.24674367166379946, + "t": 0.6242518865469685, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9105645612073784, + "t": 0.9101595298068851, + "punct": null + }, + "ud": { + "u": 0.8933419521654815, + "t": 0.9538043478260869, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.03853113358169239, + "t": 0.44806221424603687, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.79718456725756, + "t": 0.7970749542961608, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.6251097453906936, + "t": 0.7107964601769912, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.7293672435861761, + "t": null, + "punct": null + }, + "ud": { + "u": 0.6635404454865181, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.8777908343125733, + "t": 0.9013850415512464, + "punct": null + }, + "opus100": { + "u": 0.6284979092955935, + "t": 0.6642651296829971, + "punct": null + }, + "ud": { + "u": 0.9547038327526133, + "t": 0.9832775919732442, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1673364998173182, + "t": 0.41856805664830843, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.8147706968433592, + "t": 0.8505169041631742, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9525065963060686, + "t": 0.9662301860785666, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.21246707638279191, + "t": 0.2816537467700258, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.9175965665236053, + "t": 0.9273597216180949, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.21558441558441557, + "t": 0.41480644249788073, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.12745762711864408, + "t": 0.41625615763546797, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.14654570830425678, + "t": 0.41982300884955753, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.6172688303735456, + "t": 0.7592295345104334, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.3384912959381044, + "t": 0.362934362934363, + "punct": null + }, + "short-sequences": { + "u": 0.8418860173066176, + "t": 0.8712191214486412, + "punct": null, + "acc_u": 0.4282744282744283, + "acc_t": 0.5197505197505198, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5815910173190937, + "t": 0.5434259334143148, + "punct": null, + "acc_u": 0.079002079002079, + "acc_t": 0.0498960498960499, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-6l.json b/wtpsplit/evaluation/evaluation_results/main/sat-6l.json new file mode 100644 index 00000000..5b5ad9e4 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-6l.json @@ -0,0 +1,2450 @@ +{ + "af": { + "opus100": { + "u": 0.748356246264196, + "t": 0.8004115226337449, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6543535620052771, + "t": 0.6606621226874392, + "punct": null + }, + "ud": { + "u": 0.9947916666666666, + "t": 0.9895013123359581, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8594847775175645, + "t": 0.8774703557312253, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6819747416762342, + "t": 0.671578947368421, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.6156974379829199, + "t": 0.6387565805966406, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5799214806505888, + "t": 0.6140027637033625, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5771689497716895, + "t": 0.5805877114870882, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.9001479289940828, + "t": 0.9017857142857142, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6258992805755396, + "t": 0.6240851630073188, + "punct": null + }, + "opus100": { + "u": 0.7185972980741593, + "t": 0.7219434908898864, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6417486338797814, + "t": 0.6537654464910235, + "punct": null + }, + "ud": { + "u": 0.8565185724690457, + "t": 0.8573596358118362, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7134724857685009, + "t": 0.7539984767707542, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5782231252308829, + "t": 0.578210080513799, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.767755195250057, + "t": 0.7640050697084919, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7198286122351821, + "t": 0.7269458001541227, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7003979533826038, + "t": 0.7148134187712025, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.7105060364757257, + "t": 0.7194944093339816, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7057984790874524, + "t": 0.7060786650774731, + "punct": null + }, + "ud": { + "u": 0.8862275449101796, + "t": 0.8830151737640725, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6173682214637847, + "t": 0.6352530541012216, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6266087516087516, + "t": 0.631933265037319, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9397011739594451, + "t": 0.9394828045854438, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7130089374379345, + "t": 0.7108350586611456, + "punct": null + }, + "ud": { + "u": 0.9844922461230616, + "t": 0.9866004962779157, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7375527426160338, + "t": 0.7511190689346465, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6548855474603421, + "t": 0.6580229972081579, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.8179074446680081, + "t": 0.8375931842385516, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.45979564637938697, + "t": 0.467757459095284, + "punct": null + }, + "ud": { + "u": 0.9803921568627451, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5871559633027523, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3814407814407815, + "t": 0.3819501732387395, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.8945736434108529, + "t": 0.9022595901208619, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6587881392350667, + "t": 0.6719926957315681, + "punct": null + }, + "ud": { + "u": 0.9810183790298284, + "t": 0.981426003594967, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6752136752136751, + "t": 0.7318840579710144, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6389032835539643, + "t": 0.6386823529411765, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9941176470588234, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7178217821782179, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49624060150375937, + "t": 0.5170068027210885, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9315436241610738, + "t": 0.9563833174148361, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6864776444929116, + "t": 0.6820303383897317, + "punct": null + }, + "opus100": { + "u": 0.8992488992488993, + "t": 0.914683070339663, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6932180245789713, + "t": 0.6986617443470234, + "punct": null + }, + "ud": { + "u": 0.9146375910965482, + "t": 0.9213295473525972, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6817363283101129, + "t": 0.6796526636939686, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6383681900335656, + "t": 0.648390388718805, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.7391699485004543, + "t": 0.7680043980208906, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6315280464216634, + "t": 0.63103802672148, + "punct": null + }, + "ud": { + "u": 0.9929906542056075, + "t": 0.9924021040327293, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6563039723661486, + "t": 0.7169410515135423, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9148494288681205, + "t": 0.9208519589797528, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7131465026201869, + "t": 0.732285368802902, + "punct": null + }, + "ud": { + "u": 0.9405940594059407, + "t": 0.9384920634920635, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7595993322203674, + "t": 0.784390243902439, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6944784075903555, + "t": 0.6908384283615338, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.968403074295474, + "t": 0.9705048213272831, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7688995215311005, + "t": 0.772801747678864, + "punct": null + }, + "opus100": { + "u": 0.8063106796116505, + "t": 0.8474312402698496, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6290224650880389, + "t": 0.721936148300721, + "punct": null + }, + "ud": { + "u": 0.9579250720461095, + "t": 0.9579735175590098, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7630560928433269, + "t": 0.7756345177664974, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7090821256038649, + "t": 0.7098448181228483, + "punct": null + }, + "legal-all-laws": { + "u": 0.8718326733223795, + "t": 0.8742981841885243, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.669472828821538, + "t": 0.7247308536084242, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7056872072910993, + "t": 0.763764840392781, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5771263357679345, + "t": 0.5745185733104263, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9261603375527426, + "t": 0.9325872635225153, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6687803846966814, + "t": 0.6808888888888889, + "punct": null + }, + "ud": { + "u": 0.976629766297663, + "t": 0.976629766297663, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7342995169082126, + "t": 0.7943595769682726, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6399564902102973, + "t": 0.6425189393939393, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9663001570755391, + "t": 0.9641032917139614, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.632364810330912, + "t": 0.6733827607674459, + "punct": null + }, + "opus100": { + "u": 0.91958985429034, + "t": 0.9011387163561076, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7695738354806739, + "t": 0.7620880442626894, + "punct": null + }, + "ud": { + "u": 0.9379885356956749, + "t": 0.9443593670239918, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.656319290465632, + "t": 0.6570175438596491, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6513604611401496, + "t": 0.6516766815274279, + "punct": null + }, + "legal-all-judgements": { + "u": 0.8400116516144338, + "t": 0.8451624438751151, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.627608733488423, + "t": 0.6278524165327342, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.917589840583626, + "t": 0.9146079484425348, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7747431721373089, + "t": 0.780097963392627, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6337799117168743, + "t": 0.6342023989082812, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.984092155787164, + "t": null, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6677049412430979, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9181102362204724, + "t": 0.9293521727539322, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6686491079014443, + "t": 0.6979362101313322, + "punct": null + }, + "ud": { + "u": 0.9622215046819502, + "t": 0.9618863049095607, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6375227686703097, + "t": 0.7018091079226452, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6370041501785542, + "t": 0.6352896701635007, + "punct": null + }, + "legal-all-laws": { + "u": 0.7637581491686753, + "t": 0.8588942961638998, + "punct": null, + "acc_u": 0.00546448087431694, + "acc_t": 0.17486338797814208, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.714598708166928, + "t": 0.7106690421286029, + "punct": null, + "acc_u": 0.01092896174863388, + "acc_t": 0.01092896174863388, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7355506321898818, + "t": 0.7638388240624783, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5417584863514892, + "t": 0.5626197315108892, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9586455731335, + "t": 0.9568124825856784, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6950203034836505, + "t": 0.7220863895680522, + "punct": null + }, + "opus100": { + "u": 0.848969696969697, + "t": 0.8943425471454404, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5942655145326, + "t": 0.6284029038112521, + "punct": null + }, + "ud": { + "u": 0.93997893997894, + "t": 0.9447895100069013, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6690328305235137, + "t": 0.6709136109384711, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6859228362877997, + "t": 0.6887657529544452, + "punct": null + }, + "short-sequences": { + "u": 0.8881874037477007, + "t": 0.8878023729430059, + "punct": null, + "acc_u": 0.4482758620689655, + "acc_t": 0.4433497536945813, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.66459011547478, + "t": 0.6903011423814982, + "punct": null, + "acc_u": 0.03940886699507389, + "acc_t": 0.06403940886699508, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8442582552981764, + "t": 0.8639836984207846, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5447549615228837, + "t": 0.5520581113801454, + "punct": null + }, + "ud": { + "u": 0.9702362687941086, + "t": 0.9710412815773259, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6206896551724138, + "t": 0.6386986301369864, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5610587209763055, + "t": 0.5626006286897186, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.6160644658175202, + "t": 0.604029785370127, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6167690956979808, + "t": 0.6190582459272483, + "punct": null + }, + "ud": { + "u": 0.9856927710843374, + "t": 0.9875330562901399, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9180209461899602, + "t": 0.9121548942273215, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.653736849977564, + "t": 0.6523617794363155, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.988595271210014, + "t": 0.986784140969163, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6881095663000623, + "t": 0.7295272539395505, + "punct": null + }, + "opus100": { + "u": 0.9278404618210443, + "t": 0.93525949705725, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7027758970886934, + "t": 0.7214634146341462, + "punct": null + }, + "ud": { + "u": 0.9357271095152604, + "t": 0.9347128077060294, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7056004791853848, + "t": 0.7073807968647944, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6558025167542548, + "t": 0.6538945602013705, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9747340425531914, + "t": 0.9713515335355579, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6796601699150425, + "t": 0.7105339105339106, + "punct": null + }, + "opus100": { + "u": 0.8852209243270697, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6389942127319896, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9645203679369251, + "t": 0.9708994708994708, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6583969465648856, + "t": 0.7080459770114943, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6535641727762566, + "t": 0.6585706712929498, + "punct": null + }, + "legal-all-laws": { + "u": 0.9414824081502224, + "t": 0.9409161041974786, + "punct": null, + "acc_u": 0.7080610021786492, + "acc_t": 0.7015250544662309, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.6999508660009657, + "t": 0.7351403711991886, + "punct": null, + "acc_u": 0.1503267973856209, + "acc_t": 0.21350762527233116, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8550367888070239, + "t": 0.8554355182584804, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5358518374479575, + "t": 0.5646555277934989, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.6335113484646194, + "t": 0.688463911165947, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6685865130789537, + "t": 0.6597671410090556, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.8397733127253992, + "t": 0.8362244897959183, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5760286225402504, + "t": 0.6073847498361372, + "punct": null + }, + "ud": { + "u": 0.8744588744588744, + "t": 0.897175141242938, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5341712490180676, + "t": 0.5942857142857142, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4675324675324675, + "t": 0.4752475247524752, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.8477842003853564, + "t": 0.8566159520516368, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6053578568572571, + "t": 0.602987777274785, + "punct": null + }, + "ud": { + "u": 0.7044334975369458, + "t": 0.7308447937131631, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5059445178335535, + "t": 0.538996138996139, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.8993775933609959, + "t": 0.9024326445200106, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6665167528671014, + "t": 0.6760019314340898, + "punct": null + }, + "ud": { + "u": 0.9859943977591036, + "t": 0.9846153846153846, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6525139664804468, + "t": 0.6569343065693432, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6395286555972148, + "t": 0.6401801974503977, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9148230088495575, + "t": 0.9224890829694323, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.790356394129979, + "t": 0.7942122186495177, + "punct": null + }, + "opus100": { + "u": 0.7209302325581395, + "t": 0.7458710708577517, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5454031117397454, + "t": 0.5495207667731629, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43790816584822556, + "t": 0.43790210510062283, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8644275557734739, + "t": 0.8969315499606609, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5128121959130716, + "t": 0.5815918185860383, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.34285714285714286, + "t": 0.4444444444444444, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9043523586135003, + "t": 0.9091866280600158, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6589851539995568, + "t": 0.656622442095795, + "punct": null + }, + "ud": { + "u": 0.964936886395512, + "t": 0.9678321678321679, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7074829931972789, + "t": 0.747422680412371, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.597163054164131, + "t": 0.5983602885175395, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9586085424922941, + "t": 0.9576719576719578, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.781993316296442, + "t": 0.7895387149917626, + "punct": null + }, + "opus100": { + "u": 0.6710526315789473, + "t": 0.6685340802987861, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.49640015157256545, + "t": 0.5365280714117925, + "punct": null + }, + "ud": { + "u": 0.9723346828609987, + "t": 0.9924267369114258, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9028836592641697, + "t": 0.9032894736842105, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.52826607246018, + "t": 0.5324738399046316, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9303913842920936, + "t": 0.94158442251267, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6923612723473416, + "t": 0.6891676168757126, + "punct": null + }, + "ud": { + "u": 0.9660377358490566, + "t": 0.9716399506781751, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5804311774461027, + "t": 0.6093264248704663, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6343685705888117, + "t": 0.6289588642155078, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.8573293682454486, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7069211437886301, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9702048417132216, + "t": 0.9704251386321627, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6490807354116707, + "t": 0.6472148541114058, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.650523864959255, + "t": 0.649109357384442, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.8905539202568905, + "t": 0.8948932720886248, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6426896012509774, + "t": 0.635613995988411, + "punct": null + }, + "ud": { + "u": 0.9878183831672204, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6515837104072398, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6233766233766234, + "t": 0.6218642969545497, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.8506493506493507, + "t": 0.845042678923178, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.520248447204969, + "t": 0.5196483971044468, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.35125448028673834, + "t": 0.3111111111111111, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9459751485683414, + "t": 0.947682298725942, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6280794068404688, + "t": 0.634121791645697, + "punct": null + }, + "ud": { + "u": 0.8733242665630464, + "t": 0.8684944684944685, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5333333333333333, + "t": 0.5476878612716763, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6569254185692541, + "t": 0.6550088915234145, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.8794007490636704, + "t": 0.9022049286640726, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6030227664052038, + "t": 0.6415747350205495, + "punct": null + }, + "ud": { + "u": 0.9631284916201117, + "t": 0.9318918918918919, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6903283052351374, + "t": 0.7237903225806452, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6391457100591716, + "t": 0.6401235798285829, + "punct": null + }, + "legal-all-laws": { + "u": 0.7929469146599853, + "t": 0.7864207421113482, + "punct": null, + "acc_u": 0.3494318181818182, + "acc_t": 0.3622159090909091, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.4816037432168038, + "t": 0.4858255650752543, + "punct": null, + "acc_u": 0.029829545454545456, + "acc_t": 0.03977272727272727, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.848315213442505, + "t": 0.8485357095275152, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.47394754021670066, + "t": 0.491757639256521, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8590956887486857, + "t": 0.8530857454942654, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7220946256316032, + "t": 0.7240479916536254, + "punct": null + }, + "opus100": { + "u": 0.8581666169005674, + "t": 0.8805803571428571, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8459499263622975, + "t": 0.8528832630098453, + "punct": null + }, + "ud": { + "u": 0.9554655870445343, + "t": 0.9668737060041408, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8739669421487603, + "t": 0.8756530825496343, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9161191928671985, + "t": 0.9234728127097785, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9873138444567017, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5073929961089494, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.7688585880800527, + "t": 0.9107094685729701, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.2816511219872564, + "t": 0.30488948425987944, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5903182220565624, + "t": 0.5903107369929255, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9560251284980011, + "t": 0.9749023982152818, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8396694214876033, + "t": 0.8359728506787331, + "punct": null + }, + "opus100": { + "u": 0.7796322489391797, + "t": 0.7626321974148061, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7526997840172786, + "t": 0.7344665885111371, + "punct": null + }, + "ud": { + "u": 0.9518599562363239, + "t": 0.9288515406162465, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8041919470490899, + "t": 0.7719505008839128, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7130793769938074, + "t": 0.7293801444649756, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.9042215161143894, + "t": 0.9304029304029305, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6482357220807567, + "t": 0.7394176657695131, + "punct": null + }, + "opus100": { + "u": 0.7349823321554769, + "t": 0.7378190255220418, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7485168945060614, + "t": 0.7632037144515381, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7669902912621359, + "t": 0.7858585858585859, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.7288597926895799, + "t": 0.7272727272727274, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6223698781838316, + "t": 0.6214442013129102, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4580152671755725, + "t": 0.455452865064695, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.7101449275362318, + "t": 0.7735655737704918, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7393458870168483, + "t": 0.74, + "punct": null + }, + "ud": { + "u": 0.9916911045943304, + "t": 0.9946550048590865, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9566524680531195, + "t": 0.9791868344627299, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7545332282149979, + "t": 0.7531533172442056, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.7962765957446809, + "t": 0.7408595253367543, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6209850107066381, + "t": 0.6705027256208359, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.36753964012114737, + "t": 0.3712824398560334, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.8650137741046832, + "t": 0.868298729470096, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7289774392030471, + "t": 0.730111077754428, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.733160621761658, + "t": 0.7324675324675325, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.39559508682761546, + "t": 0.921996879875195, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.36271615352172076, + "t": 0.7232375979112271, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4666666666666667, + "t": 0.3673469387755102, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9613196814562002, + "t": 0.9577142857142857, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6423815119467293, + "t": 0.7109144542772862, + "punct": null + }, + "opus100": { + "u": 0.8312379110251451, + "t": 0.8623666835957339, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5909461663947797, + "t": 0.6119402985074627, + "punct": null + }, + "ud": { + "u": 0.9591503267973857, + "t": 0.9651821862348179, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5993650793650793, + "t": 0.6118286879673691, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6317274742995364, + "t": 0.6272861229089017, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9765539803707741, + "t": 0.9754232659748772, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6597851274489152, + "t": 0.6860986547085202, + "punct": null + }, + "opus100": { + "u": 0.8361609306834706, + "t": 0.8652555498193083, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5893625342197888, + "t": 0.6265118529269473, + "punct": null + }, + "ud": { + "u": 0.953406696324046, + "t": 0.9606728802000455, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6084013537726458, + "t": 0.6082260074781886, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6449411884515506, + "t": 0.6482973011162922, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9184161573212862, + "t": 0.9180153886972673, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4768763002080333, + "t": 0.5338627840282373, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5354969574036512, + "t": 0.5204460966542752, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9360357988944458, + "t": 0.9364953886693017, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6601851851851852, + "t": 0.6476883561643836, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6395693948387746, + "t": 0.6415751535968265, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.7926470588235295, + "t": 0.8217739707101409, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5793341980112408, + "t": 0.5960076045627376, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5022490682431563, + "t": 0.5135969425253565, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.7382462990076458, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7968862620729422, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7936471663619744, + "t": 0.8103322570565568, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9149753154141526, + "t": 0.9169894853348091, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6609179415855354, + "t": 0.6615506747816883, + "punct": null + }, + "ud": { + "u": 0.9655172413793104, + "t": 0.9655172413793104, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5783132530120483, + "t": 0.574712643678161, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4303391384051328, + "t": 0.4301912626759659, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.8812301166489925, + "t": 0.8829645427885897, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6338523355097941, + "t": 0.6233475240869369, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6292728180974809, + "t": 0.6286623743036966, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.6462135922330098, + "t": 0.8068692206076618, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.40392577825486886, + "t": 0.4505450141299959, + "punct": null + }, + "ud": { + "u": 0.9054621848739495, + "t": 0.8981779206859593, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4231027535258563, + "t": 0.44869565217391305, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4095238095238095, + "t": 0.4189723320158103, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.7882599580712789, + "t": 0.816220880069025, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8069425901201602, + "t": 0.8164464023494861, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8928149500590699, + "t": 0.906242956952896, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.7309973045822102, + "t": 0.7327227310574521, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.704422032583398, + "t": 0.7077090710977935, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6198182221236975, + "t": 0.6213142375737152, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9244004171011471, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7292435424354243, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9267822736030829, + "t": 0.9318600368324126, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7548117154811715, + "t": 0.7537942664418213, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7237218813905931, + "t": 0.724773413897281, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.947170823277018, + "t": 0.947170823277018, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7637098812231488, + "t": 0.7647642679900745, + "punct": null + }, + "ud": { + "u": 0.9832078749276202, + "t": 0.9899742194213692, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7943706020328382, + "t": 0.7973713033953999, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.704201680672269, + "t": 0.7047619047619047, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5976744186046512, + "t": 0.6212403513441577, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5577777777777778, + "t": 0.5454545454545454, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.936, + "t": 0.9352435530085959, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6631625054752519, + "t": 0.6817464492372436, + "punct": null + }, + "opus100": { + "u": 0.9301705756929638, + "t": 0.9335832886984468, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7060747663551401, + "t": 0.7079349904397705, + "punct": null + }, + "ud": { + "u": 0.9600389863547758, + "t": 0.9596499756927565, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6860581745235707, + "t": 0.7054610564010743, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6531916007749908, + "t": 0.6639324487334137, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9194182389937108, + "t": 0.9301951317642326, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7468220338983051, + "t": 0.7645155149438416, + "punct": null + }, + "opus100": { + "u": 0.7395115842204133, + "t": 0.7428226050166213, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7049591964846201, + "t": 0.7158518518518517, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5899653979238754, + "t": 0.5960591133004925, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9140177175612298, + "t": 0.9177398160315374, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6604808097849009, + "t": 0.6755260243632336, + "punct": null + }, + "ud": { + "u": 0.9551219512195122, + "t": 0.9634204275534444, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6547149515955539, + "t": 0.6796941376380629, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6716289722301746, + "t": 0.6708452041785375, + "punct": null + }, + "legal-all-laws": { + "u": 0.5787783970611796, + "t": 0.5203420855218129, + "punct": null, + "acc_u": 0.034482758620689655, + "acc_t": 0.017241379310344827, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5416436158116402, + "t": 0.5382110499269823, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8049114832797383, + "t": 0.7700916140392605, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5607558037955485, + "t": 0.5906458479412802, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9745996686913307, + "t": 0.9721758486366167, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6462955211385517, + "t": 0.6550165712564024, + "punct": null + }, + "opus100": { + "u": 0.9077358005654074, + "t": 0.9172107599895535, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6492880613362542, + "t": 0.6505543237250554, + "punct": null + }, + "ud": { + "u": 0.726853630426431, + "t": 0.8505180069067587, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.3759954493742889, + "t": 0.4060584204832311, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6373738403506983, + "t": 0.637729241544558, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9716553287981858, + "t": 0.9743589743589742, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7315936626281454, + "t": 0.7580993520518358, + "punct": null + }, + "opus100": { + "u": 0.8550939663699308, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6015767131594906, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8477043673012319, + "t": 0.843680709534368, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5918367346938775, + "t": 0.5793896505970809, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6558794075791915, + "t": 0.6600924790034916, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8001042481105031, + "t": 0.8121347063735039, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6729992875801473, + "t": 0.6651376146788991, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5242718446601942, + "t": 0.5160744500846024, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9218668065023596, + "t": 0.9316307528598031, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6788908765652951, + "t": 0.6812767984754645, + "punct": null + }, + "ud": { + "u": 0.9560085836909871, + "t": 0.9722367731796752, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7574987290289782, + "t": 0.7614410905550146, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6402301212245737, + "t": 0.6448593757311994, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9239613274105044, + "t": 0.9338293914429976, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6923076923076923, + "t": 0.6950726017614853, + "punct": null + }, + "ud": { + "u": 0.9634782608695652, + "t": 0.962738301559792, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7240986717267551, + "t": 0.7214539707625444, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6678841918676479, + "t": 0.6736686390532544, + "punct": null + }, + "short-sequences": { + "u": 0.7924035248648195, + "t": 0.7813706974000579, + "punct": null, + "acc_u": 0.3258797653958944, + "acc_t": 0.27419354838709675, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5976507653905271, + "t": 0.5884308381234274, + "punct": null, + "acc_u": 0.09420821114369501, + "acc_t": 0.08907624633431085, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9108079748163694, + "t": 0.9213903743315508, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6439560439560439, + "t": 0.6379018612521151, + "punct": null + }, + "ud": { + "u": 0.9906542056074767, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8035714285714286, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6262522235745718, + "t": 0.6261983818921574, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9454061251664447, + "t": 0.9486356340288924, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6700696055684454, + "t": 0.6687956204379563, + "punct": null + }, + "ud": { + "u": 0.9794149512459371, + "t": 0.9745222929936307, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6712856043110085, + "t": 0.7402206619859578, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6454022988505747, + "t": 0.6383092562867844, + "punct": null + }, + "short-sequences": { + "u": 0.8970647697210198, + "t": 0.9170061998186997, + "punct": null, + "acc_u": 0.6041666666666666, + "acc_t": 0.6770833333333334, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6212093946698727, + "t": 0.6333505827301784, + "punct": null, + "acc_u": 0.10416666666666667, + "acc_t": 0.11458333333333333, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.920956838273531, + "t": 0.9235602094240837, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7247153382451439, + "t": 0.7506728651822852, + "punct": null + }, + "ud": { + "u": 0.9509234828496043, + "t": 0.9521304576538664, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7478728168383342, + "t": 0.780040733197556, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6848192771084337, + "t": 0.6860368098159508, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9743028977583379, + "t": 0.9739900387382401, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7888784165881244, + "t": 0.8504622077215878, + "punct": null + }, + "opus100": { + "u": 0.6581680830972616, + "t": 0.6583629893238434, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5092454835281616, + "t": 0.5211227672242699, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8278688524590164, + "t": 0.8796296296296297, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5155991256541035, + "t": 0.5437995824634656, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.7849640685461581, + "t": 0.7845982142857143, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6097915656810471, + "t": 0.6021653996774937, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.565195670274771, + "t": 0.5652028159570901, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.7908199856562276, + "t": 0.8419870895312939, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6318975552968568, + "t": 0.6411149825783973, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6727272727272727, + "t": 0.6643598615916955, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.6894621075784843, + "t": 0.7187362878455463, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6896830203916817, + "t": 0.709335687486206, + "punct": null + }, + "ud": { + "u": 0.8029670839128419, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7917808219178083, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5946354363430298, + "t": 0.6226325306938233, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.939599779695245, + "t": 0.9438202247191011, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7928571428571429, + "t": 0.7940962099125364, + "punct": null + }, + "opus100": { + "u": 0.9347651006711409, + "t": 0.9363074442354206, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.712632108706593, + "t": 0.7050831576481612, + "punct": null + }, + "ud": { + "u": 0.9658976930792377, + "t": 0.9658634538152611, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7002938295788443, + "t": 0.7018165706690296, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7065592635212888, + "t": 0.7050063681787009, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9000515198351365, + "t": 0.9022869022869023, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.683076923076923, + "t": 0.6831611818400193, + "punct": null + }, + "ud": { + "u": 0.9173967459324155, + "t": 0.9183168316831684, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5901309164149043, + "t": 0.5915492957746478, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.651618058330004, + "t": 0.6529497450837582, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.5813128326434062, + "t": 0.5508011310084826, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6060181945416374, + "t": 0.6067258290518449, + "punct": null + }, + "ud": { + "u": 0.9791231732776619, + "t": 0.9812889812889813, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9270833333333335, + "t": 0.9254341164453525, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.596591907243661, + "t": 0.5954440915562369, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.7775153519130845, + "t": 0.7784990911451571, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7171903881700554, + "t": 0.7254487856388595, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7061617996367192, + "t": 0.7085248916327336, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9112656467315716, + "t": 0.9100470523110987, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6239959839357431, + "t": 0.6237320122670441, + "punct": null + }, + "ud": { + "u": 0.9410205434062293, + "t": 0.9521203830369358, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5787234042553191, + "t": 0.5787234042553191, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5944026926091567, + "t": 0.5963315663554908, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.7916775032509754, + "t": 0.7987203412423353, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4815697781037962, + "t": 0.5276344878408253, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.7024935511607912, + "t": 0.7217868338557993, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.720666161998486, + "t": 0.7229652273595719, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.662523712958723, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.339345425068396, + "t": null, + "punct": null + }, + "ud": { + "u": 0.7411300919842313, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.218812541694463, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.7576656775469832, + "t": 0.8596999210318504, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6136865342163356, + "t": 0.6921498204207286, + "punct": null + }, + "opus100": { + "u": 0.6405472636815921, + "t": 0.6740947075208914, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.39196272568433316, + "t": 0.5255213505461768, + "punct": null + }, + "ud": { + "u": 0.9287410926365796, + "t": 0.9777777777777777, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7255369928400955, + "t": 0.7404063205417607, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.36946524766784916, + "t": 0.43734210209728513, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.850989522700815, + "t": 0.8639186900056466, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6640548481880509, + "t": 0.6690667405150927, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9829816201497616, + "t": 0.984869325997249, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.35918674698795183, + "t": 0.369542066027689, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.92560553633218, + "t": 0.9307189542483659, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.5166606950913651, + "t": 0.518184967093869, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.19932659932659932, + "t": 0.48292029470864034, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4146100691016782, + "t": 0.4911242603550296, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.6705653021442496, + "t": 0.7820299500831946, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.43567115652577804, + "t": 0.5410557184750733, + "punct": null + }, + "short-sequences": { + "u": 0.8509019928300118, + "t": 0.8627966330712907, + "punct": null, + "acc_u": 0.4303534303534304, + "acc_t": 0.4490644490644491, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5966798961841865, + "t": 0.6495231094700838, + "punct": null, + "acc_u": 0.04781704781704782, + "acc_t": 0.0997920997920998, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-9l.json b/wtpsplit/evaluation/evaluation_results/main/sat-9l.json new file mode 100644 index 00000000..8e065030 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-9l.json @@ -0,0 +1,2450 @@ +{ + "af": { + "opus100": { + "u": 0.7997750281214848, + "t": 0.8232271325796506, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7028189202102246, + "t": 0.7049751243781094, + "punct": null + }, + "ud": { + "u": 0.9922077922077922, + "t": 0.9934980494148244, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8946716232961586, + "t": 0.9095816464237517, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.720183486238532, + "t": 0.7149253731343284, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.5011795543905636, + "t": 0.534739738592066, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.554816644499335, + "t": 0.5707602339181287, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5771230502599652, + "t": 0.5724258289703316, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.9006574141709276, + "t": 0.9086161879895561, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.6528842947649216, + "t": 0.6461038961038961, + "punct": null + }, + "opus100": { + "u": 0.7290723981900453, + "t": 0.7268885367142102, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6256023465325791, + "t": 0.6610337972166997, + "punct": null + }, + "ud": { + "u": 0.8407460545193688, + "t": 0.8554307116104868, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7003654080389768, + "t": 0.766939687267312, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5940885763162896, + "t": 0.5940537989617745, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.7650248531405333, + "t": 0.7653543307086614, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7100306614104248, + "t": 0.7359020158203623, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7246825642613812, + "t": 0.71950591868245, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.736713201077639, + "t": 0.7356839209802452, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6911672583002715, + "t": 0.7369193154034229, + "punct": null + }, + "ud": { + "u": 0.9027777777777777, + "t": 0.8984944147644488, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6254908961085327, + "t": 0.6877323420074348, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.647834815027244, + "t": 0.6498276000320744, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9449197860962567, + "t": 0.9446376036373362, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.732394366197183, + "t": 0.7558365758754865, + "punct": null + }, + "ud": { + "u": 0.9895157264103844, + "t": 0.9880834160873883, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7635024549918168, + "t": 0.8073476702508962, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6941577361845029, + "t": 0.6928117264476048, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.797037037037037, + "t": 0.8334228909188608, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.38209159261790837, + "t": 0.4258852258852259, + "punct": null + }, + "ud": { + "u": 0.9345794392523363, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.21428571428571425, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.24047004872456293, + "t": 0.35084745762711866, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.8945473251028807, + "t": 0.9084171519322393, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.687235841081995, + "t": 0.7162768721946611, + "punct": null + }, + "ud": { + "u": 0.9818731117824774, + "t": 0.9823194486065328, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7586036147561278, + "t": 0.784234752589183, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.679994032522751, + "t": 0.6803222988059411, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9941176470588234, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7605633802816901, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5846153846153846, + "t": 0.5471698113207547, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.932260228034876, + "t": 0.9593650793650795, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7458392101551482, + "t": 0.7415029622700343, + "punct": null + }, + "opus100": { + "u": 0.9006485084306096, + "t": 0.9135868120180805, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7029234737747206, + "t": 0.744300073547438, + "punct": null + }, + "ud": { + "u": 0.9202391696750902, + "t": 0.9235251274581209, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7349819927971188, + "t": 0.7369036596657085, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.688, + "t": 0.6891141214306598, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.7617317590069634, + "t": 0.7802167268685746, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6411181244364292, + "t": 0.6637884511602806, + "punct": null + }, + "ud": { + "u": 0.9929906542056075, + "t": 0.9929988331388565, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7032868077442593, + "t": 0.7473572938689217, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9182291666666668, + "t": 0.9220267786820687, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7433547204399633, + "t": 0.7719910291552454, + "punct": null + }, + "ud": { + "u": 0.9407114624505929, + "t": 0.9407114624505929, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7907771135781383, + "t": 0.8076923076923076, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7336121377163977, + "t": 0.7348377306769789, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9695945945945946, + "t": 0.9695945945945946, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8234711562267889, + "t": 0.8307372793354103, + "punct": null + }, + "opus100": { + "u": 0.8181146935761753, + "t": 0.8566978193146418, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6463042150274892, + "t": 0.7560531111689665, + "punct": null + }, + "ud": { + "u": 0.9656357388316152, + "t": 0.9653579676674365, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7949465500485908, + "t": 0.829551451187335, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7450361226735563, + "t": 0.7524873096446701, + "punct": null + }, + "legal-all-laws": { + "u": 0.8792063318379109, + "t": 0.8795828539353421, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7331610895837661, + "t": 0.7601576495533636, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.741422977644806, + "t": 0.7900768779735868, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5892289153421161, + "t": 0.5864954360552334, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.923076923076923, + "t": 0.935475234270415, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6710044733631557, + "t": 0.7133364973896537, + "punct": null + }, + "ud": { + "u": 0.9754901960784313, + "t": 0.9731051344743276, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7669322709163346, + "t": 0.8179723502304147, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6673678434241814, + "t": 0.6731017346012329, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9688373092628412, + "t": 0.9667849538679916, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7075756743393947, + "t": 0.7513846153846154, + "punct": null + }, + "opus100": { + "u": 0.9260156039817057, + "t": 0.9161661008096109, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7954055994257, + "t": 0.8009685230024213, + "punct": null + }, + "ud": { + "u": 0.9349973998959957, + "t": 0.9411764705882353, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6903225806451613, + "t": 0.6937101185050137, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6929166028292733, + "t": 0.6925165531367599, + "punct": null + }, + "legal-all-judgements": { + "u": 0.8452568106437217, + "t": 0.8557549983881254, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6563697190578182, + "t": 0.6568426220942201, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9213844915481619, + "t": 0.9230350829480555, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8002870126763932, + "t": 0.821917808219178, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6695188892476591, + "t": 0.6761544733526055, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9829826166514182, + "t": null, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7305317065823166, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9251844046364593, + "t": 0.934010152284264, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6941450010568591, + "t": 0.7357314148681054, + "punct": null + }, + "ud": { + "u": 0.9632495164410058, + "t": 0.9632258064516129, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7126379137412235, + "t": 0.7666878575969486, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6690478520403171, + "t": 0.6698182892598612, + "punct": null + }, + "legal-all-laws": { + "u": 0.7809824004556978, + "t": 0.8576572094824287, + "punct": null, + "acc_u": 0.0273224043715847, + "acc_t": 0.15300546448087432, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7375201288328008, + "t": 0.7386565627994218, + "punct": null, + "acc_u": 0.01639344262295082, + "acc_t": 0.01639344262295082, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7405261381854576, + "t": 0.7516664141181939, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5811012120217184, + "t": 0.5957032413717254, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9613781606001667, + "t": 0.9413793103448276, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7304576308298664, + "t": 0.763492512009042, + "punct": null + }, + "opus100": { + "u": 0.8662546353522869, + "t": 0.9121514992109417, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6159724875811998, + "t": 0.6820620480522509, + "punct": null + }, + "ud": { + "u": 0.9428922860657178, + "t": 0.9437543133195306, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7054085155350978, + "t": 0.7213691618682021, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7153853745188986, + "t": 0.7153853745188986, + "punct": null + }, + "short-sequences": { + "u": 0.8539243580329108, + "t": 0.8578503832035916, + "punct": null, + "acc_u": 0.3842364532019704, + "acc_t": 0.3497536945812808, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6495938675959796, + "t": 0.6779480712052678, + "punct": null, + "acc_u": 0.04926108374384237, + "acc_t": 0.06403940886699508, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8424138773515758, + "t": 0.8714248904921411, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5824284304047385, + "t": 0.6098203592814372, + "punct": null + }, + "ud": { + "u": 0.9741856177012909, + "t": 0.975084589357121, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6761514347721244, + "t": 0.7062554050158547, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.612705257920053, + "t": 0.6125267137925365, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.6202346041055719, + "t": 0.6150331277130455, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6096041792244324, + "t": 0.6402699662542183, + "punct": null + }, + "ud": { + "u": 0.9849510910458992, + "t": 0.9912911775842485, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8924768120920646, + "t": 0.9309721720274666, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6698312732058092, + "t": 0.6753662316884156, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.991111111111111, + "t": 0.9875793541264145, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.722400857449089, + "t": 0.7630784708249497, + "punct": null + }, + "opus100": { + "u": 0.9253731343283582, + "t": 0.9379347244515783, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7134172818063397, + "t": 0.7510959571358987, + "punct": null + }, + "ud": { + "u": 0.9485426412378553, + "t": 0.9473304473304472, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7310798683816933, + "t": 0.7473614775725593, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6788668607606637, + "t": 0.6795046847780027, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9720558882235528, + "t": 0.970970970970971, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7262658227848101, + "t": 0.7494356659142212, + "punct": null + }, + "opus100": { + "u": 0.8924731182795699, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6644964394710071, + "t": null, + "punct": null + }, + "ud": { + "u": 0.976315789473684, + "t": 0.9761904761904762, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7045908183632735, + "t": 0.7515151515151516, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6921996441614384, + "t": 0.6927037792674633, + "punct": null + }, + "legal-all-laws": { + "u": 0.7986404026892564, + "t": 0.8411301412744377, + "punct": null, + "acc_u": 0.2766884531590414, + "acc_t": 0.40522875816993464, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5862251456483704, + "t": 0.6095734187980818, + "punct": null, + "acc_u": 0.013071895424836602, + "acc_t": 0.02178649237472767, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8547066028089197, + "t": 0.8551428161600775, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5914666266080272, + "t": 0.6220420932095297, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.6935380678182982, + "t": 0.6775992128566742, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.691609977324263, + "t": 0.6655386350817823, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.8480947476828011, + "t": 0.853125, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5875728155339806, + "t": 0.6290956749672345, + "punct": null + }, + "ud": { + "u": 0.8604898828541001, + "t": 0.9011235955056179, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5458823529411764, + "t": 0.6028921023359288, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5066666666666667, + "t": 0.5454545454545454, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.8525059665871121, + "t": 0.8560712611345522, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6253192265596497, + "t": 0.6645396536007293, + "punct": null + }, + "ud": { + "u": 0.6997518610421836, + "t": 0.7279480037140204, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5448548812664907, + "t": 0.5774647887323944, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.8974425213123224, + "t": 0.910958904109589, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6904916612518951, + "t": 0.7113175262771939, + "punct": null + }, + "ud": { + "u": 0.9902097902097902, + "t": 0.9861878453038674, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7323290845886443, + "t": 0.753103448275862, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.681072950614189, + "t": 0.6812977099236641, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9456112008616048, + "t": 0.9491162292447778, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7975334018499487, + "t": 0.8059048660470203, + "punct": null + }, + "opus100": { + "u": 0.726280834914611, + "t": 0.7529286474973377, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.569171974522293, + "t": 0.5668475579674396, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43624649277772, + "t": 0.44158811768066264, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8790383170548458, + "t": 0.8996340825927862, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5393959290873276, + "t": 0.6155373541821793, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3870967741935483, + "t": 0.37499999999999994, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.8936715347168844, + "t": 0.9131238447319778, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6312437810945274, + "t": 0.6643725625143382, + "punct": null + }, + "ud": { + "u": 0.9720670391061453, + "t": 0.9690140845070423, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7253012048192772, + "t": 0.7324290998766955, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5902834396431825, + "t": 0.5914012594572554, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9605034722222222, + "t": 0.9626188896261888, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7758224942616679, + "t": 0.7913188647746243, + "punct": null + }, + "opus100": { + "u": 0.6271421954608614, + "t": 0.6232830443593785, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5184294871794871, + "t": 0.525391043496893, + "punct": null + }, + "ud": { + "u": 0.994726433750824, + "t": 0.9950544015825915, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9006750241080039, + "t": 0.9042448173741362, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5312148129613412, + "t": 0.5309874386490309, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9321766561514196, + "t": 0.9399574920297555, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7146986880142318, + "t": 0.737835875090777, + "punct": null + }, + "ud": { + "u": 0.9673366834170855, + "t": 0.971357409713574, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.631199278629396, + "t": 0.672340425531915, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6809088167286619, + "t": 0.6816695518368917, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.8651287857345032, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6909417040358744, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9750692520775622, + "t": 0.9758364312267658, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6529051987767585, + "t": 0.6546026750590086, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6657806131490341, + "t": 0.6685168634460699, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.884393063583815, + "t": 0.905505341002465, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6504470783946766, + "t": 0.6778647031753335, + "punct": null + }, + "ud": { + "u": 0.9894736842105263, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6718304117407256, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6482888878895534, + "t": 0.6496308915388984, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.8528180354267312, + "t": 0.8496560759908286, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5394954020278236, + "t": 0.5312317571511967, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.36933797909407656, + "t": 0.3597883597883598, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9416175682913767, + "t": 0.9463705308775731, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6564512547190762, + "t": 0.672147995889003, + "punct": null + }, + "ud": { + "u": 0.8899871503410103, + "t": 0.8896340862017951, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.567893451020569, + "t": 0.5820005187170398, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6806825106642291, + "t": 0.6745870762097943, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.8882737795671868, + "t": 0.9004885574697865, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6346863468634686, + "t": 0.6938967136150235, + "punct": null + }, + "ud": { + "u": 0.9651293588301463, + "t": 0.9179978700745473, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.731084776663628, + "t": 0.7770833333333332, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6828923164001698, + "t": 0.6866952789699571, + "punct": null + }, + "legal-all-laws": { + "u": 0.6780523472219309, + "t": 0.6831377087905489, + "punct": null, + "acc_u": 0.022727272727272728, + "acc_t": 0.04971590909090909, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.4789940027501501, + "t": 0.4904072003045458, + "punct": null, + "acc_u": 0.02130681818181818, + "acc_t": 0.02130681818181818, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8406810828475715, + "t": 0.8446535435562069, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5329223104585938, + "t": 0.5681610431483843, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8674574522949974, + "t": 0.8438021122846024, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7412891986062716, + "t": 0.7371794871794872, + "punct": null + }, + "opus100": { + "u": 0.8935685828116106, + "t": 0.8934861615879228, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8692737430167597, + "t": 0.8700689655172412, + "punct": null + }, + "ud": { + "u": 0.9732510288065844, + "t": 0.9728601252609603, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8794466403162056, + "t": 0.8936605316973415, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9211455018802429, + "t": 0.9226193880468975, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9856194690265486, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5551301684532924, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.7486515641855449, + "t": 0.9192139737991267, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.23116147308781868, + "t": 0.29329559525915444, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6070180096464445, + "t": 0.6082890152209793, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9759910664433278, + "t": 0.9777034559643256, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8399581589958159, + "t": 0.8260623229461757, + "punct": null + }, + "opus100": { + "u": 0.8176706827309237, + "t": 0.7792672028596962, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.756228627259404, + "t": 0.7637705848949461, + "punct": null + }, + "ud": { + "u": 0.968783638320775, + "t": 0.8701837581505631, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8548057259713702, + "t": 0.8146853146853147, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7356118292898883, + "t": 0.7369052721817404, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.9242709313264347, + "t": 0.9287299630086313, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7004347826086956, + "t": 0.7189079878665319, + "punct": null + }, + "opus100": { + "u": 0.7597707139134967, + "t": 0.7479908151549943, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7517941103687207, + "t": 0.7786885245901639, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7974683544303798, + "t": 0.7913978494623655, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.7015075376884422, + "t": 0.7179487179487178, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6251866600298656, + "t": 0.6199770378874857, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4717241379310345, + "t": 0.4718361375274323, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.7759802577460927, + "t": 0.7868935737871476, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7245703669298653, + "t": 0.7553005737091544, + "punct": null + }, + "ud": { + "u": 0.9948967193195625, + "t": 0.9961202715809894, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9773844641101278, + "t": 0.9855072463768115, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7587051142546245, + "t": 0.7601646699662333, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.7889908256880734, + "t": 0.6525273948391658, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5906396893521356, + "t": 0.6705097087378641, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37858660998937305, + "t": 0.38034348752663916, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.8668880169031089, + "t": 0.8804992199687989, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7339847991313789, + "t": 0.7573780677228953, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7421383647798743, + "t": 0.7447595561035759, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.6549047282992237, + "t": 0.8848692251283304, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.4567364677992888, + "t": 0.7607904316172647, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6153846153846154, + "t": 0.5625000000000001, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9734613212874081, + "t": 0.9675952245594088, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7022708158116064, + "t": 0.7692307692307693, + "punct": null + }, + "opus100": { + "u": 0.8512619456015683, + "t": 0.8773730118009236, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6115604655750642, + "t": 0.656391659111514, + "punct": null + }, + "ud": { + "u": 0.9622331691297209, + "t": 0.9673735725938011, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6517571884984026, + "t": 0.6720116618075802, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6803331836999352, + "t": 0.6805773903101329, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9743589743589743, + "t": 0.9663234066239911, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7207405774741018, + "t": 0.741017533774073, + "punct": null + }, + "opus100": { + "u": 0.8436966593513778, + "t": 0.8759770713913496, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.617670054730258, + "t": 0.677387431964374, + "punct": null + }, + "ud": { + "u": 0.9517338331771321, + "t": 0.9591882750845547, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6595995288574794, + "t": 0.6621759542763829, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6871800020078306, + "t": 0.6887844979448032, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9169960474308301, + "t": 0.9213602550478215, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4990378447722899, + "t": 0.587005906406179, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5835010060362174, + "t": 0.5889328063241107, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9343103899502747, + "t": 0.9399311987298227, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6672212978369384, + "t": 0.6904761904761906, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6699502584609383, + "t": 0.6697589900535578, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.7685834502103788, + "t": 0.8246681415929202, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5877425044091711, + "t": 0.6039980961446929, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5044055676158855, + "t": 0.5137116481129514, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.8679791546033584, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.8648849294729027, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8028791657220584, + "t": 0.8117474609988482, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.8943175783324483, + "t": 0.9073010664479081, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6641940085592012, + "t": 0.6674418604651162, + "punct": null + }, + "ud": { + "u": 0.9545454545454545, + "t": 0.9156626506024096, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.525, + "t": 0.5000000000000001, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42012264837334995, + "t": 0.43155413369254086, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.8768627450980392, + "t": 0.8899033297529537, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6245413779046066, + "t": 0.662829736211031, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.653456340956341, + "t": 0.6668115312183109, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.6792071197411004, + "t": 0.813175501801338, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4222357229647631, + "t": 0.489556135770235, + "punct": null + }, + "ud": { + "u": 0.8936170212765958, + "t": 0.886240520043337, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.44690265486725667, + "t": 0.4821428571428571, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4131455399061033, + "t": 0.42152466367713, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.7864406779661016, + "t": 0.8078500292911541, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7913743829566121, + "t": 0.8101704709621497, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8894863915715541, + "t": 0.9041496201052016, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.729602510460251, + "t": 0.7336174746936601, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6894214475913822, + "t": 0.7003686150605581, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.588782757776145, + "t": 0.5890196078431372, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.921161825726141, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7533512064343164, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9326923076923077, + "t": 0.9506057781919851, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7723440134907251, + "t": 0.7768888888888889, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7584852452412125, + "t": 0.758134652871495, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9466630930045564, + "t": 0.9476790984706197, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.77576895984973, + "t": 0.7949811794228356, + "punct": null + }, + "ud": { + "u": 0.9829232995658466, + "t": 0.9885518030910132, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8358050847457628, + "t": 0.8406363382640246, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.7083919362400375, + "t": 0.7184517497348887, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6351633078526755, + "t": 0.6369394476817837, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5603448275862069, + "t": 0.5644955300127714, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.934453781512605, + "t": 0.9203438395415473, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7154904571682202, + "t": 0.7403375068045726, + "punct": null + }, + "opus100": { + "u": 0.9289878113407525, + "t": 0.9356913183279743, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7123467600700525, + "t": 0.7357907253269917, + "punct": null + }, + "ud": { + "u": 0.9670972459176213, + "t": 0.9700833742030407, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7213755373192653, + "t": 0.7594765342960289, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6972198308603839, + "t": 0.700413323608072, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9220498723738464, + "t": 0.9339207048458149, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7358134750557176, + "t": 0.7661897590361446, + "punct": null + }, + "opus100": { + "u": 0.7483836206896552, + "t": 0.7303732303732304, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7175763645468201, + "t": 0.7254545454545455, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6001719690455719, + "t": 0.5959183673469387, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9157318027654578, + "t": 0.9213720316622691, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6908101318819343, + "t": 0.7286571296723582, + "punct": null + }, + "ud": { + "u": 0.958984375, + "t": 0.9622190339550455, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7119565217391305, + "t": 0.7372330547818013, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.705922696320972, + "t": 0.7036426322890121, + "punct": null + }, + "legal-all-laws": { + "u": 0.5505157463735562, + "t": 0.5201242793461893, + "punct": null, + "acc_u": 0.017241379310344827, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5775379841965976, + "t": 0.5494967996767561, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8033903213916831, + "t": 0.7683590192601546, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6023955498437517, + "t": 0.6305907941098997, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.975475337558556, + "t": 0.9631297495074584, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7136505113383727, + "t": 0.7007970570202331, + "punct": null + }, + "opus100": { + "u": 0.9133247089262614, + "t": 0.9285336156696665, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6673575129533679, + "t": 0.6906605922551253, + "punct": null + }, + "ud": { + "u": 0.7290944123314065, + "t": 0.8650217706821481, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.43086632243258743, + "t": 0.489795918367347, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6813966452136015, + "t": 0.6790679835075271, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9752252252252253, + "t": 0.9765886287625418, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.7650882079851439, + "t": 0.7970401691331924, + "punct": null + }, + "opus100": { + "u": 0.8696088264794383, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5932009167303285, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8509212730318257, + "t": 0.8466666666666667, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.5957805907172996, + "t": 0.6170403587443946, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6937366271153473, + "t": 0.693222185383413, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8003010536879077, + "t": 0.8203978705519752, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6419001218026796, + "t": 0.6753492777646223, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5047318611987383, + "t": 0.5074850299401197, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9220711297071129, + "t": 0.938152610441767, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7038961038961039, + "t": 0.7313101406365654, + "punct": null + }, + "ud": { + "u": 0.9614147909967846, + "t": 0.9743589743589745, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8146596858638743, + "t": 0.813452443510247, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6947432207241326, + "t": 0.6966006864450609, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9255208333333335, + "t": 0.9336856010568032, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7112276103101791, + "t": 0.7423915648214714, + "punct": null + }, + "ud": { + "u": 0.9646133682830931, + "t": 0.9654576856649396, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7663981588032222, + "t": 0.7694204685573367, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7191244359147259, + "t": 0.7225679012345678, + "punct": null + }, + "short-sequences": { + "u": 0.7718336884226058, + "t": 0.7791813159498522, + "punct": null, + "acc_u": 0.27456011730205276, + "acc_t": 0.2998533724340176, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5972693669693967, + "t": 0.5932133750608234, + "punct": null, + "acc_u": 0.10667155425219942, + "acc_t": 0.10117302052785923, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9104633003643935, + "t": 0.9234065345474023, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6767397318578421, + "t": 0.692952639927487, + "punct": null + }, + "ud": { + "u": 0.9908256880733944, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.8448275862068966, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6623806372317292, + "t": 0.6666340317211671, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9422975119110641, + "t": 0.950547981823042, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6984891613750821, + "t": 0.7068181818181819, + "punct": null + }, + "ud": { + "u": 0.9794149512459371, + "t": 0.9767441860465118, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7604433077578858, + "t": 0.8166501486620417, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.67816091954023, + "t": 0.6783598451275832, + "punct": null + }, + "short-sequences": { + "u": 0.881047656047656, + "t": 0.9130443341380842, + "punct": null, + "acc_u": 0.546875, + "acc_t": 0.6666666666666666, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6049405333944807, + "t": 0.6368522992906217, + "punct": null, + "acc_u": 0.09895833333333333, + "acc_t": 0.109375, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9202804466372371, + "t": 0.9258968316313172, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7511111111111112, + "t": 0.8, + "punct": null + }, + "ud": { + "u": 0.9495268138801262, + "t": 0.9505263157894737, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7879341864716636, + "t": 0.8065173116089613, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7279522399650536, + "t": 0.7281453548165924, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9738846572361263, + "t": 0.9794786466999444, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.74622892635315, + "t": 0.8370846730975348, + "punct": null + }, + "opus100": { + "u": 0.6226704670028502, + "t": 0.6217968508799012, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5080789946140035, + "t": 0.49193768789286685, + "punct": null + }, + "ud": { + "u": 0.9953917050691244, + "t": 1.0, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7862595419847328, + "t": 0.8534482758620691, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5128612047874099, + "t": 0.5450294283641054, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.7586759209823812, + "t": 0.7617477328936523, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5964425964425963, + "t": 0.5981264637002341, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5733612497986793, + "t": 0.5733788395904438, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.8057142857142858, + "t": 0.8541723666210671, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6408839779005525, + "t": 0.6671705719324766, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.685025817555938, + "t": 0.6895368782161235, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.677487922705314, + "t": 0.7426042394595853, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6743648960739029, + "t": 0.720164609053498, + "punct": null + }, + "ud": { + "u": 0.7861579414374447, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.7660869565217393, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5869419208879777, + "t": 0.635034700004922, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9418859649122807, + "t": 0.9445958219800181, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.8090320322072467, + "t": 0.809575625680087, + "punct": null + }, + "opus100": { + "u": 0.9332977588046958, + "t": 0.9366612989801396, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7298114963928322, + "t": 0.7380091588334539, + "punct": null + }, + "ud": { + "u": 0.9644466700050075, + "t": 0.96579476861167, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.730188679245283, + "t": 0.7249022164276401, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7232678386763186, + "t": 0.7228244945795489, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.8995901639344261, + "t": 0.9071949947862357, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6663952778343172, + "t": 0.7221830157609974, + "punct": null + }, + "ud": { + "u": 0.9237500000000001, + "t": 0.924317617866005, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.632887189292543, + "t": 0.6416666666666667, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6827611870871708, + "t": 0.6833179723502305, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.6135565757493924, + "t": 0.5689856198989507, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5820614676980974, + "t": 0.6018899927307972, + "punct": null + }, + "ud": { + "u": 0.9916666666666667, + "t": 0.989517819706499, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.9478079331941546, + "t": 0.9534643226473629, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5973474191881495, + "t": 0.5966214762212181, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.7804423748544821, + "t": 0.7894876559596495, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7108776537535565, + "t": 0.7483600104959329, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7243835616438357, + "t": 0.7215841584158416, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9179600886917959, + "t": 0.9175286552977355, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6474530831099196, + "t": 0.6678304239401496, + "punct": null + }, + "ud": { + "u": 0.9410205434062293, + "t": 0.9569892473118279, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.6050808314087759, + "t": 0.6191135734072022, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.624791086350975, + "t": 0.6213235294117647, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.8041666666666667, + "t": 0.8094229751191107, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.5128010620140336, + "t": 0.5529595015576324, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.7245467224546722, + "t": 0.725108225108225, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.7156382631407117, + "t": 0.7313891020721413, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.7521840097312839, + "t": null, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.37717851251524065, + "t": null, + "punct": null + }, + "ud": { + "u": 0.749003984063745, + "t": null, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.2846975088967972, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.7882504841833441, + "t": 0.8592283628779981, + "punct": null + }, + "ersatz-corrupted-asr": { + "u": 0.5918367346938777, + "t": 0.6575996182295394, + "punct": null + }, + "opus100": { + "u": 0.658924205378973, + "t": 0.6635273972602739, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.4212002243409983, + "t": 0.5172277227722772, + "punct": null + }, + "ud": { + "u": 0.9437939110070258, + "t": 0.9765886287625419, + "punct": null + }, + "ud-corrupted-asr": { + "u": 0.704714640198511, + "t": 0.7381703470031545, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5147431467403825, + "t": 0.5180110038409634, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.8507288629737609, + "t": 0.8669265033407572, + "punct": null + }, + "opus100-corrupted-asr": { + "u": 0.6737247353224254, + "t": 0.6875538947973555, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.981645139360979, + "t": 0.9896337249481687, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.3799359658484525, + "t": 0.42111173498034815, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.9267872523686477, + "t": 0.9365426695842451, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.5628140703517589, + "t": 0.5639476334340383, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.39689578713968954, + "t": 0.4987146529562982, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.5161020493517358, + "t": 0.543065693430657, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.7039030955585465, + "t": 0.805414551607445, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.45622119815668194, + "t": 0.5776061776061775, + "punct": null + }, + "short-sequences": { + "u": 0.8266205612446959, + "t": 0.8579665619201131, + "punct": null, + "acc_u": 0.36174636174636177, + "acc_t": 0.4490644490644491, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5885966892757343, + "t": 0.6444099064558158, + "punct": null, + "acc_u": 0.04573804573804574, + "acc_t": 0.09147609147609148, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-sm-12l.json b/wtpsplit/evaluation/evaluation_results/main/sat-sm-12l.json new file mode 100644 index 00000000..e222409b --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-sm-12l.json @@ -0,0 +1,1645 @@ +{ + "af": { + "opus100": { + "u": 0.9228206551915603, + "t": null, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7727461570419609, + "t": null, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.8569926393270243, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.16666666666666666, + "t": null, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.8980544747081711, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.8334274421230942, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8824427480916031, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.48829529610332423, + "t": null, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.894929430214323, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7516778523489933, + "t": null, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.9097162510748065, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9592573491490458, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.746497230368198, + "t": null, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9672353100460331, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9995017438963627, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7545944913838368, + "t": null, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.9155005382131324, + "t": null, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.21498708010335918, + "t": null, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.9449664429530201, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9993983152827919, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7405452102130928, + "t": null, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.988095238095238, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4705882352941176, + "t": null, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9913765570105397, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9532053015958886, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9724255600198138, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7702973197285554, + "t": null, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.876909254267745, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9970811441914769, + "t": null, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9560021727322107, + "t": null, + "punct": null + }, + "ud": { + "u": 0.98545101842871, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7843439006873911, + "t": null, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.995193666949392, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9070155902004454, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9850402761795166, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8053684477082805, + "t": null, + "punct": null + }, + "legal-all-laws": { + "u": 0.9270252228744192, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8085419436835394, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8128756881934007, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.7204728115166331, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9668478260869565, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9827586206896552, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7438972162740899, + "t": null, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9866781263429307, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9612868047982552, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9729177312212569, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.755235219635726, + "t": null, + "punct": null + }, + "legal-all-judgements": { + "u": 0.930858602425791, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.7451231738130479, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9661387220098308, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7335933525521452, + "t": null, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9970961887477314, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9603500136724091, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9929441949967929, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7494069550295261, + "t": null, + "punct": null + }, + "legal-all-laws": { + "u": 0.8933690655461626, + "t": null, + "punct": null, + "acc_u": 0.273224043715847, + "acc_t": null, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8334968201842455, + "t": null, + "punct": null, + "acc_u": 0.16393442622950818, + "acc_t": null, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8010546756322073, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6533315684379014, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9956068094453597, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9489247311827957, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9864911673016973, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7945219173289348, + "t": null, + "punct": null + }, + "short-sequences": { + "u": 0.9183852434278218, + "t": null, + "punct": null, + "acc_u": 0.5270935960591133, + "acc_t": null, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.8198776683619725, + "t": null, + "punct": null, + "acc_u": 0.26108374384236455, + "acc_t": null, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.9438872323122797, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9987646695491044, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6734227521112768, + "t": null, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.7891229005598507, + "t": null, + "punct": null + }, + "ud": { + "u": 0.999236641221374, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7122995737771463, + "t": null, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9947295423023579, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9650501219181794, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9882268997502676, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7816993464052288, + "t": null, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9821192052980132, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9406919275123559, + "t": null, + "punct": null + }, + "ud": { + "u": 0.983957219251337, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7646839157108563, + "t": null, + "punct": null + }, + "legal-all-laws": { + "u": 0.958340068404897, + "t": null, + "punct": null, + "acc_u": 0.7690631808278867, + "acc_t": null, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8954279860179243, + "t": null, + "punct": null, + "acc_u": 0.5664488017429193, + "acc_t": null, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8508394657816567, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6877406233479306, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.9423019431988041, + "t": null, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.8635654074305338, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9865361077111383, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6666666666666666, + "t": null, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.9194174757281552, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8676923076923078, + "t": null, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.9544105745886161, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9944289693593316, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7425200616463836, + "t": null, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9699289229086933, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.8926940639269406, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3003490236770116, + "t": null, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.9305263157894736, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3846153846153846, + "t": null, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9290836653386454, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9843081312410842, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6927723177723178, + "t": null, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9895994689090506, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.8402061855670103, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9990095741168703, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6129987311433808, + "t": null, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9650122050447517, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9987639060568604, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7564840708449855, + "t": null, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.9238021638330758, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9906191369606004, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7481222347978186, + "t": null, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.9584257206208425, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9961046188091264, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7334908082571634, + "t": null, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.9375612945406996, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.04123711340206186, + "t": null, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9680763983628922, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9650599873710798, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7440225035161744, + "t": null, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.9237668161434978, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9965477560414269, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.730341425669794, + "t": null, + "punct": null + }, + "legal-all-laws": { + "u": 0.8063534995946866, + "t": null, + "punct": null, + "acc_u": 0.2869318181818182, + "acc_t": null, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7189031476356387, + "t": null, + "punct": null, + "acc_u": 0.11363636363636363, + "acc_t": null, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8828649987079539, + "t": null, + "punct": null, + "acc_u": 0.02040816326530612, + "acc_t": null, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6229616452101648, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.9127937336814621, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.8998815165876777, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9732510288065844, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.909928780896523, + "t": null, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9911699779249448, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.9396739130434784, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6898538122928102, + "t": null, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9988901220865705, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9538977367979883, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9962904080551139, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7850228310502283, + "t": null, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.9425556858147713, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.8968980797636633, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8139255702280912, + "t": null, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.9148264984227129, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.116017316017316, + "t": null, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.8424177010253643, + "t": null, + "punct": null + }, + "ud": { + "u": 0.999514091350826, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7701349381729278, + "t": null, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.9459693730135799, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.011368605159597726, + "t": null, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.9674479166666666, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7522123893805309, + "t": null, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.9824561403508771, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.75, + "t": null, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9955506117908787, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9319518342201064, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9843363561417973, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7610337126449006, + "t": null, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9977973568281938, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9331514324693043, + "t": null, + "punct": null + }, + "ud": { + "u": 0.994701681640175, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7629435718440953, + "t": null, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9690436705362078, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1866666666666667, + "t": null, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9614243323442138, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7500668842634706, + "t": null, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8989712476919018, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3974666957851059, + "t": null, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.8648648648648648, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8517105871474803, + "t": null, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9682274247491638, + "t": null, + "punct": null + }, + "ud": { + "u": 0.988235294117647, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4913126071445119, + "t": null, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.9576601671309192, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.738527871881737, + "t": null, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.8919213973799126, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9635193133047211, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.543046357615894, + "t": null, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.9303496503496503, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9493721690270053, + "t": null, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.8684288684288685, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6613891726251276, + "t": null, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.950941394855476, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9741219963031423, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8136404427161231, + "t": null, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9619433198380566, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9945667715184443, + "t": null, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.8600464576074333, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4795321637426901, + "t": null, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9905607995558023, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9618943930321175, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9977381251570746, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7777153653679212, + "t": null, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9501216545012166, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9020957147325618, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6508659981768459, + "t": null, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9531502423263327, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9899952358265842, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7618905323970316, + "t": null, + "punct": null + }, + "legal-all-laws": { + "u": 0.8129326303690948, + "t": null, + "punct": null, + "acc_u": 0.22413793103448276, + "acc_t": null, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7198021254425427, + "t": null, + "punct": null, + "acc_u": 0.15517241379310345, + "acc_t": null, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8698780384579432, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.7046071835785037, + "t": null, + "punct": null, + "acc_u": 0.0, + "acc_t": null, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9947412122889565, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9709270433351619, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9941706412294647, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7602765025592316, + "t": null, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9949579831932773, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.8909803921568628, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9404617253948967, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7735394499096566, + "t": null, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8890066225165564, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6496815286624203, + "t": null, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9663842579939873, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9889182058047493, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.769440389294404, + "t": null, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9596990865126277, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9935036812472932, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7889213126503865, + "t": null, + "punct": null + }, + "short-sequences": { + "u": 0.8060720417575257, + "t": null, + "punct": null, + "acc_u": 0.3812316715542522, + "acc_t": null, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6735773339970553, + "t": null, + "punct": null, + "acc_u": 0.15212609970674487, + "acc_t": null, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9703133589884553, + "t": null, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6989548232337655, + "t": null, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9671284976908449, + "t": null, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7579353006794441, + "t": null, + "punct": null + }, + "short-sequences": { + "u": 0.9201012002023031, + "t": null, + "punct": null, + "acc_u": 0.6979166666666666, + "acc_t": null, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7654431216931217, + "t": null, + "punct": null, + "acc_u": 0.2916666666666667, + "acc_t": null, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9629831246597713, + "t": null, + "punct": null + }, + "ud": { + "u": 0.968186638388123, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7972672386399746, + "t": null, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9862107004964149, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.8532518065591995, + "t": null, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5596430522673466, + "t": null, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.9025352112676057, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3280793928779918, + "t": null, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.9449118046132972, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.08904109589041097, + "t": null, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.7988209285187914, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8907849829351536, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6986602470169563, + "t": null, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9796375864001494, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9584699453551914, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9828109201213346, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7745322934189733, + "t": null, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9525087201502549, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9814126394052044, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7634040840961674, + "t": null, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.7265415549597855, + "t": null, + "punct": null + }, + "ud": { + "u": 0.991701244813278, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6777416784159872, + "t": null, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.8899793388429751, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5680724051607933, + "t": null, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9597765363128492, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9986111111111111, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7196327683615821, + "t": null, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.9310933940774488, + "t": null, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.9238395673726905, + "t": null, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.6014765707397921, + "t": null, + "punct": null + }, + "ud": { + "u": 0.859560067681895, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.9199888486200167, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.8918384637108161, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9877913429522752, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5179933590594992, + "t": null, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.9598358252711814, + "t": null, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9993089149965445, + "t": null, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4236234458259325, + "t": null, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.8985750209555743, + "t": null, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.5955826351865955, + "t": null, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.5639024390243902, + "t": null, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.572541382667965, + "t": null, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.8322884012539186, + "t": null, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.58416500332668, + "t": null, + "punct": null + }, + "short-sequences": { + "u": 0.9024909186144939, + "t": null, + "punct": null, + "acc_u": 0.6008316008316008, + "acc_t": null, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7598607073745072, + "t": null, + "punct": null, + "acc_u": 0.23492723492723494, + "acc_t": null, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-sm-12l_no_corruptions.json b/wtpsplit/evaluation/evaluation_results/main/sat-sm-12l_no_corruptions.json new file mode 100644 index 00000000..bc9aa2ce --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-sm-12l_no_corruptions.json @@ -0,0 +1,1645 @@ +{ + "af": { + "opus100": { + "u": 0.9172394830904592, + "t": 0.9187199093741149, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6381243628950051, + "t": 0.704042715484363, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.8719076415612974, + "t": 0.8683173888576252, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.25, + "t": 0.5725338491295937, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.8748006379585327, + "t": 0.9091594421409724, + "punct": null + }, + "opus100": { + "u": 0.8113207547169812, + "t": 0.8269441401971522, + "punct": null + }, + "ud": { + "u": 0.9061488673139159, + "t": 0.9076175040518638, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3686643552913984, + "t": 0.6049648162627053, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.9012644605864945, + "t": 0.8860471724921852, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.24380574826560952, + "t": 0.7236945272071506, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.9121602288984264, + "t": 0.9053063617707418, + "punct": null + }, + "ud": { + "u": 0.9576581285938317, + "t": 0.9570680628272251, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5985417835109367, + "t": 0.6998726925525142, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9670270270270271, + "t": 0.9693683925182978, + "punct": null + }, + "ud": { + "u": 0.999003984063745, + "t": 0.999003984063745, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5259275984044555, + "t": 0.6982340183827327, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.9145646867371846, + "t": 0.919412905012462, + "punct": null + }, + "ud": { + "u": 0.99009900990099, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.07343843544202754, + "t": 0.3857066175906756, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.9463756399892213, + "t": 0.9540983606557378, + "punct": null + }, + "ud": { + "u": 0.9996990671080349, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6033843457156342, + "t": 0.6694856918084374, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9940828402366864, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1851851851851852, + "t": 0.43835616438356156, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9951938481256007, + "t": 0.9951721918249115, + "punct": null + }, + "opus100": { + "u": 0.9521479064709082, + "t": 0.9549202858713579, + "punct": null + }, + "ud": { + "u": 0.9754343255505146, + "t": 0.9748542880932556, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.541651429825203, + "t": 0.695934796739837, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.8836104513064134, + "t": 0.8869725900831535, + "punct": null + }, + "ud": { + "u": 0.9970811441914769, + "t": 0.9959183673469387, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9560737527114969, + "t": 0.956734693877551, + "punct": null + }, + "ud": { + "u": 0.9844961240310077, + "t": 0.9872922776148583, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6860362071148247, + "t": 0.7230808208766151, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9813422445001393, + "t": 0.9909553420011307, + "punct": null + }, + "opus100": { + "u": 0.9021134593993326, + "t": 0.9027624309392264, + "punct": null + }, + "ud": { + "u": 0.986206896551724, + "t": 0.9867892016082711, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7660828468167918, + "t": 0.7663735183263233, + "punct": null + }, + "legal-all-laws": { + "u": 0.9286974749699027, + "t": 0.9226608397151642, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8170169264286912, + "t": 0.8203517308771167, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8097825123083802, + "t": 0.7936482702481188, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6302291724243795, + "t": 0.6602345528379631, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.966883821932682, + "t": 0.9665851670741646, + "punct": null + }, + "ud": { + "u": 0.9778869778869779, + "t": 0.9790897908979089, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6441230127703935, + "t": 0.7028894786919725, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9852667715634387, + "t": 0.9876080691642651, + "punct": null + }, + "opus100": { + "u": 0.9627007895453308, + "t": 0.9637503406922867, + "punct": null + }, + "ud": { + "u": 0.9742533470648814, + "t": 0.9747552807831014, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.60943802097338, + "t": 0.6737707413609378, + "punct": null + }, + "legal-all-judgements": { + "u": 0.9300168313770747, + "t": 0.9306145689151755, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.7037212639545591, + "t": 0.7224238470530019, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9628415300546449, + "t": 0.9675270607826811, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42006671798819606, + "t": 0.6692060646799611, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9969130197929907, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9573304157549234, + "t": 0.9588364434687157, + "punct": null + }, + "ud": { + "u": 0.994539029874719, + "t": 0.9954954954954954, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.52344152498712, + "t": 0.6605561597017245, + "punct": null + }, + "legal-all-laws": { + "u": 0.8784916625929421, + "t": 0.9285536074218562, + "punct": null, + "acc_u": 0.2677595628415301, + "acc_t": 0.3879781420765027, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.798582128553847, + "t": 0.8116228198934288, + "punct": null, + "acc_u": 0.1092896174863388, + "acc_t": 0.1366120218579235, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7695998200778222, + "t": 0.818333297255493, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5813895621434335, + "t": 0.6239207522450104, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9958779884583677, + "t": 0.9958734525447042, + "punct": null + }, + "opus100": { + "u": 0.9487594390507013, + "t": 0.9544956140350878, + "punct": null + }, + "ud": { + "u": 0.9869994799791991, + "t": 0.9875130072840791, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6329634196465269, + "t": 0.7349175404394329, + "punct": null + }, + "short-sequences": { + "u": 0.9082153698662969, + "t": 0.9148456460668299, + "punct": null, + "acc_u": 0.5320197044334976, + "acc_t": 0.541871921182266, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7397351562693188, + "t": 0.7605437458787808, + "punct": null, + "acc_u": 0.15763546798029557, + "acc_t": 0.16748768472906403, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.9280343716433942, + "t": 0.9283221476510067, + "punct": null + }, + "ud": { + "u": 0.9990732159406858, + "t": 0.9987639060568603, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3539694100509833, + "t": 0.6125418060200668, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.7770770496298327, + "t": 0.7739443872296602, + "punct": null + }, + "ud": { + "u": 0.9988553987027853, + "t": 0.9988553987027853, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5295641234366907, + "t": 0.680788675429727, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.995560488346282, + "t": 0.9972160356347439, + "punct": null + }, + "opus100": { + "u": 0.9637445887445888, + "t": 0.9665306122448979, + "punct": null + }, + "ud": { + "u": 0.9881932021466905, + "t": 0.9896094589752777, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6136967632027257, + "t": 0.717896865520728, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9890329012961118, + "t": 0.9896907216494845, + "punct": null + }, + "opus100": { + "u": 0.9391541609822647, + "t": null, + "punct": null + }, + "ud": { + "u": 0.983957219251337, + "t": 0.9852744310575635, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5980756013745704, + "t": 0.6897919739585983, + "punct": null + }, + "legal-all-laws": { + "u": 0.9231812396323432, + "t": 0.9392703297846828, + "punct": null, + "acc_u": 0.7450980392156863, + "acc_t": 0.7581699346405228, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5769531711551094, + "t": 0.7088192783751566, + "punct": null, + "acc_u": 0.1895424836601307, + "acc_t": 0.3115468409586057, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8540619460516535, + "t": 0.8631998893752685, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6564871414647595, + "t": 0.657923545550601, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.9360189573459716, + "t": 0.9298029556650246, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.8902915539525097, + "t": 0.9128798842257597, + "punct": null + }, + "ud": { + "u": 0.9841656516443362, + "t": 0.9828850855745721, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5263157894736842, + "t": 0.5194805194805195, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.9440870856011876, + "t": 0.9549641760491301, + "punct": null + }, + "ud": { + "u": 0.8809034907597535, + "t": 0.8855116514690984, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.949261744966443, + "t": 0.9536710918450284, + "punct": null + }, + "ud": { + "u": 0.9958275382475661, + "t": 0.9958275382475661, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6054620177648151, + "t": 0.6847663644515293, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9727668845315904, + "t": 0.9711799891245241, + "punct": null + }, + "opus100": { + "u": 0.8901734104046243, + "t": 0.8911584476218266, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3567826309941021, + "t": 0.44996880549023377, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.9360902255639098, + "t": 0.9263274951348347, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4444444444444444, + "t": 0.4705882352941176, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.928042328042328, + "t": 0.9370967741935483, + "punct": null + }, + "ud": { + "u": 0.9828571428571428, + "t": 0.9915014164305949, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4351114963359861, + "t": 0.623504915016222, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9909271962823633, + "t": 0.9904635174096253, + "punct": null + }, + "opus100": { + "u": 0.843322818086225, + "t": 0.8551762114537445, + "punct": null + }, + "ud": { + "u": 0.9993399339933994, + "t": 0.9993399339933994, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3798524222008342, + "t": 0.5743950884795955, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.966359196961476, + "t": 0.9665123876939832, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 0.9962732919254659, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5045793889017163, + "t": 0.6872264631043257, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.9240437582434634, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9924953095684803, + "t": 0.993439550140581, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5667258571233439, + "t": 0.692632792238978, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.9571230982019363, + "t": 0.9583567810917277, + "punct": null + }, + "ud": { + "u": 0.9966666666666667, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3822371177209887, + "t": 0.6559526743899432, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.9447170428524698, + "t": 0.9490142760027193, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.13333333333333333, + "t": 0.27184466019417475, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.967530695770805, + "t": 0.9678824169842134, + "punct": null + }, + "ud": { + "u": 0.969831223628692, + "t": 0.9750935328701229, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6677393403057119, + "t": 0.7016414547795301, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.9189046866771985, + "t": 0.918491163281456, + "punct": null + }, + "ud": { + "u": 0.9976958525345622, + "t": 0.9976958525345622, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.571724996541707, + "t": 0.6685872924414646, + "punct": null + }, + "legal-all-laws": { + "u": 0.8043810882760131, + "t": 0.7674375135061822, + "punct": null, + "acc_u": 0.390625, + "acc_t": 0.4090909090909091, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5277733640858012, + "t": 0.5222770051317568, + "punct": null, + "acc_u": 0.15056818181818182, + "acc_t": 0.14914772727272727, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8816141422691561, + "t": 0.8934767131636326, + "punct": null, + "acc_u": 0.061224489795918366, + "acc_t": 0.10204081632653061, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5606792332579781, + "t": 0.5879439242256951, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.9051859612362493, + "t": 0.9059125964010283, + "punct": null + }, + "opus100": { + "u": 0.8888888888888888, + "t": 0.9087301587301587, + "punct": null + }, + "ud": { + "u": 0.9720785935884179, + "t": 0.972193614830072, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7271829595147412, + "t": 0.9134960305792414, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9928216454997238, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.9345743224746784, + "t": 0.9348722176422094, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.45961319681456203, + "t": 0.6340444142086594, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9977802441731409, + "t": 0.9977802441731409, + "punct": null + }, + "opus100": { + "u": 0.9533389214864487, + "t": 0.955536181342633, + "punct": null + }, + "ud": { + "u": 0.9957671957671959, + "t": 0.9247434435575826, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.21541534875978025, + "t": 0.7412837780240388, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.9465685110425076, + "t": 0.9494949494949495, + "punct": null + }, + "opus100": { + "u": 0.898264512268103, + "t": 0.8951219512195122, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8522336769759451, + "t": 0.8539325842696628, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.9195693476884105, + "t": 0.916452442159383, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.14346712211784798, + "t": 0.45070422535211263, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.8342186189544311, + "t": 0.8360094761779416, + "punct": null + }, + "ud": { + "u": 0.999514091350826, + "t": 0.999514091350826, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.720863387385433, + "t": 0.7592073284726116, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.9462052922361153, + "t": 0.9456362033499853, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.17737167428110723, + "t": 0.3674597542300079, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.9667318982387475, + "t": 0.9728656518861681, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.379746835443038, + "t": 0.7448979591836735, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.9850197109067016, + "t": 0.984485932158822, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.588235294117647, + "t": 0.588235294117647, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9966666666666667, + "t": 0.9966666666666667, + "punct": null + }, + "opus100": { + "u": 0.9280133928571429, + "t": 0.9284321915900864, + "punct": null + }, + "ud": { + "u": 0.9809760132340777, + "t": 0.9809444904722453, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4902754006534931, + "t": 0.6908754143107819, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9975240715268225, + "t": 0.9978009895547004, + "punct": null + }, + "opus100": { + "u": 0.9305517430688992, + "t": 0.9306768558951966, + "punct": null + }, + "ud": { + "u": 0.9944725932749885, + "t": 0.9949378739070409, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5339805825242718, + "t": 0.7128283475432458, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9685430463576158, + "t": 0.9690094078583288, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.21145374449339205, + "t": 0.48615384615384616, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9604306864064603, + "t": 0.9609182836840666, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5339474075174565, + "t": 0.6873802495986744, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8966986155484558, + "t": 0.9028540065861691, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2258920672368033, + "t": 0.49514832270584974, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.6211135213304411, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3335753176043557, + "t": 0.8041171477079797, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.965383550263085, + "t": 0.9675251959686451, + "punct": null + }, + "ud": { + "u": 0.988235294117647, + "t": 0.988235294117647, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.09588901356727532, + "t": 0.45790968214711003, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.9570791527313266, + "t": 0.9604966139954852, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.45440675976998013, + "t": 0.673131433686409, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.8871934604904632, + "t": 0.8876313662085692, + "punct": null + }, + "ud": { + "u": 0.9762931034482759, + "t": 0.9730312837108954, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.13725490196078433, + "t": 0.37894736842105264, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.927765237020316, + "t": 0.9269263576912142, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9510457628084573, + "t": 0.9546322290847838, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.8676646706586826, + "t": 0.8683729433272395, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.256978289765175, + "t": 0.6237092110698058, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9501590668080594, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9721189591078068, + "t": 0.9730733519034355, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7878316864660819, + "t": 0.7902986655369626, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9669017905588715, + "t": 0.9669017905588715, + "punct": null + }, + "ud": { + "u": 0.9954233409610984, + "t": 0.9951359084406295, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.8612665684830633, + "t": 0.8571428571428571, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.44399185336048874, + "t": 0.5868613138686132, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9933628318584071, + "t": 0.9922480620155039, + "punct": null + }, + "opus100": { + "u": 0.9597169297768099, + "t": 0.9596949891067538, + "punct": null + }, + "ud": { + "u": 0.9972368751569958, + "t": 0.9954659949622165, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.526276500447895, + "t": 0.7192561181219026, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9401918758930394, + "t": 0.9376128385155466, + "punct": null + }, + "opus100": { + "u": 0.89344, + "t": 0.894736842105263, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5732899022801303, + "t": 0.6206896551724138, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9540198978219951, + "t": 0.9587180879956544, + "punct": null + }, + "ud": { + "u": 0.9890424011434016, + "t": 0.9895038167938932, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6719130597714071, + "t": 0.7216453271499144, + "punct": null + }, + "legal-all-laws": { + "u": 0.791614451793386, + "t": 0.7289511359949027, + "punct": null, + "acc_u": 0.1896551724137931, + "acc_t": 0.13793103448275862, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.6112771360048593, + "t": 0.6229603353078315, + "punct": null, + "acc_u": 0.017241379310344827, + "acc_t": 0.017241379310344827, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8746147610177311, + "t": 0.8736259107954595, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6477064235088532, + "t": 0.6694801639220915, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9930958298812482, + "t": 0.9950138504155125, + "punct": null + }, + "opus100": { + "u": 0.9685706477179558, + "t": 0.9724517906336088, + "punct": null + }, + "ud": { + "u": 0.9941706412294647, + "t": 0.9941706412294647, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.46315120711562896, + "t": 0.6742100323287099, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.996078431372549, + "t": 0.996078431372549, + "punct": null + }, + "opus100": { + "u": 0.9088948787061993, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9466584917228694, + "t": 0.9441069258809234, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5914342068188222, + "t": 0.7177827230426866, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8984332793084818, + "t": 0.8975853455453788, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43731778425655976, + "t": 0.6025179856115107, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9668765398302764, + "t": 0.9668583949602848, + "punct": null + }, + "ud": { + "u": 0.9852164730728618, + "t": 0.9819341126461211, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5245013172751223, + "t": 0.6916031315560559, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9590296495956874, + "t": 0.9592055823939882, + "punct": null + }, + "ud": { + "u": 0.997398091934085, + "t": 0.9969631236442517, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.46343825665859567, + "t": 0.7176320272572403, + "punct": null + }, + "short-sequences": { + "u": 0.7625305657197154, + "t": 0.821611587696416, + "punct": null, + "acc_u": 0.28555718475073316, + "acc_t": 0.43951612903225806, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6457660517227967, + "t": 0.6471141680085962, + "punct": null, + "acc_u": 0.10117302052785923, + "acc_t": 0.1059384164222874, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9686468646864687, + "t": 0.9696463380673906, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4652690863579474, + "t": 0.6571715995128925, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.967444384156267, + "t": 0.9678824169842134, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.46219754065846885, + "t": 0.6916789758739538, + "punct": null + }, + "short-sequences": { + "u": 0.9351107804232802, + "t": 0.9327670304232806, + "punct": null, + "acc_u": 0.78125, + "acc_t": 0.7708333333333334, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7304563492063493, + "t": 0.7457115511803011, + "punct": null, + "acc_u": 0.25, + "acc_t": 0.2604166666666667, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9617989704687077, + "t": 0.9617989704687077, + "punct": null + }, + "ud": { + "u": 0.9683210137275607, + "t": 0.9643047416089504, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7053122539221032, + "t": 0.7293692544768584, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9867403314917127, + "t": 0.9867549668874173, + "punct": null + }, + "opus100": { + "u": 0.8615907161052929, + "t": 0.8595669982445875, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.24534958306606802, + "t": 0.5339058865628913, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.9085173501577288, + "t": 0.9059131954558695, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1786743515850144, + "t": 0.5516483516483517, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.9418892866978794, + "t": 0.9346110484780158, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.45108695652173914, + "t": 0.659016393442623, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.803729146221786, + "t": 0.8108251525603608, + "punct": null + }, + "ud": { + "u": 0.8690132717830351, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6777614619024311, + "t": 0.6895749527456017, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9687795648060549, + "t": 0.9785202863961815, + "punct": null + }, + "opus100": { + "u": 0.9575856443719413, + "t": 0.9574468085106383, + "punct": null + }, + "ud": { + "u": 0.9848790322580646, + "t": 0.9827411167512691, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.24299787521730737, + "t": 0.7160442311704568, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9479027518033663, + "t": 0.9544715447154472, + "punct": null + }, + "ud": { + "u": 0.9858461538461538, + "t": 0.9846342962507683, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.59431810326951, + "t": 0.7148490142251062, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.7337969401947149, + "t": 0.7146426786606698, + "punct": null + }, + "ud": { + "u": 0.991701244813278, + "t": 0.9947862356621481, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6196477495107632, + "t": 0.669364918754836, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.9107046799354491, + "t": 0.9178276940574354, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.14381901427417182, + "t": 0.6809215479596447, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9587973273942093, + "t": 0.9578565447948647, + "punct": null + }, + "ud": { + "u": 0.9993060374739764, + "t": 0.9993060374739764, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4604205318491033, + "t": 0.636193478475027, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.9347826086956523, + "t": 0.9315310020570086, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.9185252617205281, + "t": 0.9159049360146253, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.7554340752310297, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8707482993197279, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.9331460674157305, + "t": 0.9155968314668123, + "punct": null + }, + "opus100": { + "u": 0.9088302752293578, + "t": 0.9131886477462436, + "punct": null + }, + "ud": { + "u": 0.9877913429522752, + "t": 0.9877913429522752, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3798424517103702, + "t": 0.6780713425837925, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.9538642374375551, + "t": 0.9568323905924383, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9993089149965445, + "t": 0.9951890034364262, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.04582210242587601, + "t": 0.39780109945027486, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.9386503067484663, + "t": 0.9383802816901409, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.02136400986031224, + "t": 0.5076523245740687, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.008136696501220505, + "t": 0.47782169521299955, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.014598540145985401, + "t": 0.4497098646034816, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.8748964374482187, + "t": 0.9218181818181818, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.5754437869822485, + "t": 0.5805471124620061, + "punct": null + }, + "short-sequences": { + "u": 0.90223473446993, + "t": 0.9027852278306333, + "punct": null, + "acc_u": 0.6070686070686071, + "acc_t": 0.632016632016632, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7068621522107426, + "t": 0.7061834903593343, + "punct": null, + "acc_u": 0.1787941787941788, + "acc_t": 0.15592515592515593, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-sm-12l_no_pretraining.json b/wtpsplit/evaluation/evaluation_results/main/sat-sm-12l_no_pretraining.json new file mode 100644 index 00000000..b849a815 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-sm-12l_no_pretraining.json @@ -0,0 +1,1645 @@ +{ + "af": { + "opus100": { + "u": 0.8898864536572485, + "t": 0.9170454545454545, + "punct": null + }, + "ud": { + "u": 0.9909208819714656, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6492374727668846, + "t": 0.7040520984081042, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.7593838142764157, + "t": 0.8531624407913068, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5693069306930693, + "t": 0.5751520417028672, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.8905211612451907, + "t": 0.9128598848368522, + "punct": null + }, + "opus100": { + "u": 0.7598516458043579, + "t": 0.8155495978552278, + "punct": null + }, + "ud": { + "u": 0.8221614227086183, + "t": 0.8868501529051989, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.575989427557905, + "t": 0.641989156851748, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.8680996580361504, + "t": 0.8961292119186856, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7325673820362744, + "t": 0.7367629362214199, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.8964355879876508, + "t": 0.8960000000000001, + "punct": null + }, + "ud": { + "u": 0.932135728542914, + "t": 0.9542346133613887, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6494242023787049, + "t": 0.7374374948766292, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9569633787757285, + "t": 0.9698778833107191, + "punct": null + }, + "ud": { + "u": 0.994053518334985, + "t": 0.9985037406483791, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6620982986767486, + "t": 0.7495836802664446, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.831199620673305, + "t": 0.920285871357889, + "punct": null + }, + "ud": { + "u": 0.99009900990099, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2739010024573858, + "t": 0.3598312515509968, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.9319261213720317, + "t": 0.9565217391304348, + "punct": null + }, + "ud": { + "u": 0.9842869848799288, + "t": 0.9993983152827919, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6205780686916232, + "t": 0.7344064386317908, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9912023460410557, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3728813559322034, + "t": 0.3404255319148936, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9773442416614223, + "t": 0.9948519948519949, + "punct": null + }, + "opus100": { + "u": 0.9352785145888595, + "t": 0.9533735600658255, + "punct": null + }, + "ud": { + "u": 0.9563745967955158, + "t": 0.9701926771696767, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6490723210904961, + "t": 0.7581141439205956, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.860616341532372, + "t": 0.8692709935404491, + "punct": null + }, + "ud": { + "u": 0.9959231217239372, + "t": 0.9970743124634289, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9440298507462687, + "t": 0.9583446773754424, + "punct": null + }, + "ud": { + "u": 0.9769230769230769, + "t": 0.9901960784313726, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7166157421353876, + "t": 0.7678221059516023, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9608269858541894, + "t": 0.9943181818181818, + "punct": null + }, + "opus100": { + "u": 0.8702972901867929, + "t": 0.8932960893854748, + "punct": null + }, + "ud": { + "u": 0.9893078221722004, + "t": 0.9896788990825689, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.725728987993139, + "t": 0.7838105669430971, + "punct": null + }, + "legal-all-laws": { + "u": 0.8882391250499664, + "t": 0.9188715890657938, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7391636421529966, + "t": 0.8434885097248553, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7779826467522595, + "t": 0.7379228687634184, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6482199331548237, + "t": 0.6956263453594427, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9529914529914529, + "t": 0.9647314161692893, + "punct": null + }, + "ud": { + "u": 0.9745454545454545, + "t": 0.9802469135802468, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.699301321703529, + "t": 0.7260181582360571, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9629268292682926, + "t": 0.9880616453223355, + "punct": null + }, + "opus100": { + "u": 0.9490343347639485, + "t": 0.9571815718157181, + "punct": null + }, + "ud": { + "u": 0.9516765285996055, + "t": 0.9717514124293786, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6234232912877676, + "t": 0.7426882389545738, + "punct": null + }, + "legal-all-judgements": { + "u": 0.8916963923644315, + "t": 0.9151622260988597, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6964244016411085, + "t": 0.7438889236533651, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9586821496084256, + "t": 0.9636817299695039, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6564234465953702, + "t": 0.6842599843382928, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9828632631203142, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.94252261841405, + "t": 0.9551508562109269, + "punct": null + }, + "ud": { + "u": 0.979113924050633, + "t": 0.9938965628011566, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6313636363636365, + "t": 0.7234879032258064, + "punct": null + }, + "legal-all-laws": { + "u": 0.919483905414826, + "t": 0.9221739779855946, + "punct": null, + "acc_u": 0.33879781420765026, + "acc_t": 0.3333333333333333, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8049326223406359, + "t": 0.8251094224989333, + "punct": null, + "acc_u": 0.09289617486338798, + "acc_t": 0.15300546448087432, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8024097991142728, + "t": 0.8062938590407825, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6173988442406534, + "t": 0.639074008958776, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9824086603518268, + "t": 0.9961517317207257, + "punct": null + }, + "opus100": { + "u": 0.8975139523084728, + "t": 0.9510795299262094, + "punct": null + }, + "ud": { + "u": 0.9713024282560706, + "t": 0.9873109681905092, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.677480614021206, + "t": 0.7873374907515063, + "punct": null + }, + "short-sequences": { + "u": 0.8596991435599732, + "t": 0.9165470720332012, + "punct": null, + "acc_u": 0.3891625615763547, + "acc_t": 0.5467980295566502, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6680267233691914, + "t": 0.8234463969909857, + "punct": null, + "acc_u": 0.059113300492610835, + "acc_t": 0.2660098522167488, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.9304670912951166, + "t": 0.944941687008408, + "punct": null + }, + "ud": { + "u": 0.9990743597655045, + "t": 0.9987639060568603, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6083910981393652, + "t": 0.6204963971176942, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.7609266778122762, + "t": 0.7775530839231547, + "punct": null + }, + "ud": { + "u": 0.9984744469870328, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6716600042078688, + "t": 0.7006148353827847, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.989259157256954, + "t": 0.9986076301865776, + "punct": null + }, + "opus100": { + "u": 0.9519743863393809, + "t": 0.965386695511087, + "punct": null + }, + "ud": { + "u": 0.9739803094233473, + "t": 0.988522238163558, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6871870639415579, + "t": 0.7649591046061128, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9607211848036059, + "t": 0.9883913764510779, + "punct": null + }, + "opus100": { + "u": 0.9248219467159061, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9751633986928104, + "t": 0.9865951742627346, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6588400483638207, + "t": 0.7471014492753624, + "punct": null + }, + "legal-all-laws": { + "u": 0.9302546426631406, + "t": 0.9546234610173516, + "punct": null, + "acc_u": 0.6318082788671024, + "acc_t": 0.7843137254901961, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8547068338213182, + "t": 0.8876272287826981, + "punct": null, + "acc_u": 0.4357298474945534, + "acc_t": 0.5620915032679739, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.826641279119989, + "t": 0.8655470922014497, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6426510989303075, + "t": 0.697758185811238, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.9267734553775743, + "t": 0.9326775284352904, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.905526817315546, + "t": 0.9105145413870246, + "punct": null + }, + "ud": { + "u": 0.9321058688147297, + "t": 0.9781021897810219, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4615384615384615, + "t": 0.54, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.9023474178403755, + "t": 0.9270256668344238, + "punct": null + }, + "ud": { + "u": 0.7772108843537415, + "t": 0.8817427385892116, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.9413326254313779, + "t": 0.9538043478260871, + "punct": null + }, + "ud": { + "u": 0.9836065573770492, + "t": 0.9958391123439668, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6951251417109967, + "t": 0.7306095247859743, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9149377593360994, + "t": 0.9088851160158461, + "punct": null + }, + "opus100": { + "u": 0.8525624178712221, + "t": 0.8836118440340077, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.33435527502254286, + "t": 0.34943097476496787, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.9054600606673407, + "t": 0.924434638720353, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.33333333333333337, + "t": 0.3404255319148936, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9124257297855851, + "t": 0.9341189073379753, + "punct": null + }, + "ud": { + "u": 0.9805013927576602, + "t": 0.9814550641940085, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.602542882937105, + "t": 0.6594599788603824, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9666381522668949, + "t": 0.9868015838099429, + "punct": null + }, + "opus100": { + "u": 0.7267665952890793, + "t": 0.8376676704078839, + "punct": null + }, + "ud": { + "u": 0.9990108803165183, + "t": 0.9996698580389567, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4911335129919819, + "t": 0.5600252548029223, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.960926973861493, + "t": 0.9633649932157395, + "punct": null + }, + "ud": { + "u": 0.9938499384993851, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7290966689065951, + "t": 0.7455159316311457, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.9200030620837479, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9887850467289719, + "t": 0.9905660377358491, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7125650150561182, + "t": 0.7298110601351684, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.9398435392500675, + "t": 0.9545326179045468, + "punct": null + }, + "ud": { + "u": 0.9878453038674033, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.685561400326501, + "t": 0.6961993455826831, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.9114002478314746, + "t": 0.9400953029271614, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1773913043478261, + "t": 0.18584070796460178, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9593976875504169, + "t": 0.9673202614379084, + "punct": null + }, + "ud": { + "u": 0.8704907224262974, + "t": 0.9705162320383183, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.653653389606964, + "t": 0.7132822477650065, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.9018015732047703, + "t": 0.9288350026357406, + "punct": null + }, + "ud": { + "u": 0.9897142857142857, + "t": 0.9954022988505747, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6103778044434748, + "t": 0.7299898682877406, + "punct": null + }, + "legal-all-laws": { + "u": 0.8116677654182568, + "t": 0.8249054279466425, + "punct": null, + "acc_u": 0.2471590909090909, + "acc_t": 0.5894886363636364, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.6476512959745341, + "t": 0.6660099309392586, + "punct": null, + "acc_u": 0.056818181818181816, + "acc_t": 0.09375, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8543354171648203, + "t": 0.8732322956915222, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5061827477067343, + "t": 0.6033825771040782, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8695228821811101, + "t": 0.9030558482613277, + "punct": null + }, + "opus100": { + "u": 0.7512321660181581, + "t": 0.7476923076923077, + "punct": null + }, + "ud": { + "u": 0.9733606557377049, + "t": 0.9742533470648815, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7376371668804332, + "t": 0.7966161438138879, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9841443411700384, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.8120851453421835, + "t": 0.9371086305472366, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6195541184479239, + "t": 0.6358033538770245, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9966777408637874, + "t": 0.9977827050997783, + "punct": null + }, + "opus100": { + "u": 0.945262572936927, + "t": 0.9472140762463344, + "punct": null + }, + "ud": { + "u": 0.9973502914679385, + "t": 0.8533171028606208, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7523255813953489, + "t": 0.757628294036061, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.7566363467607202, + "t": 0.8885167464114833, + "punct": null + }, + "opus100": { + "u": 0.8481114385212964, + "t": 0.8950075642965204, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.655893536121673, + "t": 0.66875, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.9069212410501194, + "t": 0.907682375726275, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39135135135135135, + "t": 0.3877847794474067, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.8271186440677967, + "t": 0.8341789052069426, + "punct": null + }, + "ud": { + "u": 0.9990286546867411, + "t": 0.9990277102576567, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7509396814032575, + "t": 0.7644212876814289, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.8875771397907164, + "t": 0.8989312977099236, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.20474902525554114, + "t": 0.22411090023929367, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.9568576947842884, + "t": 0.9680816057913788, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7240948813982521, + "t": 0.7206068268015171, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.9456276622400401, + "t": 0.9818659658344284, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5, + "t": 0.5714285714285714, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9900552486187846, + "t": 0.9938718662952647, + "punct": null + }, + "opus100": { + "u": 0.9126418580100291, + "t": 0.9305517430688993, + "punct": null + }, + "ud": { + "u": 0.9788961038961039, + "t": 0.9826302729528535, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7041775456919059, + "t": 0.7396532718709289, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9912616056799564, + "t": 0.9983471074380166, + "punct": null + }, + "opus100": { + "u": 0.8959039916514479, + "t": 0.9219088937093276, + "punct": null + }, + "ud": { + "u": 0.9924294562973158, + "t": 0.9953917050691244, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6495882196667805, + "t": 0.7671526149454583, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.8865, + "t": 0.9642758238715037, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.486223662884927, + "t": 0.5358649789029536, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.953519256308101, + "t": 0.9598480737927293, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.680742597391563, + "t": 0.7272358342210724, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8263988522238164, + "t": 0.8932249322493224, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3550068147197947, + "t": 0.45436717453612907, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.9746219592373438, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7974727625491269, + "t": 0.8176350553109226, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9598901098901099, + "t": 0.9634214969048959, + "punct": null + }, + "ud": { + "u": 0.988235294117647, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3747686810031268, + "t": 0.4245355295920321, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.939608269858542, + "t": 0.9584863033041513, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6800618238021637, + "t": 0.6911863646557524, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.8125, + "t": 0.8546637744034707, + "punct": null + }, + "ud": { + "u": 0.9225874867444326, + "t": 0.9544468546637744, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37894736842105264, + "t": 0.392156862745098, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.9141791044776119, + "t": 0.9296962879640045, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8551427571378568, + "t": 0.9137492223290538, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.8528511821974966, + "t": 0.8652396744045825, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6074380165289256, + "t": 0.618436406067678, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9401307189542484, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9473684210526315, + "t": 0.9721189591078068, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7128712871287128, + "t": 0.8179399872313258, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9591397849462365, + "t": 0.9644311702416508, + "punct": null + }, + "ud": { + "u": 0.990888382687927, + "t": 0.9965556831228474, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.844804318488529, + "t": 0.8538922155688623, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4892703862660945, + "t": 0.48822800495662944, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.988480526604498, + "t": 0.9939125622578859, + "punct": null + }, + "opus100": { + "u": 0.9523299410819496, + "t": 0.9636114911080711, + "punct": null + }, + "ud": { + "u": 0.9949974987493747, + "t": 0.9972396486825595, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7161315414199906, + "t": 0.7749589153656532, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.7613906969360216, + "t": 0.8595260663507108, + "punct": null + }, + "opus100": { + "u": 0.8917311124330755, + "t": 0.8945868945868947, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5209244222361025, + "t": 0.5622612681436211, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.935856992639327, + "t": 0.9590452942771901, + "punct": null + }, + "ud": { + "u": 0.9685476410730806, + "t": 0.9881009043312708, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6694905189818297, + "t": 0.7637276435519298, + "punct": null + }, + "legal-all-laws": { + "u": 0.8324523424484136, + "t": 0.7368592838043876, + "punct": null, + "acc_u": 0.22413793103448276, + "acc_t": 0.1206896551724138, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7204709750974746, + "t": 0.7246029128629284, + "punct": null, + "acc_u": 0.10344827586206896, + "acc_t": 0.10344827586206896, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7903036694107122, + "t": 0.786157427442135, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5842921014868265, + "t": 0.6762765101876942, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9825232113599126, + "t": 0.9961175818080976, + "punct": null + }, + "opus100": { + "u": 0.9399311987298228, + "t": 0.963531669865643, + "punct": null + }, + "ud": { + "u": 0.9657289002557545, + "t": 0.9946977730646872, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6565628803643645, + "t": 0.7468591008202677, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.989977728285078, + "t": 0.9977528089887641, + "punct": null + }, + "opus100": { + "u": 0.861145859394546, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8868571428571428, + "t": 0.9454770755885997, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6957347537057682, + "t": 0.7619329388560158, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.849553128103277, + "t": 0.885066885066885, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5869731800766284, + "t": 0.6118881118881118, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9442379182156134, + "t": 0.9655172413793104, + "punct": null + }, + "ud": { + "u": 0.9740124740124741, + "t": 0.9751191106405505, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6620861961274204, + "t": 0.7564719590658088, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9512909236092627, + "t": 0.9581320450885669, + "punct": null + }, + "ud": { + "u": 0.9804088586030665, + "t": 0.997398091934085, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6762147929466209, + "t": 0.7849278460716194, + "punct": null + }, + "short-sequences": { + "u": 0.7397307038423587, + "t": 0.8127657455294596, + "punct": null, + "acc_u": 0.2401026392961877, + "acc_t": 0.3907624633431085, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5460872580979569, + "t": 0.6725216722834025, + "punct": null, + "acc_u": 0.06488269794721407, + "acc_t": 0.15065982404692083, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.958288190682557, + "t": 0.9676706272450954, + "punct": null + }, + "ud": { + "u": 0.9908256880733944, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6544003360638521, + "t": 0.6924212598425196, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9609900457358084, + "t": 0.9665488169703562, + "punct": null + }, + "ud": { + "u": 0.9968051118210862, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6725386100386102, + "t": 0.7372436342019221, + "punct": null + }, + "short-sequences": { + "u": 0.8409467319853349, + "t": 0.9312127976190476, + "punct": null, + "acc_u": 0.4427083333333333, + "acc_t": 0.7395833333333334, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6384569117565441, + "t": 0.736155055456526, + "punct": null, + "acc_u": 0.09375, + "acc_t": 0.2760416666666667, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9466418900982213, + "t": 0.9604764482945317, + "punct": null + }, + "ud": { + "u": 0.9456967213114753, + "t": 0.9627263045793397, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7288516640952171, + "t": 0.772117962466488, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9803278688524589, + "t": 0.9878453038674033, + "punct": null + }, + "opus100": { + "u": 0.8069135802469135, + "t": 0.8617791944363954, + "punct": null + }, + "ud": { + "u": 0.9863013698630138, + "t": 0.9906542056074767, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4850988492180585, + "t": 0.5004899777282851, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.8686496446433273, + "t": 0.8957845433255269, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.45657688126585333, + "t": 0.5112511251125114, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.908625543895572, + "t": 0.9322081575246132, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.456754130223518, + "t": 0.5200594353640416, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.7652806180413543, + "t": 0.8084994753410283, + "punct": null + }, + "ud": { + "u": 0.8844327176781003, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6636767237473951, + "t": 0.6658147569690945, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9818381948266374, + "t": 0.9826568265682657, + "punct": null + }, + "opus100": { + "u": 0.9495820976004313, + "t": 0.9547930283224401, + "punct": null + }, + "ud": { + "u": 0.9829145728643215, + "t": 0.9827411167512691, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.73271719038817, + "t": 0.7482050509614901, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9376479873717444, + "t": 0.9543366657660092, + "punct": null + }, + "ud": { + "u": 0.9738919247115968, + "t": 0.9789864029666254, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6991413612565445, + "t": 0.7624792640627356, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.6239366963402572, + "t": 0.7225609756097561, + "punct": null + }, + "ud": { + "u": 0.9845837615621787, + "t": 0.991701244813278, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5876096286620639, + "t": 0.6486295729914127, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.8203928905519178, + "t": 0.8970753655793026, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6875309252845125, + "t": 0.6955355945837244, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9541689674213142, + "t": 0.957298353335194, + "punct": null + }, + "ud": { + "u": 0.9944674965421854, + "t": 0.9993050729673384, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6808784342552604, + "t": 0.6879492390819412, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.8234432234432235, + "t": 0.9135514018691588, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.9385425812115892, + "t": 0.9241253975465697, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.7490365635868034, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8597560975609756, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.9180238870792616, + "t": 0.9222313822478702, + "punct": null + }, + "opus100": { + "u": 0.8329448329448329, + "t": 0.8402961396086727, + "punct": null + }, + "ud": { + "u": 0.9845132743362831, + "t": 0.9877913429522752, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5857402774619059, + "t": 0.590102140077821, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.9399715504978663, + "t": 0.9588550983899821, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.8552864737152983, + "t": 0.9897470950102529, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.28483848149021457, + "t": 0.398019801980198, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.5364635364635364, + "t": 0.811698717948718, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4232870954182429, + "t": 0.5650661099512874, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.517056856187291, + "t": 0.5166947723440135, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.5184439973172368, + "t": 0.5220994475138121, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.6116676487919859, + "t": 0.7733549959382616, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.41904761904761906, + "t": 0.6010544815465729, + "punct": null + }, + "short-sequences": { + "u": 0.8294016596623394, + "t": 0.8858403570891407, + "punct": null, + "acc_u": 0.3492723492723493, + "acc_t": 0.5654885654885655, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6535531801734773, + "t": 0.7327722198626745, + "punct": null, + "acc_u": 0.10395010395010396, + "acc_t": 0.19750519750519752, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-sm-1l.json b/wtpsplit/evaluation/evaluation_results/main/sat-sm-1l.json new file mode 100644 index 00000000..bc16d28f --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-sm-1l.json @@ -0,0 +1,1645 @@ +{ + "af": { + "opus100": { + "u": 0.598806860551827, + "t": 0.801516382344977, + "punct": null + }, + "ud": { + "u": 0.9986928104575163, + "t": 0.9986928104575163, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4001996007984032, + "t": 0.4262189215369713, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.26799242424242425, + "t": 0.6443243243243243, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.40825688073394495, + "t": 0.46095954844778925, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.9216730038022813, + "t": 0.9240847784200387, + "punct": null + }, + "opus100": { + "u": 0.5961043733921353, + "t": 0.6196943972835314, + "punct": null + }, + "ud": { + "u": 0.8015810276679841, + "t": 0.8037825059101655, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1128400954653938, + "t": 0.3953082295778925, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.7732984293193716, + "t": 0.799203782035332, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.637619927823255, + "t": 0.666460443894517, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.6385110952040086, + "t": 0.8014480646059594, + "punct": null + }, + "ud": { + "u": 0.8189349112426034, + "t": 0.8746298124383021, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.34089573292582576, + "t": 0.4332084011031751, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.943789415958322, + "t": 0.9447318268445413, + "punct": null + }, + "ud": { + "u": 0.9484004127966976, + "t": 0.9560493827160493, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.46117064423856896, + "t": 0.4606182326231226, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.8275490987355395, + "t": 0.8225591912742751, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.11409513779182025, + "t": 0.2682464454976303, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.8942093541202673, + "t": 0.8938923395445135, + "punct": null + }, + "ud": { + "u": 0.9898688915375448, + "t": 0.9966957044157405, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.36219559335137225, + "t": 0.4018569217950244, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9940828402366864, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.21951219512195122, + "t": 0.3064516129032258, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.965016501650165, + "t": 0.9662698412698413, + "punct": null + }, + "opus100": { + "u": 0.8868253047011028, + "t": 0.9014159764894468, + "punct": null + }, + "ud": { + "u": 0.8908920627487708, + "t": 0.8838667106565491, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42280556131977587, + "t": 0.42526526861057734, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.32270531400966185, + "t": 0.729918509895227, + "punct": null + }, + "ud": { + "u": 0.9923753665689149, + "t": 0.9900642898889539, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9048283561261512, + "t": 0.905902004454343, + "punct": null + }, + "ud": { + "u": 0.9398797595190381, + "t": 0.9530612244897959, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42885999242519884, + "t": 0.4578535684788418, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9522693997071742, + "t": 0.9551622418879055, + "punct": null + }, + "opus100": { + "u": 0.7506329113924051, + "t": 0.7681947681947683, + "punct": null + }, + "ud": { + "u": 0.9310137972405519, + "t": 0.9327680193821926, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4312662374336383, + "t": 0.44431048873226375, + "punct": null + }, + "legal-all-laws": { + "u": 0.7511333158520798, + "t": 0.7138931377419722, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.38178681912872037, + "t": 0.4138642671014776, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7303298029145556, + "t": 0.7435221996908239, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.26195438692366907, + "t": 0.343377546245001, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9394190871369295, + "t": 0.9390681003584229, + "punct": null + }, + "ud": { + "u": 0.9422110552763818, + "t": 0.9388753056234719, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.350365952832746, + "t": 0.4174117075933492, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.8268693009118541, + "t": 0.9676330275229358, + "punct": null + }, + "opus100": { + "u": 0.8909657320872274, + "t": 0.9158928097638632, + "punct": null + }, + "ud": { + "u": 0.9284611425630469, + "t": 0.9247881355932204, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4284306095979248, + "t": 0.43589527027027025, + "punct": null + }, + "legal-all-judgements": { + "u": 0.814894197525921, + "t": 0.8183175167912022, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.18078062728425967, + "t": 0.31343055392811003, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9234246962418762, + "t": 0.9341383095499453, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4301628106255356, + "t": 0.4376858610435253, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9550072568940494, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.8888278891023882, + "t": 0.9022598870056496, + "punct": null + }, + "ud": { + "u": 0.9737258626147515, + "t": 0.9863901490602722, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37759436824857384, + "t": 0.4187545315395151, + "punct": null + }, + "legal-all-laws": { + "u": 0.9045060557523987, + "t": 0.9182986699192894, + "punct": null, + "acc_u": 0.29508196721311475, + "acc_t": 0.3825136612021858, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.4399150853685214, + "t": 0.47869651723131773, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7104359605424839, + "t": 0.7161027929370346, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.1453422160864028, + "t": 0.26496507368443073, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9749303621169917, + "t": 0.963626492942454, + "punct": null + }, + "opus100": { + "u": 0.8646864686468646, + "t": 0.904006453347674, + "punct": null + }, + "ud": { + "u": 0.9311393310677875, + "t": 0.929872002884442, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.31184148451014315, + "t": 0.4179773267016176, + "punct": null + }, + "short-sequences": { + "u": 0.8974419733739167, + "t": 0.9076816220772879, + "punct": null, + "acc_u": 0.4729064039408867, + "acc_t": 0.5221674876847291, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.5868210473447151, + "t": 0.5864281691488229, + "punct": null, + "acc_u": 0.029556650246305417, + "acc_t": 0.029556650246305417, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8486424032351242, + "t": 0.8772298006295908, + "punct": null + }, + "ud": { + "u": 0.9938309685379396, + "t": 0.9935324915306437, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2872126757420219, + "t": 0.3665512233270025, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.5332912590722626, + "t": 0.5405272234540527, + "punct": null + }, + "ud": { + "u": 0.9977134146341464, + "t": 0.9988553987027853, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.550229302437847, + "t": 0.5504605328315342, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9610389610389609, + "t": 0.9619891397542155, + "punct": null + }, + "opus100": { + "u": 0.9339622641509434, + "t": 0.9327978580990629, + "punct": null + }, + "ud": { + "u": 0.9359970403255642, + "t": 0.9387464387464387, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.36614730878186963, + "t": 0.4406611719137054, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9612349914236707, + "t": 0.9597523219814241, + "punct": null + }, + "opus100": { + "u": 0.8661679135494597, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9602122015915119, + "t": 0.9666221628838451, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3570672500176416, + "t": 0.4554878786656448, + "punct": null + }, + "legal-all-laws": { + "u": 0.8291674012781539, + "t": 0.8737060666508869, + "punct": null, + "acc_u": 0.5032679738562091, + "acc_t": 0.5751633986928104, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.2701776843198047, + "t": 0.34533075261778245, + "punct": null, + "acc_u": 0.010893246187363835, + "acc_t": 0.02832244008714597, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7216251860392519, + "t": 0.7631318015487888, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2208019252290554, + "t": 0.3008127399908799, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.6339321357285429, + "t": 0.8403990024937656, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.6192816635160681, + "t": 0.8030176026823135, + "punct": null + }, + "ud": { + "u": 0.9818181818181818, + "t": 0.9829268292682927, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2985074626865672, + "t": 0.3132530120481927, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.4428571428571429, + "t": 0.799225931301403, + "punct": null + }, + "ud": { + "u": 0.7075351213282248, + "t": 0.7366120218579235, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.889811738648948, + "t": 0.8809278350515464, + "punct": null + }, + "ud": { + "u": 0.943342776203966, + "t": 0.9432432432432432, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38562425481178675, + "t": 0.40444949277349107, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.9262926292629263, + "t": 0.9229910714285714, + "punct": null + }, + "opus100": { + "u": 0.6659412404787813, + "t": 0.7522098659823211, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2721396250808016, + "t": 0.3377372641781573, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8891257995735607, + "t": 0.8964992389649924, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.23076923076923075, + "t": 0.30769230769230765, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9172690763052209, + "t": 0.9360755975541968, + "punct": null + }, + "ud": { + "u": 0.9415292353823089, + "t": 0.9418777943368107, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.16521896489323198, + "t": 0.3700076265403604, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.90741956664478, + "t": 0.9473684210526316, + "punct": null + }, + "opus100": { + "u": 0.6379258365993367, + "t": 0.6477244153884839, + "punct": null + }, + "ud": { + "u": 0.9966974900924702, + "t": 0.9976844194508766, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4525027585515097, + "t": 0.45556249099726315, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9400386847195358, + "t": 0.940980881130507, + "punct": null + }, + "ud": { + "u": 0.9900744416873448, + "t": 0.9888198757763975, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1119359249853487, + "t": 0.38493181991315606, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.8077994428969358, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9312063808574277, + "t": 0.9640831758034026, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.33775723232925736, + "t": 0.44937915836758907, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.9166197183098592, + "t": 0.9139815074250491, + "punct": null + }, + "ud": { + "u": 0.9775095995611629, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4333591416878664, + "t": 0.43979451196591907, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.2600116076610563, + "t": 0.8922670191672175, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.07142857142857142, + "t": 0.14685314685314688, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9530646051905025, + "t": 0.9449492250133618, + "punct": null + }, + "ud": { + "u": 0.9638168427793788, + "t": 0.9592417061611375, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.23468803663423013, + "t": 0.4357682619647355, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.8664563617245006, + "t": 0.8876498466685252, + "punct": null + }, + "ud": { + "u": 0.981859410430839, + "t": 0.9874285714285714, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3899880562912188, + "t": 0.4048074296640263, + "punct": null + }, + "legal-all-laws": { + "u": 0.7947146106617172, + "t": 0.7866469110157553, + "punct": null, + "acc_u": 0.3849431818181818, + "acc_t": 0.46875, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.32938855033230535, + "t": 0.3088533447264671, + "punct": null, + "acc_u": 0.05397727272727273, + "acc_t": 0.048295454545454544, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7519384988845592, + "t": 0.7678155802126032, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.21564356303066126, + "t": 0.2655048042428471, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8562019758507136, + "t": 0.8773148148148148, + "punct": null + }, + "opus100": { + "u": 0.5659259259259259, + "t": 0.7011788826242952, + "punct": null + }, + "ud": { + "u": 0.9679420889348501, + "t": 0.9665271966527197, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7827259003666164, + "t": 0.8411815597577554, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9906336088154271, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.9139966273187183, + "t": 0.9225294278675061, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2708710261049367, + "t": 0.34910001353363107, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9961046188091263, + "t": 0.9846322722283204, + "punct": null + }, + "opus100": { + "u": 0.6798534798534799, + "t": 0.8611996522747031, + "punct": null + }, + "ud": { + "u": 0.9847448711204629, + "t": 0.9842602308499474, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42433397418291674, + "t": 0.6264309918490704, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.8642672312397084, + "t": 0.9050422318914769, + "punct": null + }, + "opus100": { + "u": 0.6810302129767211, + "t": 0.727433628318584, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3787289234760052, + "t": 0.37865748709122204, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.5843270868824532, + "t": 0.7063711911357342, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.22514619883040937, + "t": 0.35607843137254896, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.6786296900489397, + "t": 0.7397029980386663, + "punct": null + }, + "ud": { + "u": 0.9987855234393976, + "t": 0.9975657254138267, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7753145027296463, + "t": 0.7762161132021536, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.776874435411021, + "t": 0.7244094488188977, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.02726014268980939, + "t": 0.2608580508474576, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.8236162361623617, + "t": 0.8722149410222805, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49840255591054317, + "t": 0.5761843790012804, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.9390402075226978, + "t": 0.9380530973451328, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.30769230769230765, + "t": 0.4, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9143173023770038, + "t": 0.9387521465369204, + "punct": null + }, + "opus100": { + "u": 0.8136349155782097, + "t": 0.8223738062755797, + "punct": null + }, + "ud": { + "u": 0.9261410788381743, + "t": 0.9213114754098359, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.31572912934432107, + "t": 0.40300505159535427, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9859154929577465, + "t": 0.9891936824605153, + "punct": null + }, + "opus100": { + "u": 0.8052784036047635, + "t": 0.785027293995321, + "punct": null + }, + "ud": { + "u": 0.9863457532978478, + "t": 0.9872360176375029, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3240495453569127, + "t": 0.41390062774381486, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.8502475247524752, + "t": 0.8715811409221152, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.21926910299003322, + "t": 0.3018181818181818, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9415900486749594, + "t": 0.943264318365152, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.44251926246789586, + "t": 0.4461493313210078, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8392711449551264, + "t": 0.83528102392877, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4114546732255797, + "t": 0.41999441496788603, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.3473707178703906, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7401774397972116, + "t": 0.7429537153137435, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9028901734104046, + "t": 0.9079059223576084, + "punct": null + }, + "ud": { + "u": 0.9523809523809523, + "t": 0.923076923076923, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.32495205625399526, + "t": 0.32319545823195456, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.9007153075822604, + "t": 0.89470871191876, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42477608936298683, + "t": 0.4397712379363756, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.6450884456153556, + "t": 0.7099381835473133, + "punct": null + }, + "ud": { + "u": 0.9222096956031567, + "t": 0.9392265193370166, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.021052631578947368, + "t": 0.24832214765100669, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.7725631768953067, + "t": 0.7704764870756774, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8701734750979295, + "t": 0.8786862087232915, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.6888731396172927, + "t": 0.7558509101415776, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.47644603458556944, + "t": 0.5547385620915033, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9366551815531408, + "t": null, + "punct": null + }, + "ud": { + "u": 0.934720908230842, + "t": 0.9348441926345609, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4675442122186495, + "t": 0.46821586326099485, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9523550231418458, + "t": 0.9518891002989943, + "punct": null + }, + "ud": { + "u": 0.967032967032967, + "t": 0.9675952245594088, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.6173205033308661, + "t": 0.7148721187243449, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1783132530120482, + "t": 0.386892177589852, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9484536082474226, + "t": 0.9452852153667054, + "punct": null + }, + "opus100": { + "u": 0.9337766694375172, + "t": 0.9335180055401662, + "punct": null + }, + "ud": { + "u": 0.9818913480885311, + "t": 0.9852866565195333, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.41516395881687795, + "t": 0.44775997048817473, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.899304865938431, + "t": 0.9338947368421052, + "punct": null + }, + "opus100": { + "u": 0.6976217440543601, + "t": 0.7540773904700991, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4871606749816582, + "t": 0.4720194647201946, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9121676067687349, + "t": 0.9218106995884774, + "punct": null + }, + "ud": { + "u": 0.9274790330537742, + "t": 0.9301895515487748, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4549335165104755, + "t": 0.45387293298520454, + "punct": null + }, + "legal-all-laws": { + "u": 0.6963796272508191, + "t": 0.6308973944151256, + "punct": null, + "acc_u": 0.08620689655172414, + "acc_t": 0.05172413793103448, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.4577408649060269, + "t": 0.4223303079429923, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7578737438881799, + "t": 0.7805533325013817, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.18379273145245, + "t": 0.11036936634520882, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9576584256891162, + "t": 0.9606389047347405, + "punct": null + }, + "opus100": { + "u": 0.9369571308489772, + "t": 0.9356270810210877, + "punct": null + }, + "ud": { + "u": 0.988929889298893, + "t": 0.988929889298893, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.33991037388803425, + "t": 0.40681702560624045, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9438596491228071, + "t": 0.9434628975265017, + "punct": null + }, + "opus100": { + "u": 0.8111206649469762, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8520302821748107, + "t": 0.8711111111111112, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4396690279183285, + "t": 0.47033703160979695, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8338593974175037, + "t": 0.8355452971725332, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4113980409617097, + "t": 0.3962920046349942, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9280089988751407, + "t": 0.9117802430005283, + "punct": null + }, + "ud": { + "u": 0.8803131991051455, + "t": 0.882286995515695, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42931174089068824, + "t": 0.43168654173764903, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9309031556039172, + "t": 0.9273209549071617, + "punct": null + }, + "ud": { + "u": 0.9813124728378966, + "t": 0.986013986013986, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3768232302957313, + "t": 0.41823757553891944, + "punct": null + }, + "short-sequences": { + "u": 0.7858032953524154, + "t": 0.7839318753908197, + "punct": null, + "acc_u": 0.3280791788856305, + "acc_t": 0.32368035190615835, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6752926529319492, + "t": 0.6771202475839573, + "punct": null, + "acc_u": 0.14222873900293256, + "acc_t": 0.15249266862170088, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9311018131101813, + "t": 0.9094725793754921, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39649871595471475, + "t": 0.40040737984253205, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9488017429193899, + "t": 0.9475970676079283, + "punct": null + }, + "ud": { + "u": 0.9696312364425164, + "t": 0.9694323144104804, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3626393492015667, + "t": 0.3879302716573755, + "punct": null + }, + "short-sequences": { + "u": 0.9007207491582493, + "t": 0.9129464285714285, + "punct": null, + "acc_u": 0.640625, + "acc_t": 0.6770833333333334, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6059689153439153, + "t": 0.6202008928571429, + "punct": null, + "acc_u": 0.036458333333333336, + "acc_t": 0.06770833333333333, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9360417238539664, + "t": 0.9279829922933829, + "punct": null + }, + "ud": { + "u": 0.944385026737968, + "t": 0.9413008989952406, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42548639433041385, + "t": 0.46778331069865703, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9418666666666667, + "t": 0.9771332961517011, + "punct": null + }, + "opus100": { + "u": 0.5532217871128515, + "t": 0.5911620294599018, + "punct": null + }, + "ud": { + "u": 0.923076923076923, + "t": 0.981651376146789, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.18572574178027268, + "t": 0.3989637305699482, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.7817292006525286, + "t": 0.7884733292458616, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.41629867523083103, + "t": 0.4239007891770012, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.6752613240418118, + "t": 0.8787640743650169, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.16993464052287582, + "t": 0.5408450704225352, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.2925925925925926, + "t": 0.6825535636204635, + "punct": null + }, + "ud": { + "u": 0.03683640303358614, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.08256595964821521, + "t": 0.5100112485939258, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9507398389211463, + "t": 0.9388201019664967, + "punct": null + }, + "opus100": { + "u": 0.94010989010989, + "t": 0.939917695473251, + "punct": null + }, + "ud": { + "u": 0.9798590130916416, + "t": 0.9804118533400302, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6344361475990625, + "t": 0.6384384689676206, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9051937345424567, + "t": 0.8961072441350865, + "punct": null + }, + "ud": { + "u": 0.9457562220804084, + "t": 0.9432314410480349, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3806155861165685, + "t": 0.4371738257727821, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.48041594454072795, + "t": 0.5403225806451614, + "punct": null + }, + "ud": { + "u": 0.9906735751295338, + "t": 0.9937369519832986, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5101172683375489, + "t": 0.5101172683375489, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.5308134757600658, + "t": 0.8109020742884708, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6214553638409602, + "t": 0.6270714569799815, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9121894858463316, + "t": 0.9107625743645213, + "punct": null + }, + "ud": { + "u": 0.9755766621438263, + "t": 0.9848275862068965, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2828900583131845, + "t": 0.37115498686551984, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.7096774193548386, + "t": 0.867104887110603, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.5431632010081915, + "t": 0.8098495212038302, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.2378160146111699, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8851913477537438, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.8922991071428572, + "t": 0.9159953970080552, + "punct": null + }, + "opus100": { + "u": 0.692191739523666, + "t": 0.7489249090307641, + "punct": null + }, + "ud": { + "u": 0.9833518312985573, + "t": 0.9910313901345292, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.10473702146995344, + "t": 0.3338077243951514, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.42639593908629453, + "t": 0.8852744699390066, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9836734693877551, + "t": 0.9930458970792767, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.2837837837837837, + "t": 0.2860318636532049, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.9298474945533769, + "t": 0.9379128137384412, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4607843137254902, + "t": 0.4694749694749694, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.36338672768878727, + "t": 0.4141689373297003, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4064516129032258, + "t": 0.41058887088060503, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.8111298482293423, + "t": 0.889970788704966, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.330488750969744, + "t": 0.33499377334993774, + "punct": null + }, + "short-sequences": { + "u": 0.8733915125186017, + "t": 0.9382167870053434, + "punct": null, + "acc_u": 0.4781704781704782, + "acc_t": 0.7068607068607069, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6041694576385344, + "t": 0.6068916729617004, + "punct": null, + "acc_u": 0.11226611226611227, + "acc_t": 0.10395010395010396, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-sm-3l.json b/wtpsplit/evaluation/evaluation_results/main/sat-sm-3l.json new file mode 100644 index 00000000..371d1a9a --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-sm-3l.json @@ -0,0 +1,1645 @@ +{ + "af": { + "opus100": { + "u": 0.8620596934659854, + "t": 0.860400444938821, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6012488849241748, + "t": 0.597317868793041, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.70814332247557, + "t": 0.7556296914095079, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.41927710843373495, + "t": 0.5251989389920424, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.923076923076923, + "t": 0.9218930357829934, + "punct": null + }, + "opus100": { + "u": 0.6520353982300885, + "t": 0.7215686274509805, + "punct": null + }, + "ud": { + "u": 0.8445475638051044, + "t": 0.8528072837632777, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.45034067085953877, + "t": 0.5325343985796716, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.8528072837632777, + "t": 0.8419895575707612, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.657392253136934, + "t": 0.7013461099703399, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.8777777777777779, + "t": 0.8813367318040215, + "punct": null + }, + "ud": { + "u": 0.9348383786557211, + "t": 0.9321503131524008, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5671109843894789, + "t": 0.5714071856287425, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.961528114070487, + "t": 0.9652362846279195, + "punct": null + }, + "ud": { + "u": 0.9925335988053758, + "t": 0.9925335988053758, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6133855919567162, + "t": 0.626367070988268, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.8612593383137673, + "t": 0.8700163844893501, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2258404944972109, + "t": 0.3571312672399805, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.9298105150787296, + "t": 0.9313593539703903, + "punct": null + }, + "ud": { + "u": 0.996998799519808, + "t": 0.998497144574692, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5823529411764706, + "t": 0.5765476668003744, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3157894736842105, + "t": 0.49523809523809526, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9849310676498877, + "t": 0.9850260416666666, + "punct": null + }, + "opus100": { + "u": 0.9430894308943091, + "t": 0.9452954048140043, + "punct": null + }, + "ud": { + "u": 0.9434987524258387, + "t": 0.9443784303740169, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5945480891142908, + "t": 0.5990890590173467, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.7956015523932729, + "t": 0.8114457831325301, + "punct": null + }, + "ud": { + "u": 0.9935634874195436, + "t": 0.9936009307737057, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9398759773523861, + "t": 0.9398435392500675, + "punct": null + }, + "ud": { + "u": 0.9853372434017597, + "t": 0.985279685966634, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6308418328512712, + "t": 0.6308607076713131, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9724310776942356, + "t": 0.9889110036963321, + "punct": null + }, + "opus100": { + "u": 0.8693731013532173, + "t": 0.8716235032024505, + "punct": null + }, + "ud": { + "u": 0.9780600461893765, + "t": 0.9720930232558139, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6408546065499775, + "t": 0.6454775458570525, + "punct": null + }, + "legal-all-laws": { + "u": 0.85866075104861, + "t": 0.8597395243443425, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.6384324141687042, + "t": 0.636500231095806, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7701507232678425, + "t": 0.7693877786668751, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.548182023447949, + "t": 0.5658698629193546, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9591118331979419, + "t": 0.9587404994571118, + "punct": null + }, + "ud": { + "u": 0.9793939393939394, + "t": 0.976629766297663, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5797012482095355, + "t": 0.5758917708890945, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9826880252855399, + "t": 0.9857173928804466, + "punct": null + }, + "opus100": { + "u": 0.9456226209896682, + "t": 0.9454545454545454, + "punct": null + }, + "ud": { + "u": 0.9667858967807869, + "t": 0.9666495638789122, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.583387892278818, + "t": 0.5864562787639711, + "punct": null + }, + "legal-all-judgements": { + "u": 0.8895953412482259, + "t": 0.8948990246918416, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5574718049325813, + "t": 0.5556654550165377, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9518658734451055, + "t": 0.9556164383561644, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5686609686609687, + "t": 0.5770411295273173, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9945593035908596, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9527451515979241, + "t": 0.9517279210093252, + "punct": null + }, + "ud": { + "u": 0.9935773924213231, + "t": 0.9942047649710238, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5807328367223675, + "t": 0.5815609616211824, + "punct": null + }, + "legal-all-laws": { + "u": 0.8809716050566033, + "t": 0.9291168963793102, + "punct": null, + "acc_u": 0.18579234972677597, + "acc_t": 0.3825136612021858, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.6064616169451724, + "t": 0.6539700031464624, + "punct": null, + "acc_u": 0.00546448087431694, + "acc_t": 0.01092896174863388, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.784604873038209, + "t": 0.8025433402238744, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.36516015988938616, + "t": 0.4628896821227053, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9889685603971319, + "t": 0.9895085588072888, + "punct": null + }, + "opus100": { + "u": 0.9296979417268111, + "t": 0.93531799729364, + "punct": null + }, + "ud": { + "u": 0.9816721941001919, + "t": 0.9798281003332748, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6297872340425532, + "t": 0.6289770960721319, + "punct": null + }, + "short-sequences": { + "u": 0.9115575041713156, + "t": 0.912637743652705, + "punct": null, + "acc_u": 0.5221674876847291, + "acc_t": 0.541871921182266, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6920234153692288, + "t": 0.6874161255703922, + "punct": null, + "acc_u": 0.12315270935960591, + "acc_t": 0.10837438423645321, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8998911860718172, + "t": 0.90154896298241, + "punct": null + }, + "ud": { + "u": 0.9996912627354121, + "t": 0.9996912627354121, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49777015437392796, + "t": 0.4998471415469276, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.60062893081761, + "t": 0.6628656420426375, + "punct": null + }, + "ud": { + "u": 0.9988553987027853, + "t": 0.9996181748759068, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6184621389539422, + "t": 0.6221448325309843, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9842236368668696, + "t": 0.9873843566021867, + "punct": null + }, + "opus100": { + "u": 0.9525087201502549, + "t": 0.957441040932502, + "punct": null + }, + "ud": { + "u": 0.9715504978662873, + "t": 0.9755922469490309, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6144089294774225, + "t": 0.6124653190646057, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9853333333333333, + "t": 0.9872739450770261, + "punct": null + }, + "opus100": { + "u": 0.9261962692619627, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9827814569536424, + "t": 0.9853528628495338, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6200456736868815, + "t": 0.6141860675785851, + "punct": null + }, + "legal-all-laws": { + "u": 0.8395132288430194, + "t": 0.9010623787219014, + "punct": null, + "acc_u": 0.5904139433551199, + "acc_t": 0.644880174291939, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.560302755568409, + "t": 0.6494955441056841, + "punct": null, + "acc_u": 0.17647058823529413, + "acc_t": 0.23311546840958605, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8376457035045409, + "t": 0.8537784103153043, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.4633925630286969, + "t": 0.49055727881290034, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.9100591715976332, + "t": 0.9050554870530211, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.8076797917344615, + "t": 0.8744512730465321, + "punct": null + }, + "ud": { + "u": 0.9549763033175355, + "t": 0.9652694610778444, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43956043956043955, + "t": 0.4296296296296296, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.8246648793565684, + "t": 0.8755533694048204, + "punct": null + }, + "ud": { + "u": 0.8434695912263211, + "t": 0.8507936507936507, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.9313017909649827, + "t": 0.9322623828647925, + "punct": null + }, + "ud": { + "u": 0.9889502762430938, + "t": 0.9874476987447698, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5599835450197973, + "t": 0.5618628919271462, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.7066578773895847, + "t": 0.7521793275217934, + "punct": null + }, + "opus100": { + "u": 0.8337934842628383, + "t": 0.8324963072378139, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.25151357896557686, + "t": 0.3177476576002911, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.9138693728857663, + "t": 0.9149606299212598, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39999999999999997, + "t": 0.32, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9218543046357616, + "t": 0.9392600773053562, + "punct": null + }, + "ud": { + "u": 0.955137481910275, + "t": 0.9558823529411765, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5263934253503318, + "t": 0.5325249106974995, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9811153077093978, + "t": 0.9558620689655172, + "punct": null + }, + "opus100": { + "u": 0.7282211789254043, + "t": 0.7200584225900682, + "punct": null + }, + "ud": { + "u": 0.998678122934567, + "t": 0.998678122934567, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5056375563755637, + "t": 0.5088673654415992, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9583899918411749, + "t": 0.9578001633542064, + "punct": null + }, + "ud": { + "u": 0.9950738916256158, + "t": 0.9950738916256158, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.490368703250149, + "t": 0.550011756407242, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.9055495439789767, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9840075258701786, + "t": 0.9830508474576272, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6025233459169481, + "t": 0.5998037108005795, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.9366331248300245, + "t": 0.9429909115946019, + "punct": null + }, + "ud": { + "u": 0.9961046188091264, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5642978003384094, + "t": 0.5700000000000001, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.9211229946524065, + "t": 0.9192334017796031, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.09230769230769231, + "t": 0.2108626198083067, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9647637257579895, + "t": 0.9647637257579895, + "punct": null + }, + "ud": { + "u": 0.9571488294314381, + "t": 0.9672007742768038, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5650644783118406, + "t": 0.5676800000000001, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.90927995840915, + "t": 0.9134893505127532, + "punct": null + }, + "ud": { + "u": 0.9874572405929305, + "t": 0.9954022988505747, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5601623659031603, + "t": 0.5717433213990636, + "punct": null + }, + "legal-all-laws": { + "u": 0.7994558488239146, + "t": 0.8271178382990025, + "punct": null, + "acc_u": 0.2940340909090909, + "acc_t": 0.6235795454545454, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5399476448160936, + "t": 0.5234751319883766, + "punct": null, + "acc_u": 0.07386363636363637, + "acc_t": 0.08948863636363637, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8371609607460455, + "t": 0.8402449954652053, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.36401224161471785, + "t": 0.37248630887479456, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8906838987614433, + "t": 0.8893685914732866, + "punct": null + }, + "opus100": { + "u": 0.7799027552674231, + "t": 0.7844126717129241, + "punct": null + }, + "ud": { + "u": 0.9710743801652894, + "t": 0.9690721649484535, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8387711626863998, + "t": 0.8721105679280585, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9933774834437086, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.9355102040816325, + "t": 0.9348951239444293, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49027928550281263, + "t": 0.4950938199345842, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9966740576496673, + "t": 0.9988888888888888, + "punct": null + }, + "opus100": { + "u": 0.9221854304635763, + "t": 0.9184202940328624, + "punct": null + }, + "ud": { + "u": 0.9931398416886544, + "t": 0.7556142668428005, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6893534273213417, + "t": 0.6984405116523568, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.8394784172661871, + "t": 0.864639529180971, + "punct": null + }, + "opus100": { + "u": 0.8661911554921541, + "t": 0.8723728297289065, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4709576138147567, + "t": 0.655621301775148, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.8789013732833958, + "t": 0.8689384010484928, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.18280402788536018, + "t": 0.36587301587301585, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.7893544733861834, + "t": 0.8, + "punct": null + }, + "ud": { + "u": 0.999514091350826, + "t": 0.9990277102576567, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7717462393721387, + "t": 0.7771689932821955, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.9110036963321012, + "t": 0.9071261682242991, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.031654981941788826, + "t": 0.33092400859542875, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.9181250000000001, + "t": 0.9371089891340137, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.628056628056628, + "t": 0.6051282051282051, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.9661016949152542, + "t": 0.9774159663865546, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.33333333333333326, + "t": 0.3, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9827682045580879, + "t": 0.9832402234636872, + "punct": null + }, + "opus100": { + "u": 0.8996655518394648, + "t": 0.8992248062015503, + "punct": null + }, + "ud": { + "u": 0.9788273615635179, + "t": 0.9805194805194806, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5655818797188232, + "t": 0.5658686826263474, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9933847850055127, + "t": 0.9933847850055127, + "punct": null + }, + "opus100": { + "u": 0.8968635207685787, + "t": 0.8890094979647218, + "punct": null + }, + "ud": { + "u": 0.9923945609587462, + "t": 0.9921622867680959, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6081486499564501, + "t": 0.6072732729728377, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9161188535366817, + "t": 0.9306451612903226, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42990654205607476, + "t": 0.4874551971326165, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9536247334754797, + "t": 0.9557046979865773, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5730994152046783, + "t": 0.5725879992704724, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8591153157760163, + "t": 0.8652997664157798, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.44186046511627913, + "t": 0.4466887894964652, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.9011051289317087, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8057092277052446, + "t": 0.8070841946477457, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9332206255283177, + "t": 0.9334836527621195, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 0.9879518072289156, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3941284733132827, + "t": 0.39510022271714923, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.9412086409625375, + "t": 0.9493318485523384, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5224278671300413, + "t": 0.5301551267499054, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.8513319965625895, + "t": 0.8402461867808402, + "punct": null + }, + "ud": { + "u": 0.9303322615219721, + "t": 0.9302832244008713, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.44155844155844154, + "t": 0.3917525773195876, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.8937007874015748, + "t": 0.8958152958152958, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9221380946999661, + "t": 0.9229795800977855, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.819718309859155, + "t": 0.8254257907542579, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49752781211372066, + "t": 0.5824485373781148, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9482303222398311, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9572490706319703, + "t": 0.957089552238806, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6603122730573712, + "t": 0.6833099287460342, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9582997040624159, + "t": 0.9636067354698532, + "punct": null + }, + "ud": { + "u": 0.9900199600798403, + "t": 0.9908571428571429, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.810225062517366, + "t": 0.8061375036884038, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.375, + "t": 0.45408163265306123, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9832026875699887, + "t": 0.9837716843872412, + "punct": null + }, + "opus100": { + "u": 0.955790615676702, + "t": 0.9560737527114967, + "punct": null + }, + "ud": { + "u": 0.9919799498746866, + "t": 0.9906494819307555, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.620551623138882, + "t": 0.6204807692307692, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.8268651426546164, + "t": 0.8478054341630249, + "punct": null + }, + "opus100": { + "u": 0.855625, + "t": 0.8536348949919225, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49596122778675283, + "t": 0.4753300903405142, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9377659574468086, + "t": 0.9463945578231292, + "punct": null + }, + "ud": { + "u": 0.9717247879359096, + "t": 0.9770992366412213, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6136830601092895, + "t": 0.6203480710682964, + "punct": null + }, + "legal-all-laws": { + "u": 0.7419174857337968, + "t": 0.5865818678466248, + "punct": null, + "acc_u": 0.10344827586206896, + "acc_t": 0.05172413793103448, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.6502928229290827, + "t": 0.6386759119482585, + "punct": null, + "acc_u": 0.06896551724137931, + "acc_t": 0.08620689655172414, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8176859123949104, + "t": 0.7731081629539254, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.41854873146669763, + "t": 0.3797861455693222, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9910913140311804, + "t": 0.990830786329536, + "punct": null + }, + "opus100": { + "u": 0.9587912087912088, + "t": 0.9609310058187862, + "punct": null + }, + "ud": { + "u": 0.9904963041182682, + "t": 0.9936373276776247, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.57341496316281, + "t": 0.5759832993310243, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.987709497206704, + "t": 0.9882220975883342, + "punct": null + }, + "opus100": { + "u": 0.8412496824993649, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9242979242979242, + "t": 0.9245982694684797, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6078369481895659, + "t": 0.6126364538537876, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8543689320388349, + "t": 0.8585499316005472, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4881170018281536, + "t": 0.48151658767772515, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9592612710483432, + "t": 0.9599564151457368, + "punct": null + }, + "ud": { + "u": 0.9652963160704752, + "t": 0.967327262988752, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5968348343096965, + "t": 0.60594688221709, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9533011272141707, + "t": 0.9530705282917672, + "punct": null + }, + "ud": { + "u": 0.9922010398613518, + "t": 0.9926311226701343, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6324749254540526, + "t": 0.631083202511774, + "punct": null + }, + "short-sequences": { + "u": 0.7998754107166864, + "t": 0.7997215781721775, + "punct": null, + "acc_u": 0.3453079178885631, + "acc_t": 0.3467741935483871, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6722730918478719, + "t": 0.6757854397150586, + "punct": null, + "acc_u": 0.15395894428152493, + "acc_t": 0.15542521994134897, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9566166439290587, + "t": 0.960417811984607, + "punct": null + }, + "ud": { + "u": 0.9908256880733944, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5195047656480299, + "t": 0.5240170903284278, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9588744588744588, + "t": 0.962962962962963, + "punct": null + }, + "ud": { + "u": 0.9935483870967742, + "t": 0.9957173447537474, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5729857576224998, + "t": 0.5694520298561806, + "punct": null + }, + "short-sequences": { + "u": 0.9194857804232806, + "t": 0.9271494708994709, + "punct": null, + "acc_u": 0.6927083333333334, + "acc_t": 0.7447916666666666, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6739252645502646, + "t": 0.6749421296296297, + "punct": null, + "acc_u": 0.17708333333333334, + "acc_t": 0.17708333333333334, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9497863247863249, + "t": 0.9536138079827401, + "punct": null + }, + "ud": { + "u": 0.9623430962343096, + "t": 0.9634340222575517, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6414914464276256, + "t": 0.6410424768927723, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9850911098840419, + "t": 0.9856035437430786, + "punct": null + }, + "opus100": { + "u": 0.7499272197962155, + "t": 0.7376014427412083, + "punct": null + }, + "ud": { + "u": 0.9953917050691244, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.46177215189873416, + "t": 0.4820392024901152, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.8679562657695542, + "t": 0.86949055523755, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4931465582165989, + "t": 0.495125348189415, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.9232818327117741, + "t": 0.9210669569951007, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5167037861915367, + "t": 0.591352859135286, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.7293598233995585, + "t": 0.7412345679012345, + "punct": null + }, + "ud": { + "u": 0.7119901112484549, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5647046267143392, + "t": 0.5817707200348053, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9745222929936305, + "t": 0.9750508223988171, + "punct": null + }, + "opus100": { + "u": 0.9468784227820372, + "t": 0.9451568894952251, + "punct": null + }, + "ud": { + "u": 0.98639798488665, + "t": 0.9858585858585859, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.699074784031079, + "t": 0.6995812438608282, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9352785145888595, + "t": 0.9383047210300429, + "punct": null + }, + "ud": { + "u": 0.9833641404805915, + "t": 0.9839307787391842, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6074805928016936, + "t": 0.6080399596561163, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.6048780487804878, + "t": 0.6174698795180723, + "punct": null + }, + "ud": { + "u": 0.9927310488058151, + "t": 0.9916666666666667, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5622398789254636, + "t": 0.5638329649321943, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.8492399700971842, + "t": 0.8565193671576651, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.595391392748221, + "t": 0.6708724832214765, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9468680089485458, + "t": 0.9481894150417828, + "punct": null + }, + "ud": { + "u": 0.9951624049758121, + "t": 0.9951489951489952, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.534617762208943, + "t": 0.5366200310903841, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.8956643356643357, + "t": 0.9023255813953488, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.8901734104046242, + "t": 0.8827838827838826, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.5232696424324109, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8964401294498383, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.9052396878483835, + "t": 0.9012141280353201, + "punct": null + }, + "opus100": { + "u": 0.7747965028640338, + "t": 0.7586384734399175, + "punct": null + }, + "ud": { + "u": 0.9855715871254163, + "t": 0.9855715871254163, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.19894459102902376, + "t": 0.37895069532237674, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.9330240649463613, + "t": 0.9366028708133972, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9863760217983651, + "t": 0.9972299168975068, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.3067998710924911, + "t": 0.3312444046553268, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.7105744603000366, + "t": 0.7042253521126761, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4798375398897593, + "t": 0.4777303233679073, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.43639357760395225, + "t": 0.4624871531346352, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4517997517583781, + "t": 0.46826222684703434, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.7766272189349112, + "t": 0.9254013220018885, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4373937677053824, + "t": 0.4840182648401827, + "punct": null + }, + "short-sequences": { + "u": 0.8916514623468693, + "t": 0.9226855854641182, + "punct": null, + "acc_u": 0.5613305613305614, + "acc_t": 0.6756756756756757, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6674737389599491, + "t": 0.6738383274889845, + "punct": null, + "acc_u": 0.13097713097713098, + "acc_t": 0.15384615384615385, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-sm-3l_no_corruptions.json b/wtpsplit/evaluation/evaluation_results/main/sat-sm-3l_no_corruptions.json new file mode 100644 index 00000000..bac66b8c --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-sm-3l_no_corruptions.json @@ -0,0 +1,1645 @@ +{ + "af": { + "opus100": { + "u": 0.855715871254162, + "t": 0.856830002737476, + "punct": null + }, + "ud": { + "u": 0.9986928104575163, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5673632725655846, + "t": 0.5650557620817844, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.7158719790986283, + "t": 0.7750281214848145, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.40107671601615075, + "t": 0.5038826574633304, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.8263976460697772, + "t": 0.9035153328347045, + "punct": null + }, + "opus100": { + "u": 0.6279912980420594, + "t": 0.6969346443030653, + "punct": null + }, + "ud": { + "u": 0.8521008403361346, + "t": 0.862681744749596, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.23402753265090015, + "t": 0.5057863102179958, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.8547412660887839, + "t": 0.8458075407990996, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6333643988816403, + "t": 0.6785223506587987, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.8778840742824986, + "t": 0.8783399658897101, + "punct": null + }, + "ud": { + "u": 0.9320186818889465, + "t": 0.9286463798530955, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5121532742350586, + "t": 0.5120069858826954, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9593539703903095, + "t": 0.9625407166123778, + "punct": null + }, + "ud": { + "u": 0.9925410243659871, + "t": 0.9945191828599901, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5424757916775714, + "t": 0.5447678078543412, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.877221766475253, + "t": 0.8774789459386036, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.27218807289981667, + "t": 0.302055959189983, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.9307837328305951, + "t": 0.93006993006993, + "punct": null + }, + "ud": { + "u": 0.9987973541791942, + "t": 0.9981927710843373, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.32791554959785524, + "t": 0.5149292371418708, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.16129032258064516, + "t": 0.4566929133858268, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9835536923573042, + "t": 0.9830839297332465, + "punct": null + }, + "opus100": { + "u": 0.9372972972972973, + "t": 0.9405613648871767, + "punct": null + }, + "ud": { + "u": 0.9521374173105787, + "t": 0.9517441212526468, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4930647291941876, + "t": 0.5033409698358152, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.7919719655941384, + "t": 0.8130598093036694, + "punct": null + }, + "ud": { + "u": 0.9941520467836257, + "t": 0.9935860058309038, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.939484396200814, + "t": 0.9392624728850325, + "punct": null + }, + "ud": { + "u": 0.9860834990059643, + "t": 0.9891625615763546, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5616157132552849, + "t": 0.5630386211299074, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9782547303021745, + "t": 0.9809929078014183, + "punct": null + }, + "opus100": { + "u": 0.856818826197902, + "t": 0.8547008547008547, + "punct": null + }, + "ud": { + "u": 0.9720605355064028, + "t": 0.9623085983510011, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5552763819095479, + "t": 0.5793502114221485, + "punct": null + }, + "legal-all-laws": { + "u": 0.821178725591842, + "t": 0.8325484226443048, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5684609243643209, + "t": 0.577149359122327, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7664569594754425, + "t": 0.7701021169659789, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.45360948914278143, + "t": 0.46441056221932925, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9580741141466054, + "t": 0.9580838323353293, + "punct": null + }, + "ud": { + "u": 0.9819059107358263, + "t": 0.9751861042183623, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5149841344458808, + "t": 0.5348242811501597, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9806396099239925, + "t": 0.9844236760124611, + "punct": null + }, + "opus100": { + "u": 0.9455838118676511, + "t": 0.943426724137931, + "punct": null + }, + "ud": { + "u": 0.9640657084188912, + "t": 0.9650565262076053, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4844084205786333, + "t": 0.497302599313389, + "punct": null + }, + "legal-all-judgements": { + "u": 0.8954773013840837, + "t": 0.894239297896797, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.4408015356032201, + "t": 0.4850206197358402, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.955264593562466, + "t": 0.950110864745011, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.35301383399209485, + "t": 0.5363891084129607, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9934497816593888, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9485557083906465, + "t": 0.949004635942187, + "punct": null + }, + "ud": { + "u": 0.9935649935649936, + "t": 0.9935649935649936, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43845886844845533, + "t": 0.5192058889136738, + "punct": null + }, + "legal-all-laws": { + "u": 0.8427301184883391, + "t": 0.928404440559976, + "punct": null, + "acc_u": 0.11475409836065574, + "acc_t": 0.3442622950819672, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.4301787395921008, + "t": 0.5686558422468343, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7681501432016603, + "t": 0.8041328315853123, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.23888906008490224, + "t": 0.4498891384428983, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.988950276243094, + "t": 0.9886771610052472, + "punct": null + }, + "opus100": { + "u": 0.9326508620689654, + "t": 0.9351498637602179, + "punct": null + }, + "ud": { + "u": 0.9787905346187555, + "t": 0.9787979674084457, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5471009201109975, + "t": 0.5508558347640601, + "punct": null + }, + "short-sequences": { + "u": 0.9081965051256357, + "t": 0.9085770101744878, + "punct": null, + "acc_u": 0.5320197044334976, + "acc_t": 0.5320197044334976, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6353863150330906, + "t": 0.6360176920490804, + "punct": null, + "acc_u": 0.06896551724137931, + "acc_t": 0.08374384236453201, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8677871148459383, + "t": 0.8887113951011715, + "punct": null + }, + "ud": { + "u": 0.9996912627354121, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.20636285468615648, + "t": 0.42480831066040065, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.5976500476341696, + "t": 0.6653266331658292, + "punct": null + }, + "ud": { + "u": 0.9984744469870328, + "t": 0.9996181748759068, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5334318930179424, + "t": 0.6062868964125334, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9811842833425567, + "t": 0.9834036568213783, + "punct": null + }, + "opus100": { + "u": 0.9524065609034688, + "t": 0.9556036816459124, + "punct": null + }, + "ud": { + "u": 0.9780812073302192, + "t": 0.9766774309293147, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5352534932276888, + "t": 0.5397604271900707, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9843071786310519, + "t": 0.9833555259653796, + "punct": null + }, + "opus100": { + "u": 0.9116684841875682, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9852744310575635, + "t": 0.9866310160427807, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5216131369234484, + "t": 0.5605727387581302, + "punct": null + }, + "legal-all-laws": { + "u": 0.6777778743605098, + "t": 0.8996059505644213, + "punct": null, + "acc_u": 0.35947712418300654, + "acc_t": 0.6122004357298475, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.31874005809507544, + "t": 0.5519190142383459, + "punct": null, + "acc_u": 0.05010893246187364, + "acc_t": 0.16339869281045752, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8376434832032718, + "t": 0.8462233899302614, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.26801419722864483, + "t": 0.40607666782212587, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.9121762429294433, + "t": 0.9114311982837879, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.6751361161524501, + "t": 0.7972636815920398, + "punct": null + }, + "ud": { + "u": 0.9841656516443362, + "t": 0.9794437726723095, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2545454545454546, + "t": 0.38095238095238093, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.8143009605122733, + "t": 0.8516699410609037, + "punct": null + }, + "ud": { + "u": 0.837867247007617, + "t": 0.8403001071811362, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.9282092340539098, + "t": 0.9296226919989298, + "punct": null + }, + "ud": { + "u": 0.9833333333333333, + "t": 0.9846153846153846, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.47918197403869706, + "t": 0.5241347485002308, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.8065693430656934, + "t": 0.856160458452722, + "punct": null + }, + "opus100": { + "u": 0.8441151325163865, + "t": 0.8441633122484187, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.34075922295491, + "t": 0.34035383319292334, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.9159222280609565, + "t": 0.9144542772861357, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.36363636363636365, + "t": 0.31034482758620685, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9254128929142249, + "t": 0.9357848518111965, + "punct": null + }, + "ud": { + "u": 0.9529411764705883, + "t": 0.9566473988439307, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43793212813193777, + "t": 0.4914367070055693, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9801737580752952, + "t": 0.9307257304429783, + "punct": null + }, + "opus100": { + "u": 0.7255537547271745, + "t": 0.7182374541003671, + "punct": null + }, + "ud": { + "u": 0.9990089197224975, + "t": 0.9993394980184941, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4758623900190867, + "t": 0.47405480557922586, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9584577789845236, + "t": 0.9566395663956639, + "punct": null + }, + "ud": { + "u": 0.9975308641975309, + "t": 0.9987639060568604, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39812206572769954, + "t": 0.4889254908759914, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.9059641991714219, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9848484848484849, + "t": 0.9858088930936614, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49940636130725496, + "t": 0.5561131386861313, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.9414674361088211, + "t": 0.9394024015638089, + "punct": null + }, + "ud": { + "u": 0.9961046188091264, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3088590715892991, + "t": 0.5192859705776821, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.9273631840796019, + "t": 0.9281842818428184, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.036036036036036036, + "t": 0.18323586744639375, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9657440394628667, + "t": 0.9636909636909637, + "punct": null + }, + "ud": { + "u": 0.9715866765989145, + "t": 0.9728922091782283, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4804575786463299, + "t": 0.5501414649481295, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.9040880503144654, + "t": 0.903750327825859, + "punct": null + }, + "ud": { + "u": 0.9942594718714122, + "t": 0.9976958525345622, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4904251708925195, + "t": 0.48962695089455655, + "punct": null + }, + "legal-all-laws": { + "u": 0.848735284664134, + "t": 0.8360640699245138, + "punct": null, + "acc_u": 0.5667613636363636, + "acc_t": 0.5667613636363636, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.2641458212930845, + "t": 0.32933085852020005, + "punct": null, + "acc_u": 0.045454545454545456, + "acc_t": 0.05823863636363636, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8193813243608904, + "t": 0.8196656717241392, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.27082404485061057, + "t": 0.32203826640382605, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8597528210639441, + "t": 0.8619599578503688, + "punct": null + }, + "opus100": { + "u": 0.6685962373371924, + "t": 0.7846281448714405, + "punct": null + }, + "ud": { + "u": 0.9720785935884179, + "t": 0.9711934156378601, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8405169669574075, + "t": 0.8605501288428117, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9928295642581357, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.9353695118625579, + "t": 0.9344620425996722, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.42900116643133407, + "t": 0.4699120737722497, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9977802441731409, + "t": 0.9988888888888888, + "punct": null + }, + "opus100": { + "u": 0.9253146853146852, + "t": 0.9216832261835184, + "punct": null + }, + "ud": { + "u": 0.9947145877378435, + "t": 0.9367945823927766, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6571089578801661, + "t": 0.6688691232528591, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.868253594155079, + "t": 0.8860129417620707, + "punct": null + }, + "opus100": { + "u": 0.8770467401012206, + "t": 0.8725281411621539, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5363128491620112, + "t": 0.6195761856710393, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.885585003232062, + "t": 0.8852883992222943, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37434827945776855, + "t": 0.3909373611728121, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.7024265644955301, + "t": 0.7809829059829061, + "punct": null + }, + "ud": { + "u": 0.9992709599027946, + "t": 0.9990277102576567, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7729060731075506, + "t": 0.7713310580204777, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.9106678230702515, + "t": 0.9131701631701632, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.14557530066415364, + "t": 0.32530904359141183, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.9299935773924214, + "t": 0.9338162660520252, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5917159763313609, + "t": 0.6026731470230864, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.9712360715211195, + "t": 0.97877914592612, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3529411764705882, + "t": 0.5, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.975964225824483, + "t": 0.9774266365688488, + "punct": null + }, + "opus100": { + "u": 0.8949152542372881, + "t": 0.8877468217473627, + "punct": null + }, + "ud": { + "u": 0.9729286300246103, + "t": 0.9781021897810219, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5110940246045694, + "t": 0.5189494247883655, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9928216454997238, + "t": 0.9911894273127754, + "punct": null + }, + "opus100": { + "u": 0.8839841539332202, + "t": 0.8802411619621814, + "punct": null + }, + "ud": { + "u": 0.9933040868159779, + "t": 0.9921586715867159, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5402994584262505, + "t": 0.5445101716923966, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9340511440107673, + "t": 0.9476599279977845, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.21008403361344535, + "t": 0.4293785310734463, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9552398820691502, + "t": 0.9521739130434782, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.40671641791044777, + "t": 0.5257404466037559, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8639916623241272, + "t": 0.8606875161540449, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4020293911826452, + "t": 0.4140734510793383, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.8578234330802441, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6324145814810109, + "t": 0.6582940332171417, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9345002823263693, + "t": 0.9335595137121855, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 0.9879518072289156, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3582299887260429, + "t": 0.35889792231255646, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.9454444752146219, + "t": 0.9438775510204082, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.30386114954093824, + "t": 0.525068870523416, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.8155699721964782, + "t": 0.8301063539678211, + "punct": null + }, + "ud": { + "u": 0.9155844155844156, + "t": 0.9155844155844156, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.042553191489361694, + "t": 0.3474903474903475, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.8922899220329195, + "t": 0.8902965735675209, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.912466534745664, + "t": 0.9129551129434993, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.8183728610027019, + "t": 0.8144078144078145, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5505984766050054, + "t": 0.5594405594405594, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9489282879068536, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9553072625698324, + "t": 0.9553072625698324, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5733249843456482, + "t": 0.6121490221785207, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9582322824036648, + "t": 0.9604336043360433, + "punct": null + }, + "ud": { + "u": 0.9917119176907687, + "t": 0.9914236706689536, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.8181548501928211, + "t": 0.8172423974018306, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4583866837387964, + "t": 0.4574585635359116, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9751972942502819, + "t": 0.9763513513513513, + "punct": null + }, + "opus100": { + "u": 0.9517842549713974, + "t": 0.9512659950993738, + "punct": null + }, + "ud": { + "u": 0.9929506545820745, + "t": 0.9908998988877654, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49550879783437923, + "t": 0.5402120141342757, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.8256812243374394, + "t": 0.8236229866772717, + "punct": null + }, + "opus100": { + "u": 0.8645866838211644, + "t": 0.8604878048780488, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49399656946826753, + "t": 0.49572649572649585, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9363854138940645, + "t": 0.9469964664310954, + "punct": null + }, + "ud": { + "u": 0.9744801512287334, + "t": 0.9799235181644359, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5707172369954443, + "t": 0.5758788225207203, + "punct": null + }, + "legal-all-laws": { + "u": 0.7318630283860478, + "t": 0.6868721857271527, + "punct": null, + "acc_u": 0.08620689655172414, + "acc_t": 0.10344827586206896, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.45216611667421924, + "t": 0.4870268912058248, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8008060516409721, + "t": 0.8091432232245568, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.3545051841069901, + "t": 0.41170812008384106, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9811850603762987, + "t": 0.9830978110279855, + "punct": null + }, + "opus100": { + "u": 0.9500964984835952, + "t": 0.9508287292817681, + "punct": null + }, + "ud": { + "u": 0.9915433403805497, + "t": 0.9936440677966103, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.30629238561249894, + "t": 0.5316409292947807, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9865621500559911, + "t": 0.9881690140845071, + "punct": null + }, + "opus100": { + "u": 0.8399896933779953, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9267080745341616, + "t": 0.9280397022332506, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5496682182826582, + "t": 0.5506172839506174, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8576104746317512, + "t": 0.8587045640885488, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.44548651817116064, + "t": 0.4893435635123615, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9549158066268333, + "t": 0.9570921016671221, + "punct": null + }, + "ud": { + "u": 0.9549647314161692, + "t": 0.958400864397623, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5237501417072894, + "t": 0.5272892807513536, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9490703314470494, + "t": 0.9497446922870196, + "punct": null + }, + "ud": { + "u": 0.9926311226701343, + "t": 0.9921942758022549, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4970658412329915, + "t": 0.5264649326991194, + "punct": null + }, + "short-sequences": { + "u": 0.7825075340104666, + "t": 0.7910985774762297, + "punct": null, + "acc_u": 0.3255131964809384, + "acc_t": 0.3405425219941349, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6433215224820797, + "t": 0.6436531007278808, + "punct": null, + "acc_u": 0.10777126099706745, + "acc_t": 0.10850439882697947, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9582875960482985, + "t": 0.9575353871773522, + "punct": null + }, + "ud": { + "u": 0.9906542056074767, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3504632195739964, + "t": 0.5064952457479577, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9619771863117871, + "t": 0.9614340032590984, + "punct": null + }, + "ud": { + "u": 0.992465016146394, + "t": 0.9924973204715971, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4636386512330146, + "t": 0.5025732826135602, + "punct": null + }, + "short-sequences": { + "u": 0.9200851521164021, + "t": 0.9216476521164022, + "punct": null, + "acc_u": 0.7135416666666666, + "acc_t": 0.71875, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6533936838624338, + "t": 0.6504152386964887, + "punct": null, + "acc_u": 0.125, + "acc_t": 0.11979166666666667, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9512459371614301, + "t": 0.9468908460101414, + "punct": null + }, + "ud": { + "u": 0.9649309245483528, + "t": 0.9644562334217506, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5302608583079812, + "t": 0.5645484949832776, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9861495844875346, + "t": 0.9855875831485587, + "punct": null + }, + "opus100": { + "u": 0.7556505803298718, + "t": 0.7591019417475727, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.43824850299401197, + "t": 0.44649614045709096, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.8704663212435233, + "t": 0.8711834835708054, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5006170300287947, + "t": 0.5089483552070905, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.9215792320173066, + "t": 0.9147459039155791, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4040920716112532, + "t": 0.5234248788368336, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.7401841977702376, + "t": 0.7338021094927172, + "punct": null + }, + "ud": { + "u": 0.5903271692745378, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5202199144777031, + "t": 0.5785960472928755, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9627810315511053, + "t": 0.9681340946767361, + "punct": null + }, + "opus100": { + "u": 0.9404696886947024, + "t": 0.9428263214670981, + "punct": null + }, + "ud": { + "u": 0.9858870967741936, + "t": 0.9832911392405064, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.539780916690689, + "t": 0.6649417852522639, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9344698987746404, + "t": 0.9337589784517158, + "punct": null + }, + "ud": { + "u": 0.9827586206896551, + "t": 0.982779827798278, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5515275336152421, + "t": 0.5509904969032197, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.5278654048370137, + "t": 0.6020587496861662, + "punct": null + }, + "ud": { + "u": 0.9927310488058151, + "t": 0.9927007299270073, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5225664053580943, + "t": 0.5696532593619972, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.8662453923117429, + "t": 0.8648648648648649, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6080598537663663, + "t": 0.6525855790240349, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9434599156118143, + "t": 0.946230598669623, + "punct": null + }, + "ud": { + "u": 0.9944674965421854, + "t": 0.9958333333333333, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3436447646644217, + "t": 0.48415517320909635, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.9051970302684181, + "t": 0.904581266413773, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.8929219600725952, + "t": 0.8880733944954128, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.5384072185170655, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8928571428571429, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.9021586767591814, + "t": 0.8974429474841904, + "punct": null + }, + "opus100": { + "u": 0.7738246505717916, + "t": 0.7323362558019599, + "punct": null + }, + "ud": { + "u": 0.9866666666666668, + "t": 0.9866666666666668, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.0933080008444163, + "t": 0.3406274343176829, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.9406606255480853, + "t": 0.9417332150251405, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9986168741355463, + "t": 0.9986168741355463, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.28512110726643597, + "t": 0.32225762403277197, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.8005578800557881, + "t": 0.8384491114701129, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.38210155857214684, + "t": 0.43480861244019137, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.31542857142857145, + "t": 0.4438523030072326, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.32324386065105654, + "t": 0.4421935033181977, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.8006182380216382, + "t": 0.8654173764906303, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.39397321428571425, + "t": 0.42433234421364985, + "punct": null + }, + "short-sequences": { + "u": 0.8834864989014427, + "t": 0.8887067888706209, + "punct": null, + "acc_u": 0.5571725571725572, + "acc_t": 0.5738045738045738, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6119621978884596, + "t": 0.6243980648393097, + "punct": null, + "acc_u": 0.06860706860706861, + "acc_t": 0.09147609147609148, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-sm-3l_no_pretraining.json b/wtpsplit/evaluation/evaluation_results/main/sat-sm-3l_no_pretraining.json new file mode 100644 index 00000000..96240c32 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-sm-3l_no_pretraining.json @@ -0,0 +1,1645 @@ +{ + "af": { + "opus100": { + "u": 0.8315201411349603, + "t": 0.8425089016707752, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5200553250345782, + "t": 0.525730180806676, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.6403026134800549, + "t": 0.7165717385408191, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.414027149321267, + "t": 0.45537340619307837, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.8125, + "t": 0.9007282483710233, + "punct": null + }, + "opus100": { + "u": 0.5862972669412205, + "t": 0.6789709172259507, + "punct": null + }, + "ud": { + "u": 0.8324066719618745, + "t": 0.8364197530864198, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.22547508988186957, + "t": 0.44341146346267485, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.7725782414307004, + "t": 0.8186418109187751, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.628636723213501, + "t": 0.6500259240056292, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.842827318818968, + "t": 0.8585227272727273, + "punct": null + }, + "ud": { + "u": 0.8915531335149863, + "t": 0.8915531335149863, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4788039364118092, + "t": 0.5054277029960921, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9612150800108489, + "t": 0.9607152533188837, + "punct": null + }, + "ud": { + "u": 0.9860279441117764, + "t": 0.9875435974090684, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5485037816507728, + "t": 0.5600693810480191, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.8691771269177127, + "t": 0.8653217011995638, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2108124433705829, + "t": 0.3226435008524803, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.9276154056268779, + "t": 0.9285330467490598, + "punct": null + }, + "ud": { + "u": 0.9969897652016857, + "t": 0.9969897652016857, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4049132328786688, + "t": 0.4921675926312712, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1176470588235294, + "t": 0.33333333333333337, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9769378603459321, + "t": 0.979631425800194, + "punct": null + }, + "opus100": { + "u": 0.9345692475463468, + "t": 0.9342428376534788, + "punct": null + }, + "ud": { + "u": 0.934251021207543, + "t": 0.9341143654114366, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5011806018042018, + "t": 0.5270251557812139, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.7179846046186144, + "t": 0.7819905213270142, + "punct": null + }, + "ud": { + "u": 0.994733762434172, + "t": 0.994739918176505, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9403107113654948, + "t": 0.9407930472569256, + "punct": null + }, + "ud": { + "u": 0.9851337958374629, + "t": 0.9840954274353877, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5522461538461538, + "t": 0.5815809880034667, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9802462066991126, + "t": 0.9811536264991433, + "punct": null + }, + "opus100": { + "u": 0.8464004663363451, + "t": 0.8518312985571588, + "punct": null + }, + "ud": { + "u": 0.9685314685314685, + "t": 0.9704347826086958, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5791698922169952, + "t": 0.5789858096828047, + "punct": null + }, + "legal-all-laws": { + "u": 0.8139834192762286, + "t": 0.8274135642921513, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5169921101221657, + "t": 0.512544003024965, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7541222465700049, + "t": 0.7228390056326148, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.44759173081961956, + "t": 0.47168915539072803, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.957400327689787, + "t": 0.9582992641046607, + "punct": null + }, + "ud": { + "u": 0.9789343246592317, + "t": 0.9789343246592317, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4751667902149741, + "t": 0.4996296982040363, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9795447997695189, + "t": 0.9819578291428158, + "punct": null + }, + "opus100": { + "u": 0.9431567328918322, + "t": 0.9433351322180249, + "punct": null + }, + "ud": { + "u": 0.9612403100775194, + "t": 0.9612403100775194, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5098714416896235, + "t": 0.5383172439035548, + "punct": null + }, + "legal-all-judgements": { + "u": 0.8893400794501314, + "t": 0.8975976542150244, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.44649975129320985, + "t": 0.5093771059706114, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9527967257844475, + "t": 0.9527967257844475, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5096249585131098, + "t": 0.5235944123983598, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.991250455705432, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9381557150745444, + "t": 0.937279391800163, + "punct": null + }, + "ud": { + "u": 0.9916398713826367, + "t": 0.9922779922779923, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.45036447978793903, + "t": 0.5181869054280918, + "punct": null + }, + "legal-all-laws": { + "u": 0.862488068731062, + "t": 0.9309057418822237, + "punct": null, + "acc_u": 0.15846994535519127, + "acc_t": 0.3770491803278688, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.41480979499711224, + "t": 0.6140178397139959, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.740503873748186, + "t": 0.8062003385153822, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2471799584582632, + "t": 0.370381735688654, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.9858686616791354, + "t": 0.9840220385674932, + "punct": null + }, + "opus100": { + "u": 0.9236263736263736, + "t": 0.9251148959178155, + "punct": null + }, + "ud": { + "u": 0.9674220963172804, + "t": 0.9696649029982363, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5239818409105862, + "t": 0.5589629486311309, + "punct": null + }, + "short-sequences": { + "u": 0.9065632853050689, + "t": 0.9017386020653572, + "punct": null, + "acc_u": 0.5172413793103449, + "acc_t": 0.5073891625615764, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6176747525429722, + "t": 0.6321517012522395, + "punct": null, + "acc_u": 0.04433497536945813, + "acc_t": 0.06896551724137931, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.8796888024451236, + "t": 0.8878970858493043, + "punct": null + }, + "ud": { + "u": 0.9990732159406858, + "t": 0.9990732159406858, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.35877243775332945, + "t": 0.42951456310679614, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.5756791720569211, + "t": 0.6395233366434956, + "punct": null + }, + "ud": { + "u": 0.9984744469870328, + "t": 0.9996181748759068, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.581415735261889, + "t": 0.582417025589055, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9789029535864978, + "t": 0.9793025233909838, + "punct": null + }, + "opus100": { + "u": 0.9510603588907015, + "t": 0.9493636609802328, + "punct": null + }, + "ud": { + "u": 0.9699819168173599, + "t": 0.9696750902527076, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5178854067742956, + "t": 0.5503162737205289, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9748470428280082, + "t": 0.9780182617517754, + "punct": null + }, + "opus100": { + "u": 0.911576011157601, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9867021276595744, + "t": 0.9867021276595744, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.48973921828629163, + "t": 0.5503676470588235, + "punct": null + }, + "legal-all-laws": { + "u": 0.8824382707868001, + "t": 0.9310543269585833, + "punct": null, + "acc_u": 0.6470588235294118, + "acc_t": 0.710239651416122, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.43141881741521604, + "t": 0.6689907062386168, + "punct": null, + "acc_u": 0.1568627450980392, + "acc_t": 0.2657952069716776, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8649587311906862, + "t": 0.8621494577650861, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.33923194257625405, + "t": 0.42040133518226913, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.9001225490196078, + "t": 0.9018181818181817, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.7286063569682153, + "t": 0.8328039272307248, + "punct": null + }, + "ud": { + "u": 0.9674306393244873, + "t": 0.9721212121212122, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.44776119402985076, + "t": 0.48837209302325585, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.7115044247787611, + "t": 0.8229524276606179, + "punct": null + }, + "ud": { + "u": 0.8362445414847163, + "t": 0.8329764453961456, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.9288227334235454, + "t": 0.9268292682926831, + "punct": null + }, + "ud": { + "u": 0.9721448467966575, + "t": 0.9681881051175657, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4394450693663292, + "t": 0.48324639731235075, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.6634026927784578, + "t": 0.6862527716186254, + "punct": null + }, + "opus100": { + "u": 0.8238498789346248, + "t": 0.8272189349112425, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.20566577146322446, + "t": 0.272065279140629, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.8954265846483017, + "t": 0.9014830508474576, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2608695652173913, + "t": 0.12500000000000003, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9276780859162589, + "t": 0.929193899782135, + "punct": null + }, + "ud": { + "u": 0.9333333333333333, + "t": 0.9333333333333333, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.33049645390070925, + "t": 0.4091511936339522, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9524876736889286, + "t": 0.9443413729128014, + "punct": null + }, + "opus100": { + "u": 0.6924829157175398, + "t": 0.6878072763028515, + "punct": null + }, + "ud": { + "u": 0.9980171844018506, + "t": 0.9980171844018506, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4506721348826612, + "t": 0.46960434293539394, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.9515685195376995, + "t": 0.9543478260869566, + "punct": null + }, + "ud": { + "u": 0.9950617283950617, + "t": 0.9938195302843017, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3664243035058671, + "t": 0.4596725288053366, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.8831042845594179, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9649952696310312, + "t": 0.9649952696310312, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49130459737129084, + "t": 0.5060096707345153, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.9447513812154695, + "t": 0.9445211150979852, + "punct": null + }, + "ud": { + "u": 0.9844617092119867, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5024704618689582, + "t": 0.5160384395980517, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.9116153064679987, + "t": 0.9160254265640683, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.03418803418803419, + "t": 0.12219959266802444, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9621295279912184, + "t": 0.9634478996181124, + "punct": null + }, + "ud": { + "u": 0.9640257411119317, + "t": 0.966225516146109, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.41086749285033364, + "t": 0.5059610351846467, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.9051906779661016, + "t": 0.9050013231013496, + "punct": null + }, + "ud": { + "u": 0.9976958525345622, + "t": 0.9965477560414269, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4704725619123702, + "t": 0.514924368239149, + "punct": null + }, + "legal-all-laws": { + "u": 0.7848505917439741, + "t": 0.7888799598589654, + "punct": null, + "acc_u": 0.3494318181818182, + "acc_t": 0.46875, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.3259887814170461, + "t": 0.4207837325340675, + "punct": null, + "acc_u": 0.06960227272727272, + "acc_t": 0.06534090909090909, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8517219023007819, + "t": 0.8550152763885431, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2756733768531518, + "t": 0.33093458168561296, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8544857768052516, + "t": 0.8579325594250967, + "punct": null + }, + "opus100": { + "u": 0.5511496167944019, + "t": 0.6215192693250167, + "punct": null + }, + "ud": { + "u": 0.9700722394220846, + "t": 0.9701338825952627, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7197940849904108, + "t": 0.7436158192090394, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9857456140350878, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.9348302300109529, + "t": 0.9334787350054525, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37149712092130516, + "t": 0.38658663695503714, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9955555555555555, + "t": 0.9938990571270105, + "punct": null + }, + "opus100": { + "u": 0.8745884465728824, + "t": 0.8882421420256112, + "punct": null + }, + "ud": { + "u": 0.9952203929899098, + "t": 0.7131147540983606, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5501080650665454, + "t": 0.6119520517980576, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.7375629405840887, + "t": 0.777067153951576, + "punct": null + }, + "opus100": { + "u": 0.8570565125415532, + "t": 0.8572292800967937, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.37415881561238223, + "t": 0.41566265060240964, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.8276797829036635, + "t": 0.8275862068965518, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.15993907083015993, + "t": 0.3339503887449093, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.7314498602918349, + "t": 0.7750993377483444, + "punct": null + }, + "ud": { + "u": 0.9992709599027946, + "t": 0.9990277102576567, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7673515765552504, + "t": 0.7674208144796382, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.847846296870158, + "t": 0.851259987707437, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.07140332272887946, + "t": 0.1950525207093854, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.9259259259259259, + "t": 0.9253438113948919, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4647519582245431, + "t": 0.4539982803095442, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.9759288330716902, + "t": 0.9763157894736842, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.15384615384615383, + "t": 0.3157894736842105, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9626274065685164, + "t": 0.9631728045325779, + "punct": null + }, + "opus100": { + "u": 0.8722157092614302, + "t": 0.870140612076096, + "punct": null + }, + "ud": { + "u": 0.9787234042553191, + "t": 0.9755301794453507, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4458494025415692, + "t": 0.4889152140802166, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9900332225913621, + "t": 0.9894969596462133, + "punct": null + }, + "opus100": { + "u": 0.8590086078955179, + "t": 0.8686252771618626, + "punct": null + }, + "ud": { + "u": 0.9914450867052023, + "t": 0.9907791609036422, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.47751633986928105, + "t": 0.5305427329359566, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9264665381437619, + "t": 0.9231190150478796, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.12396694214876033, + "t": 0.359375, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.953482118849153, + "t": 0.9541531823085222, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5135851213050028, + "t": 0.5228630002674035, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8641641911963274, + "t": 0.8598726114649683, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4103861068959703, + "t": 0.4208198171630787, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.7747489239598279, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7692740890916258, + "t": 0.7690750632555524, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9182209469153516, + "t": 0.924985899605189, + "punct": null + }, + "ud": { + "u": 0.9761904761904762, + "t": 0.925, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.35199355618203787, + "t": 0.35228974719738576, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.9430080622741173, + "t": 0.9410462219761971, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4974763406940063, + "t": 0.5060466359323845, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.7683397683397682, + "t": 0.7911845730027548, + "punct": null + }, + "ud": { + "u": 0.9244249726177438, + "t": 0.9155844155844156, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.24778761061946905, + "t": 0.3474576271186441, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.8753254266705236, + "t": 0.8755414380594859, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.8780187835420394, + "t": 0.8801681054066334, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.8050508161379735, + "t": 0.8080316397931244, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.38045602605863194, + "t": 0.4862518089725037, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9473963868225291, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9523809523809524, + "t": 0.9523809523809524, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6326362588506503, + "t": 0.6328361494853871, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9618196588139724, + "t": 0.9621212121212122, + "punct": null + }, + "ud": { + "u": 0.9897025171624714, + "t": 0.9899914212181871, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.7945205479452054, + "t": 0.7958812840702605, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.26429980276134124, + "t": 0.3602649006622517, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9627933600457929, + "t": 0.9670828603859251, + "punct": null + }, + "opus100": { + "u": 0.9499174463401211, + "t": 0.9485994016861572, + "punct": null + }, + "ud": { + "u": 0.9891331817033105, + "t": 0.988342625443487, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.517200325834952, + "t": 0.562080378250591, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.6105366814377154, + "t": 0.6108577313520671, + "punct": null + }, + "opus100": { + "u": 0.8603205757278377, + "t": 0.8605246321177223, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.40816326530612246, + "t": 0.39592969472710454, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9418416801292406, + "t": 0.945474372955289, + "punct": null + }, + "ud": { + "u": 0.9765662362505978, + "t": 0.9737970462124822, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5189920556107249, + "t": 0.5597038797239867, + "punct": null + }, + "legal-all-laws": { + "u": 0.7471688303553741, + "t": 0.6939363663423003, + "punct": null, + "acc_u": 0.1724137931034483, + "acc_t": 0.06896551724137931, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.5323060880347422, + "t": 0.5785120669202116, + "punct": null, + "acc_u": 0.017241379310344827, + "acc_t": 0.017241379310344827, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8118954820671014, + "t": 0.7856710620459357, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.28755029857918346, + "t": 0.395152554398539, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.971851009382997, + "t": 0.975774647887324, + "punct": null + }, + "opus100": { + "u": 0.9500423370025403, + "t": 0.9505114735969036, + "punct": null + }, + "ud": { + "u": 0.9915433403805497, + "t": 0.9910195456946647, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4077107753142212, + "t": 0.4996813256851497, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.976691301876066, + "t": 0.9749430523917995, + "punct": null + }, + "opus100": { + "u": 0.8353096179183136, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8998748435544431, + "t": 0.8993710691823898, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5055481038897696, + "t": 0.5462728305514288, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8554444744663604, + "t": 0.8554508748317632, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4848484848484848, + "t": 0.4874675885911841, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9518599562363238, + "t": 0.9511135252580121, + "punct": null + }, + "ud": { + "u": 0.9469122426868904, + "t": 0.9498111171073934, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.523860247123988, + "t": 0.531081020690888, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9451980466630494, + "t": 0.9474812433011789, + "punct": null + }, + "ud": { + "u": 0.9917427205562799, + "t": 0.9917427205562799, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5267379679144385, + "t": 0.5664255425293091, + "punct": null + }, + "short-sequences": { + "u": 0.7928966134061443, + "t": 0.7953921251850137, + "punct": null, + "acc_u": 0.33724340175953077, + "acc_t": 0.3376099706744868, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6759001364389928, + "t": 0.6767451919211451, + "punct": null, + "acc_u": 0.1499266862170088, + "acc_t": 0.16532258064516128, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.954334153677878, + "t": 0.9547325102880659, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.48340145548798724, + "t": 0.4825728237076949, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9607415485278081, + "t": 0.9602396514161221, + "punct": null + }, + "ud": { + "u": 0.9870129870129869, + "t": 0.9881593110871905, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4839232303090728, + "t": 0.5170983993936421, + "punct": null + }, + "short-sequences": { + "u": 0.9202854437229439, + "t": 0.9175779371091872, + "punct": null, + "acc_u": 0.7083333333333334, + "acc_t": 0.7135416666666666, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6411334325396826, + "t": 0.6455943362193363, + "punct": null, + "acc_u": 0.109375, + "acc_t": 0.11458333333333333, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9516829533116177, + "t": 0.9500944159697869, + "punct": null + }, + "ud": { + "u": 0.9557428872497366, + "t": 0.9578059071729957, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5662672367074125, + "t": 0.5789366053169734, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9793641940881205, + "t": 0.9799107142857142, + "punct": null + }, + "opus100": { + "u": 0.6546305583416917, + "t": 0.6657894736842106, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 0.9953488372093023, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3918181818181818, + "t": 0.42495876855415066, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.8581560283687942, + "t": 0.8612078977932636, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4777584296343201, + "t": 0.48205477121959517, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.8902093944538766, + "t": 0.9128452668275677, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.19318181818181815, + "t": 0.3980582524271845, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.7313469588771239, + "t": 0.7311046511627908, + "punct": null + }, + "ud": { + "u": 0.6178142766898295, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5591560670300827, + "t": 0.561092905477295, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.968313843832516, + "t": 0.9679224170085788, + "punct": null + }, + "opus100": { + "u": 0.9450731438034777, + "t": 0.9417528579205227, + "punct": null + }, + "ud": { + "u": 0.9843828715365239, + "t": 0.9843828715365239, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6652100840336135, + "t": 0.6699539071711866, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9327572238725359, + "t": 0.9303931987247609, + "punct": null + }, + "ud": { + "u": 0.9678638941398865, + "t": 0.9678638941398865, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4916733733671764, + "t": 0.5299349982894287, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.5217983651226158, + "t": 0.5467289719626168, + "punct": null + }, + "ud": { + "u": 0.9937629937629938, + "t": 0.9937629937629938, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5085314277380779, + "t": 0.5254018932392315, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.8153374233128835, + "t": 0.8305732484076433, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4572564612326044, + "t": 0.5256715402924176, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9343981745579006, + "t": 0.9364548494983277, + "punct": null + }, + "ud": { + "u": 0.9951489951489952, + "t": 0.9958333333333333, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39310176125244617, + "t": 0.427842737189045, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.8648328896776102, + "t": 0.8822184105202974, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.8756906077348066, + "t": 0.8784277879341865, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.6540052906464084, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8661417322834645, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.8998597475455821, + "t": 0.8937586685159501, + "punct": null + }, + "opus100": { + "u": 0.7383953273901014, + "t": 0.6641562720640151, + "punct": null + }, + "ud": { + "u": 0.9855715871254163, + "t": 0.983388704318937, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2367685663477009, + "t": 0.3500461396493386, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.9321676213445884, + "t": 0.9313113291703837, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9816949152542372, + "t": 0.9937973811164714, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.2968159740960604, + "t": 0.3113291703835861, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.8175244576775841, + "t": 0.8244638602065131, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4278695846359982, + "t": 0.4775510204081632, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.3404255319148936, + "t": 0.4065151001017984, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.3512974051896207, + "t": 0.4200707623029913, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.834983498349835, + "t": 0.8961748633879782, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.44531864673485444, + "t": 0.4474097331240188, + "punct": null + }, + "short-sequences": { + "u": 0.9279317926398358, + "t": 0.9397332542612632, + "punct": null, + "acc_u": 0.6902286902286903, + "acc_t": 0.7297297297297297, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6435097134532228, + "t": 0.6400656408646939, + "punct": null, + "acc_u": 0.13721413721413722, + "acc_t": 0.11642411642411643, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/sat-sm-6l.json b/wtpsplit/evaluation/evaluation_results/main/sat-sm-6l.json new file mode 100644 index 00000000..97990438 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/sat-sm-6l.json @@ -0,0 +1,1645 @@ +{ + "af": { + "opus100": { + "u": 0.8877833056937534, + "t": 0.8867132867132866, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6978021978021978, + "t": 0.6949152542372882, + "punct": null + } + }, + "am": { + "opus100": { + "u": 0.8263988522238164, + "t": 0.8234265734265734, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.39080459770114945, + "t": 0.5511684125705076, + "punct": null + } + }, + "ar": { + "ersatz": { + "u": 0.9143290371493555, + "t": 0.9149736644093304, + "punct": null + }, + "opus100": { + "u": 0.7340631036703155, + "t": 0.7829810008027829, + "punct": null + }, + "ud": { + "u": 0.8816388467374812, + "t": 0.8774094063222823, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5196594527848183, + "t": 0.597467121285923, + "punct": null + } + }, + "az": { + "opus100": { + "u": 0.8890052356020942, + "t": 0.8719529279910339, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6121060530265133, + "t": 0.7059461973796418, + "punct": null + } + }, + "be": { + "opus100": { + "u": 0.8936289643558799, + "t": 0.886209938253455, + "punct": null + }, + "ud": { + "u": 0.951838425686173, + "t": 0.9501312335958004, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6877079107505071, + "t": 0.6871255060728745, + "punct": null + } + }, + "bg": { + "opus100": { + "u": 0.9680043383947939, + "t": 0.9680043383947939, + "punct": null + }, + "ud": { + "u": 0.9975087194818136, + "t": 0.99800796812749, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7078933661631707, + "t": 0.7198441585072025, + "punct": null + } + }, + "bn": { + "opus100": { + "u": 0.901802528921173, + "t": 0.9106359649122807, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.13470361534226463, + "t": 0.3550839669145292, + "punct": null + } + }, + "ca": { + "opus100": { + "u": 0.9418386491557222, + "t": 0.9491525423728814, + "punct": null + }, + "ud": { + "u": 0.9961019490254873, + "t": 0.9984962406015038, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6830671845777586, + "t": 0.6835223995385503, + "punct": null + } + }, + "ceb": { + "ud": { + "u": 0.9910979228486648, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3823529411764706, + "t": 0.5043478260869565, + "punct": null + } + }, + "cs": { + "ersatz": { + "u": 0.9891095451633569, + "t": 0.990372272143774, + "punct": null + }, + "opus100": { + "u": 0.950988356349851, + "t": 0.9525897506166072, + "punct": null + }, + "ud": { + "u": 0.9678739286701687, + "t": 0.9647389107243123, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7010299797682545, + "t": 0.7076771653543307, + "punct": null + } + }, + "cy": { + "opus100": { + "u": 0.8350253807106599, + "t": 0.837378640776699, + "punct": null + }, + "ud": { + "u": 0.9964871194379391, + "t": 0.9976608187134502, + "punct": null + } + }, + "da": { + "opus100": { + "u": 0.9522517634291915, + "t": 0.9525616698292221, + "punct": null + }, + "ud": { + "u": 0.9863013698630135, + "t": 0.9872673849167483, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7061745509154971, + "t": 0.7193532086912582, + "punct": null + } + }, + "de": { + "ersatz": { + "u": 0.9787946428571428, + "t": 0.9914869466515324, + "punct": null + }, + "opus100": { + "u": 0.8952693464588459, + "t": 0.8949671772428884, + "punct": null + }, + "ud": { + "u": 0.9879931389365352, + "t": 0.9856404365307294, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7503059975520197, + "t": 0.7514743921365754, + "punct": null + }, + "legal-all-laws": { + "u": 0.905461038209784, + "t": 0.9007267745172527, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.7500115469003314, + "t": 0.752214024247702, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.7887594812505152, + "t": 0.7793267415315052, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6552244299078092, + "t": 0.6505575232939121, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "el": { + "opus100": { + "u": 0.9617782596909732, + "t": 0.9617782596909732, + "punct": null + }, + "ud": { + "u": 0.9767441860465117, + "t": 0.9803921568627451, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6765634870499053, + "t": 0.6744380502680635, + "punct": null + } + }, + "en": { + "ersatz": { + "u": 0.9821059385470877, + "t": 0.9884309472161967, + "punct": null + }, + "opus100": { + "u": 0.9535135135135134, + "t": 0.9548037889039243, + "punct": null + }, + "ud": { + "u": 0.9704383282364935, + "t": 0.9696345856922286, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.686975384325191, + "t": 0.6914394166416942, + "punct": null + }, + "legal-all-judgements": { + "u": 0.9300126976600114, + "t": 0.9265125610129292, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6853543307864434, + "t": 0.6924795113239921, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "eo": { + "opus100": { + "u": 0.9614859328052444, + "t": 0.9631057268722467, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5652477320307049, + "t": 0.6202723146747351, + "punct": null + } + }, + "es": { + "ersatz": { + "u": 0.9958295557570263, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9542129504199404, + "t": 0.9550191991223258, + "punct": null + }, + "ud": { + "u": 0.9910371318822023, + "t": 0.994528484068233, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6862140940264387, + "t": 0.688030451108482, + "punct": null + }, + "legal-all-laws": { + "u": 0.9210881794793483, + "t": 0.9280691351301182, + "punct": null, + "acc_u": 0.34972677595628415, + "acc_t": 0.3989071038251366, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.795814126383459, + "t": 0.7958034942266843, + "punct": null, + "acc_u": 0.12021857923497267, + "acc_t": 0.08196721311475409, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8050482922808525, + "t": 0.824717354254538, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.02564102564102564, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5623916333056761, + "t": 0.6021988043674555, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "et": { + "ersatz": { + "u": 0.99312620291449, + "t": 0.993662165885919, + "punct": null + }, + "opus100": { + "u": 0.9435787211176787, + "t": 0.9527193222191854, + "punct": null + }, + "ud": { + "u": 0.9860966284323949, + "t": 0.9866063663245781, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7479625411288282, + "t": 0.7494062983995871, + "punct": null + }, + "short-sequences": { + "u": 0.9168985344581712, + "t": 0.9125098523034286, + "punct": null, + "acc_u": 0.5467980295566502, + "acc_t": 0.5566502463054187, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7752939150291207, + "t": 0.7797946464700786, + "punct": null, + "acc_u": 0.2019704433497537, + "acc_t": 0.20689655172413793, + "acc_punct": null + } + }, + "eu": { + "opus100": { + "u": 0.9240710823909531, + "t": 0.9237356168049238, + "punct": null + }, + "ud": { + "u": 0.9990737882062365, + "t": 0.9993823347745522, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5965224263979451, + "t": 0.6099359753626712, + "punct": null + } + }, + "fa": { + "opus100": { + "u": 0.7323943661971831, + "t": 0.7416020671834626, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6757981355137754, + "t": 0.6775643645279934, + "punct": null + } + }, + "fi": { + "ersatz": { + "u": 0.9930613377740771, + "t": 0.9916481069042317, + "punct": null + }, + "opus100": { + "u": 0.9618609683527185, + "t": 0.9641888225718936, + "punct": null + }, + "ud": { + "u": 0.9838998211091236, + "t": 0.9838767466857757, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7153753090316134, + "t": 0.7135817677856482, + "punct": null + } + }, + "fr": { + "ersatz": { + "u": 0.9879598662207357, + "t": 0.9872568745808182, + "punct": null + }, + "opus100": { + "u": 0.9339158929546696, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9879518072289156, + "t": 0.9879518072289156, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6905768905430553, + "t": 0.7015178801131978, + "punct": null + }, + "legal-all-laws": { + "u": 0.9595800415511595, + "t": 0.953697652235777, + "punct": null, + "acc_u": 0.7843137254901961, + "acc_t": 0.775599128540305, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.8072824995546156, + "t": 0.840284969692788, + "punct": null, + "acc_u": 0.4466230936819172, + "acc_t": 0.4662309368191721, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8571509670634706, + "t": 0.8610695413765259, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6353465091268855, + "t": 0.6397808584489105, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "fy": { + "opus100": { + "u": 0.9333733493397358, + "t": 0.927483241925655, + "punct": null + } + }, + "ga": { + "opus100": { + "u": 0.8875562218890554, + "t": 0.9062146892655367, + "punct": null + }, + "ud": { + "u": 0.9828431372549019, + "t": 0.9782608695652174, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.49438202247191015, + "t": 0.3561643835616438, + "punct": null + } + }, + "gd": { + "opus100": { + "u": 0.8937655860349127, + "t": 0.9019221291276491, + "punct": null + }, + "ud": { + "u": 0.8478701825557811, + "t": 0.8617021276595744, + "punct": null + } + }, + "gl": { + "opus100": { + "u": 0.9443254817987151, + "t": 0.9477693144722524, + "punct": null + }, + "ud": { + "u": 0.9944444444444445, + "t": 0.9903181189488244, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6731367688169206, + "t": 0.6750575594781274, + "punct": null + } + }, + "gu": { + "ersatz": { + "u": 0.8441717791411042, + "t": 0.839108910891089, + "punct": null + }, + "opus100": { + "u": 0.8688756726139903, + "t": 0.8683901292596944, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.24437534296689226, + "t": 0.3446081871345029, + "punct": null + } + }, + "ha": { + "opus100": { + "u": 0.9264666843642155, + "t": 0.9223619464188081, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2608695652173913, + "t": 0.4242424242424242, + "punct": null + } + }, + "he": { + "opus100": { + "u": 0.9229144667370645, + "t": 0.9336223245732863, + "punct": null + }, + "ud": { + "u": 0.9654178674351584, + "t": 0.9654178674351584, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.627041499330656, + "t": 0.6325248816310755, + "punct": null + } + }, + "hi": { + "ersatz": { + "u": 0.9852129772677113, + "t": 0.9851078017337186, + "punct": null + }, + "opus100": { + "u": 0.7845247245708429, + "t": 0.7883250065737576, + "punct": null + }, + "ud": { + "u": 0.9990089197224975, + "t": 0.9990089197224975, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5620562056205621, + "t": 0.5667412378821775, + "punct": null + } + }, + "hu": { + "opus100": { + "u": 0.963646228974498, + "t": 0.9624183006535947, + "punct": null + }, + "ud": { + "u": 0.9975308641975309, + "t": 0.9938499384993851, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6504916506662012, + "t": 0.66538820868368, + "punct": null + } + }, + "hy": { + "opus100": { + "u": 0.9137340392401121, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9786046511627907, + "t": 0.9803921568627452, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6956340956340957, + "t": 0.696436581111388, + "punct": null + } + }, + "id": { + "opus100": { + "u": 0.9512262331220721, + "t": 0.9520336605890602, + "punct": null + }, + "ud": { + "u": 0.9933259176863181, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5880369630369631, + "t": 0.6295801526717557, + "punct": null + } + }, + "ig": { + "opus100": { + "u": 0.9338210841370136, + "t": 0.9333791208791209, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.056074766355140186, + "t": 0.23232323232323232, + "punct": null + } + }, + "is": { + "opus100": { + "u": 0.9661756683033278, + "t": 0.9670389539634976, + "punct": null + }, + "ud": { + "u": 0.96646277156718, + "t": 0.9688239088368094, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6868402533427164, + "t": 0.6751080914144533, + "punct": null + } + }, + "it": { + "opus100": { + "u": 0.918410041841004, + "t": 0.9206432902715529, + "punct": null + }, + "ud": { + "u": 0.9954022988505747, + "t": 0.9965477560414269, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6718863801893664, + "t": 0.6877759171867864, + "punct": null + }, + "legal-all-laws": { + "u": 0.8086109261511848, + "t": 0.8585928416350683, + "punct": null, + "acc_u": 0.3039772727272727, + "acc_t": 0.6803977272727273, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.6480169871348277, + "t": 0.6581952180494063, + "punct": null, + "acc_u": 0.09517045454545454, + "acc_t": 0.26136363636363635, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8802240749170737, + "t": 0.8781010680035853, + "punct": null, + "acc_u": 0.02040816326530612, + "acc_t": 0.02040816326530612, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.5207672879401569, + "t": 0.5203680976299441, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ja": { + "ersatz": { + "u": 0.8936627282491945, + "t": 0.8934118907337976, + "punct": null + }, + "opus100": { + "u": 0.8502325581395349, + "t": 0.8681380871533674, + "punct": null + }, + "ud": { + "u": 0.9721362229102168, + "t": 0.972193614830072, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9034073896640517, + "t": 0.9039133266236457, + "punct": null + } + }, + "jv": { + "ud": { + "u": 0.9917355371900827, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.9388753056234719, + "t": 0.938897981451173, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6027226318774817, + "t": 0.6233401907611745, + "punct": null + } + }, + "kk": { + "ersatz": { + "u": 0.9988901220865705, + "t": 0.9988901220865705, + "punct": null + }, + "opus100": { + "u": 0.938662225922842, + "t": 0.9402205455600697, + "punct": null + }, + "ud": { + "u": 0.9957671957671959, + "t": 0.9952406134320466, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7388178167896161, + "t": 0.7484353268428372, + "punct": null + } + }, + "km": { + "ersatz": { + "u": 0.912396694214876, + "t": 0.9162278602202011, + "punct": null + }, + "opus100": { + "u": 0.883653286794648, + "t": 0.8841463414634146, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6916890080428955, + "t": 0.7529137529137531, + "punct": null + } + }, + "kn": { + "opus100": { + "u": 0.9043698543381888, + "t": 0.9028938906752412, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.06381039197812215, + "t": 0.35638297872340424, + "punct": null + } + }, + "ko": { + "opus100": { + "u": 0.8267099216004326, + "t": 0.8287635799275738, + "punct": null + }, + "ud": { + "u": 0.999514091350826, + "t": 0.999514091350826, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7666205624711848, + "t": 0.7694603571944351, + "punct": null + } + }, + "ku": { + "opus100": { + "u": 0.9257075471698113, + "t": 0.9240356083086054, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.02875536480686695, + "t": 0.3695643695643696, + "punct": null + } + }, + "ky": { + "opus100": { + "u": 0.9502262443438914, + "t": 0.9540078843626807, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6109324758842444, + "t": 0.6910377358490566, + "punct": null + } + }, + "la": { + "ud": { + "u": 0.9821709491347665, + "t": 0.9828812220173822, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3, + "t": 0.39999999999999997, + "punct": null + } + }, + "lt": { + "ersatz": { + "u": 0.9905186837702175, + "t": 0.9899553571428572, + "punct": null + }, + "opus100": { + "u": 0.9100441501103753, + "t": 0.9104436483879857, + "punct": null + }, + "ud": { + "u": 0.9853181076672104, + "t": 0.9836065573770492, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.685412442642194, + "t": 0.6854937017472572, + "punct": null + } + }, + "lv": { + "ersatz": { + "u": 0.9964177459355194, + "t": 0.9961389961389961, + "punct": null + }, + "opus100": { + "u": 0.9121658483360611, + "t": 0.9159548084871866, + "punct": null + }, + "ud": { + "u": 0.9944725932749885, + "t": 0.9944725932749885, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7084739226838909, + "t": 0.7147461724415793, + "punct": null + } + }, + "mg": { + "opus100": { + "u": 0.9585733882030179, + "t": 0.9604207030168834, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.410958904109589, + "t": 0.5333333333333333, + "punct": null + } + }, + "mk": { + "opus100": { + "u": 0.9592711682743837, + "t": 0.9575101488497969, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6472169335871878, + "t": 0.6553506974929275, + "punct": null + } + }, + "ml": { + "opus100": { + "u": 0.8880187940485513, + "t": 0.8959614870286173, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.31616425350106814, + "t": 0.4199830651989839, + "punct": null + } + }, + "mn": { + "opus100": { + "u": 0.8106931924152937, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7851136160314903, + "t": 0.8022242421001979, + "punct": null + } + }, + "mr": { + "opus100": { + "u": 0.9606694560669456, + "t": 0.9600674915635544, + "punct": null + }, + "ud": { + "u": 0.988235294117647, + "t": 0.9879518072289156, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4584461474920839, + "t": 0.4578399392287412, + "punct": null + } + }, + "ms": { + "opus100": { + "u": 0.9551906484831617, + "t": 0.9568892645815723, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5819968480578475, + "t": 0.6316925734024179, + "punct": null + } + }, + "mt": { + "opus100": { + "u": 0.874143131340828, + "t": 0.8705692803437165, + "punct": null + }, + "ud": { + "u": 0.9613733905579399, + "t": 0.9643243243243242, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.45833333333333326, + "t": 0.48837209302325585, + "punct": null + } + }, + "my": { + "opus100": { + "u": 0.9256756756756757, + "t": 0.9245604083947816, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.9490968801313631, + "t": 0.9500816027913781, + "punct": null + } + }, + "ne": { + "opus100": { + "u": 0.8587503701510215, + "t": 0.8609512269009391, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5591895803183792, + "t": 0.5986811116344796, + "punct": null + } + }, + "nl": { + "opus100": { + "u": 0.9499337748344371, + "t": null, + "punct": null + }, + "ud": { + "u": 0.962962962962963, + "t": 0.9619312906220985, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7523710166919575, + "t": 0.7849836549615101, + "punct": null + } + }, + "no": { + "opus100": { + "u": 0.9627027027027026, + "t": 0.9651416122004357, + "punct": null + }, + "ud": { + "u": 0.9940017137960583, + "t": 0.9954207212364052, + "punct": null + } + }, + "pa": { + "opus100": { + "u": 0.842225392296719, + "t": 0.8431314623338257, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.36186770428015563, + "t": 0.5389527458492976, + "punct": null + } + }, + "pl": { + "ersatz": { + "u": 0.9922394678492239, + "t": 0.991652754590985, + "punct": null + }, + "opus100": { + "u": 0.9613920609026645, + "t": 0.9613920609026645, + "punct": null + }, + "ud": { + "u": 0.995987963891675, + "t": 0.993942453306411, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7223890199442419, + "t": 0.7234131548677194, + "punct": null + } + }, + "ps": { + "ersatz": { + "u": 0.9085222830336199, + "t": 0.9131127939418094, + "punct": null + }, + "opus100": { + "u": 0.8867865026805425, + "t": 0.8846276765739853, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5782918149466193, + "t": 0.5733558178752107, + "punct": null + } + }, + "pt": { + "opus100": { + "u": 0.9514615178331993, + "t": 0.9551752241238793, + "punct": null + }, + "ud": { + "u": 0.9802073515551367, + "t": 0.9861707200762994, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7098794279839239, + "t": 0.7188446778428601, + "punct": null + }, + "legal-all-laws": { + "u": 0.7994027366263479, + "t": 0.6796908975182547, + "punct": null, + "acc_u": 0.15517241379310345, + "acc_t": 0.1206896551724138, + "acc_punct": null + }, + "legal-all-laws-corrupted-asr": { + "u": 0.710319206314002, + "t": 0.6677067704271286, + "punct": null, + "acc_u": 0.08620689655172414, + "acc_t": 0.034482758620689655, + "acc_punct": null + }, + "legal-all-judgements": { + "u": 0.8570408926051666, + "t": 0.8201449533504823, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.6541477373174004, + "t": 0.45731365704504584, + "punct": null, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": null + } + }, + "ro": { + "ersatz": { + "u": 0.9889807162534435, + "t": 0.9925311203319502, + "punct": null + }, + "opus100": { + "u": 0.9600434900788257, + "t": 0.9636963696369637, + "punct": null + }, + "ud": { + "u": 0.9947033898305085, + "t": 0.9957582184517497, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6978869217589949, + "t": 0.6954455445544554, + "punct": null + } + }, + "ru": { + "ersatz": { + "u": 0.9916154276131918, + "t": 0.9938167509836987, + "punct": null + }, + "opus100": { + "u": 0.8550280755487495, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9304878048780488, + "t": 0.9310555216595485, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7228855967893771, + "t": 0.7221921048740821, + "punct": null + } + }, + "si": { + "opus100": { + "u": 0.8786127167630058, + "t": 0.8845327604726101, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4803149606299213, + "t": 0.5193798449612403, + "punct": null + } + }, + "sk": { + "opus100": { + "u": 0.9653289653289653, + "t": 0.9670872188699945, + "punct": null + }, + "ud": { + "u": 0.9852164730728618, + "t": 0.9846804014791336, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7009018270174291, + "t": 0.7126331811263317, + "punct": null + } + }, + "sl": { + "opus100": { + "u": 0.9562650925677489, + "t": 0.9575268817204301, + "punct": null + }, + "ud": { + "u": 0.9926629261976694, + "t": 0.9943649761595146, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7348995013622578, + "t": 0.7351048370354993, + "punct": null + }, + "short-sequences": { + "u": 0.8109213977615737, + "t": 0.8125888367090713, + "punct": null, + "acc_u": 0.39002932551319647, + "acc_t": 0.3885630498533724, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.6591249822188239, + "t": 0.6653522023756628, + "punct": null, + "acc_u": 0.13856304985337242, + "acc_t": 0.1345307917888563, + "acc_punct": null + } + }, + "sq": { + "opus100": { + "u": 0.9638554216867469, + "t": 0.9666390956713536, + "punct": null + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5898899546872242, + "t": 0.6091479123122538, + "punct": null + } + }, + "sr": { + "opus100": { + "u": 0.9647887323943661, + "t": 0.964769647696477, + "punct": null + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6826609616951915, + "t": 0.6828441875529424, + "punct": null + }, + "short-sequences": { + "u": 0.9244745467631498, + "t": 0.933316798941799, + "punct": null, + "acc_u": 0.7135416666666666, + "acc_t": 0.75, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7269482508912657, + "t": 0.7388328974266475, + "punct": null, + "acc_u": 0.234375, + "acc_t": 0.265625, + "acc_punct": null + } + }, + "sv": { + "opus100": { + "u": 0.9597406106457714, + "t": 0.9598915989159892, + "punct": null + }, + "ud": { + "u": 0.9689310163243813, + "t": 0.9609834313201496, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7290315488622624, + "t": 0.7303454914964168, + "punct": null + } + }, + "ta": { + "ersatz": { + "u": 0.9861954721148536, + "t": 0.986180210060807, + "punct": null + }, + "opus100": { + "u": 0.819416353655013, + "t": 0.8193191736979925, + "punct": null + }, + "ud": { + "u": 0.9953917050691244, + "t": 1.0, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5177312009536108, + "t": 0.5410249717219177, + "punct": null + } + }, + "te": { + "opus100": { + "u": 0.8885144622297106, + "t": 0.8924141909431785, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.41325443786982247, + "t": 0.44980569948186533, + "punct": null + } + }, + "tg": { + "opus100": { + "u": 0.9406021155410902, + "t": 0.9208959455628012, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4803921568627451, + "t": 0.6738461538461539, + "punct": null + } + }, + "th": { + "opus100": { + "u": 0.7707434052757794, + "t": 0.7791474062660502, + "punct": null + }, + "ud": { + "u": 0.8297872340425532, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6110218140068886, + "t": 0.641545805030292, + "punct": null + } + }, + "tr": { + "ersatz": { + "u": 0.9775365031823288, + "t": 0.979463459759482, + "punct": null + }, + "opus100": { + "u": 0.9454545454545454, + "t": 0.9513719098071177, + "punct": null + }, + "ud": { + "u": 0.9858870967741936, + "t": 0.9873160832064942, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7396946167074886, + "t": 0.7378966639544344, + "punct": null + } + }, + "uk": { + "opus100": { + "u": 0.9434467971053336, + "t": 0.9436695278969958, + "punct": null + }, + "ud": { + "u": 0.984009840098401, + "t": 0.9816176470588235, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.7097339657661375, + "t": 0.7095492103336472, + "punct": null + } + }, + "ur": { + "opus100": { + "u": 0.6578014184397164, + "t": 0.6628053387056158, + "punct": null + }, + "ud": { + "u": 0.991701244813278, + "t": 0.9947970863683663, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6324615192091102, + "t": 0.6314457831325302, + "punct": null + } + }, + "uz": { + "opus100": { + "u": 0.8960554371002133, + "t": 0.8951546673966602, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4674484431864133, + "t": 0.6637783904424314, + "punct": null + } + }, + "vi": { + "opus100": { + "u": 0.9530201342281879, + "t": 0.9519310919699917, + "punct": null + }, + "ud": { + "u": 0.9979181124219292, + "t": 0.9993050729673384, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.6340396730358724, + "t": 0.6362547414653623, + "punct": null + } + }, + "xh": { + "opus100": { + "u": 0.9225492997999428, + "t": 0.9198016914552348, + "punct": null + } + }, + "yi": { + "opus100": { + "u": 0.8978469995419147, + "t": 0.892093023255814, + "punct": null + } + }, + "yo": { + "opus100": { + "u": 0.5943090044531663, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8848080133555927, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.910002786291446, + "t": 0.9141289437585733, + "punct": null + }, + "opus100": { + "u": 0.846894138232721, + "t": 0.835236541598695, + "punct": null + }, + "ud": { + "u": 0.9866666666666668, + "t": 0.9866666666666668, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4320613409415121, + "t": 0.5243529979103038, + "punct": null + } + }, + "zu": { + "opus100": { + "u": 0.9547471162377994, + "t": 0.9540402523280265, + "punct": null + } + }, + "tr-de": { + "code-switching": { + "u": 0.9986168741355463, + "t": 0.9986168741355463, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.37134283570892723, + "t": 0.37767220902612825, + "punct": null + } + }, + "es-en": { + "code-switching": { + "u": 0.7098462544978738, + "t": 0.7953544253103724, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.51143583227446, + "t": 0.5240901213171578, + "punct": null + } + }, + "vi-en": { + "code-switching": { + "u": 0.4238961038961039, + "t": 0.5078274150439098, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.4202745512143612, + "t": 0.5110941086457536, + "punct": null + } + }, + "en-de": { + "code-switching": { + "u": 0.8333333333333333, + "t": 0.915032679738562, + "punct": null + }, + "code-switching-corrupted-asr": { + "u": 0.5101663585951941, + "t": 0.56353591160221, + "punct": null + }, + "short-sequences": { + "u": 0.8969599472916507, + "t": 0.9079264317146916, + "punct": null, + "acc_u": 0.5821205821205822, + "acc_t": 0.6278586278586279, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7197057519790158, + "t": 0.7205518665152947, + "punct": null, + "acc_u": 0.1683991683991684, + "acc_t": 0.1704781704781705, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/wtp-12l.json b/wtpsplit/evaluation/evaluation_results/main/wtp-12l.json new file mode 100644 index 00000000..df288e16 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/wtp-12l.json @@ -0,0 +1,1709 @@ +{ + "af": { + "opus100": { + "u": 0.7754871505224512, + "t": 0.793764375159724, + "punct": 0.8900759066629181 + }, + "ud": { + "u": 0.9922077922077922, + "t": 0.9947780678851176, + "punct": 0.9986928104575163 + }, + "ted2020-corrupted-asr": { + "u": 0.4992248062015504, + "t": 0.6056338028169015, + "punct": 0.7358916478555304 + } + }, + "am": { + "opus100": { + "u": 0.6124205013093903, + "t": 0.6812003077712233, + "punct": 0.7278600269179005 + }, + "ted2020-corrupted-asr": { + "u": 0.2941176470588235, + "t": 0.5517786561264821, + "punct": 0.6277372262773722 + } + }, + "ar": { + "ersatz": { + "u": 0.8943738656987296, + "t": 0.8867924528301886, + "punct": 0.9147982062780269 + }, + "opus100": { + "u": 0.6926720534967957, + "t": 0.692800409941071, + "punct": 0.8026455026455027 + }, + "ud": { + "u": 0.8506401137980086, + "t": 0.8638132295719844, + "punct": 0.8939157566302652 + }, + "ted2020-corrupted-asr": { + "u": 0.3101612903225806, + "t": 0.5322846318563662, + "punct": 0.6632589192572501 + } + }, + "az": { + "opus100": { + "u": 0.7765350376626342, + "t": 0.8055779029230357, + "punct": 0.8465194296896841 + }, + "ted2020-corrupted-asr": { + "u": 0.24786324786324787, + "t": 0.6419213973799126, + "punct": 0.7698058015763387 + } + }, + "be": { + "opus100": { + "u": 0.7586754966887418, + "t": 0.759323852964851, + "punct": 0.898186889818689 + }, + "ud": { + "u": 0.908908908908909, + "t": 0.9068261086198305, + "punct": 0.924396782841823 + }, + "ted2020-corrupted-asr": { + "u": 0.5331903485254692, + "t": 0.618576075171666, + "punct": 0.7373510619927474 + } + }, + "bg": { + "opus100": { + "u": 0.9402028830752803, + "t": 0.9226763863577193, + "punct": 0.9618609683527184 + }, + "ud": { + "u": 0.9845847836897066, + "t": 0.9841427155599604, + "punct": 0.994546355974219 + }, + "ted2020-corrupted-asr": { + "u": 0.19982985159277816, + "t": 0.5858381375698631, + "punct": 0.7449885815782796 + } + }, + "bn": { + "opus100": { + "u": 0.8055688910225637, + "t": 0.8415922014622259, + "punct": 0.883289124668435 + }, + "ud": { + "u": 0.99009900990099, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.12496180873816072, + "t": 0.22407469156385462, + "punct": 0.32699553141154825 + } + }, + "ca": { + "opus100": { + "u": 0.8895198760970573, + "t": 0.894929430214323, + "punct": 0.9479482236298541 + }, + "ud": { + "u": 0.9858476362541403, + "t": 0.9867629362214201, + "punct": 0.9975859987929995 + }, + "ted2020-corrupted-asr": { + "u": 0.19503082383710071, + "t": 0.5891626464507236, + "punct": 0.7180139390547896 + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.48695652173913045, + "t": 0.15094339622641506, + "punct": 0.5 + } + }, + "cs": { + "ersatz": { + "u": 0.9325729620932572, + "t": 0.9501141180306488, + "punct": 0.9925925925925926 + }, + "opus100": { + "u": 0.8972250770811921, + "t": 0.9027921406411581, + "punct": 0.9505766062602965 + }, + "ud": { + "u": 0.9230769230769231, + "t": 0.9235248012540588, + "punct": 0.9695908991467951 + }, + "ted2020-corrupted-asr": { + "u": 0.25611587035238015, + "t": 0.5874342308882698, + "punct": 0.75146529562982 + } + }, + "cy": { + "opus100": { + "u": 0.7254650416933932, + "t": 0.771004942339374, + "punct": 0.8310334253296535 + }, + "ud": { + "u": 0.9941588785046729, + "t": 0.9941520467836257, + "punct": 0.9970845481049562 + } + }, + "da": { + "opus100": { + "u": 0.909560723514212, + "t": 0.9140625, + "punct": 0.9508108108108108 + }, + "ud": { + "u": 0.9521951219512196, + "t": 0.953216374269006, + "punct": 0.9900990099009901 + }, + "ted2020-corrupted-asr": { + "u": 0.18227554179566563, + "t": 0.6243751704080704, + "punct": 0.740348221044663 + } + }, + "de": { + "ersatz": { + "u": 0.9651685393258427, + "t": 0.9646792879344447, + "punct": 0.9937570942111237 + }, + "opus100": { + "u": 0.8052516411378556, + "t": 0.8594736842105264, + "punct": 0.9102237326536391 + }, + "ud": { + "u": 0.9585933068633012, + "t": 0.9643268124280783, + "punct": 0.9791907514450867 + }, + "ted2020-corrupted-asr": { + "u": 0.1893666204345816, + "t": 0.6756439731619199, + "punct": 0.7880784147054136 + }, + "legal-all-laws": { + "u": 0.8575490384159327, + "t": 0.8588124418014842, + "punct": 0.9372570955627224, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.1897354801420986, + "t": 0.6202456396903978, + "punct": 0.8413896542355319, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements": { + "u": 0.7965686323297744, + "t": 0.8043892222003746, + "punct": 0.8730180437095568, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2499664962460386, + "t": 0.5235815133928532, + "punct": 0.730215019283144, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "el": { + "opus100": { + "u": 0.9171443460135487, + "t": 0.9288924134284958, + "punct": 0.9604336043360433 + }, + "ud": { + "u": 0.9767441860465117, + "t": 0.9779951100244498, + "punct": 0.9840881272949816 + }, + "ted2020-corrupted-asr": { + "u": 0.3095375010268627, + "t": 0.5790063503922301, + "punct": 0.7401204942305728 + } + }, + "en": { + "ersatz": { + "u": 0.9736467236467237, + "t": 0.9736354567478979, + "punct": 0.9910352805089647 + }, + "opus100": { + "u": 0.9144254278728607, + "t": 0.8993498049414825, + "punct": 0.9438997821350762 + }, + "ud": { + "u": 0.9409953822473064, + "t": 0.9462474645030426, + "punct": 0.9687660010240654 + }, + "ted2020-corrupted-asr": { + "u": 0.12897196261682242, + "t": 0.5589202284132203, + "punct": 0.7386352079731516 + }, + "legal-all-judgements": { + "u": 0.8880925335666106, + "t": 0.8872977172996761, + "punct": 0.9628298174322474, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.280711657548791, + "t": 0.545419967138804, + "punct": 0.7350081092483443, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "eo": { + "opus100": { + "u": 0.9182015167930662, + "t": 0.916420317119054, + "punct": 0.9526934645884604 + }, + "ted2020-corrupted-asr": { + "u": 0.2904455250361414, + "t": 0.5918587410702251, + "punct": 0.7198162171360504 + } + }, + "es": { + "ersatz": { + "u": 0.9880130766436616, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9130321232697832, + "t": 0.9170603674540682, + "punct": 0.954954954954955 + }, + "ud": { + "u": 0.9654078070453824, + "t": 0.9638862256311922, + "punct": 0.9964527571751048 + }, + "ted2020-corrupted-asr": { + "u": 0.17541297800492833, + "t": 0.5337178725930953, + "punct": 0.727941949731833 + }, + "legal-all-laws": { + "u": 0.8460149002943409, + "t": 0.8710750348145365, + "punct": 0.9456307388006592, + "acc_u": 0.22404371584699453, + "acc_t": 0.25136612021857924, + "acc_punct": 0.5792349726775956 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.41126411782010225, + "t": 0.7151220869472573, + "punct": 0.8310363633051706, + "acc_u": 0.0, + "acc_t": 0.02185792349726776, + "acc_punct": 0.14207650273224043 + }, + "legal-all-judgements": { + "u": 0.7557108185971222, + "t": 0.7629746839004452, + "punct": 0.8873202815109786, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.07692307692307693 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.3804307868861622, + "t": 0.5182826581369442, + "punct": 0.6720649733910048, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "et": { + "ersatz": { + "u": 0.959070796460177, + "t": 0.9536386625456589, + "punct": 0.9866962305986695 + }, + "opus100": { + "u": 0.8495488905145085, + "t": 0.8895228215767634, + "punct": 0.9544338335607094 + }, + "ud": { + "u": 0.944876447209262, + "t": 0.9462660944206007, + "punct": 0.981868416508375 + }, + "ted2020-corrupted-asr": { + "u": 0.40175089534421005, + "t": 0.6522112085398399, + "punct": 0.775034882472899 + }, + "short-sequences": { + "u": 0.8835393591210318, + "t": 0.8862858978644591, + "punct": 0.8984383441573902, + "acc_u": 0.43349753694581283, + "acc_t": 0.43842364532019706, + "acc_punct": 0.458128078817734 + }, + "short-sequences-corrupted-asr": { + "u": 0.616343535833673, + "t": 0.6602964233616042, + "punct": 0.7486856297307082, + "acc_u": 0.06403940886699508, + "acc_t": 0.04926108374384237, + "acc_punct": 0.14285714285714285 + } + }, + "eu": { + "opus100": { + "u": 0.856361829025845, + "t": 0.8693210821847883, + "punct": 0.9261672095548317 + }, + "ud": { + "u": 0.9635701275045537, + "t": 0.9644268774703558, + "punct": 0.9984553599011429 + }, + "ted2020-corrupted-asr": { + "u": 0.294201656669523, + "t": 0.5413319318267138, + "punct": 0.6901227151806402 + } + }, + "fa": { + "opus100": { + "u": 0.6442115768463074, + "t": 0.6422802850356294, + "punct": 0.7682926829268292 + }, + "ud": { + "u": 0.9732142857142857, + "t": 0.9804804804804805, + "punct": 0.9996181748759068 + }, + "ted2020-corrupted-asr": { + "u": 0.261790017211704, + "t": 0.5813503162786695, + "punct": 0.7314772086345691 + } + }, + "fi": { + "ersatz": { + "u": 0.9753777280358142, + "t": 0.9777654252362423, + "punct": 0.9950083194675542 + }, + "opus100": { + "u": 0.9219895287958114, + "t": 0.9305296779345221, + "punct": 0.9606299212598425 + }, + "ud": { + "u": 0.9340277777777778, + "t": 0.9298245614035088, + "punct": 0.9817400644468314 + }, + "ted2020-corrupted-asr": { + "u": 0.42498880429914915, + "t": 0.6053367668605425, + "punct": 0.7316331186939108 + } + }, + "fr": { + "ersatz": { + "u": 0.9758198078834052, + "t": 0.9729368526561978, + "punct": 0.9882589734988259 + }, + "opus100": { + "u": 0.8841354723707664, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9699346405228758, + "t": 0.9721854304635762, + "punct": 0.9892473118279571 + }, + "ted2020-corrupted-asr": { + "u": 0.2165368271954674, + "t": 0.5955616721142267, + "punct": 0.7438158961881589 + }, + "legal-all-laws": { + "u": 0.6296950115135906, + "t": 0.8073537069744309, + "punct": 0.9838284806499054, + "acc_u": 0.3442265795206972, + "acc_t": 0.514161220043573, + "acc_punct": 0.8714596949891068 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.19537361902853068, + "t": 0.646811681834779, + "punct": 0.8342851450461825, + "acc_u": 0.013071895424836602, + "acc_t": 0.19172113289760348, + "acc_punct": 0.4335511982570806 + }, + "legal-all-judgements": { + "u": 0.8777661062748702, + "t": 0.8698894930942435, + "punct": 0.9680330548812637, + "acc_u": 0.031746031746031744, + "acc_t": 0.015873015873015872, + "acc_punct": 0.5079365079365079 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.3223840447259081, + "t": 0.4886763770884652, + "punct": 0.64987316973007, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.015873015873015872 + } + }, + "fy": { + "opus100": { + "u": 0.6217581677332434, + "t": 0.6614420062695925, + "punct": 0.8897520167314014 + } + }, + "ga": { + "opus100": { + "u": 0.8126052441664663, + "t": 0.8273132112815439, + "punct": 0.9032782443782172 + }, + "ud": { + "u": 0.8496319663512093, + "t": 0.893854748603352, + "punct": 0.9769696969696969 + }, + "ted2020-corrupted-asr": { + "u": 0.19230769230769232, + "t": 0.5242718446601943, + "punct": 0.5981308411214953 + } + }, + "gd": { + "opus100": { + "u": 0.8366846493379108, + "t": 0.8550116550116549, + "punct": 0.9401534526854219 + }, + "ud": { + "u": 0.7120291616038883, + "t": 0.7249310027598895, + "punct": 0.8486646884272996 + } + }, + "gl": { + "opus100": { + "u": 0.8918709677419355, + "t": 0.9008394543546695, + "punct": 0.940857297883885 + }, + "ud": { + "u": 0.9902642559109874, + "t": 0.9902370990237099, + "punct": 0.9834254143646408 + }, + "ted2020-corrupted-asr": { + "u": 0.13868971613790393, + "t": 0.5990193046781818, + "punct": 0.7391576967290208 + } + }, + "gu": { + "ersatz": { + "u": 0.9216639654240951, + "t": 0.8982102908277404, + "punct": 0.9830508474576272 + }, + "opus100": { + "u": 0.7228564488705368, + "t": 0.7404326123128119, + "punct": 0.7988555078683834 + }, + "ted2020-corrupted-asr": { + "u": 0.33096795653620137, + "t": 0.3356315968675519, + "punct": 0.4816537467700258 + } + }, + "ha": { + "opus100": { + "u": 0.8772990677752582, + "t": 0.8984812150279776, + "punct": 0.9099836333878887 + }, + "ted2020-corrupted-asr": { + "u": 0.28571428571428575, + "t": 0.19148936170212766, + "punct": 0.4705882352941176 + } + }, + "he": { + "opus100": { + "u": 0.9044117647058824, + "t": 0.8825910931174089, + "punct": 0.9372592184920199 + }, + "ud": { + "u": 0.9693593314763231, + "t": 0.9707927677329623, + "punct": 0.9872701555869873 + }, + "ted2020-corrupted-asr": { + "u": 0.1968109339407745, + "t": 0.5645850416468862, + "punct": 0.7008758473947251 + } + }, + "hi": { + "ersatz": { + "u": 0.9558983271779273, + "t": 0.9492964038418584, + "punct": 0.9772828507795099 + }, + "opus100": { + "u": 0.6888616891064873, + "t": 0.682264857276556, + "punct": 0.7801792303637323 + }, + "ud": { + "u": 0.9858599145018087, + "t": 0.9872423945044161, + "punct": 0.99934036939314 + }, + "ted2020-corrupted-asr": { + "u": 0.016546685290641454, + "t": 0.3749499265589531, + "punct": 0.5460989556259156 + } + }, + "hu": { + "opus100": { + "u": 0.9283456269757638, + "t": 0.9311440677966102, + "punct": 0.9635869565217392 + }, + "ud": { + "u": 0.9489414694894148, + "t": 0.9489414694894148, + "punct": 0.9925925925925926 + }, + "ted2020-corrupted-asr": { + "u": 0.28405102302885027, + "t": 0.5757404917819506, + "punct": 0.7138693467336683 + } + }, + "hy": { + "opus100": { + "u": 0.8710004343419719, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9625570776255709, + "t": 0.9624885635864592, + "punct": 0.9851851851851852 + }, + "ted2020-corrupted-asr": { + "u": 0.46139884617877747, + "t": 0.5770561845759452, + "punct": 0.6973055608637493 + } + }, + "id": { + "opus100": { + "u": 0.896607869742198, + "t": 0.8977802137571937, + "punct": 0.9382784389703847 + }, + "ud": { + "u": 0.9867403314917127, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.2123534299695319, + "t": 0.557608470002076, + "punct": 0.6840095708394849 + } + }, + "ig": { + "opus100": { + "u": 0.8303273213092852, + "t": 0.8516377649325627, + "punct": 0.9062395729062396 + }, + "ted2020-corrupted-asr": { + "u": 0.4342105263157895, + "t": 0.4473684210526315, + "punct": 0.42342342342342343 + } + }, + "is": { + "opus100": { + "u": 0.9431726366819284, + "t": 0.9432948132222521, + "punct": 0.9635671560630777 + }, + "ud": { + "u": 0.8925881886642886, + "t": 0.8926766425527698, + "punct": 0.9637062339880444 + }, + "ted2020-corrupted-asr": { + "u": 0.34464751958224543, + "t": 0.5915275994865212, + "punct": 0.7117087569694982 + } + }, + "it": { + "opus100": { + "u": 0.8751864743908503, + "t": 0.9049844236760124, + "punct": 0.9406047516198704 + }, + "ud": { + "u": 0.9569060773480663, + "t": 0.96, + "punct": 0.9965477560414269 + }, + "ted2020-corrupted-asr": { + "u": 0.4177848698048887, + "t": 0.5976937566040336, + "punct": 0.7193139369705898 + }, + "legal-all-laws": { + "u": 0.799906599936899, + "t": 0.7954540525983387, + "punct": 0.9694012846914156, + "acc_u": 0.4161931818181818, + "acc_t": 0.5653409090909091, + "acc_punct": 0.8735795454545454 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.2877918297002848, + "t": 0.4382236687399322, + "punct": 0.6687478000556297, + "acc_u": 0.022727272727272728, + "acc_t": 0.018465909090909092, + "acc_punct": 0.2869318181818182 + }, + "legal-all-judgements": { + "u": 0.8426782291184812, + "t": 0.8500491927606285, + "punct": 0.9395221634634321, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.16326530612244897 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.36947318698177656, + "t": 0.4646427636013785, + "punct": 0.5829039218206553, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "ja": { + "ersatz": { + "u": 0.8310810810810811, + "t": 0.8306068601583113, + "punct": 0.9590766002098636 + }, + "opus100": { + "u": 0.5546021840873635, + "t": 0.802158273381295, + "punct": 0.8913412563667232 + }, + "ud": { + "u": 0.9569569569569569, + "t": 0.9638802889576883, + "punct": 0.9824198552223371 + }, + "ted2020-corrupted-asr": { + "u": 0.60843144701861, + "t": 0.8845203325095484, + "punct": 0.9485797687212304 + } + }, + "jv": { + "ud": { + "u": 0.9784649364991718, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.89818763326226, + "t": 0.89818763326226, + "punct": 0.9312977099236641 + }, + "ted2020-corrupted-asr": { + "u": 0.29716941977255745, + "t": 0.5752599193719499, + "punct": 0.6976814822314468 + } + }, + "kk": { + "ersatz": { + "u": 0.956175298804781, + "t": 0.9501432664756447, + "punct": 0.9983342587451416 + }, + "opus100": { + "u": 0.7861437160034354, + "t": 0.7276757441418619, + "punct": 0.9164528086683775 + }, + "ud": { + "u": 0.962843295638126, + "t": 0.8933951332560833, + "punct": 0.8653158522050061 + }, + "ted2020-corrupted-asr": { + "u": 0.46831530139103555, + "t": 0.6877610022486347, + "punct": 0.7821189092534644 + } + }, + "km": { + "ersatz": { + "u": 0.6888625992901808, + "t": 0.9265255292652553, + "punct": 0.9250684590490416 + }, + "opus100": { + "u": 0.7248490945674043, + "t": 0.7165651290977662, + "punct": 0.8042879019908118 + }, + "ted2020-corrupted-asr": { + "u": 0.5165945165945166, + "t": 0.7232237539766702, + "punct": 0.782 + } + }, + "kn": { + "opus100": { + "u": 0.7101375445746305, + "t": 0.6774193548387096, + "punct": 0.832089552238806 + }, + "ted2020-corrupted-asr": { + "u": 0.34161735700197243, + "t": 0.33381088825214905, + "punct": 0.43125783535311324 + } + }, + "ko": { + "opus100": { + "u": 0.5609756097560976, + "t": 0.7021046950890448, + "punct": 0.816207627118644 + }, + "ud": { + "u": 0.9934735315445975, + "t": 0.9927325581395349, + "punct": 0.999514091350826 + }, + "ted2020-corrupted-asr": { + "u": 0.345691552395463, + "t": 0.7401145602365116, + "punct": 0.7897892090504738 + } + }, + "ku": { + "opus100": { + "u": 0.7988194786030497, + "t": 0.760091893665901, + "punct": 0.862708719851577 + }, + "ted2020-corrupted-asr": { + "u": 0.2909800228694424, + "t": 0.38439494096519045, + "punct": 0.5037231712658782 + } + }, + "ky": { + "opus100": { + "u": 0.8443893366398016, + "t": 0.8334461746784022, + "punct": 0.9172229639519359 + }, + "ted2020-corrupted-asr": { + "u": 0.47166361974405846, + "t": 0.6724351050679851, + "punct": 0.7390029325513197 + } + }, + "la": { + "ud": { + "u": 0.8643664485425341, + "t": 0.9121164846593863, + "punct": 0.974305191400105 + }, + "ted2020-corrupted-asr": { + "u": 0.6, + "t": 0.4081632653061224, + "punct": 0.4210526315789474 + } + }, + "lt": { + "ersatz": { + "u": 0.9799331103678929, + "t": 0.9711701526286036, + "punct": 0.992749581706637 + }, + "opus100": { + "u": 0.8182245185533115, + "t": 0.8616082682127552, + "punct": 0.9198587340396631 + }, + "ud": { + "u": 0.9706840390879479, + "t": 0.9698451507742463, + "punct": 0.982829108748978 + }, + "ted2020-corrupted-asr": { + "u": 0.2709394205443372, + "t": 0.5842120741083058, + "punct": 0.7241183456394898 + } + }, + "lv": { + "ersatz": { + "u": 0.9734848484848486, + "t": 0.9702267140125649, + "punct": 0.9967014843320505 + }, + "opus100": { + "u": 0.8346948582412301, + "t": 0.8816412414518674, + "punct": 0.9259560618388935 + }, + "ud": { + "u": 0.9591078066914499, + "t": 0.9647919524462735, + "punct": 0.9930939226519337 + }, + "ted2020-corrupted-asr": { + "u": 0.29158180583842497, + "t": 0.6086385716161219, + "punct": 0.7371146855236294 + } + }, + "mg": { + "opus100": { + "u": 0.9247083775185578, + "t": 0.9336199946251008, + "punct": 0.9651194726723428 + }, + "ted2020-corrupted-asr": { + "u": 0.18421052631578944, + "t": 0.5703125, + "punct": 0.5979899497487436 + } + }, + "mk": { + "opus100": { + "u": 0.9278833637073678, + "t": 0.9329491880565741, + "punct": 0.9574123989218329 + }, + "ted2020-corrupted-asr": { + "u": 0.2818768533054247, + "t": 0.5513380666302566, + "punct": 0.7271811404392505 + } + }, + "ml": { + "opus100": { + "u": 0.8052854649713288, + "t": 0.8131556563651829, + "punct": 0.8747007182761373 + }, + "ted2020-corrupted-asr": { + "u": 0.34702299076439386, + "t": 0.38785389467507697, + "punct": 0.4930417495029821 + } + }, + "mn": { + "opus100": { + "u": 0.7915051929933345, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4996963255390221, + "t": 0.7559813362454085, + "punct": 0.8595023243095433 + } + }, + "mr": { + "opus100": { + "u": 0.9101731601731602, + "t": 0.91453696070349, + "punct": 0.9454645108248836 + }, + "ud": { + "u": 0.8705882352941177, + "t": 0.8636363636363636, + "punct": 0.9647058823529412 + }, + "ted2020-corrupted-asr": { + "u": 0.03027823240589198, + "t": 0.2959083469721767, + "punct": 0.4359354719080289 + } + }, + "ms": { + "opus100": { + "u": 0.8762416107382549, + "t": 0.883237626469784, + "punct": 0.9407202216066484 + }, + "ted2020-corrupted-asr": { + "u": 0.5444713478611783, + "t": 0.5694264209706722, + "punct": 0.7033164027487302 + } + }, + "mt": { + "opus100": { + "u": 0.6467020470053071, + "t": 0.8411016949152543, + "punct": 0.902162162162162 + }, + "ud": { + "u": 0.8865096359743041, + "t": 0.865934065934066, + "punct": 0.9499467518636847 + }, + "ted2020-corrupted-asr": { + "u": 0.26277372262773724, + "t": 0.396039603960396, + "punct": 0.5497630331753555 + } + }, + "my": { + "opus100": { + "u": 0.6500222915737851, + "t": 0.7916428162564396, + "punct": 0.8552325581395349 + }, + "ted2020-corrupted-asr": { + "u": 0.9207229182836235, + "t": 0.9206539509536784, + "punct": 0.9626136746379251 + } + }, + "ne": { + "opus100": { + "u": 0.7171355498721228, + "t": 0.7236151603498543, + "punct": 0.7653880463871544 + }, + "ted2020-corrupted-asr": { + "u": 0.3431479462013813, + "t": 0.5652435357787131, + "punct": 0.6728606356968214 + } + }, + "nl": { + "opus100": { + "u": 0.9224318658280921, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9350893697083726, + "t": 0.9076233183856502, + "punct": 0.9729225023342669 + }, + "ted2020-corrupted-asr": { + "u": 0.2712939311195279, + "t": 0.6946240710356143, + "punct": 0.8110266367663951 + } + }, + "no": { + "opus100": { + "u": 0.9462943071965629, + "t": 0.9460402684563759, + "punct": 0.9668658337859859 + }, + "ud": { + "u": 0.9755529685681025, + "t": 0.9845978322875072, + "punct": 0.9954233409610984 + } + }, + "pa": { + "opus100": { + "u": 0.5648213034337771, + "t": 0.6286776091669248, + "punct": 0.798954096455549 + }, + "ted2020-corrupted-asr": { + "u": 0.33017077798861477, + "t": 0.42825112107623314, + "punct": 0.5565912117177098 + } + }, + "pl": { + "ersatz": { + "u": 0.9459459459459459, + "t": 0.9360730593607305, + "punct": 0.9911602209944752 + }, + "opus100": { + "u": 0.9218585005279831, + "t": 0.926063829787234, + "punct": 0.959089677594148 + }, + "ud": { + "u": 0.9590643274853802, + "t": 0.9596478356566397, + "punct": 0.9919354838709677 + }, + "ted2020-corrupted-asr": { + "u": 0.23577605826126535, + "t": 0.6466622353052892, + "punct": 0.7499481435386849 + } + }, + "ps": { + "ersatz": { + "u": 0.8477175463623395, + "t": 0.9147682639434407, + "punct": 0.9575177009579342 + }, + "opus100": { + "u": 0.4783737024221454, + "t": 0.7212817412333737, + "punct": 0.7748031496062993 + }, + "ted2020-corrupted-asr": { + "u": 0.26704545454545453, + "t": 0.5254237288135593, + "punct": 0.6440677966101694 + } + }, + "pt": { + "opus100": { + "u": 0.912535686478069, + "t": 0.9183350895679663, + "punct": 0.9548282391127941 + }, + "ud": { + "u": 0.9591542527630947, + "t": 0.9632075471698114, + "punct": 0.9871121718377088 + }, + "ted2020-corrupted-asr": { + "u": 0.11477789606116326, + "t": 0.6150899037833601, + "punct": 0.762076653572566 + }, + "legal-all-laws": { + "u": 0.5215621051811815, + "t": 0.522697574273926, + "punct": 0.6757739970028152, + "acc_u": 0.017241379310344827, + "acc_t": 0.017241379310344827, + "acc_punct": 0.05172413793103448 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.24673692776915282, + "t": 0.5507124901226813, + "punct": 0.39404612641996056, + "acc_u": 0.0, + "acc_t": 0.017241379310344827, + "acc_punct": 0.0 + }, + "legal-all-judgements": { + "u": 0.8139714657884266, + "t": 0.8155606398101594, + "punct": 0.8104009495715164, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.07135597036415203, + "t": 0.3902393851313222, + "punct": 0.47276184015324924, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "ro": { + "ersatz": { + "u": 0.9771915361363012, + "t": 0.9628796400449944, + "punct": 0.9947236878644821 + }, + "opus100": { + "u": 0.9097978227060655, + "t": 0.9119709166450273, + "punct": 0.9706286027998903 + }, + "ud": { + "u": 0.7942905121746432, + "t": 0.9305835010060362, + "punct": 0.9941706412294647 + }, + "ted2020-corrupted-asr": { + "u": 0.38412408759124084, + "t": 0.5969295058139535, + "punct": 0.7221180127552388 + } + }, + "ru": { + "ersatz": { + "u": 0.9802371541501976, + "t": 0.9831838565022422, + "punct": 0.9949409780775715 + }, + "opus100": { + "u": 0.8466257668711656, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8517241379310345, + "t": 0.8521739130434782, + "punct": 0.9333333333333332 + }, + "ted2020-corrupted-asr": { + "u": 0.18095328703263247, + "t": 0.6206771845757425, + "punct": 0.743701399688958 + } + }, + "si": { + "opus100": { + "u": 0.8023225125362892, + "t": 0.8022417934347478, + "punct": 0.8649972781709309 + }, + "ted2020-corrupted-asr": { + "u": 0.3763440860215054, + "t": 0.5051958433253396, + "punct": 0.608695652173913 + } + }, + "sk": { + "opus100": { + "u": 0.912535686478069, + "t": 0.9281150159744409, + "punct": 0.9600217568670112 + }, + "ud": { + "u": 0.9699525566684238, + "t": 0.9722367731796752, + "punct": 0.9863157894736843 + }, + "ted2020-corrupted-asr": { + "u": 0.23413605203023377, + "t": 0.6039749233026545, + "punct": 0.7560006194187787 + } + }, + "sl": { + "opus100": { + "u": 0.9250065325320094, + "t": 0.9317759490310592, + "punct": 0.9527117285599788 + }, + "ud": { + "u": 0.9572723349158394, + "t": 0.9568593615185504, + "punct": 0.9922010398613518 + }, + "ted2020-corrupted-asr": { + "u": 0.46647698256365355, + "t": 0.6194706994328922, + "punct": 0.7635252594426591 + }, + "short-sequences": { + "u": 0.7957096748152468, + "t": 0.7861556921877654, + "punct": 0.9111704464818144, + "acc_u": 0.39589442815249265, + "acc_t": 0.3387096774193548, + "acc_punct": 0.6792521994134897 + }, + "short-sequences-corrupted-asr": { + "u": 0.625392506639107, + "t": 0.5367104176232667, + "punct": 0.7027317270946848, + "acc_u": 0.1315982404692082, + "acc_t": 0.050586510263929615, + "acc_punct": 0.23497067448680353 + } + }, + "sq": { + "opus100": { + "u": 0.9034928848641656, + "t": 0.9185580774365821, + "punct": 0.9584472389283761 + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.16373256373256373, + "t": 0.5547998356689642, + "punct": 0.7113821138211384 + } + }, + "sr": { + "opus100": { + "u": 0.9436469962785752, + "t": 0.94995986085095, + "punct": 0.9625407166123778 + }, + "ud": { + "u": 0.9849137931034483, + "t": 0.9903948772678761, + "punct": 1.0 + }, + "ted2020-corrupted-asr": { + "u": 0.3627207933064766, + "t": 0.5810094097519247, + "punct": 0.7530807850296669 + }, + "short-sequences": { + "u": 0.8988765863765863, + "t": 0.8988765863765863, + "punct": 0.9497621302308804, + "acc_u": 0.6041666666666666, + "acc_t": 0.6041666666666666, + "acc_punct": 0.796875 + }, + "short-sequences-corrupted-asr": { + "u": 0.6418772489084988, + "t": 0.6002129906613182, + "punct": 0.7122324434824435, + "acc_u": 0.11979166666666667, + "acc_t": 0.07291666666666667, + "acc_punct": 0.21875 + } + }, + "sv": { + "opus100": { + "u": 0.920552227142485, + "t": 0.9319565792957373, + "punct": 0.9575560962422276 + }, + "ud": { + "u": 0.9556135770234987, + "t": 0.9556135770234987, + "punct": 0.9740053050397879 + }, + "ted2020-corrupted-asr": { + "u": 0.34779122905475823, + "t": 0.6181818181818182, + "punct": 0.7629653539918226 + } + }, + "ta": { + "ersatz": { + "u": 0.9556386958845537, + "t": 0.948703805846663, + "punct": 0.985172981878089 + }, + "opus100": { + "u": 0.6784753363228699, + "t": 0.6906561838524342, + "punct": 0.7741741741741742 + }, + "ud": { + "u": 0.9863013698630138, + "t": 0.9908256880733944, + "punct": 1.0 + }, + "ted2020-corrupted-asr": { + "u": 0.3158236583583665, + "t": 0.3267571825069387, + "punct": 0.4626628535112805 + } + }, + "te": { + "opus100": { + "u": 0.7510841283607979, + "t": 0.7522831050228311, + "punct": 0.843262001156738 + }, + "ted2020-corrupted-asr": { + "u": 0.31957079542803823, + "t": 0.39513581806696146, + "punct": 0.5574650912996778 + } + }, + "tg": { + "opus100": { + "u": 0.7946221604079741, + "t": 0.8621908127208481, + "punct": 0.9083310114237949 + }, + "ted2020-corrupted-asr": { + "u": 0.39999999999999997, + "t": 0.5815217391304348, + "punct": 0.7151515151515151 + } + }, + "th": { + "opus100": { + "u": 0.6685801760428627, + "t": 0.7095533233596923, + "punct": 0.733953488372093 + }, + "ud": { + "u": 0.7345932621199671, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4861496629468079, + "t": 0.5872371818517153, + "punct": 0.6876129291306966 + } + }, + "tr": { + "ersatz": { + "u": 0.9444745885331886, + "t": 0.9441936066461982, + "punct": 0.9866030464305378 + }, + "opus100": { + "u": 0.934154175588865, + "t": 0.9360323886639677, + "punct": 0.9558342420937841 + }, + "ud": { + "u": 0.9614421632448674, + "t": 0.9614035087719299, + "punct": 0.9863152559553979 + }, + "ted2020-corrupted-asr": { + "u": 0.24639885479108886, + "t": 0.6128017759689205, + "punct": 0.7663670015864621 + } + }, + "uk": { + "opus100": { + "u": 0.9012474012474011, + "t": 0.9009617884065505, + "punct": 0.9467741935483871 + }, + "ud": { + "u": 0.9214594928880643, + "t": 0.9195825659914059, + "punct": 0.9833641404805915 + }, + "ted2020-corrupted-asr": { + "u": 0.36410338738160214, + "t": 0.6092896174863388, + "punct": 0.7346308310163732 + } + }, + "ur": { + "opus100": { + "u": 0.6048218029350105, + "t": 0.5714852270473925, + "punct": 0.6860158311345647 + }, + "ud": { + "u": 0.9604863221884499, + "t": 0.962283384301733, + "punct": 0.9927007299270073 + }, + "ted2020-corrupted-asr": { + "u": 0.3955382436260624, + "t": 0.5571746609997976, + "punct": 0.6856922483609719 + } + }, + "uz": { + "opus100": { + "u": 0.7918733758563665, + "t": 0.8148941869809804, + "punct": 0.8670111503943432 + }, + "ted2020-corrupted-asr": { + "u": 0.19668789808917198, + "t": 0.6483285075019743, + "punct": 0.7664620535714285 + } + }, + "vi": { + "opus100": { + "u": 0.9117318435754189, + "t": 0.9138998311761395, + "punct": 0.9511036602402906 + }, + "ud": { + "u": 0.9224704336399474, + "t": 0.9361413043478262, + "punct": 0.9951557093425607 + }, + "ted2020-corrupted-asr": { + "u": 0.29868952443748453, + "t": 0.5195214105793451, + "punct": 0.6583692669541357 + } + }, + "xh": { + "opus100": { + "u": 0.7834394904458599, + "t": 0.815686274509804, + "punct": 0.9052268811028145 + } + }, + "yi": { + "opus100": { + "u": 0.7093074547860609, + "t": 0.7123407992973211, + "punct": 0.8188679245283019 + } + }, + "yo": { + "opus100": { + "u": 0.7821736688958089, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8276877761413843, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.8781230956733699, + "t": 0.9242256637168142, + "punct": 0.9828444936358606 + }, + "opus100": { + "u": 0.8352171326591316, + "t": 0.8156009551605201, + "punct": 0.9008219178082193 + }, + "ud": { + "u": 0.9479768786127168, + "t": 0.9734513274336283, + "punct": 0.9977777777777778 + }, + "ted2020-corrupted-asr": { + "u": 0.1814096499526963, + "t": 0.5031152647975077, + "punct": 0.6652702702702703 + } + }, + "zu": { + "opus100": { + "u": 0.6335905916942299, + "t": 0.8342557529857269, + "punct": 0.9105930953083505 + } + }, + "tr-de_TR": { + "code-switching": { + "u": 0.9723160027008777, + "t": 0.9798471160528144, + "punct": 0.9965445749827229 + }, + "code-switching-corrupted-asr": { + "u": 0.33459755583649387, + "t": 0.3330550918196995, + "punct": 0.39872068230277186 + } + }, + "tr-de_DE": { + "code-switching": { + "u": 0.9710827168796233, + "t": 0.9805555555555556, + "punct": 0.9958620689655173 + }, + "code-switching-corrupted-asr": { + "u": 0.21013133208255158, + "t": 0.34470536109880373, + "punct": 0.409778812572759 + } + }, + "es-en_ES": { + "code-switching": { + "u": 0.8581759742868622, + "t": 0.8777403035413153, + "punct": 0.9351446099912357 + }, + "code-switching-corrupted-asr": { + "u": 0.20822281167108753, + "t": 0.4689234184239734, + "punct": 0.6067415730337079 + } + }, + "es-en_EN": { + "code-switching": { + "u": 0.9057239057239056, + "t": 0.9063032367972744, + "punct": 0.9352014010507882 + }, + "code-switching-corrupted-asr": { + "u": 0.3856988082340195, + "t": 0.5219312085831493, + "punct": 0.6209150326797386 + } + }, + "vi-en_VI": { + "code-switching": { + "u": 0.2268431001890359, + "t": 0.4673254701944533, + "punct": 0.5883190883190884 + }, + "code-switching-corrupted-asr": { + "u": 0.29908675799086754, + "t": 0.470703125, + "punct": 0.5901892622634222 + } + }, + "vi-en_EN": { + "code-switching": { + "u": 0.17169684775318578, + "t": 0.36388140161725063, + "punct": 0.5026819923371648 + }, + "code-switching-corrupted-asr": { + "u": 0.2546998180715585, + "t": 0.36666666666666664, + "punct": 0.5070093457943926 + } + }, + "en-de_EN": { + "code-switching": { + "u": 0.7100346020761245, + "t": 0.8047138047138047, + "punct": 0.9169741697416973 + }, + "code-switching-corrupted-asr": { + "u": 0.31412429378531076, + "t": 0.3908368396446938, + "punct": 0.5807504078303426 + }, + "short-sequences": { + "u": 0.8532406918310744, + "t": 0.8686535326938152, + "punct": 0.9596336012800745, + "acc_u": 0.4365904365904366, + "acc_t": 0.48232848232848236, + "acc_punct": 0.7941787941787942 + }, + "short-sequences-corrupted-asr": { + "u": 0.5726941486935639, + "t": 0.5752526096178308, + "punct": 0.6992973265658166, + "acc_u": 0.08108108108108109, + "acc_t": 0.062370062370062374, + "acc_punct": 0.13513513513513514 + } + }, + "en-de_DE": { + "code-switching": { + "u": 0.6854460093896714, + "t": 0.8019884009942007, + "punct": 0.9181818181818181 + }, + "code-switching-corrupted-asr": { + "u": 0.38969072164948454, + "t": 0.4574669187145558, + "punct": 0.601181683899557 + }, + "short-sequences": { + "u": 0.8459196601983778, + "t": 0.8612056604476257, + "punct": 0.9595938621974103, + "acc_u": 0.4095634095634096, + "acc_t": 0.46361746361746364, + "acc_punct": 0.7879417879417879 + }, + "short-sequences-corrupted-asr": { + "u": 0.5886341455686627, + "t": 0.5964392682483489, + "punct": 0.7137185015721972, + "acc_u": 0.08108108108108109, + "acc_t": 0.060291060291060294, + "acc_punct": 0.1683991683991684 + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/wtp-1l.json b/wtpsplit/evaluation/evaluation_results/main/wtp-1l.json new file mode 100644 index 00000000..6667b794 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/wtp-1l.json @@ -0,0 +1,1709 @@ +{ + "af": { + "opus100": { + "u": 0.7310779816513762, + "t": 0.7643216080402011, + "punct": 0.872142252328535 + }, + "ud": { + "u": 0.9782330345710627, + "t": 0.9882659713168187, + "punct": 0.9986928104575163 + }, + "ted2020-corrupted-asr": { + "u": 0.35233751425313564, + "t": 0.49174806332098353, + "punct": 0.6141443752290217 + } + }, + "am": { + "opus100": { + "u": 0.5387365911799761, + "t": 0.5901208617971625, + "punct": 0.6831656241501223 + }, + "ted2020-corrupted-asr": { + "u": 0.3242506811989101, + "t": 0.4807987711213518, + "punct": 0.5527015057573074 + } + }, + "ar": { + "ersatz": { + "u": 0.8561572956191791, + "t": 0.8818112049117423, + "punct": 0.9188149288187764 + }, + "opus100": { + "u": 0.644414535666218, + "t": 0.65351131746953, + "punct": 0.7506159321105941 + }, + "ud": { + "u": 0.7769130998702983, + "t": 0.8480725623582767, + "punct": 0.8701095461658842 + }, + "ted2020-corrupted-asr": { + "u": 0.2688284518828452, + "t": 0.4272192743438979, + "punct": 0.5460329890852136 + } + }, + "az": { + "opus100": { + "u": 0.7463414634146341, + "t": 0.7537760728842005, + "punct": 0.8205818965517241 + }, + "ted2020-corrupted-asr": { + "u": 0.04827259820160909, + "t": 0.5776843817787419, + "punct": 0.7153745476942028 + } + }, + "be": { + "opus100": { + "u": 0.6949547218628719, + "t": 0.7048178038640255, + "punct": 0.8613916947250281 + }, + "ud": { + "u": 0.8849382716049382, + "t": 0.8744007670182168, + "punct": 0.8916849015317286 + }, + "ted2020-corrupted-asr": { + "u": 0.30521792510742785, + "t": 0.47246335562829084, + "punct": 0.5735338345864662 + } + }, + "bg": { + "opus100": { + "u": 0.9309071729957806, + "t": 0.9179220779220778, + "punct": 0.9595658073270014 + }, + "ud": { + "u": 0.9745889387144993, + "t": 0.9745889387144993, + "punct": 0.9910891089108911 + }, + "ted2020-corrupted-asr": { + "u": 0.2698861203870194, + "t": 0.5078979343863912, + "punct": 0.6077391092723291 + } + }, + "bn": { + "opus100": { + "u": 0.7656286583938188, + "t": 0.8122705820660723, + "punct": 0.8484199250133904 + }, + "ud": { + "u": 0.9803921568627451, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.032834731849689894, + "t": 0.13532616035654796, + "punct": 0.29017751479289944 + } + }, + "ca": { + "opus100": { + "u": 0.8868848234990983, + "t": 0.8988173455978976, + "punct": 0.9394686387291153 + }, + "ud": { + "u": 0.9815914489311164, + "t": 0.9873798076923077, + "punct": 0.9993983152827919 + }, + "ted2020-corrupted-asr": { + "u": 0.17086347404083876, + "t": 0.4410366634977059, + "punct": 0.5799916747606494 + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.35532994923857864, + "t": 0.33070866141732286, + "punct": 0.3853211009174312 + } + }, + "cs": { + "ersatz": { + "u": 0.9373776908023483, + "t": 0.9366427171783149, + "punct": 0.987146529562982 + }, + "opus100": { + "u": 0.8830903044256844, + "t": 0.8862060107885947, + "punct": 0.9444596443228456 + }, + "ud": { + "u": 0.9178133937725972, + "t": 0.9184615384615384, + "punct": 0.9454088874331258 + }, + "ted2020-corrupted-asr": { + "u": 0.21527059634608756, + "t": 0.4731377719182596, + "punct": 0.5920310622168808 + } + }, + "cy": { + "opus100": { + "u": 0.6947637292464879, + "t": 0.7340782122905029, + "punct": 0.8089887640449438 + }, + "ud": { + "u": 0.9895348837209302, + "t": 0.9840895698291102, + "punct": 0.994739918176505 + } + }, + "da": { + "opus100": { + "u": 0.8874841972187105, + "t": 0.9030256012412723, + "punct": 0.9412083446220536 + }, + "ud": { + "u": 0.9432146294513956, + "t": 0.9412915851272016, + "punct": 0.9851337958374629 + }, + "ted2020-corrupted-asr": { + "u": 0.08166203846549418, + "t": 0.4733448522904463, + "punct": 0.602819996337667 + } + }, + "de": { + "ersatz": { + "u": 0.9455040871934605, + "t": 0.9473981900452488, + "punct": 0.9894916216983812 + }, + "opus100": { + "u": 0.7676154923005133, + "t": 0.8283562710984159, + "punct": 0.8801779260494857 + }, + "ud": { + "u": 0.9564245810055866, + "t": 0.9636363636363636, + "punct": 0.9729418537708693 + }, + "ted2020-corrupted-asr": { + "u": 0.28719894424282416, + "t": 0.5438795097701432, + "punct": 0.6500315855969678 + }, + "legal-all-laws": { + "u": 0.7754213857512181, + "t": 0.8143892051065048, + "punct": 0.9404000396225979, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.4108787086177598, + "t": 0.5705384033140047, + "punct": 0.7423143138472348, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements": { + "u": 0.7770657305888954, + "t": 0.7777011094865351, + "punct": 0.8687059890367105, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2669688085021616, + "t": 0.3557516831697615, + "punct": 0.6162141556857562, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "el": { + "opus100": { + "u": 0.9045407636738907, + "t": 0.9129411764705883, + "punct": 0.9605871160641478 + }, + "ud": { + "u": 0.9782608695652174, + "t": 0.9705882352941176, + "punct": 0.9842424242424243 + }, + "ted2020-corrupted-asr": { + "u": 0.1020746079672738, + "t": 0.4592499804274642, + "punct": 0.5882963172537371 + } + }, + "en": { + "ersatz": { + "u": 0.9696712619300106, + "t": 0.9739255014326648, + "punct": 0.9851156069364163 + }, + "opus100": { + "u": 0.9112618724559022, + "t": 0.8999473407056345, + "punct": 0.9421667119196306 + }, + "ud": { + "u": 0.9364448857994041, + "t": 0.9276930644367929, + "punct": 0.9586101175268268 + }, + "ted2020-corrupted-asr": { + "u": 0.1049388658900549, + "t": 0.41715429627348316, + "punct": 0.5877342419080067 + }, + "legal-all-judgements": { + "u": 0.8693022690833463, + "t": 0.8704754910224729, + "punct": 0.9490353616633855, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.13321015124770655, + "t": 0.31474292311673235, + "punct": 0.5723704181293373, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "eo": { + "opus100": { + "u": 0.9063670411985019, + "t": 0.9021998409753511, + "punct": 0.9500954458685574 + }, + "ted2020-corrupted-asr": { + "u": 0.22997664514356367, + "t": 0.5048839274387923, + "punct": 0.6182233834095363 + } + }, + "es": { + "ersatz": { + "u": 0.9852038975099242, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9112734864300626, + "t": 0.9193335096535308, + "punct": 0.9517842549713974 + }, + "ud": { + "u": 0.9607781612802008, + "t": 0.9685897435897435, + "punct": 0.9958050984188448 + }, + "ted2020-corrupted-asr": { + "u": 0.1577509473869745, + "t": 0.44187209168172903, + "punct": 0.5782459578637922 + }, + "legal-all-laws": { + "u": 0.8484359273397454, + "t": 0.8782509482133806, + "punct": 0.94244577728149, + "acc_u": 0.18579234972677597, + "acc_t": 0.18032786885245902, + "acc_punct": 0.5245901639344263 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.1720963323790397, + "t": 0.603487691309536, + "punct": 0.7525420904683076, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.04371584699453552 + }, + "legal-all-judgements": { + "u": 0.7737030646503023, + "t": 0.7603158045043856, + "punct": 0.8831487004361106, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.05128205128205128 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2199914698857011, + "t": 0.3430362044118254, + "punct": 0.5358525852250771, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "et": { + "ersatz": { + "u": 0.9514301133297356, + "t": 0.9525395503746876, + "punct": 0.9808386559289085 + }, + "opus100": { + "u": 0.8415380847416116, + "t": 0.8688906128782001, + "punct": 0.9465313956676722 + }, + "ud": { + "u": 0.9051782111634162, + "t": 0.91051912568306, + "punct": 0.9701830863121186 + }, + "ted2020-corrupted-asr": { + "u": 0.22588402957156856, + "t": 0.5200698080279231, + "punct": 0.6310694146414493 + }, + "short-sequences": { + "u": 0.8826393799399987, + "t": 0.8912286839757134, + "punct": 0.8857725449505289, + "acc_u": 0.43349753694581283, + "acc_t": 0.47783251231527096, + "acc_punct": 0.4482758620689655 + }, + "short-sequences-corrupted-asr": { + "u": 0.5002268296137313, + "t": 0.5460833266112426, + "punct": 0.6312893261952427, + "acc_u": 0.009852216748768473, + "acc_t": 0.014778325123152709, + "acc_punct": 0.059113300492610835 + } + }, + "eu": { + "opus100": { + "u": 0.8538364779874213, + "t": 0.8634969325153374, + "punct": 0.9121293800539083 + }, + "ud": { + "u": 0.9673518742442563, + "t": 0.9715857011915673, + "punct": 0.9990732159406858 + }, + "ted2020-corrupted-asr": { + "u": 0.13593171203092286, + "t": 0.43215950284826515, + "punct": 0.5466127098321343 + } + }, + "fa": { + "opus100": { + "u": 0.587757175514351, + "t": 0.5886075949367088, + "punct": 0.7011802575107295 + }, + "ud": { + "u": 0.9674556213017752, + "t": 0.9796533534287868, + "punct": 0.9996181748759068 + }, + "ted2020-corrupted-asr": { + "u": 0.2042435742625496, + "t": 0.450893033158538, + "punct": 0.6568210262828535 + } + }, + "fi": { + "ersatz": { + "u": 0.9692014172799127, + "t": 0.9702592087312415, + "punct": 0.9927697441601779 + }, + "opus100": { + "u": 0.9071740807405502, + "t": 0.9245432883240666, + "punct": 0.9577464788732393 + }, + "ud": { + "u": 0.9219178082191781, + "t": 0.9253097345132743, + "punct": 0.9741564967695621 + }, + "ted2020-corrupted-asr": { + "u": 0.14465577283686043, + "t": 0.46393869973931584, + "punct": 0.5855658575222475 + } + }, + "fr": { + "ersatz": { + "u": 0.9653121902874132, + "t": 0.965633423180593, + "punct": 0.9876295553326646 + }, + "opus100": { + "u": 0.8753154972236245, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9622886866059817, + "t": 0.9671484888304862, + "punct": 0.9825033647375505 + }, + "ted2020-corrupted-asr": { + "u": 0.20791583166332667, + "t": 0.48654503040906444, + "punct": 0.5997538629837277 + }, + "legal-all-laws": { + "u": 0.9152484437925076, + "t": 0.916033806860681, + "punct": 0.9841137242519807, + "acc_u": 0.6470588235294118, + "acc_t": 0.6514161220043573, + "acc_punct": 0.8823529411764706 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.40212558222704053, + "t": 0.6217339945654509, + "punct": 0.7666276400845684, + "acc_u": 0.1786492374727669, + "acc_t": 0.12636165577342048, + "acc_punct": 0.3137254901960784 + }, + "legal-all-judgements": { + "u": 0.8154585849644916, + "t": 0.8549302828224082, + "punct": 0.9668073918067461, + "acc_u": 0.015873015873015872, + "acc_t": 0.015873015873015872, + "acc_punct": 0.49206349206349204 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.24286414880678597, + "t": 0.32900224024706426, + "punct": 0.5164388529064962, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "fy": { + "opus100": { + "u": 0.559254327563249, + "t": 0.6591347478644255, + "punct": 0.8651817116060962 + } + }, + "ga": { + "opus100": { + "u": 0.8011710173212979, + "t": 0.7980652962515115, + "punct": 0.889505830094392 + }, + "ud": { + "u": 0.8716289104638619, + "t": 0.9080590238365495, + "punct": 0.9853300733496333 + }, + "ted2020-corrupted-asr": { + "u": 0.0425531914893617, + "t": 0.34615384615384615, + "punct": 0.4000000000000001 + } + }, + "gd": { + "opus100": { + "u": 0.810336421257923, + "t": 0.8277777777777777, + "punct": 0.9212678936605316 + }, + "ud": { + "u": 0.6864608076009501, + "t": 0.6954851104707012, + "punct": 0.8004201680672268 + } + }, + "gl": { + "opus100": { + "u": 0.8800413650465356, + "t": 0.883177570093458, + "punct": 0.936654033567948 + }, + "ud": { + "u": 0.9765517241379311, + "t": 0.9832402234636872, + "punct": 0.9778393351800554 + }, + "ted2020-corrupted-asr": { + "u": 0.12710462287104624, + "t": 0.4488488190149765, + "punct": 0.5646196979289138 + } + }, + "gu": { + "ersatz": { + "u": 0.8744326777609683, + "t": 0.874736842105263, + "punct": 0.9534368070953436 + }, + "opus100": { + "u": 0.6908508935716191, + "t": 0.691231845077999, + "punct": 0.7516816143497758 + }, + "ted2020-corrupted-asr": { + "u": 0.2840818688074058, + "t": 0.31841795084471997, + "punct": 0.45619351131079877 + } + }, + "ha": { + "opus100": { + "u": 0.8258215962441314, + "t": 0.869402985074627, + "punct": 0.9088500264970855 + }, + "ted2020-corrupted-asr": { + "u": 0.13333333333333333, + "t": 0.26315789473684215, + "punct": 0.21621621621621623 + } + }, + "he": { + "opus100": { + "u": 0.9038159958180868, + "t": 0.8931238732938449, + "punct": 0.9383259911894274 + }, + "ud": { + "u": 0.947802197802198, + "t": 0.9503546099290779, + "punct": 0.9672830725462305 + }, + "ted2020-corrupted-asr": { + "u": 0.16623699884434173, + "t": 0.42773528672483757, + "punct": 0.5798915310805173 + } + }, + "hi": { + "ersatz": { + "u": 0.9274328859060402, + "t": 0.9404088734232275, + "punct": 0.9626612355736591 + }, + "opus100": { + "u": 0.6514851485148515, + "t": 0.6271032287403365, + "punct": 0.7370030581039755 + }, + "ud": { + "u": 0.9447077409162716, + "t": 0.946161197833705, + "punct": 0.998022412656559 + }, + "ted2020-corrupted-asr": { + "u": 0.04154302670623145, + "t": 0.37450013588539033, + "punct": 0.5180728261354013 + } + }, + "hu": { + "opus100": { + "u": 0.9115364718054837, + "t": 0.9219895287958115, + "punct": 0.9603906673901247 + }, + "ud": { + "u": 0.961352657004831, + "t": 0.9583858764186634, + "punct": 0.9887920298879204 + }, + "ted2020-corrupted-asr": { + "u": 0.06626506024096385, + "t": 0.4293304164387843, + "punct": 0.55859926574414 + } + }, + "hy": { + "opus100": { + "u": 0.8581968422605873, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9413854351687388, + "t": 0.9518619436875567, + "punct": 0.9830827067669171 + }, + "ted2020-corrupted-asr": { + "u": 0.13477737665463296, + "t": 0.4418558422454578, + "punct": 0.5892687559354226 + } + }, + "id": { + "opus100": { + "u": 0.8754956383822363, + "t": 0.8884073672806068, + "punct": 0.9390681003584229 + }, + "ud": { + "u": 0.9807797913234486, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.019709768247779945, + "t": 0.43371162790697676, + "punct": 0.5288948812125157 + } + }, + "ig": { + "opus100": { + "u": 0.8042539049518111, + "t": 0.8162738133677753, + "punct": 0.9027315123251165 + }, + "ted2020-corrupted-asr": { + "u": 0.20125786163522014, + "t": 0.21739130434782608, + "punct": 0.22772277227722773 + } + }, + "is": { + "opus100": { + "u": 0.9388844408860422, + "t": 0.9435180204410974, + "punct": 0.9634839058696241 + }, + "ud": { + "u": 0.8813361817828704, + "t": 0.8953176260065613, + "punct": 0.9600420609884331 + }, + "ted2020-corrupted-asr": { + "u": 0.29547844374342797, + "t": 0.46237835271777833, + "punct": 0.5823111684958038 + } + }, + "it": { + "opus100": { + "u": 0.8565824957097328, + "t": 0.8771573604060914, + "punct": 0.9331184528605962 + }, + "ud": { + "u": 0.9506037321624587, + "t": 0.9611542730299667, + "punct": 0.9965477560414269 + }, + "ted2020-corrupted-asr": { + "u": 0.40273837424448006, + "t": 0.466998114177953, + "punct": 0.5765284609978918 + }, + "legal-all-laws": { + "u": 0.8053572676646603, + "t": 0.7988519241063688, + "punct": 0.9631748626314753, + "acc_u": 0.2372159090909091, + "acc_t": 0.3963068181818182, + "acc_punct": 0.8607954545454546 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.15907607032428145, + "t": 0.36461020424666246, + "punct": 0.5598150860471094, + "acc_u": 0.017045454545454544, + "acc_t": 0.017045454545454544, + "acc_punct": 0.16051136363636365 + }, + "legal-all-judgements": { + "u": 0.8383911235967727, + "t": 0.8569896902075603, + "punct": 0.939732717281918, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.1836734693877551 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.23141078155820638, + "t": 0.29859544314887715, + "punct": 0.4458556416475291, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "ja": { + "ersatz": { + "u": 0.7604115629593337, + "t": 0.7653604257377842, + "punct": 0.938062466913711 + }, + "opus100": { + "u": 0.39474835886214443, + "t": 0.7959290187891441, + "punct": 0.8613503751041955 + }, + "ud": { + "u": 0.9584599797365756, + "t": 0.958592132505176, + "punct": 0.9823100936524454 + }, + "ted2020-corrupted-asr": { + "u": 0.5315518351577593, + "t": 0.8635932883661296, + "punct": 0.9411831626848692 + } + }, + "jv": { + "ud": { + "u": 0.9745257452574526, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.9044078597981944, + "t": 0.9044078597981944, + "punct": 0.9305251641137856 + }, + "ted2020-corrupted-asr": { + "u": 0.22748581297804096, + "t": 0.4395719917401914, + "punct": 0.5708474576271186 + } + }, + "kk": { + "ersatz": { + "u": 0.9636563876651982, + "t": 0.9630038652678078, + "punct": 0.9961132704053305 + }, + "opus100": { + "u": 0.7231404958677686, + "t": 0.7479720279720279, + "punct": 0.9097202192096914 + }, + "ud": { + "u": 0.9558745348219032, + "t": 0.8944954128440368, + "punct": 0.9186112692088787 + }, + "ted2020-corrupted-asr": { + "u": 0.3214606405267884, + "t": 0.6438231145772838, + "punct": 0.7239230560823625 + } + }, + "km": { + "ersatz": { + "u": 0.8270611268218403, + "t": 0.9118618237236475, + "punct": 0.9133034379671151 + }, + "opus100": { + "u": 0.6843597011079617, + "t": 0.6845557543231962, + "punct": 0.7783505154639174 + }, + "ted2020-corrupted-asr": { + "u": 0.44113263785394935, + "t": 0.5555555555555556, + "punct": 0.6434195725534309 + } + }, + "kn": { + "opus100": { + "u": 0.6108927568781582, + "t": 0.6034177961107837, + "punct": 0.7337128399746996 + }, + "ted2020-corrupted-asr": { + "u": 0.1523394994559304, + "t": 0.20184111830889873, + "punct": 0.37299300123507617 + } + }, + "ko": { + "opus100": { + "u": 0.5790568654646324, + "t": 0.7054263565891473, + "punct": 0.8004251926654266 + }, + "ud": { + "u": 0.9917834702754955, + "t": 0.991763565891473, + "punct": 0.999514091350826 + }, + "ted2020-corrupted-asr": { + "u": 0.4804771482072266, + "t": 0.6896133697016928, + "punct": 0.7824760451923537 + } + }, + "ku": { + "opus100": { + "u": 0.773589554077359, + "t": 0.6712279438242708, + "punct": 0.8617539585870889 + }, + "ted2020-corrupted-asr": { + "u": 0.1655823031880286, + "t": 0.3161911309728429, + "punct": 0.39750334373606777 + } + }, + "ky": { + "opus100": { + "u": 0.8394986242739223, + "t": 0.8407723963279519, + "punct": 0.8979048885932823 + }, + "ted2020-corrupted-asr": { + "u": 0.2681318681318682, + "t": 0.5692695214105793, + "punct": 0.7180851063829787 + } + }, + "la": { + "ud": { + "u": 0.8864091559370529, + "t": 0.901122980005478, + "punct": 0.9649907870492236 + }, + "ted2020-corrupted-asr": { + "u": 0.18181818181818182, + "t": 0.2978723404255319, + "punct": 0.26666666666666666 + } + }, + "lt": { + "ersatz": { + "u": 0.9504087193460491, + "t": 0.9585201793721974, + "punct": 0.9889012208657048 + }, + "opus100": { + "u": 0.7843771666281489, + "t": 0.8417008196721312, + "punct": 0.9016030956329464 + }, + "ud": { + "u": 0.9657915672235481, + "t": 0.9721767594108018, + "punct": 0.9876746096959736 + }, + "ted2020-corrupted-asr": { + "u": 0.22458244111349032, + "t": 0.46802337630041024, + "punct": 0.5814074389148826 + } + }, + "lv": { + "ersatz": { + "u": 0.9623698959167334, + "t": 0.9693318729463308, + "punct": 0.9914998629010144 + }, + "opus100": { + "u": 0.7878787878787878, + "t": 0.8520434557682359, + "punct": 0.9078014184397163 + }, + "ud": { + "u": 0.965675057208238, + "t": 0.9639494833524684, + "punct": 0.9900990099009901 + }, + "ted2020-corrupted-asr": { + "u": 0.21014234875444837, + "t": 0.4946786223078857, + "punct": 0.59708527728344 + } + }, + "mg": { + "opus100": { + "u": 0.8856050955414012, + "t": 0.9057702488088937, + "punct": 0.9514563106796117 + }, + "ted2020-corrupted-asr": { + "u": 0.0, + "t": 0.3794579172610556, + "punct": 0.384 + } + }, + "mk": { + "opus100": { + "u": 0.9122626988199076, + "t": 0.9167311162670791, + "punct": 0.9509962304792676 + }, + "ted2020-corrupted-asr": { + "u": 0.1776782381485629, + "t": 0.4649062131260934, + "punct": 0.59717792596888 + } + }, + "ml": { + "opus100": { + "u": 0.7918326693227091, + "t": 0.8077659283565765, + "punct": 0.8540281839936187 + }, + "ted2020-corrupted-asr": { + "u": 0.2757634562353181, + "t": 0.2917900403768506, + "punct": 0.43961431606471646 + } + }, + "mn": { + "opus100": { + "u": 0.8882377563834241, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.20619147716415057, + "t": 0.6408091217022089, + "punct": 0.8038510485254247 + } + }, + "mr": { + "opus100": { + "u": 0.8785295684603089, + "t": 0.8816568047337279, + "punct": 0.9255698983795662 + }, + "ud": { + "u": 0.9302325581395349, + "t": 0.9425287356321839, + "punct": 0.975609756097561 + }, + "ted2020-corrupted-asr": { + "u": 0.016166281755196302, + "t": 0.2900468948590963, + "punct": 0.4140765713757909 + } + }, + "ms": { + "opus100": { + "u": 0.8617021276595744, + "t": 0.8729641693811075, + "punct": 0.9361227336122734 + }, + "ted2020-corrupted-asr": { + "u": 0.13637006648748057, + "t": 0.4478708746145266, + "punct": 0.5437555419139213 + } + }, + "mt": { + "opus100": { + "u": 0.6593053603694037, + "t": 0.7957390146471371, + "punct": 0.8780091966459291 + }, + "ud": { + "u": 0.8851774530271398, + "t": 0.8809523809523808, + "punct": 0.9242424242424242 + }, + "ted2020-corrupted-asr": { + "u": 0.021052631578947368, + "t": 0.328042328042328, + "punct": 0.44642857142857145 + } + }, + "my": { + "opus100": { + "u": 0.68, + "t": 0.7533527696793002, + "punct": 0.8121886903017872 + }, + "ted2020-corrupted-asr": { + "u": 0.8541468064823641, + "t": 0.8629834848566356, + "punct": 0.9343554798409993 + } + }, + "ne": { + "opus100": { + "u": 0.6874221668742216, + "t": 0.6995100707675559, + "punct": 0.7434191495516344 + }, + "ted2020-corrupted-asr": { + "u": 0.2960262486328837, + "t": 0.4889225525468662, + "punct": 0.6182416549130231 + } + }, + "nl": { + "opus100": { + "u": 0.9080607777491629, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9209558823529411, + "t": 0.9027653880463872, + "punct": 0.9580615097856477 + }, + "ted2020-corrupted-asr": { + "u": 0.33625358394393123, + "t": 0.5660694288913773, + "punct": 0.6844708209693372 + } + }, + "no": { + "opus100": { + "u": 0.9413020277481323, + "t": 0.9430328964963894, + "punct": 0.9635671560630779 + }, + "ud": { + "u": 0.9848006882707198, + "t": 0.9853826311263973, + "punct": 0.9928181557023844 + } + }, + "pa": { + "opus100": { + "u": 0.6297677086320619, + "t": 0.6511378848728246, + "punct": 0.7343890050791754 + }, + "ted2020-corrupted-asr": { + "u": 0.09743589743589744, + "t": 0.3835125448028674, + "punct": 0.5108556832694764 + } + }, + "pl": { + "ersatz": { + "u": 0.9302325581395349, + "t": 0.9330357142857142, + "punct": 0.9839335180055402 + }, + "opus100": { + "u": 0.9129979035639414, + "t": 0.9186323880201431, + "punct": 0.9565453557848994 + }, + "ud": { + "u": 0.9458363159150561, + "t": 0.9574726609963549, + "punct": 0.991959798994975 + }, + "ted2020-corrupted-asr": { + "u": 0.16679118416137467, + "t": 0.5011429021833372, + "punct": 0.5873000294435176 + } + }, + "ps": { + "ersatz": { + "u": 0.843322070069358, + "t": 0.9184205251553419, + "punct": 0.9626436781609196 + }, + "opus100": { + "u": 0.6814476687316596, + "t": 0.7052227795809973, + "punct": 0.7508532423208191 + }, + "ted2020-corrupted-asr": { + "u": 0.3530751708428246, + "t": 0.42874543239951274, + "punct": 0.6094032549728753 + } + }, + "pt": { + "opus100": { + "u": 0.9042086238058353, + "t": 0.916622691292876, + "punct": 0.9524067063277447 + }, + "ud": { + "u": 0.9534117647058823, + "t": 0.9527410207939508, + "punct": 0.9808978032473734 + }, + "ted2020-corrupted-asr": { + "u": 0.09499358151476252, + "t": 0.49555423829282746, + "punct": 0.6008274004233212 + }, + "legal-all-laws": { + "u": 0.6963344410693512, + "t": 0.6253017444167106, + "punct": 0.6169160157207587, + "acc_u": 0.06896551724137931, + "acc_t": 0.05172413793103448, + "acc_punct": 0.10344827586206896 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.1093262972028479, + "t": 0.4052837291422163, + "punct": 0.2933379377861851, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements": { + "u": 0.774405743000465, + "t": 0.8036719727093551, + "punct": 0.7829713677816816, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.12013699531236857, + "t": 0.32126532104565186, + "punct": 0.14571923931120173, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "ro": { + "ersatz": { + "u": 0.9727817093086555, + "t": 0.9662482566248256, + "punct": 0.9919823057782693 + }, + "opus100": { + "u": 0.8849557522123895, + "t": 0.8884937769875539, + "punct": 0.9656499038197307 + }, + "ud": { + "u": 0.804421768707483, + "t": 0.8979591836734694, + "punct": 0.9936440677966103 + }, + "ted2020-corrupted-asr": { + "u": 0.13648389745461179, + "t": 0.4401153276708486, + "punct": 0.5838331905169951 + } + }, + "ru": { + "ersatz": { + "u": 0.9677777777777777, + "t": 0.967923466516601, + "punct": 0.9875846501128668 + }, + "opus100": { + "u": 0.8053913454717427, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8365937859608746, + "t": 0.8499399759903962, + "punct": 0.9141065830721001 + }, + "ted2020-corrupted-asr": { + "u": 0.11973478939157566, + "t": 0.491458051420839, + "punct": 0.5777200826962834 + } + }, + "si": { + "opus100": { + "u": 0.7844961240310078, + "t": 0.795751633986928, + "punct": 0.8502793296089386 + }, + "ted2020-corrupted-asr": { + "u": 0.1912479740680713, + "t": 0.38418079096045193, + "punct": 0.515235457063712 + } + }, + "sk": { + "opus100": { + "u": 0.8969759097898514, + "t": 0.9195710455764075, + "punct": 0.957569121270189 + }, + "ud": { + "u": 0.9631190727081139, + "t": 0.9583333333333333, + "punct": 0.9724576271186441 + }, + "ted2020-corrupted-asr": { + "u": 0.2957397366382649, + "t": 0.5004507827227276, + "punct": 0.607992477668077 + } + }, + "sl": { + "opus100": { + "u": 0.9085287297088379, + "t": 0.9212184873949579, + "punct": 0.949343339587242 + }, + "ud": { + "u": 0.9561920808761584, + "t": 0.9607927617406291, + "punct": 0.9939077458659703 + }, + "ted2020-corrupted-asr": { + "u": 0.21308815575987022, + "t": 0.49739538114255955, + "punct": 0.6298203109226731 + }, + "short-sequences": { + "u": 0.8240066712473322, + "t": 0.8309924721312077, + "punct": 0.9159228391282688, + "acc_u": 0.39589442815249265, + "acc_t": 0.4208211143695015, + "acc_punct": 0.6997800586510264 + }, + "short-sequences-corrupted-asr": { + "u": 0.6218245941523862, + "t": 0.5850744441426179, + "punct": 0.6802410533787584, + "acc_u": 0.10740469208211144, + "acc_t": 0.07881231671554252, + "acc_punct": 0.20711143695014664 + } + }, + "sq": { + "opus100": { + "u": 0.888888888888889, + "t": 0.9018372703412074, + "punct": 0.9530054644808742 + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.13007657264708733, + "t": 0.464480182347727, + "punct": 0.585252815497984 + } + }, + "sr": { + "opus100": { + "u": 0.9386567953463776, + "t": 0.9417708056367988, + "punct": 0.9622179940201141 + }, + "ud": { + "u": 0.9641350210970464, + "t": 0.9711229946524065, + "punct": 0.9935897435897436 + }, + "ted2020-corrupted-asr": { + "u": 0.276542800265428, + "t": 0.4807192642388749, + "punct": 0.5797543179089313 + }, + "short-sequences": { + "u": 0.896277536121286, + "t": 0.9195566297128798, + "punct": 0.9557755901505902, + "acc_u": 0.5885416666666666, + "acc_t": 0.6458333333333334, + "acc_punct": 0.8125 + }, + "short-sequences-corrupted-asr": { + "u": 0.6151106127668627, + "t": 0.5784156312902927, + "punct": 0.6523651695526697, + "acc_u": 0.078125, + "acc_t": 0.057291666666666664, + "acc_punct": 0.13541666666666666 + } + }, + "sv": { + "opus100": { + "u": 0.9073170731707316, + "t": 0.9233193277310924, + "punct": 0.9546191247974067 + }, + "ud": { + "u": 0.9448169159360497, + "t": 0.9503397804495557, + "punct": 0.9655537890832008 + }, + "ted2020-corrupted-asr": { + "u": 0.13981934512608205, + "t": 0.4870357057272945, + "punct": 0.6161451432066049 + } + }, + "ta": { + "ersatz": { + "u": 0.9349422875131164, + "t": 0.9531680440771351, + "punct": 0.9818979703784969 + }, + "opus100": { + "u": 0.6208941605839415, + "t": 0.6227544910179641, + "punct": 0.7158022444646649 + }, + "ud": { + "u": 0.972972972972973, + "t": 0.9724770642201834, + "punct": 1.0 + }, + "ted2020-corrupted-asr": { + "u": 0.2880360289798316, + "t": 0.29705662429474544, + "punct": 0.4221396117306898 + } + }, + "te": { + "opus100": { + "u": 0.7550736725048651, + "t": 0.7624750499001995, + "punct": 0.8337777777777777 + }, + "ted2020-corrupted-asr": { + "u": 0.24885321100917432, + "t": 0.36692837686268226, + "punct": 0.5190647482014389 + } + }, + "tg": { + "opus100": { + "u": 0.7959961868446138, + "t": 0.8318440292445166, + "punct": 0.9045280960174578 + }, + "ted2020-corrupted-asr": { + "u": 0.15181518151815182, + "t": 0.5475728155339806, + "punct": 0.6808510638297872 + } + }, + "th": { + "opus100": { + "u": 0.6698509743981658, + "t": 0.6875386199794026, + "punct": 0.707388277565686 + }, + "ud": { + "u": 0.6676748582230624, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4646580426832596, + "t": 0.5207224573607677, + "punct": 0.5898542168127526 + } + }, + "tr": { + "ersatz": { + "u": 0.9146015332501337, + "t": 0.913035551504102, + "punct": 0.979757085020243 + }, + "opus100": { + "u": 0.9244325767690255, + "t": 0.9259656652360516, + "punct": 0.9539726027397262 + }, + "ud": { + "u": 0.9595202398800601, + "t": 0.9592760180995475, + "punct": 0.9827760891590678 + }, + "ted2020-corrupted-asr": { + "u": 0.05168986083499006, + "t": 0.5424366389241547, + "punct": 0.705623395000262 + } + }, + "uk": { + "opus100": { + "u": 0.8842805939580133, + "t": 0.8870594288654489, + "punct": 0.9403147042864893 + }, + "ud": { + "u": 0.9162079510703365, + "t": 0.9144981412639406, + "punct": 0.9814585908529049 + }, + "ted2020-corrupted-asr": { + "u": 0.24094719557514477, + "t": 0.47924000169642483, + "punct": 0.5762504124829113 + } + }, + "ur": { + "opus100": { + "u": 0.519304450338933, + "t": 0.4865741575058569, + "punct": 0.619296933433059 + }, + "ud": { + "u": 0.8972667295004714, + "t": 0.9475806451612903, + "punct": 0.9927007299270073 + }, + "ted2020-corrupted-asr": { + "u": 0.37834856602584305, + "t": 0.44429133858267716, + "punct": 0.6126104465949389 + } + }, + "uz": { + "opus100": { + "u": 0.7571106094808127, + "t": 0.7732997481108314, + "punct": 0.8531011969532099 + }, + "ted2020-corrupted-asr": { + "u": 0.34832705517394197, + "t": 0.6107753632506107, + "punct": 0.6989713048186247 + } + }, + "vi": { + "opus100": { + "u": 0.8990825688073395, + "t": 0.9039707124753591, + "punct": 0.9459983384104126 + }, + "ud": { + "u": 0.8911917098445595, + "t": 0.9362298528381219, + "punct": 0.9958391123439668 + }, + "ted2020-corrupted-asr": { + "u": 0.08931229532598989, + "t": 0.37932828057660867, + "punct": 0.5178612267300919 + } + }, + "xh": { + "opus100": { + "u": 0.7846622651091925, + "t": 0.8184059161873459, + "punct": 0.9013363662212114 + } + }, + "yi": { + "opus100": { + "u": 0.7141346492774058, + "t": 0.7122405153901217, + "punct": 0.7806422433288105 + } + }, + "yo": { + "opus100": { + "u": 0.7272227817965388, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8185776487663281, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.8536209553158706, + "t": 0.9074380165289258, + "punct": 0.971682398667407 + }, + "opus100": { + "u": 0.7743767750078888, + "t": 0.784263959390863, + "punct": 0.8808988764044944 + }, + "ud": { + "u": 0.8787128712871287, + "t": 0.9658213891951489, + "punct": 0.9988876529477196 + }, + "ted2020-corrupted-asr": { + "u": 0.3242065961418793, + "t": 0.48965558124370145, + "punct": 0.6343091579166956 + } + }, + "zu": { + "opus100": { + "u": 0.7541827541827543, + "t": 0.8309899569583931, + "punct": 0.8951467944877172 + } + }, + "tr-de_TR": { + "code-switching": { + "u": 0.9425587467362925, + "t": 0.9755766621438263, + "punct": 0.9951757408683666 + }, + "code-switching-corrupted-asr": { + "u": 0.17842876165113183, + "t": 0.2165242165242165, + "punct": 0.2991452991452992 + } + }, + "tr-de_DE": { + "code-switching": { + "u": 0.9076052796983028, + "t": 0.9876712328767123, + "punct": 0.996554100620262 + }, + "code-switching-corrupted-asr": { + "u": 0.2450592885375494, + "t": 0.22739187418086498, + "punct": 0.31349628055260365 + } + }, + "es-en_ES": { + "code-switching": { + "u": 0.8418586489652479, + "t": 0.8586821384169083, + "punct": 0.9316017316017315 + }, + "code-switching-corrupted-asr": { + "u": 0.32251720747295964, + "t": 0.38716635211647343, + "punct": 0.5416963649322879 + } + }, + "es-en_EN": { + "code-switching": { + "u": 0.8619582664526485, + "t": 0.8990426457789382, + "punct": 0.9378283712784589 + }, + "code-switching-corrupted-asr": { + "u": 0.15084175084175083, + "t": 0.3521377672209026, + "punct": 0.45895788722341185 + } + }, + "vi-en_VI": { + "code-switching": { + "u": 0.24336973478939158, + "t": 0.3511725796752856, + "punct": 0.5028746646224607 + }, + "code-switching-corrupted-asr": { + "u": 0.28085519922254615, + "t": 0.3559133814547473, + "punct": 0.5041352031643294 + } + }, + "vi-en_EN": { + "code-switching": { + "u": 0.0346646571213263, + "t": 0.2733346831342377, + "punct": 0.3671947809878845 + }, + "code-switching-corrupted-asr": { + "u": 0.04559270516717325, + "t": 0.2741157556270096, + "punct": 0.3759347382732835 + } + }, + "en-de_EN": { + "code-switching": { + "u": 0.5932901706886403, + "t": 0.7571545380212593, + "punct": 0.9074074074074074 + }, + "code-switching-corrupted-asr": { + "u": 0.14906832298136646, + "t": 0.16940179989412388, + "punct": 0.3311258278145695 + }, + "short-sequences": { + "u": 0.8091779160115077, + "t": 0.866360358861373, + "punct": 0.959559510529667, + "acc_u": 0.33471933471933474, + "acc_t": 0.4698544698544699, + "acc_punct": 0.7879417879417879 + }, + "short-sequences-corrupted-asr": { + "u": 0.4799762779930162, + "t": 0.37282765669880513, + "punct": 0.4786053994825032, + "acc_u": 0.062370062370062374, + "acc_t": 0.02286902286902287, + "acc_punct": 0.031185031185031187 + } + }, + "en-de_DE": { + "code-switching": { + "u": 0.6259351620947632, + "t": 0.7459546925566343, + "punct": 0.9049429657794675 + }, + "code-switching-corrupted-asr": { + "u": 0.29435483870967744, + "t": 0.3163323782234957, + "punct": 0.4568106312292359 + }, + "short-sequences": { + "u": 0.8167106096406314, + "t": 0.865710072773499, + "punct": 0.9546817053575022, + "acc_u": 0.3388773388773389, + "acc_t": 0.4594594594594595, + "acc_punct": 0.7650727650727651 + }, + "short-sequences-corrupted-asr": { + "u": 0.5463656750293453, + "t": 0.4698959949871302, + "punct": 0.6003692510922137, + "acc_u": 0.06652806652806653, + "acc_t": 0.029106029106029108, + "acc_punct": 0.08108108108108109 + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/wtp-3l.json b/wtpsplit/evaluation/evaluation_results/main/wtp-3l.json new file mode 100644 index 00000000..52b9a605 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/wtp-3l.json @@ -0,0 +1,1709 @@ +{ + "af": { + "opus100": { + "u": 0.7460624481901078, + "t": 0.7638141809290953, + "punct": 0.8783936651583711 + }, + "ud": { + "u": 0.9832689832689833, + "t": 0.9895833333333334, + "punct": 0.9986928104575163 + }, + "ted2020-corrupted-asr": { + "u": 0.48290972830850126, + "t": 0.4982346018046293, + "punct": 0.6521084337349399 + } + }, + "am": { + "opus100": { + "u": 0.5818051060769507, + "t": 0.6372081345719308, + "punct": 0.7048366013071896 + }, + "ted2020-corrupted-asr": { + "u": 0.4358974358974359, + "t": 0.5321100917431192, + "punct": 0.5794392523364486 + } + }, + "ar": { + "ersatz": { + "u": 0.8701482004234298, + "t": 0.8867562380038387, + "punct": 0.9272521673577083 + }, + "opus100": { + "u": 0.6445927903871829, + "t": 0.6461780929866037, + "punct": 0.7610523460808245 + }, + "ud": { + "u": 0.8051595383570943, + "t": 0.8642160540135034, + "punct": 0.8737254901960785 + }, + "ted2020-corrupted-asr": { + "u": 0.32688629117959617, + "t": 0.4576788337665273, + "punct": 0.5832751918668395 + } + }, + "az": { + "opus100": { + "u": 0.7488464073829927, + "t": 0.746441495778046, + "punct": 0.830338266384778 + }, + "ted2020-corrupted-asr": { + "u": 0.12689901697944594, + "t": 0.6269256530475552, + "punct": 0.730951628201075 + } + }, + "be": { + "opus100": { + "u": 0.7168689621005698, + "t": 0.724699221514508, + "punct": 0.891160220994475 + }, + "ud": { + "u": 0.8893185113581441, + "t": 0.887823585810163, + "punct": 0.919371727748691 + }, + "ted2020-corrupted-asr": { + "u": 0.4040743228117305, + "t": 0.5186265218342203, + "punct": 0.6216442315004943 + } + }, + "bg": { + "opus100": { + "u": 0.9315719947159842, + "t": 0.9277266754270698, + "punct": 0.9616423554835224 + }, + "ud": { + "u": 0.9815645241654211, + "t": 0.9805873568939772, + "punct": 0.9955201592832256 + }, + "ted2020-corrupted-asr": { + "u": 0.2893220338983051, + "t": 0.5375017394127741, + "punct": 0.6517056554626058 + } + }, + "bn": { + "opus100": { + "u": 0.7794291106393016, + "t": 0.8210075026795285, + "punct": 0.8650093557872227 + }, + "ud": { + "u": 0.9345794392523363, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1544134593224245, + "t": 0.18666666666666668, + "punct": 0.30086180363188675 + } + }, + "ca": { + "opus100": { + "u": 0.8765935747067823, + "t": 0.886422302529685, + "punct": 0.9395095367847411 + }, + "ud": { + "u": 0.9830609212481427, + "t": 0.9841364860820112, + "punct": 0.9955022488755623 + }, + "ted2020-corrupted-asr": { + "u": 0.09902176083050508, + "t": 0.485763475036419, + "punct": 0.6288905862134809 + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3738317757009346, + "t": 0.2622950819672131, + "punct": 0.32 + } + }, + "cs": { + "ersatz": { + "u": 0.9356419470761188, + "t": 0.9393447940317873, + "punct": 0.9896973599484868 + }, + "opus100": { + "u": 0.8748743718592964, + "t": 0.8999220171562257, + "punct": 0.9488167308750689 + }, + "ud": { + "u": 0.9227742252828333, + "t": 0.9196294858283875, + "punct": 0.954099994463208 + }, + "ted2020-corrupted-asr": { + "u": 0.34911024145314923, + "t": 0.5117088070592228, + "punct": 0.6444958550221708 + } + }, + "cy": { + "opus100": { + "u": 0.6866449511400652, + "t": 0.7417714744447418, + "punct": 0.8095830740510267 + }, + "ud": { + "u": 0.9918319719953326, + "t": 0.9924021040327293, + "punct": 0.9947460595446587 + } + }, + "da": { + "opus100": { + "u": 0.8822937625754527, + "t": 0.9006211180124225, + "punct": 0.9454841334418226 + }, + "ud": { + "u": 0.9508196721311476, + "t": 0.9433593749999999, + "punct": 0.9891411648568609 + }, + "ted2020-corrupted-asr": { + "u": 0.10769543973941367, + "t": 0.5496276172186051, + "punct": 0.651931614243884 + } + }, + "de": { + "ersatz": { + "u": 0.9528250137136588, + "t": 0.9563025210084034, + "punct": 0.9926220204313281 + }, + "opus100": { + "u": 0.7667597765363128, + "t": 0.8458333333333332, + "punct": 0.8935692221286156 + }, + "ud": { + "u": 0.955890563930765, + "t": 0.9581661891117479, + "punct": 0.9649941656942823 + }, + "ted2020-corrupted-asr": { + "u": 0.2311730785781909, + "t": 0.5656384335585054, + "punct": 0.678136275688961 + }, + "legal-all-laws": { + "u": 0.8273406275417017, + "t": 0.8530008130573318, + "punct": 0.9400267962665015, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.357580296363629, + "t": 0.45841799412665346, + "punct": 0.7657990379081562, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements": { + "u": 0.7948348546328665, + "t": 0.7951290515588914, + "punct": 0.8693018178128686, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.30015835538028846, + "t": 0.36863855652539274, + "punct": 0.6515368529361216, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "el": { + "opus100": { + "u": 0.9094202898550725, + "t": 0.918720503408495, + "punct": 0.9592833876221498 + }, + "ud": { + "u": 0.973170731707317, + "t": 0.9766871165644172, + "punct": 0.9778869778869779 + }, + "ted2020-corrupted-asr": { + "u": 0.2962849247774025, + "t": 0.48879489160938705, + "punct": 0.6353736008873652 + } + }, + "en": { + "ersatz": { + "u": 0.9653028054554448, + "t": 0.9669767772175272, + "punct": 0.9860599494402312 + }, + "opus100": { + "u": 0.9063509149623251, + "t": 0.8941729814476091, + "punct": 0.9471956224350205 + }, + "ud": { + "u": 0.944944944944945, + "t": 0.9450000000000001, + "punct": 0.9686697483307652 + }, + "ted2020-corrupted-asr": { + "u": 0.10141119221411192, + "t": 0.4605159666509359, + "punct": 0.6259808195292066 + }, + "legal-all-judgements": { + "u": 0.8651176809221256, + "t": 0.8730186325885003, + "punct": 0.9545356427888322, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.1580145633513825, + "t": 0.34282072308471184, + "punct": 0.6282320470129183, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "eo": { + "opus100": { + "u": 0.909382518043304, + "t": 0.9050013231013496, + "punct": 0.9543591145121618 + }, + "ted2020-corrupted-asr": { + "u": 0.32225379957988387, + "t": 0.5417008476893628, + "punct": 0.6411075612353567 + } + }, + "es": { + "ersatz": { + "u": 0.9870036101083033, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.8994818652849741, + "t": 0.9137885578697601, + "punct": 0.9500813890396094 + }, + "ud": { + "u": 0.9647355163727959, + "t": 0.9692898272552783, + "punct": 0.9970977104159949 + }, + "ted2020-corrupted-asr": { + "u": 0.14924297043979812, + "t": 0.46968116805721094, + "punct": 0.6308964015245261 + }, + "legal-all-laws": { + "u": 0.8381987402784555, + "t": 0.8845947150509977, + "punct": 0.9406758662510312, + "acc_u": 0.17486338797814208, + "acc_t": 0.18579234972677597, + "acc_punct": 0.5355191256830601 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.15588626372021158, + "t": 0.6499089247331732, + "punct": 0.7871445013834258, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.060109289617486336 + }, + "legal-all-judgements": { + "u": 0.7678525857294639, + "t": 0.7579020710003197, + "punct": 0.8838539812993378, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.05128205128205128 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.27106097658470457, + "t": 0.3796229036139682, + "punct": 0.5824093838896932, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "et": { + "ersatz": { + "u": 0.9604581401690755, + "t": 0.9568345323741007, + "punct": 0.9802173307327947 + }, + "opus100": { + "u": 0.8252611585944919, + "t": 0.8771021992238034, + "punct": 0.9456729456729457 + }, + "ud": { + "u": 0.925586136595311, + "t": 0.9254848587955086, + "punct": 0.9801876955161627 + }, + "ted2020-corrupted-asr": { + "u": 0.44557846906675985, + "t": 0.5504028480419711, + "punct": 0.6791559227490397 + }, + "short-sequences": { + "u": 0.8898583990538698, + "t": 0.8929900258351421, + "punct": 0.901251807308328, + "acc_u": 0.458128078817734, + "acc_t": 0.4630541871921182, + "acc_punct": 0.46798029556650245 + }, + "short-sequences-corrupted-asr": { + "u": 0.5568829025177093, + "t": 0.5752839710259924, + "punct": 0.6708640650623166, + "acc_u": 0.029556650246305417, + "acc_t": 0.019704433497536946, + "acc_punct": 0.07389162561576355 + } + }, + "eu": { + "opus100": { + "u": 0.8440049443757726, + "t": 0.8596802841918294, + "punct": 0.916170903190914 + }, + "ud": { + "u": 0.9711684370257967, + "t": 0.9731543624161074, + "punct": 0.9987646695491044 + }, + "ted2020-corrupted-asr": { + "u": 0.22882961667395424, + "t": 0.4492885680241116, + "punct": 0.5982427493974029 + } + }, + "fa": { + "opus100": { + "u": 0.5959518319241609, + "t": 0.5932594644506001, + "punct": 0.7268054484708302 + }, + "ud": { + "u": 0.9664082687338501, + "t": 0.9781461944235116, + "punct": 0.9996181748759068 + }, + "ted2020-corrupted-asr": { + "u": 0.2760408229386036, + "t": 0.5034959248686441, + "punct": 0.6847588012180137 + } + }, + "fi": { + "ersatz": { + "u": 0.9737417943107222, + "t": 0.9724464236014473, + "punct": 0.9936057825966083 + }, + "opus100": { + "u": 0.9081081081081079, + "t": 0.9251124636147129, + "punct": 0.9551835853131748 + }, + "ud": { + "u": 0.920917494008901, + "t": 0.9265536723163842, + "punct": 0.9807555238774056 + }, + "ted2020-corrupted-asr": { + "u": 0.21793587174348697, + "t": 0.49411861818481984, + "punct": 0.628758437308243 + } + }, + "fr": { + "ersatz": { + "u": 0.9719749423013518, + "t": 0.9663526244952894, + "punct": 0.9843176509843178 + }, + "opus100": { + "u": 0.8680089485458613, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9636363636363636, + "t": 0.9660574412532638, + "punct": 0.9825033647375505 + }, + "ted2020-corrupted-asr": { + "u": 0.21032817742859483, + "t": 0.5095911348872755, + "punct": 0.6469342476805163 + }, + "legal-all-laws": { + "u": 0.6484904435068684, + "t": 0.7050662113342585, + "punct": 0.9877333008481437, + "acc_u": 0.3137254901960784, + "acc_t": 0.37254901960784315, + "acc_punct": 0.8867102396514162 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.06571071511745352, + "t": 0.533533527922296, + "punct": 0.8153214832827933, + "acc_u": 0.006535947712418301, + "acc_t": 0.0915032679738562, + "acc_punct": 0.38562091503267976 + }, + "legal-all-judgements": { + "u": 0.8595806720145847, + "t": 0.8629043112717765, + "punct": 0.966194585546757, + "acc_u": 0.047619047619047616, + "acc_t": 0.031746031746031744, + "acc_punct": 0.47619047619047616 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2692444235731746, + "t": 0.36343003030405957, + "punct": 0.56951129844723, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.015873015873015872 + } + }, + "fy": { + "opus100": { + "u": 0.443956043956044, + "t": 0.6097918498973908, + "punct": 0.8811678832116789 + } + }, + "ga": { + "opus100": { + "u": 0.7784765897973445, + "t": 0.7729580064605446, + "punct": 0.8751714677640603 + }, + "ud": { + "u": 0.8428720083246618, + "t": 0.9043869516310462, + "punct": 0.9817295980511571 + }, + "ted2020-corrupted-asr": { + "u": 0.04347826086956522, + "t": 0.40707964601769914, + "punct": 0.4301075268817205 + } + }, + "gd": { + "opus100": { + "u": 0.8352490421455938, + "t": 0.8365776369397918, + "punct": 0.9269051321928461 + }, + "ud": { + "u": 0.711864406779661, + "t": 0.7065420560747663, + "punct": 0.7955911823647295 + } + }, + "gl": { + "opus100": { + "u": 0.8848641655886157, + "t": 0.8889466840052015, + "punct": 0.9388197076340011 + }, + "ud": { + "u": 0.9752747252747254, + "t": 0.9874826147426982, + "punct": 0.9861878453038674 + }, + "ted2020-corrupted-asr": { + "u": 0.18885533900631346, + "t": 0.48362130276534326, + "punct": 0.6185073483651682 + } + }, + "gu": { + "ersatz": { + "u": 0.8972638100154878, + "t": 0.8890080428954423, + "punct": 0.9671052631578948 + }, + "opus100": { + "u": 0.6916322314049587, + "t": 0.695898161244696, + "punct": 0.7648977171657277 + }, + "ted2020-corrupted-asr": { + "u": 0.2734202114580772, + "t": 0.34267690898916414, + "punct": 0.4689745981236627 + } + }, + "ha": { + "opus100": { + "u": 0.8279418659165495, + "t": 0.8891269416175682, + "punct": 0.914572864321608 + }, + "ted2020-corrupted-asr": { + "u": 0.0, + "t": 0.3111111111111111, + "punct": 0.0 + } + }, + "he": { + "opus100": { + "u": 0.9024836601307189, + "t": 0.8941418293936279, + "punct": 0.9379310344827585 + }, + "ud": { + "u": 0.9505494505494506, + "t": 0.9606741573033708, + "punct": 0.9713467048710601 + }, + "ted2020-corrupted-asr": { + "u": 0.2230246032412461, + "t": 0.47488005075538287, + "punct": 0.6229320072678588 + } + }, + "hi": { + "ersatz": { + "u": 0.9390787518573552, + "t": 0.9464207290294248, + "punct": 0.9629629629629628 + }, + "opus100": { + "u": 0.6506995494427318, + "t": 0.6428408832233098, + "punct": 0.7634069400630916 + }, + "ud": { + "u": 0.9611217335882728, + "t": 0.9680335808847271, + "punct": 0.9990102276476411 + }, + "ted2020-corrupted-asr": { + "u": 0.009807056816970472, + "t": 0.3828372130748642, + "punct": 0.5234154318846325 + } + }, + "hu": { + "opus100": { + "u": 0.9156751163993792, + "t": 0.9210320562939797, + "punct": 0.9622795115332428 + }, + "ud": { + "u": 0.9596083231334149, + "t": 0.9626865671641791, + "punct": 0.9950617283950617 + }, + "ted2020-corrupted-asr": { + "u": 0.15302261190586064, + "t": 0.46982147917257006, + "punct": 0.6067281335659108 + } + }, + "hy": { + "opus100": { + "u": 0.8514409221902017, + "t": null, + "punct": null + }, + "ud": { + "u": 0.96028880866426, + "t": 0.9618604651162791, + "punct": 0.9849906191369605 + }, + "ted2020-corrupted-asr": { + "u": 0.2783859368757491, + "t": 0.49778992204452294, + "punct": 0.6241451367781156 + } + }, + "id": { + "opus100": { + "u": 0.8891275167785235, + "t": 0.8954979536152796, + "punct": 0.93912562257886 + }, + "ud": { + "u": 0.9796814936847886, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.1134892981582877, + "t": 0.4822154258661862, + "punct": 0.5848216519085497 + } + }, + "ig": { + "opus100": { + "u": 0.7860593512767426, + "t": 0.8212903225806452, + "punct": 0.9016501650165017 + }, + "ted2020-corrupted-asr": { + "u": 0.22047244094488191, + "t": 0.3347280334728033, + "punct": 0.320855614973262 + } + }, + "is": { + "opus100": { + "u": 0.9390048154093099, + "t": 0.9437112846754646, + "punct": 0.9655172413793103 + }, + "ud": { + "u": 0.8579027355623099, + "t": 0.8891980522706947, + "punct": 0.9658174097664544 + }, + "ted2020-corrupted-asr": { + "u": 0.4029643353404354, + "t": 0.5125761186126555, + "punct": 0.6288152280932064 + } + }, + "it": { + "opus100": { + "u": 0.8463768115942029, + "t": 0.8836973082783138, + "punct": 0.9339395560310243 + }, + "ud": { + "u": 0.9372294372294372, + "t": 0.9372294372294372, + "punct": 0.9931192660550459 + }, + "ted2020-corrupted-asr": { + "u": 0.39865720800608057, + "t": 0.4950503426685844, + "punct": 0.6209507379720145 + }, + "legal-all-laws": { + "u": 0.7660625978127186, + "t": 0.7309359803513686, + "punct": 0.9581241275987273, + "acc_u": 0.34801136363636365, + "acc_t": 0.484375, + "acc_punct": 0.8352272727272727 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.13412642388513707, + "t": 0.3452770063606297, + "punct": 0.5655760658341876, + "acc_u": 0.011363636363636364, + "acc_t": 0.014204545454545454, + "acc_punct": 0.17897727272727273 + }, + "legal-all-judgements": { + "u": 0.8289909168023787, + "t": 0.8522898417188988, + "punct": 0.940183325332893, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.1836734693877551 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.23207949313479273, + "t": 0.30211122397660384, + "punct": 0.48771049733048577, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "ja": { + "ersatz": { + "u": 0.8015122873345936, + "t": 0.8151898734177215, + "punct": 0.9438909281594127 + }, + "opus100": { + "u": 0.4456659619450317, + "t": 0.7946568884232582, + "punct": 0.8670903564520587 + }, + "ud": { + "u": 0.9342492639842983, + "t": 0.9570552147239264, + "punct": 0.9812889812889813 + }, + "ted2020-corrupted-asr": { + "u": 0.8287063267233238, + "t": 0.8952187182095624, + "punct": 0.9431697054698458 + } + }, + "jv": { + "ud": { + "u": 0.977607864554888, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.9127625201938611, + "t": 0.9105951427808913, + "punct": 0.9279869067103109 + }, + "ted2020-corrupted-asr": { + "u": 0.24230079843571778, + "t": 0.4632260521805371, + "punct": 0.6149408710700894 + } + }, + "kk": { + "ersatz": { + "u": 0.9632925472747497, + "t": 0.9566685424873382, + "punct": 0.9972268441486413 + }, + "opus100": { + "u": 0.7342211928199189, + "t": 0.7489409771251059, + "punct": 0.920544835414302 + }, + "ud": { + "u": 0.9740603493912122, + "t": 0.8284313725490196, + "punct": 0.8474164133738601 + }, + "ted2020-corrupted-asr": { + "u": 0.33377212227585196, + "t": 0.6654766734279919, + "punct": 0.7447758528308627 + } + }, + "km": { + "ersatz": { + "u": 0.7016358463726885, + "t": 0.9137055837563453, + "punct": 0.9197299324831208 + }, + "opus100": { + "u": 0.717830647224354, + "t": 0.7109859154929579, + "punct": 0.7901311680199875 + }, + "ted2020-corrupted-asr": { + "u": 0.36952998379254465, + "t": 0.6339869281045752, + "punct": 0.6899563318777292 + } + }, + "kn": { + "opus100": { + "u": 0.6446078431372548, + "t": 0.603542234332425, + "punct": 0.7803617571059432 + }, + "ted2020-corrupted-asr": { + "u": 0.16983523447401772, + "t": 0.25928074245939675, + "punct": 0.37677304964539005 + } + }, + "ko": { + "opus100": { + "u": 0.5673512008353638, + "t": 0.704169750801875, + "punct": 0.8156453715775749 + }, + "ud": { + "u": 0.9922742636407532, + "t": 0.9944242424242425, + "punct": 0.9992709599027946 + }, + "ted2020-corrupted-asr": { + "u": 0.6062306723170313, + "t": 0.7034252297410192, + "punct": 0.784679786363855 + } + }, + "ku": { + "opus100": { + "u": 0.780801583374567, + "t": 0.6635714285714286, + "punct": 0.8512370811149389 + }, + "ted2020-corrupted-asr": { + "u": 0.11266013564431049, + "t": 0.3634996582365004, + "punct": 0.43702820818434646 + } + }, + "ky": { + "opus100": { + "u": 0.8446631805598278, + "t": 0.8441353145747709, + "punct": 0.9031413612565444 + }, + "ted2020-corrupted-asr": { + "u": 0.31208791208791214, + "t": 0.5525525525525525, + "punct": 0.7178217821782177 + } + }, + "la": { + "ud": { + "u": 0.8916339135317238, + "t": 0.8929909042268594, + "punct": 0.9725593667546173 + }, + "ted2020-corrupted-asr": { + "u": 0.3157894736842105, + "t": 0.339622641509434, + "punct": 0.5517241379310345 + } + }, + "lt": { + "ersatz": { + "u": 0.9652892561983472, + "t": 0.9640852974186307, + "punct": 0.991671293725708 + }, + "opus100": { + "u": 0.7652019529516201, + "t": 0.8408514951849975, + "punct": 0.9005178522758244 + }, + "ud": { + "u": 0.9815261044176706, + "t": 0.9788961038961039, + "punct": 0.9959316517493897 + }, + "ted2020-corrupted-asr": { + "u": 0.3894305496679384, + "t": 0.515627774817972, + "punct": 0.6298633540372671 + } + }, + "lv": { + "ersatz": { + "u": 0.96875, + "t": 0.9716621253405993, + "punct": 0.9928532160527762 + }, + "opus100": { + "u": 0.7800546448087431, + "t": 0.8563292777633964, + "punct": 0.9146608315098468 + }, + "ud": { + "u": 0.9646788990825688, + "t": 0.9639104613978986, + "punct": 0.9903758020164986 + }, + "ted2020-corrupted-asr": { + "u": 0.23257870534135128, + "t": 0.5395127251452213, + "punct": 0.6414961540395153 + } + }, + "mg": { + "opus100": { + "u": 0.8909880010211896, + "t": 0.9145276528182058, + "punct": 0.9528481875170347 + }, + "ted2020-corrupted-asr": { + "u": 0.0588235294117647, + "t": 0.4547008547008548, + "punct": 0.5336134453781513 + } + }, + "mk": { + "opus100": { + "u": 0.9225990163085686, + "t": 0.923555325213786, + "punct": 0.9560321715817695 + }, + "ted2020-corrupted-asr": { + "u": 0.20604168579561102, + "t": 0.5029023984160556, + "punct": 0.6336494883894781 + } + }, + "ml": { + "opus100": { + "u": 0.8000998253057151, + "t": 0.8169323804288071, + "punct": 0.8649921507064364 + }, + "ted2020-corrupted-asr": { + "u": 0.3236430168733483, + "t": 0.3604873036841333, + "punct": 0.4695103634725143 + } + }, + "mn": { + "opus100": { + "u": 0.8068799034399518, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4827740826545101, + "t": 0.6677338857761665, + "punct": 0.813350615683733 + } + }, + "mr": { + "opus100": { + "u": 0.8846971307120084, + "t": 0.8860203240867892, + "punct": 0.9349079923098051 + }, + "ud": { + "u": 0.8941176470588236, + "t": 0.9195402298850575, + "punct": 0.9879518072289156 + }, + "ted2020-corrupted-asr": { + "u": 0.08236758931136866, + "t": 0.29452110062131853, + "punct": 0.41136288688933903 + } + }, + "ms": { + "opus100": { + "u": 0.8699360341151386, + "t": 0.8788946085071795, + "punct": 0.9400278940027895 + }, + "ted2020-corrupted-asr": { + "u": 0.35171828595672466, + "t": 0.4875953586768383, + "punct": 0.5882951653944022 + } + }, + "mt": { + "opus100": { + "u": 0.605994944023113, + "t": 0.8035908596300326, + "punct": 0.8844902386117138 + }, + "ud": { + "u": 0.8983050847457625, + "t": 0.8730512249443206, + "punct": 0.9357997823721437 + }, + "ted2020-corrupted-asr": { + "u": 0.256, + "t": 0.4018264840182649, + "punct": 0.4221105527638191 + } + }, + "my": { + "opus100": { + "u": 0.6888086642599278, + "t": 0.7434497816593886, + "punct": 0.8223320732771153 + }, + "ted2020-corrupted-asr": { + "u": 0.9249429700105714, + "t": 0.9268831455710184, + "punct": 0.9475465313028765 + } + }, + "ne": { + "opus100": { + "u": 0.6891994917407879, + "t": 0.6871199557766722, + "punct": 0.7433789954337899 + }, + "ted2020-corrupted-asr": { + "u": 0.44883866917765214, + "t": 0.5515806988352745, + "punct": 0.624069797279959 + } + }, + "nl": { + "opus100": { + "u": 0.9150090415913201, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9411764705882353, + "t": 0.928635953026197, + "punct": 0.9700934579439252 + }, + "ted2020-corrupted-asr": { + "u": 0.3683206106870229, + "t": 0.6145310183192232, + "punct": 0.7306773773339122 + } + }, + "no": { + "opus100": { + "u": 0.9418045915643354, + "t": 0.9427501337613697, + "punct": 0.9606299212598425 + }, + "ud": { + "u": 0.9818391467281637, + "t": 0.983653570404359, + "punct": 0.9936962750716333 + } + }, + "pa": { + "opus100": { + "u": 0.5556656755863891, + "t": 0.6218820861678005, + "punct": 0.7729220222793488 + }, + "ted2020-corrupted-asr": { + "u": 0.24217118997912315, + "t": 0.38838838838838846, + "punct": 0.48404255319148937 + } + }, + "pl": { + "ersatz": { + "u": 0.9456342668863262, + "t": 0.9277522935779816, + "punct": 0.9766146993318485 + }, + "opus100": { + "u": 0.9176717357105402, + "t": 0.9224229543039321, + "punct": 0.9564747228980804 + }, + "ud": { + "u": 0.9443781332060157, + "t": 0.9545014520813166, + "punct": 0.9932007051120625 + }, + "ted2020-corrupted-asr": { + "u": 0.3142719846227775, + "t": 0.5503909270555889, + "punct": 0.6445002709226147 + } + }, + "ps": { + "ersatz": { + "u": 0.8373493975903615, + "t": 0.9098763008050265, + "punct": 0.9589041095890412 + }, + "opus100": { + "u": 0.6327247191011236, + "t": 0.7039139527935464, + "punct": 0.761156505342552 + }, + "ted2020-corrupted-asr": { + "u": 0.31738035264483627, + "t": 0.4833005893909627, + "punct": 0.6267902274641953 + } + }, + "pt": { + "opus100": { + "u": 0.8986175115207373, + "t": 0.9144511713608845, + "punct": 0.9534127843986999 + }, + "ud": { + "u": 0.9589428975932044, + "t": 0.9557353641123274, + "punct": 0.9837631327602675 + }, + "ted2020-corrupted-asr": { + "u": 0.14130641782517614, + "t": 0.5416970998925886, + "punct": 0.6514572864321607 + }, + "legal-all-laws": { + "u": 0.6092721474990761, + "t": 0.5949443442288177, + "punct": 0.6564787460291608, + "acc_u": 0.034482758620689655, + "acc_t": 0.034482758620689655, + "acc_punct": 0.06896551724137931 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.10909843164794161, + "t": 0.5089539790857548, + "punct": 0.23647063267890792, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements": { + "u": 0.7844993169189087, + "t": 0.791017227000112, + "punct": 0.7806062599089758, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.17849801566026852, + "t": 0.377247572888063, + "punct": 0.25560022273503863, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "ro": { + "ersatz": { + "u": 0.9754901960784313, + "t": 0.9688022284122563, + "punct": 0.9941844364441984 + }, + "opus100": { + "u": 0.8852541519879216, + "t": 0.8900709219858156, + "punct": 0.9670329670329672 + }, + "ud": { + "u": 0.8088926891834117, + "t": 0.9345206914614982, + "punct": 0.9941706412294647 + }, + "ted2020-corrupted-asr": { + "u": 0.24718918038129378, + "t": 0.48390961292188217, + "punct": 0.6343404568901989 + } + }, + "ru": { + "ersatz": { + "u": 0.9748462828395751, + "t": 0.9759910664433277, + "punct": 0.9938097917839054 + }, + "opus100": { + "u": 0.806187016639325, + "t": null, + "punct": null + }, + "ud": { + "u": 0.849078341013825, + "t": 0.867699642431466, + "punct": 0.9314033983637509 + }, + "ted2020-corrupted-asr": { + "u": 0.13077900498484996, + "t": 0.5369891778387983, + "punct": 0.6302137767220902 + } + }, + "si": { + "opus100": { + "u": 0.7949117341640706, + "t": 0.800880088008801, + "punct": 0.8538170005414185 + }, + "ted2020-corrupted-asr": { + "u": 0.2823871906841339, + "t": 0.4362017804154303, + "punct": 0.5891043397968607 + } + }, + "sk": { + "opus100": { + "u": 0.8973442288049029, + "t": 0.9241452991452991, + "punct": 0.9590771765998352 + }, + "ud": { + "u": 0.9597069597069599, + "t": 0.9580272822665269, + "punct": 0.9810526315789474 + }, + "ted2020-corrupted-asr": { + "u": 0.46823334907888525, + "t": 0.5303602922650542, + "punct": 0.6626372519391558 + } + }, + "sl": { + "opus100": { + "u": 0.9129873483088046, + "t": 0.9268805891635982, + "punct": 0.9498793889037791 + }, + "ud": { + "u": 0.9573659772055719, + "t": 0.9621993127147767, + "punct": 0.9908972691807542 + }, + "ted2020-corrupted-asr": { + "u": 0.4205365654364701, + "t": 0.5338447456740617, + "punct": 0.6754677754677754 + }, + "short-sequences": { + "u": 0.8427412610605426, + "t": 0.8371561658709106, + "punct": 0.9106845066721942, + "acc_u": 0.4831378299120235, + "acc_t": 0.4596774193548387, + "acc_punct": 0.6950146627565983 + }, + "short-sequences-corrupted-asr": { + "u": 0.6507078281363472, + "t": 0.5623896886004169, + "punct": 0.694372316751349, + "acc_u": 0.14772727272727273, + "acc_t": 0.08760997067448681, + "acc_punct": 0.2217741935483871 + } + }, + "sq": { + "opus100": { + "u": 0.8869077941925624, + "t": 0.8992974238875878, + "punct": 0.954945054945055 + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.24713798828978414, + "t": 0.5105363118386542, + "punct": 0.6248809105951962 + } + }, + "sr": { + "opus100": { + "u": 0.9376650818806128, + "t": 0.9431455897980872, + "punct": 0.9641499185225421 + }, + "ud": { + "u": 0.978678038379531, + "t": 0.982010582010582, + "punct": 0.9978678038379531 + }, + "ted2020-corrupted-asr": { + "u": 0.3773919468045807, + "t": 0.5178666885973929, + "punct": 0.6459043946809038 + }, + "short-sequences": { + "u": 0.9111056767306769, + "t": 0.9216559193121693, + "punct": 0.9340802137677139, + "acc_u": 0.6197916666666666, + "acc_t": 0.703125, + "acc_punct": 0.7604166666666666 + }, + "short-sequences-corrupted-asr": { + "u": 0.6156475468975469, + "t": 0.5816762772258128, + "punct": 0.6604437229437229, + "acc_u": 0.06770833333333333, + "acc_t": 0.08333333333333333, + "acc_punct": 0.15625 + } + }, + "sv": { + "opus100": { + "u": 0.9039836567926456, + "t": 0.9245729303547964, + "punct": 0.9580514208389715 + }, + "ud": { + "u": 0.9472595656670114, + "t": 0.9498956158663883, + "punct": 0.9645314981471679 + }, + "ted2020-corrupted-asr": { + "u": 0.27817275476015363, + "t": 0.5213330503077903, + "punct": 0.670767004341534 + } + }, + "ta": { + "ersatz": { + "u": 0.9411146161934805, + "t": 0.9467391304347826, + "punct": 0.9780941949616648 + }, + "opus100": { + "u": 0.6427304964539008, + "t": 0.6566316387389945, + "punct": 0.7536656891495601 + }, + "ud": { + "u": 0.968609865470852, + "t": 0.9769585253456222, + "punct": 1.0 + }, + "ted2020-corrupted-asr": { + "u": 0.07294617563739378, + "t": 0.3626015131533282, + "punct": 0.4585193295712962 + } + }, + "te": { + "opus100": { + "u": 0.7744565217391303, + "t": 0.7747344885410844, + "punct": 0.8361745160358278 + }, + "ted2020-corrupted-asr": { + "u": 0.18844609206054988, + "t": 0.38749233599019006, + "punct": 0.524896265560166 + } + }, + "tg": { + "opus100": { + "u": 0.8008575512148641, + "t": 0.8265117507261684, + "punct": 0.9102737869341284 + }, + "ted2020-corrupted-asr": { + "u": 0.44836272040302266, + "t": 0.6131147540983607, + "punct": 0.7140255009107468 + } + }, + "th": { + "opus100": { + "u": 0.6657774390243902, + "t": 0.6966014418125643, + "punct": 0.7134767836919592 + }, + "ud": { + "u": 0.6734616836542092, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.4642971844556257, + "t": 0.5464475941139297, + "punct": 0.6287495130502533 + } + }, + "tr": { + "ersatz": { + "u": 0.9283933024581403, + "t": 0.9295877417001094, + "punct": 0.9830570902394108 + }, + "opus100": { + "u": 0.9284570208222104, + "t": 0.9305443818718154, + "punct": 0.9529540481400438 + }, + "ud": { + "u": 0.9587525150905433, + "t": 0.9559493670886078, + "punct": 0.9842239185750635 + }, + "ted2020-corrupted-asr": { + "u": 0.1442279732480372, + "t": 0.5718570115609732, + "punct": 0.7191987706003921 + } + }, + "uk": { + "opus100": { + "u": 0.8821138211382114, + "t": 0.8902092482562647, + "punct": 0.9427480916030534 + }, + "ud": { + "u": 0.9199755650580331, + "t": 0.9211669770328988, + "punct": 0.9857936998147004 + }, + "ted2020-corrupted-asr": { + "u": 0.4, + "t": 0.5142299698859057, + "punct": 0.6170742962621136 + } + }, + "ur": { + "opus100": { + "u": 0.5298888555121658, + "t": 0.506509719992866, + "punct": 0.6634121274409045 + }, + "ud": { + "u": 0.9171483622350676, + "t": 0.9582909460834181, + "punct": 0.9947753396029259 + }, + "ted2020-corrupted-asr": { + "u": 0.3672079622839183, + "t": 0.5002782133643583, + "punct": 0.6406816533720088 + } + }, + "uz": { + "opus100": { + "u": 0.7639639639639639, + "t": 0.7893512535538899, + "punct": 0.8498013245033113 + }, + "ted2020-corrupted-asr": { + "u": 0.30997679814385154, + "t": 0.6280217069560926, + "punct": 0.7168 + } + }, + "vi": { + "opus100": { + "u": 0.9011111111111111, + "t": 0.9029180695847362, + "punct": 0.9446453407510431 + }, + "ud": { + "u": 0.8854568854568855, + "t": 0.9368998628257887, + "punct": 0.9965397923875432 + }, + "ted2020-corrupted-asr": { + "u": 0.13228977760809393, + "t": 0.4238801147150301, + "punct": 0.5571332629761105 + } + }, + "xh": { + "opus100": { + "u": 0.7719813862356112, + "t": 0.806553911205074, + "punct": 0.8977370380979662 + } + }, + "yi": { + "opus100": { + "u": 0.7302871006874242, + "t": 0.7389199255121043, + "punct": 0.8070953436807096 + } + }, + "yo": { + "opus100": { + "u": 0.7537173806006893, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8350668647845467, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.936809294417682, + "t": 0.9342281879194633, + "punct": 0.9787586206896552 + }, + "opus100": { + "u": 0.8052101835405565, + "t": 0.7655622489959839, + "punct": 0.888402625820569 + }, + "ud": { + "u": 0.9789590254706534, + "t": 0.9802197802197803, + "punct": 0.9988876529477196 + }, + "ted2020-corrupted-asr": { + "u": 0.49744771941379873, + "t": 0.5359684799186578, + "punct": 0.6396255850234009 + } + }, + "zu": { + "opus100": { + "u": 0.7267886855241265, + "t": 0.8305761551625784, + "punct": 0.9059376837154615 + } + }, + "tr-de_TR": { + "code-switching": { + "u": 0.9582504970178926, + "t": 0.9814941740918436, + "punct": 0.9972413793103448 + }, + "code-switching-corrupted-asr": { + "u": 0.21493624772313297, + "t": 0.24871982443306515, + "punct": 0.33557046979865773 + } + }, + "tr-de_DE": { + "code-switching": { + "u": 0.9513157894736841, + "t": 0.9910406616126809, + "punct": 0.9979296066252588 + }, + "code-switching-corrupted-asr": { + "u": 0.22959183673469388, + "t": 0.24540287529254426, + "punct": 0.3231132075471698 + } + }, + "es-en_ES": { + "code-switching": { + "u": 0.8658043654001617, + "t": 0.8706968933669186, + "punct": 0.9224872231686542 + }, + "code-switching-corrupted-asr": { + "u": 0.23611111111111113, + "t": 0.3887587822014052, + "punct": 0.5607166556071665 + } + }, + "es-en_EN": { + "code-switching": { + "u": 0.8819415878239407, + "t": 0.8925053533190578, + "punct": 0.9390618149934238 + }, + "code-switching-corrupted-asr": { + "u": 0.06112852664576803, + "t": 0.3884514435695538, + "punct": 0.5118853793552589 + } + }, + "vi-en_VI": { + "code-switching": { + "u": 0.2474460839954597, + "t": 0.40739580068943904, + "punct": 0.5361949799927246 + }, + "code-switching-corrupted-asr": { + "u": 0.2878385554965481, + "t": 0.4106593782029382, + "punct": 0.551347130027333 + } + }, + "vi-en_EN": { + "code-switching": { + "u": 0.02902979373567609, + "t": 0.2848699763593381, + "punct": 0.4037558685446009 + }, + "code-switching-corrupted-asr": { + "u": 0.017474185861795073, + "t": 0.3005847953216374, + "punct": 0.40963060686015834 + } + }, + "en-de_EN": { + "code-switching": { + "u": 0.6419437340153453, + "t": 0.7814784727863526, + "punct": 0.9114877589453861 + }, + "code-switching-corrupted-asr": { + "u": 0.1723834652594547, + "t": 0.22919937205651492, + "punct": 0.4085470085470086 + }, + "short-sequences": { + "u": 0.835805758043225, + "t": 0.876354298439863, + "punct": 0.955248342438942, + "acc_u": 0.3804573804573805, + "acc_t": 0.4802494802494803, + "acc_punct": 0.7775467775467776 + }, + "short-sequences-corrupted-asr": { + "u": 0.5092261604579933, + "t": 0.4549430855668756, + "punct": 0.5384103087657688, + "acc_u": 0.056133056133056136, + "acc_t": 0.02494802494802495, + "acc_punct": 0.037422037422037424 + } + }, + "en-de_DE": { + "code-switching": { + "u": 0.6215384615384615, + "t": 0.7629204265791633, + "punct": 0.9111318989710009 + }, + "code-switching-corrupted-asr": { + "u": 0.26346153846153847, + "t": 0.31598687294889827, + "punct": 0.5101543460601138 + }, + "short-sequences": { + "u": 0.8240494370936863, + "t": 0.866978321928456, + "punct": 0.9637543262154761, + "acc_u": 0.3367983367983368, + "acc_t": 0.4677754677754678, + "acc_punct": 0.7983367983367984 + }, + "short-sequences-corrupted-asr": { + "u": 0.5422293963073002, + "t": 0.5120771273179162, + "punct": 0.6499543539461914, + "acc_u": 0.07484407484407485, + "acc_t": 0.0395010395010395, + "acc_punct": 0.11850311850311851 + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/main/wtp-6l.json b/wtpsplit/evaluation/evaluation_results/main/wtp-6l.json new file mode 100644 index 00000000..1cd4b0e2 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/main/wtp-6l.json @@ -0,0 +1,1709 @@ +{ + "af": { + "opus100": { + "u": 0.711309523809524, + "t": 0.7645429362880886, + "punct": 0.8830950378469302 + }, + "ud": { + "u": 0.9883570504527813, + "t": 0.9960886571056062, + "punct": 0.9986928104575163 + }, + "ted2020-corrupted-asr": { + "u": 0.5046728971962616, + "t": 0.5440874914559125, + "punct": 0.6685592618878637 + } + }, + "am": { + "opus100": { + "u": 0.6001113379105585, + "t": 0.6414473684210528, + "punct": 0.7105777281607591 + }, + "ted2020-corrupted-asr": { + "u": 0.5269016697588126, + "t": 0.5274542429284527, + "punct": 0.5842696629213483 + } + }, + "ar": { + "ersatz": { + "u": 0.8737177219667491, + "t": 0.8811769143719351, + "punct": 0.923076923076923 + }, + "opus100": { + "u": 0.6697099892588615, + "t": 0.6659903626680194, + "punct": 0.7737384698860553 + }, + "ud": { + "u": 0.8241834607366226, + "t": 0.8607975921745674, + "punct": 0.8885496183206105 + }, + "ted2020-corrupted-asr": { + "u": 0.35469819539514624, + "t": 0.4553137208004465, + "punct": 0.6127286027798098 + } + }, + "az": { + "opus100": { + "u": 0.7529307675293077, + "t": 0.7505112474437626, + "punct": 0.8312179314069673 + }, + "ted2020-corrupted-asr": { + "u": 0.2751463544438531, + "t": 0.6265875207067918, + "punct": 0.7381818181818182 + } + }, + "be": { + "opus100": { + "u": 0.7089368679967206, + "t": 0.7299760191846523, + "punct": 0.8869422392554065 + }, + "ud": { + "u": 0.8929273084479371, + "t": 0.8953771289537712, + "punct": 0.9302809573361083 + }, + "ted2020-corrupted-asr": { + "u": 0.5171017489446024, + "t": 0.5396400416480737, + "punct": 0.6659006975789905 + } + }, + "bg": { + "opus100": { + "u": 0.9317460317460318, + "t": 0.9221932114882506, + "punct": 0.961299052774019 + }, + "ud": { + "u": 0.9825957235206365, + "t": 0.9816194734227521, + "punct": 0.996512207274539 + }, + "ted2020-corrupted-asr": { + "u": 0.39568073699312845, + "t": 0.5535714285714285, + "punct": 0.6908103677901855 + } + }, + "bn": { + "opus100": { + "u": 0.7879512311737987, + "t": 0.8249006622516557, + "punct": 0.871931696905016 + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.03602927378495027, + "t": 0.18398033274255332, + "punct": 0.310048813331089 + } + }, + "ca": { + "opus100": { + "u": 0.8877419354838709, + "t": 0.8961548522103061, + "punct": 0.94379581862612 + }, + "ud": { + "u": 0.9821215733015495, + "t": 0.9829392397485782, + "punct": 0.9987959060806743 + }, + "ted2020-corrupted-asr": { + "u": 0.11696252465483233, + "t": 0.5152600906540039, + "punct": 0.6597597159394912 + } + }, + "ceb": { + "ud": { + "u": 0.9970501474926253, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.3617021276595745, + "t": 0.14545454545454545, + "punct": 0.42352941176470593 + } + }, + "cs": { + "ersatz": { + "u": 0.9350132625994695, + "t": 0.9458319818358741, + "punct": 0.9935608499678042 + }, + "opus100": { + "u": 0.8822932521562659, + "t": 0.9002610966057442, + "punct": 0.948431105047749 + }, + "ud": { + "u": 0.9212255037261936, + "t": 0.920561006707689, + "punct": 0.9646159809513262 + }, + "ted2020-corrupted-asr": { + "u": 0.42366173713809624, + "t": 0.5414975694599296, + "punct": 0.6841606385632327 + } + }, + "cy": { + "opus100": { + "u": 0.6646686646686647, + "t": 0.7358490566037736, + "punct": 0.8226002430133658 + }, + "ud": { + "u": 0.9924109748978401, + "t": 0.9929824561403509, + "punct": 0.9964953271028038 + } + }, + "da": { + "opus100": { + "u": 0.8909183155758499, + "t": 0.8996397323726196, + "punct": 0.9473684210526316 + }, + "ud": { + "u": 0.953757225433526, + "t": 0.9453125, + "punct": 0.9910979228486647 + }, + "ted2020-corrupted-asr": { + "u": 0.2714932126696833, + "t": 0.569726956203042, + "punct": 0.685559655596556 + } + }, + "de": { + "ersatz": { + "u": 0.9615812917594655, + "t": 0.9644670050761422, + "punct": 0.9934751773049646 + }, + "opus100": { + "u": 0.7824436536180308, + "t": 0.8447957839262186, + "punct": 0.8964346349745331 + }, + "ud": { + "u": 0.9632975719932242, + "t": 0.9604584527220632, + "punct": 0.970262390670554 + }, + "ted2020-corrupted-asr": { + "u": 0.5034651178140057, + "t": 0.6089228493961054, + "punct": 0.7257167774991824 + }, + "legal-all-laws": { + "u": 0.8481540293703427, + "t": 0.8616903971756321, + "punct": 0.9440566925017841, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.33779451495304996, + "t": 0.4670704718532101, + "punct": 0.8016587837358525, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements": { + "u": 0.7955678668694751, + "t": 0.7946535385228222, + "punct": 0.8744744206066846, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.3067347192597121, + "t": 0.3628951276032455, + "punct": 0.6757666361995703, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "el": { + "opus100": { + "u": 0.9123992721601248, + "t": 0.9242544206914753, + "punct": 0.962942779291553 + }, + "ud": { + "u": 0.9767441860465117, + "t": 0.9778869778869779, + "punct": 0.9803921568627451 + }, + "ted2020-corrupted-asr": { + "u": 0.2544103992571959, + "t": 0.5259586019681031, + "punct": 0.668804397617957 + } + }, + "en": { + "ersatz": { + "u": 0.9667493796526054, + "t": 0.9676913201626132, + "punct": 0.987168396770473 + }, + "opus100": { + "u": 0.9078129224114625, + "t": 0.8882565959648214, + "punct": 0.9478827361563518 + }, + "ud": { + "u": 0.9481108312342569, + "t": 0.9437404967055245, + "punct": 0.970468431771894 + }, + "ted2020-corrupted-asr": { + "u": 0.1054876866395191, + "t": 0.4919734068428734, + "punct": 0.6715205547300643 + }, + "legal-all-judgements": { + "u": 0.8762257718098219, + "t": 0.8806371223858823, + "punct": 0.958561932136974, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0625 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.1475223811916368, + "t": 0.38348941394265557, + "punct": 0.6641052402331227, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "eo": { + "opus100": { + "u": 0.9147034930950446, + "t": 0.9057798891528107, + "punct": 0.9532100108813928 + }, + "ted2020-corrupted-asr": { + "u": 0.4531123686337914, + "t": 0.5476442562202224, + "punct": 0.666501976284585 + } + }, + "es": { + "ersatz": { + "u": 0.9880434782608696, + "t": null, + "punct": null + }, + "opus100": { + "u": 0.9094703887294547, + "t": 0.9121426698137949, + "punct": 0.9523809523809524 + }, + "ud": { + "u": 0.9609571788413098, + "t": 0.964720974983964, + "punct": 0.998708844415752 + }, + "ted2020-corrupted-asr": { + "u": 0.14056560037088547, + "t": 0.5043222828367604, + "punct": 0.6699308464994195 + }, + "legal-all-laws": { + "u": 0.8333661196096055, + "t": 0.8677228822689914, + "punct": 0.9433041820269192, + "acc_u": 0.19672131147540983, + "acc_t": 0.19672131147540983, + "acc_punct": 0.5519125683060109 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.10439153697872852, + "t": 0.6715620520442389, + "punct": 0.8013739595122547, + "acc_u": 0.0, + "acc_t": 0.01639344262295082, + "acc_punct": 0.06557377049180328 + }, + "legal-all-judgements": { + "u": 0.7742318828202881, + "t": 0.7667646516660812, + "punct": 0.8886755109644483, + "acc_u": 0.02564102564102564, + "acc_t": 0.0, + "acc_punct": 0.07692307692307693 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.24509069887558319, + "t": 0.4305597293184372, + "punct": 0.6278771674514017, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "et": { + "ersatz": { + "u": 0.9627397260273972, + "t": 0.9584379358437936, + "punct": 0.9961559582646897 + }, + "opus100": { + "u": 0.835784904750422, + "t": 0.8894709271870089, + "punct": 0.9545205479452054 + }, + "ud": { + "u": 0.9285958319098052, + "t": 0.9303201506591338, + "punct": 0.9786421253689876 + }, + "ted2020-corrupted-asr": { + "u": 0.5498692566305566, + "t": 0.5927849655302673, + "punct": 0.7120186203977995 + }, + "short-sequences": { + "u": 0.8934364447713962, + "t": 0.8925274490642271, + "punct": 0.9116317070060731, + "acc_u": 0.46798029556650245, + "acc_t": 0.4630541871921182, + "acc_punct": 0.5073891625615764 + }, + "short-sequences-corrupted-asr": { + "u": 0.5695478366244053, + "t": 0.6100742399885803, + "punct": 0.6975987220585911, + "acc_u": 0.024630541871921183, + "acc_t": 0.054187192118226604, + "acc_punct": 0.07881773399014778 + } + }, + "eu": { + "opus100": { + "u": 0.8501118568232662, + "t": 0.8715170278637772, + "punct": 0.9224511930585683 + }, + "ud": { + "u": 0.9667378700030517, + "t": 0.9690018598884067, + "punct": 0.9984544049459041 + }, + "ted2020-corrupted-asr": { + "u": 0.22740176303600776, + "t": 0.46948216684077004, + "punct": 0.635909795145464 + } + }, + "fa": { + "opus100": { + "u": 0.6203423967774421, + "t": 0.6102622576966933, + "punct": 0.7446864340068223 + }, + "ud": { + "u": 0.9656446250461765, + "t": 0.9752808988764045, + "punct": 1.0 + }, + "ted2020-corrupted-asr": { + "u": 0.2829972126578127, + "t": 0.5029397354238119, + "punct": 0.699369164774161 + } + }, + "fi": { + "ersatz": { + "u": 0.9783333333333333, + "t": 0.976473844450595, + "punct": 0.995834490419328 + }, + "opus100": { + "u": 0.9135738385673501, + "t": 0.9236056040179752, + "punct": 0.9598480737927293 + }, + "ud": { + "u": 0.9250431778929188, + "t": 0.9263607257203843, + "punct": 0.9821173104434907 + }, + "ted2020-corrupted-asr": { + "u": 0.4586132437619962, + "t": 0.5223415310010391, + "punct": 0.6644655385885265 + } + }, + "fr": { + "ersatz": { + "u": 0.971654581410679, + "t": 0.9662845583277141, + "punct": 0.9882273797510932 + }, + "opus100": { + "u": 0.8638964916645931, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9660574412532638, + "t": 0.9724047306176085, + "punct": 0.9838709677419355 + }, + "ted2020-corrupted-asr": { + "u": 0.2015596880623875, + "t": 0.5595512203290492, + "punct": 0.6836428999400839 + }, + "legal-all-laws": { + "u": 0.6151101886054444, + "t": 0.689073793401892, + "punct": 0.9904674188188591, + "acc_u": 0.28104575163398693, + "acc_t": 0.3638344226579521, + "acc_punct": 0.9106753812636166 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.07007024230610369, + "t": 0.6782315685096814, + "punct": 0.8223250161541842, + "acc_u": 0.006535947712418301, + "acc_t": 0.22875816993464052, + "acc_punct": 0.4139433551198257 + }, + "legal-all-judgements": { + "u": 0.8325777643108662, + "t": 0.8454139920767355, + "punct": 0.9642229522879103, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.4444444444444444 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.21629220166629726, + "t": 0.36793955206382434, + "punct": 0.5875422860244666, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "fy": { + "opus100": { + "u": 0.4985096870342773, + "t": 0.6568881219442048, + "punct": 0.8821270310192024 + } + }, + "ga": { + "opus100": { + "u": 0.8102862688015525, + "t": 0.8091085271317829, + "punct": 0.8899233296823658 + }, + "ud": { + "u": 0.8544303797468354, + "t": 0.9038031319910514, + "punct": 0.9793939393939394 + }, + "ted2020-corrupted-asr": { + "u": 0.18518518518518517, + "t": 0.3924050632911392, + "punct": 0.45714285714285713 + } + }, + "gd": { + "opus100": { + "u": 0.8098933074684773, + "t": 0.8241115609536662, + "punct": 0.9312820512820512 + }, + "ud": { + "u": 0.6964705882352942, + "t": 0.7140039447731755, + "punct": 0.8016112789526687 + } + }, + "gl": { + "opus100": { + "u": 0.8918495297805643, + "t": 0.890161374284227, + "punct": 0.9370249728555917 + }, + "ud": { + "u": 0.9902642559109874, + "t": 0.9902097902097902, + "punct": 0.9766803840877916 + }, + "ted2020-corrupted-asr": { + "u": 0.20141535111594996, + "t": 0.5132491552552019, + "punct": 0.6614069021683803 + } + }, + "gu": { + "ersatz": { + "u": 0.9045861887190301, + "t": 0.8982683982683982, + "punct": 0.9730621220450798 + }, + "opus100": { + "u": 0.7094455852156057, + "t": 0.7083780880773362, + "punct": 0.7862660944206009 + }, + "ted2020-corrupted-asr": { + "u": 0.2404649473301853, + "t": 0.3432937512166634, + "punct": 0.4632978423750775 + } + }, + "ha": { + "opus100": { + "u": 0.8425881216803477, + "t": 0.887161618868936, + "punct": 0.9167331737164139 + }, + "ted2020-corrupted-asr": { + "u": 0.15384615384615385, + "t": 0.27906976744186046, + "punct": 0.09523809523809525 + } + }, + "he": { + "opus100": { + "u": 0.904224612962477, + "t": 0.8988648090815274, + "punct": 0.9421168687982359 + }, + "ud": { + "u": 0.9654218533886583, + "t": 0.965034965034965, + "punct": 0.982905982905983 + }, + "ted2020-corrupted-asr": { + "u": 0.2804878048780488, + "t": 0.5019910298864064, + "punct": 0.653698034956058 + } + }, + "hi": { + "ersatz": { + "u": 0.9502572898799314, + "t": 0.9515881708652794, + "punct": 0.9706811005863779 + }, + "opus100": { + "u": 0.6615988229524278, + "t": 0.6437886067261496, + "punct": 0.7543147208121828 + }, + "ud": { + "u": 0.9722222222222222, + "t": 0.9728331177231565, + "punct": 0.9993399339933994 + }, + "ted2020-corrupted-asr": { + "u": 0.010306025870228205, + "t": 0.3991866353016228, + "punct": 0.5306379068530251 + } + }, + "hu": { + "opus100": { + "u": 0.9220338983050848, + "t": 0.9345348529021998, + "punct": 0.9634047167253997 + }, + "ud": { + "u": 0.9641532756489494, + "t": 0.9642416769420469, + "punct": 0.9876237623762376 + }, + "ted2020-corrupted-asr": { + "u": 0.11842232774493652, + "t": 0.509, + "punct": 0.6437759546237213 + } + }, + "hy": { + "opus100": { + "u": 0.8547231270358305, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9699179580674567, + "t": 0.9779411764705883, + "punct": 0.9786046511627907 + }, + "ted2020-corrupted-asr": { + "u": 0.46400904721515407, + "t": 0.5123762376237624, + "punct": 0.6484052184409675 + } + }, + "id": { + "opus100": { + "u": 0.8936400541271989, + "t": 0.8961569910057237, + "punct": 0.9422811378072355 + }, + "ud": { + "u": 0.9829389102916897, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.19779404949485588, + "t": 0.5213920419109392, + "punct": 0.621318995708578 + } + }, + "ig": { + "opus100": { + "u": 0.7842465753424658, + "t": 0.8151719704275152, + "punct": 0.9004329004329006 + }, + "ted2020-corrupted-asr": { + "u": 0.398576512455516, + "t": 0.2926829268292683, + "punct": 0.29166666666666663 + } + }, + "is": { + "opus100": { + "u": 0.9420641336566964, + "t": 0.9456021650879568, + "punct": 0.9650311737598264 + }, + "ud": { + "u": 0.8760571595217265, + "t": 0.897634625062909, + "punct": 0.9594337629410522 + }, + "ted2020-corrupted-asr": { + "u": 0.4857389801210026, + "t": 0.5485475006542789, + "punct": 0.6520861372812922 + } + }, + "it": { + "opus100": { + "u": 0.857352222765022, + "t": 0.8944516129032257, + "punct": 0.9437718590260963 + }, + "ud": { + "u": 0.9433551198257082, + "t": 0.9362162162162162, + "punct": 0.994246260069045 + }, + "ted2020-corrupted-asr": { + "u": 0.43333333333333335, + "t": 0.5288540629464479, + "punct": 0.6598586777659471 + }, + "legal-all-laws": { + "u": 0.8553351478675448, + "t": 0.8190894336641108, + "punct": 0.9626046607791064, + "acc_u": 0.4900568181818182, + "acc_t": 0.5795454545454546, + "acc_punct": 0.859375 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.20577865012693494, + "t": 0.3880757409969846, + "punct": 0.6277444979681364, + "acc_u": 0.015625, + "acc_t": 0.017045454545454544, + "acc_punct": 0.234375 + }, + "legal-all-judgements": { + "u": 0.841631447437136, + "t": 0.8439164797411275, + "punct": 0.9406460793924467, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.1836734693877551 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.2492574643310648, + "t": 0.33898722977170187, + "punct": 0.5101679277719543, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "ja": { + "ersatz": { + "u": 0.8322274881516588, + "t": 0.8310220852593734, + "punct": 0.9517241379310345 + }, + "opus100": { + "u": 0.5189924030387845, + "t": 0.7969449565446406, + "punct": 0.8749651907546644 + }, + "ud": { + "u": 0.954864593781344, + "t": 0.9701952723535456, + "punct": 0.9823834196891191 + }, + "ted2020-corrupted-asr": { + "u": 0.7709577890107003, + "t": 0.8754658212358862, + "punct": 0.946451649154352 + } + }, + "jv": { + "ud": { + "u": 0.9785596481583289, + "t": null, + "punct": null + } + }, + "ka": { + "opus100": { + "u": 0.9127875869448904, + "t": 0.9170494460956499, + "punct": 0.9303468997541655 + }, + "ted2020-corrupted-asr": { + "u": 0.33375046006624953, + "t": 0.5041441301217946, + "punct": 0.649591542527631 + } + }, + "kk": { + "ersatz": { + "u": 0.9608062709966405, + "t": 0.9601347557551937, + "punct": 0.9938718662952647 + }, + "opus100": { + "u": 0.6732171156893819, + "t": 0.7208894090111176, + "punct": 0.9150513112884834 + }, + "ud": { + "u": 0.9696323921150773, + "t": 0.9032627361190613, + "punct": 0.9278466741826381 + }, + "ted2020-corrupted-asr": { + "u": 0.5762032085561497, + "t": 0.6753057422855754, + "punct": 0.7587278376896364 + } + }, + "km": { + "ersatz": { + "u": 0.7593090211132438, + "t": 0.9193508114856429, + "punct": 0.9172970247100354 + }, + "opus100": { + "u": 0.7048799380325329, + "t": 0.6950113378684807, + "punct": 0.7902097902097901 + }, + "ted2020-corrupted-asr": { + "u": 0.4942528735632185, + "t": 0.641904761904762, + "punct": 0.722457627118644 + } + }, + "kn": { + "opus100": { + "u": 0.7003405221339387, + "t": 0.6695869837296621, + "punct": 0.7817258883248731 + }, + "ted2020-corrupted-asr": { + "u": 0.28916827852998067, + "t": 0.2999656002751978, + "punct": 0.3940795559666975 + } + }, + "ko": { + "opus100": { + "u": 0.5275938189845475, + "t": 0.7095128793675083, + "punct": 0.8076033907012586 + }, + "ud": { + "u": 0.9941972920696326, + "t": 0.9951597289448209, + "punct": 0.9992709599027946 + }, + "ted2020-corrupted-asr": { + "u": 0.6100285171102662, + "t": 0.7244737668865849, + "punct": 0.7858355566335193 + } + }, + "ku": { + "opus100": { + "u": 0.7835912552198477, + "t": 0.6943291839557398, + "punct": 0.8697788697788698 + }, + "ted2020-corrupted-asr": { + "u": 0.25747833379927315, + "t": 0.359977364363019, + "punct": 0.45414806975567107 + } + }, + "ky": { + "opus100": { + "u": 0.8235662801629584, + "t": 0.8202354438434617, + "punct": 0.9137022397891964 + }, + "ted2020-corrupted-asr": { + "u": 0.49650349650349657, + "t": 0.6233766233766234, + "punct": 0.7078947368421052 + } + }, + "la": { + "ud": { + "u": 0.8925714285714286, + "t": 0.9174498348996698, + "punct": 0.9732733527388198 + }, + "ted2020-corrupted-asr": { + "u": 0.15384615384615383, + "t": 0.26865671641791045, + "punct": 0.18181818181818182 + } + }, + "lt": { + "ersatz": { + "u": 0.971776425013835, + "t": 0.96578799775659, + "punct": 0.9905292479108635 + }, + "opus100": { + "u": 0.780189959294437, + "t": 0.8374999999999999, + "punct": 0.9123098201936377 + }, + "ud": { + "u": 0.9831053901850363, + "t": 0.9822866344605475, + "punct": 0.998371335504886 + }, + "ted2020-corrupted-asr": { + "u": 0.43942694923087083, + "t": 0.5307322730284957, + "punct": 0.6560718771133224 + } + }, + "lv": { + "ersatz": { + "u": 0.9703663793103448, + "t": 0.9725020419275796, + "punct": 0.9961496149614962 + }, + "opus100": { + "u": 0.7830639653994991, + "t": 0.8658823529411765, + "punct": 0.923202614379085 + }, + "ud": { + "u": 0.9671943106217022, + "t": 0.9692272623660817, + "punct": 0.991963260619977 + }, + "ted2020-corrupted-asr": { + "u": 0.467068976704951, + "t": 0.5565757875406131, + "punct": 0.6729499521193487 + } + }, + "mg": { + "opus100": { + "u": 0.9048976418761336, + "t": 0.9186754966887417, + "punct": 0.9611248966087677 + }, + "ted2020-corrupted-asr": { + "u": 0.0761904761904762, + "t": 0.4716417910447761, + "punct": 0.5833333333333334 + } + }, + "mk": { + "opus100": { + "u": 0.9245969838793551, + "t": 0.9262444618191296, + "punct": 0.9580193756727663 + }, + "ted2020-corrupted-asr": { + "u": 0.20821359043292856, + "t": 0.5386527025827639, + "punct": 0.6697060210658701 + } + }, + "ml": { + "opus100": { + "u": 0.7981859410430839, + "t": 0.798394034987095, + "punct": 0.8708565367276585 + }, + "ted2020-corrupted-asr": { + "u": 0.2952045754509459, + "t": 0.35843933114191795, + "punct": 0.4712310056342838 + } + }, + "mn": { + "opus100": { + "u": 0.7723640921196929, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.5283214709371292, + "t": 0.7422816743807538, + "punct": 0.8396247487156578 + } + }, + "mr": { + "opus100": { + "u": 0.9025251153950584, + "t": 0.9067471201316512, + "punct": 0.9273561976775588 + }, + "ud": { + "u": 0.8837209302325582, + "t": 0.9111111111111111, + "punct": 1.0 + }, + "ted2020-corrupted-asr": { + "u": 0.11707585196042505, + "t": 0.31434820647419076, + "punct": 0.41752224503764546 + } + }, + "ms": { + "opus100": { + "u": 0.8747300215982723, + "t": 0.8796068796068797, + "punct": 0.9362286970863113 + }, + "ted2020-corrupted-asr": { + "u": 0.510618141627852, + "t": 0.5217213950642464, + "punct": 0.6338497176777182 + } + }, + "mt": { + "opus100": { + "u": 0.6104012956631275, + "t": 0.8176736758051637, + "punct": 0.8906334596643206 + }, + "ud": { + "u": 0.8989473684210526, + "t": 0.8898488120950325, + "punct": 0.9577464788732396 + }, + "ted2020-corrupted-asr": { + "u": 0.09999999999999999, + "t": 0.42914979757085014, + "punct": 0.47058823529411764 + } + }, + "my": { + "opus100": { + "u": 0.6836518046709129, + "t": 0.7633461750137589, + "punct": 0.8305978898007034 + }, + "ted2020-corrupted-asr": { + "u": 0.9085672332975661, + "t": 0.9168209036472509, + "punct": 0.9538891997761612 + } + }, + "ne": { + "opus100": { + "u": 0.7015921931176169, + "t": 0.6907857546636519, + "punct": 0.7321002386634845 + }, + "ted2020-corrupted-asr": { + "u": 0.45769933049300066, + "t": 0.532342306147047, + "punct": 0.6484061393152303 + } + }, + "nl": { + "opus100": { + "u": 0.9198751300728408, + "t": null, + "punct": null + }, + "ud": { + "u": 0.9351851851851852, + "t": 0.929090909090909, + "punct": 0.9574074074074074 + }, + "ted2020-corrupted-asr": { + "u": 0.47125380100417225, + "t": 0.6434855859228753, + "punct": 0.763900256452229 + } + }, + "no": { + "opus100": { + "u": 0.9445486204125368, + "t": 0.9468313641245971, + "punct": 0.9641304347826086 + }, + "ud": { + "u": 0.9797219003476245, + "t": 0.9856897538637664, + "punct": 0.9931271477663232 + } + }, + "pa": { + "opus100": { + "u": 0.5881188118811881, + "t": 0.6358042777615002, + "punct": 0.7651006711409395 + }, + "ted2020-corrupted-asr": { + "u": 0.09375, + "t": 0.398849472674976, + "punct": 0.5184243964421855 + } + }, + "pl": { + "ersatz": { + "u": 0.9484193011647254, + "t": 0.9356125356125357, + "punct": 0.9494079655543596 + }, + "opus100": { + "u": 0.9216978644872132, + "t": 0.929125434608184, + "punct": 0.9571351058057516 + }, + "ud": { + "u": 0.9493640508759299, + "t": 0.9524728588661039, + "punct": 0.9939637826961771 + }, + "ted2020-corrupted-asr": { + "u": 0.2987366856576666, + "t": 0.580378565715809, + "punct": 0.6912273761250124 + } + }, + "ps": { + "ersatz": { + "u": 0.8334212840809145, + "t": 0.9122600861731296, + "punct": 0.9698471705906649 + }, + "opus100": { + "u": 0.4366505918456817, + "t": 0.6713153724247226, + "punct": 0.7651467832604621 + }, + "ted2020-corrupted-asr": { + "u": 0.3403205918618989, + "t": 0.4737889847378899, + "punct": 0.6449814126394051 + } + }, + "pt": { + "opus100": { + "u": 0.9007476153647848, + "t": 0.9166666666666667, + "punct": 0.9543859649122808 + }, + "ud": { + "u": 0.9620132953466287, + "t": 0.9625769777356703, + "punct": 0.9809160305343512 + }, + "ted2020-corrupted-asr": { + "u": 0.1035872235872236, + "t": 0.5586870306303267, + "punct": 0.6948844455985458 + }, + "legal-all-laws": { + "u": 0.5712158725706091, + "t": 0.5712158725706091, + "punct": 0.6336124211385095, + "acc_u": 0.034482758620689655, + "acc_t": 0.034482758620689655, + "acc_punct": 0.0 + }, + "legal-all-laws-corrupted-asr": { + "u": 0.06716379095946634, + "t": 0.4976849104242222, + "punct": 0.3858050214448053, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements": { + "u": 0.7980141306454269, + "t": 0.7975908696958501, + "punct": 0.7883600282238804, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + }, + "legal-all-judgements-corrupted-asr": { + "u": 0.10894552779957145, + "t": 0.39820489221073496, + "punct": 0.19290093639231196, + "acc_u": 0.0, + "acc_t": 0.0, + "acc_punct": 0.0 + } + }, + "ro": { + "ersatz": { + "u": 0.9775219298245613, + "t": 0.9671809256661992, + "punct": 0.9941844364441984 + }, + "opus100": { + "u": 0.8922216573462125, + "t": 0.8947368421052632, + "punct": 0.9681318681318682 + }, + "ud": { + "u": 0.8013553578991953, + "t": 0.898330804248862, + "punct": 0.9952254641909813 + }, + "ted2020-corrupted-asr": { + "u": 0.3553284455306228, + "t": 0.527240625525475, + "punct": 0.6702008359669691 + } + }, + "ru": { + "ersatz": { + "u": 0.9791314156796389, + "t": 0.9815126050420168, + "punct": 0.9949409780775715 + }, + "opus100": { + "u": 0.81915654038599, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8553386911595866, + "t": 0.8710059171597633, + "punct": 0.933083176985616 + }, + "ted2020-corrupted-asr": { + "u": 0.2738208567719602, + "t": 0.5700807402703438, + "punct": 0.665567216391804 + } + }, + "si": { + "opus100": { + "u": 0.7989333333333333, + "t": 0.8027586206896551, + "punct": 0.8632502055357631 + }, + "ted2020-corrupted-asr": { + "u": 0.33921302578018997, + "t": 0.4184008762322015, + "punct": 0.593453009503696 + } + }, + "sk": { + "opus100": { + "u": 0.9085271317829458, + "t": 0.9279399946423788, + "punct": 0.9565217391304348 + }, + "ud": { + "u": 0.9602094240837697, + "t": 0.9566137566137566, + "punct": 0.986344537815126 + }, + "ted2020-corrupted-asr": { + "u": 0.48225806451612907, + "t": 0.5522280276963595, + "punct": 0.6943971960208237 + } + }, + "sl": { + "opus100": { + "u": 0.918834547346514, + "t": 0.9282321899736148, + "punct": 0.9530201342281879 + }, + "ud": { + "u": 0.9606837606837608, + "t": 0.9618189618189619, + "punct": 0.995227765726681 + }, + "ted2020-corrupted-asr": { + "u": 0.3894887865287322, + "t": 0.5667157864714552, + "punct": 0.7123142250530785 + }, + "short-sequences": { + "u": 0.8213697233707583, + "t": 0.8057043135596696, + "punct": 0.9162956748367306, + "acc_u": 0.42265395894428154, + "acc_t": 0.374266862170088, + "acc_punct": 0.7049120234604106 + }, + "short-sequences-corrupted-asr": { + "u": 0.6223860013715589, + "t": 0.5667051724020982, + "punct": 0.7019311272793678, + "acc_u": 0.11290322580645161, + "acc_t": 0.0747800586510264, + "acc_punct": 0.24266862170087977 + } + }, + "sq": { + "opus100": { + "u": 0.8943425471454405, + "t": 0.9105951427808914, + "punct": 0.9574700109051255 + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.20776841333821913, + "t": 0.5315728015808857, + "punct": 0.6600367957834021 + } + }, + "sr": { + "opus100": { + "u": 0.9414259210177577, + "t": 0.9451836083022885, + "punct": 0.9622795115332429 + }, + "ud": { + "u": 0.9870689655172414, + "t": 0.9914893617021276, + "punct": 1.0 + }, + "ted2020-corrupted-asr": { + "u": 0.45393911378194546, + "t": 0.5387238998419434, + "punct": 0.6857058592213922 + }, + "short-sequences": { + "u": 0.9016602032227032, + "t": 0.9036443302068302, + "punct": 0.9440504518629519, + "acc_u": 0.6197916666666666, + "acc_t": 0.6197916666666666, + "acc_punct": 0.7864583333333334 + }, + "short-sequences-corrupted-asr": { + "u": 0.596129658399879, + "t": 0.5742039378141351, + "punct": 0.6549291275853776, + "acc_u": 0.08333333333333333, + "acc_t": 0.07291666666666667, + "acc_punct": 0.14583333333333334 + } + }, + "sv": { + "opus100": { + "u": 0.9130322580645162, + "t": 0.9279112754158965, + "punct": 0.9570154095701541 + }, + "ud": { + "u": 0.9531737773152966, + "t": 0.9570230607966458, + "punct": 0.9611081513052745 + }, + "ted2020-corrupted-asr": { + "u": 0.39225539462015957, + "t": 0.5539619092405361, + "punct": 0.7030576862456657 + } + }, + "ta": { + "ersatz": { + "u": 0.9446494464944649, + "t": 0.950711938663746, + "punct": 0.9834801762114537 + }, + "opus100": { + "u": 0.6666666666666666, + "t": 0.6745939675174014, + "punct": 0.7488235294117648 + }, + "ud": { + "u": 0.972972972972973, + "t": 0.972972972972973, + "punct": 1.0 + }, + "ted2020-corrupted-asr": { + "u": 0.29433189164580015, + "t": 0.3391438092796719, + "punct": 0.4521066208082546 + } + }, + "te": { + "opus100": { + "u": 0.7750924083025307, + "t": 0.7740303541315345, + "punct": 0.8430858806404657 + }, + "ted2020-corrupted-asr": { + "u": 0.2707676130389064, + "t": 0.38472499287546313, + "punct": 0.5271426077849538 + } + }, + "tg": { + "opus100": { + "u": 0.8034310221586848, + "t": 0.8318632855567807, + "punct": 0.905982905982906 + }, + "ted2020-corrupted-asr": { + "u": 0.5426695842450766, + "t": 0.6146788990825688, + "punct": 0.7262357414448669 + } + }, + "th": { + "opus100": { + "u": 0.6701208981001727, + "t": 0.7041711229946525, + "punct": 0.7174515235457065 + }, + "ud": { + "u": 0.6877165960723912, + "t": null, + "punct": null + }, + "ted2020-corrupted-asr": { + "u": 0.46463398253861643, + "t": 0.5600166944908179, + "punct": 0.6475417482974158 + } + }, + "tr": { + "ersatz": { + "u": 0.9400393771254699, + "t": 0.9390706924606762, + "punct": 0.9842027920646583 + }, + "opus100": { + "u": 0.9307568438003221, + "t": 0.9312197743148846, + "punct": 0.9539634976845546 + }, + "ud": { + "u": 0.9598796389167503, + "t": 0.9593577521324635, + "punct": 0.9852866565195332 + }, + "ted2020-corrupted-asr": { + "u": 0.10841683366733465, + "t": 0.5902327355971004, + "punct": 0.7356178608515056 + } + }, + "uk": { + "opus100": { + "u": 0.8874647526275313, + "t": 0.8898632963631674, + "punct": 0.941744966442953 + }, + "ud": { + "u": 0.9243076923076923, + "t": 0.9243076923076923, + "punct": 0.981549815498155 + }, + "ted2020-corrupted-asr": { + "u": 0.49236894492368943, + "t": 0.5412828386216308, + "punct": 0.6627970978233675 + } + }, + "ur": { + "opus100": { + "u": 0.5366715758468336, + "t": 0.5084395452979676, + "punct": 0.6813585688358827 + }, + "ud": { + "u": 0.9443339960238569, + "t": 0.9692622950819672, + "punct": 0.9927007299270073 + }, + "ted2020-corrupted-asr": { + "u": 0.39553241518307014, + "t": 0.5146301156799845, + "punct": 0.6585528307599152 + } + }, + "uz": { + "opus100": { + "u": 0.7787900023359029, + "t": 0.7925012840267076, + "punct": 0.8557614826752619 + }, + "ted2020-corrupted-asr": { + "u": 0.27576335877862596, + "t": 0.6373460668509675, + "punct": 0.7389756231169542 + } + }, + "vi": { + "opus100": { + "u": 0.9040559440559439, + "t": 0.9079059223576085, + "punct": 0.9485049833887043 + }, + "ud": { + "u": 0.8877419354838711, + "t": 0.9419795221843005, + "punct": 0.9951489951489952 + }, + "ted2020-corrupted-asr": { + "u": 0.16596658265658548, + "t": 0.4588348781613052, + "punct": 0.5926523207176334 + } + }, + "xh": { + "opus100": { + "u": 0.7970721857647654, + "t": 0.8078209416002058, + "punct": 0.8934590117109398 + } + }, + "yi": { + "opus100": { + "u": 0.5990384615384615, + "t": 0.6366972477064221, + "punct": 0.8064814814814815 + } + }, + "yo": { + "opus100": { + "u": 0.7545601251894959, + "t": null, + "punct": null + }, + "ud": { + "u": 0.8519637462235651, + "t": null, + "punct": null + } + }, + "zh": { + "ersatz": { + "u": 0.9230769230769231, + "t": 0.9307253463732681, + "punct": 0.9729434271658924 + }, + "opus100": { + "u": 0.8162066940692895, + "t": 0.7791286727456941, + "punct": 0.8905597326649958 + }, + "ud": { + "u": 0.9767441860465117, + "t": 0.9790518191841234, + "punct": 0.9977827050997783 + }, + "ted2020-corrupted-asr": { + "u": 0.49388712108524535, + "t": 0.5419683036587752, + "punct": 0.6539175895989543 + } + }, + "zu": { + "opus100": { + "u": 0.5532579008973859, + "t": 0.8206739006282125, + "punct": 0.908927501497903 + } + }, + "tr-de_TR": { + "code-switching": { + "u": 0.9697783747481531, + "t": 0.9868875086266391, + "punct": 0.9979238754325259 + }, + "code-switching-corrupted-asr": { + "u": 0.27635497319833235, + "t": 0.30334637114298135, + "punct": 0.37844611528822053 + } + }, + "tr-de_DE": { + "code-switching": { + "u": 0.9513157894736841, + "t": 0.9826989619377162, + "punct": 0.9965445749827229 + }, + "code-switching-corrupted-asr": { + "u": 0.2916666666666667, + "t": 0.29324266893327666, + "punct": 0.35659760087241005 + } + }, + "es-en_ES": { + "code-switching": { + "u": 0.8537869582827056, + "t": 0.8618504435994931, + "punct": 0.9233419465977607 + }, + "code-switching-corrupted-asr": { + "u": 0.17269076305220885, + "t": 0.4424418604651163, + "punct": 0.5792592592592591 + } + }, + "es-en_EN": { + "code-switching": { + "u": 0.9063955950868277, + "t": 0.9062634989200864, + "punct": 0.9282006920415224 + }, + "code-switching-corrupted-asr": { + "u": 0.07674236491777603, + "t": 0.46080436264485347, + "punct": 0.5683586513523528 + } + }, + "vi-en_VI": { + "code-switching": { + "u": 0.25857223159078135, + "t": 0.4409182984469953, + "punct": 0.5538345296562145 + }, + "code-switching-corrupted-asr": { + "u": 0.31374606505771246, + "t": 0.4401515151515151, + "punct": 0.558983666061706 + } + }, + "vi-en_EN": { + "code-switching": { + "u": 0.023622047244094488, + "t": 0.2845823704192803, + "punct": 0.42101284958427815 + }, + "code-switching-corrupted-asr": { + "u": 0.012924071082390954, + "t": 0.3136553369111509, + "punct": 0.4357142857142857 + } + }, + "en-de_EN": { + "code-switching": { + "u": 0.6532467532467532, + "t": 0.774518021793797, + "punct": 0.9183098591549296 + }, + "code-switching-corrupted-asr": { + "u": 0.1956043956043956, + "t": 0.2918681318681319, + "punct": 0.48626817447495957 + }, + "short-sequences": { + "u": 0.8411016235738904, + "t": 0.8775213945057733, + "punct": 0.9657215606921925, + "acc_u": 0.40124740124740127, + "acc_t": 0.4864864864864865, + "acc_punct": 0.8108108108108109 + }, + "short-sequences-corrupted-asr": { + "u": 0.5195795663942843, + "t": 0.46945532408236545, + "punct": 0.6103908766997513, + "acc_u": 0.060291060291060294, + "acc_t": 0.02702702702702703, + "acc_punct": 0.07276507276507277 + } + }, + "en-de_DE": { + "code-switching": { + "u": 0.6601307189542485, + "t": 0.7619821283509342, + "punct": 0.9102447869446963 + }, + "code-switching-corrupted-asr": { + "u": 0.34619002822201317, + "t": 0.38920276208411797, + "punct": 0.5370517928286852 + }, + "short-sequences": { + "u": 0.8372675563041322, + "t": 0.8643415065378898, + "punct": 0.9643078644314346, + "acc_u": 0.3700623700623701, + "acc_t": 0.4573804573804574, + "acc_punct": 0.814968814968815 + }, + "short-sequences-corrupted-asr": { + "u": 0.5726103933018627, + "t": 0.5434060489299808, + "punct": 0.6658144438012198, + "acc_u": 0.07068607068607069, + "acc_t": 0.04573804573804574, + "acc_punct": 0.12474012474012475 + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/command-r.json b/wtpsplit/evaluation/evaluation_results/short/command-r.json new file mode 100644 index 00000000..c3f67d92 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/command-r.json @@ -0,0 +1,1884 @@ +{ + "af": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.742041958041959, + "f1_success": 0.742041958041959, + "recall": 0.816923076923077, + "recall_success": 0.816923076923077, + "precision": 0.7184786324786321, + "precision_success": 0.7184786324786321, + "correct_pairwise": 0.3446153846153846, + "correct_pairwise_success": 0.3446153846153846, + "hallucination_rate": 0.00764430733741661, + "hallucination_rate_success": 0.00764430733741661, + "deletion_rate": 0.004539096958915308, + "deletion_rate_success": 0.004539096958915308 + } + }, + "ersatz": { + "command-r": {} + } + }, + "am": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7028645833333337, + "f1_success": 0.7028645833333337, + "recall": 0.5859375, + "recall_success": 0.5859375, + "precision": 0.9498697916666666, + "precision_success": 0.9498697916666666, + "correct_pairwise": 0.140625, + "correct_pairwise_success": 0.140625, + "hallucination_rate": 0.22776179957560075, + "hallucination_rate_success": 0.22776179957560075, + "deletion_rate": 0.000998149633337706, + "deletion_rate_success": 0.000998149633337706 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ar": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7364777964519267, + "f1_success": 0.7364777964519267, + "recall": 0.6774, + "recall_success": 0.6774, + "precision": 0.8922212987012994, + "precision_success": 0.8922212987012994, + "correct_pairwise": 0.254, + "correct_pairwise_success": 0.254, + "hallucination_rate": 0.028052573260608688, + "hallucination_rate_success": 0.028052573260608688, + "deletion_rate": 0.004170630067201417, + "deletion_rate_success": 0.004170630067201417 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8997340425531926, + "f1_success": 0.8997340425531926, + "recall": 0.8882978723404256, + "recall_success": 0.8882978723404256, + "precision": 0.9485815602836883, + "precision_success": 0.9485815602836883, + "correct_pairwise": 0.6861702127659575, + "correct_pairwise_success": 0.6861702127659575, + "hallucination_rate": 0.013093681113866811, + "hallucination_rate_success": 0.013093681113866811, + "deletion_rate": 0.0062952431486673725, + "deletion_rate_success": 0.0062952431486673725 + } + } + }, + "az": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7184989387855792, + "f1_success": 0.7184989387855792, + "recall": 0.6734633569739953, + "recall_success": 0.6734633569739953, + "precision": 0.8577075124770172, + "precision_success": 0.8577075124770172, + "correct_pairwise": 0.22754137115839243, + "correct_pairwise_success": 0.22754137115839243, + "hallucination_rate": 0.1557517784699498, + "hallucination_rate_success": 0.1557517784699498, + "deletion_rate": 0.015544618649329984, + "deletion_rate_success": 0.015544618649329984 + } + }, + "ersatz": { + "command-r": {} + } + }, + "be": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.699917620167622, + "f1_success": 0.699917620167622, + "recall": 0.6502271252433485, + "recall_success": 0.6502271252433485, + "precision": 0.8284188921866898, + "precision_success": 0.8284188921866898, + "correct_pairwise": 0.23750811161583388, + "correct_pairwise_success": 0.23750811161583388, + "hallucination_rate": 0.04224054782250744, + "hallucination_rate_success": 0.04224054782250744, + "deletion_rate": 0.000725819717417133, + "deletion_rate_success": 0.000725819717417133 + } + }, + "ersatz": { + "command-r": {} + } + }, + "bg": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7194126007326134, + "f1_success": 0.7194126007326134, + "recall": 0.6442, + "recall_success": 0.6442, + "precision": 0.8904727272727274, + "precision_success": 0.8904727272727274, + "correct_pairwise": 0.2336, + "correct_pairwise_success": 0.2336, + "hallucination_rate": 0.02325590683961359, + "hallucination_rate_success": 0.02325590683961359, + "deletion_rate": 0.0018253831670905594, + "deletion_rate_success": 0.0018253831670905594 + } + }, + "ersatz": { + "command-r": {} + } + }, + "bn": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6657179487179382, + "f1_success": 0.6657179487179382, + "recall": 0.5053846153846154, + "recall_success": 0.5053846153846154, + "precision": 0.9882051282051281, + "precision_success": 0.9882051282051281, + "correct_pairwise": 0.006153846153846154, + "correct_pairwise_success": 0.006153846153846154, + "hallucination_rate": 0.00464046413817987, + "hallucination_rate_success": 0.00464046413817987, + "deletion_rate": 0.7237476183158241, + "deletion_rate_success": 0.7237476183158241 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ca": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7460609220019793, + "f1_success": 0.7460609220019793, + "recall": 0.7852, + "recall_success": 0.7852, + "precision": 0.7804090849673238, + "precision_success": 0.7804090849673238, + "correct_pairwise": 0.3104, + "correct_pairwise_success": 0.3104, + "hallucination_rate": 0.02332136398923648, + "hallucination_rate_success": 0.02332136398923648, + "deletion_rate": 0.008175682469222541, + "deletion_rate_success": 0.008175682469222541 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ceb": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6384353741496599, + "f1_success": 0.6384353741496599, + "recall": 0.6785714285714286, + "recall_success": 0.6785714285714286, + "precision": 0.6357142857142858, + "precision_success": 0.6357142857142858, + "correct_pairwise": 0.21428571428571427, + "correct_pairwise_success": 0.21428571428571427, + "hallucination_rate": 0.0036815730628342587, + "hallucination_rate_success": 0.0036815730628342587, + "deletion_rate": 0.0052742018792684125, + "deletion_rate_success": 0.0052742018792684125 + } + }, + "ersatz": { + "command-r": {} + } + }, + "cs": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7791565914787013, + "f1_success": 0.7791565914787013, + "recall": 0.7916, + "recall_success": 0.7916, + "precision": 0.8346138257408258, + "precision_success": 0.8346138257408258, + "correct_pairwise": 0.384, + "correct_pairwise_success": 0.384, + "hallucination_rate": 0.026411217300974118, + "hallucination_rate_success": 0.026411217300974118, + "deletion_rate": 0.00724844224249262, + "deletion_rate_success": 0.00724844224249262 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9236882716049395, + "f1_success": 0.9236882716049395, + "recall": 0.9293981481481481, + "recall_success": 0.9293981481481481, + "precision": 0.9375000000000002, + "precision_success": 0.9375000000000002, + "correct_pairwise": 0.7708333333333334, + "correct_pairwise_success": 0.7708333333333334, + "hallucination_rate": 0.008082900242980022, + "hallucination_rate_success": 0.008082900242980022, + "deletion_rate": 0.010235403370898902, + "deletion_rate_success": 0.010235403370898902 + } + } + }, + "da": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7528985037185054, + "f1_success": 0.7528985037185054, + "recall": 0.8214, + "recall_success": 0.8214, + "precision": 0.7473885137085179, + "precision_success": 0.7473885137085179, + "correct_pairwise": 0.334, + "correct_pairwise_success": 0.334, + "hallucination_rate": 0.012632197566401758, + "hallucination_rate_success": 0.012632197566401758, + "deletion_rate": 0.005261477363069736, + "deletion_rate_success": 0.005261477363069736 + } + }, + "ersatz": { + "command-r": {} + } + }, + "de": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7993616816412138, + "f1_success": 0.8006427099771773, + "recall": 0.8284, + "recall_success": 0.8297275641025641, + "precision": 0.8352583193277348, + "precision_success": 0.8365968743266574, + "correct_pairwise": 0.42, + "correct_pairwise_success": 0.4206730769230769, + "hallucination_rate": 0.018907751187086045, + "hallucination_rate_success": 0.01893805207039868, + "deletion_rate": 0.007735512117456042, + "deletion_rate_success": 0.007747908771490427 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9347929395790912, + "f1_success": 0.9386162235855496, + "recall": 0.9439918533604889, + "recall_success": 0.9478527607361963, + "precision": 0.9416157501697218, + "precision_success": 0.9454669393319701, + "correct_pairwise": 0.8065173116089613, + "correct_pairwise_success": 0.8098159509202454, + "hallucination_rate": 0.0079310865713006, + "hallucination_rate_success": 0.007963524553187308, + "deletion_rate": 0.008245369578313773, + "deletion_rate_success": 0.008279092971272111 + } + } + }, + "el": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7551435497835619, + "f1_success": 0.7551435497835619, + "recall": 0.6912, + "recall_success": 0.6912, + "precision": 0.9051729166666667, + "precision_success": 0.9051729166666667, + "correct_pairwise": 0.3212, + "correct_pairwise_success": 0.3212, + "hallucination_rate": 0.020385946126547087, + "hallucination_rate_success": 0.020385946126547087, + "deletion_rate": 0.002913229488099663, + "deletion_rate_success": 0.002913229488099663 + } + }, + "ersatz": { + "command-r": {} + } + }, + "en": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7685310606060592, + "f1_success": 0.7685310606060592, + "recall": 0.8672, + "recall_success": 0.8672, + "precision": 0.7326607448107497, + "precision_success": 0.7326607448107497, + "correct_pairwise": 0.3576, + "correct_pairwise_success": 0.3576, + "hallucination_rate": 0.008963147514711266, + "hallucination_rate_success": 0.008963147514711266, + "deletion_rate": 0.006797345197943549, + "deletion_rate_success": 0.006797345197943549 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8908058481267174, + "f1_success": 0.8908058481267174, + "recall": 0.9356178608515057, + "recall_success": 0.9356178608515057, + "precision": 0.8731753449043209, + "precision_success": 0.8731753449043209, + "correct_pairwise": 0.6531671858774662, + "correct_pairwise_success": 0.6531671858774662, + "hallucination_rate": 0.007396126305900879, + "hallucination_rate_success": 0.007396126305900879, + "deletion_rate": 0.012810447146721462, + "deletion_rate_success": 0.012810447146721462 + } + } + }, + "eo": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7150032820145559, + "f1_success": 0.7150032820145559, + "recall": 0.7772556390977443, + "recall_success": 0.7772556390977443, + "precision": 0.7098385845566292, + "precision_success": 0.7098385845566292, + "correct_pairwise": 0.2844611528822055, + "correct_pairwise_success": 0.2844611528822055, + "hallucination_rate": 0.02233501910595867, + "hallucination_rate_success": 0.02233501910595867, + "deletion_rate": 0.0067078172838749475, + "deletion_rate_success": 0.0067078172838749475 + } + }, + "ersatz": { + "command-r": {} + } + }, + "es": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7668192457542519, + "f1_success": 0.7668192457542519, + "recall": 0.7702, + "recall_success": 0.7702, + "precision": 0.8249011399711417, + "precision_success": 0.8249011399711417, + "correct_pairwise": 0.3852, + "correct_pairwise_success": 0.3852, + "hallucination_rate": 0.014476972755433096, + "hallucination_rate_success": 0.014476972755433096, + "deletion_rate": 0.005569953840830867, + "deletion_rate_success": 0.005569953840830867 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9234240954867573, + "f1_success": 0.9234240954867573, + "recall": 0.9425587467362925, + "recall_success": 0.9425587467362925, + "precision": 0.9224978241949519, + "precision_success": 0.9224978241949519, + "correct_pairwise": 0.7689295039164491, + "correct_pairwise_success": 0.7689295039164491, + "hallucination_rate": 0.0027359771404764505, + "hallucination_rate_success": 0.0027359771404764505, + "deletion_rate": 0.005765641686468666, + "deletion_rate_success": 0.005765641686468666 + } + } + }, + "et": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7295228460428468, + "f1_success": 0.7295228460428468, + "recall": 0.7986, + "recall_success": 0.7986, + "precision": 0.7183071861471887, + "precision_success": 0.7183071861471887, + "correct_pairwise": 0.308, + "correct_pairwise_success": 0.308, + "hallucination_rate": 0.014705376066020159, + "hallucination_rate_success": 0.014705376066020159, + "deletion_rate": 0.006314660185543035, + "deletion_rate_success": 0.006314660185543035 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9020502645502658, + "f1_success": 0.9020502645502658, + "recall": 0.9444444444444444, + "recall_success": 0.9444444444444444, + "precision": 0.8820767195767204, + "precision_success": 0.8820767195767204, + "correct_pairwise": 0.6845238095238095, + "correct_pairwise_success": 0.6845238095238095, + "hallucination_rate": 0.004113101392425944, + "hallucination_rate_success": 0.004113101392425944, + "deletion_rate": 0.006403865957329934, + "deletion_rate_success": 0.006403865957329934 + } + } + }, + "eu": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6353617298173687, + "f1_success": 0.6353617298173687, + "recall": 0.6942204301075269, + "recall_success": 0.6942204301075269, + "precision": 0.6323572708653354, + "precision_success": 0.6323572708653354, + "correct_pairwise": 0.1875, + "correct_pairwise_success": 0.1875, + "hallucination_rate": 0.020412552565926265, + "hallucination_rate_success": 0.020412552565926265, + "deletion_rate": 0.006377542182572841, + "deletion_rate_success": 0.006377542182572841 + } + }, + "ersatz": { + "command-r": {} + } + }, + "fa": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7372498989899101, + "f1_success": 0.7372498989899101, + "recall": 0.6854, + "recall_success": 0.6854, + "precision": 0.8883647130647143, + "precision_success": 0.8883647130647143, + "correct_pairwise": 0.2548, + "correct_pairwise_success": 0.2548, + "hallucination_rate": 0.027822346174447347, + "hallucination_rate_success": 0.027822346174447347, + "deletion_rate": 0.00824279931318209, + "deletion_rate_success": 0.00824279931318209 + } + }, + "ersatz": { + "command-r": {} + } + }, + "fi": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7232425574425572, + "f1_success": 0.7232425574425572, + "recall": 0.807, + "recall_success": 0.807, + "precision": 0.7020209812409861, + "precision_success": 0.7020209812409861, + "correct_pairwise": 0.2916, + "correct_pairwise_success": 0.2916, + "hallucination_rate": 0.011860393674153917, + "hallucination_rate_success": 0.011860393674153917, + "deletion_rate": 0.008258249462886724, + "deletion_rate_success": 0.008258249462886724 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8760377898654464, + "f1_success": 0.8760377898654464, + "recall": 0.9208416833667334, + "recall_success": 0.9208416833667334, + "precision": 0.8589846359385443, + "precision_success": 0.8589846359385443, + "correct_pairwise": 0.6192384769539078, + "correct_pairwise_success": 0.6192384769539078, + "hallucination_rate": 0.004682319344580942, + "hallucination_rate_success": 0.004682319344580942, + "deletion_rate": 0.0038225048490608793, + "deletion_rate_success": 0.0038225048490608793 + } + } + }, + "fr": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7847123987124013, + "f1_success": 0.7847123987124013, + "recall": 0.8154, + "recall_success": 0.8154, + "precision": 0.8126774891774937, + "precision_success": 0.8126774891774937, + "correct_pairwise": 0.4056, + "correct_pairwise_success": 0.4056, + "hallucination_rate": 0.015507182226342382, + "hallucination_rate_success": 0.015507182226342382, + "deletion_rate": 0.005711007282383363, + "deletion_rate_success": 0.005711007282383363 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9304232804232814, + "f1_success": 0.9304232804232814, + "recall": 0.9456521739130435, + "recall_success": 0.9456521739130435, + "precision": 0.9351851851851852, + "precision_success": 0.9351851851851852, + "correct_pairwise": 0.785024154589372, + "correct_pairwise_success": 0.785024154589372, + "hallucination_rate": 0.010267809756027767, + "hallucination_rate_success": 0.010267809756027767, + "deletion_rate": 0.006628876047322683, + "deletion_rate_success": 0.006628876047322683 + } + } + }, + "ga": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6194444444444445, + "f1_success": 0.6194444444444445, + "recall": 0.7083333333333334, + "recall_success": 0.7083333333333334, + "precision": 0.5694444444444445, + "precision_success": 0.5694444444444445, + "correct_pairwise": 0.16666666666666666, + "correct_pairwise_success": 0.16666666666666666, + "hallucination_rate": 0.0014483893710922782, + "hallucination_rate_success": 0.0014483893710922782, + "deletion_rate": 0.0027100749079977185, + "deletion_rate_success": 0.0027100749079977185 + } + }, + "ersatz": { + "command-r": {} + } + }, + "gl": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.736336168524, + "f1_success": 0.736336168524, + "recall": 0.7446, + "recall_success": 0.7446, + "precision": 0.7951781240981258, + "precision_success": 0.7951781240981258, + "correct_pairwise": 0.3128, + "correct_pairwise_success": 0.3128, + "hallucination_rate": 0.017391706572183516, + "hallucination_rate_success": 0.017391706572183516, + "deletion_rate": 0.006156082223138892, + "deletion_rate_success": 0.006156082223138892 + } + }, + "ersatz": { + "command-r": {} + } + }, + "gu": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6539006494011582, + "f1_success": 0.6539006494011582, + "recall": 0.5235085945399394, + "recall_success": 0.5235085945399394, + "precision": 0.9311304055174118, + "precision_success": 0.9311304055174118, + "correct_pairwise": 0.03083923154701719, + "correct_pairwise_success": 0.03083923154701719, + "hallucination_rate": 0.2799918319585747, + "hallucination_rate_success": 0.2799918319585747, + "deletion_rate": 0.031546053863365967, + "deletion_rate_success": 0.031546053863365967 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9522309711286087, + "f1_success": 0.9522309711286087, + "recall": 0.9409448818897638, + "recall_success": 0.9409448818897638, + "precision": 0.979002624671916, + "precision_success": 0.979002624671916, + "correct_pairwise": 0.8661417322834646, + "correct_pairwise_success": 0.8661417322834646, + "hallucination_rate": 0.03463022630670735, + "hallucination_rate_success": 0.03463022630670735, + "deletion_rate": 0.0009174847593828401, + "deletion_rate_success": 0.0009174847593828401 + } + } + }, + "ha": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.48888888888888893, + "f1_success": 0.48888888888888893, + "recall": 0.5, + "recall_success": 0.5, + "precision": 0.5555555555555555, + "precision_success": 0.5555555555555555, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.003401360544217687, + "hallucination_rate_success": 0.003401360544217687, + "deletion_rate": 0.004877831282325665, + "deletion_rate_success": 0.004877831282325665 + } + }, + "ersatz": { + "command-r": {} + } + }, + "he": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7255493831168944, + "f1_success": 0.7258397190044962, + "recall": 0.6698, + "recall_success": 0.6700680272108843, + "precision": 0.8755420071684601, + "precision_success": 0.8758923641141058, + "correct_pairwise": 0.2432, + "correct_pairwise_success": 0.24329731892757103, + "hallucination_rate": 0.027614270951214753, + "hallucination_rate_success": 0.02762532107964661, + "deletion_rate": 0.0051981056493222, + "deletion_rate_success": 0.005200185723611645 + } + }, + "ersatz": { + "command-r": {} + } + }, + "hi": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6740939682539837, + "f1_success": 0.6740939682539837, + "recall": 0.5582, + "recall_success": 0.5582, + "precision": 0.9294076190476189, + "precision_success": 0.9294076190476189, + "correct_pairwise": 0.0648, + "correct_pairwise_success": 0.0648, + "hallucination_rate": 0.10149824352252486, + "hallucination_rate_success": 0.10149824352252486, + "deletion_rate": 0.02705097548248903, + "deletion_rate_success": 0.02705097548248903 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9052380952380958, + "f1_success": 0.9052380952380958, + "recall": 0.8936507936507937, + "recall_success": 0.8936507936507937, + "precision": 0.955952380952381, + "precision_success": 0.955952380952381, + "correct_pairwise": 0.6904761904761905, + "correct_pairwise_success": 0.6904761904761905, + "hallucination_rate": 0.01276574230748174, + "hallucination_rate_success": 0.01276574230748174, + "deletion_rate": 0.0089262341996774, + "deletion_rate_success": 0.0089262341996774 + } + } + }, + "hu": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7013793739593764, + "f1_success": 0.7013793739593764, + "recall": 0.79, + "recall_success": 0.79, + "precision": 0.6875075953213491, + "precision_success": 0.6875075953213491, + "correct_pairwise": 0.2392, + "correct_pairwise_success": 0.2392, + "hallucination_rate": 0.016541440941938157, + "hallucination_rate_success": 0.016541440941938157, + "deletion_rate": 0.006869903339723245, + "deletion_rate_success": 0.006869903339723245 + } + }, + "ersatz": { + "command-r": {} + } + }, + "hy": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6727736507936671, + "f1_success": 0.6727736507936671, + "recall": 0.5508, + "recall_success": 0.5508, + "precision": 0.9357838095238098, + "precision_success": 0.9357838095238098, + "correct_pairwise": 0.0592, + "correct_pairwise_success": 0.0592, + "hallucination_rate": 0.19425600398323706, + "hallucination_rate_success": 0.19425600398323706, + "deletion_rate": 0.007170133734286391, + "deletion_rate_success": 0.007170133734286391 + } + }, + "ersatz": { + "command-r": {} + } + }, + "id": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7563737429595558, + "f1_success": 0.7563737429595558, + "recall": 0.749, + "recall_success": 0.749, + "precision": 0.8291076026272604, + "precision_success": 0.8291076026272604, + "correct_pairwise": 0.3484, + "correct_pairwise_success": 0.3484, + "hallucination_rate": 0.016661198118268557, + "hallucination_rate_success": 0.016661198118268557, + "deletion_rate": 0.007888062837788232, + "deletion_rate_success": 0.007888062837788232 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ig": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5809523809523809, + "f1_success": 0.5809523809523809, + "recall": 0.5769230769230769, + "recall_success": 0.5769230769230769, + "precision": 0.6403846153846153, + "precision_success": 0.6403846153846153, + "correct_pairwise": 0.07692307692307693, + "correct_pairwise_success": 0.07692307692307693, + "hallucination_rate": 0.0906959443924362, + "hallucination_rate_success": 0.0906959443924362, + "deletion_rate": 0.0035952571476571705, + "deletion_rate_success": 0.0035952571476571705 + } + }, + "ersatz": { + "command-r": {} + } + }, + "is": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7132679025808804, + "f1_success": 0.7132679025808804, + "recall": 0.7468193384223919, + "recall_success": 0.7468193384223919, + "precision": 0.7324427480916029, + "precision_success": 0.7324427480916029, + "correct_pairwise": 0.28498727735368956, + "correct_pairwise_success": 0.28498727735368956, + "hallucination_rate": 0.008732632199028067, + "hallucination_rate_success": 0.008732632199028067, + "deletion_rate": 0.006500438016680807, + "deletion_rate_success": 0.006500438016680807 + } + }, + "ersatz": { + "command-r": {} + } + }, + "it": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.793214245754248, + "f1_success": 0.793214245754248, + "recall": 0.823, + "recall_success": 0.823, + "precision": 0.816307330447335, + "precision_success": 0.816307330447335, + "correct_pairwise": 0.4372, + "correct_pairwise_success": 0.4372, + "hallucination_rate": 0.014720835163886037, + "hallucination_rate_success": 0.014720835163886037, + "deletion_rate": 0.005174152933756245, + "deletion_rate_success": 0.005174152933756245 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ja": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7110826617826723, + "f1_success": 0.7110826617826723, + "recall": 0.6726, + "recall_success": 0.6726, + "precision": 0.8559178354978377, + "precision_success": 0.8559178354978377, + "correct_pairwise": 0.1988, + "correct_pairwise_success": 0.1988, + "hallucination_rate": 0.03157197859726881, + "hallucination_rate_success": 0.03157197859726881, + "deletion_rate": 0.01523644791795989, + "deletion_rate_success": 0.01523644791795989 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8814143567874911, + "f1_success": 0.8814143567874911, + "recall": 0.8675373134328358, + "recall_success": 0.8675373134328358, + "precision": 0.9320273631840794, + "precision_success": 0.9320273631840794, + "correct_pairwise": 0.6716417910447762, + "correct_pairwise_success": 0.6716417910447762, + "hallucination_rate": 0.03579429198382165, + "hallucination_rate_success": 0.03579429198382165, + "deletion_rate": 0.011974912369885998, + "deletion_rate_success": 0.011974912369885998 + } + } + }, + "ka": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6738640870241034, + "f1_success": 0.6738640870241034, + "recall": 0.546, + "recall_success": 0.546, + "precision": 0.9474703607503608, + "precision_success": 0.9474703607503608, + "correct_pairwise": 0.0604, + "correct_pairwise_success": 0.0604, + "hallucination_rate": 0.11525471714402827, + "hallucination_rate_success": 0.11525471714402827, + "deletion_rate": 0.012309388173529414, + "deletion_rate_success": 0.012309388173529414 + } + }, + "ersatz": { + "command-r": {} + } + }, + "kk": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6891311669545672, + "f1_success": 0.6891311669545672, + "recall": 0.6101984941820671, + "recall_success": 0.6101984941820671, + "precision": 0.862025357713243, + "precision_success": 0.862025357713243, + "correct_pairwise": 0.18275154004106775, + "correct_pairwise_success": 0.18275154004106775, + "hallucination_rate": 0.19420110925118406, + "hallucination_rate_success": 0.19420110925118406, + "deletion_rate": 0.0016580625166938501, + "deletion_rate_success": 0.0016580625166938501 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9680000000000001, + "f1_success": 0.9680000000000001, + "recall": 0.97, + "recall_success": 0.97, + "precision": 0.9746666666666667, + "precision_success": 0.9746666666666667, + "correct_pairwise": 0.9, + "correct_pairwise_success": 0.9, + "hallucination_rate": 0.012349353434860384, + "hallucination_rate_success": 0.012349353434860384, + "deletion_rate": 0.0018139447176940137, + "deletion_rate_success": 0.0018139447176940137 + } + } + }, + "km": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5969208736126032, + "f1_success": 0.5969208736126032, + "recall": 0.5263157894736842, + "recall_success": 0.5263157894736842, + "precision": 0.7682957393483709, + "precision_success": 0.7682957393483709, + "correct_pairwise": 0.03759398496240601, + "correct_pairwise_success": 0.03759398496240601, + "hallucination_rate": 0.03213339071350462, + "hallucination_rate_success": 0.03213339071350462, + "deletion_rate": 0.17952670167219636, + "deletion_rate_success": 0.17952670167219636 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8268926553672339, + "f1_success": 0.8268926553672339, + "recall": 0.7813559322033898, + "recall_success": 0.7813559322033898, + "precision": 0.9412320730117341, + "precision_success": 0.9412320730117341, + "correct_pairwise": 0.5135593220338983, + "correct_pairwise_success": 0.5135593220338983, + "hallucination_rate": 0.007625671616095744, + "hallucination_rate_success": 0.007625671616095744, + "deletion_rate": 0.2144866736377925, + "deletion_rate_success": 0.2144866736377925 + } + } + }, + "kn": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6631701631701614, + "f1_success": 0.6631701631701614, + "recall": 0.5034965034965035, + "recall_success": 0.5034965034965035, + "precision": 0.9825174825174825, + "precision_success": 0.9825174825174825, + "correct_pairwise": 0.006993006993006993, + "correct_pairwise_success": 0.006993006993006993, + "hallucination_rate": 0.14203428180944586, + "hallucination_rate_success": 0.14203428180944586, + "deletion_rate": 0.2153945592367976, + "deletion_rate_success": 0.2153945592367976 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ko": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7600711111111256, + "f1_success": 0.7600711111111256, + "recall": 0.697, + "recall_success": 0.697, + "precision": 0.9259676190476205, + "precision_success": 0.9259676190476205, + "correct_pairwise": 0.2848, + "correct_pairwise_success": 0.2848, + "hallucination_rate": 0.045768893489036684, + "hallucination_rate_success": 0.045768893489036684, + "deletion_rate": 0.004235518239799405, + "deletion_rate_success": 0.004235518239799405 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ku": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6948139194139336, + "f1_success": 0.6948139194139336, + "recall": 0.6018, + "recall_success": 0.6018, + "precision": 0.903806666666667, + "precision_success": 0.903806666666667, + "correct_pairwise": 0.1496, + "correct_pairwise_success": 0.1496, + "hallucination_rate": 0.07526763814194673, + "hallucination_rate_success": 0.07526763814194673, + "deletion_rate": 0.0024521663354752686, + "deletion_rate_success": 0.0024521663354752686 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ky": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6895424836601305, + "f1_success": 0.6895424836601305, + "recall": 0.6176470588235294, + "recall_success": 0.6176470588235294, + "precision": 0.8447712418300654, + "precision_success": 0.8447712418300654, + "correct_pairwise": 0.21568627450980393, + "correct_pairwise_success": 0.21568627450980393, + "hallucination_rate": 0.12510958415176396, + "hallucination_rate_success": 0.12510958415176396, + "deletion_rate": 0.001116916034425295, + "deletion_rate_success": 0.001116916034425295 + } + }, + "ersatz": { + "command-r": {} + } + }, + "la": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.8333333333333334, + "f1_success": 0.8333333333333334, + "recall": 0.8333333333333334, + "recall_success": 0.8333333333333334, + "precision": 0.8333333333333334, + "precision_success": 0.8333333333333334, + "correct_pairwise": 0.6666666666666666, + "correct_pairwise_success": 0.6666666666666666, + "hallucination_rate": 0.0, + "hallucination_rate_success": 0.0, + "deletion_rate": 0.006535947712418301, + "deletion_rate_success": 0.006535947712418301 + } + }, + "ersatz": { + "command-r": {} + } + }, + "lt": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7388252991452998, + "f1_success": 0.7388252991452998, + "recall": 0.8066, + "recall_success": 0.8066, + "precision": 0.7360304562104603, + "precision_success": 0.7360304562104603, + "correct_pairwise": 0.294, + "correct_pairwise_success": 0.294, + "hallucination_rate": 0.016033345627213338, + "hallucination_rate_success": 0.016033345627213338, + "deletion_rate": 0.007262854685909534, + "deletion_rate_success": 0.007262854685909534 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9222857142857148, + "f1_success": 0.9222857142857148, + "recall": 0.958, + "recall_success": 0.958, + "precision": 0.9039333333333328, + "precision_success": 0.9039333333333328, + "correct_pairwise": 0.74, + "correct_pairwise_success": 0.74, + "hallucination_rate": 0.00591385138117331, + "hallucination_rate_success": 0.00591385138117331, + "deletion_rate": 0.008990776520806659, + "deletion_rate_success": 0.008990776520806659 + } + } + }, + "lv": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.718294025974025, + "f1_success": 0.718294025974025, + "recall": 0.7998, + "recall_success": 0.7998, + "precision": 0.6940736507936547, + "precision_success": 0.6940736507936547, + "correct_pairwise": 0.2956, + "correct_pairwise_success": 0.2956, + "hallucination_rate": 0.01028567154396776, + "hallucination_rate_success": 0.01028567154396776, + "deletion_rate": 0.008750785279804283, + "deletion_rate_success": 0.008750785279804283 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9007936507936525, + "f1_success": 0.9007936507936525, + "recall": 0.9533730158730159, + "recall_success": 0.9533730158730159, + "precision": 0.8726521164021175, + "precision_success": 0.8726521164021175, + "correct_pairwise": 0.6666666666666666, + "correct_pairwise_success": 0.6666666666666666, + "hallucination_rate": 0.0021474137285435895, + "hallucination_rate_success": 0.0021474137285435895, + "deletion_rate": 0.0033661854315757207, + "deletion_rate_success": 0.0033661854315757207 + } + } + }, + "mg": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.5941798941798944, + "f1_success": 0.5941798941798944, + "recall": 0.5740740740740741, + "recall_success": 0.5740740740740741, + "precision": 0.6734567901234567, + "precision_success": 0.6734567901234567, + "correct_pairwise": 0.09259259259259259, + "correct_pairwise_success": 0.09259259259259259, + "hallucination_rate": 0.030855029690331784, + "hallucination_rate_success": 0.030855029690331784, + "deletion_rate": 0.0033367771032103053, + "deletion_rate_success": 0.0033367771032103053 + } + }, + "ersatz": { + "command-r": {} + } + }, + "mk": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6910944269765475, + "f1_success": 0.6910944269765475, + "recall": 0.5792, + "recall_success": 0.5792, + "precision": 0.9245359477124186, + "precision_success": 0.9245359477124186, + "correct_pairwise": 0.1352, + "correct_pairwise_success": 0.1352, + "hallucination_rate": 0.03235614993310591, + "hallucination_rate_success": 0.03235614993310591, + "deletion_rate": 0.0010755082291195265, + "deletion_rate_success": 0.0010755082291195265 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ml": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6645973466079359, + "f1_success": 0.6645973466079359, + "recall": 0.5059523809523809, + "recall_success": 0.5059523809523809, + "precision": 0.9879659024103469, + "precision_success": 0.9879659024103469, + "correct_pairwise": 0.005291005291005291, + "correct_pairwise_success": 0.005291005291005291, + "hallucination_rate": 0.0014435948887536385, + "hallucination_rate_success": 0.0014435948887536385, + "deletion_rate": 0.8789630104640619, + "deletion_rate_success": 0.8789630104640619 + } + }, + "ersatz": { + "command-r": {} + } + }, + "mn": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6838075213675351, + "f1_success": 0.6838075213675351, + "recall": 0.5844, + "recall_success": 0.5844, + "precision": 0.8934752181152186, + "precision_success": 0.8934752181152186, + "correct_pairwise": 0.146, + "correct_pairwise_success": 0.146, + "hallucination_rate": 0.15868647949854164, + "hallucination_rate_success": 0.15868647949854164, + "deletion_rate": 0.0003327605182357335, + "deletion_rate_success": 0.0003327605182357335 + } + }, + "ersatz": { + "command-r": {} + } + }, + "mr": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6555980952381114, + "f1_success": 0.6555980952381114, + "recall": 0.5204, + "recall_success": 0.5204, + "precision": 0.932, + "precision_success": 0.932, + "correct_pairwise": 0.0312, + "correct_pairwise_success": 0.0312, + "hallucination_rate": 0.04787753271647943, + "hallucination_rate_success": 0.04787753271647943, + "deletion_rate": 0.004127525174893096, + "deletion_rate_success": 0.004127525174893096 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ms": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7375487953166505, + "f1_success": 0.7375487953166505, + "recall": 0.7238095238095238, + "recall_success": 0.7238095238095238, + "precision": 0.8269867252456546, + "precision_success": 0.8269867252456546, + "correct_pairwise": 0.2970238095238095, + "correct_pairwise_success": 0.2970238095238095, + "hallucination_rate": 0.020025196390346837, + "hallucination_rate_success": 0.020025196390346837, + "deletion_rate": 0.010595385453237512, + "deletion_rate_success": 0.010595385453237512 + } + }, + "ersatz": { + "command-r": {} + } + }, + "mt": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6461538461538463, + "f1_success": 0.6461538461538463, + "recall": 0.6538461538461539, + "recall_success": 0.6538461538461539, + "precision": 0.6762820512820512, + "precision_success": 0.6762820512820512, + "correct_pairwise": 0.23076923076923078, + "correct_pairwise_success": 0.23076923076923078, + "hallucination_rate": 0.004086333164148621, + "hallucination_rate_success": 0.004086333164148621, + "deletion_rate": 0.006203009347863811, + "deletion_rate_success": 0.006203009347863811 + } + }, + "ersatz": { + "command-r": {} + } + }, + "my": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6590904633821617, + "f1_success": 0.6590904633821617, + "recall": 0.5566, + "recall_success": 0.5566, + "precision": 0.8930608978392456, + "precision_success": 0.8930608978392456, + "correct_pairwise": 0.0776, + "correct_pairwise_success": 0.0776, + "hallucination_rate": 0.02441253829698502, + "hallucination_rate_success": 0.02441253829698502, + "deletion_rate": 0.014316710552042087, + "deletion_rate_success": 0.014316710552042087 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ne": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.681367474224619, + "f1_success": 0.681367474224619, + "recall": 0.5733590733590733, + "recall_success": 0.5733590733590733, + "precision": 0.9117277992277992, + "precision_success": 0.9117277992277992, + "correct_pairwise": 0.12162162162162163, + "correct_pairwise_success": 0.12162162162162163, + "hallucination_rate": 0.04670995872629497, + "hallucination_rate_success": 0.04670995872629497, + "deletion_rate": 0.002260657481843977, + "deletion_rate_success": 0.002260657481843977 + } + }, + "ersatz": { + "command-r": {} + } + }, + "nl": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.8228601154401142, + "f1_success": 0.8228601154401142, + "recall": 0.8794, + "recall_success": 0.8794, + "precision": 0.8169618055555606, + "precision_success": 0.8169618055555606, + "correct_pairwise": 0.4724, + "correct_pairwise_success": 0.4724, + "hallucination_rate": 0.010348988505582855, + "hallucination_rate_success": 0.010348988505582855, + "deletion_rate": 0.008468107172170548, + "deletion_rate_success": 0.008468107172170548 + } + }, + "ersatz": { + "command-r": {} + } + }, + "pa": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6684397163120559, + "f1_success": 0.6684397163120559, + "recall": 0.5212765957446809, + "recall_success": 0.5212765957446809, + "precision": 0.9654255319148937, + "precision_success": 0.9654255319148937, + "correct_pairwise": 0.0425531914893617, + "correct_pairwise_success": 0.0425531914893617, + "hallucination_rate": 0.13977360639357864, + "hallucination_rate_success": 0.13977360639357864, + "deletion_rate": 0.002495077593021233, + "deletion_rate_success": 0.002495077593021233 + } + }, + "ersatz": { + "command-r": {} + } + }, + "pl": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7967635871318254, + "f1_success": 0.7967635871318254, + "recall": 0.8206, + "recall_success": 0.8206, + "precision": 0.8265766269841308, + "precision_success": 0.8265766269841308, + "correct_pairwise": 0.4324, + "correct_pairwise_success": 0.4324, + "hallucination_rate": 0.016026147988665734, + "hallucination_rate_success": 0.016026147988665734, + "deletion_rate": 0.006422038125919934, + "deletion_rate_success": 0.006422038125919934 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9289698349459307, + "f1_success": 0.9289698349459307, + "recall": 0.9462151394422311, + "recall_success": 0.9462151394422311, + "precision": 0.9265604249667994, + "precision_success": 0.9265604249667994, + "correct_pairwise": 0.796812749003984, + "correct_pairwise_success": 0.796812749003984, + "hallucination_rate": 0.005861315112451055, + "hallucination_rate_success": 0.005861315112451055, + "deletion_rate": 0.008287679666251041, + "deletion_rate_success": 0.008287679666251041 + } + } + }, + "ps": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6540145985401463, + "f1_success": 0.6540145985401463, + "recall": 0.5328467153284672, + "recall_success": 0.5328467153284672, + "precision": 0.9038929440389295, + "precision_success": 0.9038929440389295, + "correct_pairwise": 0.051094890510948905, + "correct_pairwise_success": 0.051094890510948905, + "hallucination_rate": 0.08371575663216115, + "hallucination_rate_success": 0.08371575663216115, + "deletion_rate": 0.0008762055841381216, + "deletion_rate_success": 0.0008762055841381216 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9345133361262394, + "f1_success": 0.9345133361262394, + "recall": 0.9274193548387096, + "recall_success": 0.9274193548387096, + "precision": 0.9656402737047898, + "precision_success": 0.9656402737047898, + "correct_pairwise": 0.7961876832844574, + "correct_pairwise_success": 0.7961876832844574, + "hallucination_rate": 0.01041134133945694, + "hallucination_rate_success": 0.01041134133945694, + "deletion_rate": 0.0019329334322075386, + "deletion_rate_success": 0.0019329334322075386 + } + } + }, + "pt": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7812109090909143, + "f1_success": 0.7812109090909143, + "recall": 0.791, + "recall_success": 0.791, + "precision": 0.8334000494405436, + "precision_success": 0.8334000494405436, + "correct_pairwise": 0.4008, + "correct_pairwise_success": 0.4008, + "hallucination_rate": 0.012465488198399283, + "hallucination_rate_success": 0.012465488198399283, + "deletion_rate": 0.005069105865265478, + "deletion_rate_success": 0.005069105865265478 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ro": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7652112265512322, + "f1_success": 0.7652112265512322, + "recall": 0.7528, + "recall_success": 0.7528, + "precision": 0.8484970436507964, + "precision_success": 0.8484970436507964, + "correct_pairwise": 0.3512, + "correct_pairwise_success": 0.3512, + "hallucination_rate": 0.017971452577177166, + "hallucination_rate_success": 0.017971452577177166, + "deletion_rate": 0.00657497734745277, + "deletion_rate_success": 0.00657497734745277 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9187777777777785, + "f1_success": 0.9187777777777785, + "recall": 0.924, + "recall_success": 0.924, + "precision": 0.9389190476190481, + "precision_success": 0.9389190476190481, + "correct_pairwise": 0.758, + "correct_pairwise_success": 0.758, + "hallucination_rate": 0.004883395813416173, + "hallucination_rate_success": 0.004883395813416173, + "deletion_rate": 0.003935490926545917, + "deletion_rate_success": 0.003935490926545917 + } + } + }, + "ru": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7801585048643171, + "f1_success": 0.7801585048643171, + "recall": 0.771, + "recall_success": 0.771, + "precision": 0.8568737931034511, + "precision_success": 0.8568737931034511, + "correct_pairwise": 0.3836, + "correct_pairwise_success": 0.3836, + "hallucination_rate": 0.021432034969910675, + "hallucination_rate_success": 0.021432034969910675, + "deletion_rate": 0.001471755391948671, + "deletion_rate_success": 0.001471755391948671 + } + }, + "ersatz": { + "command-r": { + "f1": 0.9391129032258064, + "f1_success": 0.9391129032258064, + "recall": 0.9455645161290323, + "recall_success": 0.9455645161290323, + "precision": 0.9487567204301073, + "precision_success": 0.9487567204301073, + "correct_pairwise": 0.8145161290322581, + "correct_pairwise_success": 0.8145161290322581, + "hallucination_rate": 0.005224312597570503, + "hallucination_rate_success": 0.005224312597570503, + "deletion_rate": 0.006669156631280926, + "deletion_rate_success": 0.006669156631280926 + } + } + }, + "si": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6477984164261322, + "f1_success": 0.6477984164261322, + "recall": 0.5930232558139535, + "recall_success": 0.5930232558139535, + "precision": 0.901769097043742, + "precision_success": 0.901769097043742, + "correct_pairwise": 0.06976744186046512, + "correct_pairwise_success": 0.06976744186046512, + "hallucination_rate": 0.691944647686711, + "hallucination_rate_success": 0.691944647686711, + "deletion_rate": 0.20273242330026617, + "deletion_rate_success": 0.20273242330026617 + } + }, + "ersatz": { + "command-r": {} + } + }, + "sk": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7533750360750366, + "f1_success": 0.7533750360750366, + "recall": 0.8098, + "recall_success": 0.8098, + "precision": 0.7601583638583679, + "precision_success": 0.7601583638583679, + "correct_pairwise": 0.3356, + "correct_pairwise_success": 0.3356, + "hallucination_rate": 0.01776482996649308, + "hallucination_rate_success": 0.01776482996649308, + "deletion_rate": 0.007381602543916036, + "deletion_rate_success": 0.007381602543916036 + } + }, + "ersatz": { + "command-r": {} + } + }, + "sl": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7302988455988471, + "f1_success": 0.7302988455988471, + "recall": 0.7928, + "recall_success": 0.7928, + "precision": 0.7359582539682588, + "precision_success": 0.7359582539682588, + "correct_pairwise": 0.2844, + "correct_pairwise_success": 0.2844, + "hallucination_rate": 0.013165560756783594, + "hallucination_rate_success": 0.013165560756783594, + "deletion_rate": 0.007196126754413198, + "deletion_rate_success": 0.007196126754413198 + } + }, + "ersatz": { + "command-r": {} + } + }, + "sq": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6911937254901976, + "f1_success": 0.6911937254901976, + "recall": 0.73, + "recall_success": 0.73, + "precision": 0.7124152380952401, + "precision_success": 0.7124152380952401, + "correct_pairwise": 0.2444, + "correct_pairwise_success": 0.2444, + "hallucination_rate": 0.021228101494129528, + "hallucination_rate_success": 0.021228101494129528, + "deletion_rate": 0.00628408372687049, + "deletion_rate_success": 0.00628408372687049 + } + }, + "ersatz": { + "command-r": {} + } + }, + "sr": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7383521212121263, + "f1_success": 0.7383521212121263, + "recall": 0.774, + "recall_success": 0.774, + "precision": 0.7710579365079399, + "precision_success": 0.7710579365079399, + "correct_pairwise": 0.314, + "correct_pairwise_success": 0.314, + "hallucination_rate": 0.015602819092274166, + "hallucination_rate_success": 0.015602819092274166, + "deletion_rate": 0.005909277008575971, + "deletion_rate_success": 0.005909277008575971 + } + }, + "ersatz": { + "command-r": {} + } + }, + "sv": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.770238470418472, + "f1_success": 0.770238470418472, + "recall": 0.8296, + "recall_success": 0.8296, + "precision": 0.7646107936507984, + "precision_success": 0.7646107936507984, + "correct_pairwise": 0.3792, + "correct_pairwise_success": 0.3792, + "hallucination_rate": 0.00999848608091287, + "hallucination_rate_success": 0.00999848608091287, + "deletion_rate": 0.007147143074467746, + "deletion_rate_success": 0.007147143074467746 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ta": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6638688357905318, + "f1_success": 0.6638688357905318, + "recall": 0.5060498220640569, + "recall_success": 0.5060498220640569, + "precision": 0.980688018979834, + "precision_success": 0.980688018979834, + "correct_pairwise": 0.011387900355871887, + "correct_pairwise_success": 0.011387900355871887, + "hallucination_rate": 0.04361670914297738, + "hallucination_rate_success": 0.04361670914297738, + "deletion_rate": 0.40827347575011486, + "deletion_rate_success": 0.40827347575011486 + } + }, + "ersatz": { + "command-r": { + "f1": 0.6938911022576352, + "f1_success": 0.6938911022576352, + "recall": 0.5418326693227091, + "recall_success": 0.5418326693227091, + "precision": 0.99800796812749, + "precision_success": 0.99800796812749, + "correct_pairwise": 0.08366533864541832, + "correct_pairwise_success": 0.08366533864541832, + "hallucination_rate": 0.001427416519297014, + "hallucination_rate_success": 0.001427416519297014, + "deletion_rate": 0.7694899219867076, + "deletion_rate_success": 0.7694899219867076 + } + } + }, + "te": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6575528700906391, + "f1_success": 0.6575528700906391, + "recall": 0.5128398791540786, + "recall_success": 0.5128398791540786, + "precision": 0.949773413897281, + "precision_success": 0.949773413897281, + "correct_pairwise": 0.019637462235649546, + "correct_pairwise_success": 0.019637462235649546, + "hallucination_rate": 0.056509760360937224, + "hallucination_rate_success": 0.056509760360937224, + "deletion_rate": 0.01270826595880584, + "deletion_rate_success": 0.01270826595880584 + } + }, + "ersatz": { + "command-r": {} + } + }, + "tg": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7385964912280699, + "f1_success": 0.7385964912280699, + "recall": 0.6447368421052632, + "recall_success": 0.6447368421052632, + "precision": 0.9298245614035087, + "precision_success": 0.9298245614035087, + "correct_pairwise": 0.27631578947368424, + "correct_pairwise_success": 0.27631578947368424, + "hallucination_rate": 0.045095164351861644, + "hallucination_rate_success": 0.045095164351861644, + "deletion_rate": 0.0, + "deletion_rate_success": 0.0 + } + }, + "ersatz": { + "command-r": {} + } + }, + "th": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7119818066378227, + "f1_success": 0.7119818066378227, + "recall": 0.6072, + "recall_success": 0.6072, + "precision": 0.9373497032436165, + "precision_success": 0.9373497032436165, + "correct_pairwise": 0.1756, + "correct_pairwise_success": 0.1756, + "hallucination_rate": 0.09078331879962911, + "hallucination_rate_success": 0.09078331879962911, + "deletion_rate": 0.009979857561166657, + "deletion_rate_success": 0.009979857561166657 + } + }, + "ersatz": { + "command-r": {} + } + }, + "tr": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7988917243867276, + "f1_success": 0.7992114089503078, + "recall": 0.8122, + "recall_success": 0.8125250100040016, + "precision": 0.8385681547619083, + "precision_success": 0.8389037162484075, + "correct_pairwise": 0.4476, + "correct_pairwise_success": 0.4477791116446579, + "hallucination_rate": 0.022818005714704843, + "hallucination_rate_success": 0.02282713656933258, + "deletion_rate": 0.005974251164195706, + "deletion_rate_success": 0.0059766418209240765 + } + }, + "ersatz": { + "command-r": { + "f1": 0.93254927696417, + "f1_success": 0.93254927696417, + "recall": 0.9394946808510638, + "recall_success": 0.9394946808510638, + "precision": 0.9460697399527187, + "precision_success": 0.9460697399527187, + "correct_pairwise": 0.7965425531914894, + "correct_pairwise_success": 0.7965425531914894, + "hallucination_rate": 0.011222622581850921, + "hallucination_rate_success": 0.011222622581850921, + "deletion_rate": 0.011100552086799855, + "deletion_rate_success": 0.011100552086799855 + } + } + }, + "uk": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7699092063492124, + "f1_success": 0.7699092063492124, + "recall": 0.753, + "recall_success": 0.753, + "precision": 0.8548709523809545, + "precision_success": 0.8548709523809545, + "correct_pairwise": 0.3676, + "correct_pairwise_success": 0.3676, + "hallucination_rate": 0.025052471545554393, + "hallucination_rate_success": 0.025052471545554393, + "deletion_rate": 0.001720369657195652, + "deletion_rate_success": 0.001720369657195652 + } + }, + "ersatz": { + "command-r": {} + } + }, + "ur": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.7086971980856889, + "f1_success": 0.7090615668250646, + "recall": 0.7217368961973278, + "recall_success": 0.722107969151671, + "precision": 0.7884248488179647, + "precision_success": 0.7888302086374084, + "correct_pairwise": 0.21788283658787255, + "correct_pairwise_success": 0.2179948586118252, + "hallucination_rate": 0.0547393072773642, + "hallucination_rate_success": 0.0547674508800775, + "deletion_rate": 0.0021501533183644916, + "deletion_rate_success": 0.0021512587956489977 + } + }, + "ersatz": { + "command-r": {} + } + }, + "uz": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6592694576871776, + "f1_success": 0.6592694576871776, + "recall": 0.569620253164557, + "recall_success": 0.569620253164557, + "precision": 0.868759627620387, + "precision_success": 0.868759627620387, + "correct_pairwise": 0.08333333333333333, + "correct_pairwise_success": 0.08333333333333333, + "hallucination_rate": 0.09462689515374498, + "hallucination_rate_success": 0.09462689515374498, + "deletion_rate": 0.02646456712691397, + "deletion_rate_success": 0.02646456712691397 + } + }, + "ersatz": { + "command-r": {} + } + }, + "vi": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.748867570207575, + "f1_success": 0.748867570207575, + "recall": 0.7514, + "recall_success": 0.7514, + "precision": 0.8122516017316039, + "precision_success": 0.8122516017316039, + "correct_pairwise": 0.336, + "correct_pairwise_success": 0.336, + "hallucination_rate": 0.014993090374010839, + "hallucination_rate_success": 0.014993090374010839, + "deletion_rate": 0.006271156081171968, + "deletion_rate_success": 0.006271156081171968 + } + }, + "ersatz": { + "command-r": {} + } + }, + "zh": { + "ted2020-corrupted-asr": { + "command-r": { + "f1": 0.6590531525014833, + "f1_success": 0.6590531525014833, + "recall": 0.6409180651530109, + "recall_success": 0.6409180651530109, + "precision": 0.7950277524932038, + "precision_success": 0.7950277524932038, + "correct_pairwise": 0.10019743336623889, + "correct_pairwise_success": 0.10019743336623889, + "hallucination_rate": 0.038302424246560586, + "hallucination_rate_success": 0.038302424246560586, + "deletion_rate": 0.0046207016094190635, + "deletion_rate_success": 0.0046207016094190635 + } + }, + "ersatz": { + "command-r": { + "f1": 0.8727477925583206, + "f1_success": 0.8727477925583206, + "recall": 0.93, + "recall_success": 0.93, + "precision": 0.8658171122994659, + "precision_success": 0.8658171122994659, + "correct_pairwise": 0.592, + "correct_pairwise_success": 0.592, + "hallucination_rate": 0.0139215963997789, + "hallucination_rate_success": 0.0139215963997789, + "deletion_rate": 0.009442632208235395, + "deletion_rate_success": 0.009442632208235395 + } + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/command-r_tweets.json b/wtpsplit/evaluation/evaluation_results/short/command-r_tweets.json new file mode 100644 index 00000000..18e68fd4 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/command-r_tweets.json @@ -0,0 +1,138 @@ +{ + "en-de": { + "short-sequences": { + "command-r": { + "f1": 0.7612735782515193, + "f1_success": 0.7676574237714482, + "recall": 0.7555802664310645, + "recall_success": 0.761916369294218, + "precision": 0.8756583740528698, + "precision_success": 0.8830014212147388, + "correct_pairwise": 0.3388773388773389, + "correct_pairwise_success": 0.3417190775681342, + "hallucination_rate": 0.009286331011965437, + "hallucination_rate_success": 0.00936420380871148, + "deletion_rate": 0.019544615801262977, + "deletion_rate_success": 0.01970851195053982 + } + }, + "short-sequences-corrupted-asr": { + "command-r": { + "f1": 0.6475642577710565, + "f1_success": 0.6529945660123233, + "recall": 0.6957057989208499, + "recall_success": 0.701539809813268, + "precision": 0.7478827547434623, + "precision_success": 0.7541543082423593, + "correct_pairwise": 0.13305613305613306, + "correct_pairwise_success": 0.13417190775681342, + "hallucination_rate": 0.009962824325472781, + "hallucination_rate_success": 0.010046370022122449, + "deletion_rate": 0.007069353632395325, + "deletion_rate_success": 0.007128635423861952 + } + } + }, + "et": { + "short-sequences": { + "command-r": { + "f1": 0.7978905731149315, + "f1_success": 0.7978905731149315, + "recall": 0.7438085972017783, + "recall_success": 0.7438085972017783, + "precision": 0.9285069200093828, + "precision_success": 0.9285069200093828, + "correct_pairwise": 0.32019704433497537, + "correct_pairwise_success": 0.32019704433497537, + "hallucination_rate": 0.010509200163706062, + "hallucination_rate_success": 0.010509200163706062, + "deletion_rate": 0.0027956041497039434, + "deletion_rate_success": 0.0027956041497039434 + } + }, + "short-sequences-corrupted-asr": { + "command-r": { + "f1": 0.5679015009944264, + "f1_success": 0.5679015009944264, + "recall": 0.5542263209524035, + "recall_success": 0.5542263209524035, + "precision": 0.6667317604509723, + "precision_success": 0.6667317604509723, + "correct_pairwise": 0.03940886699507389, + "correct_pairwise_success": 0.03940886699507389, + "hallucination_rate": 0.00356705321845305, + "hallucination_rate_success": 0.00356705321845305, + "deletion_rate": 0.003881461160564471, + "deletion_rate_success": 0.003881461160564471 + } + } + }, + "sl": { + "short-sequences": { + "command-r": { + "f1": 0.8370556231809922, + "f1_success": 0.8370556231809922, + "recall": 0.8637072045338179, + "recall_success": 0.8637072045338179, + "precision": 0.8751077887166597, + "precision_success": 0.8751077887166597, + "correct_pairwise": 0.5384897360703812, + "correct_pairwise_success": 0.5384897360703812, + "hallucination_rate": 0.09838043224511384, + "hallucination_rate_success": 0.09838043224511384, + "deletion_rate": 0.009172849760158738, + "deletion_rate_success": 0.009172849760158738 + } + }, + "short-sequences-corrupted-asr": { + "command-r": { + "f1": 0.6695807016207601, + "f1_success": 0.6695807016207601, + "recall": 0.6635709049015502, + "recall_success": 0.6635709049015502, + "precision": 0.7516547198058119, + "precision_success": 0.7516547198058119, + "correct_pairwise": 0.22104105571847507, + "correct_pairwise_success": 0.22104105571847507, + "hallucination_rate": 0.0415027499668521, + "hallucination_rate_success": 0.0415027499668521, + "deletion_rate": 0.012283687920226428, + "deletion_rate_success": 0.012283687920226428 + } + } + }, + "sr": { + "short-sequences": { + "command-r": { + "f1": 0.829373346560847, + "f1_success": 0.829373346560847, + "recall": 0.8155381944444442, + "recall_success": 0.8155381944444442, + "precision": 0.8987847222222224, + "precision_success": 0.8987847222222224, + "correct_pairwise": 0.4739583333333333, + "correct_pairwise_success": 0.4739583333333333, + "hallucination_rate": 0.008376361810798334, + "hallucination_rate_success": 0.008376361810798334, + "deletion_rate": 0.006765326059912324, + "deletion_rate_success": 0.006765326059912324 + } + }, + "short-sequences-corrupted-asr": { + "command-r": { + "f1": 0.689413855820106, + "f1_success": 0.689413855820106, + "recall": 0.7217013888888889, + "recall_success": 0.7217013888888889, + "precision": 0.7298239087301588, + "precision_success": 0.7298239087301588, + "correct_pairwise": 0.20833333333333334, + "correct_pairwise_success": 0.20833333333333334, + "hallucination_rate": 0.008838381651877837, + "hallucination_rate_success": 0.008838381651877837, + "deletion_rate": 0.005075559068623937, + "deletion_rate_success": 0.005075559068623937 + } + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/llama-3.json b/wtpsplit/evaluation/evaluation_results/short/llama-3.json new file mode 100644 index 00000000..6f838470 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/llama-3.json @@ -0,0 +1,1884 @@ +{ + "af": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7122246642246655, + "f1_success": 0.7122246642246655, + "recall": 0.8323076923076923, + "recall_success": 0.8323076923076923, + "precision": 0.666388278388278, + "precision_success": 0.666388278388278, + "correct_pairwise": 0.2553846153846154, + "correct_pairwise_success": 0.2553846153846154, + "hallucination_rate": 0.001604040396252146, + "hallucination_rate_success": 0.001604040396252146, + "deletion_rate": 0.00350566677049251, + "deletion_rate_success": 0.00350566677049251 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "am": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5913318452380948, + "f1_success": 0.5913318452380948, + "recall": 0.70703125, + "recall_success": 0.70703125, + "precision": 0.5434895833333334, + "precision_success": 0.5434895833333334, + "correct_pairwise": 0.1171875, + "correct_pairwise_success": 0.1171875, + "hallucination_rate": 0.001159333054092175, + "hallucination_rate_success": 0.001159333054092175, + "deletion_rate": 0.0005826749143147705, + "deletion_rate_success": 0.0005826749143147705 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ar": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6863714499027541, + "f1_success": 0.6863714499027541, + "recall": 0.8636, + "recall_success": 0.8636, + "precision": 0.6045459213092084, + "precision_success": 0.6045459213092084, + "correct_pairwise": 0.216, + "correct_pairwise_success": 0.216, + "hallucination_rate": 0.009037833424094031, + "hallucination_rate_success": 0.009037833424094031, + "deletion_rate": 0.0025260426840785152, + "deletion_rate_success": 0.0025260426840785152 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9012672315863821, + "f1_success": 0.9012672315863821, + "recall": 0.9813829787234043, + "recall_success": 0.9813829787234043, + "precision": 0.8601422661263092, + "precision_success": 0.8601422661263092, + "correct_pairwise": 0.6781914893617021, + "correct_pairwise_success": 0.6781914893617021, + "hallucination_rate": 0.004030885046919083, + "hallucination_rate_success": 0.004030885046919083, + "deletion_rate": 0.00828917699020409, + "deletion_rate_success": 0.00828917699020409 + } + } + }, + "az": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7537445972729603, + "f1_success": 0.7541903362423708, + "recall": 0.8912529550827423, + "recall_success": 0.8917800118273211, + "precision": 0.6882849731697241, + "precision_success": 0.6886920015394283, + "correct_pairwise": 0.3067375886524823, + "correct_pairwise_success": 0.3069189828503844, + "hallucination_rate": 0.001893332608078846, + "hallucination_rate_success": 0.0018944522607152025, + "deletion_rate": 0.002730540616558457, + "deletion_rate_success": 0.002732155365592495 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "be": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6729128035422576, + "f1_success": 0.6729128035422576, + "recall": 0.7959117456197274, + "recall_success": 0.7959117456197274, + "precision": 0.6206636800001479, + "precision_success": 0.6206636800001479, + "correct_pairwise": 0.2044127190136275, + "correct_pairwise_success": 0.2044127190136275, + "hallucination_rate": 0.0032691630134157766, + "hallucination_rate_success": 0.0032691630134157766, + "deletion_rate": 0.0013528810486998291, + "deletion_rate_success": 0.0013528810486998291 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "bg": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7205628860028866, + "f1_success": 0.7205628860028866, + "recall": 0.845, + "recall_success": 0.845, + "precision": 0.6710882539682572, + "precision_success": 0.6710882539682572, + "correct_pairwise": 0.2796, + "correct_pairwise_success": 0.2796, + "hallucination_rate": 0.005126613744113337, + "hallucination_rate_success": 0.005126613744113337, + "deletion_rate": 0.0018571023910618752, + "deletion_rate_success": 0.0018571023910618752 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "bn": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5250391446160644, + "f1_success": 0.5250391446160644, + "recall": 0.6357692307692308, + "recall_success": 0.6357692307692308, + "precision": 0.4828611388611383, + "precision_success": 0.4828611388611383, + "correct_pairwise": 0.06153846153846154, + "correct_pairwise_success": 0.06153846153846154, + "hallucination_rate": 0.003911769122860138, + "hallucination_rate_success": 0.003911769122860138, + "deletion_rate": 0.0015575294104951802, + "deletion_rate_success": 0.0015575294104951802 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ca": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7239014754354707, + "f1_success": 0.7239014754354707, + "recall": 0.8496, + "recall_success": 0.8496, + "precision": 0.6785616246498629, + "precision_success": 0.6785616246498629, + "correct_pairwise": 0.2756, + "correct_pairwise_success": 0.2756, + "hallucination_rate": 0.0013514705726471487, + "hallucination_rate_success": 0.0013514705726471487, + "deletion_rate": 0.005857298605548459, + "deletion_rate_success": 0.005857298605548459 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ceb": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6785714285714287, + "f1_success": 0.6785714285714287, + "recall": 0.6785714285714286, + "recall_success": 0.6785714285714286, + "precision": 0.744047619047619, + "precision_success": 0.744047619047619, + "correct_pairwise": 0.21428571428571427, + "correct_pairwise_success": 0.21428571428571427, + "hallucination_rate": 0.0, + "hallucination_rate_success": 0.0, + "deletion_rate": 0.005280981648616139, + "deletion_rate_success": 0.005280981648616139 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "cs": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7200636452436462, + "f1_success": 0.7200636452436462, + "recall": 0.8762, + "recall_success": 0.8762, + "precision": 0.6544044588744633, + "precision_success": 0.6544044588744633, + "correct_pairwise": 0.262, + "correct_pairwise_success": 0.262, + "hallucination_rate": 0.002717155190506149, + "hallucination_rate_success": 0.002717155190506149, + "deletion_rate": 0.006719941569336467, + "deletion_rate_success": 0.006719941569336467 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9671075837742512, + "f1_success": 0.9671075837742512, + "recall": 0.9953703703703703, + "recall_success": 0.9953703703703703, + "precision": 0.9517746913580253, + "precision_success": 0.9517746913580253, + "correct_pairwise": 0.8726851851851852, + "correct_pairwise_success": 0.8726851851851852, + "hallucination_rate": 0.00017262247216067573, + "hallucination_rate_success": 0.00017262247216067573, + "deletion_rate": 0.003033285538653087, + "deletion_rate_success": 0.003033285538653087 + } + } + }, + "da": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7226730913530917, + "f1_success": 0.7226730913530917, + "recall": 0.862, + "recall_success": 0.862, + "precision": 0.664086536796541, + "precision_success": 0.664086536796541, + "correct_pairwise": 0.2688, + "correct_pairwise_success": 0.2688, + "hallucination_rate": 0.0006413303539216884, + "hallucination_rate_success": 0.0006413303539216884, + "deletion_rate": 0.004724810016243603, + "deletion_rate_success": 0.004724810016243603 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "de": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7445098066378053, + "f1_success": 0.7445098066378053, + "recall": 0.9062, + "recall_success": 0.9062, + "precision": 0.6709705414875037, + "precision_success": 0.6709705414875037, + "correct_pairwise": 0.2892, + "correct_pairwise_success": 0.2892, + "hallucination_rate": 0.0020830963874782695, + "hallucination_rate_success": 0.0020830963874782695, + "deletion_rate": 0.007932859449733909, + "deletion_rate_success": 0.007932859449733909 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9646688003103489, + "f1_success": 0.9646688003103489, + "recall": 0.994908350305499, + "recall_success": 0.994908350305499, + "precision": 0.9475899524779368, + "precision_success": 0.9475899524779368, + "correct_pairwise": 0.8615071283095723, + "correct_pairwise_success": 0.8615071283095723, + "hallucination_rate": 0.00015548873706891376, + "hallucination_rate_success": 0.00015548873706891376, + "deletion_rate": 0.002140143972809658, + "deletion_rate_success": 0.002140143972809658 + } + } + }, + "el": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7186772508650768, + "f1_success": 0.7186772508650768, + "recall": 0.8464, + "recall_success": 0.8464, + "precision": 0.6611584271284304, + "precision_success": 0.6611584271284304, + "correct_pairwise": 0.2848, + "correct_pairwise_success": 0.2848, + "hallucination_rate": 0.0055787265350388535, + "hallucination_rate_success": 0.0055787265350388535, + "deletion_rate": 0.002094137820348499, + "deletion_rate_success": 0.002094137820348499 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "en": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7626767526917527, + "f1_success": 0.7626767526917527, + "recall": 0.8792, + "recall_success": 0.8792, + "precision": 0.7216922799422851, + "precision_success": 0.7216922799422851, + "correct_pairwise": 0.3456, + "correct_pairwise_success": 0.3456, + "hallucination_rate": 0.00026265667466657646, + "hallucination_rate_success": 0.00026265667466657646, + "deletion_rate": 0.005970995367882132, + "deletion_rate_success": 0.005970995367882132 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9843190097084175, + "f1_success": 0.9843190097084175, + "recall": 0.9919522326064382, + "recall_success": 0.9919522326064382, + "precision": 0.9829723582060038, + "precision_success": 0.9829723582060038, + "correct_pairwise": 0.9454828660436138, + "correct_pairwise_success": 0.9454828660436138, + "hallucination_rate": 0.00020010954196402812, + "hallucination_rate_success": 0.00020010954196402812, + "deletion_rate": 0.0028172985570319073, + "deletion_rate_success": 0.0028172985570319073 + } + } + }, + "eo": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6968441030360476, + "f1_success": 0.6968441030360476, + "recall": 0.8104636591478697, + "recall_success": 0.8104636591478697, + "precision": 0.6651587256380477, + "precision_success": 0.6651587256380477, + "correct_pairwise": 0.24060150375939848, + "correct_pairwise_success": 0.24060150375939848, + "hallucination_rate": 0.0017317375814834308, + "hallucination_rate_success": 0.0017317375814834308, + "deletion_rate": 0.006930215586338839, + "deletion_rate_success": 0.006930215586338839 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "es": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7419401692751704, + "f1_success": 0.7419401692751704, + "recall": 0.8634, + "recall_success": 0.8634, + "precision": 0.6968655544813646, + "precision_success": 0.6968655544813646, + "correct_pairwise": 0.3204, + "correct_pairwise_success": 0.3204, + "hallucination_rate": 0.0013886044128626662, + "hallucination_rate_success": 0.0013886044128626662, + "deletion_rate": 0.004050014935875112, + "deletion_rate_success": 0.004050014935875112 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9673629242819829, + "f1_success": 0.9673629242819829, + "recall": 0.9954308093994778, + "recall_success": 0.9954308093994778, + "precision": 0.9525239338555255, + "precision_success": 0.9525239338555255, + "correct_pairwise": 0.8720626631853786, + "correct_pairwise_success": 0.8720626631853786, + "hallucination_rate": 0.0001270819326595631, + "hallucination_rate_success": 0.0001270819326595631, + "deletion_rate": 0.0016451797190921065, + "deletion_rate_success": 0.0016451797190921065 + } + } + }, + "et": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6801899855699867, + "f1_success": 0.6801899855699867, + "recall": 0.8046, + "recall_success": 0.8046, + "precision": 0.633719126984129, + "precision_success": 0.633719126984129, + "correct_pairwise": 0.2216, + "correct_pairwise_success": 0.2216, + "hallucination_rate": 0.0016944977445362077, + "hallucination_rate_success": 0.0016944977445362077, + "deletion_rate": 0.005684882292718094, + "deletion_rate_success": 0.005684882292718094 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9652588813303106, + "f1_success": 0.9652588813303106, + "recall": 0.996031746031746, + "recall_success": 0.996031746031746, + "precision": 0.9474206349206354, + "precision_success": 0.9474206349206354, + "correct_pairwise": 0.8611111111111112, + "correct_pairwise_success": 0.8611111111111112, + "hallucination_rate": 0.0005148916962823468, + "hallucination_rate_success": 0.0005148916962823468, + "deletion_rate": 0.0022427767273954266, + "deletion_rate_success": 0.0022427767273954266 + } + } + }, + "eu": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6081092667786159, + "f1_success": 0.6081092667786159, + "recall": 0.7547043010752689, + "recall_success": 0.7547043010752689, + "precision": 0.5518668588729073, + "precision_success": 0.5518668588729073, + "correct_pairwise": 0.13440860215053763, + "correct_pairwise_success": 0.13440860215053763, + "hallucination_rate": 0.0012354459970849096, + "hallucination_rate_success": 0.0012354459970849096, + "deletion_rate": 0.005779418334873687, + "deletion_rate_success": 0.005779418334873687 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "fa": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7181195712783939, + "f1_success": 0.7181195712783939, + "recall": 0.9148, + "recall_success": 0.9148, + "precision": 0.6264229958930018, + "precision_success": 0.6264229958930018, + "correct_pairwise": 0.2292, + "correct_pairwise_success": 0.2292, + "hallucination_rate": 0.008324433796186897, + "hallucination_rate_success": 0.008324433796186897, + "deletion_rate": 0.0023002868959551234, + "deletion_rate_success": 0.0023002868959551234 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "fi": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6811043845043855, + "f1_success": 0.6811043845043855, + "recall": 0.832, + "recall_success": 0.832, + "precision": 0.6163594083694109, + "precision_success": 0.6163594083694109, + "correct_pairwise": 0.2132, + "correct_pairwise_success": 0.2132, + "hallucination_rate": 0.0022237218019029556, + "hallucination_rate_success": 0.0022237218019029556, + "deletion_rate": 0.007212381156056804, + "deletion_rate_success": 0.007212381156056804 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.976629449374941, + "f1_success": 0.976629449374941, + "recall": 0.9949899799599199, + "recall_success": 0.9949899799599199, + "precision": 0.9660654642618574, + "precision_success": 0.9660654642618574, + "correct_pairwise": 0.9038076152304609, + "correct_pairwise_success": 0.9038076152304609, + "hallucination_rate": 0.0007584823690826701, + "hallucination_rate_success": 0.0007584823690826701, + "deletion_rate": 0.0012274137700842983, + "deletion_rate_success": 0.0012274137700842983 + } + } + }, + "fr": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7524085603285594, + "f1_success": 0.7524085603285594, + "recall": 0.8818, + "recall_success": 0.8818, + "precision": 0.7015899800199862, + "precision_success": 0.7015899800199862, + "correct_pairwise": 0.3292, + "correct_pairwise_success": 0.3292, + "hallucination_rate": 0.0014988767164814045, + "hallucination_rate_success": 0.0014988767164814045, + "deletion_rate": 0.00525415334929543, + "deletion_rate_success": 0.00525415334929543 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9799631930066718, + "f1_success": 0.9799631930066718, + "recall": 0.998792270531401, + "recall_success": 0.998792270531401, + "precision": 0.9687600644122387, + "precision_success": 0.9687600644122387, + "correct_pairwise": 0.9106280193236715, + "correct_pairwise_success": 0.9106280193236715, + "hallucination_rate": 0.00017550425976162645, + "hallucination_rate_success": 0.00017550425976162645, + "deletion_rate": 0.0016168170682637247, + "deletion_rate_success": 0.0016168170682637247 + } + } + }, + "ga": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.4778499278499278, + "f1_success": 0.4778499278499278, + "recall": 0.5833333333333334, + "recall_success": 0.5833333333333334, + "precision": 0.43703703703703706, + "precision_success": 0.43703703703703706, + "correct_pairwise": 0.08333333333333333, + "correct_pairwise_success": 0.08333333333333333, + "hallucination_rate": 0.00023946360153256704, + "hallucination_rate_success": 0.00023946360153256704, + "deletion_rate": 0.0027180840087342568, + "deletion_rate_success": 0.0027180840087342568 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "gl": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6925341125541129, + "f1_success": 0.6925341125541129, + "recall": 0.8174, + "recall_success": 0.8174, + "precision": 0.6500488400488443, + "precision_success": 0.6500488400488443, + "correct_pairwise": 0.2292, + "correct_pairwise_success": 0.2292, + "hallucination_rate": 0.002501017962951279, + "hallucination_rate_success": 0.002501017962951279, + "deletion_rate": 0.004713634326457196, + "deletion_rate_success": 0.004713634326457196 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "gu": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5470488228414856, + "f1_success": 0.5470488228414856, + "recall": 0.6799797775530839, + "recall_success": 0.6799797775530839, + "precision": 0.48654031680520143, + "precision_success": 0.48654031680520143, + "correct_pairwise": 0.09201213346814964, + "correct_pairwise_success": 0.09201213346814964, + "hallucination_rate": 0.0035868787077950382, + "hallucination_rate_success": 0.0035868787077950382, + "deletion_rate": 0.002110500120244847, + "deletion_rate_success": 0.002110500120244847 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9531214848143985, + "f1_success": 0.9531214848143985, + "recall": 0.968503937007874, + "recall_success": 0.968503937007874, + "precision": 0.9480314960629921, + "precision_success": 0.9480314960629921, + "correct_pairwise": 0.8700787401574803, + "correct_pairwise_success": 0.8700787401574803, + "hallucination_rate": 0.00040397257431827187, + "hallucination_rate_success": 0.00040397257431827187, + "deletion_rate": 0.0002581459085413413, + "deletion_rate_success": 0.0002581459085413413 + } + } + }, + "ha": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5666666666666668, + "f1_success": 0.5666666666666668, + "recall": 0.6666666666666666, + "recall_success": 0.6666666666666666, + "precision": 0.49999999999999994, + "precision_success": 0.49999999999999994, + "correct_pairwise": 0.0, + "correct_pairwise_success": 0.0, + "hallucination_rate": 0.0, + "hallucination_rate_success": 0.0, + "deletion_rate": 0.00706581794847751, + "deletion_rate_success": 0.00706581794847751 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "he": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6985441269841274, + "f1_success": 0.6985441269841274, + "recall": 0.7932, + "recall_success": 0.7932, + "precision": 0.6589095238095262, + "precision_success": 0.6589095238095262, + "correct_pairwise": 0.2664, + "correct_pairwise_success": 0.2664, + "hallucination_rate": 0.002354411447344948, + "hallucination_rate_success": 0.002354411447344948, + "deletion_rate": 0.0009971099391658845, + "deletion_rate_success": 0.0009971099391658845 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "hi": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6302300965700959, + "f1_success": 0.6302300965700959, + "recall": 0.7912, + "recall_success": 0.7912, + "precision": 0.5605708802308824, + "precision_success": 0.5605708802308824, + "correct_pairwise": 0.1512, + "correct_pairwise_success": 0.1512, + "hallucination_rate": 0.006361529148411784, + "hallucination_rate_success": 0.006361529148411784, + "deletion_rate": 0.0020359761741864505, + "deletion_rate_success": 0.0020359761741864505 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9488359788359786, + "f1_success": 0.9488359788359786, + "recall": 0.9928571428571429, + "recall_success": 0.9928571428571429, + "precision": 0.9237566137566137, + "precision_success": 0.9237566137566137, + "correct_pairwise": 0.8111111111111111, + "correct_pairwise_success": 0.8111111111111111, + "hallucination_rate": 0.00040159374284163125, + "hallucination_rate_success": 0.00040159374284163125, + "deletion_rate": 0.0019516630358997857, + "deletion_rate_success": 0.0019516630358997857 + } + } + }, + "hu": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6770017027417047, + "f1_success": 0.6770017027417047, + "recall": 0.843, + "recall_success": 0.843, + "precision": 0.6068121733821773, + "precision_success": 0.6068121733821773, + "correct_pairwise": 0.1972, + "correct_pairwise_success": 0.1972, + "hallucination_rate": 0.0017405548943279208, + "hallucination_rate_success": 0.0017405548943279208, + "deletion_rate": 0.005464434444069083, + "deletion_rate_success": 0.005464434444069083 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "hy": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6289050907015615, + "f1_success": 0.6289050907015615, + "recall": 0.8132, + "recall_success": 0.8132, + "precision": 0.5434500288600304, + "precision_success": 0.5434500288600304, + "correct_pairwise": 0.138, + "correct_pairwise_success": 0.138, + "hallucination_rate": 0.0028651838724944815, + "hallucination_rate_success": 0.0028651838724944815, + "deletion_rate": 0.002827470976955292, + "deletion_rate_success": 0.002827470976955292 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "id": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7224911688311687, + "f1_success": 0.7224911688311687, + "recall": 0.8278, + "recall_success": 0.8278, + "precision": 0.6836798412698448, + "precision_success": 0.6836798412698448, + "correct_pairwise": 0.298, + "correct_pairwise_success": 0.298, + "hallucination_rate": 0.0024197281100977446, + "hallucination_rate_success": 0.0024197281100977446, + "deletion_rate": 0.0059872734963386425, + "deletion_rate_success": 0.0059872734963386425 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ig": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5923992673992674, + "f1_success": 0.5923992673992674, + "recall": 0.5961538461538461, + "recall_success": 0.5961538461538461, + "precision": 0.6583333333333333, + "precision_success": 0.6583333333333333, + "correct_pairwise": 0.11538461538461539, + "correct_pairwise_success": 0.11538461538461539, + "hallucination_rate": 0.0003076923076923077, + "hallucination_rate_success": 0.0003076923076923077, + "deletion_rate": 0.005033555027736393, + "deletion_rate_success": 0.005033555027736393 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "is": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6992729916394045, + "f1_success": 0.6992729916394045, + "recall": 0.7506361323155216, + "recall_success": 0.7506361323155216, + "precision": 0.7107294317217977, + "precision_success": 0.7107294317217977, + "correct_pairwise": 0.25699745547073793, + "correct_pairwise_success": 0.25699745547073793, + "hallucination_rate": 0.002372414392832522, + "hallucination_rate_success": 0.002372414392832522, + "deletion_rate": 0.00520909562057498, + "deletion_rate_success": 0.00520909562057498 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "it": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.732853726273727, + "f1_success": 0.732853726273727, + "recall": 0.8736, + "recall_success": 0.8736, + "precision": 0.6795851692751745, + "precision_success": 0.6795851692751745, + "correct_pairwise": 0.2804, + "correct_pairwise_success": 0.2804, + "hallucination_rate": 0.0013159844186293645, + "hallucination_rate_success": 0.0013159844186293645, + "deletion_rate": 0.003794821228409647, + "deletion_rate_success": 0.003794821228409647 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ja": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6338160686910321, + "f1_success": 0.6338160686910321, + "recall": 0.893, + "recall_success": 0.893, + "precision": 0.5245039229071599, + "precision_success": 0.5245039229071599, + "correct_pairwise": 0.1288, + "correct_pairwise_success": 0.1288, + "hallucination_rate": 0.002364787830144739, + "hallucination_rate_success": 0.002364787830144739, + "deletion_rate": 0.002376555687495188, + "deletion_rate_success": 0.002376555687495188 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9009891021085055, + "f1_success": 0.9009891021085055, + "recall": 0.9347014925373134, + "recall_success": 0.9347014925373134, + "precision": 0.888823738450604, + "precision_success": 0.888823738450604, + "correct_pairwise": 0.7388059701492538, + "correct_pairwise_success": 0.7388059701492538, + "hallucination_rate": 0.0010767711770197832, + "hallucination_rate_success": 0.0010767711770197832, + "deletion_rate": 0.006229478495530674, + "deletion_rate_success": 0.006229478495530674 + } + } + }, + "ka": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.632883347763348, + "f1_success": 0.632883347763348, + "recall": 0.77, + "recall_success": 0.77, + "precision": 0.570441062271064, + "precision_success": 0.570441062271064, + "correct_pairwise": 0.1572, + "correct_pairwise_success": 0.1572, + "hallucination_rate": 0.0008742705852678822, + "hallucination_rate_success": 0.0008742705852678822, + "deletion_rate": 0.00110685619749627, + "deletion_rate_success": 0.00110685619749627 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "kk": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.727014596932454, + "f1_success": 0.727014596932454, + "recall": 0.8251197809719371, + "recall_success": 0.8251197809719371, + "precision": 0.6887726388753056, + "precision_success": 0.6887726388753056, + "correct_pairwise": 0.3052703627652293, + "correct_pairwise_success": 0.3052703627652293, + "hallucination_rate": 0.004332883202325234, + "hallucination_rate_success": 0.004332883202325234, + "deletion_rate": 0.0005423964900332614, + "deletion_rate_success": 0.0005423964900332614 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9881523809523811, + "f1_success": 0.9881523809523811, + "recall": 1.0, + "recall_success": 1.0, + "precision": 0.9809333333333332, + "precision_success": 0.9809333333333332, + "correct_pairwise": 0.948, + "correct_pairwise_success": 0.948, + "hallucination_rate": 8.573426515062544e-05, + "hallucination_rate_success": 8.573426515062544e-05, + "deletion_rate": 0.00035605121204929113, + "deletion_rate_success": 0.00035605121204929113 + } + } + }, + "km": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.40752584925517227, + "f1_success": 0.40752584925517227, + "recall": 0.5375939849624061, + "recall_success": 0.5375939849624061, + "precision": 0.3623045709511876, + "precision_success": 0.3623045709511876, + "correct_pairwise": 0.015037593984962405, + "correct_pairwise_success": 0.015037593984962405, + "hallucination_rate": 0.004620282171656489, + "hallucination_rate_success": 0.004620282171656489, + "deletion_rate": 0.0028545626750141623, + "deletion_rate_success": 0.0028545626750141623 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8648654829163314, + "f1_success": 0.8648654829163314, + "recall": 0.9033898305084745, + "recall_success": 0.9033898305084745, + "precision": 0.8527582728006461, + "precision_success": 0.8527582728006461, + "correct_pairwise": 0.711864406779661, + "correct_pairwise_success": 0.711864406779661, + "hallucination_rate": 0.0017303437577980449, + "hallucination_rate_success": 0.0017303437577980449, + "deletion_rate": 0.0010896344753899756, + "deletion_rate_success": 0.0010896344753899756 + } + } + }, + "kn": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5964701964701968, + "f1_success": 0.5964701964701968, + "recall": 0.583916083916084, + "recall_success": 0.583916083916084, + "precision": 0.6699300699300701, + "precision_success": 0.6699300699300701, + "correct_pairwise": 0.07692307692307693, + "correct_pairwise_success": 0.07692307692307693, + "hallucination_rate": 0.010741663977518546, + "hallucination_rate_success": 0.010741663977518546, + "deletion_rate": 0.003985858856250373, + "deletion_rate_success": 0.003985858856250373 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ko": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7846010389610378, + "f1_success": 0.7846010389610378, + "recall": 0.9696, + "recall_success": 0.9696, + "precision": 0.6925797286226396, + "precision_success": 0.6925797286226396, + "correct_pairwise": 0.3256, + "correct_pairwise_success": 0.3256, + "hallucination_rate": 0.002837023408791547, + "hallucination_rate_success": 0.002837023408791547, + "deletion_rate": 0.0008630765398491523, + "deletion_rate_success": 0.0008630765398491523 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ku": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5815752358752353, + "f1_success": 0.5815752358752353, + "recall": 0.764, + "recall_success": 0.764, + "precision": 0.49683013875014004, + "precision_success": 0.49683013875014004, + "correct_pairwise": 0.0976, + "correct_pairwise_success": 0.0976, + "hallucination_rate": 0.003049939360773281, + "hallucination_rate_success": 0.003049939360773281, + "deletion_rate": 0.0013637554567615673, + "deletion_rate_success": 0.0013637554567615673 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ky": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6735760971055086, + "f1_success": 0.6735760971055086, + "recall": 0.7549019607843137, + "recall_success": 0.7549019607843137, + "precision": 0.6436274509803922, + "precision_success": 0.6436274509803922, + "correct_pairwise": 0.23529411764705882, + "correct_pairwise_success": 0.23529411764705882, + "hallucination_rate": 0.007140047064022797, + "hallucination_rate_success": 0.007140047064022797, + "deletion_rate": 4.901960784313725e-05, + "deletion_rate_success": 4.901960784313725e-05 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "la": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7777777777777777, + "f1_success": 0.7777777777777777, + "recall": 0.6666666666666666, + "recall_success": 0.6666666666666666, + "precision": 1.0, + "precision_success": 1.0, + "correct_pairwise": 0.3333333333333333, + "correct_pairwise_success": 0.3333333333333333, + "hallucination_rate": 0.0, + "hallucination_rate_success": 0.0, + "deletion_rate": 0.006535947712418301, + "deletion_rate_success": 0.006535947712418301 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "lt": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.670809586622528, + "f1_success": 0.670809586622528, + "recall": 0.8084, + "recall_success": 0.8084, + "precision": 0.6205203174603207, + "precision_success": 0.6205203174603207, + "correct_pairwise": 0.1976, + "correct_pairwise_success": 0.1976, + "hallucination_rate": 0.0015627861207847473, + "hallucination_rate_success": 0.0015627861207847473, + "deletion_rate": 0.005172720631451417, + "deletion_rate_success": 0.005172720631451417 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9592190476190482, + "f1_success": 0.9592190476190482, + "recall": 0.99, + "recall_success": 0.99, + "precision": 0.940933333333333, + "precision_success": 0.940933333333333, + "correct_pairwise": 0.84, + "correct_pairwise_success": 0.84, + "hallucination_rate": 0.0003513407500928848, + "hallucination_rate_success": 0.0003513407500928848, + "deletion_rate": 0.002082447145035081, + "deletion_rate_success": 0.002082447145035081 + } + } + }, + "lv": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6681591408591407, + "f1_success": 0.6681591408591407, + "recall": 0.8054, + "recall_success": 0.8054, + "precision": 0.6150585803085828, + "precision_success": 0.6150585803085828, + "correct_pairwise": 0.1972, + "correct_pairwise_success": 0.1972, + "hallucination_rate": 0.0012948329239719537, + "hallucination_rate_success": 0.0012948329239719537, + "deletion_rate": 0.00814116656024893, + "deletion_rate_success": 0.00814116656024893 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9701341647770227, + "f1_success": 0.9701341647770227, + "recall": 0.9990079365079365, + "recall_success": 0.9990079365079365, + "precision": 0.9531084656084663, + "precision_success": 0.9531084656084663, + "correct_pairwise": 0.878968253968254, + "correct_pairwise_success": 0.878968253968254, + "hallucination_rate": 0.0002377551652592137, + "hallucination_rate_success": 0.0002377551652592137, + "deletion_rate": 0.0010451384115143325, + "deletion_rate_success": 0.0010451384115143325 + } + } + }, + "mg": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5503968253968254, + "f1_success": 0.5503968253968254, + "recall": 0.6018518518518519, + "recall_success": 0.6018518518518519, + "precision": 0.5722222222222222, + "precision_success": 0.5722222222222222, + "correct_pairwise": 0.05555555555555555, + "correct_pairwise_success": 0.05555555555555555, + "hallucination_rate": 0.000257009990616548, + "hallucination_rate_success": 0.000257009990616548, + "deletion_rate": 0.002550153142789387, + "deletion_rate_success": 0.002550153142789387 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "mk": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6957636075036084, + "f1_success": 0.6957636075036084, + "recall": 0.8164, + "recall_success": 0.8164, + "precision": 0.6483677777777802, + "precision_success": 0.6483677777777802, + "correct_pairwise": 0.244, + "correct_pairwise_success": 0.244, + "hallucination_rate": 0.00401003811303035, + "hallucination_rate_success": 0.00401003811303035, + "deletion_rate": 0.0011058885307367865, + "deletion_rate_success": 0.0011058885307367865 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ml": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5615049779732317, + "f1_success": 0.5615049779732317, + "recall": 0.6554232804232805, + "recall_success": 0.6554232804232805, + "precision": 0.527830792810951, + "precision_success": 0.527830792810951, + "correct_pairwise": 0.09391534391534391, + "correct_pairwise_success": 0.09391534391534391, + "hallucination_rate": 0.0044283819169686905, + "hallucination_rate_success": 0.0044283819169686905, + "deletion_rate": 0.0059274793731573065, + "deletion_rate_success": 0.0059274793731573065 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "mn": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7002647619047646, + "f1_success": 0.7002647619047646, + "recall": 0.7308, + "recall_success": 0.7308, + "precision": 0.7100582051282051, + "precision_success": 0.7100582051282051, + "correct_pairwise": 0.3076, + "correct_pairwise_success": 0.3076, + "hallucination_rate": 0.0022027623800024263, + "hallucination_rate_success": 0.0022027623800024263, + "deletion_rate": 0.0001919116833279044, + "deletion_rate_success": 0.0001919116833279044 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "mr": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5943247907647932, + "f1_success": 0.5943247907647932, + "recall": 0.6368, + "recall_success": 0.6368, + "precision": 0.6110982539682542, + "precision_success": 0.6110982539682542, + "correct_pairwise": 0.1264, + "correct_pairwise_success": 0.1264, + "hallucination_rate": 0.01845174793779083, + "hallucination_rate_success": 0.01845174793779083, + "deletion_rate": 0.0010360322185237383, + "deletion_rate_success": 0.0010360322185237383 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ms": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7001579487293726, + "f1_success": 0.7001579487293726, + "recall": 0.8035714285714286, + "recall_success": 0.8035714285714286, + "precision": 0.6667267058338479, + "precision_success": 0.6667267058338479, + "correct_pairwise": 0.2708333333333333, + "correct_pairwise_success": 0.2708333333333333, + "hallucination_rate": 0.0028002939480644626, + "hallucination_rate_success": 0.0028002939480644626, + "deletion_rate": 0.005686214173233866, + "deletion_rate_success": 0.005686214173233866 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "mt": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6553113553113553, + "f1_success": 0.6553113553113553, + "recall": 0.7307692307692307, + "recall_success": 0.7307692307692307, + "precision": 0.6403846153846153, + "precision_success": 0.6403846153846153, + "correct_pairwise": 0.19230769230769232, + "correct_pairwise_success": 0.19230769230769232, + "hallucination_rate": 0.001549568499479054, + "hallucination_rate_success": 0.001549568499479054, + "deletion_rate": 0.007063306062367414, + "deletion_rate_success": 0.007063306062367414 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "my": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5136326784326777, + "f1_success": 0.5136326784326777, + "recall": 0.6358, + "recall_success": 0.6358, + "precision": 0.4626103318903346, + "precision_success": 0.4626103318903346, + "correct_pairwise": 0.0884, + "correct_pairwise_success": 0.0884, + "hallucination_rate": 0.0007777015376157116, + "hallucination_rate_success": 0.0007777015376157116, + "deletion_rate": 0.0017232568568641047, + "deletion_rate_success": 0.0017232568568641047 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ne": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6764268657125816, + "f1_success": 0.6764268657125816, + "recall": 0.8214285714285714, + "recall_success": 0.8214285714285714, + "precision": 0.6111884844027703, + "precision_success": 0.6111884844027703, + "correct_pairwise": 0.19305019305019305, + "correct_pairwise_success": 0.19305019305019305, + "hallucination_rate": 0.008891675467541769, + "hallucination_rate_success": 0.008891675467541769, + "deletion_rate": 0.0007190332039692074, + "deletion_rate_success": 0.0007190332039692074 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "nl": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.769668369408368, + "f1_success": 0.769668369408368, + "recall": 0.8878, + "recall_success": 0.8878, + "precision": 0.7196537103174655, + "precision_success": 0.7196537103174655, + "correct_pairwise": 0.3524, + "correct_pairwise_success": 0.3524, + "hallucination_rate": 0.0019698486990166455, + "hallucination_rate_success": 0.0019698486990166455, + "deletion_rate": 0.0063167320144829, + "deletion_rate_success": 0.0063167320144829 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "pa": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.603672745694022, + "f1_success": 0.603672745694022, + "recall": 0.7021276595744681, + "recall_success": 0.7021276595744681, + "precision": 0.5666666666666665, + "precision_success": 0.5666666666666665, + "correct_pairwise": 0.1702127659574468, + "correct_pairwise_success": 0.1702127659574468, + "hallucination_rate": 0.011356279671013176, + "hallucination_rate_success": 0.011356279671013176, + "deletion_rate": 0.0036338378020326955, + "deletion_rate_success": 0.0036338378020326955 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "pl": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7343102525252525, + "f1_success": 0.7343102525252525, + "recall": 0.873, + "recall_success": 0.873, + "precision": 0.6746723809523856, + "precision_success": 0.6746723809523856, + "correct_pairwise": 0.284, + "correct_pairwise_success": 0.284, + "hallucination_rate": 0.001148436920533467, + "hallucination_rate_success": 0.001148436920533467, + "deletion_rate": 0.004519199018912118, + "deletion_rate_success": 0.004519199018912118 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9564978182508072, + "f1_success": 0.9564978182508072, + "recall": 0.9960159362549801, + "recall_success": 0.9960159362549801, + "precision": 0.9337317397078346, + "precision_success": 0.9337317397078346, + "correct_pairwise": 0.8207171314741036, + "correct_pairwise_success": 0.8207171314741036, + "hallucination_rate": 0.00013880134537740848, + "hallucination_rate_success": 0.00013880134537740848, + "deletion_rate": 0.002192527519363867, + "deletion_rate_success": 0.002192527519363867 + } + } + }, + "ps": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6695084315522268, + "f1_success": 0.6695084315522268, + "recall": 0.8795620437956204, + "recall_success": 0.8795620437956204, + "precision": 0.5685262426138341, + "precision_success": 0.5685262426138341, + "correct_pairwise": 0.1678832116788321, + "correct_pairwise_success": 0.1678832116788321, + "hallucination_rate": 0.0020809230575481005, + "hallucination_rate_success": 0.0020809230575481005, + "deletion_rate": 0.0007645890132440491, + "deletion_rate_success": 0.0007645890132440491 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9510857422147743, + "f1_success": 0.9510857422147743, + "recall": 0.9853372434017595, + "recall_success": 0.9853372434017595, + "precision": 0.9312072336265883, + "precision_success": 0.9312072336265883, + "correct_pairwise": 0.8372434017595308, + "correct_pairwise_success": 0.8372434017595308, + "hallucination_rate": 0.0006950636263675396, + "hallucination_rate_success": 0.0006950636263675396, + "deletion_rate": 0.0019447416217771743, + "deletion_rate_success": 0.0019447416217771743 + } + } + }, + "pt": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7579291801684906, + "f1_success": 0.7579291801684906, + "recall": 0.87, + "recall_success": 0.87, + "precision": 0.71844947570948, + "precision_success": 0.71844947570948, + "correct_pairwise": 0.328, + "correct_pairwise_success": 0.328, + "hallucination_rate": 0.0012476129193182068, + "hallucination_rate_success": 0.0012476129193182068, + "deletion_rate": 0.0034508342591126136, + "deletion_rate_success": 0.0034508342591126136 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ro": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7198972272172273, + "f1_success": 0.7198972272172273, + "recall": 0.8394, + "recall_success": 0.8394, + "precision": 0.6736192496392528, + "precision_success": 0.6736192496392528, + "correct_pairwise": 0.2812, + "correct_pairwise_success": 0.2812, + "hallucination_rate": 0.0017816592054504877, + "hallucination_rate_success": 0.0017816592054504877, + "deletion_rate": 0.005348498914826303, + "deletion_rate_success": 0.005348498914826303 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.959926984126985, + "f1_success": 0.959926984126985, + "recall": 0.996, + "recall_success": 0.996, + "precision": 0.9404380952380955, + "precision_success": 0.9404380952380955, + "correct_pairwise": 0.846, + "correct_pairwise_success": 0.846, + "hallucination_rate": 0.0006243582977278069, + "hallucination_rate_success": 0.0006243582977278069, + "deletion_rate": 0.0013341217195902905, + "deletion_rate_success": 0.0013341217195902905 + } + } + }, + "ru": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7376602886002895, + "f1_success": 0.7376602886002895, + "recall": 0.8808, + "recall_success": 0.8808, + "precision": 0.6769525396825457, + "precision_success": 0.6769525396825457, + "correct_pairwise": 0.2896, + "correct_pairwise_success": 0.2896, + "hallucination_rate": 0.005110627494068416, + "hallucination_rate_success": 0.005110627494068416, + "deletion_rate": 0.0016374670443644707, + "deletion_rate_success": 0.0016374670443644707 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9862903225806454, + "f1_success": 0.9862903225806454, + "recall": 1.0, + "recall_success": 1.0, + "precision": 0.977822580645161, + "precision_success": 0.977822580645161, + "correct_pairwise": 0.9395161290322581, + "correct_pairwise_success": 0.9395161290322581, + "hallucination_rate": 0.0008858251221485894, + "hallucination_rate_success": 0.0008858251221485894, + "deletion_rate": 0.0009755970249184842, + "deletion_rate_success": 0.0009755970249184842 + } + } + }, + "si": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5955093571372638, + "f1_success": 0.5955093571372638, + "recall": 0.748062015503876, + "recall_success": 0.748062015503876, + "precision": 0.526738033714778, + "precision_success": 0.526738033714778, + "correct_pairwise": 0.16279069767441862, + "correct_pairwise_success": 0.16279069767441862, + "hallucination_rate": 0.002626053242324036, + "hallucination_rate_success": 0.002626053242324036, + "deletion_rate": 0.0015710555765964833, + "deletion_rate_success": 0.0015710555765964833 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "sk": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.697137340910283, + "f1_success": 0.697137340910283, + "recall": 0.8418, + "recall_success": 0.8418, + "precision": 0.6373501731601758, + "precision_success": 0.6373501731601758, + "correct_pairwise": 0.2304, + "correct_pairwise_success": 0.2304, + "hallucination_rate": 0.003301732272418076, + "hallucination_rate_success": 0.003301732272418076, + "deletion_rate": 0.0058937636425625715, + "deletion_rate_success": 0.0058937636425625715 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "sl": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6939812476412475, + "f1_success": 0.6939812476412475, + "recall": 0.825, + "recall_success": 0.825, + "precision": 0.6460621212121253, + "precision_success": 0.6460621212121253, + "correct_pairwise": 0.2312, + "correct_pairwise_success": 0.2312, + "hallucination_rate": 0.0020169758611796964, + "hallucination_rate_success": 0.0020169758611796964, + "deletion_rate": 0.0049312676660023536, + "deletion_rate_success": 0.0049312676660023536 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "sq": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6748963517528229, + "f1_success": 0.6748963517528229, + "recall": 0.78, + "recall_success": 0.78, + "precision": 0.6424058241758273, + "precision_success": 0.6424058241758273, + "correct_pairwise": 0.2196, + "correct_pairwise_success": 0.2196, + "hallucination_rate": 0.0010896130793104147, + "hallucination_rate_success": 0.0010896130793104147, + "deletion_rate": 0.006284639719491186, + "deletion_rate_success": 0.006284639719491186 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "sr": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7186816450216442, + "f1_success": 0.7186816450216442, + "recall": 0.8482, + "recall_success": 0.8482, + "precision": 0.6700098412698463, + "precision_success": 0.6700098412698463, + "correct_pairwise": 0.2768, + "correct_pairwise_success": 0.2768, + "hallucination_rate": 0.0017807752837845445, + "hallucination_rate_success": 0.0017807752837845445, + "deletion_rate": 0.004474098644158447, + "deletion_rate_success": 0.004474098644158447 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "sv": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7317646753246757, + "f1_success": 0.7317646753246757, + "recall": 0.8426, + "recall_success": 0.8426, + "precision": 0.6904955555555603, + "precision_success": 0.6904955555555603, + "correct_pairwise": 0.3036, + "correct_pairwise_success": 0.3036, + "hallucination_rate": 0.0018353528238923011, + "hallucination_rate_success": 0.0018353528238923011, + "deletion_rate": 0.006681205168288853, + "deletion_rate_success": 0.006681205168288853 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ta": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5593352436412893, + "f1_success": 0.5593352436412893, + "recall": 0.6412811387900356, + "recall_success": 0.6412811387900356, + "precision": 0.5320112410325943, + "precision_success": 0.5320112410325943, + "correct_pairwise": 0.10177935943060498, + "correct_pairwise_success": 0.10177935943060498, + "hallucination_rate": 0.003727363497056773, + "hallucination_rate_success": 0.003727363497056773, + "deletion_rate": 0.0008773235395904057, + "deletion_rate_success": 0.0008773235395904057 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9689243027888449, + "f1_success": 0.9689243027888449, + "recall": 0.9880478087649402, + "recall_success": 0.9880478087649402, + "precision": 0.9581673306772907, + "precision_success": 0.9581673306772907, + "correct_pairwise": 0.896414342629482, + "correct_pairwise_success": 0.896414342629482, + "hallucination_rate": 5.995954093251004e-05, + "hallucination_rate_success": 5.995954093251004e-05, + "deletion_rate": 0.0007168224166254561, + "deletion_rate_success": 0.0007168224166254561 + } + } + }, + "te": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5997542320049875, + "f1_success": 0.5997542320049875, + "recall": 0.6873111782477341, + "recall_success": 0.6873111782477341, + "precision": 0.5719572723349153, + "precision_success": 0.5719572723349153, + "correct_pairwise": 0.14501510574018128, + "correct_pairwise_success": 0.14501510574018128, + "hallucination_rate": 0.0036956792666189295, + "hallucination_rate_success": 0.0036956792666189295, + "deletion_rate": 0.0014475777669801394, + "deletion_rate_success": 0.0014475777669801394 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "tg": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7046365914786964, + "f1_success": 0.7046365914786964, + "recall": 0.7960526315789473, + "recall_success": 0.7960526315789473, + "precision": 0.6736842105263158, + "precision_success": 0.6736842105263158, + "correct_pairwise": 0.2631578947368421, + "correct_pairwise_success": 0.2631578947368421, + "hallucination_rate": 0.004273590912500673, + "hallucination_rate_success": 0.004273590912500673, + "deletion_rate": 0.0003510595615858774, + "deletion_rate_success": 0.0003510595615858774 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "th": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6377106933245635, + "f1_success": 0.6377106933245635, + "recall": 0.9532, + "recall_success": 0.9532, + "precision": 0.5072269356134071, + "precision_success": 0.5072269356134071, + "correct_pairwise": 0.1064, + "correct_pairwise_success": 0.1064, + "hallucination_rate": 0.0023143800642900386, + "hallucination_rate_success": 0.0023143800642900386, + "deletion_rate": 0.000655006324155229, + "deletion_rate_success": 0.000655006324155229 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "tr": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7708152856294018, + "f1_success": 0.7708152856294018, + "recall": 0.8984, + "recall_success": 0.8984, + "precision": 0.7143595526695586, + "precision_success": 0.7143595526695586, + "correct_pairwise": 0.3464, + "correct_pairwise_success": 0.3464, + "hallucination_rate": 0.004159457574508295, + "hallucination_rate_success": 0.004159457574508295, + "deletion_rate": 0.0032691364605659566, + "deletion_rate_success": 0.0032691364605659566 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9563893110435656, + "f1_success": 0.9563893110435656, + "recall": 0.9853723404255319, + "recall_success": 0.9853723404255319, + "precision": 0.9417220744680848, + "precision_success": 0.9417220744680848, + "correct_pairwise": 0.8404255319148937, + "correct_pairwise_success": 0.8404255319148937, + "hallucination_rate": 0.0006752741625126531, + "hallucination_rate_success": 0.0006752741625126531, + "deletion_rate": 0.0019815246532267627, + "deletion_rate_success": 0.0019815246532267627 + } + } + }, + "uk": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7214377720057719, + "f1_success": 0.7214377720057719, + "recall": 0.8542, + "recall_success": 0.8542, + "precision": 0.6661316281785897, + "precision_success": 0.6661316281785897, + "correct_pairwise": 0.2676, + "correct_pairwise_success": 0.2676, + "hallucination_rate": 0.005248351232303586, + "hallucination_rate_success": 0.005248351232303586, + "deletion_rate": 0.0020079313864787107, + "deletion_rate_success": 0.0020079313864787107 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "ur": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6787046058885684, + "f1_success": 0.6787046058885684, + "recall": 0.8689619732785201, + "recall_success": 0.8689619732785201, + "precision": 0.5833859443057785, + "precision_success": 0.5833859443057785, + "correct_pairwise": 0.17985611510791366, + "correct_pairwise_success": 0.17985611510791366, + "hallucination_rate": 0.001848737507566069, + "hallucination_rate_success": 0.001848737507566069, + "deletion_rate": 0.0009473076763764707, + "deletion_rate_success": 0.0009473076763764707 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "uz": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7066430580671058, + "f1_success": 0.7066430580671058, + "recall": 0.7985232067510548, + "recall_success": 0.7985232067510548, + "precision": 0.6842726542093631, + "precision_success": 0.6842726542093631, + "correct_pairwise": 0.23523206751054854, + "correct_pairwise_success": 0.23523206751054854, + "hallucination_rate": 0.0007118439654064576, + "hallucination_rate_success": 0.0007118439654064576, + "deletion_rate": 0.0034157980344862227, + "deletion_rate_success": 0.0034157980344862227 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "vi": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.7146309668109676, + "f1_success": 0.7146309668109676, + "recall": 0.7962, + "recall_success": 0.7962, + "precision": 0.7002101098901126, + "precision_success": 0.7002101098901126, + "correct_pairwise": 0.2948, + "correct_pairwise_success": 0.2948, + "hallucination_rate": 0.01096706041998189, + "hallucination_rate_success": 0.01096706041998189, + "deletion_rate": 0.006873043929119718, + "deletion_rate_success": 0.006873043929119718 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": {} + } + }, + "zh": { + "ted2020-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5457006412553302, + "f1_success": 0.5457006412553302, + "recall": 0.7448173741362291, + "recall_success": 0.7448173741362291, + "precision": 0.46754378870908136, + "precision_success": 0.46754378870908136, + "correct_pairwise": 0.09328726554787758, + "correct_pairwise_success": 0.09328726554787758, + "hallucination_rate": 0.009371017506540357, + "hallucination_rate_success": 0.009371017506540357, + "deletion_rate": 0.0013219064738309986, + "deletion_rate_success": 0.0013219064738309986 + } + }, + "ersatz": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.8075674617779903, + "f1_success": 0.8075674617779903, + "recall": 0.984, + "recall_success": 0.984, + "precision": 0.7330227400050927, + "precision_success": 0.7330227400050927, + "correct_pairwise": 0.49, + "correct_pairwise_success": 0.49, + "hallucination_rate": 0.0005536821504100962, + "hallucination_rate_success": 0.0005536821504100962, + "deletion_rate": 0.009728746116918196, + "deletion_rate_success": 0.009728746116918196 + } + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/llama-3_tweets.json b/wtpsplit/evaluation/evaluation_results/short/llama-3_tweets.json new file mode 100644 index 00000000..2867a5cb --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/llama-3_tweets.json @@ -0,0 +1,138 @@ +{ + "en-de": { + "short-sequences": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9000743912756796, + "f1_success": 0.9000743912756796, + "recall": 0.9680330586439183, + "recall_success": 0.9680330586439183, + "precision": 0.8792181278755463, + "precision_success": 0.8792181278755463, + "correct_pairwise": 0.6340956340956341, + "correct_pairwise_success": 0.6340956340956341, + "hallucination_rate": 0.0011377342104382758, + "hallucination_rate_success": 0.0011377342104382758, + "deletion_rate": 0.008195428111353568, + "deletion_rate_success": 0.008195428111353568 + } + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6814990307122929, + "f1_success": 0.6814990307122929, + "recall": 0.8255033917185627, + "recall_success": 0.8255033917185627, + "precision": 0.6368230781035003, + "precision_success": 0.6368230781035003, + "correct_pairwise": 0.12266112266112267, + "correct_pairwise_success": 0.12266112266112267, + "hallucination_rate": 0.0004693245298112651, + "hallucination_rate_success": 0.0004693245298112651, + "deletion_rate": 0.005197690710770958, + "deletion_rate_success": 0.005197690710770958 + } + } + }, + "et": { + "short-sequences": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9137650111486688, + "f1_success": 0.9137650111486688, + "recall": 0.8866440174062679, + "recall_success": 0.8866440174062679, + "precision": 0.9596589918018488, + "precision_success": 0.9596589918018488, + "correct_pairwise": 0.5615763546798029, + "correct_pairwise_success": 0.5615763546798029, + "hallucination_rate": 0.0012150799494800382, + "hallucination_rate_success": 0.0012150799494800382, + "deletion_rate": 0.0025916411569781627, + "deletion_rate_success": 0.0025916411569781627 + } + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.5635486504595344, + "f1_success": 0.5635486504595344, + "recall": 0.5776919458699341, + "recall_success": 0.5776919458699341, + "precision": 0.622853624208304, + "precision_success": 0.622853624208304, + "correct_pairwise": 0.03940886699507389, + "correct_pairwise_success": 0.03940886699507389, + "hallucination_rate": 0.0011082062155977717, + "hallucination_rate_success": 0.0011082062155977717, + "deletion_rate": 0.0022317863489521067, + "deletion_rate_success": 0.0022317863489521067 + } + } + }, + "sl": { + "short-sequences": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9132655325287299, + "f1_success": 0.9132655325287299, + "recall": 0.9171784085090536, + "recall_success": 0.9171784085090536, + "precision": 0.94169590490155, + "precision_success": 0.94169590490155, + "correct_pairwise": 0.7338709677419355, + "correct_pairwise_success": 0.7338709677419355, + "hallucination_rate": 0.009590024681316176, + "hallucination_rate_success": 0.009590024681316176, + "deletion_rate": 0.009671156528351032, + "deletion_rate_success": 0.009671156528351032 + } + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6835416558840381, + "f1_success": 0.6835416558840381, + "recall": 0.6869996043383146, + "recall_success": 0.6869996043383146, + "precision": 0.7738261430549739, + "precision_success": 0.7738261430549739, + "correct_pairwise": 0.23313782991202345, + "correct_pairwise_success": 0.23313782991202345, + "hallucination_rate": 0.001969530277248845, + "hallucination_rate_success": 0.001969530277248845, + "deletion_rate": 0.011673369745347639, + "deletion_rate_success": 0.011673369745347639 + } + } + }, + "sr": { + "short-sequences": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.9218584656084658, + "f1_success": 0.9218584656084658, + "recall": 0.9375868055555553, + "recall_success": 0.9375868055555553, + "precision": 0.9243923611111113, + "precision_success": 0.9243923611111113, + "correct_pairwise": 0.7604166666666666, + "correct_pairwise_success": 0.7604166666666666, + "hallucination_rate": 0.002547107952804255, + "hallucination_rate_success": 0.002547107952804255, + "deletion_rate": 0.003932671999102301, + "deletion_rate_success": 0.003932671999102301 + } + }, + "short-sequences-corrupted-asr": { + "meta/meta-llama-3-8b-instruct": { + "f1": 0.6767789502164505, + "f1_success": 0.6767789502164505, + "recall": 0.7411458333333338, + "recall_success": 0.7411458333333338, + "precision": 0.6761615410052916, + "precision_success": 0.6761615410052916, + "correct_pairwise": 0.19270833333333334, + "correct_pairwise_success": 0.19270833333333334, + "hallucination_rate": 0.0009933949979813483, + "hallucination_rate_success": 0.0009933949979813483, + "deletion_rate": 0.0038828355682355674, + "deletion_rate_success": 0.0038828355682355674 + } + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/sat-12l-no-limited-lookahead.json b/wtpsplit/evaluation/evaluation_results/short/sat-12l-no-limited-lookahead.json new file mode 100644 index 00000000..7cd81f4c --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/sat-12l-no-limited-lookahead.json @@ -0,0 +1,3346 @@ +{ + "af": { + "opus100": { + "u": 0.7462411918339981, + "t": 0.8225903033389663, + "punct": null, + "u_acc": 0.3140495867768595, + "t_acc": 0.47107438016528924, + "punct_acc": null, + "threshold_t": 0.17086972296237946, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8693996484613111, + "t": 0.8900957009447575, + "punct": null, + "u_acc": 0.7169811320754716, + "t_acc": 0.7264150943396226, + "punct_acc": null, + "threshold_t": 0.0639052465558052, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7020221146374992, + "t": 0.7892551892551892, + "punct": null, + "u_acc": 0.2553846153846154, + "t_acc": 0.38153846153846155, + "punct_acc": null, + "threshold_t": 0.08402670174837112, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7399310091617783, + "t": 0.7883369963369964, + "punct": null, + "u_acc": 0.3046153846153846, + "t_acc": 0.38153846153846155, + "punct_acc": null, + "threshold_t": 0.08099129796028137, + "threshold_adj": 0.01 + } + }, + "am": { + "opus100": { + "u": 0.5397043451536292, + "t": 0.735693166717263, + "punct": null, + "u_acc": 0.04618473895582329, + "t_acc": 0.30522088353413657, + "punct_acc": null, + "threshold_t": 0.19163824617862701, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.554195045405983, + "t": 0.7044414202192735, + "punct": null, + "u_acc": 0.0546875, + "t_acc": 0.296875, + "punct_acc": null, + "threshold_t": 0.0494118258357048, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.5513608830207264, + "t": 0.6838293217199467, + "punct": null, + "u_acc": 0.0703125, + "t_acc": 0.2734375, + "punct_acc": null, + "threshold_t": 0.047310952097177505, + "threshold_adj": 0.01 + } + }, + "ar": { + "ersatz": { + "u": 0.7224403278551521, + "t": 0.7691750378223389, + "punct": null, + "u_acc": 0.31648936170212766, + "t_acc": 0.40425531914893614, + "punct_acc": null, + "threshold_t": 0.018047424033284187, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.6932293936745785, + "t": 0.823341562498189, + "punct": null, + "u_acc": 0.20481927710843373, + "t_acc": 0.4899598393574297, + "punct_acc": null, + "threshold_t": 0.08267717808485031, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8259239535710124, + "t": 0.8560554684393693, + "punct": null, + "u_acc": 0.5411764705882353, + "t_acc": 0.5941176470588235, + "punct_acc": null, + "threshold_t": 0.1212124302983284, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6368075005004966, + "t": 0.7352308631238044, + "punct": null, + "u_acc": 0.154, + "t_acc": 0.2744, + "punct_acc": null, + "threshold_t": 0.093316450715065, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6379936383267862, + "t": 0.7275650110329988, + "punct": null, + "u_acc": 0.16, + "t_acc": 0.2672, + "punct_acc": null, + "threshold_t": 0.08205945789813995, + "threshold_adj": 0.01 + } + }, + "az": { + "opus100": { + "u": 0.6456324308748564, + "t": 0.7447871766833034, + "punct": null, + "u_acc": 0.1927710843373494, + "t_acc": 0.3192771084337349, + "punct_acc": null, + "threshold_t": 0.23460319638252258, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7675943167404533, + "t": 0.7976843257871628, + "punct": null, + "u_acc": 0.3587470449172577, + "t_acc": 0.4095744680851064, + "punct_acc": null, + "threshold_t": 0.021320201456546783, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7813283860596291, + "t": 0.8054349465488391, + "punct": null, + "u_acc": 0.38416075650118203, + "t_acc": 0.43498817966903075, + "punct_acc": null, + "threshold_t": 0.0198686383664608, + "threshold_adj": 0.009999999999999998 + } + }, + "be": { + "opus100": { + "u": 0.7450067933357533, + "t": 0.8234704003183695, + "punct": null, + "u_acc": 0.2953156822810591, + "t_acc": 0.5112016293279023, + "punct_acc": null, + "threshold_t": 0.1496308594942093, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.7191235671329534, + "t": 0.8543162425164337, + "punct": null, + "u_acc": 0.42379182156133827, + "t_acc": 0.6245353159851301, + "punct_acc": null, + "threshold_t": 0.06955911964178085, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.7234497877620935, + "t": 0.7863627935983548, + "punct": null, + "u_acc": 0.2764438676184296, + "t_acc": 0.399740428293316, + "punct_acc": null, + "threshold_t": 0.06491836160421371, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7523486506156277, + "t": 0.8060451036150343, + "punct": null, + "u_acc": 0.3244646333549643, + "t_acc": 0.43218689162881246, + "punct_acc": null, + "threshold_t": 0.03417561948299408, + "threshold_adj": 0.009999999999999998 + } + }, + "bg": { + "opus100": { + "u": 0.8352679601215035, + "t": 0.8975552879802555, + "punct": null, + "u_acc": 0.5130260521042084, + "t_acc": 0.6693386773547094, + "punct_acc": null, + "threshold_t": 0.030938221141695976, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.872587428501407, + "t": 0.9569897645166461, + "punct": null, + "u_acc": 0.6236559139784946, + "t_acc": 0.8709677419354839, + "punct_acc": null, + "threshold_t": 0.0568266287446022, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7257914251823541, + "t": 0.7857257786657786, + "punct": null, + "u_acc": 0.2592, + "t_acc": 0.3976, + "punct_acc": null, + "threshold_t": 0.05969195067882538, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7610668841059182, + "t": 0.7951702009102009, + "punct": null, + "u_acc": 0.3332, + "t_acc": 0.4136, + "punct_acc": null, + "threshold_t": 0.06334113329648972, + "threshold_adj": 0.01 + } + }, + "bn": { + "opus100": { + "u": 0.7178910733617986, + "t": 0.8742031459728948, + "punct": null, + "u_acc": 0.26961770623742454, + "t_acc": 0.6217303822937625, + "punct_acc": null, + "threshold_t": 0.11572057753801346, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.8738095238095239, + "t": null, + "punct": null, + "u_acc": 0.5714285714285714, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.42323374561115806, + "t": 0.6328425831927856, + "punct": null, + "u_acc": 0.03230769230769231, + "t_acc": 0.13384615384615384, + "punct_acc": null, + "threshold_t": 0.08825229853391647, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6449131323745386, + "t": 0.727093709622115, + "punct": null, + "u_acc": 0.16615384615384615, + "t_acc": 0.28384615384615386, + "punct_acc": null, + "threshold_t": 0.04090728610754013, + "threshold_adj": 0.009999999999999998 + } + }, + "ca": { + "opus100": { + "u": 0.7891790803599308, + "t": 0.8851279914565291, + "punct": null, + "u_acc": 0.4482758620689655, + "t_acc": 0.6673427991886409, + "punct_acc": null, + "threshold_t": 0.0575515516102314, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8795266011181855, + "t": 0.9298176846496174, + "punct": null, + "u_acc": 0.7554112554112554, + "t_acc": 0.8138528138528138, + "punct_acc": null, + "threshold_t": 0.06115436553955078, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7235613386922675, + "t": 0.7753998238019291, + "punct": null, + "u_acc": 0.2528, + "t_acc": 0.3656, + "punct_acc": null, + "threshold_t": 0.07235638052225113, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7565159007738197, + "t": 0.7814461730082783, + "punct": null, + "u_acc": 0.3308, + "t_acc": 0.3672, + "punct_acc": null, + "threshold_t": 0.09783986955881119, + "threshold_adj": 0.01 + } + }, + "ceb": { + "ud": { + "u": 0.9244542691351201, + "t": null, + "punct": null, + "u_acc": 0.7659574468085106, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.5125953411667697, + "t": 0.6428571428571429, + "punct": null, + "u_acc": 0.07142857142857142, + "t_acc": 0.07142857142857142, + "punct_acc": null, + "threshold_t": 0.0982419028878212, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.5825953411667698, + "t": 0.5816326530612245, + "punct": null, + "u_acc": 0.14285714285714285, + "t_acc": 0.07142857142857142, + "punct_acc": null, + "threshold_t": 0.04704254865646362, + "threshold_adj": 0.009999999999999998 + }, + "nllb": { + "u": 0.661853159643756, + "t": 0.8409170917970917, + "punct": null, + "u_acc": 0.2348, + "t_acc": 0.5312, + "punct_acc": null, + "threshold_t": 0.3238363265991211, + "threshold_adj": 0.01 + } + }, + "cs": { + "ersatz": { + "u": 0.8864335626703013, + "t": 0.9088245216717439, + "punct": null, + "u_acc": 0.7152777777777778, + "t_acc": 0.7384259259259259, + "punct_acc": null, + "threshold_t": 0.04261935129761696, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.783293216318821, + "t": 0.8621030684900053, + "punct": null, + "u_acc": 0.4105691056910569, + "t_acc": 0.5813008130081301, + "punct_acc": null, + "threshold_t": 0.027863454073667526, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.828847300745302, + "t": 0.8796401833721385, + "punct": null, + "u_acc": 0.5934542586750788, + "t_acc": 0.6723186119873817, + "punct_acc": null, + "threshold_t": 0.039900414645671844, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7209049023145517, + "t": 0.7821696687396001, + "punct": null, + "u_acc": 0.262, + "t_acc": 0.3828, + "punct_acc": null, + "threshold_t": 0.03985685482621193, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7580185045893725, + "t": 0.7892661189790602, + "punct": null, + "u_acc": 0.3284, + "t_acc": 0.3932, + "punct_acc": null, + "threshold_t": 0.06587418168783188, + "threshold_adj": 0.01 + } + }, + "cy": { + "opus100": { + "u": 0.700909946433964, + "t": 0.8065432868926318, + "punct": null, + "u_acc": 0.1943231441048035, + "t_acc": 0.4279475982532751, + "punct_acc": null, + "threshold_t": 0.12831339240074158, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9100085488740952, + "t": 0.9612645058023209, + "punct": null, + "u_acc": 0.7647058823529411, + "t_acc": 0.8907563025210085, + "punct_acc": null, + "threshold_t": 0.030391117557883263, + "threshold_adj": 0.01 + } + }, + "da": { + "opus100": { + "u": 0.7502881599940809, + "t": 0.8879663347405283, + "punct": null, + "u_acc": 0.4213709677419355, + "t_acc": 0.6754032258064516, + "punct_acc": null, + "threshold_t": 0.06758835911750793, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.7463706321579006, + "t": 0.8483732973094675, + "punct": null, + "u_acc": 0.475177304964539, + "t_acc": 0.5390070921985816, + "punct_acc": null, + "threshold_t": 0.13665367662906647, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7137180289188584, + "t": 0.7857096681096682, + "punct": null, + "u_acc": 0.256, + "t_acc": 0.3864, + "punct_acc": null, + "threshold_t": 0.08109394460916519, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7564175304367196, + "t": 0.8068119738479615, + "punct": null, + "u_acc": 0.334, + "t_acc": 0.4336, + "punct_acc": null, + "threshold_t": 0.055176761001348495, + "threshold_adj": 0.01 + } + }, + "de": { + "ersatz": { + "u": 0.8661175511171385, + "t": 0.9020207898008304, + "punct": null, + "u_acc": 0.639511201629328, + "t_acc": 0.6924643584521385, + "punct_acc": null, + "threshold_t": 0.054823100566864014, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.6968799638238242, + "t": 0.8661900955832452, + "punct": null, + "u_acc": 0.3037974683544304, + "t_acc": 0.5949367088607594, + "punct_acc": null, + "threshold_t": 0.07835713773965836, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8609014834503284, + "t": 0.9210713694320252, + "punct": null, + "u_acc": 0.6352459016393442, + "t_acc": 0.7581967213114754, + "punct_acc": null, + "threshold_t": 0.028916532173752785, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7466287266452664, + "t": 0.7985374432584958, + "punct": null, + "u_acc": 0.3144, + "t_acc": 0.4232, + "punct_acc": null, + "threshold_t": 0.060850199311971664, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7623235352501312, + "t": 0.7872733111333112, + "punct": null, + "u_acc": 0.3524, + "t_acc": 0.3836, + "punct_acc": null, + "threshold_t": 0.09449916332960129, + "threshold_adj": 0.01 + } + }, + "el": { + "opus100": { + "u": 0.8094201059900985, + "t": 0.8977535289889972, + "punct": null, + "u_acc": 0.46586345381526106, + "t_acc": 0.6807228915662651, + "punct_acc": null, + "threshold_t": 0.054105233401060104, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8474863962495263, + "t": 0.9111338287238564, + "punct": null, + "u_acc": 0.6929824561403509, + "t_acc": 0.7719298245614035, + "punct_acc": null, + "threshold_t": 0.05938529968261719, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7137577188416445, + "t": 0.7739240685045948, + "punct": null, + "u_acc": 0.236, + "t_acc": 0.3636, + "punct_acc": null, + "threshold_t": 0.1103367954492569, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7539259591411913, + "t": 0.8111461000987317, + "punct": null, + "u_acc": 0.322, + "t_acc": 0.4484, + "punct_acc": null, + "threshold_t": 0.04845251888036728, + "threshold_adj": 0.01 + } + }, + "en": { + "ersatz": { + "u": 0.4698937959534297, + "t": 0.7338124269852897, + "punct": null, + "u_acc": 0.2736240913811007, + "t_acc": 0.39511941848390447, + "punct_acc": null, + "threshold_t": 0.07737099379301071, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.8367470699338319, + "t": 0.8754317959607333, + "punct": null, + "u_acc": 0.5645161290322581, + "t_acc": 0.6149193548387096, + "punct_acc": null, + "threshold_t": 0.0995228961110115, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.6514097961376508, + "t": 0.7237626323392747, + "punct": null, + "u_acc": 0.41605839416058393, + "t_acc": 0.2116788321167883, + "punct_acc": null, + "threshold_t": 0.18885008990764618, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7413823723579631, + "t": 0.7561130447330447, + "punct": null, + "u_acc": 0.3112, + "t_acc": 0.322, + "punct_acc": null, + "threshold_t": 0.04861266538500786, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.755640195020853, + "t": 0.7761763238097356, + "punct": null, + "u_acc": 0.346, + "t_acc": 0.384, + "punct_acc": null, + "threshold_t": 0.019070196896791458, + "threshold_adj": 0.01 + } + }, + "eo": { + "opus100": { + "u": 0.7933528198592338, + "t": 0.8919389750034912, + "punct": null, + "u_acc": 0.4475806451612903, + "t_acc": 0.6693548387096774, + "punct_acc": null, + "threshold_t": 0.12653613090515137, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6948454542328935, + "t": 0.733785547507352, + "punct": null, + "u_acc": 0.22556390977443608, + "t_acc": 0.275062656641604, + "punct_acc": null, + "threshold_t": 0.10466712713241577, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7254441218962623, + "t": 0.7753251379373135, + "punct": null, + "u_acc": 0.2869674185463659, + "t_acc": 0.37844611528822053, + "punct_acc": null, + "threshold_t": 0.0368618406355381, + "threshold_adj": 0.009999999999999998 + } + }, + "es": { + "ersatz": { + "u": 0.8675097054625011, + "t": null, + "punct": null, + "u_acc": 0.6723237597911227, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.8029028153997517, + "t": 0.8859977627486585, + "punct": null, + "u_acc": 0.4797570850202429, + "t_acc": 0.6659919028340081, + "punct_acc": null, + "threshold_t": 0.043512120842933655, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.8319541590212572, + "t": 0.9064500761942623, + "punct": null, + "u_acc": 0.6604651162790698, + "t_acc": 0.7465116279069768, + "punct_acc": null, + "threshold_t": 0.09623082727193832, + "threshold_adj": 0.009999999999999997 + }, + "ted2020-corrupted-asr": { + "u": 0.7168666474894513, + "t": 0.7442019713619713, + "punct": null, + "u_acc": 0.2468, + "t_acc": 0.2876, + "punct_acc": null, + "threshold_t": 0.13327527046203613, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7589951296853922, + "t": 0.788186147839089, + "punct": null, + "u_acc": 0.332, + "t_acc": 0.3972, + "punct_acc": null, + "threshold_t": 0.06772887706756592, + "threshold_adj": 0.01 + } + }, + "et": { + "ersatz": { + "u": 0.8501952735311696, + "t": 0.7647486772486771, + "punct": null, + "u_acc": 0.6190476190476191, + "t_acc": 0.29563492063492064, + "punct_acc": null, + "threshold_t": 0.2628614604473114, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7058250259818929, + "t": 0.8454210345440031, + "punct": null, + "u_acc": 0.2793522267206478, + "t_acc": 0.5748987854251012, + "punct_acc": null, + "threshold_t": 0.05069363862276077, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.7602315263403637, + "t": 0.8438183733803111, + "punct": null, + "u_acc": 0.47139303482587064, + "t_acc": 0.6343283582089553, + "punct_acc": null, + "threshold_t": 0.023988820612430573, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7355979531968447, + "t": 0.7698908846708847, + "punct": null, + "u_acc": 0.2716, + "t_acc": 0.3476, + "punct_acc": null, + "threshold_t": 0.10298468917608261, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7627901081887695, + "t": 0.7988125953417423, + "punct": null, + "u_acc": 0.3296, + "t_acc": 0.4136, + "punct_acc": null, + "threshold_t": 0.06059236079454422, + "threshold_adj": 0.01 + } + }, + "eu": { + "opus100": { + "u": 0.6761636213009442, + "t": 0.8441356019504326, + "punct": null, + "u_acc": 0.29554655870445345, + "t_acc": 0.5728744939271255, + "punct_acc": null, + "threshold_t": 0.11762842535972595, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.8194601178855676, + "t": 0.9258565298173141, + "punct": null, + "u_acc": 0.5711111111111111, + "t_acc": 0.7933333333333333, + "punct_acc": null, + "threshold_t": 0.05893353000283241, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6493799209347122, + "t": 0.7399875885762984, + "punct": null, + "u_acc": 0.1646505376344086, + "t_acc": 0.28225806451612906, + "punct_acc": null, + "threshold_t": 0.06540399044752121, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7069063385992816, + "t": 0.765413898377608, + "punct": null, + "u_acc": 0.24596774193548387, + "t_acc": 0.3353494623655914, + "punct_acc": null, + "threshold_t": 0.07222872972488403, + "threshold_adj": 0.009999999999999998 + } + }, + "fa": { + "opus100": { + "u": 0.6235840265785088, + "t": 0.7755397889361468, + "punct": null, + "u_acc": 0.156312625250501, + "t_acc": 0.3847695390781563, + "punct_acc": null, + "threshold_t": 0.15697535872459412, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8726556410622345, + "t": 0.957997557997558, + "punct": null, + "u_acc": 0.5961538461538461, + "t_acc": 0.8626373626373627, + "punct_acc": null, + "threshold_t": 0.04455801472067833, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6939058007774969, + "t": 0.7635598445998446, + "punct": null, + "u_acc": 0.2344, + "t_acc": 0.3464, + "punct_acc": null, + "threshold_t": 0.07707837969064713, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6949809118738492, + "t": 0.7575133862570533, + "punct": null, + "u_acc": 0.2352, + "t_acc": 0.3436, + "punct_acc": null, + "threshold_t": 0.0450618714094162, + "threshold_adj": 0.01 + } + }, + "fi": { + "ersatz": { + "u": 0.8609918459125826, + "t": 0.9333328439540864, + "punct": null, + "u_acc": 0.6232464929859719, + "t_acc": 0.7855711422845691, + "punct_acc": null, + "threshold_t": 0.06286048889160156, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7844978799502597, + "t": 0.8907762545854254, + "punct": null, + "u_acc": 0.42052313883299797, + "t_acc": 0.6519114688128773, + "punct_acc": null, + "threshold_t": 0.03432605043053627, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.7958843152670361, + "t": 0.8859834724267714, + "punct": null, + "u_acc": 0.5283505154639175, + "t_acc": 0.6829896907216495, + "punct_acc": null, + "threshold_t": 0.06031952425837517, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7125633954050915, + "t": 0.7506562948162948, + "punct": null, + "u_acc": 0.2528, + "t_acc": 0.3044, + "punct_acc": null, + "threshold_t": 0.0962330549955368, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7515148949731114, + "t": 0.7894446775446775, + "punct": null, + "u_acc": 0.3268, + "t_acc": 0.3948, + "punct_acc": null, + "threshold_t": 0.04666024073958397, + "threshold_adj": 0.01 + } + }, + "fr": { + "ersatz": { + "u": 0.8777675314682746, + "t": 0.9120962236904265, + "punct": null, + "u_acc": 0.6956521739130435, + "t_acc": 0.7367149758454107, + "punct_acc": null, + "threshold_t": 0.06313912570476532, + "threshold_adj": 0.009999999999999997 + }, + "opus100": { + "u": 0.7806470892512873, + "t": null, + "punct": null, + "u_acc": 0.43204868154158216, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8270754028106969, + "t": 0.9355194641959348, + "punct": null, + "u_acc": 0.6153846153846154, + "t_acc": 0.8076923076923077, + "punct_acc": null, + "threshold_t": 0.05478711053729057, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7204254047912871, + "t": 0.7811930194951249, + "punct": null, + "u_acc": 0.2432, + "t_acc": 0.38, + "punct_acc": null, + "threshold_t": 0.06927863508462906, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7431041184958833, + "t": 0.7859197039218092, + "punct": null, + "u_acc": 0.3112, + "t_acc": 0.386, + "punct_acc": null, + "threshold_t": 0.08429136127233505, + "threshold_adj": 0.01 + } + }, + "fy": { + "opus100": { + "u": 0.7366969630274351, + "t": 0.7750065980752676, + "punct": null, + "u_acc": 0.28969957081545067, + "t_acc": 0.37553648068669526, + "punct_acc": null, + "threshold_t": 0.16443495452404022, + "threshold_adj": 0.01 + } + }, + "ga": { + "opus100": { + "u": 0.7091372429059087, + "t": 0.884954173109069, + "punct": null, + "u_acc": 0.3326612903225806, + "t_acc": 0.6733870967741935, + "punct_acc": null, + "threshold_t": 0.09284067153930664, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.774973062194212, + "t": 0.8089263562947774, + "punct": null, + "u_acc": 0.4649122807017544, + "t_acc": 0.4298245614035088, + "punct_acc": null, + "threshold_t": 0.28471624851226807, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.516912716912717, + "t": 0.6361111111111111, + "punct": null, + "u_acc": 0.08333333333333333, + "t_acc": 0.16666666666666666, + "punct_acc": null, + "threshold_t": 0.08492386341094971, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.5962962962962963, + "t": 0.65, + "punct": null, + "u_acc": 0.08333333333333333, + "t_acc": 0.16666666666666666, + "punct_acc": null, + "threshold_t": 0.06066688895225525, + "threshold_adj": 0.009999999999999998 + } + }, + "gd": { + "opus100": { + "u": 0.7497313392693509, + "t": 0.8393979477312811, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.5444444444444444, + "punct_acc": null, + "threshold_t": 0.17354267835617065, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.5873962248039047, + "t": 0.7358834370250779, + "punct": null, + "u_acc": 0.23529411764705882, + "t_acc": 0.39705882352941174, + "punct_acc": null, + "threshold_t": 0.07395295798778534, + "threshold_adj": 0.009999999999999998 + } + }, + "gl": { + "opus100": { + "u": 0.7963767079694499, + "t": 0.8862506892748827, + "punct": null, + "u_acc": 0.4334677419354839, + "t_acc": 0.6411290322580645, + "punct_acc": null, + "threshold_t": 0.11215537041425705, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8265969652683208, + "t": 0.9297338935574229, + "punct": null, + "u_acc": 0.65, + "t_acc": 0.82, + "punct_acc": null, + "threshold_t": 0.09006289392709732, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7162966283046158, + "t": 0.7822843933843934, + "punct": null, + "u_acc": 0.246, + "t_acc": 0.384, + "punct_acc": null, + "threshold_t": 0.06694859266281128, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.754500082415005, + "t": 0.7932450462739875, + "punct": null, + "u_acc": 0.3236, + "t_acc": 0.4004, + "punct_acc": null, + "threshold_t": 0.06373061239719391, + "threshold_adj": 0.01 + } + }, + "gu": { + "ersatz": { + "u": 0.9240466008182544, + "t": 0.8876386518118801, + "punct": null, + "u_acc": 0.7362204724409449, + "t_acc": 0.6732283464566929, + "punct_acc": null, + "threshold_t": 0.036841630935668945, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7168415395528548, + "t": 0.809824777179545, + "punct": null, + "u_acc": 0.19461697722567287, + "t_acc": 0.42857142857142855, + "punct_acc": null, + "threshold_t": 0.10106858611106873, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5065595482307309, + "t": 0.6342967257970374, + "punct": null, + "u_acc": 0.07381193124368049, + "t_acc": 0.16885743174924167, + "punct_acc": null, + "threshold_t": 0.06463704258203506, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.5974790366765843, + "t": 0.687366198104464, + "punct": null, + "u_acc": 0.13751263902932254, + "t_acc": 0.17138523761375127, + "punct_acc": null, + "threshold_t": 0.15034981071949005, + "threshold_adj": 0.01 + } + }, + "ha": { + "opus100": { + "u": 0.500455606302609, + "t": 0.728806441629212, + "punct": null, + "u_acc": 0.138, + "t_acc": 0.28, + "punct_acc": null, + "threshold_t": 0.4042413532733917, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6388888888888888, + "t": 0.6222222222222222, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.07234271615743637, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7333333333333334, + "t": 0.7222222222222222, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.12043071538209915, + "threshold_adj": 0.01 + } + }, + "he": { + "opus100": { + "u": 0.7861282338236246, + "t": 0.8597656518498201, + "punct": null, + "u_acc": 0.3587174348697395, + "t_acc": 0.561122244488978, + "punct_acc": null, + "threshold_t": 0.027788808569312096, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9121181139788583, + "t": 0.9111223243876305, + "punct": null, + "u_acc": 0.8163265306122449, + "t_acc": 0.7857142857142857, + "punct_acc": null, + "threshold_t": 0.02628382295370102, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.650370011396398, + "t": 0.7417577554471673, + "punct": null, + "u_acc": 0.1616, + "t_acc": 0.3036, + "punct_acc": null, + "threshold_t": 0.10338319838047028, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6641887074768993, + "t": 0.7382636993725229, + "punct": null, + "u_acc": 0.192, + "t_acc": 0.308, + "punct_acc": null, + "threshold_t": 0.058549657464027405, + "threshold_adj": 0.01 + } + }, + "hi": { + "ersatz": { + "u": 0.8961737652291908, + "t": 0.8972134038800706, + "punct": null, + "u_acc": 0.6841269841269841, + "t_acc": 0.6873015873015873, + "punct_acc": null, + "threshold_t": 0.06009909138083458, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.6290492316161564, + "t": 0.7345969447410524, + "punct": null, + "u_acc": 0.20040485829959515, + "t_acc": 0.3319838056680162, + "punct_acc": null, + "threshold_t": 0.1601180136203766, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9766159414615472, + "t": 0.9831467028616673, + "punct": null, + "u_acc": 0.9049881235154394, + "t_acc": 0.9358669833729216, + "punct_acc": null, + "threshold_t": 0.024755172431468964, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.5722044825487399, + "t": 0.6869602085060909, + "punct": null, + "u_acc": 0.1264, + "t_acc": 0.2276, + "punct_acc": null, + "threshold_t": 0.06354209035634995, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.679073658586869, + "t": 0.7378715473729678, + "punct": null, + "u_acc": 0.2092, + "t_acc": 0.2956, + "punct_acc": null, + "threshold_t": 0.04789718985557556, + "threshold_adj": 0.01 + } + }, + "hu": { + "opus100": { + "u": 0.7745891339128156, + "t": 0.8941010490405651, + "punct": null, + "u_acc": 0.3790322580645161, + "t_acc": 0.6653225806451613, + "punct_acc": null, + "threshold_t": 0.052902232855558395, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.757449675590434, + "t": 0.8509216295400506, + "punct": null, + "u_acc": 0.4642857142857143, + "t_acc": 0.6071428571428571, + "punct_acc": null, + "threshold_t": 0.07543044537305832, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7167699034704492, + "t": 0.7743138407080263, + "punct": null, + "u_acc": 0.25, + "t_acc": 0.3664, + "punct_acc": null, + "threshold_t": 0.0908251628279686, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7576221899999609, + "t": 0.7934558621523328, + "punct": null, + "u_acc": 0.336, + "t_acc": 0.4068, + "punct_acc": null, + "threshold_t": 0.0830591470003128, + "threshold_adj": 0.01 + } + }, + "hy": { + "opus100": { + "u": 0.605846037280462, + "t": null, + "punct": null, + "u_acc": 0.13211845102505695, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.41718565696690235, + "t": 0.7644966390292257, + "punct": null, + "u_acc": 0.0945945945945946, + "t_acc": 0.47297297297297297, + "punct_acc": null, + "threshold_t": 0.26202017068862915, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.676858296924037, + "t": 0.7596265786065787, + "punct": null, + "u_acc": 0.198, + "t_acc": 0.3244, + "punct_acc": null, + "threshold_t": 0.14536896347999573, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6873683524690732, + "t": 0.7712642250216244, + "punct": null, + "u_acc": 0.2332, + "t_acc": 0.3556, + "punct_acc": null, + "threshold_t": 0.11103285849094391, + "threshold_adj": 0.01 + } + }, + "id": { + "opus100": { + "u": 0.7626430305789502, + "t": 0.874704746528517, + "punct": null, + "u_acc": 0.3668032786885246, + "t_acc": 0.6229508196721312, + "punct_acc": null, + "threshold_t": 0.06966007500886917, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8397722600158493, + "t": null, + "punct": null, + "u_acc": 0.656, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6911837477094929, + "t": 0.7241663564213564, + "punct": null, + "u_acc": 0.2204, + "t_acc": 0.2356, + "punct_acc": null, + "threshold_t": 0.10548818856477737, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7350332143698441, + "t": 0.7764232934712347, + "punct": null, + "u_acc": 0.3004, + "t_acc": 0.366, + "punct_acc": null, + "threshold_t": 0.03946973755955696, + "threshold_adj": 0.01 + } + }, + "ig": { + "opus100": { + "u": 0.6747954927857209, + "t": 0.8143435043920482, + "punct": null, + "u_acc": 0.18689320388349515, + "t_acc": 0.4368932038834951, + "punct_acc": null, + "threshold_t": 0.13112567365169525, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.28189615067408175, + "t": 0.5372327019385843, + "punct": null, + "u_acc": 0.07692307692307693, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.12362644076347351, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.33995703600907223, + "t": 0.6473193473193473, + "punct": null, + "u_acc": 0.07692307692307693, + "t_acc": 0.23076923076923078, + "punct_acc": null, + "threshold_t": 0.11992623656988144, + "threshold_adj": 0.01 + } + }, + "is": { + "opus100": { + "u": 0.6537116411447199, + "t": 0.8781058902434212, + "punct": null, + "u_acc": 0.21327967806841047, + "t_acc": 0.613682092555332, + "punct_acc": null, + "threshold_t": 0.07726389169692993, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.5740002177252502, + "t": 0.6643037136397499, + "punct": null, + "u_acc": 0.26144297905352987, + "t_acc": 0.10938712179984485, + "punct_acc": null, + "threshold_t": 0.365448921918869, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6934877010763855, + "t": 0.7806373439961226, + "punct": null, + "u_acc": 0.2010178117048346, + "t_acc": 0.3638676844783715, + "punct_acc": null, + "threshold_t": 0.07605885714292526, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7497262089362986, + "t": 0.7783250535158932, + "punct": null, + "u_acc": 0.3282442748091603, + "t_acc": 0.366412213740458, + "punct_acc": null, + "threshold_t": 0.09425143897533417, + "threshold_adj": 0.009999999999999998 + } + }, + "it": { + "opus100": { + "u": 0.7534575970676218, + "t": 0.8744552585787105, + "punct": null, + "u_acc": 0.4012096774193548, + "t_acc": 0.655241935483871, + "punct_acc": null, + "threshold_t": 0.06702739000320435, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8645619631868342, + "t": 0.9617592592592593, + "punct": null, + "u_acc": 0.6666666666666666, + "t_acc": 0.8916666666666667, + "punct_acc": null, + "threshold_t": 0.07127705961465836, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7033590189170995, + "t": 0.7656222977022977, + "punct": null, + "u_acc": 0.2276, + "t_acc": 0.3452, + "punct_acc": null, + "threshold_t": 0.10839729011058807, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7496403079892243, + "t": 0.795552019092019, + "punct": null, + "u_acc": 0.312, + "t_acc": 0.404, + "punct_acc": null, + "threshold_t": 0.08441238105297089, + "threshold_adj": 0.01 + } + }, + "ja": { + "ersatz": { + "u": 0.45190361138852525, + "t": 0.7483427020740454, + "punct": null, + "u_acc": 0.07835820895522388, + "t_acc": 0.3283582089552239, + "punct_acc": null, + "threshold_t": 0.5999999642372131, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.7277926145041665, + "t": 0.8325272228886686, + "punct": null, + "u_acc": 0.2469879518072289, + "t_acc": 0.5160642570281124, + "punct_acc": null, + "threshold_t": 0.04987381398677826, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.5746683827042596, + "t": 0.7958021265547217, + "punct": null, + "u_acc": 0.16176470588235295, + "t_acc": 0.41911764705882354, + "punct_acc": null, + "threshold_t": 0.5070424675941467, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7161192554296633, + "t": 0.8585273015873015, + "punct": null, + "u_acc": 0.2824, + "t_acc": 0.578, + "punct_acc": null, + "threshold_t": 0.2162763923406601, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7050321564536978, + "t": 0.8533663492063491, + "punct": null, + "u_acc": 0.2692, + "t_acc": 0.566, + "punct_acc": null, + "threshold_t": 0.2193368524312973, + "threshold_adj": 0.01 + } + }, + "jv": { + "ud": { + "u": 0.7776810151409778, + "t": null, + "punct": null, + "u_acc": 0.496, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "nllb": { + "u": 0.65249102172844, + "t": 0.8459648743069796, + "punct": null, + "u_acc": 0.1872, + "t_acc": 0.5376, + "punct_acc": null, + "threshold_t": 0.24660855531692505, + "threshold_adj": 0.01 + } + }, + "ka": { + "opus100": { + "u": 0.3548511000696706, + "t": 0.35765253671352204, + "punct": null, + "u_acc": 0.014, + "t_acc": 0.014, + "punct_acc": null, + "threshold_t": 0.016498446464538574, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6437995439602985, + "t": 0.7335275184990804, + "punct": null, + "u_acc": 0.1524, + "t_acc": 0.2748, + "punct_acc": null, + "threshold_t": 0.1277940422296524, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.649746134202352, + "t": 0.7367036444714706, + "punct": null, + "u_acc": 0.1644, + "t_acc": 0.2896, + "punct_acc": null, + "threshold_t": 0.08621473610401154, + "threshold_adj": 0.01 + } + }, + "kk": { + "ersatz": { + "u": 0.8123966756693265, + "t": 0.7878031746031745, + "punct": null, + "u_acc": 0.564, + "t_acc": 0.376, + "punct_acc": null, + "threshold_t": 0.35713326930999756, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.759040161705451, + "t": 0.8056017673786269, + "punct": null, + "u_acc": 0.3202479338842975, + "t_acc": 0.40702479338842973, + "punct_acc": null, + "threshold_t": 0.20200872421264648, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8175906016856126, + "t": 0.7485773768216515, + "punct": null, + "u_acc": 0.5992366412213741, + "t_acc": 0.2748091603053435, + "punct_acc": null, + "threshold_t": 0.29127442836761475, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.769286097020228, + "t": 0.7993506303567907, + "punct": null, + "u_acc": 0.34223134839151265, + "t_acc": 0.4134154688569473, + "punct_acc": null, + "threshold_t": 0.01841188222169876, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7762942924218441, + "t": 0.8048389690451724, + "punct": null, + "u_acc": 0.36960985626283366, + "t_acc": 0.42915811088295686, + "punct_acc": null, + "threshold_t": 0.04674410820007324, + "threshold_adj": 0.01 + } + }, + "km": { + "ersatz": { + "u": 0.6481683100642095, + "t": 0.9285875706214689, + "punct": null, + "u_acc": 0.2711864406779661, + "t_acc": 0.7813559322033898, + "punct_acc": null, + "threshold_t": 0.7252073287963867, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.6292436346482256, + "t": 0.7822516773032236, + "punct": null, + "u_acc": 0.13814432989690723, + "t_acc": 0.3731958762886598, + "punct_acc": null, + "threshold_t": 0.39394018054008484, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7315174382843554, + "t": 0.8385964912280701, + "punct": null, + "u_acc": 0.2556390977443609, + "t_acc": 0.518796992481203, + "punct_acc": null, + "threshold_t": 0.2973353862762451, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7325054227309866, + "t": 0.8107769423558898, + "punct": null, + "u_acc": 0.3082706766917293, + "t_acc": 0.43609022556390975, + "punct_acc": null, + "threshold_t": 0.452352911233902, + "threshold_adj": 0.01 + } + }, + "kn": { + "opus100": { + "u": 0.7054523893019468, + "t": 0.7827363393735075, + "punct": null, + "u_acc": 0.18141592920353983, + "t_acc": 0.37610619469026546, + "punct_acc": null, + "threshold_t": 0.13258981704711914, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.5031971319507312, + "t": 0.637009610436184, + "punct": null, + "u_acc": 0.04895104895104895, + "t_acc": 0.13286713286713286, + "punct_acc": null, + "threshold_t": 0.07348639518022537, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.5900019683420492, + "t": 0.6739399489399489, + "punct": null, + "u_acc": 0.0944055944055944, + "t_acc": 0.17132867132867133, + "punct_acc": null, + "threshold_t": 0.08862759917974472, + "threshold_adj": 0.01 + } + }, + "ko": { + "opus100": { + "u": 0.7214581190289692, + "t": 0.8194861059992639, + "punct": null, + "u_acc": 0.25101214574898784, + "t_acc": 0.43724696356275305, + "punct_acc": null, + "threshold_t": 0.10207992047071457, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.95320032531571, + "t": 0.9541553207105048, + "punct": null, + "u_acc": 0.8391608391608392, + "t_acc": 0.8479020979020979, + "punct_acc": null, + "threshold_t": 0.015119185671210289, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7002910967278635, + "t": 0.782363885633817, + "punct": null, + "u_acc": 0.2624, + "t_acc": 0.3936, + "punct_acc": null, + "threshold_t": 0.041432350873947144, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7092710362756636, + "t": 0.7720866161289691, + "punct": null, + "u_acc": 0.2696, + "t_acc": 0.374, + "punct_acc": null, + "threshold_t": 0.037183649837970734, + "threshold_adj": 0.01 + } + }, + "ku": { + "opus100": { + "u": 0.6403826272406813, + "t": 0.7228861378182645, + "punct": null, + "u_acc": 0.23700623700623702, + "t_acc": 0.20374220374220375, + "punct_acc": null, + "threshold_t": 0.6417993903160095, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.3762896715829894, + "t": 0.6387564514260909, + "punct": null, + "u_acc": 0.018, + "t_acc": 0.1468, + "punct_acc": null, + "threshold_t": 0.12150392681360245, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3837410555382242, + "t": 0.6323281190016334, + "punct": null, + "u_acc": 0.0264, + "t_acc": 0.1576, + "punct_acc": null, + "threshold_t": 0.12033358216285706, + "threshold_adj": 0.01 + } + }, + "ky": { + "opus100": { + "u": 0.7973732915104728, + "t": 0.8676946334089191, + "punct": null, + "u_acc": 0.4, + "t_acc": 0.5904761904761905, + "punct_acc": null, + "threshold_t": 0.08654170483350754, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7832569391392922, + "t": 0.8225178960473077, + "punct": null, + "u_acc": 0.3627450980392157, + "t_acc": 0.4117647058823529, + "punct_acc": null, + "threshold_t": 0.027645820751786232, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7822984749455337, + "t": 0.7873171490818551, + "punct": null, + "u_acc": 0.39215686274509803, + "t_acc": 0.4215686274509804, + "punct_acc": null, + "threshold_t": 0.10091089457273483, + "threshold_adj": 0.009999999999999998 + } + }, + "la": { + "ud": { + "u": 0.7998533583655576, + "t": 0.7975028586848644, + "punct": null, + "u_acc": 0.4380952380952381, + "t_acc": 0.4533333333333333, + "punct_acc": null, + "threshold_t": 0.008251465857028961, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6349206349206349, + "t": 0.611111111111111, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.28847119212150574, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7238095238095239, + "t": 0.6666666666666666, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.5732043385505676, + "threshold_adj": 0.01 + } + }, + "lt": { + "ersatz": { + "u": 0.8255077691743422, + "t": 0.8354974358974359, + "punct": null, + "u_acc": 0.628, + "t_acc": 0.512, + "punct_acc": null, + "threshold_t": 0.27876564860343933, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.6063258833519996, + "t": 0.8496550777205308, + "punct": null, + "u_acc": 0.26814516129032256, + "t_acc": 0.6008064516129032, + "punct_acc": null, + "threshold_t": 0.19783656299114227, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.6784316325390782, + "t": 0.7782148975131432, + "punct": null, + "u_acc": 0.4444444444444444, + "t_acc": 0.39766081871345027, + "punct_acc": null, + "threshold_t": 0.25877875089645386, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7156058814388226, + "t": 0.7598898989898989, + "punct": null, + "u_acc": 0.242, + "t_acc": 0.3196, + "punct_acc": null, + "threshold_t": 0.10506356507539749, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7473330575854109, + "t": 0.795140313554022, + "punct": null, + "u_acc": 0.3188, + "t_acc": 0.4044, + "punct_acc": null, + "threshold_t": 0.03770362213253975, + "threshold_adj": 0.01 + } + }, + "lv": { + "ersatz": { + "u": 0.8635436817407857, + "t": 0.7493827160493827, + "punct": null, + "u_acc": 0.6865079365079365, + "t_acc": 0.25595238095238093, + "punct_acc": null, + "threshold_t": 0.34735098481178284, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.6169988270105569, + "t": 0.8590900905958775, + "punct": null, + "u_acc": 0.29006085192697767, + "t_acc": 0.6105476673427992, + "punct_acc": null, + "threshold_t": 0.2484002560377121, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.7400749879962474, + "t": 0.8433195141272544, + "punct": null, + "u_acc": 0.4709784411276949, + "t_acc": 0.6235489220563848, + "punct_acc": null, + "threshold_t": 0.053445782512426376, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7205893611926429, + "t": 0.7779715040515041, + "punct": null, + "u_acc": 0.2504, + "t_acc": 0.3716, + "punct_acc": null, + "threshold_t": 0.06831618398427963, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7493603842840213, + "t": 0.7883037265658318, + "punct": null, + "u_acc": 0.3128, + "t_acc": 0.3884, + "punct_acc": null, + "threshold_t": 0.0693230926990509, + "threshold_adj": 0.01 + } + }, + "mg": { + "opus100": { + "u": 0.7628605392129162, + "t": 0.8775341239010533, + "punct": null, + "u_acc": 0.4817813765182186, + "t_acc": 0.6518218623481782, + "punct_acc": null, + "threshold_t": 0.20589673519134521, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.5877678905456684, + "t": 0.6887298915076693, + "punct": null, + "u_acc": 0.09259259259259259, + "t_acc": 0.2222222222222222, + "punct_acc": null, + "threshold_t": 0.12973973155021667, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6494085352706043, + "t": 0.694613030397344, + "punct": null, + "u_acc": 0.14814814814814814, + "t_acc": 0.25925925925925924, + "punct_acc": null, + "threshold_t": 0.09519579261541367, + "threshold_adj": 0.01 + } + }, + "mk": { + "opus100": { + "u": 0.7967371380294042, + "t": 0.882712172141584, + "punct": null, + "u_acc": 0.45, + "t_acc": 0.646, + "punct_acc": null, + "threshold_t": 0.059695322066545486, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7040830805360216, + "t": 0.7663643001443001, + "punct": null, + "u_acc": 0.2316, + "t_acc": 0.3392, + "punct_acc": null, + "threshold_t": 0.11587966978549957, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7390768293973324, + "t": 0.7939146164946165, + "punct": null, + "u_acc": 0.306, + "t_acc": 0.408, + "punct_acc": null, + "threshold_t": 0.04510485753417015, + "threshold_adj": 0.01 + } + }, + "ml": { + "opus100": { + "u": 0.7486074348629833, + "t": 0.8220339678171004, + "punct": null, + "u_acc": 0.2891566265060241, + "t_acc": 0.46987951807228917, + "punct_acc": null, + "threshold_t": 0.08955559134483337, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5545852049671661, + "t": 0.6782983058543283, + "punct": null, + "u_acc": 0.07539682539682539, + "t_acc": 0.19973544973544974, + "punct_acc": null, + "threshold_t": 0.0785001739859581, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6336050308062446, + "t": 0.7107089213998645, + "punct": null, + "u_acc": 0.14814814814814814, + "t_acc": 0.23544973544973544, + "punct_acc": null, + "threshold_t": 0.07504121959209442, + "threshold_adj": 0.01 + } + }, + "mn": { + "opus100": { + "u": 0.7955257718756821, + "t": null, + "punct": null, + "u_acc": 0.3416030534351145, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.8062064162944039, + "t": 0.8442175186904598, + "punct": null, + "u_acc": 0.4404, + "t_acc": 0.534, + "punct_acc": null, + "threshold_t": 0.025924542918801308, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.8087021157103076, + "t": 0.8289230596967682, + "punct": null, + "u_acc": 0.4456, + "t_acc": 0.4864, + "punct_acc": null, + "threshold_t": 0.03463561460375786, + "threshold_adj": 0.01 + }, + "nllb": { + "u": 0.7481905563641111, + "t": 0.82530290885585, + "punct": null, + "u_acc": 0.36, + "t_acc": 0.4792, + "punct_acc": null, + "threshold_t": 0.32259994745254517, + "threshold_adj": 0.01 + } + }, + "mr": { + "opus100": { + "u": 0.8776151491877299, + "t": 0.8172427035330261, + "punct": null, + "u_acc": 0.5987903225806451, + "t_acc": 0.4435483870967742, + "punct_acc": null, + "threshold_t": 0.14453332126140594, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8266594516594518, + "t": 0.8452380952380952, + "punct": null, + "u_acc": 0.6666666666666666, + "t_acc": 0.5833333333333334, + "punct_acc": null, + "threshold_t": 0.029353925958275795, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.4712543281931581, + "t": 0.6460635618286082, + "punct": null, + "u_acc": 0.0488, + "t_acc": 0.1328, + "punct_acc": null, + "threshold_t": 0.10214222222566605, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6471903358787299, + "t": 0.7215527781678246, + "punct": null, + "u_acc": 0.1852, + "t_acc": 0.2792, + "punct_acc": null, + "threshold_t": 0.06961324065923691, + "threshold_adj": 0.01 + } + }, + "ms": { + "opus100": { + "u": 0.7530623007228899, + "t": 0.861618766278907, + "punct": null, + "u_acc": 0.35802469135802467, + "t_acc": 0.5596707818930041, + "punct_acc": null, + "threshold_t": 0.07609706372022629, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6854105656536872, + "t": 0.7541314340421483, + "punct": null, + "u_acc": 0.21785714285714286, + "t_acc": 0.33214285714285713, + "punct_acc": null, + "threshold_t": 0.04506708309054375, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7212703460467125, + "t": 0.7571321710502383, + "punct": null, + "u_acc": 0.29642857142857143, + "t_acc": 0.32083333333333336, + "punct_acc": null, + "threshold_t": 0.08141870051622391, + "threshold_adj": 0.009999999999999998 + } + }, + "mt": { + "opus100": { + "u": 0.4074628058285113, + "t": 0.7578419230066601, + "punct": null, + "u_acc": 0.0951417004048583, + "t_acc": 0.4089068825910931, + "punct_acc": null, + "threshold_t": 0.48450610041618347, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.5896123941171237, + "t": 0.7030526738219046, + "punct": null, + "u_acc": 0.33076923076923076, + "t_acc": 0.16923076923076924, + "punct_acc": null, + "threshold_t": 0.4485345482826233, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4162354739277816, + "t": 0.6307692307692307, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.11749071627855301, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4877650127650127, + "t": 0.6605672105672105, + "punct": null, + "u_acc": 0.07692307692307693, + "t_acc": 0.11538461538461539, + "punct_acc": null, + "threshold_t": 0.12562145292758942, + "threshold_adj": 0.01 + } + }, + "my": { + "opus100": { + "u": 0.6556145019854697, + "t": 0.8348214285714285, + "punct": null, + "u_acc": 0.16532258064516128, + "t_acc": 0.5161290322580645, + "punct_acc": null, + "threshold_t": 0.23828040063381195, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7776834855385768, + "t": 0.909, + "punct": null, + "u_acc": 0.3528, + "t_acc": 0.722, + "punct_acc": null, + "threshold_t": 0.36629050970077515, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.761054982393954, + "t": 0.8935152795031056, + "punct": null, + "u_acc": 0.3416, + "t_acc": 0.6804, + "punct_acc": null, + "threshold_t": 0.3961370289325714, + "threshold_adj": 0.01 + } + }, + "ne": { + "opus100": { + "u": 0.7230660259885482, + "t": 0.8255484649247862, + "punct": null, + "u_acc": 0.21987315010570824, + "t_acc": 0.47568710359408034, + "punct_acc": null, + "threshold_t": 0.1013629138469696, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6606207423434315, + "t": 0.7241586991586991, + "punct": null, + "u_acc": 0.20077220077220076, + "t_acc": 0.2722007722007722, + "punct_acc": null, + "threshold_t": 0.08209216594696045, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6430881403807022, + "t": 0.7116363623506481, + "punct": null, + "u_acc": 0.17374517374517376, + "t_acc": 0.2471042471042471, + "punct_acc": null, + "threshold_t": 0.08020491153001785, + "threshold_adj": 0.01 + } + }, + "nl": { + "opus100": { + "u": 0.8260656755693053, + "t": null, + "punct": null, + "u_acc": 0.46, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8308402677727589, + "t": 0.8927702796830315, + "punct": null, + "u_acc": 0.5973154362416108, + "t_acc": 0.6912751677852349, + "punct_acc": null, + "threshold_t": 0.04922070726752281, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.769187898851974, + "t": 0.7945080885006466, + "punct": null, + "u_acc": 0.3468, + "t_acc": 0.4068, + "punct_acc": null, + "threshold_t": 0.08897779881954193, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.8008289308077543, + "t": 0.7973399711399712, + "punct": null, + "u_acc": 0.4228, + "t_acc": 0.404, + "punct_acc": null, + "threshold_t": 0.09174001961946487, + "threshold_adj": 0.01 + } + }, + "no": { + "opus100": { + "u": 0.8603806658348254, + "t": 0.9194060419866871, + "punct": null, + "u_acc": 0.5584677419354839, + "t_acc": 0.719758064516129, + "punct_acc": null, + "threshold_t": 0.04605588689446449, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8603149847145959, + "t": 0.9173174506852193, + "punct": null, + "u_acc": 0.6466942148760331, + "t_acc": 0.7644628099173554, + "punct_acc": null, + "threshold_t": 0.0698571428656578, + "threshold_adj": 0.01 + } + }, + "pa": { + "opus100": { + "u": 0.7145489600515486, + "t": 0.810493869679019, + "punct": null, + "u_acc": 0.18442622950819673, + "t_acc": 0.42827868852459017, + "punct_acc": null, + "threshold_t": 0.14506906270980835, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.629811677684018, + "t": 0.7343781411311476, + "punct": null, + "u_acc": 0.1276595744680851, + "t_acc": 0.2553191489361702, + "punct_acc": null, + "threshold_t": 0.09090995788574219, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7369508151423048, + "t": 0.7718649258542879, + "punct": null, + "u_acc": 0.2978723404255319, + "t_acc": 0.3723404255319149, + "punct_acc": null, + "threshold_t": 0.10594453662633896, + "threshold_adj": 0.01 + } + }, + "pl": { + "ersatz": { + "u": 0.839182200549943, + "t": 0.7598431670144816, + "punct": null, + "u_acc": 0.6175298804780877, + "t_acc": 0.2868525896414343, + "punct_acc": null, + "threshold_t": 0.3536304533481598, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.8071236665025339, + "t": 0.9108551842422811, + "punct": null, + "u_acc": 0.4375, + "t_acc": 0.6955645161290323, + "punct_acc": null, + "threshold_t": 0.05333507061004639, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.7780656923948835, + "t": 0.8915908988960592, + "punct": null, + "u_acc": 0.48736462093862815, + "t_acc": 0.7490974729241877, + "punct_acc": null, + "threshold_t": 0.036496199667453766, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.750855039664971, + "t": 0.7888244733044734, + "punct": null, + "u_acc": 0.296, + "t_acc": 0.398, + "punct_acc": null, + "threshold_t": 0.06295682489871979, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7783774429675359, + "t": 0.8151325891885892, + "punct": null, + "u_acc": 0.3704, + "t_acc": 0.452, + "punct_acc": null, + "threshold_t": 0.043462712317705154, + "threshold_adj": 0.01 + } + }, + "ps": { + "ersatz": { + "u": 0.7730023239809016, + "t": 0.8338942419587582, + "punct": null, + "u_acc": 0.4120234604105572, + "t_acc": 0.5029325513196481, + "punct_acc": null, + "threshold_t": 0.19525596499443054, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.7340742776154804, + "t": 0.7705270972531553, + "punct": null, + "u_acc": 0.22717149220489977, + "t_acc": 0.3363028953229399, + "punct_acc": null, + "threshold_t": 0.10388877242803574, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6287811515806364, + "t": 0.7087634688912061, + "punct": null, + "u_acc": 0.145985401459854, + "t_acc": 0.22627737226277372, + "punct_acc": null, + "threshold_t": 0.1185235008597374, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6138647902695882, + "t": 0.6929903835013324, + "punct": null, + "u_acc": 0.1386861313868613, + "t_acc": 0.20437956204379562, + "punct_acc": null, + "threshold_t": 0.16284430027008057, + "threshold_adj": 0.01 + } + }, + "pt": { + "opus100": { + "u": 0.7611853736118319, + "t": 0.8856366450833018, + "punct": null, + "u_acc": 0.4251012145748988, + "t_acc": 0.6700404858299596, + "punct_acc": null, + "threshold_t": 0.05129510536789894, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.7432850963325336, + "t": 0.8922304388913977, + "punct": null, + "u_acc": 0.5068493150684932, + "t_acc": 0.7157534246575342, + "punct_acc": null, + "threshold_t": 0.09587306529283524, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.738912477805419, + "t": 0.7903725281254692, + "punct": null, + "u_acc": 0.2796, + "t_acc": 0.4048, + "punct_acc": null, + "threshold_t": 0.05895382910966873, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7782250484187445, + "t": 0.8107966958188011, + "punct": null, + "u_acc": 0.378, + "t_acc": 0.4508, + "punct_acc": null, + "threshold_t": 0.04780341312289238, + "threshold_adj": 0.01 + } + }, + "ro": { + "ersatz": { + "u": 0.8937483542018473, + "t": 0.745039259914492, + "punct": null, + "u_acc": 0.74, + "t_acc": 0.248, + "punct_acc": null, + "threshold_t": 0.43536946177482605, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8245492960517974, + "t": 0.8996452257058317, + "punct": null, + "u_acc": 0.494949494949495, + "t_acc": 0.6787878787878788, + "punct_acc": null, + "threshold_t": 0.03984079137444496, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.4044802784107424, + "t": 0.6237838191739944, + "punct": null, + "u_acc": 0.12167300380228137, + "t_acc": 0.011406844106463879, + "punct_acc": null, + "threshold_t": 0.8401123285293579, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.714025670469881, + "t": 0.7685433856549955, + "punct": null, + "u_acc": 0.236, + "t_acc": 0.3488, + "punct_acc": null, + "threshold_t": 0.08738504350185394, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7569959291831081, + "t": 0.7741351666111667, + "punct": null, + "u_acc": 0.3272, + "t_acc": 0.3532, + "punct_acc": null, + "threshold_t": 0.10868360102176666, + "threshold_adj": 0.01 + } + }, + "ru": { + "ersatz": { + "u": 0.8623752836347713, + "t": 0.9248148758525894, + "punct": null, + "u_acc": 0.6935483870967742, + "t_acc": 0.8104838709677419, + "punct_acc": null, + "threshold_t": 0.08035257458686829, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.6304292664920431, + "t": null, + "punct": null, + "u_acc": 0.2581967213114754, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.6956516637027373, + "t": 0.7922048214515083, + "punct": null, + "u_acc": 0.30454545454545456, + "t_acc": 0.44545454545454544, + "punct_acc": null, + "threshold_t": 0.22516754269599915, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7326875340596395, + "t": 0.7917059872680926, + "punct": null, + "u_acc": 0.2648, + "t_acc": 0.4012, + "punct_acc": null, + "threshold_t": 0.055929720401763916, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7618399233111346, + "t": 0.7889308350586611, + "punct": null, + "u_acc": 0.3332, + "t_acc": 0.3908, + "punct_acc": null, + "threshold_t": 0.07778003811836243, + "threshold_adj": 0.01 + } + }, + "si": { + "opus100": { + "u": 0.758500295561491, + "t": 0.8322168422974875, + "punct": null, + "u_acc": 0.3225806451612903, + "t_acc": 0.47580645161290325, + "punct_acc": null, + "threshold_t": 0.03705502673983574, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5818651890744914, + "t": 0.7391023274744204, + "punct": null, + "u_acc": 0.11627906976744186, + "t_acc": 0.32558139534883723, + "punct_acc": null, + "threshold_t": 0.0850210040807724, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.5998771295077725, + "t": 0.7411325969465503, + "punct": null, + "u_acc": 0.13178294573643412, + "t_acc": 0.35658914728682173, + "punct_acc": null, + "threshold_t": 0.05737745016813278, + "threshold_adj": 0.01 + } + }, + "sk": { + "opus100": { + "u": 0.7902618665885881, + "t": 0.8984898303765027, + "punct": null, + "u_acc": 0.4254032258064516, + "t_acc": 0.7056451612903226, + "punct_acc": null, + "threshold_t": 0.09030794352293015, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9200729529031416, + "t": 0.8796406109613657, + "punct": null, + "u_acc": 0.769811320754717, + "t_acc": 0.6452830188679245, + "punct_acc": null, + "threshold_t": 0.05720829591155052, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.7452956930903141, + "t": 0.7766838076302782, + "punct": null, + "u_acc": 0.2992, + "t_acc": 0.3716, + "punct_acc": null, + "threshold_t": 0.0720907673239708, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7665519219280413, + "t": 0.7978461619798801, + "punct": null, + "u_acc": 0.3532, + "t_acc": 0.4328, + "punct_acc": null, + "threshold_t": 0.04866090044379234, + "threshold_adj": 0.01 + } + }, + "sl": { + "opus100": { + "u": 0.7827069822891473, + "t": 0.8957146886722775, + "punct": null, + "u_acc": 0.39357429718875503, + "t_acc": 0.6546184738955824, + "punct_acc": null, + "threshold_t": 0.0632297545671463, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.7657470825663508, + "t": 0.8564796661671661, + "punct": null, + "u_acc": 0.51875, + "t_acc": 0.6125, + "punct_acc": null, + "threshold_t": 0.07011370360851288, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7343693106536079, + "t": 0.7686347633525895, + "punct": null, + "u_acc": 0.2904, + "t_acc": 0.3452, + "punct_acc": null, + "threshold_t": 0.10536323487758636, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7573287436929542, + "t": 0.7839546181796646, + "punct": null, + "u_acc": 0.3448, + "t_acc": 0.3804, + "punct_acc": null, + "threshold_t": 0.09057959914207458, + "threshold_adj": 0.01 + } + }, + "sq": { + "opus100": { + "u": 0.7763448286573598, + "t": 0.8839089053626923, + "punct": null, + "u_acc": 0.4532520325203252, + "t_acc": 0.6626016260162602, + "punct_acc": null, + "threshold_t": 0.072206512093544, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9714285714285714, + "t": null, + "punct": null, + "u_acc": 0.9333333333333333, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6842325916274176, + "t": 0.7674298730028142, + "punct": null, + "u_acc": 0.2004, + "t_acc": 0.352, + "punct_acc": null, + "threshold_t": 0.07836716622114182, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7341802150840788, + "t": 0.7846177895307308, + "punct": null, + "u_acc": 0.3004, + "t_acc": 0.3912, + "punct_acc": null, + "threshold_t": 0.07109081745147705, + "threshold_adj": 0.01 + } + }, + "sr": { + "opus100": { + "u": 0.7959584134530981, + "t": 0.9091870344528034, + "punct": null, + "u_acc": 0.41967871485943775, + "t_acc": 0.6807228915662651, + "punct_acc": null, + "threshold_t": 0.05623770132660866, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8660802596096713, + "t": 0.9299766899766899, + "punct": null, + "u_acc": 0.7230769230769231, + "t_acc": 0.7923076923076923, + "punct_acc": null, + "threshold_t": 0.07828009128570557, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6877903112400088, + "t": 0.7620202433823486, + "punct": null, + "u_acc": 0.2088, + "t_acc": 0.3456, + "punct_acc": null, + "threshold_t": 0.08801580965518951, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7223532875401678, + "t": 0.7687719046100099, + "punct": null, + "u_acc": 0.2872, + "t_acc": 0.3468, + "punct_acc": null, + "threshold_t": 0.10996741056442261, + "threshold_adj": 0.01 + } + }, + "sv": { + "opus100": { + "u": 0.8286461525724982, + "t": 0.9042759150241713, + "punct": null, + "u_acc": 0.5080321285140562, + "t_acc": 0.6746987951807228, + "punct_acc": null, + "threshold_t": 0.04241374507546425, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8286506032726779, + "t": 0.892626658440612, + "punct": null, + "u_acc": 0.5813953488372093, + "t_acc": 0.7131782945736435, + "punct_acc": null, + "threshold_t": 0.04127347841858864, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7296251693433456, + "t": 0.7914475901875901, + "punct": null, + "u_acc": 0.2824, + "t_acc": 0.4036, + "punct_acc": null, + "threshold_t": 0.07549653202295303, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7572179850219726, + "t": 0.7936356265956267, + "punct": null, + "u_acc": 0.3312, + "t_acc": 0.394, + "punct_acc": null, + "threshold_t": 0.07372824102640152, + "threshold_adj": 0.01 + } + }, + "ta": { + "ersatz": { + "u": 0.7925783125839316, + "t": 0.797426089045817, + "punct": null, + "u_acc": 0.545816733067729, + "t_acc": 0.41832669322709165, + "punct_acc": null, + "threshold_t": 0.28814736008644104, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.6246269823735009, + "t": 0.7332792053427483, + "punct": null, + "u_acc": 0.16666666666666666, + "t_acc": 0.2540650406504065, + "punct_acc": null, + "threshold_t": 0.36680668592453003, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8399803578064448, + "t": 0.9369369369369369, + "punct": null, + "u_acc": 0.6666666666666666, + "t_acc": 0.8666666666666667, + "punct_acc": null, + "threshold_t": 0.04847068339586258, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.5235485224995273, + "t": 0.6881941718118795, + "punct": null, + "u_acc": 0.08185053380782918, + "t_acc": 0.2569395017793594, + "punct_acc": null, + "threshold_t": 0.055044710636138916, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6312573802892971, + "t": 0.727471610443306, + "punct": null, + "u_acc": 0.16441281138790034, + "t_acc": 0.2889679715302491, + "punct_acc": null, + "threshold_t": 0.0803576111793518, + "threshold_adj": 0.009999999999999998 + } + }, + "te": { + "opus100": { + "u": 0.7040218052502097, + "t": 0.786287657920311, + "punct": null, + "u_acc": 0.23673469387755103, + "t_acc": 0.37755102040816324, + "punct_acc": null, + "threshold_t": 0.04151901230216026, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6275138555458515, + "t": 0.7072999088860117, + "punct": null, + "u_acc": 0.1555891238670695, + "t_acc": 0.22507552870090636, + "punct_acc": null, + "threshold_t": 0.09306807070970535, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6584688223918251, + "t": 0.7139486813958114, + "punct": null, + "u_acc": 0.1782477341389728, + "t_acc": 0.22658610271903323, + "punct_acc": null, + "threshold_t": 0.12133269757032394, + "threshold_adj": 0.009999999999999998 + } + }, + "tg": { + "opus100": { + "u": 0.42262986751425996, + "t": 0.7364770530708425, + "punct": null, + "u_acc": 0.09839357429718876, + "t_acc": 0.30522088353413657, + "punct_acc": null, + "threshold_t": 0.5004799365997314, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7343193356351251, + "t": 0.7526942355889724, + "punct": null, + "u_acc": 0.3157894736842105, + "t_acc": 0.27631578947368424, + "punct_acc": null, + "threshold_t": 0.16461707651615143, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7626344415818099, + "t": 0.8089807852965748, + "punct": null, + "u_acc": 0.3684210526315789, + "t_acc": 0.4605263157894737, + "punct_acc": null, + "threshold_t": 0.10540329664945602, + "threshold_adj": 0.01 + } + }, + "th": { + "opus100": { + "u": 0.7324494585100645, + "t": 0.7801975017126533, + "punct": null, + "u_acc": 0.19595959595959597, + "t_acc": 0.3191919191919192, + "punct_acc": null, + "threshold_t": 0.10073047876358032, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.7677283161283163, + "t": null, + "punct": null, + "u_acc": 0.288, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5472497944400564, + "t": 0.6934567918112354, + "punct": null, + "u_acc": 0.0916, + "t_acc": 0.214, + "punct_acc": null, + "threshold_t": 0.09660183638334274, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.5432417976950523, + "t": 0.6819799657086173, + "punct": null, + "u_acc": 0.0912, + "t_acc": 0.2076, + "punct_acc": null, + "threshold_t": 0.09660183638334274, + "threshold_adj": 0.01 + } + }, + "tr": { + "ersatz": { + "u": 0.8558088924032247, + "t": 0.906903997687994, + "punct": null, + "u_acc": 0.5904255319148937, + "t_acc": 0.7367021276595744, + "punct_acc": null, + "threshold_t": 0.04181329533457756, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8266514108262143, + "t": 0.8902101417938522, + "punct": null, + "u_acc": 0.46963562753036436, + "t_acc": 0.6396761133603239, + "punct_acc": null, + "threshold_t": 0.03596746176481247, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.8018085627074037, + "t": 0.8755216097034278, + "punct": null, + "u_acc": 0.49818181818181817, + "t_acc": 0.6436363636363637, + "punct_acc": null, + "threshold_t": 0.059762317687273026, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.759094878124971, + "t": 0.7974225347985348, + "punct": null, + "u_acc": 0.3312, + "t_acc": 0.4152, + "punct_acc": null, + "threshold_t": 0.029471680521965027, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7828125140772689, + "t": 0.8054253271874324, + "punct": null, + "u_acc": 0.384, + "t_acc": 0.4364, + "punct_acc": null, + "threshold_t": 0.030752742663025856, + "threshold_adj": 0.01 + } + }, + "uk": { + "opus100": { + "u": 0.7538007477997104, + "t": 0.8697308040720052, + "punct": null, + "u_acc": 0.3714859437751004, + "t_acc": 0.6024096385542169, + "punct_acc": null, + "threshold_t": 0.05568220093846321, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.6483168559201627, + "t": 0.7931677284355855, + "punct": null, + "u_acc": 0.35267857142857145, + "t_acc": 0.48660714285714285, + "punct_acc": null, + "threshold_t": 0.1227647140622139, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7152628470754052, + "t": 0.7788211695494048, + "punct": null, + "u_acc": 0.2344, + "t_acc": 0.3692, + "punct_acc": null, + "threshold_t": 0.08565552532672882, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7483529409476272, + "t": 0.8031632410382875, + "punct": null, + "u_acc": 0.3128, + "t_acc": 0.426, + "punct_acc": null, + "threshold_t": 0.046983759850263596, + "threshold_adj": 0.01 + } + }, + "ur": { + "opus100": { + "u": 0.5278535005670126, + "t": 0.7154094518423156, + "punct": null, + "u_acc": 0.1016949152542373, + "t_acc": 0.2733050847457627, + "punct_acc": null, + "threshold_t": 0.2766479551792145, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8943370891132086, + "t": 0.9445628997867804, + "punct": null, + "u_acc": 0.7089552238805971, + "t_acc": 0.835820895522388, + "punct_acc": null, + "threshold_t": 0.0358482301235199, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6692320340684851, + "t": 0.7366438279291191, + "punct": null, + "u_acc": 0.2040082219938335, + "t_acc": 0.28776978417266186, + "punct_acc": null, + "threshold_t": 0.10113585740327835, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6603894706841775, + "t": 0.737306093260675, + "punct": null, + "u_acc": 0.19578622816032887, + "t_acc": 0.2944501541623844, + "punct_acc": null, + "threshold_t": 0.08105884492397308, + "threshold_adj": 0.01 + } + }, + "uz": { + "opus100": { + "u": 0.5686001717656091, + "t": 0.7844029560034461, + "punct": null, + "u_acc": 0.15510204081632653, + "t_acc": 0.45510204081632655, + "punct_acc": null, + "threshold_t": 0.3144516944885254, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7418946065495426, + "t": 0.7817295924890861, + "punct": null, + "u_acc": 0.29324894514767935, + "t_acc": 0.37869198312236285, + "punct_acc": null, + "threshold_t": 0.04272758960723877, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7464454604678754, + "t": 0.7790038563559611, + "punct": null, + "u_acc": 0.31645569620253167, + "t_acc": 0.3808016877637131, + "punct_acc": null, + "threshold_t": 0.020240047946572304, + "threshold_adj": 0.01 + } + }, + "vi": { + "opus100": { + "u": 0.7742385383268917, + "t": 0.8804859292513614, + "punct": null, + "u_acc": 0.4053497942386831, + "t_acc": 0.6255144032921811, + "punct_acc": null, + "threshold_t": 0.055730924010276794, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.8176212537462538, + "t": 0.8842546897546897, + "punct": null, + "u_acc": 0.445, + "t_acc": 0.64, + "punct_acc": null, + "threshold_t": 0.05645648390054703, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6807474673414854, + "t": 0.7395216978576978, + "punct": null, + "u_acc": 0.2064, + "t_acc": 0.2852, + "punct_acc": null, + "threshold_t": 0.07871890813112259, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7267998669333844, + "t": 0.7697841243070654, + "punct": null, + "u_acc": 0.2856, + "t_acc": 0.3652, + "punct_acc": null, + "threshold_t": 0.04699409380555153, + "threshold_adj": 0.01 + } + }, + "xh": { + "opus100": { + "u": 0.6491138460854754, + "t": 0.8010700875151513, + "punct": null, + "u_acc": 0.2987551867219917, + "t_acc": 0.508298755186722, + "punct_acc": null, + "threshold_t": 0.11879320442676544, + "threshold_adj": 0.01 + } + }, + "yi": { + "opus100": { + "u": 0.7151466784695625, + "t": 0.7323630392595909, + "punct": null, + "u_acc": 0.2225705329153605, + "t_acc": 0.2413793103448276, + "punct_acc": null, + "threshold_t": 0.12696965038776398, + "threshold_adj": 0.01 + } + }, + "yo": { + "opus100": { + "u": 0.4663989191017974, + "t": null, + "punct": null, + "u_acc": 0.035409556313993173, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.25153204155545794, + "t": null, + "punct": null, + "u_acc": 0.0875, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "nllb": { + "u": 0.42766700577172717, + "t": 0.7218683313422193, + "punct": null, + "u_acc": 0.0972, + "t_acc": 0.278, + "punct_acc": null, + "threshold_t": 0.6914921402931213, + "threshold_adj": 0.01 + } + }, + "zh": { + "ersatz": { + "u": 0.7767222061063119, + "t": 0.7989252024874761, + "punct": null, + "u_acc": 0.518, + "t_acc": 0.554, + "punct_acc": null, + "threshold_t": 0.018511703237891197, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.757577051757949, + "t": 0.8019175089846174, + "punct": null, + "u_acc": 0.3440643863179074, + "t_acc": 0.4386317907444668, + "punct_acc": null, + "threshold_t": 0.02879003994166851, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.8984803640803641, + "t": 0.8825250305250305, + "punct": null, + "u_acc": 0.768, + "t_acc": 0.688, + "punct_acc": null, + "threshold_t": 0.03994122892618179, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.560326132856048, + "t": 0.5308702024502293, + "punct": null, + "u_acc": 0.09772951628825272, + "t_acc": 0.05873642645607108, + "punct_acc": null, + "threshold_t": 0.0035890808794647455, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.5625142837106123, + "t": 0.5301335779231647, + "punct": null, + "u_acc": 0.10513326752221125, + "t_acc": 0.06219151036525173, + "punct_acc": null, + "threshold_t": 0.0035890808794647455, + "threshold_adj": 0.009999999999999998 + } + }, + "zu": { + "opus100": { + "u": 0.742454032197622, + "t": 0.8192697734364399, + "punct": null, + "u_acc": 0.2948717948717949, + "t_acc": 0.452991452991453, + "punct_acc": null, + "threshold_t": 0.10627293586730957, + "threshold_adj": 0.01 + } + }, + "tr-de": {}, + "es-en": {}, + "vi-en": {}, + "en-de": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/sat-12l.json b/wtpsplit/evaluation/evaluation_results/short/sat-12l.json new file mode 100644 index 00000000..8cd6580b --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/sat-12l.json @@ -0,0 +1,3346 @@ +{ + "af": { + "opus100": { + "u": 0.8882477371113735, + "t": 0.8736849009576282, + "punct": null, + "u_acc": 0.6053719008264463, + "t_acc": 0.5909090909090909, + "punct_acc": null, + "threshold_t": 0.05722840875387192, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9884373488147071, + "t": 0.9882300089847259, + "punct": null, + "u_acc": 0.9716981132075472, + "t_acc": 0.9716981132075472, + "punct_acc": null, + "threshold_t": 0.019238632172346115, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7565230325230325, + "t": 0.770051282051282, + "punct": null, + "u_acc": 0.3169230769230769, + "t_acc": 0.3476923076923077, + "punct_acc": null, + "threshold_t": 0.09038517624139786, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.7562637362637362, + "t": 0.7662458908612756, + "punct": null, + "u_acc": 0.30153846153846153, + "t_acc": 0.3323076923076923, + "punct_acc": null, + "threshold_t": 0.005575624760240316, + "threshold_adj": 0.024999999999999994 + } + }, + "am": { + "opus100": { + "u": 0.7809555683049659, + "t": 0.8048001529929241, + "punct": null, + "u_acc": 0.3253012048192771, + "t_acc": 0.40763052208835343, + "punct_acc": null, + "threshold_t": 0.06382513046264648, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6895089285714286, + "t": 0.7075396825396826, + "punct": null, + "u_acc": 0.21875, + "t_acc": 0.265625, + "punct_acc": null, + "threshold_t": 0.04018476605415344, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.6938864087301586, + "t": 0.6870907738095238, + "punct": null, + "u_acc": 0.234375, + "t_acc": 0.234375, + "punct_acc": null, + "threshold_t": 0.017933109775185585, + "threshold_adj": 0.025000000000000005 + } + }, + "ar": { + "ersatz": { + "u": 0.9168819655521784, + "t": 0.9317502532928064, + "punct": null, + "u_acc": 0.7047872340425532, + "t_acc": 0.7606382978723404, + "punct_acc": null, + "threshold_t": 0.05513126403093338, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.8322332063295919, + "t": 0.8409574807165169, + "punct": null, + "u_acc": 0.4799196787148594, + "t_acc": 0.5, + "punct_acc": null, + "threshold_t": 0.040992915630340576, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9013632119514471, + "t": 0.9072549019607843, + "punct": null, + "u_acc": 0.6647058823529411, + "t_acc": 0.7, + "punct_acc": null, + "threshold_t": 0.35393238067626953, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.7097615231070958, + "t": 0.7225479942279942, + "punct": null, + "u_acc": 0.2324, + "t_acc": 0.2388, + "punct_acc": null, + "threshold_t": 0.06880255788564682, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7183403490283367, + "t": 0.7275813059163059, + "punct": null, + "u_acc": 0.2608, + "t_acc": 0.2652, + "punct_acc": null, + "threshold_t": 0.06880255788564682, + "threshold_adj": 0.024999999999999998 + } + }, + "az": { + "opus100": { + "u": 0.8241027602473386, + "t": 0.8543794224517116, + "punct": null, + "u_acc": 0.3755020080321285, + "t_acc": 0.5120481927710844, + "punct_acc": null, + "threshold_t": 0.0911768451333046, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.783178825377407, + "t": 0.7829752530107139, + "punct": null, + "u_acc": 0.3670212765957447, + "t_acc": 0.3664302600472813, + "punct_acc": null, + "threshold_t": 0.02031031996011734, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.748654264700364, + "t": 0.7585541428626535, + "punct": null, + "u_acc": 0.2760047281323877, + "t_acc": 0.30969267139479906, + "punct_acc": null, + "threshold_t": 0.009870330803096294, + "threshold_adj": 0.024999999999999998 + } + }, + "be": { + "opus100": { + "u": 0.8349337562587833, + "t": 0.8064325561978976, + "punct": null, + "u_acc": 0.505091649694501, + "t_acc": 0.49287169042769857, + "punct_acc": null, + "threshold_t": 0.1405823528766632, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9308791580167045, + "t": 0.921626782965073, + "punct": null, + "u_acc": 0.7657992565055762, + "t_acc": 0.724907063197026, + "punct_acc": null, + "threshold_t": 0.009101488627493382, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7715465873804614, + "t": 0.7677646961877981, + "punct": null, + "u_acc": 0.3419857235561324, + "t_acc": 0.33874107722258273, + "punct_acc": null, + "threshold_t": 0.11408890038728714, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.7683193762038667, + "t": 0.7680910804531832, + "punct": null, + "u_acc": 0.32965606748864373, + "t_acc": 0.3393900064892927, + "punct_acc": null, + "threshold_t": 0.011431345716118813, + "threshold_adj": 0.024999999999999994 + } + }, + "bg": { + "opus100": { + "u": 0.9520119604287941, + "t": 0.9462865124187769, + "punct": null, + "u_acc": 0.8136272545090181, + "t_acc": 0.7835671342685371, + "punct_acc": null, + "threshold_t": 0.009181635454297066, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9880525686977298, + "t": 0.9880525686977301, + "punct": null, + "u_acc": 0.956989247311828, + "t_acc": 0.956989247311828, + "punct_acc": null, + "threshold_t": 0.029523489996790886, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.7790780175380176, + "t": 0.7640262271062271, + "punct": null, + "u_acc": 0.3508, + "t_acc": 0.336, + "punct_acc": null, + "threshold_t": 0.1081811711192131, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7755598910268476, + "t": 0.786753937913938, + "punct": null, + "u_acc": 0.3536, + "t_acc": 0.3824, + "punct_acc": null, + "threshold_t": 0.010488645173609257, + "threshold_adj": 0.024999999999999998 + } + }, + "bn": { + "opus100": { + "u": 0.8933160289297111, + "t": 0.8960368270227426, + "punct": null, + "u_acc": 0.6197183098591549, + "t_acc": 0.647887323943662, + "punct_acc": null, + "threshold_t": 0.08311125636100769, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9857142857142858, + "t": null, + "punct": null, + "u_acc": 0.9285714285714286, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.57008493467317, + "t": 0.6396440781440781, + "punct": null, + "u_acc": 0.10461538461538461, + "t_acc": 0.14307692307692307, + "punct_acc": null, + "threshold_t": 0.06744924932718277, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.708734077887924, + "t": 0.7145422696961159, + "punct": null, + "u_acc": 0.2453846153846154, + "t_acc": 0.24769230769230768, + "punct_acc": null, + "threshold_t": 0.03372104465961456, + "threshold_adj": 0.025 + } + }, + "ca": { + "opus100": { + "u": 0.9313605483990879, + "t": 0.9355355935477639, + "punct": null, + "u_acc": 0.7647058823529411, + "t_acc": 0.7728194726166329, + "punct_acc": null, + "threshold_t": 0.03227446973323822, + "threshold_adj": 0.024999999999999998 + }, + "ud": { + "u": 0.987672644815502, + "t": 0.9883941455370028, + "punct": null, + "u_acc": 0.961038961038961, + "t_acc": 0.9632034632034632, + "punct_acc": null, + "threshold_t": 0.026162832975387573, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7589843756243757, + "t": 0.7681247619047619, + "punct": null, + "u_acc": 0.3112, + "t_acc": 0.3412, + "punct_acc": null, + "threshold_t": 0.05660455673933029, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7635360461760462, + "t": 0.7615948524677937, + "punct": null, + "u_acc": 0.3176, + "t_acc": 0.3284, + "punct_acc": null, + "threshold_t": 0.008572478778660297, + "threshold_adj": 0.024999999999999998 + } + }, + "ceb": { + "ud": { + "u": 1.0, + "t": null, + "punct": null, + "u_acc": 1.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999988 + }, + "ted2020-corrupted-asr": { + "u": 0.6623685837971552, + "t": 0.7238095238095238, + "punct": null, + "u_acc": 0.14285714285714285, + "t_acc": 0.21428571428571427, + "punct_acc": null, + "threshold_t": 0.0921429768204689, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.6581632653061223, + "t": 0.6598639455782312, + "punct": null, + "u_acc": 0.14285714285714285, + "t_acc": 0.07142857142857142, + "punct_acc": null, + "threshold_t": 0.17184561491012573, + "threshold_adj": 0.025000000000000005 + }, + "nllb": { + "u": 0.870450909090909, + "t": 0.8954285714285714, + "punct": null, + "u_acc": 0.574, + "t_acc": 0.6728, + "punct_acc": null, + "threshold_t": 0.19107355177402496, + "threshold_adj": 0.024999999999999998 + } + }, + "cs": { + "ersatz": { + "u": 0.9372685185185184, + "t": 0.9432870370370371, + "punct": null, + "u_acc": 0.7986111111111112, + "t_acc": 0.8148148148148148, + "punct_acc": null, + "threshold_t": 0.01957516185939312, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9328042328042327, + "t": 0.91435024609733, + "punct": null, + "u_acc": 0.7439024390243902, + "t_acc": 0.693089430894309, + "punct_acc": null, + "threshold_t": 0.010652069002389908, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.940672156445027, + "t": 0.9413819356248379, + "punct": null, + "u_acc": 0.8083596214511041, + "t_acc": 0.8103312302839116, + "punct_acc": null, + "threshold_t": 0.024562528356909752, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7750293861693862, + "t": 0.7774064833251041, + "punct": null, + "u_acc": 0.3492, + "t_acc": 0.3568, + "punct_acc": null, + "threshold_t": 0.03219946473836899, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7624698412698413, + "t": 0.7660492582972583, + "punct": null, + "u_acc": 0.318, + "t_acc": 0.3316, + "punct_acc": null, + "threshold_t": 0.01450707670301199, + "threshold_adj": 0.024999999999999998 + } + }, + "cy": { + "opus100": { + "u": 0.8485617245442573, + "t": 0.8414569903652874, + "punct": null, + "u_acc": 0.4912663755458515, + "t_acc": 0.5, + "punct_acc": null, + "threshold_t": 0.053751807659864426, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9949579831932773, + "t": 0.9941176470588237, + "punct": null, + "u_acc": 0.9831932773109243, + "t_acc": 0.9789915966386554, + "punct_acc": null, + "threshold_t": 0.017293473705649376, + "threshold_adj": 0.025 + } + }, + "da": { + "opus100": { + "u": 0.94176267281106, + "t": 0.9448732718894008, + "punct": null, + "u_acc": 0.7701612903225806, + "t_acc": 0.7842741935483871, + "punct_acc": null, + "threshold_t": 0.034385181963443756, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9451536643026004, + "t": 0.9427895981087471, + "punct": null, + "u_acc": 0.8085106382978723, + "t_acc": 0.8014184397163121, + "punct_acc": null, + "threshold_t": 0.026041628792881966, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7830988167388166, + "t": 0.7961436075036075, + "punct": null, + "u_acc": 0.3624, + "t_acc": 0.4036, + "punct_acc": null, + "threshold_t": 0.0644717812538147, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7626046315775727, + "t": 0.7748399193077453, + "punct": null, + "u_acc": 0.3088, + "t_acc": 0.3644, + "punct_acc": null, + "threshold_t": 0.00536053441464901, + "threshold_adj": 0.024999999999999998 + } + }, + "de": { + "ersatz": { + "u": 0.9575210939773057, + "t": 0.9611870817573465, + "punct": null, + "u_acc": 0.8553971486761711, + "t_acc": 0.8655804480651731, + "punct_acc": null, + "threshold_t": 0.021463118493556976, + "threshold_adj": 0.025000000000000005 + }, + "opus100": { + "u": 0.900149018819905, + "t": 0.9017564128323622, + "punct": null, + "u_acc": 0.6371308016877637, + "t_acc": 0.6413502109704642, + "punct_acc": null, + "threshold_t": 0.025454489514231682, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9592896174863388, + "t": 0.9646174863387978, + "punct": null, + "u_acc": 0.860655737704918, + "t_acc": 0.8729508196721312, + "punct_acc": null, + "threshold_t": 0.0167044997215271, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.809410402930403, + "t": 0.8061377133977133, + "punct": null, + "u_acc": 0.4244, + "t_acc": 0.4336, + "punct_acc": null, + "threshold_t": 0.0937303826212883, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7700538417138417, + "t": 0.7719913158708903, + "punct": null, + "u_acc": 0.3392, + "t_acc": 0.3512, + "punct_acc": null, + "threshold_t": 0.005947270430624485, + "threshold_adj": 0.024999999999999998 + } + }, + "el": { + "opus100": { + "u": 0.9510613884107861, + "t": 0.9526678141135972, + "punct": null, + "u_acc": 0.8032128514056225, + "t_acc": 0.8112449799196787, + "punct_acc": null, + "threshold_t": 0.02715108171105385, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9807017543859649, + "t": 0.9707602339181286, + "punct": null, + "u_acc": 0.9385964912280702, + "t_acc": 0.9122807017543859, + "punct_acc": null, + "threshold_t": 0.04438067600131035, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7705246529023678, + "t": 0.7860235209235209, + "punct": null, + "u_acc": 0.3288, + "t_acc": 0.3896, + "punct_acc": null, + "threshold_t": 0.10741370171308517, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7609662965792379, + "t": 0.7610601252027216, + "punct": null, + "u_acc": 0.3084, + "t_acc": 0.3504, + "punct_acc": null, + "threshold_t": 0.0030577601864933968, + "threshold_adj": 0.024999999999999998 + } + }, + "en": { + "ersatz": { + "u": 0.9759799073662002, + "t": 0.9748101097010755, + "punct": null, + "u_acc": 0.9210799584631361, + "t_acc": 0.9153686396677051, + "punct_acc": null, + "threshold_t": 0.008787485770881176, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9518241167434716, + "t": 0.9448636712749617, + "punct": null, + "u_acc": 0.8145161290322581, + "t_acc": 0.7842741935483871, + "punct_acc": null, + "threshold_t": 0.013111920095980167, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9260514424748002, + "t": 0.9494264859228364, + "punct": null, + "u_acc": 0.7700729927007299, + "t_acc": 0.8357664233576643, + "punct_acc": null, + "threshold_t": 0.016067247837781906, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.7674019336219335, + "t": 0.7437825396825397, + "punct": null, + "u_acc": 0.3324, + "t_acc": 0.276, + "punct_acc": null, + "threshold_t": 0.10362137854099274, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7459095415695416, + "t": 0.7474934953934954, + "punct": null, + "u_acc": 0.2828, + "t_acc": 0.2924, + "punct_acc": null, + "threshold_t": 0.015765845775604248, + "threshold_adj": 0.024999999999999998 + } + }, + "eo": { + "opus100": { + "u": 0.9529377880184332, + "t": 0.952899385560676, + "punct": null, + "u_acc": 0.8165322580645161, + "t_acc": 0.8205645161290323, + "punct_acc": null, + "threshold_t": 0.05278538167476654, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.7461896082196834, + "t": 0.7529147242806391, + "punct": null, + "u_acc": 0.29197994987468673, + "t_acc": 0.30388471177944865, + "punct_acc": null, + "threshold_t": 0.034555960446596146, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.7482474449109788, + "t": 0.747889135002138, + "punct": null, + "u_acc": 0.287593984962406, + "t_acc": 0.2907268170426065, + "punct_acc": null, + "threshold_t": 0.009082023985683918, + "threshold_adj": 0.025000000000000005 + } + }, + "es": { + "ersatz": { + "u": 0.9842906875543952, + "t": null, + "punct": null, + "u_acc": 0.9451697127937336, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.9420083739921796, + "t": 0.9249605915240591, + "punct": null, + "u_acc": 0.7793522267206477, + "t_acc": 0.7246963562753036, + "punct_acc": null, + "threshold_t": 0.008260590024292469, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9733742743045068, + "t": 0.9733742743045068, + "punct": null, + "u_acc": 0.9069767441860465, + "t_acc": 0.9069767441860465, + "punct_acc": null, + "threshold_t": 0.023629622533917427, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7510983459053024, + "t": 0.737092242926156, + "punct": null, + "u_acc": 0.296, + "t_acc": 0.2592, + "punct_acc": null, + "threshold_t": 0.16021451354026794, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7600066533466534, + "t": 0.7644120173667663, + "punct": null, + "u_acc": 0.3132, + "t_acc": 0.3416, + "punct_acc": null, + "threshold_t": 0.004388599190860987, + "threshold_adj": 0.024999999999999998 + } + }, + "et": { + "ersatz": { + "u": 0.9696428571428571, + "t": 0.9708994708994709, + "punct": null, + "u_acc": 0.8908730158730159, + "t_acc": 0.8908730158730159, + "punct_acc": null, + "threshold_t": 0.011970039457082748, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9197993863985767, + "t": 0.9248485432695959, + "punct": null, + "u_acc": 0.7348178137651822, + "t_acc": 0.7489878542510121, + "punct_acc": null, + "threshold_t": 0.03217248246073723, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9575100687040986, + "t": 0.9547638790176104, + "punct": null, + "u_acc": 0.8743781094527363, + "t_acc": 0.8544776119402985, + "punct_acc": null, + "threshold_t": 0.008748026564717293, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7933893506493507, + "t": 0.7919177133977134, + "punct": null, + "u_acc": 0.3928, + "t_acc": 0.3976, + "punct_acc": null, + "threshold_t": 0.06978411972522736, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7750590476190475, + "t": 0.7764688777888777, + "punct": null, + "u_acc": 0.3448, + "t_acc": 0.35, + "punct_acc": null, + "threshold_t": 0.01639181189239025, + "threshold_adj": 0.024999999999999998 + } + }, + "eu": { + "opus100": { + "u": 0.9212545663962669, + "t": 0.9247151409094728, + "punct": null, + "u_acc": 0.7246963562753036, + "t_acc": 0.7348178137651822, + "punct_acc": null, + "threshold_t": 0.03254619240760803, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9793439153439153, + "t": 0.9757283950617284, + "punct": null, + "u_acc": 0.9266666666666666, + "t_acc": 0.9133333333333333, + "punct_acc": null, + "threshold_t": 0.014970947057008743, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7029437818752334, + "t": 0.7180812541699638, + "punct": null, + "u_acc": 0.20228494623655913, + "t_acc": 0.21303763440860216, + "punct_acc": null, + "threshold_t": 0.05669393017888069, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7403070458514007, + "t": 0.7393969456469457, + "punct": null, + "u_acc": 0.2594086021505376, + "t_acc": 0.2708333333333333, + "punct_acc": null, + "threshold_t": 0.012845298275351524, + "threshold_adj": 0.024999999999999998 + } + }, + "fa": { + "opus100": { + "u": 0.7974824401501285, + "t": 0.8037221922096935, + "punct": null, + "u_acc": 0.4168336673346693, + "t_acc": 0.43887775551102204, + "punct_acc": null, + "threshold_t": 0.04134111478924751, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9873626373626373, + "t": 0.9891941391941393, + "punct": null, + "u_acc": 0.9423076923076923, + "t_acc": 0.9532967032967034, + "punct_acc": null, + "threshold_t": 0.0366155169904232, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.741609863575746, + "t": 0.7447822000222001, + "punct": null, + "u_acc": 0.3, + "t_acc": 0.292, + "punct_acc": null, + "threshold_t": 0.0620068721473217, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7455831052360464, + "t": 0.7483437935289863, + "punct": null, + "u_acc": 0.312, + "t_acc": 0.3136, + "punct_acc": null, + "threshold_t": 0.04220201075077057, + "threshold_adj": 0.024999999999999998 + } + }, + "fi": { + "ersatz": { + "u": 0.9759519038076152, + "t": 0.977555110220441, + "punct": null, + "u_acc": 0.9158316633266533, + "t_acc": 0.9198396793587175, + "punct_acc": null, + "threshold_t": 0.020431339740753174, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9527578167417201, + "t": 0.9464149979240523, + "punct": null, + "u_acc": 0.8088531187122736, + "t_acc": 0.7907444668008048, + "punct_acc": null, + "threshold_t": 0.01285080797970295, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9648748159057438, + "t": 0.9652061855670103, + "punct": null, + "u_acc": 0.884020618556701, + "t_acc": 0.8634020618556701, + "punct_acc": null, + "threshold_t": 0.00911866407841444, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7565134465534465, + "t": 0.7542530735930736, + "punct": null, + "u_acc": 0.3028, + "t_acc": 0.312, + "punct_acc": null, + "threshold_t": 0.08073306083679199, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7532672039072039, + "t": 0.7469481369610782, + "punct": null, + "u_acc": 0.29, + "t_acc": 0.308, + "punct_acc": null, + "threshold_t": 0.003686185460537672, + "threshold_adj": 0.024999999999999998 + } + }, + "fr": { + "ersatz": { + "u": 0.9801932367149758, + "t": 0.9777777777777779, + "punct": null, + "u_acc": 0.9202898550724637, + "t_acc": 0.9178743961352657, + "punct_acc": null, + "threshold_t": 0.03443998843431473, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.9323384526224282, + "t": null, + "punct": null, + "u_acc": 0.7383367139959433, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ud": { + "u": 0.982051282051282, + "t": 0.9833333333333335, + "punct": null, + "u_acc": 0.9230769230769231, + "t_acc": 0.9230769230769231, + "punct_acc": null, + "threshold_t": 0.028676128014922142, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7538486580086581, + "t": 0.7681149206349206, + "punct": null, + "u_acc": 0.2864, + "t_acc": 0.3376, + "punct_acc": null, + "threshold_t": 0.09169740974903107, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7695351226551227, + "t": 0.7730476774206185, + "punct": null, + "u_acc": 0.3372, + "t_acc": 0.3488, + "punct_acc": null, + "threshold_t": 0.014081344939768314, + "threshold_adj": 0.024999999999999998 + } + }, + "fy": { + "opus100": { + "u": 0.8336121198782143, + "t": 0.81566182982492, + "punct": null, + "u_acc": 0.5107296137339056, + "t_acc": 0.4613733905579399, + "punct_acc": null, + "threshold_t": 0.07608260214328766, + "threshold_adj": 0.025000000000000005 + } + }, + "ga": { + "opus100": { + "u": 0.915422077922078, + "t": 0.9257328469022018, + "punct": null, + "u_acc": 0.7258064516129032, + "t_acc": 0.7580645161290323, + "punct_acc": null, + "threshold_t": 0.0749048963189125, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9236563631300474, + "t": 0.938150932887775, + "punct": null, + "u_acc": 0.7543859649122807, + "t_acc": 0.8070175438596491, + "punct_acc": null, + "threshold_t": 0.11123145371675491, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.5902236652236652, + "t": 0.6166666666666666, + "punct": null, + "u_acc": 0.08333333333333333, + "t_acc": 0.16666666666666666, + "punct_acc": null, + "threshold_t": 0.12232228368520737, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.7293650793650793, + "t": 0.7333333333333333, + "punct": null, + "u_acc": 0.25, + "t_acc": 0.25, + "punct_acc": null, + "threshold_t": 0.13638371229171753, + "threshold_adj": 0.025000000000000005 + } + }, + "gd": { + "opus100": { + "u": 0.9027915705693484, + "t": 0.8995816940261385, + "punct": null, + "u_acc": 0.6777777777777778, + "t_acc": 0.674074074074074, + "punct_acc": null, + "threshold_t": 0.03357437998056412, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.8299369747899159, + "t": 0.8360644257703082, + "punct": null, + "u_acc": 0.5073529411764706, + "t_acc": 0.5220588235294118, + "punct_acc": null, + "threshold_t": 0.03293919190764427, + "threshold_adj": 0.024999999999999994 + } + }, + "gl": { + "opus100": { + "u": 0.9278577828981055, + "t": 0.93655273937532, + "punct": null, + "u_acc": 0.7318548387096774, + "t_acc": 0.7721774193548387, + "punct_acc": null, + "threshold_t": 0.06358516216278076, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9870476190476191, + "t": 0.9830476190476191, + "punct": null, + "u_acc": 0.96, + "t_acc": 0.94, + "punct_acc": null, + "threshold_t": 0.017566092312335968, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.7587245088245088, + "t": 0.7657419336219337, + "punct": null, + "u_acc": 0.306, + "t_acc": 0.3368, + "punct_acc": null, + "threshold_t": 0.08026846498250961, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7592276767676769, + "t": 0.7615290196559547, + "punct": null, + "u_acc": 0.298, + "t_acc": 0.3264, + "punct_acc": null, + "threshold_t": 0.004543937277048826, + "threshold_adj": 0.024999999999999998 + } + }, + "gu": { + "ersatz": { + "u": 0.9239470066241721, + "t": 0.9396711774664531, + "punct": null, + "u_acc": 0.7716535433070866, + "t_acc": 0.8188976377952756, + "punct_acc": null, + "threshold_t": 0.01645965874195099, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.8302507476420519, + "t": 0.8238834664300502, + "punct": null, + "u_acc": 0.4658385093167702, + "t_acc": 0.474120082815735, + "punct_acc": null, + "threshold_t": 0.09955763816833496, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.6022865150610687, + "t": 0.644624402436653, + "punct": null, + "u_acc": 0.13801820020222447, + "t_acc": 0.17340748230535896, + "punct_acc": null, + "threshold_t": 0.0993092954158783, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.6829741016851868, + "t": 0.7013009027491868, + "punct": null, + "u_acc": 0.22143579373104147, + "t_acc": 0.23306370070778565, + "punct_acc": null, + "threshold_t": 0.059167712926864624, + "threshold_adj": 0.025 + } + }, + "ha": { + "opus100": { + "u": 0.8818709401709403, + "t": 0.9031619047619047, + "punct": null, + "u_acc": 0.572, + "t_acc": 0.65, + "punct_acc": null, + "threshold_t": 0.05822952464222908, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.5841269841269842, + "t": 0.8888888888888888, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.6666666666666666, + "punct_acc": null, + "threshold_t": 0.29047495126724243, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.6666666666666666, + "t": 0.562962962962963, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.00034026207868009806, + "threshold_adj": 0.025000000000000005 + } + }, + "he": { + "opus100": { + "u": 0.9263383910678501, + "t": 0.9193434488023667, + "punct": null, + "u_acc": 0.7234468937875751, + "t_acc": 0.7014028056112225, + "punct_acc": null, + "threshold_t": 0.014620037749409676, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.976530612244898, + "t": 0.9863945578231293, + "punct": null, + "u_acc": 0.9183673469387755, + "t_acc": 0.9387755102040817, + "punct_acc": null, + "threshold_t": 0.018793705850839615, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7211529323679788, + "t": 0.7303554488648606, + "punct": null, + "u_acc": 0.2472, + "t_acc": 0.2628, + "punct_acc": null, + "threshold_t": 0.042893923819065094, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.72972623885918, + "t": 0.73287552003552, + "punct": null, + "u_acc": 0.2816, + "t_acc": 0.2844, + "punct_acc": null, + "threshold_t": 0.038458239287137985, + "threshold_adj": 0.024999999999999998 + } + }, + "hi": { + "ersatz": { + "u": 0.9556689342403629, + "t": 0.8035449735449736, + "punct": null, + "u_acc": 0.8444444444444444, + "t_acc": 0.4111111111111111, + "punct_acc": null, + "threshold_t": 0.3583506941795349, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.8027028864073399, + "t": 0.816465844097423, + "punct": null, + "u_acc": 0.47368421052631576, + "t_acc": 0.4898785425101215, + "punct_acc": null, + "threshold_t": 0.0629085972905159, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9695961995249407, + "t": 0.9900237529691212, + "punct": null, + "u_acc": 0.9002375296912114, + "t_acc": 0.9596199524940617, + "punct_acc": null, + "threshold_t": 0.012450703419744968, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6641188676682794, + "t": 0.6840336974853104, + "punct": null, + "u_acc": 0.198, + "t_acc": 0.2248, + "punct_acc": null, + "threshold_t": 0.0389426052570343, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.729444102120102, + "t": 0.7296528777888778, + "punct": null, + "u_acc": 0.2752, + "t_acc": 0.2764, + "punct_acc": null, + "threshold_t": 0.03516624495387077, + "threshold_adj": 0.024999999999999998 + } + }, + "hu": { + "opus100": { + "u": 0.9505088325652842, + "t": 0.9472926267281107, + "punct": null, + "u_acc": 0.7943548387096774, + "t_acc": 0.780241935483871, + "punct_acc": null, + "threshold_t": 0.017952704802155495, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9830782312925169, + "t": 0.9786139455782312, + "punct": null, + "u_acc": 0.9375, + "t_acc": 0.9285714285714286, + "punct_acc": null, + "threshold_t": 0.01939070224761963, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7687581115181115, + "t": 0.7805476856476856, + "punct": null, + "u_acc": 0.3288, + "t_acc": 0.3664, + "punct_acc": null, + "threshold_t": 0.05983763188123703, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7558991085791086, + "t": 0.7540847268287268, + "punct": null, + "u_acc": 0.2972, + "t_acc": 0.3168, + "punct_acc": null, + "threshold_t": 0.005200104787945747, + "threshold_adj": 0.024999999999999998 + } + }, + "hy": { + "opus100": { + "u": 0.9046868785479263, + "t": null, + "punct": null, + "u_acc": 0.658883826879271, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9854354354354353, + "t": 0.9863363363363362, + "punct": null, + "u_acc": 0.9527027027027027, + "t_acc": 0.9527027027027027, + "punct_acc": null, + "threshold_t": 0.019690409302711487, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.7711933685921921, + "t": 0.7796568436008436, + "punct": null, + "u_acc": 0.3388, + "t_acc": 0.3668, + "punct_acc": null, + "threshold_t": 0.04970479756593704, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7588134898434898, + "t": 0.7590450160950162, + "punct": null, + "u_acc": 0.3092, + "t_acc": 0.3116, + "punct_acc": null, + "threshold_t": 0.02619357593357563, + "threshold_adj": 0.024999999999999998 + } + }, + "id": { + "opus100": { + "u": 0.9143345042935207, + "t": 0.9157982045277129, + "punct": null, + "u_acc": 0.7049180327868853, + "t_acc": 0.7049180327868853, + "punct_acc": null, + "threshold_t": 0.03246387094259262, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9912000000000001, + "t": null, + "punct": null, + "u_acc": 0.964, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7286853546453547, + "t": 0.7459293591375944, + "punct": null, + "u_acc": 0.2496, + "t_acc": 0.2824, + "punct_acc": null, + "threshold_t": 0.05167698115110397, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7461571691054045, + "t": 0.7535088666888667, + "punct": null, + "u_acc": 0.2828, + "t_acc": 0.3044, + "punct_acc": null, + "threshold_t": 0.010189063847064972, + "threshold_adj": 0.024999999999999998 + } + }, + "ig": { + "opus100": { + "u": 0.8835760517799354, + "t": 0.8618469717984281, + "punct": null, + "u_acc": 0.6140776699029126, + "t_acc": 0.5679611650485437, + "punct_acc": null, + "threshold_t": 0.06960861384868622, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.4906495842016204, + "t": 0.6182539682539682, + "punct": null, + "u_acc": 0.038461538461538464, + "t_acc": 0.11538461538461539, + "punct_acc": null, + "threshold_t": 0.07900502532720566, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.7373626373626375, + "t": 0.7282051282051282, + "punct": null, + "u_acc": 0.23076923076923078, + "t_acc": 0.19230769230769232, + "punct_acc": null, + "threshold_t": 0.0449187345802784, + "threshold_adj": 0.025000000000000005 + } + }, + "is": { + "opus100": { + "u": 0.9511162211363419, + "t": 0.9537223340040242, + "punct": null, + "u_acc": 0.7947686116700201, + "t_acc": 0.8269617706237424, + "punct_acc": null, + "threshold_t": 0.09734828025102615, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.8998914279656065, + "t": 0.8846920168875173, + "punct": null, + "u_acc": 0.6702870442203258, + "t_acc": 0.6276183087664856, + "punct_acc": null, + "threshold_t": 0.06837605684995651, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.7640683461294149, + "t": 0.753604749787956, + "punct": null, + "u_acc": 0.3231552162849873, + "t_acc": 0.2951653944020356, + "punct_acc": null, + "threshold_t": 0.09285765886306763, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7740619572680641, + "t": 0.7727926018002353, + "punct": null, + "u_acc": 0.35368956743002544, + "t_acc": 0.37150127226463103, + "punct_acc": null, + "threshold_t": 0.003045972203835845, + "threshold_adj": 0.024999999999999998 + } + }, + "it": { + "opus100": { + "u": 0.9303795442908346, + "t": 0.9390873015873017, + "punct": null, + "u_acc": 0.7399193548387096, + "t_acc": 0.7741935483870968, + "punct_acc": null, + "threshold_t": 0.04040621221065521, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9811111111111112, + "t": 0.9811111111111112, + "punct": null, + "u_acc": 0.9333333333333333, + "t_acc": 0.9333333333333333, + "punct_acc": null, + "threshold_t": 0.0260189026594162, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.748026035076035, + "t": 0.7586727849927851, + "punct": null, + "u_acc": 0.2772, + "t_acc": 0.32, + "punct_acc": null, + "threshold_t": 0.10479506850242615, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7716441736041737, + "t": 0.7730018537018537, + "punct": null, + "u_acc": 0.3392, + "t_acc": 0.3444, + "punct_acc": null, + "threshold_t": 0.016704311594367027, + "threshold_adj": 0.024999999999999998 + } + }, + "ja": { + "ersatz": { + "u": 0.9054726368159204, + "t": 0.8050165837479271, + "punct": null, + "u_acc": 0.6902985074626866, + "t_acc": 0.4253731343283582, + "punct_acc": null, + "threshold_t": 0.45318669080734253, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.9128035953337159, + "t": 0.9106330082233696, + "punct": null, + "u_acc": 0.7248995983935743, + "t_acc": 0.7289156626506024, + "punct_acc": null, + "threshold_t": 0.044107064604759216, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9419467787114847, + "t": 0.9708683473389357, + "punct": null, + "u_acc": 0.7573529411764706, + "t_acc": 0.8970588235294118, + "punct_acc": null, + "threshold_t": 0.07461076974868774, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.9344283116883116, + "t": 0.8885466666666667, + "punct": null, + "u_acc": 0.7776, + "t_acc": 0.6648, + "punct_acc": null, + "threshold_t": 0.2125685214996338, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.9231737085137085, + "t": 0.8824266666666667, + "punct": null, + "u_acc": 0.7488, + "t_acc": 0.6472, + "punct_acc": null, + "threshold_t": 0.17212893068790436, + "threshold_adj": 0.024999999999999998 + } + }, + "jv": { + "ud": { + "u": 0.9832000000000001, + "t": null, + "punct": null, + "u_acc": 0.94, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "nllb": { + "u": 0.8558299167499166, + "t": 0.8623142857142857, + "punct": null, + "u_acc": 0.5228, + "t_acc": 0.5852, + "punct_acc": null, + "threshold_t": 0.4523467719554901, + "threshold_adj": 0.024999999999999998 + } + }, + "ka": { + "opus100": { + "u": 0.8586603174603173, + "t": 0.9115523809523809, + "punct": null, + "u_acc": 0.496, + "t_acc": 0.714, + "punct_acc": null, + "threshold_t": 0.19804611802101135, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7201264264624265, + "t": 0.7375169408369409, + "punct": null, + "u_acc": 0.2584, + "t_acc": 0.288, + "punct_acc": null, + "threshold_t": 0.069283626973629, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.724669748029748, + "t": 0.7319194778554778, + "punct": null, + "u_acc": 0.2688, + "t_acc": 0.2772, + "punct_acc": null, + "threshold_t": 0.04976864531636238, + "threshold_adj": 0.024999999999999998 + } + }, + "kk": { + "ersatz": { + "u": 0.9706666666666667, + "t": 0.9635999999999999, + "punct": null, + "u_acc": 0.904, + "t_acc": 0.888, + "punct_acc": null, + "threshold_t": 0.03291257843375206, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.8750229568411388, + "t": 0.8633116883116883, + "punct": null, + "u_acc": 0.5826446280991735, + "t_acc": 0.5785123966942148, + "punct_acc": null, + "threshold_t": 0.10233175754547119, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9575063613231553, + "t": 0.8297709923664122, + "punct": null, + "u_acc": 0.8702290076335878, + "t_acc": 0.48854961832061067, + "punct_acc": null, + "threshold_t": 0.17582136392593384, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7784396225874666, + "t": 0.7783418422022117, + "punct": null, + "u_acc": 0.3394934976043806, + "t_acc": 0.3394934976043806, + "punct_acc": null, + "threshold_t": 0.024909762665629387, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7570441878450094, + "t": 0.7661712522460389, + "punct": null, + "u_acc": 0.2929500342231348, + "t_acc": 0.32375085557837097, + "punct_acc": null, + "threshold_t": 0.009030105546116829, + "threshold_adj": 0.024999999999999998 + } + }, + "km": { + "ersatz": { + "u": 0.9368105999461932, + "t": 0.951129943502825, + "punct": null, + "u_acc": 0.7813559322033898, + "t_acc": 0.8542372881355932, + "punct_acc": null, + "threshold_t": 0.6576729416847229, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.7886167440806616, + "t": 0.7790574374079529, + "punct": null, + "u_acc": 0.35876288659793815, + "t_acc": 0.34845360824742266, + "punct_acc": null, + "threshold_t": 0.42202553153038025, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.9078052273540994, + "t": 0.8644110275689223, + "punct": null, + "u_acc": 0.6842105263157895, + "t_acc": 0.5789473684210527, + "punct_acc": null, + "threshold_t": 0.17317470908164978, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.8967776584317938, + "t": 0.8819548872180452, + "punct": null, + "u_acc": 0.6766917293233082, + "t_acc": 0.631578947368421, + "punct_acc": null, + "threshold_t": 0.09494873881340027, + "threshold_adj": 0.024999999999999994 + } + }, + "kn": { + "opus100": { + "u": 0.8060085686191881, + "t": 0.8155077960387694, + "punct": null, + "u_acc": 0.42035398230088494, + "t_acc": 0.43805309734513276, + "punct_acc": null, + "threshold_t": 0.09700502455234528, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.5970234311143402, + "t": 0.6080453472745962, + "punct": null, + "u_acc": 0.11888111888111888, + "t_acc": 0.13986013986013987, + "punct_acc": null, + "threshold_t": 0.032595276832580566, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.6609589379951372, + "t": 0.6769291314745861, + "punct": null, + "u_acc": 0.14335664335664336, + "t_acc": 0.16083916083916083, + "punct_acc": null, + "threshold_t": 0.07765907794237137, + "threshold_adj": 0.024999999999999994 + } + }, + "ko": { + "opus100": { + "u": 0.8306551635499004, + "t": 0.8371537818906241, + "punct": null, + "u_acc": 0.45546558704453444, + "t_acc": 0.48582995951417, + "punct_acc": null, + "threshold_t": 0.03852401301264763, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9807192807192806, + "t": 0.9841325341325341, + "punct": null, + "u_acc": 0.9318181818181818, + "t_acc": 0.9388111888111889, + "punct_acc": null, + "threshold_t": 0.02070559933781624, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.792142352418823, + "t": 0.7932689408369408, + "punct": null, + "u_acc": 0.3788, + "t_acc": 0.376, + "punct_acc": null, + "threshold_t": 0.07698056846857071, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7684466608946608, + "t": 0.771019337107337, + "punct": null, + "u_acc": 0.3424, + "t_acc": 0.3448, + "punct_acc": null, + "threshold_t": 0.051460716873407364, + "threshold_adj": 0.024999999999999998 + } + }, + "ku": { + "opus100": { + "u": 0.8763310263310263, + "t": 0.8399267399267398, + "punct": null, + "u_acc": 0.5966735966735967, + "t_acc": 0.5072765072765073, + "punct_acc": null, + "threshold_t": 0.1698647290468216, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.5630213450861874, + "t": 0.6288080778480778, + "punct": null, + "u_acc": 0.0928, + "t_acc": 0.1208, + "punct_acc": null, + "threshold_t": 0.06456588208675385, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6100015687199489, + "t": 0.6326616504790538, + "punct": null, + "u_acc": 0.148, + "t_acc": 0.1656, + "punct_acc": null, + "threshold_t": 0.0347466878592968, + "threshold_adj": 0.024999999999999998 + } + }, + "ky": { + "opus100": { + "u": 0.90557067271353, + "t": 0.8969501133786848, + "punct": null, + "u_acc": 0.6857142857142857, + "t_acc": 0.6785714285714286, + "punct_acc": null, + "threshold_t": 0.08270005881786346, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.813741051976346, + "t": 0.8009492685963272, + "punct": null, + "u_acc": 0.4019607843137255, + "t_acc": 0.3627450980392157, + "punct_acc": null, + "threshold_t": 0.018293272703886032, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.7815281668222847, + "t": 0.7997976968565205, + "punct": null, + "u_acc": 0.3627450980392157, + "t_acc": 0.4019607843137255, + "punct_acc": null, + "threshold_t": 0.00572846457362175, + "threshold_adj": 0.024999999999999994 + } + }, + "la": { + "ud": { + "u": 0.8454331065759637, + "t": 0.9025271236699808, + "punct": null, + "u_acc": 0.5257142857142857, + "t_acc": 0.6780952380952381, + "punct_acc": null, + "threshold_t": 0.0073266164399683475, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.4904761904761905, + "t": 0.6, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.014356599189341068, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.7666666666666666, + "t": 0.4459984459984459, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.00035805770312435925, + "threshold_adj": 0.025000000000000005 + } + }, + "lt": { + "ersatz": { + "u": 0.9789333333333333, + "t": 0.9775999999999999, + "punct": null, + "u_acc": 0.924, + "t_acc": 0.92, + "punct_acc": null, + "threshold_t": 0.031836457550525665, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9064105618185315, + "t": 0.9179942593249045, + "punct": null, + "u_acc": 0.6834677419354839, + "t_acc": 0.719758064516129, + "punct_acc": null, + "threshold_t": 0.041259873658418655, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9646996278575226, + "t": 0.9575048732943471, + "punct": null, + "u_acc": 0.8830409356725146, + "t_acc": 0.8654970760233918, + "punct_acc": null, + "threshold_t": 0.040202051401138306, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7566520879120879, + "t": 0.7619136507936508, + "punct": null, + "u_acc": 0.3004, + "t_acc": 0.3156, + "punct_acc": null, + "threshold_t": 0.12067044526338577, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7687044895844896, + "t": 0.7700486646686647, + "punct": null, + "u_acc": 0.3356, + "t_acc": 0.3404, + "punct_acc": null, + "threshold_t": 0.022306077182292938, + "threshold_adj": 0.024999999999999998 + } + }, + "lv": { + "ersatz": { + "u": 0.976911976911977, + "t": 0.7822310405643739, + "punct": null, + "u_acc": 0.9166666666666666, + "t_acc": 0.3472222222222222, + "punct_acc": null, + "threshold_t": 0.5568537712097168, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9193511469373539, + "t": 0.9276731382208055, + "punct": null, + "u_acc": 0.7139959432048681, + "t_acc": 0.7464503042596349, + "punct_acc": null, + "threshold_t": 0.07159245014190674, + "threshold_adj": 0.024999999999999998 + }, + "ud": { + "u": 0.958493248045487, + "t": 0.9588959962094291, + "punct": null, + "u_acc": 0.8623548922056384, + "t_acc": 0.8623548922056384, + "punct_acc": null, + "threshold_t": 0.01997421309351921, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7732926007326009, + "t": 0.7773880519480519, + "punct": null, + "u_acc": 0.3428, + "t_acc": 0.364, + "punct_acc": null, + "threshold_t": 0.06377746164798737, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7653261072261073, + "t": 0.7683756487956489, + "punct": null, + "u_acc": 0.3096, + "t_acc": 0.322, + "punct_acc": null, + "threshold_t": 0.012844519689679146, + "threshold_adj": 0.024999999999999998 + } + }, + "mg": { + "opus100": { + "u": 0.931958100379153, + "t": 0.9377289377289378, + "punct": null, + "u_acc": 0.7510121457489879, + "t_acc": 0.7874493927125507, + "punct_acc": null, + "threshold_t": 0.13172954320907593, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6514283042060819, + "t": 0.6898321842766285, + "punct": null, + "u_acc": 0.18518518518518517, + "t_acc": 0.2037037037037037, + "punct_acc": null, + "threshold_t": 0.0876275822520256, + "threshold_adj": 0.02499999999999999 + }, + "ted2020-corrupted-social-media": { + "u": 0.7176660787771896, + "t": 0.7109374164929719, + "punct": null, + "u_acc": 0.25925925925925924, + "t_acc": 0.24074074074074073, + "punct_acc": null, + "threshold_t": 0.006002173293381929, + "threshold_adj": 0.02499999999999999 + } + }, + "mk": { + "opus100": { + "u": 0.9460285714285714, + "t": 0.9406571428571429, + "punct": null, + "u_acc": 0.788, + "t_acc": 0.768, + "punct_acc": null, + "threshold_t": 0.014635544270277023, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7636171517371518, + "t": 0.7681002686202686, + "punct": null, + "u_acc": 0.31, + "t_acc": 0.32, + "punct_acc": null, + "threshold_t": 0.034029506146907806, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7716997491397491, + "t": 0.7763123065823065, + "punct": null, + "u_acc": 0.336, + "t_acc": 0.354, + "punct_acc": null, + "threshold_t": 0.01037675142288208, + "threshold_adj": 0.024999999999999998 + } + }, + "ml": { + "opus100": { + "u": 0.8744055587429082, + "t": 0.861388410786001, + "punct": null, + "u_acc": 0.5742971887550201, + "t_acc": 0.5602409638554217, + "punct_acc": null, + "threshold_t": 0.11174555122852325, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6242638607717973, + "t": 0.6561427769761103, + "punct": null, + "u_acc": 0.13095238095238096, + "t_acc": 0.17063492063492064, + "punct_acc": null, + "threshold_t": 0.039386194199323654, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.702697956070972, + "t": 0.6996049878986386, + "punct": null, + "u_acc": 0.2261904761904762, + "t_acc": 0.22883597883597884, + "punct_acc": null, + "threshold_t": 0.03403574600815773, + "threshold_adj": 0.024999999999999998 + } + }, + "mn": { + "opus100": { + "u": 0.939403853144311, + "t": null, + "punct": null, + "u_acc": 0.7986641221374046, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.8342373626373626, + "t": 0.8230451370851369, + "punct": null, + "u_acc": 0.4972, + "t_acc": 0.468, + "punct_acc": null, + "threshold_t": 0.03796566277742386, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.789210695970696, + "t": 0.7966522994652406, + "punct": null, + "u_acc": 0.3736, + "t_acc": 0.3936, + "punct_acc": null, + "threshold_t": 0.015268196351826191, + "threshold_adj": 0.024999999999999998 + }, + "nllb": { + "u": 0.9304377777777778, + "t": 0.9282911111111113, + "punct": null, + "u_acc": 0.75, + "t_acc": 0.7472, + "punct_acc": null, + "threshold_t": 0.03747682645916939, + "threshold_adj": 0.024999999999999998 + } + }, + "mr": { + "opus100": { + "u": 0.9302387352790579, + "t": 0.8856278801843317, + "punct": null, + "u_acc": 0.7600806451612904, + "t_acc": 0.6512096774193549, + "punct_acc": null, + "threshold_t": 0.1326208859682083, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9416666666666668, + "t": 0.9416666666666668, + "punct": null, + "u_acc": 0.8333333333333334, + "t_acc": 0.8333333333333334, + "punct_acc": null, + "threshold_t": 0.024925915524363518, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.6081290322405493, + "t": 0.6502421423021422, + "punct": null, + "u_acc": 0.1428, + "t_acc": 0.17, + "punct_acc": null, + "threshold_t": 0.06100095808506012, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.702936416916417, + "t": 0.7023944306673718, + "punct": null, + "u_acc": 0.2264, + "t_acc": 0.2292, + "punct_acc": null, + "threshold_t": 0.023292629048228264, + "threshold_adj": 0.024999999999999998 + } + }, + "ms": { + "opus100": { + "u": 0.9177248677248677, + "t": 0.9175191064079953, + "punct": null, + "u_acc": 0.6893004115226338, + "t_acc": 0.6934156378600823, + "punct_acc": null, + "threshold_t": 0.03117837756872177, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.7225148904837096, + "t": 0.7330027230027231, + "punct": null, + "u_acc": 0.24583333333333332, + "t_acc": 0.2625, + "punct_acc": null, + "threshold_t": 0.0988440066576004, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.7460543472797453, + "t": 0.7507059301351097, + "punct": null, + "u_acc": 0.2863095238095238, + "t_acc": 0.3148809523809524, + "punct_acc": null, + "threshold_t": 0.0078031569719314575, + "threshold_adj": 0.025 + } + }, + "mt": { + "opus100": { + "u": 0.8591569698857149, + "t": 0.894841067614347, + "punct": null, + "u_acc": 0.5931174089068826, + "t_acc": 0.6882591093117408, + "punct_acc": null, + "threshold_t": 0.1883201152086258, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9343589743589744, + "t": 0.9274358974358974, + "punct": null, + "u_acc": 0.8153846153846154, + "t_acc": 0.8076923076923077, + "punct_acc": null, + "threshold_t": 0.062193091958761215, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.5855921855921855, + "t": 0.5634976134976134, + "punct": null, + "u_acc": 0.07692307692307693, + "t_acc": 0.07692307692307693, + "punct_acc": null, + "threshold_t": 0.03294555842876434, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.708974358974359, + "t": 0.7384615384615384, + "punct": null, + "u_acc": 0.19230769230769232, + "t_acc": 0.23076923076923078, + "punct_acc": null, + "threshold_t": 0.13653701543807983, + "threshold_adj": 0.025000000000000005 + } + }, + "my": { + "opus100": { + "u": 0.8023329493087559, + "t": 0.8250672043010752, + "punct": null, + "u_acc": 0.4576612903225806, + "t_acc": 0.5161290322580645, + "punct_acc": null, + "threshold_t": 0.18909141421318054, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.9172263492063492, + "t": 0.91228, + "punct": null, + "u_acc": 0.724, + "t_acc": 0.74, + "punct_acc": null, + "threshold_t": 0.59529709815979, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.901103492063492, + "t": 0.8855333333333334, + "punct": null, + "u_acc": 0.6788, + "t_acc": 0.662, + "punct_acc": null, + "threshold_t": 0.49466800689697266, + "threshold_adj": 0.024999999999999998 + } + }, + "ne": { + "opus100": { + "u": 0.8050421155072318, + "t": 0.809332527937179, + "punct": null, + "u_acc": 0.3974630021141649, + "t_acc": 0.42283298097251587, + "punct_acc": null, + "threshold_t": 0.08369841426610947, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.728117449546021, + "t": 0.7297753690610833, + "punct": null, + "u_acc": 0.26833976833976836, + "t_acc": 0.2644787644787645, + "punct_acc": null, + "threshold_t": 0.04352688789367676, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.7141311069882499, + "t": 0.7115690829976544, + "punct": null, + "u_acc": 0.26833976833976836, + "t_acc": 0.26640926640926643, + "punct_acc": null, + "threshold_t": 0.028104158118367195, + "threshold_adj": 0.025 + } + }, + "nl": { + "opus100": { + "u": 0.9462952380952381, + "t": null, + "punct": null, + "u_acc": 0.764, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9483221476510068, + "t": 0.957718120805369, + "punct": null, + "u_acc": 0.8523489932885906, + "t_acc": 0.8791946308724832, + "punct_acc": null, + "threshold_t": 0.014717436395585537, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.8135955331624897, + "t": 0.7934558730158731, + "punct": null, + "u_acc": 0.4324, + "t_acc": 0.3996, + "punct_acc": null, + "threshold_t": 0.0726659744977951, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7649247557643303, + "t": 0.769765803412274, + "punct": null, + "u_acc": 0.3132, + "t_acc": 0.328, + "punct_acc": null, + "threshold_t": 0.01751263253390789, + "threshold_adj": 0.024999999999999998 + } + }, + "no": { + "opus100": { + "u": 0.954646697388633, + "t": 0.9562596006144394, + "punct": null, + "u_acc": 0.8205645161290323, + "t_acc": 0.8245967741935484, + "punct_acc": null, + "threshold_t": 0.031833261251449585, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9748720975993702, + "t": 0.9823101141282959, + "punct": null, + "u_acc": 0.9214876033057852, + "t_acc": 0.9421487603305785, + "punct_acc": null, + "threshold_t": 0.012947076000273228, + "threshold_adj": 0.025 + } + }, + "pa": { + "opus100": { + "u": 0.8081772053083529, + "t": 0.7945582877959927, + "punct": null, + "u_acc": 0.39959016393442626, + "t_acc": 0.38934426229508196, + "punct_acc": null, + "threshold_t": 0.1068560853600502, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.7246259060088848, + "t": 0.743439716312057, + "punct": null, + "u_acc": 0.24468085106382978, + "t_acc": 0.24468085106382978, + "punct_acc": null, + "threshold_t": 0.11993339657783508, + "threshold_adj": 0.02499999999999999 + }, + "ted2020-corrupted-social-media": { + "u": 0.7855116514690983, + "t": 0.7815771698750423, + "punct": null, + "u_acc": 0.39361702127659576, + "t_acc": 0.3829787234042553, + "punct_acc": null, + "threshold_t": 0.01919957809150219, + "threshold_adj": 0.02499999999999999 + } + }, + "pl": { + "ersatz": { + "u": 0.9479605387971921, + "t": 0.8033200531208498, + "punct": null, + "u_acc": 0.8326693227091634, + "t_acc": 0.41434262948207173, + "punct_acc": null, + "threshold_t": 0.4624512195587158, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.953225806451613, + "t": 0.9510752688172043, + "punct": null, + "u_acc": 0.8205645161290323, + "t_acc": 0.8024193548387096, + "punct_acc": null, + "threshold_t": 0.0161663219332695, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9715259870494528, + "t": 0.9720388516417396, + "punct": null, + "u_acc": 0.8898916967509025, + "t_acc": 0.8898916967509025, + "punct_acc": null, + "threshold_t": 0.02646731026470661, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.7827482339882339, + "t": 0.7828768342768342, + "punct": null, + "u_acc": 0.3592, + "t_acc": 0.3656, + "punct_acc": null, + "threshold_t": 0.04304394870996475, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7610100894660895, + "t": 0.7722441092241092, + "punct": null, + "u_acc": 0.306, + "t_acc": 0.3412, + "punct_acc": null, + "threshold_t": 0.006635318044573069, + "threshold_adj": 0.024999999999999998 + } + }, + "ps": { + "ersatz": { + "u": 0.9322091886608015, + "t": 0.9460922589954848, + "punct": null, + "u_acc": 0.7536656891495601, + "t_acc": 0.8093841642228738, + "punct_acc": null, + "threshold_t": 0.06968680769205093, + "threshold_adj": 0.024999999999999994 + }, + "opus100": { + "u": 0.8009226853324849, + "t": 0.7977551525435712, + "punct": null, + "u_acc": 0.4053452115812918, + "t_acc": 0.3986636971046771, + "punct_acc": null, + "threshold_t": 0.039608392864465714, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.719904574219731, + "t": 0.7194110026226814, + "punct": null, + "u_acc": 0.2116788321167883, + "t_acc": 0.23357664233576642, + "punct_acc": null, + "threshold_t": 0.10991491377353668, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7029757954940437, + "t": 0.703548723468667, + "punct": null, + "u_acc": 0.19708029197080293, + "t_acc": 0.23357664233576642, + "punct_acc": null, + "threshold_t": 0.08554711937904358, + "threshold_adj": 0.024999999999999998 + } + }, + "pt": { + "opus100": { + "u": 0.9540515489908201, + "t": 0.942594419684203, + "punct": null, + "u_acc": 0.8218623481781376, + "t_acc": 0.7793522267206477, + "punct_acc": null, + "threshold_t": 0.010757233947515488, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9681506849315068, + "t": 0.968607305936073, + "punct": null, + "u_acc": 0.9006849315068494, + "t_acc": 0.8972602739726028, + "punct_acc": null, + "threshold_t": 0.01796933077275753, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.762014875700375, + "t": 0.7672156049912148, + "punct": null, + "u_acc": 0.296, + "t_acc": 0.3404, + "punct_acc": null, + "threshold_t": 0.09798134118318558, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.760727193839752, + "t": 0.7673577844377845, + "punct": null, + "u_acc": 0.318, + "t_acc": 0.3404, + "punct_acc": null, + "threshold_t": 0.009163901209831238, + "threshold_adj": 0.024999999999999998 + } + }, + "ro": { + "ersatz": { + "u": 0.981, + "t": 0.7769999999999999, + "punct": null, + "u_acc": 0.924, + "t_acc": 0.332, + "punct_acc": null, + "threshold_t": 0.6352580785751343, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9452364919031585, + "t": 0.9368883641610914, + "punct": null, + "u_acc": 0.8101010101010101, + "t_acc": 0.7818181818181819, + "punct_acc": null, + "threshold_t": 0.012439750134944916, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.8101475328270229, + "t": 0.8007684603971787, + "punct": null, + "u_acc": 0.4714828897338403, + "t_acc": 0.44866920152091255, + "punct_acc": null, + "threshold_t": 0.3236141800880432, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7627340203340204, + "t": 0.7614035842293907, + "punct": null, + "u_acc": 0.3216, + "t_acc": 0.3284, + "punct_acc": null, + "threshold_t": 0.08552602678537369, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7558827927627928, + "t": 0.7558107281607281, + "punct": null, + "u_acc": 0.3036, + "t_acc": 0.3048, + "punct_acc": null, + "threshold_t": 0.01240621693432331, + "threshold_adj": 0.024999999999999998 + } + }, + "ru": { + "ersatz": { + "u": 0.9819892473118279, + "t": 0.9834869431643626, + "punct": null, + "u_acc": 0.9395161290322581, + "t_acc": 0.9435483870967742, + "punct_acc": null, + "threshold_t": 0.013904791325330734, + "threshold_adj": 0.025000000000000005 + }, + "opus100": { + "u": 0.9066582097319802, + "t": null, + "punct": null, + "u_acc": 0.6495901639344263, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.8963649481831301, + "t": 0.8924891774891774, + "punct": null, + "u_acc": 0.6954545454545454, + "t_acc": 0.6818181818181818, + "punct_acc": null, + "threshold_t": 0.10041635483503342, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7863558219558219, + "t": 0.7914839344738658, + "punct": null, + "u_acc": 0.3604, + "t_acc": 0.3908, + "punct_acc": null, + "threshold_t": 0.051204755902290344, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7722637118437118, + "t": 0.7773796425796426, + "punct": null, + "u_acc": 0.34, + "t_acc": 0.3584, + "punct_acc": null, + "threshold_t": 0.017175976186990738, + "threshold_adj": 0.024999999999999998 + } + }, + "si": { + "opus100": { + "u": 0.8719182027649769, + "t": 0.8738895289298515, + "punct": null, + "u_acc": 0.5504032258064516, + "t_acc": 0.5685483870967742, + "punct_acc": null, + "threshold_t": 0.030924929305911064, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.6951496665082956, + "t": 0.743078626799557, + "punct": null, + "u_acc": 0.24031007751937986, + "t_acc": 0.3023255813953488, + "punct_acc": null, + "threshold_t": 0.0908355563879013, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7081187818029924, + "t": 0.7189872143360515, + "punct": null, + "u_acc": 0.24806201550387597, + "t_acc": 0.3023255813953488, + "punct_acc": null, + "threshold_t": 0.05225501209497452, + "threshold_adj": 0.024999999999999998 + } + }, + "sk": { + "opus100": { + "u": 0.9496858875891133, + "t": 0.9502272145417306, + "punct": null, + "u_acc": 0.8225806451612904, + "t_acc": 0.8266129032258065, + "punct_acc": null, + "threshold_t": 0.034150924533605576, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9571069182389936, + "t": 0.9637735849056603, + "punct": null, + "u_acc": 0.8754716981132076, + "t_acc": 0.8943396226415095, + "punct_acc": null, + "threshold_t": 0.021918751299381256, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7839368452833716, + "t": 0.7872687717273298, + "punct": null, + "u_acc": 0.3728, + "t_acc": 0.3832, + "punct_acc": null, + "threshold_t": 0.03527330979704857, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7702272745142714, + "t": 0.7714387119313435, + "punct": null, + "u_acc": 0.3352, + "t_acc": 0.3412, + "punct_acc": null, + "threshold_t": 0.017996450886130333, + "threshold_adj": 0.024999999999999998 + } + }, + "sl": { + "opus100": { + "u": 0.9488366163064957, + "t": 0.946873207114171, + "punct": null, + "u_acc": 0.7871485943775101, + "t_acc": 0.7771084337349398, + "punct_acc": null, + "threshold_t": 0.020156603306531906, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9621130952380952, + "t": 0.9721577380952382, + "punct": null, + "u_acc": 0.875, + "t_acc": 0.9, + "punct_acc": null, + "threshold_t": 0.012981006875634193, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7924288922188922, + "t": 0.7654711111111112, + "punct": null, + "u_acc": 0.3864, + "t_acc": 0.332, + "punct_acc": null, + "threshold_t": 0.12842607498168945, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7726845199245199, + "t": 0.7723022444923497, + "punct": null, + "u_acc": 0.3356, + "t_acc": 0.3692, + "punct_acc": null, + "threshold_t": 0.0037679332308471203, + "threshold_adj": 0.024999999999999998 + } + }, + "sq": { + "opus100": { + "u": 0.9377341944415115, + "t": 0.9396118560752708, + "punct": null, + "u_acc": 0.7682926829268293, + "t_acc": 0.7784552845528455, + "punct_acc": null, + "threshold_t": 0.027837995439767838, + "threshold_adj": 0.025 + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null, + "u_acc": 1.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.02500000000000001 + }, + "ted2020-corrupted-asr": { + "u": 0.7407961394161393, + "t": 0.7565595670995672, + "punct": null, + "u_acc": 0.2744, + "t_acc": 0.3216, + "punct_acc": null, + "threshold_t": 0.09047670662403107, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.75526518879813, + "t": 0.7535440929005636, + "punct": null, + "u_acc": 0.2968, + "t_acc": 0.2888, + "punct_acc": null, + "threshold_t": 0.03415989130735397, + "threshold_adj": 0.024999999999999998 + } + }, + "sr": { + "opus100": { + "u": 0.953910881621725, + "t": 0.9462803595333716, + "punct": null, + "u_acc": 0.8032128514056225, + "t_acc": 0.7690763052208835, + "punct_acc": null, + "threshold_t": 0.015320368111133575, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.98, + "t": 0.9820512820512821, + "punct": null, + "u_acc": 0.9307692307692308, + "t_acc": 0.9307692307692308, + "punct_acc": null, + "threshold_t": 0.011502943001687527, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.755852282091431, + "t": 0.7649638672438672, + "punct": null, + "u_acc": 0.3096, + "t_acc": 0.3356, + "punct_acc": null, + "threshold_t": 0.08191700279712677, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7589203144224197, + "t": 0.7575096481296482, + "punct": null, + "u_acc": 0.3188, + "t_acc": 0.3128, + "punct_acc": null, + "threshold_t": 0.027849096804857254, + "threshold_adj": 0.024999999999999998 + } + }, + "sv": { + "opus100": { + "u": 0.9518072289156626, + "t": 0.9500860585197936, + "punct": null, + "u_acc": 0.7971887550200804, + "t_acc": 0.7931726907630522, + "punct_acc": null, + "threshold_t": 0.023536527529358864, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9660206718346254, + "t": 0.9622923588039867, + "punct": null, + "u_acc": 0.872093023255814, + "t_acc": 0.8604651162790697, + "punct_acc": null, + "threshold_t": 0.0153135284781456, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7837960239760239, + "t": 0.780525137085137, + "punct": null, + "u_acc": 0.3624, + "t_acc": 0.3628, + "punct_acc": null, + "threshold_t": 0.07322077453136444, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7547117460317461, + "t": 0.7578333910533911, + "punct": null, + "u_acc": 0.2904, + "t_acc": 0.2992, + "punct_acc": null, + "threshold_t": 0.013466146774590015, + "threshold_adj": 0.024999999999999998 + } + }, + "ta": { + "ersatz": { + "u": 0.9650920129007778, + "t": 0.9532536520584328, + "punct": null, + "u_acc": 0.8565737051792829, + "t_acc": 0.8446215139442231, + "punct_acc": null, + "threshold_t": 0.07176318019628525, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.7873350227008763, + "t": 0.7803619821912504, + "punct": null, + "u_acc": 0.3983739837398374, + "t_acc": 0.3638211382113821, + "punct_acc": null, + "threshold_t": 0.3753874599933624, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9755555555555556, + "t": 0.9755555555555556, + "punct": null, + "u_acc": 0.9, + "t_acc": 0.9, + "punct_acc": null, + "threshold_t": 0.025839949026703835, + "threshold_adj": 0.02500000000000001 + }, + "ted2020-corrupted-asr": { + "u": 0.6389709851093345, + "t": 0.7116471389425126, + "punct": null, + "u_acc": 0.15800711743772242, + "t_acc": 0.27473309608540925, + "punct_acc": null, + "threshold_t": 0.08055718243122101, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.7056366473841656, + "t": 0.7254165091531639, + "punct": null, + "u_acc": 0.23487544483985764, + "t_acc": 0.2590747330960854, + "punct_acc": null, + "threshold_t": 0.06779216229915619, + "threshold_adj": 0.024999999999999994 + } + }, + "te": { + "opus100": { + "u": 0.8499481697440882, + "t": 0.8551166180758017, + "punct": null, + "u_acc": 0.5448979591836735, + "t_acc": 0.5551020408163265, + "punct_acc": null, + "threshold_t": 0.06524220108985901, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.702753582436362, + "t": 0.7132039662251143, + "punct": null, + "u_acc": 0.2326283987915408, + "t_acc": 0.2311178247734139, + "punct_acc": null, + "threshold_t": 0.10408615320920944, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.7122062227802409, + "t": 0.7195427516424495, + "punct": null, + "u_acc": 0.24924471299093656, + "t_acc": 0.24471299093655588, + "punct_acc": null, + "threshold_t": 0.1023692786693573, + "threshold_adj": 0.024999999999999994 + } + }, + "tg": { + "opus100": { + "u": 0.863146035133987, + "t": 0.8886593995027731, + "punct": null, + "u_acc": 0.5341365461847389, + "t_acc": 0.6385542168674698, + "punct_acc": null, + "threshold_t": 0.09383110702037811, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7837510442773601, + "t": 0.73796992481203, + "punct": null, + "u_acc": 0.35526315789473684, + "t_acc": 0.3026315789473684, + "punct_acc": null, + "threshold_t": 0.09483484923839569, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.8123015873015873, + "t": 0.8123015873015873, + "punct": null, + "u_acc": 0.4342105263157895, + "t_acc": 0.4342105263157895, + "punct_acc": null, + "threshold_t": 0.025673992931842804, + "threshold_adj": 0.024999999999999994 + } + }, + "th": { + "opus100": { + "u": 0.7975597242263908, + "t": 0.8282635882635881, + "punct": null, + "u_acc": 0.3111111111111111, + "t_acc": 0.45454545454545453, + "punct_acc": null, + "threshold_t": 0.10877402871847153, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.8901904761904762, + "t": null, + "punct": null, + "u_acc": 0.56, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6942637985757276, + "t": 0.7442345344646828, + "punct": null, + "u_acc": 0.2016, + "t_acc": 0.29, + "punct_acc": null, + "threshold_t": 0.09512927383184433, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6932719915927589, + "t": 0.7430681840164193, + "punct": null, + "u_acc": 0.2036, + "t_acc": 0.2916, + "punct_acc": null, + "threshold_t": 0.09190575033426285, + "threshold_adj": 0.024999999999999998 + } + }, + "tr": { + "ersatz": { + "u": 0.959137537993921, + "t": 0.9545276089159068, + "punct": null, + "u_acc": 0.8470744680851063, + "t_acc": 0.8377659574468085, + "punct_acc": null, + "threshold_t": 0.031176680698990822, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.9411027568922307, + "t": 0.9404022877707088, + "punct": null, + "u_acc": 0.7793522267206477, + "t_acc": 0.7692307692307693, + "punct_acc": null, + "threshold_t": 0.014212674461305141, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9693333333333333, + "t": 0.9664242424242424, + "punct": null, + "u_acc": 0.8872727272727273, + "t_acc": 0.88, + "punct_acc": null, + "threshold_t": 0.029714224860072136, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7792540874970441, + "t": 0.7766845959931542, + "punct": null, + "u_acc": 0.3616, + "t_acc": 0.3572, + "punct_acc": null, + "threshold_t": 0.040564484894275665, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7419541991341991, + "t": 0.7493594016319597, + "punct": null, + "u_acc": 0.266, + "t_acc": 0.2912, + "punct_acc": null, + "threshold_t": 0.012117275968194008, + "threshold_adj": 0.024999999999999998 + } + }, + "uk": { + "opus100": { + "u": 0.9350197326100941, + "t": 0.9325237457767579, + "punct": null, + "u_acc": 0.7530120481927711, + "t_acc": 0.7389558232931727, + "punct_acc": null, + "threshold_t": 0.01724167913198471, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9428784013605442, + "t": 0.941390306122449, + "punct": null, + "u_acc": 0.8214285714285714, + "t_acc": 0.8169642857142857, + "punct_acc": null, + "threshold_t": 0.026036357507109642, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7715948629148629, + "t": 0.7767519379844962, + "punct": null, + "u_acc": 0.3248, + "t_acc": 0.3576, + "punct_acc": null, + "threshold_t": 0.0690658688545227, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7747978643578645, + "t": 0.7815418410347822, + "punct": null, + "u_acc": 0.3476, + "t_acc": 0.37, + "punct_acc": null, + "threshold_t": 0.010968232527375221, + "threshold_adj": 0.024999999999999998 + } + }, + "ur": { + "opus100": { + "u": 0.7735357509721916, + "t": 0.7810145951035782, + "punct": null, + "u_acc": 0.3495762711864407, + "t_acc": 0.3644067796610169, + "punct_acc": null, + "threshold_t": 0.04047752171754837, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9619758351101634, + "t": 0.9542288557213929, + "punct": null, + "u_acc": 0.8582089552238806, + "t_acc": 0.835820895522388, + "punct_acc": null, + "threshold_t": 0.033104777336120605, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.7253640016486882, + "t": 0.7204567814280045, + "punct": null, + "u_acc": 0.2687564234326824, + "t_acc": 0.2595066803699897, + "punct_acc": null, + "threshold_t": 0.020792214199900627, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.7347148312461776, + "t": 0.7401067586062449, + "punct": null, + "u_acc": 0.302672147995889, + "t_acc": 0.3078108941418294, + "punct_acc": null, + "threshold_t": 0.03968769684433937, + "threshold_adj": 0.025 + } + }, + "uz": { + "opus100": { + "u": 0.8536183997408487, + "t": 0.8468027210884354, + "punct": null, + "u_acc": 0.46938775510204084, + "t_acc": 0.536734693877551, + "punct_acc": null, + "threshold_t": 0.2479364424943924, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7662954134473121, + "t": 0.7667576914412357, + "punct": null, + "u_acc": 0.33016877637130804, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.02676210179924965, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.7598126381354229, + "t": 0.7684387284070828, + "punct": null, + "u_acc": 0.3090717299578059, + "t_acc": 0.33544303797468356, + "punct_acc": null, + "threshold_t": 0.007710875943303108, + "threshold_adj": 0.025 + } + }, + "vi": { + "opus100": { + "u": 0.9482167352537724, + "t": 0.9459533607681756, + "punct": null, + "u_acc": 0.7983539094650206, + "t_acc": 0.7818930041152263, + "punct_acc": null, + "threshold_t": 0.016140282154083252, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9351666666666668, + "t": 0.9368333333333334, + "punct": null, + "u_acc": 0.735, + "t_acc": 0.74, + "punct_acc": null, + "threshold_t": 0.027428606525063515, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7295103022124074, + "t": 0.7364365656565657, + "punct": null, + "u_acc": 0.248, + "t_acc": 0.2732, + "punct_acc": null, + "threshold_t": 0.09608954191207886, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7477895526695527, + "t": 0.7563450584022101, + "punct": null, + "u_acc": 0.2764, + "t_acc": 0.3444, + "punct_acc": null, + "threshold_t": 0.0032935317140072584, + "threshold_adj": 0.024999999999999998 + } + }, + "xh": { + "opus100": { + "u": 0.8990087597971416, + "t": 0.9063459131923862, + "punct": null, + "u_acc": 0.6680497925311203, + "t_acc": 0.6908713692946058, + "punct_acc": null, + "threshold_t": 0.06154816225171089, + "threshold_adj": 0.025 + } + }, + "yi": { + "opus100": { + "u": 0.7796984624570832, + "t": 0.7826690550828483, + "punct": null, + "u_acc": 0.322884012539185, + "t_acc": 0.3166144200626959, + "punct_acc": null, + "threshold_t": 0.020594267174601555, + "threshold_adj": 0.024999999999999994 + } + }, + "yo": { + "opus100": { + "u": 0.8140589832995976, + "t": null, + "punct": null, + "u_acc": 0.4304607508532423, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ud": { + "u": 0.8644642857142857, + "t": null, + "punct": null, + "u_acc": 0.575, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "nllb": { + "u": 0.8348383008804061, + "t": 0.8489485714285715, + "punct": null, + "u_acc": 0.486, + "t_acc": 0.5452, + "punct_acc": null, + "threshold_t": 0.47024381160736084, + "threshold_adj": 0.024999999999999998 + } + }, + "zh": { + "ersatz": { + "u": 0.8829999999999999, + "t": 0.9235523809523809, + "punct": null, + "u_acc": 0.644, + "t_acc": 0.748, + "punct_acc": null, + "threshold_t": 0.004477021284401417, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.8233096994666412, + "t": 0.8014042407402568, + "punct": null, + "u_acc": 0.4607645875251509, + "t_acc": 0.3963782696177062, + "punct_acc": null, + "threshold_t": 0.007423441857099533, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9568, + "t": 0.9731047619047618, + "punct": null, + "u_acc": 0.864, + "t_acc": 0.912, + "punct_acc": null, + "threshold_t": 0.008310707286000252, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6496724325198839, + "t": 0.6695837862915849, + "punct": null, + "u_acc": 0.15301085883514315, + "t_acc": 0.18311944718657452, + "punct_acc": null, + "threshold_t": 0.06761831045150757, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.6541910372169271, + "t": 0.6717792640289542, + "punct": null, + "u_acc": 0.1564659427443238, + "t_acc": 0.18114511352418558, + "punct_acc": null, + "threshold_t": 0.0465080663561821, + "threshold_adj": 0.025 + } + }, + "zu": { + "opus100": { + "u": 0.8860534527201194, + "t": 0.859659476326143, + "punct": null, + "u_acc": 0.6196581196581197, + "t_acc": 0.5683760683760684, + "punct_acc": null, + "threshold_t": 0.060935959219932556, + "threshold_adj": 0.025 + } + }, + "tr-de": {}, + "es-en": {}, + "vi-en": {}, + "en-de": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/sat-12l_lora.json b/wtpsplit/evaluation/evaluation_results/short/sat-12l_lora.json new file mode 100644 index 00000000..7f53be9c --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/sat-12l_lora.json @@ -0,0 +1,1137 @@ +{ + "af": { + "ted2020-corrupted-asr": { + "u": 0.8441025641025642, + "t": 0.8580512820512821, + "punct": null, + "u_acc": 0.5723076923076923, + "t_acc": 0.6123076923076923, + "punct_acc": null, + "threshold_t": 0.19579030573368073, + "threshold_adj": 0.5 + } + }, + "am": { + "ted2020-corrupted-asr": { + "u": 0.7440104166666666, + "t": 0.7867187499999999, + "punct": null, + "u_acc": 0.2890625, + "t_acc": 0.4140625, + "punct_acc": null, + "threshold_t": 0.3118801414966583, + "threshold_adj": 0.5 + } + }, + "ar": { + "ersatz": { + "u": 0.9404255319148935, + "t": 0.915691489361702, + "punct": null, + "u_acc": 0.8218085106382979, + "t_acc": 0.7473404255319149, + "punct_acc": null, + "threshold_t": 0.9947788715362549, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.820327619047619, + "t": 0.8249466666666667, + "punct": null, + "u_acc": 0.5484, + "t_acc": 0.5652, + "punct_acc": null, + "threshold_t": 0.3529928922653198, + "threshold_adj": 0.5 + } + }, + "az": { + "ted2020-corrupted-asr": { + "u": 0.853230890464933, + "t": 0.8652876280535855, + "punct": null, + "u_acc": 0.6046099290780141, + "t_acc": 0.6465721040189125, + "punct_acc": null, + "threshold_t": 0.3037700057029724, + "threshold_adj": 0.5 + } + }, + "be": { + "ted2020-corrupted-asr": { + "u": 0.8668397144711227, + "t": 0.872853125675968, + "punct": null, + "u_acc": 0.6580142764438677, + "t_acc": 0.6781310837118754, + "punct_acc": null, + "threshold_t": 0.2582862079143524, + "threshold_adj": 0.5 + } + }, + "bg": { + "ted2020-corrupted-asr": { + "u": 0.8578800000000001, + "t": 0.8707866666666667, + "punct": null, + "u_acc": 0.6264, + "t_acc": 0.6624, + "punct_acc": null, + "threshold_t": 0.2115507870912552, + "threshold_adj": 0.5 + } + }, + "bn": { + "ted2020-corrupted-asr": { + "u": 0.7255897435897436, + "t": 0.7263882783882784, + "punct": null, + "u_acc": 0.3169230769230769, + "t_acc": 0.3230769230769231, + "punct_acc": null, + "threshold_t": 0.4404241442680359, + "threshold_adj": 0.5 + } + }, + "ca": { + "ted2020-corrupted-asr": { + "u": 0.8634933333333332, + "t": 0.8732533333333333, + "punct": null, + "u_acc": 0.6472, + "t_acc": 0.6648, + "punct_acc": null, + "threshold_t": 0.1559576392173767, + "threshold_adj": 0.5 + } + }, + "ceb": { + "ted2020-corrupted-asr": { + "u": 0.6904761904761905, + "t": 0.7357142857142857, + "punct": null, + "u_acc": 0.07142857142857142, + "t_acc": 0.2857142857142857, + "punct_acc": null, + "threshold_t": 0.29914459586143494, + "threshold_adj": 0.5 + } + }, + "cs": { + "ersatz": { + "u": 0.9532407407407406, + "t": 0.9612654320987654, + "punct": null, + "u_acc": 0.8587962962962963, + "t_acc": 0.8819444444444444, + "punct_acc": null, + "threshold_t": 0.19247128069400787, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8686799999999999, + "t": 0.8644060606060606, + "punct": null, + "u_acc": 0.652, + "t_acc": 0.6404, + "punct_acc": null, + "threshold_t": 0.6012640595436096, + "threshold_adj": 0.5 + } + }, + "cy": {}, + "da": { + "ted2020-corrupted-asr": { + "u": 0.8879466666666666, + "t": 0.8923466666666665, + "punct": null, + "u_acc": 0.7028, + "t_acc": 0.7172, + "punct_acc": null, + "threshold_t": 0.3706859350204468, + "threshold_adj": 0.5 + } + }, + "de": { + "ersatz": { + "u": 0.9971486761710795, + "t": 0.9952477936184656, + "punct": null, + "u_acc": 0.9898167006109979, + "t_acc": 0.9857433808553971, + "punct_acc": null, + "threshold_t": 0.9587974548339844, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8975200000000001, + "t": 0.90828, + "punct": null, + "u_acc": 0.7244, + "t_acc": 0.756, + "punct_acc": null, + "threshold_t": 0.1908755898475647, + "threshold_adj": 0.5 + } + }, + "el": { + "ted2020-corrupted-asr": { + "u": 0.8702799999999999, + "t": 0.8766507936507937, + "punct": null, + "u_acc": 0.6588, + "t_acc": 0.6752, + "punct_acc": null, + "threshold_t": 0.22551190853118896, + "threshold_adj": 0.5 + } + }, + "en": { + "ersatz": { + "u": 0.9948251990308065, + "t": 0.9941502249913464, + "punct": null, + "u_acc": 0.9844236760124611, + "t_acc": 0.9818276220145379, + "punct_acc": null, + "threshold_t": 0.913185715675354, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8873022222222222, + "t": 0.8986133333333335, + "punct": null, + "u_acc": 0.7012, + "t_acc": 0.7316, + "punct_acc": null, + "threshold_t": 0.2006220817565918, + "threshold_adj": 0.5 + } + }, + "eo": { + "ted2020-corrupted-asr": { + "u": 0.8494152046783625, + "t": 0.864640768588137, + "punct": null, + "u_acc": 0.6109022556390977, + "t_acc": 0.649749373433584, + "punct_acc": null, + "threshold_t": 0.19565223157405853, + "threshold_adj": 0.5 + } + }, + "es": { + "ted2020-corrupted-asr": { + "u": 0.8610228571428572, + "t": 0.8745961904761905, + "punct": null, + "u_acc": 0.6332, + "t_acc": 0.6672, + "punct_acc": null, + "threshold_t": 0.19770503044128418, + "threshold_adj": 0.5 + } + }, + "et": { + "ersatz": { + "u": 0.9841269841269841, + "t": 0.9697089947089946, + "punct": null, + "u_acc": 0.9484126984126984, + "t_acc": 0.9067460317460317, + "punct_acc": null, + "threshold_t": 0.954222559928894, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8734687719298244, + "t": 0.8884307692307691, + "punct": null, + "u_acc": 0.6692, + "t_acc": 0.7056, + "punct_acc": null, + "threshold_t": 0.11381562054157257, + "threshold_adj": 0.5 + } + }, + "eu": { + "ted2020-corrupted-asr": { + "u": 0.8090725806451613, + "t": 0.811491935483871, + "punct": null, + "u_acc": 0.5114247311827957, + "t_acc": 0.521505376344086, + "punct_acc": null, + "threshold_t": 0.4130879044532776, + "threshold_adj": 0.5 + } + }, + "fa": { + "ted2020-corrupted-asr": { + "u": 0.8414685714285713, + "t": 0.8513085714285713, + "punct": null, + "u_acc": 0.5824, + "t_acc": 0.6136, + "punct_acc": null, + "threshold_t": 0.29287630319595337, + "threshold_adj": 0.5 + } + }, + "fi": { + "ersatz": { + "u": 0.9986639946559785, + "t": 0.9866399465597862, + "punct": null, + "u_acc": 0.9959919839679359, + "t_acc": 0.9599198396793587, + "punct_acc": null, + "threshold_t": 0.9984474778175354, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8743866666666666, + "t": 0.8867200000000001, + "punct": null, + "u_acc": 0.6648, + "t_acc": 0.6868, + "punct_acc": null, + "threshold_t": 0.10764780640602112, + "threshold_adj": 0.5 + } + }, + "fr": { + "ersatz": { + "u": 0.9925925925925926, + "t": 0.985829307568438, + "punct": null, + "u_acc": 0.9758454106280193, + "t_acc": 0.9565217391304348, + "punct_acc": null, + "threshold_t": 0.9767431616783142, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.87324, + "t": 0.8812933333333333, + "punct": null, + "u_acc": 0.6696, + "t_acc": 0.6908, + "punct_acc": null, + "threshold_t": 0.27513280510902405, + "threshold_adj": 0.5 + } + }, + "fy": {}, + "ga": { + "ted2020-corrupted-asr": { + "u": 0.638888888888889, + "t": 0.6376984126984128, + "punct": null, + "u_acc": 0.16666666666666666, + "t_acc": 0.25, + "punct_acc": null, + "threshold_t": 0.32635071873664856, + "threshold_adj": 0.5 + } + }, + "gd": {}, + "gl": { + "ted2020-corrupted-asr": { + "u": 0.8596, + "t": 0.8748419047619049, + "punct": null, + "u_acc": 0.6288, + "t_acc": 0.6728, + "punct_acc": null, + "threshold_t": 0.19677530229091644, + "threshold_adj": 0.5 + } + }, + "gu": { + "ersatz": { + "u": 0.9069553805774279, + "t": 0.8930446194225721, + "punct": null, + "u_acc": 0.7244094488188977, + "t_acc": 0.6811023622047244, + "punct_acc": null, + "threshold_t": 0.913463830947876, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.7578386056141364, + "t": 0.7618325388800616, + "punct": null, + "u_acc": 0.391304347826087, + "t_acc": 0.4089989888776542, + "punct_acc": null, + "threshold_t": 0.38816583156585693, + "threshold_adj": 0.5 + } + }, + "ha": { + "ted2020-corrupted-asr": { + "u": 0.7777777777777777, + "t": 0.6666666666666666, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.7916362881660461, + "threshold_adj": 0.5 + } + }, + "he": { + "ted2020-corrupted-asr": { + "u": 0.8383009523809524, + "t": 0.8413142857142859, + "punct": null, + "u_acc": 0.5952, + "t_acc": 0.6036, + "punct_acc": null, + "threshold_t": 0.4341721832752228, + "threshold_adj": 0.5 + } + }, + "hi": { + "ersatz": { + "u": 0.8715873015873015, + "t": 0.8306878306878307, + "punct": null, + "u_acc": 0.6158730158730159, + "t_acc": 0.4936507936507937, + "punct_acc": null, + "threshold_t": 0.957030177116394, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8040933333333333, + "t": 0.8094133333333334, + "punct": null, + "u_acc": 0.4988, + "t_acc": 0.516, + "punct_acc": null, + "threshold_t": 0.37882882356643677, + "threshold_adj": 0.5 + } + }, + "hu": { + "ted2020-corrupted-asr": { + "u": 0.8615333333333333, + "t": 0.8631733333333333, + "punct": null, + "u_acc": 0.6416, + "t_acc": 0.6472, + "punct_acc": null, + "threshold_t": 0.4466886818408966, + "threshold_adj": 0.5 + } + }, + "hy": { + "ted2020-corrupted-asr": { + "u": 0.8523733333333333, + "t": 0.8592933333333335, + "punct": null, + "u_acc": 0.6284, + "t_acc": 0.6432, + "punct_acc": null, + "threshold_t": 0.27335861325263977, + "threshold_adj": 0.5 + } + }, + "id": { + "ted2020-corrupted-asr": { + "u": 0.8466266666666666, + "t": 0.8632666666666666, + "punct": null, + "u_acc": 0.5992, + "t_acc": 0.6476, + "punct_acc": null, + "threshold_t": 0.19267326593399048, + "threshold_adj": 0.5 + } + }, + "ig": { + "ted2020-corrupted-asr": { + "u": 0.6602564102564104, + "t": 0.5974358974358973, + "punct": null, + "u_acc": 0.038461538461538464, + "t_acc": 0.07692307692307693, + "punct_acc": null, + "threshold_t": 0.2033560574054718, + "threshold_adj": 0.5 + } + }, + "is": { + "ted2020-corrupted-asr": { + "u": 0.8411365564037321, + "t": 0.8466497031382528, + "punct": null, + "u_acc": 0.5801526717557252, + "t_acc": 0.6030534351145038, + "punct_acc": null, + "threshold_t": 0.11891120672225952, + "threshold_adj": 0.5 + } + }, + "it": { + "ted2020-corrupted-asr": { + "u": 0.8621866666666667, + "t": 0.8683066666666668, + "punct": null, + "u_acc": 0.6384, + "t_acc": 0.6576, + "punct_acc": null, + "threshold_t": 0.30462852120399475, + "threshold_adj": 0.5 + } + }, + "ja": { + "ersatz": { + "u": 0.9463930348258707, + "t": 0.8967661691542288, + "punct": null, + "u_acc": 0.8395522388059702, + "t_acc": 0.6902985074626866, + "punct_acc": null, + "threshold_t": 0.9985142350196838, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.9796666666666668, + "t": 0.977, + "punct": null, + "u_acc": 0.9416, + "t_acc": 0.9336, + "punct_acc": null, + "threshold_t": 0.7422925233840942, + "threshold_adj": 0.5 + } + }, + "jv": {}, + "ka": { + "ted2020-corrupted-asr": { + "u": 0.8170533333333333, + "t": 0.8292666666666666, + "punct": null, + "u_acc": 0.5388, + "t_acc": 0.5672, + "punct_acc": null, + "threshold_t": 0.1828896701335907, + "threshold_adj": 0.5 + } + }, + "kk": { + "ersatz": { + "u": 0.9773333333333334, + "t": 0.9453333333333332, + "punct": null, + "u_acc": 0.932, + "t_acc": 0.836, + "punct_acc": null, + "threshold_t": 0.9638625979423523, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8501026694045175, + "t": 0.87191421400867, + "punct": null, + "u_acc": 0.5879534565366188, + "t_acc": 0.6584531143052703, + "punct_acc": null, + "threshold_t": 0.1676095873117447, + "threshold_adj": 0.5 + } + }, + "km": { + "ersatz": { + "u": 0.9624858757062147, + "t": 0.963728813559322, + "punct": null, + "u_acc": 0.8932203389830509, + "t_acc": 0.8949152542372881, + "punct_acc": null, + "threshold_t": 0.8011752963066101, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.9395989974937343, + "t": 0.9433941997851771, + "punct": null, + "u_acc": 0.8270676691729323, + "t_acc": 0.8120300751879699, + "punct_acc": null, + "threshold_t": 0.17783597111701965, + "threshold_adj": 0.5 + } + }, + "kn": { + "ted2020-corrupted-asr": { + "u": 0.7015151515151515, + "t": 0.6996669996669997, + "punct": null, + "u_acc": 0.26223776223776224, + "t_acc": 0.2692307692307692, + "punct_acc": null, + "threshold_t": 0.3851678967475891, + "threshold_adj": 0.5 + } + }, + "ko": { + "ted2020-corrupted-asr": { + "u": 0.8284799999999999, + "t": 0.82836, + "punct": null, + "u_acc": 0.5404, + "t_acc": 0.54, + "punct_acc": null, + "threshold_t": 0.5049299001693726, + "threshold_adj": 0.5 + } + }, + "ku": { + "ted2020-corrupted-asr": { + "u": 0.7300800000000001, + "t": 0.7284666666666666, + "punct": null, + "u_acc": 0.32, + "t_acc": 0.3384, + "punct_acc": null, + "threshold_t": 0.3670436441898346, + "threshold_adj": 0.5 + } + }, + "ky": { + "ted2020-corrupted-asr": { + "u": 0.8065359477124183, + "t": 0.8052287581699347, + "punct": null, + "u_acc": 0.4411764705882353, + "t_acc": 0.43137254901960786, + "punct_acc": null, + "threshold_t": 0.5519641637802124, + "threshold_adj": 0.5 + } + }, + "la": { + "ted2020-corrupted-asr": { + "u": 0.611111111111111, + "t": 0.5555555555555555, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.2783312499523163, + "threshold_adj": 0.5 + } + }, + "lt": { + "ersatz": { + "u": 0.9665333333333334, + "t": 0.9433333333333332, + "punct": null, + "u_acc": 0.9, + "t_acc": 0.832, + "punct_acc": null, + "threshold_t": 0.9372919201850891, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8645333333333333, + "t": 0.8694, + "punct": null, + "u_acc": 0.6472, + "t_acc": 0.6584, + "punct_acc": null, + "threshold_t": 0.372035950422287, + "threshold_adj": 0.5 + } + }, + "lv": { + "ersatz": { + "u": 0.987037037037037, + "t": 0.9605820105820105, + "punct": null, + "u_acc": 0.9603174603174603, + "t_acc": 0.8809523809523809, + "punct_acc": null, + "threshold_t": 0.9802069067955017, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8688799999999999, + "t": 0.8791542857142857, + "punct": null, + "u_acc": 0.6612, + "t_acc": 0.6884, + "punct_acc": null, + "threshold_t": 0.22174270451068878, + "threshold_adj": 0.5 + } + }, + "mg": { + "ted2020-corrupted-asr": { + "u": 0.76358024691358, + "t": 0.7520576131687242, + "punct": null, + "u_acc": 0.3888888888888889, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.5807532072067261, + "threshold_adj": 0.5 + } + }, + "mk": { + "ted2020-corrupted-asr": { + "u": 0.8565142857142859, + "t": 0.8612993939393938, + "punct": null, + "u_acc": 0.6244, + "t_acc": 0.6404, + "punct_acc": null, + "threshold_t": 0.38633400201797485, + "threshold_adj": 0.5 + } + }, + "ml": { + "ted2020-corrupted-asr": { + "u": 0.7187389770723104, + "t": 0.7185689090450996, + "punct": null, + "u_acc": 0.2962962962962963, + "t_acc": 0.30687830687830686, + "punct_acc": null, + "threshold_t": 0.34563663601875305, + "threshold_adj": 0.5 + } + }, + "mn": { + "ted2020-corrupted-asr": { + "u": 0.9208864069264069, + "t": 0.9283752380952381, + "punct": null, + "u_acc": 0.7816, + "t_acc": 0.8032, + "punct_acc": null, + "threshold_t": 0.1847454309463501, + "threshold_adj": 0.5 + } + }, + "mr": { + "ted2020-corrupted-asr": { + "u": 0.7603200000000001, + "t": 0.7627009523809524, + "punct": null, + "u_acc": 0.3948, + "t_acc": 0.4172, + "punct_acc": null, + "threshold_t": 0.3679860234260559, + "threshold_adj": 0.5 + } + }, + "ms": { + "ted2020-corrupted-asr": { + "u": 0.8376280663780663, + "t": 0.8514365079365079, + "punct": null, + "u_acc": 0.575595238095238, + "t_acc": 0.6154761904761905, + "punct_acc": null, + "threshold_t": 0.22683577239513397, + "threshold_adj": 0.5 + } + }, + "mt": { + "ted2020-corrupted-asr": { + "u": 0.6794871794871795, + "t": 0.7012820512820513, + "punct": null, + "u_acc": 0.038461538461538464, + "t_acc": 0.11538461538461539, + "punct_acc": null, + "threshold_t": 0.30841144919395447, + "threshold_adj": 0.5 + } + }, + "my": { + "ted2020-corrupted-asr": { + "u": 0.9689599999999998, + "t": 0.9679333333333332, + "punct": null, + "u_acc": 0.9104, + "t_acc": 0.9072, + "punct_acc": null, + "threshold_t": 0.6025581955909729, + "threshold_adj": 0.5 + } + }, + "ne": { + "ted2020-corrupted-asr": { + "u": 0.7977691977691977, + "t": 0.7928785928785929, + "punct": null, + "u_acc": 0.49613899613899615, + "t_acc": 0.47297297297297297, + "punct_acc": null, + "threshold_t": 0.5876527428627014, + "threshold_adj": 0.5 + } + }, + "nl": { + "ted2020-corrupted-asr": { + "u": 0.9138266666666667, + "t": 0.9254609523809524, + "punct": null, + "u_acc": 0.764, + "t_acc": 0.7888, + "punct_acc": null, + "threshold_t": 0.08820687979459763, + "threshold_adj": 0.5 + } + }, + "no": {}, + "pa": { + "ted2020-corrupted-asr": { + "u": 0.8088652482269505, + "t": 0.8120567375886526, + "punct": null, + "u_acc": 0.44680851063829785, + "t_acc": 0.44680851063829785, + "punct_acc": null, + "threshold_t": 0.49258989095687866, + "threshold_adj": 0.5 + } + }, + "pl": { + "ersatz": { + "u": 0.9713147410358566, + "t": 0.9673306772908367, + "punct": null, + "u_acc": 0.9123505976095617, + "t_acc": 0.900398406374502, + "punct_acc": null, + "threshold_t": 0.9030606746673584, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8744533333333333, + "t": 0.8789066666666666, + "punct": null, + "u_acc": 0.6716, + "t_acc": 0.6868, + "punct_acc": null, + "threshold_t": 0.3802283704280853, + "threshold_adj": 0.5 + } + }, + "ps": { + "ersatz": { + "u": 0.9789345063538611, + "t": 0.963782991202346, + "punct": null, + "u_acc": 0.9413489736070382, + "t_acc": 0.8944281524926686, + "punct_acc": null, + "threshold_t": 0.9997029900550842, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8018248175182482, + "t": 0.7811030008110301, + "punct": null, + "u_acc": 0.5255474452554745, + "t_acc": 0.45985401459854014, + "punct_acc": null, + "threshold_t": 0.6427596807479858, + "threshold_adj": 0.5 + } + }, + "pt": { + "ted2020-corrupted-asr": { + "u": 0.8806933333333334, + "t": 0.8905066666666666, + "punct": null, + "u_acc": 0.6916, + "t_acc": 0.7164, + "punct_acc": null, + "threshold_t": 0.24612975120544434, + "threshold_adj": 0.5 + } + }, + "ro": { + "ersatz": { + "u": 0.936, + "t": 0.9046666666666665, + "punct": null, + "u_acc": 0.808, + "t_acc": 0.714, + "punct_acc": null, + "threshold_t": 0.9346901774406433, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.865415238095238, + "t": 0.8751085714285715, + "punct": null, + "u_acc": 0.6496, + "t_acc": 0.6732, + "punct_acc": null, + "threshold_t": 0.1866168975830078, + "threshold_adj": 0.5 + } + }, + "ru": { + "ersatz": { + "u": 0.9978494623655914, + "t": 0.9905913978494624, + "punct": null, + "u_acc": 0.9919354838709677, + "t_acc": 0.9717741935483871, + "punct_acc": null, + "threshold_t": 0.9972395896911621, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8733375438596491, + "t": 0.8789961904761904, + "punct": null, + "u_acc": 0.6716, + "t_acc": 0.69, + "punct_acc": null, + "threshold_t": 0.2638762891292572, + "threshold_adj": 0.5 + } + }, + "si": { + "ted2020-corrupted-asr": { + "u": 0.7674418604651163, + "t": 0.775968992248062, + "punct": null, + "u_acc": 0.34108527131782945, + "t_acc": 0.3798449612403101, + "punct_acc": null, + "threshold_t": 0.42813217639923096, + "threshold_adj": 0.5 + } + }, + "sk": { + "ted2020-corrupted-asr": { + "u": 0.8788533333333333, + "t": 0.8840666666666668, + "punct": null, + "u_acc": 0.6788, + "t_acc": 0.6984, + "punct_acc": null, + "threshold_t": 0.36077985167503357, + "threshold_adj": 0.5 + } + }, + "sl": { + "ted2020-corrupted-asr": { + "u": 0.8806133333333334, + "t": 0.8925219047619048, + "punct": null, + "u_acc": 0.6792, + "t_acc": 0.7176, + "punct_acc": null, + "threshold_t": 0.2213369607925415, + "threshold_adj": 0.5 + } + }, + "sq": { + "ted2020-corrupted-asr": { + "u": 0.8482666666666666, + "t": 0.8580876190476192, + "punct": null, + "u_acc": 0.6084, + "t_acc": 0.632, + "punct_acc": null, + "threshold_t": 0.20154695212841034, + "threshold_adj": 0.5 + } + }, + "sr": { + "ted2020-corrupted-asr": { + "u": 0.8560666666666666, + "t": 0.8596342857142858, + "punct": null, + "u_acc": 0.624, + "t_acc": 0.6364, + "punct_acc": null, + "threshold_t": 0.4065939784049988, + "threshold_adj": 0.5 + } + }, + "sv": { + "ted2020-corrupted-asr": { + "u": 0.8836, + "t": 0.8968, + "punct": null, + "u_acc": 0.6864, + "t_acc": 0.7212, + "punct_acc": null, + "threshold_t": 0.20190034806728363, + "threshold_adj": 0.5 + } + }, + "ta": { + "ersatz": { + "u": 0.948074369189907, + "t": 0.9387782204515271, + "punct": null, + "u_acc": 0.8446215139442231, + "t_acc": 0.8167330677290837, + "punct_acc": null, + "threshold_t": 0.7620065808296204, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.7515302491103204, + "t": 0.7519132350449076, + "punct": null, + "u_acc": 0.3736654804270463, + "t_acc": 0.3822064056939502, + "punct_acc": null, + "threshold_t": 0.439586877822876, + "threshold_adj": 0.5 + } + }, + "te": { + "ted2020-corrupted-asr": { + "u": 0.7735649546827795, + "t": 0.7732628398791541, + "punct": null, + "u_acc": 0.43051359516616317, + "t_acc": 0.43202416918429004, + "punct_acc": null, + "threshold_t": 0.4583691358566284, + "threshold_adj": 0.5 + } + }, + "tg": { + "ted2020-corrupted-asr": { + "u": 0.8219298245614034, + "t": 0.8219298245614035, + "punct": null, + "u_acc": 0.5, + "t_acc": 0.5, + "punct_acc": null, + "threshold_t": 0.4422083795070648, + "threshold_adj": 0.5 + } + }, + "th": { + "ted2020-corrupted-asr": { + "u": 0.8222835294117645, + "t": 0.8294743394536498, + "punct": null, + "u_acc": 0.5416, + "t_acc": 0.5716, + "punct_acc": null, + "threshold_t": 0.25836485624313354, + "threshold_adj": 0.5 + } + }, + "tr": { + "ersatz": { + "u": 0.989095744680851, + "t": 0.983554964539007, + "punct": null, + "u_acc": 0.9654255319148937, + "t_acc": 0.9521276595744681, + "punct_acc": null, + "threshold_t": 0.9601643085479736, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.8487066666666666, + "t": 0.8664695438596491, + "punct": null, + "u_acc": 0.5808, + "t_acc": 0.6388, + "punct_acc": null, + "threshold_t": 0.1862250566482544, + "threshold_adj": 0.5 + } + }, + "uk": { + "ted2020-corrupted-asr": { + "u": 0.8644400000000001, + "t": 0.8778666666666668, + "punct": null, + "u_acc": 0.6456, + "t_acc": 0.6756, + "punct_acc": null, + "threshold_t": 0.1702127456665039, + "threshold_adj": 0.5 + } + }, + "ur": { + "ted2020-corrupted-asr": { + "u": 0.8148681055155874, + "t": 0.8337224098272402, + "punct": null, + "u_acc": 0.5231243576567317, + "t_acc": 0.5765673175745119, + "punct_acc": null, + "threshold_t": 0.1470322459936142, + "threshold_adj": 0.5 + } + }, + "uz": { + "ted2020-corrupted-asr": { + "u": 0.8401195499296765, + "t": 0.8565400843881856, + "punct": null, + "u_acc": 0.569620253164557, + "t_acc": 0.6181434599156118, + "punct_acc": null, + "threshold_t": 0.19590476155281067, + "threshold_adj": 0.5 + } + }, + "vi": { + "ted2020-corrupted-asr": { + "u": 0.8373466666666667, + "t": 0.8485638095238097, + "punct": null, + "u_acc": 0.574, + "t_acc": 0.6108, + "punct_acc": null, + "threshold_t": 0.2558405101299286, + "threshold_adj": 0.5 + } + }, + "xh": {}, + "yi": {}, + "yo": {}, + "zh": { + "ersatz": { + "u": 0.9690666666666666, + "t": 0.9607333333333333, + "punct": null, + "u_acc": 0.908, + "t_acc": 0.88, + "punct_acc": null, + "threshold_t": 0.9007353782653809, + "threshold_adj": 0.5 + }, + "ted2020-corrupted-asr": { + "u": 0.9358999670944389, + "t": 0.9241526818032249, + "punct": null, + "u_acc": 0.8371174728529122, + "t_acc": 0.7941757156959526, + "punct_acc": null, + "threshold_t": 0.8769904375076294, + "threshold_adj": 0.5 + } + }, + "zu": {}, + "tr-de": {}, + "es-en": {}, + "vi-en": {}, + "en-de": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/sat-12l_lora_tweets.json b/wtpsplit/evaluation/evaluation_results/short/sat-12l_lora_tweets.json new file mode 100644 index 00000000..22cba390 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/sat-12l_lora_tweets.json @@ -0,0 +1,125 @@ +{ + "af": {}, + "am": {}, + "ar": {}, + "az": {}, + "be": {}, + "bg": {}, + "bn": {}, + "ca": {}, + "ceb": {}, + "cs": {}, + "cy": {}, + "da": {}, + "de": {}, + "el": {}, + "en": {}, + "eo": {}, + "es": {}, + "et": {}, + "eu": {}, + "fa": {}, + "fi": {}, + "fr": {}, + "fy": {}, + "ga": {}, + "gd": {}, + "gl": {}, + "gu": {}, + "ha": {}, + "he": {}, + "hi": {}, + "hu": {}, + "hy": {}, + "id": {}, + "ig": {}, + "is": {}, + "it": {}, + "ja": {}, + "jv": {}, + "ka": {}, + "kk": {}, + "km": {}, + "kn": {}, + "ko": {}, + "ku": {}, + "ky": {}, + "la": {}, + "lt": {}, + "lv": {}, + "mg": {}, + "mk": {}, + "ml": {}, + "mn": {}, + "mr": {}, + "ms": {}, + "mt": {}, + "my": {}, + "ne": {}, + "nl": {}, + "no": {}, + "pa": {}, + "pl": {}, + "ps": {}, + "pt": {}, + "ro": {}, + "ru": {}, + "si": {}, + "sk": {}, + "sl": { + "short-sequences": { + "u": 0.9627205333766917, + "t": 0.9440463200452204, + "punct": null, + "acc_u": 0.8717008797653959, + "acc_t": 0.7972873900293255, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.8110346947773636, + "t": 0.8030101812084951, + "punct": null, + "acc_u": 0.4633431085043988, + "acc_t": 0.42998533724340177, + "acc_punct": null + } + }, + "sq": {}, + "sr": { + "short-sequences": { + "u": 0.9691633597883597, + "t": 0.9373585955846986, + "punct": null, + "acc_u": 0.890625, + "acc_t": 0.75, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7763096856846857, + "t": 0.7737287307599808, + "punct": null, + "acc_u": 0.328125, + "acc_t": 0.3125, + "acc_punct": null + } + }, + "sv": {}, + "ta": {}, + "te": {}, + "tg": {}, + "th": {}, + "tr": {}, + "uk": {}, + "ur": {}, + "uz": {}, + "vi": {}, + "xh": {}, + "yi": {}, + "yo": {}, + "zh": {}, + "zu": {}, + "tr-de": {}, + "es-en": {}, + "vi-en": {}, + "en-de": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/sat-12l_tweets.json b/wtpsplit/evaluation/evaluation_results/short/sat-12l_tweets.json new file mode 100644 index 00000000..6b3b980a --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/sat-12l_tweets.json @@ -0,0 +1,159 @@ +{ + "af": {}, + "am": {}, + "ar": {}, + "az": {}, + "be": {}, + "bg": {}, + "bn": {}, + "ca": {}, + "ceb": {}, + "cs": {}, + "cy": {}, + "da": {}, + "de": {}, + "el": {}, + "en": {}, + "eo": {}, + "es": {}, + "et": { + "short-sequences": { + "u": 0.9180230295767641, + "t": 0.9165417991163024, + "punct": null, + "acc_u": 0.5270935960591133, + "acc_t": 0.5566502463054187, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.8198776683619725, + "t": 0.8139334270526614, + "punct": null, + "acc_u": 0.26108374384236455, + "acc_t": 0.26108374384236455, + "acc_punct": null + } + }, + "eu": {}, + "fa": {}, + "fi": {}, + "fr": {}, + "fy": {}, + "ga": {}, + "gd": {}, + "gl": {}, + "gu": {}, + "ha": {}, + "he": {}, + "hi": {}, + "hu": {}, + "hy": {}, + "id": {}, + "ig": {}, + "is": {}, + "it": {}, + "ja": {}, + "jv": {}, + "ka": {}, + "kk": {}, + "km": {}, + "kn": {}, + "ko": {}, + "ku": {}, + "ky": {}, + "la": {}, + "lt": {}, + "lv": {}, + "mg": {}, + "mk": {}, + "ml": {}, + "mn": {}, + "mr": {}, + "ms": {}, + "mt": {}, + "my": {}, + "ne": {}, + "nl": {}, + "no": {}, + "pa": {}, + "pl": {}, + "ps": {}, + "pt": {}, + "ro": {}, + "ru": {}, + "si": {}, + "sk": {}, + "sl": { + "short-sequences": { + "u": 0.9356535611667576, + "t": 0.9345102152653473, + "punct": null, + "acc_u": 0.7796920821114369, + "acc_t": 0.7796920821114369, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.7004176389348676, + "t": 0.7073805776335103, + "punct": null, + "acc_u": 0.2126099706744868, + "acc_t": 0.22324046920821114, + "acc_punct": null + } + }, + "sq": {}, + "sr": { + "short-sequences": { + "u": 0.9331013655462185, + "t": 0.9468621129007158, + "punct": null, + "acc_u": 0.7291666666666666, + "acc_t": 0.8020833333333334, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.76494708994709, + "t": 0.751862185846561, + "punct": null, + "acc_u": 0.2864583333333333, + "acc_t": 0.2864583333333333, + "acc_punct": null + } + }, + "sv": {}, + "ta": {}, + "te": {}, + "tg": {}, + "th": {}, + "tr": {}, + "uk": {}, + "ur": {}, + "uz": {}, + "vi": {}, + "xh": {}, + "yi": {}, + "yo": {}, + "zh": {}, + "zu": {}, + "tr-de": {}, + "es-en": {}, + "vi-en": {}, + "en-de": { + "short-sequences": { + "u": 0.903880519829076, + "t": 0.9202434746668512, + "punct": null, + "acc_u": 0.6029106029106029, + "acc_t": 0.6652806652806653, + "acc_punct": null + }, + "short-sequences-corrupted-asr": { + "u": 0.761724197223827, + "t": 0.7646821886950393, + "punct": null, + "acc_u": 0.24116424116424118, + "acc_t": 0.24532224532224534, + "acc_punct": null + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/sat-3l-no-limited-lookahead.json b/wtpsplit/evaluation/evaluation_results/short/sat-3l-no-limited-lookahead.json new file mode 100644 index 00000000..6de716fc --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/sat-3l-no-limited-lookahead.json @@ -0,0 +1,3346 @@ +{ + "af": { + "opus100": { + "u": 0.521967640887406, + "t": 0.8070075757575758, + "punct": null, + "u_acc": 0.08471074380165289, + "t_acc": 0.4256198347107438, + "punct_acc": null, + "threshold_t": 0.5024673938751221, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.19851761742278398, + "t": 0.6752518445914673, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.1792452830188679, + "punct_acc": null, + "threshold_t": 0.4076896607875824, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.4270711839986823, + "t": 0.7073382173382173, + "punct": null, + "u_acc": 0.027692307692307693, + "t_acc": 0.24615384615384617, + "punct_acc": null, + "threshold_t": 0.11034274101257324, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3951532959783299, + "t": 0.7235071595071595, + "punct": null, + "u_acc": 0.018461538461538463, + "t_acc": 0.25846153846153846, + "punct_acc": null, + "threshold_t": 0.2389264702796936, + "threshold_adj": 0.01 + } + }, + "am": { + "opus100": { + "u": 0.25769894457211784, + "t": 0.5828361830790527, + "punct": null, + "u_acc": 0.006024096385542169, + "t_acc": 0.12048192771084337, + "punct_acc": null, + "threshold_t": 0.5484523773193359, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.42072253380677294, + "t": 0.6735832093253968, + "punct": null, + "u_acc": 0.0234375, + "t_acc": 0.2109375, + "punct_acc": null, + "threshold_t": 0.16136817634105682, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4049445985717712, + "t": 0.6494193000626824, + "punct": null, + "u_acc": 0.03125, + "t_acc": 0.1796875, + "punct_acc": null, + "threshold_t": 0.1827695667743683, + "threshold_adj": 0.01 + } + }, + "ar": { + "ersatz": { + "u": 0.2878579101925983, + "t": 0.7572139508183741, + "punct": null, + "u_acc": 0.007978723404255319, + "t_acc": 0.3404255319148936, + "punct_acc": null, + "threshold_t": 0.3436282277107239, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.38890433075570396, + "t": 0.7716676228724421, + "punct": null, + "u_acc": 0.014056224899598393, + "t_acc": 0.3493975903614458, + "punct_acc": null, + "threshold_t": 0.4760899543762207, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.30935300547291233, + "t": 0.7661607226622708, + "punct": null, + "u_acc": 0.047058823529411764, + "t_acc": 0.3588235294117647, + "punct_acc": null, + "threshold_t": 0.6849051117897034, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.3834993738648275, + "t": 0.663871663246641, + "punct": null, + "u_acc": 0.0076, + "t_acc": 0.1796, + "punct_acc": null, + "threshold_t": 0.11150094866752625, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.35829283940316903, + "t": 0.6649838038321397, + "punct": null, + "u_acc": 0.0068, + "t_acc": 0.1556, + "punct_acc": null, + "threshold_t": 0.20296695828437805, + "threshold_adj": 0.01 + } + }, + "az": { + "opus100": { + "u": 0.25841178560961264, + "t": 0.6518359807764486, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.14457831325301204, + "punct_acc": null, + "threshold_t": 0.6439761519432068, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5410323763063122, + "t": 0.7745450110698338, + "punct": null, + "u_acc": 0.0549645390070922, + "t_acc": 0.3723404255319149, + "punct_acc": null, + "threshold_t": 0.12293970584869385, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.5028897823768425, + "t": 0.7555240108314951, + "punct": null, + "u_acc": 0.057919621749408984, + "t_acc": 0.32210401891252954, + "punct_acc": null, + "threshold_t": 0.16099487245082855, + "threshold_adj": 0.009999999999999998 + } + }, + "be": { + "opus100": { + "u": 0.6091628123526518, + "t": 0.7807371967249768, + "punct": null, + "u_acc": 0.09368635437881874, + "t_acc": 0.39918533604887985, + "punct_acc": null, + "threshold_t": 0.40710073709487915, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.40163917913307373, + "t": 0.7418848298368725, + "punct": null, + "u_acc": 0.048327137546468404, + "t_acc": 0.38661710037174724, + "punct_acc": null, + "threshold_t": 0.5168027281761169, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.4253592159836419, + "t": 0.6843723271253142, + "punct": null, + "u_acc": 0.014925373134328358, + "t_acc": 0.20246593121349774, + "punct_acc": null, + "threshold_t": 0.08617743849754333, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.4028413100736211, + "t": 0.6971245383736484, + "punct": null, + "u_acc": 0.025308241401687217, + "t_acc": 0.23491239454899415, + "punct_acc": null, + "threshold_t": 0.18470029532909393, + "threshold_adj": 0.009999999999999998 + } + }, + "bg": { + "opus100": { + "u": 0.5590600649335128, + "t": 0.820033718230111, + "punct": null, + "u_acc": 0.06412825651302605, + "t_acc": 0.46092184368737477, + "punct_acc": null, + "threshold_t": 0.6984277367591858, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.4091399813440077, + "t": 0.7381071338060585, + "punct": null, + "u_acc": 0.03942652329749104, + "t_acc": 0.24731182795698925, + "punct_acc": null, + "threshold_t": 0.6494974493980408, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4701276513013281, + "t": 0.715176080621887, + "punct": null, + "u_acc": 0.018, + "t_acc": 0.2372, + "punct_acc": null, + "threshold_t": 0.13686493039131165, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.46069224229933314, + "t": 0.7382677045864764, + "punct": null, + "u_acc": 0.0372, + "t_acc": 0.322, + "punct_acc": null, + "threshold_t": 0.15192948281764984, + "threshold_adj": 0.01 + } + }, + "bn": { + "opus100": { + "u": 0.39793492008058584, + "t": 0.7728945545846955, + "punct": null, + "u_acc": 0.028169014084507043, + "t_acc": 0.34808853118712274, + "punct_acc": null, + "threshold_t": 0.437578946352005, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.5302546659689517, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.1775255952009422, + "t": 0.5601054288848407, + "punct": null, + "u_acc": 0.0007692307692307692, + "t_acc": 0.057692307692307696, + "punct_acc": null, + "threshold_t": 0.1189442127943039, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.3877424965519097, + "t": 0.6500288664520982, + "punct": null, + "u_acc": 0.024615384615384615, + "t_acc": 0.1723076923076923, + "punct_acc": null, + "threshold_t": 0.15231849253177643, + "threshold_adj": 0.009999999999999998 + } + }, + "ca": { + "opus100": { + "u": 0.45111656424735425, + "t": 0.790315206542387, + "punct": null, + "u_acc": 0.028397565922920892, + "t_acc": 0.3935091277890467, + "punct_acc": null, + "threshold_t": 0.7063705325126648, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.278314727713474, + "t": 0.7261755144149604, + "punct": null, + "u_acc": 0.023809523809523808, + "t_acc": 0.2878787878787879, + "punct_acc": null, + "threshold_t": 0.5014908313751221, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.4229462396709986, + "t": 0.6894989334848158, + "punct": null, + "u_acc": 0.0188, + "t_acc": 0.2096, + "punct_acc": null, + "threshold_t": 0.11531265079975128, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.41996055371873114, + "t": 0.7158137718147006, + "punct": null, + "u_acc": 0.0268, + "t_acc": 0.228, + "punct_acc": null, + "threshold_t": 0.26077574491500854, + "threshold_adj": 0.01 + } + }, + "ceb": { + "ud": { + "u": 0.45762542795017597, + "t": null, + "punct": null, + "u_acc": 0.06382978723404255, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.3137255306981092, + "t": 0.6197278911564627, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.07142857142857142, + "punct_acc": null, + "threshold_t": 0.16129904985427856, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.2800425316762703, + "t": 0.6452380952380953, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.07142857142857142, + "punct_acc": null, + "threshold_t": 0.5037209987640381, + "threshold_adj": 0.009999999999999998 + }, + "nllb": { + "u": 0.30028402186682224, + "t": 0.7909240468028703, + "punct": null, + "u_acc": 0.002, + "t_acc": 0.4216, + "punct_acc": null, + "threshold_t": 0.5418758392333984, + "threshold_adj": 0.01 + } + }, + "cs": { + "ersatz": { + "u": 0.31812388986238604, + "t": 0.7513185759713537, + "punct": null, + "u_acc": 0.018518518518518517, + "t_acc": 0.3472222222222222, + "punct_acc": null, + "threshold_t": 0.3009216785430908, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.45687623105156716, + "t": 0.7855013550135502, + "punct": null, + "u_acc": 0.028455284552845527, + "t_acc": 0.38414634146341464, + "punct_acc": null, + "threshold_t": 0.7278257012367249, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.2886322330849818, + "t": 0.6920578399240807, + "punct": null, + "u_acc": 0.011435331230283912, + "t_acc": 0.24566246056782334, + "punct_acc": null, + "threshold_t": 0.3373522162437439, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4233447006922392, + "t": 0.6703057523714974, + "punct": null, + "u_acc": 0.0172, + "t_acc": 0.2, + "punct_acc": null, + "threshold_t": 0.07741232216358185, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.40063617499620613, + "t": 0.7141713313014241, + "punct": null, + "u_acc": 0.0196, + "t_acc": 0.2616, + "punct_acc": null, + "threshold_t": 0.2162414938211441, + "threshold_adj": 0.01 + } + }, + "cy": { + "opus100": { + "u": 0.5278059902352108, + "t": 0.7606622998544396, + "punct": null, + "u_acc": 0.05458515283842795, + "t_acc": 0.31222707423580787, + "punct_acc": null, + "threshold_t": 0.3645476698875427, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.3252013441640572, + "t": 0.8636127178143985, + "punct": null, + "u_acc": 0.008403361344537815, + "t_acc": 0.6428571428571429, + "punct_acc": null, + "threshold_t": 0.3057078421115875, + "threshold_adj": 0.01 + } + }, + "da": { + "opus100": { + "u": 0.3833426779169783, + "t": 0.7795557824791696, + "punct": null, + "u_acc": 0.02217741935483871, + "t_acc": 0.36693548387096775, + "punct_acc": null, + "threshold_t": 0.7199528217315674, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.2609723808754446, + "t": 0.7180497989008626, + "punct": null, + "u_acc": 0.0070921985815602835, + "t_acc": 0.2907801418439716, + "punct_acc": null, + "threshold_t": 0.32445433735847473, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4167771406987095, + "t": 0.722869888999889, + "punct": null, + "u_acc": 0.016, + "t_acc": 0.2784, + "punct_acc": null, + "threshold_t": 0.12204565852880478, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3949923588646065, + "t": 0.7300375989896378, + "punct": null, + "u_acc": 0.016, + "t_acc": 0.3056, + "punct_acc": null, + "threshold_t": 0.14172229170799255, + "threshold_adj": 0.01 + } + }, + "de": { + "ersatz": { + "u": 0.3908950300453933, + "t": 0.7859018216132175, + "punct": null, + "u_acc": 0.04276985743380855, + "t_acc": 0.4093686354378819, + "punct_acc": null, + "threshold_t": 0.22927822172641754, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.3886227049383767, + "t": 0.7920362723787892, + "punct": null, + "u_acc": 0.0189873417721519, + "t_acc": 0.43248945147679324, + "punct_acc": null, + "threshold_t": 0.6417106986045837, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.3389659173656595, + "t": 0.7942125557311062, + "punct": null, + "u_acc": 0.02459016393442623, + "t_acc": 0.4672131147540984, + "punct_acc": null, + "threshold_t": 0.19273802638053894, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.42448111358151935, + "t": 0.7244389743589743, + "punct": null, + "u_acc": 0.0252, + "t_acc": 0.2768, + "punct_acc": null, + "threshold_t": 0.15264903008937836, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.42047747976672933, + "t": 0.7345618969973954, + "punct": null, + "u_acc": 0.0336, + "t_acc": 0.3172, + "punct_acc": null, + "threshold_t": 0.15832704305648804, + "threshold_adj": 0.01 + } + }, + "el": { + "opus100": { + "u": 0.41889758669134186, + "t": 0.7653040734366034, + "punct": null, + "u_acc": 0.024096385542168676, + "t_acc": 0.3132530120481928, + "punct_acc": null, + "threshold_t": 0.7307299971580505, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.23025940211706117, + "t": 0.7313166501931253, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.4245646595954895, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.40600615328132805, + "t": 0.7086444501930818, + "punct": null, + "u_acc": 0.0068, + "t_acc": 0.244, + "punct_acc": null, + "threshold_t": 0.12853610515594482, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3983140763279733, + "t": 0.7294659958531755, + "punct": null, + "u_acc": 0.0208, + "t_acc": 0.328, + "punct_acc": null, + "threshold_t": 0.14882992208003998, + "threshold_adj": 0.01 + } + }, + "en": { + "ersatz": { + "u": 0.18299034935225855, + "t": 0.6644001420685237, + "punct": null, + "u_acc": 0.004153686396677051, + "t_acc": 0.21754932502596053, + "punct_acc": null, + "threshold_t": 0.4363234341144562, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.46521479336645377, + "t": 0.8904060768980124, + "punct": null, + "u_acc": 0.020161290322580645, + "t_acc": 0.6350806451612904, + "punct_acc": null, + "threshold_t": 0.39582863450050354, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.27709980281069607, + "t": 0.6698127673773242, + "punct": null, + "u_acc": 0.043795620437956206, + "t_acc": 0.32116788321167883, + "punct_acc": null, + "threshold_t": 0.20434819161891937, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.38627203729571513, + "t": 0.6824455310759148, + "punct": null, + "u_acc": 0.014, + "t_acc": 0.2, + "punct_acc": null, + "threshold_t": 0.14244002103805542, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3430675588552492, + "t": 0.6894563915426017, + "punct": null, + "u_acc": 0.0128, + "t_acc": 0.2416, + "punct_acc": null, + "threshold_t": 0.14985813200473785, + "threshold_adj": 0.01 + } + }, + "eo": { + "opus100": { + "u": 0.48275129417142915, + "t": 0.8407989188231123, + "punct": null, + "u_acc": 0.020161290322580645, + "t_acc": 0.5080645161290323, + "punct_acc": null, + "threshold_t": 0.6392757296562195, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4455803200527005, + "t": 0.674942090073669, + "punct": null, + "u_acc": 0.020050125313283207, + "t_acc": 0.18609022556390978, + "punct_acc": null, + "threshold_t": 0.124610036611557, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.4114913665429389, + "t": 0.6975700454264318, + "punct": null, + "u_acc": 0.022556390977443608, + "t_acc": 0.2136591478696742, + "punct_acc": null, + "threshold_t": 0.22095653414726257, + "threshold_adj": 0.009999999999999998 + } + }, + "es": { + "ersatz": { + "u": 0.26389868389786314, + "t": null, + "punct": null, + "u_acc": 0.014360313315926894, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.3731113296296476, + "t": 0.8001046372899919, + "punct": null, + "u_acc": 0.024291497975708502, + "t_acc": 0.4392712550607287, + "punct_acc": null, + "threshold_t": 0.6376227140426636, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.1975627681713205, + "t": 0.7159048711386534, + "punct": null, + "u_acc": 0.011627906976744186, + "t_acc": 0.26744186046511625, + "punct_acc": null, + "threshold_t": 0.6900930404663086, + "threshold_adj": 0.009999999999999997 + }, + "ted2020-corrupted-asr": { + "u": 0.4192450527585557, + "t": 0.6957218337218337, + "punct": null, + "u_acc": 0.0124, + "t_acc": 0.2144, + "punct_acc": null, + "threshold_t": 0.14542968571186066, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.40475333985461615, + "t": 0.7355281214747025, + "punct": null, + "u_acc": 0.022, + "t_acc": 0.304, + "punct_acc": null, + "threshold_t": 0.17771370708942413, + "threshold_adj": 0.01 + } + }, + "et": { + "ersatz": { + "u": 0.31271612471496996, + "t": 0.7949768265244456, + "punct": null, + "u_acc": 0.021825396825396824, + "t_acc": 0.44841269841269843, + "punct_acc": null, + "threshold_t": 0.31253373622894287, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.38825956396266487, + "t": 0.7851413206676365, + "punct": null, + "u_acc": 0.010121457489878543, + "t_acc": 0.38866396761133604, + "punct_acc": null, + "threshold_t": 0.7011182904243469, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.29463138943363953, + "t": 0.7397855775219786, + "punct": null, + "u_acc": 0.011194029850746268, + "t_acc": 0.39427860696517414, + "punct_acc": null, + "threshold_t": 0.19267624616622925, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.427650549672095, + "t": 0.7119992113768584, + "punct": null, + "u_acc": 0.014, + "t_acc": 0.24, + "punct_acc": null, + "threshold_t": 0.13027848303318024, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4150381130494448, + "t": 0.7370197518715242, + "punct": null, + "u_acc": 0.0164, + "t_acc": 0.3032, + "punct_acc": null, + "threshold_t": 0.17048287391662598, + "threshold_adj": 0.01 + } + }, + "eu": { + "opus100": { + "u": 0.39860346416457704, + "t": 0.7581779005308417, + "punct": null, + "u_acc": 0.01417004048582996, + "t_acc": 0.32793522267206476, + "punct_acc": null, + "threshold_t": 0.600071132183075, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.38179933627635076, + "t": 0.8211055647330158, + "punct": null, + "u_acc": 0.024444444444444446, + "t_acc": 0.4888888888888889, + "punct_acc": null, + "threshold_t": 0.21169915795326233, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.38766729515235065, + "t": 0.6372184614001503, + "punct": null, + "u_acc": 0.010752688172043012, + "t_acc": 0.14045698924731181, + "punct_acc": null, + "threshold_t": 0.09456989914178848, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.3803366972669077, + "t": 0.6917502908311733, + "punct": null, + "u_acc": 0.012096774193548387, + "t_acc": 0.1868279569892473, + "punct_acc": null, + "threshold_t": 0.23270253837108612, + "threshold_adj": 0.009999999999999998 + } + }, + "fa": { + "opus100": { + "u": 0.3480817639493688, + "t": 0.7017185295445604, + "punct": null, + "u_acc": 0.004008016032064128, + "t_acc": 0.26452905811623245, + "punct_acc": null, + "threshold_t": 0.20435580611228943, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.2927409976524515, + "t": 0.8407731157731159, + "punct": null, + "u_acc": 0.01098901098901099, + "t_acc": 0.5247252747252747, + "punct_acc": null, + "threshold_t": 0.34889939427375793, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.47482304872825426, + "t": 0.7266617543354629, + "punct": null, + "u_acc": 0.0444, + "t_acc": 0.2736, + "punct_acc": null, + "threshold_t": 0.16387945413589478, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.41968503707501886, + "t": 0.6995279103482293, + "punct": null, + "u_acc": 0.0376, + "t_acc": 0.226, + "punct_acc": null, + "threshold_t": 0.22550618648529053, + "threshold_adj": 0.01 + } + }, + "fi": { + "ersatz": { + "u": 0.41842569469768814, + "t": 0.7657696345071094, + "punct": null, + "u_acc": 0.050100200400801605, + "t_acc": 0.32064128256513025, + "punct_acc": null, + "threshold_t": 0.3611951172351837, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.45252277780980416, + "t": 0.7922950400817603, + "punct": null, + "u_acc": 0.018108651911468814, + "t_acc": 0.38028169014084506, + "punct_acc": null, + "threshold_t": 0.6777316927909851, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.3286750094781122, + "t": 0.7633195254428151, + "punct": null, + "u_acc": 0.010309278350515464, + "t_acc": 0.41494845360824745, + "punct_acc": null, + "threshold_t": 0.2346176654100418, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.4141155491376356, + "t": 0.688358444640327, + "punct": null, + "u_acc": 0.0136, + "t_acc": 0.2056, + "punct_acc": null, + "threshold_t": 0.13156551122665405, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4154603128774544, + "t": 0.7195460862124071, + "punct": null, + "u_acc": 0.0208, + "t_acc": 0.282, + "punct_acc": null, + "threshold_t": 0.13152842223644257, + "threshold_adj": 0.01 + } + }, + "fr": { + "ersatz": { + "u": 0.3470178102823959, + "t": 0.7912069987730687, + "punct": null, + "u_acc": 0.04589371980676329, + "t_acc": 0.4106280193236715, + "punct_acc": null, + "threshold_t": 0.44133540987968445, + "threshold_adj": 0.009999999999999997 + }, + "opus100": { + "u": 0.37021236637525373, + "t": null, + "punct": null, + "u_acc": 0.012170385395537525, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.25126126189231474, + "t": 0.7755950920424605, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.4230769230769231, + "punct_acc": null, + "threshold_t": 0.3190906047821045, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.45276952014202687, + "t": 0.7075967794297207, + "punct": null, + "u_acc": 0.0164, + "t_acc": 0.2364, + "punct_acc": null, + "threshold_t": 0.15282650291919708, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.43400519238176966, + "t": 0.7390182684657576, + "punct": null, + "u_acc": 0.0232, + "t_acc": 0.3116, + "punct_acc": null, + "threshold_t": 0.15466813743114471, + "threshold_adj": 0.01 + } + }, + "fy": { + "opus100": { + "u": 0.6307731092859935, + "t": 0.7538775602080323, + "punct": null, + "u_acc": 0.17167381974248927, + "t_acc": 0.3218884120171674, + "punct_acc": null, + "threshold_t": 0.43880629539489746, + "threshold_adj": 0.01 + } + }, + "ga": { + "opus100": { + "u": 0.2806012672640505, + "t": 0.748908916488685, + "punct": null, + "u_acc": 0.014112903225806451, + "t_acc": 0.3709677419354839, + "punct_acc": null, + "threshold_t": 0.49839383363723755, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.25263674394000624, + "t": 0.6946140604035344, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.17543859649122806, + "punct_acc": null, + "threshold_t": 0.7344586849212646, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.2140553546900296, + "t": 0.42400793650793656, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.1463191956281662, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.18596768034431407, + "t": 0.43002645502645503, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.08333333333333333, + "punct_acc": null, + "threshold_t": 0.20506076514720917, + "threshold_adj": 0.009999999999999998 + } + }, + "gd": { + "opus100": { + "u": 0.4503124224873005, + "t": 0.7789006466784244, + "punct": null, + "u_acc": 0.044444444444444446, + "t_acc": 0.34814814814814815, + "punct_acc": null, + "threshold_t": 0.564015805721283, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.25136050115286257, + "t": 0.6649238220929398, + "punct": null, + "u_acc": 0.007352941176470588, + "t_acc": 0.13970588235294118, + "punct_acc": null, + "threshold_t": 0.6415706872940063, + "threshold_adj": 0.009999999999999998 + } + }, + "gl": { + "opus100": { + "u": 0.48223691213002273, + "t": 0.8555422623971011, + "punct": null, + "u_acc": 0.04435483870967742, + "t_acc": 0.530241935483871, + "punct_acc": null, + "threshold_t": 0.541753888130188, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.3061022337089955, + "t": 0.7905954600954601, + "punct": null, + "u_acc": 0.02, + "t_acc": 0.43, + "punct_acc": null, + "threshold_t": 0.41870152950286865, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.4238179602568559, + "t": 0.6864655579714403, + "punct": null, + "u_acc": 0.0128, + "t_acc": 0.2144, + "punct_acc": null, + "threshold_t": 0.1143961101770401, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4131182364227959, + "t": 0.7176544779884718, + "punct": null, + "u_acc": 0.0228, + "t_acc": 0.2748, + "punct_acc": null, + "threshold_t": 0.15863759815692902, + "threshold_adj": 0.01 + } + }, + "gu": { + "ersatz": { + "u": 0.5940945694079052, + "t": 0.8734783180856533, + "punct": null, + "u_acc": 0.1968503937007874, + "t_acc": 0.6732283464566929, + "punct_acc": null, + "threshold_t": 0.14829501509666443, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.5933116587208659, + "t": 0.7728402701024473, + "punct": null, + "u_acc": 0.08695652173913043, + "t_acc": 0.33954451345755693, + "punct_acc": null, + "threshold_t": 0.4211757481098175, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.24551971909860396, + "t": 0.5972436962240827, + "punct": null, + "u_acc": 0.005055611729019211, + "t_acc": 0.08645096056622852, + "punct_acc": null, + "threshold_t": 0.21880076825618744, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.44783020562122505, + "t": 0.6403112833117576, + "punct": null, + "u_acc": 0.04095045500505561, + "t_acc": 0.15722952477249746, + "punct_acc": null, + "threshold_t": 0.20716062188148499, + "threshold_adj": 0.01 + } + }, + "ha": { + "opus100": { + "u": 0.18568671101882667, + "t": 0.6475019203019203, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.162, + "punct_acc": null, + "threshold_t": 0.7470687031745911, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.2962962962962963, + "t": 0.7777777777777777, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.2783623933792114, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.2748917748917749, + "t": 0.746031746031746, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.3842974603176117, + "threshold_adj": 0.01 + } + }, + "he": { + "opus100": { + "u": 0.5227112337804309, + "t": 0.8007920603110984, + "punct": null, + "u_acc": 0.03406813627254509, + "t_acc": 0.4148296593186373, + "punct_acc": null, + "threshold_t": 0.6484558582305908, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.3089086648117721, + "t": 0.79444342505567, + "punct": null, + "u_acc": 0.030612244897959183, + "t_acc": 0.4489795918367347, + "punct_acc": null, + "threshold_t": 0.3178926706314087, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.39478970832757293, + "t": 0.6560826530085353, + "punct": null, + "u_acc": 0.006, + "t_acc": 0.174, + "punct_acc": null, + "threshold_t": 0.0832156091928482, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3817378310447274, + "t": 0.6592268549472736, + "punct": null, + "u_acc": 0.0084, + "t_acc": 0.1936, + "punct_acc": null, + "threshold_t": 0.10318056493997574, + "threshold_adj": 0.01 + } + }, + "hi": { + "ersatz": { + "u": 0.3164674711356989, + "t": 0.7738432028707452, + "punct": null, + "u_acc": 0.03492063492063492, + "t_acc": 0.46984126984126984, + "punct_acc": null, + "threshold_t": 0.1370154768228531, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.40747111407919556, + "t": 0.672188449961643, + "punct": null, + "u_acc": 0.030364372469635626, + "t_acc": 0.2388663967611336, + "punct_acc": null, + "threshold_t": 0.5977523922920227, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.3711346761315546, + "t": 0.864151630897474, + "punct": null, + "u_acc": 0.040380047505938245, + "t_acc": 0.6247030878859857, + "punct_acc": null, + "threshold_t": 0.14456236362457275, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.2656445662081126, + "t": 0.6302322914523844, + "punct": null, + "u_acc": 0.0044, + "t_acc": 0.0828, + "punct_acc": null, + "threshold_t": 0.24836908280849457, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4536634169688437, + "t": 0.6772450542856526, + "punct": null, + "u_acc": 0.0432, + "t_acc": 0.224, + "punct_acc": null, + "threshold_t": 0.1363130509853363, + "threshold_adj": 0.01 + } + }, + "hu": { + "opus100": { + "u": 0.5079459918264613, + "t": 0.7859038978494622, + "punct": null, + "u_acc": 0.03225806451612903, + "t_acc": 0.3810483870967742, + "punct_acc": null, + "threshold_t": 0.7287426590919495, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.24936912513608916, + "t": 0.734214406333629, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.4375, + "punct_acc": null, + "threshold_t": 0.2928188145160675, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.4500096635274942, + "t": 0.6873695628639196, + "punct": null, + "u_acc": 0.0232, + "t_acc": 0.1892, + "punct_acc": null, + "threshold_t": 0.09975890070199966, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.44540573793349003, + "t": 0.7176260414925393, + "punct": null, + "u_acc": 0.0356, + "t_acc": 0.2716, + "punct_acc": null, + "threshold_t": 0.1661330908536911, + "threshold_adj": 0.01 + } + }, + "hy": { + "opus100": { + "u": 0.5385017811035355, + "t": null, + "punct": null, + "u_acc": 0.05922551252847381, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.3300403481010081, + "t": 0.6698131131280713, + "punct": null, + "u_acc": 0.02702702702702703, + "t_acc": 0.3108108108108108, + "punct_acc": null, + "threshold_t": 0.29583823680877686, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4633727398156412, + "t": 0.7086721550872015, + "punct": null, + "u_acc": 0.0336, + "t_acc": 0.254, + "punct_acc": null, + "threshold_t": 0.08765432238578796, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.43872212967061486, + "t": 0.6956080660911704, + "punct": null, + "u_acc": 0.0432, + "t_acc": 0.2296, + "punct_acc": null, + "threshold_t": 0.1804531216621399, + "threshold_adj": 0.01 + } + }, + "id": { + "opus100": { + "u": 0.4670125796661096, + "t": 0.8425741608118656, + "punct": null, + "u_acc": 0.014344262295081968, + "t_acc": 0.5204918032786885, + "punct_acc": null, + "threshold_t": 0.6613414883613586, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.263515343631611, + "t": null, + "punct": null, + "u_acc": 0.004, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.423693461881264, + "t": 0.6889271082299343, + "punct": null, + "u_acc": 0.0136, + "t_acc": 0.2144, + "punct_acc": null, + "threshold_t": 0.08639590442180634, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.41031585947047006, + "t": 0.7326150568101321, + "punct": null, + "u_acc": 0.0144, + "t_acc": 0.3008, + "punct_acc": null, + "threshold_t": 0.1552732139825821, + "threshold_adj": 0.01 + } + }, + "ig": { + "opus100": { + "u": 0.48319069385805313, + "t": 0.7847357240132796, + "punct": null, + "u_acc": 0.050970873786407765, + "t_acc": 0.3762135922330097, + "punct_acc": null, + "threshold_t": 0.6178328990936279, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.21099086068272255, + "t": 0.6551282051282052, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.07692307692307693, + "punct_acc": null, + "threshold_t": 0.19138501584529877, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.20330934590133617, + "t": 0.6646214896214897, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.19230769230769232, + "punct_acc": null, + "threshold_t": 0.40933600068092346, + "threshold_adj": 0.01 + } + }, + "is": { + "opus100": { + "u": 0.3673461851262013, + "t": 0.8046948356807511, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.4044265593561368, + "punct_acc": null, + "threshold_t": 0.7223008871078491, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.14853591644544298, + "t": 0.5439528276707528, + "punct": null, + "u_acc": 0.0007757951900698216, + "t_acc": 0.05430566330488751, + "punct_acc": null, + "threshold_t": 0.7449227571487427, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.37894070451490663, + "t": 0.7065276538558981, + "punct": null, + "u_acc": 0.015267175572519083, + "t_acc": 0.2340966921119593, + "punct_acc": null, + "threshold_t": 0.1583557277917862, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.3824079198878915, + "t": 0.7491380403594144, + "punct": null, + "u_acc": 0.015267175572519083, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.20375104248523712, + "threshold_adj": 0.009999999999999998 + } + }, + "it": { + "opus100": { + "u": 0.40992361816707185, + "t": 0.7731401886643822, + "punct": null, + "u_acc": 0.016129032258064516, + "t_acc": 0.3588709677419355, + "punct_acc": null, + "threshold_t": 0.7547422051429749, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.3396045843612544, + "t": 0.8234519184519183, + "punct": null, + "u_acc": 0.041666666666666664, + "t_acc": 0.525, + "punct_acc": null, + "threshold_t": 0.37855446338653564, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.42641563679653827, + "t": 0.7001749864628125, + "punct": null, + "u_acc": 0.0168, + "t_acc": 0.2364, + "punct_acc": null, + "threshold_t": 0.11918587237596512, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4193638503458323, + "t": 0.74888630302361, + "punct": null, + "u_acc": 0.02, + "t_acc": 0.3392, + "punct_acc": null, + "threshold_t": 0.16572310030460358, + "threshold_adj": 0.01 + } + }, + "ja": { + "ersatz": { + "u": 0.322511767000892, + "t": 0.7929021020438931, + "punct": null, + "u_acc": 0.0037313432835820895, + "t_acc": 0.4216417910447761, + "punct_acc": null, + "threshold_t": 0.6904107928276062, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.5697545010005377, + "t": 0.7740329282497956, + "punct": null, + "u_acc": 0.050200803212851405, + "t_acc": 0.3795180722891566, + "punct_acc": null, + "threshold_t": 0.38183656334877014, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.4461887519781366, + "t": 0.8276836725366138, + "punct": null, + "u_acc": 0.022058823529411766, + "t_acc": 0.5073529411764706, + "punct_acc": null, + "threshold_t": 0.4642960727214813, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.5504661254131532, + "t": 0.8171333333333333, + "punct": null, + "u_acc": 0.0704, + "t_acc": 0.4716, + "punct_acc": null, + "threshold_t": 0.3303981125354767, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.5299221397669595, + "t": 0.8012584126984128, + "punct": null, + "u_acc": 0.0624, + "t_acc": 0.4312, + "punct_acc": null, + "threshold_t": 0.3724038600921631, + "threshold_adj": 0.01 + } + }, + "jv": { + "ud": { + "u": 0.3083076910034501, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "nllb": { + "u": 0.34095762104997396, + "t": 0.7910316564137616, + "punct": null, + "u_acc": 0.0076, + "t_acc": 0.3924, + "punct_acc": null, + "threshold_t": 0.6065859198570251, + "threshold_adj": 0.01 + } + }, + "ka": { + "opus100": { + "u": 0.3498051898858683, + "t": 0.6848488067488068, + "punct": null, + "u_acc": 0.01, + "t_acc": 0.188, + "punct_acc": null, + "threshold_t": 0.7527010440826416, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.40773317183813884, + "t": 0.6694971664936371, + "punct": null, + "u_acc": 0.0136, + "t_acc": 0.188, + "punct_acc": null, + "threshold_t": 0.11280657351016998, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.38481140244658957, + "t": 0.6467198219258423, + "punct": null, + "u_acc": 0.0124, + "t_acc": 0.1688, + "punct_acc": null, + "threshold_t": 0.12804466485977173, + "threshold_adj": 0.01 + } + }, + "kk": { + "ersatz": { + "u": 0.3377764956463363, + "t": 0.7664282005576124, + "punct": null, + "u_acc": 0.04, + "t_acc": 0.416, + "punct_acc": null, + "threshold_t": 0.34651538729667664, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.589306800446127, + "t": 0.818208054571691, + "punct": null, + "u_acc": 0.09090909090909091, + "t_acc": 0.4380165289256198, + "punct_acc": null, + "threshold_t": 0.4719393253326416, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.3841593854566553, + "t": 0.7056585484066399, + "punct": null, + "u_acc": 0.007633587786259542, + "t_acc": 0.13740458015267176, + "punct_acc": null, + "threshold_t": 0.9022212624549866, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.531861928239269, + "t": 0.7659037327415151, + "punct": null, + "u_acc": 0.055441478439425054, + "t_acc": 0.3319644079397673, + "punct_acc": null, + "threshold_t": 0.11501549184322357, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.47727153205638445, + "t": 0.7574239723268655, + "punct": null, + "u_acc": 0.0485968514715948, + "t_acc": 0.33675564681724846, + "punct_acc": null, + "threshold_t": 0.14708136022090912, + "threshold_adj": 0.01 + } + }, + "km": { + "ersatz": { + "u": 0.18073505533089923, + "t": 0.8896610169491527, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.6694915254237288, + "punct_acc": null, + "threshold_t": 0.8915677666664124, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.4351406313443926, + "t": 0.7387317951235478, + "punct": null, + "u_acc": 0.03917525773195876, + "t_acc": 0.2824742268041237, + "punct_acc": null, + "threshold_t": 0.6720339059829712, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.3517531790220858, + "t": 0.7611886860007161, + "punct": null, + "u_acc": 0.015037593984962405, + "t_acc": 0.2932330827067669, + "punct_acc": null, + "threshold_t": 0.2595159113407135, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3157542330176159, + "t": 0.7435057423779229, + "punct": null, + "u_acc": 0.015037593984962405, + "t_acc": 0.2932330827067669, + "punct_acc": null, + "threshold_t": 0.33763387799263, + "threshold_adj": 0.01 + } + }, + "kn": { + "opus100": { + "u": 0.6348707651268374, + "t": 0.7434225312543896, + "punct": null, + "u_acc": 0.1415929203539823, + "t_acc": 0.2743362831858407, + "punct_acc": null, + "threshold_t": 0.21482868492603302, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.2750911384216013, + "t": 0.5918157852248761, + "punct": null, + "u_acc": 0.0034965034965034965, + "t_acc": 0.10839160839160839, + "punct_acc": null, + "threshold_t": 0.11105097830295563, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.435620204122818, + "t": 0.6386560991456096, + "punct": null, + "u_acc": 0.02097902097902098, + "t_acc": 0.15384615384615385, + "punct_acc": null, + "threshold_t": 0.11358221620321274, + "threshold_adj": 0.01 + } + }, + "ko": { + "opus100": { + "u": 0.4667530749310872, + "t": 0.7764328676271997, + "punct": null, + "u_acc": 0.018218623481781375, + "t_acc": 0.32793522267206476, + "punct_acc": null, + "threshold_t": 0.45421165227890015, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.31116489038690814, + "t": 0.8142933011597628, + "punct": null, + "u_acc": 0.006993006993006993, + "t_acc": 0.49475524475524474, + "punct_acc": null, + "threshold_t": 0.15982823073863983, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5331511388809557, + "t": 0.7723869064269064, + "punct": null, + "u_acc": 0.0748, + "t_acc": 0.3372, + "punct_acc": null, + "threshold_t": 0.23494939506053925, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4735188843292641, + "t": 0.7493594866231476, + "punct": null, + "u_acc": 0.0544, + "t_acc": 0.3004, + "punct_acc": null, + "threshold_t": 0.24137845635414124, + "threshold_adj": 0.01 + } + }, + "ku": { + "opus100": { + "u": 0.499597316042814, + "t": 0.7212305712305712, + "punct": null, + "u_acc": 0.13097713097713098, + "t_acc": 0.21621621621621623, + "punct_acc": null, + "threshold_t": 0.8362497687339783, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.20165021781688278, + "t": 0.5590724262012498, + "punct": null, + "u_acc": 0.0016, + "t_acc": 0.0744, + "punct_acc": null, + "threshold_t": 0.1657210886478424, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.19324266817177344, + "t": 0.5209897352015108, + "punct": null, + "u_acc": 0.002, + "t_acc": 0.076, + "punct_acc": null, + "threshold_t": 0.20123344659805298, + "threshold_adj": 0.01 + } + }, + "ky": { + "opus100": { + "u": 0.6321481462233678, + "t": 0.8514663643235072, + "punct": null, + "u_acc": 0.14047619047619048, + "t_acc": 0.5404761904761904, + "punct_acc": null, + "threshold_t": 0.4113311767578125, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.4620032793043174, + "t": 0.7651882975412388, + "punct": null, + "u_acc": 0.00980392156862745, + "t_acc": 0.3137254901960784, + "punct_acc": null, + "threshold_t": 0.1600102037191391, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.4241790707721124, + "t": 0.7391666068136657, + "punct": null, + "u_acc": 0.0196078431372549, + "t_acc": 0.28431372549019607, + "punct_acc": null, + "threshold_t": 0.24029898643493652, + "threshold_adj": 0.009999999999999998 + } + }, + "la": { + "ud": { + "u": 0.26829816551840013, + "t": 0.6739570858482845, + "punct": null, + "u_acc": 0.0038095238095238095, + "t_acc": 0.17333333333333334, + "punct_acc": null, + "threshold_t": 0.25147974491119385, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.41425241425241427, + "t": 0.41111111111111115, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.17923101782798767, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4263736263736264, + "t": 0.7111111111111111, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.31801173090934753, + "threshold_adj": 0.01 + } + }, + "lt": { + "ersatz": { + "u": 0.3224922723837521, + "t": 0.7818936174936175, + "punct": null, + "u_acc": 0.044, + "t_acc": 0.452, + "punct_acc": null, + "threshold_t": 0.3162079155445099, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.26019555928554106, + "t": 0.7319652096634021, + "punct": null, + "u_acc": 0.006048387096774193, + "t_acc": 0.3185483870967742, + "punct_acc": null, + "threshold_t": 0.5354177355766296, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.27311527978403727, + "t": 0.6995475585394656, + "punct": null, + "u_acc": 0.005847953216374269, + "t_acc": 0.24561403508771928, + "punct_acc": null, + "threshold_t": 0.5046713352203369, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.42336007504821344, + "t": 0.6728801960943726, + "punct": null, + "u_acc": 0.0148, + "t_acc": 0.1936, + "punct_acc": null, + "threshold_t": 0.0837005004286766, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4024592341237283, + "t": 0.7164537806611025, + "punct": null, + "u_acc": 0.0224, + "t_acc": 0.2804, + "punct_acc": null, + "threshold_t": 0.16507850587368011, + "threshold_adj": 0.01 + } + }, + "lv": { + "ersatz": { + "u": 0.3245231034767783, + "t": 0.7778767993449919, + "punct": null, + "u_acc": 0.025793650793650792, + "t_acc": 0.4087301587301587, + "punct_acc": null, + "threshold_t": 0.3321951925754547, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.22859438487044323, + "t": 0.7394798350173604, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.2738336713995943, + "punct_acc": null, + "threshold_t": 0.6188104748725891, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.31020146214449784, + "t": 0.7237814740964627, + "punct": null, + "u_acc": 0.014925373134328358, + "t_acc": 0.3283582089552239, + "punct_acc": null, + "threshold_t": 0.38707345724105835, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.4102671449449897, + "t": 0.6580736208453857, + "punct": null, + "u_acc": 0.0184, + "t_acc": 0.182, + "punct_acc": null, + "threshold_t": 0.0767885148525238, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3896923270485317, + "t": 0.7052260852224592, + "punct": null, + "u_acc": 0.0172, + "t_acc": 0.2432, + "punct_acc": null, + "threshold_t": 0.16581319272518158, + "threshold_adj": 0.01 + } + }, + "mg": { + "opus100": { + "u": 0.36701340514801895, + "t": 0.8007413334991329, + "punct": null, + "u_acc": 0.06072874493927125, + "t_acc": 0.46963562753036436, + "punct_acc": null, + "threshold_t": 0.41540151834487915, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.36350823567271073, + "t": 0.6375700052600636, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.1111111111111111, + "punct_acc": null, + "threshold_t": 0.10049842298030853, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3606226003883956, + "t": 0.6729597562930896, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.12962962962962962, + "punct_acc": null, + "threshold_t": 0.3035935163497925, + "threshold_adj": 0.01 + } + }, + "mk": { + "opus100": { + "u": 0.484172627155165, + "t": 0.803574603174603, + "punct": null, + "u_acc": 0.044, + "t_acc": 0.412, + "punct_acc": null, + "threshold_t": 0.7357097268104553, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.414640820723648, + "t": 0.698943082668965, + "punct": null, + "u_acc": 0.0092, + "t_acc": 0.2288, + "punct_acc": null, + "threshold_t": 0.12156397849321365, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.39764904369200443, + "t": 0.721722184046591, + "punct": null, + "u_acc": 0.0168, + "t_acc": 0.2876, + "punct_acc": null, + "threshold_t": 0.1695227473974228, + "threshold_adj": 0.01 + } + }, + "ml": { + "opus100": { + "u": 0.4910711807182493, + "t": 0.79727561037802, + "punct": null, + "u_acc": 0.03413654618473896, + "t_acc": 0.37751004016064255, + "punct_acc": null, + "threshold_t": 0.47262778878211975, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.22386957746758726, + "t": 0.5931349279797246, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.10846560846560846, + "punct_acc": null, + "threshold_t": 0.1525401473045349, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4139122825321271, + "t": 0.6622988339628606, + "punct": null, + "u_acc": 0.01455026455026455, + "t_acc": 0.2037037037037037, + "punct_acc": null, + "threshold_t": 0.12236393988132477, + "threshold_adj": 0.01 + } + }, + "mn": { + "opus100": { + "u": 0.6796200446409589, + "t": null, + "punct": null, + "u_acc": 0.11641221374045801, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.5322705303271447, + "t": 0.7923671690401103, + "punct": null, + "u_acc": 0.066, + "t_acc": 0.3972, + "punct_acc": null, + "threshold_t": 0.12924571335315704, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.5088994809626597, + "t": 0.7592578245185941, + "punct": null, + "u_acc": 0.0812, + "t_acc": 0.304, + "punct_acc": null, + "threshold_t": 0.1967243254184723, + "threshold_adj": 0.01 + }, + "nllb": { + "u": 0.42797490677603545, + "t": 0.7932679061679062, + "punct": null, + "u_acc": 0.03, + "t_acc": 0.3808, + "punct_acc": null, + "threshold_t": 0.34337902069091797, + "threshold_adj": 0.01 + } + }, + "mr": { + "opus100": { + "u": 0.5324991716701244, + "t": 0.8904665898617512, + "punct": null, + "u_acc": 0.02620967741935484, + "t_acc": 0.6532258064516129, + "punct_acc": null, + "threshold_t": 0.3082631230354309, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.4434815184815184, + "t": 0.8166666666666665, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.4166666666666667, + "punct_acc": null, + "threshold_t": 0.6291423439979553, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.19822621349479747, + "t": 0.5908763790810526, + "punct": null, + "u_acc": 0.002, + "t_acc": 0.0716, + "punct_acc": null, + "threshold_t": 0.18327264487743378, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4311443463716244, + "t": 0.6673460083958158, + "punct": null, + "u_acc": 0.0328, + "t_acc": 0.182, + "punct_acc": null, + "threshold_t": 0.17563383281230927, + "threshold_adj": 0.01 + } + }, + "ms": { + "opus100": { + "u": 0.4607167399740407, + "t": 0.8272449087263901, + "punct": null, + "u_acc": 0.02263374485596708, + "t_acc": 0.4835390946502058, + "punct_acc": null, + "threshold_t": 0.6307487487792969, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.41465960019460457, + "t": 0.6866286317823248, + "punct": null, + "u_acc": 0.01130952380952381, + "t_acc": 0.21666666666666667, + "punct_acc": null, + "threshold_t": 0.08745235204696655, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.40129124455208237, + "t": 0.7261702341383314, + "punct": null, + "u_acc": 0.01369047619047619, + "t_acc": 0.29642857142857143, + "punct_acc": null, + "threshold_t": 0.1473611444234848, + "threshold_adj": 0.009999999999999998 + } + }, + "mt": { + "opus100": { + "u": 0.21070878596949943, + "t": 0.6510943205930108, + "punct": null, + "u_acc": 0.006072874493927126, + "t_acc": 0.2125506072874494, + "punct_acc": null, + "threshold_t": 0.6171737313270569, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.19264840409882714, + "t": 0.6495542334408732, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.17692307692307693, + "punct_acc": null, + "threshold_t": 0.5803362131118774, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.2991583764863117, + "t": 0.496571804264112, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.07692307692307693, + "punct_acc": null, + "threshold_t": 0.0910859927535057, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.27881609935670426, + "t": 0.7102564102564103, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.15384615384615385, + "punct_acc": null, + "threshold_t": 0.7143274545669556, + "threshold_adj": 0.01 + } + }, + "my": { + "opus100": { + "u": 0.4325299598408417, + "t": 0.7785365172461947, + "punct": null, + "u_acc": 0.014112903225806451, + "t_acc": 0.3971774193548387, + "punct_acc": null, + "threshold_t": 0.46084892749786377, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5084464880867924, + "t": 0.9227200000000001, + "punct": null, + "u_acc": 0.0648, + "t_acc": 0.764, + "punct_acc": null, + "threshold_t": 0.50062495470047, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.43781066668403, + "t": 0.9019618559218557, + "punct": null, + "u_acc": 0.0432, + "t_acc": 0.7064, + "punct_acc": null, + "threshold_t": 0.6897393465042114, + "threshold_adj": 0.01 + } + }, + "ne": { + "opus100": { + "u": 0.6168429685948099, + "t": 0.7744368504410788, + "punct": null, + "u_acc": 0.10570824524312897, + "t_acc": 0.35517970401691334, + "punct_acc": null, + "threshold_t": 0.22984814643859863, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4870736305554971, + "t": 0.6984358501439246, + "punct": null, + "u_acc": 0.04247104247104247, + "t_acc": 0.2277992277992278, + "punct_acc": null, + "threshold_t": 0.10392989218235016, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.43150823932302096, + "t": 0.6653533139817585, + "punct": null, + "u_acc": 0.03474903474903475, + "t_acc": 0.20077220077220076, + "punct_acc": null, + "threshold_t": 0.12047186493873596, + "threshold_adj": 0.01 + } + }, + "nl": { + "opus100": { + "u": 0.49084901737457576, + "t": null, + "punct": null, + "u_acc": 0.02, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.3579348939508534, + "t": 0.7878132307662508, + "punct": null, + "u_acc": 0.06040268456375839, + "t_acc": 0.4429530201342282, + "punct_acc": null, + "threshold_t": 0.23123392462730408, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.47366408819593, + "t": 0.7379543162598156, + "punct": null, + "u_acc": 0.0312, + "t_acc": 0.3004, + "punct_acc": null, + "threshold_t": 0.08386995643377304, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4787092024730927, + "t": 0.758993913000006, + "punct": null, + "u_acc": 0.0404, + "t_acc": 0.3408, + "punct_acc": null, + "threshold_t": 0.12813983857631683, + "threshold_adj": 0.01 + } + }, + "no": { + "opus100": { + "u": 0.49438908224249517, + "t": 0.8492223502304147, + "punct": null, + "u_acc": 0.034274193548387094, + "t_acc": 0.5362903225806451, + "punct_acc": null, + "threshold_t": 0.6082062721252441, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.37338557047035575, + "t": 0.8301032186362763, + "punct": null, + "u_acc": 0.028925619834710745, + "t_acc": 0.5165289256198347, + "punct_acc": null, + "threshold_t": 0.25649911165237427, + "threshold_adj": 0.01 + } + }, + "pa": { + "opus100": { + "u": 0.6412439700361564, + "t": 0.7532944514501893, + "punct": null, + "u_acc": 0.1290983606557377, + "t_acc": 0.2848360655737705, + "punct_acc": null, + "threshold_t": 0.344348669052124, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.27104677980767655, + "t": 0.6471968929415738, + "punct": null, + "u_acc": 0.02127659574468085, + "t_acc": 0.06382978723404255, + "punct_acc": null, + "threshold_t": 0.29941871762275696, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4869029075412054, + "t": 0.714630305615748, + "punct": null, + "u_acc": 0.07446808510638298, + "t_acc": 0.2978723404255319, + "punct_acc": null, + "threshold_t": 0.1484103500843048, + "threshold_adj": 0.01 + } + }, + "pl": { + "ersatz": { + "u": 0.28192599916379696, + "t": 0.7260915186506938, + "punct": null, + "u_acc": 0.01195219123505976, + "t_acc": 0.3386454183266932, + "punct_acc": null, + "threshold_t": 0.31171688437461853, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.45799499879072403, + "t": 0.8046658986175115, + "punct": null, + "u_acc": 0.02217741935483871, + "t_acc": 0.41935483870967744, + "punct_acc": null, + "threshold_t": 0.6313232779502869, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.28846519859459563, + "t": 0.7212746037148078, + "punct": null, + "u_acc": 0.0036101083032490976, + "t_acc": 0.35379061371841153, + "punct_acc": null, + "threshold_t": 0.2345314919948578, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.4362744389991041, + "t": 0.6721767300948106, + "punct": null, + "u_acc": 0.018, + "t_acc": 0.1904, + "punct_acc": null, + "threshold_t": 0.062415074557065964, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4170220934000201, + "t": 0.721898220741369, + "punct": null, + "u_acc": 0.0276, + "t_acc": 0.2848, + "punct_acc": null, + "threshold_t": 0.1434328407049179, + "threshold_adj": 0.01 + } + }, + "ps": { + "ersatz": { + "u": 0.2277176666321959, + "t": 0.7474700916739903, + "punct": null, + "u_acc": 0.010263929618768328, + "t_acc": 0.31378299120234604, + "punct_acc": null, + "threshold_t": 0.33317115902900696, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.6580483238612413, + "t": 0.7458355428288612, + "punct": null, + "u_acc": 0.16481069042316257, + "t_acc": 0.2650334075723831, + "punct_acc": null, + "threshold_t": 0.2272968888282776, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.42326097450190087, + "t": 0.6891336217597479, + "punct": null, + "u_acc": 0.029197080291970802, + "t_acc": 0.20437956204379562, + "punct_acc": null, + "threshold_t": 0.18211594223976135, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3947743539622683, + "t": 0.6772799530393127, + "punct": null, + "u_acc": 0.021897810218978103, + "t_acc": 0.19708029197080293, + "punct_acc": null, + "threshold_t": 0.1736682653427124, + "threshold_adj": 0.01 + } + }, + "pt": { + "opus100": { + "u": 0.40391453214702705, + "t": 0.7929904890431205, + "punct": null, + "u_acc": 0.020242914979757085, + "t_acc": 0.402834008097166, + "punct_acc": null, + "threshold_t": 0.6658387184143066, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.26728702741914884, + "t": 0.7490984701734861, + "punct": null, + "u_acc": 0.0136986301369863, + "t_acc": 0.3835616438356164, + "punct_acc": null, + "threshold_t": 0.33273911476135254, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.45397801188889514, + "t": 0.7256734088134088, + "punct": null, + "u_acc": 0.0172, + "t_acc": 0.2612, + "punct_acc": null, + "threshold_t": 0.12356603145599365, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4394279199116224, + "t": 0.7444757942835342, + "punct": null, + "u_acc": 0.0256, + "t_acc": 0.3296, + "punct_acc": null, + "threshold_t": 0.15077932178974152, + "threshold_adj": 0.01 + } + }, + "ro": { + "ersatz": { + "u": 0.3020509743845155, + "t": 0.7901701693559278, + "punct": null, + "u_acc": 0.02, + "t_acc": 0.446, + "punct_acc": null, + "threshold_t": 0.37268954515457153, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.4990567767007847, + "t": 0.8061792528459194, + "punct": null, + "u_acc": 0.04242424242424243, + "t_acc": 0.4222222222222222, + "punct_acc": null, + "threshold_t": 0.6521342992782593, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.2359958787676145, + "t": 0.6680688890373524, + "punct": null, + "u_acc": 0.0076045627376425855, + "t_acc": 0.1634980988593156, + "punct_acc": null, + "threshold_t": 0.9467354416847229, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4217370172328705, + "t": 0.6973003174603175, + "punct": null, + "u_acc": 0.0132, + "t_acc": 0.2148, + "punct_acc": null, + "threshold_t": 0.12991705536842346, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.42136078759553913, + "t": 0.7306758866792411, + "punct": null, + "u_acc": 0.0264, + "t_acc": 0.2672, + "punct_acc": null, + "threshold_t": 0.22507262229919434, + "threshold_adj": 0.01 + } + }, + "ru": { + "ersatz": { + "u": 0.35069861990543616, + "t": 0.7816572382393067, + "punct": null, + "u_acc": 0.020161290322580645, + "t_acc": 0.41935483870967744, + "punct_acc": null, + "threshold_t": 0.3912647068500519, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.15404095932422732, + "t": null, + "punct": null, + "u_acc": 0.0020491803278688526, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.36778389142637785, + "t": 0.7311505926461939, + "punct": null, + "u_acc": 0.00909090909090909, + "t_acc": 0.3, + "punct_acc": null, + "threshold_t": 0.7315654158592224, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.42847586222761286, + "t": 0.7037917748917749, + "punct": null, + "u_acc": 0.0148, + "t_acc": 0.2212, + "punct_acc": null, + "threshold_t": 0.1478848159313202, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4024421799200235, + "t": 0.715346550075385, + "punct": null, + "u_acc": 0.022, + "t_acc": 0.28, + "punct_acc": null, + "threshold_t": 0.17024658620357513, + "threshold_adj": 0.01 + } + }, + "si": { + "opus100": { + "u": 0.47948013607144724, + "t": 0.8245135688684075, + "punct": null, + "u_acc": 0.024193548387096774, + "t_acc": 0.4536290322580645, + "punct_acc": null, + "threshold_t": 0.354104608297348, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.3742292415839828, + "t": 0.6650732127476314, + "punct": null, + "u_acc": 0.007751937984496124, + "t_acc": 0.18604651162790697, + "punct_acc": null, + "threshold_t": 0.16720549762248993, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.34693751672347195, + "t": 0.6351376638939833, + "punct": null, + "u_acc": 0.007751937984496124, + "t_acc": 0.17829457364341086, + "punct_acc": null, + "threshold_t": 0.17057611048221588, + "threshold_adj": 0.01 + } + }, + "sk": { + "opus100": { + "u": 0.4117589241942435, + "t": 0.8236585579979793, + "punct": null, + "u_acc": 0.010080645161290322, + "t_acc": 0.4838709677419355, + "punct_acc": null, + "threshold_t": 0.5317352414131165, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.33308108833505745, + "t": 0.7388684690571482, + "punct": null, + "u_acc": 0.0037735849056603774, + "t_acc": 0.2679245283018868, + "punct_acc": null, + "threshold_t": 0.34625244140625, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.4334436462001355, + "t": 0.700415509999061, + "punct": null, + "u_acc": 0.0152, + "t_acc": 0.2304, + "punct_acc": null, + "threshold_t": 0.10826493799686432, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4058088917597669, + "t": 0.7177116200632301, + "punct": null, + "u_acc": 0.0184, + "t_acc": 0.2796, + "punct_acc": null, + "threshold_t": 0.1887308806180954, + "threshold_adj": 0.01 + } + }, + "sl": { + "opus100": { + "u": 0.44168094769425664, + "t": 0.8315666962902966, + "punct": null, + "u_acc": 0.018072289156626505, + "t_acc": 0.5, + "punct_acc": null, + "threshold_t": 0.6474649906158447, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.24438953483963025, + "t": 0.6690964680099742, + "punct": null, + "u_acc": 0.003125, + "t_acc": 0.23125, + "punct_acc": null, + "threshold_t": 0.3525484502315521, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.40611816844164084, + "t": 0.707921559889386, + "punct": null, + "u_acc": 0.012, + "t_acc": 0.244, + "punct_acc": null, + "threshold_t": 0.12905976176261902, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3833267620241752, + "t": 0.7177929227910033, + "punct": null, + "u_acc": 0.0152, + "t_acc": 0.2608, + "punct_acc": null, + "threshold_t": 0.22060173749923706, + "threshold_adj": 0.01 + } + }, + "sq": { + "opus100": { + "u": 0.3758610489811289, + "t": 0.7863369467028003, + "punct": null, + "u_acc": 0.014227642276422764, + "t_acc": 0.3800813008130081, + "punct_acc": null, + "threshold_t": 0.6846444010734558, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.33223147733492564, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.38567672570564815, + "t": 0.6747178050707462, + "punct": null, + "u_acc": 0.01, + "t_acc": 0.1844, + "punct_acc": null, + "threshold_t": 0.12101588398218155, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3669933704215542, + "t": 0.7032151125600052, + "punct": null, + "u_acc": 0.0148, + "t_acc": 0.2064, + "punct_acc": null, + "threshold_t": 0.3015010952949524, + "threshold_adj": 0.01 + } + }, + "sr": { + "opus100": { + "u": 0.4093117201443331, + "t": 0.8171638936699177, + "punct": null, + "u_acc": 0.006024096385542169, + "t_acc": 0.44176706827309237, + "punct_acc": null, + "threshold_t": 0.6719990968704224, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.2117817488550673, + "t": 0.7246520146520147, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.2153846153846154, + "punct_acc": null, + "threshold_t": 0.6111785769462585, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.34784253057421866, + "t": 0.6612892254492945, + "punct": null, + "u_acc": 0.0044, + "t_acc": 0.1936, + "punct_acc": null, + "threshold_t": 0.1023489460349083, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.3220098081723597, + "t": 0.7044448745008711, + "punct": null, + "u_acc": 0.0068, + "t_acc": 0.262, + "punct_acc": null, + "threshold_t": 0.20772776007652283, + "threshold_adj": 0.01 + } + }, + "sv": { + "opus100": { + "u": 0.391631963284576, + "t": 0.8333095425676277, + "punct": null, + "u_acc": 0.010040160642570281, + "t_acc": 0.4939759036144578, + "punct_acc": null, + "threshold_t": 0.4864421784877777, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.28260339894972913, + "t": 0.7372752060940556, + "punct": null, + "u_acc": 0.015503875968992248, + "t_acc": 0.34108527131782945, + "punct_acc": null, + "threshold_t": 0.30563703179359436, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.37957465836547427, + "t": 0.7178665977273649, + "punct": null, + "u_acc": 0.0108, + "t_acc": 0.2616, + "punct_acc": null, + "threshold_t": 0.13750684261322021, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.36536887332714196, + "t": 0.7257535810845651, + "punct": null, + "u_acc": 0.014, + "t_acc": 0.2876, + "punct_acc": null, + "threshold_t": 0.18770626187324524, + "threshold_adj": 0.01 + } + }, + "ta": { + "ersatz": { + "u": 0.3261687284296153, + "t": 0.76828731251042, + "punct": null, + "u_acc": 0.0398406374501992, + "t_acc": 0.3705179282868526, + "punct_acc": null, + "threshold_t": 0.504767119884491, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.4943883817219157, + "t": 0.703314597136805, + "punct": null, + "u_acc": 0.07113821138211382, + "t_acc": 0.18902439024390244, + "punct_acc": null, + "threshold_t": 0.6789754629135132, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.3091085510732054, + "t": 0.7836766293288033, + "punct": null, + "u_acc": 0.03333333333333333, + "t_acc": 0.5, + "punct_acc": null, + "threshold_t": 0.32152900099754333, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.22053268017632344, + "t": 0.6242369782620311, + "punct": null, + "u_acc": 0.00498220640569395, + "t_acc": 0.1409252669039146, + "punct_acc": null, + "threshold_t": 0.1699867993593216, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.39984980504035617, + "t": 0.6772698346164957, + "punct": null, + "u_acc": 0.025622775800711744, + "t_acc": 0.19501779359430604, + "punct_acc": null, + "threshold_t": 0.22463808953762054, + "threshold_adj": 0.009999999999999998 + } + }, + "te": { + "opus100": { + "u": 0.6005484349361901, + "t": 0.8037483564854513, + "punct": null, + "u_acc": 0.11632653061224489, + "t_acc": 0.44693877551020406, + "punct_acc": null, + "threshold_t": 0.4596131443977356, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.28126646456807264, + "t": 0.6663913629170427, + "punct": null, + "u_acc": 0.004531722054380665, + "t_acc": 0.12084592145015106, + "punct_acc": null, + "threshold_t": 0.20314504206180573, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.43739138071531086, + "t": 0.6827358558547469, + "punct": null, + "u_acc": 0.03172205438066465, + "t_acc": 0.2190332326283988, + "punct_acc": null, + "threshold_t": 0.16533248126506805, + "threshold_adj": 0.009999999999999998 + } + }, + "tg": { + "opus100": { + "u": 0.2661203799884946, + "t": 0.699313004894153, + "punct": null, + "u_acc": 0.008032128514056224, + "t_acc": 0.2429718875502008, + "punct_acc": null, + "threshold_t": 0.7639127373695374, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.2560995365381075, + "t": 0.7047305764411028, + "punct": null, + "u_acc": 0.013157894736842105, + "t_acc": 0.18421052631578946, + "punct_acc": null, + "threshold_t": 0.27024155855178833, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.23743669786870808, + "t": 0.6710196966775913, + "punct": null, + "u_acc": 0.013157894736842105, + "t_acc": 0.19736842105263158, + "punct_acc": null, + "threshold_t": 0.3450261652469635, + "threshold_adj": 0.01 + } + }, + "th": { + "opus100": { + "u": 0.7157940745463026, + "t": 0.762982202982203, + "punct": null, + "u_acc": 0.1696969696969697, + "t_acc": 0.28888888888888886, + "punct_acc": null, + "threshold_t": 0.30312761664390564, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.5976738372738373, + "t": null, + "punct": null, + "u_acc": 0.06, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4938166878003025, + "t": 0.647736022430559, + "punct": null, + "u_acc": 0.0472, + "t_acc": 0.1736, + "punct_acc": null, + "threshold_t": 0.192801371216774, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4927442230018878, + "t": 0.6341434908275159, + "punct": null, + "u_acc": 0.0472, + "t_acc": 0.1684, + "punct_acc": null, + "threshold_t": 0.192801371216774, + "threshold_adj": 0.01 + } + }, + "tr": { + "ersatz": { + "u": 0.33630156737378325, + "t": 0.8019537052781733, + "punct": null, + "u_acc": 0.018617021276595744, + "t_acc": 0.43351063829787234, + "punct_acc": null, + "threshold_t": 0.45274558663368225, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.5031222276057675, + "t": 0.8263800526958422, + "punct": null, + "u_acc": 0.02631578947368421, + "t_acc": 0.4797570850202429, + "punct_acc": null, + "threshold_t": 0.6764249801635742, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.45741940858561236, + "t": 0.8743589138134592, + "punct": null, + "u_acc": 0.02181818181818182, + "t_acc": 0.6290909090909091, + "punct_acc": null, + "threshold_t": 0.5112825632095337, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.46936960001702627, + "t": 0.7506185347985348, + "punct": null, + "u_acc": 0.034, + "t_acc": 0.3056, + "punct_acc": null, + "threshold_t": 0.17791053652763367, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4435651259324174, + "t": 0.7491823487623488, + "punct": null, + "u_acc": 0.034, + "t_acc": 0.3116, + "punct_acc": null, + "threshold_t": 0.2015119343996048, + "threshold_adj": 0.01 + } + }, + "uk": { + "opus100": { + "u": 0.48034842041748926, + "t": 0.8028638362975712, + "punct": null, + "u_acc": 0.024096385542168676, + "t_acc": 0.42570281124497994, + "punct_acc": null, + "threshold_t": 0.6853594779968262, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.2717582684712486, + "t": 0.6800528588475017, + "punct": null, + "u_acc": 0.026785714285714284, + "t_acc": 0.17857142857142858, + "punct_acc": null, + "threshold_t": 0.7744089365005493, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.42344226297750964, + "t": 0.6919378203083466, + "punct": null, + "u_acc": 0.0128, + "t_acc": 0.2224, + "punct_acc": null, + "threshold_t": 0.1061800867319107, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.39431142325410035, + "t": 0.6967913008186645, + "punct": null, + "u_acc": 0.0172, + "t_acc": 0.266, + "punct_acc": null, + "threshold_t": 0.1314598023891449, + "threshold_adj": 0.01 + } + }, + "ur": { + "opus100": { + "u": 0.28093065342876805, + "t": 0.6099942333450417, + "punct": null, + "u_acc": 0.01694915254237288, + "t_acc": 0.13347457627118645, + "punct_acc": null, + "threshold_t": 0.4465469717979431, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.35549654235773454, + "t": 0.8527530368542698, + "punct": null, + "u_acc": 0.05223880597014925, + "t_acc": 0.6044776119402985, + "punct_acc": null, + "threshold_t": 0.2991543710231781, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4921800929257538, + "t": 0.6986940004154804, + "punct": null, + "u_acc": 0.047790339157245634, + "t_acc": 0.25488180883864336, + "punct_acc": null, + "threshold_t": 0.1319136768579483, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.4440622795042769, + "t": 0.684054079320785, + "punct": null, + "u_acc": 0.040596094552929084, + "t_acc": 0.24665981500513876, + "punct_acc": null, + "threshold_t": 0.14746062457561493, + "threshold_adj": 0.01 + } + }, + "uz": { + "opus100": { + "u": 0.2796698719471827, + "t": 0.6929714381502464, + "punct": null, + "u_acc": 0.0163265306122449, + "t_acc": 0.24285714285714285, + "punct_acc": null, + "threshold_t": 0.8502880930900574, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.541939138358029, + "t": 0.759449452329199, + "punct": null, + "u_acc": 0.06329113924050633, + "t_acc": 0.3291139240506329, + "punct_acc": null, + "threshold_t": 0.09751009941101074, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.47693642749704207, + "t": 0.7447064145338825, + "punct": null, + "u_acc": 0.049578059071729956, + "t_acc": 0.2974683544303797, + "punct_acc": null, + "threshold_t": 0.16709184646606445, + "threshold_adj": 0.01 + } + }, + "vi": { + "opus100": { + "u": 0.4455856017661054, + "t": 0.8821444901691815, + "punct": null, + "u_acc": 0.03292181069958848, + "t_acc": 0.6172839506172839, + "punct_acc": null, + "threshold_t": 0.31977379322052, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.2896654299047212, + "t": 0.8049054834054834, + "punct": null, + "u_acc": 0.01, + "t_acc": 0.42, + "punct_acc": null, + "threshold_t": 0.22170884907245636, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.37553724765947555, + "t": 0.6594906416376881, + "punct": null, + "u_acc": 0.0076, + "t_acc": 0.1844, + "punct_acc": null, + "threshold_t": 0.06700824946165085, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.37280830274272203, + "t": 0.7165594136029529, + "punct": null, + "u_acc": 0.0204, + "t_acc": 0.2668, + "punct_acc": null, + "threshold_t": 0.13336573541164398, + "threshold_adj": 0.01 + } + }, + "xh": { + "opus100": { + "u": 0.3102777886508818, + "t": 0.6765196536980769, + "punct": null, + "u_acc": 0.004149377593360996, + "t_acc": 0.1991701244813278, + "punct_acc": null, + "threshold_t": 0.6137423515319824, + "threshold_adj": 0.01 + } + }, + "yi": { + "opus100": { + "u": 0.681648804549316, + "t": 0.7351649047573813, + "punct": null, + "u_acc": 0.19122257053291536, + "t_acc": 0.31347962382445144, + "punct_acc": null, + "threshold_t": 0.2753221392631531, + "threshold_adj": 0.01 + } + }, + "yo": { + "opus100": { + "u": 0.4203568766555455, + "t": null, + "punct": null, + "u_acc": 0.02303754266211604, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.11805303332445445, + "t": null, + "punct": null, + "u_acc": 0.0125, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "nllb": { + "u": 0.20478785575342864, + "t": 0.5977748151096539, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.1612, + "punct_acc": null, + "threshold_t": 0.6112736463546753, + "threshold_adj": 0.01 + } + }, + "zh": { + "ersatz": { + "u": 0.48698955568291774, + "t": 0.7160172586152126, + "punct": null, + "u_acc": 0.086, + "t_acc": 0.33, + "punct_acc": null, + "threshold_t": 0.09756885468959808, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.5445174264388579, + "t": 0.6240166709497865, + "punct": null, + "u_acc": 0.07847082494969819, + "t_acc": 0.1488933601609658, + "punct_acc": null, + "threshold_t": 0.021776193752884865, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.5359426730345916, + "t": 0.8055368631368632, + "punct": null, + "u_acc": 0.072, + "t_acc": 0.48, + "punct_acc": null, + "threshold_t": 0.16663222014904022, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4474255135894836, + "t": 0.4466036385057679, + "punct": null, + "u_acc": 0.03060217176702863, + "t_acc": 0.03060217176702863, + "punct_acc": null, + "threshold_t": 0.009832530282437801, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.43075129917489535, + "t": 0.45429967370079094, + "punct": null, + "u_acc": 0.025172754195459033, + "t_acc": 0.032082922013820334, + "punct_acc": null, + "threshold_t": 0.021062834188342094, + "threshold_adj": 0.009999999999999998 + } + }, + "zu": { + "opus100": { + "u": 0.5742575352093462, + "t": 0.7800959842626509, + "punct": null, + "u_acc": 0.09829059829059829, + "t_acc": 0.33760683760683763, + "punct_acc": null, + "threshold_t": 0.6318753361701965, + "threshold_adj": 0.01 + } + }, + "tr-de": {}, + "es-en": {}, + "vi-en": {}, + "en-de": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/sat-3l.json b/wtpsplit/evaluation/evaluation_results/short/sat-3l.json new file mode 100644 index 00000000..9f2e8b48 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/sat-3l.json @@ -0,0 +1,3346 @@ +{ + "af": { + "opus100": { + "u": 0.863229699593336, + "t": null, + "punct": null, + "u_acc": 0.5516528925619835, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9776729559748428, + "t": null, + "punct": null, + "u_acc": 0.9150943396226415, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6880179820179819, + "t": null, + "punct": null, + "u_acc": 0.2, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.734940170940171, + "t": null, + "punct": null, + "u_acc": 0.2676923076923077, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + } + }, + "am": { + "opus100": { + "u": 0.6864105909687617, + "t": null, + "punct": null, + "u_acc": 0.178714859437751, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6405263573232323, + "t": null, + "punct": null, + "u_acc": 0.1640625, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.6503737148268398, + "t": null, + "punct": null, + "u_acc": 0.1640625, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + } + }, + "ar": { + "ersatz": { + "u": 0.8972517730496454, + "t": null, + "punct": null, + "u_acc": 0.6382978723404256, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.7991623057888118, + "t": null, + "punct": null, + "u_acc": 0.40160642570281124, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.8733706816059756, + "t": null, + "punct": null, + "u_acc": 0.6176470588235294, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.6245638252081596, + "t": null, + "punct": null, + "u_acc": 0.1352, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6600427482459061, + "t": null, + "punct": null, + "u_acc": 0.1916, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "az": { + "opus100": { + "u": 0.7792317900751635, + "t": null, + "punct": null, + "u_acc": 0.26506024096385544, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7661532944334362, + "t": null, + "punct": null, + "u_acc": 0.33865248226950356, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7550724065794987, + "t": null, + "punct": null, + "u_acc": 0.3049645390070922, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "be": { + "opus100": { + "u": 0.8168553139075168, + "t": null, + "punct": null, + "u_acc": 0.47046843177189407, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9192900862045843, + "t": null, + "punct": null, + "u_acc": 0.7360594795539034, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.638259878529355, + "t": null, + "punct": null, + "u_acc": 0.13887086307592472, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.7343542786437011, + "t": null, + "punct": null, + "u_acc": 0.26865671641791045, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + } + }, + "bg": { + "opus100": { + "u": 0.9379807233514648, + "t": null, + "punct": null, + "u_acc": 0.7555110220440882, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.973715651135006, + "t": null, + "punct": null, + "u_acc": 0.899641577060932, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.6658156894086306, + "t": null, + "punct": null, + "u_acc": 0.1716, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7486457655754207, + "t": null, + "punct": null, + "u_acc": 0.31, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "bn": { + "opus100": { + "u": 0.861070697690416, + "t": null, + "punct": null, + "u_acc": 0.5513078470824949, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9714285714285715, + "t": null, + "punct": null, + "u_acc": 0.8571428571428571, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.46889861834997576, + "t": null, + "punct": null, + "u_acc": 0.03769230769230769, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.6637979035134906, + "t": null, + "punct": null, + "u_acc": 0.20384615384615384, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + } + }, + "ca": { + "opus100": { + "u": 0.9091519624630232, + "t": null, + "punct": null, + "u_acc": 0.6977687626774848, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ud": { + "u": 0.9856524427953, + "t": null, + "punct": null, + "u_acc": 0.948051948051948, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6316930785554316, + "t": null, + "punct": null, + "u_acc": 0.1252, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7300369822334528, + "t": null, + "punct": null, + "u_acc": 0.2596, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ceb": { + "ud": { + "u": 0.9872340425531916, + "t": null, + "punct": null, + "u_acc": 0.9361702127659575, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999988 + }, + "ted2020-corrupted-asr": { + "u": 0.5017573696145126, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.6435374149659864, + "t": null, + "punct": null, + "u_acc": 0.14285714285714285, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "nllb": { + "u": 0.8341259052059052, + "t": null, + "punct": null, + "u_acc": 0.4756, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "cs": { + "ersatz": { + "u": 0.9465645208700764, + "t": null, + "punct": null, + "u_acc": 0.8148148148148148, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9137674091942385, + "t": null, + "punct": null, + "u_acc": 0.6829268292682927, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9447708552400982, + "t": null, + "punct": null, + "u_acc": 0.8154574132492114, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6460104265325319, + "t": null, + "punct": null, + "u_acc": 0.1516, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7313816223776225, + "t": null, + "punct": null, + "u_acc": 0.2584, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "cy": { + "opus100": { + "u": 0.8327805503569696, + "t": null, + "punct": null, + "u_acc": 0.4759825327510917, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.988515406162465, + "t": null, + "punct": null, + "u_acc": 0.9537815126050421, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + } + }, + "da": { + "opus100": { + "u": 0.9301718219056928, + "t": null, + "punct": null, + "u_acc": 0.7217741935483871, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9397838568051332, + "t": null, + "punct": null, + "u_acc": 0.7730496453900709, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6696680144038967, + "t": null, + "punct": null, + "u_acc": 0.1884, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7369681562881563, + "t": null, + "punct": null, + "u_acc": 0.2668, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "de": { + "ersatz": { + "u": 0.9550868005043157, + "t": null, + "punct": null, + "u_acc": 0.8207739307535642, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "opus100": { + "u": 0.8582764047953921, + "t": null, + "punct": null, + "u_acc": 0.5147679324894515, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9715846994535519, + "t": null, + "punct": null, + "u_acc": 0.8975409836065574, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6870578523437347, + "t": null, + "punct": null, + "u_acc": 0.2108, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7344572496469048, + "t": null, + "punct": null, + "u_acc": 0.2772, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "el": { + "opus100": { + "u": 0.9325487542355012, + "t": null, + "punct": null, + "u_acc": 0.7389558232931727, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9824561403508771, + "t": null, + "punct": null, + "u_acc": 0.9473684210526315, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6432250462918575, + "t": null, + "punct": null, + "u_acc": 0.132, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7326416147904383, + "t": null, + "punct": null, + "u_acc": 0.2712, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "en": { + "ersatz": { + "u": 0.9700766167378656, + "t": null, + "punct": null, + "u_acc": 0.8920041536863966, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9377208141321044, + "t": null, + "punct": null, + "u_acc": 0.7580645161290323, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9484995944849959, + "t": null, + "punct": null, + "u_acc": 0.8211678832116789, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.6498699004155071, + "t": null, + "punct": null, + "u_acc": 0.1612, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7216622094572094, + "t": null, + "punct": null, + "u_acc": 0.2528, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "eo": { + "opus100": { + "u": 0.9342645929339478, + "t": null, + "punct": null, + "u_acc": 0.7419354838709677, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.6482359050028224, + "t": null, + "punct": null, + "u_acc": 0.15100250626566417, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.7217804160473333, + "t": null, + "punct": null, + "u_acc": 0.25125313283208023, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + } + }, + "es": { + "ersatz": { + "u": 0.9854345393509885, + "t": null, + "punct": null, + "u_acc": 0.9425587467362925, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.9290566158987211, + "t": null, + "punct": null, + "u_acc": 0.7530364372469636, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9716125734730385, + "t": null, + "punct": null, + "u_acc": 0.9, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6437394954422943, + "t": null, + "punct": null, + "u_acc": 0.1392, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7354231830423319, + "t": null, + "punct": null, + "u_acc": 0.2676, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "et": { + "ersatz": { + "u": 0.9749433106575963, + "t": null, + "punct": null, + "u_acc": 0.9047619047619048, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9000473419000387, + "t": null, + "punct": null, + "u_acc": 0.6720647773279352, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9471651482845515, + "t": null, + "punct": null, + "u_acc": 0.8383084577114428, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6625343859874953, + "t": null, + "punct": null, + "u_acc": 0.17, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7435311154736736, + "t": null, + "punct": null, + "u_acc": 0.288, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "eu": { + "opus100": { + "u": 0.9038731993840352, + "t": null, + "punct": null, + "u_acc": 0.6659919028340081, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.973079365079365, + "t": null, + "punct": null, + "u_acc": 0.9022222222222223, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.5934480021173569, + "t": null, + "punct": null, + "u_acc": 0.09274193548387097, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7259788859587247, + "t": null, + "punct": null, + "u_acc": 0.2567204301075269, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "fa": { + "opus100": { + "u": 0.7543073720652408, + "t": null, + "punct": null, + "u_acc": 0.342685370741483, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9835164835164835, + "t": null, + "punct": null, + "u_acc": 0.9285714285714286, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.7045129884680349, + "t": null, + "punct": null, + "u_acc": 0.2416, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.715731425586472, + "t": null, + "punct": null, + "u_acc": 0.2628, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "fi": { + "ersatz": { + "u": 0.9771733944078633, + "t": null, + "punct": null, + "u_acc": 0.905811623246493, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9425217974513749, + "t": null, + "punct": null, + "u_acc": 0.7706237424547284, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9582842415316642, + "t": null, + "punct": null, + "u_acc": 0.8479381443298969, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6499008109537521, + "t": null, + "punct": null, + "u_acc": 0.1516, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7300908453637865, + "t": null, + "punct": null, + "u_acc": 0.2584, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "fr": { + "ersatz": { + "u": 0.9750402576489532, + "t": null, + "punct": null, + "u_acc": 0.8961352657004831, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.9168131620464278, + "t": null, + "punct": null, + "u_acc": 0.6713995943204868, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ud": { + "u": 0.9717948717948718, + "t": null, + "punct": null, + "u_acc": 0.8846153846153846, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6490696598826011, + "t": null, + "punct": null, + "u_acc": 0.1552, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7367693062493063, + "t": null, + "punct": null, + "u_acc": 0.2776, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "fy": { + "opus100": { + "u": 0.8260924970846708, + "t": null, + "punct": null, + "u_acc": 0.49141630901287553, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + } + }, + "ga": { + "opus100": { + "u": 0.8966877880184332, + "t": null, + "punct": null, + "u_acc": 0.6794354838709677, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9169721117089539, + "t": null, + "punct": null, + "u_acc": 0.7192982456140351, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.4623256373256373, + "t": null, + "punct": null, + "u_acc": 0.08333333333333333, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.7011363636363637, + "t": null, + "punct": null, + "u_acc": 0.25, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + } + }, + "gd": { + "opus100": { + "u": 0.8930630686186242, + "t": null, + "punct": null, + "u_acc": 0.6518518518518519, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.8088235294117647, + "t": null, + "punct": null, + "u_acc": 0.45588235294117646, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + } + }, + "gl": { + "opus100": { + "u": 0.9098438300051204, + "t": null, + "punct": null, + "u_acc": 0.6633064516129032, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9767142857142858, + "t": null, + "punct": null, + "u_acc": 0.94, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.6389405556665557, + "t": null, + "punct": null, + "u_acc": 0.1368, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7346619280719281, + "t": null, + "punct": null, + "u_acc": 0.2612, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "gu": { + "ersatz": { + "u": 0.9292310052152571, + "t": null, + "punct": null, + "u_acc": 0.7795275590551181, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.8028102062080872, + "t": null, + "punct": null, + "u_acc": 0.40165631469979296, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.543831411522384, + "t": null, + "punct": null, + "u_acc": 0.08796764408493428, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.6496186566206789, + "t": null, + "punct": null, + "u_acc": 0.1936299292214358, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + } + }, + "ha": { + "opus100": { + "u": 0.8500264957264958, + "t": null, + "punct": null, + "u_acc": 0.44, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.562962962962963, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.611111111111111, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + } + }, + "he": { + "opus100": { + "u": 0.90008588605783, + "t": null, + "punct": null, + "u_acc": 0.6352705410821643, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9714285714285714, + "t": null, + "punct": null, + "u_acc": 0.8775510204081632, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6071107343463434, + "t": null, + "punct": null, + "u_acc": 0.1236, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6673864367314831, + "t": null, + "punct": null, + "u_acc": 0.2088, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "hi": { + "ersatz": { + "u": 0.9453363567649282, + "t": null, + "punct": null, + "u_acc": 0.7952380952380952, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.7629472060338105, + "t": null, + "punct": null, + "u_acc": 0.39068825910931176, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9630358556724352, + "t": null, + "punct": null, + "u_acc": 0.8669833729216152, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.60413746172407, + "t": null, + "punct": null, + "u_acc": 0.1416, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6919090338900865, + "t": null, + "punct": null, + "u_acc": 0.2432, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "hu": { + "opus100": { + "u": 0.9323924731182797, + "t": null, + "punct": null, + "u_acc": 0.7258064516129032, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9640035559678416, + "t": null, + "punct": null, + "u_acc": 0.875, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6299975377692483, + "t": null, + "punct": null, + "u_acc": 0.1236, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7390087607817021, + "t": null, + "punct": null, + "u_acc": 0.282, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "hy": { + "opus100": { + "u": 0.8919643726306599, + "t": null, + "punct": null, + "u_acc": 0.6093394077448747, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9827327327327329, + "t": null, + "punct": null, + "u_acc": 0.9256756756756757, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.6471330751910628, + "t": null, + "punct": null, + "u_acc": 0.1572, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.720166813646124, + "t": null, + "punct": null, + "u_acc": 0.256, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "id": { + "opus100": { + "u": 0.905425448868072, + "t": null, + "punct": null, + "u_acc": 0.6495901639344263, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9853333333333334, + "t": null, + "punct": null, + "u_acc": 0.932, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6252756909756909, + "t": null, + "punct": null, + "u_acc": 0.1332, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7287052658452658, + "t": null, + "punct": null, + "u_acc": 0.2696, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ig": { + "opus100": { + "u": 0.8804900601017106, + "t": null, + "punct": null, + "u_acc": 0.5995145631067961, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.5015279592202668, + "t": null, + "punct": null, + "u_acc": 0.11538461538461539, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.7463369963369964, + "t": null, + "punct": null, + "u_acc": 0.23076923076923078, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + } + }, + "is": { + "opus100": { + "u": 0.9292900258695028, + "t": null, + "punct": null, + "u_acc": 0.704225352112676, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.8598508754211559, + "t": null, + "punct": null, + "u_acc": 0.5950349107835532, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.6673959204493555, + "t": null, + "punct": null, + "u_acc": 0.17048346055979643, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7475117616338991, + "t": null, + "punct": null, + "u_acc": 0.30279898218829515, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "it": { + "opus100": { + "u": 0.906705024638782, + "t": null, + "punct": null, + "u_acc": 0.6693548387096774, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9802777777777778, + "t": null, + "punct": null, + "u_acc": 0.925, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.6265294342355272, + "t": null, + "punct": null, + "u_acc": 0.126, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.748196835678941, + "t": null, + "punct": null, + "u_acc": 0.3172, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ja": { + "ersatz": { + "u": 0.870124651467935, + "t": null, + "punct": null, + "u_acc": 0.5932835820895522, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.879320746188216, + "t": null, + "punct": null, + "u_acc": 0.6164658634538153, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9399859943977592, + "t": null, + "punct": null, + "u_acc": 0.7426470588235294, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.9209384704184704, + "t": null, + "punct": null, + "u_acc": 0.738, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.9111180952380954, + "t": null, + "punct": null, + "u_acc": 0.7164, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "jv": { + "ud": { + "u": 0.984, + "t": null, + "punct": null, + "u_acc": 0.936, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "nllb": { + "u": 0.8229475324675324, + "t": null, + "punct": null, + "u_acc": 0.4524, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ka": { + "opus100": { + "u": 0.662182029082029, + "t": null, + "punct": null, + "u_acc": 0.122, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.5975965237514463, + "t": null, + "punct": null, + "u_acc": 0.1056, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6518463616603555, + "t": null, + "punct": null, + "u_acc": 0.1796, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "kk": { + "ersatz": { + "u": 0.9783999999999999, + "t": null, + "punct": null, + "u_acc": 0.924, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.8465695920241375, + "t": null, + "punct": null, + "u_acc": 0.512396694214876, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9616493769165525, + "t": null, + "punct": null, + "u_acc": 0.8664122137404581, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7393408933450002, + "t": null, + "punct": null, + "u_acc": 0.2950034223134839, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7601528226664113, + "t": null, + "punct": null, + "u_acc": 0.31143052703627655, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "km": { + "ersatz": { + "u": 0.9032928088860293, + "t": null, + "punct": null, + "u_acc": 0.6830508474576271, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.7233580279972033, + "t": null, + "punct": null, + "u_acc": 0.24329896907216494, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.8052929943907386, + "t": null, + "punct": null, + "u_acc": 0.43609022556390975, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.8281119465329991, + "t": null, + "punct": null, + "u_acc": 0.5112781954887218, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + } + }, + "kn": { + "opus100": { + "u": 0.8026625292112017, + "t": null, + "punct": null, + "u_acc": 0.3805309734513274, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.5344024138106015, + "t": null, + "punct": null, + "u_acc": 0.038461538461538464, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.6486260947983435, + "t": null, + "punct": null, + "u_acc": 0.15384615384615385, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + } + }, + "ko": { + "opus100": { + "u": 0.8068279673542832, + "t": null, + "punct": null, + "u_acc": 0.39878542510121456, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9873543123543124, + "t": null, + "punct": null, + "u_acc": 0.9440559440559441, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.7985828226428227, + "t": null, + "punct": null, + "u_acc": 0.3872, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7657896081696082, + "t": null, + "punct": null, + "u_acc": 0.3428, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ku": { + "opus100": { + "u": 0.881990381990382, + "t": null, + "punct": null, + "u_acc": 0.6112266112266113, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.5283324326149713, + "t": null, + "punct": null, + "u_acc": 0.0664, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.5873716816047158, + "t": null, + "punct": null, + "u_acc": 0.1268, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ky": { + "opus100": { + "u": 0.8914644746787603, + "t": null, + "punct": null, + "u_acc": 0.65, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7325396825396825, + "t": null, + "punct": null, + "u_acc": 0.2549019607843137, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.7466697790227204, + "t": null, + "punct": null, + "u_acc": 0.3137254901960784, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + } + }, + "la": { + "ud": { + "u": 0.8599455782312925, + "t": null, + "punct": null, + "u_acc": 0.5695238095238095, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6793650793650795, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.611111111111111, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + } + }, + "lt": { + "ersatz": { + "u": 0.9729333333333334, + "t": null, + "punct": null, + "u_acc": 0.892, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.8817049806613374, + "t": null, + "punct": null, + "u_acc": 0.6189516129032258, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9750487329434698, + "t": null, + "punct": null, + "u_acc": 0.9064327485380117, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6220421526609076, + "t": null, + "punct": null, + "u_acc": 0.1188, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7362860916860917, + "t": null, + "punct": null, + "u_acc": 0.2984, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "lv": { + "ersatz": { + "u": 0.9796992029134887, + "t": null, + "punct": null, + "u_acc": 0.9186507936507936, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9010449200363818, + "t": null, + "punct": null, + "u_acc": 0.6612576064908722, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ud": { + "u": 0.9575824580799706, + "t": null, + "punct": null, + "u_acc": 0.8557213930348259, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6313209032797268, + "t": null, + "punct": null, + "u_acc": 0.1308, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7248878876678877, + "t": null, + "punct": null, + "u_acc": 0.2532, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "mg": { + "opus100": { + "u": 0.9037439169018117, + "t": null, + "punct": null, + "u_acc": 0.6720647773279352, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.5502688463799577, + "t": null, + "punct": null, + "u_acc": 0.09259259259259259, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.02499999999999999 + }, + "ted2020-corrupted-social-media": { + "u": 0.7093768371546149, + "t": null, + "punct": null, + "u_acc": 0.24074074074074073, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.02499999999999999 + } + }, + "mk": { + "opus100": { + "u": 0.9351079365079366, + "t": null, + "punct": null, + "u_acc": 0.75, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6455866259344519, + "t": null, + "punct": null, + "u_acc": 0.1524, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7506023391101652, + "t": null, + "punct": null, + "u_acc": 0.308, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ml": { + "opus100": { + "u": 0.8511254252218108, + "t": null, + "punct": null, + "u_acc": 0.4759036144578313, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.5618589591309381, + "t": null, + "punct": null, + "u_acc": 0.07936507936507936, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6802429052429052, + "t": null, + "punct": null, + "u_acc": 0.2037037037037037, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "mn": { + "opus100": { + "u": 0.9527262813522355, + "t": null, + "punct": null, + "u_acc": 0.8291984732824428, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.8182713597513598, + "t": null, + "punct": null, + "u_acc": 0.4516, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7829923809523811, + "t": null, + "punct": null, + "u_acc": 0.3672, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "nllb": { + "u": 0.9189271335200747, + "t": null, + "punct": null, + "u_acc": 0.7108, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "mr": { + "opus100": { + "u": 0.928849846390169, + "t": null, + "punct": null, + "u_acc": 0.7520161290322581, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9138888888888889, + "t": null, + "punct": null, + "u_acc": 0.75, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.5455026894502127, + "t": null, + "punct": null, + "u_acc": 0.09, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6811522732822732, + "t": null, + "punct": null, + "u_acc": 0.2176, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ms": { + "opus100": { + "u": 0.911692468482592, + "t": null, + "punct": null, + "u_acc": 0.6604938271604939, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.6268409842712697, + "t": null, + "punct": null, + "u_acc": 0.14642857142857144, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.7324338089159518, + "t": null, + "punct": null, + "u_acc": 0.2761904761904762, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + } + }, + "mt": { + "opus100": { + "u": 0.7685445123906036, + "t": null, + "punct": null, + "u_acc": 0.41295546558704455, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9204151404151405, + "t": null, + "punct": null, + "u_acc": 0.7615384615384615, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.49276556776556774, + "t": null, + "punct": null, + "u_acc": 0.038461538461538464, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-social-media": { + "u": 0.6978021978021978, + "t": null, + "punct": null, + "u_acc": 0.19230769230769232, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + } + }, + "my": { + "opus100": { + "u": 0.7817156298003073, + "t": null, + "punct": null, + "u_acc": 0.4173387096774194, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.9138184704184705, + "t": null, + "punct": null, + "u_acc": 0.686, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.8934908513708513, + "t": null, + "punct": null, + "u_acc": 0.6344, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ne": { + "opus100": { + "u": 0.79822541799286, + "t": null, + "punct": null, + "u_acc": 0.386892177589852, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.667786608913132, + "t": null, + "punct": null, + "u_acc": 0.19884169884169883, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.6762033027858884, + "t": null, + "punct": null, + "u_acc": 0.21042471042471042, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + } + }, + "nl": { + "opus100": { + "u": 0.9240603174603175, + "t": null, + "punct": null, + "u_acc": 0.686, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9491211249600511, + "t": null, + "punct": null, + "u_acc": 0.8590604026845637, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.7150776899571017, + "t": null, + "punct": null, + "u_acc": 0.236, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.747432265956266, + "t": null, + "punct": null, + "u_acc": 0.2848, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "no": { + "opus100": { + "u": 0.950624039938556, + "t": null, + "punct": null, + "u_acc": 0.7943548387096774, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.984366391184573, + "t": null, + "punct": null, + "u_acc": 0.9400826446280992, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + } + }, + "pa": { + "opus100": { + "u": 0.7813709741988429, + "t": null, + "punct": null, + "u_acc": 0.32581967213114754, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.6438000828958275, + "t": null, + "punct": null, + "u_acc": 0.1595744680851064, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.02499999999999999 + }, + "ted2020-corrupted-social-media": { + "u": 0.7459768659236746, + "t": null, + "punct": null, + "u_acc": 0.32978723404255317, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.02499999999999999 + } + }, + "pl": { + "ersatz": { + "u": 0.9465376588882566, + "t": null, + "punct": null, + "u_acc": 0.8167330677290837, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.9360407066052228, + "t": null, + "punct": null, + "u_acc": 0.75, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.960515156724543, + "t": null, + "punct": null, + "u_acc": 0.8483754512635379, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.6653864335664336, + "t": null, + "punct": null, + "u_acc": 0.1636, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7381780064380065, + "t": null, + "punct": null, + "u_acc": 0.268, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ps": { + "ersatz": { + "u": 0.9328073360331425, + "t": null, + "punct": null, + "u_acc": 0.7741935483870968, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "opus100": { + "u": 0.7898928836568034, + "t": null, + "punct": null, + "u_acc": 0.35634743875278396, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.6618457779041721, + "t": null, + "punct": null, + "u_acc": 0.1386861313868613, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6637849914111418, + "t": null, + "punct": null, + "u_acc": 0.1678832116788321, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "pt": { + "opus100": { + "u": 0.9415493862862284, + "t": null, + "punct": null, + "u_acc": 0.7631578947368421, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9694063926940639, + "t": null, + "punct": null, + "u_acc": 0.886986301369863, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6628420914435071, + "t": null, + "punct": null, + "u_acc": 0.1576, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7419597757797758, + "t": null, + "punct": null, + "u_acc": 0.2848, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ro": { + "ersatz": { + "u": 0.9778666666666666, + "t": null, + "punct": null, + "u_acc": 0.916, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.936350809684143, + "t": null, + "punct": null, + "u_acc": 0.7777777777777778, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.7865200556544774, + "t": null, + "punct": null, + "u_acc": 0.38783269961977185, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6426006072864517, + "t": null, + "punct": null, + "u_acc": 0.1396, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.740023830891331, + "t": null, + "punct": null, + "u_acc": 0.2816, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ru": { + "ersatz": { + "u": 0.9787634408602152, + "t": null, + "punct": null, + "u_acc": 0.9153225806451613, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "opus100": { + "u": 0.8712697821304379, + "t": null, + "punct": null, + "u_acc": 0.555327868852459, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.8840009233191051, + "t": null, + "punct": null, + "u_acc": 0.6454545454545455, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6455473009691833, + "t": null, + "punct": null, + "u_acc": 0.1368, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7325907634893841, + "t": null, + "punct": null, + "u_acc": 0.2684, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "si": { + "opus100": { + "u": 0.844994879672299, + "t": null, + "punct": null, + "u_acc": 0.4737903225806452, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ted2020-corrupted-asr": { + "u": 0.5915757799478729, + "t": null, + "punct": null, + "u_acc": 0.13178294573643412, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.631614036265199, + "t": null, + "punct": null, + "u_acc": 0.1937984496124031, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "sk": { + "opus100": { + "u": 0.9329534380522935, + "t": null, + "punct": null, + "u_acc": 0.7540322580645161, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9698292902066487, + "t": null, + "punct": null, + "u_acc": 0.9132075471698113, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6636303501471794, + "t": null, + "punct": null, + "u_acc": 0.1664, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.738710593441646, + "t": null, + "punct": null, + "u_acc": 0.2848, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "sl": { + "opus100": { + "u": 0.9258999367433103, + "t": null, + "punct": null, + "u_acc": 0.6987951807228916, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9671329365079366, + "t": null, + "punct": null, + "u_acc": 0.875, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6604602775002775, + "t": null, + "punct": null, + "u_acc": 0.168, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7452566810966811, + "t": null, + "punct": null, + "u_acc": 0.3004, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "sq": { + "opus100": { + "u": 0.9221128239420922, + "t": null, + "punct": null, + "u_acc": 0.7154471544715447, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null, + "u_acc": 1.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.02500000000000001 + }, + "ted2020-corrupted-asr": { + "u": 0.6220624653334431, + "t": null, + "punct": null, + "u_acc": 0.1312, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7275737904317905, + "t": null, + "punct": null, + "u_acc": 0.2656, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "sr": { + "opus100": { + "u": 0.9401415184547716, + "t": null, + "punct": null, + "u_acc": 0.7469879518072289, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9815384615384615, + "t": null, + "punct": null, + "u_acc": 0.9230769230769231, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6222320001305883, + "t": null, + "punct": null, + "u_acc": 0.1332, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7391379686979688, + "t": null, + "punct": null, + "u_acc": 0.292, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "sv": { + "opus100": { + "u": 0.9335981733572095, + "t": null, + "punct": null, + "u_acc": 0.7269076305220884, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9498523440383906, + "t": null, + "punct": null, + "u_acc": 0.8178294573643411, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6717040905499729, + "t": null, + "punct": null, + "u_acc": 0.1896, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7299555821955822, + "t": null, + "punct": null, + "u_acc": 0.2568, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ta": { + "ersatz": { + "u": 0.961126920887877, + "t": null, + "punct": null, + "u_acc": 0.8565737051792829, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.7586286152396551, + "t": null, + "punct": null, + "u_acc": 0.32723577235772355, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.98, + "t": null, + "punct": null, + "u_acc": 0.9, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.02500000000000001 + }, + "ted2020-corrupted-asr": { + "u": 0.5406722761084798, + "t": null, + "punct": null, + "u_acc": 0.0704626334519573, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.6827245273508619, + "t": null, + "punct": null, + "u_acc": 0.22277580071174377, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + } + }, + "te": { + "opus100": { + "u": 0.8273002543464412, + "t": null, + "punct": null, + "u_acc": 0.47959183673469385, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6220209381085513, + "t": null, + "punct": null, + "u_acc": 0.14350453172205438, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.687992420469762, + "t": null, + "punct": null, + "u_acc": 0.22658610271903323, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + } + }, + "tg": { + "opus100": { + "u": 0.8508453505441457, + "t": null, + "punct": null, + "u_acc": 0.4759036144578313, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7152255639097744, + "t": null, + "punct": null, + "u_acc": 0.23684210526315788, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-social-media": { + "u": 0.760233918128655, + "t": null, + "punct": null, + "u_acc": 0.3684210526315789, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + } + }, + "th": { + "opus100": { + "u": 0.7616305916305917, + "t": null, + "punct": null, + "u_acc": 0.2404040404040404, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.7883492063492064, + "t": null, + "punct": null, + "u_acc": 0.276, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6237335579205796, + "t": null, + "punct": null, + "u_acc": 0.1228, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6252290279929908, + "t": null, + "punct": null, + "u_acc": 0.1236, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "tr": { + "ersatz": { + "u": 0.953888044579534, + "t": null, + "punct": null, + "u_acc": 0.8231382978723404, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "opus100": { + "u": 0.9379924169397853, + "t": null, + "punct": null, + "u_acc": 0.757085020242915, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9619740259740259, + "t": null, + "punct": null, + "u_acc": 0.850909090909091, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7343103852711113, + "t": null, + "punct": null, + "u_acc": 0.2996, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7466053487253488, + "t": null, + "punct": null, + "u_acc": 0.2924, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "uk": { + "opus100": { + "u": 0.9122006953332253, + "t": null, + "punct": null, + "u_acc": 0.6726907630522089, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9485827664399092, + "t": null, + "punct": null, + "u_acc": 0.8169642857142857, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6269374522741635, + "t": null, + "punct": null, + "u_acc": 0.124, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.734647517176546, + "t": null, + "punct": null, + "u_acc": 0.2772, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "ur": { + "opus100": { + "u": 0.7146106953310343, + "t": null, + "punct": null, + "u_acc": 0.2584745762711864, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9584577114427861, + "t": null, + "punct": null, + "u_acc": 0.8432835820895522, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + }, + "ted2020-corrupted-asr": { + "u": 0.6726985589728169, + "t": null, + "punct": null, + "u_acc": 0.21120246659815006, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.6924162719036064, + "t": null, + "punct": null, + "u_acc": 0.24665981500513876, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + } + }, + "uz": { + "opus100": { + "u": 0.8256997084548106, + "t": null, + "punct": null, + "u_acc": 0.3489795918367347, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.7244066821598467, + "t": null, + "punct": null, + "u_acc": 0.2732067510548523, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.7518914198294612, + "t": null, + "punct": null, + "u_acc": 0.3037974683544304, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + } + }, + "vi": { + "opus100": { + "u": 0.9331373701744073, + "t": null, + "punct": null, + "u_acc": 0.742798353909465, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025000000000000005 + }, + "ud": { + "u": 0.9058571428571429, + "t": null, + "punct": null, + "u_acc": 0.66, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.6106368651438001, + "t": null, + "punct": null, + "u_acc": 0.1172, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7295761505161504, + "t": null, + "punct": null, + "u_acc": 0.2604, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "xh": { + "opus100": { + "u": 0.8731182602551897, + "t": null, + "punct": null, + "u_acc": 0.5975103734439834, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + } + }, + "yi": { + "opus100": { + "u": 0.7882768572423745, + "t": null, + "punct": null, + "u_acc": 0.3385579937304075, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999994 + } + }, + "yo": { + "opus100": { + "u": 0.8111159744692167, + "t": null, + "punct": null, + "u_acc": 0.42150170648464164, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "ud": { + "u": 0.7867478354978354, + "t": null, + "punct": null, + "u_acc": 0.375, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + }, + "nllb": { + "u": 0.7973184125334589, + "t": null, + "punct": null, + "u_acc": 0.41, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.024999999999999998 + } + }, + "zh": { + "ersatz": { + "u": 0.9010857142857142, + "t": null, + "punct": null, + "u_acc": 0.702, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "opus100": { + "u": 0.7822889719267989, + "t": null, + "punct": null, + "u_acc": 0.40643863179074446, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ud": { + "u": 0.9221333333333335, + "t": null, + "punct": null, + "u_acc": 0.76, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-asr": { + "u": 0.5346091635822449, + "t": null, + "punct": null, + "u_acc": 0.0508390918065153, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + }, + "ted2020-corrupted-social-media": { + "u": 0.5602375995954596, + "t": null, + "punct": null, + "u_acc": 0.07156959526159921, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + } + }, + "zu": { + "opus100": { + "u": 0.884469542802876, + "t": null, + "punct": null, + "u_acc": 0.6047008547008547, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.025 + } + }, + "tr-de": {}, + "es-en": {}, + "vi-en": {}, + "en-de": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/sat-sm-12l-limited-lookahead.json b/wtpsplit/evaluation/evaluation_results/short/sat-sm-12l-limited-lookahead.json new file mode 100644 index 00000000..7defa162 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/sat-sm-12l-limited-lookahead.json @@ -0,0 +1,3346 @@ +{ + "af": { + "opus100": { + "u": 0.9358913813459269, + "t": 0.9361078315623771, + "punct": null, + "u_acc": 0.762396694214876, + "t_acc": 0.78099173553719, + "punct_acc": null, + "threshold_t": 0.5267133712768555, + "threshold_adj": 0.25 + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null, + "u_acc": 1.0, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.9878134727478027, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8296703296703296, + "t": 0.8082271062271061, + "punct": null, + "u_acc": 0.48, + "t_acc": 0.4246153846153846, + "punct_acc": null, + "threshold_t": 0.06166418269276619, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.894168498168498, + "t": 0.8958095238095239, + "punct": null, + "u_acc": 0.6369230769230769, + "t_acc": 0.6430769230769231, + "punct_acc": null, + "threshold_t": 0.33285531401634216, + "threshold_adj": 0.25 + } + }, + "am": { + "opus100": { + "u": 0.9068559954102122, + "t": 0.9058041690571812, + "punct": null, + "u_acc": 0.678714859437751, + "t_acc": 0.6726907630522089, + "punct_acc": null, + "threshold_t": 0.20142008364200592, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7088479662698413, + "t": 0.7015500992063493, + "punct": null, + "u_acc": 0.2265625, + "t_acc": 0.2265625, + "punct_acc": null, + "threshold_t": 0.05576714500784874, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7159908234126984, + "t": 0.6999131944444444, + "punct": null, + "u_acc": 0.25, + "t_acc": 0.21875, + "punct_acc": null, + "threshold_t": 0.047457821667194366, + "threshold_adj": 0.25 + } + }, + "ar": { + "ersatz": { + "u": 0.9006332320162107, + "t": 0.917160587639311, + "punct": null, + "u_acc": 0.675531914893617, + "t_acc": 0.7101063829787234, + "punct_acc": null, + "threshold_t": 0.06891521066427231, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8879709313444254, + "t": 0.8761076050232678, + "punct": null, + "u_acc": 0.6405622489959839, + "t_acc": 0.5903614457831325, + "punct_acc": null, + "threshold_t": 0.08384105563163757, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9410737628384686, + "t": 0.9345378151260504, + "punct": null, + "u_acc": 0.7941176470588235, + "t_acc": 0.7823529411764706, + "punct_acc": null, + "threshold_t": 0.45716428756713867, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7413171428571428, + "t": 0.7222593967143968, + "punct": null, + "u_acc": 0.2776, + "t_acc": 0.2648, + "punct_acc": null, + "threshold_t": 0.03294433280825615, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.769233851294904, + "t": 0.769837158011071, + "punct": null, + "u_acc": 0.3416, + "t_acc": 0.3572, + "punct_acc": null, + "threshold_t": 0.09385097026824951, + "threshold_adj": 0.25 + } + }, + "az": { + "opus100": { + "u": 0.9132530120481926, + "t": 0.9131382673551348, + "punct": null, + "u_acc": 0.7008032128514057, + "t_acc": 0.6907630522088354, + "punct_acc": null, + "threshold_t": 0.15619401633739471, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8041450898720401, + "t": 0.8105881936555697, + "punct": null, + "u_acc": 0.4178486997635934, + "t_acc": 0.4391252955082742, + "punct_acc": null, + "threshold_t": 0.01600312441587448, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8558332395211827, + "t": 0.8619329055499269, + "punct": null, + "u_acc": 0.5460992907801419, + "t_acc": 0.5526004728132388, + "punct_acc": null, + "threshold_t": 0.024036891758441925, + "threshold_adj": 0.25 + } + }, + "be": { + "opus100": { + "u": 0.9332072543885171, + "t": 0.9324701774803608, + "punct": null, + "u_acc": 0.7841140529531568, + "t_acc": 0.780040733197556, + "punct_acc": null, + "threshold_t": 0.1734095960855484, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9468578509470703, + "t": 0.9427509293680297, + "punct": null, + "u_acc": 0.8327137546468402, + "t_acc": 0.8215613382899628, + "punct_acc": null, + "threshold_t": 0.49903181195259094, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.828099667294995, + "t": 0.8292620747195698, + "punct": null, + "u_acc": 0.49123945489941595, + "t_acc": 0.49059052563270605, + "punct_acc": null, + "threshold_t": 0.18859070539474487, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8931501910736176, + "t": 0.8932789468805044, + "punct": null, + "u_acc": 0.6489292667099286, + "t_acc": 0.6515249837767684, + "punct_acc": null, + "threshold_t": 0.275354266166687, + "threshold_adj": 0.25 + } + }, + "bg": { + "opus100": { + "u": 0.9702834239908388, + "t": 0.9705506250596431, + "punct": null, + "u_acc": 0.8617234468937875, + "t_acc": 0.8617234468937875, + "punct_acc": null, + "threshold_t": 0.26644113659858704, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9988052568697731, + "t": 0.9988052568697731, + "punct": null, + "u_acc": 0.996415770609319, + "t_acc": 0.996415770609319, + "punct_acc": null, + "threshold_t": 0.3684331178665161, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8301029810712164, + "t": 0.8291017082017083, + "punct": null, + "u_acc": 0.4984, + "t_acc": 0.4936, + "punct_acc": null, + "threshold_t": 0.21827085316181183, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8960122366522366, + "t": 0.8985462298812299, + "punct": null, + "u_acc": 0.6576, + "t_acc": 0.6708, + "punct_acc": null, + "threshold_t": 0.4103734493255615, + "threshold_adj": 0.25 + } + }, + "bn": { + "opus100": { + "u": 0.9442655935613682, + "t": 0.9399827536648462, + "punct": null, + "u_acc": 0.7847082494969819, + "t_acc": 0.7585513078470825, + "punct_acc": null, + "threshold_t": 0.19109474122524261, + "threshold_adj": 0.25 + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null, + "u_acc": 1.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6364951330720562, + "t": 0.6038609125916818, + "punct": null, + "u_acc": 0.12384615384615384, + "t_acc": 0.09692307692307692, + "punct_acc": null, + "threshold_t": 0.14795920252799988, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7423357753357753, + "t": 0.7190091416878747, + "punct": null, + "u_acc": 0.28846153846153844, + "t_acc": 0.2553846153846154, + "punct_acc": null, + "threshold_t": 0.03250708058476448, + "threshold_adj": 0.25 + } + }, + "ca": { + "opus100": { + "u": 0.9631572169097525, + "t": 0.9559711868028298, + "punct": null, + "u_acc": 0.8519269776876268, + "t_acc": 0.8235294117647058, + "punct_acc": null, + "threshold_t": 0.08215601742267609, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9978354978354979, + "t": 0.9841269841269842, + "punct": null, + "u_acc": 0.9891774891774892, + "t_acc": 0.9523809523809523, + "punct_acc": null, + "threshold_t": 0.9989295601844788, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8205933333333334, + "t": 0.8000615584415585, + "punct": null, + "u_acc": 0.4788, + "t_acc": 0.404, + "punct_acc": null, + "threshold_t": 0.030712280422449112, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8955073015873015, + "t": 0.8940368831168831, + "punct": null, + "u_acc": 0.6688, + "t_acc": 0.6596, + "punct_acc": null, + "threshold_t": 0.19296707212924957, + "threshold_adj": 0.25 + } + }, + "ceb": { + "ud": { + "u": 0.9716312056737589, + "t": null, + "punct": null, + "u_acc": 0.9148936170212766, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6595238095238096, + "t": 0.6595238095238096, + "punct": null, + "u_acc": 0.07142857142857142, + "t_acc": 0.07142857142857142, + "punct_acc": null, + "threshold_t": 0.19813048839569092, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7642857142857143, + "t": 0.7880952380952381, + "punct": null, + "u_acc": 0.35714285714285715, + "t_acc": 0.42857142857142855, + "punct_acc": null, + "threshold_t": 0.17615289986133575, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9430304761904761, + "t": 0.9437771428571429, + "punct": null, + "u_acc": 0.8116, + "t_acc": 0.8184, + "punct_acc": null, + "threshold_t": 0.321523517370224, + "threshold_adj": 0.25 + } + }, + "cs": { + "ersatz": { + "u": 0.9902006172839506, + "t": 0.9929783950617285, + "punct": null, + "u_acc": 0.9606481481481481, + "t_acc": 0.9745370370370371, + "punct_acc": null, + "threshold_t": 0.9860545992851257, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.953203639179249, + "t": 0.9553619821912505, + "punct": null, + "u_acc": 0.8048780487804879, + "t_acc": 0.8170731707317073, + "punct_acc": null, + "threshold_t": 0.3447602689266205, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9817998597967053, + "t": 0.9786409043112514, + "punct": null, + "u_acc": 0.9388801261829653, + "t_acc": 0.9199526813880127, + "punct_acc": null, + "threshold_t": 0.09427179396152496, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8330733309940981, + "t": 0.8255898515976776, + "punct": null, + "u_acc": 0.4952, + "t_acc": 0.4716, + "punct_acc": null, + "threshold_t": 0.13281674683094025, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8916379346257607, + "t": 0.8899776171654432, + "punct": null, + "u_acc": 0.6408, + "t_acc": 0.6332, + "punct_acc": null, + "threshold_t": 0.2116090953350067, + "threshold_adj": 0.25 + } + }, + "cy": { + "opus100": { + "u": 0.9064497123449088, + "t": 0.9057946905108476, + "punct": null, + "u_acc": 0.6746724890829694, + "t_acc": 0.6681222707423581, + "punct_acc": null, + "threshold_t": 0.1902681589126587, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9991596638655462, + "t": 0.9985994397759105, + "punct": null, + "u_acc": 0.9957983193277311, + "t_acc": 0.9957983193277311, + "punct_acc": null, + "threshold_t": 0.6543346643447876, + "threshold_adj": 0.25 + } + }, + "da": { + "opus100": { + "u": 0.9676171274961597, + "t": 0.9666090629800307, + "punct": null, + "u_acc": 0.8669354838709677, + "t_acc": 0.8629032258064516, + "punct_acc": null, + "threshold_t": 0.20439939200878143, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9895981087470449, + "t": 0.9914893617021278, + "punct": null, + "u_acc": 0.9574468085106383, + "t_acc": 0.9716312056737588, + "punct_acc": null, + "threshold_t": 0.610223650932312, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8262991053391053, + "t": 0.8276295304695305, + "punct": null, + "u_acc": 0.4936, + "t_acc": 0.4844, + "punct_acc": null, + "threshold_t": 0.01671995222568512, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8999409523809525, + "t": 0.9001098412698413, + "punct": null, + "u_acc": 0.6804, + "t_acc": 0.6732, + "punct_acc": null, + "threshold_t": 0.08376247435808182, + "threshold_adj": 0.25 + } + }, + "de": { + "ersatz": { + "u": 0.9918533604887984, + "t": 0.9926680244399186, + "punct": null, + "u_acc": 0.9674134419551935, + "t_acc": 0.9714867617107943, + "punct_acc": null, + "threshold_t": 0.35526859760284424, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9325899136025719, + "t": 0.9185252159935705, + "punct": null, + "u_acc": 0.7426160337552743, + "t_acc": 0.6877637130801688, + "punct_acc": null, + "threshold_t": 0.03034534491598606, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9831967213114753, + "t": 0.980464480874317, + "punct": null, + "u_acc": 0.9467213114754098, + "t_acc": 0.9385245901639344, + "punct_acc": null, + "threshold_t": 0.597312867641449, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8490209523809524, + "t": 0.854089264069264, + "punct": null, + "u_acc": 0.5428, + "t_acc": 0.5456, + "punct_acc": null, + "threshold_t": 0.12303541600704193, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9055657142857144, + "t": 0.9025673593073592, + "punct": null, + "u_acc": 0.6968, + "t_acc": 0.6764, + "punct_acc": null, + "threshold_t": 0.133021280169487, + "threshold_adj": 0.25 + } + }, + "el": { + "opus100": { + "u": 0.9686077643908969, + "t": 0.9683400267737617, + "punct": null, + "u_acc": 0.8654618473895582, + "t_acc": 0.8654618473895582, + "punct_acc": null, + "threshold_t": 0.21605639159679413, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.983625730994152, + "t": 0.9923976608187134, + "punct": null, + "u_acc": 0.9473684210526315, + "t_acc": 0.9736842105263158, + "punct_acc": null, + "threshold_t": 0.1934049427509308, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8296939090149615, + "t": 0.8134828428543135, + "punct": null, + "u_acc": 0.5148, + "t_acc": 0.4536, + "punct_acc": null, + "threshold_t": 0.013980056159198284, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.895189561684653, + "t": 0.8938963252959986, + "punct": null, + "u_acc": 0.6644, + "t_acc": 0.6556, + "punct_acc": null, + "threshold_t": 0.15795426070690155, + "threshold_adj": 0.25 + } + }, + "en": { + "ersatz": { + "u": 0.9902734510211145, + "t": 0.9925579785392868, + "punct": null, + "u_acc": 0.9595015576323987, + "t_acc": 0.9709241952232607, + "punct_acc": null, + "threshold_t": 0.5182924866676331, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.967741935483871, + "t": 0.956125192012289, + "punct": null, + "u_acc": 0.8649193548387096, + "t_acc": 0.8064516129032258, + "punct_acc": null, + "threshold_t": 0.012149212881922722, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9753041362530415, + "t": 0.9794403892944039, + "punct": null, + "u_acc": 0.9197080291970803, + "t_acc": 0.9306569343065694, + "punct_acc": null, + "threshold_t": 0.10314138978719711, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8218933333333335, + "t": 0.812737102897103, + "punct": null, + "u_acc": 0.4844, + "t_acc": 0.4508, + "punct_acc": null, + "threshold_t": 0.06911183893680573, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8970457142857143, + "t": 0.8954597402597403, + "punct": null, + "u_acc": 0.6644, + "t_acc": 0.6548, + "punct_acc": null, + "threshold_t": 0.18705546855926514, + "threshold_adj": 0.25 + } + }, + "eo": { + "opus100": { + "u": 0.9711021505376345, + "t": 0.9704397081413211, + "punct": null, + "u_acc": 0.8830645161290323, + "t_acc": 0.875, + "punct_acc": null, + "threshold_t": 0.15519686043262482, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7684185662569121, + "t": 0.7372478885636781, + "punct": null, + "u_acc": 0.35150375939849626, + "t_acc": 0.287593984962406, + "punct_acc": null, + "threshold_t": 0.005447076167911291, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8257479014997812, + "t": 0.8259575254876007, + "punct": null, + "u_acc": 0.4818295739348371, + "t_acc": 0.4667919799498747, + "punct_acc": null, + "threshold_t": 0.028809091076254845, + "threshold_adj": 0.25 + } + }, + "es": { + "ersatz": { + "u": 0.9964316797214969, + "t": null, + "punct": null, + "u_acc": 0.9856396866840731, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9686556133924555, + "t": 0.9580618212197162, + "punct": null, + "u_acc": 0.8724696356275303, + "t_acc": 0.8340080971659919, + "punct_acc": null, + "threshold_t": 0.045676928013563156, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9945736434108526, + "t": 0.9903875968992248, + "punct": null, + "u_acc": 0.9744186046511628, + "t_acc": 0.9674418604651163, + "punct_acc": null, + "threshold_t": 0.9583603739738464, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8154441188427396, + "t": 0.8183369885669884, + "punct": null, + "u_acc": 0.464, + "t_acc": 0.4664, + "punct_acc": null, + "threshold_t": 0.180559441447258, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.885909839121452, + "t": 0.8834520893485598, + "punct": null, + "u_acc": 0.6468, + "t_acc": 0.648, + "punct_acc": null, + "threshold_t": 0.42110100388526917, + "threshold_adj": 0.25 + } + }, + "et": { + "ersatz": { + "u": 0.99510582010582, + "t": 0.995899470899471, + "punct": null, + "u_acc": 0.9781746031746031, + "t_acc": 0.9821428571428571, + "punct_acc": null, + "threshold_t": 0.43015146255493164, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9598451256345993, + "t": 0.9605455947561211, + "punct": null, + "u_acc": 0.8380566801619433, + "t_acc": 0.840080971659919, + "punct_acc": null, + "threshold_t": 0.42653438448905945, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9868573797678276, + "t": 0.9878524046434495, + "punct": null, + "u_acc": 0.9564676616915423, + "t_acc": 0.9614427860696517, + "punct_acc": null, + "threshold_t": 0.2837121784687042, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8476597402597403, + "t": 0.8349727450327451, + "punct": null, + "u_acc": 0.5368, + "t_acc": 0.488, + "punct_acc": null, + "threshold_t": 0.05510525032877922, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9019977777777778, + "t": 0.9037761904761905, + "punct": null, + "u_acc": 0.6768, + "t_acc": 0.6892, + "punct_acc": null, + "threshold_t": 0.39433321356773376, + "threshold_adj": 0.25 + } + }, + "eu": { + "opus100": { + "u": 0.9618854829381145, + "t": 0.9617505301715829, + "punct": null, + "u_acc": 0.8461538461538461, + "t_acc": 0.8481781376518218, + "punct_acc": null, + "threshold_t": 0.38719433546066284, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9958518518518519, + "t": 0.9954074074074073, + "punct": null, + "u_acc": 0.9822222222222222, + "t_acc": 0.9844444444444445, + "punct_acc": null, + "threshold_t": 0.9844362735748291, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7819631123058542, + "t": 0.7769931121745637, + "punct": null, + "u_acc": 0.39381720430107525, + "t_acc": 0.3629032258064516, + "punct_acc": null, + "threshold_t": 0.033414389938116074, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8676763312852022, + "t": 0.8647326762246117, + "punct": null, + "u_acc": 0.5987903225806451, + "t_acc": 0.581989247311828, + "punct_acc": null, + "threshold_t": 0.10609612613916397, + "threshold_adj": 0.25 + } + }, + "fa": { + "opus100": { + "u": 0.863482520596749, + "t": 0.8439694685185667, + "punct": null, + "u_acc": 0.5971943887775552, + "t_acc": 0.5290581162324649, + "punct_acc": null, + "threshold_t": 0.03637668862938881, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9952380952380951, + "t": 0.9967032967032966, + "punct": null, + "u_acc": 0.978021978021978, + "t_acc": 0.9835164835164835, + "punct_acc": null, + "threshold_t": 0.6403377056121826, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.797861483481058, + "t": 0.7979373193473193, + "punct": null, + "u_acc": 0.4224, + "t_acc": 0.4228, + "punct_acc": null, + "threshold_t": 0.24335354566574097, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8275830130625874, + "t": 0.8272251663891664, + "punct": null, + "u_acc": 0.4896, + "t_acc": 0.4888, + "punct_acc": null, + "threshold_t": 0.23424072563648224, + "threshold_adj": 0.25 + } + }, + "fi": { + "ersatz": { + "u": 0.9963927855711423, + "t": 0.9983967935871744, + "punct": null, + "u_acc": 0.9819639278557114, + "t_acc": 0.9919839679358717, + "punct_acc": null, + "threshold_t": 0.4159590005874634, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9759892689470154, + "t": 0.9692152917505031, + "punct": null, + "u_acc": 0.8853118712273642, + "t_acc": 0.8611670020120724, + "punct_acc": null, + "threshold_t": 0.043404825031757355, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9912371134020619, + "t": 0.9927835051546393, + "punct": null, + "u_acc": 0.9664948453608248, + "t_acc": 0.9742268041237113, + "punct_acc": null, + "threshold_t": 0.30064690113067627, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8359507936507936, + "t": 0.831853553113553, + "punct": null, + "u_acc": 0.5268, + "t_acc": 0.4924, + "punct_acc": null, + "threshold_t": 0.07716461271047592, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.898975238095238, + "t": 0.8993488888888889, + "punct": null, + "u_acc": 0.6792, + "t_acc": 0.6772, + "punct_acc": null, + "threshold_t": 0.19953423738479614, + "threshold_adj": 0.25 + } + }, + "fr": { + "ersatz": { + "u": 0.9959742351046699, + "t": 0.9948470209339775, + "punct": null, + "u_acc": 0.9830917874396136, + "t_acc": 0.9806763285024155, + "punct_acc": null, + "threshold_t": 0.6386837363243103, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9538974210373805, + "t": null, + "punct": null, + "u_acc": 0.8113590263691683, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9980769230769231, + "t": 0.9980769230769231, + "punct": null, + "u_acc": 0.9903846153846154, + "t_acc": 0.9903846153846154, + "punct_acc": null, + "threshold_t": 0.4889029264450073, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8098361904761905, + "t": 0.8192619913419912, + "punct": null, + "u_acc": 0.458, + "t_acc": 0.4576, + "punct_acc": null, + "threshold_t": 0.02904966101050377, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8874320634920634, + "t": 0.8797911688311689, + "punct": null, + "u_acc": 0.66, + "t_acc": 0.6136, + "punct_acc": null, + "threshold_t": 0.05259474739432335, + "threshold_adj": 0.25 + } + }, + "fy": { + "opus100": { + "u": 0.9376967095851216, + "t": 0.94241773962804, + "punct": null, + "u_acc": 0.8004291845493562, + "t_acc": 0.8090128755364807, + "punct_acc": null, + "threshold_t": 0.16877134144306183, + "threshold_adj": 0.25 + } + }, + "ga": { + "opus100": { + "u": 0.9409610215053764, + "t": 0.9460349462365591, + "punct": null, + "u_acc": 0.8044354838709677, + "t_acc": 0.8044354838709677, + "punct_acc": null, + "threshold_t": 0.07466644793748856, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9707602339181287, + "t": 0.9792397660818714, + "punct": null, + "u_acc": 0.9035087719298246, + "t_acc": 0.9210526315789473, + "punct_acc": null, + "threshold_t": 0.8677814602851868, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6793650793650793, + "t": 0.5842592592592593, + "punct": null, + "u_acc": 0.25, + "t_acc": 0.08333333333333333, + "punct_acc": null, + "threshold_t": 0.013184512965381145, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7365079365079364, + "t": 0.7611111111111111, + "punct": null, + "u_acc": 0.25, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.7664591073989868, + "threshold_adj": 0.25 + } + }, + "gd": { + "opus100": { + "u": 0.9326455026455026, + "t": 0.9251146384479718, + "punct": null, + "u_acc": 0.7666666666666667, + "t_acc": 0.7296296296296296, + "punct_acc": null, + "threshold_t": 0.1103217676281929, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.8970588235294118, + "t": 0.8958333333333334, + "punct": null, + "u_acc": 0.6838235294117647, + "t_acc": 0.6838235294117647, + "punct_acc": null, + "threshold_t": 0.213588148355484, + "threshold_adj": 0.25 + } + }, + "gl": { + "opus100": { + "u": 0.9617607526881721, + "t": 0.9606854838709677, + "punct": null, + "u_acc": 0.842741935483871, + "t_acc": 0.8387096774193549, + "punct_acc": null, + "threshold_t": 0.22174373269081116, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9913333333333333, + "t": 0.9913333333333333, + "punct": null, + "u_acc": 0.97, + "t_acc": 0.97, + "punct_acc": null, + "threshold_t": 0.27429941296577454, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8201342857142856, + "t": 0.819962857142857, + "punct": null, + "u_acc": 0.4792, + "t_acc": 0.4784, + "punct_acc": null, + "threshold_t": 0.24691839516162872, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8877987301587302, + "t": 0.8852650793650795, + "punct": null, + "u_acc": 0.6436, + "t_acc": 0.6252, + "punct_acc": null, + "threshold_t": 0.11226487159729004, + "threshold_adj": 0.25 + } + }, + "gu": { + "ersatz": { + "u": 0.9074990626171728, + "t": 0.9120922384701913, + "punct": null, + "u_acc": 0.7204724409448819, + "t_acc": 0.7283464566929134, + "punct_acc": null, + "threshold_t": 0.14198142290115356, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9200828157349896, + "t": 0.9226363008971704, + "punct": null, + "u_acc": 0.7412008281573499, + "t_acc": 0.7453416149068323, + "punct_acc": null, + "threshold_t": 0.2195306271314621, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6189243507494266, + "t": 0.6155107896260577, + "punct": null, + "u_acc": 0.12740141557128412, + "t_acc": 0.12487360970677452, + "punct_acc": null, + "threshold_t": 0.22590655088424683, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7109413211104395, + "t": 0.6816775088868838, + "punct": null, + "u_acc": 0.24014155712841254, + "t_acc": 0.21486349848331648, + "punct_acc": null, + "threshold_t": 0.03116069920361042, + "threshold_adj": 0.25 + } + }, + "ha": { + "opus100": { + "u": 0.9468666666666666, + "t": 0.9412, + "punct": null, + "u_acc": 0.788, + "t_acc": 0.794, + "punct_acc": null, + "threshold_t": 0.3944629728794098, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.611111111111111, + "t": 0.5555555555555555, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.05354507640004158, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6888888888888888, + "t": 0.7777777777777777, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.9390864968299866, + "threshold_adj": 0.25 + } + }, + "he": { + "opus100": { + "u": 0.9423036549289054, + "t": 0.9391371487563873, + "punct": null, + "u_acc": 0.7775551102204409, + "t_acc": 0.7655310621242485, + "punct_acc": null, + "threshold_t": 0.15110965073108673, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9857142857142857, + "t": 0.9857142857142857, + "punct": null, + "u_acc": 0.9489795918367347, + "t_acc": 0.9489795918367347, + "punct_acc": null, + "threshold_t": 0.3192470669746399, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7823099456099457, + "t": 0.7816109785639198, + "punct": null, + "u_acc": 0.4044, + "t_acc": 0.4056, + "punct_acc": null, + "threshold_t": 0.18607929348945618, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8182166378066379, + "t": 0.8082583986383987, + "punct": null, + "u_acc": 0.4872, + "t_acc": 0.4548, + "punct_acc": null, + "threshold_t": 0.06886094808578491, + "threshold_adj": 0.25 + } + }, + "hi": { + "ersatz": { + "u": 0.9862962962962961, + "t": 0.9729100529100528, + "punct": null, + "u_acc": 0.9412698412698413, + "t_acc": 0.9142857142857143, + "punct_acc": null, + "threshold_t": 0.9687901735305786, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8751079330026698, + "t": 0.8897210976158344, + "punct": null, + "u_acc": 0.5910931174089069, + "t_acc": 0.6376518218623481, + "punct_acc": null, + "threshold_t": 0.45361077785491943, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.998258115597783, + "t": 0.9979414093428345, + "punct": null, + "u_acc": 0.9928741092636579, + "t_acc": 0.9928741092636579, + "punct_acc": null, + "threshold_t": 0.6244473457336426, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7322349657749657, + "t": 0.7221934871664284, + "punct": null, + "u_acc": 0.2972, + "t_acc": 0.2796, + "punct_acc": null, + "threshold_t": 0.11981464922428131, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8108554221754222, + "t": 0.8097436761436761, + "punct": null, + "u_acc": 0.4444, + "t_acc": 0.436, + "punct_acc": null, + "threshold_t": 0.195551797747612, + "threshold_adj": 0.25 + } + }, + "hu": { + "opus100": { + "u": 0.969489247311828, + "t": 0.9667338709677419, + "punct": null, + "u_acc": 0.8528225806451613, + "t_acc": 0.8407258064516129, + "punct_acc": null, + "threshold_t": 0.07834309339523315, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9934523809523811, + "t": 0.9940476190476192, + "punct": null, + "u_acc": 0.9732142857142857, + "t_acc": 0.9821428571428571, + "punct_acc": null, + "threshold_t": 0.9795545339584351, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8186746031746032, + "t": 0.8054523742923743, + "punct": null, + "u_acc": 0.4816, + "t_acc": 0.4176, + "punct_acc": null, + "threshold_t": 0.0024567858781665564, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8961133333333333, + "t": 0.8963676190476192, + "punct": null, + "u_acc": 0.68, + "t_acc": 0.6816, + "punct_acc": null, + "threshold_t": 0.35802045464515686, + "threshold_adj": 0.25 + } + }, + "hy": { + "opus100": { + "u": 0.9415202299598655, + "t": null, + "punct": null, + "u_acc": 0.780751708428246, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9954954954954955, + "t": 0.9932432432432432, + "punct": null, + "u_acc": 0.9864864864864865, + "t_acc": 0.9797297297297297, + "punct_acc": null, + "threshold_t": 0.7635315656661987, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8168815238095238, + "t": 0.8119983449883451, + "punct": null, + "u_acc": 0.4616, + "t_acc": 0.4456, + "punct_acc": null, + "threshold_t": 0.015083407051861286, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8658086868686868, + "t": 0.865946232247285, + "punct": null, + "u_acc": 0.5708, + "t_acc": 0.578, + "punct_acc": null, + "threshold_t": 0.5937344431877136, + "threshold_adj": 0.25 + } + }, + "id": { + "opus100": { + "u": 0.9592213114754099, + "t": 0.9611338797814207, + "punct": null, + "u_acc": 0.819672131147541, + "t_acc": 0.8278688524590164, + "punct_acc": null, + "threshold_t": 0.3178315758705139, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9778666666666667, + "t": null, + "punct": null, + "u_acc": 0.932, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7709780952380952, + "t": 0.7628479542679543, + "punct": null, + "u_acc": 0.3516, + "t_acc": 0.3344, + "punct_acc": null, + "threshold_t": 0.013489384204149246, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8422314285714285, + "t": 0.8446371428571426, + "punct": null, + "u_acc": 0.5212, + "t_acc": 0.514, + "punct_acc": null, + "threshold_t": 0.03130241855978966, + "threshold_adj": 0.25 + } + }, + "ig": { + "opus100": { + "u": 0.943377253814147, + "t": 0.9458044382801664, + "punct": null, + "u_acc": 0.7985436893203883, + "t_acc": 0.8033980582524272, + "punct_acc": null, + "threshold_t": 0.22466032207012177, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6141941391941391, + "t": 0.5965506715506715, + "punct": null, + "u_acc": 0.07692307692307693, + "t_acc": 0.11538461538461539, + "punct_acc": null, + "threshold_t": 0.06332143396139145, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7512820512820514, + "t": 0.6554945054945054, + "punct": null, + "u_acc": 0.2692307692307692, + "t_acc": 0.2692307692307692, + "punct_acc": null, + "threshold_t": 0.01692948490381241, + "threshold_adj": 0.25 + } + }, + "is": { + "opus100": { + "u": 0.9738430583501007, + "t": 0.9742454728370221, + "punct": null, + "u_acc": 0.8853118712273642, + "t_acc": 0.8873239436619719, + "punct_acc": null, + "threshold_t": 0.2960386574268341, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9788355683623333, + "t": 0.9796039750267835, + "punct": null, + "u_acc": 0.91311093871218, + "t_acc": 0.9177657098525989, + "punct_acc": null, + "threshold_t": 0.3644753396511078, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8145320893412498, + "t": 0.8067571388182075, + "punct": null, + "u_acc": 0.455470737913486, + "t_acc": 0.42493638676844786, + "punct_acc": null, + "threshold_t": 0.020942457020282745, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8849266933236399, + "t": 0.883605961468557, + "punct": null, + "u_acc": 0.6361323155216285, + "t_acc": 0.6335877862595419, + "punct_acc": null, + "threshold_t": 0.08516617864370346, + "threshold_adj": 0.25 + } + }, + "it": { + "opus100": { + "u": 0.9451196876600103, + "t": 0.9459872340920729, + "punct": null, + "u_acc": 0.7721774193548387, + "t_acc": 0.7762096774193549, + "punct_acc": null, + "threshold_t": 0.36572980880737305, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9972222222222221, + "t": 0.9972222222222221, + "punct": null, + "u_acc": 0.9916666666666667, + "t_acc": 0.9916666666666667, + "punct_acc": null, + "threshold_t": 0.2613252103328705, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.813353137973138, + "t": 0.8020326118326119, + "punct": null, + "u_acc": 0.4496, + "t_acc": 0.4112, + "punct_acc": null, + "threshold_t": 0.09929787367582321, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8823837118437119, + "t": 0.888048253968254, + "punct": null, + "u_acc": 0.6052, + "t_acc": 0.6424, + "punct_acc": null, + "threshold_t": 0.5085493922233582, + "threshold_adj": 0.25 + } + }, + "ja": { + "ersatz": { + "u": 0.940316275764037, + "t": 0.9488805970149254, + "punct": null, + "u_acc": 0.8432835820895522, + "t_acc": 0.8656716417910447, + "punct_acc": null, + "threshold_t": 0.4914585053920746, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9114457831325301, + "t": 0.9050519538471345, + "punct": null, + "u_acc": 0.7269076305220884, + "t_acc": 0.6907630522088354, + "punct_acc": null, + "threshold_t": 0.08693736046552658, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9933823529411764, + "t": 0.9948529411764707, + "punct": null, + "u_acc": 0.9779411764705882, + "t_acc": 0.9852941176470589, + "punct_acc": null, + "threshold_t": 0.8192950487136841, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.896654188034188, + "t": 0.9051599023199022, + "punct": null, + "u_acc": 0.6604, + "t_acc": 0.6924, + "punct_acc": null, + "threshold_t": 0.6293315291404724, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8967719658119658, + "t": 0.9059933333333334, + "punct": null, + "u_acc": 0.6636, + "t_acc": 0.7016, + "punct_acc": null, + "threshold_t": 0.9002335071563721, + "threshold_adj": 0.25 + } + }, + "jv": { + "ud": { + "u": 0.9585333333333333, + "t": null, + "punct": null, + "u_acc": 0.868, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9383390476190474, + "t": 0.943375238095238, + "punct": null, + "u_acc": 0.7868, + "t_acc": 0.8172, + "punct_acc": null, + "threshold_t": 0.5628132820129395, + "threshold_adj": 0.25 + } + }, + "ka": { + "opus100": { + "u": 0.9492, + "t": 0.952, + "punct": null, + "u_acc": 0.804, + "t_acc": 0.826, + "punct_acc": null, + "threshold_t": 0.45432156324386597, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7677546608946609, + "t": 0.743875024975025, + "punct": null, + "u_acc": 0.3644, + "t_acc": 0.3168, + "punct_acc": null, + "threshold_t": 0.015574936755001545, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7953453968253968, + "t": 0.7721173337773338, + "punct": null, + "u_acc": 0.4156, + "t_acc": 0.3548, + "punct_acc": null, + "threshold_t": 0.015574936755001545, + "threshold_adj": 0.25 + } + }, + "kk": { + "ersatz": { + "u": 1.0, + "t": 0.996, + "punct": null, + "u_acc": 1.0, + "t_acc": 0.988, + "punct_acc": null, + "threshold_t": 0.9699932336807251, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9628886265249902, + "t": 0.9609602518693428, + "punct": null, + "u_acc": 0.8491735537190083, + "t_acc": 0.859504132231405, + "punct_acc": null, + "threshold_t": 0.6338708996772766, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9946564885496184, + "t": 0.8511450381679388, + "punct": null, + "u_acc": 0.9809160305343512, + "t_acc": 0.5534351145038168, + "punct_acc": null, + "threshold_t": 0.9999616146087646, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8094564497028562, + "t": 0.8205453873831696, + "punct": null, + "u_acc": 0.43394934976043803, + "t_acc": 0.45927446954141, + "punct_acc": null, + "threshold_t": 0.007852358743548393, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8717881859565638, + "t": 0.8694555805438763, + "punct": null, + "u_acc": 0.5900068446269678, + "t_acc": 0.5660506502395619, + "punct_acc": null, + "threshold_t": 0.020687777549028397, + "threshold_adj": 0.25 + } + }, + "km": { + "ersatz": { + "u": 0.9146377351462098, + "t": 0.9412994350282488, + "punct": null, + "u_acc": 0.7067796610169491, + "t_acc": 0.8084745762711865, + "punct_acc": null, + "threshold_t": 0.823272705078125, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9224840451644575, + "t": 0.9130584192439862, + "punct": null, + "u_acc": 0.7608247422680412, + "t_acc": 0.7484536082474227, + "punct_acc": null, + "threshold_t": 0.828818678855896, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8175438596491228, + "t": 0.8189760114572144, + "punct": null, + "u_acc": 0.45112781954887216, + "t_acc": 0.47368421052631576, + "punct_acc": null, + "threshold_t": 0.08858813345432281, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.842857142857143, + "t": 0.8402434658073755, + "punct": null, + "u_acc": 0.518796992481203, + "t_acc": 0.5037593984962406, + "punct_acc": null, + "threshold_t": 0.09281837195158005, + "threshold_adj": 0.25 + } + }, + "kn": { + "opus100": { + "u": 0.9228613569321533, + "t": 0.921386430678466, + "punct": null, + "u_acc": 0.7610619469026548, + "t_acc": 0.7566371681415929, + "punct_acc": null, + "threshold_t": 0.26319289207458496, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6613858363858364, + "t": 0.6177322677322677, + "punct": null, + "u_acc": 0.13986013986013987, + "t_acc": 0.08041958041958042, + "punct_acc": null, + "threshold_t": 0.05583753064274788, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6927794427794428, + "t": 0.6763098013098012, + "punct": null, + "u_acc": 0.1888111888111888, + "t_acc": 0.16783216783216784, + "punct_acc": null, + "threshold_t": 0.10854282230138779, + "threshold_adj": 0.25 + } + }, + "ko": { + "opus100": { + "u": 0.8908457040035987, + "t": 0.8718302165670586, + "punct": null, + "u_acc": 0.6214574898785425, + "t_acc": 0.5323886639676113, + "punct_acc": null, + "threshold_t": 0.011282003484666348, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9994172494172495, + "t": 0.9976689976689977, + "punct": null, + "u_acc": 0.9982517482517482, + "t_acc": 0.993006993006993, + "punct_acc": null, + "threshold_t": 0.9992959499359131, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8335778354978356, + "t": 0.8348299567099566, + "punct": null, + "u_acc": 0.4648, + "t_acc": 0.4748, + "punct_acc": null, + "threshold_t": 0.7320255041122437, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.835387619047619, + "t": 0.8376041269841269, + "punct": null, + "u_acc": 0.4688, + "t_acc": 0.478, + "punct_acc": null, + "threshold_t": 0.5552946925163269, + "threshold_adj": 0.25 + } + }, + "ku": { + "opus100": { + "u": 0.9437283437283436, + "t": 0.941025641025641, + "punct": null, + "u_acc": 0.817047817047817, + "t_acc": 0.817047817047817, + "punct_acc": null, + "threshold_t": 0.39672014117240906, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6614380952380953, + "t": 0.5717316132453718, + "punct": null, + "u_acc": 0.074, + "t_acc": 0.1012, + "punct_acc": null, + "threshold_t": 0.020911945030093193, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6987790476190476, + "t": 0.6228972516200689, + "punct": null, + "u_acc": 0.168, + "t_acc": 0.1596, + "punct_acc": null, + "threshold_t": 0.025309398770332336, + "threshold_adj": 0.25 + } + }, + "ky": { + "opus100": { + "u": 0.9738095238095238, + "t": 0.9705668934240362, + "punct": null, + "u_acc": 0.8976190476190476, + "t_acc": 0.8857142857142857, + "punct_acc": null, + "threshold_t": 0.14161771535873413, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.757516339869281, + "t": 0.7592451121862888, + "punct": null, + "u_acc": 0.27450980392156865, + "t_acc": 0.3235294117647059, + "punct_acc": null, + "threshold_t": 0.006371109746396542, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.838888888888889, + "t": 0.8213352007469655, + "punct": null, + "u_acc": 0.5, + "t_acc": 0.4117647058823529, + "punct_acc": null, + "threshold_t": 0.015029974281787872, + "threshold_adj": 0.25 + } + }, + "la": { + "ud": { + "u": 0.9837460317460318, + "t": 0.985079365079365, + "punct": null, + "u_acc": 0.9352380952380952, + "t_acc": 0.9485714285714286, + "punct_acc": null, + "threshold_t": 0.7066066265106201, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6666666666666666, + "t": 0.6666666666666666, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.12331382185220718, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8333333333333334, + "t": 0.7222222222222222, + "punct": null, + "u_acc": 0.6666666666666666, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.017666436731815338, + "threshold_adj": 0.25 + } + }, + "lt": { + "ersatz": { + "u": 0.9968, + "t": 0.9952000000000001, + "punct": null, + "u_acc": 0.984, + "t_acc": 0.976, + "punct_acc": null, + "threshold_t": 0.02686471678316593, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9472254224270353, + "t": 0.9459197388632874, + "punct": null, + "u_acc": 0.8185483870967742, + "t_acc": 0.8145161290322581, + "punct_acc": null, + "threshold_t": 0.13773049414157867, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.989083820662768, + "t": 0.989083820662768, + "punct": null, + "u_acc": 0.9649122807017544, + "t_acc": 0.9649122807017544, + "punct_acc": null, + "threshold_t": 0.16340047121047974, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8229225396825397, + "t": 0.8231008080808082, + "punct": null, + "u_acc": 0.4768, + "t_acc": 0.4564, + "punct_acc": null, + "threshold_t": 0.026166867464780807, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8976031746031745, + "t": 0.8859110711510711, + "punct": null, + "u_acc": 0.6664, + "t_acc": 0.61, + "punct_acc": null, + "threshold_t": 0.04080215469002724, + "threshold_adj": 0.25 + } + }, + "lv": { + "ersatz": { + "u": 0.9978174603174603, + "t": 0.9982804232804232, + "punct": null, + "u_acc": 0.9920634920634921, + "t_acc": 0.9940476190476191, + "punct_acc": null, + "threshold_t": 0.930321455001831, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9550877114771639, + "t": 0.9545988156535824, + "punct": null, + "u_acc": 0.8417849898580122, + "t_acc": 0.8417849898580122, + "punct_acc": null, + "threshold_t": 0.2878369987010956, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9965174129353234, + "t": 0.9969596462133775, + "punct": null, + "u_acc": 0.988391376451078, + "t_acc": 0.9917081260364843, + "punct_acc": null, + "threshold_t": 0.6829102635383606, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8454939682539684, + "t": 0.8351733333333333, + "punct": null, + "u_acc": 0.542, + "t_acc": 0.4996, + "punct_acc": null, + "threshold_t": 0.08836416155099869, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9030337085137086, + "t": 0.8945135531135531, + "punct": null, + "u_acc": 0.6828, + "t_acc": 0.6492, + "punct_acc": null, + "threshold_t": 0.13115759193897247, + "threshold_adj": 0.25 + } + }, + "mg": { + "opus100": { + "u": 0.9716695585116638, + "t": 0.9716695585116638, + "punct": null, + "u_acc": 0.888663967611336, + "t_acc": 0.888663967611336, + "punct_acc": null, + "threshold_t": 0.25100767612457275, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6867385700719032, + "t": 0.6408342686120464, + "punct": null, + "u_acc": 0.14814814814814814, + "t_acc": 0.14814814814814814, + "punct_acc": null, + "threshold_t": 0.009800557978451252, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8371252204585536, + "t": 0.83342151675485, + "punct": null, + "u_acc": 0.5, + "t_acc": 0.48148148148148145, + "punct_acc": null, + "threshold_t": 0.17500999569892883, + "threshold_adj": 0.25 + } + }, + "mk": { + "opus100": { + "u": 0.9636857142857143, + "t": 0.962952380952381, + "punct": null, + "u_acc": 0.842, + "t_acc": 0.834, + "punct_acc": null, + "threshold_t": 0.10753495991230011, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8001609523809524, + "t": 0.8008037695637695, + "punct": null, + "u_acc": 0.4216, + "t_acc": 0.4176, + "punct_acc": null, + "threshold_t": 0.045858338475227356, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8731060317460319, + "t": 0.8661448196248195, + "punct": null, + "u_acc": 0.6032, + "t_acc": 0.5668, + "punct_acc": null, + "threshold_t": 0.06459448486566544, + "threshold_adj": 0.25 + } + }, + "ml": { + "opus100": { + "u": 0.9271179957926946, + "t": 0.9195639701663798, + "punct": null, + "u_acc": 0.7228915662650602, + "t_acc": 0.6907630522088354, + "punct_acc": null, + "threshold_t": 0.1702415496110916, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6571487742122663, + "t": 0.6486557497470197, + "punct": null, + "u_acc": 0.15343915343915343, + "t_acc": 0.14947089947089948, + "punct_acc": null, + "threshold_t": 0.2101818025112152, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7322709330645838, + "t": 0.7145923153859661, + "punct": null, + "u_acc": 0.2857142857142857, + "t_acc": 0.24206349206349206, + "punct_acc": null, + "threshold_t": 0.05646508187055588, + "threshold_adj": 0.25 + } + }, + "mn": { + "opus100": { + "u": 0.865203562340967, + "t": null, + "punct": null, + "u_acc": 0.5906488549618321, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8473314285714285, + "t": 0.8612730158730159, + "punct": null, + "u_acc": 0.546, + "t_acc": 0.5708, + "punct_acc": null, + "threshold_t": 0.03928644210100174, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8877815873015872, + "t": 0.8951276767676767, + "punct": null, + "u_acc": 0.6552, + "t_acc": 0.656, + "punct_acc": null, + "threshold_t": 0.036739982664585114, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9729771428571429, + "t": 0.9716901587301587, + "punct": null, + "u_acc": 0.9004, + "t_acc": 0.8928, + "punct_acc": null, + "threshold_t": 0.1649118959903717, + "threshold_adj": 0.25 + } + }, + "mr": { + "opus100": { + "u": 0.9736655145929339, + "t": 0.9741263440860214, + "punct": null, + "u_acc": 0.9032258064516129, + "t_acc": 0.907258064516129, + "punct_acc": null, + "threshold_t": 0.4480428099632263, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9833333333333334, + "t": 1.0, + "punct": null, + "u_acc": 0.9166666666666666, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.9346514344215393, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6451412343212344, + "t": 0.6462819669219669, + "punct": null, + "u_acc": 0.1764, + "t_acc": 0.1772, + "punct_acc": null, + "threshold_t": 0.2562134265899658, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7641590365190365, + "t": 0.7544944144744145, + "punct": null, + "u_acc": 0.338, + "t_acc": 0.3148, + "punct_acc": null, + "threshold_t": 0.0996399000287056, + "threshold_adj": 0.25 + } + }, + "ms": { + "opus100": { + "u": 0.9581324710954342, + "t": 0.9584068195179307, + "punct": null, + "u_acc": 0.8395061728395061, + "t_acc": 0.8395061728395061, + "punct_acc": null, + "threshold_t": 0.2698633074760437, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7658498677248677, + "t": 0.7547525853775854, + "punct": null, + "u_acc": 0.3392857142857143, + "t_acc": 0.31845238095238093, + "punct_acc": null, + "threshold_t": 0.015180590562522411, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8315906084656085, + "t": 0.8287844265522838, + "punct": null, + "u_acc": 0.4880952380952381, + "t_acc": 0.47559523809523807, + "punct_acc": null, + "threshold_t": 0.027027007192373276, + "threshold_adj": 0.25 + } + }, + "mt": { + "opus100": { + "u": 0.9148014266435318, + "t": 0.9156111432427222, + "punct": null, + "u_acc": 0.7348178137651822, + "t_acc": 0.7388663967611336, + "punct_acc": null, + "threshold_t": 0.2781420052051544, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9456410256410257, + "t": 0.9433333333333332, + "punct": null, + "u_acc": 0.8538461538461538, + "t_acc": 0.8307692307692308, + "punct_acc": null, + "threshold_t": 0.044065289199352264, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.685897435897436, + "t": 0.5904761904761904, + "punct": null, + "u_acc": 0.11538461538461539, + "t_acc": 0.15384615384615385, + "punct_acc": null, + "threshold_t": 0.0010553739266470075, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8205128205128205, + "t": 0.8014652014652015, + "punct": null, + "u_acc": 0.4230769230769231, + "t_acc": 0.38461538461538464, + "punct_acc": null, + "threshold_t": 0.04599367454648018, + "threshold_adj": 0.25 + } + }, + "my": { + "opus100": { + "u": 0.9473118279569893, + "t": 0.9471102150537634, + "punct": null, + "u_acc": 0.8225806451612904, + "t_acc": 0.8286290322580645, + "punct_acc": null, + "threshold_t": 0.41932639479637146, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.9420285714285713, + "t": 0.9417857142857143, + "punct": null, + "u_acc": 0.8132, + "t_acc": 0.802, + "punct_acc": null, + "threshold_t": 0.028562014922499657, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9430019047619047, + "t": 0.9429577777777779, + "punct": null, + "u_acc": 0.818, + "t_acc": 0.8028, + "punct_acc": null, + "threshold_t": 0.01053391583263874, + "threshold_adj": 0.25 + } + }, + "ne": { + "opus100": { + "u": 0.9172052753448103, + "t": 0.9180509413067552, + "punct": null, + "u_acc": 0.7315010570824524, + "t_acc": 0.7272727272727273, + "punct_acc": null, + "threshold_t": 0.17043596506118774, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7444689587546731, + "t": 0.72167594089863, + "punct": null, + "u_acc": 0.305019305019305, + "t_acc": 0.2702702702702703, + "punct_acc": null, + "threshold_t": 0.02252039685845375, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7513194548908834, + "t": 0.7322153800094976, + "punct": null, + "u_acc": 0.29922779922779924, + "t_acc": 0.2857142857142857, + "punct_acc": null, + "threshold_t": 0.01884850673377514, + "threshold_adj": 0.25 + } + }, + "nl": { + "opus100": { + "u": 0.962, + "t": null, + "punct": null, + "u_acc": 0.818, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9744966442953019, + "t": 0.9762863534675615, + "punct": null, + "u_acc": 0.8993288590604027, + "t_acc": 0.8993288590604027, + "punct_acc": null, + "threshold_t": 0.05097693204879761, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8675166081871345, + "t": 0.868102574002574, + "punct": null, + "u_acc": 0.5872, + "t_acc": 0.5896, + "punct_acc": null, + "threshold_t": 0.2554411292076111, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9096547034252297, + "t": 0.9115365422565422, + "punct": null, + "u_acc": 0.6836, + "t_acc": 0.6956, + "punct_acc": null, + "threshold_t": 0.306928426027298, + "threshold_adj": 0.25 + } + }, + "no": { + "opus100": { + "u": 0.9727953498114789, + "t": 0.9733294930875577, + "punct": null, + "u_acc": 0.8850806451612904, + "t_acc": 0.8850806451612904, + "punct_acc": null, + "threshold_t": 0.3140411078929901, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9946969696969697, + "t": 0.9934573002754822, + "punct": null, + "u_acc": 0.9834710743801653, + "t_acc": 0.9772727272727273, + "punct_acc": null, + "threshold_t": 0.16307611763477325, + "threshold_adj": 0.25 + } + }, + "pa": { + "opus100": { + "u": 0.9101190476190477, + "t": 0.9117486338797814, + "punct": null, + "u_acc": 0.7069672131147541, + "t_acc": 0.6926229508196722, + "punct_acc": null, + "threshold_t": 0.12786263227462769, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7392281477387862, + "t": 0.7397812589301951, + "punct": null, + "u_acc": 0.2765957446808511, + "t_acc": 0.2978723404255319, + "punct_acc": null, + "threshold_t": 0.05214986950159073, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7989868287740631, + "t": 0.7651937306192625, + "punct": null, + "u_acc": 0.43617021276595747, + "t_acc": 0.3829787234042553, + "punct_acc": null, + "threshold_t": 0.00515219010412693, + "threshold_adj": 0.25 + } + }, + "pl": { + "ersatz": { + "u": 0.9944223107569722, + "t": 0.9930942895086322, + "punct": null, + "u_acc": 0.9800796812749004, + "t_acc": 0.9760956175298805, + "punct_acc": null, + "threshold_t": 0.3285367488861084, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9694988479262674, + "t": 0.9637960829493087, + "punct": null, + "u_acc": 0.8649193548387096, + "t_acc": 0.8387096774193549, + "punct_acc": null, + "threshold_t": 0.05730303004384041, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9971119133574009, + "t": 0.9139590854392299, + "punct": null, + "u_acc": 0.9855595667870036, + "t_acc": 0.7418772563176895, + "punct_acc": null, + "threshold_t": 0.9999696016311646, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8309618070818071, + "t": 0.8433181529581528, + "punct": null, + "u_acc": 0.5116, + "t_acc": 0.5112, + "punct_acc": null, + "threshold_t": 0.036038294434547424, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9019327561327561, + "t": 0.8879969408369408, + "punct": null, + "u_acc": 0.6936, + "t_acc": 0.6244, + "punct_acc": null, + "threshold_t": 0.03321656212210655, + "threshold_adj": 0.25 + } + }, + "ps": { + "ersatz": { + "u": 0.9229856165340037, + "t": 0.9237257366289625, + "punct": null, + "u_acc": 0.7346041055718475, + "t_acc": 0.7404692082111437, + "punct_acc": null, + "threshold_t": 0.7467349171638489, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9265033407572383, + "t": 0.9236080178173719, + "punct": null, + "u_acc": 0.7728285077951003, + "t_acc": 0.7661469933184856, + "punct_acc": null, + "threshold_t": 0.3107669949531555, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.724319314100336, + "t": 0.7157379927452919, + "punct": null, + "u_acc": 0.25547445255474455, + "t_acc": 0.26277372262773724, + "punct_acc": null, + "threshold_t": 0.07903829216957092, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7289885297184567, + "t": 0.7178550019394194, + "punct": null, + "u_acc": 0.26277372262773724, + "t_acc": 0.27007299270072993, + "punct_acc": null, + "threshold_t": 0.08234239369630814, + "threshold_adj": 0.25 + } + }, + "pt": { + "opus100": { + "u": 0.9679679969153653, + "t": 0.9697898592635436, + "punct": null, + "u_acc": 0.8582995951417004, + "t_acc": 0.8643724696356275, + "punct_acc": null, + "threshold_t": 0.3534495234489441, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9892694063926941, + "t": 0.9860730593607306, + "punct": null, + "u_acc": 0.9623287671232876, + "t_acc": 0.9554794520547946, + "punct_acc": null, + "threshold_t": 0.3783186078071594, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8387625152625152, + "t": 0.8331442767442768, + "punct": null, + "u_acc": 0.5264, + "t_acc": 0.4864, + "punct_acc": null, + "threshold_t": 0.07639459520578384, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9011009523809523, + "t": 0.9021099567099568, + "punct": null, + "u_acc": 0.682, + "t_acc": 0.6896, + "punct_acc": null, + "threshold_t": 0.3179333806037903, + "threshold_adj": 0.25 + } + }, + "ro": { + "ersatz": { + "u": 0.9953333333333333, + "t": 0.996, + "punct": null, + "u_acc": 0.978, + "t_acc": 0.984, + "punct_acc": null, + "threshold_t": 0.8954811096191406, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9702356902356902, + "t": 0.9715824915824915, + "punct": null, + "u_acc": 0.8828282828282829, + "t_acc": 0.8868686868686869, + "punct_acc": null, + "threshold_t": 0.29380476474761963, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9936628643852978, + "t": 0.9860583016476552, + "punct": null, + "u_acc": 0.973384030418251, + "t_acc": 0.9581749049429658, + "punct_acc": null, + "threshold_t": 0.8251592516899109, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8206790764790763, + "t": 0.8228838095238094, + "punct": null, + "u_acc": 0.4892, + "t_acc": 0.478, + "punct_acc": null, + "threshold_t": 0.11436111479997635, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8928203174603175, + "t": 0.892424126984127, + "punct": null, + "u_acc": 0.6652, + "t_acc": 0.6608, + "punct_acc": null, + "threshold_t": 0.1856377124786377, + "threshold_adj": 0.25 + } + }, + "ru": { + "ersatz": { + "u": 0.996774193548387, + "t": 0.9962365591397849, + "punct": null, + "u_acc": 0.9838709677419355, + "t_acc": 0.9838709677419355, + "punct_acc": null, + "threshold_t": 0.5360589623451233, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9491217798594848, + "t": null, + "punct": null, + "u_acc": 0.8155737704918032, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9514357864357865, + "t": 0.955930735930736, + "punct": null, + "u_acc": 0.8318181818181818, + "t_acc": 0.85, + "punct_acc": null, + "threshold_t": 0.4840237498283386, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8387212698412699, + "t": 0.828416305916306, + "punct": null, + "u_acc": 0.514, + "t_acc": 0.4616, + "punct_acc": null, + "threshold_t": 0.07608737796545029, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.897336507936508, + "t": 0.8971288888888889, + "punct": null, + "u_acc": 0.6644, + "t_acc": 0.6628, + "punct_acc": null, + "threshold_t": 0.23210446536540985, + "threshold_adj": 0.25 + } + }, + "si": { + "opus100": { + "u": 0.9177515360983103, + "t": 0.9168682795698925, + "punct": null, + "u_acc": 0.6854838709677419, + "t_acc": 0.6975806451612904, + "punct_acc": null, + "threshold_t": 0.4628986120223999, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7501918408895153, + "t": 0.7053738808184774, + "punct": null, + "u_acc": 0.31007751937984496, + "t_acc": 0.2558139534883721, + "punct_acc": null, + "threshold_t": 0.013289653696119785, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7575008109891831, + "t": 0.7200122014075502, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.2713178294573643, + "punct_acc": null, + "threshold_t": 0.019190356135368347, + "threshold_adj": 0.25 + } + }, + "sk": { + "opus100": { + "u": 0.9716205837173578, + "t": 0.9709485407066052, + "punct": null, + "u_acc": 0.8870967741935484, + "t_acc": 0.8810483870967742, + "punct_acc": null, + "threshold_t": 0.11327581852674484, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9860377358490566, + "t": 0.981006289308176, + "punct": null, + "u_acc": 0.9584905660377359, + "t_acc": 0.9433962264150944, + "punct_acc": null, + "threshold_t": 0.5051817297935486, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8377268176268177, + "t": 0.8198992339078546, + "punct": null, + "u_acc": 0.5056, + "t_acc": 0.45, + "punct_acc": null, + "threshold_t": 0.050622206181287766, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8980011033411034, + "t": 0.8974491233912286, + "punct": null, + "u_acc": 0.6636, + "t_acc": 0.6676, + "punct_acc": null, + "threshold_t": 0.2900650203227997, + "threshold_adj": 0.25 + } + }, + "sl": { + "opus100": { + "u": 0.9664754255115701, + "t": 0.9609294320137693, + "punct": null, + "u_acc": 0.8493975903614458, + "t_acc": 0.8253012048192772, + "punct_acc": null, + "threshold_t": 0.05151665583252907, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9955357142857142, + "t": 0.9970833333333333, + "punct": null, + "u_acc": 0.98125, + "t_acc": 0.9875, + "punct_acc": null, + "threshold_t": 0.49169063568115234, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8435489466089466, + "t": 0.8443747355912062, + "punct": null, + "u_acc": 0.5404, + "t_acc": 0.5164, + "punct_acc": null, + "threshold_t": 0.05924160033464432, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9066025974025975, + "t": 0.9066210101010099, + "punct": null, + "u_acc": 0.698, + "t_acc": 0.7024, + "punct_acc": null, + "threshold_t": 0.3213497996330261, + "threshold_adj": 0.25 + } + }, + "sq": { + "opus100": { + "u": 0.9715737514518002, + "t": 0.9746128532713898, + "punct": null, + "u_acc": 0.8841463414634146, + "t_acc": 0.8983739837398373, + "punct_acc": null, + "threshold_t": 0.5294507145881653, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9555555555555555, + "t": null, + "punct": null, + "u_acc": 0.8666666666666667, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7720403174603174, + "t": 0.7657260206460207, + "punct": null, + "u_acc": 0.3688, + "t_acc": 0.3504, + "punct_acc": null, + "threshold_t": 0.02996820956468582, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8452485714285715, + "t": 0.8302135353535354, + "punct": null, + "u_acc": 0.5348, + "t_acc": 0.4808, + "punct_acc": null, + "threshold_t": 0.02876061387360096, + "threshold_adj": 0.25 + } + }, + "sr": { + "opus100": { + "u": 0.9736278447121821, + "t": 0.9661311914323962, + "punct": null, + "u_acc": 0.8775100401606426, + "t_acc": 0.8453815261044176, + "punct_acc": null, + "threshold_t": 0.0625503733754158, + "threshold_adj": 0.25 + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null, + "u_acc": 1.0, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.8676129579544067, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8230555572532042, + "t": 0.821675468975469, + "punct": null, + "u_acc": 0.4912, + "t_acc": 0.4892, + "punct_acc": null, + "threshold_t": 0.11506707221269608, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8994581041181041, + "t": 0.8992537662337663, + "punct": null, + "u_acc": 0.6784, + "t_acc": 0.6784, + "punct_acc": null, + "threshold_t": 0.2678655982017517, + "threshold_adj": 0.25 + } + }, + "sv": { + "opus100": { + "u": 0.967489003633582, + "t": 0.9672117039586919, + "punct": null, + "u_acc": 0.8554216867469879, + "t_acc": 0.8534136546184738, + "punct_acc": null, + "threshold_t": 0.11946509778499603, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9680878552971576, + "t": 0.9652454780361756, + "punct": null, + "u_acc": 0.8798449612403101, + "t_acc": 0.8682170542635659, + "punct_acc": null, + "threshold_t": 0.10406601428985596, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8363161904761907, + "t": 0.8405295815295817, + "punct": null, + "u_acc": 0.516, + "t_acc": 0.5152, + "punct_acc": null, + "threshold_t": 0.07248911261558533, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8979314285714285, + "t": 0.8997561904761904, + "punct": null, + "u_acc": 0.6668, + "t_acc": 0.6664, + "punct_acc": null, + "threshold_t": 0.19254335761070251, + "threshold_adj": 0.25 + } + }, + "ta": { + "ersatz": { + "u": 0.9835325365205844, + "t": 0.9811420982735723, + "punct": null, + "u_acc": 0.9282868525896414, + "t_acc": 0.9243027888446215, + "punct_acc": null, + "threshold_t": 0.9014356732368469, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8999322493224932, + "t": 0.8989159891598916, + "punct": null, + "u_acc": 0.6666666666666666, + "t_acc": 0.6727642276422764, + "punct_acc": null, + "threshold_t": 0.48352038860321045, + "threshold_adj": 0.25 + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null, + "u_acc": 1.0, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.9997159838676453, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7107241710444557, + "t": 0.6967592352289862, + "punct": null, + "u_acc": 0.2569395017793594, + "t_acc": 0.23416370106761566, + "punct_acc": null, + "threshold_t": 0.0626593828201294, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7764354585706899, + "t": 0.7594564352215598, + "punct": null, + "u_acc": 0.3501779359430605, + "t_acc": 0.3096085409252669, + "punct_acc": null, + "threshold_t": 0.030735300853848457, + "threshold_adj": 0.25 + } + }, + "te": { + "opus100": { + "u": 0.9148979591836734, + "t": 0.917687074829932, + "punct": null, + "u_acc": 0.7081632653061225, + "t_acc": 0.7163265306122449, + "punct_acc": null, + "threshold_t": 0.27271151542663574, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6925504505564929, + "t": 0.689035368793677, + "punct": null, + "u_acc": 0.1933534743202417, + "t_acc": 0.18882175226586104, + "punct_acc": null, + "threshold_t": 0.23542112112045288, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7423116577950416, + "t": 0.7391910036925142, + "punct": null, + "u_acc": 0.28700906344410876, + "t_acc": 0.283987915407855, + "punct_acc": null, + "threshold_t": 0.16129159927368164, + "threshold_adj": 0.25 + } + }, + "tg": { + "opus100": { + "u": 0.9488621151271753, + "t": 0.9437081659973225, + "punct": null, + "u_acc": 0.8172690763052208, + "t_acc": 0.8052208835341366, + "punct_acc": null, + "threshold_t": 0.3201037347316742, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7369883040935673, + "t": 0.7506787802840434, + "punct": null, + "u_acc": 0.2631578947368421, + "t_acc": 0.2894736842105263, + "punct_acc": null, + "threshold_t": 0.08675067126750946, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7809106098579782, + "t": 0.8110275689223058, + "punct": null, + "u_acc": 0.35526315789473684, + "t_acc": 0.42105263157894735, + "punct_acc": null, + "threshold_t": 0.03267653286457062, + "threshold_adj": 0.25 + } + }, + "th": { + "opus100": { + "u": 0.8636075036075036, + "t": 0.8624627224627226, + "punct": null, + "u_acc": 0.5050505050505051, + "t_acc": 0.498989898989899, + "punct_acc": null, + "threshold_t": 0.21616829931735992, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9085333333333333, + "t": null, + "punct": null, + "u_acc": 0.736, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.751109090909091, + "t": 0.7495839036825244, + "punct": null, + "u_acc": 0.3108, + "t_acc": 0.3068, + "punct_acc": null, + "threshold_t": 0.0045921653509140015, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.752932582972583, + "t": 0.7516781841846311, + "punct": null, + "u_acc": 0.3148, + "t_acc": 0.3124, + "punct_acc": null, + "threshold_t": 0.0045921653509140015, + "threshold_adj": 0.25 + } + }, + "tr": { + "ersatz": { + "u": 0.9891907294832828, + "t": 0.9888361195542047, + "punct": null, + "u_acc": 0.9601063829787234, + "t_acc": 0.9601063829787234, + "punct_acc": null, + "threshold_t": 0.3593780994415283, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9624156545209176, + "t": 0.9550607287449393, + "punct": null, + "u_acc": 0.8481781376518218, + "t_acc": 0.8097165991902834, + "punct_acc": null, + "threshold_t": 0.07877299189567566, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9867878787878788, + "t": 0.9859393939393939, + "punct": null, + "u_acc": 0.9490909090909091, + "t_acc": 0.9490909090909091, + "punct_acc": null, + "threshold_t": 0.6669154763221741, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8340050793650795, + "t": 0.8185655056055055, + "punct": null, + "u_acc": 0.4952, + "t_acc": 0.4464, + "punct_acc": null, + "threshold_t": 0.023632079362869263, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8856450793650794, + "t": 0.8845669841269842, + "punct": null, + "u_acc": 0.624, + "t_acc": 0.62, + "punct_acc": null, + "threshold_t": 0.17539633810520172, + "threshold_adj": 0.25 + } + }, + "uk": { + "opus100": { + "u": 0.9587779690189329, + "t": 0.9587779690189328, + "punct": null, + "u_acc": 0.8192771084337349, + "t_acc": 0.8192771084337349, + "punct_acc": null, + "threshold_t": 0.19237442314624786, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.975595238095238, + "t": 0.9764880952380952, + "punct": null, + "u_acc": 0.9241071428571429, + "t_acc": 0.9285714285714286, + "punct_acc": null, + "threshold_t": 0.5130528211593628, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8214952380952382, + "t": 0.806336015096015, + "punct": null, + "u_acc": 0.4796, + "t_acc": 0.4172, + "punct_acc": null, + "threshold_t": 0.02443261258304119, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8933983638583639, + "t": 0.8817654487734485, + "punct": null, + "u_acc": 0.6568, + "t_acc": 0.6036, + "punct_acc": null, + "threshold_t": 0.095364049077034, + "threshold_adj": 0.25 + } + }, + "ur": { + "opus100": { + "u": 0.8389489042031415, + "t": 0.8190908197264131, + "punct": null, + "u_acc": 0.5084745762711864, + "t_acc": 0.4385593220338983, + "punct_acc": null, + "threshold_t": 0.09457703679800034, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9848614072494669, + "t": 0.9833688699360341, + "punct": null, + "u_acc": 0.9477611940298507, + "t_acc": 0.9402985074626866, + "punct_acc": null, + "threshold_t": 0.18240685760974884, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7816052024942056, + "t": 0.7787401618593809, + "punct": null, + "u_acc": 0.3910585817060637, + "t_acc": 0.3854059609455293, + "punct_acc": null, + "threshold_t": 0.1797940731048584, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8067155409395903, + "t": 0.7990697979649676, + "punct": null, + "u_acc": 0.44964028776978415, + "t_acc": 0.4188078108941418, + "punct_acc": null, + "threshold_t": 0.10159841179847717, + "threshold_adj": 0.25 + } + }, + "uz": { + "opus100": { + "u": 0.9406122448979591, + "t": 0.9391836734693878, + "punct": null, + "u_acc": 0.763265306122449, + "t_acc": 0.7979591836734694, + "punct_acc": null, + "threshold_t": 0.529529869556427, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7705311097716162, + "t": 0.7627736831850757, + "punct": null, + "u_acc": 0.33016877637130804, + "t_acc": 0.3259493670886076, + "punct_acc": null, + "threshold_t": 0.00559146236628294, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8235483222824995, + "t": 0.825956901748041, + "punct": null, + "u_acc": 0.4588607594936709, + "t_acc": 0.4704641350210971, + "punct_acc": null, + "threshold_t": 0.03608600050210953, + "threshold_adj": 0.25 + } + }, + "vi": { + "opus100": { + "u": 0.9631393298059965, + "t": 0.9635508524397415, + "punct": null, + "u_acc": 0.8477366255144033, + "t_acc": 0.8497942386831275, + "punct_acc": null, + "threshold_t": 0.30781763792037964, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9933333333333334, + "t": 0.991, + "punct": null, + "u_acc": 0.97, + "t_acc": 0.965, + "punct_acc": null, + "threshold_t": 0.7917988300323486, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7986120634920635, + "t": 0.7889322144522144, + "punct": null, + "u_acc": 0.4304, + "t_acc": 0.3968, + "punct_acc": null, + "threshold_t": 0.015247425995767117, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8744546031746031, + "t": 0.8718650793650795, + "punct": null, + "u_acc": 0.602, + "t_acc": 0.5884, + "punct_acc": null, + "threshold_t": 0.13723838329315186, + "threshold_adj": 0.25 + } + }, + "xh": { + "opus100": { + "u": 0.9418395573997235, + "t": 0.9430843706777317, + "punct": null, + "u_acc": 0.7904564315352697, + "t_acc": 0.8008298755186722, + "punct_acc": null, + "threshold_t": 0.3049139678478241, + "threshold_adj": 0.25 + } + }, + "yi": { + "opus100": { + "u": 0.9334378265412747, + "t": 0.9426332288401253, + "punct": null, + "u_acc": 0.786833855799373, + "t_acc": 0.8119122257053292, + "punct_acc": null, + "threshold_t": 0.11939600855112076, + "threshold_adj": 0.25 + } + }, + "yo": { + "opus100": { + "u": 0.8417018798418117, + "t": null, + "punct": null, + "u_acc": 0.5085324232081911, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.8237500000000001, + "t": null, + "punct": null, + "u_acc": 0.4375, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9475142857142856, + "t": 0.9498838095238094, + "punct": null, + "u_acc": 0.8148, + "t_acc": 0.8332, + "punct_acc": null, + "threshold_t": 0.39778682589530945, + "threshold_adj": 0.25 + } + }, + "zh": { + "ersatz": { + "u": 0.9652666666666666, + "t": 0.9640761904761905, + "punct": null, + "u_acc": 0.924, + "t_acc": 0.912, + "punct_acc": null, + "threshold_t": 0.00892738439142704, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9179505605058925, + "t": 0.8811392162498802, + "punct": null, + "u_acc": 0.744466800804829, + "t_acc": 0.5995975855130785, + "punct_acc": null, + "threshold_t": 0.005369078367948532, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.996, + "t": 0.9927999999999999, + "punct": null, + "u_acc": 0.992, + "t_acc": 0.976, + "punct_acc": null, + "threshold_t": 0.019473789259791374, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7272939876839185, + "t": 0.7080064500597572, + "punct": null, + "u_acc": 0.2561697926949654, + "t_acc": 0.24679170779861798, + "punct_acc": null, + "threshold_t": 0.007393041625618935, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7372103135429888, + "t": 0.7333701562230684, + "punct": null, + "u_acc": 0.2818361303060217, + "t_acc": 0.2917077986179664, + "punct_acc": null, + "threshold_t": 0.03242524340748787, + "threshold_adj": 0.25 + } + }, + "zu": { + "opus100": { + "u": 0.9611212861212861, + "t": 0.9554945054945055, + "punct": null, + "u_acc": 0.8653846153846154, + "t_acc": 0.8333333333333334, + "punct_acc": null, + "threshold_t": 0.0744938999414444, + "threshold_adj": 0.25 + } + }, + "tr-de": {}, + "es-en": {}, + "vi-en": {}, + "en-de": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/sat-sm-12l.json b/wtpsplit/evaluation/evaluation_results/short/sat-sm-12l.json new file mode 100644 index 00000000..7defa162 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/sat-sm-12l.json @@ -0,0 +1,3346 @@ +{ + "af": { + "opus100": { + "u": 0.9358913813459269, + "t": 0.9361078315623771, + "punct": null, + "u_acc": 0.762396694214876, + "t_acc": 0.78099173553719, + "punct_acc": null, + "threshold_t": 0.5267133712768555, + "threshold_adj": 0.25 + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null, + "u_acc": 1.0, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.9878134727478027, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8296703296703296, + "t": 0.8082271062271061, + "punct": null, + "u_acc": 0.48, + "t_acc": 0.4246153846153846, + "punct_acc": null, + "threshold_t": 0.06166418269276619, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.894168498168498, + "t": 0.8958095238095239, + "punct": null, + "u_acc": 0.6369230769230769, + "t_acc": 0.6430769230769231, + "punct_acc": null, + "threshold_t": 0.33285531401634216, + "threshold_adj": 0.25 + } + }, + "am": { + "opus100": { + "u": 0.9068559954102122, + "t": 0.9058041690571812, + "punct": null, + "u_acc": 0.678714859437751, + "t_acc": 0.6726907630522089, + "punct_acc": null, + "threshold_t": 0.20142008364200592, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7088479662698413, + "t": 0.7015500992063493, + "punct": null, + "u_acc": 0.2265625, + "t_acc": 0.2265625, + "punct_acc": null, + "threshold_t": 0.05576714500784874, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7159908234126984, + "t": 0.6999131944444444, + "punct": null, + "u_acc": 0.25, + "t_acc": 0.21875, + "punct_acc": null, + "threshold_t": 0.047457821667194366, + "threshold_adj": 0.25 + } + }, + "ar": { + "ersatz": { + "u": 0.9006332320162107, + "t": 0.917160587639311, + "punct": null, + "u_acc": 0.675531914893617, + "t_acc": 0.7101063829787234, + "punct_acc": null, + "threshold_t": 0.06891521066427231, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8879709313444254, + "t": 0.8761076050232678, + "punct": null, + "u_acc": 0.6405622489959839, + "t_acc": 0.5903614457831325, + "punct_acc": null, + "threshold_t": 0.08384105563163757, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9410737628384686, + "t": 0.9345378151260504, + "punct": null, + "u_acc": 0.7941176470588235, + "t_acc": 0.7823529411764706, + "punct_acc": null, + "threshold_t": 0.45716428756713867, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7413171428571428, + "t": 0.7222593967143968, + "punct": null, + "u_acc": 0.2776, + "t_acc": 0.2648, + "punct_acc": null, + "threshold_t": 0.03294433280825615, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.769233851294904, + "t": 0.769837158011071, + "punct": null, + "u_acc": 0.3416, + "t_acc": 0.3572, + "punct_acc": null, + "threshold_t": 0.09385097026824951, + "threshold_adj": 0.25 + } + }, + "az": { + "opus100": { + "u": 0.9132530120481926, + "t": 0.9131382673551348, + "punct": null, + "u_acc": 0.7008032128514057, + "t_acc": 0.6907630522088354, + "punct_acc": null, + "threshold_t": 0.15619401633739471, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8041450898720401, + "t": 0.8105881936555697, + "punct": null, + "u_acc": 0.4178486997635934, + "t_acc": 0.4391252955082742, + "punct_acc": null, + "threshold_t": 0.01600312441587448, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8558332395211827, + "t": 0.8619329055499269, + "punct": null, + "u_acc": 0.5460992907801419, + "t_acc": 0.5526004728132388, + "punct_acc": null, + "threshold_t": 0.024036891758441925, + "threshold_adj": 0.25 + } + }, + "be": { + "opus100": { + "u": 0.9332072543885171, + "t": 0.9324701774803608, + "punct": null, + "u_acc": 0.7841140529531568, + "t_acc": 0.780040733197556, + "punct_acc": null, + "threshold_t": 0.1734095960855484, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9468578509470703, + "t": 0.9427509293680297, + "punct": null, + "u_acc": 0.8327137546468402, + "t_acc": 0.8215613382899628, + "punct_acc": null, + "threshold_t": 0.49903181195259094, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.828099667294995, + "t": 0.8292620747195698, + "punct": null, + "u_acc": 0.49123945489941595, + "t_acc": 0.49059052563270605, + "punct_acc": null, + "threshold_t": 0.18859070539474487, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8931501910736176, + "t": 0.8932789468805044, + "punct": null, + "u_acc": 0.6489292667099286, + "t_acc": 0.6515249837767684, + "punct_acc": null, + "threshold_t": 0.275354266166687, + "threshold_adj": 0.25 + } + }, + "bg": { + "opus100": { + "u": 0.9702834239908388, + "t": 0.9705506250596431, + "punct": null, + "u_acc": 0.8617234468937875, + "t_acc": 0.8617234468937875, + "punct_acc": null, + "threshold_t": 0.26644113659858704, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9988052568697731, + "t": 0.9988052568697731, + "punct": null, + "u_acc": 0.996415770609319, + "t_acc": 0.996415770609319, + "punct_acc": null, + "threshold_t": 0.3684331178665161, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8301029810712164, + "t": 0.8291017082017083, + "punct": null, + "u_acc": 0.4984, + "t_acc": 0.4936, + "punct_acc": null, + "threshold_t": 0.21827085316181183, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8960122366522366, + "t": 0.8985462298812299, + "punct": null, + "u_acc": 0.6576, + "t_acc": 0.6708, + "punct_acc": null, + "threshold_t": 0.4103734493255615, + "threshold_adj": 0.25 + } + }, + "bn": { + "opus100": { + "u": 0.9442655935613682, + "t": 0.9399827536648462, + "punct": null, + "u_acc": 0.7847082494969819, + "t_acc": 0.7585513078470825, + "punct_acc": null, + "threshold_t": 0.19109474122524261, + "threshold_adj": 0.25 + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null, + "u_acc": 1.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6364951330720562, + "t": 0.6038609125916818, + "punct": null, + "u_acc": 0.12384615384615384, + "t_acc": 0.09692307692307692, + "punct_acc": null, + "threshold_t": 0.14795920252799988, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7423357753357753, + "t": 0.7190091416878747, + "punct": null, + "u_acc": 0.28846153846153844, + "t_acc": 0.2553846153846154, + "punct_acc": null, + "threshold_t": 0.03250708058476448, + "threshold_adj": 0.25 + } + }, + "ca": { + "opus100": { + "u": 0.9631572169097525, + "t": 0.9559711868028298, + "punct": null, + "u_acc": 0.8519269776876268, + "t_acc": 0.8235294117647058, + "punct_acc": null, + "threshold_t": 0.08215601742267609, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9978354978354979, + "t": 0.9841269841269842, + "punct": null, + "u_acc": 0.9891774891774892, + "t_acc": 0.9523809523809523, + "punct_acc": null, + "threshold_t": 0.9989295601844788, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8205933333333334, + "t": 0.8000615584415585, + "punct": null, + "u_acc": 0.4788, + "t_acc": 0.404, + "punct_acc": null, + "threshold_t": 0.030712280422449112, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8955073015873015, + "t": 0.8940368831168831, + "punct": null, + "u_acc": 0.6688, + "t_acc": 0.6596, + "punct_acc": null, + "threshold_t": 0.19296707212924957, + "threshold_adj": 0.25 + } + }, + "ceb": { + "ud": { + "u": 0.9716312056737589, + "t": null, + "punct": null, + "u_acc": 0.9148936170212766, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6595238095238096, + "t": 0.6595238095238096, + "punct": null, + "u_acc": 0.07142857142857142, + "t_acc": 0.07142857142857142, + "punct_acc": null, + "threshold_t": 0.19813048839569092, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7642857142857143, + "t": 0.7880952380952381, + "punct": null, + "u_acc": 0.35714285714285715, + "t_acc": 0.42857142857142855, + "punct_acc": null, + "threshold_t": 0.17615289986133575, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9430304761904761, + "t": 0.9437771428571429, + "punct": null, + "u_acc": 0.8116, + "t_acc": 0.8184, + "punct_acc": null, + "threshold_t": 0.321523517370224, + "threshold_adj": 0.25 + } + }, + "cs": { + "ersatz": { + "u": 0.9902006172839506, + "t": 0.9929783950617285, + "punct": null, + "u_acc": 0.9606481481481481, + "t_acc": 0.9745370370370371, + "punct_acc": null, + "threshold_t": 0.9860545992851257, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.953203639179249, + "t": 0.9553619821912505, + "punct": null, + "u_acc": 0.8048780487804879, + "t_acc": 0.8170731707317073, + "punct_acc": null, + "threshold_t": 0.3447602689266205, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9817998597967053, + "t": 0.9786409043112514, + "punct": null, + "u_acc": 0.9388801261829653, + "t_acc": 0.9199526813880127, + "punct_acc": null, + "threshold_t": 0.09427179396152496, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8330733309940981, + "t": 0.8255898515976776, + "punct": null, + "u_acc": 0.4952, + "t_acc": 0.4716, + "punct_acc": null, + "threshold_t": 0.13281674683094025, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8916379346257607, + "t": 0.8899776171654432, + "punct": null, + "u_acc": 0.6408, + "t_acc": 0.6332, + "punct_acc": null, + "threshold_t": 0.2116090953350067, + "threshold_adj": 0.25 + } + }, + "cy": { + "opus100": { + "u": 0.9064497123449088, + "t": 0.9057946905108476, + "punct": null, + "u_acc": 0.6746724890829694, + "t_acc": 0.6681222707423581, + "punct_acc": null, + "threshold_t": 0.1902681589126587, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9991596638655462, + "t": 0.9985994397759105, + "punct": null, + "u_acc": 0.9957983193277311, + "t_acc": 0.9957983193277311, + "punct_acc": null, + "threshold_t": 0.6543346643447876, + "threshold_adj": 0.25 + } + }, + "da": { + "opus100": { + "u": 0.9676171274961597, + "t": 0.9666090629800307, + "punct": null, + "u_acc": 0.8669354838709677, + "t_acc": 0.8629032258064516, + "punct_acc": null, + "threshold_t": 0.20439939200878143, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9895981087470449, + "t": 0.9914893617021278, + "punct": null, + "u_acc": 0.9574468085106383, + "t_acc": 0.9716312056737588, + "punct_acc": null, + "threshold_t": 0.610223650932312, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8262991053391053, + "t": 0.8276295304695305, + "punct": null, + "u_acc": 0.4936, + "t_acc": 0.4844, + "punct_acc": null, + "threshold_t": 0.01671995222568512, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8999409523809525, + "t": 0.9001098412698413, + "punct": null, + "u_acc": 0.6804, + "t_acc": 0.6732, + "punct_acc": null, + "threshold_t": 0.08376247435808182, + "threshold_adj": 0.25 + } + }, + "de": { + "ersatz": { + "u": 0.9918533604887984, + "t": 0.9926680244399186, + "punct": null, + "u_acc": 0.9674134419551935, + "t_acc": 0.9714867617107943, + "punct_acc": null, + "threshold_t": 0.35526859760284424, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9325899136025719, + "t": 0.9185252159935705, + "punct": null, + "u_acc": 0.7426160337552743, + "t_acc": 0.6877637130801688, + "punct_acc": null, + "threshold_t": 0.03034534491598606, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9831967213114753, + "t": 0.980464480874317, + "punct": null, + "u_acc": 0.9467213114754098, + "t_acc": 0.9385245901639344, + "punct_acc": null, + "threshold_t": 0.597312867641449, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8490209523809524, + "t": 0.854089264069264, + "punct": null, + "u_acc": 0.5428, + "t_acc": 0.5456, + "punct_acc": null, + "threshold_t": 0.12303541600704193, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9055657142857144, + "t": 0.9025673593073592, + "punct": null, + "u_acc": 0.6968, + "t_acc": 0.6764, + "punct_acc": null, + "threshold_t": 0.133021280169487, + "threshold_adj": 0.25 + } + }, + "el": { + "opus100": { + "u": 0.9686077643908969, + "t": 0.9683400267737617, + "punct": null, + "u_acc": 0.8654618473895582, + "t_acc": 0.8654618473895582, + "punct_acc": null, + "threshold_t": 0.21605639159679413, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.983625730994152, + "t": 0.9923976608187134, + "punct": null, + "u_acc": 0.9473684210526315, + "t_acc": 0.9736842105263158, + "punct_acc": null, + "threshold_t": 0.1934049427509308, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8296939090149615, + "t": 0.8134828428543135, + "punct": null, + "u_acc": 0.5148, + "t_acc": 0.4536, + "punct_acc": null, + "threshold_t": 0.013980056159198284, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.895189561684653, + "t": 0.8938963252959986, + "punct": null, + "u_acc": 0.6644, + "t_acc": 0.6556, + "punct_acc": null, + "threshold_t": 0.15795426070690155, + "threshold_adj": 0.25 + } + }, + "en": { + "ersatz": { + "u": 0.9902734510211145, + "t": 0.9925579785392868, + "punct": null, + "u_acc": 0.9595015576323987, + "t_acc": 0.9709241952232607, + "punct_acc": null, + "threshold_t": 0.5182924866676331, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.967741935483871, + "t": 0.956125192012289, + "punct": null, + "u_acc": 0.8649193548387096, + "t_acc": 0.8064516129032258, + "punct_acc": null, + "threshold_t": 0.012149212881922722, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9753041362530415, + "t": 0.9794403892944039, + "punct": null, + "u_acc": 0.9197080291970803, + "t_acc": 0.9306569343065694, + "punct_acc": null, + "threshold_t": 0.10314138978719711, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8218933333333335, + "t": 0.812737102897103, + "punct": null, + "u_acc": 0.4844, + "t_acc": 0.4508, + "punct_acc": null, + "threshold_t": 0.06911183893680573, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8970457142857143, + "t": 0.8954597402597403, + "punct": null, + "u_acc": 0.6644, + "t_acc": 0.6548, + "punct_acc": null, + "threshold_t": 0.18705546855926514, + "threshold_adj": 0.25 + } + }, + "eo": { + "opus100": { + "u": 0.9711021505376345, + "t": 0.9704397081413211, + "punct": null, + "u_acc": 0.8830645161290323, + "t_acc": 0.875, + "punct_acc": null, + "threshold_t": 0.15519686043262482, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7684185662569121, + "t": 0.7372478885636781, + "punct": null, + "u_acc": 0.35150375939849626, + "t_acc": 0.287593984962406, + "punct_acc": null, + "threshold_t": 0.005447076167911291, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8257479014997812, + "t": 0.8259575254876007, + "punct": null, + "u_acc": 0.4818295739348371, + "t_acc": 0.4667919799498747, + "punct_acc": null, + "threshold_t": 0.028809091076254845, + "threshold_adj": 0.25 + } + }, + "es": { + "ersatz": { + "u": 0.9964316797214969, + "t": null, + "punct": null, + "u_acc": 0.9856396866840731, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9686556133924555, + "t": 0.9580618212197162, + "punct": null, + "u_acc": 0.8724696356275303, + "t_acc": 0.8340080971659919, + "punct_acc": null, + "threshold_t": 0.045676928013563156, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9945736434108526, + "t": 0.9903875968992248, + "punct": null, + "u_acc": 0.9744186046511628, + "t_acc": 0.9674418604651163, + "punct_acc": null, + "threshold_t": 0.9583603739738464, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8154441188427396, + "t": 0.8183369885669884, + "punct": null, + "u_acc": 0.464, + "t_acc": 0.4664, + "punct_acc": null, + "threshold_t": 0.180559441447258, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.885909839121452, + "t": 0.8834520893485598, + "punct": null, + "u_acc": 0.6468, + "t_acc": 0.648, + "punct_acc": null, + "threshold_t": 0.42110100388526917, + "threshold_adj": 0.25 + } + }, + "et": { + "ersatz": { + "u": 0.99510582010582, + "t": 0.995899470899471, + "punct": null, + "u_acc": 0.9781746031746031, + "t_acc": 0.9821428571428571, + "punct_acc": null, + "threshold_t": 0.43015146255493164, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9598451256345993, + "t": 0.9605455947561211, + "punct": null, + "u_acc": 0.8380566801619433, + "t_acc": 0.840080971659919, + "punct_acc": null, + "threshold_t": 0.42653438448905945, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9868573797678276, + "t": 0.9878524046434495, + "punct": null, + "u_acc": 0.9564676616915423, + "t_acc": 0.9614427860696517, + "punct_acc": null, + "threshold_t": 0.2837121784687042, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8476597402597403, + "t": 0.8349727450327451, + "punct": null, + "u_acc": 0.5368, + "t_acc": 0.488, + "punct_acc": null, + "threshold_t": 0.05510525032877922, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9019977777777778, + "t": 0.9037761904761905, + "punct": null, + "u_acc": 0.6768, + "t_acc": 0.6892, + "punct_acc": null, + "threshold_t": 0.39433321356773376, + "threshold_adj": 0.25 + } + }, + "eu": { + "opus100": { + "u": 0.9618854829381145, + "t": 0.9617505301715829, + "punct": null, + "u_acc": 0.8461538461538461, + "t_acc": 0.8481781376518218, + "punct_acc": null, + "threshold_t": 0.38719433546066284, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9958518518518519, + "t": 0.9954074074074073, + "punct": null, + "u_acc": 0.9822222222222222, + "t_acc": 0.9844444444444445, + "punct_acc": null, + "threshold_t": 0.9844362735748291, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7819631123058542, + "t": 0.7769931121745637, + "punct": null, + "u_acc": 0.39381720430107525, + "t_acc": 0.3629032258064516, + "punct_acc": null, + "threshold_t": 0.033414389938116074, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8676763312852022, + "t": 0.8647326762246117, + "punct": null, + "u_acc": 0.5987903225806451, + "t_acc": 0.581989247311828, + "punct_acc": null, + "threshold_t": 0.10609612613916397, + "threshold_adj": 0.25 + } + }, + "fa": { + "opus100": { + "u": 0.863482520596749, + "t": 0.8439694685185667, + "punct": null, + "u_acc": 0.5971943887775552, + "t_acc": 0.5290581162324649, + "punct_acc": null, + "threshold_t": 0.03637668862938881, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9952380952380951, + "t": 0.9967032967032966, + "punct": null, + "u_acc": 0.978021978021978, + "t_acc": 0.9835164835164835, + "punct_acc": null, + "threshold_t": 0.6403377056121826, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.797861483481058, + "t": 0.7979373193473193, + "punct": null, + "u_acc": 0.4224, + "t_acc": 0.4228, + "punct_acc": null, + "threshold_t": 0.24335354566574097, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8275830130625874, + "t": 0.8272251663891664, + "punct": null, + "u_acc": 0.4896, + "t_acc": 0.4888, + "punct_acc": null, + "threshold_t": 0.23424072563648224, + "threshold_adj": 0.25 + } + }, + "fi": { + "ersatz": { + "u": 0.9963927855711423, + "t": 0.9983967935871744, + "punct": null, + "u_acc": 0.9819639278557114, + "t_acc": 0.9919839679358717, + "punct_acc": null, + "threshold_t": 0.4159590005874634, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9759892689470154, + "t": 0.9692152917505031, + "punct": null, + "u_acc": 0.8853118712273642, + "t_acc": 0.8611670020120724, + "punct_acc": null, + "threshold_t": 0.043404825031757355, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9912371134020619, + "t": 0.9927835051546393, + "punct": null, + "u_acc": 0.9664948453608248, + "t_acc": 0.9742268041237113, + "punct_acc": null, + "threshold_t": 0.30064690113067627, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8359507936507936, + "t": 0.831853553113553, + "punct": null, + "u_acc": 0.5268, + "t_acc": 0.4924, + "punct_acc": null, + "threshold_t": 0.07716461271047592, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.898975238095238, + "t": 0.8993488888888889, + "punct": null, + "u_acc": 0.6792, + "t_acc": 0.6772, + "punct_acc": null, + "threshold_t": 0.19953423738479614, + "threshold_adj": 0.25 + } + }, + "fr": { + "ersatz": { + "u": 0.9959742351046699, + "t": 0.9948470209339775, + "punct": null, + "u_acc": 0.9830917874396136, + "t_acc": 0.9806763285024155, + "punct_acc": null, + "threshold_t": 0.6386837363243103, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9538974210373805, + "t": null, + "punct": null, + "u_acc": 0.8113590263691683, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9980769230769231, + "t": 0.9980769230769231, + "punct": null, + "u_acc": 0.9903846153846154, + "t_acc": 0.9903846153846154, + "punct_acc": null, + "threshold_t": 0.4889029264450073, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8098361904761905, + "t": 0.8192619913419912, + "punct": null, + "u_acc": 0.458, + "t_acc": 0.4576, + "punct_acc": null, + "threshold_t": 0.02904966101050377, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8874320634920634, + "t": 0.8797911688311689, + "punct": null, + "u_acc": 0.66, + "t_acc": 0.6136, + "punct_acc": null, + "threshold_t": 0.05259474739432335, + "threshold_adj": 0.25 + } + }, + "fy": { + "opus100": { + "u": 0.9376967095851216, + "t": 0.94241773962804, + "punct": null, + "u_acc": 0.8004291845493562, + "t_acc": 0.8090128755364807, + "punct_acc": null, + "threshold_t": 0.16877134144306183, + "threshold_adj": 0.25 + } + }, + "ga": { + "opus100": { + "u": 0.9409610215053764, + "t": 0.9460349462365591, + "punct": null, + "u_acc": 0.8044354838709677, + "t_acc": 0.8044354838709677, + "punct_acc": null, + "threshold_t": 0.07466644793748856, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9707602339181287, + "t": 0.9792397660818714, + "punct": null, + "u_acc": 0.9035087719298246, + "t_acc": 0.9210526315789473, + "punct_acc": null, + "threshold_t": 0.8677814602851868, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6793650793650793, + "t": 0.5842592592592593, + "punct": null, + "u_acc": 0.25, + "t_acc": 0.08333333333333333, + "punct_acc": null, + "threshold_t": 0.013184512965381145, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7365079365079364, + "t": 0.7611111111111111, + "punct": null, + "u_acc": 0.25, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.7664591073989868, + "threshold_adj": 0.25 + } + }, + "gd": { + "opus100": { + "u": 0.9326455026455026, + "t": 0.9251146384479718, + "punct": null, + "u_acc": 0.7666666666666667, + "t_acc": 0.7296296296296296, + "punct_acc": null, + "threshold_t": 0.1103217676281929, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.8970588235294118, + "t": 0.8958333333333334, + "punct": null, + "u_acc": 0.6838235294117647, + "t_acc": 0.6838235294117647, + "punct_acc": null, + "threshold_t": 0.213588148355484, + "threshold_adj": 0.25 + } + }, + "gl": { + "opus100": { + "u": 0.9617607526881721, + "t": 0.9606854838709677, + "punct": null, + "u_acc": 0.842741935483871, + "t_acc": 0.8387096774193549, + "punct_acc": null, + "threshold_t": 0.22174373269081116, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9913333333333333, + "t": 0.9913333333333333, + "punct": null, + "u_acc": 0.97, + "t_acc": 0.97, + "punct_acc": null, + "threshold_t": 0.27429941296577454, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8201342857142856, + "t": 0.819962857142857, + "punct": null, + "u_acc": 0.4792, + "t_acc": 0.4784, + "punct_acc": null, + "threshold_t": 0.24691839516162872, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8877987301587302, + "t": 0.8852650793650795, + "punct": null, + "u_acc": 0.6436, + "t_acc": 0.6252, + "punct_acc": null, + "threshold_t": 0.11226487159729004, + "threshold_adj": 0.25 + } + }, + "gu": { + "ersatz": { + "u": 0.9074990626171728, + "t": 0.9120922384701913, + "punct": null, + "u_acc": 0.7204724409448819, + "t_acc": 0.7283464566929134, + "punct_acc": null, + "threshold_t": 0.14198142290115356, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9200828157349896, + "t": 0.9226363008971704, + "punct": null, + "u_acc": 0.7412008281573499, + "t_acc": 0.7453416149068323, + "punct_acc": null, + "threshold_t": 0.2195306271314621, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6189243507494266, + "t": 0.6155107896260577, + "punct": null, + "u_acc": 0.12740141557128412, + "t_acc": 0.12487360970677452, + "punct_acc": null, + "threshold_t": 0.22590655088424683, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7109413211104395, + "t": 0.6816775088868838, + "punct": null, + "u_acc": 0.24014155712841254, + "t_acc": 0.21486349848331648, + "punct_acc": null, + "threshold_t": 0.03116069920361042, + "threshold_adj": 0.25 + } + }, + "ha": { + "opus100": { + "u": 0.9468666666666666, + "t": 0.9412, + "punct": null, + "u_acc": 0.788, + "t_acc": 0.794, + "punct_acc": null, + "threshold_t": 0.3944629728794098, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.611111111111111, + "t": 0.5555555555555555, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.05354507640004158, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6888888888888888, + "t": 0.7777777777777777, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.9390864968299866, + "threshold_adj": 0.25 + } + }, + "he": { + "opus100": { + "u": 0.9423036549289054, + "t": 0.9391371487563873, + "punct": null, + "u_acc": 0.7775551102204409, + "t_acc": 0.7655310621242485, + "punct_acc": null, + "threshold_t": 0.15110965073108673, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9857142857142857, + "t": 0.9857142857142857, + "punct": null, + "u_acc": 0.9489795918367347, + "t_acc": 0.9489795918367347, + "punct_acc": null, + "threshold_t": 0.3192470669746399, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7823099456099457, + "t": 0.7816109785639198, + "punct": null, + "u_acc": 0.4044, + "t_acc": 0.4056, + "punct_acc": null, + "threshold_t": 0.18607929348945618, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8182166378066379, + "t": 0.8082583986383987, + "punct": null, + "u_acc": 0.4872, + "t_acc": 0.4548, + "punct_acc": null, + "threshold_t": 0.06886094808578491, + "threshold_adj": 0.25 + } + }, + "hi": { + "ersatz": { + "u": 0.9862962962962961, + "t": 0.9729100529100528, + "punct": null, + "u_acc": 0.9412698412698413, + "t_acc": 0.9142857142857143, + "punct_acc": null, + "threshold_t": 0.9687901735305786, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8751079330026698, + "t": 0.8897210976158344, + "punct": null, + "u_acc": 0.5910931174089069, + "t_acc": 0.6376518218623481, + "punct_acc": null, + "threshold_t": 0.45361077785491943, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.998258115597783, + "t": 0.9979414093428345, + "punct": null, + "u_acc": 0.9928741092636579, + "t_acc": 0.9928741092636579, + "punct_acc": null, + "threshold_t": 0.6244473457336426, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7322349657749657, + "t": 0.7221934871664284, + "punct": null, + "u_acc": 0.2972, + "t_acc": 0.2796, + "punct_acc": null, + "threshold_t": 0.11981464922428131, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8108554221754222, + "t": 0.8097436761436761, + "punct": null, + "u_acc": 0.4444, + "t_acc": 0.436, + "punct_acc": null, + "threshold_t": 0.195551797747612, + "threshold_adj": 0.25 + } + }, + "hu": { + "opus100": { + "u": 0.969489247311828, + "t": 0.9667338709677419, + "punct": null, + "u_acc": 0.8528225806451613, + "t_acc": 0.8407258064516129, + "punct_acc": null, + "threshold_t": 0.07834309339523315, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9934523809523811, + "t": 0.9940476190476192, + "punct": null, + "u_acc": 0.9732142857142857, + "t_acc": 0.9821428571428571, + "punct_acc": null, + "threshold_t": 0.9795545339584351, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8186746031746032, + "t": 0.8054523742923743, + "punct": null, + "u_acc": 0.4816, + "t_acc": 0.4176, + "punct_acc": null, + "threshold_t": 0.0024567858781665564, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8961133333333333, + "t": 0.8963676190476192, + "punct": null, + "u_acc": 0.68, + "t_acc": 0.6816, + "punct_acc": null, + "threshold_t": 0.35802045464515686, + "threshold_adj": 0.25 + } + }, + "hy": { + "opus100": { + "u": 0.9415202299598655, + "t": null, + "punct": null, + "u_acc": 0.780751708428246, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9954954954954955, + "t": 0.9932432432432432, + "punct": null, + "u_acc": 0.9864864864864865, + "t_acc": 0.9797297297297297, + "punct_acc": null, + "threshold_t": 0.7635315656661987, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8168815238095238, + "t": 0.8119983449883451, + "punct": null, + "u_acc": 0.4616, + "t_acc": 0.4456, + "punct_acc": null, + "threshold_t": 0.015083407051861286, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8658086868686868, + "t": 0.865946232247285, + "punct": null, + "u_acc": 0.5708, + "t_acc": 0.578, + "punct_acc": null, + "threshold_t": 0.5937344431877136, + "threshold_adj": 0.25 + } + }, + "id": { + "opus100": { + "u": 0.9592213114754099, + "t": 0.9611338797814207, + "punct": null, + "u_acc": 0.819672131147541, + "t_acc": 0.8278688524590164, + "punct_acc": null, + "threshold_t": 0.3178315758705139, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9778666666666667, + "t": null, + "punct": null, + "u_acc": 0.932, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7709780952380952, + "t": 0.7628479542679543, + "punct": null, + "u_acc": 0.3516, + "t_acc": 0.3344, + "punct_acc": null, + "threshold_t": 0.013489384204149246, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8422314285714285, + "t": 0.8446371428571426, + "punct": null, + "u_acc": 0.5212, + "t_acc": 0.514, + "punct_acc": null, + "threshold_t": 0.03130241855978966, + "threshold_adj": 0.25 + } + }, + "ig": { + "opus100": { + "u": 0.943377253814147, + "t": 0.9458044382801664, + "punct": null, + "u_acc": 0.7985436893203883, + "t_acc": 0.8033980582524272, + "punct_acc": null, + "threshold_t": 0.22466032207012177, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6141941391941391, + "t": 0.5965506715506715, + "punct": null, + "u_acc": 0.07692307692307693, + "t_acc": 0.11538461538461539, + "punct_acc": null, + "threshold_t": 0.06332143396139145, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7512820512820514, + "t": 0.6554945054945054, + "punct": null, + "u_acc": 0.2692307692307692, + "t_acc": 0.2692307692307692, + "punct_acc": null, + "threshold_t": 0.01692948490381241, + "threshold_adj": 0.25 + } + }, + "is": { + "opus100": { + "u": 0.9738430583501007, + "t": 0.9742454728370221, + "punct": null, + "u_acc": 0.8853118712273642, + "t_acc": 0.8873239436619719, + "punct_acc": null, + "threshold_t": 0.2960386574268341, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9788355683623333, + "t": 0.9796039750267835, + "punct": null, + "u_acc": 0.91311093871218, + "t_acc": 0.9177657098525989, + "punct_acc": null, + "threshold_t": 0.3644753396511078, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8145320893412498, + "t": 0.8067571388182075, + "punct": null, + "u_acc": 0.455470737913486, + "t_acc": 0.42493638676844786, + "punct_acc": null, + "threshold_t": 0.020942457020282745, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8849266933236399, + "t": 0.883605961468557, + "punct": null, + "u_acc": 0.6361323155216285, + "t_acc": 0.6335877862595419, + "punct_acc": null, + "threshold_t": 0.08516617864370346, + "threshold_adj": 0.25 + } + }, + "it": { + "opus100": { + "u": 0.9451196876600103, + "t": 0.9459872340920729, + "punct": null, + "u_acc": 0.7721774193548387, + "t_acc": 0.7762096774193549, + "punct_acc": null, + "threshold_t": 0.36572980880737305, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9972222222222221, + "t": 0.9972222222222221, + "punct": null, + "u_acc": 0.9916666666666667, + "t_acc": 0.9916666666666667, + "punct_acc": null, + "threshold_t": 0.2613252103328705, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.813353137973138, + "t": 0.8020326118326119, + "punct": null, + "u_acc": 0.4496, + "t_acc": 0.4112, + "punct_acc": null, + "threshold_t": 0.09929787367582321, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8823837118437119, + "t": 0.888048253968254, + "punct": null, + "u_acc": 0.6052, + "t_acc": 0.6424, + "punct_acc": null, + "threshold_t": 0.5085493922233582, + "threshold_adj": 0.25 + } + }, + "ja": { + "ersatz": { + "u": 0.940316275764037, + "t": 0.9488805970149254, + "punct": null, + "u_acc": 0.8432835820895522, + "t_acc": 0.8656716417910447, + "punct_acc": null, + "threshold_t": 0.4914585053920746, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9114457831325301, + "t": 0.9050519538471345, + "punct": null, + "u_acc": 0.7269076305220884, + "t_acc": 0.6907630522088354, + "punct_acc": null, + "threshold_t": 0.08693736046552658, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9933823529411764, + "t": 0.9948529411764707, + "punct": null, + "u_acc": 0.9779411764705882, + "t_acc": 0.9852941176470589, + "punct_acc": null, + "threshold_t": 0.8192950487136841, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.896654188034188, + "t": 0.9051599023199022, + "punct": null, + "u_acc": 0.6604, + "t_acc": 0.6924, + "punct_acc": null, + "threshold_t": 0.6293315291404724, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8967719658119658, + "t": 0.9059933333333334, + "punct": null, + "u_acc": 0.6636, + "t_acc": 0.7016, + "punct_acc": null, + "threshold_t": 0.9002335071563721, + "threshold_adj": 0.25 + } + }, + "jv": { + "ud": { + "u": 0.9585333333333333, + "t": null, + "punct": null, + "u_acc": 0.868, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9383390476190474, + "t": 0.943375238095238, + "punct": null, + "u_acc": 0.7868, + "t_acc": 0.8172, + "punct_acc": null, + "threshold_t": 0.5628132820129395, + "threshold_adj": 0.25 + } + }, + "ka": { + "opus100": { + "u": 0.9492, + "t": 0.952, + "punct": null, + "u_acc": 0.804, + "t_acc": 0.826, + "punct_acc": null, + "threshold_t": 0.45432156324386597, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7677546608946609, + "t": 0.743875024975025, + "punct": null, + "u_acc": 0.3644, + "t_acc": 0.3168, + "punct_acc": null, + "threshold_t": 0.015574936755001545, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7953453968253968, + "t": 0.7721173337773338, + "punct": null, + "u_acc": 0.4156, + "t_acc": 0.3548, + "punct_acc": null, + "threshold_t": 0.015574936755001545, + "threshold_adj": 0.25 + } + }, + "kk": { + "ersatz": { + "u": 1.0, + "t": 0.996, + "punct": null, + "u_acc": 1.0, + "t_acc": 0.988, + "punct_acc": null, + "threshold_t": 0.9699932336807251, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9628886265249902, + "t": 0.9609602518693428, + "punct": null, + "u_acc": 0.8491735537190083, + "t_acc": 0.859504132231405, + "punct_acc": null, + "threshold_t": 0.6338708996772766, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9946564885496184, + "t": 0.8511450381679388, + "punct": null, + "u_acc": 0.9809160305343512, + "t_acc": 0.5534351145038168, + "punct_acc": null, + "threshold_t": 0.9999616146087646, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8094564497028562, + "t": 0.8205453873831696, + "punct": null, + "u_acc": 0.43394934976043803, + "t_acc": 0.45927446954141, + "punct_acc": null, + "threshold_t": 0.007852358743548393, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8717881859565638, + "t": 0.8694555805438763, + "punct": null, + "u_acc": 0.5900068446269678, + "t_acc": 0.5660506502395619, + "punct_acc": null, + "threshold_t": 0.020687777549028397, + "threshold_adj": 0.25 + } + }, + "km": { + "ersatz": { + "u": 0.9146377351462098, + "t": 0.9412994350282488, + "punct": null, + "u_acc": 0.7067796610169491, + "t_acc": 0.8084745762711865, + "punct_acc": null, + "threshold_t": 0.823272705078125, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9224840451644575, + "t": 0.9130584192439862, + "punct": null, + "u_acc": 0.7608247422680412, + "t_acc": 0.7484536082474227, + "punct_acc": null, + "threshold_t": 0.828818678855896, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8175438596491228, + "t": 0.8189760114572144, + "punct": null, + "u_acc": 0.45112781954887216, + "t_acc": 0.47368421052631576, + "punct_acc": null, + "threshold_t": 0.08858813345432281, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.842857142857143, + "t": 0.8402434658073755, + "punct": null, + "u_acc": 0.518796992481203, + "t_acc": 0.5037593984962406, + "punct_acc": null, + "threshold_t": 0.09281837195158005, + "threshold_adj": 0.25 + } + }, + "kn": { + "opus100": { + "u": 0.9228613569321533, + "t": 0.921386430678466, + "punct": null, + "u_acc": 0.7610619469026548, + "t_acc": 0.7566371681415929, + "punct_acc": null, + "threshold_t": 0.26319289207458496, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6613858363858364, + "t": 0.6177322677322677, + "punct": null, + "u_acc": 0.13986013986013987, + "t_acc": 0.08041958041958042, + "punct_acc": null, + "threshold_t": 0.05583753064274788, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6927794427794428, + "t": 0.6763098013098012, + "punct": null, + "u_acc": 0.1888111888111888, + "t_acc": 0.16783216783216784, + "punct_acc": null, + "threshold_t": 0.10854282230138779, + "threshold_adj": 0.25 + } + }, + "ko": { + "opus100": { + "u": 0.8908457040035987, + "t": 0.8718302165670586, + "punct": null, + "u_acc": 0.6214574898785425, + "t_acc": 0.5323886639676113, + "punct_acc": null, + "threshold_t": 0.011282003484666348, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9994172494172495, + "t": 0.9976689976689977, + "punct": null, + "u_acc": 0.9982517482517482, + "t_acc": 0.993006993006993, + "punct_acc": null, + "threshold_t": 0.9992959499359131, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8335778354978356, + "t": 0.8348299567099566, + "punct": null, + "u_acc": 0.4648, + "t_acc": 0.4748, + "punct_acc": null, + "threshold_t": 0.7320255041122437, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.835387619047619, + "t": 0.8376041269841269, + "punct": null, + "u_acc": 0.4688, + "t_acc": 0.478, + "punct_acc": null, + "threshold_t": 0.5552946925163269, + "threshold_adj": 0.25 + } + }, + "ku": { + "opus100": { + "u": 0.9437283437283436, + "t": 0.941025641025641, + "punct": null, + "u_acc": 0.817047817047817, + "t_acc": 0.817047817047817, + "punct_acc": null, + "threshold_t": 0.39672014117240906, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6614380952380953, + "t": 0.5717316132453718, + "punct": null, + "u_acc": 0.074, + "t_acc": 0.1012, + "punct_acc": null, + "threshold_t": 0.020911945030093193, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6987790476190476, + "t": 0.6228972516200689, + "punct": null, + "u_acc": 0.168, + "t_acc": 0.1596, + "punct_acc": null, + "threshold_t": 0.025309398770332336, + "threshold_adj": 0.25 + } + }, + "ky": { + "opus100": { + "u": 0.9738095238095238, + "t": 0.9705668934240362, + "punct": null, + "u_acc": 0.8976190476190476, + "t_acc": 0.8857142857142857, + "punct_acc": null, + "threshold_t": 0.14161771535873413, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.757516339869281, + "t": 0.7592451121862888, + "punct": null, + "u_acc": 0.27450980392156865, + "t_acc": 0.3235294117647059, + "punct_acc": null, + "threshold_t": 0.006371109746396542, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.838888888888889, + "t": 0.8213352007469655, + "punct": null, + "u_acc": 0.5, + "t_acc": 0.4117647058823529, + "punct_acc": null, + "threshold_t": 0.015029974281787872, + "threshold_adj": 0.25 + } + }, + "la": { + "ud": { + "u": 0.9837460317460318, + "t": 0.985079365079365, + "punct": null, + "u_acc": 0.9352380952380952, + "t_acc": 0.9485714285714286, + "punct_acc": null, + "threshold_t": 0.7066066265106201, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6666666666666666, + "t": 0.6666666666666666, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.12331382185220718, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8333333333333334, + "t": 0.7222222222222222, + "punct": null, + "u_acc": 0.6666666666666666, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.017666436731815338, + "threshold_adj": 0.25 + } + }, + "lt": { + "ersatz": { + "u": 0.9968, + "t": 0.9952000000000001, + "punct": null, + "u_acc": 0.984, + "t_acc": 0.976, + "punct_acc": null, + "threshold_t": 0.02686471678316593, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9472254224270353, + "t": 0.9459197388632874, + "punct": null, + "u_acc": 0.8185483870967742, + "t_acc": 0.8145161290322581, + "punct_acc": null, + "threshold_t": 0.13773049414157867, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.989083820662768, + "t": 0.989083820662768, + "punct": null, + "u_acc": 0.9649122807017544, + "t_acc": 0.9649122807017544, + "punct_acc": null, + "threshold_t": 0.16340047121047974, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8229225396825397, + "t": 0.8231008080808082, + "punct": null, + "u_acc": 0.4768, + "t_acc": 0.4564, + "punct_acc": null, + "threshold_t": 0.026166867464780807, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8976031746031745, + "t": 0.8859110711510711, + "punct": null, + "u_acc": 0.6664, + "t_acc": 0.61, + "punct_acc": null, + "threshold_t": 0.04080215469002724, + "threshold_adj": 0.25 + } + }, + "lv": { + "ersatz": { + "u": 0.9978174603174603, + "t": 0.9982804232804232, + "punct": null, + "u_acc": 0.9920634920634921, + "t_acc": 0.9940476190476191, + "punct_acc": null, + "threshold_t": 0.930321455001831, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9550877114771639, + "t": 0.9545988156535824, + "punct": null, + "u_acc": 0.8417849898580122, + "t_acc": 0.8417849898580122, + "punct_acc": null, + "threshold_t": 0.2878369987010956, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9965174129353234, + "t": 0.9969596462133775, + "punct": null, + "u_acc": 0.988391376451078, + "t_acc": 0.9917081260364843, + "punct_acc": null, + "threshold_t": 0.6829102635383606, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8454939682539684, + "t": 0.8351733333333333, + "punct": null, + "u_acc": 0.542, + "t_acc": 0.4996, + "punct_acc": null, + "threshold_t": 0.08836416155099869, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9030337085137086, + "t": 0.8945135531135531, + "punct": null, + "u_acc": 0.6828, + "t_acc": 0.6492, + "punct_acc": null, + "threshold_t": 0.13115759193897247, + "threshold_adj": 0.25 + } + }, + "mg": { + "opus100": { + "u": 0.9716695585116638, + "t": 0.9716695585116638, + "punct": null, + "u_acc": 0.888663967611336, + "t_acc": 0.888663967611336, + "punct_acc": null, + "threshold_t": 0.25100767612457275, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6867385700719032, + "t": 0.6408342686120464, + "punct": null, + "u_acc": 0.14814814814814814, + "t_acc": 0.14814814814814814, + "punct_acc": null, + "threshold_t": 0.009800557978451252, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8371252204585536, + "t": 0.83342151675485, + "punct": null, + "u_acc": 0.5, + "t_acc": 0.48148148148148145, + "punct_acc": null, + "threshold_t": 0.17500999569892883, + "threshold_adj": 0.25 + } + }, + "mk": { + "opus100": { + "u": 0.9636857142857143, + "t": 0.962952380952381, + "punct": null, + "u_acc": 0.842, + "t_acc": 0.834, + "punct_acc": null, + "threshold_t": 0.10753495991230011, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8001609523809524, + "t": 0.8008037695637695, + "punct": null, + "u_acc": 0.4216, + "t_acc": 0.4176, + "punct_acc": null, + "threshold_t": 0.045858338475227356, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8731060317460319, + "t": 0.8661448196248195, + "punct": null, + "u_acc": 0.6032, + "t_acc": 0.5668, + "punct_acc": null, + "threshold_t": 0.06459448486566544, + "threshold_adj": 0.25 + } + }, + "ml": { + "opus100": { + "u": 0.9271179957926946, + "t": 0.9195639701663798, + "punct": null, + "u_acc": 0.7228915662650602, + "t_acc": 0.6907630522088354, + "punct_acc": null, + "threshold_t": 0.1702415496110916, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6571487742122663, + "t": 0.6486557497470197, + "punct": null, + "u_acc": 0.15343915343915343, + "t_acc": 0.14947089947089948, + "punct_acc": null, + "threshold_t": 0.2101818025112152, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7322709330645838, + "t": 0.7145923153859661, + "punct": null, + "u_acc": 0.2857142857142857, + "t_acc": 0.24206349206349206, + "punct_acc": null, + "threshold_t": 0.05646508187055588, + "threshold_adj": 0.25 + } + }, + "mn": { + "opus100": { + "u": 0.865203562340967, + "t": null, + "punct": null, + "u_acc": 0.5906488549618321, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8473314285714285, + "t": 0.8612730158730159, + "punct": null, + "u_acc": 0.546, + "t_acc": 0.5708, + "punct_acc": null, + "threshold_t": 0.03928644210100174, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8877815873015872, + "t": 0.8951276767676767, + "punct": null, + "u_acc": 0.6552, + "t_acc": 0.656, + "punct_acc": null, + "threshold_t": 0.036739982664585114, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9729771428571429, + "t": 0.9716901587301587, + "punct": null, + "u_acc": 0.9004, + "t_acc": 0.8928, + "punct_acc": null, + "threshold_t": 0.1649118959903717, + "threshold_adj": 0.25 + } + }, + "mr": { + "opus100": { + "u": 0.9736655145929339, + "t": 0.9741263440860214, + "punct": null, + "u_acc": 0.9032258064516129, + "t_acc": 0.907258064516129, + "punct_acc": null, + "threshold_t": 0.4480428099632263, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9833333333333334, + "t": 1.0, + "punct": null, + "u_acc": 0.9166666666666666, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.9346514344215393, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6451412343212344, + "t": 0.6462819669219669, + "punct": null, + "u_acc": 0.1764, + "t_acc": 0.1772, + "punct_acc": null, + "threshold_t": 0.2562134265899658, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7641590365190365, + "t": 0.7544944144744145, + "punct": null, + "u_acc": 0.338, + "t_acc": 0.3148, + "punct_acc": null, + "threshold_t": 0.0996399000287056, + "threshold_adj": 0.25 + } + }, + "ms": { + "opus100": { + "u": 0.9581324710954342, + "t": 0.9584068195179307, + "punct": null, + "u_acc": 0.8395061728395061, + "t_acc": 0.8395061728395061, + "punct_acc": null, + "threshold_t": 0.2698633074760437, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7658498677248677, + "t": 0.7547525853775854, + "punct": null, + "u_acc": 0.3392857142857143, + "t_acc": 0.31845238095238093, + "punct_acc": null, + "threshold_t": 0.015180590562522411, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8315906084656085, + "t": 0.8287844265522838, + "punct": null, + "u_acc": 0.4880952380952381, + "t_acc": 0.47559523809523807, + "punct_acc": null, + "threshold_t": 0.027027007192373276, + "threshold_adj": 0.25 + } + }, + "mt": { + "opus100": { + "u": 0.9148014266435318, + "t": 0.9156111432427222, + "punct": null, + "u_acc": 0.7348178137651822, + "t_acc": 0.7388663967611336, + "punct_acc": null, + "threshold_t": 0.2781420052051544, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9456410256410257, + "t": 0.9433333333333332, + "punct": null, + "u_acc": 0.8538461538461538, + "t_acc": 0.8307692307692308, + "punct_acc": null, + "threshold_t": 0.044065289199352264, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.685897435897436, + "t": 0.5904761904761904, + "punct": null, + "u_acc": 0.11538461538461539, + "t_acc": 0.15384615384615385, + "punct_acc": null, + "threshold_t": 0.0010553739266470075, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8205128205128205, + "t": 0.8014652014652015, + "punct": null, + "u_acc": 0.4230769230769231, + "t_acc": 0.38461538461538464, + "punct_acc": null, + "threshold_t": 0.04599367454648018, + "threshold_adj": 0.25 + } + }, + "my": { + "opus100": { + "u": 0.9473118279569893, + "t": 0.9471102150537634, + "punct": null, + "u_acc": 0.8225806451612904, + "t_acc": 0.8286290322580645, + "punct_acc": null, + "threshold_t": 0.41932639479637146, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.9420285714285713, + "t": 0.9417857142857143, + "punct": null, + "u_acc": 0.8132, + "t_acc": 0.802, + "punct_acc": null, + "threshold_t": 0.028562014922499657, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9430019047619047, + "t": 0.9429577777777779, + "punct": null, + "u_acc": 0.818, + "t_acc": 0.8028, + "punct_acc": null, + "threshold_t": 0.01053391583263874, + "threshold_adj": 0.25 + } + }, + "ne": { + "opus100": { + "u": 0.9172052753448103, + "t": 0.9180509413067552, + "punct": null, + "u_acc": 0.7315010570824524, + "t_acc": 0.7272727272727273, + "punct_acc": null, + "threshold_t": 0.17043596506118774, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7444689587546731, + "t": 0.72167594089863, + "punct": null, + "u_acc": 0.305019305019305, + "t_acc": 0.2702702702702703, + "punct_acc": null, + "threshold_t": 0.02252039685845375, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7513194548908834, + "t": 0.7322153800094976, + "punct": null, + "u_acc": 0.29922779922779924, + "t_acc": 0.2857142857142857, + "punct_acc": null, + "threshold_t": 0.01884850673377514, + "threshold_adj": 0.25 + } + }, + "nl": { + "opus100": { + "u": 0.962, + "t": null, + "punct": null, + "u_acc": 0.818, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9744966442953019, + "t": 0.9762863534675615, + "punct": null, + "u_acc": 0.8993288590604027, + "t_acc": 0.8993288590604027, + "punct_acc": null, + "threshold_t": 0.05097693204879761, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8675166081871345, + "t": 0.868102574002574, + "punct": null, + "u_acc": 0.5872, + "t_acc": 0.5896, + "punct_acc": null, + "threshold_t": 0.2554411292076111, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9096547034252297, + "t": 0.9115365422565422, + "punct": null, + "u_acc": 0.6836, + "t_acc": 0.6956, + "punct_acc": null, + "threshold_t": 0.306928426027298, + "threshold_adj": 0.25 + } + }, + "no": { + "opus100": { + "u": 0.9727953498114789, + "t": 0.9733294930875577, + "punct": null, + "u_acc": 0.8850806451612904, + "t_acc": 0.8850806451612904, + "punct_acc": null, + "threshold_t": 0.3140411078929901, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9946969696969697, + "t": 0.9934573002754822, + "punct": null, + "u_acc": 0.9834710743801653, + "t_acc": 0.9772727272727273, + "punct_acc": null, + "threshold_t": 0.16307611763477325, + "threshold_adj": 0.25 + } + }, + "pa": { + "opus100": { + "u": 0.9101190476190477, + "t": 0.9117486338797814, + "punct": null, + "u_acc": 0.7069672131147541, + "t_acc": 0.6926229508196722, + "punct_acc": null, + "threshold_t": 0.12786263227462769, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7392281477387862, + "t": 0.7397812589301951, + "punct": null, + "u_acc": 0.2765957446808511, + "t_acc": 0.2978723404255319, + "punct_acc": null, + "threshold_t": 0.05214986950159073, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7989868287740631, + "t": 0.7651937306192625, + "punct": null, + "u_acc": 0.43617021276595747, + "t_acc": 0.3829787234042553, + "punct_acc": null, + "threshold_t": 0.00515219010412693, + "threshold_adj": 0.25 + } + }, + "pl": { + "ersatz": { + "u": 0.9944223107569722, + "t": 0.9930942895086322, + "punct": null, + "u_acc": 0.9800796812749004, + "t_acc": 0.9760956175298805, + "punct_acc": null, + "threshold_t": 0.3285367488861084, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9694988479262674, + "t": 0.9637960829493087, + "punct": null, + "u_acc": 0.8649193548387096, + "t_acc": 0.8387096774193549, + "punct_acc": null, + "threshold_t": 0.05730303004384041, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9971119133574009, + "t": 0.9139590854392299, + "punct": null, + "u_acc": 0.9855595667870036, + "t_acc": 0.7418772563176895, + "punct_acc": null, + "threshold_t": 0.9999696016311646, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8309618070818071, + "t": 0.8433181529581528, + "punct": null, + "u_acc": 0.5116, + "t_acc": 0.5112, + "punct_acc": null, + "threshold_t": 0.036038294434547424, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9019327561327561, + "t": 0.8879969408369408, + "punct": null, + "u_acc": 0.6936, + "t_acc": 0.6244, + "punct_acc": null, + "threshold_t": 0.03321656212210655, + "threshold_adj": 0.25 + } + }, + "ps": { + "ersatz": { + "u": 0.9229856165340037, + "t": 0.9237257366289625, + "punct": null, + "u_acc": 0.7346041055718475, + "t_acc": 0.7404692082111437, + "punct_acc": null, + "threshold_t": 0.7467349171638489, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9265033407572383, + "t": 0.9236080178173719, + "punct": null, + "u_acc": 0.7728285077951003, + "t_acc": 0.7661469933184856, + "punct_acc": null, + "threshold_t": 0.3107669949531555, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.724319314100336, + "t": 0.7157379927452919, + "punct": null, + "u_acc": 0.25547445255474455, + "t_acc": 0.26277372262773724, + "punct_acc": null, + "threshold_t": 0.07903829216957092, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7289885297184567, + "t": 0.7178550019394194, + "punct": null, + "u_acc": 0.26277372262773724, + "t_acc": 0.27007299270072993, + "punct_acc": null, + "threshold_t": 0.08234239369630814, + "threshold_adj": 0.25 + } + }, + "pt": { + "opus100": { + "u": 0.9679679969153653, + "t": 0.9697898592635436, + "punct": null, + "u_acc": 0.8582995951417004, + "t_acc": 0.8643724696356275, + "punct_acc": null, + "threshold_t": 0.3534495234489441, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9892694063926941, + "t": 0.9860730593607306, + "punct": null, + "u_acc": 0.9623287671232876, + "t_acc": 0.9554794520547946, + "punct_acc": null, + "threshold_t": 0.3783186078071594, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8387625152625152, + "t": 0.8331442767442768, + "punct": null, + "u_acc": 0.5264, + "t_acc": 0.4864, + "punct_acc": null, + "threshold_t": 0.07639459520578384, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9011009523809523, + "t": 0.9021099567099568, + "punct": null, + "u_acc": 0.682, + "t_acc": 0.6896, + "punct_acc": null, + "threshold_t": 0.3179333806037903, + "threshold_adj": 0.25 + } + }, + "ro": { + "ersatz": { + "u": 0.9953333333333333, + "t": 0.996, + "punct": null, + "u_acc": 0.978, + "t_acc": 0.984, + "punct_acc": null, + "threshold_t": 0.8954811096191406, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9702356902356902, + "t": 0.9715824915824915, + "punct": null, + "u_acc": 0.8828282828282829, + "t_acc": 0.8868686868686869, + "punct_acc": null, + "threshold_t": 0.29380476474761963, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9936628643852978, + "t": 0.9860583016476552, + "punct": null, + "u_acc": 0.973384030418251, + "t_acc": 0.9581749049429658, + "punct_acc": null, + "threshold_t": 0.8251592516899109, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8206790764790763, + "t": 0.8228838095238094, + "punct": null, + "u_acc": 0.4892, + "t_acc": 0.478, + "punct_acc": null, + "threshold_t": 0.11436111479997635, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8928203174603175, + "t": 0.892424126984127, + "punct": null, + "u_acc": 0.6652, + "t_acc": 0.6608, + "punct_acc": null, + "threshold_t": 0.1856377124786377, + "threshold_adj": 0.25 + } + }, + "ru": { + "ersatz": { + "u": 0.996774193548387, + "t": 0.9962365591397849, + "punct": null, + "u_acc": 0.9838709677419355, + "t_acc": 0.9838709677419355, + "punct_acc": null, + "threshold_t": 0.5360589623451233, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9491217798594848, + "t": null, + "punct": null, + "u_acc": 0.8155737704918032, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9514357864357865, + "t": 0.955930735930736, + "punct": null, + "u_acc": 0.8318181818181818, + "t_acc": 0.85, + "punct_acc": null, + "threshold_t": 0.4840237498283386, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8387212698412699, + "t": 0.828416305916306, + "punct": null, + "u_acc": 0.514, + "t_acc": 0.4616, + "punct_acc": null, + "threshold_t": 0.07608737796545029, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.897336507936508, + "t": 0.8971288888888889, + "punct": null, + "u_acc": 0.6644, + "t_acc": 0.6628, + "punct_acc": null, + "threshold_t": 0.23210446536540985, + "threshold_adj": 0.25 + } + }, + "si": { + "opus100": { + "u": 0.9177515360983103, + "t": 0.9168682795698925, + "punct": null, + "u_acc": 0.6854838709677419, + "t_acc": 0.6975806451612904, + "punct_acc": null, + "threshold_t": 0.4628986120223999, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7501918408895153, + "t": 0.7053738808184774, + "punct": null, + "u_acc": 0.31007751937984496, + "t_acc": 0.2558139534883721, + "punct_acc": null, + "threshold_t": 0.013289653696119785, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7575008109891831, + "t": 0.7200122014075502, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.2713178294573643, + "punct_acc": null, + "threshold_t": 0.019190356135368347, + "threshold_adj": 0.25 + } + }, + "sk": { + "opus100": { + "u": 0.9716205837173578, + "t": 0.9709485407066052, + "punct": null, + "u_acc": 0.8870967741935484, + "t_acc": 0.8810483870967742, + "punct_acc": null, + "threshold_t": 0.11327581852674484, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9860377358490566, + "t": 0.981006289308176, + "punct": null, + "u_acc": 0.9584905660377359, + "t_acc": 0.9433962264150944, + "punct_acc": null, + "threshold_t": 0.5051817297935486, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8377268176268177, + "t": 0.8198992339078546, + "punct": null, + "u_acc": 0.5056, + "t_acc": 0.45, + "punct_acc": null, + "threshold_t": 0.050622206181287766, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8980011033411034, + "t": 0.8974491233912286, + "punct": null, + "u_acc": 0.6636, + "t_acc": 0.6676, + "punct_acc": null, + "threshold_t": 0.2900650203227997, + "threshold_adj": 0.25 + } + }, + "sl": { + "opus100": { + "u": 0.9664754255115701, + "t": 0.9609294320137693, + "punct": null, + "u_acc": 0.8493975903614458, + "t_acc": 0.8253012048192772, + "punct_acc": null, + "threshold_t": 0.05151665583252907, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9955357142857142, + "t": 0.9970833333333333, + "punct": null, + "u_acc": 0.98125, + "t_acc": 0.9875, + "punct_acc": null, + "threshold_t": 0.49169063568115234, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8435489466089466, + "t": 0.8443747355912062, + "punct": null, + "u_acc": 0.5404, + "t_acc": 0.5164, + "punct_acc": null, + "threshold_t": 0.05924160033464432, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9066025974025975, + "t": 0.9066210101010099, + "punct": null, + "u_acc": 0.698, + "t_acc": 0.7024, + "punct_acc": null, + "threshold_t": 0.3213497996330261, + "threshold_adj": 0.25 + } + }, + "sq": { + "opus100": { + "u": 0.9715737514518002, + "t": 0.9746128532713898, + "punct": null, + "u_acc": 0.8841463414634146, + "t_acc": 0.8983739837398373, + "punct_acc": null, + "threshold_t": 0.5294507145881653, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9555555555555555, + "t": null, + "punct": null, + "u_acc": 0.8666666666666667, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7720403174603174, + "t": 0.7657260206460207, + "punct": null, + "u_acc": 0.3688, + "t_acc": 0.3504, + "punct_acc": null, + "threshold_t": 0.02996820956468582, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8452485714285715, + "t": 0.8302135353535354, + "punct": null, + "u_acc": 0.5348, + "t_acc": 0.4808, + "punct_acc": null, + "threshold_t": 0.02876061387360096, + "threshold_adj": 0.25 + } + }, + "sr": { + "opus100": { + "u": 0.9736278447121821, + "t": 0.9661311914323962, + "punct": null, + "u_acc": 0.8775100401606426, + "t_acc": 0.8453815261044176, + "punct_acc": null, + "threshold_t": 0.0625503733754158, + "threshold_adj": 0.25 + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null, + "u_acc": 1.0, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.8676129579544067, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8230555572532042, + "t": 0.821675468975469, + "punct": null, + "u_acc": 0.4912, + "t_acc": 0.4892, + "punct_acc": null, + "threshold_t": 0.11506707221269608, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8994581041181041, + "t": 0.8992537662337663, + "punct": null, + "u_acc": 0.6784, + "t_acc": 0.6784, + "punct_acc": null, + "threshold_t": 0.2678655982017517, + "threshold_adj": 0.25 + } + }, + "sv": { + "opus100": { + "u": 0.967489003633582, + "t": 0.9672117039586919, + "punct": null, + "u_acc": 0.8554216867469879, + "t_acc": 0.8534136546184738, + "punct_acc": null, + "threshold_t": 0.11946509778499603, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9680878552971576, + "t": 0.9652454780361756, + "punct": null, + "u_acc": 0.8798449612403101, + "t_acc": 0.8682170542635659, + "punct_acc": null, + "threshold_t": 0.10406601428985596, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8363161904761907, + "t": 0.8405295815295817, + "punct": null, + "u_acc": 0.516, + "t_acc": 0.5152, + "punct_acc": null, + "threshold_t": 0.07248911261558533, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8979314285714285, + "t": 0.8997561904761904, + "punct": null, + "u_acc": 0.6668, + "t_acc": 0.6664, + "punct_acc": null, + "threshold_t": 0.19254335761070251, + "threshold_adj": 0.25 + } + }, + "ta": { + "ersatz": { + "u": 0.9835325365205844, + "t": 0.9811420982735723, + "punct": null, + "u_acc": 0.9282868525896414, + "t_acc": 0.9243027888446215, + "punct_acc": null, + "threshold_t": 0.9014356732368469, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8999322493224932, + "t": 0.8989159891598916, + "punct": null, + "u_acc": 0.6666666666666666, + "t_acc": 0.6727642276422764, + "punct_acc": null, + "threshold_t": 0.48352038860321045, + "threshold_adj": 0.25 + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null, + "u_acc": 1.0, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.9997159838676453, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7107241710444557, + "t": 0.6967592352289862, + "punct": null, + "u_acc": 0.2569395017793594, + "t_acc": 0.23416370106761566, + "punct_acc": null, + "threshold_t": 0.0626593828201294, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7764354585706899, + "t": 0.7594564352215598, + "punct": null, + "u_acc": 0.3501779359430605, + "t_acc": 0.3096085409252669, + "punct_acc": null, + "threshold_t": 0.030735300853848457, + "threshold_adj": 0.25 + } + }, + "te": { + "opus100": { + "u": 0.9148979591836734, + "t": 0.917687074829932, + "punct": null, + "u_acc": 0.7081632653061225, + "t_acc": 0.7163265306122449, + "punct_acc": null, + "threshold_t": 0.27271151542663574, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6925504505564929, + "t": 0.689035368793677, + "punct": null, + "u_acc": 0.1933534743202417, + "t_acc": 0.18882175226586104, + "punct_acc": null, + "threshold_t": 0.23542112112045288, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7423116577950416, + "t": 0.7391910036925142, + "punct": null, + "u_acc": 0.28700906344410876, + "t_acc": 0.283987915407855, + "punct_acc": null, + "threshold_t": 0.16129159927368164, + "threshold_adj": 0.25 + } + }, + "tg": { + "opus100": { + "u": 0.9488621151271753, + "t": 0.9437081659973225, + "punct": null, + "u_acc": 0.8172690763052208, + "t_acc": 0.8052208835341366, + "punct_acc": null, + "threshold_t": 0.3201037347316742, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7369883040935673, + "t": 0.7506787802840434, + "punct": null, + "u_acc": 0.2631578947368421, + "t_acc": 0.2894736842105263, + "punct_acc": null, + "threshold_t": 0.08675067126750946, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7809106098579782, + "t": 0.8110275689223058, + "punct": null, + "u_acc": 0.35526315789473684, + "t_acc": 0.42105263157894735, + "punct_acc": null, + "threshold_t": 0.03267653286457062, + "threshold_adj": 0.25 + } + }, + "th": { + "opus100": { + "u": 0.8636075036075036, + "t": 0.8624627224627226, + "punct": null, + "u_acc": 0.5050505050505051, + "t_acc": 0.498989898989899, + "punct_acc": null, + "threshold_t": 0.21616829931735992, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9085333333333333, + "t": null, + "punct": null, + "u_acc": 0.736, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.751109090909091, + "t": 0.7495839036825244, + "punct": null, + "u_acc": 0.3108, + "t_acc": 0.3068, + "punct_acc": null, + "threshold_t": 0.0045921653509140015, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.752932582972583, + "t": 0.7516781841846311, + "punct": null, + "u_acc": 0.3148, + "t_acc": 0.3124, + "punct_acc": null, + "threshold_t": 0.0045921653509140015, + "threshold_adj": 0.25 + } + }, + "tr": { + "ersatz": { + "u": 0.9891907294832828, + "t": 0.9888361195542047, + "punct": null, + "u_acc": 0.9601063829787234, + "t_acc": 0.9601063829787234, + "punct_acc": null, + "threshold_t": 0.3593780994415283, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9624156545209176, + "t": 0.9550607287449393, + "punct": null, + "u_acc": 0.8481781376518218, + "t_acc": 0.8097165991902834, + "punct_acc": null, + "threshold_t": 0.07877299189567566, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9867878787878788, + "t": 0.9859393939393939, + "punct": null, + "u_acc": 0.9490909090909091, + "t_acc": 0.9490909090909091, + "punct_acc": null, + "threshold_t": 0.6669154763221741, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8340050793650795, + "t": 0.8185655056055055, + "punct": null, + "u_acc": 0.4952, + "t_acc": 0.4464, + "punct_acc": null, + "threshold_t": 0.023632079362869263, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8856450793650794, + "t": 0.8845669841269842, + "punct": null, + "u_acc": 0.624, + "t_acc": 0.62, + "punct_acc": null, + "threshold_t": 0.17539633810520172, + "threshold_adj": 0.25 + } + }, + "uk": { + "opus100": { + "u": 0.9587779690189329, + "t": 0.9587779690189328, + "punct": null, + "u_acc": 0.8192771084337349, + "t_acc": 0.8192771084337349, + "punct_acc": null, + "threshold_t": 0.19237442314624786, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.975595238095238, + "t": 0.9764880952380952, + "punct": null, + "u_acc": 0.9241071428571429, + "t_acc": 0.9285714285714286, + "punct_acc": null, + "threshold_t": 0.5130528211593628, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8214952380952382, + "t": 0.806336015096015, + "punct": null, + "u_acc": 0.4796, + "t_acc": 0.4172, + "punct_acc": null, + "threshold_t": 0.02443261258304119, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8933983638583639, + "t": 0.8817654487734485, + "punct": null, + "u_acc": 0.6568, + "t_acc": 0.6036, + "punct_acc": null, + "threshold_t": 0.095364049077034, + "threshold_adj": 0.25 + } + }, + "ur": { + "opus100": { + "u": 0.8389489042031415, + "t": 0.8190908197264131, + "punct": null, + "u_acc": 0.5084745762711864, + "t_acc": 0.4385593220338983, + "punct_acc": null, + "threshold_t": 0.09457703679800034, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9848614072494669, + "t": 0.9833688699360341, + "punct": null, + "u_acc": 0.9477611940298507, + "t_acc": 0.9402985074626866, + "punct_acc": null, + "threshold_t": 0.18240685760974884, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7816052024942056, + "t": 0.7787401618593809, + "punct": null, + "u_acc": 0.3910585817060637, + "t_acc": 0.3854059609455293, + "punct_acc": null, + "threshold_t": 0.1797940731048584, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8067155409395903, + "t": 0.7990697979649676, + "punct": null, + "u_acc": 0.44964028776978415, + "t_acc": 0.4188078108941418, + "punct_acc": null, + "threshold_t": 0.10159841179847717, + "threshold_adj": 0.25 + } + }, + "uz": { + "opus100": { + "u": 0.9406122448979591, + "t": 0.9391836734693878, + "punct": null, + "u_acc": 0.763265306122449, + "t_acc": 0.7979591836734694, + "punct_acc": null, + "threshold_t": 0.529529869556427, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7705311097716162, + "t": 0.7627736831850757, + "punct": null, + "u_acc": 0.33016877637130804, + "t_acc": 0.3259493670886076, + "punct_acc": null, + "threshold_t": 0.00559146236628294, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8235483222824995, + "t": 0.825956901748041, + "punct": null, + "u_acc": 0.4588607594936709, + "t_acc": 0.4704641350210971, + "punct_acc": null, + "threshold_t": 0.03608600050210953, + "threshold_adj": 0.25 + } + }, + "vi": { + "opus100": { + "u": 0.9631393298059965, + "t": 0.9635508524397415, + "punct": null, + "u_acc": 0.8477366255144033, + "t_acc": 0.8497942386831275, + "punct_acc": null, + "threshold_t": 0.30781763792037964, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9933333333333334, + "t": 0.991, + "punct": null, + "u_acc": 0.97, + "t_acc": 0.965, + "punct_acc": null, + "threshold_t": 0.7917988300323486, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7986120634920635, + "t": 0.7889322144522144, + "punct": null, + "u_acc": 0.4304, + "t_acc": 0.3968, + "punct_acc": null, + "threshold_t": 0.015247425995767117, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8744546031746031, + "t": 0.8718650793650795, + "punct": null, + "u_acc": 0.602, + "t_acc": 0.5884, + "punct_acc": null, + "threshold_t": 0.13723838329315186, + "threshold_adj": 0.25 + } + }, + "xh": { + "opus100": { + "u": 0.9418395573997235, + "t": 0.9430843706777317, + "punct": null, + "u_acc": 0.7904564315352697, + "t_acc": 0.8008298755186722, + "punct_acc": null, + "threshold_t": 0.3049139678478241, + "threshold_adj": 0.25 + } + }, + "yi": { + "opus100": { + "u": 0.9334378265412747, + "t": 0.9426332288401253, + "punct": null, + "u_acc": 0.786833855799373, + "t_acc": 0.8119122257053292, + "punct_acc": null, + "threshold_t": 0.11939600855112076, + "threshold_adj": 0.25 + } + }, + "yo": { + "opus100": { + "u": 0.8417018798418117, + "t": null, + "punct": null, + "u_acc": 0.5085324232081911, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.8237500000000001, + "t": null, + "punct": null, + "u_acc": 0.4375, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9475142857142856, + "t": 0.9498838095238094, + "punct": null, + "u_acc": 0.8148, + "t_acc": 0.8332, + "punct_acc": null, + "threshold_t": 0.39778682589530945, + "threshold_adj": 0.25 + } + }, + "zh": { + "ersatz": { + "u": 0.9652666666666666, + "t": 0.9640761904761905, + "punct": null, + "u_acc": 0.924, + "t_acc": 0.912, + "punct_acc": null, + "threshold_t": 0.00892738439142704, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9179505605058925, + "t": 0.8811392162498802, + "punct": null, + "u_acc": 0.744466800804829, + "t_acc": 0.5995975855130785, + "punct_acc": null, + "threshold_t": 0.005369078367948532, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.996, + "t": 0.9927999999999999, + "punct": null, + "u_acc": 0.992, + "t_acc": 0.976, + "punct_acc": null, + "threshold_t": 0.019473789259791374, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7272939876839185, + "t": 0.7080064500597572, + "punct": null, + "u_acc": 0.2561697926949654, + "t_acc": 0.24679170779861798, + "punct_acc": null, + "threshold_t": 0.007393041625618935, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7372103135429888, + "t": 0.7333701562230684, + "punct": null, + "u_acc": 0.2818361303060217, + "t_acc": 0.2917077986179664, + "punct_acc": null, + "threshold_t": 0.03242524340748787, + "threshold_adj": 0.25 + } + }, + "zu": { + "opus100": { + "u": 0.9611212861212861, + "t": 0.9554945054945055, + "punct": null, + "u_acc": 0.8653846153846154, + "t_acc": 0.8333333333333334, + "punct_acc": null, + "threshold_t": 0.0744938999414444, + "threshold_adj": 0.25 + } + }, + "tr-de": {}, + "es-en": {}, + "vi-en": {}, + "en-de": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/sat-sm-3l-limited-looakahead.json b/wtpsplit/evaluation/evaluation_results/short/sat-sm-3l-limited-looakahead.json new file mode 100644 index 00000000..b9104bde --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/sat-sm-3l-limited-looakahead.json @@ -0,0 +1,3346 @@ +{ + "af": { + "opus100": { + "u": 0.9078217237308147, + "t": 0.911455761868985, + "punct": null, + "u_acc": 0.6818181818181818, + "t_acc": 0.6942148760330579, + "punct_acc": null, + "threshold_t": 0.28395751118659973, + "threshold_adj": 0.25 + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null, + "u_acc": 1.0, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.8009100556373596, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7738754578754579, + "t": 0.7446549006549007, + "punct": null, + "u_acc": 0.39076923076923076, + "t_acc": 0.2923076923076923, + "punct_acc": null, + "threshold_t": 0.04073525592684746, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8715457875457875, + "t": 0.8739047619047617, + "punct": null, + "u_acc": 0.6215384615384615, + "t_acc": 0.6246153846153846, + "punct_acc": null, + "threshold_t": 0.2337186187505722, + "threshold_adj": 0.25 + } + }, + "am": { + "opus100": { + "u": 0.849158828676901, + "t": 0.8491970769079202, + "punct": null, + "u_acc": 0.5240963855421686, + "t_acc": 0.5261044176706827, + "punct_acc": null, + "threshold_t": 0.21086737513542175, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6757998511904761, + "t": 0.6626643602516764, + "punct": null, + "u_acc": 0.1796875, + "t_acc": 0.1875, + "punct_acc": null, + "threshold_t": 0.09794272482395172, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6865017361111112, + "t": 0.6707532918470418, + "punct": null, + "u_acc": 0.203125, + "t_acc": 0.1875, + "punct_acc": null, + "threshold_t": 0.11277268826961517, + "threshold_adj": 0.25 + } + }, + "ar": { + "ersatz": { + "u": 0.9219098277608916, + "t": 0.9338779128672746, + "punct": null, + "u_acc": 0.7420212765957447, + "t_acc": 0.7659574468085106, + "punct_acc": null, + "threshold_t": 0.12341130524873734, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8535666475425511, + "t": 0.8463504812902403, + "punct": null, + "u_acc": 0.5622489959839357, + "t_acc": 0.5321285140562249, + "punct_acc": null, + "threshold_t": 0.052781593054533005, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9091503267973855, + "t": 0.9123155929038282, + "punct": null, + "u_acc": 0.7058823529411765, + "t_acc": 0.7176470588235294, + "punct_acc": null, + "threshold_t": 0.3894990384578705, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6940686291486292, + "t": 0.6562026147083947, + "punct": null, + "u_acc": 0.1788, + "t_acc": 0.174, + "punct_acc": null, + "threshold_t": 0.03418400138616562, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7277521212121213, + "t": 0.6925875042604454, + "punct": null, + "u_acc": 0.2564, + "t_acc": 0.224, + "punct_acc": null, + "threshold_t": 0.03231871873140335, + "threshold_adj": 0.25 + } + }, + "az": { + "opus100": { + "u": 0.8837320421657772, + "t": 0.8842675174000475, + "punct": null, + "u_acc": 0.5903614457831325, + "t_acc": 0.5903614457831325, + "punct_acc": null, + "threshold_t": 0.24214908480644226, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7971889189087771, + "t": 0.7995948167933984, + "punct": null, + "u_acc": 0.39893617021276595, + "t_acc": 0.40484633569739953, + "punct_acc": null, + "threshold_t": 0.11989647895097733, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8686001350894968, + "t": 0.862863991144133, + "punct": null, + "u_acc": 0.5851063829787234, + "t_acc": 0.5537825059101655, + "punct_acc": null, + "threshold_t": 0.14061327278614044, + "threshold_adj": 0.25 + } + }, + "be": { + "opus100": { + "u": 0.9214043254776453, + "t": 0.9200465522257782, + "punct": null, + "u_acc": 0.7515274949083504, + "t_acc": 0.7474541751527495, + "punct_acc": null, + "threshold_t": 0.26165804266929626, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9328376703841388, + "t": 0.9245530182333156, + "punct": null, + "u_acc": 0.7806691449814126, + "t_acc": 0.7732342007434945, + "punct_acc": null, + "threshold_t": 0.5624202489852905, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7392797915185976, + "t": 0.7223003184716358, + "punct": null, + "u_acc": 0.2946138870863076, + "t_acc": 0.26216742375081115, + "punct_acc": null, + "threshold_t": 0.12178900092840195, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8611198665059794, + "t": 0.859686041840487, + "punct": null, + "u_acc": 0.5762491888384166, + "t_acc": 0.5743024010382868, + "punct_acc": null, + "threshold_t": 0.2369731217622757, + "threshold_adj": 0.25 + } + }, + "bg": { + "opus100": { + "u": 0.9659986639946561, + "t": 0.968002672010688, + "punct": null, + "u_acc": 0.843687374749499, + "t_acc": 0.8537074148296593, + "punct_acc": null, + "threshold_t": 0.3553542196750641, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9968936678614098, + "t": 0.9976105137395459, + "punct": null, + "u_acc": 0.989247311827957, + "t_acc": 0.992831541218638, + "punct_acc": null, + "threshold_t": 0.3046765923500061, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7702091713487458, + "t": 0.7515578676878677, + "punct": null, + "u_acc": 0.3664, + "t_acc": 0.322, + "punct_acc": null, + "threshold_t": 0.1414565145969391, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8659811680716945, + "t": 0.8719112842712843, + "punct": null, + "u_acc": 0.5784, + "t_acc": 0.6044, + "punct_acc": null, + "threshold_t": 0.365180641412735, + "threshold_adj": 0.25 + } + }, + "bn": { + "opus100": { + "u": 0.9109514228226502, + "t": 0.9187793427230047, + "punct": null, + "u_acc": 0.6720321931589537, + "t_acc": 0.7062374245472837, + "punct_acc": null, + "threshold_t": 0.3863508701324463, + "threshold_adj": 0.25 + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null, + "u_acc": 1.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6011152693460385, + "t": 0.5695046104566229, + "punct": null, + "u_acc": 0.10692307692307693, + "t_acc": 0.08461538461538462, + "punct_acc": null, + "threshold_t": 0.16838279366493225, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7207353757353758, + "t": 0.6917146419693931, + "punct": null, + "u_acc": 0.2753846153846154, + "t_acc": 0.22923076923076924, + "punct_acc": null, + "threshold_t": 0.11269952356815338, + "threshold_adj": 0.25 + } + }, + "ca": { + "opus100": { + "u": 0.950568273286326, + "t": 0.9513796323126952, + "punct": null, + "u_acc": 0.8073022312373225, + "t_acc": 0.8113590263691683, + "punct_acc": null, + "threshold_t": 0.2675432562828064, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9948051948051948, + "t": 0.994083694083694, + "punct": null, + "u_acc": 0.9783549783549783, + "t_acc": 0.9805194805194806, + "punct_acc": null, + "threshold_t": 0.8572491407394409, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7437187301587302, + "t": 0.7044851111851113, + "punct": null, + "u_acc": 0.2968, + "t_acc": 0.2292, + "punct_acc": null, + "threshold_t": 0.050100263208150864, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8541269841269841, + "t": 0.8532521789321789, + "punct": null, + "u_acc": 0.5628, + "t_acc": 0.5536, + "punct_acc": null, + "threshold_t": 0.18309006094932556, + "threshold_adj": 0.25 + } + }, + "ceb": { + "ud": { + "u": 1.0, + "t": null, + "punct": null, + "u_acc": 1.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.661904761904762, + "t": 0.676530612244898, + "punct": null, + "u_acc": 0.07142857142857142, + "t_acc": 0.14285714285714285, + "punct_acc": null, + "threshold_t": 0.1490655094385147, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7666666666666668, + "t": 0.761904761904762, + "punct": null, + "u_acc": 0.35714285714285715, + "t_acc": 0.21428571428571427, + "punct_acc": null, + "threshold_t": 0.1554812788963318, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9162228571428572, + "t": 0.9224304761904761, + "punct": null, + "u_acc": 0.7188, + "t_acc": 0.7504, + "punct_acc": null, + "threshold_t": 0.4428407847881317, + "threshold_adj": 0.25 + } + }, + "cs": { + "ersatz": { + "u": 0.9861111111111112, + "t": 0.9876543209876543, + "punct": null, + "u_acc": 0.9351851851851852, + "t_acc": 0.9583333333333334, + "punct_acc": null, + "threshold_t": 0.9331504106521606, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.941831204026326, + "t": 0.9415602013162988, + "punct": null, + "u_acc": 0.7723577235772358, + "t_acc": 0.7723577235772358, + "punct_acc": null, + "threshold_t": 0.24762991070747375, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9652884182063992, + "t": 0.9666535226077813, + "punct": null, + "u_acc": 0.8820977917981072, + "t_acc": 0.889589905362776, + "punct_acc": null, + "threshold_t": 0.29216286540031433, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7496900321900323, + "t": 0.738980352980353, + "punct": null, + "u_acc": 0.328, + "t_acc": 0.3028, + "punct_acc": null, + "threshold_t": 0.1743413656949997, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8529134776334777, + "t": 0.85281443001443, + "punct": null, + "u_acc": 0.5524, + "t_acc": 0.552, + "punct_acc": null, + "threshold_t": 0.24930830299854279, + "threshold_adj": 0.25 + } + }, + "cy": { + "opus100": { + "u": 0.8717716781035558, + "t": 0.8781070215568032, + "punct": null, + "u_acc": 0.5851528384279476, + "t_acc": 0.5917030567685589, + "punct_acc": null, + "threshold_t": 0.09652791917324066, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9941176470588236, + "t": 0.9893557422969189, + "punct": null, + "u_acc": 0.9789915966386554, + "t_acc": 0.9663865546218487, + "punct_acc": null, + "threshold_t": 0.8157894611358643, + "threshold_adj": 0.25 + } + }, + "da": { + "opus100": { + "u": 0.9581509216589863, + "t": 0.9532642089093702, + "punct": null, + "u_acc": 0.8306451612903226, + "t_acc": 0.8084677419354839, + "punct_acc": null, + "threshold_t": 0.11336419731378555, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9848699763593382, + "t": 0.9869976359338063, + "punct": null, + "u_acc": 0.9432624113475178, + "t_acc": 0.950354609929078, + "punct_acc": null, + "threshold_t": 0.32878902554512024, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7641678388278388, + "t": 0.737719820832762, + "punct": null, + "u_acc": 0.3492, + "t_acc": 0.3004, + "punct_acc": null, + "threshold_t": 0.0560988187789917, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.868203492063492, + "t": 0.8569550700280113, + "punct": null, + "u_acc": 0.592, + "t_acc": 0.5556, + "punct_acc": null, + "threshold_t": 0.13909964263439178, + "threshold_adj": 0.25 + } + }, + "de": { + "ersatz": { + "u": 0.9847929395790902, + "t": 0.9929395790902918, + "punct": null, + "u_acc": 0.9307535641547862, + "t_acc": 0.9755600814663951, + "punct_acc": null, + "threshold_t": 0.811960756778717, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.922868528564731, + "t": 0.8957571495546178, + "punct": null, + "u_acc": 0.7109704641350211, + "t_acc": 0.6075949367088608, + "punct_acc": null, + "threshold_t": 0.0353015661239624, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9807377049180328, + "t": 0.9717213114754099, + "punct": null, + "u_acc": 0.9344262295081968, + "t_acc": 0.9139344262295082, + "punct_acc": null, + "threshold_t": 0.838326632976532, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7883968831168832, + "t": 0.7800205416805417, + "punct": null, + "u_acc": 0.412, + "t_acc": 0.3808, + "punct_acc": null, + "threshold_t": 0.13438603281974792, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8651190724983828, + "t": 0.8709632034632033, + "punct": null, + "u_acc": 0.5936, + "t_acc": 0.6124, + "punct_acc": null, + "threshold_t": 0.5476462841033936, + "threshold_adj": 0.25 + } + }, + "el": { + "opus100": { + "u": 0.9676037483266399, + "t": 0.9621916236374067, + "punct": null, + "u_acc": 0.8594377510040161, + "t_acc": 0.8393574297188755, + "punct_acc": null, + "threshold_t": 0.09388376772403717, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.987719298245614, + "t": 0.9894736842105263, + "punct": null, + "u_acc": 0.956140350877193, + "t_acc": 0.9649122807017544, + "punct_acc": null, + "threshold_t": 0.38936981558799744, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7579774861739568, + "t": 0.7514768327578853, + "punct": null, + "u_acc": 0.336, + "t_acc": 0.3252, + "punct_acc": null, + "threshold_t": 0.1190619096159935, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8599359307359308, + "t": 0.8521778191856453, + "punct": null, + "u_acc": 0.5848, + "t_acc": 0.552, + "punct_acc": null, + "threshold_t": 0.13192982971668243, + "threshold_adj": 0.25 + } + }, + "en": { + "ersatz": { + "u": 0.9858997181427088, + "t": 0.988871581862236, + "punct": null, + "u_acc": 0.942367601246106, + "t_acc": 0.9584631360332295, + "punct_acc": null, + "threshold_t": 0.4886789321899414, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9608870967741936, + "t": 0.9381336405529954, + "punct": null, + "u_acc": 0.8366935483870968, + "t_acc": 0.7318548387096774, + "punct_acc": null, + "threshold_t": 0.022869346663355827, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.969221411192214, + "t": 0.9683698296836984, + "punct": null, + "u_acc": 0.9014598540145985, + "t_acc": 0.8978102189781022, + "punct_acc": null, + "threshold_t": 0.30434298515319824, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7434850682650682, + "t": 0.7288909075719602, + "punct": null, + "u_acc": 0.306, + "t_acc": 0.2844, + "punct_acc": null, + "threshold_t": 0.13170211017131805, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.855158343878344, + "t": 0.8616907936507936, + "punct": null, + "u_acc": 0.5608, + "t_acc": 0.5876, + "punct_acc": null, + "threshold_t": 0.4541487693786621, + "threshold_adj": 0.25 + } + }, + "eo": { + "opus100": { + "u": 0.9624999999999999, + "t": 0.9634408602150538, + "punct": null, + "u_acc": 0.8366935483870968, + "t_acc": 0.8387096774193549, + "punct_acc": null, + "threshold_t": 0.20170512795448303, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.730784121197655, + "t": 0.7175588335362771, + "punct": null, + "u_acc": 0.2825814536340852, + "t_acc": 0.2581453634085213, + "punct_acc": null, + "threshold_t": 0.14823395013809204, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8215455666583488, + "t": 0.8296017822333612, + "punct": null, + "u_acc": 0.4667919799498747, + "t_acc": 0.487468671679198, + "punct_acc": null, + "threshold_t": 0.3877566158771515, + "threshold_adj": 0.25 + } + }, + "es": { + "ersatz": { + "u": 0.9947780678851175, + "t": null, + "punct": null, + "u_acc": 0.9765013054830287, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9605488079172291, + "t": 0.9590643274853802, + "punct": null, + "u_acc": 0.8380566801619433, + "t_acc": 0.8319838056680162, + "punct_acc": null, + "threshold_t": 0.17698802053928375, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9906976744186047, + "t": 0.9930232558139535, + "punct": null, + "u_acc": 0.958139534883721, + "t_acc": 0.9697674418604652, + "punct_acc": null, + "threshold_t": 0.5207982063293457, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7438039723239723, + "t": 0.7262262608888695, + "punct": null, + "u_acc": 0.2996, + "t_acc": 0.26, + "punct_acc": null, + "threshold_t": 0.06751208752393723, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8543998668714797, + "t": 0.8414034883634882, + "punct": null, + "u_acc": 0.5724, + "t_acc": 0.5256, + "punct_acc": null, + "threshold_t": 0.11529985815286636, + "threshold_adj": 0.25 + } + }, + "et": { + "ersatz": { + "u": 0.9924603174603176, + "t": 0.9944444444444445, + "punct": null, + "u_acc": 0.9662698412698413, + "t_acc": 0.9801587301587301, + "punct_acc": null, + "threshold_t": 0.7987955808639526, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9510025062656642, + "t": 0.9495999614420667, + "punct": null, + "u_acc": 0.8016194331983806, + "t_acc": 0.7975708502024291, + "punct_acc": null, + "threshold_t": 0.1956799328327179, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9823383084577114, + "t": 0.9816749585406301, + "punct": null, + "u_acc": 0.945273631840796, + "t_acc": 0.9440298507462687, + "punct_acc": null, + "threshold_t": 0.5361690521240234, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7846304761904762, + "t": 0.7640366617122715, + "punct": null, + "u_acc": 0.3864, + "t_acc": 0.3444, + "punct_acc": null, + "threshold_t": 0.11341187357902527, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8748435497835497, + "t": 0.8776247619047619, + "punct": null, + "u_acc": 0.6124, + "t_acc": 0.6316, + "punct_acc": null, + "threshold_t": 0.47976431250572205, + "threshold_adj": 0.25 + } + }, + "eu": { + "opus100": { + "u": 0.9440813572392519, + "t": 0.9446211683053789, + "punct": null, + "u_acc": 0.7834008097165992, + "t_acc": 0.791497975708502, + "punct_acc": null, + "threshold_t": 0.3417677879333496, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9982222222222222, + "t": 0.9973333333333334, + "punct": null, + "u_acc": 0.9911111111111112, + "t_acc": 0.9911111111111112, + "punct_acc": null, + "threshold_t": 0.8686845898628235, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7029768208195627, + "t": 0.6616744739728612, + "punct": null, + "u_acc": 0.22311827956989247, + "t_acc": 0.1700268817204301, + "punct_acc": null, + "threshold_t": 0.0583031140267849, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8250453362348522, + "t": 0.8371767793138761, + "punct": null, + "u_acc": 0.4838709677419355, + "t_acc": 0.5248655913978495, + "punct_acc": null, + "threshold_t": 0.5521674752235413, + "threshold_adj": 0.25 + } + }, + "fa": { + "opus100": { + "u": 0.815959841761445, + "t": 0.7955585774724051, + "punct": null, + "u_acc": 0.47695390781563124, + "t_acc": 0.40080160320641284, + "punct_acc": null, + "threshold_t": 0.05582612007856369, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9950549450549451, + "t": 0.9994505494505495, + "punct": null, + "u_acc": 0.9752747252747253, + "t_acc": 0.9972527472527473, + "punct_acc": null, + "threshold_t": 0.9416598081588745, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7569910134310135, + "t": 0.7405482446733377, + "punct": null, + "u_acc": 0.3328, + "t_acc": 0.2976, + "punct_acc": null, + "threshold_t": 0.09243491291999817, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7979064713064713, + "t": 0.7944469339810516, + "punct": null, + "u_acc": 0.4196, + "t_acc": 0.4088, + "punct_acc": null, + "threshold_t": 0.16517779231071472, + "threshold_adj": 0.25 + } + }, + "fi": { + "ersatz": { + "u": 0.9912491649966599, + "t": 0.9950567802271209, + "punct": null, + "u_acc": 0.9619238476953907, + "t_acc": 0.9819639278557114, + "punct_acc": null, + "threshold_t": 0.6271025538444519, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9748490945674044, + "t": 0.9589058158474658, + "punct": null, + "u_acc": 0.8893360160965795, + "t_acc": 0.8229376257545271, + "punct_acc": null, + "threshold_t": 0.026859693229198456, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9816273932253313, + "t": 0.9848060873834068, + "punct": null, + "u_acc": 0.9304123711340206, + "t_acc": 0.9458762886597938, + "punct_acc": null, + "threshold_t": 0.4718955457210541, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.76868, + "t": 0.7548841447441448, + "punct": null, + "u_acc": 0.3644, + "t_acc": 0.332, + "punct_acc": null, + "threshold_t": 0.11599007248878479, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8656038095238094, + "t": 0.8646298412698412, + "punct": null, + "u_acc": 0.5908, + "t_acc": 0.5956, + "punct_acc": null, + "threshold_t": 0.43992528319358826, + "threshold_adj": 0.25 + } + }, + "fr": { + "ersatz": { + "u": 0.9929146537842192, + "t": 0.9938808373590983, + "punct": null, + "u_acc": 0.966183574879227, + "t_acc": 0.9758454106280193, + "punct_acc": null, + "threshold_t": 0.5611417293548584, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.942956952896101, + "t": null, + "punct": null, + "u_acc": 0.7667342799188641, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9948717948717949, + "t": 0.9948717948717949, + "punct": null, + "u_acc": 0.9807692307692307, + "t_acc": 0.9807692307692307, + "punct_acc": null, + "threshold_t": 0.8726150989532471, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7597271062271062, + "t": 0.7508898590298589, + "punct": null, + "u_acc": 0.344, + "t_acc": 0.3312, + "punct_acc": null, + "threshold_t": 0.13249678909778595, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8576650394050396, + "t": 0.855729898989899, + "punct": null, + "u_acc": 0.5792, + "t_acc": 0.5832, + "punct_acc": null, + "threshold_t": 0.4650229811668396, + "threshold_adj": 0.25 + } + }, + "fy": { + "opus100": { + "u": 0.9144492131616595, + "t": 0.9150929899856938, + "punct": null, + "u_acc": 0.7124463519313304, + "t_acc": 0.721030042918455, + "punct_acc": null, + "threshold_t": 0.2946665585041046, + "threshold_adj": 0.25 + } + }, + "ga": { + "opus100": { + "u": 0.9133544546850998, + "t": 0.9158346134152586, + "punct": null, + "u_acc": 0.7258064516129032, + "t_acc": 0.7076612903225806, + "punct_acc": null, + "threshold_t": 0.02855587564408779, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9740183792815372, + "t": 0.9807017543859649, + "punct": null, + "u_acc": 0.9035087719298246, + "t_acc": 0.9210526315789473, + "punct_acc": null, + "threshold_t": 0.7773510813713074, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.5339285714285714, + "t": 0.5136363636363638, + "punct": null, + "u_acc": 0.16666666666666666, + "t_acc": 0.08333333333333333, + "punct_acc": null, + "threshold_t": 0.07124573737382889, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7444444444444445, + "t": 0.7111111111111111, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.25, + "punct_acc": null, + "threshold_t": 0.21263958513736725, + "threshold_adj": 0.25 + } + }, + "gd": { + "opus100": { + "u": 0.8931569664902999, + "t": 0.9083882783882784, + "punct": null, + "u_acc": 0.6592592592592592, + "t_acc": 0.6851851851851852, + "punct_acc": null, + "threshold_t": 0.05159343406558037, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.8843137254901962, + "t": 0.8813725490196078, + "punct": null, + "u_acc": 0.6617647058823529, + "t_acc": 0.6691176470588235, + "punct_acc": null, + "threshold_t": 0.15926139056682587, + "threshold_adj": 0.25 + } + }, + "gl": { + "opus100": { + "u": 0.9550499231950844, + "t": 0.9604166666666667, + "punct": null, + "u_acc": 0.8145161290322581, + "t_acc": 0.8387096774193549, + "punct_acc": null, + "threshold_t": 0.5499491691589355, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9873333333333334, + "t": 0.9826666666666667, + "punct": null, + "u_acc": 0.95, + "t_acc": 0.94, + "punct_acc": null, + "threshold_t": 0.6944289207458496, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7299739682539683, + "t": 0.7041172427572429, + "punct": null, + "u_acc": 0.2704, + "t_acc": 0.228, + "punct_acc": null, + "threshold_t": 0.026710689067840576, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8422396825396825, + "t": 0.84118126984127, + "punct": null, + "u_acc": 0.528, + "t_acc": 0.5248, + "punct_acc": null, + "threshold_t": 0.21374894678592682, + "threshold_adj": 0.25 + } + }, + "gu": { + "ersatz": { + "u": 0.8067372260285646, + "t": 0.8052936564747588, + "punct": null, + "u_acc": 0.41338582677165353, + "t_acc": 0.41338582677165353, + "punct_acc": null, + "threshold_t": 0.2202444076538086, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8943803608399883, + "t": 0.8960070984915705, + "punct": null, + "u_acc": 0.6542443064182195, + "t_acc": 0.6770186335403726, + "punct_acc": null, + "threshold_t": 0.41234108805656433, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.5688017487346876, + "t": 0.5651449881264607, + "punct": null, + "u_acc": 0.09959555106167846, + "t_acc": 0.09908998988877654, + "punct_acc": null, + "threshold_t": 0.2356688380241394, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.655655716601116, + "t": 0.6426950129316402, + "punct": null, + "u_acc": 0.19059656218402427, + "t_acc": 0.18048533872598585, + "punct_acc": null, + "threshold_t": 0.15357056260108948, + "threshold_adj": 0.25 + } + }, + "ha": { + "opus100": { + "u": 0.9298761904761905, + "t": 0.9278761904761904, + "punct": null, + "u_acc": 0.712, + "t_acc": 0.728, + "punct_acc": null, + "threshold_t": 0.43042635917663574, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.5396825396825397, + "t": 0.5277777777777778, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.13105006515979767, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6888888888888888, + "t": 0.7777777777777777, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.3760215640068054, + "threshold_adj": 0.25 + } + }, + "he": { + "opus100": { + "u": 0.9427139994274263, + "t": 0.9451856093138659, + "punct": null, + "u_acc": 0.7835671342685371, + "t_acc": 0.7955911823647295, + "punct_acc": null, + "threshold_t": 0.3843834400177002, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9707482993197278, + "t": 0.9707482993197278, + "punct": null, + "u_acc": 0.8877551020408163, + "t_acc": 0.8877551020408163, + "punct_acc": null, + "threshold_t": 0.22814008593559265, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.713946366966367, + "t": 0.6643509840543089, + "punct": null, + "u_acc": 0.2636, + "t_acc": 0.1832, + "punct_acc": null, + "threshold_t": 0.04085134342312813, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7635423953823953, + "t": 0.7575535642135642, + "punct": null, + "u_acc": 0.3596, + "t_acc": 0.3432, + "punct_acc": null, + "threshold_t": 0.1578773856163025, + "threshold_adj": 0.25 + } + }, + "hi": { + "ersatz": { + "u": 0.9776719576719576, + "t": 0.9830158730158731, + "punct": null, + "u_acc": 0.9079365079365079, + "t_acc": 0.9349206349206349, + "punct_acc": null, + "threshold_t": 0.6789791584014893, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8319810306652411, + "t": 0.8309720980773614, + "punct": null, + "u_acc": 0.520242914979757, + "t_acc": 0.5242914979757085, + "punct_acc": null, + "threshold_t": 0.20742489397525787, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9985748218527315, + "t": 0.998258115597783, + "punct": null, + "u_acc": 0.9928741092636579, + "t_acc": 0.9928741092636579, + "punct_acc": null, + "threshold_t": 0.3663395345211029, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6895284848484848, + "t": 0.6903089321789322, + "punct": null, + "u_acc": 0.2268, + "t_acc": 0.2256, + "punct_acc": null, + "threshold_t": 0.27680352330207825, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.765889224109224, + "t": 0.7706947186147186, + "punct": null, + "u_acc": 0.3592, + "t_acc": 0.374, + "punct_acc": null, + "threshold_t": 0.3766213655471802, + "threshold_adj": 0.25 + } + }, + "hu": { + "opus100": { + "u": 0.967741935483871, + "t": 0.9665322580645161, + "punct": null, + "u_acc": 0.8467741935483871, + "t_acc": 0.8407258064516129, + "punct_acc": null, + "threshold_t": 0.10392607003450394, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9839285714285716, + "t": 0.9886904761904763, + "punct": null, + "u_acc": 0.9196428571428571, + "t_acc": 0.9553571428571429, + "punct_acc": null, + "threshold_t": 0.9734050631523132, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7410546031746031, + "t": 0.716186625966626, + "punct": null, + "u_acc": 0.294, + "t_acc": 0.2496, + "punct_acc": null, + "threshold_t": 0.03196019306778908, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8565571428571428, + "t": 0.8565571428571428, + "punct": null, + "u_acc": 0.5696, + "t_acc": 0.57, + "punct_acc": null, + "threshold_t": 0.2498149424791336, + "threshold_adj": 0.25 + } + }, + "hy": { + "opus100": { + "u": 0.9365901941642261, + "t": null, + "punct": null, + "u_acc": 0.7568337129840547, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9936936936936936, + "t": 0.9936936936936936, + "punct": null, + "u_acc": 0.972972972972973, + "t_acc": 0.972972972972973, + "punct_acc": null, + "threshold_t": 0.3888823688030243, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.758155561829475, + "t": 0.757712000945914, + "punct": null, + "u_acc": 0.3496, + "t_acc": 0.3464, + "punct_acc": null, + "threshold_t": 0.21877174079418182, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8327203174603174, + "t": 0.8416156132756132, + "punct": null, + "u_acc": 0.4948, + "t_acc": 0.524, + "punct_acc": null, + "threshold_t": 0.5661895871162415, + "threshold_adj": 0.25 + } + }, + "id": { + "opus100": { + "u": 0.94878024980484, + "t": 0.9558840749414519, + "punct": null, + "u_acc": 0.7786885245901639, + "t_acc": 0.8114754098360656, + "punct_acc": null, + "threshold_t": 0.37785643339157104, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9856, + "t": null, + "punct": null, + "u_acc": 0.944, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7298686868686869, + "t": 0.7124403363303363, + "punct": null, + "u_acc": 0.284, + "t_acc": 0.2552, + "punct_acc": null, + "threshold_t": 0.1283138394355774, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8335092640692641, + "t": 0.8170216716616716, + "punct": null, + "u_acc": 0.4932, + "t_acc": 0.458, + "punct_acc": null, + "threshold_t": 0.13014785945415497, + "threshold_adj": 0.25 + } + }, + "ig": { + "opus100": { + "u": 0.9531553398058253, + "t": 0.9526699029126213, + "punct": null, + "u_acc": 0.8349514563106796, + "t_acc": 0.8325242718446602, + "punct_acc": null, + "threshold_t": 0.24364778399467468, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6301282051282051, + "t": 0.5177738927738929, + "punct": null, + "u_acc": 0.038461538461538464, + "t_acc": 0.07692307692307693, + "punct_acc": null, + "threshold_t": 0.046659715473651886, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.78992673992674, + "t": 0.7795787545787547, + "punct": null, + "u_acc": 0.38461538461538464, + "t_acc": 0.4230769230769231, + "punct_acc": null, + "threshold_t": 0.0924156904220581, + "threshold_adj": 0.25 + } + }, + "is": { + "opus100": { + "u": 0.971495640509725, + "t": 0.9716297786720322, + "punct": null, + "u_acc": 0.8752515090543259, + "t_acc": 0.8772635814889336, + "punct_acc": null, + "threshold_t": 0.36820998787879944, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9720935387343456, + "t": 0.9762791384979129, + "punct": null, + "u_acc": 0.8844065166795966, + "t_acc": 0.9022498060512025, + "punct_acc": null, + "threshold_t": 0.46439334750175476, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7493638676844784, + "t": 0.7327399770147861, + "punct": null, + "u_acc": 0.30025445292620867, + "t_acc": 0.25190839694656486, + "punct_acc": null, + "threshold_t": 0.038970205932855606, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8556888404216647, + "t": 0.8561735126620623, + "punct": null, + "u_acc": 0.5776081424936387, + "t_acc": 0.549618320610687, + "punct_acc": null, + "threshold_t": 0.07952440530061722, + "threshold_adj": 0.25 + } + }, + "it": { + "opus100": { + "u": 0.9402420831856315, + "t": 0.9339856827760054, + "punct": null, + "u_acc": 0.7560483870967742, + "t_acc": 0.7358870967741935, + "punct_acc": null, + "threshold_t": 0.14387619495391846, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9983333333333333, + "t": 0.9983333333333333, + "punct": null, + "u_acc": 0.9916666666666667, + "t_acc": 0.9916666666666667, + "punct_acc": null, + "threshold_t": 0.21001183986663818, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7308187479187479, + "t": 0.7132005489934902, + "punct": null, + "u_acc": 0.2836, + "t_acc": 0.2556, + "punct_acc": null, + "threshold_t": 0.10696084797382355, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8456202775002774, + "t": 0.8539632323232323, + "punct": null, + "u_acc": 0.5264, + "t_acc": 0.558, + "punct_acc": null, + "threshold_t": 0.36582082509994507, + "threshold_adj": 0.25 + } + }, + "ja": { + "ersatz": { + "u": 0.9208955223880596, + "t": 0.9307213930348259, + "punct": null, + "u_acc": 0.7649253731343284, + "t_acc": 0.8097014925373134, + "punct_acc": null, + "threshold_t": 0.7521489262580872, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8895104226429528, + "t": 0.8697966469050809, + "punct": null, + "u_acc": 0.6666666666666666, + "t_acc": 0.5602409638554217, + "punct_acc": null, + "threshold_t": 0.041926536709070206, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9889705882352942, + "t": 0.9914215686274508, + "punct": null, + "u_acc": 0.9558823529411765, + "t_acc": 0.9779411764705882, + "punct_acc": null, + "threshold_t": 0.9548282027244568, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.9059685714285713, + "t": 0.9154464069264068, + "punct": null, + "u_acc": 0.69, + "t_acc": 0.7292, + "punct_acc": null, + "threshold_t": 0.44640979170799255, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9066799999999999, + "t": 0.9167378354978355, + "punct": null, + "u_acc": 0.6908, + "t_acc": 0.734, + "punct_acc": null, + "threshold_t": 0.44640979170799255, + "threshold_adj": 0.25 + } + }, + "jv": { + "ud": { + "u": 0.9869333333333334, + "t": null, + "punct": null, + "u_acc": 0.94, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9012095238095239, + "t": 0.9095130158730159, + "punct": null, + "u_acc": 0.662, + "t_acc": 0.7148, + "punct_acc": null, + "threshold_t": 0.5438118577003479, + "threshold_adj": 0.25 + } + }, + "ka": { + "opus100": { + "u": 0.9516, + "t": 0.9509333333333334, + "punct": null, + "u_acc": 0.814, + "t_acc": 0.814, + "punct_acc": null, + "threshold_t": 0.3330555558204651, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6902264491064491, + "t": 0.6831193006993007, + "punct": null, + "u_acc": 0.2284, + "t_acc": 0.2176, + "punct_acc": null, + "threshold_t": 0.1976659744977951, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7318564857364857, + "t": 0.7268745787545787, + "punct": null, + "u_acc": 0.2968, + "t_acc": 0.2892, + "punct_acc": null, + "threshold_t": 0.21062205731868744, + "threshold_adj": 0.25 + } + }, + "kk": { + "ersatz": { + "u": 0.9927999999999999, + "t": 0.9890666666666666, + "punct": null, + "u_acc": 0.972, + "t_acc": 0.964, + "punct_acc": null, + "threshold_t": 0.7998679280281067, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9397579693034239, + "t": 0.938439590712318, + "punct": null, + "u_acc": 0.7768595041322314, + "t_acc": 0.78099173553719, + "punct_acc": null, + "threshold_t": 0.4592266082763672, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9958015267175572, + "t": 0.9223918575063613, + "punct": null, + "u_acc": 0.9847328244274809, + "t_acc": 0.767175572519084, + "punct_acc": null, + "threshold_t": 0.9947128891944885, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7955581037716561, + "t": 0.794635116195691, + "punct": null, + "u_acc": 0.4010951403148528, + "t_acc": 0.39561943874058864, + "punct_acc": null, + "threshold_t": 0.02466193586587906, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.871222689395174, + "t": 0.8662440381126214, + "punct": null, + "u_acc": 0.5900068446269678, + "t_acc": 0.5687885010266941, + "punct_acc": null, + "threshold_t": 0.07968486100435257, + "threshold_adj": 0.25 + } + }, + "km": { + "ersatz": { + "u": 0.8111358133392033, + "t": 0.881302125369922, + "punct": null, + "u_acc": 0.43389830508474575, + "t_acc": 0.6033898305084746, + "punct_acc": null, + "threshold_t": 0.7257884740829468, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9057273768613976, + "t": 0.8978006872852233, + "punct": null, + "u_acc": 0.6907216494845361, + "t_acc": 0.688659793814433, + "punct_acc": null, + "threshold_t": 0.6600852608680725, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.766595059076262, + "t": 0.7691013247404226, + "punct": null, + "u_acc": 0.3609022556390977, + "t_acc": 0.3684210526315789, + "punct_acc": null, + "threshold_t": 0.20853766798973083, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7883995703544575, + "t": 0.7848191908342285, + "punct": null, + "u_acc": 0.39849624060150374, + "t_acc": 0.39849624060150374, + "punct_acc": null, + "threshold_t": 0.19838058948516846, + "threshold_adj": 0.25 + } + }, + "kn": { + "opus100": { + "u": 0.9135693215339232, + "t": 0.903244837758112, + "punct": null, + "u_acc": 0.7522123893805309, + "t_acc": 0.7256637168141593, + "punct_acc": null, + "threshold_t": 0.4894944727420807, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6368631368631368, + "t": 0.5823214664123756, + "punct": null, + "u_acc": 0.13286713286713286, + "t_acc": 0.0944055944055944, + "punct_acc": null, + "threshold_t": 0.09349380433559418, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.682023532023532, + "t": 0.6235880281334826, + "punct": null, + "u_acc": 0.17482517482517482, + "t_acc": 0.09090909090909091, + "punct_acc": null, + "threshold_t": 0.05498673766851425, + "threshold_adj": 0.25 + } + }, + "ko": { + "opus100": { + "u": 0.8739541160593792, + "t": 0.8757759784075574, + "punct": null, + "u_acc": 0.5850202429149798, + "t_acc": 0.5789473684210527, + "punct_acc": null, + "threshold_t": 0.13147146999835968, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9996503496503496, + "t": 0.9990675990675991, + "punct": null, + "u_acc": 0.9982517482517482, + "t_acc": 0.9965034965034965, + "punct_acc": null, + "threshold_t": 0.7487348318099976, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8326662049062048, + "t": 0.832743492063492, + "punct": null, + "u_acc": 0.4608, + "t_acc": 0.47, + "punct_acc": null, + "threshold_t": 0.7495351433753967, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8360780426109837, + "t": 0.8380352380952379, + "punct": null, + "u_acc": 0.4672, + "t_acc": 0.4796, + "punct_acc": null, + "threshold_t": 0.7146012783050537, + "threshold_adj": 0.25 + } + }, + "ku": { + "opus100": { + "u": 0.929115929115929, + "t": 0.9226611226611225, + "punct": null, + "u_acc": 0.7567567567567568, + "t_acc": 0.7463617463617463, + "punct_acc": null, + "threshold_t": 0.4111398458480835, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6624587301587302, + "t": 0.5331789010034469, + "punct": null, + "u_acc": 0.044, + "t_acc": 0.0796, + "punct_acc": null, + "threshold_t": 0.019707048311829567, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7016450793650795, + "t": 0.5916668820030292, + "punct": null, + "u_acc": 0.1504, + "t_acc": 0.1392, + "punct_acc": null, + "threshold_t": 0.019686538726091385, + "threshold_adj": 0.25 + } + }, + "ky": { + "opus100": { + "u": 0.9534920634920636, + "t": 0.9519274376417233, + "punct": null, + "u_acc": 0.830952380952381, + "t_acc": 0.819047619047619, + "punct_acc": null, + "threshold_t": 0.16481271386146545, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7603174603174603, + "t": 0.7514939309056956, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.27450980392156865, + "punct_acc": null, + "threshold_t": 0.053619518876075745, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8307500778089014, + "t": 0.8259881730469965, + "punct": null, + "u_acc": 0.46078431372549017, + "t_acc": 0.47058823529411764, + "punct_acc": null, + "threshold_t": 0.10778642445802689, + "threshold_adj": 0.25 + } + }, + "la": { + "ud": { + "u": 0.9789206349206349, + "t": 0.979809523809524, + "punct": null, + "u_acc": 0.9161904761904762, + "t_acc": 0.9295238095238095, + "punct_acc": null, + "threshold_t": 0.48165076971054077, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.611111111111111, + "t": 0.6666666666666666, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.41791555285453796, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8333333333333334, + "t": 0.8666666666666667, + "punct": null, + "u_acc": 0.6666666666666666, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.049844175577163696, + "threshold_adj": 0.25 + } + }, + "lt": { + "ersatz": { + "u": 0.9881333333333334, + "t": 0.9796, + "punct": null, + "u_acc": 0.952, + "t_acc": 0.912, + "punct_acc": null, + "threshold_t": 0.04063809663057327, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9355062724014336, + "t": 0.9253683144812178, + "punct": null, + "u_acc": 0.780241935483871, + "t_acc": 0.7459677419354839, + "punct_acc": null, + "threshold_t": 0.09401948750019073, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9883040935672515, + "t": 0.9871345029239766, + "punct": null, + "u_acc": 0.9532163742690059, + "t_acc": 0.9590643274853801, + "punct_acc": null, + "threshold_t": 0.6304519772529602, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7442902164502164, + "t": 0.7073117593517594, + "punct": null, + "u_acc": 0.3004, + "t_acc": 0.2476, + "punct_acc": null, + "threshold_t": 0.044889580458402634, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8597834920634921, + "t": 0.8464124386724386, + "punct": null, + "u_acc": 0.5736, + "t_acc": 0.53, + "punct_acc": null, + "threshold_t": 0.11380349844694138, + "threshold_adj": 0.25 + } + }, + "lv": { + "ersatz": { + "u": 0.9949735449735451, + "t": 0.9961640211640211, + "punct": null, + "u_acc": 0.9761904761904762, + "t_acc": 0.9861111111111112, + "punct_acc": null, + "threshold_t": 0.8084164261817932, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9407222932577903, + "t": 0.9349460411123697, + "punct": null, + "u_acc": 0.795131845841785, + "t_acc": 0.7606490872210954, + "punct_acc": null, + "threshold_t": 0.06164511293172836, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9941956882255389, + "t": 0.9936428966279712, + "punct": null, + "u_acc": 0.9767827529021559, + "t_acc": 0.9751243781094527, + "punct_acc": null, + "threshold_t": 0.263686865568161, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7536313886113887, + "t": 0.7369654581675635, + "punct": null, + "u_acc": 0.3308, + "t_acc": 0.2996, + "punct_acc": null, + "threshold_t": 0.0962030366063118, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8571533910533912, + "t": 0.8606295815295816, + "punct": null, + "u_acc": 0.5668, + "t_acc": 0.5784, + "punct_acc": null, + "threshold_t": 0.2842962443828583, + "threshold_adj": 0.25 + } + }, + "mg": { + "opus100": { + "u": 0.9500867553499133, + "t": 0.9562945826103721, + "punct": null, + "u_acc": 0.8036437246963563, + "t_acc": 0.8380566801619433, + "punct_acc": null, + "threshold_t": 0.43859416246414185, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6773368606701938, + "t": 0.6675089984268726, + "punct": null, + "u_acc": 0.18518518518518517, + "t_acc": 0.24074074074074073, + "punct_acc": null, + "threshold_t": 0.1033320277929306, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8345679012345678, + "t": 0.8141975308641973, + "punct": null, + "u_acc": 0.5, + "t_acc": 0.42592592592592593, + "punct_acc": null, + "threshold_t": 0.347043514251709, + "threshold_adj": 0.25 + } + }, + "mk": { + "opus100": { + "u": 0.9614285714285714, + "t": 0.9646857142857143, + "punct": null, + "u_acc": 0.83, + "t_acc": 0.844, + "punct_acc": null, + "threshold_t": 0.3625500798225403, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7327476368076368, + "t": 0.7418584015984017, + "punct": null, + "u_acc": 0.294, + "t_acc": 0.312, + "punct_acc": null, + "threshold_t": 0.3185439705848694, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8421154689754691, + "t": 0.8541809523809523, + "punct": null, + "u_acc": 0.5176, + "t_acc": 0.5608, + "punct_acc": null, + "threshold_t": 0.604336678981781, + "threshold_adj": 0.25 + } + }, + "ml": { + "opus100": { + "u": 0.9018359150889272, + "t": 0.9113214763817172, + "punct": null, + "u_acc": 0.6365461847389559, + "t_acc": 0.6706827309236948, + "punct_acc": null, + "threshold_t": 0.3371252417564392, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6175523131638911, + "t": 0.6259365876195943, + "punct": null, + "u_acc": 0.1349206349206349, + "t_acc": 0.14814814814814814, + "punct_acc": null, + "threshold_t": 0.27491495013237, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7118285080586669, + "t": 0.6965482489292014, + "punct": null, + "u_acc": 0.22486772486772486, + "t_acc": 0.20238095238095238, + "punct_acc": null, + "threshold_t": 0.18105609714984894, + "threshold_adj": 0.25 + } + }, + "mn": { + "opus100": { + "u": 0.9168575063613231, + "t": null, + "punct": null, + "u_acc": 0.7356870229007634, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8573419047619047, + "t": 0.8565666666666666, + "punct": null, + "u_acc": 0.5496, + "t_acc": 0.5472, + "punct_acc": null, + "threshold_t": 0.24174167215824127, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9031422222222222, + "t": 0.9070349206349206, + "punct": null, + "u_acc": 0.6716, + "t_acc": 0.6912, + "punct_acc": null, + "threshold_t": 0.32808011770248413, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9583676190476191, + "t": 0.9656438095238096, + "punct": null, + "u_acc": 0.8364, + "t_acc": 0.8764, + "punct_acc": null, + "threshold_t": 0.6051644682884216, + "threshold_adj": 0.25 + } + }, + "mr": { + "opus100": { + "u": 0.9628072196620584, + "t": 0.961050307219662, + "punct": null, + "u_acc": 0.8649193548387096, + "t_acc": 0.8649193548387096, + "punct_acc": null, + "threshold_t": 0.6243773102760315, + "threshold_adj": 0.25 + }, + "ud": { + "u": 1.0, + "t": 1.0, + "punct": null, + "u_acc": 1.0, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.7459806799888611, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.590676487956488, + "t": 0.5990434942834943, + "punct": null, + "u_acc": 0.122, + "t_acc": 0.1356, + "punct_acc": null, + "threshold_t": 0.3285921812057495, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7086385747585747, + "t": 0.7281650216450216, + "punct": null, + "u_acc": 0.268, + "t_acc": 0.2956, + "punct_acc": null, + "threshold_t": 0.7544670104980469, + "threshold_adj": 0.25 + } + }, + "ms": { + "opus100": { + "u": 0.9433568489124043, + "t": 0.9544581618655693, + "punct": null, + "u_acc": 0.7613168724279835, + "t_acc": 0.8065843621399177, + "punct_acc": null, + "threshold_t": 0.3882980942726135, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7239693781553025, + "t": 0.723987329780397, + "punct": null, + "u_acc": 0.26845238095238094, + "t_acc": 0.26726190476190476, + "punct_acc": null, + "threshold_t": 0.25678184628486633, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.82237333433762, + "t": 0.8209174489531633, + "punct": null, + "u_acc": 0.4607142857142857, + "t_acc": 0.4583333333333333, + "punct_acc": null, + "threshold_t": 0.23651057481765747, + "threshold_adj": 0.25 + } + }, + "mt": { + "opus100": { + "u": 0.9014914909651752, + "t": 0.8903640219429694, + "punct": null, + "u_acc": 0.6882591093117408, + "t_acc": 0.6396761133603239, + "punct_acc": null, + "threshold_t": 0.036908455193042755, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9587179487179487, + "t": 0.9548717948717949, + "punct": null, + "u_acc": 0.8846153846153846, + "t_acc": 0.8769230769230769, + "punct_acc": null, + "threshold_t": 0.18629658222198486, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7051282051282052, + "t": 0.6782051282051282, + "punct": null, + "u_acc": 0.19230769230769232, + "t_acc": 0.15384615384615385, + "punct_acc": null, + "threshold_t": 0.0365469865500927, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8166666666666667, + "t": 0.8168498168498168, + "punct": null, + "u_acc": 0.46153846153846156, + "t_acc": 0.4230769230769231, + "punct_acc": null, + "threshold_t": 0.036908335983753204, + "threshold_adj": 0.25 + } + }, + "my": { + "opus100": { + "u": 0.9404569892473118, + "t": 0.939247311827957, + "punct": null, + "u_acc": 0.7903225806451613, + "t_acc": 0.7923387096774194, + "punct_acc": null, + "threshold_t": 0.2920242249965668, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.9457415873015872, + "t": 0.9415866666666667, + "punct": null, + "u_acc": 0.8144, + "t_acc": 0.7968, + "punct_acc": null, + "threshold_t": 0.16114193201065063, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9501904761904761, + "t": 0.9475219047619048, + "punct": null, + "u_acc": 0.83, + "t_acc": 0.8176, + "punct_acc": null, + "threshold_t": 0.16551969945430756, + "threshold_adj": 0.25 + } + }, + "ne": { + "opus100": { + "u": 0.8846672707137823, + "t": 0.8846874056176381, + "punct": null, + "u_acc": 0.6300211416490487, + "t_acc": 0.627906976744186, + "punct_acc": null, + "threshold_t": 0.17074307799339294, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7100294171722743, + "t": 0.6884450132349291, + "punct": null, + "u_acc": 0.2548262548262548, + "t_acc": 0.21621621621621623, + "punct_acc": null, + "threshold_t": 0.07013026624917984, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7269488876631734, + "t": 0.7066558912672358, + "punct": null, + "u_acc": 0.27606177606177607, + "t_acc": 0.24324324324324326, + "punct_acc": null, + "threshold_t": 0.06265434622764587, + "threshold_adj": 0.25 + } + }, + "nl": { + "opus100": { + "u": 0.9582666666666666, + "t": null, + "punct": null, + "u_acc": 0.802, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9628635346756153, + "t": 0.956279961649089, + "punct": null, + "u_acc": 0.8791946308724832, + "t_acc": 0.87248322147651, + "punct_acc": null, + "threshold_t": 0.1372213363647461, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.814349341029341, + "t": 0.8185078273417404, + "punct": null, + "u_acc": 0.462, + "t_acc": 0.4748, + "punct_acc": null, + "threshold_t": 0.3212195336818695, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8827856898656898, + "t": 0.8936933333333332, + "punct": null, + "u_acc": 0.6212, + "t_acc": 0.6684, + "punct_acc": null, + "threshold_t": 0.5818445086479187, + "threshold_adj": 0.25 + } + }, + "no": { + "opus100": { + "u": 0.9709773425499233, + "t": 0.9738095238095239, + "punct": null, + "u_acc": 0.875, + "t_acc": 0.8870967741935484, + "punct_acc": null, + "threshold_t": 0.4330575168132782, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9921487603305785, + "t": 0.9918732782369146, + "punct": null, + "u_acc": 0.96900826446281, + "t_acc": 0.96900826446281, + "punct_acc": null, + "threshold_t": 0.22844962775707245, + "threshold_adj": 0.25 + } + }, + "pa": { + "opus100": { + "u": 0.8840456674473068, + "t": 0.8811085089773614, + "punct": null, + "u_acc": 0.6311475409836066, + "t_acc": 0.6311475409836066, + "punct_acc": null, + "threshold_t": 0.3601621687412262, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6871833839918947, + "t": 0.6808595069233367, + "punct": null, + "u_acc": 0.22340425531914893, + "t_acc": 0.2127659574468085, + "punct_acc": null, + "threshold_t": 0.23010942339897156, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7839581222559946, + "t": 0.7408169844340057, + "punct": null, + "u_acc": 0.40425531914893614, + "t_acc": 0.3191489361702128, + "punct_acc": null, + "threshold_t": 0.04414798319339752, + "threshold_adj": 0.25 + } + }, + "pl": { + "ersatz": { + "u": 0.9901726427622842, + "t": 0.9864541832669322, + "punct": null, + "u_acc": 0.9641434262948207, + "t_acc": 0.9561752988047809, + "punct_acc": null, + "threshold_t": 0.7999968528747559, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.96122311827957, + "t": 0.9596102150537635, + "punct": null, + "u_acc": 0.8326612903225806, + "t_acc": 0.8245967741935484, + "punct_acc": null, + "threshold_t": 0.20566344261169434, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9938628158844766, + "t": 0.9494584837545126, + "punct": null, + "u_acc": 0.9729241877256317, + "t_acc": 0.8483754512635379, + "punct_acc": null, + "threshold_t": 0.9983501434326172, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7634641269841269, + "t": 0.721223600724368, + "punct": null, + "u_acc": 0.342, + "t_acc": 0.2476, + "punct_acc": null, + "threshold_t": 0.05084637552499771, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8669728138528139, + "t": 0.8694342857142856, + "punct": null, + "u_acc": 0.5928, + "t_acc": 0.6012, + "punct_acc": null, + "threshold_t": 0.2887748181819916, + "threshold_adj": 0.25 + } + }, + "ps": { + "ersatz": { + "u": 0.8404482614160034, + "t": 0.8514222662316504, + "punct": null, + "u_acc": 0.4912023460410557, + "t_acc": 0.5293255131964809, + "punct_acc": null, + "threshold_t": 0.5151495933532715, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9092798812175203, + "t": 0.909502598366741, + "punct": null, + "u_acc": 0.7015590200445434, + "t_acc": 0.7104677060133631, + "punct_acc": null, + "threshold_t": 0.2887740433216095, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6270441642704416, + "t": 0.6186858154011439, + "punct": null, + "u_acc": 0.11678832116788321, + "t_acc": 0.12408759124087591, + "punct_acc": null, + "threshold_t": 0.18567009270191193, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6485411992711262, + "t": 0.6590074969637014, + "punct": null, + "u_acc": 0.1386861313868613, + "t_acc": 0.16058394160583941, + "punct_acc": null, + "threshold_t": 0.33988407254219055, + "threshold_adj": 0.25 + } + }, + "pt": { + "opus100": { + "u": 0.963919413919414, + "t": 0.9621071910545594, + "punct": null, + "u_acc": 0.8421052631578947, + "t_acc": 0.8340080971659919, + "punct_acc": null, + "threshold_t": 0.1929858922958374, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9829908675799086, + "t": 0.9841324200913242, + "punct": null, + "u_acc": 0.9383561643835616, + "t_acc": 0.9417808219178082, + "punct_acc": null, + "threshold_t": 0.20606662333011627, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7692416161616162, + "t": 0.765777518037518, + "punct": null, + "u_acc": 0.3468, + "t_acc": 0.3372, + "punct_acc": null, + "threshold_t": 0.18211230635643005, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8666912842712842, + "t": 0.8686192481203009, + "punct": null, + "u_acc": 0.59, + "t_acc": 0.6008, + "punct_acc": null, + "threshold_t": 0.31040501594543457, + "threshold_adj": 0.25 + } + }, + "ro": { + "ersatz": { + "u": 0.9916, + "t": 0.9914666666666666, + "punct": null, + "u_acc": 0.966, + "t_acc": 0.968, + "punct_acc": null, + "threshold_t": 0.4203553795814514, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9705723905723905, + "t": 0.9672727272727274, + "punct": null, + "u_acc": 0.8848484848484849, + "t_acc": 0.8626262626262626, + "punct_acc": null, + "threshold_t": 0.10213588178157806, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9913814955640051, + "t": 0.9951837769328264, + "punct": null, + "u_acc": 0.9619771863117871, + "t_acc": 0.9809885931558935, + "punct_acc": null, + "threshold_t": 0.7139542698860168, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7353034920634921, + "t": 0.7283963924963925, + "punct": null, + "u_acc": 0.27, + "t_acc": 0.2696, + "punct_acc": null, + "threshold_t": 0.13634811341762543, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8558977777777778, + "t": 0.8526403174603177, + "punct": null, + "u_acc": 0.572, + "t_acc": 0.5648, + "punct_acc": null, + "threshold_t": 0.20732243359088898, + "threshold_adj": 0.25 + } + }, + "ru": { + "ersatz": { + "u": 0.9913978494623656, + "t": 0.9908602150537635, + "punct": null, + "u_acc": 0.967741935483871, + "t_acc": 0.967741935483871, + "punct_acc": null, + "threshold_t": 0.8984811305999756, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9229556986729119, + "t": null, + "punct": null, + "u_acc": 0.735655737704918, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9469696969696969, + "t": 0.9526190476190476, + "punct": null, + "u_acc": 0.8, + "t_acc": 0.8318181818181818, + "punct_acc": null, + "threshold_t": 0.49670398235321045, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7547609523809524, + "t": 0.7491067243867243, + "punct": null, + "u_acc": 0.3428, + "t_acc": 0.3216, + "punct_acc": null, + "threshold_t": 0.19894063472747803, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8573196825396826, + "t": 0.8686197402597403, + "punct": null, + "u_acc": 0.566, + "t_acc": 0.61, + "punct_acc": null, + "threshold_t": 0.4124561846256256, + "threshold_adj": 0.25 + } + }, + "si": { + "opus100": { + "u": 0.888892089093702, + "t": 0.9041090629800308, + "punct": null, + "u_acc": 0.594758064516129, + "t_acc": 0.6532258064516129, + "punct_acc": null, + "threshold_t": 0.5054563879966736, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6604151232058209, + "t": 0.6792174234034699, + "punct": null, + "u_acc": 0.20155038759689922, + "t_acc": 0.2248062015503876, + "punct_acc": null, + "threshold_t": 0.34431442618370056, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.685750425285309, + "t": 0.7013904269718223, + "punct": null, + "u_acc": 0.24806201550387597, + "t_acc": 0.2713178294573643, + "punct_acc": null, + "threshold_t": 0.2913288176059723, + "threshold_adj": 0.25 + } + }, + "sk": { + "opus100": { + "u": 0.9645353302611367, + "t": 0.9594470046082951, + "punct": null, + "u_acc": 0.8629032258064516, + "t_acc": 0.8407258064516129, + "punct_acc": null, + "threshold_t": 0.1614118367433548, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9808805031446541, + "t": 0.9725786163522013, + "punct": null, + "u_acc": 0.9320754716981132, + "t_acc": 0.9132075471698113, + "punct_acc": null, + "threshold_t": 0.5945528745651245, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7544524275724276, + "t": 0.7445339445349971, + "punct": null, + "u_acc": 0.3384, + "t_acc": 0.3188, + "punct_acc": null, + "threshold_t": 0.17079539597034454, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8527331313131313, + "t": 0.8651520634920634, + "punct": null, + "u_acc": 0.562, + "t_acc": 0.6028, + "punct_acc": null, + "threshold_t": 0.45705488324165344, + "threshold_adj": 0.25 + } + }, + "sl": { + "opus100": { + "u": 0.9674029451137884, + "t": 0.9613788487282463, + "punct": null, + "u_acc": 0.8534136546184738, + "t_acc": 0.8273092369477911, + "punct_acc": null, + "threshold_t": 0.12029329687356949, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9929166666666667, + "t": 0.9935416666666667, + "punct": null, + "u_acc": 0.96875, + "t_acc": 0.978125, + "punct_acc": null, + "threshold_t": 0.7412293553352356, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7793301875901876, + "t": 0.7496569075369075, + "punct": null, + "u_acc": 0.3896, + "t_acc": 0.316, + "punct_acc": null, + "threshold_t": 0.07570210099220276, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8772355555555558, + "t": 0.8664495238095238, + "punct": null, + "u_acc": 0.6244, + "t_acc": 0.5912, + "punct_acc": null, + "threshold_t": 0.15346601605415344, + "threshold_adj": 0.25 + } + }, + "sq": { + "opus100": { + "u": 0.9626790553619822, + "t": 0.9666085946573751, + "punct": null, + "u_acc": 0.8394308943089431, + "t_acc": 0.8577235772357723, + "punct_acc": null, + "threshold_t": 0.34419625997543335, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9866666666666667, + "t": null, + "punct": null, + "u_acc": 0.9333333333333333, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6990674254503666, + "t": 0.6975639070733188, + "punct": null, + "u_acc": 0.2412, + "t_acc": 0.2364, + "punct_acc": null, + "threshold_t": 0.2398364245891571, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8174268864468863, + "t": 0.830704721944722, + "punct": null, + "u_acc": 0.472, + "t_acc": 0.5096, + "punct_acc": null, + "threshold_t": 0.3592383563518524, + "threshold_adj": 0.25 + } + }, + "sr": { + "opus100": { + "u": 0.9731688659399503, + "t": 0.962459361254542, + "punct": null, + "u_acc": 0.8734939759036144, + "t_acc": 0.8273092369477911, + "punct_acc": null, + "threshold_t": 0.09887845814228058, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9953846153846152, + "t": 0.9953846153846152, + "punct": null, + "u_acc": 0.9769230769230769, + "t_acc": 0.9769230769230769, + "punct_acc": null, + "threshold_t": 0.4137810170650482, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7478758152958153, + "t": 0.716153016355625, + "punct": null, + "u_acc": 0.3212, + "t_acc": 0.27, + "punct_acc": null, + "threshold_t": 0.07007341086864471, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8604705753184014, + "t": 0.8633397402597403, + "punct": null, + "u_acc": 0.5836, + "t_acc": 0.6024, + "punct_acc": null, + "threshold_t": 0.47229593992233276, + "threshold_adj": 0.25 + } + }, + "sv": { + "opus100": { + "u": 0.9637884872824632, + "t": 0.9637884872824632, + "punct": null, + "u_acc": 0.8393574297188755, + "t_acc": 0.8393574297188755, + "punct_acc": null, + "threshold_t": 0.23179912567138672, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9751937984496125, + "t": 0.968217054263566, + "punct": null, + "u_acc": 0.9031007751937985, + "t_acc": 0.8682170542635659, + "punct_acc": null, + "threshold_t": 0.14057163894176483, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7766660317460317, + "t": 0.7771435497835498, + "punct": null, + "u_acc": 0.378, + "t_acc": 0.3832, + "punct_acc": null, + "threshold_t": 0.17338405549526215, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8670673015873015, + "t": 0.8669273015873016, + "punct": null, + "u_acc": 0.5908, + "t_acc": 0.592, + "punct_acc": null, + "threshold_t": 0.33059531450271606, + "threshold_adj": 0.25 + } + }, + "ta": { + "ersatz": { + "u": 0.9824701195219123, + "t": 0.9827357237715805, + "punct": null, + "u_acc": 0.9282868525896414, + "t_acc": 0.9322709163346613, + "punct_acc": null, + "threshold_t": 0.4892158806324005, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8528027810040005, + "t": 0.8500120983352691, + "punct": null, + "u_acc": 0.5508130081300813, + "t_acc": 0.5487804878048781, + "punct_acc": null, + "threshold_t": 0.538057804107666, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9933333333333334, + "t": 1.0, + "punct": null, + "u_acc": 0.9666666666666667, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.9955853223800659, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6792917481885453, + "t": 0.679462674533849, + "punct": null, + "u_acc": 0.200711743772242, + "t_acc": 0.2, + "punct_acc": null, + "threshold_t": 0.19745874404907227, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7503184478629319, + "t": 0.7469855055976052, + "punct": null, + "u_acc": 0.31316725978647686, + "t_acc": 0.305338078291815, + "punct_acc": null, + "threshold_t": 0.2187870740890503, + "threshold_adj": 0.25 + } + }, + "te": { + "opus100": { + "u": 0.9020814559590069, + "t": 0.913673469387755, + "punct": null, + "u_acc": 0.6551020408163265, + "t_acc": 0.7183673469387755, + "punct_acc": null, + "threshold_t": 0.4501913785934448, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6389553464326878, + "t": 0.6710749723589603, + "punct": null, + "u_acc": 0.1510574018126888, + "t_acc": 0.18580060422960726, + "punct_acc": null, + "threshold_t": 0.36309248208999634, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7239677744209466, + "t": 0.7295676881024313, + "punct": null, + "u_acc": 0.26435045317220546, + "t_acc": 0.27341389728096677, + "punct_acc": null, + "threshold_t": 0.3369843065738678, + "threshold_adj": 0.25 + } + }, + "tg": { + "opus100": { + "u": 0.9436507936507936, + "t": 0.9443105756358768, + "punct": null, + "u_acc": 0.7791164658634538, + "t_acc": 0.7911646586345381, + "punct_acc": null, + "threshold_t": 0.3496752083301544, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7451754385964912, + "t": 0.7202191083770031, + "punct": null, + "u_acc": 0.27631578947368424, + "t_acc": 0.25, + "punct_acc": null, + "threshold_t": 0.045236945152282715, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8535714285714285, + "t": 0.8355263157894737, + "punct": null, + "u_acc": 0.5657894736842105, + "t_acc": 0.5131578947368421, + "punct_acc": null, + "threshold_t": 0.3738732933998108, + "threshold_adj": 0.25 + } + }, + "th": { + "opus100": { + "u": 0.8054417187750521, + "t": 0.8166586499919833, + "punct": null, + "u_acc": 0.32525252525252524, + "t_acc": 0.3595959595959596, + "punct_acc": null, + "threshold_t": 0.3106255531311035, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.8377333333333333, + "t": null, + "punct": null, + "u_acc": 0.5, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7313562163440425, + "t": 0.7247102699733142, + "punct": null, + "u_acc": 0.2676, + "t_acc": 0.2552, + "punct_acc": null, + "threshold_t": 0.19142204523086548, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.733058864504671, + "t": 0.7273279790616116, + "punct": null, + "u_acc": 0.2688, + "t_acc": 0.2592, + "punct_acc": null, + "threshold_t": 0.19142204523086548, + "threshold_adj": 0.25 + } + }, + "tr": { + "ersatz": { + "u": 0.9857269503546099, + "t": 0.9850620567375886, + "punct": null, + "u_acc": 0.9428191489361702, + "t_acc": 0.949468085106383, + "punct_acc": null, + "threshold_t": 0.7887669801712036, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.957085020242915, + "t": 0.9574898785425101, + "punct": null, + "u_acc": 0.8238866396761133, + "t_acc": 0.8259109311740891, + "punct_acc": null, + "threshold_t": 0.2625616192817688, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9818181818181818, + "t": 0.9823030303030302, + "punct": null, + "u_acc": 0.9309090909090909, + "t_acc": 0.9309090909090909, + "punct_acc": null, + "threshold_t": 0.4290445148944855, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.796331754911755, + "t": 0.7840348171828172, + "punct": null, + "u_acc": 0.4048, + "t_acc": 0.3796, + "punct_acc": null, + "threshold_t": 0.10504572838544846, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8664743434343434, + "t": 0.8663676767676769, + "punct": null, + "u_acc": 0.5724, + "t_acc": 0.5712, + "punct_acc": null, + "threshold_t": 0.2455698698759079, + "threshold_adj": 0.25 + } + }, + "uk": { + "opus100": { + "u": 0.9488908013004398, + "t": 0.9525052591317652, + "punct": null, + "u_acc": 0.785140562248996, + "t_acc": 0.7991967871485943, + "punct_acc": null, + "threshold_t": 0.3211623430252075, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9741071428571428, + "t": 0.9755952380952381, + "punct": null, + "u_acc": 0.9107142857142857, + "t_acc": 0.9241071428571429, + "punct_acc": null, + "threshold_t": 0.5961913466453552, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7508872039072039, + "t": 0.7299967652637218, + "punct": null, + "u_acc": 0.3208, + "t_acc": 0.2736, + "punct_acc": null, + "threshold_t": 0.10120634734630585, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8594365079365079, + "t": 0.8556149206349206, + "punct": null, + "u_acc": 0.5772, + "t_acc": 0.5632, + "punct_acc": null, + "threshold_t": 0.19239981472492218, + "threshold_adj": 0.25 + } + }, + "ur": { + "opus100": { + "u": 0.76511803874092, + "t": 0.7590105986292427, + "punct": null, + "u_acc": 0.3411016949152542, + "t_acc": 0.3326271186440678, + "punct_acc": null, + "threshold_t": 0.17081527411937714, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9843283582089553, + "t": 0.9870646766169155, + "punct": null, + "u_acc": 0.9477611940298507, + "t_acc": 0.9552238805970149, + "punct_acc": null, + "threshold_t": 0.7371587157249451, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7183397623274295, + "t": 0.7168681010664567, + "punct": null, + "u_acc": 0.2857142857142857, + "t_acc": 0.2831449126413155, + "punct_acc": null, + "threshold_t": 0.19737547636032104, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7550214003194478, + "t": 0.7376827523281788, + "punct": null, + "u_acc": 0.35046248715313466, + "t_acc": 0.30883864337101746, + "punct_acc": null, + "threshold_t": 0.07652111351490021, + "threshold_adj": 0.25 + } + }, + "uz": { + "opus100": { + "u": 0.9080952380952382, + "t": 0.9172789115646259, + "punct": null, + "u_acc": 0.6306122448979592, + "t_acc": 0.6816326530612244, + "punct_acc": null, + "threshold_t": 0.32359009981155396, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7669162237200212, + "t": 0.7481809973898581, + "punct": null, + "u_acc": 0.34282700421940926, + "t_acc": 0.2921940928270042, + "punct_acc": null, + "threshold_t": 0.0508728101849556, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.838890563257652, + "t": 0.8309339628959882, + "punct": null, + "u_acc": 0.49683544303797467, + "t_acc": 0.4630801687763713, + "punct_acc": null, + "threshold_t": 0.08416768163442612, + "threshold_adj": 0.25 + } + }, + "vi": { + "opus100": { + "u": 0.9556927297668039, + "t": 0.9617969821673525, + "punct": null, + "u_acc": 0.8168724279835391, + "t_acc": 0.8436213991769548, + "punct_acc": null, + "threshold_t": 0.6637476086616516, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9913333333333333, + "t": 0.9973333333333332, + "punct": null, + "u_acc": 0.96, + "t_acc": 0.99, + "punct_acc": null, + "threshold_t": 0.7554530501365662, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7133611255411256, + "t": 0.6783471022750899, + "punct": null, + "u_acc": 0.2596, + "t_acc": 0.2192, + "punct_acc": null, + "threshold_t": 0.03646872565150261, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8252516017316016, + "t": 0.8401847619047618, + "punct": null, + "u_acc": 0.4764, + "t_acc": 0.5276, + "punct_acc": null, + "threshold_t": 0.5952385663986206, + "threshold_adj": 0.25 + } + }, + "xh": { + "opus100": { + "u": 0.9331258644536653, + "t": 0.9346473029045643, + "punct": null, + "u_acc": 0.7634854771784232, + "t_acc": 0.7676348547717843, + "punct_acc": null, + "threshold_t": 0.26028433442115784, + "threshold_adj": 0.25 + } + }, + "yi": { + "opus100": { + "u": 0.9308254963427377, + "t": 0.9308254963427377, + "punct": null, + "u_acc": 0.780564263322884, + "t_acc": 0.780564263322884, + "punct_acc": null, + "threshold_t": 0.24896521866321564, + "threshold_adj": 0.25 + } + }, + "yo": { + "opus100": { + "u": 0.8200031150116475, + "t": null, + "punct": null, + "u_acc": 0.45776450511945393, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9058333333333334, + "t": null, + "punct": null, + "u_acc": 0.625, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9251263492063492, + "t": 0.9313142857142857, + "punct": null, + "u_acc": 0.738, + "t_acc": 0.7812, + "punct_acc": null, + "threshold_t": 0.6028544306755066, + "threshold_adj": 0.25 + } + }, + "zh": { + "ersatz": { + "u": 0.9578666666666666, + "t": 0.9552666666666666, + "punct": null, + "u_acc": 0.898, + "t_acc": 0.886, + "punct_acc": null, + "threshold_t": 0.0670655369758606, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8984526204848137, + "t": 0.8576317936478901, + "punct": null, + "u_acc": 0.6800804828973843, + "t_acc": 0.5251509054325956, + "punct_acc": null, + "threshold_t": 0.012504776008427143, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9944, + "t": 0.996, + "punct": null, + "u_acc": 0.984, + "t_acc": 0.992, + "punct_acc": null, + "threshold_t": 0.9843558669090271, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6936778588308696, + "t": 0.6361195867859245, + "punct": null, + "u_acc": 0.1910167818361303, + "t_acc": 0.12882527147087858, + "punct_acc": null, + "threshold_t": 0.03832272067666054, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7071832412404969, + "t": 0.6504136342981359, + "punct": null, + "u_acc": 0.21520236920039487, + "t_acc": 0.1510365251727542, + "punct_acc": null, + "threshold_t": 0.037760261446237564, + "threshold_adj": 0.25 + } + }, + "zu": { + "opus100": { + "u": 0.9445258445258445, + "t": 0.9469474969474969, + "punct": null, + "u_acc": 0.8012820512820513, + "t_acc": 0.8162393162393162, + "punct_acc": null, + "threshold_t": 0.34569689631462097, + "threshold_adj": 0.25 + } + }, + "tr-de": {}, + "es-en": {}, + "vi-en": {}, + "en-de": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/sat-sm-3l.json b/wtpsplit/evaluation/evaluation_results/short/sat-sm-3l.json new file mode 100644 index 00000000..61fb6f76 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/sat-sm-3l.json @@ -0,0 +1,3346 @@ +{ + "af": { + "opus100": { + "u": 0.9035553289685522, + "t": 0.8966977925655611, + "punct": null, + "u_acc": 0.6652892561983471, + "t_acc": 0.6590909090909091, + "punct_acc": null, + "threshold_t": 0.5672795176506042, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9981132075471698, + "t": 1.0, + "punct": null, + "u_acc": 0.9905660377358491, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.5845157504081726, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7796336996336997, + "t": 0.7862271062271063, + "punct": null, + "u_acc": 0.37846153846153846, + "t_acc": 0.38461538461538464, + "punct_acc": null, + "threshold_t": 0.12673918902873993, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8658461538461538, + "t": 0.8662564102564102, + "punct": null, + "u_acc": 0.5815384615384616, + "t_acc": 0.5907692307692308, + "punct_acc": null, + "threshold_t": 0.26620328426361084, + "threshold_adj": 0.25 + } + }, + "am": { + "opus100": { + "u": 0.8614840313635493, + "t": 0.8414164594887485, + "punct": null, + "u_acc": 0.5642570281124498, + "t_acc": 0.4859437751004016, + "punct_acc": null, + "threshold_t": 0.10477375239133835, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6976438492063493, + "t": 0.6729414682539683, + "punct": null, + "u_acc": 0.203125, + "t_acc": 0.1796875, + "punct_acc": null, + "threshold_t": 0.12089020758867264, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6979972718253968, + "t": 0.6775669642857143, + "punct": null, + "u_acc": 0.2109375, + "t_acc": 0.1796875, + "punct_acc": null, + "threshold_t": 0.16365516185760498, + "threshold_adj": 0.25 + } + }, + "ar": { + "ersatz": { + "u": 0.9372467071935158, + "t": 0.9323834853090173, + "punct": null, + "u_acc": 0.7845744680851063, + "t_acc": 0.7553191489361702, + "punct_acc": null, + "threshold_t": 0.10988634824752808, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8478867852361829, + "t": 0.8492159112641041, + "punct": null, + "u_acc": 0.5481927710843374, + "t_acc": 0.5321285140562249, + "punct_acc": null, + "threshold_t": 0.10203948616981506, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9227077497665732, + "t": 0.9191176470588235, + "punct": null, + "u_acc": 0.7470588235294118, + "t_acc": 0.7470588235294118, + "punct_acc": null, + "threshold_t": 0.5453125238418579, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.695127619047619, + "t": 0.6784363747363746, + "punct": null, + "u_acc": 0.1752, + "t_acc": 0.1912, + "punct_acc": null, + "threshold_t": 0.06754347681999207, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7339273015873016, + "t": 0.7231788167388168, + "punct": null, + "u_acc": 0.264, + "t_acc": 0.2676, + "punct_acc": null, + "threshold_t": 0.10123667120933533, + "threshold_adj": 0.25 + } + }, + "az": { + "opus100": { + "u": 0.8788869764773379, + "t": 0.8766685790782176, + "punct": null, + "u_acc": 0.6004016064257028, + "t_acc": 0.6044176706827309, + "punct_acc": null, + "threshold_t": 0.297425240278244, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7980660625164171, + "t": 0.8033082854891366, + "punct": null, + "u_acc": 0.41548463356973997, + "t_acc": 0.42080378250591016, + "punct_acc": null, + "threshold_t": 0.11619193851947784, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8667632931817328, + "t": 0.8671066456527449, + "punct": null, + "u_acc": 0.5774231678486997, + "t_acc": 0.5791962174940898, + "punct_acc": null, + "threshold_t": 0.25435149669647217, + "threshold_adj": 0.25 + } + }, + "be": { + "opus100": { + "u": 0.9143665341221349, + "t": 0.9135712669317557, + "punct": null, + "u_acc": 0.7230142566191446, + "t_acc": 0.7087576374745418, + "punct_acc": null, + "threshold_t": 0.12165829539299011, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9357290375877736, + "t": 0.9132589838909542, + "punct": null, + "u_acc": 0.8029739776951673, + "t_acc": 0.7434944237918215, + "punct_acc": null, + "threshold_t": 0.7319779396057129, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7492588815755591, + "t": 0.7288477619431545, + "punct": null, + "u_acc": 0.3101881894873459, + "t_acc": 0.2738481505515899, + "punct_acc": null, + "threshold_t": 0.11066217720508575, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8564310950423865, + "t": 0.8556369292255082, + "punct": null, + "u_acc": 0.5522388059701493, + "t_acc": 0.5483452303698897, + "punct_acc": null, + "threshold_t": 0.24338552355766296, + "threshold_adj": 0.25 + } + }, + "bg": { + "opus100": { + "u": 0.9624677927283138, + "t": 0.9589941788338582, + "punct": null, + "u_acc": 0.8296593186372746, + "t_acc": 0.8136272545090181, + "punct_acc": null, + "threshold_t": 0.1719895899295807, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9945041816009559, + "t": 0.9954599761051375, + "punct": null, + "u_acc": 0.974910394265233, + "t_acc": 0.982078853046595, + "punct_acc": null, + "threshold_t": 0.4141254425048828, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.774421645021645, + "t": 0.7616613852813853, + "punct": null, + "u_acc": 0.3784, + "t_acc": 0.342, + "punct_acc": null, + "threshold_t": 0.16401679813861847, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8666708225108225, + "t": 0.8784933333333335, + "punct": null, + "u_acc": 0.5812, + "t_acc": 0.6216, + "punct_acc": null, + "threshold_t": 0.4890952706336975, + "threshold_adj": 0.25 + } + }, + "bn": { + "opus100": { + "u": 0.911095142282265, + "t": 0.9265018683529749, + "punct": null, + "u_acc": 0.670020120724346, + "t_acc": 0.7263581488933601, + "punct_acc": null, + "threshold_t": 0.3940618932247162, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9857142857142858, + "t": null, + "punct": null, + "u_acc": 0.9285714285714286, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6112835497835497, + "t": 0.5489682253392661, + "punct": null, + "u_acc": 0.11076923076923077, + "t_acc": 0.06615384615384616, + "punct_acc": null, + "threshold_t": 0.13117575645446777, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7321387501387501, + "t": 0.7282150627150628, + "punct": null, + "u_acc": 0.29307692307692307, + "t_acc": 0.2815384615384615, + "punct_acc": null, + "threshold_t": 0.22325047850608826, + "threshold_adj": 0.25 + } + }, + "ca": { + "opus100": { + "u": 0.9461605331787888, + "t": 0.9514440258862166, + "punct": null, + "u_acc": 0.7849898580121704, + "t_acc": 0.8073022312373225, + "punct_acc": null, + "threshold_t": 0.43222224712371826, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9959595959595959, + "t": 0.9949494949494949, + "punct": null, + "u_acc": 0.9826839826839827, + "t_acc": 0.9848484848484849, + "punct_acc": null, + "threshold_t": 0.9294189214706421, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7499596825396826, + "t": 0.7375057231657232, + "punct": null, + "u_acc": 0.3136, + "t_acc": 0.2836, + "punct_acc": null, + "threshold_t": 0.10412970930337906, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8637266666666666, + "t": 0.8555076190476191, + "punct": null, + "u_acc": 0.588, + "t_acc": 0.5596, + "punct_acc": null, + "threshold_t": 0.16232265532016754, + "threshold_adj": 0.25 + } + }, + "ceb": { + "ud": { + "u": 1.0, + "t": null, + "punct": null, + "u_acc": 1.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6785714285714286, + "t": 0.6785714285714286, + "punct": null, + "u_acc": 0.21428571428571427, + "t_acc": 0.21428571428571427, + "punct_acc": null, + "threshold_t": 0.2463909387588501, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.780952380952381, + "t": 0.7785714285714285, + "punct": null, + "u_acc": 0.5, + "t_acc": 0.5, + "punct_acc": null, + "threshold_t": 0.30931833386421204, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9065301587301586, + "t": 0.9144977777777779, + "punct": null, + "u_acc": 0.6888, + "t_acc": 0.7176, + "punct_acc": null, + "threshold_t": 0.3400956094264984, + "threshold_adj": 0.25 + } + }, + "cs": { + "ersatz": { + "u": 0.9832561728395063, + "t": 0.9904320987654321, + "punct": null, + "u_acc": 0.9259259259259259, + "t_acc": 0.9629629629629629, + "punct_acc": null, + "threshold_t": 0.8599381446838379, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9338269454123113, + "t": 0.9349787069299264, + "punct": null, + "u_acc": 0.7479674796747967, + "t_acc": 0.7520325203252033, + "punct_acc": null, + "threshold_t": 0.283390611410141, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9635928346101849, + "t": 0.965209553853087, + "punct": null, + "u_acc": 0.875788643533123, + "t_acc": 0.8840694006309149, + "punct_acc": null, + "threshold_t": 0.3019171357154846, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7553373448773449, + "t": 0.7389278787878788, + "punct": null, + "u_acc": 0.3372, + "t_acc": 0.3008, + "punct_acc": null, + "threshold_t": 0.11701148748397827, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8550540836940836, + "t": 0.8429299567099566, + "punct": null, + "u_acc": 0.55, + "t_acc": 0.5132, + "punct_acc": null, + "threshold_t": 0.16647979617118835, + "threshold_adj": 0.25 + } + }, + "cy": { + "opus100": { + "u": 0.879302696333264, + "t": 0.8770049213280654, + "punct": null, + "u_acc": 0.5960698689956332, + "t_acc": 0.5633187772925764, + "punct_acc": null, + "threshold_t": 0.0997820645570755, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9896358543417368, + "t": 0.9915966386554622, + "punct": null, + "u_acc": 0.9537815126050421, + "t_acc": 0.9663865546218487, + "punct_acc": null, + "threshold_t": 0.6777300238609314, + "threshold_adj": 0.25 + } + }, + "da": { + "opus100": { + "u": 0.9560675883256529, + "t": 0.9611655145929341, + "punct": null, + "u_acc": 0.8185483870967742, + "t_acc": 0.8387096774193549, + "punct_acc": null, + "threshold_t": 0.43330398201942444, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9855791962174941, + "t": 0.9898345153664302, + "punct": null, + "u_acc": 0.9432624113475178, + "t_acc": 0.9645390070921985, + "punct_acc": null, + "threshold_t": 0.5075726509094238, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7740462515262516, + "t": 0.7547841658341659, + "punct": null, + "u_acc": 0.3704, + "t_acc": 0.3224, + "punct_acc": null, + "threshold_t": 0.06557260453701019, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8690501587301587, + "t": 0.8662835497835498, + "punct": null, + "u_acc": 0.5852, + "t_acc": 0.576, + "punct_acc": null, + "threshold_t": 0.21662300825119019, + "threshold_adj": 0.25 + } + }, + "de": { + "ersatz": { + "u": 0.9849287169042771, + "t": 0.9909029192124914, + "punct": null, + "u_acc": 0.9368635437881874, + "t_acc": 0.9653767820773931, + "punct_acc": null, + "threshold_t": 0.6139549016952515, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9187412095639944, + "t": 0.8905615832831022, + "punct": null, + "u_acc": 0.70042194092827, + "t_acc": 0.5843881856540084, + "punct_acc": null, + "threshold_t": 0.04052917659282684, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9826502732240437, + "t": 0.9703551912568307, + "punct": null, + "u_acc": 0.9385245901639344, + "t_acc": 0.9098360655737705, + "punct_acc": null, + "threshold_t": 0.8562579154968262, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7970587301587302, + "t": 0.790396792556103, + "punct": null, + "u_acc": 0.4308, + "t_acc": 0.4064, + "punct_acc": null, + "threshold_t": 0.15185381472110748, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8687726984126984, + "t": 0.8709129670329671, + "punct": null, + "u_acc": 0.5928, + "t_acc": 0.6044, + "punct_acc": null, + "threshold_t": 0.30734559893608093, + "threshold_adj": 0.25 + } + }, + "el": { + "opus100": { + "u": 0.9591030789825971, + "t": 0.9329638901928059, + "punct": null, + "u_acc": 0.8253012048192772, + "t_acc": 0.7329317269076305, + "punct_acc": null, + "threshold_t": 0.02661311812698841, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9912280701754386, + "t": 0.9906432748538012, + "punct": null, + "u_acc": 0.956140350877193, + "t_acc": 0.9649122807017544, + "punct_acc": null, + "threshold_t": 0.5075834393501282, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7668191311612365, + "t": 0.7535364131424132, + "punct": null, + "u_acc": 0.3608, + "t_acc": 0.3232, + "punct_acc": null, + "threshold_t": 0.0807659775018692, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8613504761904762, + "t": 0.8576441358641358, + "punct": null, + "u_acc": 0.5732, + "t_acc": 0.56, + "punct_acc": null, + "threshold_t": 0.19756051898002625, + "threshold_adj": 0.25 + } + }, + "en": { + "ersatz": { + "u": 0.9823146911931958, + "t": 0.9881446867428176, + "punct": null, + "u_acc": 0.9241952232606438, + "t_acc": 0.9574247144340602, + "punct_acc": null, + "threshold_t": 0.6076793670654297, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9571236559139785, + "t": 0.9269393241167435, + "punct": null, + "u_acc": 0.8225806451612904, + "t_acc": 0.7036290322580645, + "punct_acc": null, + "threshold_t": 0.01741454191505909, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9684914841849148, + "t": 0.9701946472019466, + "punct": null, + "u_acc": 0.8978102189781022, + "t_acc": 0.9051094890510949, + "punct_acc": null, + "threshold_t": 0.23031450808048248, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7411828571428573, + "t": 0.7135506981906983, + "punct": null, + "u_acc": 0.3072, + "t_acc": 0.2592, + "punct_acc": null, + "threshold_t": 0.08309231698513031, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8546539682539682, + "t": 0.863072380952381, + "punct": null, + "u_acc": 0.5516, + "t_acc": 0.5944, + "punct_acc": null, + "threshold_t": 0.5396727919578552, + "threshold_adj": 0.25 + } + }, + "eo": { + "opus100": { + "u": 0.9596102150537635, + "t": 0.9499615975422426, + "punct": null, + "u_acc": 0.8266129032258065, + "t_acc": 0.782258064516129, + "punct_acc": null, + "threshold_t": 0.09051860123872757, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7298336027659336, + "t": 0.7146764054658792, + "punct": null, + "u_acc": 0.26879699248120303, + "t_acc": 0.2462406015037594, + "punct_acc": null, + "threshold_t": 0.1003638356924057, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8278727572900505, + "t": 0.8339191232048375, + "punct": null, + "u_acc": 0.4780701754385965, + "t_acc": 0.5, + "punct_acc": null, + "threshold_t": 0.38197973370552063, + "threshold_adj": 0.25 + } + }, + "es": { + "ersatz": { + "u": 0.9957354221061793, + "t": null, + "punct": null, + "u_acc": 0.9804177545691906, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9589068825910931, + "t": 0.9507518796992481, + "punct": null, + "u_acc": 0.8299595141700404, + "t_acc": 0.8016194331983806, + "punct_acc": null, + "threshold_t": 0.12836161255836487, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9928682170542635, + "t": 0.9927131782945736, + "punct": null, + "u_acc": 0.9674418604651163, + "t_acc": 0.9697674418604652, + "punct_acc": null, + "threshold_t": 0.46723291277885437, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7481161904761905, + "t": 0.7273521028037682, + "punct": null, + "u_acc": 0.306, + "t_acc": 0.268, + "punct_acc": null, + "threshold_t": 0.06458457559347153, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8571622847522847, + "t": 0.8511795780195782, + "punct": null, + "u_acc": 0.5732, + "t_acc": 0.5512, + "punct_acc": null, + "threshold_t": 0.17071503400802612, + "threshold_adj": 0.25 + } + }, + "et": { + "ersatz": { + "u": 0.9904761904761903, + "t": 0.9927248677248678, + "punct": null, + "u_acc": 0.9563492063492064, + "t_acc": 0.9742063492063492, + "punct_acc": null, + "threshold_t": 0.8175488710403442, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.945879120879121, + "t": 0.9393435511856564, + "punct": null, + "u_acc": 0.7975708502024291, + "t_acc": 0.7692307692307693, + "punct_acc": null, + "threshold_t": 0.15120238065719604, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9801824212271975, + "t": 0.9798507462686568, + "punct": null, + "u_acc": 0.9328358208955224, + "t_acc": 0.9328358208955224, + "punct_acc": null, + "threshold_t": 0.27736952900886536, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7866196825396826, + "t": 0.7833787301587302, + "punct": null, + "u_acc": 0.3956, + "t_acc": 0.3792, + "punct_acc": null, + "threshold_t": 0.1746111661195755, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8772687301587303, + "t": 0.8654547763347762, + "punct": null, + "u_acc": 0.6196, + "t_acc": 0.5776, + "punct_acc": null, + "threshold_t": 0.15386232733726501, + "threshold_adj": 0.25 + } + }, + "eu": { + "opus100": { + "u": 0.9416811258916521, + "t": 0.9423558897243107, + "punct": null, + "u_acc": 0.7753036437246964, + "t_acc": 0.7773279352226721, + "punct_acc": null, + "threshold_t": 0.2336738556623459, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.989925925925926, + "t": 0.9965925925925927, + "punct": null, + "u_acc": 0.9511111111111111, + "t_acc": 0.9888888888888889, + "punct_acc": null, + "threshold_t": 0.8025250434875488, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7091305535861988, + "t": 0.6855007895330476, + "punct": null, + "u_acc": 0.23655913978494625, + "t_acc": 0.2049731182795699, + "punct_acc": null, + "threshold_t": 0.11044596880674362, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8220391130673388, + "t": 0.8374722648916197, + "punct": null, + "u_acc": 0.4825268817204301, + "t_acc": 0.5235215053763441, + "punct_acc": null, + "threshold_t": 0.5261484980583191, + "threshold_adj": 0.25 + } + }, + "fa": { + "opus100": { + "u": 0.8076950604505715, + "t": 0.7731013976003955, + "punct": null, + "u_acc": 0.4649298597194389, + "t_acc": 0.35070140280561124, + "punct_acc": null, + "threshold_t": 0.04136597365140915, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9910256410256411, + "t": 0.9994505494505495, + "punct": null, + "u_acc": 0.9587912087912088, + "t_acc": 0.9972527472527473, + "punct_acc": null, + "threshold_t": 0.8905432224273682, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7624981529581529, + "t": 0.7396880503179605, + "punct": null, + "u_acc": 0.348, + "t_acc": 0.2996, + "punct_acc": null, + "threshold_t": 0.08630064874887466, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7993924675324675, + "t": 0.8035864357864357, + "punct": null, + "u_acc": 0.4172, + "t_acc": 0.4376, + "punct_acc": null, + "threshold_t": 0.4264723062515259, + "threshold_adj": 0.25 + } + }, + "fi": { + "ersatz": { + "u": 0.9887107548430194, + "t": 0.9939211756847028, + "punct": null, + "u_acc": 0.9478957915831663, + "t_acc": 0.9779559118236473, + "punct_acc": null, + "threshold_t": 0.6612692475318909, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9717639168343394, + "t": 0.9605378301555365, + "punct": null, + "u_acc": 0.8752515090543259, + "t_acc": 0.8309859154929577, + "punct_acc": null, + "threshold_t": 0.04558681696653366, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9825724104074618, + "t": 0.9829160530191456, + "punct": null, + "u_acc": 0.9278350515463918, + "t_acc": 0.9329896907216495, + "punct_acc": null, + "threshold_t": 0.36347663402557373, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7668222222222223, + "t": 0.7490191630591632, + "punct": null, + "u_acc": 0.3636, + "t_acc": 0.3232, + "punct_acc": null, + "threshold_t": 0.09684503078460693, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8639873593073593, + "t": 0.8586822222222221, + "punct": null, + "u_acc": 0.5824, + "t_acc": 0.5648, + "punct_acc": null, + "threshold_t": 0.17985899746418, + "threshold_adj": 0.25 + } + }, + "fr": { + "ersatz": { + "u": 0.9901771336553947, + "t": 0.9938808373590983, + "punct": null, + "u_acc": 0.9541062801932367, + "t_acc": 0.9758454106280193, + "punct_acc": null, + "threshold_t": 0.8531123995780945, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9422582826233942, + "t": null, + "punct": null, + "u_acc": 0.7667342799188641, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9891025641025641, + "t": 0.9916666666666667, + "punct": null, + "u_acc": 0.9519230769230769, + "t_acc": 0.9711538461538461, + "punct_acc": null, + "threshold_t": 0.945523202419281, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7627819624819625, + "t": 0.7423641247641248, + "punct": null, + "u_acc": 0.348, + "t_acc": 0.3048, + "punct_acc": null, + "threshold_t": 0.06681599467992783, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8586044444444444, + "t": 0.8621907936507937, + "punct": null, + "u_acc": 0.578, + "t_acc": 0.5896, + "punct_acc": null, + "threshold_t": 0.3198995888233185, + "threshold_adj": 0.25 + } + }, + "fy": { + "opus100": { + "u": 0.916230979321108, + "t": 0.9105150214592276, + "punct": null, + "u_acc": 0.7124463519313304, + "t_acc": 0.6802575107296137, + "punct_acc": null, + "threshold_t": 0.16823291778564453, + "threshold_adj": 0.25 + } + }, + "ga": { + "opus100": { + "u": 0.9115015360983102, + "t": 0.9172843061955965, + "punct": null, + "u_acc": 0.7217741935483871, + "t_acc": 0.7298387096774194, + "punct_acc": null, + "threshold_t": 0.07625275105237961, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9582706766917293, + "t": 0.9760233918128655, + "punct": null, + "u_acc": 0.8421052631578947, + "t_acc": 0.9035087719298246, + "punct_acc": null, + "threshold_t": 0.5855487585067749, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.5180555555555556, + "t": 0.5116402116402117, + "punct": null, + "u_acc": 0.08333333333333333, + "t_acc": 0.08333333333333333, + "punct_acc": null, + "threshold_t": 0.06769172847270966, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6753968253968253, + "t": 0.6444444444444445, + "punct": null, + "u_acc": 0.16666666666666666, + "t_acc": 0.16666666666666666, + "punct_acc": null, + "threshold_t": 0.1617395132780075, + "threshold_adj": 0.25 + } + }, + "gd": { + "opus100": { + "u": 0.908027898027898, + "t": 0.9107163207163207, + "punct": null, + "u_acc": 0.6962962962962963, + "t_acc": 0.6814814814814815, + "punct_acc": null, + "threshold_t": 0.11188694089651108, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.8735294117647058, + "t": 0.8644607843137254, + "punct": null, + "u_acc": 0.6029411764705882, + "t_acc": 0.5882352941176471, + "punct_acc": null, + "threshold_t": 0.18281881511211395, + "threshold_adj": 0.25 + } + }, + "gl": { + "opus100": { + "u": 0.9454717101894521, + "t": 0.9447996671786995, + "punct": null, + "u_acc": 0.7762096774193549, + "t_acc": 0.7741935483870968, + "punct_acc": null, + "threshold_t": 0.22017070651054382, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9803809523809524, + "t": 0.9893333333333334, + "punct": null, + "u_acc": 0.92, + "t_acc": 0.96, + "punct_acc": null, + "threshold_t": 0.5212786197662354, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7370850793650794, + "t": 0.7149710503531557, + "punct": null, + "u_acc": 0.2896, + "t_acc": 0.2404, + "punct_acc": null, + "threshold_t": 0.040345605462789536, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.845439365079365, + "t": 0.8489009523809523, + "punct": null, + "u_acc": 0.5384, + "t_acc": 0.5556, + "punct_acc": null, + "threshold_t": 0.7189522385597229, + "threshold_adj": 0.25 + } + }, + "gu": { + "ersatz": { + "u": 0.8803524559430072, + "t": 0.8682602174728158, + "punct": null, + "u_acc": 0.6181102362204725, + "t_acc": 0.5984251968503937, + "punct_acc": null, + "threshold_t": 0.4291118085384369, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8936902297150743, + "t": 0.8970028591146603, + "punct": null, + "u_acc": 0.6521739130434783, + "t_acc": 0.6749482401656315, + "punct_acc": null, + "threshold_t": 0.29316797852516174, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.5761369799368669, + "t": 0.5602511884330935, + "punct": null, + "u_acc": 0.0980788675429727, + "t_acc": 0.09453993933265925, + "punct_acc": null, + "threshold_t": 0.1920454055070877, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6656374156121375, + "t": 0.6422706917045963, + "punct": null, + "u_acc": 0.2057633973710819, + "t_acc": 0.1789686552072801, + "punct_acc": null, + "threshold_t": 0.09814157336950302, + "threshold_adj": 0.25 + } + }, + "ha": { + "opus100": { + "u": 0.9335428571428572, + "t": 0.926742857142857, + "punct": null, + "u_acc": 0.73, + "t_acc": 0.724, + "punct_acc": null, + "threshold_t": 0.40221336483955383, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6666666666666666, + "t": 0.6388888888888888, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.3333333333333333, + "punct_acc": null, + "threshold_t": 0.0806799978017807, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6888888888888888, + "t": 0.8888888888888888, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": 0.6666666666666666, + "punct_acc": null, + "threshold_t": 0.6340370178222656, + "threshold_adj": 0.25 + } + }, + "he": { + "opus100": { + "u": 0.935108311861819, + "t": 0.9393612622069536, + "punct": null, + "u_acc": 0.7535070140280561, + "t_acc": 0.7755511022044088, + "punct_acc": null, + "threshold_t": 0.35257992148399353, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9775510204081633, + "t": 0.9755102040816327, + "punct": null, + "u_acc": 0.9081632653061225, + "t_acc": 0.8979591836734694, + "punct_acc": null, + "threshold_t": 0.24024203419685364, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7178511111111111, + "t": 0.6642434786128903, + "punct": null, + "u_acc": 0.2692, + "t_acc": 0.1796, + "punct_acc": null, + "threshold_t": 0.05118756741285324, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7656580952380952, + "t": 0.7336789388389389, + "punct": null, + "u_acc": 0.3736, + "t_acc": 0.2888, + "punct_acc": null, + "threshold_t": 0.0852431058883667, + "threshold_adj": 0.25 + } + }, + "hi": { + "ersatz": { + "u": 0.975026455026455, + "t": 0.964126984126984, + "punct": null, + "u_acc": 0.8952380952380953, + "t_acc": 0.8841269841269841, + "punct_acc": null, + "threshold_t": 0.9306296110153198, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8322917106972835, + "t": 0.8345312839894883, + "punct": null, + "u_acc": 0.5222672064777328, + "t_acc": 0.5182186234817814, + "punct_acc": null, + "threshold_t": 0.2702282965183258, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9971496437054631, + "t": 0.9990498812351545, + "punct": null, + "u_acc": 0.9857482185273159, + "t_acc": 0.995249406175772, + "punct_acc": null, + "threshold_t": 0.5798015594482422, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6910597498797498, + "t": 0.6672949427181005, + "punct": null, + "u_acc": 0.2344, + "t_acc": 0.1996, + "punct_acc": null, + "threshold_t": 0.10990544408559799, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7658595256205782, + "t": 0.768520757020757, + "punct": null, + "u_acc": 0.352, + "t_acc": 0.3564, + "punct_acc": null, + "threshold_t": 0.30355513095855713, + "threshold_adj": 0.25 + } + }, + "hu": { + "opus100": { + "u": 0.964516129032258, + "t": 0.964516129032258, + "punct": null, + "u_acc": 0.8346774193548387, + "t_acc": 0.8346774193548387, + "punct_acc": null, + "threshold_t": 0.24754725396633148, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9821428571428571, + "t": 0.9845238095238095, + "punct": null, + "u_acc": 0.9107142857142857, + "t_acc": 0.9285714285714286, + "punct_acc": null, + "threshold_t": 0.5812307596206665, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7455524098124099, + "t": 0.6930340925201539, + "punct": null, + "u_acc": 0.3044, + "t_acc": 0.2096, + "punct_acc": null, + "threshold_t": 0.014600473456084728, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.861027619047619, + "t": 0.8614771428571428, + "punct": null, + "u_acc": 0.5764, + "t_acc": 0.5776, + "punct_acc": null, + "threshold_t": 0.2541647255420685, + "threshold_adj": 0.25 + } + }, + "hy": { + "opus100": { + "u": 0.9262311530534766, + "t": null, + "punct": null, + "u_acc": 0.7175398633257403, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9900900900900901, + "t": 0.9900900900900901, + "punct": null, + "u_acc": 0.9594594594594594, + "t_acc": 0.9594594594594594, + "punct_acc": null, + "threshold_t": 0.5800442695617676, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7577726655719759, + "t": 0.7442942818292818, + "punct": null, + "u_acc": 0.3488, + "t_acc": 0.3164, + "punct_acc": null, + "threshold_t": 0.12584948539733887, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.830899456099456, + "t": 0.8364789841269842, + "punct": null, + "u_acc": 0.4892, + "t_acc": 0.5028, + "punct_acc": null, + "threshold_t": 0.31337404251098633, + "threshold_adj": 0.25 + } + }, + "id": { + "opus100": { + "u": 0.945852849336456, + "t": 0.9526834504293521, + "punct": null, + "u_acc": 0.7848360655737705, + "t_acc": 0.8073770491803278, + "punct_acc": null, + "threshold_t": 0.3757714629173279, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9866666666666667, + "t": null, + "punct": null, + "u_acc": 0.936, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7372041847041847, + "t": 0.7275404617604617, + "punct": null, + "u_acc": 0.2924, + "t_acc": 0.2752, + "punct_acc": null, + "threshold_t": 0.13857710361480713, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8431479365079365, + "t": 0.8488968253968254, + "punct": null, + "u_acc": 0.5152, + "t_acc": 0.5312, + "punct_acc": null, + "threshold_t": 0.3183785080909729, + "threshold_adj": 0.25 + } + }, + "ig": { + "opus100": { + "u": 0.9403721682847898, + "t": 0.9473300970873787, + "punct": null, + "u_acc": 0.7815533980582524, + "t_acc": 0.8228155339805825, + "punct_acc": null, + "threshold_t": 0.3897131085395813, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6314102564102563, + "t": 0.6128205128205128, + "punct": null, + "u_acc": 0.038461538461538464, + "t_acc": 0.038461538461538464, + "punct_acc": null, + "threshold_t": 0.13975082337856293, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8053113553113553, + "t": 0.7961538461538461, + "punct": null, + "u_acc": 0.46153846153846156, + "t_acc": 0.4230769230769231, + "punct_acc": null, + "threshold_t": 0.7732467651367188, + "threshold_adj": 0.25 + } + }, + "is": { + "opus100": { + "u": 0.966130114017438, + "t": 0.9670690811535881, + "punct": null, + "u_acc": 0.8551307847082495, + "t_acc": 0.8611670020120724, + "punct_acc": null, + "threshold_t": 0.29068222641944885, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9676432954167632, + "t": 0.9641337457473999, + "punct": null, + "u_acc": 0.8681148176881304, + "t_acc": 0.8533747090768037, + "punct_acc": null, + "threshold_t": 0.20999684929847717, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7526838725312007, + "t": 0.7342628392246713, + "punct": null, + "u_acc": 0.3053435114503817, + "t_acc": 0.2748091603053435, + "punct_acc": null, + "threshold_t": 0.04869750142097473, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8642069550466497, + "t": 0.8626681206833878, + "punct": null, + "u_acc": 0.5979643765903307, + "t_acc": 0.5750636132315522, + "punct_acc": null, + "threshold_t": 0.15659792721271515, + "threshold_adj": 0.25 + } + }, + "it": { + "opus100": { + "u": 0.932783189033189, + "t": 0.9454493087557604, + "punct": null, + "u_acc": 0.7258064516129032, + "t_acc": 0.7842741935483871, + "punct_acc": null, + "threshold_t": 0.5928462743759155, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.995, + "t": 0.9933333333333334, + "punct": null, + "u_acc": 0.975, + "t_acc": 0.9666666666666667, + "punct_acc": null, + "threshold_t": 0.22449921071529388, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7389206637806638, + "t": 0.6934805705405706, + "punct": null, + "u_acc": 0.2904, + "t_acc": 0.21, + "punct_acc": null, + "threshold_t": 0.050713226199150085, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8510568253968255, + "t": 0.8608304761904761, + "punct": null, + "u_acc": 0.5404, + "t_acc": 0.5776, + "punct_acc": null, + "threshold_t": 0.4877711236476898, + "threshold_adj": 0.25 + } + }, + "ja": { + "ersatz": { + "u": 0.9148009950248756, + "t": 0.9310945273631842, + "punct": null, + "u_acc": 0.7238805970149254, + "t_acc": 0.7985074626865671, + "punct_acc": null, + "threshold_t": 0.8466260433197021, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8662841843564734, + "t": 0.8313826735513483, + "punct": null, + "u_acc": 0.5823293172690763, + "t_acc": 0.44779116465863456, + "punct_acc": null, + "threshold_t": 0.0176748875528574, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9845588235294118, + "t": 0.9889705882352942, + "punct": null, + "u_acc": 0.9338235294117647, + "t_acc": 0.9705882352941176, + "punct_acc": null, + "threshold_t": 0.9835341572761536, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8826108513708514, + "t": 0.9094857142857141, + "punct": null, + "u_acc": 0.616, + "t_acc": 0.712, + "punct_acc": null, + "threshold_t": 0.6386362314224243, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8818362481962482, + "t": 0.9105771428571429, + "punct": null, + "u_acc": 0.6152, + "t_acc": 0.7152, + "punct_acc": null, + "threshold_t": 0.676395058631897, + "threshold_adj": 0.25 + } + }, + "jv": { + "ud": { + "u": 0.9824, + "t": null, + "punct": null, + "u_acc": 0.912, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.8877346031746031, + "t": 0.9037307936507938, + "punct": null, + "u_acc": 0.6172, + "t_acc": 0.6868, + "punct_acc": null, + "threshold_t": 0.4282367527484894, + "threshold_adj": 0.25 + } + }, + "ka": { + "opus100": { + "u": 0.9370095238095238, + "t": 0.9486666666666668, + "punct": null, + "u_acc": 0.764, + "t_acc": 0.802, + "punct_acc": null, + "threshold_t": 0.39142605662345886, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6984101587301588, + "t": 0.6521189461518873, + "punct": null, + "u_acc": 0.238, + "t_acc": 0.1636, + "punct_acc": null, + "threshold_t": 0.08802679926156998, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7331545743145743, + "t": 0.7349831457431457, + "punct": null, + "u_acc": 0.2924, + "t_acc": 0.296, + "punct_acc": null, + "threshold_t": 0.267622709274292, + "threshold_adj": 0.25 + } + }, + "kk": { + "ersatz": { + "u": 0.9865523809523808, + "t": 0.9904, + "punct": null, + "u_acc": 0.948, + "t_acc": 0.968, + "punct_acc": null, + "threshold_t": 0.5664507746696472, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9354879968516332, + "t": 0.9357634789452971, + "punct": null, + "u_acc": 0.7603305785123967, + "t_acc": 0.7603305785123967, + "punct_acc": null, + "threshold_t": 0.2567903995513916, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9927480916030536, + "t": 0.9045801526717557, + "punct": null, + "u_acc": 0.9694656488549618, + "t_acc": 0.7137404580152672, + "punct_acc": null, + "threshold_t": 0.9913631677627563, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7942096043738754, + "t": 0.7829960897722705, + "punct": null, + "u_acc": 0.3928815879534565, + "t_acc": 0.37166324435318276, + "punct_acc": null, + "threshold_t": 0.022956227883696556, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8632046978042871, + "t": 0.8591283421878905, + "punct": null, + "u_acc": 0.5564681724845996, + "t_acc": 0.5359342915811088, + "punct_acc": null, + "threshold_t": 0.08708979189395905, + "threshold_adj": 0.25 + } + }, + "km": { + "ersatz": { + "u": 0.791251620319417, + "t": 0.9137288135593221, + "punct": null, + "u_acc": 0.3711864406779661, + "t_acc": 0.7067796610169491, + "punct_acc": null, + "threshold_t": 0.878945529460907, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8971428571428571, + "t": 0.8991163475699557, + "punct": null, + "u_acc": 0.6659793814432989, + "t_acc": 0.6804123711340206, + "punct_acc": null, + "threshold_t": 0.4311942458152771, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7841926244181883, + "t": 0.7822711540756654, + "punct": null, + "u_acc": 0.41353383458646614, + "t_acc": 0.40601503759398494, + "punct_acc": null, + "threshold_t": 0.24746207892894745, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8109738632295023, + "t": 0.8305048335123523, + "punct": null, + "u_acc": 0.46616541353383456, + "t_acc": 0.518796992481203, + "punct_acc": null, + "threshold_t": 0.34483081102371216, + "threshold_adj": 0.25 + } + }, + "kn": { + "opus100": { + "u": 0.901622418879056, + "t": 0.896165191740413, + "punct": null, + "u_acc": 0.6991150442477876, + "t_acc": 0.672566371681416, + "punct_acc": null, + "threshold_t": 0.19623525440692902, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6526973026973028, + "t": 0.5674199272285397, + "punct": null, + "u_acc": 0.14685314685314685, + "t_acc": 0.055944055944055944, + "punct_acc": null, + "threshold_t": 0.08250460028648376, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6826701076701076, + "t": 0.6695637695637696, + "punct": null, + "u_acc": 0.2097902097902098, + "t_acc": 0.16083916083916083, + "punct_acc": null, + "threshold_t": 0.15321309864521027, + "threshold_adj": 0.25 + } + }, + "ko": { + "opus100": { + "u": 0.8753325621746676, + "t": 0.8596475162264636, + "punct": null, + "u_acc": 0.5931174089068826, + "t_acc": 0.5222672064777328, + "punct_acc": null, + "threshold_t": 0.052615612745285034, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9965034965034965, + "t": 0.9975524475524475, + "punct": null, + "u_acc": 0.9825174825174825, + "t_acc": 0.9912587412587412, + "punct_acc": null, + "threshold_t": 0.9509378671646118, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8304629148629148, + "t": 0.8339939682539683, + "punct": null, + "u_acc": 0.45, + "t_acc": 0.4664, + "punct_acc": null, + "threshold_t": 0.7005537152290344, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8341737085137085, + "t": 0.8353479365079364, + "punct": null, + "u_acc": 0.458, + "t_acc": 0.4748, + "punct_acc": null, + "threshold_t": 0.7961071133613586, + "threshold_adj": 0.25 + } + }, + "ku": { + "opus100": { + "u": 0.9192159192159192, + "t": 0.9207306207306206, + "punct": null, + "u_acc": 0.735966735966736, + "t_acc": 0.7463617463617463, + "punct_acc": null, + "threshold_t": 0.3321411609649658, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6593942857142857, + "t": 0.48966983738337805, + "punct": null, + "u_acc": 0.0328, + "t_acc": 0.0516, + "punct_acc": null, + "threshold_t": 0.011615741066634655, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6992438095238096, + "t": 0.5400501496560258, + "punct": null, + "u_acc": 0.1468, + "t_acc": 0.094, + "punct_acc": null, + "threshold_t": 0.01179587747901678, + "threshold_adj": 0.25 + } + }, + "ky": { + "opus100": { + "u": 0.953941798941799, + "t": 0.9535563114134542, + "punct": null, + "u_acc": 0.8428571428571429, + "t_acc": 0.8357142857142857, + "punct_acc": null, + "threshold_t": 0.15271322429180145, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7778244631185809, + "t": 0.7550887021475257, + "punct": null, + "u_acc": 0.3137254901960784, + "t_acc": 0.27450980392156865, + "punct_acc": null, + "threshold_t": 0.09765639156103134, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.83828197945845, + "t": 0.8374572051042639, + "punct": null, + "u_acc": 0.45098039215686275, + "t_acc": 0.46078431372549017, + "punct_acc": null, + "threshold_t": 0.21150235831737518, + "threshold_adj": 0.25 + } + }, + "la": { + "ud": { + "u": 0.9720634920634921, + "t": 0.9732063492063492, + "punct": null, + "u_acc": 0.8952380952380953, + "t_acc": 0.9047619047619048, + "punct_acc": null, + "threshold_t": 0.39277154207229614, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6666666666666666, + "t": 0.5555555555555555, + "punct": null, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": null, + "threshold_t": 0.11042903363704681, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8888888888888888, + "t": 0.8888888888888888, + "punct": null, + "u_acc": 0.6666666666666666, + "t_acc": 0.6666666666666666, + "punct_acc": null, + "threshold_t": 0.10955534130334854, + "threshold_adj": 0.25 + } + }, + "lt": { + "ersatz": { + "u": 0.9837333333333333, + "t": 0.9837333333333333, + "punct": null, + "u_acc": 0.924, + "t_acc": 0.924, + "punct_acc": null, + "threshold_t": 0.2452269345521927, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9295986943164363, + "t": 0.9260464669738864, + "punct": null, + "u_acc": 0.7620967741935484, + "t_acc": 0.7399193548387096, + "punct_acc": null, + "threshold_t": 0.1428060680627823, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9844054580896686, + "t": 0.9851851851851852, + "punct": null, + "u_acc": 0.9415204678362573, + "t_acc": 0.9532163742690059, + "punct_acc": null, + "threshold_t": 0.4787941873073578, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7420739682539683, + "t": 0.7101221423021423, + "punct": null, + "u_acc": 0.2992, + "t_acc": 0.2404, + "punct_acc": null, + "threshold_t": 0.048358459025621414, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8584180952380953, + "t": 0.847956507936508, + "punct": null, + "u_acc": 0.5688, + "t_acc": 0.528, + "punct_acc": null, + "threshold_t": 0.13472485542297363, + "threshold_adj": 0.25 + } + }, + "lv": { + "ersatz": { + "u": 0.9917989417989418, + "t": 0.9947089947089948, + "punct": null, + "u_acc": 0.9603174603174603, + "t_acc": 0.9801587301587301, + "punct_acc": null, + "threshold_t": 0.7658308148384094, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.939244460745475, + "t": 0.9243407707910751, + "punct": null, + "u_acc": 0.7910750507099391, + "t_acc": 0.7200811359026369, + "punct_acc": null, + "threshold_t": 0.042807742953300476, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9896627971254837, + "t": 0.9936428966279713, + "punct": null, + "u_acc": 0.9552238805970149, + "t_acc": 0.978441127694859, + "punct_acc": null, + "threshold_t": 0.5793221592903137, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7639006349206349, + "t": 0.7255520557220557, + "punct": null, + "u_acc": 0.3524, + "t_acc": 0.2692, + "punct_acc": null, + "threshold_t": 0.06567632406949997, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8625666666666666, + "t": 0.8608355555555554, + "punct": null, + "u_acc": 0.5776, + "t_acc": 0.5676, + "punct_acc": null, + "threshold_t": 0.21863380074501038, + "threshold_adj": 0.25 + } + }, + "mg": { + "opus100": { + "u": 0.951985733564681, + "t": 0.9561499903605166, + "punct": null, + "u_acc": 0.8117408906882592, + "t_acc": 0.840080971659919, + "punct_acc": null, + "threshold_t": 0.5223585963249207, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6812169312169309, + "t": 0.6650526428304204, + "punct": null, + "u_acc": 0.16666666666666666, + "t_acc": 0.2037037037037037, + "punct_acc": null, + "threshold_t": 0.051114484667778015, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8290123456790122, + "t": 0.8191358024691359, + "punct": null, + "u_acc": 0.48148148148148145, + "t_acc": 0.42592592592592593, + "punct_acc": null, + "threshold_t": 0.14101095497608185, + "threshold_adj": 0.25 + } + }, + "mk": { + "opus100": { + "u": 0.9507142857142857, + "t": 0.9615619047619047, + "punct": null, + "u_acc": 0.788, + "t_acc": 0.834, + "punct_acc": null, + "threshold_t": 0.5175517201423645, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7434209124209123, + "t": 0.7324252525252525, + "punct": null, + "u_acc": 0.3072, + "t_acc": 0.282, + "punct_acc": null, + "threshold_t": 0.17701329290866852, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8419260317460318, + "t": 0.856696507936508, + "punct": null, + "u_acc": 0.514, + "t_acc": 0.5612, + "punct_acc": null, + "threshold_t": 0.5153683423995972, + "threshold_adj": 0.25 + } + }, + "ml": { + "opus100": { + "u": 0.8968732071141711, + "t": 0.9129279020845286, + "punct": null, + "u_acc": 0.6224899598393574, + "t_acc": 0.6947791164658634, + "punct_acc": null, + "threshold_t": 0.48813119530677795, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6145707268489715, + "t": 0.6193986201922711, + "punct": null, + "u_acc": 0.12301587301587301, + "t_acc": 0.1283068783068783, + "punct_acc": null, + "threshold_t": 0.26139312982559204, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7121728653474686, + "t": 0.6945143260619451, + "punct": null, + "u_acc": 0.2275132275132275, + "t_acc": 0.20634920634920634, + "punct_acc": null, + "threshold_t": 0.17880332469940186, + "threshold_adj": 0.25 + } + }, + "mn": { + "opus100": { + "u": 0.9238231552162851, + "t": null, + "punct": null, + "u_acc": 0.7604961832061069, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8619173626373627, + "t": 0.8621040293040293, + "punct": null, + "u_acc": 0.5592, + "t_acc": 0.5604, + "punct_acc": null, + "threshold_t": 0.2510180175304413, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9028121212121212, + "t": 0.9090521212121212, + "punct": null, + "u_acc": 0.6692, + "t_acc": 0.6976, + "punct_acc": null, + "threshold_t": 0.36725419759750366, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9521377777777777, + "t": 0.9641885714285714, + "punct": null, + "u_acc": 0.8104, + "t_acc": 0.8708, + "punct_acc": null, + "threshold_t": 0.6224234700202942, + "threshold_adj": 0.25 + } + }, + "mr": { + "opus100": { + "u": 0.9591781874039937, + "t": 0.9586405529953916, + "punct": null, + "u_acc": 0.8487903225806451, + "t_acc": 0.8508064516129032, + "punct_acc": null, + "threshold_t": 0.4154515266418457, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9666666666666667, + "t": 1.0, + "punct": null, + "u_acc": 0.8333333333333334, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.7305238842964172, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.5687199651329063, + "t": 0.6105866333666333, + "punct": null, + "u_acc": 0.0992, + "t_acc": 0.134, + "punct_acc": null, + "threshold_t": 0.5853223204612732, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7097786968586968, + "t": 0.7240623088023088, + "punct": null, + "u_acc": 0.2624, + "t_acc": 0.2896, + "punct_acc": null, + "threshold_t": 0.5970684885978699, + "threshold_adj": 0.25 + } + }, + "ms": { + "opus100": { + "u": 0.9368541380887059, + "t": 0.9547423084460123, + "punct": null, + "u_acc": 0.742798353909465, + "t_acc": 0.8189300411522634, + "punct_acc": null, + "threshold_t": 0.6286869645118713, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7311164794200509, + "t": 0.7192740328454614, + "punct": null, + "u_acc": 0.28154761904761905, + "t_acc": 0.2625, + "punct_acc": null, + "threshold_t": 0.17396868765354156, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8274230828695115, + "t": 0.8375336270871986, + "punct": null, + "u_acc": 0.4744047619047619, + "t_acc": 0.5047619047619047, + "punct_acc": null, + "threshold_t": 0.45183947682380676, + "threshold_adj": 0.25 + } + }, + "mt": { + "opus100": { + "u": 0.908926745768851, + "t": 0.9065692517109522, + "punct": null, + "u_acc": 0.7206477732793523, + "t_acc": 0.6923076923076923, + "punct_acc": null, + "threshold_t": 0.16163022816181183, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9479487179487179, + "t": 0.9515384615384616, + "punct": null, + "u_acc": 0.8692307692307693, + "t_acc": 0.8769230769230769, + "punct_acc": null, + "threshold_t": 0.3406997323036194, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.703846153846154, + "t": 0.6432234432234433, + "punct": null, + "u_acc": 0.11538461538461539, + "t_acc": 0.15384615384615385, + "punct_acc": null, + "threshold_t": 0.03871966898441315, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8487179487179487, + "t": 0.8053113553113553, + "punct": null, + "u_acc": 0.5384615384615384, + "t_acc": 0.34615384615384615, + "punct_acc": null, + "threshold_t": 0.0424768291413784, + "threshold_adj": 0.25 + } + }, + "my": { + "opus100": { + "u": 0.9340725806451614, + "t": 0.9282258064516129, + "punct": null, + "u_acc": 0.780241935483871, + "t_acc": 0.7741935483870968, + "punct_acc": null, + "threshold_t": 0.5104498863220215, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.942927619047619, + "t": 0.9488076190476191, + "punct": null, + "u_acc": 0.806, + "t_acc": 0.8324, + "punct_acc": null, + "threshold_t": 0.39795809984207153, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.9483257142857143, + "t": 0.9530876190476191, + "punct": null, + "u_acc": 0.8256, + "t_acc": 0.8488, + "punct_acc": null, + "threshold_t": 0.47912418842315674, + "threshold_adj": 0.25 + } + }, + "ne": { + "opus100": { + "u": 0.8821302728279473, + "t": 0.8812846068660022, + "punct": null, + "u_acc": 0.6194503171247357, + "t_acc": 0.6152219873150105, + "punct_acc": null, + "threshold_t": 0.21476316452026367, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7210256174541889, + "t": 0.7049320585034871, + "punct": null, + "u_acc": 0.26640926640926643, + "t_acc": 0.24517374517374518, + "punct_acc": null, + "threshold_t": 0.10501459985971451, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.741398680684395, + "t": 0.708143039865729, + "punct": null, + "u_acc": 0.31467181467181465, + "t_acc": 0.24903474903474904, + "punct_acc": null, + "threshold_t": 0.059311334043741226, + "threshold_adj": 0.25 + } + }, + "nl": { + "opus100": { + "u": 0.9519333333333334, + "t": null, + "punct": null, + "u_acc": 0.78, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9709172259507831, + "t": 0.9744966442953019, + "punct": null, + "u_acc": 0.8993288590604027, + "t_acc": 0.912751677852349, + "punct_acc": null, + "threshold_t": 0.5421984195709229, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.8213136507936508, + "t": 0.8163633766233767, + "punct": null, + "u_acc": 0.4748, + "t_acc": 0.4584, + "punct_acc": null, + "threshold_t": 0.18556594848632812, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8865695238095239, + "t": 0.895831746031746, + "punct": null, + "u_acc": 0.6212, + "t_acc": 0.6724, + "punct_acc": null, + "threshold_t": 0.6364193558692932, + "threshold_adj": 0.25 + } + }, + "no": { + "opus100": { + "u": 0.9658218125960061, + "t": 0.968778801843318, + "punct": null, + "u_acc": 0.8548387096774194, + "t_acc": 0.8669354838709677, + "punct_acc": null, + "threshold_t": 0.3930370509624481, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9874655647382921, + "t": 0.9915977961432506, + "punct": null, + "u_acc": 0.9442148760330579, + "t_acc": 0.9648760330578512, + "punct_acc": null, + "threshold_t": 0.3106166124343872, + "threshold_adj": 0.25 + } + }, + "pa": { + "opus100": { + "u": 0.8804742388758783, + "t": 0.8834894613583137, + "punct": null, + "u_acc": 0.625, + "t_acc": 0.6229508196721312, + "punct_acc": null, + "threshold_t": 0.19879713654518127, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6910933038592613, + "t": 0.683680267722821, + "punct": null, + "u_acc": 0.2127659574468085, + "t_acc": 0.20212765957446807, + "punct_acc": null, + "threshold_t": 0.1596597135066986, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8169291701206594, + "t": 0.7649584753308158, + "punct": null, + "u_acc": 0.48936170212765956, + "t_acc": 0.3829787234042553, + "punct_acc": null, + "threshold_t": 0.05801982060074806, + "threshold_adj": 0.25 + } + }, + "pl": { + "ersatz": { + "u": 0.9861885790172644, + "t": 0.9861885790172644, + "punct": null, + "u_acc": 0.9442231075697212, + "t_acc": 0.9442231075697212, + "punct_acc": null, + "threshold_t": 0.26345428824424744, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9551110180142439, + "t": 0.9605606758832567, + "punct": null, + "u_acc": 0.8084677419354839, + "t_acc": 0.8326612903225806, + "punct_acc": null, + "threshold_t": 0.5306338667869568, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9930806257521059, + "t": 0.9302045728038506, + "punct": null, + "u_acc": 0.9693140794223827, + "t_acc": 0.7906137184115524, + "punct_acc": null, + "threshold_t": 0.9993952512741089, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7683549206349206, + "t": 0.7377114802844215, + "punct": null, + "u_acc": 0.348, + "t_acc": 0.2736, + "punct_acc": null, + "threshold_t": 0.05280245095491409, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8664628571428571, + "t": 0.853325772005772, + "punct": null, + "u_acc": 0.5852, + "t_acc": 0.5328, + "punct_acc": null, + "threshold_t": 0.10930672287940979, + "threshold_adj": 0.25 + } + }, + "ps": { + "ersatz": { + "u": 0.8717451007773589, + "t": 0.883677791742308, + "punct": null, + "u_acc": 0.5703812316715543, + "t_acc": 0.6070381231671554, + "punct_acc": null, + "threshold_t": 0.4288349747657776, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8842613214550853, + "t": 0.883667409057164, + "punct": null, + "u_acc": 0.6169265033407573, + "t_acc": 0.6302895322939867, + "punct_acc": null, + "threshold_t": 0.35108014941215515, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6674566309602806, + "t": 0.6234367535999138, + "punct": null, + "u_acc": 0.1678832116788321, + "t_acc": 0.12408759124087591, + "punct_acc": null, + "threshold_t": 0.11175333708524704, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6751134915368492, + "t": 0.6527022045270221, + "punct": null, + "u_acc": 0.17518248175182483, + "t_acc": 0.15328467153284672, + "punct_acc": null, + "threshold_t": 0.15166230499744415, + "threshold_adj": 0.25 + } + }, + "pt": { + "opus100": { + "u": 0.9575316496369127, + "t": 0.9680354732986313, + "punct": null, + "u_acc": 0.8178137651821862, + "t_acc": 0.8623481781376519, + "punct_acc": null, + "threshold_t": 0.6064178347587585, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9811643835616438, + "t": 0.9807077625570777, + "punct": null, + "u_acc": 0.9246575342465754, + "t_acc": 0.9383561643835616, + "punct_acc": null, + "threshold_t": 0.7765695452690125, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.772202886002886, + "t": 0.7648648196248196, + "punct": null, + "u_acc": 0.3604, + "t_acc": 0.3332, + "punct_acc": null, + "threshold_t": 0.14978329837322235, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8693853968253968, + "t": 0.8738673015873017, + "punct": null, + "u_acc": 0.5988, + "t_acc": 0.6196, + "punct_acc": null, + "threshold_t": 0.3290621340274811, + "threshold_adj": 0.25 + } + }, + "ro": { + "ersatz": { + "u": 0.9921333333333333, + "t": 0.9947999999999999, + "punct": null, + "u_acc": 0.966, + "t_acc": 0.982, + "punct_acc": null, + "threshold_t": 0.7932366132736206, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9645791245791246, + "t": 0.9644444444444444, + "punct": null, + "u_acc": 0.8606060606060606, + "t_acc": 0.8666666666666667, + "punct_acc": null, + "threshold_t": 0.4755313992500305, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9889733840304183, + "t": 0.9835234474017744, + "punct": null, + "u_acc": 0.9581749049429658, + "t_acc": 0.9505703422053232, + "punct_acc": null, + "threshold_t": 0.906254231929779, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7463857142857143, + "t": 0.7300784271284271, + "punct": null, + "u_acc": 0.2948, + "t_acc": 0.2712, + "punct_acc": null, + "threshold_t": 0.07128729671239853, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8593752380952381, + "t": 0.8571714285714286, + "punct": null, + "u_acc": 0.576, + "t_acc": 0.5684, + "punct_acc": null, + "threshold_t": 0.2266821265220642, + "threshold_adj": 0.25 + } + }, + "ru": { + "ersatz": { + "u": 0.9889784946236558, + "t": 0.9885752688172044, + "punct": null, + "u_acc": 0.9556451612903226, + "t_acc": 0.967741935483871, + "punct_acc": null, + "threshold_t": 0.9587193131446838, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.922352328909706, + "t": null, + "punct": null, + "u_acc": 0.7418032786885246, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9421861471861472, + "t": 0.9443073593073593, + "punct": null, + "u_acc": 0.7772727272727272, + "t_acc": 0.8, + "punct_acc": null, + "threshold_t": 0.3324502408504486, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7669371428571429, + "t": 0.7601752958152957, + "punct": null, + "u_acc": 0.3596, + "t_acc": 0.3444, + "punct_acc": null, + "threshold_t": 0.1602788120508194, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8638431746031745, + "t": 0.8699914285714285, + "punct": null, + "u_acc": 0.5772, + "t_acc": 0.6092, + "punct_acc": null, + "threshold_t": 0.4023711383342743, + "threshold_adj": 0.25 + } + }, + "si": { + "opus100": { + "u": 0.8767857142857143, + "t": 0.8983294930875576, + "punct": null, + "u_acc": 0.5524193548387096, + "t_acc": 0.6370967741935484, + "punct_acc": null, + "threshold_t": 0.4392794072628021, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6784606866002215, + "t": 0.6865325458348714, + "punct": null, + "u_acc": 0.21705426356589147, + "t_acc": 0.24806201550387597, + "punct_acc": null, + "threshold_t": 0.30695363879203796, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7057893441614372, + "t": 0.7103851359665313, + "punct": null, + "u_acc": 0.2558139534883721, + "t_acc": 0.2713178294573643, + "punct_acc": null, + "threshold_t": 0.3313850462436676, + "threshold_adj": 0.25 + } + }, + "sk": { + "opus100": { + "u": 0.9660138248847927, + "t": 0.9611751152073732, + "punct": null, + "u_acc": 0.8608870967741935, + "t_acc": 0.8407258064516129, + "punct_acc": null, + "threshold_t": 0.17712686955928802, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.968553459119497, + "t": 0.970062893081761, + "punct": null, + "u_acc": 0.8867924528301887, + "t_acc": 0.9056603773584906, + "punct_acc": null, + "threshold_t": 0.5350900292396545, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7647526984126984, + "t": 0.7477345720945721, + "punct": null, + "u_acc": 0.3544, + "t_acc": 0.3188, + "punct_acc": null, + "threshold_t": 0.13324253261089325, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8539290331890331, + "t": 0.8656257142857142, + "punct": null, + "u_acc": 0.556, + "t_acc": 0.6012, + "punct_acc": null, + "threshold_t": 0.4435036778450012, + "threshold_adj": 0.25 + } + }, + "sl": { + "opus100": { + "u": 0.9625836680053548, + "t": 0.9612449799196788, + "punct": null, + "u_acc": 0.8333333333333334, + "t_acc": 0.8293172690763052, + "punct_acc": null, + "threshold_t": 0.18043507635593414, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9930208333333332, + "t": 0.9942708333333334, + "punct": null, + "u_acc": 0.971875, + "t_acc": 0.978125, + "punct_acc": null, + "threshold_t": 0.3879781663417816, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7779704761904762, + "t": 0.7571816042780749, + "punct": null, + "u_acc": 0.3768, + "t_acc": 0.3216, + "punct_acc": null, + "threshold_t": 0.06725915521383286, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8803501587301588, + "t": 0.8632403174603176, + "punct": null, + "u_acc": 0.6248, + "t_acc": 0.574, + "punct_acc": null, + "threshold_t": 0.12307940423488617, + "threshold_adj": 0.25 + } + }, + "sq": { + "opus100": { + "u": 0.9562620983352691, + "t": 0.9655923344947734, + "punct": null, + "u_acc": 0.8089430894308943, + "t_acc": 0.8577235772357723, + "punct_acc": null, + "threshold_t": 0.5081035494804382, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9444444444444444, + "t": null, + "punct": null, + "u_acc": 0.8666666666666667, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7150706204906205, + "t": 0.696130251970252, + "punct": null, + "u_acc": 0.2584, + "t_acc": 0.2356, + "punct_acc": null, + "threshold_t": 0.15113134682178497, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8247391053391053, + "t": 0.8322622222222222, + "punct": null, + "u_acc": 0.4824, + "t_acc": 0.502, + "punct_acc": null, + "threshold_t": 0.3077636957168579, + "threshold_adj": 0.25 + } + }, + "sr": { + "opus100": { + "u": 0.965136737425894, + "t": 0.9727003251099637, + "punct": null, + "u_acc": 0.8413654618473896, + "t_acc": 0.8755020080321285, + "punct_acc": null, + "threshold_t": 0.5142064690589905, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9938461538461537, + "t": 1.0, + "punct": null, + "u_acc": 0.9692307692307692, + "t_acc": 1.0, + "punct_acc": null, + "threshold_t": 0.7687577605247498, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7527284544695071, + "t": 0.7242078758278758, + "punct": null, + "u_acc": 0.3372, + "t_acc": 0.2776, + "punct_acc": null, + "threshold_t": 0.06521148979663849, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8646656654456654, + "t": 0.8670893968253968, + "punct": null, + "u_acc": 0.5896, + "t_acc": 0.6056, + "punct_acc": null, + "threshold_t": 0.4538241922855377, + "threshold_adj": 0.25 + } + }, + "sv": { + "opus100": { + "u": 0.9635207496653281, + "t": 0.9665997322623828, + "punct": null, + "u_acc": 0.8353413654618473, + "t_acc": 0.8493975903614458, + "punct_acc": null, + "threshold_t": 0.45493221282958984, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9648578811369509, + "t": 0.9664082687338502, + "punct": null, + "u_acc": 0.8565891472868217, + "t_acc": 0.8643410852713178, + "punct_acc": null, + "threshold_t": 0.2939380407333374, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7808742857142857, + "t": 0.7715430303030304, + "punct": null, + "u_acc": 0.392, + "t_acc": 0.3608, + "punct_acc": null, + "threshold_t": 0.0773807168006897, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8669253968253968, + "t": 0.8709219047619048, + "punct": null, + "u_acc": 0.5852, + "t_acc": 0.6024, + "punct_acc": null, + "threshold_t": 0.43130090832710266, + "threshold_adj": 0.25 + } + }, + "ta": { + "ersatz": { + "u": 0.9780876494023905, + "t": 0.9798140770252324, + "punct": null, + "u_acc": 0.9123505976095617, + "t_acc": 0.9203187250996016, + "punct_acc": null, + "threshold_t": 0.7401787042617798, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8511227255129693, + "t": 0.851589061345159, + "punct": null, + "u_acc": 0.5386178861788617, + "t_acc": 0.5426829268292683, + "punct_acc": null, + "threshold_t": 0.3950875401496887, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9933333333333334, + "t": 0.9888888888888889, + "punct": null, + "u_acc": 0.9666666666666667, + "t_acc": 0.9666666666666667, + "punct_acc": null, + "threshold_t": 0.9846197962760925, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6801233997319406, + "t": 0.6760079698869735, + "punct": null, + "u_acc": 0.21209964412811388, + "t_acc": 0.20284697508896798, + "punct_acc": null, + "threshold_t": 0.20718039572238922, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7482302434615602, + "t": 0.7536198538511706, + "punct": null, + "u_acc": 0.30391459074733096, + "t_acc": 0.31743772241992885, + "punct_acc": null, + "threshold_t": 0.402853786945343, + "threshold_adj": 0.25 + } + }, + "te": { + "opus100": { + "u": 0.9026627793974733, + "t": 0.9078231292517007, + "punct": null, + "u_acc": 0.6551020408163265, + "t_acc": 0.7, + "punct_acc": null, + "threshold_t": 0.4780767858028412, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6541209461904326, + "t": 0.6753787333847757, + "punct": null, + "u_acc": 0.1555891238670695, + "t_acc": 0.18277945619335348, + "punct_acc": null, + "threshold_t": 0.3297079801559448, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.726380115352925, + "t": 0.7394307773461853, + "punct": null, + "u_acc": 0.26435045317220546, + "t_acc": 0.29607250755287007, + "punct_acc": null, + "threshold_t": 0.3738456070423126, + "threshold_adj": 0.25 + } + }, + "tg": { + "opus100": { + "u": 0.936813922356091, + "t": 0.9327309236947792, + "punct": null, + "u_acc": 0.7610441767068273, + "t_acc": 0.7610441767068273, + "punct_acc": null, + "threshold_t": 0.32450544834136963, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.743922305764411, + "t": 0.7407268170426065, + "punct": null, + "u_acc": 0.25, + "t_acc": 0.2631578947368421, + "punct_acc": null, + "threshold_t": 0.06046656519174576, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8610275689223057, + "t": 0.8697994987468671, + "punct": null, + "u_acc": 0.5263157894736842, + "t_acc": 0.5263157894736842, + "punct_acc": null, + "threshold_t": 0.1752977818250656, + "threshold_adj": 0.25 + } + }, + "th": { + "opus100": { + "u": 0.8101875901875902, + "t": 0.8135930735930735, + "punct": null, + "u_acc": 0.3434343434343434, + "t_acc": 0.3515151515151515, + "punct_acc": null, + "threshold_t": 0.26050248742103577, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.8629523809523809, + "t": null, + "punct": null, + "u_acc": 0.592, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7427162837878967, + "t": 0.7389915906315906, + "punct": null, + "u_acc": 0.29, + "t_acc": 0.2816, + "punct_acc": null, + "threshold_t": 0.2073788344860077, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7441536983016983, + "t": 0.7397373515373515, + "punct": null, + "u_acc": 0.2916, + "t_acc": 0.282, + "punct_acc": null, + "threshold_t": 0.2073788344860077, + "threshold_adj": 0.25 + } + }, + "tr": { + "ersatz": { + "u": 0.9798378926038501, + "t": 0.9829343971631207, + "punct": null, + "u_acc": 0.9175531914893617, + "t_acc": 0.9414893617021277, + "punct_acc": null, + "threshold_t": 0.7831779718399048, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.9561499903605166, + "t": 0.9585791401580875, + "punct": null, + "u_acc": 0.8157894736842105, + "t_acc": 0.8279352226720648, + "punct_acc": null, + "threshold_t": 0.36859434843063354, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9847272727272728, + "t": 0.9830303030303031, + "punct": null, + "u_acc": 0.9309090909090909, + "t_acc": 0.9345454545454546, + "punct_acc": null, + "threshold_t": 0.6335538029670715, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7993467243867244, + "t": 0.7852118673483379, + "punct": null, + "u_acc": 0.4236, + "t_acc": 0.3812, + "punct_acc": null, + "threshold_t": 0.10223785787820816, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8671946608946608, + "t": 0.8673013275613277, + "punct": null, + "u_acc": 0.5684, + "t_acc": 0.5684, + "punct_acc": null, + "threshold_t": 0.2503863275051117, + "threshold_adj": 0.25 + } + }, + "uk": { + "opus100": { + "u": 0.9452094090648308, + "t": 0.9566360680818513, + "punct": null, + "u_acc": 0.7630522088353414, + "t_acc": 0.821285140562249, + "punct_acc": null, + "threshold_t": 0.7379667162895203, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9735119047619047, + "t": 0.9741071428571428, + "punct": null, + "u_acc": 0.9107142857142857, + "t_acc": 0.9196428571428571, + "punct_acc": null, + "threshold_t": 0.5434187054634094, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7498987301587302, + "t": 0.7210802932699484, + "punct": null, + "u_acc": 0.3188, + "t_acc": 0.254, + "punct_acc": null, + "threshold_t": 0.05720015615224838, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8588638672438672, + "t": 0.8574248196248194, + "punct": null, + "u_acc": 0.574, + "t_acc": 0.5684, + "punct_acc": null, + "threshold_t": 0.2214488983154297, + "threshold_adj": 0.25 + } + }, + "ur": { + "opus100": { + "u": 0.7637409200968522, + "t": 0.6976258675411218, + "punct": null, + "u_acc": 0.3453389830508475, + "t_acc": 0.23516949152542374, + "punct_acc": null, + "threshold_t": 0.03463957458734512, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9823738450604123, + "t": 0.9875621890547265, + "punct": null, + "u_acc": 0.9253731343283582, + "t_acc": 0.9477611940298507, + "punct_acc": null, + "threshold_t": 0.392752468585968, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7270786339388601, + "t": 0.7038153379109187, + "punct": null, + "u_acc": 0.2918807810894142, + "t_acc": 0.2420349434737924, + "punct_acc": null, + "threshold_t": 0.049974311143159866, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.7598837442105684, + "t": 0.7546752579383619, + "punct": null, + "u_acc": 0.35251798561151076, + "t_acc": 0.34121274409044194, + "punct_acc": null, + "threshold_t": 0.18472839891910553, + "threshold_adj": 0.25 + } + }, + "uz": { + "opus100": { + "u": 0.912312925170068, + "t": 0.9063945578231293, + "punct": null, + "u_acc": 0.6938775510204082, + "t_acc": 0.6510204081632653, + "punct_acc": null, + "threshold_t": 0.18522405624389648, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7739737641636375, + "t": 0.7325319078483636, + "punct": null, + "u_acc": 0.36603375527426163, + "t_acc": 0.2521097046413502, + "punct_acc": null, + "threshold_t": 0.03773416951298714, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8482142857142857, + "t": 0.8267869320084511, + "punct": null, + "u_acc": 0.5284810126582279, + "t_acc": 0.45464135021097046, + "punct_acc": null, + "threshold_t": 0.09298396855592728, + "threshold_adj": 0.25 + } + }, + "vi": { + "opus100": { + "u": 0.9465020576131687, + "t": 0.9572702331961591, + "punct": null, + "u_acc": 0.7757201646090535, + "t_acc": 0.8251028806584362, + "punct_acc": null, + "threshold_t": 0.5840871334075928, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.987, + "t": 0.9956666666666666, + "punct": null, + "u_acc": 0.935, + "t_acc": 0.985, + "punct_acc": null, + "threshold_t": 0.9163193702697754, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.7216463492063493, + "t": 0.7034495415695415, + "punct": null, + "u_acc": 0.276, + "t_acc": 0.2452, + "punct_acc": null, + "threshold_t": 0.09150715172290802, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.8294349206349205, + "t": 0.8211955555555556, + "punct": null, + "u_acc": 0.4856, + "t_acc": 0.4596, + "punct_acc": null, + "threshold_t": 0.17010951042175293, + "threshold_adj": 0.25 + } + }, + "xh": { + "opus100": { + "u": 0.910719225449516, + "t": 0.9206184548508201, + "punct": null, + "u_acc": 0.6721991701244814, + "t_acc": 0.7136929460580913, + "punct_acc": null, + "threshold_t": 0.3773551285266876, + "threshold_adj": 0.25 + } + }, + "yi": { + "opus100": { + "u": 0.9198537095088819, + "t": 0.919435736677116, + "punct": null, + "u_acc": 0.7460815047021944, + "t_acc": 0.7460815047021944, + "punct_acc": null, + "threshold_t": 0.25716787576675415, + "threshold_adj": 0.25 + } + }, + "yo": { + "opus100": { + "u": 0.8186860068259386, + "t": null, + "punct": null, + "u_acc": 0.4543515358361775, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9170833333333335, + "t": null, + "punct": null, + "u_acc": 0.6625, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.25 + }, + "nllb": { + "u": 0.9215853968253971, + "t": 0.9257720634920635, + "punct": null, + "u_acc": 0.718, + "t_acc": 0.7388, + "punct_acc": null, + "threshold_t": 0.3059988021850586, + "threshold_adj": 0.25 + } + }, + "zh": { + "ersatz": { + "u": 0.9604, + "t": 0.9635333333333334, + "punct": null, + "u_acc": 0.896, + "t_acc": 0.91, + "punct_acc": null, + "threshold_t": 0.4638150930404663, + "threshold_adj": 0.25 + }, + "opus100": { + "u": 0.8987592219986585, + "t": 0.8293685634731913, + "punct": null, + "u_acc": 0.6800804828973843, + "t_acc": 0.44668008048289737, + "punct_acc": null, + "threshold_t": 0.015144760720431805, + "threshold_adj": 0.25 + }, + "ud": { + "u": 0.9896, + "t": 0.9944, + "punct": null, + "u_acc": 0.96, + "t_acc": 0.984, + "punct_acc": null, + "threshold_t": 0.9433436393737793, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-asr": { + "u": 0.6496059167332613, + "t": 0.5896321000873582, + "punct": null, + "u_acc": 0.140177690029615, + "t_acc": 0.08835143139190524, + "punct_acc": null, + "threshold_t": 0.04079819843173027, + "threshold_adj": 0.25 + }, + "ted2020-corrupted-social-media": { + "u": 0.6701009887337627, + "t": 0.634694199625098, + "punct": null, + "u_acc": 0.175715695952616, + "t_acc": 0.1377097729516288, + "punct_acc": null, + "threshold_t": 0.08350198715925217, + "threshold_adj": 0.25 + } + }, + "zu": { + "opus100": { + "u": 0.9306980056980058, + "t": 0.9321937321937321, + "punct": null, + "u_acc": 0.7393162393162394, + "t_acc": 0.7521367521367521, + "punct_acc": null, + "threshold_t": 0.2889588475227356, + "threshold_adj": 0.25 + } + }, + "tr-de": {}, + "es-en": {}, + "vi-en": {}, + "en-de": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/wtp-12l.json b/wtpsplit/evaluation/evaluation_results/short/wtp-12l.json new file mode 100644 index 00000000..4b618772 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/wtp-12l.json @@ -0,0 +1,3350 @@ +{ + "af": { + "opus100": { + "u": 0.8048474711697852, + "t": 0.8133093031853362, + "punct": 0.8901219992129084, + "u_acc": 0.4380165289256198, + "t_acc": 0.45867768595041325, + "punct_acc": 0.6508264462809917, + "threshold_t": 0.005403372924774885, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9742138364779874, + "t": 0.9773584905660376, + "punct": 0.9968553459119496, + "u_acc": 0.9150943396226415, + "t_acc": 0.9245283018867925, + "punct_acc": 0.9905660377358491, + "threshold_t": 0.009295427240431309, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7086984126984127, + "t": 0.7114705977782901, + "punct": 0.8084395604395604, + "u_acc": 0.20615384615384616, + "t_acc": 0.2246153846153846, + "punct_acc": 0.46153846153846156, + "threshold_t": 0.002592954318970442, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7474383394383395, + "t": 0.765995781995782, + "punct": 0.8882197802197802, + "u_acc": 0.27076923076923076, + "t_acc": 0.3507692307692308, + "punct_acc": 0.6338461538461538, + "threshold_t": 0.001331276260316372, + "threshold_adj": 0.01 + } + }, + "am": { + "opus100": { + "u": 0.7073303982942537, + "t": 0.6944691074209147, + "punct": 0.7543220501051826, + "u_acc": 0.21084337349397592, + "t_acc": 0.1927710843373494, + "punct_acc": 0.2791164658634538, + "threshold_t": 0.007174979895353317, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6622283098845598, + "t": 0.5943464955183706, + "punct": 0.7328869047619049, + "u_acc": 0.1484375, + "t_acc": 0.1171875, + "punct_acc": 0.28125, + "threshold_t": 0.0008336202008649707, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6714161706349207, + "t": 0.6588818860877684, + "punct": 0.7223214285714286, + "u_acc": 0.1640625, + "t_acc": 0.171875, + "punct_acc": 0.265625, + "threshold_t": 0.0034712133929133415, + "threshold_adj": 0.01 + } + }, + "ar": { + "ersatz": { + "u": 0.8820883608117651, + "t": 0.8819951030057412, + "punct": 0.9399316109422492, + "u_acc": 0.6143617021276596, + "t_acc": 0.6143617021276596, + "punct_acc": 0.7925531914893617, + "threshold_t": 0.01200223807245493, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7897728888692743, + "t": 0.7985965841387528, + "punct": 0.8189374547808282, + "u_acc": 0.3855421686746988, + "t_acc": 0.40963855421686746, + "punct_acc": 0.4779116465863454, + "threshold_t": 0.01541497465223074, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9013445378151262, + "t": 0.8856862745098039, + "punct": 0.8683948731007556, + "u_acc": 0.6764705882352942, + "t_acc": 0.6411764705882353, + "punct_acc": 0.6588235294117647, + "threshold_t": 0.24522088468074799, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6584468697968697, + "t": 0.6464607630690602, + "punct": 0.7527269841269841, + "u_acc": 0.0948, + "t_acc": 0.14, + "punct_acc": 0.3252, + "threshold_t": 0.002449934370815754, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.67787555999556, + "t": 0.6624854910105374, + "punct": 0.7662092063492064, + "u_acc": 0.152, + "t_acc": 0.1644, + "punct_acc": 0.346, + "threshold_t": 0.0038563087582588196, + "threshold_adj": 0.01 + } + }, + "az": { + "opus100": { + "u": 0.8245713010773251, + "t": 0.8189711225855804, + "punct": 0.8642570281124498, + "u_acc": 0.4036144578313253, + "t_acc": 0.43775100401606426, + "punct_acc": 0.570281124497992, + "threshold_t": 0.08374238014221191, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6948816090660063, + "t": 0.7195275586570984, + "punct": 0.8210007880220646, + "u_acc": 0.11229314420803782, + "t_acc": 0.2641843971631206, + "punct_acc": 0.4739952718676123, + "threshold_t": 0.0003218701749574393, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.726713846306045, + "t": 0.7584719328941273, + "punct": 0.8665991219182708, + "u_acc": 0.20626477541371158, + "t_acc": 0.32978723404255317, + "punct_acc": 0.5910165484633569, + "threshold_t": 0.0005253333947621286, + "threshold_adj": 0.009999999999999998 + } + }, + "be": { + "opus100": { + "u": 0.7527950438337404, + "t": 0.7513868683929784, + "punct": 0.8944137329066045, + "u_acc": 0.3380855397148676, + "t_acc": 0.3319755600814664, + "punct_acc": 0.6517311608961304, + "threshold_t": 0.0016311279032379389, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9027261462205699, + "t": 0.8980350504514074, + "punct": 0.9207116303770579, + "u_acc": 0.6914498141263941, + "t_acc": 0.6691449814126395, + "punct_acc": 0.7695167286245354, + "threshold_t": 0.006256191525608301, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.7049851907411935, + "t": 0.7109320739106593, + "punct": 0.8138237384506042, + "u_acc": 0.16937053861129137, + "t_acc": 0.21414665801427643, + "punct_acc": 0.4652822842310188, + "threshold_t": 0.003423084504902363, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.75907007406034, + "t": 0.7781802270121544, + "punct": 0.8785431022939135, + "u_acc": 0.3011031797534069, + "t_acc": 0.3744321868916288, + "punct_acc": 0.627514600908501, + "threshold_t": 0.002322097308933735, + "threshold_adj": 0.009999999999999998 + } + }, + "bg": { + "opus100": { + "u": 0.9105862518688169, + "t": 0.9177306994942265, + "punct": 0.9537837579921749, + "u_acc": 0.7034068136272545, + "t_acc": 0.6913827655310621, + "punct_acc": 0.8196392785571143, + "threshold_t": 0.0018652341095730662, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9453149001536097, + "t": 0.9569039085168117, + "punct": 0.9782556750298685, + "u_acc": 0.8207885304659498, + "t_acc": 0.8530465949820788, + "punct_acc": 0.931899641577061, + "threshold_t": 0.005350757855921984, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6911520634920636, + "t": 0.7046475790875791, + "punct": 0.8108739682539683, + "u_acc": 0.1096, + "t_acc": 0.1936, + "punct_acc": 0.4392, + "threshold_t": 0.0017837951891124249, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7456438672438673, + "t": 0.7760783520899649, + "punct": 0.8790765367965366, + "u_acc": 0.2608, + "t_acc": 0.3612, + "punct_acc": 0.6352, + "threshold_t": 0.00205629994161427, + "threshold_adj": 0.01 + } + }, + "bn": { + "opus100": { + "u": 0.8562579830185464, + "t": 0.8678068410462776, + "punct": 0.8671169876401266, + "u_acc": 0.5352112676056338, + "t_acc": 0.579476861167002, + "punct_acc": 0.5814889336016097, + "threshold_t": 0.1256358027458191, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.9857142857142858, + "t": null, + "punct": null, + "u_acc": 0.9285714285714286, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.4793006405582141, + "t": 0.5712293006139161, + "punct": 0.6148774558774559, + "u_acc": 0.021538461538461538, + "t_acc": 0.03, + "punct_acc": 0.09615384615384616, + "threshold_t": 0.02392040751874447, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6981119436119436, + "t": 0.6796049177067277, + "punct": 0.7825280830280831, + "u_acc": 0.19615384615384615, + "t_acc": 0.19692307692307692, + "punct_acc": 0.38384615384615384, + "threshold_t": 0.002451888285577297, + "threshold_adj": 0.009999999999999998 + } + }, + "ca": { + "opus100": { + "u": 0.8952939442797455, + "t": 0.8966047362599087, + "punct": 0.9314144048423967, + "u_acc": 0.6815415821501014, + "t_acc": 0.6855983772819473, + "punct_acc": 0.768762677484787, + "threshold_t": 0.003039239440113306, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9701748467982234, + "t": 0.9568167762972959, + "punct": 0.9833333333333333, + "u_acc": 0.9134199134199135, + "t_acc": 0.8744588744588745, + "punct_acc": 0.9502164502164502, + "threshold_t": 0.019431274384260178, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6893278195488723, + "t": 0.7055860293610758, + "punct": 0.8153451370851371, + "u_acc": 0.1076, + "t_acc": 0.2164, + "punct_acc": 0.4656, + "threshold_t": 0.0008482233970426023, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7552436075036075, + "t": 0.7647814114176869, + "punct": 0.8767777777777778, + "u_acc": 0.2812, + "t_acc": 0.3504, + "punct_acc": 0.6284, + "threshold_t": 0.000583290180657059, + "threshold_adj": 0.01 + } + }, + "ceb": { + "ud": { + "u": 0.9503546099290779, + "t": null, + "punct": null, + "u_acc": 0.851063829787234, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.6867965367965366, + "t": 0.6845238095238094, + "punct": 0.7027210884353742, + "u_acc": 0.14285714285714285, + "t_acc": 0.14285714285714285, + "punct_acc": 0.14285714285714285, + "threshold_t": 0.019107719883322716, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7523809523809524, + "t": 0.6785714285714286, + "punct": 0.7142857142857142, + "u_acc": 0.2857142857142857, + "t_acc": 0.07142857142857142, + "punct_acc": 0.2857142857142857, + "threshold_t": 0.12547460198402405, + "threshold_adj": 0.009999999999999998 + }, + "nllb": { + "u": 0.8478277522477521, + "t": 0.8714170451770453, + "punct": 0.8983777777777777, + "u_acc": 0.5284, + "t_acc": 0.6108, + "punct_acc": 0.6884, + "threshold_t": 0.06593380123376846, + "threshold_adj": 0.01 + } + }, + "cs": { + "ersatz": { + "u": 0.9269510582010583, + "t": 0.9350639329805995, + "punct": 0.9799382716049382, + "u_acc": 0.7546296296296297, + "t_acc": 0.7777777777777778, + "punct_acc": 0.9305555555555556, + "threshold_t": 0.005268908571451902, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.8986449864498645, + "t": 0.8843349856135064, + "punct": 0.9139891950867561, + "u_acc": 0.6646341463414634, + "t_acc": 0.6178861788617886, + "punct_acc": 0.7154471544715447, + "threshold_t": 0.0014898094814270735, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9089736367733213, + "t": 0.9044458214410896, + "punct": 0.9560218566922039, + "u_acc": 0.7141167192429022, + "t_acc": 0.7011041009463722, + "punct_acc": 0.8623817034700315, + "threshold_t": 0.012753698974847794, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6916231746031747, + "t": 0.6907615375474199, + "punct": 0.8177609812409812, + "u_acc": 0.1228, + "t_acc": 0.1968, + "punct_acc": 0.4588, + "threshold_t": 0.0008177660638466477, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7478377777777778, + "t": 0.7569012698412698, + "punct": 0.8859790476190476, + "u_acc": 0.2696, + "t_acc": 0.3016, + "punct_acc": 0.6468, + "threshold_t": 0.0038859345950186253, + "threshold_adj": 0.01 + } + }, + "cy": { + "opus100": { + "u": 0.7665211062590976, + "t": 0.7787762213526406, + "punct": 0.8597872045470298, + "u_acc": 0.314410480349345, + "t_acc": 0.36026200873362446, + "punct_acc": 0.5611353711790393, + "threshold_t": 0.0012611985439434648, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9610644257703082, + "t": 0.9652661064425769, + "punct": 0.9893557422969188, + "u_acc": 0.8781512605042017, + "t_acc": 0.8907563025210085, + "punct_acc": 0.9663865546218487, + "threshold_t": 0.008918891660869122, + "threshold_adj": 0.01 + } + }, + "da": { + "opus100": { + "u": 0.9033762160778289, + "t": 0.9102566564260113, + "punct": 0.9356886840757809, + "u_acc": 0.6754032258064516, + "t_acc": 0.7016129032258065, + "punct_acc": 0.7600806451612904, + "threshold_t": 0.002597908955067396, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.925531914893617, + "t": 0.9144208037825059, + "punct": 0.9853427895981087, + "u_acc": 0.75177304964539, + "t_acc": 0.723404255319149, + "punct_acc": 0.950354609929078, + "threshold_t": 0.02169887162744999, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.689195457875458, + "t": 0.7175285113087956, + "punct": 0.8138933333333334, + "u_acc": 0.1016, + "t_acc": 0.2312, + "punct_acc": 0.4576, + "threshold_t": 0.0008742018835619092, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7434975438596492, + "t": 0.776485706747359, + "punct": 0.8807246527385658, + "u_acc": 0.2484, + "t_acc": 0.356, + "punct_acc": 0.6212, + "threshold_t": 0.0013343056198209524, + "threshold_adj": 0.01 + } + }, + "de": { + "ersatz": { + "u": 0.942983221801959, + "t": 0.9404131510037823, + "punct": 0.987101154107264, + "u_acc": 0.7983706720977597, + "t_acc": 0.7922606924643585, + "punct_acc": 0.9490835030549898, + "threshold_t": 0.01113155111670494, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8565718973946822, + "t": 0.8256737051040849, + "punct": 0.9079878981777715, + "u_acc": 0.5295358649789029, + "t_acc": 0.4388185654008439, + "punct_acc": 0.6962025316455697, + "threshold_t": 0.0031019507441669703, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9495901639344262, + "t": 0.9531420765027322, + "punct": 0.9603825136612021, + "u_acc": 0.8319672131147541, + "t_acc": 0.8442622950819673, + "punct_acc": 0.8729508196721312, + "threshold_t": 0.008960246108472347, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.696210061050061, + "t": 0.7455628416028416, + "punct": 0.8349517460317462, + "u_acc": 0.1328, + "t_acc": 0.2896, + "punct_acc": 0.5032, + "threshold_t": 0.0016974055906757712, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7520000177600178, + "t": 0.7754551004551005, + "punct": 0.8802539194139194, + "u_acc": 0.2884, + "t_acc": 0.366, + "punct_acc": 0.6308, + "threshold_t": 0.0020241020247340202, + "threshold_adj": 0.01 + } + }, + "el": { + "opus100": { + "u": 0.9098680436029833, + "t": 0.911289602855868, + "punct": 0.9544272327404858, + "u_acc": 0.6947791164658634, + "t_acc": 0.6947791164658634, + "punct_acc": 0.8253012048192772, + "threshold_t": 0.005961057264357805, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9707602339181287, + "t": 0.962280701754386, + "punct": 0.9941520467836258, + "u_acc": 0.9122807017543859, + "t_acc": 0.8947368421052632, + "punct_acc": 0.9824561403508771, + "threshold_t": 0.02592281438410282, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6956608635808635, + "t": 0.7041541103341104, + "punct": 0.8126152380952382, + "u_acc": 0.1288, + "t_acc": 0.1864, + "punct_acc": 0.4588, + "threshold_t": 0.003526597283780575, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7428358241758242, + "t": 0.7618133593493595, + "punct": 0.8847492063492064, + "u_acc": 0.2564, + "t_acc": 0.3344, + "punct_acc": 0.6444, + "threshold_t": 0.0018985457718372345, + "threshold_adj": 0.01 + } + }, + "en": { + "ersatz": { + "u": 0.9629795207676828, + "t": 0.96363718778049, + "punct": 0.982274181339602, + "u_acc": 0.8696780893042575, + "t_acc": 0.8712357217030114, + "punct_acc": 0.9397715472481828, + "threshold_t": 0.009546288289129734, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.9093509984639018, + "t": 0.8461108218203343, + "punct": 0.9244623655913978, + "u_acc": 0.6995967741935484, + "t_acc": 0.5120967741935484, + "punct_acc": 0.7419354838709677, + "threshold_t": 0.00010237988317385316, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9150851581508516, + "t": 0.9234966979492527, + "punct": 0.940875912408759, + "u_acc": 0.7372262773722628, + "t_acc": 0.7445255474452555, + "punct_acc": 0.8211678832116789, + "threshold_t": 0.005100507754832506, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6691673593073594, + "t": 0.6750663302928009, + "punct": 0.807943492063492, + "u_acc": 0.0596, + "t_acc": 0.172, + "punct_acc": 0.4356, + "threshold_t": 0.0007762826862744987, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7317492063492064, + "t": 0.7404888288964868, + "punct": 0.8694876767676768, + "u_acc": 0.2316, + "t_acc": 0.308, + "punct_acc": 0.6032, + "threshold_t": 0.00044731906382367015, + "threshold_adj": 0.01 + } + }, + "eo": { + "opus100": { + "u": 0.9062115975422427, + "t": 0.891808057533864, + "punct": 0.9123655913978495, + "u_acc": 0.6975806451612904, + "t_acc": 0.6108870967741935, + "punct_acc": 0.7217741935483871, + "threshold_t": 0.0004765467601828277, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6826491960420533, + "t": 0.6944785818265474, + "punct": 0.7983395989974936, + "u_acc": 0.10964912280701754, + "t_acc": 0.20426065162907267, + "punct_acc": 0.43546365914786966, + "threshold_t": 0.0010796994902193546, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7309698759886729, + "t": 0.7330259739096483, + "punct": 0.8609853005529696, + "u_acc": 0.2337092731829574, + "t_acc": 0.3032581453634085, + "punct_acc": 0.5827067669172933, + "threshold_t": 0.00039862043922767043, + "threshold_adj": 0.009999999999999998 + } + }, + "es": { + "ersatz": { + "u": 0.9578826308591321, + "t": null, + "punct": null, + "u_acc": 0.8616187989556136, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.9005494505494506, + "t": 0.8924309608520135, + "punct": 0.9409099672257567, + "u_acc": 0.6558704453441295, + "t_acc": 0.6477732793522267, + "punct_acc": 0.7854251012145749, + "threshold_t": 0.0014283789787441492, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9635145474680358, + "t": 0.9638246249874156, + "punct": 0.9742635658914729, + "u_acc": 0.8744186046511628, + "t_acc": 0.8744186046511628, + "punct_acc": 0.9302325581395349, + "threshold_t": 0.009587920270860195, + "threshold_adj": 0.009999999999999997 + }, + "ted2020-corrupted-asr": { + "u": 0.6721489494818906, + "t": 0.6713169025314784, + "punct": 0.8177292063492064, + "u_acc": 0.0744, + "t_acc": 0.1868, + "punct_acc": 0.4612, + "threshold_t": 0.0004072466981597245, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7377694660894661, + "t": 0.7689758013537891, + "punct": 0.8803532356532356, + "u_acc": 0.2432, + "t_acc": 0.356, + "punct_acc": 0.6268, + "threshold_t": 0.0010286110918968916, + "threshold_adj": 0.01 + } + }, + "et": { + "ersatz": { + "u": 0.9414682539682538, + "t": 0.9287698412698412, + "punct": 0.9917989417989418, + "u_acc": 0.8075396825396826, + "t_acc": 0.7757936507936508, + "punct_acc": 0.9722222222222222, + "threshold_t": 0.019468940794467926, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8828725625939248, + "t": 0.8680947890568602, + "punct": 0.9202429149797571, + "u_acc": 0.645748987854251, + "t_acc": 0.611336032388664, + "punct_acc": 0.7408906882591093, + "threshold_t": 0.002200495218858123, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9116974650556741, + "t": 0.9246564795072257, + "punct": 0.9736318407960198, + "u_acc": 0.7251243781094527, + "t_acc": 0.753731343283582, + "punct_acc": 0.9228855721393034, + "threshold_t": 0.004642595071345568, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7187766107576634, + "t": 0.7271577688977688, + "punct": 0.827927619047619, + "u_acc": 0.1932, + "t_acc": 0.2468, + "punct_acc": 0.498, + "threshold_t": 0.0027815571520477533, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7550479349889876, + "t": 0.7792295711306237, + "punct": 0.8833733333333333, + "u_acc": 0.284, + "t_acc": 0.3652, + "punct_acc": 0.636, + "threshold_t": 0.0015734125627204776, + "threshold_adj": 0.01 + } + }, + "eu": { + "opus100": { + "u": 0.8747007943951917, + "t": 0.8591035291082922, + "punct": 0.895748987854251, + "u_acc": 0.6072874493927125, + "t_acc": 0.5668016194331984, + "punct_acc": 0.6720647773279352, + "threshold_t": 0.0027053426019847393, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9437951431284765, + "t": 0.9349611992945327, + "punct": 0.989925925925926, + "u_acc": 0.8111111111111111, + "t_acc": 0.8, + "punct_acc": 0.9688888888888889, + "threshold_t": 0.027800235897302628, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6785267040307363, + "t": 0.6759614367326842, + "punct": 0.7805918245434376, + "u_acc": 0.10013440860215053, + "t_acc": 0.16532258064516128, + "punct_acc": 0.3817204301075269, + "threshold_t": 0.0017209631623700261, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7363800252913154, + "t": 0.743314365838638, + "punct": 0.8613149544601157, + "u_acc": 0.23588709677419356, + "t_acc": 0.28360215053763443, + "punct_acc": 0.5799731182795699, + "threshold_t": 0.0029673087410628796, + "threshold_adj": 0.009999999999999998 + } + }, + "fa": { + "opus100": { + "u": 0.7566603625721862, + "t": 0.7431504756655057, + "punct": 0.8109838725069186, + "u_acc": 0.34468937875751504, + "t_acc": 0.33867735470941884, + "punct_acc": 0.4529058116232465, + "threshold_t": 0.003364105010405183, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9567547531833247, + "t": 0.9653061224489796, + "punct": 0.999084249084249, + "u_acc": 0.8324175824175825, + "t_acc": 0.8736263736263736, + "punct_acc": 0.9972527472527473, + "threshold_t": 0.0378442257642746, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6745689466089466, + "t": 0.6762113694400005, + "punct": 0.7971028571428571, + "u_acc": 0.0968, + "t_acc": 0.2052, + "punct_acc": 0.4236, + "threshold_t": 0.000874185177963227, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7152530336330336, + "t": 0.6938481545778279, + "punct": 0.8131273015873015, + "u_acc": 0.2124, + "t_acc": 0.2164, + "punct_acc": 0.4492, + "threshold_t": 0.0016658874228596687, + "threshold_adj": 0.01 + } + }, + "fi": { + "ersatz": { + "u": 0.9437541750167, + "t": 0.9472277889111556, + "punct": 0.9918503674014696, + "u_acc": 0.8136272545090181, + "t_acc": 0.8176352705410822, + "punct_acc": 0.9739478957915831, + "threshold_t": 0.006680644582957029, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.891294084855453, + "t": 0.8928424313026041, + "punct": 0.9411899971256109, + "u_acc": 0.6559356136820925, + "t_acc": 0.6317907444668008, + "punct_acc": 0.7947686116700201, + "threshold_t": 0.0010179057717323303, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.904741821752131, + "t": 0.9175425090373543, + "punct": 0.9611111111111112, + "u_acc": 0.7061855670103093, + "t_acc": 0.729381443298969, + "punct_acc": 0.8711340206185567, + "threshold_t": 0.005099939182400703, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7011412698412699, + "t": 0.6913237183387648, + "punct": 0.8105165079365079, + "u_acc": 0.1552, + "t_acc": 0.2048, + "punct_acc": 0.4516, + "threshold_t": 0.0011576683027669787, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7470788455988457, + "t": 0.7575625108225109, + "punct": 0.8725371428571427, + "u_acc": 0.2656, + "t_acc": 0.2992, + "punct_acc": 0.6152, + "threshold_t": 0.004594860132783651, + "threshold_adj": 0.01 + } + }, + "fr": { + "ersatz": { + "u": 0.9569358178053831, + "t": 0.9628939498504717, + "punct": 0.9866344605475041, + "u_acc": 0.8454106280193237, + "t_acc": 0.8623188405797102, + "punct_acc": 0.9492753623188406, + "threshold_t": 0.008584747090935707, + "threshold_adj": 0.009999999999999997 + }, + "opus100": { + "u": 0.9063910621719953, + "t": null, + "punct": null, + "u_acc": 0.6734279918864098, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9647435897435899, + "t": 0.9608974358974359, + "punct": 0.983974358974359, + "u_acc": 0.8557692307692307, + "t_acc": 0.8557692307692307, + "punct_acc": 0.9519230769230769, + "threshold_t": 0.014244242571294308, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6822381529581529, + "t": 0.7071537946367358, + "punct": 0.8053752380952381, + "u_acc": 0.0892, + "t_acc": 0.2196, + "punct_acc": 0.4304, + "threshold_t": 0.0006602457724511623, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.743796507936508, + "t": 0.7687689066489067, + "punct": 0.8699695238095239, + "u_acc": 0.2608, + "t_acc": 0.3364, + "punct_acc": 0.6096, + "threshold_t": 0.0024180952459573746, + "threshold_adj": 0.01 + } + }, + "fy": { + "opus100": { + "u": 0.7140921786844534, + "t": 0.7494832182600423, + "punct": 0.8867770284079297, + "u_acc": 0.24034334763948498, + "t_acc": 0.34549356223175964, + "punct_acc": 0.630901287553648, + "threshold_t": 0.00040005584014579654, + "threshold_adj": 0.01 + } + }, + "ga": { + "opus100": { + "u": 0.861046088767863, + "t": 0.7615869650284911, + "punct": 0.8777745775729646, + "u_acc": 0.592741935483871, + "t_acc": 0.3588709677419355, + "punct_acc": 0.6209677419354839, + "threshold_t": 0.0007172009209170938, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9167336869552937, + "t": 0.9309802283486492, + "punct": 0.9807017543859649, + "u_acc": 0.7456140350877193, + "t_acc": 0.7807017543859649, + "punct_acc": 0.9473684210526315, + "threshold_t": 0.043403904885053635, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.630952380952381, + "t": 0.5077380952380952, + "punct": 0.6238095238095238, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": 0.08333333333333333, + "threshold_t": 0.00021879812993574888, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7333333333333334, + "t": 0.6587301587301587, + "punct": 0.6813492063492063, + "u_acc": 0.25, + "t_acc": 0.25, + "punct_acc": 0.25, + "threshold_t": 0.0033892274368554354, + "threshold_adj": 0.009999999999999998 + } + }, + "gd": { + "opus100": { + "u": 0.8011787184009406, + "t": 0.8203203997648442, + "punct": 0.9289101566552548, + "u_acc": 0.40370370370370373, + "t_acc": 0.4666666666666667, + "punct_acc": 0.7518518518518519, + "threshold_t": 0.0038611404597759247, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8036764705882353, + "t": 0.7981559290382819, + "punct": 0.8103057889822596, + "u_acc": 0.4117647058823529, + "t_acc": 0.41911764705882354, + "punct_acc": 0.4632352941176471, + "threshold_t": 0.003175579709932208, + "threshold_adj": 0.009999999999999998 + } + }, + "gl": { + "opus100": { + "u": 0.8900953661034305, + "t": 0.8946556579621096, + "punct": 0.935157450076805, + "u_acc": 0.6290322580645161, + "t_acc": 0.6471774193548387, + "punct_acc": 0.7620967741935484, + "threshold_t": 0.006588101852685213, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.947969696969697, + "t": 0.9384444444444443, + "punct": 0.9913333333333333, + "u_acc": 0.85, + "t_acc": 0.81, + "punct_acc": 0.97, + "threshold_t": 0.01674182154238224, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6836185347985348, + "t": 0.6998197420075923, + "punct": 0.8142073593073593, + "u_acc": 0.0832, + "t_acc": 0.2176, + "punct_acc": 0.4644, + "threshold_t": 0.0003654438187368214, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7374019047619047, + "t": 0.7600711466311466, + "punct": 0.8753679653679654, + "u_acc": 0.238, + "t_acc": 0.318, + "punct_acc": 0.6204, + "threshold_t": 0.0012413231888785958, + "threshold_adj": 0.01 + } + }, + "gu": { + "ersatz": { + "u": 0.9390691548171863, + "t": 0.9180414948131483, + "punct": 0.968241469816273, + "u_acc": 0.8188976377952756, + "t_acc": 0.7480314960629921, + "punct_acc": 0.8976377952755905, + "threshold_t": 0.03372788801789284, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7879098587173121, + "t": 0.7829546574888189, + "punct": 0.8329291136744553, + "u_acc": 0.38716356107660455, + "t_acc": 0.36853002070393376, + "punct_acc": 0.5196687370600414, + "threshold_t": 0.006124525330960751, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.4639522944957109, + "t": 0.5675239385078015, + "punct": 0.6443450914886709, + "u_acc": 0.04853387259858443, + "t_acc": 0.04600606673407482, + "punct_acc": 0.1557128412537917, + "threshold_t": 0.04128628224134445, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6785394725485726, + "t": 0.6419568863223918, + "punct": 0.7766735679779158, + "u_acc": 0.19009100101112233, + "t_acc": 0.18149646107178968, + "punct_acc": 0.39282103134479274, + "threshold_t": 0.00227031740359962, + "threshold_adj": 0.01 + } + }, + "ha": { + "opus100": { + "u": 0.8964952380952381, + "t": 0.9004666666666667, + "punct": 0.9232666666666667, + "u_acc": 0.602, + "t_acc": 0.632, + "punct_acc": 0.714, + "threshold_t": 0.03500219061970711, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6666666666666666, + "t": 0.4444444444444444, + "punct": 0.6666666666666666, + "u_acc": 0.0, + "t_acc": 0.0, + "punct_acc": 0.0, + "threshold_t": 0.001197033328935504, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7777777777777777, + "t": 0.48461538461538467, + "punct": 0.7222222222222222, + "u_acc": 0.3333333333333333, + "t_acc": 0.0, + "punct_acc": 0.3333333333333333, + "threshold_t": 0.00022674397041555494, + "threshold_adj": 0.01 + } + }, + "he": { + "opus100": { + "u": 0.8609695581639468, + "t": 0.8903743995928365, + "punct": 0.9398988453096669, + "u_acc": 0.5571142284569138, + "t_acc": 0.6352705410821643, + "punct_acc": 0.7875751503006012, + "threshold_t": 0.002519678557291627, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9421768707482993, + "t": 0.938095238095238, + "punct": 0.982312925170068, + "u_acc": 0.7857142857142857, + "t_acc": 0.7857142857142857, + "punct_acc": 0.9387755102040817, + "threshold_t": 0.01783294789493084, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6669715617715618, + "t": 0.6725934777514654, + "punct": 0.7860718037518037, + "u_acc": 0.0772, + "t_acc": 0.1664, + "punct_acc": 0.3972, + "threshold_t": 0.001507981913164258, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6988603929403929, + "t": 0.6899131762011639, + "punct": 0.8062769408369409, + "u_acc": 0.1844, + "t_acc": 0.2056, + "punct_acc": 0.4532, + "threshold_t": 0.0020292741246521473, + "threshold_adj": 0.01 + } + }, + "hi": { + "ersatz": { + "u": 0.9393373329826531, + "t": 0.913358757644472, + "punct": 0.9758730158730158, + "u_acc": 0.7857142857142857, + "t_acc": 0.734920634920635, + "punct_acc": 0.9222222222222223, + "threshold_t": 0.06708051264286041, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7817085860608127, + "t": 0.782335646809331, + "punct": 0.8286581839213418, + "u_acc": 0.4048582995951417, + "t_acc": 0.39878542510121456, + "punct_acc": 0.49190283400809715, + "threshold_t": 0.014892883598804474, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9703314104739283, + "t": 0.9659653885307092, + "punct": 0.9995249406175772, + "u_acc": 0.9002375296912114, + "t_acc": 0.8859857482185273, + "punct_acc": 0.997624703087886, + "threshold_t": 0.01500327792018652, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.640708427781369, + "t": 0.5271483116406035, + "punct": 0.6959791053391053, + "u_acc": 0.0348, + "t_acc": 0.0732, + "punct_acc": 0.23, + "threshold_t": 0.0005820001242682338, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7115688844488844, + "t": 0.711720594960595, + "punct": 0.8182742857142857, + "u_acc": 0.226, + "t_acc": 0.2188, + "punct_acc": 0.4808, + "threshold_t": 0.013141724281013012, + "threshold_adj": 0.01 + } + }, + "hu": { + "opus100": { + "u": 0.9003104198668715, + "t": 0.9124839989759345, + "punct": 0.9581989247311827, + "u_acc": 0.6491935483870968, + "t_acc": 0.6733870967741935, + "punct_acc": 0.8225806451612904, + "threshold_t": 0.004249497316777706, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9428996598639455, + "t": 0.9443452380952382, + "punct": 0.9830357142857142, + "u_acc": 0.7857142857142857, + "t_acc": 0.7946428571428571, + "punct_acc": 0.9464285714285714, + "threshold_t": 0.013934662565588951, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6894852958152958, + "t": 0.7009136980666393, + "punct": 0.796150061050061, + "u_acc": 0.1156, + "t_acc": 0.1976, + "punct_acc": 0.408, + "threshold_t": 0.0020104493014514446, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7497035708735709, + "t": 0.7657426235855648, + "punct": 0.8734886291486291, + "u_acc": 0.2744, + "t_acc": 0.3404, + "punct_acc": 0.6148, + "threshold_t": 0.0017690772656351328, + "threshold_adj": 0.01 + } + }, + "hy": { + "opus100": { + "u": 0.8422017933976932, + "t": null, + "punct": null, + "u_acc": 0.510250569476082, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9664521664521665, + "t": 0.954890604890605, + "punct": 0.982110682110682, + "u_acc": 0.8918918918918919, + "t_acc": 0.8716216216216216, + "punct_acc": 0.9459459459459459, + "threshold_t": 0.04639922454953194, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6900074184295237, + "t": 0.6902829620488443, + "punct": 0.7824536507936507, + "u_acc": 0.144, + "t_acc": 0.1808, + "punct_acc": 0.3952, + "threshold_t": 0.004028676077723503, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7453316049676232, + "t": 0.7457495284933728, + "punct": 0.8368200746965453, + "u_acc": 0.2792, + "t_acc": 0.284, + "punct_acc": 0.5164, + "threshold_t": 0.008533341810107231, + "threshold_adj": 0.01 + } + }, + "id": { + "opus100": { + "u": 0.8949551131928181, + "t": 0.9001463700234192, + "punct": 0.9295765027322405, + "u_acc": 0.6475409836065574, + "t_acc": 0.6618852459016393, + "punct_acc": 0.7622950819672131, + "threshold_t": 0.006383171305060387, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9712000000000001, + "t": null, + "punct": null, + "u_acc": 0.9, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6768080977845684, + "t": 0.6851025691955104, + "punct": 0.7900387301587302, + "u_acc": 0.0848, + "t_acc": 0.1944, + "punct_acc": 0.4224, + "threshold_t": 0.0009660338400863111, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7366384873949581, + "t": 0.763811444437915, + "punct": 0.8711690476190476, + "u_acc": 0.2496, + "t_acc": 0.35, + "punct_acc": 0.6152, + "threshold_t": 0.0012099883751943707, + "threshold_adj": 0.01 + } + }, + "ig": { + "opus100": { + "u": 0.8240175681923255, + "t": 0.8202843273231624, + "punct": 0.8725728155339806, + "u_acc": 0.470873786407767, + "t_acc": 0.46116504854368934, + "punct_acc": 0.6140776699029126, + "threshold_t": 0.013676690869033337, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6130036630036629, + "t": 0.6032661782661782, + "punct": 0.6131868131868131, + "u_acc": 0.038461538461538464, + "t_acc": 0.15384615384615385, + "punct_acc": 0.0, + "threshold_t": 0.00447852211073041, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7076923076923077, + "t": 0.7217948717948719, + "punct": 0.7567765567765569, + "u_acc": 0.23076923076923078, + "t_acc": 0.15384615384615385, + "punct_acc": 0.38461538461538464, + "threshold_t": 0.08715179562568665, + "threshold_adj": 0.01 + } + }, + "is": { + "opus100": { + "u": 0.9254958321356711, + "t": 0.9283510587333526, + "punct": 0.9601609657947686, + "u_acc": 0.7404426559356136, + "t_acc": 0.7424547283702213, + "punct_acc": 0.8672032193158954, + "threshold_t": 0.003188732545822859, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.8984556086961052, + "t": 0.8928492505684126, + "punct": 0.9455207063430493, + "u_acc": 0.660977501939488, + "t_acc": 0.65244375484872, + "punct_acc": 0.8223429014740109, + "threshold_t": 0.02984493412077427, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7038814168585161, + "t": 0.6969662511647244, + "punct": 0.7945474372955289, + "u_acc": 0.1450381679389313, + "t_acc": 0.20610687022900764, + "punct_acc": 0.41475826972010177, + "threshold_t": 0.0013711093924939632, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7510844541378893, + "t": 0.7670835243354328, + "punct": 0.8517084696474009, + "u_acc": 0.2697201017811705, + "t_acc": 0.356234096692112, + "punct_acc": 0.5470737913486005, + "threshold_t": 0.0012404166627675295, + "threshold_adj": 0.009999999999999998 + } + }, + "it": { + "opus100": { + "u": 0.8930619559651818, + "t": 0.8616029388859086, + "punct": 0.9265685999951427, + "u_acc": 0.6391129032258065, + "t_acc": 0.5705645161290323, + "punct_acc": 0.7459677419354839, + "threshold_t": 0.001194305601529777, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9613636363636364, + "t": 0.9665873015873016, + "punct": 0.9897619047619047, + "u_acc": 0.875, + "t_acc": 0.8916666666666667, + "punct_acc": 0.9583333333333334, + "threshold_t": 0.006478204857558012, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6867250394050394, + "t": 0.6984212533871357, + "punct": 0.804948253968254, + "u_acc": 0.1148, + "t_acc": 0.202, + "punct_acc": 0.4328, + "threshold_t": 0.0011061977129429579, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7607810678210679, + "t": 0.7708966588966588, + "punct": 0.8771577777777778, + "u_acc": 0.3036, + "t_acc": 0.342, + "punct_acc": 0.6252, + "threshold_t": 0.003542883787304163, + "threshold_adj": 0.01 + } + }, + "ja": { + "ersatz": { + "u": 0.8782097670157372, + "t": 0.9080845771144279, + "punct": 0.9228855721393036, + "u_acc": 0.6343283582089553, + "t_acc": 0.7126865671641791, + "punct_acc": 0.7686567164179104, + "threshold_t": 0.09937432408332825, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.7797858099062916, + "t": 0.8400398129313792, + "punct": 0.885475234270415, + "u_acc": 0.3453815261044177, + "t_acc": 0.5301204819277109, + "punct_acc": 0.6566265060240963, + "threshold_t": 0.0004802313051186502, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9490196078431372, + "t": 0.9661764705882351, + "punct": 0.968627450980392, + "u_acc": 0.7867647058823529, + "t_acc": 0.8897058823529411, + "punct_acc": 0.8970588235294118, + "threshold_t": 0.09488753974437714, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.8346196825396827, + "t": 0.8676031746031746, + "punct": 0.9448133333333333, + "u_acc": 0.5008, + "t_acc": 0.59, + "punct_acc": 0.824, + "threshold_t": 0.003216678276658058, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.8289796825396825, + "t": 0.8652298412698414, + "punct": 0.9256647619047621, + "u_acc": 0.4832, + "t_acc": 0.5856, + "punct_acc": 0.7692, + "threshold_t": 0.002664644503965974, + "threshold_adj": 0.01 + } + }, + "jv": { + "ud": { + "u": 0.9536, + "t": null, + "punct": null, + "u_acc": 0.84, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "nllb": { + "u": 0.8274012543012544, + "t": 0.8329390476190476, + "punct": 0.8724780952380952, + "u_acc": 0.476, + "t_acc": 0.5008, + "punct_acc": 0.6116, + "threshold_t": 0.29006683826446533, + "threshold_adj": 0.01 + } + }, + "ka": { + "opus100": { + "u": 0.8545842157842157, + "t": 0.8681873015873016, + "punct": 0.9411428571428571, + "u_acc": 0.522, + "t_acc": 0.566, + "punct_acc": 0.786, + "threshold_t": 0.029384713619947433, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6807828460428461, + "t": 0.6816528583312113, + "punct": 0.7802353823953824, + "u_acc": 0.126, + "t_acc": 0.1996, + "punct_acc": 0.3856, + "threshold_t": 0.001499655656516552, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7071532067932068, + "t": 0.7014064660829367, + "punct": 0.794603492063492, + "u_acc": 0.2004, + "t_acc": 0.2048, + "punct_acc": 0.4164, + "threshold_t": 0.005463835783302784, + "threshold_adj": 0.01 + } + }, + "kk": { + "ersatz": { + "u": 0.9449212121212122, + "t": 0.923104761904762, + "punct": 0.9978666666666667, + "u_acc": 0.828, + "t_acc": 0.764, + "punct_acc": 0.992, + "threshold_t": 0.028192520141601562, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7871547792670787, + "t": 0.7887617581467848, + "punct": 0.8897579693034239, + "u_acc": 0.38636363636363635, + "t_acc": 0.38636363636363635, + "punct_acc": 0.6632231404958677, + "threshold_t": 0.008526571094989777, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9243901984359999, + "t": 0.9256386954860237, + "punct": 0.9282442748091603, + "u_acc": 0.767175572519084, + "t_acc": 0.7748091603053435, + "punct_acc": 0.7786259541984732, + "threshold_t": 0.008626041933894157, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7030083765196702, + "t": 0.7278443737633445, + "punct": 0.8283144834479536, + "u_acc": 0.14442162902121836, + "t_acc": 0.24845995893223818, + "punct_acc": 0.4839151266255989, + "threshold_t": 0.0013455207226797938, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7517710101899014, + "t": 0.7798758785290976, + "punct": 0.8762551198896168, + "u_acc": 0.28336755646817247, + "t_acc": 0.36413415468856947, + "punct_acc": 0.5913757700205339, + "threshold_t": 0.0012341352412477136, + "threshold_adj": 0.01 + } + }, + "km": { + "ersatz": { + "u": 0.8110367880706864, + "t": 0.9429378531073445, + "punct": 0.917171105730428, + "u_acc": 0.46271186440677964, + "t_acc": 0.8254237288135593, + "punct_acc": 0.7389830508474576, + "threshold_t": 0.598006546497345, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7608003451302421, + "t": 0.7662052037309769, + "punct": 0.8297349042709867, + "u_acc": 0.29690721649484536, + "t_acc": 0.30721649484536084, + "punct_acc": 0.4742268041237113, + "threshold_t": 0.07829278707504272, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.790297171500179, + "t": 0.7849087003222341, + "punct": 0.8596491228070174, + "u_acc": 0.39097744360902253, + "t_acc": 0.39097744360902253, + "punct_acc": 0.5714285714285714, + "threshold_t": 0.005412713624536991, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.8025778732545649, + "t": 0.8058360186179735, + "punct": 0.8558897243107769, + "u_acc": 0.41353383458646614, + "t_acc": 0.43609022556390975, + "punct_acc": 0.5789473684210527, + "threshold_t": 0.005412713624536991, + "threshold_adj": 0.01 + } + }, + "kn": { + "opus100": { + "u": 0.733270760704389, + "t": 0.7355106054221099, + "punct": 0.8228824273072061, + "u_acc": 0.3053097345132743, + "t_acc": 0.2831858407079646, + "punct_acc": 0.4778761061946903, + "threshold_t": 0.03961662948131561, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.42677347143335786, + "t": 0.5363872461859667, + "punct": 0.6252664002664001, + "u_acc": 0.024475524475524476, + "t_acc": 0.027972027972027972, + "punct_acc": 0.11888111888111888, + "threshold_t": 0.03477584943175316, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6688700188700188, + "t": 0.6747807747807747, + "punct": 0.7365523365523365, + "u_acc": 0.15734265734265734, + "t_acc": 0.15034965034965034, + "punct_acc": 0.2867132867132867, + "threshold_t": 0.012350098229944706, + "threshold_adj": 0.01 + } + }, + "ko": { + "opus100": { + "u": 0.7766146134567188, + "t": 0.7885866495178235, + "punct": 0.8461152882205515, + "u_acc": 0.3603238866396761, + "t_acc": 0.4008097165991903, + "punct_acc": 0.5242914979757085, + "threshold_t": 0.0013504737289622426, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9365664638391911, + "t": 0.9366497139224411, + "punct": 0.9935481185481186, + "u_acc": 0.784965034965035, + "t_acc": 0.7832167832167832, + "punct_acc": 0.9790209790209791, + "threshold_t": 0.008036931045353413, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6997168253968253, + "t": 0.7586817902668368, + "punct": 0.8457180952380954, + "u_acc": 0.1476, + "t_acc": 0.328, + "punct_acc": 0.5212, + "threshold_t": 0.0007878690375946462, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.718831544011544, + "t": 0.7393208835608837, + "punct": 0.8454190476190475, + "u_acc": 0.2084, + "t_acc": 0.2792, + "punct_acc": 0.5, + "threshold_t": 0.0027212544810026884, + "threshold_adj": 0.01 + } + }, + "ku": { + "opus100": { + "u": 0.808378200685893, + "t": 0.783021483021483, + "punct": 0.8793485793485792, + "u_acc": 0.4407484407484408, + "t_acc": 0.367983367983368, + "punct_acc": 0.6299376299376299, + "threshold_t": 0.17452502250671387, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5490761011369084, + "t": 0.5594416659990608, + "punct": 0.673648253968254, + "u_acc": 0.0656, + "t_acc": 0.0692, + "punct_acc": 0.1804, + "threshold_t": 0.0120484484359622, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.5923936865233748, + "t": 0.6016478876618613, + "punct": 0.6922889162299689, + "u_acc": 0.1288, + "t_acc": 0.134, + "punct_acc": 0.2268, + "threshold_t": 0.0120484484359622, + "threshold_adj": 0.01 + } + }, + "ky": { + "opus100": { + "u": 0.8299319727891156, + "t": 0.8422448979591837, + "punct": 0.9356823335394763, + "u_acc": 0.49523809523809526, + "t_acc": 0.5238095238095238, + "punct_acc": 0.7928571428571428, + "threshold_t": 0.003696126164868474, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7226579520697168, + "t": 0.7232252496958381, + "punct": 0.7930438842203549, + "u_acc": 0.19607843137254902, + "t_acc": 0.23529411764705882, + "punct_acc": 0.3137254901960784, + "threshold_t": 0.0006440089782699943, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7504357298474947, + "t": 0.7793990323402089, + "punct": 0.846451914098973, + "u_acc": 0.29411764705882354, + "t_acc": 0.3627450980392157, + "punct_acc": 0.5392156862745098, + "threshold_t": 0.002526831580325961, + "threshold_adj": 0.009999999999999998 + } + }, + "la": { + "ud": { + "u": 0.8217142857142855, + "t": 0.8710735930735931, + "punct": 0.9741587301587301, + "u_acc": 0.4514285714285714, + "t_acc": 0.5866666666666667, + "punct_acc": 0.9104761904761904, + "threshold_t": 0.0016094123711809516, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.8222222222222223, + "t": 0.4783549783549783, + "punct": 0.6666666666666666, + "u_acc": 0.3333333333333333, + "t_acc": 0.0, + "punct_acc": 0.0, + "threshold_t": 0.00015214571612887084, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.9333333333333332, + "t": 0.6476190476190476, + "punct": 0.5222222222222221, + "u_acc": 0.6666666666666666, + "t_acc": 0.0, + "punct_acc": 0.0, + "threshold_t": 0.00022153020836412907, + "threshold_adj": 0.01 + } + }, + "lt": { + "ersatz": { + "u": 0.9757333333333333, + "t": 0.9584, + "punct": 0.9845333333333333, + "u_acc": 0.916, + "t_acc": 0.864, + "punct_acc": 0.944, + "threshold_t": 0.0299698319286108, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8693253095470838, + "t": 0.8491671071414281, + "punct": 0.9155593958013313, + "u_acc": 0.6068548387096774, + "t_acc": 0.5645161290322581, + "punct_acc": 0.7237903225806451, + "threshold_t": 0.005509668495506048, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9503573749187785, + "t": 0.9464587394411955, + "punct": 0.9797270955165693, + "u_acc": 0.8421052631578947, + "t_acc": 0.8304093567251462, + "punct_acc": 0.9298245614035088, + "threshold_t": 0.01080250833183527, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6908921181742235, + "t": 0.69772620396564, + "punct": 0.7940434920634921, + "u_acc": 0.1236, + "t_acc": 0.2024, + "punct_acc": 0.3996, + "threshold_t": 0.001589826657436788, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7584143951473363, + "t": 0.779466827613391, + "punct": 0.8800137085137085, + "u_acc": 0.3012, + "t_acc": 0.3828, + "punct_acc": 0.628, + "threshold_t": 0.0010930800344794989, + "threshold_adj": 0.01 + } + }, + "lv": { + "ersatz": { + "u": 0.9610578574864289, + "t": 0.941537827252113, + "punct": 0.9890211640211641, + "u_acc": 0.8551587301587301, + "t_acc": 0.8095238095238095, + "punct_acc": 0.9623015873015873, + "threshold_t": 0.024003511294722557, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8896232683250939, + "t": 0.9049454264464407, + "punct": 0.9281609195402298, + "u_acc": 0.6308316430020284, + "t_acc": 0.6977687626774848, + "punct_acc": 0.7565922920892495, + "threshold_t": 0.047713153064250946, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9238963910605702, + "t": 0.9355918818605384, + "punct": 0.9809286898839138, + "u_acc": 0.7512437810945274, + "t_acc": 0.7827529021558872, + "punct_acc": 0.9303482587064676, + "threshold_t": 0.006449972279369831, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6982940836940837, + "t": 0.706082966410954, + "punct": 0.8253476190476191, + "u_acc": 0.1388, + "t_acc": 0.2144, + "punct_acc": 0.4844, + "threshold_t": 0.002091840608045459, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.751643896103896, + "t": 0.7709847796647796, + "punct": 0.8846942857142857, + "u_acc": 0.2764, + "t_acc": 0.3444, + "punct_acc": 0.6408, + "threshold_t": 0.002323202323168516, + "threshold_adj": 0.01 + } + }, + "mg": { + "opus100": { + "u": 0.9305732279416489, + "t": 0.934885290148448, + "punct": 0.9554077501445921, + "u_acc": 0.742914979757085, + "t_acc": 0.7773279352226721, + "punct_acc": 0.8441295546558705, + "threshold_t": 0.0832650363445282, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6600823045267488, + "t": 0.6073395684862009, + "punct": 0.7114050558495003, + "u_acc": 0.07407407407407407, + "t_acc": 0.1111111111111111, + "punct_acc": 0.2037037037037037, + "threshold_t": 0.00037749644252471626, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7489078822412154, + "t": 0.7647707231040564, + "punct": 0.8126396237507348, + "u_acc": 0.2777777777777778, + "t_acc": 0.37037037037037035, + "punct_acc": 0.46296296296296297, + "threshold_t": 0.0007148262811824679, + "threshold_adj": 0.01 + } + }, + "mk": { + "opus100": { + "u": 0.9114761904761903, + "t": 0.9195809523809525, + "punct": 0.9389333333333333, + "u_acc": 0.69, + "t_acc": 0.714, + "punct_acc": 0.776, + "threshold_t": 0.0029990701004862785, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6960530946830946, + "t": 0.695734502510397, + "punct": 0.811977142857143, + "u_acc": 0.1212, + "t_acc": 0.202, + "punct_acc": 0.4604, + "threshold_t": 0.0009471482480876148, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7540027594627595, + "t": 0.7730623790588498, + "punct": 0.8728986613386612, + "u_acc": 0.2824, + "t_acc": 0.3492, + "punct_acc": 0.6168, + "threshold_t": 0.001782175968401134, + "threshold_adj": 0.01 + } + }, + "ml": { + "opus100": { + "u": 0.8610728628800918, + "t": 0.8370434117422068, + "punct": 0.8817364696882769, + "u_acc": 0.5301204819277109, + "t_acc": 0.5080321285140562, + "punct_acc": 0.6204819277108434, + "threshold_t": 0.14216329157352448, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5203783332742746, + "t": 0.5729165741665742, + "punct": 0.6617966322331402, + "u_acc": 0.062169312169312166, + "t_acc": 0.056878306878306875, + "punct_acc": 0.1574074074074074, + "threshold_t": 0.01972765289247036, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6957759759347062, + "t": 0.6722769273628653, + "punct": 0.7619583018392544, + "u_acc": 0.17857142857142858, + "t_acc": 0.18518518518518517, + "punct_acc": 0.33465608465608465, + "threshold_t": 0.0010858962778002024, + "threshold_adj": 0.01 + } + }, + "mn": { + "opus100": { + "u": 0.7844920029080333, + "t": null, + "punct": null, + "u_acc": 0.3606870229007634, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7125196825396826, + "t": 0.7779661920741797, + "punct": 0.8977885714285714, + "u_acc": 0.1548, + "t_acc": 0.3744, + "punct_acc": 0.6812, + "threshold_t": 0.000560718763154, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7612256166056166, + "t": 0.8196447994063341, + "punct": 0.9193657142857145, + "u_acc": 0.2984, + "t_acc": 0.48, + "punct_acc": 0.75, + "threshold_t": 0.0006607499672099948, + "threshold_adj": 0.01 + }, + "nllb": { + "u": 0.902387124475112, + "t": 0.9000138705738705, + "punct": 0.9509149206349208, + "u_acc": 0.6828, + "t_acc": 0.6788, + "punct_acc": 0.838, + "threshold_t": 0.013891472481191158, + "threshold_adj": 0.01 + } + }, + "mr": { + "opus100": { + "u": 0.915937019969278, + "t": 0.8817972350230414, + "punct": 0.9448572708653353, + "u_acc": 0.7379032258064516, + "t_acc": 0.6451612903225806, + "punct_acc": 0.8044354838709677, + "threshold_t": 0.05551166087388992, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8861111111111111, + "t": 0.8861111111111111, + "punct": 1.0, + "u_acc": 0.6666666666666666, + "t_acc": 0.6666666666666666, + "punct_acc": 1.0, + "threshold_t": 0.0109453359618783, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6020215971610089, + "t": 0.5682218060909392, + "punct": 0.6194806926406927, + "u_acc": 0.04, + "t_acc": 0.0428, + "punct_acc": 0.136, + "threshold_t": 0.005541761871427298, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6864350826950828, + "t": 0.6552065714333827, + "punct": 0.7707029148629149, + "u_acc": 0.1572, + "t_acc": 0.1776, + "punct_acc": 0.3792, + "threshold_t": 0.0008000145899131894, + "threshold_adj": 0.01 + } + }, + "ms": { + "opus100": { + "u": 0.8491666541049258, + "t": 0.8490850027887065, + "punct": 0.9149256093700538, + "u_acc": 0.5123456790123457, + "t_acc": 0.5185185185185185, + "punct_acc": 0.7222222222222222, + "threshold_t": 0.014234498143196106, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6975478168780718, + "t": 0.6878195135750698, + "punct": 0.7893989476132333, + "u_acc": 0.1619047619047619, + "t_acc": 0.1982142857142857, + "punct_acc": 0.4089285714285714, + "threshold_t": 0.0029569296166300774, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7403077895882518, + "t": 0.7517354940176701, + "punct": 0.8570576728166015, + "u_acc": 0.2613095238095238, + "t_acc": 0.3273809523809524, + "punct_acc": 0.5607142857142857, + "threshold_t": 0.0020044376142323017, + "threshold_adj": 0.009999999999999998 + } + }, + "mt": { + "opus100": { + "u": 0.7932096085227783, + "t": 0.8720490036279509, + "punct": 0.908161721319616, + "u_acc": 0.44129554655870445, + "t_acc": 0.6174089068825911, + "punct_acc": 0.7327935222672065, + "threshold_t": 0.09421071410179138, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9015384615384614, + "t": 0.9037362637362637, + "punct": 0.951025641025641, + "u_acc": 0.7153846153846154, + "t_acc": 0.7230769230769231, + "punct_acc": 0.8307692307692308, + "threshold_t": 0.015889717265963554, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6413364413364414, + "t": 0.5833028083028082, + "punct": 0.6155677655677655, + "u_acc": 0.038461538461538464, + "t_acc": 0.038461538461538464, + "punct_acc": 0.07692307692307693, + "threshold_t": 0.0017662838799878955, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7041420118343196, + "t": 0.691025641025641, + "punct": 0.7743589743589744, + "u_acc": 0.2692307692307692, + "t_acc": 0.07692307692307693, + "punct_acc": 0.38461538461538464, + "threshold_t": 0.19546979665756226, + "threshold_adj": 0.01 + } + }, + "my": { + "opus100": { + "u": 0.7802761530584111, + "t": 0.7935483870967741, + "punct": 0.8693772401433691, + "u_acc": 0.3911290322580645, + "t_acc": 0.3870967741935484, + "punct_acc": 0.6189516129032258, + "threshold_t": 0.1403409093618393, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.8955427594627595, + "t": 0.8917803751803752, + "punct": 0.9362285714285714, + "u_acc": 0.6564, + "t_acc": 0.6472, + "punct_acc": 0.8052, + "threshold_t": 0.014233574271202087, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.8722156132756133, + "t": 0.8408819047619048, + "punct": 0.9283530158730158, + "u_acc": 0.594, + "t_acc": 0.5144, + "punct_acc": 0.78, + "threshold_t": 0.048226624727249146, + "threshold_adj": 0.01 + } + }, + "ne": { + "opus100": { + "u": 0.7886875398503305, + "t": 0.7855867646565321, + "punct": 0.8182920438734393, + "u_acc": 0.386892177589852, + "t_acc": 0.38054968287526425, + "punct_acc": 0.44820295983086683, + "threshold_t": 0.014382201246917248, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6747691069119639, + "t": 0.6773415559129844, + "punct": 0.7719663541092112, + "u_acc": 0.13320463320463322, + "t_acc": 0.2084942084942085, + "punct_acc": 0.3667953667953668, + "threshold_t": 0.0019402262987568974, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6822746215603357, + "t": 0.674194487684094, + "punct": 0.7880063737206594, + "u_acc": 0.1833976833976834, + "t_acc": 0.21428571428571427, + "punct_acc": 0.39768339768339767, + "threshold_t": 0.0022464487701654434, + "threshold_adj": 0.01 + } + }, + "nl": { + "opus100": { + "u": 0.9104412698412699, + "t": null, + "punct": null, + "u_acc": 0.678, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9077399110956157, + "t": 0.9100671140939599, + "punct": 0.9595078299776286, + "u_acc": 0.738255033557047, + "t_acc": 0.738255033557047, + "punct_acc": 0.8657718120805369, + "threshold_t": 0.014863362535834312, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.701529474969475, + "t": 0.7487962754892167, + "punct": 0.8611457142857144, + "u_acc": 0.1372, + "t_acc": 0.2932, + "punct_acc": 0.5924, + "threshold_t": 0.001353899366222322, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7455593162393163, + "t": 0.7882080866501919, + "punct": 0.9034109523809523, + "u_acc": 0.252, + "t_acc": 0.3768, + "punct_acc": 0.6952, + "threshold_t": 0.001340061309747398, + "threshold_adj": 0.01 + } + }, + "no": { + "opus100": { + "u": 0.9214573732718894, + "t": 0.9339896662477307, + "punct": 0.9545122887864823, + "u_acc": 0.7338709677419355, + "t_acc": 0.7520161290322581, + "punct_acc": 0.8346774193548387, + "threshold_t": 0.002115993294864893, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9520661157024792, + "t": 0.9656532861078315, + "punct": 0.9918044077134985, + "u_acc": 0.8450413223140496, + "t_acc": 0.8822314049586777, + "punct_acc": 0.9731404958677686, + "threshold_t": 0.002909543225541711, + "threshold_adj": 0.01 + } + }, + "pa": { + "opus100": { + "u": 0.7349466562581317, + "t": 0.7306648156033402, + "punct": 0.8137587822014052, + "u_acc": 0.26024590163934425, + "t_acc": 0.26434426229508196, + "punct_acc": 0.4426229508196721, + "threshold_t": 0.002816086867824197, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6221889221889222, + "t": 0.574810604522086, + "punct": 0.702195204322864, + "u_acc": 0.13829787234042554, + "t_acc": 0.1276595744680851, + "punct_acc": 0.2127659574468085, + "threshold_t": 0.0033891114871948957, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7359338061465722, + "t": 0.7059827760891592, + "punct": 0.7872340425531915, + "u_acc": 0.2765957446808511, + "t_acc": 0.2765957446808511, + "punct_acc": 0.32978723404255317, + "threshold_t": 0.0007667946629226208, + "threshold_adj": 0.01 + } + }, + "pl": { + "ersatz": { + "u": 0.9418706127869475, + "t": 0.9003035477139062, + "punct": 0.9743691899070385, + "u_acc": 0.8127490039840638, + "t_acc": 0.6892430278884463, + "punct_acc": 0.9123505976095617, + "threshold_t": 0.03214460238814354, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.8974750384024578, + "t": 0.9106182795698925, + "punct": 0.9538066436251921, + "u_acc": 0.6673387096774194, + "t_acc": 0.6754032258064516, + "punct_acc": 0.8185483870967742, + "threshold_t": 0.002397036412730813, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9339041753885668, + "t": 0.920045688366988, + "punct": 0.9728210417741102, + "u_acc": 0.7653429602888087, + "t_acc": 0.7364620938628159, + "punct_acc": 0.8971119133574007, + "threshold_t": 0.0028335493989288807, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6956676800976802, + "t": 0.7151130190511243, + "punct": 0.8140228571428572, + "u_acc": 0.126, + "t_acc": 0.2372, + "punct_acc": 0.4508, + "threshold_t": 0.0007515490869991481, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7461537085137085, + "t": 0.769615895868837, + "punct": 0.8838984704184705, + "u_acc": 0.262, + "t_acc": 0.342, + "punct_acc": 0.6408, + "threshold_t": 0.0016849649837240577, + "threshold_adj": 0.01 + } + }, + "ps": { + "ersatz": { + "u": 0.8777044155369887, + "t": 0.9335148722245497, + "punct": 0.9681818181818181, + "u_acc": 0.6231671554252199, + "t_acc": 0.7741935483870968, + "punct_acc": 0.8929618768328446, + "threshold_t": 0.08919066935777664, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.7603139251246156, + "t": 0.7655513133241417, + "punct": 0.8187506628486584, + "u_acc": 0.30734966592427615, + "t_acc": 0.33184855233853006, + "punct_acc": 0.4766146993318486, + "threshold_t": 0.0015340909594669938, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.675738616614529, + "t": 0.6604963427559428, + "punct": 0.7526242613833855, + "u_acc": 0.1386861313868613, + "t_acc": 0.1678832116788321, + "punct_acc": 0.35036496350364965, + "threshold_t": 0.002297863829880953, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6707391959216776, + "t": 0.6425243653345842, + "punct": 0.7536559547508452, + "u_acc": 0.16058394160583941, + "t_acc": 0.145985401459854, + "punct_acc": 0.32116788321167883, + "threshold_t": 0.0013841110048815608, + "threshold_adj": 0.01 + } + }, + "pt": { + "opus100": { + "u": 0.9293428793428793, + "t": 0.9211268263899842, + "punct": 0.9615031167662748, + "u_acc": 0.757085020242915, + "t_acc": 0.7145748987854251, + "punct_acc": 0.8481781376518218, + "threshold_t": 0.002588944509625435, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9449934768427919, + "t": 0.9447488584474886, + "punct": 0.9722602739726026, + "u_acc": 0.8184931506849316, + "t_acc": 0.815068493150685, + "punct_acc": 0.910958904109589, + "threshold_t": 0.00614231126382947, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6745786901986901, + "t": 0.7102251196629458, + "punct": 0.8246126984126985, + "u_acc": 0.0712, + "t_acc": 0.21, + "punct_acc": 0.4708, + "threshold_t": 0.0007137290667742491, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7366037118437119, + "t": 0.7661911830618642, + "punct": 0.8870933333333333, + "u_acc": 0.2372, + "t_acc": 0.3532, + "punct_acc": 0.6532, + "threshold_t": 0.0006967433728277683, + "threshold_adj": 0.01 + } + }, + "ro": { + "ersatz": { + "u": 0.9643523809523808, + "t": 0.9533428571428572, + "punct": 0.9846666666666666, + "u_acc": 0.876, + "t_acc": 0.848, + "punct_acc": 0.954, + "threshold_t": 0.01876607909798622, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8985040885040885, + "t": 0.9111255411255411, + "punct": 0.9431746031746031, + "u_acc": 0.6808080808080809, + "t_acc": 0.7090909090909091, + "punct_acc": 0.806060606060606, + "threshold_t": 0.0010548844002187252, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.8428286120301329, + "t": 0.8836899686709572, + "punct": 0.9721166032953105, + "u_acc": 0.5057034220532319, + "t_acc": 0.623574144486692, + "punct_acc": 0.9049429657794676, + "threshold_t": 0.03254372999072075, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6904126569337096, + "t": 0.6983531785173891, + "punct": 0.7960514285714285, + "u_acc": 0.1268, + "t_acc": 0.2024, + "punct_acc": 0.4184, + "threshold_t": 0.0015166208613663912, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7404434905445433, + "t": 0.7623874636474637, + "punct": 0.8729109430438843, + "u_acc": 0.2552, + "t_acc": 0.3388, + "punct_acc": 0.6144, + "threshold_t": 0.001227794447913766, + "threshold_adj": 0.01 + } + }, + "ru": { + "ersatz": { + "u": 0.9549731182795698, + "t": 0.9544354838709677, + "punct": 0.9938172043010752, + "u_acc": 0.8588709677419355, + "t_acc": 0.8588709677419355, + "punct_acc": 0.9798387096774194, + "threshold_t": 0.010372277349233627, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8615822474429032, + "t": null, + "punct": null, + "u_acc": 0.5348360655737705, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.878946608946609, + "t": 0.8631529581529581, + "punct": 0.9396969696969698, + "u_acc": 0.6272727272727273, + "t_acc": 0.5863636363636363, + "punct_acc": 0.7954545454545454, + "threshold_t": 0.05121195688843727, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6898352380952382, + "t": 0.7149715528915529, + "punct": 0.8122425396825396, + "u_acc": 0.1028, + "t_acc": 0.1912, + "punct_acc": 0.4564, + "threshold_t": 0.002826478099450469, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.74016, + "t": 0.767975044955045, + "punct": 0.8770638095238095, + "u_acc": 0.2404, + "t_acc": 0.3432, + "punct_acc": 0.6288, + "threshold_t": 0.001432988210581243, + "threshold_adj": 0.01 + } + }, + "si": { + "opus100": { + "u": 0.8427195340501792, + "t": 0.8416378648233487, + "punct": 0.880453149001536, + "u_acc": 0.5100806451612904, + "t_acc": 0.5, + "punct_acc": 0.6169354838709677, + "threshold_t": 0.01822473853826523, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6359698871326778, + "t": 0.6403995659809614, + "punct": 0.7518272425249171, + "u_acc": 0.08527131782945736, + "t_acc": 0.10077519379844961, + "punct_acc": 0.3333333333333333, + "threshold_t": 0.00975098367780447, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6484199693502019, + "t": 0.6518160564672192, + "punct": 0.7348406546080966, + "u_acc": 0.10852713178294573, + "t_acc": 0.12403100775193798, + "punct_acc": 0.3023255813953488, + "threshold_t": 0.00975098367780447, + "threshold_adj": 0.01 + } + }, + "sk": { + "opus100": { + "u": 0.9023655332123074, + "t": 0.9031047805241353, + "punct": 0.9619911674347158, + "u_acc": 0.6915322580645161, + "t_acc": 0.6895161290322581, + "punct_acc": 0.8729838709677419, + "threshold_t": 0.009030788205564022, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9270440251572327, + "t": 0.9123270440251572, + "punct": 0.968805031446541, + "u_acc": 0.769811320754717, + "t_acc": 0.7283018867924528, + "punct_acc": 0.9169811320754717, + "threshold_t": 0.013241126202046871, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.7068467826086957, + "t": 0.7196855233655234, + "punct": 0.8193914285714285, + "u_acc": 0.1544, + "t_acc": 0.2284, + "punct_acc": 0.4712, + "threshold_t": 0.0015598528552800417, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7481334125513439, + "t": 0.764362846121737, + "punct": 0.8817363987703118, + "u_acc": 0.27, + "t_acc": 0.346, + "punct_acc": 0.6412, + "threshold_t": 0.0012362783309072256, + "threshold_adj": 0.01 + } + }, + "sl": { + "opus100": { + "u": 0.8981098999171288, + "t": 0.9000223114680946, + "punct": 0.9533467202141901, + "u_acc": 0.6506024096385542, + "t_acc": 0.6405622489959839, + "punct_acc": 0.8092369477911646, + "threshold_t": 0.0023772097192704678, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.929404761904762, + "t": 0.929404761904762, + "punct": 0.9853124999999998, + "u_acc": 0.771875, + "t_acc": 0.771875, + "punct_acc": 0.95625, + "threshold_t": 0.00999584048986435, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7149514463314462, + "t": 0.7201571945701358, + "punct": 0.8195923809523809, + "u_acc": 0.192, + "t_acc": 0.224, + "punct_acc": 0.4748, + "threshold_t": 0.005659130401909351, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7630048373848375, + "t": 0.7707302115662116, + "punct": 0.8856460317460318, + "u_acc": 0.3068, + "t_acc": 0.3424, + "punct_acc": 0.6444, + "threshold_t": 0.0021621347405016422, + "threshold_adj": 0.01 + } + }, + "sq": { + "opus100": { + "u": 0.9177792171694611, + "t": 0.9150401540645443, + "punct": 0.9455945928506904, + "u_acc": 0.7134146341463414, + "t_acc": 0.709349593495935, + "punct_acc": 0.8272357723577236, + "threshold_t": 0.015589025802910328, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9555555555555555, + "t": null, + "punct": null, + "u_acc": 0.8666666666666667, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6809482228882229, + "t": 0.7040733823868266, + "punct": 0.7954030303030303, + "u_acc": 0.078, + "t_acc": 0.19, + "punct_acc": 0.4164, + "threshold_t": 0.0012518084840849042, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7368758026768554, + "t": 0.7573137116374236, + "punct": 0.8755188455988456, + "u_acc": 0.2452, + "t_acc": 0.328, + "punct_acc": 0.6208, + "threshold_t": 0.0009632417350076139, + "threshold_adj": 0.01 + } + }, + "sr": { + "opus100": { + "u": 0.9299483648881239, + "t": 0.9341237967743993, + "punct": 0.9597819850831898, + "u_acc": 0.7429718875502008, + "t_acc": 0.7449799196787149, + "punct_acc": 0.8493975903614458, + "threshold_t": 0.003160073421895504, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9830769230769231, + "t": 0.977948717948718, + "punct": 0.9923076923076923, + "u_acc": 0.9307692307692308, + "t_acc": 0.9153846153846154, + "punct_acc": 0.9769230769230769, + "threshold_t": 0.015575236640870571, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6943886131646132, + "t": 0.6976331637665815, + "punct": 0.816083492063492, + "u_acc": 0.1376, + "t_acc": 0.1944, + "punct_acc": 0.4612, + "threshold_t": 0.0021513227839022875, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7564041767427975, + "t": 0.7707585379371586, + "punct": 0.8862838095238096, + "u_acc": 0.2956, + "t_acc": 0.35, + "punct_acc": 0.6548, + "threshold_t": 0.003059935290366411, + "threshold_adj": 0.01 + } + }, + "sv": { + "opus100": { + "u": 0.921113023522662, + "t": 0.9238382099827883, + "punct": 0.9610441767068274, + "u_acc": 0.7228915662650602, + "t_acc": 0.7168674698795181, + "punct_acc": 0.8353413654618473, + "threshold_t": 0.002073788084089756, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.928719084533038, + "t": 0.9332774890914426, + "punct": 0.9649870801033592, + "u_acc": 0.7635658914728682, + "t_acc": 0.7790697674418605, + "punct_acc": 0.8875968992248062, + "threshold_t": 0.002278465311974287, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6940012698412699, + "t": 0.684278354939308, + "punct": 0.8275320634920635, + "u_acc": 0.1228, + "t_acc": 0.2104, + "punct_acc": 0.4956, + "threshold_t": 0.00047577242366969585, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7445574603174603, + "t": 0.7500449897680728, + "punct": 0.8835571428571429, + "u_acc": 0.2584, + "t_acc": 0.322, + "punct_acc": 0.6408, + "threshold_t": 0.0004803015908692032, + "threshold_adj": 0.01 + } + }, + "ta": { + "ersatz": { + "u": 0.9471545276326153, + "t": 0.9377158034528553, + "punct": 0.9803452855245685, + "u_acc": 0.796812749003984, + "t_acc": 0.8007968127490039, + "punct_acc": 0.9203187250996016, + "threshold_t": 0.10213625431060791, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.7764224122760708, + "t": 0.8000709769002452, + "punct": 0.8141308555942702, + "u_acc": 0.37601626016260165, + "t_acc": 0.4369918699186992, + "punct_acc": 0.4532520325203252, + "threshold_t": 0.0627179890871048, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9800000000000001, + "t": 0.9755555555555556, + "punct": 0.9888888888888889, + "u_acc": 0.9, + "t_acc": 0.9, + "punct_acc": 0.9666666666666667, + "threshold_t": 0.028134286403656006, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.48094809931028554, + "t": 0.5515180758115655, + "punct": 0.6465124555160142, + "u_acc": 0.050533807829181494, + "t_acc": 0.04199288256227758, + "punct_acc": 0.14590747330960854, + "threshold_t": 0.022067027166485786, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7007068968990677, + "t": 0.6942182015149405, + "punct": 0.7849449245890526, + "u_acc": 0.21779359430604983, + "t_acc": 0.23558718861209965, + "punct_acc": 0.39644128113879, + "threshold_t": 0.003350684652104974, + "threshold_adj": 0.009999999999999998 + } + }, + "te": { + "opus100": { + "u": 0.8110106899902818, + "t": 0.8087074829931973, + "punct": 0.8619533527696793, + "u_acc": 0.463265306122449, + "t_acc": 0.4489795918367347, + "punct_acc": 0.6020408163265306, + "threshold_t": 0.023087961599230766, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5385427511124339, + "t": 0.5962825358595751, + "punct": 0.6967740634659064, + "u_acc": 0.061933534743202415, + "t_acc": 0.0649546827794562, + "punct_acc": 0.2280966767371601, + "threshold_t": 0.023867562413215637, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6917005451748655, + "t": 0.6855312663998231, + "punct": 0.7679953396720768, + "u_acc": 0.18429003021148035, + "t_acc": 0.2084592145015106, + "punct_acc": 0.3580060422960725, + "threshold_t": 0.0027218549512326717, + "threshold_adj": 0.009999999999999998 + } + }, + "tg": { + "opus100": { + "u": 0.8432628059134083, + "t": 0.8369669152801682, + "punct": 0.906476700452604, + "u_acc": 0.5120481927710844, + "t_acc": 0.4839357429718876, + "punct_acc": 0.6947791164658634, + "threshold_t": 0.10495132952928543, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6913135110503531, + "t": 0.7326158344579398, + "punct": 0.8311403508771928, + "u_acc": 0.09210526315789473, + "t_acc": 0.27631578947368424, + "punct_acc": 0.4868421052631579, + "threshold_t": 0.0009544224594719708, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7776315789473685, + "t": 0.8169381787802841, + "punct": 0.8807017543859651, + "u_acc": 0.34210526315789475, + "t_acc": 0.4605263157894737, + "punct_acc": 0.6447368421052632, + "threshold_t": 0.0017570515628904104, + "threshold_adj": 0.01 + } + }, + "th": { + "opus100": { + "u": 0.7536142084626932, + "t": 0.7678502193653708, + "punct": 0.799570306236973, + "u_acc": 0.24646464646464647, + "t_acc": 0.296969696969697, + "punct_acc": 0.4161616161616162, + "threshold_t": 0.03527548536658287, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.7559555555555555, + "t": null, + "punct": null, + "u_acc": 0.2, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5791199791301368, + "t": 0.7056715253855192, + "punct": 0.7666969408369408, + "u_acc": 0.0944, + "t_acc": 0.2296, + "punct_acc": 0.3448, + "threshold_t": 0.10469211637973785, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.5792567488975031, + "t": 0.7027966588577116, + "punct": 0.7659089466089466, + "u_acc": 0.0924, + "t_acc": 0.2248, + "punct_acc": 0.3536, + "threshold_t": 0.10916899144649506, + "threshold_adj": 0.01 + } + }, + "tr": { + "ersatz": { + "u": 0.9350493920972645, + "t": 0.9342029719689293, + "punct": 0.981477963525836, + "u_acc": 0.7632978723404256, + "t_acc": 0.7672872340425532, + "punct_acc": 0.9348404255319149, + "threshold_t": 0.01465278584510088, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8904954694428378, + "t": 0.9102891260785997, + "punct": 0.9452123899492322, + "u_acc": 0.6417004048582996, + "t_acc": 0.6902834008097166, + "punct_acc": 0.8137651821862348, + "threshold_t": 0.0016057892935350537, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.912, + "t": 0.9047272727272727, + "punct": 0.9842424242424241, + "u_acc": 0.7127272727272728, + "t_acc": 0.6909090909090909, + "punct_acc": 0.9381818181818182, + "threshold_t": 0.011707439087331295, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6875467821067821, + "t": 0.7111565906608013, + "punct": 0.8287714285714286, + "u_acc": 0.0984, + "t_acc": 0.2196, + "punct_acc": 0.4928, + "threshold_t": 0.0010664652800187469, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7354191053391054, + "t": 0.7546382364268298, + "punct": 0.8795870418470418, + "u_acc": 0.2388, + "t_acc": 0.314, + "punct_acc": 0.624, + "threshold_t": 0.0015449285274371505, + "threshold_adj": 0.01 + } + }, + "uk": { + "opus100": { + "u": 0.902122776821572, + "t": 0.90419774335437, + "punct": 0.9433065595716198, + "u_acc": 0.6767068273092369, + "t_acc": 0.678714859437751, + "punct_acc": 0.7971887550200804, + "threshold_t": 0.00900915265083313, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9320365646258504, + "t": 0.9326318027210885, + "punct": 0.9747023809523808, + "u_acc": 0.7767857142857143, + "t_acc": 0.7767857142857143, + "punct_acc": 0.9285714285714286, + "threshold_t": 0.008841302245855331, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6864872582972583, + "t": 0.6933795201015015, + "punct": 0.8081711111111112, + "u_acc": 0.11, + "t_acc": 0.1928, + "punct_acc": 0.4376, + "threshold_t": 0.0013080823700875044, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7510851370851371, + "t": 0.777927502780444, + "punct": 0.8802225396825397, + "u_acc": 0.2756, + "t_acc": 0.3692, + "punct_acc": 0.606, + "threshold_t": 0.0012371470220386982, + "threshold_adj": 0.01 + } + }, + "ur": { + "opus100": { + "u": 0.7433607588268605, + "t": 0.7382244050676253, + "punct": 0.7880801049233254, + "u_acc": 0.3156779661016949, + "t_acc": 0.3135593220338983, + "punct_acc": 0.3919491525423729, + "threshold_t": 0.006838519591838121, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9642501776830135, + "t": 0.973134328358209, + "punct": 0.9932835820895521, + "u_acc": 0.8805970149253731, + "t_acc": 0.8955223880597015, + "punct_acc": 0.9776119402985075, + "threshold_t": 0.05981902778148651, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6775175567597269, + "t": 0.6622261842982843, + "punct": 0.7783867525645531, + "u_acc": 0.15159301130524153, + "t_acc": 0.1855087358684481, + "punct_acc": 0.37564234326824253, + "threshold_t": 0.001783285872079432, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7042760491025408, + "t": 0.7015243831261605, + "punct": 0.7912646135410781, + "u_acc": 0.2199383350462487, + "t_acc": 0.22199383350462487, + "punct_acc": 0.4090441932168551, + "threshold_t": 0.00599337462335825, + "threshold_adj": 0.01 + } + }, + "uz": { + "opus100": { + "u": 0.8235989633948817, + "t": 0.8302818270165209, + "punct": 0.882108843537415, + "u_acc": 0.37551020408163266, + "t_acc": 0.4020408163265306, + "punct_acc": 0.610204081632653, + "threshold_t": 0.04067651182413101, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6993972272453286, + "t": 0.7308675384624752, + "punct": 0.8213599223092893, + "u_acc": 0.1339662447257384, + "t_acc": 0.26476793248945146, + "punct_acc": 0.46835443037974683, + "threshold_t": 0.0005763447261415422, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7603657594163923, + "t": 0.7807745934328213, + "punct": 0.8658220998410873, + "u_acc": 0.29535864978902954, + "t_acc": 0.3744725738396624, + "punct_acc": 0.5864978902953587, + "threshold_t": 0.0014064916176721454, + "threshold_adj": 0.01 + } + }, + "vi": { + "opus100": { + "u": 0.916196355085244, + "t": 0.9174540822688972, + "punct": 0.9407407407407409, + "u_acc": 0.720164609053498, + "t_acc": 0.7057613168724279, + "punct_acc": 0.7942386831275721, + "threshold_t": 0.0020589306950569153, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.907904761904762, + "t": 0.9115000000000001, + "punct": 0.9773333333333334, + "u_acc": 0.675, + "t_acc": 0.7, + "punct_acc": 0.93, + "threshold_t": 0.04651244357228279, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6604281620340443, + "t": 0.6528622184074276, + "punct": 0.7631561416361416, + "u_acc": 0.0732, + "t_acc": 0.1348, + "punct_acc": 0.35, + "threshold_t": 0.002394621493294835, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7370065867465868, + "t": 0.7446608891875388, + "punct": 0.8562139682539682, + "u_acc": 0.2544, + "t_acc": 0.2936, + "punct_acc": 0.5672, + "threshold_t": 0.0035323884803801775, + "threshold_adj": 0.01 + } + }, + "xh": { + "opus100": { + "u": 0.876827702035171, + "t": 0.8585943175263988, + "punct": 0.8780082987551867, + "u_acc": 0.6099585062240664, + "t_acc": 0.578838174273859, + "punct_acc": 0.6120331950207469, + "threshold_t": 0.005200718995183706, + "threshold_adj": 0.01 + } + }, + "yi": { + "opus100": { + "u": 0.7138826690550828, + "t": 0.7179728317659353, + "punct": 0.8316912972085385, + "u_acc": 0.20376175548589343, + "t_acc": 0.21630094043887146, + "punct_acc": 0.45454545454545453, + "threshold_t": 0.008654620498418808, + "threshold_adj": 0.01 + } + }, + "yo": { + "opus100": { + "u": 0.7919615770085053, + "t": null, + "punct": null, + "u_acc": 0.38993174061433444, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.8486309523809524, + "t": null, + "punct": null, + "u_acc": 0.4875, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "nllb": { + "u": 0.8159989138931243, + "t": 0.8761993650793651, + "punct": 0.9116971428571429, + "u_acc": 0.464, + "t_acc": 0.614, + "punct_acc": 0.73, + "threshold_t": 0.15062545239925385, + "threshold_adj": 0.01 + } + }, + "zh": { + "ersatz": { + "u": 0.9598666666666665, + "t": 0.9638666666666666, + "punct": 0.9647333333333333, + "u_acc": 0.842, + "t_acc": 0.876, + "punct_acc": 0.878, + "threshold_t": 0.026914825662970543, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8747101657564433, + "t": 0.8519625690651847, + "punct": 0.8876401264731244, + "u_acc": 0.6096579476861167, + "t_acc": 0.5492957746478874, + "punct_acc": 0.6519114688128773, + "threshold_t": 0.003753045340999961, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.9872000000000001, + "t": 0.9413333333333332, + "punct": 0.9862095238095238, + "u_acc": 0.936, + "t_acc": 0.824, + "punct_acc": 0.96, + "threshold_t": 0.09598257392644882, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6805050220153872, + "t": 0.6687488693164902, + "punct": 0.7692885347623747, + "u_acc": 0.12142152023692004, + "t_acc": 0.12783810463968412, + "punct_acc": 0.3588351431391905, + "threshold_t": 0.005004240665584803, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6823923909807423, + "t": 0.6677353495468007, + "punct": 0.7693638186974809, + "u_acc": 0.13228035538005922, + "t_acc": 0.13524185587364265, + "punct_acc": 0.34501480750246794, + "threshold_t": 0.004870083183050156, + "threshold_adj": 0.009999999999999998 + } + }, + "zu": { + "opus100": { + "u": 0.7740130240130242, + "t": 0.8164224664224665, + "punct": 0.9109788359788359, + "u_acc": 0.3311965811965812, + "t_acc": 0.4423076923076923, + "punct_acc": 0.7072649572649573, + "threshold_t": 0.0011468158336356282, + "threshold_adj": 0.01 + } + }, + "tr-de_TR": {}, + "tr-de_DE": {}, + "es-en_ES": {}, + "es-en_EN": {}, + "vi-en_VI": {}, + "vi-en_EN": {}, + "en-de_EN": {}, + "en-de_DE": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/wtp-12l_tweets.json b/wtpsplit/evaluation/evaluation_results/short/wtp-12l_tweets.json new file mode 100644 index 00000000..a5be1878 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/wtp-12l_tweets.json @@ -0,0 +1,180 @@ +{ + "af": {}, + "am": {}, + "ar": {}, + "az": {}, + "be": {}, + "bg": {}, + "bn": {}, + "ca": {}, + "ceb": {}, + "cs": {}, + "cy": {}, + "da": {}, + "de": {}, + "el": {}, + "en": {}, + "eo": {}, + "es": {}, + "et": { + "short-sequences": { + "u": 0.8829125840746824, + "t": 0.8855245017115672, + "punct": 0.9079843970929384, + "acc_u": 0.4433497536945813, + "acc_t": 0.4482758620689655, + "acc_punct": 0.49261083743842365 + }, + "short-sequences-corrupted-asr": { + "u": 0.6171645538960704, + "t": 0.6602964233616042, + "punct": 0.7486856297307082, + "acc_u": 0.06403940886699508, + "acc_t": 0.04926108374384237, + "acc_punct": 0.14285714285714285 + } + }, + "eu": {}, + "fa": {}, + "fi": {}, + "fr": {}, + "fy": {}, + "ga": {}, + "gd": {}, + "gl": {}, + "gu": {}, + "ha": {}, + "he": {}, + "hi": {}, + "hu": {}, + "hy": {}, + "id": {}, + "ig": {}, + "is": {}, + "it": {}, + "ja": {}, + "jv": {}, + "ka": {}, + "kk": {}, + "km": {}, + "kn": {}, + "ko": {}, + "ku": {}, + "ky": {}, + "la": {}, + "lt": {}, + "lv": {}, + "mg": {}, + "mk": {}, + "ml": {}, + "mn": {}, + "mr": {}, + "ms": {}, + "mt": {}, + "my": {}, + "ne": {}, + "nl": {}, + "no": {}, + "pa": {}, + "pl": {}, + "ps": {}, + "pt": {}, + "ro": {}, + "ru": {}, + "si": {}, + "sk": {}, + "sl": { + "short-sequences": { + "u": 0.9085448398131684, + "t": 0.9079413245194037, + "punct": 0.9398888858156581, + "acc_u": 0.7078445747800587, + "acc_t": 0.7041788856304986, + "acc_punct": 0.8013196480938416 + }, + "short-sequences-corrupted-asr": { + "u": 0.6414583936736389, + "t": 0.5854873362034304, + "punct": 0.7059886002083304, + "acc_u": 0.17045454545454544, + "acc_t": 0.10557184750733138, + "acc_punct": 0.25549853372434017 + } + }, + "sq": {}, + "sr": { + "short-sequences": { + "u": 0.9172517297517299, + "t": 0.9172517297517299, + "punct": 0.9489560786435787, + "acc_u": 0.7135416666666666, + "acc_t": 0.7135416666666666, + "acc_punct": 0.8229166666666666 + }, + "short-sequences-corrupted-asr": { + "u": 0.6433405425592925, + "t": 0.605067551949703, + "punct": 0.7221538299663299, + "acc_u": 0.125, + "acc_t": 0.07291666666666667, + "acc_punct": 0.23958333333333334 + } + }, + "sv": {}, + "ta": {}, + "te": {}, + "tg": {}, + "th": {}, + "tr": {}, + "uk": {}, + "ur": {}, + "uz": {}, + "vi": {}, + "xh": {}, + "yi": {}, + "yo": {}, + "zh": {}, + "zu": {}, + "tr-de_TR": {}, + "tr-de_DE": {}, + "es-en_ES": {}, + "es-en_EN": {}, + "vi-en_VI": {}, + "vi-en_EN": {}, + "en-de_EN": { + "short-sequences": { + "u": 0.8575288124071063, + "t": 0.8717474920460222, + "punct": 0.9640887802016966, + "acc_u": 0.4490644490644491, + "acc_t": 0.49480249480249483, + "acc_punct": 0.8108108108108109 + }, + "short-sequences-corrupted-asr": { + "u": 0.5723723655417591, + "t": 0.5674015324486495, + "punct": 0.6928170561931135, + "acc_u": 0.08316008316008316, + "acc_t": 0.06444906444906445, + "acc_punct": 0.13305613305613306 + } + }, + "en-de_DE": { + "short-sequences": { + "u": 0.8497220197841987, + "t": 0.8627792628885667, + "punct": 0.9597120673583887, + "acc_u": 0.42411642411642414, + "acc_t": 0.4698544698544699, + "acc_punct": 0.7837837837837838 + }, + "short-sequences-corrupted-asr": { + "u": 0.589604095022775, + "t": 0.5967495537073375, + "punct": 0.7116856667231113, + "acc_u": 0.079002079002079, + "acc_t": 0.058212058212058215, + "acc_punct": 0.1600831600831601 + } + } +} \ No newline at end of file diff --git a/wtpsplit/evaluation/evaluation_results/short/wtp-3l.json b/wtpsplit/evaluation/evaluation_results/short/wtp-3l.json new file mode 100644 index 00000000..bdf42743 --- /dev/null +++ b/wtpsplit/evaluation/evaluation_results/short/wtp-3l.json @@ -0,0 +1,3350 @@ +{ + "af": { + "opus100": { + "u": 0.7804082740033152, + "t": null, + "punct": null, + "u_acc": 0.371900826446281, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.986522911051213, + "t": null, + "punct": null, + "u_acc": 0.9433962264150944, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6871005516222908, + "t": null, + "punct": null, + "u_acc": 0.18461538461538463, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7551066711066711, + "t": null, + "punct": null, + "u_acc": 0.2953846153846154, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "am": { + "opus100": { + "u": 0.662516076070293, + "t": null, + "punct": null, + "u_acc": 0.1646586345381526, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6356887036574537, + "t": null, + "punct": null, + "u_acc": 0.0703125, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6452876984126985, + "t": null, + "punct": null, + "u_acc": 0.125, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ar": { + "ersatz": { + "u": 0.8941193853427896, + "t": null, + "punct": null, + "u_acc": 0.6382978723404256, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7873603081434407, + "t": null, + "punct": null, + "u_acc": 0.3815261044176707, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8708496732026143, + "t": null, + "punct": null, + "u_acc": 0.6058823529411764, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6453611669032722, + "t": null, + "punct": null, + "u_acc": 0.06, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6666968837698249, + "t": null, + "punct": null, + "u_acc": 0.1388, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "az": { + "opus100": { + "u": 0.7925737582364087, + "t": null, + "punct": null, + "u_acc": 0.3112449799196787, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6787116777365004, + "t": null, + "punct": null, + "u_acc": 0.07033096926713948, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7220618034447822, + "t": null, + "punct": null, + "u_acc": 0.1979905437352246, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "be": { + "opus100": { + "u": 0.7232888406004495, + "t": null, + "punct": null, + "u_acc": 0.3034623217922607, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9232430518675873, + "t": null, + "punct": null, + "u_acc": 0.7360594795539034, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.6717945764668671, + "t": null, + "punct": null, + "u_acc": 0.11291369240752758, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7483797837464288, + "t": null, + "punct": null, + "u_acc": 0.2835820895522388, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "bg": { + "opus100": { + "u": 0.943261125425454, + "t": null, + "punct": null, + "u_acc": 0.7955911823647295, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9671445639187576, + "t": null, + "punct": null, + "u_acc": 0.8924731182795699, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6883778932178933, + "t": null, + "punct": null, + "u_acc": 0.1224, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7476498501498501, + "t": null, + "punct": null, + "u_acc": 0.284, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "bn": { + "opus100": { + "u": 0.8440725159035019, + "t": null, + "punct": null, + "u_acc": 0.5150905432595574, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 1.0, + "t": null, + "punct": null, + "u_acc": 1.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.5280338384423084, + "t": null, + "punct": null, + "u_acc": 0.023846153846153847, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6775013546031645, + "t": null, + "punct": null, + "u_acc": 0.15615384615384614, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "ca": { + "opus100": { + "u": 0.9218259991079463, + "t": null, + "punct": null, + "u_acc": 0.7545638945233266, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9835226101459867, + "t": null, + "punct": null, + "u_acc": 0.9437229437229437, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6757361904761905, + "t": null, + "punct": null, + "u_acc": 0.0652, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7418190476190477, + "t": null, + "punct": null, + "u_acc": 0.2564, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ceb": { + "ud": { + "u": 0.9957446808510638, + "t": null, + "punct": null, + "u_acc": 0.9787234042553191, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.6352433281004709, + "t": null, + "punct": null, + "u_acc": 0.14285714285714285, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7095238095238096, + "t": null, + "punct": null, + "u_acc": 0.14285714285714285, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "nllb": { + "u": 0.8373864602064601, + "t": null, + "punct": null, + "u_acc": 0.5096, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "cs": { + "ersatz": { + "u": 0.9520429159318048, + "t": null, + "punct": null, + "u_acc": 0.8402777777777778, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.9039193642852179, + "t": null, + "punct": null, + "u_acc": 0.6788617886178862, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9288431293557475, + "t": null, + "punct": null, + "u_acc": 0.7661671924290221, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6635738195138196, + "t": null, + "punct": null, + "u_acc": 0.0836, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7352116483516484, + "t": null, + "punct": null, + "u_acc": 0.252, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "cy": { + "opus100": { + "u": 0.7246932834269079, + "t": null, + "punct": null, + "u_acc": 0.2052401746724891, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9883953581432573, + "t": null, + "punct": null, + "u_acc": 0.957983193277311, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "da": { + "opus100": { + "u": 0.9149337557603686, + "t": null, + "punct": null, + "u_acc": 0.7076612903225806, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9317122593718338, + "t": null, + "punct": null, + "u_acc": 0.75177304964539, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6729949206349206, + "t": null, + "punct": null, + "u_acc": 0.0432, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7375582106782107, + "t": null, + "punct": null, + "u_acc": 0.2356, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "de": { + "ersatz": { + "u": 0.9390101186435199, + "t": null, + "punct": null, + "u_acc": 0.7678207739307535, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.849109996894807, + "t": null, + "punct": null, + "u_acc": 0.5084388185654009, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9449193338537603, + "t": null, + "punct": null, + "u_acc": 0.8073770491803278, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6977131202131203, + "t": null, + "punct": null, + "u_acc": 0.178, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7411377666777668, + "t": null, + "punct": null, + "u_acc": 0.2712, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "el": { + "opus100": { + "u": 0.9380601772168038, + "t": null, + "punct": null, + "u_acc": 0.7751004016064257, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.970342522974102, + "t": null, + "punct": null, + "u_acc": 0.9035087719298246, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6642945432345433, + "t": null, + "punct": null, + "u_acc": 0.0708, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7359020290820292, + "t": null, + "punct": null, + "u_acc": 0.2396, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "en": { + "ersatz": { + "u": 0.9679862712572993, + "t": null, + "punct": null, + "u_acc": 0.8779854620976116, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.929800307219662, + "t": null, + "punct": null, + "u_acc": 0.7439516129032258, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9509732360097324, + "t": null, + "punct": null, + "u_acc": 0.8284671532846716, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6626590476190477, + "t": null, + "punct": null, + "u_acc": 0.0496, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7256028571428571, + "t": null, + "punct": null, + "u_acc": 0.2252, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "eo": { + "opus100": { + "u": 0.937797619047619, + "t": null, + "punct": null, + "u_acc": 0.7782258064516129, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6742281805509729, + "t": null, + "punct": null, + "u_acc": 0.09147869674185463, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7321170139152595, + "t": null, + "punct": null, + "u_acc": 0.24436090225563908, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "es": { + "ersatz": { + "u": 0.9811637448713167, + "t": null, + "punct": null, + "u_acc": 0.922976501305483, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.9186398396924713, + "t": null, + "punct": null, + "u_acc": 0.7145748987854251, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9633821900853363, + "t": null, + "punct": null, + "u_acc": 0.8674418604651163, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999997 + }, + "ted2020-corrupted-asr": { + "u": 0.6632516283716284, + "t": null, + "punct": null, + "u_acc": 0.0756, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7402750072150073, + "t": null, + "punct": null, + "u_acc": 0.2636, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "et": { + "ersatz": { + "u": 0.9711482741244647, + "t": null, + "punct": null, + "u_acc": 0.8908730158730159, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.9094795555321871, + "t": null, + "punct": null, + "u_acc": 0.6882591093117408, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.93811318587438, + "t": null, + "punct": null, + "u_acc": 0.7997512437810945, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6890021585432112, + "t": null, + "punct": null, + "u_acc": 0.1316, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7472253153863682, + "t": null, + "punct": null, + "u_acc": 0.2696, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "eu": { + "opus100": { + "u": 0.9035147039195622, + "t": null, + "punct": null, + "u_acc": 0.6740890688259109, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.960701397368064, + "t": null, + "punct": null, + "u_acc": 0.8555555555555555, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6660068426197459, + "t": null, + "punct": null, + "u_acc": 0.07728494623655914, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7417358888125017, + "t": null, + "punct": null, + "u_acc": 0.2614247311827957, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "fa": { + "opus100": { + "u": 0.7469909960891924, + "t": null, + "punct": null, + "u_acc": 0.34468937875751504, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9415573742496821, + "t": null, + "punct": null, + "u_acc": 0.8076923076923077, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6649338239538239, + "t": null, + "punct": null, + "u_acc": 0.08, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.701142683982684, + "t": null, + "punct": null, + "u_acc": 0.1908, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "fi": { + "ersatz": { + "u": 0.9691478194484207, + "t": null, + "punct": null, + "u_acc": 0.8777555110220441, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.9343241521960898, + "t": null, + "punct": null, + "u_acc": 0.7706237424547284, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.9412915880767211, + "t": null, + "punct": null, + "u_acc": 0.8041237113402062, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6613791672379908, + "t": null, + "punct": null, + "u_acc": 0.084, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7281137950937951, + "t": null, + "punct": null, + "u_acc": 0.2316, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "fr": { + "ersatz": { + "u": 0.9658615136876006, + "t": null, + "punct": null, + "u_acc": 0.8599033816425121, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999997 + }, + "opus100": { + "u": 0.9097459673524582, + "t": null, + "punct": null, + "u_acc": 0.665314401622718, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9568376068376069, + "t": null, + "punct": null, + "u_acc": 0.8269230769230769, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6692646442446443, + "t": null, + "punct": null, + "u_acc": 0.1076, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7419346031746032, + "t": null, + "punct": null, + "u_acc": 0.2688, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "fy": { + "opus100": { + "u": 0.6809952362148778, + "t": null, + "punct": null, + "u_acc": 0.148068669527897, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ga": { + "opus100": { + "u": 0.8381684167724817, + "t": null, + "punct": null, + "u_acc": 0.5221774193548387, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9208868129920762, + "t": null, + "punct": null, + "u_acc": 0.7543859649122807, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7083333333333334, + "t": null, + "punct": null, + "u_acc": 0.16666666666666666, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7182539682539683, + "t": null, + "punct": null, + "u_acc": 0.25, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "gd": { + "opus100": { + "u": 0.7812139917695472, + "t": null, + "punct": null, + "u_acc": 0.35185185185185186, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8174019607843137, + "t": null, + "punct": null, + "u_acc": 0.45588235294117646, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "gl": { + "opus100": { + "u": 0.9089861751152074, + "t": null, + "punct": null, + "u_acc": 0.6834677419354839, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9606666666666667, + "t": null, + "punct": null, + "u_acc": 0.89, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6662523971453383, + "t": null, + "punct": null, + "u_acc": 0.078, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7290435675435676, + "t": null, + "punct": null, + "u_acc": 0.2356, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "gu": { + "ersatz": { + "u": 0.9211942257217849, + "t": null, + "punct": null, + "u_acc": 0.7559055118110236, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.759331708089472, + "t": null, + "punct": null, + "u_acc": 0.33126293995859213, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6042798718766486, + "t": null, + "punct": null, + "u_acc": 0.0621840242669363, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.660745398057143, + "t": null, + "punct": null, + "u_acc": 0.16835187057633974, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ha": { + "opus100": { + "u": 0.8632238095238096, + "t": null, + "punct": null, + "u_acc": 0.474, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.611111111111111, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.5555555555555555, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "he": { + "opus100": { + "u": 0.9104717371250437, + "t": null, + "punct": null, + "u_acc": 0.7074148296593187, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9455782312925171, + "t": null, + "punct": null, + "u_acc": 0.7755102040816326, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6547168801133507, + "t": null, + "punct": null, + "u_acc": 0.054, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6816121534021535, + "t": null, + "punct": null, + "u_acc": 0.16, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "hi": { + "ersatz": { + "u": 0.9199568370921754, + "t": null, + "punct": null, + "u_acc": 0.734920634920635, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7735572906625539, + "t": null, + "punct": null, + "u_acc": 0.4068825910931174, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9443415996985193, + "t": null, + "punct": null, + "u_acc": 0.8123515439429929, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6570798412698413, + "t": null, + "punct": null, + "u_acc": 0.0128, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6899813275613277, + "t": null, + "punct": null, + "u_acc": 0.194, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "hu": { + "opus100": { + "u": 0.9348921240050273, + "t": null, + "punct": null, + "u_acc": 0.75, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9450821995464853, + "t": null, + "punct": null, + "u_acc": 0.8214285714285714, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6642794438894439, + "t": null, + "punct": null, + "u_acc": 0.0628, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7328561811391223, + "t": null, + "punct": null, + "u_acc": 0.2448, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "hy": { + "opus100": { + "u": 0.8384396355353075, + "t": null, + "punct": null, + "u_acc": 0.49658314350797267, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9332046332046331, + "t": null, + "punct": null, + "u_acc": 0.7837837837837838, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6652877780698834, + "t": null, + "punct": null, + "u_acc": 0.0932, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7244541516962569, + "t": null, + "punct": null, + "u_acc": 0.2432, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "id": { + "opus100": { + "u": 0.9289032006245121, + "t": null, + "punct": null, + "u_acc": 0.75, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9686666666666668, + "t": null, + "punct": null, + "u_acc": 0.86, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6647670052170053, + "t": null, + "punct": null, + "u_acc": 0.0584, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7289819394984101, + "t": null, + "punct": null, + "u_acc": 0.2396, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ig": { + "opus100": { + "u": 0.7663777161349976, + "t": null, + "punct": null, + "u_acc": 0.2936893203883495, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6525641025641027, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7371794871794872, + "t": null, + "punct": null, + "u_acc": 0.23076923076923078, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "is": { + "opus100": { + "u": 0.9488358723771199, + "t": null, + "punct": null, + "u_acc": 0.7967806841046278, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.8771227836645624, + "t": null, + "punct": null, + "u_acc": 0.6035686578743211, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6902463383379416, + "t": null, + "punct": null, + "u_acc": 0.16030534351145037, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7582737590371178, + "t": null, + "punct": null, + "u_acc": 0.31297709923664124, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "it": { + "opus100": { + "u": 0.8989934643266563, + "t": null, + "punct": null, + "u_acc": 0.6592741935483871, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9802777777777778, + "t": null, + "punct": null, + "u_acc": 0.925, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6661383289912702, + "t": null, + "punct": null, + "u_acc": 0.1, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.754206810966811, + "t": null, + "punct": null, + "u_acc": 0.3124, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ja": { + "ersatz": { + "u": 0.8561448708836769, + "t": null, + "punct": null, + "u_acc": 0.5783582089552238, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.7714190093708165, + "t": null, + "punct": null, + "u_acc": 0.3273092369477912, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9368697478991597, + "t": null, + "punct": null, + "u_acc": 0.7647058823529411, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7918085714285715, + "t": null, + "punct": null, + "u_acc": 0.3752, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7839819047619049, + "t": null, + "punct": null, + "u_acc": 0.3544, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "jv": { + "ud": { + "u": 0.9771878787878788, + "t": null, + "punct": null, + "u_acc": 0.9, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "nllb": { + "u": 0.8036559713489125, + "t": null, + "punct": null, + "u_acc": 0.4248, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ka": { + "opus100": { + "u": 0.9109572871572872, + "t": null, + "punct": null, + "u_acc": 0.682, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6630827076191782, + "t": null, + "punct": null, + "u_acc": 0.0892, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6868704073704074, + "t": null, + "punct": null, + "u_acc": 0.1672, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "kk": { + "ersatz": { + "u": 0.9398443992654519, + "t": null, + "punct": null, + "u_acc": 0.848, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7437978687978688, + "t": null, + "punct": null, + "u_acc": 0.29545454545454547, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9439883256204482, + "t": null, + "punct": null, + "u_acc": 0.8396946564885496, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6945125450258921, + "t": null, + "punct": null, + "u_acc": 0.13826146475017112, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7391655040525679, + "t": null, + "punct": null, + "u_acc": 0.2532511978097194, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "km": { + "ersatz": { + "u": 0.8037201464409315, + "t": null, + "punct": null, + "u_acc": 0.4711864406779661, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.7482338280276424, + "t": null, + "punct": null, + "u_acc": 0.2618556701030928, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.7263515932688864, + "t": null, + "punct": null, + "u_acc": 0.19548872180451127, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7647332617257429, + "t": null, + "punct": null, + "u_acc": 0.3082706766917293, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "kn": { + "opus100": { + "u": 0.7207409110063977, + "t": null, + "punct": null, + "u_acc": 0.252212389380531, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.5765893362617798, + "t": null, + "punct": null, + "u_acc": 0.03146853146853147, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6595487845487845, + "t": null, + "punct": null, + "u_acc": 0.15384615384615385, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ko": { + "opus100": { + "u": 0.7750417710944025, + "t": null, + "punct": null, + "u_acc": 0.3643724696356275, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9491357771170064, + "t": null, + "punct": null, + "u_acc": 0.8409090909090909, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6990387878787879, + "t": null, + "punct": null, + "u_acc": 0.1456, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7148075968475969, + "t": null, + "punct": null, + "u_acc": 0.2056, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ku": { + "opus100": { + "u": 0.7658758081835004, + "t": null, + "punct": null, + "u_acc": 0.32432432432432434, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6230051753612744, + "t": null, + "punct": null, + "u_acc": 0.0468, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6397663112663051, + "t": null, + "punct": null, + "u_acc": 0.1156, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ky": { + "opus100": { + "u": 0.7574149659863947, + "t": null, + "punct": null, + "u_acc": 0.2833333333333333, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6944147355912063, + "t": null, + "punct": null, + "u_acc": 0.13725490196078433, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7419856831621539, + "t": null, + "punct": null, + "u_acc": 0.2549019607843137, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "la": { + "ud": { + "u": 0.9071201814058957, + "t": null, + "punct": null, + "u_acc": 0.6895238095238095, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.611111111111111, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7777777777777777, + "t": null, + "punct": null, + "u_acc": 0.3333333333333333, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "lt": { + "ersatz": { + "u": 0.9676380952380953, + "t": null, + "punct": null, + "u_acc": 0.872, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8486187088001604, + "t": null, + "punct": null, + "u_acc": 0.5665322580645161, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9696007696007696, + "t": null, + "punct": null, + "u_acc": 0.9005847953216374, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6762705345634757, + "t": null, + "punct": null, + "u_acc": 0.1256, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7595186486715898, + "t": null, + "punct": null, + "u_acc": 0.3136, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "lv": { + "ersatz": { + "u": 0.9699202913488628, + "t": null, + "punct": null, + "u_acc": 0.876984126984127, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8628556816183592, + "t": null, + "punct": null, + "u_acc": 0.5557809330628803, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9595909342177998, + "t": null, + "punct": null, + "u_acc": 0.8474295190713101, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6732975757575758, + "t": null, + "punct": null, + "u_acc": 0.074, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.736772554112554, + "t": null, + "punct": null, + "u_acc": 0.2508, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "mg": { + "opus100": { + "u": 0.9070320030846347, + "t": null, + "punct": null, + "u_acc": 0.6680161943319838, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6543209876543208, + "t": null, + "punct": null, + "u_acc": 0.05555555555555555, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7498824221046441, + "t": null, + "punct": null, + "u_acc": 0.2777777777777778, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "mk": { + "opus100": { + "u": 0.9434190476190477, + "t": null, + "punct": null, + "u_acc": 0.784, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6754145632145633, + "t": null, + "punct": null, + "u_acc": 0.0716, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7508513886113887, + "t": null, + "punct": null, + "u_acc": 0.2828, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ml": { + "opus100": { + "u": 0.8698699560145343, + "t": null, + "punct": null, + "u_acc": 0.5502008032128514, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5933997638027935, + "t": null, + "punct": null, + "u_acc": 0.07539682539682539, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6887365353635195, + "t": null, + "punct": null, + "u_acc": 0.18253968253968253, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "mn": { + "opus100": { + "u": 0.7264085786986549, + "t": null, + "punct": null, + "u_acc": 0.19083969465648856, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.685810920843862, + "t": null, + "punct": null, + "u_acc": 0.086, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7510536108336109, + "t": null, + "punct": null, + "u_acc": 0.2648, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "nllb": { + "u": 0.9093018484896748, + "t": null, + "punct": null, + "u_acc": 0.7016, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "mr": { + "opus100": { + "u": 0.9074884792626727, + "t": null, + "punct": null, + "u_acc": 0.7278225806451613, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9555555555555556, + "t": null, + "punct": null, + "u_acc": 0.8333333333333334, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6363191275391277, + "t": null, + "punct": null, + "u_acc": 0.0256, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6725505228105229, + "t": null, + "punct": null, + "u_acc": 0.146, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ms": { + "opus100": { + "u": 0.896554314455549, + "t": null, + "punct": null, + "u_acc": 0.6481481481481481, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6644228753402422, + "t": null, + "punct": null, + "u_acc": 0.08095238095238096, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.7264695433509372, + "t": null, + "punct": null, + "u_acc": 0.23273809523809524, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "mt": { + "opus100": { + "u": 0.7541711325112135, + "t": null, + "punct": null, + "u_acc": 0.3866396761133603, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9207692307692308, + "t": null, + "punct": null, + "u_acc": 0.7692307692307693, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5733211233211233, + "t": null, + "punct": null, + "u_acc": 0.0, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7655677655677656, + "t": null, + "punct": null, + "u_acc": 0.2692307692307692, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "my": { + "opus100": { + "u": 0.7647922194293162, + "t": null, + "punct": null, + "u_acc": 0.33064516129032256, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.8902053968253968, + "t": null, + "punct": null, + "u_acc": 0.6468, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.8619654545454545, + "t": null, + "punct": null, + "u_acc": 0.5616, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ne": { + "opus100": { + "u": 0.742469545957918, + "t": null, + "punct": null, + "u_acc": 0.24312896405919662, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6589633232490375, + "t": null, + "punct": null, + "u_acc": 0.12934362934362933, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6673394869823441, + "t": null, + "punct": null, + "u_acc": 0.18146718146718147, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "nl": { + "opus100": { + "u": 0.932695238095238, + "t": null, + "punct": null, + "u_acc": 0.722, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.942841163310962, + "t": null, + "punct": null, + "u_acc": 0.825503355704698, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6987863580863581, + "t": null, + "punct": null, + "u_acc": 0.1468, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7475412787212788, + "t": null, + "punct": null, + "u_acc": 0.276, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "no": { + "opus100": { + "u": 0.9498175883256529, + "t": null, + "punct": null, + "u_acc": 0.8104838709677419, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9738980716253444, + "t": null, + "punct": null, + "u_acc": 0.9049586776859504, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "pa": { + "opus100": { + "u": 0.6965147671090294, + "t": null, + "punct": null, + "u_acc": 0.17418032786885246, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6563829787234042, + "t": null, + "punct": null, + "u_acc": 0.0425531914893617, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7209726443768999, + "t": null, + "punct": null, + "u_acc": 0.24468085106382978, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "pl": { + "ersatz": { + "u": 0.9525327262379055, + "t": null, + "punct": null, + "u_acc": 0.8366533864541833, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.9337109575012801, + "t": null, + "punct": null, + "u_acc": 0.7520161290322581, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9489255630049853, + "t": null, + "punct": null, + "u_acc": 0.7978339350180506, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6779320634920636, + "t": null, + "punct": null, + "u_acc": 0.0984, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7362530158730158, + "t": null, + "punct": null, + "u_acc": 0.25, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ps": { + "ersatz": { + "u": 0.8743201725424836, + "t": null, + "punct": null, + "u_acc": 0.5821114369501467, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.710913140311804, + "t": null, + "punct": null, + "u_acc": 0.16926503340757237, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6491104447692999, + "t": null, + "punct": null, + "u_acc": 0.10218978102189781, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6554369500393319, + "t": null, + "punct": null, + "u_acc": 0.12408759124087591, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "pt": { + "opus100": { + "u": 0.9425294004241372, + "t": null, + "punct": null, + "u_acc": 0.7773279352226721, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9590182648401827, + "t": null, + "punct": null, + "u_acc": 0.8595890410958904, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6749478876678877, + "t": null, + "punct": null, + "u_acc": 0.068, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7436949783549784, + "t": null, + "punct": null, + "u_acc": 0.2672, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ro": { + "ersatz": { + "u": 0.976542857142857, + "t": null, + "punct": null, + "u_acc": 0.9, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.9412922879589546, + "t": null, + "punct": null, + "u_acc": 0.8, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.8616885860231868, + "t": null, + "punct": null, + "u_acc": 0.5437262357414449, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6729031290335127, + "t": null, + "punct": null, + "u_acc": 0.0908, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7447194397759104, + "t": null, + "punct": null, + "u_acc": 0.2688, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ru": { + "ersatz": { + "u": 0.9743279569892472, + "t": null, + "punct": null, + "u_acc": 0.907258064516129, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8484956414259694, + "t": null, + "punct": null, + "u_acc": 0.48975409836065575, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8804545454545454, + "t": null, + "punct": null, + "u_acc": 0.6227272727272727, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6782184737484739, + "t": null, + "punct": null, + "u_acc": 0.0976, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7382855122655123, + "t": null, + "punct": null, + "u_acc": 0.2588, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "si": { + "opus100": { + "u": 0.8657066052227342, + "t": null, + "punct": null, + "u_acc": 0.5584677419354839, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6291497477543989, + "t": null, + "punct": null, + "u_acc": 0.08527131782945736, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6445059677617817, + "t": null, + "punct": null, + "u_acc": 0.16279069767441862, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "sk": { + "opus100": { + "u": 0.9272788064770987, + "t": null, + "punct": null, + "u_acc": 0.7620967741935484, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9388679245283019, + "t": null, + "punct": null, + "u_acc": 0.8075471698113208, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.6759671611761207, + "t": null, + "punct": null, + "u_acc": 0.1228, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7360581687420131, + "t": null, + "punct": null, + "u_acc": 0.2636, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "sl": { + "opus100": { + "u": 0.9381143622107477, + "t": null, + "punct": null, + "u_acc": 0.7590361445783133, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9596949404761904, + "t": null, + "punct": null, + "u_acc": 0.85625, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6723284441049148, + "t": null, + "punct": null, + "u_acc": 0.1052, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.74034988485199, + "t": null, + "punct": null, + "u_acc": 0.2656, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "sq": { + "opus100": { + "u": 0.924412827461608, + "t": null, + "punct": null, + "u_acc": 0.733739837398374, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.962962962962963, + "t": null, + "punct": null, + "u_acc": 0.9333333333333333, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6717976674306086, + "t": null, + "punct": null, + "u_acc": 0.0616, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7400613852813853, + "t": null, + "punct": null, + "u_acc": 0.2572, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "sr": { + "opus100": { + "u": 0.9466724039013197, + "t": null, + "punct": null, + "u_acc": 0.7931726907630522, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9820512820512821, + "t": null, + "punct": null, + "u_acc": 0.9307692307692308, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6794542985902986, + "t": null, + "punct": null, + "u_acc": 0.1024, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7451693568653569, + "t": null, + "punct": null, + "u_acc": 0.2744, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "sv": { + "opus100": { + "u": 0.9328679798559317, + "t": null, + "punct": null, + "u_acc": 0.7369477911646586, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9415282392026578, + "t": null, + "punct": null, + "u_acc": 0.7945736434108527, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6798023376623377, + "t": null, + "punct": null, + "u_acc": 0.1224, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7333801154401155, + "t": null, + "punct": null, + "u_acc": 0.2456, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ta": { + "ersatz": { + "u": 0.9250300385758554, + "t": null, + "punct": null, + "u_acc": 0.7250996015936255, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "opus100": { + "u": 0.7667987387499582, + "t": null, + "punct": null, + "u_acc": 0.3821138211382114, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.9455555555555556, + "t": null, + "punct": null, + "u_acc": 0.8, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.010000000000000002 + }, + "ted2020-corrupted-asr": { + "u": 0.6492312551031413, + "t": null, + "punct": null, + "u_acc": 0.04341637010676157, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.6772378970637071, + "t": null, + "punct": null, + "u_acc": 0.19074733096085408, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "te": { + "opus100": { + "u": 0.8128409459021703, + "t": null, + "punct": null, + "u_acc": 0.4673469387755102, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6243554448237228, + "t": null, + "punct": null, + "u_acc": 0.05891238670694864, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.686216230060641, + "t": null, + "punct": null, + "u_acc": 0.15861027190332327, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "tg": { + "opus100": { + "u": 0.827755510888041, + "t": null, + "punct": null, + "u_acc": 0.4538152610441767, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.7181704260651628, + "t": null, + "punct": null, + "u_acc": 0.13157894736842105, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7964285714285714, + "t": null, + "punct": null, + "u_acc": 0.3815789473684211, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "th": { + "opus100": { + "u": 0.7503228533531564, + "t": null, + "punct": null, + "u_acc": 0.25656565656565655, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.7124386724386725, + "t": null, + "punct": null, + "u_acc": 0.144, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.5575228087732754, + "t": null, + "punct": null, + "u_acc": 0.0764, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.557464546230316, + "t": null, + "punct": null, + "u_acc": 0.0756, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "tr": { + "ersatz": { + "u": 0.918605087288598, + "t": null, + "punct": null, + "u_acc": 0.7007978723404256, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.93627337574706, + "t": null, + "punct": null, + "u_acc": 0.7631578947368421, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.9545165945165945, + "t": null, + "punct": null, + "u_acc": 0.8363636363636363, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.68017, + "t": null, + "punct": null, + "u_acc": 0.0768, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7267438095238096, + "t": null, + "punct": null, + "u_acc": 0.2252, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "uk": { + "opus100": { + "u": 0.9207815388538281, + "t": null, + "punct": null, + "u_acc": 0.7289156626506024, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.942311507936508, + "t": null, + "punct": null, + "u_acc": 0.7946428571428571, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6728641753671166, + "t": null, + "punct": null, + "u_acc": 0.1132, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7477155206884619, + "t": null, + "punct": null, + "u_acc": 0.288, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "ur": { + "opus100": { + "u": 0.7314591481964364, + "t": null, + "punct": null, + "u_acc": 0.3093220338983051, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ud": { + "u": 0.8819958648316858, + "t": null, + "punct": null, + "u_acc": 0.6567164179104478, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6539408893764419, + "t": null, + "punct": null, + "u_acc": 0.09198355601233299, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.6758485600598818, + "t": null, + "punct": null, + "u_acc": 0.17574511819116137, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "uz": { + "opus100": { + "u": 0.8036961451247165, + "t": null, + "punct": null, + "u_acc": 0.3081632653061224, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6962194275485414, + "t": null, + "punct": null, + "u_acc": 0.12130801687763713, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7565702230259193, + "t": null, + "punct": null, + "u_acc": 0.2974683544303797, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "vi": { + "opus100": { + "u": 0.929652491998171, + "t": null, + "punct": null, + "u_acc": 0.7530864197530864, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.8988333333333334, + "t": null, + "punct": null, + "u_acc": 0.62, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-asr": { + "u": 0.6595528427128428, + "t": null, + "punct": null, + "u_acc": 0.0464, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-social-media": { + "u": 0.7298919191919193, + "t": null, + "punct": null, + "u_acc": 0.2404, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "xh": { + "opus100": { + "u": 0.8488048834521863, + "t": null, + "punct": null, + "u_acc": 0.533195020746888, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "yi": { + "opus100": { + "u": 0.6967532467532467, + "t": null, + "punct": null, + "u_acc": 0.16300940438871472, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "yo": { + "opus100": { + "u": 0.7621673524617211, + "t": null, + "punct": null, + "u_acc": 0.3148464163822526, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ud": { + "u": 0.843154761904762, + "t": null, + "punct": null, + "u_acc": 0.475, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "nllb": { + "u": 0.8136430845865521, + "t": null, + "punct": null, + "u_acc": 0.46, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "zh": { + "ersatz": { + "u": 0.957031746031746, + "t": null, + "punct": null, + "u_acc": 0.846, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "opus100": { + "u": 0.8564849413943981, + "t": null, + "punct": null, + "u_acc": 0.545271629778672, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.010000000000000002 + }, + "ud": { + "u": 0.9779047619047619, + "t": null, + "punct": null, + "u_acc": 0.92, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + }, + "ted2020-corrupted-asr": { + "u": 0.6842542973095785, + "t": null, + "punct": null, + "u_acc": 0.1702862783810464, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + }, + "ted2020-corrupted-social-media": { + "u": 0.679640467572353, + "t": null, + "punct": null, + "u_acc": 0.17374136229022705, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.009999999999999998 + } + }, + "zu": { + "opus100": { + "u": 0.766096866096866, + "t": null, + "punct": null, + "u_acc": 0.31196581196581197, + "t_acc": null, + "punct_acc": null, + "threshold_t": 0, + "threshold_adj": 0.01 + } + }, + "tr-de_TR": {}, + "tr-de_DE": {}, + "es-en_ES": {}, + "es-en_EN": {}, + "vi-en_VI": {}, + "vi-en_EN": {}, + "en-de_EN": {}, + "en-de_DE": {} +} \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ar_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ar_f.tex new file mode 100644 index 00000000..e18ecd6e --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ar_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & ersatz & WtP-P & L-3 & SaT-SM & SaT-T & SaT-U & WtP-T & WtP-U & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.235 & 0.151 & 0.087 & 0.018 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & 0.812 & 0.328 & 0.172 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.413 & 0.262 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.915 & 0.013 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & - & 0.008 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.038 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.003 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.927 +% WtP-T: 0.887 +% WtP-U: 0.87 +% C-R: 0.558 +% L-3: 0.924 +% SaT-SM: 0.923 +% SaT-T: 0.911 +% SaT-U: 0.897 +% SaT-Lora-T: 0.931 +% SaT-Lora-U: 0.929 +% pysbd: 0.462 +% ersatz: 0.928 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/cs_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/cs_f.tex new file mode 100644 index 00000000..a6e01cee --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/cs_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & ersatz & spacy-m & SaT-T & SaT-U & WtP-T & WtP-U \\ +\midrule +WtP-P & - & 0.009 & 0.023 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 1.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & 0.019 & 0.004 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & 0.030 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.306 & 0.038 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.017 \\ +WtP-U & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.99 +% WtP-T: 0.939 +% WtP-U: 0.936 +% SaT-SM: 0.985 +% SaT-T: 0.954 +% SaT-U: 0.943 +% SaT-Lora-T: 0.985 +% SaT-Lora-U: 0.983 +% spacy-m: 0.964 +% ersatz: 0.967 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/de_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/de_f.tex new file mode 100644 index 00000000..59000e7f --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/de_f.tex @@ -0,0 +1,34 @@ +\begin{tabular}{lrrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & L-3 & SaT-SM & SaT-T & SaT-U & spacy-dp & WtP-T & ersatz & pysbd & WtP-U & spacy-m & C-R \\ +\midrule +SaT-Lora-T & - & 0.711 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & 0.798 & 0.382 & 0.056 & 0.005 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & 0.519 & 0.037 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.031 & 0.025 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.261 & 0.001 & 0.006 & 0.003 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & 0.077 & 0.049 & 0.022 & 0.003 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.679 & 0.495 & 0.140 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.340 & 0.775 & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & 0.986 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & - & 0.001 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.993 +% WtP-T: 0.956 +% WtP-U: 0.953 +% C-R: 0.759 +% L-3: 0.973 +% SaT-SM: 0.972 +% SaT-T: 0.97 +% SaT-U: 0.966 +% SaT-Lora-T: 0.993 +% SaT-Lora-U: 0.992 +% spacy-dp: 0.963 +% spacy-m: 0.935 +% pysbd: 0.953 +% ersatz: 0.954 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/en_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/en_f.tex new file mode 100644 index 00000000..73a1c93a --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/en_f.tex @@ -0,0 +1,34 @@ +\begin{tabular}{lrrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & spacy-dp & SaT-SM & L-3 & ersatz & SaT-T & WtP-T & SaT-U & WtP-U & spacy-m & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.632 & 0.065 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.208 & 0.001 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & 0.120 & 0.041 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & 0.558 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.660 & 0.141 & 0.119 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.803 & 0.004 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & - & 0.364 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.986 +% WtP-T: 0.967 +% WtP-U: 0.965 +% C-R: 0.872 +% L-3: 0.982 +% SaT-SM: 0.983 +% SaT-T: 0.968 +% SaT-U: 0.967 +% SaT-Lora-T: 0.987 +% SaT-Lora-U: 0.987 +% spacy-dp: 0.985 +% spacy-m: 0.94 +% pysbd: 0.739 +% ersatz: 0.975 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/es_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/es_f.tex new file mode 100644 index 00000000..f6d937f8 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/es_f.tex @@ -0,0 +1,25 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & WtP-U & SaT-U & L-3 & spacy-m & ersatz & spacy-dp & pysbd & C-R \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & 0.075 & 0.087 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & 0.590 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & 0.236 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-U: 0.987 +% C-R: 0.768 +% L-3: 0.983 +% SaT-SM: 0.995 +% SaT-U: 0.984 +% spacy-dp: 0.964 +% spacy-m: 0.972 +% pysbd: 0.842 +% ersatz: 0.966 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/et_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/et_f.tex new file mode 100644 index 00000000..383e18d3 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/et_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & ersatz & L-3 & WtP-U & SaT-U & SaT-T & WtP-T & C-R \\ +\midrule +SaT-Lora-T & - & 0.407 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.874 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & 0.016 & 0.004 & 0.001 & 0.001 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.671 & 0.487 & 0.074 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.635 & 0.447 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.637 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.98 +% WtP-T: 0.957 +% WtP-U: 0.96 +% C-R: 0.772 +% L-3: 0.97 +% SaT-SM: 0.989 +% SaT-T: 0.958 +% SaT-U: 0.959 +% SaT-Lora-T: 0.99 +% SaT-Lora-U: 0.991 +% ersatz: 0.98 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/fi_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/fi_f.tex new file mode 100644 index 00000000..1bb29861 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/fi_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & SaT-T & SaT-U & WtP-U & WtP-T & L-3 & ersatz & spacy-dp & spacy-m & C-R \\ +\midrule +WtP-P & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.317 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.003 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.146 & 0.314 & 0.169 & 0.008 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.518 & 0.335 & 0.014 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.608 & 0.110 & 0.001 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.199 & 0.004 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.003 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.030 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & 0.306 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.994 +% WtP-T: 0.972 +% WtP-U: 0.974 +% C-R: 0.788 +% L-3: 0.967 +% SaT-SM: 0.984 +% SaT-T: 0.977 +% SaT-U: 0.976 +% SaT-Lora-T: 0.986 +% SaT-Lora-U: 0.988 +% spacy-dp: 0.954 +% spacy-m: 0.95 +% ersatz: 0.96 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/fr_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/fr_f.tex new file mode 100644 index 00000000..5e099e37 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/fr_f.tex @@ -0,0 +1,36 @@ +\begin{tabular}{lrrrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & L-3 & SaT-U & WtP-U & SaT-T & WtP-T & spacy-m & ersatz & pysbd & nltk & spacy-dp & C-R \\ +\midrule +SaT-Lora-T & - & 0.001 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.654 & 0.021 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.077 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.056 & 0.047 & 0.012 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.655 & 0.221 & 0.004 & 0.015 & 0.010 & 0.001 & 0.002 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.676 & 0.038 & 0.057 & 0.030 & 0.008 & 0.005 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.096 & 0.051 & 0.024 & 0.002 & 0.006 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.529 & 0.366 & 0.160 & 0.158 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.411 & 0.095 & 0.047 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & - & 0.286 & 0.120 & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - & 0.997 & 0.000 & 0.000 \\ +nltk & - & - & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & - & - & - & 0.220 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.984 +% WtP-T: 0.966 +% WtP-U: 0.972 +% C-R: 0.846 +% L-3: 0.979 +% SaT-SM: 0.985 +% SaT-T: 0.971 +% SaT-U: 0.973 +% SaT-Lora-T: 0.991 +% SaT-Lora-U: 0.991 +% spacy-dp: 0.858 +% spacy-m: 0.964 +% pysbd: 0.96 +% ersatz: 0.963 +% nltk: 0.96 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/gu_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/gu_f.tex new file mode 100644 index 00000000..29178656 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/gu_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & ersatz & L-3 & SaT-U & SaT-T & WtP-U & WtP-T & C-R & SaT-SM \\ +\midrule +WtP-P & - & 0.007 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.061 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & 0.000 & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.190 & 0.031 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.139 & 0.001 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.017 & 0.001 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.070 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & 0.017 \\ +SaT-SM & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.967 +% WtP-T: 0.889 +% WtP-U: 0.897 +% C-R: 0.748 +% L-3: 0.931 +% SaT-SM: 0.707 +% SaT-T: 0.913 +% SaT-U: 0.92 +% SaT-Lora-T: 0.954 +% SaT-Lora-U: 0.956 +% ersatz: 0.943 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/hi_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/hi_f.tex new file mode 100644 index 00000000..e92f0091 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/hi_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & L-3 & ersatz & WtP-P & SaT-T & SaT-U & WtP-T & WtP-U & pysbd & C-R \\ +\midrule +SaT-SM & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.955 & 0.013 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & 0.025 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & 0.099 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & - & - & 0.006 & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.506 & 0.003 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.004 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.007 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.963 +% WtP-T: 0.946 +% WtP-U: 0.939 +% C-R: 0.849 +% L-3: 0.973 +% SaT-SM: 0.981 +% SaT-T: 0.955 +% SaT-U: 0.955 +% SaT-Lora-T: 0.973 +% SaT-Lora-U: 0.97 +% pysbd: 0.875 +% ersatz: 0.968 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ja_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ja_f.tex new file mode 100644 index 00000000..d7a3371f --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ja_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & spacy-dp & SaT-SM & L-3 & SaT-T & pysbd & SaT-U & ersatz & WtP-T & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.731 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & 0.009 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & 0.036 & 0.014 & 0.026 & 0.001 & 0.001 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & 0.969 & 0.921 & 0.555 & 0.099 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.975 & 0.374 & 0.218 & 0.000 & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & 0.605 & 0.101 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.475 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.002 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & - & - & 0.018 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.944 +% WtP-T: 0.815 +% WtP-U: 0.802 +% C-R: 0.597 +% L-3: 0.871 +% SaT-SM: 0.891 +% SaT-T: 0.871 +% SaT-U: 0.865 +% SaT-Lora-T: 0.946 +% SaT-Lora-U: 0.939 +% spacy-dp: 0.91 +% pysbd: 0.87 +% ersatz: 0.857 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/kk_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/kk_f.tex new file mode 100644 index 00000000..f7d0dfa5 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/kk_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & ersatz & L-3 & SaT-T & SaT-U & WtP-U & WtP-T & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.749 & 0.557 & 0.189 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.914 & 0.312 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.479 & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & 0.014 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & 0.010 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.102 & 0.003 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.008 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.997 +% WtP-T: 0.957 +% WtP-U: 0.963 +% C-R: 0.867 +% L-3: 0.99 +% SaT-SM: 0.997 +% SaT-T: 0.98 +% SaT-U: 0.971 +% SaT-Lora-T: 0.998 +% SaT-Lora-U: 0.999 +% pysbd: 0.647 +% ersatz: 0.996 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/km_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/km_f.tex new file mode 100644 index 00000000..249dd62e --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/km_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-T & SaT-Lora-T & WtP-P & WtP-T & SaT-U & L-3 & SaT-SM & WtP-U & ersatz & C-R \\ +\midrule +SaT-T & - & 0.409 & 0.336 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.844 & 0.030 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.015 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.013 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.92 +% WtP-T: 0.914 +% WtP-U: 0.702 +% C-R: 0.067 +% L-3: 0.856 +% SaT-SM: 0.839 +% SaT-T: 0.923 +% SaT-U: 0.894 +% SaT-Lora-T: 0.92 +% SaT-Lora-U: 0.913 +% ersatz: 0.313 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/lt_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/lt_f.tex new file mode 100644 index 00000000..c7b9d673 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/lt_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & SaT-T & WtP-U & WtP-T & SaT-U & ersatz & L-3 & spacy-m & C-R & spacy-dp \\ +\midrule +WtP-P & - & 0.004 & 0.010 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.835 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 1.000 & 0.712 & 0.074 & 0.015 & 0.008 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.741 & 0.628 & 0.020 & 0.010 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.855 & 0.041 & 0.013 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.043 & 0.023 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & 0.891 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & - & 0.002 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & 0.034 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.992 +% WtP-T: 0.964 +% WtP-U: 0.965 +% C-R: 0.783 +% L-3: 0.949 +% SaT-SM: 0.983 +% SaT-T: 0.965 +% SaT-U: 0.963 +% SaT-Lora-T: 0.984 +% SaT-Lora-U: 0.982 +% spacy-dp: 0.749 +% spacy-m: 0.933 +% ersatz: 0.95 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/lv_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/lv_f.tex new file mode 100644 index 00000000..40376710 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/lv_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & L-3 & ersatz & spacy-m & SaT-T & SaT-U & WtP-T & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.632 & 0.630 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.853 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.013 & 0.001 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.653 & 0.562 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & 0.706 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.239 & 0.019 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.111 & 0.004 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & - & 0.091 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.993 +% WtP-T: 0.972 +% WtP-U: 0.969 +% C-R: 0.827 +% L-3: 0.988 +% SaT-SM: 0.993 +% SaT-T: 0.977 +% SaT-U: 0.975 +% SaT-Lora-T: 0.994 +% SaT-Lora-U: 0.994 +% spacy-m: 0.986 +% ersatz: 0.987 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/pl_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/pl_f.tex new file mode 100644 index 00000000..395a3a7b --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/pl_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & L-3 & ersatz & WtP-U & spacy-dp & SaT-U & SaT-T & WtP-T & C-R & pysbd \\ +\midrule +SaT-SM & - & 0.339 & 0.089 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.292 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.377 & 0.227 & 0.058 & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & 0.593 & 0.132 & 0.041 & 0.004 & 0.005 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.900 & 0.045 & 0.002 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & 0.188 & 0.029 & 0.039 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.001 & 0.200 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & - & 0.810 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.977 +% WtP-T: 0.928 +% WtP-U: 0.946 +% C-R: 0.701 +% L-3: 0.954 +% SaT-SM: 0.983 +% SaT-T: 0.929 +% SaT-U: 0.935 +% SaT-Lora-T: 0.981 +% SaT-Lora-U: 0.981 +% spacy-dp: 0.945 +% pysbd: 0.457 +% ersatz: 0.949 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ps_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ps_f.tex new file mode 100644 index 00000000..668e29aa --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ps_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & L-3 & SaT-Lora-T & WtP-P & ersatz & SaT-T & SaT-U & WtP-T & WtP-U & SaT-SM & C-R \\ +\midrule +L-3 & - & 0.273 & 0.110 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.450 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & 0.014 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.028 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.052 & 0.000 \\ +SaT-SM & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.959 +% WtP-T: 0.91 +% WtP-U: 0.837 +% C-R: 0.707 +% L-3: 0.963 +% SaT-SM: 0.827 +% SaT-T: 0.929 +% SaT-U: 0.924 +% SaT-Lora-T: 0.961 +% SaT-Lora-U: 0.957 +% ersatz: 0.937 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ro_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ro_f.tex new file mode 100644 index 00000000..379631e7 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ro_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & L-3 & WtP-U & SaT-U & WtP-T & SaT-T & ersatz & spacy-m & spacy-dp & C-R \\ +\midrule +WtP-P & - & 0.296 & 0.060 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.234 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.694 & 0.552 & 0.027 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.695 & 0.007 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.023 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.141 & 0.034 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.282 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & 0.262 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.994 +% WtP-T: 0.969 +% WtP-U: 0.975 +% C-R: 0.713 +% L-3: 0.977 +% SaT-SM: 0.991 +% SaT-T: 0.964 +% SaT-U: 0.975 +% SaT-Lora-T: 0.993 +% SaT-Lora-U: 0.993 +% spacy-dp: 0.944 +% spacy-m: 0.948 +% ersatz: 0.96 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ru_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ru_f.tex new file mode 100644 index 00000000..b5fdd46b --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ru_f.tex @@ -0,0 +1,34 @@ +\begin{tabular}{lrrrrrrrrrrrrr} +\toprule + & WtP-P & SaT-SM & SaT-Lora-T & WtP-T & WtP-U & SaT-U & SaT-T & L-3 & ersatz & spacy-dp & spacy-m & C-R & pysbd \\ +\midrule +WtP-P & - & 0.036 & 0.017 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.941 & 0.004 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & 0.004 & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.502 & 0.255 & 0.250 & 0.253 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.418 & 0.430 & 0.362 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.824 & 0.644 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.794 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.579 & 0.023 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & 0.061 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.994 +% WtP-T: 0.976 +% WtP-U: 0.975 +% C-R: 0.802 +% L-3: 0.97 +% SaT-SM: 0.988 +% SaT-T: 0.972 +% SaT-U: 0.972 +% SaT-Lora-T: 0.988 +% SaT-Lora-U: 0.987 +% spacy-dp: 0.941 +% spacy-m: 0.932 +% pysbd: 0.552 +% ersatz: 0.942 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ta_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ta_f.tex new file mode 100644 index 00000000..8636cb75 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/ta_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-U & SaT-T & L-3 & ersatz & WtP-T & WtP-U & C-R \\ +\midrule +SaT-SM & - & 0.136 & 0.020 & 0.011 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.352 & 0.224 & 0.003 & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.679 & 0.054 & 0.046 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & 0.045 & 0.150 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.808 & 0.001 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & 0.421 & 0.108 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.168 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.978 +% WtP-T: 0.947 +% WtP-U: 0.941 +% C-R: 0.013 +% L-3: 0.97 +% SaT-SM: 0.985 +% SaT-T: 0.971 +% SaT-U: 0.976 +% SaT-Lora-T: 0.981 +% SaT-Lora-U: 0.982 +% ersatz: 0.952 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/tr_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/tr_f.tex new file mode 100644 index 00000000..bd64bd3b --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/tr_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & ersatz & L-3 & SaT-T & SaT-U & WtP-T & WtP-U & C-R \\ +\midrule +WtP-P & - & 0.413 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & 0.225 & 0.041 & 0.002 & 0.001 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.015 & 0.005 & 0.001 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.089 & 0.039 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.570 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.983 +% WtP-T: 0.93 +% WtP-U: 0.928 +% C-R: 0.718 +% L-3: 0.943 +% SaT-SM: 0.975 +% SaT-T: 0.938 +% SaT-U: 0.935 +% SaT-Lora-T: 0.982 +% SaT-Lora-U: 0.984 +% ersatz: 0.962 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/zh_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/zh_f.tex new file mode 100644 index 00000000..2555a9aa --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/ersatz/zh_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & WtP-P & spacy-dp & SaT-Lora-T & L-3 & WtP-U & WtP-T & pysbd & SaT-SM & SaT-T & ersatz & SaT-U & C-R \\ +\midrule +WtP-P & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & 0.050 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & 0.356 & 0.016 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.133 & 0.042 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.528 & 0.091 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.221 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & - & 0.980 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.979 +% WtP-T: 0.934 +% WtP-U: 0.937 +% C-R: 0.705 +% L-3: 0.945 +% SaT-SM: 0.905 +% SaT-T: 0.874 +% SaT-U: 0.841 +% SaT-Lora-T: 0.95 +% SaT-Lora-U: 0.952 +% spacy-dp: 0.959 +% pysbd: 0.927 +% ersatz: 0.874 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/af_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/af_f.tex new file mode 100644 index 00000000..e9b93516 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/af_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & SaT-U & WtP-T & WtP-U & L-3 & C-R & spacy-m \\ +\midrule +SaT-Lora-T & - & 0.118 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.014 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & 0.400 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.939 +% WtP-T: 0.877 +% WtP-U: 0.865 +% C-R: 0.71 +% L-3: 0.827 +% SaT-SM: 0.931 +% SaT-T: 0.897 +% SaT-U: 0.888 +% SaT-Lora-T: 0.943 +% SaT-Lora-U: 0.943 +% spacy-m: 0.701 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/am_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/am_f.tex new file mode 100644 index 00000000..5a34e179 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/am_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & WtP-T & SaT-T & WtP-U & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.747 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.149 & 0.041 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.597 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.705 +% WtP-T: 0.637 +% WtP-U: 0.582 +% C-R: 0.066 +% L-3: 0.362 +% SaT-SM: 0.708 +% SaT-T: 0.591 +% SaT-U: 0.58 +% SaT-Lora-T: 0.759 +% SaT-Lora-U: 0.675 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ar_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ar_f.tex new file mode 100644 index 00000000..b4697adf --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ar_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & WtP-T & SaT-U & L-3 & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.016 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.625 & 0.096 & 0.042 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.124 & 0.015 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.912 & 0.002 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.002 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.111 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.854 +% WtP-T: 0.799 +% WtP-U: 0.773 +% C-R: 0.586 +% L-3: 0.782 +% SaT-SM: 0.807 +% SaT-T: 0.805 +% SaT-U: 0.799 +% SaT-Lora-T: 0.863 +% SaT-Lora-U: 0.822 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/az_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/az_f.tex new file mode 100644 index 00000000..66b0b49b --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/az_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & L-3 & SaT-U & WtP-U & WtP-T & SaT-T & C-R \\ +\midrule +SaT-SM & - & 0.655 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.004 & 0.004 & 0.001 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.789 & 0.463 & 0.366 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.605 & 0.534 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.854 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.83 +% WtP-T: 0.746 +% WtP-U: 0.749 +% C-R: 0.605 +% L-3: 0.768 +% SaT-SM: 0.853 +% SaT-T: 0.745 +% SaT-U: 0.75 +% SaT-Lora-T: 0.85 +% SaT-Lora-U: 0.817 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/be_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/be_f.tex new file mode 100644 index 00000000..4ce1e066 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/be_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & WtP-P & SaT-Lora-T & WtP-T & WtP-U & SaT-T & SaT-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.794 & 0.430 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.603 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.125 & 0.019 & 0.026 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.125 & 0.130 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.988 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.905 +% WtP-T: 0.806 +% WtP-U: 0.803 +% C-R: 0.521 +% L-3: 0.713 +% SaT-SM: 0.906 +% SaT-T: 0.797 +% SaT-U: 0.797 +% SaT-Lora-T: 0.903 +% SaT-Lora-U: 0.899 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/bg_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/bg_f.tex new file mode 100644 index 00000000..9b0d33ad --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/bg_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & SaT-U & WtP-U & WtP-T & C-R \\ +\midrule +SaT-Lora-T & - & 0.835 & 0.041 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.234 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.281 & 0.231 & 0.234 & 0.043 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.768 & 0.905 & 0.184 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.991 & 0.217 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.979 +% WtP-T: 0.954 +% WtP-U: 0.957 +% C-R: 0.674 +% L-3: 0.96 +% SaT-SM: 0.977 +% SaT-T: 0.957 +% SaT-U: 0.957 +% SaT-Lora-T: 0.979 +% SaT-Lora-U: 0.978 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/bn_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/bn_f.tex new file mode 100644 index 00000000..81a565c3 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/bn_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & SaT-U & L-3 & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.447 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.835 & 0.000 & 0.001 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.000 & 0.001 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.381 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.005 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.865 +% WtP-T: 0.821 +% WtP-U: 0.779 +% C-R: 0.048 +% L-3: 0.8 +% SaT-SM: 0.861 +% SaT-T: 0.82 +% SaT-U: 0.805 +% SaT-Lora-T: 0.886 +% SaT-Lora-U: 0.888 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ca_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ca_f.tex new file mode 100644 index 00000000..c822a12a --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ca_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & spacy-dp & WtP-T & SaT-U & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.010 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.015 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & 0.915 & 0.341 & 0.060 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.204 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.141 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.968 +% WtP-T: 0.935 +% WtP-U: 0.93 +% C-R: 0.713 +% L-3: 0.951 +% SaT-SM: 0.963 +% SaT-T: 0.942 +% SaT-U: 0.933 +% SaT-Lora-T: 0.972 +% SaT-Lora-U: 0.972 +% spacy-dp: 0.936 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/cs_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/cs_f.tex new file mode 100644 index 00000000..e8f0bc4b --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/cs_f.tex @@ -0,0 +1,24 @@ +\begin{tabular}{lrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & SaT-T & WtP-T & SaT-U & WtP-U & spacy-m \\ +\midrule +WtP-P & - & 0.080 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.034 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.155 & 0.000 & 0.003 \\ +SaT-U & - & - & - & - & - & - & 0.001 & 0.026 \\ +WtP-U & - & - & - & - & - & - & - & 0.914 \\ +spacy-m & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.964 +% WtP-T: 0.92 +% WtP-U: 0.911 +% SaT-SM: 0.957 +% SaT-T: 0.924 +% SaT-U: 0.917 +% SaT-Lora-T: 0.962 +% SaT-Lora-U: 0.961 +% spacy-m: 0.911 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/cy_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/cy_f.tex new file mode 100644 index 00000000..804e38ec --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/cy_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & SaT-U & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.055 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.762 & 0.005 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.001 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.902 +% WtP-T: 0.867 +% WtP-U: 0.839 +% C-R: 0.603 +% L-3: 0.725 +% SaT-SM: 0.895 +% SaT-T: 0.866 +% SaT-U: 0.856 +% SaT-Lora-T: 0.913 +% SaT-Lora-U: 0.914 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/da_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/da_f.tex new file mode 100644 index 00000000..39cef1a5 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/da_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & SaT-U & spacy-m & WtP-T & spacy-dp & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.245 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.050 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.305 & 0.048 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.006 & 0.021 & 0.000 & 0.003 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.195 & 0.004 & 0.038 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & 0.521 & 0.355 & 0.095 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.869 & 0.012 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.423 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.967 +% WtP-T: 0.922 +% WtP-U: 0.917 +% C-R: 0.746 +% L-3: 0.942 +% SaT-SM: 0.963 +% SaT-T: 0.937 +% SaT-U: 0.932 +% SaT-Lora-T: 0.97 +% SaT-Lora-U: 0.969 +% spacy-dp: 0.921 +% spacy-m: 0.925 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/de_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/de_f.tex new file mode 100644 index 00000000..aa5ae6d7 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/de_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & WtP-T & SaT-U & WtP-U & spacy-dp & spacy-m & C-R \\ +\midrule +SaT-Lora-T & - & 0.061 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.422 & 0.063 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.126 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.603 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.95 +% WtP-T: 0.92 +% WtP-U: 0.892 +% C-R: 0.791 +% L-3: 0.926 +% SaT-SM: 0.94 +% SaT-T: 0.924 +% SaT-U: 0.904 +% SaT-Lora-T: 0.954 +% SaT-Lora-U: 0.953 +% spacy-dp: 0.89 +% spacy-m: 0.847 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/el_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/el_f.tex new file mode 100644 index 00000000..9c59bb3d --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/el_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & SaT-T & SaT-U & WtP-T & L-3 & WtP-U & spacy-dp & C-R \\ +\midrule +SaT-Lora-T & - & 0.032 & 0.013 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.805 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.000 & 0.004 & 0.024 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.963 & 0.475 & 0.016 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.502 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.477 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.969 +% WtP-T: 0.948 +% WtP-U: 0.941 +% C-R: 0.659 +% L-3: 0.945 +% SaT-SM: 0.969 +% SaT-T: 0.955 +% SaT-U: 0.948 +% SaT-Lora-T: 0.975 +% SaT-Lora-U: 0.967 +% spacy-dp: 0.925 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/en_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/en_f.tex new file mode 100644 index 00000000..898e830b --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/en_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & L-3 & WtP-U & SaT-U & WtP-T & SaT-T & spacy-dp & spacy-m & C-R \\ +\midrule +WtP-P & - & 0.978 & 0.136 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.103 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.210 & 0.000 & 0.029 & 0.001 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.645 & 0.149 & 0.008 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.658 & 0.042 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.058 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.967 +% WtP-T: 0.935 +% WtP-U: 0.939 +% C-R: 0.846 +% L-3: 0.952 +% SaT-SM: 0.965 +% SaT-T: 0.934 +% SaT-U: 0.936 +% SaT-Lora-T: 0.967 +% SaT-Lora-U: 0.967 +% spacy-dp: 0.929 +% spacy-m: 0.915 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/eo_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/eo_f.tex new file mode 100644 index 00000000..cf0e8fbe --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/eo_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & WtP-U & WtP-T & SaT-U & SaT-T & C-R \\ +\midrule +SaT-Lora-T & - & 0.193 & 0.007 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.341 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.186 & 0.033 & 0.005 & 0.006 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.006 & 0.069 & 0.065 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.620 & 0.610 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 1.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.954 +% WtP-T: 0.905 +% WtP-U: 0.909 +% C-R: 0.846 +% L-3: 0.916 +% SaT-SM: 0.952 +% SaT-T: 0.903 +% SaT-U: 0.903 +% SaT-Lora-T: 0.958 +% SaT-Lora-U: 0.957 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/es_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/es_f.tex new file mode 100644 index 00000000..7eb40f56 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/es_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & spacy-m & WtP-T & SaT-U & spacy-dp & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.007 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.780 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.671 & 0.021 & 0.000 & 0.002 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & 0.253 & 0.128 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.577 & 0.079 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.150 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.348 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.974 +% WtP-T: 0.942 +% WtP-U: 0.932 +% C-R: 0.81 +% L-3: 0.96 +% SaT-SM: 0.973 +% SaT-T: 0.946 +% SaT-U: 0.94 +% SaT-Lora-T: 0.977 +% SaT-Lora-U: 0.977 +% spacy-dp: 0.935 +% spacy-m: 0.945 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/et_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/et_f.tex new file mode 100644 index 00000000..f73bbcc7 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/et_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & WtP-T & SaT-U & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.066 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.228 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.969 +% WtP-T: 0.92 +% WtP-U: 0.904 +% C-R: 0.731 +% L-3: 0.934 +% SaT-SM: 0.967 +% SaT-T: 0.926 +% SaT-U: 0.911 +% SaT-Lora-T: 0.971 +% SaT-Lora-U: 0.97 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/eu_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/eu_f.tex new file mode 100644 index 00000000..31ed5b35 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/eu_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & L-3 & WtP-U & SaT-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.020 & 0.061 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.840 & 0.371 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.670 & 0.002 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.957 +% WtP-T: 0.916 +% WtP-U: 0.908 +% C-R: 0.686 +% L-3: 0.909 +% SaT-SM: 0.95 +% SaT-T: 0.91 +% SaT-U: 0.896 +% SaT-Lora-T: 0.964 +% SaT-Lora-U: 0.964 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fa_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fa_f.tex new file mode 100644 index 00000000..6cefa0d9 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fa_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & L-3 & SaT-SM & WtP-T & WtP-U & SaT-T & SaT-U & spacy-m & C-R \\ +\midrule +SaT-Lora-T & - & 0.036 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & 0.808 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.095 & 0.037 & 0.013 & 0.005 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.484 & 0.139 & 0.043 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.380 & 0.138 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.259 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.863 +% WtP-T: 0.786 +% WtP-U: 0.781 +% C-R: 0.692 +% L-3: 0.801 +% SaT-SM: 0.8 +% SaT-T: 0.779 +% SaT-U: 0.776 +% SaT-Lora-T: 0.87 +% SaT-Lora-U: 0.872 +% spacy-m: 0.772 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fi_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fi_f.tex new file mode 100644 index 00000000..a51bbf53 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fi_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & L-3 & SaT-T & SaT-U & WtP-T & spacy-dp & spacy-m & WtP-U & C-R \\ +\midrule +WtP-P & - & 0.436 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.011 & 0.058 & 0.114 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.683 & 0.683 & 0.012 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.943 & 0.038 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & 0.013 & 0.016 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.751 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.977 +% WtP-T: 0.941 +% WtP-U: 0.934 +% C-R: 0.741 +% L-3: 0.955 +% SaT-SM: 0.969 +% SaT-T: 0.945 +% SaT-U: 0.942 +% SaT-Lora-T: 0.975 +% SaT-Lora-U: 0.976 +% spacy-dp: 0.941 +% spacy-m: 0.935 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fr_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fr_f.tex new file mode 100644 index 00000000..953f1c99 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fr_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & L-3 & SaT-SM & WtP-P & SaT-U & SaT-T & WtP-U & WtP-T & spacy-m & spacy-dp & C-R \\ +\midrule +SaT-Lora-T & - & 0.011 & 0.010 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & 0.741 & 0.640 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.801 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & - & 0.009 & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.117 & 0.022 & 0.002 & 0.010 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.133 & 0.026 & 0.033 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.383 & 0.276 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.426 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & 0.819 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.983 +% WtP-T: 0.966 +% WtP-U: 0.968 +% C-R: 0.885 +% L-3: 0.985 +% SaT-SM: 0.984 +% SaT-T: 0.972 +% SaT-U: 0.974 +% SaT-Lora-T: 0.99 +% SaT-Lora-U: 0.99 +% spacy-dp: 0.887 +% spacy-m: 0.962 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fy_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fy_f.tex new file mode 100644 index 00000000..6f59f11d --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/fy_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-T & SaT-U & WtP-T & WtP-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.203 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.159 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.881 +% WtP-T: 0.61 +% WtP-U: 0.444 +% C-R: 0.306 +% L-3: 0.424 +% SaT-SM: 0.91 +% SaT-T: 0.677 +% SaT-U: 0.649 +% SaT-Lora-T: 0.888 +% SaT-Lora-U: 0.888 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ga_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ga_f.tex new file mode 100644 index 00000000..2b8b4be7 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ga_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & SaT-U & WtP-T & L-3 & WtP-U & spacy-m & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.065 & 0.011 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.191 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.018 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.006 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.928 +% WtP-T: 0.839 +% WtP-U: 0.811 +% C-R: 0.647 +% L-3: 0.829 +% SaT-SM: 0.881 +% SaT-T: 0.863 +% SaT-U: 0.848 +% SaT-Lora-T: 0.947 +% SaT-Lora-U: 0.95 +% spacy-m: 0.786 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gd_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gd_f.tex new file mode 100644 index 00000000..6e6c510e --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gd_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-U & WtP-T & SaT-T & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.813 & 0.028 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.073 & 0.014 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.223 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.861 +% WtP-T: 0.772 +% WtP-U: 0.774 +% C-R: 0.524 +% L-3: 0.652 +% SaT-SM: 0.834 +% SaT-T: 0.757 +% SaT-U: 0.748 +% SaT-Lora-T: 0.884 +% SaT-Lora-U: 0.875 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gl_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gl_f.tex new file mode 100644 index 00000000..fb0772d0 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gl_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & WtP-U & SaT-T & L-3 & SaT-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.069 & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.300 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.000 & 0.008 & 0.022 & 0.001 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.764 & 0.552 & 0.332 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.697 & 0.222 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.941 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.963 +% WtP-T: 0.938 +% WtP-U: 0.93 +% C-R: 0.727 +% L-3: 0.927 +% SaT-SM: 0.96 +% SaT-T: 0.929 +% SaT-U: 0.926 +% SaT-Lora-T: 0.967 +% SaT-Lora-U: 0.966 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gu_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gu_f.tex new file mode 100644 index 00000000..235124f4 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/gu_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-U & SaT-T & WtP-U & WtP-T & SaT-SM & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & 0.286 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.543 & 0.002 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.005 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.866 +% WtP-T: 0.792 +% WtP-U: 0.794 +% C-R: 0.458 +% L-3: 0.631 +% SaT-SM: 0.77 +% SaT-T: 0.815 +% SaT-U: 0.818 +% SaT-Lora-T: 0.88 +% SaT-Lora-U: 0.877 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ha_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ha_f.tex new file mode 100644 index 00000000..49917437 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ha_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & WtP-P & SaT-SM & SaT-Lora-T & WtP-T & SaT-T & L-3 & SaT-U & WtP-U & C-R \\ +\midrule +WtP-P & - & 0.829 & 0.317 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.409 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.146 & 0.079 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.515 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.915 +% WtP-T: 0.889 +% WtP-U: 0.828 +% C-R: 0.658 +% L-3: 0.881 +% SaT-SM: 0.914 +% SaT-T: 0.884 +% SaT-U: 0.838 +% SaT-Lora-T: 0.91 +% SaT-Lora-U: 0.894 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/he_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/he_f.tex new file mode 100644 index 00000000..8b5e71e4 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/he_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & WtP-T & WtP-U & SaT-T & L-3 & SaT-U & C-R \\ +\midrule +WtP-P & - & 0.509 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.008 & 0.008 & 0.000 & 0.004 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.760 & 0.789 & 0.691 & 0.014 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.971 & 0.823 & 0.054 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.810 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.159 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.955 +% WtP-T: 0.927 +% WtP-U: 0.927 +% C-R: 0.699 +% L-3: 0.925 +% SaT-SM: 0.938 +% SaT-T: 0.926 +% SaT-U: 0.918 +% SaT-Lora-T: 0.952 +% SaT-Lora-U: 0.945 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hi_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hi_f.tex new file mode 100644 index 00000000..4766b7c1 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hi_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & WtP-T & WtP-U & SaT-U & SaT-T & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.034 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.395 & 0.168 & 0.050 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.143 & 0.146 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.541 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.908 +% WtP-T: 0.852 +% WtP-U: 0.85 +% C-R: 0.72 +% L-3: 0.856 +% SaT-SM: 0.903 +% SaT-T: 0.842 +% SaT-U: 0.849 +% SaT-Lora-T: 0.929 +% SaT-Lora-U: 0.927 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hu_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hu_f.tex new file mode 100644 index 00000000..30802e1f --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hu_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & SaT-U & WtP-T & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.705 & 0.092 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.210 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.023 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.002 & 0.007 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.174 & 0.007 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.092 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.979 +% WtP-T: 0.942 +% WtP-U: 0.938 +% C-R: 0.679 +% L-3: 0.962 +% SaT-SM: 0.977 +% SaT-T: 0.952 +% SaT-U: 0.946 +% SaT-Lora-T: 0.979 +% SaT-Lora-U: 0.98 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hy_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hy_f.tex new file mode 100644 index 00000000..2ffbe4a7 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/hy_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & WtP-P & SaT-SM & SaT-Lora-T & SaT-U & SaT-T & WtP-T & WtP-U & L-3 & C-R \\ +\midrule +WtP-P & - & 0.785 & 0.809 & 0.089 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 1.000 & 0.135 & 0.004 & 0.001 & 0.001 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & 0.175 & 0.003 & 0.001 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & 0.021 & 0.019 & 0.013 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.446 & 0.294 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.726 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.985 +% WtP-T: 0.962 +% WtP-U: 0.96 +% C-R: 0.503 +% L-3: 0.92 +% SaT-SM: 0.984 +% SaT-T: 0.967 +% SaT-U: 0.976 +% SaT-Lora-T: 0.983 +% SaT-Lora-U: 0.981 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/id_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/id_f.tex new file mode 100644 index 00000000..dfe1c5be --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/id_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & spacy-m & WtP-T & WtP-U & SaT-T & SaT-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.588 & 0.111 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.422 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & 0.950 & 0.213 & 0.149 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.002 & 0.024 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.838 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.939 +% WtP-T: 0.895 +% WtP-U: 0.889 +% C-R: 0.713 +% L-3: 0.923 +% SaT-SM: 0.937 +% SaT-T: 0.889 +% SaT-U: 0.866 +% SaT-Lora-T: 0.941 +% SaT-Lora-U: 0.939 +% spacy-m: 0.896 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ig_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ig_f.tex new file mode 100644 index 00000000..0c684bae --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ig_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & SaT-T & WtP-T & SaT-U & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.717 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.095 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.534 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.902 +% WtP-T: 0.821 +% WtP-U: 0.786 +% C-R: 0.28 +% L-3: 0.393 +% SaT-SM: 0.921 +% SaT-T: 0.833 +% SaT-U: 0.817 +% SaT-Lora-T: 0.923 +% SaT-Lora-U: 0.923 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/is_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/is_f.tex new file mode 100644 index 00000000..5719bc22 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/is_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & WtP-T & WtP-U & SaT-T & SaT-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.295 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.966 +% WtP-T: 0.916 +% WtP-U: 0.898 +% C-R: 0.762 +% L-3: 0.946 +% SaT-SM: 0.961 +% SaT-T: 0.864 +% SaT-U: 0.836 +% SaT-Lora-T: 0.967 +% SaT-Lora-U: 0.968 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/it_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/it_f.tex new file mode 100644 index 00000000..9707de08 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/it_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & spacy-dp & SaT-U & WtP-T & WtP-U & spacy-m & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.251 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.966 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & 0.111 & 0.008 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.117 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.000 & 0.002 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.807 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.964 +% WtP-T: 0.91 +% WtP-U: 0.892 +% C-R: 0.837 +% L-3: 0.944 +% SaT-SM: 0.948 +% SaT-T: 0.924 +% SaT-U: 0.917 +% SaT-Lora-T: 0.97 +% SaT-Lora-U: 0.969 +% spacy-dp: 0.924 +% spacy-m: 0.89 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ja_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ja_f.tex new file mode 100644 index 00000000..0b2dab70 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ja_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-T & SaT-U & SaT-SM & WtP-T & spacy-dp & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & 0.187 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.931 +% WtP-T: 0.856 +% WtP-U: 0.727 +% C-R: 0.522 +% L-3: 0.647 +% SaT-SM: 0.881 +% SaT-T: 0.896 +% SaT-U: 0.886 +% SaT-Lora-T: 0.944 +% SaT-Lora-U: 0.942 +% spacy-dp: 0.771 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ka_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ka_f.tex new file mode 100644 index 00000000..15e6382c --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ka_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & WtP-U & WtP-T & L-3 & SaT-T & SaT-U & C-R \\ +\midrule +SaT-SM & - & 0.073 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.010 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.149 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.928 +% WtP-T: 0.911 +% WtP-U: 0.913 +% C-R: 0.256 +% L-3: 0.892 +% SaT-SM: 0.936 +% SaT-T: 0.839 +% SaT-U: 0.757 +% SaT-Lora-T: 0.933 +% SaT-Lora-U: 0.934 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/kk_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/kk_f.tex new file mode 100644 index 00000000..12f0785f --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/kk_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & WtP-P & SaT-U & SaT-Lora-T & SaT-T & WtP-U & L-3 & WtP-T & C-R \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.009 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & 0.313 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & - & 0.000 & 0.002 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.528 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.780 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.922 +% WtP-T: 0.845 +% WtP-U: 0.891 +% C-R: 0.691 +% L-3: 0.846 +% SaT-SM: 0.971 +% SaT-T: 0.893 +% SaT-U: 0.911 +% SaT-Lora-T: 0.906 +% SaT-Lora-U: 0.963 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/km_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/km_f.tex new file mode 100644 index 00000000..37e17bb7 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/km_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & SaT-U & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.672 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.423 & 0.003 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.855 +% WtP-T: 0.812 +% WtP-U: 0.71 +% C-R: 0.055 +% L-3: 0.477 +% SaT-SM: 0.853 +% SaT-T: 0.809 +% SaT-U: 0.799 +% SaT-Lora-T: 0.899 +% SaT-Lora-U: 0.892 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/kn_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/kn_f.tex new file mode 100644 index 00000000..0071b6a9 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/kn_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-U & SaT-T & WtP-U & WtP-T & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & 0.315 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.78 +% WtP-T: 0.604 +% WtP-U: 0.645 +% C-R: 0.055 +% L-3: 0.267 +% SaT-SM: 0.879 +% SaT-T: 0.699 +% SaT-U: 0.702 +% SaT-Lora-T: 0.839 +% SaT-Lora-U: 0.828 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ko_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ko_f.tex new file mode 100644 index 00000000..276aaae0 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ko_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & SaT-U & L-3 & WtP-T & WtP-U & spacy-m & spacy-dp & C-R \\ +\midrule +SaT-Lora-T & - & 0.564 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.041 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.049 & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.725 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.907 +% WtP-T: 0.849 +% WtP-U: 0.78 +% C-R: 0.594 +% L-3: 0.851 +% SaT-SM: 0.894 +% SaT-T: 0.867 +% SaT-U: 0.86 +% SaT-Lora-T: 0.909 +% SaT-Lora-U: 0.91 +% spacy-dp: 0.733 +% spacy-m: 0.753 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ku_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ku_f.tex new file mode 100644 index 00000000..cb6ebd71 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ku_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & WtP-U & SaT-U & SaT-T & WtP-T & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.750 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.183 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.172 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.851 +% WtP-T: 0.664 +% WtP-U: 0.781 +% C-R: 0.298 +% L-3: 0.419 +% SaT-SM: 0.911 +% SaT-T: 0.677 +% SaT-U: 0.772 +% SaT-Lora-T: 0.909 +% SaT-Lora-U: 0.909 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ky_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ky_f.tex new file mode 100644 index 00000000..23c33b18 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ky_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & WtP-U & WtP-T & SaT-T & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.624 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.846 & 0.591 & 0.537 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.664 & 0.615 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.704 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.903 +% WtP-T: 0.844 +% WtP-U: 0.845 +% C-R: 0.265 +% L-3: 0.583 +% SaT-SM: 0.918 +% SaT-T: 0.841 +% SaT-U: 0.841 +% SaT-Lora-T: 0.92 +% SaT-Lora-U: 0.92 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/la_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/la_f.tex new file mode 100644 index 00000000..b3f7207f --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/la_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & WtP-T & WtP-U & SaT-T & SaT-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.291 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.028 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.195 & 0.097 & 0.007 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.707 & 0.087 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.175 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.028 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.973 +% WtP-T: 0.893 +% WtP-U: 0.892 +% C-R: 0.651 +% L-3: 0.9 +% SaT-SM: 0.966 +% SaT-T: 0.884 +% SaT-U: 0.678 +% SaT-Lora-T: 0.975 +% SaT-Lora-U: 0.974 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/lt_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/lt_f.tex new file mode 100644 index 00000000..403a5aec --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/lt_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & WtP-T & SaT-U & L-3 & WtP-U & spacy-m & spacy-dp & C-R \\ +\midrule +SaT-Lora-T & - & 0.559 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.776 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.549 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.963 +% WtP-T: 0.928 +% WtP-U: 0.904 +% C-R: 0.714 +% L-3: 0.907 +% SaT-SM: 0.954 +% SaT-T: 0.929 +% SaT-U: 0.92 +% SaT-Lora-T: 0.964 +% SaT-Lora-U: 0.963 +% spacy-dp: 0.819 +% spacy-m: 0.879 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/lv_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/lv_f.tex new file mode 100644 index 00000000..670e9bf8 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/lv_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & WtP-T & L-3 & SaT-U & spacy-m & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.809 & 0.609 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.739 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.009 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.019 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & 0.013 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.966 +% WtP-T: 0.931 +% WtP-U: 0.904 +% C-R: 0.742 +% L-3: 0.93 +% SaT-SM: 0.961 +% SaT-T: 0.931 +% SaT-U: 0.922 +% SaT-Lora-T: 0.97 +% SaT-Lora-U: 0.971 +% spacy-m: 0.914 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mg_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mg_f.tex new file mode 100644 index 00000000..ec5f5f72 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mg_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & WtP-U & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.701 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.735 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.189 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.164 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.953 +% WtP-T: 0.915 +% WtP-U: 0.891 +% C-R: 0.64 +% L-3: 0.857 +% SaT-SM: 0.916 +% SaT-T: 0.896 +% SaT-U: 0.885 +% SaT-Lora-T: 0.954 +% SaT-Lora-U: 0.955 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mk_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mk_f.tex new file mode 100644 index 00000000..5116a4e1 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mk_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & L-3 & SaT-U & SaT-T & WtP-T & WtP-U & spacy-dp & C-R \\ +\midrule +WtP-P & - & 0.436 & 0.210 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.592 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.005 & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 1.000 & 0.015 & 0.007 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.015 & 0.005 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.128 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.956 +% WtP-T: 0.924 +% WtP-U: 0.923 +% C-R: 0.482 +% L-3: 0.941 +% SaT-SM: 0.954 +% SaT-T: 0.93 +% SaT-U: 0.93 +% SaT-Lora-T: 0.955 +% SaT-Lora-U: 0.955 +% spacy-dp: 0.822 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ml_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ml_f.tex new file mode 100644 index 00000000..755f83a8 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ml_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & WtP-T & SaT-T & L-3 & WtP-U & SaT-U & C-R \\ +\midrule +WtP-P & - & 0.931 & 0.193 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.135 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.110 & 0.213 & 0.001 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.893 & 0.040 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.197 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.865 +% WtP-T: 0.817 +% WtP-U: 0.8 +% C-R: 0.007 +% L-3: 0.809 +% SaT-SM: 0.859 +% SaT-T: 0.81 +% SaT-U: 0.776 +% SaT-Lora-T: 0.865 +% SaT-Lora-U: 0.87 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mr_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mr_f.tex new file mode 100644 index 00000000..8663e152 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mr_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-SM & WtP-P & SaT-Lora-T & WtP-T & SaT-T & spacy-m & L-3 & WtP-U & SaT-U & C-R \\ +\midrule +SaT-SM & - & 0.673 & 0.134 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.374 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & 0.000 & 0.000 & 0.002 & 0.006 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.718 & 0.680 & 0.610 & 0.168 & 0.107 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.975 & 0.842 & 0.726 & 0.012 & 0.000 \\ +spacy-m & - & - & - & - & - & - & 0.740 & 0.834 & 0.335 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.974 & 0.452 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.284 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.961 +% WtP-T: 0.903 +% WtP-U: 0.889 +% C-R: 0.684 +% L-3: 0.891 +% SaT-SM: 0.967 +% SaT-T: 0.896 +% SaT-U: 0.867 +% SaT-Lora-T: 0.951 +% SaT-Lora-U: 0.959 +% spacy-m: 0.895 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ms_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ms_f.tex new file mode 100644 index 00000000..08cfb6ac --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ms_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & WtP-P & SaT-Lora-T & L-3 & WtP-T & SaT-T & WtP-U & SaT-U & C-R \\ +\midrule +SaT-SM & - & 0.691 & 0.221 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.461 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.165 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.338 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.004 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.94 +% WtP-T: 0.879 +% WtP-U: 0.87 +% C-R: 0.679 +% L-3: 0.91 +% SaT-SM: 0.941 +% SaT-T: 0.874 +% SaT-U: 0.858 +% SaT-Lora-T: 0.938 +% SaT-Lora-U: 0.941 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mt_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mt_f.tex new file mode 100644 index 00000000..7e23fbf2 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/mt_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & L-3 & WtP-T & SaT-T & WtP-U & SaT-U & C-R \\ +\midrule +WtP-P & - & 0.033 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.048 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.225 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.119 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.91 +% WtP-T: 0.838 +% WtP-U: 0.752 +% C-R: 0.676 +% L-3: 0.866 +% SaT-SM: 0.891 +% SaT-T: 0.831 +% SaT-U: 0.745 +% SaT-Lora-T: 0.901 +% SaT-Lora-U: 0.902 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/my_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/my_f.tex new file mode 100644 index 00000000..02c0f2ad --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/my_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-T & WtP-T & SaT-U & WtP-U & C-R & L-3 \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.498 & 0.160 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.763 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & 0.433 \\ +L-3 & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.822 +% WtP-T: 0.743 +% WtP-U: 0.689 +% C-R: 0.171 +% L-3: 0.163 +% SaT-SM: 0.894 +% SaT-T: 0.749 +% SaT-U: 0.741 +% SaT-Lora-T: 0.867 +% SaT-Lora-U: 0.86 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ne_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ne_f.tex new file mode 100644 index 00000000..ed8424af --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ne_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-T & SaT-U & WtP-U & WtP-T & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.103 & 0.066 & 0.038 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.240 & 0.140 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.660 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.743 +% WtP-T: 0.687 +% WtP-U: 0.689 +% C-R: 0.233 +% L-3: 0.397 +% SaT-SM: 0.82 +% SaT-T: 0.703 +% SaT-U: 0.698 +% SaT-Lora-T: 0.773 +% SaT-Lora-U: 0.763 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/nl_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/nl_f.tex new file mode 100644 index 00000000..5d140899 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/nl_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & L-3 & SaT-SM & WtP-U & spacy-dp & WtP-T & spacy-m & SaT-U & SaT-T & C-R \\ +\midrule +WtP-P & - & 0.071 & 0.105 & 0.009 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.975 & 0.582 & 0.011 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & 0.709 & 0.029 & 0.001 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & 0.043 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.265 & 0.036 & 0.160 & 0.057 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & 0.788 & 0.710 & 0.570 & 0.022 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.919 & 0.704 & 0.007 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & 0.835 & 0.090 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & - & 0.012 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.97 +% WtP-T: 0.929 +% WtP-U: 0.941 +% C-R: 0.663 +% L-3: 0.96 +% SaT-SM: 0.957 +% SaT-T: 0.91 +% SaT-U: 0.926 +% SaT-Lora-T: 0.96 +% SaT-Lora-U: 0.971 +% spacy-dp: 0.931 +% spacy-m: 0.928 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/no_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/no_f.tex new file mode 100644 index 00000000..2b832924 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/no_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & SaT-T & SaT-U & WtP-T & WtP-U & spacy-m & L-3 & C-R \\ +\midrule +WtP-P & - & 0.797 & 0.016 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.208 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.007 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.060 & 0.085 & 0.075 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.280 & 0.243 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & 0.836 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.977 +% WtP-T: 0.963 +% WtP-U: 0.962 +% C-R: 0.705 +% L-3: 0.959 +% SaT-SM: 0.974 +% SaT-T: 0.968 +% SaT-U: 0.967 +% SaT-Lora-T: 0.977 +% SaT-Lora-U: 0.978 +% spacy-m: 0.959 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pa_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pa_f.tex new file mode 100644 index 00000000..e0012074 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pa_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-T & SaT-U & WtP-T & WtP-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.016 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.932 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.773 +% WtP-T: 0.622 +% WtP-U: 0.556 +% C-R: 0.144 +% L-3: 0.267 +% SaT-SM: 0.81 +% SaT-T: 0.695 +% SaT-U: 0.695 +% SaT-Lora-T: 0.796 +% SaT-Lora-U: 0.783 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pl_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pl_f.tex new file mode 100644 index 00000000..7bbbdae0 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pl_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & L-3 & spacy-dp & SaT-T & SaT-U & WtP-U & WtP-T & C-R \\ +\midrule +SaT-SM & - & 0.790 & 0.285 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.372 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.014 & 0.073 & 0.026 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.487 & 0.285 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.592 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.975 +% WtP-T: 0.935 +% WtP-U: 0.936 +% C-R: 0.786 +% L-3: 0.962 +% SaT-SM: 0.977 +% SaT-T: 0.94 +% SaT-U: 0.937 +% SaT-Lora-T: 0.977 +% SaT-Lora-U: 0.978 +% spacy-dp: 0.953 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ps_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ps_f.tex new file mode 100644 index 00000000..6b724921 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ps_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & WtP-T & SaT-U & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.035 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.488 & 0.030 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.680 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.86 +% WtP-T: 0.807 +% WtP-U: 0.735 +% C-R: 0.389 +% L-3: 0.612 +% SaT-SM: 0.841 +% SaT-T: 0.81 +% SaT-U: 0.805 +% SaT-Lora-T: 0.869 +% SaT-Lora-U: 0.861 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pt_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pt_f.tex new file mode 100644 index 00000000..2418b2f2 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/pt_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & SaT-T & spacy-dp & SaT-U & L-3 & WtP-T & spacy-m & WtP-U & C-R \\ +\midrule +WtP-P & - & 0.082 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.928 & 0.023 & 0.047 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & 0.365 & 0.070 & 0.003 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.279 & 0.004 & 0.013 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.429 & 0.120 & 0.017 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.578 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.274 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.969 +% WtP-T: 0.935 +% WtP-U: 0.929 +% C-R: 0.765 +% L-3: 0.938 +% SaT-SM: 0.955 +% SaT-T: 0.945 +% SaT-U: 0.942 +% SaT-Lora-T: 0.966 +% SaT-Lora-U: 0.965 +% spacy-dp: 0.945 +% spacy-m: 0.933 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ro_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ro_f.tex new file mode 100644 index 00000000..d5f40c4b --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ro_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & spacy-m & spacy-dp & WtP-T & SaT-T & WtP-U & SaT-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.039 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.013 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & 0.022 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.009 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.985 +% WtP-T: 0.931 +% WtP-U: 0.89 +% C-R: 0.671 +% L-3: 0.954 +% SaT-SM: 0.98 +% SaT-T: 0.898 +% SaT-U: 0.872 +% SaT-Lora-T: 0.987 +% SaT-Lora-U: 0.987 +% spacy-dp: 0.939 +% spacy-m: 0.947 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ru_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ru_f.tex new file mode 100644 index 00000000..5b51d22b --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ru_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & L-3 & WtP-T & WtP-U & SaT-T & SaT-U & spacy-m & spacy-dp & C-R \\ +\midrule +WtP-P & - & 0.129 & 0.055 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.622 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.270 & 0.005 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.031 & 0.003 & 0.001 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.100 & 0.017 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.061 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.005 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.963 +% WtP-T: 0.922 +% WtP-U: 0.912 +% C-R: 0.707 +% L-3: 0.928 +% SaT-SM: 0.956 +% SaT-T: 0.903 +% SaT-U: 0.9 +% SaT-Lora-T: 0.958 +% SaT-Lora-U: 0.954 +% spacy-dp: 0.872 +% spacy-m: 0.887 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/si_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/si_f.tex new file mode 100644 index 00000000..0ea4f1b3 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/si_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & SaT-T & WtP-T & WtP-U & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.269 & 0.209 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.903 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.494 & 0.090 & 0.004 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.123 & 0.044 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.496 & 0.001 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.002 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.854 +% WtP-T: 0.801 +% WtP-U: 0.795 +% C-R: 0.086 +% L-3: 0.769 +% SaT-SM: 0.854 +% SaT-T: 0.804 +% SaT-U: 0.792 +% SaT-Lora-T: 0.859 +% SaT-Lora-U: 0.855 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sk_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sk_f.tex new file mode 100644 index 00000000..e360261c --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sk_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & WtP-T & SaT-T & SaT-U & WtP-U & L-3 & spacy-m & C-R \\ +\midrule +WtP-P & - & 0.170 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.025 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.815 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.412 & 0.160 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.439 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.97 +% WtP-T: 0.941 +% WtP-U: 0.929 +% C-R: 0.742 +% L-3: 0.925 +% SaT-SM: 0.962 +% SaT-T: 0.94 +% SaT-U: 0.931 +% SaT-Lora-T: 0.967 +% SaT-Lora-U: 0.964 +% spacy-m: 0.909 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sl_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sl_f.tex new file mode 100644 index 00000000..adeeb94a --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sl_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & L-3 & SaT-T & WtP-T & SaT-U & WtP-U & C-R \\ +\midrule +SaT-SM & - & 0.761 & 0.106 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.168 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.021 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.300 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.001 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.97 +% WtP-T: 0.945 +% WtP-U: 0.935 +% C-R: 0.696 +% L-3: 0.962 +% SaT-SM: 0.973 +% SaT-T: 0.949 +% SaT-U: 0.942 +% SaT-Lora-T: 0.972 +% SaT-Lora-U: 0.974 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sq_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sq_f.tex new file mode 100644 index 00000000..0f0e4219 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sq_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & WtP-P & SaT-Lora-T & L-3 & SaT-T & WtP-T & SaT-U & WtP-U & C-R \\ +\midrule +SaT-SM & - & 0.447 & 0.221 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.899 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.013 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.537 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.003 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.955 +% WtP-T: 0.899 +% WtP-U: 0.887 +% C-R: 0.593 +% L-3: 0.923 +% SaT-SM: 0.957 +% SaT-T: 0.911 +% SaT-U: 0.897 +% SaT-Lora-T: 0.955 +% SaT-Lora-U: 0.954 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sr_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sr_f.tex new file mode 100644 index 00000000..d82a8ccd --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sr_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & SaT-T & WtP-T & spacy-m & SaT-U & WtP-U & L-3 & C-R \\ +\midrule +WtP-P & - & 0.173 & 0.005 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.044 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.899 & 0.850 & 0.050 & 0.077 & 0.046 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.933 & 0.324 & 0.003 & 0.073 & 0.000 \\ +spacy-m & - & - & - & - & - & - & 0.491 & 0.288 & 0.039 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.532 & 0.217 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.517 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.981 +% WtP-T: 0.963 +% WtP-U: 0.958 +% C-R: 0.746 +% L-3: 0.956 +% SaT-SM: 0.976 +% SaT-T: 0.963 +% SaT-U: 0.96 +% SaT-Lora-T: 0.979 +% SaT-Lora-U: 0.977 +% spacy-m: 0.962 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sv_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sv_f.tex new file mode 100644 index 00000000..80dfa3cc --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/sv_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & spacy-m & SaT-T & WtP-T & SaT-U & WtP-U & spacy-dp & C-R \\ +\midrule +SaT-Lora-T & - & 0.665 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.014 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.002 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & 0.964 & 0.490 & 0.011 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.359 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.012 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.011 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.961 +% WtP-T: 0.937 +% WtP-U: 0.926 +% C-R: 0.749 +% L-3: 0.949 +% SaT-SM: 0.956 +% SaT-T: 0.939 +% SaT-U: 0.932 +% SaT-Lora-T: 0.962 +% SaT-Lora-U: 0.962 +% spacy-dp: 0.886 +% spacy-m: 0.939 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ta_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ta_f.tex new file mode 100644 index 00000000..a32543bb --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ta_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-U & SaT-T & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.892 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.774 & 0.079 & 0.041 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.033 & 0.084 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.918 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.911 +% WtP-T: 0.86 +% WtP-U: 0.851 +% C-R: 0.011 +% L-3: 0.796 +% SaT-SM: 0.91 +% SaT-T: 0.851 +% SaT-U: 0.859 +% SaT-Lora-T: 0.93 +% SaT-Lora-U: 0.919 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/te_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/te_f.tex new file mode 100644 index 00000000..9041d495 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/te_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & WtP-T & WtP-U & SaT-U & SaT-T & L-3 & spacy-m & C-R \\ +\midrule +SaT-SM & - & 0.024 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.928 & 0.100 & 0.012 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.118 & 0.015 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.055 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.021 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.836 +% WtP-T: 0.775 +% WtP-U: 0.774 +% C-R: 0.361 +% L-3: 0.659 +% SaT-SM: 0.868 +% SaT-T: 0.76 +% SaT-U: 0.765 +% SaT-Lora-T: 0.856 +% SaT-Lora-U: 0.854 +% spacy-m: 0.641 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/tg_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/tg_f.tex new file mode 100644 index 00000000..0ffd57c9 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/tg_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & WtP-T & SaT-T & WtP-U & SaT-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.523 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.009 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.090 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.013 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.255 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.91 +% WtP-T: 0.827 +% WtP-U: 0.801 +% C-R: 0.549 +% L-3: 0.761 +% SaT-SM: 0.923 +% SaT-T: 0.817 +% SaT-U: 0.796 +% SaT-Lora-T: 0.921 +% SaT-Lora-U: 0.91 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/th_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/th_f.tex new file mode 100644 index 00000000..60a316ca --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/th_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & SaT-T & WtP-T & SaT-U & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.098 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.257 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.037 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.046 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.587 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.713 +% WtP-T: 0.697 +% WtP-U: 0.666 +% C-R: 0.106 +% L-3: 0.66 +% SaT-SM: 0.729 +% SaT-T: 0.707 +% SaT-U: 0.68 +% SaT-Lora-T: 0.737 +% SaT-Lora-U: 0.729 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/tr_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/tr_f.tex new file mode 100644 index 00000000..56f10f8f --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/tr_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & L-3 & SaT-T & SaT-U & WtP-T & WtP-U & C-R \\ +\midrule +WtP-P & - & 0.957 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.005 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.006 & 0.004 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.873 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.973 +% WtP-T: 0.939 +% WtP-U: 0.939 +% C-R: 0.687 +% L-3: 0.952 +% SaT-SM: 0.969 +% SaT-T: 0.946 +% SaT-U: 0.943 +% SaT-Lora-T: 0.973 +% SaT-Lora-U: 0.974 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/uk_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/uk_f.tex new file mode 100644 index 00000000..9caed73d --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/uk_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & spacy-dp & L-3 & SaT-T & WtP-T & SaT-U & WtP-U & C-R \\ +\midrule +WtP-P & - & 1.000 & 0.030 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.021 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & 0.747 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.433 & 0.017 & 0.017 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.860 & 0.012 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.153 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.964 +% WtP-T: 0.906 +% WtP-U: 0.901 +% C-R: 0.71 +% L-3: 0.93 +% SaT-SM: 0.959 +% SaT-T: 0.908 +% SaT-U: 0.905 +% SaT-Lora-T: 0.964 +% SaT-Lora-U: 0.963 +% spacy-dp: 0.931 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ur_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ur_f.tex new file mode 100644 index 00000000..433b8adc --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/ur_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & SaT-U & WtP-T & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.500 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.033 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.125 & 0.167 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.903 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.829 +% WtP-T: 0.732 +% WtP-U: 0.724 +% C-R: 0.544 +% L-3: 0.723 +% SaT-SM: 0.799 +% SaT-T: 0.749 +% SaT-U: 0.745 +% SaT-Lora-T: 0.857 +% SaT-Lora-U: 0.841 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/uz_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/uz_f.tex new file mode 100644 index 00000000..6d87090f --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/uz_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & WtP-U & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.920 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.833 & 0.572 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.817 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.85 +% WtP-T: 0.789 +% WtP-U: 0.764 +% C-R: 0.448 +% L-3: 0.674 +% SaT-SM: 0.849 +% SaT-T: 0.765 +% SaT-U: 0.763 +% SaT-Lora-T: 0.876 +% SaT-Lora-U: 0.873 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/vi_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/vi_f.tex new file mode 100644 index 00000000..1ef2b6b8 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/vi_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & L-3 & SaT-T & spacy-m & WtP-T & SaT-U & WtP-U & C-R \\ +\midrule +SaT-SM & - & 0.950 & 0.775 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.854 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.663 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & 0.007 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.006 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.971 +% WtP-T: 0.92 +% WtP-U: 0.893 +% C-R: 0.848 +% L-3: 0.957 +% SaT-SM: 0.971 +% SaT-T: 0.932 +% SaT-U: 0.909 +% SaT-Lora-T: 0.971 +% SaT-Lora-U: 0.971 +% spacy-m: 0.931 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/xh_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/xh_f.tex new file mode 100644 index 00000000..f086fdda --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/xh_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-U & SaT-T & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.016 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.632 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.500 & 0.472 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.751 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.898 +% WtP-T: 0.807 +% WtP-U: 0.772 +% C-R: 0.561 +% L-3: 0.717 +% SaT-SM: 0.896 +% SaT-T: 0.803 +% SaT-U: 0.803 +% SaT-Lora-T: 0.908 +% SaT-Lora-U: 0.907 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/yi_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/yi_f.tex new file mode 100644 index 00000000..d0bd4e3a --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/yi_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & WtP-T & WtP-U & SaT-T & SaT-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.132 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.807 +% WtP-T: 0.739 +% WtP-U: 0.73 +% C-R: 0.083 +% L-3: 0.136 +% SaT-SM: 0.89 +% SaT-T: 0.702 +% SaT-U: 0.611 +% SaT-Lora-T: 0.866 +% SaT-Lora-U: 0.831 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/zh_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/zh_f.tex new file mode 100644 index 00000000..2f66b17c --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/zh_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & WtP-U & WtP-T & SaT-SM & spacy-dp & SaT-T & L-3 & SaT-U & C-R \\ +\midrule +WtP-P & - & 0.014 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.241 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.023 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.955 +% WtP-T: 0.893 +% WtP-U: 0.907 +% C-R: 0.737 +% L-3: 0.82 +% SaT-SM: 0.889 +% SaT-T: 0.831 +% SaT-U: 0.78 +% SaT-Lora-T: 0.949 +% SaT-Lora-U: 0.95 +% spacy-dp: 0.877 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/zu_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/zu_f.tex new file mode 100644 index 00000000..5c519fad --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/main_table_mean/zu_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-T & WtP-T & SaT-U & WtP-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.134 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.906 +% WtP-T: 0.831 +% WtP-U: 0.727 +% C-R: 0.349 +% L-3: 0.425 +% SaT-SM: 0.933 +% SaT-T: 0.848 +% SaT-U: 0.821 +% SaT-Lora-T: 0.92 +% SaT-Lora-U: 0.919 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/af_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/af_f.tex new file mode 100644 index 00000000..f8339f3c --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/af_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & SaT-U & WtP-T & WtP-U & L-3 & C-R & spacy-m \\ +\midrule +SaT-Lora-T & - & 0.173 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.878 +% WtP-T: 0.764 +% WtP-U: 0.746 +% C-R: 0.558 +% L-3: 0.654 +% SaT-SM: 0.862 +% SaT-T: 0.799 +% SaT-U: 0.784 +% SaT-Lora-T: 0.885 +% SaT-Lora-U: 0.885 +% spacy-m: 0.419 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/am_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/am_f.tex new file mode 100644 index 00000000..f1b614d6 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/am_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & WtP-T & SaT-T & WtP-U & SaT-U & L-3 & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.743 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.157 & 0.041 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.590 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & 0.522 \\ +pysbd & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.705 +% WtP-T: 0.637 +% WtP-U: 0.582 +% C-R: 0.066 +% L-3: 0.362 +% SaT-SM: 0.708 +% SaT-T: 0.591 +% SaT-U: 0.58 +% SaT-Lora-T: 0.759 +% SaT-Lora-U: 0.675 +% pysbd: 0.059 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ar_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ar_f.tex new file mode 100644 index 00000000..139b4a55 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ar_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-T & SaT-U & SaT-SM & WtP-T & WtP-U & L-3 & ersatz & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & 0.938 & 0.041 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & 0.026 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & - & 0.540 & 0.428 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.463 & 0.021 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.027 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.761 +% WtP-T: 0.646 +% WtP-U: 0.645 +% C-R: 0.445 +% L-3: 0.622 +% SaT-SM: 0.652 +% SaT-T: 0.67 +% SaT-U: 0.67 +% SaT-Lora-T: 0.791 +% SaT-Lora-U: 0.794 +% pysbd: 0.38 +% ersatz: 0.592 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/az_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/az_f.tex new file mode 100644 index 00000000..44bba3c5 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/az_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & L-3 & SaT-U & WtP-U & WtP-T & SaT-T & C-R \\ +\midrule +SaT-SM & - & 0.656 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.005 & 0.004 & 0.002 & 0.001 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.798 & 0.453 & 0.356 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.607 & 0.531 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.857 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.83 +% WtP-T: 0.746 +% WtP-U: 0.749 +% C-R: 0.605 +% L-3: 0.768 +% SaT-SM: 0.853 +% SaT-T: 0.745 +% SaT-U: 0.75 +% SaT-Lora-T: 0.85 +% SaT-Lora-U: 0.817 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/be_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/be_f.tex new file mode 100644 index 00000000..eb00821b --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/be_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & WtP-U & SaT-T & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.537 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.025 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.032 & 0.007 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.179 & 0.033 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.037 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.891 +% WtP-T: 0.725 +% WtP-U: 0.717 +% C-R: 0.361 +% L-3: 0.545 +% SaT-SM: 0.878 +% SaT-T: 0.709 +% SaT-U: 0.704 +% SaT-Lora-T: 0.894 +% SaT-Lora-U: 0.892 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/bg_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/bg_f.tex new file mode 100644 index 00000000..95735c85 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/bg_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-U & SaT-T & WtP-U & WtP-T & pysbd & C-R \\ +\midrule +SaT-Lora-T & - & 0.183 & 0.108 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 1.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.001 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.180 & 0.215 & 0.005 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.447 & 0.019 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.001 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.962 +% WtP-T: 0.928 +% WtP-U: 0.932 +% C-R: 0.579 +% L-3: 0.946 +% SaT-SM: 0.962 +% SaT-T: 0.934 +% SaT-U: 0.935 +% SaT-Lora-T: 0.964 +% SaT-Lora-U: 0.962 +% pysbd: 0.729 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/bn_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/bn_f.tex new file mode 100644 index 00000000..f3ae7492 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/bn_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & SaT-U & L-3 & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.453 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.845 & 0.001 & 0.001 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.000 & 0.001 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.377 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.006 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.865 +% WtP-T: 0.821 +% WtP-U: 0.779 +% C-R: 0.048 +% L-3: 0.8 +% SaT-SM: 0.861 +% SaT-T: 0.82 +% SaT-U: 0.805 +% SaT-Lora-T: 0.886 +% SaT-Lora-U: 0.888 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ca_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ca_f.tex new file mode 100644 index 00000000..e402f90c --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ca_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & WtP-T & SaT-U & WtP-U & spacy-dp & C-R \\ +\midrule +SaT-Lora-T & - & 0.016 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.007 & 0.000 & 0.014 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.919 & 0.476 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.526 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.94 +% WtP-T: 0.886 +% WtP-U: 0.877 +% C-R: 0.66 +% L-3: 0.909 +% SaT-SM: 0.93 +% SaT-T: 0.896 +% SaT-U: 0.877 +% SaT-Lora-T: 0.946 +% SaT-Lora-U: 0.944 +% spacy-dp: 0.873 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/cs_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/cs_f.tex new file mode 100644 index 00000000..82893191 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/cs_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & WtP-T & SaT-U & WtP-U & spacy-m & ersatz \\ +\midrule +SaT-Lora-T & - & 0.642 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.045 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.415 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.034 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.002 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.774 & 0.175 \\ +spacy-m & - & - & - & - & - & - & - & - & 0.114 \\ +ersatz & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.949 +% WtP-T: 0.9 +% WtP-U: 0.875 +% SaT-SM: 0.943 +% SaT-T: 0.903 +% SaT-U: 0.892 +% SaT-Lora-T: 0.95 +% SaT-Lora-U: 0.95 +% spacy-m: 0.873 +% ersatz: 0.865 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/cy_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/cy_f.tex new file mode 100644 index 00000000..7a3049ad --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/cy_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & SaT-U & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.069 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.763 & 0.007 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.001 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.81 +% WtP-T: 0.742 +% WtP-U: 0.687 +% C-R: 0.398 +% L-3: 0.463 +% SaT-SM: 0.796 +% SaT-T: 0.74 +% SaT-U: 0.72 +% SaT-Lora-T: 0.83 +% SaT-Lora-U: 0.831 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/da_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/da_f.tex new file mode 100644 index 00000000..e024a874 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/da_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & SaT-U & spacy-m & spacy-dp & WtP-T & WtP-U & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.023 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.034 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.014 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.179 & 0.146 & 0.017 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & 0.987 & 0.841 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & 0.834 & 0.001 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.945 +% WtP-T: 0.901 +% WtP-U: 0.882 +% C-R: 0.754 +% L-3: 0.932 +% SaT-SM: 0.94 +% SaT-T: 0.921 +% SaT-U: 0.909 +% SaT-Lora-T: 0.952 +% SaT-Lora-U: 0.952 +% spacy-dp: 0.902 +% spacy-m: 0.902 +% pysbd: 0.702 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/de_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/de_f.tex new file mode 100644 index 00000000..5b291cfa --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/de_f.tex @@ -0,0 +1,34 @@ +\begin{tabular}{lrrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & L-3 & SaT-T & SaT-U & WtP-U & C-R & spacy-dp & ersatz & spacy-m & pysbd \\ +\midrule +SaT-Lora-T & - & 0.098 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.237 & 0.018 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & 0.733 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.001 & 0.037 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.613 & 0.001 & 0.001 & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & 0.034 & 0.005 & 0.002 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & 0.242 & 0.139 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & - & - & 0.726 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.894 +% WtP-T: 0.846 +% WtP-U: 0.767 +% C-R: 0.762 +% L-3: 0.838 +% SaT-SM: 0.869 +% SaT-T: 0.836 +% SaT-U: 0.782 +% SaT-Lora-T: 0.901 +% SaT-Lora-U: 0.902 +% spacy-dp: 0.74 +% spacy-m: 0.729 +% pysbd: 0.665 +% ersatz: 0.731 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/el_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/el_f.tex new file mode 100644 index 00000000..48067ecd --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/el_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & SaT-U & WtP-T & spacy-dp & WtP-U & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.289 & 0.261 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.984 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.581 & 0.031 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.071 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & 0.805 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & 0.103 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.959 +% WtP-T: 0.919 +% WtP-U: 0.909 +% C-R: 0.651 +% L-3: 0.943 +% SaT-SM: 0.959 +% SaT-T: 0.93 +% SaT-U: 0.92 +% SaT-Lora-T: 0.961 +% SaT-Lora-U: 0.961 +% spacy-dp: 0.911 +% pysbd: 0.627 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/en_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/en_f.tex new file mode 100644 index 00000000..b1307639 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/en_f.tex @@ -0,0 +1,34 @@ +\begin{tabular}{lrrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & WtP-U & SaT-U & SaT-T & C-R & WtP-T & spacy-dp & spacy-m & ersatz & pysbd \\ +\midrule +SaT-Lora-T & - & 0.837 & 0.346 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.550 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.409 & 0.001 & 0.057 & 0.000 & 0.001 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.132 & 0.010 & 0.001 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.985 & 0.897 & 0.382 & 0.189 & 0.001 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & 0.961 & 0.465 & 0.286 & 0.003 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & - & 0.463 & 0.254 & 0.002 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & 0.540 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & - & 0.002 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.947 +% WtP-T: 0.894 +% WtP-U: 0.906 +% C-R: 0.895 +% L-3: 0.928 +% SaT-SM: 0.946 +% SaT-T: 0.895 +% SaT-U: 0.904 +% SaT-Lora-T: 0.948 +% SaT-Lora-U: 0.949 +% spacy-dp: 0.89 +% spacy-m: 0.888 +% pysbd: 0.596 +% ersatz: 0.876 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/eo_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/eo_f.tex new file mode 100644 index 00000000..8d6acfea --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/eo_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & WtP-U & WtP-T & SaT-U & SaT-T & C-R \\ +\midrule +SaT-Lora-T & - & 0.197 & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.346 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.187 & 0.033 & 0.005 & 0.005 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.005 & 0.066 & 0.071 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.621 & 0.611 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 1.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.954 +% WtP-T: 0.905 +% WtP-U: 0.909 +% C-R: 0.846 +% L-3: 0.916 +% SaT-SM: 0.952 +% SaT-T: 0.903 +% SaT-U: 0.903 +% SaT-Lora-T: 0.958 +% SaT-Lora-U: 0.957 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/es_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/es_f.tex new file mode 100644 index 00000000..8a7c3a6e --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/es_f.tex @@ -0,0 +1,34 @@ +\begin{tabular}{lrrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & L-3 & SaT-T & WtP-T & SaT-U & spacy-m & ersatz & WtP-U & spacy-dp & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.005 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.305 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.380 & 0.044 & 0.011 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.149 & 0.044 & 0.001 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & 0.294 & 0.452 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.986 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & 0.003 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.95 +% WtP-T: 0.914 +% WtP-U: 0.899 +% C-R: 0.801 +% L-3: 0.936 +% SaT-SM: 0.953 +% SaT-T: 0.923 +% SaT-U: 0.911 +% SaT-Lora-T: 0.958 +% SaT-Lora-U: 0.957 +% spacy-dp: 0.88 +% spacy-m: 0.904 +% pysbd: 0.676 +% ersatz: 0.9 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/et_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/et_f.tex new file mode 100644 index 00000000..576d1baf --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/et_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & L-3 & WtP-T & ersatz & SaT-U & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.634 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.598 & 0.000 & 0.003 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & 0.036 & 0.006 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.690 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.946 +% WtP-T: 0.877 +% WtP-U: 0.825 +% C-R: 0.672 +% L-3: 0.89 +% SaT-SM: 0.93 +% SaT-T: 0.893 +% SaT-U: 0.846 +% SaT-Lora-T: 0.947 +% SaT-Lora-U: 0.944 +% ersatz: 0.874 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/eu_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/eu_f.tex new file mode 100644 index 00000000..1815ea95 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/eu_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & L-3 & WtP-U & SaT-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.003 & 0.032 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.883 & 0.648 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.863 & 0.001 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.916 +% WtP-T: 0.86 +% WtP-U: 0.844 +% C-R: 0.578 +% L-3: 0.845 +% SaT-SM: 0.9 +% SaT-T: 0.846 +% SaT-U: 0.822 +% SaT-Lora-T: 0.928 +% SaT-Lora-U: 0.929 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fa_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fa_f.tex new file mode 100644 index 00000000..442b1bc6 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fa_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & L-3 & SaT-SM & WtP-U & WtP-T & SaT-T & SaT-U & spacy-m & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.036 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & 0.654 & 0.360 & 0.256 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & 0.543 & 0.391 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.564 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.787 & 0.009 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.002 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & 0.277 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.727 +% WtP-T: 0.593 +% WtP-U: 0.596 +% C-R: 0.429 +% L-3: 0.604 +% SaT-SM: 0.601 +% SaT-T: 0.569 +% SaT-U: 0.568 +% SaT-Lora-T: 0.741 +% SaT-Lora-U: 0.745 +% spacy-m: 0.545 +% pysbd: 0.413 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fi_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fi_f.tex new file mode 100644 index 00000000..ba82bedc --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fi_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & spacy-m & ersatz & SaT-T & WtP-T & spacy-dp & SaT-U & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.243 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.005 & 0.003 & 0.001 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & 0.718 & 0.480 & 0.385 & 0.031 & 0.001 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & 0.764 & 0.639 & 0.136 & 0.005 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.793 & 0.228 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.311 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.054 & 0.002 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & - & - & 0.138 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.955 +% WtP-T: 0.925 +% WtP-U: 0.908 +% C-R: 0.684 +% L-3: 0.939 +% SaT-SM: 0.953 +% SaT-T: 0.926 +% SaT-U: 0.913 +% SaT-Lora-T: 0.963 +% SaT-Lora-U: 0.964 +% spacy-dp: 0.921 +% spacy-m: 0.929 +% ersatz: 0.927 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fr_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fr_f.tex new file mode 100644 index 00000000..3c89788f --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fr_f.tex @@ -0,0 +1,27 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-SM & L-3 & SaT-U & WtP-U & ersatz & nltk & spacy-m & spacy-dp & pysbd & C-R \\ +\midrule +SaT-SM & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & 0.182 & 0.084 & 0.017 & 0.001 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.346 & 0.136 & 0.011 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & 0.274 & 0.025 & 0.001 & 0.000 & 0.000 \\ +nltk & - & - & - & - & - & - & 0.111 & 0.002 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & 0.105 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & 0.964 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-U: 0.868 +% C-R: 0.808 +% L-3: 0.914 +% SaT-SM: 0.926 +% SaT-U: 0.873 +% spacy-dp: 0.841 +% spacy-m: 0.851 +% pysbd: 0.809 +% ersatz: 0.861 +% nltk: 0.858 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fy_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fy_f.tex new file mode 100644 index 00000000..25c23bf3 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/fy_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-T & SaT-U & WtP-T & WtP-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.207 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.161 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.881 +% WtP-T: 0.61 +% WtP-U: 0.444 +% C-R: 0.306 +% L-3: 0.424 +% SaT-SM: 0.91 +% SaT-T: 0.677 +% SaT-U: 0.649 +% SaT-Lora-T: 0.888 +% SaT-Lora-U: 0.888 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ga_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ga_f.tex new file mode 100644 index 00000000..e94e987d --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ga_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-U & SaT-T & SaT-SM & WtP-U & WtP-T & L-3 & spacy-m & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & 0.017 & 0.066 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.212 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & - & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.875 +% WtP-T: 0.773 +% WtP-U: 0.778 +% C-R: 0.559 +% L-3: 0.713 +% SaT-SM: 0.808 +% SaT-T: 0.818 +% SaT-U: 0.823 +% SaT-Lora-T: 0.906 +% SaT-Lora-U: 0.91 +% spacy-m: 0.61 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gd_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gd_f.tex new file mode 100644 index 00000000..534d8bc4 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gd_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & WtP-T & WtP-U & SaT-T & SaT-SM & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & 0.796 & 0.423 & 0.223 & 0.005 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.568 & 0.267 & 0.008 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.487 & 0.002 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & - & - & 0.302 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.927 +% WtP-T: 0.837 +% WtP-U: 0.835 +% C-R: 0.505 +% L-3: 0.628 +% SaT-SM: 0.825 +% SaT-T: 0.831 +% SaT-U: 0.816 +% SaT-Lora-T: 0.945 +% SaT-Lora-U: 0.935 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gl_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gl_f.tex new file mode 100644 index 00000000..ba962682 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gl_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & WtP-T & SaT-T & WtP-U & SaT-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.017 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.771 & 0.000 & 0.006 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.384 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.111 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.939 +% WtP-T: 0.889 +% WtP-U: 0.885 +% C-R: 0.716 +% L-3: 0.908 +% SaT-SM: 0.931 +% SaT-T: 0.888 +% SaT-U: 0.879 +% SaT-Lora-T: 0.946 +% SaT-Lora-U: 0.944 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gu_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gu_f.tex new file mode 100644 index 00000000..917d058d --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/gu_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-T & SaT-U & WtP-T & WtP-U & L-3 & ersatz & C-R \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.613 & 0.007 & 0.001 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.013 & 0.002 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.367 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.765 +% WtP-T: 0.696 +% WtP-U: 0.692 +% C-R: 0.167 +% L-3: 0.33 +% SaT-SM: 0.834 +% SaT-T: 0.716 +% SaT-U: 0.715 +% SaT-Lora-T: 0.805 +% SaT-Lora-U: 0.797 +% ersatz: 0.212 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ha_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ha_f.tex new file mode 100644 index 00000000..88984b68 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ha_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & WtP-P & SaT-SM & SaT-Lora-T & WtP-T & SaT-T & L-3 & SaT-U & WtP-U & C-R \\ +\midrule +WtP-P & - & 0.832 & 0.327 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.401 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.143 & 0.073 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.512 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.001 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.915 +% WtP-T: 0.889 +% WtP-U: 0.828 +% C-R: 0.658 +% L-3: 0.881 +% SaT-SM: 0.914 +% SaT-T: 0.884 +% SaT-U: 0.838 +% SaT-Lora-T: 0.91 +% SaT-Lora-U: 0.894 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/he_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/he_f.tex new file mode 100644 index 00000000..40b3c323 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/he_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & WtP-U & WtP-T & SaT-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.175 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.203 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.150 & 0.003 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.003 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.000 & 0.002 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.883 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.938 +% WtP-T: 0.894 +% WtP-U: 0.902 +% C-R: 0.627 +% L-3: 0.916 +% SaT-SM: 0.922 +% SaT-T: 0.91 +% SaT-U: 0.894 +% SaT-Lora-T: 0.941 +% SaT-Lora-U: 0.941 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hi_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hi_f.tex new file mode 100644 index 00000000..7cec8c50 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hi_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-U & WtP-T & SaT-U & SaT-T & L-3 & ersatz & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.026 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.001 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.411 & 0.013 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.038 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.763 +% WtP-T: 0.643 +% WtP-U: 0.651 +% C-R: 0.393 +% L-3: 0.596 +% SaT-SM: 0.728 +% SaT-T: 0.604 +% SaT-U: 0.629 +% SaT-Lora-T: 0.815 +% SaT-Lora-U: 0.812 +% pysbd: 0.23 +% ersatz: 0.58 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hu_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hu_f.tex new file mode 100644 index 00000000..706eaa4f --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hu_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & SaT-U & WtP-T & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.467 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.028 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.105 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.406 & 0.007 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.962 +% WtP-T: 0.921 +% WtP-U: 0.916 +% C-R: 0.626 +% L-3: 0.942 +% SaT-SM: 0.958 +% SaT-T: 0.935 +% SaT-U: 0.923 +% SaT-Lora-T: 0.963 +% SaT-Lora-U: 0.963 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hy_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hy_f.tex new file mode 100644 index 00000000..92d0c245 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/hy_f.tex @@ -0,0 +1,19 @@ +\begin{tabular}{lrrrrrr} +\toprule + & SaT-SM & SaT-U & WtP-U & L-3 & pysbd & C-R \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & 0.480 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-U: 0.851 +% C-R: 0.467 +% L-3: 0.731 +% SaT-SM: 0.906 +% SaT-U: 0.853 +% pysbd: 0.584 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/id_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/id_f.tex new file mode 100644 index 00000000..23b77be7 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/id_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & spacy-m & WtP-T & WtP-U & SaT-T & SaT-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.589 & 0.105 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.419 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & 0.950 & 0.210 & 0.151 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.003 & 0.025 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.835 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.939 +% WtP-T: 0.895 +% WtP-U: 0.889 +% C-R: 0.713 +% L-3: 0.923 +% SaT-SM: 0.937 +% SaT-T: 0.889 +% SaT-U: 0.866 +% SaT-Lora-T: 0.941 +% SaT-Lora-U: 0.939 +% spacy-m: 0.896 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ig_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ig_f.tex new file mode 100644 index 00000000..eb342db8 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ig_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & SaT-T & WtP-T & SaT-U & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.712 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.107 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.546 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.902 +% WtP-T: 0.821 +% WtP-U: 0.786 +% C-R: 0.28 +% L-3: 0.393 +% SaT-SM: 0.921 +% SaT-T: 0.833 +% SaT-U: 0.817 +% SaT-Lora-T: 0.923 +% SaT-Lora-U: 0.923 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/is_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/is_f.tex new file mode 100644 index 00000000..bcf6ee63 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/is_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & WtP-T & WtP-U & SaT-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.860 & 0.352 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.669 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.029 & 0.020 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.722 & 0.029 & 0.002 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.003 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.484 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.966 +% WtP-T: 0.944 +% WtP-U: 0.939 +% C-R: 0.777 +% L-3: 0.951 +% SaT-SM: 0.965 +% SaT-T: 0.945 +% SaT-U: 0.937 +% SaT-Lora-T: 0.966 +% SaT-Lora-U: 0.966 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/it_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/it_f.tex new file mode 100644 index 00000000..2eaec663 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/it_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & WtP-T & SaT-U & spacy-m & spacy-dp & WtP-U & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.616 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.005 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.056 & 0.005 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & 0.352 & 0.108 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.322 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.934 +% WtP-T: 0.884 +% WtP-U: 0.846 +% C-R: 0.786 +% L-3: 0.907 +% SaT-SM: 0.909 +% SaT-T: 0.894 +% SaT-U: 0.87 +% SaT-Lora-T: 0.943 +% SaT-Lora-U: 0.943 +% spacy-dp: 0.853 +% spacy-m: 0.858 +% pysbd: 0.702 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ja_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ja_f.tex new file mode 100644 index 00000000..0f9dfeac --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ja_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-T & SaT-U & WtP-T & SaT-SM & WtP-U & pysbd & spacy-dp & ersatz & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.093 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.326 & 0.091 & 0.000 & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & - & - & - & 0.001 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.867 +% WtP-T: 0.795 +% WtP-U: 0.446 +% C-R: 0.06 +% L-3: 0.09 +% SaT-SM: 0.78 +% SaT-T: 0.846 +% SaT-U: 0.831 +% SaT-Lora-T: 0.905 +% SaT-Lora-U: 0.905 +% spacy-dp: 0.426 +% pysbd: 0.434 +% ersatz: 0.288 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ka_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ka_f.tex new file mode 100644 index 00000000..406db6a4 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ka_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & WtP-U & WtP-T & L-3 & SaT-T & SaT-U & C-R \\ +\midrule +SaT-SM & - & 0.078 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.012 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.150 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.928 +% WtP-T: 0.911 +% WtP-U: 0.913 +% C-R: 0.256 +% L-3: 0.892 +% SaT-SM: 0.936 +% SaT-T: 0.839 +% SaT-U: 0.757 +% SaT-Lora-T: 0.933 +% SaT-Lora-U: 0.934 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/kk_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/kk_f.tex new file mode 100644 index 00000000..c7f37bd4 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/kk_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-U & SaT-T & WtP-T & WtP-U & L-3 & ersatz & pysbd & C-R \\ +\midrule +SaT-SM & - & 0.756 & 0.744 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.962 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & 0.064 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.000 & 0.004 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & 0.280 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.921 +% WtP-T: 0.749 +% WtP-U: 0.734 +% C-R: 0.345 +% L-3: 0.564 +% SaT-SM: 0.922 +% SaT-T: 0.799 +% SaT-U: 0.803 +% SaT-Lora-T: 0.921 +% SaT-Lora-U: 0.922 +% pysbd: 0.357 +% ersatz: 0.379 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/km_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/km_f.tex new file mode 100644 index 00000000..b5c6e0b6 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/km_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & WtP-U & WtP-T & SaT-U & SaT-T & L-3 & C-R & ersatz \\ +\midrule +SaT-Lora-T & - & 0.017 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.184 & 0.070 & 0.004 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.375 & 0.043 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.064 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.79 +% WtP-T: 0.711 +% WtP-U: 0.718 +% C-R: 0.043 +% L-3: 0.099 +% SaT-SM: 0.866 +% SaT-T: 0.695 +% SaT-U: 0.704 +% SaT-Lora-T: 0.878 +% SaT-Lora-U: 0.87 +% ersatz: 0.0 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/kn_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/kn_f.tex new file mode 100644 index 00000000..0d132ae4 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/kn_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-U & SaT-T & WtP-U & WtP-T & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & 0.316 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.78 +% WtP-T: 0.604 +% WtP-U: 0.645 +% C-R: 0.055 +% L-3: 0.267 +% SaT-SM: 0.879 +% SaT-T: 0.699 +% SaT-U: 0.702 +% SaT-Lora-T: 0.839 +% SaT-Lora-U: 0.828 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ko_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ko_f.tex new file mode 100644 index 00000000..64b99105 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ko_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & SaT-U & WtP-T & L-3 & WtP-U & spacy-m & spacy-dp & C-R \\ +\midrule +SaT-Lora-T & - & 0.555 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.045 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.010 & 0.029 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.924 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.816 +% WtP-T: 0.704 +% WtP-U: 0.567 +% C-R: 0.389 +% L-3: 0.703 +% SaT-SM: 0.789 +% SaT-T: 0.737 +% SaT-U: 0.724 +% SaT-Lora-T: 0.818 +% SaT-Lora-U: 0.82 +% spacy-dp: 0.466 +% spacy-m: 0.509 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ku_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ku_f.tex new file mode 100644 index 00000000..797172f7 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ku_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & WtP-U & SaT-U & SaT-T & WtP-T & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.752 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.184 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.173 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.851 +% WtP-T: 0.664 +% WtP-U: 0.781 +% C-R: 0.298 +% L-3: 0.419 +% SaT-SM: 0.911 +% SaT-T: 0.677 +% SaT-U: 0.772 +% SaT-Lora-T: 0.909 +% SaT-Lora-U: 0.909 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ky_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ky_f.tex new file mode 100644 index 00000000..97a248d1 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ky_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & WtP-U & WtP-T & SaT-T & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.627 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.846 & 0.587 & 0.541 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.662 & 0.614 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.709 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.903 +% WtP-T: 0.844 +% WtP-U: 0.845 +% C-R: 0.265 +% L-3: 0.583 +% SaT-SM: 0.918 +% SaT-T: 0.841 +% SaT-U: 0.841 +% SaT-Lora-T: 0.92 +% SaT-Lora-U: 0.92 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/lt_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/lt_f.tex new file mode 100644 index 00000000..33979fb8 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/lt_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & WtP-T & L-3 & SaT-U & spacy-dp & ersatz & spacy-m & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.860 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.090 & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.097 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.825 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & 0.006 & 0.001 & 0.009 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.469 & 0.611 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & 0.995 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.901 +% WtP-T: 0.841 +% WtP-U: 0.765 +% C-R: 0.703 +% L-3: 0.828 +% SaT-SM: 0.9 +% SaT-T: 0.849 +% SaT-U: 0.826 +% SaT-Lora-T: 0.926 +% SaT-Lora-U: 0.927 +% spacy-dp: 0.789 +% spacy-m: 0.765 +% ersatz: 0.77 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/lv_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/lv_f.tex new file mode 100644 index 00000000..4483f94f --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/lv_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & L-3 & SaT-U & WtP-U & ersatz & spacy-m & C-R \\ +\midrule +SaT-Lora-T & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.574 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.511 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.691 & 0.282 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.288 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.915 +% WtP-T: 0.856 +% WtP-U: 0.78 +% C-R: 0.704 +% L-3: 0.831 +% SaT-SM: 0.897 +% SaT-T: 0.854 +% SaT-U: 0.826 +% SaT-Lora-T: 0.928 +% SaT-Lora-U: 0.93 +% spacy-m: 0.769 +% ersatz: 0.776 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mg_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mg_f.tex new file mode 100644 index 00000000..4e10a035 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mg_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & WtP-U & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.704 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.737 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.195 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.169 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.953 +% WtP-T: 0.915 +% WtP-U: 0.891 +% C-R: 0.64 +% L-3: 0.857 +% SaT-SM: 0.916 +% SaT-T: 0.896 +% SaT-U: 0.885 +% SaT-Lora-T: 0.954 +% SaT-Lora-U: 0.955 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mk_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mk_f.tex new file mode 100644 index 00000000..1b432489 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mk_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & L-3 & SaT-U & SaT-T & WtP-T & WtP-U & spacy-dp & C-R \\ +\midrule +WtP-P & - & 0.451 & 0.208 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.600 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.006 & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 1.000 & 0.016 & 0.006 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.015 & 0.007 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.122 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.956 +% WtP-T: 0.924 +% WtP-U: 0.923 +% C-R: 0.482 +% L-3: 0.941 +% SaT-SM: 0.954 +% SaT-T: 0.93 +% SaT-U: 0.93 +% SaT-Lora-T: 0.955 +% SaT-Lora-U: 0.955 +% spacy-dp: 0.822 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ml_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ml_f.tex new file mode 100644 index 00000000..efd2101d --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ml_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & WtP-T & SaT-T & L-3 & WtP-U & SaT-U & C-R \\ +\midrule +WtP-P & - & 0.935 & 0.193 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.130 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.109 & 0.214 & 0.001 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.884 & 0.041 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & 0.203 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.865 +% WtP-T: 0.817 +% WtP-U: 0.8 +% C-R: 0.007 +% L-3: 0.809 +% SaT-SM: 0.859 +% SaT-T: 0.81 +% SaT-U: 0.776 +% SaT-Lora-T: 0.865 +% SaT-Lora-U: 0.87 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mn_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mn_f.tex new file mode 100644 index 00000000..d0d8998e --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mn_f.tex @@ -0,0 +1,17 @@ +\begin{tabular}{lrrrrr} +\toprule + & SaT-SM & WtP-U & SaT-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-U: 0.807 +% C-R: 0.266 +% L-3: 0.493 +% SaT-SM: 0.901 +% SaT-U: 0.735 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mr_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mr_f.tex new file mode 100644 index 00000000..99e26d08 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mr_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & SaT-T & SaT-U & WtP-T & WtP-U & L-3 & spacy-m & pysbd & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.656 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.239 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.664 & 0.392 & 0.001 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.557 & 0.002 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.511 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.935 +% WtP-T: 0.886 +% WtP-U: 0.885 +% C-R: 0.652 +% L-3: 0.881 +% SaT-SM: 0.933 +% SaT-T: 0.901 +% SaT-U: 0.899 +% SaT-Lora-T: 0.949 +% SaT-Lora-U: 0.953 +% spacy-m: 0.865 +% pysbd: 0.862 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ms_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ms_f.tex new file mode 100644 index 00000000..27982a64 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ms_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & WtP-P & SaT-Lora-T & L-3 & WtP-T & SaT-T & WtP-U & SaT-U & C-R \\ +\midrule +SaT-SM & - & 0.685 & 0.223 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.461 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.165 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.325 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.004 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.94 +% WtP-T: 0.879 +% WtP-U: 0.87 +% C-R: 0.679 +% L-3: 0.91 +% SaT-SM: 0.941 +% SaT-T: 0.874 +% SaT-U: 0.858 +% SaT-Lora-T: 0.938 +% SaT-Lora-U: 0.941 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mt_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mt_f.tex new file mode 100644 index 00000000..0743f5d0 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/mt_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & L-3 & SaT-T & C-R & SaT-U & WtP-U \\ +\midrule +SaT-Lora-T & - & 0.117 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.074 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & 0.086 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & 0.013 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.001 \\ +WtP-U & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.884 +% WtP-T: 0.804 +% WtP-U: 0.606 +% C-R: 0.651 +% L-3: 0.788 +% SaT-SM: 0.851 +% SaT-T: 0.773 +% SaT-U: 0.622 +% SaT-Lora-T: 0.892 +% SaT-Lora-U: 0.894 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/my_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/my_f.tex new file mode 100644 index 00000000..8f7f0991 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/my_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-T & WtP-T & SaT-U & WtP-U & pysbd & C-R & L-3 \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.495 & 0.161 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.753 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & 0.431 \\ +L-3 & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.822 +% WtP-T: 0.743 +% WtP-U: 0.689 +% C-R: 0.171 +% L-3: 0.163 +% SaT-SM: 0.894 +% SaT-T: 0.749 +% SaT-U: 0.741 +% SaT-Lora-T: 0.867 +% SaT-Lora-U: 0.86 +% pysbd: 0.274 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ne_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ne_f.tex new file mode 100644 index 00000000..57ffc89e --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ne_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-T & SaT-U & WtP-U & WtP-T & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.107 & 0.062 & 0.039 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.234 & 0.147 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.659 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.743 +% WtP-T: 0.687 +% WtP-U: 0.689 +% C-R: 0.233 +% L-3: 0.397 +% SaT-SM: 0.82 +% SaT-T: 0.703 +% SaT-U: 0.698 +% SaT-Lora-T: 0.773 +% SaT-Lora-U: 0.763 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/nl_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/nl_f.tex new file mode 100644 index 00000000..c6a37865 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/nl_f.tex @@ -0,0 +1,23 @@ +\begin{tabular}{lrrrrrrrr} +\toprule + & SaT-SM & L-3 & spacy-m & spacy-dp & SaT-U & WtP-U & C-R & pysbd \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & 0.019 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & 0.077 & 0.004 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & 0.245 & 0.007 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.015 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-U: 0.915 +% C-R: 0.748 +% L-3: 0.937 +% SaT-SM: 0.948 +% SaT-U: 0.921 +% spacy-dp: 0.924 +% spacy-m: 0.93 +% pysbd: 0.182 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/no_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/no_f.tex new file mode 100644 index 00000000..c2c10812 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/no_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & spacy-m & SaT-U & WtP-T & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.091 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.224 & 0.007 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.052 & 0.000 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.263 & 0.193 & 0.081 & 0.001 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.924 & 0.081 & 0.001 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & 0.524 & 0.020 & 0.009 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.008 & 0.001 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.287 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.961 +% WtP-T: 0.943 +% WtP-U: 0.942 +% C-R: 0.715 +% L-3: 0.953 +% SaT-SM: 0.958 +% SaT-T: 0.95 +% SaT-U: 0.948 +% SaT-Lora-T: 0.963 +% SaT-Lora-U: 0.964 +% spacy-m: 0.95 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pa_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pa_f.tex new file mode 100644 index 00000000..b7477149 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pa_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-T & SaT-U & WtP-T & WtP-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.015 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.932 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.773 +% WtP-T: 0.622 +% WtP-U: 0.556 +% C-R: 0.144 +% L-3: 0.267 +% SaT-SM: 0.81 +% SaT-T: 0.695 +% SaT-U: 0.695 +% SaT-Lora-T: 0.796 +% SaT-Lora-U: 0.783 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pl_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pl_f.tex new file mode 100644 index 00000000..101af650 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pl_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & spacy-dp & SaT-U & WtP-T & ersatz & WtP-U & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.081 & 0.029 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.701 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.263 & 0.019 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.192 & 0.000 & 0.000 & 0.003 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & 0.194 & 0.085 & 0.031 & 0.005 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.543 & 0.457 & 0.027 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.717 & 0.012 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.517 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.956 +% WtP-T: 0.922 +% WtP-U: 0.918 +% C-R: 0.744 +% L-3: 0.938 +% SaT-SM: 0.956 +% SaT-T: 0.933 +% SaT-U: 0.924 +% SaT-Lora-T: 0.96 +% SaT-Lora-U: 0.96 +% spacy-dp: 0.929 +% pysbd: 0.175 +% ersatz: 0.921 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ps_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ps_f.tex new file mode 100644 index 00000000..a0089452 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ps_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & WtP-T & SaT-T & SaT-U & WtP-U & L-3 & C-R & ersatz \\ +\midrule +SaT-SM & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.053 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.156 & 0.044 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.177 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.761 +% WtP-T: 0.704 +% WtP-U: 0.633 +% C-R: 0.072 +% L-3: 0.261 +% SaT-SM: 0.856 +% SaT-T: 0.692 +% SaT-U: 0.686 +% SaT-Lora-T: 0.776 +% SaT-Lora-U: 0.766 +% ersatz: 0.018 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pt_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pt_f.tex new file mode 100644 index 00000000..a5af2a13 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/pt_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & L-3 & SaT-SM & SaT-T & SaT-U & spacy-m & WtP-T & spacy-dp & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.963 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & 0.349 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.011 & 0.138 & 0.007 & 0.001 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.829 & 0.294 & 0.029 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & 0.667 & 0.046 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & 0.151 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & 0.039 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.953 +% WtP-T: 0.914 +% WtP-U: 0.899 +% C-R: 0.808 +% L-3: 0.941 +% SaT-SM: 0.938 +% SaT-T: 0.923 +% SaT-U: 0.917 +% SaT-Lora-T: 0.954 +% SaT-Lora-U: 0.954 +% spacy-dp: 0.908 +% spacy-m: 0.916 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ro_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ro_f.tex new file mode 100644 index 00000000..470bd296 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ro_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & ersatz & spacy-dp & spacy-m & SaT-U & WtP-T & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.010 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.817 & 0.043 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & 0.024 & 0.001 & 0.004 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & 0.133 & 0.149 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & 0.777 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.967 +% WtP-T: 0.89 +% WtP-U: 0.885 +% C-R: 0.704 +% L-3: 0.949 +% SaT-SM: 0.959 +% SaT-T: 0.929 +% SaT-U: 0.911 +% SaT-Lora-T: 0.973 +% SaT-Lora-U: 0.974 +% spacy-dp: 0.919 +% spacy-m: 0.913 +% ersatz: 0.928 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ru_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ru_f.tex new file mode 100644 index 00000000..0dd3899e --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ru_f.tex @@ -0,0 +1,25 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & L-3 & C-R & SaT-SM & SaT-U & WtP-U & spacy-dp & spacy-m & ersatz & pysbd \\ +\midrule +L-3 & - & 0.078 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +C-R & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.025 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & 0.816 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-U: 0.806 +% C-R: 0.881 +% L-3: 0.893 +% SaT-SM: 0.841 +% SaT-U: 0.828 +% spacy-dp: 0.754 +% spacy-m: 0.752 +% pysbd: 0.649 +% ersatz: 0.686 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/si_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/si_f.tex new file mode 100644 index 00000000..aee26522 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/si_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & SaT-T & WtP-T & WtP-U & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.263 & 0.216 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.909 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.501 & 0.086 & 0.004 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.118 & 0.047 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.496 & 0.001 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.002 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.854 +% WtP-T: 0.801 +% WtP-U: 0.795 +% C-R: 0.086 +% L-3: 0.769 +% SaT-SM: 0.854 +% SaT-T: 0.804 +% SaT-U: 0.792 +% SaT-Lora-T: 0.859 +% SaT-Lora-U: 0.855 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sk_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sk_f.tex new file mode 100644 index 00000000..ba9c84a3 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sk_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & L-3 & SaT-T & WtP-T & spacy-m & SaT-U & WtP-U & C-R & pysbd \\ +\midrule +SaT-Lora-T & - & 0.004 & 0.006 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.960 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.090 & 0.005 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.112 & 0.002 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & 0.637 & 0.001 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.959 +% WtP-T: 0.924 +% WtP-U: 0.897 +% C-R: 0.748 +% L-3: 0.943 +% SaT-SM: 0.959 +% SaT-T: 0.93 +% SaT-U: 0.914 +% SaT-Lora-T: 0.965 +% SaT-Lora-U: 0.965 +% spacy-m: 0.916 +% pysbd: 0.295 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sl_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sl_f.tex new file mode 100644 index 00000000..027b0fb6 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sl_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & L-3 & SaT-T & WtP-T & SaT-U & WtP-U & C-R \\ +\midrule +SaT-SM & - & 0.708 & 0.084 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.175 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.017 & 0.005 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.462 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.246 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.95 +% WtP-T: 0.927 +% WtP-U: 0.913 +% C-R: 0.638 +% L-3: 0.938 +% SaT-SM: 0.953 +% SaT-T: 0.929 +% SaT-U: 0.916 +% SaT-Lora-T: 0.953 +% SaT-Lora-U: 0.955 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sq_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sq_f.tex new file mode 100644 index 00000000..d32ee23e --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sq_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & WtP-P & SaT-Lora-T & L-3 & SaT-T & WtP-T & SaT-U & WtP-U & C-R \\ +\midrule +SaT-SM & - & 0.447 & 0.217 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.904 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.011 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & 0.534 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.003 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.955 +% WtP-T: 0.899 +% WtP-U: 0.887 +% C-R: 0.593 +% L-3: 0.923 +% SaT-SM: 0.957 +% SaT-T: 0.911 +% SaT-U: 0.897 +% SaT-Lora-T: 0.955 +% SaT-Lora-U: 0.954 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sr_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sr_f.tex new file mode 100644 index 00000000..5294d3e6 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sr_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & WtP-P & SaT-Lora-T & SaT-SM & spacy-m & L-3 & SaT-T & WtP-T & SaT-U & WtP-U & C-R \\ +\midrule +WtP-P & - & 0.086 & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.071 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & 0.988 & 0.638 & 0.305 & 0.047 & 0.010 & 0.000 \\ +L-3 & - & - & - & - & - & 0.697 & 0.362 & 0.079 & 0.016 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.379 & 0.000 & 0.001 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.159 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.265 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.964 +% WtP-T: 0.943 +% WtP-U: 0.938 +% C-R: 0.672 +% L-3: 0.946 +% SaT-SM: 0.959 +% SaT-T: 0.945 +% SaT-U: 0.94 +% SaT-Lora-T: 0.961 +% SaT-Lora-U: 0.962 +% spacy-m: 0.946 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sv_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sv_f.tex new file mode 100644 index 00000000..4126f3f6 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/sv_f.tex @@ -0,0 +1,30 @@ +\begin{tabular}{lrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & spacy-m & SaT-T & WtP-T & SaT-U & WtP-U & spacy-dp & C-R \\ +\midrule +SaT-Lora-T & - & 0.578 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.033 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-m & - & - & - & - & - & 0.707 & 0.111 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.076 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.003 & 0.012 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.676 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.958 +% WtP-T: 0.925 +% WtP-U: 0.904 +% C-R: 0.769 +% L-3: 0.943 +% SaT-SM: 0.95 +% SaT-T: 0.929 +% SaT-U: 0.913 +% SaT-Lora-T: 0.959 +% SaT-Lora-U: 0.959 +% spacy-dp: 0.902 +% spacy-m: 0.931 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ta_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ta_f.tex new file mode 100644 index 00000000..1ccd4953 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ta_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & WtP-U & SaT-U & SaT-T & ersatz & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.637 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.060 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.041 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & 0.997 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.754 +% WtP-T: 0.657 +% WtP-U: 0.643 +% C-R: 0.019 +% L-3: 0.453 +% SaT-SM: 0.75 +% SaT-T: 0.588 +% SaT-U: 0.605 +% SaT-Lora-T: 0.808 +% SaT-Lora-U: 0.779 +% ersatz: 0.453 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/te_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/te_f.tex new file mode 100644 index 00000000..ff1ca1e5 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/te_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & WtP-T & WtP-U & SaT-U & SaT-T & L-3 & spacy-m & C-R \\ +\midrule +SaT-SM & - & 0.027 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.928 & 0.101 & 0.011 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.118 & 0.016 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.053 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.025 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.836 +% WtP-T: 0.775 +% WtP-U: 0.774 +% C-R: 0.361 +% L-3: 0.659 +% SaT-SM: 0.868 +% SaT-T: 0.76 +% SaT-U: 0.765 +% SaT-Lora-T: 0.856 +% SaT-Lora-U: 0.854 +% spacy-m: 0.641 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/tg_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/tg_f.tex new file mode 100644 index 00000000..760f7f25 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/tg_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & WtP-T & SaT-T & WtP-U & SaT-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.526 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.009 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.086 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.009 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.252 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.91 +% WtP-T: 0.827 +% WtP-U: 0.801 +% C-R: 0.549 +% L-3: 0.761 +% SaT-SM: 0.923 +% SaT-T: 0.817 +% SaT-U: 0.796 +% SaT-Lora-T: 0.921 +% SaT-Lora-U: 0.91 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/th_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/th_f.tex new file mode 100644 index 00000000..cdd4c993 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/th_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & SaT-T & WtP-T & SaT-U & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.100 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.270 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.035 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.047 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.585 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.713 +% WtP-T: 0.697 +% WtP-U: 0.666 +% C-R: 0.106 +% L-3: 0.66 +% SaT-SM: 0.729 +% SaT-T: 0.707 +% SaT-U: 0.68 +% SaT-Lora-T: 0.737 +% SaT-Lora-U: 0.729 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/tr_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/tr_f.tex new file mode 100644 index 00000000..6a6f11ee --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/tr_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & SaT-T & SaT-U & WtP-T & WtP-U & ersatz & C-R \\ +\midrule +SaT-Lora-T & - & 0.719 & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.008 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.404 & 0.068 & 0.039 & 0.008 & 0.003 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.008 & 0.027 & 0.002 & 0.031 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.581 & 0.109 & 0.216 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.063 & 0.370 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & 0.675 & 0.000 \\ +ersatz & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.953 +% WtP-T: 0.931 +% WtP-U: 0.928 +% C-R: 0.724 +% L-3: 0.938 +% SaT-SM: 0.947 +% SaT-T: 0.935 +% SaT-U: 0.932 +% SaT-Lora-T: 0.954 +% SaT-Lora-U: 0.954 +% ersatz: 0.927 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/uk_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/uk_f.tex new file mode 100644 index 00000000..ea5caaec --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/uk_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & L-3 & spacy-dp & SaT-T & WtP-T & SaT-U & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.091 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.025 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & 0.076 & 0.078 & 0.002 & 0.001 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.952 & 0.000 & 0.011 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.035 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & - & 0.690 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.943 +% WtP-T: 0.89 +% WtP-U: 0.882 +% C-R: 0.798 +% L-3: 0.911 +% SaT-SM: 0.935 +% SaT-T: 0.89 +% SaT-U: 0.883 +% SaT-Lora-T: 0.947 +% SaT-Lora-U: 0.944 +% spacy-dp: 0.898 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ur_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ur_f.tex new file mode 100644 index 00000000..def79c19 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/ur_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-U & SaT-T & SaT-U & WtP-T & L-3 & pysbd & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & 0.259 & 0.016 & 0.012 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.561 & 0.014 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.489 & 0.001 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.006 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & - & - & - & 0.003 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.663 +% WtP-T: 0.507 +% WtP-U: 0.53 +% C-R: 0.266 +% L-3: 0.476 +% SaT-SM: 0.605 +% SaT-T: 0.519 +% SaT-U: 0.513 +% SaT-Lora-T: 0.72 +% SaT-Lora-U: 0.687 +% pysbd: 0.314 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/uz_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/uz_f.tex new file mode 100644 index 00000000..9cf7c32b --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/uz_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-T & WtP-U & SaT-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.918 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & 0.823 & 0.578 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & 0.819 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.85 +% WtP-T: 0.789 +% WtP-U: 0.764 +% C-R: 0.448 +% L-3: 0.674 +% SaT-SM: 0.849 +% SaT-T: 0.765 +% SaT-U: 0.763 +% SaT-Lora-T: 0.876 +% SaT-Lora-U: 0.873 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/vi_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/vi_f.tex new file mode 100644 index 00000000..b4b80b88 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/vi_f.tex @@ -0,0 +1,28 @@ +\begin{tabular}{lrrrrrrrrrr} +\toprule + & SaT-Lora-T & SaT-SM & WtP-P & L-3 & SaT-U & SaT-T & WtP-T & spacy-m & WtP-U & C-R \\ +\midrule +SaT-Lora-T & - & 0.520 & 0.146 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & 0.365 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 1.000 & 0.007 & 0.019 & 0.002 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.005 & 0.019 & 0.001 & 0.000 \\ +WtP-T & - & - & - & - & - & - & - & 0.746 & 0.292 & 0.000 \\ +spacy-m & - & - & - & - & - & - & - & - & 0.927 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.945 +% WtP-T: 0.903 +% WtP-U: 0.901 +% C-R: 0.772 +% L-3: 0.929 +% SaT-SM: 0.947 +% SaT-T: 0.911 +% SaT-U: 0.911 +% SaT-Lora-T: 0.948 +% SaT-Lora-U: 0.949 +% spacy-m: 0.901 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/xh_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/xh_f.tex new file mode 100644 index 00000000..38d90b03 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/xh_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & SaT-SM & WtP-T & SaT-U & SaT-T & WtP-U & L-3 & C-R \\ +\midrule +SaT-Lora-T & - & 0.019 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.629 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.501 & 0.472 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & 0.750 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.898 +% WtP-T: 0.807 +% WtP-U: 0.772 +% C-R: 0.561 +% L-3: 0.717 +% SaT-SM: 0.896 +% SaT-T: 0.803 +% SaT-U: 0.803 +% SaT-Lora-T: 0.908 +% SaT-Lora-U: 0.907 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/yi_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/yi_f.tex new file mode 100644 index 00000000..8639a333 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/yi_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & WtP-T & WtP-U & SaT-T & SaT-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.002 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & 0.128 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & 0.002 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.807 +% WtP-T: 0.739 +% WtP-U: 0.73 +% C-R: 0.083 +% L-3: 0.136 +% SaT-SM: 0.89 +% SaT-T: 0.702 +% SaT-U: 0.611 +% SaT-Lora-T: 0.866 +% SaT-Lora-U: 0.831 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/yo_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/yo_f.tex new file mode 100644 index 00000000..c9aa850a --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/yo_f.tex @@ -0,0 +1,17 @@ +\begin{tabular}{lrrrrr} +\toprule + & WtP-U & SaT-U & SaT-SM & L-3 & C-R \\ +\midrule +WtP-U & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-U: 0.754 +% C-R: 0.266 +% L-3: 0.375 +% SaT-SM: 0.523 +% SaT-U: 0.673 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/zh_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/zh_f.tex new file mode 100644 index 00000000..72f78019 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/zh_f.tex @@ -0,0 +1,32 @@ +\begin{tabular}{lrrrrrrrrrrrr} +\toprule + & SaT-Lora-T & WtP-P & WtP-U & SaT-SM & WtP-T & pysbd & spacy-dp & SaT-T & C-R & L-3 & SaT-U & ersatz \\ +\midrule +SaT-Lora-T & - & 0.004 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-SM & - & - & - & - & 0.283 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +pysbd & - & - & - & - & - & - & 0.149 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +spacy-dp & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - & 0.007 & 0.021 & 0.003 \\ +L-3 & - & - & - & - & - & - & - & - & - & - & 0.952 & 0.418 \\ +SaT-U & - & - & - & - & - & - & - & - & - & - & - & 0.495 \\ +ersatz & - & - & - & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.888 +% WtP-T: 0.766 +% WtP-U: 0.805 +% C-R: 0.587 +% L-3: 0.557 +% SaT-SM: 0.775 +% SaT-T: 0.641 +% SaT-U: 0.556 +% SaT-Lora-T: 0.905 +% SaT-Lora-U: 0.904 +% spacy-dp: 0.682 +% pysbd: 0.69 +% ersatz: 0.547 \ No newline at end of file diff --git a/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/zu_f.tex b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/zu_f.tex new file mode 100644 index 00000000..35c091f5 --- /dev/null +++ b/wtpsplit/evaluation/stat_tests/main-table-p-values/opus100/zu_f.tex @@ -0,0 +1,26 @@ +\begin{tabular}{lrrrrrrrrr} +\toprule + & SaT-SM & SaT-Lora-T & WtP-P & SaT-T & WtP-T & SaT-U & WtP-U & L-3 & C-R \\ +\midrule +SaT-SM & - & 0.001 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-Lora-T & - & - & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-P & - & - & - & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 & 0.000 \\ +SaT-T & - & - & - & - & 0.003 & 0.000 & 0.000 & 0.000 & 0.000 \\ +WtP-T & - & - & - & - & - & 0.140 & 0.000 & 0.000 & 0.000 \\ +SaT-U & - & - & - & - & - & - & 0.000 & 0.000 & 0.000 \\ +WtP-U & - & - & - & - & - & - & - & 0.000 & 0.000 \\ +L-3 & - & - & - & - & - & - & - & - & 0.000 \\ +C-R & - & - & - & - & - & - & - & - & - \\ +\bottomrule +\end{tabular} + +% WtP-P: 0.906 +% WtP-T: 0.831 +% WtP-U: 0.727 +% C-R: 0.349 +% L-3: 0.425 +% SaT-SM: 0.933 +% SaT-T: 0.848 +% SaT-U: 0.821 +% SaT-Lora-T: 0.92 +% SaT-Lora-U: 0.919 \ No newline at end of file diff --git a/wtpsplit/train/train_SM.py b/wtpsplit/train/train_SM.py index da1526a6..86088ed7 100644 --- a/wtpsplit/train/train_SM.py +++ b/wtpsplit/train/train_SM.py @@ -1,7 +1,8 @@ -import argparse import math import random +import sys from collections import defaultdict +from dataclasses import dataclass from itertools import cycle from typing import Iterable, List, Sequence, Tuple @@ -11,21 +12,28 @@ from datasets import Dataset from torch.utils.data import BatchSampler, ConcatDataset, DataLoader, SubsetRandomSampler from tqdm import tqdm -from transformers import AutoTokenizer, Trainer, TrainerCallback, TrainingArguments +from transformers import AutoTokenizer, HfArgumentParser, Trainer, TrainerCallback, TrainingArguments import wandb from wtpsplit.models import SubwordXLMForTokenClassification from wtpsplit.utils import Constants -parser = argparse.ArgumentParser() -parser.add_argument("--block_size", type=int, default=256) -parser.add_argument("--num_layers", type=int, default=12) -parser.add_argument("--lim_lookahead", type=bool, default=False) -parser.add_argument("--without_pretraining", type=bool, default=False) -parser.add_argument("--no_sm_corruption", type=bool, default=False) +@dataclass +class Args: + block_size: int = 256 + num_layers: int = 12 + lim_lookahead: bool = False + without_pretraining: bool = False + no_sm_corruption: bool = False -args = parser.parse_args() +# Parsing command line arguments or JSON config files as needed +parser = HfArgumentParser([Args, TrainingArguments]) + +if len(sys.argv) > 1 and sys.argv[1].endswith(".json"): + args, training_args = parser.parse_json_file(sys.argv[1]) +else: + args, training_args = parser.parse_args_into_dataclasses() data_path = "data/all_data_11_05-all.pth" all_data = torch.load(data_path) @@ -113,33 +121,33 @@ if args.without_pretraining: model_checkpoint = "xlm-roberta-base" elif args.num_layers == 1: - if args.lim_lookahead: - raise NotImplementedError("Not implemented") - else: + if not args.lim_lookahead: model_checkpoint = "segment-any-text/sat-1l-no-limited-lookahead" + else: + model_checkpoint = "segment-any-text/sat-1l" elif args.num_layers == 3: - if args.lim_lookahead: + if not args.lim_lookahead: model_checkpoint = "segment-any-text/sat-3l-no-limited-lookahead" else: model_checkpoint = "segment-any-text/sat-3" elif args.num_layers == 6: - if args.lim_lookahead: + if not args.lim_lookahead: model_checkpoint = "segment-any-text/sat-6l-no-limited-lookahead" else: model_checkpoint = "segment-any-text/sat-6l" elif args.num_layers == 9: - if args.lim_lookahead: + if not args.lim_lookahead: model_checkpoint = "segment-any-text/sat-9l-no-limited-lookahead" else: model_checkpoint = "segment-any-text/sat-9l" elif args.num_layers == 12: - if args.lim_lookahead: + if not args.lim_lookahead: model_checkpoint = "segment-any-text/sat-12l-no-limited-lookahead" else: model_checkpoint = "segment-any-text/sat-12l" else: - raise ValueError("Invalid number of layers. Valid values are 3, 6, 12.") + raise ValueError("Invalid number of layers. Valid values are 1, 3, 6, 9, 12.") print(model_checkpoint) @@ -291,11 +299,13 @@ def pack_sentences(input_data_dict, block_size): experiment_name = model_checkpoint.split("/")[-1] -experiment_name += str(args.num_layers) + "L" +# experiment_name += str(args.num_layers) + "L" if args.no_sm_corruption: experiment_name += "-no-corruption" +training_args.output_dir = experiment_name + def compute_prf(true_values, predicted_values): TP = np.sum((predicted_values == 1) & (true_values == 1)) @@ -375,24 +385,24 @@ def on_step_end(self, args, state, control, **kwargs): run = wandb.init(project="sentence") wandb.run.name = experiment_name -args = TrainingArguments( - output_dir=experiment_name, - overwrite_output_dir=True, - evaluation_strategy="steps", - eval_steps=250, - report_to="wandb", - learning_rate=3e-5, - warmup_steps=500, - per_device_train_batch_size=128, - per_device_eval_batch_size=128, - weight_decay=0.01, - push_to_hub=False, - save_total_limit=1, - save_strategy="steps", - save_steps=1000, - load_best_model_at_end=False, - max_steps=20000, -) +# args = TrainingArguments( +# output_dir=experiment_name, +# overwrite_output_dir=True, +# evaluation_strategy="steps", +# eval_steps=250, +# report_to="wandb", +# learning_rate=3e-5, +# warmup_steps=500, +# per_device_train_batch_size=128, +# per_device_eval_batch_size=128, +# weight_decay=0.01, +# push_to_hub=False, +# save_total_limit=1, +# save_strategy="steps", +# save_steps=1000, +# load_best_model_at_end=False, +# max_steps=20000, +# ) class RoundRobinSampler: @@ -498,7 +508,7 @@ def get_train_dataloader(self) -> DataLoader: trainer = CustomTrainer( model=model, - args=args, + args=training_args, train_dataset=train_datasets, eval_dataset=None, compute_metrics=compute_metrics, From dfb154d44e60cf59ae5f78f2874c3b50edf614a2 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 17 Jun 2024 08:43:56 +0000 Subject: [PATCH 239/262] update reqs.txt --- requirements.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 09ba6b3b..c69d50c2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,4 +11,9 @@ iso-639 scikit-learn==1.2.2 numpy==1.23.5 pydantic -torchinfo \ No newline at end of file +torchinfo +conllu +genalog +pandarallel +cohere +replicate \ No newline at end of file From e7606d3ee60c84efaf32fc2f4941ce2985cf00a6 Mon Sep 17 00:00:00 2001 From: markus583 Date: Mon, 17 Jun 2024 13:40:12 +0000 Subject: [PATCH 240/262] try onnx export --- ..._to_onnx.py => export_to_onnx_charbert.py} | 0 scripts/export_to_onnx_sat-sm.py | 57 ++++++++++++ test_sat.py | 88 +++++++++++++++++++ test.py => test_wtp.py | 0 wtpsplit/__init__.py | 35 +++++--- wtpsplit/extract.py | 37 ++++++-- wtpsplit/extract_batched.py | 4 +- 7 files changed, 200 insertions(+), 21 deletions(-) rename scripts/{export_to_onnx.py => export_to_onnx_charbert.py} (100%) create mode 100644 scripts/export_to_onnx_sat-sm.py create mode 100644 test_sat.py rename test.py => test_wtp.py (100%) diff --git a/scripts/export_to_onnx.py b/scripts/export_to_onnx_charbert.py similarity index 100% rename from scripts/export_to_onnx.py rename to scripts/export_to_onnx_charbert.py diff --git a/scripts/export_to_onnx_sat-sm.py b/scripts/export_to_onnx_sat-sm.py new file mode 100644 index 00000000..47f9fee1 --- /dev/null +++ b/scripts/export_to_onnx_sat-sm.py @@ -0,0 +1,57 @@ +from dataclasses import dataclass +from pathlib import Path + +import onnx +import torch +from onnxruntime.transformers.optimizer import optimize_model +from transformers import AutoModelForTokenClassification, HfArgumentParser + +import wtpsplit # noqa +import wtpsplit.models # noqa + + +@dataclass +class Args: + model_name_or_path: str = "segment-any-text/sat-12l-sm" + output_dir: str = "sat-12l-sm" + device: str = "cpu" + # TODO: lora merging here + + +if __name__ == "__main__": + (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() + + output_dir = Path(args.output_dir) + output_dir.mkdir(exist_ok=True, parents=True) + + model = AutoModelForTokenClassification.from_pretrained(args.model_name_or_path) + # model = model.half() # CUDA ONLY! + model = model.to(args.device) + + torch.onnx.export( + model, + { + "attention_mask": torch.zeros((1, 14), dtype=torch.long, device=args.device), + "input_ids": torch.zeros((1, 14), dtype=torch.long, device=args.device), + }, + output_dir / "model.onnx", + verbose=True, + input_names=["attention_mask", "input_ids"], + output_names=["logits"], + dynamic_axes={ + "input_ids": {0: "batch", 1: "sequence"}, + "attention_mask": {0: "batch", 1: "sequence"}, + "logits": {0: "batch", 1: "sequence"}, + }, + ) + + # m = optimize_model( + # str(output_dir / "model.onnx"), + # model_type="bert", + # optimization_options=None, + # opt_level=0, + # use_gpu=False, + # ) + + # optimized_model_path = output_dir / "model_optimized.onnx" + # onnx.save_model(m.model, optimized_model_path) diff --git a/test_sat.py b/test_sat.py new file mode 100644 index 00000000..dd65e2cd --- /dev/null +++ b/test_sat.py @@ -0,0 +1,88 @@ +# noqa: E501 +from wtpsplit import SaT + + +# def test_split_ort(): +# sat = SaT("segment-any-text/sat-3l", ort_providers=["CPUExecutionProvider"]) + +# splits = sat.split("This is a test sentence This is another test sentence.", threshold=0.005) +# assert splits == ["This is a test sentence ", "This is another test sentence."] + + +def test_split_torch(): + sat = SaT("segment-any-text/sat-3l", hub_prefix=None) + + splits = sat.split("This is a test sentence This is another test sentence.", threshold=0.025) + assert splits == ["This is a test sentence ", "This is another test sentence."] + + +def test_split_torch_sm(): + sat = SaT("segment-any-text/sat-12l-sm", hub_prefix=None) + + splits = sat.split("This is a test sentence. This is another test sentence.", threshold=0.25) + assert splits == ["This is a test sentence. ", "This is another test sentence."] + + +def test_move_device(): + sat = SaT("segment-any-text/sat-3l", hub_prefix=None) + sat.half().to("cpu") + + +def test_strip_whitespace(): + sat = SaT("segment-any-text/sat-3l", hub_prefix=None) + + splits = sat.split( + "This is a test sentence This is another test sentence. ", strip_whitespace=True, threshold=0.025 + ) + assert splits == ["This is a test sentence", "This is another test sentence."] + + +def test_split_noisy(): + sat = SaT("segment-any-text/sat-12l-sm", hub_prefix=None) + + splits = sat.split("this is a sentence :) this is another sentence lol") + assert splits == ["this is a sentence :) ", "this is another sentence lol"] + + +def test_split_batched(): + sat = SaT("segment-any-text/sat-3l", hub_prefix=None) + + splits = list(sat.split(["Paragraph-A Paragraph-B", "Paragraph-C100 Paragraph-D"])) + + assert splits == [ + ["Paragraph-A ", "Paragraph-B"], + ["Paragraph-C100 ", "Paragraph-D"], + ] + + +def test_split_lora(): + ud = SaT("segment-any-text/sat-3l", hub_prefix=None, style_or_domain="ud", language="en") + opus = SaT("segment-any-text/sat-3l", hub_prefix=None, style_or_domain="opus100", language="en") + ersatz = SaT("segment-any-text/sat-3l", hub_prefix=None, style_or_domain="ersatz", language="en") + + text = "’I couldn’t help it,’ said Five, in a sulky tone; ’Seven jogged my elbow.’ | On which Seven looked up and said, ’That’s right, Five! Always lay the blame (...)!’" + + splits_ud = ud.split(text) + splits_opus100 = opus.split(text) + splits_ersatz = ersatz.split(text) + + assert splits_ud != splits_opus100 != splits_ersatz + + +def test_split_paragraphs(): + sat = SaT("segment-any-text/sat-3l", hub_prefix=None) + + text = " ".join( + """ +Text segmentation is the process of dividing written text into meaningful units, such as words, sentences, or topics. The term applies both to mental processes used by humans when reading text, and to artificial processes implemented in computers, which are the subject of natural language processing. The problem is non-trivial, because while some written languages have explicit word boundary markers, such as the word spaces of written English and the distinctive initial, medial and final letter shapes of Arabic, such signals are sometimes ambiguous and not present in all written languages. +Daniel Wroughton Craig CMG (born 2 March 1968) is an English actor who gained international fame by playing the fictional secret agent James Bond for five installments in the film series, from Casino Royale (2006) up to No Time to Die (2021). +""".strip().split() + ) + + splits = sat.split(text, do_paragraph_segmentation=True) + + paragraph1 = "".join(splits[0]) + paragraph2 = "".join(splits[1]) + + assert paragraph1.startswith("Text segmentation is") + assert paragraph2.startswith("Daniel Wroughton Craig CMG (born 2 March 1968) is") diff --git a/test.py b/test_wtp.py similarity index 100% rename from test.py rename to test_wtp.py diff --git a/wtpsplit/__init__.py b/wtpsplit/__init__.py index c3a268bb..c226f5a6 100644 --- a/wtpsplit/__init__.py +++ b/wtpsplit/__init__.py @@ -15,7 +15,7 @@ import adapters from wtpsplit.evaluation import token_to_char_probs -from wtpsplit.extract import ORTWrapper, PyTorchWrapper, extract +from wtpsplit.extract import BertCharORTWrapper, PyTorchWrapper, SaTORTWrapper, extract from wtpsplit.utils import Constants, indices_to_sentences, sigmoid __version__ = "1.0.0" @@ -74,13 +74,15 @@ def __init__( try: import onnxruntime as ort # noqa + + ort.set_default_logger_severity(0) except ModuleNotFoundError: raise ValueError("Please install `onnxruntime` to use WtP with an ONNX model.") # to register models for AutoConfig import wtpsplit.configs # noqa - self.model = ORTWrapper( + self.model = BertCharORTWrapper( AutoConfig.from_pretrained(model_name_to_fetch, **(from_pretrained_kwargs or {})), ort.InferenceSession(str(onnx_path), providers=ort_providers, **(ort_kwargs or {})), ) @@ -449,6 +451,8 @@ def __init__( try: import onnxruntime as ort # noqa + + ort.set_default_logger_severity(0) except ModuleNotFoundError: raise ValueError("Please install `onnxruntime` to use WtP with an ONNX model.") @@ -456,7 +460,7 @@ def __init__( import wtpsplit.configs # noqa # TODO: ONNX integration - self.model = ORTWrapper( + self.model = SaTORTWrapper( AutoConfig.from_pretrained(model_name_to_fetch, **(from_pretrained_kwargs or {})), ort.InferenceSession(str(onnx_path), providers=ort_providers, **(ort_kwargs or {})), ) @@ -707,12 +711,21 @@ def get_default_threshold(model_str: str): if __name__ == "__main__": - sat_lora = SaT("sat-3l", style_or_domain="ud", language="en") - out = sat_lora.split( - "Hello this is a test But this is different now Now the next one starts looool", - do_paragraph_segmentation=False, - strip_whitespace=True, - ) - print(out) - splits = list(sat_lora.split(["Paragraph-A Paragraph-B", "Paragraph-C100 Paragraph-D"])) + # sat_lora = SaT("sat-3l", style_or_domain="ud", language="en") + # out = sat_lora.split( + # "Hello this is a test But this is different now Now the next one starts looool", + # do_paragraph_segmentation=False, + # strip_whitespace=True, + # ) + # print(out) + # splits = list(sat_lora.split(["Paragraph-A Paragraph-B", "Paragraph-C100 Paragraph-D"])) + # print(splits) + # sat_sm = SaT("sat-12l-sm") + # splits = sat_sm.split("This is a test sentence. This is another test sentence.", threshold=0.25) + # print(splits) + sat_ort_sm = SaT("/home/Markus/wtpsplit/scripts/sat-12l-sm", ort_providers=["CPUExecutionProvider"]) + splits = sat_ort_sm.split("This is a test sentence. This is another test sentence.", threshold=0.25) print(splits) + # wtp = WtP("wtp-bert-mini", ort_providers=["CPUExecutionProvider"]) + + # splits = wtp.split("This is a test sentence This is another test sentence.", threshold=0.005) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index f6dd39a9..2ef9308c 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -12,7 +12,7 @@ logger = logging.getLogger(__name__) -class ORTWrapper: +class BertCharORTWrapper: def __init__(self, config, ort_session): self.config = config self.ort_session = ort_session @@ -32,6 +32,26 @@ def __call__(self, hashed_ids, attention_mask): return {"logits": logits} +class SaTORTWrapper: + def __init__(self, config, ort_session): + self.config = config + self.ort_session = ort_session + + def __getattr__(self, name): + assert hasattr(self, "ort_session") + return getattr(self.ort_session, name) + + def __call__(self, input_ids, attention_mask): + logits = self.ort_session.run( + ["logits"], + { + "attention_mask": attention_mask.astype(np.int64), + "input_ids": input_ids.astype(np.int64) + }, + )[0] + + return {"logits": logits} + class PyTorchWrapper: def __init__(self, model): @@ -42,7 +62,7 @@ def __getattr__(self, name): assert hasattr(self, "model") return getattr(self.model, name) - def __call__(self, input_ids, hashed_ids, attention_mask, language_ids=None): + def __call__(self, hashed_ids, attention_mask, language_ids=None, input_ids=None): try: import torch except ImportError: @@ -111,11 +131,10 @@ def extract( # total number of forward passes num_chunks = sum(math.ceil(max(length - actual_block_size, 0) / stride) + 1 for length in text_lengths) - if text_lengths[0] <= max_block_size - 2: + if text_lengths[0] <= max_block_size - 2 and use_subwords: # if the input is smaller than the block size, we only need one forward pass num_chunks = 1 - if use_subwords: - actual_block_size, block_size = actual_block_size + 2, block_size + 2 # account for CLS and SEP tokens + actual_block_size, block_size = actual_block_size + 2, block_size + 2 # account for CLS and SEP tokens # preallocate a buffer for all input hashes & attention masks if not use_subwords: @@ -187,7 +206,7 @@ def extract( if lang_code is None: raise ValueError("Please specify a `lang_code` when using a model with language adapters.") - if isinstance(model, ORTWrapper): + if isinstance(model, BertCharORTWrapper): raise ValueError("Language adapters are not supported in ONNX models.") language_ids = np.array( @@ -218,10 +237,12 @@ def extract( batch_attention_mask = np.pad(batch_attention_mask, ((0, n_missing), (0, 0))) kwargs = {"language_ids": language_ids[: len(batch_attention_mask)]} if uses_lang_adapters else {} + if use_subwords: + kwargs["input_ids"] = batch_input_ids + else: + kwargs["hashed_ids"] = batch_input_hashes logits = model( - input_ids=batch_input_ids if use_subwords else None, - hashed_ids=None if use_subwords else batch_input_hashes, attention_mask=batch_attention_mask, **kwargs, )["logits"] diff --git a/wtpsplit/extract_batched.py b/wtpsplit/extract_batched.py index 3464aadd..53020b43 100644 --- a/wtpsplit/extract_batched.py +++ b/wtpsplit/extract_batched.py @@ -7,7 +7,7 @@ from tokenizers import AddedToken from wtpsplit.utils import Constants, hash_encode -from wtpsplit.extract import ORTWrapper +from wtpsplit.extract import BertCharORTWrapper logger = logging.getLogger(__name__) @@ -83,7 +83,7 @@ def extract_batched( if lang_code is None: raise ValueError("Please specify a `lang_code` when using a model with language adapters.") - if isinstance(model, ORTWrapper): + if isinstance(model, BertCharORTWrapper): raise ValueError("Language adapters are not supported in ONNX models.") language_ids = np.array( From fb0e05f32323c4da2dca38ace72b805710f549c7 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 18 Jun 2024 12:51:41 +0000 Subject: [PATCH 241/262] update readme stuff --- .github/workflows/python.yml | 3 +- README.md | 248 ++++++++++++------ requirements.txt | 4 +- setup.py | 1 + system-fig.png | Bin 0 -> 170225 bytes .../train/{train_adapter.py => train_lora.py} | 0 6 files changed, 174 insertions(+), 82 deletions(-) create mode 100644 system-fig.png rename wtpsplit/train/{train_adapter.py => train_lora.py} (100%) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 11f1f4a2..93a04a4d 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -30,4 +30,5 @@ jobs: ruff --output-format=github --target-version=py37 . - name: Test with pytest run: | - pytest test.py + pytest test_wtp.py + pytest test_sat.py diff --git a/README.md b/README.md index b3dbced4..829c69d3 100644 --- a/README.md +++ b/README.md @@ -1,75 +1,52 @@ -# wtpsplit🪓 +# Segment any Text: Robust, Efficient and Adaptable Sentence Segmentation -Code for the paper [Where's the Point? Self-Supervised Multilingual Punctuation-Agnostic Sentence Segmentation](https://arxiv.org/abs/2305.18893) with Jonas Pfeiffer and Ivan Vulić, accepted at ACL 2023. +Code for the paper [Segment Any Text: A Universal Approach for Robust, Efficient and Adaptable Sentence Segmentation](TODO) by Markus Frohmann, Igor Sterner, Benjamin Minixhofer, Ivan Vulić and Markus Schedl. + +This repository contains `segment-any-text`, a package for robust, efficient and adaptable sentence segmentation across 85 languages, as well as the code and configs to reproduce the **state-of-the-art** results in 8 distinct corpora and 85 languages demonstrated in our paper. + +![System Figure](./system-fig.png) -This repository contains `wtpsplit`, a package for robust and adaptible sentence segmentation across 85 languages, as well as the code and configs to reproduce the experiments in the paper. ## Installation ```bash -pip install wtpsplit +pip install segment-any-text ``` ## Usage ```python -from wtpsplit import WtP +from sat import SaT -wtp = WtP("wtp-bert-mini") +sat = SaT("sat-3l") # optionally run on GPU for better performance # also supports TPUs via e.g. wtp.to("xla:0"), in that case pass `pad_last_batch=True` to wtp.split -wtp.half().to("cuda") +sat.half().to("cuda") # returns ["This is a test", "This is another test."] -wtp.split("This is a test This is another test.") +sat.split("This is a test This is another test.") # returns an iterator yielding a lists of sentences for every text -# do this instead of calling wtp.split on every text individually for much better performance -wtp.split(["This is a test This is another test.", "And some more texts..."]) - -# if you're using a model with language adapters, also pass a `lang_code` -wtp.split("This is a test This is another test.", lang_code="en") - -# depending on your usecase, adaptation to e.g. the Universal Dependencies style may give better results -# this always requires a language code -wtp.split("This is a test This is another test.", lang_code="en", style="ud") -``` - -## ONNX support +sat.split(["This is a test This is another test.", "And some more texts..."]) -You can enable ONNX inference for the `wtp-bert-*` models: +# use our '-sm' models for general sentence segmentation tasks +sat_sm = SaT("sat-3l-sm") +# this will be especially better for noisy text +sat.split("this is a test this is another test") +# returns ["this is a test", "this is another test"] -```python -wtp = WtP("wtp-bert-mini", onnx_providers=["CUDAExecutionProvider"]) -``` - -This requires `onnxruntime` and `onnxruntime-gpu`. It should give a good speedup on GPU! - -```python ->>> from wtpsplit import WtP ->>> texts = ["This is a sentence. This is another sentence."] * 1000 - -# PyTorch GPU ->>> model = WtP("wtp-bert-mini") ->>> model.half().to("cuda") ->>> %timeit list(model.split(texts)) -272 ms ± 16.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) - -# onnxruntime GPU ->>> model = WtP("wtp-bert-mini", ort_providers=["CUDAExecutionProvider"]) ->>> %timeit list(model.split(texts)) -198 ms ± 1.36 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) +# use trained lora modules for strong adaptation to language & domain/style +sat.split("This is a test This is another test.", lang_code="en", style="ud") ``` -Notes: -- The `wtp-canine-*` models are currently not supported with ONNX because the pooling done by CANINE is not trivial to export. Ideas to solve this are very welcome! -- This does not work with Python 3.7 because `onnxruntime` does not support the opset we need for py37. - ## Available Models -Pro tips: I recommend `wtp-bert-mini` for speed-sensitive applications, otherwise `wtp-canine-s-12l`. The `*-no-adapters` models provide a good tradeoff between speed and performance. You should *probably not* use `wtp-bert-tiny`. - +If you need a general sentence segmentation model, use `-sm` models (e.g., `sat-3l-sm`) +For speed-sensitive applications, we recommend 3-layer models (`sat-3l` and `sat-3l-sm`). They provide a good tradeoff between speen and performance. +The best (and largest) models are our 12-layer models: `sat-12l` and `sat-12l-sm`. +## TODO TODO TODO + + +Note that this library also supports previous [`WtP`](https://arxiv.org/abs/2305.18893) models. +You can use them in essentially the same way as `SaT`models: -### Paragraph Segmentation +```python +from sat import WtP + +wtp = WtP("wtp-bert-mini") +# similar functionality as for SaT models +wtp.split("This is a test This is another test.") +``` + +For more details on WtP and reproduction details, see the `wtpsplit` branch. -Since WtP models are trained to predict newline probablity, they can segment text into paragraphs in addition to sentences. +## Paragraph Segmentation + +Since SaT are trained to predict newline probablity, they can segment text into paragraphs in addition to sentences. ```python # returns a list of paragraphs, each containing a list of sentences # adjust the paragraph threshold via the `paragraph_threshold` argument. -wtp.split(text, do_paragraph_segmentation=True) +sat.split(text, do_paragraph_segmentation=True) +``` + +## Adaptation + + +SaT can be domain- and style-adapted via LoRA. We provide trained LoRA modules for Universal Dependencies, OPUS100, Ersatz, and TED (i.e., ASR-style transcribed speecjes) sentence styles in 81 languages for `sat-3l`and `sat-12l`. Additionally, we provide LoRA modules for legal documents (laws and judgements) in 6 languages, code-switching in 4 language pairs, and tweets in 3 languages. For details, we refer to our [paper](TODO). + +We also provided verse segmentation modules for 16 genres for `sat-12-no-limited-lookahead`. + +Load LoRA modules like this: +```python + +# requires both lang_code and style_or_domain +# for available ones, check the /loras folder +sat_lora = SaT("sat-3l", style_or_domain="ud", language="en") +sat_lora.split("Hello this is a test But this is different now Now the next one starts looool") +# now for a highly distinct domain +sat_lora_distinct = SaT("sat-12l", style_or_domain="code-switching", language="es-en") +sat_lora_distinct.split("in the morning over there cada vez que yo decía algo él me decía algo") ``` -### Adaptation +You can also freely adapt the segmentation threshold, with a higher threshold leading to more conservative segmentation: +```python + +sat.split("This is a test This is another test.", threshold=0.4) +# works similarly for lora; but thresholds are higher +sat_lora.split("Hello this is a test But this is different now Now the next one starts looool", threshold=0.7) +``` + -### Advanced Usage +## Advanced Usage -Get the newline or sentence boundary probabilities for a text: +### Get the newline or sentence boundary probabilities for a text: ```python # returns newline probabilities (supports batching!) -wtp.predict_proba(text) - -# returns sentence boundary probabilities for the given style -wtp.predict_proba(text, lang_code="en", style="ud") +sat.predict_proba(text) ``` -Load a WtP model in [HuggingFace `transformers`](https://github.com/huggingface/transformers): +### Load a SaT model in [HuggingFace `transformers`](https://github.com/huggingface/transformers): ```python -# import wtpsplit to register the custom models -# (character-level BERT w/ hash embeddings and canine with language adapters) +# import library to register the custom models import wtpsplit from transformers import AutoModelForTokenClassification -model = AutoModelForTokenClassification.from_pretrained("benjamin/wtp-bert-mini") # or some other model name +model = AutoModelForTokenClassification.from_pretrained("segment-any-text/sat-3l-sm") # or some other model name; see https://huggingface.co/segment-any-text +``` + +### Adapt to your own corpus via LoRA +Our models can be efficiently adapted via LoRA in a powerful way. Only 10-100 training segmented training sentences should already improve performance considerably. To do so: + +Clone the repository and install requirements: + +``` +git clone https://github.com/segment-any-text/segment-any-text +cd segment-any-text +pip install -e . +pip install -r requirements.txt +cd adapters +pip install -e . +cd .. +``` + +Create data in this format: +```python +import torch + +torch.save( + { + "language_code": { + "sentence": { + "dummy-dataset": { + "meta": { + "train_data": ["train sentence 1", "train sentence 2"], + }, + "data": [ + "test sentence 1", + "test sentence 2", + ] + } + } + } + }, + "dummy-dataset.pth" +) ``` +Create/adapt config; provide base model via `model_name_or_path` and training data .pth via ' text_path`: + + +`configs/lora/lora_dummy_config.json` + +Train LoRA: +``` +python3 wtpsplit/train/train_lora.py configs/lora/lora_dummy_config.json +``` + +Once training is done, provide your saved module's path to SaT: +```python + +sat_lora_adapted = SaT("model-used", lora_path="dummy_lora_path") +sat_lora_adapted.split("Some domains-specific or styled text") +``` + +Adjust the dataset name, language and model in the above to your needs. + + ## Reproducing the paper -`configs/` contains the configs for the runs from the paper. We trained on a TPUv3-8. Launch training like this: +`configs/` contains the configs for the runs from the paper for base and sm models as well as LoRA modules. Launch training for each of them like this: ``` -python wtpsplit/train/train.py configs/.json +python3 wtpsplit/train/train.py configs/.json +python3 wtpsplit/train/train_sm.py configs/.json +python3 wtpsplit/train/train_lora.py configs/.json ``` In addition: - `wtpsplit/data_acquisition` contains the code for obtaining evaluation data and raw text from the mC4 corpus. - `wtpsplit/evaluation` contains the code for: - - intrinsic evaluation (i.e. sentence segmentation results) via `intrinsic.py`. The raw intrinsic results in JSON format are also at `evaluation_results/` - - extrinsic evaluation on Machine Translation in `extrinsic.py` - - baseline (PySBD, nltk, etc.) intrinsic evaluation in `intrinsic_baselines.py` - - punctuation annotation experiments in `punct_annotation.py` and `punct_annotation_wtp.py` - + - evaluation (i.e. sentence segmentation results) via `intrinsic.py`. + - short-sequence evaluation (i.e. sentence segmentation results for pairs/k-mers of sentences) via `intrinsic_pairwise.py`. + - LLM baseline evaluation (`llm_sentence.py`), legal baseline evaluation (`legal_baselines.py`) + - baseline (PySBD, nltk, etc.) evaluation results in `intrinsic_baselines.py` and `intrinsic_baselines_multi.py` + - Raw results in JSON format are also in `evaluation_results/` + - Statistical significane testing code and results ara in `stat_tests/` + - punctuation annotation experiments in `punct_annotation.py` and `punct_annotation_wtp.py` (WtP only) + - extrinsic evaluation on Machine Translation in `extrinsic.py` (WtP only) + +Ensure to install packages from `requirements.txt` beforehand. ## Supported Languages | iso | Name | @@ -266,10 +345,15 @@ In addition: | zh | Chinese | | zu | Zulu | -## Citation +For details, we refer to our [paper](TODO). -Please cite `wtpsplit` as +## Citation +If you find our `segment-any-text` useful, please kindly cite our paper: +``` +@inproceedings{TODO,} +``` +If you use WtP models, cite: ``` @inproceedings{minixhofer-etal-2023-wheres, title = "Where{'}s the Point? Self-Supervised Multilingual Punctuation-Agnostic Sentence Segmentation", @@ -282,15 +366,19 @@ Please cite `wtpsplit` as address = "Toronto, Canada", publisher = "Association for Computational Linguistics", url = "https://aclanthology.org/2023.acl-long.398", - pages = "7215--7235", - abstract = "Many NLP pipelines split text into sentences as one of the crucial preprocessing steps. Prior sentence segmentation tools either rely on punctuation or require a considerable amount of sentence-segmented training data: both central assumptions might fail when porting sentence segmenters to diverse languages on a massive scale. In this work, we thus introduce a multilingual punctuation-agnostic sentence segmentation method, currently covering 85 languages, trained in a self-supervised fashion on unsegmented text, by making use of newline characters which implicitly perform segmentation into paragraphs. We further propose an approach that adapts our method to the segmentation in a given corpus by using only a small number (64-256) of sentence-segmented examples. The main results indicate that our method outperforms all the prior best sentence-segmentation tools by an average of 6.1{\%} F1 points. Furthermore, we demonstrate that proper sentence segmentation has a point: the use of a (powerful) sentence segmenter makes a considerable difference for a downstream application such as machine translation (MT). By using our method to match sentence segmentation to the segmentation used during training of MT models, we achieve an average improvement of 2.3 BLEU points over the best prior segmentation tool, as well as massive gains over a trivial segmenter that splits text into equally-sized blocks.", + pages = "7215--7235" } ``` ## Acknowledgments -Ivan Vulić is supported by a personal Royal Society University Research Fellowship ‘Inclusive and Sustainable Language Technology for a Truly Multilingual World’ (no 221137; 2022–). Research supported with Cloud TPUs from Google’s TPU Research Cloud (TRC). We thank Christoph Minixhofer for advice in the initial stage of this project. We also thank Sebastian Ruder and Srini Narayanan for helpful feedback on a draft of the paper. +This research was funded in whole or in part by the Austrian Science Fund (FWF): P36413, P33526, and DFH-23, and by the State of Upper Austria and the Federal Ministry of Education, Science, and Research, through grants LIT-2021-YOU-215. In addition, Ivan Vulic and Benjamin Minixhofer ´have been supported through the Royal Society University Research Fellowship ‘Inclusive and Sustainable Language Technology for a Truly Multilingual World’ (no 221137) awarded to Ivan Vulic.´ This research has also been supported with Cloud TPUs from Google’s TPU Research Cloud (TRC). This work was also supported by compute credits +from a Cohere For AI Research Grant, these grants are designed to support academic partners conducting research with the goal of releasing scientific artifacts and data for good projects. We also thank Simone Teufel for fruitful discussions. + ## Previous Version -*This repository previously contained `nnsplit`, the precursor to `wtpsplit`. You can still use the `nnsplit` branch (or the `nnsplit` PyPI releases) for the old version, however, this is highly discouraged and not maintained! Please let me know if you have a usecase which `nnsplit` can solve but `wtpsplit` can not.* +*This repository previously contained `nnsplit` and `wtpsplit`, the precursors to `segment-any-text`. We still support all functionality of `wtpsplit`. Moreover, you can still use the `nnsplit` branch (or the `nnsplit` PyPI releases) for the old version, however, this is highly discouraged and not maintained! Please let us know if you have a usecase which `nnsplit` can solve but `segment-any-test` can not.* + +## Final Words +We hope this repo is useful. For any questions, please create an issue or send an email to markus.frohmann@gmail.com, and I will get back to you as soon as possible. \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index c69d50c2..52da8bb4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,4 +16,6 @@ conllu genalog pandarallel cohere -replicate \ No newline at end of file +replicate +onnx +onnxruntime \ No newline at end of file diff --git a/setup.py b/setup.py index a9908930..db4f706f 100644 --- a/setup.py +++ b/setup.py @@ -18,6 +18,7 @@ "cached_property", # for Py37 "torchinfo", "mosestokenizer" + "adapters==0.2.1" ], url="https://github.com/bminixhofer/wtpsplit", package_data={"wtpsplit": ["data/*"]}, diff --git a/system-fig.png b/system-fig.png new file mode 100644 index 0000000000000000000000000000000000000000..43021f5dbd2f9259e0460ceea431b04fac4187ae GIT binary patch literal 170225 zcma&Nb980T);8L)ZQFJ_?AS@iR>wxi){br4PRF)w+qU(kf9JmEocDhBk2^-~vG=Mq z)?QV!=A8A+IiCvoDJupCjScOf z1n%+I1*nODjKH^VHBm5c`e0wzP`2XgzrTHh@BRA$8nh`k{Pyj$KtfnR$wlWZ156K9 z3@322HLNunQB2Th=i=f*C4DCzTdDYpq+c=zSR@qH%Ffvt0iDnn6Dpv|ed1wrd0mP= zko@Se>%e%>$=GROBja6k;M#`}((k_;rGmHz*}uDjIfRXk$tSY-qbwFHyH{6n9xpe= zG&Hc4s1s2AzaG;YGGxZY!RcLCKxZ?b`;o!rIF&5`(*4dZv_m6+2>SoDHe*2{p&Ex{ zg>s#CY&$!Q2EW?lIzJ03y8H|feeo@hG>t#ppAEVLi zX;V_&uX{VnHI0pfS>7KZ0{-93%)c-&5UT|PiR%jRPdwzL|cQ}16<>sJwca%xKUq`v0L!vG~8Wv71# zt+mn)eM|)v%kZ%K2aUZg`6ZOn zd{SY9(>6J~$2Gp;!*e7(iT_@WUw$drrqj714Oix7mjQO2=YTL(HvNpRQBrczpJ|2Q z!SDykUeM}x@K|rOJ&RK8#7cGkTRNZus6>|bbjG{Nx-J<_dz4UBU$^>&cXjfnKVSEw zhYfpLIy*ZVhqu!L{?|ysmq0qLzn(MKTf2PSI+E8>qxjN~(4ZIXz?|8olo{-5!(rrf z9#;ho_xI>!p#Ll&2mzH3J4>`#>Du}m#Iow{J8x<0VDdW-!7iX^{S!f z--n0<1Po2%fmW-M%+5gf8M9)^g{nNUDoSKlj2l`wQ z`za$~3e)`ixBMVi66(sUtD>F)q7@UINV?3R?4)sj7n6{H<<(2)|cH!T+`? zRHCtlZ1^wLCR=QUC<+O>9Pm>6?hdyza}$NW+eG?g^9f2*$RJ{Qa$9DRPL54flxT37 zu9Li3%X$!jvQe)*r@b)3Wuy!>WEx5^t3Jz{drK+qk z>gnaB9sTs*iy54im9+=FMm-m;b&08kjbBdSBa~ET&_ytM6_e(RO4w~gY&xrV#=9N5 z(OD_HuMnuvRl8jmA}%}EHAM+GTth{ueeo_3hZ_Q0fwhN)BrZ|3U3p2YQI7y@Bl@H9 zk(u~mcdli9YPd?Ho`K+llbeU;1yiY$Ar9B3}>7A;gPe2z3VDO&*%Z@D?GX3Yt=lZ_iw1@{8@q2 z^pgxL$TnCSG7aB~dg~nAS&tv-TEb6)ikx6}DnzV*f*Dyf9YF=+#^S#a%9B+N!%=tD zik7TxcQ?k|p=-kFH#9mP{ojMiRXJSx5l?dyj_HZ9HM7;~PBM0aAo4v37?qVC2FQIu zP~HM^gqv4Je|BrQdz#aWM?_=Ne++rRm{h7Q%=Sc#ljBqhv=D>GT3z27EOvfV#t_i2f} z&$qXh>{{IaF~%>eTsEB-a6v`{h+%jQoG@_f^&{x+3}h^w$wz98qwqW+2rbRKJ_P~1 z`H>c_MGtVmQqZeGS3lN59AxwZ!3<{@u4TK8h+Ib1aKGPz0%URJS|2h*jrAZFH8SLz z1spM{*{+H=;S=31)eWIFo952?f)@Q^B*CJ<@$}v!!yOKw&+GajLjJm}|7m-KEP*{g z0?Ut1o4oH?-((pEGj-7kMPJU;$XWbyVsJ;2(|$drC@=B4v-c$Y;uOm80EaN1_+dJt z`9{ZltD37I1t>8a9$WfIM0lVP;fxuBT3i7nRB^q88FZ|PYa;HrK)omL{bE)odZ zQRlzWNkrvLDK>tM>b%0xG#1G?l z_m}kAS&XZ4wp_w0?CF@Y>Z7eRmVI-)lfX^k#y6=75X8ML^--+&xUxkq(Atf~n>vWo zsaCjJ{kh(sIUQlQzz<{J+w$bnOEqV=NO-ft&)N8!#?MbMI`$pX(n$h!|k;!?&~F`f^uvdEsKv>S&8Y=)N{XRogEcqYc;-VB!Qs#56nOD!#_*M z^-kq65>~^7@?`JzRe}Q(@a>=)5h?~V++~lrY_KKGfo(n4KWz`5(DH{R^FES0rz;~= zD{u07`TWXWA9iv+@q_~d1WT#`d8&#^mv>Yr>}5}L4P#N@)2fFCt82}W;m8T9DZbp) zb=Fj8QtSv|-jJ zONb!sj4s)En$G?6>tGEF%k<23;f+r3MdE;jwts0>x0@*c;eVUF=&Fc&)!VQ{X}PBa zOW}h4fcWeI2tiyO+0pKyTT`x@(yqW0_{GiyIO7sf96j+j+24H=6zYvGVGc4Vs5E6e z5bJoS1#kkcbI+5Uyonkrq(o{N3bV`OYWC8EM5mC?)Z&6gQ99`v->i18O4T`UCTY8Q z^?N{R)&B_FcGCYZ7)ZS5iKwd!PnXL;Kd^r)hj`wO{sUx+# zaoadcS9&J@dHX0nk<)1w5w3GB$hzIUZ31rvtZ^uW_OWF@2dtRDZWZxX61TK3Hg#L7{5z^09&KFa ziI8c6JC)>e5) zlLH0NylCcNbPSvQ{dZXugide%?!eB82Lv!&Y0miQkvT{gq~a|+1n%t89=9+{VQIVh&CD?%F>51 zYyab-zkGEYF$@O1u(^5Zmi5|iSlV+*=!-`Jtg&^RY{7Qpt&6H|yid}NNkq1wOOZ!` z4EY={ocJ;g_<i6oSI+QGFEU3xQ`K=vgn0@SfF|%E%CRa94ED2{M z4{ki2^VObEGY@7VH8)m(;|%^<2M!6OZz4YLRGrE0+0DLSre7DxD3T2~(0j)*L&Spz zAEyj!<;M&f!~{>EYl-|3zX36>^pfZvqg^o&!Ykn#rzgyGH%1O63+(=AsE~squp9}k z4!q1984s)s>WHbHI+n5BCs8tv&qBL7@w+bv@@zfhZ|ex~b&W2qM88*ymtVUrn03$h zoGnfkU>sG{wiQd52`hCFhqYJ&NL1pGJfUhv21+HWrQevi`I(!^(n}lsRN-KF*4p7> z-q_*7v2#~@&`j6z={jvRd)L>w+%xHv-@a=t|3)|S$k|6{59WSFh~??%8)V_gy-ZS^ zE_P%ye9q{LONKRN#wVuAqc&$BB`N>iuZV$n4AiOr9`3ED_M1G=V-+DW*2&CJ8)^UK zJJH#Z*U$)@Xav^_iEe%H_h&2>hBbgv3dM@-dT{Fgcz_#?bo#c+EEtlQ)3!t%!%i%9 zu4vdu?lXJ}EI7K6e5KuQ+mBa7mdlMhjm*Pik z9=T5v(Zq6%`!fZnGHAOigyQUwf(|D{%8k71FlQ(y4`;z`FCV`1Q4^J#OZa|n&BRQd zP3Kzvso!G1f2V3Re|rX!Ut%700qj4#5n;sP6D8IN~qa@ z)R(~!nX1%K9_%|{wRrG#+Cl60Y!nL!Qtz;%oD2ecqb48z)LG;j3r7iLF zW5w`T=$8@bT2zBn5?VX$q^EeizLmW3?XgM>iBGh%prO}qoprkr1r_6nA*Ez!!AqIQ zEwwI)jg!xlG0FPZk#gL<{O0GnKY^s6km}wXYv)*buz`Ar^qCFZ-5GJbN^ip8g=h%M zP}3ihk<59aK>4{4f3FRfsr5a0iAVd<>I{Z}+O-AaKj;pz?^MKE4P~4nGRUAoTLr0E z-^fMfH<~EAy%z3HmhfS4Q5((8mEf93et^L|yKOz9h?3`?@x6RuE}$+kbW3V5rlcqd zs}=r7ULwBW$4a?oQ^zgojj0b0ws882KW1EE@eJ4C#rZ8Ui+vyhYO5iEZB8iR#VCFs* z%@kt(kGW8jxRCoiRT82tok|sN7{sdN?sS7{g~vV<-6Af2EMuj#OK^Sw?se7DX%Evj zivVI@UZstgp0v*P^f&AAC#QwI3pi%X-jR-g>drmU%IesWEPo=@nGfZH01`Gjn-2Tr zDYfsQf zSSHKA(>Z_RcFdG3egbANTFdhSLimw7)b9Q*)*2Vv58ywXgcHt4Dl(Q)1+Gbx;9KTD zB7G83Jy5P&ate5uQ`o2<@gigWn&s*6Gt~lpcm&f`90~YLY`SYMzPYR%qK#xm^yGuN zebhjJbZCaj9lU=V^t2h^j(+*7Mg}L}f#Gntpn-F!k2x#P zo8dg4*+@(=E+EwN6j~=3Jtffk*V@reoC&_ELS(2FiQM!GabAmg(|$g12%Gn5*i{jF z8?80_P^91*LaVy4k8Yy>a)%W-h5Ds=_j1B9XSPLN-~}?YL^+M?EAP$sv{My^OST#* zU?c!_7>!y7^(j*vk?=c-m{#`1OV=2jg~rT}op-O$NWS@2T&dzDmTs&x_HuV&!KT{Y zLr&|)U@+Sr_U**&LU{pZ)y8ze^fwsktBi z?PK<}SfRpE+K%T5%;o<|4uW1!~K>HEHWctV?>_sU4PTNjG z$|CMDM-_ed1YL)44D#P!CDiSZ^W1*lO6XT@fZ3eO-QoO5Lh-t#H~%P4n~aL0pKnIJ-Bf9xdrj;x{b-KznD274Ldn6a+IkiMlkxku@Q88M>WXAL2KXIk4v zi(33eM2EMl!CE{N<$1Q^(tL2oGsJ>iW_Wb|8XgVr9=|2-Dv%Y z-lA69Kl8xDdLG%(m4F!(=w+Zvk>rsO2VBN+YQaSIEWd7Zx*Z}tY(frPoFdfBrhVRf z1%q%1xqc3E?mvR60+ZM=(BeluJCvkQn?8F4SYo|c|3?K0H_TznGxX`rjII$Lh_|k5 zgSd=D&bps_oqsPo%-O+0^Ga7qAomsw?(!vrnNdp)5-*s zDK7Pvt=c3%U5eZh%t0r{nuYEKS=c%q^4bB!%Gx6GSonh`^OV#Q@B)q3sXGB#C!PPu zfeu|a1v!-@*tn$L1vM$uqMM1+={1J1P6s~RPuB$*f3S#zoeicW1)Gx1-jtQuw4T}Y ziA=knh)T%62^CFnmw6i}(@)B`hV$$eG{}a3;C{+9fFl3eE=Ao!;lE5XmvZ}0kvD_J z9(ny1HB`!qw2hWpD~OpK)=rV~%k~{ZZH)D{O12(3N2#x<=W4ewCNpM)MH=~bPcx)T z{RPBnlJXKKnID3+ASz4Ou+4mjQvchkv43~yx7tw0Exj&iguZq4z_6k$9>+cdjVb#x z^-~xY{h5*^0T3%DxDwij7F+Xxi&yx?OJhlVV(2hQ)2m~?@OS-h<)Ho2fT35807lW3 z47e*OakRAq`hER0xwy&cnhnybP6k9dp@CyLibrJBXNtRWR>9A$fS3{{i4@2PnSr=I z*y5*5VuQ~BlpJ*2&(U<|g~nP7A}9Jlufbnt0p)-`9@>blsheXX#%=C`+6<@>&ZVx2 zHMJ#KcDIQ&L!0=bDRHnHA_o(GetxZHd$5g-jV8xabYv8i93|>!&w@?szfp>O9VIGs za%yU>bP98^Vo_u@tK|}6Vq&5K>|eE`)cL=%E(qZCFpcPQJulh%17og3m`&bLL>>Yw3r+*i7q#x z%%{9&PJ8(ssoNa>z}kSxYd6bwTvGtQf(uiuqc|#$LovXSB&gwt`%-uAS-j4uOits< z&GO^JyZX!-*3-?M_i>0vW&z9crHQ3dtn}G);hX;lccez;Gg@RFghz(xxFD-8MJx3z zlif0^nP4q$ojLy*!7O6Yg^8f`PY}<~??K@E!fdr)poePvR*YARMLlwR7iSNpufDW( ziMx<#f@jFjJ(c}G z_{wB8`pXw6b2I9*YLD!=V&!y11&*@%@w16Y>*QW!zm)!2m#a+_zA6i zr=_K3G#o;dPUl2QpjM9c_`B`qx;$<5tD0WfT3Ni+?=a(BfHtC!GI=d9CSONA922c> z-&S*-)ZYQeC)IeGa%;Ke2aIiz-09e%MbI3`Cv%c{B(e9Mcwb(-QvEbKf`TPTB1tTX zi~Mza#Mgvh`0ABDe!+(?)8ZWDZbmVrkV*Kq;ia|F0xTc_$9PmlSA25KiUO=5jE5h{ z@4XQSD;ubAzF_cn*MS&;)CQ_WUO84COeaPR2G-qVCpj_B z(Hi5IZKCc*JW!?ijY1umd8R_&m`u#LPvL8Y)Dd^W&-n(H@GJ<`#fHS*0FyO_BhY=d zV=kzP3GzjghsCpPM7WkR(deE8-G_@iYZL8^mCq1-DQwW}41_;T=Mil6v^>-A#!**V zo}(J4E8)*`ugqBojN=b=Gtq2PiXYzO`)JmQP2#@iHtzUMei(g$55= zI^qVW{vLkW;2n$0c1)IL89sgH-EF})wmY$aTSpGZ7tmb}27o($w{}@e$a+>?S93P) z5L{{ACI4YpIpia(re-c!~%YdmwGW{{CXV_goSX_GlUCn$wH!50OBUmPlJx8fT0h8$$=s(56 zK1~sGbLvDo&A^canmn7$j^N11M8SWe3raUs+u~VVC%>5DT$4( zSVRwd`~~l6#M;)R?(%M#tI0K2NXe3j%vx1`As3?|`P_a=B`05Bl#bFQ|wtC8rG zY^_n*DKrKebBu+^@(_NChVH8O5&i2iUfWMYAal-;QdP+#jq=Yn9CU=s;L*pF>~fKr z42$5|P`3c)WgLV{a>xt6YAaR{-XJz48Hy`Yg^TTx)EYJBHta%YhA3Sz=iW$1cYQS@ zF20ZJ{(ko6T-cF$dWKL54^3UQIgm83Pxv%%%aDwqIZ7hRa_qj%cKCH3WWb zBb|Xf7Dy-zk>3rUS!*z(^`Bv_^x@@0bW4w;*nP(0_{hVL3)>U#w4C$L_%f>@Jv6AAp&c7)Ct3u>TS0|torl%eQ0nLuy9(f&B9p~V-9)&OHl z7|w?V;HngYS2MBsCWH`;MZoD>k_P#v^TS;orzDqcyX%N1B9~C3DX_4LOHT?)7Gh&Z z$SN2a!#dzZyXC`2I%?9TTaNu~ts@x=e~PQJCOxB35cYhjAS5Rjb@^TG`RX(*7Eqrc zw%TMi^87dPBRnlYqWe5(Cc|n?dlFf(Y9mO+V^5=}U5L^0(FDmh0=_lZ)7<3sOiH}_ zC*TP-#TSI5e3=tPMkAfPjyHZe-6_*FWO2b{k>xcc8G48Vk zdRrBQU|PiYy9XH;%7oxi|;2@dBZ#W5UJ>Ru*&}?nk0dhT%XZ zrFIdPr1E(XyFYgik6e9n7lyqdJbby1e~?`4{faF3??!f0zF**}4OL)qhZd0@l)F)S zhpIw$Y=jb1%GuST%PNY~kEbDw2OgB@&WOpKf<2UZm&1PT_HmkNCvUa@^Ua!(0ip_gT)t$T!*r#tZcBB|Ge?gV za+M#K#(O=`(Cm>qJXP=NfTVc)&Um21>&h4+8FVCIu@-?iXJ$`915E82v_0<8m_)r| zJbcUC03N~uWhph~2N6bjS7=ODLD-FJ^_x;UdWe~%FlixFoK=AlR1t^%sC4*z%sT5^ zR7wsoU0G9CkJ@9RG_?DHD9nK;k}d(STL3zp#@2RkP%MJCc}=xwZzai8)1%r_YkbT< z8~o0AwtU(4Z#Rw!D_y@Jz9drJ81-7??Lh+X_=UedHP@8zTG?+@aP588<&G20Sax2% zRI-^E-Ss98$rC3E*e@p22v##n(w15on|u=cEEU4>hQ1t!5%tdn1*4^9JMpU$7s~{K zzE_8M5J)-=ho8SyBy*QpETY{jYc4XZ{2xh}rg+vkK^-7^JiCvLU>9VtiVzmuQKdlt zTC12ju{5;EsZ)%YXd`%tsz6)ES|qVvbd3I=Nn-(~Llt=XeHdB^H;^&DkBB%4u)DEn z+b7Cc3+MnEj+HS=VVQ*0XzkT`rgYoF>zq# z@%CHVFPd|sXJ9S_eT#kpiz6~zd7I8sdPbL||9FbNRsYAF&+6UBs_2wd(&y-Je+fOP zyrdl+qozonwu~QISD3t?-vL|&n@Kr}px5AAf3_OSzekG7^(=kf(>x?G00h`|UE{Ig z>c(`+?w&h~o9!9dqjO5j*tk^a{LKq+^$kiH+78}M45v(ba!o7>XcIU~8v+WTP7)o3 zUrX_?X!U`-YTu4kSf#r1^&V(;4S$xnb{=jly~5RIEVekFT5cz#U>@>yqPt4?v?)5x4lK`rw7@r*1@!WZ?zSnnh}y^{eUiQg=SgDG@XD}n(hy_qUtClqN<6BGvdl`oTe9V1QN1=T)Ecn|mV?#(3 z5)d^^oUVa2%m(9u=+natXBNSaA4>M%e#9s_)8_J_3~@mf0L=Po`}S{_H?Oq@gONGf ztxhx8Q;t2jb=W)-8YEvM4tDmh+jAKs(1IAQ+3s{d8s}`rNfr~>Ir#rj4Cc1~BL$WJNRAI<@qHO_dnPCo-l?F6@;^w-X41iSv_{SS0%QIP(ol?A9KcE&|AQ z^ewsC2nMxL9MSMue3he^nrUe`T1}DX4%6 z%We+s7R;usmc;jPBfC5#Nbu|B({I8@_J=LdkR1D*E*M?VP7%`5Cq9jcrgRA!ApSyU z&iE8t`IjVo?V^zGy3^j26>Ir0xa;lt{}_!6huQZnm|?JVPCMW)VrJ4m+lHTuZVXlW z&(BsAOm0VX4TLxJ_0G*e1{G_Ob!w-6viL8@;j0jShzc)RkBtFL9FsaMTFp!VkBxphAL$%d1_<~M0{AyO_uR{mrA}!)S2>d&T6LDoMlY> zq|$g0M1SGV(K^Ldl(b(Wg1Z}%(O0sI+O(z|Q-jZ5ArTz|qz4evYu|A5k$v!Z*x~t_ z&z5bLbshT;lH1VMqM1V+J33lw{#~?3{C6RCJVlL<0&eg+MUz5UrgJS+wx+RPgf*F> ze*~Re6zfhvDQin*r{}@(oY8I#FyKF+Q>xBj&+|xTha}N(%~Sd}%xgV6S}diqY_m4j zQ6#fOd!+=s&2Xew32Af#(-PE&w(@2HRLVn@#ISUGgKEqmL*$09J>;$)9ul>DG@r4T z&+ku6W3Kc#WIuWFNBOCOjy=;1W@9@MkyB{_D3{d#-;6|}3Lk?|m#Ast=WTf{wMV!G z>GFu<^)iF|bgU-l-EGZxKM|}>jI_aq?#@oHNVrY*?mtxCMC4M?q#N98Gz+m>%~j6- zY<_>if0bZOaMf@M^_pusWTB*SSP|?;qZ5@or)JtU&G#NW6b?2Gx-S#nlEr-8%Su7j zgUR|KIV!AbOtH|r09!%bnzt-QPkCqvCxz0RUcSW8xi`f17Al<@9OgXo+&?gfxu0P< z9XOfCmKBs1!9)<|{WiI*#IBA_M-L`SLKs^WreYI7i!eIbyMe5{X7zN}BFJn2sv#h) z7w1=CRB~hT0>68DO4IxlGzZN_rYfH;qM=2r_ba?S8M4^4>C_#hNJiK`7d%kZOgvJ? zH47eM2e1{5j{#K?f@Vl17o8K|wrT&zPnLvKl!IM0qB@L!cjx%1QG=0O2fs1OzHhO* znlV4WI;r?S;t-tQTSpdYSEa%L85j%CjkFBKB+-8Q#H6*MTA z&SfSyIe<*HwEM#>k|tSMtl2@jd9@H`I2l8xRbIYjmw1_9F*ZB{aGFf`*_^FkeO1qA9rZMe?N%#dQ} zS!)a0w{vR9=p6TavyKqW>7RNwoiEh7ZbKr}0nuPb-Nda#U~i4>i|Mo0=h>hdYdny$x2HrbSy9OC>_JI~|al>P(~6ORf5**v}G?FZDA z2Yc7tM~ze3Zly`Xqp(Ps0bClV{zdR?i;nrlEQOgCQ!e`rJW=H`{K?#K5zl`?YcSw> zmC<~gSjmYspd`VwvMiY|{RL@a`~}(fc!tgIt6Yb<7kvJ*$n)26{B6NW1xIs;k^Yi- z{q5B*0?~7gx8{UNIXdcMl&Eh9f8JA?pw|%Oy7H2x^}VR+VB)3WtAm{mL`@Z!;R?=a z0X)lM?|#)O2nT}<%fCwMGTTvwFBsX88_NCRG?W|y3u1m5dz;mgh%UJi|ry5szMQsBWaX=Dpv88?mh#M8WO040uKY+@(*hI0{J^cru2#JR6 zWse5SQhGd0-!a+OKw}`Bi7B;d+>q%c5TocW zlSt|r0?zi>zFQRU}iUBMXm@TZJ<&dw2;d zvu407Pc>3?AhYB8BEhlGFq%P~!YB?Us9LTpX#pI}}MGJEV96M~7`ra-Q+V!F#U zw3O6P>S2i$SY@tyQB8g?O(X;tJ%OMANUey3wrjH`9T zF){~MBB%zvX~SpL9D&d%8wI@atQ01vYE0s0(Tt z$^@Q{zjHeK@(&+5g9MHtKClgDI~JWR^Ai4><2-{UZu~9kD-Bnj^F@^$-%>zy(&w$j zG6{mV0XGQSrd5`>MjR zv@lJ)m_yb4xOw;e*T1pEC=Nv(bv=?E;)o$O3FI z6mQD1@3B~6T6RRt|H)m`&TP_nt@HJpgoI==_oC>z*X&feb^^zO7p!bt@Dxj#-Sd?W z53E-}9W0oo!m}hSKIwA`lrnnK+_WE z2dq9&7_yOkixb4$84v7N#FpRmJRIBszp1!tm)0p7kJC;tZk}@G`2agn^@+k!xhBZG zxoJ7VD)jElpQE40{9@w5I|un;!%1IoCvb?ws~1-#&lcRlMX-7>A)*)WqDsqRD+XAg z19(kV`cBAn2-TwRJV&~`J{JPu<|MCKny03Iy12MN{zG_hk^jFc&(0xptt>SjFP;wS z4M1pkH=A??5VT#PR7ulL!{|y*)O+3gSfuH=A3Xpp7Js z=EcAX;CTHMS?u(CI(U46%%*Y>qlZ9HE9or2su z07P}!2gjl=1uuMp?v_8;L(i~XahH$92moxb+B?b>JOO8 zseK%i*S%%@9yj{xqUvEo--5ru@^&JA)~~lffUVa$URCh-HgojIHx?;dxnxElsYF_& zwW=^;PV}YVpYR9<3f-a+#=TiQ=VN=eHSGSJ$nm<#)%}B>xJiCP`OtQY0XA zw+;t#(jHpv<$tzkspqlBG;7fCMBf75DJlgj^c84fW+i)!Hv(oF)R&(=kB?K-8qYB` zVAI3l+#@l}qm(&-8*-9hq+#uE3>}SX2t+A}=-Hz1Q21o1+-Z{2j`EcgBT;UkLyZd| z>~Efb>Sa;)8F~bmkDD9nlI{hfGuAfvH&?4cvHQY^h8@8u)_5p!oNYQGZtD|?ON5Jh z43TN6a{yZu(TNEP=<-}q?lNp`Ip0^i9ZO&~HU4Pt*vwY$#IGJ{i@@Rb?zusNtGUe9 zZ7@BW@nBA6ukGEP#j(5Ja?^)`v=g4S>&(f>yc%J&y9CIhbo$85>1c6#K!T$UWXrx| zpy((|BvpIcTfH$E!Ov(7ZpS5XT=lYhdwf5%P!m1x@olcCF&_xj$}%rTzT8=eJXYhc z!8U%_l?yIg*qYvTDgNVOXRbkEsnZA}ml;69bVf{Ht`Rt7=`W$tx2_e8)~m5|7eULp zi05-4)FGC4kSXq7jZl>M&`Urfwq<=3wzNM@OmzkSvw@r1Z68uEu&`mqtKL5aa8V%T z#YqpmnB+8&JFL4s(~lDz5&Xkk5HoXa!}oo5)nJl-y<=GFi{c)Hy2)St%g{s%p~COt zcG6&`l;w-nHeYQ18wIe+9*%t?Ho*vy$PSaqSJTAQ^jDWv+;Ts-Ub#^ z2`YvHUGF`Be94>h5O_cwW-S13mg|@Gqk`JiGbZk)J17*?@z0{y?VcW$r}J4mPVZ~{ zSQLY3WE7w5-(fY^r}|AOrGe};-;zE}gEj}E2AXf3qx%LWq#(ueFZpoOm(haYF&>6h zt{Vu1Qe5C6I;?`pWIish-}~p=i+Y#6&+7t?8FcXKB0}`rnXx z?H(n}Sf4#uI<(x;cD*uvLuI$GJ}z-+aa8b56VFGzN_w|gp{`axzN>^+1|PTM80=4>{yWuJ9LeDSUbw-c-w zppksdY%P}I$i^Kq)*;DNT5i*L!y|Mr1Oonn{yPyp1>Me%qRI0Fq4r>qRbv~TU77Vi z=dk^57^vEqHx7r@mcw3(WF_BlF*P)V2hW1pdtC_qDQ}xf*u-Y+n`W9(8@{pja zY{-}aEZCoy%;fL&ASB-F5%A+$dWP!6ucv$|JxKQ*{87VFPB+``Q}tG69SDg&Oy^^& z2lHvs-ocSllifGo2vB(n0Mj;p9JVygr+ukzVFkL{$B{n$2Q|8caHzVs*u+Et z!NI4$oC$5fBe6+nccKc9LA&*dG zs>_i_RFU8s1NXXT2mBSM@;J|~mH1=diL7xU4zFXbZJKy0^{ala31^@WZ5LFd!1F#i zF=VDs7tW5yGQdh*bi`>A}L{%wMn9_|KiQTol$34hTX*;Zdut~=-O z7b|wjl;P}g*uLXu5W9~C2cr0t?t)=hhZ7a1*K9^c$AAQ@?n`Z>fq|_#>Ln%2h(zA6 z(=5Zm?J_qXo|LjWUZ5;dzNXx5FqY$L;NaEIrkpKN=P)qM*a&jc-OaN#zlbyI7>9G#>(|5?>kAep4A@LCmF5p2?i!JqR`hN za%2Z%ju>4L0;8;`!lR|3)&tHJKZ7Waf2Ep`1R3NpOj+$r7OThbPk`}*jWnc^pQ$!D zJT-v?XeU5KN)5I!D%H(l-*W)^enlX&afAM6?uU8esUd0JoMb;S0|oxeI^g_B8D z@W5cOv5UF>1D1?}e8LVIS z&U9!BYD~})#+N}2$?#3-n!?unoEY~*m*0iLVIVj{?x_K0U<^c#(RD(N^9ruZjO6S1 znC_4lQI(k8myO4{K|yq$2gRw*Okbt-V%{u6#?zfbTO5`auNlD)(CPvo)*({fUanYj zIzmoNp7~U0()ZTf+lQyJ;LTeo1tes!Xq7$+EoRB-U3GE&EGD+K=>1Wi)($m1b4?hR z*4@6mcyv7;MR`fs0lNDH;h*i_TkRBrP%6C?M)1&YF!5n=G+PEAuI8->*qRyPN4!U_ zB$Dh4o{)MgQ)$2lVT6w0sk^`ZGkfQo;V*$o|Y>X74Kyr z8m}j0j*C9y&gup8%&i)4%$~}LUVhrQ*N`SBmOs%LD{?|DNM2$t7sG0ijx7X}- zKPwr$LY%QveDSm_97XrR=k<%{y7IiZ)lMXsnE`ZK=1x1k7Tw|neq#Rc)%0qAh;)2Z z`TUm5NLlGq_=hDMzZP$(AN%V`2|T06>L5Gc(4>j`>9;NKvAJt-cR37(B)6 z#w4g$Gmh+hLBw*|cSXY;$0Ggp{Di>-Y>GOmQzXWjxVr zQWO6`E-VPlv6FJnkupv2YWnlRpMP|LXgEN*XhF-9k7Q}*%(3ew-W@8fvV{NiZ2q(3 z{KryzHXM}93e*}O2KgP7vN`b5c6O9&e`>W!o^P`YPn(;>Q(u7of1mZ>dNvY07cRb$ zf_=ZXU_D~O*;OGJ9E?LZ*qR>ZtpzC5E5O2vZyVFlEY@&y<^n+uAt)?V%)C{zGAl zzsZ60j?6k)2UgaTz>eyj(fpWtu1XikQZM^I2U@@;%a;@(TjEyTJna_ASRD8-Ao2zD z6@by%o2%%h4a<1XP}D4HZ}wB{U2!f3|L7Ep7~8iwpd-c%mv3tbuzp6Pd4qR5{}zqM z)^N`bP{fM2T11mQJ4cCP<^tazxEP#b7|iu>MZmo7k4}ph$(YW{tD9o@Ka9O~P@LVf zwi|*wWN>#K+=B%T?(Xgm!6mr6ySqzpceg-*;7)MY0lvxm{`OblQ6EXdf*UHjuH&32>P{W7MiKVRR=t$9f3d3s{ z12a|q=PQlqZxB&jo;hP0mP$rDXX1fj0Ksi77dQ4Z&GHY13Xy4uYz{0%$QgI#_eqCb zJ04@3!%Rq_VWLztVIRpS;`lGySJTP7x`FVV9;yZ=tkMaPBYl$!{t-1ctpd{NZV(Mg zQc=%uT#vA!@FxXKu@oj+Y3Vz=HBivhk2y6Te2!~uug9Y!=B8Mq= z&Vw5HA8ZDJA|cM|=Z5o4^!bZeKn~`v9|_vr`+8qX_Y~G8=DrITKG^JRBDhwU#0olTEVPZz|GfW>nDFc!-Q zx@!Hkl)}kTTr5r__(_7bo0V_LxOkEtP7;yup{(*PD$CrxN#CRnIBg?J$a#fvxF?MF z6o~Jhqe9eif7xk?66u9y#wIyb{f4Q*Qqo@#u~Q>9r8~wrR)Nz095We!8b~JcU%DWo zjsmBF@yn_Mx+eaSA=0<-?yG08B!Y@Xt&XEu=5u6+dH-!QgVFH{^8Q+zH@QBtGqRDO>PC7?&V7 z{6-UH-CvmH?rV64`Mx*s!s`Fe*=LA8TZ*-In@WmQ`kft38#&HKtWVL z?~Ug5Hwct;E(j|@2zjs!j?~85S+W-|u-(;ipfiM3CKtiMr7^HGLXte;XXjL@Rc;r~9X!mv<*zx=KX3(Q^? z*laLesya=X6T6#MFwQ6YAgo@4|VaR%TyR=V>J-hHI(DF)U`iYT~fA@lPVCu{m$W zVk=8$zv^PLCIA{<6t7xx@km2Cci?*<+6={7RhyY^cgU1+Ftj!oPI$M8r#LIV>;8$5 zXE`Jd)g7>-u_YBB4dV`iZMj)nlVYMl2<;JH){r(;6jmKwLjAW0NlXPp!)w9tjQS@k zfwIbQd*OrZhz}J%H46sKqB#dl)X}tH;A-z$J!3}HJ3@`ec`~jI>#w*(#QLYzgS6FB zB;R8l6htZ{FphvLE?t}59Rd6{KX_P3#9jGwSN^MBv zt>SO4S^i$OXD+>I85_H`FfV^KlRCv*`juAZLKjlH)H?*x`~sW#=txYFoaOR^90P95 zzWzJNrBTnu=`?bp-h9IVNT>^7YftJs^`ELY?E456bi6XU-*9R0V!m=#+GF#yj~z64 z!c~GN(502O zF$Bp5%icdMcH(r#ghhSHEWHHf?3sG-;%W-wFh%eV%vH=uEtCEo*y8|7BKLf)hv(?J zmd{E-@BBn9zg&1o%&XXKm8;Ynl&!IC$Q@$O&`d7sS9oh_0shAN z3ViE|7y36=jkJzL@|3AZ0>sjo!1{Pn;)F&9EP<2SceLCDD!A^pZReeV37+5m68UjX z3;UCkj1*UXPaL$kl~VB10HL5cQ%Z!NUu>L0j)XedS%VGbM)vVJyxbhq;kv%*qS4Df zM*1xt@FVD0xquMXyPpZW9*YmLH}h4(*9ua~58>Etj%ZHxRp%XbR-Jj5pt=9MqHc_Q z^#3aA*4GjJ*sdzg73z~cF@gYKMwfk47P0Y z8J6cQ75dnodWcLEj*wHaZ8)XRmlUyg6T0TU;N4Y8-VCL0{@!U}+1>KtCG&dE)L1$2 zd|~Q6g?L*f^5PuG-t`AJ$dJK4F0 z_Wb^51u@xCNsoeja5=t>)PZ%e`M^fq#vPV8abr79I{&LMQ%f0Q%lytdIF9X%b%AL= z!6d7y|L)6RGA_E{&%160;~O-f&KvgMKSo~{b0>SDIlkKWxp|SZSU>Q%Sfy^BE`+k< z((BKwXCytYSfKmfDg*K6pkJEL#3jCvBOSe73?hMZAnJdNQvl zfcXmOFTqqJDY%8+vAK#J-XFbDBLT+x{H+j%;i_}bKkXHM%k_+0y_8PKu-h7Z?dA!9f+vH=itqLB=*{_uRv3nJC0#&-r-M#oYvXb-0{v=E9H92o#Khs3B5yru^$ z=&T;_VoQ8->u+(9XO!B`ZbvcX$~I~RZGvxF@!nulwiWO9;{vZNhix^^ZX1@HG z<7IYH=u#J)>n0mo_stqdRm|VX&gh>#r8GBLB%@@M`+Vc1U@G7<%+%HoO{wFO*ku`? zgGSlAgV2^8dYuQY0=<}$WGzna{J{6n+%`O?)TLo^v0BY-G_s^1R`@bGE~En zhutfZnbgcJB?rH=k;jMJuNDF?7%+aExX7PTzH||7=4}S}SSU}V#3uRYiR2oNL^LvS ze^iT3`#@}ATiH7_R`3Cnl8cFrr+Km$Mz727>&Y->F()+Aq;$X3GlCp(dOrbWg-T%Y zB%JCCD_aQX%8U^c2g}0^3EP)&yuvx#aeWJgAvrqo(7MP?qy46Db?1*<-7C1^JYUIJ ze15_#IG7hug*{I}J>Q3Y56Feq)cg9i2b9-F1 zqsdE*)XTr|fSzA*RDg#N467e5vdia5fGmU%bK!8Z5@MoKSVoU$VpQg2?2OS5^5P~+ zSUo6;Q93;_h=jgYTc5T zRIwpX#E%*-xu5Us$yOZqUy`YaP*J?2hX#IcFFeJ4+ze>oe&eOydU!*2*h`@N{pO88 z-jf-Hkkf3h<8F%K_Ts4NI2sqjA5BMiocjBFihO0tc!`*}(ka_GZD6?R^pQpz*@HC3 zzatPkQ$mULSp4Ov#){Slrctk(F6_s%fJLq7FC!NyJ3m);w@9J~r=m8(jVnA)k}DRCE3010-G<)J08{&GRaB+Le?`%q+?E`fjWdS zPCbo4yTm~xn{AAiN#y?2OIddFD+0fmRXzx*y=Tbhl5>5Jazo16fBx{ zN(hUB>E9ays>Q$zh3%8VO~S|@jG~TLFmoZ$ZPBsLeyb=Yif&py4eJM6FH{$t?LX+ia=3p$x-tF>~#MlNz!I zq+*aLfz|MEIj&U+2|}V2Hu@Qt(D$Gvz=mb-UVHyIS{bFl*e3x&%*Dxwt8TxE-K>s= zf>pu{Zk%Xrd;;~X3Dl_%Ksu7PoAjVE79PdgYJwUA8EBl}x?X3EzhIZ;o4u6MV!7qEFjHn++j#c~+$R`KcS?UlY!#A_lZkS{Gk+aH`XlV2s z63!XSI-9LTS6cK*HA}!HD9g{lO3t9jdUy3|xwfG1)@`|NIoNI0kdwE;34EQ$d&>vJ z(ZXH7ZIT#s)z{D;vwRb3v$VdU*%9|Zm6nJo%FT3cRocBg#SIL~EY0lEXm-)BIj4&m zj2i0Z!`M*ROFuA{sm<`r2<&^67h~I;4$c>S75EasJ{x@Hc`S^<5uA09LrnGkU}$ie zIkkH#$}W^O_0nO_Mn0*RVI*O9dS`G#5lG9JMP?<@izvb9*s#Q1oUw;-LkC*l_R&jCKei717 zTIIwG#WNjDh5Y}m<7TOI4Vk_c0|j=$xr1zkfb>SF)5P8Mx92V4;B-!P-bYmIm})R# zpn2W_>G6b$Y8sT$!vnBaZqh_`a9nhvIO3e4MQ`%OxF@_190pfcV+i0o0?sWqn86{9 z)%a_gwq%Rf@e7>a<)_@{(Wq^me5HF?;qd|MFe$I!ZAy`o3mDrNlV+>mDi0_<0smPY zIN;U6&D>BIVkl%w!Y0&4G_Ykx1J?6+LX!#@y(a%dztEdy`U}5!FX{kYKgds@4N=Kq zkBX}F>TVOgh{ZQ{=~%E~_w6ksxGfydsp63&2fT!GlGc`_p*KOh5px$<7i}>9Wx2Z>S#50W zdQKl_$6bqrm4lFuBhkuPtd@()0DECrzD{L=w3T#g#f;|iJBp_#L`{A1jYw#6r>3q!mXM05X~!c^`< ztLt$`L*}Swr-WFOP**v1I~@FjH|`#TBf}@b;W>3hqGc5K?5V&3)XjjR_f?lQ@Yl{| zN@UxRcsiw2OL{QNgjzuZd$`K=z)4uV8T4#L&Cc)m%+p0=3>Z^|e)67cEuhaUG&qq@ z#Q*i(i^sA=h7lg36qS5e(_R3fw_VQ5JuUoD#`M|)Y8|LExMwR&Z4;pb7)H5|Sa^5z3qiIeG1`0+93nj?`srqu(3$=JT@aK(RW$eY)!^pnQ+v1usRx!gucp(;}xN5K*gsbfyc7q{e1sxt|o-1H0j*${UADLK7Z)Z6G& z&vX&m92Y4IrmUwtM#_OtPw$AaUvJnvIq0gNenMmfVk#qU6=)_uKy(_qor|#)p@h9E--q(O!F5JCv=)T zGphlt>UpUH)nkP~FSRr7rds=eZhA)8q%iyEnDVVp&*wUDfHKLwh{7+DZvi`0KCFGG z>!+Cy*ag>Mu*sIZ7U|2#R*$R|JI-2p?+nxOwqnDpTiGscPHW=%xwwRxvWn%Ow|Q8U zQ1-!)KV~x~_guvL_?l&sVZ!Y$jl+YJsa^Jo_({Ua2Y1EsL0UmX?^rJ_9@rLNbpOiq z8)3F$yt$9Lyz9dUF<{yid$ml81`q#SeRkhG^}Kwkjr;8AIT8X^((`|tBRPJaTf29m z081+hJxVkBeN%BW`oCl-N@Ws-xsP=Qs}YV}$j@a5VwGPNd>N&|bIh2jo)u7Z_~O_? zoLN<+G;x52%Kt{-=}Ovpfd$O6Vs*0Vw|eS;`=J-g;(8oAe8xYt8yPv!1*whrL%t}2 zH+buVEBL=$>;`O;>B%|KG(|hn+!EaMrIbzyN>9h7Q>zLC3)%9(0+^$LqG*uF z<7h}`s|ic*Qg$4IvMAm6Gk&E64S-MrdmR@aKO{JK;QM__sREq{lZkQeDj@Hfn-3w= zjj-?fj`tBq<~K%5S)l1u4fq=017*&%_5~xClZ6EnUeXejzzBTC7QYW+<>3)~WI$5W zW1`mXW+bxEpMo@%x}}pnVN)O^RyJtRIS;dQtoiIVD`M| zyY-=D**R4g#4qvf>w@XWm(oA29%ocW#$;&Nr_sDGCB}D0zqq|80B1b}uSSKQrZ9D` z4spkYLP0YgCQ_lwo};ch0+_uQ&_vyKbcRh#7klecmU|YA+{mnKE>b+OKUhndI#b#& zO+su2qNSl%xIdje)Wu)KEUxxydM=T%H6Ply4*j-XY;nBGm6b@UdHWspwY6ne`gGMx zeLPk~OQ&eIbaBiv099mQQ=-CUsxKEG;di!hrm1A{d}=2#hhwC`fY`Oa2Ue5<3NqQ+7@x+7ZX+X{s46(CT4+c0RuH$^k=`e;*OB9MbQ z6XF(C=Pm|&;C6c+t?te~$mC;9v{`}f41x!vnYZ>)w)CyoE5Wj?rB$UE@>TyvjkS~Z37hCIG?u<30oKy|1CAbCMe@Sx^thqIV$`7tD|dBuwOFnrrIO1E zgGR(MSZ%fi3pelz3JZ%df&{?B$eCXtl&!O0<#D4JM7zY&NjCt_zu_o)`m<2SobO~*Q@IlQqNBlaA)6(a^zE9*&Z%|?*pjb+1{|@FqepirL2uww1ImQ>#+4&9 zx(aAfJ~f^4cRT}u?$Zz`*b@V4f+F^r&PH+hJT$o88ZikS3e$I!imO+Sqebpt@T3E^n8h#b;x_UX0=F~avz9~!=5BeQgP;ZEYMLA_6A zhvp^yKH~A>sPODOl8yL?@-0K8iG2EhQws(a`^QHs-9OP1{hXY(Th3On6g z%k)M)V!WMK@@Op#MmlQ(V41k{*Rcl-83vcO`f^w_ILrCpKt>^P0r8#}pN)!N)01(+ z9v?yK3g6}#M5V;vd2HEp)~+V7w!S%J;D|!;rA+JM4MIPCDP3ZX=y=62L!Nyb(WFrq zmPy5}$HpI7?A^H#9O~W|G+dqGzd9@nmtgoQ(eQI{iOUT2Z98^CkZP(A@P{xcUY7S3 zv~RD%WZL(T{DmNs9|zlB)MP1jDht2W8Ohb=CfGSJm*vvW*dX)pHC$~!l-X}x0v_2Y z@L~^tzf!U%sMl*p+Zc;_Tp#3pXc|X9o~L8`rx;bg8!^(;;OE7r;Y}<<{Y@MmB>|#e zpUB^P)8Hxuew_2;rQz+xCNZT{(wAzjAD4Ga`iN#wN=i9)GaK{sN;t1th2qEy)!Nw6 z_*^N%0tyzazqmf=`*E_gZgGZulT?3GM=@6B{2s(lFG{l0eXjX(r<{~%jL&l~yk24_ z+|^)&I&dh%%?@guT_^u)uxWzEcO&DZnzZWsvs3=t(`+1(zdnQyY5c|OifcwLqHAkd zY3SOhft^)}B22bE?3DG< zJjI(4-i)_3q+I!|PzptUYlmiIB|8+v;WgXoi@ji@uL}~*k``Nd{m^>*2-s&mFxr1S zetbQYl}N71$ol-@rKcuPY%{7i=PneXY1dNwZgZd5RLPunZIww1jJj76M zaV??KI?0%X-r8n{k>WE?WPZNyEr)UT3c!j!j^3sINRhi!6NxlTX`NRTE$Hg42J0t_ z8_n-G)Bh&;b-UJZeXH~+&>xJ}K6B!^4>V!LUjUDfYc1TwiFzX|4b*Ip0YnxEx`=b% zo&f?@&ny+55wGHjSW%+PF^jLmu2%-1xB2z6-UGKw&LuqE*?ktBtt42zx4acwp>%FD~ zj=BSw&btj1efh+JD^XZe6}>?-xys^XkCRqeIz1njYKID+&AnzTl{INhsOoB$aT$hd zhtyX;UhUfp_NrbOu+wvV5K+q#dM8~ssQw&lo2x#=MBZU=mqhe9C(9+(n~8Y}kPWX7cglJ@hIE>ED{{4g(1t z9fC8Me%j`=KU;77)n>gN^XlrUr_=BwJ>vWI1k=^aMUOEUu-fVf&SZ9W;#R zv9|TlK>Y0lQhOUsdiZrf8x8*lY>T~CzE$b{lMDjZ-Qb#i!b3SDF&^tV zW~iZEJKiMm7ORQ*faP2% zX8BhX?e1KitLZ^HJ#V@Wa5cq;y58#5wL8?w+tr2)$npshFbIxyICF@J;`f;I-FyTI z^Qznj_>2gh?Pr!hjx^Q@T}v)Dem;hwlh?VPY4xrDM+@%I1D8I>g}%3o8lBF&R>}Fj z+73gHC4b62fLWiIVz6{zxerm!l)hiQ)Kh@^cu!Y@%YepYUEW}M*>eVm_61}z{6soA zgZ;K16c?5PrKq+lvcJfswF0PdKoUl}5Lcv1%irEkB}~Ny21kUF68euc*k<@ca>- zk4`-RH@AoGjfgBUYg=jfye)=OF8O;IYzrCy6ZwZfvdwx$|I|;)7jclS@c(2;&<1d2 z4W8^}VsR?avq8IASkUnC@j-F@r5U_A9xu=Wb=y_a2&7ee)l*AKO8Vh`sa0#`n@*&F z(QGJ4NICB)gDWez@$vBiFPV2sTS_$*TW@Gv?D5=B-#AWt5+-ZMw&tFRqcX2pWDr|f zq}n*)5qq>EC>S=)WK*^ypU4|vM@_`4hQ~<(=tje5PHg=T32jZ0|!};>o z+mG2YX&uqSt=}TIOELl9{nXli)M5R)K-$TjkDfgpQMf(LGOz2q8T8P5?5vrojPQHl z_uTLN^e-doyQb}pMGFL=^g&FhhOZ>Y+{F`XAmLFWe8pj9>>3xZ7GZbAW8=Z7Aw z4o?}r_{{`OGt!?J77ld5u({p50$_NiH_;C( zb+N^YWQ8AEV%`D`Txy_ej&7s=6Z%-WWT7FOUkD=l&IZVKHVQ~nZ!rct8i3^0+pj;w zqa$>|;3!$$ZN(1qik7qJ2#$)by36t0do({^`~WuVJgpZkF{(~hnNvaGHmWYgYRN{O zetMCTx)AB=^Rkt8<#_m7B;}Fgve{N@tLEdN`TYn5n?&4!x5E3fl^QNO6?)(8WW@z= z0s1on_;Y3!(Vz5W6^idh%2ujyvvR=S3_kp6SJ70pABMkjID`42BGODM7IU!|5B8y# z<223PB!)Knxcg5a>l>c}BV+^Y-On-W7gF zo=l-Y**;TlWyOMgi;v~Im=1uxR?YJih`4?wz;ns%zL{wY;NL=x{Bo$!CPjo`ZEl8q4>Ts z7&HGu0k_qc-7=$;K5uhmnseo)Or!&~*zaiC#UfmtY}$l87XGX$9T{i+#@>MSR$!bF z)#kxCYmQ7>i@qi3d}?<%rhy{R`aV$k9yF8fAOuB~Ba6<5f51=Uk7T;tm>yZzYyOQD zHwqbfuGSgRo23&wsf;s^5`;}63N#&kF8%} zkxm!&CM(sys#LzA)2T4V(k0Vx-Q@Gnc01b60l#c(@)LXC%_mvCQB=BR?7t#mIN^Zv zuDnj`{|6z(WkBq2dJ2ABkWF^>rm+|+G@8i@sVtTX2O~V5wQOGQjRC6kd-TxEqN4=% zSd41NL-}z}oaLoJ0TzqTfa8PS)3yzrMhrtb`UQgekH{7KQBukHNn)@5#L~_#AI8&+ zmqDh|HhOI+{%>y*5gtL8USA#GF8npveLp6QgMwVwyRMsZ@icKY=bMwgS21)vZRs+R zw4#!&l?=lRvI(?NLe=Jb%b8tkHvZO8X$-B85%S={<8@)M}I0W_i*yFtz911f(c zq2=?YOoa=rzsNyWQ&G>KluH|yp|{pBsewR%n5s7vYijo4^Yw0uUIEzPyQ#xri9R`6 z@2_!VMSw6QOYk*HS%^POG0hL6uIkBK6G2WM4bwU9M#u)8A8f}&8ofc*H;D!3SQNZZ zU4nfR2QS{Ii9^i8n_Xu*_f#;-U1U}kRMjAha``?fgA{aze(}*N=}Bps~0CY2u^ z7pE4O0r!XlDVrPA01;)q+_alZ%BlTZttvrJ zPo~89GLJpo=kh`OwIAbQhg^upUX_9%1JDo?;&|X(&cK=e^$5Vpt&R1AOQJ(g3;(V5gC2p6 z0^yHll8sX>KWfz^#GItW^eB&MqfSC40W)! zw*J>NE0Y-jX}j7y1f~S$sT_>j{;*yeKA6h9T6f#bclk4)U_aO3uq|99MNW(VKma*` zYIpC`JKD`y!CsDH+r&gRP>`=yN=AB1MYPc!b|mVxklPAjTM@eTd#jeRsPKf&|Od!dGA_Hp<0UbmmA%U7#9kNk2IF#uu*DBl*J z{Q8%mVbmY>+G*w2z2i0LFC_r=|a=Iytce z-&+REnh$?&vQh2+vfA7hhuhmA$_hde6hC7+D6|+n)4U8acR4pmKM5!c1o) zj&l~qV>v=R*slqzq`}B>(2?#Alb!0ZB7bcm5|1d-YjnL9bVf7m^NmZj@&6>A>R{7n za{B7UBMfjktdilo--wO-?lsC>6{S>c6H(1LBTU5>lz+{5u6r+*LNVk>C!KV`3Mbdz zLSs+s&oxbUbf5_?+t}&4oUdtuJ!tei`m3#DjV?(NR_xJZojBu@quWS-tGZ5*`yShi zAJ*Q`Zz1)CnwrpFZJq-z5q*O&sEn@XTr^odl8QN5IE8+~a42>u@%YM4#=cH+3vi9~35 zhXI^+xU>caVD_`mHncK>XI`R#>&e!F#mRl z?djRKvB1@imw`>c_h_abkP^;Q#lYesW~2Gc@NB-w4PPY|Kk;>tHuM##+_2U{;wNV- zPTEVzK`}8B23cqTuN$}LFH!haZ07jBV)E%te02GOJPyYY z%N;aNayUxsC3*+pmVTND+a89_@OG2IM=~n4KwxgUM$0t8K(lR7s>fB1vVJlb|Mo9% zVI6f>$$^DiEs38}D3L+es`Z9i`3-HlyKH|Y%1#w-x+jsFAvAvTEdYRBbJKUK5(l6z z9W5YU9puVI770y39>gSit*$@vt6lXc^oqUQcJkGwcaK=9BUg!-dS}je?GHPD^quTI z?Q}{6aFt55?bcsYn$tOg7766Z?Y~&WvL%D4>yB#q61H| z*}VCOQL1ISL+9B98O+=3j?S4JT`c-QY?f-(Q{+7ph`@lzL5d4qZVD)>lv&nR}G#=*z zYk(e@b+O@=;O#pUpGZ0DEjrVp=k9~=zE8!?C8Y^19LZ^s!UJJ(K=Hx%FD9;vlsF z8N?%R+({~+^u&DFpCHhqz9|)(bnnZbE8ygSNNmbpJzuN5po#9~O^HG(uQED4Pw<$Dg;ujaY+=no zqt25a6i6INM=kHEPE)MsgcH1)EeBV<$QYamIK%+YjX~#(U-j618#HMM#_Ah?k^ z-?2D==Fzi#Me`cMDCeJSxwGqUPMnrx`n$>U@wl=!DD;_5wW4<|t4H7An;0012lWod z=j~?*W&VA#UCi;{M&n2oqydDfG>RX=Wu$?@a6s^1G+@DzLfQ|ZRN~UUiD((CZn#>$ zZLE&Ldi3I!ft_vq^zqu!KA}K5IkmC_yAc;Pi2DJ~g`ydCIG<0HVKtwZE#~RHQhSHy z^sdq8FlDDgLx)QwEKLG>7`sTW8{9uHoUm_g_FNHb5~L zJ|bdPsgvw~d~X97zn5D--j)gmdEYsoZ*;?B$r7gO62Z`Ko_(!{i;%*s`o!G#qoI<6 zj(0U&@@a@f{?7*V#vy#m-<($1ub%-H7ItuO5boUE(9qDI)AkX6j!`$L*kmk02@bp> z6tn8EO->P^3Bhi?{nGUam~;{X_9z(+U=rHS*>-lWLnP^LWBGwutXU4FLU|D_-c8Tq znr-90m`{4VWl;fp20mv`GEMVA5DULDn#>Jc^0P2C{^Gbz_d$4qTXN{rQSolJ@WyFs z^$AuwcY!Jewdk#(ozLSpQWE*LCqLEoGsV@PM3`9&vkR3JbZyHB)w&J>|2{-nBs_LF zu&XZ5a4d1G@9T5E>)G$R`uccb=fsSRi1iLPW4dNM|x)=M?Gf7}`K<>SL@Wu%iPmd)?5%C@(^&%373NT5wc(};j^Nu46pjt63b za`_X^eUjvQL;B6rK}u@(r?!W5&TRPFsxV#|l&cb}kungm5Wi z1cm!`SfQRXwTWK7VLbQ6S>TDl+m6$rf9slQk8kS>2^?Ltcv!A+1PN-wSMiX9SmH2k zxAWa!x`J;H5d8y%=$PoyaK3F0Q?RiE#-zK0tjFXj@}i}M4T_yl(hPlk-y*-aCI}v) z!m1_+o}c9g4)8LHtQp&XU<6#DqU@|y*gNjprR=5S%N`TzXs{x@Pru^68SWgG4t7Ly zvV9~yRNtN5F%46Z%(4GaeGUIHrn-L!@&!HlayTXcHRCpnzV-P6BTEn);*}OB5`z&M z741o6wrc%ggI;qhBNx1(V7>JSJxN>E@8dbQ~jzNnbBwNIkO0 z-k{L%WT`gRZoU2L0e}0SMSMkPv)QfdE>u#eSSZfzab09^@{djOhIqu_f%SHn=E+2~ z?6a)+(e4^5NfjKn8$*bfB&+}{apwCBDCM;UzlU)Zm_~udUwl;#6cM_^xN&o&4d>aE z4+^a;tjobpNqw*toP0X7FQO>DIq57-%T7a`NNw}LaN@z5N((!$#y5SbAN7*c>oZrz zh93enkH2p}CKH|E8O<$RC0u4^Z>8f%^jv&mvb#}@+zX|4I9yYF)aUo_?dXRNNvq|DoFw84;`uYV#5ODEK!lMgGo+*IS=uFNhTVzp-E(Zv#bj~n3 z$ww2qWplNO_3g0}XJBGg(dz_{#`fv03HU%g)Dno)`QfN&{TG9VCWI^Q%kNiB4L&oh zf=9%n{wi9STK*tByNeyo_q$8ZAF16_OaI}6oF4|S+n=s9e#MC%5+4EMVzBDsn`D~) zmVoqPz}aO1cv53@{1dF=kqq+QE5f$zcbmT+*`55I*qr)^)Gau)7CDonbR$KuLj4$X z<@v%c2M3Rc6`%a7z$ZdkCxT@A_dGt{`=YESDZNiS#*~ zFZ!XpYdLb6h~IPTdVhlZ+i?;J+L45e%wV12z-*V-!)d7F-!{ino7+W>1Ii+Nt;`xY z3Axm!{f7)1BrpW*jzCptBQ7kW-sGE6JM|Zv=M1h38Z;>?ZB(oPMUYHOMaunI7{UaZ z!ub$DAUk7y5qA3YDN*SOv?770+Ydsdhs<1~r{av)pNS=TLm+cNVU1a7HvJP0qS;b0 zr^!Ih3eSPm?y8^bHZ$eTH+<#)e@(~=@%;z#eC!z`u0pqN9<>#r;Uc{CqUg1bA28X>- z^z9oBaQqs>UhZ&Xs!*%Wur~qz4O-k+S6AT4pT`hl%7Vwk#JcVYO%`3H;%Katmigmpm90WS5I=FOE!%~wCf+(( z@b$FLs*#9pvB}DYQV{5e!P|2NJ=@TX91|S6B z*uc}`a&OCmKrn}_8k>}rM`jXOoV+7uwiWX^_q=}(`Ebr&LpqJ$lvuEG(;Kc+!mBIt z_IzC%r+Tqeo_GwlzepF{pza6fs}#h4vlQlK1A_bg4{Wdl%&e^aHM$)NU7p_z|5~t< zY`8}JLI3(rnh;LJ(;u4U_kl4?CpO#L1)vOIVf3rV6z@6ys3Ft!?Y_3N6t)|0J@=&2Vqozhpar{FjXy35UJnizv(@|lnbGL6L3!gcHM>~DmT@*d%6NSfj~$$a}xIbf%<_+nV`O)iD)-yRkH!exZwp~vjoGOBBgDCi{d2m#c>#1LR#yNk7>9f3?%C z*LQ_tlYeIF9)FT9cN-w3#8$-;uG(+QCLf3d{1heMTW~tf{uz0JSj=L-hDNaA`vD&M zwzxp(e{u+mP|a;d5DQh;hp$!u4hNTNS=#)czPiF<4Mf5-6vW03?1YO1@7k|WBiCCm z5%T-1Mryo0f~@-u1iXQM-kiNLwp^PXyUN4+-ap@!Fg8e_O(wi#)4;uEqMk|K^iJAc z`Cpx-G9ezD(SyBq)le;H$q#Rq+jKT-jzJFq4kO55h+n{5L_{_=(t!GUum(&|rW0&l zg|VYEFkJv;Hmfi zVp7mNj1I3Ck$k{8DHRzyj2h8p*&-(Lb4;*0?bt9yYA`Hs_i*&f)8_p+GQXnV?GlY` z>B$5L+IYsT)s>5~BXj`BF?5*xQkxbMIx2h&u zICm)6H&IwpD3Gy3#f}-gCb0b4FkE==cF~6S4PRYp%JTNkX@(t_CR@ z18K$V41U37sHfA4osfLLn>LOxRWy(}L2XX=G&7x8!}YQ2Y$oM3fk0O@G5ixy>49yn zLe&2s(4QVpLS#95`C>ANDixQeLmW?!fM^SC$0fDp|8V|(foSwsXasn2Mfq*Fn?W_d z{?-(@hu@f1dLb~FYg<4Fh1wD|$wsNpo$5a-aW7vo1)ucNl45o%N2zawNUys+{&@{q z&JW;$M63<0zDa3se{_7&>k0`CRm0x!9ISffYR1_jqR3|!++9){-3_~*m}z(0fWjDc z6djuE#B%$&HUx<@ZJ7d}&{-4C-k0u|`Uxf=aAxGwt`ums6)@Q4==P25fBy#0Io( z#K3jU5yu6@C*rM)jNvI1#Y-}mljfod^sNqbUVa5fTB+Xp_;#A$%FL5*KoqOzj~xpW zIA2CZ8?p+;C7m#Pn#C1=@}vlU)qbmBd|&yc`hDPRK8=pc1LHI(&;}jh-sy#|UoL_H z-}VEN;-0>Q2JCQ>Us)9GRC1YtK$|!8)#?Zw|0X})idyHNA205Y^hfDaY*h+-54QoC zbQt&ctIdo=`3F@i<<5tP=D*D>NJ;p?01Y%!6XX1L)V%KbCQiASI{vo^@FQuP{_|Gc z0)h;LkP$bVCMCA(99~%0R!i-z^?rU=0(*+f$v2bpXRKbGyD0!RN~sh2Eh z@_5+9H{;%0-RR*iJ$=C$`8PWBm;Hw2goN3_>;->E9~}Ne$%Xecd=i!@g|r^XY4GyZ zug-kN`v@6I%EyiimE?5tyXUgY>;S!h`~5JVx5m>TkUnP+`5pw2l8qIXu|p1?{R($+?}b332k-`Nc(a9)U3wVgWL3g>@ONPITic{7tnv9 zqRo5-oE)^T`>z+5+12{kjW94*UDLm@2w{DX zCyOZEKG^<5%*X;L>hre&l1yHg{=csFqfVQq>fcWgGykqbu)ePj)(xHA%Ys!KI;+S` zduI84cVDLc=({X19XXB8-05QG_3gauGk($CD?51p zE^^irwiZwb&ZGEF(swhNLimF9bj>6&X3Y(Z46C-IV!IH)pON?ohh#U%Seq2Q#&W;S zz#06bv84C&UfsGk647TMrw0k7rc~;>=rH_9x#pzI>id;V&6&ndOcjNcRU|Coq*!@K z$Ejuu%wCWHs;dmPPVpZn(GQoBaI4pKENa6d+HRe%!1SKz0eZrKkB${Pc(|U}G@6gw zXEE>olcBsXmw!E@CH_K)X{@HSQs7h`8{u8#Zw=r)}k#9Moej%p%WX8fh zRer>1;U?<|b&R6;>~oKEFeey+YIZC8GBx z{xUvks;&6GP`P}`fjArSlc2;uCr-tJ#flZo+51Z9O~L)an^m0hA_GqrENFgj070?`<&Z)DQ? z+-UpO(YJ{e)iqwsI~h-M?}T(bNG$M)p-8G@xzH4SMVBPbPme*)_Klm zaDtc4n`qXtFVzs9ZpH8IqkH*Ft-bKAU;C8BojUgqNf>MhtQC_5W2YZSf}ur;v1kGo z&xDP-hm*^|oM-9+^kwfSCL!YfsbEJ1)tSOtB;ri&E0^{MxBQL2z>C1)qB{@nYGV@L zVf|w@nC((-GEQcOb68V`6u$G zrX^PVD0{#YWSh~xFV@~}n544Bn!?8~a+Ldoh=Zzi!$I}6OiV?_nSr#Jju`-7Om!qM zUWyLnB>In$-nhJ;@-yBOO~&)JsPo+&S*91f*d{>V$aYi(um89Na4OLHlm5_#kB=GR zL}4sC%B4trEA0B_+EF*rVgX_Mn-e2VfELVltg@WllL69y5xrW|>5TmM@65qJHlnFD zE69vjPbMz;8Jo{@>jo~Y?VRtp{JpOzM+C#Xmhn>}^8?0OUBgi7loumN@B7S_-|P?n z)S)DNsrJ=K+MDl?#4vi_cX9Cv2*MU>r+=f8(a^x;@p?$8sipq+eKIH!qmZ3?A4b5+ z-+y6>R)@og(A&j1SpB7x>N@VDI6h>U0QOWJR=k3o>Oo7KEBW72%u|!%ZP7qVNQv`@ z=Kz>zsL!m1EVI`EOl)o&+7Q)a1je_Wg#_#Faj>f3V28FLDN_$NI${<@Y?#mT{@5CD zZR}@vWSypiM9D^2fY;-N|2;`zplg#hcHc2B<@6T_;Rp+=9%9*36_eK|^ViE}7{Kr$ zP#g#p78KBB9MQ!4ec*aGRK{(gx65hY!*)@=WCk)+4)i72jfm>!sZvr z4HAN6{{i(21pnxtoZdCR3m|>2BfP#`tDGIz>MyRDh1tOShP-rn+Mebp!o@W2uOqBB z-;Y5zfjor`j3KSa2wiEewE78F+89sF|1Y+HpKd-*589Xp(KJOX#ddZGP=Ft78B$xW zD@98dI}8W5)O}Q91gcR`@BRZJ<7EjxQ*j_N>;-|8{G&zNrzB3k8_u(ThMo&|r8o&&q)6=ZVqG!@^>7~2auxc~SGFA!vLIdID6 z0@*328%60RaJ8+MEwywta3oFb(=$>5<25MzW8-PYXxft2fG{CYGk!YjM1se*Yc#u=vVAJHdC+YTy+U`(j{t64(ag3!Z!xodNOh@GbE`LyG!d79c8;2#ZnA zXb2G*n7_tsIts5*szjYymjoRDkdcrCrOC_7Yu9PYyppB7kW6#J4$OTGe`7w5>=zjq-31%$K_w zYFR}U8B}rF=qz-cYLAEA2=e2#5r!SLCZ*z5V`>&r>va{SB7&Z7x|>|}2{5UniBvfd ztvMMVqu&&1rgRCmOnk0GwR(v#YPe69Q_+{-Cg;c_>Ju=mbg|j0uk^a$_q_$aPC?;W z2Wm$)xZjogGjS|hJ`)oWpXcW80-k!PkfVPmM*cyL8W~5ALMccE?VFeCeufEc%K5qD z`8L4G1sYZHFLB%qcBo2i^y>TUi0*gk?<6AQ1ff|z3LW;Eh^x!&hQ0v;{H5D*=eIMm zk!bnd;83gmJ8M?U9 zt7GxR2Bi_%HN05Z->R!c1oVF~+(@LIL+eyqU6jyY!b|5(HiZVD$rJ&%>WbyS6w*t| z$<{2ed_+53&alR+NUs0_67J)7o7Hc~8eQZBh2yS$2f*i0z3-TGDnUk9JkvEBjytR@ zgY2swlmMHQp1A^tEekZeOPDzEO_5<8P3n{IHZIsgdy9BJ4}@#nS$|;8NfP0|xKLo; zuR*Wd8;y)k!JjBLX3Rs>sAR&SOJ%EGSBg>EF5Kaq0$pWr_zn3`{^!6LuK-v960aF2 z+VUM!X!Neg8^BiA@<^eSB?^?~aYS`uoW z+M#zUYk@0oBZ~io%kn83*i-r>?nHRqS>ThZW&fZMf)1vi(e7aIW-=BA8?G?l|lE)J(T790cj%3hb!|ooPfcq^^VX4VAx^08Q z!=ZG_lNk9t;Iw?uC5A)ie?>h7w&G+19L3lmiP2Rfaf?jI{Hv^NrVNfpJoP7M4jHWg z+)E=@lklOL{r0`sdOC^4C-Hk-kdLqZ8UEzwu8@ol4>>9dxe9ZW6mi-(vH1|J)Ox56 zss%|nY?c}8mmO|x=c}FhJaz&L9#62(hWjgBJ=-9{-lEU?tbd)yw zJ6)ow)wM!2@D=`p4$Ds9SB|-S=ZRa7#{=Ndc80$vf0 zA+#$6Lxh^hbRO*b-QQRMy6xLQ0C|<_-+3N7eBt6bFVD9_j^+vS9Z#PF?&?m3@D_!u z&Q;qMTvpD@p*8h3CKH($UkSduJJ~2PygrhPM^He#zP->7amQ&mL79P-#04_^$Kh{NI@sYl8YDQrl79+8P}~^ zzEglSBRq6Cq6+6~d&Sm)Coj89XEN)-T%_s>3bK$ziWDjJB1X2+-FmCDSj`j1;&H|U z|I~QBGWKkzYxGkfLByt`+cNq=>2eob zl2QD#Is`LB-1hu`T`E0Z&8Y|wvB-R`NvSu)!AHM&*du@u)Zlj|zf=oZlp=2?=&7}L zSjIJYVsDgymBw9+UDRn!K!O>GA!#~Z2s(kzI&LMV=K~2DX($JDudXJ^B*~x1KE3dTa=BXIgZ)-XcblN*P@E)HTTqd^47TO!G@x|udXY6UhF$?&22O2vU&pOnHP3FtE974Pk ze^kO=?pQAu6i`RQ!15JrHoHt8T8FR>MDSkXIeq0Hd>A(qF=&`1!`yaW82frM6#}ww zz$9L)&6(_;+C?@bzPB>0uPk<`Sw# z=pO$cM2pg}BFBqTz5su!XSPSSXH(B>%b3wmoMUfl>`=TNHR9Q5XJ3Fdb z#`Ad7G6UC1uBEBQJl_Q=kAUcTHXKi1(Npy)g;{lEK6STp^!tCKXyq1y*jW)`%!n;p z3$+Ub_TjN%X%&lW^r9~P2wR&hkX-?9P)WH}&HJzEc=_Rwkv#>8sQXc&zSkHp^DOKq zPYY%nh9J_clkHbAV%&1}^s+$n5rnL)IO$w-Gn-sKU)Eo1YIN8m+r6>^|H){tn!38V zr>NAQQLr}hT%pVEQZH)MhUMPe*v90gJHO7%wXIW3teJ&?C&2i=SO4YGD|6dpFN7g7ki98 z<3(5CA%22V)*3;AJ7L&JY791e?O#cQL)P~w5rF>{6@KO}AzrE5@JbdzgWoOu7MCCX zPlc<{fSqpgg1}G@?@l*|6=s?YRa?xVG=gtwWKTaFg__x(JbjJ1vHJ|=tq$g0irb)r zc>LWKZ$g6}+2dB1aaH8EUr@7k_>uBx*(NjPI$GS-D6RgS2p)Ca(?`oiLeZz1w$4rq zpq>&m&Hfd`7)YG6$NrXxgaYv6JmK`2%xb@vzMb3-*e>#yKm*`ghdL{^8v;g9yFIT$ zM7k=*!yl>#N?zQROVB=}Oyj5`t%G=?ko-$+pdsvA$ z$IpfLCKlE35_A?7RmP5m6}7R`0e*Dd_8FPiwGkh?Y7O_;afHQ4$?3aSw1qZZ+i`SE zRd@c^ob>G3U(oSfPN(pUh8;0jbvyk-LwEwcAU6*mKP;)RwmLq4v^i{r6eI|;Mj8u@ z95Bae&iZ0$o4vS?O37g_6OcCt4mO0pMy$KvN1^3&cd?wm?6KmF7r&@;_u_0T8mp0> zqgT=V`C&MMdCdOME=wE1#2)oZC+?z!%nK1bj8y&Co{}dn`#sAXQKzLYV-Bq9cj6(3 zb5hiF5(-%+m=65U)3$qhGRxvt`Kv4O!X4b2w^p+RMaJ8~_w$5CLY2koGS7QraJP54 z@dFz}=UUN;3hWaVokwk*8}PsLE(^lH>?<>m<|nK*0_7H90X^C4zf;|y+qDY`JBw8U~Vl%S&$EK`&>3xClO2IMG8J+QerlY zzXdf57ks%(9Y0{wgA)XQvt4fVC&w)1;{HMc33~l&Zfya1Uu_m{#KQpG>RxKFlkL0e zV}$?j5lyL~+VcAS$((hyD6sTW-`n3020HtkD2zVe9_t$$_hnLlLKx0KGMwa(HBKqN z+z*OAT-oHDXU(cMh&5%EH9WYGf4yD9ygf7K*D_{|_J5vI+vT^x8!zfu&07+BE9n1t zKg+ra=teq8ZyDMVL?R=ZDkl?NgwiZrL0(&(@TaM(w1&3#BXeI^TrkNm+k%AbwGn;L z_aofyT=RRt{`1e#$yFMd#$8BNpm%UlzJ5Mvb0uslVjbu z_l4GN!DUfIOS)j_^^JL0rmNV$tS*yyd7^W~@-3A5%ErBfNp z+1?)M!qAOvHCDER4HkuHQK@IsDASteXF4t`ql%uWy`O1$)k&{T@!D8>YcqE%{cae1 zN&ace3q9sVN9Y$nJo2w=!`!b11ot|=!1g&U#iKju?j7zQo0tJeV<(Qtcql>3p-Q10 zxnqCR{G9$3Q`zp(!Ttj%-hS+XUSzA_1;`TyO^qp%(6f<@J)`$*`yzI*5fVyj(S&s`w2oO><0digd66lG-g zdg3-0*8&EvvetN7A^q_dp#u~hhCUSV?DTK&o~0p1DtwZaex6-A>wWuRe-YY5Fvwy7 zZu82dq-V69S;#vt1}gsK-JTTktbLs)c)HA?R8)wVN$8Dqgk3rtO%cAlypT{N;b^`K z4lMPQIR83;_-4h%Ypy3 zz3@Nx(;Y&DIi*zK}?LDh+a#UJkQ?891+35Wmj>%dJY22LU*cRQOSw^ZoD6(Fv zz4v}N2FvmGq5~~ASAXx|69fiE`l5}xSDNOQ82P5bcR=ie$;~VtFE*6q2WqlvgUvaL zg=VAhtu$!Dx|RMAeuz)=!HSX$76{v8lj%q0IkGmQa`+%9d4@PKcc&R-c`~sj4-JYf z2q=qbNRrMnl?W!N)?*I5uKQUluo+D-qu7!0c1HEj(qCw|oZ;iN8tFi!C^N~G{rA`M zUs3TcAsFZO$SE^H2UqsAGYgX2wXNX(E=|wvp0!aD1_}i^KsUv|r*MFcw}TCyu+7og zG0i-(qYv%MS$^K(LZta@A=TaoXJK{kOC{+>1U&#}HUZ6e*OBd);GG!x*gsceLXHIM z7~S~J)5jCAX{}D|M;pBK8)Gt23mx1|w5dPRQi}8s?+mj2=emPSPd*{7Bir+$;rGyH0NAj=nmTG?JL{x0m?;sKe)dzM6?`}E~Wtu)}*+SCXUDq+}A zBtYD*#*tib+Tp`_HUt-)^5*lFCx8}ZxU zcm~BSAhI*{0_7o+x7o7O`1_Q^m*gCV6T;@#uzh_ zBYKXKnr$EP%7;4q(i<^dk3v7==Az}~qOx%rjw8yi6`bPZNGfgscWL^$RGK7czi zB9#yq5pS=%Y_o;PfpA7EFs-!JnIRpFe3b+GxiMo@_}Fkh9g#jG^kC3Tpub6HVad`L z`8zR%tI>*v1-EYS!!$_CgA;tWHWv<#W2+F`pHp+MMe>Ue#gI45K|?%(fRauueajpT zOn>Faln#$}B(pk6-}B8-wmwyd{j`WlKMQ+Jab<8H=G<@}9hQ)xX3V-=X=t)Ib6S%A z+O-iThuV*(dR1hMQk^@u>b5F5L_9jx+?`uqi+F;5J4+A17s)Q!kfQA~F|Ca8FQq|$ zR#$pii?~2sSNhb(K&W0J?mT^hH;cnKPNK7Ho#>4u3F1Mz(0|9h@O-_9%WUXv@)EId zq_ReAYE>NgH9YE;bF$bzXxBtxqO@^An>D&jSL1x+uu?AS%KxVr$bQt$zF|KvzVv8o z@SJmKw${)udSQ;-FE}`J6ur3-zeP*Ham$7Fk$@rQ*IBz)y-`dQp?n&ix^FYyum-_h zwSSYU@U5@8N%=f4z)u$9c%qxLby^a{oyQk718y6GsZ0v-3vgd>D_%zJyxc#}@ zvI1yLM;BmgZt3tRAwb!w9pMnt(-Uc%eY}%DdZp%bTa)LD zifVcjHIxtEgW5f~DZtx1-VbS?U-fJWpmpG%6&qrXV6xE|h`OC@z3Nj~sn!N#Wo6Y+ z0Qz~OG3d0ifcFLYeUeC z!x}r4MiTs-)(0Ta=FlmWyFh3wV@zZ+RkAPXzNLI+I)6mdSxy#x!%3L^fHqpUq`Zhj z-_1OA#R^*Rnhh!o;{hA%PgQ@TfcEhtf;b9FmNiAW*@3gLFDvwqm%CYP_Hpt;o!p=s zu7E*4#-X;_f_3p#dlJ@+1FZS&U^_lHTY zBD>gbN}#NzU==)2kvPc7dtWG(=SM!#Vej#_Vz*?~`Kx02j4~<^SYWFR?@3$#j|GV! zVpjM%D@BRnTB#F0F$D|CqpslhDAF6q*nL%y3@&7?x@A;@ z#;9p6-{kNRF|FBHS}00MGl3^p3`_b1h1czd5IvDMX+w+FefIqeX~p4<$P@d4(euVJ zv9!~q%vv9uByP&~ZzalYkK`nI?;Pn}yp7p;2YtEHd^EO9-gwiN;SE8lTPRT$^aj99 zPy4rqWOjzDDiYQ`_CvMl2YrNsf$BmfV8FY|Al-y}<^ljXuI>GYW!;+7y1E+}+ zKD0KTvMFnQ7T2&zY(#QR1ThPElgQuP4@$RtdGhP9R}OtSJq_vK66Ab&V73+Xs()x< z`aaq6G&=+b=~t}Uu9JvL$gud-NFSeN&y0g*BH1t5$a%;hlkH82llwm@q?3LOaI|N* zn2;0hV!ug5XGX9r@Ott;yjG*cnr-{L-cjGpVpA<$o+A;$h&~M@!q?@Lq2Rf}FgiZ& z&G#vSNW@3G638fwaAho3&n*h&9)^`m9q}p)z~jk{tX(=b>?IHx+g4hkuoQ9TU+>0= zgd)-+2We9e#Cd$JSaEwpOZ76iRV7(1=5G18i1FlwJN~9K z*!6{}VoWir$!Rh?OpMv{IK-l7r-cUblhGogNPgZNT3zdp zL+i+gUq`U&8EV(^Ts;8neHMsv&KpjyHGdv@A>kYFQY*G2_|n-+2!1r)8xx1Ulk10DV>u~U3~awc%YlZ;a-Kd(3ntBxpmgckCWkS2u1a{zn@u6V*k;6N7@5# ze{$^IPGOhlzzf~)bPOp{D+SHWn_DT*q0`#@Rc^Cw(;Le~>$PG1rOkx(x49hypPWtX zaun9IM2|4yrT*09FZ=F1x=x23w>cQn**vQT_SvhAMl4~TrnW{{U=^IR442B13zDZf zs-Y(rZEPy28$me@B(L_3CuI3%2VDldRw%V2miumQYWJ1bJO`5+wx?i_kZulM3`l95 zWuYH$)s}r=S%nyW3u1!!H~JU1epJet9!!`= zhgCSZm4>aY>llC36LK}aVgUmIAY8{DEDvUrwQ8dc)qJ_R!}+NgO~(MThtQdgi&Yv8 z5%K9f8sA)Lai2Qn)6=P>WGRqjv|K?QJA9cf_%Rz>=$Z`g=}bqBgTozHgZB}}1>IRo zAMOW>BuG|A@}K%Dp4sIFyZQHG=!2JAxG(;+r##a6ZVn*1!4FNPVTWQ}0CcvRI;O9Y zPQsz>5XmGncGx&v8p3X`3Z~T}^m61AmB~kG_>isG4wIyR9?+bMf^(lrNB@c~=K7dy zR|VMER6nd-`fZ2J%-o{IL(1ZHJ|$coLzecue5eTX_<_js`}tvm+tMtvI=9oM6u&MS zX}@49-qn8gdCa(X561Zt6-s}IGF``Y&I(Wr-OPGNPgm8{lC-J2)gX-$MD1t~nR#Zu zj)w{^B^EJ3gJ@fx8dWMbc<+MGKvVhPXzClR!QoEaRS^qz!XF+!bnC z;0^!2ZFekTY-cZG8;kiW!f<|gfb{#>CDnafwK0p?6f&F5dT?@>OStqXNgBIoEDsS>SlZ+`$ znVn!|k~pP1Vso3*>z6*wpaX$u^#U?i^Xw%F{rqXPu`Z+W#iD3t?-kY|0prBTezkMD zTx!VcIxdPrha#=x99!vPl>UPAs z__+7s%HM^_zDsU{xEF0d#pHE+R}Fp;q)gYQ8!G$eVkd0cQ`Y_ImDvq=w`?-yon2^xm> zYqUq)@jRZm8c#Y7059`j|8X!7V>~pfHX}Xzq{_t7!B&+;1Ahan9rVK@FQS;o5_~eY zH<0eUm5i3xQJDiM6dUA)p;1v-@iqhmIl8R({{!o!G1-*j+w;BTzqq5=m@Iv$6{S(d z22&)QeAE;0_WYw`@Jek&P~1H&UO#Q<*vG?h$BytGJsb|b=?cIJhCEmZl!s3w(td*)b|t|x zOO_&cT~}#JB4N*`UV(*WsfATb-Ied&J-Fwu{u>KbWX;R^^bf=f)!;HevMT{LI)F}e zdP>mAiYS@gXk25f6;aKq z40OTV7!W1Wf$DUBEDv1TN~BW;9<3uPZf+bp&Duj5qXYfT^>t^8$yK57bJkGv$pJL2 zB94+2-d_`aY*#EW{KxjAH`fz)NII=GvwoewNIFom5%6F&Fp|smhvG)ocq&*K3w*-a z6nX%*xFVu}DkU?vbLKY>zpyIHdekKV=_eW5<%ByBX4^9W^`L_d zdQTfAWx8yEEQExGgeLh`@>Ru!gjQdG?TW|{2y(nO95!(T|w>8rwz)*EwPxxH6Jel_qOSTt#`_$iOOJN!l$bH0vF5Tb30 z#F#t)MBtPx{PDZL7#-)38;PSdcW6JtLjsgNz9*$C;MU%8rpj^*Q&yIgK;Tu`l-rty z;bNA`oxEi2B)vwjg__A3wxV>!8ysmce+zyOENiz>X zd-TPX`HY%wZh1*H>c{Vho*i26p+d8UZaKyfe~$aYY1^=f>6xZll#1q_82z=C6Dsqc z3_N8C_=t!|ljK zRPTezexSF)jR;=sKr9f2WX^z(q4-t}7N0f18{u&FMs=OhV&=S)lS;!3#kjn(N>5wRzijKL^vM9JaV8k}$C*b|R9^7^9FCA>K+$ z_1b8~hu_P_4;h8L_qe+~_uxAEQ~zQ0N+K|__R$X!w57L=)$XRVZeEl0e?oK@;19*I z`_&(ugw*5q!Nl3SYf|Qr7zvWgn_dO{nZ7WL%`%^6NSS_M-&&tsB%$pG zs)-v2NZIo%nx0aLUo!`bHlATFI-Pt3Np;WrgQK63M;Cd;!_XX0>3Ye5zZfag$Zts< zzI{c3lIGIH2aS)|{5^1Z;W5Mto*_`*52MH0tbh;3 zVli(B!#{}GPydEzNmFD$0Pg1~jUNoyJu}aP-^iAHApB6PmXFuX^RhRdCCj#fzcnTI zP&V=9-#CCW_>?Nj+l67S-ZJ9*cL!+P@f5S)fnxoK9O{Z9N&K^@Nb>%L*QD1&s_$>e zo&G$8kb3h04`@`6;rYjm`6B-TRvj4Mmhk!pP7^n;jzh4I{F8!ps*K;FgNRbi$|ce{ zE_FUK{|4OX%!L88nb<7qFQ6A%4af+W_L=Mu@ST}{3Wi=l0#XKG1Oi}|C}=9-9hj zYB04it;Scu!m~geeI3du+OVP+{d_}cpQqB6QZXQ2Q~b9`E%FfYypGgOZzlE2RRsUp z41=Pbl!eQ~%#LslS>EDWtZZ~$l@#@paqsL5WR0nnLnGcQJ^*WO;DCzRithv+67j1! zxUhH$jll=yfCx#0d?DRLU{aFipW6$*ix+Bek1zL;NceA~YhUJs@i+7W52?KsIMZEH zdZvIc3FmG&(h_t{ZAt`@<%o7Y8CmTDIFj|hC=0nDTC@+szYTfl=xBf^7^1b_b^ymQ z%l6rBQz;kd<}dTV42R<+XQHvm1oy%wbj*U{{I)ZXA(nRwzwcSy!}}%DmUS>dnL^Lu zi|vsW=skQl!z#X{ykwl%wtmZIv}(y^i?7Lf6*H>OAo$k5XZtHyl*$}Z4k!3(Zln|@ zuinqV=Yzc(r&f?v^7^_II359|>Hax0SWEO~bna2LrihGWwv?{VCEAT&l#sq3K!%_M>&?B6?f4Zy*ovs+|1`8WLfG z|F1M9f^dBVOG6I$!qv~jY{f1VlC#IA>X#vFl-WpX2~-Z}E!j}oUA?IT6u?oQViIkd zyXaZD?l*mcx$&|%e)a;qF4n_v_=5Y(bAoI+vmaS@HeD|r#VK;UFE94D!es=OLG(ci zY)YcEfdbRmKffcS+%G?L_n#L*46GY_*UkvHC&;!Ri%UObJ9UgMfoOKGSM_w`T&26t zpIeWl(f|>^{k0R8*LWb(tikPEqZWMS#>PsjaYMD2@DSM$T7lj!j*PdCv|}w|BEst#rhKS#WfJ-BkUY4tX3Lj$?X_DS8;yKqN z4LUh$xtT~)QV4H9;Y3cRi4fk-vRWN`BRgnltOA~UWv6WnJe7vYKhR8F=Qg&0@zDb1 z)mok&OW#~8zUDr1=S0$$lZLIL% zJD%-DSYOyiaqMUtMnj?ATI}A`JHyQ*nfi51?lNW7S|r@YMB%KnrYnxSMXhND`J+=I z?vDni-N-t&gT)XD0-?yR~IRkL;fI0te-^h4EV=|BMYfk8*T= z8H-=*xFyZ}iW8^win-ry8QIxAJ~%qJ8j*p-_(a5R24G6WUP27{D%Z3q^;~*nw$9;{ zP&E%(5}tTA8uvg7XGx_Rqp~HlD z@|-Kd=Q=mS>o_uD_-^tX?yAI7o^<{T@IK4+a)RV^iz<@*0p6yOFx*q`w`fP5V7 z)=X9L!nF1%g(~QxvXKYt?gqB|mNlOKUt~?+g*fOle2Q$h^Xpja+UGewUwc*LPYG&e zzq@56pXmZCb;*KDQSyoFJzoH_iQ1UyMdfuPd{|frlv`6N6YI^uYZya=-@2UM#ywW8 z!zUy#Fg3i)hkzA}M7_Do)~O2Lb@lU7MCVKKyh4yU~0`F1t| zJj9VFK(Mp5^%y>1<##v_3B4S~jD^9-2LdqYYKe<$SwpRuZH6eR=&}iC-k_(%jB_%$>wMlwv~jXW~AjoKWgVZ80y$* z_Dpgo=UI>y!oT}4?3ZB|;-0$nbB)K8X_lxniY*I%VQvL5j&yn32Ntgl`-klSMq&0c z@?cYu>|c`(WeGmF{m4Icxjq(GlJ2I)JefV0dcju4?9eGHqCnRh`WAQ7Wx&ta>;*XQ zt*>PC0Pv32fx=hEOphDX&SsoQ3%_jYQtAm+l%pfKsiMt=hL-*8O3j>56uJNjf~qYX z+j~+p3gV4>T8EnR5L4dk1~3qj+w-pk5&gPf*0g+c(?h-ML$@Cxcbb20_&71Y{W)w3b}@_)3UH8uFGfOjKkKHakTwzGh3_U43B%?-7?rKPOY=$1$(5bD8bHCZ4~{Z~(M zv}zb&K57>2-=mPnV>b>mxe5tX<;^s(N{Xe(kO6;urN6?Ae+8W92bc~lL}2qY!U2YUP(uyYLy%j(tl0Yrby`gU^O2|K zE}^{n5&pYU|*!NT=I3(tX%EdaD#g2(6~UG{XP!yu>wHyX@PHeq1_ zBif^Q7jO9J+33wi8i_B+wCR2SPF;}AzzG7)0x1YEmZyJTWdF@yTCE$#bBv2TsyF(N zg7xNbhjm!&?O0tE>riu?{QVVFkq4@))s8F3mQOLHdm?SDKB{RS& z=s0MLMKs<7xuOjUrJ62ntiO#8*3~AS@HDfq*2}T{R}I65Y`YUlM+sL-c$SJ(jOer`$XsoV2wFr{kvd%D0`IvE(T-WsUebdVhv-D4C=Je) zbv{?6gqNH@KaoPV8ERJG)l%oAo-cf*F~eCHPs|d^S*ScTaVbEaJ4cRGuQ5_?gOQtg zlzsG$+|NV7w1wL2>Qo$kGR~=_f!oI;I0Rbp6H%iJ!gwIbetVgN( z0>0lELTy^h*Sj$u?luySM25Zi#hj#Qo2PU7OOy12ewv_5C86Ho7JUsM!_gZV)WOKf zxkdZV^s)U}aDdKo&WC<{5aN+DUa04nLumTht(P4Noe>c!qZFoHQd`e9RntM?^Nobn zwk6b~O=lzl`aLE_NqJXY^A0<^II2)J=`MJYj*+} z3O|ZpGQg;>uNN{iBd7bxy$>$S3#IW@Y4i}15wLdfz<}y5MZ~Z9ZYtDvG4FEQMrHgt z*>oYRpF$a6boErwD3Xj3iw;0?Cmyh1#9dJ_cN<$h$9MXGb;ef~&Da%TZY}^0loyCu zD~mx@jdV6CGkWv(JrLX4=tB<9m7XB@CzgR#m1%Q@KHt5@WLH6hIly9=)zD(W0nehg zI*KkuQgrJCvvihZY0@0Jj|)_nb1M*f3qDe+#nD!?W_fp_v9-G znuI8hQqZWk%&pcHdGu;59{`6!oHX?Nm4|+-RSIP@U6i&v&a@=_K))KC7WeaZChfjF zgRCN*?GhC+4j-zG9LJN^9s911wUh0&nI!}B1^1uCjM3z0qTEHeEGzF`LqcLlcn#Cl zDOhv!tSv?o>7Ejj-R^sE2P~}>#}W!!DL1;;2U$FCEADqd&KG>?fBg!*%GJch`08u)Y)8DA2~iZs2O@#ft=Vt{k1+P zuwnLdp+rKcA~h_^mh3`}ss^jST@20l2DI_XEBqv9`^a`{PB9&Cpvy!)V645Dx!2ic zT%UpRyVu}R0>%r@SiQP}3GczUGazC{lC%$OTjQe!N*&0>HYPaco@C;=Da_ch z(t;Ce__|b;u(Dz#w62x%Rb%MvXTm5*hE4RD8<{=pfp!B+wle|PxJ{4HS1dNJJN6o* z?P8+r2V9W%(zqBqPl_Ax(em}m$Z$=O|2h0Abq+9_Ph<<-x`NBpr66&2+HvgNsGgP6 zekx^TxR2No7J0lw-Khw5;Or&o1#I1@59c0qxq!6(r9j~tcc)Wk(8ru3j$RZsxAQ`S z)djgv|KXQW)d=TL0jm`s@H6(WR6rVWphMhB`K~!RuE#~7P1^j840W8l=sZ&`Qdc}# zrtJcE2JrjPPKO#_k=f1{1QP)2;h9)d4JVs_nQ(g{YI3;yTaSLQndWEYjeSQ7uxgs@ zeY9Y|ZBxeTwIVHX@DDboSkA8v6Dfmu=@H84Jf|uy_V{=Jx7owfCSuNjVJVIOb$lgO z>I@6aJ?+;U&C}SrRbV61{bVy;RI~Q=fIjRYrlZqtp~e3rA?- z=daaq-J<=D$Q|uKXq&gGVa2rX3%f?-Iw%`LV)7fo{B`;5JY@TCmH!WYMWU&?JOaDj ztG&RN-UmW68&`pS>5S8pvUrei(nmD3FSNLdr$6*a-dLUU{vtnqj}zWW?f*sBKZe)! zMeX8n!^UoG+qP}nwwpG#?KEa%+h&8tc4IYW|10@D=bY#L@P6ubHGA(h*PLUHaSz`7 zeFdo($Y}VmSSRA+77A%z^8UtnuvSSE#&%XAsH;Bx6HH*e7G0_9Vy!%Yl2oKr3%Wt% zaq=1zkgQJ&V_z@BkS0=OvxJ0|LA9g~Xi*-E2jjini#TYG(aM!g)ImiHWEWhm&;*(k3Wo zb(KIwLiUz8v^qr;{yprIfmvFCtp_!`CI2_(3C-~oYSp>OgInpX@&$=&{lB+bd@3?fHrqSKmiQjjr<`>~&OD4DDV3Uq9**i8 z+;3+sIOTfdRHk7iKPGOLQ#5({Cv@xerrgFrrFb~kB9;5SmL!X6NiPFN2;BkRn$~pA z^n@H`e7<;@N?mEloT>gjBR;2-L++c?rG#7eU(3ocZxF>CBaQx6yr^Pi|Gm4w6PL;~ndEcS11Tr)YH0+Qbklerd{BB)!dABspYIhIrw0p15k z#8HMWL_JpNa;avW_v^t)D-TkX>8qo)5=Z9BS4;vguQ)W+D98I%k2VY5re9g1q^tXf ze1-B&$bluG-YP2Yg$lgvBpU+1B8D^YJrEf1DHEYE5L!>cHeSDW_M}yL(dn_DmzMcR zEV0uID^7Vq87{c+TGvXY0O?USiSl?p=Y!X+qkR2MAuVX9U)u6P-jj|BTw6k@D^J{O zY;isRMeZO?zi|^ATnq+BKO>K8?TdyZOIl1S&`Sw&W4Po{Fot%;?>w8KD1f&QP*>p; zFhFiDgIp+L$+ppn43kGpyiCjoF9wG%F}r};>v1A(-pgNp?Fu;vJup7tC_v7Aruz=x zIAv#R93wXI9U#*siA)+5aVAbBW)Vpz)IkWBjE}4QIij2l-52Kn<8i%1Ku!8ge7;9C zzB+(t=ET?I`+-Qx6${@E6TbZudNml(B$YZ$96XR=cqgeKy|pm7dwXu?7%LfaapvZ6 zxoOqX?FHrAya;uDFKlbdshp@nG-;!>PZ`}tvB<^37u_zgk7QBk>}+p(gr&6@&t^$8 zpc{8Gsm5e#Oe7gWF3nzK>qRFQra^5OptslGkE^Y=3^t3{0E`N-c)f1g_DOj_uR2@)dJ)Gj8U zt~SRez89)F$EBr(0Yf)k$P58a#;t3bOUEQ-V^S&xq|*}C;&7zbZN9%T#PF-teKk~g zdA-q{MO5b=-yGT9W$mJpMUIX8Cwe)3ADC5fDhFB&y8VUdaSA^b)3rMe>2L`X&<*}m zryUxE->o@02vn>uRT2#h#RcK;9k?y8YK>LN4)80tKq6uht*4?fa?p-LwBA-?!H@cb zM;kr}wvdI9uhg|v;wPVYWocN6a49=ovw0bSYKIIo{hTZiw5_@S{|zJgko^CKkuYJs z{OL}$=hSp*zM*8>;Y1|K%UBJ` z*RbuY-I2J%KS7-5<6_XHq2l@ue|}qWaQ_O;!^Z#>p@$vrXTwXoTftc^W*aa-Eg|kZ zwSdD^jBFH-cZC1?b{x76yRtR#Pro+D2+h{C*qm8{P$Ki0NLNn);<@`G($~VRXDD2* z_PYn&%fceKfE!cK1GLoIC03upVV{o$VPvQuN z5mjdy!t|-c0KcVi9+dNfF!ioa{IlL4#4C5RPW3(BCMFspGGR9vR9XBD930=QP^O7{ z?4y$e1ycg<=gu+VBbBrtt@%PIJ{=xc0m+retRdb%^ebcm(M^(uRDf@Ly1M*+iED*I zWW2_(^XOZ$b#NX~gGdi`HV+>PUWmVtPtI zd+5JE(mlZ3V+6O`i2ZGya&9lnue>WxXKj zXUE5lvBV=?LWcK+L`~Kq(j8OpB%wpLvV!9;;xmG+TZet`fMvkvw{Rs!3~JNwuNRTI zoYn&B5%GI-k$*{NN@Wkv`gIwht(}+T_bd4JH~C>UnU-~%ukd+@f9>~k2o+-ZN3Uh6 z?(kWq*YlzEQG^o0G#{LFFkGo%mI3qM0VL|fVe%-^mS&8(Gjzj=>dky?3kS6s8$ZbPc0rP5oNXZ^qs4nYLMG zUn=>aj(rwVt&g*C3qH}>At;RPV((1!+n6}doatHHuDp^%fcwr zbY(LpNf*IqJhne|*KS5Lg&?FvlTe6qBPKfI{<@$_)}+L1)%~w(%+~j(5Z-QsZ1nc) zU+uO-Ls$O|tb@^9?zovQI9LpE_T65o6rV}-=L*^MSRhV1yn)P1OwwuaeWt>kPrLdNI6oMi5jR@U2oe8AdCfH#^gv`-1WOx^4MF?{LyoR+N9XdMg! z23h0$t=9zY;k2s~(~Ef0xwIdj@@tE6EqL|Dx1H_sW{<*)y?V&Qg(@oSxjOaJ9|g!s7M>5Hn_5Oh`s~2GYvcWuU))B$F+Bg> zsIf3KCx@@w$9K_=WDyk2>>S68r2lEsFTk=iwFyA zw&u??I~c6BxkV-)Or!?_<6LV$P`xQL3yYD7N#Nn3Ws_`zJ@V9I8QeE6bS$jVF_{?7 z-rtk{$y7Ol*)g017NS97Ld8b@)=lt6+G(U6&O|#M_{5x~U$pN4^@f65A!h>?R7kpwI?9?oxTunCPR0pIAu71{qTg_)!smXcF0kN6UWXtoUA7H4k6tRuC!tG^&R5?SXf#0p0W5fL@q=vD2Aq+Ea`Wss(5pIadb9~0cn z1_Kg$ihs%`x5?TP_ZkN!rPaDG{C^JZ1F)IDeuU!jxC3XeR2o$ck;m!9Rj7=$aL(ob zI$T{RuD0+{wggh{`v$rD{B@kIGMKHwIb?-F$c(kC%ljGq*AEU0Gd4QBigwg~-9Cn| z@Bju3R)%4Wu;>dNzWg>!8I3%HBt4f~>HrE>E?#4|fNXBg9jyF7!*d_|8c4(AYqXyy z61uZ97+Ik^!|D6RD;|S8I`;khcPK=}(59xo$iVk3C-t5fGS(>y92^`HE-swjdY>nm zy7lR(y&)P?MJ5+>+S6Y!N!hg#m~P{_40TP zdq=gw%Hi9k{WbCo4OoqEVBN2uNqjUz-&lM^pS!$`u97kJq0gtPoKU9g%w*)tJmM6= z=F8Mf_V@NoGr3$sK45V^ak6x+)2?_G_(T>@^B9gk@T>bOBLny?-Nw|o-gMK}FC$af z`p~@oRAq~`{>5)4B8-aE4d#jMe5dLa zvo9yTV|?W-_wD6&&N$M`;4}QfBYMa0X`i0$zbs1S5+|}?%%w`+X+lI*FJsgY7L;Xb zYs(}9G`@}~TX%af#=@^HC?D=#a^h!-W@i*&ittxpghCFDnrzqO9~^m5VAjg=QTzMe zDG^=iB?ECyx^d6$vP2fE0?o8hDc}#FlCuefDIm__6!^Bfpw+o(_A($qAD*`_lm&)@ zg!Bo#<$8_ZgiF#CF|xU1!j72XHx;Sq>Vf=>)iP=6fC@#>Orey=ewsZUaOv&C-$k%E zK7NF$qmI_MwDjln|E&$N8sqDh*EOfc*lR*$72*x$(kdkGB%m zF0rsZl%3<~JjnRM(nQWqzY4qV|Cz~JdNr2ZvcN0jry+s-*t$R}M)J~iGUf}KxPY-U z8Oo0rsVYZua!4Wfyjne(EO;DtN0cS23`7?Xxc4UpD{D#0#0-}+DBFSaXngPM z)~L*36Xo_>3gVcET87RSN*SQRc;IQh1T(#2JF1Eoq^Tk;8o3k5CTV$T70|l)s#%-= z%1HiV5rf$|{Mv?C`J`Yv4!i}hwXVMtQEN`x-=J=N##0&_8@GW@HK1ytem`RJ`Tk<2 zPzqI@oN2kBpuot|awG+~4MoI)y!t=bY=)B2%*?uP+1_U_%ce62CzmhUgbaSh(|Rv! zcP5T<8T?#Q0tF8zYMp^;y)rb-R4a5FqGza54LMgPSToHaCv3|2hN+*LEY-0HunssY zyl6_5*M9P3s*kw+_RC6!9K;}<*{-~3s#xwv9pujeA7AHNS>E=R96FVc1BjQ3i5@ZY zAd8b-OCG$Gwp?p*O8J})l==e0L_bRFsbK&@xjoWci>YjbljIRVRSr0T^ak!A(j#c_?thPOlK2i94qbE0SCo7JYF*i3; zQ`OpVdfK>qEoRaw}Uv~R%b6NE_xr4hY zSf|W9^ctQ7G$7Z1e(e@khiW%k=Y1q|JiP2N zK4iP7BQ8wLvExRdsxWQvmF#DSyK8ITK!!{FnCV1!VO;-QMn7uGk};PjZD?Jb4Ovm# z($dn_c7LcAq-MZsA`Q^=%2ajw0C5#Bw5I)j;EG+i%HiM_=LS99E}mOUWu=k|Qd>8;?er?q1ZhbixW$uyB4$*iVx zL3sK2v|5?F_o%6u%|ETy7>Rg%`&Mfv(?0aD-NOQ=#l_@0 zzzf+ff&6vMcs+si@P#5f8WD`DJ_U==Lo-`o9IGNO5gLo=URKg~sTi+Y_`^CteZM_X z=1as?7S%$PpKZ^m5_*Z#?!nDwO#2wf{0@foapgE3h?DKA`7r^W+ZRFY$O)FgGGbQJp4T!yfj8nz&4cW3!! zexIj2C31_Yw-%6K?w9+NzwjAc3q!V4>vsm!*Rwo__=9gyTpj+*7kXc7T@ae z#A>6BhWc9ua=0iat0j{CX4kJu5Nvl`Kc;ba;l+_C9g+8EB>dezL(P1#A>SbZZDs2L z61rCaVWV>qgGex2*AsYf?$p5G))mAf5b~$w)4q0ir2J<06T(YTMi0Wi8BthF>_|x_ zcSz$yJ}AG$5{ZPolLu6ExE?73j3O}~xTfO~m_}A(JP4y+WzfwJ(AH|EgPNL~*S)&Q zgH@ztBSSK1MxuKU35lsi>&Uz>Dn9`iBivJheQUHes}=W+-C-k2EE3(Rh~aZBy^qp} z7*V7ud8jCLpd_(Kh$f7Ti;Ju6dQ`h*$4iq!lWY^!Zl}2jukJUm{XPr$mWb|0_@4t< zDWq$}u*=dZd0=fqw7Wu-3H8Gy=IEueLy)ozd6gOOvH{4V>L}Ltci%emUH|OEUb+9m z`uhERtu<4W$kNhs3mABd$@iVL8B$UKu)l2ewbqh$x|{VVAQuLLw5k)PxxkN%l}O2j z`489QaQ9nmk5m=A%rWEFwHsp+U1` z=WM)XdY3dB9*-(1HQw`2UQb9+60<($RJ1GPGu1)W*r}L$&2t@A(@3965MCUr2{j4Q zZdqU9*y+?;JXKV^tiSDUd{){SOnU6lT~iuk1p}*^S|0IM;M4(C{?K2n^ha~C2Q70v zttl_@Wb;)CebdnSLo5~DaHTdzP^na^W9&PowA`W?vS~ptH2jt`s&;WQq z`rBncqCkz592D?d!vKwlX1cN~P{urTNelUPC^3MeS(JA3NKg{})Sy=rb~FnuQKn<PPtR z-#pdtK-2#Wzz0?(DuM`Hoxi(ltu9(28YU(tQP^w|AC8G|9_9ag6!oX*XW(_ZzyYG$ zT~fopd!whWivL~TWyM{ZcPkC7^$TIi6`REl4)6ymnvTxStA{HSz%9w-N=*ECeja7s z|GD%@)Pln?c=f!KfW&P5`7`ux&Xm>nZoZRwD*^)tK1$JmpCp@m_&>V{F+DdY+U|bV zf&$Mcn5Q^~9xoXLSQZzuSPGCB0nk!DYTj>fS$JIv`1kf{BGi zL`D`&$HT?-PL%x-bSMf24izwKVEc-Hf%Lwkqod)wQ3Jl#`hRZ;r5gB`FJBrQHnVA{ zIt<=XX~S~2uW!nBqudYnxy%1vf#QF?f@mte9%nc<@KNa_5#CcoJnn(y|N9P~|KB?h zwYi^-N%a6pFT%vp56>wnb3B!Sgqb-Z+0D(3$^BIGf6iZ-@&D~+Fd>tEV?%=`7ZX!_ z^q?fL)FQD-QJvl4Sim=CfA2zjKMKI=I^Z+rURw-d1Kgvf#hLqa!1Nf`Xr(Q^Eh1y#I}if)^jr z+S(f6_y}lhWCI*)B+>;NfUZnyd1(m~KvAc+1%RCH5Ti!|EJ*O8Vq&%Xe4clzT2mUO zsxZF309krr%`OVJ>4&7x6wS}i8(CY!$jHdp+ie4zI))KQ$p&m_AD|7k_x8XM5fQCj z-@%u39wQTzk;#uHyH#{x3qvX^>6(Lukzj%u85sr5&B=A#-Q2_q#G^lSOhkXFN(rO= z8mIcg?5v1~hevY6{nN{%OD3NuI$(_ZfKAZ~1-=WMJWSu(8ZJO&A`DdAEY*eu2SYR$ z83J(y<@2~b0s!R?oUgYdqoDLv{)YfPE+4&aE;b1OW*FgEe7=^(B!B{H8vw->9p2CG z6FCAoA2yK_$>IBsnu2DHA;{b7y@7hw1k!LUkl(EH-uuDf(9-xJ)oAz$4n_}`+Yf+a z2XwXK*xT8^Ke$S_-5s9AVp3F86ug<77^xK~Lp}bd&v%t;KYb!ipP%Q8$qM zW5*oE&dR#C;MG~7+lo@IUTF-3{l&KdcEk^X7aIhS5CQ@MFxV=p@#*%&rD!a?y`866 zHa%dm+Q7xexgd|+FRzMR6~a~bLp2CazNAtm5VBL@L1-yUX$An9ylo(8J;}im1W5Qk zX!@HZ_BO!z0>EU}c~!=I8*f)T>p*h%KQ-*L2TlJ8BV)QS^craX)er@W1wqShr!Q-> z7)bh^2yc3qJHygvMEqO;O;*^Nn}+}c=sz@JzA*2>=meWEKm)k^R>WNY?b`h1<$CHA zQw$n9a=qM)4$e{|6fbqI(jMI3?@!6Q>`2@HW)}6hz<{^Nam?&GK-ir2u#fz3FY~@j zhOxfuBPy3LWftQBsD%@?@R(xiE`oLR#P1v-T``c&Deo_vl)roWCFYhQXLqKZ&>nut z@BxECU$oojwS~=qfK;C-{Fxdhe92kuQWX&CeFbZ4>K~dxq&dWy{NC8WS(@*UjR3vY zm%{|Uj%2|zZr0t!X*>-Owi9sw=X_&^FFFv3JMXoEYcSCVmpKFbqXu^<%?ysXK@0 zzY|V>6#i`!4QY^VdR@yEv2|nvxFB`AQ47yy?a>01t>Xjd55zID!G<;uEenVX%jgB` zrDkSE8TE${@$+YY2i`ZPL?I_12)e|Ln%bsg>T@t0{(>a>&;dmimrzl?m-`lRaS5X- zQVah8;qXqLBKS*tK39rLlSpa`xF}oKN9|t$J;xb#z{=2-dWl&IO19BKI$f|2{v!-^xiT;b zhjVb7AMycileplmGj=vFo}9_Vc1i(-I4Y| zLaIsk(`>IgbpK-RIJPO@-kJ(5-TuHlX2Po>^H&EP>n$jbI|IO;cAi-yIZ z2L}7RLsZq)%j@g@bQX&il*>hqbt9vS@ee0in97^{&OXZim$fq)pxKLT38nawWRDgx z?-s~)-}^%V&|oy*FsZ2VrN$Xh&+V6O8qIj*;3BIW}nL7QdLJGzwzKQ?ncXh6in!Zbzn6iJ6KLpU3(nGVJz*+M}uD~OKWkJaioI5~L)79|!ImZPhy z>4)Eo3D`IhMMWeU8*6K0076vgE)&WVg@=b%R8&{S`pzf&SqKRfULKYq%?C>mFq$Z5ED6q~EpV(}VnV z=Sz6b*cT^ieO~v$?Pr3mbk&{u($?XOvyNr0NAMz%}YYr9g2Rp zbei9e9_}8DWO>x-@%EtFU2yd7hjxbL3K&vk-E)V5?o`a53W6@;34Legk|b&lAnlhudv+`+UW{My-@M{K?dcv+fV; zn{?A~G~1bC`}Bd@$Wy9W&-^Ij{RqE3kt2evcm`a};T%Sc0J|S~*JMyApt2f=-y-4S zg-c!j$Cf|Z7z6a06->c3UXRW%j|Vv)Mh#*nUo5f$-20s{8nDhp4VK#DDelDRkOMyE&sX zMIZ=tA(?=wUR3f9R1N`lI~#(->WEDd=qwYDSr~WA@JrAmA8wu& zK9>fq4u%2(3F^U8wH#XmG&3`k^XMet10M$OPiFA|PKUqXJ10twvl;0@OQBVkGJa|j zjxlFWdo)3&TaA&~1t?rKN=LUV1}uKL@!;RCVCD{#^}c6+415;utm~|MM-+4+tK28Z zq6x}p_s1eT&^lLh-6CH0a44ztBHpqDSmZ3yz~T&WQ)ZwIEBb zL!U>-lt@{8e2%eG8}-l#g6K**kTnL)`B30o*^Eqz6{4$?ep7IArX~7)FUqu}Ss(vw z;WdjXg^)9R;nWUwessLRo;J4%qB86{I3fOhO z_B^Pa>UiskI$Qsm72R}a6P0$8O|-#NI+KKI+fVi8p*k9bwVjY|Lh-#yQas)h)xXVp}e11haP|8m4Kr*5Qh9yubo|^%xe!fb!qWuCbS=mmu}5z4DPs(WvKf1M>a;K zTpXV+>b`pcS3#aYVQb5LO5FD9v>3Xmo57h>s^G=cpIu5rBSf#-@GJY%^xX||f(2b* z>hPt3L+pPrd5clW=V|wOBn|zty?+?Z+#p~YS4~#Z!bdF8Lx>+vPcts2G4XRk`V&`) zr|;Tsj&LsCiJG@}7f!S3m)0~h6%T1h9|`AcQr73AG|a1Uma-!4EYJ~vJ43=+IU~jJ z$x=S8;&xF--OL>ZrTrGo2uRc+*pg29y0<9$*d*hhLLN27Jt4^dP-8!fK=Cg<%4VE9 zx6{b#hkpIGO{s86gZ(7T9Q}T2FXxLUQ)LL!`CbHUyjZNAYRl7skc0x5c0=O0unvh% zE!n6>mpGt)1F_kxYwCcIJOIQ#AiuM){^Z`oW(^RTk}u2LlV$u_s+6&t@K-qMnWHmq zqk;b^1I_gXg>&OhSXRUnj+v&z2mN9%_+MYE4aro``j2cV`ns9GW1ON`IRATst^47D z(%q8+-PQfnI%p`@Y2RbQwPkh?&*8ZMCoAr(y`XAHy%SD}{cU7&o{{9$l=ZF7Rt^Ze;zQ-g_U-hSd*v>D5yGOEqs?vs3XoI=gOB`} z(iRXf0>TYIsVPte3SEW+qu995uC9;p$W>2k(Qz?IeIK_yf<_W=0ZaS6HpdpfFsClMPjxUn@k--N)!a zyK#r2Kej|?fYYF-E=jH3F6(yN*D6TWc4zIk(Ro}@S-dktBLzpP9|i+cly-Bnhu3xvF2KH~ag7^1nc`gXLrqhFwz!;_-JNBb6q@72|(wCQ2FgN=l$6n5f81$TKF^S?Si~Kl|hrezN{{v-d`SRb2q}S-l zE0|ppsQ@T{L>MQ(;U?Q2l|-ZXQNUH>+;pyhhXRj z!Q|zSTHI+!tUoOr+L8#?$T+L8c?&Gw?Ycw+i6Cq9P>|gBpmS{z0Fgt`)+?Kfx^0nQ3nik0fH0?}20)~7FUSbdwFgZaKWJ4&?ojC&{f zCI{F*C*SZ9*|eMb5YM8^YCK;ttW)y^C$gNNF@Pe-|G{YnwZ=UWKp{!&>{q@m<2BsR zL#u))=zhN>40aN}qCEUzySnZ>$E=w6N%PC^*~TE#cPA1trSh`dX(30lM)AhIR21z2 z`_;z-oTJ$Lc+M`g-Db5{Jv$<_d1HGT)z?F`ge0rlf92NNXeey~(>BqDQ~7G8h!)I( zBfHo5!kV+G6Or2{!pUjYYQkIg7;C!0K4$z!TW+m3QS8sS+nl={Ed+w<1sPDqiM`_*eC^!w+ikDD4u^RnApBgM5G8A$|)RL{IQHh6V zAwuFuaiBe(LEUX6Z(MTL@&1OSq6^i}F&iXA{ydsZPY(8mFp=E5X98kzd%cO_e4-lc zSJI~mZAYwB)KOVn{)`yR@bW|(H12S9qg!|*Swg74nM3B?uEly8M*B@OX)0N15&@rdG;s1QCN;%=Dj&`T|>lw;rq0H#?9mkbJWp}}x1i^i$f+?vL6T=o(|L?Q(EJ%wS1n}w zSW7Zrh$baB6;KR;VgHc&*A<*;L$|}fizd6T+gt{Bl@)~J4L|leGNX6;1P|TzThMja z5ybZj=z^EpmsFF(*D0Hzw8cRKf!N+xy4@O2V-d|ENTcU}Rk_12ESk^E{4|g9wMawT zm&Nsmog2`|Y&a&1$Ivb9Wr#y*;f}j2F0>D4jM#E3k?ydF1;hCyhgYvuwjMdqmE562L^_A2U#p8UeBmwg7*$rX$;$wM7?{M4n$cG|M($PAgkbcKh62WbM%Zr z-44Y!A64kSjUey7p`&*5M9*IY|C}GdXOU>?ooFJLyoT-R?bn!j4z=OLQ5LMAD|UFe zuV%sYB}b7PhU+==CEr>JnOXY13Ke58YVW4bi-^Kzc zYS0Q<1fY!3QjJlCZ0V<;$NB&E{5@P9K|20%;QRgox|G0I4!ODn@NqK{FThYQ? zMG@h=_JW_SzGH5blQ&>Shn3hwk7m)fyqY=sZUuxE;i6E@FGB44@`mE|K0O>QUbS=@ z;o4W6$JRbwEj8?uFRa5$@TRt~b0~vz^7n5+NL;N)W6qs#Acy|T4tutNG_jIE4eIa+ zG|(WBNHrkXkyn)(dNOWV?+V=5H0X<$1e-8m4Zv!T?mNydhWfT2(A}gjxJtz{V|y;- zO3`+bUx4X0N1(_uxMzjO)XDC6;cwjGdMrc;>O9f$+iniZSKcZxzVVyKTaQTXl(&F~ zx!iUN2{j|S@Q;i`n;&P2xn+6TMeW#D<${X#>OUBIfjdklmVq0p!vRDa9*J19yg^|V zT6&mh!HAuB5$xNdmMwU%=$XGD$8U4`ywGJPB&M-n!bJY#jTxFnG#cB$c$ne?ks`2b z8?;R&5Xp{N4Xw_-DC1eWzycyG zrP%1+Q!s2hS)v&j8fO3o3wsAfE_|nkxN`pL0Lnzljeg*B@rl zbbf*2EEU(ELDz|_?S|VF@Oo0RFZ~;YU~MtAP|eFCn#%2zV7nQPBDx?!i%pUl zV*}PC^Su}^7R#3o=z1@M`>(p85iC{oFv!J2ELU6E?y7MjxZGDpq7eHRZVxW|3tGH3 zl_*WqTfS|v`+UQNPHe)fvD5WtWuFZ;`<3xvfAxvhK6m(>Tv|pfq77MlzFGL>DdlHT ziANB$t1M%!1s$f>X$soUzQVRIZZ(fr`LkEke^2 zyBVcSrmgqY%th-a{AA4RI11?Jkgi!X#t%BxnM=4LTQM6&?ib*M_7c&vWIEIMW~!{j z3bY6z_Jiov`e@ow>RbNJEus&QFocw~E6e+y!gP(ARHOGtj5@0K&+XT%i3%q9^R&<{ zm(4zxVaAE7lJO=wDP_i{Yyiyv(XRK(bANOy^!PgUxq5$|vDnicj->MGma&Ze-dryw zM`vd~cNi1v7Q~ddSG4Ni zE_bTT9o;WzI2&XI*FW*oHkbTtuFHO|SJB-~Sc01r%ZnPAKz2#@Z1o1#-!O4-a6CNw z3M&C=BLfH^PPSBUfv5qRLaPPJ-z}}<*(E>V#OcIndakh0lRWQ=9FALjDiAIno0xk3xI z+ZPz^e1e&mQ49SPa~SwzLkU!`2GORVc8_QJaj$9QAT~*Q#8eD@mztv zPonrcxMDV6teahiCB%Rw_HTTHTFIe`8PC({ue3@REirG~KA3MMHs+1Yj)wT8&QdUw=dF>vaM>uUr;A@;G(fUefoDJB`TzvHG^kk;WiYOG4>gl_Pb&|{W<}QJjkz`2TFKz z-y5<1^-3iiU1E*i31;Sf=fK<=PS?OyAR7kjvKKO$6l1n5^yA=9V(I#EOvdJVTN=#? z7bda7DoM_mJPcW6v8N$rJSp%0aTd+cyCfi^_&3OVI~gg_xRzFp>gw^sl`Zx$u>2^% z$7mva@&2@-I+xauwaxj&2uDtbZCvvWp-9&-Y^Kv%IF)9ot!=x(SBjTC!k-ZZ=gn<^ z2cCx(Un!6)C6j}jz|E7(@DqoiG_2F`okaLDOf@Sqhk>~8NCOlJSTygDEq>Wo`w(b0 z2&9y2DkYfE)>bYacn#=VA0VR$Bp5}drD14vw6u(V7fJz!Oq;abW5=rocinTjKs=_j z&zkMnP}l^linK3Lr|L2eZJdvkAb(nL?XSXT1v%8>@8875z3ku!=8@c;u?kf7#8Hm@ z3EmDO980m=qEEy8=l>o@@M3Z`3=C~I5t9F!ur#3Eyg~;N`_)VsJ=~>Y4`s@4p*e-F z2k&Ct4$6AEj_J(_mO&dB`X{i>@a**bp|zc>JtnvWlJD1)<*1k2Vd8`A7f3AK^G<5R zOx1?{MHPN1n!Kx9nTGM-JvI7xvKNbRkrdpyARP3_!@fOgd0+_MtB|`-t^=iVCN(DN z3a77mY#GZ7LmXfkhC^w0n0hBHMp!ZhdVl;TM!ZsWaY8lj`#FBeOyfyDN~+%DtT&YB`mV5k{3d7JO554V_^zNq)dje5+;n{8p=0+7C%fbpEYX3Q_+#N zEQreL;}tw_-;&a{avfnFpfIZo39-~LSd02)!@XNzq=Tb5zP~&K6%xczwR9p5hX&eU zYw`IywgdY2Pc4FaZLE4AuBDB6rw1cwUFGnE%k1R{V}#E?Vc|hNO}}O2FxNoNeN4l> zHy39)*ae|@iL9>cL0!i9dp4l9%e)o?6->@iK7R1eIIt~2pHaPUE1ozkm(Tbv#zNp$q3tM#a7YF&C9Ug`3(4pP~ywe#65Fq6nBNEmDL^$Y@V zk*7KxN#w!6zOVLjYWVhuL?hfC+7)ts<|;7E>O|HY@W~||L4KKrC=q5c(%yuubc6Y+ zCCAcGt5SS{wA-j+c$XxYj^so|`jiMYmGeN%T>YDlQTX4&JmItKt8y2vNC@2adwNH) z%N=N?_;08Xt#$*HwY9-8+H^IH7I)R!ok*sWU6f7Yb27~XH|AP7x-3^C1K$X&#AdSm z4uzF7IZ8THVieZ3uKUDA>reGr^v(*8sN#53qVuu8JVIPh7ba z9D&p;w|IB0Xmm-5oV1uX;2dB_zU zq=L?E*{b0;sV}Xb8|r61m9&CU@k(_QTP%%0@7XfJD2u5;Bq8^mlfJ4a3OF?{xf@Fx z2tN1ET%ef(Jyi9S5_BSxt{FQXdnkowXw&EOax+mUd;7vf2@yB1Uoa}w@ve48bUkp> zHBJX#w>W8k>Lmybrdp>KL5F*m@!I3Vl^+Q)q&hJ&Ol(Zd?x=Vs$+ho&d5PPx=~3nC zl%W@v7V5q&iYMQh!1E2OJTbz>K;@+1%{oq-Th2VPgPL%ezT&Ie_nc7?A7Q?lrh*%t z*jKpr4y78OG9LKL@-0P%b1&z0LKY^%zxj6>^|XIw`c9^>0e@c*-K0lW97{4dfn2ED zU_NB99J>USgY%HL_uC7Xv5CohdC=p^5|H=KFDTGjo}NYmk~ZdM((}S7Zy>{)#4Qp*#6wGQK6`mjWytZxd9>!=MYiJ5p^9}vrIfM+Ds41XLYPZ5|y|lrH6;TPpD_f z!OIi>CQfI6JETr%R`ulU_0JLVe9^LQ`xy|eRgON`trF2kA&dY%EaiAvi=?p;A=9Ay zon#1lc#8BopRUxIC}t?UooL!#k)Xi#TAocQSF4$RXu*UeyGA@Mw0Uhy#n^!c-`dsI z52QF^Qx@iKsLmkPc&mHTF+u|yQ#G$TaW`$?%JHvKq5961YHq>p5iqFHo^5Wsm_jl! z|B{`xWP9h@vJARKUOB=qu7%ej66@iZkwdkEWVf_j#9()JScD4Hph7Q&tZ0^htXl7H z9?*;s6oEO((?9&V#5>4xv0z&wN%>2|u^OV>d<#tqdcf{ilQ9a>U{08r4b$&b1nO=! zdA{x35cDRYZhaYA>&yGG@s0JJkB{7#3)Kj;BUYn>j-EG|B3*ppWQzgF1-Oc(Hi9`k z9MXgR8ynejKSkoCi&~ubVSqZir0U3)7S0O&&I}q5AgdizRmDt+P;^Y_52WKd4$@6r z@2xX?$q~!u8S_HjQcR?7csMelsax}u43%M3R)5rqf7TM`l|O6uvlmz&Ad20i&61Fj z0OK-PG=~)1)vGfuj|jnb<+rL;6uWL4(h`rR+?153COroI>2fS>Ez0|H9bC85+arm( za>@^Sc!FN>tP;_mYLjXvRchJ2zeKO*67-#LC<=zNqKw(Aj)n%2Io-3Qfts@*f9SOU zEz-k+K^JODv~G&#CcO(5p8R5>Tb3sr&&O(wB5iVX6IDV_z$AzP9288a;xUh8g&Gy0 z?YewACxLstBlT%PNwYIlB%Tsft?TonPL+wj!iwepV#25C;^e#MOk|u8VeG6VB;q+s zJEhhA)&C)m;Vl|2ofym00c%Ce49kO(>_DbzJObV>bs5U(pa~JQP?#$LaOxPgXuqdB^iz+v#P_1fO%So(Qusofp9YfyfsOj zO}1`*<+Q^owuM(mVY?d@GQlWb+H5=hYr+gP62Y8BmPVghtuyk%V~l0V;Sh&jL2-=- zgsCJEl(IvxRu=MzxTGT)R_JLsfq1xFSIbpnOgaoCyPDXEb^r>Uoi!|DncQ1xR+4lC z?U&Sx2NI=C6q6@zL)qpK0zLAZN?6bRaw095sLp|rxz9$Mj{}H z1v=E)yoz9%MurCldZwljff6WF_-mj7M)X$(+j{_&n3_7mM$7&Gm2ra~F0_qNPZ~Ljl=Hss?e%&Qsdn2rJG|g}NjP1E$iH;j-CPPyu zUBSiZQHif*iPd#YOKb#)7W;>xUt#Tw(aCy*Zn=) zH~*bK*IetIIF2#)K`gJADWaGfEAP#`w{}P5fteaCVq{dcc8~L?m@56P-}rq$Z_u~w zmK+JOXNsMCasal!*BxHP0~6IGqtwK;7|%G4m!spwLH!#sl)8Ms6F}c?eII& z@i65kneT8HKG8Mv9ttKHqJ~v{5IQf}dm*aI`IegGMl9j=R*TazPY>4N7?WydKq-R_piZ{=o?Kg83O~t ze-<4(JG(lINjxru;U%yeXAQ58G#|BDJB$q|yiY=7_V6qy zc@j&Y_KrVV|7A=T{P<JtfI=(QvHQoX;{jl8v%wXh=}7jOd>Bk z5Z0=^l_nrns*=ba3S%Gn9#gvV(GCl&o}7LcvhR0=$~sss2yQT zp}a@?DOjhmirg5ma55!5L!2qd-nc%#WWw2P`b=WZp<)T&SlPtk#|w@kFpl+h-;6>5 zN1|D}o)y{p38J5_H||!>t*BR_W^0o@gJu&u9gm+9r6dMgI3snA$wtHxrMBUowSp6r zmQlNbCQ|p1TSn9b3_&|ST+FH~>-y!L+Ao>iYFYz^h8pQxXk>yrnl(+bnYmEfqm=B^ zqcHrPTz^`U2&A5zHx;;P3>_*TFmzJWKk-+Up|Xvkd!xeQEPv}!3z^W09RFT~7h(!9 zEiEAcXmCJz4`jeNYzZk<=(>lR=7E<{aYX&hEyeOrEvs63))Ntliq^wVUsJQ zBP*emUSMaNJ_*WdaL##vr688s8tXpFAiTx-;Zc6G5h}iidiFoU&iF|9Fx8 zV6={l9fFGyWm4+7*}H1ECAV5m?=ck5#~uBC<8kzMGGoxdfvUQUD=477Sg&5i0Oz9! z^j(puOBTgB#lepUp-tB=E7KbeXfKO1cAplK9B=Tw)u(as8~>39E!{mmcl6Y&?xZPd zfuZUk?470kNJ|N<^(t@ygdiW zprr->Qa2si&exRh*d6S~px!yJd2_UzM~vf&8G3O=zj1t{(Eqdt(TsBvaVhM>|9KGI zr)vC*AcBW|g$z_%T-xiF^@Q#HjTYkEn7 zVNGDG=Kb$Q$R$g6RE=R&RIAY(gkdoKS-)XX{554D%XJ~sO0HQSV3M`TLELcLcj=RKTvwsX&tdI;7NtBD<2;H{!yDmfDk z>6<-OVO7*!b^-~%c!5Ijz14b-&kVrskgq!@h|p<~ zZ0^>Kchj-(xfG?dByJh&+UMQZPZsN-Fv@cE#er8iWJ_YJhr{|q^&>0{pZEZG2|CZoUr?CJc zZ>WT#Y#b;;(gRq$bTU*QM(&>m0+wLQ7UzjR6ya=3cKT~v2%Bd2bGB|3*4r+T{+fo- zB$6&uq7Zo+E~BYW*zBz3aB732Dd&MH7GDl6^@fu^7*C!g>`Yy@;(a9O*iNKhBt)57 z#LD(lr7xD1@fw@Mcs!$+JxZ7yS1nrQ>mj&c86mdo`uOVZ-9Wx0>_%v$CeDG5yfGE&EUqIrV@7Cn>k7-JcTA*+Qvnpt^|IxG92 zl8P}Z#=-HkS|{e>JU#W$dj;4f)-e(c%ynK5LASw=BCu5qWz1E)iL2}RnT8C^KZ&Aq zXyX=~Y91YfR56nCi}J_TryE05{hf8t@dx0)g*AQb}do3pZm`o;Cq#!mJ{Ct#Z z=Z538FB^o{;>%!fkwLKBL~mpp9G z9>Erqfnx|CzrF<3_#9xIT(&Ty*S(Pc{t%3t?V#65PX-i(qpnQz%V+E(0|TP60USxe zJ=<`^;!F~B+_3>!vuE(>7P@p7iMY()&0{(!WX87v=$Vu8qkI5DKFzed->4gHf5#m+ ztMeVX9p3|viyv=<4tFbxRZ23Py^rrMd7yk9LU%&0Q74)C^OdVcT#5GJX!zi#L2PTk zK-GT3PY6kjYM}!(Tyx%62d6CLPrm)25dqvk2j#OKm}Lq>q#;Hk2yAd3>GJ8*U)^_t zoo%!%a*4iOH@V7u6`VF9lm_>0%@9Nix=n*SA(O_#G{_k{m)cFesIfP^2(8wvJardH zNWr(W-nSy}YkzcEOW=VQLj~q3B%@Z~cs}4eVdw%%?k5zo8HH5XpY>tI_MO@$W)RPl^LBq}TDWaRCqXA%6`)Yw*e&vGHhorH&LA^f4{d88CC^g2Y`3!NqjhxKfO~b>2XD*if9aO3YK91caNl&PR zXk3%D#!l_iu?w-PxD|v2A7}Rdc+{F?8fcXEFxcwD95KQwH1v;O#S>wlth4(F9vkSN zL|^{Or<#AOD-hr9K0Q5cU>kkTVMj8T45nBjgDT7lU9w%OsnXk*~}I6<{AgV zCnnB4JCM-W1}I(<9v(dONpGKV!k@<9c>D4qQpHalkf0?}34ifK3d(`z&D)}-TuO79Rx_7!Exd4Ft+>^)^dx%hz@%ES{b zIXl6&QIpL9avCHqBz7s2Ito`y{^7C+jsF%y6~0((^?y zGXkI6z-0*Ij0o=oDZEg$?W(DSt(ugr@_-&TGeO%)K*tZ#)~5kTe`2R0y%;?0_A+6= zD}BVwP69cp{2kHhA%utY;RXD^9vJ&sl@erVWNZv*e~2K()c+vyxtO40T&r|-Q`%4r z_Og<|W+-eFQ5za~qW2Q0tigadRhCbK^5L3JL6bNyZr4|$1nEWUV zf+z{{O(O}^Pe!^zc0yUQi?-itkq~Dbd_c7VBR2Hw=`e@&po78@DnV@5)BG9N8adAt zgYxnWsY&D=`FF~bR9)w20(|8qgqh%@0F`7;T>AI4xkpOL?&(d(v(vQrx%;>uh`efn z(}NR;;hQ9x{sK-l1E;ol9tSN#2a-_#;@q_3wl7(-FuhXvKnixg<97_KLcYT?QGs6h zWv00<10Wj5Ticr+W^@HQbXfW0nvVu?$Thts6E||wo5=X3-raG$y+lE^mp9QPpsX|h&64mbKK81 z;>afbNeP&=Bcj%OAzTZj1yU!kmzURCrh$xp<+{gb^!GP5D*1#Y3hAA8Gnmb{;ULTJ z5$#@ZdyN*H^7jrV2rA|RorQBc{cUL7?LuA%r_me2Kc&7-$6)jbq8r|}{a7e0@L;@8 z0>!5@T2L_Hxu-$0c>0@O{;)--FB0QJ>tYBN$>H7{8=w@1(<2~JnQ&TraRM624?4@|Lp~;kiqFMB;u4V#68_E!zn=?Q$4_vw$zN106NyPvqk4|2_ znhD?(4K-J)3?1w1)$61cCU|o#ovsTFFzF=5x~n+E$r=_dKkLK`?&4SiVdUcvj0L zOkO(WY+hyyyOTHTIHZlI#?t{j*A(y)9&$?1p_Jx7SLbEUm zAFa1^X>tiTxgeI*4g%vf+M>WDAVUN3Hr-;5bYjF*{lmjt~)=I|JkL_bljS z?2Pqf7v%0-%scmk)(mH5{&9-ayWn1Cd4?OMdtWCTwXiEt zx%@SBixsI#rEOoP0Xy<-a~ln-p#WVnk`_H7r@*ev_nd~ZD)~uNE}`#o52;-9laNNd zpym@ShoQp+8_U^h2UfKRd$(`^$HAWL7o25^mRL7A1qq01iHT4$*D$@IJdRCe|N1w4 zt`e^@>xwA6623Z)nbFM09{N<#Xfcu{Udt@b+`YTJTD6}3rog0}bfkDSye-K2~6)YPgVrQ)!hkOYJQ%S=3YN-`8Tpjg0gnD*sUa{$PV3s zNI6u5Ln$UoL=BW{GyusxfD<(ai0Uhbw$`FR0PX$vFVR<2C1Vdpo&v22P~!vVc(ZY! zR(tMSTcP_?xpxdow)N?BfnHOn#fQeLxngoG*%_!}YL`PPj6^wwhim1KrwLDGnuN^oq3QIInwL4%w5a+I0DHSSU{PKh_A1(l$$=BEf?nmAd9 z%Z^E?w!>s(U1ny`iUBmXO>aq3ZFNL{d;AawhPy4{hG<|H4i^cRL3C@L{Ps8V_T4-j zAr^dkeV=`pL3AMOTPGa0*zi0?^(pS*bUw*=@Y`<^pKbgCTQ#*~|9>(vTg z*pT`8bRto!3o~6RuFG27fvK5roC8=16{bGbGb3z{Pa}v79uz&Vh~O;GjdNZH;XV&I z;_fBewSphBY8e{YVzi1@9YyMZvH#%?Wm@PvS`I)U$F*IoGC7DG0FWB>-cLU?sh}`- z0YpVIq?40VRlYEzA}i&?{mI;aOc;7CsgaMW=m)t(J6=A%hN0zJP(Uu>L%>_G**Q?8 z$W+E|%hBS_`hG6&VQq@y_x!@8UZONm!u2y+o)+G!Vc^nCBN{Z;P}%0*$(WB$2{}f{M5@I#fz+Zh<-+@VMXT_<0+< zuGZU<5QV=b$jHh4hZzBkyZ)a(N_5`gq_H@aNW?xncz8p}fBdc5Ln9 z+6eE3ZMVr_?iFT76yQTs99P+kokiBZ`z3a5nhcupV#QW#(IVE$jTO5gT&$8aibs#s zu>?axk~Sr$8vFYnz6B=q&bQ+(ci}gmm(bz5i=t+n z6*S+*KvtP(ljWxON0Uqd#^2b$OqTa9?XJ_AASo)Jj>#wUouq zY~GJ{N?C{>1%f>e)Zn* z(sf0sQhN}01IR7^^@2jf-D_DqE0NnL&VnKaWh%51XwvGygYTC`T8UnW24y=na3JXD z%7zf|I5=E7bdu)OLJ2)=`S64+%vu@SNZ%x%c}dwhbM%skL36_rE>4Xl)>gl%mHRkR zje+C2J|Z3att|Zr_$DrFp%C|sr8Md zyEnJT$AYx|-M-JaHMS1#m9@3(?Chru_su`5CTEoLjA4lUd3bt%ehj*A`AVlTGB8-7 zs&;()TT${K4#T=WNhEmc@8@e2lNJ^CkM$m)3h0~^rvXJ#V)6C)!Rq(!;YA8NbxI~N zKyE_Y*WZ5@?amBKSW;dd5lhJbFVNT1YM}y?jEwB~Hk;r5RKGzeQC&VkFGD}>Km3Hz zU%&g;VK98RUy{6J`pa%$MuPGML`aA~iC97WC+s4qBok@b!yB$|XZ7sb34%!BrA_h+ z1#nT}{*R4Vc5`6JzVJju_YG7qwL70Ei~U7+bu+|Vnq;~b{=%sInR6QGvKZu2@+PHT$zssVH#E9 zk>(J!1!iFP#f#UvnAn+x5Gi3<*_6QhDl!d#p{gd%U6V2()rvRFRv9td{k}k;HqhKQ zEvH-d8ddEu8Pr-B85zk#w=XU!`FCc{CwTK%g@}O5M!`LF_IRaZ!$u8;ft`f3W$ zN&hSHHx}EFfRVtaiA;61gs)bh;NwRnkV})Xu*9#ZK9MYC&Hrv-b2(Jd@Ak=HN@@kx zC1-;GkEo<0DOU230R<{jNg*!no0MXnf1QS=6Ut22m?IZHu7c!0f7nMYA|e=<6ha|= zU$U^UAQhkkz53Wqus#THHhStU8mh7%S9Ps>Xz)|L*rgBf$>yO354`7*85}FUfewY( zYq1rr1ut;Q{H@y~Vnp;LMuPDTlPQaCG;cJaZ&raY^rU+x`LHJtrcR->g<-c+f3y|SY=AOaht3v?8?Sw-2 zd%(cG#(+F!KCjIBRyzpl1i)_#Yvu9m+vBod-98vkYu?qV`SIUmdK87>KV`CV#nYH0GeX6A-R<3UmhNF-p!WGa( zib_Dy!3~!AQR2kumoc~n144@F{x@gAz?_9qq&58cGaXYa7pyIrdY?HkF%d1q9SFz} zbepV1)9CwB=(SjYbuxT#O!0Sx`OWTN8=1R(*uawS?LKUyru)ht2V#KEIaF0X1hl53 z0D#l%0W3PzHt?fxyczc&HZcIbBNFtIs69J7+XG-h|6OUiKI?lUYZ;2krF^V7ay*86 zgqh$o(1;$^t$N4)A!O^W^{wd37Z*u0Fr>iiF`uDJ_*8RhvY>Lu2|o?wCujDLbR~37QO|A z1QAk2pGOi45&vSmd)0%iffxeqN>rug~bAAXkmM~@w7bd17m zv6=F+E;r4t3LP3;LTYN7)BMDI7VRkNF>g=l0bVfmEvb2fcSU4u0PchT%M)zF94Qvo zySFpb>(HXrOab)6O6OJADOMojS6866Dktoq_WzBFAWVAA8B%DNjEsz*4VAAD5dpG( z>-^%|-fz>fH`QIp~wbA#%lr4Jx z9B}DG2>;#!g7m03(`{dBnuJO@gl{p#Sm}EjfOIlo%qz;+DM+f)lN|z(s=q@e$68ci0U*L( z@9d45d;lzZ5Xc(1KAglS5cbQ$D#m8im9UI8YIP*N!1USf0Tu9j#~~#p<@tGx0ywdB zO|2lHp`lYkR#!n#@8wR@mLS7Ro&NmTNN;`(1JcrjKJMq%2b_SDQ>)Jl8wck~Q4gRr z07i2Fo_s51%2?gw1iVMccoMZ^n?RG(4`em7M$mBS3MqvXlOS*=713(a;OgwQ0BqX5z`}gmd?WPa#g3=l= z(K9hI;RyNgG-?VIF}plpo2;%i3p~HQ&FwObvKXbKl1t6Z^`D_#US9IJ93lXE){|F} zf$z>SBVuDOOQT}1lP^n{xv&Tb1NCOZ>4m9CvT{TF?Q3O%T9Enmt(kuU_2lex@p0$mjD0f;Go#i zj0vyZr+44F?*X5N@iJiQbo-S7L@!u7#T&m&>l6R`PNa<3<#iv_u6x3o)$|WMp71E{ zTcgTE>TZH+cC%yd@ciG~*}ea^$Qq6ICp#qzIZ)6RZ+P1(g1LMN*0%2dR?q*vCqzvj zM&T{LH%7PfWzn?Jw~v)Z%Qm9=1=;TrwZLIlZS*dMf>G7HjhVUVuYAJ+`Ya#4{3VA7 z$2l#0EXk+qdj0mk2ACcjx1Qf zNX-ljuU**uO-eZXW{BF>M~_OS$J-oG4%Y`Hb{G{fg8PD}1Z#n9;hq=wiB^qgJec|YP5+bO(Stq1P+>tX%XE2fzcAO zvlVNXB!M20a5w)SAkptQlq>ig>^XzK%EudNS zZ%o4LA$Rxk=buJA(n+|XO%b#OF}rtcTm016l0_wZ2fH~E)mm4qsacMiZ$?JyALPHP zyBg!q^1}kl#dxU#NgWd#d^PBo`G@Xw5er=dY4M9t_1%Mnm0Y$;ZC6E_WNrwXL0cs4 z49{Gyy@3TJ1eeFrI6y}LvlvhVwYnT35r!oxbk)L6o20%<0=z)4$8%UCBO?oVE98gK zBzff8A=R`5QceN9P3yrUtkKArAos|MHff1#r#F!4`^W=2mC3^jd|$%iaOdr(O=y1P z&K~fT+G;eLJ|z{%(@udcsO{$m?q&ZubgivnGEwbZZ?A{0P57Oc8BBQpj*u+_^z!D4 zA}YH%wo}>yh0Z)7@BLor=Mq|8X<4lG98c9@*kE^?h0jpaexwl!G_P_63R76WRe$7B z+!d0o3hM=wm^C-rxu$n52mOQ`CT#IFKKJ0Z3`hgbkZp_w`~+ab7=RcpEsKu_r?~%B z5ig&Ka}pFy(dJ$o&;s>oz=DEjGe~Vz#+=N2{tIIEleG1Q4?%gOf9I7Hw@5kvY92j~ z%S{qIC-Ol&6I}TZ$@){|fJ-e*Cz7Hx)`MZ=r65Ahcy?ZO!+;T|4Evtb@eKL7-|qmZ z#}bwli{2w~u)gvnj+W;BCZ~;h^IwPvZ4a~xAqXn&S9x2X5)4~HsCO6pLmhN7s_0Hf z8Z55NhS9Sg zW2LO19%@Xuf+|A-8ifY8`We5O+R{e$wlFF?ax$PM;O=(*Eu9Lk%!l;u2z|EcB~h@; zTb&5c6ls1nhynok)9rW9qwI(TjP!QPa)Q&38aiKe*j(o#gQQE*=8sw;rcR##s&ztl zK@HagdIaMFD0H*h4mNr{*m#xO0r*nqJr}>KIumF*B%t3JiU=f%fORRImjNt&LitpN z{3RVYRR8ED9;GrDbc=yFn3XH!jR&l=?Gr;-0Ao9fQk*5<#!EKrqNK*?<*{X2r z*Z+_6yeX&$`Tnx22Sc29sD3Sh&@^qR z*b>B+^Q>RIlB-d0-^^NQ9~QnZsFk^NwcZhQ`w=K_fQ!skp>lokz_Amg-xcKq*m^T> z`?~|ibv&xa8c3FA~e+V`IjPAmBlrGaxB3pZMx!W(%QLe8QOiI%APP?0C*jk8gU2U7hKKlRrfoYC zJ6J1hF#O%#Qh%8rdTB9kFd?_3|6(iSxjGlKp`fqM@`*Qk{&!pl_D9r39#WA7$iP63N^yaQ_0Y129=s;>XDLD z10mWv)p%HxT&j?kP#o4#u~Td<&|rVlP|xJZ=Lk!otHrll`{MfC;+VZ;6N^BBAwy+W%|p`KI-Y>B?Z@*6BZ7 zHlIpzAhG{DDz$Qs`Qj-QFE6h`xp{@$IeAVkapU!vsuOU%3I6CWqUj51^&M{XV?mh$M7RB{Sr(4x` zt*!;CK(3cMcwScK1L8Jrp3|Kr7s-hzeGm7HJ}=)wi}8hm#%s}?j^6-efj`kDgI!o? zAIEzB>3nJBk6qKB_L<_kDyRNkX%_GaH9Xw)DAw<W#Mu>sSYl&slrT-tiRwUyO|=uy5#eHPtNkR+e^I=MYi1s{*G~IDAcrC5Ts%lV+I( zk21`vogKT8;MRzBhmBZPRoPe2r|G7LOX78TuVuXy!zRBOy2mf*5o zX{6f`(3i=*DMoWsMC@TaW{>-R=}W7>R&;TQ2>AaDMfcj@Tzv5rRC+DoObqsmKd~CH z{w+kz%H;0lc3JIJsZN{@unZRMUo|^95@a2cOIp#!9U-BuDNtdq==$mg{i~;3b!ig& z-dzoa6uaDA#hS4n2(?om5%pkSlim}0bx8p2`o}y z0RNWo0u}R zc+`V9PVcP+;-kE{yiMEYpF^RnlQTn`aD~)QLkeMXnvynsT#U6jee9ysnnREl03e>4 zL>*N#=#^1W_czvZuG|H3O~Gr9_u}rexjAvWNXD|Kl$&e5s4Goqhk!)Ynu~yoZ?HR& z0}3WOY``z09z70n_USn(<=RvFh7z|;_wZ-WEyXEXEk{JpFyNdl1M?)JWP!Fq|Ahjn zERMhWdN_es_c5lo_|}XukI-y9Qf@`KFET9x&$nQdl0q)q$GL=KPBpx%Q-`*tjHot& zXNTP8(t*NE^h#Q1*treS>dOz3A8kx7i`;)BP5T`?we6IJb%v(-`|gQVe-Tv4RapkV z@y2SoN2@&pRx@i^J63WfsINUH|9ml-mMz8F1I zyt$0{gMsb7y@A`f(~7gg;uxiX1QAg&5X~#+pjx`ZS=|z=4H0<#)2$XHS8)%KCvYjJAa-{WV-P;<2_ zHkB3J?)oVuYru4nE;nu^Ju)tk|Jy15EvdjM!%Bp?`_{sDV=nHl?$gx}v(A%>?}Xs`Q2Fr+dH zR-Sr$r$pIle^|Lbzk`@s8zZ5cwuHE7uT@s?V zN^Pl^*0!sXgJ&jLmX(JFM7113R`%xl;cj5=2>Ar3HbC@KMnOr!t6g9bTU1#q?lGrY zj-yHD7?k(@oWtCbVvZEjRH#!deMwx`aZ)KND4Op`pGW@~C%wNx1$w#p98o@uYrA~B zQdGu=&xb7OgiW3mrPiuMo0RU1CnbOaUS*VQB=~0eqm+IV1Ga7|Ko*=_n+4fZ$&M}X zG~k&|7N*bXk2%gMy&<1zXX{?X(*X=it<9U3##QPol<++K7QwZcK5Jw-4J*8pD(*j_ z&cR4_R7vn=7tYzL03mic8c7ccw1*71MIBf1rV(s$`pr8^EJ7qH8|yitG8fiGjY7U= zU6z^&?T!T*gR(yY;s)vE^h(L_?C5Om6Su5@cQXi|`$tcYh!BYQZXKFKCs4+mJ8Q-z z(=HbSaNDVjdP7z9b@K$s#6thU-W~4_6)oUr08+hIPazPeG=Y`s6+=NtM2Z{ka|hSB zm_4}9_~bax%nsbVR&cL^)BrpTp3CBw^u^yG|1M|h1v=@>2zd9v1gVE?gmf+M$XaA2 zsANhJoS;Z9t&NL97rKje+iA{tGCERtv@tH14oBn;pU6%3oNm-iR-(Ub6-ZDLn)YM` zHUZU7&8h$F=HO0f1sI#GHgNj+w8f&>Z1h}z{<8P`olqHKQH^J!Ep20D~YaC z_eBSYl)o#{u%MDA<2uGv-3u)9rJYX=+$ygrMn*rwa_((bfj-95{WeX3t)Ige&3Kn6 zcHVwD<@MLk?)s;R8H2y)!N5R2cVXEx4SLcNu^Mw(X~X58IaQC1r(ybf%2cNFa7_j9 zp}5Ck6>hF~DMhmJ=)RJz+#OGg8?x5+45qu=L^1&y!w3+%!qwqU37sstW1VY`$(u>; zt{HKo9ZZsdqv{TA&%YeCx=0)z>Uxz!m6G{Vr=$Xe6@+F3PBmOriaOIvak!S2mileZ zlv=+qVIa~utkE9NSHx?VG=I9fp15d*0Hj|tAdq?c?o25>rml|Vweyd|RxD7PL<@pK z6azy2wzs!Myy?+*vIes4fsP9lGLeF^7InS1EE+@Na%AyiJaE~jZX$nT;p59(fqTvA z0wgCuxy7WVZr;Cjrs#E+0(8Fr3Dx7ikI>frZ(xU*&-Qg*`BVrCFA?%q!bgtw-#N@0 zN*;cg{&%M_e)ujbgn_Ifg>*q{IHq;Dv8a#{)wrF$AqAl`1uCT=Ef}LwgEX=9Y1}fX zJ0eXyyRO>oGSlCh`pOApeFv0}!)vB1Eb#4@*b<@3OFxz|^O6wFII?!g|BL9pzurjgKInCA?PaCPDMc^(4A=+!gQfI8376s0dOh;D1s@eUd% zKQ1NXlLO5>E)62fbnnTnaJmjLXYsS2X0IU5#ljRTF=JSKZ46`btPI+SDG-Oi8wD~6 zNhy84oU^3KqBF*PrPX&18}*^5@sARj++ai(vLi{;ei1vKqVCR-wLMEwBYLW$Td*gp zlScH&0KqAz)OO$I6hdYSi+SF`43fX!0urLYGsD_^Y2px+v=^j>IVTABGP>rcgh=x3!L_q&7e z7V;N?2#3PnkI`5sd~WA5@Z%C$KqeA+HbRWKM_g2txU(}GA$79Hy@k0s2@rh4Y}8#8 zvMT)f3=R}4L%O;IfrgBKP)>gQvC-+t{-KXL($fpz_)mN(-l4~(A*NA+ zI&{hX)s@P%#fGbjc212&EcGzTFwv|xKgq(ko%umNGZ9&eg}?tsXbK}6mmQE-){m}+ zCW>V!?vZ>`*{EyqXGb8ML5%V`!9I~2cVR2n z#dnP^^Vuv4Aw9~kEQW;c7&@NM$MoGK9Ny~7FSp2 z5fc+8A(_Dz>dv{o^@Dbw=5~DYh*{oV3WxU$dY*9yjxG|a$;gb|XbCC7$S8+J;&im1 z8pS2$(7tn_b&gih{H5JM2qU6YYD|8OhBFKVQyR3m3$z6y&nL&P2R}x3HVRKq(~oX` z?e;UQ)P23w%kC&eWV3Nx7u9eOZuhD+Cs1*0Lb2%=|H6xPaGdr>Jg%)6k;J0sx8!V; zphn9}lYg(J&P(nlbTv7x0r~T+tCPYZ3(6P~jXZTWOQ0P~(SxzdgvLb@Be!sJ7A0-sE-Xa9G+6uDC5K#OA9 zb+){~U6stv&9=&=%l!qcumqiiQw8~!Lmvr&9y`IE9`;4NXfi?^OB>19Y+XF1+qT7gA4Exm3?fn#o>dGT{ z?h|*SQ5Ur0^?BYP>iT{lPVcLKdvKWby(0_Fbxv5&ac-qW)Icrd@+AZd*f<{W;gnX^pZk_G&O}H@gY=sWlzHwobl*nL@O84`dyL&A3hd#rea{3@Z5^Yuq4Yx8KVW-OBin`JgPy zq<^d*bPYvg6pq*xLI>Jv;^?V|nvQmt!ERI8>DBWG`!~kc*5cF~yEpS?dMXllWgzpj ztpZk7XW~mEcm#%q;${nFgcJBJfjJ479;e^O&r2*72&3qUS-r3^;_N{A+f})ESnMyN zA6)qR$T%QMuimyrc@{`77C?o4SV4sEOD|#XWHk~j2278XsaYKx;olkbOtu!Mw{M?- zWUmeIm?W{A;oKt@n+|DEW<^;qv>#hP2m3g~%0n+Hu(E%K*{UN27nl>Q`a#}JzwY|l zQJI<+I_(bdcQQ$a7v_IH)?2b|7+3t}?AHpKq>~+~Af-6rap%Sfgo;gHl-lgcaB~~L zv3+4DPb%8(o7~pr>JpFKpZP|>=ZC+C^&V7HS!1%+g%bQdJVBguTjqF^4%1Eu1_b>4T}rOw^}5Vo_~cnt@k)oMDP}$ny?La>%7jG{aovVe{0Q92y!Ee zniQVjpiGCaj&2?h2cx1%#PzMnARdu$76Ai^n1MVx)$8hQ$bh0o{q9W=`A(utI}HKH z_Bbsd7OI*6vPDqED9_8H~UF{uKsF`4K>~ezD#9EwcRi`yk-_ z-12=Q{OG{rvI_@VU8X>Tw5gQlhNhb7Kl8A6+vok9vIbRrx8FzRBZ}YkHfSRt3?MZe z0V0b^Yk5(1FaeZ=*<6X@{U?w{%c7?vBsc%Sy4$GY;bTSmj;zo>EvN{$3MXKIkjVvx zjO>f}6*PBaD|}~qPDU$6{I(;S3hWGSAh@ar$7?%{n~M`i#n*nvvC_ETG4<(St&#Mn zwt9YPJnhgeO8@n{s54iUMrecrp#1}(lcg*^VbFmX8Dn<|xW}>9{dpC zM?>UX6{5=XrRobt6COnmxwda0Oig$LS=q1W=dD3gMKb08p?JRN2ZtFJpj73b&gbN{Im#7o2aujkhw5mb~yZ34?A-rsTD;lOChtsWFI22(; zp$NjMRT3V8yf|F$&ZGDGJtFCr(*pHV!=uj`EYOKPvO-VaAUb;i92{}%#+%~A!)F>? z`bWE#@lB7$7ec$ACWN0Oh|=4B-WmxtPdO{LNI%@%8@I8k^BBr&AG+3_?Hs&P@b)!_ zW6VQ7IoeS-4n?1b-Nq5~YRj>)-um%xnA+*Bfu}3Z zy7yrn7@iJ@{9&PCVKV|_nO7mHEyebg}IF0S~TNMEI*5|V*})Ff|vGGr_7fh47@}U zw`@N%Da%MTJI-i{C?lrxeKi=)j1>e@=bx^B&-gepSDx5`Ra1atBLjUx?Ulc#YQ#At z2zR}%)ZipeCt-Hz1coCNowJShQH}J^Mro+ACt=}{^I}fApRisX5kDRyS?ytIMmE)(ld%%GS9 zqHXY*bX&Sl^R#uCumNstK}R~EBJ#AfPMO#V3@*|Xm*#O7BG6{kF*Y_C=>CJ(iew+7 zF1IC`L=a#yHA`oUoJ2^f|Kze4eeN&w_6U#f5mv!~GRk5x$8ubpB^_5tt zUqjWm)(^Up0@wHL3@+7H*6YSa!^AI z$daFOgNsV?GwYfa;|e1Cjq+w+aACqyduMgQ$vQ#Mqj9L0Xcgy?S6wyGCL%f}&t5zP zoJT5Lwq;=;r(+2MGh`>=yab)%vREKvCK2(?)qp^4F_gaV`>Pg40v%n((us!wzu5vI zM*`YTVijx&RmgO5^3S1@L_2M14;jwfgvV6{737L2+slqRyWo`lc~-nqOqV+~$W9Vw zq@ZH+Y!LeGwt#>RjI4~z4z{RT6V?w}(N#Q-*SBVc73+)Om=Vd>m> zc84cQj}>;P6so87^I#VPHC(FxsKAW)idP|KD`trN#7q!Eu~gVF+F|SA~`i!gsj2wDRes>$jWssJu$hVDnA z>xgVeQ*O9|_p0&Yu)QYdaLh5w2+BDK`nZI=_J=P1c!mI8Gk0un3bUlr-zLkADn>zK z?OG-bco*OIFK5Bu>Y~cUqNi(wGx3PD5v>CA#>Z4L`b0t%pN+>}!88TBBR17>KmxCV z9k4OBcrnbpX+3_=KAZw3QQ0fdIjjLiJd9|_uXIA~feiF$CAuIIHTGT$_-B(Ot%ZI+ z&3R(dcHFQ_KpK8Um=iidcW#aKdhO>bG}>Y=*}Bo|8V#QUz) zXaIBESsz?Kq(_G)FeMKu>V}98FWU;80eAJ2vQl12cscpU>l4Njx;RV8rhkPeCL&_b zLUT`fOL#{yijTnE!R)=ROkn-3E_$pRLdzHTww!MJ7S`fgY z`0|Ye6~9J@Ot55Oal?x8cbvfzI}I=d)F&L@U~Of>hPdZcKaQ5gb@#FNM$Jr=3c_f` zckjmFGwuHXp?nPi{dDBwNg{N}UUM+rJ~3YJSGS}~JXrmaEa4GH-KqJ20=ogVbKRXSwmO`jKWwz0 zzZAD4b~kE*IooDkj$td*(xoN_W1K%2&>nXs+db_#f6Aw$>0CVUFhB#Q^(wb@0CQ<8 zi|cn}IqS@lRN5k$5>@bEyEQ?9tp;rQZ4nMCte@zjD2*+F>vObN4m1y z$MP~0nCuL%TV4t#!q?tGw#e^=D{hXryyki%Jqg4@1IT)Eqk^86|a#TDt>A%Dxuya!P^XB&CAx}W>_6In(2ZwQaV|{kww4_b)Y}9G-Ob1tE&Rv?^)XU;&S|g5_IxIg zlvsovMK34z;K=v6P!m0iK+&$k?=$rd(Hro*-TI{VDp@0uFAgRSekUVd9MLYNhY?9` zwH!;5MrE3T9*b6{pZlreKYcMPD34XlPTu2i$69rp5?+^Kc-`F2SL60vR{HAwZc@^I z*YCrO2AvYBu<;9P&1vzwW%!2+SJ6cQ1wGt{E)p$TqO^Z&kzi$6Ojmk3(H-BI@8K6~ zpgWXX{cHB8RO7(76h5z7!ApZG3R-BAT%vxLkASoDHNsJUzj&oyTS|7lB0rrp8+`&o zc`?aIRG6VICQ8jrhv&n;w7uV-GBPqoPs@1v$69!#c!CM}eoh+^18Gj7{~FIZUe~aM z>`5@adz*2E+5iA3uOnWqXKE@ohIvd`aQKd#s2ZJGAqa@X)T4d}Hs;THbYUg*xF{_y zf3eOtJ7l-0u~KA0>r1LPVMPL%z(JjUe6h)jcev@hD}4|G@S_ zp-_`7K|;)>So?HKST!9|r(*hrwdFx@>On1GQj%@~IYId?jlNo<1Dlfo�CWn)0D~ zEC8YI!ocWcFm;-U4{qp?BeW{NMq7c-`d5J1UFkkoV{EH7};MgfYTy`#8FN$I3*fC{24WT#94#YHGP9Zb<{ zUTZ^ly>h^@|4L%AEQeTdtlDD1@@2sBZ?N&mbumI#i|1IPPn1(Z#jvIvF2Rg#%m7NI zs^QGvAZWdapZnzJkp5!31SFb65=kQR*>3S63rb?E8a|;}P_ONEE|0}v_{Y9p@(jW3 zLM0+31mg?JBM{9JAjt*N$iVformk{!1gWPVi7p0d{p6wpKU30gHhh;q&WoX&@gy1 zoC6n9RF^Z`+v7OGgx`i<%{y2~Pgru>MKdjkKNal4+MAPMn5Ozr#02{nB!&EOnAZUiB<$NG+i}bdx`p=*cxSukVf<@E5#)diX*b&CwVP;Z7A>E|^%~WO|hPvP3_P zH=2-jg9Ryc(;{ywbA(55Fh8tTi9m~)sGyIzCSGRa``^vJ?bdZz_gHVI;W#|hkcQ?C z#}#rYu$^P6l6U>BGHN2b(+H@iuN-D&ooSB)jQmCVL3mh`Jk1s;ttofGOwxlj^vu1k zmzo54R1f?Wb797HKabsCE!J^e7hRcHs>rdW;ocv27`R?W1q5$1e)dEgcqXI8=|@%Y zDH?C~L7X628D5Y6Szb_)ZpSsE>CEuN#hxA5KH(hb0nagPQD4E|<{1?}zf9%6t0MS~ z!;1BAz&%NAjVY0G5Gwt{0R*dt%~7?wy?*Y0q+H6h=O!q5(O4ap`y8c>$hUnG(`l)4 z#I9A1JoCQPER|?wh<1nXiv1p~>iuLkfcr|6goreS_SaRuHx&^sCmrMcuqOXw26^5l zA+lPf1O!TY9XaZ6X*fhM-v}=f9O#@ z`ncVbg877hF1L4@ahCQ- zeo`V>WE2SXj`u3BPBU7#FVkEtebi=%x#~^}ez??TC=hfANY*Ja(NdwzDapR#l&vAN z8AN#9>_~v>Ee}TwB{I1vT5?Wzd*6Q;HZAk$Hy+hQLsgbEOkTzChn^xfejOkbk zWH{@@^^^W5+^(hprh9%LnJVYrE4S^kA3!l>(;0;x2~dO(fD{)Oblm=w!C}>Ft3-$< zl+s_R2FZrm$-kwP22gWM=^8QES_*k@%RVR|%8 zl{E?HiBVjbT7Q&6-BJF%DHak)rS>2tFkr_DgoD6uz z+7|5Y#2OiavTc*Q6`@Y!+Z@)C0?rn&WRr5Ms=TugkC8+l)xbF62jy!l&+ zK8LF?>*{Su+=;91*Q=;D%hTF`LoX2zowy#)PjPo^;F|-4zDG@$!b^T{T=us!M{oI1 zIM16!{>HY=3Yis`Py&KY$In|G@&zXWq@C|pRExaW&go^$O;&odDp;p2N={eF%*iBj z47p6^$5}|;OtID!9LGqOKB}k&8y%Z~B_M^V`MWi|jVwN}AdHfCnio-$Fo|coCsF(* zV>O`Hw-Cs`~F5tWAwxyQge(RN{IuF!0)+Bi^ zOtR?-=nvh8L7O^Ssu=6gk%vv>Xp3A4dc=8C zi`-I5OF>4kU6Pr7k{M*Ov>L=Wi_mm6qt<0UHYyp=80TnGNO!1LMUGf97gOITq z&qqY7ALlUyRUylro&?1@7-$RDuaMMYM+^9A_-A1@^PIHaEMjV^CWd=0Pa4N zCJ3L?nMeq##C#QW&xJX#l&QMjc|!zE6aqG(y?qm3wR8G_q4$2BH<^#tzx18Zpz%2i zbc5B<%-;iFjzs%yuDN?}q@&IwNMQWNHLlEJNA^UkMM?mE8_(qU;8=5`9ztl}YYHhm z`u-_HYk5{_gq>D;V3L!YG@G4h>{seKZI#^~w!zEou^4rzahcB1@v&O?qYRJlJ3kh) zz8tkkxiuD(u2d*L4Rc|RgeY>HuOy()i45$YYvD&Rnwy-A(W1vi^YH7ZtDCBCWIkT%TYiW8LT z;~a{7VHzqi^oz;&5A^}2xlqo~0;(V0WvQUHf2gSY%*wQPxsS(CxGcGdx4HOKCIFvwWj&!X( zpbfXthEo>Q-|`B}GawpxuqPPTW5u=TIu9{IY8`Ox9~A{|^S#Su;0pG*!R`uQ{|sTM zTx_9#==bMx#yT=HZ8?*iY%nOxH78!hXU5xv(1aGi_O0W{6I@2XH}=ehgy%8YV)WE$ zYM#JSKrx1^@HuV^o67?E)j7ViSB7KoS8(qKzZ{M(KLe&G#^y^I7B)6zEicAQoQUAy zqG}Scph)8L!tw%(53aQ0LWk@&1p7dvd$=BjkX#F*mgG$CBONu3eplfep z$tgJc#h9VZnP{WxBO0Z*hGyh!!`Io5+9x$O^6F$_BuV1AuG2{WuY2&~Ztm|)Tr}aV zIzHBmT){lBou6%@Xso(BC%?V?^_Eu_vYl%!DN!B1QIo@U>ni+8n)s}t24#(FSR2FI zKqZMewWLv#LoOgj1YK$JQq96eC$MH?G`jmlH$Ea<*aferJ~uBWHk2*F?>Z&}=rK-O zuH9;=Q;>qI&F{iT)a1=PI%f+!g!pzRHpd=Md=TDxe_L-sA9h}ZnHRaGrwHOvigfo4 zrM)eA23d3UGviC{vcI%rM^h|dCw8`|1!vdvM_wY`r`-=W5t$K#(FagKF4aJh2c9=tQ1K9oLdQ*Q6 zxX&(lPif$tP~M;Rf-`(Mi>Miomzq;?use^^~bebgybl61llNPZ%TWVXp&UloMt>15i$ua^j|G2XrQ*3d1Jv@fzw0!ZYZHj?XZYe7547?@zONW z5~RTB{3fP225x|F_K?W8_#U}xq*f%`Xds&V3pmkSVcE{@yGcX?fKzi%C_ta;G{xw zaBwiMatjld7v)e*YCV0D5#_&pavyP(ZUL)TI5G3^;4Pd@crm2Fa+t~%I1Zlwk#e%L zTxa6;@h+hEP9tDY_P*P6F=>drg_`PmE3u}$xfPLa3+wE1kT*15#v{~Izbq&|An?fy z=8sp_y%(i-k-loqepkXXLlK#naxQTb;m-ls8VnD*Fa8DgQ6E*=VTgaioz)73m%(go zSNTxMMRhMnnwrCMPt~#o%_QydWLM%Twcs&|R%tOC(%pH&e@ zsoZyB@QpBKH7D8Ydy{&QYH4iHinI+b)Jo|14XjRD?PT;8WEND)(_~=zw&}+Q=|!OK z=46Nb#`?b5ksp1BZ)K<;>ul}xh^S<6FKLr4$!3}6&K)z$;|EoQ<=No!z>D?w&2Z*T7OMbG}OUs9Qb|H#tL2t;>;n@WbPc#t)opI88S1 zRsE(NIE?HQso3cWfqW9ZZoVEw7GSgxStG11&H##H z{qt3P{k77l6G{nF+^zP4zv-t*+oz^D&+u&6d1A2GcAGx&I)daSuZ=F3osyKE7?i`g}NQJ*W9{n6yd zyCnla8oICx0*MasQfjTki-|V^dM3l$qnY1JwBdneH8oSGj4)TTsua8BGFNI~sNsNy zTRO6CW@cu5akRi`chKz$1o`{-C|+XCcTyuBj9yjgxINuHZD7bVbS6Buh;wK_g}=$5 zjYC30?f{s`7N=b(#%+3Z)5gX|R*Ojj2A!r#WzbQ5lH5|Y-W9-?X?g|OLuILwZVz95g~1=f=i~lI`?vPyXJ|qL=lL!;bil} zm4lWwr5wYk`rOTK4sZ8tfpkL3-#3OyTYK*U9cJg|6w!zO5pF6iJ<&tHb$f7e_Pabr ze%K=~?2jr6H?Jc&b6vQS0lmOMLPyYH=TSc3Z(|%#C@Zzo#s$&WD_=56qo1A9F?A$( z`nV6lj{9axZQNXo4UuoGVB3wRIae^vd#aVOT_qPYtraI%mZ-8~BJl}ZmgNO%J*T8q z^|C1}Rfb)b(1EZ&XzZe(GjJ+IObutTZZQ=6x@&xt|6si}=y5Z|a2jD`PJFO-u| zXh`6N2VJ1f$l8==t-roHp<@_P(EC>`#E+V&B}+S4+;|!qOEWjq<=Yx5a?G^<(V~Q}`A#wKE+v6>sRqPNIpYX@`sG;`=ckAf z%Z^+iJh=XaADqML+ixF@Bc+;?-8rcp?~5<*ck!-JKW12aN*ccIUW0zt<{5-5d%;8% zxGL$X-5wi)51^-PQdYU)rV z0g;pCBwCdt3Tp-iwEzzIRC@?A?LIv8=ZrG*#|j<8XOcGEP#6*2Pca?eCT7apkGMD` zf0+Ay5ts(=5@P;Rm_)J;J*GI+JFU8jju8TB*tb8d%dGJQ&+%k|(4r}--}1*F?*vR- z=&8)n+C$D6R}WvWIc34hETUH=*@qXBV!5}I*LkEhjMhO*1KQpS0zDG}%D3iv#(S*Q z`30t3+=X}#gPVDmwciPMN!EVVkpu#SrWSj`bY)M=SQN$Ovy?fP()^0aKE(m>rf4{q z35NM8X>DoN#ofxW$g&#*nn$KR;sOo^?pR_ck9bdC?b#kHAIsr*<<~$DQ`)^jzdL3T zGB;eIKSGjR@d9yrW^h%1h{chTN-Ir@C8Pvm9PFf`8kHvf%pFH;AR$yFa@#J{;ioIo z(s1z0X`bqh^!`C#>lM?Nqn%n8pWOY{#7$&&HCd`RlJIWqCV}J(L#1$ZU_qM9lrDFz zQFO0Sh^^4#TCMXyt1h0$dk+1fPj*UGpUZUkAhPr!76o@@;I*{(@|JaH%s*|ba4%j7 z_bwBXnoZ@VXeCUV;k8g@%9k$Zxr+dlR|vwLR=vCW5r5FVuSak#;bOMko2TI^XT{)~ zFwcnzVut?dopn`~tecfo7!0~?03qPw8gEJV=rDk53_<<)x`N5KAeRvz#24%3$js5; z)fFhxCdR$~CaZ<78e(<<@mhmg(YdG|He~Q}e`e*+DFk>`i#k370yas{_w--C*gdV8 zO}o1QwfgTzkEd%h-nBO%o#+Tc6`e}XFIs*Dy_=5YGXW~d`ZHNfNnznMdx~Z`R0572 zVAyE?d$hrvFmVwP$xn*@=wKT=Kf4g@|pkqEo{vQw`UNBX!UO^{}> zkSxuqMmRovdxVL+w_aetH@PBtsuV<0L|iqy@?eBTWM|NxhkrYMtYL!?a1S!mFouWi zE?0hPvRdJ@CJXX-+!@|Lh8ZtMh?GMNJctUds29}5O`*1FOP)|k&##_;xmG^GRcdCQ zA~JQZCY$$O`#pP?WE@X6xkcQjC^)ngONLT1T%m+?WH7pO)qS>z6y6yx^^6jow7op4 zB?^ioN`~;UP8roNVBX{(+O>FyWcVzSJ$;})ZXu)7+fGEIm*0MoAAJdvvUbsZLgjg> zm)P-V44DyWdn%sj@kbK%Ph{UnHTieC+OA6YFYgCT*eo-&5E;6t5XMb&zlh7kBi6ZM zJa}%h6`3-SkE0pi_Uum*#%XLfJ&3tMk)x;(tU0Ys<699yAW>viWGX1UsCJTpwKZl( zTJ5WH4AS*E_=OS@C>4pKsuf2<#+d~f z&WR|Bn^J?;S5kTIDNv9F$gZeZkbL54!=y$jmn%sC{q4BnX$KF9$Km-BgmN~ z4~R(uPp`TzJFBj){?|()H2KXWhNj01OWPVJ+cN!xR=y3Tt;hHmDMV+yY`;a4lXrv|B zF+mpHy10d;JzL50u*@9|&>B5Dy=jdL?f937NQX%)g!&58#1MD+?^HN|qUEVy`G4n1 z7Vz+*43z>2mXRP~MV+kkmkhp@f<&_8nsO;hl*0%{al_FUC>I^c*ZZy}OJN0Zs_s4$ z?#n>g`fHnS`B}V%qo$g(~T6rsyP1*)=c- z;zL%Kk@kNPg=u(9ZukaeuJ9ddmJBTp0|ilpmvvD_PzjA)ngI(_>sn}vtqwFoe zkc2_s2ZMYuvuFG1BmV=*U|Ieom^S750=56~+tv@T9G@FvA7m00U$d}>NU<>S_b^$u z-EEKt)D)&Pny#11J|e{3cdrW~y@3KwHE{*9_qQ=j*Ez~KB}79_xjd_xA`*02(uoH_ z3`$7D-JMVUSa|XYW`nzGmRJo`BHyGwe^1h_G2PO9WFy~XQ=;<{9V11N`EkihQZtu? zf#c6jX&#YEIw?fdGyX+(7JUa*t+s6nl_>Fu>4&{l*DS3R2iM#mh?0^=F(`PI`lj=rQF`GZsWlj89*sVuJzQs$|Df3 zV|Bx#bvPWpxqI{`0|+-t!tIY?B!8?I=)%OWn<7j>)W)ZMp~y2;I@}&Q-i1Judb!CC zpV7^JvppTlQZ3j`LLGz5Bk>ZZ-}Aa*O0Zxz?B~fm>_2~g2V?lMB!n^ATC$uIHVj<_ zq6IB|p?%ypaEHzIo@)lFUKk<$|Xha)J#-H z&25Im*yTE>WZ9kWr&ZRK$L~jqIDW~-(0LOk#$?r*7@Od*>G4{rqcLT5M8b|C6>Mbs zPFoDPd%ffcvHfxx5RzTZQ`+gwVSu;z=m?$53pW31KD4_xMQ}(i4E$rl$F+!TFb4R+^{EJ zf2R92G0&-W9-_Iq50Hf)8&f?=ZrlBozE`v>I$wC1rENPWk(TdXTW{?SoeE9Ty;2wX z-`pR`J^y7;?Z_nYh|m3c(}}REDCqWAT9_UV^k&WSn~%-FLnI?ZOO&=sb?W?6rz}4r0H?r8(AHlx#et&hoT}@Dj{%=K+qXM%8=~+iy`Z3o|2vAt5QN_8!X+sQQC|80atpvSDWodd zZu}*r`-p|Ju?dsW>vp>J@~I-Wqi=0J$a-Gj5}}*0%dPNOC%+*XXaFitO?NTz5GHY- zOvT3bCNHr{&9h1xcs|WLbDE$pn-A>R3*!Z`!5RY_Ck0E7hHMDvhH5l%*9mAMc@sh8 zFu=|up0W7K*!<4RF8EF^-M__W58^vX-+E`E*QHR{x*t4qt@8^6U&TwkCnPvp zS)tYwVz5=NBQ&Im+Di(abxavPbGlO8S}4)#@!D8T!NP64KiBKju8 zF6KgAN;srce7ey{!n>tK`KV{<>ySe-W<-u`)s{KS&M3csN2Q2Md@xV z_IYycVdHXlL>TApB-lHWw^y1~jSibhju6kt3;Rd;Qci^Hxet%W81zFsnd3(ppO3&Z z-o0McVp{J)r)P-EYJ9=FxO)eUPIbnU+cmju7R~pUM%M zs!T>gy|Jl}Jv~2HSTYF!I+Ki<>R1%(pTZ;MjENI3NaOtB6DsLhS>uuBloCeR2vL%$rIz+Wrt ztcz>{=VBlZ&>Fb?5lJRiKjc}t{DFgC`u^ZKz~PmSlI;*^`O?d$f-msPdS~KHgXbIz zvdi?~LHhC1eK!!D3H4HXS44>Pla69bl66Va6c=Gsqr&l{-Ge|S?=2ql^+cQu%&T9d zL;enG5?t2TMax1JWu0FCY98Dr{XsIlQGdJ8`$uy>`SkX$HW{rt7m;ESmjI@FV$+lE z1c{B}+eJJgwZV4tZp}_YhD|2f=mWUD$51b~JUHPm{F%46R{LM-CE59T^!^u--ylrc zyOMb&cZ;i7dX!Lwl{l;0paRJ0G2Hz7QAX~c{eHJGlN3g^T~nlwDolxft=H||znahO z*%g(ifl#E$We)3%hW#yn`-4v<;Fh2;WMGDS|9zGd1?Si7+RY7UfgPr-i`w~oIdBp~ zTfJ9`x7ACN1ZC`Zs>nnqI*&DHqFsuvcO%r+x2+uPur4Ms1eOG6VUg}|NS1l}myU9# z$FdPeWI6G6Ie13x<=j6;f~fj*-OxEwZbhGw81Ztm+?}*OkNGFX3YR;{%(9DE@O2n> zOlY1UABzZTJ}G`$mA{CYtd|p~G$SRAj{R**`bY*FWDNW0MT(ZFyuE`R>X-+~b)FH% zY+Ek6jYfVTMxieOpKD9m3?Ap-{=u_b zq+h+<_%|iLT~LalJ6lV;xLt?;o~=}E@#rU&mPgK7UG6TfRGBS*d|WA8iNmuLi+#2O zRU$lwQjpLneL`eM=iz1xtg5zV4C7%(JQoQMlR+1eSHzA!W8AUS4rwXVvU1x=M9>Gf zac-(!K{zur>&qKj_B`g)(+7OcXVD|dU*cAz0POt`z%)x|?7rOTyV~;om{F;shfk;t zlbfS%_kO{W|HV}_)|kww(=;7P7l-plyiy&Lto3~T4?2KB=1xdVOs}F86GcS8VewOd zTPRf`e>MQQd~v@vb@TLO&!Ni(XmQ&BJ9=FEiF9PFSRre)GFbu8ut&qi0WyQUK1dXx zh@fI-L?$JL#8!%;fSU;SkEUR7GwKy1`1N0innsQO%>J&;pt0j2m2-L#7rCgjBSE`K zL$}6~2s)n%N5edAMv#m@34S;lV;ZWz5}B~LIN59dYn2C@e3R1_^WzVA@riL z)$VPZwAz|%d{T&++ztzxj)@K4=i^@Pa`F!^BXX9zJDviX(K!rTpYo(<(zKYEiBz)W zpQL=6nL6@Hbna~%dLoQaLVPlPSybN$T7Gg;ccSrxi1o0a^i(d`on$-$dfdBVl!tpt zb9-0Gh7bAP9PemZ!sNul5Tlh7zHh$-z}MR9rvQ1C1VC#o4}`ILlK2Cdjb^2TI5(}*pf6f z#m$Njd(@`vz!j+C=hW?Xs~DZ*tni zgiQVX-MSN6I^c!{D6SH2Jp2F0drZP!#4mg*$XLiq%K#{O#Ml&_M*skS zsuH-vJ<}>=^J^L2j}0MRaj8L~wdQevK%gV5BML!FE8C4$%#YU_WCljYbVddj$b`Ze zw>A6aTK|>L+HRCr25N|`J^z9H@(F-{gbdn~vR(DUXV$qNjM+KZM{@c`390~+Q|%Dl z4}S&0eLEStR;HKXRU^&$0~;4lDQ5n2AcZ?yw4X}- z?Mnkd#^f?p#V5-LZ$1=vGrkisfWRD8H~6H4rN8MNVZ|q8xV=7US<>S{2hb$v1%cGu zqq5zIcfAVrs-vCjBA~qyV73o@x{-|FKM;G!5dAX|b$q5@O(7=7tv@%+8qcH%C+iB#Dq31n z#g54E9<0b!F7`^fIA8hPYlJOwnKxl5`dq0osPCmz@ZP%oakMT*;v9`3X%ctGzJ7?t zyEZiH^$4h~_3|n;*}hD%1V{`cL5^)c@ZMcKL5j`my|F{tyRkPlwSOz=xrp0CnSBL= z?HfJ@)^%3W>Q2!a7)+of{t+2Z{Q7@VtE^(`yM=^=w76Z7-QJE8MRrmBGXwv#{sCdn zEIQ>#f;m%3GR41xWGL)UuXcyh8$qPT7tLEfW0iIDF6L9&^3>`o+b1V7LZ0PrGQiUY zJ{ZA`@?%IY6UB(V*VX2wmJw}qXa--7);S!?RkS^>>MALCJ=}ym!IUd)(-}vVG{$~7 zVMUhfd+mS!k|s0(gP)Ra+{cZnS=wdr{0Ejp6PXJuB^Ir3G0Vw(Ls-t%{1Y1l`Ka8$ z4ff`;Z;VGBp?8Elbt(3S8FRbb!a&+e4(Od(jHQhAmuV!RV)!ZAFU!r%-75F&3E z0iwmxUF)ZCX<4AR4m6?P8P&q+>a<`desNpKjJg9*(6T3R7(f+m%D%hA4(M+FC8V<2 z~oaVAjxW-Usv0+_Wb%2_9HJ>AMaKwgEYXAd0@ zAe;m80mcE$%fC+&aQG|2}0rsZ4rwDAdVvD;k`6s&*nfciL&Ux6ZukCqVkC(@rmB7#+?g zouD8Q;4t|{t1A4DcdL9=>X9`@S11T@EabOUB}x7;ORXE=0R1wRV!1p>=YM?D zfA2^!IlP7fX}QH-KAn?j zjm9#RKhD>`6c^%oKAfA$Ft~uRv$GTM{Y22MUiTv3q3L`%=W8ARA0Sn^?O(fex~vXT z#1-O^1DoT%BZFjEwP1l!ydsWYO}K1D%gh?rOc0E1M{J1vM7q|A$C+5os6c zXm3BNZ*BGPM>ur}pY7LxgoTBDe0$iMDVE3oZNHHb1K$QDE%3Wt`rR|h%gE&SF`Js2 zc5iJF|GPB-P6U4@y;j5CAlR^|DAO2KHsH`z_)*LOoPtJ^WCnpuav%V}a8c#}$dxS) zHcn|B@B;&fgQ?!rGQA-G?`O!KmBwg&Q6KnvDWGeGrQQp(j)4a+)ulzA1=kn5#m+AER z?yr@D0VsGCI1+k1H&<0L{(~coBvQ|1_lSov!W($sVXDymqwaVp1p`H^-i?hcEqWOM zc9LajI}m{haFbdG6@}h{&NtfFZMv5Xd?yb24F5Mk_f^XtWkiwXE*3Ji3V3T#^Y#_Y zh3k9hK%Jwe%0WTUePc`D_6`Qy>3_-jeLRq>nR7rJFB$+O1i9;zgBQ%Tq|^~~kWvm} zER2XYzg9pz-UHYO>pRN9aN<`QF@xC9t3KzMetpDfyp&F7o0@Q>N$qiiR75Uau>ZYl zS-ZWHg^K^gF;w1l3l$o3`>jx@CI3=_D;N0t1DzHtwZ^rNQT*jGr5L`UwfzL3?!N(X zs5RX`%yL=>#aGLJ%d1-l9037A8k(%0f4?u~4)pKedq1JemH?`7!Px)!x(tnpbeIOP z(Ts>j#mpB3riZ38`eo&!;v=W04B}rUyVsV`MMd=UtHQ!i03;8ofB>eb(L&Vy{aJCO z!$HROntKs5yC7#!6IJY!EM}fhj$9g~mO5L5zXavuNXsr>G>4UhxDBgups3UBJUYP@ zecn4v!_N6Za252{c2@0mJxQv#2av6{=?)I0d5fi$Mg+V2Q0WVJ2O?U$#ed8DTgIDk zE3VtN>u=+aYZyxSZ%kNo|08LudX**u*Yl3Rs zKM7jkTn?L20Dj3ly6Bxu%-W5keJ&y=D;*Ob`XZ?uaZ1CY46LpCbT|%!AZWMwZ97}r z_rk4 zCG!S%+AGFB4>iv{%8Ca>Rw$AVZXkO{sJr7>=$J~pbtZv6w5#1?Y-cT5S^N#&hkQx9 zWYYMs_=J>*{(c?`N@_A{$wr1s3JS1eO&e=#Zf&I{0PZSr`wA;n@z%pCTB_VMmjDA3fkp{bAF#|IdI7_IQ%B%hiUyg z&tYIeRVLyh@QCV2)t@sX(|mpYTLWC)Ozk&XgMmuXoY`zD+1$MjkbqF5!3}H*&J60k z6&f|8l!ez%UbZXskN`<7|An3t3{@XsWk&;FW7Scmrl5cT;Ot+$y!ac6UgMU3Q|v4P z z5rZ1yw}^xK)B?kUVWFak!VI9aR6Dpe{*)QDRTG4f^RpQ3d$*X&8l5f^YH+(qHk3C_ zmE&7s#n=l5Mjywt{Q1L|QTqC#+Llwk@~Rff@`xBxE}NiC+SEFOq8{%pE>&radwE3v=pCP3#ijDgv$JhlkTU(APGd z6c}LP3nyoP{Vl3vuQoTLV^*|*o0#}I)cMP-NLzGQqiH5M$qdXEcg6Tv%^PA!53 zORgVI5G5H?2#M+gpK7@^g=auWz{vcAAK`37ps*2B*os?D4iuBfe$Vu4D(L@r+9>nhd+?y_Rgs6Sf$;YBE)M!08EcwxAA*Q~32?dqU^?{bYVsEzU0$Fj zG60;z#wgp-q$*c{IKkfK<+K&$pJ9ogQFV}s_@xYx)dbRiaZkaMtD}y7CqN_1D^`Me zhY%3>!>FP|^1$qS&4>0Yjl$QYEH>=&d7Y5Kvntf?Zzv6_{=j967czWKsmVr$5irJ1 z5A)wjMOs>ZU@`g3z@;d|)L3TXr_4|kEcsLQ%X2T*X8YmJ_p#B%tLdfUsAP22V z_l5HkYc5|vqE>wBK2R1OEVZlA#K|mXErV2;VLdD}Dz4tB{&)7I6e635RmyNunrgDY zF_GDcPwWa8){8$MHL)!txXnU;+an@vR?qK3 z<2H8Pwu}hKF_*H20t95=@?@Yd(1@|&nNO3Dii|$kQ_?CqjeKl@ymPe7S z$=@=xDqe^jRZac5n(l@a#RC&%2oU=}h{Du!!g8~Hj<3qFqpz~t6@C4}fyaVL@QPA+ zlna6c!EnE-*PX0~ELu7%s64SX%$>E7t7CX?Y300keoP{Y&3ZI^%Sso(YzZQ zlR}C9qk3uq$FYH=??4&xeAkn9kjsobfWjvaXPPbi&REi}M4?zAwK2QQ^+&~pyrTOjkMsYlghwb479S%n3 zaxc|j_Caic+(b?0tu3VsagoyZ{qMtCoPp`|Zf`Igu>E!t_Xg_t4%;uG_KhdqWezxY z?1ToX$2|7ebN}*(f`TGD+~cw->wHP?IydyIrHw&8cC@#ZCy*du$jo4y3q8T)Fj-2* zKm?+BSIexYX$%A}v?J-+@TGG4cRdRwe|_5)wO!%BN{R#8zL3AYEL$0zAfBF6>RLW1jXXZj^;HvdAv&LM(dEmCb zli^AS()n3NfXScOff1%`qrSPKdyN;p3Y3Z}2vU7C14O5gl(yGmVpLeTsPT&O^0@$; zp?kfVLK`A(PWOQHaGtZLitjG;K#q93_#7LZ5MmNN6~-*LPz7;*->(D-`W<27IcnD} zxrOf3%LvAKxAY9b4&hRgmixKzN(chz$oKN=?Da88KNmbr1{NDS3 zK;<<$?U~dzrIw5_3yO|PtJpXk;%dq<$bT*Z0q!S>VCcgMY>;b3xYQU<67@TjqiwWcd|^9f?N6V*~--(v=b4%HGDanGB7ahyN-qhH86x4V3N;` zdfoInza5sG46T1;W4)*-K&7Z1hJE=vjQrM*^f3F4*;rmUof)&#UMiW6CYko3p>y>* z`Tj;+X1V!=hLBQ5Hc4NtvQQVB>*v69b@XP@2*^+m;otEaBzz~s`EE$DHqMX+M5OwV z`$LBtCvHC*(G+sw?&#A}STPz`x z5*zzams1^GT_+~8J{t$2#`b5F0HyhAfBq~QJ32ao=-(O*@pxj?st5n@nRJK-1_q*F zVM#@%_gBW*Qn7rAB@~d2%n|>D01I0nbaTBY_jHV*_2Ku}7#tuli1f_MksR}7Rs;fyxcR+_ z{H2)I>f9daTIjMAx%n+CoJr(khWgx1yQmf~T!JfA4$ujKKtOBT1a5f33R}})~7kvAqBcLLOqQ6(BEj0ks^Z4`?UoiVOqCzscT4GU<$yh5ieBpib ztMu<=>-Xe|s%Yj`iw)>DVd}g-c;p%|HRf@u&XSU1=Hdvlol-H}1F&$_2%GJxTApn@ zeg)fD(|8ni7d1KC?yax+)%gf@)DF*sRN1)s(b?97X!I1sVLf$F%FIWbK{DCeCbBk^ zS{d|s%?{6`1xbitatp*^*F(*}^m`S{w(kybx+hfy1p@kJ{G(}B{XdM^<#t*8-x6p> zOagFmQ?l}Y@=i}r=k1ix5)&4KifEy_s={wC$o9*l2KamQe@u)SE$nZhaTV+SrpBk z6dTzlQ3aKhmWq&;2Pvb9P!`o~wI&Tpb8t)a~3CnmZubl9os z9;8xTeu3#W4qKi9?VTSGj7CA3Ef_tyc&^f@!kl+mED6u=y&RvkT4p+@)NNo8Cz2W&`* zFW!%jkJC=hTE}3z+_5;{J9c!sXT;GY%@@<|w4_|-mC~+s*@;$={1okBsL&X&)3uGB ze|$bn{?$dzKR5Vzmw9ekSyihn;o)?S$k|e&rs=B?3qSA&%E4&+n(VM~^V4sYrq8iv z7Il|pd>d+_k~aXwLOk8W^Dj;3;}-Zc6Q6%P-RI3jgr&Nx2&_qc-$6! zfq_&T#k_;|uC3b@K^Hv__%8q=!_R<%*q}Dd7yw!1gP>(;42ctA-kDtoutRZOcnh~X zp~;_=Ah|}Cq|K}(p{$ELw(h{xd<{bV!B~%G?07#eAg}$7?lAlf_KVY9KLULAJJ)}R zxu|f<9os+2*V@hlo@^#}kh)Y%Cr;6Ih2B50Y2Zr^Y5DbhI|qT+cZRT;{I>l~^>ey} zm9H-O+tUNCBm?hv&fGJJ&|oT-_cSihdN=}^gkUKPd*fLH!Z33;vyf*a46`9LFW;l{ z(iR*Y)o|*@7+KW1i!d(S&v?;3WOjLan%c?aJDV^>%kqE0LkBs6&ZWpY7Qa8r5*zPk zz+}%%s|rd|p@v^ht|J`b6c0Hr%+80Dq~@w65$kGfv7^sMZEVL^vQ9; zlY*#?NL+^oRhEEoOw5+zz&Nv_pxxr4*1cZP!@JfRsc<=-c;&?(3n#=ly9bh3ZiZRe z?S6Tb=i@VuYUKYNCZ7-h#}%lo>r$8@^8Z5wMLQ3CvZ>idTA~i3v>;s`!sD|K+6qi1 zay#va0&%`K=`Q)Td_xYur9}bH2%X?)`r?OOzktAkXm`0(a@5jnL`|s!>vZ$%O#gZX ztv$6Cdmb5MxC!t;A1ADAZ>R;!1fBlATb<#^zZ_tkLlhH}^5DUQk9cfd;~M<+Ko}ys z=IES=EN7mVa*>VNMZ^8}% zZor@1io5fG6EQT|S<*iVX~}tM#$p8G6k)OF)q!&BXrtBRW{BH+MJY<|;KFD;;-m%n zOTCUv9gv~{^9p{t;ek0fIasg`oVy!Lc&i;UgR;fsH$CqeF^R6eOSQ4m$Oj;6U`6SB zz{}ZF=8b&U=e|CH=U?W>{d31E)*spYXfy|N`*#cFd@%W|FTVhLkp;|GL+k2LTxl#d zim)BQ&Bqf}?mKr$#os$X2s(g(7AQ>K6@T72{AJsws}om5wRNwcL9gqKeYT(5Uyyk2 z7(ME*loTblT4VU8WzZfwAueyr{yED7s`-|k-|rFj&zm=>ouE*Z){DVrf;;T2Y|EZj zerHiIAG;i5CJv}~$D>h40 zd!0Y!PaLEr&?I%KZ|0h9*6f{Uwgvn=L{s1f40z!b1d%HSvE?XN$$67I#wQjXh9yi` zbK;~V8=dZADzYl!BHJ?jnkIeiwsj*k*TRn&BDBd{?H+>srex(Dh+kO~cKN7(x> z&_CTJC#FXn=4r$+Z$ZNUDj7iXFX&D@MsYz{nI=XU{MA72HzU)SAG4G!rc^;cQq#QJ1I$XZFMgc%! zVFJL&;<0|Qc+(+wXXnBtElpZj8CJ=XQ#xY8+Kl50KLyOoF%C=f-!$7AmAzQ~8IgX1-q_Zasotn;QsdA`>-#i_e zsh**sFwG(5b?2{%CCYv=#ca3?#lzAM!-07PnZ}*ZP}AjKf#tRB?`%+pY0n3_j{twM?~Y6GyV?=08#ya z*pT)+vTVIqJ2ekZ6d8dt4WZksIZd@}i&7_(1a%Is4lau%ZK3E^Bi@IcKTB-CjpjJS zmj+@`3LGMIKGJ=fp!5Y@LW@N4y|>}lS|B)c8EG9xzS%(Vy51YzO8>oeqUBTTX(+}V z^JCg>8oZL4FQ@6i!j&e8Ix>Iu_;5%nI=lwl4uRt|V-+bS8B2 z%a<=D;DC!kow~3z$dj2dqN|&4MbkQ3jEIhpOr$eWRI2OIqiVMSXJjS}!4slfQ}AqE z)d0@x;4ZLwaj0ZR14ER*li<5yc1YUnDz`!KUV)jP)a`t-L;Rlj*6w|VKX!onY+c}hFo@xa13Bu^rOev$W)WXXlaH%N51wu9{w*hxBj9ex{ zqckqxUsz%s@79OQwv z6fsS2{EhKd7$jX?0afqlc=RtjD=X{aa%I0sYH)FToZw%;x^e|nb7Ix`Bqb#U1lJ^M zRpP}tPcmV?0|Ynu@L&lTU549tTV(adG3T^lXy+j=uMT9b5^r2leox#8?rn5hG-8g1 zJa=lTA$U96Jw%NPi9Sg`v{8qV2^oO=xPm@qTH#2hZWHJdxb{wDa!3yf}N> znA@Iuu$-_I%e?m>eQY!3<;Csp{#GFd6uPvQV`Wg>jAPD&ZbIe;y!x|VU}H<8CZ{p4fLF*65e5kR-u zsyl++Y#A~Y+C0?EmbKNt+*h!R)I#YvxHX{1;%dp1wIPV(^~MGLlIkk*BB^jWFx-^J z*9t|+!DzRs4Lfz>;7FyQB0~!G_CAe>C zt5ArTUlj$?*M1$QF?X4F9XZN?Cz>uAAU;ZrwU{%$?7nnA)6JC3UVRBaFNW! zbotZ~PP@PS`CLLO;o#w_CYi|RBDrk&{^f*jQ)f^Db`qbQQzA%ZUZsOd}cllnq$^m zyT}%nuTjzCCMF2c_3VC`h{mt70IS(akPi4grsnZ5k0%Q`;hJ(bUwor4aWkEfiBKQ<|R@bD-`c4|6&@B0c#zev|M87cT%u*auYwhBEUz`^6kbP z1SEyLhg9p0jqS$xzM-~ER9YH31c~Ugmm1wi+zAkS7pF6Hj2el_U@UvR`%OmX8{4y{ zW<;KSz>^%LAu8HrwC1o;wPNkAH~Lpg8!ZfvTIR(P2*Q{QLR;7sThlJc9ct3z--pY+ zbyRZ2fB+`JAf^elL=xrq!wp;R4IrBWCu`Fb*6uDr-Q1vXZy!#Y1^pdn4>_R8$yrGMLH=g;M`@y{|UDK#{xCz@f zRnc}&X-T0bsghD=V13Dnm?Ne#A5ky5mqQBeZyRS2ONUlKcb-Q@Q?iR*%OQU~mpK;$ z{qyza{BKzGsQEbjRBf1?@nj7tAx@y+HHBq)rP0d|{X?K&m@NnZ)xYeWkSMpPED52! zz1vH7AL;Bb;#XX#zm#SLt1(S1Q_(jA%&yGF6>TYm^X#zdhSxqk=`>-m9x+ix(B^d0 z<>eG^lSg8aBlO9^|HB$w70W515z4^kFXF*Z8&pg}4>DoIKteZYjcX~5xY_Ss?)?M_ zq0bwfFQ_1pOyLutn;P~=fBcTl%2NL|$%UDHVkYMs%rH1;(UsgUTKv6e5DmC}Ncrp( znE3qDU!%~9icl%q*0szQr8FOIg?Y;BP<-N*SBw!aYcc>?SpuOc(9w?n2MUQWsG)&v zvBn^Fcv#w;4leR5fR>L0OoD|#3Oa-_6x!Au;7+Y=YBFz{XOPa?2V!Su%mi~|fn9zY zI9YCQrgIz4ajnmYgw_d{33iRGtUey8*>~5eD2ctV^f_6NAis7v!DDjKoraP7Q)^tt ze>X7iDhG~%5Q<3A^m`i(@k~S}&y!0YUx@v&u+9X}LW@7c#%BZ&1=87Hi_77b3|fwk z5352>)sjg5{y_;sR34bP4oJ`WnO2)*(mtxS;ya+RtkIL2aI!p2l{t6x3Mb=uNF3xJcQSDfW4L zdn=fwVy!Uglp&22Sn*+%ZR+CHHGGCNo7}`6sn6v|h1VCmI97c@JVZ`0$QTc5l|Oi& zuX^G!)H!XCztXy|_0?T8S@?%+%+3Ob0}du+cY1PqXptTemzD8((6iqzMPn2wSt`$p z(QvL(>eldjob|S#XeZ__>BN{<@%T3&=_AVX+8cF(M9Z+bE-u4&gMZUV(v248ugM#~ zqrn-LX?TE3N{H8K{<`IVV*`|{6TZUy`d#@1^w+CCE!+EKueL*uvjDuV`vTmGg!5o* z4fmY>_E4C4z4`9lWaqld(u5-GUL|ji2Uf=QsF7IvobsoIr1gs8pDMT5^o=K7m_fgne?Pf%-S+EzQMzxEP)G^Kds03#C_)ewf_+&abs5 zu$Vl%d|t}nDU)4cUu5Q2D)n?RtBr(=#6l>{sMqVHvserr7?{<@@*WtKB}3@b-b4)Ya8ZWB4i^^NEUz z%H?p{KL*9d(o(Z>z%->IG-x3#GO}}WRGH!yJry89ichgPxR>LDB)p~3Cj0D z|EXB}RGOQb2+;mie|-*VIf!L(S;gyT?lM^K2K`ccJ1}a5U{p=62=V6~1M-Jw2yr=l zTQuL!V3WQhy?R*^>EX8Ptswpb3jtwd>nzWiFCJo{%{v7r^E55o0~si$ks=g)dJ>sk=%)V#dBl*( zH`l$3d(fC}Zx>UMW1e?wnF2Ff9ri?ckQpEz^lQxyrCL^=4S$0Rer`h+}3 zzh^qbq_R=eo^!xg(`6|+CUl|alrotdmK#=lcA7EScge~%RNlpnB>Q8sn*im(RB~*U z$k@`@h?Q~B@Z`L~FR>I|b9k^(bR*nSWfd79f*hfedu-`iXE+r7o1znS_$cm&t&QR@ z(wt`vkl3NXs%U~!T;A!NniZZEN1vyl4JlqUpfr1Ei08=MUpX`b3RIL{A3`z8_}H&2 zoEI<%b^^RPHrArpvuJ%JiTlyt(~qr;{wCR58WxPf*1#vzbW;8j6wR%2h%2au=|dG) zbV4MuiqI_5^%>XUL&IB5z0G#j^M*($LsW_-xQLhiYkOVa^||9z2h(E(&S^gtP4hGZ ze$LIu$xly86YILAisdSqcmIFraKiOgq%p5CljCXv#`d)}xoghl6=b7W-1ayk#>>(||;d4Rll2<}Nl_T!PZ6kr7r zcNdCju$-u1?^+ds^Z`7V*Mm;Wr~CZTZ5v5b>KFsBSZ6^{m(wN0T%@1=V=;4&Z$6&I zVKsZaow9D(pQfhP1`kTX;uB5?hW)>xNzrGnqBZE?U?MlwQ|mPL)i_vs$&WP&FrJ-; z-cy8q{V#0j(Ntw7H_7$1qq(9;81~cAy{hfXB3>2UwyX9IwBufEL)tqrinb@YvtUCj zw2G-2bhkxyYlsA0)(Qu>z}LQOn*8d>n)yba<}-FoLAj#I=*Y=Ls-0{0%zyyrd#Lf} zS6ur&N0!?$9B$UNqBwGG=WUz6<%J7SCx+wbT!ta@ zm*O%I`7wowlO7(8N)^kL@{zFQFlq#4-4^L?sVRJcB2S?UKfyhJ0k^v9Y3-%sDYoj+ zF?`nmo1RXp$N;MTK1s7V?b$P{AlNZ~OJk#aa8NsC_0e?Zwq|`0&hW2n28~nN(xhy} zn>#A!;+=-=vxbc)#>2n(5Lcj+ql4fnHihEQkd;Df*nGcTUSylQtL(gLp z3i*yFeFuVq=V_RfS)mnCDdLsDfJ6half|lZ0eboYvF8f_n=t@{`=KBsD>(#dfL
LLl|} z%ayb##s);{Z-iGXDp2TZ_u(OpA77*MEQE0|!elfKc{g%FD5tx>?=380S4&qV96dr! zSshU}({yZM;k&;m7j+Nk4vtmNxGIu*fl^$9FrO_v!w!E4vw)*yTQ;{O=8F>dsAQYaGeFEB4wWDp06yu(wlwI6_<0 z2N*(ysvBBSbEP=X^+h;y(wi>qR~Gx&en$Q8ycq}*Y9l;`P<-E>EPiM;gfK3tNuw4o z)fn_mOd!0yy$w%JmO!0r34WH&)e{o~gM@^1>E%Q{XaxNC%xr8Xg39lX?(R}R+*uk& z_Xqmh;-#*~vvX8=;zliooCAKWt1BW=`8q9W(=yM5PR!#8`bvT&rzT+dlXt@&@p>`~G_{~j5Z`hbf z%#ib~{y_xv=%>BQAD45viI+l|+g0kF4{*0yH~2>6@*;_h&>J(ED_@|M$(wSqjAxP( z>;@C!d*6crlP-;S+8ET-FzgpdzV3o?(oFOm3nr7tBUSnhegrxKx%-q9vk>E+0=kws z`mSZjBso{%GL79tI8bRr<&tTbIM}EP;FreFcEM9R{5d`gha&%;-H7qR-_3NJW z%h`5_H62YU{2|XVO86XIABt-woPzm1-C(18-4=#HDfZo*^ZuSeP~YXglIpN!1!060 zF#`cF(855?OmBSbT^Xe=v~z>6{6ufDeD9Uo``05VBc5A#6@$R^Pi_TfZ(kdo8mBO)291osFG({*}q@)xVZR_#VS z9MqllN$J`+Zo)X?r|b($y}d@0+?_7enDDM4;rcUBEHpGAJtY2@x1N!y_EVShdmuTj zfww;s@)NF3tu(Y~L$pf=?h&Y6}~`L}}UY%M2{JesTW zX<}P9^xAL`%fJrylsYk6FQA&>rJUYW2><#9C-0=VIrfa;rP{?9?G?uK+s@^%g*Jgn@nBCw#3P_U(F1Fv?+e@Zv2MV#|1Hc5A z^pCF+g>Jjk*(}mf$E3nlCGX}bkfBu*w_P$D`*PkJ{i9*6LH-DRdWSHZF(Z&OVPB-S zWg0ttAC&`$p^^y!CP1ijbZs7siQy8u&5~mGq+rTVM^ZGZ9iOnC4RVFP;!J<(>Vtf62o|DRZ$;wgnyipjJgTkZdo7Ra7j}Tf0xbtc zt$3@RJbdUDP+U=lwp|HI>V0foVIs}vg|Eqs{L+OV_KskM;N|R7Z1g3J3M$>068W;{ z;6Rvu++VyuRF#yJFI{m@1kuRsM<5SaR;|O^CwzT&>|7UXZ~+F+e&IV3{}($4{?YAx z#V+%TA=*70W8K^kr6@C*Suv+wePae&epxSnB?Q8SLmEK|T;XCr5}BbDy`@^gCJ@f( zhCq>T+f__JZRwt&hR!WjqBQo$OXMv3kOb#mDIx-pep!!)5 z%uM(bLq8TMDMmC0>J~+S`S&;8(l*9{GBkh__%$@6pKV_C+xYW|F+XqljUpn#z>^fw zW~%;povP?RFw{wBtB11x-pFrz%lrh73?yY##6QrYCH7!ZCq{YoE|unU;5*tZ#+(x4 zHb_~~WjIXJXso0G&=g>=i+v_ z@ipD+r1&bX;>dc&@Ejb49wf4eXzHJgOIG4ViB&h0L`Wq$8x$!Mgq5nXTH!&D9WeH0 z`S<~-S!CMOaGaQHQj(A0(UZ*&AKb{K=})KJ4}_`uA)D!n=xbuAS0t1Ob>%$6s3~jM zvgJ127Kn^nk#SY0nMI_gmwQ9;BjlS{gbWAPeS^{)x?@EnjyKBq5>ekv&s$LR4uff; z2BvH#jrT9OSWKR@Y`;#KyM35JYUk0P29`Q~URWuBO}#A!D7XQnkqrH)+o&O8QVEhO zp7Z%TTxMFvXkk_GFb|@+y7E&zQ$Di3(ls5)G}vS3fhxT9PdoupFxU&>rbk-)6jS0A zO0H-TG0p6(^Pyd_GR=@iPj#XUo8yr>vr6*mj#Z^t=opCN60T3yH7FYP&!aGfK3kD} zJlT5EtA}7EYB`MLt&3nW!lO-`Wuv>-dkL`)7SorutvL*=+RcYC?7C-?9E;@hWtCrf z$IFS$+_(t{dR}-gi%eqNyw!*yE=`jdpk}??_?_rQx1JT|rInU9sR63w6IBkVoya)F z1d^1(lqN!AlG&vy4$dIe_|5~#Ew&!~KEXovPuusa%tJ$Q#iYuv-g~!#u!>Q4@qUoivfI;)bvv?FwD~gx5xGW$UZ3jqIy}16| zFKgJg@ePx%$R88~Lld~QH42=9;x?L_w|_jS^#7UX={q2ur6U-iFP&~n_QI)n;?D%x zBq~Iuvz&e;_C=47D5W@LSf;oxx3Vl&DRo&S^qs=u|p)BI@Ac&Lac=(zCN_I(E7z9}{ zeSjvmjjU_=3}?DJUCxA8>cuLbS41W+C85{Z z%a9}qlqQ{^x=no93W%;Q|2gF7tJ<1d@%xp6Osw4iU$pFoRQexX>N?M#oCCz6FkRe& zRnS|o2%X?EE+RgK!o6M=`m!gb%YL%~;egq5PX=Do8(Z(-Osew8uh+hp$T7+vu*)%6rviCqQykTzvK^f=czwovWc9F?&lrs=}+@pHs1osRG;Icdk4$g6i#=12fu62NQp4j!+GC)?aw7Xry+zTNM zoE&C>GQsPy$=zC;`B(e28H!MmJwuSmMD}(j5_-ImpehO#ktw?E_x{Xhc;@EWY_KAj z=?g<)lfY?ly+`qFM-6ifezAseWS6fy3=MzG&t|OuD^U0R1M0jBD3;!71%Vr4emIv; zvp;bfv5{qY%Kwb1u@Qus^*OI3(2YRba4T!$F=%9;Mh0Oh7SDd$keTdKWofS5g6lNv z4~pF#T=WIB@fF%a+y%^J!Q=>dM@vhDKE?g{!@djzk0F%$x|b%`h^;lI+ukFd
|1xh=cfv{sb3?J< zV`mME^*Wlzoc?!y_OnH_7fkn{hHBbQ!#x3Cugf+4a`UBd`fz+1|Who-$; zK0X&EWToyG!Pt@Pbu;(U^YL`ADG?`6kRaY?$A+1Zx&UM+qq>%7RmenXrcGr?C97H@ zM;uZ67o)qYPr9*80qxa{p03J}UBpmt;iB9vd^?p|0@Eiv96YdngvPzse9#P7Vk`YH zFX~ACUWq9)bd=*m@eCSu_ip^CvK2K7dkc-5#wOuYf=8hsqtO#mIMoF0Arl~0&=I4O zpVy5pym>TTPa+(I2%saC{v1?KO-)?a9=9&NPK`;>i3U7~{ouw6`K4H|#CATCs0LKJ zHsNMn{bTWkA%E%~7lVw9_>)cbKo1i&q5lepxu`7RI==koVgp}ijwPZ(b*hz?C;!`T zZ#W$yvpgCT5w(e|TCWA<+b<|RLpz*{29dpIX#u$YdV;rYX@+55NZvy0sJ%nJnnx%R zC;msn)mMM_*j<=y^WfCS8v=2D!S_o)bi{HkdXgpSxX;RFr15)k`(_$OwS|-Mo^n1% z#0TiGKgu>%V8L~&OlTm!%Qau^kePY2Ey08Clao-CLTd$^QBzk5e+x$510{)wl#NSD zLi|&Pe`))&bB?KEAq24 z`hvFQWup_2@jD3ABw6MxkMcd3Bxq7lRy|m*kO9C)vW>!^OB@H#A+KWurq8Y!pcM7iA&0j`U28T2r zy=V}#X@E1hs_4rGwMW?o^_!6u2SJIU=`Ckgh&IX$#EK6q$VeF)3)ahiQ(969%x*-y zJ;s2s(bboQ^-c(?tz!#HCq=M!)gDM+?%1O|&uHCr_M#y-$0QYK#%>MXqo&0I)PFkg z;VC*{Qx{m!FLcuvXRX}4TA^Nni)ty!{=ba0s8ci~AF3glHSAxT;MXNHV<8R7)ujS! znEZjn8!x8q9UYZNlL>D5A3V3kBF06}YlFM*u(e;uG~sK0kjf~d-(}?WEDcWN2;c!J z1m>#%&P71IT6d(0CgPai?d*4OFdSC>8IWX5Oi3AH*M(?#nOsnIFPWAZW}vRu3z03z z{Spke2VLTgZ&QkROJ8?1T`hI8-=RtB?J#)=k$F z7?X@BuZoekF^)HmE&+^-WTYMN$z?W*&RGSGf`_Mr5miJTQJ~Li#M$)v4Faf|c{zx_ zdH|&l)5)JjKc8PM%Gc;>3QQ(t0vQR^rtBDr9Bkz9W6W)9c?eK}LZyu{+?aZo)KcIc zD{ zG1;EZs)I|bJWO?Yu8^WBFbU=P6NzrMatiB`!Efser+2?AHJGSrIP}*N3d&;a_Q%t8 z;keySvGr5OojGEkZrg$i$~3A9T0kkrt;#jiqV;s_`^f5oyh=zw$wPy;GIN=>;|uvP z-K%s?V~(l8MM)4kRjL&AJKMrke3f0-eJe1A@l1N8P2xbH3JP3owVXdOMk1PQh1fja z#c^?F-S)JJ>1)1SK#V_GW3~BtpoY@X*Bz~PI+l#o(nNSF>|trVW6sFFEm)3%M0onh zXRyP3{h9#x0F=vH>+;LBb9Vz83BlnD_c1gO3psi$&5^t2?&_+aHl9qOo_*Y5bM3mK z8;1xD`DL7TiIYvGkiShzjTNfuALB9mX*Ywy#TVxX{kiyVaT-@Pz>iR?d_;d-1+i*C>M zpmi~td@f7f&vxJF0U|_J?h~x4AB{GIn-m)BBaFeJD7yJ*(G+h+l}H%i6x1lv(og!< zKNE$(vTw>NqpRtY2&Zy!sumN5#l(aFr;}CR?16!SI<+a71XgM)Dkxf7+EaE3l+&KD=XphCLR}rZi}P8 zjjKK)A|f*ji_vQFo+!R4V*m|s^JB9WSCOv_qJcH4m1KR`Loozn3LrXDY6hFiK)1|~ zp=Kt4O-a?QpKf<|8<4#O!!F)giCCfq(yEu=_CqQ&UEIjsS=115|>f|}Jzmqz-#T!|Mz#1r&+mZqeBe0p+X0A_C4 zlFY>B$=PbNvZ`vof~)>T#{=Q+?(VXiw>9IN;Qj>Ac|dnmC22rkEl?`j1C1%?Wc|7; zeS7gIHxo2-hqS9K>0f`8H8tJ@2(<^Gw$glXBDb|wMMXhb+1OT^fO34Ew}(9+!|ZE`1SQ>>JTUfy-H~XwW0eBmSu$JW7Y!QRPq<_YCJd**~2~p z3ENhe$<}-+DJej9h)@en!UZW#gD%&lyf-(UdtPA;?`~`CEkAE%8CsuRzPzjtP#AJAZp8}XnA;f zw}*)Qih49E?0jx#q#m!wm|AIMKDkZL3a~@b1I=2f7#@yb;?e_B_NUY!^nnmzr=wYl zvWklOxg>C)U*=EjfK;wo8(feoag3~WF;;D3R#5xC^$5B5s> znCTg@;Cds$Y^`<84=ThDW#pH#UvbnC*@`O`=$j<2g;db*JW05UK8zI#9fIXhVK{8& z^RV5RsW6vkizjK96Gpn1F+tMefwdn4JGY0KWY{M|bo=hXHMthO3E;!^9oAYvOiWDN zGN?+LpUP5qft`Cm!@wtad)pXrM-!@hVxO80z8VlAV)80|Ndn8A+Q}&f+Er$4h9OFB zhThG@iV;hu;yA+x3*mYlo|xAQB&7n$C_MtAYO->2CSY^mBU3r4sZbag7;YH_WlKXD z95%~0UyXqR1g8+&C;fACi4#z7w?|*jQD966FrwTV0??d&M5`5ks_v1HF$@UE0ln8T zDSi9%hv@f~dHzSKk}YL%Rz`s^QLENCuV8SQiv}Q*rNY@h09YQWfFOhg=rG??Q?VYP z|4l8#ggJ+gG9RZ6Q{4x1Jpu?MPXu%~0@^w{WTXYphys8xL`tyk?&Oqb#>-Y)a5`+LLoAq{I6Et~F(|{hI+8&6k1K>VQ3IVY| zDyYS3P37sSt%rw4?GpK}0pLK0h=^#h__(R;SB8SZ!ag@+;w94a^K)C0u>;q)JYa#W zqlAkiLxcZErpd(3peAFqm16;kg;@Q-E@U@5XZLuy1&C(gVSquL8G!IL*;!jhJU)6f zDX5X9j_$Sv>9c-xC3&~DR&8DDhx+%?YsVaMiHTqe3JUhH!=s}W914J@Q=FIgT>w(m z%@Z09P7J7rvcmZ>jLKD^loEv>*F<_(<5fwJO!|}S2fFuX5uBe*cr2BWnd7JO5x7FgnW-o!l5m*C&aEgK* z{{02vfBog&yO_FyQKeirJguUkgo!=l74d{0$1oihq~5eg)it$l>C)ItB(rfFJPRX14G1Z#^}As2%?rmaRLH z1U5N2sT&D2*X=TSH)L{reD`C={g7V&{c;NorK0g)JAtREQmJceM*vupkG+K^qN2w9*dL%_d}a7}R)IFy z|82N202lZ!Ol%0?-hVT5aanvkCOHHi2NVYfr|B=SdVw-g^>+WcD&{{u9Z|qrr_*fj z#9+AD?f>sxG9n^ipYP9r4Hw`%ZEOE~+eY;Nc?K{F0Eg<|4~@};0vR?SSd6-x|NTG3 z@y*}==^#}q6@7g~S69GJoK!mpbSa>rL4Bws6*R=epFV&7Y^wt(BU)NoO6uz7|2C-z zPpALeZ!+J$earWIf3wvAoUy=i-@G~Mriv)QHMg~mDk>sx^10rXkxyq0w(F{vegg)| zpvlrmSs4WoEG-s5r<5%Lu_Y!B(f~@bcVz{Kk&%(f#U$bXzH+&N-(QT6)6Z%Sw-YG< z{pkDH#Br}Tye^CYr@rmWy8EAjCcD+;`;#DWZ2+qj2DpJqC@B6*+;_Vf*ETl~1wg>n zI&O)&1!;Ymu15OLTW6zBJjg1mI!6)kr2sv{q`#|O12x;{3aq@^hK4>M<5mjnV+N@T zkj6uch=^!5+2TY+Mb&y-8Jk*II8SlLe9YyKAvz8M2L;Kr&a17B%ck^)U{(E?6D&Y& zqUps&^BW1Y8nGP91lbQoq8Gpot?ZaH@Du+0b=Z?vNrOJ0)RUU9os$RLNFS^B8g{qD zjEsjIQ6l|mt#APz9)3BV6o^ROAuIEkr>j)%)eF+4dLP=Rkal<) zA0Ma0LO-IuzPVZH{yNcZ^QT$Tcz6hngn?{AK=ebZO{HXJ1%DAb6)*5(e}KMRvB=%3 z>3Z8PAqR{Vh_jJww6qZu&ZcH&z;HsGr!ReRa$*6jYN5dNXkHwF`4BL!=DQDmKnk{I zy(vsqR#uA?AL3U*v4A1+ZeakO3Ir`g|LdJt;Fw`-VzP1%#Ccu~;yKiwO$MlzZ8X|o zaY4YpyWp-JL~s5RN)<=6vSUtn^@my50` z%={y1>G-VC?#lXlR)(Lz^lpe#rAVgrns&z|hmf1-KG_^d{I6?`Sg-5T8sEq`4Lph; zHoRi1nw5?kftquSWgqk(fR?y`8q%HvZejps`s59iR$p%a#`X{f zt{5>zna$ORq?48Ps_|S z0czJ_b2}10NWVyi@B-|#D7#pEo&)uSN4EN4hx0eGkFOCwBY!uRdPDjlb*ZHcu` zpUmv)(5Hz7R+jH-22z}5*p4%B5Jw4-H9XEh?1w*??XU7-nNa`{^P%YP$DTk79h9xGL8++A%JkM{O`rG`bklG9UyvarYOiEWJA_b$(c?8T$&96 ziFFO7LPii!k*EF)fGlqPy6F73_bG@}!~FdDv!XhkSMC@!LDat}iNq9rxAt)PYZ;z( z-Q2(BrxN>lt>;NCVL3k`0oAJ^c2~jAE}&+&cPEs{ceA8ogm$!Vwu-L}(b0e6d(QNc zF+2^83};At6#kFgcJ$T}96&J;19(ffx3|j&Iia`AB(3q+*VoH=bXFICx^fk?|LAj| zdr+*GQ2qV+DT9)CjqKy8cb>$h(nyHGhVtsW)TRIGb)wo8TbAB zTnFq^WhJCb5abpFBA&A~dcRWa+)ayyQvjWD)h(L`+oUsn;6Fz%j<6uoSAjP#^dgzb zz7b1ymG6~vyWSKK^}_`Jhox%_tGxT#*|y!JNs~QUPqtl?ZQD56O}1^@HEHr>npdfQwAq8DsqQjY-Nf>>2ryGgO zhD0z2ZwV*mKS*7VnXGt-EzE_18lX>g+AL<5`VgUmRZ~l3b7B!7SPxtO;2Ng?5)7eMr}2WAXFj7p zH@9M$ncu>tw|ijMKLp4rX(qdM2Cc_1iNL@t=QJOurgBeP^#_iS*V7Hd-s%#>M?GkT&ZsFN66*?e_kD zU;F2FkMG)62j~Y+bAVn@w|i1RLPDRL%gLA&Z<|b!Uua9aAlDLlq#_z|aFq=@m!84R zqKBzD=ZBA^dMZI!7K8iFMqVo*cb(@5P*66KQZhoev&smyEiG1_;9VDXd#?#a(i{3) z2cFgwy7Wxo+x@P#A)h0N+T~WYV+|_%-oiH^dy|3rdGwN!k}qe^I1+&<(4nm8tXKZA zaJ(={@_wXXS_;45Jv=spK@iq4J=y&?CM~h=3}gzndvr7^&&NaXZ>NSwv(bs4PmXC} z%ja&oVwdj%8Xn94c{h9m%W!@r4!P@p4I*{EwPggpb;h>LCDFjj3NFZHgKyo=K8}cI zpqc8cl`YT@si>frh$oqrTM}$>5!-Lm8z0L@Tsid^Dlis1UkeMKydrC@%ikI+ju31h zgzfDP%MO~sOaC6U{a2vP_m=z(g=pYFPGRond1yhIdz_^0n=m)bs znMNXUj2eJ2WYPXJaW|0)h4W$J(5$uMG+RwD&s!#`+_s``VPAYNZN!Tj&4uY)?QPl(>Wh%zCOy>S)M;{nwQR{r43a zJUachkBW8(=Pz*WtQ)xrM$MqCq5YD+IFzpkREZ;=oLJxito^y#^q0j8rFLs>1Q;vOedm;#BL?UVUezfjVd(bF7yxD#da!||sIG|g_Xz|fkWwoQ z0Fu=_C&eT7bx1sXx&yLcWC|$~lGWEX)k2!Qk8ZAIn7H0=@m4b&8ON^_IuUykiOfJh z{%ccU2twXK;D<2?SNTeYUT|S1dK0BVC=%zT!p2!Jr_@-cHmEaL=9>)P1Y}<$5{;`i-=gbuFAk+Ktl+mvP<-S z+&7SK`Wl2Ev6`D3=L!X}JA1qOs4|`p_KG}%;eLhVoJyrXodJd?|BsRn<71Nr zN68->$)@*G-cHA8&P&r7AaTIT*BN4+n3%xhbNkMb9u8<5ARy>&hNVe& zNKA)H;=GBvqXCFboS0gGxOwa2+iQheBI+szrx$NI^}3SdPl{Z%lIP zZW4v8k1PJM%ZC~&g3kf0wbnvZOan~3nHQhKR}<+J+?kLEPJE=!VWkFpBUyb(G%ZkI zt~iTA4C1i){h`f5ANdw|Clgfr1!IJtT&*?2T3T{+e9GM9?;4^2QAbRkbM0A{oRQ7# z-Vl5(;zLUufmIT8l$3)dl4MR!vaDC{qGJjcJuc$Apule2nh%h`ODoeM~waq*-FV(%0J5{ z^qpn8a@Frgv(Yl+HUzGq3O<8fUe?;B`#U;1s-fZ!%zZpeBGQaK45nPk_kSj$+P$|B z$CLK#|L_1kL$&C_!t?|31|u)_D|@|41}5wO1g?3}31@Olom)zHR0OwJCVbrL790LZ*M!B%}Br;lQ*tzs|@0p!HQF1oG zjdtg+ind-84aExbB#$^g{^j;}UYHbDp%+mOS^Tl_E}=lzCaF|~-4Y`EoXvV6QV zz`o77xVTtr$!>t?>FJKM?UkQcyfWM_3YMZbQAbihhg7c}O4z-iEQSWPUluB z3IObTupZn!C1F2IvkTUzQw$ftpSn|)%d6h7N`GRLbyF$3>As^%2auO&1z`thXtKFt zcXgHCRRDE(sT9xvX+0DX9UVeCI=Y0^OHEIe@n7P~Dj^=;PZ}(aO@`~l@bI)yc7joz zB)hb!KYr%TZcFs;@~R0`3=Qx@*$V{mmFE49D1}{7I5gV9gG?3|?3)(drLE4vWWPkWyFeDEd(!8p6K(Sqgz#FT!__KC z{Ewe!4-{k#Whzz*0`g#~MNKr3E)iGoR;UuY&iZa?|TKVv&0yCNOsH zW^IeG)k;TpSSQCX?f`1r%%Ahf8~kaC47Afp3qg0`CWZwny-&K9R#YSxy~9(I2vEvS zJ8b@C8^ahlb`oefv;&SMlvr!xlpx*Bd>5fCwQ!~-DZdNquoM-8<3zdc(|NG;h?fZ7W(peksWyCL<{09Y zY*=7a1e+lZ62h+w({{Ycp-$+i6Xxf_m(tPku2U(KD^(1a$$q*yu!z(Oil{~qjC^nr zcQlBY3U&p11FtAAr8yfnQu4PavEPM=P*etCwnH8Y?&jGcOrN)cXO#@7hSNl309C5u z$2_jVk<_Th&AG>{KZBF$D@x6PB0S1hTar5ua77X{lnm{73s%}JE+>JxjW7kWX@|wJ zRP7OvE&5_U+MBtk{O0RQVk;R*MkXqrHn`+3r{eq_dC*ErkA=ax(GvY_68)8_Oiu%= zWY2kC5qP~+SXe3fF>C$@%@2luOL4tsUBm6V{{@POU2R0p-EQIC%A?Y*AmT=$xf?Qz zM0p#}L6~=1zdINw>FT*-JU!_dtsD5<3{N8WByQE1!V#6DR2f@Fz?Xs|%C;JV)`pLO^C8l@pIR!DUKBDRXWa!zT2&v20lHkvA~kz1E-s3SWcZuzplsU5 zj#A1Kr2Z9Lnx7M)@7zrrgrPQFaj;4CcdQq{Ek(5iT?4r2#hqS18Ybd+Si+8dy8fF% zcNQ0Qjk1bAT`=hRWPfpS1=pjmO|g-lUGZUJtMC=E$bmN;9#z*NeI2;xz>J?tH4quX ze%E}&Q3Fmt=l@_QEq6noF~!0zoL2r+H$)q#fhK!XM^na#%20r40?rP5eP)k90~FYg1Vuf+(BSdv*N$v&3|Dt=MLfic3Id@$S+W}7*tT|e|DpnSukuhaig6mZ za}t71LRxP|;=B8Nec^6RcDrv7M6LvcwVmJzk<#W}N8gh606k`0H6$@VBh$5%IUweo zM(om?O-QCrp~nqO1v3kYl)PL1{pp3Tdod)Jm^wocHxFizhwE!5MeSq$jkdY<39~53 zUVXR4xQxPs6Bl-ltnP1Hiy^zculHC?P1PXTCcisKC2*=~^uTzhIK0;41 zCBN>?Y4c#oynq9jDqJ6+#(U~v#3Ed!Ml7t|8w)a#N@^V}ioNQaQ3tGt>9lMNe@$jv zknxOxipQ)7dp)GkDs0ejPMAB5=3I9A|Ai$7vYFd>;--#FXAC~(+g&%mtm`2r7+t2E zz^G2SX87K}gy%r)MnA342xvE(WzSfFBikQ< zrMd`y?;6MJDH3u?p~?dlp76B3ccZ8)1_(pgGO-`$UxLNTf3~_BJv(xx< zdhDKPsVhRbHsd{H-=hW}m^sPGrqLVS8As+`Aa}S&kh^hv0@ps}g7Yy@|1G#|=(JtipZdG{!(^me3h)_O>6q#kbRPGF#zf!qWB6PL5v_~g+UU1L6;|3T5 zICXL3gEKN9fLlLKOB{e+Kfb#@(<U3a;Wv1wUb-_w!`rCCaAoms2udm^M@&`0?E}h$Jzb6~ADmvJR<-n+b@L z{kKAMJBhFN{0E2^Q$sxt%me`X<&=oQ@wKnGyJ4|bCmqmpw@{6|!)l!obu7n_=64n5YT|oQF zUZ;KC**JXikbHHzxpGu6TP2s_4xbDL$s3&6^%^$MssrU$YJo#6zI5`dhK%Z zdc>z;5_N<|kXnzxNC06j_!+a{=zj4fOS5utO!kkdk^hE&!-t)FM}%fXJa}n8ygxU{ zD00jNozUXqRmd!-urR~_V^X;}6k0UAGDi~U!7p2HGkk6US2XEug_C{?2I$btynMAN zB1KzpBIfva@&pwRPT>=$k7C>9=2INr7k0{DZzfvL0T>C)M4#*Yuj6HW;&1lLxJ-jo zf%cB#^dy(p5=x>BANbD==EppZ3{<-s;04SAKlOus;l-pn599yq;W-~ASVACcv1w1E zJT*p($`HbhmQhls2@OkbfWMy_Q^urxSCT3n%h$D7wDg}C7BN-Da#VQ$Y>`Cv1KM7% z$Zb6K5UY;aa61Lxpr26nf2xbnKhc{XNK4nh$fYsrgn{7xIywj`Kla4Jhr)P4f*NU&V#}GuN}l6h#xnzvOWug#p9} zaR|X0{X+8pmkbepiD}Bd_qD*|TyiXH@9bariQzj5?-8;3+>ygqWXQb$uWchH5pc|a z3NTjki|E9RYA}b1 zg~R8dZVBIHQ}eHv;0HnnZ9qJB!Xr}N?0dQ8^kMuqJb-g%Gp{)loR9kJ=F2*%q=Srb zzAh^~{Ihxs15lwm_RkorL|Pg0&yY%DFw&D`roii9aj!%USQ0xDQEWR{9$Y&-GE}%{ zLqdvJdVksp#ELsne~C)9aD5g}(*boY9f)VDl(YMrF(=*vvyiGZ{XOemvPVkF-jEpS z3#(!A}iz^Ewi0{Uu5v%hphzGIu9}VOS z{UL_o2$C^YLNBnFXyBo87OmZzgFUNj-Rhl&iz&MtNF~i#m9p0y}~Yu)q4=)Kg|dHk)HKpeFrJ3 zvJZCQoZK9cr8%PV>4aLhI5f4{G?I_Zbx|^zL56&O0g-E?K(mivZYZj&irk|>s8%5N z`@9|0%h8fHYE;W0>nr40h2gKsM`(1XOIV6_#UY<7C=b7_x$T<4mqJIiNoCd4p!>1I zD=B6A&7B{`(fi)fPUs%1X%~^&DwZ~2#<^1c=2a?cJzFx2I+qJ|pZAngx~#Zttv(?n zZcB7%R8Ujf8Z-G|LGp8V55+he6EidBcLj-j#S()#tiSXg;@u0=YiTgxl+a$W4p0l$ z?!l$==g&=C0nsQR!;Z(AbI_)L_w;n)kj4sukB=`TG*oy~5mv}c8sQh(G+o=$Jjk}R z?`wfsNoZwMK1$#6ZX+_3ClDJj8rqDSJvE-*v51D0ZW`3^i*$n*E$&C+aSIL!)|8j= zjt}fuqjw3MH16!~e6a3iw})cWX)LVapfr{1;(`ao>M)9#SF^P{U8*!fX%bB+b*-vXVxn+Tp#aYh2z`C|k8iKlaNdt|O=A zd)WNbyIawt;V*3`$Mcnka-lz{wtK<@WQC<-rX)PI;OU{96xrCqr^|$oIr=efV|@-5 z?mfhGeM9EXSnHk*;k}+xMLoTsNY2~B6t6t6ux@_;9flD&k_)&4yQm;-&D1XaS0Z*- z$;6q{MgfaXQ`^7IhS5IEKPDATUR;6ND7g8Xo+)rp#=u&MIgf_x&fqXQ)mexRS+q|1|pQ0LNe_nf-)h|?46N6XJp3ofx z5e~1IMHFaA5^D_xs`Uh=q;Urwb~M{M%qWK{U00~rBoHVdua8$D#a;!(h28LrIPMJv z%Sd0RmWMW9KFPSnpQnO!rYm#*a;}@2yv=Tnu3>wxKCafAIDWi&w!AkyoUdW}`T5y+ z_Xk0*g0|xS!$lF>+uLpawiHl|kBKEdnu3;dHl5wx-H3K-43Q5*xmu$Dec>=>)ZukW zbCJ^1Y|W66Zo)c$QSJ~Cbm!QS@ZqZB^mnzD3g@eVfX3AqBQluFR~UJ{O2}^miDX2C zt?=mW0VnD3$II_8#PQDynRPkma7!JIX-8wd{!r_w8;0T9D~xU85%dL)ZX>)<-{1&n z+o*+Wl9;A}*r<7`?3xa;-|71b53C(-M0nk+C&I%7oEe{As8;zZSGYgR9D$d3f&KSQ=1;6qB)~+=uNCp4{cJ?8=Qd|0?#$ z+gt5fO=3h?p7SEheIiiugpyZy0cIS9$a%`?O=rX(m5)7+Mz-sq1HSQC>`OBY8oy~G z>F~q7K6u%*xEPf66_Tdzy@e9dYTk?Vo~R@1KP?ZL%osgvY#5nuO%X>b<-VXvnxBi< z%)27K4UX)($4-_nW2KW zpk|;OaaRi2KdNcWShJS{7IK6@IBG4+lpXoEJ&YJ}PsDF;M=2BiBtQvV8fxi)?SHsq zY8Pz$Wt!>2_1s8Lt(&4&JtQ!GKd=Zm5<{ZJLnBtZ5l7Wue~v8Rr21YM9+sh&pL2_C zA&U;BcuPsCil%*(Oe0hz7>aF71FyFn5pXq#gJ*{oi$-vN_I^5Ox~9Bkj-O`sZD@~FaXZGa0ZEH_NLnNF_q^Ut`I~K)%LeKhr32GA30u%Umdbd2cgp$00@yf4j#jz zzhW{Y>4fA0*Z+JR|5YJj4OiGZ+y%Rq^Dfk3mj2yH!3Lw`SFAXXK}IRzWFe=$i1w{T zJ0T@4G^POKp6L7U*DhTNAM9UQ8e|ShumdF24QCXkb6~-}dEgAPT8E9#ip?znQDg*y ze3xXLAzFF6(r6Vt#@D5LMkcjWT?Mz@$@wO=(QkaYZCB_h_|dy~EbBxK8;DSz^=%&q zULNOg!LPsJ)2|o*L(1kt+RVlVILu)7SahM`mV#&He^c`pr6-ag76_EJM%kO#){+}dDh)ol0oSzq*aJ-6Aw#GyWG~IvFBFPqH9yl{BjR{oy-)M;2KinN&;wjs@ zUZH$uU@3XN!A9XQ)iukH9?X6WKP2srP1B2bN`p*+8vt+DtceTvhJ0gnR%QQDx19c~ zx!}I9hHWVBG#QHW#QW%{ZIiDHWVr_?A-Xg6LrOGa8N<)i^(#0;OQHHVVsW-}LML)n zyFJ`SO*!W*LwYDN;`I{nbr0O&>>5 z<@?WpO~av$JMjby0+$V<-^KHPh$CSSnDl;+M2BC+=|sS%+87KkxZ%C`mQP8S?@NeK zTXI0AKP-seMlO1IutAPsnh*HKkhINHG3sA3H@tHw+@+G!c^U2$1>Q$%TwlwC>}%o! zrl+24kh~W=mTv+_HA0OPD6uy0LRQvj(5&tU#+YA4a|rdt6Rb+Pde)=6;e zT3FaMe(D>t6p)0F9aoV;b+oWFsu?|L)z`sEyLV@pY*^}Qx?-U+3kZ8PpdFgP{Pgf= zj{9&yEVrBzRML$BnaSZzc_2Q9Dd?E#VeH3!Cgt!s?)#@DR2qhVkSYw%p@#J}WKk^C zc=b77VPaup1t6*KN}mik<`S}7Z8A^;AJmB64f%XB@(hpS4~;f(G3VUl_*}3PcY2?` zz0C-Q_4R=tawd|?R(Hz@qH2}yazU=PG&j3e>qam~hlj&{yq+<)$Sp7ch+;A`Grzd) zsyYd2X_6o|KHosRl!AhV{hJHaSJs)}UTf3Bdo6+dk7&y1EyiEM&FjJG7pM5zA{u`W-st0ZRd&~qNxVjFaQb>$ z*xk`CfCPk$^55eRbJAZM4P4=)7ty?i zAk+Nrek#`sX5;)P?EWtHyiMJ2L2?g739K$uu68bOC{pAXBn`fmScbgmT8RkN@^IP* zUyx3y?spz2=`LA_o*KQAqB|a3)klbQr%+U!n2IPP;!zOU@n^y-Zs=fXTC7QdDWnDl zX{Jxw2x$P)=|d8=>|;L6xxW(;eq>GfOQ4u5YWR;#_`=YM>y4R0k$rCq=-&EX!xA`X z2(y7nd{>V7Ohok^mxYp9y31my#W&oh01yA1jk7m?w_gf5;@OR%vw3pS)yvTSp zpb)UbeYw*C3rTTt!+n8|^|%6FUS1oOWi3NV^J4MTltyD}6^GL0BD4Ci3u-!;eq zyOS^?DSQp|$65mm;DRN$ZBGrgfmTzu zT6jqKk@MSf0r+Y5VLTI*TP9p_wF*C1ib?kh89sLyW|SJgtl zAYkNJYqT#HZs`^0t2~7|2@K>3_yfTvS|I1_!z^RTeodwVqwV~sZzv`eC5EvsxBm;# zicKPiww;Cv?o~#}WN9#Jfz`si2io8@S!L^XNj0k|Ieu$U1~c>JIULe;O3T$!9z(wE zdvI1h{v6b8Ym*LB3~X;pP)W2dc9l*hH$KD3{$NI%@ZIX$h-EX}UWcRCp5pI#7;cL- zFsv&CdzpfFG12exva+^KA|7P!eH&;F&}uaApO}dHk^oupaUjBNcX>9_Kfo`sCZM}) zjySJy73hZKq3+HQXWX&QW<^Y}1Wj%jIS^QmBS)at|ucYk>Aa@M-eaz@a!tj%Qka+bx30wqf4}$rQOA7H-A?^Vz2aev@IfSAIB|>PUli5QR%Kp@ z?r=M^O*J)c*KoZ;LiV3IfN03ZDC?NUdDP{ei?waSiyy9|r8m_5XpAIk>EFG4&xH;L zuSMv@tXK%Kysn7VJZYzz`Y7VR0ow$a$(S8;nspRJ=r!Hgm+J9^plmAfuD+&1LTu0^La6U0BNn$)chL zZuZr2I+5WJq7~hXnxk^ySD%yG;BNF;r!dN?kj?bueyw%%m6T@glRL6DB)YJ8u8-oe z)Dt!}nUa-`XRG=M5^uJ3c9|)VHJ@&Pfu%1=iwUcW0??G+Ay){nxv2lPoEB&%#Et3P zOufm9DpfYL>Qf8eOT-7|U^fo`p@UgV^v!3ioRN_#oFs&-v>Vxn5fJ>Js zT8%G7nN<|ky!+nQAEU!@)F|Q>-K!ppa+xt;eFz)`d=pM-@gQQZbU}K%c_>*|$sS($ z@H==~K!rpt<2`%!dd=PyvCsM5pdAYo;z~_cl(x+HG`WN5Kjw?D=stp^LT}fQ|C`IK zK}2jkeh(HdXt#UvrTSkePQlRLmlP5co3I|4jHWXxi#z`8cm$AP10B)dkwzbam`;i* zn8b#Le{^vRBX~Ky{KM>Obr$q$ z`_&)-0sn)3{O%0-x<^Oxh`;!udH9t=4BOJrrCX zNc)_Vf<7u_`$qH7OFCePArMWot?zICZqg%Y%bUnen(g6DT$3j)+NzLhd^;+TzZ?ll zj9IqgQ_MAp0e-GSJGKWPw}D0x+_RNh$zQ){L9)!XkV{Zpb~$~Fc()ZoUG6cI^idUp zn4VWe5br2-Zj)dKGKU4%4@Xaa5oYQoco)|A=v%a1eE6I|U!wvw;wef|aR~QK(HceY zl1on4AYu%9f$#Z)uF}}p!(<~salhxH{NLYJcH))fW_>?0m_0zVLUlCNVhbrfyn4b< z<>P}UuQQSUg>w1>5x+6YA+Z%yb=4wRih=m}nyHT3jKx%%N(5@VwvM10^KPRnetbG} zKC(O}2_*^n?j1bxQq6XfB11k~q?ogP{)5SkfjJ2b4=lt6K$hw!u(|7>`MSCuRsUHc z|7~P(M9*8BzKC;f6Sxg50gI67l0uV>!7r`i>5@b)C-K=`U9dWSbU(>~(}y1FZR&># zp$4;RLoVgcEicP)C;QloT1Q5`umzSp!Gwz(89||kTzAM(u)|u6ceKk{$yR9r>kA#m z8n+3JFyo~h6a3ZL956~dDPsI)LsmByuLMx;5hbHRT2a|xA)`BB@;vu%x7T2oyxJd` zhK{f~ABm{wRP}1x7tXaFHC5Fe5Oo$rZ^Xg9_}lE);{pO9Ta+80&OY9OYr1u+qvXZE zAj1KPDDVSs4k3E8!ZlBfArim(JZsppNTg@VXwJO=n53*fNchEktT2LRB>N42ZF_}g z!C4;i>P56+X@Ozk5|5`9}s70rNIU?gpV>ua$Wf(g$qAm4x<6ZRol*G;lkZ~0S zd)`%jyCP1Lm4pkBjvh_Z$~I?KWKBtorQNb2jxF8x&>IXF&k!0UZg8JrrRplMsMVZh z9s4Ycs+6nO*86`j@02XvF+YilnhaYD-fY%zC~+{ENEw#na&j$%VaBz3^3a zHw-t$8)$GsUMV{CLj^z)jT~)no)kk~f@1PHmD>xN1|hHGgLVa`t9I1FcH9LdfD7S} zI$s@vs%!V1N$WAtl1e!+hGu+LfQ2JuG>r&vUH*=NsznfA^FN0`n9dHUi1vRfS36Tl z%7K|AxErP@VMb~H&b}+4C(d|N>MX)rBzIcQ*Nz-9Cv z4g_Kc;c6>PafJkVndNGb)5{RNx_W+e__z&Ew^VnGB`t@9k-w;6P#%n+6Y2ONTWWEn zg<*9}`D4n=)3pVi z=E;j%j@10BKtwO3!^>~D5@gRJn^~kHRC?Fqx%vv`+ZAh#?FUQpo~Amr8;s9Uifk1d z;RK5fu3AKg!F6PbuK}ptmrIr^r+a~)F>DE`8r8NZppy%DdjTnsY_ej&w0nGbzFuH2 zt#1msNSK(IEpk!zfVdy3k`%~y@ZGTU&YvP$LAOvKk@5Oa-;$d~pG~{cgRRK}n3<8Q33m!KW%l+BZ zk!Swstj;svsUoEal?Yr(xlqNH@L8#0lK@F9?ne-sC$c@Rj{osHQEBB7^koNf9t|}r zRrmIYVLQU{la9`iD#*ZU>rq{)$nHg#ZvFzkppoDFfrkRF^nd}Be*{d@kebXy2__^P zp;ItY<@(l`0fUh4FCN-`MFMCfXIA*atK|YfG9Yw3O4Q*nbr(!Jw=+~4_i-szVRJCM zPe*9SHS;>cC5M_7&@){S0PAsElx)j@e=6L(l^1=6J$G^Z_mO)AY0W4RIR%t*n$kCh z)-eK-Z<+ilQ?kitycP97UuAs*abRr@K0tAt!m70sf=f8h3nLDA*8MO@!$GPcdSwFH zY4-sL{P-~lc6zBJ0urh}r-N~ve{-J&8#n6Lm808GL_riJsLNnjRrdSTVcLXquK-tE ze;M5C@FEuWP<(C$n0$tXt8{t!9LJG>$qF|o zDxV)B=Il?A|OH2`xg)oR=tuJtL0RnH*YqkVJ}^eb1=<4fR4W*$Ns4 z%f6#11WQ9GlQa<%5x(iHlMC#=EvsJITNtgbFR49eiS|zr&%9GpVv0ciB=)R^sddl!_+a5$eNM@NgLG;< zARTc#NKjXn7VHvNz6Nv!6$Dz^1ecu6nm7i^lJE?{=t+y~(C_H(52*xuU&*A3`}a9j!cz4H%YQQ~w8^!d`h6=@Xn ze4m~WcH9)g#Rlzk+4JBECd?V=W}}7+^^P1Ywjqm(SKhB%luR^yn?rPGu`yhh=6-eE zQnfpP>;pJKH2#qmYYaFj%~m^N^;-RDfra}0gM(dA`L)RmjSEB_WVK^4ygQ9daJT^f zVYTtVaNQZb^V749i2%;kJdb*FcaVwS2ogS|j+;n0ZPAEh2HC3F4^xa*YRcFJP4G zQm#L%+ZN~rGaF(uOC0HF(o^t;`SR|okDed!Zj-6rXLkP8%}6Poo%vZgrX*1&B>y67 z_vM+DcFuy2kyN;2*eaUsBST-tr|ro!M}w;{+D&GHQyYmvI6_Gx3g(1vHS&V+Nx8uR5Fx?k1;!Xt|9qgfc?H)% z9v;C)`}^SqeeS>AR9M=bg5ZKgn-Ef-C~KNZ$T)F)&+|`)Tk7F1I7dewdXr@;P8EM1 z)+;s5pb3B>luPCBvu;GRN!Jp<-I*#4d^N-wJms(u}O9Bvpp=dh}8jn{j%G z_N8hOb0MZ)wKW7+3w(vQinzSuD`RXU0Df0gk6qo+`WB)9oV@6_WUL|Y&B0=3jlH=F zMNQ^RXu`$RD=8Vb;GG}o(Ze^%Mtn7H75$mo9UEpG$?fP1KX);ipLMH9@HMlE;A^*0 zD5y$qkr9>BrE{_Kxm)`|FF^#fblbZu6E3|Iyems}Y!pwllYhqlbQFBpS2-b(6(+e=}p z*Bk$gVZ9o^P~J!$rKCi0a_|l3uz>91U?cLE^>lf{D(CYY@h%J-$L)zRfA@h3b_DJ0 z{penFMqLIcQFm#l%%unG8OvKiQRcVuZ=`O#U{N)`bHi=*kezUz{qBy&Tk)%%3#49) z+x+=`lZLq!;M!t=oLvJx}G1W5Gxsqi>iX zY$ylu5Wzl$;WDIol~fgz{r^&zx-kBvU0g z-1BNEpDbd(FcSLjE~B@9p~4NX#fJz^ndgv(A z@I15C$Ycb%R6B>r##}Xy7K0La<9VL`%I4PHi<33tA8VVp9oqlay1NhyM8?M5>z^>F ze;@RXDARfp$&U8+KbQ1SeUNh&(M%5Lo2=g{*UJBtwA0{H#@^X#NvM@%&yuaK&gcm!^f(L><91wv9;2Cc>VR_!!9SD$;|ZWRH`2p8MFh0LuCwa znZ&y%VW5+e2YqA3kio?E;{(-guj3x>&A z=E(oz??E^(>8x}0HFfD2EHMZk57J`PyPW9GHdNx#j&JAe_`JJX<^N!m zb0LU+leSt;h%;$be~W#;svXFfW=-t11XmhYDH2yly{R693w-)eyv(eczh7Ss&QMe)tAsR+Co-0o{~L|h#mj~6@<{!3C^T)aD%FREE*2tGAEJ>O`dz-e$1 zOUR|D`<+J{&;$<})GQX6oBU)nq->_q@bc3>PZyq&VGedSKf-S*UY>BRU?DJUXFipjPy6$yH zFIzH=x^gq%z+?@ttd|Dg%*l98Kq~q9sx9ZNvttCQaiXgcR}CW9TS-qU<5SD}hqgU_ zVixHo2mR8P1){y0DJ=PvY~Q&K@`jcl^pZS7_iD#JD~)ZU3dWXH@ zwQuW$iHLbccxCL?%im)_))-%quNQ~ZDY%}VUQ13=(jd-%CA=ug$*rS!lx3^;qVfF| z=Nuw>Hm5(l#nWSnz(l1j7A%yncwib^7(<*%1;& zgvr8f{~Wm}3qCeaxzv5EFb~`89+zJjxUQ=^zANOaJVCUyb*kazwtfFd!!1%G59$hA zV2v9LlTRClx8Qax!)NYbb8~0?QLI1OwEM^(f8755Fg}f1idZIRntVPDTFvB7tU$@` z1ja?gB#rn0ugx?r(X$$6XqQhH!Poow!BgRVLsjx>`%eTM)sDQ1Z`>Vrsvo!;C6qllMxO}e{oY__@??x=e5fZ> zx*a{XymVJj;|B&bH(oq3AAP;hwRHbPLmAXE>com}6AOE^fepOTZoD~CKKeQrcC@w9 z!nXE&LWcWY|D?#`{5O15cv6%xgr(s=E(w&Z3Vo7!&w%MU+cINb#Q9)bMW~^ol%BMF)gTA@XxbPI+APf z2iw(Et4+IX`Kr+nGp1p|sIRvX{EuK`#qZXU^`Cy>kyq~F7n&Ns>PtV3lc`1u{~IQz zOmnd?*uwA;XIMq5dfN)Ydx^B1X5!t{<#*hy2iivLTTyrOfy})O**EZmmwkr>AUA-1 zu>WSZEbd^bsi^8|t;az6!FW(eXZ^+C=Vn-BAkX@@8C{+TAx_`H7U_T_-E?;B6I%it z92i$o;?jt1m>eZnZ=|JWM%4VL4$;sWlz2M0-=Egvig~b$p^)#%;KzA;# zVM9r8qAo|+6VDe#6&35niTr(U0DpT(M?OxfSC#SlG&OyE=;)NtZXTH-=e}LK=bLY` z%{y_faGa)t1A)$U5&yd&%75$8Llmq{z?lI;Sy>0u4?XVBccFXNN`K)TUr*c?A7H?R zYx%MX#nzT!>SWp~9=dWZE3Da_a9z!7zYPL7gvLh<8_i;do;-n_&_|q7QgZtd6#{AA zKpZMlaM9WPIUC~D2N#}eucP!n^?9~;=KHRqBVK%H=ZLeY9(w%i9fKrhH7@ris>G`32Y>GG%kyhj>aJiSz~rXevEZ zpL+w@7i3@Rw63A=1aX=#&s9w~hkICIuT{yyv}emb+|S0eUn0l6;67}r<%wl&T?E(< zI9>!t>wW8K#%LWcKAdm1gdk5DYc0CNRQ0+V9FToPWHLx|(KW|xdsC!Pclby@QMtNh z`;+R2VpQ@9tv9!#W`BC!nn|SnT-2@{>CasoDR_6Vo@RZ1F=dm@<6)UhH(dCr-TlS5 zS>W40Kn52sX)o@QkH^pB{2$LXHPQFncVFq^>Aumw4)_M%a6T%4w_@DwH^_L34ErgS z;ee%Wk*6CNkFW=;`_5L-4DAE7&aPXn#ZJoyGxDzZ+rG4fuv8&1(Vq3>!lD-UhYi!QBKMT}!@)v3*3P5xcmt#XW+CS% zT&upE?Cu;${TlEYh0X2FnPhoq$YKnRQ{`rToenx{eJ6DOl-%NQJyimS`g%c3YFsPO z5nBx;;jLoARK?--oqhq)qSNk1EjNW(b?;APCBxy1M?yveS-i;l0cgw(a-5+;&NEJK z!z3*NZs(ehC6+qUGBQEY(TLuVX?6d{*E2eGoUI%54*UtW>prKi+fB+UfW%lGqWJVwuuVG;h+?>N zx_-&d&a|aJm{#%RfCN7_KH0&>Ab|xJ5AbvM`f5M4xwt|Oj=ohLP0}8JExTq z9PBzE94plt%O&sa7UcYmU#i2_j+^A?@>8O!W*A~U4+F?Kk@yO;)#_*B{Cq@LC7F6w zBLBZWd?_Ug9T_|@>JrfrPwZN8TkuTowUb5qa;$&)ChCyG1oLZgwKO;uQ{$08%pQa?}h56irJlgVDWFANMe z4WBBCrfCop`*$@EKb=s}ZVr;*i$yiy@6)WZGV|h~b z`vNcng?~7zMgq!*@~$qSRq93N|6s9-`C#xA>MdZd;WYSH%>fiIv>uQUJ%WEhTQ{IhjfB=t@4zUgw@SgsM z;9lIe;3fz7B3&bd?xq!)g3xeDHb}GZZZVyso{(|cEfk@`dmcFlZHB(BhVVGr9&*KH zE7h|7DRD6cN*^8%3kkQ?HR4T6Q|p1v3JCgGj&}8EDu<{rAFxZc_SBU)Wkc%^7K()$ zAcw{3IcT}r99uNlw%+Wk=U>bbxl<4t=`vi(UKZGzBenlws)>*f4IYNa zRztYZn7Y~BReYXw1_N(7_FE3ZeHG;`OoJe8dpfi7(REPw@p03f#KX}s5HN18`e#-d zbjJe_#r~C*th0iDoQ2gGhYyIUA_OB-p zJt*M5UEZOG5a4yh!?R{`#8=CN3{?)E;E{4aDrsRvHrng+&?PD5t_%B($Jf^e+w2j2 zeYrK|2Z#JC?<0&h`hE!5TjmS8VItxy$zAt7%3f=X=Etb9+wARDP>LC;vw>Q1L$pXM zNNBCi!v~@C z;--@L3Mu=OC)T_j zcbM}(Yq>GKpu@|7r$uHcF!l4xmP`@Z=?Uga*~0U@Vz$Rke(Omx$^`f%OWK-3Fbg*v z%KZ>WOT|DRNZnDU?-*Or@~y0KVv~9mAvxZ1t;Ol`{{Da%-2HqF-p9uW$coS&&#Ngb z_e5hcw9pv>v`5d^M^laraLae%FT0u(a7GfL02cI%Hp*7Sru;A|&vr9@yRTIlTc$(MxS^4B1^< zW-HwR!r4A?h>(<>jtp*pRENd5EeLbCiB!tFf({)RF7L+aj;zeU@%}c&S9S|H!w4EJ zM#T6=7a6g;!QCFOC90jw5~PJEdmS*W_V_p0{~#a*vi6EMFOL1@;G*WZlZ-kcF4^Z~ z?=tw;>~%@_grK~*)tZ;@owO_@5#Y1O51uwi&eTKG!Y4X!(0)U>u5oJd!7Q^^U+ z-xWnVNZDo>t@T)Yr2oR=mS(FAq*wG6=C!*jSalD1#nIXKL^r=LZ& zUhFgBT9}QL4Q%-!)-v4lFytTYxY(}$uaPsCIsi%Z#^3q%!`;!t6m_IPyC zI5&6~442+-iWdAF=<^MIZO7v#&M;b=3i%`XJ<29YN9BggjDUfT&d3EK2`CK8KZS2_aqH-LefU)TqIjX&M&V33iSSsOIjCpJ2W{lq`BdIu!1Pj4pffUGq+ zJ3GcTy)5qQr24rEsSqillKpet8Gsn;85#<=TTIEw7&-8v5QmKN*OR}x65+1MWg*;* z#f_}J=c@TLZ+-!i`z72RanhUZf%+|LvT4=%E|JjrKj_hG`e?^&_E@`aIASGaSvD)U zwk$A9UX!`&py@4d8;u>Aa#4DAxPtd57F<3wNE&<>oFgPPmd3y~7UZOa`lT3WCogbS z5?Io$0R>NhkRVk;OghGlRK|qC>Nd|}*)`1qhc;usDdveAC4Ffm;K@_b=B%QQY#@oi z22JL2K)uN%x1lTD6A82YM9 z1y0Bl0phn13u_Y0=+ockH$K%C!`O}jqPDy8Oeg|WY^j~zZjYp1jsBGRrrTC~Xv9g(byPWOK9yrD z(Ip}ODWs#!5VhP@6y!Q6>n|rV8+&*Ig@mCb zcjis2wCaEwyyNS{oo4t^XUXMAHQ~B&R>FoKXIZWd@OVw14JtrFf#;@B(UMGy1@mH6 z8RzoG5qc5ab~$AdbC4($8ACVuH}&FpFl7cYnaAA?+WvLs zw!FH35U2#)>4+MMZg=3SHz|K?Mj5rV=Y$UCs3D1HOj4d<$>=nas|yAAv1++Vw*H_g zd9vT2IkJL{MhTd=dy!CBWX|KWQH+54L-e{vn5Z|u!dbc5xSmwsjGH*vO?*u+T5Kx* z20gGXDlJcI)Z}IEx9%61*nTwGvt8P!I3gdL}kY797Eb&#FZw=$bj zhz}o6PX;UyHYCgGk8@?)=O`qJ&ihb_+RN8Hr5xP=NVJXG5n09IZ;&+GF4Yj7-8zBi z?x62Nk69OIQTeX0u?9kzEA)2k&8!GEVP(xW+#!1yz9oCS<{hvVy?|4YxhfMA& zMer9cy5rE)+C|vVbpwN!a4Dh8#OpUH$CvqV%-c-;e-;@3L8`i#>aF+?>b?D7rE$|x zNyI5n97$)D%=;;xKX?y;LGckqLY#{nvC!g$%eh#D2cFWlXT;yhJ+~jX^;(Rvhp(mQ zYh}U{+Zb9XqqKzLc@MFG%K~pAe59|@XrP`ERMg{I+7dhX8X~uSya9P{(z4;W!)6*@ zEE;f3*m4g|jzTn008Oxsqq5Ac7(l2iJpY6D(Fale(#PRIHS)jep zVKPBh6mnip%dhxizmb`mOoRli&&!*D^JbW75!&vQk0{Xz1ZC z;b~GWQLits7luyP&0DgNuFQa}7dlsEaN=FmhF0!4!i`44r_N5Vt-y*A7M##u87FYp^e6PZA3oyj*$L>R?^y*w$A zh%+A1#_<2tBf1!Dvt5gh=6W?%OLu^S^ zUYSnyGlObjyFx>t1wWm)@cnMHeS5N;*kZtIy&0v+tLfBdNZKj<7k`!_(a2-?hx>&B z)WUszVF;~sh5(xRY)4Bnq?$<0%N?Cu05T~{3oI!Xf}>5V&s$lube0rNqO<0DTnp+u z!e_-K0av27zP4`dN=0P#-}6Xa?qd|#GS`Z#;7cnjb;7RzQ`Uy#QZ^Cn@OQLm%(e3f zth1WBkFxe!6ip>~9Q9s65$*BvKp!GhE?iJ_IX~mL)m9_L3FAp!=Ok<^JfHm945yp zX-4h3P^6AzFu)_BF4gFE@&(`o*W1m&n=e#opO$|9moWDxax4420|+`0@z_F%o~42_ ze1T2=cXk*9gY|GFrMEbEgKo&hU;TgF0ud^nZv*=;yKoyEK^xC61dI$Bn63Gy>dp_8#G?a_45LahaZ;sm6ROb=l^;5v8Q0klTJl}Q5#m-uDyW^oQ z1ic(T_&)6@v&s8Z#M8*ew0*agG+h}Hz4&8OoEG<^oUQkXLyn#gar1)RV3hD%0jnuQ z&f1ED3PoAfWF6D$p)VyhbzKnL%x?`jIfU6_g?>N|(`rE#j!YEI?{Qu;-y#F3e*ia; zyn+G}K>rSHXei>>0H%zE9=9OxS0aEPU#QRho%&HnUw=}6Tpii!4;S|U4b6MsxJI7H zRNrGOR}ourl{>ARo@nwq~h(#;cz@mfN+@j4w!D7Ao@k5Mv4 zDnR3vxrS9|p#8jcfN|OW3dZff5-8_mvIJH^%8ag*mm;=N!Tj7ge+|KidB=yAI!t=$ zNej9L05a$>A0da1HU?mzR6>?VHO-ZiM##U6C)XMiuz%;>fN?uQ9!Id%CcFOTP5&4` zuhBC)3J<{GSvWb(LXeBn8Ag2!W-qtZhYX`oGpI5*<*C_Tp`K_%yz(vhtaccnZy&*FoaHdent($K++pog`j!)Yj zjH^ws>Ar6&%BtTJ(sYZG3L^I);-J3$S||kj(e)*f=4(eOnE!`uPyEAs@A;EYQo&*T zuak|yTD~|;fD?aN6lb_y{PiT_^OsF(& z%p#=Hnxu&^(EV2dN+M0Esj15aG|S7&r_iu}?~MM_iPFGHZh3e^9{Aolb-=42Ep2G9 zsJ>S?+}8)e%gdXnk~m!FLXdA^)hD>h*8Gsu`wJ_3>AuzF5SY>MY|@(rFb-RP|H5k@ zw3k%8g4k3WLp+;*?9@DFz@j@}w@8&;J^6BV_LQppSPIyKke88(@@cY55+kA9BrN!! z2dw)c)n|K8mcEMtGVXRnwle%_59h$2<=}gkIgy3>ky?ofOTRZF;~2w}GkGgu+#{N> z*9-UxfrW0c;QPpa$Y`N?YP1U2yMwE%nOE)Mo+@d0b!8O2uM;}ny(pZ4waga-Fs_@@ z1I&y>onI*^pv|XpCltFGfgV6)RFu)G!^Jy@Iv)GK>LQ)hc{duTfK99>1&~scj;65c zTJ#4FM1|%wRJEHQ6o)1HvaLSlC^F2X7ow&CGE5?42CkW{1+!$q)adD=Vsi zBtB4&1mE*#Y1)=dd7tr`G~$aZ+q1k=VbCISMSaC@O;!>BFo?@xiR#0iwpOIqV2Sq9 zu4umk7^iB3U}q5S(+&KCfS0v@xZ*n<;Cu%HnMYunX31*i!2*cE^Y}e;@GJbIOMlmk z38~&I3|6nE^gtJW+QYaPqu}MuJX@#71T6;?DMT9q{Hd7l_I7}F1AshN)AhG3luIcx zcJcUSD)5RhHAr7(GD6n*O8+!r0S*s**qUiRp3S?`PwIFprES~I6%O?{q!P4_+iYh_~r`d z5f4S)9O)y95H)t4H9 z6Nxlsv-Q+;*Vn6w{`u|cFz??K1tG6<=o`4%)sr&ELb!hbY=*)SD4;NS3TX#+}M1wrilDp3(i?ulBL@HfRB4Dd-PK?%^VyRSiar&|(XYWS2@nkZmiHDf znCC@avOAPbK!uG(y1nvA_vx>&E%6N&S7#?uGcqiBcWQ9zCn`q8zBeqJ+6yU?$Ofc* zYJ%Nv0q> zYBcA5$nE-F-1vZ7h6R)tn0Ddy1Rsk+<(VFlhhlq!PZVO$sUb^m8}7P~e$4lsPXtUP zaurv+>|>wtqj`d~zuqM3zyCZsGGjB0QS`6rj#i!~maY6pc% zpIxr8C^E4_Ti}52C`Wte^XGy{1mqZKuglGypvTkn<_9kRN7-{(z@3NlPm5gg6LW9t z`iwAE_z9z}ix*KgT!*rj?nU?0xCw~Qx+Yf$wX@3`GWt1d4dauAA?e>U9aZHKLZ}m* zM(e2CrIOPR8SB8YDJy!FI34qb=Km^zfWNz%KiNGFa}yuPiao$B+583^c3VSn1Zx!P z;-HY~ofRwSSY1wJZ|gheeK~T6trarE$FeAvY2R(psyX11%VEUsg!=5q1Kash?vmiH z>x+kQ`{v8j=E@%YR8xDzJ=@YNk`$cE8GCCD^*U%a0;hE0+N=4md7?lPEovYi9Ov}X z7L;`1gXO_oEIQPK53@FbLu>$lpU2pfc$GGNb^vvFRg_`KOYWX4@wpDpdy-3e`%89g z+o$l4dzdy}{65PVsDZqI7P{%MxTcn@;ewc_SZR zVS)YPt(vHL(E;7>1&pfGHjf8+ zOZsR{Pk@`QR@oV!!nn?A^58sfzz(qjS_@&8mX*N+fu_DnDy(+tgrjt_I&8o7|Gpf` zBQaTF!=aUCU|Y4=x40@`cg5Zie1^VxmCAUxBcYX}6Dv4=YFeyNk_B@840q@P+E!fO z1B<`o@xRe0nVzK%GFCYV#wWjuHLa`azX&Ggr42UG03jH_Kh&fk0~eEgd3hnob9ci# zK+TcMsjZt7vGm*H^2oM_{ac?0H5Fa$<)#Zdio-!uIe*apvJ#r>5#i)V1Ef^Bf=+e}jGu^}-3iq-!+>c5#O9)RDODlfdRpQ&=&v z%?dwooB+nF6ntrT;{*je_u*PtZ;SBnF0*vf4206R6NKMO+a}4OW18(&hl*)<066Lk zE)^NJDLE%O%BVguPlG2BvcFU0Qzv67UkNILOA>lg*c>d5(;mgalNl`P)+&5Ns9JSO zLm5*W;%N}mIwl!9ZckmF{Y|hek?aeoJO-FmwyH5L;>OE-t8manCytx*9Zl7+DLJT! zdm=tFhujh$?89#oKh39O4(+HEj77BGh&0aSZZ^(sj%Z4Tn@PK8`IX-G^NhoW^$g&D z|KshnpL8TmJF@^{Gkm-@F;y~DFS<;g+dDoudi;^wRYcaVUY>4ulvQdPNCW>Ts?}n8 zc(mpRFs6&vg#6jV?W^CPFgZ|(Fk(PgkLkj-AFGf&-NqPAlN*tVmy@2o^2v%XyYJmE zwI34~HU53pId7{NN+xnEqwq?2JClSx@x1M*dDReh7+!nNg5jG<2s|&N4m|G`a1VUu z6I>KQ9xjOk`%&DTjxJ|RrGtBM1fnS{--8^4?;YHKWw~w#=BBf7h zw>5!tr1bB65!tNJ{5zI#M;BAn?+d%&Hk{31u5p^|Zt0juz{5kT+>7t{qzs(BII>0U ze;TaCYLW*yz;-;~?(YQnbAljYNl_b4SE|&uWJG1dpU&hHq+&gI3ad8zei|@Qv|syE z-E_nvqF~{{M|MpK1neR+Rb7hkb!y5qvenX(^b#CATYF~_tB5IiB}QY>nw zr9>4j-U_rb&XY9X|13Ow2`N|*v27%0$87eX?)m#hrtA}y?NA?FO-xLD`r*ZnMUx`s=fppyBBH!j{d(Qq!drob2xoR`}0SOJ?W%gkpk{hCuFwPb&ZYCuImSsIcJ09teGfW54Lds17p9W5aweS&a7T2;I4qbVoljqB*0zQYu@PRZGyAQqGp0+e zjoatHZFvB<>21Jy1vIz%^Ma=ick8EwLI4BXgZwNl9o;_z8jt@g&kND)55QC6gfO;p zJl)7)wE5swhpy)2J^v-=!vqI_>wOI^k~#x6tWV?JH2r4A#>S+B9S1Q5Zy6tQX>y;v zsTE;DYtOEBhkpR-LV$He>XFjyusPYZuYtMEWr4eDk1sUG$f1&zh@4agy_Oyy(HiCZ z7MD&FlMEN|Sqf9*>{YB5`?O?Lyf&yEl?aD~zPOm>?=sf4)jJ#ly&>_g=#(958((?H z-1jynBNs+i{H=9Uh#gQ47A{&z|Y5iH5^x?KVFxR|*r zalUnQSDt)WWh45-*O8DiKh07Kg3Kr{R0e|nIIoQ=n>QC^6&dP2McuH)uJV@peMI}S zmiV3%w2{$oL1}S9tq$X8q{kyFYrOA~ZxiKD%scj=l(SC-I;j|HkuBe7oL-K^1%CNX zobin4Xo>&$;#A{Yw9y&k)1EoC`8Vj~Lof6~TUa2DDKxkijf2BFJfS>F)*01hAI83_ zI}-gzF3U6y#nUsiC*x*9`PV86AyN2e?B&bn7f`UnKe5bRX{&4pS^?O(!kqK=58e8LetJW<^9IGTdJ zVla}Skcj@Wa!Mj&J2UAnKUk0Eoc_2894EjXW4^p8y0or^39nvYQwjeUKcs&vs>Cg1KJT;YpoK@Ixbw9}+HLnal>&3RDo5Gi$ zS{d<)kX!%veik+0M2H=Q1`V|kc~yvS3;r6_{}GX?QfQ3v z0^w2+C-fA;443CfwCNs^CGQH;ucE`tvs@qLumslW8c52Dg$$ z+zS=~q*(J+z&^UgDr}j`T6>tBmKLr|8>;B=HFoJwTmNNe*Lu7sii5O_3>hmc8eq{} zW1qOW+!mJyBy;fa@M{!-#kItQ!}k$xdBiL=oDqdtAQ#&`Q7!$T(-JFbI5?@xM%Zzf z7hEwWJ#hFYCY^@J&VJd07j4N{TyUW9V!kg&X11@Hn3PNiKLst^yVgmwbbm0BeFZQ? zYR>M1b6OHH2*uWw5#$8F)SfL+V`EXQ3*)y+_!i{>(~@+4SCf;q8dwi}H~^jQBTD?M zNk$%lP#g0T33aDkPlNvV9GjP#GX~}qnQWu$?ds`HITM5~#IDVcSOlE<{24!p`uHKy z#<&HQ^Ty7l*LlGdb}5n&m5Z&jP2JVkt%vJBb_H}tO_$aU-FBj2n-~5)VRDp>Nf0ov zR|MgR4x3&JZ~q|`Cf|Mrq_~5CV)#GKn|VIKNBtuV!7q@ErFd$C!Yc4DxBw9hHFi*V~uC$=v;1X(@ z@;VRLfIlfX(%1;zIR1R_m++hNxO@G+Xvro=$JL3lW!aoiHd@SBlJ^@=yuS}Y7=2U5 z<0h=*QJEH&>93Lap)-Sfavl|wbsE=*rYc5RwH;LF9VT=&`krr#VK2=j#+Ojyqeu8g zXvrPKWOK79O7>wC&4Eu4z6!Bxx5Bss7sFS=#08PRrA57A64p8h*Y7B{o+g+cBcxTy zuS^wK54r~(&wuGN(Yq#5M%tk?>=l& zLjsHLa@`T0?4duA@cUE_H2bFB5c;f=KjMC%OUvcqr=op1aebB0x?qqD?5A9ix8EC{ zd)9W`3+D5#XQ3lCA z5lxuFWJD<2jTnX(3Nkx(n2XbFs5^Wda$`}@e}RxJtHrUrE|af90~QZkGw+Tm*F|Jh z=ptIncR5qz{hFr4h&GJeXxIH0JGaUGk-sUKQ^cw-z8Ialx{b~vipr3&i4*TWD@mcI zel|}*i5T28xo%HJrZX0$e{J3rH;=;Y3;qn1=ht^0F_WdY#j}9!tQ#Sn+rVTSPDg(1 zOxQk-(C3S`likl~K+NHD8(#T?{)JC$V-4P~MC*&53#UhSg^W57OE%#mBiDqY!@?Qw zz9o(=kM`s=djVVnA58XVcajwjgx3h8&O5!fW8~wW5fL`RrxD!&LN^x12akR4;NqZS zjEx}z;rrme7~3M|(f_aZ`ZkDTFt@~%m46*k!B~>G49X&`w@aR3l-V&v_tns-++fN2 zJwK1t)zy^&0E1ujq2Oya*1REBv6+Ua-VU~X4)Gof4&`6B1TX^PKX8Y;HUn!;gfxOQ z)zs7o1-&r|xb1!Iw^F@@hz-!Z1>5_J^YDtG#c)+`U;{cD5#P{pu;y_NfDO=JwT-s0j+#R+s&f)9c=DhWM>PB6&b3_&~vX*%xA)+ds@Gi^M( zz^oPDi#|9(vg~Ciu=qs@X4mEOY?Dp;yTSa`?Z~G22^Pa`UU<=S9GKKlNUx3$cYgI) zH|@+3j;@5iZmtyJ7uQo>LyNrFy%ZYAAvM0yh%0`G61a=YeXIWnWB$R76fP?eDL3on zu>VECo09H;j(+m<7f^l$Gpvz}*`7q~8YzmdFiqII@OW5Eb}?mX@3)W~bdqREWZXJi z(z)^~ZnMm8O)FAEnGum_nozAFI6onLU1r0~ivT<+Vc|H+pijkideK4O+C}9wv2?ha z9A8c;#-Dnzf6Bz+5L3A!zka#s@vD{}$+#WrdC18xmKG8R9Rrl?*WC@}y_m#3FLa^B zYpQ?&tBEJeSgpjchDh{Mooo?_TKc+qasfI{t*MMqr%jZQF1823&t9Gl_YS&3G-7#J z2D|myCztb;Zk~sW;K@1JI}lK(ZGkWC9y_P^wk;Kp;07D|F;mRdgC!Q&{k_p^aHtgf z2hgEV9KunoGGRw|FWQt?UyYAGBxhqNKxSY-PUL3kZDcPngK_q2O=Z;6Sp3FX0&}K&u&JnXBZ!lB! zUNg^*?~e46zFbHlhy3}@Nn?MP3O8r|p6>2#UQ$6CS|0`%oZe!#BDIAqqBH zI~nN)=Y*(ct~21$m~CPf!W<`JJ&I{{JgL@eLK_<6rY04)rCgq{$#`aKPd$@ zb4j{Cu_QLbE}q8AT%ZBmvLeEZ__w&F$fWlX5;~-C$PAmV?B0|*1 zJ#lFv7bSiae5L8n@6a}ALHq`#KY;biv!$OvV*EH6U|A(_!xUb;e4C!gdKoJ84b^8H zjC4cT;&K8TvVVnf`7+rzzyhUbP?8Ak5jL!R_45aZm8;QcwCrT!jRN)Y#l|b|F(M z1A#8YDdXjW@fOz*ghh2NGsA+*ODyOk=MB;wTpg6U) zS4*Zi0yhEfhsiRb6aC$)CoQE5>{%AzxZC42$Smi}z%H^%=oF7;7c`)vy^6*4CFPVIrq&3VyOASc;pmXK@s}4z$iL=fvmO z9W4`+5x*V+wPht%-{Fnlu&Iu})D=)-n(fUYOg8xnWhtusFeBPJ-nqgeE${Ke>jI6# zF3%B=Pns;0`!9}}$vGdi^-H&(BVHDmmQBpZppnsVHR>lmdqK5ApEfZv#twWtxoiFk z%^;PL&3f@3tEQhD3;*oL1(oF{CgF<*nZaiz(**8B=8S=G+!>(O5&c6g=Ha)w<=Fk8 zT5|bVYx(jIVcln&x#f!@qb=lZn7WZ&<5G5H=Lh7A^pQL2fO4}a7Y45U7h=b zwfZ|MPoeO|^sgdijOen|e5aeVmYRp#qcJkQ`>o}qw2WaL9Rk6@!G>mLgMzE99bLQz zVIwi7{+`T_)soJjpMoHfk)Kl1^mW4x zn=tIcTmacsAaJU{ClXoS1UUyZeQb`>{4mtFpqR<8%vufa57mu_~wWnz!P*q48*lRwa!$;&iD~4JNtyO&*UH zO|yyiHHHA6BZ87|F1c_!<_vz@5t}J04C4{f9sY1Z-Ci}iHxM|u#5lw!sWCy}A`8}w;n$-~q{awu4OL&E z@u8L1K!dsR#=p40W~(b8%#Sc3l}$)o{km~w9FP2-y_0>>fH z8&ZE!)6yC_aEptNH+LCI{(F7xtgfzJBWSd{ySu#DY0qmgdg)QE6wr6qE}_i98d2ph z-tA|MDI6#69c`-BT+s{G;b+ZsYu&+-&FirGw6Di?Sd=wO+0khyU#WXJxQ$cm^Dfx( z`Xb!Ys{UR8XI0WWKNwL1S;HI!po-)jwwfh#a3r6y_9l~#YZ|N`)Vom>5 zcNPTImYY$oIJZH1Sw<&lZB{< zKN9uNU!$PlTUcID1mdwp=AFnlmj7sVqJswqe2r2YR?Ymm=s3B!Ge86PFdDH9=()?) zavB8gu@;QI5g}*v{4@lkE(kmmoBHDU*S4A@cr(5E60;D|7JLPE!;wt^&R#F*mHo= zt2M*|r#ZW~2MQ?734Z0>XcXQzicREHbEXdY7(c}BN?W9bB%fI_u5shxBk6r+zd-MH z5xlpHHQcOTZ8tDl*=ZA0`fAc`nj2s~xoEAh+;#02Z}MWSl-N+c@^-k>82~faZa)&> zh`1`;c0az@fb(hWsjQ@A82N^DU>{;lw+@_F34Qr*+x713R;RBfkW{0U9q;KRasMKi zMv@+VLh?2Nn7wBZ8h=3R8%R-&s(3cMk={=}V-svX;^g`elhV~@Ec+1@8**Z@FDUt$ zZ#D86Mw`#gT4x{Ayv>Q_qc;vRN=0?$ZNChta}#!)PZb#U-V|sy-Yb?Y%pWh>`#u@^b8Yj38+ZQ4IG( zK!k_8U)-`VQs~kLXp&JlXe9A)eHoqNW)kl-zy`941o^X$81>B?D3JgIshgqt$tMq1@F+97KMj2GwVZt~)oc-b>fE^iRS z=f|o~OI?>dY*2hPc>GXrn?xWvHE?u?jiE5J?wuYK{Sg~~S>j09I<$Q!_>%OhzD*PV zq0#yD%K>JjeXMzQ+L468b%SQZlSk&Oi;jtwt_w2NTx@aDk?@bU?pm8GqemYqQtpst zeO0xL2mTmw5@L~81mrwyfUW*3sFdZ-uWP1-!QIcE?)V5 zRyQMC?_az;Ggis#Y-2Cs!oUQD31xaAcp>!RGb#As9266r&(?LJx#u!TWFdH%>(X_| zyLosUY_@cx$)?jSgi~$zhFj0ol|VM7P2qh;{n~yk;CxN2k5S5WNm3e?^}3*}XQ-lQ zD0tQ;0!LP~&C1Pvs5%-)B20YI`9PdrwFR_Rdx2s<$6FAG6v#;+xqq4Z8w4PsK-mNr z<$LENvpj}Ed~sxZ;I=e3Oihbk==3g#E2m#k!}Z5v^=MSoA{F1+CP4M^2y%cuI}zed zt{!GEfQ}_vbCcJ+JLL9;gSnX{e(#0j;aBhOw4RB~{GH0niz<2Qlgak^R3O5)a@mZZ ztqms`Dq>@Ox=gi4H5ol_4{APJ;mnQ!>aX?hxyDbyxff+vo*MbIOoWF4S|JJu@uGhC zs(RTiZH!VTfWQ5n7GfX1E>JrKKeu9}d_Y7x zgPh#onG>;osls<~{DI6RE;ARv!y!j~esdol(Ub zEqfKc?(k{3T$Bm*?ZDq|1<$yh`nde_%gpm)&bgz>m(+I2q^l5&dofpX(nR+(T`~_? zqT4LU_~E_mt9>cmKaGzU!28oW!ITKV_s}aT@{pfA5{xcp99yRRArU5DV*$Zs3{aB>L?aJg#*S^PELjznCtsmeaR$}N0l z$hQy$(60vGir*}KM)-HpQ1|qAp*GyJ__d7JK2DTQUnmd+10KPqI=K-=f3)TA-t@DY z&->nZz=3T9zOZEw3WXi(R90y zrreQph=?NKiSWWeE9`02Ks-OMOgoq737^T{=z@A7jSz+FqG$g%6N1>O?kCVxqcJB41r!9C)Zt%G!#_~AH~X^Ycqz&aGe@XkNQEX zS?bj-bBQ?Z*pp1j@+kiPM`sHu7Qt-{5AGnegVuGO*5{n@;Hgr3ETQ2MgrvM;zG~J6 z+pr!SS0$yF>XV`_$A?mmD;)xH@7aXTUv8N{u?YU0_gPFY^MFFX4E`>|# zrMXquBAZ38lCJBKN$%$y_uY+{{Auf>mYbssf3MO*N^1_=MM)+_77g8^ z;h?X{nT#%Ss;?f>X_9i+U+o8k+u!P*c9@l{<2y}8gz8v*A06$r^rc$36$^LUg-ubSVl9NTi+ z5_U?3C|~i0T!A_GaP2AM(LccRd8JQ;SKrb!BHjTh9N{67F(icoHp!eHo7tZq(f<5+ zgX3;{+5w8sT}|+sOfmkmvAUgjpmR~gnrIU)i@g#24_Tk+0zaDDjIFAUnt-JT`b773 zxK4jx6mbK4SOx?#sApW4H+g&YORI)3-0R~j^aAnXlkSRoph@8G8mSOOf7IZl?Vk`HvD z)61$k8eKl9D1H=x`EqTN3`<4_;F$aul; zAfNX=j|%V1EZgpn)?|XtuRc+}#Nd3Ber}?ixsNcXyZI?(PH+?i$<)8r&s7(1p80kgs|7-skKy z?&aqigYMZ~)m5|Rd_?pV#3d|sX@|YkqT!Tl>LoE2QSAj+Vr79e8ZhXJWmxOkgx27U5t42BH ziPOcvSA!NnOPGjmJ21$j?Z7;MXbiMV*5CoH@O&;(dmd>CQEYga?rw;hs?1olUNFy> zqSiX@hv~@{?-$k@ZK4A6HhnI6a5r6JVNFfk2ia7IY%Tz(4G9N_%iP={FkWZBBFud* z;8@!!8%w$w%2`1NX8;^qju>Aj08+>Wz>&!>EZo}8sLao&1ju_30N55h6yJtb8@77+ zSyR5n-iJGnQ0`vs^E`IXu#!&%Qy5M6V^%{OqTz{I-wF9;7R#}hHT3B!UFkVVaaR!Q z)6GH#nXPX5k?MTU0@mOYq9by*Wnmj&^!nVLymid^s_|aRumIL zN%>2<17k_Z{y60xijo{cwSQdfq*Ks!7tJvK*A9a1V{QHI0z`s*_D59oX8|q z8;!)!#czVDk1m^hzp*GDr#N?t*9SYT;m*mh6~NS$!X77Pb_G@`zoe5eeCVDN_8@Gw z(`y;i6co^h%zb42VB#FNtB(jY;q1;@LONDJ7`b4S?#(I}IPoQCHnA7)f_o9DOBM9v z1udC58DcFb$OlS_j-eP4?X#h{c)d+&nGJN3DwT>nTd2k!!f&Oty*?SWNz?+X`qy*Z1HF8%HGPzK8a$;!fA zNJ>h1BAJjc@tdiPdUX__Z?XZDMYpw@4iAX(7l$9*Z+;YfdtS!8Cb)$Q_IzBmj>2OU z)zBb#Ez3xttr=PR!xl%v7doB^G6oRYOI<#EZ}NUj1CWiyKEGkyUG(h0Ue_b*@39w~ zG?OrH`~LQ<1n_m_ao@hX9e;SYf|t86f@lnZEvswWVI{0z8bMZjQ&Ojrm$Sp zVZe=U8d-5yb3Y z!NyHfDuv!Zt0xTHFfs+lgn5!A8&BROn|nV^70mhagh$fsVolh@lqJuMB2ZQnC)_%0g4SpMBp_IGVp+UHhnxSw|Pi-BU#RJx+Hc`10 z(7Lq-)nuSCJ%c~pe!29E1NPm|aIHG3nxS8`f(5DYdnU>_wRjsvx>?VRr-J2M7vEzc zzA4nEkcDQ~{4k$1x;KZa1I0Q|6+7s!zWrs|r@XOBllVj=?w5cC_mz6;H z8zADaq5bC*yZzSE*6eWEV{LgNO2pshjSWdw-bsrZ_7u#DCQvEr317jGc-OpzCV&1! zN{_ktN5M5^RX8q4i`jWm&Yt9r+d=H%h2_VTfI_)J_;G^jUipVgnfSEAiJA(2{gL4+ zryQD5MkxGDQ(7Daexp{ac4E#F2rBg#M^m_HCrMIPdig;yE}OO8Fp=GP>7Ap}bIA#j zeZhq!?Gh*-=zaClzT>uysAJypU2*+9&UG8&GD^tkvH9#KRvPJvawYVoIWtYi)(lgX zVHfy!Bh88f^-R(Af@QP~Bj7{FZttaN2P>^^(g%s-kzHi@K&Vzjb;r{?u@*OOyrP@c zpUo5PWm=Ot0F!mD9h^lhAIcSe;JAGhVFT z=l$ffog%V3Ah5*kjLJkDE-oo5h%`F`xEoQ%`qrYXbj64tfv5{&v>*BjLr|Pt1*s)b z>Lwtj`}X^;z!c{@MDzR0_kH%lH}abZ!Db;HB*0ClX#oU zV2NV-b}0HX-5na1HDK7}t!hum08l^l=HT{FBRP4M;~vj}jX;MetHQsm<@U zb4v!C@U>=i!{#W?GyEc{&9S`-%yhH-R-Q!c?7|;s@E(pHT5Ot@gym;uqL2w@IRw&? z;u!~)6-U0mjCPEqA6)x~3%#XWRp$$RS&OiS?&^L$oM(e=O>@<}_vYCgzWY#g`MZW@ z8mF=ddQA7PzO`P7p`_2@t+HxGB;anI7I)X4`5E$}Cw|8M*Q(X|uT={=lig(szhI;A zlrM-@Y%79l>3LV_iS3E%>GJ2-d-Ds!_dD%IJLv4wgU_3jct@J|dCv~`;BLJ7_x!@DWD^a^ObVVP@q!v=wJ)yDYieI>Xu!3C{9z4YJl*6o(b`LbrmPF& znz5YQg1wKEc0D(Z_)`lqjeo==@awEkCzsA=kX9p0eGlH2zFwNhc&waXxqYm|?YZGU ze^+mO+8MZzj@yGyh&0*}EPZ!xf>R{jU1EngLcXU*j6^@glv0ByS@b>L9z`oPHLxRa z$Q>r-*U-ROGdW$c(T2QUVtB1FI(hA-$XRons)YoDjFU$$yc?C`6Kpsz2t=Vpz2H%78)Ag#oG%HDP!jBG4k*R3* zmD=3_Tm+tPm7D^E^)*9z;jeae^+@&u z6k%})KRle-3o5>pn%&5Tj)lMfY|!{#vo*V-feWAN;1K#VMB94`%+|&(Oy$lQuZUq< z`^ebqD=7@O)>9DW99>QOkeRu8SbRK2^%bLk?YCH63WNj_`FGyY!F$$TjwZ17Z%LHe)$kFu1t1)80NDdGc0OT|m3z_%# zwgY@>x`K!0_l(y@CpS9-I?t6Hy!h99$&}mO`px?ujTb9r!XLaLZ^v>fS0jo=X&BI3 zZm(U$%+<|d;NXncjx(@K863nTPnQhN6lGVN<| zDO?6Wh1?0_1D})A`>a+-u-yy72w9bKiGxtnMN_D;JW~DXo`n<4fp&Yrkkr}6O;rt5 zOGUXd*R277oF~tJcj2@E9Fp+nVb!iGk%4NBw6V#WB@Fc|53K8XZfMSi9xy z#qSA^{V9>JZ2^(jo2*U9TJKh<97Nl#lwnE_G(C-n<Hnl`qIVY9k&l%oF6*hn(-3Hi8}GqCb3hYubIhVv|Q~;+T>hP zRRaua?p@vWI9FxAz6WE%Cju}Y`(=;+SuthLWFYb!`wYNIzNlk1 zE_ZjtF#P8T)Fi(iur?q(ynNDnI`C?^h_CHnre1kzRkXT&oOaCPH`DD^_c!~j_Vjr+ zqlcSnvZwArw)Tb!>?W9_w*9E;e#CIwbq5XfZq!fL=<S=*?l)-kk3YinD<&~UI;DLyn(Y_eruLwG;{HRoh z^TTZXXDXw1i=nxcaWFAqY?L}1>rqUUL5Z1#ML3{YZFITwYt`$pFY$xy`LcPgqiL=i zG>hFX9RWev(iSF2=<@v?5%`PU z;vR0tgR=b#C(o7|^U%6qzvC=wR3;txMUh@?;YN?5)KM`om=IhO)>Cz8eskJGi~E?5J@?2bkYpcZc_ zsDLhZN&80}5nI>w0lW`c{h|176v{mEW?g-()>qCJiU(Esg|kcdPhTA5@sO*gj#lDW z9KJo;*{c@SnO{tnTo61hy0nzqm(t<}+w>mZO$Pah_F694jOqNA@bFaDWS!`2#GptU zNnTk-6I1sKuhZr!hy4JajsMx69fF)_u`Pp+O*=&X1-f_KXq z*a83k+&RYt9OxYSK&=H-^Y0&XyUHHZ>`Fe)WhLM~N+qbz*GwPSG6 zX>i?*bg*?U)8O*oY*yam?DW}5?jv_VU}=_)+Tepmz{1U#6m!_o;ot9__n1e;iPnseXNqlQG2 z9COJ37WA1k>$cIrF%21x9*4c&cHEhVc6i+)LLn}17pjorsWU=nvK5?20i*_=A8U+l zqSUzL55KV*w`|V2U>1+Ppd$-*jKJ!Jh*B(WH3~x4RK67x=vTgFY@DyEw{SqaqIT3DzM#sZW!~m75pZoc z@VZP=e^yJ&tv@W$9wJo2A%8JSyo}dM$A}dR>z!1;=_|F@xqw&t>kF4Dr}go~goYPS z*uo6O$M-6^*!*aiqD^j*xn) zy`+2aDHDaP5wr2@D@o{Du%Sb_sY1}ehpk=w$iM1$Pz%CqN5u@!q*!OFKDVJK9p9gi z^=iSfGM-bQa`zbtSCOI#*StTz)}>6P3c4Gqf9r&_RdwS^fbDg7*34)fNzaFu!a$l_ ztFg>yBV|C4WPhR4EkHeWsvn6d8yb^^f#6TJmOu(b90!Q_jtRHdOS~Bg)NCzDwjd~Y zPO=JnvUD>5tEVZd@!&4VaX!LU?;32rZg78dRfXYhiWofTaJ&k65(>9Key+6$w#W&l z#?#qI`7i|vwIu>K5zpX4LVHhN(gIh2%ELT{g2rIsM>w?|g|1=fOZ_qlT+kEmuc;Un zM_sTnANse^ND4N4K!oAYuiXUBf zv8vTk zcgW;?SG{o4oF-8BJU=so1!%kk12Pbxu_h!#?Y;%|San_Aucy&~m89`tG$A04y;c0{ zr7mE3QO_&JD`vdA{N(B3s>Mq^CCp7lmB5G{w zDzb{<4J!vDqqmU+60B_b&MD5nP$~9&>n99;6-cv-IvyW64_Dya(<5~Umr5fZ2TFZE zk|y%4bozA3UnpsEl?Mr1|8q-$vzkI|VV>Y~y^W(5e?1#rm(1iGy2$q0{gaR>f_^7f zcjvhP*Tf5+5UOT)0sIZid8T5mx@%^s&a2@P>jTm8{Ua1o1E2(!XcV8S)m5!zSE#0` zPRA*~VLR)E5;}ef_Oem&wRNPkduc@^(tp9C5A%r>Dz5rD?F!0Uw__OeTf4!y>PgwN1u|6UK~! zOntt?aW*OqT1IpLcJ>jcfz}z1K0Q4X(_jj{dJBYwf&xaG+lD1TF%(f!!ov49h3+XX zZoA^}egLOw0M1M5e^|F+qtEU8QjYq1&%M6YTY}W}ewd-|j-~gd5MjZ?!<(3uYr#!w z+(EAL3i98N!Ev71@&tz;p=0=QLKbOdFCS?0_5R2NJq^Z53{^KCxG4r?RhT`rZ3nu!w!oQ%9W6_c(0T=!dwjdi05#C2~qR%JZ0WNb!z`7 zW@V`Uk*PsahD+_w215e8^kQR8BrPs1C=qu^4N!!hwRW?3Rbkg+ujwZWPMh2l$1R~P z6|@+Z5_l*lI-7jnEO5;GaLB%Ya1v31eY+tk{*no=(a3(chr6TbW4(Tb%PW#0a6{3K zLh&L4-0Omypnvy`FKY2f@Q@y_glXd^#k+96dk8t4N==+1xFzw~+%ZJXWi{R;i;tnF z7mdfj4!h5^#IPPun(Fwl+V0-F@C#XYU5V-At4duYLPQw)_H~By$a7^hI$a$Mi`_h) zfF4m;bpgLYVPiXcJxB11H;N)CpWcoLY(BQC-N!zROi~;h?7GXN!;cY?Jmob!Mu&b~ zJ9@gbj1H(H7IGscqkuH0AN@>ziPurE+m?D-fN2`-9e7pLwWxH>W4L`cVbc;S4t~i=$irR2&FINXB3tE! z$=kE`m0o+<-=3JQM6LunO~Ox{O(5e9ASoMKZFT;4V&>Gvg&xuzYq)4Wq-bCOUjkv@ z;(oN*8}J%Wc{#N6xkjx;@>0Xk<{CEzgR9k zu>19eNE8y|;()(JW1iaL-r;wzI@jdMQBC(m3Q?kBf#hcGrBOQP&RWDit1F8-wLeWW zhUY>m3kK9oKEH|NM=BvP7%?v??nmA}Q4&;-d>oq3pT(8L@nBMK9WL#Q(wV53#nqyT zo4ObepZd=43x}g3rOcEdaU|7huiQeberRHQ!AM3X>hQ?fMpO6`f3Q3lj+T*ftP`y4 z)Y;syRi@CNOcHb5TrOx+VE^3BM6-kR#Ihj}9;M1?CMG6^NlZMJf=Cg}A&28_i)PZ& z>5hqZY|JM-PgyG*S0ngygVk-sxn=Ns83R1U_#*b1Lq#2Cl%+Tp&GHUz z<=I&;x3pgL*#ar_E|}GqJ1l)l24f-s2xn?A4aL+OfIzSeTgBHdSkyx=i=b?devft# z$hEdgFQ@+99PzLDI|D<)?;-Zq_h_dm-GWuq^}k?OG~fVfWm^V;Z#=C%Kjc}Uq+I+f z&SsIC>PngTy;Sh6iVqe;yeOJE0@S(UyurzmZ@ZWWUa-UAJl?L>o(a@59)jov*z zH>lLlraTA~R;at4H2nO;$aoCGuP@K6Cc_xsH}mS!vR;=Ysyw{BPOl?4NQF2!4&cX2 za=tj`6#0_8bS~QrYL+a*?7(26ySHhBA?niJMitClmh+vJWA4--=B>*y8H#ZmL~Z<- z`(w&)LE$>{6{*)rtv^G)7SEdUHYks}ZV2*w!!zO*{B zSWQpwT@PkLm?5Po51G$P4G4%^D;@>8CT+!hh^NQLV~!9$pNt&_S?s3MysgYu0xftU z{YT(EWS}R+rBC^mApR(U&qULmzB@tO2Ni%iers`N;h8tisH6sA{Pf)Ydp2Dl)rwbh zIQ04%71f}y#wsE`DJdud`y-{GU=EQl)>2l-iv z=kL#7zar>C;%6OKX!=lCq6Ln&dz!xCZx3#@g@uXc-IzcI1&2l~O$!f1_x3aT%~()P z6h3pPXx>Q7Bl!F!T=O1{QYbr4M&zW$5f&EqO&Cqx7wgT3&Fj{tI!jk6viXGvCZeN5 z{%{DW;D&p&t7L1`Rp|kO0Akgv3O7fK=neClwOgIuD!0N=;ysm;yoU(&! zya#WM;dag@1V;d}BTi$BcpDVprI3Qt;q+~7Z4K@1CsX9t{rus*rxIP+c<~}0LUfiV zC*%I!$sEp=VFNO!km~B{cHdCHcXc@8w=wDmk$uS-YV0@JNsAy)qHjSf>t`cmi;Q%n zq=O?n<_q=z(7h2wMM0Aw-8zX*%1;1D$%Tc4z=Bo@t`BD6!_Y`(UUodLn$!GC5_FoqIIz~$Cfx|{9m zTj?e4w9aN+j)h_hT>^{tHe@YCntGeb&h6|^44^>ZeC9F3#>UpNz;GO*3RX2PErCa- z65B@%(a~F?Odz=YbjHfbIq)&pJMfLp0T73umIlECP*o-BegGN9-sMbAWqeg4-)8>)1#oGKCl9TzC*URx9=Yq za0I6l2?kqxF;}m0(<eoeUs|4*0>mKd?bk(i4p7|XNZ>$x zs_@H`IVcZ`nBn{$`02E;@odz!PR=1`=cf*LDx5S*#)T5nf_@~5>WT5Wx=;eh^h=GX z!W;XywOrflD)2~-6p1y#6kIBiw^wjIYEm@cX&&jAY+9jPVDc8nzSLSImtdp*V45@g z`^hN@)Ag7dtAJfmslTVNNI=KSO+=XNtm^VZHsDsCNU58_7yW00iZ>_oW@Kapdm?u^fsurYiHY1z`2w{7r&OWcgI1RV ztW;+GSimHwpt3TWOuG}Pux)|U^ao#`*IzBQCb`VY%F5h<_16*LZ28LZaA6!x4Z^zV zePQ9?DqawJd#RkQDv?{OqD+e(GEIkNM7B0oIe^L|;%tfh-ViV>mNprm&QlbVw_bL~ z5qRvPdu8P24{Ke(>xG z;$$_~r{}X?MqtIdz2v@tHcX5?wB;P94j%?|0u%-TpW$%aS%KGA)wwE~N48ksRBY z|8=>ser#f5S1VAj%bQS9QE_-|ELfa!Q>&$|rG*?2L4NBizs$uQfj$s%+4Ou}_Zed3 zds}F-2nY!`0T%5}&XnTUPci^Z+0p7kZKt{fnQ@uSBTu6(gJP2)CLldoPqH z2%5c#v&t=TwXvfapzm%a$e&+qgHK~c35n)x$RRHF)VIJQV7=z%CYn! z_m`^NwTzHX2pbPu{BqArWQk+iOMFMnh0D=BV>bl`MOm(vzBp);52($?{rpFha@qjJiuL?a|9gahtxu6_jHFPmJD=>6ma0rqYiXY2-m zb$=TLxMA)G(96p;+p7L6%;dP6Vzn2n6Z6Ty`dPMc^<`D)gwOd!9_o5MCNpt=Q7!VN} zG@$_Hzj7?sD~h~OHNwl!7+JsJP+r_@vY~1i0=l4|sL{l`?}qX|SA?cGRkK{fOpyKZ z4^Xz|zF_o&6=jEE_!aN4r`z>_wKtvF6&4Ngwk>8oWQmz-#LQ0yP-#-bEG`z7H3t90niz zkN^vK;f0~{UM-K#G8!A;LNV#uvkVCLz6UlJ_Ly#P1q`T5BbpB`>3rm;Fi9NTC`Q+{ zwhlc}R9RGzf<6VCWNKu=Z0go;0ZVAh6B@~V^C-uAX*33?A%ojC#o9_Ux1A4$_vXh| z;(L%Me;$c}dE*Nu!X!+A))#A7;n-dKC^eoL7^;SE^~2}ti|t@8nV!GKI?1H%D@H&L zQ1~WN(^UXa@_1#4M#D_(+K+pkWJYnRFi|h)bXh} z<}vLAsWAvvs5XkGE!LMKy`CLe>p6(Cn+khjR&i!Dh`+T!8OpF}G?7IuTT5AK@vEtM z8#BLnJ`*5;MPVki!yVbPa}>^R(A;A0Nv0n@3*7&%Jro^pu0cr6$nS^=F*AOIK)U$U@DC@XkVSfgR#lZ&!qL8^Bfyf$Eopq1t#(2TqAe zK``lzP5s+U0|% zPt`%i!>uU}W%x4Fb7tO5{}K27sjo&C2ePhL#)a`{gi_!6S^H~`#W9D=nYm_(+U3qB z%?ZT6Zx>Hpb+P9SOJK?LQ|+w(K}?Zm-dXhS&Mbd%BQ*n0HM#?0)9<*a)#pxu(m^;4 zc6REk_<&TM#KE1T�#Ox?GUlB!Va$%iVRTItYI_N^bgP;Fe|n(f?FxoX|v1Fs|ZN zM{MiaCOH+!aC5ip>6pfa^fVtAB9+2zQc!%AR>WgY1mSKPd%Et&p{9+8Cd0(*8Pp~C zw;>`$7JRhGp6^0=GEzN`&dUV{n=GzEvKjfV3-RK1S56F{w-=AtT6co*Bw>K@7)GlQ z92*#BbnA4>mwRPP(H{?zWOLWH(z773OdfRYS7aMvz?rEIdVcy4oE3F*xOL2I%qG3g9t8-vIl$%0sG{;F7_mSErm9wn&aq}>5ZC71-S zu|mQ1P~s>2kyCw`!*cXNBFIwr(FB2l$}4@V@vj@k7SXPG9EVtZc<8)Kb z%y$m%&!U1@h*(LpJ=J}(=RSiQpgr|z9mW3hkx63%usJ$Fs>u=jeb2LZBo9{IP7cPC z+TnPCP`3n4s)n|6acEwE$Svb+ z?6^CtkKxpT^FGSaeYmHfZk0aW|c%uS8|69xQh!kv%zXPo7HTuM0fHfO}~y<4R1$YbX^b z6MC^;@40Pugz?!+|DG*fTcA|nxc_jxF)zX7k?{6(ta}>E~gOk~Jj3gtu&GvMzBIFIhi&GO0 zjv#P%J7vHWF=Q<^c5AG5%P=t4mwS3whr4JM zsT1cashwU8A(jgy!Mfv+1zE*I-_%*GeC6*QY99J@>CfqyBZkVp`t@Z8PJFvubZIy` z1bk4cHn8T=9MLJuP@}*cQ zSBA*!In{y$LBb5GIULO3NgjN?ATJIkDlwlRx7(B0zafZ8$nA>8JVOg>PD3eE-&Ukk z{LaEfn7ZcKH&Ex6EycOpW?--Omdg; z^=mg$z~ZhN{&12q&%G9pg8aV@{XlVqS{%m@-cgYf0cFh4N|#l*Z#U}X+=@(tZp3-` z@aHgFyz&$xb4_+ctU$Iw>C-!CWO$cvAjAN{a)cy?k4T8k13H?Sbs?-|I_0qtl6aDF z?vqL65_1_Yov=a~=Er}adxKO0SS2%Jt*x1z1J*OJ_WAPGWS^%!W@xTS zPZVt-28VyYTbKaod^2#NtDg+w$x=c9gPO3t-Miq-I9!zIu}wiEsK*#bwedK9B6Ozr zLN1vHqON(o<26k2C1L+N%cQZXN0|dPAcv#Qw*MUHSeVb7q~AA$h4FnaeG0@22%z`u zOr(4u~qG5D<*gVjM2KfsdId5QR554whp^+5Ewc(rpv6t#Qia~T%BfJ zTvEUOMVq;@o*VGREoKD#aWy-UoBDfD0TE6*}vFy$FWtlBnYp=K6kxCZ4YzXD17Re zKnR2|<2ro$fztnBYY3@Dzz1nZ7fH;j4hl(=@(Z8@m#J6tcy~78K7L8lZ#mrY$}O-* zub!o#5cGYkU_H;=7LCf6Z+OJ2ySj{Ne}?}p1ea5$|9pf9mhb+d4t`J7;SQty+y_2W z->4xZa@;fPDsIe5C`vC@)jvV_UQ&arrNEJT`_<{aejGfJAiJAG*qJ|hwx4f7n8A5i z606(;=qU)(!Ogv+QNH!(5kK9vxO6D3AV=GQ?BMkv9lWg|Sa@E=AhQ zmk8_i1O2`$&X|CP<4AbcjqczS{AXtLwwg;}v6WlY;0+}e>6+P-`k zIwCJq#Cq2|C60@gVD^E6zSBbj7*Y$%T_6;X{|<%aA9})vr+AEo6HkNHTz#Y8U#X@> z^yaS<{zXrqanBMAen$~7g|f>vsFR*RP4TGmNTuz?cBvC=+d5ae2+*j?GpzqVFAm2U z(Y$H!yOEb5RSOzP810c+&yXVSJDM0-VLd{1ZzqD&ZaNdJ2W2};ONb!|DM1>_zD|-? zN{TB(Mp9Ghr7jXf$3Yg`{xZS;nFjwm6ANXqIsWSP0(nr3cvmvnoY4+(@Tsvt>xRGZ zI>aMxpbQGZXKdjRwN^@4Wl}ohh7md_f^?$GY`%Z+*)!$wioiC=q>k;N3;?vd2wI&; zU6Nf58$5rj?;pGB|ARtjQ5#R^xT20_6pSHO?Uqd$j&JcpMzg~yxQf1I*%-3ow~^!? z@t7ZDZvT?vr_)+5<%`)~|L}9$iqds6VMRSATm7b)HcbRzt?g>z56||H`u%tK>}+gX zvi>?V{JGev?}I6yyz^q?VffZ~*&M81G2p9E+#fQ4x2 z83AV9w@fI?aemf#oCuEDS+nEcxVln27Xg@X>G*dB+hd$94&+#bhz~S!vSL3&qPQP> z*=+uDVO6bvi{`RBJT9e+)=lV+)HD%?p;hb)11xUdV&yyM5UMPk@^<#uPn{23$T|a!|%ba>q|@D{&&gC z;36U->Vm;31YZ`Jh5iqWv{vf>z({*l=s%JF3rAX;@ehs^K4qH^$r2CC&g{IG0%+=z zeQ!|m9xXSwhiOogxWtjDK@*zFBB&c!<8c%+n-9C#xq^8X-7MLarWqiBBvXSxXz#(P7!0alRXVTGy&`-^cU zaU%lJp6$=ZA0g*{)@X1s>hOCbxPKzW(8w^&oQupP)w3}QXhc7`Q+G3SV)fpTKB*ai<$gWq=*)sU!R0xcrsC0 ziV{;P=WLsBPWaRHAGsXON%EHx3{-M#8LfW46mekW!LMP$U0BwqW}_ZTWb$FEAEB2A@0_wl!?dhvCuO zf$!sEtqwEk3;C>P6;!WGRJVJ@vIO_lf4v9IVr8Ao%?-}L^(UX3!KC6QU z7xc0eg#4FMQ6nE$2?qd>N|9ZAIm7(E&!q2`_#9j4hrV$bLDR1vBNd^BqHJ*rF-iL8 z{2d1jAR)iGb%-n-87(Sm(xo;fkAPgmb&hf=)eM5`W4IvxV%rw}?Fx}*mLV5oH^+8k zt&{z+bA@QEN*Q6<0drbiiG12S0mAIG>zrts>{dYZTaA}7#eduzG9=66uJEVN<#7)Euj$|P zM#lQxV5zg*nhmeFcFn48$An`lfk8WFU_}i>g-rosB3wpnjX%)t?W!WO$(Ac`*z)@S zL1z_wPpss?VRNhfQIjZfRi>DXOU_7%`M`rk(Ci{COD3hE#Z^U`Qpz+Z=Uj@s^NVI| zY-nV&+&Ef+MqES$@_%QQmm(u#QYu$*g}X<=FGc^ed&N_q zoiwlS%Ju*ly7=6TKJ>Tlfa_Q5R|%ZrJx5bORc|bVGm2jMJmuflmrepXZi%1>3@y>=P^j* zRNnXg2|1!*#C7ib^5x6@?TURXThxCINC?n9vvxYKTl%8NWXm(~PjHQWaC%=m?uZiY z2G5QCg%RY8RZ)F`k$u3a38n? zY;?AFLB&vo~bl3H8t$4?X!t~&6Y6qBo$H%vAt+B8i=F|P{;eP>&Rk7zyRFApMdTJ zdD`eh9UW92L=$PO!{yhYh!Dc-YuXQxKo=Rr26oIRr@}A8M5LLZ+Zal9c5&Hp>WC#| z4<%E^{jbYe1A5W_G-H5z{*^J1QpO*qXJi-w{U?oj6Pb{SMwkC8)#T$468-`ot^6=Y z2Rc0Wb#IwdOEMIodH#*Znc8eTBLt68>%4{^<^0uL2rVz3_y;`%@FyejMZ8+nAn^YI Dr)@Um literal 0 HcmV?d00001 diff --git a/wtpsplit/train/train_adapter.py b/wtpsplit/train/train_lora.py similarity index 100% rename from wtpsplit/train/train_adapter.py rename to wtpsplit/train/train_lora.py From 84ae09d0fd05f5dd25d3cd0563fe8a3c52a4aa7a Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 18 Jun 2024 13:05:15 +0000 Subject: [PATCH 242/262] typooo --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index db4f706f..e6a1794b 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ "pandas>=1", "cached_property", # for Py37 "torchinfo", - "mosestokenizer" + "mosestokenizer", "adapters==0.2.1" ], url="https://github.com/bminixhofer/wtpsplit", From 8f787c6aaff7d298b836bff78aadfd56b7a7c19e Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 18 Jun 2024 13:15:11 +0000 Subject: [PATCH 243/262] git rm --- calc_compression_rate.py | 31 --------------- commands.txt | 24 ------------ run.sh | 2 - run_adapter.sh | 1 - run_eval.sh | 18 --------- run_eval_kmer.sh | 22 ----------- tpu_START.sh | 9 ----- tpu_starter.sh | 4 -- xla_spawn.py | 83 ---------------------------------------- 9 files changed, 194 deletions(-) delete mode 100644 calc_compression_rate.py delete mode 100644 commands.txt delete mode 100755 run.sh delete mode 100755 run_adapter.sh delete mode 100755 run_eval.sh delete mode 100755 run_eval_kmer.sh delete mode 100755 tpu_START.sh delete mode 100755 tpu_starter.sh delete mode 100644 xla_spawn.py diff --git a/calc_compression_rate.py b/calc_compression_rate.py deleted file mode 100644 index 9acc5c1a..00000000 --- a/calc_compression_rate.py +++ /dev/null @@ -1,31 +0,0 @@ -from datasets import load_dataset -from transformers import XLMRobertaTokenizer - -def calculate_compression_rate(dataset_name): - # Load the dataset - dataset = load_dataset(dataset_name, split='train') - - # Initialize the tokenizer - tokenizer = XLMRobertaTokenizer.from_pretrained('xlm-roberta-base') - - total_chars = 0 - total_tokens = 0 - - # Iterate over the dataset - for sample in dataset: - text = sample['text'] - total_chars += len(text) - - # Tokenize the text - tokens = tokenizer.tokenize(text) - total_tokens += len(tokens) - - # Calculate the average compression rate - avg_compression_rate = total_chars / total_tokens if total_tokens > 0 else 0 - - return avg_compression_rate - -# Example dataset -dataset_name = "markus583/mC4-TEST" -compression_rate = calculate_compression_rate(dataset_name) -print(compression_rate) diff --git a/commands.txt b/commands.txt deleted file mode 100644 index 3c702478..00000000 --- a/commands.txt +++ /dev/null @@ -1,24 +0,0 @@ -# .bashrc -export PATH=$PATH:~/.local/bin - -export XRT_TPU_CONFIG="localservice;0;localhost:51011" - -export XLA_USE_BF16=0 - -export TPU_NUM_DEVICES=8 - -export HF_DATASETS_CACHE=/dev/shm/cache - -# data -gcloud auth login -gsutil -m cp -r gs://trc-transfer-data/sentence/data/eval.pth data/ - -# cleanup -pkill -e python3 -(until no more) -or -watch -n1 pkill -e python3 - -# for debugging: - -os.environ["PJRT_DEVICE"] = "None" diff --git a/run.sh b/run.sh deleted file mode 100755 index d3ba4a89..00000000 --- a/run.sh +++ /dev/null @@ -1,2 +0,0 @@ -# TODO: cleanup in case of no .arrow files but cache-* files available. -python3 ~/wtpsplit/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train.py $1 \ No newline at end of file diff --git a/run_adapter.sh b/run_adapter.sh deleted file mode 100755 index e0d58697..00000000 --- a/run_adapter.sh +++ /dev/null @@ -1 +0,0 @@ -python3 ~/wtpsplit/xla_spawn.py --num_cores ${TPU_NUM_DEVICES} wtpsplit/train/train_adapter_parallel.py $1 \ No newline at end of file diff --git a/run_eval.sh b/run_eval.sh deleted file mode 100755 index 208e8187..00000000 --- a/run_eval.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -# Check if sufficient arguments are provided -if [[ $# -lt 2 ]]; then - echo "Usage: $0 MODEL_PATH 'threshold_list'" - echo "Example: $0 /path/to/model '0.1 0.2 0.3'" - exit 1 -fi - -# Assign arguments to variables -MODEL_PATH="$1" -threshold_list=($2) - -# Loop over threshold_list -for threshold in "${threshold_list[@]}"; do - # Execute the Python script - python3 wtpsplit/evaluation/intrinsic.py --model_path "$MODEL_PATH" --threshold "$threshold" --keep_logits -done \ No newline at end of file diff --git a/run_eval_kmer.sh b/run_eval_kmer.sh deleted file mode 100755 index 3fbc473f..00000000 --- a/run_eval_kmer.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# Check if sufficient arguments are provided -if [[ $# -lt 3 ]]; then - echo "Usage: $0 MODEL_PATH 'k_list' 'threshold_list'" - echo "Example: $0 /path/to/model '1 2 3' '0.1 0.2 0.3'" - exit 1 -fi - -# Assign arguments to variables -MODEL_PATH="$1" -k_list=($2) -threshold_list=($3) - -# Loop over k_list -for k in "${k_list[@]}"; do - # Loop over threshold_list - for threshold in "${threshold_list[@]}"; do - # Execute the Python script - python3 wtpsplit/evaluation/intrinsic_pairwise.py --model_path "$MODEL_PATH" --k "$k" --threshold "$threshold" --keep_logits - done -done \ No newline at end of file diff --git a/tpu_START.sh b/tpu_START.sh deleted file mode 100755 index cc04404b..00000000 --- a/tpu_START.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -TPU_VM_NAME="v3-8_4-1.13" # Name of the TPU VM -ZONE="europe-west4-a" # Zone - -# Create the TPU VM, retry if it fails -until gcloud compute tpus tpu-vm start "$TPU_VM_NAME" --zone="$ZONE"; do - sleep 1 -done \ No newline at end of file diff --git a/tpu_starter.sh b/tpu_starter.sh deleted file mode 100755 index f8d5ba55..00000000 --- a/tpu_starter.sh +++ /dev/null @@ -1,4 +0,0 @@ -for var in "$@" -do - until gcloud compute tpus tpu-vm create $var --zone=europe-west4-a --accelerator-type=v3-8 --version=tpu-vm-pt-1.13; do sleep 3; done -done \ No newline at end of file diff --git a/xla_spawn.py b/xla_spawn.py deleted file mode 100644 index 5df6bfa2..00000000 --- a/xla_spawn.py +++ /dev/null @@ -1,83 +0,0 @@ -# Copyright 2020 The HuggingFace Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -A simple launcher script for TPU training - -Inspired by https://github.com/pytorch/pytorch/blob/master/torch/distributed/launch.py - -:: - >>> python xla_spawn.py --num_cores=NUM_CORES_YOU_HAVE - YOUR_TRAINING_SCRIPT.py (--arg1 --arg2 --arg3 and all other - arguments of your training script) - -""" - - -import importlib -import sys -from argparse import REMAINDER, ArgumentParser -from pathlib import Path - -import torch_xla.distributed.xla_multiprocessing as xmp - - -def parse_args(): - """ - Helper function parsing the command line options - @retval ArgumentParser - """ - parser = ArgumentParser( - description=( - "PyTorch TPU distributed training launch helper utility that will spawn up multiple distributed processes" - ) - ) - - # Optional arguments for the launch helper - parser.add_argument("--num_cores", type=int, default=1, help="Number of TPU cores to use (1 or 8).") - - # positional - parser.add_argument( - "training_script", - type=str, - help=( - "The full path to the single TPU training " - "program/script to be launched in parallel, " - "followed by all the arguments for the " - "training script" - ), - ) - - # rest from the training program - parser.add_argument("training_script_args", nargs=REMAINDER) - - return parser.parse_args() - - -def main(): - args = parse_args() - - # Import training_script as a module. - script_fpath = Path(args.training_script) - sys.path.append(str(script_fpath.parent.resolve())) - mod_name = script_fpath.stem - mod = importlib.import_module(mod_name) - - # Patch sys.argv - sys.argv = [args.training_script] + args.training_script_args + ["--tpu_num_cores", str(args.num_cores)] - - xmp.spawn(mod._mp_fn, args=(), nprocs=args.num_cores) - - -if __name__ == "__main__": - main() From adc23b72899fe1f749ee5f7ddae0426d3c04adbe Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 18 Jun 2024 13:17:08 +0000 Subject: [PATCH 244/262] git rm v2 --- get_mem.sh | 25 - lyrics.ipynb | 134872 ------------------------------------------------ 2 files changed, 134897 deletions(-) delete mode 100755 get_mem.sh delete mode 100644 lyrics.ipynb diff --git a/get_mem.sh b/get_mem.sh deleted file mode 100755 index 99dbf8a3..00000000 --- a/get_mem.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -# This script writes the "Mem" line from the free -h command and the current time in one line every second to a file, and also prints it to the console - -output_file="memory_usage_log.txt" - -# Header line -header=" total used free shared buff/cache available" - -# Write header to both console and file -echo "$header" | tee $output_file - -while true; do - # Get the "Mem" line from free -h and store it - mem_usage=$(free -h | grep "Mem:") - - # Format the output string - output="$(date +"%a %b %d %H:%M:%S") | $mem_usage" - - # Write to both console and file - echo -e "$output" | tee -a $output_file - - # Wait for one second - sleep 1 -done diff --git a/lyrics.ipynb b/lyrics.ipynb deleted file mode 100644 index 218985e5..00000000 --- a/lyrics.ipynb +++ /dev/null @@ -1,134872 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from wtpsplit.utils import Constants" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# set print options\n", - "pd.set_option(\"display.max_columns\", 500)\n", - "pd.set_option(\"display.width\", 10000)\n", - "pd.set_option(\"max_colwidth\", 300)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "lyrics_distinct_all = pd.read_json(\"data/lyrics_distinct_markus_frohmann.json.bz2\", lines=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1279204, 11)" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lyrics_distinct_all.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
_idlyricslyrics_languagelyrics_sanitizedlyrics_sanitized_langtrackartisttags_lfmmicro_genres_lfmprimary_tag_geniusall_tags_genius
04500284!\\nA A\\nTriple A!\\n(Triple A?)\\nA! A! A!\\nU can B 1\\nU can B 1 2\\n2 B or not 2 B\\nC?\\nABC R E Z\\nABC R fun\\nA!\\nAlphabetical order\\n\\nHere we go...\\nUFO on LSD\\nR2D2, C3P0, how 'bout ET?\\nABC, BBC, CBN, NBC\\nMTV, VH1, HBO, CNN\\nSCTV, SAT\\nDegree? BA, BN, BS, A! How about BAC? A!\\nAlphabetical or...en!\\nA A\\nTriple A!\\n(Triple A?)\\nA! A! A!\\nU can B 1\\nU can B 1 2\\n2 B or not 2 B\\nC?\\nABC R E Z\\nABC R fun\\nA!\\nAlphabetical order\\n\\nHere we go...\\nUFO on LSD\\nR2D2, C3P0, how 'bout ET?\\nABC, BBC, CBN, NBC\\nMTV, VH1, HBO, CNN\\nSCTV, SAT\\nDegree? BA, BN, BS, A! How about BAC? A!\\nAlphabetical or...enAlphabetical OrderJoe Walsh{'rock': 100, 'Joe Walsh': 100, 'rock alternativo': 100, 'alltimefavs': 100}{'rock': 100}pop{'primary': 'pop', 'all': ['pop']}
16999031!\\nI've been looking\\nI've been searching\\nI've been seeking\\nBut I can't find love\\n\\nI've been driving endless hours\\nThere's nothing doing\\nI can't find love\\nOn cold mornings\\nSun drenched evenings\\nThrough restless dreamings\\nEverywhere\\nIn the papers\\nOn those talk-back television shows\\nA...en!\\nI've been looking\\nI've been searching\\nI've been seeking\\nBut I can't find love\\n\\nI've been driving endless hours\\nThere's nothing doing\\nI can't find love\\nOn cold mornings\\nSun drenched evenings\\nThrough restless dreamings\\nEverywhere\\nIn the papers\\nOn those talk-back television shows\\nA...enBlack IceMy Friend The Chocolate Cake{'8 of 10 stars': 100}NaNpop{'primary': 'pop', 'all': ['pop']}
245963513!\\nYou come on like a dream, peaches and cream\\nLips like strawberry wine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're all ribbons and curls, ooh what a girl\\nEyes that sparkle and shine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're my baby, you're my pet\\nWe fell in...en!\\nYou come on like a dream, peaches and cream\\nLips like strawberry wine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're all ribbons and curls, ooh what a girl\\nEyes that sparkle and shine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're my baby, you're my pet\\nWe fell in...enYou're Sixteen (Original Hit Version)Johnny Burnette{'pop': 100, '60s': 100, '40s-50s': 100}{'pop': 100}pop{'primary': 'pop', 'all': ['pop']}
313614982!! -- Guitar Intro -- !!\\n\\nYou know that this smile\\nTo go deep in my life baby\\nI was born to fly\\nOver this ocean darlin'\\n\\nMaybe we can try\\nSomeday not later darlin'\\nI learned another rhythm\\nThats over my soul\\n\\nAnd darling hes in town\\nAre you all around\\nAnd you don't know why\\n\\nWhy ...en!! -- Guitar Intro -- !!\\n\\nYou know that this smile\\nTo go deep in my life baby\\nI was born to fly\\nOver this ocean darlin'\\n\\nMaybe we can try\\nSomeday not later darlin'\\nI learned another rhythm\\nThats over my soul\\n\\nAnd darling hes in town\\nAre you all around\\nAnd you don't know why\\n\\nWhy ...enEloween DeowenBedouin Soundclash{'2002': 100, 'reggae': 100}{'reggae': 100}pop{'primary': 'pop', 'all': ['pop']}
431651672!! GIRL I LOVE YOU\\nAN I WOULDN'T PLACE NOONE ABOVE YOU\\nGIRL I WOULDN'T PLACE NO 1 ABOVE U\\n\\n\\nYAGGA YAGGA YOW\\n(Ccc)\\nGirl you make my love come down\\nGirl you make my love come\\nDown-down-down-down-down\\nYou make my love come down\\nSo give all praise to JAH JAH\\nFor food an cloth an sheltta\\...en!! GIRL I LOVE YOU\\nAN I WOULDN'T PLACE NOONE ABOVE YOU\\nGIRL I WOULDN'T PLACE NO 1 ABOVE U\\n\\nYAGGA YAGGA YOW\\n(Ccc)\\nGirl you make my love come down\\nGirl you make my love come\\nDown-down-down-down-down\\nYou make my love come down\\nSo give all praise to JAH JAH\\nFor food an cloth an sheltta\\nV...enPraise JahAnthony B{'reggae': 100, 'rastafari': 100, 'dancehall': 50, 'english': 50, 'conscious': 50, 'positive message': 50, 'coool vibe': 50}{'reggae': 100, 'dancehall': 50}r-b{'primary': 'r-b', 'all': ['r-b']}
\n", - "
" - ], - "text/plain": [ - " _id lyrics lyrics_language lyrics_sanitized lyrics_sanitized_lang track artist tags_lfm micro_genres_lfm primary_tag_genius all_tags_genius\n", - "0 4500284 !\\nA A\\nTriple A!\\n(Triple A?)\\nA! A! A!\\nU can B 1\\nU can B 1 2\\n2 B or not 2 B\\nC?\\nABC R E Z\\nABC R fun\\nA!\\nAlphabetical order\\n\\nHere we go...\\nUFO on LSD\\nR2D2, C3P0, how 'bout ET?\\nABC, BBC, CBN, NBC\\nMTV, VH1, HBO, CNN\\nSCTV, SAT\\nDegree? BA, BN, BS, A! How about BAC? A!\\nAlphabetical or... en !\\nA A\\nTriple A!\\n(Triple A?)\\nA! A! A!\\nU can B 1\\nU can B 1 2\\n2 B or not 2 B\\nC?\\nABC R E Z\\nABC R fun\\nA!\\nAlphabetical order\\n\\nHere we go...\\nUFO on LSD\\nR2D2, C3P0, how 'bout ET?\\nABC, BBC, CBN, NBC\\nMTV, VH1, HBO, CNN\\nSCTV, SAT\\nDegree? BA, BN, BS, A! How about BAC? A!\\nAlphabetical or... en Alphabetical Order Joe Walsh {'rock': 100, 'Joe Walsh': 100, 'rock alternativo': 100, 'alltimefavs': 100} {'rock': 100} pop {'primary': 'pop', 'all': ['pop']}\n", - "1 6999031 !\\nI've been looking\\nI've been searching\\nI've been seeking\\nBut I can't find love\\n\\nI've been driving endless hours\\nThere's nothing doing\\nI can't find love\\nOn cold mornings\\nSun drenched evenings\\nThrough restless dreamings\\nEverywhere\\nIn the papers\\nOn those talk-back television shows\\nA... en !\\nI've been looking\\nI've been searching\\nI've been seeking\\nBut I can't find love\\n\\nI've been driving endless hours\\nThere's nothing doing\\nI can't find love\\nOn cold mornings\\nSun drenched evenings\\nThrough restless dreamings\\nEverywhere\\nIn the papers\\nOn those talk-back television shows\\nA... en Black Ice My Friend The Chocolate Cake {'8 of 10 stars': 100} NaN pop {'primary': 'pop', 'all': ['pop']}\n", - "2 45963513 !\\nYou come on like a dream, peaches and cream\\nLips like strawberry wine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're all ribbons and curls, ooh what a girl\\nEyes that sparkle and shine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're my baby, you're my pet\\nWe fell in... en !\\nYou come on like a dream, peaches and cream\\nLips like strawberry wine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're all ribbons and curls, ooh what a girl\\nEyes that sparkle and shine\\nYou're sixteen, you're beautiful and you're mine\\n\\nYou're my baby, you're my pet\\nWe fell in... en You're Sixteen (Original Hit Version) Johnny Burnette {'pop': 100, '60s': 100, '40s-50s': 100} {'pop': 100} pop {'primary': 'pop', 'all': ['pop']}\n", - "3 13614982 !! -- Guitar Intro -- !!\\n\\nYou know that this smile\\nTo go deep in my life baby\\nI was born to fly\\nOver this ocean darlin'\\n\\nMaybe we can try\\nSomeday not later darlin'\\nI learned another rhythm\\nThats over my soul\\n\\nAnd darling hes in town\\nAre you all around\\nAnd you don't know why\\n\\nWhy ... en !! -- Guitar Intro -- !!\\n\\nYou know that this smile\\nTo go deep in my life baby\\nI was born to fly\\nOver this ocean darlin'\\n\\nMaybe we can try\\nSomeday not later darlin'\\nI learned another rhythm\\nThats over my soul\\n\\nAnd darling hes in town\\nAre you all around\\nAnd you don't know why\\n\\nWhy ... en Eloween Deowen Bedouin Soundclash {'2002': 100, 'reggae': 100} {'reggae': 100} pop {'primary': 'pop', 'all': ['pop']}\n", - "4 31651672 !! GIRL I LOVE YOU\\nAN I WOULDN'T PLACE NOONE ABOVE YOU\\nGIRL I WOULDN'T PLACE NO 1 ABOVE U\\n\\n\\nYAGGA YAGGA YOW\\n(Ccc)\\nGirl you make my love come down\\nGirl you make my love come\\nDown-down-down-down-down\\nYou make my love come down\\nSo give all praise to JAH JAH\\nFor food an cloth an sheltta\\... en !! GIRL I LOVE YOU\\nAN I WOULDN'T PLACE NOONE ABOVE YOU\\nGIRL I WOULDN'T PLACE NO 1 ABOVE U\\n\\nYAGGA YAGGA YOW\\n(Ccc)\\nGirl you make my love come down\\nGirl you make my love come\\nDown-down-down-down-down\\nYou make my love come down\\nSo give all praise to JAH JAH\\nFor food an cloth an sheltta\\nV... en Praise Jah Anthony B {'reggae': 100, 'rastafari': 100, 'dancehall': 50, 'english': 50, 'conscious': 50, 'positive message': 50, 'coool vibe': 50} {'reggae': 100, 'dancehall': 50} r-b {'primary': 'r-b', 'all': ['r-b']}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lyrics_distinct_all.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "lyrics_sanitized_lang\n", - "en 1278136\n", - "ko 100\n", - "fr 93\n", - "es 88\n", - "de 65\n", - " ... \n", - "zh_Hant 1\n", - "ve 1\n", - "ss 1\n", - "br 1\n", - "xx_Qaai 1\n", - "Name: count, Length: 101, dtype: int64" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lyrics_distinct_all[\"lyrics_sanitized_lang\"].value_counts()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "primary_tag_genius\n", - "pop 734241\n", - "rock 327013\n", - "rap 129445\n", - "r-b 38821\n", - "country 36069\n", - "non-music 13376\n", - "denmark 228\n", - "varnell-15-16-12th 11\n", - "Name: count, dtype: int64" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lyrics_distinct_all[\"primary_tag_genius\"].value_counts()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "from lingua import Language, LanguageDetectorBuilder\n", - "\n", - "detector = (\n", - " LanguageDetectorBuilder.from_all_languages()\n", - " .with_preloaded_language_models()\n", - " .with_minimum_relative_distance(0.9)\n", - " .build()\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[Language.GERMAN, Language.GERMAN]\n" - ] - } - ], - "source": [ - "result = detector.detect_languages_in_parallel_of(\n", - " [\n", - " \"Too big, too small\\nSize does matter, after all\\nZu groß, zu klein\\nEr könnte etwas größer sein\\nMercedes Benz und Autobahn\\nAlleine in das Ausland fahren\\nReise Reise\",\n", - " \"Fahrvergnügen\\nIch will nur Spaß, mich nicht verlieben\\n\\n[Pre-Refrain]\\nJust a little bi\",\n", - " ]\n", - ")\n", - "print(result)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'de'" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "result[0].iso_code_639_1.name.lower()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 12793/12793 [05:40<00:00, 37.63it/s] \n" - ] - } - ], - "source": [ - "from tqdm import tqdm\n", - "\n", - "tqdm.pandas()\n", - "\n", - "# feed in multiple lyrics at once\n", - "lyrics_sanitized_lang_lingua = []\n", - "# use 100 chunks at a time\n", - "for i in tqdm(range(0, len(lyrics_distinct_all), 100)):\n", - " lyrics_sanitized_lang_lingua.extend(\n", - " detector.detect_languages_in_parallel_of(lyrics_distinct_all[\"lyrics_sanitized\"].iloc[i : i + 100])\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "lyrics_distinct_all[\"lyrics_sanitized_lang_lingua\"] = [\n", - " x.iso_code_639_1.name.lower() if x else None for x in lyrics_sanitized_lang_lingua\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "lyrics_sanitized_lang_lingua\n", - "en 1252790\n", - "None 19875\n", - "yo 896\n", - "de 679\n", - "fr 623\n", - "es 559\n", - "sn 461\n", - "la 386\n", - "ja 354\n", - "tl 304\n", - "ko 274\n", - "it 256\n", - "fi 166\n", - "sw 150\n", - "pt 130\n", - "nl 121\n", - "cy 116\n", - "sv 101\n", - "nb 95\n", - "pl 88\n", - "st 87\n", - "id 59\n", - "so 49\n", - "da 46\n", - "ga 40\n", - "et 39\n", - "zu 37\n", - "zh 36\n", - "eu 34\n", - "ts 33\n", - "hr 30\n", - "is 27\n", - "xh 26\n", - "eo 24\n", - "mi 21\n", - "tn 19\n", - "sq 19\n", - "sl 16\n", - "tr 16\n", - "nn 14\n", - "hu 13\n", - "vi 12\n", - "af 12\n", - "ca 11\n", - "sk 11\n", - "cs 11\n", - "bs 10\n", - "ms 10\n", - "ro 5\n", - "lt 4\n", - "lv 2\n", - "lg 2\n", - "ru 2\n", - "he 1\n", - "az 1\n", - "ar 1\n", - "Name: count, dtype: int64" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lyrics_distinct_all[\"lyrics_sanitized_lang_lingua\"].value_counts(dropna=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
_idlyricslyrics_languagelyrics_sanitizedlyrics_sanitized_langtrackartisttags_lfmmicro_genres_lfmprimary_tag_geniusall_tags_geniuslyrics_sanitized_lang_lingua
440716933435[Produced by WZRD]\\n\\n\"Now certainly, we all recognize the extremely, extremely low probability of life existing on the moon.\"\\n\\n[Intro]\\nHmm, hmm, alright\\nHmm, hmm, hmm\\n\\n[Verse 1]\\nDrinking again, drinking again\\nBottles up, I'm in it to win\\nWith none of my friends, just me and this bottle...en\"Now certainly, we all recognize the extremely, extremely low probability of life existing on the moon.\"\\n\\nHmm, hmm, alright\\nHmm, hmm, hmm\\n\\nDrinking again, drinking again\\nBottles up, I'm in it to win\\nWith none of my friends, just me and this bottle\\nPeople say that I'm off, say that I'm of...enGoing to the CeremonyKid Cudi{'Hip-Hop': 100, 'electronic': 100, 'hip hop': 67, 'rock': 67, 'alternative rock': 34, 'american': 34, 'alternative hip-hop': 34, '10s': 34, 'alternative hip hop': 34, 'kid cudi': 34, 'its all happening': 34}{'hip hop': 67, 'rock': 67, 'alternative rock': 34, 'alternative hip hop': 34}denmark{'primary': 'denmark', 'all': ['denmark', 'denmark', 'denmark', 'denmark', 'rap', 'alternative-rock', 'space-rock', 'rock', 'rap']}en
1236835844478(Check this out, DJ E-V)\\n\\n[Verse]\\nHeeey, she say I'm different\\nI'm zoned like, how bitch?\\nShe say, I dress cool\\nAnd cause my accent\\nOh shit, this girl must want a nut\\nI'mma jizz up in her face\\nWhile I'm palming the butt\\nDidn't do my struck, cowboy mid-western\\nShe did it all for me, no...en(Check this out, DJ E-V)\\n\\nHeeey, she say I'm different\\nI'm zoned like, how bitch?\\nShe say, I dress cool\\nAnd cause my accent\\nOh shit, this girl must want a nut\\nI'mma jizz up in her face\\nWhile I'm palming the butt\\nDidn't do my struck, cowboy mid-western\\nShe did it all for me, now it's he...enSkit - Foggy GlassesKid Cudi{'vugube62': 100}NaNdenmark{'primary': 'denmark', 'all': ['denmark', 'denmark', 'rap', 'rap']}en
1781142985758[Intro]\\n(If young Metro don't trust you, I'm gon' shoot you)\\n\\n[Chorus]\\nRemember feelin' broke as fuck (Yeah)\\nBut now I'm pullin' up in Rover trucks (I'm pullin' up in Rover trucks now)\\nRemember these bitches ain't wanna fuck\\nNow she give me head outside of Toys\"R\"Us (These bitches suck an...en(If young Metro don't trust you, I'm gon' shoot you)\\n\\nRemember feelin' broke as fuck (Yeah)\\nBut now I'm pullin' up in Rover trucks (I'm pullin' up in Rover trucks now)\\nRemember these bitches ain't wanna fuck\\nNow she give me head outside of Toys\"R\"Us (These bitches suck and fuck me now)\\nWhe...enUpNAV{'trap': 100, 'rap': 50, 'canada': 50, 'pop rap': 50, 'cloud rap': 50, 'emo rap': 50, 'alternative rnb': 50, 'toronto sound': 50}{'trap': 100, 'rap': 50, 'pop rap': 50, 'emo rap': 50}denmark{'primary': 'denmark', 'all': ['rap', 'canada', 'trap', 'rap']}en
2009422256883(Kids voice: Yooo, yoo, yoo)\\n\\n[Verse 1: Hodgy] (x4)\\nI tell a little homie, this is life\\nI tell these cute bitches, get right\\nLight a blunt for everybody, get high\\nEverything is gonna be alright\\n\\n[Hook: Hodgy]\\nI'm lyin' on a landslide\\nWith a bag of California to smoke\\nAn ounce of shroo...en(Kids voice: Yooo, yoo, yoo)\\n\\n(x4)\\nI tell a little homie, this is life\\nI tell these cute bitches, get right\\nLight a blunt for everybody, get high\\nEverything is gonna be alright\\n\\nI'm lyin' on a landslide\\nWith a bag of California to smoke\\nAn ounce of shrooms for nature walks -\\nAnd hide ...enKarateman Feat. Left BrainHodgy BeatsNaNNaNdenmark{'primary': 'denmark', 'all': ['denmark', 'denmark', 'rap', 'rap', 'denmark']}en
2183017371050[Intro:]\\n(Mumbling.....)\\nNothing is wrong\\nNow we're all alone...\\n\\n[Hook:]\\nAnd now we're all alone\\nYour friends are all long gone\\nThey're already home, you're already wrong\\nYou're alle alone...\\nCome here girl, you ain't walkning straight\\nClose your mouth, cause you ain't talking straig...en(Mumbling.....)\\nNothing is wrong\\nNow we're all alone...\\n\\nAnd now we're all alone\\nYour friends are all long gone\\nThey're already home, you're already wrong\\nYou're alle alone...\\nCome here girl, you ain't walkning straight\\nClose your mouth, cause you ain't talking straight\\nI know it's har...enGucci GogglesJimmy JohnsonNaNNaNdenmark{'primary': 'denmark', 'all': ['denmark', 'rap', 'rap']}en
.......................................
124941529870494[Verse 1]\\nYou thought that I could change\\nBut I'm all the same, girl, I'm all the same\\nYou thought that you could work me out, ooh-ooh\\n\\n[Chorus 1]\\nIt's just that all these ordinary things, ordinary things\\nSeemed to hunt you, making me wanna dump you\\nJust that all these ordinary things, o...enYou thought that I could change\\nBut I'm all the same, girl, I'm all the same\\nYou thought that you could work me out, ooh-ooh\\n\\nIt's just that all these ordinary things, ordinary things\\nSeemed to hunt you, making me wanna dump you\\nJust that all these ordinary things, ordinary things\\nSeems a...enOrdinary Things (Wankelmut Remix)Lukas Graham{'funkhaus europa beat the night': 100}NaNdenmark{'primary': 'denmark', 'all': ['r-b', 'pop', 'danmark', 'scandinavia', 'soul-pop', 'soul', 'r-b']}en
126756136084570[Verse 1]\\nYoung nigga getting busy dawg, I can't lie\\nBadder bitches in the city give me five five\\nI'm too into the culture, it's my time\\nIm on my junior year, already wasted nine lives (Yeah)\\nI'm really moving different things than last year\\nI didn't even think I'd be here\\nI put the press...enYoung nigga getting busy dawg, I can't lie\\nBadder bitches in the city give me five five\\nI'm too into the culture, it's my time\\nIm on my junior year, already wasted nine lives (Yeah)\\nI'm really moving different things than last year\\nI didn't even think I'd be here\\nI put the pressure on myse...enSmoothiesNoah CarterNaNNaNdenmark{'primary': 'denmark', 'all': ['denmark', 'rap', 'rap', 'danmark', 'scandinavia', 'denmark']}en
127180528816530[Verse 1]\\nYour roommate got a man\\nThem walls reminds you of your lust\\nYour ex didn't understand\\nCause he wasn't raised with divorce\\nWe're from the same generation, I know\\nAnd relationships are more breakable than before, uh\\nSo don't blame me when I tell you that I don't trust nobody\\nWe'r...enYour roommate got a man\\nThem walls reminds you of your lust\\nYour ex didn't understand\\nCause he wasn't raised with divorce\\nWe're from the same generation, I know\\nAnd relationships are more breakable than before, uh\\nSo don't blame me when I tell you that I don't trust nobody\\nWe're both in t...enNot ImpressedLouis Rustum{'atmospheric': 100, 'r&b': 100, 'hukaos': 100}{'r&b': 100}denmark{'primary': 'denmark', 'all': ['denmark', 'rap', 'danmark', 'rap', 'denmark']}en
127436932411507[Intro]\\nYup, yup\\nYup\\nUh\\n\\n[Verse 1]\\nI hope you're proud of me, dude I grew to be\\nIngenuity influenced by your eulogy\\nGoing through memories like they were movie scenes\\nI know I been the shit, all these people full of me\\nI admit, I guess I'm full of myself, too\\nThere's just a bunch of s...enYup, yup\\nYup\\nUh\\n\\nI hope you're proud of me, dude I grew to be\\nIngenuity influenced by your eulogy\\nGoing through memories like they were movie scenes\\nI know I been the shit, all these people full of me\\nI admit, I guess I'm full of myself, too\\nThere's just a bunch of shit, I wish I could ...enREMember (Live)Mac MillerNaNNaNdenmark{'primary': 'denmark', 'all': ['rap', 'rap']}en
127499238042016[Intro: Doctor & Patient\\nAw, OK doc\\nAlright, that's good\\nAhhh, doc that feels good\\nVery good\\nIt feel good in there\\nWatch this thing here for a few minutes, OK\\nThank you mr. Doctor\\nThank you, thank you\\nOK, sit down\\nI'll call you 10\\n\\n[Pre-Chorus]\\nBaby i wanna be there but you know tha...en[Intro: Doctor & Patient\\nAw, OK doc\\nAlright, that's good\\nAhhh, doc that feels good\\nVery good\\nIt feel good in there\\nWatch this thing here for a few minutes, OK\\nThank you mr. Doctor\\nThank you, thank you\\nOK, sit down\\nI'll call you 10\\n\\nBaby i wanna be there but you know that it's hard fo...enSupermanRicky HilNaNNaNdenmark{'primary': 'denmark', 'all': ['denmark', 'pop', 'pop', 'alternative']}en
\n", - "

228 rows × 12 columns

\n", - "
" - ], - "text/plain": [ - " _id lyrics lyrics_language lyrics_sanitized lyrics_sanitized_lang track artist tags_lfm micro_genres_lfm primary_tag_genius all_tags_genius lyrics_sanitized_lang_lingua\n", - "4407 16933435 [Produced by WZRD]\\n\\n\"Now certainly, we all recognize the extremely, extremely low probability of life existing on the moon.\"\\n\\n[Intro]\\nHmm, hmm, alright\\nHmm, hmm, hmm\\n\\n[Verse 1]\\nDrinking again, drinking again\\nBottles up, I'm in it to win\\nWith none of my friends, just me and this bottle... en \"Now certainly, we all recognize the extremely, extremely low probability of life existing on the moon.\"\\n\\nHmm, hmm, alright\\nHmm, hmm, hmm\\n\\nDrinking again, drinking again\\nBottles up, I'm in it to win\\nWith none of my friends, just me and this bottle\\nPeople say that I'm off, say that I'm of... en Going to the Ceremony Kid Cudi {'Hip-Hop': 100, 'electronic': 100, 'hip hop': 67, 'rock': 67, 'alternative rock': 34, 'american': 34, 'alternative hip-hop': 34, '10s': 34, 'alternative hip hop': 34, 'kid cudi': 34, 'its all happening': 34} {'hip hop': 67, 'rock': 67, 'alternative rock': 34, 'alternative hip hop': 34} denmark {'primary': 'denmark', 'all': ['denmark', 'denmark', 'denmark', 'denmark', 'rap', 'alternative-rock', 'space-rock', 'rock', 'rap']} en\n", - "12368 35844478 (Check this out, DJ E-V)\\n\\n[Verse]\\nHeeey, she say I'm different\\nI'm zoned like, how bitch?\\nShe say, I dress cool\\nAnd cause my accent\\nOh shit, this girl must want a nut\\nI'mma jizz up in her face\\nWhile I'm palming the butt\\nDidn't do my struck, cowboy mid-western\\nShe did it all for me, no... en (Check this out, DJ E-V)\\n\\nHeeey, she say I'm different\\nI'm zoned like, how bitch?\\nShe say, I dress cool\\nAnd cause my accent\\nOh shit, this girl must want a nut\\nI'mma jizz up in her face\\nWhile I'm palming the butt\\nDidn't do my struck, cowboy mid-western\\nShe did it all for me, now it's he... en Skit - Foggy Glasses Kid Cudi {'vugube62': 100} NaN denmark {'primary': 'denmark', 'all': ['denmark', 'denmark', 'rap', 'rap']} en\n", - "17811 42985758 [Intro]\\n(If young Metro don't trust you, I'm gon' shoot you)\\n\\n[Chorus]\\nRemember feelin' broke as fuck (Yeah)\\nBut now I'm pullin' up in Rover trucks (I'm pullin' up in Rover trucks now)\\nRemember these bitches ain't wanna fuck\\nNow she give me head outside of Toys\"R\"Us (These bitches suck an... en (If young Metro don't trust you, I'm gon' shoot you)\\n\\nRemember feelin' broke as fuck (Yeah)\\nBut now I'm pullin' up in Rover trucks (I'm pullin' up in Rover trucks now)\\nRemember these bitches ain't wanna fuck\\nNow she give me head outside of Toys\"R\"Us (These bitches suck and fuck me now)\\nWhe... en Up NAV {'trap': 100, 'rap': 50, 'canada': 50, 'pop rap': 50, 'cloud rap': 50, 'emo rap': 50, 'alternative rnb': 50, 'toronto sound': 50} {'trap': 100, 'rap': 50, 'pop rap': 50, 'emo rap': 50} denmark {'primary': 'denmark', 'all': ['rap', 'canada', 'trap', 'rap']} en\n", - "20094 22256883 (Kids voice: Yooo, yoo, yoo)\\n\\n[Verse 1: Hodgy] (x4)\\nI tell a little homie, this is life\\nI tell these cute bitches, get right\\nLight a blunt for everybody, get high\\nEverything is gonna be alright\\n\\n[Hook: Hodgy]\\nI'm lyin' on a landslide\\nWith a bag of California to smoke\\nAn ounce of shroo... en (Kids voice: Yooo, yoo, yoo)\\n\\n(x4)\\nI tell a little homie, this is life\\nI tell these cute bitches, get right\\nLight a blunt for everybody, get high\\nEverything is gonna be alright\\n\\nI'm lyin' on a landslide\\nWith a bag of California to smoke\\nAn ounce of shrooms for nature walks -\\nAnd hide ... en Karateman Feat. Left Brain Hodgy Beats NaN NaN denmark {'primary': 'denmark', 'all': ['denmark', 'denmark', 'rap', 'rap', 'denmark']} en\n", - "21830 17371050 [Intro:]\\n(Mumbling.....)\\nNothing is wrong\\nNow we're all alone...\\n\\n[Hook:]\\nAnd now we're all alone\\nYour friends are all long gone\\nThey're already home, you're already wrong\\nYou're alle alone...\\nCome here girl, you ain't walkning straight\\nClose your mouth, cause you ain't talking straig... en (Mumbling.....)\\nNothing is wrong\\nNow we're all alone...\\n\\nAnd now we're all alone\\nYour friends are all long gone\\nThey're already home, you're already wrong\\nYou're alle alone...\\nCome here girl, you ain't walkning straight\\nClose your mouth, cause you ain't talking straight\\nI know it's har... en Gucci Goggles Jimmy Johnson NaN NaN denmark {'primary': 'denmark', 'all': ['denmark', 'rap', 'rap']} en\n", - "... ... ... ... ... ... ... ... ... ... ... ... ...\n", - "1249415 29870494 [Verse 1]\\nYou thought that I could change\\nBut I'm all the same, girl, I'm all the same\\nYou thought that you could work me out, ooh-ooh\\n\\n[Chorus 1]\\nIt's just that all these ordinary things, ordinary things\\nSeemed to hunt you, making me wanna dump you\\nJust that all these ordinary things, o... en You thought that I could change\\nBut I'm all the same, girl, I'm all the same\\nYou thought that you could work me out, ooh-ooh\\n\\nIt's just that all these ordinary things, ordinary things\\nSeemed to hunt you, making me wanna dump you\\nJust that all these ordinary things, ordinary things\\nSeems a... en Ordinary Things (Wankelmut Remix) Lukas Graham {'funkhaus europa beat the night': 100} NaN denmark {'primary': 'denmark', 'all': ['r-b', 'pop', 'danmark', 'scandinavia', 'soul-pop', 'soul', 'r-b']} en\n", - "1267561 36084570 [Verse 1]\\nYoung nigga getting busy dawg, I can't lie\\nBadder bitches in the city give me five five\\nI'm too into the culture, it's my time\\nIm on my junior year, already wasted nine lives (Yeah)\\nI'm really moving different things than last year\\nI didn't even think I'd be here\\nI put the press... en Young nigga getting busy dawg, I can't lie\\nBadder bitches in the city give me five five\\nI'm too into the culture, it's my time\\nIm on my junior year, already wasted nine lives (Yeah)\\nI'm really moving different things than last year\\nI didn't even think I'd be here\\nI put the pressure on myse... en Smoothies Noah Carter NaN NaN denmark {'primary': 'denmark', 'all': ['denmark', 'rap', 'rap', 'danmark', 'scandinavia', 'denmark']} en\n", - "1271805 28816530 [Verse 1]\\nYour roommate got a man\\nThem walls reminds you of your lust\\nYour ex didn't understand\\nCause he wasn't raised with divorce\\nWe're from the same generation, I know\\nAnd relationships are more breakable than before, uh\\nSo don't blame me when I tell you that I don't trust nobody\\nWe'r... en Your roommate got a man\\nThem walls reminds you of your lust\\nYour ex didn't understand\\nCause he wasn't raised with divorce\\nWe're from the same generation, I know\\nAnd relationships are more breakable than before, uh\\nSo don't blame me when I tell you that I don't trust nobody\\nWe're both in t... en Not Impressed Louis Rustum {'atmospheric': 100, 'r&b': 100, 'hukaos': 100} {'r&b': 100} denmark {'primary': 'denmark', 'all': ['denmark', 'rap', 'danmark', 'rap', 'denmark']} en\n", - "1274369 32411507 [Intro]\\nYup, yup\\nYup\\nUh\\n\\n[Verse 1]\\nI hope you're proud of me, dude I grew to be\\nIngenuity influenced by your eulogy\\nGoing through memories like they were movie scenes\\nI know I been the shit, all these people full of me\\nI admit, I guess I'm full of myself, too\\nThere's just a bunch of s... en Yup, yup\\nYup\\nUh\\n\\nI hope you're proud of me, dude I grew to be\\nIngenuity influenced by your eulogy\\nGoing through memories like they were movie scenes\\nI know I been the shit, all these people full of me\\nI admit, I guess I'm full of myself, too\\nThere's just a bunch of shit, I wish I could ... en REMember (Live) Mac Miller NaN NaN denmark {'primary': 'denmark', 'all': ['rap', 'rap']} en\n", - "1274992 38042016 [Intro: Doctor & Patient\\nAw, OK doc\\nAlright, that's good\\nAhhh, doc that feels good\\nVery good\\nIt feel good in there\\nWatch this thing here for a few minutes, OK\\nThank you mr. Doctor\\nThank you, thank you\\nOK, sit down\\nI'll call you 10\\n\\n[Pre-Chorus]\\nBaby i wanna be there but you know tha... en [Intro: Doctor & Patient\\nAw, OK doc\\nAlright, that's good\\nAhhh, doc that feels good\\nVery good\\nIt feel good in there\\nWatch this thing here for a few minutes, OK\\nThank you mr. Doctor\\nThank you, thank you\\nOK, sit down\\nI'll call you 10\\n\\nBaby i wanna be there but you know that it's hard fo... en Superman Ricky Hil NaN NaN denmark {'primary': 'denmark', 'all': ['denmark', 'pop', 'pop', 'alternative']} en\n", - "\n", - "[228 rows x 12 columns]" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lyrics_distinct_all.loc[(lyrics_distinct_all[\"primary_tag_genius\"] == \"denmark\")] # [\"lyrics_sanitized_lang\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "# drop NaN values\n", - "lyrics_distinct_all = lyrics_distinct_all.dropna(subset=[\"lyrics_sanitized_lang_lingua\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Set up different Versions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Lower" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "lyrics_distinct_all[\"lyrics_sanitized_lower\"] = lyrics_distinct_all[\"lyrics_sanitized\"].str.lower()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Non-punctuated" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 1259329/1259329 [04:24<00:00, 4757.54it/s] \n" - ] - } - ], - "source": [ - "# use Constants.PUNCTUATION_CHARS to remove all punctuation from lyrics_sanitized\n", - "# for each char separately\n", - "\n", - "\n", - "def remove_punctuation(text):\n", - " for punct in Constants.PUNCTUATION_CHARS:\n", - " text = text.replace(punct, \"\")\n", - " return text\n", - "\n", - "\n", - "lyrics_distinct_all[\"lyrics_sanitized_rmp\"] = lyrics_distinct_all[\"lyrics_sanitized\"].progress_apply(remove_punctuation)\n", - "lyrics_distinct_all[\"lyrics_sanitized_lower_rmp\"] = lyrics_distinct_all[\"lyrics_sanitized_rmp\"].str.lower()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Segment" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "lyrics_distinct_all[\"verses\"] = lyrics_distinct_all[\"lyrics_sanitized\"].str.split(\"\\n\\n\")\n", - "# lower\n", - "lyrics_distinct_all[\"verses_lower\"] = lyrics_distinct_all[\"lyrics_sanitized_lower\"].str.split(\"\\n\\n\")\n", - "# remove punctuation\n", - "lyrics_distinct_all[\"verses_rmp\"] = lyrics_distinct_all[\"lyrics_sanitized_rmp\"].str.split(\"\\n\\n\")\n", - "lyrics_distinct_all[\"verses_lower_rmp\"] = lyrics_distinct_all[\"lyrics_sanitized_lower_rmp\"].str.split(\"\\n\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 0%| | 0/1259329 [00:00wenn du nur zweimal im jahr post kriegst!<',\n", - " 'mein lieber hiphop, wo bist du nur, wenn man dich braucht? du sonnst deinen dicken hintern zwischen palmen und bambus',\n", - " \"auf irgend so 'm luxushotel-campus\",\n", - " 'und schlürfst mittlerweile literweise schampus',\n", - " 'und so hast du die beste party verpasst, ey, alle waren da, alles, was rang und namen hat',\n", - " \"sogar dieter gorny's mutter kam mit damenbart!\",\n", - " \"die musikbranche macht 'n fass auf\",\n", - " 'und prämiert deinen tollsten reim und besten basslauf!',\n", - " 'den schärfsten beat, das letzte und erste lied',\n", - " 'anlässlich deines ersten todestags!',\n", - " 'die presse feiert ihre lustigen schlagzeilen, so:',\n", - " 'hiphop lebt vielleicht in hundert jahren! oder: könig rock macht sich rap zum untertan!',\n", - " 'und alles, und ich mein, wirklich alles, was in diesem land je ein haus gerockt hat, war da, um das gegenteil zu beweisen!',\n", - " 'ausser du...',\n", - " \"ich mein', die jungs und mädels haben gemalt und brechgetanzt\",\n", - " 'während sprechgesangsakrobaten',\n", - " 'die show ihres lebens am mikro makro starten',\n", - " \"und ich steh' mittendrin und vergess' den alltagsstress\",\n", - " \">i guess that's the time when i'm not depressed<\",\n", - " \"wenn ich das mikro test', einz, zwo, mic-check one, two, heute gibt 's in eurer stadt verbales taekwondo\",\n", - " 'daniel san macht euch den kranich',\n", - " \"gibt 's doch gar nicht. euer style ist fett wie h-milch, süss wie cola-light\",\n", - " \"meiner hat sich schnell entwickelt wie 'n polaroid\",\n", - " 'weil, nur wenn die klamotten abhotten',\n", - " 'wissen die jungs, was rocken heisst',\n", - " \"weil, dann gibt's schnörckellos party ohne dunst und trockeneis\",\n", - " \"beschränkt auf 's wesentliche in allen lebenslagen:\",\n", - " '>reim, beat und bass, sonst noch fragen<',\n", - " 'wohl kaum, aber endlich wird das, was du nie erlebt hast, selbstverständlich',\n", - " 'weil die leute reifen und scheinbar begreifen, dass:',\n", - " \">progressions can't be made if we're separate forever!<\",\n", - " 'na also, und auf kommando stürmen ein paar dutzend, zu deiner zeit als szene',\n", - " 'missinterpretierte kids die bühne und battlen sich hart aber gerecht',\n", - " 'o-ton: >warum sind deine texte so schlecht?<',\n", - " 'und so weiter, und so weiter: >bla, bla, bla!<',\n", - " 'und es tut gut zu sehen, wie die jungs das nehmen, und sich gegenseitig brennen mit der kraft eines etwas zu alten toasters',\n", - " '>i dedicate this to braggers and boasters!<',\n", - " 'schoen, dass es euch, schoen, dass es euch gibt!',\n", - " \"und es tut gut zu sehen, die sportsfreunde sind in topform, und bereit für 'n abend rocken alles zu opfern\",\n", - " \"aber wem erzähl' ich das? du hängst mit deinen neuen freunden ab, den üblichen verdächtigen möchtegern drogendealern\",\n", - " 'halten sich für keyzer soze persönlich, und während sie kohle zählend auf ihren grammy warten',\n", - " \"koksen sie sich zu und schlürfen remy martin und machen böse gesichter wie echte gangster y'all\",\n", - " '>i think that smiling in public is against the law!<',\n", - " 'tja, da kann man ja nur gratulieren',\n", - " \"sich 'n hosenbein hochkrempeln wie 'n radkurier, benz fahren statt mountain-bicycle\",\n", - " \"und für 'n schönen tod beten wie durch sharon stones eispickel. es gab zeiten, da hattest du mehr kampfgeist als ben-hur\",\n", - " 'heute schickst du ganze alben durch die zensur',\n", - " 'und während du und deine neuen spielkammeraden',\n", - " 'ihr rotationsabo feiern, feiern die kids die erkenntnis, das ein fetter, besoffener, unsportlicher hiphop',\n", - " \"für sie überflüssig ist wie 'n blinddarm\",\n", - " '>den schmerz, den der kommerz verursacht, lindern!<',\n", - " 'einen für den job, zwei um des hiphop willen, aber du klopfst an die himmelstür mit bob dylan',\n", - " 'drei für den, der dich, deine nine stammtischkumpels und vivas-jungs mattsetzt',\n", - " '>cool< wie beavis und butthead. null komma nix für den, der den quatsch bestimmt',\n", - " \">damn, i wish i wasn't such a wimp!<\",\n", - " \"da würd' ich die welt wissen lassen, dass es dich noch gibt\",\n", - " \"ich würd' mir was einfallen lassen, so 'n ich-hab-elvis-gesehen-scheiss, und alle register ziehen als meister des story-telling\",\n", - " 'und auf die tränendrüsen drücken wie tory spelling, so die verlorene-schaf-schiene fahren',\n", - " 'und von dem kerl erzählen, der viel zu spät schnallte, dass er schiefliegt, wie jens weissflog',\n", - " '>und langsam merkte, dass die zeit an ihm vorbeizog!<',\n", - " \"und ich würd' extra dick auftragen mit der geschichte um diesen brief\",\n", - " \">i don't care, what you care, i just give, what you receive!<\",\n", - " 'und deine neuen freunde mit ihren lustigen dogmen',\n", - " \"haben immer noch keinen platz in meinem walkman. aber was auch immer ich anpranger'\",\n", - " \"ich bleib' doch nur dein handlanger, weil, ich lebe diesen blödsinn und geh' darin auf wie lötzinn!\",\n", - " \">aber eine letzte bitte hab' ich noch an dich!<\",\n", - " '>take these words home and think it through!<',\n", - " '>and just let nature do the rest!<',\n", - " 'wollt ihr wissen was ich treib wenn ich rappe',\n", - " 'geschichten die ich höre sachen die ich neu entdecke',\n", - " 'alle fragen sich ey mann was der hat das hab ich nicht',\n", - " 'viele schaben sich und mit kritik',\n", - " 'ja das spar ich nicht seit ich 17 bin',\n", - " 'alda ich wollt ich nie woanders hin',\n", - " 'für mich war der rapscheiß ein totaler neubeginn',\n", - " 'pack die chance am schopf und wie der koch',\n", - " 'serviere ich ein wortspielmenü was wollt ihr noch?',\n", - " 'ich bin jung schwarz groß mach den alten omas angst',\n", - " 'scheiß auf den respekt scheiß auf ihre akzeptanz',\n", - " 'wechseln auf der straße die straßenseite in der bahn den platz',\n", - " 'beobachten mich voll auch wenn ich mich kurz kratz',\n", - " 'also tauch ich unter tief so dass mich keiner sieht',\n", - " 'undercoverstyles das is kein stress das is krieg',\n", - " 'ich hab so viel verbündete',\n", - " 'keiner wollts mir glauben als ich dies verkündete',\n", - " 'ich liebe meine - meine leute lieben mich vielleicht',\n", - " 'lieb ich auch dich vielleicht',\n", - " 'aber auch nicht das werden wir sehn',\n", - " 'by the scores',\n", - " 'transatlantic like arabs and berbers warriors',\n", - " 'slash black lord',\n", - " 'carrying torches map the warpath blackboards',\n", - " 'attack your fortress back to back in the soldiers quarters',\n", - " 'following orders',\n", - " 'draw swords as we forge borders',\n", - " 'and want more for our sons and daughters',\n", - " 'we close doors change course to uncharted waters',\n", - " \"it's martial law we taking over storming ports on the shore\",\n", - " 'but what for',\n", - " \"we were stolen sold to work for what's yours\",\n", - " 'balterzar saw the north star',\n", - " 'arabian moor gave gifts to the poor',\n", - " 'then they gave us slave labor disrespected us more',\n", - " 'we expected forty acres then they gave us three forths',\n", - " 'now we free rebirthing with the bulk of the force',\n", - " 'reimburse us for the holocaust talk to the boss',\n", - " \"snatch your purse if you've got more yearning to floss\",\n", - " 'smack you worse than your papa no words lost',\n", - " 'we up to par raw shit now staccato the bar',\n", - " 'i seen the niggas in your click we could tackle´em all',\n", - " \"yo we black and that's it\",\n", - " 'me and afrob bomb plot',\n", - " 'gunnin´ this shit yo we runnin´ this shit',\n", - " \"we getting rich taking paper 'cause this hunger's a bitch\",\n", - " 'step back respect it we got it locked on the top',\n", - " 'we some niggas on some next shit gunning the block',\n", - " 'step back respect it we got it locked on the top',\n", - " 'we some niggas on some next shit top of the notch',\n", - " 'step back respect it we got it locked on the top',\n", - " 'we some niggas on some next shit gunning the block',\n", - " 'step back respect it we got it locked on the top',\n", - " 'we some niggas on some next shit gunning the block',\n", - " 'step back respect it',\n", - " 'ja mmh',\n", - " 'vo barking bis in chreis drü (eheh)',\n", - " 'ok jetz’',\n", - " 'yeah, yeah, yeah',\n", - " 'mokuba lives beats',\n", - " 'yeah-yeah, yeah, yeah',\n", - " \"i might link my ting from barkin'\",\n", - " \"7 a.m. in the mornin'\",\n", - " \"she's callin', i'm yawnin'\",\n", - " \"she's jarrin', no stallin'\",\n", - " \"i might link my ting from barkin'\",\n", - " \"7 a.m. in the mornin' (yeah, yeah, yeah)\",\n", - " \"she's callin', i'm yawnin' (yeah, yeah, yeah)\",\n", - " \"she's jarrin', no stallin'\",\n", - " \"i might link my ting from barkin' (in the mornin')\",\n", - " \"7 a.m. in the mornin'\",\n", - " \"she's callin', i'm yawnin' (i'm yawnin')\",\n", - " \"she's jarrin', no stallin'\",\n", - " \"i might link my ting from barkin' (yawnin')\",\n", - " \"7 a.m. in the mornin'\",\n", - " \"she's callin', i'm yawnin' (i'm yawnin')\",\n", - " \"she's jarrin', no stallin'\",\n", - " 'ich glaub ich link hüt mis friesi ting',\n", - " 'link up wenni in wiedike bin',\n", - " 'und ich weiss sie hät ihre fründ',\n", - " 'aber irgendwie nüm so viеl liebi für ihn',\n", - " 'egal d’sunne schiint nume für ois zwеi grad',\n", - " 'mir händ es good ting goin’ - sugar minott',\n", - " 'peroni im park, nacher wohnig und znacht',\n", - " 'und ich bliib, han e schwächi für sie - delilah',\n", - " 'kein grund zum wo anegah',\n", - " 'vorhäng bliibed zoge bis am namitag',\n", - " 'playlist r’n’b, mir rub-a-dub',\n", - " 'vapo macht farbe, caran d’ache',\n", - " 'plus bitzli liebi und hennessy (mmh bitzli hennessy)',\n", - " 'sie seit de link up isch fällig gsi',\n", - " 'genau die richtigi medizin',\n", - " 'für mis peng ting mini königin',\n", - " \"i might link my ting from barkin'\",\n", - " \"7 a.m. in the mornin'\",\n", - " \"she's callin', i'm yawnin'\",\n", - " \"she's jarrin', no stallin'\",\n", - " \"i might link my ting from barkin'\",\n", - " \"7 a.m. in the mornin' (yeah, yeah, yeah)\",\n", - " \"she's callin', i'm yawnin' (yeah, yeah, yeah)\",\n", - " \"she's jarrin', no stallin'\",\n", - " \"i might link my ting from barkin' (in the mornin')\",\n", - " \"7 a.m. in the mornin'\",\n", - " \"she's callin', i'm yawnin' (i'm yawnin')\",\n", - " \"she's jarrin', no stallin'\",\n", - " \"i might link my ting from barkin' (yawnin')\",\n", - " \"7 a.m. in the mornin'\",\n", - " \"she's callin', i'm yawnin' (i'm yawnin')\",\n", - " \"she's jarrin', no stallin'\",\n", - " 'many guys (many guys), many, many, many guys',\n", - " \"hate me and it's true, too bad\",\n", - " 'i just stunt on you, too bad',\n", - " \"i don't look like you\",\n", - " 'like many, many, many guys (many guys, yeah)',\n", - " \"hate me and it's true, too bad\",\n", - " 'i just stunt on you, like too bad',\n", - " \"i might link my ting from barkin'\",\n", - " \"7 a.m. in the mornin' (yeah, yeah, yeah)\",\n", - " \"she's callin', i'm yawnin' (yeah, yeah, yeah)\",\n", - " \"she's jarrin', no stallin'\",\n", - " \"i might link my ting from barkin'\",\n", - " \"7 a.m. in the mornin' (yeah, yeah, yeah)\",\n", - " \"she's callin', i'm yawnin' (yeah, yeah, yeah)\",\n", - " \"she's jarrin', no stallin'\",\n", - " \"i might link my ting from barkin'\",\n", - " \"7 a.m. in the mornin'\",\n", - " \"she's callin', i'm yawnin'\",\n", - " \"she's jarrin', no stallin'\",\n", - " \"i might link my ting from barkin'\",\n", - " \"7 a.m. in the mornin'\",\n", - " \"she's callin', i'm yawnin’ (i'm yawnin’)\",\n", - " 'hater rissed a mim thron scho sit tag 1',\n", - " 'aber mimi blibt chalt wie de polarchreis',\n", - " 'hater rissed a mim thron scho sit tag 1',\n", - " 'aber mimi blibt chalt wie de polarchreis',\n", - " 'yeah',\n", - " 'jong mimi bro',\n", - " 'king vo de city flow',\n", - " 'gemmer s mic ech kill die pisser im godzilla mode',\n", - " 'chom vo onde ond mach rapper zo sashimi roll',\n", - " 'mann zwöi nummer 1 albe gäge paar teenie hoes',\n", - " 'ond hater schiebed ehre felm',\n", - " 'doch am ändi send sie niemols wonech ben (nie)',\n", - " 'log ech cha das game ned verloh mann',\n", - " 'wörd de biggie dech ghöre, wörd är freiwellig goh',\n", - " 'homie log sett mine albe darf de ch-rap träume',\n", - " 'ech ha liebi för die city, sie esch smart, sie esch loyal',\n", - " 'es gohd eastside, westside, 4-1, gang sign',\n", - " 'log mer läbed schnell, es esch de fast life',\n", - " 'young mimi',\n", - " 'hater rissed a mim thron scho sit tag 1',\n", - " 'aber mimi blibt chalt wie de polarchreis',\n", - " 'ond die putos wend min thron scho sit tag 1',\n", - " 'aber log ech blib blib chalt wie de polarchreis',\n", - " 'fast life, fast life',\n", - " 'mini city 4-1',\n", - " 'homie log mer läbid schnell yeah',\n", - " 'fast life, fast life',\n", - " 'mini clique worldwide',\n", - " 'homie log mer läbid schnell wooh',\n", - " 'digga fast life, bleich wie s schiine vom mond',\n", - " 'no sleep mann, ech schlof met de cousine vom tod',\n", - " '2.5 in mathi bes zom teenie idol',\n", - " 'das send köss för mini mam ech hol för sie die million',\n", - " 'log mol ech be back us de zuekonft, werklech wohr',\n", - " 'ech spele fifa 20 scho sett 13 johr',\n", - " 'chom säg was redisch du vo hype',\n", - " 'ech zementier min name',\n", - " 'ond noch crack ufem 2 weder back ufem 1',\n", - " 'king mimi log ech jage de rekord',\n", - " 'mer send ned die glichi liga, nedemol de glichi sport',\n", - " 'läbe schnell, gömmer hei werds scho hell',\n", - " 'digga chom ech mol i himmel hanech heiweh to hell',\n", - " 'fast life',\n", - " 'du kennsch mi name es esch young mik',\n", - " 'das esch de felm wo mer fahred chom klar',\n", - " 'log ech ha jongs hender mer, sie send grad',\n", - " 'ech bereue ken einzige tag',\n", - " 'fast life fast life',\n", - " 'mini city 4-1',\n", - " 'fast life fast life',\n", - " 'mini city 4-1',\n", - " 'brraa',\n", - " 'yeah (4x)',\n", - " 'yeah',\n", - " 'sie hend üs ghatet wäg de stemm ond beats',\n", - " 'wäg de skinny jeans',\n", - " 'jetz semmer on top, homeboy',\n", - " 'never change a winning team',\n", - " 'sie kopiered miksi, chom scho fegg die mini me’s',\n", - " 'brudi mini bio werd mol gspellt vom keanu reeves',\n", - " 'fegg die räubergschechte, ech destroye hipster-rapper',\n", - " 'wie en koala fucking eukalyptus-blätter',\n", - " 'splatter-flow, log de king vernechtet jetze all die neue tracks verbote vom betäubigsmettel-gsetz jetz',\n", - " 'ey du chattisch nor met fette fraue',\n", - " 'jetz esch de boy am mic, rapper haued 2 för 1 – happy hour',\n", - " 'neue scheiss, metzger-aura – löiefleisch',\n", - " 'miks esch back, 041, voll de hype',\n", - " 'perino beat, fegg de rescht',\n", - " 'jetz esch miksi back, dynamitflow',\n", - " 'stell de vödu chüel, mic-check, beastmode',\n", - " 'primakova brudi, falschi rolex',\n", - " 'hashtag am risse so wi coopsäck',\n", - " 'miksi back, mer holed glii gold',\n", - " 'stell de vödu chüel, mic-check, beastmode',\n", - " 'bombe bro, check de monster-flow',\n", - " 'zinédine zidane, michael jordan-mode',\n", - " 'mettelfenger för dä staat',\n", - " 'homie fegg uf was dä psycho wott',\n", - " 'ech bliib lieber broke rapper als en bürojob',\n", - " 'fuck, ech dänke so scho sett em erschte open-mic',\n", - " 'wenns mol nömm so klappt, de machi doppeläbe, walter white',\n", - " 's esch e iischalti wält, mer lönd üs ischalte, uschalte',\n", - " 'chli bhalte, ine schablone drifalte',\n", - " 'abgränze man sie chönd üs im striit bhalte',\n", - " 'domm bhalte, ziitalter vo ilänker',\n", - " 'jo-säger ond chliidänker',\n", - " 'd wält do esch ned fair man, doch was wer dis gejommer nötze',\n", - " 'ech ha ned laufe glehrt, dass ech mech s läbe lang moss böcke',\n", - " 'chom vo onde brudi, straight us de onderschecht',\n", - " 'crazy uf 100 bitch, schreis döre onterrecht',\n", - " 'mer esch doch egal, homie, was dini kollege losed',\n", - " 'das send goaner-boys, omarmer, met trompetehose',\n", - " 'check die bitches gänd sech miksi uf de pc-boxe',\n", - " 'rapper chratzed ab so wie de tesch uf üsem wg-bode',\n", - " 'wo sell ech afange, ch-rap esch hangeblobe',\n", - " 'so we dini vorhut inere zahnspange',\n", - " 's ged totalschade, kollateralschade',\n", - " 'be voll uf vödu imne fucking porzellan-lade',\n", - " 'das esch agebore, mer send karnivore',\n", - " 'du chonsch gratis ad parties, well du machsch d garderobe',\n", - " 'ond jetz schreit jedi: „log är esch romantisch, är esch playa-daddy“',\n", - " 'zom wexxe los ech katy perry',\n", - " 'boy',\n", - " 'party, party, party, party',\n", - " 'party, party, gangbang-party',\n", - " 'party, party, heiße party',\n", - " 'ghetto-bitch, spreiz die beine!',\n", - " 'party, party, heiße party',\n", - " 'party, party, gangbang-party',\n", - " 'party, party, heiße party',\n", - " 'ghetto-bitch, spreiz die beine!',\n", - " 'party, party, party, party',\n", - " \"der club ist voller mädchen, baby, heute wird's versaut\",\n", - " 'ich bin übermotiviert, ladys, holt die titten raus',\n", - " \"bounce, bounce zu dem bass, shake dein'n arsch-bubblebutt\",\n", - " 'hier geht die party richtig ab, zweihundert frauen sind hier nackt',\n", - " 'ich bin gentleman und halte deine haare, wenn du kotzt',\n", - " \"mach 'nen dreier auf'm klo, dein freund hat dich davor geboxt\",\n", - " 'meine nase ist verstopft, bin nur am ballern und ballern',\n", - " \"und seh' die girls, wie sie tanzen, ich will rattern und rattern\",\n", - " 'pa-party, party, gangbang-party',\n", - " 'party, party, heiße party (ladies night)',\n", - " 'ghetto-bitch, spreiz die beine!',\n", - " 'party, party, heiße party (ladies night)',\n", - " 'party, party, gangbang-party',\n", - " 'party, party, heiße party (ladies night)',\n", - " 'party-bitch, spreiz die beine!',\n", - " 'party, party, party, party',\n", - " 'der club ist mein zuhause, ich kenne keine pause',\n", - " 'jede nacht ladies night, um mich eine traube',\n", - " \"doppeldeckerfick, was für ein arsch in mei'm gesicht\",\n", - " 'gangbang-party, hier wird tag und nacht gefickt',\n", - " 'alle ladys (alle ladys) shaken ihre pussy',\n", - " \"geb' 'nen fick auf monogam, bitch, ich checke jede tussi\",\n", - " \"daddy-fetisch, baby, diese ladys nenn'n mich vati\",\n", - " 'alle sind willkommen zu dieser wilden party',\n", - " 'pa-party, party, gangbang-party',\n", - " 'party, party, heiße party (ladies night)',\n", - " 'ghetto-bitch, spreiz die beine!',\n", - " 'party, party, heiße party (ladies night)',\n", - " 'party, party, gangbang-party',\n", - " 'party, party, heiße party (ladies night)',\n", - " 'party-bitch, spreiz die beine!',\n", - " 'party, party, party, party (ladies night)',\n", - " 'pa-party, party, gangbang-party',\n", - " 'party, party, heiße party (ladies night)',\n", - " 'ghetto-bitch, spreiz die beine!',\n", - " 'party, party, heiße party (ladies night)',\n", - " 'party, party, gangbang-party',\n", - " 'party, party, heiße party (ladies night)',\n", - " 'party-bitch, spreiz die beine!',\n", - " 'party, party, party, party (ladies night)',\n", - " 'a wich little boy mi hear no like we',\n", - " 'wer',\n", - " 'a wich fassyhole mi hear a chad wi',\n", - " 'awhoo',\n", - " 'a wich ina mill mi hear no like we',\n", - " 'tell them come after wi name and low we',\n", - " 'after now we mek dem pitney a dead fi hungry',\n", - " 'come afer we name and low we',\n", - " 'after now we mek capleton bun dem daily',\n", - " 'bun dem out dem done get banned me beat dem up',\n", - " 'rubbish band mi broke the food pup the hand',\n", - " \"left the and gone to man can't comepare\",\n", - " 'with elephant man the girl them mi them number one',\n", - " 'gimme patsy gimme pam reva road all night long worster',\n", - " 'than a stallion mek she ball fi belly bottom elephant man',\n", - " 'and flames the don you know we are the number one',\n", - " 'girl them say them love slang when them see mi sing that one',\n", - " 'here number one pon the billboard ha',\n", - " 'selbst deine mutter hört meine stimme und schmilzt',\n", - " 'direkt wie butter kann dir sagen wie nass deiner',\n", - " 'freundin ihre futt war erst gesern abend haben',\n", - " 'wir uns beschnuppert und sie nennt mich ihren braunen zucker',\n", - " 'guckmal du hast einen gut bezahlten job als drucker trozdem',\n", - " 'zieht deine chica lieber an meiner hukka sie braucht mich wie',\n", - " 'ich mein hirnfutter und du stinkst immer noch wie ein fischkutter',\n", - " 'elephant man the dapper and mr. flamez the big pappa',\n", - " 'mek girl sit down ina me lappa elephant the dapper',\n", - " 'and mr.flamez the big papa and the girl them say we are them slappa',\n", - " 'elephant man the dapa and mr flamez the big papa',\n", - " 'yes we work the girl dem proper',\n", - " 'elephant man the dapa and mr.flamez the big papa',\n", - " 'mek girl bust like fire ey so mi say',\n", - " 'a wich fassyhole mi hear no like we a wich ina mill',\n", - " 'mi hear a chad we a which little boy we hear',\n", - " 'no like we tell them come after we name',\n", - " 'and low we you know after now we mek them pitney a dead',\n", - " 'fi hungry come after we name and low we after now we mek greed',\n", - " 'and no follow them monthly ey mr.flamez dj',\n", - " 'sogar ihr vater liebt meinen style und wär gern mein papa',\n", - " 'vercheckt seine plattensammlung inklusive abba',\n", - " 'trägt aufeinmal trainingsanzüge von kappa',\n", - " 'und sieht jetzt lieber yo statt tappert',\n", - " 'bun dem out dem done get banned',\n", - " 'me beat dem up rubbish band',\n", - " 'mi broke the food pup the hand',\n", - " \"left the and gone to man can't comepare with elephant man\",\n", - " 'the girl them mi them number one gimme patsy',\n", - " 'gimme pam reva road all night long worster than a stallion',\n", - " 'mek she ball fi belly bottom elephant man',\n", - " 'and flames the don bring it to me number one',\n", - " 'and this is a billboard song e',\n", - " 'verywhere we go the girl them say elephant and flamez',\n", - " 'a which little fool mi hear no like we wer',\n", - " 'a which posse yes neva rait we awhooo',\n", - " 'a which little boy mi hear a chad we',\n", - " 'tell them come after we name and low we',\n", - " 'after now we mek the pitney a dead fi hungry',\n", - " 'come after we name and low we',\n", - " 'after now we mek greed and na follow them monthly',\n", - " 'come after we name and low we',\n", - " 'after now we mek capleton a bun dem daily',\n", - " 'come after we name and low we',\n", - " 'after now we mek them album na sell grammy',\n", - " 'come after we name and low we',\n", - " 'geschnatter hinter seinem rücken ist ihm egal weil die kacker',\n", - " 'im leben eh nicht weiterkommen als packer',\n", - " 'während er im wohnzimmer meine texte nachblappert',\n", - " 'will die tochter das ich an der brust knabber',\n", - " 'tell them say no fight it when that tune here bust',\n", - " 'mi sey nobody fi stop it',\n", - " 'elephant man flamez the whole city we lock it',\n", - " 'stage show keep on all the club them jampacked',\n", - " 'yo cool platinum we a go sell it ice pun mi hand',\n", - " 'and mi no see nobody fi melt it',\n", - " 'love fi dee the girl them ina leather and velvet',\n", - " 'and you know se that elephant man',\n", - " 'hafi you know se mi want hold her and date it',\n", - " 'a which fassyhole',\n", - " 'welcome back to hollywood die hood wo dreame dien',\n", - " 'ertränke mich im mollyfluss und niemand hört mein cryen',\n", - " 'enter the void das dmt im system',\n", - " 'rabbit frank my trippy freund, eat vom tree of wisdom',\n", - " 'skate den boulevard entlang mdma fucked ma brain',\n", - " 'sehe stars over all speake nicht vom walk of fame',\n", - " 'nah ich schwebe higher als der gottverdammte birdman',\n", - " 'fuck auf gravity zieh interstellar ne line mit kurt cobain',\n", - " 'nightly grind paranoid park play das game of trap',\n", - " 'tick an larry clarks kids seven kilo crack',\n", - " 'feel mich wie heath ledger searche nach dem exit',\n", - " 'doch sin city catched ya und ich make den backflip',\n", - " 'oh captain my captain lead me to the dark side',\n", - " 'overdosis mollywood suicide im starlight',\n", - " 'streichle mit dem butterfly die goldbesetzte artery',\n", - " 'dazed and confuzed on my wave to harmony',\n", - " 'breakfast at tiffanys diamanten robbery',\n", - " 'ryan gosling holt mich ab verfolgt von math mcconaughey',\n", - " 'der true detective will mein blood catch me if you can',\n", - " 'flyn übern mullholland drive im delorean',\n", - " 'luxusvilla hollywoodhills swaglevel great gatsby',\n", - " 'coaste über pools of pills auf nem faded jetski',\n", - " 'vip parties doch ich move zum kfc',\n", - " 'teile mir die hotwings mit homeboy kevin spacey',\n", - " 'smoke danach mit james franco pineapple express',\n", - " 'kiss im rausch der feelings chloe grace moretz',\n", - " 'stepp mit ihr ins moonrise kingdom wo ich ihr die unschuld steale',\n", - " 'schenk ihr ne versacce chain als zeichen unsrer großen liebe',\n", - " 'stunte mit den droogs die korova milkbar',\n", - " 'sippen aus den boobs emma stones milk rar',\n", - " 'gangsign flash bmg gold an meinem finger',\n", - " 'i‘m the lord of the rings shawtys marla singer',\n", - " 'king der skreetz wie scarface drive fast im fieber',\n", - " 'ein illegales car race versus justin bieber',\n", - " 'look wie ich im aston cruise mehr style als james bond',\n", - " 'drive- by shooting treff tom cruise hat eh nichts gekonnt',\n", - " 'oh captain my captain lead me to the dark side',\n", - " 'overdosis mollywood suicide im starlight',\n", - " 'streichle mit dem butterfly die goldbesetzte artery',\n", - " 'dazed and confuzed on my wave to harmoney',\n", - " 'wandle als the walking dead on the lost highway',\n", - " 'all the fame maked mich mad dream of keira knightley',\n", - " 'turn erfüllt mit codein auf dem crystal blue up',\n", - " 'kann mein face nicht mehr feeln gelähmt wie kristen stewart',\n", - " 'spiel mir selbst das lied vom tod fuck sergio leone',\n", - " 'es handlet over mollywood die hood in der ich wohne',\n", - " 'sie maked aus mir ein mad demon meine nicht den actor',\n", - " 'eher so ein psychopath im stil of hannibal lecter',\n", - " 'live den california dream a nightmare on elm street',\n", - " 'die younger als james dean bitches trauern - verdient',\n", - " 'slide the last time auf dem hoverboard am sunset strip',\n", - " 'join den fight club werd ausgeknockt von brad pitt',\n", - " 'crawle durch die night sadder als bill murray',\n", - " 'will nur weg into the wild die-en without worry',\n", - " 'benebelt vom meskalin im sog der roten lichter',\n", - " 'folg ich mr keating in den club der toten dichter',\n", - " 'also',\n", - " 'i don‘t know about',\n", - " 'it‘s gonna be a very interesting time',\n", - " 'it‘s gonna be a long way',\n", - " 'but it‘s all wrong',\n", - " \"doesn't matter\",\n", - " 'wir tanzten einen sommer',\n", - " 'und ich war so oft, erschien es mir',\n", - " 'einen herzschlag lang so nah bei dir',\n", - " 'zeichen sehen, zeit verstehen',\n", - " 'über alle grenzen gehen',\n", - " 'und nichts war mir fremd an dir',\n", - " 'but everybody kept on sayin’',\n", - " 'watch i take your time',\n", - " 'but we won’t give up',\n", - " 'we won’t give in',\n", - " 'won’t give it all away',\n", - " 'no way to stay',\n", - " 'cause the spirit never dies',\n", - " 'we last forever',\n", - " 'spirit never dies',\n", - " 'we last forever',\n", - " 'too late – too late',\n", - " 'the spirit never dies',\n", - " 'we last forever',\n", - " 'the spirit never dies',\n", - " 'we last forever',\n", - " 'auf der suche nach dem sinn',\n", - " 'führten wir sie dahin',\n", - " 'kiss you goodbye',\n", - " 'wir bieten ton um ton',\n", - " 'imagination',\n", - " 'there’s nothing',\n", - " 'there’s nothing to tell about it',\n", - " 'but everybody kept on sayin’',\n", - " 'watch i i take your time',\n", - " 'but we won’t give up',\n", - " 'we won’t give in',\n", - " 'won’t give it all away',\n", - " 'shrazy records',\n", - " 'another fatrider production',\n", - " 'get crunk to this',\n", - " 'is about a girl real aguly right now',\n", - " 'yeah!',\n", - " 'what we will do about right now is...',\n", - " 'what we gone do',\n", - " 'we get crunk in this motherfucking',\n", - " 'you feel me?',\n", - " \"dj score what's happenin' baby?\",\n", - " \"it's nottin'\",\n", - " 'you let it gone',\n", - " 'stomp in this motherfucker',\n", - " 'stomp in this motherfucker',\n", - " \"all my niggas gettin' crunk in this motherfucker\",\n", - " 'and all you haters better get up quick',\n", - " 'before these guns get you shot up quick',\n", - " '(ahhhhhhhhhhhhh)',\n", - " '(yeaaaaaaaaahhhh!!!!!)',\n", - " 'who is in here?',\n", - " 'wer war das man?',\n", - " 'manuell smooth the hustla',\n", - " 'shit is deluxe motherfucker,ich unterschreibe kein dreck',\n", - " 'deswegen siehst du mich in deinem club mit diamonds on my neck',\n", - " '(yeaaaaaaaaahhhh!!!!!)',\n", - " 'ich hab a lot den plan',\n", - " 'und bin für eure bitches,sowas wie die offenbarung',\n", - " 'und ihr seit nur fake poser',\n", - " 'ich tanz nich im club',\n", - " 'i lean back and i am shake my shoulder',\n", - " '(yeaaaaaaaaahhhh!!!!!)',\n", - " 'ich spitt straight zum beat',\n", - " 'ihr ganzen affen könnt m nicht sehen wie paytv',\n", - " 'und jetzt feiert dieses hood tape',\n", - " 'und seitdem bin ich der erste deutsche rapper,der jetzt deutsch in der hood trägt',\n", - " '(yeaaaaaaaaahhhh!!!!!)',\n", - " 'werft eure cappies hoch',\n", - " 'zeigt mir was ihr represented!',\n", - " 'kommt,kommt!',\n", - " 'zeigt mir was ihr represented!',\n", - " 'werft eure ketten hoch',\n", - " 'zeigt mir was ihr represented!',\n", - " 'kommt,kommt!',\n", - " 'zeigt mir was ihr represented!',\n", - " '(aaaaaahhhhhhh)',\n", - " '(yeaaaaaaaaahhhh!!!!!)',\n", - " \"i'm back added\",\n", - " 'pure crack in the kitchen',\n", - " 'manuellsen is back to business',\n", - " \"ich halt es crunk from the floor to the sealin'\",\n", - " 'and the whole crowd screaming :',\n", - " '\"der pott is in nem building!\"',\n", - " 'soulcase made it happen',\n", - " 'score put it on',\n", - " 'manuell steigt in den pott zu dem dawn',\n", - " 'deutschland!what the fuck is up?',\n", - " 'deutschland is im club und ich fackel ihn ab',\n", - " 'duisburg motherfucker,halten two guns up!',\n", - " 'essen city motherfucker,halten two guns up!',\n", - " 'gelsenkirchen,bochum,halten two guns up!',\n", - " 'mühlheim city,oberhausen,halten two guns up!',\n", - " 'yeah!',\n", - " 'yeah!',\n", - " 'now you know what the fuck is up!',\n", - " 'soulcase made it happen and score put it on!',\n", - " \"it's nothing baby!\",\n", - " 'your boy manuellsen',\n", - " 'ruhrpott stand up!',\n", - " 'your prestige stand up to this!',\n", - " 'exabition motherfucker stand up to this!',\n", - " 'mondiao motherfucker stand up to this!',\n", - " 'alle clubs in deutschland stand up to this!',\n", - " '„sommer',\n", - " 'über den dächern meiner stadt riecht die luft nach marihuana“',\n", - " '\"really good, ah, who dis?\"',\n", - " '\"you neva heard about bonez mc and raf camora?\"',\n", - " '\"pussyclaat, german dancehall?\"',\n", - " '\"but me neva know dem dancehall ting a gwaan a germany. in germany a this is mad, man. dem sound like mavado and kartel.\"',\n", - " '\"me nah go tell you like.\"',\n", - " '\"weh deh talking? who dem name again?\"',\n", - " '\"it\\'s bonez mc and raf camora!\"',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " \"der weedman, du siehst mich immer mit 'ner dicken kiffkeule\",\n", - " \"ich lauf' durch mein viertel mit den knospen und mach' dick beute\",\n", - " \"bald besitz' ich coffeeshops wie die fette von disjointed\",\n", - " 'ich und deine mutter, wir sind fickfreunde, ah',\n", - " 'sie kommt vorbei, wenn dein vater grad bei der arbeit ist',\n", - " \"und nach dem sex erzählt sie mir, was ihr sohn für'n versager ist\",\n", - " \"direkt aus'm underground, spitte tracks wie 'ne panzerfaust\",\n", - " \"ihr mumblerapper klingt so, als hättet ihr 'n dicken schwanz im maul\",\n", - " 'mir scheißegal, was du für hazesorten hast',\n", - " \"ich rauch' , crack oder babatz\",\n", - " \"ich hab' auf labels gekackt, weil das game fuckt mich ab\",\n", - " \"ich stopf' so viel gras rein, dass das paper fast platzt, ah\",\n", - " 'deine slut hat sich grade auf meinen sack gesetzt',\n", - " 'hartzig, dass das weed sich schwerer cutten lässt',\n", - " 'früher war es maskenrap, heute ist es afrotrap',\n", - " 'ihr habt nix zu melden, weil ihr spasten alle kacke rappt',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " \"look! it's the machine, the most honorable (uh)\",\n", - " \"you ain't shit to me, nigga, i'll let your mama know (i'll tell her)\",\n", - " \"see that black van on your block, drivin' slow\",\n", - " 'hit the lights, doors slide open and that line will blow (prrt)',\n", - " 'money trees in my yard, i watch my dollars grow (cash)',\n", - " \"say what you want, my bank account got two commas though (eatin', nigga)\",\n", - " \"i'm that nigga you gotta know\",\n", - " 'gucci pajamas, my young pics look like rihanna though (hah)',\n", - " \"ayy, i'm just here to apply pressure (uh-huh)\",\n", - " \"i drop classics and ain't apply effort (that shit was light)\",\n", - " \"with the pitches, i score just like i'm clyde drexler (cash)\",\n", - " 'left the club i got my dick sucked in my tesla (hahaha)',\n", - " 'i made myself a boss nigga (cash)',\n", - " \"i greenlight it, you gettin' off, nigga (brrt, brrt)\",\n", - " 'ha, my young boy is kinda off, nigga (yeah)',\n", - " \"snortin' raw, squeezin' ar triggers\",\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " \"äh, ich versteh' nicht, was das vocalsample sagt\",\n", - " \"aber hätt's mich intressiert, hätt ich den produzent gefragt, ey yo\",\n", - " 'ihr denkt, ich wär abgehoben, ist okay so',\n", - " 'ich bin für euch so wie j.lo, nur ein prominenter arsch',\n", - " 'halbes kilo für den verse, das sind drogenhändler-bars',\n", - " \"ich trag' keine skinnyjeans, hab' den modetrend verpasst\",\n", - " 'baute monumente ohne ende, flowlegende, buzz',\n", - " \"ich renn' in die bank mit fingerknarre, hoch die hände – spaß\",\n", - " 'zweckreimsucher, stressfrei, bruder',\n", - " \"westside-2pac, brech' bei dir ein, hack' dein'n computer\",\n", - " 'ich bin dreist, digga, drei zehner, livespitter, mein blick, er',\n", - " 'bleibt immer zwei schritte allen voraus, sei sicher',\n", - " '*hust, hust*, ich hatte schon raucherhusten',\n", - " \"vor mein'n ersten laufversuchen, doktor kommt zuhaus besuchen\",\n", - " \"ich bedrohte mein'n finanzberater, so wie gunplay\",\n", - " 'jetzt gucken mich leute dafür schief an, so wie conway',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'the coke is up, so now',\n", - " 'and the vegans got the game in the cobra clutch',\n", - " 'i just killed two cops today',\n", - " 'they wanna smoke my ganja',\n", - " 'they wanna smoke my ganja',\n", - " 'hundred million hoes look out for me, look out for me, look out for me',\n", - " 'cause i sell them the best motherfucking',\n", - " 'ey alles ist wie immer',\n", - " 'wir laufen durch die nacht',\n", - " 'große augen und hellwach',\n", - " 'fliegen raus aus jedem pub',\n", - " 'fuck, sorry, in den taschen keine cent',\n", - " 'ich geh später mit der flex an das dach von meinem benz',\n", - " 'also steig ein in mein cabrio',\n", - " 'party, yo',\n", - " '300 km/h und so',\n", - " 'ne nase coke von pablo holen, tradition',\n", - " 'leichtes abendrot',\n", - " 'wir fahren ein paar nazis tot',\n", - " 'saufen in der stadt und danach sind alle bars leer, so wie mario',\n", - " 'und schon wieder suchen sie mich',\n", - " 'es liegen tote bullen auf der route 66',\n", - " 'ey sorry, das liegt nicht an den pillen',\n", - " 'gott hat mir gesagt: \"mein sohn, schieß auf wen du willst\"',\n", - " 'i just killed two cops today',\n", - " 'they wanna smoke my ganja',\n", - " 'they wanna smoke my ganja',\n", - " 'hundred million hoes look out for me, look out for me, look out for me',\n", - " 'cause i sell them the best motherfucking',\n", - " 'ihr sauft auf dem oktoberfest, steht alle unter drogen',\n", - " 'doch wenn ich mir einen joint rauch, kommen gleich kriminologen',\n", - " 'wir werden hier regiert von hinterwäldlern und idioten',\n", - " 'apropos, in meinem haus steht noch ein bett für edward snowden',\n", - " 'das hier ist für alle meine grasticker im bau',\n", - " 'ich buff einen für euch und hoff ihr kommt schnellstens wieder raus',\n", - " 'ich war schon hundert mal beim arbeitsamt und sagte dem berater',\n", - " '\"ey, ging\\'s nach mir, dann wär ich doch schon längst cannabisfarmer\"',\n", - " 'und schon wieder suchen sie mich',\n", - " 'es liegen tote bullen auf der route 66',\n", - " 'ey sorry, regt euch ab, chillt',\n", - " 'ich mach das alles nur, weil satan das so will',\n", - " 'i just killed two cops today',\n", - " 'they wanna smoke my ganja',\n", - " 'they wanna smoke my ganja',\n", - " 'hundred million hoes look out for me, look out for me, look out for me',\n", - " 'cause i sell them the best motherfucking',\n", - " 'a this a racist cop, this a racist from sachsen-anhalt or what',\n", - " \"i don't came all the way from jamaica just to see some racist cop from sachsen-anhalt here shooting on our ass. you better watch out man. shoot him in the dick, shoot him in the head. gimme the gun. gimme the gun i gonna shoot the shit outta his motherfucking face\",\n", - " 'i will shoot him in the ass. you fucking asshole, white chichiman cop',\n", - " 'easy man, easy. back up. back up',\n", - " 'i just killed two cops today',\n", - " 'they wanna smoke my ganja',\n", - " 'they wanna smoke my ganja',\n", - " 'hundred million hoes look out for me, look out for me, look out for me',\n", - " 'cause i sell them the best motherfucking',\n", - " '955 label squad',\n", - " \"i'm feeling so crazy tonight, yea-yeah, yeah\",\n", - " 'yeah, yeah, yeah',\n", - " \"i'm feeling so crazy tonight, yea-yeah, yeah\",\n", - " 'yeah, yeah, yeah',\n", - " 'i feel so crazy, so crazy, tonight',\n", - " 'yeah, yeah, yeah',\n", - " 'i feel so crazy, so crazy tonight',\n", - " 'i feel so crazy, so crazy tonight',\n", - " 'je suis, je suis, je suis, je suis, je suis perdue!',\n", - " 'je suis, je suis, je suis, je suis, je suis perdue!',\n", - " \"ich hab' noch nichts vor heute nacht, und was machst du?\",\n", - " \"ich hab' noch nichts vor heute nacht, und was machst du?\",\n", - " \"ich bin jemand and'res heut' nacht, arthur rimbaud\",\n", - " \"ich bin jemand and'res heut' nacht, arthur rimbaud\",\n", - " 'mon cheri, mon cheri, mon cheri (mon cheri)',\n", - " 'come with me, come with me, come with me (come with me)',\n", - " \"komm spazieren geeehn', avec moi (avec moi)\",\n", - " 'mon cheri, mon cheri, mon cheri (mon cheri)',\n", - " 'come with me, come with me, come with me (come with me)',\n", - " \"komm spazieren geeehn', avec moi (avec moi)\",\n", - " 'eine kleine liaison mit champagner und croissant',\n", - " 'und mein don ist perignon - merci de rien! ah',\n", - " 'merci de rien! ah ah',\n", - " 'eine kleine liaison mit champagner und croissant',\n", - " 'und mein don ist perignon - merci de rien! ah',\n", - " 'merci de rien! ah ah',\n", - " \"ich hab' noch nichts vor heute nacht, und was machst du?\",\n", - " \"ich hab' noch nichts vor heute nacht, und was machst du?\",\n", - " \"ich bin jemand and'res heut' nacht, arthur rimbaud\",\n", - " \"ich bin jemand and'res heut' nacht, arthur rimbaud\",\n", - " 'i feel so crazy, so crazy tonight',\n", - " 'i feel so crazy, so crazy tonight',\n", - " 'je suis, je suis, je suis, je suis, je suis perdue!',\n", - " 'je suis, je suis, je suis, je suis, je suis perdue!',\n", - " 'das gaht a d‘lifestyler - das gaht a d‘updater',\n", - " 'das gaht a d‘first-class - das gaht a d‘upgrader',\n", - " 'a all opinion-leader - a all die trendy hipster',\n", - " 'a all die shitstormer und all die fashion-victims',\n", - " 'news poste - brainstorme - friends-like - car-leasing',\n", - " 'last-minute - ichecke - abchille – nachem meeting',\n", - " 'm**** - one-night-stand - overdressed – nightlife',\n", - " 'burnout - open end - hangover - high-five',\n", - " 'ziend wiiter, doch ohni mich',\n", - " 'es isch schaad, münder ändli gah',\n", - " 'ihr chönd mir all mal, wo d`sunne nie schiint',\n", - " 'deet hätts e nachricht und druff staht:',\n", - " 'ja, ja vilicht morn dänn',\n", - " 'mached ihr ruhig nochli wiiter - wiiter eso',\n", - " 'und falls öpper frögt - säg, ich seg churz wäg',\n", - " 'und tanz tango hindrem mond',\n", - " 'ja, ja vilicht morn dänn',\n", - " 'mached ihr ruhig nochli wiiter - wiiter eso',\n", - " 'und falls öpper frögt - säg, ich seg churz wäg',\n", - " 'und tanz tango hindrem mond',\n", - " 'ja, ja vilicht morn dänn',\n", - " 'das gaht a d‘cybermobber - das gaht a d‘high potentials',\n", - " 'das gaht a d‘gadget-nerds - mit tightem timeschedule',\n", - " 'a all die networkers - a all die powernapper',\n", - " 'must haver, insider, key-accounter, trendsetter',\n", - " 'outdoor-brunche - indoor-skateä - \"sch***\" to-do-list checke',\n", - " 'smartphone-power - mailserver - bluetooth connecte',\n", - " 'eye-catcher - google-maps - management outsource',\n", - " 'last but not least favourites save und supporte',\n", - " 'ja, ja vilicht morn dänn',\n", - " 'ja, ja vilicht morn dänn',\n", - " 'ja, ja, ja, ja vilicht morn dänn',\n", - " 'aber hütt gsehni schwarz',\n", - " 'ja, ja vilicht morn dänn',\n", - " 'ja, ja vilicht morn dänn',\n", - " 'ja, ja, ja, ja vilicht morn dänn',\n", - " 'aber hüt muess i gah',\n", - " '10, 9, 8, 7, 6, 5, 4, 3, 2, 1',\n", - " 'mary jane',\n", - " 'white widow',\n", - " 'purple haze',\n", - " 'orange bud',\n", - " 'northern lights',\n", - " 'k2',\n", - " 'super skunk',\n", - " 'knockout',\n", - " 'crystal',\n", - " \"shiva shiva, y'all\",\n", - " 'schneewittchen',\n", - " 'marihu...',\n", - " 'afghan skunk',\n", - " 'ganja',\n", - " 'elephant',\n", - " 'magic',\n", - " 'hallo, hallo, hallo! halloziehnation!',\n", - " 'folg rapgeniusdeutschland!',\n", - " 'yeah',\n", - " 'got a half zone and a half cut',\n", - " 'the white pony, i passed up',\n", - " 'stay cashed up, i gotta do it',\n", - " 'left it in the few that i snatched up',\n", - " 'now i got eighth, ninth wonder',\n", - " \"stay on top, i don't like under\",\n", - " 'get my attention, small chance',\n", - " 'might look your way, for that right number',\n", - " 'got a small set with all vets',\n", - " 'apartment block to the projects',\n", - " 'all sick, used to cause wreck',\n", - " 'now bars spit got us on deck',\n", - " \"it's that blood sweat, tree snow\",\n", - " 'all hustle, no sleep, no',\n", - " 'mind your business and keep low',\n", - " 'live and die by that g code',\n", - " 'now we made a name, but fuck fame',\n", - " \"i'm just blessed, that my luck changed\",\n", - " 'i can touch the world, when i jump planes',\n", - " 'reach the hoodlums that run sane',\n", - " \"'cause we a-like, g like, sick, starving that be your life\",\n", - " 'kid right like that g white',\n", - " 'and get crowned king when you see the light',\n", - " 'we must shock the bass, turn up the bass',\n", - " \"motherfucker, i'm ill\",\n", - " '(yeah)',\n", - " \"it's go time\",\n", - " 'we must shock the bass, turn up the bass',\n", - " \"motherfucker, i'm ill\",\n", - " '(yeah)',\n", - " \"it's go time\",\n", - " 'wieder einer dieser tage',\n", - " 'spüre meine inneren dämonen, die mich jagen',\n", - " 'weil meine haut mir zu eng wird schizophrenie',\n", - " ...]},\n", - " 'data': [\"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", - " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", - " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", - " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle\",\n", - " \"ich schlafe schlecht, liegt am stress, doch ich träum' trotzdem, versuch' den alptraum zu vergessen, den wir ständig ängstlich leben\",\n", - " 'ohne visionen, perspektiven, relationen. die einen ganz weit unten, andere ganz weit oben',\n", - " \"ich weiss, wo liebe fehlt, ist der hass nicht weit. ich hab' geträumt, die zeit wär' reif und dass der hass nicht bleibt\",\n", - " \"ich hab' geträumt, jeder wär' fair, es gäb' keinen neid, keinen fight, wir hätten's fast erreicht zu fühlen, alle sind gleich\",\n", - " 'doch wir sind gefangen im loop der welt, zwischen blut und geld. gedanken an die zukunft quälen',\n", - " \"ich huste gelb, das alles fickt meinen kopf. es macht mich krank, doch ich geb' alles, was ich kann, und box'\",\n", - " \"das leben ist dreckig, was ich sehe, ist oftmals hässlich. und glaubt mir, ich ertrag's nur durch träumen, mein freund!\",\n", - " \"aber alles ist gut, denn ich bleib' dabei, fixier' mein ziel, setz' mich ein und ich denk' mich frei\",\n", - " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", - " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", - " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", - " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", - " 'i had a dream that one day the fake would face truth',\n", - " 'so i serve you reality so you can taste proof',\n", - " 'everybody wants to rap, from new york to germany',\n", - " \"and all you jealouse cats got notions of burnin' me\",\n", - " \"but i'm not concerned with your weak mentality\",\n", - " \"my pen got passion, it ain't about salary\",\n", - " 'and normally i make myself clear',\n", - " \"if i get quiet for a moment then that's when you should fear\",\n", - " \"'cause that means i'm analyzing you\",\n", - " \"and recognize that i'm true 'cause i don't do what you do\",\n", - " 'i had a dream that hip-hop saved the world',\n", - " 'in every land expand, watch my plan unfurl',\n", - " \"i can't stop, won't stop until you get it right, get it tight\",\n", - " 'disrespect, probably get a fight',\n", - " \"but i'm not a violent brother by any means\",\n", - " \"i want what's best for the team, i see these things in my dream\",\n", - " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", - " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", - " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", - " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", - " \"ich hab' geträumt, dass wir uns blind verstehen, ich konnte mit den augen eines kindes sehen. die winde drehen\",\n", - " 'der winter geht, mit ihm der frust, die depression, der letzte goldene schuss, der letzte drogentote',\n", - " 'eltern sich kümmern, keinen missbrauch in kinderzimmern, städte nicht giftgrau, schmerzen zu lindern',\n", - " \"keine städte in trümmern, keinen, der sorgen hat. hab' geträumt, es gab keine morde für macht\",\n", - " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", - " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", - " \"i close my eyes as i dream about better things, no more pain! it's suffering! family is what i'm cherishing!\",\n", - " \"everything i do has purpose! you're nervous! and rap nowadays is like a free way circle!\",\n", - " '(x2)',\n", - " \"let's go\",\n", - " 'baby come with me, go',\n", - " 'cause we fit when we (ride out)',\n", - " 'you and me when we (ride out)',\n", - " 'baby, come',\n", - " \"look baby roll with a rider, girl it's nothing i'll drive ya\",\n", - " 'get in, fasten your buckle, leave them troubles behind ya',\n", - " \"leave them struggles, ain't trying to, knock your hustle, i'm trying\",\n", - " 'get your hand on some kind of diamond or custom designer',\n", - " \"you can jump in the , if you're hot with desire\",\n", - " 'why not jump out the skillet, jump right into the fire',\n", - " 'cause you know how i get it, love some louis attire',\n", - " \"we don't talk it we live it, yep,\",\n", - " 'this is all to these groupies, want to scoop me, i like her',\n", - " 'kind of flookie that move me, want to do me, i pipe her',\n", - " \"i ain't tripping or tricking, when i'm picking i'm choosing\",\n", - " \"hit the stripper, if she stripping, i'm taking from the fugees\",\n", - " \"love a woman that's winning, independently spending\",\n", - " 'run the house like she living, like she live with the simmons',\n", - " 'if she like it i love it, girl if you dug it i dig it',\n", - " 'hey, in private or public, girl this is just the beginning',\n", - " '(x2)',\n", - " \"let's go\",\n", - " 'baby come with me, go',\n", - " 'cause we fit when we (ride out)',\n", - " 'you and me when we (ride out)',\n", - " 'baby, come',\n", - " \"meine squaw is' 'ne ghetto-gringa\",\n", - " 'trägt nix, außer stringchucks und paar tattoos in schwarz',\n", - " 'bin ihr shadow-ninja, schleiche nachts in die suit',\n", - " \"tanz' halbnackt zu jay-z und puff' von mei'm weed, sie\",\n", - " 'ist verrückt nach mir, ich bin verrückt nach ihr',\n", - " 'weil sie, trotz schicki micki, dann im bett zur bitch mutiert',\n", - " \"leckt mit der zunge über's spliffpapier\",\n", - " 'bevor sie mir liebevoll den nächsten stick serviert',\n", - " 'puppe, du bist champions leauge, du bist mein starface',\n", - " 'meine nummer eins, lois lane, ich bin dein clark kent',\n", - " \"und ich mach' alles klar, was geht für dich\",\n", - " \"'n haufen ketten, einfach nur, weil du mein mädchen bist\",\n", - " \"genetikk-clique, sikk da kid is' zu dope, divas werden zu ho's\",\n", - " 'sie fressen mir aus der hand wie sikks kater auf youtube',\n", - " 'vaffanculo, karuzo, ich hab jetzt den wu-flow',\n", - " '(x2)',\n", - " \"let's go\",\n", - " 'baby come with me, go',\n", - " 'cause we fit when we (ride out)',\n", - " 'you and me when we (ride out)',\n", - " 'baby, come',\n", - " \"give me somethin'\",\n", - " \"i'm not selfish at all\",\n", - " \"don't be salty\",\n", - " 'i can give you all that you want',\n", - " \"give me somethin'\",\n", - " \"i'm not selfish at all\",\n", - " \"don't be salty (yeah)\",\n", - " 'i can give you all that you want (yeah, yeah)',\n", - " 'royce drop-top, biggie-vibes (ja)',\n", - " 'dresscode ist schwarz, doch die tasche voller farben',\n", - " \"girls in mei'm chat (ja), behandel' sie respektvoll\",\n", - " \"doch abends dirty sex (ja), filme in mei'm bett (ja)\",\n", - " \"körper so wie stassiebaby (wow), alles schon geseh'n\",\n", - " \"heutе flieg' ich um die welt, um das bеste mitzunehm'n (yeah)\",\n", - " 'paris-models (wow), l.a.-models (wow)',\n", - " 'london-models, gut vernetzt mit den babys',\n", - " 'foreign cars im farbton vanilla (skrrt)',\n", - " \"von 'nem dope-boy zum großunternehmer (ja)\",\n", - " 'halbe mio liegt im ankleidezimmer',\n", - " \"limited edition mit 'nem diamantenschimmer\",\n", - " 'hah, alles, was du willst',\n", - " 'too flossy, saucy, doch hunger nicht gestillt, ja',\n", - " 'es ist die aura, die bestimmt',\n", - " \"bad boy, young rich negro auf sei'm weg, ja\",\n", - " \"give me somethin'\",\n", - " \"i'm not selfish at all\",\n", - " \"don't be salty\",\n", - " 'i can give you all that you want',\n", - " \"give me somethin'\",\n", - " \"i'm not selfish at all\",\n", - " \"don't be salty\",\n", - " 'i can give you all that you want',\n", - " \"give me somethin' (ooh, baby, give me somethin')\",\n", - " \"i'm not selfish at all\",\n", - " \"don't be salty (mm, don't be salty )\",\n", - " 'i can give you all that you want',\n", - " \"give me somethin' (ooh, baby, give me somethin')\",\n", - " \"i'm not selfish at all\",\n", - " \"don't be salty (mm, don't be salty )\",\n", - " 'i can give you all that you want',\n", - " \"(ooh, baby, give me somethin')\",\n", - " 'flexrocks aus amsterdam, beifahrer ballermann',\n", - " \"(moneyrain soldier) zünd' blunts mit dollars an\",\n", - " \"motherfucker, das is' heavy-metal-shit (yeah)\",\n", - " \"leck' das flex von der sexy latin-chick (yeah)\",\n", - " \"(speedin') autobahn hundertachtzig im daimler-benz\",\n", - " '(kickdown) drückt dich in den sitz - private-dance',\n", - " '(highlife) ich kläre cheerleaderweiber (-weiber)',\n", - " \"die mannschaften animier'n wie fifa-designer (aha)\",\n", - " 'pulle die gun, rolle den blunt, puste den weedsmoke aus',\n", - " \"baller' den cops kugeln in kopf, pushe drei kilo staub\",\n", - " \"geh' von der stage, in der gucci jeans pariser\",\n", - " 'meine groupies sind latinas mit big bootys wie shakira',\n", - " \"hater seh'n zu wie ich kohle verdiene (yeah)\",\n", - " \"doch ich bleib' cool wie die ozeanbrise\",\n", - " 'brandneue prada sweater, strandbräune, hantelstämmer',\n", - " 'kollegah, bossplayer, gunläufe, holla at ya',\n", - " \"mach die lichter aus im club und ich trag' die ray-ban (ey)\",\n", - " \"tret' dir in den kopf, so wie jason statham (ey)\",\n", - " 'überhole cops in dem schwarzen cayman, entertainment (ey), ey yeah',\n", - " 'moneyra-a-a-a-ain (a-a-ain), moneyra-a-a-a-ain (a-a-ain)',\n", - " 'moneyra-a-a-a-ain (a-a-ain), moneyrain, a-a-ain',\n", - " 'rockstarmentalität, skandale live vom sunset (ey, ey, ey)',\n", - " \"durchdachtes business, bunker' ware bei dem bankchef (haha)\",\n", - " '(scotch on the rocks) eisgekühlter ballantines',\n", - " 'newschooloutfits im (oldschool chevy right',\n", - " 'business paris, beltic feeling, platinum work',\n", - " 'lade clips, gs werden weggeballert wie angry birds',\n", - " 'sex auf der street, im lamborghini mit fashiongirls)',\n", - " 'razzia im club, keine ahnung, wem das flex gehört',\n", - " \"ich geb' ein'n fick auf die hater, werf' noch ein blick auf den pager\",\n", - " 'kasachstan-dick in der bitch wie ich in dem business, player (ah)',\n", - " \"renn' die hood ab, säcke voller geld in dem benz gebunkert\",\n", - " \"(ice scheint) glänzende klunker, roll' in meiner town im sl600\",\n", - " 'gebe gas, bange sluts, first class, skyhigh (skyhigh)',\n", - " \"betrete das nightlife (nightlife), zieh' die ballermann, bye bye\",\n", - " \"motherfucker, mach' gitarren auf stages kaputt\",\n", - " \"geh' mit der ray ban in club (yeeeaaah)\",\n", - " \"mach die lichter aus im club und ich trag' die ray-ban (ey)\",\n", - " \"tret' dir in den kopf, so wie jason statham (ey)\",\n", - " 'überhole cops in dem schwarzen cayman, entertainment (ey), ey yeah',\n", - " 'moneyra-a-a-a-ain (a-a-ain), moneyra-a-a-a-ain (a-a-ain)',\n", - " 'moneyra-a-a-a-ain (a-a-ain), moneyrain, a-a-ain',\n", - " 'moneyra-a-a-a-ain (a-a-ain), moneyra-a-a-a-ain (a-a-ain)',\n", - " 'moneyra-a-a-a-ain (a-a-ain), moneyrain, a-a-ain',\n", - " 'moneyra-a-a-a-ain (a-a-ain), moneyra-a-a-a-ain (a-a-ain)',\n", - " 'moneyra-a-a-a-ain (a-a-ain), moneyrain, a-a-ain',\n", - " 'moneyra-a-a-a-ain (a-a-ain), moneyrain, a-a-ain',\n", - " \"i really thought we could've worked it out\",\n", - " 'even gave us the benefit of doubt',\n", - " \"but we couldn't stop playing around\",\n", - " \"didn't understand, but i do now\",\n", - " 'sometimes i wish that we could get it back',\n", - " 'because everyone deserves a second chance',\n", - " 'but we can never go back like that',\n", - " \"it's a shame how our good thing turned so bad\",\n", - " 'too bad, baby, so sad',\n", - " \"look at all that we could've had\",\n", - " 'just too bad',\n", - " 'yeah, zeig mir deine boobies, bitch, und jetzt dreh dich um',\n", - " \"zeig mir deinen booty, bitch, damn you're a cutie, bitch\",\n", - " 'scheiß auf die high school, ich geh auf die schule high',\n", - " 'wir sind auf derselben highschool - kooley high',\n", - " 'lass mich raten, wie du heißt, boo, cutie-pie?',\n", - " 'ich bin iced out, icecube, suit & tie',\n", - " \"what up bitch, how ya doin', ma?\",\n", - " \"ich hol dich ab, du kannst mit mir in die schule fahr'n\",\n", - " 'du bist heiß in deinem schulmädchen-outfit',\n", - " 'ich vertick den schulmädchen rauschgift',\n", - " 'scheiß auf die polizei, ich bin beim fbi',\n", - " 'female breast inspector - fbi',\n", - " \"i really thought we could've worked it out\",\n", - " 'even gave us the benefit of doubt',\n", - " \"but we couldn't stop playing around\",\n", - " \"didn't understand, but i do now\",\n", - " 'sometimes i wish that we could get it back',\n", - " 'because everyone deserves a second chance',\n", - " 'but we can never go back like that',\n", - " \"it's a shame how our good thing turned so bad\",\n", - " 'too bad, baby, so sad',\n", - " \"look at all that we could've had\",\n", - " 'just too bad',\n", - " 'scheiß auf all die anderen spießer in s.oliver',\n", - " 'ich hab immer bunte t-shirts an von hollister',\n", - " 'du hast leggings an und ugg boots',\n", - " 'what up, boo? - \"what up, dude?\"',\n", - " 'zeig mir deine titten, babe, und ich mach das motorboot',\n", - " '(wroooom) - ja so macht das motorboot',\n", - " 'ich steh auf chicks mit abercrombie-fitch hoodies',\n", - " 'applebottom jeans - big booties',\n", - " 'make-up von mac, rich cuties',\n", - " 'chicks, die mehr geld haben als ich, cutie',\n", - " 'ich bin verliebt in deine twit-pics und youtube-clips',\n", - " 'du weißt noch nicht wer ich bin, baby, google mich!',\n", - " \"i really thought we could've worked it out\",\n", - " 'even gave us the benefit of doubt',\n", - " \"but we couldn't stop playing around\",\n", - " \"didn't understand, but i do now\",\n", - " 'sometimes i wish that we could get it back',\n", - " 'because everyone deserves a second chance',\n", - " 'but we can never go back like that',\n", - " \"it's a shame how our good thing turned so bad\",\n", - " 'too bad, baby, so sad',\n", - " \"look at all that we could've had\",\n", - " 'just too bad',\n", - " 'just another day on this planet',\n", - " 'just another day on my road',\n", - " 'just another day on this planet',\n", - " 'just another day on my road',\n", - " \"there's so many things to aspire\",\n", - " \"there's so many things, things i don't know\",\n", - " 'meine roots san die steiamoak representing styria',\n", - " 'die berg und die sun, mhh des is superior',\n", - " 'da flow in da sproch, den gspiast du und den gspia i',\n", - " 'jo wia san die guaten, millions of dreads yeah we are',\n", - " 'wos suit ma wissen über gott und die wöd',\n", - " 'armut und reichtum, neid und göd',\n", - " 'und wer vadaumt nomoi, sogt ma wos i duan sui?',\n", - " 'wos suit ma ois für a launges lebn',\n", - " 'woast des du, faung aun zum reden',\n", - " 'wos suit ma sogn und wos ned',\n", - " 'sogts wos ihr wuits jetz wird gred',\n", - " 'just another day on this planet',\n", - " 'just another day on my road',\n", - " \"there's so many things to aspire\",\n", - " \"there's so many things, things i don't know\",\n", - " 'wenn i orweiten kann, wos i wü wos i mog',\n", - " 'wenn ma koana vorschreibt, wos i zum duan hob',\n", - " 'wenn i in da sun lieg, relax und entspaun',\n", - " 'mhhh daun fühl i mi so guad',\n", - " 'heit hot si ois scho wieda draht',\n", - " 'lost my sprit, i shall lost my heart',\n", - " 'owa muagn sog i da muagn',\n", - " \"geh i's wieda aun\",\n", - " 'millions of dreads, number one',\n", - " 'just another day on this planet',\n", - " 'just another day on my road',\n", - " \"there's so many things to aspire\",\n", - " \"there's so many things, things i don't know\",\n", - " 'just another day on this planet',\n", - " 'just another day on my road',\n", - " \"there's so many things to aspire\",\n", - " \"there's so many things, things i don't know\",\n", - " 'knooow, knooow.....',\n", - " 'just another day on this planet',\n", - " 'just another day on my road',\n", - " \"there's so many things to aspire\",\n", - " \"there's so many things, things i don't know\",\n", - " 'just another day on this planet',\n", - " 'just another day on my road',\n", - " \"there's so many things to aspire\",\n", - " \"there's so many things, things i don't know\",\n", - " 'just another day on this planet',\n", - " 'just another day on my road',\n", - " 'yeah, oh, this is raf camora longside gentleman, come on',\n", - " 'brighta days, check it out, wouh',\n", - " 'i carry wata to the roots, yeah',\n", - " \"i know where i am going 'cause i know where we all come from\",\n", - " 'tell me, who knows the truth yeah?',\n", - " 'everybody run, nobody know where we a run from',\n", - " \"ich komm' zurück in mein'n bezirk und weiß dann wieder, wohin es geht\",\n", - " \"so viel passiert, doch es bestimmt mein'n weg\",\n", - " 'sie schmieden pläne, aber alles fantasie hoch zehn',\n", - " \"schreiben mir auf insta, doch ich tu', als hätt' ich's nicht geseh'n\",\n", - " 'fühle mich bombe',\n", - " 'immer wieder nur auf tour mit der bande',\n", - " 'was laberst du mich zu, mein hombre?',\n", - " 'jaja, lass gut sein, danke',\n", - " 'wir sind weder brüder noch blutsverwandt',\n", - " 'ein gramm kokain und du wirst zur schlampe',\n", - " 'ich wusste, dass ich deine zukunft kannte',\n", - " 'was siehst du mich so an?',\n", - " \"okay, du ziehst 'ne gun\",\n", - " \"doch sie ist nicht gelad'n, du piç\",\n", - " 'kommst ohne munition, doch du erklärst mir den krieg',\n", - " 'i carry wata to the roots, yeah',\n", - " \"i know where i am going 'cause i know where we all come from\",\n", - " 'tell me, who knows the truth yeah?',\n", - " 'everybody run, nobody know where we a run from',\n", - " 'we got to overstand a man is just a man',\n", - " 'sometimes we right and sometimes wrong',\n", - " 'but we never ever forget our foundation',\n", - " 'come mek we shorten our future plans',\n", - " \"ich geb' nur herz für was ich liebe\",\n", - " \"wären es nicht hundert prozent, wär' dieser song eine intrige\",\n", - " \"1998 rauch' ich weed, im radio läuft „tabula rasa“\",\n", - " 'heut singt gentleman die hook, einfach unfassbar',\n", - " \"ich komm' zurück in mein'n bezirk, suche, was von damals hinterblieb'n ist\",\n", - " \"ess' mit denselben jungs im selben pizzaimbiss\",\n", - " 'sie schickt küsse, weil sie in mich verliebt ist',\n", - " 'doch ihre attitüde riecht nach business',\n", - " \"wo ich gewohnt hab', sorgten drogen für wohlstand\",\n", - " \"jetzt sing' ich nur „yo“ ins mikro und hol' meinen lohn ab\",\n", - " 'sie fragen nach der show nur, was ich verdiene',\n", - " \"komm'n mit messer und erzählen was von frieden\",\n", - " 'i carry wata to the roots, yeah',\n", - " \"i know where i am going 'cause i know where we all come from\",\n", - " 'tell me, who knows the truth yeah?',\n", - " 'everybody run, nobody know where we a run from',\n", - " 'we got to overstand a man is just a man',\n", - " 'sometimes we right and sometimes wrong',\n", - " 'but we never ever forget our foundation',\n", - " 'come mek we shorten our future plans',\n", - " \"ich geb' nur herz für was ich liebe\",\n", - " \"wären es nicht hundert prozent, wär' dieser song eine intrige\",\n", - " 'um mich herum kommerzpop auf bravo hits',\n", - " 'meine stimme, schock, höhenangst vor der perspektive',\n", - " 'too much confusion',\n", - " 'travel inna a place away from illusion',\n", - " 'so i put my shoes on',\n", - " 'never forget my roots when i move on',\n", - " \"can't put no blues on\",\n", - " 'everybody move fast, we just cruise on',\n", - " 'actions fi choose from',\n", - " 'here is the sound of the wickedest fusion',\n", - " 'never forget where we from',\n", - " 'while we are journeying throu the jungle of danger and temptation',\n", - " 'seh dem no second to none',\n", - " 'this is raf camora, gentleman, now what a musical explosion',\n", - " 'i carry wata to the roots, yeah',\n", - " \"i know where i am going 'cause i know where we all come from\",\n", - " 'tell me, who knows the truth yeah?',\n", - " 'everybody run, nobody know where we a run from',\n", - " 'we got to overstand a man is just a man',\n", - " 'sometimes we right and sometimes wrong',\n", - " 'but we never ever forget our foundation',\n", - " 'come mek we shorten our future plans',\n", - " 'dun know seh, we come a long way, we still around',\n", - " 'still a mek music',\n", - " 'a wha do dem man bomboclath',\n", - " 'see them silent now',\n", - " 'nothing left fi seh',\n", - " 'remember empty barrel mek di most noise enuh',\n", - " 'haha',\n", - " 'flizzy hält die smith & wesson wieder auf reload (reload)',\n", - " 'alles schauspieler-rapper, ihr seid daily-soap (daily-soap, ey)',\n", - " 'wenn wir kommen, siehst du kugeln fliegen in slomo',\n", - " 'denn keiner von uns redet mit den kripos hier, oh no',\n", - " 'big dreams (big dreams)',\n", - " \"junge, ich träum' big dreams (m-m)\",\n", - " \"big dreams (what's happenin', baby? it's the boss!)\",\n", - " \"junge, ich träum' big dreams\",\n", - " '(huh) big dreams (boss)',\n", - " \"junge, ich träum' big dreams (big thangs)\",\n", - " 'big dreams (big dreams)',\n", - " 'kein german dream (yes)',\n", - " '(maybach music)',\n", - " 'all i wanna know about is big things',\n", - " 'walk up on a molly, hear it was a big bang',\n", - " 'gold nefertiti pendant with a thick chain',\n", - " \"flippin' money, got it jumpin' like a sensei\",\n", - " 'in the dark, .45 with a beam on it',\n", - " \"gucci shoes, wearin' laces with the g's on it\",\n", - " \"rocket ride lamborghini, i'ma lean on it\",\n", - " 'rest in peace to black bo, i put the team on it',\n", - " 'all we really wanted was a maybach (boss)',\n", - " 'wear a framed cartier, where the cake at?',\n", - " \"where i'm from, real g's never speak much\",\n", - " \"ridin' with the top down, with the seats up (huh)\",\n", - " \"talkin' 'bout big dreams (big dreams)\",\n", - " 'all i talk about is the big drinks',\n", - " 'rose gold, rolex',\n", - " 'and a nigga had to pull it out with a big ring (boss)',\n", - " '(m-m, maybach music)',\n", - " 'flizzy hält die smith & wesson wieder auf reload (reload)',\n", - " 'alles schauspieler-rapper, ihr seid daily-soap (daily-soap, ey)',\n", - " 'wenn wir kommen, siehst du kugeln fliegen in slomo',\n", - " 'denn keiner von uns redet mit den kripos hier, oh no',\n", - " 'big dreams',\n", - " \"junge, ich träum' big dreams\",\n", - " 'big dreams',\n", - " \"junge, ich träum' big dreams\",\n", - " 'big dreams',\n", - " \"junge, ich träum' big dreams\",\n", - " 'big dreams',\n", - " 'kein german dream',\n", - " 'mann, ich träume diese big dreams (big dreams)',\n", - " 'zu big für die slim-jeans (huh)',\n", - " 'dicka, greenpeace-nightmare (yeah)',\n", - " 'meine jacke war ein eisbär',\n", - " 'elektrofensterheber, im ghetto kennt mich jeder',\n", - " 'ghetto-entertainer, mercedes-benz arena',\n", - " \"hab' geträumt, dass ich die braune louis-tasche hab'\",\n", - " \"ess' vom teller, den ich früher mal gewaschen hab' (huh)\",\n", - " \"nenn' mein benzer jetzt mortel, denn er ist all-black\",\n", - " 'flizzy war nie weg, das ist kein comeback',\n", - " 'grünes ziffernblatt, rosé-gold, mcgregor-flow',\n", - " 'laufe durch miami wie durch tempelhof',\n", - " \"rapper sind jetzt sänger bei den drecksbull'n\",\n", - " \"das ist dom pérignon, keine sekt-pull'n\",\n", - " \"hab' geträumt von diesem straßentraum\",\n", - " 'beim sozialamt im warteraum',\n", - " 'simes got that secret sauce',\n", - " 'flizzy hält die smith & wesson wieder auf reload (reload)',\n", - " 'alles schauspieler-rapper, ihr seid daily-soap (daily-soap, ey)',\n", - " 'wenn wir kommen, siehst du kugeln fliegen in slomo',\n", - " 'denn keiner von uns redet mit den kripos hier, oh no',\n", - " 'big dreams',\n", - " \"junge, ich träum' big dreams\",\n", - " 'big dreams',\n", - " \"junge, ich träum' big dreams\",\n", - " 'big dreams',\n", - " \"junge, ich träum' big dreams\",\n", - " 'big dreams',\n", - " 'kein german dream',\n", - " 'me caan find no sleep me haffi stay up all night',\n", - " 'a veil of darkness is covering my eyes',\n", - " \"ich find' keinen schlaf gedanken haten mich wach\",\n", - " 'und langsam vertreibt der tag die nacht',\n", - " \"dem say it's alright nothing's alright\",\n", - " \"alle menschen wissen's doch die mehrheit schwelgt\",\n", - " \"dem say it’s alright but nothing's alright\",\n", - " 'it just feels like dynamite',\n", - " \"ich schalt' den femseher ein und schalt' ihn gleich wieder aus\",\n", - " 'bilder malen in roten färben mach die äugen wieder auf',\n", - " 'krieg in der stadt des friedens schon lange tot geglaubt',\n", - " \"mir ist kalt ich frier' und die ohnmacht frisst mich auf\",\n", - " \"well i'm so paralyzed seeing a'l those pictures on the screen\",\n", - " 'nothing really seems to chance no one’s about to intervene',\n", - " \"it's six am. and my cup a tea' a steam\",\n", - " 'does anybody else see what i mean',\n", - " 'me caan find no sleep me haffi stay up all night',\n", - " 'a veil of darkness is covering my eyes',\n", - " \"ich find' keinen schlaf gedanken haten mich wach\",\n", - " 'und langsam vertreibt der tag die nacht',\n", - " \"dem say it's alright nothing's alright\",\n", - " \"alle menschen wissen's doch die mehrheit schwelgt\",\n", - " \"dem say it’s alright but nothing's alright\",\n", - " 'it just feels like dynamite',\n", - " 'i cannot put up with aa the nightmares haunting me',\n", - " 'i ve never been so speechless at such a frequency',\n", - " 'am i sleeping or am i awake',\n", - " 'wfiat i just teamed cxesnt stop to resonate',\n", - " \"i'm shivering the treats are tese\",\n", - " 'my heart is running and the bombs defused -',\n", - " 'the mess «s psing up hansy to efiminatb',\n", - " \"how sha'i we tear our fate\",\n", - " 'schatten de mich verfolgen hindern mich am scfciai',\n", - " 'ich we£ nicht oö ich träume das oefühi lässt nicht nach',\n", - " 'mit jeder sekunde und jedem pdsschiag',\n", - " 'wie etwas das da ist aber rieht da sein darf',\n", - " \"es ist kaum zu g'auben trairiç aber wahr\",\n", - " 'so war ver meinen äugen es scheint greifbar nah',\n", - " 'schaurige böder unwñrtích und bizan',\n", - " 'die weit ist bedroht und in gefahr',\n", - " 'me caan find no sleep me haffi stay up all night',\n", - " 'a veil of darkness is covering my eyes',\n", - " \"ich find' keinen schlaf gedanken haten mich wach\",\n", - " 'und langsam vertreibt der tag die nacht',\n", - " \"dem say it's alright nothing's alright\",\n", - " \"alle menschen wissen's doch die mehrheit schwelgt\",\n", - " \"dem say it’s alright but nothing's alright\",\n", - " 'it just feels like dynamite',\n", - " \"ich schalt' den femseher ein und schalt' ihn gleich wieder aus\",\n", - " 'bilder malen in roten färben mach die äugen wieder auf',\n", - " 'krieg in der stadt des friedens schon lange tot geglaubt',\n", - " \"mir ist kalt ich frier' und die ohnmacht frisst mich auf\",\n", - " \"well i'm so paralyzed seeing a'l those pictures on the screen\",\n", - " 'nothing really seems to chance no one’s about to intervene',\n", - " \"it's six am. and my cup a tea' a steam\",\n", - " 'does anybody else see what i mean',\n", - " 'me caan find no sleep me haffi stay up all night',\n", - " 'a veil of darkness is covering my eyes',\n", - " \"ich find' keinen schlaf gedanken haten mich wach\",\n", - " 'und langsam vertreibt der tag die nacht',\n", - " \"dem say it's alright nothing's alright\",\n", - " \"alle menschen wissen's doch die mehrheit schwelgt\",\n", - " \"dem say it’s alright but nothing's alright\",\n", - " 'it just feels like dynamite',\n", - " 'moin!',\n", - " 'platt',\n", - " 'platt is dat land achter de dieken',\n", - " 'platt is dat watt, dat kannst nakieken',\n", - " 'platt bün ik nich bloots, wenn ik goden bobel smöök',\n", - " 'platt bün ik ok nadem ik küstennebel sööp',\n", - " 'platt is dat bannig platte land achter de dieken',\n", - " 'platt is de spraak, up de jümmer mehr minschen schieten',\n", - " 'platt is nich bloots he, wenn he goden bobel smöökt',\n", - " 'platt bün ok ik nadem ik küstennebel sööp',\n", - " 'platt',\n", - " 'wi snackt över platt',\n", - " 'wi snackt snackt ’n beten platt',\n", - " 'platt platt',\n", - " 'platt',\n", - " 'wi sünd de mallbüdels ut bremen-noord',\n", - " 'riemelt up platt, ja dat is use oort',\n", - " 'wahnt nich mehr to huus, na de grode stadt güng de fohrt',\n", - " 'so is dat, vele saken sünd platt',\n", - " 'de fofftig penns sünd trüch un nu geiht loos',\n", - " 'sünd bloots jungs vun de straat',\n", - " 'dick an’n start, in de maak',\n", - " 'so geiht dat to',\n", - " 'use straat, us tohuus, us block',\n", - " 'rap gifft dat nich bloots in’t mv man ok up plattdüütsch',\n", - " 'ofschoonst wi mehr allmannsbrüüt bruukt',\n", - " 'jo, nu geiht los, denn man to!',\n", - " 'platt dat is de spraak, de wi af un an snackt',\n", - " 'platt is de koh ehr schiet, wenn se kackt',\n", - " 'platt sünd use leder, platt is use ne’e plaat',\n", - " 'platt dat sünd de dööntjes, de wi jümmers hebbt praat',\n", - " 'platt is dat land, man hooch sünd de bargen',\n", - " 'platt sünd de blomen in use mooie goorn',\n", - " 'platt sünd de lütten deerns, wenn wi mol wedder seggt: pint!',\n", - " 'platt is dat bannig platte land achter de dieken',\n", - " 'platt is dat watt, dat kannst nakieken',\n", - " 'platt bün nich bloots ik nadem ik küstennebel sööp',\n", - " 'platt bün eerst recht ik, wenn ik an’n heven söög',\n", - " 'kom na rapgeniusdüütschland!',\n", - " '825 all night – parov stelar',\n", - " '824 big jet plane – angus & julia stone',\n", - " '823 swings both ways – robbie williams',\n", - " 'featuring rufus wainwright',\n", - " '822 gelobtes land – peter maffay',\n", - " '821 just like you – andreas kümmert',\n", - " '820 shout to the top – the style council',\n", - " '819 one day (vandaag) – bakermat',\n", - " \"818 la passion – gigi d'agostino\",\n", - " '817 we are the people – empire of the sun',\n", - " '816 songs für liam – kraftklub',\n", - " '815 lucky – britney spears',\n", - " '814 father and son – cat stevens',\n", - " '813 mad world – michael andrews',\n", - " 'feat. gary jules',\n", - " '812 du bist ein wunder – wolfgang petry',\n", - " '811 move in the right direction – gossip',\n", - " '810 tag am meer – die fantastischen vier',\n", - " '809 monsta – culcha candela',\n", - " '808 ooh la la – britney spears',\n", - " '807 no no never – texas lightning',\n", - " '806 because we can – bon jovi',\n", - " '805 soulmate – natasha bedingfield',\n", - " '804 der eiermann – klaus & klaus',\n", - " '803 solsbury hill – peter gabriel',\n", - " '802 respect – aretha franklin',\n", - " '801 (everything i do) i do it for you – bryan adams',\n", - " '800 everytime we touch – cascada',\n", - " '799 i want it that way – backstreet boys',\n", - " '798 berzerk – eminem',\n", - " '797 i wanna dance with somebody (who loves me)',\n", - " '– whitney houston',\n", - " '796 slow it down – amy macdonald',\n", - " '795 against all odds (take a look at me now) –',\n", - " 'phil collins',\n", - " '794 a little less conversation – elvis vs. jxl',\n", - " '793 my heart will go on – celine dion',\n", - " \"792 i'm yours – jason mraz\",\n", - " '791 boombastic – shaggy',\n", - " '790 made in heaven – queen',\n", - " '789 keine grenzen - keine zäune –',\n", - " 'lotto king karl',\n", - " '788 losing sleep – john newman',\n", - " \"787 l'amour toujours – gigi d'agostino\",\n", - " '786 rock dj – robbie williams',\n", - " '785 morgens immer müde – laing',\n", - " '784 around the world – the disco boys',\n", - " \"783 what i've done – linkin park\",\n", - " '782 viva las vegas – elvis presley',\n", - " '781 an de eck – jan fedder & big balls',\n", - " \"780 they don't care about us – michael jackson\",\n", - " '779 turn me on – david guetta (feat. nicki minaj)',\n", - " '778 wenn worte meine sprache wären –',\n", - " 'tim bendzko',\n", - " '777 mamma mia – abba',\n", - " '776 symphonie – silbermond',\n", - " '775 no air – jordin sparks feat. chris brown',\n", - " '774 the real slim shady – eminem',\n", - " \"773 i'll be missing you – puff daddy &\",\n", - " 'faith evans featuring 112',\n", - " '772 i walk the line – johnny cash',\n", - " '771 ich steine du steine – peter fox',\n", - " '770 no son of mine – genesis',\n", - " '769 feuer – jan delay',\n", - " '768 drunk in the morning – lukas graham',\n", - " \"767 livin' in hamburg – hamburger arroganz\",\n", - " '766 my life – billy joel',\n", - " '765 michael x – casper',\n", - " '764 a question of time – depeche mode',\n", - " '763 strand – yasha',\n", - " \"762 she's like the wind – patrick swayze\",\n", - " 'feat. wendy fraser',\n", - " '761 live it up – jennifer lopez feat. pitbull',\n", - " '760 amsterdam – cora',\n", - " '759 morning has broken – cat stevens',\n", - " '758 kings in exile – fritz kalkbrenner',\n", - " '757 love is a losing game – amy winehouse',\n", - " '756 all good things (come to an end) –',\n", - " 'nelly furtado',\n", - " '755 scatman (ski-ba-bop-ba-dop-bop) –',\n", - " 'scatman john',\n", - " '754 summer in the city – joe cocker',\n", - " '753 liebe meines lebens – philipp poisel',\n", - " '752 another day in paradise – phil collins',\n", - " '751 she wolf (falling to pieces) –',\n", - " 'david guetta feat. sia',\n", - " '750 incomplete – backstreet boys',\n", - " '749 löppt – de fofftig penns',\n", - " '748 sweat (a la la la la long) – inner circle',\n", - " '747 umbrella – rihanna',\n", - " '746 amsterdam – fettes brot',\n", - " '745 indigo girl – watershed',\n", - " '744 ein schwein namens männer – die ärzte',\n", - " '743 paparazzi – lady gaga',\n", - " '742 little green apples – robbie williams',\n", - " 'featuring kelly clarkson',\n", - " '741 in the shadows – the rasmus',\n", - " '740 step by step – new kids on the block',\n", - " '739 on ira – zaz',\n", - " '738 auf uns – andreas bourani',\n", - " '737 sexy and i know it – lmfao',\n", - " '736 dickes b – seeed feat. black kappa',\n", - " '735 two princes – spin doctors',\n", - " '734 rhythm is a dancer – snap!',\n", - " \"733 i'm too sexy – right said fred\",\n", - " '732 the power – snap!',\n", - " '731 secrets – onerepublic',\n", - " \"730 show 'em (what you're made of) –\",\n", - " 'backstreet boys',\n", - " '729 boyfriend – justin bieber',\n", - " '728 schwarz zu blau – peter fox',\n", - " '727 entre dos tierras – heroes del silencio',\n", - " '726 mr. vain – culture beat',\n", - " '725 orinoco flow (sail away) – enya',\n", - " '724 waking up in vegas – katy perry',\n", - " '723 king of my castle – wamdue project',\n", - " '722 barcelona – freddie mercury &',\n", - " 'montserrat caballè',\n", - " '721 if i were a boy – beyoncé',\n", - " '720 run – snow patrol',\n", - " '719 what now – rihanna',\n", - " '718 1999 – prince',\n", - " '717 bailando – loona',\n", - " \"716 i don't dance – sunrise avenue\",\n", - " '715 from sarah with love – sarah connor',\n", - " '714 wild ones – flo rida feat. sia',\n", - " '713 patience – take that',\n", - " '712 unter deiner flagge – unheilig',\n", - " \"711 let's get loud – jennifer lopez\",\n", - " '710 a groovy kind of love – phil collins',\n", - " '709 get up (rattle) – bingo players feat',\n", - " 'far east movement',\n", - " '708 balada (tche tcherere teche tche) –',\n", - " 'gusttavo lima',\n", - " '707 streets of philadelphia –',\n", - " 'bruce springsteen',\n", - " '706 unrockbar – die ärzte',\n", - " '705 hey now – martin solveig &',\n", - " 'the cataracs featuring kyle',\n", - " \"704 u can't touch this – mc hammer\",\n", - " '703 seven nation army – the white stripes',\n", - " '702 without me – eminem',\n", - " '701 das rote pferd – markus becker',\n", - " \"700 what's up? – 4 non blondes\",\n", - " '699 blue devils hymne – anya mahnken',\n", - " '698 es gibt nur wasser – santiano',\n", - " '697 home again – michael kiwanuka',\n", - " '696 i know you want me (calle ocho) – pitbull',\n", - " '695 never let me down again – depeche mode',\n", - " '694 suavemente – elvis crespo',\n", - " '693 aufstehn! – seeed feat. cee-lo green',\n", - " '692 finger in po - mexiko! – mickie krause',\n", - " '691 other side of love – sean paul',\n", - " '690 shine my shoes – robbie williams',\n", - " '689 total eclipse of the heart – bonnie tyler',\n", - " '688 human – the killers',\n", - " '687 füchse – absolute beginner',\n", - " \"686 can't stand the silence – rea garvey\",\n", - " '685 umbrella – the baseballs',\n", - " '684 alejandro – lady gaga',\n", - " '683 baker street – gerry rafferty',\n", - " '682 more – usher',\n", - " '681 party rock anthem – lmfao',\n", - " '680 work b**ch! – britney spears',\n", - " '679 tacata – tacabro',\n", - " \"678 who's that chick? – david guetta feat\",\n", - " 'rihanna',\n", - " '677 dragostea din tei – o-zone',\n", - " '676 my love is your love – whitney houston',\n", - " '675 siehst du das genauso? –',\n", - " 'sportfreunde stiller',\n", - " '674 pumped up kicks – foster the people',\n", - " '673 back in black – ac/dc',\n", - " '672 remmidemmi (yippie yippie yeah) – deichkind',\n", - " '671 got 2 luv u – sean paul feat. alexis jordan',\n", - " '670 an angel – the kelly family',\n", - " '669 josephine – reamonn',\n", - " '668 nine million bicycles – katie melua',\n", - " '667 standing still – roman lob',\n", - " '666 bonbon aus wurst – helge schneider',\n", - " '665 next to me – emeli sandé',\n", - " '664 rolling stone – daniel schuhmacher',\n", - " '663 punga – klingande',\n", - " '662 toxic – britney spears',\n", - " '661 jump that rock (whatever you want) –',\n", - " 'scooter vs. status quo',\n", - " '660 bis der arzt kommt – lotto king karl &',\n", - " 'the barmbek dreamboys',\n", - " '659 ni**as in paris – jay-z & kanye west',\n", - " '658 stadtaffe – peter fox',\n", - " '657 la isla bonita – madonna',\n", - " '656 sexy bitch – david guetta feat. akon',\n", - " '655 how much is the fish? – scooter',\n", - " '654 tik tok – ke$ha',\n", - " \"653 ich hab alain delon geseh'n –\",\n", - " 'pierre ferdinand et les charmeurs',\n", - " '652 heal the world – michael jackson',\n", - " '651 lila wolken – peter kraus',\n", - " '650 i will dance (when i walk away) –',\n", - " 'katzenjammer',\n", - " '649 what a wonderful world – louis armstrong',\n", - " '648 alles wird aus hack gemacht (hacksong) –',\n", - " 'ralf \"ralle\" petersen feat. hack norris',\n", - " '647 sultans of swing – dire straits',\n", - " '646 ein teil – cro',\n", - " '645 beautiful day – u2',\n", - " '644 fast car – tracy chapman',\n", - " '643 spectrum (say my name) – florence and the machine',\n", - " '642 lonesome rider – volbeat feat. sarah blackwood',\n", - " '641 nur der hsv – elvis',\n", - " '640 bad romance – lady gaga',\n", - " '639 this is the life – amy macdonald',\n", - " \"638 we can't stop – miley cyrus\",\n", - " '637 desert rose – sting',\n", - " \"636 i'm on fire – bruce springsteen\",\n", - " '635 young and beautiful – lana del rey',\n", - " '634 whatever you want – status quo',\n", - " '633 strawberry fields forever – beatles',\n", - " '632 the time (dirty bit) – the black eyed peas',\n", - " '631 the cave – mumford and sons',\n", - " '630 under control – calvin harris &',\n", - " 'alesso feat. hurts',\n", - " '629 the spark – afrojack featuring spree wilson',\n", - " '628 the a team – ed sheeran',\n", - " '627 just a dream – nelly',\n", - " '626 sympathy for the devil – rolling stones',\n", - " '625 give me everything – pitbull feat',\n", - " 'ne-yo, afrojack & nayer',\n", - " '624 beneath your beautiful –',\n", - " 'labrinth feat emeli sandé',\n", - " \"623 it's time – imagine dragons\",\n", - " '622 always – bon jovi',\n", - " '621 suit and tie – justin timberlake feat. jay-z',\n", - " '620 if tomorrow never comes – ronan keating',\n", - " '619 mit 18 – marius müller-westernhagen',\n", - " '618 losing my religion – r.e.m',\n", - " '617 take me home, country roads – john denver',\n", - " '616 an der nordseeküste – klaus & klaus',\n", - " '615 love is all around – wet wet wet',\n", - " '614 das kleine küken piept – pulcino pio',\n", - " '613 fields of gold – sting',\n", - " '612 dicke – marius müller-westernhagen',\n", - " '611 wherever you will go – the calling',\n", - " '610 money – pink floyd',\n", - " '609 wir werden niemals untergehen –',\n", - " 'santiano',\n", - " \"608 it's raining men – the weather girls\",\n", - " '607 zucker – peter fox',\n", - " '606 mr. jones – counting crows',\n", - " '605 i love you – woodkid',\n", - " '604 little numbers – boy',\n", - " '603 sie ist weg – die fantastischen vier',\n", - " '602 hey jude – beatles',\n", - " '601 alors on danse – stromae',\n", - " '600 sonne in der nacht – peter maffay',\n", - " '599 summer paradise – simple plan',\n", - " 'featuring sean paul',\n", - " '598 girl gone wild – madonna',\n", - " '597 ben – michael jackson',\n", - " '596 der wilde wilde westen – truck stop',\n", - " '595 run to the hills – iron maiden',\n", - " '594 wire to wire – razorlight',\n", - " '593 uprising – muse',\n", - " '592 schwule mädchen – fettes brot',\n", - " '591 the power of love – jennifer rush',\n", - " '590 hangover – taio cruz',\n", - " '589 so soll es bleiben – ich + ich',\n", - " '588 irgendwie, irgendwo, irgendwann –',\n", - " 'jan delay',\n", - " '587 bitter sweet symphony – the verve',\n", - " '586 das gefühl – andrea berg',\n", - " '585 meine soldaten – maxim',\n", - " '584 i got u – duke dumont feat. jax jones',\n", - " '583 krieger des lichts – silbermond',\n", - " '582 s&m – rihanna',\n", - " '581 reeperbahn – udo lindenberg',\n", - " '580 am tag als conny kramer starb –',\n", - " 'juliane werding',\n", - " '579 barbie girl – aqua',\n", - " '578 das lied der schlümpfe – vader abraham',\n", - " '577 everybody hurts – r.e.m',\n", - " '576 let the music play – barry white',\n", - " '575 one moment in time – whitney houston',\n", - " '574 who knew – p!nk',\n", - " '573 call me – blondie',\n", - " '572 affe sucht liebe – fraktus',\n", - " '571 true love – p!nk feat. lily allen',\n", - " '570 people help the people – birdy',\n", - " '569 tanz der moleküle – mia',\n", - " \"568 it's my life – dr. alban\",\n", - " '567 so what – p!nk',\n", - " '566 ready to start – arcade fire',\n", - " '565 heaven – bryan adams',\n", - " '564 summer – calvin harris',\n", - " '563 all over the news – martin and james',\n", - " '562 türlich, türlich (sicher, dicker) – das bo',\n", - " '561 payphone – maroon 5 feat. wiz khalifa',\n", - " '560 balu – kettcar',\n", - " '559 troublemaker – olly murs feat. flo rida',\n", - " '558 we found love – rihanna feat. calvin harris',\n", - " '557 sun is up – inna',\n", - " '556 sex bomb – tom jones and mousse t',\n", - " '555 cape of our hero – volbeat',\n", - " \"554 you're the first, the last, my everything –\",\n", - " 'barry white',\n", - " '553 when love takes over – david guetta',\n", - " 'feat. kelly rowland',\n", - " '552 flugzeuge im bauch – herbert grönemeyer',\n", - " '551 starships – nicki minaj',\n", - " '550 only teardrops – emmelie de forest',\n", - " '549 mfg (mit freundlichen grüssen) –',\n", - " 'die fantastischen vier',\n", - " '548 the flood – take that',\n", - " '547 one – johnny cash',\n", - " '546 er gehört zu mir – marianne rosenberg',\n", - " '545 die da!?! – die fantastischen vier',\n", - " '544 after all – michael bublé feat. bryan adams',\n", - " '543 frozen – madonna',\n", - " '542 clown – emeli sandé',\n", - " '541 red flag – billy talent',\n", - " '540 like the way i do – melissa etheridge',\n", - " '539 smooth criminal – michael jackson',\n", - " '538 hsv - du bist meine frau –',\n", - " 'buddy ogün presents mozart',\n", - " \"537 you've got the love – florence + the machine\",\n", - " '536 kraniche – bosse',\n", - " '535 heart skips a beat – olly murs feat. rizzle kicks',\n", - " '534 last christmas – wham!',\n", - " '533 we are the world – usa for africa',\n", - " \"532 love don't die – the fray\",\n", - " '531 zu spät – die ärzte',\n", - " '530 where are we now? – david bowie',\n", - " '529 what makes you beautiful – one direction',\n", - " '528 emanuela – fettes brot',\n", - " '527 one more night – maroon 5',\n", - " '526 klar – jan delay',\n", - " '525 in these arms – bon jovi',\n", - " '524 thank you for the music – abba',\n", - " '523 my number – foals',\n", - " '522 lucky day – sasha',\n", - " '521 lasse redn – die ärzte',\n", - " '520 pflaster – ich + ich',\n", - " '519 snowflakes – white apple tree',\n", - " '518 der affentanz – die junx',\n", - " '517 burn it down – linkin park',\n", - " '516 und es war sommer –',\n", - " 'peter maffay',\n", - " '515 back for good – take that',\n", - " '514 irgendwas bleibt – silbermond',\n", - " '513 domino – jessie j',\n", - " \"512 day 'n' night – kid cudi vs. crookers\",\n", - " '511 pfeiff drauf! (urlaub ist nur einmal',\n", - " 'im jahr) – peter wackel',\n", - " '510 lego house – ed sheeran',\n", - " '509 thunderstruck – ac/dc',\n", - " '508 mr. saxobeat – alexandra stan',\n", - " '507 get busy – sean paul',\n", - " '506 clarity – zedd feat. foxes',\n", - " '505 ich mag müll – ernie & bert & ihre freunde',\n", - " '504 colour me in – rea garvey',\n", - " '503 wovon sollen wir träumen – frida gold',\n", - " '502 loving you is killing me – aloe blacc',\n", - " \"501 gangsta's paradise – coolio\",\n", - " '500 ironic – alanis morissette',\n", - " '499 video games – lana del rey',\n", - " '498 das geht ab! (wir feiern die ganze nacht) –',\n", - " 'frauenarzt & manny marc',\n", - " '497 i knew you were trouble – taylor swift',\n", - " '496 rennen + stolpern – jupiter jones',\n", - " '495 saturday night – whigfield',\n", - " '494 alive – pearl jam',\n", - " '493 bück dich hoch – deichkind',\n", - " '492 hamma! – culcha candela',\n", - " '491 precious – depeche mode',\n", - " '490 ding – seeed',\n", - " '489 black or white – michael jackson',\n", - " '488 vom selben stern – ich + ich',\n", - " '487 flaws – bastille',\n", - " '486 hoffnung – jan delay',\n", - " '485 on the floor – jennifer lopez',\n", - " 'feat. pitbull',\n", - " '484 wolke 7 – max herre feat. philipp poisel',\n", - " '483 keep the faith – bon jovi',\n", - " '482 luftbahn – deichkind',\n", - " '481 wish you were here – rednex',\n", - " '480 good feeling – flo rida',\n", - " '479 wine and chocolates – theophilus london',\n", - " '478 hello – martin solveig & dragonette',\n", - " '477 out of the dark – falco',\n", - " '476 (liebe ist...) wie malaria – lotto king karl',\n", - " \"475 live while we're young – one direction\",\n", - " '474 africa – toto',\n", - " '473 roxanne – the police',\n", - " '472 only girl (in the world) – rihanna',\n", - " '471 bayern – die toten hosen',\n", - " '470 feeling good – michael bublé',\n", - " '469 count on me – bruno mars',\n", - " '468 lichter der stadt – unheilig',\n", - " '467 raise your glass – p!nk',\n", - " '466 welcome to st. tropez –',\n", - " 'dj antoine vs. timati feat. kalenna',\n", - " '465 i am what i am – gloria gaynor',\n", - " '464 pumpin blood – nonono',\n", - " '463 down under – men at work',\n", - " '462 schrei nach liebe – die ärzte',\n", - " '461 endless summer – oceana',\n", - " '460 clocks – coldplay',\n", - " '459 über sieben brücken musst du gehn – karat',\n", - " '458 angels – the xx',\n", - " '457 moves like jagger – maroon 5 feat',\n", - " 'christina aguilera',\n", - " '456 all of the lights – kanye west feat. rihanna',\n", - " '455 quit playing games – backstreet boys',\n", - " '454 out of yourself – truls',\n", - " '453 freunde bleiben – revolverheld',\n", - " '452 mitten in barmbek – lotto king karl',\n", - " '451 ring of fire – johnny cash',\n", - " '450 junge – die ärzte',\n", - " '449 kryptonite – 3 doors down',\n", - " '448 hamburg brennt – 1000 robota',\n", - " '447 little things – one direction',\n", - " '446 down by the river – milky chance',\n", - " '445 margarethe – buddy ogün pres. mozart',\n", - " '444 summer well – interpol',\n", - " '443 rosana – wax',\n", - " '442 sailing – rod stewart',\n", - " '441 yesterday – beatles',\n", - " '440 one – u2',\n", - " '439 stups, der kleine osterhase –',\n", - " 'rolf zuckowski und seine freunde',\n", - " '438 adore you – miley cyrus',\n", - " '437 bat out of hell – meat loaf',\n", - " '436 anything could happen – ellie goulding',\n", - " '435 paint it black – rolling stones',\n", - " '434 samba de janeiro – bellini',\n", - " '433 ...so ein schöner tag (fliegerlied) –',\n", - " 'tim toupet',\n", - " '432 man in the mirror – michael jackson',\n", - " '431 lass das mal den papa machen – christoph',\n", - " 'maria herbst als bernd stromberg',\n", - " \"430 she doesn't mind – sean paul\",\n", - " '429 ganz paris ist eine disco –',\n", - " 'pierre ferdinand et les charmeurs',\n", - " '428 von allein – culcha candela',\n", - " '427 we are young – fun. feat janelle monaé',\n", - " \"426 (i've had) the time of my life –\",\n", - " 'bill medley and jennifer warnes',\n", - " '425 so perfekt – casper',\n", - " '424 jeanny, part 1 – falco',\n", - " '423 showgirls der reeperbahn – double faces',\n", - " '422 du lässt mein herz springen –',\n", - " 'maggers united',\n", - " '421 wish you were here – pink floyd',\n", - " '420 an tagen wie diesen – fettes brot feat',\n", - " 'pascal finkenauer',\n", - " '419 sweet dreams (are made of this) –',\n", - " 'eurythmics',\n", - " \"418 i'm gonna be (500 miles) – proclaimers\",\n", - " '417 love of my life – queen',\n", - " ...]},\n", - " 'rock': {'meta': {'train_data': ['(eins, zwei, drei, vier)',\n", - " 'du sagst, die antwort kommt vom hufenmann',\n", - " 'für uns ist es längst zu spät',\n", - " 'dir fehlt lang schon jede hoffnung',\n", - " 'er ist der einzige, der dich versteht',\n", - " \"he's got many things to offer\",\n", - " 'all he wants is just my soul',\n", - " 'but he cannot have it all...',\n", - " \"because it's you i want (ich will nur dich)\",\n", - " 'do we have to go this way?',\n", - " \"to see what's aweful clear\",\n", - " \"oh ja ich will nur dich (it's you i want)\",\n", - " 'der teufel wird hier leer ausgehen',\n", - " 'denn meine seele gehört dir',\n", - " 'you say the answers comes from above (tell it to me sister)',\n", - " \"he's the one to sacrifice\",\n", - " 'he gave us life, he gives us love',\n", - " \"and he's the one who had to pay the price\",\n", - " 'er gibt uns wärme wenn uns kalt wird',\n", - " 'er ist gnädig und gerecht',\n", - " 'zu kindern wie zu sündern',\n", - " 'zwar nicht schlecht doch ich',\n", - " \"ich will nur dich (it's you i want)\",\n", - " 'ich spür gott wenn ich dich seh',\n", - " 'meine seele gehört dir',\n", - " \"it's you i want (ich will nur dich)\",\n", - " 'do we have to go this way?',\n", - " \"to see what's aweful clear\",\n", - " 'oh baby, komm mit mir',\n", - " \"it's you i want (ich will nur dich)\",\n", - " 'do we have to go this way?',\n", - " \"to see what's aweful clear\",\n", - " \"oh ja ich will nur dich (it's you i want)\",\n", - " \"you're the one to whom i pray\",\n", - " \"yes you're the only one\",\n", - " 'you are to whom i come',\n", - " 'just take my soul right now, right here',\n", - " 'denn meine seele gehört dir',\n", - " 'die stürme rufen dich',\n", - " 'die stürme rufen dich',\n", - " 'die stürme rufen dich',\n", - " 'until the day i die, i will not end this fight',\n", - " 'believe me that i am this haunted man forever',\n", - " 'their hopeful eyes, their desperate cries',\n", - " 'this certitude to shatter dying dreams forever',\n", - " 'du kannst auf bessere tage warten',\n", - " 'doch diese zeit ist deine zeit',\n", - " 'deine worte, deine taten',\n", - " 'werden bald schon nichts mehr zählen',\n", - " 'die stürme rufen dich',\n", - " 'hier und jetzt muss es geschehen',\n", - " 'du hörst die glocken schlagen',\n", - " 'und keine angst wird uns regieren',\n", - " 'an unseen genocide, a world war on the enslaved ones',\n", - " 'shieldless, facing despotism',\n", - " 'this is the awaking',\n", - " 'es ist die zeit des erwachens!',\n", - " 'right here right now, within the walls of babylon',\n", - " 'die stürme rufen dich',\n", - " 'i stand and fight, deny your lies forever',\n", - " 'die stürme rufen dich',\n", - " 'forced by northern kingdoms, looted and held down',\n", - " 'despoiled and patronized, just like conquered colonies',\n", - " 'old men return to reason',\n", - " 'as power is taken by their rival sons',\n", - " 'du kannst auf bessere tage warten',\n", - " 'doch diese zeit ist deine zeit',\n", - " 'und du wirst die fackel tragen',\n", - " 'feuer und flamme für diese alte welt',\n", - " 'right here right now',\n", - " 'within the walls of babylon',\n", - " 'i stand and fight',\n", - " 'deny your lies forever',\n", - " 'die stürme rufen dich!',\n", - " 'die völker rufen dich!',\n", - " 'right here right now',\n", - " 'within the walls of babylon',\n", - " 'i stand and fight',\n", - " 'deny your lies forever',\n", - " 'die stürme rufen dich!',\n", - " 'praise the lord everyday with',\n", - " 'dread love!',\n", - " \"du musst mal an die ufo's denken\",\n", - " \"ufo's denken, ufo's denken\",\n", - " 'darfst nich dein gehirn verrenken',\n", - " 'hirn verrenken, hirn verrenken',\n", - " 'dread love!',\n", - " \"amor's pfeil sitzt immer recht\",\n", - " 'immer recht, immer recht',\n", - " 'recht + schlecht sich kali recht',\n", - " 'recht + schlecht sich kali recht',\n", - " 'dread love!',\n", - " 'dread revolution, dread menstruation, hot masterbation',\n", - " 'hallucination, hallucination, hallucination, hallucination',\n", - " 'hallucination, hallucination, hallucination',\n", - " 'the love affairs are so exciting',\n", - " 'when the star of dread love shining',\n", - " 'love affairs are so exciting',\n", - " 'when the star of dread love shining',\n", - " 'praise the lord everyday with',\n", - " 'dread love!',\n", - " 'die partei hat immer recht',\n", - " 'immer recht, immer recht, immer recht',\n", - " 'alle sind die geile tiere, geile tiere, geile tiere',\n", - " 'dread love!',\n", - " 'aber',\n", - " 'nina, nina, tam kartina',\n", - " 'eto tractor imotor',\n", - " 'la ljublju tebja',\n", - " 'nina, nina!',\n", - " 'the love affairs are so exciting',\n", - " 'when the star of dread love shining',\n", - " 'love affairs are so exciting',\n", - " 'when the star of dread love shining',\n", - " 'love affairs are so exciting',\n", - " 'when the star of dread love shining',\n", - " 'love affairs are so exciting',\n", - " 'when the star of dread love shining',\n", - " 'love affairs are so exciting',\n", - " 'when the star of dread love shining',\n", - " 'love affairs are so exciting',\n", - " 'when the star of dread love shining',\n", - " 'praise the lord everyday with',\n", - " 'dread love!',\n", - " 'dread revolution, dread menstruatuion, hot masturbation',\n", - " 'hot masturbation',\n", - " 'hallucination, hallucination, hallucination, hallucination',\n", - " 'hallucination, hallucination, hallucination',\n", - " 'lalalalalalalalala, lalalalala',\n", - " 'love affairs are so exciting',\n", - " 'when the star of dread love shining',\n", - " 'love affairs are so exciting',\n", - " 'when the star of dread love shining',\n", - " 'love affairs are so exciting',\n", - " 'love, dread love!',\n", - " 'love, dread love!',\n", - " 'no babylon love affairs no more',\n", - " 'no babylon love affairs no more',\n", - " 'nunsexmonkrock',\n", - " 'nunsexmonkrock',\n", - " 'nunsexmonkrock',\n", - " 'nunsexmonkrock',\n", - " 'nunsexmonkrock',\n", - " \"let's do the nunsexmonkrock\",\n", - " 'nunsexmonkrock',\n", - " 'nunsexmonkrock',\n", - " \"let's do the\",\n", - " 'nun sex monk rock',\n", - " 'corpses are nailed to my body',\n", - " 'corpses are sewn to my frame',\n", - " 'rune wounds carved into the flesh',\n", - " 'bones bodies skulls slashed',\n", - " 'living flesh suffers',\n", - " 'famine death hails us',\n", - " 'totems of annihilation',\n", - " 'signs of mutilation',\n", - " 'living flesh suffers',\n", - " 'famine death hails us',\n", - " 'this is the judgemand day',\n", - " 'welcome to teutonic hell',\n", - " '\"das tier und die zehn h\\xadörner die du',\n", - " 'gesehen hast werden die hure verabscheuen',\n", - " 'sie werden ihr alles fortnehmen, so dass sie nackt ist',\n", - " 'sie werden ihr fleisch fressen und sie verbrennen\"',\n", - " '(offenbarung kapitel 17, vers 16)',\n", - " 'die masken sind gefallen, ignis extotum corpas',\n", - " 'lechery on the altar, we burn in blasphemy',\n", - " 'ich liebe es, wie du dich mir',\n", - " 'von hinten öffnest, orgasmic hell',\n", - " 'desecrating with possessed burning eyes',\n", - " 'die posaunen der finsternis erklingen',\n", - " 'light of holiness, forever extinguished',\n", - " 'trommelklänge eingehüllt in spottprozessionen',\n", - " 'tied up und geläutert, der teufel steigt empor',\n", - " 'ass for an ass, cunt for a cunt',\n", - " 'divine pleasure, through infernal pain',\n", - " 'take these almighty wings and fly away',\n", - " 'desecrating with possessed burning eyes',\n", - " 'die posaunen der finsternis erklingen',\n", - " 'light of holiness, forever now extinguished',\n", - " 'baut den schrein für einen toten gott',\n", - " 'im angesicht des todes, fleischknochen und leichenfraß',\n", - " 'vom kreuz in die hölle, schwärzeste schwärze in mir, gekrochen zu grabe',\n", - " 'schwarze seelen tanzt den todt, taumelnd im feuer',\n", - " 'arretiert im sterbenden reich eures gescheiterten allvaters',\n", - " 'untot siechend erkenne ich den einzig wahren sauren weg',\n", - " 'indolent lodernd wappne ich mich für das mir unentrinnbare',\n", - " 'imminent obgleich dieser meiner katatonie bin ich gespornt',\n", - " 'exitium',\n", - " 'auf dem unbekannten pfad',\n", - " 'sehenden augеs wandelnd',\n", - " 'strauchelnd, doch immerfort',\n", - " 'zur unauswеichlichen destination',\n", - " 'die heimfahrt auf immer verwehrt',\n", - " 'liberatio',\n", - " \"buried in a distant bitterness's limbos\",\n", - " 'from a single betrayal, drunk with hatred, with grief',\n", - " 'i slow my marks down in this tasteless world',\n", - " 'feeling the remains of my heart, empty',\n", - " 'alors tu as fermé le livre de notre jeune histoire',\n", - " \"dans le noir, avec toujours un peu d'espoir\",\n", - " \"j'ai recroquevillé mon âme, j'ai mâché mes croûtes\",\n", - " \"et dans un silence parfait, j'ai connu le vrai doute\",\n", - " 'walking open-eyed',\n", - " 'on the unknown path',\n", - " 'stumblingly, yet ever on',\n", - " 'towards my inescapable destination',\n", - " 'return home, denied for good',\n", - " 'dimissus',\n", - " 'spirit here that laughest',\n", - " 'spirit here tha quaffest',\n", - " 'spirit here that danceth',\n", - " 'spirit here that pranceth',\n", - " 'spirit with thee',\n", - " 'i join in the glee',\n", - " \"enfoui dans les limbes d'une amertume lointaine\",\n", - " \"d'une trahison unique, enivrée de haine, de peine\",\n", - " 'je freine mes marques dans ce monde insipide',\n", - " 'ressentant les restes de mon coeur, vides',\n", - " 'so you closed the book of our young history',\n", - " 'in the dark, with still a little of hope',\n", - " 'i curled my soul up, i chewed my crusts',\n", - " 'and in a perfect silence, i knew the real doubt',\n", - " 'der fäulnis dieser existenz entkommend',\n", - " 'gehe ich diesen meinen letzten weg',\n", - " 'diesem jokus, deinem sein überdrüssig',\n", - " 'wandle ich gen neige, gen katharsis',\n", - " 'libertas',\n", - " 'libertas in exitus',\n", - " 'exitus in libertas',\n", - " 'die wunder dieser welt werden dir geschenkt',\n", - " 'glück ist nicht käuflich sehnsucht bleibt unerreicht',\n", - " 'preisrätsel winken nimmersatt',\n", - " 'kein mitleid für die mehrheit',\n", - " 'kein mitleid für die mehrheit',\n", - " 'nihilistic mystics',\n", - " 'apostolic alcoholics',\n", - " 'messianic manics',\n", - " 'cataclysmic and prolific',\n", - " 'in the age of super-boredom',\n", - " 'hype and mediocrity',\n", - " 'celebrate relentlessness',\n", - " 'menace to society',\n", - " 'this is counter-culture from the underground',\n", - " 'eternal revolution, this is our sound',\n", - " 'kmfdm, better than the best',\n", - " 'megalomaniacal and harder than the rest',\n", - " 'refuse is our inspiration',\n", - " 'terrorism our trade',\n", - " 'sabotage and piracy',\n", - " 'chaos our mental state',\n", - " 'mesmerizing, festering',\n", - " 'intended for the faint of heart',\n", - " 'cultish and anthemic',\n", - " 'until death us do part',\n", - " 'this is counter-culture from the underground',\n", - " 'eternal revolution, this is our sound',\n", - " 'kmfdm, better than the best',\n", - " 'megalomaniacal and harder than the rest',\n", - " 'wenn der untergrund bebt ist die ordnung erschüttert',\n", - " 'der verrat an der seele macht leben ungesund',\n", - " 'mit unschlagbaren reimen werden wir uns vertreiben',\n", - " 'die zeit der langen weile bis zum grossen bums',\n", - " 'like a fiendish tropic virus',\n", - " 'spitting bile at all you whores',\n", - " 'razor-sharp tongue-in-cheek',\n", - " 'poking in your open sores',\n", - " \"a wolf in sheep's clothing\",\n", - " 'the ultimate disgrace',\n", - " 'wrapped up as a gift of god',\n", - " 'exploding in your face',\n", - " 'this is counter-culture from the underground',\n", - " 'eternal revolution, this is our sound',\n", - " 'kmfdm, better than the best',\n", - " 'megalomaniacal and harder than the rest',\n", - " 'refuse is our inspiration',\n", - " 'terrorism our trade',\n", - " 'sabotage and piracy',\n", - " 'chaos our mental state',\n", - " 'in the age of super-boredom',\n", - " 'hype and mediocrity',\n", - " 'celebrate relentlessness',\n", - " 'menace to society',\n", - " 'this is counter-culture from the underground',\n", - " 'eternal revolution, this is our sound',\n", - " 'kmfdm, better than the best',\n", - " 'megalomaniacal and harder than the rest',\n", - " 'megalomaniacal',\n", - " 'megalomaniacal',\n", - " 'megalomaniacal',\n", - " 'better than the best and harder than the rest',\n", - " 'imitationen von dir',\n", - " 'befinden sich in mir',\n", - " 'imitationen von dir',\n", - " 'verbünden sich mit mir',\n", - " 'berühren und begleiten mich',\n", - " 'sagen: \"es gibt kein wahres ich\"',\n", - " 'verspüren und bereuen nichts',\n", - " 'spucken den leugnern ins gesicht',\n", - " 'dein gut ist mein gut',\n", - " 'dein schön ist mein schön',\n", - " 'dein wahr ist mein wahr',\n", - " 'imitationen von dir',\n", - " 'wiederholen sich in mir',\n", - " 'imitationen von dir',\n", - " 'klopfen an die tür',\n", - " 'und leise reden sie mir ein:',\n", - " '\"du musst nicht du selber sein\"',\n", - " 'und leise reden sie mir ein:',\n", - " '\"wir werden dich von dir befreien\"',\n", - " 'dein schlecht ist mein schlecht',\n", - " 'dein schlimm ist mein schlimm',\n", - " 'dein schlimm ist mein',\n", - " 'ganz schlimm',\n", - " '\"du bist so viel gereist',\n", - " 'im zickzack durch die zeit',\n", - " 'nirgendwo, wo du bleibst',\n", - " 'manchmal nur durch träume treibst',\n", - " 'fast durch die ganze welt',\n", - " 'bist du zu mir bestellt',\n", - " 'fast durch die ganze welt',\n", - " 'bist du zu mir bestellt',\n", - " 'dein gut ist mein gut',\n", - " 'dein schön ist mein schön',\n", - " 'dein wahr ist mein wahr',\n", - " 'dein schlecht ist mein schlecht',\n", - " 'dein schlimm ist mein schlimm',\n", - " 'dein schlimm ist mein',\n", - " 'ganz schlimm',\n", - " 'imitations of you',\n", - " 'are residing within me',\n", - " 'imitations of you',\n", - " 'are allying with me',\n", - " 'they touch me and go along with me',\n", - " 'they say \"there\\'s nothing like a true me\"',\n", - " 'they dont sense and dont regret a thing',\n", - " 'they spit in the face of the deniers',\n", - " 'your well is my well',\n", - " 'your fine is my fine',\n", - " 'your truth is my truth',\n", - " 'imitations of you',\n", - " 'echo within me',\n", - " 'imitations of you',\n", - " 'are knocking on the door',\n", - " \"and gently they're convincing me\",\n", - " '\"you dont have to be yourself\"',\n", - " \"and gently they're convincing me\",\n", - " '\"we will free yourself from you\"',\n", - " 'your ill is my ill',\n", - " 'your bad is my bad',\n", - " 'your bad is my worst',\n", - " 'you traveled so much',\n", - " 'crisscross thorugh time',\n", - " 'theres nowhere you stay',\n", - " 'sometimes just floating through dreams',\n", - " 'almost across all the world',\n", - " 'are you appointed to me',\n", - " 'almost across all the world',\n", - " 'are you appointed to me',\n", - " 'your well is my well',\n", - " 'your beauty is my beauty',\n", - " 'your truth is my truth',\n", - " 'your ill is my ill',\n", - " 'your bad is my bad',\n", - " 'your bad is my worse',\n", - " 'durch die nacht mit feuer und benzin',\n", - " 'verbrenn die straßen in deinem und meinem kopf',\n", - " 'we can stop the machine',\n", - " 'we can break our bodies',\n", - " 'an arm becomes a flat field',\n", - " 'we can form our bodies',\n", - " 'and we will',\n", - " 'and we will',\n", - " 'we could fit mountains between index and middle finger',\n", - " 'unsere augen brennen, wenn das licht einfällt',\n", - " 'die maschine holt uns ein',\n", - " 'we can stop the machine',\n", - " 'we can break our bodies',\n", - " 'an arm becomes a flat field',\n", - " 'we can destroy our bodies',\n", - " 'and we will',\n", - " 'and we will',\n", - " 'we could fit mountains between index and middle finger',\n", - " '\"keine angst\" always on display',\n", - " 'but the colors are the fear',\n", - " '\"keine angst\" always on display',\n", - " 'a sign in red',\n", - " 'wir zwei singen nun zu dritt',\n", - " 'der dritte, der bin ich',\n", - " 'am ort, an dem pferde sich zur ruhe legen',\n", - " 'die maschine ist weit weg',\n", - " 'der morgen kommt kalt wie jeden tag',\n", - " 'wir zwei bluten aus',\n", - " 'we cannot stop the machine',\n", - " 'but we can break our bodies',\n", - " 'an arm becomes a flat field',\n", - " 'and fear becomes a body',\n", - " 'keine angst',\n", - " \"komm, iki maska, let's go zack\",\n", - " \"komm, iki maska, let's go zisch\",\n", - " 'erleuchtung ist das wort der stunde',\n", - " 'shit ich ihn da sah, da sitzen sah',\n", - " \"(komm, iki maska, let's go zack)\",\n", - " \"(komm, iki maska, let's go zisch)\",\n", - " 'o sole mio... o sole mio...',\n", - " \"let's do the split and i shit on it\",\n", - " \"let's do the split and i spit on it\",\n", - " \"(komm, iki maska, let's go zack)\",\n", - " \"(komm, iki maska, let's go zisch)\",\n", - " 'o sole mio... o sole mio...',\n", - " \"(komm, iki maska, let's go zack)\",\n", - " \"(komm, iki maska, let's go zisch)\",\n", - " '...und wenn dann der kopf faellt',\n", - " 'sage ich ha ha ha ha ha',\n", - " '40 jahre wandern im eis',\n", - " 'du bist müde vom gehen im kreis',\n", - " 'dein weltbild trägt sich nicht gerade leicht',\n", - " 'der tag bricht an und alles wird weiß',\n", - " 'oho woho',\n", - " 'oho woho',\n", - " 'no matter if you get lost',\n", - " 'you will always stay right where we are',\n", - " 'no matter where you are going',\n", - " 'you will always come with us back to start',\n", - " 'no matter if you get lost',\n", - " 'you will always stay right where we are',\n", - " 'no matter where you are going',\n", - " 'you will always come with us back to start',\n", - " 'oho woho',\n", - " 'oho woho',\n", - " \"…i can't get no satisfaction…\",\n", - " '…all you need is love…',\n", - " \"we're playing the sets on the blow\",\n", - " 'just keep on waiting',\n", - " 'slow goes the goose',\n", - " 'you see me shoes in your mirror mind',\n", - " 'quick goes the trick',\n", - " 'i ask your sick sailing sailors blind',\n", - " 'i travel into the tongue',\n", - " 'ready to drop ding dong is handsome top',\n", - " 'i ask your sick sailing sailors blind',\n", - " 'i travel into the tongue',\n", - " 'ready to drop ding dong is handsome top',\n", - " '“findst du das angenehm?”',\n", - " '“ja… zum überleben reicht das schon”',\n", - " '“du hast dich auch verändert in den letzten jahren”',\n", - " '“findest du?”',\n", - " '“warum bloß? warscheinlich… nee… aber… warum isst du denn nicht mohrrüben?”',\n", - " '“ja, das wäre wirklich schön”',\n", - " '“wollen wir das machen?”',\n", - " '“ja”',\n", - " '“willst du runter steigen?”',\n", - " '…',\n", - " '“wie sieht das überhaupt aus das buch?”',\n", - " 'selbst clemens kann man heute nicht erreichen',\n", - " 'er ist die tage in rom',\n", - " 'before he left, he said: \"andreas, come on',\n", - " 'there\\'s nothing like drinking, like drinking on your own\"',\n", - " 'all those hotel rooms and worn down beds',\n", - " 'beautiful miss mary jane beneath the sword of damocles',\n", - " \"und auch auf isabella sollt' ich nicht mehr zählen\",\n", - " 'she speaks sweet love und will die boys nur bluten sehen',\n", - " 'i get heavenly drunk while she talks of politics',\n", - " 'girl, get a car, get a gun',\n", - " 'ich wüsste nicht, was dagegen spricht',\n", - " 'du, ich kenn noch eine bar, da kriegen wir die drinks for free',\n", - " 'wenn du mich jetzt nicht liebst, dann liebst du mich wohl nie',\n", - " \"jetzt hab' ich clemens am telefon\",\n", - " 'a midnight long distance call',\n", - " \"we didn't do much talking, but talked about it all\",\n", - " 'der regen und die hundstage, der schlechte wein im nachtzug',\n", - " 'irgendwann kommt dann die nachricht:',\n", - " '\"boy, i hate every inch of you\"',\n", - " 'back in berlin, a ghost came to stay',\n", - " 'ich befürchte, es fischt bald jemand diesen buben aus der spree',\n", - " 'und ich sag\\': \"tommy, kommt\\'s nur mir so vor',\n", - " 'oder schmeckt das h auf dieser straße auch nicht anders als am schottentor?\"',\n", - " 'in this everlasting end',\n", - " 'sort your enemies and friends',\n", - " 'the ones who bring you up from the ones who bring you down',\n", - " 'the creepy bastards from the golden few',\n", - " 'and like the devil runs from holy water',\n", - " 'run from the ones that say \"i love you\"',\n", - " 'run from the ones that say \"i love you\"',\n", - " 'in this everlasting end',\n", - " 'sort your enemies and friends',\n", - " 'the ones who bring you up from the ones who bring you down',\n", - " 'the creepy bastards from the golden few',\n", - " 'and like the devil runs from holy water',\n", - " 'run from the ones that say \"i love you\"',\n", - " 'run from the ones that say \"i love you\"',\n", - " 'ich hab angst um dich',\n", - " 'ich seh das du taumelst',\n", - " 'du siehst so zerissen aus',\n", - " 'du weißt nicht wo du hin willst',\n", - " 'du hast den faden verlorn',\n", - " 'du bist aus der balance',\n", - " 'guck in den schatten deiner fehler',\n", - " 'gibst du blendern ihre chance',\n", - " 'und von links und von rechts',\n", - " 'will ein rauer wind dich lenken',\n", - " 'geh mit der zeit',\n", - " 'aber fall nicht in alte fehler',\n", - " 'denn die wahrheit liegt',\n", - " 'irgendwo in der mitte',\n", - " 'bitte versprich mir',\n", - " 'das du dein gleichgewicht',\n", - " 'nicht verlierst',\n", - " 'dein glück liegt',\n", - " 'irgendwo in der mitte',\n", - " 'irgendwo in der mitte',\n", - " 'gehört dein herz',\n", - " 'mach mir sorgen um dich',\n", - " 'wenn du von deiner zukunft sprichst',\n", - " 'du bist so leicht zu verführn',\n", - " 'geh nicht mit den falschen leuten mit',\n", - " 'du bist sicher nicht fehlerfrei',\n", - " 'aber du hast dich ganz gut gemacht',\n", - " 'ich bin so gern bei dir',\n", - " 'versprich mir das du auf dich aufpasst',\n", - " 'denn von links und von rechts',\n", - " 'will ein rauer wind dich lenken',\n", - " 'geh nach vorn mit der zeit',\n", - " 'aber mach nicht in alte fehler',\n", - " 'somewhere in the middle',\n", - " 'i’m afraid for you',\n", - " 'i see that you’re faltering',\n", - " 'you look so torn up',\n", - " 'you don’t know where you want to go',\n", - " 'you’ve lost your focus',\n", - " 'you’re out of balance',\n", - " 'look in the shadow of your mistakes',\n", - " 'you give phonies their chance',\n", - " 'and from the left and the right',\n", - " 'a harsh wind will direct you',\n", - " 'keep up with the times',\n", - " 'but don’t fall into the same old blunders',\n", - " 'cause the truth lies',\n", - " 'somewhere in the middle',\n", - " 'please promise me',\n", - " 'that you won’t lose',\n", - " 'your balance',\n", - " 'your happiness lies',\n", - " 'somewhere in the middle',\n", - " 'your heart belongs',\n", - " 'somewhere in the middle',\n", - " 'i worry about you',\n", - " 'when you talk about your future',\n", - " 'you’re easy to mislead',\n", - " 'don’t go along with the wrong crowd',\n", - " 'you’re certainly not without fault',\n", - " 'but you’ve done quite well',\n", - " 'i’m so happy with you',\n", - " 'promise me you’ll take good care of yourself',\n", - " '‘cause from the left and right',\n", - " 'a harsh wind will direct you',\n", - " 'go forward with the times',\n", - " 'but don’t make the same old mistakes',\n", - " '\"der nächste song für euch: armata...\"',\n", - " '(strigoi!)',\n", - " '\"freunde, ich will euch hören!\"',\n", - " 'hey, hey!',\n", - " '(hey, hey, hey, hey, hey, hey!)',\n", - " '(hey, hey, hey, hey, hey, hey!)',\n", - " '\"gebt mir mehr!\"',\n", - " 'hey, hey!',\n", - " '(hey, hey, hey, hey, hey, hey!)',\n", - " '(hey, hey, hey, hey, hey, hey!)',\n", - " 'stand up for god in the land of the fire',\n", - " \"bring on the madness, you're born to destroy\",\n", - " 'beyond the trail of tartarean riders',\n", - " 'armata strigoi',\n", - " 'before the morning can break we retire',\n", - " 'the searing heat of the sun we avoid',\n", - " 'await the dark, proud walachian fighters',\n", - " 'armata strigoi',\n", - " 'we are the stormbound, the avatar, oh',\n", - " 'we are the sons of god and sorrow',\n", - " 'we are the ones who see no tomorrow',\n", - " 'suck up, armata de strigoi',\n", - " 'hey, hey!',\n", - " '(hey, hey, hey, hey, hey, hey!)',\n", - " '(hey, hey, hey, hey, hey, hey!)',\n", - " 'we hail the cross and we kill by the bible',\n", - " 'for seven sins are defined to deploy',\n", - " 'along the front of moldavian strikers',\n", - " 'armata strigoi',\n", - " 'we pray for mercy of mater maria',\n", - " 'the sacred lie who gave birth to the boy',\n", - " 'we drink the blood of the fallen believer',\n", - " 'armata strigoi',\n", - " 'we are the stormbound, the avatar, oh',\n", - " 'we are the sons of god and sorrow',\n", - " 'we are the ones who see no tomorrow',\n", - " 'suck up, armata de strigoi',\n", - " '\"so freunde, jetzt singen wir, was wir gelernt haben!\"',\n", - " 'oh-oh oh, oh-oh-oh oh, oh oh',\n", - " 'oh-oh oh, oh-oh-oh oh, oh oh',\n", - " 'oh-oh oh, oh-oh-oh oh, oh oh',\n", - " 'oh oh, oh-oh-oh, oh oh',\n", - " '\"ihr allein!\"',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '\"sehr gut!\"',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '\"fantastisch!\"',\n", - " '(oh oh, oh-oh-oh, oh oh)',\n", - " '\"und jetzt noch mal nur die ränge, die ränge!\"',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '\"ah, kommt!\"',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '\"sehr schön!\"',\n", - " '(oh oh, oh-oh-oh, oh oh)',\n", - " '\"jetzt nur die frauen!\"',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '\"du bist keine frau.\"',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '\"frauen!\"',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '\"oh, das ist schön.\"',\n", - " '(oh oh, oh-oh-oh, oh oh)',\n", - " '\"und jetzt die männer!\"',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '(oh oh, oh-oh-oh, oh oh)',\n", - " '\"und noch einmal alle zusammen!\"',\n", - " 'oh-oh oh',\n", - " '(oh-oh-oh oh, oh oh)',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '(oh-oh oh, oh-oh-oh oh, oh oh)',\n", - " '(oh oh, oh-oh-oh, oh oh)',\n", - " '\"ich muss sagen, die deutschen singen echt am besten',\n", - " 'vielen dankeschön!\"',\n", - " '\"ich will euch nochmal hören!\"',\n", - " 'hey, hey!',\n", - " '(hey, hey, hey, hey, hey, hey!)',\n", - " '(hey, hey, hey, hey, hey, hey!)',\n", - " 'we are the stormbound, the avatar, oh',\n", - " 'we are the sons of god and sorrow',\n", - " 'we are the ones who see no tomorrow',\n", - " 'suck up, armata de strigoi',\n", - " 'hop on board, take a ride',\n", - " 'a brand new steelhorse drives our foreign exchanges home',\n", - " \"it's one more nail into the coffin\",\n", - " 'of this gutted corpse, happily laid to rest and buried',\n", - " 'unsere moralische',\n", - " 'bankrotterklärung',\n", - " 'solange die kasse stimmt',\n", - " 'sind wir auf',\n", - " 'beiden augen blind',\n", - " 'beiden augen blind',\n", - " 'like a new storm',\n", - " 'you take me to the exile of my mind!',\n", - " \"you're my saviour, the unknown, somewhere before my eyes!\",\n", - " 'this is me following your footsteps',\n", - " 'trying to get access into the end',\n", - " 'is it you, the perfect moment after?',\n", - " 'or just yesterday again?',\n", - " \"i've been searching, i've been waiting\",\n", - " 'for the best day of my life!',\n", - " 'can you feel me, can you safe me',\n", - " 'on the best day of my life?',\n", - " 'no more breaking, breaking, breaking bad',\n", - " 'wanna wake up, wake up from the death',\n", - " \"i'll be fightin', i'll be dyin'\",\n", - " 'for the best day of my life',\n", - " 'aufstehen, zähne putzen, haare kämmen',\n", - " 'weiße schuhe, graue hose, schwarzer cardigan!',\n", - " \"sag' mir bescheid, wenn ich noch irgendwas vergessen hab', ich bin perfekt ausgestattet für meinen besten tag\",\n", - " \"und du fragst, was so besonders daran ist, dann sag' ich:\",\n", - " 'heute scheint die sonne nur für mich, sie mag mich!',\n", - " 'meine augen sind rot und glasig',\n", - " \"ich sitz' im park und mach die arbeit eines habichts - gar nichts!\",\n", - " \"24/7 bleib' ich cool wie'n gletscher\",\n", - " 'schöner tag, du bist mein bester!',\n", - " \"ich hab' dich gesucht und gefunden!\",\n", - " \"und jetzt bleiben mir nur'n paar stunden!\",\n", - " 'this is me following your foot steps',\n", - " 'trying to get access into the end',\n", - " 'is it you, the perfect moment after?',\n", - " 'or just yesterday again?',\n", - " \"i've been searching, i've been waiting\",\n", - " 'for the best day of my life!',\n", - " 'can you feel me, can you safe me',\n", - " 'on the best day of my life?',\n", - " 'no more breaking, breaking, breaking bad',\n", - " 'wanna wake up, wake up from the death',\n", - " \"i'll be fightin', i'll be dyin'\",\n", - " 'for the best day of my life',\n", - " 'life!',\n", - " 'the best day of my life!',\n", - " 'the best day of my life!',\n", - " '(for the best day)',\n", - " 'of my life!',\n", - " '(for the best day)',\n", - " 'of my life!',\n", - " \"i'll be hangin' on, i'll be coming strong\",\n", - " 'on the best day of my life!',\n", - " 'this is how i feel, this time is for real',\n", - " 'on the best day of my life!',\n", - " 'no more breaking, breaking, breaking bad',\n", - " 'wanna wake up, wake up from the death',\n", - " \"i'll be fightin', i mean dyin'\",\n", - " 'for the best day of my life!',\n", - " 'for the best day of my life',\n", - " 'i enter the gates',\n", - " 'into the realm where nothing dies',\n", - " \"but i'm still so cold inside\",\n", - " 'mesmerized...',\n", - " 'by visions past and gone',\n", - " 'till the end of time',\n", - " 'i will eternally dwell',\n", - " 'im dunkelsten der stürme',\n", - " 'falle zusammen die kerkerwand',\n", - " 'die mich schier endlos band',\n", - " 'und herrlicher und freier walle',\n", - " 'meine seele ins unbekannte land',\n", - " 'in the darkest of storms',\n", - " 'may crumble the dungeonwall',\n", - " 'that bound me almost endlessly',\n", - " 'and delightful and free may pilgrimage',\n", - " 'my soul into the unknown land',\n", - " 'i fly with the raven',\n", - " 'through timeless spheres of frost...',\n", - " 'through wasted lands of dreams',\n", - " 'geflohen vor der wirklichkeit - vor ewigkeiten',\n", - " 'und jenseits der schwärze erstreckt sich',\n", - " 'ein unendliches meer aus grau...',\n", - " 'ein meer aus gestaltloser leere',\n", - " 'doch die qualen und der schmerz verbleiben',\n", - " 'als erinnerungen an die vergangene zeit',\n", - " 'stolz und doch verzweifelt...',\n", - " 'und in meinem innersten hoffe ich',\n", - " 'daß mein leben nur ein traum ist...',\n", - " 'fled from reality - for eternities',\n", - " 'and on the other side of the blackness',\n", - " 'an endless sea of greyness extends...',\n", - " 'a sea of formless emptiness',\n", - " 'yet the misery and the pain remain',\n", - " 'as memories of passed time',\n", - " 'proud yet desperate...',\n", - " 'and deep inside i hope',\n", - " 'that my life is just a dream...',\n", - " 'the moon is my blanket',\n", - " 'in this cold domain',\n", - " 'so ancient - so cold...',\n", - " 'as a nightmare creature i crawl',\n", - " 'awakened from my sleep',\n", - " 'to forever be...',\n", - " 'wiedergeboren...',\n", - " 'bei den drei monden durch mittwinters tore',\n", - " 'reborn...',\n", - " \"by the three moons through midwinter's gates\",\n", - " \"i'm a shadow on haunted ground\",\n", - " 'laughing in sorrow',\n", - " 'crying in lust',\n", - " 'the storm is calming and death is rising',\n", - " 'evil - as pure as night',\n", - " 'proud - full of sin',\n", - " \"once again i'll rise...\",\n", - " 'to survive eternity...',\n", - " 'and all the colours collide',\n", - " 'and we are wasting into the now or never',\n", - " 'as we ascend to an end',\n", - " 'the friends we have will all just dream together',\n", - " \"we haven't gotten this far\",\n", - " 'is there a chance that we can go the tether?',\n", - " \"i haven't practiced this part\",\n", - " \"but that's the way that we're gonna roll forever\",\n", - " 'into the now, into the now, the now or never',\n", - " 'into the now, into the now, the now or never',\n", - " 'immer wieder sind wir alle tagediebe',\n", - " 'immer diese weltanschauung',\n", - " 'ist auf einmal aufgetaut sag jetzt oder nie',\n", - " 'fick mich michi, fick mich, bitte fick mich',\n", - " 'fick mich michi, fick mich',\n", - " 'fick mich michi, fick mich, bitte fick mich',\n", - " 'fick mich michi, fick mich',\n", - " 'der michael der michael der',\n", - " 'ist im kopfe nicht sehr hell',\n", - " \"doch was da fehlt ihm unter'm schopf\",\n", - " 'gar prächtig blüht im lendenkropf',\n", - " 'bei den fräulein überland',\n", - " 'war er für liebeskunst bekannt',\n", - " 'alle damen, aller ort',\n", - " 'sangen so in einem fort',\n", - " \"g-spot michael, g-spot michael soon i' m gonna die\",\n", - " 'pounding like a fourstroke cycle make me happy make me cry',\n", - " 'g-point michael, g-point michael nothing left to say',\n", - " 'banging like a fourstroke cycle all night long i say',\n", - " 'doch bald ist ihm die lust verkommen',\n", - " 'hat sich der sache übernommen',\n", - " 'sich beim liebesspiel verbogen',\n", - " 'und nach südafrika gezogen',\n", - " 'der wind weht leise übers meer',\n", - " 'über berge zu mir her',\n", - " 'wird mir kund zu ohren bringen',\n", - " 'in afrika die mädchen singen',\n", - " 'i know why i have to die',\n", - " \"it's like my body all the veins are bleeding dry\",\n", - " 'the blood falls from the heart above',\n", - " 'down near in the part i need for love',\n", - " 'i know why i have to die',\n", - " 'all my cells inside are running dry',\n", - " 'all my tears i gave away',\n", - " \"doesn't matter all night long i stay\",\n", - " 'i know why i have to die',\n", - " 'inside my body all the veins are bleeding dry',\n", - " 'all the blood falls from the heart above',\n", - " 'down near in the part i need for love',\n", - " '\"seid ihr bereit für the army of...\"',\n", - " '(the night)',\n", - " 'stand up all the night and call the fight',\n", - " 'let your mind go wild before the light',\n", - " 'here we come, the army of the night',\n", - " 'mater maria',\n", - " 'lined up side by side and bound to pray',\n", - " 'sent to die and fight the final day',\n", - " 'army of the night, we came to stay',\n", - " 'mater maria',\n", - " 'better you pray before the night is falling',\n", - " 'call on the heaven sent, amen',\n", - " \"follow the night, it's your messiah calling\",\n", - " 'bring on the sacrament, amen',\n", - " 'come on the other side',\n", - " 'into the dark we hide',\n", - " 'gather them for the rite',\n", - " 'sacristarum',\n", - " 'we are the force allied',\n", - " 'into the war we ride',\n", - " 'halleluja',\n", - " 'stand up all the night and call the fight',\n", - " 'let your mind go wild before the light',\n", - " 'here we come, the army of the night',\n", - " 'mater maria',\n", - " 'lined up side by side and bound to pray',\n", - " 'sent to die and fight the final day',\n", - " 'army of the night, we came to stay',\n", - " 'mater maria',\n", - " \"enemies falling when the sermon's spoken\",\n", - " 'taken by higher hand, amen',\n", - " 'follow the martyrs when the bible broken',\n", - " 'summon the testament, amen',\n", - " 'come on the other side',\n", - " 'into the dark we hide',\n", - " 'gather them for the rite',\n", - " 'sacristarum',\n", - " 'we are the force allied',\n", - " 'into the war we ride',\n", - " 'halleluja',\n", - " 'stand up all the night and call the fight',\n", - " 'let your mind go wild before the light',\n", - " 'here we come, the army of the night',\n", - " 'mater maria',\n", - " 'lined up side by side and bound to pray',\n", - " 'sent to die and fight the final day',\n", - " 'army of the night, we came to stay',\n", - " 'mater maria',\n", - " '\"ludwigsburg!',\n", - " 'seid ihr unsere heavy-metal-armee heute nacht?\"',\n", - " 'stand up all the night and call the fight',\n", - " 'let your mind go wild before the light',\n", - " 'here we come, the army of the night',\n", - " 'mater maria',\n", - " 'sanctify the night for all the time',\n", - " 'break the bread and raise the holy wine',\n", - " 'army of the night, go walk the line',\n", - " 'mater maria',\n", - " '\"frauen, seid ihr da?',\n", - " 'frauen, seid ihr da?',\n", - " 'meine lieben frauen, könnt ihr euch vielleicht kurz vorstellen, dass hier auf bühne ein super sexy rockstar steht und würdet ihr mich wieder noch mal so anschreien, noch ein bisschen mehr, wenn ich euch frage:',\n", - " 'frauen, seid ihr da?\"',\n", - " '\"uh, da platzt kurz das trommelfell',\n", - " 'männer, seid ihr da?\"',\n", - " '\"schon machst du arme hoch, schon kommen die männer, super!',\n", - " 'männer! zeigt mir bitte eine hand. aber bitte nur eine',\n", - " 'und wenn er nun bewegt diese hand an euer gemächt für den nächsten song.\"',\n", - " \"ich riech' nach feiern und nach fremden\",\n", - " 'ich hab mein gleichgewicht verloren',\n", - " 'ich klopfe morgens an dein fenster',\n", - " 'bis deine nachbarn es auch hören',\n", - " 'ich verstreue meine sachen',\n", - " 'überall liegt was von mir',\n", - " 'ich lege netze, stelle fallen',\n", - " 'und teste dich so auf gespür',\n", - " 'immer wieder',\n", - " 'sing ich die liebeslieder',\n", - " 'vom kampf ohne verlierer',\n", - " 'und du hörst mir zu',\n", - " 'deine wünsche sind nicht bescheiden',\n", - " 'du sagst:„mon chèr. sei lieb, madame.“',\n", - " 'erwischst mich auf eine art und weise',\n", - " 'da fang ich glatt das streiten an',\n", - " 'wir kennen uns jetzt fast schon lange',\n", - " 'es heute zu sagen ist nur fair',\n", - " 'du weißt, ich bin kein kleines mädchen',\n", - " 'und du kein kleine junge',\n", - " 'immer wieder',\n", - " 'sing ich die liebeslieder',\n", - " 'vom kampf ohne verlierer',\n", - " 'und du hörst mir zu',\n", - " \"immer wieder verkling'n die liebeslieder\",\n", - " 'ich weiß, du willst ein sieger',\n", - " 'doch ganz dein nur, werd ich nie sein',\n", - " 'in deinen armen will ich weilen',\n", - " 'in deinen armen will ich reisen',\n", - " 'in deinen armen will ich weinen',\n", - " 'in deinen armen will ich sein',\n", - " 'immer wieder',\n", - " 'sing ich die liebeslieder',\n", - " 'vom kampf ohne verlierer',\n", - " 'und du hörst mir zu',\n", - " 'immer wieder, sing ich dir diese lieder',\n", - " 'vom au, au auf und nieder',\n", - " 'doch ganz dein nur, werd nie ich sein',\n", - " 'doch immer wieder dein. doch immer wieder dein',\n", - " 'immer wieder. doch immer wieder',\n", - " 'again and again',\n", - " 'i smell like parties and strangers',\n", - " 'i have lost my balance',\n", - " 'i knock on your window in the morning',\n", - " 'until your neighbors hear it too',\n", - " 'i scatter my things',\n", - " 'my stuff lies everywhere',\n", - " \"i'm placing nets, setting traps\",\n", - " \"and i'm testing your intuition\",\n", - " 'again and again',\n", - " \"i'm singing love songs\",\n", - " 'of a fight without a loser',\n", - " \"and you're listening to me\",\n", - " 'your wishes are not modest',\n", - " 'you say: \"my dear. be kind, madame.\"',\n", - " 'catch me in a way',\n", - " 'then i begin to smooth over the quarrel',\n", - " 'we’ve known each other now for quite along time',\n", - " 'it is only fair to say today',\n", - " \"you know, i'm not a little girl\",\n", - " 'and you are not a little boy',\n", - " 'again and again',\n", - " \"i'm singing love songs\",\n", - " 'of a fight without a loser',\n", - " \"and you're listening to me\",\n", - " 'again and again the love songs fade away',\n", - " 'i know you want a winner',\n", - " \"but i'll never be just yours completely\",\n", - " 'i want to stay in your arms',\n", - " 'i want to go to your arms',\n", - " 'i want to cry in your arms',\n", - " 'i want to be in your armw',\n", - " 'again and again',\n", - " \"i'm singing love songs\",\n", - " 'of a fight without a loser',\n", - " \"and you're listening to me\",\n", - " 'again and again, i sing you this song',\n", - " 'of good and bad',\n", - " \"but i'll never be just yours completely\",\n", - " 'but yours, again and again',\n", - " 'but yours, again and again',\n", - " 'again and again',\n", - " 'but again and again',\n", - " 'wir tanzen elektrisch',\n", - " 'ganz hektisch',\n", - " 'wir schwingen fantastisch',\n", - " 'elastisch',\n", - " \"wir dreh'n uns narkotisch\",\n", - " 'hyperhypnotisch',\n", - " 'wir tanzen den rhythmus',\n", - " 'wo ich mit muss',\n", - " 'feed my fire',\n", - " 'let me put some',\n", - " 'dust on your face',\n", - " 'heat my wire',\n", - " 'you make me feel ecstatic',\n", - " 'make me dance fanatic tonight',\n", - " 'tanz - fanatica',\n", - " 'tanz - fanatica',\n", - " 'wir tanzen elektrisch',\n", - " 'ganz hektisch',\n", - " 'wir schweben erotisch',\n", - " 'neoexotisch',\n", - " 'wir wiegen uns kryptisch',\n", - " 'apokalyptisch',\n", - " 'wir tanzen ekstatisch',\n", - " 'wir tanzen fanatisch',\n", - " 'feed my fire',\n", - " 'let me put some',\n", - " 'dust on your face',\n", - " 'heat my wire',\n", - " 'you make me feel ecstatic',\n", - " 'make me dance fanatic tonight',\n", - " 'tanz - fanatica',\n", - " 'tanz - fanatica',\n", - " 'feed my fire',\n", - " 'let me put some',\n", - " 'dust on your face',\n", - " 'heat my wire',\n", - " 'you make me feel ecstatic',\n", - " 'make me dance fanatic tonight',\n", - " ...]},\n", - " 'data': ['we, we get together',\n", - " 'in nocturnal spaces',\n", - " \"we've seen it all before\",\n", - " \"in other people's faces\",\n", - " 'sich dem absurden unterwerfen',\n", - " 'sich nicht dem wahnsinn unterwerfen',\n", - " 'without fronts and uniforms',\n", - " 'a whole lotta nothing in the name of no one',\n", - " 'in these orgies, in these riots',\n", - " 'the past will never pass',\n", - " 'getarnt als spaß und auch als kummer',\n", - " \"seh' ich nur überall fadess\",\n", - " 'ja, ich weiß, dass es zu früh ist',\n", - " 'und ich weiß auch, dass es spät ist',\n", - " 'that is why time is on my side',\n", - " \"oh i know it's yet too early\",\n", - " \"and i know it's far too late\",\n", - " \"und ich seh' keinen grund zu warten, denn ich hab' alle zeit der welt\",\n", - " 'so we get together',\n", - " 'my nocturnal friends',\n", - " \"we've seen but have we understood the means and the ends?\",\n", - " 'sich dem absurden unterwerfen',\n", - " 'heißt den wahnsinn erst begreifen',\n", - " 'so i am whatever as you are whatever',\n", - " 'a whole lotta nothing in the name of no one',\n", - " 'in these orgies, in these riots',\n", - " 'the past will never pass',\n", - " 'man hat spaß und man hat kummer',\n", - " \"und ich seh' überall fadess\",\n", - " 'in this inferno',\n", - " 'in this inferno',\n", - " 'in this inferno',\n", - " 'in this inferno',\n", - " 'there is no virgil that can guide us',\n", - " 'länge',\n", - " '236 m',\n", - " 'breite auf spanten',\n", - " 'max. 48 m',\n", - " 'seitenhöhe bis hauptdeck',\n", - " '27,9 m',\n", - " 'tiefgang',\n", - " 'max. 14,21 m',\n", - " 'verdrängung bei max. tiefgang',\n", - " '24.300 t',\n", - " 'leergewicht',\n", - " '19.820 t',\n", - " 'motorleistung (12 maschinen)',\n", - " 'ca. 75.000 ps',\n", - " 'höchstgeschwindigkeit',\n", - " 'unwahrscheinlich',\n", - " 'besonderheit',\n", - " 'unsinkbar',\n", - " 'length',\n", - " '236 m',\n", - " 'width on frame',\n", - " 'max. 48 m',\n", - " 'depth to main deck',\n", - " '27,9 m',\n", - " 'draft',\n", - " 'max. 14,21 m',\n", - " 'maximum displacement',\n", - " '24.000 t',\n", - " 'lightweight tonnage',\n", - " '19.280 t',\n", - " 'engine power (12 machines)',\n", - " 'ca. 75.000 ps',\n", - " 'maximum speed',\n", - " 'implausible',\n", - " 'special ability',\n", - " 'unsinkable',\n", - " 'in all den jahren hast du so viel erlebt',\n", - " 'und du merkst immer wieder',\n", - " 'wie schnell wie die zeit vergeht',\n", - " 'denn du bist noch lange nicht satt',\n", - " 'ein weiter weg der liegt noch vor dir',\n", - " 'vergiss mal deine sorgen',\n", - " 'und leb im jetzt und hier',\n", - " 'the days of glory - you feel alright',\n", - " 'for days of glory - go out and fight',\n", - " 'in days of glory - you never loose the sight',\n", - " 'in another wasted night',\n", - " 'vergeude nicht die tage',\n", - " 'sie ziehen so schnell vorbei',\n", - " 'tu und mach was dir gefällt',\n", - " 'ja lebe und sei frei',\n", - " 'es kann so schnell zu ende sein',\n", - " 'genieße jedes jahr',\n", - " 'das leben es ist kostbar',\n", - " 'es ist einfach wunderbar',\n", - " 'the days of glory - you feel alright',\n", - " 'for days of glory - go out and fight',\n", - " 'in days of glory - you never loose the sight',\n", - " 'in another wasted night',\n", - " 'the days of glory - you feel alright',\n", - " 'for days of glory - go out and fight',\n", - " 'in days of glory - you never loose the sight',\n", - " 'with you`re heart full of pride',\n", - " 'absolute rule',\n", - " 'reason alone did not prevail',\n", - " 'only one hope',\n", - " 'your time is up',\n", - " 'and all new entities',\n", - " \"will dawn and they'll be risen from no ashes\",\n", - " 'merciless and adamant',\n", - " 'all options gone',\n", - " 'we are surrounded by the wolves',\n", - " 'es zwingt dich auf die knie',\n", - " 'vor unerbittlichem stehst du allein',\n", - " 'und voller zweifel im zustand der angst',\n", - " 'endlich, beugt sich dein haupt der übermacht',\n", - " 'du hast die henker selbst gewählt',\n", - " 'hast jeden widerstand aus deinem geist verbannt',\n", - " 'als die jahre des handelns verstrichen',\n", - " 'dein tanz im lügenreigen',\n", - " 'brachte dein treues herz zum schweigen',\n", - " 'days of the green wolves dawning',\n", - " 'a new hegemony ascending, survive at any cost',\n", - " \"like flies you'll crowd around the only light\",\n", - " 'no storm will sweep away what you call safety',\n", - " 'no war will swallow all your rapture',\n", - " 'for generations, unfolding in obscurity',\n", - " 'lifted upward to the stars by collective heresy',\n", - " 'days of the green wolves dawning',\n", - " 'a new hegemony ascending, survive at any cost',\n", - " 'now you know, time wasted is time lost',\n", - " 'es ist vorbei',\n", - " 'vor unerbittlichem stehst du allein',\n", - " \"und ohne gnade hör' ich die seelen brechen\",\n", - " 'endlich, devot folgst du dem übergang',\n", - " 'did you never see the shadows?',\n", - " 'freedom from danger is no more',\n", - " 'how could you fail to hear the echoes?',\n", - " 'the calling of impending doom',\n", - " 'days of the green wolves dawning',\n", - " 'a new hegemony ascending, survive at any cost',\n", - " 'so much too late you saw and understood',\n", - " 'es zwingt dich auf die knie',\n", - " 'endlich, beugt sich dein haupt der übermacht',\n", - " 'es steckt in meinem kopf, es klebt an meinen schuhen',\n", - " 'they brought it on the news last afternoon',\n", - " \"the dark times, they've just begun\",\n", - " \"there's darkness in the years to come\",\n", - " 'ich ahnte schlimmes, es kam schrecklich schlimm',\n", - " 'bleibt alles weg, bleibt alles hin',\n", - " 'ich hab\\'s probiert, man sagte mir: \"lass\\' es\"',\n", - " 'now i smash empty glasses',\n", - " \"i could easily blame it on somebody but it's all to blame on me\",\n", - " '(last-born of an inbred dynasty)',\n", - " \"i'm the last-born of an inbred dynasty\",\n", - " 'my mother is barbarie itself',\n", - " '(i could easily blame it on somebody)',\n", - " \"i could easily blame it on somebody but it's all to blame on me\",\n", - " \"so i can't cry you a river\",\n", - " 'for there is salt in my tears',\n", - " 'but if i cried you an ocean',\n", - " 'it would flood us for years',\n", - " 'es steckt in meinem kopf, es klebt an meinen schuhen',\n", - " 'they brought it on the news last afternoon',\n", - " \"the dark times, they've just begun\",\n", - " \"there's darkness in the years to come\",\n", - " '(i could easily blame it on somebody)',\n", - " \"i'm the last-born of an inbred dynasty\",\n", - " '(last-born of an inbred dynasty)',\n", - " 'my mother is barbarie itself',\n", - " '(i could easily blame it on somebody)',\n", - " \"i could easily blame it on somebody but it's all to blame on me\",\n", - " '(last-born of an inbred dynasty)',\n", - " \"i'm the last-born of an inbred dynasty\",\n", - " 'my mother is barbarie itself',\n", - " '(i could easily blame it on somebody)',\n", - " \"i could easily blame it on somebody but it's all to blame on my family\",\n", - " 'im sturz durch raum und zeit',\n", - " 'richtung unendlichkeit',\n", - " 'fliegen motten in das licht',\n", - " 'genau wie du und ich',\n", - " \"wrap your fingers 'round my neck\",\n", - " \"you don't speak my dialect\",\n", - " 'but our images reflect',\n", - " 'drawn together by the flame',\n", - " 'we are just the same',\n", - " 'embrace the wind and fall into',\n", - " 'another time and space',\n", - " \"gib' mir die hand\",\n", - " 'ich bau dir ein schloss aus sand',\n", - " 'irgendwie irgendwo irgendwann',\n", - " 'if we belong to each other, we belong',\n", - " 'anyplace anywhere anytime',\n", - " 'im sturz durch zeit und raum',\n", - " 'erwacht aus einem traum',\n", - " 'nur ein kurzer augenblick',\n", - " 'dann kehrt die nacht zurã¼ck',\n", - " 'bits and pieces from your storm',\n", - " 'rain upon me as they form',\n", - " 'melt into my skin and i feel warm',\n", - " 'sweep upon me like a wave',\n", - " 'we are young and brave',\n", - " 'embrace the wind and float into',\n", - " 'another time and space',\n", - " 'if we belong to each other, we belong',\n", - " 'anyplace anywhere anytime',\n", - " \"i'm going to any world you're coming from\",\n", - " 'anyplace anywhere anytime',\n", - " '(drawn together by the flame)',\n", - " '(we are just the same)',\n", - " '(embrace the wind and fall)',\n", - " '(into another time and space)',\n", - " \"i'm going to any world you're coming from\",\n", - " 'anyplace anywhere anytime',\n", - " 'oben auftauen wo noch bama stehn die seit üba hundat joah kane winde verwehn liegt der fleck auf erdn in mein heazn drin do bin i daham und do gheari hin',\n", - " \"i'm a man from the mountain high that's where i belong and i'm playing you my song i am strong is number one singing from my soul i'm the man of volksrock'n'roll, yes i'm the man of volksrock'n'roll\",\n", - " 'wo da urknoi auf die erdn knoit wiads im somma woam und im winta koid',\n", - " \"wo der wüdboch rauscht und noch blumen blühn in mein heimatlaund die oipn glühn i'm a man from the mountains high that's where i belongand i'm playing you my song i am strong is number one singing from my soul i'm the man of volksrock'n'roll yes i'm the man of volksrock'n'roll\",\n", - " 'i bin a kerniger bergbauernbua vo de madl ihre wadl griag i net gnua geh min frühwirth an heben er einschlofen kau',\n", - " 'bin a 12ender hirsch sing a liad fia di',\n", - " 'sog zum sweet little rehlein so liab hobi di jo do nur do bin i dahoam',\n", - " \"i'm a man from the mountain high that's where i belong and i'm playing you my song i am strong is number one singing from my soul i'm the man of volksrock'n'roll, yes i'm the man of volksrock'n'roll\",\n", - " 'pain in me is getting stronger and stronger',\n", - " 'but the will is in me no longer no longer',\n", - " 'it is the time when evil defeated me... ...evil defeated me',\n", - " 'my life is now quickly departing me',\n", - " 'but i feel just now, what we have done',\n", - " 'the green hunter we lied to...',\n", - " 'the green hunter we lied to',\n", - " 'schwarzes viech du bringsch üs doch dr tod...',\n", - " 'wo d seele frisst i üsere gröschte not!',\n", - " 'close around mе, many of my friends die',\n", - " 'children and womеn and (even) all the animals...',\n", - " 'may you rest in peace... may you rest in peace!',\n", - " 'we would have listened to your words',\n", - " 'then all this would not have happened...',\n", - " 'the beast in me is what i hate...',\n", - " 'the beast in me is what i hate...',\n", - " 'mir kämpfe doch dänke... dass es nümme eytergeit',\n", - " 'mir stärbe u wärde... jetze nümm uf hände treit',\n", - " 's dunkle wird grösser... ds tier i üsem körper wachst...',\n", - " 'bis e wäg het gfunge... wos dür üsi hut doch passt...',\n", - " 'schwarzi chlaue wie dr tod...',\n", - " 'ig gschpüre es stäche... töif i mire bruscht...',\n", - " 's unghüür chunnt... es het ufs töte luscht',\n", - " 'es frisst sich dür hut und fleisch...',\n", - " 'bis nimm weisch wo du jetzt schteisch...',\n", - " '...u wartet bis z härz schtiuschtoht...',\n", - " 'denn läbe duets... vo aunes tod',\n", - " 'ich schlag mir eine wunde',\n", - " 'die meinen körper ziert',\n", - " 'bestreu sie sanft mit salz',\n", - " 'damit sie schöner wird',\n", - " 'ich lass mich selbst zur ader',\n", - " 'öffne die haut ganz sacht',\n", - " 'genieß den kuss der klinge',\n", - " 'die mich zum manne macht',\n", - " 'ich häng mich auf an dünnen drähten',\n", - " 'ich hab mich selbst darum gebeten',\n", - " 'ich tu mir leid so leid',\n", - " 'ich tu mir leid so leid',\n", - " 'ich fürcht mich nicht vorm schwarzen mann',\n", - " 'weil ich mir selbst was antun kann',\n", - " 'ich muss',\n", - " 'ich muss mir wieder weh tun',\n", - " 'ich tu mir leid so leid',\n", - " 'ich muss',\n", - " 'ich muss mir wieder weh tun',\n", - " 'weil nur der schmerz mich heilt',\n", - " 'ich liebe meine narbe',\n", - " 'in ihrer ganzen pracht',\n", - " 'ein hübsches souvenir',\n", - " 'hab ich mir selbst gemacht',\n", - " 'ich beiß mir auf die zunge',\n", - " 'und leide ohne laut',\n", - " 'zieh mir das alte messer',\n", - " 'noch einmal durch die haut',\n", - " 'doch wenn ich mich im spiegel seh',\n", - " 'tut mir mein kleines herz so weh',\n", - " 'da ist noch platz auf meiner haut',\n", - " 'werd wieder tun wovor mir graut',\n", - " 'ich muss',\n", - " 'ich muss mir wieder weh tun',\n", - " 'ich tu mir leid so leid',\n", - " 'ich muss',\n", - " 'ich muss mir wieder weh tun',\n", - " 'weil nur der schmerz mir bleibt',\n", - " 'ich muss',\n", - " 'ich muss mir wieder weh tun',\n", - " 'ich tu mir selbst so leid',\n", - " 'ich muss mir wieder weh tun',\n", - " 'weil nur der schmerz mir bleibt',\n", - " 'i beat myself a wound',\n", - " 'that adorns my body',\n", - " 'i sprinkle it softly with salt',\n", - " 'to make it more beautiful',\n", - " 'i let myself to the vein',\n", - " 'and open the skin gently',\n", - " 'i enjoy the kiss of the blade',\n", - " 'that makes me into a man',\n", - " 'i hang myself on thin wires',\n", - " 'i asked myself to do it',\n", - " 'i feel sorry for myself so sorry*',\n", - " 'i feel sorry for myself so sorry',\n", - " 'i am not afraid of the bogeyman',\n", - " 'because i can do away with myself on my own',\n", - " 'i must',\n", - " 'i must hurt myself again',\n", - " 'i feel sorry for myself so sorry',\n", - " 'i must hurt myself again',\n", - " 'because only the pain heals me',\n", - " 'i love my scar',\n", - " 'in all its splendor',\n", - " 'a nice souvenir',\n", - " 'i made it myself',\n", - " 'i bite my tongue',\n", - " 'and suffer in silence',\n", - " 'i draw the old knife',\n", - " 'through my skin once more',\n", - " 'but when i see myself in the mirror',\n", - " 'my little heart hurts so badly',\n", - " 'there is still room on my skin',\n", - " 'i will do again that which i dread',\n", - " 'i must',\n", - " 'i must hurt myself again',\n", - " 'i feel sorry for myself so sorry',\n", - " 'i must hurt myself again',\n", - " \"because the pain is all that's left for me\",\n", - " 'i must',\n", - " 'i must hurt myself again',\n", - " 'i feel so sorry for myself',\n", - " 'i must',\n", - " 'i must hurt myself again',\n", - " 'i harm myself',\n", - " 'i must hurt myself again',\n", - " \"because the pain is all that's left for me\",\n", - " \"don't you come looking for us\",\n", - " \"we can't be found\",\n", - " \"don't you come looking for us\",\n", - " \"we can't be found\",\n", - " 'pray to the dark one (pray to the sun god)',\n", - " \"the saints gonna bleed (holy ghost's gonna bleed)\",\n", - " 'pray to the dark one (pray to the sun god)',\n", - " \"the saints gonna bleed (holy ghost's gonna bleed)\",\n", - " 'warte nicht auf die antwort',\n", - " 'sie kommt, sie kommt',\n", - " \"don't you come looking for us\",\n", - " \"we can't be found\",\n", - " 'wir brauchen blut für den neuen gott (blood for the new god)',\n", - " 'blut für den neuen gott (blood for the new god)',\n", - " 'm a l a c h',\n", - " 'a m a n e c',\n", - " 'l a n a n a',\n", - " 'a n a n a l',\n", - " 'blut für den neuen gott',\n", - " 'blut für den neuen gott',\n", - " 'warte nicht auf die antwort',\n", - " 'blood for the new god',\n", - " 'der rechte mob steht in bereitschaft',\n", - " 'für die schlacht um die nation',\n", - " 'aber wir sitzen noch im plenum',\n", - " 'bei der achten diskussion',\n", - " 'obwohl wir eigentlich doch einig sind',\n", - " 'reiben wir uns auf an tausenden von kleinigkeiten',\n", - " 'wenn ihr wollt, dass wir diesen weg gemeinsam gehen',\n", - " 'darf eines nicht fehlen',\n", - " 'und das ist solidarität!',\n", - " \"let's get united, let's get united\",\n", - " \"solidarity, let's get united\",\n", - " \"let's get united, don't stay divided\",\n", - " \"solidarity, let's get united\",\n", - " \"let's get united!\",\n", - " 'tu lo sai, non è un gioco',\n", - " 'la tua gente, la tua storia',\n", - " \"è ora di metter da parte l'odio, l'invidia e la falsa gloria\",\n", - " 'guarda avanti, davanti a te',\n", - " 'mille volti diversi, ma uguali a te',\n", - " \"uniti si vince, l'unione fa la forza e la tua forza è unione\",\n", - " 'solidarietà!',\n", - " \"let's get united, let's get united\",\n", - " \"solidarity, let's get united\",\n", - " \"let's get united, don't stay divided\",\n", - " \"solidarity, let's get united\",\n", - " \"let's get united!\",\n", - " 'brothers and sisters',\n", - " 'we can unite',\n", - " 'raise your voice and make it heard',\n", - " \"you won't give up the fight\",\n", - " 'stand for your principles',\n", - " 'stick to your thoughts',\n", - " 'we will show them together, together as one',\n", - " 'there is still faith left in the human race',\n", - " 'sing it loud, sing it proud!',\n", - " \"let's get united, people unite!\",\n", - " \"let's get united, solidarity!\",\n", - " \"let's get united, let's get united\",\n", - " \"solidarity, let's get united\",\n", - " \"let's get united, don't stay divided\",\n", - " \"solidarity, let's get united\",\n", - " \"let's get united, let's get united\",\n", - " \"solidarity, let's get united\",\n", - " \"let's get united, don't stay divided\",\n", - " \"solidarity, let's get\",\n", - " 'united, united, united, united',\n", - " 'united, united, united, united',\n", - " 'deine liebe gibt mir die kraft',\n", - " 'deine göttlichkeit macht mich schwach',\n", - " \"wie ein engel i'm weißen licht\",\n", - " 'nur durch dich verliere ich mich',\n", - " 'deine liebe ist wie magie',\n", - " 'voller stolz und harmonie',\n", - " 'ohne sie verdurste ich',\n", - " 'ich will verbrennen in deinem licht',\n", - " 'deine liebe ist wie magie',\n", - " 'voller stolz und harmonie',\n", - " 'ohne sie verdurste ich',\n", - " 'ich will verbrennen in deinem licht',\n", - " 'unsere liebe besiegt die zeit',\n", - " 'geschaffen füare die ewigkeit',\n", - " 'ohne dich bin ich kalt wie stein',\n", - " 'wir werden füare immer zusammen sein',\n", - " 'füare den neubeginn gabst du macht',\n", - " 'wie ein regenbogen in der nacht',\n", - " 'ihre trauer erreicht uns nicht',\n", - " 'deine liebe erleuchtet mich',\n", - " 'translation',\n", - " '-----------',\n", - " 'eternity',\n", - " 'your love encourages me',\n", - " 'your divinity makes me weak',\n", - " 'like an angel in the white light',\n", - " 'i am losing myself only through you',\n", - " 'your love is like magic',\n", - " 'full of pride and harmony',\n", - " 'without it i will be thurtsy',\n", - " 'i want to burn in your light',\n", - " 'our love will win over time',\n", - " 'made for eternity',\n", - " 'i am cold as stone without you',\n", - " 'we will be together forever',\n", - " 'you encouraged me for a new beginning',\n", - " 'like a rainbow in the night',\n", - " 'their grieve does not reach us',\n", - " 'your love is enlightening me',\n", - " 'wenn ich die liebe nicht finde, hab ich immer noch hass',\n", - " 'wenn ich an liebe nichts finde, hab ich wohl nichts verpasst',\n", - " 'wenn ich liebe nicht finde, hab ich immernoch wut',\n", - " 'wenn ich die liebe nicht finde, geht es mir trotzdem gut',\n", - " 'zuerst werd ich dir in die augen sehn und dich fragen ob es dir genauso geht',\n", - " 'denn vielleicht ist es liebe',\n", - " 'zuerst werd ich dir in die augen sehn und dich fragen ob es dir genauso geht',\n", - " 'denn ich sehe zeichen von liebe',\n", - " 'wenn ich die liebe nicht finde',\n", - " 'wenn ich die liebe nicht finde',\n", - " 'wenn ich die liebe nicht finde',\n", - " 'wenn ich die liebe nicht finde',\n", - " 'wenn ich die liebe nicht finde',\n", - " 'wenn ich die liebe nicht finde',\n", - " 'wenn ich die liebe nicht finde',\n", - " 'wenn ich die liebe nicht finde',\n", - " 'wenn ich die liebe nicht finde',\n", - " 'and if one day i wake up staring at my enemy (ask yourself what would you do)',\n", - " 'and if one day i wake up staring at my enemy (you have a plan and would you see it through)',\n", - " 'and if one day i wake up staring at my enemy (and you looked to his eyes and you see what he is after)',\n", - " 'and if one day i wake up staring at my enemy (designed for disaster wants to be your master',\n", - " 'times moving faster what you do you bastard)',\n", - " 'and if one day i wake up staring at my enemy (wake up, wake up, wake up you gotta stop dreaming, wake up its time to face the daemon)',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy (ask yourself what would you do)',\n", - " 'and if one day i wake up staring at my enemy (and you recognize this enemy this enemy is you and you recognize this enemy this enemy is you)',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'and if one day i wake up staring at my enemy',\n", - " 'der atem kalt wie eis, obwohl die erde brennt',\n", - " \"wo du auch bist, da werd' ich sein\",\n", - " 'ich lebe jetzt, ich lebe hier in dieser welt',\n", - " 'ich atme durch voller gier',\n", - " 'damn you slam you, eat me like a menue',\n", - " 'take it brake it, kick it to the ground',\n", - " \"empty hollow, it's so hard to swallow\",\n", - " \"gotta know what's your size\",\n", - " 'du bist so schmutzig, und doch so schön',\n", - " \"ich will mich in dir verlier'n\",\n", - " \"du bist so schmutzig, wie weit willst du geh'n\",\n", - " \"nur um mich zu amüsier'n\",\n", - " 'du bringst mich noch einmal um den verstand',\n", - " 'niemand hat dich je gesehen',\n", - " 'doch ich folge nur deiner spur',\n", - " 'durch fleisch und blut, denn du, du lebst in mir',\n", - " \"ammo slammo, it's gotta go blammo\",\n", - " 'lust you bust, can i ever trust you',\n", - " 'scare you dare you, anyway i want you',\n", - " 'catch you grab you now',\n", - " 'hard ass lard ass, keep your hands of my stash',\n", - " 'holy stoli gotta have a stogie',\n", - " 'master blaster, buy a jabocaster',\n", - " 'gotta eat your heart out now',\n", - " 'when you wanna breath',\n", - " 'but no air can be found',\n", - " 'whan you wanna think, when you wanna feel sane again',\n", - " 'but sanity does not abound',\n", - " 'when you wanna grieve',\n", - " 'but the thought that you might never be happy again',\n", - " 'is enough to drag you down',\n", - " 'do you ever think you could ever feel safe again',\n", - " 'with disharmony all around',\n", - " 'nachts, wenn das meer mich wiegt',\n", - " 'und bleicher sternenglanz',\n", - " 'auf seinen weiten wellen liegt',\n", - " 'dann löse ich mich ganz',\n", - " 'von allem tun und aller liebe los',\n", - " 'und stehe still und atme bloß',\n", - " 'allein, allein vom meer gewiegt',\n", - " 'das still und kalt mit tausend lichtern liegt',\n", - " 'dann muß ich meiner freunde denken',\n", - " 'und meinen blick in ihre blicke senken',\n", - " 'und frage jeden still allein:',\n", - " 'bist du noch mein?',\n", - " 'bist du noch mein?',\n", - " 'and when your home is gone how long will you wander now',\n", - " 'and when your road is lost, how long will you be gone?',\n", - " 'when you wanna breath',\n", - " 'but no air can be found',\n", - " 'when you wanna leave, when you want to get the hell out of here',\n", - " 'but leaving is not allowed',\n", - " 'when you want to live, when you want to create again',\n", - " 'but your means are no longer sound',\n", - " 'do you ever think you should ever feel sorry for them',\n", - " 'the ones you loved that dragged you down',\n", - " '\"werewolves of... armenia\"',\n", - " 'do-yo-sa-ro do-yo-re-si',\n", - " 'a-ya-wa-le so-yo-sa-ro',\n", - " 'e-re-de-sai go-re-na-ga',\n", - " 'o-yo-o-ro do-yo-fa-ro',\n", - " 'o-ro-sa-to-yo',\n", - " 'o-yo-sa-ta-re',\n", - " 'o-yo-si-a',\n", - " '\"so freunde, und ich will euch nochmal hören!',\n", - " 'eins, zwei, drei, vier!',\n", - " 'hey!',\n", - " '(hey! hey! hey! hey! hey! hey! hey!)',\n", - " '(hey! hey! hey! hey! hey! hey! hey!)',\n", - " 'halleluja when the moon is up (hu, ha)',\n", - " 'we are werewolves, all we need is blood (hu, ha)',\n", - " 'take a silver bullet for your shot (hu, ha)',\n", - " \"we're immortal, all we fear is god\",\n", - " 'oh, cantus lupus',\n", - " 'agnus totus',\n", - " 'we are the werewolves of armenia',\n", - " 'we are the army of the wild',\n", - " '\"come on!\"',\n", - " 'hey!',\n", - " '(hey! hey! hey! hey! hey! hey! hey!)',\n", - " '(hey! hey! hey! hey! hey! hey! hey!)',\n", - " 'all beware the lycantrophic russ (hu, ha)',\n", - " \"start a prayer, werewolves don't discuss (hu, ha)\",\n", - " 'warning from the bible of the beast (hu, ha)',\n", - " 'never trust a werewolf from the east',\n", - " 'oh, cantus lupus',\n", - " 'agnus totus',\n", - " 'we are the werewolves of armenia',\n", - " 'we are the army of the wild',\n", - " 'dominatum',\n", - " 'oh, lupatum',\n", - " 'we are the werewolves of armenia',\n", - " 'we are the legend of the night',\n", - " 'draco maledicte et omnis legio diabolica',\n", - " 'oh-oh-oh oh, oh-oh, oh oh, oh oh',\n", - " 'oh-oh-oh oh, oh-oh, oh oh, oh oh',\n", - " 'cantus lupus',\n", - " 'agnus totus',\n", - " 'we are the werewolves of armenia',\n", - " 'we are the army of the wild (tonight)',\n", - " 'dominatum',\n", - " 'oh, lupatum',\n", - " 'we are the werewolves of armenia',\n", - " 'we are the legend of the night (tonight)',\n", - " 'meine sehr veehrte gemeinde!',\n", - " 'wir sind heute hierher gekommen um gemeinsam die heilige heavy-metal-messe zu feiern',\n", - " 'und um gemeinsam zu sündigen',\n", - " 'seid ihr auch alle schöne sünder?',\n", - " '\"vielleicht.\"',\n", - " 'seid ihr besessen?',\n", - " 'seid ihr besessen?',\n", - " 'seid ihr besessen?',\n", - " 'seid ihr besessen?',\n", - " 'seid ihr besessen?',\n", - " '\"wir auch.\"',\n", - " '\"incense and...\"',\n", - " '(iron!)',\n", - " '\"jetzt will ich ein bisschen bewegung sehen, freunde.\"',\n", - " 'follow the dead in the dark of damnation',\n", - " 'pious in head and a demon at heart',\n", - " 'sworn to the night, an evangelist nation',\n", - " 'born under the sign of the dark',\n", - " 'gather the wild from the horde of the brave men',\n", - " 'brothers allied, fight the storm of this curse',\n", - " 'banners up high as we rise like a legion',\n", - " 'sworn all for the light we inverse',\n", - " 'combat ahead and the night calls for heroes',\n", - " 'ready for fire command',\n", - " 'revel in red, come and wake up to bring no remorse',\n", - " 'stand up as force',\n", - " 'rise over the dead, bring us ahead, incense and iron',\n", - " 'fight all of the night, banners up high to the top of the land',\n", - " 'right into the red, all you can get, incense and iron',\n", - " 'stand, follow the fight, doing the right as we come to defend',\n", - " 'hollow the damned in the art of salvation',\n", - " 'fallen and banned and the angels die first',\n", - " 'servant in life and elated in eden',\n", - " 'cursed slaves in the light from beyond',\n", - " 'bury the night in imperial hunger',\n", - " 'do or die in this fortress of fear',\n", - " 'cannot deny all the wonders are sacred',\n", - " 'burst under the weight of this world',\n", - " 'remedy sent and the sky falls in treason',\n", - " \"torn by the liar's intent\",\n", - " 'devil in head, come and break out and raise up the sword',\n", - " 'stand up as horde',\n", - " 'rise over the dead, bring us ahead, incense and iron',\n", - " 'fight all of the night, banners up high to the top of the land',\n", - " 'right into the red, all you can get, incense and iron',\n", - " 'stand, follow the fight, doing the right as we come to defend',\n", - " 'when we all stand together',\n", - " 'rise over the dead, bring us ahead, incense and iron',\n", - " 'fight all of the night, banners up high to the top of the land',\n", - " 'right into the red, all you can get, incense and iron',\n", - " 'stand, follow the fight, doing the right as we come to defend',\n", - " 'when we will last forever',\n", - " 'fight!',\n", - " '\"ludwigsburg, frage: kennt ihr unsere texte?',\n", - " 'das probieren wir jetzt mal aus.\"',\n", - " 'stand your ground against the storm and hail the crucified',\n", - " '(eins, zwei, amen and attack)',\n", - " '\"wah! das ist echt gut hier, freunde',\n", - " 'aber du guckst echt doof, wenn der song jetzt nicht kommt, ne?',\n", - " 'he, he',\n", - " 'ihr wisst, was kommt, oder?',\n", - " \"könnt ihr's mal sagen?\",\n", - " 'aber zusammen: eins, zwei, drei:\"',\n", - " '(amen and attack!)',\n", - " 'depugnare animus fatalis',\n", - " 'in perpetuum',\n", - " 'why did i laugh tonight?',\n", - " 'inmitten der kollision dieser divergenz',\n", - " 'eingekeilt im schraubstock dieser irregularität',\n", - " 'geknebelt mit den stricken des pharisäertum',\n", - " 'sehend doch gelähmt entgegen der agonie',\n", - " 'cupidus, auf immer vermaledeit seist du',\n", - " 'why did i laugh tonight? no voice will tell',\n", - " 'no god, no demon of severe responsе',\n", - " 'deigns to reply from heavеn or from hell',\n", - " 'then to my human heart i turn at once',\n", - " 'samiel, erhöre, erkenne, rekrutiere mich',\n", - " 'son sàcre délecte avec entrain mon esprit',\n", - " \"cependant j'aimerais bien m'offrir à la mort\",\n", - " 'elle déchire nos drapeaux bigarrés',\n", - " 'vivescere, consurgere, recutio, acquiesco',\n", - " 'luzifer, heim in deinen kathartischen glanz, geleite mich',\n", - " 'inmitten der disharmonischen orchestration dieser konnexion',\n", - " 'der unerkannte rumor der vermeintlichen geruhsamkeit',\n", - " 'zentriert und lichtlos',\n", - " 'in dieser latenten schwelenden aversion',\n", - " 'erwache ich in verzehrender indignation dieser unlauterkeit',\n", - " 'pourquoi ai-je ri ce soir? connaissance',\n", - " 'heart, thou and i are here, sand and alone',\n", - " 'say, why did i laugh? o mortal pain',\n", - " 'o darkness! darkness! forever must i moan',\n", - " 'to question heaven and hell and heart in vain?',\n", - " 'chant, gloire et beauté empillent le trône',\n", - " 'pour la mort du roi, la plus grande récompense',\n", - " \"why did i laugh tonight? i know this being's lease\",\n", - " 'belial, an deiner seite walle ich',\n", - " 'zur destruktion dieser geisel, führe mich',\n", - " 'warum habe ich heute abend gelacht?',\n", - " 'weil ich erkannte, weil ich endlich erkannte',\n", - " 'ego finio obsidium',\n", - " 'und so wurde ich zum teufel, auf ewig, zu deinem teufel',\n", - " 'et si je suis devenu le diable, pour toujours, ton diable',\n", - " 'and so i became the devil, forever, to your devil',\n", - " 'mors ultima linea rerum est',\n", - " 'hell is real',\n", - " 'i feel its presence',\n", - " 'staring with empty eyes',\n", - " 'into an empty sky',\n", - " 'nothing is here to feel',\n", - " 'i drift like a falling leaf',\n", - " 'the wind takes me into the unknown',\n", - " 'where is all the hate',\n", - " 'all the pain',\n", - " 'staring with empty eyes',\n", - " 'into an empty sky',\n", - " 'nothing is here to feel',\n", - " 'i drift like a falling leaf',\n", - " 'the wind takes me into the unknown',\n", - " 'where is all the hate',\n", - " 'just pure devastation to darkness',\n", - " 'haß - absolut und rein',\n", - " 'existenz in dieser masse ist unmöglich',\n", - " 'in ihren reihen zu stehen',\n", - " 'heißt unter feinden zu kämpfen',\n", - " 'ich bin kein mensch',\n", - " 'denn menschen werden sie genannt',\n", - " 'sie bluten',\n", - " 'ich werde stärker',\n", - " 'ihre angst',\n", - " 'mein stolz',\n", - " 'gott ist tot',\n", - " 'nun schlachten wir auch sein gefolge',\n", - " 'the limit is reached - untamed devastation',\n", - " 'moving down every breathing entity',\n", - " 'our wrath - our weapons are too real to ignore',\n", - " 'mercy - a forgotten word',\n", - " 'aimless, blind',\n", - " \"just storming 'gainst everything\",\n", - " 'the gods you banished in the ancient days',\n", - " 'have still been worshipped by the ones you fear',\n", - " 'they gathered power which you now lose',\n", - " 'as your god falls by your side',\n", - " 'the two ravens are there to pick your eyes',\n", - " 'as we cry out the names of the pagan gods',\n", - " 'du nur du',\n", - " \"und nichts and'res liegt mit so nah am herz\",\n", - " \"und ich kenn' keinen and'ren zustand als für dich da zu sein (yeah)\",\n", - " 'du bist einfach unersetzlich',\n", - " 'du bist wie ein teil von mir (yeah)',\n", - " 'du bringst meine welt in atem',\n", - " 'du machst dieses leben wert',\n", - " 'für dich schlägt mein herz',\n", - " 'für dich schlägt mein herz',\n", - " 'für mich bist du das schönste monopol nein dir macht keiner konkurrenz',\n", - " 'du bist ein und alles',\n", - " 'außergewöhnlich',\n", - " 'du machst jeden faden rot',\n", - " 'du machst so sinn',\n", - " 'du bist einfach unersetzlich',\n", - " 'du bist wie ein teil von mir (yeah)',\n", - " 'und du fliegst mich hoch und du hälst mich so am leben',\n", - " 'du bringst jeden tag ans meer',\n", - " 'für dich schlägt mein herz',\n", - " 'für dich schlägt mein herz',\n", - " 'und du fliegst mich hoch und du hälst mich so am leben',\n", - " 'du machst alles halb so schwer',\n", - " 'für dich schlägt mein herz',\n", - " 'für dich schlägt mein herz',\n", - " 'my heart beats for you',\n", - " 'you and nothing else but you are so close to my heart',\n", - " 'and i don’t know any other way',\n", - " 'than to be there for you, yeah',\n", - " 'you are simply irreplaceable',\n", - " 'you are like a part of me, yeah',\n", - " 'you bring a breath of fresh air into my world',\n", - " 'you make this life worth living',\n", - " 'my heart beats for you',\n", - " 'my heart beats for you',\n", - " 'for me, you’re the only one with patent rights',\n", - " 'no, you don’t have any competition',\n", - " 'you’re everything extraordinary',\n", - " 'you make every theme recur',\n", - " 'you make so much sense, yeah',\n", - " 'you are simply irreplaceable',\n", - " 'you are a part of me, yeah',\n", - " 'and you make me soar',\n", - " 'oh and you keep me so alive',\n", - " 'you take every day to the seashore',\n", - " 'my heart beats for you',\n", - " 'my heart beats for you',\n", - " 'and you make me soar',\n", - " 'oh and you keep me so alive',\n", - " 'you make everything twice as easy',\n", - " 'my heart beats for you',\n", - " 'my heart beats for you',\n", - " 'dance, dance, dance and move your feet',\n", - " 'dance, dance, dance until they bleed (x2)',\n", - " 'dance (x3)',\n", - " 'bleed (x3)',\n", - " 'dance (x3)',\n", - " 'bleed (x3)',\n", - " 'bleed on the floor',\n", - " 'elektro partys machen mich kaputt im kopf im kopf',\n", - " 'elektro partys machen mich kaputt im fuß im fuß',\n", - " 'dance (x3)',\n", - " 'dance, dance, dance and move your feet',\n", - " 'dance, dance, dance until they bleed (x2)',\n", - " 'dance (x3)',\n", - " 'bleed (x3)',\n", - " 'dance (x3)',\n", - " 'bleed (x3)',\n", - " 'dresden über alles',\n", - " 'und alle machen mit',\n", - " 'geschichtsrevisionisten',\n", - " 'die plattform liefert flick',\n", - " 'von nichts gewuszt',\n", - " 'ne schlechte tarnung',\n", - " 'ob du dir das selber glaubst?',\n", - " 'hier kommt die warnung!',\n", - " 'opfer fein',\n", - " 'opfer opfer opfer sein',\n", - " 'opfer wollen alle',\n", - " 'aber könnt nur ihr scheiß deutsche sein',\n", - " 'denk nich dran',\n", - " 'es gibt nichts zu versöhnen',\n", - " 'für euer scheiß geheule',\n", - " 'werden wir euch stets verhöhnen',\n", - " 'von nichts gewuszt, ne schlechte tarnung (3x)',\n", - " 'ob du dir das selber glaubst?',\n", - " 'hier kommt die warnung!',\n", - " 'erdverwachsen, stark im biß',\n", - " 'nur einem herrn verpflichtet ist;',\n", - " 'treu und redlich und loyal',\n", - " 'auch wenn der weg katastrophal',\n", - " 'wüst das land, weiß der sand',\n", - " 'der starre hund bleibt treu dabei',\n", - " 'sandsturm ihre augen reibt-',\n", - " 'das tier an seiner seite bleibt',\n", - " \"ahua- dringt's durch die nacht\",\n", - " 'wenn der hund mit den wölfen',\n", - " 'in weiter ferne spricht',\n", - " 'ahua- für einen freund, so wie ihn',\n", - " 'zählen die eignen wunden wohl nicht',\n", - " 'als wolf geheuert, zum hund dressiert',\n", - " 'er japsend seinen ritt beglitt',\n", - " 'die strecken würden immer wirrer',\n", - " 'ob hitze plage, kälte klirre',\n", - " 'und der hunger bohrt sich drein',\n", - " 'doch klebt der treue hund am bein',\n", - " 'gibt brav dem herrn, was beute ist',\n", - " 'nimmt dankend, was der herr vergißt',\n", - " \"ahua- dringt's durch die nacht\",\n", - " 'wenn der hund mit den wölfen in weiter ferne spricht',\n", - " 'ahua- für einen freund, so wie ihn',\n", - " 'zählen die eigenen wunden wohl nicht',\n", - " 'ein wüstenritt nimmt seinen lauf',\n", - " 'und wer hofft, der gibt nicht auf',\n", - " 'das geht nicht nur dem menschen so',\n", - " 'auch der hund ist hoffnungsfroh',\n", - " 'nun kommt, was schließlich kommen muß:',\n", - " 'des wirren reiters überdruß',\n", - " 'wittert ganz allein sein glück',\n", - " 'läßt den einzigen freund zurück',\n", - " 'heulend nach dem meister rief',\n", - " 'und der kummer saß so tief',\n", - " 'man fand den hund halb sandbedeckt',\n", - " 'die viere von dem leib gestreckt',\n", - " 'english translations:',\n", - " 'deeply rooted in the earth, bite of steel',\n", - " 'devoted only to one master',\n", - " 'faithful, decent and loyal',\n", - " 'no matter how stony the road',\n", - " 'wasteland, white sand',\n", - " 'sturdily the dog stands by his side',\n", - " 'the sandstorm blinding their eyes',\n", - " 'the hound stands by his side',\n", - " 'ahua - it howls through the night',\n", - " 'when the hound talks',\n", - " 'to the faraway wolves',\n", - " 'ahua - no mound can be too painful',\n", - " 'for his masters hound',\n", - " 'signed on as a wolf, trained to be a dog',\n", - " 'gasping along, no matter frost and heat',\n", - " 'and the hunger is biting, stays on his masters foot',\n", - " 'obediently stands over the prey',\n", - " 'obligingly takes, what the mater leaves',\n", - " 'ahua - it howls through the night',\n", - " 'when the hound talks',\n", - " 'to the faraway wolves',\n", - " 'ahua - no mound can be too painful',\n", - " 'for his masters hound',\n", - " 'a desert ride takes its course, and hope dies last',\n", - " 'not only the man, also the dog is hopeful',\n", - " 'but finally and in the end, the mean rider fed up',\n", - " 'smells like luck without his only true friend',\n", - " 'and leaves him back',\n", - " 'howls out for his master, and the pain was so enormous',\n", - " 'then found the dog, half buried in the desert sand',\n", - " 'ahua - it howls through the night',\n", - " 'when the hound talks',\n", - " 'to the faraway wolves',\n", - " 'ahua - no mound can be too painful',\n", - " 'for his masters hound',\n", - " 'a warrior whose heart was crying...',\n", - " 'gathered all his courage and wanted to make the whole story...',\n", - " '(the whole thing) end... the whole thing end',\n", - " 'he waited for the beast in the hidden room',\n", - " 'although he must pay with his death...',\n", - " 'pay with his death... pay with his death...',\n", - " 'ou we ig muss s zytleche sägne... ou we s hie nie me wird rägne...',\n", - " 'muess ig jetzt es ändi mache... ou we ig nie wider lache!!',\n", - " 'he waits for him, alone in the dark, waiting for his chance...',\n", - " 'takes the beast and holds it tight... holds it tight',\n", - " 'on the wall there is this pillar... with a large hole...',\n", - " 'where he locks the beast and puts a plug... plug in it',\n", - " 'verschliesses ganz fescht... das isch dr letscht...',\n", - " 'erscht u letscht versuech wo ig ha...',\n", - " 'dunkuheit isch bezwunge... mir hei üs überwunde...',\n", - " 'es opfer z si für die kommendi wäut... helde z wärde, ou ohni gäud!',\n", - " 'dunkuheit isch bezwunge... mir hei üs überwunde...',\n", - " 'es opfer z si für die kommendi wäut... helde z wärde, ou ohni gäud!',\n", - " 'lost in the dark',\n", - " 'helldogs bark',\n", - " 'drawn by lucifer',\n", - " 'lost in the dark',\n", - " 'helldogs bark',\n", - " \"you got a bad start, my dogs don't bark\",\n", - " 'lost in the dark',\n", - " 'helldogs bark',\n", - " 'drawn by lucifer',\n", - " 'lost in the dark',\n", - " 'helldogs bark',\n", - " 'stare them in the eyes and try to survive',\n", - " 'he fucks up your brain, by using fear',\n", - " 'end the reign',\n", - " 'cut the threat',\n", - " 'fearless in the face of the death',\n", - " 'end the reign',\n", - " 'cut the threat',\n", - " 'fearless in the face of the death',\n", - " 'cut the threat',\n", - " 'the devil will drag you to hell',\n", - " 'if you choose the easy way',\n", - " 'they follow and they always will',\n", - " 'they are',\n", - " 'lost in the dark',\n", - " 'helldogs bark',\n", - " 'drawn by lucifer',\n", - " 'lost in the dark',\n", - " 'helldogs bark',\n", - " \"you got a bad start, my dogs don't bark\",\n", - " 'lost in the dark',\n", - " 'helldogs bark',\n", - " 'drawn by lucifer',\n", - " 'lost in the dark',\n", - " 'helldogs bark',\n", - " 'stare them in the eyes and try to survive',\n", - " 'der teufel zeigt uns den weg, doch wir müssen einen anderen gehen',\n", - " 'auch wenn er zieht, dürfen wir nicht folgen, doch die meisten können nur befolgen',\n", - " 'der teufel zeigt uns den weg, nur ein bruchteil bleibt stehen',\n", - " 'keine kraf sich dagegen zu stellen, seine hunde bellen',\n", - " 'und sie lassen sich gehen',\n", - " 'bearers of death',\n", - " 'lost in the dark',\n", - " 'lost in the dark',\n", - " 'sometimes i feel so deep',\n", - " 'die nacht ruft nach mir',\n", - " 'sometimes i feel so weak',\n", - " \"ich flüster' zu dir\",\n", - " 'night by night',\n", - " 'nacht für nacht',\n", - " 'close and far',\n", - " 'und doch so nah',\n", - " 'sometimes i feel so sad',\n", - " 'ich atme die nacht',\n", - " 'sometimes i feel so black',\n", - " 'doch mein körper erwacht',\n", - " 'when the night is calling me',\n", - " 'ich sehe dein gesicht',\n", - " 'when the night is calling me',\n", - " 'im dunklen schattenlicht',\n", - " 'atmosphere',\n", - " 'der weg zu dir',\n", - " 'take me there',\n", - " 'ich will mehr',\n", - " 'sometimes i feel so close',\n", - " 'ich umarme dich',\n", - " 'sometimes i feel so mad',\n", - " 'und ich werde verrückt',\n", - " 'when the night is calling me',\n", - " 'ich sehe dein gesicht',\n", - " 'when the night is calling me',\n", - " 'im dunklen schattenlicht',\n", - " 'when the night is calling me',\n", - " 'ich sehe dein gesicht',\n", - " 'when the night is calling me',\n", - " 'wie es zerbricht',\n", - " 'when the night is calling me',\n", - " 'ich sehe dein gesicht',\n", - " 'when the night is calling me',\n", - " 'im dunklen schattenlicht',\n", - " 'when the night is calling me',\n", - " 'seh’ ich dein gesicht',\n", - " 'when the night is calling me',\n", - " 'wie es zerbricht',\n", - " 'i am the one',\n", - " 'i am the chosen one',\n", - " 'i am tho one',\n", - " 'the herald (to declare the final message)',\n", - " 'i am the one',\n", - " 'i am the chosen one',\n", - " 'seht mich an und preiste mich',\n", - " 'seht mich an und fürchtet mich',\n", - " 'seht mich an (und) empfanget mich',\n", - " 'sterbet nun und liebet mich',\n", - " 'nur mich',\n", - " 'pestis - berührt von gottes hand',\n", - " 'interitus -welch ehre wird euch zuteil',\n", - " 'exitus - wohl dem, dem dies gebührt',\n", - " 'is еst cruel, mais is vous aime',\n", - " ...]}}},\n", - " 'en': {'sentence': {'country': {'meta': {'train_data': [\"i had ev'rything, lost it all\",\n", - " 'i built towers of gold, watched em fall',\n", - " 'i tried my best',\n", - " \"but i guess my best just wasn't good enough\",\n", - " 'i made promises. broke em',\n", - " \"i've laid loved ones lives wide open\",\n", - " \"and i've got a broken heart but i've come this far\",\n", - " \"and i ain't givin up\",\n", - " 'i pray for a stronger back',\n", - " 'i pray for a bigger heart',\n", - " 'i pray for the will to keep on walkin when the way is dark',\n", - " 'i follow that windin road just tryin to stay on track',\n", - " \"i don't pray for a lighter load i pray for a stronger back\",\n", - " \"i've seen losers get a second chance\",\n", - " \"i've seen miracles from happenstance\",\n", - " \"i've seen long shots come from way behind\",\n", - " 'to win the race',\n", - " \"and i've dreams blow up in a cloud of smoke\",\n", - " \"it's a world of pain, it's a world of hope\",\n", - " \"and it's dark right now but i know somehow\",\n", - " 'some day the sun will find some way to shine down on my face',\n", - " 'i pray for a stronger back',\n", - " 'i pray for a bigger heart',\n", - " 'i pray for the will to keep on walkin when the way is dark',\n", - " 'i follow that windin road just tryin to stay on track',\n", - " \"i don't pray for a lighter load i pray for a stronger back\",\n", - " 'i follow that windin road just tryin to stay on track',\n", - " \"i don't pray for a lighter load i pray for a stronger back\",\n", - " 'jolene, jolene, jolene, jolene',\n", - " \"i'm begging of you please don’t take my man\",\n", - " 'jolene, jolene, jolene, jolene',\n", - " \"please don't take him just because you can\",\n", - " 'your beauty is beyond compare',\n", - " 'flaming locks of auburn hair',\n", - " 'ivory skin and eyes of emerald green',\n", - " 'your smile is like a breath of spring',\n", - " 'your voice is soft like summer rain',\n", - " 'i cannot compete with you, jolene',\n", - " 'oh but he talks about you in his sleep',\n", - " \"there's nothing i can do to keep\",\n", - " 'from crying when he calls your name, jolene',\n", - " 'oh and i can easily understand',\n", - " 'how you could easily take my man',\n", - " 'but you don’t know what he means to me, jolene',\n", - " 'jolene, jolene, jolene, jolene',\n", - " \"oh i'm begging of you please don't take my man\",\n", - " 'jolene, jolene, jolene, jolene',\n", - " \"please don't take him just because you can\",\n", - " 'you could have your choice of men',\n", - " 'but i could never love again',\n", - " \"'cause he's the only one for me, jolene\",\n", - " 'i had to have this talk with you',\n", - " 'my happiness depends on you',\n", - " \"and whatever you decide you'll do, jolene\",\n", - " 'jolene, jolene, jolene, jolene',\n", - " \"i'm begging of you please don’t take my man\",\n", - " 'jolene, jolene, jolene, jolene',\n", - " 'please don’t take him just because you can',\n", - " 'jolene, jolene',\n", - " \"i'm finally on the up and up, a little 401k\",\n", - " 'traded in my trailer park for a neighborhood with a gate',\n", - " \"queen finally got her castle‚ last one on the right‚ you can't miss it\",\n", - " 'upgraded from the barbed wire‚ now i got a nice picket',\n", - " 'i can play high class all day but some things never change',\n", - " \"i can't hide it in a closet, i can't stuff it in a trunk\",\n", - " \"i always know there's treasure buried somewhere in the junk\",\n", - " 'i can keep it clean on sundays and keep the lights and water on',\n", - " \"but i can't keep my white trash off the lawn\",\n", - " 'carnation from a flowerbed in a whiskey bottle base',\n", - " 'cadillac on a cinder block, duct tape on every other thing',\n", - " 'real ferns in the sunroom‚ bug zapper by the screen',\n", - " \"dog hair on the restoration hardware, who says you can't have nice things?\",\n", - " \"i can't hide it in a closet, i can't stuff it in a trunk\",\n", - " \"i always know there's treasure buried somewhere in the junk\",\n", - " \"i can keep my roots from showin'‚ but i'm still dishwater blonde\",\n", - " \"but i can't keep my white trash off the lawn\",\n", - " 'new money, old habits',\n", - " 'loveseat in the plastic',\n", - " 'steak fingers in a basket',\n", - " 'new money, old habits',\n", - " \"i can't hide it in a closet, i can't stuff it in a trunk\",\n", - " \"i always know there's treasure buried somewhere in the junk\",\n", - " 'i can keep it clean on sundays and keep the lights and water on',\n", - " \"but i can't keep my white trash off the lawn\",\n", - " \"got more rooms than the joneses, y'all, and i'm still addin' on\",\n", - " \"but i can't keep my white trash off the lawn\",\n", - " \"i'm finally on the up and up\",\n", - " \"i'm finally on the up and up, up and up\",\n", - " 'up and up, up and up, up and up',\n", - " 'up and up, up and up, up and up',\n", - " 'up and up, up and up, up and up',\n", - " 'up and up, up and up, up and up',\n", - " 'up and up, up and up, up and up',\n", - " 'up and up, up and up, up and up',\n", - " 'up and up, up and up, up and up',\n", - " 'up and up, up and up, up and up',\n", - " 'up and up, up and up, up and up',\n", - " 'count it off',\n", - " \"well, i was truckin' down the freeway just the other night\",\n", - " 'flashed on my dashboard was my oil light damnit',\n", - " 'i pulled my truck off the freeway',\n", - " 'and all the bars are closed',\n", - " 'so i pulled into a gas station smelling like a texas rose',\n", - " \"an' that's when i seen him, sittin' in some kinda booth like a fotomat\",\n", - " \"sittin' there like a god damn bagpile of telephone wire\",\n", - " 'i said i need 4 quarts of oil for that, truck over there',\n", - " 'he just sat there for a while, and stared',\n", - " 'yip!',\n", - " 'so i says, \"buddy!, i need some oil for my truck that ain\\'t no lie\" and he says something like, \" no go diggy di\"',\n", - " 'i said, \"what?!, what country are you from?\", he says somethin\\' like, \"abu dhabi-dum\"',\n", - " 'i said, \"ain\\'t no country i know!\", i said, \"i\\'m from texas now gimme some oil,\"',\n", - " 'he said somethin\\' like, \"no oil at midnight\", i said some of my indian friends speak better english than that',\n", - " 'yip!',\n", - " 'and he says, \"no go diggy di\" again',\n", - " 'i said, \"don\\'t go giving me none of that god damn no go diggy di shit, forget the oil, i need some gas',\n", - " \"so i pumped 5 bucks in my truck, thinkin' 'bout kickin' his ass in\",\n", - " 'ye',\n", - " 'i walked up to the window i slipped a 5 , he said, \"6 dollars and some god damn arab-jive\"',\n", - " 'that\\'s when i told him, \"mr. egyptian, you\\'re a god damn liar\"....',\n", - " 'yip! yip!',\n", - " '*la-la section',\n", - " \"don't you give me none of that no go diggy di shit\",\n", - " 'speak english god damnit!',\n", - " 'no go diggy di...',\n", - " \"i don't care, i don't care\",\n", - " \"that's jimbo\",\n", - " \"(ain't no country i know)\",\n", - " 'shut up..., shut up jimbo',\n", - " 'huh huh huh huh huh',\n", - " \"don't turn mailboxes into baseballs\",\n", - " \"don't get busted selling at seventeen\",\n", - " 'most thoughts deserve about two or three more',\n", - " 'motor oil is motor oil',\n", - " 'just keep the engine clean',\n", - " 'keep your eyes on the prize',\n", - " 'everything will be fine',\n", - " 'long as you stay in school, stay off the hard stuff',\n", - " 'and keep between the lines',\n", - " \"don't burn two lanterns at the same time\",\n", - " 'no ship out on the water will pay your rent',\n", - " \"'cause you live and you learn\",\n", - " 'sometimes you get burned',\n", - " 'when your get out done got up',\n", - " 'walked out the door and went',\n", - " 'do as i say',\n", - " \"don't do as i've done\",\n", - " \"it don't have to be like father, like son\",\n", - " \"don't let 'em try to upsell you\",\n", - " \"there's a reason they make chocolate and vanilla too\",\n", - " \"if there's any doubt, then there is no doubt\",\n", - " \"the gut don't never lie\",\n", - " 'and the only word you\\'ll ever need to know in life is \"why\"',\n", - " 'keep your head out of the clouds',\n", - " 'and remember to be kind',\n", - " 'and just stay in school, stay off the drugs',\n", - " 'and keep between the lines',\n", - " \"(don't sweat the small stuff)\",\n", - " \"(don't sweat the small stuff)\",\n", - " \"(don't sweat the small stuff)\",\n", - " \"(don't sweat the small stuff)\",\n", - " \"(don't sweat the small stuff)\",\n", - " \"(don't sweat the small stuff)\",\n", - " \"you're not my same sweet baby lady\",\n", - " \"you're not the same baby i knew\",\n", - " \"the world is all wrong girl and i'm not the man\",\n", - " 'who can change it for you',\n", - " \"i'll just be packing my bags and silently go\",\n", - " \"what's the good in pretending\",\n", - " 'and watching it drag on and on',\n", - " \"the good is in ending it while there's the time left\",\n", - " 'to say that your mind is your own',\n", - " \"you're not my same sweet baby lady\",\n", - " \"now the bright lights faded they've taken the baby from you\",\n", - " \"girl i'm not saying my bubbles so great\",\n", - " \"that hard times won't break that too\",\n", - " \"i'll just be packing my bags and silently go\",\n", - " \"what's the good in pretending\",\n", - " 'and watching it drag on and on',\n", - " \"the good is in ending it while there's the time left\",\n", - " 'to say that your mind is your own',\n", - " \"you're not my same sweet baby lady\",\n", - " \"girl i'm not saying i haven't done some changing too\",\n", - " \"so please stop your cryin' you know i'm not tryin'\",\n", - " 'to lay all the blame off on you',\n", - " \"i'll just be packing my bags and silently go\",\n", - " \"the world is all wrong girl and i'm not the man\",\n", - " 'who can change it for you',\n", - " \"let's sit down and talk it over\",\n", - " 'take my shoulder tonight',\n", - " 'look at me and tell me what is',\n", - " 'on your mind this time',\n", - " 'gonna stay here til you got a smile on your face',\n", - " \"i'm here no matter what\",\n", - " 'everything else can wait',\n", - " \"let's kiss and make up now\",\n", - " \"let's kiss and make love\",\n", - " \"don't wait another minute, let's go with it\",\n", - " \"kiss me and let's make up now\",\n", - " \"let's be honest, let's be open\",\n", - " \"we're not broken, not yet\",\n", - " \"it's not easy tryin' to please me\",\n", - " \"i'm not perfect, i know that\",\n", - " 'gonna stay here til you got a smile on your face',\n", - " \"i'm here no matter what\",\n", - " 'everything else can wait',\n", - " \"let's kiss and make up now\",\n", - " \"let's kiss and make love\",\n", - " \"don't wait another minute, let's go with it\",\n", - " \"kiss me and let's make up now\",\n", - " \"talk to me, it's alright, i'm open\",\n", - " \"whoa, don't try, we're not broken, not broken\",\n", - " 'i know that we can do this',\n", - " 'come, baby, do it right now (make up now)',\n", - " '(come, baby, do it right now)',\n", - " '(make up now)',\n", - " \"let's kiss and make up now\",\n", - " \"let's kiss and make love\",\n", - " \"we'll do it like we meant it\",\n", - " \"let's go with it\",\n", - " \"kiss me and let's make up now\",\n", - " \"kiss me and let's make up now\",\n", - " \"kiss me and let's make up now\",\n", - " 'o lord, my god, when i in awesome wonder',\n", - " 'consider all the worlds thy hands have made',\n", - " 'i see the stars, i hear the rolling thunder',\n", - " 'thy power throughout the universe displayed',\n", - " 'then sings my soul, my savior god, to thee',\n", - " 'how great thou art, how great thou art',\n", - " 'then sings my soul, my savior god, to thee',\n", - " 'how great thou art, how great thou art',\n", - " 'when christ shall come with shouts of acclamation',\n", - " 'and take me home, what joy shall fill my heart?',\n", - " 'then i shall bow in humble adoration',\n", - " 'and then proclaim, \"my god, how great thou art\"',\n", - " 'then sings my soul, my savior god, to thee',\n", - " 'how great thou art, how great thou art',\n", - " 'then sings my soul, my savior god, to thee',\n", - " 'how great thou art, how great thou art',\n", - " 'then sings my soul, my savior god, to thee',\n", - " 'how great thou art, how great thou art',\n", - " 'then sings my soul, my savior god, to thee',\n", - " 'how great thou art, how great thou art',\n", - " 'how great thou art, how great thou art',\n", - " \"when i fall in love it will be forever or i'll never fall in love\",\n", - " \"in a restless world like this is love is ended before it's begun\",\n", - " 'and too many moonlight kisses seem to cool in the warmth of the sun',\n", - " \"when i give my heart it will be completely or i'll never give my heart\",\n", - " 'and the moment i can feel that you feel that way too is when i fall in love with you',\n", - " \"when i give my heart it will be completely or i'll never i'll never give my heart\",\n", - " 'and the moment i can feel that you feel that way too is when i fall in love with you',\n", - " 'between the perfect world and the bottom line',\n", - " 'keeping love alive in these troubled times',\n", - " \"well, it's a miracle in itself\",\n", - " \"and we know too well what that's about\",\n", - " 'still we made it through, only god knows how',\n", - " \"we must've had a little help\",\n", - " \"it must've been wild angels, wild angels\",\n", - " 'watching over you and me, yeah',\n", - " 'wild angels, wild angels',\n", - " 'baby, what else could it be?',\n", - " \"well, it must've been hard, it must've been tough\",\n", - " 'keeping up with crazy fools like us',\n", - " \"'cause it's so easy to fall apart\",\n", - " \"and we still break each other's hearts sometimes\",\n", - " 'spend some nights on the jagged side',\n", - " \"somehow we wake up in each other's arms\",\n", - " \"oh, it must've been wild angels, wild angels\",\n", - " 'watching over you and me, yeah',\n", - " 'wild angels, wild angels',\n", - " 'baby, what else could it be?',\n", - " 'there are some nights',\n", - " 'i watch you while you dream',\n", - " 'i swear i hear the sound of beating wings, yeah',\n", - " \"oh, it must've been wild angels, wild angels\",\n", - " 'watching over you and me, yeah',\n", - " 'wild angels, wild, wild angels',\n", - " 'baby, what else could it be?',\n", - " 'wild angels',\n", - " \"and i can't sleep in the waiting room\",\n", - " \"and i can't sleep in the waiting room\",\n", - " \"and i can't sleep in the waiting room\",\n", - " \"and i can't sleep in the waiting room\",\n", - " \"and i can't find the keys\",\n", - " 'that open both doors',\n", - " 'to let me on the stairs',\n", - " 'and onto the roof',\n", - " \"where there's actually air\",\n", - " 'and room to swing my fists',\n", - " 'and my ears stop ringing',\n", - " 'i can hear everything',\n", - " \"but i can't stand on only one leg\",\n", - " \"but i can't stand on only one leg\",\n", - " \"but i can't stand on only one leg\",\n", - " \"but i can't stand on only one leg\",\n", - " \"they were searchin' for stars when we came along\",\n", - " \"it was rock 'n roll in a country song\",\n", - " 'there were five of us thinking that we can',\n", - " 'this is the life and times of a traveling band',\n", - " 'hollywood had a funny face',\n", - " 'so we took our chances and we got away',\n", - " 'back to nashville, tennessee',\n", - " 'hobie, bobby, jim and joe and me',\n", - " 'no the west coast life',\n", - " \"didn't fit just right\",\n", - " 'you could see us on the television',\n", - " \"it ain't easy bein' all that grand\",\n", - " 'so we put on our blue jeans and our t-shirts',\n", - " 'and made off with our guitars in the van',\n", - " 'and took our place',\n", - " 'out on the stage',\n", - " \"in a travelin' band\",\n", - " 'we heard our song on the radio',\n", - " 'along with the \"gambler\" we hit the road',\n", - " 'all across the usa',\n", - " 'we were gypsies on parade',\n", - " 'we were all about three chords and the truth',\n", - " 'we wrote our songs on the bus, in the booth',\n", - " 'some go fast like \"some girls do\"',\n", - " 'some go slow like \"used to blue\"',\n", - " 'when the lights went down',\n", - " 'we could hear the crowd',\n", - " 'we headlined our first show in salt lake city',\n", - " 'we still make a stop there now and then',\n", - " \"they've got all our faces on their t-shirts\",\n", - " 'you should have seen our hairdos way back when',\n", - " 'we took our place',\n", - " 'on the stage',\n", - " \"in a travelin' band\",\n", - " \"fame and fortune don't mean much\",\n", - " 'without someone to hold and someone to touch',\n", - " 'some wives left, some stayed on',\n", - " 'so who do you love when the beat goes on',\n", - " \"now we're 27 years and a million miles\",\n", - " 'shifting gears and changing styles',\n", - " 'we said goodbye to old dc',\n", - " \"now it's hobie, shayne and jim, the joes and me\",\n", - " 'and when \"the race is on\"',\n", - " 'they all sing along',\n", - " \"now i'd like to take this time to thank you\",\n", - " \"though it's been a long and winding road\",\n", - " 'i count my blessings when i see those faces',\n", - " 'and i look down at this guitar in my hand',\n", - " 'and i take my place',\n", - " 'on the stage',\n", - " \"in a travelin' band\",\n", - " \"i'm in a travelin' band\",\n", - " \"there's a sermon in that bible for the wicked\",\n", - " 'i reckon we need',\n", - " 'but this night has brown as black as that leather',\n", - " \"and it's too dark to read\",\n", - " 'and the promise that i made to my woman',\n", - " \"are the only words that i've ever kept true\",\n", - " \"i said: i'll bury you at night, and i'll hide you out of sight\",\n", - " 'and a garden of stars will bloom for you',\n", - " 'in the gray and wintry hills of the old dominion',\n", - " 'where little grows',\n", - " \"there's a place i can recall to my vision\",\n", - " 'where no one goes',\n", - " 'and i promised to plant for you a garden',\n", - " \"but you promised you'd always be true\",\n", - " \"and so i'll bury you at night, while the moon is shining bright\",\n", - " 'and a garden of stars will bloom for you',\n", - " 'i called up hell and checked on a room',\n", - " \"spoke to the devil, said i'd be there real soon\",\n", - " \"'cause i'm slowly dyin' over someone i miss\",\n", - " \"so i called up hell because it's better than this\",\n", - " 'you see, i live in a bottle down deep in the hole',\n", - " \"but she's got my heart, lord i don't need my soul\",\n", - " 'and i burn with a fever from our very last kiss',\n", - " \"so i called up hell because it's better than this\",\n", - " \"it's better than drinkin' 'til i fade to black\",\n", - " \"and wakin' up screamin' 'cause she ain't comin' back\",\n", - " \"i can't get no relief because the pain just gets bigger\",\n", - " \"and if i had any guts i'd just pull the trigger, oh yeah, ooh\",\n", - " \"oh, it's better than drinkin' 'til i fade to black\",\n", - " \"and wakin' up screamin' 'cause she ain't comin' back\",\n", - " \"i can't get no relief because the pain just gets bigger\",\n", - " \"and if i had any guts i'd just pull the trigger\",\n", - " 'so, i called up hell and checked on a room',\n", - " \"spoke to the devil, said i'd be there real soon\",\n", - " \"some of these days you're gonna miss me honey\",\n", - " \"some of these days you're gonna be so lonely\",\n", - " \"you'll miss my hugging miss my kissing too\",\n", - " \"you'll be so sorry when i'm away from you\",\n", - " \"now you're gonna be lonely just for me only\",\n", - " \"'cause you know honey that you had your way\",\n", - " \"and when you leave me you know it's gonna grieve me\",\n", - " \"you're gonna miss your little honey some of these days\",\n", - " \"(now you'll be lonely) yes you'll be lonely\",\n", - " '(just for me only) just for me only',\n", - " \"('cause you know honey) yes you know honey\",\n", - " '(you had your way) yes you had your way',\n", - " \"'cause when you leave me oh you know it's gonna grieve me\",\n", - " \"you're gonna miss your little honey some of these days\",\n", - " \"(you're gonna miss) you're gonna miss your little honey\",\n", - " 'some of these days (some of these days)',\n", - " \"i'll have a blue blue christmas\",\n", - " \"i'll have a blue blue christmas without you\",\n", - " \"i'll be so blue thinking about you\",\n", - " 'decorations of red, on a green christmas tree',\n", - " \"won't mean a thing if you're not here with me\",\n", - " \"i'll have a blue christmas, that's certain\",\n", - " 'and when those blue blue heartaches start hurting',\n", - " \"you'll be doing alright with your christmas of white\",\n", - " \"but i'll have a blue blue christmas\",\n", - " 'a blue blue christmas without you',\n", - " 'all i ever wanted was something classic',\n", - " \"the kind of love song that goes on 'til the end of time\",\n", - " 'all i ever wanted was a little magic',\n", - " 'with a good laugh, jet-black sparkle in his eyes',\n", - " \"you're my velvet elvis, i ain't never gonna take you down\",\n", - " 'making everybody jealous when they step into my house',\n", - " 'soft to the touch, feels like love, knew it as soon as i felt it',\n", - " \"you're my velvet elvis, baby\",\n", - " \"i don't really care 'bout the mona lisa\",\n", - " \"i need a graceland kind of man who's always on my mind\",\n", - " 'i wanna show you off every evening',\n", - " 'go out with you in powder blue and tease my hair up high',\n", - " \"you're my velvet elvis, i ain't never gonna take you down\",\n", - " 'making everybody jealous when they step into my house',\n", - " 'soft to the touch, feels like love, knew it as soon as i felt it',\n", - " \"you're my velvet elvis, baby\",\n", - " \"you're my velvet elvis, baby\",\n", - " 'i knew it as soon as i felt it',\n", - " 'mm-mm, i knew it as soon as i felt it',\n", - " 'yeah',\n", - " \"you're my velvet elvis, i ain't never gonna take you down\",\n", - " 'making everybody jealous when they step into my house',\n", - " 'soft to the touch, feels like love, knew it as soon as i felt it',\n", - " \"you're my velvet elvis, baby\",\n", - " \"you're my velvet elvis, baby, yeah\",\n", - " \"you make me wanna forget that i'm a good guy\",\n", - " 'you make me wanna give in, into my dark side',\n", - " \"you make me an animal, you're tearing up the jungle\",\n", - " \"i'm burning at the seas\",\n", - " 'you make me want to unleash the beast…',\n", - " 'jekyll & hyde',\n", - " \"i can't fight it\",\n", - " \"when i'm with you\",\n", - " \"i'm just howling at the moon\",\n", - " \"there's a monster baby\",\n", - " \"you're gonna see it tonight\",\n", - " 'jekyll & hyde',\n", - " 'jekyll & hyde',\n", - " 'you make me wanna forget that i play by the rules',\n", - " 'down throw my halo and give it to you',\n", - " \"you make me ignited i try but i can't fight it\",\n", - " \"i'm burning up a fever\",\n", - " 'you make me want to unleash the beast',\n", - " 'jekyll & hyde',\n", - " \"i can't fight it\",\n", - " \"when i'm with you\",\n", - " \"i'm just howling at the moon\",\n", - " \"there's a monster baby\",\n", - " \"you're gonna see it tonight\",\n", - " 'jekyll & hyde',\n", - " 'jekyll & hyde',\n", - " \"i wanna give you all my lovin' lovin'\",\n", - " \"i wanna make you want for nothin' nothin'\",\n", - " 'i want to cross that line',\n", - " \"i wanna make you mine 'cause there is something\",\n", - " 'dark and dangerous, excited, inside me…',\n", - " 'jekyll & hyde',\n", - " \"i can't fight it\",\n", - " \"when i'm with you\",\n", - " \"i'm just howling at the moon\",\n", - " \"there's a monster baby\",\n", - " \"you're gonna see it tonight\",\n", - " 'jekyll & hyde',\n", - " 'jekyll & hyde',\n", - " 'jekyll & hyde',\n", - " 'jekyll & hyde',\n", - " 'have i stayed away too long',\n", - " 'have i stayed away too long',\n", - " 'if i came home tonight',\n", - " 'would you still be my darling',\n", - " 'or have i stayed away too long',\n", - " \"i'm just outside of town\",\n", - " \"and i'll soon be at your door\",\n", - " \"but maybe i'd be wrong\",\n", - " 'to hurry there',\n", - " \"i'd best keep out of town\",\n", - " 'and worry you no more',\n", - " 'for, maybe someone else',\n", - " 'has made you care',\n", - " 'oh, have all of my dreams gone wrong',\n", - " 'my beautiful dreams gone wrong',\n", - " 'if i came home tonight',\n", - " 'would you still be my darling',\n", - " 'or have i stayed away too long',\n", - " 'or have i stayed away too long',\n", - " 'someone called out to you',\n", - " 'and it sounded just like crying',\n", - " 'on a street where nobody',\n", - " 'even knows your name',\n", - " 'your mind was getting high on the sweet air',\n", - " 'as your spirit was flying',\n", - " 'steam rising from the sidewalks',\n", - " 'of new orleans after an evening rain',\n", - " 'steam rising from the sidewalks',\n", - " 'after an evening rain',\n", - " 'and it only made the heat',\n", - " 'feel like it was walking even closer',\n", - " 'as you headed up st. charles',\n", - " 'to catch a streetcar named desire',\n", - " 'young couple struggling in the doorway',\n", - " 'like he was trying to force her',\n", - " 'in the distance you swore',\n", - " 'you could hear them open fire',\n", - " 'tires squealing in the distance',\n", - " 'as you heard them open fire',\n", - " 'walk on, walk on',\n", - " \"don't look back\",\n", - " \"don't ask questions\",\n", - " \"don't you try to understand\",\n", - " 'walk on, walk on',\n", - " 'straight back down to your hotel room',\n", - " 'where she lies waiting for her man',\n", - " \"you're so afraid you might be losing love\",\n", - " 'that it makes you worry',\n", - " \"and you wonder if she's ever seen this\",\n", - " 'kind of fear in you',\n", - " 'and you think of that young couple',\n", - " 'in the doorway',\n", - " 'and it makes you hurry',\n", - " 'you wonder what kind of fear',\n", - " 'they might be living through',\n", - " 'yeah you wonder if',\n", - " 'they saw that fear in you',\n", - " 'walk on, walk on',\n", - " \"don't look back\",\n", - " \"don't ask questions\",\n", - " \"don't you try to understand\",\n", - " 'walk on, walk on',\n", - " 'straight back down to your hotel room',\n", - " 'where she lies waiting for her man',\n", - " 'straight back down to your hotel room',\n", - " 'where she lies waiting for her man',\n", - " 'walk on, walk on, walk on',\n", - " 'songwriter: john hiatt',\n", - " 'my old friends and boats, the stuff that works',\n", - " 'a random knife, an old blue shirt',\n", - " 'strong and steady, like texas dirt',\n", - " \"it's a place to hide when you're really hurt\",\n", - " 'well, coleman bonner and sis draper, a worn-out fiddle case',\n", - " \"old skinny dennis, i can still hear him singin' bass\",\n", - " 'well, that workbench was a holy place',\n", - " \"his favorite picture, susanna's face\",\n", - " \"there ain't nothin' like a guy clark song\",\n", - " \"you're feelin' fragile, 'fraid you don't belong\",\n", - " \"it's a lonely road you're travelin' on\",\n", - " \"well, there ain't nothin' like a guy clark song\",\n", - " 'homegrown tomatoes and a dallas whore',\n", - " \"a girl named rita doin' a slow bandera across a dance hall floor\",\n", - " 'well, he rolled his own and he loved to roar',\n", - " \"man, it's been over forty years since we shared that stage at the troubadour\",\n", - " \"there ain't nothin' like a guy clark song\",\n", - " \"you're feelin' fragile, 'fraid you don't belong\",\n", - " \"it's a lonely road you're travelin' on\",\n", - " \"well, there ain't nothin' like a guy clark song\",\n", - " 'well, what do you do when your heroes die?',\n", - " \"man, you let 'em roll, you let 'em fly\",\n", - " \"'cause desperadoes don't worry or wonder why\",\n", - " \"well, son of a bitch, old rodney's gon' miss you, guy\",\n", - " \"and there ain't nothin' like a guy clark song\",\n", - " 'you feel abandoned, your friends are gone',\n", - " \"it's a lonely road you're travelin' on\",\n", - " \"well, there ain't nothin' like a guy clark song\",\n", - " 'la la la la la la (bobby mcgee)',\n", - " 'la la la me and bobby mcgee (bobby mcgee)',\n", - " 'la la la la la la (bobby mcgee)',\n", - " 'la la la me and bobby mcgee',\n", - " \"busted flat in baton rouge, headin' for the train\",\n", - " \"feelin' nearly faded as my jeans\",\n", - " 'bobby thumbed a diesel down just before it rained',\n", - " 'took us all the way to new orleans',\n", - " 'i pulled my old harp out of my dirty red bandana',\n", - " \"and was blowin' sad while bobby sang the blues\",\n", - " \"with those windshield wipers slappin' time\",\n", - " \"i was holdin' bobby's hand in mine\",\n", - " 'we sang every song that driver knew',\n", - " \"freedom's just another word for 'nothin' left to lose'\",\n", - " \"nothin' ain't worth nothin', but it's free\",\n", - " 'feeling good was easy, lord, when bobby sang the blues',\n", - " 'feeling good was good enough for me',\n", - " 'good enough for me and bobby mcgee',\n", - " 'la la la la la la (bobby mcgee)',\n", - " 'la la la me and bobby mcgee (bobby mcgee)',\n", - " 'la la la la la la (bobby mcgee)',\n", - " 'la la la me and bobby mcgee',\n", - " 'from the coal mines of kentucky to the california sun',\n", - " 'bobby shared the secrets of my soul',\n", - " \"standin' right beside me, lord, through everything i'd done\",\n", - " 'every night he kept me from the cold',\n", - " 'then somewhere near salinas, lord, i let him slip away',\n", - " \"searching for a home i hope he'll find\",\n", - " \"and i'd give all of my tomorrows for a single yesterday\",\n", - " \"holdin' bobby's body close to mine\",\n", - " \"freedom's just another word for 'nothin' left to lose'\",\n", - " \"nothin' ain't worth nothin', but it's free\",\n", - " 'feeling good was easy, lord, when bobby sang the blues',\n", - " 'feeling good was good enough for me',\n", - " 'good enough for me and bobby mcgee',\n", - " 'la la la la la la (bobby mcgee)',\n", - " 'la la la me and bobby mcgee (bobby mcgee)',\n", - " 'la la la la la la (bobby mcgee)',\n", - " 'la la la me and bobby mcgee (bobby mcgee)',\n", - " 'la la la la la la (bobby mcgee)',\n", - " 'la la la me and bobby mcgee (bobby mcgee)',\n", - " 'alright bro',\n", - " \"we're gonna have a talk about this\",\n", - " 'i brought you in this club and you done stole my girl',\n", - " \"and that ain't right\",\n", - " 'when we walked into the club i thought it was understood, mmm, hmm',\n", - " 'it was my turn tonight and it was your job to make me look good',\n", - " 'then i pointed out that sweet little beauty in black, yes i did',\n", - " 'i sent you over with a couple of drinks and you never came back',\n", - " 'you were supposed to be my wingman',\n", - " \"wasn't that your game plan\",\n", - " \"you take the grenade, and i'll take the fox\",\n", - " 'supposed to talk me up bro',\n", - " 'no matter what so',\n", - " \"don't go telling me you must've forgot\",\n", - " 'you waltzed her off the dance floor',\n", - " 'right out the back door',\n", - " 'leaving me to go it alone',\n", - " \"you're supposed to be my wingman\",\n", - " \"but the only thing that it should've been me\",\n", - " \"that's taking her home\",\n", - " 'shortly after you left, i was cussing your name, hell i was',\n", - " 'when her ugly girlfriend comes over starts working her game, mmm',\n", - " \"and i couldn't scare her off no matter what i'd said, nah, no\",\n", - " \"i was thinking i'm the one that should be kissing on that cutie instead\",\n", - " 'you were supposed to be my wingman',\n", - " \"wasn't that your game plan\",\n", - " \"you take the grenade, and i'll take the fox\",\n", - " 'supposed to talk me up bro',\n", - " 'no matter what so',\n", - " \"don't go telling me you must've forgot\",\n", - " 'you waltzed her off the dance floor',\n", - " 'right out the back door',\n", - " 'leaving me to go it alone',\n", - " \"you're supposed to be my wingman\",\n", - " \"but the only thing that it should've been me\",\n", - " \"that's taking her home\",\n", - " 'whoa',\n", - " 'they say, all is fair in love and war',\n", - " \"and all in time i'm going to settle that score\",\n", - " \"it ain't win or lose, it's how you play the game\",\n", - " \"if i was in your shoes, i might've done it just the same\",\n", - " 'you were supposed to be my wingman',\n", - " \"wasn't that your game plan\",\n", - " \"you take the grenade, and i'll take the fox\",\n", - " 'supposed to talk me up bro',\n", - " 'no matter what so',\n", - " \"don't go telling me you must've forgot\",\n", - " 'you waltzed her off the dance floor',\n", - " 'right out the back door',\n", - " 'leaving me to go it alone',\n", - " \"you're supposed to be my wingman\",\n", - " \"but the only thing that it should've been me\",\n", - " \"that's taking her home\",\n", - " 'you waltzed her off the dance floor',\n", - " 'right out the back door',\n", - " 'leaving me to go it alone',\n", - " \"you're supposed to be my wingman\",\n", - " \"but the only thing man it should've been me\",\n", - " \"that's taking her home\",\n", - " 'is taking her home, ohh',\n", - " 'you were supposed to be my wingman, mmm, mmm',\n", - " 'silent night, holy night',\n", - " 'all is calm, all is bright',\n", - " 'round yon virgin mother and child',\n", - " 'holy infant so tender and mild',\n", - " 'sleep in heavenly peace',\n", - " 'sleep in heavenly peace',\n", - " '(silent night, holy night,)',\n", - " '(shepherds quake at the sight,)',\n", - " 'glories stream from heaven afar',\n", - " 'heavenly hosts sing alleluia;',\n", - " 'christ the savior, is born!',\n", - " 'christ the savior, is born!',\n", - " 'silent night, holy night',\n", - " \"son of god, love's pure light\",\n", - " 'radiant beams from thy holy face',\n", - " 'with the dawn of redeeming grace',\n", - " 'jesus, lord, at thy birth...',\n", - " 'when my road runs out',\n", - " \"you're gonna find me with my lead foot down\",\n", - " 'rear view mirror, ripped off the windshield',\n", - " 'regrets nowhere near',\n", - " 'when my blood runs cold',\n", - " \"and it don't matter if i'm young or old\",\n", - " \"cause when it's all said and done\",\n", - " 'i’ll be long gone with the sun',\n", - " \"they're gonna know that i was here\",\n", - " 'gonna bang that drum, gonna light it up',\n", - " 'every bullet in the gun',\n", - " 'shot across the midnight sky',\n", - " \"ain't leavin' one behind\",\n", - " 'love even if it hurts',\n", - " 'even if i crash and burn',\n", - " 'all the way down to the embers',\n", - " 'leave them something to remember',\n", - " 'might be glory, might be flames',\n", - " 'when the good lord calls my name',\n", - " \"stand my ground, run from nothin'\",\n", - " \"i'm going out in a blaze of somethin'\",\n", - " 'i’m gonna come on strong',\n", - " \"like there's no tomorrow comin' on\",\n", - " \"enjoy the good times while you've got 'em\",\n", - " \"'cause who knows how long you've got 'em\",\n", - " 'raise your glass and sing along',\n", - " 'gonna bang that drum, gonna light it up',\n", - " 'every bullet in the gun',\n", - " 'shot across the midnight sky',\n", - " \"ain't leavin' one behind\",\n", - " 'love even if it hurts',\n", - " 'even if i crash and burn',\n", - " 'all the way down to the embers',\n", - " 'leave them something to remember',\n", - " 'might be glory, might be flames',\n", - " 'when the good lord calls my name',\n", - " \"stand my ground, run from nothin'\",\n", - " \"i'm going out in a blaze of somethin'\",\n", - " 'we all may be shooting stars',\n", - " 'here today, but gone tomorrow',\n", - " 'and i’m gonna keep on shining while i’m here',\n", - " 'gonna bang that drum, gonna light it up',\n", - " 'every bullet in the gun',\n", - " 'shot across the midnight sky',\n", - " \"ain't leavin' one behind\",\n", - " 'love even if it hurts',\n", - " 'even if i crash and burn',\n", - " 'all the way down to the embers',\n", - " 'leave them something to remember',\n", - " 'might be glory, might be flames',\n", - " 'when the good lord calls my name',\n", - " \"stand my ground, run from nothin'\",\n", - " \"i'm going out in a blaze of somethin'\",\n", - " \"in a blaze of somethin'\",\n", - " \"yeah, i'm goin' out, and i'm goin' out\",\n", - " \"yeah, in a blaze of somethin'\",\n", - " \"yeah, i'm goin' out, i'm goin' out\",\n", - " \"i came in last night 'bout a half past ten\",\n", - " \"that baby of mine wouldn't let me in\",\n", - " 'move it on over, rock it on over',\n", - " \"move a little dog, a mean old dog movin' in\",\n", - " 'now listen to me talk before you start to whine',\n", - " \"that side's yours and this side's mine\",\n", - " 'move it on over, rock it on over',\n", - " \"move a little dog, a mean old dog movin' in\",\n", - " 'she warned me once, warned me twice',\n", - " \"i don't take nobody's advice\",\n", - " 'move it on over, rock it on over',\n", - " \"move a little dog, a mean old dog movin' in\",\n", - " 'listen to me howl before you start to whine',\n", - " \"that side's yours, baby, this side's mine\",\n", - " \"move it on over, why don't you rock it on over\",\n", - " \"move it little dog, a mean old dog movin' in\",\n", - " \"come back to me beggin' on her knees\",\n", - " \"meanwhile i'll be scratchin' fleas\",\n", - " 'move it on over, rock it on over',\n", - " \"move it little dog, a mean old dog movin' in\",\n", - " 'she changed the lock on my back door',\n", - " \"now my key don't fit no more\",\n", - " 'move it on over, rock it on over',\n", - " \"move it little dog, a mean old dog movin' in\",\n", - " 'move it on over, move it on over',\n", - " 'move it on over, rock it on over',\n", - " \"move over cool dog, a hot dog's movin' in\",\n", - " 'if you want to hang out',\n", - " \"you've got to take her out\",\n", - " 'cocaine',\n", - " 'if you want to get down',\n", - " 'down on the ground',\n", - " 'cocaine',\n", - " \"she don't lie\",\n", - " \"she don't lie\",\n", - " \"she don't lie\",\n", - " 'cocaine',\n", - " 'if you got bad news',\n", - " 'you want to kick them blues',\n", - " 'cocaine',\n", - " 'when your day is done',\n", - " 'want to run',\n", - " 'cocaine',\n", - " \"she don't lie\",\n", - " \"she don't lie\",\n", - " \"she don't lie\",\n", - " 'cocaine',\n", - " 'if your thing is gone',\n", - " 'and you wanna ride on',\n", - " 'cocaine',\n", - " \"don't forget this fact\",\n", - " \"you can't get it back\",\n", - " 'cocaine',\n", - " \"she don't lie\",\n", - " \"she don't lie\",\n", - " \"she don't lie\",\n", - " 'cocaine',\n", - " \"she don't lie\",\n", - " \"she don't lie\",\n", - " \"she don't lie\",\n", - " 'cocaine',\n", - " 'woke up this morning with the sundown shining in',\n", - " 'found my mind in a brown paper bag again',\n", - " 'tripped on a cloud and fell eight miles high',\n", - " 'tore my mind on a jagged sky',\n", - " 'and i just dropped in to see what condition my condition was in',\n", - " 'lord, lord, lord, what condition my condition was in',\n", - " 'i pushed my soul in a deep dark hole and followed it in',\n", - " 'met myself crawling out as i was crawling in',\n", - " \"i woke up so tight i said i'd never unwind\",\n", - " 'i saw so much that it broke my mind',\n", - " 'i just dropped in to see what condition my condition was in',\n", - " 'lord, lord, lord, what condition my condition was in',\n", - " 'i just dropped in to see what condition my condition was in',\n", - " 'lord, lord, lord, what condition my condition was in',\n", - " 'somebody painted april fool in big black letters',\n", - " 'on a dead end sign',\n", - " 'i had my foot on the gas',\n", - " 'when i left the road, it blew out my mind',\n", - " 'eight miles out of memphis, lord, i got no spare',\n", - " 'eight miles straight up downtown somewhere',\n", - " 'i just dropped in to see what condition my condition was in',\n", - " 'lord, lord, lord, what condition my condition was in',\n", - " 'what condition my condition was in',\n", - " 'songwriter: mickey newbury',\n", - " 'magic valley',\n", - " '(marvin moore, j.p. richardson)',\n", - " \"â« â© '62 al gallico music â»\",\n", - " \"i'm going home to magic valley where hay turns into rose\",\n", - " \"i'm going home to magic valley leaving for my home above\",\n", - " \"now don't you cry because i'm leaving for you see i've had my day\",\n", - " \"i've led the life that's not for grieving so rejoice with me and pray\",\n", - " 'for i hear my lord telling me put down that heavy load',\n", - " \"you'll reach your gold now follow me come on up the golden road\",\n", - " 'for i hear my lord telling me...',\n", - " 'this is the end of side one of this record',\n", - " 'please now turn it over for the second side',\n", - " \"i got a phone that won't die\",\n", - " \"you're up in the air, landing tonight\",\n", - " \"so i'll leave a message for ya, get it when you touch down\",\n", - " \"if i'm being honest, i'm a little drunk now\",\n", - " \"i got a bed that's too big without ya\",\n", - " \"i got a heart that don't beat without ya\",\n", - " \"get so jealous when you ain't by my side\",\n", - " \"i know it's selfish, but i need you tonight\",\n", - " 'so text when you touch down, straight to my place now',\n", - " \"these nights without you, they're so hard to sleep\",\n", - " \"come put your things down, i'll order take out\",\n", - " 'no more to say now, baby, just make out with me',\n", - " 'baby, just make out with me',\n", - " 'you got a kiss i still taste',\n", - " 'and i feel your lips from miles away',\n", - " 'i got one more minute of this message to burn',\n", - " \"i hope you get it 'cause i mean every word\",\n", - " 'so text when you touch down, straight to my place now',\n", - " \"these nights without you, they're so hard to sleep\",\n", - " \"come put your things down, i'll order take out\",\n", - " 'no more to say now, baby, just make out with me',\n", - " 'baby, just make out with me',\n", - " 'just like it used to be, baby, just make out with me',\n", - " 'i stand on these two feet',\n", - " 'forty-eight hours so',\n", - " 'my steps might move the days',\n", - " \"to where i'd like to be\",\n", - " 'the web is thick with lies and cheats',\n", - " \"i'm one of them, and you're out of reach\",\n", - " 'i wear these ribbons like',\n", - " 'a prisoner, ball and chain',\n", - " 'a grain in a desert dune',\n", - " 'praying to the sun for rain',\n", - " 'the air is dry, the stars are true',\n", - " \"i wonder how i'll change for you\",\n", - " 'i watch on glowing screens',\n", - " 'scrawling pipes of industry',\n", - " \"later we'll strike chords in bars\",\n", - " \"wonder who's listening\",\n", - " 'the room is dark and i cannot see',\n", - " \"can only feel what's missing\",\n", - " 'the rooms is dark and i cannot see',\n", - " \"can only feel what's missing\",\n", - " 'fifteen dollars is my gain, fifteen is my draw',\n", - " 'randall collins is my name, down in arkansas',\n", - " \"rollin' dice in the railroad yard, won't get'cha too much, jack\",\n", - " \"workin' on that section gang will surely break your back\",\n", - " 'fifteen dollars is my gain, fifteen is my draw',\n", - " 'randall collins is my name, in the state of arkansas',\n", - " \"hidin' out by the water tank, where the shade is cool\",\n", - " \"just watchin' that straw boss hunt for me, i ain't no-body's fool\",\n", - " 'fifteen dollars is my gain, fifteen is my draw',\n", - " 'randall collins is my name, in the state of arkansas',\n", - " \"they're a'making up train in the memphis yard, the longest i ever saw\",\n", - " 'gonna ride it down to fairbanks town in the state of arkansas',\n", - " 'fifteen dollars is my gain, fifteen is my draw',\n", - " 'randall collins is my name, in the state of arkansas',\n", - " 'fifteen dollars is my gain, fifteen is my draw',\n", - " 'randall collins is my name, in the state of arkansas',\n", - " \"tomorrow i'm gonna leave here\",\n", - " \"i'm gonna let you go and walk away\",\n", - " 'like every day i said i would',\n", - " \"and tomorrow, i'm gonna listen\",\n", - " 'to that voice of reason inside my head',\n", - " \"telling me that we're no good\",\n", - " \"but, tonight i'm gonna give in one last time\",\n", - " 'rock you strong in these arms of mine',\n", - " 'forget all the regrets that are bound to follow',\n", - " \"we're like fire and gasoline\",\n", - " \"i'm no good for you, you're no good for me\",\n", - " 'we only bring each other tears and sorrow',\n", - " \"but tonight, i'm gonna love you like there's no\",\n", - " \"tomorrow i'll be stronger\",\n", - " \"i'm not gonna break down and call you up\",\n", - " 'when my heart cries out for you',\n", - " \"and tomorrow, you won't believe it\",\n", - " \"but when i pass your house, i won't stop\",\n", - " 'no matter how bad i want to',\n", - " \"but, tonight i'm gonna give in one last time\",\n", - " 'rock you strong in these arms of mine',\n", - " 'forget all the regrets that are bound to follow',\n", - " \"we're like fire and gasoline\",\n", - " \"i'm no good for you, you're no good for me\",\n", - " 'we only bring each other tears and sorrow',\n", - " \"but tonight, i'm gonna love you like there's no\",\n", - " 'tomorrow',\n", - " \"baby, when we're good, you know we're great\",\n", - " \"but there's too much bad for us to think\",\n", - " \"that there's anything worth trying to save\",\n", - " \"but tonight i'm gonna give in one last time\",\n", - " 'rock you strong in these arms of mine',\n", - " 'forget all the regrets that are bound to follow',\n", - " \"we're like fire and gasoline\",\n", - " \"i'm no good for you, you're no good for me\",\n", - " 'we only bring each other tears and sorrow',\n", - " \"but tonight, i'm gonna love you like there's no\",\n", - " \"tomorrow, i'm gonna leave here\",\n", - " \"yeah, i'm gonna let you go and walk away\",\n", - " 'like every day i said i would',\n", - " \"hey, it's big d and bubba, and and we're live on location. we want you to come on out because this is not just a party; it's a parking lot party with lee brice!\",\n", - " \"johnny's firing up his coleman grill\",\n", - " \"we've got 24 tall boys on the chill\",\n", - " \"yeah, 14 of 'em's mine\",\n", - " 'a little marshall tucker on the radio',\n", - " \"(can't you see?)\",\n", - " \"you know we're just catchin' a little groove before the show\",\n", - " \"yeah, ain't playing nothing slow\",\n", - " 'at the parking lot party',\n", - " \"tailgate buzz just sipping' on suds\",\n", - " \"ain't never too early\",\n", - " 'to light one up, fill up your cup',\n", - " \"'cause there ain't no party like the pre-party\",\n", - " 'and after the party is the after-party',\n", - " 'at the parking lot party',\n", - " \"well, the opening band is doin' sound-check\",\n", - " 'man, they sound pretty good',\n", - " \"hell, i ain't even bought no tickets yet\",\n", - " \"yeah, but that's alright we don't care\",\n", - " \"'cause all the pretty girls are sitting' right here\",\n", - " 'kicking back in the lawn chairs',\n", - " 'at the parking lot party',\n", - " \"tailgate buzz just sipping' on suds\",\n", - " \"ain't never too early\",\n", - " 'to light one up, fill up your cup',\n", - " \"'cause there ain't no party like the pre-party\",\n", - " 'and after the party is the after-party',\n", - " 'at the parking lot party',\n", - " 'woh-oh-oh-oh!',\n", - " \"old tom's pulling' his guitar out\",\n", - " 'woh,-oh-oh-oh!',\n", - " \"it's bout time to pass that shine around\",\n", - " 'hey-hey-hey!',\n", - " \"show's about to start but we ain't about to leave\",\n", - " 'hey hey hey!',\n", - " \"it's one hell of a time and it's all for free!\",\n", - " 'at the parking lot party',\n", - " \"tailgate buzz just sipping' on suds\",\n", - " \"ain't never too early\",\n", - " 'to light one up, fill up your cup',\n", - " \"'cause there ain't no party like the pre-party\",\n", - " 'and after the party is the after-party',\n", - " 'at the parking lot party',\n", - " 'oh yeah, cam on',\n", - " 'parking lot party',\n", - " \"oh, they're going to have to tow my ass out of here\",\n", - " 'parking lot party',\n", - " 'oh, man, damn, girl',\n", - " 'parking lot party',\n", - " 'woo-ooh',\n", - " 'parking lot party',\n", - " \"don't think i've ever seen that before, lord\",\n", - " '(hey-hey-hey)',\n", - " 'luxury liner, forty tons of steel',\n", - " 'no one in this whole wide world knows the way i feel',\n", - " \"i've been a long lost soul for a long, long time\",\n", - " \"yeah, i've been around\",\n", - " \"everybody ought to know what's on my mind\",\n", - " \"you think i'm lonesome, so do i, so do i\",\n", - " \"well, i'm the kind of girl\",\n", - " ...]},\n", - " 'data': ['we were born before the wind',\n", - " 'also younger than the sun',\n", - " 'ere the bonnie boat was won',\n", - " 'as we sailed into the mystic',\n", - " 'hark, now hear the sailors cry',\n", - " 'smell the sea, babe, and feel the sky',\n", - " 'let your soul and spirit fly into the mystic',\n", - " 'when that fog horn blows i will be coming home',\n", - " 'when that fog horn blows i gotta hear it',\n", - " \"i don't have to fear it\",\n", - " \"'cause i want to rock your gypsy soul\",\n", - " 'just like way back in the days of old',\n", - " 'oh, together we will roll into the mystic',\n", - " 'come on!',\n", - " 'when that fog horn whistle blows',\n", - " 'you know i will be coming home to you',\n", - " 'yeah, when that fog horn whistle blows',\n", - " \"i want to hear it, i don't have to fear it\",\n", - " \"'cause i want to rock your gypsy soul\",\n", - " 'just like way back in the days of old, mama',\n", - " 'magnificently, we will row into the mystic',\n", - " \"well, it's too late to help me, son, mmm\",\n", - " 'six-by-nine and counting down, in one after the other',\n", - " \"they'll go running up and down the road, angry as their mothers\",\n", - " 'over senseless acts of selfishness on made up english oceans',\n", - " 'and made up english stomach contents tied to senseless notions',\n", - " 'once you grab them by the pride, their hearts are bound to follow',\n", - " 'their natural fear of anything less manly or less natural',\n", - " 'then gun-less sheriffs caught on lonesome roads and live to tell it',\n", - " 'how hard it is for meaner men without the lead to sell it',\n", - " 'cause only simple men can see the logic in whatever',\n", - " 'smarter men can whittle down till you can fit it on a sticker',\n", - " 'get it stuck like mud and bugs to names that set the standard',\n", - " \"they'll live it like it's gospel, and they'll quote it like it's scripture\",\n", - " 'six-by-nine and counting down, in one after the other',\n", - " \"they'll go running up and down the road, angry as their mothers\",\n", - " 'over senseless acts of selfishness on made up english oceans',\n", - " 'and made up english stomach contents tied to senseless notions',\n", - " \"it's no matter if they dress real nice, and sit up straight and stupid\",\n", - " 'and say their prayers in quiet ancient tongues',\n", - " \"they're no different that the ones who close their eyes and fall down to the ground\",\n", - " 'and twitch like all their nerves have come undone',\n", - " \"so be it if they come to find out feeling good's as easy\",\n", - " \"as denying that there's day or night at all\",\n", - " 'till what it takes to feel a thing seems so far out of reach',\n", - " 'they just claw their skin, and grind their teeth and bawl',\n", - " 'from thirty thousand feet above',\n", - " 'the desert floor, i see it there below',\n", - " 'a city with a legend',\n", - " 'the west texas city of el paso',\n", - " 'where long ago i heard a song',\n", - " 'about a texas cowboy and a girl',\n", - " \"and a little place called rosa's\",\n", - " 'where he used to go and watch this beauty whirl',\n", - " \"i don't recall who sang the song\",\n", - " 'but i recall the story that i heard',\n", - " 'and as i look down on the city',\n", - " 'i remember each and every word',\n", - " 'the singer sang about a jealous cowboy',\n", - " 'and the way he used a gun',\n", - " 'to kill another cowboy',\n", - " 'then he had to leave el paso on the run',\n", - " 'el paso city, by the rio grande',\n", - " 'the cowboy lived and rode away',\n", - " \"but love was strong, he couldn't stay\",\n", - " 'he rode back just to die in that el paso sand',\n", - " 'el paso city, by the rio grande',\n", - " 'i try not to let you cross my mind',\n", - " \"but still i find there's such a mystery in the song\",\n", - " \"that i don't understand\",\n", - " 'my mind is down there somewhere',\n", - " 'as i fly above the badlands of new mexico',\n", - " \"i can't explain why i should know\",\n", - " 'the very trail he rode back to el paso',\n", - " 'can it be that man can disappear from life and live another time?',\n", - " 'and does the mystery deepen',\n", - " 'cause you think that you yourself lived in that other time?',\n", - " 'somewhere in my deepest thoughts',\n", - " 'familiar scenes and memories unfold',\n", - " \"these wild and unexplained emotions that i've had so long\",\n", - " 'but i have never told',\n", - " 'like every time i fly up through the heavens',\n", - " 'and i see you there below',\n", - " 'i get the feeling sometime in another world i lived in el paso',\n", - " 'el paso city, by the rio grande',\n", - " 'could it be, that i could be',\n", - " 'the cowboy in this mystery',\n", - " 'that died there in that desert sand so long ago?',\n", - " 'el paso city, by the rio grande',\n", - " 'a voice tells me to go and see',\n", - " \"another voice, keeps tellin' me\",\n", - " 'maybe death awaits me in el paso',\n", - " 'el paso city.....',\n", - " \"look at you sittin' on that tailgate\",\n", - " 'all barefoot, beautiful and brown-eyed',\n", - " \"just watchin' you breathin's blowin' me away\",\n", - " 'all i can think about tonight',\n", - " 'somebody find me a preacher',\n", - " 'somebody find me a man with a bible who can tie a knot',\n", - " \"i know what i've got, i know who i love\",\n", - " 'track him down, wake him up',\n", - " 'right here, right now in this tennessee dirt',\n", - " 'no long white dress, no little white church',\n", - " 'just you in your cutoff jeans and my old t-shirt',\n", - " 'somebody find me a preacher',\n", - " \"baby i can't wait another minute\",\n", - " 'with you on my lap and your back against the wheel',\n", - " \"i ain't got no diamond here to give ya\",\n", - " \"but if this is how lovin' you feels\",\n", - " 'somebody find me a preacher',\n", - " 'somebody find me a man with a bible who can tie a knot',\n", - " \"i know what i've got, i know who i love\",\n", - " 'track him down, wake him up',\n", - " 'right here, right now in this tennessee dirt',\n", - " 'no long white dress, no little white church',\n", - " 'just you in your cutoff jeans and my old t-shirt',\n", - " 'somebody find me a preacher',\n", - " \"'cause i want to spend\",\n", - " 'the rest of my life',\n", - " \"makin' you feel\",\n", - " 'the way i feel tonight',\n", - " 'somebody find, somebody find me a preacher',\n", - " 'somebody find me a man with a bible who can tie a knot',\n", - " \"i know what i've got, i know who i love\",\n", - " 'track him down, wake him up',\n", - " 'right here, right now in this tennessee dirt',\n", - " 'no long white dress, no little white church',\n", - " 'just you in your cutoff jeans and my old t-shirt',\n", - " 'somebody find me a preacher',\n", - " 'find me a preacher tonight',\n", - " 'find me a preacher',\n", - " 'grandpa',\n", - " \"tell me 'bout the good old days\",\n", - " 'sometimes it feels like',\n", - " \"this world's gone crazy\",\n", - " 'grandpa, take me back to yesterday',\n", - " 'where the line between right and wrong',\n", - " \"didn't seem so hazy\",\n", - " 'did lovers really fall in love to stay',\n", - " 'stand beside each other come what may?',\n", - " 'was a promise really something people kept',\n", - " 'not just something they would say?',\n", - " 'did families really bow their heads to pray?',\n", - " 'did daddies really never go away?',\n", - " 'whoa oh grandpa',\n", - " \"tell me 'bout the good old days\",\n", - " 'grandpa',\n", - " 'everything is changing fast',\n", - " 'we call it progress',\n", - " \"but i just don't know\",\n", - " \"and grandpa, let's wonder back into the past\",\n", - " 'and paint me a picture of long ago',\n", - " 'did lovers really fall in love to stay',\n", - " 'stand beside each other come what may?',\n", - " 'was a promise really something people kept',\n", - " 'not just something they would say and then forget?',\n", - " 'did families really bow their heads to pray?',\n", - " 'did daddies really never go away?',\n", - " 'whoa oh grandpa',\n", - " \"tell me 'bout the good old days\",\n", - " 'whoa oh grandpa',\n", - " \"tell me 'bout the good ole days\",\n", - " \"the cuckoo she's a pretty bird, she sings as she flies\",\n", - " 'she bringeth us good tidings, she telleth us no lies',\n", - " 'she sucketh white flowers to keep her voice clear',\n", - " 'and everytime she singeth “cuckoo, cuckoo, cuckoo”',\n", - " 'then the springtime draweth near',\n", - " \"the cuckoo she's a pretty bird, no other is as she\",\n", - " 'she flits across the meadow and sings from every tree',\n", - " 'she loves the summеr sunshine, she hates the wind and rain',\n", - " 'and everytime she singeth “cuckoo, cuckoo, cuckoo”',\n", - " 'then the springtime comes again',\n", - " 'well i sat down next to a photograph',\n", - " 'tried my best almost made her laugh',\n", - " 'she was my toughest crowd',\n", - " 'there in the way',\n", - " 'was a mountain up in the clouds',\n", - " \"well i can't sleep and i'm not in love\",\n", - " \"i can't speak without messing up\",\n", - " \"eyes tell of what's behind\",\n", - " 'hers showed the way to a long and a lonely climb',\n", - " \"but through failure i'll proceed\",\n", - " \"she'll see how far i've come\",\n", - " \"and it's you and me in the sun and sea\",\n", - " \"i'll offer my arm to yours\",\n", - " 'it seems to me no mystery',\n", - " \"it isn't, so i'll try hard to speak\",\n", - " 'well i sat down next to a living hell',\n", - " 'tried my best until i struck out',\n", - " 'movement is not mine',\n", - " 'i stood in the way',\n", - " 'pretending that i was the vine',\n", - " 'but no failure will proceed',\n", - " 'from a mouth that drinks its wine',\n", - " \"and it's not me not my sanctity\",\n", - " \"these aren't my words to you\",\n", - " \"it's all clear when it's not from here\",\n", - " \"so clear, so i'll try not to speak\",\n", - " 'twenty dollar bill in my pocket',\n", - " '350 chevrolet knocking',\n", - " \"it ain't worth much\",\n", - " \"but tonight it's running plenty good enough\",\n", - " 'no party, no strobe lights flashing',\n", - " 'vip velvet rope action',\n", - " 'round here, right here',\n", - " 'we got our own little perfect kinda atmosphere',\n", - " 'static on the radio, ready to rock',\n", - " 'cool track, chill back, ready or not',\n", - " \"smiling that smile, i don't want you to stop\",\n", - " 'yeah, you and i, we got it all tonight',\n", - " 'big sky but the stars are shining',\n", - " \"no we ain't got nothing but time and\",\n", - " 'moonlight falling, good times calling',\n", - " \"ain't got much, but we got it all tonight\",\n", - " 'thrift shop rock and roll t-shirt',\n", - " \"you're lookin so good that it hurts\",\n", - " \"i swear i don't care\",\n", - " \"you know it ain't likely but it's got me wanting to stare\",\n", - " \"i can't do dinner at a five star\",\n", - " 'so how bout we hit a little dive bar',\n", - " 'a little bit later on',\n", - " \"but right now let's keep rolling along\",\n", - " 'static on the radio, ready to rock',\n", - " 'cool track, chill back, ready or not',\n", - " \"smiling that smile, i don't want you to stop\",\n", - " 'yeah, you and i, we got it all tonight',\n", - " 'big sky but the stars are shining',\n", - " \"no we ain't got nothing but time and\",\n", - " 'moonlight falling, good times calling',\n", - " \"ain't got much, but we got it all tonight\",\n", - " 'oh the real good, feel good, late at night',\n", - " 'all i need is you looking like that',\n", - " 'and just like that',\n", - " 'and just like that',\n", - " 'static on the radio, ready to rock',\n", - " 'cool track, chill back, ready or not',\n", - " \"smiling that smile, i don't want you to stop\",\n", - " 'yeah, you and i, we got it all tonight',\n", - " 'big sky but the stars are shining',\n", - " \"no we ain't got nothing but time and\",\n", - " 'moonlight falling, good times calling',\n", - " \"ain't got much, but we got it all tonight\",\n", - " 'we got it all tonight',\n", - " 'we got it all tonight',\n", - " 'we got it all tonight',\n", - " 'lorenzo blues 4:19 trk 9',\n", - " \"nehemiah curtis 'skip' james\",\n", - " 'skip james - vocal, guitar and piano',\n", - " 'album: blues from the delta',\n", - " \"from vanguard 'devil got my woman' album 1968\",\n", - " 'vanguard records cd 96517-2 1998',\n", - " 'i wonder has anybody here',\n", - " \"seen my lovin' lorenzo, today?\",\n", - " 'i wonder has anybody here',\n", - " \"seen my lovin' lorenzo, today?\",\n", - " 'you know, we had a nice time christmas',\n", - " \"but she left me on new year's day\",\n", - " 'oh, you got to know her',\n", - " 'when you see her',\n", - " \"'cause she's so different\",\n", - " 'from any other girl',\n", - " \"oh, you've got to know her\",\n", - " 'when you see her',\n", - " 'from any other girl',\n", - " \"because she's made up\",\n", - " 'like a coke-cola bottle',\n", - " 'an she got a likeness',\n", - " \"it's outta this world, alright\",\n", - " \"you know, she's stutters in her speech\",\n", - " 'an she wiggle and she wobble',\n", - " 'when she walk',\n", - " \"she's stuttered in her speech\",\n", - " 'an she wiggle an a-wobble',\n", - " 'when she walk',\n", - " 'yes, an she got three gold teeth',\n", - " 'an she got deep dimples in her jaw, yeah',\n", - " \"i say, 'hello, lorenzo, lorenzo\",\n", - " \"how in the world come you treat me this-a-way?'\",\n", - " \"i say, 'lorenzo, lorenzo\",\n", - " \"how in the world come you treat me this-a-way?'\",\n", - " 'darling, you know that you was gonna leave me',\n", - " \"but you didn't tell me you was goin' to stay\",\n", - " 'now, if i can make a half a million',\n", - " \"i declare, i'm 'on give it all, to the hoodoo man\",\n", - " 'i declare, if i can make a half a million',\n", - " \"i'm 'on give it all, to the hoodoo man\",\n", - " 'just after he promise me that he will',\n", - " \"bring my lovin' lorenzo, back home to me, again\",\n", - " 'an i want her back ho-oh-ome, to me again',\n", - " '~',\n", - " 'and i finally asked you to dance on the last slow song',\n", - " 'beneath that moon that was really a disco ball',\n", - " 'i can still feel my head on your shoulder',\n", - " 'and hoping that song would never be over',\n", - " \"i haven't seen you in ages\",\n", - " 'sometimes i find myself',\n", - " 'wondering where you are',\n", - " \"for me, you'll always be 18\",\n", - " \"and beautiful, and dancin' away with my heart\",\n", - " 'i brushed your curls back so i could see your eyes',\n", - " 'and the way you moved me was like you were reading my mind',\n", - " 'i can still feel you lean in to kiss me',\n", - " \"i can't help but wonder if you ever miss me\",\n", - " \"i haven't seen you in ages\",\n", - " 'sometimes i find myself',\n", - " 'wondering where you are',\n", - " \"for me, you'll always be 18\",\n", - " \"and beautiful, and dancin' away with my heart\",\n", - " 'you headed off to college',\n", - " 'at the end of that summer and we lost touch',\n", - " \"i guess i didn't realize even at that moment we lost so much\",\n", - " \"i haven't seen you in ages\",\n", - " 'sometimes i find myself',\n", - " 'wondering where you are',\n", - " \"for me, you'll always be 18\",\n", - " \"and beautiful, and dancin' away with my heart\",\n", - " 'na-na-na',\n", - " 'na-na-na',\n", - " 'na-na-na',\n", - " 'away with my heart',\n", - " 'na-na-na',\n", - " 'na-na-na',\n", - " 'na-na-na',\n", - " 'it rained today, the clouds rolled up at dawn',\n", - " 'all hell burst wide open and just like that was gone',\n", - " \"your little lap dog chased a fox tailed squirrel 'cross the main road through the wood\",\n", - " 'some ninja on a dirt bike nearly ran him down for good',\n", - " 'right about now it gets quiet around here, what with nightfall in the wings',\n", - " 'the floorboards creak and faucets leak, but it’s the emptiness that sings',\n", - " 'the wind grows chill and then lies still',\n", - " 'forty miles from nowhere',\n", - " 'at the bottom of the world',\n", - " 'november sky’s a diamond-studded dome',\n", - " 'a hundred billion points of light to guide my way back home',\n", - " 'when the moon is hanging fat and full and all those jangly stars recede',\n", - " 'a fold out couch on a midnight porch is where my footsteps lead',\n", - " 'you always said i made my bed',\n", - " 'forty miles from nowhere',\n", - " 'at the bottom of the world',\n", - " 'friends don’t call like they used to',\n", - " 'for reasons not unkind',\n", - " 'if there’s anything that we can do',\n", - " 'rings hollow down a telephone line',\n", - " 'there’s a cedar grove in back of the house maybe halfway down the hill',\n", - " 'a place to go and just lay low when we have some time to fill',\n", - " 'a few gravestones, a pre-civil war fence and the random arrowhead',\n", - " 'it\\'s where the beehive swarmed three summers ago, \"too wet\" the old men said',\n", - " 'so it’s me your, little lap dog and that old brindle cat trying to keep this place in line',\n", - " 'and heading into town these days is the last thing on my mind',\n", - " 'i weep for you, it’s what i do',\n", - " 'forty miles from nowhere',\n", - " 'at the bottom of the world',\n", - " 'forty miles from nowhere',\n", - " 'at the bottom of the world',\n", - " 'a short time i have to be with you my love',\n", - " 'but a short time is better than no time you see',\n", - " 'so i bring to you all my posessions and would that you share them with me',\n", - " 'i bring one springtime of robins one springtime of robins to sing',\n", - " 'i bring you one summer of roses one summer of roses i bring',\n", - " 'i bring you the dry leaves of autumn dry leaves will be helpful you know',\n", - " 'to soften the fall of your snowflakes when i bring you your winter of snow',\n", - " 'this looks like a december day this looks like a time to remember day',\n", - " 'and i remember a spring such a sweet tender thing',\n", - " \"and love's summer college where the green leaves of knowledge\",\n", - " 'were waiting to fall with the fall',\n", - " 'and where september wine numbed a measure of time',\n", - " 'through the tears of october',\n", - " \"now november's over and this looks like a december day\",\n", - " \"this looks like a december day it's looks like we've come to the end of the way\",\n", - " \"and as my mem'ries race back to loves eager beginning\",\n", - " \"reluctant to play with the thoughts of the ending the ending that won't go away\",\n", - " \"and as my mem'ries race back to loves eager beginning\",\n", - " \"reluctant to play with the thoughts of the ending the ending that won't go away\",\n", - " 'and this looks like a december day',\n", - " \"somebody's gonna pay for the way that you walked on me\",\n", - " \"somebody's gonna pay for the way that you lied\",\n", - " \"somebody's gonna learn that something you just don't do to me\",\n", - " \"somebody's gonna pay for the way that i cried\",\n", - " 'the only way to get back at you is with someone new',\n", - " 'someone who can be there all the time',\n", - " \"i know it's wrong and assuring it's cruel\",\n", - " \"but i'm gonna break your heart the same way you did mine\",\n", - " \"somebody's gonna pay for the way that you walked on me\",\n", - " \"somebody's gonna pay for the way that you lied\",\n", - " \"somebody's gonna learn that something you just don't do to me\",\n", - " \"somebody's gonna pay for the way that i cried\",\n", - " 'never again will i ever depend on such a foolish thing',\n", - " 'no more will i show my hidden side',\n", - " 'i open my heart and i open my soul and i told you this',\n", - " 'and all you did was take me for a ride',\n", - " \"somebody's gonna pay for the way that you walked on me\",\n", - " \"somebody's gonna pay for the way that you lied\",\n", - " \"somebody's gonna learn that something you just don't do to me\",\n", - " \"somebody's gonna pay for the way that i cried\",\n", - " \"somebody's gonna pay for the way that you walked on me\",\n", - " \"somebody's gonna pay for the way that you lied\",\n", - " \"somebody's gonna learn that something you just don't do to me\",\n", - " \"somebody's gonna pay for the way that i cried\",\n", - " \"somebody's gonna pay for the way that you lied\",\n", - " \"i'm a wanderer i'll keep drifting on\",\n", - " \"can't see honey why you done me wrong\",\n", - " 'hard luck sure has got me',\n", - " \"i can't sleep a wink\",\n", - " \"i'll just have to face it from now on\",\n", - " 'chorus:',\n", - " \"sailing o'er the sea of dreams no one cares for me\",\n", - " \"and we're drifting oh so far apart\",\n", - " 'you slam the door of love on me',\n", - " 'and found a new daddy i could see',\n", - " 'by that unwanted sign upon your heart',\n", - " 'break (fiddle)',\n", - " \"seems i'm always on the losing end\",\n", - " 'your little game of love was just pretend',\n", - " 'i have learned the hard way',\n", - " 'it was plain to see',\n", - " 'you were nothing more than just a friend',\n", - " 'chorus:',\n", - " \"never thought you'd treat me so i can't understand\",\n", - " 'why you had to tear my world apart',\n", - " 'left me everything to lose',\n", - " 'and along with mean old blues',\n", - " 'that unwanted sign upon your heart',\n", - " 'break (steel - fiddle)',\n", - " 'maybe someday that old tide will turn',\n", - " 'and your ship will drift on back to me',\n", - " \"then i'll be the captain\",\n", - " 'you will be the crew',\n", - " 'you know how it feels to sit and yearn',\n", - " 'chorus:',\n", - " \"you may think you're doing fine and the world is yours\",\n", - " 'but you played an unfair game to start',\n", - " 'when you learn that love is blind',\n", - " \"you'll come back but then you'll find\",\n", - " 'an unwanted sign upon my heart',\n", - " 'a little kiss of freedom',\n", - " \"i'd forgotten how that tastes\",\n", - " 'a little room for breathing',\n", - " \"and then you're on your way\",\n", - " \"there's a million little reasons\",\n", - " 'for this smile on my face',\n", - " 'without those tears in my eyes',\n", - " \"i bet you'd hardly recognize\",\n", - " 'me, without you',\n", - " 'well, you left the cage door open',\n", - " 'and your pretty bird just flew',\n", - " 'and i never knew',\n", - " 'that i could fly so high',\n", - " 'and the sky could be this blue',\n", - " \"i can't believe it's real\",\n", - " 'so this is how it feels',\n", - " 'me, without you',\n", - " 'now i wake up early',\n", - " 'whole world feels new',\n", - " 'seems so strange to ask myself',\n", - " 'what do i want to do?',\n", - " \"now, i don't know this road i'm on\",\n", - " \"or where it's leading to\",\n", - " \"but i know i'm gonna be alright\",\n", - " 'the more i see, the more i like',\n", - " 'me, without you',\n", - " 'well, you left the cage door open',\n", - " 'and your pretty bird just flew',\n", - " 'and i never knew',\n", - " 'that i could fly so high',\n", - " 'and the sky could be this blue',\n", - " \"i can't believe it's real\",\n", - " 'so this is how it feels',\n", - " 'me, without you',\n", - " 'oh, you had me believing',\n", - " \"i didn't have the strength for leaving\",\n", - " 'but any fool could see',\n", - " \"i'm better off, just look at\",\n", - " 'me, without you',\n", - " 'well, you left the cage door open',\n", - " 'and your pretty bird just flew',\n", - " 'and i never knew',\n", - " 'that i could fly so high',\n", - " 'and the sky could be this blue',\n", - " \"i can't believe it's real\",\n", - " 'so this is how it feels',\n", - " \"i can't believe it's real\",\n", - " 'oh, so this is how it feels',\n", - " 'me, without you',\n", - " 'me, without you',\n", - " \"she was sneakin' up her sundress, showing off her tatty\",\n", - " 'she said, \"i like your ride, maybe you could be my caddy',\n", - " 'what you say you pick us up a six-pack of natty?\"',\n", - " 'aww nice',\n", - " 'she had a sweet little southern twang',\n", - " 'said, \"we don\\'t have to talk about forever things',\n", - " 'for tonight maybe we could just hang like a pair of dice\"',\n", - " \"said, whatever girl, you know i'm down\",\n", - " \"i was thinkin' we could crush this town\",\n", - " 'like a beer can in a truck bed',\n", - " 'on a slow ride in the sunset (hey)',\n", - " \"bouncin' down a small town street\",\n", - " \"let's pop the top right off this thing\",\n", - " \"i need a cold drink 'cause you're a hot mess\",\n", - " 'let the night do what it does best (hey)',\n", - " 'shake me up and baby turn me loose',\n", - " 'i just wanna roll around with you',\n", - " 'like a beer can in a truck bed',\n", - " 'i said, \"girl you got your shades on, looking like you\\'re famous',\n", - " 'we could turn this little one horse into vegas',\n", - " \"holdin' you is like i'm holdin' all the aces\",\n", - " 'i can\\'t lose\"',\n", - " 'she said, \"come on, boy, pour it on\"',\n", - " \"she didn't know that i was already gone\",\n", - " 'like a beer can in a truck bed',\n", - " 'on a slow ride in the sunset (hey)',\n", - " \"bouncin' down a small town street\",\n", - " \"let's pop the top right off this thing\",\n", - " \"i need a cold drink 'cause you're a hot mess\",\n", - " 'let the night do what it does best (hey)',\n", - " 'shake me up and baby turn me loose',\n", - " 'i just wanna roll around with you',\n", - " 'like a beer can in a truck bed',\n", - " 'yeah',\n", - " 'i said, \"whatever girl, you know i\\'m down',\n", - " 'i was thinkin\\' we could crash this town\"',\n", - " 'like a beer can in a truck bed',\n", - " 'on a slow ride in the sunset',\n", - " \"bouncin' down a small town street\",\n", - " \"let's pop the top right off this thing\",\n", - " \"i need a cold drink 'cause you're a hot mess\",\n", - " 'let the night do what it does best',\n", - " 'shake me up and baby turn me loose',\n", - " 'i just wanna roll around with you',\n", - " 'like a beer can in a truck bed (hey)',\n", - " 'i just wanna roll around with you',\n", - " 'like a beer can in a truck bed',\n", - " 'i just wanna roll around with you',\n", - " 'hey babe, i just wanna get down with you',\n", - " 'hey babe, i just wanna roll around with you',\n", - " 'hey babe, i just wanna get down with you',\n", - " 'hey babe, i just wanna roll around with you',\n", - " 'like a beer can in a truck bed',\n", - " \"and he'll tell her he's working late again\",\n", - " \"but she knows too well there's something going on\",\n", - " \"she's been neglected, and she needs a friend\",\n", - " 'so her trembling fingers dial the telephone',\n", - " 'lord, it hurts her doing this again',\n", - " \"he's the best friend that her husband ever knew\",\n", - " \"when she's lonely, he's more than just a friend\",\n", - " \"he's the one she longs to give her body to\",\n", - " 'daytime friends and nighttime lovers',\n", - " 'hoping no one else discovers',\n", - " 'where they go, what they do, in their secret hideaway',\n", - " 'daytime friends and nighttime lovers',\n", - " \"they don't want to hurt the others\",\n", - " 'so they love in the nighttime',\n", - " 'and shake hands in the light of day',\n", - " \"when it's over, there's no peace of mind\",\n", - " 'just a longing for the way things should have been',\n", - " 'and she wonders why some men never find',\n", - " 'that a woman needs a lover and a friend',\n", - " 'daytime friends and nighttime lovers',\n", - " 'hoping no one else discovers',\n", - " 'where they go, what they do, in their secret hideaway',\n", - " 'daytime friends and nighttime lovers',\n", - " \"they don't want to hurt the others\",\n", - " 'so they love in the nighttime',\n", - " 'and shake hands in the light of day',\n", - " 'daytime friends and nighttime lovers',\n", - " 'hoping no one else discovers',\n", - " 'where they go, what they do, in their secret hideaway',\n", - " 'daytime friends and nighttime lovers',\n", - " \"they don't want to hurt the others\",\n", - " 'so they love in the nighttime',\n", - " 'and shake hands in the light of day',\n", - " 'daytime friends and nighttime lovers',\n", - " 'hoping no one else discovers',\n", - " 'where they go, what they do, in their secret hideaway',\n", - " 'daytime friends and nighttime lovers',\n", - " \"they don't want to hurt the others\",\n", - " 'so they love in the nighttime',\n", - " 'and shake hands in the light of day',\n", - " \"i know i don't want her\",\n", - " \"i swear that's a fact\",\n", - " 'but the thought of somebody else',\n", - " 'rubbing her back just kills me',\n", - " 'oh, it kills me',\n", - " \"i know she don't love me\",\n", - " \"i know she ain't home\",\n", - " 'so why in the hell do i',\n", - " 'pick up this phone and call her',\n", - " 'why do i call her?',\n", - " \"i've dropped by her mama's\",\n", - " 'stoned out of my mind',\n", - " \"just to hear that it's over\",\n", - " 'from her one more time',\n", - " \"as if i didn't see that red chevy\",\n", - " 'not slowing down, loaded down',\n", - " 'and rolling down our road',\n", - " \"yeah, she's already left\",\n", - " \"so why can't i leave her alone?\",\n", - " \"i've wrote her letters\",\n", - " 'signed i was a fool',\n", - " 'she wrote me back saying',\n", - " 'go find a stool and drink one',\n", - " \"like you've always done\",\n", - " \"so that's what i did\",\n", - " \"'cause that's what i do\",\n", - " 'backsliding, hiding away',\n", - " 'from the truth until the tears run',\n", - " 'oh, here comes one',\n", - " \"i've dropped by her mama's\",\n", - " 'stoned out of my mind',\n", - " \"just to hear that it's over\",\n", - " 'from her one more time',\n", - " \"as if i didn't see that red chevy\",\n", - " 'not slowing down, loaded down',\n", - " 'and rolling down our road',\n", - " \"yeah, she's already left\",\n", - " \"so why can't i leave her alone?\",\n", - " \"i've dropped by her mama's\",\n", - " 'stoned out of my mind',\n", - " \"just to hear that it's over\",\n", - " 'from her one more time',\n", - " \"as if i didn't see that red chevy\",\n", - " \"not slowing down or turnin' 'round\",\n", - " \"or loaded down headin' out of town\",\n", - " 'and rolling down our road',\n", - " \"she's already left\",\n", - " \"so why can't i leave her alone?\",\n", - " \"i know i don't want her\",\n", - " \"i swear that's a fact\",\n", - " 'but the thought of somebody else',\n", - " \"rubbin' her back just kills me\",\n", - " 'i could go back to every laugh',\n", - " \"but i don't wanna go there anymore\",\n", - " 'and i know all the steps up to your door',\n", - " \"but i don't wanna go there anymore\",\n", - " 'talk to the wind, talk to the sky',\n", - " 'talk to the man with the reasons why',\n", - " 'and let me know what you find',\n", - " \"i'll leave my window open\",\n", - " \"'cause i'm too tired at night to call your name\",\n", - " \"just know i'm right here hoping\",\n", - " \"that you'll come in with the rain\",\n", - " 'i could stand up and sing you a song',\n", - " \"but i don't wanna have to go that far\",\n", - " \"and i, i've got you down, i know you by heart\",\n", - " \"and you don't even know where i start\",\n", - " 'talk to yourself, talk to the tears',\n", - " 'talk to the man who put you here',\n", - " \"and don't wait for the sky to clear\",\n", - " \"i'll leave my window open\",\n", - " \"'cause i'm too tired at night to call your name\",\n", - " \"just know i'm right here hoping\",\n", - " \"that you'll come in with the rain\",\n", - " \"i've watched you so long, screamed your name\",\n", - " \"i don't know what else i can say\",\n", - " \"but i'll leave my window open\",\n", - " \"'cause i'm too tired at night for all these games\",\n", - " \"just know i'm right here hoping\",\n", - " \"that you'll come in with the rain\",\n", - " 'i could go back to every laugh',\n", - " \"but i don't wanna go there anymore\",\n", - " \"well blue ain't the word for the way that i feel\",\n", - " \"there's a storm that's brewing in this heart of mine\",\n", - " \"this ain't no crazy dream but i know that it's real\",\n", - " \"that's why i'm so lonesome all the time\",\n", - " 'crazy arms that reach to hold somebody new',\n", - " \"while my aching heart keeps saying you're not mine\",\n", - " \"this is no crazy dream but i know that it's real\",\n", - " \"but now i'm so lonesome all the time\",\n", - " \"so please take the treasured dreams i've had for you and me\",\n", - " 'and take all the love i thought was mine',\n", - " \"'cause someday my troubled arms may hold somebody new\",\n", - " \"but now i'm so lonely all the time\",\n", - " 'crazy arms that reach to hold somebody new',\n", - " \"while my aching heart keeps saying you're not mine\",\n", - " \"my troubled mind knows soon to another you'll be wed\",\n", - " \"and that's why i'm so lonesome all the time\",\n", - " 'there is a place i know, way down in mexico',\n", - " 'high in the old sierra madre',\n", - " 'where many an outlaw band from across the rio grande',\n", - " 'have found a haven, a holdout, a hideaway',\n", - " 'but danger rides with those who stray upon this secret hideaway',\n", - " 'where death is sure to welcome anyone within the law',\n", - " \"but if a man must run, from any lawman's gun\",\n", - " \"he'll find compadres in the old sierra madres\",\n", - " \"deep in the dark of night, beside the campfire's light\",\n", - " 'they weave the tales of the lives of the bandits',\n", - " 'of jewels rare and old, of coaches filled with gold',\n", - " 'holdups pulled off like they planned it',\n", - " 'but danger rides with those who stray upon this secret hideaway',\n", - " 'where death is sure to welcome anyone within the law',\n", - " \"but if a man must run, from any lawman's gun\",\n", - " \"he'll find compadres in the old sierra madres\",\n", - " \"deep in the dark of night, beside the campfire's light\",\n", - " 'they weave the tales of the lives, of the bandits',\n", - " 'of jewels rare and old, of coaches filled with gold',\n", - " 'holdups pulled off just like they planned it',\n", - " 'but danger rides with those who stray upon their secret hideaway',\n", - " 'where death is sure to welcome anyone within the law',\n", - " \"but if a man must run from any lawman's gun\",\n", - " \"he'll find compadres in the old sierra madres\",\n", - " 'there is a place i know, way down in mexico',\n", - " 'high in the old sierra madres',\n", - " 'where many an outlaw band from across the rio grande',\n", - " 'have found a haven, a holdout, a hideaway',\n", - " 'but danger rides with those who stray upon their secret hideaway',\n", - " 'where death is sure to welcome anyone within the law',\n", - " \"but if a man must run from any lawman's gun\",\n", - " \"he'll find compadres in the old sierra madres\",\n", - " \"but if a man must run from any lawman's gun\",\n", - " \"he'll find compadres in the old sierra madres\",\n", - " 'many years ago in days of childhood i used to play until evening time would come',\n", - " 'then winding down an old familiar pathway i hear my mother call at setting sun',\n", - " \"come home, come home it's suppertime\",\n", - " 'the shadows lengthen fast',\n", - " \"come home, come home it's suppertime\",\n", - " \"we're going home at last\",\n", - " 'some of the fondest memories of my childhood are woven around suppertime. when mother used to call from the back steps of the old homeplace, \"come on home now son, it\\'s suppertime.\" my how i\\'d love to hear that once again. but you know time has woven for me a realization of a truth that\\'s even more thrilling. that soon we\\'ll be called together around the great supper table up there for the greatest suppertime of them all with our lord. i can almost hear the call now coming through the portals of heaven, \"come home son, it\\'s suppertime. come on home.\"',\n", - " \"come home, come home it's suppertime\",\n", - " 'the shadows lengthen fast',\n", - " \"come home, come home it's suppertime\",\n", - " \"we're going home at last\",\n", - " 'through the distant clouds i see my mother',\n", - " 'her face is shining bright, with tender love',\n", - " \"she's gone up in heaven, with her maker\",\n", - " 'and i can still hear her voice, from up above',\n", - " '(and she said)',\n", - " \"come home, come home it's suppertime\",\n", - " 'the shadows lengthen fast',\n", - " \"come home, come home it's suppertime\",\n", - " \"we're going home at last\",\n", - " 'we started out and life was perfect',\n", - " 'i never thought our love would change',\n", - " 'but years of ups and downs made a difference',\n", - " \"it's not the same as it was yesterday\",\n", - " \"i don't treat you like i used to\",\n", - " \"you don't look the same into my eyes\",\n", - " 'we thought the best would be behind us',\n", - " 'but the best keeps getting better all the time',\n", - " 'we learned how to love and how to make up',\n", - " 'and found what it takes to be enough',\n", - " 'like a 30-year-old wine hearts intertwined',\n", - " 'the best keeps getting better all the time',\n", - " 'i love you now more than ever',\n", - " 'and you appreciate me more today',\n", - " 'melted together, hearts and minds',\n", - " 'the best keeps getting better all the time',\n", - " 'we learned how to love and how to make up',\n", - " 'and found what it takes to be enough',\n", - " 'like a 30-year-old wine, hearts intertwined',\n", - " 'the best keeps getting better all the time',\n", - " 'like a 30-year-old wine, hearts intertwined',\n", - " 'the best keeps getting better all the time',\n", - " 'the best keeps getting better all the time',\n", - " '(candy kisses wrapped in paper)',\n", - " 'candy kisses wrapped in paper mean more to you than any of mine',\n", - " \"candy kisses wrapped in paper you'd rather have 'em any old time\",\n", - " \"you don't mean it when you whisper those sweet love words in my ear\",\n", - " 'candy kisses wrapped in paper mean more to you than mine do dear',\n", - " '(oh candy kisses wrapped in paper mean more to you than any of mine',\n", - " 'candy kisses wrapped in paper)',\n", - " \"once my heart was filled with gladness now there's sadness only tears\",\n", - " 'candy kisses wrapped in paper mean more to you than mine do dear',\n", - " 'mean more to you than mine do dear',\n", - " '(candy kisses)',\n", - " \"i'm again\",\n", - " \"goin' places that i've already been\",\n", - " 'what started and lasted so long',\n", - " 'ended in the end so wrong',\n", - " \"wakin' next to somebody new\",\n", - " \"holdin' on to mem'ries of you\",\n", - " \"filled with the lonliest feelin'\",\n", - " \"that's achin' to leave\",\n", - " 'some fine day',\n", - " 'some fine day',\n", - " \"i'm again\",\n", - " \"goin' places that i've already been\",\n", - " 'what started so long',\n", - " 'ended in the end so wrong',\n", - " \"wakin' to the rain comin' down\",\n", - " \"wishin' i were far from this town\",\n", - " \"filled with the loneliest feelin'\",\n", - " \"that's achin' to leave\",\n", - " 'some fine day',\n", - " 'some fine day',\n", - " 'some fine day',\n", - " 'some fine day',\n", - " \"think it's 'bout that time to go\",\n", - " 'oh, i just need to get away',\n", - " \"ain't no right or wrong my darlin'\",\n", - " 'out on that open highway',\n", - " 'been so much backwards, and forwards, and backwards with you',\n", - " \"you say that, i say that, she said it's true\",\n", - " \"i don't wanna think about the things we go through\",\n", - " \"i'd rather drive out and take in the view\",\n", - " 'just wanna cruise',\n", - " 'for the rest of the night',\n", - " 'under the moon',\n", - " \"nothin' else on my mind\",\n", - " \"and i got my top down drivin'\",\n", - " \"and i got my top down drivin'\",\n", - " \"and i got my top down drivin'\",\n", - " \"and i got my top down drivin'\",\n", - " \"ayy! and i got my top down drivin'\",\n", - " \"ain't nothin' personal\",\n", - " \"i ain't about to go astray\",\n", - " \"well i just need a minute darlin'\",\n", - " \"i'll be back before the day\",\n", - " 'been so much backwards, and forwards, and backwards with you',\n", - " \"you say that, i say that, she said it's true\",\n", - " \"i don't wanna think about the things we go through\",\n", - " \"i'd rather drive out and take in the view\",\n", - " 'just wanna cruise',\n", - " 'for the rest of the night',\n", - " 'under the moon',\n", - " \"nothin' else on my mind\",\n", - " \"and i got my top down drivin'\",\n", - " \"and i got my top down drivin'\",\n", - " \"and i got my top down drivin'\",\n", - " \"and i got my top down drivin'\",\n", - " \"ayy! and i got my top down drivin'\",\n", - " 'can you do me a favor?',\n", - " \"let's just talk about it later\",\n", - " \"i ain't gonna get in your way, no!\",\n", - " \"'cause for the rest of the day, oh!\",\n", - " \"i'ma have my top down drivin'\",\n", - " \"i'ma have my top down drivin'\",\n", - " \"i'ma have my top down drivin'\",\n", - " \"and i got my top down drivin'\",\n", - " \"i'ma have my top down drivin'\",\n", - " \"driving, driving, driving (i'ma have my top down drivin')\",\n", - " \"driving, driving, driving (i'ma have my top down drivin')\",\n", - " \"driving, driving, driving (and i got my top down drivin')\",\n", - " \"ayy! and i got my top down drivin'\",\n", - " \"a simple man, my father's son\",\n", - " \"i know this place, it's where i'm from\",\n", - " \"but i don't know these streets when i'm with you\",\n", - " 'something in this night',\n", - " 'changing everything i thought i knew',\n", - " \"i've never seen this part of me\",\n", - " \"haven't lost my mind\",\n", - " 'tell me that you see, that you see',\n", - " 'the moon leaned down to kiss your lips',\n", - " 'the starlight falling at you fingertips',\n", - " 'the morning sun just waiting to rise',\n", - " 'aching for the moment he can look in your eyes',\n", - " \"the shadow scatter 'cause it can't compete\",\n", - " 'with the heart of the night falling at your feet',\n", - " \"and i'm holding on in all this heat\",\n", - " \"with all my might, it's like the whole world\",\n", - " \"the whole world's in love with you tonight\",\n", - " 'way down here, deep down inside',\n", - " 'hope is born, where dreams collide',\n", - " \"i'm a lucky man, i have just one breath\",\n", - " 'and my heart to give',\n", - " 'but even though it scares me half to death',\n", - " \"no one's ever seen this part of me\",\n", - " \"from this moment on, i swear i'll always see\",\n", - " \"i'll always see\",\n", - " 'the moon leaned down to kiss your lips',\n", - " 'the starlight falling at you fingertips',\n", - " 'the morning sun just waiting to rise',\n", - " 'aching for the moment he can look in your eyes',\n", - " \"the shadow scatter 'cause it can't compete\",\n", - " 'with the heart of the night falling at your feet',\n", - " \"and i'm holding on in all this heat\",\n", - " \"with all my might, it's like the whole world\",\n", - " \"yeah, the whole world's in love with you tonight\",\n", - " 'yeah, the moon leaned down to kiss your lips',\n", - " 'and the starlight falling at you fingertips',\n", - " 'the morning sun just waiting to rise',\n", - " 'aching for the moment he can look in your eyes',\n", - " \"the shadow scatter 'cause it can't compete\",\n", - " 'with the heart of the night falling at your feet',\n", - " \"and i'm holding on in all this heat\",\n", - " \"with all my might, it's like the whole world\",\n", - " \"yeah, the whole world's in love with you tonight\",\n", - " 'cry one more time for you',\n", - " 'i really got it bad',\n", - " 'cry one more time for you',\n", - " \"i've lost the best i had\",\n", - " 'everything is gone wrong',\n", - " 'i need another beer',\n", - " \"she's got her mind on leavin'\",\n", - " \"that's what i'm doing here\",\n", - " \"ain't no sense to talk to you\",\n", - " \"i don't know what i'd say\",\n", - " \"ain't no sense to argue\",\n", - " \"so i just don't wanna stay\",\n", - " 'cry one more time for you',\n", - " 'i really got it bad',\n", - " 'cry one more time for you',\n", - " \"i've lost the best i had\",\n", - " 'so sad, to be a lonely night (whoa!)',\n", - " \"so sad, it didn't work out right\",\n", - " 'cry one more time for you',\n", - " 'i really got it bad',\n", - " 'cry one more time for you',\n", - " \"i've lost the best i had\",\n", - " 'i try to call the last night (yes, i do)',\n", - " \"i knew she wasn't here\",\n", - " \"i don't wanna go uptown\",\n", - " \"i know she'll be with him\",\n", - " 'cry one more time for you',\n", - " 'i really got it bad',\n", - " 'cry one more time for you',\n", - " \"i've lost the best i had\",\n", - " \"i've lost the best i had...\",\n", - " 'i try to crush it like the ashes of a cigarette',\n", - " \"i try to smother out the embers, but i just can't quit\",\n", - " \"if there's a way to put it out, i haven't found it yet\",\n", - " \"haven't found it yet\",\n", - " \"it's like a habit, it's a craving running through my veins\",\n", - " \"it's an obsession, an addiction that i can't explain\",\n", - " \"if i give up everything, there's one thing that'll still remain\",\n", - " \"it'll never change\",\n", - " \"'cause i can't stop\",\n", - " \"no, i can't stop\",\n", - " \"no, i can't stop loving you\",\n", - " 'i try to pour it out like whiskey running down the drain',\n", - " \"it's like trying to empty out a river in an endless rain\",\n", - " \"i've just accepted that resisting is a losing game\",\n", - " \"there's no other way\",\n", - " \"'cause i can't stop\",\n", - " \"no, i can't stop\",\n", - " \"no, i can't stop loving you\",\n", - " \"i can't stop loving you\",\n", - " \"i can't, i can't, i can't\",\n", - " 'baby, even if i wanted to',\n", - " \"i can't stop\",\n", - " \"no, i can't stop\",\n", - " \"no, i can't stop\",\n", - " \"i can't stop\",\n", - " \"no, i can't stop\",\n", - " \"no, i can't stop loving you\",\n", - " \"i can't stop\",\n", - " \"no, i can't stop\",\n", - " \"no, i can't stop\",\n", - " \"no, i can't stop\",\n", - " \"no, i can't stop\",\n", - " \"no, i can't stop loving you\",\n", - " 'every reason why every other guy ran away',\n", - " 'is every reason why you love me and why you stay',\n", - " \"yeah, i'm rough edges, fit together\",\n", - " \"you're the missing piece you know i need\",\n", - " \"we'll be dirt flyin' running together\",\n", - " 'like two untamed mustangs',\n", - " \"baby, you're wild as me\",\n", - " 'my once in a lifetime made up same kind of crazy',\n", - " 'i wanna every song sang, every song rhymes',\n", - " 'when you hold me tight it sets me free',\n", - " 'i think i, i found somebody wild as me',\n", - " 'all the times our two worlds run separate ways',\n", - " \"then the times they take us home, ain't it sweeter baby?\",\n", - " \"we're both hard to love, but with us it's easy\",\n", - " 'i live life in the fast lane',\n", - " \"baby, you're wild as me\",\n", - " 'my once in a lifetime made up same kind of crazy',\n", - " 'i wanna every song sang, every song rhymes',\n", - " 'when you hold me tight it sets me free',\n", - " 'i think i, i found somebody wild as me',\n", - " \"baby, you're wild\",\n", - " \"it's made for me\",\n", - " \"'cause baby you're wild, wild as me\",\n", - " \"baby, you're wild as me\",\n", - " 'my once in a lifetime made up same kind of crazy',\n", - " 'i wanna every song sang, every song rhymes',\n", - " 'when you hold me tight it sets me free',\n", - " \"i can't believe i found somebody wild as me\",\n", - " \"baby, you're wild as me\",\n", - " 'well the covey took wing',\n", - " 'shotguns a-singing',\n", - " 'a pointing dog down in the old logging road',\n", - " 'and danny got three and looked back a-grinning',\n", - " 'i fumbled around and i tried to reload',\n", - " 'the country was cold with the sun westward sinking',\n", - " \"it's good to be back in this place\",\n", - " 'with my hands around a belgian made browning',\n", - " 'my mind on the lines of her face',\n", - " \"well now danny's my buddy\",\n", - " 'we grew up like family',\n", - " 'hunted this timber before we could drive',\n", - " 'and the old english pointer, he once belonged to me',\n", - " \"but i give him up when i moved in '05\",\n", - " 'off with a girl',\n", - " 'off to the city',\n", - " 'off on a wing and a chance',\n", - " \"hell, i thought it'd play out just like some story\",\n", - " 'we fell in love at a rodeo dance',\n", - " 'she said, \"go on back to cherokee county',\n", - " 'won\\'t you crawl back with nothing but a razor and a comb\"',\n", - " 'says, \"babe, if you need me i\\'ll be where you found me',\n", - " 'go on to hell, honey, i\\'m headed home\"',\n", - " 'dan says, \"look at ol\\' jim',\n", - " 'a dozen decembers behind him no worse for the wear',\n", - " 'and your time spent in tulsa did not help your shooting',\n", - " 'and look at the gray in your hair',\n", - " 'how good does it feel?',\n", - " 'you belong in these hills',\n", - " \"it's best that you let it all end\",\n", - " \"if you'd married that girl, you'd have married her family\",\n", - " 'you dodged a bullet my friend\"',\n", - " ...]},\n", - " 'denmark': {'meta': {'train_data': ['(yeaaa)',\n", - " 'chip tha rip, ray cash',\n", - " 'smoke something',\n", - " \"i said i'm chillin'\",\n", - " \"sittin' on about a quarter million\",\n", - " 'all my niggas, all my guns, all my women',\n", - " \"i'm trippin', i'm sittin'\",\n", - " \"i'm workin' in the kitchen\",\n", - " '100 pounds to the ceiling',\n", - " 'bought an ak and a clip hold a million',\n", - " 'damn i mean a billion',\n", - " \"when you smell the loud in the place you know we in the buildin'\",\n", - " 'chip said fuck niggas',\n", - " 'and fuck how they feeling',\n", - " \"fuck keepin' it a hundred word to pimp\",\n", - " 'i keep it trillion',\n", - " 'drop that shit bitch',\n", - " 'hands high',\n", - " 'drop that shit bitch',\n", - " 'she got that ass',\n", - " 'damn, drop that shit bitch',\n", - " 'yeah, drop that, drop that shit bitch',\n", - " 'to the floor bitch',\n", - " 'yeah, my dap is worth 100 raps',\n", - " 'where them bad bitches at',\n", - " 'drop that ass and run it back',\n", - " 'she onstage goin ham like she hope i see her',\n", - " 'well they do that at',\n", - " 'shit, right over here',\n", - " 'haters gimme cold mugs like dentine',\n", - " 'but nevertheless the 40 cal up in these slim jeans',\n", - " 'you niggas hoes',\n", - " \"we don't owe you nada\",\n", - " 'you niggas mad i push out something cold for the summer',\n", - " \"she chose me that means she don't think she too cute\",\n", - " 'do what you want',\n", - " \"don't wait for what you want to do you\",\n", - " 'now its some ladies over here and some women over there',\n", - " \"there's some hoes in this house bad bitches everywhere\",\n", - " 'drop that shit bitch',\n", - " 'hands high',\n", - " 'drop that shit bitch',\n", - " 'she got that ass',\n", - " 'damn, drop that shit bitch',\n", - " 'yeah, drop that, drop that shit bitch',\n", - " 'to the floor bitch',\n", - " \"i perforate my verses straight 6 o'clock\",\n", - " 'reverberate the verbs, surround the noun, ground the pound the starting block',\n", - " 'martyrs on the rocks disengaged i threw them over',\n", - " \"cliffside, from hangman's bluff that's their brains on heavy boulders\",\n", - " 'ready the soldiers up, parascope, red october',\n", - " 'elves and ogres, and hell raisers to focus',\n", - " 'on pin head, a thin thread, is what holds your life together',\n", - " 'nas measure anatomy',\n", - " 'take pleasure in the taxidermy',\n", - " 'your raps whack poetic',\n", - " 'you rap whack pathetic',\n", - " 'leave you in a house of wax like a museum figure deadened',\n", - " 'strike a match, melt a candle',\n", - " 'blend the ammo with the cammo',\n", - " 'then go * with my famo, its like third rail to *',\n", - " 'prevail make you read braille',\n", - " 'and eat nails, and swallow glass',\n", - " \"remain anonymous like rass kass, life's a blast\",\n", - " 'at total recall, you speak in hallow holograms',\n", - " 'my tidal wave fire even drown the likes of auquaman',\n", - " 'we the last of our breed',\n", - " 'the actors with masters degrees',\n", - " 'im a raptor, attack than ill feed',\n", - " 'and after i capture the last of these thieves',\n", - " \"you’ll hear laughter, i'm back on my path let me breathe\",\n", - " 'dastardly deeds, inglorious bastards, notorious masters',\n", - " 'the last of our breed we are bastards indeed',\n", - " 'the last we will smash till you have to believe',\n", - " 'yeah, i love god, he has made me very lethal',\n", - " \"destroy evil, i don't really like people\",\n", - " \"never met an animal i didn't like, couldn't bite\",\n", - " 'smash a rapper into pieces when i hit a mic',\n", - " 'equip a baseball bat thats full of wooden spikes',\n", - " 'walking down the dim-lit street call me the hooded knight',\n", - " 'i drop a match and set a tank full of petroleum',\n", - " 'then moonwalk across lemoniun, its pandemonium',\n", - " 'battle plan is that of an apache resistance',\n", - " 'imagining ten dragons with flags in the distance',\n", - " 'skull and double axes',\n", - " 'troubled brother action',\n", - " 'ninjas doing double back flips, on that shit',\n", - " 'social distortion, black flags faction',\n", - " 'bad brained wasted youth have interaction',\n", - " 'punk-rock mind-state, hair dyed leopard print',\n", - " 'fresh like peppermint, darker than a second tint',\n", - " 'we the last of our breed',\n", - " 'the actors with masters degrees',\n", - " 'im a raptor, attack than ill feed',\n", - " 'and after i capture the last of these thieves',\n", - " \"you’ll hear laughter, i'm back on my path let me breathe\",\n", - " 'dastardly deeds, inglorious bastards, notorious masters',\n", - " 'the last of our breed we are bastards indeed',\n", - " 'the last we will smash till you have to believe',\n", - " \"yeah i'm the product of narcotics\",\n", - " 'exotic drugs and raw ebonics',\n", - " \"anti-social on grandma's antibiotics\",\n", - " 'smoking hydroponics',\n", - " 'bumping ladi-dadi while a 20 year old hottie on my dick doing pilates',\n", - " 'like piper, i stay rowdy, rowdy',\n", - " 'you in a diaper on a tricycle, trying to keep up with a mazerati',\n", - " 'every beat catching a body, see me dancing on a cop car',\n", - " 'strapped with c4, screaming out allah akbar',\n", - " \"ain't got a fear of death, i'm more afraid of livin slow\",\n", - " 'so i stay driven till my goal is met, or till i lose control',\n", - " \"nobody here could save me i'm completely out my mind\",\n", - " 'the only ones that doubt me are completely fucking blind',\n", - " 'we the last of our breed',\n", - " 'the actors with masters degrees',\n", - " 'im a raptor, attack than ill feed',\n", - " 'and after i capture the last of these thieves',\n", - " \"you’ll hear laughter, i'm back on my path let me breathe\",\n", - " 'dastardly deeds, inglorious bastards, notorious masters',\n", - " 'the last of our breed we are bastards indeed',\n", - " 'the last we will smash till you have to believe',\n", - " 'not knowing where to begin is not a feeling that’s rare',\n", - " 'every weekend it’s like a phase to me',\n", - " 'you talk during the week there wasn’t saying face-to-face to me',\n", - " 'it’s not like i care',\n", - " 'they still gassed',\n", - " 'i urge ’em to drive slow',\n", - " 'free smoke with something hot in the air',\n", - " 'we are a collective of thinkers',\n", - " \"at this point it's just waves\",\n", - " 'mccoy got me blackin’',\n", - " 'couch dreams on the way',\n", - " 'i feel like i need 20 chains',\n", - " \"i can't pardon my ways\",\n", - " \"i'm not sure if i'm changing or if i'm changing my ways\",\n", - " 'need conversations with moms',\n", - " \"'cause last year wasn't easy for me\",\n", - " 'she bring out my light',\n", - " 'she was there when the city saw it',\n", - " \"don't worry baby, we did that, yeah\",\n", - " 'rough patches through past years',\n", - " 'but came back, 17 of absence',\n", - " 'i lost track of what matters, but tell harlem all cash on',\n", - " \"black seven-teen in the casino with some tings, sippin' drinks\",\n", - " 'same colour, miss cherry red beamer',\n", - " 'sitting sideways',\n", - " 'star city amnesia',\n", - " 'nothing but roundabouts to traphouses',\n", - " \"we touched down so i might as well rap 'bout it\",\n", - " 'soon twenty-four, 20 a floor with the view',\n", - " \"bedroom for the visuals and it's just like we imagined\",\n", - " 'mix the magnum with the soda',\n", - " \"sippin' on jamaican, eating yard food\",\n", - " 'scernz rollin’ in, shouts out to court too',\n", - " \"flow of the century like i'm court two\",\n", - " 'jheeze',\n", - " 'loud already gone, i thought bought two, gs',\n", - " 'black on black, secret empire cover my top',\n", - " 'back to back, g wagons when we in new york',\n", - " 'benny told me wise up, tshh',\n", - " 'say nothing my dawg',\n", - " 'still off the henny, you no like that',\n", - " \"sexy nigga, shit i can't pree\",\n", - " 'where my eyes at?',\n", - " 'still bad bs on me daily',\n", - " 'what my life like',\n", - " 'watch them if they keep a dodgy gaze',\n", - " 'where your eyes at?',\n", - " 'shady niggas in our section wanna eavesdrop and so game',\n", - " \"it's a shame to see the admiration really come from fear\",\n", - " 'then they talk about it being my year',\n", - " \"i feel you're sad to say it\",\n", - " \"and you're sad to say it\",\n", - " 'you will feel it once you’ve seen it clear',\n", - " 'if your vibe is off i won’t keep you near',\n", - " 'shit',\n", - " \"they got me rappin' like semih here\",\n", - " 'to tell the truth he one of the few that really care, yeah',\n", - " 'still one-ten on my ten toes',\n", - " \"in the summer, should have did the timbs 'cause it’s still cold\",\n", - " 'arsenal on my trackies, huh',\n", - " \"i'm in some runners tho\",\n", - " 'heat like miami, they’re some different gunners',\n", - " 'look',\n", - " 'i used to run man city like mancini',\n", - " \"runnin' with the mask got me years like my man biggie\",\n", - " \"and i'm still in the field like grass really\",\n", - " 'where you can get killed for the cash quickly',\n", - " 'look',\n", - " \"you're going (to) heel like achilles\",\n", - " 'last receipt threw you like the 5-50-glass ceiling',\n", - " 'feel me',\n", - " \"wild pree, 'ow you mean? 'ow you mean?\",\n", - " 'came up living door-to-door with every member of my team',\n", - " 'the gas is so real, it’s a movie every evening',\n", - " 'told uzi, \"pray for me\" ’cause these days are really needed',\n", - " \"i've been slippin' on my deen\",\n", - " 'keep dealin’ to the fiends',\n", - " 'i’ve been drinking like a teen lately, yeah',\n", - " 'and all i see is money in dreams lately',\n", - " 'look',\n", - " \"bro, you gassed, you ain't yard\",\n", - " \"you and your dawgs lookin' like some girly queens lately\",\n", - " \"i'm tryna put plaques on my wall\",\n", - " 'went from racks on my drawers to stacks on my card',\n", - " \"i can tell you 'bout that swipe life\",\n", - " \"macbook in jail, i can tell you 'bout that skype life\",\n", - " \"i'm trynna do the track ysl\",\n", - " 'listening to timber while i roll another l',\n", - " 'inhale, exhale',\n", - " 'i see you move dodgy',\n", - " \"and i don't want no parts of that\",\n", - " \"i'm chillin' all nodgic\",\n", - " \"gettin' spins like laundromat\",\n", - " 'roll me up the super',\n", - " 'pour me up some future',\n", - " 'then i swerve up in the uber',\n", - " 'all you niggas doofus',\n", - " 'all you niggas goofy',\n", - " \"long clip that's a movie, huh\",\n", - " 'all she want is “do you”, huh',\n", - " 'shout out my producer, huh',\n", - " 'boy i’m on a wave',\n", - " 'i give a fuck ‘bout what they say',\n", - " 'and i tell it to their face',\n", - " 'i’m tryna spend a couple band on fuckery',\n", - " 'i’m tryna up my money, put my moms onto this luxury',\n", - " 'this some real shit, i can’t pree that',\n", - " 'can’t pretend, it’s for real',\n", - " \"don't tell p that, imma be there when you need that\",\n", - " \"not on some ''see you'' when i see you, best believe that\",\n", - " \"and if you don't believe me, just watch\",\n", - " \"i dead ops if it's war, redd foxx\",\n", - " 'i got your back like dreadlocks',\n", - " 'shorty say my rappin’ make the thugs come down all the way from up top',\n", - " 'to where they shootin’ downtown',\n", - " 'pour another one, i need the',\n", - " 'only thing i’m focused on is working hard and staying blessed',\n", - " 'all you niggas busters',\n", - " 'do not to be trusted',\n", - " \"i’m the youngest nigga rappin' so you better up the budget\",\n", - " 'b.o.c. mafia that home court advantage',\n", - " 'benched up at a weight game and still doing damage',\n", - " 'ray allen with the step back in the water',\n", - " 'five, i’m going for the three if i want to',\n", - " 'steady at the buzzer like they ordered',\n", - " 'shorty tried to escape, but i caught her like my last name',\n", - " 'i’m just getting started',\n", - " 'but i’m really past fame, niggas ain’t got no game',\n", - " 'all they do is argue ‘bout who get my jersey post-game',\n", - " 'jheeze',\n", - " \"i guess i'm loony, i guess i'm on one\",\n", - " \"guess i'm just a star of my movie\",\n", - " \"they say i'm the chosen, and so it goes\",\n", - " \"i'm supposed to live and grow old and die alone\",\n", - " 'talking to myself in the mirror',\n", - " 'take one to know one',\n", - " 'can we talk, just loony to loony?',\n", - " 'how strange the notion',\n", - " \"you don't really know no one\",\n", - " 'and what if i told you',\n", - " 'you no longer know me',\n", - " 'you better keep going and keep it rolling now',\n", - " \"ain't no thing, you don't really need me\",\n", - " 'the pressure is growing',\n", - " 'hard times they mold you',\n", - " 'into someone way colder',\n", - " 'let the world see how you win',\n", - " 'no matter how you seem to them',\n", - " \"fuck 'em\",\n", - " \"fuck 'em\",\n", - " \"fuck 'em\",\n", - " \"fuck 'em\",\n", - " \"and people think i'm mad (or on one)\",\n", - " \"then won't you tell them i'm mad, solar\",\n", - " 'all the things that bother me',\n", - " \"ain't no other way i can be\",\n", - " \"and people think i'm mad (or on one)\",\n", - " \"then won't you tell them i'm mad, solar\",\n", - " 'm.a.d. s.o.l.a.r',\n", - " \"and people think i'm mad (or on one)\",\n", - " \"then won't you tell them i'm mad, solar\",\n", - " 'all the things that bother me',\n", - " \"ain't no other way i can be\",\n", - " \"oh, and people think i'm mad (or on one)\",\n", - " \"then won't you tell them i'm mad, solar\",\n", - " 'm.a.d. s.o.l.a.r',\n", - " \"i guess i'm loony, i guess i'm on one\",\n", - " 'guess i got to finish my movie',\n", - " \"see my heart has been swollen, it's healing slow\",\n", - " \"hope i don't live to grow old, no one at home\",\n", - " 'staring at myself in the mirror, take one to know one',\n", - " \"want to find out 'bout the real me?\",\n", - " 'certain moments reveal you',\n", - " 'especially friends who were never good friends',\n", - " 'but want to act like they know me',\n", - " 'you better keep going and keep on strolling',\n", - " \"it's so crazy how you think you can play me\",\n", - " \"show them pussies you're growing\",\n", - " 'hard times, they mold you',\n", - " 'to the haters, i told you',\n", - " 'let the world see how you win',\n", - " 'no matter how you seem to them',\n", - " \"fuck 'em\",\n", - " \"fuck 'em\",\n", - " \"fuck 'em\",\n", - " \"fuck 'em\",\n", - " \"and people think i'm mad (or on one)\",\n", - " \"then won't you tell them i'm mad, solar\",\n", - " 'all the things that bother me',\n", - " \"ain't no other way i can be\",\n", - " \"and people think i'm mad (or on one)\",\n", - " \"then won't you tell them i'm mad, solar\",\n", - " 'm.a.d. s.o.l.a.r',\n", - " \"and people think i'm mad (or on one)\",\n", - " \"then won't you tell them i'm mad, solar\",\n", - " 'all the things that bother me',\n", - " \"ain't no other way i can be\",\n", - " \"and people think i'm mad (or on one)\",\n", - " \"then won't you tell them i'm mad, solar\",\n", - " 'm.a.d. s.o.l.a.r',\n", - " \"oh, she's got me screaming for more\",\n", - " 'damn, she can blow, get your knees on the floor',\n", - " \"and let's go, let's see how deep i can go\",\n", - " 'i wanted to blow my load, but i thought \"no\"',\n", - " 'i try',\n", - " 'yea i try',\n", - " 'i try, i try',\n", - " \"she says i only call her when i'm faded\",\n", - " \"when i'm faded\",\n", - " \"she says i only call her when i'm faded\",\n", - " 'i would call her right now',\n", - " \"but i'm faded\",\n", - " \"yea i'm faded and i try, yea i try\",\n", - " \"i try to call her when i'm sober\",\n", - " 'like, i should call her over',\n", - " \"but i only ever call her when i'm faded\",\n", - " \"cause i only think about her when i'm faded\",\n", - " 'yea i smoke, i drink',\n", - " \"i'm supposed to quit, i can't\",\n", - " 'cause when i sit and think i just draw a blank',\n", - " 'but when i, smoke the swisher get gone off the liquor',\n", - " \"that's when i start painting pictures and they so vivid\",\n", - " 'like you would swear that you there',\n", - " \"that's why i put it on the table and i leave it there\",\n", - " \"like old clothes in the closet that i don't never wear\",\n", - " \"ain't cause they cheap or nothing, and it ain't deep or nothing\",\n", - " \"it's like i work so hard, like i don't sleep or nothing\",\n", - " 'i swear i see it coming, i can see the people loving',\n", - " 'i can feel it in the air like the energy',\n", - " \"and no white pair of air's like they memories\",\n", - " 'that mean star bubbles',\n", - " 'niggas stealing, more trouble',\n", - " 'i do all my own stunts, no stunt double',\n", - " \"pump your brakes lil' nigga\",\n", - " \"you like punk metal, i'm on the next level\",\n", - " 'i try, i try',\n", - " \"and i don't know why\",\n", - " \"cause i ain't even got the time\",\n", - " 'but i try, i try, i try',\n", - " \"and i don't even lie\",\n", - " \"cause i ain't got the time, no, no\",\n", - " \"she says i only call her when i'm faded\",\n", - " \"when i'm faded\",\n", - " \"i told her right now how i'm faded\",\n", - " \"got to call her up cause i'm faded\",\n", - " \"yea i'm faded, i'm faded\",\n", - " 'and i try, i try, i try',\n", - " 'i try, i try',\n", - " \"but i'm hardly ever sober\",\n", - " 'still wanna call you over',\n", - " 'yea, i still wanna call you over',\n", - " \"she says i only call her when i'm faded\",\n", - " \"and i'm faded\",\n", - " \"i swear to god right now, i'm faded\",\n", - " 'i try',\n", - " 'beat switch',\n", - " 'so can we get faded?',\n", - " 'and forget for just a little bit baby',\n", - " 'can we get faded?',\n", - " 'and forget for just a little bit baby',\n", - " 'she says she miss me like the desert miss the rain',\n", - " 'or a soldier misses home when that bullet miss his brain',\n", - " 'or how a locked up nigga miss a benzo and a chain',\n", - " 'such a god damn shame, but fuck it',\n", - " \"y'all don't hear me tho\",\n", - " \"it's bourbon, it's champagne and have a toast\",\n", - " 'pull up for the good times and have a smoke',\n", - " 'spend time with the people that matter most',\n", - " \"cause people out here dying and it's not a joke\",\n", - " \"i'm a have wifey and some hoes at my funeral\",\n", - " 'everybody getting faded like the liquor flow',\n", - " 'but no tears, the boy with no fears',\n", - " \"the reason i'm still here to smile and say cheers\",\n", - " 'gold bottles, we is',\n", - " 'celebrating with yours truly, sincere',\n", - " 'sliding and riding, lets disappear',\n", - " 'so can we get faded?',\n", - " 'and forget for just a little bit baby',\n", - " 'can we get faded?',\n", - " 'and forget for just a little bit baby',\n", - " 'you and i',\n", - " 'should stop wasting time',\n", - " 'cause you the one i want',\n", - " 'look at her she could be ma super boo',\n", - " 'in a room crazy, sexy, cool',\n", - " 'intellectually sexy, her body is sick, her face is dope',\n", - " 'somethin like a eye candy photo',\n", - " \"hope to god the broad ain't a ho though\",\n", - " 'the way she walks is in slow-mo',\n", - " 'yep, ma mind got tee-vo',\n", - " 'every punk truck around',\n", - " 'plotting and scheming, wishing and dreaming',\n", - " 'jus for a little nano second to holla at her quick',\n", - " \"tryin' to holla for her name\",\n", - " 'yellow bone with a tan like damn',\n", - " 'smile at me, so i smile right back',\n", - " \"she move so effortless complimentin' her looks\",\n", - " \"i be commentin' up in her book\",\n", - " 'you can be my super boo-oo-oo',\n", - " 'you can be my super boo, i need you',\n", - " \"to come and chill wit me c'mon\",\n", - " 'one, two, check it',\n", - " 'mad views on her myspace shit',\n", - " 'just stoppin by, showing her love, while she sits',\n", - " 'and all her friends are hot, but not like her she the number one spot',\n", - " 'all i wanna do is really introduce scott',\n", - " 'let her know my dreams and struggles to the top',\n", - " 'show her, that it feels good in a drop top',\n", - " \"rollin down sunset niggas can't stop\",\n", - " 'i can tell that she really got her mind right',\n", - " \"let me make that move when the time's right\",\n", - " \"hope she don't mind a little limelight\",\n", - " \"you can't go wrong let's get right\",\n", - " 'and we gon let them other niggas stomp it out',\n", - " \"next step ye we gon' talk it out\",\n", - " \"i hop hotels 'til the next flight\",\n", - " 'i think about you cause your so right',\n", - " 'you can be my super boo-oo-oo',\n", - " 'you can be my super boo, i need you',\n", - " \"to come and chill wit me c'mon\",\n", - " 'one, two, check it',\n", - " '(lalalaalaaalaaa)',\n", - " 'i know you probably like a lil stand offish',\n", - " 'but just take my hand though',\n", - " 'and save my world baby',\n", - " 'come ride with me',\n", - " \"let me get it, okay i got it she's so hot move so erotic\",\n", - " 'take her to cancun fly supersonic',\n", - " 'grown and sexy love gin & tonic',\n", - " 'askin questions like where you from?',\n", - " \"i ain't gonna tell you you should just come\",\n", - " 'take that journey beyond the clouds',\n", - " \"let's leave reality truth be told\",\n", - " 'yeh baby girl this the code',\n", - " 'come be ma roadie backstage at shows',\n", - " 'i can tell that them other niggas did you cold',\n", - " 'but am a hot nigga with the heat for sure',\n", - " \"i ain't fittin like a scarf in the summer\",\n", - " 'am misemplyin and i need you in the summer',\n", - " 'layin on top me enjoying your company',\n", - " \"am runnin out of issue (can't understand) when i kiss you\",\n", - " 'you can be my super boo-oo-oo',\n", - " 'you can be my super boo, i need you',\n", - " \"to come and chill wit me c'mon\",\n", - " 'one, two, check it',\n", - " 'do you ever notice that in the bible',\n", - " 'whenever god had to punish someone',\n", - " 'make an example, or ever god needed killing, he sent an angel?',\n", - " 'do you ever wonder what a creature like that must be like?',\n", - " 'the whole existence with god, always being the one dipped in blood',\n", - " 'is it possible that god does not like you?',\n", - " 'he never wanted you',\n", - " 'in all probability he hates you!',\n", - " \"if we are god's unwanted children then so be it!\",\n", - " 'listen',\n", - " 'is it all as it seems',\n", - " 'so unresolved so unredeemed',\n", - " 'if i really, how will i know?',\n", - " \"i'm no martian\",\n", - " \"i'm no goblin\",\n", - " \"i'm no vampire\",\n", - " \"i'm no problem\",\n", - " \"i'm nothing more just a figment with a force\",\n", - " 'that recognize all my thoughts',\n", - " \"that realize i'm of awe\",\n", - " 'a long history',\n", - " 'historic files a mystery',\n", - " 'the truth shall be told',\n", - " 'the time is now',\n", - " 'they cover up cover-ups to cover us',\n", - " \"and there's a price on your soul of every fuckin' one of us\",\n", - " \"a all goin' war drugs, money religion\",\n", - " \"and the niggas in my hood don't want to hear it they fear it\",\n", - " 'a cold criminal, gat by the genital',\n", - " 'pussy by the centerfold, ravishing indigo',\n", - " 'appealing matter, nifty camper with a witty camp',\n", - " 'of niggas that’ll peal through niggas without any issue',\n", - " 'the green in my lungs the tab on my tongue',\n", - " 'unravel my gun, my mind is my gun',\n", - " 'in the land beyond living',\n", - " 'all things are possible',\n", - " \"it's insane to think this really all started from a molecule\",\n", - " \"now i'm fuckin' unstoppable\",\n", - " 'my past, it was hard to do',\n", - " \"now my future's remarkable (ha ha ha ha)\",\n", - " \"fuck fame nigga, can't you see the bigger picture?\",\n", - " 'sold your soul to the devil well at least you got three wishes',\n", - " 'young, witty, pompous, arrogant, malicious',\n", - " \"blowin' kisses to the devil as i formulate these vivid lyrics\",\n", - " 'screen motion picture shit',\n", - " \"while i'm standing idle, fuck a title\",\n", - " 'rather american psycho than american idol',\n", - " 'chop a clip, reload the clip, barrel hits',\n", - " 'like a vinyl, the universe is my shit',\n", - " 'knew it since i was a zygote',\n", - " \"this shit i'm spittin' got your head spinnin' like an exorcism\",\n", - " 'when i was young i fought authority',\n", - " 'and reject religion, learned to see from every angle',\n", - " 'never regret decisions at times i feel like fuck religion',\n", - " 'because religion is division',\n", - " \"ho, that's simple math, ho\",\n", - " \"go head and fuckin' add, ho\",\n", - " 'yes, jesus loves me',\n", - " 'yes, jesus loves me',\n", - " 'yes, jesus loves me',\n", - " 'for the bible tells me so',\n", - " 'me mommy love me, like she love her nappy head',\n", - " 'she sang me fables, when she used to wrap me dreads',\n", - " 'she said me look like me grandpappy, now he dead',\n", - " 'he never met me, but he loved me, yeah he did',\n", - " 'he was a king, before me ma became a queen',\n", - " 'they killed him dead, because he tried to stop the war',\n", - " 'me momma love me, like the song that she sings',\n", - " 'but i think she loves me just a little bit more',\n", - " 'little bit less, then little bit more',\n", - " \"hourglass, sand's timeless through my trough\",\n", - " 'let it wash me away',\n", - " \"dive into a fifth of the j, mo', sip it slow\",\n", - " 'stone cold nights, warm days',\n", - " \"days don't break, they fade away\",\n", - " 'faced my watch, then face a j',\n", - " 'faking it takes my pain away',\n", - " 'be a fatality, killed my salary',\n", - " 'dreams shattering, trunk rattling',\n", - " 'drug dabbling, dabble or dab',\n", - " 'bought a battery, energy, gpen',\n", - " 'g when we go see this salary',\n", - " \"set a time bomb, 'til i blow up\",\n", - " 'like the matrix, in the zion',\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my blades swing and chop (chop)',\n", - " 'them subwoofers knock (knock)',\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " 'yeah dat me, yeah dat right',\n", - " \"so throwed off the drank that i'm outta sight\",\n", - " \"pushin' buttons caddy corner crushin'\",\n", - " \"cluckin', bussas they claim they wanna fuck tonight\",\n", - " \"ridin' dirty, super tight\",\n", - " 'i put the pressure on the lesser when she on the lights',\n", - " 'dark skinned nigga with a playa voice',\n", - " \"have y'all thinkin' i'm barry white\",\n", - " \"pop up twice i ain't trippin' on nothin'\",\n", - " \"tires on rotation and the bass still buzzin'\",\n", - " \"old school whip with the a/c cuttin'\",\n", - " \"calibrate the navigation, bitch don't touch it\",\n", - " \"hit the flo', you bet i get the flo'\",\n", - " 'i got bands to spend, you got twat to show',\n", - " \"you can bop for gold, but i'm grain grippin'\",\n", - " \"trunk shakin' like a stripper pole came with it\",\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my blades swing and chop (chop)',\n", - " 'them subwoofers knock (knock)',\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " 'my car candy painted, my house sit on a hill',\n", - " 'i never was a square, i always worked the wheel',\n", - " \"always had them boppers, ridin' on some choppas\",\n", - " 'parking lot warfare, my trunk go blocka blocka',\n", - " 'they way i beat the bass, wassup? might catch a case',\n", - " 'broke another bank and put it in they face',\n", - " \"ever since i rolled up with the doors on transforma'\",\n", - " 'four done poured up, niggas had to hate',\n", - " \"wheels on chrome, i had to slow my four's up\",\n", - " \"cuz them potholes deep and i can't let them scrape\",\n", - " \"i let my tape knock, 'til my tape pop\",\n", - " 'tell them motherfuckers that i got that bass',\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my blades swing and chop (chop)',\n", - " 'them subwoofers knock (knock)',\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"i said of course i'mma show my grill, and show my ass\",\n", - " 'i came on this earth in 87, pussy nigga check my past',\n", - " 'been a real nigga ever since, ride around the a with my nigga named tay',\n", - " \"beatin' down them fuckin' blocks, from conley road to moreland a\",\n", - " \"nigga don't talk you ain't bout dat life\",\n", - " 'drop top chevy with the bow tie pipes',\n", - " 'let that chevy breathe on em',\n", - " 'when you pull up to that light',\n", - " 'hit the gas and watch that chevy pop an ollie',\n", - " 'half these young niggas on rims',\n", - " 'but my chevy sit on rallys',\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my trunk pussy pop (pop)',\n", - " 'them hoes down to bop (bop)',\n", - " 'my blades swing and chop (chop)',\n", - " 'them subwoofers knock (knock)',\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " \"show yo' grill ho\",\n", - " 'she take a shot of hennessy',\n", - " 'i take a shot of pimp c and slow up',\n", - " 'i do this shit for him and me',\n", - " \"i'm the next lone star to blow-up\",\n", - " 'picture being locked in a box',\n", - " \"selling beats 'cause you need dollars\",\n", - " 'they say i can make it to the league, mama',\n", - " '500 dollars all we need, mama',\n", - " \"then we gon' be on\",\n", - " 'tired of seeing the lights off',\n", - " \"pops heatin' up the stove\",\n", - " \"was close to stealing and killing, now just to get 'em on\",\n", - " 'couple drinks down of rosé',\n", - " \"i'm tipsy, y'all faces done look like an emoji\",\n", - " 'the rav4 turned into a rover',\n", - " \"'til it took flight and ended up on the shoulder\",\n", - " 'now our money a little longer',\n", - " \"lookin' back how we finnesin', we ain't know shit\",\n", - " 'they gave me three, got twenty five on the low',\n", - " 'who knew that lump sum would get me on?',\n", - " 'my fifteen seconds last a little longer, longer',\n", - " 'i can shit all day, diaper',\n", - " 'call that eat-all-day; itis',\n", - " 'will i ever fall off? i doubt it',\n", - " 'no, no, no, no',\n", - " \"all these diamonds shinin'\",\n", - " 'all this gold on me, all these foes on us',\n", - " 'how do i dodge these zombies?',\n", - " 'they want my soul from me',\n", - " \"know that i'm gone, but one thing:\",\n", - " 'they will never catch me',\n", - " 'falling off, falling off',\n", - " 'never catch me falling off',\n", - " 'falling off, never catch me',\n", - " 'falling off, falling off',\n", - " 'never catch me falling off, falling off',\n", - " '(oohh, ohh, oohh) right',\n", - " '(oohh, ohh, oohh) right',\n", - " '(oohh, ohh, oohh)',\n", - " 'yeah',\n", - " 'uh, uh, yeah',\n", - " 'say it louder, say it louder',\n", - " \"who's gonna love you like me, like me?\",\n", - " 'say it louder, say it louder',\n", - " \"who's gonna touch you like me, like me?\",\n", - " \"ooh, said you wanna be good, but you couldn't keep your composure\",\n", - " \"ooh, said you wanna be good, but you're begging me to come over\",\n", - " 'ooh, come over, ooh',\n", - " \"saying, who's gonna fuck you like me? yeah\",\n", - " \"i don't wanna hurt you, but you live for the pain\",\n", - " \"i'm not tryna say it, but it's what you became\",\n", - " \"you want me to fix you, but it's never enough\",\n", - " \"s'why you always call me, cause you're scared to be loved\",\n", - " \"but i'll always be there for you, i'll always be there for you\",\n", - " \"i'll always be there for you, girl, i have no shame (shame)\",\n", - " \"i'll always be there for you, i'll always be there for you\",\n", - " \"i'll always be there for you, girl, i have no shame (shame)\",\n", - " 'say it louder, say it louder',\n", - " \"who's gonna love you like me, like me? yeah\",\n", - " 'say it louder, say it louder',\n", - " \"who's gonna touch you like me, like me?\",\n", - " \"ooh, said it'd be the last time, all you needed was a little closure\",\n", - " \"ooh, said it'd be the last time, but you're begging me to come over\",\n", - " 'ooh, come over, ooh',\n", - " \"saying, who's gonna fuck you like me? hey\",\n", - " \"i don't wanna hurt you, but you live for the pain\",\n", - " \"i'm not tryna say it, but it's what you became\",\n", - " \"you want me to fix you, but it's never enough\",\n", - " \"s'why you always call me, cause you're scared to be loved\",\n", - " \"but i'll always be there for you, i'll always be there for you\",\n", - " \"i'll always be there for you, girl, i have no shame (shame)\",\n", - " \"i'll always be there for you, i'll always be there for you\",\n", - " \"i'll always be there for you, girl, i have no shame (shame)\",\n", - " \"who's gonna fuck you like— (hey! woo-ooh)\",\n", - " \"i don't wanna hurt you, but you live for the pain\",\n", - " \"i'm not tryna say it, but it's what you became (no)\",\n", - " \"you want me to fix you, but it's never enough (never enough)\",\n", - " \"s'why you always call me, cause you're scared to be loved (scared to be loved)\",\n", - " \"but i'll always be there for you, i'll always be there for you\",\n", - " \"i'll always be there for you (i'll always be there for you)\",\n", - " 'girl, i have no shame (shame)',\n", - " \"i'll always be there for you, i'll always be there for you\",\n", - " \"i'll always be there for you, girl, i have no shame (girl, i have no, shame)\",\n", - " 'no shame',\n", - " 'verse 1 (ricky hil)',\n", - " 'by the time i woke up, she was already gone',\n", - " \"how can you love me, if i'm alone\",\n", - " 'here i go on a road i never been on',\n", - " \"and i'm leaving you for everything you did wrong\",\n", - " \"i don't wanna go back to that same place\",\n", - " 'replay memories that i erased',\n", - " \"it's too bad, i'm irate\",\n", - " \"i've been getting real high at a high rate\",\n", - " 'my mom said she coming this friday',\n", - " \"until then im'a fly away\",\n", - " \"i don't want her to see me like i am now\",\n", - " \"this is nostra, this is devil's playground\",\n", - " 'pop a pill, play around take her down',\n", - " 'until shes making sounds',\n", - " 'i usually stay around',\n", - " 'a couple pounds and some lean',\n", - " 'a couple nightmares and some dreams',\n", - " \"it ain't what it seems\",\n", - " '(chorus)',\n", - " \"i know, you can't understand me\",\n", - " \"and i don't really care\",\n", - " \"if you can't stand me\",\n", - " 'two grams in my l, a bitch in my bed',\n", - " \"i'll prolly go to hell, won't be with you instead\",\n", - " 'for my ex if she wishing me well',\n", - " 'you can listen and tell',\n", - " 'verse 2 (boo bonic)',\n", - " \"aye i can't help it that sometime i get a chick\",\n", - " 'but like her friend, better',\n", - " \"how i'm doing, i've been better\",\n", - " 'enough said, thin letter',\n", - " \"can't help who you fuck with\",\n", - " \"can't choose who you stuck with\",\n", - " 'like huh who she come from',\n", - " 'wonder who i end up with',\n", - " \"my homies think it's fly yeah\",\n", - " 'me too but it jam though',\n", - " 'always get a little tricky',\n", - " 'when you fuck the fam though',\n", - " \"oh, that's fucked up\",\n", - " 'i pray no karma',\n", - " 'incase im draped in armor',\n", - " 'plus both are nice, fuck on the other hand though',\n", - " 'pop that, got ammo',\n", - " \"she a soldier, i'm in camo\",\n", - " 'a range of bad bitches, but they boxed in like',\n", - " \"land rov-er, did it occur, i'm that nigga\",\n", - " 'fuck with her, keep shit 1, zero zero per',\n", - " 'add that cent, bitch is you bent, huh',\n", - " '(chorus)',\n", - " \"i know, you can't understand me\",\n", - " \"and i don't really care\",\n", - " \"if you can't stand me\",\n", - " 'two grams in my l, a bitch in my bed',\n", - " \"prolly go to hell, won't be with you instead\",\n", - " 'from my ex if she wishing me well',\n", - " 'you can listen and tell',\n", - " 'verse 3 (ricky hil)',\n", - " \"it's dark out by the time i step out\",\n", - " \"i'm really losing it now\",\n", - " 'pain pills sleeping pills and tussin',\n", - " \"i've been abusing it now\",\n", - " \"and you don't know, how i've died\",\n", - " 'a million times, by your side',\n", - " 'and if we try, and if we lose',\n", - " 'how will i fight, past the bruise',\n", - " \"baby i know, that you're loose\",\n", - " 'baby i know what to do with you',\n", - " \"you don't even know what to do with me\",\n", - " 'every pretty broad had their way with me',\n", - " \"baby i'm thin, running thin here i go again\",\n", - " 'if they even really know',\n", - " \"they'd let a mutha fucka in\",\n", - " '(chorus)',\n", - " \"i know, you can't understand me\",\n", - " \"and i don't really care\",\n", - " \"if you can't stand me\",\n", - " 'two grams in my l, a bitch in my bed',\n", - " \"prolly go to hell, won't be with you instead\",\n", - " 'from my ex if she wishing me well',\n", - " 'you can listen and tell',\n", - " 'uhh baby (x2)',\n", - " 'blast off [uhh baby)',\n", - " \"it's the motherfucking time now\",\n", - " 'dug a deep ditch when i quit school, but this rapping shit helping me climb out',\n", - " 'me and chancellor, fuck you tahm bout',\n", - " \"village shittin' on niggas in time out\",\n", - " \"when im feeling this all that i rhyme 'bout\",\n", - " \"me and kembe grindin' in the grind house\",\n", - " 'asking where i wanna go, who i wanna be',\n", - " 'my life is nothing more than ripping all these beats',\n", - " \"and that's the way i want it im trippin'\",\n", - " \"of the weed and that im sippin' on at least you\",\n", - " 'tipping, fuck you mean',\n", - " 'gotta get mine, gotta fucking win',\n", - " 'gotta bring the village, i gotta represent it',\n", - " 'i gotta keep on pushing, gotta keep on working',\n", - " \"i can't stop yelling fuck though, i gotta keep on shittin'\",\n", - " 'all we wanna do is get money',\n", - " 'seem like errbody want some shit from me',\n", - " 'like put me on with this and hook me on with that',\n", - " 'find your way up off my dick homie',\n", - " 'remember i used to keep the sacks with me',\n", - " 'in the basement, watching that rap city',\n", - " 'niggas used to say i rap shitty, funny',\n", - " 'now them niggas want a track with me',\n", - " 'if my manager insults me again',\n", - " 'i will be assaulting him',\n", - " 'after i fuck the manager up',\n", - " \"then i'm going to shorten the register up\",\n", - " \"let's go back, back to the gap\",\n", - " \"look at my check, wasn't no scratch\",\n", - " \"so if i stole, wasn't my fault\",\n", - " 'yea i stole, never got caught',\n", - " '(x2)',\n", - " \"yea, they're going to do it on purpose man\",\n", - " \"it's going to be haters lurking\",\n", - " \"you know what i'm talking about?\",\n", - " 'wishing to see you fail',\n", - " 'but at the end of the day if you got god on your side',\n", - " 'why the fuck would you believe in hell',\n", - " \"you know what i'm talking about?\",\n", - " \"hate ain't shit but the devil\",\n", - " 'tell them motherfuckers to get up',\n", - " \"and get up on a whole 'nother motherfucking level\",\n", - " 'ism',\n", - " 'nasa,',\n", - " 'whole world wants to know what you crashed for,',\n", - " 'jag off, what you jag for',\n", - " 'im just doing what you assholes, had asked for',\n", - " 'when we going to home?',\n", - " 'my eyes hurt, my throat hurt, my soul hurt',\n", - " 'my whole church know my niggas on dirt',\n", - " \"lil' college dropout, blame it on ye'\",\n", - " \"lil' jimmy done grown up, he's slangin' them tapes\",\n", - " 'southside, out west, south by southwest',\n", - " \"doubt my prowess, i guess 'bout now i'm fresh\",\n", - " 'goodness gracious,',\n", - " 'visionary chasing, chance with a space and the',\n", - " 'then a pronoun, and the car spacious,',\n", - " 'and a spaceship for the spaceship like igh!',\n", - " '(2x)',\n", - " 'yea, always keep your ism at a magnificent level',\n", - " \"that it's true, know what i'm talking about?\",\n", - " \"i come to find out there's three type of people in the world\",\n", - " \"there's those that ask what happened\",\n", - " \"there's those that saw it happen\",\n", - " \"and then there's those that made it happen\",\n", - " 'and which one are you?',\n", - " 'cathedral.ism',\n", - " 'our father in heaven, hallowed be your name',\n", - " 'your kingdom come, you will be done',\n", - " 'on earth as it is in heaven',\n", - " \"got my chariot waitin'\",\n", - " \"you know i'm stayin' alive\",\n", - " 'be it heaven or hades',\n", - " 'you know i gotta survive',\n", - " 'swing low, swing low',\n", - " 'swing low, swing low',\n", - " 'keep my feet above everything',\n", - " \"yea, you know that i'm crazy\",\n", - " 'got my angels in full swing',\n", - " \"yea, nothin' can phase me\",\n", - " 'swing low, swing low',\n", - " 'swing low, swing low',\n", - " 'and i-oooooh-yea',\n", - " 'and i-oooooh-yea',\n", - " 'all these niggas rappers',\n", - " \"playin' rappers, greatest actors\",\n", - " 'me, i kept it humble',\n", - " 'me, i did it, this my greatest chapter',\n", - " 'written here where bodies lay',\n", - " 'mumified and on display',\n", - " 'zulu with the shackles',\n", - " \"freein' weapons be the up and keep\",\n", - " \"you gon' make me catch a body like them fuckin' rappers do\",\n", - " \"or you gon' make me have to make a record about fuckin' you\",\n", - " \"you gon' make me have to have these gold teeth and tattoos\",\n", - " \"you gon' make me have to crash mercedes, so i'm beggin' you\",\n", - " \"shut the ballin' late in dublin, purple fluid in my cup and\",\n", - " \"broken dreams and wet dreams, there's alcohol inside my gut\",\n", - " 'all you say is, \"fuck me better\"',\n", - " 'chicken grease up on my sweater',\n", - " \"fast food and bad mood's equivalent of hardly better\",\n", - " \"yea, i keep my 'fro intact\",\n", - " \"camel causin' heart attacks, bitches on my fuckin' lap\",\n", - " 'toe tags and handbags, the smell make my balls sag',\n", - " \"portraits of my mama's face, poppa knows i'm sayin' grace\",\n", - " 'this here be my only take',\n", - " \"got my chariot waitin'\",\n", - " \"you know i'm stayin' alive\",\n", - " 'be it heaven or hades',\n", - " 'you know i gotta survive',\n", - " 'swing low, swing low',\n", - " 'swing low, swing low',\n", - " 'keep my feet above everything',\n", - " \"yea, you know that i'm crazy\",\n", - " 'got my angels in full swing',\n", - " \"yea, nothin' can phase me\",\n", - " 'swing low, swing low',\n", - " 'swing low, swing low',\n", - " 'and i-oooooh-yea',\n", - " 'and i-oooooh-yea',\n", - " '93 my born date',\n", - " \"it's king\",\n", - " 'his penmanship will resonate and legacy deteriorate',\n", - " 'in such relay, yea',\n", - " \"don't stimulate, yea\",\n", - " 'just regulate, yea',\n", - " 'try to educate, yea',\n", - " 'will imitate, yea, yea, yea',\n", - " 'two big bricks for the low, you snake',\n", - " \"our dreams they came crashin' in\",\n", - " 'i was always born to win',\n", - " 'crack heads in dublin city',\n", - " 'love me, keep me covenant',\n", - " \"prayin' to my lover-hoe\",\n", - " \"she hold me down, i'm celibate\",\n", - " 'hallelujah, hallelujah, hallelujah',\n", - " 'now i\\'m prayin\\', \"hallelujah,\" that i\\'m not the shooter',\n", - " \"crashin' up, that record spinnin'\",\n", - " \"way before this rap been winnin'\",\n", - " \"y'all was steady pluckin' chickens\",\n", - " \"trophies in my mama's kitchen\",\n", - " 'champagne and lovely women fortify my old soul',\n", - " \"cause it's doin' numbers that i multiplied, i don't know\",\n", - " \"every single record i be cryin' at my old hoes\",\n", - " \"rejjie-this and rejjie-that, you fuckin' bitch, i hate y'all\",\n", - " \"got my chariot waitin'\",\n", - " \"you know i'm stayin' alive\",\n", - " 'be it heaven or hades',\n", - " 'you know i gotta survive',\n", - " 'swing low, swing low',\n", - " 'swing low, swing low',\n", - " 'keep my feet above everything',\n", - " \"yea, you know that i'm crazy\",\n", - " 'got my angels in full swing',\n", - " \"yea, nothin' can phase me\",\n", - " 'swing low, swing low',\n", - " 'swing low, swing low',\n", - " 'and i-oooooh-yea',\n", - " 'and i-oooooh-yea',\n", - " \"it won't be in vain\",\n", - " 'to swallow all your pain',\n", - " 'and learn to love what burns',\n", - " 'and gather courage to return to',\n", - " 'faces in the crowd',\n", - " 'faces in the crowd will smile again',\n", - " 'and the devil may cry',\n", - " 'the devil may cry at the end of the night',\n", - " 'faces in the crowd',\n", - " 'faces in the crowd will smile again',\n", - " 'and the devil may cry',\n", - " 'the devil may cry at the end of the night',\n", - " 'the light will shine through the rain',\n", - " 'and heaven will hear them call your name',\n", - " 'and home will feel like home again',\n", - " 'corruption will fill your brain',\n", - " 'faces in the crowd',\n", - " 'faces in the crowd will smile again',\n", - " 'and the devil may cry',\n", - " 'the devil may cry at the end of the night',\n", - " 'faces in the crowd',\n", - " ...]},\n", - " 'data': [\"diamond dust oooo it's so cold\",\n", - " \"she don't feel her face, and he don't feel his nose\",\n", - " \"d-d-d-diamond dust it'll leave you cold\",\n", - " 'where yo body heat? ooo now his feet is swoll',\n", - " 'd-d-d-diamond dust, living in this cold world',\n", - " \"fuckin with that china white, ooo that's his old girl\",\n", - " 'lookin for that new bitch, to make his toes curl',\n", - " 'dope bitch, fucking up his whole world!',\n", - " \"i'm so high as fucking hell, that i can kiss the sky\",\n", - " 'the devil tryna grip me, i can hear the angels cry',\n", - " 'that\\'s my momma and my auntie screaming \"you just a bunch of lies\"',\n", - " 'and my girl just caught me stealing, i just bought her the new iphone',\n", - " 'drugs are my new friends and they just getting tall',\n", - " 'my boss just caught me beaming, so you know that i got fired',\n", - " 'and my clothes is getting old and my hair used to be wavy',\n", - " 'shit, this the life of crack, when you growing up in the 80’s',\n", - " 'and i’ve been smoking, lord please help',\n", - " 'cause i’m going out of my mind',\n", - " 'i can hear my heart beat, think i’m running out some time',\n", - " 'where do i go from here, do i lay here and just die?',\n", - " 'i can see pearly gates, matter fact i’ve just changed my mind',\n", - " 'i don’t wanna go, go, think i’m going out of my mind',\n", - " 'i can hear my heart beat, think i’m running out some time',\n", - " 'where do i go from here, do i lay here and just die?',\n", - " 'i can see pearly gates, matter fact i’ve just changed my mind',\n", - " 'hi my name is becky, and i used to wanna be famous',\n", - " 'i sniffed away my brains, and the itches make me insane, oh',\n", - " 'and i used to hang with dana, used to party with the lakers',\n", - " 'used to travel with the indiana pacers',\n", - " \"i used to wanna cheer but they didn't wanna take us\",\n", - " \"cause now i'm faded, now my whole world is jaded\",\n", - " 'damn i thought i made it, living out my dreams',\n", - " 'but this whole time i was faking',\n", - " 'i was faking',\n", - " 'and this is what that diamond does',\n", - " 'and this is from that diamond dust',\n", - " 'and this is from that diamond dust',\n", - " 'and this is what that diamond does',\n", - " 'east west, over the ocean',\n", - " 'perpetual motion, traveling around',\n", - " 'no rest singing and playing',\n", - " 'night out and day in doing the rounds',\n", - " 'what a great life this must seem',\n", - " 'swelled joints, every thing classy',\n", - " 'nothing is tacky, only the best',\n", - " 'lush girls, older and dying',\n", - " \"sighing and crying, 'this is success'\",\n", - " 'what a great life this must seem',\n", - " 'but when i hear your voice singing out',\n", - " 'the bells of home are ringing out',\n", - " 'and i feel all alone',\n", - " '(and i think of my home)',\n", - " 'cold times a wind through the houses',\n", - " 'the bleakness arouses a longing to leave',\n", - " 'time flew, i wanted to see you',\n", - " 'somehow i could not do because of success',\n", - " 'what a strange life this can be',\n", - " 'but when i hear your voice singing out',\n", - " 'the bells of home are ringing out',\n", - " 'and i feel all alone',\n", - " '(and i think of my home)',\n", - " 'verse 1',\n", - " 'she comes by herself, brings us our gifts',\n", - " \"it's hard to tell, she leaves so swift\",\n", - " \"she don't love you, she don't love me\",\n", - " 'whoever she loves, that man must be free',\n", - " \"i don't know, maybe you do\",\n", - " 'what she be thinking, when she looks at you',\n", - " 'she sits on the floor, looks at the movie',\n", - " 'she gets high too, this girl is groovy',\n", - " \"i don't wanna, make you run\",\n", - " 'from all of us, we just have fun',\n", - " \"and we touch ya, but you don't let us fuck ya\",\n", - " \"she has good intentions, it's obvious to see\",\n", - " \"but who is this girl, why can't we see\",\n", - " 'what she would do, behind closed doors',\n", - " 'with you or with me',\n", - " \"why can't we see!\",\n", - " 'hook',\n", - " 'sarah, you like to keep me wondering',\n", - " 'sarah, you know you keep us wondering,',\n", - " 'verse 2',\n", - " \"she's sexy as she sounds\",\n", - " 'with her pretty little mouth',\n", - " 'and she likes to help around',\n", - " 'with little things in the house',\n", - " 'i wanna do things to her mouth',\n", - " \"she swear that ain't what she bout\",\n", - " 'i start to doubt, i start to figure her out',\n", - " 'sometimes i get to see your sister',\n", - " \"and i touched her, but i...i didn't get to fuck her, (or kiss her)\",\n", - " \"don't you know that we talk about you\",\n", - " 'me and my brothers want a...a piece of you',\n", - " 'whoa, pretty brown hair, how long do you plan on staying here',\n", - " \"she brought us drinks and food, she ain't never rude\",\n", - " 'can we share this woman, it would be wrong to keep her',\n", - " \"tell me why she wouldn't, can't she see that we need her\",\n", - " 'hook',\n", - " 'sarah, you like to keep me wondering',\n", - " 'sarah, you know you keep us wondering',\n", - " 'shoutout to fam-lay',\n", - " 'ugh',\n", - " 'when you think of boss niggas think of me',\n", - " \"cause if there's a stressin ain't no question at his side (spitta)\",\n", - " 'altough i conceal my identity',\n", - " 'beneath the louie v. scarf, niggas only see my eyes',\n", - " 'they know that nigga stuntin',\n", - " 'he be gettin money',\n", - " 'they know that nigga ballin',\n", - " 'the hoes he all fuckin',\n", - " 'they know that nigga famous',\n", - " 'they know that nigga blingin',\n", - " 'and they know the niggas i be with is too dangerous (fly society)',\n", - " 'ughhhh',\n", - " 'nigga skip all the bull shit',\n", - " \"red and black jordan number 1's, i'm on my bulls shit\",\n", - " 'hustle like grocery carts, you push it',\n", - " \"nigga spend good money on it if it's good shit\",\n", - " \"i'm on the set with young roddy on this hood shit\",\n", - " \"chillin like a villain, hope the popo don't ruin it\",\n", - " 'chicks dig what i spit, tell me to keep doin it',\n", - " 'chicks whipped by the dick, want me to keep doin it',\n", - " \"can't get what i get, i cop kicks numerous\",\n", - " 'limited editions, spitta shop for exclusiveness',\n", - " 'fuck fuckin with fuck boys and they fuckin foolishness',\n", - " 'got ya homies watchin ya back like a big booty bitch',\n", - " \"cause ya can't maneuver the mat without losin it\",\n", - " 'jack boys screamin on ya, makin ya move ya shit',\n", - " \"i might see two, but they don't reach in my cooler slick\",\n", - " 'try to catch a cold, ya catch an uzi clip',\n", - " 'yeaah!',\n", - " 'when you think of boss niggas think of me',\n", - " \"cause if there's a stressin ain't no question at his side (spitta)\",\n", - " 'altough i conceal my identity',\n", - " 'beneath the louie v. scarf, niggas only see my eyes',\n", - " 'they know that nigga stuntin',\n", - " 'he be gettin money',\n", - " 'they know that nigga ballin',\n", - " 'the hoes he off fuckin',\n", - " 'they know that nigga famous',\n", - " 'they know that nigga blingin',\n", - " 'and they know the niggas i be with is too dangerous',\n", - " 'ughhhh',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " 'spitter, spitta',\n", - " 'the band on my watch is ceramic',\n", - " 'bezzle got the same rocks that dropped the titanic',\n", - " 'people talk about him, word of mouth is gigantic',\n", - " 'rappers gettin worried, they just startin to panic',\n", - " \"hope ya didn't blow ya advance, you better manage\",\n", - " \"the few cents you got left, cause that's ya last chips\",\n", - " 'hot spitta no longer next, i am the present',\n", - " \"ya girl ask santa for me, cause i'm her present\",\n", - " 'telescope on the balcony, watching the planets',\n", - " \"telephone ringin, i'm too high to answer it\",\n", - " \"tell my homie bring me a pack of them ziz zags'\",\n", - " 'gonna be a high time like the fuckin magazine',\n", - " \"if ya song wack, i'll heal the cut, i'm bandaged\",\n", - " 'cluckers say one time, and the dope boys vanished',\n", - " \"like the joint i'm smokin right now, after the last hit\",\n", - " \"i'm toasted like a quiznos sandwich\",\n", - " 'spitta',\n", - " 'when you think of boss niggas think of me',\n", - " \"cause if there's a stressin ain't no question at his side (spitta)\",\n", - " 'altough i conceal my identity',\n", - " 'beneath the louie v. scarf, niggas only see my eyes',\n", - " 'they know that nigga stuntin',\n", - " 'he be gettin money',\n", - " 'they know that nigga ballin',\n", - " 'the hoes he off fuckin',\n", - " 'they know that nigga famous',\n", - " 'they know that nigga blingin',\n", - " 'and they know the niggas i be with is too dangerous',\n", - " 'ughhhh',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " 'there go that airplane... schooosh...',\n", - " '(kids voice: yooo, yoo, yoo)',\n", - " '(x4)',\n", - " 'i tell a little homie, this is life',\n", - " 'i tell these cute bitches, get right',\n", - " 'light a blunt for everybody, get high',\n", - " 'everything is gonna be alright',\n", - " \"i'm lyin' on a landslide\",\n", - " 'with a bag of california to smoke',\n", - " 'an ounce of shrooms for nature walks -',\n", - " 'and hide and toss invited some of my folks',\n", - " 'the ones that was here before the fame',\n", - " 'and blame the world for bringing us so close',\n", - " \"family's, build family trees, grow apple-trees\",\n", - " \"and that's what matters the most\",\n", - " '(west side)',\n", - " \"my stompin' ground, i'm stompin' round in my black vans\",\n", - " 'mellowhype on my jersey, tattoos on my black hands',\n", - " \"ridin' up in that chevrolet, smoke weed, everyday\",\n", - " 'rest in peace, to that nigga nate',\n", - " \"you fuck niggas, you can't relate\",\n", - " 'all my niggas up in this bitch',\n", - " \"reppin' golfwang, you ain't even know it\",\n", - " \"we smokin' on that bama-weed, you ain't even grow it\",\n", - " 'bitch im on your mind, tell me how it feel',\n", - " 'bitch im on your mind, tell me how it feel',\n", - " '(verse 1 repeated)',\n", - " 'i tell a little homie, this is life',\n", - " 'i tell these cute bitches, get right',\n", - " 'light a blunt for everybody, get high',\n", - " 'everything is gonna be alright',\n", - " 'king chip up in this ho',\n", - " 'fresh up out the liquor store',\n", - " \"swagging, if you didn't know\",\n", - " 'yeah, i bet them bitches know',\n", - " 'know a nigga straight up out the hood on wikipedia',\n", - " 'king chip you fucking looney all up in the media',\n", - " 'straight up out the ghetto with the knowledge of a oracle',\n", - " \"most these rap niggers is some ho's, how the story go\",\n", - " \"up until age 19, i was very po'\",\n", - " \"started selling raps moved right up out the ghetto fo'\",\n", - " \"st. clair ave, that's where you get your head bust\",\n", - " 'seen a lot of shit, when i was young i never said much',\n", - " 'only if i knew you, would i be all on some cool shit',\n", - " \"seen a lot of my nigga's dead on the pool pit\",\n", - " 'i could get my hands on the blam in a heartbeat',\n", - " 'only when you had no fear of death, do you start beef',\n", - " \"i'd seen some nigga's, getting hunted like some fucking deer\",\n", - " \"wonder why i have no heart, that's all i known for all my years\",\n", - " \"nigga's know, make it out my hood on some rap shit\",\n", - " 'therefore, i am legend living fantastic',\n", - " 'if you roll a nice one, motherfucker pass it',\n", - " 'light my air mags up before you drop the casket',\n", - " 'yeah, king chip',\n", - " 'if you roll a nice one, motherfucker pass it',\n", - " 'light my air mags up before you drop the casket',\n", - " 'glc, the ism is a visionary',\n", - " 'seen my face next to ism in the dictionary',\n", - " \"these pussy ass lames, they just can't compare me\",\n", - " \"my bitches they just don't complain when they gotta share me\",\n", - " 'i was 16 when i got a chevy',\n", - " 'came up from a pack to a fucking heavy',\n", - " 'gospel, talk to apostles',\n", - " 'who you know that knew that shit and fuck like costco',\n", - " 'i know, the truth will get you goofy niggas',\n", - " \"holding nigga's balls, y'all some groupie niggas\",\n", - " \"flexing and finessin', riding hoopty niggas\",\n", - " 'i be manifesting sushi nigga',\n", - " 'cool out, that silk shit i rule out',\n", - " 'chip got it cracking out in cleveland, so i flew out',\n", - " 'got these hoes going down low, like a lou out',\n", - " \"i'm about that money and the power, what is you 'bout\",\n", - " \"i'm balling' just like john walk\",\n", - " 'bitch, call me the wizard!',\n", - " 'couple years before, you know a nigga had that wizard',\n", - " 'white t from the corner store was my shizzurt',\n", - " 'breaking angles, cross serve, i know that it hizzurt',\n", - " 'fresh from the corner, smell the fiends i was chilling in',\n", - " 'i was smoking kush up in them hotels in michigan',\n", - " \"what'd you think i came from? lil niggas pressed for time\",\n", - " 'when you hear g speak, hurry up and press rewind',\n", - " \"all we do is cash checks, i be in them' bo jacks\",\n", - " 'ten in the rubber band, no less, i need 90 back',\n", - " \"mind of an old nigga, tell the ' is fully you\",\n", - " \"with your point guard ass, you ain't never try to shoot!\",\n", - " \"niggas saying won't you just play something that i'm nice\",\n", - " \"pussy niggas, what's your bet? nigga, i don't need the price\",\n", - " \"i keep it pittsburgh nigga, but it's weekend\",\n", - " 'chip said it got it popping, quit traffic to cleveland',\n", - " 'light my air, light my air mags up before you (repeats)',\n", - " 'light my air mags up before you drop the casket',\n", - " 'light my air, light my air mags up before you (repeats)',\n", - " \"i took your bitch, that's right\",\n", - " \"money keep coming, that's right\",\n", - " \"only ride foreign, that's right\",\n", - " \"whole team on, that's right\",\n", - " \"my niggas gon' ride, that's right\",\n", - " \"my niggas gon' shoot, not fight\",\n", - " 'whether wrong or right',\n", - " \"that's right, that's right\",\n", - " 'two clubs in one night',\n", - " '25 bands, one night',\n", - " 'kush up in that raw',\n", - " 'purple in that sprite',\n", - " 'them hoes in rotation',\n", - " 'money my motivation',\n", - " 'money make her cum',\n", - " \"and i'mma make her taste it\",\n", - " \"put it in the neck, i'ma make her gag on it\",\n", - " \"head in the 'rari, that's how you blow a hundred\",\n", - " 'hoes come and go',\n", - " \"i'ma fuck and then i want 'em\",\n", - " \"hoes like j's, wear 'em once then i don't want 'em\",\n", - " 'swerve, hit the corner, in the california',\n", - " 'running through these hoes, like i play for minnesota (a.p!)',\n", - " 'she turn off her phone, cause nigga you a sucker',\n", - " \"police ass niggas tellem' stop cuffin'\",\n", - " \"i took your bitch, that's right\",\n", - " \"money keep coming, that's right\",\n", - " \"only ride foreign, that's right\",\n", - " \"whole team on, that's right\",\n", - " \"my niggas gon' ride, that's right\",\n", - " \"my niggas gon' shoot, not fight\",\n", - " 'whether wrong or right',\n", - " \"that's right, that's right\",\n", - " \"that's right she posted in my whip\",\n", - " 'posted on my dick',\n", - " 'she supposed to be with her nigga',\n", - " 'but she posted with my clique',\n", - " 'right her posted in my whip',\n", - " 'posted on my dick',\n", - " 'she supposed to be in your work',\n", - " 'but she posted with my clique',\n", - " 'i told her, post up here',\n", - " 'i told her, post up here',\n", - " 'girl your face looking gorgeous',\n", - " 'and my cash is retarted',\n", - " 'need a 5 year plan, cause that ass is enormous',\n", - " 'they keep telling you to stop',\n", - " 'bet this cash make you want it',\n", - " 'girl quit acting you like shy',\n", - " 'grab this dick and jump up on it',\n", - " 'i was way out in new york',\n", - " 'we were smoking california',\n", - " \"she can't wait to tell her friends\",\n", - " 'talk about in the morning',\n", - " 'beat it like she stole it',\n", - " 'sleeping like she in a coma',\n", - " 'you just wish, she wanna be a fool',\n", - " 'think you control her',\n", - " \"couple grand in a rubber band, you know i'm the man\",\n", - " 'what you saying, baby what you saying',\n", - " \"tell me what's the plan\",\n", - " 'is you playin?, is that bitch a ten?',\n", - " 'bands will make her dance',\n", - " 'seen my ex, she was not a fan',\n", - " 'damn...',\n", - " \"i took your bitch, that's right\",\n", - " \"money keep coming, that's right\",\n", - " \"only ride foreign, that's right\",\n", - " \"whole team on, that's right\",\n", - " \"my niggas gon' ride, that's right\",\n", - " \"my niggas gon' shoot, not fight\",\n", - " 'whether wrong or right',\n", - " \"that's right, that's right\",\n", - " \"that's right she posted in my whip\",\n", - " 'posted on my dick',\n", - " 'she supposed to be with her nigga',\n", - " 'but she posted with my clique',\n", - " 'right her posted in my whip',\n", - " 'posted on my dick',\n", - " 'she supposed to be in your work',\n", - " 'but she posted with my clique',\n", - " 'i told her, post up here',\n", - " 'i told her, post up here',\n", - " 'yeah',\n", - " 'found found found',\n", - " 'found found found',\n", - " \"someone who's worth it\",\n", - " 'in this murkiness',\n", - " \"someone who's never\",\n", - " 'seeming scheming',\n", - " 'found found found',\n", - " 'found found found',\n", - " \"someone who's worth it\",\n", - " 'in this murkiness',\n", - " \"someone who's never\",\n", - " 'seeming scheming',\n", - " 'oh, but they were never found',\n", - " 'oh, but they were never found',\n", - " 'oh, but they were never found',\n", - " 'i do believe that',\n", - " 'the more you give your love',\n", - " 'and i do believe that',\n", - " 'the more you offer trust',\n", - " 'the more you chase',\n", - " 'the more you cry',\n", - " \"the more you're bound to lose\",\n", - " \"the more you're bound to lose\",\n", - " 'oh, but they were never found',\n", - " 'oh, but they were never found',\n", - " 'somebody',\n", - " 'who wants to be',\n", - " 'who wants to be',\n", - " 'with me',\n", - " 'all the time',\n", - " 'so i sort of broke away, let my angels float away',\n", - " 'but lives a vicious cycle so i brighten up your day',\n", - " 'you’re filled with such dismay, wipe your tears cause i’m here to',\n", - " 'promise that i’ll always be around if not',\n", - " 'i’m not near you',\n", - " 'whispering a dream about us dancing with the sun',\n", - " 'collided with the moon to prove that im your number one',\n", - " 'we’ve battled like before though the galaxies are mad at me i’d rather be a part of you alone in my reality',\n", - " 'not to see it comin’, i’m truly in my zone',\n", - " 'but who’s to say i feel the same if i was all alone',\n", - " 'you’re righteous and you’ve grown, and i been on a toggle',\n", - " 'you switched around, which is why i speak with such bravado',\n", - " 'my passion is what built me, determination kills me, but you remain this way, and your ways are so milky, bizarre',\n", - " 'i’ve wonder why i’m always in your arms, searching you up in the sky, shining star is what you are',\n", - " 'now i be cracking and rolling',\n", - " \"all my niggas totin'\",\n", - " 'got bad bitches with sew-ins, all these hoes be going',\n", - " \"rock trues, and robin's, dreads so they jockin\",\n", - " 'i got the fe-fe rocking',\n", - " 'tron, flats, and molly',\n", - " \"like get money, we spend it, shake it open catchin'\",\n", - " 'this kush i bring we hit it, rolling kush i been it',\n", - " \"it’s cracking i'm rolling, all my niggas totin'\",\n", - " 'got bad bitches with sew-ins',\n", - " 'all these hoes be going',\n", - " 'say sicko what’s popping, ball like the houston rockets',\n", - " \"all i know is swerve and swag, and tall money is knockin'\",\n", - " 'and our bullets are so vicious',\n", - " 'got your ass stop wishing i’m on you like a mission',\n", - " 'like a mess is in here, we can’t lose so we winning',\n", - " 'that’s why i be grinning i’m popping all the ectasy',\n", - " 'my night is just beginning rolling stone tatted',\n", - " 'speak country, what’s happening?',\n", - " 'these bitch niggas be whining, cause contracts i be signing',\n", - " 'my gucci hat is linen all my hoes they out here get it',\n", - " 'on my pimping if you with it',\n", - " 'hope this sk make them ribbit',\n", - " 'till they stop it, bullets hitting',\n", - " 'like wayne with no ceilings',\n", - " 'and we mobbing, mobbing, say sicko yeah we coming',\n", - " 'all my homies rising, i be asap mobbing',\n", - " 'in miami colors, chilling with some hoes',\n", - " 'all my money powder, all my shoes italian',\n", - " \"bruh bruh i ain't lying, it's gucci on my toes\",\n", - " 'ksubi all in my clothes, big ass booty all in my hoes',\n", - " \"light skin cutie, supermodel, she ain't worried 'bout my dawg\",\n", - " \"girl you 'bout to miss your show, shake that candy out of your nose\",\n", - " \"jeremy scott gon' be mad, why he pay your ass to walk\",\n", - " 'we about to head to new york, might just hit up nicki minaj',\n", - " \"tired of trinidad and be wildin', but i'm finna have a ball\",\n", - " \"can't forgot about sicko, head to chiraq and be lo'\",\n", - " 'might just hit up 300 for the smoke',\n", - " 'cause otf can get it for the low',\n", - " 'the hole it be rocking, i got bands in my pocket, and sicko steady mobbing',\n", - " 'got hella rocks and robins i’m tatted like a mexican',\n", - " 'these hoes know i be flexing man',\n", - " \"i’m on the end no checking in and i don’t do no flodgin'\",\n", - " \"out west we be cuttin' though, we see little thots in booty shorts\",\n", - " 'they hop out in a vino, and you know we be doing us',\n", - " 'they hit up the liquor store, then we hit the fifi up',\n", - " 'we bail out and they jocking us, cause my whole team be dreaded up',\n", - " 'sicko and them be guccied up, sicko and them be louied up',\n", - " 'got these bitches going crazy, that’s the word around our town',\n", - " 'big bands in my pocket, i don’t carry no wallet get out my dick',\n", - " 'i’m stunting, got the baddest bitches watching',\n", - " 'yeah',\n", - " 'yeah',\n", - " 'yeah',\n", - " \"your man on the road, he doin' promo\",\n", - " 'you said, \"keep our business on the low-low\"',\n", - " \"i'm just tryna get you out the friend zone\",\n", - " \"'cause you look even better than the photos\",\n", - " \"i can't find your house, send me the info\",\n", - " \"drivin' through the gated residential\",\n", - " \"found out i was comin', sent your friends home\",\n", - " 'keep on tryna hide it, but your friends know',\n", - " \"i only call you when it's half-past five\",\n", - " \"the only time that i'll be by your side\",\n", - " 'i only love it when you touch me, not feel me',\n", - " \"when i'm fucked up, that's the real me\",\n", - " \"when i'm fucked up, that's the real me, yeah\",\n", - " \"i only call you when it's half-past five\",\n", - " \"the only time i'd ever call you mine\",\n", - " 'i only love it when you touch me, not feel me',\n", - " \"when i'm fucked up, that's the real me\",\n", - " \"when i'm fucked up, that's the real me, babe\",\n", - " \"i'ma let you know and keep it simple\",\n", - " \"tryna keep it up don't seem so simple\",\n", - " \"i just fucked two bitches 'fore i saw you\",\n", - " \"and you gon' have to do it at my tempo\",\n", - " 'always tryna send me off to rehab',\n", - " \"drugs started feelin' like it's decaf\",\n", - " \"i'm just tryna live life for the moment\",\n", - " 'and all these motherfuckers want a relapse',\n", - " \"i only call you when it's half-past five\",\n", - " \"the only time that i'll be by your side\",\n", - " 'i only love it when you touch me, not feel me',\n", - " \"when i'm fucked up, that's the real me\",\n", - " \"when i'm fucked up, that's the real me, yeah\",\n", - " \"i only call you when it's half-past five\",\n", - " \"the only time i'd ever call you mine\",\n", - " 'i only love it when you touch me, not feel me',\n", - " \"when i'm fucked up, that's the real me\",\n", - " \"when i'm fucked up, that's the real me, babe\",\n", - " 'hills have eyes, the hills have eyes',\n", - " 'who are you to judge? who are you to judge?',\n", - " 'hide your lies, girl, hide your lies (hide your lies, oh, baby)',\n", - " 'only you to trust, only you',\n", - " \"i only call you when it's half-past five\",\n", - " \"the only time that i'll be by your side\",\n", - " 'i only love it when you touch me, not feel me',\n", - " \"when i'm fucked up, that's the real me\",\n", - " \"when i'm fucked up, that's the real me, yeah\",\n", - " \"i only call you when it's half-past five\",\n", - " \"the only time i'd ever call you mine\",\n", - " 'i only love it when you touch me, not feel me',\n", - " \"when i'm fucked up, that's the real me\",\n", - " \"when i'm fucked up, that's the real me, babe\",\n", - " 'ewedihalehu',\n", - " 'yene konjo, ewedihalehu',\n", - " 'yene fikir, fikir, fikir, fikir',\n", - " 'yene fikir, fikir, fikir, fikir',\n", - " 'ewedihalehu',\n", - " 'yene konjo, ewedihalehu...',\n", - " 'illuminati at the door',\n", - " 'and when it rains it fucking pours',\n", - " 'and when it pours it fucking rains',\n", - " 'the fake versace leaves a stain',\n", - " \"i've seen a christian kill a baby, inhumane\",\n", - " 'in this world where we struggle just to love',\n", - " 'and obstain, from the greed and the sex - equanimity can lay',\n", - " 'and if i died right now, would you still remember the name',\n", - " 'would you still remember the name',\n", - " 'painted the picture, picture painted perfectly',\n", - " 'confessional confessions, tend to be the burden see',\n", - " \"it's blasphemy, but it's honesty over everything\",\n", - " 'walk with a gun and let the murder be the remedy and',\n", - " \"hennessy on melody's,i'm starring at the enemy\",\n", - " \"illuminati grab the shotty, look it's rejjie (check check)\",\n", - " \"illuminati grab the shotty, look it's rejjie\",\n", - " 'because the kid is unpredicteble',\n", - " \"i came from a jungle where there's animals and miracles\",\n", - " 'nah, im trying to be the first to make it',\n", - " 'and make a broke boy rich and religion,have a pay check',\n", - " 'and make a pig see the dick of this convict',\n", - " 'vietnam veteran slaying rappers with dillegence',\n", - " \"and that's a predicament for your intelect\",\n", - " \"the black boy's hungry, no pigs on a babies back\",\n", - " \"illuminati that's the real enemy (x3)\",\n", - " \"yea i know you ain't gotta be telling me\",\n", - " \"put some henny in my tee, that's the remedy\",\n", - " \"that's the remedy, hennesy on melodies (x2)\",\n", - " \"slurpin' ribena, burnin' my reefer\",\n", - " 'sip a henny, let me turn up my speaker',\n", - " \"billin cheese, blowing out soliloquy's dilla beats\",\n", - " 'chilly in the window breeze',\n", - " \"feel at ease, pizza, all a nigga need's\",\n", - " \"but when the streets -, darker than the lenses on your shade's\",\n", - " 'cold nights through december, man surrender to the page',\n", - " 'plain and simple, plain and sinful',\n", - " 'blowing blunts just remembering the days',\n", - " 'fell into a maze of thought -, never been away for more',\n", - " 'then a couple beats -, love from my street and love for the peeps',\n", - " 'reminiscing on a relevant mistake',\n", - " \"on the cold corner tryna' sell a man my pain\",\n", - " 'and this...',\n", - " 'right there, she like yeah right there',\n", - " 'she like yeah, right there, i like it right there',\n", - " 'right there',\n", - " 'well look i like a bad bitch, on the back bitch',\n", - " 'i go down there, you can hold on to my hair',\n", - " \"clit on my lip, i don't trip i spit\",\n", - " \"i just want to eat you til i know you won't forget\",\n", - " \"now you all wet, it's all on my face\",\n", - " \"i don't wipe it off, i know you like the taste\",\n", - " \"spit in my mouth and i'll spit into yours\",\n", - " 'sit on my face when im laying on the floor',\n", - " 'cold complain, make that pussy rain, til you',\n", - " 'say that you just came, sheets got stains',\n", - " 'i keep my mouth right on her pussy french kissing',\n", - " 'breathing all heavy and she quiet so she listen',\n", - " \"i don't wanna hurt her, i just wanna bite her\",\n", - " \"don't she know i want her, don't she know i like her\",\n", - " 'suck her pussy juice real loud so she hear it',\n", - " \"all up on my face and it's wet so she smear it\",\n", - " 'i eat more pussy, i eat more pussy',\n", - " 'i eat more pussy, i eat more pussy',\n", - " 'she like it when i eat her pussy',\n", - " 'love it when i eat her pussy',\n", - " 'i eat more pussy, i eat more pussy',\n", - " 'i eat more pussy',\n", - " 'if it cold ill go under the sheets',\n", - " 'put my mouth on it like a motha fuckin freak,',\n", - " \"i'm a suck your pussy til you can't even speak\",\n", - " \"i'm a suck your pussy til you knees feel weak\",\n", - " 'shaken, awaken, there you go baby',\n", - " 'my tongue is all wet and does it make it go crazy',\n", - " 'how bout this, im gonna sit on the floor',\n", - " 'and im gonna make you stand on my face',\n", - " \"i'm gonna make that pussy drip on my face\",\n", - " 'move back and forth real slow pace',\n", - " 'i want it, i need it, i own it, i eat it',\n", - " 'i just want her to believe it',\n", - " 'i spit it back on it then i suck it all up',\n", - " 'i spit it back on it, i suck it back up',\n", - " \"don't get it fucked up, this is what i love\",\n", - " \"you mutha fuckas don't do it enough, eat it enough\",\n", - " 'baby come, i want to see what i can do with my tongue',\n", - " 'put my lips on my your clit, and i hum',\n", - " \"you gonna love it it's a beautiful one\",\n", - " 'i should never front, i love kissing cunt',\n", - " 'til that cunt come, and i can taste some',\n", - " 'yeah i like it bitch yum, lick it off my tongue',\n", - " 'lick it off my chin, where should i begin',\n", - " 'i eat more pussy, i eat more pussy',\n", - " 'i eat more pussy, i eat more pussy',\n", - " 'she like it when i eat her pussy',\n", - " 'love it when i eat her pussy',\n", - " 'i eat more pussy, i eat more pussy',\n", - " 'i eat more pussy',\n", - " \"i'm the son of the god, none higher than the lord\",\n", - " \"you'll never find any demonic signs in my video's, nor times i record\",\n", - " 'i can see the blood in the dark',\n", - " 'you gotta draw the line in the yard',\n", - " \"it's for the cream i play, they picking teams\",\n", - " 'and you boy look at mean like he wanna take the ball',\n", - " 'belly of the beast and the brawl',\n", - " \"street's no leash on the dog\",\n", - " 'they running for safety, he probably got rabies',\n", - " 'foam leak from the jaws',\n", - " 'who really behind it all?',\n", - " 'the labels making the call, the artists give it its all',\n", - " \"the internet is a fool, they're using it for a tool re-modifying us all\",\n", - " \"guess i'm on my lupe shit, they don't listen to my lupe shit\",\n", - " 'you can have it all but soon as you hit the wall',\n", - " \"i wonder if the coupe gon' fit\",\n", - " '18 on the graveyard shift, die for nothing',\n", - " 'mel gibson braveheart kilt',\n", - " \"we standing in the lane y'all built\",\n", - " 'society made me and i just blame myself',\n", - " 'no pitty for the boy, you could put the city on the boy',\n", - " \"i'mma be gon' for a sec\",\n", - " 'but i better come back with the ceiling off the toy',\n", - " \"i'm good, i'm good\",\n", - " \"i'm good, i'm good\",\n", - " 'just pray for me, just pray for me',\n", - " 'just pray for me, just pray for me',\n", - " \"you know i ain't ranting no niggas\",\n", - " 'i know you figure kanye and jigga',\n", - " 'but look, they got an answer to they own',\n", - " \"plus this is my song and who sin's are bigger\",\n", - " 'so how am i any different',\n", - " \"i'm still talking this money, live fast, fuck bitches\",\n", - " 'that night life is vicious',\n", - " \"there's no such thing as magic but we all superstitious\",\n", - " 'that jailhouse is full of us, the courtroom is null to us',\n", - " 'we better off as bull runners',\n", - " 'the devil in blue dress is making love to us',\n", - " 'sunglasses and bc powder',\n", - " \"can't sleep the dreams getting even louder\",\n", - " 'sweating up in my palms, neck getting all warm',\n", - " \"i'mma probably need another shower\",\n", - " 'marriage is like the last thing, loving is like a past fling',\n", - " \"they just want some respect like never call 'em a bitch\",\n", - " \"i'm cold like nat king\",\n", - " 'my vision told me to fall back',\n", - " 'i used to think it was all that',\n", - " \"i'd never throw in my towel, i been knew they was foul\",\n", - " 'but this what you call rap?',\n", - " 'how sad are we?',\n", - " 'and how sad have we been?',\n", - " \"we'll let you know, we'll let you know\",\n", - " \"oh, but only if you're really interested\",\n", - " 'you wonder how',\n", - " \"we've stayed alive 'til now\",\n", - " \"we'll let you know, we'll let you know\",\n", - " \"but only if you're really interested\",\n", - " \"we're all smiles\",\n", - " \"then, honest, i swear, it's the turnstiles\",\n", - " 'that make us hostile',\n", - " 'ohuoh, ohuoh, ohuoh, ohuoh, ohuoh',\n", - " 'we will descend',\n", - " 'on anyone unable to defend',\n", - " 'themselves',\n", - " 'ohuoh, ohuoh, ohuoh, ohuoh, ohu-',\n", - " 'and the songs we sing',\n", - " \"they're not supposed to mean a thing\",\n", - " 'la, la, la, la, la, la, la, la, la, la, la, la, la, la',\n", - " \"you're lonely, oh ... you're lonely\",\n", - " 'oh ...',\n", - " 'get off the roof!',\n", - " 'oh ... your arsenal!',\n", - " 'we may seem cold, or',\n", - " 'we may even be',\n", - " \"the most depressing people you've ever known\",\n", - " \"at heart, what's left, we sadly know\",\n", - " \"that we are the last truly british people you'll ever know\",\n", - " 'we are the last truly british people you will ever know',\n", - " \"you'll never never want to know\",\n", - " 'wake up, wake up',\n", - " 'gotta get this paper, get this cake up',\n", - " 'gotta do my hair, gotta put on makeup',\n", - " 'gotta act like i care about this fake stuff',\n", - " 'straight up what a waste of my day',\n", - " \"if i had it my way i'd roll out of bed\",\n", - " 'say bout 2:30 mid day',\n", - " 'hit the blunt then, hit you up to come over to my place',\n", - " 'you show up right away',\n", - " 'we make love and then we fuck',\n", - " \"and then you'd give me my space\",\n", - " 'yeah',\n", - " 'what i am trying to say is',\n", - " 'that love is ours to make so we should make it',\n", - " 'everything else can wait',\n", - " 'the time is ours to take so we should take it',\n", - " 'wake up, wake up, bake up',\n", - " 'gotta heat the vape up',\n", - " 'lets get faded',\n", - " \"gotta call your job tell em' you won't make it\",\n", - " \"ain't nobody here baby lets get wasted\",\n", - " 'we should just get naked',\n", - " 'cause i be working hard and i know you be on that same shit',\n", - " \"every other day's a different game that you just can't win\",\n", - " 'i just want to ease your mind and make you feel all right',\n", - " 'so go head tell your baby mama you gon be with me tonight',\n", - " 'right',\n", - " 'what i am trying to say is',\n", - " '(what i am trying to say is)',\n", - " 'that love is ours to make so we should make it',\n", - " '(we should make it, we should make it)',\n", - " 'everything else can wait',\n", - " '(everything else can wait)',\n", - " 'the time is ours to take so we should take it',\n", - " \"it's not love, but it's pretty close\",\n", - " 'hot fudge and a little smoke',\n", - " \"i didn't mean it means nothing to you\",\n", - " 'hands locked on my black couch with nothing to do',\n", - " \"can't stop on cloud 20\",\n", - " 'buried in the drugs, but the feels keeps coming',\n", - " 'finally stop crying, but your nose is still running',\n", - " 'wipe it on my shirt, (haha, on my sleeve)',\n", - " 'you tell me that you wanna do it big',\n", - " 'i love it when you say \"guess what?\" (what? what?)',\n", - " 'reading stories to some other nigga kid',\n", - " \"and i wonder why i'm all messed up (up up up up)\",\n", - " 'cause we gotta be responsible sometimes',\n", - " 'being a class act nevermind my alumni',\n", - " \"i don't wanna be around a baby so dumb high\",\n", - " \"that i don't see the beauty of a momma on insides\",\n", - " 'curled up with my head on your chest',\n", - " \"it's the best remedy for the pain and the stress\",\n", - " \"if the world doesn't change then we'll never get dressed\",\n", - " 'it will be like this to the kiss of the death',\n", - " 'of my soul, bowl of the blue dream, no',\n", - " 'not a good team, once soul, two halves',\n", - " 'no joke, who laughs?',\n", - " 'just us (just us, just us)',\n", - " 'okay, got this oj and jose',\n", - " 'mixed it up with that rose',\n", - " \"we gon' do this our own way\",\n", - " 'alright, okay',\n", - " \"what is it that you're smoking?\",\n", - " 'piece it up with this peace and love',\n", - " 'and this peace and love like the old days',\n", - " 'what i am trying to say is',\n", - " '(what i am trying to say is)',\n", - " 'that love is ours to make so we should make it',\n", - " '(we should make it, we should make it)',\n", - " 'everything else can wait',\n", - " '(everything else can wait)',\n", - " 'the time is ours to take so we should take it',\n", - " 'we should stay right here',\n", - " 'we should lay right here',\n", - " 'cause everything is okay right here',\n", - " 'you should stay right here',\n", - " 'we should lay right here',\n", - " 'cause everything is okay right here',\n", - " \"i idolize no man who's confined to time\",\n", - " \"i only idolize the sun cause he's always lit\",\n", - " \"and it's a fuck load of stars in the sky\",\n", - " 'but it take one of a kind to really even bring the squad with it',\n", - " 'nod with it',\n", - " \"another one of god's sons like nas\",\n", - " \"and y'all didn't even see it comin', still profited\",\n", - " 'and give it to you for the fre.99',\n", - " \"feelin' like mj pre '99\",\n", - " 'woke up, dick on carpenter',\n", - " \"that's a hard, harbinger, takin' no bargains\",\n", - " 'niggas hate you one day, then next day they love you',\n", - " \"i take it with a grain of salt, it make 'em so salty\",\n", - " 'in my nigga chad jeep, wit the doors off it',\n", - " '40 hours, no doze off, no coffee',\n", - " 'i feel like i neglect my natural needs so often',\n", - " \"every other mornin' wakin' up caughin', it's so costly, but...\",\n", - " 'let me call your attention to our greatest power',\n", - " 'which is under your control',\n", - " 'a power which is greater than poverty, greater than the lack of education',\n", - " 'greater than all of your fears and superstitions combined',\n", - " 'it is the power to take the station of your own mind and direct to whatever ends you may desire',\n", - " \"i'm learnin' patience and embracin' every moment\",\n", - " 'for the view and the vibe',\n", - " 'fuck pressure, feel the texture of the room',\n", - " \"livin' life underscored, put it all on the line\",\n", - " \"i'm a mic connoisseur with the extras\",\n", - " 'they play for them cameras',\n", - " 'lower their standards to raise their chances to ball',\n", - " \"and it's fear cause it's the system that raised 'em that did 'em wrong\",\n", - " \"in the hood prayin' bullets just graze 'em, but never take 'em\",\n", - " 'like a dead beat daddy who lied about all vacations',\n", - " \"i skate on these high vibrations and ride 'em out\",\n", - " \"i idolize no nothing, it's bone dry, this shit give me cotton mouth\",\n", - " \"niggas so 'bout a dollar, they forget what their problems 'bout\",\n", - " \"dropped out of college and conning' and beef with his mama now\",\n", - " 'he mixed the goop with of the soda, so qualms gets drowned out',\n", - " \"be mashing the muscle and movin' counter counts\",\n", - " 'so who do we look up to when the image on the canvas is',\n", - " 'pigs reciting niggas they mirandas',\n", - " 'o divine providence, i ask not for more riches but',\n", - " 'more wisdom with which to make wiser use of the',\n", - " 'riches you gave me at birth, consisting in the power to',\n", - " 'control and direct my own mind to whatever ends i',\n", - " 'might desire',\n", - " 'now you see why it is important that you recognize that all success begins with definiteness of purpose, with a clear picture in your mind of precisely what you want from life',\n", - " 'p-p-p-p-p-party, party',\n", - " 'that smile on your face',\n", - " 'makes it easy to trust you',\n", - " 'those in— (yeah), those in— (yeah, oh), those in— (yeah, oh)',\n", - " \"this what 'sauga feels like in the night time (ooh)\",\n", - " \"watch what she doin' when the light shine (ooh)\",\n", - " 'drunk niggas tryna talk in the strip club',\n", - " 'shawty silhouette looks like a dollar sign (ooh)',\n", - " 'caught-caught up (caught up)',\n", - " \"that's just how a nigga brought up (brought up)\",\n", - " 'blow ones for you loony ass niggas (ass niggas)',\n", - " 'straight bills for you toonie ass niggas (ass niggas)',\n", - " 'm-m-my niggas bigger than the bouncer',\n", - " 'roll up in the bitch still smell like an ounce (like a ounce)',\n", - " 'right quick, right quick',\n", - " 'tight jeans on so she feel my shit, ayy (feel my shit)',\n", - " \"tell me somethin' good baby\",\n", - " \"tell me somethin', tell me somethin' good shawty (yeah)\",\n", - " 'come bring it to the hood baby',\n", - " 'bring it-bring it back to hood, shawty (ooh, ooh, ooh)',\n", - " \"this what 'sauga feels like in the night time (night time)\",\n", - " 'bust it open, shawty when the light shine (the lights shine)',\n", - " \"still fuckin' with the same ass niggas (niggas)\",\n", - " 'i know you want a break',\n", - " 'i-i-i know you want a break from toronto',\n", - " 'oh, girl',\n", - " 'west side',\n", - " 'oh-oh, ooh, girl (know you want a break)',\n", - " 'oh, girl (that smile on your face)',\n", - " 'those in, those in',\n", - " 'face, face',\n", - " 'those in, those in',\n", - " 'yeah, yeah, yeah',\n", - " 'yeah, dont this sound so soothing',\n", - " 'if them hoes choosing they losing',\n", - " 'yeah, and dont this sound extra soothing',\n", - " \"if them girls ain't choosing they losing\",\n", - " 'yeah, and dont this sound so soothing',\n", - " 'if them hoes choosing they losing',\n", - " 'yeah',\n", - " 'no record deal',\n", - " 'im fresh as hell',\n", - " 'new car paid for',\n", - " 'they catchin hell',\n", - " 'when i pull up',\n", - " 'with all they hoes',\n", - " 'foggy as fuck',\n", - " 'all that smoke',\n", - " 'im huey newton',\n", - " 'black dynamite',\n", - " 'fuck these hoes',\n", - " 'with all my might',\n", - " 'heads or tails',\n", - " 'to each his own',\n", - " 'i call it mona lisa',\n", - " 'cause i make lisa moan',\n", - " \"and anytime you ain't smokin you should be\",\n", - " 'call of duty, battlefield thats how my hood be',\n", - " 'yeah, a little bit of this',\n", - " 'a little bit of that',\n", - " 'kill ‘em with the flow',\n", - " 'kill ‘em with the mac',\n", - " 'now you did',\n", - " 'and i got yo bitch',\n", - " 'i in your grave',\n", - " 'piss on that bitch',\n", - " 'me and her just met',\n", - " 'now we goin in',\n", - " 'she chose me',\n", - " 'now she gon’ win',\n", - " 'yeah, and dont this sound so soothing',\n", - " \"if girls ain't choosing they losing\",\n", - " 'yeah, and dont this sound extra soothing',\n", - " \"if them bitches ain't choosing they losing\",\n", - " 'yeah, and dont this sound so soothing',\n", - " \"if them girls ain't choosing they losing\",\n", - " 'yeah, and dont this sound so soothing',\n", - " 'im extra fresh',\n", - " 'you know i is',\n", - " 'whats this song called',\n", - " 'i have no idea',\n", - " 'its fresh doe',\n", - " 'so is this club',\n", - " 'lets have a drink',\n", - " 'lets make love',\n", - " 'back at my place',\n", - " 'i just bought you ace',\n", - " 'thats more than your rent',\n", - " 'gimme some face',\n", - " 'these random thoughts',\n", - " 'dont mean no harm',\n", - " 'im tryna get in your car',\n", - " 'hit the alarm',\n", - " 'permission to enter',\n", - " 'that velvet center',\n", - " 'dont need no pictures just to make this a night to remember',\n", - " 'you niggas is hoes',\n", - " 'transvestite',\n", - " 'im so bored can some of yall girls please excite',\n", - " 'roll that weed ignite',\n", - " 'sit back and chill',\n", - " 'look what time it is',\n", - " 'time to get real',\n", - " 'you know wassup',\n", - " 'fuckin games',\n", - " 'its three in the morning im supposed to hittin that shit like whats my name',\n", - " 'bitch quit playin’',\n", - " 'yeah, and dont this sound so soothing',\n", - " \"if them girls ain't choosing they losing\",\n", - " 'yeah, and dont this sound so soothing',\n", - " \"if them girls ain't choosing they losing\",\n", - " 'yeah, and dont this sound so soothing',\n", - " \"if them girls ain't choosing they losing\",\n", - " 'yeah, dont this sound so soothing',\n", - " 'hodgy beats!',\n", - " \"just in case you didn't know\",\n", - " \"i've been around the world\",\n", - " \"like misplaced grocey's, i'm a go back\",\n", - " 'those memories are kodak',\n", - " 'take a snap for the throwback',\n", - " 'my snapback is my hat',\n", - " 'track is on a throw back',\n", - " \"my city's behind be the highest\",\n", - " 'climbing up the fucking rope back',\n", - " \"twisting off the cat, i'mma roll up swishers\",\n", - " \"blow that weed like , first make a couple wish'es\",\n", - " 'in 2005 i was putting in 5 to get high',\n", - " 'now we get on just to get fly',\n", - " \"how does it feel to be the best, i'm in my way to be next\",\n", - " 'you bought to push my way through',\n", - " \"so money come's with paids due\",\n", - " 'mellowhype jersey, felling worthy',\n", - " \"who cut that paid due's, odd future reigning terror\",\n", - " 'better weigh your rain',\n", - " \"man it's great when you the shit\",\n", - " \"but when it's turning your thing's get drained in\",\n", - " 'you running for the chair, you run your job, campaigning',\n", - " 'swear an under oath protecting',\n", - " \"like an umbrella when it's raining\",\n", - " \"got america on her toes so much her toe nail's breaking\",\n", - " \"ain't no love, in the heart of the city\",\n", - " \"ain't no love, in the heart of time\",\n", - " 'i wanna be the perfect pops to my son',\n", - " 'and him look at me like;',\n", - " 'daddy you the greatest, i wanna be just like you',\n", - " 'i tell him; be like me, but with a higher iq',\n", - " 'so he can cut the water cut fat',\n", - " 'and cut the water',\n", - " \"i bump my head a couple time's\",\n", - " 'putting my hammer to the screw',\n", - " 'but i fix my situation, what about you',\n", - " \"swallong the simulating nigga's fake\",\n", - " 'jealousy begins to generatethe bit of hate',\n", - " \"it's the wat it spreads all through the niggas face\",\n", - " 'acting like his girlfriend slept with me',\n", - " 'now he got some shit to say',\n", - " 'he recieved the tone of def from me, respectfully',\n", - " 'disrespecting me results in weaponry',\n", - " 'check your speed and all your',\n", - " 'before you are left to bleed',\n", - " '(mumbling.....)',\n", - " 'nothing is wrong',\n", - " \"now we're all alone...\",\n", - " \"and now we're all alone\",\n", - " 'your friends are all long gone',\n", - " \"they're already home, you're already wrong\",\n", - " \"you're alle alone...\",\n", - " \"come here girl, you ain't walkning straight\",\n", - " \"close your mouth, cause you ain't talking straight\",\n", - " \"i know it's hard to concentrate\",\n", - " 'you must think something on to me',\n", - " \"that your pain ain't mine to take\",\n", - " 'we can find another way',\n", - " \"trynna see something, that i've never seen before\",\n", - " \"i said, i'm tryna see something, that i've never seen before\",\n", - " 'just show me girl, just show me girl',\n", - " \"something that i've never seen before\",\n", - " \"so now she's down on all fours\",\n", - " 'still trying to see wrong',\n", - " 'cause i did that already',\n", - " 'you did already, yea we can do it better baby',\n", - " 'but i think i know better way',\n", - " \"gotta promise you won't hesitate\",\n", - " 'she said: you gotta promise you will never tell',\n", - " \"i said: it's pussy girl, what the fuck is to dwell\",\n", - " ...]},\n", - " 'non-music': {'meta': {'train_data': ['tracklist:1. ignorantro',\n", - " '2. butterfly stance',\n", - " '3. fahrenheit 99 (feat. liz vice)',\n", - " '4. so fly (feat. beleaf)',\n", - " '5. 10 2 get in (feat. odd thomas)',\n", - " '6. attack of the clones (feat. john givez & jackie hill perry)',\n", - " '7. fly exam',\n", - " '8. lost in space (feat. marz ferrer)',\n", - " '9. hummingbird stance',\n", - " '10. super lowkey',\n", - " '11. take off with me (feat. john givez)',\n", - " '12. march 10th and a third (feat. braille)',\n", - " \"13. they said there'd be jetpacks (feat. propaganda)\",\n", - " 'album artwork:\"ignorantro\" cover art:\"lost in space\" cover art:\"super lowkey\" cover art:',\n", - " 'she was alone in the bathroom',\n", - " 'eyes fixed like a statue',\n", - " 'wrists sore and her face bruised',\n", - " \"she's just waiting for more bad news\",\n", - " \"now she's white like a full moon\",\n", - " \"as she can't bear what the test proves\",\n", - " 'at a crossroads, need a rescue',\n", - " \"'cause what she gonna do\",\n", - " 'hold on',\n", - " \"she's waiting between worlds\",\n", - " \"wish she could tell 'em hold on\",\n", - " \"i'm waiting between worlds\",\n", - " 'he was looking at a pale sun rise',\n", - " 'thinking back on the time gone by',\n", - " 'how he loved and he laughed and he cried',\n", - " 'how it was a blink of an eye',\n", - " \"now he's looking at the shake in his hand\",\n", - " 'thinking, \"how much more of life can he stand?\"',\n", - " 'and how many years can he cram',\n", - " \"before his fate gives way and he's ash in the sand\",\n", - " 'and is it the last stop on the road',\n", - " 'or the next step in a path—grand and unknown',\n", - " 'a milestone formed from the fruits of his ways',\n", - " 'okay in what comes with the end of his days',\n", - " \"but the sun's rays shine on a face so divine\",\n", - " '\"an angel of mine\" goes the phrase in his mind',\n", - " 'wise to the signs, knowing soon is the time',\n", - " \"but he isn't ready to say goodbye\",\n", - " 'hold on',\n", - " \"he's waiting between worlds\",\n", - " \"wish he could tell 'em hold on\",\n", - " \"i'm waiting between worlds\",\n", - " '4 a.m., when she woke to the sound',\n", - " 'walked to the door in her bedtime gown',\n", - " \"policeman said that her son's been found\",\n", - " 'he was shot in the head near a club downtown',\n", - " 'and the terror in her heart was profound',\n", - " 'her legs broke down, she collapsed to the ground',\n", - " 'as the walls were spinning all around',\n", - " 'he said \"ma\\'am, please you need to come right now\"',\n", - " \"so she's sitting down dazed in a cop car\",\n", - " 'swerving through lanes in a maze where the crazed are',\n", - " 'and locked in a haze from the shock',\n", - " 'thoughts frayed as they stop with here stomach in knots',\n", - " '\"lord please end the nightmare\", are the words in her mind as they raced inside',\n", - " '\"lord please end the nightmare\"',\n", - " 'in the hospital ward in the eye of the storm',\n", - " '\"miss, i regret to say',\n", - " \"there's not much hope i can give today\",\n", - " 'the assault took much of his brain away',\n", - " \"we've done all we can but his state is grave\",\n", - " \"best case here is he'll live on machines\",\n", - " 'with a vegetable quality of life foreseen',\n", - " 'or instead we can pull out the feed',\n", - " 'let him live his last moments and he\\'ll pass in a dream\"',\n", - " 'hold on',\n", - " \"we're waiting between worlds\",\n", - " \"wish she could tell 'em hold on\",\n", - " \"we're waiting between worlds\",\n", - " 'waiting between worlds that divide through a choice undefined',\n", - " 'a break in the line where all paths intertwine',\n", - " 'and no roads lead or progress behind',\n", - " 'and all signs read: \"know the way, decide\"',\n", - " 'they say all things never truly die',\n", - " 'but change in existence and switch design',\n", - " \"like a drain to an ocean in which we're blind\",\n", - " 'we remain set in motion from worlds combined',\n", - " 'so if i had one thought that would last and hold',\n", - " 'amass and fold over as it fastly grows',\n", - " 'and fuse into life like a fabric sewn',\n", - " 'clasp the vast field whence existence flows',\n", - " \"i'd say settle down, of your grief let go\",\n", - " \"this world's nothing more than a magic show\",\n", - " 'though tragic at times and encased in woe',\n", - " 'it all works out, of this truth i know',\n", - " 'i was told there was something, something',\n", - " 'even though there was nothing, nothing',\n", - " 'i was told there was something, something',\n", - " 'even though there was nothing, nothing',\n", - " 'and oh, even though there was nothing',\n", - " 'i was told i could meet you somewhere',\n", - " \"even though i couldn't find you anywhere\",\n", - " 'i was told i could meet you somewhere',\n", - " \"even though i couldn't find you anywhere\",\n", - " 'come burn out and i',\n", - " \"and we'll fly out of time\",\n", - " 'come turn on the light',\n", - " \"and then we'll fly out of time\",\n", - " 'i was told it could happen to me',\n", - " \"even though it couldn't actually be\",\n", - " 'i was told it could happen to me',\n", - " \"even though it couldn't actually be\",\n", - " 'come burn out and i',\n", - " \"and we'll fly out of time\",\n", - " 'come turn on the light',\n", - " \"and then we'll fly out of time\",\n", - " 'come burn out and i',\n", - " \"and we'll fly out of time\",\n", - " 'come turn on the light',\n", - " \"and then we'll fly out of time\",\n", - " 'the courteous pagan shall condemn',\n", - " 'uncourteous englishmen,',\n", - " 'who live like foxes, bears and wolves,',\n", - " 'or lion in his den.',\n", - " 'let none sing blessings to their souls,',\n", - " 'for that they courteous are:',\n", - " 'the wild barbarians with no more',\n", - " 'than nature, go so far.',\n", - " 'if nature’s sons both wild and tame,',\n", - " 'humane and courteous be,',\n", - " 'how ill becomes it sons of god',\n", - " 'to want humanity!',\n", - " '————',\n", - " 'if birds that neither sow nor reap',\n", - " 'nor store up any food,',\n", - " 'constantly find to them and theirs',\n", - " 'a maker kind and good!',\n", - " 'if man provide eke for his birds,',\n", - " 'in yard, in coops, in cage,',\n", - " 'and each bird spends in songs and tunes',\n", - " 'his little time and age!',\n", - " 'what care will man, what care will god,',\n", - " 'for ’s wife and children take?',\n", - " 'millions of birds and worlds will god',\n", - " 'sooner than his forsake.',\n", - " '————',\n", - " 'years thousands since god gave command,',\n", - " 'as we in scripture find,',\n", - " 'that earth and trees and shrubs should bring',\n", - " 'forth fruits each in his kind.',\n", - " 'the wilderness remembers this;',\n", - " 'the wild and howling land',\n", - " 'answers the toiling labor of',\n", - " 'the wildest indian’s hand.',\n", - " 'but man forgets his maker, who',\n", - " 'framed him in righteousness,',\n", - " 'a paradise in paradise now worse',\n", - " 'than indian wilderness.',\n", - " '————',\n", - " 'when sun doth rise the stars do set,',\n", - " 'yet there ’s no need of light,',\n", - " 'god shines a sun most glorious,',\n", - " 'when creatures all are night.',\n", - " 'the very indian boys can give',\n", - " 'to many stars their name,',\n", - " 'and know their course, and therein do',\n", - " 'excel the english tame.',\n", - " 'english and indians none inquire,',\n", - " 'whose hand these candles hold,',\n", - " 'who gives these stars their names, himself',\n", - " 'more bright ten thousand-fold.',\n", - " 'we see the billboard girl',\n", - " 'the one devoted to ritual',\n", - " 'standing in the rain',\n", - " 'holding all her pain inside',\n", - " \"i know you're hurting now\",\n", - " \"but i can't point my finger at the\",\n", - " \"words i should or shouldn't say\",\n", - " 'anything to take the pain away',\n", - " 'to walk alone on the streets tonight',\n", - " 'and fear nothing',\n", - " 'to choose to love what we are in this life',\n", - " 'and shine brighter',\n", - " \"don't let the crosses and dollar signs, symbols of man, unkind\",\n", - " \"make you feel that you're not real\",\n", - " 'all this time, walk out',\n", - " 'out of the shadows',\n", - " 'we see the lines in chalk',\n", - " 'the warning sign for where we walk',\n", - " \"in the shadows of the city's maze\",\n", - " 'to try and fight for better days',\n", - " 'walk alone on the streets tonight',\n", - " 'and fear nothing',\n", - " 'choose to love what we are in this life',\n", - " 'and shine brighter',\n", - " \"don't let the crosses and dollar signs, symbols of man, unkind\",\n", - " \"make you feel that you're not real\",\n", - " 'all this time, walk out',\n", - " 'out of the shadows',\n", - " \"yeah, we're ungrateful\",\n", - " \"yeah, we're ungrateful for...\",\n", - " 'holy books, religious men',\n", - " 'values of beauty, and original sin',\n", - " 'and all this time we unwind it',\n", - " \"i won't give up, i'm not afraid\",\n", - " 'reisister, go as long as it takes',\n", - " 'to reverse the hypocrisy, challenge the stakes',\n", - " 'of your safety and survival at the heart',\n", - " \"of women's voices, women's art\",\n", - " 'to walk alone on the streets tonight',\n", - " 'and fear nothing',\n", - " 'to choose to love what we are in this life',\n", - " 'and shine brighter',\n", - " \"don't let the crosses and dollar signs, symbols of man, unkind\",\n", - " \"make you feel that you're not real\",\n", - " 'all this time, walk out',\n", - " 'out of the shadows',\n", - " 'if we take our strength',\n", - " 'to market, to trade',\n", - " 'for their',\n", - " 'ugly beauty',\n", - " 'watch us grow up to war',\n", - " 'watch us grow up to war',\n", - " 'watch us grow up to war',\n", - " 'watch us grow up to war',\n", - " 'watch us grow up to war',\n", - " 'no more!',\n", - " 'i was hot',\n", - " 'i went to parties a lot',\n", - " '(spoken)',\n", - " \"y'know?\",\n", - " '(sung)',\n", - " 'i was driving lamborghinis',\n", - " 'sipping super-dry martinis',\n", - " 'in the tiniest bikinis on a yacht',\n", - " 'but i was depressed',\n", - " 'oh so completely obsessed',\n", - " 'an unhappy beauty queen',\n", - " 'who dreamed to be miss argentina',\n", - " 'i had such low self-esteem',\n", - " 'i was a mess',\n", - " 'so i gave it all up for the netherworld',\n", - " \"i've been here forever, girl\",\n", - " 'if i was more clever, girl',\n", - " \"i would've stuck it out\",\n", - " \"knowing what life's about\",\n", - " 'pain and joy and suffering',\n", - " 'failing but recovering',\n", - " \"i'll tell you another thing\",\n", - " 'everyone here is alone',\n", - " 'so if you are breathing',\n", - " 'go home!',\n", - " 'if i knew then',\n", - " 'what i know now',\n", - " 'i would have looked within and let love in somehow',\n", - " 'if i only knew',\n", - " 'the truth back then',\n", - " 'i wouldn\\'t have had my little \"accident\"',\n", - " \"don't be blind\",\n", - " 'you left your whole life behind',\n", - " 'see a shrink',\n", - " 'call a priest',\n", - " 'ask the recently deceased',\n", - " 'death is final and you cannot press rewind',\n", - " \"don't jump when the light is red\",\n", - " 'toasters should be used for bread',\n", - " 'never smoke cigars in bed',\n", - " \"nietzsche was right, y'know, to live is to suffer, bro\",\n", - " \"don't cheat on the one you wed\",\n", - " 'never whip a thoroughbred',\n", - " 'angry pygmies shrunk his head',\n", - " 'why did it take death to see',\n", - " 'happiness was up to me?',\n", - " 'if i knew then',\n", - " 'what i know now',\n", - " \"i would've laughed and danced\",\n", - " 'and lanced every sacred cow',\n", - " 'i thought i knew',\n", - " 'but i was wrong',\n", - " \"'cause life is short\",\n", - " 'but death is super long',\n", - " 'i exploded!',\n", - " 'if i knew then',\n", - " '(if i knew)',\n", - " 'what i know now',\n", - " \"i would've crossed every line\",\n", - " 'and drank all the wine',\n", - " 'before my final bow',\n", - " 'if i knew (if i knew)',\n", - " 'the things that now i know',\n", - " 'i would ride the highs and cherish the lows',\n", - " \"knowing it's a quick trick 'round the rodeo\",\n", - " 'so before they lower the curtain, be certain to enjoy the show',\n", - " \"that's what i know!\",\n", - " 'life is short but death is long',\n", - " \"here, one minute then it's gone\",\n", - " 'thought i knew but i was wrong',\n", - " 'if i only knew what i know now!',\n", - " 'in between',\n", - " 'wools and weaves',\n", - " 'knots and ties',\n", - " 'unhinged eyes',\n", - " 'constantly',\n", - " 'panicky',\n", - " \"he's hunting me\",\n", - " 'fa, la, la, la',\n", - " 'quite quieter than spiders',\n", - " 'either one',\n", - " 'none will numb',\n", - " 'what to use',\n", - " 'to misuse?',\n", - " 'walls to climb',\n", - " 'fangs to hide',\n", - " 'immobilize',\n", - " 'and i remember each hang',\n", - " 'with decent clarity for me',\n", - " 'the foods we ate the songs we jammed',\n", - " 'the people in the street',\n", - " \"the the times that we'd touch\",\n", - " 'almost always accidents',\n", - " 'but to share a hammock with you girl',\n", - " 'it leaves my heart content',\n", - " \"so i'm sorry that once\",\n", - " 'when you tried to hold my hand',\n", - " 'i knew you meant it friendly',\n", - " 'but i could not mean it friendly',\n", - " 'no i wanted it real',\n", - " \"so i bailed i couldn't deal\",\n", - " 'and i wished to ditch the part of me',\n", - " 'that knew how you made me feel',\n", - " 'but then i thought better',\n", - " 'instead i just wished that you',\n", - " 'would split in two so i could date you too',\n", - " \"but 'til my wish comes true what do i do?\",\n", - " \"i think i'll keep them\",\n", - " 'i think i have to hold my feelings',\n", - " \"cause your boyfriend rules and i'm just a fool\",\n", - " 'who shows up every 2 months',\n", - " 'so can i freaking chill once?',\n", - " 'i think my dreams could be enough',\n", - " 'to be the band i always wanted',\n", - " 'fall in love with everything',\n", - " 'and run this awesome road',\n", - " \"'ti my legs give out\",\n", - " 'cause i was born to rage on stage girl',\n", - " \"it's the one thing i'm sure about\",\n", - " 'but just know that when the distance gets me',\n", - " 'i recall when you were with me',\n", - " 'the drive in movies, forts we built',\n", - " \"and blasting drake 'til our hearts filled\",\n", - " 'oh what more could i need?',\n", - " 'i love every single moment i got to receive',\n", - " 'oh forgive me if i was distant after that',\n", - " \"i've never been a boy who can give only half\",\n", - " 'i could feel us getting closer with each day',\n", - " \"i was so tired of being selfish i couldn't remain\",\n", - " \"there were so many times i didn't text you\",\n", - " 'to tell you how bad i missed you',\n", - " 'knowing you is the best dream',\n", - " \"oh darling you're cake and ice cream\",\n", - " 'i know everything for all that i know',\n", - " \"but there's always two sides to the way to the bulk of the stories go\",\n", - " 'sometimes things better off less spoken, should be shouted, written down & quoted',\n", - " \"these hands can't hold the time\",\n", - " \"better use them wisely while they're still all mine\",\n", - " 'hold on and hope for the best',\n", - " 'hold on and hope for the best',\n", - " \"seems like a voices that'll sing to me\",\n", - " \"all come here through to tell me the things i couldn't see\",\n", - " \"when my eyes have woken to the things i've broken\",\n", - " \"i'll be gone distracted by something else\",\n", - " \"these hands can't hold the time\",\n", - " \"better use them wisely while they're still all mine\",\n", - " 'hold on and hope for the best',\n", - " 'hold on and hope for the best',\n", - " \"think i'll pause here awhile instead\",\n", - " \"to reflect on what i've done and the things i never said\",\n", - " \"and when i'm good and acquainted with the problem\",\n", - " \"i'll continue down the way that i started\",\n", - " \"these hands can't hold the time\",\n", - " \"better use them wisely while they're still all mine\",\n", - " 'hold on and hope for the best',\n", - " 'hold on and hope for the best',\n", - " 'blood money money by all means',\n", - " 'instead of 2p call me young triple beam',\n", - " 'got fishscale got oil base',\n", - " 'lawyer paid up in case i catch a sell case',\n", - " \"nah i ain't stuntin' them crackas\",\n", - " 'magician with the work call it dope boy magic',\n", - " \"dey he go stuntin' again\",\n", - " 'top laid back put the dro in the wind',\n", - " \"oh did i mention i was shinin'\",\n", - " 'blue, white, yellow, black',\n", - " 'pink diamonds (you already know)',\n", - " 'that my favorite line',\n", - " 'if your shit shined like mine',\n", - " \"you'd say it everytime\",\n", - " 'frostbit neck, and my wrist froze',\n", - " 'you can see my damn watch with your eyes closed',\n", - " 'blue, white, yellow, black, pink diamonds',\n", - " 'shawty shinnin, still grindin',\n", - " \"i know they watchin'\",\n", - " 'i pose for the photograph',\n", - " 'those indictment papers',\n", - " 'hope you want my autograph',\n", - " \"we don't trip, we just live life\",\n", - " 'trying to dodge them handcuffs',\n", - " 'and them blue lights',\n", - " 'frostbit neck and my wrist froze',\n", - " 'you can see my damn watch with your eyes closed',\n", - " 'ask them hoes, with the extra blow',\n", - " 'the nigga with the louie luggage down in mexico',\n", - " 'in a a-town fitted cap',\n", - " \"i'm so hot tower\",\n", - " 'i think i need a thermostat',\n", - " 'give a fuck about a player hater',\n", - " 'hit him with the tool, flush his whole radiator',\n", - " \"i'm 24,with 24 figures\",\n", - " '24 triggers, 24 inches',\n", - " \"but i keep 'em clean\",\n", - " 'so they pass for sixes',\n", - " \"stunnin' on you pussy ass niggas\",\n", - " \"72' dope rally straight shoot pass you in it\",\n", - " 'flat screens',\n", - " \", 18's, i don't hear shit\",\n", - " 'pocket full of stones',\n", - " \"i got 'em beatin' strong threw my speakers bitch\",\n", - " 'young boss shit',\n", - " \"oh you didn't hear 4th generation\",\n", - " 'my grand daddy used to sell birds',\n", - " 'who am i to fuck tradition up',\n", - " 'i got my ass in the kitchen',\n", - " 'water whip me bently chip',\n", - " '200k off my block bitch',\n", - " \"i know you thinkin' rap\",\n", - " \"i'm thinkin' laundry mat\",\n", - " 'clean money homie',\n", - " 'stop all this talk, turn off the telephone',\n", - " 'open up another bottle, send those people home',\n", - " 'let it get real quiet, turn that lamp way down low',\n", - " \"i'm gonna float down this river of tears\",\n", - " 'i remember how we spoke on the days he was dry',\n", - " \"even now that he's gone he can make a woman cry\",\n", - " 'but he saw through me deaf dumb and blind',\n", - " 'he knew his way down this river of tears',\n", - " '\"dashed hopes and best intentions\" people say',\n", - " 'he could sit and drink the way a monk could pray',\n", - " 'so grab that silver flask, pour yourself another glass and',\n", - " 'watch me rage down this river of tears',\n", - " 'turn out the stars now, darken every one',\n", - " 'watch the clouds cover that big yellow moon',\n", - " 'close the blinds, mute the sun',\n", - " \"there's nowhere left to run\",\n", - " 'picked up that old decanter that he used to drink from',\n", - " 'turned on his stereo just to hear it hum',\n", - " \"daddy i'm gonna wrap myself in blankets and listen to you sing\",\n", - " \"and i'm gonna float down this river of tears\",\n", - " 'came to the city,',\n", - " 'came in your circle and you wrote my thoughts.',\n", - " 'sex on the bits and sex on the streets,',\n", - " 'what you take me for,',\n", - " 'i should have known.',\n", - " 'you give me work until later by later,',\n", - " 'you changed my mind',\n", - " 'i should have known',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'maybe you smile everytime i cry.',\n", - " \"what's your problem, you have problem with me?\",\n", - " 'it makes you stronger,',\n", - " 'when i am in (your) bed with.',\n", - " 'when i am in (your) bed with.',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'mix on the bid and sex in the streets,',\n", - " 'what you take me for,',\n", - " 'i should have known.',\n", - " 'you give me work until later by later,',\n", - " 'you changed my mind,',\n", - " 'i should have known.',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'maybe you smile everytime i cry.',\n", - " \"what's your problem, you have problem with me?\",\n", - " 'it makes you stronger,',\n", - " 'when i am in (your) bed with.',\n", - " 'when i am in (your) bed with.',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'fall in the water,',\n", - " 'you keep me down.',\n", - " 'oh life is bigger, bigger than you',\n", - " 'and you are not me',\n", - " 'the lengths that i would go to',\n", - " 'the distance in your eyes',\n", - " \"oh no i've said too much\",\n", - " 'i said it all',\n", - " 'that’s me in the corner',\n", - " 'that’s me in the spotlight',\n", - " 'losing my religion',\n", - " 'trying to keep up with you',\n", - " 'and i don’t if i could do it',\n", - " \"oh no i've said too much\",\n", - " 'haven’t said enough',\n", - " 'i thought that i heard you laughing',\n", - " 'i thought that i heard you sing',\n", - " 'i think i thought i saw you try',\n", - " 'every whisper of every waking hour',\n", - " \"i'm choosing my confessions\",\n", - " 'trying to keep an eye on you',\n", - " 'like a hurt, lost and blinded fool',\n", - " \"oh no i've said too much\",\n", - " 'i said it all',\n", - " 'consider this',\n", - " 'consider this the hint of the century',\n", - " 'consider this',\n", - " 'the slip, that brought me to my knees, failed',\n", - " 'what if all these fantasies all flaring round',\n", - " \"and now i've said, way too much\",\n", - " 'i thought that i heard you laughing',\n", - " 'i thought that i heard you sing',\n", - " 'i think i thought i saw you try',\n", - " 'wa da da daaa da da daa dum',\n", - " 'wa da da daaa da da daa dum',\n", - " 'wa da da daaa da da daa dum',\n", - " 'but that was just a dream',\n", - " 'trying crying while trying',\n", - " 'that was just a dream',\n", - " 'it was just a dream it was just a dream',\n", - " 'dream that was just a dream',\n", - " 'trying crying while trying',\n", - " 'that was just a dream',\n", - " 'it was just a dream it was just a dream',\n", - " 'dream',\n", - " 'wa da da daaa da da daa dum',\n", - " 'wa da da daaa da da daa dum',\n", - " 'wa da da daaa da da daa dum',\n", - " 'wa da da daaa da da daa dum',\n", - " 'wa da da daaa da da daa dum',\n", - " 'wa da da daaa da da daa dum',\n", - " 'it was just a dream',\n", - " 'now here come the counteraction to',\n", - " \"don't be like the blasted bagiboo\",\n", - " 'i yellow man deal with special request to you',\n", - " 'and you and god knows who',\n", - " 'do it jah',\n", - " \"ca me chi gon' to tell you about shirt and blouses\",\n", - " 'me a go tell you why the girls wear shorties',\n", - " 'they want yellow man to see their legs-es',\n", - " 'the other time i see those creases',\n", - " 'but when the breeze blow it exposes',\n", - " 'the other time me have to cock up me noses',\n", - " 'cause it full of diseases, man it full of diseases',\n", - " 'worser than the pink eye diseases',\n", - " \"some of dem don't mind their own business\",\n", - " 'just a watch what yellow man wears-es',\n", - " \"them say me don't wear up the trousers\",\n", - " 'everyday me a dress up in a sweatsuit',\n", - " 'also bobby sock and track shoes-es',\n", - " 'the other time they say it expensive',\n", - " 'like me garment also me jewelry',\n", - " 'you fe mind your own business',\n", - " 'before me wet you with a guinness',\n", - " 'you fe mind your own business',\n", - " 'before me wet you with a guinness',\n", - " 'through certain circumstances',\n", - " 'people have to pay up the taxes',\n", - " 'to pay all the soldier and polices',\n", - " 'to pave all roads and houses',\n", - " 'to pay all the doctors and nurses',\n", - " 'me no fear fe chat this pon aces',\n", - " 'you fe mind your own business',\n", - " 'me will wet you with a guinness',\n", - " 'you fe mind your own business',\n", - " 'me will wet you with a guinness',\n", - " 'some of them talk about a eases and squeezes',\n", - " 'what about the hugging and kisses',\n", - " 'i gonna tell you bout the boys and girls-es',\n", - " 'when them go to school have sex in the classes',\n", - " 'some of dem they also watches',\n", - " 'some of dem they carry pure newses',\n", - " 'are some of dem they chat their umm',\n", - " \"it's the eases and squeezes\",\n", - " \"it's the eases and squeezes\",\n", - " 'what about the hugging and kissing',\n", - " 'me no fraid fe chat upon aces',\n", - " 'through certain circumstances',\n", - " 'nuff of them come from white horses',\n", - " 'some of them come listen me at aces',\n", - " 'and when me chat them a wind up their waist-es',\n", - " 'some of dem just come to watches',\n", - " 'they watch what me and fathead we wears-es',\n", - " \"and some of dem say we don't wear trousers\",\n", - " 'everyday we dress up in a track shoes-es',\n", - " \"it's the eases and squeezes\",\n", - " 'you fe mind your own business',\n", - " 'before me wet you with a guinness',\n", - " 'god sent the gentle breezes',\n", - " 'that blow through the trees-es',\n", - " 'and lift up the young girls-es dresses',\n", - " 'and lift it up above their kneeses',\n", - " 'and so that yellow man sees-es',\n", - " 'that thing between their legs-es',\n", - " 'and them we have little sex in the bushes',\n", - " 'some of dem roll out the wrath of moses',\n", - " 'the other time we push it through those creases',\n", - " 'some time they give us diseases',\n", - " 'some time they give us diseases',\n", - " 'only can cure by doctors and nurses',\n", - " 'this are the eases and squeezes',\n", - " 'ya the the eases and squeezes',\n", - " 'well you fe mind your own business',\n", - " 'you fe mind your own business',\n", - " 'through certain circumstances',\n", - " 'people a pay up the taxes',\n", - " 'to pay all the doctors and nurses',\n", - " 'to pay all soldier and police-es',\n", - " 'to build roads, street and houses',\n", - " 'you fe mind your own business',\n", - " 'jah will lick you with diseases',\n", - " 'worses than the pink eye diseases',\n", - " 'this are the eases and squeezes.',\n", - " 'god sent the gentle voices',\n", - " \"that's yellow man started deejays-es\",\n", - " 'and all the girls dem pleases',\n", - " 'this are the eases and squeezes',\n", - " 'this are the eases and squeezes',\n", - " 'me a go tell why they wear up the shorts-es',\n", - " 'they want yellow man to see their legs-es',\n", - " 'the other time i see those creases',\n", - " 'but when the breeze started to blows-es',\n", - " 'the other time it start exposes',\n", - " 'me have to cock up all me noses',\n", - " \"and i like your hair, but they're\",\n", - " 'pulling it out from the furniture.',\n", - " 'you left the lake on a lighter note,',\n", - " 'but i could tell you were crying home.',\n", - " 'and i felt different lying on the sand',\n", - " 'while you washed out.',\n", - " 'you pulled my foot to let the water rush',\n", - " 'around my chest.',\n", - " 'all you ever wanted to do was prove me wrong.',\n", - " 'all you ever wanted to do was prove me wrong.',\n", - " \"and i'll hold your hair, but you're\",\n", - " 'throwing up all on the furniture.',\n", - " 'you pulled my shirt off alone again,',\n", - " 'but i could tell you were caving in.',\n", - " 'it would almost seem that the gitanos and gitanas, or male and female gipsies, had been sent into the world for the sole purpose of thieving. born of parents who are thieves, reared among thieves, and educated as thieves, they finally go forth perfected in their vocation, accomplished at all points, and ready for every species of roguery. in them the love of thieving, and the ability to exercise it, are qualities inseparable from their existence, and never lost until the hour of their death.',\n", - " 'now it chanced that an old woman of this race, one who had merited retirement on full pay as a veteran in the ranks of cacus, brought up a girl whom she called preciosa, and declared to be her granddaughter. to this child she imparted all her own acquirements, all the various tricks of her art. little preciosa became the most admired dancer in all the tribes of gipsydom; she was the most beautiful and discreet of all their maidens; nay she shone conspicuous not only among the gipsies, but even as compared with the most lovely and accomplished damsels whose praises were at that time sounded forth by the voice of fame. neither sun, nor wind, nor all those vicissitudes of weather, to which the gipsies are more constantly exposed than any other people, could impair the bloom of her complexion or embrown her hands; and what is more remarkable, the rude manner in which she was reared only served to reveal that she must have sprung from something better than the gitano stock; for she was extremely pleasing and courteous in conversation, and lively though she was, yet in no wise did she display the least unseemly levity; on the contrary, amidst all her sprightliness, there was at the same time so much genuine decorum in her manner, that in the presence of preciosa no gitana, old or young, ever dared to sing lascivious songs, or utter unbecoming words.',\n", - " 'the grandmother fully perceived what a treasure she had in her grandchild; and the old eagle determined to set her young eaglet flying, having been careful to teach her how to live by her talons. preciosa was rich in hymns, ballads, seguidillas, sarabands, and other ditties, especially romances, which she sang with peculiar grace; for the cunning grandmother knew by experience that such accomplishments, added to the youth and beauty of her granddaughter, were the best means of increasing her capital, and therefore she failed not to promote their cultivation in every way she could. nor was the aid of poets wanting; for some there are who do not disdain to write for the gipsies, as there are those who invent miracles for the pretended blind, and go snacks with them in what they gain from charitable believers.',\n", - " 'during her childhood, preciosa lived in different parts of castile; but in her sixteenth year her grandmother brought her to madrid, to the usual camping-ground of the gipsies, in the fields of santa barbara. madrid seemed to her the most likely place to find customers; for there everything is bought and sold. preciosa made her first appearance in the capital on the festival of santa anna, the patroness of the city, when she took part in a dance performed by eight gitanas, with one gitano, an excellent dancer, to lead them. the others were all very well, but such was the elegance of preciosa, that she fascinated the eyes of all the spectators. amidst the sound of the tambourine and castanets, in the heat of the dance, a murmur of admiration arose for the beauty and grace of preciosa; but when they heard her sing—for the dance was accompanied with song—the fame of the gitana reached its highest point; and by common consent the jewel offered as the prize of the best dancer in that festival was adjudged to her. after the usual dance in the church of santa maria, before the image of the glorious santa anna, preciosa caught up a tambourine, well furnished with bells, and having cleared a wide circle around her with pirouettes of exceeding lightness, she sang a hymn to the patroness of the day. it was the admiration of all who heard her. some said, \"god bless the girl!\" others, \"\\'tis a pity that this maiden is a gitana: truly she deserves to be the daughter of some great lord!\" others more coarsely observed, \"let the wench grow up, and she will show you pretty tricks; she is closing the meshes of a very nice net to fish for hearts.\" another more good-natured but ill-bred and stupid, seeing her foot it so lightly, \"keep it up! keep it up! courage, darling! grind the dust to atoms!\" \"never fear,\" she answered, without losing a step; \"i\\'ll grind it to atoms.\"',\n", - " 'at the vespers and feast of santa anna preciosa was somewhat fatigued; but so celebrated had she become for beauty, wit, and discretion, as well as for her dancing, that nothing else was talked of throughout the capital. a fortnight afterwards, she returned to madrid, with three other girls, provided with their tambourines and a new dance, besides a new stock of romances and songs, but all of a moral character; for preciosa would never permit those in her company to sing immodest songs, nor would she ever sing them herself. the old gitana came with her, for she now watched her as closely as argus, and never left her side, lest some one should carry her off. she called her granddaughter, and the girl believed herself to be her grandchild.',\n", - " 'the young gitanas began their dance in the shade, in the calle de toledo, and were soon encircled by a crowd of spectators. whilst they danced, the old woman gathered money among the bystanders, and they showered it down like stones on the highway; for beauty has such power that it can awaken slumbering charity. the dance over, preciosa said, \"if you will give me four quartos, i will sing by myself a beautiful romance about the churching of our lady the queen doña margarita. it is a famous composition, by a poet of renown, one who may be called a captain in the battalion of poets.\" no sooner had she said this, than almost every one in the ring cried out, \"sing it, preciosa; here are my four quartos;\" and so many quartos were thrown down for her, that the old gitana had not hands enough to pick them up. when the gathering was ended, preciosa resumed her tambourine, and sang the promised romance, which was loudly encored, the whole audience crying out with one voice, \"sing again, preciosa, sing again, and dance for us, girl: thou shalt not want quartos, whilst thou hast the ground beneath thy feet.\"',\n", - " 'whilst more than two hundred persons were thus looking on at the dance, and listening to the singing of the gitana, one of the lieutenants of the city passed by; and seeing so many people together, he asked what was the occasion of the crowd. being told that the handsome gitana was singing there, the lieutenant, who was not without curiosity, drew near also to listen, but in consideration of his dignity, he did not wait for the end of the romance. the gitanilla, however, pleased him so much, that he sent his page to tell the old crone to come to his house that evening with her troop, as he wished his wife doña clara to hear them. the page delivered the message, and the old gitana promised to attend.',\n", - " 'after the performance was ended, and the performers were going elsewhere, a very well-dressed page came up to preciosa, and giving her a folded paper, said, \"pretty preciosa, will you sing this romance? it is a very good one, and i will give you others from time to time, by which you will acquire the fame of having the best romances in the world.\"',\n", - " '\"i will learn this one with much willingness,\" replied preciosa; \"and be sure, señor, you bring me the others you speak of, but on condition that there is nothing improper in them. if you wish to be paid for them, we will agree for them by the dozen; but do not expect to be paid in advance; that will be impossible. when a dozen have been sung, the money for a dozen shall be forthcoming.\"',\n", - " '\"if the señora preciosa only pays me for the paper,\" said the page, \"i shall be content. moreover, any romance which does not turn out so well shall not be counted.\"',\n", - " '\"i will retain the right of choice,\" said preciosa; and then she continued her way with her companions up the street, when some gentlemen called and beckoned to them from a latticed window. preciosa went up and looked through the window, which was near the ground, into a cheerful, well-furnished apartment, in which several cavaliers were walking about, and others playing at various games. \"will you give me a share of your winnings, señors?\" said preciosa, in the lisping accent of the gipsies, which she spoke not by nature but from choice. at the sight of preciosa, and at the sound of her voice, the players quitted the tables, the rest left off lounging, and all thronged to the window, for her fame had already reached them. \"come in! let the little gipsies come in,\" said the cavaliers, gaily; \"we will certainly give them a share of our winnings.\"',\n", - " '\"but you might make it cost us dear, señors,\" said preciosa.',\n", - " '\"no, on the honour of gentlemen,\" said one, \"you may come in, niña, in full security that no one will touch the sole of your shoe. i swear this to you by the order i wear on my breast;\" and as he spoke he laid his hand on the cross of the order of calatrava which he wore.',\n", - " '\"if you like to go in, preciosa,\" said one of the gitanillas who were with her, \"do so by all means; but i do not choose to go where there are so many men.\"',\n", - " '\"look you, christina,\" answered preciosa, \"what you have to beware of is one man alone; where there are so many there is nothing to fear. of one thing you may be sure, christina; the woman who is resolved to be upright may be so amongst an army of soldiers. it is well, indeed, to avoid occasions of temptation, but it is not in crowded rooms like this that danger lurks.\"',\n", - " '\"well then, let us go in, preciosa,\" said her companion, \"you know more than a witch.\"',\n", - " 'the old gipsy also encouraged them to go in, and that decided the question. as soon as they had entered the room, the cavalier of the order, seeing the paper which preciosa carried, stretched out his hand to take it. \"do not take it from me,\" she said: \"it is a romance but just given to me, and which i have not yet had time to read.\"',\n", - " '\"and do you know how to read, my girl?\" said one of the cavaliers.',\n", - " '\"ay, and to write too,\" said the old woman. \"i have brought up my grandchild as if she was a lawyer\\'s daughter.\"',\n", - " 'the cavalier opened the paper, and finding a gold crown inclosed in it, said, \"truly, preciosa, the contents of this letter are worth the postage. here is a crown inclosed in the romance.\"',\n", - " '\"the poet has treated me like a beggar,\" said preciosa; \"but it is certainly a greater marvel for one of his trade to give a crown than for one of mine to receive it. if his romances come to me with this addition, he may transscribe the whole romancero general and send me every piece in it one by one. i will weigh their merit; and if i find there is good matter in them, i will not reject them. read the paper aloud, señor, that we may see if the poet is as wise as he is liberal.\" the cavalier accordingly read as follows:—',\n", - " \"sweet gipsy girl, whom envy's self\",\n", - " 'must own of all fair maids the fairest,',\n", - " 'ah! well befits thy stony heart',\n", - " 'the name thou, preciosa,',\n", - " 'bearest.',\n", - " 'if as in beauty, so in pride',\n", - " 'and cruelty thou grow to sight,',\n", - " 'woe worth the land, woe worth the age',\n", - " 'which brought thy fatal charms to light.',\n", - " 'a basilisk in thee we see,',\n", - " 'which fascinates our gaze and kills.',\n", - " 'no empire mild is thine, but one',\n", - " \"that tyrannises o'er our wills.\",\n", - " \"how grew such charms 'mid gipsy tribes,\",\n", - " 'from roughest blasts without a shield?',\n", - " 'how such a perfect chrysolite',\n", - " 'could humble manzanares yield?',\n", - " 'river, for this thou shalt be famed,',\n", - " 'like tagus with its golden show,',\n", - " 'and more for preciosa prized',\n", - " 'than ganges with its lavish flow.',\n", - " 'in telling fortunes who can say',\n", - " 'what dupes to ruin thou beguilest?',\n", - " \"good luck thou speak'st with smiling lips.\",\n", - " 'but luckless they on whom thou smilest!',\n", - " \"tis said they're witches every one,\",\n", - " 'the women of the gipsy race;',\n", - " 'and all men may too plainly see',\n", - " 'that thou hast witchcraft in thy face.',\n", - " 'a thousand different modes are thine',\n", - " 'to turn the brain; for rest or move,',\n", - " 'speak, sing, be mute, approach, retire,',\n", - " 'thou kindlest still the fire of love.',\n", - " 'the freest hearts bend to thy sway,',\n", - " 'and lose the pride of liberty;',\n", - " 'bear witness mine, thy captive thrall,',\n", - " 'which would not, if it could, be free.',\n", - " 'these lines, thou precious gem of love,',\n", - " 'whose praise all power of verse transcend,',\n", - " 'he who for thee will live or die,',\n", - " 'thy poor and humble lover sends.',\n", - " '\"the poem ends with \\'poor\\' in the last line,\" said preciosa; \"and that is a bad sign. lovers should never begin by saying that they are poor, for poverty, it strikes me, is a great enemy to love.\"',\n", - " '\"who teaches you these things, girl?\" said one of the cavaliers.',\n", - " '\"who should teach me?\" she replied. \"have i not a soul in my body? am i not fifteen years of age? i am neither lame, nor halt, nor maimed in my understanding. the wit of a gipsy girl steers by a different compass from that which guides other people. they are always forward for their years. there is no such thing as a stupid gitano, or a silly gitana. since it is only by being sharp and ready that they can earn a livelihood, they polish their wits at every step, and by no means let the moss grow under their feet. you see these girls, my companions, who are so silent. you may think they are simpletons, but put your fingers in their mouths to see if they have cut their wise teeth; and then you shall see what you shall see. there is not a gipsy girl of twelve who does not know as much as one of another race at five-and-twenty, for they have the devil and much practice for instructors, so that they learn in one hour what would otherwise take them a year.\"',\n", - " 'the company were much amused by the gitana\\'s chat, and all gave her money. the old woman sacked thirty reals, and went off with her flock as merry as a cricket to the house of the señor lieutenant, after promising that she would return with them another day to please such liberal gentlemen. doña clara, the lieutenant\\'s lady, had been apprised of the intended visit of the gipsies, and she and her doncellas and dueñas, as well as those of another señora, her neighbour, were expecting them as eagerly as one looks for a shower in may. they had come to see preciosa. she entered with her companions, shining among them like a torch among lesser lights, and all the ladies pressed towards her. some kissed her, some gazed at her; others blessed her sweet face, others her graceful carriage. \"this, indeed, is what you may call golden hair,\" cried doña clara; \"these are truly emerald eyes.\" the señora, her neighbour, examined the gitanilla piecemeal. she made a pepetoria of all her joints and members, and coming at last to a dimple in her chin, she said, \"oh, what a dimple! it is a pit into which all eyes that behold it must fall.\" thereupon an esquire in attendance on doña clara, an elderly gentleman with a long beard, exclaimed, \"call you this a dimple, señora? i know little of dimples then if this be one. it is no dimple, but a grave of living desires. i vow to god the gitanilla is such a dainty creature, she could not be better if she was made of silver or sugar paste. do you know how to tell fortunes, niña?\"',\n", - " '\"that i do, and in three or four different manners,\" replied preciosa.',\n", - " '\"you can do that too?\" exclaimed doña clara. \"by the life of my lord the lieutenant, you must tell me mine, niña of gold, niña of silver, niña of pearls, niña of carbuncles, niña of heaven, and more than that cannot be said.\"',\n", - " '\"give the niña the palm of your hand, señora, and something to cross it with,\" said the old gipsy; \"and you will see what things she will tell you, for she knows more than a doctor of medicine.\"',\n", - " 'the señora tenienta put her hand in her pocket, but found it empty; she asked for the loan of a quarto from her maids, but none of them had one, neither had the señora her neighbour. preciosa seeing this, said, \"for the matter of crosses all are good, but those made with silver or gold are best. as for making the sign of the cross with copper money, that, ladies, you must know lessens the luck, at least it does mine. i always like to begin by crossing the palm with a good gold crown, or a piece of eight, or at least a quarto, for, i am like the sacristans who rejoice when there is a good collection.\"',\n", - " '\"how witty you are,\" said the lady visitor; then turning to the squire, \"do you happen to have a quarto about you, señor contreras? if you have, give it me, and when my husband the doctor comes you shall have it again.\"',\n", - " '\"i have one,\" replied contreras, \"but it is pledged for two-and-twenty maravedis for my supper; give me so much and i will fly to fetch it.\"',\n", - " '\"we have not a quarto amongst us all,\" said doña clara, \"and you ask for two-and-twenty maravedis? go your ways, contreras, for a tiresome blockhead, as you always were.\"',\n", - " 'one of the damsels present, seeing the penury of the house, said to preciosa, \"niña, will it be of any use to make the cross with a silver thimble?\"',\n", - " '\"certainly,\" said preciosa; \"the best crosses in the world are made with silver thimbles, provided there are plenty of them.\"',\n", - " '\"i have one,\" said the doncella; \"if that is enough, here it is, on condition that my fortune be told too.\"',\n", - " '\"so many fortunes to be told for a thimble!\" exclaimed the old gipsy. \"make haste, granddaughter, for it will soon be night.\" preciosa took the thimble, and began her sooth saying.',\n", - " 'pretty lady, pretty lady,',\n", - " 'with a hand as silver fair,',\n", - " 'how thy husband dearly loves thee',\n", - " \"'tis superfluous to declare.\",\n", - " \"thou'rt a dove, all milk of kindness;\",\n", - " 'yet at times too thou canst be',\n", - " 'wrathful as a tiger, or a',\n", - " 'lioness of barbary.',\n", - " 'thou canst show thy teeth when jealous;',\n", - " \"truly the lieutenant's sly;\",\n", - " 'loves with furtive sports to vary',\n", - " 'magisterial gravity.',\n", - " 'what a pity! one worth having',\n", - " \"woo'd thee when a maiden fair.\",\n", - " 'plague upon all interlopers!',\n", - " \"you'd have made a charming pair.\",\n", - " 'sooth, i do not like to say it,',\n", - " 'yet it may as well be said;',\n", - " 'thou wilt be a buxom widow;',\n", - " 'twice again shalt thou be wed.',\n", - " 'do not weep, my sweet senora;',\n", - " 'we gitanas, you must know,',\n", - " 'speak not always true as gospel',\n", - " 'weep not then sweet lady so.',\n", - " 'if the thought is too distressing,',\n", - " 'losing such a tender mate,',\n", - " 'thou hast but to die before him,',\n", - " \"to escape a widow's fate.\",\n", - " \"wealth abundant thou'lt inherit,\",\n", - " 'and that quickly, never fear:',\n", - " 'thou shalt have a son, a canon,',\n", - " '—of what church does not appear;',\n", - " \"not toledo; no, that can't be;\",\n", - " 'and a daughter—let me see—',\n", - " \"ay, she'll rise to be an abbess;\",\n", - " '—that is, if a nun she be.',\n", - " 'if thy husband do not drop off',\n", - " 'from this moment in weeks four,',\n", - " 'burgos him, or salamanca,',\n", - " 'shall behold corregidor.',\n", - " 'meanwhile keep thyself from tripping:',\n", - " 'where thou walkest, many a snare',\n", - " 'for the feet of pretty ladies',\n", - " 'naughty gallants lay: beware!',\n", - " 'other things still more surprising',\n", - " 'shall on friday next be told,',\n", - " 'things to startle and delight thee,',\n", - " \"when i've crossed thy palm with gold.\",\n", - " 'preciosa having finished this oracular descant for the lady of the house, the rest of the company were all eager to have their fortunes told likewise, but she put them off till the next friday, when they promised to have silver coin ready for crossing their palms. the señor lieutenant now came in, and heard a glowing account of the charms and accomplishments of the leading gitana. having made her and her companions dance a little, he emphatically confirmed the encomiums bestowed on preciosa; and putting his hand in his pocket he groped and rummaged about in it for a while, but at last drew his hand out empty, saying, \"upon my life i have not a doit. give preciosa a real, doña clara; i will give it you by and by.\"',\n", - " '\"that is all very well, señor,\" the lady replied; \"but where is the real to come from? amongst us all we could not find a quarto to cross our hands with.\"',\n", - " '\"well, give her some trinket or another, that preciosa may come another day to see us, when we will treat her better.\"',\n", - " '\"no,\" said doña clara, \"i will give her nothing to-day, and i shall be sure she will come again.\"',\n", - " '\"on the contrary,\" said preciosa, \"if you give me nothing. i will never come here any more. sell justice, señor lieutenant, sell justice, and then you will have money. do not introduce new customs, but do as other magistrates do, or you will die of hunger. look you, señor, i have heard say that money enough may be made of one\\'s office to pay any mulets that may be incurred, and to help one to other appointments.\"',\n", - " '\"so say and do those who have no conscience,\" said the lieutenant; \"but the judge who does his duty will have no mulet to pay; and to have well discharged his office, will be his best help to obtain another.\"',\n", - " '\"your worship speaks like a very saint,\" replied preciosa; \"proceed thus, and we shall snip pieces off your old coats for relics.\"',\n", - " '\"you know a great deal, preciosa,\" said the lieutenant; \"say no more, and i will contrive that their majesties shall see you, for you are fit to be shown to a king.\"',\n", - " '\"they will want me for a court fool,\" said the gitanilla, \"and as i never shall learn the trade, your pains will be all for nothing. if they wanted me for my cleverness, they might have me; but in some palaces fools thrive better than the wise. i am content to be a gitana, and poor, and let heaven dispose of me as it pleases.\"',\n", - " '\"come along, niña,\" said the old gipsy; \"say no more, you have said a great deal already, and know more than i ever taught you. don\\'t put too fine a point to your wit for fear it should get blunted; speak of things suitable to your years; and don\\'t set yourself on the high ropes, lest you should chance to have a fall.\"',\n", - " '\"the deuce is in these gitanas,\" said the delighted lieutenant, as they were taking their leave. the doncella of the thimble stopped them for a moment, saying to preciosa, \"tell me my fortune, or give me back my thimble, for i have not another to work with.\"',\n", - " '\"señora doncella,\" replied preciosa, \"count upon your fortune as if it were already told, and provide yourself with another; or else sew no more gussets until i come again on friday, when i will tell you more fortunes and adventures than you could read in any book of knight errantry.\"',\n", - " 'the gipsies went away, and falling in with numerous workwomen returning from madrid to their villages as usual at the ave maria, they joined company with them, as they always did for the greater security; for the old gipsy lived in perpetual terror lest some one should run away with her granddaughter.',\n", - " 'one morning after this as they were returning to madrid to levy black mail along with other gitanas, in a little valley about five hundred yards from the city, they met a handsome young gentleman richly dressed; his sword and dagger were a blazo of gold; his hat was looped with a jewelled band, and was adorned with plumes of various colours. the gitanas stopped on seeing him, and set themselves to observe his movements at their leisure, wondering much that so fine a cavalier should be alone and on foot in such a place at that early hour. he came up to them, and addressing the eldest gitana, said, \"on your life, friend, i entreat you do me the favour to let me say two words in private to you and preciosa. it shall be for your good.\"',\n", - " '\"with all my heart,\" said the old woman, \"so you do not take us much out of our way, or delay us long;\" and calling preciosa, they withdrew to some twenty paces distance, where they stopped, and the young gentleman thus addressed them: \"i am so subdued by the wit and beauty of preciosa, that after having in vain endeavoured to overcome my admiration, i have at last found the effort impossible. i, señoras (for i shall always give you that title if heaven favours my pretensions), am a knight, as this dress may show you;\" and opening his cloak he displayed the insignia of one of the highest orders in spain; \"i am the son of——\" (here he mentioned a personage whose name we suppress for obvious reasons), \"and am still under tutelage and command. i am an only son, and expect to inherit a considerable estate. my father is here in the capital, looking for a certain post which by all accounts he is on the point of obtaining. being then of the rank and condition which i have declared to you, i should yet wish to be a great lord for the sake of preciosa, that i might raise her up to my own level, and make her my equal and my lady. i do not seek to deceive; the love i bear her is too deep for any kind of deception; i only desire to serve her in whatever way shall be most agreeable to her; her will is mine; for her my heart is wax to be moulded as she pleases but enduring as marble to retain whatever impression she shall make upon it. if you believe me i shall fear no discouragement from any other quarter, but if you doubt me, i shall despond. my name is——; my father\\'s i have already given you; he lives in such a house in such a street and you may inquire about him and me of the neighbours, and of others also; for our name and quality are not so obscure but that you may hear of us about the court, and every, where in the capital. i have here a hundred crowns in gold to present to you, as earnest of what i mean to give you hereafter; for a man will be no niggard of his wealth who has given away his very soul.\"',\n", - " 'whilst the cavalier was speaking, preciosa watched him attentively, and doubtless she saw nothing to dislike either in his language or his person. turning to the old woman, she said, \"pardon me, grandmother, if i take the liberty of answering this enamoured señor myself.\"',\n", - " '\"make whatever answer you please, granddaughter,\" said the old woman, \"for i know you have sense enough for anything.\" so preciosa began.',\n", - " '\"señor cavalier,\" she said, \"though i am but a poor gitana and humbly born, yet i have a certain fantastic little spirit within me, which moves me to great things. promises do not tempt me, nor presents sap my resolution, nor obsequiousness allure, nor amorous wiles ensnare me; and although by my grandmother\\'s reckoning i shall be but fifteen next michaelmas, i am already old in thought, and have more understanding than my years would seem to promise. this may, perhaps, be more from nature than from experience; but be that as it may, i know that the passion of love is an impetuous impulse, which violently distorts the current of the will, makes it dash furiously against all impediments, and recklessly pursue the desired object. but not unfrequently when the lover believes himself on the point of gaining the heaven of his wishes, he falls into the hell of disappointment. or say that the object is obtained, the lover soon becomes wearied of his so much desired treasure, and opening the eyes of his understanding he finds that what before was so devoutly adored is now become abhorrent to him. the fear of such a result inspires me with so great a distrust, that i put no faith in words, and doubt many deeds. one sole jewel i have, which i prize more than life, and that is my virgin purity, which i will not sell for promises or gifts, for sold it would be in that case, and if it could be bought, small indeed would be its value. nor is it to be filched from me by wiles or artifices; rather will i carry it with me to my grave, and perhaps to heaven, than expose it to danger by listening to specious tales and chimeras. it is a flower which nothing should be allowed to sully, even in imagination if it be possible. nip the rose from the spray, and how soon it fades! one touches it, another smells it, a third plucks its leaves, and at last the flower perishes in vulgar hands. if you are come then, señor, for this booty, you shall never bear it away except bound in the ties of wedlock. if you desire to be my spouse, i will be yours; but first there are many conditions to be fulfilled, and many points to be ascertained.',\n", - " '\"in the first place i must know if you are the person you declare yourself to be. next, should i find this to be true, you must straightway quit your father\\'s mansion, and exchange it for our tents, where, assuming the garb of a gipsy, you must pass two years in our schools, during which i shall be able to satisfy myself as to your disposition, and you will become acquainted with mine. at the end of that period, if you are pleased with me and i with you, i will give myself up to you as your wife; but till then i will be your sister and your humble servant, and nothing more. consider, señor, that during the time of this novitiate you may recover your sight, which now seems lost, or at least disordered, and that you may then see fit to shun what now you pursue with so much ardour. you will then be glad to regain your lost liberty, and having done so, you may by sincere repentance obtain pardon of your family for your faults. if on these conditions you are willing to enlist in our ranks, the matter rests in your own hands; but if you fail in any one of them, you shall not touch a finger of mine.\"',\n", - " 'the youth was astounded at preciosa\\'s decision, and remained as if spell-bound, with his eyes bent on the ground, apparently considering what answer he should return. seeing this, preciosa said to him, \"this is not a matter of such light moment that it can or ought to be resolved on the spot. return, señor, to the city, consider maturely what is best for you to do; and you may speak with me in this same place any week-day you please, as we are on our way to or from madrid.\"',\n", - " '\"when heaven disposed me to love you, preciosa,\" replied the cavalier, \"i determined to do for you whatever it might be your will to require of me, though it never entered my thoughts that you would make such a demand as you have now done; but since it is your pleasure that i should comply with it, count me henceforth as a gipsy, and put me to all the trials you desire, you will always find me the same towards you as i now profess myself. fix the time when you will have me change my garb. i will leave my family under pretext of going to flanders, and will bring with me money for my support for some time. in about eight days i shall be able to arrange for my departure, and i will contrive some means to get rid of my attendants, so as to be free to accomplish my purpose. what i would beg of you (if i might make bold to ask any favour) is that, except to-day for the purpose of inquiring about me and my family, you go no more to madrid, for i would not that any of the numerous occasions that present themselves there, should deprive me of the good fortune i prize so dearly.\"',\n", - " '\"not so, señor gallant,\" said preciosa: \"wherever i go i must be free and unfettered; my liberty must not be restrained or encumbered by jealousy. be assured, however, that i will not use it to such excess, but that any one may see from a mile off that my honesty is equal to my freedom. the first charge, therefore, i have to impose upon you is, that you put implicit confidence in me; for lovers who begin by being jealous, are either silly or deficient in confidence.\"',\n", - " '\"you must have satan himself within you, little one,\" said the old gipsy; \"why you talk like a bachelor of salamanca. you know all about love and jealousy and confidence. how is this? you make me look like a fool, and i stand listening to you as to a person possessed, who talks latin without knowing it.\"',\n", - " '\"hold your peace, grandmother,\" replied preciosa; \"and know that all the things you have heard me say are mere trifles to the many greater truths that remain in my breast.\"',\n", - " 'all that preciosa said, and the sound sense she displayed, added fuel to the flame that burned in the breast of the enamoured cavalier. finally, it was arranged that they should meet in the same place on that day sennight, when he would report how matters stood with him, and they would have had time to inquire into the truth of what he had told them. the young gentleman then took out a brocaded purse in which he said there were a hundred gold crowns, and gave it to the old woman; but preciosa would by no means consent that she should take them.',\n", - " '\"hold your tongue, niña,\" said her grandmother; \"the best proof this señor has given of his submission, is in thus having yielded up his arms to us in token of surrender. to give, upon whatever occasion it may be, is always the sign of a generous heart. moreover, i do not choose that the gitanas should lose, through my fault, the reputation they have had for long ages of being greedy of lucre. would you have me lose a hundred crowns, preciosa? a hundred crowns in gold that one may stitch up in the hem of a petticoat not worth two reals, and keep them there as one holds a rent-charge on the pastures of estramadura! suppose that any of our children, grandchildren, or relations should fall by any mischance into the hands of justice, is there any eloquence so sure to touch the ears of the judge as the music of these crowns when they fall into his purse? three times, for three different offences, i have seen myself all but mounted on the ass to be whipped; but once i got myself off by means of a silver mug, another time by a pearl necklace, and the third time with the help of forty pieces of eight, which i exchanged for quartos, throwing twenty reals into the bargain. look you, niña, ours is a very perilous occupation, full of risks and accidents; and there is no defence that affords us more ready shelter and succour than the invincible arms of the great philip: nothing beats the plus ultra. for the two faces of a doubloon, a smile comes over the grim visage of the procurator and of all the other ministers of mischief, who are downright harpies to us poor gitanas, and have more mercy for highway robbers than for our poor hides. let us be ever so ragged and wretched in appearance, they will not believe that we are poor, but say that we are like the doublets of the gavachos of belmont, ragged and greasy and full of doubloons.\"',\n", - " '\"say no more, for heaven\\'s sake, grandmother,\" said preciosa; \"do not string together so many arguments for keeping the money, but keep it, and much good may it do you. i wish to god you would bury it in a grave out of which it may never return to the light, and that there may never be any need of it. we must, however, give some of it to these companions of ours, who must be tired of waiting so long for us.\"',\n", - " '\"they shall see one coin out of this purse as soon as they will see the grand turk,\" the old woman replied. \"the good señor will try if he has any silver coin or a few coppers remaining, to divide amongst them, for they will be content with a little.\"',\n", - " '\"yes, i have,\" he said, and he took from his pocket three pieces of eight which he divided among the gitanas, with which they were more delighted than the manager of a theatre when he is placarded as victor in a contest with a rival. finally it was settled that the party should meet there again in a week, as before mentioned, and that the young man\\'s gipsy name should be andrew caballero, for that was a surname not unknown among the gipsies. andrew (as we shall henceforth call him) could not find courage to embrace preciosa, but darting his very soul into her with a glance, he went away without it, so to speak, and returned to madrid. the gipsies followed soon after; and preciosa, who already felt a certain interest in the handsome and amiable andrew, was anxious to learn if he was really what he said.',\n", - " 'they had not gone far before they met the page of the verses and the gold crown. \"welcome, preciosa,\" he said, coming up to her. \"have you read the lines i gave you the other day?\"',\n", - " '\"before i answer you a word,\" said she, \"you must, by all you love best, tell me one thing truly.\"',\n", - " '\"upon that adjuration,\" he replied, \"i could not refuse an answer to any question, though it should cost me my head.\"',\n", - " '\"well, then, what i want to know is this: are you, perchance, a poet?\"',\n", - " '\"if i were one, it would certainly be perchance,\" said the page; \"but you must know, preciosa, that the name of poet is one which very few deserve. thus i am not a poet, but only a lover of poetry; yet for my own use i do not borrow of others. the verses i gave you were mine, as are these also which i give you now; but i am not a poet for all that—god forbid.\"',\n", - " '\"is it such a bad thing to be a poet?\" preciosa asked.',\n", - " '\"it is not a bad thing,\" he answered; \"but to be a poet and nothing else i do not hold to be very good. we should use poetry like a rich jewel, the owner of which does not wear it every day, or show it to all people, but displays it only at suitable times. poetry is a beautiful maiden, chaste, honest, discreet, reserved, and never overstepping the limits of perfect refinement. she is fond of solitude; she finds pleasure and recreation among fountains, meadows, trees, and flowers; and she delights and instructs all who are conversant with her.\"',\n", - " '\"i have heard for all that,\" said preciosa, \"that she is exceedingly poor; something of a beggar in short.\"',\n", - " '\"it is rather the reverse,\" said the page, \"for there is no poet who is not rich, since they all live content with their condition; and that is a piece of philosophy which few understand. but what has moved you, preciosa, to make this inquiry?\"',\n", - " '\"i was moved to it, because, as i believe all poets, or most of them, to be poor, that crown which you gave me wrapped up with the verses caused me some surprise; but now that i know that you are not a poet, but only a lover of poetry, it may be that you are rich, though i doubt it, for your propensity is likely to make you run through all you have got. it is a well-known saying, that no poet can either keep or make a fortune.\"',\n", - " '\"but the saying is not applicable to me,\" said the page. \"i make verses, and i am neither rich nor poor; and without feeling it or making a talk about it, as the genoese do of their invitations, i can afford to give a crown, or even two, to whom i like. take then, precious pearl, this second paper, and this second crown enclosed in it, without troubling yourself with the question whether i am a poet or not. i only beg you to think and believe that he who gives you this would fain have the wealth of midas to bestow upon you.\"',\n", - " 'preciosa took the paper, and feeling a crown within it, she said, \"this paper bids fair to live long, for it has two souls within it, that of the crown and that of the verses, which, of course, are full of souls and hearts as usual. but please to understand, señor page, that i do not want so many souls; and that unless you take back one of them, i will not receive the other on any account. i like you as a poet and not as a giver of gifts; and thus we may be the longer friends, for your stock of crowns may run out sooner than your verses.\"',\n", - " '\"well,\" said the page, \"since you will have it that i am poor, do not reject the soul i present to you in this paper, and give me back the crown, which, since it has been touched by your hand, shall remain with me as a hallowed relic as long as i live.\"',\n", - " \"preciosa gave him the crown, and kept the paper, but would not read it in the street. the page went away exulting in the belief that preciosa's heart was touched, since she had treated him with such affability.\",\n", - " 'it being now her object to find the house of andrew\\'s father, she went straight to the street, which she well knew, without stopping anywhere to dance. about half way down it, she saw the gilded iron balcony which andrew had mentioned to her, and in it a gentleman of about fifty years of age, of noble presence, with a red cross on his breast. this gentleman seeing the gitanilla, called out, \"come up here, niñas, and we will give you something.\" these words brought three other gentlemen to the balcony, among whom was the enamoured andrew. the instant he cast his eyes on preciosa he changed colour, and well nigh swooned, such was the effect her sudden appearance had upon him. the girls went up stairs, whilst the old woman remained below to pump the servants with respect to andrew. as they entered the room, the elder gentleman was saying to the others, \"this is no doubt the handsome gitanilla who is so much talked of in madrid.\"',\n", - " '\"it is,\" said andrew; \"and she is unquestionably the most beautiful creature that ever was seen.\"',\n", - " '\"so they say,\" said preciosa, who had overheard these remarks as she came in; \"but indeed they must be half out in the reckoning. i believe i am pretty well, but as handsome as they say—not a bit of it!\"',\n", - " '\"by the life of don juanico, my son,\" said the elder gentleman, \"you are far more so, fair gitana.\"',\n", - " '\"and who is don juanico, your son?\" said preciosa.',\n", - " '\"that gallant by your side,\" said the cavalier.',\n", - " '\"truly, i thought your worship had sworn by some bantling of two years old,\" said preciosa. \"what a pretty little pet of a don juanico! why he is old enough to be married; and by certain lines on his forehead, i foresee that married he will be before three years are out, and much to his liking too, if in the meantime he be neither lost nor changed.\"',\n", - " '\"ay, ay,\" said one of the company; \"the gitanilla can tell the meaning of a wrinkle.\"',\n", - " 'during this time, the three gipsy girls, who accompanied preciosa, had got their heads together and were whispering each other. \"girls,\" said christina, \"that is the gentleman that gave us the three pieces of eight this morning.\"',\n", - " '\"sure enough,\" said they; \"but don\\'t let us say a word about it unless he mentions it. how do we know but he may wish to keep it secret?\"',\n", - " 'whilst the three were thus conferring together, preciosa replied to the last remark about wrinkles. \"what i see with my eyes, i divine with my fingers. of the señor don juanico, i know without lines that he is somewhat amorous, impetuous, and hasty; and a great promiser of things that seem impossible. god grant he be not a deceiver, which would be worse than all. he is now about to make a long journey; but the bay horse thinks one thing, and the man that saddles him thinks another thing. man proposes and god disposes. perhaps he may think he is bound for oñez, and will find himself on the way to gaviboa.\"',\n", - " '\"in truth, gitana,\" said don juan, \"you have guessed right respecting me in several points. i certainly intend, with god\\'s will, to set out for flanders in four or five days, though you forebode that i shall have to turn out of my road; yet i hope no obstacle will occur to frustrate my purpose.\"',\n", - " '\"say no more, señorito,\" the gipsy replied; \"but commend yourself to god, and all will be well. be assured i know nothing at all of what i have been saying. it is no wonder if i sometimes hit the mark, since i talk so much and always at random. i wish i could speak to such good purpose as to persuade you not to leave home, but remain quietly with your parents to comfort their old age; for i am no friend to these flanders expeditions, especially for a youth of your tender years. wait till you are grown a little more and better able to bear the toils of war; and the rather as you have war enough at home, considering all the amorous conflicts that are raging in your bosom. gently, gently with you, madcap! look what you are doing before you marry; and now give us a little dole for god\\'s sake and for the name you bear; for truly i believe you are well born, and if along with this you are loyal and true, then i will sing jubilee for having hit the mark in all i have said to you.\"',\n", - " '\"i told you before, niña,\" said don juan, otherwise andrew caballero, \"that you were right on every point except as to the fear you entertain that i am not quite a man of my word. in that respect you are certainly mistaken. the word that i pledge in the field i fulfil in the town, or wherever i may be, without waiting to be asked; for no man can esteem himself a gentleman, who yields in the least to the vice of falsehood. my father will give you alms for god\\'s sake and for mine; for in truth i gave all i had this morning to some ladies, of whom i would not venture to assert that they are as obliging as they are beautiful, one of them especially.\"',\n", - " 'hearing this, christina said to her companions, \"may i be hanged, girls, if he is not talking of the three pieces of eight he gave us this morning.\"',\n", - " '\"no, that can\\'t be,\" one of them observed; \"for he said they were ladies, and we are none; and being so true-spoken as he says he is, he would not lie in this matter.\"',\n", - " '\"oh, but,\" said christina, \"that is not a lie of any moment that is told without injury to anybody, but for the advantage and credit of him who tells it. be that as it may, i see he neither gives us anything, nor asks us to dance.\"',\n", - " 'the old gipsy now came into the room and said, \"make haste, granddaughter; for it is late, and there is much to be done, and more to be said.\"',\n", - " '\"what is it, grandmother?\" said preciosa, \"a boy or a girl?\"',\n", - " '\"a boy, and a very fine one. come along, preciosa, and you shall hear marvels.\"',\n", - " '\"god grant the mother does not die of her after pains,\" said the granddaughter.',\n", - " '\"we will take all possible care of her. she has had a very good time, and the child is a perfect beauty.\"',\n", - " '\"has any lady been confined?\" said andrew\\'s father.',\n", - " '\"yes, señor,\" replied the old gitana: \"but it is such a secret, that no one knows of it except preciosa, myself, and one other person. so we cannot mention the lady\\'s name.\"',\n", - " '\"well, we don\\'t want to know it,\" said one of the gentlemen present; \"but god help the lady who trusts her secret to your tongues, and her honour to your aid.\"',\n", - " '\"we are not all bad,\" replied preciosa; \"perhaps there may be one among us who piques herself on being as trusty and as true as the noblest man in this room. let us begone, grandmother; for here we are held in little esteem, though in truth we are neither thieves nor beggars.\"',\n", - " '\"do not be angry, preciosa,\" said andrew\\'s father. \"of you at least i imagine no one can presume anything ill, for your good looks are warrant for your good conduct. do me the favour to dance a little with your companions. i have here a doubloon for you with two faces, and neither of them as good as your own, though they are the faces of two kings.\"',\n", - " 'the moment the old woman heard this she cried, \"come along, girls: tuck up your skirts, and oblige these gentlemen.\" preciosa took the tambourine, and they all danced with so much grace and freedom, that the eyes of all the spectators were riveted upon their steps, especially those of andrew, who gazed upon preciosa as if his whole soul was centred in her; but an untoward accident turned his delight into anguish. in the exertion of the dance, preciosa let fall the paper given her by the page. it was immediately picked up by the gentleman who had no good opinion of the gipsies. he opened it, and said, \"what have we here? a madrigal? good! break off the dance, and listen to it; for, as far as i can judge from the beginning, it is really not bad.\" preciosa was annoyed at this, as she did not know the contents of the paper; and she begged the gentleman not to read it, but give it back to her. all her entreaties, however, only made andrew more eager to hear the lines, and his friend read them out as follows:—',\n", - " 'who hath preciosa seen',\n", - " 'dancing like the fairy queen?',\n", - " 'ripplets on a sunlit river',\n", - " 'like her small feet glance and quiver.',\n", - " 'when she strikes the timbrel featly,',\n", - " 'when she warbles, oh how sweetly!',\n", - " 'pearls from her white hands she showers,',\n", - " 'from her rosy lips drop flowers.',\n", - " 'not a ringlet of her hair',\n", - " 'but doth thousand souls ensnare.',\n", - " 'not a glance of her bright eyes',\n", - " \"but seems shot from love's own skies.\",\n", - " 'he in obeisance to this sovereign maid,',\n", - " 'his bow and quiver at her feet hath laid.',\n", - " '\"por dios!\" exclaimed the reader, \"he is a dainty poet who wrote this.\"',\n", - " '\"he is not a poet, señor,\" said preciosa, \"but a page, and a very gallant and worthy man.\"',\n", - " '\"mind what you say, preciosa,\" returned the other; \"for the praises you bestow on the page are so many lance-thrusts through andrew\\'s heart. look at him as he sits aghast, thrown back on his chair, with a cold perspiration breaking through all his pores. do not imagine, maiden, that he loves you so lightly but that the least slight from you distracts him. go to him, for god\\'s sake, and whisper a few words in his ear, that may go straight to his heart, and recall him to himself. go on receiving such madrigals as this every day, and just see what will come of it.\"',\n", - " 'it was just as he had said. andrew had been racked by a thousand jealousies on hearing the verses; and was so overcome that his father observed it, and cried out, \"what ails you, don juan? you are turned quite pale, and look as if you were going to faint.\"',\n", - " '\"wait a moment,\" said preciosa, \"let me whisper certain words in his ear, and you will see that he will not faint.\" then bending over him she said, almost without moving her lips, \"a pretty sort of gitano you will make! why, andrew, how will you be able to bear the torture with gauze, when you are overcome by a bit of paper?\" then making half-a-dozen signs of the cross over his heart, she left him, after which andrew breathed a little, and told his friends that preciosa\\'s words had done him good.',\n", - " \"finally, the two-faced doubloon was given to preciosa, who told her companions that she would change it, and share the amount honourably with them. andrew's father intreated her to leave him in writing the words she had spoken to his son, as he wished by all means to know them. she said she would repeat them with great pleasure; and that though they might appear to be mere child's play, they were of sovereign virtue to preserve from the heartache and dizziness of the head. the words were these:—\",\n", - " 'silly pate, silly pate,',\n", - " 'why run on at this rate?',\n", - " 'no tripping, or slipping, or sliding!',\n", - " 'have trusty assurance,',\n", - " 'and patient endurance',\n", - " 'and ever be frank and confiding.',\n", - " 'to ugly suspicion',\n", - " 'refuse all admission,',\n", - " 'nor let it your better sense twist over.',\n", - " 'all this if you do',\n", - " \"you'll not rue,\",\n", - " 'for excellent things will ensue,',\n", - " 'with the good help of god and st. christopher.',\n", - " '\"only say these words,\" she continued, \"over any person who has a swimming in the head, making at the same time six signs of the cross over his heart, and he will soon be as sound as an apple.\"',\n", - " 'when the old woman heard the charm, she was amazed at the clever trick played by her granddaughter; and andrew was still more so when he found that the whole was an invention of her quick wit. preciosa left the madrigal in the hands of the gentleman, not liking to ask for it, lest she should again distress andrew; for she knew, without any one teaching her, what it was to make a lover feel the pangs of jealousy. before she took her leave, she said to don juan, \"every day of the week, señor, is lucky for beginning a journey: not one of them is black. hasten your departure, therefore, as much as you can; for there lies before you a free life of ample range and great enjoyment, if you choose to accommodate yourself to it.\"',\n", - " '\"it strikes me that a soldier\\'s life is not so free as you say,\" replied andrew, \"but one of submission rather than liberty. however, i will see what i can do.\"',\n", - " '\"you will see more than you think for,\" said preciosa; \"and may god have you in his keeping, and lead you to happiness, as your goodly presence deserves.\"',\n", - " 'these farewell words filled andrew with delight; the gitanas went away no less gratified, and shared the doubloon between them, the old woman as usual taking a part and a half, both by reason of her seniority, as because she was the compass by which they steered their course on the wide sea of their dances, pleasantry, and tricks.',\n", - " 'at last the appointed day of meeting came, and andrew arrived in the morning at the old trysting place, mounted on a hired mule, and without any attendant. he found preciosa and her grandmother waiting for him, and was cordially welcomed by them. he begged they would take him at once to the rancho, before it was broad day, that he might not be recognised should he be sought for. the two gitanas, who had taken the precaution to come alone, immediately wheeled round, and soon arrived with him at their huts. andrew entered one of them, which was the largest in the rancho, where he was forthwith assisted by ten or twelve gitanos, all handsome strapping young fellows, whom the old woman had previously informed respecting the new comrade who was about to join them. she had not thought it necessary, to enjoin them to secrecy; for, as we have already said, they habitually observed it with unexampled sagacity and strictness. their eyes were at once on the mule, and said one of them, \"we can sell this on thursday in toledo.\"',\n", - " '\"by no means,\" said andrew; \"for there is not a hired mule in madrid, or any other town, but is known to all the muleteers that tramp the roads of spain.\"',\n", - " '\"por dios, señor andrew,\" said one of the gang, \"if there were more signs and tokens upon the mule than are to precede the day of judgment, we will transform it in such a manner that it could not be known by the mother that bore it, or the master that owned it.\"',\n", - " '\"that maybe,\" said andrew; \"but for this time you must do as i recommend. this mule must be killed, and buried where its bones shall never be seen.\"',\n", - " '\"put the innocent creature to death!\" cried another gipsy. \"what a sin! don\\'t say the word, good andrew; only do one thing. examine the beast well, till you have got all its marks well by heart; then let me take it away, and if in two hours from this time you are able to know, it again, let me be basted like a runaway negro.\"',\n", - " '\"i must insist upon the mule\\'s being put to death,\" said andrew, \"though i were ever so sure of its transformation. i am in fear of being discovered unless it is put under ground. if you object for sake of the profit to be made by selling it, i am not come so destitute to this fraternity but that i can pay my footing with more than the price of four mules.\"',\n", - " '\"well, since the señor andrew caballero will have it so,\" said the other gitano, \"let the sinless creature die, though god knows how much it goes against me, both because of its youth, for it has not yet lost mark of mouth, a rare thing among hired mules, and because it must be a good goer, for it has neither scars on its flank nor marks of the spur.\"',\n", - " \"the slaughter of the mule was postponed till night, and the rest of the day was spent in the ceremonies of andrew's initiation. they cleared out one of the best huts in the encampment, dressed it with boughs and rushes, and seating andrew in it on the stump of a cork tree, they put a hammer and tongs in his hands, and made him cut two capers to the sound of two guitars. they then bared one of his arms, tied round it a new silk ribbon through which they passed a short stick, and gave it two turns gently, after the manner of the garotte with which criminals are strangled. preciosa was present at all this, as were many other gitanas, old and young, some of whom gazed at andrew with admiration, others with love, and such was his good humour, that even the gitanos took most kindly to him.\",\n", - " 'these ceremonies being ended, an old gipsy took preciosa by the hand, and setting her opposite andrew, spoke thus: \"this girl, who is the flower and cream of all beauty among the gitanas of spain, we give to you either for your wife or your mistress, for in that respect you may do whatever shall be most to your liking, since our free and easy life is not subject to squeamish scruples or to much ceremony. look at her well, and see if she suits you, or if there is anything in her you dislike; if there is, choose from among the maidens here present the one you like best, and we will give her to you. but bear in mind that once your choice is made, you must not quit it for another, nor make or meddle either with the married women or the maids. we are strict observers of the law of good fellowship; none among us covets the good that belongs to another. we live free and secure from the bitter plague of jealousy; and though incest is frequent amongst us there is no adultery. if a wife or a mistress is unfaithful, we do not go ask the courts of justice to punish; but we ourselves are the judges and executioners of our wives and mistresses, and make no more ado about killing and burying them in the mountains and desert places than if they were vermin. there are no relations to avenge them, no parents to call us to account for their deaths. by reason of this fear and dread, our women learn to live chaste; and we, as i have said, feel no uneasiness about their virtue.',\n", - " '\"we have few things which are not common to us all, except wives and mistresses, each of whom we require to be his alone to whom fortune has allotted her. among us divorce takes place, because of old age as well as by death. any man may if he likes leave a woman who is too old for him, and choose one more suitable to his years. by means of these and other laws and statutes we contrive to lead a merry life. we are lords of the plains, the corn fields, the woods, mountains, springs, and rivers. the mountains yield us wood for nothing, the orchards fruit, the vineyards grapes, the gardens vegetables, the fountains water, the rivers fish, the parks feathered game; the rocks yield us shade, the glades and valleys fresh air, and the caves shelter. for us the inclemencies of the weather are zephyrs, the snow refreshment, the rain baths, the thunder music, and the lightning torches. for us the hard ground is a bed of down; the tanned skin of our bodies is an impenetrable harness to defend us; our nimble limbs submit to no obstacle from iron bars, or trenches, or walls; our courage is not to be twisted out of us by cords, or choked by gauze, or quelled by the rack.',\n", - " '\"between yes and no we make no difference when it suits our convenience to confound them; we always pride ourselves more on being martyrs than confessors. for us the beasts of burden are reared in the fields, and pockets are filled in the cities. no eagle or other bird of prey pounces more swiftly on its quarry than we upon opportunities that offer us booty. and finally, we possess many qualities which promise us a happy end; for we sing in prison, are silent on the rack, work by day, and by night we thieve, or rather we take means to teach all men that they should exempt themselves from the trouble of seeing where they put their property. we are not distressed by the fear of losing our honour, or kept awake by ambition to increase it. we attach ourselves to no parties; we do not rise by day-light to attend levees and present memorials, or to swell the trains of magnates, or to solicit favours. our gilded roofs and sumptuous palaces are these portable huts; our flemish pictures and landscapes are those which nature presents to our eyes at every step in the rugged cliffs and snowy peaks, the spreading meads and leafy groves. we are rustic astronomers, for as we sleep almost always under the open sky, we can tell every hour by day or night. we see how aurora extinguishes and sweeps away the stars from heaven, and how she comes forth with her companion the dawn, enlivening the air, refreshing the water, and moistening the earth; and after her appears the sun gilding the heights, as the poet sings, and making the mountains smile. we are not afraid of being left chilly by his absence, when his rays fall aslant upon us, or of being roasted when they blaze down upon us perpendicularly. we turn the same countenance to sun and frost, to dearth and plenty. in conclusion, we are people who live by our industry and our wits, without troubling ourselves with the old adage, \\'the church, the sea, or the king\\'s household.\\' we have all we want, for we are content with what we have.',\n", - " '\"all these things have i told you, generous youth, that you may not be ignorant of the life to which you are come, and the manners and customs you will have to profess, which i have here sketched for you in the rough. many other particulars, no less worthy of consideration, you will discover for yourself in process of time.\"',\n", - " 'here the eloquent old gitano closed his discourse, and the novice replied, that he congratulated himself much on having been made acquainted with such laudable statutes; that he desired to make profession of an order so based on reason and politic principles; that his only regret was that he had not sooner come to the knowledge of so pleasant a life; and that from that moment he renounced his knighthood, and the vain glory of his illustrious lineage, and placed them beneath the yoke, or beneath the laws under which they lived, forasmuch as they so magnificently recompensed the desire he had to serve them, in bestowing upon him the divine preciosa, for whom he would surrender many crowns and wide empires, or desire them only for her sake.',\n", - " 'preciosa spoke next: \"whereas these señores, our lawgivers,\" she said, \"have determined, according to their laws that i should be yours, and as such have given me up to you, i have decreed, in accordance with the law of my own will, which is the strongest of all, that i will not be so except upon the conditions heretofore concerted between us two. you must live two years in our company before you enjoy mine, so that you may neither repent through fickleness, nor i be deceived through precipitation. conditions supersede laws; those which i have prescribed you know; if you choose to keep them, i may be yours, and you mine; if not, the mule is not dead, your clothes are whole, and not a doit of your money is spent. your absence from home has not yet extended to the length of a day; what remains you may employ in considering what best suits you. these señores may give up my body to you, but not my soul, which is free, was born free, and shall remain free. if you remain, i shall esteem you much; if you depart, i shall do so no less; for i hold that amorous impulses run with a loose rein, until they are brought to a halt by reason or disenchantment. i would not have you be towards me like the sportsman, who when he has bagged a hare thinks no more of it, but runs after another. the eyes are sometimes deceived; at first sight tinsel looks like gold; but they soon recognise the difference between the genuine and the false metal. this beauty of mine, which you say i possess, and which you exalt above the sun, and declare more precious than gold, how do i know but that at a nearer view it will appear to you a shadow, and when tested will seem but base metal? i give you two years to weigh and ponder well what will be right to choose or reject. before you buy a jewel, which you can only get rid of by death, you ought to take much time to examine it, and ascertain its faults or its merits. i do not assent to the barbarous licence which these kinsmen of mine have assumed, to forsake their wives or chastise them when the humour takes them; and as i do not intend to do anything which calls for punishment, i will not take for my mate one who will abandon me at his own caprice.\"',\n", - " '\"you are right, preciosa,\" said andrew; \"and so if you would have me quiet your fears and abate your doubts, by swearing not to depart a jot from the conditions you prescribe, choose what form of oath i shall take, or what other assurance i shall give you, and i will do exactly as you desire.\"',\n", - " '\"the oaths and promises which the captive makes to obtain his liberty are seldom fulfilled when he is free,\" returned preciosa; \"and it is just the same, i fancy, with the lover, who to obtain his desire will promise the wings of mercury, and the thunderbolts of jove; and indeed a certain poet promised myself no less, and swore it by the stygian lake. i want no oaths or promises, señor andrew, but to leave everything to the result of this novitiate. it will be my business to take care of myself, if at any time you should think of offending me.\"',\n", - " '\"be it so,\" said andrew. \"one request i have to make of these señores and comrades mine, and that is that they will not force me to steal anything for a month or so; for it strikes me that it will take a great many lessons to make me a thief.\"',\n", - " '\"never fear, my son,\" said the old gipsy; \"for we will instruct you in such a manner that you will turn out an eagle in our craft; and when you have learned it, you will like it so much, that you will be ready to eat your hand, it will so itch after it. yes, it is fine fun to go out empty-handed in the morning, and to return loaded at night to the rancho.\"',\n", - " '\"i have seen some return with a whipping,\" said andrew.',\n", - " '\"one cannot catch trouts dry shod,\" the old man replied: \"all things in this life have their perils: the acts of the thief are liable to the galleys, whipping, and the scragging-post; but it is not because one ship encounters a storm, or springs a leak, that others should cease to sail the seas. it would be a fine thing if there were to be no soldiers, because war consumes men and horses. besides, a whipping by the hand of justice is for us a badge of honour, which becomes us better worn on the shoulders than on the breast. the main point is to avoid having to dance upon nothing in our young days and for our first offences; but as for having our shoulders dusted, or thrashing the water in a galley, we don\\'t mind that a nutshell. for the present, andrew, my son, keep snug in the nest under the shelter of our wings; in duo time, we will take you out to fly, and that where you will not return without a prey; and the short and the long of it is, that by and by you will lick your fingers after every theft.\"',\n", - " '\"meanwhile,\" said andrew, \"as a compensation for what i might bring in by thieving during the vacation allowed me, i will divide two hundred gold crowns among all the members of the rancho.\"',\n", - " 'the words were no sooner out of his mouth, than several gitanos caught him up in their arms, hoisted him upon their shoulders, and bore him along, shouting, \"long life to the great andrew, and long life to preciosa his beloved!\" the gitanas did the same with preciosa, not without exciting the envy of christina, and the other gitanillas present; for envy dwells alike in the tents of barbarians, the huts of shepherds, and the palaces of princes; and to see another thrive who seems no better than oneself is a great weariness to the spirit.',\n", - " \"this done, they ate a hearty dinner, made an equitable division of the gift money, repeated their praises of andrew, and exalted preciosa's beauty to the skies. when night fell, they broke the mule's neck, and buried it, so as to relieve andrew of all fear of its leading to his discovery; they likewise buried with it the trappings, saddle, bridle, girths and all, after the manner of the indians, whose chief ornaments are laid in the grave with them.\",\n", - " 'andrew was in no small astonishment at all he had seen and heard, and resolved to pursue his enterprise without meddling at all with the customs of his new companions, so far as that might be possible. especially he hoped to exempt himself, at the cost of his purse, from participating with them in any acts of injustice. on the following day, andrew requested the gipsies to break up the camp, and remove to a distance from madrid; for he feared that he should be recognised if he remained there. they told him they had already made up their minds to go to the mountains of toledo, and thence to scour all the surrounding country, and lay it under contribution. accordingly they struck their tents, and departed, offering andrew an ass to ride; but he chose rather to travel on foot, and serve as attendant to preciosa, who rode triumphantly another ass, rejoicing in her gallant esquire; whilst he was equally delighted at finding himself close to her whom he had made the mistress of his freedom.',\n", - " 'o potent force of him who is called the sweet god of bitterness—a title given him by our idleness and weakness—how effectually dost thou enslave us! here was andrew, a knight, a youth of excellent parts, brought up at court, and maintained in affluence by his noble parents; and yet since yesterday such a change has been wrought in him that he has deceived his servants and friends; disappointed the hopes of his parents; abandoned the road to flanders, where he was to have exercised his valour and increased the honours of his line; and he has prostrated himself at the feet of a girl, made himself the lackey of one who, though exquisitely beautiful, is after all a gitana! wondrous prerogative of beauty, which brings down the strongest will to its feet, in spite of all its resistance!',\n", - " \"in four days' march, the gipsies arrived at a pleasant village, within two leagues of the great toledo, where they pitched their camp, having first given some articles of silver to the alcalde of the district, as a pledge that they would steal nothing within all his bounds, nor do any other damage that might give cause of complaint against them. this done, all the old gitanas, some young ones, and the men, spread themselves all over the country, to the distance of four or five leagues from the encampment. andrew went with them to take his first lesson in thievery; but though they gave him many in that expedition, he did not profit by any of them. on the contrary, as was natural in a man of gentle blood, every theft committed by his masters wrung his very soul, and sometimes he paid for them out of his own pocket, being moved by the tears of the poor people who had been despoiled. the gipsies were in despair at this behavior: it was in contravention, they said, of their statutes and ordinances, which prohibited the admission of compassion into their hearts; because if they had any they must cease to be thieves,—a thing which was not to be thought of on any account. seeing this, andrew said he would go thieving by himself; for he was nimble enough to run from danger, and did not lack courage to encounter it; so that the prize or the penalty of his thieving would be exclusively his own.\",\n", - " 'the gipsies tried to dissuade him from this good purpose, telling him that occasions might occur in which he would have need of companions, as well to attack as to defend; and that one person alone could not make any great booty. but in spite of all they could say, andrew was determined to be a solitary robber; intending to separate from the gang, and purchase for money something which he might say he had stolen, and thus burden his conscience as little as possible. proceeding in this way, in less than a month, he brought more gain to the gang than four of the most accomplished thieves in it. preciosa rejoiced not a little to see her tender lover become such a smart and handy thief; but for all that she was sorely afraid of some mischance, and would not have seen him in the hands of justice for all the treasures of venice; such was the good feeling towards him which she could not help entertaining, in return for his many good offices and presents. after remaining about a month in the toledan district, where they reaped a good harvest, the gipsies entered the wealthy region of estramadura.',\n", - " \"meanwhile andrew frequently held honourable and loving converse with preciosa, who was gradually becoming enamoured of his good qualities; while, in like manner, his love for her went on increasing, if that were possible: such were the virtues, the good sense and beauty of his preciosa. whenever the gipsies engaged in athletic games, he carried off the prize for running and leaping: he played admirably at skittles and at ball, and pitched the bar with singular strength and dexterity. in a short while, his fame spread through all estramadura, and there was no part of it where they did not speak of the smart young gitano andrew, and his graces and accomplishments. as his fame extended, so did that of preciosa's beauty; and there was no town, village, or hamlet, to which they were not invited, to enliven their patron saints' days, or other festivities. the tribe consequently became rich, prosperous, and contented, and the lovers were happy in the mere sight of each other.\",\n", - " 'it happened one night, when the camp was pitched among some evergreen oaks, a little off the highway, they heard their dogs barking about the middle watch, with unusual vehemence. andrew and some others got up to see what was the matter, and found a man dressed in white battling with them, whilst one of them held him by the leg. \"what the devil brought you here, man,\" said one of the gipsies, after they had released him, \"at such an hour, away from the high road? did you come to thieve? if so, you have come to the right door?\"',\n", - " '\"i do not come to thieve; and i don\\'t know whether or not i am off the road, though i see well enough that i am gone astray,\" said the wounded man. \"but tell me, señores, is there any venta or place of entertainment where i can get a night\\'s lodging, and dress the wounds which these dogs have given me?\"',\n", - " '\"there is no venta or public place to which we can take you,\" replied andrew; \"but as for a night\\'s lodging, and dressing your wounds, that you can have at our ranchos. come along with us; for though we are gipsies, we are not devoid of humanity.\"',\n", - " '\"god reward you!\" said the man: \"take me whither you please, for my leg pains me greatly.\" andrew lifted him up, and carried him along with the help of some of the other compassionate gipsies; for even among the fiends there are some worse than others, and among many bad men you may find one good.',\n", - " 'it was a clear moonlight night, so that they could see that the person they carried was a youth of handsome face and figure. he was dressed all in white linen, with a sort of frock of the same material belted round his waist. they arrived at andrew\\'s hut or shed, quickly kindled a fire, and fetched preciosa\\'s grandmother to attend to the young man\\'s hurts. she took some of the dogs\\' hairs, fried them in oil, and after washing with wine the two bites she found on the patient\\'s left leg, she put the hairs and the oil upon them, and over this dressing a little chewed green rosemary. she then bound the leg up carefully with clean bandages, made the sign of the cross over it, and said, \"now go to sleep, friend and with the help of god your hurts will not signify.\"',\n", - " 'whilst they were attending to the wounded man, preciosa stood by, eyeing him with great curiosity, whilst he did the same by her, insomuch that andrew took notice of the eagerness with which he gazed; but he attributed this to the extraordinary beauty of preciosa, which naturally attracted all eyes. finally, having done all that was needful for the youth, they left him alone on a bed of dry hay, not caring to question him then as to his road, or any other matter.',\n", - " 'as soon as all the others were gone, preciosa called andrew aside, and said to him, \"do you remember, andrew, a paper i let fall in your house, when i was dancing with my companions, and which caused you, i think, some uneasiness?\"',\n", - " '\"i remember it well,\" said andrew; \"it was a madrigal in your praise, and no bad one either.\"',\n", - " '\"well, you must know, andrew, that the person who wrote those verses is no other than the wounded youth we have left in the hut. i cannot be mistaken, for he spoke to me two or three times in madrid, and gave me too a very good romance. he was then dressed, i think, as a page,—not an ordinary one, but like a favourite of some prince. i assure you, andrew, he is a youth of excellent understanding, and remarkably well behaved; and i cannot imagine what can have brought him hither, and in such a garb.\"',\n", - " '\"what should you imagine, preciosa, but that the same power which has made me a gitano, has made him put on the dress of a miller, and come in search of you? ah, preciosa! preciosa! how plain it begins to be that you pride yourself on having more than one adorer. if this be so, finish me first, and then kill off this other, but do not sacrifice both at the same time to your perfidy.\"',\n", - " '\"god\\'s mercy, andrew, how thin-skinned you are! on how fine a thread you make your hopes and my reputation hang, since you let the cruel sword of jealousy so easily pierce your soul. tell me, andrew, if there were any artifice or deceit in this case, could i not have held my tongue about this youth, and concealed all knowledge of him? am i such a fool that i cannot help telling you what should make you doubt my integrity and good behaviour? hold your tongue, andrew, in god\\'s name, and try to-morrow to extract from this cause of your alarm whither he is bound, and why he is come hither. it may be that you are mistaken in your suspicion, though i am not mistaken in what i told you of the stranger. and now for your greater satisfaction—since it is come to that pass with me that i seek to satisfy you—whatever be the reason of this youth\\'s coming, send him away at once. all our people obey you, and none of them will care to receive him into their huts against your wish. but if this fails, i give you my word not to quit mine, or let myself be seen by him, or by anybody else from whom you would have me concealed. look you, andrew, i am not vexed at seeing you jealous, but it would vex me much to see you indiscreet.\"',\n", - " '\"unless you see me mad, preciosa,\" said andrew, \"any other demonstration would be far short of showing you what desperate havoc jealousy can make of a man\\'s feelings. however, i will do as you bid me, and find out what this señor page-poet wants, whither he is going, and whom he is in search of. it may be, that unawares he may let me get hold of some end of thread which shall lead to the discovery of the whole snare which i fear he is come to set for me.\"',\n", - " '\"jealousy, i imagine,\" said preciosa, \"never leaves the understanding clear to apprehend things as they really are. jealousy always looks through magnifying glasses, which make mountains of molehills, and realities of mere suspicions. on your life, andrew, and on mine, i charge you to proceed in this matter, and all that touches our concerns, with prudence and discretion; and if you do, i know that you will have to concede the palm to me, as honest, upright, and true to the very utmost.\"',\n", - " 'with these words she quitted andrew, leaving him impatient for daylight, that he might receive the confession of the wounded man, and distracted in mind by a thousand various surmises. he could not believe but that this page had come thither attracted by preciosa\\'s beauty; for the thief believes that all men are such as himself. on the other hand, the pledge voluntarily made to him by preciosa appeared so highly satisfactory, that he ought to set his mind quite at ease, and commit all his happiness implicitly to the keeping of her good faith. at last day appeared: he visited the wounded man; and after inquiring how he was, and did his bites pain him, he asked what was his name, whither he was going, and how it was he travelled so late and so far off the road. the youth replied that he was better, and felt no pain so that he was able to resume his journey. his name was alonzo hurtado; he was going to our lady of the peña de francia, on a certain business; he travelled by night for the greater speed; and having missed his way, he had come upon the encampment, and been worried by the dogs that guarded it. andrew did not by any means consider this a straightforward statement: his suspicions returned to plague him; and, said he, \"brother, if i were a judge, and you had been brought before me upon any charge which would render necessary such questions as those i have put to you, the reply you have given would oblige me to apply the thumb-screw. it is nothing to me who you are, what is your name, or whither you are going: i only warn you, that if it suits your convenience to lie on this journey, you should lie with more appearance of truth. you say you are going to la peña de francia, and you leave it on the right hand more than thirty leagues behind this place. you travel by night for sake of speed, and you quit the high road, and strike into thickets and woods where there is scarcely a footpath. get up, friend, learn to lie better, and go your ways, in god\\'s name. but in return for this good advice i give you, will you not tell me one truth? i know you will, you are such a bad hand at lying. tell me, are you not one i have often seen in the capital, something between a page and a gentleman? one who has the reputation of being a great poet, and who wrote a romance and a sonnet upon a gitanilla who some time ago went about madrid, and was celebrated for her surpassing beauty? tell me, and i promise you, on the honour of a gentleman gipsy, to keep secret whatever you may wish to be so kept. mind you, no denial that you are the person i say will go down with me; for the face i see before me is unquestionably the same i saw in madrid. the fame of your talents made me often stop to gaze at you as a distinguished man, and therefore your features are so strongly impressed on my memory, though your dress is very different from that in which i formerly saw you. don\\'t be alarmed, cheer up, and don\\'t suppose you have fallen in with a tribe of robbers, but with an asylum, where you may be guarded and defended from all the world. a thought strikes me; and if it be as i conjecture, you have been lucky in meeting me above all men. what i conjecture is, that being in love with preciosa—that beautiful young gipsy, to whom you addressed the verses—you have come in search of her; for which i don\\'t think a bit the worse of you, but quite the reverse: for gipsy though i am, experience has shown me how far the potent force of love reaches, and the transformations it makes those undergo whom it brings beneath its sway and jurisdiction. if this be so, as i verily believe it is, the fair gitanilla is here.\"',\n", - " '\"yes, she is here; i saw her last night,\" said the stranger. this was like a death-blow to andrew; for it seemed at once to confirm all his suspicions.',\n", - " '\"i saw her last night,\" the young man repeated; \"but i did not venture to tell her who i was, for it did not suit my purpose.\"',\n", - " '\"so, then,\" said andrew, \"you are indeed the poet of whom i spoke.\"',\n", - " '\"i am: i neither can nor will deny it. possibly it may be that where i thought myself lost i have come right to port, if, as you say, there is fidelity in the forests, and hospitality in the mountains.\"',\n", - " '\"that there is, beyond doubt,\" said andrew; \"and among us gipsies the strictest secrecy in the world. on that assurance, señor, you may unburden your breast to me: you will find in mine no duplicity whatever. the gitanilla is my relation, and entirely under my control. if you desire her for a wife, myself and all other relations will be quite willing; and if for a mistress, we will not make any squeamish objections, provided you have money, for covetousness never departs from our ranchos.\"',\n", - " '\"i have money,\" the youth replied; \"in the bands of this frock, which i wear girt round my body, there are four hundred gold crowns.\"',\n", - " 'this was another mortal blow for andrew, who assumed that the stranger could carry so large a sum about him for no other purpose than to purchase possession of the beloved object. with a faltering tongue he replied, \"that is a good lump of money; you have only to discover yourself, and go to work: the girl is no fool, and will see what a good thing it will be for her to be yours.\"',\n", - " '\"o friend,\" exclaimed the youth, \"i would have you know that the power which has made me change my garb is not that of love, as you say, nor any longing for preciosa; for madrid has beauties who know how to steal hearts and subdue souls as well as the handsomest gitanas, and better; though i confess that the beauty of your kinswoman surpasses any i have ever seen. the cause of my being in this dress, on foot, and bitten by dogs, is not love but my ill luck.\"',\n", - " \"upon this explanation, andrew's downcast spirit began to rise again; for it was plain that the wind was in quite a different quarter from what he had supposed. eager to escape from this confusion, he renewed his assurances of secrecy, and the stranger proceeded thus:—\",\n", - " '\"i was in madrid, in the house of a nobleman, whom i served not as a master but as a relation. he had an only son and heir, who treated me with great familiarity and friendship, both on account of our relationship, and because we were both of the same age and disposition. this young gentleman fell in love with a young lady of rank, whom he would most gladly have made his wife, had it not been for his dutiful submission to the will of his parents, who desired him to marry into a higher family. nevertheless, he continued furtively to pay court to the lady of his choice, carefully concealing his proceedings from all eyes but mine. one night, which ill luck must have especially selected for the adventure i am about to relate to you, as we were passing by the lady\\'s house, we saw ranged against it two men of good figure apparently. my kinsman wished to reconnoitre them, but no sooner had he made a step towards them than their swords were out, their bucklers ready, and they made at us, whilst we did the same on our side, and engaged them with equal arms. the fight did not last long, neither did the lives of our two opponents; for two thrusts, urged home by my kinsman\\'s jealousy and my zeal in his defence, laid them both low—an extraordinary occurrence, and such as is rarely witnessed. thus involuntarily victorious, we returned home, and taking all the money we could, set off secretly to the church of san geronimo, waiting to see what would happen when the event was discovered next day, and what might be the conjectures as to the persons of the homicides.',\n", - " '\"we learned that no trace of our presence on the scene had been discovered, and the prudent monks advised us to return home, so as not by our absence to arouse any suspicion against us. we had already resolved to follow their advice, when we were informed that the alcaldes of the court had arrested the young lady and her parents; and that among their domestics, whom they examined, one person, the young lady\\'s attendant, had stated that my kinsman visited her mistress by night and by day. upon this evidence they had sent in search of us; and the officers not finding us, but many indications of our flight, it became a confirmed opinion throughout the whole city, that we were the very men who had slain the two cavaliers, for such they were, and of very good quality. finally, by the advice of the count, my relation, and of the monks, after remaining hid a fortnight in the monastery, my comrade departed in company with a monk, himself disguised as one, and took the road to aragon, intending to pass over to italy, and thence to flanders, until he should see what might be the upshot of the matter. for my part, thinking it well to divide our fortunes, i set out on foot, in a different direction, and in the habit of a lay brother, along with a monk, who quitted me at talavera. from that city i travelled alone, and missed my way, till last night i reached this wood, when i met with the mishap you know. if i asked for la peña de francia, it was only by way of making some answer to the questions put to me; for i know that it lies beyond salamanca.\"',\n", - " '\"true,\" observed andrew, \"you left it on your right, about twenty leagues from this. so you see what a straight road you were taking, if you were going thither.\"',\n", - " '\"the road i did intend to take was that to seville; for there i should find a genoese gentleman, a great friend of the count my relation, who is in the habit of exporting large quantities of silver ingots to genoa; and my design is, that he should send me with his carriers, as one of themselves, by which means i may safely reach carthagena, and thence pass over to italy; for two galleys are expected shortly to ship some silver. this is my story, good friend: was i not right in saying it is the result of pure ill luck, rather than disappointed love? now if these señores gitanos will take me in their company to seville, supposing they are bound thither, i will pay them handsomely; for i believe that i should travel more safely with them, and have some respite from the fear that haunts me.\"',\n", - " '\"yes, they will take you,\" said andrew; \"or if you cannot go with our band—for as yet i know not that we are for andalusia—you can go with another which we shall fall in with in a couple of days; and if you give them some of the money you have about you, they will be able and willing to help you out of still worse difficulties.\" he then left the young man, and reported to the other gipsies what the stranger desired, and the offer he had made of good payment for their services.',\n", - " 'they were all for having their guest remain in the camp; but preciosa was against it; and her grandmother said, that she could not go to seville or its neighbourhood, on account of a hoax she had once played off upon a capmaker named truxillo, well known in seville. she had persuaded him to put himself up to his neck in a butt of water, stark naked, with a crown of cypress on his head, there to remain till midnight, when he was to step out, and look for a great treasure, which she had made him believe was concealed in a certain part of his house. when the good cap-maker heard matins ring, he made such haste to get out of the butt, lest he should lose his chance, that it fell with him, bruising his flesh, and deluging the floor with water, in which he fell to swimming with might and main, roaring out that he was drowning. his wife and his neighbours ran to him with lights, and found him striking out lustily with his legs and arms. \"help! help!\" he cried; \"i am suffocating;\" and he really was not far from it, such was the effect of his excessive fright. they seized and rescued him from his deadly peril. when he had recovered a little, he told them the trick the gipsy woman had played him; and yet for all that, he dug a hole, more than a fathom deep, in the place pointed out to him, in spite of all his neighbours could say; and had he not been forcibly prevented by one of them, when he was beginning to undermine the foundations of the house, he would have brought the whole of it down about his ears. the story spread all over the city; so that the little boys in the streets used to point their fingers at him, and shout in his ears the story of the gipsy\\'s trick, and his own credulity. such was the tale told by the old gitana, in explanation of her unwillingness to go to seville.',\n", - " \"the gipsies, knowing from andrew that the youth had a sum of money about him, readily assented to his accompanying them, and promised to guard and conceal him as long as he pleased. they determined to make a bend to the left, and enter la mancha and the kingdom of murcia. the youth thanked them cordially, and gave them on the spot a hundred gold crowns to divide amongst them, whereupon they became as pliant as washed leather. preciosa, however, was not pleased with the continuance among them of don sancho, for that was the youth's name, but the gipsies changed it to clement. andrew too was rather annoyed at this arrangement; for it seemed to him that clement had given up his original intention upon very slight grounds; but the latter, as if he read his thoughts, told him that he was glad to go to murcia, because it was near carthagena, whence, if galleys arrived there, as he expected, he could easily pass over to italy. finally, in order to have him more under his own eye, to watch his acts, and scrutinise his thoughts, andrew desired to have clement for his own comrade, and the latter accepted this friendly offer as a signal favour. they were always together, both spent largely, their crowns came down like rain; they ran, leaped, danced, and pitched the bar better than any of their companions, and were more than commonly liked by the women of the tribe, and held in the highest respect by the men.\",\n", - " 'leaving estramadura they entered la mancha, and gradually traversed the kingdom of murcia. in all the villages and towns they passed through, they had matches at ball-playing, fencing, running, leaping, and pitching the bar; and in all these trials of strength, skill, and agility andrew and clement were victorious, as andrew alone had been before. during the whole journey, which occupied six weeks, clement neither found nor sought an opportunity to speak alone with preciosa, until one day when she and andrew were conversing together, they called him to them, and preciosa said, \"the first time you came to our camp i recognised you, clement, and remembered the verses you gave me in madrid; but i would not say a word, not knowing with what intention you had come among us. when i became acquainted with your misfortune, it grieved me to the soul, though at the same time it was a relief to me; for i had been much disturbed, thinking that as there was a don juan in the world who had become a gipsy, a don sancho might undergo transformation in like manner. i speak this to you, because andrew tells me he has made known to you who he is, and with what intention he turned gipsy.\" (and so it was, for andrew had acquainted clement with his whole story, that he might be able to converse with him on the subject nearest to his thoughts.) \"do not think that my knowing you was of little advantage to you, since for my sake, and in consequence of what i said of you, our people the more readily admitted you amongst them, where i trust in god you may find things turn out according to your best wishes. you will repay me, i hope, for this good will on my part, by not making andrew ashamed of having set his mind so low, or representing to him how ill he does in persevering in his present way of life; for though i imagine that his will is enthralled to mine, still it would grieve me to see him show signs, however slight, of repenting what he has done.\"',\n", - " '\"do not suppose, peerless preciosa,\" replied clement, \"that don juan acted lightly in revealing himself to me. i found him out beforehand: his eyes first disclosed to me the nature of his feelings; i first told him who i was, and detected that enthralment of his will which you speak of; and he, reposing a just confidence in me, made his secret mine. he can witness whether i applauded his determination and his choice; for i am not so dull of understanding, preciosa, as not to know how omnipotent is beauty; and yours, which surpasses all bounds of loveliness, is a sufficient excuse for all errors, if error that can be called for which there is so irresistible a cause. i am grateful to you, señora, for what you have said in my favour; and i hope to repay you by hearty good wishes that you may find a happy issue out of your perplexities, and that you may enjoy the love of your andrew, and andrew that of his preciosa, with the consent of his parents; so that from so beautiful a couple there may come into the world the finest progeny which nature can form in her happiest mood. this is what i shall always desire, preciosa; and this is what i shall always say to your andrew, and not anything which could tend to turn him from his well-placed affections.\"',\n", - " \"with such emotion did clement utter these words, that andrew was in doubt whether they were spoken in courtesy only, or from love; for the infernal plague of jealousy is so susceptible that it will take offence at the motes in the sunbeams; and the lover finds matter for self-torment in everything that concerns the beloved object. nevertheless, he did not give way to confirmed jealousy; for he relied more on the good faith of his preciosa than on his own fortune, which, in common with all lovers, he regarded as luckless, so long as he had not obtained the object of his desires. in fine, andrew and clement continued to be comrades and friends, their mutual good understanding being secured by clement's upright intentions, and by the modesty and prudence of preciosa, who never gave andrew an excuse for jealousy. clement was somewhat of a poet, andrew played the guitar a little, and both were fond of music. one night, when the camp was pitched in a valley four leagues from murcia, andrew seated himself at the foot of a cork-tree, and clement near him under an evergreen oak. each of them had a guitar; and invited by the stillness of the night, they sang alternately, andrew beginning the descant, and clement responding.\",\n", - " 'andrew.',\n", - " 'ten thousand golden lamps are lit on high,',\n", - " 'making this chilly night',\n", - " \"rival the noon-day's light;\",\n", - " 'look, clement, on yon star-bespangled sky,',\n", - " 'and in that image see,',\n", - " 'if so divine thy fancy be,',\n", - " 'that lovely radiant face,',\n", - " 'where centres all of beauty and of grace.',\n", - " 'clement',\n", - " 'where centres all of beauty and of grace,',\n", - " 'and where in concord sweet',\n", - " 'goodness and beauty meet,',\n", - " 'and purity hath fixed its dwelling-place.',\n", - " 'creature so heavenly fair,',\n", - " 'may any mortal genius dare,',\n", - " 'or less than tongue divine,',\n", - " 'to praise in lofty, rare, and sounding line?',\n", - " 'andrew',\n", - " 'to praise in lofty, rare, and sounding line',\n", - " 'thy name, gitana bright!',\n", - " \"earth's wonder and delight,\",\n", - " 'worthy above the empyrean vault to shine;',\n", - " 'fain would i snatch from fame',\n", - " 'the trump and voice, whose loud acclaim',\n", - " 'should startle every ear,',\n", - " ...]},\n", - " 'data': ['how happy we are today...',\n", - " 'this could be the best we got',\n", - " 'concrete rubble for concrete dreams',\n", - " 'concrete rubble for concrete dreams',\n", - " 'sooner or later it’s all',\n", - " 'sooner or later it’s all',\n", - " 'sooner or later it’s all',\n", - " 'sooner or later it’s all',\n", - " 'in the past',\n", - " 'aah',\n", - " 'hands over head',\n", - " 'where do we go?',\n", - " 'we run too fast',\n", - " \"and we're moving away too slow\",\n", - " \"but your heartbeat's fast\",\n", - " \"and my heartbeat's fast\",\n", - " 'eyes and lips',\n", - " 'too close for me',\n", - " 'i still dont know who i really want to be',\n", - " 'but your heartbeats fast',\n", - " 'and my heartbeats fast',\n", - " 'shoot it up',\n", - " 'ready to take a pill, juice the cup',\n", - " 'phenobarbital, loosen up',\n", - " 'drift away in the bottom bunk',\n", - " 'quench your love',\n", - " \"don't you want to get close to god?\",\n", - " 'evolutionary level above',\n", - " 'this wasteland of human',\n", - " \"when you wanna go it's you\",\n", - " \"when you wanna go it's you\",\n", - " 'ready for a different view',\n", - " 'different view, whoah',\n", - " \"you forget tomorrow's never gonna come again\",\n", - " 'you regret your sorrow, never could make amends',\n", - " 'you relied',\n", - " 'one by one',\n", - " 'three days later thy will be done',\n", - " 'evacuate all modern dumb',\n", - " \"they've prepared, now time has come\",\n", - " 'yes, this is what it seems',\n", - " 'isolate eternal dream',\n", - " 'wish i could kiss your cheek and cover you in that purple sheet',\n", - " \"you forget tomorrow's never gonna come again\",\n", - " 'you regret your sorrow, never could make amends',\n", - " \"you forget tomorrow's never gonna come again\",\n", - " 'you regret your sorrow, never could make amends',\n", - " \"you've forever known it's only about the ride\",\n", - " \"you've told others that it's coming in the night\",\n", - " \"you're going to the other side\",\n", - " \"you've took refuge in the plenty of their empty lives\",\n", - " 'or is this the other side?',\n", - " \"you forget tomorrow's never gonna come again\",\n", - " 'you regret your sorrow, never could make amends',\n", - " \"you forget tomorrow's never gonna come again\",\n", - " 'you regret your sorrow, never could make amends',\n", - " \"you forget tomorrow's never gonna come again\",\n", - " 'the blue around the morning noon',\n", - " 'the color of your eyes',\n", - " 'i remember holding you',\n", - " 'fall through summer skies',\n", - " \"you're everything that i've become, every word i say\",\n", - " 'i need a bell, book and candle to keep your ghost away',\n", - " 'white horses on a troubled sea',\n", - " 'your smile will flash through time',\n", - " \"up ahead a blackbird's wing\",\n", - " 'your hair will come to mind',\n", - " 'every night i see your face when i have to pray',\n", - " 'i need a bell, book and candle to keep your ghost away',\n", - " 'keep your ghost away, keep your ghost away',\n", - " 'i need a bell, book and candle to keep your ghost away',\n", - " 'just before the thunder roars',\n", - " 'i sense you next to me',\n", - " 'and as i move through nature',\n", - " 'i know where you will be',\n", - " \"so i must keep myself apart,here is where i'll stay\",\n", - " 'with a bell, book and candle to keep your ghost away',\n", - " 'subpart 519.70—gsa mentor-protégé program',\n", - " '519.7001 scope of subpart.',\n", - " 'more gsa news http://bit.do/geniuspoint',\n", - " 'the gsa mentor-protégé program is designed to encourage and motivate gsa prime contractors to assist small businesses concerns, small disadvantaged businesses concerns, women-owned small businesses concerns, veteran-owned small business concerns, service-disabled veteran-owned small businesses concerns, and hubzone small businesses concerns, and enhance their capability of performing successfully on gsa contracts and subcontracts, foster the establishment of long-term business relationships between these small business entities and gsa prime contractors, and increase the overall number of small business entities that receive gsa contract and subcontract awards.',\n", - " '519.7002 definitions.',\n", - " 'the definitions of small business concern, small disadvantaged business concern, hubzone small business concern, women-owned small business concern, veteran-owned small business concern, and service-disabled veteran-owned small business concern are the same as found in far 2.101. also see 13 cfr 121, 124, 125 and 126.',\n", - " '(a) “mentor” as used in the gsa mentor-protégé program, is a prime contractor that elects, on a specific gsa contract, to promote and develop small business subcontractors by providing developmental assistance designed to enhance the business success of the protégé.',\n", - " '(b) “mentor-protégé program manager” means an employee in the office of small business utilization (osbu) (e) designated by the associate administrator of osbu to manage the mentor-protégé program.',\n", - " '(c) “protégé” as used in the gsa mentor-protégé program is a small business concern that is the recipient of developmental assistance pursuant to a mentor-protégé arrangement on a specific gsa contract.',\n", - " '519.7003 general policy.',\n", - " '(a) a large business prime contractor that meets the requirements at section 519.7006, and is approved as a mentor firm by the mentor-protégé program manager, may enter into an agreement with a small business concern, small disadvantaged business concern, women-owned small business concern, veteran-owned small business concern, service-disabled veteran-owned small business concern or hubzone small business concern that meets the requirements for being a protégé (see 519.7007) in order to provide appropriate developmental assistance to enhance the capabilities of the protégé to perform successfully as a subcontractor and supplier.',\n", - " '(b) a small business prime contractor that is capable of providing developmental assistance to protégés, may also be approved as a mentor.',\n", - " '(c) an active mentor-protégé arrangement requires the protégé to either be a current or newly selected subcontractor under the mentor’s prime contract with gsa.',\n", - " '(d) a small business concern’s status as a protégé under a gsa contract shall not have an effect on its ability to seek other prime contracts or subcontracts.',\n", - " '(e) potential mentors may submit an application for admittance to the mentor-protégé program at any time as long as the requirements at section 519.7006 are met.',\n", - " '(f) the determination of affiliation is a function of the sba.',\n", - " '519.7004 incentives for prime contractors.',\n", - " '(a) under the small business act, 15 u.s.c. 637(d)(4)(e), the gsa is authorized to provide appropriate incentives to prime contractors in order to encourage subcontracting opportunities for small business concerns consistent with the efficient and economical performance of the contract. this authority is limited to negotiated procurements, including the gsa multiple award schedule contracts and the gsa governmentwide acquisition contracts. it does not include orders under any gsa contracts.',\n", - " '(b) costs incurred by a mentor to provide developmental assistance, as described in section 519.7012 to fulfill the terms of their agreement(s) with a protégé firm(s), are not reimbursable as a direct cost under a gsa contract. if gsa is the mentor’s responsible audit agency under far 42.703-1, gsa will consider these costs in determining indirect cost rates. if gsa is not the responsible audit agency, mentors are encouraged to enter into an advance agreement with their responsible audit agency on the treatment of such costs when determining indirect cost rates.',\n", - " '(c) in addition to paragraph (b) of this section, contracting officers may give mentors evaluation credit during the source selection process for subcontracts awarded under their subcontracting plans pursuant to their mentor-protégé agreements. (see far 15.101-1). therefore:',\n", - " '(1) contracting officers may evaluate proposals with subcontracting plans containing mentor-protégé agreements more favorably than proposals with subcontracting plans that do not include mentor-protégé agreements; and',\n", - " \"(2) contracting officers may assess the prime contractor's compliance with the subcontracting plans submitted in previous contracts as a factor in evaluating past performance under certain circumstances (see far 15.304(c)(3) and 15.305(a)(2)(v)) and determining contractor responsibility far section 19.705-5(a)(1).\",\n", - " '(d) osbu mentoring award. a non-monetary award may be presented annually to the mentoring firm providing the most effective developmental support of a protégé. the mentor-protégé program manager will recommend an award winner to the administrator of gsa.',\n", - " '(e) osbu mentor-protégé annual conference. at the conclusion of each year in the mentor-protégé program, mentor firms will be invited to brief contracting officers, program leaders, office directors, and other guests on their experience and progress under the program. participation is voluntary.',\n", - " '519.7005 measurement of program success.',\n", - " 'the overall success of the gsa mentor-protégé program encompassing all participating mentors and protégés will be measured by the extent to which it results in:',\n", - " '(a) an increase in the number, dollar value, and percentage of subcontracts awarded to protégés by mentor firms under gsa contracts since the date of entry into the program. the baseline that demonstrates an increase is determined by comparing the number and total dollar amount of subcontract awards made to the identified protégé firm(s) during the two preceding fiscal years (if any) that are listed in application;',\n", - " '(b) an increase in the number and dollar value of contract and subcontract awards (including percentage of subcontract awards) to protégé firms since the date of the protégé’s entry into the program (under gsa contracts and contracts awarded by other federal agencies);',\n", - " '(c) an increase in the number and dollar value of subcontracts awarded to a protégé firm by its mentor firm; and',\n", - " '(d) an increase in subcontracting with protégé firms in industry categories where they have not traditionally participated within the mentor firm’s activity (i.e., the protégé is expanding its field of expertise or is increasing its opportunities in areas where it has not traditionally performed).',\n", - " '(e) assessments of the semi-annual reports submitted by the mentors and “lessons learned” evaluation submitted by the mentors and protégés to the gsa mentor-protégé program manager.',\n", - " '519.7006 mentor firms.',\n", - " '(a) mentors must be:',\n", - " '(1) a large business prime contractor that is currently performing under an approved subcontracting plan as required by far 19.7 - small business mentors are exempted; or',\n", - " '(2) a small business prime contractor that can provide developmental assistance to enhance the capabilities of protégés to perform as contractors, subcontractors, and suppliers;',\n", - " '(b) must be eligible (not listed in the “excluded parties list system”) for u.s. government contracts and not excluded from the mentor-protégé program under section 519.7014(b);',\n", - " '(c) must be able to provide developmental assistance that will enhance the ability of protégés to perform as contractors and subcontractors; and',\n", - " '(d) must provide semi-annual reports detailing the assistance provided and the cost incurred in supporting protégés.',\n", - " '519.7007 protégé firms.',\n", - " '(a) for selection as a protégé, a firm must be:',\n", - " '(1) a small business concern, small disadvantaged business concern, veteran-owned small business concern, service-disabled veteran-owned small business concern, hubzone small business concern, or women-owned small business concern;',\n", - " '(2) small for the naics code the prime contractor/mentor assigns to the subcontract; and',\n", - " '(3) eligible (not listed in the “excluded parties list system”) for u.s. government contracts and not excluded from the mentor-protégé program under section 519.7014(b).',\n", - " '(b) a protégé firm may self-represent to a mentor firm that it meets the requirements set forth in paragraph (a) of this section. mentors may check the central contractor registration (ccr) at www.ccr.gov to verify that the self-representation of the potential protégé meets the specified small business and socioeconomic category eligibility requirements (see far 19.703(b) and (d)). hubzone and small disadvantaged business status eligibility and documentation requirements are determined according to 13 cfr parts 124 and 126.',\n", - " '(c) a protégé firm must not have another formal, active mentor-protégé relationship under gsa’s mentor-protégé program but may have an active mentor-protégé relationship under another agency’s program.',\n", - " '519.7008 selection of protégé firms.',\n", - " '(a) mentor firms will be solely responsible for selecting protégé firms. mentors are encouraged to select from a broad base of small business concerns including small disadvantaged business concerns, women-owned small business concerns, veteran-owned small business concerns, service-disabled veteran-owned small business concerns, and hubzone small business concerns. a protégé must be either a current subcontractor or a newly selected subcontractor for the prime contractor’s gsa contract.',\n", - " '(b) mentor firms may have more than one protégé. gsa reserves the right to limit the number of protégés participating under each mentor firm.',\n", - " '(c) the selection of protégé firms by mentor firms is not protestable, except for a protest regarding the size or eligibility status of an entity selected by a mentor to be a protégé. such protests shall be handled in accordance with far 19.703(b). the contracting officer shall notify the office of small business utilization (osbu) of the protest.',\n", - " '519.7009 application process.',\n", - " '(a) prime contractors interested in becoming a mentor firm must apply in writing by submitting the gsa form 3695 to the gsa mentor-protégé program manager, at gsa office of small business utilization (e), washington, dc 20405. the application shall include the mentor-protégé agreement and will be evaluated for approval based on the extent to which the company plans to provide developmental assistance.',\n", - " '(b) the application must contain:',\n", - " '(1) a statement that the mentor firm is currently performing under at least one active approved subcontracting plan (small business exempted) and the firm is eligible, as of the date of application, for the award of federal contracts;',\n", - " '(2) the number of proposed protégé arrangements;',\n", - " '(3) data on all current gsa contracts, and subcontracts including the contract/subcontract number(s), type of contract(s), period of performance (including options), contract/subcontract value(s) including options, technical program effort(s) (program title), name of gsa project manager or contracting officer’s representative (including contact information), name of contracting officer(s) and contact information, and awarding gsa installation;',\n", - " '(4) data on total number and dollar value of subcontracts awarded under gsa prime contracts within the past 2 years and the number and dollar value of such subcontracts awarded to entities who are proposed protégés;',\n", - " '(5) information on the proposed types of developmental assistance. for each proposed mentor-protégé relationship include information on the company’s ability to provide developmental assistance to the identified protégé firm and how that assistance will potentially increase subcontracting opportunities for the protégé firm, including subcontracting opportunities in industry categories where these entities are not dominant in the company’s current subcontractor base; and',\n", - " '(6) agreement information as listed in 519.7010.',\n", - " '519.7010 agreement contents.',\n", - " 'the contents of the agreement must contain:',\n", - " '(a) names, addresses (including facsimile, e-mail, and homepage) and telephone numbers of mentor and protégé firms and the name, telephone number, and position title within both firms of the person who will oversee the agreement.',\n", - " '(b) an eligibility statement from the protégé stating that it is a small business, its primary naics code, and when applicable the type of small business (small disadvantaged business concern, hubzone small business concern, women-owned small business concern, veteran-owned small business concern, or service-disabled veteran-owned small business concern).',\n", - " '(c) a description of the type of developmental assistance that will be provided by the mentor firm to the protégé firm (see 519.7012).',\n", - " '(d) milestones for providing the identified developmental assistance.',\n", - " '(e) factors to assess the protégé firm’s developmental progress under the program.',\n", - " '(f) the anticipated dollar value and type of subcontracts that may be awarded to the protégé firm consistent with the extent and nature of mentor firm’s business, and the period of time over which they may be awarded.',\n", - " '(g) program participation term: state the period of time over which the developmental assistance will be performed.',\n", - " '(h) mentor termination procedures: describe the procedures applicable to the mentor firm when notifying the protégé firm, in writing and at least 30 days in advance, of the mentor firm’s intent to voluntarily withdraw its participation in the program, or to terminate the agreement.',\n", - " '(i) protégé termination procedures: describe the procedures applicable to the protégé firm when notifying the mentor firm, in writing at least 30 days in advance, of the protégé firm’s intent to terminate the mentor-protégé agreement.',\n", - " '(j) plan for accomplishing contract work should the mentor-protégé agreement be terminated or a party excluded under 519.7014(b). the mentor’s prime contract with gsa continues even if the mentor-protégé agreement or the mentor-protégé program is discontinued.',\n", - " '(k) the protégé must agree to provide input into the mentor firm’s semi-annual reports (see 519.7015). the protégé must submit a “lessons learned” evaluation along with the mentor firm at the conclusion of the mentor-protégé agreement.',\n", - " '(1) other terms and conditions as specified by the mentor-protégé manager on a case-by-case basis.',\n", - " '519.7011 application review.',\n", - " '(a) the mentor-protégé program manager will review the information specified in section 519.7009(b) and 519.7010 to establish the mentor’s and protégé’s eligibility and to ensure all necessary information is included. if the application relates to a specific contract, then the mentor-protégé program manager will consult with the applicable contracting officer regarding the adequacy of the proposed agreement, as appropriate. the mentor-protégé program manager will complete its review no later than 30 days after receipt of the application. the contracting officer must provide feedback to the program manager no later than 10 days after receipt of the application.',\n", - " '(b) after the mentor-protégé program manager completes its review and provides written approval, the mentor may execute the agreement and implement the developmental assistance as provided under the agreement. the mentor-protégé program manager will provide a copy of the mentor-protégé agreement to the gsa contracting officer for any gsa contracts affected by the agreement.',\n", - " '(c) the agreement defines the relationship between the mentor and the protégé firms only. the agreement itself does not create any privity of contract or contractual relationship between the mentor and gsa nor the protégé and gsa.',\n", - " '(d) if the agreement is disapproved, the mentor may provide additional information for reconsideration. the mentor-protégé program manager will complete the review of any supplemental information no later than 30 days after its receipt. upon finding deficiencies that gsa considers correctable, the mentor-protégé program manager will notify the mentor and protégé and request correction of the deficiencies to be provided within 15 days.',\n", - " '519.7012 developmental assistance.',\n", - " 'the forms of developmental assistance a mentor can provide to a protégé include:',\n", - " '(a) management guidance relating to—',\n", - " '(1) financial management;',\n", - " '(2) organizational management;',\n", - " '(3) overall business management/planning; and',\n", - " '(4) business development.',\n", - " '(b) engineering and other technical assistance.',\n", - " '(c) loans.',\n", - " '(d) rent-free use of facilities and/or equipment.',\n", - " '(e) temporary assignment of personnel to the protégé for purpose of training.',\n", - " '(f) any other types of developmental assistance approved by the gsa mentor-protégé program manager.',\n", - " '519.7013 obligation.',\n", - " '(a) the mentor or protégé may terminate the agreement in accordance with 519.7010. the mentor will notify the mentor-protégé program manager and the contracting officer, in writing, at least 30 days in advance of the mentor firm’s intent to voluntarily withdraw from the program or to terminate the agreement, or upon receipt of a protégé’s notice to withdraw from the program.',\n", - " '(b) mentor and protégé firms will submit a “lessons learned” evaluation to the gsa mentor-protégé program manager at the conclusion or termination of each mentor-protégé agreement or withdrawal from the mentor-protégé program.',\n", - " '519.7014 internal controls.',\n", - " '(a) the gsa mentor-protégé program manager will manage the program. internal controls will be established by the mentor-protégé program manager to achieve the stated program objectives (by serving as checks and balances against undesired actions or consequences) such as:',\n", - " '(1) reviewing and evaluating mentor applications for realism, validity and accuracy of provided information;',\n", - " '(2) monitoring each mentor-protégé agreement by reviewing semi-annual progress reports submitted by mentors and protégés on protégé development to measure protégé progress against the master plan contained in the approved agreement;',\n", - " '(3) monitoring milestones in the agreement (see 519.7010); and',\n", - " '(4) evaluating “lessons learned” submitted by the mentor and the protégé as required by section 519.7013 to improve the gsa mentor-protégé program.',\n", - " '(b)(1) gsa has the authority to exclude mentor or protégé firms from participating in the gsa program.',\n", - " '(2) gsa may rescind approval of an existing mentor-protégé agreement if it determines that such action is in gsa’s best interest. the rescission shall be in writing and sent to the mentor and protégé after approval by the director of osbu. rescission of an agreement does not change the terms of any subcontract between the mentor and the protégé.',\n", - " '(3) exclusion from the program does not constitute a termination of the subcontract between the mentor and the protégé.',\n", - " '519.7015 reports.',\n", - " '(a) semi-annual reports shall be submitted by the mentor to the gsa mentor-protégé program manager to include information as outlined in section 552.219-76(c).',\n", - " '(b) protégés must agree to provide input into the mentor firm’s semi-annual reports detailing the assistance provided and goals achieved since agreement inception. however, for cost reimbursable contracts, costs associated with the preparation of these reports are unallowable costs under these government contracts and will not be reimbursed by the government.',\n", - " '(c) the gsa contracting officer, or if applicable the technical program manager, shall include an assessment of the prime contractor’s (mentor’s) performance in the mentor-protégé program in a quarterly “strengths and weaknesses” evaluation report. a copy of this assessment will be provided to the mentor-protégé program manager and to the mentor and protégé.',\n", - " '519.7016 program review.',\n", - " 'at the conclusion of each year in the mentor-protégé program (anniversary date of the mentor-protégé program), the prime contractor and protégé, as appropriate, will formally brief the gsa mentor-protégé program manager, the technical program manager, and the contracting officer regarding mentor-protégé program accomplishments pertaining to the approved agreement.',\n", - " '519.7017 contract clauses.',\n", - " '(a) the contracting officer shall insert the clause at 552.219-75, gsa mentor-protégé program, in all unrestricted solicitations (not set aside) and contracts that exceed the simplified acquisition threshold that offer subcontracting opportunities or in the case of a small business, that can offer developmental assistance to a small business protégé.',\n", - " '(b) the contracting officer shall insert the clause at 552.219-76, mentor requirements and evaluation, in contracts anticipated to exceed the simplified acquisition threshold where the prime contractor has signed a mentor-protégé agreement with gsa.',\n", - " 'i cannot live',\n", - " 'i will not die without you',\n", - " 'i cannot live',\n", - " 'i will not die without you',\n", - " 'i cannot live',\n", - " 'i will not die without you',\n", - " 'i will not die without you',\n", - " 'i will not die without you',\n", - " 'i will not die without you',\n", - " 'dream in warmth',\n", - " 'dream in warmth',\n", - " 'dream in warmth',\n", - " 'dream in warmth',\n", - " 'dream in warmth',\n", - " 'dream in warmth',\n", - " 'dream in warmth',\n", - " \"'till winter comes\",\n", - " 'dream in warmth',\n", - " \"'till winter comes\",\n", - " 'dream in warmth',\n", - " \"'till winter comes\",\n", - " 'dream in warmth',\n", - " \"'till winter comes\",\n", - " 'dream in warmth',\n", - " \"'till winter comes\",\n", - " 'tears me down like fall',\n", - " 'dream in warmth',\n", - " \"'till winter comes\",\n", - " 'tears me down like fall',\n", - " 'dream in warmth',\n", - " \"'till winter comes\",\n", - " 'tears me down like fall',\n", - " 'dream in warmth',\n", - " \"'till winter comes\",\n", - " 'tears me down like fall',\n", - " 'beware of the things hibernating in your skull',\n", - " 'the world was young, the mountains green,',\n", - " 'no stain yet on the moon was seen,',\n", - " 'no words were laid on stream or stone',\n", - " 'when durin woke and walked alone.',\n", - " 'he named the nameless hills and dells;',\n", - " 'he drank from yet untasted wells;',\n", - " 'he stooped and looked in mirrormere,',\n", - " 'and saw a crown of stars appear,',\n", - " 'as gems upon a silver thread,',\n", - " 'above the shadows of his head.',\n", - " 'the world was fair, the mountains tall,',\n", - " 'in elder days before the fall',\n", - " 'of mighty kings in nargothrond',\n", - " 'and gondolin, who now beyond',\n", - " 'the western seas have passed away:',\n", - " \"the world was fair in durin's day.\",\n", - " 'a king he was on carven throne',\n", - " 'in many-pillared halls of stone',\n", - " 'with golden roof and silver floor,',\n", - " 'and runes of power upon the door.',\n", - " 'the light of sun and star and moon',\n", - " 'in shining lamps of crystal hewn',\n", - " 'undimmed by cloud or shade of night',\n", - " 'there shone for ever fair and bright.',\n", - " 'there hammer on the anvil smote,',\n", - " 'there chisel clove, and graver wrote;',\n", - " 'there forged was blade, and bound was hilt;',\n", - " 'the delver mined, the mason built.',\n", - " 'there beryl, pearl, and opal pale,',\n", - " \"and metal wrought like fishes' mail,\",\n", - " 'buckler and corslet, axe and sword,',\n", - " 'and shining spears were laid in hoard.',\n", - " \"unwearied then were durin's folk;\",\n", - " 'beneath the mountains music woke:',\n", - " 'the harpers harped, the minstrels sang,',\n", - " 'and at the gates the trumpets rang.',\n", - " 'the world is grey, the mountains old,',\n", - " \"the forge's fire is ashen-cold;\",\n", - " 'no harp is wrung, no hammer falls:',\n", - " \"the darkness dwells in durin's halls;\",\n", - " 'the shadow lies upon his tomb',\n", - " 'in moria, in khazad-dûm.',\n", - " 'but still the sunken stars appear',\n", - " 'in dark and windless mirrormere;',\n", - " 'there lies his crown in water deep,',\n", - " 'till durin wakes again from sleep.',\n", - " 'i’m a celebrated skier, folks, and qualified to smirk',\n", - " 'i’ve skied more hills than any man from frisco to new york',\n", - " 'but talkin’ about the skiin’ i’ve done is my one and only quirk',\n", - " '‘specially when i’m standin’ in the barroom',\n", - " 'i’ll ski any hill that stands, my friends, regardless of the pitch',\n", - " 'on any kind of skis at all, i really don’t care which',\n", - " 'i could ski the cliffs of dover with nary a bloody hitch',\n", - " 'and haven’t i often proved it in the barroom',\n", - " 'i ski straight down the hill, you know, i never need traverse',\n", - " 'i ski every style of skiin’ from the arlberg to reverse',\n", - " 'i’m one of the finest skiers in the whole darn universe',\n", - " 'especially when i’m standin’ in the barroom',\n", - " 'i’ve looked for powered skiin’ all around the world, you know',\n", - " 'and when the powder’s really deep i’m first one on the tow',\n", - " 'with just my head above the top, that’s how i like my snow',\n", - " 'and i love to tell about it in the barroom',\n", - " 'the search for higher mountains has become my lifelong quest',\n", - " 'but i find a hill in asia that i really think is best',\n", - " 'so if anyone wants to find me i’ll be schussin’ everest',\n", - " 'as soon as i’ve had a couple in the barroom',\n", - " 'now when it comes to racin’ i’m the finest of the crop',\n", - " 'i can memorize a slalom course from bottom to the top',\n", - " 'i come roarin’ through the finish gate and i barely make a stop',\n", - " 'just in time to have a couple in the barroom',\n", - " 'and now my song has ended and i hope you will agree',\n", - " 'that if you need some pointers, why, you’d better send for me',\n", - " 'but i’m not worth a damn, you know, till i’ve emptied two or three',\n", - " 'of the very biggest schooners in the barroom',\n", - " 'the very biggest schooners in the barroom',\n", - " \"i've lost a life\",\n", - " 'again out of time',\n", - " \"and i don't see the way\",\n", - " \"but it's okay\",\n", - " \"this time i'm just a throwaway\",\n", - " \"you're free, the begging millions\",\n", - " 'i hear the awakening call, the age-old song',\n", - " \"i can't see\",\n", - " \"why can't you see\",\n", - " 'the poor machines',\n", - " 'cry/rise',\n", - " 'what a defeat',\n", - " 'what a shame',\n", - " 'now, the hindus do say that the self—the great self—is consciousness. but of course, that does not mean consciousness in the sense of our ordinary everyday consciousness. ordinary everyday consciousness is indeed a form of this kind of consciousness—shall we say, a manifestation of it?—but then there’s also consciousness which doesn’t notice, but nevertheless is highly responsive. the way your heart beats, the way you breathe, the way you grow your hair: you’re doing it, but you don’t know how it’s done.',\n", - " 'so therefore, just in the same way that conscious attention is not aware of all the other operations of the body, so in just that way we are not aware of our connection—indeed, our identity—with the fundamental self. when the leaves die and fall off the trees, or the fruit drops—next year: more leaves, more fruit. so, in the same way, when you and i die: more babies later. if the whole human race dies, you bet your life there are all kinds of things that feel that they’re human scattered throughout the multiplicity of galaxies. because this universe is a peopling universe, just as an apple tree apples. but because we are unconscious of the intervals we are not aware of the self with our conscious attention when conscious attention isn’t operating. but still, just as you don’t notice what your pineal gland, say, is doing at the moment, so in the same way you don’t notice the connections which tie us all together—not only here and now, but forever and ever and ever and ever.',\n", - " 'the difficulty, the basic reason why we don’t notice the self, is that the self doesn’t need to look at itself. a knife doesn’t need to cut itself. fire doesn’t need to burn itself. water doesn’t need to quench itself, and a light doesn’t need to shine on itself. so this is the fundamental problem of having some sort of awareness of the self. nevertheless, it is the whole contention of indian philosophy, especially what we call vedānta, that it is possible—in a certain way—to become aware of oneself in this deepest sense; to know that you are the totality.',\n", - " 'and this experience is the real substance of indian philosophy as a whole, both hindu and buddhist. it is called mokṣa, which roughly means ‘liberation.’ liberation from the hallucination that you are just poor little me. to wake up from that kind of hypnosis and discover that you are simply something—your organism, your physical body, your conscious attention (which is your ego)—that you are something being done by this vast, indescribable self, which is out of time, which has no beginning, no end, it neither continues nor discontinues. it’s beyond all categorization whatsoever, and so the upanishads say, all we can say of it positively is the negative. neti neti; ‘it is not this, not that.’ anything, therefore, you can formulate—imagine, picture—will not be the self.',\n", - " 'so when you are trying to know the self you have to get rid of every idea in your head. it doesn’t mean, as some people seem to think, that you have to get rid of every sense-impression. it isn’t as if you had to go into a catatonic state of total absorption. of course that can be done, but the full mokṣa—the full liberation—is when you come back out of absorption and see this everyday world just as it looks now, but see as clearly as clearly can be that it is all the self. you can become aware of this tremendous interconnectedness of everything, and that is what somebody who is mokṣa—who is liberated—sees. he sees, shall we say, that everything goes together.',\n", - " 'and that is, in a way, what we mean by ‘relativity.’ because relativity means ‘relatedness,’ just as fronts go with backs and tops with bottoms, insides with outsides, solids with spaces. so everything that there is goes together. and it makes no difference whether it lasts a long time or whether it lasts a short time. a galaxy goes together with all the universe just as much as a mosquito, which has a very short life. from the standpoint of the self, time is completely relative. you can have, if you scale it down, as much time between two of those very rapid drumbeats as you can in eons and eons and eons, and it’s all a question of point of view. or—to use a scientific expression—level of magnification.',\n", - " 'change your magnification and you see molecules. and we know by other methods of observation that it can get smaller and smaller and smaller, and that the spaces between these minute units are so vast that they’re comparable to the distances between the sun and the planets, in scale. so, also, with time. so, in this sense, there could be vast, vast universes full of empires, and battleships, and palaces, and brothels, and restaurants, and orchestras in the tip of your fingernail. and, on the other hand, we could be all going on in the tip of somebody else’s fingernail.',\n", - " 'it’s very important to understand not only the relativity of size and of time, but also of what there is. now, as you know, the human senses respond only to a very small band of the known spectrum of vibrations. we know, through instruments, of quite a vast spectrum, but we—as i say, with our senses—see only a little of it. if our senses were in some way altered we would see a rather different looking world we can do this, of course—we can put on special lenses to enable us to see heat, and then we see all the heat radiations coming out of people. and we say, well, i never noticed that about you before! but so, in the same way, you see, there are infinitely many possibilities of vibration, and of organs sensitive to those vibrations, so that there could be world within worlds within worlds, spaces within spaces, just like the many, many wavelengths of radio and television going on forever and ever in all directions. the possibilities are infinite.',\n", - " 'but having senses and noticing is a selective process. it picks out only certain ones, just as when you play the piano. you don’t take both arms and slam down all keys at once, you select. and so perception is a kind of piano-playing; it is picking out certain things as significant—that is to say, as constituting patterns. and the whole universe seems to be a process of playing with different patterns. but whatever it does, whatever it plays, in whatever dimension, on whatever scale of time or space, it’s all on the self.',\n", - " 'he was a great dog, a great friend best dog a kid could have',\n", - " \"he'll always be there, victor\",\n", - " 'when you lose someone you love, they never really leave you',\n", - " 'they just move into a special place in your heart',\n", - " \"i don't want him in my heart - i want him here with me\",\n", - " 'mr whiskers had a dream about you last night',\n", - " \"it's an omen\",\n", - " 'if mr whiskers dreams about you',\n", - " 'something big is gonna happen',\n", - " 'rise from your tomb!',\n", - " 'rise colossus, rise',\n", - " 'we shall be reunited once again',\n", - " 'come! come! welcome!',\n", - " \"you're alive! sparky, you're alive!\",\n", - " 'your dog is alive',\n", - " 'i thought that you were gone i never wanna lose you',\n", - " 'you brought an animal back from the dead?',\n", - " '4, 3, 2, 1',\n", - " 'boom!',\n", - " 'this man is in the way',\n", - " 'ahhh',\n", - " 'boom!',\n", - " 'ahhh',\n", - " 'it has something to do with the lightning',\n", - " \"i don't really understand it\",\n", - " 'with lightning and boom and hiss',\n", - " 'lightning is simply electricity',\n", - " 'the cloud is angry, making storms',\n", - " 'when the two ladders meet',\n", - " 'boom! the circuit is complete.',\n", - " 'we are wires and springs and cables',\n", - " 'to send the messages',\n", - " 'even after death, the wiring remains',\n", - " 'watch as the muscles respond to the electricity',\n", - " 'soon you shall be awakened',\n", - " 'tonight, we shall bring the dead to life!',\n", - " 'mr whiskers had a dream about you last night',\n", - " \"it's an omen\",\n", - " 'if mr whiskers dreams about you',\n", - " 'something big is gonna happen',\n", - " 'rise from your tomb!',\n", - " 'rise colossus, rise',\n", - " 'we shall be reunited once again',\n", - " 'come! come! welcome!',\n", - " \"you're alive! sparky, you're alive!\",\n", - " 'your dog is alive',\n", - " 'i thought that you were gone',\n", - " 'i never wanna lose you',\n", - " \"promise you'll never go running off, okay?\",\n", - " 'i want you to get down on your knees',\n", - " 'and i want you to ask me:',\n", - " 'what is my name',\n", - " 'what is my name',\n", - " 'what is my name',\n", - " 'what is my name',\n", - " 'what is my',\n", - " 'what is',\n", - " 'your name',\n", - " 'i have been looking for a killer',\n", - " \"and i'm not talking about meatballs\",\n", - " 'i am talking about steak',\n", - " 'steak',\n", - " 'steak',\n", - " 'yes...killer',\n", - " 'i commend myself to a death of no importance',\n", - " 'to the amputation of all seeking hands',\n", - " 'pulling, grasping, with the might of nations',\n", - " 'of sirens, in a never ending bloody-bliss',\n", - " 'to the death of mere savagery',\n", - " 'and the birth of pearly, white terror',\n", - " 'wild women with veins slashed and wombs spread',\n", - " 'singing songs of the death instinct',\n", - " 'in voices yet unheard',\n", - " 'praising nothing but the promise of death on earth',\n", - " 'laughing seas of grinning red, red eyes',\n", - " 'all washed ashore and devoured',\n", - " 'by hard and unseeing spiders',\n", - " 'i commend myself to a death beyond all hope of',\n", - " 'redemption',\n", - " 'beyond the desire for forgetfulness',\n", - " 'beyond the desire to feel all things at every moment',\n", - " 'but to never forget',\n", - " 'to kill for the sake of killing',\n", - " 'and with a pure and most happy heart',\n", - " 'extoll and redeem disease',\n", - " 'she was hanging...',\n", - " 'and her...',\n", - " 'and i asked you: well, well',\n", - " 'and ask you: well, well',\n", - " 'what would you do',\n", - " 'angel in the house tonight',\n", - " 'washed-up, on shore, the old yellow notebook',\n", - " 'out again',\n", - " 'i write from the bed',\n", - " 'as i did last',\n", - " 'year.',\n", - " 'will see the doctor,',\n", - " 'monday.',\n", - " '\"yes, doctor, weak legs, vertigo, head-',\n", - " 'aches and my back',\n", - " 'hurts.\"',\n", - " '\"are you drinking?\" he will ask.',\n", - " '\"are you getting your',\n", - " 'exercise, your',\n", - " 'vitamins?\"',\n", - " 'i think that i am just ill',\n", - " 'with life, the same stale yet',\n", - " 'fluctuating',\n", - " 'factors.',\n", - " 'even at the track',\n", - " 'i watch the horses run by',\n", - " 'and it seems',\n", - " 'meaningless.',\n", - " 'i leave early after buying tickets on the',\n", - " 'remaining races.',\n", - " '\"taking off?\" asks the motel',\n", - " 'clerk.',\n", - " '\"yes, it\\'s boring,\"',\n", - " 'i tell him.',\n", - " '\"if you think it\\'s boring',\n", - " 'out there,\" he tells me, \"you oughta be',\n", - " 'back here.\"',\n", - " 'so here i am',\n", - " 'propped up against my pillows',\n", - " 'again',\n", - " 'just an old guy',\n", - " 'just an old writer',\n", - " 'with a yellow',\n", - " 'notebook.',\n", - " 'something is',\n", - " 'walking across the',\n", - " 'floor',\n", - " 'toward',\n", - " 'me.',\n", - " \"oh, it's just\",\n", - " 'my cat',\n", - " 'this',\n", - " 'time.',\n", - " 'you have been waiting for this plastic hedonism all your life',\n", - " 'your life is bound by tragic masochism and i am the knife',\n", - " \"i am the chisel smuggled into the dadrock prison you're trapped in\",\n", - " \"and now it's time that we had a drastic schism where the fabulous win\",\n", - " 'because i am the boy of your dreams (“yeah, right!”)',\n", - " 'and my band makes you scream - but you are dead',\n", - " \"i'm well aware that this magic given to you will leave you aghast\",\n", - " 'ever since i was a child, i have had this rhythm playing loud and fast',\n", - " \"i couldn't handle it, went and smashed up lytham, hit up boys and girls\",\n", - " 'these beats and rhymes are the magic algorithm that will change the world',\n", - " 'i am the boy of your dreams (“yeah, right!”)',\n", - " 'and my band makes you scream - but you are dead',\n", - " 'farnsworth',\n", - " \"good news, everyone. we've got a very special delivery today.\",\n", - " 'fry',\n", - " \"who's it going to?\",\n", - " 'farnsworth',\n", - " 'me.',\n", - " 'bender',\n", - " 'another job well done.',\n", - " 'farnsworth',\n", - " \"no, i need it shipped to my office at mars university. it's a little experiment that may well win me the nobel prize.\",\n", - " 'leela',\n", - " 'in what field?',\n", - " 'farnsworth',\n", - " \"i don't care, they all pay the same.\",\n", - " 'fry',\n", - " 'is it dangerous?',\n", - " 'farnsworth',\n", - " 'oh, my, no. off we go!',\n", - " 'fry',\n", - " 'very impressive. back in the 20th century we had no idea there was a university on mars.',\n", - " 'farnsworth',\n", - " 'well, in those days mars was just a dreary, uninhabitable wasteland, uh, much like utah. but unlike utah, it was eventually made liveable, when the university was founded in 2636.',\n", - " 'leela',\n", - " 'they planted traditional college foliage: ivy, trees, hemp. soon the whole planet was terraformed.',\n", - " 'fry',\n", - " \"does that mean it's safe to breathe the air?\",\n", - " 'farnsworth',\n", - " 'of course.',\n", - " 'farnsworth',\n", - " 'over here is wong library. it has the largest collection of literature in the western universe.',\n", - " 'bender',\n", - " \"hey look. there's a chapter of my old robot fraternity; epsilon rho rho.\",\n", - " 'leela',\n", - " 'you went to college?',\n", - " 'bender',\n", - " \"of course, i'm bender. i went to bending college. i majored in bending.\",\n", - " 'fry',\n", - " 'what was your minor?',\n", - " 'bender',\n", - " 'robo-american studies.',\n", - " 'fratbot #1',\n", - " 'are you here to fumigate the moose head?',\n", - " 'bender',\n", - " \"uh, no, actually i'm an epsilon from way back.\",\n", - " 'fratbot #1',\n", - " \"eh, close enough. c'mon in.\",\n", - " 'bender',\n", - " \"thanks. here's your finger back.\",\n", - " 'bender',\n", - " 'all the coolest robots are in this fraternity.',\n", - " 'fratbot #2',\n", - " 'mate in 143 moves.',\n", - " 'fratbot #3',\n", - " 'oh, poo, you win again!',\n", - " 'bender',\n", - " 'uh-oh, nerds!',\n", - " 'fratbot #1',\n", - " \"allow me to introduce myself. i'm gearshift, chapter president. this is oily, and this here is fatbot.\",\n", - " 'bender',\n", - " \"you're all losers. my name's bender.\",\n", - " 'oily',\n", - " \"bender from bending state bender? wow, you're a legend around here!\",\n", - " 'fatbot',\n", - " 'i heard that in one single night you drank a whole keg, streaked across campus and crammed 58 humans into a phone booth.',\n", - " 'bender',\n", - " \"(modest) yeah, well, a lot of 'em were children. anyway i should get going.\",\n", - " 'gearshift',\n", - " \"no, bender, wait. we're the lamest frat on campus. even hillel has better parties than us. please, you've gotta stay and teach us how to be cool.\",\n", - " 'bender',\n", - " \"hmm, ok. but i'll need 10 kegs of beer, a continuous tape of louie louie and a regulation two-storey panty-raid ladder.\",\n", - " 'fatbot',\n", - " 'oh, boy! oh, boy! oh, boy!',\n", - " 'fry',\n", - " 'i tell you, being here really takes me back to my college days.',\n", - " 'man #1',\n", - " 'step right up, who wants to learn physics?',\n", - " 'man #2',\n", - " 'keep your hands inside the car at all time.',\n", - " 'fry',\n", - " 'good old coney island college! go whitefish!',\n", - " 'leela',\n", - " \"don't take this the wrong way, fry, but you don't seem like the educated type.\",\n", - " 'fry',\n", - " \"oh, yeah? read it and weep. i'm a certified college dropout.\",\n", - " 'leela',\n", - " 'please! everyone knows 20th century colleges were basically expensive daycare centres.',\n", - " 'farnsworth',\n", - " \"that's true. by current academic standards, you're merely a high school dropout.\",\n", - " 'fry',\n", - " \"what?! that's not fair. i deserve the same respect any other college dropout gets. by god, i'm gonna enroll here at mars university and drop out all over again!\",\n", - " 'leela',\n", - " \"you won't last two weeks.\",\n", - " 'fry',\n", - " 'aww, thanks for believing in me.',\n", - " 'amy',\n", - " \"yo, classmate. what you takin'?\",\n", - " 'fry',\n", - " \"oh, i don't know. hey, professor, what are you teaching this semester?\",\n", - " 'farnsworth',\n", - " 'same thing i teach every semester: the mathematics of quantum neutrino fields. i made up the title so that no student would dare take it.',\n", - " 'fry',\n", - " \"mathematics of wanton burrito meals. i'll be there!\",\n", - " 'farnsworth',\n", - " \"please, fry, i don't know how to teach; i'm a professor!\",\n", - " 'fry',\n", - " 'see you in class!',\n", - " 'farnsworth',\n", - " 'oh!',\n", - " 'fatbot',\n", - " 'this is gonna be great!',\n", - " 'bender',\n", - " 'bingo!',\n", - " 'fatbot',\n", - " 'oh, mama!',\n", - " 'bender',\n", - " \"oh, yeah! someone's been a bad computer! get a load of that!\",\n", - " 'meiderneyer',\n", - " \"i say, you've damaged our servants' quarters... and our servants.\",\n", - " 'chet',\n", - " 'this time robot house has gone too far.',\n", - " 'bender',\n", - " 'cheese it!',\n", - " 'fatbot',\n", - " \"(screaming) they're gonna catch us!\",\n", - " 'fry',\n", - " 'hey, pretty nice for a single. two desks, two chairs, a couple of beds. a woodpecker.',\n", - " 'leela',\n", - " \"i think that's probably your roommate.\",\n", - " 'fry',\n", - " \"oh, right, cool. (shouting) c'mon in, roomie! (talking) what the--?\",\n", - " 'monkey',\n", - " 'i call top bunk! ahh!',\n", - " 'fry',\n", - " \"my roommate's a monkey?\",\n", - " 'monkey',\n", - " \"(sarcastic) brilliant deduction, you're a credit to your species.\",\n", - " 'farnsworth',\n", - " \"ah, fry, i see you've met guenter!\",\n", - " 'fry',\n", - " 'you know each other?',\n", - " 'farnsworth',\n", - " 'guenter is my experiment. he was the top secret contents of this stinking crate.',\n", - " 'guenter',\n", - " \"i'd rather live in a crate than share a room with this dork.\",\n", - " 'leela',\n", - " 'so what makes guenter talk?',\n", - " 'fry',\n", - " 'is he genetically engineered?',\n", - " 'farnsworth',\n", - " \"oh, please! that's preposterous science-fiction mumbo-jumbo. guenter's intelligence actually lies in his electronium hat which harnesses the power of sunspots to produce cognitive radiation.\",\n", - " 'guenter',\n", - " \"you're wasting your breath, professor. he'll never understand a word of it.\",\n", - " 'fry',\n", - " 'i understood the word \"hat\"!',\n", - " 'farnsworth',\n", - " \"please, stop bickering. i arranged that you be roommates for a reason: so i'd only have to remember one phone number. now shake hands and make up.\",\n", - " 'fry',\n", - " 'you want a banana?',\n", - " 'guenter',\n", - " \"i don't eat bananas. i prefer banana-flavoured energy bars made from tofu.\",\n", - " 'fry',\n", - " \"i don't like you.\",\n", - " 'fry',\n", - " 'this is gonna be a cakewalk!',\n", - " 'teacher',\n", - " 'welcome to the history of the 20th century. look to your left, then to your right. then in nine other directions. one of the 12 of you will not pass this class.',\n", - " 'amy',\n", - " \"boring. let's hear about walter mondale already!\",\n", - " 'teacher',\n", - " 'be forewarned: the only sure way to get an a in this class is to have lived in the 20th century.',\n", - " 'fry',\n", - " 'swish!',\n", - " 'teacher',\n", - " 'you were saying, mr. fry?',\n", - " 'fry',\n", - " \"i'm from the 20th century. go ahead, ask me anything.\",\n", - " 'teacher',\n", - " 'very well. what device invented in the 20th century allowed people to view broadcast programmes in their own homes?',\n", - " 'fry',\n", - " 'ooh... i know this... whatyya call it? lite brite!',\n", - " 'guenter',\n", - " 'i believe the answer is the television.',\n", - " 'teacher',\n", - " 'very good mr... guenter.',\n", - " 'amy',\n", - " '(impressed) wow! smart and cute!',\n", - " 'vernon',\n", - " \"what i love about being dean of students is the peace and quiet and the respect i receive. now what's all this about?\",\n", - " 'woman',\n", - " 'dean vernon, the students from robot house are here.',\n", - " 'vernon',\n", - " 'robot house!',\n", - " 'bender',\n", - " 'hey, dean, nice looking model.',\n", - " 'vernon',\n", - " \"you keep away from it. you robots are a disgrace to this university. whenever a fire alarm is pulled, it's robot house. whenever the campus liquor store is looted, robot house. whenever a human corpse is desecrated--\",\n", - " 'bender',\n", - " 'now, i can explain that.',\n", - " 'vernon',\n", - " \"that's enough out of you. from this day forth, robot house is on dodecatupple-secret probation!\",\n", - " 'bender',\n", - " 'no fair!',\n", - " 'fatbot',\n", - " 'my mom is gonna kill me!',\n", - " 'vernon',\n", - " \"now if you'll excuse me, i have to get back to the one thing that's kept me sane these past eight years: my model ship.\",\n", - " 'gearshift',\n", - " 'fatbot! no!',\n", - " 'fatbot',\n", - " 'when i get nervous i get hungry.',\n", - " 'bender',\n", - " 'cheese it!',\n", - " 'vernon',\n", - " '(shouting; from inside) robot house!',\n", - " 'fry',\n", - " \"so, chrissy, we seem to be hitting it off. if you're not doing anything later might i escort you to a kegger?\",\n", - " 'chrissy',\n", - " 'not even if you were the last man on mars.',\n", - " 'guenter',\n", - " '(shouting) hey! you like banas?',\n", - " 'guenter',\n", - " '(shouting; from outside) i got her number. how do you like them bananas?',\n", - " 'farnsworth',\n", - " 'and therefore, by process of elimination, the electron must taste like grapeade.',\n", - " 'fry',\n", - " 'sorry, i overslept.',\n", - " 'farnsworth',\n", - " 'until 5pm?',\n", - " 'fry',\n", - " \"it's that obnoxious monkey. he kept me up all night with his constant thinking. just thinking and thinking. he's trying to make me look like an idiot.\",\n", - " 'farnsworth',\n", - " \"don't be jealous. without his special hat, guenter might be no more intelligent than you.\",\n", - " 'fry',\n", - " 'i hate that rodent!',\n", - " 'farnsworth',\n", - " \"fry, that monkey is my most important experiment. if you two don't stop fighting i'll have you both neutered.\",\n", - " 'fry',\n", - " \"that'll show him.\",\n", - " 'amy',\n", - " \"dean vernon, i'd like you to meet my parents, leo and inez.\",\n", - " 'vernon',\n", - " \"ah, mr. and mrs. wong, i'm so glad we could admit amy in exchange for your generous contribution.\",\n", - " 'mr. wong',\n", - " 'how much more for phi beta kappa?',\n", - " 'vernon',\n", - " 'how much you got?',\n", - " 'guenter',\n", - " \"sorry i'm late, i was off at a study session... with chrissy!\",\n", - " 'farnsworth',\n", - " \"oh, i'm glad you made it, guenter, because in honour of parents weekend i have a special surprise for you.\",\n", - " 'guenter',\n", - " '(horrified) mom? dad? what are you doing here? this is so humiliating.',\n", - " 'fry',\n", - " \"now these monkeys i like! what's that? you wanna come out?\",\n", - " 'guenter',\n", - " 'no! stop!',\n", - " 'chet',\n", - " 'i say.',\n", - " 'farnsworth',\n", - " \"what's that they're flinging at us?\",\n", - " 'guenter',\n", - " 'oh, dear lord, all over the dean!',\n", - " 'fry',\n", - " \"hey, uh, guenter? why don't you get up on the chandelier with your parents and i'll take a picture?\",\n", - " 'bender',\n", - " \"well, looks like the party's winding down. let's take a road trip to tijuana and get fatbot some action.\",\n", - " 'fatbot',\n", - " \"it's my first time, i'm really nervous.\",\n", - " 'vernon',\n", - " '(shouting) robot house!',\n", - " 'leela',\n", - " 'what you did to guenter was cruel. at the risk of sounding like an after-school special, i think we learned who the real animal was today.',\n", - " 'fry',\n", - " 'you mean peer pressure?',\n", - " 'fry',\n", - " \"look out! he's got a gun!\",\n", - " 'guenter',\n", - " '(crying) leave me alone.',\n", - " 'leela',\n", - " \"hey, what's going on? i thought you didn't like bananas.\",\n", - " 'guenter',\n", - " \"(crying) of course i do. i try so hard to fit in but seeing my parents act like that made me realise i'm just a primative beast.\",\n", - " 'fry',\n", - " 'hey, hey, cheer up. not everyone turns out like their parents. i mean, look at me. my folks were honest hardworking people.',\n", - " 'leela',\n", - " \"besides, guenter, you're not like other monkeys. you've got the hat.\",\n", - " 'guenter',\n", - " \"(crying) so what? i mean, sure, it looks cool and it makes me smart but it doesn't make me happy.\",\n", - " 'leela',\n", - " \"that's so sad. i didn't even know monkeys could cry.\",\n", - " 'guenter',\n", - " \"(crying) they can't. it's all the hat.\",\n", - " 'fry',\n", - " \"look, guenter, if you're so miserable here, maybe you should just go back to the jungle.\",\n", - " 'guenter',\n", - " \"the jungle. but i couldn't do that to the professor. i'm his prize experiment, and he's like a father to me.\",\n", - " 'leela',\n", - " \"but he's not your father. that guy in the punch bowl was your father.\",\n", - " 'farnsworth',\n", - " \"look at him, i'm so proud.\",\n", - " 'fry',\n", - " 'thanks, professor!',\n", - " 'farnsworth',\n", - " 'not you.',\n", - " 'fry',\n", - " '(screaming) ow!',\n", - " 'student',\n", - " 'hey!',\n", - " 'farnsworth',\n", - " \"oh, i always feared he might run off like this. why? why? why didn't i break his legs?\",\n", - " 'farnsworth',\n", - " '(crying) oh, poor guenter.',\n", - " 'leela',\n", - " 'so he just ran away in the middle of the exam?',\n", - " 'farnsworth',\n", - " \"i'm afraid so. all he handed in was a paper smeared with feces. he tied with fry.\",\n", - " 'fry',\n", - " 'i guess he realised i was right when i told him to go back to the jungle.',\n", - " 'farnsworth',\n", - " 'you what? after i spent months slaving over a hot monkey brain?',\n", - " 'fry',\n", - " \"hey, don't blame me. you tried to force guenter to be a human but he's an animal. he belongs in the wild. or in the circus on one of those tiny tricycles. now that's entertainment.\",\n", - " 'farnsworth',\n", - " \"but guenter's obviously better off being intelligent. tell him, leela.\",\n", - " 'leela',\n", - " \"nuh-uh, i'm staying out of this. now here's my opinion: what we should do is...\",\n", - " 'farnsworth',\n", - " 'what?',\n", - " 'leela',\n", - " \"i said we'll go to the jungle and let guenter decide once and for all.\",\n", - " 'farnsworth',\n", - " 'what?',\n", - " 'vernon',\n", - " 'you all know the rules. whichever house wins the regatta becomes head of the greek council. and should that house currently be on any type of multiple secret probation, it will be lifted and i will be forced to serve as grand marshal of a parade honouring them.',\n", - " 'chet',\n", - " 'i say, robot house, your water craft is as ill-designed as you yourselves.',\n", - " 'meiderneyer',\n", - " 'good one, chet!',\n", - " 'bender',\n", - " 'oh, yeah? watch this!',\n", - " 'chet',\n", - " 'well, i never!',\n", - " 'vernon',\n", - " 'fraternities, on your marks.',\n", - " 'bender',\n", - " 'hey!',\n", - " 'fry',\n", - " 'wow, the jungles on mars look just like the jungles on earth.',\n", - " 'farnsworth',\n", - " 'jungles? on earth?',\n", - " 'leela',\n", - " \"i see some movement up there. i think it's him.\",\n", - " 'farnsworth',\n", - " 'stand back.',\n", - " 'leela',\n", - " 'oops.',\n", - " 'farnsworth',\n", - " \"don't worry. they'll be fine once the tranquiliser wears off.\",\n", - " 'fry',\n", - " \"there's our man!\",\n", - " 'leela',\n", - " \"professor, you'll offer guenter the hat and fry, you'll offer him the banana. we'll let him choose whether he wants to be intelligent or just a mindless animal.\",\n", - " 'farnsworth',\n", - " 'come on, guenter, take the hat.',\n", - " 'fry',\n", - " 'no, the banana, the banana!',\n", - " 'farnsworth',\n", - " 'consider the philosophical and metaphysical ramifications of the--',\n", - " 'fry',\n", - " 'banana, banana, banana!',\n", - " 'leela',\n", - " \"wait, what's that sound?\",\n", - " 'gearshift',\n", - " '(shouting) hey, bender, you sure this is a short-cut?',\n", - " 'bender',\n", - " '(shouting) not as sure as i was an hour ago!',\n", - " 'vernon',\n", - " 'and the winner is... robot house?!',\n", - " 'farnsworth',\n", - " 'oh, dear lord!',\n", - " 'leela',\n", - " 'no! no!',\n", - " 'farnsworth',\n", - " \"thank god this log is sturdy. (shouting) put on the hat, guenter! you're the only one who can save us! (muttering) stupid monkey.\",\n", - " 'fry',\n", - " 'no.',\n", - " 'leela',\n", - " 'not there.',\n", - " 'farnsworth',\n", - " 'keep trying.',\n", - " 'guenter',\n", - " \"eureka! the hat goes on the head. it's all so obvious now!\",\n", - " 'leela',\n", - " '(shouting) help us, guenter!',\n", - " 'guenter',\n", - " 'oh, my goodness. (shouting) hang on. i need to do some calculations. got it! grab on!',\n", - " 'farnsworth',\n", - " \"we're saved!\",\n", - " 'fry',\n", - " \"'preciate it guenter!\",\n", - " 'leela',\n", - " 'oh, no! hurry, guenter, climb up the vine. you can still save yourself.',\n", - " 'guenter',\n", - " \"why bother? i've got nothing to live for. i was miserable as a genius, and as a monkey, i was so dumb i tried to wear a hat on my butt. (sadly) there's just no place for me in this world. (normal) although, on the other hand...\",\n", - " 'farnsworth',\n", - " \"oh, that poor, sweet monkey. well let's go gather him up. there's no sense letting him go to waste.\",\n", - " 'fry',\n", - " \"guenter! you're alive!\",\n", - " 'guenter',\n", - " 'i guess the hat must have broke my fall.',\n", - " 'farnsworth',\n", - " 'it seems to be working at only half-capacity, but i can fix it.',\n", - " 'guenter',\n", - " 'no, wait! i like it like this. i actually feel sort of happy.',\n", - " 'farnsworth',\n", - " 'but what about your super-intelligence?',\n", - " 'guenter',\n", - " \"when i had that there was too much pressure to use it. all i want out of life is to be a monkey of moderate intelligence who wears a suit. that's why i've decided to transfer to business school!\",\n", - " 'farnsworth',\n", - " '(screaming) nooo!',\n", - " 'bender',\n", - " '(shouting) come on, everyone! big party in robot house!',\n", - " 'the end',\n", - " 'oh i thought i saw you',\n", - " 'working on the night shift',\n", - " 'talking to a one-way radio',\n", - " 'laughing at the dancers, jumping out the spaceships',\n", - " 'out into the fleek white studio',\n", - " 'back when we were hot shit we used to play with matches',\n", - " 'we were living like a couple criminals',\n", - " 'remember when you broke it',\n", - " 'running through the tall grass',\n", - " 'thought that you could always be an animal',\n", - " 'pulling from an apple core',\n", - " 'nothing mattered more',\n", - " 'phased out, driving with the brakes out',\n", - " 'slipping through the deep end',\n", - " \"you're waking up on the shore\",\n", - " 'no doubt, sleeping high with the wrong crowd',\n", - " 'now we twist, now we shout',\n", - " \"it's easy living in a glass house\",\n", - " 'no more doubt, no more outs',\n", - " 'but we can never go back there',\n", - " 'but we can never go back there',\n", - " 'to the golden daze',\n", - " 'to the golden daze',\n", - " 'looking through a fishbowl',\n", - " 'back into the deep blue',\n", - " \"like you're in a blurred out video\",\n", - " 'always got the best view',\n", - " 'leaning out the window',\n", - " 'falling back into your stereo',\n", - " 'listening to crossroads',\n", - " 'talking in our own cults',\n", - " 'feeling like the kings of the carnival',\n", - " 'shook it up and tossed it',\n", - " 'caught it then we lost it',\n", - " 'we were missing fundamental particles',\n", - " 'now we twist, now we shout',\n", - " \"it's easy living in a glass house\",\n", - " 'no more doubt, no more outs',\n", - " 'but we can never go back there',\n", - " 'but we can never go back there',\n", - " 'to the golden daze',\n", - " 'to the golden daze',\n", - " 'crashed on the highway shoulder',\n", - " 'when you left and nobody got sober',\n", - " 'cut the lights kill the truth',\n", - " 'flash from a polaroid camera',\n", - " 'silence in the night getting louder',\n", - " \"oh they're not coming for you\",\n", - " 'we can never go',\n", - " 'we can never go',\n", - " 'we can never go',\n", - " 'we can never go',\n", - " 'we can never go',\n", - " 'we can never go',\n", - " 'we can never go',\n", - " 'we can never go back there',\n", - " 'but we can never go back there',\n", - " 'to the golden daze',\n", - " 'to the golden daze',\n", - " 'to the golden daze',\n", - " 'to the golden daze',\n", - " 'to the golden daze',\n", - " 'batman',\n", - " 'batman',\n", - " 'this is batman.',\n", - " 'and robin',\n", - " 'with exclusive news for khj listeners',\n", - " \"it's the batphone secret number contest presented by boss radio\",\n", - " \"there's a terrific prize for the first khj listener to guess the secret number of our batphone.\",\n", - " \"you've seen us answering the batphone on tv. it's a special hotline commissioner gordon uses to contact us whenever there's trouble\",\n", - " \"there's seven digits in the batphone's secret number. listen to what you'll win if yours is the first correct answer received by khj.\",\n", - " \"you'll visit batman and me at 20th century fox and be our guest for lunch at the studio\",\n", - " \"then you'll ride to the batcave in the batmobile, where robin and i will present you with a 1966 console color television set\",\n", - " 'to visit us and win the color tv, just guess the secret batphone number',\n", - " \"watch for robin and me on channel 7, wednesday and thursday nights, and keep it on khj for more clues in the batphone's secret number contest\",\n", - " 'oh i should of kept',\n", - " 'my mouth shut',\n", - " \"and i don't sleep\",\n", - " 'i begin hyperventilating',\n", - " \"because i'm crazy\",\n", - " \"i'm crazy\",\n", - " \"i'm crazy\",\n", - " 'i know it baby',\n", - " \"i'm crazy\",\n", - " \"i'm crazy\",\n", - " \"i've it said it once again\",\n", - " \"you're cheating on me\",\n", - " 'but look what i found',\n", - " 'her red sock on the ground',\n", - " \"because i'm crazy\",\n", - " \"i'm crazy\",\n", - " \"i'm crazy\",\n", - " 'i know it baby',\n", - " \"i'm crazy\",\n", - " \"i'm crazy\",\n", - " \"so why don't you look the other way?\",\n", - " \"talkin' to me the way you did\",\n", - " \"i've it said it once again\",\n", - " \"you're cheating on me\",\n", - " 'but look what i found',\n", - " 'her red sock on the ground',\n", - " \"because i'm crazy\",\n", - " \"i'm crazy\",\n", - " \"i'm crazy\",\n", - " 'i know it baby',\n", - " \"i'm crazy\",\n", - " \"i'm crazy\",\n", - " ...]},\n", - " 'pop': {'meta': {'train_data': ['when i love you, do you feel it?',\n", - " 'i know it makes you happy when i say \"alright\"',\n", - " 'when i love you, do you feel it?',\n", - " \"when i hold you, we're an island\",\n", - " 'and you know it makes me happy when you say \"alright\"',\n", - " \"when i hold you, we're an island\",\n", - " \"i know the road's a hard one\",\n", - " \"but it's easy when you're not alone\",\n", - " 'so help me to remember, please',\n", - " \"lady, i believe we'll get home\",\n", - " 'when i love you, do you feel it?',\n", - " 'you know it makes me happy when you say \"alright\"',\n", - " 'when i love you, do you feel it?',\n", - " \"i know the road's a hard one\",\n", - " \"but it's easy when you're not alone\",\n", - " 'so help me to remember, please',\n", - " \"lady, i believe we'll get home\",\n", - " 'when i love you, do you feel it?',\n", - " 'you know it makes me happy when you say \"alright\"',\n", - " \"when i love you, we're an island\",\n", - " \"i know the road's a hard road\",\n", - " \"but it's easy when you're not alone\",\n", - " 'help me to remember',\n", - " \"lady, i believe we'll make it home, get home\",\n", - " \"well, i rollin' 'n' tumbled\",\n", - " 'i cried the whole night long',\n", - " \"oh well, i rollin' 'n' tumbled\",\n", - " 'i cried the whole night long',\n", - " \"oh well, i had the feelin', baby\",\n", - " \"something's goin' on wrong\",\n", - " 'oh well, i really love you, baby',\n", - " \"come on and say you'll be mine\",\n", - " 'oh well, i really love you, baby',\n", - " \"come on and say you'll be mine\",\n", - " \"well, if you don't like my taters\",\n", - " \"don't you dig up my vine\",\n", - " 'oh well, i cried last night, mama',\n", - " 'i cried the night before',\n", - " 'oh well, i cried last night, mama',\n", - " 'i cried the night before',\n", - " \"oh well, i had the feelin', baby\",\n", - " \"you don't love me no more\",\n", - " 'well, if the river was whiskey',\n", - " \"i was a divin' duck\",\n", - " 'well, if the river was whiskey',\n", - " \"i was a divin' duck\",\n", - " 'well, i would swim to the bottom',\n", - " \"baby, i wouldn't come up\",\n", - " \"oh well, i rollin' 'n' tumbled\",\n", - " 'i cried the whole night long',\n", - " \"oh well, i rollin' 'n' tumbled\",\n", - " 'i cried the whole night long',\n", - " \"oh well, i had the feelin', baby\",\n", - " \"something's goin' on wrong\",\n", - " 'the duprees \"have you heard\" track 7',\n", - " 'from the cd \"the best of the duprees\"',\n", - " 'copyright 1990 collectables records corp',\n", - " 'box 35 narberth, pa 19072',\n", - " 'have you heard?',\n", - " '(ahah ahh...ahah ahh....ahah ahh...ahhh)',\n", - " 'have you heard',\n", - " '(wahh...wahh...ahh)',\n", - " \"who's kissing her now?\",\n", - " '(doo...doo...ooo)',\n", - " \"do you think she's blue?\",\n", - " \"did she say we're through?\",\n", - " 'has she found someone new?',\n", - " '(ahhh...ahhh...ahhh)',\n", - " 'have you seen',\n", - " '(ahh...ahhh...ahh)',\n", - " 'the way she looks now?',\n", - " '(doo..doo...ooo)',\n", - " 'does she act the same?',\n", - " 'when she hears my name?',\n", - " \"does she say who's to blame?\",\n", - " 'my arms are empty',\n", - " 'my nights are long and lonely',\n", - " 'i miss her so',\n", - " '(miss her so)',\n", - " 'each new tomorrow',\n", - " 'can only bring me sorrow',\n", - " 'i love her sooooooo',\n", - " 'have you heard',\n", - " '(ahhh...ahhh...ahh)',\n", - " 'of their wedding day?',\n", - " '(doo...doo..ooo)',\n", - " 'rumors come and go',\n", - " \"still i'd like to know\",\n", - " \"if it's true, won't you tell me?\",\n", - " 'have you heard?',\n", - " 'have you heard',\n", - " '(ahhh...ahhh...ahhh)',\n", - " 'of their wedding day?',\n", - " '(doo...doo...ooo)',\n", - " 'rumors come and go',\n", - " \"still i'd like to know\",\n", - " \"if it's true won't you tell me?\",\n", - " 'have you heard?',\n", - " 'the least wishes are orders',\n", - " 'born, raised and cornered',\n", - " 'i was kept, fed and watered',\n", - " 'they tied me to the radiator',\n", - " 'i was kicked around and locked down',\n", - " 'left in the cold to self-harm',\n", - " 'this is all that i know',\n", - " 'naked but safe and lifelessly yours',\n", - " 'the least wishes are orders',\n", - " 'born, raised and cornered',\n", - " 'i was kept, fed and watered',\n", - " 'they tied me to the radiator',\n", - " 'i was kicked around and locked down',\n", - " 'left in the cold to self-harm',\n", - " 'this is all that i know',\n", - " 'naked but safe and lifelessly yours',\n", - " 'keep me fed, keep me watered',\n", - " 'naked but safe',\n", - " 'keep me fed, keep me watered',\n", - " 'naked but safe',\n", - " 'keep me fed, keep me watered',\n", - " 'naked but safe',\n", - " 'keep me fed, keep me watered',\n", - " 'naked but safe',\n", - " 'naked but safe',\n", - " 'naked but safe',\n", - " 'naked but safe',\n", - " 'keep me fed, keep me watered',\n", - " 'keep me fed, keep me watered',\n", - " 'keep me fed, keep me watered',\n", - " 'keep me fed, keep me watered',\n", - " 'i know nothing is endless',\n", - " \"so please my love, don't let it go\",\n", - " 'time is fading away',\n", - " \"and i atone for what i've done\",\n", - " 'so give it a try',\n", - " \"and we'll be together maybe\",\n", - " 'give it a try',\n", - " 'and this pain will have to end',\n", - " \"don't let it go\",\n", - " 'lady love, where did you go?',\n", - " 'my heart is turning black',\n", - " 'i divert myself with nothing',\n", - " 'forsaking the things we shared',\n", - " 'so give it a try',\n", - " \"and we'll be together maybe\",\n", - " 'give it a try',\n", - " 'and this pain will have to end',\n", - " \"don't let it go\",\n", - " \"i don't let it go\",\n", - " 'you will always be so far away',\n", - " 'too far away to stay',\n", - " 'i remember all the things we said',\n", - " \"there's no more meaning\",\n", - " 'find a way, find a sense to be',\n", - " \"to feel i'm worthy\",\n", - " 'day to day i live',\n", - " 'and all remains the same',\n", - " 'give it a try',\n", - " \"and we'll be together maybe\",\n", - " 'give it a try',\n", - " 'and this pain will have to end',\n", - " 'give it a try',\n", - " \"and we'll be together maybe\",\n", - " 'give it a try',\n", - " 'and this pain will have to end',\n", - " \"don't let it go\",\n", - " 'i know',\n", - " 'i know',\n", - " 'i know',\n", - " \"i don't let it go\",\n", - " 'take me away from here',\n", - " 'up where the air is clear',\n", - " \"and there's nothing to do\",\n", - " 'and nothing to say',\n", - " 'you say all men are good',\n", - " 'well i would be if i could',\n", - " \"but there's nothing to see\",\n", - " \"so don't get in my way\",\n", - " 'so sit and talk some more',\n", - " \"if you want i'll give you all\",\n", - " \"but they don't even think\",\n", - " \"they'll just take it away\",\n", - " 'why do you bother',\n", - " 'if you see the world that way?',\n", - " 'why does it matter',\n", - " 'if you see the world that way?',\n", - " 'why do you bother?',\n", - " 'nothing left to brave',\n", - " \"nobody's listening\",\n", - " 'well you gotta believe',\n", - " \"that it's all just a game\",\n", - " 'so take me away from here',\n", - " 'and take me away from fear',\n", - " 'and take me away',\n", - " \"things ain't just the same\",\n", - " 'why do you bother',\n", - " 'if you see the world that way?',\n", - " 'why does it matter',\n", - " 'if you see the world that way?',\n", - " 'why do you bother',\n", - " 'if you see the world that way?',\n", - " 'why do you bother?',\n", - " 'got a feeling that i should be leaving',\n", - " 'got a notion to stay',\n", - " \"there's a feeling that just won't turn you away\",\n", - " 'do i turn the lights out',\n", - " 'and dare to take a step outside',\n", - " \"honey, all that we've got\",\n", - " 'is the night and the day',\n", - " 'why do you bother',\n", - " 'if you see the world that way?',\n", - " 'why does it matter',\n", - " 'if you see the world that way?',\n", - " 'why do you bother',\n", - " 'if you see the world that way?',\n", - " 'i remember you said when you were free',\n", - " 'shall i go to suburbia, or stay here and take it easy?',\n", - " 'but, back you came and suddenly aged',\n", - " 'a keeper of cages',\n", - " 'a slave to your wages',\n", - " \"you'd say you'd got most out your education\",\n", - " \"but that's just not good enough\",\n", - " \"you could say that it's me but\",\n", - " 'chorus:',\n", - " 'the trouble is',\n", - " \"it's just like us\",\n", - " 'it now seems quaint',\n", - " 'so much time has passed',\n", - " \"now that we've grown up\",\n", - " \"we've got to own up at last\",\n", - " 'you were ambitious',\n", - " 'you knew what was there',\n", - " \"now it's the cab fare and nowhere to take the aurprayer (sic)\",\n", - " 'like the sound of shouting out side my room',\n", - " \"that's just not cool enough\",\n", - " \"i could say that it's you but\",\n", - " 'chorus',\n", - " 'my body likes routine',\n", - " \"my brain can't take it\",\n", - " 'and i never trust my luck',\n", - " \"you could say that it's me but\",\n", - " 'chorus',\n", - " \"you could say that it's useless\",\n", - " 'but at least i keep in touch',\n", - " 'crack me open with a brick',\n", - " 'and see the yuck come spilling out',\n", - " 'a years worth of hopelessness',\n", - " 'depression and unrestrained self doubt',\n", - " 'my mood ring is always black',\n", - " 'i feel so cracked',\n", - " \"my mode's always on attack\",\n", - " 'i feel so cracked',\n", - " \"i've got something for your back\",\n", - " 'i feel so cracked',\n", - " 'when i said i\\'d \"rip your heart out\"',\n", - " 'did you think i was talking about you?',\n", - " 'spare me your vanity',\n", - " 'i was talking to myself',\n", - " 'i feel so cracked',\n", - " 'my mood ring is always black',\n", - " 'i feel so cracked',\n", - " 'shine on, you crazy asshole',\n", - " 'shine on',\n", - " 'the love of my life is a shady lady',\n", - " 'tearin me up just to bring me down',\n", - " \"she used to be calm but now she's crazy\",\n", - " 'i dont mind',\n", - " 'tearin me down like a jungle monkey',\n", - " 'cuttin me up like a jungle cat',\n", - " \"she used to be fine but now she's funky\",\n", - " \"i don't mind\",\n", - " \"she's not the love of my life anymore\",\n", - " 'the love of my life takes my lunch to breakfast',\n", - " 'nary a thought that a man might starve',\n", - " \"she used to smoke dope but now she's x-ing\",\n", - " \"i don't mind\",\n", - " 'tearing me down like a full length mirror',\n", - " 'praying for death as her beauty fades',\n", - " \"she'll go anywhere any man will lead her\",\n", - " \"i don't mind\",\n", - " \"she's not the love of my life anymore\",\n", - " 'i hurt, you walk',\n", - " \"there ain't no looking for an answer\",\n", - " \"when the question's come and gone\",\n", - " \"i'll stay, you'll go\",\n", - " \"there ain't no hoping for tomorrow\",\n", - " \"so i'll pack up all my sorrow\",\n", - " 'and find some hope that i can borrow',\n", - " \"i'm just trying to save my sanity and my soul (x2)\",\n", - " 'the love of my life is a shady lady',\n", - " 'tearin me up just to bring me down',\n", - " \"she used to be calm but now she's crazy\",\n", - " 'i dont mind',\n", - " \"she's not the love of my life anymore\",\n", - " 'i can show you the world',\n", - " 'shining, shimmering, splendid',\n", - " 'tell me, princess, now when did',\n", - " 'you last let your heart decide?',\n", - " 'i can open your eyes',\n", - " 'take you wonder by wonder',\n", - " 'over sideways and under',\n", - " 'on a magic carpet ride',\n", - " 'a whole new world',\n", - " 'a new fantastic point of view',\n", - " 'no one to tell us \"no\"',\n", - " 'or where to go',\n", - " \"or say we're only dreaming\",\n", - " 'a whole new world',\n", - " 'a dazzling place i never knew',\n", - " 'but now from way up here',\n", - " 'it’s crystal clear',\n", - " \"that now i'm in a whole new world with you\",\n", - " 'unbelievable sights',\n", - " 'indescribable feeling',\n", - " 'soaring, tumbling, freewheeling',\n", - " 'through an endless diamond sky',\n", - " 'a whole new world',\n", - " \"don't you dare close your eyes\",\n", - " 'a hundred thousand things to see',\n", - " 'hold your breath - it gets better',\n", - " 'i’m like a shooting star',\n", - " \"i've come so far\",\n", - " \"i can't go back to where i used to be\",\n", - " 'a whole new world',\n", - " 'with new horizons to pursue',\n", - " \"i'll chase them anywhere\",\n", - " \"there's time to spare\",\n", - " 'let me share this whole new world with you...you...you...',\n", - " 'a whole new world',\n", - " '(a whole new world)',\n", - " 'a new fantastic point of view',\n", - " 'no one to tell us \"no\"',\n", - " 'or where to go',\n", - " \"or say we're only dreaming\",\n", - " 'a whole new world',\n", - " 'every turn a surprise',\n", - " 'with new horizons to pursue',\n", - " 'every moment, red letter',\n", - " \"i'll chase them anywhere\",\n", - " \"there's time to spare\",\n", - " 'anywhere',\n", - " 'there’s time to spare',\n", - " 'let me share this whole new world with you',\n", - " 'a whole new world',\n", - " 'a whole new world',\n", - " \"that’s where we'll be\",\n", - " 'where we will be',\n", - " 'a thrilling chase',\n", - " 'a wondrous place',\n", - " 'for you and me',\n", - " \"freedom rider...though you've tried\",\n", - " 'words are not enough for you now...',\n", - " \"it's hard on your pride\",\n", - " \"i can't find you...though i know you\",\n", - " 'you are just a step out of line...',\n", - " 'come closer to me',\n", - " 'when the lines are drawn',\n", - " 'and no one comes to break us down',\n", - " 'and the walls that stood between us',\n", - " 'tumble to the ground',\n", - " \"it's time to find someone to run to\",\n", - " \"i've got a place in mind\",\n", - " \"it's known as conscience point\",\n", - " \"it's where the clouds roll by\",\n", - " \"they say that nothin' really matters\",\n", - " \"i'm goin' out to find\",\n", - " 'why people come this way',\n", - " 'and put the past behind',\n", - " 'you know there really is a reason',\n", - " 'changing faces...trading places',\n", - " \"nothing lasts anymore...it's hard when you try\",\n", - " 'star-crossed lovers run for cover',\n", - " \"i don't know if it's right...but i know how i feel\",\n", - " \"when you're tired of all those things\",\n", - " 'you never said before',\n", - " \"and although you've tried you never opened that door\",\n", - " \"it's time to find someone to run to\",\n", - " \"we'll run the roads tonite\",\n", - " \"we'll meet at conscience point\",\n", - " 'i look into your eyes',\n", - " \"you say that nothin' really matters\",\n", - " 'if i could change your mind',\n", - " 'if you would look my way',\n", - " 'and leave it all behind',\n", - " \"you'd know you really mean so much to me\",\n", - " \"when you've tired of all those things\",\n", - " \"you've never done before\",\n", - " 'and you never took the time',\n", - " 'to fall in love before',\n", - " \"you've got to find someone to...yea\",\n", - " \"we'll run the roads tonite\",\n", - " \"we'll meet at conscience point\",\n", - " \"i'll look into your eyes\",\n", - " \"and know that somethin' really matters\",\n", - " \"'cause we can change our minds\",\n", - " 'and we can find our way',\n", - " 'and leave it all behind',\n", - " \"'cause you really mean that much to me\",\n", - " 'conscience point...take a walk with me',\n", - " 'and put it all behind',\n", - " \"we'll make some history\",\n", - " 'old mr. kringle is soon gonna jingle',\n", - " \"the bells that'll tingle all your troubles away\",\n", - " \"everybody's waiting for the man with the bag\",\n", - " \"'cause christmas is coming again\",\n", - " \"he's got a sleigh full, it's not gonna stay full\",\n", - " \"he's got stuff that to drop at every stop of the way\",\n", - " \"everybody's waiting for the man with the bag\",\n", - " \"'cause christmas is coming again\",\n", - " \"he'll be here with the answer to the prayers\",\n", - " 'that you made through the year',\n", - " \"you'll get yours\",\n", - " \"if you've done everything\",\n", - " 'you should extra special good',\n", - " \"he'll make this december the one you'll remember\",\n", - " 'the best and the merriest you ever did have',\n", - " \"everybody's waitin' for the man with the bag\",\n", - " \"'cause christmas is here again\",\n", - " 'old mr. kringle is soon gonna jingle',\n", - " \"the bells that'll tingle all your troubles away\",\n", - " \"everybody's waitin' for the man with the bag\",\n", - " \"'cause christmas is coming again\",\n", - " \"he's got a sleigh full\",\n", - " \"and it's not gonna stay full\",\n", - " \"he's got stuff that he's dropping every stop of the way\",\n", - " \"everybody's waiting for the man with the bag\",\n", - " 'christmas is here again',\n", - " \"he'll be here with the answer to the prayers\",\n", - " 'that you made through the year',\n", - " \"you'll get yours\",\n", - " \"if you've done everything\",\n", - " 'you should extra special good',\n", - " \"he'll make this december the one you'll remember\",\n", - " 'the best and the merriest you ever did have',\n", - " \"everybody's waitin,'\",\n", - " \"they're all congregating\",\n", - " \"waitin' for the man with the bag\",\n", - " 'open that bag',\n", - " \"please don't question if i stop and stare\",\n", - " \"'cause i see your beauty floating everywhere\",\n", - " \"and i'd like to blink my eyes but i don't dare\",\n", - " \"'cause i don't wanna miss the show\",\n", - " 'see your form is floating next to me',\n", - " \"when i'm in a borderline reality\",\n", - " 'so i try to burn this in my memory',\n", - " 'so i never have to see you go',\n", - " \"'cause all your beauty, well it shines from within\",\n", - " 'and you leave me with no words to begin',\n", - " 'when i see you in the moons glow',\n", - " 'and all your beauty well, it shines from within',\n", - " 'and you leave me with no words to begin',\n", - " 'if you never know, well now you know, you know',\n", - " 'your silhouette is blessed with form and grace',\n", - " 'and you every more can never be replaced as you',\n", - " 'wrap around me in your misty ways',\n", - " 'and i never wanna see you go',\n", - " 'the way you play with me is mischievous',\n", - " 'as you float around my mind like angel dust',\n", - " \"and you'll never know the sweetness of our love\",\n", - " \"'cause you're never here long enough to know\",\n", - " 'that all your beauty, well it shines from within',\n", - " 'and you leave me with no words to begin',\n", - " 'when i see you in the moons glow',\n", - " 'and all your beauty, well it shines from within',\n", - " 'and you leave me with no words to begin',\n", - " 'if you never know, well now you know, you know',\n", - " 'oh, this crazy winter has followed me to this angry sea',\n", - " \"and i'm waiting for the balance to come and to carry me to sleep\",\n", - " 'and if i choose this garden to be the place that i call my home',\n", - " \"then i'll always be challenged to know that i will always walk alone\",\n", - " \"please don't go\",\n", - " 'away from me',\n", - " 'never leave',\n", - " 'oh no',\n", - " \"please don't go\",\n", - " \"say you'll love me so\",\n", - " 'so i will know',\n", - " \"baby, please don't go\",\n", - " 'if i could just explain',\n", - " 'the death of all my name',\n", - " 'my tears would fall like rain, oh',\n", - " \"but you don't understand\",\n", - " \"don't believe it hurts a man\",\n", - " 'oh no, oh no',\n", - " \"1 - please don't go\",\n", - " \"don't take your love from me\",\n", - " \"just say you'll never leave\",\n", - " 'just promise and believe',\n", - " \"please don't go\",\n", - " \"just say you'll love me so\",\n", - " \"so love me then i'll know\",\n", - " 'that you will never go',\n", - " \"baby please don't go\",\n", - " 'if i could keep you near',\n", - " 'you would love me with out fear',\n", - " 'and live a thousand years',\n", - " 'yes we would',\n", - " 'but you said you want to go',\n", - " 'and why, i do not know',\n", - " 'oh no, oh no',\n", - " 'repeat 1',\n", - " 'no no no no no no',\n", - " \"don't go baby\",\n", - " 'no no no no no no',\n", - " 'please',\n", - " 'no no no no no no',\n", - " \"please don't go\",\n", - " 'say you love me baby',\n", - " \"say you'll stay\",\n", - " \"don't go\",\n", - " 'repeat 1 with ad libs until fade',\n", - " \"when it's cold outside\",\n", - " 'am i here in vain?',\n", - " 'hold on to the night',\n", - " 'there will be no shame',\n", - " 'open your eyes i see',\n", - " 'your eyes are open',\n", - " 'wear no disguise for me',\n", - " 'come into the open',\n", - " 'melting the ice for me',\n", - " 'jump into the ocean',\n", - " 'hold back the tide i see',\n", - " 'your love in motion',\n", - " '(your love in motion)',\n", - " '(your love in motion)',\n", - " '(your love in motion)',\n", - " '(your love in motion)',\n", - " '(motion)',\n", - " '(motion)',\n", - " '(motion)',\n", - " '(motion)',\n", - " \"when it's cold outside\",\n", - " 'am i here in vain?',\n", - " 'hold on to the night',\n", - " 'there will be no shame',\n", - " 'always (harmony, harmony oh love)',\n", - " 'always (harmony, harmony oh love)',\n", - " 'always',\n", - " 'always (harmony, harmony oh love)',\n", - " 'open your eyes i see',\n", - " 'your eyes are open',\n", - " 'wear no disguise for me',\n", - " 'come into the open',\n", - " 'melting the ice for me',\n", - " 'jump into the ocean',\n", - " 'hold back the tide i see',\n", - " 'your love in motion',\n", - " \"when it's cold outside\",\n", - " 'am i here in vain?',\n", - " 'hold on to the night',\n", - " 'there will be no shame',\n", - " 'always (harmony, harmony oh love)',\n", - " 'always (harmony, harmony oh love)',\n", - " 'always',\n", - " 'always (harmony, harmony oh love)',\n", - " 'always, i want to be with you',\n", - " 'and make believe with you',\n", - " 'and live in harmony, harmony oh love',\n", - " 'always, i want to be with you',\n", - " 'and make believe with you',\n", - " 'and live in harmony, harmony oh love',\n", - " 'always, i want to be with you',\n", - " 'and make believe with you',\n", - " 'and live in harmony, harmony oh love',\n", - " 'always, i want to be with you',\n", - " 'and make believe with you',\n", - " 'and live in harmony, harmony oh love',\n", - " 'look ahead, ahead and bend low',\n", - " 'to the only one, the all, the merciful',\n", - " \"look ahead, ahead and then you'll see\",\n", - " 'the only one, the merciful',\n", - " 'cave mountain stream',\n", - " 'stopped awhile this morning on my way back home',\n", - " \"i had to realize this time that i'd be all alone\",\n", - " 'cause she is moving somewhere far away not slow',\n", - " 'and though i tried so hard to please her',\n", - " 'she said she really had to go',\n", - " 'even though this time it really hurts me bad',\n", - " \"i've been thru similarities it's not the first break i've had\",\n", - " \"and i just can't let it bring me down too low\",\n", - " 'and though i tried so hard to please her',\n", - " 'there must be something more to know',\n", - " 'never thought that we would end this way',\n", - " 'it seemed that everything was going fine',\n", - " 'still with all the things that i can do or say',\n", - " \"it won't change the fate i know so well is mine\",\n", - " \"so i'll stop and look right past the pain\",\n", - " \"cause i've been in love before and i can love again\",\n", - " 'while she is moving somewhere far away not slow',\n", - " 'and though i tried so hard to please her',\n", - " 'she said she really had to go',\n", - " 'a place not far from your inner most fear',\n", - " 'whisper, your innocence lost in a tear',\n", - " \"a place not far from a dead man's rest\",\n", - " \"your soul for a kingdom, you're given the test\",\n", - " 'walk with me child, walk through your past',\n", - " 'your trust in me and your spirit will last',\n", - " 'i give you life, dreams unforeseen',\n", - " 'exchange for your soul, spirit come clean',\n", - " 'take me to your castle, take me away',\n", - " 'show me to your victim, where you led him astray',\n", - " \"whisper to your god, cause you can't say no\",\n", - " \"can't blame myself ,cause i can't say no\",\n", - " 'when they stole your life, did they to listen?',\n", - " 'clown denies love, calls himself christian',\n", - " 'alone in the ground, alone in this earth',\n", - " 'from your death, a sin given birth',\n", - " 'come to my castle, unforsaken breed',\n", - " 'my story rings out, the liar take heed',\n", - " 'i give you life, eternity of sin',\n", - " 'fuck with my children, you could never win',\n", - " 'take me to your castle, take me away',\n", - " 'show me to your victim, where you led him astray',\n", - " \"whisper to your god, cause you can't say no\",\n", - " \"i can't blame myself ,cause i can't say no\",\n", - " \"i can't say no\",\n", - " \"i can't say no\",\n", - " 'i feel, i feel',\n", - " 'under the gun',\n", - " 'and everything i say',\n", - " 'is always wrong',\n", - " 'sometimes being your friend',\n", - " \"is more work than it's worth\",\n", - " 'and do you think',\n", - " 'before you speak',\n", - " 'that your words can hurt',\n", - " 'i feel, i feel',\n", - " 'so alone',\n", - " 'everyone around but',\n", - " \"there's no place for me to go\",\n", - " 'to hide, hide',\n", - " \"i will start talkin'\",\n", - " \"won't say nothing\",\n", - " 'so you can see',\n", - " \"what's on my mind\",\n", - " 'in and out',\n", - " 'you drift in my life',\n", - " 'you leaving me stranded',\n", - " 'like the low, waste up tides',\n", - " 'i get, i get',\n", - " 'but i get nothing',\n", - " 'just mixed signals',\n", - " 'that you bound delivering',\n", - " \"she doesn't mean a thing\",\n", - " \"she's just a friend\",\n", - " 'i speak easy',\n", - " \"cause it's really nothing\",\n", - " \"she doesn't mean a thing\",\n", - " \"she's just a friend\",\n", - " 'we have a lot, a lot, a lot in common',\n", - " 'why do you hide?',\n", - " 'you hide',\n", - " 'you could start talking',\n", - " \"don't say nothing\",\n", - " \"i can't see who's on your mind\",\n", - " 'you hide, hide',\n", - " 'you could start talking',\n", - " \"don't say nothing\",\n", - " \"i can't see what's inside\",\n", - " 'you hide',\n", - " 'hide',\n", - " 'hide',\n", - " 'hide, hide',\n", - " 'intro:',\n", - " 'you opened my eyes',\n", - " 'you make me believe',\n", - " 'that there is a chance for a guy like me',\n", - " 'you opened my eyes',\n", - " 'to a whole new world for me',\n", - " 'verse 1:',\n", - " \"baby don't you know\",\n", - " 'that all i wanted was to be by your side',\n", - " 'to find a way to the light through the dark',\n", - " 'you saw the man that i was deep inside',\n", - " 'ahaaa',\n", - " \"there's a voice\",\n", - " 'that was screaming inside of my head',\n", - " \"now it's quiet and peaceful instead\",\n", - " \"'cause i have learned from the things that you've said\",\n", - " 'ahaaa',\n", - " 'chorus:',\n", - " 'you opened my eyes',\n", - " 'you make me believe',\n", - " 'that there is a chance for a guy like me',\n", - " 'you opened my eyes',\n", - " 'you showed me someone that no one else has seen',\n", - " 'you opened my eyes',\n", - " 'you bring in the sun',\n", - " 'you make me believe i am someone',\n", - " 'you opened my eyes',\n", - " 'to a whole new world for me',\n", - " 'verse 2:',\n", - " 'i was lost',\n", - " 'and i was scared i was losing my mind',\n", - " 'running away from myself all the time',\n", - " \"'cause there was something i was waiting to find\",\n", - " 'ahaaa',\n", - " 'there you were',\n", - " 'the sky has send me an angel from above',\n", - " 'you gave me strengt and you showed me how to love',\n", - " \"for that i'm thankful for the rest of my life\",\n", - " 'ahaa',\n", - " 'chorus:',\n", - " 'you opened my eyes',\n", - " 'you make me believe',\n", - " 'that there is a chance for a guy like me',\n", - " 'you opened my eyes',\n", - " 'you showed me someone that no one else has seen',\n", - " 'you opened my eyes',\n", - " 'you bring in the sun',\n", - " 'you make me believe i am someone',\n", - " 'you opened my eyes',\n", - " 'to a whole new world for me',\n", - " 'bridge:',\n", - " \"now you're gone\",\n", - " \"and though it hurts to know you're with someone new\",\n", - " 'you know i always wanted the best for you',\n", - " 'you deserve to get the best in life too',\n", - " \"i'm grateful for the time with you\",\n", - " 'chorus:',\n", - " 'you opened my eyes',\n", - " 'you make me believe',\n", - " 'that there is a chance for a guy like me',\n", - " 'you opened my eyes',\n", - " 'you showed me someone that no one else has seen',\n", - " 'you opened my eyes',\n", - " 'you bring in the sun',\n", - " 'you make me believe i am someone',\n", - " 'you opened my eyes',\n", - " 'to a whole new world for me',\n", - " 'you opened my eyes',\n", - " 'you opened my eyes',\n", - " 'you opened my eyes',\n", - " 'you opened my eyes',\n", - " 'i wanna be a transparency live my life so that you can see elohim',\n", - " \"no longer see a little boy in his teens getting by tryin' to fit in like an og\",\n", - " \"but looking back it doesn't make any sense\",\n", - " \"to me how i could be 19 yet so na've\",\n", - " 'i never really thought about eternity i just did at the',\n", - " 'time what felt good to me',\n", - " 'chorus',\n", - " 'yesterday are just memories in my head',\n", - " 'he paid the way and delivered me of my debt',\n", - " \"my hindsight's 20/20 now so it's said\",\n", - " 'can you believe it',\n", - " \"after the day that i graduated that's when\",\n", - " 'it set in being faded and inebriated',\n", - " \"dealing with the pains of my mom and dad's divorce\",\n", - " \"but that was '81 now i'm showing no remorse\",\n", - " 'and all those people that i used to know then',\n", - " \"i've changed my ways and i just live for him\",\n", - " 'at 4:20 everyday you wanted me to blaze with you',\n", - " \"but at the same time everyday i'm just gonna pray for you\",\n", - " \"i changed my ways i'm never goin' back again\",\n", - " \"i'm never going back again\",\n", - " 'mistakes, done over and over again',\n", - " 'voices, heard over and over again',\n", - " \"escape from one's self\",\n", - " 'escape into salvation',\n", - " 'one word - one gesture and everything is over',\n", - " 'long silence - empty thoughts',\n", - " 'escape into another phase',\n", - " 'escape from reality',\n", - " 'an other life - an other death - an other destination - an',\n", - " 'other self',\n", - " 'an other life - an other death - an other destination - an',\n", - " 'other self',\n", - " 'an other life - an other death - an other destination - an',\n", - " 'other self',\n", - " 'an other life - an other death - an other destination - an',\n", - " 'other self',\n", - " 'the leprous sign branded onto the forehead',\n", - " 'like stricken by disease',\n", - " \"guilt sought by one's self\",\n", - " 'the guilt of salvation',\n", - " 'the night passes - silence remains',\n", - " 'unsolved questions remain as a wall',\n", - " 'the guilt of the other phase',\n", - " 'the guilt out of fear of reality',\n", - " 'an other life - an other death - an other destination - an',\n", - " 'other self',\n", - " 'an other life - an other death - an other destination - an',\n", - " 'other self',\n", - " 'an other life - an other death - an other destination - an',\n", - " 'other self',\n", - " 'an other life - an other death - an other destination - an',\n", - " 'other self',\n", - " \"there's a street of light\",\n", - " 'a long dark night',\n", - " 'restaurant sences and dark machines',\n", - " 'a woman in the shadow and a man in a suit',\n", - " 'a cut away shot of the avenue',\n", - " 'so he stands by a rake as the camera pans accross',\n", - " 'then he checks his watch, cause he feels like time has stopped',\n", - " \"there's a street where he almost meet, this is the place\",\n", - " 'we come to the scene where we almost see her face',\n", - " 'and the telephone rings',\n", - " 'she swims in the lake, as the shadow on the wall in the final take',\n", - " 'cigarette smoke and somebody spoke',\n", - " \"and the light goes up and the cinema's closed\",\n", - " 'so he plays the film, he plays the film again',\n", - " 'so he plays the film, he plays the film again',\n", - " '(child)',\n", - " 'lather was thirty-years-old today',\n", - " 'they took away all of his toys',\n", - " 'his mother sent newspaper clippings to him',\n", - " \"about his old friends who'd stopped being boys\",\n", - " 'there was howard c. green',\n", - " 'just turned thirty-three',\n", - " 'his leather chair waits at the bank',\n", - " 'and sergeant dow jones',\n", - " 'twenty-seven-years-old',\n", - " 'commanding his very own tank',\n", - " 'but lather still finds it',\n", - " 'a nice thing to do',\n", - " 'to lie about nude in the sand',\n", - " 'drawing pictures of mountains',\n", - " 'that look like bumps',\n", - " 'and thrashing the air with his hands',\n", - " \"but wait, oh lather's productive, you know\",\n", - " 'he produces the finest of sound',\n", - " 'putting drumsticks on either side of his nose',\n", - " 'snorting the best licks in town',\n", - " \"but that's all over\",\n", - " '(child)',\n", - " 'lather was thirty-years-old today',\n", - " 'and lather came foam from his tongue',\n", - " 'he looked at me, eyes wide, and plainly said',\n", - " '\"is it true that i\\'m no longer young?\"',\n", - " 'and the children call him famous',\n", - " 'what the old men call insane',\n", - " \"and sometimes he's so nameless\",\n", - " 'that he hardly knows what game to play',\n", - " 'which words to say?',\n", - " 'and i should have told him',\n", - " '\"no, you\\'re not old\"',\n", - " 'and i should have let him go on',\n", - " 'smiling baby-wide',\n", - " 'black, fuzzy, matted heart',\n", - " 'hears the wonderful seed',\n", - " 'blue, pretty, feathered bird',\n", - " 'eats up the need',\n", - " \"bright, blazin' sun burns up\",\n", - " 'thick, crowded vine chokes out',\n", - " \"they'll getcha, they'll getcha, they'll getcha\",\n", - " \"they'll getcha, and then they'll forgetcha\",\n", - " 'wined and dined and feeling oh so fine',\n", - " \"treasures towered, don't need the divine\",\n", - " 'smart and sure in thine own eye',\n", - " 'with these you are dead inside',\n", - " \"didn't they tell you? didn't they tell you?\",\n", - " \"they'll getcha, they'll getcha, they'll getcha\",\n", - " \"they'll getcha, and then they'll forgetcha\",\n", - " 'i know this is wrong',\n", - " \"should stay away but it won't do\",\n", - " \"i've lost control to that old song\",\n", - " \"and i don't mind what i'll go through\",\n", - " 'giving it up',\n", - " \"i'm giving it all up 4x\",\n", - " '(bright lies big city)',\n", - " \"lights are bright and i'm moving\",\n", - " \"the rhythm ain't right who am i fooling\",\n", - " '(bright lies big city)',\n", - " \"i'm drawing into your arms into your heart\",\n", - " \"where i don't feel ...lone\",\n", - " '(bright lies big city)',\n", - " \"the rhythm ain't right but i am moving\",\n", - " 'heart break feels. oh',\n", - " 'when something new',\n", - " 'like this comes around',\n", - " 'when not to blame',\n", - " \"it's not our fault\",\n", - " 'but since we touch',\n", - " 'we have left the ground',\n", - " '(bright lies big city)',\n", - " \"lights are bright and i'm moving\",\n", - " \"the rhythm ain't right who am i fooling\",\n", - " '(bright lies big city)',\n", - " \"i'm drawing into your arms into your heart\",\n", - " \"where i don't feel ...lone\",\n", - " '(bright lies big city)',\n", - " \"the rhythm ain't right but i am moving\",\n", - " 'bright lies big city',\n", - " 'giving it up',\n", - " \"i'm giving it all up 4x\",\n", - " '(bright lies big city)',\n", - " \"lights are bright and i'm moving\",\n", - " \"the rhythm ain't right who am i fooling\",\n", - " '(bright lies big city)',\n", - " \"i'm drawing into your arms into your heart\",\n", - " \"where i don't feel ...lone\",\n", - " '(bright lies big city)',\n", - " \"the rhythm was right but we're not moving\",\n", - " 'i have your postcard and some magazine',\n", - " \"there's no hope, just a tear, ooh your magic\",\n", - " 'is desire burning in my heart',\n", - " 'i need someone who is there for me',\n", - " \"and the feelin' comes again when i touch you\",\n", - " \"ooh i can't sleep at night\",\n", - " 'nowhere to run',\n", - " \"still standin' in the rain - standin' in the rain\",\n", - " 'no place to hide',\n", - " \"it's still the shadow play\",\n", - " 'nowhere to run',\n", - " \"i'm hypnotized\",\n", - " \"i'm on fire\",\n", - " 'you got the key to my heart',\n", - " 'nowhere to run',\n", - " \"i'm hypnotized\",\n", - " \"i'm out on the streets\",\n", - " 'and i wish that you were here',\n", - " \"walkin' down the boulevard\",\n", - " \"i get the feelin' that you can't be far and i wonder\",\n", - " \"if there's too much fancination\",\n", - " \"it's hard enough in the danger streets\",\n", - " \"forget the trouble if you won't believe, i've got my pride\",\n", - " 'and i just stay alive',\n", - " 'nowhere to run',\n", - " \"still standin' in the rain - standin' in the rain\",\n", - " 'no place to hide',\n", - " \"it's still the shadow play\",\n", - " 'nowhere to run',\n", - " \"i'm hypnotized\",\n", - " \"i'm on fire\",\n", - " 'you got the key to my heart',\n", - " 'nowhere to run',\n", - " \"i'm hypnotized\",\n", - " \"i'm out on the streets\",\n", - " 'and i wish that you were here',\n", - " 'baby baby i want you to know',\n", - " 'how much i love you',\n", - " \"how far i'd go\",\n", - " 'just to be with you',\n", - " 'just to be near',\n", - " 'my sweet sweet goddess',\n", - " 'of love and beer',\n", - " 'you stand in your castle',\n", - " 'you stand all alone',\n", - " 'locked in your world',\n", - " 'full of heartache and foam',\n", - " 'listen to me baby',\n", - " 'my words soft and clear',\n", - " 'my sweet sweet goddess',\n", - " 'of love and beer',\n", - " 'sweet goddess',\n", - " 'oh yeah',\n", - " 'sweet goddess of love and beer...x3',\n", - " \"baby baby i'm down on my knees\",\n", - " 'i need your lovin baby',\n", - " 'gotta quench my thirst please',\n", - " 'a drink of your lovin',\n", - " 'makes my pain disappear',\n", - " 'my sweet sweet goddess',\n", - " 'of love and beer',\n", - " 'take time to see the wonders of the world',\n", - " \"to see the things you've only ever heard of\",\n", - " 'dream life the way you think it ought to be',\n", - " \"see things you thought you'd never ever see\",\n", - " 'take a cruise to china or a train to spain',\n", - " \"go 'round the world again and again\",\n", - " 'meet a girl on a boat, meet a boy on a train',\n", - " 'and fall in love without the pain',\n", - " 'everybody needs love and adventure',\n", - " 'everybody needs cash to spend',\n", - " 'everybody needs love and affection',\n", - " 'everybody needs 2 or 3 friends',\n", - " 'these are the things, these are the things',\n", - " 'the things that dreams are made of',\n", - " 'these are the things, these are the things',\n", - " 'the things that dreams are made of',\n", - " 'take a lift to the top of the empire state',\n", - " 'take a drive across the golden gate',\n", - " 'march, march, march across red square',\n", - " \"do all the things you've ever dared\",\n", - " 'everybody needs love and adventure',\n", - " 'everybody needs cash to spend',\n", - " 'everybody needs love and affection',\n", - " 'everybody needs 2 or 3 friends',\n", - " 'these are the things, these are the things',\n", - " 'the things that dreams are made of',\n", - " 'these are the things, these are the things',\n", - " 'the things that dreams are made of',\n", - " 'like fun and money and food and love',\n", - " 'and things you never thought of',\n", - " 'these are the things, these are the things',\n", - " 'the things that dreams are made of',\n", - " 'new york, ice cream, tv, travel, good times',\n", - " 'norman wisdom, johnny, joey, dee dee, good times',\n", - " 'these are the things, these are the things',\n", - " 'the things that dreams are made of',\n", - " 'these are the things, these are the things',\n", - " 'the things that dreams are made of',\n", - " 'these are the things (everybody needs love and adventure)',\n", - " 'these are the things',\n", - " 'the things that dreams are made of',\n", - " 'these are the things (everybody needs love and adventure)',\n", - " 'these are the things',\n", - " 'the things that dreams are made of',\n", - " 'these are the things (everybody needs love and adventure)',\n", - " 'these are the things',\n", - " 'the things that dreams are made of',\n", - " ...]},\n", - " 'data': ['i stare at the sky and see',\n", - " \"what i've tried to see so many years\",\n", - " 'the purity of space and time',\n", - " 'to see it all through intoxicated tears',\n", - " 'cratinf a trip through hexagonal space',\n", - " 'im fighting the laws of gravity',\n", - " 'burning my eyes to understand',\n", - " \"blind agitation 'gainst my own sanity\",\n", - " 'you can fool a man forever',\n", - " 'fill him with you lies',\n", - " 'you can fool mankind once',\n", - " 'drawing a web of lies',\n", - " 'burning their eyes to understand',\n", - " \"you can't fool mankind forever\",\n", - " \"i've never tried to embrace myself tight\",\n", - " \"it's not how i want it to be\",\n", - " 'and i found in my head that i always did right',\n", - " 'even thoguh you speak angry with me',\n", - " 'spiraling confusing appears',\n", - " 'as the world keeps coming back',\n", - " 'what i felt is description of all',\n", - " 'and madness is my only friend',\n", - " 'you can fool a man forever',\n", - " 'fill him with you lies',\n", - " 'you can fool mankind once',\n", - " 'drawing a web of lies',\n", - " 'burning their eyes to understand',\n", - " \"you can't fool mankind forever\",\n", - " 'bye bye blackbird, days are getting cold',\n", - " 'snakes and lizards are sucking up the gold',\n", - " 'chrome-plated plastic they give you in return',\n", - " \"and teach you a lesson you shouldn't have to learn\",\n", - " 'bye bye blackbird',\n", - " 'bye bye blackbird',\n", - " 'i remember now who i was supposed to be',\n", - " 'oh, but how do you get an octopus up a tree',\n", - " 'up a tree',\n", - " 'bye bye blackbird, time to leave the nest',\n", - " 'the sun is overhead on its way out west',\n", - " 'follow that sun to a blood-red sea',\n", - " 'and sleep in the arms of a coconut tree',\n", - " 'bye bye blackbird',\n", - " 'bye bye blackbird',\n", - " 'bye bye blackbird, fly into the sun',\n", - " \"the money's all gone and your time is done\",\n", - " 'suddenly awake in the middle of the night',\n", - " 'cover up my head with a blanket of light',\n", - " 'bye bye blackbird',\n", - " 'bye bye blackbird',\n", - " \"i've got no time to drop lsd\",\n", - " \"i guess i've still got time for dmt\",\n", - " 'dmt',\n", - " 'back on the road again',\n", - " 'no money no food and dirty clothes',\n", - " \"don't know which way to go\",\n", - " \"or if we'll even make the show?\",\n", - " 'crashed into a petrol pump there goes my insurance lump',\n", - " 'i just want out of here',\n", - " 'someone gives me a fucking beer',\n", - " \"tonight, tonight...it'll be alright\",\n", - " \"tonight, tonight...i'm gonna make it right\",\n", - " 'someone get me out of here',\n", - " \"next day we're up again\",\n", - " 'slept rough yet again',\n", - " \"heading into no man's land\",\n", - " 'with a tongue that feels like desert sand',\n", - " '6 stitches from a bicycle ride',\n", - " \"it's a shame i cannot hide\",\n", - " '3 pasta meals per day',\n", - " 'and a pittance for our fucking pay but...',\n", - " \"now we're on our way back home\",\n", - " 'still no signal on the phone',\n", - " 'just wanna eat some grub',\n", - " 'and have a night out down the pub',\n", - " 'here i stare at the van again',\n", - " 'everyone is sleeping on everything',\n", - " 'they all gonna feel the same',\n", - " 'homeward bound from where we came cos...',\n", - " 'true love',\n", - " 'a silver heart upon a chain',\n", - " 'in 1980 was engraved',\n", - " 'a heart so innocent',\n", - " 'before you knew a world of pain',\n", - " 'before you learned to be afraid',\n", - " 'and lived through times so cruel',\n", - " 'but you can start again',\n", - " 'for what you mean to me',\n", - " 'no words they can explain',\n", - " \"i've been trying to discover\",\n", - " 'something that can last forever',\n", - " \"we're two fools who stand divided\",\n", - " 'you and i should be united',\n", - " 'true, true love',\n", - " 'i watch you dance across the room',\n", - " 'your eyes are closed, so beautiful',\n", - " \"you're in another place\",\n", - " 'the music has enraptured you',\n", - " 'so free of cares, i wish that you',\n", - " 'could always feel this way',\n", - " 'oh we can start again',\n", - " 'for what you mean to me',\n", - " \"i'll never walk away\",\n", - " \"i've been trying to discover\",\n", - " 'something that can last forever',\n", - " \"we're two fools who stand divided\",\n", - " 'you and i should be united',\n", - " \"don't be scared of your emotions\",\n", - " 'i will give you my devotion',\n", - " 'true, true love',\n", - " 'true love',\n", - " 'a silver heart upon a chain',\n", - " 'in 1980 was engraved',\n", - " 'a heart so innocent',\n", - " 'yeah we can start again',\n", - " 'for what you mean to me',\n", - " 'no one could take your place',\n", - " \"i've been trying to discover\",\n", - " 'something that can last forever',\n", - " \"we're two fools who stand divided\",\n", - " 'you and i should be united',\n", - " \"i've been trying to discover\",\n", - " 'something that can last forever',\n", - " \"don't be scared of your emotions\",\n", - " 'i will give you my devotion',\n", - " 'true, true love',\n", - " 'well i came down here from manhattan',\n", - " 'to see the lights on the mall',\n", - " 'but when i got here early this morning',\n", - " \"well i couldn't see any at all\",\n", - " 'so i walked a little further',\n", - " 'and much to my surprise',\n", - " 'there was a hot cool woman',\n", - " 'in a chevy staring into my eyes',\n", - " \"i've just got to see the lights\",\n", - " \"i've just got to see the lights\",\n", - " \"i've just got to see the lights\",\n", - " 'alright',\n", - " \"she said now don't walk any further\",\n", - " 'just jump into my car',\n", - " 'and we can head on down the highway',\n", - " \"but you'd better not go too far\",\n", - " \"'cos my daddy he's big business\",\n", - " \"so we've gotta be back by tonight\",\n", - " 'but we can still have some fun now',\n", - " 'if we head on downtown to see the lights',\n", - " \"i've just got to see the lights\",\n", - " \"i've just got to see the lights\",\n", - " \"i've just got to see the lights\",\n", - " \"i've just got to see the lights\",\n", - " \"i've just got to see the lights\",\n", - " \"i've just got to see the lights\",\n", - " 'well, we ended up in this cafe',\n", - " \"'bout twenty-five minutes to one\",\n", - " 'see, she took me to this nightclub',\n", - " 'and the music went on and on',\n", - " 'well we were set down to get coffee',\n", - " 'when in walked her old man',\n", - " 'no matter how we tried to explain it well',\n", - " \"we couldn't make him understand\",\n", - " \"i've just got to see the lights\",\n", - " \"i've just got to see the lights\",\n", - " \"i've just got to see the lights\",\n", - " \"don't you know that this is the beginning (just a game)\",\n", - " \"don't you know that this is just a game (just a game, it's just a game)\",\n", - " '(chorus)',\n", - " 'stand tough (stand tough)',\n", - " 'never gonna get me down',\n", - " 'gotta get up to get up',\n", - " 'enough is enough',\n", - " 'stand tough (stand tough)',\n", - " \"i'm never gonna give it up\",\n", - " 'gotta get up to get up and up and up',\n", - " 'stand tough',\n", - " \"this world is changing and the pressure's got me going down\",\n", - " 'my feet are walking from this sad and lonely one-horse town',\n", - " \"don't try and stop me 'cos i'm hurting from the cold outside\",\n", - " \"my heart is jumpin', jumpin', jumpin' and i don't know why\",\n", - " '(bridge)',\n", - " 'so what ya gonna do when it all comes down',\n", - " 'tell me (tell me), tell me (tell me)',\n", - " 'what ya gonna do when it hits the ground (woah)',\n", - " '(chorus)',\n", - " 'had enough of everybody, telling me just what to do',\n", - " \"i've got to get this message through the wire and straight to you\",\n", - " 'bringing on the good times for the bitter ones are sure to end',\n", - " \"we've got to make a stand 'cos on this world we all depend\",\n", - " '(bridge)',\n", - " '(chorus)',\n", - " \"don't you know that this is the beginning (just a game)\",\n", - " \"don't you know that this is just a game (just a game, just a game)\",\n", - " 'stand tough (stand tough)',\n", - " 'never gonna get me down (come on)',\n", - " 'gotta get up to get up',\n", - " 'enough is enough',\n", - " 'stand tough (stand tough - huh)',\n", - " \"i'm never gonna give it up (get down)\",\n", - " 'gotta get up to get up (come on) and up (come on) and up (come on)',\n", - " 'stand tough (stand tough)',\n", - " 'never gonna get me down (get down)',\n", - " 'gotta get up to get up',\n", - " 'enough is enough',\n", - " 'stand tough (stand tough)',\n", - " \"i'm never gonna give it up\",\n", - " 'gotta get up to get up and up and up',\n", - " 'stand tough (stand tough)',\n", - " 'never gonna get me down',\n", - " 'gotta get up to get up',\n", - " 'enough is enough',\n", - " 'stand tough (stand tough)',\n", - " \"i'm never gonna give it up\",\n", - " 'gotta get up to get up and up and up',\n", - " 'stand tough (stand tough)',\n", - " 'it is a day of so much bliss, in the gathering that we all stand',\n", - " 'under the blue sky we all celebrate, husband and wife hand-in-hand',\n", - " 'there are children cheering, and the birds are chirping',\n", - " 'oh the happiness that fill the air',\n", - " 'and the angels descend, bringing blessings from allah',\n", - " 'that we can feel everywhere',\n", - " '(x2)',\n", - " \"oh it's a day of rejoicing, a day of peace\",\n", - " 'a day when a pair fulfil, half of their deen',\n", - " 'let us all spend some time together, remembering allah most high',\n", - " 'let not the evil of shaytan, get the better of us in this life',\n", - " 'and of the creatures of allah, we are created the best',\n", - " 'on this earth from the rest',\n", - " 'remember allah always, in remembering him',\n", - " 'our hearts will find its rest',\n", - " '(x2)',\n", - " 'oh it’s a day of rejoicing, a day of peace',\n", - " 'a day when a pair fulfil, half of their deen',\n", - " 'turn wherever you want in life, but never forget the almighty',\n", - " 'remember he is the sustainer, of you and your family',\n", - " 'there may be hardship on your way',\n", - " 'llive them, content and with patience',\n", - " 'no matter how deep they may be',\n", - " 'remember allah always, in remembering him',\n", - " 'your hearts will find its peace',\n", - " '(x8)',\n", - " \"oh it's a day of rejoicing, a day of peace\",\n", - " 'a day when a pair fulfil, half of their deen',\n", - " 'yea',\n", - " 'yea yea yea',\n", - " 'i can only be me my nigga',\n", - " \"i'm not onyx nigga\",\n", - " \"yea c'mon man\",\n", - " \"i ain't big homie\",\n", - " \"i ain't jay-z\",\n", - " \"i can't do it like snoop\",\n", - " \"baby that ain't me\",\n", - " 'i can be me',\n", - " \"i'm a be me\",\n", - " \"i can't copy no man\",\n", - " \"i'm a be me\",\n", - " 'look how diddy dance',\n", - " \"i can't do that\",\n", - " \"and i don't wear my clothes\",\n", - " 'like jim jones',\n", - " 'you know that',\n", - " 'i can only be me',\n", - " \"i'm a be me\",\n", - " \"i can't be what i'm not\",\n", - " \"i'm a be me\",\n", - " \"i don't immitate\",\n", - " 'i initiate',\n", - " \"and i dson't sound like no body\",\n", - " \"let's set it straight\",\n", - " \"i don't rap like jadakiss\",\n", - " \"i'm different\",\n", - " \"and i ain't just talkin our records\",\n", - " \"i'm really livin it\",\n", - " \"i ain't wayne\",\n", - " \"i ain't game\",\n", - " \"ain't none of em\",\n", - " \"i'm a be myself\",\n", - " \"i'm trying to be like none of em\",\n", - " 'look how we done it crack',\n", - " 'we gone do the same rap',\n", - " \"homie i ain't fab\",\n", - " 'nigga shoot me i shot him back',\n", - " 'so forgive me',\n", - " \"if i ain't your favorite rapper\",\n", - " \"i'm just a thug on a song\",\n", - " \"i don't play with rappers\",\n", - " \"the second of none it's the first to me\",\n", - " 'and to put it more blunt',\n", - " \"i'm a be me\",\n", - " \"i ain't nas, baby\",\n", - " \"i ain't mob deep\",\n", - " 'i know you lookin for jeezy',\n", - " \"but that ain't me\",\n", - " 'i can be me',\n", - " \"i'm a be me\",\n", - " \"i can't copy no man\",\n", - " \"i'm a be me\",\n", - " 'kanye make beats',\n", - " \"i can't do that\",\n", - " \"you can't expect me to be 50\",\n", - " 'and you know that',\n", - " 'i can only be me',\n", - " \"i'm a be me\",\n", - " \"i can't be what i'm not\",\n", - " \"i'm a be me\",\n", - " 'this is me respect me for who i am',\n", - " \"don't expect me to immolate another man\",\n", - " \"i'm not the next pac\",\n", - " \"i ain't the next big\",\n", - " \"i'm just me my nigga\",\n", - " 'i get it how i live',\n", - " 'you hear that pain in me',\n", - " \"ain't nothing fake with me\",\n", - " \"i can't be what i'm not\",\n", - " \"dog that ain't in me\",\n", - " \"i'm the truth\",\n", - " \"it's hard for me to live a lie\",\n", - " \"i can't sound like i'm from the south\",\n", - " \"i'm from the star\",\n", - " 'real niggas they love me for doing what i do',\n", - " \"the streets know i don't make songs like common do\",\n", - " \"i don't jump around like in busta video\",\n", - " 'but i lay a nigga down like a busta video',\n", - " 'my nigga b.g',\n", - " 'my nigga t.i.p',\n", - " 'i know they love outkast',\n", - " \"but that ain't me\",\n", - " 'i could be me',\n", - " \"i'm a be me\",\n", - " \"i can't copy no man\",\n", - " \"i'm a be me\",\n", - " 'look how akon sing',\n", - " \"i can't do that\",\n", - " \"and i don't make songs like tylin\",\n", - " 'you know that',\n", - " 'i can only be me',\n", - " \"i'm a be me\",\n", - " \"i can't be what i'm not\",\n", - " \"i'm a be me\",\n", - " 'i make my music',\n", - " 'shit that i like music',\n", - " 'me being me',\n", - " 'original fight music',\n", - " 'our street music',\n", - " 'stayin to beef music',\n", - " 'see a nigga shoot',\n", - " 'you poppin your heat music',\n", - " 'this not cam music',\n", - " 'nigga this is man music',\n", - " 'first day home',\n", - " 'fresh out of the can music',\n", - " 'straight music',\n", - " 'none of that mase music',\n", - " 'black bandana tied to your face music',\n", - " \"thug music nigga i'm not ludacris\",\n", - " \"drunk music listen to how i'm doing this\",\n", - " 'real music accept or refuse it',\n", - " \"and ya'll already know exactly who it is\",\n", - " \"i ain't big homie\",\n", - " \"i ain't jay-z\",\n", - " \"i can't do it like snoop\",\n", - " \"baby that ain't me\",\n", - " 'i can be me',\n", - " \"i'm a be me\",\n", - " \"i can't copy no man\",\n", - " \"i'm a be me\",\n", - " 'look how diddy dance',\n", - " \"i can't do that\",\n", - " \"and i don't wear my clothes\",\n", - " 'like jim jones',\n", - " 'you know that',\n", - " 'i can only be me',\n", - " \"i'm a be me\",\n", - " \"i can't be what i'm not\",\n", - " \"i'm a be me\",\n", - " 'i see your fingerprints',\n", - " 'the work of your hands',\n", - " \"it's all in your hands\",\n", - " 'i see the evidence',\n", - " 'leaving nothing to chance',\n", - " \"the world's in your hands\",\n", - " 'so i rest in your promises',\n", - " \"now i am sure of this, i'm yours\",\n", - " 'let the waters rise',\n", - " 'i will stand as the oceans roar',\n", - " 'let the earth shake beneath me',\n", - " 'let the mountains fall',\n", - " 'you are god over the storm',\n", - " 'and i am yours',\n", - " 'i hear the voice of love',\n", - " 'calling me home',\n", - " 'to where i belong',\n", - " 'it cripples every fear',\n", - " 'and the ones who will kneel',\n", - " 'will walk away healed',\n", - " 'so i rest in your promises',\n", - " \"now i am sure of this, i'm yours\",\n", - " 'no power is strong enough',\n", - " \"to separate me from your love, i'm yours\",\n", - " 'so let the waters rise',\n", - " 'i will stand as the oceans roar',\n", - " 'let the earth shake beneath me',\n", - " 'let the mountains fall',\n", - " 'you are god over the storm',\n", - " 'and i am yours',\n", - " 'even the thunder and the wind obey',\n", - " 'at the command of my father, father',\n", - " 'i set my feet upon your mighty name',\n", - " 'so let the rain fall harder, harder',\n", - " 'so take my everything, my flesh and blood',\n", - " \"i'll lay me down on the altar, altar\",\n", - " 'i am forever covered in your love',\n", - " 'so let the rain fall',\n", - " 'so let the waters rise',\n", - " 'i will stand as the oceans roar',\n", - " 'let the earth shake beneath me',\n", - " 'let the mountains fall',\n", - " 'you are god over the storm',\n", - " 'and i am yours',\n", - " 'let the waters rise',\n", - " 'i will stand as the oceans roar',\n", - " 'let the earth shake beneath me',\n", - " 'let the mountains fall',\n", - " 'you are god over the storm',\n", - " 'and i am yours',\n", - " 'you are god over the storm',\n", - " 'and i am yours',\n", - " 'right away!! oh, we gonna tell you',\n", - " \"right away!! it's open fire\",\n", - " 'we gotta, gotta put more fight',\n", - " 'we were born to be hell fire soldier',\n", - " '* look out!! gonna kick your ass',\n", - " 'carry on!! what you wanna do',\n", - " 'we gotta, gotta put more fight',\n", - " 'we were born to be hell fire soldier',\n", - " '** fantastic lovely emotion',\n", - " 'we feel like communication',\n", - " \"can't you see? can't you feel it?\",\n", - " 'we gotta do it, baby',\n", - " 'all right',\n", - " '(fight! fight! your more fight!)',\n", - " 'we are ready for a fight',\n", - " 'we gonna give you a fight',\n", - " 'we gotta, gotta put more fight',\n", - " 'we were born to be hell fire soldier',\n", - " '* repeat',\n", - " '** repeat',\n", - " 'sensation! ooh baby! sensation!',\n", - " 'put your more fight!',\n", - " 'sensation! ooh baby! sensation!',\n", - " 'put youre more fight!',\n", - " 'fantastic lovely emotion',\n", - " 'we feel like communication',\n", - " '** repeat',\n", - " '(fight! fight! your more fight!)',\n", - " '(intro sample:)',\n", - " \"how dare you? how dare you say such filthy, disgusting things? you filthy upstart! you come into the house, drunk, filthy drunk, you're filthy. you talk filth, you are the filth\",\n", - " 'oh, you tell me you feel changed, /',\n", - " \"so you're packing up and leaving me, /\",\n", - " \"and you've met some other girl, /\",\n", - " 'whose love can set you free. /',\n", - " 'think twice, / baby, /',\n", - " 'think twice, / baby, /',\n", - " 'think twice, / baby, /',\n", - " \"don't turn / your back / on the love / you've known, / ooh, no. /\",\n", - " 'if i could turn back the hands of time, /',\n", - " \"i'd build a love strong enough for two. /\",\n", - " \"no, i won't deny i've lied, /\",\n", - " 'but the trouble with me is you. /',\n", - " 'think twice, / baby, /',\n", - " 'think twice, / baby, /',\n", - " 'think twice, / baby, /',\n", - " \"don't turn / your back / on the love / you've known, / ooh, no. /\",\n", - " 'oh, take some time to grow, /',\n", - " \"you've only known her a week or two. /\",\n", - " 'use your head, not just your heart, /',\n", - " \"when you tell me that we're through. /\",\n", - " 'think twice, / baby, /',\n", - " 'think twice, / baby, /',\n", - " 'think twice, / baby, /',\n", - " \"don't turn / your back / on the love / you've known, / ooh, no. /\",\n", - " 'think twice before you leave, /',\n", - " \"that's my advice, / baby, / baby, / baby. /\",\n", - " \"don't keep love in waiting, / baby, baby\",\n", - " '(outro sample:)',\n", - " \"six o'clock on radios one and two, my name's tom brown, this is the top twenty as compiled for the bbc by the british market research bureau\",\n", - " 'five, four, three, two, one, we have lift off!',\n", - " '(segue into studio kinda filthy)',\n", - " 'you won‘t slow down my pace',\n", - " 'i‘m gonna win this race',\n", - " 'life taught me it’s a chase',\n", - " 'i won‘t be switching lanes',\n", - " 'you liars out my way',\n", - " 'i’m gonna make it one day',\n", - " 'i picture you being lonely',\n", - " 'they feel the urge to control me',\n", - " 'the lie you tell is so cheap',\n", - " 'begged you for the word i need',\n", - " 'got the best ones around me',\n", - " 'hell of a man and i’m still free',\n", - " 'no gold‘ s to far i dig deep',\n", - " 'for what you wish to receive',\n", - " 'face to the sun and my heart',\n", - " 'face to the sun and my heart goes...',\n", - " 'as the sun hits my face',\n", - " 'all sorrow goes away',\n", - " 'they tell me take a break',\n", - " 'but i move my own way',\n", - " 'acknowledge it and stay',\n", - " 'or better get away',\n", - " 'i got a deadbeat dad',\n", - " 'and he won’t care',\n", - " 'about the past and that i’ve been so scared',\n", - " 'i dropped my hopes so low',\n", - " 'bagged you for the words you owe',\n", - " 'me imma go solo',\n", - " 'i know you never come home though',\n", - " 'your heart‘s to far i won’t dig deep',\n", - " 'for what they wish to receive',\n", - " 'face to the sun and my heart',\n", - " 'face to the sun and my heart goes...',\n", - " 'tonight’s the night we’re gonna make the stars alive',\n", - " 'we were never meant to be but you and me can make it alright',\n", - " 'cause i especially love you when the stars are above you (stars above you)',\n", - " 'said i especially love you when the stars are above you',\n", - " '(x5)',\n", - " 'i lay you down,down,down,down by the tabletop',\n", - " 'i lay you down,down,down,down by the tabletop',\n", - " 'and i’m not going anywhere',\n", - " '(x4)',\n", - " 'and even if the sun burns out and the stars fall down',\n", - " 'i’ll be standing there waiting for you',\n", - " 'and when the sky just can’t get any higher',\n", - " 'i’ll be laying there saying to you',\n", - " 'you feel the hunger for terminal beat',\n", - " 'the heart is sinking',\n", - " 'i live my days by hearing your dreams',\n", - " 'and will to pain',\n", - " 'no waiting until the dawn',\n", - " 'your bleeding empty soul',\n", - " 'the real lies of friendly mind',\n", - " \"can't touch your face\",\n", - " 'i came in peace but i leave this',\n", - " 'place with war inside of me',\n", - " 'so come and realize',\n", - " 'look through my mind and see',\n", - " \"i can feel the fuckin' things\",\n", - " 'that burn inside of me',\n", - " \"cannot feel i'm freezin' more\",\n", - " 'the hate of dream with ultimate scream',\n", - " 'to get my pride back',\n", - " 'i have a lust for deadly deed',\n", - " 'curious to find me',\n", - " 'so you say you like the heat',\n", - " \"can't slow down to kick up your feet\",\n", - " 'comes a time for letting go',\n", - " \"everything that you don't know\",\n", - " 'cool your jets, just take some time',\n", - " 'cool your jets, relax and unwind',\n", - " \"cool your jets, and you'll be fine\",\n", - " 'cool your jets, cool your jets',\n", - " 'battles won and battles lost',\n", - " 'war has come and war has passed',\n", - " 'work so hard to get ahead',\n", - " 'lighten up be here instead and...',\n", - " 'cool your jets, just take some time',\n", - " 'cool your jets, relax and unwind',\n", - " \"cool your jets, and you'll be fine\",\n", - " 'cool your jets, cool your jets',\n", - " 'cool your jets, just take some time',\n", - " \"cool your jets, you'll be fine\",\n", - " 'you work so hard you forget to pause',\n", - " 'and take a moment to enjoy it all',\n", - " \"what's the point of pushing ahead?\",\n", - " 'wait to sleep when you are dead?',\n", - " 'the time is now to take a break',\n", - " 'kick back and take some time to',\n", - " 'cool your jets, just take some time',\n", - " 'cool your jets, relax and unwind',\n", - " 'cool your jets, leave your troubles behind',\n", - " 'cool your jets, cool your jets',\n", - " 'cool your jets, just take some time',\n", - " 'cool your jets, relax and unwind',\n", - " \"cool your jets, and you'll be fine\",\n", - " 'cool your jets, cool your jets',\n", - " 'you taught me love',\n", - " 'you taught me how to breathe',\n", - " 'you taught me love',\n", - " 'you taught me how to see the world',\n", - " 'bright and shine',\n", - " 'everything that new to me',\n", - " 'you taught me love',\n", - " 'you taught me everything except for',\n", - " 'how to forget you',\n", - " 'erase you in my mind',\n", - " 'i can’t forget you',\n", - " 'you will always be here',\n", - " 'our home',\n", - " 'our place',\n", - " 'now it’s empty with the silence',\n", - " 'your bed',\n", - " 'your clothes',\n", - " 'they lost someone who owns it',\n", - " 'you taught me love',\n", - " 'you taught me love',\n", - " 'you taught me lovе',\n", - " 'you taught me love',\n", - " 'and now your gone',\n", - " 'and i’m alonе',\n", - " 'i miss you',\n", - " 'still love you',\n", - " 'i can’t forget you',\n", - " 'you taught me love',\n", - " 'you taught me love',\n", - " 'you taught me love',\n", - " 'hey, how was your day',\n", - " 'mine was a rainy day',\n", - " 'raining inside of my mind',\n", - " 'you were my girl',\n", - " 'you were my friend',\n", - " 'you were my teacher',\n", - " 'and it’s gonna fade away the one who i loved',\n", - " 'i never thought the days without you',\n", - " 'memories we drew',\n", - " 'without you baby i can’t stand it right',\n", - " 'i can’t just end this over i’m still here',\n", - " 'you are the only one',\n", - " 'i beg you right now i’m dying',\n", - " 'oh please come back to me',\n", - " 'our home',\n", - " 'our place',\n", - " 'now it’s empty with the silence',\n", - " 'your bed',\n", - " 'your clothes',\n", - " 'they lost someone who owns it',\n", - " 'you taught me love',\n", - " 'you taught me love',\n", - " 'you taught me love',\n", - " 'you taught me love',\n", - " 'and now you’re gone',\n", - " 'and i’m alone',\n", - " 'i miss you still love you',\n", - " 'i can’t forget you',\n", - " 'you taught me love',\n", - " 'you taught me love',\n", - " 'you taught me love',\n", - " 'why am i in love in stereo',\n", - " 'with a girl on either side',\n", - " 'you might well look on and envy me',\n", - " 'but this feelin` isn`t so hi-fi',\n", - " 'just a boy in love in stereo',\n", - " 'when we dance it`s not much fun',\n", - " 'i can`t choose `cause they`re identical',\n", - " 'and i can`t move without the other one',\n", - " 'one wants to stay at home the other wants the night out',\n", - " 'one wants to read in bed the other wants the light out',\n", - " 'i really don`t know what to do `cause i`m in love with you...',\n", - " 'and you...and you',\n", - " 'why am i in love in stereo',\n", - " 'where to start, i can`t decide',\n", - " '`cause makin` love is two dimentional',\n", - " 'and i`m much more a mono man inside',\n", - " 'now that i`m in love in stereo',\n", - " 'there`s one thing i can`t deny',\n", - " 'oo when we kiss, we reach hi frequency',\n", - " 'but i prefer the reproduction side',\n", - " 'one wants to stay at home the other wants the night out',\n", - " 'one wants to read in bed the other wants the light out',\n", - " 'one wants to marry me the other wants to break up',\n", - " 'one wants to call it off the other wants to make up',\n", - " 'i really don`t know what to do, `cause i`m in love with you...',\n", - " 'and you, and you',\n", - " 'why am i, in love in stereo',\n", - " 'oo why am i, in love in stereo',\n", - " 'i said why am i in love in stereo',\n", - " 'why am i in love in stereo',\n", - " 'why am i in love in stereo',\n", - " 'repeat and fade.....',\n", - " \"i'm afraid to die\",\n", - " \"i'm nearly old\",\n", - " \"i'm almost young\",\n", - " \"or so i'm told\",\n", - " 'they say, time is a healer',\n", - " 'faith is death',\n", - " 'or left to die',\n", - " \"i won't put a strain on another broken chain\",\n", - " 'or so i lie',\n", - " 'so i lie',\n", - " \"i'm floading down\",\n", - " 'like a long lost dream',\n", - " 'my savier flew from',\n", - " 'his stitched up scene',\n", - " \"and i'm afraid to die\",\n", - " \"i'm nearly old\",\n", - " \"i'm almost young\",\n", - " \"or so i'm told\",\n", - " 'they say, i would be better',\n", - " 'far from here, and left alone',\n", - " \"but now my luck isn't cheaper\",\n", - " \"my faith i'll buy traffic drones\",\n", - " \"'cause i'still alone\",\n", - " 'nowhere to go',\n", - " \"i'm floading down\",\n", - " 'like a long lost dream',\n", - " 'my savier flew from',\n", - " 'his stitched up scene',\n", - " 'my friends they cry',\n", - " 'will be the first to die',\n", - " \"i'm far, far to scared to asking why\",\n", - " \"'cause i'm afraid to die\",\n", - " \"i'm nearly old\",\n", - " \"i'm almost young\",\n", - " \"or so i'm told\",\n", - " \"living in a word of what's been said\",\n", - " 'what i know is i feel dead',\n", - " 'alone and in this world so cold',\n", - " \"emptying the urn of all that'(s left\",\n", - " 'burning the candle at both ends',\n", - " 'one less flame awaits the dawn',\n", - " 'would i walk right down to the end',\n", - " 'and then push my soul right in',\n", - " 'as i watch the remains of my soul',\n", - " 'lost in a crimson flow',\n", - " \"seated on the edge of all that's left\",\n", - " 'an empty shell full of regret',\n", - " 'and the burden of life goes on',\n", - " 'praying for the shining light beyond your life',\n", - " 'to put an end to your forever lnight',\n", - " 'embraced upon the sorrow razorborn smile',\n", - " 'so i walk right down to the end',\n", - " 'and i push my soul right in',\n", - " 'as i watch the remains of my soul',\n", - " 'lost in a crimson flow',\n", - " 'and i watch the remains of my soul',\n", - " 'my soul is shut',\n", - " 'my soul is shut',\n", - " 'my soul is shut',\n", - " 'my soul is shut',\n", - " 'so i walk right down to the end',\n", - " 'and i push my soul right in',\n", - " 'as i watch the remains of my soul',\n", - " 'lost in a crimson flow',\n", - " 'and i feel that i might be dead',\n", - " 'and i know it might be said',\n", - " 'free from this world so dark and cold',\n", - " '(it starts with one)',\n", - " \"one thing, i don't know why\",\n", - " \"it doesn't even matter how hard you try\",\n", - " 'keep that in mind, i designed this rhyme',\n", - " 'to explain in due time that',\n", - " 'all i know',\n", - " 'time is a valuable thing',\n", - " 'watch it fly by as the pendulum swings',\n", - " 'watch it count down to the end of the day',\n", - " 'the clock ticks life away',\n", - " \"it's so unreal\",\n", - " \"didn't look out below\",\n", - " 'watch the time go right out the window',\n", - " \"trying to hold on but didn't even know\",\n", - " 'wasted it all just to',\n", - " 'watch you go',\n", - " 'i kept everything inside',\n", - " 'and even though i tried, it all fell apart',\n", - " 'what it meant to me will eventually be a memory',\n", - " 'of a time...',\n", - " 'i tried so hard, and got so far',\n", - " \"but in the end, it doesn't even matter\",\n", - " 'i had to fall, to lose it all',\n", - " \"but in the end, it doesn't even matter\",\n", - " 'i am a light sleeper',\n", - " 'but i am a heavy dreamer',\n", - " 'my imagination gives me wings',\n", - " 'and i can go anywhere',\n", - " 'and when i wander away',\n", - " 'to some other place',\n", - " \"i'm suddenly there\",\n", - " 'way up in the air',\n", - " 'where passenger trains',\n", - " 'catch fire and fill the sky with flames',\n", - " 'and that black rabbit of death',\n", - " 'wakes up in a breath',\n", - " 'of beautiful dreams',\n", - " 'my heartache, it seems',\n", - " 'so terribly vain',\n", - " 'where fire and diamonds fall like rain',\n", - " 'do you believe',\n", - " 'in endless miracles?',\n", - " 'do you believe',\n", - " 'in the impossible?',\n", - " 'do you believe',\n", - " 'sleep is a time machine?',\n", - " 'do you believe',\n", - " 'in curiosity?',\n", - " 'do you believe',\n", - " 'in what you cannot see?',\n", - " 'do you believe',\n", - " 'life is a lucid dream?',\n", - " 'that’s how you study the stars',\n", - " 'that’s how you study the stars',\n", - " 'and that’s how you know them by heart',\n", - " 'life is a lucid dream',\n", - " 'such is the path of a dreamer',\n", - " 'i find my way by moonlight',\n", - " 'my imagination gives me wings',\n", - " 'and i can go anywhere',\n", - " 'and when i wander away',\n", - " 'to some other place',\n", - " \"i'm suddenly there\",\n", - " 'way up in the air',\n", - " 'where passenger trains',\n", - " 'catch fire and fill the sky with flames',\n", - " 'and that black rabbit of death',\n", - " 'wakes up in a breath',\n", - " 'of beautiful dreams',\n", - " 'my heartache, it seems',\n", - " 'so terribly vain',\n", - " 'where fire and diamonds fall like rain',\n", - " 'do you believe',\n", - " 'in endless miracles?',\n", - " 'do you believe',\n", - " 'in the impossible?',\n", - " 'do you believe',\n", - " 'sleep is a time machine?',\n", - " 'do you believe',\n", - " 'in curiosity?',\n", - " 'do you believe',\n", - " 'in what you cannot see?',\n", - " 'do you believe',\n", - " 'life is a lucid dream?',\n", - " 'well, that’s how you study the stars',\n", - " 'that’s how you study the stars',\n", - " 'and that’s how you know them by heart',\n", - " 'life is a lucid dream',\n", - " 'well, that’s how you study the stars',\n", - " 'that’s how you study the stars',\n", - " 'and that’s how you know them by heart',\n", - " 'life is a lucid dream',\n", - " 'i am a light sleeper',\n", - " 'but i am a heavy dreamer',\n", - " 'we fight battles in the chaos waste',\n", - " 'crushing and routing the enemy',\n", - " 'battle for supremacy',\n", - " 'slaughtering, hammering, polluting',\n", - " 'hordes of chaos',\n", - " 'hordes of chaos',\n", - " 'hordes of chaos',\n", - " 'hordes of chaos',\n", - " 'marching to the south in mail clad ranks',\n", - " 'searching for eternal butchery',\n", - " 'armies on the way are defeated',\n", - " 'war is coming down from the north',\n", - " 'hordes of chaos',\n", - " 'hordes of chaos',\n", - " 'hordes of chaos',\n", - " 'hordes of chaos',\n", - " 'torture',\n", - " 'perverse slaughter',\n", - " 'eternal butchery',\n", - " 'endless insanity',\n", - " 'causing mayhem',\n", - " 'false redemption',\n", - " 'licking gore',\n", - " 'spilling blood',\n", - " 'hordes of chaos',\n", - " 'hordes of chaos',\n", - " 'hordes of chaos',\n", - " 'hordes of chaos',\n", - " 'from the north',\n", - " 'i whisper softly but the words no longer say',\n", - " 'so now we watch it gently drift away',\n", - " 'blasted with the sigh, surrounded with tears',\n", - " 'so upon this mountain,i rest my fears',\n", - " 'brother,am i a fool?',\n", - " 'you can cry me a river,cry me a river',\n", - " 'i could be swimming in your sea when you cry me a river',\n", - " 'i cried a river for you',\n", - " \"what kind of fool am i to think that you'd stay?\",\n", - " 'i hold the cup against my lips and i taste',\n", - " 'fills me with desire,fills me with hate',\n", - " \"so upon my knees i'll wait\",\n", - " 'you can cry me a river,cry me a river',\n", - " 'i could be swimming in your sea when you cry me a river',\n", - " 'i cried a river for you',\n", - " 'there are rivers to be filled',\n", - " \"that doesn't change the way that i choose to live\",\n", - " 'all you said were lies',\n", - " \"now you're only waiting for rivers to be cried\",\n", - " 'cry me a river cuz a cried one for you',\n", - " \"there ain't no mountain i wouldn't climb for you\",\n", - " \"what kinda fool am i to think that you'll stay\",\n", - " 'i hold the cup cuz i miss the taste',\n", - " \"it's hard to be tender\",\n", - " \"it's hard to stay open\",\n", - " \"when you're dizzy with anger\",\n", - " 'and your dreams have been broken',\n", - " \"lying with you 'neath the sky\",\n", - " 'the country is so green in the light',\n", - " \"loving you's the key to my survival\",\n", - " 'now you have gone away',\n", - " 'the skies turned grey, the rivers froze',\n", - " 'i remember how you held me close',\n", - " 'and i shiver',\n", - " \"it's hard to be tender\",\n", - " \"it's hard to stay open\",\n", - " 'when the woods are on fire',\n", - " 'and the river is frozen',\n", - " 'swore on my knees as a child',\n", - " 'never to forsake god above',\n", - " 'never to betray the ones who love me',\n", - " 'now years have come and gone',\n", - " 'i find the strength to carry on',\n", - " 'but the blood that ran so fast and warm',\n", - " 'has grown colder',\n", - " 'now my heart has turned to ice',\n", - " 'is it just the price of growing older?',\n", - " \"it's hard to be tender\",\n", - " \"but i'm tired of defending\",\n", - " 'i know that i love you',\n", - " \"so i'll write my own ending\",\n", - " 'living battle faces on',\n", - " 'masking actions in the wrong',\n", - " 'superheroes imitate',\n", - " \"and come around when it's too late\",\n", - " \"i know that we'll make time\",\n", - " 'and set this right, tonight',\n", - " 'tonight',\n", - " 'thankful for this, fame we take',\n", - " 'for the complication we create',\n", - " 'and i know, somehow',\n", - " \"we'll be fine, tonight\",\n", - " 'tonight',\n", - " \"i'm in the wrong, uh, octave for that one, let's try this\",\n", - " \"oh, that's the octave of sales right there\",\n", - " 'there it is',\n", - " 'is it in the sales key? otherwise...',\n", - " 'we took a whole internet correspondence course on jingle writing and they told us to put a song in this key',\n", - " 'oh, okay',\n", - " 'industry secret',\n", - " 'late at night, all alone',\n", - " \"after i'm finished\",\n", - " 'kleenex is there for me',\n", - " 'you can never have enough kleenex',\n", - " 'give it to me, give it to me',\n", - " 'give it to me, give it to me',\n", - " 'give it to me, give it to me',\n", - " 'give it to me, give it to me',\n", - " 'give it to me',\n", - " 'yeah, my durango, number 95',\n", - " 'kick boots and ultra live',\n", - " 'see heaven, flash a horror show',\n", - " 'knock it nice and smooth',\n", - " 'step back and watch it flow, yeah',\n", - " 'never gonna stop',\n", - " 'never gonna stop',\n", - " 'never gonna stop',\n", - " 'never gonna stop',\n", - " 'give it to me, give it to me',\n", - " 'give it to me, give it to me',\n", - " 'give it to me, give it to me',\n", - " 'yeah, the devil, ride a dinosaur',\n", - " 'he paint the monster red',\n", - " \"so the blood don't stain the floor\",\n", - " 'in and out, real savage show',\n", - " 'sorry as a shot, came sickness',\n", - " 'watch it flow, yeah',\n", - " 'never gonna stop',\n", - " 'never gonna stop',\n", - " 'never gonna stop',\n", - " 'never gonna stop',\n", - " 'intermission',\n", - " 'use my body to keep you alive',\n", - " 'use my body to keep you alive',\n", - " \"i don't care what you do to me\",\n", - " 'use my body to keep you alive',\n", - " \"i don't care what you do to me\",\n", - " 'use my body to keep you alive',\n", - " 'yeah, my durango, number 95',\n", - " 'kick boots and ultra live',\n", - " 'see heaven, flash a horror show',\n", - " 'knock it nice and smooth',\n", - " 'step back and watch it flow, yeah',\n", - " 'never gonna stop',\n", - " 'never gonna stop',\n", - " 'never gonna stop',\n", - " 'never gonna stop',\n", - " 'not a tree on the skyline',\n", - " 'nor a bird in the wing',\n", - " 'whispers frozen for all time',\n", - " \"no man's land will be king\",\n", - " 'left deserted, a cold smile',\n", - " \"from the way they've been served\",\n", - " 'virgin mother and her child',\n", - " 'turn their face from the world',\n", - " \"just for a moment, they're only men\",\n", - " 'on christmas day',\n", - " \"there'll be no killing or fighting\",\n", - " 'on christmas day',\n", - " \"there'll be no thunder and lighting\",\n", - " 'on christmas day',\n", - " 'on christmas day',\n", - " \"many years they'll remember\",\n", - " \"and they'll toast absent friends\",\n", - " 'on that cold day december',\n", - " ...]},\n", - " 'r-b': {'meta': {'train_data': ['no, you just do your thing',\n", - " 'stop playing with your body, lady',\n", - " \"stop feeling like you're not enough\",\n", - " 'stop feeding into the haters',\n", - " 'stop and give yourself some love, woah',\n", - " 'stop staring at the mirror getting faded',\n", - " \"saying you won't fall in love\",\n", - " 'stop trusting all those fake idiots',\n", - " \"trust me they don't give a fuck, woah\",\n", - " \"i'm tired of seeing it\",\n", - " \"i'm tired of feeling this\",\n", - " 'the world says beauty is changing',\n", - " \"fuck that, it's fake expectation of the real shit\",\n", - " \"let's get naked\",\n", - " 'start meditating',\n", - " 'feel elevated and say',\n", - " 'i love my body, i love my skin',\n", - " 'i am a goddess, i am a queen',\n", - " 'i love my body, i love my skin',\n", - " 'i am a goddess, i am a queen',\n", - " 'stop chasing all the hype, my girl',\n", - " 'stop trying to change who you are',\n", - " 'stop cutting yourself up on the outside',\n", - " 'when the inside is left with scars',\n", - " \"it can't be healed with something materialistic\",\n", - " \"can't be healed by a man who stays distant\",\n", - " \"it's deeper\",\n", - " 'save yourself, before you betray yourself',\n", - " 'oh, oh-oh-oh, oh-oh, hey',\n", - " \"i'm tired of seeing it\",\n", - " \"i'm tired of feeling this\",\n", - " 'the world says beauty is changing',\n", - " \"fuck that, it's fake expectation of the real shit\",\n", - " \"let's get naked\",\n", - " 'start meditating',\n", - " 'feel elevated and say',\n", - " 'i love my body, i love my skin',\n", - " 'i am a goddess, i am a queen',\n", - " 'i love my body, i love my skin',\n", - " 'i am a goddess, i am a queen',\n", - " 'yes',\n", - " 'i love my body, i love my skin',\n", - " 'i am a goddess, i am a queen',\n", - " 'i love my body, i love my skin',\n", - " 'i am a goddess, i am a queen, oh',\n", - " 'i love my, i love my',\n", - " 'i am a, i am a',\n", - " 'i love my, i love my, huh',\n", - " 'i am a, i am a',\n", - " 'i love my body, i love my skin',\n", - " 'i am a goddess, i am a queen',\n", - " 'i love my body, i love my skin, yeah',\n", - " 'i am a goddess, i am a queen, hm',\n", - " 'i am a queen, queen, queen, queen',\n", - " 'i am a queen',\n", - " 'i am a queen',\n", - " 'skies of blue and birds of yellow',\n", - " 'flowers growing just to bloom',\n", - " 'a million chances of our glances',\n", - " 'catching eyes across the room',\n", - " 'if time stands still',\n", - " 'move i will to you',\n", - " \"this world's filled\",\n", - " 'somehow i see you',\n", - " 'move i will to you',\n", - " 'rain could pour upon your face now',\n", - " 'and yet your beauty would still shine',\n", - " 'i would live a thousand lifetimes',\n", - " \"if it's you i'm sent to find\",\n", - " 'if time stands still',\n", - " 'move i will to you',\n", - " \"this world's filled\",\n", - " 'somehow i see you',\n", - " 'move i will to you',\n", - " 'move all the water, babe',\n", - " 'lift the rocks up, tide getting stuck',\n", - " 'nothing can stop us',\n", - " 'move all the water, babe',\n", - " 'lift the rocks up, tide getting stuck',\n", - " 'nothing can stop us',\n", - " 'if time stands still',\n", - " 'move i will to you',\n", - " \"this world's filled\",\n", - " 'somehow i see you',\n", - " 'if time stands still (if time stands still)',\n", - " 'move i will to you (move i will to you)',\n", - " \"this world's filled\",\n", - " 'somehow i see you (some how i see you)',\n", - " 'move i will to you',\n", - " 'ooh-ooh-ooh-ooh, ooh-ooh, ooh-ooh-ooh',\n", - " 'ooh-ooh-ooh, ooh-ooh-ooh, ooh-ooh-ooh',\n", - " \"there's a light\",\n", - " 'a certain kind of light',\n", - " \"that's never shown on me\",\n", - " 'i want my whole life to be',\n", - " 'lived with you',\n", - " 'lived with you',\n", - " \"there's a way\",\n", - " 'everybody say',\n", - " 'to do every, every little thing',\n", - " 'what good does it bring',\n", - " \"if i ain't got you?\",\n", - " \"if i ain't got you\",\n", - " \"you don't (you don't know what it's like)\",\n", - " \"you don't know what it's like\",\n", - " \"honey, you don't know what it's like\",\n", - " 'to love somebody (to love somebody)',\n", - " 'to love somebody',\n", - " 'the way that i love you (the way that i love you)',\n", - " 'in my brain',\n", - " 'i see your face again',\n", - " 'and i know my frame, my frame of mind',\n", - " \"you don't have to be so blind\",\n", - " \"oh, but i'm blind\",\n", - " \"yes, i'm so blind\",\n", - " \"i'm a woman\",\n", - " \"can't you see what i am?\",\n", - " 'i live and i breathe, i live and breathe for you',\n", - " 'and what good, what good does it do',\n", - " \"if i ain't got you?\",\n", - " \"if i ain't got you\",\n", - " \"you don't (you don't know what it's like)\",\n", - " \"you don't know what it's like\",\n", - " \"honey, you don't (you don't know what it's like)\",\n", - " \"you don't know what it's like\",\n", - " 'to love somebody (to love somebody)',\n", - " 'to love somebody',\n", - " 'the way i love you (the way i love you)',\n", - " 'yeh, ey',\n", - " 'to love somebody (oh, to love somebody)',\n", - " 'to love somebody (oh, no, no, oh)',\n", - " 'the way i love you (the way i love ya)',\n", - " '(the way i love you)',\n", - " 'hey (to love somebody)',\n", - " \"you don't know what it's like (to love somebody)\",\n", - " \"oh, you don't know what it's like\",\n", - " 'to love somebody the way i love you',\n", - " 'somebody that i need',\n", - " 'somebody that i need',\n", - " 'i get you what you want when you need it',\n", - " 'i gave you what you want and you paid me, yeah',\n", - " \"now i'm movin’\",\n", - " \"tell me who you were, are you bein' real, yeah\",\n", - " 'i can play nice, do it how you like, oh yeah, yeah, yeah',\n", - " 'play dress up for the night, get it how you like, oh yeah, yeah, yeah',\n", - " 'we can catch a flight, only for a night, oh yeah, yeah, yeah',\n", - " \"i'm over you\",\n", - " 'but i used somebody i need',\n", - " 'i used somebody i need',\n", - " 'i used somebody i need',\n", - " 'i used somebody to me',\n", - " 'i used somebody i need',\n", - " 'i used somebody i need',\n", - " 'but i used somebody i need',\n", - " 'i used somebody to me',\n", - " 'i don’t really want nobody',\n", - " \"that don't know what they want, oh yeah\",\n", - " 'but i really want you body',\n", - " 'closer than i want i suppose',\n", - " \"and i'm on your vibe, yeah\",\n", - " 'so if you want my time, babe show me',\n", - " 'babe, show me (show me)',\n", - " 'oh yeah, yeah, yeah',\n", - " 'i can play nice, do it how you like, oh yeah, yeah, yeah',\n", - " 'play dress up for the night, get it how you like, oh yeah, yeah, yeah',\n", - " 'we can catch a flight, only for a night, oh yeah, yeah, yeah',\n", - " \"i'm over you\",\n", - " 'but i used somebody i need',\n", - " 'i used somebody i need',\n", - " 'i used somebody i need',\n", - " 'i used somebody to me',\n", - " 'i used somebody i need',\n", - " 'i used somebody i need',\n", - " 'but i used somebody i need',\n", - " 'i used somebody to me',\n", - " '(somebody that i need)',\n", - " 'show you what i need know',\n", - " 'to money low, too money low',\n", - " 'show me to work for me',\n", - " 'to work for me, to work for me',\n", - " 'somebody that i need',\n", - " 'i need somebody',\n", - " 'i need somebody, yeah',\n", - " 'somebody that i need',\n", - " 'i used somebody, somebody that i need',\n", - " 'i used somebody, somebody that i need',\n", - " 'everybody dance, do-do-do',\n", - " 'clap your hands, clap your hands',\n", - " 'everybody dance, do-do-do',\n", - " 'clap your hands, clap you hands',\n", - " 'everybody dance, do-do-do',\n", - " 'clap your hands, clap your hands',\n", - " 'everybody dance, do-do-do',\n", - " 'clap your hands, clap your hands',\n", - " 'music never lets you down',\n", - " 'puts a smile on your face any time, any place',\n", - " 'dancing helps relieve the pain',\n", - " 'soothes your mind, makes you happy again',\n", - " 'listen to those dancing feet',\n", - " 'close your eyes and let go',\n", - " \"but it don't mean a thing if it ain't got that swing\",\n", - " 'spinning all around the floor just like rogers and astaire',\n", - " 'who found love without a care stepping to our favorite tune',\n", - " 'the good times always end too soon',\n", - " \"everybody's dancing lift your feet, have some fun\",\n", - " 'come on everybody, get on your feet',\n", - " \"clap your hands everybody's screaming\",\n", - " '(x2)',\n", - " 'everybody dance',\n", - " 'everybody dance',\n", - " 'everybody dance',\n", - " 'everybody dance',\n", - " 'everybody dance',\n", - " 'everybody dance',\n", - " 'everybody dance',\n", - " 'everybody dance',\n", - " 'everybody dance, do-do-do',\n", - " 'clap your hands, clap your hands',\n", - " 'everybody dance, do-do-do',\n", - " 'clap your hands, clap you hands',\n", - " '(x4)',\n", - " 'i know better than anybody how it feels',\n", - " 'to want somebody so bad after you break up',\n", - " 'still looking for that phone call',\n", - " \"still, even when they don't call\",\n", - " \"still ain't ready to walk away and call it all over\",\n", - " \"act like you wasn't listening when they told you\",\n", - " \"they don't want to be with you anymore\",\n", - " 'stuck in your ways, you choose to ignore',\n", - " \"'cause in your mind, you're still together\",\n", - " \"thought it would last, but there's no forever\",\n", - " 'walked out on you with no call, no letter',\n", - " \"when he realize it don't get no better\",\n", - " \"he'll be back to make up for the lonely days\",\n", - " \"he'll be back when things ain't working out his way\",\n", - " \"he'll be back when he sees that it's not the same\",\n", - " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", - " \"he knows he's gonna need his lady\",\n", - " \"he'll be back when his boys say he must be crazy\",\n", - " \"he'll be back, he'll know he made a big mistake\",\n", - " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", - " \"you don't want to believe it but you see it happening\",\n", - " \"wakes you up out of your sleep, out of the dreams you're having\",\n", - " 'still looking for his return',\n", - " \"still hoping that he's gonna learn\",\n", - " 'wake up, and realize the truth',\n", - " 'make some time for you',\n", - " 'what is he trying to do to you?',\n", - " 'miss him more as days go by',\n", - " 'try your hardest not to cry and keep hope alive',\n", - " \"'cause in your mind, you're still together\",\n", - " \"thought it would last, but there's no forever\",\n", - " 'walked out on you with no call, no letter',\n", - " \"when he realize it don't get no better\",\n", - " \"he'll be back to make up for the lonely days\",\n", - " \"he'll be back when things ain't working out his way\",\n", - " \"he'll be back when he sees that it's not the same\",\n", - " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", - " \"he knows he's gonna need his lady\",\n", - " \"he'll be back when his boys say he must be crazy\",\n", - " \"he'll be back, he'll know he made a big mistake\",\n", - " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", - " 'thinking, oh, oh, every, ooh, wanting, haunting',\n", - " 'thinking, oh, oh, every, ooh, wanting, haunting',\n", - " \"he'll be back, thinking, oh, oh, every, ooh, wanting, haunting\",\n", - " 'thinking, oh, oh, every, ooh, wanting, haunting',\n", - " \"he'll be back to make up for the lonely days\",\n", - " \"he'll be back when things ain't working out his way\",\n", - " \"he'll be back when he sees that it's not the same\",\n", - " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", - " \"he knows he's gonna need his lady\",\n", - " \"he'll be back when his boys say he must be crazy\",\n", - " \"he'll be back, he'll know he made a big mistake\",\n", - " \"he'll be back, he'll be back, he'll be back, he'll be back, he'll be back\",\n", - " \"your heart is so heavy you don't know where to turn\",\n", - " \"and there's a fire in your mind there, forever seems to burn\",\n", - " \"but one morning you'll wake up, feeling alive and free\",\n", - " 'singing \"oh happy days, peace be still, let it be\"',\n", - " 'and that means',\n", - " 'love is taking over',\n", - " 'love is taking over',\n", - " \"love is taking over and hate don't live here no more\",\n", - " 'love is taking over',\n", - " 'love is taking over',\n", - " \"love is taking over and hate don't live here no more\",\n", - " 'we try to get around it, but still we see',\n", - " 'little black and white children, lord',\n", - " 'taking it on the knee',\n", - " 'you see they call it reflection',\n", - " 'when you see yourself',\n", - " 'in the mirror of somebody else',\n", - " 'and i know that',\n", - " 'love is taking over, yeah',\n", - " \"love is taking over, 'cause i feel it!\",\n", - " \"love is taking over and hate don't live here no more\",\n", - " 'love is taking over, yeah, yeah',\n", - " 'love is taking over',\n", - " \"love is taking over and hate don't live here no more\",\n", - " 'giant steps are being taken',\n", - " 'to bring about peace today',\n", - " 'little children are being trapped',\n", - " 'and i see a change in man',\n", - " 'and i know that',\n", - " 'love is taking over, yeah',\n", - " 'love is taking over',\n", - " \"love is taking over and hate don't live here no more\",\n", - " 'now you close your eyes so you can see',\n", - " \"said it scared ya half to death now don't it, what you used to be\",\n", - " 'but if feels good to wake, knowing you got a friend',\n", - " 'saying everything you lived for, thank god, amen',\n", - " 'and i know that',\n", - " 'love is taking over, oh yeah',\n", - " 'love is taking over',\n", - " \"love is taking over and hate don't live here no more\",\n", - " 'no, no, no!',\n", - " 'love is taking over',\n", - " 'love is taking over, now i can feel it with !',\n", - " \"love is taking over and hate don't live here no more\",\n", - " 'no, no, no!',\n", - " \"love is taking over, yeah, yes it's taking over, yeah!\",\n", - " \"love is taking over, my, my my it's taking over me\",\n", - " \"love is taking over (whoa i feel it) and hate don't live here no more\",\n", - " 'terrace of the nightclub, cigarette butts, white wearing young boys',\n", - " 'all the things you would like, all the highs, dancing, not hearing own voice',\n", - " 'the crowd is so tight that you’re gasping for air, only to inhale smoke',\n", - " 'if i don’t see you tomorrow, can you take care of this one hope?',\n", - " 'take care of my lyrics, that’s where i put the meaning when it seemed to be meaningless',\n", - " 'take care of my enemies, i never wanted beef, so it’s time to get some quiet peace',\n", - " 'let my father know i tried be a mountain, placed in an ocean, water all around me',\n", - " 'couldn’t stand tall so i started drowning, and now you found me',\n", - " 'tell me you won’t leave me, i want you to see this',\n", - " 'moment of my weakness, smallest that i’ve been yet',\n", - " 'leaning on you selfishly, even though i’m leaving',\n", - " 'asking for your blindness as i attempt to seize it',\n", - " 'apathy is killing me, getting hard to fight it',\n", - " 'don’t remember what it feels like to be inspired',\n", - " 'wind and water overhead, taking out the fire',\n", - " 'red coal flickering underneath the pyre',\n", - " 'step inside it i hear from the other side now',\n", - " 'lord of light claiming just another damn liar',\n", - " 'tongues of flames are licking me, blazing even higher',\n", - " 'now the mask is ripping off, showing what i’m hiding',\n", - " \"i-i-i-i hear you talkin' but i'm not listenin' (listenin')\",\n", - " \"it's been about a hour, you ain't finished yet (finished yet)\",\n", - " \"so what's it gonna be? catch your time to think\",\n", - " \"shouldn't be that hard when it comes to this\",\n", - " \"i-i-i was your rock when you ain't have it (have it)\",\n", - " \"now you actin' brand new. what's the deal here? (deal here)\",\n", - " \"i may run in the streets, i'm reaching a break\",\n", - " 'i done had enough',\n", - " \"so now it's time to go\",\n", - " \"baby, that's your queue to leave\",\n", - " \"ain't feelin' you no more\",\n", - " \"if that's how it's gonna be\",\n", - " 'tell me why do you deserve another second chance (a second chance)',\n", - " \"now i'm gonna want to take a better man\",\n", - " \"so now it's time to go\",\n", - " 'time to go, time to go',\n", - " \"you-you-you-you-you think you prove but you're a little boy\",\n", - " \"little boy, screamin' and shoutin'\",\n", - " \"makin' all this noise\",\n", - " \"don't even know what we're fightin' for\",\n", - " 'it makes no sense to me',\n", - " \"but damn i thought i've told you to move to the left (to the left)\",\n", - " \"you playin' these games, i've got nothing else (i've got nothing else)\",\n", - " 'it is obvious and clear to me',\n", - " \"i can't get through to you anymore\",\n", - " \"so now it's time to go\",\n", - " \"baby, that's your queue to leave\",\n", - " \"ain't feelin' you no more\",\n", - " \"if that's how it's gonna be\",\n", - " 'tell me why do you deserve another second chance (a second chance)',\n", - " \"now i'm gonna want to take a better man\",\n", - " 'time to go',\n", - " 'time to go, time to go',\n", - " 'you can spy the settle thought of this one',\n", - " 'no more lies',\n", - " \"you're at the door\",\n", - " \"so now it's time to go (time to go)\",\n", - " \"baby, that's your queue to leave\",\n", - " \"ain't feelin' you no more (ain't feelin' you no more)\",\n", - " \"if that's how it's gonna be\",\n", - " 'tell me why do you deserve another second chance (a second chance)',\n", - " \"now i'm gonna want to take a better man\",\n", - " 'time to go',\n", - " \"time to go, time to go (and it's time to go)\",\n", - " 'time to go (go), time to go (go)',\n", - " 'time to go (go), time to go (go)',\n", - " 'ooh, ooh ooh',\n", - " 'ooh, ooh ooh',\n", - " 'are you ready for the time of your life',\n", - " \"it's time to stand up and fight\",\n", - " \"(it's alright) it's alright (it's alright, it's alright)\",\n", - " \"hand in hand we'll take a caravan\",\n", - " 'to the motherland',\n", - " \"one by one we're gonna stand with the pride\",\n", - " \"one that can't be denied\",\n", - " '(stand up, stand up, stand up)',\n", - " 'from the highest mountain, and valley low',\n", - " \"we'll join together with hearts of gold\",\n", - " 'now the children of the world can see',\n", - " \"there's a better way for us to be\",\n", - " 'the place where mankind was born is so neglected and torn',\n", - " 'torn apart',\n", - " 'every woman, every man',\n", - " 'join the caravan of love',\n", - " '(stand up, stand up, stand up)',\n", - " 'everybody take a stand',\n", - " 'join the caravan of love',\n", - " \"i'm your brother\",\n", - " \"i'm your brother, don't you know\",\n", - " \"i'm your brother\",\n", - " \"i'm your brother, don't you know\",\n", - " \"we'll be living in a world of peace\",\n", - " 'in a day when everyone is free',\n", - " \"we'll bring the young and the old\",\n", - " \"won't you let your love flow from your heart\",\n", - " 'every woman, every man',\n", - " 'join the caravan of love',\n", - " '(stand up, stand up, stand up)',\n", - " 'everybody take a stand',\n", - " 'join the caravan of love',\n", - " \"i'm your brother\",\n", - " \"i'm your brother, don't you know\",\n", - " \"i'm your brother\",\n", - " \"i'm your brother, don't you know\",\n", - " 'now the children of the world can see',\n", - " \"there's a better way for us to be\",\n", - " 'the place where mankind was born',\n", - " 'is so neglected and torn',\n", - " 'torn apart',\n", - " 'every woman, every man',\n", - " 'join the caravan of love',\n", - " '(stand up, stand up, stand up)',\n", - " 'everybody take a stand',\n", - " 'join the caravan of love',\n", - " 'are you ready for the time of your life?',\n", - " '(are you ready? are you ready?)',\n", - " 'are you ready for the time of your life?',\n", - " '(are you ready? are you ready?)',\n", - " 'come go with me',\n", - " '(are you ready? are you ready?)',\n", - " 'come go with me',\n", - " '(are you ready? are you ready?)',\n", - " 'every woman, every man',\n", - " 'join the caravan of love',\n", - " '(are you ready? are you ready?)',\n", - " 'everybody take a stand',\n", - " 'join the caravan of love',\n", - " '(are you ready? are you ready?)',\n", - " 'every woman, every man',\n", - " 'join the caravan of love',\n", - " '(are you ready? are you ready?)',\n", - " 'everybody take a stand',\n", - " 'join the caravan of love',\n", - " '(are you ready? are you ready?)',\n", - " 'in a dream',\n", - " \"you came to me and i don't know what to say\",\n", - " 'you got me wrapped around your finger with everything you do so',\n", - " \"and that's the truth\",\n", - " 'in the dark days',\n", - " 'we gonna be alright',\n", - " 'in the night time',\n", - " \"i'll lead you to the light\",\n", - " 'and cross my heart',\n", - " \"don't you think about it just know i always got you babe\",\n", - " 'i got you babe',\n", - " \"you don't ever have to walk alone\",\n", - " 'i know we can always find a way',\n", - " \"you are the queen that's on the throne\",\n", - " 'i need you to stay with me',\n", - " \"you've given me lifelines\",\n", - " \"you've given me lifelines\",\n", - " 'i tried',\n", - " 'to think about all the things you mean to me',\n", - " 'all the little ways you guided me to be everything i am oh',\n", - " \"girl that's the truth\",\n", - " 'and i think about the days',\n", - " 'tears falling down my face',\n", - " 'so let me take the time',\n", - " \"now before it's too late\",\n", - " \"crying, yelling there's no telling where i'd be without your love\",\n", - " 'just wanna thank you, love',\n", - " 'i carry your name and your lineage',\n", - " 'i carry the flame and my intention is to keep it ablaze until somebody gets wind of it',\n", - " 'and tries to blow it out',\n", - " 'sorry i have my doubts',\n", - " \"sorry i have my bouts in the cesspool it's stressful i wanna shout\",\n", - " 'preacher play it again',\n", - " 'lucky i got a friend',\n", - " 'as long as you live within',\n", - " \"i won't never go without\",\n", - " 'tigallo out',\n", - " 'you know you want me',\n", - " 'and i know i need you',\n", - " \"it's just me and you\",\n", - " \"so watchu gon' do about it?\",\n", - " 'eh-eh, eh-eh',\n", - " \"eh-eh, eh-eh, watchu gon' do about it?\",\n", - " 'eh-eh, eh-eh',\n", - " \"eh-eh, eh-eh, watchu gon' do about it?\",\n", - " 'you know you want me',\n", - " 'and i know i need you',\n", - " \"it's just me and you\",\n", - " \"so watchu gon' do about it?\",\n", - " 'you know you want me',\n", - " 'and i know i need you',\n", - " \"it's just me and you\",\n", - " \"eh-eh, eh-eh, so watchu gon' do about it?\",\n", - " 'eh-eh, eh-eh',\n", - " 'eh-eh, eh-eh',\n", - " \"eh-eh, eh-eh, watchu gon' do about it?\",\n", - " 'eh-eh, eh-eh',\n", - " 'you know you want me',\n", - " 'and i know i need you',\n", - " \"it's just me and you\",\n", - " \"so watchu gon' do about it?\",\n", - " \"i don't want to be without you\",\n", - " 'only want to stand beside you',\n", - " \"i don't care who came before me\",\n", - " 'holy water cures all envy',\n", - " 'but boy i can only fall deeper in with you',\n", - " 'so please be forgiving let me baptize you',\n", - " 'water coming down like (ooh)',\n", - " 'water coming down like (ooh)',\n", - " 'water coming down like (ooh)',\n", - " 'water coming down like (ooh)',\n", - " 'with the power i surrender',\n", - " \"come it's time to go out singing\",\n", - " \"don't be frightened by the thunder\",\n", - " 'let the water wash all over',\n", - " 'but boy i can only fall deeper in with you (you)',\n", - " 'so please be forgiving let me baptize you (ooh)',\n", - " 'oh boy, i can only fall deeper in with you (ooh)',\n", - " 'so please be forgiving let me baptize you',\n", - " 'water coming down like (ooh)',\n", - " 'water coming down like (ooh)',\n", - " 'water coming down like (ooh)',\n", - " 'water coming down like (ooh)',\n", - " 'water, let me come and baptize you, ooh',\n", - " 'water, let me come and baptize you, baby',\n", - " 'water, let me come and baptize you, ooh',\n", - " 'water, let me come and baptize you',\n", - " \"you're bringing the bagels on a tray of cheese\",\n", - " 'smoke up the cables as we moving east',\n", - " 'i think i get you now',\n", - " \"you ain't supposed to be figured out\",\n", - " 'fixing the bagels for a minor feast',\n", - " 'taking the dip, just for a quick release',\n", - " 'we making the sound unique',\n", - " \"don't wanna fall asleep\",\n", - " \"you can see me stallin'\",\n", - " 'busy solving something',\n", - " \"i'm not in a rush but i'm honest to leave you know\",\n", - " 'but i call balling',\n", - " \"in a way, i'm crawling in the mud\",\n", - " 'just for the rush',\n", - " 'at the end of going on and on, yeah',\n", - " 'always on the run',\n", - " 'busy doing nothing, just too fun',\n", - " 'skinny-dipping, all these colored swirls',\n", - " 'floating on the fog, yeah',\n", - " 'in the fall',\n", - " 'smell of cigarettes and hot old love',\n", - " 'just a bunch of creatures having fun',\n", - " 'thinking we balance in the run',\n", - " \"you can see me stallin'\",\n", - " \"'cause i'm busy solving something\",\n", - " \"i'm not in a rush but i'm honest to leave you know, yeah\",\n", - " 'but i call balling',\n", - " \"in a way, i'm crawling in the mud\",\n", - " 'just for the rush',\n", - " 'at the end of going on and on',\n", - " '(yeah, yeah, yeah, yeah)',\n", - " 'i wait a minute, any minute now',\n", - " \"don't try to kill it though, it's been a while\",\n", - " 'oh no my',\n", - " \"i won't waste it all\",\n", - " 'just for fifteen',\n", - " \"if you see me stallin'\",\n", - " \"it's 'cause i'm busy solving something\",\n", - " \"i'm not in a rush but i'm honest to leave you know\",\n", - " 'but i call balling',\n", - " \"in a way, i'm crawling in the mud\",\n", - " 'just for the rush',\n", - " 'at the end of going on and on, yeah',\n", - " 'ooh-ooh, ah',\n", - " 'ooh-ooh, ah',\n", - " 'ooh-ooh, ah',\n", - " \"(i don't need you anymore)\",\n", - " \"i can't imagine how you be getting through the day\",\n", - " 'it must be hard when you be carrying all the weight',\n", - " 'but even with that i see you rarely do complain',\n", - " \"you give your heart and soul and still they don't appreciate you\",\n", - " 'man or woman i got nothing but respect for you',\n", - " 'just knowing you got to deal with all the things we put you through',\n", - " 'so i give a standing o to you',\n", - " 'i raise my glass to you',\n", - " \"i won't pretend to know\",\n", - " \"i can't begin to know\",\n", - " \"i'm fascinated on the daily how you do the things you do\",\n", - " \"man or woman i ain't got a clue\",\n", - " 'oh no',\n", - " \"girl i'm so mesmerized\",\n", - " \"i'm even mystified\",\n", - " 'your affection shows in everything and anything you do',\n", - " \"man or woman i ain't got a clue no\",\n", - " \"it's amazing how you do all that you do\",\n", - " 'suffice to say my hat goes off to you',\n", - " 'a standing ovation',\n", - " 'ovation',\n", - " 'and i just want to give a standing o to you',\n", - " 'a standing ovation',\n", - " \"i can't imagine myself walking in your shoes\",\n", - " \"it's not even worth the challenge, i know i would lose\",\n", - " \"you're just extraordinary, way above the ordinary\",\n", - " \"there ain't no conversation, been that way since god's creation\",\n", - " \"man or woman i can't help but be in awe of you\",\n", - " 'no matter what the deal somehow you always make it through',\n", - " 'so',\n", - " 'i give a standing o to you',\n", - " 'i raise my glass to you',\n", - " 'man to woman i got nothing but respect for you',\n", - " 'just knowing you got to deal with all the things we put you through',\n", - " 'so i give a standing o to you',\n", - " 'i raise my glass to you',\n", - " 'an ovation',\n", - " 'i just wanna give a standing o to you',\n", - " 'an ovation',\n", - " 'a standing ovation',\n", - " 'ovation',\n", - " 'a standing ovation',\n", - " 'ovation',\n", - " 'i just want to give a standing o to you',\n", - " \"i've spend so much money on cigarettes and weed\",\n", - " \"i've spend so much time on shit that i don't need\",\n", - " \"'cause all i need is just my gum, my gram and you\",\n", - " 'every drink or two',\n", - " \"it's all good tho, it's all good tho\",\n", - " \"it's all good tho, it's all good tho\",\n", - " \"it's all good tho, it's all good tho\",\n", - " \"this gon' be your favorite song\",\n", - " 'yeah, why you still texting my mama?',\n", - " \"you can let it go, she ain't calling back\",\n", - " 'why you still tryna start drama?',\n", - " \"we ain't even together, where they do that at\",\n", - " 'why you still calling my niggas bro?',\n", - " \"i'm just tryna get to way it was before\",\n", - " 'back in the day, when you had your own friends',\n", - " 'where them bitches at? you should go and hang with some of them',\n", - " \"'cause this shit is just awkward, yeah\",\n", - " 'girl, this shit is just awkward, oh woah',\n", - " \"baby, you don't see me, hanging with your sister\",\n", - " \"baby, you don't see me, liking all her pictures\",\n", - " \"baby, you don't see me\",\n", - " 'so tell why everywhere i look i see you?',\n", - " 'girl, this shit is just awkward',\n", - " 'let it go, baby lig',\n", - " 'girl, this shit is just awkward',\n", - " 'let it go, baby lig',\n", - " \"girl, i understand you're tryna get it popping\",\n", - " \"but just understand with me, it ain't an option\",\n", - " \"and if you're tryna holla at someone i introduced you to\",\n", - " \"baby, it's gon' be a problem\",\n", - " \"'cause they gon' choose up\",\n", - " \"'cause they know i'm that nigga\",\n", - " 'and my bank america account got six figures',\n", - " 'word to yg, my nigga, my nigga',\n", - " 'man, this shit is just awkward, yeah',\n", - " 'girl, this shit is just awkward, oh woah',\n", - " \"baby, you don't see me, hanging with your sister\",\n", - " \"baby, you don't see me, liking all her pictures\",\n", - " \"baby, you don't see me\",\n", - " 'so tell why everywhere i look i see you?',\n", - " 'girl, this shit is just awkward',\n", - " 'let it go, baby lig',\n", - " 'girl, this shit is just awkward',\n", - " 'let it go, baby lig',\n", - " 'you know i, you know i, you know i',\n", - " 'you know i hate to break your heart like this',\n", - " \"plus we ain't start like this\",\n", - " 'we started up a maybach together',\n", - " 'used to lay back together',\n", - " 'we go way back together',\n", - " \"don't know why you at my mama door\",\n", - " \"all in my dm's\",\n", - " \"all these niggas walkin' past you left and right\",\n", - " \"you don't see them?\",\n", - " \"we can't be friends 'cause this the end\",\n", - " \"let's make amends, instead of actin' crazy\",\n", - " 'i recommend you see other men',\n", - " \"it's other fish in the sea, so take a swim\",\n", - " 'she tryna work it out, i told her save that for the gym',\n", - " \"your attitude's a 5, and this bitch i'm with's a 10\",\n", - " 'and i just brought a straitjacket for you, so get in',\n", - " 'man, this shit is just awkward, yeah',\n", - " 'girl, this shit is just awkward, oh woah',\n", - " \"baby, you don't see me, hanging with your sister\",\n", - " \"baby, you don't see me, liking all her pictures\",\n", - " \"baby, you don't see me\",\n", - " 'so tell why everywhere i look i see you?',\n", - " 'girl, this shit is just awkward',\n", - " 'let it go, baby lig',\n", - " 'girl, this shit is just awkward',\n", - " 'let it go, baby lig',\n", - " 'you should lig',\n", - " 'let it go, baby',\n", - " \"'cause you're looking crazy\",\n", - " \"yeah, you're looking crazy, girl\",\n", - " 'if you only knew what i wanna give to you',\n", - " \"baby, it's everything your little heart desires\",\n", - " 'your little heart desires',\n", - " 'if you only knew how good i could make you feel',\n", - " 'we could make this real',\n", - " 'we could make this real',\n", - " 'what are you afraid of?',\n", - " 'what are you afraid of?',\n", - " 'what are you afraid of?',\n", - " \"i've been waiting for a chance just to talk to you\",\n", - " 'i wanna blow your mind and all over your body too',\n", - " 'cause when i notice you',\n", - " 'girl let me worship you',\n", - " 'girl let me worship you',\n", - " 'what are you afraid of?',\n", - " 'what are you afraid of?',\n", - " 'what are you afraid of?',\n", - " 'let me worship you',\n", - " 'let me worship you',\n", - " 'let me worship you',\n", - " 'baby let me love you',\n", - " \"promise i'll do it right\",\n", - " \"promise i'll do it right\",\n", - " \"promise i'll do it right\",\n", - " \"promise i'll do it right\",\n", - " 'if you only knew how i could make you feel',\n", - " 'we could make this real',\n", - " 'what are you afraid of?',\n", - " 'it’s not the place, not the place, not the place, no!',\n", - " 'i’m concentrated, concentrated, concentrated, so!',\n", - " 'don’t try to take me out of what i’m doing',\n", - " 'i don’t have time',\n", - " 'tomorrow morning’s finals!',\n", - " 'don’t tell me to, tell me to, tell me to stop!',\n", - " 'this attitude, attitude, attitude blocks',\n", - " 'me from doing what i should do',\n", - " 'i should be learning, not watching you doom!',\n", - " 'alright, let’s go for a ride',\n", - " 'tell me what’s going on tonight',\n", - " 'the street is full, the street is loud!',\n", - " 'alright, take me for a ride',\n", - " '1, 2, 3, see me—i‘m about',\n", - " 'to disappear, you’ll find me in the crowd!',\n", - " '(it’s not a good time to start this...)',\n", - " '(it’s not a good time to try this...)',\n", - " 'i took the chance, took the chance, took the chance, oh!',\n", - " 'now it depends, it depends on you!',\n", - " 'between the devil and the angel',\n", - " 'you made me drop it off',\n", - " 'now both are in danger!',\n", - " 'i hope you‘re ready for the night',\n", - " 'if i‘m coming out',\n", - " 'it must be your highlight!',\n", - " 'we go, we go, we go without',\n", - " 'we go, we go without a doubt!',\n", - " 'alright, let’s go for a ride',\n", - " 'tell me what’s going on tonight',\n", - " 'the street is full, the street is loud!',\n", - " 'alright, take me for a ride',\n", - " '1, 2, 3, see me—i‘m about',\n", - " 'to disappear, you’ll find me in the crowd!',\n", - " 'alright, let’s go for a ride',\n", - " 'tell me what’s going on tonight',\n", - " 'the street is full, the street is loud',\n", - " 'alright, take me for a ride',\n", - " '1, 2, 3, see me—i‘m about',\n", - " 'to disappear, you’ll find me in the crowd!',\n", - " 'alright, let’s go for a ride',\n", - " 'tell me what’s going on tonight',\n", - " 'the street is full, the street is loud!',\n", - " 'alright, take me for a ride',\n", - " '1, 2, 3, see me—i‘m about',\n", - " 'to disappear, you’ll find me in the crow',\n", - " 'there she goes, pulling up',\n", - " \"hoppin' out the latest beamer truck\",\n", - " \"makeup running, that's alright\",\n", - " 'pretty face, nice thighs',\n", - " \"bad' than a motherfucker\",\n", - " \"fire bomb, can't nobody else touch her\",\n", - " \"can't believe what i'm seeing\",\n", - " \"shawty's amazing, i ain't playin' when i'm sayin'\",\n", - " \"she's sophisticated, get it, yeah\",\n", - " \"she's sophisticated, get it, yeah\",\n", - " 'but she says she likes the bad boys',\n", - " \"well baby i'm a bad boy\",\n", - " \"she's sophisticated, jaded, and headed out to vegas\",\n", - " 'with her louis v bags and her matching suite cases',\n", - " \"and i know your heart is breakin' but baby what you waiting for\",\n", - " 'we out here, we out here',\n", - " \"she won't be sophisticated when we get a little faded, we out here\",\n", - " 'another martini, one for the pyt goes well with the scenery',\n", - " \"she can look fly whippin' a hyundai or a goddamn lamborghini\",\n", - " \"baby love why you lookin' so sad\",\n", - " \"make a night that you won't forget, we out here, fuck yeah\",\n", - " \"if you're sophisticated baby put ya hands up\",\n", - " 'if you fancy and you know it got your louis bag to show it',\n", - " \"your hair and nails done, man somebody should of told me she's so sophisticated\",\n", - " 'baby, stop running',\n", - " 'baby, stop running around',\n", - " 'baby, stop running',\n", - " 'baby, stop running around',\n", - " '1)',\n", - " 'i was just a young boy',\n", - " 'still playing with my toys',\n", - " 'hanging out with the guys',\n", - " 'until i realized',\n", - " 'you were something more',\n", - " 'that i never knew before',\n", - " 'you came around that day',\n", - " 'and all my games i put away',\n", - " 'i will love you everyday',\n", - " 'and each and every night i pray',\n", - " 'that you will always stay',\n", - " 'until my dying day',\n", - " '()',\n", - " '(baby, stop running around) with me girl',\n", - " '(baby, stop running) round my honey',\n", - " '(baby, stop running around) with me girl',\n", - " '(baby, stop running) round my hun',\n", - " '(2)',\n", - " 'always did the best i can',\n", - " \"i never thought i'd see you with another man\",\n", - " \"there's been talk going around\",\n", - " \"saying you're gonna put me down\",\n", - " \"i don't care what they say\",\n", - " \"i'm gonna love you anyway\",\n", - " 'just like mama said',\n", - " \"don't ever walk away\",\n", - " 'now when i see your eyes',\n", - " 'something has changed inside',\n", - " \"i don't know the reason that\",\n", - " \"you're giving me a heart attack\",\n", - " 'out of all the tears i cried',\n", - " 'along with the hurt inside',\n", - " \"i'll never leave you till\",\n", - " 'till you say good bye',\n", - " '()',\n", - " '(bridge)',\n", - " \"i'm gonna take a stand\",\n", - " \"cause i'm a fighting man\",\n", - " \"i'll do the best i can to make you understand\",\n", - " 'baby',\n", - " 'ohh, baby',\n", - " 'ohh, baby stop running',\n", - " 'oh oh',\n", - " 'baby baby baby',\n", - " 'ahhhh',\n", - " '()',\n", - " 'make it stop girl',\n", - " 'make it stop girl',\n", - " 'cause i need you baby',\n", - " 'i need you baby',\n", - " '(fade out)',\n", - " '...',\n", - " '*children laughing/playing*',\n", - " \"while i'm gone\",\n", - " \"you'll still sit at home\",\n", - " \"while i'm gone\",\n", - " \"you'll still sit at home\",\n", - " \"while i'm gone\",\n", - " \"you'll still sit at home\",\n", - " \"while i'm gone\",\n", - " \"you'll still sit at home\",\n", - " 'yeah',\n", - " 'come on',\n", - " 'come on',\n", - " 'come on',\n", - " '(darling)',\n", - " '(i love you)',\n", - " '(forever)',\n", - " '(and ever)',\n", - " 'yes i know times have changed',\n", - " \"i'll be straight up with you\",\n", - " \"it's so hard to explain why i feel the way i do\",\n", - " 'for you',\n", - " \"we've had ups and downs\",\n", - " \"long as love's still around yeah\",\n", - " 'we can make it last forever',\n", - " \"if we're not too proud to say\",\n", - " 'i love you',\n", - " '(darling)',\n", - " 'i love you',\n", - " '(i love you)',\n", - " 'forever',\n", - " '(forever)',\n", - " 'you make my dreams come true',\n", - " '(dreams come true)',\n", - " 'you know',\n", - " '(you know)',\n", - " 'and i know',\n", - " '(and i know)',\n", - " \"we'll be together\",\n", - " '(together)',\n", - " 'until the end of time',\n", - " '(until the end of time)',\n", - " \"it's so hard for a man\",\n", - " 'in this world full of trials',\n", - " 'tell me how can i get',\n", - " 'all the things that i want',\n", - " 'that i need',\n", - " 'if we both believe',\n", - " 'we can accomplish anything',\n", - " 'just think of all we could achieve',\n", - " \"'cause i'll be yours and you'll be mine\",\n", - " 'until the end of time',\n", - " '(darling)',\n", - " '(i love you)',\n", - " '(forever)',\n", - " 'forever',\n", - " '(dreams come true)',\n", - " 'you make my dreams come true',\n", - " '(you know)',\n", - " '(and i know)',\n", - " 'i know',\n", - " '(together)',\n", - " 'until the end of time',\n", - " '(until the end of time)',\n", - " '(darling)',\n", - " 'i love',\n", - " '(i love you)',\n", - " 'you',\n", - " '(forever)',\n", - " 'you make my dreams come true',\n", - " '(dreams come true)',\n", - " 'baby',\n", - " '(you know)',\n", - " 'you know',\n", - " '(and i know)',\n", - " \"we'll be together\",\n", - " '(together)',\n", - " 'until the end of time',\n", - " '(until the end of time)',\n", - " 'come on',\n", - " 'come on',\n", - " 'come on',\n", - " 'do it like this',\n", - " 'do it like this',\n", - " 'do it like this',\n", - " 'do it like this',\n", - " 'do it like this',\n", - " 'do it like this',\n", - " '(darling)',\n", - " 'time',\n", - " '(i love you)',\n", - " 'you',\n", - " '(forever)',\n", - " 'you make my dreams come true',\n", - " '(dreams come true)',\n", - " 'baby',\n", - " '(you know)',\n", - " 'you know',\n", - " '(and i know)',\n", - " \"we'll be together\",\n", - " '(together)',\n", - " 'until the end of time',\n", - " '(until the end of time)',\n", - " '(darling)',\n", - " 'i love',\n", - " '(i love you)',\n", - " 'i love you',\n", - " '(forever)',\n", - " 'i love you babe',\n", - " '(dreams come true)',\n", - " '(you know)',\n", - " 'oh baby',\n", - " '(and i know)',\n", - " 'oh baby',\n", - " '(together)',\n", - " 'you know',\n", - " '(until the end of time)',\n", - " 'that i love you',\n", - " '(darling)',\n", - " 'i love',\n", - " '(i love you)',\n", - " 'you',\n", - " '(forever)',\n", - " 'till the end of time',\n", - " '(dreams come true)',\n", - " '(you know)',\n", - " 'till the end of time',\n", - " '(and i know)',\n", - " '(together)',\n", - " 'till the end of time',\n", - " '(until the end of time)',\n", - " 'till the end of time',\n", - " 'time',\n", - " 'time',\n", - " 'time',\n", - " 'time babe',\n", - " \"that's all we need\",\n", - " 'in order to make a relationship work',\n", - " ...]},\n", - " 'data': [\"i've got money, and now i need love\",\n", - " \"i've got money, and now i need love\",\n", - " \"when i get my lovin', i'll be the happy one\",\n", - " \"i've got money now, no more money i need\",\n", - " 'oh, i got money, no more money i need',\n", - " \"hey, i don't have to worry\",\n", - " \"i don't have to let my heart leave\",\n", - " 'hey, come on now',\n", - " 'i need your love now',\n", - " 'i need your love so bad',\n", - " \"you're the best thing i ever had\",\n", - " 'oh yeah',\n", - " \"hey, i've got money now, no more money i want\",\n", - " \"oh, but love, don't leave me, don't\",\n", - " \"when i get my lovin', i'll be the happy one\",\n", - " 'oh, oh, yeah yeah yeah',\n", - " 'i need your love so bad',\n", - " 'i need your love so bad',\n", - " 'turn your love-light on me',\n", - " 'and ease my misery',\n", - " \"hey, i believe i'll sing the blues one more time\",\n", - " \"i'll believe i'll blow it one more 'gain\",\n", - " \"i've got to try it one more time\",\n", - " \"i'm going insane\",\n", - " 'hey, come on',\n", - " 'oh, oh, i got to sing the blues',\n", - " \"best thing i've ever had\",\n", - " 'i need your love so bad',\n", - " 'and oh...oh, tell the truth',\n", - " 'tell the truth, tell the truth',\n", - " 'i gotta sing the blues',\n", - " 'goodbye, so long',\n", - " \"that's all, i'm gone...ahhh\",\n", - " \"i like workin' in the dark\",\n", - " 'when i can get down and nobody can see how i get down',\n", - " 'cause then they try to copy how you get down',\n", - " 'and they they wanna turn it around and say \"i get down like this, kashif doesn\\'t get down like this, but i get down like this\"',\n", - " 'but you know i take the best of both worlds, i take it with a grain of salt, and i say \"to heck with it\"',\n", - " 'have you heard the latest word',\n", - " \"i'm supposed to be disturbed\",\n", - " \"it's just a rumor\",\n", - " 'just the other night',\n", - " 'someone said i lost my mind',\n", - " 'those crazy rumors',\n", - " \"talk 'bout me\",\n", - " 'all the time',\n", - " \"they don't know\",\n", - " \"what's on my mind\",\n", - " 'girl you haunt',\n", - " 'me every night',\n", - " 'those dreams of you',\n", - " 'and swee desire',\n", - " 'rumors of love',\n", - " \"tell 'em that it's true\",\n", - " \"that it's really me and you\",\n", - " 'rumors, this love',\n", - " \"tell 'em that it's us\",\n", - " \"that it's really us in love\",\n", - " 'rumor, rumor, rumor, rumor',\n", - " 'do you have a crush on me',\n", - " 'is it true, or could it be',\n", - " 'is it a rumor',\n", - " \"it's not fair for them to spread\",\n", - " 'things they make up in their head',\n", - " 'those crazy rumors',\n", - " 'i live in fear',\n", - " 'the walls have ears',\n", - " 'they repeat',\n", - " 'just what they hear',\n", - " 'the jezebels',\n", - " 'they kiss and tell',\n", - " 'kind of tricks',\n", - " 'i know too well',\n", - " 'rumors of love',\n", - " \"tell 'em that it's true\",\n", - " \"that it's really me and you\",\n", - " 'rumors, this love',\n", - " \"tell 'em that it's us\",\n", - " \"that it's really us in love\",\n", - " 'rumor, rumor, rumor, rumor',\n", - " 'rumors of love, baby',\n", - " \"tell 'em that it's true\",\n", - " \"it's really me and you\",\n", - " 'rumors, this love',\n", - " 'tell those jezebels',\n", - " 'that they can go to hell',\n", - " 'rumors of love, baby',\n", - " \"tell 'em that it's true\",\n", - " \"that it's really me and you\",\n", - " 'rumors, this love',\n", - " \"baby tell 'em that it's true\",\n", - " \"it's really me and you\",\n", - " 'rumors of love, baby',\n", - " \"tell 'em that it's true\",\n", - " \"that it's really me and you\",\n", - " 'rumors, this love',\n", - " \"tell 'em that it's true\",\n", - " \"that it's really me and you\",\n", - " 'rumor, rumor, rumor, rumor',\n", - " 'rumors of love',\n", - " \"tell 'em that it's true\",\n", - " \"it's really me and you\",\n", - " 'no more rumors, this love',\n", - " \"tell 'em that it's true\",\n", - " \"that it's really me and you\",\n", - " 'no more rumors',\n", - " 'rumors, rumors rumors rumors',\n", - " 'when you feel down and out',\n", - " \"sing a song (it'll make your day)\",\n", - " \"for you, here's the time to shout\",\n", - " \"sing a song (it'll make a way)\",\n", - " \"sometimes it's hard to care\",\n", - " \"sing a song (it'll make your day)\",\n", - " 'a smile is so hard to bear',\n", - " \"sing a song (it'll make a way)\",\n", - " 'sing a song',\n", - " 'sing a song',\n", - " 'sing a song',\n", - " 'sing a song',\n", - " 'well, bring your heart to believing',\n", - " \"sing a song (it'll make your day)\",\n", - " \"life ain't about no retrieving\",\n", - " \"oh yeah (it'll make a way)\",\n", - " 'give yourself what you need',\n", - " \"sing a song (it'll make your day)\",\n", - " 'smile, smile, smile and believe',\n", - " \"sing a song (it'll make a way)\",\n", - " 'sing a song',\n", - " 'sing a song',\n", - " 'sing a song',\n", - " 'sing a song',\n", - " 'sing a song',\n", - " 'sing a song',\n", - " 'sing a song',\n", - " 'sing a song',\n", - " 'if you sing a song a day',\n", - " 'you will make a better way',\n", - " 'yeah yeah yeah yeah',\n", - " 'yeah yeah yeah yeah, uh huh',\n", - " 'yeah, huh, this is t. carter',\n", - " \"yeah, c'mon, baby i got something to say\",\n", - " 'you know you give me pleasures',\n", - " \"that i know my heart just can't refuse\",\n", - " \"i mean, it's true--you look so damn cute\",\n", - " 'would you give me an attitude?',\n", - " \"but i'm talking through, especially when\",\n", - " 'the super-known ? was feeling loose',\n", - " 'we can fight our guest waves',\n", - " 'might as well take our crews',\n", - " 'because the ocean can come between us',\n", - " 'and what would you do if i was any yours?',\n", - " 'would you settle for the less, uh?',\n", - " \"i can garantee i'm nowhere rich boy\",\n", - " \"i'm a man, don't get me wrong\",\n", - " \"i'm not bragging about myself\",\n", - " \"it's just that i think we were wrong\",\n", - " \"and likewise, your body's like your (?)\",\n", - " 'touch me, girl (no, no)',\n", - " 'touch me, girl',\n", - " \"i don't want nobody else\",\n", - " 'to touch me like you',\n", - " 'touch me, girl',\n", - " 'touch me, girl',\n", - " 'touch me, girl',\n", - " 'and they call me trevy',\n", - " 'i love it when you touch me',\n", - " 'oh, shawdy, you a bad girl',\n", - " 'your fingers in my hands, making me shiver, shaking my world',\n", - " \"i'm tracing your lips across my neck and taking me down\",\n", - " \"i love that when i'm with you i can be myself\",\n", - " \"but i ain't never been this nervous, no\",\n", - " 'oh, you pull your hands, i swear you do this on purpose',\n", - " 'yeah, i kind of it like it',\n", - " \"ain't gotta rush it, we can take time\",\n", - " 'and if you give me yours, you can take mine',\n", - " 'you is an angel, but tonight just be my devil',\n", - " 'we can rule it out, would you take control if i let you?',\n", - " \"oh, i'm gonna lay you down on this bed\",\n", - " \"rose petals, your scent's the sweetest flowers\",\n", - " \"and i swear it's got me tripping\",\n", - " 'and let my hands slide up your thighs, kissing up your body',\n", - " \"that's the end of time, this room is getting hotter\",\n", - " \"your nails are in my back, i swear you're getting tighter\",\n", - " 'and we gonna hit the times',\n", - " \"but i can't get any higher unless you\",\n", - " 'touch me, girl',\n", - " 'touch me, girl',\n", - " \"i don't want nobody else\",\n", - " 'to touch me like you',\n", - " 'touch me, girl',\n", - " 'touch me, girl',\n", - " 'touch me, girl',\n", - " 'ride, baby, ride, baby, ride',\n", - " \"and i think it's time for that little devil\",\n", - " \"it's time to come out and play all night\",\n", - " \"and now on this day we're on cloud nine\",\n", - " \"but you don't have to be an angel all the time\",\n", - " 'so tonight (?)',\n", - " 'touch me, girl (just touch me, girl)',\n", - " 'touch me, girl',\n", - " \"i don't want nobody else (i don't want no)\",\n", - " 'to touch me like you',\n", - " 'touch me, girl (woo)',\n", - " \"touch me, girl (c'mon)\",\n", - " 'touch me, girl',\n", - " 'touch me, you',\n", - " 'you know you want to',\n", - " 'you know you want to, yeah',\n", - " 'touch, touch me',\n", - " 'yeah',\n", - " \"ain't really no other way to put it babe\",\n", - " \"ain't really no other way to put it babe\",\n", - " '(said you gotta) you gotta come and stay',\n", - " 'gotta come and stay baby',\n", - " 'said you gotta come and stay',\n", - " 'said you gotta come and stay (stay)',\n", - " \"ain't really no other way to put it baby\",\n", - " 'if you gotta come you gotta stay',\n", - " \"you ain't gotta stay for good babe\",\n", - " 'just stay a little late',\n", - " '(yeah yeah yeah)',\n", - " \"ain't really no other way to put it babe\",\n", - " \"ain't really no other way to put it babe\",\n", - " '(waa, waa)',\n", - " 'you gotta come and stay',\n", - " \"don't you know\",\n", - " \"don't you know\",\n", - " \"don't you know\",\n", - " \"it's the real thing, girl\",\n", - " \"they say it's popcorn love\",\n", - " \"but it's more than that to me\",\n", - " 'popcorn love',\n", - " 'just wait, they will see',\n", - " \"it's popcorn love\",\n", - " 'every morning, noon and night',\n", - " 'popcorn love',\n", - " \"don't you know, don't you know\",\n", - " \"it's the real thing, girl\",\n", - " 'when we go on those special dates',\n", - " \"we're always holding hands\",\n", - " \"we're never, ever late\",\n", - " \"you're on my mind all the time\",\n", - " '(i keep thinking)',\n", - " 'i keep thinking',\n", - " '(thinking)',\n", - " 'i keep thinking',\n", - " '(i keep thinking)',\n", - " 'thinking of you',\n", - " 'popcorn love',\n", - " \"but it's more than that to me\",\n", - " 'popcorn love',\n", - " 'just wait, they will see',\n", - " 'popcorn love',\n", - " 'every morning, noon and night',\n", - " 'popcorn love',\n", - " \"don't you know, don't you know\",\n", - " \"it's the real thing, girl\",\n", - " 'i go to school',\n", - " 'and then i come straight home',\n", - " 'the first thing that i do is call you on the phone',\n", - " 'the things you say',\n", - " 'a-really make my day',\n", - " 'i need you, girl',\n", - " 'in every kind of way',\n", - " 'i keep thinking',\n", - " \"i'm just thinking\",\n", - " 'i keep thinking (thinking)',\n", - " 'thinking (thinking)',\n", - " 'thinking (thinking)',\n", - " 'thinking',\n", - " \"that's right\",\n", - " \"that's right\",\n", - " \"that's right\",\n", - " \"that's right\",\n", - " 'ah!',\n", - " '\"p\" is for her personality',\n", - " 'i said the \"o\" is for originality',\n", - " 'and the other \"p\" is',\n", - " 'for the perfect love she gives to me',\n", - " 'the \"c\" is just \\'cause she loves me',\n", - " 'and the \"o\" means she\\'s the only love i got',\n", - " 'and the \"r\" and the \"n\"',\n", - " 'our love will never end',\n", - " 'well, i know',\n", - " \"i know it's the real thing\",\n", - " 'because she told me so',\n", - " 'and i know',\n", - " \"i know it's the real thing\",\n", - " \"and i'll never let her go\",\n", - " 'i just got to',\n", - " 'i just got to have your love',\n", - " 'popcorn love',\n", - " \"but it's more than that to me\",\n", - " 'popcorn love',\n", - " 'just wait, they will see',\n", - " \"it's popcorn love\",\n", - " 'every morning, noon and night',\n", - " 'popcorn love',\n", - " 'popcorn love',\n", - " \"but it's more than that to me\",\n", - " 'popcorn love',\n", - " 'just wait, they will see',\n", - " \"it's popcorn love\",\n", - " 'every morning, noon and night',\n", - " 'popcorn love',\n", - " 'popcorn love',\n", - " \"but it's more than that to me\",\n", - " 'popcorn love',\n", - " 'if i could',\n", - " \"i'd protect you from the sadness in your eyes\",\n", - " 'give you courage in a world of compromise',\n", - " 'yes, i would',\n", - " 'if i could',\n", - " \"i would teach you all the things i've never learned\",\n", - " \"and i'd help you cross the bridges that i've burned\",\n", - " 'yes, i would',\n", - " 'if i could',\n", - " 'i would try to shield your innocence from time',\n", - " \"but the part of life i gave you isn't mine\",\n", - " \"i've watched you grow, so i could let you go\",\n", - " 'if i could',\n", - " 'i would help you make it through the hungry years',\n", - " 'but i know that i could never dry your tears',\n", - " 'but i would if i could',\n", - " 'yes, if i live',\n", - " \"in a time and place where you don't wanna be\",\n", - " \"you don't have to walk along this road with me\",\n", - " \"my yesterday won't have to be your way\",\n", - " 'if i knew',\n", - " 'i would try to change the world i brought you to',\n", - " \"and there isn't very much that i could do\",\n", - " 'but i would if i could',\n", - " 'oh baby',\n", - " 'daddy wants to protect you',\n", - " 'and help my baby through the hungriest',\n", - " \"because you're part of me\",\n", - " 'and if you ever ever need',\n", - " 'said a shoulder to cry on',\n", - " 'or just someone to talk to',\n", - " \"i'll be there, i'll be there\",\n", - " \"i didn't change the world\",\n", - " 'but i would if i could',\n", - " 'oh darling, i love you, baby',\n", - " '(\"look...shout mikos da gawd, quick with the assist\")',\n", - " 'baby, please, baby, oh baby',\n", - " 'please don’t walk away',\n", - " 'what i gotta do, to make you stay?',\n", - " 'like, maybe, just maybe there’s something that i can say',\n", - " 'to make you stick around',\n", - " 'i’d love it if you stick around',\n", - " 'didn’t i treat you right, and love you good?',\n", - " 'didn’t i do what a good woman should?',\n", - " 'why you wanna step out, and leave me left out?',\n", - " 'but if you gotta go, i get it',\n", - " 'but if we start, might as well just finish',\n", - " 'can we talk it out?',\n", - " 'don’t say there’s nothing to talk about',\n", - " 'and it hurts, i know',\n", - " 'but baby, please don’t make it personal',\n", - " 'why you wanna go and do that, love, oh, hey',\n", - " '(why you wanna, why you wanna, why you wanna go?)',\n", - " 'said why you wanna go and do that, love, oh, hey',\n", - " '(why you wanna, why you wanna, why you wanna go?)',\n", - " 'you got wintertime cold on me',\n", - " 'i mean your heart just froze on me',\n", - " 'can you tell me how you really feel?',\n", - " 'at least tell me that you love me still',\n", - " 'we used to romance and hold hands and slow dance while the world spins',\n", - " 'now it’s just lowlands and no chance we’ll make it out this whirlwind',\n", - " 'see, i watched my world, and yours restart a hundred times',\n", - " 'and you’re left with the best of me, and i’m left with this heart of mine',\n", - " 'so baby, please, baby, oh baby, if you walk away',\n", - " 'let’s make me sure we leave with nothing else to say',\n", - " 'can we talk it out?',\n", - " 'don’t say there’s nothing to talk about',\n", - " 'and it hurts, i know',\n", - " 'but baby, please don’t make it personal',\n", - " 'why you wanna go and do that, love, oh, hey',\n", - " '(why you wanna, why you wanna, why you wanna go?)',\n", - " 'said why you wanna go and do that, love, oh, hey',\n", - " '(why you wanna, why you wanna, why you wanna go?)',\n", - " 'like a lonesome stream',\n", - " 'i keep running towards a dream',\n", - " 'and on trusty road',\n", - " 'getting weary from the load',\n", - " \"'cause they are wasting all their time\",\n", - " 'glorifying days behind',\n", - " \"'cause they've been wasting most their days\",\n", - " 'in rememberance of praise, again',\n", - " \"we're living in the past time,\",\n", - " \"we're living in the past\",\n", - " \"we're living in the past time,\",\n", - " \"we're living in the past\",\n", - " 'like the sand upon the shore',\n", - " \"like we've never dreamt before\",\n", - " \"'cause it's an evil sight to see\",\n", - " 'all the things that bring you grief',\n", - " \"we're living in the past time,\",\n", - " \"we're living in the past\",\n", - " \"we're living in the past time,\",\n", - " \"we're living in the past\",\n", - " \"we're living in the past time,\",\n", - " '(two fingers up)',\n", - " '(two fingers up)',\n", - " '(two fingers up)',\n", - " '(two fingers up)',\n", - " 'caught her eye in the corner store',\n", - " 'grab a rum bottle to split with the boys',\n", - " 'found out that her name was tina',\n", - " 'said i was the only man that could please her',\n", - " 'but every time that we were alone',\n", - " 'she hid the screen when she checked her phone',\n", - " 'thought our love was running deep',\n", - " 'but tina always kept me at her arms reach (two fingers)',\n", - " \"she ain't a fan of monogamy\",\n", - " 'she never said those words to me',\n", - " 'she had a man in every borough, oh',\n", - " 'and as soon as i discovered',\n", - " 'i was like, two fingers up to you',\n", - " \"i don't want to fuck with you\",\n", - " \"don't you even say my name\",\n", - " \"karma's killed your game\",\n", - " 'lost my trust',\n", - " 'so, two fingers up to you',\n", - " \"don't wanna hear a word outta you\",\n", - " \"don't you even say my name\",\n", - " \"love don't feel the same\",\n", - " 'never trust again',\n", - " 'met a girl called alice',\n", - " 'from the west end, she lives in a palace',\n", - " \"parents got money, but she couldn't care less\",\n", - " 'works 100 hours for the nhs',\n", - " 'we saw each other every now and then',\n", - " 'not quite lovers but more than friends',\n", - " \"she's got a bit of a crazy streak\",\n", - " \"she's ocd, ott neat, oh\",\n", - " 'she believes in monogamy',\n", - " \"it's been a week she ain't the only girl i see\",\n", - " 'she caught me lying by lying',\n", - " 'i was on my worst behaviour',\n", - " \"now she's like\",\n", - " 'two fingers up to you',\n", - " \"i don't want to fuck with you\",\n", - " \"don't you even say my name\",\n", - " \"karma's killed your game\",\n", - " 'lost my trust',\n", - " 'so, two fingers up to you',\n", - " \"don't wanna hear a word outta you\",\n", - " \"don't you even say my name\",\n", - " \"love don't feel the same\",\n", - " 'never trust again, again',\n", - " 'never trust again',\n", - " 'done with you my friend',\n", - " 'never trust again',\n", - " \"there ain't no morals to these stories\",\n", - " \"we're all just searching for somebody\",\n", - " \"and ya know it's hard\",\n", - " \"when you're living in the city\",\n", - " 'where nobody trusts nobody',\n", - " 'and i was like',\n", - " 'two fingers up to you',\n", - " \"i don't want to fuck with you\",\n", - " \"don't you even say my name\",\n", - " \"karma's killed your game\",\n", - " 'lost my trust',\n", - " 'so, two fingers up to you',\n", - " \"don't wanna hear a word outta you\",\n", - " \"don't you even say my name\",\n", - " \"love don't feel the same\",\n", - " 'never trust again, again',\n", - " 'never trust again',\n", - " 'done with you my friend',\n", - " 'and i was like',\n", - " 'two fingers up to you',\n", - " \"i don't want to fuck with you\",\n", - " \"don't you even say my name\",\n", - " \"love don't feel the same\",\n", - " 'never trust again',\n", - " 'rock on it like you a milly, yeah',\n", - " 'bounce on it like you from philly, yeah',\n", - " 'so dope how you cut it up, yeah',\n", - " \"servin' a fiend i can’t get enough\",\n", - " 'let that thang take me on a trip',\n", - " 'to every private place inside of it',\n", - " 'every private place i wanna fit',\n", - " 'inside the kinda places i won’t forget, yeah',\n", - " 'you got permission to do it',\n", - " 'you got permission to lose it',\n", - " 'if you really gon’ put me through it',\n", - " 'do it, oh no',\n", - " 'fuck it up',\n", - " 'fuck it up',\n", - " 'fuck it up',\n", - " 'fuck it up',\n", - " 'i need you to',\n", - " 'fuck it up',\n", - " 'fuck it up',\n", - " 'you can do it anyway your body wants you to do',\n", - " 'switch up on it like four seasons',\n", - " 'that thang get hot then it rain for no reason',\n", - " 'break all the rules like a convict, eah',\n", - " 'i got some tools you can start wit’',\n", - " 'some hard shit, oh ooh',\n", - " 'let that thang take me on a trip',\n", - " 'to every private place inside of it',\n", - " 'every private place i wanna fit',\n", - " 'inside the kinda places i won’t forget, yeah',\n", - " 'you got permission to do it',\n", - " 'you got permission to lose it',\n", - " 'if you really gon’ put me through it',\n", - " 'do it, oohhhhh',\n", - " 'fuck it up',\n", - " 'fuck it up',\n", - " 'fuck it up',\n", - " 'fuck it up',\n", - " 'i need you to',\n", - " 'fuck it up (yeah, yeah)',\n", - " 'fuck it up',\n", - " 'you can do it anyway your body wants you to do',\n", - " 'want it like you a killa',\n", - " 'black and white girl you a thrilla',\n", - " 'i promise too much ain’t enough',\n", - " 'i’ll need you to be a savage',\n", - " 'girl let me have it',\n", - " 'fuck it up',\n", - " 'fuck it up',\n", - " 'fuck it up',\n", - " 'fuck it up',\n", - " 'i need you to',\n", - " 'fuck it up',\n", - " 'fuck it up',\n", - " 'you can do it anyway your body wants you to do',\n", - " \"when i'm weary and so worn out\",\n", - " \"ooh, when my mind's clouded and filled with doubt\",\n", - " \"that's when i feel the most alive\",\n", - " 'masochistic kisses are how i thrive',\n", - " '(thrive, thrive, thrive, thrive, thrive, thrive, thrive)',\n", - " 'hmm (hmm)',\n", - " 'a stiffness inside my neck, and',\n", - " \"bangin' my head against the desk (woah)\",\n", - " \"if there's no pain, is there any progress?\",\n", - " \"that's when i feel, yeah, the most alive, woah\",\n", - " 'endurance is the source of my pride (source of my pride)',\n", - " 'might not be healthy for me, but seemingly i need (uh, hmm, hmm)',\n", - " 'what cuts me, cuts me, cuts me, cut me, cut me, cut me',\n", - " 'uh',\n", - " \"guess i'm a true immigrant son\",\n", - " 'no vacancies, no vacations',\n", - " 'sure, i could do better than this',\n", - " \"but i don't (i don't), i won't (i don't), i don't\",\n", - " \"no, i don't\",\n", - " 'uh, might not be healthy for me but seemingly i need (no, mm)',\n", - " 'uh, what cuts me, cuts me, cuts me, cut me, cut me, cut me',\n", - " 'ooh-ooh-oh',\n", - " '(might not be healthy for me but seemingly i need)',\n", - " 'ooh-ooh-oh',\n", - " '(what cuts me, cuts me, cuts me, cut me, cut me, cut me)',\n", - " 'hurt me, hurt me',\n", - " 'me',\n", - " 'hurt me, hurt me',\n", - " 'and your gaze still lasting on my brain',\n", - " 'sleeping in on venezuela trains',\n", - " \"i won't be the one to tell you\",\n", - " 'i can never find the perfect time to say that i',\n", - " \"won't be the one to tell you\",\n", - " \"i won't be the one\",\n", - " \"i won't be the one to tell you\",\n", - " 'i can never find the perfect line to say that',\n", - " 'i will be the one to fail you',\n", - " 'i will be the one',\n", - " 'mark my words, i hope you understand',\n", - " \"if i had my way you'd be my major plan\",\n", - " 'mark my words, i hope you understand',\n", - " \"if i had my way you'd be my major plan\",\n", - " 'tell me if your world is falling',\n", - " \"you will be the one i'm calling\",\n", - " 'tell me if your world is falling',\n", - " \"you will be the one i'm calling\",\n", - " 'you will be the, you will be the...',\n", - " \"...one i'm calling for\",\n", - " \"you will be the one i'm calling for\",\n", - " \"if you should unpack and never look back i'm on the train tracks, so...don't ever call back\",\n", - " \"you always call back when the sun's down and the night's black, you need to move back\",\n", - " \"you're on the train...tracks\",\n", - " \"tell me if the world is falling (i will never find the perfect time to say that i won't be the one to tell you)\",\n", - " \"you will be the one i'm calling\",\n", - " 'you will be the, you will be the (i will be the one)',\n", - " \"tell me if the world is falling (i will never find the perfect time to say that i won't be the one to tell you)\",\n", - " \"you will be the one i'm calling\",\n", - " 'you will be the, you will be the (i will be the one)',\n", - " 'i hope you will understand',\n", - " 'i hope you will understand',\n", - " 'i know this is a trying time',\n", - " 'you cried until your tears have run dry',\n", - " 'your tears have run dry',\n", - " 'so why not take mine',\n", - " \"running and you can't go on\",\n", - " \"pretending when you don't have your smile\",\n", - " \"you've lost your smile\",\n", - " 'so why not take mine',\n", - " 'woah',\n", - " 'take mine',\n", - " 'take mine',\n", - " \"i'll give you anything you need\",\n", - " \"you don't have to beg and plead\",\n", - " 'to take mine',\n", - " 'take some of mine',\n", - " \"i'll give you all you're asking me\",\n", - " 'take my eyes so you can see',\n", - " 'and i can listen to you honey',\n", - " 'and if you ask, i can give my advice',\n", - " 'take some of mine',\n", - " \"i'll shine my light\",\n", - " 'and in your darkest time',\n", - " 'take mine',\n", - " 'take mine',\n", - " \"i'll give you anything you need\",\n", - " \"you don't have to beg and plead\",\n", - " 'to take mine',\n", - " 'take some of mine',\n", - " 'when you find it hard to speak',\n", - " 'take my voice so you can sing',\n", - " 'take mine',\n", - " \"i've been down that road before\",\n", - " 'forgot what i was looking for',\n", - " 'all i really needed was to trust someone more',\n", - " \"you don't need to ask\",\n", - " 'just take mine',\n", - " 'anybody else',\n", - " 'just take mine, whoa',\n", - " 'all you really need is just someone to realize',\n", - " 'all you really need is just a , oh',\n", - " 'take mine',\n", - " 'take mine',\n", - " \"i'll give you anything you need\",\n", - " \"you don't have to beg and plead\",\n", - " 'to take mine',\n", - " 'take some of mine',\n", - " 'when you find it hard to speak',\n", - " 'take my voice so you can sing',\n", - " 'take mine',\n", - " ':',\n", - " 'ooh-ooh-ooh-ooh-oooh',\n", - " 'ooh-ooh-ooh-ooh-oooh',\n", - " ':',\n", - " \"there's a time for me to mention\",\n", - " \"there's a time for me to say\",\n", - " 'if you have the right intention',\n", - " 'we sure could find a way',\n", - " ':',\n", - " 'raiders in the valley',\n", - " 'raiders on the sea',\n", - " 'raiders on the open plains',\n", - " 'this sure could be the death',\n", - " ':',\n", - " 'i saw the reign fall',\n", - " 'and the war was won',\n", - " 'i saw the reign fall',\n", - " 'and the war was won, won, won, won, won',\n", - " ':',\n", - " \"there's a time for your surrender\",\n", - " \"there's a time to clear your head\",\n", - " 'from this day tomorrow',\n", - " \"the nights won't be the same\",\n", - " ':',\n", - " 'raiders in the mountains',\n", - " 'raiders on the sea',\n", - " \"raiders makin' all the claims\",\n", - " 'you heard the news today',\n", - " ':',\n", - " 'i saw the reign fall',\n", - " 'and the war was won',\n", - " 'i saw the reign fall',\n", - " 'and the war was won, won, won, won, won',\n", - " ':',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " ':',\n", - " 'can you make it out of love?',\n", - " 'can you make it out of love?',\n", - " 'can you make it out of love?',\n", - " 'can you make it out of love?',\n", - " ':',\n", - " 'i saw the reign fall',\n", - " 'and the war was won',\n", - " 'i saw the reign fall',\n", - " 'and the war was won',\n", - " '(can you make it out of love?)',\n", - " 'i saw the reign fall',\n", - " '(can you make it out of love?)',\n", - " 'and the war was won',\n", - " '(can you make it out of love?)',\n", - " 'i saw the reign fall',\n", - " '(can you make it out of love?)',\n", - " 'and the war was won, won, won, won, won',\n", - " '(can you make it out of love?)',\n", - " ':',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " 'i saw the reign',\n", - " 'we are nowhere',\n", - " 'sleepless and still and tight',\n", - " \"maybe we shouldn't fall asleep\",\n", - " 'saving what was left behind',\n", - " 'standing outside the chalk outline',\n", - " 'beside ourselves in time',\n", - " 'the only thing i want is the last thing i need',\n", - " 'awake and sleepless as stars shine',\n", - " 'sinking slowly in the tide',\n", - " 'silent strangers on the side',\n", - " 'lies are dripping off your face',\n", - " 'take me to a noble place',\n", - " \"and i'm not helping anymore\",\n", - " \"you don't know what you're looking for\",\n", - " 'i just know how weak you are',\n", - " \"you're gonna find another star\",\n", - " 'sinking slowly in the tide',\n", - " 'starlit strangers on the side',\n", - " 'lies are dripping off your face',\n", - " 'take me to a lower place',\n", - " 'sinking slowly in the tide',\n", - " 'silent strangers on the side',\n", - " 'lies are dripping off your face',\n", - " 'take me to a noble place',\n", - " \"i'm not helping anymore\",\n", - " \"you don't know what you're looking for\",\n", - " 'i just know how weak you are',\n", - " \"you're gonna find another star\",\n", - " 'in the end, we are nowhere',\n", - " 'sleepless and still and tight',\n", - " \"maybe we shouldn't fall asleep\",\n", - " 'saving what was left behind',\n", - " 'standing outside the chalk outline',\n", - " 'beside ourselves in time',\n", - " 'the only thing i want is the last thing i need',\n", - " 'awake and sleepless as stars shine',\n", - " 'you didn’t want it before',\n", - " 'so why are you here waiting?',\n", - " 'i don’t understand why you',\n", - " 'think i am contemplating',\n", - " 'on ways for you to love again',\n", - " 'everything that your missin’',\n", - " 'sayin’ a premonition’s',\n", - " 'got you a-changin’ your mind',\n", - " 'boy, stop your reminiscin’',\n", - " '‘cause i won’t play the fool again',\n", - " 'every day you’re gone',\n", - " 'every day i move on',\n", - " '‘cause it is plain to see',\n", - " 'that you weren’t meant for me',\n", - " '‘cause i…',\n", - " 'i ain’t got the time to lose',\n", - " 'on you',\n", - " 'on you, no',\n", - " 'i ain’t got the time to lose',\n", - " 'on you',\n", - " 'on you, no',\n", - " 'you didn’t need me before',\n", - " 'so why are you here begging?',\n", - " 'looks like you didn’t think of',\n", - " 'everything before letting',\n", - " 'me out of sight, ‘cause now you’re like',\n", - " '“can i come around?”',\n", - " 'say you’re missin’ the sound',\n", - " 'of my everyday',\n", - " 'you can stay away',\n", - " '‘cause i…',\n", - " 'i ain’t got the time to lose',\n", - " 'on you',\n", - " 'on you, no',\n", - " 'i ain’t got the time to lose',\n", - " 'on you',\n", - " 'on you, no',\n", - " 'i ain’t got the time to lose',\n", - " 'on you',\n", - " 'on you, no',\n", - " 'i ain’t got the time to lose',\n", - " 'on you',\n", - " 'on you, no',\n", - " 'no, no, no, no, no, no, no, no',\n", - " \"i ain't got the time to lose\",\n", - " 'on the likes of you',\n", - " 'you, you, you, you, you',\n", - " 'god sun',\n", - " 'shine your love and light on everyone',\n", - " 'god sun',\n", - " 'make this world a brighter place for all',\n", - " 'god sun',\n", - " 'send your warmth and brilliance to the world',\n", - " 'god sun',\n", - " 'touch every man and woman boy and girl',\n", - " 'you make possible the day’s dawning',\n", - " 'you bring life to every living thing',\n", - " 'you provide renewal in the spring',\n", - " 'i know who you are',\n", - " 'salute from afar',\n", - " 'without question you’re the star',\n", - " 'god sun',\n", - " 'rise and show your magnificent smile',\n", - " 'god sun',\n", - " 'bless the tender heart of every child',\n", - " 'god sun',\n", - " 'radiate your peace to all mankind',\n", - " 'god sun',\n", - " 'guide us through the darkness of our time',\n", - " 'you provide the earth enlightenment',\n", - " 'nourish us and keep our spirits fed',\n", - " 'you, i’ll never take for granted no',\n", - " 'i know who you are',\n", - " 'love you with all my heart',\n", - " 'without question you’re the star',\n", - " 'through loving you i seem to feel a spirit',\n", - " 'deep inside of me',\n", - " 'preciously guiding me',\n", - " 'my woman of all women, dear to me',\n", - " 'forever love me',\n", - " 'for i need you constantly',\n", - " 'and still, you hold me close indeed',\n", - " 'helping to keep this love i need',\n", - " 'feels so much like your touch divine',\n", - " 'drinking and getting high on wine',\n", - " 'wanting to love you, all the time',\n", - " 'just love to keep you in my mind',\n", - " 'just love to keep you in my mind',\n", - " 'your face is so mysteriously kind',\n", - " 'i bet that love is',\n", - " 'partial to your sign',\n", - " 'somehow i do believe that you are mine',\n", - " 'proving in a natural way',\n", - " 'things that i could never think to say',\n", - " 'and still, you hold me close indeed',\n", - " 'helping to keep this love i need',\n", - " 'feels so much like your touch divine',\n", - " 'drinking and getting high on wine',\n", - " 'wanting to love you all the time',\n", - " 'just love to keep you in my mind',\n", - " 'just love to keep you in my mind',\n", - " 'the magic that you secretly possess',\n", - " 'ooh, i must confess',\n", - " 'must be working at its best',\n", - " \"my love for you is one you'll always know\",\n", - " 'wherever we may go',\n", - " 'you will find that it is so',\n", - " 'and still, you hold me close indeed',\n", - " 'helping to keep this love i need',\n", - " 'feels so much, like your touch divine',\n", - " 'drinking and getting high on wine',\n", - " 'wanting to love you all the time',\n", - " 'just love to keep you in my mind',\n", - " 'i just love to keep you in my mind',\n", - " 'when we first met',\n", - " 'stole my heart away',\n", - " 'your love was incredible, wonderful',\n", - " 'then you began to change',\n", - " 'you used to make me feel special',\n", - " 'now all you do is make me cry',\n", - " 'i gave you my everything, baby',\n", - " 'but all you gave me was lies',\n", - " 'i, i',\n", - " 'try to be the one',\n", - " 'for baby',\n", - " 'you',\n", - " 'never was enough in',\n", - " 'what i do, do',\n", - " 'that’s why i’m leaving',\n", - " \"'cause it’s all about you\",\n", - " 'and not about me',\n", - " 'when we get in a fight',\n", - " 'i’m always the first to apologize',\n", - " 'even if it was you who did wrong',\n", - " 'i never do enough to please you',\n", - " 'that’s why i can’t go on',\n", - " 'no matter what i do for you',\n", - " 'it’s never any good for you',\n", - " 'you always got to complain',\n", - " 'that’s why i got to say',\n", - " 'i can’t stay',\n", - " 'i, i try to be the one for baby',\n", - " \"you, you never was into nothin'\",\n", - " 'what i do, do',\n", - " 'selfish baby',\n", - " 'anything you want',\n", - " 'i do',\n", - " 'i never understand',\n", - " 'how you could treat me bad',\n", - " 'and be so cruel',\n", - " 'you’re begging me to come back to you',\n", - " 'baby, i gave you all my love',\n", - " 'but what i had was not enough',\n", - " 'you turned around',\n", - " 'broke my trust',\n", - " 'got the nerve to ask me',\n", - " '\"what about us?\"',\n", - " 'i know a place',\n", - " \"where there ain't nobody cryin'\",\n", - " \"ain't nobody worried\",\n", - " \"ain't no smilin' faces lyin' to the races\",\n", - " 'help me, come on, come on',\n", - " 'somebody help me now',\n", - " \"(i'll take you there)\",\n", - " \"help me, y'all\",\n", - " \"(i'll take you there)\",\n", - " 'somebody, help me now',\n", - " \"(i'll take you there)\",\n", - " 'please, help me now',\n", - " \"(i'll take you there)\",\n", - " \"why don't you, why don't you\",\n", - " 'help me now',\n", - " \"(i'll take you there)\",\n", - " 'oh, oh',\n", - " 'mercy, oh yeah',\n", - " 'oh, oh, let me, let me take you there',\n", - " 'i know a place',\n", - " \"(i'll take you there)\",\n", - " \"where ain't nobody cryin'\",\n", - " \"(i'll take you there)\",\n", - " \"ain't nobody cryin'\",\n", - " \"(i'll take you there)\",\n", - " \"ain't no smilin' faces\",\n", - " \"(i'll take you there)\",\n", - " \"lyin' to the races\",\n", - " 'let me, come on',\n", - " \"(i'll take you there)\",\n", - " 'let me lead you there',\n", - " 'let me take you there',\n", - " \"(i'll take you there)\",\n", - " \"ain't no smilin' faces\",\n", - " \"(i'll take you there)\",\n", - " \"ain't nobody worried\",\n", - " \"(i'll take you there)\",\n", - " 'come on, come on, come on',\n", - " 'i will take you there',\n", - " \"(i'll take you there)\",\n", - " 'come on, come on, come on',\n", - " 'i will lead you there',\n", - " \"(i'll take you there)\",\n", - " \"ain't nobody worried\",\n", - " \"(i'll take you there)\",\n", - " \"i, i, i, i'll take you there\",\n", - " \"(i'll take you there)\",\n", - " 'let me, let me, let me',\n", - " 'let me lead you there',\n", - " 'we’ve been divided by an ocean',\n", - " 'had a hundred things in motion',\n", - " 'said you barely recognize me (clap)',\n", - " 'yeah, i’ve been gone for quite a while',\n", - " 'but can we just reconcile',\n", - " 'no, i never meant to leave you',\n", - " 'i was busy but i promise you the next time',\n", - " 'you won’t feel like i forgot about you (clap)',\n", - " 'i know it’s far but just remember',\n", - " 'i’ll be back home in november',\n", - " 'i won’t miss you ‘til i see the smoke',\n", - " 'call it blowback (clap), call it blowback',\n", - " 'call it blowback, call it blowback',\n", - " 'call it blowback (clap), call it blowback',\n", - " 'call it blowback, call it blowback',\n", - " 'ooh, it seems like a mighty long time',\n", - " 'shoo-bop, shoo-bop, my baby',\n", - " 'ooh, it seems like a mighty long time',\n", - " 'shoo-bop, shoo-bop, my baby',\n", - " 'ooh, it seems like a mighty long time',\n", - " 'shoo-bop, shoo-bop, my baby',\n", - " 'ooh, it seems like a mighty long time',\n", - " 'your mind would disagree, i could tell',\n", - " 'when you smile does it let you wish me well?',\n", - " 'bore a cyclone every time you exhale',\n", - " 'i cut off the ground and now i’m unbounded',\n", - " 'but miss you around it',\n", - " 'that’s why you should come and',\n", - " 'sit me all about the mountains',\n", - " 'you used to kiss me like your lips',\n", - " 'have caught fire, but no ties',\n", - " 'that smoke gets my eyes',\n", - " 'blowback (clap), call it blowback',\n", - " 'call it blowback, call it blowback',\n", - " 'call it blowback (clap), call it blowback',\n", - " 'call it blowback, call it blowback',\n", - " 'ooh, it seems like a mighty long time',\n", - " 'shoo-bop, shoo-bop, my baby',\n", - " 'ooh, it seems like a mighty long time',\n", - " 'shoo-bop, shoo-bop, my baby',\n", - " 'ooh, it seems like a mighty long time',\n", - " 'shoo-bop, shoo-bop, my baby',\n", - " 'ooh, it seems like a mighty long time',\n", - " 'shoo-bop, shoo-bop, my baby',\n", - " 'shoo-bop, shoo-bop',\n", - " 'hello stranger',\n", - " '(ooh) it seems so good to see you back again',\n", - " 'how long has it been?',\n", - " 'ooh, it seems like a mighty long time',\n", - " ...]},\n", - " 'rap': {'meta': {'train_data': ['get active',\n", - " 'if he really wants this, he can have this',\n", - " 'trapfit',\n", - " \"taking mans girl in my air force 1's boot man in my reebok classics\",\n", - " 'peng ting she called pamela',\n", - " \"she ain't moving like an amateur\",\n", - " \"she said i can't handle her\",\n", - " \"but i'm two rounds in, i've got stamina\",\n", - " 'tell a bitch bye',\n", - " 'swear down man i tell a bitch bye',\n", - " \"and i'm so sorry ms jackson\",\n", - " 'never meant to make your daughter cry',\n", - " 'but i swear, she was fucking up the grind',\n", - " \"trip done trap like i've got to get mine\",\n", - " \"trip done trap can't waste no time\",\n", - " \"man i can't waste no time\",\n", - " 'st she wants to know man',\n", - " 'my big boxers off and slow jams',\n", - " 'bill up a yardman spliff and go ham',\n", - " \"oh man, she's bopping the tip with no hands\",\n", - " 'peng ting she called pamela',\n", - " \"she ain't moving like an amateur\",\n", - " \"she said i can't handle her\",\n", - " \"but i'm two rounds in, i've got stamina\",\n", - " \"not gonna lie i don't know you\",\n", - " \"chilling with narsty but i'm not zone 2\",\n", - " \"don't be surprised when i go through\",\n", - " 'told you',\n", - " \"hardest my age i'm like cold yute\",\n", - " 'them man are rapping for bands',\n", - " \"i know that i'm hard but it's bants\",\n", - " \"she's talking about her and her man\",\n", - " \"oh damn when she's done, she's offing her pants\",\n", - " 'tell a bitch bye',\n", - " 'swear down man i tell a bitch bye',\n", - " \"and i'm so sorry ms jackson\",\n", - " 'never meant to make your daughter cry',\n", - " 'but i swear, she was fucking up the grind',\n", - " \"trip done trap like i've got to get mine\",\n", - " \"trip done trap can't waste no time\",\n", - " \"man i can't waste no time\",\n", - " 'like, get active',\n", - " 'if he really wants this, he can have this',\n", - " 'trapfit',\n", - " \"taking mans girl in my air force 1's boot man in my reebok classics\",\n", - " 'more time, skully just chat shit',\n", - " 'but if you try violate man get wacked',\n", - " 'roll round, tryna duck duck goose',\n", - " 'let me just quack this',\n", - " \"but i'm sick\",\n", - " \"i ain't riding out with no snitch\",\n", - " 'she done love the way that we fit',\n", - " \"marga yute but your girl can't hack this\",\n", - " \"(can't hack this)\",\n", - " 'like man do a madness',\n", - " \"man's been out, man's been out\",\n", - " \"man's been way too trapfit\",\n", - " 'tell a bitch bye',\n", - " 'swear down man i tell a bitch bye',\n", - " \"and i'm so sorry ms jackson\",\n", - " 'never meant to make your daughter cry',\n", - " 'but i swear, she was fucking up the grind',\n", - " \"trip done trap like i've got to get mine\",\n", - " \"trip done trap can't waste no time\",\n", - " \"man i can't waste no time\",\n", - " 'get active',\n", - " 'if he really wants this, he can have this',\n", - " 'trapfit',\n", - " \"taking mans girl in my air force 1's boot man in my reebok classics\",\n", - " 'peng ting she called pamela',\n", - " \"she ain't moving like an amateur\",\n", - " \"she said i can't handle her\",\n", - " \"but i'm two rounds in, i've got stamina\",\n", - " \"rolling in the city where i'm from\",\n", - " 'bitches love money, niggas love guns',\n", - " 'swear to god nothing doing down the sun',\n", - " \"suckers playing in the do and it's already been done\",\n", - " 'i got a el camino and the bitch run',\n", - " 'got it painted polo green',\n", - " 'got a hilfiger windbreaker on',\n", - " 'smelling like versace and weed, bitch please',\n", - " 'imma ride on these niggas til they gone',\n", - " 'cause i never let a sucker nigga breathe',\n", - " 'cause they twisting up the game on roam',\n", - " \"and this exactly what the set don't need\",\n", - " 'now check it, four lowriders front your house',\n", - " 'the engines is running but lights it out',\n", - " 'you already know what thats about',\n", - " 'got one foot in and one foot out',\n", - " \"ain't nothing but the lifer\",\n", - " \"ain't nothing but the lifer\",\n", - " \"ain't nothing but the lifer\",\n", - " \"blue '65 on a set of gold d's\",\n", - " 'nothing but the motherfucking lifer in me',\n", - " 'high as a motherfucker, still rolling weed',\n", - " \"ain't nothing but the motherfucking la, la, la\",\n", - " \"i'm worried bout the paper, fuck some hip hop\",\n", - " 'jumping out the slab in some flip flops',\n", - " \"ain't too many build the way we put together\",\n", - " 'frame solid, paint way wetter',\n", - " \"i'm thinking bout the days i used to need ride home\",\n", - " 'now the passenger a ten and she bopping off chrome',\n", - " 'living off some nigga playing ball in the league',\n", - " \"she gon' give me what i want and gon' leave without a knee\",\n", - " \"i'm running the streets like 20 on the lions\",\n", - " 'get my stats right and i think about retiring',\n", - " 'the way i play the game bet i see the hall of fame',\n", - " \"defenders can't see em only know his last name\",\n", - " 'from the back of my jersey, i blew pass',\n", - " \"all that trash i'll be hyping, fuck fashion\",\n", - " 'need to focus on your writing',\n", - " 'you clashing with the titans, play it wise lil nigga',\n", - " \"you see you ain't ready in your eyes lil nigga\",\n", - " \"ain't nothing but the lifer\",\n", - " 'nothing but the lifer',\n", - " \"ain't nothing but the lifer\",\n", - " 'nothing but the lifer',\n", - " 'in a pearl cadillac and the vogues stay clean',\n", - " 'nothing but the motherfucking lifer in me',\n", - " 'coming down slow, mix the sprite with the lean',\n", - " \"ain't nothing but the motherfucking\",\n", - " \"iceberg slim, pulling bitches on 'em\",\n", - " 'still cruise the city with my blinky on me',\n", - " \"on a money train, i'm on a mission homie\",\n", - " 'had a half a ounce and a half a ticket on me',\n", - " 'i miss curfew, my momma started bitching at me',\n", - " 'living in a hood where they was trigger happy',\n", - " 'riding in a classic bumping the classics',\n", - " 'fuck a bitch, i rather keep money under my mattress',\n", - " 'plan it out, draw it up and make it happen',\n", - " 'this young boy genius with his mathematics',\n", - " 'saw my uncle in a regal smoking on reefer',\n", - " 'saw a bad ass bitch in some white adidas',\n", - " \"stack bread, still ain't nothing different homie\",\n", - " 'this rap niggas divas, need i mention homie',\n", - " \"let that bullshit in the past, i'm on some major shit\",\n", - " 'my niggas in the pen call it checking in',\n", - " \"ain't nothing but the lifer\",\n", - " 'nothing but the lifer',\n", - " \"ain't nothing but the lifer\",\n", - " 'nothing but the lifer',\n", - " 'lil nigga, in wide body shit sitting mean',\n", - " \"ain't nothing but the motherfucker lifer in me\",\n", - " 'leather seats, 20 racks in my jeans',\n", - " \"ain't nothing but the motherfucker lifer in me\",\n", - " '{trina}',\n", - " 'da bitch is back',\n", - " 'i say the bitch is back',\n", - " 'yeah the bitch is back',\n", - " \"i got the keys i'm fen to drive come on let's ride\",\n", - " 'back seat phantom dark tents rolled down',\n", - " \"didn't want to see her look at me now\",\n", - " \"say she couldn't rap but i'm still here standing\",\n", - " 'da baddest bitch is what the fuck they yelling',\n", - " \"she's not real that one's fake\",\n", - " 'i step in the booth kill a track one take',\n", - " \"trina won't break i'm so heavy weight\",\n", - " \"look at the map, i'm from the gun shaped state\",\n", - " \"don't nann bitch want it, bitch tighten up\",\n", - " 'only bitch with a deal slip n slide what',\n", - " 'swam across the atlantic, back stroked back',\n", - " \"just mark my words i'm a take that back\",\n", - " 'gon burn these charts stack every lock',\n", - " 'gon grace every cover dis bitch here hot',\n", - " 'to give you all a lesson',\n", - " 'let me put it on the dresser',\n", - " 'where i put my damn shoes i will not lose',\n", - " '(hook)',\n", - " \"ya'll gon learn to respect the queen yesterday it was all a dream\",\n", - " \"ya'll gon learn to respect the queen, yesterday it was all a dream\",\n", - " \"i'm still da baddest bitch (ah)\",\n", - " \"i'm still da baddest bitch (ah)\",\n", - " \"ain't another i'm da baddest bitch (ah)\",\n", - " \"damn right i'm da baddest bitch (ah)\",\n", - " \"it was all a dream, thinking she'll be gone like that\",\n", - " \"wake up this ain't a dream your worst nightmares back\",\n", - " \"b. a. d. bitch i'm bad to the bone\",\n", - " 'home wrecker number 1 and queen of ringtones',\n", - " 'now observer the persona, fuck the feedback',\n", - " \"i'm equavalent to none you punks is lab rats\",\n", - " 'experimentin myspace searching for a hit',\n", - " 'i bet ya price gon double with they drop dis shit',\n", - " 'skybox pimping break through all door',\n", - " \"i'm hurricane katrina, when it rains it pours\",\n", - " 'taking no paycheck watin over bitches, niggas can get it too',\n", - " \"cause i ain't nowhere through\",\n", - " \"hood that'show you want it, hood cuz i'mma give it\",\n", - " 'since i heard a motherfucker say the sky is the limit',\n", - " \"yeah i know you want, yeah cuz i'mma give it\",\n", - " 'since i heard a motherfucker say that sky is the limit',\n", - " \"i'm out\",\n", - " '(hook)',\n", - " 'yep',\n", - " \"it's da baddest bitch. (giggles)\",\n", - " 'i know bitches they hatin',\n", - " 'let me find out',\n", - " '(hook) fade out',\n", - " 'bullet holes through the pillowcase, you slept to death',\n", - " 'bullet holes through the pillowcase, you slept to death',\n", - " 'we up, we jets, stay baked and fresh, look at how i step',\n", - " \"out these air max blending with my sweats, live like '95\",\n", - " 'tv in the pathfinder, watch new jersey drive',\n", - " 'thinking about a heist, thinking about my life, getting high',\n", - " \"this shit nice, i can't lie, but it came from a grind\",\n", - " \"this wasn't overnight, this was over an extended period of time\",\n", - " 'they tried to throw me in the box, cover it with rocks',\n", - " \"i expanded on my house, purchased some mo' drops\",\n", - " 'legal hustle, andretti og the cash crop',\n", - " 'throat the smoke in the spot, come and see us, we out',\n", - " 'i need you to spot, low rider no top, three wheel up the block',\n", - " 'throw up a jet life, a peace sign and then an east side',\n", - " 'stare in the mirror, turn the lights off and say me name three times',\n", - " 'and i appear through the smoke: andretti, andretti, andretti and a nissan',\n", - " 'skyline, we often missed the child crazy high',\n", - " 'me and statik got them coupes in traffic',\n", - " \"them bitches looking at us but we duck 'em if they goofy acting\",\n", - " \"baby i'm a hundred, everywhere your dude be lacking\",\n", - " 'any time you see me, you witnessing magic happen',\n", - " 'sycamore died, my wallet still perfectly matching my phantom',\n", - " 'yeah, ayy',\n", - " 'bullet holes through the pillowcase, you slept to death',\n", - " 'rookie of the year still be moving with the vets',\n", - " 'stizzy from the bottom, how we out there with the jets',\n", - " \"cause he don't be impressed, he was always thinking next\",\n", - " 'low riders, that spitta style i need more exotic',\n", - " 'you make foes when you hold profit',\n", - " 'you make business and you make millions',\n", - " 'you lose money when you chase women',\n", - " \"and i ain't tripping long as fam eat like thanksgiving\",\n", - " \"ain't willing to let up the motor\",\n", - " \"my moms said it'll move slower but that ain't gon' hold us over\",\n", - " \"your bitch fell in love cause the ice i'm rocking polar\",\n", - " \"she know where i'm from, ain't no way i'm getting colder\",\n", - " 'keep the car running, homie if you pulled us over',\n", - " 'i lost my brother that way, a lesson from the corner',\n", - " 'one minute you here, the next day you a goner',\n", - " \"so i'ma sing your favorite song whenever i ain't sober\",\n", - " 'real life',\n", - " 'my girlfriend hates you but i love your stuff',\n", - " \"i listen to it all the time, i can't get enough\",\n", - " 'i dig your first cd (your debut)',\n", - " 'and \"society of people named elihu.\"',\n", - " 'and \"making love\" is fresh, this much is true',\n", - " 'but \"redefining music\" is funky and new',\n", - " 'and so i crank it up, turn it up, and pump up the bass',\n", - " \"the package's synth lines are up in my face\",\n", - " 'i listen to it when i drive any place',\n", - " \"up yours to anyone who says i've got bad taste!\",\n", - " \"atom's music rocks, with nerdy soul\",\n", - " 'his new-wave-synth-punk is never dull',\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " 'i had a dream when i was in grade school',\n", - " 'that rob halford, he kissed me, see fool',\n", - " 'and i was welcomed to the family with connor',\n", - " 'it was undercover funny just like a longer',\n", - " 'keyboard that enya played',\n", - " 'so i pumped iron and i got paid',\n", - " 'when i owned the redskins with the ghetto boys',\n", - " 'breaking down the walls with kilogram toys',\n", - " 'and we sang to madonna, all night long',\n", - " 'i opened up my heart, i opened it strong',\n", - " \"to tim allen (who's not that funny)\",\n", - " 'in philadelphia where i made lots of money',\n", - " 'as a goalie, sixteen-hundred pounds',\n", - " 'chilling on the ice rink so profound',\n", - " 'upside down from here on the map',\n", - " 'sick of people who give me crap',\n", - " 'so i put them on an island in the middle of the sea',\n", - " 'and it was just atom, atom and me',\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome. (atom, you're awesome.)\",\n", - " \"atom, you're awesome\",\n", - " \"atom, you're awesome. (atom, you're awesome.)\",\n", - " \"atom, you're awesome\",\n", - " 'going out nigga',\n", - " 'big guns and sharp knifes',\n", - " \"revolvers cause automatics jam at the wrong time(i'm going out)\",\n", - " 'like fights with the brass knuckles',\n", - " \"swinging belts catching niggas with the buckle now fuck it(i'm going out)\",\n", - " \"like i ain't got nothing to live\",\n", - " 'like as if u had guns to my kids fuck it (going all out)',\n", - " 'yo you know the type that style and shit that rise my dick',\n", - " 'pop me a nigga quicker than police',\n", - " 'leave more wombs than a whole room full of chicks',\n", - " \"you running while i'm gunning cause you a bitch\",\n", - " 'i heard niggas talking like they going to dead mines',\n", - " 'i got enough guns we can make the headlines',\n", - " \"i'm from a place where the realeast niggas get murdered\",\n", - " 'and the illest niggas try to avoid it',\n", - " \"but can't call it\",\n", - " \"it's a cold world bundle up\",\n", - " 'keep your heat on at all times',\n", - " 'and never freeze up',\n", - " 'and your eyes blink you could catch a hole in your tank',\n", - " 'have you leaking all over the place',\n", - " 'watch how you speak',\n", - " 'and watch how you move through the streets',\n", - " 'i got a mob with niggas with heat',\n", - " \"we liable to squeeze 'fore we think\",\n", - " \"breath 'fore is too late\",\n", - " 'uph you fucked up and got laid to sleep',\n", - " \"(i'm going out)\",\n", - " 'with big guns and sharp knifes',\n", - " \"revolvers cause automatics jam at the wrong time(i'm going out)\",\n", - " 'like fights with the brass knuckles',\n", - " \"swinging belts catching niggas with the buckle now fuck it(i'm going out)\",\n", - " \"like i ain't got nothing to live\",\n", - " 'like as if you had guns at my kids fuck it (going all out)',\n", - " 'for the big checks and large faces mansions',\n", - " 'and my duns would do the same for me',\n", - " \"i'm going out like a nigga that ain't never have nothing\",\n", - " \"fuck it i ain't frontin'\",\n", - " 'if i want to know i got to go out like a navy seal',\n", - " 'label me ill you sling thrills',\n", - " 'meet you on top of the hills screaming dollar bill',\n", - " 'going out like a nigga you just smacked',\n", - " 'his moms in the cut plotting patient and calm',\n", - " 'putting on everything that i love and stand for',\n", - " \"getting bent up in the pub 'till five in the morn\",\n", - " 'going out like a nigga with six days to live',\n", - " \"and like a single parents raising a kid now that's a bid\",\n", - " 'going out like a nigga with shit touching his rib',\n", - " 'you got more than nesessary dun a nigga went dead',\n", - " 'going out for my niggas see this gat in my hand',\n", - " \"you better back the fuck up what part didn't you understand\",\n", - " 'have a nine aimed straight at your thyroid glands',\n", - " \"must've not been really your men them niggas that ran (i'm going out)\",\n", - " 'we do it well, clip niggas like nails',\n", - " 'catch cases, skip bails',\n", - " 'i lie before i ti-dell, die in a ci-del',\n", - " \"pop guns with the shi-dell, fuck a bitch 'til she yi-zell\",\n", - " 'rap style smoother than c.l., in the k on the dl',\n", - " 'line for line you can detail, choked more niggas than sprewell',\n", - " 'rap style p.l.o., watch me blow, like tornadoes',\n", - " 'clear the block out with just an echo',\n", - " \"trust me, niggas don't want me see let go\",\n", - " \"niggas don't want to see the tech blow\",\n", - " 'watch me move the crowd like techno music, nigga',\n", - " 'when it come to murder, you know we do it for the cause',\n", - " \"fuck relyin' on the law, ain't worth dyin' for\",\n", - " 'i rather die fucking raw',\n", - " \"or walkin' on a mine in the cold war\",\n", - " 'my dogs got my shoulders, fatigued up machine guns',\n", - " 'all my niggas soldiers',\n", - " 'with big grenades, throw them in your rover',\n", - " \"send prodigy to check the scene when it's over\",\n", - " \"niggas animals comin' back for leftovers (all out nigga)\",\n", - " \"i'm going out\",\n", - " \"i'm going out\",\n", - " \"i'm going out\",\n", - " \"it's your boy lil b, you feel me\",\n", - " 'shouts out to all the girls, yeah',\n", - " \"girl when i want you, ain't nothing that i won't do\",\n", - " 'met a fine girl on the westside',\n", - " \"everybody know i'm from the westside\",\n", - " \"she said i got a lot game, i'm from the best side\",\n", - " \"bitch, i told you i'm from the westside\",\n", - " 'keep all my hoes on a thin line',\n", - " 'everybody know about the thin line (figaro!)',\n", - " 'everybody know about the westside',\n", - " \"so why the fuck you ask me what's the best side?\",\n", - " 'smash all my girls on the front seat',\n", - " \"domestic violence case don't want me\",\n", - " 'if you got money, put it on me',\n", - " \"i'm stacking up cases and trophies\",\n", - " 'you already know fuck the *censored*',\n", - " 'i said they not your homie',\n", - " 'i said money, put it on me',\n", - " 'lil b',\n", - " 'a girl that i love started hoeing',\n", - " \"now i'm thinking where my life going\",\n", - " 'every girl wanna fuck me is hoeing',\n", - " 'i never been a pimp, bitch you know this',\n", - " 'so why every girl start hoeing',\n", - " 'wanna come around me with that ho shit',\n", - " 'asking me for my money and golden',\n", - " \"lucky that my nose ain't open\",\n", - " \"bitches choosing up, that's ho shit\",\n", - " \"i need a real girl that's focused\",\n", - " \"bitch thinks i'm a pimp for how i look\",\n", - " 'stupid ass bitch, get that pussy took',\n", - " 'thirsty ass bitch tryna get a look',\n", - " 'fuck a hundred dudes then she write a book',\n", - " \"now you know that ain't cool\",\n", - " 'wonder why niggas beat up these hoes',\n", - " 'feel me',\n", - " 'hey man, these hoes tryna have fucking kids and never break up',\n", - " \"you feel me, i can't respect that\",\n", - " \"it's lil boss\",\n", - " \"minneapolis today, with it's charred remnants of last night's\",\n", - " 'rioting, the fury evident at every corner. overnight, demonstrators',\n", - " 'have rampaged. the violence, the anger, and the flames, at times',\n", - " 'well out of control, continued until dawn-',\n", - " 'police officers handcuffed demonstrators seeking answers and',\n", - " 'justice at every corner. as the frustration continued, the officers',\n", - " 'involved have all been violent, excruciating violence',\n", - " 'the anger- flames- the anger, flames-',\n", - " 'minnesota nice was a myth',\n", - " 'we stock bombs, got arms along with the rest',\n", - " \"shelter pawn killer cops who'll ponder arrest\",\n", - " 'sentences lesser when under duress',\n", - " 'that lunatic in blue, gets a crush and then he says',\n", - " '\"this ticket\\'s for you, miss, for that \\'fine\\'-ass dress',\n", - " \"won't ask for your phone cuz i'll find your address\",\n", - " 'i\\'ll look it up, so hook me up, if only as a friend,\" look',\n", - " \"troll soldier's toll, parkin' bold on the sidewalk\",\n", - " \"argument is old, it rolls with seein' eye dogs\",\n", - " \"armor cars clickin' jaws tonight near the skywalk\",\n", - " \"law shippin' bars like the lockup was a dry dock\",\n", - " \"by god, this entire town's on fire\",\n", - " \"housekeepers freakin' out 'bout the wrong virus\",\n", - " 'loudspeakers drown out the eight minute silence',\n", - " \"sound sleepers wakin', mouth around the dick of tyrants\",\n", - " \"rollin' down lindau, got no shotgun\",\n", - " 'people yellin\\' \"fuck the cops\"',\n", - " \"the cue cards got the new guard sayin'\",\n", - " \"rollin' down lindau, got no shotgun\",\n", - " 'people yellin\\' \"fuck the cops\"',\n", - " 'they\\'re callin\\' that \"a riot\"',\n", - " \"- showed some of the last few minutes of george floyd's life\",\n", - " 'stopped on suspicion on passing counterfeit money',\n", - " 'what seems a straightforward arrest, somehow devolves into this-',\n", - " \"support hong kong? 'course ya do\",\n", - " \"in your back yard now, who's confused 'bout the bad guys?\",\n", - " \"kids with plastic or pigs givin' glass eyes?\",\n", - " \"handpickin' innocents, kick 'em into van sides\",\n", - " 'fantasize a little more, want some more warcraft?',\n", - " '\"real fuckin\\' war\\'s been crafted for that poor ass\"',\n", - " 'backhanded tactics, candid theatrics',\n", - " \"lettin' looters loot, usin' news as a tactic\",\n", - " '\"so what?\", that\\'s it, suck that little titty',\n", - " \"what's happened in this city's bein' backed in a committee\",\n", - " \"that'll grab at power, lynch these witty little literates\",\n", - " 'lab an ad, shift their meaning, feed on your indifference',\n", - " 'and filter it and nurture it, turn on one another',\n", - " \"confederates are back, but they're mackin' undercover\",\n", - " \"they're killing blacks, fact, and it matters that they're colored\",\n", - " 'or else it\\'s just stats and another \"massive number\"',\n", - " \"rollin' down lindau, got no shotgun\",\n", - " 'people yellin\\' \"fuck the cops\"',\n", - " \"the cue cards got the new guard sayin'\",\n", - " \"rollin' down lindau, got no shotgun\",\n", - " 'people yellin\\' \"fuck the cops\"',\n", - " 'they\\'re callin\\' that \"a riot\"...',\n", - " 'to make sure that his death will not be in vain...',\n", - " \"to make sure that he is more than another face on a t-shirt, more than another name on a list that won't stop growing...\",\n", - " 'he was mild-mannered, he didn\\'t fight back. the man who took his life, who suffocated him for 8 minutes and 46 seconds... he still called him \"sir\" as he begged for his life',\n", - " \"i can't tell you the kind of pain you feel when you watch something like that...\",\n", - " 'the pain you feel when you watch something like that. when you watch your big brother, who you looked up to your whole life, die, die begging for his mom?',\n", - " 'people of all backgrounds, genders and races, have come together to demand change',\n", - " \"the people marchin' in the street are telling you enough is enough\",\n", - " 'enough is enough',\n", - " \"jungle rule - can't be no fool\",\n", - " \"jungle rule - can't be no fool\",\n", - " '(i needed a little taste to that)',\n", - " 'twisting joints like a contortionist',\n", - " 'laid in the porsche',\n", - " 'my father driving',\n", - " 'days been sunny since i started rhyming',\n", - " \"no denying me; i'm known to keep a fresh foot like podiatry\",\n", - " 'nobody high as me',\n", - " \"green timbs, in vegas i'm like steve wynn\",\n", - " 'at the same time, fellatio from three twins',\n", - " \"those are triplets; i've been wilding since the rabbi snipped it\",\n", - " 'then they laughed, and ate brisket, fuck!',\n", - " 'on my behalf, he had a meeting at the neptune',\n", - " 'had little daddy hide the heater in the restroom',\n", - " 'guns drawn like my bath by my lady friend',\n", - " 'mesothelioma money: drop mercedes-benz',\n", - " \"and i ain't never left, you know i'm still here\",\n", - " 'spit the shit to bring a cripple out the wheelchair',\n", - " 'bite a bitch like george whipple in the stair case',\n", - " 'long as she got big nipples and a tan face',\n", - " \"jungle rule - can't be no fool\",\n", - " \"(yeah, you're in the concrete right now)\",\n", - " 'devil is on the loose, no coop',\n", - " 'foul living like sandusky and paterno',\n", - " \"i've been husky, motherfuckers couldn't touch me\",\n", - " \"'lo rugby with an asian model so ugly\",\n", - " 'celebration 1987, no bubbly',\n", - " \"facially, i'm like a young john kennedy\",\n", - " 'more obscenity; ebt in genovese',\n", - " 'go to ock, get 70 for 100',\n", - " 'i want the 75 from ocky but he fronted',\n", - " 'take the money, cop 5 dimes, 2 chicken sandwiches, 9 limes',\n", - " 'for the canada dry; pose for the cameras by the banister, \"hi\"',\n", - " 'in the summer, rock the vest set – salmon kani',\n", - " \"flex the three-quarter cream fi's\",\n", - " 'we some esteemed gs; steamed red snapper – vietnamese',\n", - " 'catch a case, get a jewish lawyer, beat it with cheese',\n", - " \"fuck the beef cause it don't go together, read em and weep\",\n", - " \"it's very easy, make you disappear now, kid\",\n", - " 'make your paper, but you need to stay grounded',\n", - " 'eyes wide like a chick that got the dick in the butt',\n", - " \"we're out here, trying to get the money, baby, live it up\",\n", - " 'talk about me if you please, but i must be hercules',\n", - " 'hercules',\n", - " 'i must be hercules!',\n", - " 'zan with that lean',\n", - " 'nuthin but irene',\n", - " \"hoes going crazy when i'm on the scene\",\n", - " 'souljaaaaa',\n", - " \"i'm in my zan with the lean\",\n", - " 'nuthin but irene',\n", - " \"them hoes going crazy when i'm on the scene\",\n", - " 'racks still on waist, busting out them jeans',\n", - " \"i keep the hammer on me, i ain't worried bout a thing\",\n", - " 'i got all these bandz on me, all this ice on me, all these racks on me',\n", - " 'everything on me',\n", - " 'zan with that lean',\n", - " 'nuthin but irene',\n", - " \"hoes going crazy when i'm on the scene\",\n", - " 'gotta go to the mall',\n", - " 'i gotta throw a band',\n", - " \"fall off in the club, and i'm leaning like kick stand\",\n", - " 'soulja boy my name',\n", - " 'bitch you know the gang',\n", - " 'sod money gang put that shit straight to your face',\n", - " 'boy i got them racks',\n", - " 'boy i got them tats',\n", - " 'album just went platinum, so i got them plaques',\n", - " 'lambo jet black',\n", - " 'bentley fire flame',\n", - " 'soulja boy in the club',\n", - " 'bitch you know my name',\n", - " 'every where i go',\n", - " \"bitch i'm bout to blow\",\n", - " 'ounce of that dro',\n", - " 'smoke it up on low',\n", - " 'every where i go',\n", - " 'they takin pictures',\n", - " 'oh my god dawg, i got purp in that swisher',\n", - " 'stupid bandz on me',\n", - " 'stupid racks on me',\n", - " \"ridin down i-20, i'm lookin for some freaks\",\n", - " 'lil tony on the beat',\n", - " \"can't forget the camp\",\n", - " 'everywhere we go dawg, they knowin who we at',\n", - " 'they knowin who we are',\n", - " 'bottles in the car',\n", - " \"all i am is super star, i'm smokin a cigar\",\n", - " 'everywhere i go dawg, my lambo is swerving',\n", - " 'girls say i look good, i look better in person',\n", - " 'swervin out the lane, smokin up the lane',\n", - " 'standin on that couch, in the club makin it rain',\n", - " \"soulja boy go hard, bitch i'll pull your card\",\n", - " \"niggas dissin sod, but really ain't got heart\",\n", - " '(you must be crazy)',\n", - " \"one day, let's just say that i was bored\",\n", - " 'i went for a ride in my new accord',\n", - " \"sucker mc's were standin outside\",\n", - " 'talkin bout, \"yo ed, let me get a ride\"',\n", - " 'i said, \"you\\'re already ridin on mine\"',\n", - " 'he raised his tone, and out came the chrome from behind',\n", - " '(better back up, nigga) \"now continue with yourself',\n", - " \"and don't step any further, cause it's bad for your health\",\n", - " 'and your wealth and your future',\n", - " 'cause i don\\'t wanna have to shoot ya\" - (booya!)',\n", - " 'and then i went into the store',\n", - " \"i wanted some chips, it's a dollar for 4\",\n", - " 'i gotta get some juice and a loosey',\n", - " \"i used to smoke, now it's only 1 or 2, see?\",\n", - " \"i'm not a bad guy, but i got bad habits\",\n", - " 'i was raised in the place where they grab it',\n", - " \"if they want it (brooklyn) but i'm not a thief\",\n", - " \"plus i'm not a punk, so don't pop junk or beef\",\n", - " 'what?',\n", - " 'you must be crazy',\n", - " '(you must be crazy)',\n", - " 'i pay for the goods and i make my exit',\n", - " 'i walked out the door, and i saw some legs, it',\n", - " 'looked like cheese that i knew',\n", - " ']from around the way or maybe from my brother drew',\n", - " \"it can't be the rest, because the others are older\",\n", - " 'looked like a nice slice, tapped her on the shoulder',\n", - " '(excuse me) she turned around, started to stare',\n", - " 'grabbed at my hat, said, \"let me see your hair!\"',\n", - " 'i said, \"there won\\'t be none of that, at least not here\"',\n", - " 'she said, \"my man is always snoring, and he\\'s boring\"',\n", - " 'i said, \"so what? you\\'re out here whoring?',\n", - " \"what you think you're doing?\",\n", - " \"i ain't tryin to ruin no relationship\",\n", - " 'honey dip, get a grip\"',\n", - " \"cause that's the kinda fan i can't stand\",\n", - " 'when she wanna get wreck and still got a man',\n", - " 'so if you got a girl, you better watch her',\n", - " 'because love is blind (got that ass) gotcha',\n", - " \"(think i'm crazy)\",\n", - " '(you must be crazy)',\n", - " \"well now, i got around the way and i just couldn't wait\",\n", - " '(why?) today mom said that she was cookin peppered steak',\n", - " 'i parked the ride, and as i stride down the ave',\n", - " 'i said, \"oh my, what big thighs you have\"',\n", - " 'to a slice of cheese and cut-off shorts',\n", - " 'she said, \"ain\\'t you special ed?,\" i said, \"but of course',\n", - " \"but that's not the matter at hand\",\n", - " 'do you have a man? do you understand?',\n", - " \"what i'm tryin to say is, well, ??? i'm a little shy\",\n", - " 'she said, \"why, you\\'re an attractive guy',\n", - " 'plus i seen your videos, all four of them',\n", - " 'can i be in one of them if you have more of them?\"',\n", - " 'i said, \"yes, there\\'s one next week',\n", - " 'come to the crib so we can speak\"',\n", - " 'she came over 3 days later',\n", - " 'and i laid her',\n", - " '(you must be crazy)',\n", - " \"in my city, that's where god belongs\",\n", - " 'in my city, cause he run it anyway, he run it',\n", - " 'look, psalms 14 uno, you know',\n", - " \"he says in his heart god don't exist, fool though\",\n", - " 'who created the stars? planets like ours?',\n", - " 'pluto and mars?',\n", - " 'you need the proof, though?',\n", - " 'the truth is so in the art',\n", - " 'this the living god that i serve',\n", - " 'made everything in a minute with a single word',\n", - " 'he be taking care of the bees and even the birds',\n", - " 'cause the truth is taking care of the people who are in the word',\n", - " \"don't you see our sin brought a curse?\",\n", - " 'christ redeemed us, now i know my prayers work since we believe he interceded',\n", - " 'we are soldiers, an army, our sergeant is he',\n", - " 'our weapons are not carnal, yo, we start on our knees',\n", - " \"we are a movement of the young, on fire and we zealous for the honor of our father that's in heaven\",\n", - " 'bring him',\n", - " 'in my city',\n", - " \"that's where god belongs\",\n", - " 'in my city, cause he run it anyway, he run it',\n", - " \"in my city, that's where god belongs\",\n", - " 'in my city, cause he run it anyway, he run it',\n", - " \"god, i'm so unashamed\",\n", - " 'this world thinks we insane',\n", - " \"cause we be living like in this life it's about christ and to die is gain\",\n", - " \"we denying the fame, don't retire we aim\",\n", - " \"'til our last breath to go and confess the messiah's name\",\n", - " 'so thy kingdom come, will be done',\n", - " \"in our city until 'til we see him in the holy one\",\n", - " '(new york, new york)',\n", - " \"that's where the homie from, but i know i can't be the only one\",\n", - " 'any believers in here? show me some',\n", - " 'get your hands up for the holy son',\n", - " 'fought death beat it, now you know we can defeat it',\n", - " 'go and read it, man, we already know we won',\n", - " \"there's power when your people\",\n", - " 'will gather just to come seek ya',\n", - " 'then ask for your forgiveness, admitting we truly need ya',\n", - " 'taking the gospel to the ends of the earth',\n", - " 'searching for hearts, but first i think we going start right',\n", - " 'in my city',\n", - " \"that's where god belongs\",\n", - " 'in my city, cause he run it anyway, he run it',\n", - " \"in my city, that's where god belongs\",\n", - " 'in my city, cause he run it anyway, he run it',\n", - " 'so father teach us how to pray, not just ramble off with a wishlist',\n", - " 'make us still and listen',\n", - " 'give us holy ambitions',\n", - " \"we're called and commissioned\",\n", - " \"your work here isn't finished\",\n", - " \"while we're living then we'll never ever fit in, misfits\",\n", - " 'blessing those who hate us',\n", - " 'praise you in our affliction',\n", - " 'the way the see us love one another is our distinction',\n", - " 'they take you off our dollars and out the pledge of allegiance',\n", - " \"but they'll never take praise out the mouth of believers\",\n", - " 'in my city',\n", - " \"that's where god belongs\",\n", - " 'in my city, cause he run it anyway, he run it',\n", - " \"in my city, that's where god belongs\",\n", - " 'in my city, cause he run it anyway, he run it',\n", - " 'in my city.. he run it, he he he run it, he run it, he he he run it',\n", - " 'in my city.. he run it, he he he run it, yeah',\n", - " '(here, in new york city, we will not be silent) in my city..',\n", - " '(the capital of the world, we are the light of this world) in my city...',\n", - " 'he run it, he he he run it, yeah, he run it',\n", - " 'cause he run it anyway, he run it',\n", - " \"my girlfriend's getting on my nerves\",\n", - " 'the arguments are hurting my head',\n", - " 'so i ring up the mandem asap',\n", - " \"cause i heard there's a rave in west\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " 'yo',\n", - " 'i tell my girl straight like kendrick',\n", - " 'please stop killing my vibe off',\n", - " \"right now i've got the type of domestics\",\n", - " 'i will jump in my car then drive off',\n", - " \"i'm not saying i wanna take time off\",\n", - " \"i've never been a stranger to hard work\",\n", - " \"but you're getting on my last nerve\",\n", - " \"you wanna argue with me cuh you can't get the last word?\",\n", - " \"that's so dead\",\n", - " 'best ting i fall back instead',\n", - " \"i don't want to say something i'll later regret\",\n", - " \"so i put on my chain and my crep and i'm gone again\",\n", - " 'the arguments are making me vexed',\n", - " \"you carry on when it's done like a outtake\",\n", - " \"now i'm out frass in a house rave\",\n", - " 'this one night you pissed me off',\n", - " \"so i ain't coming home til i see sunlight\",\n", - " \"my girlfriend's getting on my nerves\",\n", - " 'the arguments are hurting my head',\n", - " 'so i ring up the mandem asap',\n", - " \"cause i heard there's a rave in west\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " \"my girlfriend's getting on my nerves\",\n", - " 'the arguments are hurting my head',\n", - " 'so i ring up the mandem asap',\n", - " \"cause i heard there's a rave in west\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " \"i don't know if it's something i did\",\n", - " \"i don't know if it's something i said\",\n", - " 'but this girl is like a shit barber',\n", - " 'always trying to fuck with my head',\n", - " 'i told her to leave it and put the problems under the bed',\n", - " 'keep the shouting levels under the red',\n", - " \"but she don't want to hear so the next name i call her ain't going to be one to forget\",\n", - " 'get dressed, call shorty',\n", - " 'phone ez, pick up my door key',\n", - " 'or the next time any of my niggas see me',\n", - " \"i'll be sitting on the stage with maury\",\n", - " \"now i'm in the vip with a band on my wrist\",\n", - " 'popping a bottle of cris',\n", - " \"want to know what i'm celebrating? i'll tell them this\",\n", - " \"i'm on my 'hate my girlfriend' shit\",\n", - " \"my girlfriend's getting on my nerves\",\n", - " 'the arguments are hurting my head',\n", - " 'so i ring up the mandem asap',\n", - " \"cause i heard there's a rave in west\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " \"my girlfriend's getting on my nerves\",\n", - " 'the arguments are hurting my head',\n", - " 'so i ring up the mandem asap',\n", - " \"cause i heard there's a rave in west\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " 'if i walk out now like i wanna do',\n", - " \"the argument won't be over\",\n", - " \"but i can't take it so i pick up my keys\",\n", - " 'and put my coat over my shoulder',\n", - " 'when me and her clash in the hallway',\n", - " \"we'll say enough stuff to last us all day\",\n", - " \"but not this time, i'm switching off\",\n", - " \"turn the bitching off, that's it, i'm slipping off\",\n", - " 'then i switch back into my night',\n", - " \"cause her right ain't the same as my right\",\n", - " \"and we can be wrong but it won't get solved\",\n", - " 'before i hit the bar and take flight',\n", - " \"she's still in my mind, i'm an idiot though\",\n", - " 'cause i got gyal in the dark peeping though',\n", - " 'then i, then i started thinking',\n", - " 'is she the one that i wanna be with though?',\n", - " \"my girlfriend's getting on my nerves\",\n", - " 'the arguments are hurting my head',\n", - " 'so i ring up the mandem asap',\n", - " \"cause i heard there's a rave in west\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " \"my girlfriend's getting on my nerves\",\n", - " 'the arguments are hurting my head',\n", - " 'so i ring up the mandem asap',\n", - " \"cause i heard there's a rave in west\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " \"raving tonight, man's raving tonight\",\n", - " \"raving tonight, i'm going raving tonight\",\n", - " 'all around',\n", - " \"the world there's an echo\",\n", - " 'as he takes',\n", - " 'a bow, and they all know',\n", - " 'all the girls, the boys',\n", - " 'they chase the noise',\n", - " 'through the highs and through the lows',\n", - " 'they will follow the echo',\n", - " 'echo, echo, echo',\n", - " 'they will follow the echo',\n", - " 'echo, echo',\n", - " \"it seems like no matter what i do, i just can't get away from them\",\n", - " 'get away from what?',\n", - " 'the voices',\n", - " \"i can hear 'em callin', callin', callin', callin', callin'\",\n", - " \"i eat rappers, with the rhyme, consume 'em\",\n", - " \"the only fucking thing that you consume is time, i'm super human\",\n", - " \"my world is like a rubik's cube, it's too complex girl\",\n", - " \"you assuming, cupid's looming, my mentality's caveman stupid woman\",\n", - " 'my life is truman show, all i have is music, ho',\n", - " 'i stopped chasing every chick under the sun many moons ago, so pretend my dick is a balloon and blow',\n", - " 'but you better put a fork in it if you think i’ma lay here just spooning, yo',\n", - " \"oh, you think you the shit 'cause i just said you was beautiful?\",\n", - " 'diabolical to my last molecule, down to my last hair follicle and cuticle',\n", - " 'rotten to the core to the bone cold all the way down to my soul from my head to my toe',\n", - " 'ever since i was 13 i learned how to sew and sewed shut my own bootyhole',\n", - " \"'cause i ain't took no shit since i looked down to my nuts and saw my first pubic grow\",\n", - " 'i told these stupid hoes when i come back i’ma set this bitch on fire!',\n", - " \"and this time i don't mean i'ma pour gasoline on some chick and light her\",\n", - " \"'cause this time when i fuck this world i’ma put the whole goddamn dick inside her\",\n", - " \"i ain't even put my tip in that hole yet, i'ma go get nickel and try to rip it wider\",\n", - " 'all around',\n", - " \"the world there's an echo\",\n", - " 'as he takes',\n", - " 'a bow, and they all know',\n", - " 'all the girls, the boys',\n", - " 'they chase the noise',\n", - " 'through the highs and through the lows',\n", - " 'they will follow the echo',\n", - " 'echo, echo, echo',\n", - " 'they will follow',\n", - " 'the echo, echo, echo',\n", - " 'shh!',\n", - " 'did you hear that? somebody just said something',\n", - " 'is anybody there?',\n", - " \"i can hear 'em callin', callin', callin', callin', callin'\",\n", - " 'classical poems, battle my own demons, i need a glass of patron',\n", - " \"bad as i need a horn stabbing my clavicle bone, i'm matador prone\",\n", - " 'first time i seen a desert eagle i was letting the .44 buss, the .44 pop',\n", - " 'the first time you seen one, you was eating coco puffs, looking at robocop',\n", - " \"i am not a man, i'm a logo, i'm a such thang\",\n", - " \"in order to clean my veins you need saleen, i'm never referring to the solution, i’m talking about more like the mustang\",\n", - " 'vroom! get respect from the get-go, hello! step to the echo, echo, echo',\n", - " 'pen got a mind of its own, got to write my rhymes with a timer',\n", - " 'otherwise i’ll probably vibe out to a nine minute song',\n", - " 'as the echo follows the maserati, as the petrol swallows',\n", - " \"i'm a thousand bodies away from a skeleton, check your bible inside it\",\n", - " \"it'll say this guy's an elephant, i’m fly like i’m killing the scene like\",\n", - " 'i’m a villain with wings, i’ll sleep when i’m 6 feet deep',\n", - " 'right now i’m living a dream, though we may be reckless',\n", - " 'the ladies check us, they whisper shady records, baby echo!',\n", - " \"all, around, the world, there's an echo\",\n", - " 'as, he takes, a bow, and they all know',\n", - " 'all the girls, the boys, they chase the noise',\n", - " 'through the highs and through the lows',\n", - " 'they will follow the echo, echo, echo, echo',\n", - " \"it's akon, man (joell ortiz), my man p (p-money what's good?)\",\n", - " \"it's the magic city baby (new york city baby)\",\n", - " 'i think we got one on this one (yeah)',\n", - " \"so when them haters (man listen y'all), wanna scream my name\",\n", - " \"let them keep on callin' (gotta keep callin' man)\",\n", - " \"and they wasn't supporting us before and they wanna scream now (na man)\",\n", - " \"let them keep on callin', we gonna just let them keep on calling baby\",\n", - " \"so keep on calling, as for our supporters, y'all know you can just keep on calling for as long as you want, keep on calling\",\n", - " \"if anybody's road was hard dawg, it was mine\",\n", - " 'no pops and mommy nose finished more than a dime',\n", - " 'only child so my hands was active',\n", - " 'i used to get jumped and still yell \"but your man\\'s a faggot!\"',\n", - " 'no name jeans with the grass stains and wack zipper',\n", - " 'tucked up under the button up for the class picture',\n", - " \"eatin' twice in the lunch room\",\n", - " \"already feast with mom but some food just (keep on callin')\",\n", - " \"hey, ain't no shame in my game, i'm from the ps too\",\n", - " 'felt had to act tough for a piece too',\n", - " 'yes it was that serious',\n", - " 'back then',\n", - " 'empty refrigerators and back rent',\n", - " 'do me a favor and ask quinn if i could borrow some sugar',\n", - " \"joell knockin' down the hall with a note, and nose full of boogers\",\n", - " \"can't forget that\",\n", - " 'now that i spit crack',\n", - " \"the phones keep ringin'\",\n", - " \"nah, don't let 'em get that, let 'em keep on callin'\",\n", - " \"so when you hear them callin' out akon\",\n", - " \"let them keep on callin'\",\n", - " \"when you hear the world callin' out\",\n", - " '(joell ortiz)',\n", - " \"let them keep on callin'\",\n", - " 'cause we went through hell and back to get here',\n", - " \"so keep on callin'\",\n", - " 'let me hear you now',\n", - " 'let me hear you now',\n", - " \"let me hear you just keep on callin'\",\n", - " \"i love it when i hear y'all voice\",\n", - " \"y'all gotta understand i ain't drop them tears by choice\",\n", - " \"another man couldn't have dealt with the cruel jokes\",\n", - " 'winter time, feathers flying out my blue coat',\n", - " \"the girls ain't like me\",\n", - " \"cause i ain't have nike's\",\n", - " \"my hair wasn't spicy\",\n", - " 'a cut was five beans, i only had like three',\n", - " 'so i bought an ice',\n", - " \"hopin' it would cool me down\",\n", - " 'i was heated, all my friends had wifeys',\n", - " 'easter day, everybody got fresh',\n", - " 'me? i just tried to look my best',\n", - " 'poked out my chest',\n", - " 'never let them see me sweat',\n", - " 'these are the things i used to wanna forget',\n", - " \"now i'm glad i remember\",\n", - " 'you kept me on my toes, it was cold in december',\n", - " \"the roof on my building ain't have no chimney\",\n", - " \"maybe that's why santa skipped me\",\n", - " 'and his hotline was always busy',\n", - " \"i used to keep on callin'\",\n", - " \"c'mon\",\n", - " \"yeah i've been through hell and back\",\n", - " 'chris, theresa, edwin, joseph, michelle and pat',\n", - " \"that's my uncle, aunt, her husband, my pops, moms and other aunt\",\n", - " 'shit, all up in one apartment',\n", - " 'grandmoms let us stay there',\n", - " 'did she complain? yeah',\n", - " 'yellin\\' \"listen, this ain\\'t no daycare\"',\n", - " \"my cousins ain't play fair\",\n", - " 'we used to wrestle',\n", - " 'knock the phone off the hook and let it hang there',\n", - " \"like, keep on callin'\",\n", - " \"keep on callin'\",\n", - " \"keep on callin'\",\n", - " \"just keep on callin'\",\n", - " \"yo, jaytee rack 'em up, hazard productions\",\n", - " 'you done it again, son',\n", - " \"ethnicity irrelevant, black and white they all bangin' it\",\n", - " \"steel capped boot to the brains that i'm hammerin'\",\n", - " 'face hurt from the backhand',\n", - " '(congratulations) you just met the milkman',\n", - " 'he was all that, more than you thought',\n", - " 'got a following like brothablack up in a store (security!)',\n", - " \"lacks quality, you've heard it all before?\",\n", - " 'with a bad move like a white dude on a dancefloor',\n", - " \"and that's funny, fucking with briggs\",\n", - " 'is like fucking with shep, another bad move sonny',\n", - " \"sayin shit i know i'll get in trouble for:\",\n", - " '\"fuck rolf harris and his\\ufeff dumb cunt wobble board!\"',\n", - " 'feed the liquor to the bigger figure',\n", - " \"don't leave me to be the babysitter\",\n", - " \"'cause your kid might learn some bad words and bad terms;\",\n", - " 'ah fuck it, they growing up quick, ha?',\n", - " \"fuck around with me, that's a bad move\",\n", - " \"bad mouth the team, that's a bad move\",\n", - " \"disrespectin' me, and then you goin' to sleep?\",\n", - " \"you better believe that's a bad move\",\n", - " '\"i don\\'t even care\"',\n", - " '\"makin\\' a bad move\"',\n", - " '\"everybody can\\'t lose\"',\n", - " '\"that\\'s a bad move\"',\n", - " \"briggs disk is the shit, your shit gets skipped 'cause\",\n", - " \"your disc don't sound like this\",\n", - " 'and if it did, nobody would hear',\n", - " \"'cause you're doing what i've done, i done did it last year\",\n", - " \"no doubt, i'm the best cunt goin'\",\n", - " \"sociopath, i killed this without knowin'\",\n", - " 'outgrown, too big for their boots',\n", - " 'smash it up, wrap it up, too bad for the booth',\n", - " 'and these cats, they far from par',\n", - " 'like me on a friday, staggering bar to bar',\n", - " 'you half as hard, you half retard',\n", - " 'say your piece like um and uh',\n", - " \"fuckin' spit it out, cough it up, son, get it out\",\n", - " 'just sit back and get now',\n", - " 'and talk about how you gonna bring the brigga down;',\n", - " 'huh? yeah, well \"bring \\'em out, bring \\'em out\"',\n", - " \"fuck around with me, that's a bad move\",\n", - " \"bad mouth the team, that's a bad move\",\n", - " \"disrespectin' me, and then you goin' to sleep?\",\n", - " \"you better believe that's a bad move\",\n", - " '\"i don\\'t even care\"',\n", - " '\"makin\\' a bad move\"',\n", - " '\"everybody can\\'t lose\"',\n", - " '\"that\\'s a bad move\"',\n", - " \"i'm twice the size, ten times as nice\",\n", - " 'one mic, one night, one',\n", - " 'six times the cunt, nine times as fly',\n", - " 'eight times the drunk; gin laced with lime',\n", - " \"and i'm better: today, tomorrow, forever\",\n", - " \"don't act like you can stand next to the second letter\",\n", - " \"be about your wits 'cause you're about to lose\",\n", - " 'your chick, and start to wish that briggs had never met her',\n", - " 'if i were you probably hate me too',\n", - " \"check the stats, son, i'm supposed to lose\",\n", - " 'so i move with a chosen few',\n", - " 'make sure that you can trust those who are close to you',\n", - " \"now turn it up, it's a homemade bomb movement\",\n", - " \"let 'em know who it is when you do this\",\n", - " 'stamp yor name on it, plant your frame on it',\n", - " \"and make 'em feel the wrath when you move it\",\n", - " \"fuck around with me, that's a bad move\",\n", - " ...]},\n", - " 'data': ['(supah mario)',\n", - " 'thugger, skater',\n", - " 'once again, and again and again, ya dig?',\n", - " 'i want, i want, i want this one to be history, lil bro, ya dig',\n", - " \"let's get it\",\n", - " 'i was, i was tryna fuck her on a trampoline',\n", - " 'yeah, yeah, yeah, syrup, syrup, syrup, syrup',\n", - " \"yeah, i was leanin', drinkin' codeine mixed with promethazine\",\n", - " 'oh god, need a perc, perc, perc (i need a perc!)',\n", - " \"yeah yeah, nigga shitted on 'em (shit, hey)\",\n", - " \"yeah, nigga pass the olly, nigga pass the molly, watch me dip it on 'em\",\n", - " \"yeah, nigga pass the keys to them foreign cars, i'ma whip it on 'em\",\n", - " \"yeah, nigga play with me, you know them slime balls pull up trippin' on you\",\n", - " \"yeah, i'ma trick 'em on you, like a virus\",\n", - " 'i got eight legs like a octopus',\n", - " \"fuck a stop sign, ain't no stoppin' us\",\n", - " \"i don't see popos behind us\",\n", - " \"i don't see none, let's go find 'em\",\n", - " \"i'm a lyor, i'm a lion\",\n", - " \"i'm smoking on trees and i'm climbin'\",\n", - " \"he cookin' up fish and it's salmon\",\n", - " 'i got on some water, no fountain',\n", - " 'i need a new dew like a mountain',\n", - " \"'bout to make me cut off your allowance\",\n", - " 'i cut rapidly like accountants',\n", - " \"my rollie iced out and it's glisten\",\n", - " \"my neck is iced up and it's crowded\",\n", - " \"my momma tellin' me she proud of it\",\n", - " \"my bitch is bad and she with all the fuckery, you better keep runnin' and duckin'\",\n", - " 'and i, i know (i know it, i know it)',\n", - " 'and they know i love you down to your bones (they all know it)',\n", - " \"i said i do, ain't ever gon' do you wrong (i swear to god)\",\n", - " \"i don't know 'bout you, but i'ma take lil' mama home\",\n", - " \"uh, i tell 'em\",\n", - " \"sippin' lean, real clean\",\n", - " 'diamonds gleam, swag on triple beam, yeah',\n", - " 'fingernails clean',\n", - " \"i only got money, i don't break down weed\",\n", - " 'breaking down weed, come from breaking down, plead',\n", - " 'get-get-get that bitch a flight so i can take her down please',\n", - " \"don't you make a sound, please\",\n", - " \"it's a shake down, please, yeah\",\n", - " 'put your hands where i can see, yeah',\n", - " \"stick up, don't know 'bout these moves\",\n", - " 'make your body move',\n", - " 'clothes down to your shoes',\n", - " \"now baby don't move, cause maybe i'll shoot (yeah, haha)\",\n", - " \"cause maybe i'll shoot you\",\n", - " \"baby don't you move, baby i will shoot\",\n", - " 'and i, i know',\n", - " 'a-a-and they know i love you down to your bones',\n", - " \"i said i do, ain't ever gon' do you wrong\",\n", - " \"i don't know 'bout you, but i'ma take lil' mama home\",\n", - " 'way too hollywood to be in hollywood (shh)',\n", - " 'you done did it now',\n", - " \"heard the dope was good and, well, a hood's a hood, fuck (shh)\",\n", - " \"you gon' get it now\",\n", - " \"they said she gon' get you, right? they said she got all the juice\",\n", - " \"they said keep her happy though or she'd be coming after you\",\n", - " 'but shit, you get invincible when you get high',\n", - " 'and them sticky fingers never stopped to wonder why',\n", - " \"so now you sprintin' by that fish market tryin' to make it to summer\",\n", - " 'the blood in the ears is drumming, the heart is a cable jumper',\n", - " \"the brain is flippin' the language, the lungs are probably toast\",\n", - " \"but everybody who ever stopped runnin' is now a ghost\",\n", - " \"you ain't seen them headlights in a minute so it might be cool\",\n", - " \"night is fallin' gently and there ain't no one in sight for you\",\n", - " \"stop trippin', stop trippin', stop trippin', but don't stop movin', ho\",\n", - " \"not givin' the visions a minute to make a move, let's go\",\n", - " 'ho, get it right, get out of sight',\n", - " \"she on the street, run fo' your life\",\n", - " \"don't you know that she ain't 'fraid to shoot?\",\n", - " \"you ain't scared, is ya?\",\n", - " \"you fucked up and she comin' for you\",\n", - " \"you ain't scared, is ya?\",\n", - " 'ho, get it right, get out of sight',\n", - " \"she on the street, run fo' your life\",\n", - " \"don't you know that she cut you for fun?\",\n", - " \"you ain't scared, is ya?\",\n", - " \"if she comin' fo' you, better run\",\n", - " \"you ain't scared, is ya?\",\n", - " \"turnt into a alley quick, just a wall that's made of brick\",\n", - " 'with a dirty mattress leaning up against, it smell like piss',\n", - " 'big green dumpster to the right, color rusted, look like wine',\n", - " \"lid is heavy, but it's creakin' open, that'll do just fine\",\n", - " \"bags of trash with bites took out, coffee grounds are spillin' down\",\n", - " 'duck and slam, the lid close, damn, that metal echo hella loud',\n", - " 'quiet, sit, the plastic swish with every tiny move or twitch',\n", - " \"liquid all across the bottom, probably 'bout a quarter inch\",\n", - " \"shiver all up in the bones, the body feelin' crazy\",\n", - " \"face is streaked with tears and dirt, the vision goin' hazy\",\n", - " \"fuck it, it's too dark to see, cannot cry and can't be weak\",\n", - " \"it's a code of honor, gotta keep it gangster in the streets\",\n", - " 'og (og), og, og (og), og, oh jesus',\n", - " 'slap that koopsta all day, you knew just how this would be',\n", - " \"this the devil's playground, ain't for play, but you was born into it\",\n", - " \"now far in the distance creepin' up is that underground music\",\n", - " 'ho, get it right, get out of sight',\n", - " \"she on the street, run fo' your life\",\n", - " \"don't you know that she ain't 'fraid to shoot?\",\n", - " \"you ain't scared, is ya?\",\n", - " \"you fucked up and she comin' for you\",\n", - " \"you ain't scared, is ya?\",\n", - " 'ho, get it right, get out of sight',\n", - " \"she on the street, run fo' your life\",\n", - " \"don't you know that she cut you for fun?\",\n", - " \"you ain't scared, is ya?\",\n", - " \"if she comin' fo' you, better run\",\n", - " \"you ain't scared, is ya?\",\n", - " \"it's la chat, the killer, the murderer, the bitch they love to hate\",\n", - " \"yeah, you tried to run, but i caught you, you know it's no escape\",\n", - " 'burn up both your legs, split your head, but yeah, your mouth alright',\n", - " 'throw your garbage ass in the dumpster and now shit on your grave',\n", - " \"blood, i'm so addicted to blood, i'm cuttin' your body up\",\n", - " 'never know your name, your remains is scattered through the mud',\n", - " \"yeah, they should have warned you, la chat, bitch, man, she don't give a fuck\",\n", - " \"put you in the ground and relapse, gon' dig yo' ass back up\",\n", - " \"ain't no word, i had 'em psychotic, you haters gotta die\",\n", - " \"schizophrenic bipolar bitch, i'll feed my pits yo' ass\",\n", - " \"drama queen, i'm bringing this drama, don't fuck with me, i'll hunt you\",\n", - " \"cut you up like meat, take yo' kids, a very tasty luncheon\",\n", - " 'body you bitches for fun, punch a big hole through your lungs',\n", - " \"cut out your muhfuckin' tongue, bury you real quick and we're done\",\n", - " \"boostin' up the murder rate, hannibal lecter your face\",\n", - " 'chainsawed your rib cage, another missing person case, ho',\n", - " 'ho, get it right, get out of sight',\n", - " \"she on the street, run fo' your life\",\n", - " \"don't you know that she ain't 'fraid to shoot?\",\n", - " \"you ain't scared, is ya?\",\n", - " \"you fucked up and she comin' for you\",\n", - " \"you ain't scared, is ya?\",\n", - " 'ho, get it right, get out of sight',\n", - " \"she on the street, run fo' your life\",\n", - " \"don't you know that she cut you for fun?\",\n", - " \"you ain't scared, is ya?\",\n", - " \"if she comin' fo' you, better run\",\n", - " \"you ain't scared, is ya?\",\n", - " 'hoo-bangers (wassup!!!)',\n", - " \"y'all ready? (fo' sho'!!!!)\",\n", - " \"well let's do this shit\",\n", - " \"i'ma start this bitch off, and y'all run it, check it, uhh\",\n", - " 'on your marks, get set, go for what you know',\n", - " \"it's the #1 crew in your area, dough for dough\",\n", - " 'i keep it thuggish with my dickies on sag',\n", - " \"i buy my '57 rag until my '98 jag\",\n", - " 'and just roll all over the town on 20 inch wheels',\n", - " 'and just, brag all about the mill’s i made on mic skills',\n", - " 'i slang and do my thang keepin niggas on amp',\n", - " \"it's mack 10 kickin shit from the hoo-bangin camp\",\n", - " 'haha (nigga)',\n", - " \"i just, wake up and ball y'all (whattup k-mac?)\",\n", - " \"comrade criminals and y'know we fades em all (that's right)\",\n", - " \"i'm hittin six on the teatley\",\n", - " \"and i'm ridin on you busters cuz that's how it gotta be (it got to be)\",\n", - " 'niggas please, cadillacs on deez (on deez)',\n", - " \"and in the middle of the winter, it's still 89 degrees (that's right)\",\n", - " \"we's die hard, pullin job nigga's whole cards\",\n", - " \"best to check our records cos we's ??? ??? (that's right)\",\n", - " 'i kill a nigga ten times, before he hit the concrete (whattup techniec?)',\n", - " 'tight shit that make ya say \"damn, tech got bomb heat\" (hahaha)',\n", - " 'first nigga that speak like \"i don\\'t believe you\"',\n", - " 'first nigga who face touch asphalt before his knees do (god damn!)',\n", - " \"nigga, i ain't tryin to please you, know that\",\n", - " \"i'm no joke, black, you can quote that, i wrote that\",\n", - " \"i hold mac's with 2-1's\",\n", - " \"plus the deuce-5's at my side so i got two guns (that's right)\",\n", - " 'chorus:',\n", - " \"it don't stop til the casket drop\",\n", - " \"quick to handle them thangs, hoo-bang's the gang\",\n", - " 'on the corner with this rap tryin to regulate cheese',\n", - " \"y'know we represent them straight b's and c's\",\n", - " \"g'yeah (wassup? whattup eiht?)\",\n", - " 'ready to go to war, i take you to war',\n", - " 'hoo-bangin as i buck thru your passenger door (buck buck)',\n", - " 'bust, grab your bitch and tell her hit the floor (hit the deck, bitch)',\n", - " \"give it a fuck, blood pour, what we came here for (that's right)\",\n", - " \"til i die, why camouflage? i'm in a dodge (wassup nigga?)\",\n", - " \"your homies can't see me, i'm greedy, call me idi\",\n", - " 'speedy, the fire spits, kicks like the last dragon',\n", - " \"connects the clock with the glocks, g'yeah\",\n", - " \"i'm a motherfuckin westside gangbang, low ride nigga (yeah)\",\n", - " 'a 600 benz ride, cristal sipper (nigga)',\n", - " \"you don't wanna fuck with me, you're high, nigga (what?)\",\n", - " 'fuck with this here, you disappear, listen to me clear',\n", - " '6-double 0 bang, ace double o gang',\n", - " \"run up in banks and run trancs, what's my fuckin name? (what's my name?)\",\n", - " 'cj l-a-richwold, right here for the scrap',\n", - " 'less risk for the roller, killin niggas over',\n", - " 'so-so crackin, steady and packin on chrome, up under the hood',\n", - " 'slingin packages from s-c to inglewood',\n", - " 'runnin up on ya, puttin em on ya wit these knuckle hammers, mayne',\n", - " \"it's the shadiest ridah loc, quick to let the barrel flame\",\n", - " \"dub-c, one of the last niggas you wanna get wit, with these things i'm\",\n", - " \"'quipped with\",\n", - " \"bitch, i'm a couple of sandwiches away from a picnic\",\n", - " \"clippin nothin but hogs, i'm from the seaside of the walls\",\n", - " \"what's connectin with these doggs? nigga, ballin til we fall\",\n", - " \"b’s and c's, slangin cd's\",\n", - " 'overseas, the vietnamese and japanese (uhh)',\n", - " \"ya get got, your ass'll get shot\",\n", - " 'have you on your hands and knees like you was makin sulac',\n", - " \"what's the plot? nigga, from here to reno\",\n", - " 'boo kapone got three cases up in chino (nigga)',\n", - " 'i smash, i blast for the cash, i smoke hash',\n", - " \"i ripped your ass in half, don't niggas do the math? (niggas)\",\n", - " 'chorus',\n", - " \"y'all don't wanna get down! fuck y'all fools\",\n", - " 'ya best laydown! get clowned when we spray your whole town',\n", - " 'the jock coon aka binky mac, nigga!',\n", - " 'porsche or gat? put you flat then i ditch my strap (throw it away)',\n", - " \"what's the haps, mayn? jockin a whole crap game\",\n", - " 'mack 10 put a nigga on in, so now i hoo-bang (get yours, nigga)',\n", - " 'new jordans with my usual p hat',\n", - " \"b-mac, if i ever go broke i'm grabbin my ski mask\",\n", - " \"nigga, i'm a baller, inglewood dweller, ho seller\",\n", - " 'schemin for the pussy four times, do your duty',\n", - " 'bustle up in this and tatted up',\n", - " \"live and die for the west, but ain't had enough\",\n", - " 'it\\'s a hoo-bang thang, they say a \"nigga, where ya homie be?\" like',\n", - " \"(don't slow your roll) too late i'm banged out\",\n", - " \"i'm livin crucial, through this here ???\",\n", - " 'i live for violence and motherfuckers feel the terror',\n", - " 'rise up when you other fools is fallin',\n", - " \"the dawgs is who you gon' call, we on the ball like spalding\",\n", - " \"trick, it's the infamous macs from the i\",\n", - " 'hit the switch, in the lac, and go from low-to-high',\n", - " 'drive by, yeah g loves swamp rat and thug dumpin',\n", - " 'bumpin, see me from roadawgs, always into somethin',\n", - " 'like nwa, hoo-bangin, the r-e-c-i-p-e, yeah',\n", - " 'we fades em all, like jamal',\n", - " \"it's westside connect bang or ball? (nigga)\",\n", - " \"just ask the lil' homie do dirty\",\n", - " 'we get drunk and start beatin fools up at the pool party',\n", - " 'chorus (x2)',\n", - " 'yeah, gettin ours, westside connect ogz',\n", - " 'hoo-bang for the cheese, nigga',\n", - " 'you know about this crew',\n", - " 'try to see it or l-i-g it, nigga, wuz happenin?',\n", - " 'cook that shit up, quay',\n", - " 'baby',\n", - " '4 pockets',\n", - " \"yeah, that's my dawg, yeah\",\n", - " \"yeah, that's my dawg for sure (my dawg)\",\n", - " \"yeah, that's my dawg (my dawg)\",\n", - " \"yeah, that's my dawg for sure (my dawg)\",\n", - " \"yeah, that's my dawg (my dawg)\",\n", - " 'me and my dawg (me and my dawg)',\n", - " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", - " 'me and my dawg (me and my dawg)',\n", - " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", - " \"deja keep on callin' (callin')\",\n", - " 'she say she ready to pull up (pull up)',\n", - " 'as soon as i get there, walk in',\n", - " \"i'ma put her in a full nelson (yeah)\",\n", - " \"i'm on my way, i'm goin' fast\",\n", - " \"i'm comin' home to get you (i'm comin' home to get you)\",\n", - " \"i'm on my way, i'm goin' fast\",\n", - " \"i'm comin' home to get you (i'm on my way)\",\n", - " 'hundred thousand dollars on my neck',\n", - " \"'nother fifty thousand on my wrist\",\n", - " 'every nigga with me real rich',\n", - " \"niggas havin' pressure 'bout a bitch\",\n", - " 'i got all my cases dismissed',\n", - " \"i don't go back and forth on the internet\",\n", - " \"real niggas don't get into that\",\n", - " \"i'm tryna get in her mouth, for real\",\n", - " \"i'm tryna get in her mouth (yeah)\",\n", - " 'me and my dawgs, me and my dawgs',\n", - " 'we tryna run in your house (yeah, yeah)',\n", - " 'we want them bricks, we want the money (give me that)',\n", - " 'you can keep all of the pounds (give me that)',\n", - " \"i can't be fuckin' these lil bitty bitches\",\n", - " \"'cause they be runnin' they mouth (yeah)\",\n", - " \"i'm really runnin' this town\",\n", - " 'frank mueller watch for my wrist',\n", - " \"'nother thirty thousand in my fit\",\n", - " 'codeine all in my piss (ooh)',\n", - " \"i don't take drugs no more\",\n", - " \"baby mama trippin' 'bout a bitch\",\n", - " \"i'm just tryna take care my kid\",\n", - " \"i been in the trenches gettin' rich\",\n", - " \"i don't know another way to go\",\n", - " \"yeah, that's my dawg for sure (my dawg)\",\n", - " \"yeah, that's my dawg (my dawg)\",\n", - " \"yeah, that's my dawg for sure (my dawg)\",\n", - " \"yeah, that's my dawg (my dawg)\",\n", - " 'me and my dawg (me and my dawg)',\n", - " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", - " 'me and my dawg (me and my dawg)',\n", - " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", - " \"deja keep on callin' (callin')\",\n", - " 'she say she ready to pull up (pull up)',\n", - " 'as soon as i get there, walk in',\n", - " \"i'ma put her in a full nelson (yeah)\",\n", - " \"i'm on my way, i'm goin' fast\",\n", - " \"i'm comin' home to get you (i'm comin' home to get you)\",\n", - " \"i'm on my way, i'm goin' fast\",\n", - " \"i'm comin' home to get you (i'm on my way)\",\n", - " 'bust down rollies for the clique',\n", - " 'got these bitches dancing on the dick',\n", - " \"they gon' wait in line for this drip\",\n", - " \"i'ma give her mine, then dip\",\n", - " \"i'ma try to kill her for the real\",\n", - " 'thirty thousand dollars in my ear',\n", - " \"i ain't gotta sign no deal\",\n", - " \"made a half a mil' last year\",\n", - " 'i just came home from the can',\n", - " '20 days, whole hundred bands',\n", - " \"got a nigga feelin' like the man\",\n", - " \"all these bitches knowin' who i am\",\n", - " \"hit the ground runnin', i ain't playin'\",\n", - " 'put a hundred bricks in the van',\n", - " 'give a thousand pounds to my man',\n", - " 'blow the money fast as i can',\n", - " 'signed to the streets, no advance',\n", - " 'bitches tryna rip me out my pants',\n", - " \"'cause they heard a youngin' gettin' bands\",\n", - " \"they don't know that i ain't goin' for nothin'\",\n", - " 'only gave the bitch a couple hundred',\n", - " 'big dawg, nigga, you a runner',\n", - " 'run off on the plug, change my number',\n", - " 'drop top coupes for the summer',\n", - " \"yeah, that's my dawg for sure (my dawg)\",\n", - " \"yeah, that's my dawg (my dawg)\",\n", - " \"yeah, that's my dawg for sure (my dawg)\",\n", - " \"yeah, that's my dawg (my dawg)\",\n", - " 'me and my dawg (me and my dawg)',\n", - " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", - " 'me and my dawg (me and my dawg)',\n", - " \"we gave 'em two in a row (we gave 'em two in a row)\",\n", - " \"deja keep on callin' (callin')\",\n", - " 'she say she ready to pull up (pull up)',\n", - " 'as soon as i get there, walk in',\n", - " \"i'ma put her in a full nelson (yeah)\",\n", - " \"i'm on my way, i'm goin' fast\",\n", - " \"i'm comin' home to get you (i'm comin' home to get you)\",\n", - " \"i'm on my way, i'm goin' fast\",\n", - " \"i'm comin' home to get you (i'm on my way)\",\n", - " 'dawgs',\n", - " 'just me and my dawgs',\n", - " \"we gon' take 'em down two in a row\",\n", - " \"we gon' take 'em down two in a row\",\n", - " \"we gon' take 'em down two in a row\",\n", - " 'just me and my dawgs',\n", - " \"i'ma put her in a full nelson\",\n", - " \"as soon as i get there, i'ma put her in a full nelson\",\n", - " 'oh shut the front door come on',\n", - " 'i might drive out to dmv for some peace shit',\n", - " \"i might hide out you won't see me for a week shit\",\n", - " \"took a time out but it wasn't for tv shit\",\n", - " \"oh please. throwing g's at the preakness\",\n", - " 'filets beer battered, back shots get your rear shattered',\n", - " 'bodies on deck, yet he never tear tatted',\n", - " 'matted, murdered out all black heard through word of mouth',\n", - " \"he's a burden now it's a fact, fuck it.. speak\",\n", - " 'wet a beak with the poland spring',\n", - " 'delving deep with the freaks eating boneless wings',\n", - " 'trop called him pederico',\n", - " 'pop gushy, pop clicquot',\n", - " 'puffin leak on the church steeple',\n", - " 'creeps slow on the willem dafoe -',\n", - " \"looking trolls can't kill him gotta will him to go\",\n", - " \"we in manila bumpin' willa ford\",\n", - " 'thank you lord for the smorgasboard',\n", - " 'we bluetooth never aux cord',\n", - " '(oh pls oh pls)',\n", - " \"you ain't never heard no rhymes like these\",\n", - " '(oh pls oh pls)',\n", - " 'tryna charge him with additional fees',\n", - " '(oh pls oh pls)',\n", - " 'federalees wanna search and seize',\n", - " '(oh pls oh pls oh pls oh pls)',\n", - " \"ayo shut the fuck up when i'm talking you through it\",\n", - " 'you fucks blew it and he knew it',\n", - " '3 percent tint in the buick',\n", - " 'its congruent',\n", - " 'dollars and yen, euros he fluent',\n", - " \"she polishing men, shinin' the unit\",\n", - " 'i know you got a man but like we could still do shit',\n", - " \"i know you got a plan but like it's not really too lit\",\n", - " 'known to be a nuisance to crews new chicks dudes and neighbors',\n", - " \"do me a favor don't do me no favors (shiet!)\",\n", - " 'tell me one thing that might have gave us, pause',\n", - " 'and they think, might cause him to drink but never play us',\n", - " \"serving him up, don't survey us\",\n", - " 'the gang on surveillance, eating paellas and pan roasts',\n", - " \"damn every time your man boasts it's saran for you folks\",\n", - " 'slam from the post eating jam with the toast',\n", - " \"dip the ham in the yolks. it's not a hoax\",\n", - " 'got boats in roanoke',\n", - " '(oh pls oh pls)',\n", - " \"you ain't never heard no rhymes like these\",\n", - " '(oh pls oh pls)',\n", - " 'tryna charge him with additional fees',\n", - " '(oh pls oh pls)',\n", - " 'federalys wanna search and seize',\n", - " '(oh pls oh pls, oh pls oh pls)',\n", - " 'hey hows it going eric',\n", - " 'um you got your phone bro',\n", - " 'remember the big paintball game today?',\n", - " \"that's today bro\",\n", - " '..so um, i dont know if your hun- hungover or',\n", - " 'just so.. im just chillin out',\n", - " 'hey give us a call back',\n", - " 'you know, maybe.. maybe, call scooby he called you too',\n", - " \"alright bro! see you later man. hope every thing's well. alright. bye bye\",\n", - " '(oh pls)',\n", - " '(oh pls)',\n", - " '------------------------------',\n", - " 'scum gang!',\n", - " \"niggas runnin' out they mouth, but they never pop out\",\n", - " 'i got the drop on your spot, everybody watch out',\n", - " 'all my niggas on 50, so you know we hopped out',\n", - " \"mobbed out, opps out, we gon' show what we about\",\n", - " 'all my niggas really gang bang, talk that damn slang',\n", - " 'rap about it, do the same thing, let your nuts hang',\n", - " \"we gon' pull up, nigga, ¡ándale!, on sangre\",\n", - " \"we post up, we don't do the race, you gon' die today\",\n", - " 'in the spot, blow 50 bands, shit, 100 bands',\n", - " \"shit, my pockets on a runnin' man, fuck a rubberband\",\n", - " \"i'ma fuck her in a handstand, she a fan, man\",\n", - " \"need the drugs? i'm the xan man, i'm the damn man\",\n", - " \"i roll up, i'm gon' be booted, stupid, and shootin' stupid\",\n", - " 'brought a knife, i brought a ruger, stupid, i really do this',\n", - " \"if i tote it then you know i'll shoot it and i'ma prove it\",\n", - " \"back, back, don't be movin', stupid, or i'ma use it (squad)\",\n", - " 'dicky stiffy, uh, bet she give some licky, uh',\n", - " 'lil bitty, uh, bust all on her titties, uh',\n", - " \"she a skeezer, uh, really don't need her, uh\",\n", - " 'bust then i leave her, uh, she a little eater, uh',\n", - " 'get back, kickback, blow your shit back, uh',\n", - " 'rip that, take that, flip that, send that, uh',\n", - " '.223 hit, where your clothes at? uh',\n", - " \"scum gang 'bout that fendi, fin-act, uh\",\n", - " \"niggas runnin' out they mouth, but they never pop out\",\n", - " 'i got the drop on your spot, everybody watch out',\n", - " 'all my niggas on 50, so you know we hopped out',\n", - " \"mobbed out, opps out, we gon' show what we about\",\n", - " 'all my niggas really gang bang, talk that damn slang',\n", - " 'rap about it, do the same thing, let your nuts hang',\n", - " \"we gon' pull up, nigga ¡ándale!, on sangre (it's koncept p, the beat knockin')\",\n", - " \"we post up, we don't do the race, you gon' die today\",\n", - " 'you can talk hot on the internet, boy',\n", - " \"that's that goofy shit, we ain't into that, boy\",\n", - " 'black van, pull up to your momma crib, boy',\n", - " 'tie her up, drive that shit off a bridge, lil boy',\n", - " 'you can talk hot on the internet, boy',\n", - " \"that's that goofy shit, we ain't into that, boy\",\n", - " 'black van, pull up to your momma crib, boy',\n", - " 'tie her up, drive that shit off a bridge, lil boy',\n", - " \"niggas runnin' out they mouth, but they never pop out\",\n", - " 'i got the drop on your spot, everybody watch out',\n", - " 'all my niggas on 50, so you know we hopped out',\n", - " \"mobbed out, opps out, we gon' show what we about (it's koncept p, the beat knockin')\",\n", - " 'all my niggas really gang bang, talk that damn slang',\n", - " 'rap about it, do the same thing, let your nuts hang',\n", - " \"we gon' pull up, nigga ¡ándale!, on sangre\",\n", - " \"we post up, we don't do the race, you gon' die today\",\n", - " 'get them vocals, nigga',\n", - " \"yeah, this is w somethin-somethin-somethin'\",\n", - " 'uh, yeah',\n", - " 'violation, violation',\n", - " 'you supposed to be my brown sugar like sanaa lathan',\n", - " \"i'm down to chase the pussy all through the town, jason\",\n", - " \"reality hit like a blunt, girl it's time to face it\",\n", - " \"i'm just the right amount of wit to get your mind racin'\",\n", - " 'i asked you one thing you could bring if you went outerspace and',\n", - " \"i tell you all about the shit i like and the shit i hatin'\",\n", - " \"you share your demons, don't be scared, i promise i can take it\",\n", - " \"i feel like overton or dwayne, girl, i'm all for pain\",\n", - " \"you gon' get a ring\",\n", - " \"i'ma even listen to you sing knowin' you can't sing\",\n", - " \"fuck it, it sound beautiful to me, go 'head do ya thang\",\n", - " 'bring a fifth of henny to the beach and i hate the sand',\n", - " 'and you not just sexy but you woke, we both hate the man',\n", - " \"yeah, we both crazy, but i think i'm crazy more\",\n", - " 'but she\\'d love to prove me wrong, lookin\\' up like \"what\\'s the score?\"',\n", - " 'brown sugar, spice, and everything nice',\n", - " 'mix it with whatever i like',\n", - " 'i wrote this love letter tonight',\n", - " \"hopin' i can get a bite\",\n", - " 'she so sassy, ooh',\n", - " 'she so sassy, turn immature every time she walk past me',\n", - " 'brown sugar, spice, and everything nice',\n", - " 'mix it with whatever i like',\n", - " \"i'm holdin' back my tweets, i ain't slept good all week\",\n", - " \"i'm waitin' till i see her, i put on my best sneakers\",\n", - " \"i'm in the mirror like mary, i need to smoke my reefer\",\n", - " \"i'm sweatin' hard, tryn chill, dreamin' yours in the grill\",\n", - " \"why can't it all be real?\",\n", - " \"i better have my baby and she gon' have my baby\",\n", - " \"we gon' ball like brady, y'all think i'm all types crazy\",\n", - " \"don't care 'bout none of the lately, i ain't write a song in a minute\",\n", - " \"just waitin' for a notification, this could be us but you playin'\",\n", - " \"i'm really up, i be prayin' for bigger bucks in my hand, to grip on a butt while i'm layin'\",\n", - " \"breathe nigga, breathe, you can fly like the matrix, and you startin' to believe it\",\n", - " \"say she love you more and i'm startin' to believe her\",\n", - " 'love the tiger stripes on her ass like adidas',\n", - " \"hit the shmoney dance after crackin', she crashin'\",\n", - " \"she wake up, make her late for work and we laughin' 'bout what happened\",\n", - " 'she had that',\n", - " 'brown sugar, spice, and everything nice',\n", - " 'mix it with whatever i like',\n", - " 'i wrote this love letter tonight',\n", - " \"hopin' i can get a bite\",\n", - " 'she so sassy, ooh',\n", - " 'she so sassy, turn immature every time she walk past me',\n", - " 'brown sugar, spice, and everything nice',\n", - " 'mix it with whatever i like',\n", - " 'i like, i like, i like',\n", - " 'champion me a di champion boy (x4)',\n", - " 'one bag a gold medal pon me, enuh',\n", - " 'champion bwoy you know how the damn thing go',\n", - " 'pon a podium a sing the anthem too',\n", - " '(yellow moon)',\n", - " 'man a born sheller',\n", - " 'me a the god damn bwoy',\n", - " 'that’s why everybody hate the champion bwoy',\n", - " 'have a rich gyal inna di hamptons bwoy',\n", - " 'dem wish a never me did a the champion bwoy',\n", - " 'if a nuh norman a dung sangsters bwoy',\n", - " 'fly out every week me a the god damn bwoy',\n", - " 'just buss and buy a mansion bwoy',\n", - " 'champion, me a the champion bwoy',\n", - " 'have me own a name, and me have me own a fame',\n", - " 'and me nuh need no more hype',\n", - " 'me need a money counter',\n", - " 'counting a get annoying sometime',\n", - " 'me cyaa tek dis life',\n", - " 'dem artist a rate me nuh fuck',\n", - " 'every song weh dem sing me name in a the title',\n", - " 'cause a yesterday me spend a hour pon the phone',\n", - " 'a gi me financial advisor advise to',\n", - " 'me wish some a dem yute yah never so frighten fi pussy',\n", - " 'every chance dem get dem go wife up',\n", - " 'me fuck you gyal, cum pon her belly',\n", - " 'and me might go a second round if me idle',\n", - " 'dem nuh have a hot song',\n", - " 'cyaa left the caribbean',\n", - " 'sometime me wonder how dem survive',\n", - " 'dem did a seh me career soon dead',\n", - " 'a two years now and me never feel more alive',\n", - " 'god damn boy',\n", - " \"and that's why everyone hate the champion boy\",\n", - " 'dis a iphone a no samsung boy',\n", - " 'you nuh see seh a me a the champion boy?',\n", - " 'me go ardenne a never campion boy',\n", - " 'fly out every week me a di god damn bwoy',\n", - " 'post a picture nuh caption bwoy',\n", - " 'everyone know me a the champion bwoy',\n", - " 'dem yah story yah cyaa come pon er',\n", - " 'it haffi go-go pon profile',\n", - " 'me never get no right fi a mash up the place',\n", - " 'and a kill dem wid bare style',\n", - " 'me would a be dem favorite if me chat up wid dem',\n", - " 'and gossip up wid dem and smile up',\n", - " 'and a who fa mother this?',\n", - " 'yow a who fa father this?',\n", - " 'somebody need fi come get dem, dem time up',\n", - " 'the table dem turn to the pot dem turn down',\n", - " 'and it look like dem wash up to me',\n", - " 'what that dem waan fia do it or not',\n", - " 'me nuh ask dem nuh stop study me',\n", - " 'cyaa member dem, yow me don’t memba dem',\n", - " 'but a everyday dem memba me',\n", - " 'unless you name jody-anne maxwell you cyaa chat to me (champion bwoy)',\n", - " 'man a born sheller',\n", - " 'me a the god damn bwoy',\n", - " 'that’s why everybody hate the champion bwoy',\n", - " 'have a rich gyal inna di hamptons bwoy',\n", - " 'dem wish a never me did a the champion bwoy',\n", - " 'if a nuh norman a dung sangsters bwoy',\n", - " 'fly out every week me a the god damn bwoy',\n", - " 'just buss and buy a mansion bwoy',\n", - " 'champion, me a the champion bwoy',\n", - " 'ever since i was a kid',\n", - " 'on the backs of my two eyelids',\n", - " 'i hid two teleprompters there',\n", - " 'transmitting words from who knows where',\n", - " 'walkie-talkie on a mission',\n", - " 'roger, roger will i listen',\n", - " 'or will i just pass it along',\n", - " 'in the form of a sing-a-long',\n", - " 'whammies and noids be void and null',\n", - " 'i feel a tingle in my skull',\n", - " 'like ticker tape the words appear',\n", - " 'there’s a parade between my ears',\n", - " 'i preach self-love i know it’s true',\n", - " 'it’s easier to say than do',\n", - " 'i send these messages to you',\n", - " 'but now i need to hear them too',\n", - " 'i am beautiful i am powerful i am strong and i am loveable',\n", - " 'i am beautiful i am powerful i am strong and i am loveable',\n", - " 'i was laying bricks in a line',\n", - " 'yap full of dog toy',\n", - " 'picturing a life beyond that of a protocol droid',\n", - " 'bleep bloop boy ox boycott pea soup',\n", - " 'first learn to eat paint at st. peter’s preschool-yum',\n", - " 'now that’s a painkiller i can speak through',\n", - " 'airbrush letters on a pristine gene pool',\n", - " 'see my mother said her father drew a ton',\n", - " \"but all his cartoons had been swallowed by the susquehanna flood in '72\",\n", - " 'the year that he would subsequently pass',\n", - " 'i know he had a stroke but i assume that’s only half',\n", - " 'and now i’m signing up for finger-drawing class in a tux like a gentleman',\n", - " 'marrying his ash to his dust',\n", - " 'last on the kickball team draft pick-list',\n", - " 'first to the king kullen practicing his kickflips',\n", - " 'i’d like to say it’s ‘cause i was a rebel',\n", - " 'truthfully it’s easier to say “oh hell” instead of “hello”',\n", - " '(hi, you need to get out more)',\n", - " 'i dunno, i don’t wanna be there when the geometry domino',\n", - " '(you need to get out more)',\n", - " 'maybe, or maybe his pace is better suited for pacing',\n", - " '(you need to get out more)',\n", - " 'never i am nailed to the floor-i am snail under pressure',\n", - " '(you need to get out more)',\n", - " 'fine',\n", - " 'ever since i was a kid',\n", - " 'on the backs of my two eyelids',\n", - " 'i hid two teleprompters there',\n", - " 'transmitting words from who knows where',\n", - " 'and this is why when i’m on stage',\n", - " 'my eyes are closed i’m in a haze',\n", - " 'i look like i’m made out of clay',\n", - " 'i’m overwhelmed and under-glazed',\n", - " 'i’m making vases out of snakes',\n", - " 'i’m a kiln half-full of mistakes',\n", - " 'when kneading it, air’s overlooked',\n", - " 'it’s gonna crack when it gets cooked',\n", - " 'so self-forgiveness is the key',\n", - " 'to re-sculpting my sanity',\n", - " 'mindfulness, humility',\n", - " 'and taking time to care for me',\n", - " 'i preach self-love i know it’s true',\n", - " 'it’s easier to say than do',\n", - " 'i sing these messages to you',\n", - " 'but now i need to hear them too',\n", - " 'i am beautiful i am powerful i am strong and i am loveable',\n", - " 'i am beautiful i am powerful i am strong and i am loveable',\n", - " 'i was laying bricks in a line',\n", - " 'yap full of copper-top',\n", - " 'picturing a life beyond that of a dish-washer bot',\n", - " 'buzz ping',\n", - " 'criss-crossed arms in a tub ring',\n", - " 'learned heartbreak on a zelda-1 sub screen-numb',\n", - " 'learned dark days by the scent of poached dove meat',\n", - " 'some part ways and it’s fugly',\n", - " 'maybe the sum of the parts became lesser',\n", - " 'that each individually making the same gesture',\n", - " 'and you don’t wanna interrupt the overlapping network',\n", - " 'so you throw a bag together and elope with cabin pressure',\n", - " 'to disappear instead of interfere with nutty customs',\n", - " 'and differing definitions of liberty and justice',\n", - " 'big dummy dig a hole in the dirt',\n", - " 'he put his head in the hole; he is alone in this world',\n", - " 'and dying slowly from the comfort of his home full of worms',\n", - " 'until you hear a little voice say “yo let’s go get dessert”',\n", - " 'wait-what?',\n", - " 'you need to get out more',\n", - " 'i dunno-over 2 million dead bats in ny alone',\n", - " 'you need to get out more',\n", - " 'maybe, maybe not',\n", - " \"maybe i'll just stay back and survey the lot\",\n", - " 'you need to get out more',\n", - " 'never i am nailed to the walls in a jail made of deserts',\n", - " 'you need to get out more',\n", - " 'ok',\n", - " 'i dedicate this to my man 2pac',\n", - " 'rest in peace boy',\n", - " \"you know it's all love\",\n", - " 'who holds jurisdiction over my twisted thoughts?',\n", - " \"and am i to blame for what's happened off in this game?\",\n", - " \"i'm do or die about my scratch but i know\",\n", - " \"this dope game 4 me just ain't the way to go\",\n", - " \"but i'm still there grinin' and winnin' just like the next foldin' paper\",\n", - " \"thinkin' of ways to load another caper\",\n", - " \"it's a cold twist to know that i can slang all night\",\n", - " 'and slang all day but never have the courage to pray',\n", - " \"believe i know better but somehow i feel i'm lost\",\n", - " 'at the crossroads but am i scared to move across',\n", - " \"could it be what i'm drinkin'? it got me thinkin' like i'm thinkin'\",\n", - " '\"lord i need help but i can\\'t help myself\"',\n", - " \"awaken to the sound of sirens, niggas dyin'\",\n", - " 'kids in the street wit no food to eat',\n", - " \"prostitutes gettin' money in they only profession\",\n", - " 'but lord i only got one question',\n", - " '(bo rock)',\n", - " \"do g's go to heaven? cause i don't wanna die\",\n", - " \"(i know it's wrong and i know what's right)\",\n", - " \"but if so i'd like to know do g's go to heaven? (3x)\",\n", - " '(will i get to heaven if i die tonight)',\n", - " 'and if i took a life or perhaps sold some dope',\n", - " 'would you discriminate upon my entry to the gate?',\n", - " \"i need to know my fate 'cuz now my life ain't straight\",\n", - " 'but just look it the place where i live is oh so crooked',\n", - " \"i didn't shoot that man but i watched him die\",\n", - " \"and saw the pain and the struggle in his eye and didn't cry\",\n", - " 'so when i start to hear the thunder',\n", - " \"are you takin' me under or is my sin just as bad as the gunner?\",\n", - " 'for every time i walked by, and every time i got high',\n", - " 'for every man i watched die',\n", - " 'lord i need to know do gs get to go?',\n", - " 'for all the women that i ran through',\n", - " \"and those that i did and didn't plan to\",\n", - " 'for every scam i ran my hands through',\n", - " 'lord i need to do gs get to go?',\n", - " 'and if they get to go, when its time to meet my maker',\n", - " 'will he understand that i am only a man',\n", - " 'flesh and bone born to live and die in the zone',\n", - " 'and gets loney trying to make it on ya own',\n", - " 'and when my baby crys my intentions are to feed',\n", - " 'and fufill tha needs of my one and only seed',\n", - " 'and if i rob and steal let it read in my will',\n", - " '\"payback from tha ones that who fell victims to my guns\"',\n", - " \"on tha run but knowin i can't hide\",\n", - " 'why do i feel tha way i feel inside?',\n", - " 'its like my soul is leavin me',\n", - " 'are you decieving me ? i hear voices, sayin believe in me',\n", - " 'is it you? i hear theres a man named god',\n", - " 'that can fix it, when its twisted',\n", - " \"i'm not sayin i'm all that bad but i can use a lil help\",\n", - " \"cause at times i can't help myself\",\n", - " \"do g's go to heaven? cause i don't wanna die\",\n", - " \"but if so i'd like to know do g's go to heaven? (6x)\",\n", - " 'flocka!',\n", - " 'triple f life, man: friends, fans, and family',\n", - " 'aye, aye, aye, aye, aye',\n", - " 'aye, aye...',\n", - " \"i can't trust myself, so hell no, i can't trust you\",\n", - " \"i'm ballin', you can call me bill russell\",\n", - " \"point me to the court, coach it's my turn\",\n", - " \"i swear to god to dribble base and don't cross over\",\n", - " \"cause i'm ready, cause i'm ready\",\n", - " \"cause i'm readyyyyyyyyyyy\",\n", - " \"cause i'm ready, cause i'm ready\",\n", - " \"cause i'm readyyyyyyyyyyy\",\n", - " 'i remember selling nicks, dimes, and them vickies',\n", - " 'i got no love, i swear to god, my heart empty',\n", - " 'i remember when a nigga was young',\n", - " \"going in auntie and grandma's pocketbooks\",\n", - " 'even my mama pocketbook, even stealing out the stores',\n", - " \"now i'm getting thirty five thousand for a show\",\n", - " 'i can buy my own store right now',\n", - " \"joke's on you, bitch!\",\n", - " 'i remember uncle joe talking to me',\n", - " \"saying everybody in this world's some hungry man\",\n", - " \"so prepare your dinner, so you don't be supper\",\n", - " 'my hood like pearl harbor, green like the jungle',\n", - " 'cool with them ex lions and them tigers',\n", - " 'hell yeah, you can call me a party animal',\n", - " 'eat a rap nigga, call me hannibal',\n", - " \"dump 'em out the rear\",\n", - " '(2x)',\n", - " 'i came here to talk back, i-i came here to fuck shit up',\n", - " 'i came here to talk smack, i-i came here to fuck shit up',\n", - " 'i came here to talk back, i-i came here to fuck shit up',\n", - " 'i came here to talk smack, i-i came here to fuck shit up',\n", - " 'i came here to talk back, i-i came here to fuck shit up',\n", - " 'i came here to talk smack, i-i came here to fuck shit up',\n", - " 'i came here to talk back, i-i came here to fuck shit up',\n", - " 'i came here to talk smack, i-i came here to fuck shit up',\n", - " 'i came here to talk back, i-i came here to fuck shit up',\n", - " \"i know y'all seeing that we back again\",\n", - " \"everybody happy that we jumpin' in\",\n", - " \"two times a charm and we goin' in\",\n", - " 'me and my amigo back at it again',\n", - " \"i know y'all seeing that we back again\",\n", - " \"everybody happy that we jumpin' in\",\n", - " \"two times a charm and we goin' in\",\n", - " 'me and my amigo back at it again',\n", - " \"we stomping on your lawn, you can't keep up (say it again)\",\n", - " \"we stomping on your lawn, you can't keep up (say it again)\",\n", - " \"we stomping on your lawn, you can't keep up (say it again)\",\n", - " \"we stomping on your lawn, you can't keep up (say it again)\",\n", - " 'chicka chicka bang, chicka chicka bom bom',\n", - " \"i'm lookin' at the paper, checkin' on my\",\n", - " 'think i wanna spend my cash on a trip to the moon',\n", - " \"i might be the first but we really don't know\",\n", - " 'i came here to talk smack, i-i came here to fuck shit up',\n", - " 'i came here to talk back, i-i came here to fuck shit up',\n", - " 'chicka chicka bang, chicka chicka bom bom',\n", - " \"i'm lookin' at the paper, checkin' on my\",\n", - " 'think i wanna spend my cash on a trip to the moon',\n", - " \"i might be the first but we really don't know\",\n", - " 'i came here to talk smack, i-i came here to fuck shit up',\n", - " 'i came here to talk back, i-i came here to fuck shit up',\n", - " \"you see, baby? i'm sitting here and i'm laughing at you\",\n", - " \"i'm laughing cause you're thinking too hard\",\n", - " 'you need to just let go and have some fun',\n", - " \"it ain't that serious, just do you, boo\",\n", - " \"join in, everybody who's with me\",\n", - " \"let's start this movement\",\n", - " \"i know y'all seeing that we back again\",\n", - " \"i know y'all seeing that we back again\",\n", - " \"i know y'all seeing that we back again\",\n", - " \"i know y'all, know y'all, know y'all\",\n", - " \"i know y'all seeing that we back again\",\n", - " \"everybody happy that we jumpin' in\",\n", - " \"two times a charm and we goin' in\",\n", - " 'me and my amigo back at it again',\n", - " \"we stomping on your lawn, you can't keep up (say it again)\",\n", - " \"we stomping on your lawn, you can't keep up (say it again)\",\n", - " \"we stomping on your lawn, you can't keep up (say it again)\",\n", - " \"we stomping on your lawn, you can't keep up (say it again)\",\n", - " 'chicka chicka bang, chicka chicka bom bom',\n", - " \"i'm lookin' at the paper, checkin' on my\",\n", - " 'think i wanna spend my cash on a trip to the moon',\n", - " \"i might be the first but we really don't know\",\n", - " 'i came here to talk smack, i-i came here to fuck shit up',\n", - " 'i came here to talk back, i-i came here to fuck shit up',\n", - " \"just what you think you're doing?\",\n", - " \"every day i'm going insane\",\n", - " \"i'm like if rage and animosity had sex and a child\",\n", - " 'and got a great big house up on a mountain made of doubt and hate',\n", - " 'and then just burned it all down, so they could start it again',\n", - " 'burn, everything, to, the, ground',\n", - " 'uh, born alone living life on my own',\n", - " 'death grabbed a hold of me, my heart turned to stone',\n", - " 'my blood is cold and my thoughts not my own',\n", - " \"i can't remember, but i know that you know\",\n", - " \"everyone's lost\",\n", - " 'everybody a fake',\n", - " 'stuck in a rat race in a world full of snakes',\n", - " 'fuck everything',\n", - " 'fuck the lies on your tv screen',\n", - " 'fuck everyone',\n", - " \"i'ma die so your fate can be no more, no more, no more, no more\",\n", - " \"(don't let me go out alone)\",\n", - " \"(don't let me go out alone)\",\n", - " 'uh, i watched the world fall apart from me',\n", - " 'i looked as far as my eyes can see',\n", - " \"don't wanna know why i feel this way\",\n", - " 'i wanna die for steal your pain',\n", - " 'i watched the world fall apart from me',\n", - " 'i looked as far as my eyes can see',\n", - " \"don't wanna know why i feel this way\",\n", - " 'i wanna die for steal your pain',\n", - " \"every day i'm going insane\",\n", - " \"i'm like if rage and animosity had sex and a child\",\n", - " 'and got a great big house up on a mountain made of doubt and hate',\n", - " 'and then just burned it all down, so they could start it again',\n", - " 'burn, everything, to, the, ground',\n", - " \"some birds don't deserve to be caged\",\n", - " 'they gotta fly away and search for the waves',\n", - " 'being locked up is worse than the grave',\n", - " 'i live by the words on the page - i know!',\n", - " \"some birds don't deserve to be caged\",\n", - " 'they gotta fly away and search for the waves',\n", - " 'bein held down is worse than the grave',\n", - " 'i live by the words on the page - i say!',\n", - " 'i jumped on the planet and i landed on both feet',\n", - " 'tippy-toed across the continent, on the dope beat',\n", - " 'settled in the mainland ghetto by the sand trap',\n", - " 'rocked to a handclap until i got my band back',\n", - " 'thoughts came thick in a ball of confusion',\n", - " \"a wall of belusion it's all so amusin\",\n", - " 'i laughed at the pain sometimes with a straight face',\n", - " 'just another hate case, you control your fate ace!',\n", - " 'long walks down the lonely road turned path paved',\n", - " 'bask in the cascade, grey clouds circle me',\n", - " 'tuned to the channel so their energy will work on me',\n", - " 'all in the cut like surgery and burnt to the third degree',\n", - " 'internally, avoid an away story',\n", - " '40 and slip of tongue, tryin to bring the poison noise',\n", - " \"step in the spot like i'm not that popular\",\n", - " \"eyes like binoculars, i'm so hip-hopular\",\n", - " 'been on the air since greg had a mac attack',\n", - " \"now they all crackerjack, that's a fact, smell me\",\n", - " \"how can you tell me what i haven't already heard\",\n", - " 'forty-three, 43rd, listen and observe',\n", - " 'first flew the coop when they tried to cage a rocking bird',\n", - " 'lookin for the truth in the booth when i serve',\n", - " 'never clip the wings if they seem a little out of touch',\n", - " \"let 'em fly free please, don't try to box 'em up\",\n", - " 'i open a lot cause i smash it with brute force',\n", - " 'flew over the roof, headed north on a crash course',\n", - " \"eagle eyes spot 'em all, groundhog peekin out\",\n", - " 'stickin out against the whack world while they freakin out',\n", - " \"wasn't 'sposed to go but i just didn't wanna wait\",\n", - " \"been had a ticket but the chattanooga's runnin late\",\n", - " 'hate never had a lover good as i been to her',\n", - " \"couldn't put an end to her, cause she got followers\",\n", - " 'whole flock of spitters and swallowers, wow',\n", - " \"intregrity didn't have a home 'til i gave him one\",\n", - " '{?} and diamonds, god said say no more',\n", - " 'find a piece of mind like a needle in the haystack',\n", - " 'grind on the real on the playback, ready for the at-tack',\n", - " 'seatack, cry me a riverboat',\n", - " \"if i don't fly back, still gotta give 'em hope\",\n", - " 'stand and delivery, first class rain or shine',\n", - " 'pain of mine in a pantomime glass chilled',\n", - " 'where was your genie when you needed her for real',\n", - " 'buildin my art from the parts that they overlooked',\n", - " 'fuse lit from the last match in the book',\n", - " 'stand in adrenaline, pumped through the resevoir',\n", - " \"plucked out the air cause he didn't sit duck\",\n", - " \"pretty as the peacock who can't even leave the ground\",\n", - " \"let the heart glide on, don't buy the muck\",\n", - " 'what?',\n", - " 'where my dogs at?',\n", - " 'where my dogs at?',\n", - " 'where my dogs at?',\n", - " 'where my dogs at?',\n", - " \"you can try but i do fight, just can't seem to do right\",\n", - " \"can't run with the big dogs, his jeans is too tight\",\n", - " \"i've been doing this for too long, plus dog is too strong\",\n", - " 'let you catch, fight me off the map with a new song',\n", - " 'man you know you wrong, trying that shit there',\n", - " 'yeah a nigga went there, all you do is sit there',\n", - " \"i've been rapping for 20 years and you 20 years old\",\n", - " 'x back on the block nigga, you lucky if you go gold',\n", - " \"there's a new sheriff in town, just been re-elected\",\n", - " \"you ain't gonna like it, but respect, nigga check it\",\n", - " \"i'mma get it in till the nigga wins with the dividends\",\n", - " \"we gon' walk these dogs 'til the bitter end\",\n", - " \"you like, oh it's him again, i knew that's how you felt\",\n", - " \"pussy, i knew that's how you smelt\",\n", - " 'but you cats still playing around with just beats',\n", - " \"talking about what you got, ain't air in the teeth\",\n", - " \"you can put on a vest, but i'mma still stop it\",\n", - " 'cause i got a chopper that sound like a helicopter',\n", - " \"and niggas really don't want me to pop the trunk\",\n", - " \"we gon' either chop or slump when i cock and dump\",\n", - " \"whether the glock or pump, cats ain't ready\",\n", - " 'half from here to here, lookin like spaghetti',\n", - " 'pull out the machete, hack off the limbs',\n", - " 'bag up the pieces, wipe off the timbs',\n", - " 'jump in the benz, five cars deep',\n", - " \"4 o'clock in the morning, riders still asleep\",\n", - " 'shut shit down whenever we hit town',\n", - " 'give a nigga pass! i lay my dick down',\n", - " 'you can, bring out the best or, bring out the worst',\n", - " \"you gon' bring out the worst, we gon' bring out the hearse\",\n", - " 'niggas play poker, i play poke-her',\n", - " 'hit her from ear to ear make her smile like the joker!',\n", - " 'yeah!',\n", - " 'put you motherfuckins titties in the air!',\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " 'get crunk in the streets, back it up like \"beep\"!',\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " 'get crunk in the streets, back it up like \"beep\"!',\n", - " 'oh yeah, i got my hurr did nicely',\n", - " 'high-top nikes, always in my white tee',\n", - " 'oh god, you know your girlfriend likes me',\n", - " \"i'll wax that ass, we go fast like lightning (yeah)\",\n", - " \"baby, i'ma break your back, girl\",\n", - " \"and after we have sex, you'll probably get attached, girl\",\n", - " \"pay me, i don't fuck for free\",\n", - " 'you know all of these scene bitches wanna fuck with me',\n", - " \"let's get crunk, baby girl! (go shake that thing)\",\n", - " 'get crunk, baby girl! (go shake that thing)',\n", - " 'get crunk, baby girl! (go shake that thing)',\n", - " \"put your booty in the air like it ain't no thing\",\n", - " \"let's get crunk, baby girl! (go shake that thing)\",\n", - " 'get crunk, baby girl! (go shake that thing)',\n", - " 'get crunk, baby girl! (go shake that thing)',\n", - " \"put your booty in the air like it ain't no thing\",\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " \"get crunk in the streets, back it up like 'beep'!\",\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " \"get crunk in the streets, back it up like 'beep'!\",\n", - " 'beats to make you skeet, making the ladies leak',\n", - " \"and legs be wobbling weak 'cause phat j's the freak of the week (oh yeah!)\",\n", - " 'orgasm spasm making her peak, making her cream',\n", - " 'leaving the scene addicted to what the dick did',\n", - " 'sick kid and it was fucking wicked',\n", - " 'take a smoke break to get lifted damn right, i hit it',\n", - " 'shortie been gifted by a veteran crunk kid',\n", - " 'shortie been gifted by a veteran crunk kid!',\n", - " \"let's get crunk, baby girl! (go shake that thing)\",\n", - " 'get crunk, baby girl! (go shake that thing)',\n", - " 'get crunk, baby girl! (go shake that thing)',\n", - " \"put your booty in the air like it ain't no thing\",\n", - " \"let's get crunk, baby girl! (go shake that thing)\",\n", - " 'get crunk, baby girl! (go shake that thing)',\n", - " 'get crunk, baby girl! (go shake that thing)',\n", - " \"put your booty in the air like it ain't no thing\",\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " \"get crunk in the streets, back it up like 'beep'!\",\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " 'get crunk, get crunk, get crunk! (skeet, skeet)',\n", - " 'get crunk! (skeet, skeet), get crunk! (skeet, skeet)',\n", - " \"get crunk in the streets, back it up like 'beep'!\",\n", - " \"(skeet, skeet) i'm all up your in your face, girl\",\n", - " 'now open your mouth and tell me how i taste, girl',\n", - " 'peaches and cream dripping down your waist, girl',\n", - " \"now give it to me, i don't like fake girls\",\n", - " \"she'll be my fuck affair!\",\n", - " 'skeet, skeet up in her hair!',\n", - " ...]},\n", - " 'rock': {'meta': {'train_data': ['ow, yeah',\n", - " 'wow',\n", - " 'ah yeah',\n", - " 'whoo',\n", - " 'empty pockets never stopped me from a-singing a blue streak, no',\n", - " \"and i don't think the devil's ever gonna give me back\",\n", - " \"i don't think so\",\n", - " \"and stayin' 'round here takes patience\",\n", - " \"it's like a full time occupation\",\n", - " \"i've become a diplomaniac\",\n", - " 'yes i did, baby',\n", - " 'hey mean old gal',\n", - " 'you know the crosstown bus just rolled',\n", - " \"yeah i'm the same old number\",\n", - " 'but we still got time to go, oh, sing it babe',\n", - " \"oh, i say mama, living ain't a luxury, no\",\n", - " \"oh, i say mama, and a lil' ain't enough for me\",\n", - " \"no it ain't, no it ain't, baby\",\n", - " \"yeah, i'm believing that you're needin' your relaxation, whoa\",\n", - " 'but honey, tell me can you tell that story twice?',\n", - " \"i don't think so, mama\",\n", - " \"'cause there's a function at the junction\",\n", - " 'think you better get it all ready girl',\n", - " 'see i was born without a silver spoon',\n", - " \"but i'm gonna make a stir, yes i am\",\n", - " 'was vaccinated with a phonograph needle one summer break, oh',\n", - " \"then i kissed her on her daddy's boat and shot across the lake\",\n", - " \"and i was singin', babe\",\n", - " \"oh, i say mama, living ain't a luxury, no\",\n", - " \"oh, i say mama, and a lil' ain't enough for me, no\",\n", - " \"oh, i say mama, living ain't a luxury, no oh\",\n", - " \"oh, i say mama, and a lil' ain't enough for me\",\n", - " \"no it ain't baby, no it ain't\",\n", - " \"mmm, said a little ain't enough, baby\",\n", - " 'baby, please',\n", - " \"little ain't enough, ow\",\n", - " 'heh, heh',\n", - " 'whoo',\n", - " 'was vaccinated with a phonograph needle one summer break',\n", - " \"same summer that i kissed her on her daddy's boat\",\n", - " 'and shot across the lake',\n", - " 'yeah',\n", - " \"oh, i say mama, say living ain't a luxury, oh\",\n", - " \"oh, i say mama, that's a lil' ain't enough for me, oh yeah\",\n", - " \"oh, i say mama, living ain't a luxury\",\n", - " \"(oh, i say mama) say, say a lil' ain't enough\",\n", - " \"a lil' ain't enough for me, oh\",\n", - " 'someone take me down to the river',\n", - " 'and leave no trail for which to return',\n", - " 'let the muddy water fill my lungs',\n", - " 'fill my lungs',\n", - " 'and leave no trail for which to return',\n", - " 'let the muddy water fill my lungs',\n", - " 'fill my lungs',\n", - " 'fill my lungs',\n", - " 'fill my lungs',\n", - " 'the invincibility of our youth has just given away',\n", - " '(and i hope it does)',\n", - " 'to the inevitability of our death, yeah',\n", - " 'the invincibility of our youth has just given away',\n", - " '(and i hope it does)',\n", - " 'to the inevitability of our death',\n", - " \"so don't raise your glass\",\n", - " \"don't raise your glass\",\n", - " \"don't raise your glass\",\n", - " 'redemption wears a red dress but carries a white flag',\n", - " \"i'll wear that red dress for you\",\n", - " 'the invincibility of our youth has just given away',\n", - " '(and i hope it does)',\n", - " 'to the inevitability of our death, of our death',\n", - " 'the invincibility of our youth has just given away',\n", - " '(and i hope it does)',\n", - " 'to the inevitability of our death',\n", - " \"so don't raise your glass\",\n", - " \"don't raise your glass\",\n", - " 'death is a living partner',\n", - " 'a consummate consummate one',\n", - " 'a consummate consummate one',\n", - " 'consummate consummate one',\n", - " 'consummate consummate one',\n", - " 'destined to face the ominous specter of death',\n", - " 'harvester of souls severs the tie that binds body and spirit',\n", - " 'punishment of the damned',\n", - " 'judged for their grievous suns',\n", - " 'culmination in a surge of fury',\n", - " 'unbaptized children drowned in the river styx',\n", - " 'punishment of the damned',\n", - " 'righteous indignation',\n", - " 'punishment of the damned',\n", - " 'righteous indignation',\n", - " 'punishment of the damned',\n", - " 'assessing damage done',\n", - " 'their bodies fused and worn',\n", - " 'inside they lay within',\n", - " 'a path of unforgiven sins',\n", - " 'blotting out the sky',\n", - " 'these fiends are forged from fire',\n", - " 'violence against the cross',\n", - " 'contain their devious lust',\n", - " 'their anger burns so hot',\n", - " 'full of mud and filth',\n", - " 'once pacified, tangled in the web of lies',\n", - " 'assessing damage done',\n", - " 'their bodies fused and worn',\n", - " 'inside they lay within',\n", - " 'a path of unforgiven sins',\n", - " 'destined to face the ominous specter of death',\n", - " 'harvester of souls severs the tie that binds body and spirit',\n", - " 'punishment of the damned',\n", - " 'punishment of the damned',\n", - " 'righteous indignation',\n", - " 'punishment of the damned',\n", - " 'righteous indignation',\n", - " 'punishment of the damned',\n", - " \"never thought i'd be at this moment\",\n", - " \"never thought i'd get a go\",\n", - " \"never thought i'd be standing here\",\n", - " 'with my boots next to yours on the floor',\n", - " 'fuck all those who ever doubt you',\n", - " 'fuck those who make you feel small',\n", - " 'spit on your shit record',\n", - " \"'cause to me you are nothing at all\",\n", - " \"you're the heartbeat kick of the bass drum\",\n", - " \"you're the power chord chorus hall\",\n", - " 'you take my place right up front',\n", - " \"oi! ellis , take 'em all\",\n", - " 'this is what angels sound like',\n", - " 'to my ears anyway',\n", - " 'look in my eyes',\n", - " 'grab my hand',\n", - " 'i just want this rhythm to stay',\n", - " \"and it's clear (right now)\",\n", - " 'made you feel (right now)',\n", - " 'in a fear (right now)',\n", - " \"and it's real (right now)\",\n", - " \"it's right now (right now)\",\n", - " \"it's right now (right now)\",\n", - " \"it's right now\",\n", - " \"never thought i'd be at this moment\",\n", - " \"never thought i'd get a go\",\n", - " \"never thought i'd be standing here\",\n", - " 'with my boots next to yours on the floor',\n", - " \"never thought i'd be at this moment\",\n", - " \"never thought i'd get a go!\",\n", - " \"never thought i'd be standing here\",\n", - " 'with my boots next to yours on the floor',\n", - " 'with my boots next to yours on the floor',\n", - " 'rise from the depths of hell',\n", - " \"destroying all that's good\",\n", - " 'crush christianity and let satan loose',\n", - " 'fake your ways',\n", - " 'and give us a sound',\n", - " 'and let us know the time in here',\n", - " 'in dark religion',\n", - " 'those who never sacrifice are killed',\n", - " 'the true believer',\n", - " 'when no one is alive',\n", - " 'the real freedom',\n", - " 'to let one die',\n", - " 'the path will lead me there',\n", - " 'the way from the darkness',\n", - " 'and there i will stay',\n", - " 'to fulfill my own dark life',\n", - " 'who completes the long lost journey',\n", - " 'will rule through history',\n", - " 'the one prophet depends on the walk',\n", - " 'with souls of death is near?',\n", - " 'the earth will be like a dungeon',\n", - " 'hell will rise through the sand',\n", - " 'my life with always protection',\n", - " 'as long as they hate you',\n", - " 'the true believer...',\n", - " 'the path will lead me there',\n", - " 'the way, the path to babylon',\n", - " 'and there i will stay',\n", - " 'to fulfill my own dark life',\n", - " 'i can walk the bed of nails',\n", - " \"i'm not the only one\",\n", - " 'but some, they cannot walk the jagged line',\n", - " 'callous, concentrating',\n", - " 'for nails are sharp as lies',\n", - " 'i run the jagged line',\n", - " 'from years and years of practice',\n", - " 'i know just how to stand',\n", - " 'alone with perfect balance, hand in hand',\n", - " 'prepared with boards and hammers',\n", - " 'and several bags of nails',\n", - " 'i could build a wall to lean on',\n", - " 'roof above my mind',\n", - " \"i can see you've got your own plans\",\n", - " \"please don't drive your nails into this heart of mine\",\n", - " 'i can walk the bed of nails',\n", - " 'grin and bear the pain',\n", - " 'but some, they cannot deal with all things',\n", - " 'always sacrificing',\n", - " 'for lies are sharp as nails',\n", - " 'and all the pain it brings',\n", - " 'sometimes i just pretend that all the lies are true',\n", - " 'and i know i might depend on you',\n", - " 'but if my concentration breaks',\n", - " \"i'm washed away with pain\",\n", - " 'and then my feet begin to bleed upon my only bed of nails',\n", - " \"and i'm stuck here in the middle of a sea of lies\",\n", - " 'inside my bed of nails',\n", - " 'from years and years of practice',\n", - " 'i know just how to stand',\n", - " 'alone with perfect balance, hand in hand',\n", - " 'prepared with boards and hammers',\n", - " 'and several bags of nails',\n", - " 'i could build a wall to lean on',\n", - " 'roof above my mind',\n", - " \"i can see you've got your own plans\",\n", - " \"please don't drive your nails into this heart of mine\",\n", - " 'i will not cease from mental fight',\n", - " 'nor shall my sword sleep at my side',\n", - " 'till we have built jerusalem',\n", - " 'jerusalem',\n", - " 'bring me my bow of burning gold!',\n", - " 'bring me my spear!',\n", - " 'bring me my chariot of fire!',\n", - " 'i will not cease from mental fight',\n", - " 'nor shall my sword sleep at my side',\n", - " 'till we have built jerusalem',\n", - " '...of fire',\n", - " 'i will not cease...',\n", - " '...sword sleep at my...',\n", - " 'till we have built jerusalem',\n", - " 'jerusalem',\n", - " '(verse)',\n", - " 'social potions',\n", - " 'we just keep knocking them back',\n", - " 'anxious feelings',\n", - " 'you know they grow in the gap',\n", - " 'laying dormant',\n", - " 'ready to make their attack',\n", - " \"between the suits and don'ts, dude and that\",\n", - " \"i'm not a suicide bomber\",\n", - " 'but the effects of this bomb could look like suicide',\n", - " 'i feel my courage getting stronger',\n", - " 'all expect for my ego (?)',\n", - " 'gotta make like a cauldron',\n", - " 'concoction of chemicals that alter your mind',\n", - " 'through the midst of a trip',\n", - " 'momentary enlightenment that is lost in the night',\n", - " '(chorus)',\n", - " 'social potions',\n", - " 'we need another',\n", - " 'social potion',\n", - " 'overdosing',\n", - " 'is not an option',\n", - " 'but keep on going',\n", - " 'gotta keep on going',\n", - " '(verse)',\n", - " 'just keep going and going',\n", - " 'three days on the trot',\n", - " \"and sometimes that ain't enough\",\n", - " 'galloping off into the distance',\n", - " \"what's the locals\",\n", - " 'who just sit there and watch',\n", - " 'new era of mind dislocation',\n", - " \"experimentation if you're ready or not\",\n", - " \"let's get my halo\",\n", - " 'no matter how hard i try',\n", - " 'it will never come off',\n", - " '(chorus)',\n", - " 'social potions',\n", - " 'we need another',\n", - " 'social potion',\n", - " 'overdosing',\n", - " 'is not an option',\n", - " 'but keep on going',\n", - " 'gotta keep on going',\n", - " '(bridge)',\n", - " \"we're getting older\",\n", - " 'but none the wiser',\n", - " \"we're getting older\",\n", - " 'but none the wiser',\n", - " \"we're getting older\",\n", - " 'but none the wiser (why?)',\n", - " \"we're getting older\",\n", - " 'but none the wiser (why)',\n", - " \"we're getting older\",\n", - " 'but none the wiser (why)',\n", - " \"we're getting older\",\n", - " 'but none the wiser (why)',\n", - " \"we're getting older\",\n", - " 'but none the wiser (why)',\n", - " \"we're getting older\",\n", - " 'but none the wiser (why)',\n", - " \"we're getting older\",\n", - " 'but none the wiser (why)',\n", - " \"we're getting older\",\n", - " 'but none the wiser (why)',\n", - " '(chorus)',\n", - " 'social potions',\n", - " 'we need another',\n", - " 'social potion',\n", - " 'overdosing',\n", - " 'is not an option',\n", - " 'but keep on going',\n", - " 'gotta keep on going',\n", - " 'there are no answers left',\n", - " 'only puzzles remain',\n", - " 'forcing themselves',\n", - " 'onto every page',\n", - " 'and if i fix this',\n", - " 'i can go home again',\n", - " 'and i will leave behind',\n", - " 'these questions that have carried me here',\n", - " 'i see the problem in this peeling wall',\n", - " 'for every crack hides a thousand more',\n", - " 'i want to break from the grip that',\n", - " 'my pen holds me in',\n", - " 'i want to work it out and leave now',\n", - " 'before i am ruined',\n", - " '(i swear they’ve poisoned my meals)',\n", - " 'i have never seen figures move like this',\n", - " 'an endless string of numbers that refuse to fit',\n", - " 'in the distance i hear them listening in',\n", - " 'they have to be sure that some problems aren’t solved',\n", - " 'for my own peace of mind lets not talk on this line',\n", - " 'i want to break from the grip',\n", - " 'that my pen holds me in',\n", - " 'i want to work it out and leave now',\n", - " 'before i am ruined',\n", - " '(they can’t make me swallow)',\n", - " 'i have never seen figures move like this',\n", - " 'an endless string of numbers that refuse to fit',\n", - " 'i swear they’ve poisoned my meals',\n", - " 'but they can’t make me swallow',\n", - " 'where there were once proofs there’s dust',\n", - " 'where there once was a person',\n", - " 'a machine talks',\n", - " 'a machine talks...',\n", - " 'i held my breath as time stood still',\n", - " 'just for you',\n", - " 'my eyes ran dry',\n", - " 'to my surprise',\n", - " 'just for you',\n", - " 'these promises that have been made',\n", - " 'just for you',\n", - " \"the world flies by but i'll take my time\",\n", - " \"it's all good\",\n", - " 'just for you, just for you',\n", - " \"you're the best mistake that i made\",\n", - " \"one that i won't take for granted\",\n", - " 'i watch you sleep',\n", - " 'my heart skips beat',\n", - " 'just for you',\n", - " \"i'm nervous still but i'll come through\",\n", - " 'just for you',\n", - " \"the world flies by but i'll take my time\",\n", - " \"it's all good\",\n", - " 'just for you, just for you',\n", - " \"you're the best mistake that i made\",\n", - " \"one that i won't waste\",\n", - " 'just for you, just for you',\n", - " \"you're the best mistake that i made\",\n", - " \"one that i won't take for granted\",\n", - " 'just for you, just for you',\n", - " \"you're the best mistake that i made\",\n", - " \"one that i won't take for granted\",\n", - " \"you're the best mistake that i made (x8)\",\n", - " 'cut down by your knife',\n", - " 'i found a garden after life',\n", - " 'cut down by your knife',\n", - " 'i found a garden',\n", - " 'cut down by your knife',\n", - " 'i found a garden after life',\n", - " 'it’s not enough for me',\n", - " 'it’s not enough for me to die',\n", - " 'don’t look back, it’s alright',\n", - " 'coming up roses, yeah',\n", - " 'take my hand, you’ll be fine',\n", - " 'coming up roses',\n", - " 'don’t look back, sweet darlin’',\n", - " 'chasing down doses, yeah',\n", - " 'shadows fall on yesterday',\n", - " 'coming up roses',\n", - " 'cut down by your knife',\n", - " 'i found a god by your bedside',\n", - " 'kept my eyes on the divine',\n", - " 'got a better place to hide',\n", - " 'we’ll fly on wings of precious things',\n", - " 'that shine like diamond rings',\n", - " 'i can’t find my peace',\n", - " 'can’t wake from dreams',\n", - " 'don’t look back, it’s alright',\n", - " 'coming up roses, yeah',\n", - " 'take my hand, you’ll be fine',\n", - " 'coming up roses',\n", - " 'don’t look back, sweet darlin’',\n", - " 'chasing down doses, yeah',\n", - " 'shadows fall on yesterday',\n", - " 'coming up roses',\n", - " 'don’t look back, it’s alright',\n", - " 'coming up roses, yeah',\n", - " 'take my hand, you’ll be fine',\n", - " 'everybody’s broken',\n", - " 'don’t look back, sweet darlin’',\n", - " 'felling psychosis, yeah',\n", - " 'shadows fall',\n", - " 'coming up roses',\n", - " 'cut down by your knife',\n", - " 'i found a garden after life',\n", - " 'cut down by your knife',\n", - " 'i found a garden',\n", - " 'everyone lying around me',\n", - " 'heads around, my feet leaving their bodies',\n", - " 'fast asleep',\n", - " 'search hard and you might find me',\n", - " \"we're there when we're needed\",\n", - " \"i'm so far gone it won't be easy\",\n", - " \"i'm breaking inside\",\n", - " 'a centralwing surrounded by the sea',\n", - " 'shrivelling in the heat, there for all to see',\n", - " 'fast asleep',\n", - " 'search hard and you might find me',\n", - " \"we're there when we're needed\",\n", - " \"i'm so far gone it won't be easy\",\n", - " \"i'm breaking inside\",\n", - " \"it's getting\",\n", - " \"it's getting old\",\n", - " 'pour some colour into this hole',\n", - " 'search hard and you might find me',\n", - " \"we're there when we're needed\",\n", - " \"i'm so far gone it won't be easy\",\n", - " \"i'm breaking inside\",\n", - " 'whoa, yeah, yeah, yeah, yeah, yeah',\n", - " 'yeah, yeah',\n", - " \"honey, i can tell what you're lookin' for\",\n", - " \"but can't you see it's getting late?\",\n", - " 'if you want, we could go to my place',\n", - " \"where we could rock 'n roll all night\",\n", - " \"you say you're looking for material things\",\n", - " \"don't you know what you're missin'?\",\n", - " \"i don't have money, but believe me, babe\",\n", - " \"i could make millions with my kissin'\",\n", - " \"hey, babe, i'll never give you diamonds\",\n", - " \"i'll never take you out\",\n", - " 'hey, babe, i sure know how to please you',\n", - " \"i'll make you scream and shout\",\n", - " 'i never had a home (never had a home)',\n", - " 'always out of money (always out of money)',\n", - " 'never had a car',\n", - " \"but i've got atomic sex\",\n", - " 'i never had a home (never had a home)',\n", - " 'always out of money (always out of money)',\n", - " 'never had a car',\n", - " \"but i've got atomic sex appeal\",\n", - " 'goddamn, looking good tonight',\n", - " \"because you're wearing next to nothin'\",\n", - " \"i don't know how to handle myself\",\n", - " \"'cause my attraction keeps on growin'\",\n", - " 'come on, baby, feel that bulge',\n", - " 'you call love and make me shiver',\n", - " 'oh, honey, forget about the money',\n", - " 'what i got goes so much deeper',\n", - " 'hey, babe, i might not have a million dollars',\n", - " \"don't have the cash to pay your bills\",\n", - " \"but hey, babe, i got one thing that you'll die for\",\n", - " \"i'll show you just how good it feels\",\n", - " 'i never had a home (never had a home)',\n", - " 'always out of money (always out of money)',\n", - " 'never had a car',\n", - " \"but i've got atomic sex\",\n", - " 'i never had a home (never had a home)',\n", - " 'always out of money (always out of money)',\n", - " 'never had a car',\n", - " \"but i've got atomic sex appeal\",\n", - " 'all right',\n", - " 'do it',\n", - " 'do it now',\n", - " 'i never had a home (never had a home)',\n", - " 'always out of money (always out of money)',\n", - " 'never had a car',\n", - " \"but i've got atomic sex\",\n", - " 'i never had a home (never had a home)',\n", - " 'always out of money (always out of money)',\n", - " 'never had a car',\n", - " \"but i've got atomic sex\",\n", - " 'i never had a home (never had a home)',\n", - " 'always out of money (always out of money)',\n", - " 'never had a car',\n", - " 'i never had a home (never had a home)',\n", - " 'always out of money (always out of money)',\n", - " 'never had a car',\n", - " \"but i've got atomic sex appeal\",\n", - " 'mercury is rising still',\n", - " 'turn the fan on high',\n", - " \"i won't step on my own shadow\",\n", - " 'no-one wants to cry',\n", - " 'someone put a pox on me',\n", - " \"i'll spit in their eyes\",\n", - " 'summer turns to high',\n", - " 'with my bedsheet cape and sandals',\n", - " 'circle citronella candles',\n", - " \"summer's here the light is raising hopes and dragonflies\",\n", - " 'if those hopes are overshadowed by cotton-candy, caramel-apple',\n", - " 'summer turns to high',\n", - " 'summer turns to high',\n", - " 'summer turns to high',\n", - " 'summer high',\n", - " 'after wine and nectarines the fireflies in time',\n", - " 'move like syrup through the evening with a sweet resign',\n", - " \"i won't pine for what could have been\",\n", - " \"i'm preoccupied\",\n", - " 'summer turns to high',\n", - " 'summer turns to high',\n", - " 'summer turns to high',\n", - " 'summer high',\n", - " 'spare the bullshit of your saviors love for me, take thy words and indulge in his misery',\n", - " \"finding out that you're just a lamb of rot, no one cares in this world of god forgot\",\n", - " 'his belief in us long been said and gone, in our age where there is no fear of god',\n", - " 'i forsake you and i hate you holy one give us life just to take it when were done',\n", - " 'behead you with the bible, the book of god and failing son',\n", - " 'there is no resurrection for god has left us to satan',\n", - " 'reach out in desperation receive his empty words of love',\n", - " 'revel in mans creation; the light of god has turned to shit',\n", - " \"mad at god for the things he's done to me, for this life of regrets and his agony\",\n", - " 'in his name i do blame and wish his death, all my life has been pain and nothing else',\n", - " 'curse you god for the life you left me with, everyday is a fight to want to live',\n", - " 'cross of christ i despise and hate the lord, mad at god for the world he has ignored',\n", - " 'my life is not religion, salvation or his bastard son',\n", - " 'annihilate the bible; remove it from this world at once',\n", - " 'in total desecration, the house of god has been destroyed',\n", - " 'at last the truth will triumph, free will and blasphamation',\n", - " 'i hate you lord, forgot i exist, resent your ways that will not be forgived',\n", - " 'waller in hatred i blame you for all, slashing and stabbing your christians i maul',\n", - " 'mad at god revenge in my heart wanting you dead will never depart',\n", - " 'when i was born, marked with your cross, only to suffer and deal with my loss',\n", - " 'dead in my thoughts prey to myself, not to show mercy for nobody else',\n", - " 'i am for me, need not from god, my heart is stone and will never be loved',\n", - " 'mad at god and mad at you, believing in something that cannot be true',\n", - " 'think for yourself, free from his lies, trample the cross and smash jesus christ',\n", - " 'die!!!!!!!!!!!',\n", - " 'mad at god!!!!! mad at god!!!!!mad at god!!!!!!mad at god!!!!!!',\n", - " 'my life is not religion, salvation or his bastard son',\n", - " 'annihilate the bible; remove it from this worldat once',\n", - " 'in total desecration, the house of god has been destroyed',\n", - " 'at last the truth will triumphed, free will and blasphamation one',\n", - " 'oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi',\n", - " 'see me ride out of the sunset',\n", - " 'on your colored tv screen',\n", - " 'out for all that i can get',\n", - " 'if you know what i mean',\n", - " 'women to the left of me',\n", - " 'women to the right',\n", - " \"ain't got no gun\",\n", - " 'got no knife',\n", - " \"don't you start no fight\",\n", - " \"cos i'm\",\n", - " 't.n.t',\n", - " \"i'm dynamite\",\n", - " 't.n.t',\n", - " \"and i'll win the fight\",\n", - " 't.n.t',\n", - " \"i'm a power-load\",\n", - " 't.n.t',\n", - " 'watch me explode',\n", - " \"i'm dirty, mean and mighty unclean\",\n", - " \"i'm a wanted man\",\n", - " 'public enemy number one',\n", - " 'understand',\n", - " 'so lock up your daughter',\n", - " 'and lock up your wife',\n", - " 'lock up your back door',\n", - " 'and run for your life',\n", - " 'the man is back in town',\n", - " \"so don't you mess with around\",\n", - " 't.n.t. oi oi oi',\n", - " 't.n.t. oi oi oi',\n", - " 't.n.t. oi oi oi',\n", - " 't.n.t. oi oi oi',\n", - " 't.n.t',\n", - " \"i'm dynamite (oi oi oi)\",\n", - " 't.n.t',\n", - " \"and i'll win the fight (oi oi oi)\",\n", - " 't.n.t',\n", - " \"i'm a power-load (oi oi oi)\",\n", - " 't.n.t',\n", - " 'watch me explode',\n", - " 'who is it you want to be?',\n", - " 'where is it you need to be?',\n", - " 'you are not here, i’m alone',\n", - " 'you know that you left',\n", - " 'it’s really sad',\n", - " 'you know it was wrong',\n", - " 'at least admit that',\n", - " 'i simply can’t stop questioning',\n", - " 'why you left here oh, so suddenly',\n", - " 'but who am i to question things?',\n", - " 'you say i’m merely a boy',\n", - " 'i say you’re half a man',\n", - " 'you’re not a man',\n", - " 'you know i am',\n", - " 'you are not here, i’m alone',\n", - " 'you know that you left',\n", - " 'it’s really sad',\n", - " 'you know it was wrong',\n", - " 'at least admit that',\n", - " 'you are not me, i’m not you',\n", - " 'not everything faced can be changed',\n", - " 'but nothing can change until you face this',\n", - " 'wait',\n", - " 'don’t turn away',\n", - " 'just stay',\n", - " 'stay',\n", - " 'wait',\n", - " 'don’t turn away',\n", - " 'why can’t you stay?',\n", - " 'stay',\n", - " 'why does it pain you to stay?',\n", - " 'why does it pain you to stay?',\n", - " 'you are not here, i’m alone',\n", - " 'you know that you left',\n", - " 'it’s really sad',\n", - " 'you know it was wrong',\n", - " 'at least admit that',\n", - " 'you are not me, i’m not you',\n", - " 'not everything faced can be changed',\n", - " 'but nothing can change until it’s faced',\n", - " 'the spark in your eye sets my, soul on fire',\n", - " 'your voice is like a angel above',\n", - " 'the touch of your hand woman drives me insane',\n", - " 'but baby, i wants to be loved',\n", - " \"i'm crazy about every little, thing you do\",\n", - " 'i even cherish your hug',\n", - " \"your kisses so sweet, honey, they can't be beat\",\n", - " 'but baby i wants to be loved',\n", - " 'well, well, well',\n", - " 'every time i ask you for a date',\n", - " \"you don't come at all or you awful late\",\n", - " 'i ask you to dance a little spin',\n", - " 'you said wait a minute daddy, here come my friend',\n", - " 'i love the way you walk when you pass me by',\n", - " 'even when you trying to snub',\n", - " 'the touch of your hand, honey, drives me insane',\n", - " 'but baby i wants to be loved',\n", - " 'yeah',\n", - " 'yeah',\n", - " 'calm down, c-c-calm down',\n", - " 'some dippers in the sky, acacias in the ground',\n", - " 'love loud, l-l-love loud',\n", - " 'all the bad blood bleed out, bleed out, bleed out',\n", - " \"we're spinning 'round and 'round\",\n", - " \"around and 'round, 'round and 'round\",\n", - " 'around the sun we go, getting too close',\n", - " \"i hope we don't spin out of control\",\n", - " 'peace signs',\n", - " \"we're throwing at the dark times\",\n", - " 'peace signs',\n", - " 'to counteract the bad vibes',\n", - " 'ever gaze deep into my neon psyche?',\n", - " 'yellow and black a certain fuchsia kind of lime green',\n", - " 'the push the pull and just how quick the change',\n", - " 'from a two finger symbol to one',\n", - " \"we're spinning 'round and 'round\",\n", - " \"around and 'round, 'round and 'round\",\n", - " 'around the sun we go, getting too close',\n", - " \"i hope we don't spin out of control\",\n", - " 'peace signs',\n", - " \"we're throwing at the dark times\",\n", - " 'peace signs',\n", - " 'to counteract the bad vibes',\n", - " 'peace signs',\n", - " \"we're throwing as we pass by\",\n", - " 'peace signs',\n", - " 'live in the back of my mind',\n", - " 'sound waves',\n", - " 'scent of rain',\n", - " 'the feeling that it makes, light cutting the grey',\n", - " 'a melt your heart melancholy melody, yeah',\n", - " 'peace signs',\n", - " \"we're throwing at the dark times\",\n", - " 'peace signs',\n", - " 'to counteract the bad vibes',\n", - " 'peace signs',\n", - " \"we're throwing as we pass by\",\n", - " 'peace signs',\n", - " 'live in the back of my mind',\n", - " 'peace signs',\n", - " \"it's a white door, that's never locked\",\n", - " \"so i'm never stuck outside\",\n", - " 'we came in after msoe jocks',\n", - " \"it's a hardwood floor that used to look nice\",\n", - " 'we left our lives on newhall and locust',\n", - " 'we moved out just to be more productive',\n", - " \"but that's the thing cuz now there's spray paint on the wall\",\n", - " 'and beer on the ceiling',\n", - " 'i graduated from the green line',\n", - " 'i take the 15 now at least most of the time',\n", - " \"this is just where i'm at\",\n", - " 'i spent the whole year in transit',\n", - " 'so with the new year',\n", - " \"i'll find the right track\",\n", - " \"i'll shed the bad parts\",\n", - " \"it wasn't always like that\",\n", - " \"i need to get a better grip on where i'm going\",\n", - " \"cuz it's a brave new world on holton\",\n", - " \"i'll get the dishes done\",\n", - " 'find some time to run',\n", - " 'anything to get me out of this rut',\n", - " 'cuz when the snow melts',\n", - " \"there's gonna be a ton of cigarette butts to clean up\",\n", - " 'i graduated from the green line',\n", - " 'i spend days in the van',\n", - " 'but not enough of the time',\n", - " \"this is just where i'm at\",\n", - " \"i'll spend this whole year in traffic\",\n", - " \"i'm on this seven hour driving shift\",\n", - " \"i'll pump the brakes on the way i live\",\n", - " \"cuz i'm afraid that if i don't work hard now\",\n", - " \"i'll never figure it out\",\n", - " 'no',\n", - " 'so here i am in tennessee traffic',\n", - " 'i traded up from the milwaukee transit',\n", - " 'i finally feel like i’m where i’m supposed to be',\n", - " 'i travelled with him in uncontrolled dimensions',\n", - " 'i knew the forbidden plateau of length',\n", - " 'kuntath the freezing desert',\n", - " 'beyond the gate of silver key',\n", - " 'i arrived to kythal near to arcturo',\n", - " 'up to mnar and the lake of hall',\n", - " 'up to ky-yian and the mythical karkassa',\n", - " \"up to yantith and y'xa-nulei\",\n", - " 'near to insmuth',\n", - " 'inside the eye of algond',\n", - " 'i saw from distance',\n", - " 'down the zodiac',\n", - " 'inside the secret eye',\n", - " 'the star of famelot',\n", - " 'touch the top of down of tree',\n", - " \"it's late and the tv is glowing\",\n", - " \"you're watching without even knowing\",\n", - " 'those people are having good feelings',\n", - " 'those colors all look so appealing',\n", - " 'wishing the places were traded, after the picture is faded',\n", - " 'you like to watch beavis and butt-head',\n", - " \"it seems there's just never enough said\",\n", - " \"you're staying inside, and you're basking in the light\",\n", - " \"there's dust everywhere, irridescent in your hair\",\n", - " 'wishing the places were traded, after the picture is faded',\n", - " 'and if the tv is busted, can anyone else be trusted?',\n", - " 'of all these memories, which one of them is yours?',\n", - " \"and is it them or me? wonder you're not sure\",\n", - " \"you'd like to go out, but they say it's freaky out\",\n", - " \"you've been everywhere, and you've never left your chair\",\n", - " 'wishing the places were traded, after the picture is faded',\n", - " 'and if the tv were busted, can anyone else be trusted?',\n", - " 'i went to an all-night party',\n", - " 'i stayed out half past 5',\n", - " \"don’t know why i ain't sleepin’\",\n", - " 'i stay blue all the time',\n", - " 'when i’m happy, when i’m laughin’',\n", - " 'even when gotta worried mind',\n", - " 'even when i’m with my baby',\n", - " 'i stay blue all the time',\n", - " 'left my home late september',\n", - " 'be somewhere never been before',\n", - " 'i know i got to go farther',\n", - " 'cuz i stay blue everywhere i go',\n", - " 'i may be used and mistreated',\n", - " 'someday i’ll have my time',\n", - " 'i’ve always had this feeling',\n", - " 'i stay blue all the time',\n", - " 'the hall was dark',\n", - " 'no one would ever know',\n", - " 'late afternoon, the plot unwinds',\n", - " 'the trigger pulled, another life let go',\n", - " 'the victim just a boy of nine',\n", - " 'children close the door and hide away',\n", - " 'building the walls that hide away the pain',\n", - " 'when their tears are dried',\n", - " \"it's cold outside\",\n", - " \"there's a place she goes\",\n", - " 'to pull her trick for a spot of wine',\n", - " \"and for a price she'll keep him warm\",\n", - " \"she knows she'll have to show his friends\",\n", - " 'a real good time',\n", - " 'children close the door and hide away',\n", - " 'building the walls that hide away the pain',\n", - " 'when their tears are dried',\n", - " 'can you tell me will they survive?',\n", - " '(our future is so unclear)',\n", - " 'all in our lives',\n", - " \"(where do we stand when there's no peace at hand?)\",\n", - " 'can you tell me will they survive?',\n", - " '(all of this in our lives)',\n", - " 'all in our lives',\n", - " 'there is a light around you',\n", - " 'it is your life',\n", - " \"i feel empty and alone. i’ve been floating for so long. i’ve never fought against the wind that has brought me down. i am stagnant in hell. i have no reason to live. except for what i am writing down, what i’m yelling out. i ended up being lost in vain. all the efforts i have put to feel better with myself have given nothing. how can i pretend to be someone when i'm seeking for approval? i tried to stand up, i tried my hardest but i may not be good enough to carry on. i know that i must find the strength in myself to stop trying to please everyone. what matters to me will never expire. i’ll quit being passive and meaningless. i have been floating for so long. i've become weakness. i'm lost after all those years. i'm just a lost potential. i am dying to change this fucking miserable situation i’m in beginning with opening my eyes and stop acting like everything’s fine. i know that i must find the strength in myself to stop trying to please and be accepted by everyone surrounding me. i have always been i will ever be. i’m just a lost potential. this shell is broken. please show me how to completely disappear please do me a favour and never ask me how i feel again. watch me fade away. i have always been i will ever be. i have become weakness, i’m lost after all those years. what matters to me will never expire, but i’m just a lost potential\",\n", - " 'books and covers and part time lovers',\n", - " 'spinning in rooms in cities of rust',\n", - " \"i'm stranded, struck out on this line\",\n", - " \"there's smoke and fire and steel and wire\",\n", - " 'and glass and spire and dust',\n", - " 'one to the floor at dawn with lips tied and drawn',\n", - " 'sleepless nights spent, with angels heaven sent',\n", - " 'stay with me, lay with me, lay down by my side',\n", - " 'stay with me, lay with me, take me deep inside',\n", - " 'lay with me, stay with me, lay with me',\n", - " 'stay, with me',\n", - " 'stay, with me',\n", - " 'all of us lying there in the dreams',\n", - " 'speak of days and another place',\n", - " 'i wander as the gypsy under a beckoning moon',\n", - " 'speak of time, and another face',\n", - " 'they would in languid cry a fleeting furtive sigh',\n", - " 'from the cradle to the grave love to desire and crave',\n", - " 'stay with me, lay with me, lay down by my side',\n", - " 'stay with me, lay with me, take me deep inside',\n", - " 'lay with me, stay with me, lay with me',\n", - " 'stay, with me',\n", - " 'stay, with me',\n", - " \"i'll laugh for you, and i'll dance for you\",\n", - " \"but don't ask me to she'd any tears when i have to go\",\n", - " 'you are a joy and a pleasure to love and to hold',\n", - " 'your promises, are as pure as the driven snow',\n", - " 'passing shapes in the night the touch distraut and light',\n", - " 'as you brightly shine, your love tonight is mine',\n", - " 'stay with me, lay with me, lay down by my side',\n", - " 'stay with me, lay with me, take me deep inside',\n", - " 'lay with me, stay with me, lay with me',\n", - " 'stay, with me',\n", - " 'stay, with me',\n", - " 'when we make up, in your makeup',\n", - " \"i start to laugh, i'm mr. natural\",\n", - " 'i fluff your tv at night',\n", - " 'you got a hard, hard bed',\n", - " 'i say their names, say their names',\n", - " 'waste the alphabet',\n", - " '9 to 5, look in the mirror',\n", - " 'i can see china from here',\n", - " 'i say their names, say their names',\n", - " 'and they disappear',\n", - " 'oh natalie, we sparkle',\n", - " 'but you want to take it gradually',\n", - " \"i've been thinking about the way to hell\",\n", - " 'and this carpet under me',\n", - " 'and this remote under me',\n", - " 'oh natalie, we party',\n", - " 'and try, try, try gradually',\n", - " \"i've been thinking about my way to hell\",\n", - " 'and this remote under me',\n", - " 'and this lipstick under me',\n", - " \"you're keeping in step\",\n", - " 'in the line',\n", - " 'got your chin held high and you feel just fine',\n", - " 'cause you do',\n", - " \"what you're told\",\n", - " \"but inside your heart it is black and it's hollow and it's cold\",\n", - " 'just how deep do you believe?',\n", - " 'will you bite the hand that feeds?',\n", - " 'will you chew until it bleeds?',\n", - " 'can you get up off your knees?',\n", - " 'are you brave enough to see?',\n", - " 'do you want to change it?',\n", - " \"what if this whole crusade's\",\n", - " 'a charade',\n", - " \"and behind it all there's a price to be paid\",\n", - " 'for the blood',\n", - " 'which we dine',\n", - " 'justified in the name of the holy and the divine',\n", - " 'just how deep do you believe?',\n", - " 'will you bite the hand that feeds?',\n", - " 'will you chew until it bleeds?',\n", - " 'can you get up off your knees?',\n", - " 'are you brave enough to see?',\n", - " 'do you wanna change it?',\n", - " 'so naïve',\n", - " 'i keep holding on to what i want to believe',\n", - " 'i can see',\n", - " 'but i keep holding on and on and on and on',\n", - " 'will you bite the hand that feeds you?',\n", - " 'will you stay down on your knees?',\n", - " 'will you bite the hand that feeds you?',\n", - " 'will you stay down on your knees?',\n", - " 'will you bite the hand that feeds you?',\n", - " 'will you stay down on your knees?',\n", - " 'will you bite the hand that feeds you?',\n", - " 'will you stay down on your knees?',\n", - " 'will you bite the hand that feeds you?',\n", - " 'will you stay down on your knees?',\n", - " 'will you bite the hand that feeds you?',\n", - " 'will you stay down on your knees?',\n", - " 'will you bite the hand that feeds you?',\n", - " 'will you stay down on your knees?',\n", - " 'will you bite the hand that feeds you?',\n", - " 'will you stay down on your knees?',\n", - " 'you can call it a decision',\n", - " \"i say it's how we're made\",\n", - " \"there's no point in shouting from your island\",\n", - " 'proclaiming only jesus saves',\n", - " 'there will always be suffering',\n", - " 'and there will always be pain',\n", - " \"but because of it there'll always be love\",\n", - " 'and love, we know, it will remain',\n", - " 'everybody gets lonely',\n", - " \"feel like it's all too much\",\n", - " 'reaching out for some connection',\n", - " 'or maybe just their own reflection',\n", - " 'not everybody finds it',\n", - " 'not like the two of us',\n", - " 'sometimes all anybody needs',\n", - " 'is a human touch',\n", - " 'everybody wants a holiday',\n", - " 'everybody wants to feel the sun',\n", - " 'get outside and run around',\n", - " \"live like they're forever young\",\n", - " 'everybody wants to be beautiful',\n", - " 'and live life their own way',\n", - " 'no one ever wants to let it go',\n", - " 'no matter what they do or say',\n", - " 'everybody gets lonely',\n", - " \"feel like it's all too much\",\n", - " 'reaching out for some connection',\n", - " 'or maybe just their own reflection',\n", - " 'not everybody finds it',\n", - " 'not like the two of us',\n", - " 'sometimes all anybody needs',\n", - " 'is a human touch',\n", - " 'sometimes all anybody needs',\n", - " 'is a human touch',\n", - " 'everybody gets lonely',\n", - " \"feel like it's all too much\",\n", - " 'reaching out for some connection',\n", - " 'or maybe just their own reflection',\n", - " 'not everybody finds it',\n", - " 'not like the two of us',\n", - " 'sometimes all anybody needs',\n", - " 'is a human touch',\n", - " 'sometimes all anybody needs',\n", - " 'is a human touch',\n", - " \"they've come to bring us gifts\",\n", - " \"they've come to make us whole\",\n", - " \"they've come to bring us god\",\n", - " 'their gift of heaven',\n", - " \"they've come to make us civil\",\n", - " 'their gifts as ransom',\n", - " 'their god comes with a cost',\n", - " 'we must give up all',\n", - " 'for prayers in a foreign tongue',\n", - " 'to a foreign throne',\n", - " 'erase our traditions',\n", - " 'erase our way of being',\n", - " \"erase our elders' teachings\",\n", - " 'erase, replace these ways',\n", - " 'generations of wisdom',\n", - " 'in exchange for ransom',\n", - " 'your god comes with a cost',\n", - " 'a cost to us all',\n", - " 'prayers in a foreign tongue to',\n", - " 'a god unknown',\n", - " 'from demons, you will never see',\n", - " 'prayers that will save your soul',\n", - " 'blessed are the children',\n", - " 'we have come to save them all',\n", - " 'we came to cure disease',\n", - " 'that has never made you ill',\n", - " 'we came to make you clean',\n", - " 'to protect you from yourself',\n", - " \"they've come to bring us hope\",\n", - " \"they've come to save our souls\",\n", - " \"they've come to make us holy\",\n", - " \"they've come to give us heaven\",\n", - " \"they've come to make us civil\",\n", - " 'just like them',\n", - " 'their god comes with a cost',\n", - " 'and we must give up',\n", - " 'all of our traditions',\n", - " 'erase our way of being',\n", - " \"erase our elders' teachings\",\n", - " 'erase, replace these ways',\n", - " 'generations of wisdom',\n", - " 'they have taken away',\n", - " 'our culture has been erased',\n", - " 'bring every child they blessed',\n", - " \"with the needle's mark\",\n", - " 'chop off every little arm',\n", - " 'let the children bleed',\n", - " 'the thickest smog withers beside me',\n", - " 'the naked flame that warms the face',\n", - " 'draw in the wildfire of the forest deep within',\n", - " 'tread carefully or lose your way',\n", - " \"you gotta' fight to keep the demon in\",\n", - " 'far too long taunting my soul',\n", - " 'forever stumble down the endless road',\n", - " 'struggling to regain control',\n", - " 'consume my soul',\n", - " 'turn my body to stone',\n", - " 'the blackened path was paved before me',\n", - " 'two crooked eyes follow me alone',\n", - " 'the sound of footsteps drawing ever closer',\n", - " 'pallid ghosts turn my body to stone',\n", - " \"you gotta' fight to keep the demon in\",\n", - " 'far too long taunting my soul',\n", - " 'forever stumble down the endless road',\n", - " 'struggling to regain control',\n", - " ...]},\n", - " 'data': ['the lengths i go to hide my smile',\n", - " 'more than just the color on her lips',\n", - " 'i give an inch then take a mile',\n", - " \"it's the distance of my favorite trip\",\n", - " 'why should i need to accommodate action?',\n", - " \"when it's never thought out, never old\",\n", - " 'i have my own agenda gaining traction',\n", - " 'one that might just strip me to the bone',\n", - " 'me, we, you, she',\n", - " 'sweet (sweet)',\n", - " 'me, we, you, she',\n", - " 'sweet (sweet)',\n", - " 'my teeth are sharp and armor bristling',\n", - " 'shaking loose, unwarranted concern',\n", - " 'i understand my questions, i am listening',\n", - " \"but it's time to set the world to burn\",\n", - " 'understand, my eyes are focused',\n", - " \"it's what i always planned to do\",\n", - " \"because for once i'm being honest\",\n", - " 'there is nothing left for me to prove',\n", - " 'me, we, you, she',\n", - " 'sweet (sweet)',\n", - " 'me, we, you, she',\n", - " 'sweet (sweet)',\n", - " 'me, we, you, she',\n", - " 'sweet (sweet)',\n", - " 'me, we, you, she',\n", - " 'sweet (sweet, sweet, sweet, sweet)',\n", - " 'time goes by as they feed the fire',\n", - " \"the future now shows us what's to come\",\n", - " 'vermin set in as they spawn the mire',\n", - " 'yet we anguish and more is done',\n", - " 'the infection continues to demoralize',\n", - " 'what is left will someday soon be nothing more',\n", - " 'our water and air slowly deteriorate',\n", - " 'just a mere shadow of what was there before',\n", - " \"we've been overcome\",\n", - " 'helping hand they wield a vice',\n", - " 'degrade our lives to iniquity',\n", - " 'these are taxes hard at work',\n", - " \"so why aren't they helping me?\",\n", - " 'the toxins destroy consume malevolance',\n", - " \"and the politicians still can't compromise\",\n", - " 'future youth are put forth in this vile world',\n", - " 'in our society we still are brutalized',\n", - " \"we've been overcome\",\n", - " 'contamination',\n", - " \"it's our future\",\n", - " 'abomination',\n", - " 'we must rise',\n", - " 'i feel your pain, being stuck in one place',\n", - " 'could never find the strength to move or take that leap of faith',\n", - " 'but i told you once, i’ll tell you twice, gotta play to roll the dice and i',\n", - " 'could show you everything (could show you everything)',\n", - " 'i just can’t tell if you’re dreaming or not',\n", - " 'this might sound crazy in thought',\n", - " 'so level the fear that’s in your heart',\n", - " 'untangle the words that keep us apart',\n", - " 'lemme take you away, away, away, away from here',\n", - " 'but if you could break away, sell your things and change your name',\n", - " \"you'll never leave this place, and take your chances to the grave\",\n", - " \"but if i had to choose, i'd take you to the moon\",\n", - " \"cause you've got cinder blocks for shoes, and i'm just trying to make you move\",\n", - " 'i just can’t tell if you’re dreaming or not',\n", - " 'this might sound crazy in thought',\n", - " 'so level the fear that’s in your heart',\n", - " 'untangle the words that keep us apart',\n", - " 'lemme take you away, away, away, away from here',\n", - " 'lemme take you away, away, away, away from here',\n", - " 'lemme take you away, away, away, away from here',\n", - " 'lemme take you away, away, away, away from here',\n", - " 'i just can’t tell if you’re dreaming or not',\n", - " 'this might sound crazy in thought',\n", - " 'so level the fear that’s in your heart',\n", - " 'untangle the words that keep us apart',\n", - " 'lemme take you away, away, away, away from here',\n", - " \"it's a terrible love and i'm walking with spiders\",\n", - " \"it's a terrible love and i'm walking in\",\n", - " \"it's a terrible love and i'm walking with spiders\",\n", - " \"it's a terrible love and i'm walking in\",\n", - " 'this quiet company',\n", - " 'this quiet company',\n", - " \"it's a terrible love and i'm walking with spiders\",\n", - " \"it's a terrible love and i'm walking in\",\n", - " \"it's a terrible love and i'm walking with spiders\",\n", - " \"it's a terrible love and i'm walking in\",\n", - " 'this quiet company',\n", - " 'this quiet company',\n", - " 'this quiet company',\n", - " \"and i can't fall asleep\",\n", - " 'without a little help',\n", - " 'it takes a while to settle down',\n", - " 'my shivered bones',\n", - " \"until the panic's out\",\n", - " 'it takes an ocean not to break',\n", - " 'it takes an ocean not to break',\n", - " 'it takes an ocean not to break',\n", - " 'it takes an ocean not to break',\n", - " 'company',\n", - " 'this quiet company',\n", - " 'this quiet company',\n", - " \"but i won't follow you\",\n", - " 'into the rabbit hole',\n", - " 'i said i would but then i saw',\n", - " 'your shivered bones',\n", - " \"they didn't want me to\",\n", - " \"it's a terrible love and i'm walking with spiders\",\n", - " \"it's a terrible love and i'm walking in\",\n", - " \"it's a terrible love and i'm walking with spiders\",\n", - " \"it's a terrible love and i'm walking in\",\n", - " 'it takes an ocean not to break',\n", - " 'it takes an ocean not to break',\n", - " 'it takes an ocean not to break',\n", - " 'hear me - the breath of ocean',\n", - " 'see me - the shape of grace',\n", - " \"touch me - but you can't find me\",\n", - " 'feel me - the cold of death',\n", - " 'like a shell on the bottom i lay and decay',\n", - " 'under shimmering stars of your heaven',\n", - " \"i've been waiting too long for this day and\",\n", - " 'i feel it has come to me now...',\n", - " 'if you pass away in the wing fortress',\n", - " 'the time divider, a technical team will be',\n", - " 'at your services, for what that matters',\n", - " \"the mirror shatters, it's harder for me to see\",\n", - " \"if there are any answers here we haven't searched for\",\n", - " 'just type in your code and say a prayer',\n", - " 'how could it be, we were so secure',\n", - " \"cause nothing you've ever planned on\",\n", - " 'ever turned out the way you planned',\n", - " \"what i tried to say this couldn't feel more wrong\",\n", - " \"i can't believe it's happening or lasting this long\",\n", - " 'if we know each other then why should it be so hard',\n", - " 'why should it be so hard to make it stop',\n", - " \"if there are any answers here we haven't searched for\",\n", - " 'just type in your code and say a prayer',\n", - " 'how could it be, we were so secure',\n", - " \"cause nothing you've ever planned on\",\n", - " 'ever turned out the way you planned',\n", - " \"what i tried to say, this isn't real\",\n", - " \"and i feel ashamed that i don't think that i could heal\",\n", - " \"it's a shame that i would pretend\",\n", - " 'before making amends',\n", - " \"it's a shame that i can't\",\n", - " 'but nothing you ever planned on ever turns out',\n", - " \"but nothing you've ever planned on\",\n", - " 'ever turned out the way you planned',\n", - " \"you're still disappointing them\",\n", - " \"you're still disappointing\",\n", - " \"you're still disappointing them\",\n", - " \"if there are any answers here we haven't searched for\",\n", - " 'just type in your code and say a prayer',\n", - " 'how could it be, we were so secure',\n", - " 'nothing you ever planned on ever turned out the way you planned',\n", - " 'you speak of violence and mindless hate',\n", - " 'well, i ask what constitutes our state?',\n", - " 'present to me another fucking way',\n", - " 'or unveil a lack of democracy',\n", - " 'if you take me down',\n", - " \"i won't hide my face\",\n", - " 'tell the whole world',\n", - " \"i'm a disgrace\",\n", - " \"i'm a disgrace\",\n", - " 'we will not be ignored',\n", - " \"we're not violent\",\n", - " 'you wage this war',\n", - " 'peaceful protest is dead',\n", - " 'what did you expect',\n", - " 'what did you',\n", - " 'what did you expect',\n", - " 'what did you expect',\n", - " 'what did you expect',\n", - " 'what did you expect',\n", - " 'y’all can’t let me be alone tonight',\n", - " 'i’m broken down and i’m not gonna be alright',\n", - " 'i need someone to lean on',\n", - " 'and something to glean from my strife',\n", - " 'remember back a few years ago?',\n", - " 'we would line ‘em up but we didn’t have nothin’ to show',\n", - " 'we passed the time',\n", - " 'we was sluggin’ wine or colt',\n", - " 'if you’ve fallen lonely on your cause',\n", - " 'i got the rank and the file here to even the odds',\n", - " 'if johnny’s at the door won’t ya let em in',\n", - " 'i rang him up but i don’t know where to begin',\n", - " 'we need a taste of the action',\n", - " 'we’re at 9th & jackson if you’re in',\n", - " 'the sinning night has set my soul on fire',\n", - " 'as long as we’re out we might as well drink a while',\n", - " 'am i losin’ or winning?',\n", - " 'i just keep on forgetting… meanwhile',\n", - " 'when i’m on the mend it makes the difference to lend',\n", - " 'the fist inside of the glove',\n", - " 'and no matter what they say they can’t take away',\n", - " 'the honesty of our love',\n", - " 'stare into a mirror facade, as you kneel to a porcelain god',\n", - " 'wipe your ass with material things, hell is what everlife will bring',\n", - " 'i will stand on heaven\\'s shore, and hold a sign saying \"fuck the world!\"',\n", - " \"we're all sinners, so they say\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " \"we're all sinners so let us pray\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " 'fill your mouth with my sick hope, as it grows you love to choke',\n", - " 'tears of lust, like pearls will fall, slut, slut, slut, slut, slut, after all',\n", - " 'dress your pigs in robes of black, the pigs just wails when you turn your back',\n", - " \"we're all sinners, so they say\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " \"we're all sinners so let us pray\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " \"we're all sinners on all saint's day\",\n", - " 'let them pray, let them praise, while we hate, while we rage yeah',\n", - " 'read my mind, by the look of my face',\n", - " 'cut out your soul just to spite your faith',\n", - " '(despite your faith, despite your faith)',\n", - " \"you're sick sick sick, 6, 6, 6\",\n", - " \"we're all sinners on all saint's day, we're all sinners now\",\n", - " \"we're all sinners, so they say\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " \"we're all sinners so let us pray\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " \"(we're all sinners on all saint's day)\",\n", - " \"we're all sinners on all saint's day\",\n", - " \"we're all sinners on all saint's day\",\n", - " \"we're all sinners on all saint's day\",\n", - " \"we're all sinners on all saint's day\",\n", - " \"we're all sinners on all saint's day\",\n", - " \"we're all sinners now\",\n", - " 'open up your eyes',\n", - " 'see how life time flies',\n", - " 'open up and let the light back in',\n", - " 'open up your heart',\n", - " 'let the loving start',\n", - " 'open up and let the light back in',\n", - " 'i was thinking of you and me',\n", - " 'making love beneath the tree',\n", - " 'and now i wonder could it be',\n", - " \"thinking 'bout the times we had\",\n", - " 'some were good and some were bad',\n", - " 'guitar fighting the t.v',\n", - " 'i was thinking about you and me',\n", - " 'i was thinking about you and me',\n", - " 'i was thinking of you and me',\n", - " 'i was thinking about you and me',\n", - " 'looking at you just the other night',\n", - " 'dancing in the evening light',\n", - " 'true love conquers all',\n", - " 'old man sitting there',\n", - " \"touch of grey, but he don't care\",\n", - " 'when he hears his children call',\n", - " 'i was thinking about you and me',\n", - " 'i was thinking about you and me',\n", - " 'i was thinking of you and me',\n", - " 'i was thinking about you and me',\n", - " 'open up your eyes',\n", - " 'see how life time flies',\n", - " 'open up and let the light back in',\n", - " 'open up your heart',\n", - " 'let the loving start',\n", - " 'open up and let the light back in',\n", - " \"it's the spring of your time\",\n", - " 'and the time has come',\n", - " 'the open road will seize you',\n", - " \"won't you roll to a stop\",\n", - " \"won't you gaze at the drop\",\n", - " 'and the awful miles before you?',\n", - " 'take care where you step',\n", - " \"don't you know that it stifled\",\n", - " 'the life above you strangle',\n", - " 'stay right if you can',\n", - " 'oh, you poor old man',\n", - " 'you were born to be in battle',\n", - " \"in the summer you'll find\",\n", - " 'that you rolled us aside',\n", - " 'a tangled man-made thicket',\n", - " \"take care you don't lean\",\n", - " 'with your toes in a string',\n", - " 'that sweeps away the river',\n", - " 'survey all you see',\n", - " \"'cause there's still time to leave\",\n", - " 'the prior hand of ramble',\n", - " 'stay right if you can',\n", - " 'oh, you poor old man',\n", - " 'you were born to be in battle',\n", - " 'in the fall of your time',\n", - " \"you're astounded to find\",\n", - " 'so much is now behind you',\n", - " 'with tears of your own',\n", - " \"you'll be scared 'fore you know\",\n", - " 'just walk the dark and',\n", - " 'tell them what i told you',\n", - " 'in days of your youth',\n", - " \"what's well within the travel\",\n", - " 'stay right if you can',\n", - " 'oh, you poor old man',\n", - " 'you were born to be in battle',\n", - " 'in the winter of life',\n", - " \"you'll be asked for your life\",\n", - " 'lay down, all forts surrender',\n", - " 'and all that is you',\n", - " 'that is precious and true',\n", - " \"as your full price, you'll tender\",\n", - " 'and i will look on',\n", - " 'but i long for you, son',\n", - " \"don't\",\n", - " 'stay right if you can',\n", - " 'oh, you poor old man',\n", - " 'you were born to be in battle',\n", - " 'butcher bows',\n", - " 'sparse trails of haunted conquests',\n", - " 'through gales of spotless sunsets boon',\n", - " \"o' gentlemen who suffer bright\",\n", - " \"it's so here we divvy up the blight\",\n", - " 'to speak while irons spark',\n", - " 'mark maids, my spoils are given rot',\n", - " 'take me as i am',\n", - " 'take me as i am',\n", - " 'take me as i am',\n", - " 'fearing aught',\n", - " 'upswept to unlaced bodice',\n", - " 'to furies, i gave notice sight',\n", - " 'filled dragoons full of graves',\n", - " \"with pretty-8's we cried out of grace\",\n", - " 'till past was all but kept',\n", - " \"'tis strange, the felled and their effects\",\n", - " 'given blood, yet nothing of the best',\n", - " 'mistook the misdeeds of the blessed',\n", - " 'take me as i am',\n", - " 'take me as i am',\n", - " 'take me as i am',\n", - " \"through these city streets you've been wandering\",\n", - " 'last man to be alive',\n", - " \"with a prophet's state of mind\",\n", - " 'and your hands are on fire',\n", - " 'a million faces waste in the dark slow',\n", - " 'chasing stars but you',\n", - " \"you'll be out this place\",\n", - " 'you believers sleep a lonely night',\n", - " 'no banners, just an insight',\n", - " 'you walk around with no eye for the common',\n", - " 'you feel correct to the alleys you watch',\n", - " 'arrested in their ways with no case to complain',\n", - " \"but did you know you're just another number waiting in assembly?\",\n", - " \"through the summertime you've been weathering\",\n", - " 'the questions that arise',\n", - " 'but you turn your head',\n", - " 'instead of facing the fire',\n", - " 'no surprise that the others arent listening',\n", - " 'your screams echo in the quiet',\n", - " 'must get out this place',\n", - " 'for believers sleep a lonely night',\n", - " 'you run for a forest',\n", - " 'where nothing, nobody to despair',\n", - " \"your opinions they're gunning\",\n", - " \"the bullets pierce the armor of skin you've thickened\",\n", - " 'your face explodes with the rage of a hundred',\n", - " 'for these men will never know the meaning behind your living',\n", - " \"you know they've thrown their pride\",\n", - " 'and hide behind opinions',\n", - " \"but did you know you're just another number waiting to be called in assembly?\",\n", - " 'when i was a boy my momma used to say',\n", - " 'son don’t you ever let em see you run away',\n", - " 'well i tried to obey the words she said that day',\n", - " 'but now i’m rotten and i just can’t get away',\n", - " 'my father drifted away, my mother’s dead and gone',\n", - " 'my sister died of shame, my brother never came home',\n", - " 'i hear the voice of an angel singing my last song',\n", - " 'lord i never thought i would live this long',\n", - " 'i never thought i would live this long',\n", - " 'and i never thought i’d be this strong',\n", - " 'i been running so long i can’t run no more',\n", - " 'lord i been running since the day that i was born',\n", - " 'the strip mall takes the land and leaves it bare',\n", - " 'and all of the trees that were there',\n", - " 'get shipped off to factories where',\n", - " \"they're turned into paper or chairs\",\n", - " 'i sit here at my wooden desk',\n", - " \"makin' up non-sentences\",\n", - " \"tryin' to do some justice\",\n", - " 'to the trees that have died in the path of my pen',\n", - " \"but love songs aren't easy to write\",\n", - " 'this one kept me up all night',\n", - " \"so did you, so i guess it's alright\",\n", - " 'at least it seems fitting',\n", - " \"i've been wishing on every\",\n", - " \"star that i've seen since the day that we met\",\n", - " 'maybe somewhere down the road',\n", - " 'we can be three things: happy, together and old',\n", - " 'i know that our chances are slim',\n", - " 'hearts are so easily broken',\n", - " 'and it might be one in a million',\n", - " 'but so are you',\n", - " 'so i think that we should',\n", - " 'add up all of our failures',\n", - " \"see if it's an even number\",\n", - " \"if it is, then let's just consider\",\n", - " 'all those as practice',\n", - " 'make this the first',\n", - " 'the seconds turn into hours',\n", - " 'the hours will turn into years',\n", - " 'and my heart just beats louder and louder',\n", - " 'each time that you kiss me',\n", - " \"i've been wishing on every\",\n", - " \"star that i've seen since the day that we met\",\n", - " 'maybe somewhere down the road',\n", - " 'we can be three things: happy, together and old',\n", - " 'the water below us was dark',\n", - " 'at the foot of the rock quarry wall',\n", - " 'we were surrounded by stars',\n", - " 'as we watched for the next one to fall',\n", - " 'then with a smile on your face',\n", - " 'you caught me completely off guard',\n", - " 'i felt my heart skip a beat',\n", - " 'i was scared it might not beat at all',\n", - " 'but as it turns out',\n", - " 'it was just switching from a march to a waltz',\n", - " \"come with me, i'll pay for you, i'll pay for you all day\",\n", - " \"drink for free, i'll pay for you, i'll pay for you all day\",\n", - " \"come with me, i'll pay for you, i'll pay for you all day\",\n", - " \"drink for free, i'll wait for you,\",\n", - " 'cast the spells',\n", - " 'abomination',\n", - " 'evil rites',\n", - " 'and celebration',\n", - " 'on this night',\n", - " 'invoke the power',\n", - " 'gather around',\n", - " 'a funeral pyre',\n", - " 'skies are filled',\n", - " 'with spirits and plague',\n", - " 'in chasms beneath they eternally dwell',\n", - " 'sent down in fire now burning in hell',\n", - " 'tormented screams marked by a spell',\n", - " 'now fall into the pits, down in the deep',\n", - " 'die by the spells of the dead',\n", - " 'scream, now it’s too late',\n", - " 'suffer your fate',\n", - " 'die by the spells of the dead',\n", - " 'burning sinner',\n", - " 'keep on burning',\n", - " 'skies are filled',\n", - " 'with spirits and plague',\n", - " 'in chasms beneath they eternally dwell',\n", - " 'sent down in fire now burning in hell',\n", - " 'tormented screams marked by a spell',\n", - " 'now fall into the pits, down in the deep',\n", - " 'die by the spells of the dead',\n", - " 'scream, now it’s too late',\n", - " 'suffer your fate',\n", - " 'and die by the spells of the dead',\n", - " 'spells of the dead – on this wicked night',\n", - " 'spells of the dead',\n", - " 'spells of the dead – take away your life',\n", - " 'spells of the dead',\n", - " 'alright!',\n", - " 'cast the spells',\n", - " 'abomination',\n", - " 'evil rites',\n", - " 'and celebration',\n", - " 'on this night',\n", - " 'invoke the power',\n", - " 'gather around',\n", - " 'a funeral pyre',\n", - " 'now fall into the pits, down in the deep',\n", - " 'die by the spells of the dead',\n", - " 'scream, now it’s too late',\n", - " 'suffer your fate',\n", - " 'die by the spells of the dead',\n", - " 'you say it’s our fault that the kids aren’t learning',\n", - " 'you subtract encouragement to make us feel worthless',\n", - " 'you steal our supplies and treat us like criminals',\n", - " 'while pleading for band-aids and glue',\n", - " 'yet all you give us are higher demands',\n", - " 'and daily trainings are just reprimands',\n", - " 'modern education is a sweatshop',\n", - " 'throw the wrenches in the cogs to make this machine stop',\n", - " 'i won’t teach by your standards',\n", - " 'so i’m not your kind of teacher',\n", - " 'fuck this abuse',\n", - " 'to comply, i refuse',\n", - " 'working for free ain’t working for me',\n", - " 'for someone who spits on and on about accountability',\n", - " 'i see you owning up to nothing',\n", - " 'exploit children who need help most for your own avail',\n", - " 'while you dissolve the services that should be entailed',\n", - " 'teaching is not ink on paper',\n", - " 'learning is not submissive',\n", - " 'half off teachers, defeated and abused',\n", - " 'half off education, tired and used',\n", - " \"i'm gonna write a little letter, gonna mail it to my local dj\",\n", - " \"it's a rockin' little record i want my jockey to play\",\n", - " 'roll over beethoven, gotta hear it again today',\n", - " \"you know my temperature's rising, the jukebox is blowing a fuse\",\n", - " \"my heart's beatin' rhythm and my soul keeps a-singin' the blues\",\n", - " 'roll over beethoven, tell tchaikovsky the news',\n", - " \"i got the rockin' pneumonia, i need a shot of rhythm and blues\",\n", - " \"i got the rockin' arthritis sittin' down at the rhythm reviews\",\n", - " 'roll over beethoven, tell tchaikovsky the news, wah!',\n", - " 'well, if you feel like you like it, go get your lover',\n", - " 'then you reel and rock it, roll it over',\n", - " 'then you move on up just a trifle further',\n", - " 'then reel and rock it, roll it over',\n", - " 'roll over beethoven, tell tchaikovsky the news, wah!',\n", - " \"well, early in the morning i'm giving you the warning\",\n", - " \"don't you step on my blue suede shoes\",\n", - " 'hey diddle-diddle, i will play my fiddle',\n", - " \"ain't got nothing to lose\",\n", - " \"roll over beethoven, we're rockin' in two by two\",\n", - " 'you know she wiggles like a glow worm, spin like a spinning top',\n", - " \"she's got a crazy partner, ought to see them reel and rock\",\n", - " \"long as she's got a dime, the music won't ever stop\",\n", - " 'roll over beethoven, roll over beethoven',\n", - " 'roll over beethoven, roll over beethoven',\n", - " 'roll over beethoven, and dig these rhythm and blues',\n", - " \"i'll be your codependent\",\n", - " \"you're my cute little enabler\",\n", - " \"together we'll make time to kill\",\n", - " 'and save the rest for later',\n", - " 'and i say lather, rinse, repeat',\n", - " \"'cause this is my philosophy\",\n", - " 'i change my mind, my brain is smoking',\n", - " \"can't live without my remote control\",\n", - " 'remote control',\n", - " 'what do you want?',\n", - " \"it's too complicated\",\n", - " 'what do you mean?',\n", - " \"it's too hard to state it\",\n", - " 'what do you do?',\n", - " \"it's not what but whether\",\n", - " 'who do you love?',\n", - " \"i'm in love with leather\",\n", - " 'so call me kid compulsive',\n", - " \"'cause i'm crawling on the concrete\",\n", - " 'and meet me at the laundromat',\n", - " \"that's where i do my laundry\",\n", - " \"'cause you know i can hardly wait\",\n", - " 'danger is my middle name',\n", - " \"there's always something going on\",\n", - " 'until it sort of grinds to a halt',\n", - " 'what do you want?',\n", - " \"i don't know, what is it?\",\n", - " 'what do you need?',\n", - " 'i just need a minute',\n", - " \"what'll it take?\",\n", - " \"it'll take forever\",\n", - " 'who do you love?',\n", - " \"i'm in love with lethargy\",\n", - " \"now sit right back, and you'll hear a tale\",\n", - " 'of all my twisted motives',\n", - " 'of coffee, jolt, and classic coke',\n", - " 'and delicious blue cream sodas',\n", - " 'blue cream soda brings a smile',\n", - " \"and that's what makes it all worthwhile\",\n", - " \"there's something more important somewhere\",\n", - " 'but blue cream soda sure is up there',\n", - " 'what do you want?',\n", - " \"that's for me to know and you to find out\",\n", - " \"and that's where i'm going\",\n", - " \"what'll it take?\",\n", - " \"it'll take forever\",\n", - " 'who do you love?',\n", - " \"i'm in love with leather\",\n", - " 'what do you want?',\n", - " 'what do you mean?',\n", - " \"what'll you do?\",\n", - " \"it's not what but whether\",\n", - " 'who do you love?',\n", - " \"i'm in love with lethargy\",\n", - " \"i got a stiff upper lip because i'm half-dead!\",\n", - " 'the walls of my life are crumbling around me!',\n", - " \"i'm running and i can't hide\",\n", - " 'and i might try fucking suicide!',\n", - " \"so i can't see\",\n", - " \"i try to be straight but it's not me\",\n", - " \"don't touch my body, listen to us\",\n", - " 'no, no, no, no no no',\n", - " \"i'm running, baby\",\n", - " 'get away',\n", - " 'somebody to go to, man',\n", - " 'back then',\n", - " \"walking tall, i won't be long\",\n", - " 'with matching on telephone',\n", - " 'and in my dreams, see the dust',\n", - " 'no, no, no, no no no',\n", - " 'so watch it, woman',\n", - " 'no place to hide',\n", - " 'get a god complex',\n", - " 'suicide!',\n", - " \"i can't breathe!\",\n", - " 'do you, baby',\n", - " 'i will be fine',\n", - " 'suicide',\n", - " \"look, it's time to stop this pain\",\n", - " \", i'm half-insane\",\n", - " \"i've done it now, kill the pain\",\n", - " 'so get back, world',\n", - " 'on my head',\n", - " \"'cept for the donkey, man (?)\",\n", - " 'half dead',\n", - " \"walking tall and i won't be long\",\n", - " 'with matching on telephone',\n", - " 'and in my dreams, see the dust',\n", - " 'no, no, no, no no no',\n", - " 'so watch it, woman',\n", - " 'no place to hide',\n", - " 'get a god complex',\n", - " 'suicide!',\n", - " \"i'm not fucking kidding, man, it hurts!\",\n", - " 'i can be so strong',\n", - " 'like a lion on a mission',\n", - " 'i can do no wrong',\n", - " 'i can fight day and night',\n", - " \"that's my decision!\",\n", - " 'because the world is...',\n", - " '(so bad) like diet soda',\n", - " \"(so bad) i'm counting 37 wars\",\n", - " '(so bad) user friendly',\n", - " '(so bad) we lost the singer of the doors',\n", - " '(so bad) the u.f.o. conspiracy',\n", - " '(so bad) starvation and depressy',\n", - " '(so bad) hiroshima tomsk tschernobyl',\n", - " \"(so bad) it's never gonna heal\",\n", - " 'i can be so good',\n", - " 'like a goddess',\n", - " \"plus, i'm modest\",\n", - " 'i...i have no fear',\n", - " 'i will go all the way',\n", - " 'i can show you how to pray',\n", - " 'because the world is...',\n", - " '(so bad) deadly chemotherapy',\n", - " '(so bad) the lies about hiv',\n", - " \"(so bad) we've lost our last chance\",\n", - " \"(so bad) and we're all dancing shiva's dance\",\n", - " '(so bad) genetic obsession',\n", - " '(so bad) misused atomic energy',\n", - " '(so bad) surprise, surprise, the culture industry',\n", - " '(so bad) helmut kohl!',\n", - " 'you can do no wrong',\n", - " 'if you fight on my side',\n", - " 'if you make that decision',\n", - " 'because the world is...',\n", - " '(so bad) i.r.a. and r.a.f',\n", - " '(so bad) are we really blind and deaf',\n", - " '(so bad) the yugoslavian rape',\n", - " '(so bad) and no-one can escape',\n", - " '(so bad) the nazi lunacy',\n", - " '(so bad) artificial ecstasy',\n", - " '(so bad) i hate my t.v',\n", - " 'so bad..bad...bad...',\n", - " 'fronting time, in a on going change',\n", - " 'breathing hard and slow',\n", - " 'capture life on the thinnest line',\n", - " 'stimulate the roots',\n", - " 'my eyes white stare',\n", - " 'heated hand, who returns from sweat and lust',\n", - " 'breathing power and moans of lust, i surround myself so delicately within',\n", - " 'reaching for the sky i harvest upon the key',\n", - " 'i am swirling upon the key',\n", - " 'like a forcing bloom i repeat act',\n", - " 'performing, for an utter final',\n", - " 'i give to me the most sacred and holy',\n", - " 'i give to thee my own reflection',\n", - " 'as i see myself repeated inside out, there is no longer distance',\n", - " 'i hold the torch',\n", - " 'i surround my hand, with fire',\n", - " 'like a frocing bloom i repeated act',\n", - " 'stimulate the roots',\n", - " 'my eyes white stare',\n", - " 'heated hand, who returns from sweat and lust',\n", - " 'breathing power and moans of lust, i surround myself so delicately within',\n", - " 'reaching for the sky i harvest upon the key',\n", - " 'i am swirling upon the key',\n", - " 'for the the one gazing at the altar shall not see',\n", - " \"this blood has not run far till it's dry\",\n", - " 'when rising above in pleasure, i smear myself upon thee',\n", - " 'in this foggy confusion',\n", - " 'the whole image comes dear',\n", - " 'for this is the demon within me',\n", - " 'like a forcing bloom i repeated act',\n", - " 'still swirling above and beneath the key, blue eyes stare',\n", - " 'return to me with a conscious mind, i do behold the greater of gifts',\n", - " 'breathing power and moans of lust, i surround myself so delicately within',\n", - " 'reaching for the sky i harvest upon the key',\n", - " 'i am swirling upon the key',\n", - " 'like a forcing bloom i repeated act',\n", - " 'i smear myself upon thee',\n", - " 'i took your body home with me',\n", - " 'and shed a plate',\n", - " 'and framed all that weight',\n", - " \"i couldn't care less\",\n", - " 'but you cared for me',\n", - " 'the flew into the plates',\n", - " 'bursting crystal feathers flamed',\n", - " 'i frame them all, the weight',\n", - " 'and shed a plate',\n", - " \"i couldn't care less\",\n", - " 'but you cared for me, unless',\n", - " 'the flew into the plates',\n", - " 'i took all of the earrings and your jewels',\n", - " 'i wore all of your earrings and your jewels',\n", - " 'we come from a world beyond your stars',\n", - " 'from a silver stream hidden in the nebula',\n", - " 'outlaws and strangers, the last one of our kind',\n", - " 'on the way to new home through the galaxy we ride',\n", - " 'we are sailing the dark to find a star',\n", - " 'a planet to go on, live and see a new dawn',\n", - " 'we need to survive',\n", - " 'and seed a new life to save our tribe',\n", - " 'can you see the future, riding on the wings of destiny',\n", - " 'far away from the universe we come',\n", - " 'travel galaxies far beyond',\n", - " 'sons of orion',\n", - " 'far away from an ancient aeon stream',\n", - " 'born to be strong, to carry on',\n", - " 'sons of orion',\n", - " 'were crossing the space to dawn a new age',\n", - " 'the universe has born a new face',\n", - " 'we bring the evolution, new technologies',\n", - " 'we settle the fields for a new century',\n", - " 'we are facing the earth to build a new world',\n", - " 'the time has come there is no return',\n", - " 'we can stand as one, children of the sun',\n", - " 'hand in hand we carry on',\n", - " 'where do we go?',\n", - " 'where we belong',\n", - " 'in search for new hope',\n", - " 'set the sails and carry on... we stand as one',\n", - " 'home, is this a quiet place where you should be alone?',\n", - " 'is this where the tortured and the troubled find their own?',\n", - " \"i don't know, but i can tell this isn't you, your cover's blown\",\n", - " \"oh no, don't you dare hang up this phone\",\n", - " 'hey!',\n", - " 'give me space so i can breathe',\n", - " 'give me space so i can sleep',\n", - " 'give me space so you can drown in this with me',\n", - " 'in this place, a lonely escapade in outer space',\n", - " \"there's no antidote for irony, you say\",\n", - " \"that you have when you know that you don't\",\n", - " \"and you say that you can when you know that you won't\",\n", - " 'hey!',\n", - " 'give me space so i can breathe',\n", - " 'give me space so i can sleep',\n", - " 'give me space so you can drown in this with me',\n", - " 'hey!',\n", - " \"give me space but i can't breathe\",\n", - " \"give me space but i can't sleep\",\n", - " \"give me just one inch, i swear that's all i need\",\n", - " 'these padded walls and tv screens',\n", - " 'sometimes they make me want to scream',\n", - " 'ahhhh!',\n", - " 'hey!',\n", - " 'give me space so i can breathe',\n", - " 'give me space so i can sleep',\n", - " 'give me space so you can drown in this with me',\n", - " 'hey!',\n", - " \"give me space but i can't breathe\",\n", - " \"give me space but i can't sleep\",\n", - " \"give me just one inch, i swear that's all i need\",\n", - " \"well, i'm so tired of cryin' but i'm out on the road again\",\n", - " \"i'm on the road again\",\n", - " \"well, i'm so tired of cryin' but i'm out on the road again\",\n", - " \"i'm on the road again\",\n", - " \"i ain't got no woman just to call my special friend\",\n", - " 'you know the first time i traveled out in the rain and snow',\n", - " 'in the rain and snow',\n", - " 'you know the first time i traveled out in the rain and snow',\n", - " 'in the rain and snow',\n", - " \"i didn't have no payroll, not even no place to go\",\n", - " 'and my dear mother left me when i was quite young',\n", - " 'when i was quite young',\n", - " 'and my dear mother left me when i was quite young',\n", - " 'when i was quite young',\n", - " 'she said \"lord, have mercy on my wicked son\"',\n", - " \"take a hint from me, mama, please, don't you cry no more\",\n", - " \"don't you cry no more\",\n", - " \"take a hint from me, mama, please, don't you cry no more\",\n", - " \"don't you cry no more\",\n", - " \"'cause it's soon one morning down the road i'm going\",\n", - " \"but i ain't going down that long, old lonesome road\",\n", - " 'all by myself',\n", - " \"but i ain't going down that long, old lonesome road\",\n", - " 'all by myself',\n", - " \"i can't carry you, baby, gonna carry somebody else\",\n", - " 'young man, take a look at your time',\n", - " 'i said young man',\n", - " 'hollywood, very good, punch the clock, dominoes',\n", - " \"you beat me up, don't get a gun, talk to a counsellor\",\n", - " 'skydeck, pretty cheap, whispers with the doom time',\n", - " \"but i'm\",\n", - " \"i'm on fire\",\n", - " \"but i'm\",\n", - " \"i'm on fire\",\n", - " \"hot lips, she's a dreamy type, talk to a counsellor\",\n", - " 'cool guys, never try, tried it on, talk to a counsellor',\n", - " 'hollywood, very good, punch the clock, talk to a counsellor',\n", - " 'skydeck, pretty cheap, talk to a counsellor',\n", - " 'when the night returns just like a friend',\n", - " 'when the evening comes to set me free',\n", - " 'when the quiet hours',\n", - " 'that wait beyond the day',\n", - " 'make peaceful sounds in me',\n", - " 'took a drag from my last cigarette',\n", - " 'took a drink from a glass of old wine',\n", - " 'i closed my eyes and i could make it real',\n", - " 'and feel it one more time',\n", - " 'can you hear it, babe',\n", - " 'can you hear it, babe',\n", - " 'from another time, from another place',\n", - " 'do you remember it, babe',\n", - " 'and the radio played like a carnival tune',\n", - " 'as we lay in our bed in the other room',\n", - " 'when we gave it away',\n", - " 'for the sake of a dream in a penny arcade',\n", - " 'if you know what i mean',\n", - " 'if you know what i mean, babe',\n", - " \"and here's to the songs we used to sing\",\n", - " \"and here's to the times we used to know\",\n", - " \"it's hard to hold them in our arms again\",\n", - " 'but hard to let them go',\n", - " 'do you hear it, babe',\n", - " 'do you hear it, babe',\n", - " 'it was another time',\n", - " 'it was another place',\n", - " 'do you remember it, babe',\n", - " 'and the radio played like a carnival tune',\n", - " 'as we lay in our bed in the other room',\n", - " 'when we gave it away',\n", - " 'for the sake of a dream in a penny arcade',\n", - " 'if you know what i mean',\n", - " 'if you know what i mean',\n", - " 'if you know what i mean',\n", - " 'if you know what i mean',\n", - " 'if you know what i mean, babe',\n", - " 'if you know what i mean',\n", - " 'can you do the milano mosh?',\n", - " \"you think that you're really hard\",\n", - " 'you think that you can mosh',\n", - " 'got your suspenders and got your boots',\n", - " \"you'd better wear armor, you fuckin' fool\",\n", - " 'we mosh until we die',\n", - " 'we mosh until you fry',\n", - " 'you think that you can try',\n", - " 'but can you do the milano mosh?',\n", - " \"you think that you're really hard\",\n", - " 'you think that you can mosh',\n", - " 'got your suspenders and got your boots',\n", - " \"you'd better wear armor, you fuckin' fool\",\n", - " 'we mosh until we die',\n", - " 'we mosh until you fry',\n", - " 'you think that you can try',\n", - " 'but can you do the milano mosh?',\n", - " 'mosh',\n", - " 'mosh',\n", - " 'mosh',\n", - " 'mosh',\n", - " \"hey babe don't act so scared\",\n", - " 'all i want is some special care',\n", - " 'on the run from some institution',\n", - " 'all i want is some constellation',\n", - " 'and i can tell by his face',\n", - " 'i am a total disgrace',\n", - " 'put me inside this place',\n", - " 'move over for a damage case',\n", - " 'hey baby wait a minute, stop',\n", - " \"don't run away, don't call a cop\",\n", - " 'i am not looking to victimize you',\n", - " 'all i want to do is tantalize you',\n", - " 'i can tell by your face',\n", - " 'i am all over this place',\n", - " 'i can tell by your face',\n", - " 'got no time for a damage case, no time baby',\n", - " \"hey babe don't turn away\",\n", - " 'i am here tomorrow, gone today',\n", - " \"i don't know what you think your game is\",\n", - " \"i don't care if you want your name is\",\n", - " 'and i can tell by this face',\n", - " 'you are all over the place',\n", - " 'i can tell by his face',\n", - " 'move over for a damage case',\n", - " 'get the fuck over man',\n", - " 'what will be? our legacy',\n", - " 'lazy acceptance of the norm',\n", - " 'what will it be if our will is free?',\n", - " 'silent acceptance of the form',\n", - " 'vestiges and claws',\n", - " 'fight for a common cause',\n", - " 'what will it be? our legacy',\n", - " 'faith in dogma or reasoning',\n", - " 'what will it be if our will is free?',\n", - " 'refine our tools and use our wings',\n", - " 'vestiges and claws',\n", - " 'fight for a common cause',\n", - " 'refining without pause',\n", - " 'fight for a common cause',\n", - " 'what will, what will',\n", - " 'will it be?',\n", - " 'what will, what will',\n", - " 'will it be?',\n", - " 'what will, what will',\n", - " 'will it be?',\n", - " 'what will, what will',\n", - " 'will it be?',\n", - " 'what will, what will',\n", - " 'will it be?',\n", - " 'what will, what will',\n", - " 'will it be?',\n", - " 'what will, will it be?',\n", - " 'what will, what will',\n", - " 'will it be?',\n", - " 'petty thievery, tribal rivalry',\n", - " 'envy or generosity?',\n", - " 'wishful thinking or reality?',\n", - " 'what will, what will',\n", - " 'will it be?',\n", - " 'what will, what will',\n", - " 'will it be?',\n", - " 'what will, will it be?',\n", - " 'what will, what will',\n", - " 'will it be?',\n", - " 'vestiges and claws',\n", - " 'fight for a common cause',\n", - " 'free your mind to leave dogma behind',\n", - " 'vestiges and claws',\n", - " 'fight for a common cause',\n", - " 'free your mind to leave dogma behind',\n", - " 'vestiges and claws',\n", - " 'vestiges and claws',\n", - " 'free your mind to leave dogma behind',\n", - " \"there's nothing new around the sun\",\n", - " 'everything you think of has been done',\n", - " 'all been done before your time',\n", - " 'sometime or another by someone and his brother, yeah yeah',\n", - " 'yeah, yeah',\n", - " 'yeah, yeah',\n", - " 'from the poison comes a flower',\n", - " 'butterfly for just an hour',\n", - " 'but it burns ecstatic fire',\n", - " 'the kind of life we all desire',\n", - " 'desire! fire!',\n", - " \"white is the color of night when there's nobody there\",\n", - " 'and you sit in your chair and get drunk on despair',\n", - " \"red is the color, it's said, that can drive you insane\",\n", - " 'with pleasure or pain, it depends on your head',\n", - " \"brown is the color of skin that i'd like to be in\",\n", - " \"as it doesn't seem right to be colored so white\",\n", - " \"blue is the color of sky, and i won't even try\",\n", - " 'to explain how or why i could show you the sky',\n", - " 'just show you the sky',\n", - " \"i'm with them\",\n", - " 'but never on the weekend',\n", - " \"it's a problem\",\n", - " \"i'm the one when it's all gone\",\n", - " \"it's a new thing\",\n", - " \"you're an a-team\",\n", - " \"so what's the problem?\",\n", - " \"i'm the one when it's all gone\",\n", - " 'go and leave then',\n", - " 'best believe them',\n", - " \"it's not a problem\",\n", - " 'ten bodies in the back',\n", - " 'heart attack',\n", - " 'had about four',\n", - " 'tryna add one more',\n", - " 'but only on the weekend',\n", - " \"i'll be so bold to say you are the only one i've ever really known\",\n", - " \"oh, my love, you're soft\",\n", - " 'and i know these roads like a hall from my home but i never settle down',\n", - " 'except my word is yours',\n", - " \"you'll see, you'll see\",\n", - " \"i'm just no good for me\",\n", - " \"you'll see, yeah, you'll see\",\n", - " \"that i'm just no good for me\",\n", - " 'good for me, good for me',\n", - " 'good for me',\n", - " \"take what you can from the back of your hand in all words i've seen\",\n", - " 'change your meal and your tune',\n", - " 'and despite what you say, every dog has its day, every night finds its home',\n", - " 'are you happy being alone?',\n", - " \"you'll see, you'll see\",\n", - " \"i'm just no good for me\",\n", - " \"you'll see, yeah, you'll see\",\n", - " \"i'm just no good for me\",\n", - " \"you'll see, yeah you'll see\",\n", - " \"that i'm just no good for me\",\n", - " 'good for me, good for me',\n", - " 'good for me',\n", - " 'her head is in a bitter way',\n", - " \"her brain's on fire\",\n", - " \"she's just looking for the perfect wave\",\n", - " \"it's her brain's desire\",\n", - " \"i'll think of her when i walk the strand\",\n", - " 'on this true hermosa night',\n", - " 'ah-ah-ah-ah-ah-ah-ah',\n", - " 'ed is dead',\n", - " 'ed is dead',\n", - " 'ed is dead, ha huh, huh',\n", - " ...]},\n", - " 'varnell-15-16-12th': {'meta': {'train_data': ['two young people without a thing',\n", - " 'say some vows and spread their wings',\n", - " 'and settle down with just what they need',\n", - " \"livin' on love\",\n", - " \"she don't care 'bout what's in style\",\n", - " 'she just likes the way he smiles',\n", - " 'it takes more than marble and tile',\n", - " \"livin' on love\",\n", - " \"livin' on love, buyin' on time\",\n", - " \"without somebody nothing ain't worth a dime\",\n", - " 'just like an old fashion story book rhyme',\n", - " \"livin' on love\",\n", - " \"it sounds simple, that's what you're thinkin'\",\n", - " \"but love can walk through fire without blinkin'\",\n", - " \"it doesn't take much when you get enough\",\n", - " \"livin' on love\",\n", - " 'two old people without a thing',\n", - " 'children gone but still they sing',\n", - " 'side by side in that front porch swing',\n", - " \"livin' on love\",\n", - " \"he can't see anymore\",\n", - " 'she can barely sweep the floor',\n", - " \"hand in hand they'll walk through that door\",\n", - " \"just livin' on love\",\n", - " \"livin' on love, buyin' on time\",\n", - " \"without somebody nothing ain't worth a dime\",\n", - " 'just like an old fashion story book rhyme',\n", - " \"livin' on love\",\n", - " \"it sounds simple that's what you're thinkin'\",\n", - " \"but love can walk through fire without blinkin'\",\n", - " \"it doesn't take much when you get enough\",\n", - " \"livin' on love\",\n", - " \"livin' on love, buyin' on time\",\n", - " \"without somebody nothing ain't worth a dime\",\n", - " 'just like an old fashion story book rhyme',\n", - " \"livin' on love\",\n", - " \"but, it sounds simple that's what you're thinkin'\",\n", - " \"but love can walk through fire without blinkin'\",\n", - " \"it doesn't take much when you get enough\",\n", - " \"livin' on love\",\n", - " \"no it doesn't take much when you get enough\",\n", - " \"livin' on love\",\n", - " 'yeah, yeah, yeah',\n", - " \"it's good\",\n", - " 'oh shit',\n", - " 'mushrooms, lsd, marijuana',\n", - " 'light that shit',\n", - " 'oh shit',\n", - " \"this is every heavy drug, that's known at every level\",\n", - " \"this assault with deadly metal bumpin' heavy metal\",\n", - " 'do this for myself, across my hood and every ghetto',\n", - " \"paper pushin', paper petal, cause i heavy petal\",\n", - " \"it's real nigga flowin' through my blood and every vessel\",\n", - " 'time is money, so i saved the load on every bezel',\n", - " 'i just had a dream, i dipped my watch canary yellow',\n", - " 'i woke up and then i bought that bitch in every yellow',\n", - " 'let go back to business, my fits prada for my devil',\n", - " \"cause life's a bitch with red lipstick and high stilettos\",\n", - " \"flacko jumpin' fences from pigs, with 'em them biscuits\",\n", - " 'i hypnotized my sig, but my .38 was kinda special',\n", - " 'what a life this is, what a sight this is',\n", - " 'where the darks and the light skin kids',\n", - " 'get along with the white persons',\n", - " 'all alike when the lights get dim',\n", - " \"on a righteous pass, where you don't look back\",\n", - " 'nigga spark your cig, niggas light your hash',\n", - " \"niggas light your spliff, where you puff, don't pass, just sip it\",\n", - " 'i just had an epic dream like dr. king',\n", - " 'police brutality was on my tv screen',\n", - " 'harmony, love, drugs, and peace is all we need',\n", - " 'harmony, love, drugs, and peace is all we need',\n", - " \"out on the streets i'm stalking the night\",\n", - " 'i can hear my heavy breathing',\n", - " \"paid for the kill, but it doesn't seem right\",\n", - " \"something there i can't believe in\",\n", - " 'voices are calling from inside my head',\n", - " 'i can hear them, i can hear them',\n", - " 'vanishing memories of things that were said',\n", - " \"they can't try to hurt me now\",\n", - " 'but a shot in the dark',\n", - " 'one step away from you',\n", - " 'just a shot in the dark',\n", - " 'always creeping up on you',\n", - " 'all right',\n", - " 'taught by the powers that preach over me',\n", - " 'i can hear their empty reasons',\n", - " \"i wouldn't listen, i learned how to fight\",\n", - " 'i opened up my mind to treason',\n", - " \"but just like the wounded, and when it's too late\",\n", - " \"they'll remember, they'll surrender\",\n", - " 'never a care for the people who hate',\n", - " 'underestimate me now',\n", - " 'but a shot in the dark',\n", - " 'one step away from you',\n", - " 'just a shot in the dark',\n", - " 'nothing that you can do',\n", - " 'just a shot in the dark',\n", - " 'always creeping up on you',\n", - " 'all right',\n", - " \"but just like the wounded, and when it's too late\",\n", - " \"they'll remember, they'll surrender\",\n", - " 'never a care for the people who hate',\n", - " 'underestimate me now',\n", - " 'but a shot in the dark',\n", - " 'one step away from you',\n", - " 'just a shot in the dark',\n", - " 'nothing that you can do',\n", - " 'just a shot in the dark',\n", - " 'always creeping up on you',\n", - " 'all right',\n", - " 'just a shot in the dark',\n", - " 'just a shot in the dark',\n", - " 'just a shot in the dark',\n", - " 'just a shot in the dark',\n", - " 'nyc or p.d. you can see them on the streets',\n", - " 'all over new york city kicking the punks all around',\n", - " 'police brutality - for you and me',\n", - " 'police brutality - they are on the streets',\n", - " \"police brutality - they're all around\",\n", - " 'police brutality - for the punx',\n", - " 'nyc or p.d. i call them the fucking pigs',\n", - " 'all around new york city kicking the punx all around',\n", - " '(repeat chorus)',\n", - " 'oh',\n", - " 'yeah',\n", - " 'yeah',\n", - " 'yeah, yeah',\n", - " 'oh',\n", - " 'oh',\n", - " 'do you know how it feels',\n", - " 'to wake up with someone that you love?',\n", - " 'it feels so real',\n", - " 'my angel was sent from above',\n", - " 'i like to see her smile',\n", - " 'even when i look in her eyes',\n", - " 'i get butterflies (flies)',\n", - " \"i don't wanna change\",\n", - " \"i don't wanna change\",\n", - " \"i don't wanna change her love\",\n", - " 'i wanna change her last name',\n", - " 'give her mine, onto her',\n", - " \"but feelings first baby girl you're my world\",\n", - " 'no other girl',\n", - " 'i just wanna make this last forever',\n", - " \"my queen she's next to me\",\n", - " \"she's next to me\",\n", - " 'i need',\n", - " 'her loving feel',\n", - " 'her loving feel',\n", - " 'just stay right by my side',\n", - " 'just you and i',\n", - " 'just you and i',\n", - " 'just you and i',\n", - " 'just you and i',\n", - " 'baby girl you can tell your friends about us',\n", - " 'no other girl',\n", - " \"what's love if we don't fall in trust\",\n", - " \"i'm not trying to be the most perfect guy\",\n", - " 'but do right in your eyes',\n", - " \"i know you're tired\",\n", - " \"i know you're tired\",\n", - " \"i know you're tired of the losers\",\n", - " \"but when love come my way, beggars can't be choosers\",\n", - " 'i just want to make you mine forever',\n", - " 'ever',\n", - " 'ever',\n", - " 'ever',\n", - " 'forever',\n", - " \"my queen she's next to me\",\n", - " \"she's next to me\",\n", - " 'i need',\n", - " 'her loving feel',\n", - " 'her loving feel',\n", - " 'just stay right by my side',\n", - " 'just you and i',\n", - " 'just you and i',\n", - " 'just you and i',\n", - " 'just you and i',\n", - " 'little mama, you the, you the best',\n", - " 'baby girl, you, you the best',\n", - " 'baby girl, you the, you the best',\n", - " 'my queen!!!! oh!!!!',\n", - " '...just you and i',\n", - " 'forever',\n", - " 'ever',\n", - " 'ever',\n", - " 'ever',\n", - " 'oh',\n", - " 'oh, oh',\n", - " 'ohh',\n", - " 'ohhhhh',\n", - " 'just you and i',\n", - " 'just you and i',\n", - " 'just you and i',\n", - " \"there's a fire burning bright at our house tonight\",\n", - " 'slow music playing and soft candlelight',\n", - " 'on her lips i keep tasting the warm red wine',\n", - " \"i'm there in her arms but it's all in my mind\",\n", - " 'the snow is piled high on the highway tonight',\n", - " \"i'm a ship lost at sea on this ocean of white\",\n", - " 'eighteen wheels anchored somewhere out of dover',\n", - " 'i wish i could hold her instead of hugging this old cold shoulder',\n", - " 'this old highway us like a woman',\n", - " 'sometimes she can be your best friend',\n", - " \"but she's the real jealous kind\",\n", - " \"she's the lady that leads me to the life i dream of\",\n", - " \"she's the mistress that keeps me from the ones that i love\",\n", - " 'god, i wish i could hold her instead of hugging this old cold shoulder',\n", - " 'friday is when you left me',\n", - " 'so i drank myself to sleep',\n", - " \"and sunday is when i'll wake up\",\n", - " 'not to remember a thing',\n", - " 'my friends all say the same thing',\n", - " \"i don't know my new girl too well\",\n", - " '(i know)',\n", - " 'that all this lying gets to me',\n", - " 'and no one seems to give a shit',\n", - " '(the way)',\n", - " 'she talks to every guy in the bar',\n", - " '(i guess)',\n", - " \"it should've raised some kind of alarm\",\n", - " \"who'd ever think i'd go in and end up\",\n", - " \"like all the other guys that you're gunning for\",\n", - " \"well it ain't no surprise\",\n", - " \"that you'd turn me on and leave\",\n", - " \"it ain't no surprise\",\n", - " \"that you'd turn it around on me\",\n", - " \"i don't know why\",\n", - " \"you won't give me what i need\",\n", - " \"it ain't no surprise\",\n", - " \"that that bitch is leavin' me\",\n", - " 'my friends are mean to me',\n", - " \"they say i don't break up too well\",\n", - " '(they know)',\n", - " 'all this crying gets to me',\n", - " 'and no one seems to give a shit',\n", - " 'well i know you want to',\n", - " 'so go on and say it',\n", - " 'just go on and say it',\n", - " 'just go on and say it',\n", - " \"well it ain't no surprise\",\n", - " \"that you'd turn me on and leave\",\n", - " \"it ain't no surprise\",\n", - " \"that you'd turn it around on me\",\n", - " \"i don't know why\",\n", - " \"you won't give me what i need\",\n", - " \"it ain't no surprise\",\n", - " \"that that bitch is leavin' me\",\n", - " \"(leavin' me)\",\n", - " 'friday is when you left me',\n", - " 'so i drank myself to sleep',\n", - " 'and sunday i never woke up',\n", - " \"well it ain't no surprise\",\n", - " \"that you'd turn me on and leave\",\n", - " \"it ain't no surprise\",\n", - " \"that you'd turn it around on me\",\n", - " \"i don't know why\",\n", - " \"you won't give me what i need\",\n", - " \"it ain't no surprise\",\n", - " \"that that bitch is leavin' me\",\n", - " \"that that bitch is leavin' me\",\n", - " 'i dreamed i walked in a field of flowers',\n", - " 'oh, what a dream',\n", - " 'the houses all were silver towers',\n", - " 'oh, what a dream',\n", - " 'beside the road an angel sat',\n", - " 'i said hello and tipped my hat',\n", - " 'and stopped when i saw her smile',\n", - " 'and set me down a while',\n", - " 'i set me down a while',\n", - " 'you dreamer you',\n", - " 'i tried the angel for a kiss',\n", - " 'oh, what a dream',\n", - " 'but she turned away and my lips missed',\n", - " 'oh, what a dream',\n", - " 'she said, \"sir, i\\'ll have you know',\n", - " 'i met you just a while ago',\n", - " \"you're welcome for to sit\",\n", - " 'but calm yourself a bit, sir',\n", - " 'calm yourself a bit',\n", - " 'you dreamer you',\n", - " 'i fell in love like one, two, three',\n", - " 'oh, what a dream',\n", - " 'i asked the angel to marry me',\n", - " 'oh, what a dream',\n", - " 'she said, \"sir, i can\\'t marry you',\n", - " \"but i'm a dream that can come true\",\n", - " 'there are dreams of much my worth',\n", - " 'that live upon the earth, sir',\n", - " 'live upon the earth',\n", - " 'you dreamer you\"',\n", - " 'then i awoke and found my love',\n", - " 'oh, what a dream',\n", - " 'as heavenly as the one above',\n", - " 'oh, what a dream',\n", - " \"we'll marry in a sea of flowers\",\n", - " 'home will be a silver tower',\n", - " \"there'll be heaven in my life\",\n", - " 'with an angel for a wife',\n", - " 'with an angel for a wife',\n", - " 'you dreamer you',\n", - " 'you dreamer you']},\n", - " 'data': ['hat to the front',\n", - " \"lookin' like i'm lightin' up a bat for a blunt\",\n", - " \"i'm stickin' to the script, tryna kick it like a punt\",\n", - " 'my life is like a movie and i do my own stunts',\n", - " \"i'm the birdman jr., call me young baby\",\n", - " 'coulda been a killer but cash money saved me',\n", - " 'remember i was little but the cash money made me',\n", - " 'big dog bitch, no tramp, no lady',\n", - " 'young ass nigga had a thing for old ladies',\n", - " \"but as i got older i began to like 'em younger\",\n", - " 'to heavens where i brung her, my wing she was under',\n", - " 'she said \"daddy they, daddy they, daddy they, daddy they',\n", - " 'daddy they can\\'t do it like you can\"',\n", - " 'i get chips like vegas and i am not blue man',\n", - " 'too much ice on my wrist and now i got a blue hand',\n", - " \"and if i sing prostitute she gon' need some new pants\",\n", - " \"and if i sing pussy monster she gon' need a new man\",\n", - " 'hello world, i would you all to meet me, her new man',\n", - " 'i vow to stay on top of my somers like suzanne',\n", - " 'and i hustle everyday, everyday, everyday, everyday',\n", - " \"everyday i'm hustlin', fillin' up my cup again\",\n", - " \"wit that purple stuff again, i can't get enough of it\",\n", - " \"point me in the direction of a swisher and i'm stuffin' it\",\n", - " \"with that purple stuff again, i'm on some same color shit\",\n", - " \"after you do wayne, it's time to do wayne's brothers bitch\",\n", - " \"i get money like a fuckin' wayans brother bitch\",\n", - " 'i get good with gorillas and stay away from the rattlesnakes',\n", - " 'and the jakes, and the fake, and the hate',\n", - " 'interstate 10, no cops in sight',\n", - " \"and i'm coming back with a whole flock tonight\",\n", - " \"lord, don't let me get stopped tonight\",\n", - " \"or i'mma have to shoot it out with the cops tonight\",\n", - " 'i swear, and tell the jack boys not tonight',\n", - " \"cause i ain't 'n sync, but i will pop tonight\",\n", - " \"yeah, that's right, if you ain't got that price\",\n", - " 'then go thataway, not a way we can even negotiate',\n", - " \"big money heavyweight, on my way to heaven's gate\",\n", - " 'so if that be them open gates, flow so appropriate',\n", - " \"don't associate me with the bullshit\",\n", - " 'one wish, i wish a motherfucker would trip',\n", - " 'like a engine, i come from under the hood bitch',\n", - " \"but now a nigga gettin' paper like a booklet\",\n", - " \"they ain't help me with it, but i took it\",\n", - " 'and now they never get it, never get it, never get it, never get it',\n", - " \"never get it back, yeah that's my word\",\n", - " '\"bling-bling\" in the dictionary, yeah that\\'s my word',\n", - " 'and for me ja rule made it just like irv',\n", - " 'sometimes i still go through the hood just to kiss my curb',\n", - " 'cause i love that block nigga, eagle and apple',\n", - " \"old g's, young g's, leaders and barrels\",\n", - " 'but god found me like a needle in a barrel',\n", - " \"and i'm so ready for war cause i'm a jesus for the battle\",\n", - " \"money on my mind, that's all i think of\",\n", - " 'married to the game, never takin my ring off',\n", - " \"m.o.b., yeah that's my theme song\",\n", - " \"smokin' two l's, rockin' bells like ding-dong\",\n", - " 'haha, yeah i got my wings on',\n", - " \"flyer than the rest, i don't rest i keep goin\",\n", - " \"i just i-g-nore 'em\",\n", - " 'like anyway, anyway, anyway, anyway',\n", - " \"anyway it goes, i'mma get gold\",\n", - " \"and i could see the top, the way i'm climbin this pole\",\n", - " \"a nigga with the flu ain't rhyming this cold\",\n", - " 'and nigga i\\'m hotter than a \"fire in the hole\"',\n", - " \"steppin' out my shower like a lion in a robe\",\n", - " \"eyin' these hoes, iron in my hol-ster\",\n", - " 'surp, purp, sure',\n", - " \"let's elevate and get away, accelerate and never hate\",\n", - " 'dedicate this, to the blue eyes and blonde hair',\n", - " \"i'm on top of my green like a lawn chair\",\n", - " \"don't worry, i'm straight like arm hair\",\n", - " \"don't worry, i'm straight like combed hair\",\n", - " 'this world fucked my pops and i was born here',\n", - " 'from the cell to a jet, call it con-air',\n", - " 'i told my niggas that we would see',\n", - " 'better days yesterday, and today is a better day',\n", - " 'celebrate',\n", - " 'oh man',\n", - " 'oh man, oh man',\n", - " 'not again',\n", - " 'yeah, i learned the game from william wesley, you can never check me',\n", - " \"back to back for the niggas that didn't get the message\",\n", - " \"back to back, like i'm on the cover of lethal weapon\",\n", - " \"back to back, like i'm jordan '96, '97\",\n", - " 'woah—very important and very pretentious',\n", - " 'when i look back, i might be mad that i gave this attention',\n", - " \"yeah, but it's weighin' heavy on my conscience\",\n", - " 'yeah, and fuck, you left the boy no options',\n", - " 'i wanna see my niggas go insane',\n", - " \"you gon' make me step out of my fuckin' frame\",\n", - " \"you gon' make me buy bottles for charlamagne\",\n", - " \"you gon' make me go out of my fuckin' way\",\n", - " \"i waited four days, nigga, where y'all at?\",\n", - " \"i drove here in the wraith playin' ar-ab\",\n", - " \"i'm not sure what it was that really made y'all mad\",\n", - " \"but i guess this is what i gotta do to make y'all rap\",\n", - " \"i mean woah, can't fool the city, man, they know what's up\",\n", - " \"second floor at tootsies, gettin' shoulder rubs\",\n", - " \"this for y'all that think that i don't write enough\",\n", - " \"they just mad 'cause i got the midas touch\",\n", - " 'you love her, then you gotta give the world to her',\n", - " \"is that a world tour or your girl's tour?\",\n", - " 'i know that you gotta be a thug for her',\n", - " \"this ain't what she meant when she told you to open up more\",\n", - " 'yeah, trigger fingers turn to twitter fingers',\n", - " \"yeah, you gettin' bodied by a singin' nigga\",\n", - " \"i'm not the type of nigga that'll type to niggas\",\n", - " \"and shout-out to all my boss bitches wifin' niggas\",\n", - " 'make sure you hit him with the prenup',\n", - " 'then tell that man to ease up',\n", - " 'i did another one, i did another one',\n", - " \"you still ain't did shit about the other one\",\n", - " 'i got the drink in me going back to back',\n", - " 'yeah, going back to back',\n", - " 'i got the drink in me going back to back',\n", - " \"yeah, i'm going back to back\",\n", - " \"i don't wanna hear about this ever again\",\n", - " 'not even when she tell him that they better as friends',\n", - " 'not even when you saying, \"drizzy, tell \\'em again!\"',\n", - " \"i been puttin' on a show, it was a sell-out event\",\n", - " \"oh, you need better seatin'\",\n", - " \"i didn't wanna do it, gave me every reason\",\n", - " \"the point i'm tryin' to make is i don't ever need 'em\",\n", - " \"seen what you'd do for fame, what would you do for freedom?\",\n", - " \"please, check 'em for a wire or a earpiece\",\n", - " 'please, please do not let these niggas near me',\n", - " 'please, think before you come for the great one',\n", - " \"please, who's a real nigga and who ain't one?\",\n", - " 'please, somebody stop me',\n", - " \"i'm talkin' boasy and gwanin wassy\",\n", - " \"i got the fest in five days and it's my shit\",\n", - " \"soon as a nigga hit the stage, they gon'\",\n", - " \"they gon' ask if i can play this shit back to back\",\n", - " 'yeah, they want it back to back',\n", - " \"they gon' ask if i can play this shit back to back\",\n", - " \"i took a break from views, now it's back to that, nigga (six)\",\n", - " 'when i need motivation',\n", - " 'my one solution is my queen',\n", - " \"'cause she stay strong (yeah, yeah)\",\n", - " 'she is always in my corner',\n", - " 'right there when i want her',\n", - " 'all these other girls are tempting',\n", - " \"but i'm empty when you're gone\",\n", - " 'and they say',\n", - " 'do you need me?',\n", - " \"do you think i'm pretty?\",\n", - " 'do i make you feel like cheating?',\n", - " \"and i'm like no, not really, 'cause\",\n", - " 'oh, i think that i found myself a cheerleader',\n", - " 'she is always right there when i need her',\n", - " 'oh, i think that i found myself a cheerleader',\n", - " 'she is always right there when i need her',\n", - " 'she walks like a model',\n", - " 'she grants my wishes like a genie in a bottle (yeah, yeah)',\n", - " \"'cause i'm the wizard of love\",\n", - " 'and i got the magic wand',\n", - " 'all these other girls are tempting',\n", - " \"but i'm empty when you're gone\",\n", - " 'and they say',\n", - " 'do you need me?',\n", - " \"do you think i'm pretty?\",\n", - " 'do i make you feel like cheating?',\n", - " \"and i'm like no, not really 'cause\",\n", - " 'oh, i think that i found myself a cheerleader',\n", - " 'she is always right there when i need her',\n", - " 'oh, i think that i found myself a cheerleader',\n", - " 'she is always right there when i need her',\n", - " 'she gives me love and affection',\n", - " \"baby, did i mention, you're the only girl for me\",\n", - " \"no, i don't need a next one\",\n", - " 'mama loves you too, she thinks i made the right selection',\n", - " \"now all that's left to do\",\n", - " 'is just for me to pop the question',\n", - " 'oh, i think that i found myself a cheerleader',\n", - " 'she is always right there when i need her',\n", - " 'oh, i think that i found myself a cheerleader',\n", - " 'she is always right there when i need her']}}},\n", - " 'eo': {'sentence': {'pop': {'meta': {'train_data': ['aaa',\n", - " 'abb',\n", - " 'abc',\n", - " 'abn',\n", - " 'abs',\n", - " 'aeg',\n", - " 'afl',\n", - " 'afx',\n", - " 'amc',\n", - " 'amd',\n", - " 'amp',\n", - " 'ana',\n", - " 'aol',\n", - " 'asa',\n", - " 'ati',\n", - " 'atm',\n", - " 'aux',\n", - " 'avi',\n", - " 'bal',\n", - " 'bbc',\n", - " 'bbq',\n", - " 'bet',\n", - " 'bic',\n", - " 'bit',\n", - " 'bmg',\n", - " 'bmw',\n", - " 'bmx',\n", - " 'bpm',\n", - " 'bse',\n", - " 'bvg',\n", - " 'c++',\n", - " 'cbf',\n", - " 'cbs',\n", - " 'cdg',\n", - " 'cdr',\n", - " 'ceo',\n", - " 'cia',\n", - " 'cnn',\n", - " 'csa',\n", - " 'cue',\n", - " 'd&b',\n", - " 'dac',\n", - " 'daf',\n", - " 'dat',\n", - " 'dax',\n", - " 'dbu',\n", - " 'dbv',\n", - " 'ddd',\n", - " 'ddm',\n", - " 'den',\n", - " 'dfa',\n", - " 'dhl',\n", - " 'din',\n", - " 'dmx',\n", - " 'dna',\n", - " 'dos',\n", - " 'dpa',\n", - " 'dfm',\n", - " 'dsp',\n", - " 'dvd',\n", - " 'dwg',\n", - " 'ean',\n", - " 'ecg',\n", - " 'elf',\n", - " 'elo',\n", - " 'emi',\n", - " 'ems',\n", - " 'eps',\n", - " 'eta',\n", - " 'eur',\n", - " 'fax',\n", - " 'fbi',\n", - " 'fox',\n", - " 'fpm',\n", - " 'ftp',\n", - " 'gps',\n", - " 'grm',\n", - " 'hal',\n", - " 'hbo',\n", - " 'hdv',\n", - " 'hi8',\n", - " 'hiv',\n", - " 'hmv',\n", - " 'htc',\n", - " 'ibm',\n", - " 'ice',\n", - " 'idm',\n", - " 'ifa',\n", - " 'ion',\n", - " 'ira',\n", - " 'iso',\n", - " 'itc',\n", - " 'itv',\n", - " 'jal',\n", - " 'jbl',\n", - " 'jcb',\n", - " 'jfk',\n", - " 'jpg',\n", - " 'jvc',\n", - " 'kfc',\n", - " 'kgb',\n", - " 'klf',\n", - " 'lan',\n", - " 'lax',\n", - " 'led',\n", - " 'lfo',\n", - " 'lsd',\n", - " 'mac',\n", - " 'mam',\n", - " 'man',\n", - " 'mao',\n", - " 'mgm',\n", - " 'mia',\n", - " 'mic',\n", - " 'mid',\n", - " 'mmm',\n", - " 'mov',\n", - " 'mp3',\n", - " 'mph',\n", - " 'mri',\n", - " 'mtv',\n", - " 'naa',\n", - " 'nbc',\n", - " 'nec',\n", - " 'nex',\n", - " 'ngo',\n", - " 'nhk',\n", - " 'nin',\n", - " 'nsa',\n", - " 'omd',\n", - " 'omg',\n", - " 'p2p',\n", - " 'pal',\n", - " 'pan',\n", - " 'pbs',\n", - " 'pda',\n", - " 'pdf',\n", - " 'pfl',\n", - " 'pil',\n", - " 'pin',\n", - " 'ppc',\n", - " 'pvc',\n", - " 'pwr',\n", - " 'raf',\n", - " 'rai',\n", - " 'ram',\n", - " 'rbb',\n", - " 'rbi',\n", - " 'rca',\n", - " 'rec',\n", - " 'rev',\n", - " 'rfe',\n", - " 'rgb',\n", - " 'rtl',\n", - " 'rza',\n", - " 'saa',\n", - " 'sal',\n", - " 'sat',\n", - " 'sdk',\n", - " 'sis',\n", - " 'sms',\n", - " 'snd',\n", - " 'sol',\n", - " 'sos',\n", - " 'suv',\n", - " 'sxf',\n", - " 'tdk',\n", - " 'tf1',\n", - " 'tgl',\n", - " 'thx',\n", - " 'tlc',\n", - " 'tnt',\n", - " 'trs',\n", - " 'tv5',\n", - " 'twa',\n", - " 'txl',\n", - " 'txt',\n", - " 'ufo',\n", - " 'uhu',\n", - " 'uno',\n", - " 'upn',\n", - " 'ups',\n", - " 'usa',\n", - " 'usb',\n", - " 'usd',\n", - " 'usr',\n", - " 'vca',\n", - " 'vga',\n", - " 'vhr',\n", - " 'vhs',\n", - " 'vst',\n", - " 'xfm',\n", - " 'xlr',\n", - " 'xxx',\n", - " 'zip',\n", - " \"sempire d'amor\",\n", - " 'sumo lideo',\n", - " 'en mi altera',\n", - " 'ilo cante di amor',\n", - " 'infanatibo',\n", - " 'sensore moni',\n", - " \"sempire d'amor\",\n", - " 'sempire mi adore',\n", - " \"sempire d'amor\",\n", - " 'sumo lideo',\n", - " 'en mi altera',\n", - " 'sempire mi adore',\n", - " 'infanatibo',\n", - " 'sensore moni',\n", - " \"sempire d'amor\",\n", - " 'sempire mi adore',\n", - " \"sempire d'amor\",\n", - " 'sumo lideo',\n", - " 'en mi altera',\n", - " 'ilo cante di amor',\n", - " 'infanatibo',\n", - " 'sensore moni',\n", - " \"sempire d'amor\",\n", - " 'sempire mi adore',\n", - " 'infanatibo',\n", - " 'sensore mori',\n", - " \"sempire d'amor\",\n", - " 'sempire mi adore',\n", - " \"sempire d'amor\",\n", - " 'sumo lideo',\n", - " 'en mi altera',\n", - " 'sempire mi adore',\n", - " \"sempire d'amor\",\n", - " 'sempire mi adore',\n", - " \"sempire d'amor\",\n", - " 'sumo lideo',\n", - " 'en mi altera',\n", - " 'ilo cante di amor. (fade out)',\n", - " 'how did we ever go this far?',\n", - " 'you touch my hand and start the car',\n", - " 'and for the first time in my life',\n", - " \"i'm crying\",\n", - " 'are we in space? do we belong?',\n", - " 'someplace where no one calls it wrong',\n", - " 'and like the stars we burn away',\n", - " 'the miles',\n", - " 'ya zvezda, ty zvezda',\n", - " \"nas prikazano szhech'\",\n", - " 'kto-to sdal i dostal',\n", - " 'adresa nashikh vstrech',\n", - " 'potolki po glazam',\n", - " 'i nikto ne naidyet',\n", - " \"soskol'znut golosa\",\n", - " 'i slomayetsya lyod',\n", - " \"i nich'ya bez klyucha\",\n", - " \"i mogila postel'\",\n", - " \"i pora vyklyuchat'\",\n", - " 'i oni na khvoste',\n", - " \"ulybnis', razvyazhi\",\n", - " \"zanaves' zerkala\",\n", - " 'razorvi, i skazhi',\n", - " 'umerla, umerla',\n", - " 'zamykai i lizhi',\n", - " \"stanovis' nikakoi\",\n", - " 'i ruka ne drozhit',\n", - " 'vse v poryadke s rukoi',\n", - " \"mozhno mstit, 'dvazhdy dva\",\n", - " 'na taksi i sosi',\n", - " \"a prostit' nikogda\",\n", - " 'nikogda ne prosi',\n", - " 'khorosho, khorosho',\n", - " \"ya pridumala mest'\",\n", - " \"poroshok vse chto est'\",\n", - " \"umnozhayu na shest'\",\n", - " 'ne zvoni, ne zvoni',\n", - " 'ya ustala, ya ustala',\n", - " 'ya tebya ne khochu',\n", - " 'ty menya',\n", - " 'how did we ever get this far?',\n", - " \"it shouldn't have to be this hard\",\n", - " 'now for the first time in my life',\n", - " \"i'm flying\",\n", - " 'are we in love? do we deserve',\n", - " 'to bear the shame of this whole world?',\n", - " 'and like the night we camouflage',\n", - " 'denial',\n", - " 'nikogda nichego',\n", - " \"nichego ne nachat'\",\n", - " 'nikogda nikogo',\n", - " \"umirat' i molchat'\",\n", - " \"ne iskat', ne lyubit'\",\n", - " \"ne zhalet' i ne spat'\",\n", - " 'nikogda nikuda',\n", - " \"nikogo ne puskat'\",\n", - " \"ne vdvoem, i ub'em\",\n", - " \"im prisnit'sya voda\",\n", - " 'ne tvoe, ne moe',\n", - " 'provoda, provoda',\n", - " \"geroin, pul'sa net\",\n", - " \"tol'ko ti ne pri chem\",\n", - " 'abonent otklyucen',\n", - " 'how did we ever go this far?',\n", - " 'you touch my hand and start the car',\n", - " 'and for the first time in my life',\n", - " \"i'm crying\",\n", - " 'are we in love? do we deserve',\n", - " 'to bear the shame of this whole world?',\n", - " 'and like the night we camouflage',\n", - " 'denial',\n", - " 'how did we ever go this far?',\n", - " 'ya zvezda, ty zvezda',\n", - " 'nas prikazano szech',\n", - " 'kto-to sdal i dostal',\n", - " 'you touch my hand and start the car',\n", - " 'adresa nashikh vstrech',\n", - " 'potolki po glazam',\n", - " 'i nikto ne naidyet',\n", - " \"soskol'znut golosa\",\n", - " 'and for the first time in my life',\n", - " 'i slomayetsya lyod',\n", - " \"i nich'ya bez klyucha\",\n", - " \"i mogila postel'\",\n", - " \"i pora vyklyuchat'\",\n", - " 'i oni na khvoste',\n", - " \"i'm crying\",\n", - " \"ulybnis', razvyazhi\",\n", - " \"zanaves' zerkala\",\n", - " 'razorvi, i skazhi',\n", - " 'umerla, umerla',\n", - " 'are we in love, do we deserve',\n", - " 'zamykai i lizhi',\n", - " \"stanovis' nikakoi\",\n", - " 'i ruka ne drozhit',\n", - " 'vse v poryadke s rukoi',\n", - " 'to bear the shame of this whole world?',\n", - " \"mozhno mstit, 'dvazhdy dva\",\n", - " 'na taksi i sosi',\n", - " \"a prostit' nikogda\",\n", - " 'nikogda ne prosi',\n", - " 'and like the night we camouflage',\n", - " 'khorosho, khorosho',\n", - " \"ya pridumala mest'\",\n", - " \"poroshok vse chto est'\",\n", - " \"umnozhayu na shest'\",\n", - " 'denial',\n", - " 'ne zvoni, ne zvoni',\n", - " 'ya ustala, ya ustala',\n", - " 'ya tebya ne khochu',\n", - " 'ty menya',\n", - " 'cherna luna se izdiga v yuzhnoto nebe..',\n", - " 'kichest yavor, vpiva koreni v zemyata velika..',\n", - " 'horoto na ptici, krasivi, dulboko v gorata',\n", - " 'lunata se oglezhda v tihia yazovir',\n", - " 'neka vsichki bulgarski yunaci da se saberat',\n", - " 'da dignat mecha si za znaka na bulgarskiyat rod',\n", - " 'veliki, mrachni planini...',\n", - " 'veliki, mrachni planini...',\n", - " 'puteki prez hulmove na drevni gradove',\n", - " 'i kreposti na bulgarskata sila',\n", - " 'uyutno legnala v kamenna pregrudka',\n", - " 'na moite snezhni i tumni vurhove',\n", - " 'when the forest dreams eternally, my winds gather beyond the moon. dark balkan silence, cold majestic silhouttes',\n", - " 'a winter marriage, the mountains drapped in mist',\n", - " 'shivering moonlight above the ancient fields',\n", - " '1000 partisans against the overwhelming enemy',\n", - " 'hidden in the velvet dress of vitosha',\n", - " 'these are my old frostbitten mountains',\n", - " 'slunceto trepti, zaoda, v syankata na chernia vruh',\n", - " 'i gorata shepne (vika me), da grabna trona na vitosha',\n", - " 'dgeo gadiddi',\n", - " 'tovli gaadne',\n", - " 'visac ufro sescivda gamit , is metad gaatbe',\n", - " 'guli sxvisi bednierebit gaaxare',\n", - " 'mze amosvlas ar agvianebs',\n", - " 'sitbos achukebs adamianebs',\n", - " 'da dedamitsa sikvarulit trialebs',\n", - " 'sxvisi gaigo , sxvistvis gaigo',\n", - " 'guli ra aris cxrajer cxrad tu ar gaiko',\n", - " 'sxva kvelaferi, qarma tsaigo',\n", - " 'sheni mxolod is aris, rasac sxvistvis tmob',\n", - " 'dge atenebs games',\n", - " 'tu shens gverdit var me',\n", - " 'ragac mtavrdeba, ragac itskeba',\n", - " 'qvekanad sikete iko, aris da iqneba',\n", - " 'sheni gulistvis',\n", - " 'sikvarulistvis',\n", - " 'tundac erti tsutistvis',\n", - " 'isev vagrzelebt gzas',\n", - " 'rasaca gascem shenia',\n", - " 'kitao paies fotografies',\n", - " 'mikres dikes mas istories',\n", - " \"xamogela pou klistikan s' ena xarti\",\n", - " 'diavazo kartes, gramata sou',\n", - " 'ke sto psigio simiomata sou',\n", - " \"ki ap' o, ti se thimizi peron zoi\",\n", - " 'ma den teliosame',\n", - " 'den ginete sou leo, den teliosame',\n", - " 'to xrono apla gia ligo ton pagosame',\n", - " 'afto thimame, afto ipes prin xathis',\n", - " 'ke mou to orkistikes',\n", - " \"ma ap' ti zoi mou tora eksafanistikes\",\n", - " 'gia tin agapi mou pote den pistikes',\n", - " 'ma akoma den teliosame emis',\n", - " 'tragoudia grafo pou ponane',\n", - " 'ki apo ta matia mou kilane',\n", - " 'dio kategides dakria pou se zitoun',\n", - " 'ki otan i nixta ksimeroni',\n", - " 'tromazo an den ise moni',\n", - " \"ki an ala kili gia 'kalimera' se filoun\",\n", - " 'ma andexo akoma ke as ginome lioma',\n", - " 'pligomeni kardia mou kane ipomoni',\n", - " 'ma andexo sou leo ki as xtipieme ki as kleo',\n", - " \"mesa stin angalia mou kapia mera tha' rthi\",\n", - " 'greedo:',\n", - " 'oonta goota, solo?',\n", - " 'jabba wanin cheeco-wa rush anye katanye wanaruska',\n", - " 'enjaya kul a intekun kuthuow',\n", - " 'cheskopokuta klees ka tlanko ... ya oska',\n", - " 'han solo:',\n", - " \"yes, i'll bet you have\",\n", - " 'c-3po:',\n", - " 'r2, wait! oh dear...',\n", - " \"r2! r2, i really don't think we should rush into all of this\",\n", - " 'greedo:',\n", - " 'jabba wanin cheeco-wa rush anye katanye wanaruska',\n", - " 'enjaya kul a intekun kuthuow',\n", - " 'cheskopokuta klees ka tlanko ... ya oska',\n", - " '...rush anye katanye wanaruska',\n", - " 'oonta goota, solo?',\n", - " 'paroles de manal bk \"taj\"',\n", - " 'hey, b9a tem fblasstek w 7ssabek tawik',\n", - " 'ha, ana dakchi dyalhom makandirch, chkon galha lik',\n", - " 'ghandir ghi dakchi li gali bali',\n", - " 'ey, li gali bali',\n", - " '3arfa rassi ra makinch b7ali',\n", - " 'ey, makinch b7ali',\n", - " 'ra taji ghali, ey 7bibi ra taji ghali',\n", - " 'ey, ey, dertini rkhissa mali ra ghandir dakchi li bali',\n", - " 'ratata, b7al chi 9ortass (b7al chi 9ortass)',\n", - " 'b9aw tab3ini (b9aw tab3ini)',\n", - " 'khodo hadi face (khodo hadi face)',\n", - " 'li gad ybali aji nchof chkon li fina ydir l7ala',\n", - " 'ra 3arfa rassi maghandir ghi 9yassi fin ntoma fin ana',\n", - " 'hey, b9a tem fblasstek w 7ssabek tawik',\n", - " 'ha, ana dakchi dyalhom makandirch',\n", - " 'safi gha nssa li fat, dakchi libghitoni ndiro ra maghandiroch',\n", - " \"daba ra kolchi ban, disk dyali li 9bel hada ra dreb l'million\",\n", - " 'film dyalkom khawi tla3 gha maghchoch',\n", - " 'fake, fake, fake, makanchamouch',\n", - " 'hanya, hanya, hanya maknchamouch',\n", - " 'wakha t3icho 7yatkom tab3in maghatchadoch',\n", - " 'ratata, b7al chi 9ortass (b7al chi 9ortass)',\n", - " 'b9aw tab3ini (b9aw tab3ini)',\n", - " 'khodo hadi face (khodo hadi face)',\n", - " 'li gad ybali aji nchof chkon li fina ydir l7ala',\n", - " 'ra 3arfa rassi maghandir ghi 9yassi fin ntoma fin ana',\n", - " 'hey, b9a tem fblasstek w 7ssabek tawik',\n", - " 'ha, ana dakchi dyalhom makandirch, chkon galha lik',\n", - " 'ghandir ghi dakchi li gali bali',\n", - " 'ey, li gali bali',\n", - " '3arfa rassi ra makinch b7ali',\n", - " 'ey, makinch b7ali',\n", - " 'ra taji ghali, ey 7bibi ra taji ghali',\n", - " 'ey, ey, dertini rkhissa mali ra ghandir dakchi li bali',\n", - " 'om mani padme hum',\n", - " 'om mani padme hum',\n", - " 'om mani padme hum',\n", - " 'om mani padme hum',\n", - " 'om mani padme hum',\n", - " 'om mani padme hum',\n", - " 'om mani padme hum',\n", - " 'the sound of silence, the diamond in the',\n", - " 'lotus',\n", - " '(miten/deva premal)',\n", - " 'alla thelo ki alla kano pos na sou to po',\n", - " 'elega pernoun ta hronia tha simmorfotho',\n", - " 'ma einai doro adoro n’ allakseis haraktira',\n", - " 'tzaba kratas logariasmo tzaba sostos me to stanio',\n", - " 'ekso fisaei aeras ki omos mesa mou',\n", - " 'mesa s’ avto to spiti prigipesa mou',\n", - " 'to fos sou kai to fos horevoun giro mas',\n", - " 'apisteftos o kosmos ki o haraktiras mas',\n", - " 'alla thelo ki alla kano ki eftasa os edo',\n", - " 'lathi strava kai pathi m’ evgalan sosto',\n", - " 'ksimeromata sto dromo rihno petonia',\n", - " 'piano ton eavto mou kai hano to mialo mou',\n", - " 'ekso fisaei aeras ki omos mesa mou',\n", - " 'mesa s’ avto to spiti prigipesa mou',\n", - " 'to fos sou kai to fos horevoun giro mas',\n", - " 'apisteftos o kosmos ki o haraktiras mas']},\n", - " 'data': ['de trado trado',\n", - " 'de lungone dromença',\n", - " 'meg chi reso dade',\n", - " 'de lungone dromença',\n", - " 'meg chi reso dade',\n", - " 'de meg chi reso le praloren',\n", - " 'te le pralen reso',\n", - " 'duj ges mulatino',\n", - " 'te pinjaren mande',\n", - " 'duj ges mulatino',\n", - " 'te pinjaren mande',\n", - " 'de kon i la romano chavo',\n", - " 'ej de ma devla',\n", - " 'duj edjer koroni',\n", - " 'hot te kerav devlam',\n", - " 'duj edjer koroni',\n", - " 'hot te kerav devlam',\n", - " 'hot te kerav muri voja',\n", - " 'zotar mamo zotar',\n", - " 'lungone dromença',\n", - " 'de kaj me mamo raklo',\n", - " 'lungone dromença',\n", - " 'de kaj me mamo raklo',\n", - " 'feri mure le praloren',\n", - " 'me piav mulatinav',\n", - " 'le but romença',\n", - " 'maj sig le tchirença',\n", - " 'le bute romença',\n", - " 'maj sig le tchirença',\n", - " 'apal chore mamo le hralença',\n", - " 'gieokhani himdeureot deon shigandeul',\n", - " 'myeot beonigo pogi hago shipdeon nanal deul',\n", - " 'jeo muni yeolligo bichi nae nuneul balgge bichulttae',\n", - " 'kkum kkweo wasseotdeon sungan',\n", - " 'this is my dream, gakkeumsshik hime buchyeo sseureo jigo shipeulttae',\n", - " 'it was my dream, myeot beoneul neomeo jyeodo nal dashi seweo jungeon',\n", - " \"you're my dream, you're my soul, you're my reason\",\n", - " 'saragari iu baro neo, i need you girl, niga nawi kkum',\n", - " 'shwipji anheun gireul georeo gandedo',\n", - " 'eonjekkaji nawa hamkke georeo julsu itgetni',\n", - " 'jeo muni yeolligo bichi nae nuneul balgge bichulttae',\n", - " 'neoreul bolsuga isseo',\n", - " 'this is my dream, gakkeumsshik hime buchyeo sseureo jigo shipeulttae',\n", - " 'it was my dream, myeot beoneul neomeo jyeodo nal dashi seweo jungeon',\n", - " \"you're my dream, you're my soul, you're my reason\",\n", - " 'saragari iu baro neo, i need you girl, niga nawi kkum',\n", - " 'pogihago shipeul ttaedo neomu manhat jiman',\n", - " 'dashi narireu kyeojun geon',\n", - " 'meomchul su eobseo neol wihae norae haneun geol',\n", - " \"igeon nawi kkum, you're my dream\",\n", - " 'this is my dream, gakkeumsshik hime buchyeo sseureo jigo shipeulttae',\n", - " 'it was my dream, myeot beoneul neomeo jyeodo nal dashi seweo jungeon',\n", - " \"you're my dream, you're my soul, you're my reason\",\n", - " 'saragari iu baro neo, i need you girl, niga nawi kkum',\n", - " 'arirang, arirang, arariyo',\n", - " 'arirang gogaero neomeoganda',\n", - " 'arirang, arirang, arariyo',\n", - " 'arirang gogaero neomeoganda',\n", - " 'nareul beorigo gasineun nimeun',\n", - " 'simnido motgaseo balbbyeongnanda',\n", - " \"i'm always on the run and i hate copy paste for god's sake\",\n", - " 'arirang, arirang, arariyo',\n", - " 'arirang gogaero neomeoganda',\n", - " 'arirang, arirang, arariyo',\n", - " 'arirang gogaero neomeoganda',\n", - " 'cheongcheonghaneuren chanbyeoldo manko',\n", - " 'urine gaseumen huimangdo manta',\n", - " 'oblache, ne se surdi, u doma te chaka domakinya',\n", - " 'cyal svyat si vidyal, i vse si stoish snezhno byal',\n", - " 'zvezdite na nebeto pak shepnat po mezhdu si',\n", - " 'i pletat noshtno cherzhe s koprinena mugla',\n", - " 'nebeto staro tiho pada i se sriva v moite dlani',\n", - " 'nebeto gulta cherni pari i zatrupva kashturki pod snega',\n", - " 'oblache, ne se plashi, tozi batalyon ot buri ti e druzhina',\n", - " 'da veesh dobre nad tezi sela, pyasakut na kusnata zima',\n", - " 'snezhni demoni stoyat na kreposti po vitosha',\n", - " 'mracni bolyari revat i preryazvat noshtnata aura',\n", - " 'old clouds and winds of the south, open the gates of the gloomy balkan. so the fog can pass, into the fields of tracia, into the valleys of tundzha, struma and marica',\n", - " 'poleto razhda tikvi',\n", - " 'planinata geroi']}}},\n", - " 'es': {'sentence': {'pop': {'meta': {'train_data': ['(sen dog)',\n", - " \"don't be like, uh, a cubano\",\n", - " 'be like ? stoned marijuano',\n", - " 'esta capitan pingolete',\n", - " 'swing is here with the force of a machete',\n", - " 'kick mad lingo from spain to tijuana',\n", - " 'real hijo de puta homeboy ask yo mama',\n", - " 'no me importa pinga mi niña',\n", - " \"all i wanna know que 'ta bueno cinga\",\n", - " \"don't be scared echate pa' ca\",\n", - " \"what's the play dog homeboy goin' on\",\n", - " 'ni**as o.g. straight veterano',\n", - " 'master the spanglish style encojonao',\n", - " \"y'all fools know aqui no se juega\",\n", - " \"don't act a fool y no rompa las reglas\",\n", - " 'we bien crazy ass asesino',\n", - " 'get your guns ready aqui viene peligro',\n", - " '(chorus: tego calderon)',\n", - " 'salte con tego',\n", - " 'llegaron los mero mero',\n", - " 'cuba, borinquen, mexico entero',\n", - " 'los angeles, como arriba, andale',\n", - " 'prende la mota, pero lo que quiero es cule',\n", - " 'salte con tego',\n", - " 'llegaron los mero mero',\n", - " 'cuba, borinquen, mexico entero',\n", - " 'los angeles',\n", - " '(b-real)',\n", - " 'they call me papi chulo',\n", - " \"you know i'm puro\",\n", - " 'i never fade away',\n", - " \"you see me comin' get your ass runnin i know you hate away\",\n", - " 'hit the leño harder than most niggas you idolize',\n", - " 'get it started quicker and hit you before you try to hide',\n", - " '(sen dog)',\n", - " 'latin thug roll deep pandillero',\n", - " 'puro los angeles south side ghetto',\n", - " 'carpet, car black y perro loco',\n", - " 'keep an eye on that fiend, porque yo me la cojo',\n", - " \"'e pingado, poca lita\",\n", - " 'saco mi pinga y me singo la pista',\n", - " \"can't get enough of them l.a. skonka\",\n", - " 'get a little wild y me como la chocha',\n", - " 'listen up compa the big cypress loma',\n", - " 'still right here y todavia te controla',\n", - " \"this ain't no telemundo special\",\n", - " 'the homies that i roll with for real will come wet you',\n", - " '(chorus)',\n", - " '(tego calderon)',\n", - " 'hey who the fuck is that',\n", - " 'otro negro loco, daddy',\n", - " 'y necolado, uno de lo pato malo',\n", - " \"mucha mucha bala pa' los raton e desmaya\",\n", - " 'que moriran seguro sin faya',\n", - " \"i ain't neva scared you heard\",\n", - " 'otro bobo, esta jodienda yo la controlo',\n", - " 'vete manso, vete easy, quedate vivo',\n", - " 'como quiera que te ponga lo que hay es castigo',\n", - " 'soy vivo latino, pistola, cuchillo',\n", - " \"pa' defendenlo de los enemigos\",\n", - " 'esto son maligno, no tienen tiqueta ni singo',\n", - " 'pero to dicen lo mismo',\n", - " 'siiiimon, tegon, el de pajon, ese si que un cabron',\n", - " \"un majon, blastin' all these motherfuckers\",\n", - " 'envidiosos, sapos y chotas',\n", - " \"tirale pa' la cabeza, si se va, no regresa\",\n", - " \"eh pa' que suban y ja sepa\",\n", - " 'otro mas, de circulacion se va papa',\n", - " 'y no lloro y ni la mama...',\n", - " 'so many signs so little time',\n", - " \"i can't rush love\",\n", - " \"don't go away say what you say\",\n", - " \"but say that you'll stay\",\n", - " 'no puedo hablar estoy pensando en ti',\n", - " 'ay mi morena you quero hoir tu vos',\n", - " 'suigo mirandote todas las noches',\n", - " 'ay mi morena mi nombre es...',\n", - " 'so many signs so little tïme',\n", - " \"i can't rush love\",\n", - " \"don't go away say what you say\",\n", - " \"but say that you'll stay\",\n", - " 'he recorrido el mundo reventando burbujas con el pang',\n", - " 'y me acabé el double dragon usando el codazo nada más',\n", - " 'con ryu y ken reventé los dientes a chun-li y a blanka',\n", - " 'para que quieres skyrim si es mejor el golden axe',\n", - " 'ya me he gastado mil pelas continuando al metal slug',\n", - " 'me duele el brazo y me suda el escroto',\n", - " 'estoy a punto de matar al monstruo del final',\n", - " 'se ha ido la luz cago en satán',\n", - " 'game over – do you wish to continue',\n", - " 'game over – insert coin and press player one',\n", - " 'me convalidaron la mili por acabarme el combat school',\n", - " 'y saqué el cinturón negro chapeando al yie-ar kung fu',\n", - " 'apretadicos cabemos 4 jugando al gauntlet',\n", - " 'para que juegas al need for speed si ya tienes el out run',\n", - " 'mirones te rodean esperando tu final',\n", - " 'te echan el humo y te soplan la nuca',\n", - " 'igual que en el altered beast me empiezo a cabrear',\n", - " 'van a llover ostias a lo final fight',\n", - " 'game over – do you wish to continue',\n", - " 'game over – insert coin and press player one',\n", - " 'esperando la ficha roja al tetris me pongo tenso',\n", - " 'aquel en 3 dimensiones era un truño inmenso',\n", - " 'corrí en gallumbos los cementerios del ghost and goblins',\n", - " 'déjate de call of duty y juega al operation wolfgreen beret, cabal y arkanoid',\n", - " 'pacman y wonderboy',\n", - " 'black tiger, snow bros y enduro racer',\n", - " 'space invaders, asteroids',\n", - " 'moon patrol, mario bros',\n", - " 'ya me han matao, mecagoenrros',\n", - " 'game over – do you wish to continue',\n", - " 'game over – insert coin and press player one',\n", - " '….? so high',\n", - " 'down to this underworld',\n", - " 'plant the steps and later rest',\n", - " 'in fields of dreams with big country greens',\n", - " 'déjame estar que yo hablo;',\n", - " 'y por detrás un sol no mayor que el corazón y el sueño valor;',\n", - " 'de querer un mundo mejor;',\n", - " 'de creer en ver tu y yo en un futuro menos duro y de más valor',\n", - " 'déjame estar que yo lo hago',\n", - " 'camino tu sueño',\n", - " 'we’ve no regret',\n", - " 'to watch the phase burn, old trees',\n", - " 'welcome rebirth, new leaf, turn',\n", - " '…?',\n", - " 'ring of dedication',\n", - " 'laid on foundation',\n", - " 'grist the coffle of memories',\n", - " 'and slowly fade wondery turns',\n", - " 'lo que pasó pasó',\n", - " 'y lo que fue de paso pasó',\n", - " 'y lo que fue el pasado pasó',\n", - " 'y lo de ayer un paso y hoy otro paso en un trazo en el espacio de un tiempo',\n", - " 'somos pasos en un camino antiguo',\n", - " 'nada más',\n", - " 'we’ve no regret',\n", - " 'to watch the phase burn, old trees',\n", - " 'welcome rebirth, new leaf, turn',\n", - " 'todo el trabajo de un pasado tan amado/amargo',\n", - " 'todo este sufrir por mí',\n", - " 'llámame nacer',\n", - " 'llámame viejo por nacer',\n", - " 'llámame hijo del nacer',\n", - " 'semilla de un mundo por hacer',\n", - " 'llámame crecer',\n", - " 'semilla de un mundo por ver',\n", - " 'semilla del ir y sentir',\n", - " 'llámame morir',\n", - " '…? i choose',\n", - " 'thralled waters',\n", - " 'and feed the roost that i clean',\n", - " 'find the reason for being',\n", - " 'and watch the seeds grow',\n", - " 'razón de ir y razón de seguir',\n", - " 'corazón de vivir',\n", - " 'los que han de venir vendrán a pedir una razón de vivir;',\n", - " 'un camino a seguir, y a donde ir apuntaremos adonde venir; corazón',\n", - " 'we’ve no regret',\n", - " 'to watch the phase burn, old trees',\n", - " 'welcome rebirth, new leaf, turn',\n", - " 'yeah (uoh-oh-oh-oh)',\n", - " 'rasel!',\n", - " '(uoh-oh-oh-oh)',\n", - " 'featuring (uoh-oh-oh-oh)',\n", - " 'baby noel',\n", - " \"let's go!\",\n", - " \"let's dance, everybody on the dance for dance\",\n", - " \"all night long, so let's getting on dance\",\n", - " 'todo el mundo on fire (dance)',\n", - " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", - " 'tu forma de moverte te desata',\n", - " 'cuando bailas haces tuyas las miradas',\n", - " 'eres fuego y cuando empiezas ya no paras',\n", - " 'vamos a bailar (uoh-oh-oh-oh)',\n", - " \"yo', ha llegado el momento\",\n", - " 'tu cuerpo te pide más de un movimiento',\n", - " 'hazlo suave, tú báilalo lento',\n", - " 'eres una loca lo llevas dentro',\n", - " 'you wanna start to dance tonight',\n", - " 'and no matter where you are',\n", - " 'barcelona, sevilla, madrid, new york',\n", - " \"let's go!\",\n", - " \"let's dance, everybody on the dance for dance\",\n", - " \"all night long, so let's getting on dance\",\n", - " 'todo el mundo on fire (dance)',\n", - " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", - " '(put your hands up)',\n", - " \"let's dance, everybody on the dance for dance\",\n", - " \"all night long, so let's getting on dance\",\n", - " 'todo el mundo on fire (dance)',\n", - " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", - " \"let's dance\",\n", - " 'jajaja',\n", - " \"yo! are you ready let's go\",\n", - " 'one, two, three tu tienes flow',\n", - " 'esto es mejor que ningún colocón',\n", - " 'te mueves sexy en la pista bombón',\n", - " 'si tu cuerpo quiere bailar',\n", - " 'tu mente le sigue sin más',\n", - " 'vive la noche, el momento, el lugar',\n", - " 'around the world',\n", - " 'tu forma de moverte te desata',\n", - " 'cuando bailas haces tuyas las miradas',\n", - " 'eres fuego y cuando empiezas ya no paras',\n", - " 'vamos a bailar (uoh-oh-oh-oh)',\n", - " \"let's go!\",\n", - " \"let's dance, everybody on the dance for dance\",\n", - " \"all night long, so let's getting on dance\",\n", - " 'todo el mundo on fire (dance)',\n", - " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", - " '(put your hands up)',\n", - " \"let's dance, everybody on the dance for dance\",\n", - " \"all night long, so let's getting on dance\",\n", - " 'todo el mundo on fire (dance)',\n", - " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", - " '(put your hands up)',\n", - " \"let's dance\",\n", - " 'haz el favor y suelta lo que llevas',\n", - " 'todos sabemos que tu estas bien',\n", - " 'tus labios brillan en la noche ciega',\n", - " 'y te mueves como una pantera',\n", - " 'báilalo oeh, oh!, báilalo oeh, oh!',\n", - " 'miami levanta la mano al sol (uoh-oh-oh-oh)',\n", - " \"let's dance, everybody on the dance for dance\",\n", - " \"all night long, so let's getting on dance\",\n", - " 'todo el mundo on fire (dance)',\n", - " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", - " '(put your hands up)',\n", - " \"let's dance, everybody on the dance for dance\",\n", - " \"all night long, so let's getting on dance\",\n", - " 'todo el mundo on fire (dance)',\n", - " 'todo el mundo on fire (uoh-oh-oh-oh)',\n", - " \"let's dance\",\n", - " 'when the rainbow is rising up',\n", - " 'all the stars shine in the sky',\n", - " 'i remember now your love',\n", - " 'and my mermaid dreams come true',\n", - " 'my prince is blue',\n", - " \"and a hero'll come\",\n", - " 'when i sing my song',\n", - " 'my fantasy love',\n", - " 'oyes cantos en el mar',\n", - " 'las estrellas ves brillar',\n", - " 'sientes algo en tu interior',\n", - " 'sensaciones mágicas recordarás',\n", - " 'que viajó en el tiempo',\n", - " 'fue ancestral, fue perfecto...',\n", - " 'soy una pony',\n", - " 'y en mis sueños podrás encontrar',\n", - " 'todas las respuestas que no lográs hallar',\n", - " 'ansias entender el porqué de este amor',\n", - " 'amor de fantasía en nuestro corazón',\n", - " 'guardado para siempre en las olas del mar',\n", - " 'mi alma de sirena te quiero entregar',\n", - " 'cepillo mis cabellos mientras te canto',\n", - " 'regresa a mí, vuelve por favor',\n", - " 'when the rainbow is rising up',\n", - " 'all the stars shine in the sky',\n", - " 'i remember now your love',\n", - " 'and my mermaid dreams come true',\n", - " 'my prince is blue',\n", - " \"and a hero'll come\",\n", - " 'when i sing my song',\n", - " 'my fantasy love',\n", - " 'i was born a pony once upon a time',\n", - " \"my dreams are full of answers you don't understand\",\n", - " 'dolphins in the ocean keep this memory',\n", - " 'myself, my heart, my mind have a fantasy',\n", - " 'i remember all your answers while i comb my hair',\n", - " 'the story that we play is a fairy tale',\n", - " 'you are the perfect prince what i always want',\n", - " 'and summer after summer we are all we want',\n", - " \"what happened? i don't know\",\n", - " 'me dicen que por borracho josé en la acera quedó',\n", - " \"what happened? i don't know\",\n", - " 'they tell me that drunken joe while drinking fell on his nose',\n", - " 'josé yo le decía deja de estar bebiendo',\n", - " 'porque esas borracheras no dan na',\n", - " 'y el me contestaba: \"ah! yo se lo que estoy haciendo\"',\n", - " 'y en una acera en broadway fue a parar',\n", - " \"what happened? i don't know\",\n", - " 'me dicen que por borracho josé en la acera quedó',\n", - " \"what happened? i don't know\",\n", - " 'they tell me that drunken joe while drinking fell on his nose',\n", - " 'many times i told him:',\n", - " '\"hey joe, man, why don\\'t you stop drinking?\"',\n", - " 'cause in the end you might just come on down',\n", - " 'every time he answered me',\n", - " '\"hey go mind your own business.\"',\n", - " 'and yesterday on broadway he came down.... i beg you...',\n", - " \"what happened? i don't know\",\n", - " 'me dicen que por borracho josé en la acera quedó',\n", - " \"what happened? i don't know\",\n", - " 'they tell me that drunken joe while drinking fell on his nose',\n", - " 'me dicen que por borracho josé en la acera quedó',\n", - " 'they told me that drunken joe while drinking fell on his nose',\n", - " 'coro:',\n", - " \"what happened? i don't know\",\n", - " 'me dicen que por borracho josé en la calle quedó',\n", - " 'lo vi pasar cabizbajo por una calle en downtown',\n", - " 'yo regresaba al trabajo y el comenzaba jumao',\n", - " \"you're pulling quarters from people\",\n", - " 'for coffees you never drink',\n", - " \"you're always hanging on corners\",\n", - " \"drinking, drinking so you won't think\",\n", - " '~',\n", - " 'durmiendo en los callejones del manhattan nocturnal',\n", - " 'buscando en los zafacones desayuno al despertar',\n", - " \"pidiendo plata a la gente pa' poder alcohol comprar\",\n", - " 'con el cuento del hamburguer, josé el alcohol te va a tragar',\n", - " 'josé no tiene familia nadie sabe a donde nació',\n", - " 'nadie sabe donde duerme, ni desde donde bajó',\n", - " '~',\n", - " 'josé ya suelta la esquina y la botella de ron',\n", - " 'cógelo suave molina dale un descanso al riñón',\n", - " 'ya ya ya ya no quiere trabajar allá en la panadería',\n", - " 'sin embargo te amaneces en after hours todos los días',\n", - " 'new york que es una manzana muy difícil de probar',\n", - " 'la cosa ahora esta mas dura con el koch en city hall',\n", - " 'te entregué mi piel',\n", - " 'me mudé en tu ser',\n", - " 'sólo quise ser ésa mujer',\n", - " '(siempre te cuidé',\n", - " 'nunca te fui infiel',\n", - " 'y te amé, te juro',\n", - " 'como a nadie)',\n", - " 'i wanna know',\n", - " 'just let me know',\n", - " 'how could you let me walk away?',\n", - " '(i wanna know',\n", - " 'i gotta know',\n", - " 'how could you just take my love away?',\n", - " 'after all that we made',\n", - " 'somebody please explain!)',\n", - " 'te perdiste mi amor y yo',\n", - " 'y yo te estaba amando',\n", - " '(te perdiste mi amor and you don’t know',\n", - " 'dejaste mi cama llorando)',\n", - " 'cada uno perdió lo que muchos no han logrado',\n", - " 'ni soñando',\n", - " 'saliste a buscar',\n", - " 'y no sabían igual',\n", - " 'ésos besos que yo te entregaba',\n", - " '(no pudiste hallar la felicidad',\n", - " 'ésa que tanto deseabas)',\n", - " 'i wanna know',\n", - " 'just let me know',\n", - " 'how could you let me walk away?',\n", - " '(i wanna know',\n", - " 'i gotta know',\n", - " 'how could you just take my love away?',\n", - " 'after all that we made',\n", - " 'somebody please explain!)',\n", - " 'te perdiste mi amor y yo',\n", - " 'y yo te estaba amando',\n", - " '(te perdiste mi amor and you don’t know',\n", - " 'dejaste mi cama llorando)',\n", - " 'cada uno perdió lo que muchos no han logrado',\n", - " 'ni soñando',\n", - " 'royce',\n", - " 'lady t',\n", - " 'te perdiste mi amor y yo',\n", - " 'y yo te estaba amando',\n", - " '(te perdiste mi amor and you don’t know',\n", - " 'dejaste mi cama llorando)',\n", - " 'te perdiste mi amor, oh no',\n", - " 'nunca supiste cuándo',\n", - " 'te perdiste mi amor y hoy',\n", - " 'hoy podemos remediarlo',\n", - " 'no sé qué nos pasó',\n", - " '¿por qué no lo intentamos de nuevo?',\n", - " 'moving, all the people moving',\n", - " 'one move for just one dream',\n", - " 'we see moving, all the people moving',\n", - " 'one move for just one dream',\n", - " 'tiempos de pequeños movimientos... movimientos en reacción',\n", - " 'una gota junto a otra hace oleajes, luago, mares... océanos',\n", - " 'nunca una ley fue tan simple y clara: acción, reacción, repercusión',\n", - " 'murmullos se unen forman gritos, juntos somos evolución',\n", - " 'moving, all the people moving',\n", - " 'one move for just one dream',\n", - " 'we see moving, all the people moving',\n", - " 'one move for just one dream',\n", - " 'escucha la llamada de \"mama tierra\", cuna de la creación',\n", - " 'su palabra es nuestra palabra, su \"quejío\" nuestra voz',\n", - " 'si en lo pequeño está la fuerza, si hacia lo simple anda la destreza',\n", - " 'volver al origen no es retroceder, quizás sea andar hacia el saber',\n", - " 'moving, all the people moving',\n", - " 'one move for just one dream',\n", - " 'we see moving, all the people moving',\n", - " 'one move for just one dream...',\n", - " 'el chico apresura el paso...',\n", - " '...ura el...',\n", - " '...sura el paso para evi...',\n", - " '..con los con...',\n", - " '...luni...',\n", - " '...idamente...',\n", - " '...pasa...',\n", - " '...pasa frente de la casa de su maestra la señorita tic',\n", - " '...la se...',\n", - " '...la seño...',\n", - " '...la señori...',\n", - " 'tic tic tic tic tic...',\n", - " '...la serita tic...',\n", - " '...y que despues...',\n", - " '...calle...',\n", - " 'brillantina music',\n", - " 'one, two, three, four, five',\n", - " 'brillantina mu...',\n", - " '...two, three, four, five',\n", - " 'brillan',\n", - " 'brillan',\n", - " 'brillan',\n", - " 'brillantina',\n", - " 'telefunka',\n", - " 'brillantina music',\n", - " 'brillan',\n", - " 'brillantina',\n", - " 'telefunka',\n", - " 'brillantina oshalala',\n", - " 'brillantina music',\n", - " 'brillantina music',\n", - " 'brillantina music',\n", - " '...two, three, four, five',\n", - " 'brillantina music',\n", - " 'brillantina music',\n", - " 'brillantina music',\n", - " '...three, four, five',\n", - " 'telefunka',\n", - " 'brillantina oshalala',\n", - " 'brillantina music',\n", - " 'brillantina music',\n", - " 'brillantina music',\n", - " '...two, three, four, five',\n", - " 'brillantina music',\n", - " 'brillantina music',\n", - " 'brillantina music',\n", - " '...three, four, five',\n", - " 'vento mas siento... te quiero decir',\n", - " 'que ya tus juegos... no son para me (no!)',\n", - " 'sabia a no un precipo qien en mentias y por eso cambien',\n", - " 'sabias que me en dias sateverme perdon y asi fue',\n", - " 'ya no soy igual todo cambio (noo!)',\n", - " 'la luz desde amor ya ser fino (oh!)',\n", - " \"quien loco playa, playa fa sho' (playa fa sho')\",\n", - " \"you're dealing with a pimp, i'm a pro (pimp, i'm a pro)\",\n", - " 'gave you more than enough, kept you iced out you loved it',\n", - " \"now that it's done no more fuss, girl i've been there and done it\",\n", - " 'shhh!',\n", - " 'shut it up!',\n", - " 'lemme let you know whats on my mind',\n", - " 'give it up! (give it up!)',\n", - " 'what we had was all of waste of time (oh my)',\n", - " \"mentira remiedio estoy no se va' regar\",\n", - " 'yo soy bandolero no me vaya provocar',\n", - " 'ya no soy igual todo cambio',\n", - " 'la puerta desde amor y haces centro',\n", - " \"quien loco playa, playa fa sho' (playa fa sho')\",\n", - " \"you're dealing with a pimp, i'm a pro (pimp, i'm a pro)\",\n", - " 'gave you more than enough, kept you iced out you loved it',\n", - " \"now that it's done no more fuss, girl i've been there and done it\",\n", - " \"quien loco playa, playa fa sho' (playa fa sho')\",\n", - " \"you're dealing with a pimp, i'm a pro (pimp, i'm a pro)\",\n", - " 'gave you more than enough, kept you iced out you loved it',\n", - " \"now that it's done no more fuss, girl i've been there and done it\",\n", - " 'he he ha! i told you i was coming!.. toby love... you know...',\n", - " \"now that i've changed 'cause of your games\",\n", - " \"i'll give you back all my heart-ache and pain\",\n", - " 'la masta dejaste girl, eres tu canos yo',\n", - " \"quien loco playa, playa fa sho' (playa fa sho')\",\n", - " \"you're dealing with a pimp, i'm a pro (pimp, i'm a pro)\",\n", - " 'gave you more than enough, kept you iced out you love it',\n", - " \"now that it's done no more fuss, girl i've been there and done it\",\n", - " \"quien loco playa, playa fa sho' (playa fa sho')\",\n", - " \"you're dealing with a pimp, i'm a pro (pimp, i'm a pro)\",\n", - " 'gave you more than enough, kept you iced out you love it',\n", - " \"now that it's done no more fuss, girl i've been there and done it\",\n", - " 'you feel the magic',\n", - " 'get emotion, feel your body',\n", - " \"and you're all the things, you can do\",\n", - " 'cuanto necesitaba un respiro, desabrocharme el vestido',\n", - " 'perder sentido',\n", - " 'cuanto necesitaba',\n", - " 'unas manos que se alzaran al aire',\n", - " 'y es que todo lo que quiero esta a puntito de caer',\n", - " 'y cuando creo que lo tengo no lo puedo retener',\n", - " 'hay que pena',\n", - " 'se van los problemas',\n", - " 'se van los dilemas',\n", - " 'me quedo serena',\n", - " 'y se va llevando, te va embaucando',\n", - " 'you feel the magic',\n", - " 'get emotion',\n", - " \"feel you're body\",\n", - " \"and you're all the things you can do\",\n", - " 'cuanto necesitaba un respiro',\n", - " 'sin pedir nada a cambio',\n", - " 'es dar y probarlo',\n", - " 'para ver que se siente',\n", - " 'ocupando otro ambiente',\n", - " 'y se va llevando',\n", - " 'te va embaucando',\n", - " 'y vas pensado',\n", - " 'en lo que quieres despejar',\n", - " 'now you feel the magic',\n", - " 'get emotion',\n", - " \"feel you're body\",\n", - " \"and you're all the things you can do\",\n", - " 'feel the magic (feeling the magic)',\n", - " 'get emotion (feeling the magic)',\n", - " \"feel you're body\",\n", - " \"and you're all the things, you can do\",\n", - " 'feel',\n", - " 'feeling the magic',\n", - " 'feeling the magic',\n", - " 'y que importa la incognita:',\n", - " 'cuántica',\n", - " 'química',\n", - " 'física',\n", - " 'matematica',\n", - " 'si te veo en el fondo',\n", - " 'con cara de asombro',\n", - " 'me das un minuto',\n", - " 'me das un minuto',\n", - " 'me das un minuto (you feel the magic)',\n", - " 'me das un minuto',\n", - " 'me das un minuto (get emotion)',\n", - " 'me das un minuto',\n", - " \"me das un minuto(feel you're body)\",\n", - " 'me das un minuto',\n", - " \"me das un minuto(and you're all the things, you can do)\",\n", - " 'me das un minuto(you feel the magic)',\n", - " 'me das un minuto',\n", - " 'me das un minuto',\n", - " 'me das un minuto(get emotion)',\n", - " 'me das un minuto',\n", - " 'me das un minuto',\n", - " \"me das un minuto(feel you're body)\",\n", - " 'me das un minuto',\n", - " \"me das un minuto(and you're all the things, you can do)\",\n", - " 'feel the magic (feeling the magic)',\n", - " 'get emotion (feeling the magic)',\n", - " \"feel you're body\",\n", - " \"and you're all the things you can do\",\n", - " 'morrocoyo…',\n", - " 'un, dos, tres, cua!',\n", - " 'lo que te vengo a cantar en un poco slow',\n", - " 'para que tu te lo aprendas te tiro mi flow',\n", - " 'tengo tanto que decir',\n", - " \"and you don't have to know\",\n", - " \"pero si you need the feelin' con mi stereo boom\",\n", - " 'y si tu quiere gozarlo solo espicha on',\n", - " \"asi comienza el vacile pa que you don't go\",\n", - " 'que repique, que repique bien duro el …',\n", - " 'y que se cierre la cuadra porque llegue yo',\n", - " \"i know you feelin' right now\",\n", - " 'hay corre corre morrocoyo',\n", - " 'que te coje el perico ligero',\n", - " 'hay brinca morrocoyo',\n", - " 'and im feeling right now',\n", - " 'hay corre corre morrocoyo',\n", - " 'que te coje el perico ligero',\n", - " 'hay brinca',\n", - " 'people dancing in the street all the night tonight',\n", - " 'y comienzan a beber a todo el mundo high',\n", - " 'cuando la cosa esta buena empieza the fight',\n", - " \"pero todo es cultura and and im feelin' right\",\n", - " 'la música esta buena con stereo …',\n", - " 'and some people … in the other side',\n", - " 'cuando piensas que se acaba el aire at morning five',\n", - " 'te toma la sopita and vuelva y juega men',\n", - " 'óyelo men',\n", - " 'óyelo men',\n", - " 'óyelo men',\n", - " \"i know you feelin' right now\",\n", - " 'hay corre corre morrocoyo',\n", - " 'que te coje el perico ligero',\n", - " 'hay brinca morrocoyo',\n", - " \"and im feelin' right now\",\n", - " 'hay corre corre morrocoyo',\n", - " 'que te coje el perico ligero',\n", - " 'hay brinca',\n", - " 'feeling right tonight',\n", - " 'cause everything is right',\n", - " 'pero quiero que me digas si te gusta my style',\n", - " 'no es de united ni de miami vice',\n", - " 'de la china, de argentina ni tampoco de uruguay',\n", - " 'es de acá y de bogotá y de la costa pa que te sientas bien high',\n", - " 'ayayay yo no me vo a queja',\n", - " 'pero si tu no baila',\n", - " 'me vo a pone a llora',\n", - " 'tonight tonight tonight tonight',\n", - " 'morrocoyo',\n", - " 'morrocoyo',\n", - " 'morrocoyo',\n", - " 'morrocoyo',\n", - " 'morrocoyo',\n", - " 'every chance',\n", - " 'every chance that i take',\n", - " 'i take it on the road',\n", - " 'those kilometres and the red lights',\n", - " 'i was always looking left and right',\n", - " \"oh, but i'm always crashing\",\n", - " 'in the same car',\n", - " 'jasmine, i saw you peeping',\n", - " 'as i pushed my foot down to the floor',\n", - " 'i was going round and round the hotel garage',\n", - " 'must have been touching close to 94',\n", - " \"oh, but i'm always crashing\",\n", - " 'in the same car',\n", - " 'en cada oportunidad',\n", - " 'todas las oportunidades que tomo',\n", - " 'supongo que en el camino',\n", - " 'los kilómetros y las luces rojas',\n", - " 'siempre estaba mirando a izquierda y derecha',\n", - " 'oh, pero yo siempre estoy rompiendo',\n", - " 'en el mismo coche',\n", - " 'jasmine, te vi espiando',\n", - " 'al empujar el pie hacia el suelo',\n", - " 'estaba dando vueltas y más vueltas en el garaje del hotel',\n", - " 'debe de haber estado tocando cerca de 94',\n", - " 'oh, pero yo siempre estoy rompiendo',\n", - " 'en el mismo coche',\n", - " 'si se',\n", - " 'puede',\n", - " 'si se',\n", - " 'puede',\n", - " 'tierra',\n", - " 'y libertad',\n", - " 'tierra',\n", - " 'y libertad',\n", - " 'si se',\n", - " 'puede',\n", - " 'si se',\n", - " 'puede',\n", - " 'yes we',\n", - " 'yes we can',\n", - " 'yes we',\n", - " 'yes we can',\n", - " 'si se',\n", - " 'puede',\n", - " 'si se',\n", - " 'puede',\n", - " 'libertad',\n", - " 'y libertad',\n", - " 'y libertad',\n", - " 'yes we',\n", - " 'yes we can',\n", - " 'yes we',\n", - " 'yes we can',\n", - " 'si la vida la das',\n", - " 'a quien te pide ayuda',\n", - " 'why en tu alma no hay',\n", - " 'una sombra de maldad',\n", - " 'rezas una oración',\n", - " 'es el credo que esperaba',\n", - " 'busco la dirección',\n", - " 'que no pude encontrar',\n", - " 'why me abandono a ti',\n", - " 'a una paz estable en mí',\n", - " 'que está repleta de quietud',\n", - " \"you'll always be a part of me\",\n", - " 'quédate',\n", - " 'en el viento que ha soplado',\n", - " \"you'll always be inside of me\",\n", - " 'quédate por favor',\n", - " 'suspendida en el cielo',\n", - " 'ligera why sin cadenas',\n", - " 'cuando estas junto a mí',\n", - " 'me entiendo mucho más',\n", - " 'solamente seré',\n", - " 'esclava del silencio',\n", - " 'contemplándote a ti',\n", - " 'comienzo a revivir',\n", - " 'why me abandono a ti',\n", - " 'a una paz serena en mí',\n", - " 'que esta repleta de quietud',\n", - " \"you'll always be a part of me\",\n", - " 'quédate',\n", - " 'en el sitio al que has llegado',\n", - " \"you'll always be inside of me\",\n", - " 'quédate por favor',\n", - " 'why me abandono a ti',\n", - " 'a una paz tranquila en mí',\n", - " 'que esta repleta de quietud',\n", - " \"you'll always be a part of me\",\n", - " 'sigo aquí',\n", - " 'en el viento que ha soplado',\n", - " \"you'll always be inside of me\",\n", - " 'quédate por favor',\n", - " \"you'll always be a part of me\",\n", - " 'sigo aquí',\n", - " 'en el sitio que he encontrado',\n", - " \"you'll always be inside of me\",\n", - " 'me quedo aquí con mi amor',\n", - " 'quédate por favor',\n", - " 'sigo aquí',\n", - " \"...you'll always be a part of me\",\n", - " 'tani',\n", - " \"tú ere' un diamante, tú ere' una estrella\",\n", - " 'yo nunca había visto una mujer tan bella',\n", - " 'todo el tiempo yo pienso en ti (tiempo)',\n", - " \"y en las cosa' que te haría baby\",\n", - " 'para mí no es fácil',\n", - " \"saber que tú ere' de él\",\n", - " 'que despierta contigo en la mañana',\n", - " 'en tu cama, tocando tu piel',\n", - " \"y es que tú eres'tan sexy\",\n", - " 'que te lo quiero hacer',\n", - " \"devorarte to'a, matar tus gana'\",\n", - " \"yo 'entro de tu piel\",\n", - " 'girl, if you want',\n", - " 'i can be your refuge',\n", - " \"i'll come to your rescue\",\n", - " \"girl l'm here to impress you, yeah\",\n", - " 'and if you need',\n", - " 'i can be your refuge',\n", - " \"l'll come to your rescue\",\n", - " 'but first',\n", - " 'girl, you got to let him go',\n", - " 'oh-oh-oh-oh-oh-ooh',\n", - " 'you should let him go',\n", - " 'oh-oh-oh-oh-oh-ooh',\n", - " 'girl, you got to let him go',\n", - " 'oh-oh-oh-oh-oh-ooh',\n", - " 'you should let him go',\n", - " 'oh-oh-oh-oh-oh-ooh',\n", - " 'only if you let him go',\n", - " 'la boca se nos hace agua (ah)',\n", - " \"al imaginarno' que estamo' tocándono' (na, na, na)\",\n", - " 'baby, me gusta mucho, la verdad mucho',\n", - " 'pienso en ti hasta cuando me ducho',\n", - " \"todo el tiempo quiero saber dónde está y qué hace'\",\n", - " 'y eso que no la conozco hace mucho',\n", - " 'black jack, baby tell me why, why, why',\n", - " 'why you look sad every time',\n", - " 'why you just go and tell him bye, bye, bye',\n", - " 'the same guy makes you cry, cry, cry',\n", - " 'black jack, baby tell me why, why, why',\n", - " 'why you look sad every time',\n", - " 'why you just go and tell him bye, bye, bye',\n", - " 'the same guy makes you cry, cry, cry',\n", - " \"tú ere' un diamante, tú ere' una estrella\",\n", - " 'yo nunca había visto una mujer tan bella',\n", - " 'todo el tiempo yo pienso en ti (tiempo)',\n", - " \"y en las cosa' que te haría feliz\",\n", - " 'para mí no es fácil',\n", - " \"saber que tú ere' de él\",\n", - " 'que despierta contigo en la mañana',\n", - " 'en tu cama, tocando tu piel',\n", - " \"y es que tú eres'tan sexy\",\n", - " 'que te lo quiero hacer',\n", - " \"devorarte to'a, matar tus gana'\",\n", - " \"yo 'entro de tu piel\",\n", - " 'girl, you got to let him go',\n", - " 'oh-oh-oh-oh-oh-ooh',\n", - " 'you should let him go',\n", - " 'oh-oh-oh-oh-oh-ooh',\n", - " 'girl, you got to let him go',\n", - " 'oh-oh-oh-oh-oh-ooh',\n", - " 'you should let him go',\n", - " 'oh-oh-oh-oh-oh-ooh',\n", - " 'only if you let him go',\n", - " 'black jack, baby tell me why, why, why',\n", - " 'why you look sad every time',\n", - " 'why you just go and tell him bye, bye, bye',\n", - " 'the same guy makes you cry, cry, cry',\n", - " 'hook:',\n", - " 'why does your love hurt so much?',\n", - " 'tell me why!',\n", - " 'tell me why!',\n", - " 'does your love hurts so much?',\n", - " 'tell me why!',\n", - " 'tell me why!',\n", - " 'verse 1:',\n", - " 'sabes que me gusta de ti',\n", - " 'me gusta la forma en que se arruga tu nariz',\n", - " 'cuando me mientes y me dices que sí me quieres',\n", - " 'y luego vas con otros, uh-baby',\n", - " '¿sabes que más odio de ti?',\n", - " 'dices que te gusto, luego pasas de mi',\n", - " 'ya mi corazón tiene una gran cicatriz',\n", - " 'y en vez de dejárselo un tatuaje en tu nombre',\n", - " 'pero',\n", - " 'hook:',\n", - " 'why does your love hurt so much?',\n", - " 'tell me why!',\n", - " 'tell me why!',\n", - " 'does your love hurts so much?',\n", - " 'tell me why!',\n", - " 'tell me why!',\n", - " 'hook:',\n", - " 'why does your love hurt so much?',\n", - " 'tell me why!',\n", - " 'verse 2:',\n", - " 'sabes que me gusta de ti',\n", - " 'cierras los ojos cuando dices que sí',\n", - " 'me vuelvo un loco, no respondo por mí',\n", - " 'estoy desahuciado y no lo notas, uh-baby',\n", - " '¿sabes que más odio de ti?',\n", - " 'me dicen que tu amor ya tiene precio por ahí',\n", - " 'estoy hustlereando peleando para estar junto a ti',\n", - " 'oro y diamantes que iluminen tu noche, pero',\n", - " 'hook:',\n", - " 'why does your love hurt so much?',\n", - " 'tell me why!',\n", - " 'tell me why!',\n", - " 'does your love hurts so much?',\n", - " 'tell me why!',\n", - " 'tell me why!',\n", - " 'does your love hurts so much?',\n", - " 'tell me why!',\n", - " 'tell me why!',\n", - " 'does your love hurts so much?',\n", - " 'tell me why!',\n", - " 'the sluts on my street wear stilettos on big feet',\n", - " 'they hang out at le bar and never go far',\n", - " 'la accion los espera aunque nadie los quiera',\n", - " 'y les falta something a big wedding ring',\n", - " 'gorditas, nopales el vende en las calles',\n", - " 'le da mucha bronca porque nadie compra',\n", - " 'and he just needs something to make him legit',\n", - " 'and he just needs something to make him legit',\n", - " 'a la mode, a la mode, quiero estar a la mode!',\n", - " 'me casare contigo quiero mucha lana',\n", - " 'no me da verguenza las mil exigencies',\n", - " 'que me pide a mi la globalizacion',\n", - " 'que me pice a mi la globalizacion',\n", - " 'a la mode, a la mode, quiero estar a la mode!',\n", - " 'el padre',\n", - " 'silenciado artista',\n", - " 'refugiado comunista',\n", - " 'calzones de guía',\n", - " 'pa los yanqui caía',\n", - " 'en barco de llanta',\n", - " 'rezando por vida',\n", - " 'en la tierra chocó',\n", - " '\"american citizen?\"',\n", - " 'hermano cubano',\n", - " 'en país mexicano',\n", - " 'buscando salida',\n", - " 'de ser comunista',\n", - " 'hermanos balseros',\n", - " 'mickey mouse marineros',\n", - " 'mi papi chingón',\n", - " 'me comió tiburón',\n", - " 'méxico me liberó',\n", - " 'cuando castro ganó',\n", - " '\"no soy \\'american\\'\"',\n", - " 'viva méxico cabrón',\n", - " 'gobierno cubano',\n", - " 'por que tan culero',\n", - " 'con nada de nuevo',\n", - " 'aguantan o muero',\n", - " 'hoy soy! anti-castro!!',\n", - " 'the father',\n", - " 'silenced artist',\n", - " 'communist refugee',\n", - " 'underwear for a sail',\n", - " 'to the yankees he bailed',\n", - " 'in a boat made of tires',\n", - " 'praying for his life',\n", - " 'as he crashed onto land',\n", - " '\"american citizen?\"',\n", - " 'my cuban brother',\n", - " 'on mexican soil',\n", - " 'looking for an out',\n", - " 'from being communist',\n", - " 'fellow inner-tube riders',\n", - " 'mickey mouse sailors',\n", - " 'my bitchen dad',\n", - " 'became shark bait',\n", - " 'mexico set me free',\n", - " \"during castro's victory\",\n", - " 'i\\'m not \"american\"',\n", - " 'long live mexico mother fucker!',\n", - " 'cuban government',\n", - " 'why such assholes',\n", - " 'with no new ideas',\n", - " 'deal with it-or die!',\n", - " \"today, i'm anti-castro\",\n", - " 'get out coyote and leave my soul',\n", - " 'get out, get out , get out carbón',\n", - " 'come together!',\n", - " '!mil coyotes sediciosos',\n", - " 'boicoteando tu pinche fiesta!',\n", - " '¡mil coyotes mariguanos',\n", - " 'bailando en comuna!',\n", - " 'el rock steady, rock ska (you',\n", - " 'wanna dance all night)',\n", - " 'rock steady rock, retro ska',\n", - " 'rock setady rock ska',\n", - " '(pachanga del coyote)',\n", - " 'ya viene otra vez la veintitres',\n", - " 'descomposicion del jugo gastrico',\n", - " 'eliminacion toxica estomacal',\n", - " 'mecanismo de vomitos',\n", - " 'desechos de tuberculosis',\n", - " 'abscesos y heridas',\n", - " 'invasion bacteriana',\n", - " 'linfagitis precoz',\n", - " 'se practica la sona gastrica',\n", - " 'eructos acidos',\n", - " 'hemorragia,vomitos',\n", - " 'heces teñidos de sangre',\n", - " 'ulcera hacia la cavidad estomacal',\n", - " 'grotesca hematemesis',\n", - " 'enzima enuresis',\n", - " 'cronico dolor',\n", - " 'virus asociados a linfadenopatia',\n", - " 'acrosianosis y eritromelalgia',\n", - " 'paracoccidioidomicosisproctitissarcomucosis',\n", - " 'blastomicosis y ficomicosis',\n", - " 'cromomicosis y esporotricosis',\n", - " 'padecimiento linfadenopatia',\n", - " 'mugre oral',\n", - " 'sudores nocturnos',\n", - " 'diarrea cronica',\n", - " 'condilomas rectales',\n", - " 'enflaquecimiento y asco',\n", - " 'pneumocystis carinii',\n", - " 'criptosporidiosis cronica',\n", - " 'toxoplasmosis',\n", - " 'estrongiloidiasis extriintestinal',\n", - " 'isosporiasis',\n", - " 'esofagica bronquial',\n", - " 'criptosis histoplasmosial',\n", - " 'infeccion micobacteriana',\n", - " '(...goza la vida mi socio...)',\n", - " 'algo excitante va a pasar',\n", - " 'ya comienzan a llegar',\n", - " 'los invitados...',\n", - " 'a sexy-party we gona start!',\n", - " 'she got a beauty bloody ass!',\n", - " \"i'm sex hungry beast...\",\n", - " 'es para mi...',\n", - " 'a disco-blood vamos a ir!',\n", - " 'fight!',\n", - " 'dance!',\n", - " 'blood!',\n", - " 'saturado esta el lugar',\n", - " 'seres y bestias al azar',\n", - " 'comienza el show',\n", - " 'perversos a desfilar!',\n", - " 'sex & gore aqui es normal',\n", - " 'y el sadomasoquismo igual',\n", - " 'quieres probar',\n", - " 'a new sensation in your ass',\n", - " 'fight!',\n", - " 'dance!',\n", - " 'blood!',\n", - " 'en esta caverna',\n", - " 'la mas bizarra',\n", - " 'acoge a engendros',\n", - " 'de nuestra camada',\n", - " 'solo de noche',\n", - " 'y desde el pantano',\n", - " 'mi hogar mas cercano',\n", - " 'ya vienen llegando',\n", - " 'she got a beauty bloody ass!',\n", - " \"i'm sex hungry beast...\",\n", - " 'es para mi...',\n", - " 'a disco-blood vamos a ir',\n", - " 'hibrido es el caminar',\n", - " 'hidra! hidra! a bailar',\n", - " 'disco blood!',\n", - " 'desfile del mas alla!',\n", - " 'fight!',\n", - " 'dance!',\n", - " 'blood!',\n", - " 'now hear this (now hear this)',\n", - " 'ah, rodeo!',\n", - " 'in come the thing they call remix program',\n", - " 'sean paul alongside farruko and akon',\n", - " \"you don't know? we run it strong all night long\",\n", - " 'biri banban, banbanbang',\n", - " 'dy',\n", - " 'farruko',\n", - " 'sean paul',\n", - " 'akon',\n", - " 'inolvidable (¡fuego!)',\n", - " \"esa manera 'e besar (biri banban, banbanban)\",\n", - " \"esa manera 'e bailar (akon!)\",\n", - " 'inolvidable',\n", - " \"esa manera 'e besar\",\n", - " \"esa manera 'e bailar\",\n", - " '(yeah! d-d-dy! go!)',\n", - " 'ponte el cinturón, bebé',\n", - " 'a dos manos agarrate, será un viaje inolvidable',\n", - " 'tú nunca olvidaras mi nombre (no)',\n", - " 'seré un tatuaje en tu piel (¡fuego!)',\n", - " 'los botes en palomino, con todo el barrio fino',\n", - " \"veintidós libras de billetes si es conmigo, na', se activó\",\n", - " 'aquí en el calentón la rumba es a millón',\n", - " 'porque a ella le gusta agresivo (¡súper!)',\n", - " \"que rico fueron to' los besos que me diste (¡ey-ey!)\",\n", - " 'pero tú nunca olvidaras mi nombre (no, no)',\n", - " 'seré un tatuaje en tu piel, baby (¡zumba!)',\n", - " 'por ahí comentan que tú eres una diablita',\n", - " ...]},\n", - " 'data': ['if blood will flow, when flesh and steel are one ... drying in the colour of the evening sun',\n", - " 'tomorrows rain, will wash the stains away .... but something in our minds will always stay',\n", - " \"perhaps this final act was meant, to clinch a lifetime's argument\",\n", - " 'that nothing comes from violence, and nothing ever could',\n", - " 'for all those born beneath an angry star, lets we forget how fragile we are...',\n", - " 'on and on the rain will fall...',\n", - " 'like tears from a star ... like tears from a star...',\n", - " 'on and on the rain will say...',\n", - " 'how fragile we are ... how fragile we are...',\n", - " 'la sangre que el acero derramó, se seca bajo el último rayo de sol',\n", - " 'la lluvia al fin, las huellas borrará. pero algo en las conciencias quedará',\n", - " 'quizás un acto así trató, de rematar la discusión. que nada logra la violencia',\n", - " 'ni nunca logrará, que los nacidos bajo un sol brutal, no se olviden de su fragilidad',\n", - " 'como lágrimas de sal',\n", - " 'la lluvia caerá ... la lluvia caerá',\n", - " 'cada gota cantará ... mi fragilidad ... tu fragilidad (x2)',\n", - " 'j balvin, man',\n", - " 'liam payne',\n", - " 'my g',\n", - " \"it's simple, you dip low\",\n", - " 'your hips roll, you do the calypso',\n", - " 'an intro is all that i need, oh, yeah',\n", - " 'y empiezo primero',\n", - " 'tú sabes lo que me refiero',\n", - " \"de cero, sabes que estoy pa' ti\",\n", - " 'oh, ooh, i just wanted to get your name (ah)',\n", - " \"but if it's cool, i wanna get inside your brain\",\n", - " 'can we get famili-famili-famili-familiar? (yeah)',\n", - " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya (hey)\",\n", - " \"what's on your mind for later tonight? (ah)\",\n", - " 'let me be the one to fill it up',\n", - " 'can we get famili-famili-famili-familiar?',\n", - " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya (hey)\",\n", - " \"what's on your mind for later tonight? (woo)\",\n", - " 'let me be the one to fill it up',\n", - " 'can we get',\n", - " 'your waistline, the bassline (bass)',\n", - " \"in real life, don't wanna no facetime\",\n", - " \"'cause great minds, they think just the same (hey, yeah)\",\n", - " \"you're shaped like vibrato\",\n", - " 'a model or some kind of bottle',\n", - " \"well, pour up 'cause i want a taste, a taste\",\n", - " 'oh, ooh, i just wanted to get your name',\n", - " 'sólo quería tu nombre, bebé',\n", - " \"but if it's cool, i wanna get inside your brain\",\n", - " 'can we get famili-famili-famili-familiar? (familiar)',\n", - " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya (familiar)\",\n", - " \"what's on your mind for later tonight?\",\n", - " 'let me be the one to fill it up (okay)',\n", - " 'can we get famili-famili-famili-familiar? (woo)',\n", - " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya (feelin' ya)\",\n", - " \"what's on your mind for later tonight? (ooh)\",\n", - " 'let me be the one to fill it up',\n", - " 'can we get',\n", - " 'ah (solamente tú y yo)',\n", - " 'ah, ah, ah (solamente tú y yo)',\n", - " 'ah (yeah)',\n", - " 'let me be the one to fill it up',\n", - " 'can we get',\n", - " 'quisiera que tú y yo nos familiaricemos',\n", - " 'un poco de química y el party prendemos',\n", - " 'olvida las criticas, así nos entendemos',\n", - " '¿qué tú crees si en tu mente nos metemos?',\n", - " 'señorita, qué necesita',\n", - " 'sería mucho mejor si participa',\n", - " 'así de lejos no, mejor cerquita',\n", - " 'yo voy a hacerte todo lo que me permita',\n", - " 'y sabes que lo que te pones te queda bien (te queda bien)',\n", - " 'y me caes mucho mejor que un billete de cien',\n", - " 'can we get famili-famili-famili-familiar?',\n", - " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya\",\n", - " \"what's on your mind for later tonight?\",\n", - " 'let me be the one to fill it up',\n", - " 'can we get famili-famili-famili-familiar?',\n", - " \"i'm feelin', i'm feelin', i'm feelin', i'm feelin' ya\",\n", - " \"what's on your mind for later tonight?\",\n", - " 'let me be the one to fill it up',\n", - " 'can we get',\n", - " 'ah (baby, can we get familiar?)',\n", - " 'ah, ah, ah (i just wanna get to know ya)',\n", - " 'ah (baby, can we get familiar?)',\n", - " 'let me be the one to fill it up',\n", - " 'can we get',\n", - " 'ah (baby, can we get familiar?)',\n", - " 'ah, ah, ah (i just wanna get to know ya)',\n", - " 'ah (baby, can we get familiar?)',\n", - " 'let me be the one to fill it up (ooh)',\n", - " 'can we get',\n", - " 'i wanna give it to you',\n", - " 'as long you give it to me',\n", - " 'just keep my body pumpin',\n", - " 'just keep my body pumpin',\n", - " 'i wanna give it to you',\n", - " 'as long you give it to me',\n", - " 'just keep my body pumpin',\n", - " 'just keep my body pumpin',\n", - " 'i wanna give it to you',\n", - " 'as long you give it to me',\n", - " 'just keep my body pumpin',\n", - " 'all night baby!',\n", - " 'i wanna give it to you',\n", - " 'as long you give it to me',\n", - " 'just keep my body pumpin',\n", - " 'just keep my body pumpin',\n", - " 'i wanna give it to you',\n", - " 'as long you give it to me',\n", - " 'just keep my body pumpin',\n", - " 'all night baby',\n", - " 'yo quiero ver la .. que mata',\n", - " 'rompe el ritmo et dame mas',\n", - " 'muestra mi como juegas',\n", - " 'mueve tu cuerpo',\n", - " 'baila así mami',\n", - " 'aquí estoy por ti',\n", - " 'porque te estoy mirando',\n", - " 'tú sientes el ritmo',\n", - " 'te gusta',\n", - " 'estoy loco por ti',\n", - " 'no puedo sentar sin ti',\n", - " 'i wanna give it to you',\n", - " 'as long you give it to me',\n", - " 'just keep my body pumpin',\n", - " 'just keep my body pumpin',\n", - " 'i wanna give it to you',\n", - " 'as long you give it to me',\n", - " 'just keep my body pumpin',\n", - " 'just keep my body pumpin',\n", - " 'i wanna give it to you',\n", - " 'as long you give it to me',\n", - " 'just keep my body pumpin',\n", - " 'all night baby!',\n", - " 'i wanna give it to you',\n", - " 'as long you give it to me',\n", - " 'just keep my body pumpin',\n", - " 'just keep my body pumpin',\n", - " 'i wanna give it to you',\n", - " 'as long you give it to me',\n", - " 'just keep my body pumpin',\n", - " 'just keep my body pumpin',\n", - " 'i wanna give it to you',\n", - " 'as long you give it to me',\n", - " 'just keep my body pumpin',\n", - " 'all night baby!',\n", - " 'kizutsuku koto ni naresugiteru awai sunday',\n", - " 'sabitsuiteru kusari ni, mada shibararenagara',\n", - " 'furueta yubi, daremokaremo shinjirarezu',\n", - " 'sugaru koto mo yurusarenai genjitsu sae, wakatteiru kara',\n", - " 'kazaritsuketa kagami no naka, dark monday',\n", - " 'akaku somaru naifu nigirishimeta, yoru wa nagaku',\n", - " 'koboreochita namida nante imi wa motazu',\n", - " 'sakebu koe mo kareteshimau naze ni hakanasa wo tou',\n", - " 'sabitsuita kokoro ni wa, kamoku no uta wo sasage',\n", - " 'umaku waraezuni iru, mou modorenai',\n", - " 'dakara motto kurushimagire ansemu wo',\n", - " 'kurayami ni saku bara wo semete kono kokoro ni dakasete',\n", - " 'soshite kitto tasuke wo yobu koe wa todokanai',\n", - " 'kizu darake no kono karada ni somaku yaiba tsukisashitekure',\n", - " 'zankokushoku ni somari hajimeta, kurutta genzai',\n", - " 'tsuiraku shita sora wo nagame, wasurerarenai kairi no torauma',\n", - " 'sabitsuita kokoro ni wa, kamoku no uta wo sasage',\n", - " 'umaku waraenai hibi, shinjitakunai',\n", - " 'dakara zutto kirisaita koe hibikasete',\n", - " 'kurayami ni chiru bara wo semete kono kokoro ni dakasete',\n", - " 'soshite motto kurushimagire no ano kotoba wo',\n", - " 'hirakikaketa kono kokoro ni fukaku yaiba, tsukisashitekure',\n", - " '(fukaku, tsukisashitekure)',\n", - " '--------------------------------english--------------------------------',\n", - " 'a faint sunday that has grown too accustomed to getting hurt',\n", - " 'while still being bound, with chains that are rusting together',\n", - " 'fingers that were trembling, not believing in anyone at all',\n", - " \"because i understand even the reality that doesn't even permit clinging\",\n", - " 'in the middle of the arranged mirror, dark monday',\n", - " 'the night in which i was tightly clasping a knife that was being dyed red was long',\n", - " \"the scattering tears and the such don't bear significance\",\n", - " 'also the voice that shouts will end up withering, i question ephemerality about why',\n", - " 'to the heart that rusted together offer up a silent song',\n", - " 'i am here, without being able to laugh properly, unable to turn back anymore',\n", - " 'therefore, an anthem in even deeper desperation',\n", - " 'at least let the rose that blooms in the darkness be held by this heart',\n", - " \"and, surely the voice that calls for help won't reach\",\n", - " 'please, into this body that is nothing but wounds, thrust the blade deeply',\n", - " 'the now that has gotten out of order, has begun to be dyed in cruelty',\n", - " 'i gaze at the sky that crashed down, a trauma of an estrangement i cannot forget',\n", - " 'to the heart that rusted together, offer up a silent song',\n", - " \"the days when i'm not able to laugh properly, i don't want to believe in them\",\n", - " 'therefore, let the voice that completely teared into peaces, resound',\n", - " 'at least, let the rose that scatters in the darkness be held by this heart',\n", - " 'and, those words in even deeper desperation',\n", - " 'please, into this heart that started to open up, thrust the blade deeply',\n", - " 'thrust the blade deeply',\n", - " '--------------------------------español--------------------------------',\n", - " 'un domingo débil que ha crecido demasiado acostumbrado a hacerse daño',\n", - " 'mientras aún sigue atado, con cadenas que se están oxidando juntas',\n", - " 'dedos que temblaban, no creyendo en nadie',\n", - " 'porque entiendo que ni siquiera en la realidad está permitido aferrarse',\n", - " 'en medio del espejo arreglado, lunes oscuro',\n", - " 'la noche en la cual estuve presionado sujetando un cuchillo que se teñia rojo fue larga',\n", - " 'las lágrimas y su dispersión no tienen importancia',\n", - " 'también la voz que grita terminará marchitándose, me pregunto la efimeridad del por que?',\n", - " 'para el corazón que se oxidó junto, ofresco una canción silenciosa',\n", - " 'estoy aquí, sin ser capaz de reír adecuadamente, incapáz de dar marcha atras nunca más',\n", - " 'por eso, un himno en la desesperación más profunda',\n", - " 'al menos deja que la rosa que florece en la oscuridad sea poseída por este corazón',\n", - " 'y, seguramente la voz que pide ayuda no culminará',\n", - " 'por favor, en este cuerpo que no es nada más que heridas, empuja la espada profundamente',\n", - " 'el ahora ha salido de control, ha comenzado a teñirse de crueldad',\n", - " 'contemplo el cielo que se desplomó, un trauma de un distanciamiento que no puedo olvidar',\n", - " 'para el corazón que se oxidó junto, ofresco una canción silenciosa',\n", - " 'los días en que no soy capaz de reír correctamente, no quiero creer en ellos',\n", - " 'por eso, deja que la voz que se lleno de lágrimas en paces, resuene',\n", - " 'al menos deja que la rosa que se dispersa en la oscuridad sea poseída por este corazón',\n", - " 'y, aquellas palabras en la desesperación más profunda',\n", - " 'por favor, en este corazón que comenzó a abrise, empuja la espada profundamente',\n", - " 'empuja la espada profundamente',\n", - " 'decidí dejar ser parte',\n", - " 'ser parte de esta farsa',\n", - " 'decidí pelear y así darte',\n", - " 'más que fe, una esperanza',\n", - " 'lo desconocido no es más que',\n", - " 'tan sólo una oportunidad',\n", - " 'para crear y poder entender',\n", - " 'que todo en este mundo es tuyo',\n", - " 'get the money, money, get the money, run',\n", - " 'get the money, run, get the money',\n", - " 'get up and go!',\n", - " 'get the money, money, get the money, run',\n", - " 'get the money run, get the money',\n", - " 'rise up and go!',\n", - " 'this is the voice of a new generation',\n", - " 'this is the meeting of the minds',\n", - " 'this is the dawn of a new revelation',\n", - " 'this is the story of our lives',\n", - " 'promete creer y así vencer',\n", - " 'ser parte de una alianza',\n", - " 'donde puedan todos mantener',\n", - " 'más que fe, una esperanza',\n", - " 'toma asiento estáte atento a mí',\n", - " 'no existe otra oportunidad',\n", - " 'no podremos nunca coexistir',\n", - " 'más que justicia es vengaza',\n", - " 'get the money, money, get the money, run',\n", - " 'get the money, run, get the money',\n", - " 'get up and go!',\n", - " 'get the money, money, get the money, run',\n", - " 'get the money, run, get the money',\n", - " 'rise up and go!',\n", - " 'this is the voice of a new generation',\n", - " 'this is the meeting of the minds',\n", - " 'this is the dawn of a new revelation',\n", - " 'this is the story of our lives',\n", - " 'of our lives',\n", - " 'of our lives',\n", - " 'of our lives',\n", - " \"do you think that you've become someone, someone with understanding\",\n", - " \"do you think that you've become someone, whos not afraid to beat the system\",\n", - " \"do you think that you've become someone\",\n", - " \"do you think that you've become someone\",\n", - " \"do you think that you've become someone, whos not afraid to beat the system\",\n", - " 'okay, okay',\n", - " 'desperté',\n", - " 'sin entender mis palabras',\n", - " 'hablé',\n", - " 'preguntando por ti',\n", - " 'desde ayer',\n", - " 'que no recuerdo mi nombre',\n", - " 'tal vez',\n", - " 'yo sólo me confundí',\n", - " \"and tell me what about it (it's confidential)\",\n", - " 'tell me what you like about me (it’s confidential)',\n", - " \"and tell what about your smile (it's confidential)\",\n", - " \"tell me what's all about! (it’s confidential)\",\n", - " \"it's confidential\",\n", - " \"it's confidential\",\n", - " \"it's confidential\",\n", - " \"it's confidential\",\n", - " 'it is confidential, baby',\n", - " 'it is confidential, baby',\n", - " 'ya qué',\n", - " 'sí sé que yo estoy perdido',\n", - " 'entre',\n", - " 'tu boca y tu brasier',\n", - " 'y dime',\n", - " 'si en verdad lo disfrutas',\n", - " 'porque yo no me quiero detener',\n", - " \"and tell me what about it (it's confidential)\",\n", - " \"tell me what you like about me (it's confidential)\",\n", - " \"and tell what about your smile (it's confidential)\",\n", - " 'tell me what’s all about! (it’s confidential)',\n", - " \"it's confidential\",\n", - " 'it’s confidential',\n", - " \"it's confidential\",\n", - " \"it's confidential\",\n", - " 'it is confidential, baby',\n", - " 'it is confidential, baby',\n", - " 'let me know, let me know, let me know',\n", - " 'let me know, let me know, let me know',\n", - " 'let me know, let me know, let me know',\n", - " 'let me know, let me know, let me know',\n", - " 'it is confidential, baby',\n", - " 'it is confidential, baby',\n", - " 'it is confidential, baby',\n", - " 'it is confidential, baby',\n", - " \"it's confidential\",\n", - " 'it’s confidential',\n", - " \"it's confidential\",\n", - " '(do we have a plan b, general?',\n", - " 'just in case the earth population discover that this is a conspirancy',\n", - " \"that's not a concern lieutenant\",\n", - " 'the truth has been in front of them all these years',\n", - " 'but they are not able to see it.)',\n", - " 'fuego',\n", - " 'kumbia kings baby, yeah',\n", - " 'kings of kumbia',\n", - " 'koo-kooo',\n", - " \"(commin' at ya!)\",\n", - " 'ya llegaron los reyes',\n", - " 'quien mas, kumbia kings',\n", - " 'agarrate los pantalones',\n", - " 'luego si te los quemas,porque aqui',\n", - " 'ya viene, puro fuego, pura candela',\n", - " '(chores)',\n", - " 'fuego, fuego, the roof is on fire',\n", - " \"we don't need no water let the mutha' -- burn\",\n", - " 'fuego, fuego, the roof is on fire',\n", - " \"we don't need no water let the mutha' -- burn\",\n", - " 'se siente, caliente, tu cuerpo, me enciende, te mueves, tan fuerte, parece que el calor me va quemar',\n", - " 'mi cuerpo te quiere, se muere por verte, espera impaciente que esperes, dame tu calor mamà',\n", - " 'kumbia kings',\n", - " 'koo koo',\n", - " 'fuego, fuego, the roof is on fire',\n", - " \"we don't need no water let the mutha' -- burn\",\n", - " 'fuego, fuego, the roof is on fire',\n", - " \"we don't need no water let the mutha' -- burn\",\n", - " 'zaa!',\n", - " 'me tienes caliente tanto moverte,no pares, me prendes,me gusta,el fuego que tu me das',\n", - " 'entiende, me enciendes, me quemas, muy fuerte, mi cuerpo se muere por verte, dame fuego una vez màs',\n", - " 'kumbia kings',\n", - " 'koo koo',\n", - " 'fuego, fuego, the roof is on fire',\n", - " \"we don't need no water let the mutha' -- burn\",\n", - " 'fuego, fuego, the roof is on fire',\n", - " \"we don't need no water let the mutha' -- burn\",\n", - " 'burn!',\n", - " 'burn!',\n", - " '...',\n", - " 'hola que tal esto es my kilino shortino en el microphone, y esto es un permiso, un segundito para la chica sexy',\n", - " 'esto va especialmente para tì, chica sexy... (say what), chica sexy (say what)',\n", - " 'mejor te digo de una vez improvisando con esta chica, me esta volviendo loco, me esta matando, ya estoy alcanzando un',\n", - " '(dj)ay, ay y sigo alcanzando, y sigo ardiendo, mira, mira, mira, me estoy entreteniendo, me estoy enloqueciendo...yeah',\n", - " 'fuego, fuego, the roof is on fire',\n", - " \"we don't need no water let the mutha' -- burn\",\n", - " 'fuego, fuego, the roof is on fire',\n", - " \"we don't need no water let the mutha' -- burn\",\n", - " 'burn!',\n", - " 'burn!',\n", - " 'come on now...',\n", - " 'carnaval',\n", - " 'y mi corazón',\n", - " 'carnaval',\n", - " 'que, que, que cuente conmigo',\n", - " 'carnaval',\n", - " \"y va paya' paca'\",\n", - " \"it's on the latin flavor, go tell a neighbor\",\n", - " 'la mesa te invita a gozar conocer',\n", - " 'es fresca, y tu cuerpo te va a remecer',\n", - " 'es que la garra de este ritmo no te va a soltar',\n", - " \"y tu vida en tre' minutos te va a alegrar\",\n", - " 'no hay ni un ritmo solo inventado para las chicas, ricas, mijas',\n", - " 'que mueve el culo en sus falditas',\n", - " 'es algo global, es algo inmenso',\n", - " 'y en esta escena con ustedes comienzo',\n", - " 'this is, for real, you will believe',\n", - " 'y tu veras!',\n", - " \"'cause it knocks you off your feet in a single hearbeat\",\n", - " \"c'mon c'mon!\",\n", - " 'carnaval',\n", - " 'all night long',\n", - " 'y mi corazn',\n", - " 'carnaval',\n", - " \"can't go wrong\",\n", - " 'que, que, que cuente conmigo',\n", - " 'carnaval',\n", - " 'as long as we live and breathe',\n", - " \"y va paya', paca'\",\n", - " \"it's on the latin flavor, go tell a neighbor now\",\n", - " 'es rico dulce como la miel',\n", - " 'y olvida el color que tienes en la piel',\n", - " 'y yo como latino te lo hago asi',\n", - " \"tu ya lo encontraras no te me apresuri'\",\n", - " 'no paro si pa eso la wea invente',\n", - " \"ah, and you don't know?, y loco nunca cambiare\",\n", - " 'this is, for real, you will believe',\n", - " 'y tu veras',\n", - " \"'cause it knocks you off your feet in a single hearbeat\",\n", - " \"c'mon c'mon!\",\n", - " 'carnaval...',\n", - " 'yeh yeh yeh',\n", - " 'carnaval',\n", - " 'y mi corazn (corazon)',\n", - " 'carnaval',\n", - " 'que que que cuente conmigo (conmigo)',\n", - " 'carnaval',\n", - " \"y va paya' (y va paya')\",\n", - " \"it's on the latin flavor, go tell a neighbor now\",\n", - " 'yeh yeh yeh!',\n", - " 'carnaval...',\n", - " 'yeh yeh yeh!',\n", - " 'carnaval!',\n", - " 'all night long',\n", - " 'y mi corazon (yeah!)',\n", - " 'carnaval',\n", - " \"can't go wrong\",\n", - " '(yeh) que cuente conmigo',\n", - " 'carnaval',\n", - " 'as looong as we live and breathe (ooooh)',\n", - " \"it's on the latin flavor, go tell a neighbor now!\",\n", - " '-buenas tardes señor',\n", - " \"-pero que mejores las tenga aste' señor\",\n", - " '-su licencia por favor',\n", - " '-con su licencia yo me retiro',\n", - " '-!aha, vuelve, vuelve, vuelve, vuelve, ya se me pelo, ya se me...!',\n", - " '(cuando menos 3 veces por semana)',\n", - " 'n´can you bring me la caguama',\n", - " 'de repente mucha banda',\n", - " 'i holding mi barrio me paro en la cama',\n", - " 'déjala calmada, bring me la cebada',\n", - " 'pinchi barato, no aguantas el rato',\n", - " 'y voy por la ciudad, just chillin´ al vato',\n", - " 'ando pasado, lamiendo el clavo',\n", - " 'justo yesterday cantaba la radio',\n", - " 'my troubles faded away, vamos al mandado',\n", - " 'paro en revolución, mi tropa volando',\n", - " 'veo mucho oficial, inhale y me aguanto',\n", - " 'justo, faded away, revolución',\n", - " 'inhale y me aguanto',\n", - " '(pues tiene que echar el aire fuera)',\n", - " 'no ando borracho, i just had a cerveza',\n", - " 'i was hanggin´ around en la camioneta',\n", - " 'la mionca que corre just like the wind',\n", - " 'flowing and flowing and feeling the rythm',\n", - " 'and get to the barrio, you know im a warrior',\n", - " 'compra el mundo with a centavo',\n", - " 'barato y bien harto feel like a payaso',\n", - " 'me muero de coraje que muestra el barrio',\n", - " 'estas ca´ me dicen si le sigo otro rato',\n", - " 'straight to the point, inhale y me aguanto',\n", - " 'justo, faded away, revolución',\n", - " 'inhale y me aguanto',\n", - " 'n´can i got to the bathroom',\n", - " 'tengo que hacer el alto',\n", - " 'y cierran la puerta, me clavo en el cuarto',\n", - " 'leave it in blanco, my hands apalanco',\n", - " 'pendejo güero, no chingues, te atraco',\n", - " '(jotos con poder)',\n", - " 'bajo en realidad del virtual del payaso',\n", - " 'anda manchado, he thinks que trae sancos',\n", - " '(la solución en mexico el cambio)',\n", - " 'junto al sensei, one movie del santo',\n", - " 'parte del ritual, del mexico sagrado',\n", - " 'sigo al locochon que viene y ando',\n", - " 'fuckin´ puto sigue norteado',\n", - " 'justo, faded away, revolución',\n", - " 'inhale y me aguanto',\n", - " 'n´can i tell you the truth',\n", - " 'yo anda extaviado',\n", - " 'unos de a peso, los otros más caros',\n", - " 'waiting al primo que sigue dormido',\n", - " 'just another night y yo tan tranquilo',\n", - " 'sigo en calidad de trapo usado',\n", - " 'sigo escuchando la maldito radio',\n", - " 'cuando una luz brilló de a lado',\n", - " 'todo estaba obscuro, come back to mi estado',\n", - " 'poco batallón is passing cornado',\n", - " 'sigue el reventón, inhale y me aguanto',\n", - " 'justo, faded away, revolución',\n", - " 'inhale y me aguanto',\n", - " 'justo, faded away, revolución',\n", - " 'inhale y me aguanto',\n", - " 'justo, faded away, revolución',\n", - " 'inhale y me aguanto',\n", - " 'justin, faded away, revolución',\n", - " 'inhale y me aguanto',\n", - " 'justin, faded away, revolución',\n", - " 'inhale y me aguanto',\n", - " 'justo, faded away, revolución',\n", - " 'inhale y me aguanto',\n", - " 'now hear this (now hear this)',\n", - " 'ah, rodeo',\n", - " 'now, all sexy girls report to the dance floor',\n", - " '(pu-pu-pu-pum!)',\n", - " \"you don't know?\",\n", - " \"it's a dancehall ting!\",\n", - " 'carbon fiber music',\n", - " 'inolvidable',\n", - " \"esa manera 'e besar\",\n", - " \"esa manera 'e bailar (you hear!?)\",\n", - " 'inolvidable (¡farru!)',\n", - " \"esa manera 'e besar (tell them!)\",\n", - " \"esa manera 'e bailar (alright, alright)\",\n", - " \"me gusta cuando te pone' provocativa\",\n", - " \"cuando escucha' el reggae y rápido tú te me activa'\",\n", - " 'me gusta esa faldita corta, mami, me motiva',\n", - " 'a bailar contigo sin importar lo que me pidas',\n", - " 'pégate lento (slow motion)',\n", - " 'quiero tu cuerpo (whine your body)',\n", - " 'besarte el cuello suavemente (why you so slow?)',\n", - " 'sin importar lo que diga la gente (you know!)',\n", - " 'pégate lento (slow motion)',\n", - " 'quiero tu cuerpo (whine your body)',\n", - " 'besarte el cuello suavemente (why you so slow?)',\n", - " 'sentirte para mí es suficiente (you know!)',\n", - " 'inolvidable',\n", - " \"esa manera 'e besar\",\n", - " \"esa manera 'e bailar\",\n", - " 'inolvidable (¡farru!)',\n", - " \"esa manera 'e besar\",\n", - " \"esa manera 'e bailar\",\n", - " 'aún recuerdo cuando yo te hacía mía',\n", - " 'que estábamos en mi carro y me decías que ahí querías',\n", - " 'que bajara el asiento, que ibas a treparte encima de mí',\n", - " 'qué rico, mami, tenerte aquí arriba de mí',\n", - " 'pégate lento (slow motion)',\n", - " 'quiero tu cuerpo (whine your body)',\n", - " 'besarte el cuello suavemente (why you so slow?)',\n", - " 'sin importar lo que diga la gente (you know!)',\n", - " 'pégate lento (slow motion)',\n", - " 'quiero tu cuerpo (whine your body)',\n", - " 'besarte el cuello suavemente (why you so slow?)',\n", - " 'sentirte para mí es suficiente (wou know!)',\n", - " 'inolvidable',\n", - " \"esa manera 'e besar\",\n", - " \"esa manera 'e bailar\",\n", - " 'inolvidable (¡farru!)',\n", - " \"esa manera 'e besar\",\n", - " \"esa manera 'e bailar (pu-pu-pu-pum!)\",\n", - " 'the way you whine',\n", - " \"the way you whine pa' mí\",\n", - " 'mash up mi mind',\n", - " 'mash up mi body',\n", - " 'the way you whine',\n", - " 'the way you give it to me',\n", - " 'give it to me, give it to me',\n", - " 'give it to me, baby',\n", - " 'inolvidabe (turn up farruko!)',\n", - " \"esa manera 'e besar\",\n", - " \"esa manera 'e bailar\",\n", - " 'inolvidable (¡farru!)',\n", - " \"esa manera 'e besar (esa manera 'e besar)\",\n", - " \"esa manera 'e bailar (esa manera 'e bailar, pu-pu-pu-pum!)\",\n", - " '¡farru!',\n", - " 'dímelo flow (leggo!)',\n", - " 'la monarquía',\n", - " 'carbon fiber music',\n", - " 'laramercy gang',\n", - " 'pégate lento (slow motion)',\n", - " 'quiero tu cuerpo (whine your body)',\n", - " 'besarte el cuello suavemente (why you so slow?)',\n", - " 'sin importar lo que diga la gente (gangalee; you know!)',\n", - " 'nice and slow',\n", - " 'slow and easy',\n", - " 'gyal, rock your body',\n", - " 'give it to me',\n", - " 'will this tune go worldwide?',\n", - " 'i wanna hear you tonight',\n", - " 'i wanna feel you just touch the sky',\n", - " 'i wanna hear you tonight',\n", - " 'all the angels, come on let’s ride!',\n", - " 'bang her!',\n", - " 'come on, don’t stop!',\n", - " 'sake your booties ladies',\n", - " 'this great!',\n", - " 'come on, listen to me!',\n", - " 'te echo de menos todo el fin de semana',\n", - " 'vamos a tomar una copa',\n", - " 'y la vida esta loca, loca',\n", - " 'yo soy fuego del tiempo',\n", - " 'y solo con tigo lo siento',\n", - " 'mi casa, mi amor para siempre',\n", - " 'estoy aqui, me quedo con padre!',\n", - " 'poco a poco, mi mundo esta loco',\n", - " 'quiero ver a toda la gente',\n", - " 'a bailar, a gritar!',\n", - " 'una belleza como tu, aqui la puedo encontrar!',\n", - " 'somo iguales y lo sabes',\n", - " 'dame tu amor una vez mas!',\n", - " 'i wanna hear you tonight',\n", - " 'i wanna feel you just touch the sky',\n", - " 'i wanna hear you tonight',\n", - " 'all the angels, come on let’s ride!',\n", - " '(x2)',\n", - " 'come on!',\n", - " 'don’t stop!',\n", - " 'this is how we do it tonight!',\n", - " 'bang her!',\n", - " 'this is how we do it tonight!',\n", - " 'disfrutalo y baila hasta el final de la fiesta',\n", - " 'esta cancion es de club',\n", - " 'vamos arriba en el top!',\n", - " 'i wanna hear you tonight',\n", - " 'i wanna feel you just touch the sky',\n", - " 'i wanna hear you tonight',\n", - " 'all the angels, come on let’s ride!',\n", - " '(x2)',\n", - " 'calipso global',\n", - " 'skin-reggae mas que tropical',\n", - " 'anti-political rock',\n", - " 'hardcore de taiwan white-soul made in senegal',\n", - " 'ska-punk oriental ¡oh no!',\n", - " 'hip-hop en beirut',\n", - " 'raggamufin en singapur',\n", - " 'musica vasca en nueva york',\n", - " 'global musik revolution',\n", - " 'rebel musik',\n", - " '¡¡revolucion!!',\n", - " 'global musik revolution',\n", - " 'rebel musik',\n", - " 'nueva generacion',\n", - " 'rude boys en bagdad',\n", - " 'rock girls en un kebab',\n", - " 'oi!-punk esquimal ¡oh no!',\n", - " 'psychobilly en latinoamérica',\n", - " 'rancheras en catalá',\n", - " 'por todo el mundo',\n", - " 'global musik revolution',\n", - " 'rebel musik',\n", - " '¡¡revolucion!!',\n", - " 'rebel musik',\n", - " 'a la música',\n", - " 'global musik',\n", - " 'nova generació',\n", - " 'global musik',\n", - " 'per il mondo',\n", - " 'rebel musik',\n", - " 'rivoluzione',\n", - " 'global musik',\n", - " 'herriz herri',\n", - " 'global musik',\n", - " 'iraultza berria',\n", - " 'global musik revolution!!',\n", - " 'rebel musik',\n", - " 'revolucion!!',\n", - " 'baby, ¿dónde tú estás?',\n", - " 'quiero verte una vez más',\n", - " 'tus manos tocando mi piel',\n", - " 'no sé si esto fue puro placer',\n", - " 'mi amor, esto me asusta',\n", - " 'a mí el rechazo no me gusta',\n", - " 'me tiene loca',\n", - " 'y yo ya no sé qué hacer',\n", - " 'qué hacer',\n", - " 'qué hacer',\n", - " 'i sit and wait for the phone to ring',\n", - " 'praying this was not a one time thing',\n", - " 'cuz i been cherishing the memory',\n", - " 'and i play it again and again in my mind',\n", - " \"it's like a movie from finish to start\",\n", - " 'a murder mystery your fingerprints are on my heart, yeah',\n", - " \"fantasy i'm locked in my head\",\n", - " 'cuz you been fucking with my mind, baby',\n", - " 'yo no puedo entender',\n", - " 'que estás haciendo sin mí',\n", - " 'lo que tuvimos fue tan mágico que no creo que en verdad lo viví',\n", - " 'me dijiste que yo era lo que más deseabas',\n", - " 'me besaste tan rico y me dejaste queriendo más',\n", - " 'mi amor, ¿dónde estás?',\n", - " 'me dejaste obsesionada, bebé',\n", - " 'cuando te volveré a ver, no sé',\n", - " 'tus labios besándome',\n", - " 'tus manos tocándome',\n", - " 'fue una noche de terror',\n", - " 'regalándote calor',\n", - " 'tus dedos mordiéndote',\n", - " 'en tu boca escupiéndote',\n", - " 'fue una noche de terror',\n", - " 'regalándote calor',\n", - " 'tus dedos mordiéndote',\n", - " 'en tu boca escupiéndote',\n", - " 'i sit and wait for the phone to ring',\n", - " 'praying this was not a one time thing',\n", - " 'cuz i been cherishing the memory',\n", - " 'and i play it again and again in my mind',\n", - " \"it's like a movie from finish to start\",\n", - " 'a murder mystery your fingerprints are on my heart, yeah',\n", - " \"fantasy i'm locked in my head\",\n", - " 'cuz you been fucking with my mind, baby',\n", - " 'fucking with my mind',\n", - " 'was it just a one time thing?',\n", - " 'fucking with my mind',\n", - " 'was it just a one time thing?',\n", - " 'fucking with my mind',\n", - " 'was it just a one time thing?',\n", - " 'entre un aliento',\n", - " 'y un trazo de fe',\n", - " 'tomo mi amado',\n", - " 'pluma y papel',\n", - " 'y al rendirse al frio de su piel',\n", - " 'escribio en lenguas',\n", - " 'que no puedo entender',\n", - " 'y no, nadie lo ve',\n", - " 'y no, nadie lo cree',\n", - " 'cuando un sueno',\n", - " 'se empieza a romper',\n", - " 'tiemblan las venas y arden las voces',\n", - " 'la ciudad que me ha visto crecer',\n", - " 'estalla en lagrimas',\n", - " 'antes de caer',\n", - " 'y no, nadie lo ve',\n", - " 'y no, nadie lo cree',\n", - " 'el temor nadie lo ve',\n", - " 'el dolor nadie lo ve',\n", - " 'la ley universal de la locomocion no puede fallar en este momento',\n", - " 'moving, all the people moving, one move for just one dream',\n", - " 'we see moving, all the people moving, one move for just one dream',\n", - " 'tiempos de pequeños movimientos...movimientos en reacción',\n", - " 'una gota junto a otra hace oleajes, luago mares...océanos',\n", - " 'nunca una ley fue tan simple y clara: acción, reacción, repercusión',\n", - " 'murmullos se unen forman gritos, juntos somos evolución',\n", - " 'moving, all the people moving, one move for just one dream',\n", - " 'we see moving, all the people moving, one move for just one dream',\n", - " 'escucha la llamada de \"mama tierra\", cuna de la creación',\n", - " 'su palabra es nuestra palabra, su \"quejío\" nuestra voz',\n", - " 'si en lo pequeño está la fuerza, si hacia lo simple anda la destreza',\n", - " 'volver al origen no es retroceder, quizás sea andar hacia el saber',\n", - " 'moving, all the people moving, one move for just one dream',\n", - " 'we see moving, all the people moving, one move for just one dream',\n", - " 'hola amigos',\n", - " 'ahora escucha los acompanamientoe para',\n", - " 'los principales ritmos latinos',\n", - " 'hello friends',\n", - " 'now listen to the rhythm section',\n", - " 'for the main latin beat',\n", - " 'español',\n", - " 'estoy cerca de alcanzar mi cielo',\n", - " 'desafiando la gravedad',\n", - " 'nada puede detener este sueño que es tan real',\n", - " 'sé que no existe el miedo, oh',\n", - " 'si no dejo de intentar',\n", - " 'la emoción que me mueve es la fuerza de un huracán',\n", - " 'esto que hay en mi interior es mágico',\n", - " 'porque todo puede suceder',\n", - " 'y si caigo, vuelvo',\n", - " 'voy, yo voy',\n", - " 'y vuelvo, y voy',\n", - " 'y si no hay vuelta atrás',\n", - " 'hay que arriesgarlo todo',\n", - " 'bajo mis pies no hay gravedad',\n", - " 'sólo hay alas',\n", - " 'nunca hay que dudar',\n", - " 'no está prohibido nada',\n", - " 'cuando un sueño es real',\n", - " 'solo hay alas',\n", - " '¡hey! ¡hey!',\n", - " 'ah, ah, ah',\n", - " 'ah, ah, ah',\n", - " 'ah, ah, ah',\n", - " 'ah, ah, ah',\n", - " '¡hey! ¡hey!',\n", - " 'y no espero más de lo que siento',\n", - " 'es un reto para enfrentar',\n", - " 'algo quiere despertar',\n", - " 'mi destino es tan real',\n", - " '(oh, oh, real, tan real)',\n", - " 'sé que no existe el miedo, oh',\n", - " 'si no dejo de avanzar',\n", - " 'la emoción que me mueve es la fuerza de un huracán',\n", - " '(ooh ooh ooh ooh)',\n", - " 'esto que hay en mi interior es mágico',\n", - " 'porque todo puede suceder',\n", - " 'y si caigo, vuelvo',\n", - " 'voy, yo voy',\n", - " 'y vuelvo, y voy',\n", - " 'y si no hay vuelta atrás',\n", - " 'hay que arriesgarlo todo',\n", - " 'bajo mis pies no hay gravedad',\n", - " 'sólo hay alas',\n", - " 'nunca hay que dudar',\n", - " 'no está prohibido nada',\n", - " 'cuando un sueño es real',\n", - " 'sólo hay alas',\n", - " 'es real, sólo hay alas',\n", - " 'con un puente en mi interior',\n", - " 'deslizándome lejos',\n", - " 'lejos',\n", - " 'es real, sólo hay alas',\n", - " 'en mi mundo libertad',\n", - " 'deslizándome lejos',\n", - " 'cada vez más lejos!',\n", - " 'y si no hay vuelta atrás',\n", - " 'hay que arriesgarlo todo',\n", - " 'bajo mis pies no hay gravedad',\n", - " 'sólo hay alas',\n", - " 'nunca hay que dudar',\n", - " 'no está prohibido nada',\n", - " 'cuando un sueño es real',\n", - " 'sólo hay alas',\n", - " '¡hey! ¡hey!',\n", - " 'ah, ah, ah',\n", - " 'ah, ah, ah',\n", - " 'ah, ah, ah',\n", - " 'ah, ah',\n", - " 'english translation',\n", - " \"i'm about to reach my sky\",\n", - " 'challenging the gravity',\n", - " 'nothing can detain this dream that is so real',\n", - " \"(i) know that there's no fear, oh\",\n", - " \"if (i) don't stop attempting\",\n", - " 'the emotion that moves me is the force of a hurricane',\n", - " 'this that is in my interior is magical',\n", - " 'because everything can happen',\n", - " 'and if (i) fall, (i) get back',\n", - " 'go, i go',\n", - " 'and get back, and go',\n", - " \"and if there's no going back\",\n", - " '(you) have to risk everything',\n", - " \"under my feet there's no gravity\",\n", - " 'there are only wings',\n", - " '(you) never have to doubt',\n", - " 'nothing is prohibited',\n", - " 'when a dream is real',\n", - " 'there are only wings',\n", - " 'hey! hey!',\n", - " 'ah, ah, ah',\n", - " 'ah, ah, ah',\n", - " 'ah, ah, ah',\n", - " 'ah, ah, ah',\n", - " 'hey! hey!',\n", - " \"and i don't expect anything else than what (i) feel\",\n", - " '(it) is a challenge to be faced',\n", - " 'something wants to awake',\n", - " 'my destiny is to real',\n", - " '(oh, oh, real, so real)',\n", - " \"(i) know that there's no fear, oh\",\n", - " \"if (i) don't stop moving forward\",\n", - " 'the emotion that moves me is the force of a hurricane',\n", - " '(ooh ooh ooh ooh)',\n", - " 'this that is in my interior is magical',\n", - " 'because everything can happen',\n", - " 'and if (i) fall, (i) get back',\n", - " 'go, i go',\n", - " 'and get back, and go',\n", - " \"and if there's no going back\",\n", - " '(you) have to risk everything',\n", - " \"under my feet there's no gravity\",\n", - " 'there are only wings',\n", - " '(you) never have to doubt',\n", - " 'nothing is prohibited',\n", - " 'when a dream is real',\n", - " 'there are only wings',\n", - " '(it) is real, there are only wings',\n", - " 'with a bridge in my interior',\n", - " 'sliding (me) far away',\n", - " 'away',\n", - " '(it) is real, there are only wings',\n", - " 'in my world, freedom',\n", - " 'sliding (me) far away',\n", - " 'every time further!',\n", - " \"and if there's no going back\",\n", - " '(you) have to risk everything',\n", - " \"under my feet there's no gravity\",\n", - " 'there are only wings',\n", - " '(you) never have to doubt',\n", - " 'nothing is prohibited',\n", - " 'when a dream is real',\n", - " 'there are only wings',\n", - " 'hey! hey!',\n", - " 'ah, ah, ah',\n", - " 'ah, ah, ah',\n", - " 'ah, ah, ah',\n", - " 'ah, ah',\n", - " 'uno, dos y tres',\n", - " 'cuento emocionada',\n", - " 'inicia un grande amor',\n", - " 'yo quiero cantarle así: lalalalalala laaa',\n", - " 'notas de color',\n", - " 'surgen de mis labios',\n", - " 'e inundan el salón',\n", - " 'que bello es cantarle así: lalalalalala laaaaa',\n", - " 'hey, i`m your babe, not a stranger, make it better',\n", - " 'hey, i`m your lover, not another sexy story, sing with me',\n", - " 'hey, you`re my babe, pretty babe, si!',\n", - " 'puede que esta vez',\n", - " 'la cadencia acabe',\n", - " 'y marchite este amor',\n", - " 'yo quise cantarle así: lalalalala laaa',\n", - " 'tu no tienes la culpa',\n", - " 'yo me quiero ir',\n", - " 'es que sola canto y yo así',\n", - " 'prefiero partir',\n", - " 'hey, i`m your babe, not a stranger, make it better',\n", - " 'hey, i`m your lover, not another sexy story, sing it please',\n", - " 'hey, you`re my babe, lovely babe yeah, yes indeed',\n", - " 'ohhh',\n", - " 'hey i do love you',\n", - " 'you do love me, si?',\n", - " 'pa pa ra pa pa ra pa',\n", - " 'you do love me, si?',\n", - " 'mmh, mmh, mmh',\n", - " 'yeah, ye-eah, ye-eah',\n", - " 'gyal, you a leader',\n", - " 'make me a believer',\n", - " \"you're my santa maría\",\n", - " 'yeah, ye-eah, ye-eah',\n", - " 'sweet like the sativa',\n", - " 'make me a believer',\n", - " \"you're my santa maría\",\n", - " 'wine and kotch, gyal bubble non stop',\n", - " 'tip pon yuh toe to the top',\n", - " 'jiggle up yuh body fimi, mek the sitten clap',\n", - " 'you know mi like it like that (uh)',\n", - " 'wine and brace fimi gyal (uh)',\n", - " 'mashup the place fimi gyal (uh)',\n", - " 'number one, you a the best, from the east to the west',\n", - " '(hot like fire)',\n", - " \"you don't want a regular gyal, you need a leader\",\n", - " 'se me pone tonto cuando fumo sativa',\n", - " 'sabe que conmigo esta polla está bendecida',\n", - " '(bad gyal)',\n", - " 'él me llama santa, santa maría',\n", - " \"porque mi coño está apretao' como el primer día\",\n", - " 'este coño te hace bajar down low',\n", - " \"él es jamaicano pero se lo come to'\",\n", - " 'yeah, ye-eah, ye-eah',\n", - " 'gyal, you a leader',\n", - " 'make me a believer',\n", - " \"you're my santa maría\",\n", - " 'yeah, ye-eah, ye-eah',\n", - " 'sweet like the sativa',\n", - " 'make me a believer',\n", - " \"you're my santa maría\",\n", - " 'tú querías que a la oreja te llamase papá',\n", - " 'no sabía dónde se metía, vaya',\n", - " \"le tuve en la cama todo el día sin descansa'\",\n", - " 'y después que me lo hacía se ponía a rezar (zar)',\n", - " 'dice \"you a real, bad gyal',\n", - " 'show me the spanish style\"',\n", - " 'pues le tuve que enseñar',\n", - " 'y ahora a otra no quiere probar',\n", - " \"no quiere a otra, no hay na' más bueno\",\n", - " 'le gusta mi cara, mi cuerpo y mi pelo',\n", - " \"le tengo enganchao' que hasta les tiene celos (celos)\",\n", - " 'aunque él es el primero',\n", - " 'nene, tú me das de todo en exceso',\n", - " 'cuando lo hacemos yo también siento de eso',\n", - " 'vuelos, conexiones y te veo entre medio',\n", - " 'pasamos 24 horas en una suite imperio',\n", - " 'yeah, ye-eah, ye-eah',\n", - " 'gyal, you a leader',\n", - " 'make me a believer',\n", - " \"you're my santa maría\",\n", - " 'yeah, ye-eah, ye-eah',\n", - " 'sweet like the sativa',\n", - " 'make me a believer',\n", - " \"you're my santa maría\",\n", - " \"i'm your santa maría (weh you say)\",\n", - " \"papi, i'm your santa maría (-ría) (weh you say)\",\n", - " 'weh you say',\n", - " 'weh you say',\n", - " 'look it my style',\n", - " \"they i'm cool, don't cheek a cheek\",\n", - " \"'cause i'm not fool\",\n", - " 'look it my style',\n", - " \"they i'm cool, don't cheek a cheek\",\n", - " \"'cause i'm not fool\",\n", - " \"'cause i'm not fool, 'cause i'm not fool\",\n", - " '¡espera! cuándo mires desde afuera',\n", - " 'no me juzgues con tu pena',\n", - " 'resisto el paso, el tiempo vuela',\n", - " 'no hagas trampa se sincera',\n", - " 'jah apacigüa la tormenta, que hay en tu alma',\n", - " 'and look it my style',\n", - " \"they i'm cool, don't cheek a cheek\",\n", - " \"'cause i'm not fool\",\n", - " 'and look it my style',\n", - " \"they i'm cool, don't cheek a cheek\",\n", - " \"'cause i'm not fool\",\n", - " \"'cause i'm not fool, 'cause i'm not fool\",\n", - " 'look it my style',\n", - " \"'cause i'm not fool\",\n", - " 'look it my style',\n", - " '¡espera! cuándo mires desde afuera',\n", - " 'no me juzgues con tu pena',\n", - " 'resisto el paso, el tiempo vuela',\n", - " 'no hagas trampa se sincera',\n", - " 'jah apacigüa la tormenta, que hay en tu alma',\n", - " 'look it my style',\n", - " \"they i'm cool\",\n", - " \"don't cheek a cheek 'cause i'm not fool\",\n", - " 'look it my style',\n", - " \"they i'm cool\",\n", - " \"don't cheek a cheek 'cause i'm not fool\",\n", - " \"'cause i'm not fool\",\n", - " 'look it my style',\n", - " \"'cause i'm not fool\",\n", - " 'look it my style',\n", - " \"they i'm cool\",\n", - " 'and look it my style',\n", - " \"they i'm cool\",\n", - " \"don't cheek a cheek\",\n", - " \"'cause i'm not fool\",\n", - " \"'cause i'm not fool\",\n", - " ...]},\n", - " 'r-b': {'meta': {'train_data': [\"i know that i'm young and i'm dumb\",\n", - " 'but i know what i want',\n", - " 'and what i want is you baby girl',\n", - " \"when you're coming over to my place\",\n", - " 'i miss your face and the way you move your waist',\n", - " 'is kinda amazing',\n", - " \"i know that you've got shit to say\",\n", - " 'when my back is turned',\n", - " \"but that don't get to me anymore\",\n", - " 'the people in this world are so fake',\n", - " 'a second face',\n", - " 'and the way you move your waist',\n", - " 'is kinda amazing',\n", - " \"i swear that you won't see me around\",\n", - " 'and i just want to get away from this town',\n", - " \"i would if i could, but i don't know how\",\n", - " 'siguió aprendiendo sobre el ayer',\n", - " 'maestro de lo mismo pero de algo sabe',\n", - " 'la vista tras los cristales o al revés',\n", - " 'pocos te miran como lo hacían antes',\n", - " 'repitiendo encuentras la diferencia',\n", - " 'invasión de la impotencia si ves que no puedes ganar',\n", - " 'infancia lenta, baja latencia',\n", - " \"tira del ánima porque hay veces que no hay ganas de na'\",\n", - " 'vida detrás del as',\n", - " 'se trunca tu plan',\n", - " 'me lleva a la inercia sin acelerar',\n", - " 'buscando hacia dónde tengo que girar',\n", - " 'es cuando solo veo rectas',\n", - " 'gestos serios sin la mueca',\n", - " 'reventándome las tuercas',\n", - " 'mis salidas se conectan',\n", - " 'mis circuitos se retroalimentan',\n", - " 'lo suyo sería revertir el proceso',\n", - " 'librarse del atrezzo, potenciar el seso',\n", - " 'vivir los fallos pero en retroceso',\n", - " 'contar con la sabiduría sin cargar el peso',\n", - " 'en mi trayecto a la luna no faltan besos',\n", - " 'aunque el amor lleve al odio y éste al reverso',\n", - " 'tiempo atrás fuimos ya seres espesos',\n", - " 'contaminados por el estrés y los excesos',\n", - " 'y ahora, vuelta al mundo musicado',\n", - " 'a ver el mundo en este lado',\n", - " 'el de los huesos, donde al corazón lo ilumina el flexo',\n", - " 'la energía vacía y todo eso lo he dejado en el otro puesto',\n", - " 'el de los locos y los muertos',\n", - " 'no sé dónde fui un intruso, pero me siento de lejos',\n", - " 'tal vez me mirase un tuerto al llegar a este puerto o algo',\n", - " 'de momento me concentro en hacer que se me haga largo',\n", - " 'aunque me sienta extraño, quizá encuentre hogar en otro cuerpo',\n", - " 'baby i want to go',\n", - " 'fly away, and let you go',\n", - " 'out of my head, get out of my head',\n", - " 'stuck in limbo',\n", - " \"not allowed at heaven's door\",\n", - " 'we imagined, we became magic',\n", - " 'x2',\n", - " \"baby i've been shot down\",\n", - " 'took a bullet with your name',\n", - " 'and now i am hellbound',\n", - " \"go tell 'em i'm no longer afraid\",\n", - " \"lately you're not coming around\",\n", - " 'and i cannot remember your face, but darling',\n", - " \"i'm no longer thinkin' about it\",\n", - " 'both of us have died by the blade',\n", - " \"and soon we'll go down in flames\",\n", - " 'burning inside of me',\n", - " \"and soon we'll go down in flames\",\n", - " \"and soon we'll go down in flames\",\n", - " 'burning inside of me',\n", - " 'cannot remember your face',\n", - " \"i know that i'm young and i'm dumb\",\n", - " 'but i know what i want',\n", - " 'and what i want is you baby girl',\n", - " \"when you're coming over to my place\",\n", - " 'i miss your face and the way you move your waist',\n", - " 'is kinda amazing',\n", - " \"i know that you've got shit to say\",\n", - " 'when my back is turned',\n", - " \"but that don't get to me anymore\",\n", - " 'the people in this world are so fake',\n", - " 'a second face',\n", - " 'and the way you move your waist',\n", - " 'is kinda amazing',\n", - " \"i swear that you won't see me around\",\n", - " 'and i just want to get away from this town',\n", - " \"i would if i could, but i don't know how\",\n", - " 'pop ur pussy like this',\n", - " '(pop, pop, pop ur pussy like—)',\n", - " '(pop, pop, pop ur pussy like—)',\n", - " '(pop, pop, pop ur pussy like—)',\n", - " 'pop it, pot it',\n", - " 'pop ur pussy like—',\n", - " \"como si hubiera estao' atao' de pies y manos\",\n", - " 'como un disparo, como cabreado',\n", - " 'como un hambriento que por fin agarra un plato',\n", - " \"como después un amaño, como pa' hacerte daño\",\n", - " \"pa' que tú me entiendas, mi amiga\",\n", - " 'como un cuchillo atravesando tu piel',\n", - " \"pa' que tú me entiendas, mi amiga\",\n", - " 'como si algo en mi cabeza ya no fuera bien',\n", - " 'como dando un volantazo',\n", - " 'como queriendo romperte en pedazos',\n", - " 'como un cristal que se quiebra',\n", - " 'como un fuego descontrolado',\n", - " 'como si nuestro tiempo hubiera acabado',\n", - " 'como loco y desesperado',\n", - " 'como un disparo',\n", - " 'i wanna pop ur pussy like—',\n", - " 'pop, pop, pop ur pussy like— (pop it, pop it)',\n", - " 'pop ur pussy like—',\n", - " 'pop, pop, pop ur pussy like— (pop it, pop it)',\n", - " 'i wanna pop ur pussy like this',\n", - " 'pop ur pussy like this',\n", - " 'pop ur pussy like this',\n", - " 'pop ur pussy like— (pop it, pop it)',\n", - " 'i wanna pop ur pussy like— (i wanna pop ur pussy like this)',\n", - " 'como una montaña al caer',\n", - " 'como queriéndote romper',\n", - " 'como algo que siempre quisiste y nunca pudiste hacer',\n", - " 'como una línea y un carnet (pop it, pop it)',\n", - " 'como si fuera la última vez (pop it, pop it)',\n", - " 'i wanna pop ur—, i wanna pop ur—',\n", - " 'i wanna pop ur pussy like (¡ey!)',\n", - " \"pa' que tú me entiendas, mi amiga\",\n", - " 'como un cuchillo atravesando tu piel',\n", - " \"pa' que tú me entiendas, mi amiga\",\n", - " 'como si algo en mi cabeza ya no fuera bien',\n", - " 'como dando un volantazo',\n", - " 'como queriendo romperte en pedazos',\n", - " 'como un cristal que se quiebra',\n", - " 'como un fuego descontrolado (pop ur pussy like—)',\n", - " 'como si nuestro tiempo hubiera acabado',\n", - " 'como loco y desesperado',\n", - " 'como un disparo',\n", - " '(pop ur pussy like this)',\n", - " 'pop, pop, pop ur pussy like— (pop it, pop it)',\n", - " 'pop ur pussy like—',\n", - " 'pop, pop, pop ur pussy like— (pop it, pop it)',\n", - " 'i wanna pop ur pussy like this',\n", - " 'pop ur pussy like this',\n", - " 'pop ur pussy like this',\n", - " 'pop ur pussy like— (pop it, pop it)',\n", - " 'i wanna pop ur pussy like— (i wanna pop ur pussy like this)',\n", - " 'sé que te gusta when i pop it, pop it',\n", - " 'when i pop it, pop it',\n", - " 'sé que te gusta when i pop it, pop it',\n", - " 'when i pop it, when i pop your pussy like—',\n", - " 'i pop it, pop it',\n", - " 'sé que te gusta when i pop it, pop it',\n", - " 'when i pop it, pop it',\n", - " 'ay, ay, ay',\n", - " 'nobody likes being played',\n", - " 'oh, beyoncé, beyoncé',\n", - " 'oh, y sasha, y sasha (hey)',\n", - " \"he said, i'm worth it, his one desire\",\n", - " '(yo conozco cosas del que tu no quieres ni saber)',\n", - " 'he kissed me, his one and only',\n", - " '(yes) beautiful liar',\n", - " '(solo por placer nuestra amistad no vamos a perder)',\n", - " 'a mi también',\n", - " 'why are we the ones who suffer?',\n", - " 'no hay que caer',\n", - " \"he won't be the one to cry\",\n", - " \"(ay) let's not kill the karma\",\n", - " \"(ay) let's not start a fight\",\n", - " \"(ay) it's not worth the drama\",\n", - " 'for a beautiful liar',\n", - " '(oh) nos va dividir?',\n", - " '(oh) no nos va a excitar',\n", - " '(oh) vamos a sufrir?',\n", - " '(oh) por un bello embustero',\n", - " 'confiaba en el',\n", - " 'mas cuando lo que encontré',\n", - " 'besándote el cuello',\n", - " \"(i didn't know about you then 'till i saw you with him again)\",\n", - " 'por que a ti?',\n", - " 'si hay mil por ahí',\n", - " 'el es un perro',\n", - " '(you stole everything, how can you say i did you wrong?)',\n", - " 'a mi también',\n", - " \"when the pain and heartbreak's over\",\n", - " 'no hay que caer',\n", - " 'the innocence is gone',\n", - " \"(ay) let's not kill the karma\",\n", - " \"(ay) let's not start a fight\",\n", - " \"(ay) it's not worth the drama\",\n", - " 'for a beautiful liar',\n", - " '(oh) nos va dividir?',\n", - " '(oh) no nos va a excitar',\n", - " '(oh) vamos a sufrir?',\n", - " '(oh) por un bello embustero',\n", - " 'lo creía tan mio',\n", - " 'yo vivía por el',\n", - " 'and i wish could free you',\n", - " 'of the hurt and the pain',\n", - " 'es un hombre muy frío',\n", - " 'no es de una mujer',\n", - " 'ya no nos puede engañar',\n", - " 'haremos con su juego, ya basta...de sus mentiras',\n", - " 'dile adiós.....por las dos',\n", - " \"(ay) let's not kill the karma\",\n", - " \"(ay) let's not start a fight\",\n", - " \"(ay) it's not worth the drama\",\n", - " 'for a beautiful liar',\n", - " '(oh) nos va dividir?',\n", - " '(oh) no nos va a excitar',\n", - " '(oh) vamos a sufrir?',\n", - " '(oh) por un bello embustero',\n", - " 'this is the remix',\n", - " 'cha, cha, cha (yeah)',\n", - " 'y por eso te amo',\n", - " 'si ya sabes como me traes, pero te haces',\n", - " 'you gonna love me',\n", - " 'a mi amore, he-he, love me',\n", - " 'y por favor because you love me',\n", - " \"i'm gonna love you 'til the sun burns up\",\n", - " 'yeah, he-he',\n", - " \"i'll hold back the moon\",\n", - " 'in case you want a little more afternoon',\n", - " \"i'll be your cover in a rainy monsoon\",\n", - " \"i'll be your sombrilla, eh-eh, ole, ole\",\n", - " 'contigo voy a bailar, el ritmo no va a parar',\n", - " 'tu y yo hasta el final, ole, ole (ole)',\n", - " \"contigo me vo' a qudar, nunca te voy a soltar (hey)\",\n", - " \"can't let the one get away, ole\",\n", - " 'you gonna love me (yeah, eh-eh)',\n", - " 'a mi amore, he-he, love me (love mi amor)',\n", - " 'y por favor because you love me (because you love me)',\n", - " \"i'm gonna love you 'til the sun burns up (burns up)\",\n", - " 'yeah, he-he',\n", - " 'now all you lovers wave (wave)',\n", - " 'uh, wave, every lover wave (wave)',\n", - " \"uh, wave, if you got love let's see you wave (you wave)\",\n", - " \"wave, 'til the sun burns up\",\n", - " 'uh, wave',\n", - " '(oye, me dijeron que)',\n", - " '(ay ya)',\n", - " 'le gusta fumar y yo en ro-lo',\n", - " 'ella ofrece y prefiere los cho-los',\n", - " 'pero va a salir con el c-kan porque sabe que todo el barrio lo contro-lo',\n", - " 'maría llegó tu josé, del niñito dios yo no sé',\n", - " 'yo la besé, después de realicé, cómo amanecí, debajo de usted',\n", - " 'se',\n", - " 'que el infierno diera',\n", - " 'si le hablo la conociera',\n", - " 'vaya y pida lo que quiera',\n", - " 'que aferre la billetera',\n", - " 'yo no quiero que me quiera',\n", - " 'y tu no quieras con cualquiera',\n", - " 'que la quiera tansiquira',\n", - " 'la mitad que yo la quiero (yeah eh yeah)',\n", - " 'ole, hola hola',\n", - " 'deja primero dejar la pistola',\n", - " 'luego me baila, la pista esta sola',\n", - " 'subele wey que me gusta esta rola',\n", - " 'you gonna love me (you gonna love me)',\n", - " 'a mi amore, he-he, love me (love mi amore)',\n", - " 'y por favor because you love me (hey hey)',\n", - " \"i'm gonna love you 'til the sun burns up (burns up, eh)\",\n", - " 'yeah, he-he',\n", - " 'now all you lovers wave',\n", - " 'uh, wave, every lover wave',\n", - " \"uh, wave, if you got love let's see you wave (see you wave)\",\n", - " 'wave, till the sun burns up (till the sun burns up)',\n", - " 'uh, wave',\n", - " '(hasta que salga el sol)',\n", - " '(hasta que salga el sol)',\n", - " '(bésame, bésame mucho)',\n", - " 'ole',\n", - " 'no more war, no more war',\n", - " 'what are we even fighting for',\n", - " 'el dolor que trae el fracaso',\n", - " 'de la duda y la traición',\n", - " 'veo una vida hecha pedazos',\n", - " 'y ahí es donde nace un campeón',\n", - " \"i'll fight for my country\",\n", - " 'you fight for your country',\n", - " 'we see the victory',\n", - " \"they'll get the victory\",\n", - " 'man a man, heart to heart',\n", - " 'face to face but worlds apart',\n", - " \"you and i, we're champions\",\n", - " \"we're champions, we're champions\",\n", - " 'you fight for my country',\n", - " \"i'll fight for your country\",\n", - " 'we see the victory',\n", - " \"they'll get that victory\",\n", - " 'man a man, heart to heart',\n", - " 'face to face but worlds apart',\n", - " \"you and i we're champions\",\n", - " \"we're champions, we're champions\",\n", - " 'de amarguras y esperanzas',\n", - " 'de las penas y el dolor',\n", - " 'de una fé que todo alcanza',\n", - " 'de allí es como nace un campeón',\n", - " 'no more blood, no more pain',\n", - " 'no más ven watch the way',\n", - " \"wave your flag, and i'll wave mine\",\n", - " 'we gotta shift the paradigm',\n", - " \"i'll fight for my country\",\n", - " 'you fight for your country',\n", - " 'we see the victory',\n", - " \"they'll get the victory\",\n", - " 'man a man, heart to heart',\n", - " 'face to face but worlds apart',\n", - " \"you and i, we're champions\",\n", - " \"we're champions, we're champions\",\n", - " 'you fight for my country',\n", - " \"i'll fight for your country\",\n", - " 'we see the victory',\n", - " \"they'll get that victory\",\n", - " 'man a man, heart to heart',\n", - " 'face to face but worlds apart',\n", - " \"you and i we're champions\",\n", - " \"we're champions, we're champions\",\n", - " \"in the end it's all love\",\n", - " 'you can',\n", - " 'sometimes life will beat you up',\n", - " \"but in the end it's all love\",\n", - " 'campeones en panamá',\n", - " 'champions in américa',\n", - " 'campeones champions campeones champions',\n", - " 'campeones en panamá',\n", - " 'champions in américa',\n", - " 'campeones champions campeones champions',\n", - " 'campeones en panamá',\n", - " 'champions in américa',\n", - " 'campeones champions campeones champions',\n", - " 'de la condición más dura',\n", - " 'de allí es donde nace un campeón',\n", - " 'y nos hicimos luchando',\n", - " 'y eso no fue coincidencia',\n", - " 'campeones en panamá',\n", - " 'champions in américa',\n", - " 'campeones champions campeones champions',\n", - " 'campeones en panamá',\n", - " 'champions in américa',\n", - " 'campeones champions campeones champions',\n", - " 'te echo de menos, no sé ni dónde estás',\n", - " 'te echo de menos y no te puedo llamar',\n", - " \"i'm on my shit now, i'm going to the top\",\n", - " 'i miss you baby, so i wish you coming back',\n", - " 'i got my town and my money on my mind',\n", - " 'i got my town and my money on my mind',\n", - " 'yo te perdí, ya no sé ni dónde estás',\n", - " 'yo te perdí, ya no sé ni a dónde vas',\n", - " 'recuerdo baby cuando estábamos tú y yo',\n", - " 'lo siento baby porque no supe tratarte',\n", - " 'estaba perdido mami, yo vengo de marte',\n", - " 'y no lo sé, no sé, nunca supe amarte',\n", - " \"i'm on my shit now, i'm going to the top\",\n", - " 'now i got hoes and my homies have the guap',\n", - " \"now, where are you?, where's you by my side?\",\n", - " \"she was my baby now don't even recognize me\",\n", - " \"i don't even feel that my heart is not alone\",\n", - " 'me drogué mucho, estoy tratando de olvidarte',\n", - " \"all i know is that i'm going to the sky\",\n", - " \"y no estás tú aquí, pero ¿qué le vamo' a hacer?\",\n", - " \"ey, ¿qué le vamo' a hacer?\",\n", - " \"si no estás tú a mi lado, ¿qué le vamo' a hacer?\",\n", - " \"si no estás tú a mi lado, ¿qué le vamo' a hacer?\",\n", - " \"si no estás tú a mi lado, ¿qué le vamo' a hacer?\",\n", - " 'yo te quería, tú te me marchaste',\n", - " \"y ya no sé ni pa' dónde ir a buscarte\",\n", - " 'y yo estoy roto',\n", - " 'ya sé ir tirando poco a poco',\n", - " \"now is this, now i'm going to the top\",\n", - " 'i miss you baby, and i need you by my side',\n", - " \"now is this, now i'm going to the top\",\n", - " 'you miss me baby, but you are never by my side no more',\n", - " 'no on my side, no more',\n", - " 'ya no estás por aquí, ey',\n", - " 'ya no estás por aquí',\n", - " 'siento que la perdí',\n", - " 'ya no estás por aquí, mi mamá me pregunta',\n", - " 'que qué fue de ti y que no me eche la culpa',\n", - " 'que si haces algo, que qué tal, que si algo estudias',\n", - " \"esa no era pa' ti, keo, ya encontrarás la tuya\",\n", - " 'te echo de menos, no sé ni dónde estás',\n", - " 'te echo de menos y no te puedo llamar',\n", - " \"i'm on my shit now, i'm going to the top\",\n", - " 'i miss you baby, so i wish you coming back',\n", - " 'i got my town and my money on my town',\n", - " 'i got my town and my money on my town',\n", - " 'yo te perdí, ya no sé ni dónde estás',\n", - " 'yo te perdí, ya no sé ni a dónde vas',\n", - " '¡los líderes!',\n", - " 'akon!',\n", - " 'aventura',\n", - " 'w, yandel (hey)',\n", - " \"it's all up to you (hey)\",\n", - " 'all up to you (hey)',\n", - " '(all up to you)',\n", - " 'si mañana te vas, mañana te olvido',\n", - " \"te olvido, te olvido (i'll forget you, girl)\",\n", - " \"si mañana me amas, me escapo contigo (contigo; that's right)\",\n", - " 'jamás me limito, no le temo al destino (destino)',\n", - " 'o te quedas o te vas, elige el camino (elige el camino, camino)',\n", - " '(ey)',\n", - " 'vete, al fin eres dueña de tus sentimientos (ajá)',\n", - " 'pero si te quedas yo te ofrezco hasta el cielo',\n", - " 'es tu decisión',\n", - " 'dime en este momento',\n", - " 'una decisión bien tuya',\n", - " 'oh-oh-oh, eh',\n", - " \"tú me dice'\",\n", - " \"i'mma always keep it true\",\n", - " 'and i must still do my thing even if it is not with you (hey)',\n", - " \"and i hope you're prepared to be heartbroken forever\",\n", - " \"'cause no one can be compared to me\",\n", - " 'nobody can fuck you like i can',\n", - " 'or handcuff you like i can',\n", - " 'will he be there when shit hit the fan like i can',\n", - " \"but it's all up to you (hey)\",\n", - " 'all up to you (hey)',\n", - " 'all up to you (hey, hey)',\n", - " \"it's all up to you (hey)\",\n", - " 'all up to you (hey)',\n", - " 'all up to you (hey, hey, hey-hey)',\n", - " 'si mañana te vas, mañana te olvido',\n", - " \"te olvido, te olvido (won't forget you, girl)\",\n", - " 'si mañana me amas, me escapo contigo, contigo, oh, oh',\n", - " 'tú sabes que eres es mía, mía, mía',\n", - " 'no se trata de orgullo ni de hombría (woh-woh-woh-woh)',\n", - " 'se trata de que en la cama tú me decías',\n", - " 'que no habías sentido lo que conmigo sentías (uh-uh)',\n", - " 'y todo era preciso, ahora todo es indeciso',\n", - " 'que me muero por tocar tu pelo liso',\n", - " 'o darle besitos a tu abdomen liso',\n", - " \"y me dice' que te vas y me das contra el piso\",\n", - " 'vete si tú piensas que te irá mejor con un nuevo amor',\n", - " '(es el momento de la decisión)',\n", - " 'amor (yes, sir; heh)',\n", - " 'vete y te aseguro que regresas lamentando tu error',\n", - " 'tu error',\n", - " \"it's all up to you (hey)\",\n", - " 'all up to you (hey)',\n", - " 'all up to you (hey, hey)',\n", - " \"it's all up to you (hey)\",\n", - " 'all up to you (hey)',\n", - " 'all up to you (hey, hey)',\n", - " 'romeo',\n", - " 'si mañana te vas, mañana te olvido (mañana te olvido)',\n", - " '¡w!',\n", - " 'si mañana me amas, me escapo contigo (contigo, contigo, contigo)',\n", - " 'yandel',\n", - " 'jamás me limito, no le temo al destino (no le temo al destino, oh)',\n", - " 'o te quedas o te vas, elige el camino',\n", - " 'bye-bye, touché',\n", - " 'the kid is gonna be ok!',\n", - " '¡vete!',\n", - " 'oh, nights like these, i live for nights like these, yeah',\n", - " 'start me up a vodka tonic',\n", - " \"sittin' at the bar in a\",\n", - " 'hole in the wall on the east side',\n", - " \"and the drinks don't cost me much\",\n", - " \"and there's never anybody there\",\n", - " 'incognito suits me just fine, yeah, yeah',\n", - " 'a man with a guitar, not tryna be a star',\n", - " \"stool in a small stage, singin' the pain away\",\n", - " 'señorita get up and dance',\n", - " 'oh, nights like these, i live for nights like these',\n", - " \"when you ain't nobody but you and i'm just me, ayy\",\n", - " 'not the lights, no glitz and glam, just good vibes and good company',\n", - " 'oh, nights like these, i live for nights like these',\n", - " \"sírvame un trago 'e negroni\",\n", - " 'la ocasión está perfecta, puedo ser normal',\n", - " 'hoy deseo ser humano y desacatarme sin nadie opinar',\n", - " 'con la morena del vestido colorado quisiera bailar',\n", - " '(hey, sólo escucha)',\n", - " 'una noche sin ser romeo',\n", - " 'y me doy un baño del pueblo',\n", - " 'bailo, sudo, me emborracho',\n", - " 'yo bailaría una bachata',\n", - " 'quemo a todas con un perreo',\n", - " 'sería algo tan especial',\n", - " 'noches así que me hacen sentir',\n", - " 'son momentos que me incitan a vivir',\n", - " 'no hay glamour, nadie es estrella, nadie pide ni un autógrafo',\n", - " 'por noches así me escapo y soy feliz',\n", - " 'just tryna have a good night',\n", - " \"where ain't nobody worried 'bout a spotlight\",\n", - " \"i'm nobody, you nobody and it's alright\",\n", - " \"it's alright, it's alright, ayy\",\n", - " \"i'm just tryna have a good night\",\n", - " \"where ain't nobody worried 'bout a spotlight\",\n", - " \"i'm nobody, you nobody and it's alright\",\n", - " \"it's alright, it's alright, oh woah, oh\",\n", - " 'oh, nights like these, i live for nights like these (hey, i live for nights like these, oh, woah)',\n", - " \"when you ain't nobody but you and i'm just me, ayy (nobody but you and i'm just me, oh)\",\n", - " 'not the lights, no glitz and glam, just good vibes and good company (woo, hey)',\n", - " 'oh, nights like these, i live for nights like these (nights like these, i live for nights like these)',\n", - " 'noches así que me hacen sentir',\n", - " 'son momentos que me incitan a vivir',\n", - " 'no hay glamour, nadie es estrella, nadie pide ni un autógrafo',\n", - " 'por noches así me escapo y soy feliz',\n", - " 'oh, nights like these, i live for nights like these']},\n", - " 'data': ['part i: \"someone\"',\n", - " 'i love you like when we began',\n", - " 'friends, lovers, friends, lovers, end',\n", - " 'now you got yourself a man',\n", - " \"i been busy makin' other plans\",\n", - " 'you put it on me now and then',\n", - " \"he's a sweetie kinda understands\",\n", - " 'i cooked and lit the candles man',\n", - " 'i thought that we were doing it again',\n", - " \"it's so peculiar\",\n", - " 'this game that we play, hey, hey',\n", - " 'and i pray that we do',\n", - " 'i want it all the way, yeah',\n", - " 'oh, i needed you',\n", - " \"i don't know what to do, you\",\n", - " \"took your lovin' from me\",\n", - " 'and you gave it to someone new',\n", - " \"let's just forget the worst, hey\",\n", - " 'and then forget the world',\n", - " 'i needed you',\n", - " \"i don't know what to do\",\n", - " 'you, you, you',\n", - " 'part ii: \"agüita\"',\n", - " 'yeah, yeah (agua, agua, agua)',\n", - " 'ye-yeah (cauca flo)',\n", - " \"semejante' gotita', agüita, agüita\",\n", - " \"lo' que e'tamos activo' movemo' lo' pie' rené higuita\",\n", - " 'un pasito muy fino, y el flow ‘ta divino',\n", - " 'de mi mami l’estilo, todito caliente, me salto lo tibio',\n", - " \"agüita, agüita, me llueven diosita'\",\n", - " \"la' má' fina' se agitan, me caen distinta', gracias a la vida\",\n", - " 'es que soy un berraco salvaje, pero suave chinchilla',\n", - " \"me meto a rumba con tacón en pie, a vece' me maquilla'\",\n", - " \"se me’ acerca una nena chimbita, no' pegamo' en seguida\",\n", - " \"un pasito tun-tun, ¡hey! hacemo' la vuelta, agüita, agüita\",\n", - " \"recuerdo lo' tiempo' difícile', cuando yo no tenía\",\n", - " \"ando embamba'o esto' día', ¡qué frío!\",\n", - " 'ojalá no me de pulmonía, yeah, yeah',\n", - " 'desde el barrio de brooklyn lo mueven, lo mueven, la sa-san basilio',\n", - " \"en atlanta s’escucha totó, en bogotá ponen migo'\",\n", - " 'cada loca en su tema, yo al peluche en el río',\n", - " \"a ver si le' muestro un nuevo estilo, ‘toy emparama'o, dio' mío\",\n", - " \"diferente la pinta, salpican gotita'\",\n", - " 'agüita, agüita, agüita, agüita, agüita, agüita',\n", - " \"la lluvia bendita (la lluvia bendita), la' lágrima' limpian\",\n", - " 'agüita, agüita, agüita, agüita, agüita, agüita',\n", - " \"diferente la pinta, salpican gotita'\",\n", - " 'agüita, agüita, agüita, agüita, agüita, agüita',\n", - " \"la lluvia bendita, la' lágrima' limpian\",\n", - " 'agüita, agüita, agüita, agüita, agüita, agüita',\n", - " 'part iii: \"bloom\"',\n", - " 'bloom',\n", - " 'beat into a simple tool',\n", - " 'opening without a clue',\n", - " 'blush to taste your sweet perfume',\n", - " 'bloom, all you ever do',\n", - " 'wipe the bloom from your fruits and leaves',\n", - " 'carefully, tenderly',\n", - " 'wipe the bloom from your fruits and leaves',\n", - " 'carefully, tenderly',\n", - " 'mind the glare',\n", - " \"blink, it's all you see\",\n", - " 'baby, breathe',\n", - " 'especially',\n", - " 'wipe the bloom from your fruits and leaves',\n", - " 'carefully, tenderly',\n", - " 'mind the glare',\n", - " \"blink, it's all you see\",\n", - " 'and, baby, breathe',\n", - " 'especially',\n", - " 'wipe the bloom from your fruits and leaves',\n", - " 'carefully, tenderly',\n", - " 'mind the glare',\n", - " \"blink, it's all you see\",\n", - " 'baby, breathe',\n", - " 'especially',\n", - " '(feat. fat joe)',\n", - " 'ts sound (hey baby)',\n", - " 'yeah, come on (nadie más podría)',\n", - " 'you want me to track the dawn thalía, ah... (nadie más podría)',\n", - " 'tm (amarte como lo hago yo)',\n", - " \"you're just another winner (risa)\",\n", - " 'woo, yeah, umh, yeah, umh, terror',\n", - " 'come on, woo, oh, oh...',\n", - " 'que pasó en mi vida',\n", - " 'para merecer un amor así?',\n", - " 'cuanto lloré y sufrí',\n", - " 'día y noche esperando',\n", - " 'a que vinieras por mi',\n", - " 'y ahora estás aquí...',\n", - " 'tan galán que me haces vibrar',\n", - " 'con tu piel tostada siempre tan sensual',\n", - " 'y todas esas cosas que piensas hablar',\n", - " 'me pones sexy, sexy...',\n", - " 'baby, nadie más puede amarte más que yo',\n", - " \"i'm feelin' love in the deepest fall, give you the keys and all\",\n", - " 'you even when helped me when the beef was on',\n", - " 'dime si quizás este amor es de verdad',\n", - " 'i feel the same way, you make the don say',\n", - " 'girl, i want you, girl, i need you',\n", - " 'qué no ves?',\n", - " 'esta historia llena de amor',\n", - " 'nunca tendrá fin',\n", - " 'y puedo jurar que nadie más hará',\n", - " 'los juegos que inventamos a la mar',\n", - " 'comernos los labios hasta sangrar (ah..)',\n", - " 'tan galán que me hace vibrar',\n", - " 'con tu piel tostada siempre tan sensual',\n", - " 'y todas esas cosas que piensas hablar',\n", - " 'me pones sexy, sexy...',\n", - " 'baby, nadie más puede amarte más que yo',\n", - " \"i'm feelin' love in the deepest fall, give you the keys and all\",\n", - " 'you even when helped me when the beef was on',\n", - " 'dime si quizás este amor es de verdad',\n", - " 'i feel the same way, you make the don say',\n", - " 'girl, i want you, girl, i need you',\n", - " '(uh...) slow down, love',\n", - " \"don't you see me with my girl, what you thinkin' it was\",\n", - " \"i know you're used to seein' me in the clubs\",\n", - " \"different chicks, sippin' cris', just a million in dubs\",\n", - " \"but i've changed, only got eyes for her\",\n", - " \"believe me, ain't no girl dividin' us\",\n", - " 'we could maybe elope, have a baby and all',\n", - " \"‘cause i don't wanna be a player no more\",\n", - " 'baby, nadie más puede amarte más que yo',\n", - " 'i feel the same way, you make the don say',\n", - " 'girl, i want you, girl, i need you',\n", - " 'dime si quizás este amor es de verdad',\n", - " \"‘cause i'm feeling something real\",\n", - " 'i feel the same way, you make the don say',\n", - " 'girl, i want you, girl, i need you',\n", - " 'baby, nadie más puede amarte más que yo',\n", - " 'i feel the same way, you make the don say',\n", - " 'girl, i want you, girl, i need you',\n", - " 'dime si quizás este amor es de verdad',\n", - " \"‘cause i'm feeling something real\",\n", - " 'i feel the same way, you make the don say',\n", - " 'girl, i want you, girl, i need you',\n", - " 'baby... baby... baby... baby...',\n", - " 'baby... baby... baby... baby...',\n", - " 'agujerito del cielo',\n", - " 'cuelando el brillo de dios',\n", - " \"un rayo cayó en tus ojo'\",\n", - " 'y me partió el corazón',\n", - " 'agujerito del cielo',\n", - " 'díctame por dónde ir',\n", - " 'para yo no equivocarme',\n", - " 'y así ver mi porvenir',\n", - " \"when you're done with me\",\n", - " 'i see a negative space',\n", - " \"what you've done for me\",\n", - " 'who needs to hallucinate?',\n", - " 'who needs to pray? who?',\n", - " \"who needs balance? i'll see you every day\",\n", - " 'barefoot in the park',\n", - " 'you start rubbing off on me',\n", - " 'barefoot in the park',\n", - " 'you start rubbing off on me',\n", - " \"ya tengo to' lo que quiero\",\n", - " \"ya no puedo pedir má'\",\n", - " \"cuando te tengo a mi la'o\",\n", - " \"lo pasa'o se queda atrá'\",\n", - " 'si te apartan de mi vera',\n", - " 'y te tuviera que encontrar',\n", - " 'hasta allá te encontraría',\n", - " 'como el río va a la mar',\n", - " 'barefoot in the park',\n", - " 'you start rubbing off on me',\n", - " 'barefoot in the park',\n", - " 'you start rubbing off on me',\n", - " 'saturn starts turning off each ring',\n", - " \"sky's locking up i think\",\n", - " 'i call off the chase',\n", - " \"who needs balance? i'll see you every day\",\n", - " 'barefoot in the park',\n", - " 'you start rubbing off on me',\n", - " 'barefoot in the park',\n", - " 'you start rubbing off on me',\n", - " 'you start-you start rubbing off-rubbing off on me-off on me',\n", - " 'barefoot in-barefoot in the park-in the park',\n", - " 'you start-you start rubbing off-rubbing off on me-off on me']},\n", - " 'rap': {'meta': {'train_data': ['fvck vibes on the beat',\n", - " 'yeyo en mi iphone',\n", - " 'yeyo en mi iphone, yeyo en mi iphone',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah',\n", - " 'esta noche creo que me voy a morir',\n", - " 'baby, tranqui estoy tomando tranki no voy a sufrir (voy a sufrir)',\n", - " 'no quiero verte si voy a salir (yeah)',\n", - " 'subo mi dosis ahora solo pienso en mí, yeah',\n", - " 'ten-tengo un demonio en la cabeza que te va a joder',\n", - " \"tengo trato pa' que me proteja' si me va a doler (yeah)\",\n", - " \"esta vez quieo' que vaya todo bien\",\n", - " \"nos vestimos to' de negro, funeral, yeah\",\n", - " 'hoy no tengo a nadie cerca que me alegre, yeah, yeah',\n", - " 'no es tan fácil cuando quiero verte, yeah',\n", - " 'otra vez veo tus ojos en la gente, yeah',\n", - " \"yo ya nunca pueo' volver a casa baby, yeah\",\n", - " 'cabe un pollo en mi iphone',\n", - " 'cuando estás llamando está todo nevado (yeah, yeah)',\n", - " 'cabe un pollo en mi iphone',\n", - " 'cuando estás llamando está todo nevado y no puedo contestar',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah',\n", - " 'problemas en mi iphone, bitches on my iphone',\n", - " 'yeyo en mi iphone, yeyo en mi iphone',\n", - " 'problemas en mi iphone, bitches on my iphone',\n", - " 'yeyo en mi iphone, yeyo en mi iphone',\n", - " 'yeyo en mi iphone, zorras en el iphone',\n", - " 'yeyo en mi iphone, me odias en el iphone',\n", - " 'yeyo en mi iphone, zorras en el iphone',\n", - " 'yeyo en mi iphone, me odias en el iphone (oh-oh)',\n", - " 'tengo yeyo en el iphone, el corazón helado',\n", - " 'esa coca brilla como diamantes bailando',\n", - " 'me siento solo aunque tenga todo un planeta a mi lado (oh-oh)',\n", - " 'porque ya no eres la misma, ya no me quieres tanto (oh-oh)',\n", - " 'ya no puedo controlarlo, el mundo cae a mi lado',\n", - " 'nadie te olvida cuando tienes cocaína en el iphone',\n", - " 'ya no puedo controlarlo, el mundo cae a mi lado',\n", - " 'nadie te olvida cuando tienes cocaína en el iphone',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone (yeyo en mi iphone), yeah, yeah',\n", - " 'yeyo en mi iphone, yeyo en mi iphone, yeyo en mi iphone (yeyo en mi iphone), yeah',\n", - " 'yeyo en mi iphone, yeah',\n", - " 'tengo yayo en mi iphone, yeah, yeah',\n", - " '?? muerte, ?? siempre',\n", - " '?? pobre o rebelde',\n", - " 'no sé cómo empezar',\n", - " 'otro guerrillero!',\n", - " 'más pobreza, más violencia',\n", - " 'estos son las consecuencias',\n", - " 'no sé donde va para',\n", - " 'otra guerrillera!',\n", - " 'de repente me parado y empecé piensar',\n", - " 'pensamiento de protesta de el lago a mar',\n", - " 'están in lucha',\n", - " 'lo quieren disparar',\n", - " 'en la carcel, en solitario , como alcatraz',\n", - " 'tío keko, no te quiero',\n", - " '??',\n", - " '??',\n", - " '??',\n", - " 'in los annos los ochentos ??',\n", - " 'siempre in la lucha con compañero harold',\n", - " 'las mujeres in la lucha no pueden ??',\n", - " '??, vamos representar',\n", - " 'un gobierno ??',\n", - " '??',\n", - " '??',\n", - " '??',\n", - " '??',\n", - " '??',\n", - " '??',\n", - " 'para una nueva vida',\n", - " 'apúrate, apúrate',\n", - " 'rush, rush',\n", - " '?? they reside in the streets??',\n", - " 'guerrilleros están presente all the days of my life',\n", - " '??, jardinero',\n", - " '??',\n", - " 'sandinistas guerrilleros están en nicaragua',\n", - " 'farabundo, marti, miguel enriquez',\n", - " 'simón bolivar, guevara en la montaña',\n", - " 'he got killed in bolivia',\n", - " 'fred hampton, huey p, and malcolm x',\n", - " 'zapatistas in the jungle holding tecs for respect',\n", - " 'apúrate, apúrate',\n", - " 'rush, rush',\n", - " \"i'm getting my guerrillas on\",\n", - " 'ready to die',\n", - " 'for all my people',\n", - " \"after we done, there's gon' be no sequel\",\n", - " 'bringing our lyrics of mass destruction',\n", - " 'fighting corruption',\n", - " 'this is my introduction',\n", - " \"i'm getting my guerrillas on\",\n", - " 'ready to die',\n", - " 'for all my people',\n", - " \"after we done, there's gon' be no sequel\",\n", - " 'free molly! (skii-skii-skii)',\n", - " 'prrra (molly gratis)',\n", - " 'jaja, cipollo',\n", - " 'mamá, dime kelowhat',\n", - " 'que sus fucken',\n", - " 'ba-ba-baby',\n", - " '¡dale seco!',\n", - " 'why you flex?',\n", - " 'why you flex?',\n", - " \"¿quiere' un tiro o keloke?\",\n", - " 'why you flex?',\n", - " 'why you flex?',\n", - " 'que ni tú mismo te lo crees (mátalo)',\n", - " 'why you flex?',\n", - " 'why you flex? (arrgh, arrgh; pussy)',\n", - " 'why you flexing?',\n", - " '¿eh? imbe-imbécil',\n", - " 'why you flex?',\n", - " 'why you flex?',\n", - " \"¿quiere' un tiro o keloke? (lileta)\",\n", - " 'why you flex?',\n", - " 'why you flex?',\n", - " 'ni tú mismo te lo crees (jaja)',\n", - " 'why you flexing?',\n", - " 'finesse shit, finesse shit, que lo qué',\n", - " 'why you flexing?',\n", - " 'imbécil (ah, ¡prra!)',\n", - " 'primo, kelowa (kelowa)',\n", - " 'esa chain no es de verdad, jaja (oh, wow)',\n", - " 'a ver, déjamela',\n", - " '(arrgh, arrgh, arrgh; prra-prra-prra-prra, los primos, baby)',\n", - " 'prr-rá',\n", - " 'pxxr gvng (pxxr gvng!)',\n", - " \"hemo' empeza'o a facturar (sí)\",\n", - " \"las putas vienen pa' los bolos y se van preñá' (¡prra!)\",\n", - " \"no es de extrañar es que con nosotros van tralla's\",\n", - " 'dile al palomo de tu gato que se calle ya (tato)',\n", - " \"que me conoce de cuando íbamo' a atracar\",\n", - " \"y es que han pasa'o 10 años y todavia me quie' trinca' (pam-pam)\",\n", - " \"me quie' coger perdi'o\",\n", - " 'puestos en un ancracká (mátalo)',\n", - " 'pero si me tira con odio se le va a atrancar',\n", - " \"es asi, to' de negro así\",\n", - " 'estamos en el traffic',\n", - " 'moviendo bricks fácil',\n", - " 'la cosa está así',\n", - " 'mi dinero euros',\n", - " 'mi puta brasil',\n", - " 'why you flex?',\n", - " 'why you flex?',\n", - " \"¿quiere' un tiro o keloke? (arrgh, arrgh)\",\n", - " 'why you flex?',\n", - " 'why you flex?',\n", - " 'ni tú mismo te lo crees',\n", - " 'why you flex?',\n", - " 'why you flex?',\n", - " 'why you flexing?',\n", - " \"¿eh? imbe-imbécil (sois to' unos imbécil)\",\n", - " 'why you flex?',\n", - " 'why you flex?',\n", - " \"¿quiere' un tiro o keloke?\",\n", - " 'why you flex?',\n", - " 'why you flex?',\n", - " 'ni tú mismo te lo crees',\n", - " 'why you flexing?',\n", - " 'finesse shit, que lo qué (jaja)',\n", - " 'why you flexing? imbécil',\n", - " 'qué lo que, what you flex? (arrgh, arrgh)',\n", - " 'khaled paga la cuenta con billetes de 100 (prra)',\n", - " 'yo no joseo (no) porque estoy a otro nivel (jaja)',\n", - " 'reparto el bacalao y me llaman cada mes (¡dale primo!)',\n", - " 'elegant, elegant como mercedes benz (arrgh)',\n", - " 'khaled ça va bien',\n", - " 'mi vida no se puede corregir (no, arrgh, arrgh)',\n", - " 'tengo escrito en mi cara agressif (arrgh, arrgh)',\n", - " 'why you flex',\n", - " 'why you flex?',\n", - " \"a vacila' y keloke\",\n", - " '(y keloke; arrgh, arrgh, arrgh)',\n", - " '(come on now, come on now, come on now)',\n", - " 'come on now, come on now, come on now',\n", - " 'hey, pero es evidente que toda la gente me sigue por el occidente',\n", - " '¿qué pasó? todo el carácter para que paralice la gente',\n", - " 'se mete en mi mente muy fuerte, se siente la gente',\n", - " 'pendiente al sonido, ¿qué es lo que tú esperas?, y yo sonando muy retundente',\n", - " 'muy acá, no pare en ningún momento',\n", - " 'por pensar en la perfección, mera, yo soy casi perfecto',\n", - " 'en el arte de cantarte para que suenen en todas las partes y lugares',\n", - " 'no existe prueba que no venza mi ritmo que sale',\n", - " 'de los niveles que le somete cada persona',\n", - " 'mi boca no tiene seguro y la misma casi ya explota',\n", - " 'te azota, pero no le temas,',\n", - " 'pues tiene su contenido, en la versión bien adquirido',\n", - " 'mi ritmo haze un enlace con la lírica que termine',\n", - " 'en el juego entre cada hombre',\n", - " 'seguro la misma viene de una alta calidad si es que conlleva al movimiento',\n", - " 'permite unos segundos para llevarte mi dialecto',\n", - " 'no quiero que me persiga la gente que no son amigos',\n", - " 'hablando a mis espaldas prefiero yo un enemigo',\n", - " 'contigo camino, pero si no andas pues yo te castigo (prr)',\n", - " \"sigo hot, y comienzo trayendo cada impulso pa' mayoría\",\n", - " 'porque hacer que brinque la gente seguro veo es mi teoria',\n", - " 'mira rima se ve severa cada cada vez que se improvise',\n", - " 'y destruye y destruye, y les hago mi resumen',\n", - " 'que mi música si es para la gente que se goza la pista bailando',\n", - " 'fuerte ruge este sonido',\n", - " 'a la vez te está tomando a un camino de fortaleza que comienza a surgir',\n", - " 'ragga moofin, aquí dentro usted me tiene que perseguir',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now-now',\n", - " 'como va la no mercy, pregunta la gente ahora \"can you kick it?\"',\n", - " 'seguro que puedo patearlo porque la versión es algo wicky',\n", - " 'acá yo soy full lyrics, tus trilly',\n", - " 'le digo que nunca lo intente, su intención será difí-difícil',\n", - " 'y para las chicas el movimiento sí es bien crazy',\n", - " 'you know i got the flow, you gotta take this',\n", - " 'for the , party',\n", - " ', hey!',\n", - " 'pasa la voz que yankee ya llegó',\n", - " 'espero que tengas la fecha para seguirme',\n", - " 'y es mejor que no se detenga (what?), y se lo presento',\n", - " 'los buenos records para que lo estudie',\n", - " 'el fucking beat que tengo yo, mi gente',\n", - " 'loco, tú menor (no)',\n", - " 'you know i got the and the',\n", - " \"i'm microphone, and on, and on\",\n", - " 'no me rivalise contender',\n", - " 'porque no da lo tallaré',\n", - " 'como lanza en el calibre tampoco yo fallaré (nah)',\n", - " 'el ritmo ragga moofin que pediste te dare',\n", - " \"con permiso un minuto (come on, y'all)\",\n", - " 'que no pueden emitir',\n", - " 'movida es la pista y te hace sacudir',\n", - " 'hacia arriba, donde el ritmo no lo puedes eludir',\n", - " 'ragga moofin, aquí dentro usted me tiene que perseguir',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now-now',\n", - " 'hey! y como lo quieras, de cualquier manera',\n", - " 'mi y a la ves que va subiendo pues la fuerza la constituye',\n", - " 'siente cerca, la lírica combinada con la mezcla',\n", - " 'mi caracter instiga, así que mi música es cara',\n", - " 'el impacto rotundo (wow), que te va azotando',\n", - " 'el daddy yankee es que tira, atacando',\n", - " \"a la kaboom! hey! watch out! ¡cuida'o!\",\n", - " 'daddy yankee sigue atacando con su underground, so, wow-pow',\n", - " 'voy recetando cada barrio hasta el fin',\n", - " 'ragga moofin, aquí dentro usted me tiene que perseguir',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now-now',\n", - " 'the yankee-man has come, get with the dancehall',\n", - " 'the yankee-man has come, get with the dancehall (come on!)',\n", - " 'the yankee-man has come, get with the dancehall',\n", - " 'the yankee-man has come, get with the dancehall, y dice',\n", - " 'yankee-man te viene a exponer-a',\n", - " 'una reggae, tienes tú que entenderla',\n", - " 'son como de la posición, yo primer-a',\n", - " 'todo el mundo baila el',\n", - " 'tú sabes que persevera',\n", - " 'tiene las habilidades, siempre prevalecera',\n", - " 'toda la furia lleva, no puede contenerla',\n", - " 'toda mi grandeza que se viene a imponer-a',\n", - " 'the yankee-man has come, get with the dancehall',\n", - " 'the yankee-man has come, get with the dancehall (come on!)',\n", - " 'the yankee-man has come, get with the dancehall',\n", - " 'the yankee-man has come, get with the dancehall, y dice',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " 'run, come, follow me now',\n", - " 'follow me now, come, follow me',\n", - " \"come on, y'all (come on now)\",\n", - " \"come on, y'all (come on now)\",\n", - " \"come on, y'all (come on now)\",\n", - " \"come on, y'all (come on now)\",\n", - " \"come on, y'all (come on now)\",\n", - " \"come on, y'all (come on now)\",\n", - " \"come on, y'all (come on now)\",\n", - " \"come on, y'all (come on now)\",\n", - " 'wow',\n", - " 'pido una botella de don periñón (oh-oh, oh-oh)',\n", - " 'un par de tragos de bacardi y limón (oh-oh, oh-oh)',\n", - " 'se enciende el party (ouh)',\n", - " 'nena, move your body (ouh)',\n", - " \"sigue y no pare' (ouh)\",\n", - " 'no, no, no, no, no',\n", - " \"i came the party, so let's get started (oh)\",\n", - " 'wanna dance? you just let me know (yeah)',\n", - " \"knock what you movin'\",\n", - " \"girl you're the ? (aha)\",\n", - " 'has kills, gotta let you know (come on)',\n", - " \"you make a pen ? (yo')\",\n", - " \"from the rain, are you shakin' at? (wisin and yandel)\",\n", - " 'get ?',\n", - " 'let me know you wanna it, aha',\n", - " 'hi everybody, people in america',\n", - " 'say \"?\", say \"?\"',\n", - " 'mami call me \"papi loco\"',\n", - " 'now in miami, baby like \"dale, gordo\"',\n", - " 'mama, yo no te conozco (eh-eh)',\n", - " 'se enciende el party (eh-eh)',\n", - " 'nena, move your body (eh-eh)',\n", - " \"sigue y no pare' (tra-tra-tra-tra-tra-tra)\",\n", - " 'no, no, no, no, no (eh-eh)',\n", - " 'se enciende el party (eh-eh)',\n", - " 'nena, move your body (eh-eh)',\n", - " \"sigue y no pare' (ouh)\",\n", - " 'no, no, no, no, no (tra-tra-tra-tra-tra-tra; eh-eh)',\n", - " \"i came the party, so let's get started (oh)\",\n", - " 'wanna dance? you just let me know (yeah)',\n", - " \"knock what you movin'\",\n", - " \"girl you're the ? (aha)\",\n", - " 'has kills, gotta let you know (come on)',\n", - " \"you make a pen ? (yo')\",\n", - " \"from the rain, are you shakin' at? (wisin and yandel)\",\n", - " 'get ?',\n", - " 'let me know you wanna it, aha (¡w; duro!)',\n", - " 'mami, no se case (hah)',\n", - " 'que llegó el que la complace (ajá)',\n", - " \"sin disfrace', que pase lo que pase (ajá)\",\n", - " 'a usted, mami chula, no va a haber quien la reemplace (¡w!)',\n", - " 'la base, y no me rechace (plah)',\n", - " 'y ataque como cuando ella come espinaca',\n", - " 'mi flaca, a toditas opaca (ajá)',\n", - " 'y si no quiero janguear, mami, yo soy, me sonsaca (plah)',\n", - " 'ella se destaca, nunca tiene resaca (plah)',\n", - " 'pido una botella de don periñón (oh-oh, oh-oh)',\n", - " 'un par de tragos de bacardi y limón (oh-oh, oh-oh)',\n", - " 'se enciende el party (ouh)',\n", - " 'nena, move your body (ouh)',\n", - " \"sigue y no pare' (ouh)\",\n", - " 'no, no, no, no, no',\n", - " \"i came the party, so let's get started (oh)\",\n", - " 'wanna dance? you just let me know (yeah)',\n", - " \"knock what you movin'\",\n", - " \"girl you're the ? (aha)\",\n", - " 'has kills, gotta let you know (come on)',\n", - " \"you make a pen ? (yo')\",\n", - " \"from the rain, are you shakin' at? (wisin and yandel)\",\n", - " 'get ?',\n", - " 'let me know you wanna it, aha (ouh)',\n", - " 'el junte de los guerreros',\n", - " 'track',\n", - " 'w',\n", - " 'yandel',\n", - " 'fat-fat joe',\n", - " 'wisin, yandel',\n", - " 'nosotros controlamos esto',\n", - " 'vaya, bori',\n", - " 'súbelo',\n", - " 'yeah, para no agobiarme y no caer en olvido',\n", - " 'para sentir que todavía estoy vivo, te escribo',\n", - " 'mi hombre quiroga al beat, yeah',\n", - " 'dueña de mi mente al despertar',\n", - " 'dueña de mi mente, mas todavía está presente',\n", - " 'este pequeño sueño adolescente',\n", - " 'dueña de mis fantasías de amar',\n", - " 'dueña de mis putas fantasías',\n", - " \"i'm taking my freedom, pulling it off the shelf\",\n", - " 'putting it on my chain, wearing it around my neck',\n", - " 'i’m taking my freedom, putting it in my car',\n", - " 'wherever i choose to go it will take me far',\n", - " \"i'm living my life like it's golden\",\n", - " \"livin’ my life like it's golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden, golden\",\n", - " 'livin’ my life like it’s golden',\n", - " \"livin' my life like it’s golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it’s golden, golden\",\n", - " 'hay nebulosa en mi cerebro, y el alma ya no me fía',\n", - " 'y el ebro sigue tan negro, y la nevera está vacía, mercancía',\n", - " 'mi corazón ya casi ni latía',\n", - " 'un millón de versos ya forman mi dinastía',\n", - " 'sigo en la inopia, en mi propia filosofía',\n", - " 'soy el quebradero certero de la utopía',\n", - " 'no, no seré al más fiero puto dueño de la esfera',\n", - " 'pero puedo ser \"te quiero\" en tus labios, vivo a la espera',\n", - " 'cuando es tan dura la vida, muero en tu seda',\n", - " 'cuando no esta el folio o el hombro de algún colega',\n", - " 'ya no sé llorar y escribo todo lo que llega',\n", - " 'a este pobre corazón maldito que navega',\n", - " 'entre sus mentes, urgentes sus gentes',\n", - " 'llevan la verdad del corazón entre los dientes',\n", - " 'benditos inocentes',\n", - " 'todavía me duele tanto el alma',\n", - " 'que ya no soy capaz de rehabilitar mi karma',\n", - " 'y cada vez que me acuesto',\n", - " 'me arrepiento de no acostarme contigo',\n", - " 'pero escribo el sentimiento',\n", - " 'y salgo del pozo del agua contaminada',\n", - " 'donde evaporan los sueños, los que no sueñan con nada',\n", - " 'así escapo del ruido de los coches, días sin tus noches',\n", - " 'todos tus reproches, así escapo',\n", - " 'de todos los problemas que me invaden, del fruto del amor',\n", - " 'el desamor que me ahoga, ya ustedes saben',\n", - " 'dueña de mi mente (dueña de mi mente al despertar)',\n", - " 'dueña de mis sueños (dueña de mis sueños, yeah yeah)',\n", - " 'dueña de mis fantasías de amar (fantasías de amar)',\n", - " 'perdida en el viento (perdida en el viento)',\n", - " \"i'm taking my freedom, pulling it off the shelf\",\n", - " 'putting it on my chain, wearing it around my neck',\n", - " \"i'm taking my freedom, putting it in my car\",\n", - " 'wherever i choose to go it will take me far',\n", - " \"i'm living my life like it's golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden, golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden, golden\",\n", - " \"i'm holdin on to my freedom, can't take it from me\",\n", - " 'i was born into it, it comes naturally',\n", - " \"i'm strumming my own freedom in the god in me\",\n", - " 'reverence in his glory, hope he proud of me',\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden, golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden\",\n", - " \"livin' my life like it's golden, golden\",\n", - " \"livin' my life like it's golden, golden\",\n", - " 'golden, golden, golden, golden',\n", - " \"livin' my life like it's golden, golden\",\n", - " 'golden, golden, golden, golden',\n", - " \"livin' my life like it's golden, golden\",\n", - " 'golden, golden, golden, golden',\n", - " \"living my life like it's golden, golden\",\n", - " 'living my life, living my life',\n", - " \"living my life like it's golden, it really matters to me oh!\",\n", - " \"livin' my life like it's golden, golden\",\n", - " 'golden, golden, golden, golden',\n", - " \"livin' my life like it's golden, golden\",\n", - " 'golden, golden, golden, golden',\n", - " 'gang',\n", - " \"esto es para to' el que habla de lo que habla\",\n", - " \"pero no sabe de que habla, pa' que sepáis de qué hablo\",\n", - " 'money, troubles, commas, hoes',\n", - " \"killers, hustlers, dope shit, i'm load\",\n", - " 'puta, droga, fama, shows',\n", - " 'coca, haters, la vida de un boss, you',\n", - " 'damn my trap life, damn my trap life, damn my trap life',\n", - " 'fuck your whole life, ooh',\n", - " 'damn my trap life, damn my trap life, damn my trap life',\n", - " 'i said fuck your whole life',\n", - " \"cada vez más convencio' que yo vivo para esto\",\n", - " 'estáis todos escocios porque tengo el primer puesto',\n", - " \"he mandao' mi vida de antes a tomar por culo\",\n", - " 'el keo es diferente, nunca va sobre seguro',\n", - " 'ahora hay putas, droga, nalgas en pompa',\n", - " 'flashes, dinero, ferrari testarossa',\n", - " 'feka, shotta, sliding como cobra (snakes)',\n", - " \"poli por la zona, trappin' mercadona (trap)\",\n", - " \"esto es para tol' que dice que yo soy un feka (¿qué?)\",\n", - " 'primo a estas alturas recogimos la cosecha',\n", - " 'esta vida no es penalti, esta vida es cosa hecha (posser)',\n", - " \"yo elegí to' esto, me gusta meter cabeza\",\n", - " 'quiero rolls-royce, phantom, all black like venom',\n", - " \"ballin', speedy! puta, soy veneno (yeah!)\",\n", - " 'benjis (money), cuero, pollo calimero',\n", - " 'hundred en el suelo, trending por el ghetto (gang)',\n", - " 'yo no soy un gangster, yo no soy un guerrillero',\n", - " \"a mí me gusta vacila' con mi cara 'e niño bueno\",\n", - " \"controversia, controversio, el keo siempre está a fuego (ten cuidao')\",\n", - " 'sed inteligentes, no caigáis en mi juego',\n", - " 'esto es money, troubles, commas, hoes',\n", - " \"killers, hustlers, dope shit, i'm load\",\n", - " 'esto es putas, droga, fama, shows',\n", - " 'coca, haters, la vida de un boss',\n", - " 'damn my trap life, damn my trap life, damn my trap life',\n", - " 'fuck your whole life',\n", - " 'esta es my trap life, damn my trap life, damn my trap life',\n", - " 'fuck your whole life',\n", - " 'me lo tienen dicho que la cabra tira al monte',\n", - " \"drogao' como profesión, sanao' como deporte (flex)\",\n", - " \"sé que estoy jodio', que hay un precio por mi nombre\",\n", - " \"tol' mundo quiere pisar dentro de la casa 'el conde (keo)\",\n", - " \"yo soy real shit, don't fuck with my clique (no)\",\n", - " 'demasiado puro, honey, better take a pic',\n", - " 'i got a bad bitch waiting on my whip (skrrt)',\n", - " 'voy medio dormido, baby conduce por mí',\n", - " 'tengo peso en la cartera, beso en todo el cuello',\n", - " \"mírame mi vida por lo que he mojao' en tus sueños\",\n", - " \"trappin' for the pesos, make me feel un bandolero\",\n", - " 'soy la voz como héctor y de abajo como tego (bandolero)',\n", - " 'mírame bien mami, estoy flexeando como nunca (never)',\n", - " \"'tábamo' en la mierda, ahora soy la mierda pura (shit!)\",\n", - " 'tengo una morena que me baila como rumba (tango)',\n", - " \"la traigo loca enamora' de como el blanco zumba (a cuatro)\",\n", - " \"you ain't even know it what the hell bitch i've been through\",\n", - " \"baby you still love me 'cause you're turning to addict for\",\n", - " \"keo never doubt, all this shit ain't go stop me\",\n", - " \"but no pasa na', el keo se adapta fácil\",\n", - " 'esto es money, troubles, commas, hoes',\n", - " \"killers, hustlers, dope shit, i'm load\",\n", - " 'esto es puta, droga, fama, shows',\n", - " 'coca, haters, la vida de un boss, yo',\n", - " 'damn my trap life, damn my trap life, damn my trap mmm...',\n", - " 'mmm...',\n", - " 'i said damn my trap life, damn my trap life, damn my trap life',\n", - " '(fuck you) fuck your whole life, ohh (boss)',\n", - " 'letra de \"666\" ft. blade',\n", - " 'blade, zenit, 2006',\n", - " '6.6.6',\n", - " 'guerrilla tactics, babel tower',\n", - " 'el día que plasmé esto un papel viajaba en tren',\n", - " 'era el tercer aniversario de una guerra en oriente próximo',\n", - " 'que puso un ambiente tóxico en mi sien',\n", - " 'para siempre desde mi punto óptico ya ven',\n", - " 'vengo y lo suelto en esta pista',\n", - " 'si oscuro es el futuro que el auguro',\n", - " 'no es porque sea pesimista',\n", - " 'es que ya es oscuro el cristal a través del que se tiene que mirar',\n", - " 'lanzo dardos que se claven en tu mente al rapear es de cronista',\n", - " 'tengo una espinita clavada en el corazón y se me enquista',\n", - " 'pues sueños se pueden hacer realidad',\n", - " 'y si soñé ser terrorista y acabar',\n", - " 'con el culpable de la invasión de irak es culpa mía que aun exista',\n", - " 'se me escapó la ira, me atrapó y nubló mi vista',\n", - " 'cagada tras cagada de un gobernante aumenta la lista',\n", - " 'el daño irreparable aun perdura y aun así tienen la cara dura',\n", - " 'de exigir soluciones después de permitir las acciones',\n", - " 'más irresponsables de la historia',\n", - " \"si no falla mi memoria usted tiene una trayectoria pa' olvidar\",\n", - " 'señor aznar usted de franco poco dista',\n", - " 'usted y blair son ratas, busco en hamelín el flautista',\n", - " 'diabólico con el rap de antagonista',\n", - " 'lideres de el gobierno de un infierno eterno',\n", - " 'solo en mi cuaderno continua siendo invierno',\n", - " 'soy realista, ese trío de demonios es fascista',\n", - " 'yo solo un artista, no hay mas que decir',\n", - " 'esto no es una entrevista de revista',\n", - " 'en la que insista un periodista',\n", - " 'no voy a mentir, el rap es mi exorcista',\n", - " 'instead of starting a war, come on, feat the people',\n", - " 'get your head up your ass and listen to the people',\n", - " 'gobernantes solo piensan en petróleo, no en el pueblo',\n", - " 'yo plasmo en este folio lo que pienso lo que piensa el pueblo',\n", - " 'you supose to gobern a war where everybody is equal',\n", - " 'but you think the states is king and nobody is equal',\n", - " 'nada es igual si gobernantes todo de mierda cubren',\n", - " 'debería ser igual, aprendan del hip-hop movement',\n", - " 'let me explain what the triple 6 means',\n", - " 'is the time of the devil, the goberment that can close it',\n", - " 'dreams, they dry out into enemies',\n", - " 'floud the earth without nomanaties',\n", - " 'drain your energies, separate flamilies',\n", - " 'segregate the universe',\n", - " 'so for the rice or oil, material game',\n", - " 'the world is now destroyed, everybody is in creen',\n", - " 'the eagle and the triangles',\n", - " 'simbol of the power that control the earth',\n", - " 'watching every move you make on canorous',\n", - " \"rain, carry on, in isn't gorgeaus\",\n", - " \"the simbol shouldn't be an eagle\",\n", - " \"it should be a vulture cause they're poltorous\",\n", - " 'who will they culture next, what nation would they invade',\n", - " 'who the fuck game in the power to treat people to slaves',\n", - " 'god help us, so to step in to war again',\n", - " 'biernabil, revisited like a tournament',\n", - " 'invasion for the cost and threath',\n", - " 'drains flow into buildings, in the hope of decanate',\n", - " 'and in a split second of world changes, nothing is the same',\n", - " \"puss the warm manga, the goberment's the blame\",\n", - " 'he might us wall high up fleed the fly',\n", - " 'those planition to the twin towers',\n", - " 'they abused their powers',\n", - " 'the last day of closening and how the hell',\n", - " 'are were suppose to win',\n", - " \"when their isn't no wing, situation is the sin\",\n", - " 'the dark angels is on this throne, laughing is the world',\n", - " \"conversiting, garden, threaten to control the earth, he's winning\",\n", - " 'yo, bush, blair, leaders of the world',\n", - " \"you ain't here for the people\",\n", - " 'nobody wants a war, stop that now',\n", - " 'everybody wants peace',\n", - " 'talk to the people and you find out',\n", - " \"that's what they want\",\n", - " 'peace, no more war',\n", - " 'instead of starting a war, come on, feat the people',\n", - " 'get your head up your ass and listen to the people',\n", - " 'gobernantes solo piensan en petróleo, no en el pueblo',\n", - " 'yo plasmo en este folio lo que pienso lo que piensa el pueblo',\n", - " 'you supose to gobern a war where everybody is equal',\n", - " 'but you think the states is king and nobody is equal',\n", - " 'nada es igual si gobernantes todo de mierda cubren',\n", - " 'debería ser igual, aprendan del hip hop movement',\n", - " 'fuck the goberment, fuck the goberment',\n", - " 'fuck the goberment, fuck the goberment',\n", - " 'fuck the goberment, fuck the goberment',\n", - " 'fuck the goberment, fuck the goberment',\n", - " 'fuck the goberment, fuck the goberment',\n", - " 'fuck the goberment, fuck the goberment',\n", - " 'ah.. no more war!',\n", - " \"mmm... i don't know, no se na', que ha pasa'o\",\n", - " 'el dinero solo cero es transacción',\n", - " \"esos g's tan violentos, thanks my bro\",\n", - " 'in my grillz, in my grillz brilla el gold',\n", - " \"i don't know, no se na', que ha pasa'o\",\n", - " \"i don't know, no se ná, de verdad\",\n", - " 'lo mataron, yo lo vi, pero ná',\n", - " \"i don't know, i don't know, no se ná brow\",\n", - " \"i don't know, no se ná, que ha pasao brow\",\n", - " 'y esa bitchi te ha dejao en calentón, wo',\n", - " 'microondas, microondas en acción, wo',\n", - " 'no se nada, no se nada, de verdad brow',\n", - " \"i don't know, no se ná, que ha pasao brow\",\n", - " 'tamos locos y dispuestos pa la acción brow',\n", - " \"ya mis labios 'tan cerraos yo no ha-bló\",\n", - " 'mueven kilos, mueven gramos se creen pa-blo',\n", - " \"i don't know, no se na', de verdad brow\",\n", - " 'yo soy serio nunca juego ni habló mal, wo',\n", - " \"soy el hijo del segura' del sicario\",\n", - " 'entra muerto, pero así es el barrio',\n", - " 'tu eres puta y chupas a diario',\n", - " 'no tengo armas tengo diccionario',\n", - " \"mmm... i don't know, no se ná, que ha pasao brow\",\n", - " \"i don't know, no se ná, que ha pasao brow\",\n", - " \"i don't know, no se ná, que ha pasao brow\",\n", - " \"i don't know, no se ná, que ha pasao brow\",\n", - " 'tynastii on it so you know it’s lit',\n", - " 'slow down for me i’m about to go all in',\n", - " '3 hoes on me everyday of the week',\n", - " \"tu sabe' que si, no se lo que pasa\",\n", - " 'no entiendo una shit, no speak español',\n", - " 'what do you mean, explain to me',\n", - " 'colabore please',\n", - " \"somos gente sería pa' q voy a mentir\",\n", - " 'meme dan la street ca parle ap',\n", - " 'je traine avec le vrai tú me voit pas',\n", - " 'keep it a hunned on ce connais pas',\n", - " 'estaba contigo la chupo igual',\n", - " \"la cosa está seria don't panic man\",\n", - " 'si no quiere colaborar que se vaya ya',\n", - " 'toujours dan la street gotta get this cash',\n", - " 'thé popos on me they don’t know where to find',\n", - " 'if they ask me some i don’t know man',\n", - " 'yo estaba en la granja con my yegua',\n", - " 'colaboraciones por el barrio all day bro',\n", - " 'what going on que ha pasado oh my lord',\n", - " \"nose na', nose na', nose na' no\",\n", - " 'je sais rien je sais rien bro',\n", - " 'je sais rien je sais rien bro',\n", - " 'no lo sé no lo sé no lo sé no',\n", - " \"i dont know, i don't know, i don't know na'\",\n", - " \"no se na', no se na', no se na', no\",\n", - " \"i don't know si es mi flow\",\n", - " \"'tamos skuad con mis boys\",\n", - " 'give a fuck tengo bloc',\n", - " 'dile a esa rawchet que coja mi cock',\n", - " \"i don't know pierdo el control\",\n", - " 'tú tienes uno yo tengo a monton',\n", - " \"i don't know no fui yo\",\n", - " 'estaba en el parque y sacaron la glock',\n", - " \"yo soy mejor que to's estos raperos\",\n", - " 'negro arrogante les follo a pelo',\n", - " 'fume la mula con papel de celo',\n", - " 'si juegas conmigo te quemas con hielo',\n", - " 'dije a la jueza que esto es un señuelo',\n", - " 'te rompo los dientes y te doy un pañuelo',\n", - " 'señor agente yo estaba en un vuelo',\n", - " 'destino el infierno hago escala en el cielo',\n", - " 'yo nunca pido ayuda',\n", - " 'estoy esquizo,veo al mundo comiendo basura',\n", - " 'esto es epidemia, señor yo no tengo cura',\n", - " 'los menores poseídos, quieren hacer locuras',\n", - " \"mmm... i don't know, no se na', que ha pasa'o bro\",\n", - " \"i don't know, no se na', de verdad bro\",\n", - " \"i don't know, no se na',que ha pasa'o\",\n", - " \"i don't know, (no sé na')\",\n", - " \"mmm, i don't know, no se na', que ha pasa'o bro\",\n", - " \"i don't know, no se na', de verdad bro\",\n", - " \"let's do it let's do it let's do it let's do it\",\n", - " 'come on now',\n", - " 'ah ah ah ah ah ah',\n", - " 'come on now',\n", - " 'ah ah ah ah ah ah',\n", - " 'come on come on',\n", - " 'yeah yeah',\n", - " 'vuelve el invierno',\n", - " 'nesesito tocarte',\n", - " 'para calentarme',\n", - " 'tu no sabes toas las ganaz que yo tengo de tocarte!',\n", - " 'tu no sabes toas las ganaz que yo tengo de tocarte!',\n", - " 'nesesito amarte',\n", - " 'para yo calentarme',\n", - " 'asi asi...',\n", - " 'uuh uuh uuh uuuuuuuuhhhh',\n", - " 'heeeeeeeeyy calorrrr',\n", - " 'nesesita mi cuerpo para enceder esta lava de amor',\n", - " 'nesesita mi cuerpo para entender que dice el corazon!',\n", - " \"let's do it let's do it let's do it let's do it\",\n", - " 'come on now',\n", - " 'ah ah ah ah ah ah',\n", - " 'come on now',\n", - " 'ah ah ah ah ah ah',\n", - " 'come on come on',\n", - " 'yeah yeah',\n", - " \"let's do it let's do it let's do it let's do it\",\n", - " 'come on now',\n", - " 'ah ah ah ah ah ah',\n", - " 'come on now come on come on',\n", - " 'yeah yeah',\n", - " 'come on now come on come on',\n", - " 'yeah yeah',\n", - " 'salgo yo en un flow moderno',\n", - " 'en pleno invierno',\n", - " 'la temperatura baja y piel pierdo',\n", - " 'me pongo bien tierno',\n", - " 'quiero que me hagaz sentir como en el infierno!',\n", - " 'calor calor sudadera!',\n", - " 'ya que el frio me desespera',\n", - " 'hasme sentir',\n", - " 'sofocao sofocao de calor por ti',\n", - " 'vamoz hacerlo',\n", - " 'dale vamoz hacerlo ya',\n", - " \"let's do it ma'\",\n", - " 'vamoz hacerlo ya',\n", - " '(vamoz hacerlo ya)',\n", - " '(vamoz hacerlo ya)',\n", - " \"let's do it ma'\",\n", - " 'vamoz hacerlo ya',\n", - " 'nesesito que tu me calientes',\n", - " \"maaaa'... con ese cuerpo ardiente!\",\n", - " 'en o en candela!',\n", - " 'en este frio quien me conjela!',\n", - " 'calorrrr',\n", - " 'nesesita mi cuerpo para enceder esta lava de amor',\n", - " 'nesesita mi cuerpo para entender que dice el corazon!',\n", - " 'do it... ven do it... do it... ven do it... do it... ven do it',\n", - " '(demoz nuestras partes y hagamoslo ya)',\n", - " 'do it... ven do it... do it... ven do it... do it... ven do it',\n", - " '(demoz nuestras partes y hagamoslo ya)',\n", - " 'do it... ven do it... do it... ven do it... do it... ven do it',\n", - " '(demoz nuestras partes y hagamoslo ya)',\n", - " \"let's do it baby let's do it baby\",\n", - " \"let's do it baby let's do it baby\",\n", - " 'calorrrr',\n", - " 'nesesita mi cuerpo para enceder esta lava de amor',\n", - " 'nesesita mi cuerpo para entender que dice el corazon!',\n", - " \"let's do it baby let's do it baby\",\n", - " \"let's do it baby let's do it baby\",\n", - " \"let's do it let's do it let's do it let's do it\",\n", - " 'come on now',\n", - " 'ah ah ah ah ah ah',\n", - " 'come on now',\n", - " 'ah ah ah ah ah ah',\n", - " 'come on come on',\n", - " 'yeah yeah',\n", - " \"let's do it let's do it let's do it let's do it\",\n", - " 'come on now',\n", - " 'ah ah ah ah ah ah',\n", - " 'come on now come on come on',\n", - " 'yeah yeah',\n", - " 'come on now come on come on',\n", - " 'yeah yeah',\n", - " 'sinceramente no estan listos para este nuevo nivel... aaaiiight!',\n", - " '(jowel y randy)',\n", - " 'evolucion diario!',\n", - " 'dj blazz',\n", - " 'dj jam',\n", - " 'dexter',\n", - " 'dejala caer!',\n", - " \"(...) they're not on my level. you gotta have to have size, reach, length, you gotta have some attributes, if you come to me in any way equal to me i'm gonna rip your whole head off, and that's it, it happens every time (...) i've ridiculed everyone on the roster (...) this is what i dreamed into reality! oooooh, that looks good! ooooh!\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " \"it's no love, pa' mama estamos en la droga\",\n", - " 'si quieres joder, tranqui, que habrá joda',\n", - " 'si quieres jugar, hay que entender la rola',\n", - " 'si quieres tragar, hay que tragarla toda',\n", - " \"nueva supa', supernova\",\n", - " '¿qué hablas puta? ¿quién te ha dado coba?',\n", - " \"estamos en la droga, to'l día veneno\",\n", - " 'el combo del momento con el toterreno',\n", - " 'yo vivo ya en un cuento',\n", - " 'me despierto y follo, me levanto y prendo',\n", - " 'de lo demás no entiendo',\n", - " 'ni quién se está tirando, ni quién se está vendiendo',\n", - " '¿quién se lo rockea así, loco?',\n", - " 'tirando barras como yo, no hay otro',\n", - " 'agüita con el flaco que le mete al coco',\n", - " 'tragando birra, quemando choco',\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'los ciegos ven esto, los sordos lo oyen',\n", - " 'los mudos lo dicen: ceerre y lone',\n", - " 'clientes vienen, no buscan bromas',\n", - " 'vuelan como el diente de isaiah thomas',\n", - " 'soy mi mejor versión tras la actualización',\n", - " '¿clavos en tus manos de tu creador no responden?',\n", - " \"vente pa' mi la'o entonces\",\n", - " 'traigo leña a la ciudad como green a golden',\n", - " 'lo que tú esnifas lo saco con receta',\n", - " \"mato el game como el sida en los '80\",\n", - " 'mi cara es una mierda, pero escucha ¡cojones!',\n", - " 'subo tanto las líneas que son el surco de aviones',\n", - " 'vivo al raso a lo vasco hernández',\n", - " 'no te creen como al batman de affleck',\n", - " 'tiro 3 como un yugoslavo',\n", - " 'y sólo hago colabos con quien comparto tragos',\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " \"you can't catch me, cabrón, crossover\",\n", - " 'a esos rappers los pongo a ver wizadora',\n", - " 'microphone, original controler',\n", - " 'una mano en los huevos y otra en el mando y game over',\n", - " 'esos chiquitines, el recreo es un concierto',\n", - " 'yo no oigo esa mierda ni con las orejas de un muerto',\n", - " 'en la luz el bufón, en la sombra el arquitecto',\n", - " 'mi curro, mi kely, mi chica; chico, estoy perfecto',\n", - " 'oye agente, si no hay cuerpo, no hay delito',\n", - " 'barras en tu puta cara, manny a margarito',\n", - " 'odio el juico moral, no soy perito',\n", - " 'tu piba dice que soy un cabrón, mi madre un bendito',\n", - " 'si entran por la puerta you better run',\n", - " \"con más estilo que tú hasta pa' comprar el pan\",\n", - " 'fuera del patrón, fuera del qué dirán',\n", - " 't-o-t-e, ready for the payback',\n", - " \"marcus is hurt! (...) lookin' to finish it here\",\n", - " 'this is why everyone has been talking about conor mcgregor!',\n", - " \"it's all over! another first round win! wow!\",\n", - " \"that is exactly why he's so dangerous, mike, and he took some big shots, but guess what? he's got a huge chin as well\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " 'back por aquí, mira el game is over',\n", - " \"it's no love, mira el game is over\",\n", - " '¡daddy!',\n", - " \"el fuego del caribe, ma'\",\n", - " 'daddy yankee',\n", - " 'nicole',\n", - " 'yeah',\n", - " 'you are the king of my heart',\n", - " 'and i was yours from the start',\n", - " \"so don't you ever go far\",\n", - " 'papi lover!',\n", - " \"there ain't no other like you\",\n", - " 'no other lover than you',\n", - " 'so does not mean what you do',\n", - " 'papi lover!',\n", - " 'soy rey de los corazones, en todas las relaciones',\n", - " 'despierto mil emociones y no tengo comparaciones',\n", - " 'sé cómo tú te pones, tú no tienes limitaciones',\n", - " 'viajando en las dimensiones de sensación y pasiones (oh)',\n", - " 'llamame rápido, le llego tranquilo',\n", - " \"mami, sólo tu y yo, formamo' el vacilón\",\n", - " '¿qué tú quieres?, ¿whu-whu-what?',\n", - " 'yo lo tengo, ¿whu-whu-what?',\n", - " \"mucho cariñito ma'\",\n", - " 'el papi lover te lo da',\n", - " \"i'll be there as soon as you call me\",\n", - " 'te estoy esperando',\n", - " \"baby i won't leave you lonely\",\n", - " \"you know i got you, ma'\",\n", - " 'you are the king of my heart',\n", - " 'and i was yours from the start',\n", - " \"so don't you ever go far\",\n", - " 'papi lover!',\n", - " \"there ain't no other like you\",\n", - " 'no other lover than you',\n", - " 'so does not mean what you do',\n", - " 'papi lover!',\n", - " 'when i look in your eyes',\n", - " 'i see a heat in your fire',\n", - " 'i know your every desire',\n", - " 'papi lover!',\n", - " 'el jefe de mi amor',\n", - " 'you are the one i adore',\n", - " 'like no one ever before',\n", - " 'papi lover!',\n", - " \"responde, vamo' a determinar quién en tu vida te corresponde\",\n", - " 'esa felina quién la domina y la pone en orden',\n", - " 'ponte fresca y te tumbo el fronte',\n", - " 'así es mi corte, you know, girl',\n", - " 'todas esas cositas quien te las enseñó',\n", - " 'quien es tu amigo y tu amor incógnito',\n", - " 'el que convierte tu inocencia en la pasión',\n", - " 'tu perdición, tú sabes',\n", - " \"i'll be there as soon as you call me\",\n", - " 'te estoy esperando',\n", - " \"baby i won't leave you lonely\",\n", - " \"yo no te suelto, ma'\",\n", - " 'you are the king of my heart',\n", - " 'and i was yours from the start',\n", - " \"so don't you ever go far\",\n", - " 'papi lover!',\n", - " \"there ain't no other like you\",\n", - " 'no other lover than you',\n", - " 'so does not mean what you do',\n", - " 'papi lover!',\n", - " 'when i look in your eyes',\n", - " 'i see a heat in your fire',\n", - " 'i know your every desire',\n", - " 'papi lover!',\n", - " 'el jefe de mi amor',\n", - " 'you are the one i adore',\n", - " 'like no one ever before',\n", - " 'papi lover!',\n", - " \"i don't care whatever people say\",\n", - " \"'cause you've always been there for me\",\n", - " \"i don't care 'cause they don't know your way\",\n", - " \"'cause you've been treatin me like a queen\",\n", - " 'and no mather what i can depend on you (i can depend on you)',\n", - " 'to be giving me what i want (top of the world, baby!)',\n", - " \"to be giving me what i need (daddy! let's go get 'em, ma'!)\",\n", - " 'what i need',\n", - " 'you are the king of my heart',\n", - " 'and i was yours from the start',\n", - " \"so don't you ever go far\",\n", - " 'papi lover!',\n", - " \"there ain't no other like you\",\n", - " 'no other lover than you',\n", - " 'so does not mean what you do',\n", - " 'papi lover!',\n", - " 'when i look in your eyes',\n", - " 'i see a heat in your fire',\n", - " 'i know your every desire',\n", - " 'papi lover!',\n", - " 'el jefe de mi amor',\n", - " 'you are the one i adore',\n", - " 'like no one ever before',\n", - " 'papi lover!',\n", - " '¿qué tú quieres mamá? ven a donde papá',\n", - " 'tú sabes que el papi lover soy yo',\n", - " '¿qué tú quieres mamá? ven a donde papá',\n", - " 'tú sabes que el papi lover soy yo',\n", - " 'you are, you are, you are, you are',\n", - " 'you are, you are, you are, you are my papi lover',\n", - " 'you are, you are, you are, you are',\n", - " 'you are, you are, you are, you are my papi lover',\n", - " 'you are, you are, you are, you are',\n", - " 'you are, you are, you are, you are my papi lover',\n", - " 'you are, you are, you are, you are',\n", - " 'you are, you are, you are, you are my papi lover',\n", - " 'oh!',\n", - " 'yeah',\n", - " '¡da-ddy-yan-kee!',\n", - " ...]},\n", - " 'data': ['attention all the ladies',\n", - " 'get on the dance floor',\n", - " \"cause it's going down, it's a party tonight, baby\",\n", - " 'voltio (residente calle 13)',\n", - " 'featuring',\n", - " 'three 6 mafia',\n", - " 'hook: three 6 mafia',\n", - " 'shake',\n", - " 'shake it like a rattlesnake (move)',\n", - " 'move it like a rattlesnake (shake)',\n", - " 'shake it like a rattlesnake (move)',\n", - " 'move it like a rattlesnake (shake)',\n", - " 'shake it like a rattlesnake (move)',\n", - " 'move it like a rattlesnake (shake)',\n", - " 'shake it like a rattlesnake (move)',\n", - " 'move it like a rattlesnake (shake)',\n", - " 'chorus:',\n", - " 'con tu chulin culin cunflai',\n", - " 'abro la boca y mi lengua se cae',\n", - " 'ojalai',\n", - " 'ojalai',\n", - " 'ojalai',\n", - " 'ojalai',\n", - " 'ojalai',\n", - " 'ojalai que tu seas mi mai!',\n", - " '(verse 1)',\n", - " 'cuando te huelo, caigo en el anzuelo',\n", - " 'con tu perfume',\n", - " 'con tu colonia',\n", - " 'tu eres una diabla',\n", - " 'una demonia',\n", - " 'vamos a casarnos, pero sin ceremonia',\n", - " 'vamos a casarnos a la mala',\n", - " 'en la cocina, y el bano, y la sala',\n", - " 'conmigo no seas chic',\n", - " 'come mierdera',\n", - " 'conmigo, te casas a lo parcelera',\n", - " 'llego la jinetera',\n", - " 'la que te roba la cartera',\n", - " 'con sus nalgas de brasilera',\n", - " 'con mucha salsa, salsa salsera',\n", - " 'a tomates no huele',\n", - " 'huele a bellaquera',\n", - " \"como palma de coco pega'o a la penca\",\n", - " 'gato silvestre detras de la renca',\n", - " 'afueguillo, el rastrillo de todas las realengas',\n", - " \"les tengo algo aqui pa' que se entretengan\",\n", - " \"pon las manos en el piso y las nalgas pa' arriba\",\n", - " 'vamonos underground, no se cohiba',\n", - " 'te gusta el bandidaje, si tu eres una diva',\n", - " '{*sheep*}',\n", - " 'no te hagas la chiva',\n", - " 'vaya',\n", - " 'repeat hook & chorus',\n", - " '(three 6 mafia in background)',\n", - " 'que paso, shorty, what you gonna do',\n", - " 'deja mojar el palitroque en salsa ragu',\n", - " \"pa' mojarte los deditos en baby food (what, what, what, what)\",\n", - " 'hey, no me patees que esto no es kung-fu (what, what, what, what)',\n", - " \"it's the mafia\",\n", - " 'and voltio',\n", - " 'in the club, full of roll, with some bad ass hoes',\n", - " \"it's a polaroid moment cause we flashy in here\",\n", - " \"with so many diamonds, it don't even look real (yeah)\",\n", - " 'break: juicy j',\n", - " \"we three 6 mafia stayin' fly, ah-ah-ah\",\n", - " \"chasin' latina girls til we die, ah-ah-ah\",\n", - " 'and we love the way they shake it, oh, my, ah-ah-ah',\n", - " 'please let me get get a piece of that pie, ah-ah-ah',\n", - " '(verse 4)',\n", - " 'se te ve la raya, la partidura',\n", - " 'la que divide la blancura de tu nalgura, dura',\n", - " 'tu eres pura sangre, sangre pura',\n", - " 'por ti dejo el celibato y me quito de cura',\n", - " 'me lo juras?',\n", - " \"nah, ni pa' tanto\",\n", - " 'bueno, después de que me des el canto',\n", - " 'yo voy a todas contra cualquier santo',\n", - " 'asalto cuatro bancos y me tiro de un barranco',\n", - " 'yo a veces me tranco',\n", - " 'pero aunque me quede manco',\n", - " 'le guayo el calanco en su pantaloncito blanco',\n", - " 'en el cual',\n", - " 'se le brota la pandorca',\n", - " 'abusadora',\n", - " 'después que la cría la ahorca',\n", - " \"la tiene a dieta, pero como quiera 'ta gorda\",\n", - " 'no come maíz, pero le encanta la mazorca',\n", - " 'si se prende en fuego, hay que pegarle la manguera',\n", - " 'seguimos la pichaera',\n", - " 'repeat hook & chorus',\n", - " '(dj paul in background) {three 6 mafia in background}',\n", - " 'con tu',\n", - " 'chulin culin cunflai, ah-ah-ah (wave your hands up)',\n", - " 'ah-ah, ah-ah (wave your hands up)',\n", - " 'con tu',\n", - " 'chulin culin cunflai, ah-ah-ah (wave your hands up)',\n", - " \"ah-ah, ah-ah (it's goin' down)\",\n", - " \"it's goin' down\",\n", - " \"it's goin' down {what, what}\",\n", - " \"it's goin' down {what, what}\",\n", - " \"it's goin' down {what, what}\",\n", - " \"it's goin' down {what, what}\",\n", - " 'residente calle 13 y julio voltio {what, what}',\n", - " 'con el three 6 mafia {what, what}',\n", - " \"it's goin' down {what, what}\",\n", - " \"it's goin' down {what, what}\",\n", - " 'i wonder how you could tell her',\n", - " 'that you would give her everything and more',\n", - " \"'cause i'm just thinking how it seems a bit crazy\",\n", - " \"that you got your act together but i know it's for the better\",\n", - " 'why life you are a beautiful thing?',\n", - " \"nine times out of ten you're unbelievable\",\n", - " \"write in all these things you haven't seen\",\n", - " 'find everything you want and more',\n", - " \"pieces, i'm making peace with\",\n", - " 'with you, with you',\n", - " 'pieces, i am making my peace with',\n", - " 'with you, with you',\n", - " 'me despierto con cara de otro',\n", - " \"avanzo pixela'o, perdiendo trozos\",\n", - " 'hace un sol de puta madre',\n", - " 'y ni benicio me saca del pozo',\n", - " 'no levanto el culo si tocan el timbre',\n", - " \"solo pa' poner la cara b\",\n", - " 'le hecho unas hojillas al grinder, grindo con el finger',\n", - " 'una nube de humo de cabeza a pies (wow)',\n", - " 'lo que hay en mi pecho no es decoración (¡qué va!)',\n", - " 'sobre tu tejado, lloviendo a pulmón',\n", - " \"estoy cala'o hasta sus huesos, wet bones\",\n", - " 'el pasillo no es estrecho si pasamos los dos',\n", - " 'antes de hablar asómate al retrovisor',\n", - " 'y pregúntate si lo harías mejor',\n", - " 'tiro lo que sobra y pillo combustible',\n", - " \"pa' cruzar este universo de papel y cartón\",\n", - " \"pieces, i'm making piece with (na, na)\",\n", - " 'with you (yeah), with you (¡oh!)',\n", - " 'pieces, i am making my piece with',\n", - " 'with you, with you',\n", - " 'pelusa flama, ¡ajá!',\n", - " '(oddliquor, you know)',\n", - " 'everything you need i got, papi! ¡ajá!',\n", - " 'kung fu, tarantino en las sábanas',\n", - " 'lenguaje mixto, descifrables secuencias',\n", - " 'sexual, rítmico, relativo, aceptable',\n", - " \"ahora te vas, veo lejos, 'niquilable\",\n", - " \"la fonética 'e tu lengua, imprevisible\",\n", - " \"suenan dentro 'e los boricuas\",\n", - " \"inestable, capicúa, it's a over\",\n", - " 'hazme en el cuerpo espuma for discover',\n", - " 'circunferencias en tu centro',\n", - " 'minimalismo, espaguetis',\n", - " \"clásico, olímpico, así metía'\",\n", - " 'nos mezclamos, escapamos',\n", - " 'de lo básico, histórico',\n", - " 'cinco dimensiones',\n", - " 'matices y superhéroes',\n", - " 'pero sí el síndrome, atmósfera',\n", - " \"it's slay\",\n", - " \"when you want i'm ready for slay, babe\",\n", - " \"when you want i'm ready for slay, babe\",\n", - " \"when you want i'm ready for slay, babe\",\n", - " \"when you want i'm ready for slay, babe\",\n", - " 'ey yo, ajá',\n", - " 'you are my fresh light',\n", - " 'i need a hurt time',\n", - " 'i get the pleasure',\n", - " 'how i get now?',\n", - " 'you are my fresh light',\n", - " 'i need a hurt time',\n", - " 'i get the pleasure',\n", - " 'how i get now?',\n", - " 'for you too my party',\n", - " 'i got just sound, papi',\n", - " 'for you too my party',\n", - " 'i got just sound, papi',\n", - " 'tres horas más tarde en el abismo',\n", - " 'las uñas largas, sin esmalte',\n", - " 'vos sos el mismo, sin city de esa',\n", - " 'transiciones, los clasifican canciones viejas',\n", - " \"y vo' vacilando en tus cejas\",\n", - " 'rejas de tu óptica mística, azulada',\n", - " 'tengo una virgen blanca, helada, que te devora',\n", - " 'por dos monedas de oro respiran mis poros',\n", - " 'en tu panal de carne',\n", - " 'give me your sugar, pendejo',\n", - " 'shy wondering',\n", - " '¿por qué persigues al conejo, alicia?',\n", - " 'los azulejos so clean brillan, ajá, ah',\n", - " '¡shake your little culo, flaca, ajá!',\n", - " 'you are my fresh light',\n", - " 'i need a hurt time',\n", - " 'i get the pleasure',\n", - " 'how i get now?',\n", - " 'you are my fresh light',\n", - " 'i need a hurt time',\n", - " 'i get the pleasure',\n", - " 'how i get now?',\n", - " 'for you too my party',\n", - " 'i got just sound, papi',\n", - " 'for you too my party',\n", - " 'i got just sound, papi',\n", - " 'escaleras, habítame lentito las caderas',\n", - " 'no sé hasta qué punto me esperas',\n", - " 'pegando chicle debajo del asiento',\n", - " 'yo sé que a vos te pone mi acento clandestino',\n", - " 'te conviertes en mi guarida',\n", - " 'estás conmigo planeando la huida',\n", - " 'dividida, rendida a tus pies siendo hembra',\n", - " 'siendo hombre, siendo humana, siendo hambre',\n", - " 'siete sentidos y el fiambre, la mesada',\n", - " 'no me gusta como huele mi almohada',\n", - " 'biggie suena en la zona, video-vigilada',\n", - " 'la de tu cuello supura y buda mira, ah',\n", - " 'you are my fresh light',\n", - " 'i need a hurt time',\n", - " \"thinkin' in pleasure\",\n", - " \"get party to my world, i've been here\",\n", - " 'get party to my world, here, here',\n", - " 'get party to my world, here, here',\n", - " 'to my, to my world, here, here',\n", - " 'i got so hot, fuck me',\n", - " 'i gotta so hot, fuck me',\n", - " 'i gotta so hot, fuck me',\n", - " 'oh, oh, yo so fuck me',\n", - " '(dímelo)',\n", - " 'top down in the window with the ac set, all by ourselves now',\n", - " 'and you know what i want and i want that shit right now',\n", - " 'and the shit that i do in the street i do for you',\n", - " 'but i know you know',\n", - " 'i give it up, give it up, give it up, give it up for you',\n", - " 'give it up, give it up, give it up, give it up for you',\n", - " 'give it up, give it up, give it up, give it up for you',\n", - " 'give it up, give it up, give it up, give it up for you',\n", - " 'all this for you',\n", - " 'all this for you, todo esto para ti',\n", - " 'pide lo que quiera baby, solo tú me pone así',\n", - " 'dale mami entonces pide lo que quieras',\n", - " '¿quieres zapato o tú quiere una cartera?',\n", - " 'en mi lista tú eres la primera',\n", - " '¿quieres mi banco?, yo te doy la cuenta entera',\n", - " \"to' lo que tú quieras, tú te lo mereces\",\n", - " 'tú eres la más dura, la que me enloquece',\n", - " 'baby girl yo soy tu loquito',\n", - " \"de todito' el favorito\",\n", - " 'de tu sexo un adicto',\n", - " 'yo quiero cuidarte un chamaquito',\n", - " 'boricua, morena, americana',\n", - " 'me hacen coro adonde sea',\n", - " 'dominicana, colombiana',\n", - " \"i want to give it to you to' los día de la semana\",\n", - " 'i give it up, give it up, give it up, give it up for you',\n", - " 'give it up, give it up, give it up, give it up for you',\n", - " 'give it up, give it up, give it up, give it up for you',\n", - " 'give it up, give it up, give it up, give it up for you',\n", - " \"como no sabía que cartera comprarte, te las compré to'as\",\n", - " \"baby, tú sabes que por ti me voy a to'a\",\n", - " \"por ti le picheo a to'as\",\n", - " \"me ves llegar de versace y te mojas to'a, yeh\",\n", - " 'dime como corre la bm en la carretera',\n", - " 'chequea si la corta cabe en tu carolina herrera',\n", - " 'si quieres en tu closet monto una boutique de zapato y cartera',\n", - " \"y chingando, bebé, hago to'o lo que tú quieras\",\n", - " 'tú eres exclusiva, como ella ya no vienen',\n", - " 'las otras no suenan igual cuando se vienen',\n", - " 'con tu totito me comprometí',\n", - " \"la llevé pa' francia como se lo prometí\",\n", - " 'con vista a la torre eiffel se lo metí',\n", - " 'i give it up, give it up, give it up, give it up for you',\n", - " 'give it up, give it up, give it up, give it up for you',\n", - " 'give it up, give it up, give it up, give it up for you',\n", - " 'give it up, give it up, give it up, give it up for you',\n", - " 'all this for you',\n", - " 'yeh, yeh, yeh, yeh, yeh, yeh',\n", - " 'bad bunny baby, baby',\n", - " 'díselo luian',\n", - " 'hear this music, hear this music',\n", - " 'messiah',\n", - " 'tory lanez',\n", - " 'tunicolo',\n", - " 'hip-hop nonstop',\n", - " \"en attendant c'que le futur nous va proposer\",\n", - " 'car jamais la tête baissée',\n", - " \"ma clique dans un état de haute estime 'vec les diables du ciel\",\n", - " 'lddc, toujours en cavale, ouais',\n", - " 'mi hermano, te llevaré siempre profundo en mi corazón',\n", - " 'recordaré tu sonrisa y recordaré tu voz',\n", - " \"recordaré todo' los tiempos que me diste\",\n", - " \"recordaré to' lo que me dijiste antes de irte\",\n", - " \"recordaré y to' los recuerdos los anoto\",\n", - " 'para jamás en mi vida olvidar esе tiempo loco',\n", - " 'que ahora el tiеmpo es otro, el tiempo es duro y triste',\n", - " 'y me da una dificultad increíble aceptar que tú te fuiste',\n", - " 'es increíble, inaceptable la realidad',\n", - " 'pero esta confraternidad dura hasta la eternidad, de pronto ya no estás',\n", - " 'siempre te llevaré conmigo, siempre seguirás',\n", - " 'siendo parte de mi vida, todavía me irás a ayudar',\n", - " 'que nunca iré a olvidar tu manera de pensar, hermano, nunca',\n", - " 'tu manera respetaré y apreciaré ante tu tumba',\n", - " 'me arrodillo y te empiezo a hablar',\n", - " 'te empiezo a cantar',\n", - " \"tunicolo, we always gon' remember you\",\n", - " \"reminiscin' about the times we went through\",\n", - " 'always grateful, we respectful',\n", - " 'just to have met you, have met you, yeah',\n", - " \"tunicolo, we always gon' remember you\",\n", - " \"reminiscin' about the times we went through\",\n", - " 'always grateful, we respectful',\n", - " 'just to have met you, have met you',\n", - " 'bro, i remember your irresistible smile',\n", - " \"like i've seen you yesterday even though it's been much more time\",\n", - " 'brother, i remember how many times you make me laugh',\n", - " 'you brought me happiness no matter how bad the mood was that i had',\n", - " 'you were there for me, down with me, yes, you make me feel',\n", - " \"a brother's love for real, forever prime is concealed\",\n", - " 'your name is written on my heart, my love for you sincere',\n", - " \"mi hermano, te extraño, life isn't the same sin ti\",\n", - " 'i know you were a happy man even though you went through hell',\n", - " 'i know you loved the ones around you like you loved yourself',\n", - " 'you gave unconditional love to your girl like a role model for a man',\n", - " \"but why you had to leave i'll never understand\",\n", - " \"i'm just glad that i had the chance to know your soul\",\n", - " \"and i'm sorry that i can't yet follow you, bro\",\n", - " \"i will go, i'll always keep it in my mind, we'll go fo' sho'\",\n", - " \"'cause we always have you with us, we told you so\",\n", - " \"tunicolo, we always gon' remember you\",\n", - " \"reminiscin' about the times we went through\",\n", - " 'always grateful, we respectful',\n", - " 'just to have met you, have met you, yeah',\n", - " \"tunicolo, we always gon' remember you\",\n", - " \"reminiscin' about the times we went through\",\n", - " 'always grateful, we respectful',\n", - " 'just to have met you, have met you',\n", - " 'solo recordar tu sonrisa y dejar de lado el destino',\n", - " 'que en el corazón tenemos tu carisma que nos muestra el camino',\n", - " 'miro tus fotos, videos de conciertos y sigo esperando que el día de mi muerte, volveré a estar contigo',\n", - " 'may you always accompany your brothers for real, yeah',\n", - " 'may you got us until we reach the top of the hill, yeah',\n", - " 'may your charisma reach out to all the people',\n", - " 'hermano, fue un placer haberte conocido',\n", - " 'es dura la realidad y aunque tú ya no estás',\n", - " 'nuestra confraternidad durará hasta la eternidad',\n", - " \"tunicolo, we always gon' remember you\",\n", - " \"reminiscin' about the times we went through\",\n", - " 'always grateful, we respectful',\n", - " 'just to have met you, have met you, yeah',\n", - " \"tunicolo, we always gon' remember you\",\n", - " \"reminiscin' about the times we went through\",\n", - " 'always grateful, we respectful',\n", - " 'just to have met you, have met you',\n", - " 'yeah, eh',\n", - " 'yeah, always cool, bro, yeah',\n", - " 'goa',\n", - " \"yeah (i'm a punkstar)\",\n", - " 'woah, check (bitch, i feel like fish narc)',\n", - " 'i need a pop now (i need a pop)',\n", - " 'i just need some love right now (i just need some love)',\n", - " \"i said i’m up now (i said i'm up now)\",\n", - " \"baby won't you please come hold me down (please come hold me down)\",\n", - " 'i need a pop now (i need a pop)',\n", - " 'i just need some love right now (i just need some love)',\n", - " \"i said i’m up now (i said i'm up now)\",\n", - " \"baby won't you please come hold me down (please come hold me down)\",\n", - " 'no entiendes nada',\n", - " '¿cómo con lo que te drogas, pides ensalada?',\n", - " 'necesito más tiempo contigo',\n", - " 'de momento la droga es mi mejor amigo',\n", - " 'no siento la cara y yo no vengo del dentista',\n", - " \"me he queda'o dormido conduciendo en la autopista\",\n", - " 'estoy vomitando y tengo nublada la vista',\n", - " \"y he bota'o unos cuantos puntos que había en mi lista\",\n", - " \"baby fuck, 'toy broke\",\n", - " 'porque quemo el money como una estrella de rock',\n", - " 'si algún día me muero, bitch, celébralo',\n", - " 'de momento mami dame, dame, dame, dame, dame, dame más amor (check)',\n", - " 'i need a pop now (i need a pop)',\n", - " 'i just need some love right now (i just need some love)',\n", - " \"i said i'm up now (i said i'm up now)\",\n", - " 'baby won’t you please come hold me down (please come hold me down)',\n", - " 'i need a pop now (i need a pop)',\n", - " 'i just need some love right now (i just need some love)',\n", - " \"i said i’m up now (i said i'm up now)\",\n", - " 'baby won’t you please come hold me down (please come hold me down)',\n", - " 'ayy, ayy, woah',\n", - " 'ayy, soy un adicto de tu amor',\n", - " 'your pussy feel better than drugs',\n", - " 'you, me and my bonnie and clyde, oh (yeah)',\n", - " 'i got my money, i got more hoes (eh-eh; ayy)',\n", - " 'si quiero ahora lloro cocaína',\n", - " 'no siento nada si tú me miras',\n", - " 'ahora es ayer en new york, babe (york, babe)',\n", - " 'te veo en cada una que me mira, yeah',\n", - " 'molly, fucking adderall and messing with the coca (eh)',\n", - " 'contigo no, no duermo solo',\n", - " 'no le eches la culpa a la droga de que esté loco (eh)',\n", - " 'contigo no, hazte otro',\n", - " 'molly, fucking adderall and messing with the coca (with the coca)',\n", - " 'contigo no, no duermo solo',\n", - " 'no le eches la culpa a la droga de que esté loco',\n", - " 'contigo no (check)',\n", - " 'i need a pop now (i need a pop)',\n", - " 'i just need some love right now (i just need some love)',\n", - " \"i said i'm up now (i said i'm up now)\",\n", - " \"baby won't you please come hold me down (please come hold me down)\",\n", - " 'i need a pop now (i need a pop)',\n", - " 'i just need some love right now (i just need some love)',\n", - " \"i said i’m up now (i said i'm up now)\",\n", - " \"baby won't you please come hold me down (please come hold me down)\",\n", - " 'hey yo',\n", - " \"you know who's this\",\n", - " 'daddy yankee',\n", - " 'desde la isla del cangrinaje',\n", - " 'you know how we do man, come on!',\n", - " 'ooh, ooh',\n", - " \"ten cuida'o con el pirata del caribe\",\n", - " 'ooh, ooh',\n", - " \"vamo'a ver si tú tienes calibre\",\n", - " 'ooh, ooh',\n", - " 'aquí en la calle el más fuerte sobrevive',\n", - " 'ooh, ooh',\n", - " 'entre los grandes mi nombre se escribe',\n", - " 'zona de gangstas',\n", - " 'esto sí es el mundo real',\n", - " \"mai' llegaron los players (daddy!)\",\n", - " 'gyal muevelo, oh-ooh-oh (come on!)',\n", - " 'zona de gangstas (what!?)',\n", - " \"todos mis soldados let's ride\",\n", - " 'por eso ellas se pegan',\n", - " \"ma' muevelo, oh-ooh, oh-ooh (come on! come on!)\",\n", - " 'damas y caballeros, voy a paso ligero',\n", - " 'ayer estaba pobre y hoy camino con dinero',\n", - " 'la fama no me importa, mi hermano, soy sincero',\n", - " 'gracias a mi señor que me dio el alma de un guerrero',\n", - " 'calle, ya que me llama, camino con calma',\n", - " 'si actuas de bravo nosotros te damos en llama',\n", - " 'calle, sigo cazando, a las damas dandole flama',\n", - " \"muévete chama', c'mon, shake it up, mama\",\n", - " \"shorty dale, mai' go!, rapido muevelo\",\n", - " 'saca la fiera que tú tienes, no te detengas, go! go!',\n", - " 'tú sabes quienes son, yankee-man con el dogg',\n", - " 'abran paso que por ahí viene da-ddy!',\n", - " 'zona de gangstas',\n", - " \"esto sí es el mundo real (nos fuimos lejos, pa')\",\n", - " \"mai' llegaron los players (¿quiénes?)\",\n", - " 'gyal muevelo, oh-ooh-oh (come on!)',\n", - " 'zona de gangstas (what!?)',\n", - " \"todos mis soldados let's ride\",\n", - " 'por eso ellas se pegan',\n", - " \"ma' muevelo, oh-ooh, oh-ooh (come on! come on!)\",\n", - " 'one for the money and two for the gangstas',\n", - " 'three hot shots that pop for the wankstas',\n", - " 'top dogg, s-n-double o-p',\n", - " 'the gangsta mac, a g from the l.b.c',\n", - " \"i'm on the go, i get the dough\",\n", - " \"i let 'em know, i bust a ho\",\n", - " \"i'm shakin' up the chaperones\",\n", - " \"that's everywhere a nigga go\",\n", - " 'this will be',\n", - " 'the day that we will always g',\n", - " \"turn around, get 'em up\",\n", - " \"put 'em down, i fall back\",\n", - " 'take my hand',\n", - " 'we could have a little fun in the van',\n", - " \"i'm the man with the gun in his hand\",\n", - " \"i don't plan on stayin' around\",\n", - " \"i'm playin' around\",\n", - " \"i'm all about layin' it down\",\n", - " 'now ge-get up (get up)',\n", - " \"or i'ma have to hit up (hit up)\",\n", - " \"and if you say the wrong set, i'm get you you lit up (lit up)\",\n", - " 'the deal?, you know the trill',\n", - " 'kick rocks, motherfucker',\n", - " 'and tell your bitch to come here, for real',\n", - " 'zona de gangstas',\n", - " \"esto sí es el mundo real (nos fuimos lejos, pa')\",\n", - " \"mai' llegaron los players (¿quiénes?)\",\n", - " 'gyal muevelo, oh-ooh-oh (come on!)',\n", - " \"shorty dale, mai' go!, rapido muevelo\",\n", - " 'saca la fiera que tú tienes, no te detengas, go! go!',\n", - " 'tú sabes quienes son, yankee-man con el dogg',\n", - " 'abran paso que por ahí viene da-ddy!',\n", - " 'zona de gangstas',\n", - " \"esto sí es el mundo real (nos fuimos lejos, pa')\",\n", - " \"mai' llegaron los players (¿quiénes?)\",\n", - " 'gyal muevelo, oh-ooh-oh (come on!)',\n", - " 'zona de gangstas (what!?)',\n", - " \"todos mis soldados let's ride\",\n", - " 'por eso ellas se pegan',\n", - " \"ma' muevelo, oh-ooh, oh-ooh (come on! come on!)\",\n", - " 'hey yo',\n", - " 'meet the paisa',\n", - " \"conquistando lo' estados unidos\",\n", - " 'snoop dogg',\n", - " 'daddy yankee, el cangri',\n", - " 'the real gangstas',\n", - " 'traficando música por toneladas',\n", - " 'oh-ooh-oh!',\n", - " 'oh-ooh-oh!',\n", - " 'the union, yeah',\n", - " 'real trap shit',\n", - " \"i told spiff i'm talking reckless\",\n", - " 'real hasta la muerte',\n", - " 'dímelo, spiff, yeh',\n", - " 'the runners',\n", - " 'esta es la unión',\n", - " 'future',\n", - " 'anuel',\n", - " '¡bad bunny, baby, bebé!',\n", - " 'i fuck reality stars, her pussy is good',\n", - " 'i make a r&b broad, suck on that wood',\n", - " \"i drive foreign cars, and that's understood\",\n", - " \"i drop 80 on one pinky ring, what the hell i was thinkin'?\",\n", - " \"i had to pull over an agressive mercedes, the hell i was drinkin'?\",\n", - " \"i fuck all these hoes, i be gettin' all this money\",\n", - " \"i turn 'em to demons\",\n", - " \"what the hell i was thinkin'?\",\n", - " \"what the hell i was thinkin'?\",\n", - " \"what the hell i was thinkin'? (yeh, yeh, yeh)\",\n", - " \"what the hell i was thinkin'?\",\n", - " 'yeh',\n", - " 'yo muero guerreando como mussolini (wuh)',\n", - " 'ando con spiff en un lamborghini (skrt)',\n", - " 'díselo luian, que hace tiempo que ya tú le metiste a mimi',\n", - " 'sólo totitos de televisión (yeh), porque saben más rico (rico, rico, rico)',\n", - " \"ando buscando putas en miami porque ya les di a to'a las de puerto rico (prra), yeah\",\n", - " 'siempre ando en el aire como jet blue (¡blue!)',\n", - " \"las botella' son de möet o de don peri, yo no quiero blue (¡no!)\",\n", - " 'codeína con sprite o con mountain dew (dew)',\n", - " \"las baby no se despegan pa' mí que en el bicho tengo krazy glue (glue-glue)\",\n", - " 'codeine y ciclón (¡-clón!), coca y un blunt (¡wuh!)',\n", - " 'no sé qué puñeta yo pienso, tengo un arrebato cabrón (arrebato cabrón)',\n", - " 'jangueando con future, obama y lebron (yeh, yeh, yeh)',\n", - " \"gastando 300 mil peso' que tenía guarda'o en un dron (wuh-uh)\",\n", - " \"diosa canale' en venezuela, giulia arane en italia\",\n", - " \"y en p.r, lo siento por francis, pero estoy puesto pa' darle a natalia (chin, chin, chin)\",\n", - " 'i fuck reality stars, her pussy is good',\n", - " 'i make a r&b broad, suck on that wood',\n", - " \"i drive foreign cars, and that's understood\",\n", - " \"i drop 80 on one pinky ring, what the hell i was thinkin'?\",\n", - " \"i had to pull over an agressive mercedes, the hell i was drinkin'?\",\n", - " \"i fuck all these hoes, i be gettin' all this money\",\n", - " \"i turn 'em to demons\",\n", - " \"what the hell i was thinkin'?\",\n", - " \"what the hell i was thinkin'?\",\n", - " \"what the hell i was thinkin'? (ey)\",\n", - " \"what the hell i was thinkin'?\",\n", - " 'ey-ey-ey-ey',\n", - " 'tatuajes en mi piel',\n", - " 'yo estoy en la nba, magic johnson con el 32, seh',\n", - " 'me muero como un tiburón, antes de sobrevivir como un pez',\n", - " 'empecé joseando, ahora estoy clavando putas en el yate y en el jet',\n", - " \"fendi y giuseppe, antes joseaba pa' comprarme las bred\",\n", - " \"rebota esas nalga', baby (baby)\",\n", - " \"como si tú trabajara' en el strip club (-trip club)\",\n", - " \"vo'a comerme ese totito, bon appétit\",\n", - " \"'tamos fumando como do' hippie' y chingando como actore' de porno (ey)\",\n", - " \"rebota esas nalga', baby (baby)\",\n", - " \"como si tú trabajara' en el strip club (-trip club)\",\n", - " \"vo'a comerme ese totito, bon appétit\",\n", - " \"'tamos fumando como do' hippie' y chingando como actore' de porno (ey)\",\n", - " 'post up, i smoke on the gas state (ey-ey-ey-ey)',\n", - " 'fuck off, i smoke on the gas (ey)',\n", - " 'post up, i smoke on the gas station',\n", - " 'post up, i smoke on the gas (wuh)',\n", - " 'post up, i smoke on the gas station (yeh)',\n", - " 'post up, i smoke on the gas (ey)',\n", - " 'post up, i smoke on the gas station (¡blue!)',\n", - " 'post up, i smoke on the gas (¡rrr!)',\n", - " 'bad bunny, baby, bebé, bebé, ¡bebé!, jeje',\n", - " 'anuel',\n", - " 'yeh-eh',\n", - " 'la doble a',\n", - " 'dí-dí-dí-díselo luian',\n", - " 'dímelo, spiff, jeje (ey)',\n", - " 'yeh-yeh',\n", - " 'future',\n", - " 'future, yeh',\n", - " 'the union, esta es la unión',\n", - " 'hear this musi-¡ih!',\n", - " 'real hasta la muerte, yeh, yeh, yeh',\n", - " 'trap kingz, baby, trap kingz, baby',\n", - " \"cabrones, ustede' no pueden roncarno' de trap a nosotro', jejeje\",\n", - " 'esta es la unión',\n", - " 'para la supa sexy gyal que se ve fenomenal',\n", - " 'y se puso pretty pal dansall',\n", - " 'y para cada rudebwaya, los que piden more fyah',\n", - " 'especial dedicación para su clan!',\n", - " 'da one a fi di gal dem, sí, para la cadera!',\n", - " 'combina las miles de maneras, chica si te enteras',\n", - " 'sabes que para moverte siempre tuviste madera',\n", - " 'me vuelves loco en la playa, el campo y en la carretera',\n", - " 'y a cada supasexygal',\n", - " 'dan dáselo',\n", - " 'la que se ve fenomenal',\n", - " 'dan dáselo',\n", - " 'si se arregló para el dansall',\n", - " 'dan dáselo',\n", - " 'y el que no sepa como suena sólo manda…',\n", - " 'we love gyal fat, we love them slim',\n", - " 'we love them thick and we love them thin',\n", - " 'wether indian gyal or a african ting',\n", - " 'send them in my wa you send them in',\n", - " 'we love gyal fat, we love them slim',\n", - " 'we love them thick and we love them thin',\n", - " 'wether indian gyal or a african ting',\n", - " 'any nation at all just send them in',\n", - " 'them call mi di prince of persia',\n", - " 'paint di gyal them gud mi own bergia',\n", - " 'di gyal dem love wen me n dem mergia',\n", - " 'dweet suh gud gyal a bawl out fi murda',\n", - " \"gi them style's weh dem never yet hearda\",\n", - " 'but sum bwoy yow a we them scureda',\n", - " 'wen dem see me n fyah bwoy dem a merma',\n", - " 'cause wi tek weh dem gyal cause wi nuh one burner',\n", - " 'we love gyal fat, we love them slim',\n", - " 'we love them thick and we love them thin',\n", - " 'wether indian gyal or a african ting',\n", - " 'send them in my wa you send them in',\n", - " 'we love gyal fat, we love them slim',\n", - " 'we love them thick and we love them thin',\n", - " 'wether indian gyal or a african ting',\n", - " 'any nation at all just send them in',\n", - " 'y cuando pasa por delante se presiente el edén',\n", - " 'y esos andares con estilo, chica, siempre se ven',\n", - " 'y si pones a levitar pero mira, a más de cien!',\n", - " 'a toda su familia y a sus friend!',\n", - " 'andas siempre con encanto, reclamando la atención',\n", - " 'y sabes cómo poner a toda la gente en vibración',\n", - " 'y si no puede, no pueden ya sostener la situación',\n", - " 'cada vez que das un paso causas la revolución',\n", - " 'chica tan riquita, tan electrizante como cítrica',\n", - " 'los deja de piedra monolíticos',\n", - " 'fluyo como liquido, chico de fuego mítico raquítico',\n", - " 'no chiki, no somos estereotípicos',\n", - " 'we love gyal fat, we love them slim',\n", - " 'we love them thick and we love them thin',\n", - " 'wether indian gyal or a african ting',\n", - " 'send them in my wa you send them in',\n", - " 'we love gyal fat, we love them slim',\n", - " 'we love them thick and we love them thin',\n", - " 'wether indian gyal or a african ting',\n", - " 'send them in my wa you send them in',\n", - " 'we a di sound bwoys killa',\n", - " 'chica vigila en primera fila',\n", - " 'manda de hawai o de manila',\n", - " 'suku con el fyahbwoy',\n", - " 'te digo, en esta liga no vacilan',\n", - " 'no te daré detalles y espabila',\n", - " 'tira palante y el corazón le roba al lover',\n", - " 'y en cada city cada gyal le daba coba al lover',\n", - " 'y alguna que no cae en gracia y oye, no va, no va',\n", - " 'otra se pone loca, chica sólo sóbalo, va?',\n", - " 'dem call me di prince of persya',\n", - " 'di gal dem good be wont virgin',\n", - " 'di gal dem love when me and dem merge',\n", - " 'dweet a good gal a bawl out fi murder',\n", - " 'give dem styles whe dem neva yet heard',\n", - " 'but some bwoy out di gal dem scared',\n", - " 'when dem see me and fyahbwoy dem a mermaid',\n", - " 'cause dem nuh seh we tek whe dem gal, cause we no want burn nah',\n", - " 'we love gyal fat, we love them slim',\n", - " 'we love them thick and we love them thin',\n", - " 'wether indian gyal or a african ting',\n", - " 'send them in my wa you send them in',\n", - " 'we love gyal fat, we love them slim',\n", - " 'we love them thick and we love them thin',\n", - " 'wether indian gyal or a african ting',\n", - " 'send them in my wa you send them in',\n", - " 'cat, bird, snake, horse',\n", - " 'we all bleed the same colour',\n", - " 'south, east, west, north',\n", - " 'we all cry joy and sorrow',\n", - " 'cat (cats), bird (birds), snake (snakes), horse (horses)',\n", - " 'we all bleed the same colour',\n", - " 'south (south), east (east), west (west), north (north)',\n", - " 'we all cry joy and sorrow',\n", - " 'we can share our tears',\n", - " 'we can bathe our fears',\n", - " \"we're heading towards love\",\n", - " \"we're children of the deeds\",\n", - " 'watering in the seeds',\n", - " \"we're heading towards love\",\n", - " 'hacia el amor',\n", - " 'saravá, ibeyi! (saravá, emicida!) saravá!',\n", - " 'seja como água, bruce lee, kung fu',\n", - " 'sem trégua, trago a régua voodoo',\n", - " 'mil légua, mil língua, tipo busuu',\n", - " 'e o som do tambor, como primeiro bluetooth (connection)',\n", - " 'ano de xangô; licença, exu',\n", - " 'elégua leva as mágoa tudo, tudo, tudo, tudo!',\n", - " 'tamo no caminho, eu não ando sozinho',\n", - " 'quando oxum me traz as flores',\n", - " 'nanã me tira os espinhos',\n", - " 'orun acima do avião, rico galeão',\n", - " 'tipo daileon, modo \"baile on\"',\n", - " 'canta enquanto encanta',\n", - " 'hermano de los animales y las plantas',\n", - " 'pra quem crê em oxalá, mano',\n", - " 'toda sexta é santa',\n", - " 'la noche en mi color, por toda la suerte',\n", - " 'ojos de atahualpa en mi mapa tumbó la muerte',\n", - " 'mamacita enseña: \"hijo, sea fuerte\"',\n", - " 'invisible a los problemas, mi poemas son el puente',\n", - " 'libre, cuerpo, mente, anti boina-verde',\n", - " 'traje en el camuflaje, soldado en la calle 13',\n", - " 'enemigos tienen ojos, pero no pueden verme',\n", - " 'sus muslos, piernas y brazos no pueden alcanzarme',\n", - " 'nunca!',\n", - " 'we can share our tears',\n", - " 'we can bathe our fears',\n", - " \"we're heading towards love\",\n", - " \"we're children of the deeds\",\n", - " 'watering in the seeds',\n", - " \"we're heading towards love\",\n", - " 'we can share our tears',\n", - " 'we can bathe our fears',\n", - " \"we're heading towards love\",\n", - " \"we're children of the deeds\",\n", - " 'watering in the seeds (grow up)',\n", - " \"we're heading towards love\",\n", - " 'hacia el amor',\n", - " 'hook',\n", - " 'he ask for your number you was doing yoo hee, yo hee, now he looking at your girlfriend, waaa, you can men go bullshit, hit dont care (dont care) now he looking at your girlfriend waaa(dile tego)',\n", - " 'una de esas jevitas me miro atravesao(its ok) pero la otra esta mirandome fácil, una de jevita me miro atravesao(its ok), pero la otra esta chekeandome fácil',\n", - " 'fast and furious are gonna just cars(mirandome)',\n", - " 'can hope can just can now(chekeandome)',\n", - " 'fast and furious are gonna just cars (mirandome)',\n", - " 'can hope i gonna telephone show(chekeandome)',\n", - " 'dale going on like that believe me',\n", - " 'primero dice no despues si y asi (si, si)',\n", - " 'de to´color cada pais por eso me llaman el lliguiri',\n", - " 'el mejor de todos los tiempos, como ali, ya estoy aqui pa hacerte feliz, te veo en mtv y en bet, que tal estrellas de un dia pa otro, nadie va a saber yo no hablo a lo loco (a lo loco), tengo raperos lo mio es a ojo yo las azoto y les bajo el moco dale going on like that belive me, primero dice no despues si y asi(y asi)me gustan las jevitas rapiditas, rapiditas, come on, dile dile',\n", - " 'hook',\n", - " 'he ask for your number you was doing yoo hee, yo hee, now he looking at your girlfriend, waaa, you can men go brush, she hit dont care (dont care) now you looking at you girlfriend waaa(dile tego)',\n", - " 'una de esas jevitas me miro atravesao(its ok) pero la otra esta mirandome fácil, esa jevita me miro atravesao(its ok), pero la otra esta chekeandome fácil',\n", - " 'fast and furious are gonna just cars(mirandome)',\n", - " 'can hope can just can now(chekeandome)',\n", - " 'fast and furious are gonna just cars (mirandome)',\n", - " 'can hope i gonna telephone show(chekeandome)',\n", - " '(uuuu) (jaja)',\n", - " 'el que tiene tienda que la atienda sino, sino , sino que la venda, mami you slip, she grip coz she all on me',\n", - " 'now every go ahead in deep for me, im a full for that you know, puerto rico judo ooh you dont know cutie culo (como) tego a beat don king go wrong a sk8 board the song, (wooo)',\n", - " 'a chase some my reflexion you know the song, mama is too fast swatter no doubt digale tacaña tu reparte ahora mueve tu bate y salte, yo soy amiguito noamante, en este trio, eee que es mas aguante you no doubt mami is cool its allright cuz you´re friend',\n", - " 'hook',\n", - " 'he ask for your number you was doing yoo hee, yo hee, now he looking at your girlfriend, waaa, you can men go brush, she hit dont care (dont care) now you looking at you girlfriend waaa(dile tego)',\n", - " 'una de esas jevitas me miro atravesao(its ok) pero la otra esta mirandome fácil, esa jevita me miro atravesao(its ok), pero la otra esta chekeandome fácil',\n", - " 'fast and furious are gonna just cars(mirandome)',\n", - " 'can hope can just can now(chekeandome)',\n", - " 'fast and furious are gonna just cars (mirandome)',\n", - " 'can hope i gonna telephone show(chekeandome)',\n", - " '(vamos encontrando en el party)',\n", - " \"everybody let's party\",\n", - " \"everybody let's party\",\n", - " \"everybody let's party\",\n", - " 'mr. worldwide, and micha',\n", - " 'dale',\n", - " '(vamos encontrando en el party)',\n", - " 'i like to party',\n", - " '(que voy a darte un beso en el party)',\n", - " 'she like to party',\n", - " '(vamos para mi casa despues del party)',\n", - " 'we like to party',\n", - " '(pero no le digas a nadie)',\n", - " 'la-di-da-di',\n", - " '(vamos encontrando en el party)',\n", - " 'i like to party',\n", - " '(que voy a darte un beso en el party)',\n", - " 'she like to party',\n", - " '(vamos para mi casa despues del party)',\n", - " 'we like to party',\n", - " '(pero no le digas a nadie)',\n", - " 'la-di-da-di',\n", - " 'mami la fietas en el bote y todo el mundo viene',\n", - " 'y todos los días para mi son viernes',\n", - " 'billete ya yo veo que no lo tienen',\n", - " 'cojones yo ya veo que no lo tienen',\n", - " 'micha, que le va hacer',\n", - " 'que tu saques la moquilla rebatando la mujer',\n", - " 'te lo digo armando perez, con nosotros no pueden hacer',\n", - " 'yo no soy comelon pero me la como',\n", - " 'no soy ladrón pero me la robo',\n", - " 'no soy cupido pero me la enamoro',\n", - " 'viene el coro',\n", - " '(x2)',\n", - " '(vamos encontrando en el party)',\n", - " 'i like to party',\n", - " '(que voy a darte un beso en el party)',\n", - " 'she like to party',\n", - " '(vamos para mi casa despues del party)',\n", - " 'we like to party',\n", - " '(pero no le digas a nadie)',\n", - " 'la-di-da-di',\n", - " 'sin freno con el carro lleno',\n", - " 'con el antídoto y con el veneno',\n", - " 'no le digas nada para que la feta se repita',\n", - " 'que soy fría también enfría a cualquier fetesita',\n", - " 'matando a papeles',\n", - " 'bogando a papeles',\n", - " 'saca mucho le duele',\n", - " 'aunque lo cone mal y le pica',\n", - " 'oye que quien te invito',\n", - " 'eso no se invita',\n", - " 'oye primero llego tu muchachita',\n", - " 'yo no soy comelon pero me la como',\n", - " 'no soy ladrón pero me la robo',\n", - " 'no soy cupido pero la enamoro',\n", - " 'viene el coro',\n", - " '(x2)',\n", - " '(vamos encontrando en el party)',\n", - " 'i like to party',\n", - " '(que voy a darte un beso en el party)',\n", - " 'she like to party',\n", - " '(vamos para mi casa despues del party)',\n", - " 'we like to party',\n", - " '(pero no le digas a nadie)',\n", - " \"(dale mami bota, baby don't stop\",\n", - " 'move that ass so vuelvo a contar',\n", - " 'we came from the bottom but we go to the top',\n", - " 'relics in the city motherfucker we are)',\n", - " \"dale mami bota, baby don't stop\",\n", - " 'move that ass so vuelvo a contar',\n", - " 'we came from the bottom but we go to the top',\n", - " 'relics in the city motherfucker we are',\n", - " \"dale mami bota, baby don't stop\",\n", - " 'move that ass so vuelvo a contar',\n", - " 'we came from the bottom but we go to the top',\n", - " 'relics in the city motherfucker we are',\n", - " 're-relics in the city',\n", - " \"i'll be rap for the milly\",\n", - " \"rap for the money, i'mma catch it, i'mma kill it\",\n", - " 'drive so fast back wheels so spitty',\n", - " 'told your bitch, stay you, my business',\n", - " \"tengo a todo el mundo siempre puesto pa' mi nombre\",\n", - " 'cuida lo que dices, cuida como a mí me nombres',\n", - " 'pronto soy leyenda y casi nadie me conoce',\n", - " 'en verdad conmigo ni uno de ellos quiere roce',\n", - " \"vamo' a ser honesto: quién de verdad tiene el puesto\",\n", - " \"i'll be on the money desde chico y con lo puesto\",\n", - " \"siempre vamo' a juego, vamo' a dar, vamo' a dentro\",\n", - " \"ya lo dije ma': acabo rico, acabo muerto\",\n", - " '(acabo rico, acabo muerto',\n", - " 'acabo rico, acabo muerto',\n", - " 'acabo rico, acabo muerto)',\n", - " \"dale mami bota, baby don't stop\",\n", - " 'move that ass so vuelvo a contar',\n", - " 'we came from the bottom but we go to the top',\n", - " 'relics in the city motherfucker we are',\n", - " \"dale mami bota, baby don't stop\",\n", - " 'move that ass so vuelvo a contar',\n", - " 'we came from the bottom but we go to the top',\n", - " 'relics in the city motherfucker we are',\n", - " 'baby now i brought that green and i smoke that shit',\n", - " \"'cause i'm celebrating, we go to the top, we gettin' rich\",\n", - " 'now i used to trap, i used to live quick',\n", - " \"'till i put my man on ground has i had get this\",\n", - " \"ahora estamos prendíos', por eso tú habla' mierda\",\n", - " 'yo estaba en la cocina pero estaba haciendo letras',\n", - " \"yo estaba puesto en esto desde antes que naciera'\",\n", - " 'yo iba para arriba, mama, vine de una estrella',\n", - " 'show me the money, enséñame la feria',\n", - " 'no quiero hablar contigo, sólo llena mi cartera',\n", - " 'young, designer, hot trap insane',\n", - " 'follow the trap, la rompo donde quiera',\n", - " 'changing the game, estoy cambiando el juego',\n", - " \"making my money, i don't talk, hasta luego\",\n", - " \"she wants my money, clap aha, i'mma let her\",\n", - " 'mueve esa chapa al ritmo de mis huevos',\n", - " \"dale mami bota, baby don't stop\",\n", - " 'move that ass so vuelvo a contar',\n", - " 'we came from the bottom but we go to the top',\n", - " 'relics in the city motherfucker we are',\n", - " \"dale mami bota, baby don't stop\",\n", - " 'move that ass so vuelvo a contar',\n", - " 'we came from the bottom but we go to the top',\n", - " 'relics in the city motherfucker we are',\n", - " 'gang',\n", - " 'shootas ready with the flag (pff, pff)',\n", - " 'is wartime, man, i put that on my neck (gang, ja)',\n", - " 'papo, dime ¿keloké? (work)',\n", - " \"estamo' haciendo trap, o no, ¿o es que no lo ves? (gang)\",\n", - " 'married with the war (war)',\n", - " \"somos solda'os en esta jungla de cristal (agh)\",\n", - " \"ando enamora'o 'e la guerra (uh)\",\n", - " '¿cómo no voy a ser un pitbull cuando la vida es tan perra? (bang)',\n", - " 'keo getting bigger (what?)',\n", - " 'supported by the narcos y los killers (and the dealers)',\n", - " \"look, estamo' en otra liga (work), la bandera pirata bien arriba\",\n", - " 'you promote prostitution, you living an illusion (fuck)',\n", - " \"you hated on me, this one you gon' die executed (prr)\",\n", - " 'yo tengo reputación los ángeles me cuidan (argh)',\n", - " 'visten con bandana y tienen instinto suicida (pff)',\n", - " 'tú no tienes sangre azul, la mía es codeína (hey)',\n", - " 'yo soy un rey bastardo, yo no vengo desde arriba (what?)',\n", - " \"you a hoe, you a snitch, sólo ere' un bufón (fuck him)\",\n", - " \"yo he libra'o mil batallas can'tándole a mi legión (pff, pff, pff, pff)\",\n", - " 'shootas ready with the flag (pff)',\n", - " 'is wartime, man, i put that on my neck (bang)',\n", - " 'papo, dime ¿keloké? (work)',\n", - " \"estamo' haciendo trap, o no, ¿o es que no lo ves? (¿o es que no lo ves?)\",\n", - " 'married with the war',\n", - " \"somos solda'os en esta jungla de cristal\",\n", - " \"ando enamora'o 'e la guerra\",\n", - " '¿cómo no voy a ser un pitbull cuando la vida es tan perra?',\n", - " 'coronando en tu rola, diego maradona',\n", - " 'llegó el barco pirata con los diablos de la zona (skrr)',\n", - " 'trap alert, mi mierda es la corona (keo)',\n", - " \"tengo un par de barras pa' que saquen la fregona (pff, pff, pff)\",\n", - " 'tú no eres mi enemigo, yo aquí soy la ley (woah)',\n", - " \"acabarán callando porque vine pa' ser rey (work)\",\n", - " \"eres doble, no eres puro, más duplica'o que figo (pff)\",\n", - " \"prefieren mi reina'o a to'a tu corona de testigos\",\n", - " 'i got plug with the devil, make it out the bando',\n", - " 'no puedes ser el diablo cuando no has sentido el fuego',\n", - " 'yo estoy muerto por dentro, de aspecto como nuevo',\n", - " \"sólo sois plebellos, 'táis encerra'os en mi juego\",\n", - " 'yo cumplí la profecía, hice lo que dije (oh)',\n", - " \"yo crié mariposas pa' comerme las lombrices (oh)\",\n", - " \"ahora viene tiempo 'e guerra (oh)\",\n", - " \"saco mi acuarela y pinto poesía pa' mis soldados en tierra (agh)\",\n", - " 'shootas ready with the flag (pff)',\n", - " 'is wartime, man, i put that on my neck (keo is good)',\n", - " 'papo, dime ¿keloké?',\n", - " \"estamo' haciendo trap, o no, ¿o es que no lo ves? (sellah)\",\n", - " 'married with the war (gang)',\n", - " \"somos solda'os en esta jungla de cristal (agh)\",\n", - " \"ando enamora'o 'e la guerra\",\n", - " '¿cómo no voy a ser un pitbull cuando la vida es tan perra? (agh)',\n", - " 'gang, gang, gang',\n", - " 'gang, ey, ey',\n", - " 'all my bitches 10, yeah they centerfolds',\n", - " 'you know what it is if they ever fold',\n", - " \"i got so much paper we ain't acting right\",\n", - " \"swimmin' in this money man, we livin' nice\",\n", - " '(ale-alemán)',\n", - " 'nos miran con gucci y con prada',\n", - " 'porque tenemos la plaza comprada',\n", - " 'pura calidad, nunca de la cortada',\n", - " 'yo soy el jefe, caracortada',\n", - " 'estar en la fiesta es lo que más me agrada',\n", - " 'pero más me agrada estar haciendo feria',\n", - " 'porque conozco muy bien la miseria',\n", - " 'venir desde abajo aquí mucho cuesta',\n", - " 'trabajo bien y de forma honesta',\n", - " 'sé que a los contras les pica y molesta',\n", - " 'cuando ingresa dinero en la empresa',\n", - " 'dinero, dinero, esto nunca cesa',\n", - " 'mami, confiesa, estás enamorada',\n", - " 'la traigo loca con pura morada',\n", - " 'toda mareada, pero mojada',\n", - " 'sin su tajada se hace la enojada',\n", - " 'all my bitches 10, yeah they centerfolds',\n", - " 'you know what it is if they ever fold',\n", - " \"i got so much paper we ain't acting right\",\n", - " \"swimmin' in this money man, we livin' nice\",\n", - " 'all my bitches 10, yeah they centerfolds',\n", - " 'you know what it is if they ever fold',\n", - " \"i got so much paper we ain't acting right\",\n", - " \"swimmin' in this money man, we livin' nice\",\n", - " 'aquellos que maldicen no dejo que pisen',\n", - " 'mi nombre respetan, mejor analicen',\n", - " 'con quienes se meten, bola de aprendices',\n", - " 'nosotros movemos en varios países',\n", - " 'feliz el negocio, feliz sus narices',\n", - " 'la muerte compa, llega sin que avise',\n", - " 'por eso siempre vivo como quise',\n", - " 'con polvos mágicos para que hechice',\n", - " 'gasolina y diesel pa’ que más te envicie',\n", - " 'ahorita no se me ofrece que tu bitch me acaricie',\n", - " 'a mí dame billetes que bitches tengo miles',\n", - " '(we got the bitches by the millions)',\n", - " 'el perico en los calcetines',\n", - " 'all my bitches 10, yeah they centerfolds',\n", - " 'you know what it is if they ever fold',\n", - " \"i got so much paper we ain't acting right\",\n", - " \"swimmin' in this money man, we livin' nice\",\n", - " 'que chingue a su madre el perro que me ladre y juro por mi padre',\n", - " 'cuido el negocio y ando de traje y cargo con un sastre',\n", - " 'anduve en la calle, dormí en el suelo, también en un catre',\n", - " 'antes era un desastre, hoy hago millones vendiendo zacate',\n", - " 'all my bitches 10, yeah they centerfolds (all my bitches 10 yeah)',\n", - " 'you know what it is if they ever fold (if they ever fold baby)',\n", - " \"i got so much paper we ain't acting right (we ain't acting bae no no)\",\n", - " \"swimmin' in this money man, we livin' nice\",\n", - " 'all my bitches 10, yeah they centerfolds',\n", - " 'you know what it is if they ever fold',\n", - " \"i got so much paper we ain't acting right\",\n", - " \"swimmin' in this money man, we livin' nice\",\n", - " 'relax, relax (relax, relax)',\n", - " 'relax, relax (relax, relax)',\n", - " 'blowing good with my bitch, i get high (i get high)',\n", - " 'relax, relax (relax, relax)',\n", - " 'relax, relax (relax, relax)',\n", - " \"blowing kush with my fuckin' bitch, i get high (i get high)\",\n", - " 'relax, relax (relax, relax)',\n", - " 'relax, relax (relax, relax)',\n", - " 'blowing kush with my bitch, i get high (i get high)',\n", - " 'relax, relax, relax',\n", - " 'relax, relax, relax (relax, relax)',\n", - " 'blowing good with my bitch',\n", - " 'arriba, abajo, nunca en el medio, no seré uno más (más)',\n", - " ...]},\n", - " 'rock': {'meta': {'train_data': ['baila, let me see you dance, baby',\n", - " 'yeah',\n", - " 'let me see you dance, baby',\n", - " 'come on',\n", - " 'creo en los milagros desde que te vi',\n", - " 'en esta noche de tequila boom-boom',\n", - " 'eres tan sexy, eres sexy thing',\n", - " 'mis ojos te persiguen sólo a ti',\n", - " 'yeah',\n", - " 'ohh',\n", - " 'y debe haber un caos dentro de ti',\n", - " 'para que brote así una estrella que baila',\n", - " 'infierno y paraíso dentro de ti',\n", - " 'la luna es un sol, mira cómo brilla',\n", - " 'baby, the night is on fire',\n", - " 'seamos fuego en el cielo',\n", - " 'llamas en lo oscuro',\n", - " 'what you say (woo!)',\n", - " 'baila (yeah), baila morena (yeah)',\n", - " 'bajo esta luna llena (yes)',\n", - " \"under the moonlight (come on, y'all)\",\n", - " 'under the moonlight',\n", - " 'ven chica, ven loca, dame tu boca (yeah)',\n", - " 'que en esta noche cualquier cosa te toca (woo!)',\n", - " 'mi corazon se revienta y no aguanto',\n", - " 'morena rebuena te quiero yo tanto',\n", - " 'baby, the night is on fire',\n", - " 'seamos fuego en el cielo',\n", - " 'llamas en lo oscuro',\n", - " 'what you say (woo!)',\n", - " 'baila (yeah), baila morena (yeah)',\n", - " 'bajo esta luna llena (yes)',\n", - " 'under the moonlight (come on)',\n", - " 'yeah',\n", - " 'hey baila (hey baila)',\n", - " 'under the moonlight (come on)',\n", - " 'bajo esta luna llena (you got it)',\n", - " \"baila morena (you got it goin', come on girl)\",\n", - " 'yeah, yeah, yeah',\n", - " 'hey yeah, yeah, yeah',\n", - " 'uhh-uuh-uuh-uuh',\n", - " 'hey yeah, yeah, yeah',\n", - " 'set me free, set me free',\n", - " \"you got me hurtin' so bad, so bad\",\n", - " '(oh, no, no, no, no, no)',\n", - " 'you got me so, so bad',\n", - " 'what you say?',\n", - " '(what you say?)',\n", - " 'baila (yeah), baila morena (yeah)',\n", - " 'bajo esta luna llena (one more time)',\n", - " 'under the moonlight',\n", - " '(under moonlight)',\n", - " 'hey baila (baila)',\n", - " \"under the moonlight (you got it goin', girl)\",\n", - " 'bajo esta luna llena (baila morena)',\n", - " 'baila morena (come on, girl, come on)',\n", - " 'bajo esta luna llena (yeah)',\n", - " 'bajo esta luna llena (yeah, yeah, yeah)',\n", - " 'bajo esta luna llena (yeah, set me free, yeah)',\n", - " 'under the moonlight',\n", - " 'yeah',\n", - " \"come on, y'all\",\n", - " 'los problemas del futuro',\n", - " 'ya los tuve ayer',\n", - " 'caminando con mi madre',\n", - " 'a la orilla del mar',\n", - " 'y los diagramas del futuro',\n", - " 'ya los vi ayer',\n", - " 'danzando en el techo de mi cuarto',\n", - " 'mientras yacía inmóvil sintiendo',\n", - " 'la tierra girar',\n", - " 'en mis venas',\n", - " 'en mis huesos',\n", - " 'en mi cabeza',\n", - " 'los problemas del futuro',\n", - " 'ya los tuve ayer',\n", - " 'los diagramas del futuro',\n", - " 'de camino a la escuela',\n", - " 'conocí al anciano',\n", - " 'que me mostró el recorrido',\n", - " 'por los cuerpos sagrados',\n", - " 'y las matanzas del futuro',\n", - " 'ya las vi ayer',\n", - " 'el amanecer de las máquinas',\n", - " 'aplastando a los campesinos',\n", - " 'y en un mar de neón',\n", - " 'nos ahogamos',\n", - " 'los últimos días',\n", - " 'en los cielos del futuro',\n", - " 'en las ruinas dеl futuro',\n", - " 'los problemas del futuro ya los tuve ayеr',\n", - " 'en los cielos del futuro',\n", - " 'en las ruinas del futuro',\n", - " 'los problemas del futuro ya los tuve ayer',\n", - " 'en los cielos del futuro',\n", - " 'en las ruinas del futuro',\n", - " 'en las montañas del futuro',\n", - " 'la puerta al ayer',\n", - " 'the problems of the future',\n", - " 'the problems of the future',\n", - " 'i had them yesterday',\n", - " 'hand in hand with my mother',\n", - " 'walking by the sea',\n", - " 'the diagrams of the future',\n", - " 'i saw them yesterday',\n", - " 'dancing in the ceiling of my room',\n", - " 'while i was laying still',\n", - " 'feeling the earth spin',\n", - " 'in my veins',\n", - " 'in my bones',\n", - " 'in my head',\n", - " 'the problems of the future',\n", - " 'i got them yesterday',\n", - " 'the diagrams of the future',\n", - " 'on my way to the school',\n", - " 'i met the old man',\n", - " 'that showed me the path',\n", - " 'through the holy bodies',\n", - " 'and the massacres of the future',\n", - " 'i saw them yesterday',\n", - " 'the dawn of the machines',\n", - " 'crushing the peasants',\n", - " 'and in a neon sea',\n", - " 'we drowned the last days',\n", - " 'in the skyes of the future',\n", - " 'in the ruins of the future',\n", - " 'the problems of the future i got them yesterday',\n", - " 'in the skies of the future',\n", - " 'in the ruins of the future',\n", - " 'the problems of the future i got them yesterday',\n", - " 'in the skies of the future',\n", - " 'in the ruins of the future',\n", - " 'in the mountains of the future',\n", - " 'the door to yesterday',\n", - " 'mama, mamate a un cabron',\n", - " 'le vole la choya con un pistolón',\n", - " 'mama, con el dedo en el gatillo',\n", - " 'le meti 6 balas al cabrón por el fundillo',\n", - " 'mama, sabes si vienes por ahí',\n", - " 'te digo \"que te pasa?\" si te metes con mi pussy',\n", - " 'my man, you better get a job',\n", - " 'porque este espacio pertenece al molotov',\n", - " 'muy muy tarde que le llego la hora',\n", - " 'pero ese culero tenia que morirse ahora',\n", - " 'y chilla que chilla y llora que llora',\n", - " 'solo se encontenta cuando esta con su señora',\n", - " 'yo tengo a mi clika que esta pocasumadre',\n", - " 'y tu no tienes nada, ni perro que te ladre',\n", - " 'mama mama mamate esta',\n", - " 'mama mama nada te cuesta',\n", - " 'mama mama mate a una perra',\n", - " 'era morena pero se pinto de guera',\n", - " \"le subi la falda, man you should've seen it\",\n", - " 'el tapete no combinaba con la cortina',\n", - " 'what am i gonna do? oh tell me mama',\n", - " 'cuz i cut her into pieces',\n", - " 'like my name is jeffrey dahmer',\n", - " 'now they wanna hunt me down',\n", - " \"butah in méxico you won't see me around\",\n", - " 'mama, mama, sabe tu que pasa?',\n", - " 'mama, mama, molotov esta en la casa',\n", - " 'vi la silueta de una verga',\n", - " 'in the bush in the bush',\n", - " 'would you do the fandango',\n", - " 'thunderbolts and lightning',\n", - " 'very very frightening me',\n", - " 'guacareo, guacareo, guacareo miralo',\n", - " 'yo soy el mondra y nadie me ama',\n", - " 'pobre gordito, tiene almorranas',\n", - " 'sperm in your wife in her mouth and chichis',\n", - " 'easy cum easy go wouldya gimme a blow',\n", - " 'it smells like \"ohh\" would you just gimme a blow',\n", - " 'it smells like \"ohh\" would you just gimme a blow',\n", - " 'gimme one more blow blow',\n", - " 'me babaluba',\n", - " 'mamalamia mamalamia',\n", - " 'ya me hartaste, por favor',\n", - " 'miguel seguro gotta pepa put aside for me',\n", - " 'for me, for me!',\n", - " 'if you think you can score with me kiss my ass!',\n", - " 'el que no se la jale sera un animal!',\n", - " \"ohhh baby can't do this to me baby\",\n", - " 'i just gotta get out, i just gotta get out',\n", - " 'i just gotta get right outta here!',\n", - " 'silence is torture, is torture',\n", - " 'when we don’t say how we feel',\n", - " '(when we don’t say how we feel)',\n", - " 'if we don’t learn to communicate',\n", - " 'things are gonna fall apart',\n", - " '(things are gonna fall apart)',\n", - " 'all i ask is for you to please give us just one chance',\n", - " 'to start something that we both never had',\n", - " 'until then we won’t know what it would be like',\n", - " 'to have something real for the first time',\n", - " 'let me know when it’ll be a good time to give you medicine',\n", - " 'a little dose, a little remedy of true tenderness',\n", - " 'don’t you know that true love is all we need',\n", - " 'don’t give up ‘cause i won’t give up on you',\n", - " 'no',\n", - " 'no, no',\n", - " 'no, no',\n", - " 'no',\n", - " 'si te encuentras en silencio, llegará la obscuridad',\n", - " '(llegará la obscuridad)',\n", - " 'aprende a comunicarte pa’ que sepas la verdad',\n", - " '(pa’ que sepas la verdad)',\n", - " 'sólo pido que nos des esa oportunidad',\n", - " 'quiero que sepas que de mi sí aprenderás',\n", - " 'te llevaré por buen camino lo verás',\n", - " 'sobrarán buenas memorias sin parar',\n", - " 'let me know when it’ll be a good time to give you medicine',\n", - " 'a little dose, a little remedy of true tenderness',\n", - " 'don’t you know that true love is all we need',\n", - " 'don’t give up ‘cause i won’t give up on you',\n", - " 'no',\n", - " 'vamos nena no te me hagas de rogar',\n", - " 'lo que quiero es poderte conquistar',\n", - " 'cada noche y día solo estoy pensando',\n", - " 'pues tu amor ya lo sigo yo añorando',\n", - " 'como quisiera poder tenerte a mi lado',\n", - " 'darte un beso para seguirte yo amando',\n", - " 'ya no puedo dejar de pensar en ti',\n", - " 'mira que loco me traes tú a mi',\n", - " 'sólo pido que nos des esa oportunidad',\n", - " 'quiero que sepas que de mi sí aprenderás',\n", - " 'te llevaré por buen camino lo verás',\n", - " 'sobrarán buenas memorias sin parar',\n", - " 'let me know when it’ll be a good time to give you medicine',\n", - " 'a little dose, a little remedy of true tenderness',\n", - " 'don’t you know that true love is all we need',\n", - " 'don’t give up ‘cause i won’t give up on you',\n", - " 'no',\n", - " 'no, no',\n", - " 'no, no',\n", - " 'no',\n", - " 'mi amor',\n", - " 'corazón',\n", - " 'beauty and lies hide in plain sight',\n", - " 'enters the eyes but distorts the view',\n", - " 'passion and fire, leaving behind',\n", - " 'emotional scars and exit wounds',\n", - " 'i am the word of god',\n", - " 'i have a will that cannot be stopped',\n", - " 'i am the bringer of shame',\n", - " 'i am a force that cannot be tamed',\n", - " 'i am the law of nature, break me and meet your maker',\n", - " 'all that is taken shall return to us all',\n", - " \"i am the smoke and mirror, i'm the the saint among sinners\",\n", - " 'all that is evil will make good of us all',\n", - " 'i am the curse of love',\n", - " 'i have a will that cannot be stopped',\n", - " 'i am the ash and flame',\n", - " 'i am the one that cannot be named',\n", - " 'bésame amor. deseo es todo lo que llena mi corazón',\n", - " 'estoy girando fuera de control contigo y tus ojos',\n", - " 'por qué no nos escapamos juntos aquí y ahora, sí?',\n", - " 'no necesitamos mirar atrás nunca más, mi querido',\n", - " 'todo lo que necesitamos es el uno para el otro',\n", - " 'i am the law of nature, break me and meet your maker',\n", - " 'all that is taken shall return to us all',\n", - " 'blood will be drawn by rose and thorns',\n", - " \"she's got a pretty persuasion\",\n", - " 'podemos estar juntos por siempre, vivir una buena vida',\n", - " \"i am the smoke and mirror, i'm the the saint among sinners\",\n", - " 'all that is evil will make good of us all',\n", - " 'lovers are torn, names will be scorned',\n", - " 'caught in a dangerous liaison',\n", - " 'i am the word of god, i cannot be stopped',\n", - " 'mi amor',\n", - " 'corazón',\n", - " 'the news of your deceit rips out the world from beneath my feet',\n", - " 'i gave you all the world and more - you lying, fucking whore',\n", - " 'la multitud a nuestro alrededor, con ojos fijos en nuestra danza',\n", - " 'aliento nervioso, todos hipnotizados al ritmo de nuestra romanza',\n", - " 'el júbilo en sus rostros, parpadean bajo la luz de las velas',\n", - " 'la pasión nos atrapa, coge mi mano querido, casi vuelas',\n", - " 'y las bebidas fluyen aún más rápido, todo explotando en el ardor de la canción',\n", - " 'ya nadie puede resistirse, todos impulsados siguen nuestro son',\n", - " 'de pronto, en el ardor del momento, se hace el silencio',\n", - " 'la puerta se abre de par en par, revelando al hombre violento',\n", - " 'sus ojos llameantes con la furia de un lunático',\n", - " 'camina hacia nosotros, pistola en mano, a reimponer su edicto',\n", - " 'tomando el arma, apunta al pecho de mi querido',\n", - " 'gatillo apretado, la bala vuela, roto el hechizo',\n", - " 'y atraviesa el pecho de mi amado, dejando su corazón de muerte herido',\n", - " 'atrás su espalda ya, otro pecho atraviesa, esta vez, el mío',\n", - " 'mi amor',\n", - " 'corazón',\n", - " 'hola, holala, holala',\n", - " 'hola, just come as you are',\n", - " 'matadero matadero',\n", - " 'cuentame tu historia ya',\n", - " 'ganadero, ganadero',\n", - " \"en un lazo ven pa'ca\",\n", - " 'ya la negra está bailando',\n", - " 'y está libre de empezar',\n", - " 'en tus ojos está la gloria',\n", - " 'me amor me va a llevara',\n", - " 'hola, holala, holala',\n", - " 'hola, just come as you are',\n", - " 'hola, holala, holala',\n", - " 'hola, just come as you are',\n", - " 'matadero matadero',\n", - " 'cuentame tu historia ya',\n", - " 'ganadero,ganadero',\n", - " \"en un lazo ven pa'ca\",\n", - " 'ya la negra está bailando',\n", - " 'y está libre de empezar',\n", - " 'en tus ojos está la gloria',\n", - " 'me amor me va a llevara',\n", - " 'hola, holala, holala',\n", - " 'hola, just come as you are',\n", - " 'hola, holala, holala',\n", - " 'hola, just come as you are',\n", - " 'hola, holala, holala',\n", - " 'hola, just come as you are',\n", - " 'hola, holala, holala',\n", - " 'hola, just come as you are',\n", - " 'hola, holala, holala',\n", - " 'hola, just come as you are',\n", - " 'hola, holala, holala',\n", - " 'hola, just come as you are',\n", - " 'al pastor me echo una gringa',\n", - " 'mas lechuga a la pechuga',\n", - " 'muslo aquí muslo acá y papas',\n", - " 'a la francesa',\n", - " 'quisiera comer mas de esa',\n", - " 'pero esta mas buena la hamburguesa',\n", - " 'ella quiere un king de polla',\n", - " 'sushilitto no la llena',\n", - " 'traiga un caldo pal tlalpeño',\n", - " 'un spagetti al albañil',\n", - " 'tráele un trío de mac a anita',\n", - " 'y tráete un combo para mi',\n", - " 'pero mira nomas que tortas',\n", - " 'oh se ven tan horrorosas',\n", - " 'cubana o una hawaiana',\n", - " 'sin chile y sin cebollas',\n", - " 'no quiero comer mas kentuchy chota',\n", - " 'o pincho a la española',\n", - " 'la de sanders mas discreta',\n", - " 'no revela su receta',\n", - " 'están muy buenas sus garnachas',\n", - " 'pero quiero echar bailón',\n", - " 'quiere su chorizo en papas',\n", - " 'o en barras de camarón',\n", - " 'changuich a changuich a',\n", - " 'changuich a la chichona...',\n", - " \"now if you're hungry for some bologna\",\n", - " 'and you got some buns that you wanna show me',\n", - " 'open up wide you can eat',\n", - " \"this oscar meyer that's really boney\",\n", - " 'i want to get down into your juju bees',\n", - " \"and i think i'm gonna flick em'\",\n", - " 'you tities are smelin like chocolate chip',\n", - " \"ice-cream n' i think i wanna lick em\",\n", - " 'i got some hot beef for that rump roast',\n", - " 'but you gotta say please',\n", - " \"i'll dig into that thigh everytime but\",\n", - " 'but hold the cottage cheese',\n", - " 'and for dessert we can do the works',\n", - " \"i'll put my whip cream in your pie hole\",\n", - " \"and don't flinch when you feel a pinch on\",\n", - " 'that pretty litlle taco',\n", - " \"cuz i've tried to pry\",\n", - " 'a bearded clam that would no budge',\n", - " 'so i went around the corner to keep on trying',\n", - " 'and i got a little fudge',\n", - " 'changuich a changuich a',\n", - " 'changuich a la chichona',\n", - " 'changuich a changuich a',\n", - " 'changuicha la chichona',\n", - " 'para papas las de randy',\n", - " 'pero no las presta',\n", - " 'mas mueve un par de tetas',\n", - " 'que un chinguero de carretas',\n", - " 'traiga un espaggeti al burro',\n", - " 'con una cerveza en lata',\n", - " 'la de malas que en la horchata',\n", - " 'le pisen su quinta pata',\n", - " 'guardenle unos chilaquiles',\n", - " \"pa' mañana el desayuno\",\n", - " 'y unos huevos divorciados',\n", - " 'no queremos enredarnos',\n", - " 'bimbo blanco o integral',\n", - " 'no me importa me da igual',\n", - " 'papa chapata mama chapata',\n", - " 'y aquí están sus chapatines',\n", - " 'dinotriple o brontodoble',\n", - " 'quarter pounder whopper doble',\n", - " 'quiero hacerle un sandwichito',\n", - " 'baile mas apretadito',\n", - " 'mejor que la lambada',\n", - " 'una picada a la italiana',\n", - " 'quiero bailar con la bola',\n", - " 'pero con la mas chichona',\n", - " 'changuich a changuich a',\n", - " 'changuich a la chichona',\n", - " '(changuich) changuich a (changuich) changuicha',\n", - " '(changuich) changuicha la chichona',\n", - " 'verdes y negras espesuras, parajes pelados',\n", - " 'río vegetal en sí mismo anudado',\n", - " 'entre plomizos edificios transcurre sin moverse',\n", - " 'y allá donde la misma luz se vuelve duda',\n", - " 'y la piedra quiere ser sombra',\n", - " 'se disipa central park',\n", - " \"don't cross central park at night\",\n", - " 'en central park',\n", - " \"don't cross central park at night\",\n", - " 'cae el día, cae el día',\n", - " 'la noche se enciende',\n", - " 'alexinsky traza un rectángulo imantado',\n", - " 'trampa de líneas coral de tinta',\n", - " 'adentro hay una bestia caída',\n", - " 'dos ojos y una rabia enroscada',\n", - " 'en central park',\n", - " \"don't cross central park at night\",\n", - " 'en central park',\n", - " \"don't cross central park at night\",\n", - " 'no hay puertas de entrada y salida',\n", - " 'encerrada en un anillo de luz',\n", - " 'la bestia de hierba duerme con los ojos abiertos',\n", - " 'la luna desentierra y con navajas',\n", - " 'el agua de las sombras se ha vuelto fuego verde',\n", - " 'en central park',\n", - " \"don't cross central park at night\",\n", - " 'en central park',\n", - " \"don't cross central park at night\",\n", - " 'no hay puertas de entrada pero todos',\n", - " 'en mitad de la frase colgada del teléfono',\n", - " 'de lo alto del chorro del silencio o la risa',\n", - " 'de la jaula de vidrio del ojo que nos mira',\n", - " 'todos vamos cayendo en el espejo',\n", - " 'es central park',\n", - " 'el espejo es de piedra y la piedra ya es sombra',\n", - " 'hay dos ojos del color de la cólera',\n", - " 'un anillo de frío, un cinturón de sangre',\n", - " 'hay el viento que esparce los reflejos',\n", - " 'de alicia desmembrada en el estanque',\n", - " 'decentral park',\n", - " \"don't cross central park at night\",\n", - " 'en central park',\n", - " \"don't cross central park at night\",\n", - " 'abre los ojos ya estás adentro de ti mismo',\n", - " 'en un barco de monosílabos navegas',\n", - " 'por el estanque espejo y desembarcas',\n", - " 'en el muelle de cobra es un taxi amarillo',\n", - " 'que te lleva al país de las llamas',\n", - " 'a través de central park',\n", - " \"don't cross central park at night\",\n", - " 'central park en la noche',\n", - " \"don't cross central park at night\",\n", - " \"don't cross central park at night\",\n", - " \"don't cross central park at night\",\n", - " \"don't cross central park at night\",\n", - " \"don't cross central park at night\",\n", - " \"don't cross central park at night\",\n", - " \"don't cross central park at night\",\n", - " \"don't cross central park at night\",\n", - " \"don't cross central park at night\",\n", - " \"don't cross central park at night\",\n", - " \"don't cross central park at night\",\n", - " 'estoy mirando al cielo pero está nublado',\n", - " 'estas son mis vistas, dime ¿cuáles son las tuyas?',\n", - " 'perdí la paciencia, no tengo carisma',\n", - " 'no soy tu mesías, icono del underground',\n", - " 'esta mierda no se puede salvar',\n", - " 'vine a por un aplauso, la cosa se torció',\n", - " 'más adictivo que la cocaína y no sé yo',\n", - " 'me augura un gran un futuro, me espera algo mejor',\n", - " 'una delante y otra atrás',\n", - " 'bien puesto el cinturón',\n", - " 'la calle está vacía y mi cama también',\n", - " 'creo que vamos a invadirlas',\n", - " 'ambas opciones me complacen',\n", - " 'si es comiendo de su boca de león',\n", - " 'la mente bien agitada y muy frío el corazón',\n", - " 'esta mierda no se puede salvar',\n", - " '// english',\n", - " 'bellavista',\n", - " \"i'm looking at the sky but it's cloudy\",\n", - " 'these are my views, tell me, what are yours?',\n", - " 'i lost my patience, i’m not charismatic',\n", - " \"i'm not your messiah nor an underground icon\",\n", - " 'this shit is not to be saved',\n", - " 'i was looking for an applause but everything messed up',\n", - " \"it became more addictive than cocaine and i don't know if\",\n", - " 'a great future portends me, something better awaits me',\n", - " 'empty-handed but well dressed',\n", - " 'streets are empty, as well as my bed',\n", - " 'i think it’s time to invade them',\n", - " 'both options please me',\n", - " \"if it's eating from her lion mouth\",\n", - " 'an agitated mind and very cold heart',\n", - " 'this shit is not to be saved',\n", - " 'mama, mamate a un cabron',\n", - " 'le vole la choya con un pistolón',\n", - " 'mama, con el dedo en el gatillo',\n", - " 'le meti 6 balas al cabrón por el fundillo',\n", - " 'mama, sabes si vienes por ahí',\n", - " 'te digo \"que te pasa?\" si te metes con mi pussy',\n", - " 'my man, you better get a job',\n", - " 'porque este espacio pertenece al molotov',\n", - " 'muy muy tarde que le llego la hora',\n", - " 'pero ese culero tenia que morirse ahora',\n", - " 'y chilla que chilla y llora que llora',\n", - " 'solo se encontenta cuando esta con su señora',\n", - " 'yo tengo a mi clika que esta pocasumadre',\n", - " 'y tu no tienes nada, ni perro que te ladre',\n", - " 'mama mama mamate esta',\n", - " 'mama mama nada te cuesta',\n", - " 'mama mama mate a una perra',\n", - " 'era morena pero se pinto de guera',\n", - " \"le subi la falda, man you should've seen it\",\n", - " 'el tapete no combinaba con la cortina',\n", - " 'what am i gonna do? oh tell me mama',\n", - " 'cuz i cut her into pieces',\n", - " 'like my name is jeffrey dahmer',\n", - " 'now they wanna hunt me down',\n", - " 'butah in mexico you won’t see me around',\n", - " 'mama mama sabe tu que pasa?',\n", - " 'mama mama molotov esta en la casa',\n", - " 'vi la silueta de una verga',\n", - " 'in the bush in the bush',\n", - " 'would you do the fandango',\n", - " 'thunderbolts and lightning',\n", - " 'very very frightening me',\n", - " 'guacareo, guacareo, guacareo miralo',\n", - " 'magnifico yo soy un naco y nadie me ama',\n", - " 'pinche chamaco no tienes lana',\n", - " 'sperm in your wife in her mouth and chichis',\n", - " 'easy cum easy go wouldya gimme a blow',\n", - " 'it smells like \"ohh\" would you just gimme a blow',\n", - " 'it smells like \"ohh\" would you just gimme a blow',\n", - " 'gimme one more blow blow',\n", - " 'me babaluba',\n", - " 'mamalamia mamalamia',\n", - " 'ya me hartaste, por favor',\n", - " 'miguel seguro gotta pepa put aside for me',\n", - " 'for me, for me!',\n", - " 'if you think you can score with me kiss my ass!',\n", - " 'el que no se la jale sera un animaaal!',\n", - " \"ohhh baby can't do this to me baby\",\n", - " 'i just gotta get out, i just gotta get out',\n", - " 'i just gotta get right outta here!',\n", - " 'no me pidas que llore por ti',\n", - " 'alguna vez te vi sometido',\n", - " 'tus ojos caen y flotan en la oscuridad',\n", - " 'alúmbrame que estoy bien perdido',\n", - " 'y fue una vez, sí, solo una vez',\n", - " 'que te dije la verdad',\n", - " 'sí, solo una vez, hinchado en alcohol',\n", - " 'perdido en la noche, soñando con volver',\n", - " 'con volver',\n", - " 'y solo quiero que me des un poco de sinceridad',\n", - " 'y solo quiero que me des un poco de sinceridad',\n", - " 'déjame verte caer',\n", - " 'déjame entrar en tus sueños, no',\n", - " 'no, no es cierto que',\n", - " 'robaste el grito final',\n", - " 'que está a la orilla del viento, no',\n", - " 'deja me conecto',\n", - " 'déjame verte caer',\n", - " 'déjame entrar en tus sueños, no',\n", - " 'no, no es cierto que',\n", - " 'robaste el grito final',\n", - " 'que está a la orilla del viento, no',\n", - " 'deja me conecto',\n", - " 'no me pidas que llore por ti',\n", - " 'alguna vez te vi sometido',\n", - " 'tus ojos caen y flotan en la oscuridad',\n", - " 'alúmbrame que estoy bien perdido',\n", - " 'y fue una vez, sí, solo una vez',\n", - " 'que te dije la verdad',\n", - " 'sí, solo una vez, hinchado en alcohol',\n", - " 'perdido en la noche, soñando con volver',\n", - " 'con volver',\n", - " 'y solo quiero que me des un poco de sinceridad',\n", - " 'solo quiero que me des un poco de sinceridad',\n", - " 'déjame verte caer',\n", - " 'déjame entrar en tus sueños, no',\n", - " 'no, no es cierto que',\n", - " 'robaste el grito final que está a la orilla del viento, no',\n", - " 'deja me conecto',\n", - " 'déjame verte caer',\n", - " 'déjame entrar en tus sueños, no',\n", - " 'no, no es cierto que',\n", - " 'robaste el grito final',\n", - " 'que está a la orilla del viento, no',\n", - " 'deja me conecto',\n", - " '(shine on you people of the earth)',\n", - " 'déjame verte caer',\n", - " 'déjame entrar en tus sueños, no',\n", - " 'no, no es cierto que',\n", - " '(try to make it right, love is the way)',\n", - " 'robaste el grito final que está a la orilla del viento, no',\n", - " 'deja me conecto',\n", - " '(shine on you people of the earth)',\n", - " 'déjame verte caer',\n", - " 'déjame entrar en tus sueños, no',\n", - " 'no, no es cierto que',\n", - " '(try to make it right, love is the way)',\n", - " 'robaste el grito final que está a la orilla del viento, no',\n", - " 'deja me conecto',\n", - " '(shine on you people of the earth)',\n", - " 'déjame verte caer',\n", - " 'déjame entrar en tus sueños, no',\n", - " 'no, no es cierto que',\n", - " '(try to make it right, love is the way)',\n", - " 'robaste el grito final que está a la orilla del viento, no',\n", - " 'deja me conecto',\n", - " '(shine on you people of the earth)',\n", - " 'déjame verte caer',\n", - " 'déjame entrar en tus sueños, no',\n", - " 'no, no es cierto que',\n", - " '(try to make it right, love is the way)',\n", - " 'robaste el grito final que está a la orilla del viento, no',\n", - " 'deja me conecto',\n", - " '(shine on you people of the earth)',\n", - " 'déjame verte caer',\n", - " 'déjame entrar en tus sueños, no',\n", - " 'no, no es cierto que',\n", - " '(try to make it right, love is the way)',\n", - " 'robaste el grito final que está a la orilla del viento, no',\n", - " 'deja me conecto',\n", - " '(shine on you people of the earth)',\n", - " 'déjame verte caer',\n", - " 'déjame entrar en tus sueños, no',\n", - " 'no, no es cierto que',\n", - " '(try to make it right, love is the way)',\n", - " 'robaste el grito final que está a la orilla del viento, no',\n", - " 'deja me conecto',\n", - " '(shine on you people of the earth)',\n", - " 'déjame verte caer',\n", - " 'déjame entrar en tus sueños',\n", - " '\"je vais employer des mots de cette expression de tendresse. tout ça est faux: c\\'est seulement ce que la musique elle-même est.\"',\n", - " '\"?\"',\n", - " 'poison made our days and we slept',\n", - " 'and we slept into the sulfur',\n", - " 'whispering words in the black sands',\n", - " 'whispering worlds in the dark stands',\n", - " 'away, at men’s last days',\n", - " 'with a heavy walk',\n", - " 'those traces will last',\n", - " 'in these lands opened to the depths, we run',\n", - " \"who will outlive us to tell what we've been?\",\n", - " \"away, at men's last days\",\n", - " 'with a heavy walk',\n", - " '\" parce que n’oubliez pas une chose, parce que la grande inspiratrice, c\\'est la mort... si vous ne mettez pas votre peau sur la table, vous n\\'avez rien. il faut payer.\"',\n", - " 'i too will disappear',\n", - " 'in the holes of piss and cum',\n", - " 'wrote at any price a letter',\n", - " 'on the wall of my years',\n", - " \"we'll disappear\",\n", - " 'poison made our days and we slept',\n", - " 'and we slept into the sulfur',\n", - " 'whispering words in the black sands',\n", - " 'whispering worlds in the dark stand',\n", - " 'dark stand!',\n", - " '\"cada noche al crepúsculo, un pájaro se encaramaba sobre la rama más alta. tejía su nido, cantaba, y cuando llegaba la noche, planeo se lleva. una noche después de que el pájaro se fue, un espectro entró en el cuarto y despertó el niño. le dijo: “súbete sobre esta rama muy arriba, y tráeme el nido que encontrarás.” el niño se subió, tomó el nido, y lo puso debajo de su camisa. el nido contra su piel era suave. volvió a bajar, se lo dio al espectro qui le murmuró: \\'mira… este nido está tejido con los cabellos de una difunta amada. quémalo ahora para mí.\\'\"',\n", - " 'we fade, we run]',\n", - " \"don't give up, lake keepers\",\n", - " 'we will swim again',\n", - " 'we will swim again',\n", - " \"don't give up, lake keepers\",\n", - " 'we will swim again',\n", - " 'watchmen, watchmen on the banks',\n", - " '\"el nido chisporroteó, brilló en la noche, y cuando un soplo de aire disipó las últimas cenizas, el espectro desapareció. el niño supo que en él también, un muerto había tejido su nido.\"',\n", - " 'letra de \"tons qué (so what)\"',\n", - " 'usted con semejante reino y no lo pone a gobernar',\n", - " \"¿enton's qué mamita? (so what)\",\n", - " '¿me va a coronar o no me va a coronar? (so what)',\n", - " 'usted con semejante panela y no la pone a derretir',\n", - " \"¿enton's qué mamita? (so what)\",\n", - " '¿me da de usted y yo le doy de mí? (so what)',\n", - " 'usted con semejante máquina y no la pone a moler',\n", - " \"¿enton's qué mamita? (so what)\",\n", - " '¿me va a romper o no me va a romper? (so what)',\n", - " 'usted con semejante bocachico y no lo pone a sudar',\n", - " \"¿enton's que bizcocho? (so what)\",\n", - " '¿me va a secar o no me va a secar? (so what)',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'en el éxtasis del flash',\n", - " 'con la estrella omnisexual',\n", - " 'y el glamour acomodado',\n", - " 'a la lujuria de hotel',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'psicodélica alborada',\n", - " 'con amantes entrenadas',\n", - " 'preguntándome en silencio',\n", - " 'en qué ciudad estaré',\n", - " 'desperté con odio y resquemor',\n", - " 'la sombra de la frustración',\n", - " 'se cierne sobre mi cara',\n", - " 'resentido y agrio sin porqué',\n", - " 'fui recordando el drama que soñé',\n", - " 'soñé ser crítico de rock',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'si querés un empujón',\n", - " 'te invito a mi camarín',\n", - " 'con hermosas mujeres',\n", - " 'que regalan desnudez',\n", - " 'desperté con odio y resquemor',\n", - " 'la sombra de la frustración',\n", - " 'se cierne sobre mi cara',\n", - " 'resentido y agrio sin porqué',\n", - " 'fui recordando el drama que soñé',\n", - " 'soñé ser crítico de rock',\n", - " 'ser el vapor de fantasías',\n", - " 'no me dejará llorar',\n", - " 'la fiesta que nunca termina',\n", - " 'y la amistad artificial',\n", - " 'pobre infeliz, nunca descansará',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'quiero ser',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'tan freak, tan freak',\n", - " 'tan freak y tan popular quiero ser',\n", - " 'letra de \"frijolero (mtv unplugged)\"',\n", - " 'verso 1: (paco ayala)',\n", - " 'yo ya estoy hasta la madre',\n", - " 'de que me pongan sombrero',\n", - " 'escucha entonces cuando digo',\n", - " 'no me llames frijolero',\n", - " 'y aunque exista algún respeto',\n", - " 'y no metamos las narices',\n", - " 'nunca inflamos la moneda',\n", - " 'haciendo guerra a otros países',\n", - " 'te pagamos con petróleo',\n", - " 'e intereses nuestra deuda',\n", - " 'mientras tanto no sabemos',\n", - " 'quien se queda con la feria',\n", - " 'aunque nos hagan la fama',\n", - " 'de que somos vendedores',\n", - " 'de la droga que sembramos',\n", - " 'ustedes son consumidores',\n", - " 'coro:',\n", - " \"don't call me gringo\",\n", - " 'you fucking beaner',\n", - " 'stay on your side',\n", - " 'of that goddamn river',\n", - " \"don't call me gringo\",\n", - " 'you beaner',\n", - " 'no me digas beaner',\n", - " 'mr. puñetero',\n", - " 'te sacaré un susto',\n", - " 'por racista y culero',\n", - " 'no me llames frijolero',\n", - " 'pinche gringo puñetero',\n", - " 'outro:',\n", - " 'arriba méxico, chingadamadre',\n", - " 'verso 2: (randy ebright)',\n", - " 'now i wish i had a dime',\n", - " 'for every single time',\n", - " \"i've gotten stared down\",\n", - " 'for being in the wrong side of town',\n", - " \"and a rich man i'd be\",\n", - " 'if i had that kind of chips',\n", - " 'lately i wanna smack the smiles',\n", - " 'off these racists',\n", - " 'podrás imaginarte desde afuera',\n", - " 'ser un mexicano cruzando la frontera',\n", - " 'pensando en tu familia mientras que pasas',\n", - " 'dejando todo lo que conoces atrás',\n", - " 'si tuvieras tú que esquivar las balas',\n", - " 'de unos cuantos gringos rancheros',\n", - " 'les seguirás diciendo good for nothing wetbacks',\n", - " 'si tuvieras tú que empezar de cero?',\n", - " \"now why don't you look down\",\n", - " 'to where your feet is planted',\n", - " 'that u.s. soil that makes you take shit for granted',\n", - " 'if not for santa ana, just to let you know',\n", - " 'that where your feet are planted would be mexico (correcto)',\n", - " 'coro:',\n", - " \"don't call me gringo\",\n", - " 'you fuckin beaner',\n", - " 'stay on your side',\n", - " 'of that goddamn river',\n", - " \"don't call me gringo\",\n", - " 'you beaner',\n", - " 'no me digas beaner',\n", - " 'mr. puñetero',\n", - " 'te sacaré un susto',\n", - " 'por racista y culero',\n", - " 'no me llames frijolero',\n", - " 'pinche gringo puñetero',\n", - " 'solo de acordeón',\n", - " 'coro:',\n", - " \"don't call me gringo\",\n", - " 'you fuckin beaner',\n", - " 'stay on your side',\n", - " 'of that goddamn river',\n", - " \"don't call me gringo\",\n", - " 'you beaner',\n", - " 'no me digas beaner',\n", - " 'mr. puñetero',\n", - " 'te sacaré un susto',\n", - " 'por racista y culero',\n", - " 'no me llames frijolero',\n", - " 'pinche gringo puñetero',\n", - " '¿pinche gringo que?',\n", - " 'puñetero',\n", - " 'quiero un helado con sabor a tu piel',\n", - " 'quiero pecar con tus pecas de miel',\n", - " 'quiero sentir el limón de tu ser',\n", - " 'tan antojado, no puedo estar de pie',\n", - " \"i don't ever wanna change your mind\",\n", - " 'i wanna be with you the way that you are',\n", - " \"i don't ever wanna change your mind\",\n", - " 'i wanna be with you the way that you are',\n", - " 'yeah-yeah, yeah',\n", - " 'yeah-yeah, yeah',\n", - " 'yeah-yeah, yeah',\n", - " 'yeah-yeah, yeah',\n", - " 'yeah-yeah, yeah',\n", - " 'yeah-yeah, yeah',\n", - " 'yeah-yeah, yeah',\n", - " 'yeah-yeah, yeah',\n", - " 'quiero tocar tus memorias de ayer',\n", - " 'pintar orgasmos rojos en tu pared',\n", - " 'quiero enterrar mi girasol en tu cielo',\n", - " 'quiero yo ser una cana en tu pelo',\n", - " \"i don't ever wanna change your mind\",\n", - " 'i wanna be with you the way that you are',\n", - " \"i don't ever wanna change your mind\",\n", - " 'i wanna be with you the way that you are',\n", - " 'los violan en tantas partes',\n", - " 'en américa latina',\n", - " 'domingo, lunes y martes',\n", - " 'nos imponen militares',\n", - " 'para sojuzgar los pueblos',\n", - " 'dictadores, asesinos',\n", - " 'gorilas y generales',\n", - " 'you kill us all, kill my friends, kill my father, kill my dad',\n", - " 'kill my friends, kill my father, kill my mom, yeah yeah',\n", - " 'in a night of 78',\n", - " 'men of general camps',\n", - " 'kill and panic on the streets',\n", - " 'get us off the goal',\n", - " 'you kill my destiny',\n", - " 'all the days, all the days',\n", - " 'you kill my destiny',\n", - " 'you kill my destiny',\n", - " 'all the days, all the days',\n", - " 'you kill my destiny',\n", - " 'you kill my destiny',\n", - " 'all the days, all the days',\n", - " 'you kill my destiny',\n", - " 'you kill my destiny',\n", - " 'all the days, all the days',\n", - " 'you kill my destiny',\n", - " 'kill my destiny',\n", - " 'you kill my dad, kill my friends, kill my futurе, get out and kill',\n", - " 'kill my friends, kill my dad, kill my future, kill and kill',\n", - " 'in a night of 78',\n", - " 'mеn of general camps',\n", - " 'kill my parents on the streets',\n", - " 'get us off the goal',\n", - " 'you kill my destiny',\n", - " 'all the days, all the days',\n", - " 'you kill my destiny...',\n", - " 'siempre que te pregunto',\n", - " 'que, cuándo, cómo y dónde',\n", - " 'tú siempre me respondes',\n", - " 'quizás, quizás, quizás',\n", - " 'y así pasan los días',\n", - " 'y yo, desesperada',\n", - " 'y tú, tú contestando',\n", - " 'quizás, quizás, quizás',\n", - " \"if you can't make your mind up\",\n", - " \"we'll never get started\",\n", - " \"and i don't want to wind up\",\n", - " 'being parted, broken hearted',\n", - " 'y así pasan los días',\n", - " 'y yo, desesperada',\n", - " 'y tú, tú contestando',\n", - " 'quizás, quizás, quizás',\n", - " 'i am on the rock and then i check a stock',\n", - " 'i have to run like a fugitive to save the life i live',\n", - " \"i'm going to be iron like a lion in zion\",\n", - " \"i'm going to be iron like a lion in zion\",\n", - " 'iron lion zion',\n", - " 'iron lion zion',\n", - " 'lion',\n", - " \"i'm on the run but i have got no gun\",\n", - " 'see they want to be the star',\n", - " 'so they fighting tribal war',\n", - " 'and they saying iron like a lion in zion',\n", - " 'iron like a lion in zion',\n", - " 'iron lion zion',\n", - " 'iron lion zion',\n", - " \"i'm on the rock, running and you running\",\n", - " 'still pappa take a stock, running like a fugitive',\n", - " 'i had to run like a fugitive just to save the life i live, ooh yes',\n", - " \"i've got to be iron like a lion in zion\",\n", - " 'i am going to be iron like a lion in zion',\n", - " 'iron lion zion',\n", - " 'iron lion zion, iron lion zion',\n", - " 'con el valor que me alienta, sobrevivir',\n", - " 'me da fuerzas para combatir',\n", - " 'lucho como un soldado, escribo historias',\n", - " 'revolucionario en busca de victoria',\n", - " 'primero cruzando y alegría',\n", - " 'le ofrezco a la vida victoria divina',\n", - " 'nadie nos para ni nos separa',\n", - " 'somos rayos de luz bailando en la eternidad',\n", - " 'bailando en la eternidad',\n", - " 'ziggy, ziggy, ziggy, ziggy, ziggy',\n", - " 'iron like a lion in zion, iron like a lion in zion',\n", - " 'iron like a lion in zion',\n", - " 'you got to be iron like a lion in zion',\n", - " 'iron lion zion',\n", - " 'iron lion zion',\n", - " 'iron lion zion',\n", - " 'iron lion zion',\n", - " 'if you were around',\n", - " \"i'm safe and sound\",\n", - " \"i'm present\",\n", - " 'but be gone',\n", - " 'and let her pass',\n", - " \"although it's not pleasant\",\n", - " 'i fear what is to come',\n", - " 'so i sing a sad song',\n", - " 'about the things that went wrong',\n", - " 'hola juno es leonor la mama de natalie',\n", - " 'en estos días llame y te deje mensaje',\n", - " 'pero como no he recibido noticias de ustedes',\n", - " 'no se que habrá pasado',\n", - " 'por favor, que natalie llame',\n", - " 'es leonor, natalie que llame',\n", - " 'ciao, gracias',\n", - " 'if you were around',\n", - " \"i'm safe and sound\",\n", - " \"i'm present\",\n", - " 'but be gone',\n", - " 'and let her pass',\n", - " \"although it's not pleasant\",\n", - " 'i fear what is to come',\n", - " 'so i sing a sad song',\n", - " 'about the things that went wrong',\n", - " 'guardián de piedra',\n", - " 'guardián de piedra',\n", - " 'déjame pasar',\n", - " 'esperé por tantos años',\n", - " 'a las puertas de tu morada',\n", - " 'caras alineadas',\n", - " 'vestidas de negro',\n", - " 'quieren ver mi cuerpo en el suelo',\n", - " 'quieren verme caer',\n", - " 'guardián de piedra',\n", - " 'guardián de piedra',\n", - " 'déjanos pasar',\n", - " 'esperamos tantos años',\n", - " 'a las puertas de tu ciudad',\n", - " 'caras alineadas',\n", - " 'vestidas de negro',\n", - " 'quieren ver mi clase en el suelo',\n", - " 'quieren vernos caer',\n", - " 'guardián de piedra',\n", - " 'guardián de piedra',\n", - " 'mi tiempo se acaba',\n", - " 'una esvástica cubre el cielo',\n", - " 'el arco iris negro',\n", - " 'stone guardian',\n", - " 'stone guardian',\n", - " 'let me go through',\n", - " 'i waited so many years',\n", - " 'at the door of your dwelling',\n", - " 'faces in alignment',\n", - " 'dressed in black',\n", - " 'they want to see my body on the ground',\n", - " 'they want to see me fall',\n", - " 'stone guardian',\n", - " 'let us go through',\n", - " 'we waited so many years',\n", - " 'at the door of your city',\n", - " 'faces in alignment',\n", - " 'dressed in black',\n", - " 'they want to see my class on the ground',\n", - " 'they want to see us fall',\n", - " 'stone guardian',\n", - " 'my time is running out',\n", - " 'a swastika covers the sky',\n", - " ...]},\n", - " 'data': ['(inglés)',\n", - " 'row, row, row your boat',\n", - " 'gently down the stream',\n", - " 'merrily',\n", - " 'merrily',\n", - " 'merrily',\n", - " 'merrily',\n", - " 'life is but a dream',\n", - " 'canción infantil',\n", - " '(español)',\n", - " 'rema, rema, rema tu barco',\n", - " 'suavemente corriente abajo',\n", - " 'feliz',\n", - " 'feliz',\n", - " 'feliz',\n", - " 'feliz',\n", - " 'la vida es sólo un sueño',\n", - " \"in the end it's not that easy\",\n", - " 'to breath in',\n", - " 'it’s not that easy',\n", - " \"in the end it's not that easy\",\n", - " 'to breath in',\n", - " \"it's not that easy\",\n", - " 'a new chemtrail',\n", - " 'in the end, to breath in',\n", - " 'something new that makes you',\n", - " 'belicoso',\n", - " 'belicoso',\n", - " 'we are belicosos',\n", - " 'belicoso',\n", - " 'we are belicosos',\n", - " \"i don’t see it, i don't smell it\",\n", - " \"but it's going to my head\",\n", - " \"i don't see it, i don't smell it\",\n", - " \"but it's going to my head\",\n", - " \"i don't see it, i don't smell it\",\n", - " 'but it’s going to my head',\n", - " 'no me hables de conspiración',\n", - " 'porque siento la disnea en mi respiración',\n", - " 'que yo crea lo que crea, nadie dice lo que piensa',\n", - " 'porque ni siquiera piensan',\n", - " 'solamente se molestan',\n", - " 'en el manicomio de la sanidad',\n", - " 'donde te inyectan sin que puedas rechazar',\n", - " 'porque tu rabia conviene y tu odio',\n", - " 'mantiene el orden belicoso',\n", - " 'belicoso',\n", - " 'we are belicosos',\n", - " 'belicoso',\n", - " 'we are belicosos',\n", - " \"i don’t see it, i don't smell it\",\n", - " 'but it’s going to my head',\n", - " \"i don't see it, i don't smell it\",\n", - " \"but it's going to my head\",\n", - " \"i don’t see it, i don't smell it\",\n", - " \"but it's going to my head\",\n", - " \"i don't see it, i don't smell it\",\n", - " \"but it's going to my head\",\n", - " \"i don't see it, i don't smell it\",\n", - " \"but it's going to my head\",\n", - " \"i don't see it, i don't smell it\",\n", - " \"but it's going to my fucking head\",\n", - " 'belicoso',\n", - " 'belicoso',\n", - " 'we are belicosos',\n", - " 'belicoso',\n", - " 'we are belicosos',\n", - " 'belicoso',\n", - " 'we are belicoso',\n", - " 'belicoso',\n", - " \"we are belico'\",\n", - " 'en ese beat natural en que baila la belleza',\n", - " 'se oía un disco girar que volaba tu cabeza',\n", - " 'y en ese sitio algo más volaba por el aire',\n", - " 'tres cuadras atrás en una pequeña calle',\n", - " 'i can feel tonight',\n", - " \"wherever we go, we'll...\",\n", - " 'i can feel tonight',\n", - " \"wherever we go, we'll hide\",\n", - " 'tonight',\n", - " 'en ese beat espiral en que danza la belleza',\n", - " 'hay un latido viral que toca la tornamesa',\n", - " 'y en un impulso animal salimos a la calle',\n", - " 'el espacio total es ahora nuestro valle',\n", - " 'i can feel tonight',\n", - " \"wherever we go, we'll...\",\n", - " 'i can feel tonight',\n", - " \"wherever we go, we'll hide\",\n", - " 'tonight',\n", - " 'tonight',\n", - " \"wherever we go, we'll hide\",\n", - " \"wherever we go, we'll hide\",\n", - " \"wherever we go, we'll...\",\n", - " 'tonight',\n", - " \"wherever we go, we'll hide\",\n", - " \"wherever we go, we'll hide\",\n", - " \"wherever we go, we'll...\",\n", - " 'tonight',\n", - " \"wherever we go, we'll hide\",\n", - " \"wherever we go, we'll hide\",\n", - " \"wherever we go, we'll...\",\n", - " 'roots me again!',\n", - " 'so come listen to di one',\n", - " \"mi a go' mash up on di plan\",\n", - " 'now dis, now dis is a message from di alluland',\n", - " 'hoy es un día de aquellos',\n", - " 'en que miro hacia el cielo',\n", - " 'tratando de descifrar el que estés',\n", - " 'de vez en cuando lejos',\n", - " 'y de vez en cuando cerca',\n", - " 'unas veces subir y otras caer',\n", - " 'y yo cuando tú te me acercas',\n", - " 'no respondo de mis actos',\n", - " 'siento que aquí voy',\n", - " 'de odiarte, a quererte',\n", - " 'de principio a fin',\n", - " 'buscando un poco de amor',\n", - " 'you gotta rock it out and rock it in',\n", - " 'from dublin to babylon',\n", - " '(buscando un poco de amor)',\n", - " 'jump it out and jump it in',\n", - " 'from kingston to providenceland',\n", - " '(buscando un poco de amor)',\n", - " 'hay cosas en la vida',\n", - " 'en que no encuentras salida',\n", - " 'y ante tus ojos se cierra el telón',\n", - " 'y tapas la boquilla del volcán que se hace lava',\n", - " 'que hace mil años esta aquí dentro',\n", - " 'y yo tejiendo redecillas',\n", - " 'para ver si puedo atraparte',\n", - " 'y aquí voy colando la masilla',\n", - " 'en medio de este trópico mortal',\n", - " 'roots and creation, come again!',\n", - " 'so mi guardian, mi guardian mi lift up di plan',\n", - " \"now everybody a go' do dis one\",\n", - " 'like in down di caribbean',\n", - " 'san andrés, providence island',\n", - " 'live it up, make it love sensation',\n", - " \"say goodbye to di world's segregation\",\n", - " 'dis a di age of di new generation',\n", - " 'lift it up to di high revelation',\n", - " 'y aquí voy tejiendo redecillas',\n", - " 'para ver si puedo atraparte',\n", - " 'y aquí estoy colando la masilla',\n", - " 'en medio de este trópico mortal',\n", - " 'todo por un poco de amor',\n", - " '(buscando un poco de amor)',\n", - " 'we gotta rock it out and rock it in',\n", - " 'from dublin to babylon',\n", - " '(buscando un poco de amor)',\n", - " 'jump it out and jump it in',\n", - " '(jump it out and jump it in)',\n", - " '(jump it out and jump it in)',\n", - " 'from brasilia to medellín',\n", - " '(buscando un poco de amor)',\n", - " 'rock it out and rock it in',\n", - " '(oh, yeah)',\n", - " 'from aruba to panamá',\n", - " '(por un poquito de tu amor)',\n", - " '(buscando un poco de amor)',\n", - " 'jump it out and jump it in',\n", - " 'from kingston to providenceland',\n", - " '(¿dónde estás?)',\n", - " '(buscando un poco de amor)',\n", - " 'you gotta rock it out and rock it in',\n", - " 'from dublin to babylon',\n", - " '(por un poquito de tu amor)',\n", - " '(buscando un poco de amor)',\n", - " 'jump it out and jump it in',\n", - " '(oh, oh, oh, oh, oh, yeah)',\n", - " 'from brasilia to medellín',\n", - " '(buscando un poco de amor)',\n", - " 'rock it out and rock it in',\n", - " '(oh, yeah)',\n", - " 'from aruba to panamá',\n", - " '(por un poquito de tu amor)',\n", - " '(buscando un poco de amor)',\n", - " 'yo ya estoy hasta la madre',\n", - " 'de que me pongan sombrero',\n", - " 'escucha entonces cuando digo',\n", - " 'no me llames frijolero',\n", - " 'y aunque exista algún respeto',\n", - " 'y no metamos las narices',\n", - " 'nunca inflamos la moneda',\n", - " 'haciendo guerra a otros países',\n", - " 'te pagamos con petróleo',\n", - " 'e intereses nuestra deuda',\n", - " 'mientras tanto no sabemos',\n", - " 'quien se queda con la feria',\n", - " 'aunque nos hagan la fama',\n", - " 'de que somos vendedores',\n", - " 'de la droga que sembramos',\n", - " 'ustedes son consumidores',\n", - " \"don't call me gringo\",\n", - " 'you fucking beaner',\n", - " 'stay on your side',\n", - " 'of that goddamn river',\n", - " \"don't call me gringo\",\n", - " 'you beaner',\n", - " 'no me digas beaner',\n", - " 'mr. puñetero',\n", - " 'te sacaré un susto',\n", - " 'por racista y culero',\n", - " 'no me llames frijolero',\n", - " 'pinche gringo puñetero',\n", - " 'now i wish i had a dime',\n", - " 'for every single time',\n", - " \"i've gotten stared down\",\n", - " 'for being in the wrong side of town',\n", - " \"and a rich man i'd be\",\n", - " 'if i had that kind of chips',\n", - " 'lately i wanna smack the smiles',\n", - " 'off these racists',\n", - " 'podrás imaginarte desde afuera',\n", - " 'ser un mexicano cruzando la frontera',\n", - " 'pensando en tu familia mientras que pasas',\n", - " 'dejando todo lo que conoces atrás',\n", - " 'si tuvieras tú que esquivar las balas',\n", - " 'de unos cuantos gringos rancheros',\n", - " 'les seguirás diciendo good for nothing wetbacks',\n", - " 'si tuvieras tú que empezar de cero?',\n", - " \"now why don't you look down\",\n", - " 'to where your feet is planted',\n", - " 'that u.s. soil that makes you take shit for granted',\n", - " 'if not for santa ana, just to let you know',\n", - " 'that where your feet are planted would be mexico (correcto)',\n", - " \"don't call me gringo\",\n", - " 'you fuckin beaner',\n", - " 'stay on your side',\n", - " 'of that goddamn river',\n", - " \"don't call me gringo\",\n", - " 'you beaner',\n", - " 'no me digas beaner',\n", - " 'mr. puñetero',\n", - " 'te sacaré un susto',\n", - " 'por racista y culero',\n", - " 'no me llames frijolero',\n", - " 'pinche gringo puñetero',\n", - " \"don't call me gringo\",\n", - " 'you fuckin beaner',\n", - " 'stay on your side',\n", - " 'of that goddamn river',\n", - " \"don't call me gringo\",\n", - " 'you beaner',\n", - " 'no me digas beaner',\n", - " 'mr. puñetero',\n", - " 'te sacaré un susto',\n", - " 'por racista y culero',\n", - " 'no me llames frijolero',\n", - " 'pinche gringo puñetero',\n", - " '¿pinche gringo que?',\n", - " 'puñetero',\n", - " 'generație',\n", - " 'aspirație',\n", - " 'interdicție',\n", - " 'demonstrație',\n", - " 'revoluție',\n", - " 'figurație',\n", - " 'emanație',\n", - " 'aberație',\n", - " 'informație',\n", - " 'deformație',\n", - " 'opoziție',\n", - " 'conspirație',\n", - " 'instituție',\n", - " 'separație',\n", - " 'prostituție',\n", - " 'decorație',\n", - " 'declarație',\n", - " 'perorație',\n", - " 'legislație',\n", - " 'lamentație',\n", - " 'retribuție',\n", - " 'imitație',\n", - " 'satisfacție',\n", - " 'beție',\n", - " 'ocupație',\n", - " 'populație',\n", - " 'consignație',\n", - " 'saturație',\n", - " 'emigrație',\n", - " 'circulație',\n", - " 'constituție',\n", - " 'nație',\n", - " 'compensație',\n", - " 'alocație',\n", - " 'subnutriție',\n", - " 'implicație',\n", - " 'explicație',\n", - " 'complicație',\n", - " 'educație',\n", - " 'malformație',\n", - " 'restricție',\n", - " 'miliție',\n", - " 'protecție',\n", - " 'poliție',\n", - " 'pretenție',\n", - " 'corecție',\n", - " 'atenție',\n", - " 'detenție',\n", - " 'producție',\n", - " 'reducție',\n", - " 'construcție',\n", - " 'distrucție',\n", - " 'seducție',\n", - " 'deducție',\n", - " 'vocație',\n", - " 'hoție',\n", - " 'democrație',\n", - " 'intenție',\n", - " 'tehnocrație',\n", - " 'direcție',\n", - " 'birocrație',\n", - " 'infecție',\n", - " 'bogăție',\n", - " 'frecție',\n", - " 'letra de \"paz\"paz en todo lo que dices',\n", - " 'paz en todo lo que haces',\n", - " 'paz en todo lo que piensas',\n", - " 'paz en forma de silencio',\n", - " 'paz en forma de afecto',\n", - " 'paz en todo el universo',\n", - " 'paz y se detiene el tiempo',\n", - " 'paz cuando uno esta contento',\n", - " 'paz cuando uno monta al viento',\n", - " 'paz cuando hago lo que siento',\n", - " 'paz cuando suelto lo que aferro',\n", - " 'paz aunque suene muy ingenuo',\n", - " 'si estás',\n", - " 'si estás mal',\n", - " 'si estás lejos',\n", - " 'si estás',\n", - " 'si estás mal',\n", - " 'si estás lejos',\n", - " 'you see the world',\n", - " 'you see the face',\n", - " 'you see the pain behind the smile',\n", - " 'where does the enemy hide?',\n", - " 'you see the world',\n", - " 'you see the face',\n", - " 'you see the pain behind the smile',\n", - " 'where does the enemy hide?',\n", - " 'you see the world',\n", - " 'you see the face',\n", - " 'you see the pain behind the smile',\n", - " 'where does the enemy hide?',\n", - " 'you see the world',\n", - " 'you see the face',\n", - " 'you see the pain behind the smile',\n", - " 'where does the enemy hide?',\n", - " 'you see the world',\n", - " 'you see the face',\n", - " 'you see the pain behind your smile',\n", - " 'where does the enemy hide?',\n", - " 'todas sus cosas son me marca',\n", - " 'se compra todo, nuna corazon, nada',\n", - " 'must be tough',\n", - " \"it's never enough\",\n", - " 'chicara no tan bien chicada',\n", - " 'no derilla, no requenta nada',\n", - " 'she wants more',\n", - " 'yeah, she wants more, and more, and more and more and more and more',\n", - " 'pobre, pobre niña rica',\n", - " 'pobre, pobre niña rica, oh, sí',\n", - " 'pobre, pobre niña rica',\n", - " 'pobre, pobre niña, what does she need?',\n", - " 'yeah',\n", - " 'no aqui da su medicina',\n", - " 'su sonrisa, bien informa de partida',\n", - " 'she wants more',\n", - " 'yeah, she wants more, and more, and more and more and more and more',\n", - " 'pobre, pobre niña rica',\n", - " 'pobre, pobre niña rica, oh, sí',\n", - " 'pobre, pobre niña rica',\n", - " 'pobre, pobre niña, what does she need?',\n", - " \"let's go\",\n", - " 'pobre, pobre niña rica',\n", - " 'pobre, pobre niña rica, oh, sí',\n", - " 'pobre, pobre niña rica',\n", - " 'pobre, pobre niña, what does she need?',\n", - " 'yeah',\n", - " 'te he visto llorar más de una vez',\n", - " 'sabes? yo no presume de sensatez',\n", - " 'me tomo el tiempo como licor',\n", - " 'y soy propensa a la decepción',\n", - " \"there's no time\",\n", - " \"there's no time\",\n", - " \"there's no time... it's showtime\",\n", - " \"there's no time\",\n", - " \"there's no time\",\n", - " \"there's no time\",\n", - " \"there's no time for me\",\n", - " 'tú me has visto llorar más de una vez',\n", - " 'si estoy contigo las manecillas van al revés',\n", - " 'somos eléctrica confusión',\n", - " 'distorsionamos la situación',\n", - " \"there's no time\",\n", - " \"there's no time\",\n", - " \"there's no time... it's showtime\",\n", - " \"there's no time\",\n", - " \"there's no time\",\n", - " \"there's no time\",\n", - " \"there's no time for me\",\n", - " \"there's no time for me\",\n", - " \"'cause we got no answer at all\",\n", - " 'and we got no answer at all',\n", - " \"'cause we got no answer at all\",\n", - " 'and we got no answer at all',\n", - " \"'cause we got no answer at all\",\n", - " 'and we got no answer at all',\n", - " 'sobre el tumulto de tus decisiones',\n", - " 'sobre el tumulto de tus decisiones',\n", - " 'sobre el tumulto de tus decisiones voy, woah!',\n", - " 'alzo la lata al cielo',\n", - " 'desde la otra punta del mundo brindamos y me pongo a pensar',\n", - " 'celebro que la distancia funcione una vez más',\n", - " 'le veo apuntar con el dedo: ikebukuro sunshine',\n", - " 'no supe tomar la curva y ahora es tarde',\n", - " 'pero deja de guiñarme el ojo, no es tan abstracto ¿no?',\n", - " 'cambian las estaciones pero nunca los problemas',\n", - " 'ni estas necesidades especiales que tratar',\n", - " 'los aeropuertos, nuevos mapas, los mismos dilemas',\n", - " 'me muestro vulnerable, etcétera, etcétera',\n", - " 'y tus emojis, que quieren acabar conmigo',\n", - " 'por eso a veces me pongo un poquito visceral',\n", - " 'creo que esta noche no vamos a acabar muy bien',\n", - " '¿quieres dejar de cantar? mira, por aquí pasa otro tren',\n", - " 'esta ciudad me asfixia un poco, tal vez necesite un trago',\n", - " 'creo que esta noche no vamos a acabar bien',\n", - " '// english',\n", - " 'ikebukuro sunshine',\n", - " 'i lift the can up to the sky',\n", - " 'from the other side of the world we toast and i start thinking',\n", - " 'i celebrate that distance is working yet again',\n", - " 'i watch him point with his finger: ikebukuro sunshine',\n", - " \"i didn't know how to drive the curve and now it's late\",\n", - " \"but stop winking at me, it's not so abstract isn't it?\",\n", - " 'seasons change but problems won’t',\n", - " 'nor these special needs to deal with',\n", - " 'airports, new maps, the same dilemmas',\n", - " 'i show myself vulnerable, etcetera, etcetera',\n", - " 'and your emojis, that want to finish me',\n", - " \"that's why sometimes i get a little visceral\",\n", - " 'i think tonight were not gonna end very well',\n", - " 'do you want to stop singing? look, another train is passing by',\n", - " 'this city suffocates me a little, perhaps i need a drink',\n", - " 'i think tonight we’re not gonna end up well',\n", - " 'mjes si o to seto dollas',\n", - " 'il westorpuer noemer warnaar',\n", - " 'eres sito iso una',\n", - " 'position corper frontiaar',\n", - " 'cinco de mayo',\n", - " 'dia de arboejo',\n", - " 'soldados para yentes',\n", - " 'cinco de mayo',\n", - " 'fouares wakavade',\n", - " 'indenpendensia',\n", - " 'casa del miourpok',\n", - " '( ) justitia',\n", - " 'cinco de mayo',\n", - " 'dia de arboejo',\n", - " 'soldados para yentes',\n", - " 'cinco de mayo',\n", - " 'mechico vargos mido do',\n", - " 'yeah',\n", - " 'solo',\n", - " 'mechico mechico',\n", - " 'di er ela avinidad',\n", - " 'i demos pro',\n", - " 'el enes si dia',\n", - " 'cinco de mayo',\n", - " 'dia de arboejo',\n", - " 'soldados para yentes',\n", - " 'cinco de mayo',\n", - " 'mechico vargos tribo do',\n", - " 'el desarrollo mental del miedo a todas las experiencias limitadas... el olor nauseabundo de mis visiones extremas, la locura unitaria de un mundo revuelto, la infinidad inalcanzable de mi propio interior, el desarrollo imperfecto de hombres y arboles caidos, un infiemo de color turquesa sobre un cielo envuelto en llamas: significado en tus ojos de hipocresia, fantasia y complejidad, el miedo a lo desconocido.. la muerte y todas sus enfermedades, cien pensamientos en un solo segundo sobre un monte repleto de animalillos filosoficos, la cabeza me estalla y no alcanzo las respuestas, sus lagrimas son esa pistola en tus manos, la diversidad aniquilada en un mundo cada vez mas artifical... la descripion perfecta de un desastre real',\n", - " 'the mental development of the fear of all the limited experiences... the nauseous scent of my extreme visions, the unitary madness of a shaken world, the unattainable infinity of my own interior, the imperfect development of men and you hoist caidos, infiemo of turquesa color on a sky surrounded in flames: meaning in your eyes of hipocresia, fantasy and complexity, the fear to the stranger. the death and all its diseases, one hundred thoughts in a single second on a mount filled with philosophical animalillos, the head explodes to me and i do not reach the answers, its tears are that pistol in your hands, the diversity annihilated in a more and more artifical world... the perfect descripion of a real disaster',\n", - " 'arráncame de raíz',\n", - " 'para eludir nuestro cruel provenir',\n", - " 'arrastrando tu recuerdo iré',\n", - " 'por encima del mar;',\n", - " 'no sé si la lluvia ajena',\n", - " 'la hará daño',\n", - " 'mother, help',\n", - " 'please, take me back to the start',\n", - " 'in a twist of fate',\n", - " 'an ocean pulled us apart',\n", - " 'but one day we’ll meet again',\n", - " 'en brazos de esta tierra hostil',\n", - " 'toro me habla de ti',\n", - " 'remendado tu recuerdo iré',\n", - " 'cada paso que doy',\n", - " 'pero no sé si te reconoceré',\n", - " 'al volver',\n", - " 'mother, help',\n", - " 'please, take me back to the start',\n", - " 'in a twist of fate',\n", - " 'an ocean pulled us apart',\n", - " 'but one day we’ll meet again',\n", - " 'oh, one day we’ll meet again',\n", - " 'mother, help',\n", - " 'please, take me back to the start',\n", - " 'in a twist of fate',\n", - " 'an ocean pulled us apart',\n", - " 'but one day we’ll meet again',\n", - " 'oh, one day we’ll meet again',\n", - " 'dias enteros caminando en silencio',\n", - " 'apuro mis pasos para dejar todo atrás;',\n", - " 'busco en la soledad el espacio para olvidar esa voz que me atormenta',\n", - " 'i live in fear when the shadows reappear',\n", - " 'unleashing all their might',\n", - " \"i never thought i'd face the demons on my own\",\n", - " 'make it stop! haunted, hunted',\n", - " 'un suspiro que penetra mi alma',\n", - " 'un pensamiento constante e hiriente',\n", - " 'sé que estás ahi, aunque no puedo verte',\n", - " 'nunca he podido escapar del yugo de tus ojos',\n", - " 'with every breathe i take',\n", - " 'my heart beats faster',\n", - " 'no matter how hard i try to unwind',\n", - " 'tears keep falling from my eyes',\n", - " \"haunted, hunted, i'm down on my knees;\",\n", - " \"forever i'll mourn the loss of my innocence\",\n", - " 'papi, papi, ven y bésame',\n", - " 'papi, papi, wipe off my sweat',\n", - " 'papi, papi, ven y bésame',\n", - " \"papi, papi, you're the best\",\n", - " 'no te detengas, no no',\n", - " 'no pares nunca, no no',\n", - " 'no te detengas',\n", - " \"don't stop for anything\",\n", - " 'no te detengas, no no',\n", - " 'no pares nunca, no no',\n", - " 'no te detengas',\n", - " \"don't stop for anything at all\",\n", - " 'tengo tu nombre tatuado en mi piel en esa parte que solo tú ves',\n", - " 'la noche sigue y ya no me puedo aguantar',\n", - " 'ya no me quiero aguantar',\n", - " 'no te detengas, no no',\n", - " 'no pares nunca, no no',\n", - " 'no te detengas',\n", - " \"don't stop for anything\",\n", - " 'no te detengas, no no',\n", - " 'no pares nunca, no no',\n", - " 'no te detengas',\n", - " \"don't stop for anything at all\",\n", - " 'no te detengas, no no',\n", - " 'no pares nunca, no no',\n", - " 'no te detengas',\n", - " \"don't stop for anything\",\n", - " 'no te detengas, no no',\n", - " 'no pares nunca, no no',\n", - " 'no te detengas',\n", - " \"don't stop for anything at all\",\n", - " 'papi, papi, ven y bésame',\n", - " 'papi, papi, wipe off my sweat',\n", - " 'papi, papi, ven y bésame',\n", - " \"papi, papi, you're the best\",\n", - " 'no te detengas, no no',\n", - " 'no pares nunca, no no',\n", - " 'no te detengas',\n", - " \"don't stop for anything\",\n", - " 'no te detengas, no no',\n", - " 'no pares nunca, no no',\n", - " 'no te detengas',\n", - " \"don't stop for anything at all\",\n", - " 'tengo tu nombre tatuado en mi piel en esa parte que tú solo ves',\n", - " 'la noche sigue y ya no me puedo aguantar',\n", - " 'ya no me quiero aguantar',\n", - " 'tu nombre tatuado en mi piel en esa parte que solo tú ves',\n", - " 'la noche sigue y ya no me puedo aguantar',\n", - " 'ya no me quiero aguantar',\n", - " 'no te detengas, no no',\n", - " 'no pares nunca, no no',\n", - " 'no te detengas',\n", - " \"don't stop for anything\",\n", - " 'no te detengas, no no',\n", - " 'no pares nunca, no no',\n", - " 'no te detengas',\n", - " \"don't stop for anything at all\",\n", - " 'yo ya estoy hasta la madre',\n", - " 'de que me pongan sombrero',\n", - " 'escucha entonces cuando digo',\n", - " 'no me llames frijolero',\n", - " 'y aunque exista algún respeto',\n", - " 'y no metamos las narices',\n", - " 'nunca inflamos la moneda',\n", - " 'haciendo guerra a otros países',\n", - " 'te pagamos con petróleo',\n", - " 'e intereses nuestra deuda',\n", - " 'mientras tanto no sabemos',\n", - " '¿quién se queda con la feria?',\n", - " 'aunque nos hagan la fama',\n", - " 'de que somos vendedores',\n", - " 'de la droga que sembramos',\n", - " 'ustedes son consumidores',\n", - " \"don't call me gringo\",\n", - " 'you fucking beaner',\n", - " 'stay on your side',\n", - " 'of that goddamn river',\n", - " \"don't call me\",\n", - " 'gringo, you beaner',\n", - " 'no me digas beaner',\n", - " 'mr. puñetero',\n", - " 'te sacaré un susto',\n", - " 'por racista y culero',\n", - " 'no me llames frijolero',\n", - " 'pinche gringo puñetero',\n", - " 'chingao',\n", - " 'now i wish i had a dime',\n", - " 'for every single time',\n", - " \"i've gotten stared down\",\n", - " 'for being in the wrong side of town',\n", - " \"and a rich man i'd be\",\n", - " 'if i had that kind of chips',\n", - " 'lately i wanna smack the smiles',\n", - " 'off these racists',\n", - " 'podrás imaginarte desde afuera',\n", - " 'ser un mexicano cruzando la frontera',\n", - " 'pensando en tu familia mientras que pasas',\n", - " 'dejando todo lo tu que conoces atrás',\n", - " 'si tuvieras tú que esquivar las balas',\n", - " 'de unos cuantos gringos rancheros',\n", - " 'les seguirás diciendo good for nothing wetbacks',\n", - " 'si tuvieras tú que empezar de cero?',\n", - " \"now why don't you look down\",\n", - " 'to where your feet is planted',\n", - " 'that u.s. soil that makes you take shit for granted',\n", - " 'if not for santa ana, just to let you know',\n", - " 'that where your feet are planted would be mexico',\n", - " 'correcto!',\n", - " \"don't call me gringo\",\n", - " 'you fucking beaner',\n", - " 'stay on your side',\n", - " 'of that goddamn river',\n", - " \"don't call me\",\n", - " 'gringo, you beaner',\n", - " 'no me digas beaner',\n", - " 'mr. puñetero',\n", - " 'te sacaré un susto',\n", - " 'por racista y culero',\n", - " 'no me llames frijolero',\n", - " 'pinche gringo puñetero',\n", - " \"don't call me gringo\",\n", - " 'you fucking beaner',\n", - " 'stay on your side',\n", - " 'of that goddamn river',\n", - " \"don't call me\",\n", - " 'gringo, you beaner',\n", - " 'no me digas beaner',\n", - " 'mr. puñetero',\n", - " 'te sacaré un susto',\n", - " 'por racista y culero',\n", - " 'no me llames frijolero',\n", - " 'pinche gringo',\n", - " '¿pinche gringo qué?',\n", - " 'puñetero',\n", - " 'migra, migra, pinche migra dejame en paz',\n", - " 'migra, migra, pinche migra dejame en paz',\n", - " 'malicia veo en tus ojos desprecio en tu corazon',\n", - " 'malicia veo en tus ojos desprecio en tu corazon',\n", - " 'es hora de reconocer que todos somas una voz',\n", - " 'abrasa el concepto venimos de la misma voz',\n", - " 'me necesitas tu a mi mas y mas que yo a ti',\n", - " 'me necesitas tu a mi mas y mas que yo a ti',\n", - " 'me necesitas tu a mi mas y mas que yo a ti',\n", - " 'me necesitas tu a mi mas y mas que yo a ti',\n", - " \"people, people, let's start together, let's do it right\",\n", - " \"people, people, let's love one another\",\n", - " 'i know we know how',\n", - " 'me necesitas tu a mi mas y mas que yo a ti',\n", - " 'me necesitas tu a mi mas y mas que yo a ti',\n", - " 'me necesitas tu a mi mas y mas que yo a ti',\n", - " 'me necesitas tu a mi mas y mas que yo a ti',\n", - " 'migra, migra, pinche migra dejame en paz',\n", - " \"people, people, let's love one another\",\n", - " 'i know we know how',\n", - " 'estaba pensando sobreviviendo con mi sister en new jersey',\n", - " 'ella me dijo que es una vida buena allá',\n", - " 'bien rica bien chévere',\n", - " 'y voy!',\n", - " 'puñeta!',\n", - " \"we'll keep well-bred, we'll stay well-fed\",\n", - " \"we'll have all sons, they will be all well hung\",\n", - " \"they'll come and play, their friends will say\",\n", - " \"your daddy's rich, your mamma's a pretty thing\",\n", - " \"that maid maria, she's really ok\",\n", - " 'vamos a jugar por la playa',\n", - " 'vamos a jugar por la playa',\n", - " 'vamos a jugar por la playa',\n", - " 'vamos a jugar por la playa',\n", - " 'vamos a jugar por la playa',\n", - " 'ay! muñeca cabrona! maricona! cabrona!',\n", - " 'ah!',\n", - " 'ah!',\n", - " 'ah!',\n", - " \"i keep gettin' friends looking like lesbians\",\n", - " \"if we get bored we'll move to california\",\n", - " \"they'll come and play, their friends will say\",\n", - " \"your daddy's rich, your mamma's a pretty thing\",\n", - " \"that maid maria, she's really ok\",\n", - " 'vamos a jugar por la playa',\n", - " 'vamos a jugar por la playa',\n", - " 'vamos a jugar por la playa',\n", - " 'vamos a jugar por la playa',\n", - " 'vamos a jugar por la playa',\n", - " 'no miré lo sabio del presente',\n", - " 'gozo para disipar, la calma es indeleble',\n", - " 'no miré lo sabio del presente',\n", - " 'gozo para disipar, la calma es indeleble',\n", - " 'no miré lo sabio del presente',\n", - " 'gozo para disipar, la calma es indeleble',\n", - " 'no miré lo sabio del presente',\n", - " 'gozo para disipar, la calma es indeleble',\n", - " 'no miré lo sabio del presente',\n", - " 'gozo para disipar, la calma es indeleble',\n", - " 'no miré lo sabio del presente',\n", - " 'gozo para disipar, la calma es indeleble',\n", - " 'no hay futuro y sé que es duro ver que no queda más',\n", - " 'no hay futuro, sé que es duro ver que no queda más',\n", - " 'es lo que siento, debo confesar',\n", - " 'ya está aquí',\n", - " 'hey, let the music shake you',\n", - " 'let the rythm take you to a place called home',\n", - " 'no hay futuro y sé que es duro ver que no queda más',\n", - " 'no hay futuro y sé que es duro ver que no queda más',\n", - " 'es lo que siento, debo confesar',\n", - " 'ya está aquí',\n", - " 'ya está aquí',\n", - " 'hey, let the music shake you',\n", - " 'let the rythm take you to a place called home',\n", - " 'hey, let the music shake you',\n", - " 'let the rythm take you to a place called home',\n", - " '(tus insultos pasados de moda, tus muecas innecesarias',\n", - " 'tu manera en que sumes la panza,... me provoca un ataque de náusea)',\n", - " 'whoo!',\n", - " 'in the beginning, the spirit of the lord',\n", - " 'oh, it moved upon the water',\n", - " 'in the beginning, the spirit of the lord',\n", - " 'oh, it moved upon the water',\n", - " \"but now he's moving\",\n", - " \"now he's moving\",\n", - " 'now he moves within my heart',\n", - " \"now he's moving\",\n", - " \"now he's moving\",\n", - " 'now he moves within my heart',\n", - " 'en el principio el espíritu de dios',\n", - " 'se movía sobre las aguas',\n", - " 'se movía sobre las aguas',\n", - " 'y más ahora está moviendo',\n", - " 'dentro de mi corazón',\n", - " 'dentro de mi corazón',\n", - " 'y más ahora está moviendo',\n", - " 'dentro de mi corazón',\n", - " 'dentro de mi corazón',\n", - " 'can you feel the spirit moving? (yes, we can)',\n", - " 'can you feel the spirit moving? (yes, we can)',\n", - " 'oh, can you feel the spirit moving? (yes, we can)',\n", - " 'oh (yes, we can)',\n", - " 'oh-oh, oh!',\n", - " 'oh, woah!',\n", - " 'oh, the spirit moves',\n", - " 'and he say...',\n", - " '...',\n", - " 'oh my golly! oh my golly!',\n", - " 'tantas veces, tantas veces dice',\n", - " 'oh my golly! oh my golly!',\n", - " 'la vida total es un porquería',\n", - " 'oh my golly! oh my golly!',\n", - " 'pero siempre dice',\n", - " 'oh my golly! oh my golly!',\n", - " 'rosa, oh oh, oh, rosa!',\n", - " 'rosa, oh oh, oh, rosa!',\n", - " 'huh huh!',\n", - " '...',\n", - " 'oh my golly! oh my golly!',\n", - " 'tantas veces, tantas veces dice',\n", - " 'oh my golly! oh my golly!',\n", - " 'la vida total es un porquería',\n", - " 'oh my golly! oh my golly!',\n", - " 'pero siempre dice',\n", - " 'oh my golly! oh my golly!',\n", - " 'rosa, oh oh, oh, rosa!',\n", - " 'rosa, oh oh, oh, rosa!',\n", - " 'huh huh!',\n", - " 'and i say, and i say, and i say',\n", - " 'and i say',\n", - " 'rosa, oh oh, ohh rosa!',\n", - " 'rosa, oh oh, ohh rosa!',\n", - " 'huh huh!']}}},\n", - " 'et': {'sentence': {'pop': {'meta': {'train_data': [\"i'm from a land called secret estonia\",\n", - " \"(nobody knows where it's at, no\",\n", - " \"nobody knows where it's at, oh\",\n", - " \"nobody knows where it's at, no)\",\n", - " \"i'm from a land called secret estonia\",\n", - " \"(nobody knows where it's at, no\",\n", - " \"nobody knows where it's at, oh\",\n", - " \"nobody knows where it's at, no)\",\n", - " 'welcome to the freakshow (call in the night)',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the...',\n", - " 'welcome to the... (will you survive?)',\n", - " 'welcome to the freakshow',\n", - " 'wеlcome to the freakshow',\n", - " \"i'm from a land callеd secret estonia\",\n", - " \"(nobody knows where it's at, no\",\n", - " \"nobody knows where it's at, oh\",\n", - " \"nobody knows where it's at, no)\",\n", - " \"i'm from a land called secret estonia\",\n", - " \"(nobody knows where it's at, no\",\n", - " \"nobody knows where it's at, oh\",\n", - " \"nobody knows where it's at, no)\",\n", - " 'welcome to the freakshow (call in the night)',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the...',\n", - " 'welcome to the... (will you survive?)',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the freakshow',\n", - " 'põdral maja metsa sees',\n", - " 'väiksest aknast välja vaatab',\n", - " 'jänes jookseb kõigest väest',\n", - " 'lävel seisma jääb',\n", - " 'kopp-kopp lahti tee',\n", - " 'metsas kuri jahimees',\n", - " 'jänes tuppa tule sa',\n", - " 'anna käppa ka',\n", - " '(drop!)',\n", - " 'welcome to the freakshow (call in the night)',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the...',\n", - " 'welcome to the... (will you survive?)',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the freakshow (call in the night)',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the...',\n", - " 'welcome to the... (will you survive?)',\n", - " 'welcome to the freakshow',\n", - " 'welcome to the freakshow',\n", - " 'still believe in you',\n", - " 'still believe in your promise',\n", - " 'kootta ame ga kimi ni furisosogu...',\n", - " 'miss you',\n", - " 'how could we be apart?',\n", - " 'in that place, what happened to you?',\n", - " 'i can imagine, can imagine well',\n", - " 'kitai suru furi o shite ugokanu yubisaki',\n", - " 'ki wa shinai tayori to shittemo',\n", - " 'still believe in you',\n", - " 'still believe in your promise',\n", - " 'mada ano kotoba o matsu no',\n", - " \"can't believe in you at all\",\n", - " 'but, what do i want?',\n", - " 'mata ame ga furidashita',\n", - " \"it's you who taught me to love\",\n", - " \"but it's wrong. that's a kind of curse\",\n", - " \"i can't break it, can't break it well\",\n", - " 'tsugihagi no firumu de ushinatta sutoorii wa',\n", - " 'omoidasu tabi surikireteiku',\n", - " 'still calling you',\n", - " 'still calling you in my head',\n", - " 'donna hitokoto datte ii no',\n", - " 'now you are fading out',\n", - " \"don't go away from me\",\n", - " 'ame ga kudakeru oto ga hibiku',\n", - " 'kimi no koe ga kieru',\n", - " \"now i'm still loving you\",\n", - " 'wanna see you again',\n", - " 'mou ame ga yamanakutemo',\n", - " \"loving you, i'm still loving you\",\n", - " 'still believe in you, still believe in you',\n", - " 'phir le aaya dil majboor kya keeje',\n", - " 'raas na aaya rehna door kya keeje',\n", - " 'dil keh raha use maqammal kar bhi aao',\n", - " 'wo jo adhoori si baat baaki hai',\n", - " 'wo jo adhoori si yaad baaki hai',\n", - " 'wo jo adhoori si yaad baaki hai',\n", - " 'karte hain hum aaj qabool kya keeje',\n", - " 'ho gayi thi jo humse bhool kya keeje',\n", - " 'dil keh raha use mayassar kar bhi aao',\n", - " 'wo jo dabi si aas baaki hai',\n", - " 'wo jo dabi si aanch baaki hai',\n", - " 'wo jo dabi si aanch baaki hai',\n", - " 'wo jo dabi si... aanch baaki hai',\n", - " 'kismat ko hai yeh manzoor kya keeje',\n", - " 'milte rahe hum badastoor kya keeje',\n", - " 'dil keh raha hai use musalsal kar bhi aao',\n", - " 'wo jo ruki si raah baaki hai',\n", - " 'wo jo ruki si chaah baaki hai',\n", - " 'wo jo ruki si chaah baaki hai',\n", - " 'wo jo ruki si chaah baaki hai',\n", - " 'be charming, be loved, be chaalu, be crazy, be happy, be in love be barfi!',\n", - " 'pruumptje auge staunde boi, leva stahn dela veenum bronenbezhtebahh. ala fundegahh, ama arzhklahh, ala olgevezh neda ist gedau doin. smolebas, pruzhnaveeda pruumptje alabes oi, oi, oi! pruzhnaveeda rohm nebestahh. robesta indegedan stahn',\n", - " 'no one understood him no one understood him at all (i understood him)',\n", - " 'inna keesta binhol stan istanna boshne bollabista bohlla inna bolstamist brumistavaston olgesty boshtenbolest estinna lostinmist motsnivolsha ozhgalah',\n", - " 'no one comprehended no one comprehended at all',\n", - " 'brrrnigaiy moshdebazne bohldepebahdne voshnemahdne inmahnne bohzhdul mohnezhdevozht mohneshdepulcher ohbdestulul oshdne blol oshgala ohgevai olgevezh olgevezh',\n", - " 'no one understood him no one understood him at all veeshtehne krauden de vazh veeshtehn lauden de taut',\n", - " 'hib blauud und mistdowht jumgaider destaht',\n", - " \"bistragavohhnt ... (he's shouting)... (repeats the first part?)... (then he shouts again, ozhnaveeda?)\",\n", - " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", - " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", - " 'raat bhar dhuaan chale',\n", - " 'jaanoon na jaanoon na jaanoon na sakhi re',\n", - " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", - " 'jiya jale jo jale',\n", - " 'dekhte hain tan mera mann mein chubhti hai nazar',\n", - " 'dekhte hain tan mera mann mein chubhti hai nazar',\n", - " 'honth sil jaate unke naram honthon se magar',\n", - " 'ginti rehti hoon main apni karvaton ke silsile',\n", - " 'kya karoon kaise kahoon raat kab kaise dhale',\n", - " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", - " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", - " 'raat bhar dhuaan chale',\n", - " 'jaanoon na jaanoon na jaanoon na sakhi re',\n", - " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", - " 'jiya jale jo jale',\n", - " 'ang ang mein jalti hai dard ki chingaariyaan',\n", - " 'masle phoolon ki mehek mein titliyon ki kyaariyaan',\n", - " 'raat bhar bechaari mehndi pisti hai peiron taley',\n", - " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", - " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", - " 'raat bhar dhuaan chale',\n", - " 'jaanoon na jaanoon na jaanoon na sakhi re',\n", - " 'jiya jale jo jale neinon taley dhuaan chale dhuaan chale',\n", - " 'jiya jale jo jale',\n", - " 'jiya jale',\n", - " 'jiya jale',\n", - " 'version -2',\n", - " 'jiya jale, jaan jale - 2',\n", - " 'nainon tale dhuaan chale dhuaan chale',\n", - " '(jiya jale, jaan jale)',\n", - " 'nainon tale dhuaan chale dhuaan chale',\n", - " 'raat bhar dhuaan chale',\n", - " 'jaanoon na jaanoon na jaanoon na sakhi ri) - 2',\n", - " 'jiya jale, jaan jale',\n", - " 'dekhte hai tan mera mann mein chubhti hai nazar - 2',\n", - " 'hont sil jaate unke narm honton se magar',\n", - " 'ginti rehti hoon main apni karvaton ke silsile',\n", - " 'kya karoon, kaise kahoon raat kab kaise dhale',\n", - " '(jiya jale, jaan jale',\n", - " 'nainon tale dhuaan chale dhuaan chale',\n", - " 'raat bhar dhuaan chale',\n", - " 'jaanoon na jaanoon na jaanoon na sakhi ri) - 2',\n", - " 'jiya jale, jaan jale',\n", - " 'ang ang mein jalti hai dard ki chingaariyaan',\n", - " 'masle phoolon ki mahek mein titliyon ki kyaariyaan',\n", - " 'raat bhar bechaari mehndi pisti hai pairon tale',\n", - " 'kya karoon, kaise kahoon raat kab kaise dhale',\n", - " 'ends',\n", - " 'jiya jale, jaan jale',\n", - " 'nainon tale dhuaan chale dhuaan chale',\n", - " 'dhuaan chale dhuaan chale',\n", - " 'raat bhar dhuaan chale',\n", - " '(dhuaan chale)',\n", - " 'jaanoon na jaanoon na jaanoon na sakhi ri',\n", - " 'jiya jale, jaan jale',\n", - " 'nainon tale dhuaan chale dhuaan chale',\n", - " 'raat bhar dhuaan chale',\n", - " 'jaanoon na jaanoon na jaanoon na sakhi ri',\n", - " 'sen mash ver kos',\n", - " 'sen mash ver kos',\n", - " 'sen mash ver kos',\n", - " 'sen mash ver kos',\n", - " 'kore novortso',\n", - " 'lofer nyoroyo',\n", - " 'aana vor falnaa',\n", - " 'faarla alu farlafa',\n", - " 'faarala alu kas anesara',\n", - " 'shtah ara fur',\n", - " 'san mas veh for',\n", - " 'san mas veh for',\n", - " 'san mas veh for',\n", - " 'san mas veh for far',\n", - " 'varva alu valnaa',\n", - " 'sarala alu fa nofer',\n", - " 'sarala alu kas vaaraa os',\n", - " 'shtah ara fur',\n", - " 'san mas veh for',\n", - " 'san mas veh for',\n", - " 'san mas veh for',\n", - " 'san mas veh for far',\n", - " '(zara zara bahekta hai, mahekta hai',\n", - " 'aaj to mera tan badan, main pyaasi hoon',\n", - " 'mujhe bhar le apni baahon mein) - 2',\n", - " 'hai meri kasam tujhko sanam, door kahin na jaa',\n", - " 'yeh doori kehti hai paas mere aaja re',\n", - " 'yunhi baras baras kaali ghata barse',\n", - " 'hum yaar bheeg jaaye is chaahat ki baarish mein',\n", - " 'meri khuli khuli laton ko suljhaaye',\n", - " 'tu apni ungliyon se main to hoon isi khwaahish mein',\n", - " 'sardi ki raaton mein hum soye rahe ek chaadar mein',\n", - " 'hum dono tanha ho, na koi bhi rahe is ghar mein',\n", - " 'zara zara bahekta hai, mahekta hai',\n", - " 'aaj to mera tan badan, main pyaasi hoon',\n", - " 'mujhe bhar le apni baahon mein',\n", - " 'aaja re aa re',\n", - " 'tadpaaye mujhe teri sabhi baatein',\n", - " 'ek baar ae deewane jhootha hi sahi pyaar to kar',\n", - " 'main bhooli nahin haseen mulaaqaatein',\n", - " 'bechain karke mujhko mujhse yun na pher nazar',\n", - " 'roothega na mujhse, mere saathiya yeh vaada kar',\n", - " 'tere bina mushkil hai jeena mera mere dil mein',\n", - " '(zara zara bahekta hai, mahekta hai',\n", - " 'aaj to mera tan badan, main pyaasi hoon',\n", - " 'mujhe bhar le apni baahon mein',\n", - " 'hai meri kasam tujhko sanam, door kahin na jaa',\n", - " 'yeh doori kehti hai paas mere aaja re',\n", - " 'aaja re, aaja re, aaja re',\n", - " 'fbi, cia, emi, tdk',\n", - " \"it's the n-n-n-n-n-n-new song\",\n", - " 'kgb, pot, bmg, mit',\n", - " \"it's the n-n-n-n-n-n-new song\",\n", - " 'cuz this is d-a-t-a. r-o-c-ks',\n", - " 'n-n-n-n-n-n-new song',\n", - " \"it's a s-s-s-s-s-s-s-s-song\",\n", - " 'i said, cuz this is d-a-t-a, r-o-c-ks',\n", - " 'n-n-n-n-n-n-new song',\n", - " \"it's a s-s-s-s-s-s-s-s-song\",\n", - " 'fbi, cia, emi, tdk',\n", - " \"it's the n-n-n-n-n-n-new song\",\n", - " 'kgb, pot, bmg, mit',\n", - " \"it's the n-n-n-n-n-n-new song\",\n", - " 'cuz this is d-a-t-a. r-o-c-ks',\n", - " 'n-n-n-n-n-n-new song',\n", - " \"it's a s-s-s-s-s-s-s-s-song\",\n", - " 'i said, cuz this is d-a-t-a, r-o-c-ks',\n", - " 'n-n-n-n-n-n-new song',\n", - " \"it's a s-s-s-s-s-s-s-s-song\",\n", - " 'aala re aala simmba aala!',\n", - " 'cha cha cha k’chikkum',\n", - " 'cha cha cha k’chikkum',\n", - " 'cha cha cha k’cha… (x2)',\n", - " 'aye… simmba!',\n", - " 'machinga machinga dhol abhi bajinga',\n", - " 'dhina dhin dhaap dekho aaj raja nachinga',\n", - " 'nachinga nachinga aaj raja nachinga',\n", - " 'machinga machinga dhol abhi bajinga',\n", - " 'dhina dhin dhaap dekho aaj raja nachinga',\n", - " 'aaya tera aaya raja',\n", - " 'naach mere saath aaja',\n", - " 'bhool ke tu baaju waali khidki ki',\n", - " 'lene aaya lene aaya simmba teri firki',\n", - " 'rak tiki rak tiki tiki tiki…',\n", - " 'lene aaya lene aaya simmba teri firki',\n", - " 'rak tiki rak tiki tiki tiki…',\n", - " 'melody!',\n", - " 'ek dooni do, do dooni chaar',\n", - " 'raja naachega saara nachega bazaar',\n", - " 'teen tikke nau, nau nukke marah*',\n", - " 'saare mohalle mein sabka hai pyara',\n", - " 'aaya tera aaya raja',\n", - " 'naach mere saath aaja',\n", - " 'khol ke tu baaju waali khidki ki',\n", - " 'pa pa pa..',\n", - " 'rat ‘k tiki rak tiki…',\n", - " 'lene aaya lene aaya simmba teri firki',\n", - " 'rat ‘k tiki rak tiki…',\n", - " 'pa pa pa..',\n", - " 'aala re aala simmba aala!',\n", - " '* catch your dreams',\n", - " 'uhn duhk ae o la ga sae sahng ae soh ri chyuh',\n", - " 'ki wuht dun jahk eun bah raem eul',\n", - " 'nan nae ga ees neun goht uh de la hae do',\n", - " 'young won hee bi chwuh jool',\n", - " \"i'll be your angel\",\n", - " 'ji chin kil eul cham ah ga myun da ga o la eun nal chuh rum',\n", - " 'nae mahm do nuh ei ga seum ahn ei seul peum uhn',\n", - " 'jen ga moh doo eej kil hahm sahng ki do hae',\n", - " 'juhl mahng eul gam choo ji moht hae',\n", - " 'go gae sook in nuh ei so kkeu tae',\n", - " 'juhn hae jool he mahng eul chah ah',\n", - " 'close your eyes',\n", - " 'nae kkum eul chaj ah ga ah peum ae da ga ga',\n", - " 'soh mahng eul ji ki go shi puh',\n", - " 'joo moo neul da meun beet',\n", - " 'ah moo do mohl rae kkeut ups ee bi chwuh jool',\n", - " \"i'll be your angel\",\n", - " 'hwan hahn mi soh ma juh muhm choom',\n", - " 'shi gan sohk ae suh',\n", - " 'o neun gun dan ji on ja la neun hyun shil go gae',\n", - " 'ei bah neul na nool na reul ki uhk hae',\n", - " 'shi go eul ahn kin sae sahng gwah',\n", - " 'dduh na buh rin sarang kka ji do',\n", - " 'soom shi myuh sahl ji ahn do rohk',\n", - " '* repeat',\n", - " '(you are gonna be free)',\n", - " 'bah rahm ae shil uh gal nuhl whi hahn cho bok eul',\n", - " '(sarang eul ) noon tul myun bol soo ees do rohk uhn jae na',\n", - " 'geu kyu tae gul uh ro eul gae',\n", - " '(nuh mah neul saeng gak hae) nae so kil da eul soo ees gae',\n", - " 'geu uh dduhn mi no jo chah do',\n", - " 'nam eul soo ups gae nae kkum eul chaj ah ga',\n", - " 'ah soo ae da ga ga soh mahng eul ji ki go shi puh',\n", - " 'joo moo neul da meun beet',\n", - " 'ah moo do mohl rae kkeut ups ee bi chwuh jool',\n", - " \"i'll be your angel\",\n", - " 'fakerni ha aatbak',\n", - " 'wa loomak, wa hasbak',\n", - " 'fakerni ha aatbak',\n", - " 'wa loomak, wa hasbak',\n", - " \"bokra el shoo' yanadik\",\n", - " 'wa shoufak',\n", - " 'maaya',\n", - " 'w totlob, ridaya',\n", - " 'bokra tshoof baaeinek ya habibi',\n", - " \"law faker ahsasi laaba foo' li nafsak foo'\",\n", - " \"bokra el baad y aazeb albak wit dboob min el shoo'\",\n", - " \"law faker ahsasi laaba foo' li nafsak foo'\",\n", - " \"bokra el baad y aazeb albak wit dboob min el shoo'\",\n", - " 'wa shoufak',\n", - " 'maaya',\n", - " 'w totlob, ridaya',\n", - " 'bokra tshoof baaeinek ya habibi',\n", - " 'lama ha teshar baad layali w albak dayeb nar',\n", - " 'ha thess bkol elli garalli wet gilli mehtar',\n", - " 'lama ha teshar baad layali w albak dayeb nar',\n", - " 'ha thess bkol elli garalli wet gilli mehtar',\n", - " 'wa shoufak',\n", - " 'maaya',\n", - " 'w totlob, ridaya',\n", - " 'bokra tshoof baaeinek ya habibi',\n", - " 'fakerni ha aatbak',\n", - " 'wa loomak, wa hasbak',\n", - " 'fakerni ha aatbak',\n", - " 'wa loomak, wa hasbak',\n", - " \"bokra el shoo' yanadik\",\n", - " 'wa shoufak',\n", - " 'maaya',\n", - " 'w totlob, ridaya',\n", - " 'bokra tshoof baaeinek ya habibi',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too',\n", - " 'and you want me too, and you want me too',\n", - " 'and you want me too, and you want me too',\n", - " 'and you want me, want me...',\n", - " 'i want you and you want me too',\n", - " 'i want you want you want you want',\n", - " 'too',\n", - " 'too (too)',\n", - " 'too',\n", - " 'i want you and you want me too too too',\n", - " 'too',\n", - " 'i want you and you want me',\n", - " 'i want you you you you you you you you you you you',\n", - " 'i want you you you you you you you you you you you',\n", - " 'i - want - you, i - want - you, i - want',\n", - " 'i - want - you, i - want - you',\n", - " 'i want you and you want me too',\n", - " 'i want you and you want me too (and you want me)',\n", - " 'i want you and you want me too (and you want me)',\n", - " 'i want you and you want me too (and you want me)',\n", - " 'i want you and you want me too',\n", - " 'i want you want you want',\n", - " 'too (brrrap)',\n", - " 'too (too)',\n", - " 'too',\n", - " 'i want you and you want me too too too',\n", - " 'too',\n", - " 'i want you and you want me too',\n", - " 'i want you you you you you you you you you you you',\n", - " 'i want you you you you you you you you you you you',\n", - " 'i - want - you, i - want - you, i - want',\n", - " 'i - want - you, i - i - want - you',\n", - " 'i want you',\n", - " \"mat'ouleesh abadan maho inti saybani saat\",\n", - " 'wala yom mana mehtaglik konti shaghlaki hagat',\n", - " \"aalashen kan hobak shaglitne kol el ow'at\",\n", - " \"wana kol ma a'arablik santi tibaad masafat\",\n", - " 'gawibni skti leh?',\n", - " 'ana kont aamelt eih?',\n", - " 'law mertah fi el baad ya habibi',\n", - " 'oli ezzay ansak',\n", - " 'gawibni skti leh?',\n", - " 'ana kont aamelt eih?',\n", - " 'law mertah fi el baad ya habibi',\n", - " 'oli ezzay ansak',\n", - " \"shaklak mesh fakir ana fakira lehefiti bi lo'ak\",\n", - " \"law oultili tab shofik bokrah tile'eeni sab'ak\",\n", - " 'w keman bil marra wa aala fekra mesh aarfa ansak',\n", - " \"ma ana koli ma dowar aala fakra bala'eeha maaak\",\n", - " 'gawibni skti leh?',\n", - " 'ana kont aamelt eih?',\n", - " 'law mertah fi el baad ya habibi',\n", - " 'oli ezzay ansak',\n", - " 'gawibni skti leh?',\n", - " 'ana kont aamelt eih?',\n", - " 'law mertah fi el baad ya habibi',\n", - " 'oli ezzay ansak',\n", - " 'gawibni skti leh?',\n", - " 'ana kont aamelt eih?',\n", - " 'law mertah fi el baad ya habibi',\n", - " 'oli ezzay ansak',\n", - " 'gawibni skti leh?',\n", - " 'ana kont aamelt eih?',\n", - " 'law mertah fi el baad ya habibi',\n", - " 'oli ezzay ansak',\n", - " \"no i didn't wanna let it go\",\n", - " 'atte atarimae da to...',\n", - " 'donna ni furukutemo',\n", - " \"it's my sweet home (taisetsu na mono)\",\n", - " 'kawari nado doko ni mo nai',\n", - " 'toki ga sugite kawarihateta kedo',\n", - " 'kaze ga fuku yasashiku tsutsumu',\n", - " 'nagusameru you ni...',\n", - " '* good bye... kisetsu kawattemo',\n", - " 'mata sugu ni kuru kedo',\n", - " 'ano keshiki wa mou mirenai mama...',\n", - " 'omoide bakari ga utsuru',\n", - " 'arubamu wo mekuru tabi ni',\n", - " 'genjitsu ga tsurakutemo',\n", - " 'gomakasanai you ni',\n", - " 'jibun no ashi de tateru you ni',\n", - " '\"mae wo mite susumu n\\' da\" to',\n", - " 'kazoekirenai kurai i told myself...',\n", - " 'kaze ga fuku \"daijoubu da yo...\" to',\n", - " 'sasayaku you ni...',\n", - " '* repeat',\n", - " 'donna toki mo',\n", - " 'you were there for me',\n", - " 'so i found my dream',\n", - " 'i really wanna thank you',\n", - " \"i'm really gonna miss you\",\n", - " 'oh? my sweet home',\n", - " 'kisetsu kawattemo',\n", - " 'mata sugu ni kuru kedo',\n", - " 'ano keshiki wa mou mirenai mama...',\n", - " 'omoide bakari ga utsuru',\n", - " 'sukoshi zutsu i gotta let it go',\n", - " 'let it go yeah',\n", - " 'kisetsu kawattemo',\n", - " 'mata sugu ni kuru kedo',\n", - " 'ano keshiki wa mou mirenai mama...',\n", - " 'omoide bakari ga utsuru',\n", - " 'but it will always be my sweet home',\n", - " 'tere bina zindagi se koi',\n", - " 'shikwa to nahin',\n", - " 'shikwa nahin shikwa nahin',\n", - " 'shikwa nahin',\n", - " 'tere bina zindagi bhi lekin',\n", - " 'zindagi to nahin',\n", - " 'zindagi nahin zindagi nahin',\n", - " 'zindagi nahin',\n", - " 'tere bina zindagi se...',\n", - " 'kaash aisa ho tere kadmo se',\n", - " 'chun ke manzil chale',\n", - " 'aur kahii door kahii',\n", - " 'kaash aisa ho tere kadmo se',\n", - " 'chun ke manzil chale',\n", - " 'aur kahii door kahii',\n", - " 'tum agar saath ho',\n", - " 'manzilo ki kami to nahii',\n", - " 'tere bina zindagi se...',\n", - " 'jee mein aata hai',\n", - " 'tere daaman mein',\n", - " 'sar jhuka ke hum',\n", - " 'rothe rahee rothe rahee',\n", - " 'jee mein aata hai',\n", - " 'tere daaman mein',\n", - " 'sar jhuka ke hum',\n", - " 'rothe rahe rothe rahee',\n", - " 'teri bhi aankho mein',\n", - " 'aansuon ki nami to nahii',\n", - " 'tere bina zindagi se...',\n", - " 'tum jo keh do to',\n", - " 'aaj ki raat',\n", - " 'chaand doobega nahii',\n", - " 'raath koo rok loo',\n", - " 'tum jo keh do to',\n", - " 'aaj ki raat',\n", - " 'chaand doobega nahii',\n", - " 'raath koo rok loo',\n", - " 'raath ki baath hai',\n", - " 'aur zindagi baaki to nahii',\n", - " 'tere bina zindagi se...',\n", - " 'yo.. poya peela udaatha',\n", - " 'yei.. venna reela suthadha',\n", - " 'yo.. poyah peela udaatha',\n", - " 'yei.. venna reela suthadha',\n", - " 'peela peela peela peela',\n", - " 'peela udaatha',\n", - " 'reela reela reela reela',\n", - " 'reela suthatha',\n", - " 'peela peela peela peela',\n", - " 'peela udaatha',\n", - " 'vena vena venave vena',\n", - " 'scena podatha..',\n", - " 'dai romeo',\n", - " 'neeyum naanum jodi yo',\n", - " 'vare vaava vare vaava',\n", - " 'my maamiyo en babies-ku mumm yo',\n", - " 'vare vaava vare vaava',\n", - " 'antha nilava irakki',\n", - " 'alva surukki naan thaaren',\n", - " 'antha megatha madakki',\n", - " 'kayila adichitten paaren',\n", - " 'peela peela peela peela',\n", - " 'peela udaatha',\n", - " 'reela reela reela reela',\n", - " 'reela suthatha',\n", - " 'peela peela peela peela',\n", - " 'peela udaatha',\n", - " 'vena vena venave vena',\n", - " 'scena podatha..',\n", - " 'nirma sundariye',\n", - " 'poppins pal azhage',\n", - " 'ujala iduppathaan ulukuriye',\n", - " 'lifebouy arokiyame',\n", - " 'boostu energiye',\n", - " 'goldspot nenjukkulla izukkuriye',\n", - " 'vaa vaa en rasnave, i love you',\n", - " 'konjam pakkathale neeyum vantha',\n", - " 'dhagam theerudhe',\n", - " 'dynora raasave love you too',\n", - " 'un kawasaki bike-u seatil',\n", - " 'ukkarathaan kathurukken',\n", - " 'aaja aaja',\n", - " 'aaja aa aa aaja',\n", - " 'aja aaja aaja',\n", - " 'honey attam podalam',\n", - " 'peela peela peela peela',\n", - " 'peela udaatha',\n", - " 'vena vena venave vena',\n", - " 'scena podatha..',\n", - " 'dai romeo',\n", - " 'neeyum naanum jodi yo',\n", - " 'vare vaava vare vaava',\n", - " 'my maamiyo en babies-ku mumm yo',\n", - " 'vare vaava vare vaava',\n", - " 'antha nilava irakki',\n", - " 'alva surukki naan thaaren',\n", - " 'antha megatha madakki',\n", - " 'kayila adichitten paaren',\n", - " 'appa kitta sollama vaa',\n", - " 'attam podalaam',\n", - " 'amma kitta sollama va',\n", - " 'appeet agalaam',\n", - " 'appa kitta sollama va',\n", - " 'attam podalaam',\n", - " 'amma kitta sollama va',\n", - " 'abscond agalaam',\n", - " 'peela peela peela peela',\n", - " 'peela udaatha',\n", - " 'reela reela reela reela',\n", - " 'reela suthatha',\n", - " 'peela peela peela peela',\n", - " 'peela udaatha',\n", - " 'vena vena venave vena',\n", - " 'scena podatha..',\n", - " 'my roots my roots my roots my roots my roots on fire',\n", - " 'my roots my roots my roots my roots my roots on fire',\n", - " 'my roots my roots my roots my roots my roots on fire',\n", - " 'my roots my roots my roots my roots my roots on fire',\n", - " 'are ruk ja are thum ja',\n", - " 'are ruk ja re bandhe are thum ja re bandhe ki kudrat has padegi ho - 3',\n", - " 'are neendein hai jakhmi',\n", - " 'are sapne hai bhooke',\n", - " 'ki karvat phat padegi ho',\n", - " 'are ruk ja re bandhe are thum ja re bandhe ki kudrat has padegi ho - 2',\n", - " 'are mandir ye chup hai are masjid ye gumsum',\n", - " 'ibadat thak padegi ho',\n", - " 'samay ki lal aandhi kabristan ke raaste',\n", - " 'are latpath chalegi ho',\n", - " 'are ruk ja re bandhe are thum ja re bandhe ki kudrat has padegi ho - 2',\n", - " 'kise kafir kahega kise kayar kahega',\n", - " 'teri kab tak chalegi ho',\n", - " 'kise kafir kahega kise kayar kahega',\n", - " 'teri kab tak chalegi ho',\n", - " 'are ruk ja re bandhe are thum ja re bandhe ki kudrat has padegi ho - 2',\n", - " 'are mandir ye chup hai are masjid hai gumsum',\n", - " 'ibadat thak padegi ho',\n", - " 'samay ki lal aandhi kabristan ye raste',\n", - " 'are latpath chalegi ho',\n", - " 'are ruk ja re bandhe are thum ja re bandhe ki kudrat has padegi ho - 2',\n", - " 'are neendein hai jakhmi are sapne hai bhooke',\n", - " 'ki karvat phat padegi ho',\n", - " 'yeh andhi chot teri kabhi ki sukh jaati',\n", - " 'magar ab pak chalegi',\n", - " 'koit kerkib',\n", - " 'pдaw peaseb',\n", - " 'tagane waenlane',\n", - " 'sigenego terwis',\n", - " 'sest jumal kuuleb',\n", - " 'marja marja markeb',\n", - " 'taganego wastased',\n", - " 'marja marja markeb',\n", - " 'taganego wastased',\n", - " 'siis ma sortsin so sooned',\n", - " 'siis ma waalin so woolmed',\n", - " 'sigenego terwis',\n", - " 'marja marja tagane',\n", - " 'marjy waenlane',\n", - " 'nijamellam maranthu pochu penne unnale',\n", - " 'ninaivellam kanava pochu penne unnale',\n", - " 'nirai matham nilaivai kaanum',\n", - " 'pennae unnale pennae unnale',\n", - " 'nijamellam maranthu pochu penne unnale',\n", - " 'ninaivellam kanava pochu penne unnale',\n", - " 'nirai matham nilaivai kaanum',\n", - " 'pennae unale pennae unnale',\n", - " 'hey paakaamal paakathe penne pothum',\n", - " 'baarangal thaangathe penne pothum',\n", - " 'bothaigal thangaathu penne pothum',\n", - " 'penne pothum',\n", - " 'go!',\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, dont give a heck about the witch\",\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, don't give a heck about the witch\",\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, dont give a heck about the witch\",\n", - " 'd and a!',\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, dont give a heck about the witch\",\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, don't give a heck about the witch\",\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, dont give a heck about the witch\",\n", - " 'oorellam onnaga seruthamma',\n", - " 'naan mattum en orama',\n", - " 'yethetho nenjukkul vechuruka nan barama',\n", - " 'koodatha ennangal kooduthamma',\n", - " 'thaangaathu en koodu ma',\n", - " 'pattalum kettalum ketkaathuma en perama',\n", - " 'oh vitil poochi en vilaka suduthu',\n", - " 'vevaram puriyama velakum azhuthu',\n", - " 'nyaa nyaaa...',\n", - " 'en paarkaamal paakatha penne pothum',\n", - " 'baarangal thaangathu penne pothum',\n", - " 'bothaigal tharathe penne pothum',\n", - " 'nijamellam maranthu pochu',\n", - " 'ninaivellam kanava pochu',\n", - " 'nirai matham nilaivai kaanum',\n", - " 'penne unnale!!',\n", - " 'go!',\n", - " '(nyaa nyaa nyaa nyaa nyaa nyaa aaah...)',\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, dont give a heck about the witch\",\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, don't give a heck about the witch\",\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, dont give a heck about the witch\",\n", - " 'd and a!',\n", - " '(naa naa naa naa naa naa aaah...)',\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, dont give a heck about the witch\",\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, don't give a heck about the witch\",\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, dont give a heck about the witch\",\n", - " 'nyaaaa... nyaaaa.nyaa nyaa nyaa nyaa',\n", - " 'put your fucking hands up',\n", - " \"don't give a fuck about the witch\",\n", - " \"don't give a, dont give a fuck about the witch\",\n", - " \"don't give a heck about the witch\",\n", - " \"don't give a, dont give a fuck about the witch\",\n", - " 'ratsatsaa ja ripidabi dilla',\n", - " 'beritstan dillan dellan doo',\n", - " 'a baribbattaa baribbariiba',\n", - " 'ribiribi distan dellan doo',\n", - " 'ja barillas dillan deia dooa',\n", - " 'daba daba daba daba daba duvja vuu',\n", - " 'baristal dillas dillan duu ba daga',\n", - " 'daiga daida duu duu deiga dou',\n", - " 'yo!',\n", - " 'ratsatsaa ja ripidabi dilla',\n", - " 'beritstan dillan dellan doo',\n", - " 'a baribbattaa baribbariiba',\n", - " 'ribiribi distan dellan doo',\n", - " 'ja barillas dillan deia dooa',\n", - " 'ja barillas dillan deia dooa',\n", - " 'ja barillas dillan',\n", - " '-rillas dillan',\n", - " '-rillas-rillas-ri-ri-ri-ri-ri',\n", - " 'ratsatsaa ja ripidabi dilla',\n", - " 'beritstan dillan dellan doo',\n", - " 'a baribbattaa baribbariiba',\n", - " 'ribiribi distan dellan doo',\n", - " 'ja barillas dillan deia dooa',\n", - " 'daba daba daba daba daba duvja vuu',\n", - " 'baristal dillas dillan duu ba daga',\n", - " 'daiga daida duu duu deiga dou',\n", - " 'hra-tsa-tsa, ia ripi-dapi dilla barits tad dillan deh lando',\n", - " 'aba rippadta parip parii ba ribi, ribi, ribiriz den teahlando',\n", - " 'la barillaz dillan deiallou ara va reve reve revydyv dyvjavuo',\n", - " \"bariz dah l'llavz dei lando dabaoke dagae gadae due due dei ia do\",\n", - " 'hra-tsa-tsa, ia ripi-dapi dilla barits tad dillan deh lando',\n", - " 'aba rippadta parip parii ba ribi, ribi, ribiriz den teahlando',\n", - " 'la barillaz dillan deiallou ara va reve reve revydyv dyvjavuo',\n", - " \"bariz dah l'llavz dei lando dabaoke dagae gadae due due dei ia do\",\n", - " 'yeah',\n", - " 'yeaaaaah...',\n", - " 'yeah',\n", - " '3: 30 am',\n", - " 'yeah',\n", - " 'dekhe the jo sapne, aaj unke paas hu',\n", - " 'aankho me chamak hai, pahle the aansu',\n", - " 'baaki sab wahi hai saala kuchh nahi badla...',\n", - " 'haa pahle main aam tha, aaj thoda khaas hu...',\n", - " 'raaz hu ek aisa jise sab janna chaahe',\n", - " 'suni apne baare me kitni afwahe...',\n", - " 'baate karne waalo ka kaam baate karna',\n", - " 'karte hain kuchh baaki dete bas salaheeeee...',\n", - " 'pen mere haath me',\n", - " 'zindagi hai kaali tab bhi likhu kaali raat me',\n", - " 'top pe khada akela koi nahi saath me...',\n", - " 'jalne waale jalte lekin rahte aukat me',\n", - " 'yeah...',\n", - " 'meri lagan... meri mehnat aur upar waale ka karam...',\n", - " 'paise kamaye maine sacchai batake...',\n", - " 'jise dikkat aake pakde mera',\n", - " 'unhe bakwaas karne do, jo bakwaas karte hain...',\n", - " 'khaali bartan hi jyada awaaz karte hain',\n", - " 'main note ginta hu, wo haath malte hain',\n", - " 'kheloge jo aag se to haath jalte hain',\n", - " 'kamyabi aur jalan saath saath chalte hain...',\n", - " 'tabhi log yaha lekar hathiyaar chalte hain',\n", - " 'par main unn chutiyo me se nahi',\n", - " 'kyunki jinka dimaag nahi chalta',\n", - " 'unke haath chalte hain...',\n", - " 'mere saath chalte hain',\n", - " 'mujhse pyaar karte hain... mere fan, meri jaan, meri kaum, meri shaan',\n", - " 'jaake puchho kisi se bhi galiyon me hai sambhaali kisne, hindustani hiphop ki kamaan badshaah... badshaah... hai bas ek hi naam',\n", - " 'badshaah... badshaah ka bas ek hi kaam likhna aur likhte hi jaana...',\n", - " 'chalu aage aage aur mere pichhe pichhe hain zamana...',\n", - " 'sabki nazre hain mujhpe, ab kya karega yeh?',\n", - " 'ek flop gaana aate hi marega yeh...',\n", - " 'bla bla... bak bak sun ke main gaya thak...',\n", - " 'mere paas unhe dene ke liye nahi hai fuck... fackar hai mujhe bas apni kala pe',\n", - " 'main hu asli... baaki saare nakli yaha pe',\n", - " 'maine masli hain naslo ki nasle, nakli rap roki rap jinke nahi hai bas me yaha pe bas...',\n", - " 'teri phatne hi waali hai...',\n", - " 'sabko pata hai tu jaali hai, chemist se lele bete nind ki goliyaa... kuchh hi dino me meri album aane waali hai... album aane waali hai... meri album aane waali hai... chemist se lele bete nind ki goliyaa... kuchh hi dino me meri album aane waali hai...',\n", - " 'ish yo boy... mood is off... original never ends... original never dies...',\n", - " 'teri phatne hi waali hai...',\n", - " '...the end...',\n", - " '...the end...',\n", - " 'ore manwa tu to baawra hai',\n", - " 'tu hi jaane tu kya sochta hai',\n", - " 'tu hi jaane tu kya sochta hai, baaware',\n", - " 'kyun dikhaye sapne tu sote-jaagte?',\n", - " 'jo barsein sapne boond-boond',\n", - " 'nainon ko moond-moond',\n", - " '(nainon ko moond-moond)',\n", - " 'jo barsein sapne boond-boond',\n", - " 'nainon ko moond-moond',\n", - " 'kaise main chaloon, dekh na sakoon anjaane raaste',\n", - " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara',\n", - " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara',\n", - " 'dheeme bole koi iktara-iktara, dheeme bole koi iktara',\n", - " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara',\n", - " 'sun rahi hoon sudh-budh kho ke, koi main kahani',\n", - " 'puri kahani hai kya kisi hai pata',\n", - " 'main to kisiki hoke ye bhi na jaani',\n", - " 'ruth hai ye do pal ki ya rahegi sada',\n", - " '(kise hai pata, kise hai pata, kise hai pata)',\n", - " 'jo barsein sapne boond-boond',\n", - " 'nainon ko moond-moond',\n", - " '(nainon ko moond-moond)',\n", - " 'jo barsein sapne boond-boond',\n", - " 'nainon ko moond-moond',\n", - " 'kaise main chaloon, dekh na sakoon anjaane raaste',\n", - " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara',\n", - " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara',\n", - " 'dheeme bole koi iktara-iktara, dheeme bole koi iktara',\n", - " 'goonja sa hai koi iktara-iktara, goonja sa hai koi iktara']},\n", - " 'data': ['o bade ok soke chada hai fitoor',\n", - " \"leke do-pe sho-pe hoja mash'hoor\",\n", - " 'mujhe masti chadhi hai from head-to-toe',\n", - " 'jinhe nachna hai nache',\n", - " 'jo na nache f.o',\n", - " 've-ve-velle mat betho gand paao in the club',\n", - " 'ch-ch-chill to machao ruk jaaye beat jab chal le le stance',\n", - " 'ready to dance',\n", - " 'aane wala hai gaane ka',\n", - " '. hook. hook. hook...',\n", - " 'hook hook hook hook...',\n", - " 'ho nacho saare g phaad ke',\n", - " 'hil ke nacho-nacho',\n", - " 'hil dul ke nacho-nacho',\n", - " 'hil ke nacho-nacho',\n", - " 'nacho saare g phaad ke aa ha. aa ha. aa ha',\n", - " 'ho nacho saare g phaad ke',\n", - " 'aa ha',\n", - " 'sarphira hai tu, sarphiri hu main',\n", - " 'ya hum dono hain sahi',\n", - " 'aur sarphire hain saare',\n", - " 'behki-behki main aur behka-behka tu',\n", - " 'behke-behke lag rahe kyu aaj ye nazare',\n", - " 'chal sarka dena pare zamaane ko',\n", - " 'kisko fikar hai ye kiska qasoor',\n", - " 'ho okay sokay hua set mood',\n", - " 'ek feeling bole ca-ca-carry on dude',\n", - " 'mujhe masti chadi hai from head to toe',\n", - " 'jinhe nachna hai nache',\n", - " 'jo na nache f.o',\n", - " 've-ve-velle mat betho gand paao in the club',\n", - " 'ch-ch-chill to machao ruk jaaye beat jab chal le le stance',\n", - " 'ready to dance',\n", - " 'aane wala hai gaane ka',\n", - " '. hook. hook. hook...',\n", - " 'hook hook hook hook...',\n", - " 'ho nacho saare g phaad ke',\n", - " 'hil ke nacho-nacho',\n", - " 'hil dul ke nacho-nacho',\n", - " 'hil ke nacho-nacho',\n", - " 'nacho saare g phaad ke aa ha. aa ha. aa ha',\n", - " 'ho nacho saare g phaad ke',\n", - " 'aa ha',\n", - " 'ho nacho saare g phaad ke!',\n", - " 'har singh, nar singh',\n", - " 'neel naaraayan',\n", - " 'gur sikh, gur singh',\n", - " 'har har gaayan',\n", - " 'wahe, guru, wahe, guru',\n", - " 'har har dhiaaian',\n", - " 'saakhat nindak dusht',\n", - " 'mathaayan',\n", - " 'har singh, nar singh',\n", - " 'neel naaraayan',\n", - " 'gur sikh, gur singh',\n", - " 'har har gaayan',\n", - " 'wahe, guru, wahe, guru',\n", - " 'har har dhiaaian',\n", - " 'saakhat nindak dusht',\n", - " 'mathaayan',\n", - " 'har singh, nar singh',\n", - " 'neel naaraayan',\n", - " 'gur sikh, gur singh',\n", - " 'har har gaayan',\n", - " 'wahe, guru, wahe, guru',\n", - " 'har har dhiaaian',\n", - " 'saakhat nindak dusht',\n", - " 'mathaayan',\n", - " 'har singh, nar singh',\n", - " 'neel naaraayan',\n", - " 'gur sikh, gur singh',\n", - " 'har har gaayan',\n", - " 'wahe, guru, wahe, guru',\n", - " 'har har dhiaaian',\n", - " 'saakhat nindak dusht',\n", - " 'mathaayan',\n", - " 'har singh, nar singh',\n", - " 'neel naaraayan',\n", - " 'gur sikh, gur singh',\n", - " 'har har gaayan',\n", - " 'wahe, guru, wahe, guru',\n", - " 'har har dhiaaian',\n", - " 'saakhat nindak dusht',\n", - " 'mathaayan',\n", - " 'har singh, nar singh',\n", - " 'neel naaraayan',\n", - " 'gur sikh, gur singh',\n", - " 'har har gaayan',\n", - " 'wahe, guru, wahe, guru',\n", - " 'har har dhiaaian',\n", - " 'saakhat nindak dusht',\n", - " 'mathaayan',\n", - " 'har singh, nar singh',\n", - " 'neel naaraayan',\n", - " 'gur sikh, gur singh',\n", - " 'har har gaayan',\n", - " 'wahe, guru, wahe, guru',\n", - " 'har har dhiaaian',\n", - " 'saakhat nindak dusht',\n", - " 'mathaayan',\n", - " 'har singh, nar singh',\n", - " 'neel naaraayan',\n", - " 'gur sikh, gur singh',\n", - " 'har har gaayan',\n", - " 'wahe, guru, wahe, guru',\n", - " 'har har dhiaaian',\n", - " 'saakhat nindak dusht',\n", - " 'mathaayan',\n", - " 'har singh, nar singh',\n", - " 'neel naaraayan',\n", - " 'gur sikh, gur singh',\n", - " 'har har gaayan',\n", - " 'wahe, guru, wahe, guru',\n", - " 'har har dhiaaian',\n", - " 'saakhat nindak dusht',\n", - " 'mathaayan',\n", - " 'saakhat nindak dusht',\n", - " 'mathaayan',\n", - " 'aaj jaane ki zidd na karo',\n", - " 'yoonhi pahlu mein baiṭhe raho',\n", - " 'yoonhi pahlu mein baiṭhe raho',\n", - " 'aaj jaane ki zidd na karo',\n", - " 'haaye mar jaaen ge ham to luṭ jaaen ge',\n", - " 'aisi baaten kiya na karo',\n", - " 'aaj jaane ki zidd na karo',\n", - " 'tum hi socho zara kyoon na roken tumhen',\n", - " 'jaan jaati hai jab uṭh ke jaate ho tum',\n", - " 'jaan jaati hai jab uṭh ke jaate ho tum',\n", - " 'tum ko apni qasam jaan-i jaan',\n", - " 'baat itni miri maan lo',\n", - " 'aaj jaane ki zidd na karo',\n", - " 'waqt ki qaid mein zindagi hai magar',\n", - " 'chand ghaṛiyaan yahi hain jo aazaad hain',\n", - " 'chand ghaṛiyaan yahi hain jo aazaad hain',\n", - " 'in ko kho kar miri jaan-i jaan',\n", - " 'umr bhar na taraste raho',\n", - " 'aaj jaane ki zidd na karo',\n", - " 'aaj jaane ki zidd na karo',\n", - " 'kizutsukeau kurai ai shiteita',\n", - " 'yume wa zetsubou ni natta shiranuuchi ni',\n", - " 'sashikomu hikari ga sukimakaze g',\n", - " 'nureta hoo ni itaku shimiiru you',\n", - " 'douse ashita to iu hi wa atte',\n", - " 'nanika ga mitashite yuku no itsu no hi ka',\n", - " 'konkyo no nai chiisana atarashii yume',\n", - " 'te no hira ni kanjiteru no wo yeah',\n", - " \"i'm feeling myself again\",\n", - " \"i'm feeling better now...\",\n", - " 'yurikago wo yusaburu kaze',\n", - " \"i'm feeling myself again\",\n", - " \"i'm feeling better yeah...\",\n", - " 'furikaeru you ni',\n", - " 'yume kara sameta',\n", - " 'kiyoraka na kokoro de bu tsubushitai',\n", - " 'yume mo kibou mo suteta jibun no te de',\n", - " 'osoreteita mono nani dattakke sou',\n", - " 'ima wa mou wakaranai shiwakaritaku mo nai',\n", - " 'koko kara mata hi wa nobotte',\n", - " 'kono sora ni tsuusetsu ni nanika kanjitemo',\n", - " 'omoide to setsunaku katarao koto ga',\n", - " 'nan no yaku ni tatsu tte yuu no',\n", - " \"i'm feeling myself again\",\n", - " \"i'm feeling better now...\",\n", - " 'taisetsu ni kowashitai',\n", - " \"i'm feeling myself again\",\n", - " \"i'm feeling better yeah...\",\n", - " 'tsumetai hana wo kerichirasu you ni',\n", - " \"oh, i'm feeling myself again\",\n", - " \"i'm feeling better now...\",\n", - " 'yurikago wo yusaburu kaze',\n", - " \"i'm feeling myself again\",\n", - " \"i'm feeling better yeah...\",\n", - " 'furikaeru you ni yume kara sameta',\n", - " \"i'm feeling myself again\",\n", - " \"i'm feeling myself again\",\n", - " \"i'm feeling better yeah...\",\n", - " 'tsumetai hana wo kerichirasu you ni',\n", - " \"let's get on let's get on let's get on yo!! let's get on this wind let's get on let's get on\",\n", - " \"yo!! let's go to your side with these wings\",\n", - " 'kakushita uso wo doko ni sute you',\n", - " 'soko no umibe made hon no sukoshi',\n", - " 'itsudatte kimi wa yasashi sugita yo',\n", - " 'modoranai to kimeta no ni... soba ni itai',\n", - " \"(i'd like to feel you now)\",\n", - " 'negai ga',\n", - " '(if you stay by my side)',\n", - " 'kanau nara hibike ai no inori',\n", - " '(get on the wind)',\n", - " 'imademo',\n", - " '(i wish i were a bird.)',\n", - " 'maniau youni akai buutsu haita',\n", - " 'kimi no moto he',\n", - " '(i still wish now. i still hope now. stay by my side.)',\n", - " \"let's get on let's get on let's get on yo!! let's get on this wind let's get on let's get on yo!! let's go to your side with these wings\",\n", - " 'kanashii uta wo shitteiru tori ga',\n", - " 'madobe de utatte wa boku wo semeru',\n", - " 'itoshiki mono to ai wo hagukumi',\n", - " 'yagate su wo tsukuri yume wo utau',\n", - " '(yeah, i sing like a bird)',\n", - " 'negai ga',\n", - " '(if you stay by my side.)',\n", - " 'kanau nara sono tsubasa wo karite',\n", - " '(get on the wind.)',\n", - " 'tobitatou',\n", - " '(i wish i were a bird.)',\n", - " 'imasugu ni nidoto hanasanai yo',\n", - " 'kimi no moto he',\n", - " '(i still wish now. i still hope now. stay by my side.)',\n", - " 'miageta haruka oozora he inori sasagete',\n", - " '(i fly, and go.)',\n", - " 'tomaru koto no nai toki wo yamete',\n", - " 'get on yeah yeah. i really wanna see your red boots. i really want the wings of a bird',\n", - " 'if i could go to your sidec if you were by my sidec that would be wonderful',\n", - " 'i wish i were a bird',\n", - " 'negai ga',\n", - " '(if you stay by my side.)',\n", - " 'kanau nara hibike ai no inori',\n", - " '(get on the wind.)',\n", - " 'negai ga',\n", - " '(i wish i were a bird.)',\n", - " 'kanau youni tsubasa sei ni hiroagete',\n", - " '(get on the wind.)',\n", - " 'tobitatou',\n", - " '(if you stay by my side.)',\n", - " 'imasugu ni nidoto hanasanai yo',\n", - " '(get on the wind.)',\n", - " 'imademo',\n", - " '(i wish i were a bird.)',\n", - " 'maniau nara akai buutsu haita',\n", - " 'kimi no moto he',\n", - " '(i still wish now. i still hope now. stay by my side.)',\n", - " \"let's get on let's get on let's get on yo!!\",\n", - " \"let's get on this wind.let's get on let's get on yo!!\",\n", - " \"let's go to your side with these wings\",\n", - " 'kodawatte kita mono wa dare',\n", - " 'ayamatte kita hito wa nani',\n", - " 'warikitte kita koto wa tsumi',\n", - " 'samekitte mita yume wa sube',\n", - " 'ayamachi wa okashitemo',\n", - " 'okasarete hajimete wakaru',\n", - " 'demo mata wasurete shimau',\n", - " 'sonna fuu ni kono yo wa dekiteru',\n", - " 'feel like the wind',\n", - " 'kaze no you ni',\n", - " 'watashi wo watashi to tsutaecha ikenai',\n", - " 'jidai wa wagamama na noni watashi dake',\n", - " 'namae sae tsugeru koto ??(kaze) ga saegiru',\n", - " 'yoake made ni nimotsu wo matomete',\n", - " 'akaku samishige na passport',\n", - " 'nan no kachi sae midasenaide',\n", - " 'futo hitori de mujou ni nagamete',\n", - " '* feel like the wind',\n", - " 'toki wa nagasarete',\n", - " 'sougen wo hashiru ??(kaze) wo matte iru',\n", - " 'feel like the wind',\n", - " 'itsuka anata ni',\n", - " 'sotto todoku you na ??(kaze) ni noritai',\n", - " 'la la la...',\n", - " '* repeat',\n", - " 'why did you break my heart?',\n", - " 'why did we fall in love?',\n", - " 'why did you go away, away, away, away?',\n", - " '(dil mera churaaya kyoon',\n", - " 'jab yeh dil todna hi tha',\n", - " 'humse dil lagaaya kyoon',\n", - " 'humse munh modna hi tha) - 2',\n", - " 'why did you break my heart?',\n", - " 'why did we fall in love?',\n", - " 'why did you go away, away, away, away?',\n", - " 'ho, dil ko dhadakna tune sikhaaya',\n", - " 'dil ko tadapna tune sikhaaya',\n", - " 'aankhon mein aansu chhupe the kahin',\n", - " 'inko chhalakna tune sikhaaya',\n", - " 'seene mein basaaya kyoon',\n", - " 'dil se jab khelna hi tha',\n", - " 'humse dil lagaaya kyoon',\n", - " 'humse munh modna hi tha',\n", - " 'dil mera churaaya kyoon',\n", - " 'why did you break my heart?',\n", - " 'why did we fall in love?',\n", - " 'why did you go away, away, away, away?',\n", - " 'ho, milti thi nazrein jab bhi nazar se',\n", - " 'uthte the shole jaise jigar se',\n", - " 'saanson se nikla jaise dhuaan sa',\n", - " 'banta tha mujhse jeete na marte',\n", - " 'aag kyoon lagaayi jab',\n", - " 'bujhaaye dil chhodna hi tha',\n", - " 'humse dil lagaaya kyoon',\n", - " 'humse munh modna hi tha',\n", - " 'dil mera churaaya kyoon',\n", - " 'jab yeh dil todna hi tha',\n", - " 'humse dil lagaaya kyoon',\n", - " 'humse munh modna hi tha',\n", - " 'why did you break my heart?',\n", - " 'why did we fall in love?',\n", - " 'why did you go away, away, away, away?',\n", - " 'jinke sar ho ishq ki chaaon',\n", - " 'paaon ke neeche jaanat hogi',\n", - " 'jinke sar ho ishq ki chaaon',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'saare ishq ki chhaaon chal chaiyya chaiyya',\n", - " 'saare ishq ki chhaaon chal chaiyya',\n", - " 'pau janat chale chal chaiyya chaiyya',\n", - " 'pau janat chale chal chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'wo yaar hai jo khushboo ki tarah',\n", - " 'wo jiski zubaan urdu ki tarah',\n", - " 'meri shaam raat, meri kaayanat',\n", - " 'wo yaar mera sainya-sainya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'gulposh kabhi itraaye kahin, mehke to nazar aa jaaye kahin',\n", - " 'gulposh kabhi itraaye kahin, mehke to nazar aa jaaye kahin',\n", - " 'taaveez banaake pehnoon usse, aayat ki tarah mil jaaye kahin',\n", - " 'taaveez banaake pehnoon usse, aayat ki tarah mil jaaye kahin',\n", - " 'gulposh kabhi itraaye kahin, mehke to nazar aa jaaye kahin',\n", - " 'taaveez banaake pehnoon usse, aayat ki tarah mil jaaye kahin',\n", - " 'woh yaar hai jo imaan ki tarah, mera nagma wohi, mera qalma wohi',\n", - " 'mera nagma nagma, mera qalma qalma',\n", - " 'mera nagma nagma, mera qalma qalma',\n", - " 'mera nagma nagma mera qalma qalma',\n", - " 'mera nagma nagma mera qalma qalma',\n", - " 'yaar misaale ous dhale',\n", - " 'paaon ke tale firdous chale',\n", - " 'kabhi daal daal kabhi paat paat',\n", - " 'main hava pe dhoondhoon uske nishaan',\n", - " 'saare ishq ki chaaon chal chaiyya chaiyya',\n", - " 'saare ishq ki chaaon chal chaiyya',\n", - " 'pau janat chale chal chaiyya chaiyya',\n", - " 'pau janat chale chal chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'main uske roop ka shehdaai, wo dhoop chhanv se harjaai',\n", - " 'wo shokh hai rang badalta hai, main rangroop ka saudaai',\n", - " 'main rangroop ka saudaai',\n", - " 'jinke sar ko ishq ki chhaaon, paaon ke neeche jannat hogi',\n", - " 'jinke sar ko ishq ki chhaaon, paaon ke neeche jannat hogi',\n", - " 'shaam raat meri kaaynaat, wo yaar mera sainyaa sainyaa',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'saare ishq ki chaaon chal chaiyya chaiyya',\n", - " 'saare ishq ki chaaon chal chhaiya',\n", - " 'pau janat chale chal chaiyya chaiyya',\n", - " 'pau janat chale chal chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'wo yaar hai jo khushboo ki tarah',\n", - " 'wo jiski zubaan urdu ki tarah',\n", - " 'meri shaam raat, meri kaayanat',\n", - " 'wo yaar mera sainya-sainya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'chal chaiyya chaiyya chaiyya chaiyya',\n", - " 'tak ta tak ta tak, tik thai',\n", - " 'tak ta tak ta tak, mm hm',\n", - " 'san sanana nan, san sanana nan - 2',\n", - " 'tak ta tak ta tak, tik thai',\n", - " 'tak ta tak ta tak, tak tak',\n", - " 'tak ta tak ta tak, tik thai, tak tak',\n", - " '(san sanana nana, san sanana nan',\n", - " 'jaa jaa re jaa re jaa re, jaa re pawan) - 2',\n", - " 'mere jaisa dhoondke laa mera sajan',\n", - " 'san sanana nana, san sanana nan',\n", - " 'jaa jaa re jaa re jaa re, jaa re pawan',\n", - " 'aisa kahin koi nahin - 2',\n", - " 'aisa ho to shaayad main kar loon milan - 2',\n", - " 'jaa jaa, jaa re pawan, jaa re pawan',\n", - " 'san sanana nana, san sanana nan',\n", - " 'jaa jaa re jaa re jaa re, jaa re pawan',\n", - " 'aakaash hai koi prem kavi',\n", - " 'main uski likhi kavita',\n", - " 'oh, aakaash hai koi prem kavi',\n", - " 'main uski likhi kavita',\n", - " 'mere jaisa koi nahin aaya jag mein yug beeta',\n", - " 'chhoo na sake koi mujhe - 2',\n", - " 'chhoo le to haai lag jaaye aggan - 2',\n", - " 'jaa jaa re jaa, jaa re pawan, jaa re pawan',\n", - " 'san sanana nana, san sanana nan',\n", - " 'jaa jaa re jaa re jaa re, jaa re pawan',\n", - " 'yea yea yea yea, yea yea yea yea',\n", - " 'main aap hi apni premika',\n", - " 'main aap hi apni saheli',\n", - " 'haan, main aap hi apni premika',\n", - " 'main aap hi apni saheli',\n", - " 'aur nahin koi apne jaise, bas main ek akeli',\n", - " 'main aaoon to, main jaaoon to - 2',\n", - " 'mujhko dekhe jhuk ke gagan - 2',\n", - " 'jaa jaa, jaa re pawan, jaa re pawan',\n", - " 'san sanana nana, san sanana nan',\n", - " 'jaa jaa re jaa re jaa re, jaa re pawan',\n", - " 'mere jaisa dhoondke laa mera sajan',\n", - " '(san sanana nana, san sanana nan',\n", - " 'jaa jaa re jaa re jaa re, jaa re pawan) - 2',\n", - " 'saawali si raat ho, khamoshi ka saath ho',\n", - " 'hmm, saawali si raat ho, khamoshi ka saath ho',\n", - " 'bin kahe bin sune, baat ho teri meri',\n", - " 'neend jab ho laapata, udasiyaan zara hata',\n", - " 'khwabon ki razaai mein, raat ho teri meri',\n", - " 'jhilmil taaron si aankhein teri',\n", - " 'khaare-khaare paani ki jheelein bhare',\n", - " 'hardam yunhi tu hansti rahe',\n", - " 'har pal hai dil mein khwahishein',\n", - " 'khamoshi ki loriyaan sun to raat so gayi',\n", - " 'bin kahe bin sune, baat ho teri meri',\n", - " 'saawali si raat ho khamoshi ka saath ho',\n", - " 'bin kahe bin sune, baat ho teri meri',\n", - " 'barfi ke tukde sa, chanda dekho aadha hai',\n", - " 'dheere dheere chakhna zara',\n", - " 'hmm, hansne-rulane ka aadha-pauna vaada hai',\n", - " 'kankhi se takna zara',\n", - " 'ye jo lamhe hain lamhon ki behti nadi mein',\n", - " 'haan bheeg loon, haan bheeg loon',\n", - " 'ye jo aankhen hain aankhon ki gumsum zubaan ko',\n", - " 'main seekh loon, haan seekh loon',\n", - " 'ankahee si guftagu, ansuni si justajoo',\n", - " 'bin kahe, bin sune, apni baat ho gay',\n", - " 'saawali si raat ho khamoshi ka saath ho',\n", - " 'bin kahe bin sune, baat ho tеri meri']}}},\n", - " 'eu': {'sentence': {'pop': {'meta': {'train_data': ['baile de san vito',\n", - " 'manhattan boogie-woogie',\n", - " 'vals de viena',\n", - " 'la marsellesa',\n", - " 'menea, menea, menea el bullarengue',\n", - " 'adagio de albinoni',\n", - " 'in-a-gadda-da-vida',\n", - " 'jota aragonesa',\n", - " 'el cóndor pasa',\n", - " 'menea, menea, menea el bullarengue',\n", - " 'himno de riego',\n", - " 'smoke on the water',\n", - " 'pájaro chogüí',\n", - " 'himno a la alegría',\n", - " 'menea, menea, menea el bullarengue',\n", - " 'alehop',\n", - " 'ombra mai fu',\n", - " 'di vegetabile',\n", - " 'cara ed amabile',\n", - " 'soave più',\n", - " 'di vegetabile',\n", - " 'cara ed amabile',\n", - " 'soave più',\n", - " 'ombra mai fu',\n", - " '(desia rire)',\n", - " 'di vegetabile',\n", - " 'cara ed amabile',\n", - " 'soave più',\n", - " 'di vegetabile',\n", - " 'cara ed amabile',\n", - " 'soave dio',\n", - " '(ofeli deum)',\n", - " '(sonia care)',\n", - " '(el fano)',\n", - " 'e no maria',\n", - " 'ofeli deum',\n", - " 'sonia vereno',\n", - " '(o mani)',\n", - " 'el fano...',\n", - " 'aaaaaaaaa...',\n", - " 'sarigenai jo-ku tobashite',\n", - " 'waratteta,wakeeatta,shinjitata',\n", - " 'usonante naihazudatte,omotta',\n", - " 'dou kakushitetano',\n", - " 'one tear ago',\n", - " 'kokoroga tsuuji atteita',\n", - " 'you were the only one',\n", - " 'one tear ago',\n", - " 'i loved you',\n", - " 'mou mukashi no koto',\n", - " 'kizutsuita yakusoku tashi wa',\n", - " 'mamorarezu,kanaerarezu,nanimokamo',\n", - " 'mou nidoto o futaride',\n", - " 'irukotowa nainddayone',\n", - " 'one tear ago',\n", - " 'kokoroga tsuuji atteita',\n", - " 'you were the only one',\n", - " 'one tear ago',\n", - " 'i loved you',\n", - " 'mou mukashi no koto',\n", - " 'one tear ago',\n", - " 'kokoroga tsuuji atteita',\n", - " 'you were the only one',\n", - " 'one tear ago',\n", - " 'i loved you',\n", - " 'mou mukashi no koto',\n", - " 'atarashii koi ni mukaukara',\n", - " 'zutto sutekinahitotone',\n", - " 'hitomi ni utsuru subete o shinjiteta',\n", - " 'anata* no yasashisa ni kitsukazu toki ga sugi',\n", - " 'mou modorenai no?',\n", - " 'toikakete yume no naka samadou**',\n", - " 'sosogi komu hikari no hate ni',\n", - " 'yobi sa mashita kono kioku',\n", - " 'i remember this place nani mo mienai kedo',\n", - " 'futari chikatta kotoba to negai o',\n", - " 'tsuyoku dakishime atte',\n", - " 'nemuri kara sameta tsumikasaneta omoi',\n", - " 'dare mo ga iki isogu nagare no hayasa o tome',\n", - " 'namida ni yadoru kanjou to kokyuu ni oborete',\n", - " 'yuru ginai kakushin o mune ni himete sora he habataku',\n", - " 'i remember this place shinjiteru mata aeru to',\n", - " 'futari chikatta kotoba to negai o mamori tsusukete',\n", - " \"you'll just follow one's heart nani mo osorenai yo\",\n", - " 'namida no kase dake tsuyoku nareru to',\n", - " 'aruki tsuzuke tadori tsuita!',\n", - " 'hoshizora no moto kagayaki',\n", - " 'hi no hikari ni terasarete',\n", - " 'kako mo mirai mo nai sekai',\n", - " 'atarashii tabi o',\n", - " 'i remember this place kono itami nagasarete yuku',\n", - " 'habuka mukashi no ijin ga tsutaeta kotoba ni kasaneru',\n", - " \"you'll just follow one's heart hikari ni tsutsumarete\",\n", - " 'umare kawaru goto ga de kata naraba anata totomoni?',\n", - " 'i remember this place',\n", - " \"you'll just follow one's heart\",\n", - " 'i remember this place',\n", - " \"you'll just follow one's heart\",\n", - " 'atarashii jidai o...',\n", - " 'koe ni nara nai omoi o dore dake tsutaerareru darou',\n", - " 'kizutsuketa tsugunai o mune ni kizami anata to',\n", - " 'meguri aeru to shinjite',\n", - " 'semete dakishimete omoi ga todoita nara',\n", - " 'mezameru no sa tobira wo akete',\n", - " 'hibike itsu made mo samishi sa wo tsuranuite',\n", - " 'mune wo kogashi tsuzukete ite',\n", - " 'takai kabe ni fusagareteru sekai de',\n", - " 'tooku kasumu hikari kiete shimatte mo',\n", - " 'wasurenaide itsu mo soba ni iru yo',\n", - " 'wasurenaide kono merodi',\n", - " 'semete dakishimete aenai hi ga atte mo',\n", - " 'yumemiru koto osorenaide',\n", - " 'semete dakishimete omoi ga todoita nara',\n", - " 'mezameru no sa tobira wo akete',\n", - " 'hibike itsu made mo samishi sa ha',\n", - " 'kimi kara mezameta',\n", - " 'tsuyoku dakishimete kono ai ga',\n", - " 'samete shimau mae ni',\n", - " \"now, i'll hold you with love\",\n", - " 'bye bye c-boy',\n", - " 'anata no nozomi wa',\n", - " 'okiku narukara',\n", - " 'tsutsumiki renai no',\n", - " 'itsuka mata',\n", - " 'aeru toki made',\n", - " 'bye bye c-boy',\n", - " 'nani mo iwanaide',\n", - " 'bye bye c - boy',\n", - " 'ochi wa dokonano',\n", - " 'kizutsuki sa ma yoni',\n", - " 'nani ka ni obieteru',\n", - " 'kono mama de wa',\n", - " 'kigakari dakedo',\n", - " 'bye bye c-boy',\n", - " 'nani mo iwanaide',\n", - " 'bye bye c-boy',\n", - " 'bye bye c-boy',\n", - " 'bye bye c-boy',\n", - " 'c-boy',\n", - " '(she said to know',\n", - " 'this is the sign of covenant',\n", - " 'which i make between myself,?',\n", - " 'c-boy, c-boy, c-boy...)',\n", - " 'bye bye c-boy',\n", - " 'anata wa wakasugite',\n", - " 'hontō no watashi o',\n", - " 'wakattemoraenai',\n", - " 'kono sekai ga',\n", - " 'kawaru toki made',\n", - " 'bye bye c-boy',\n", - " 'nani mo iwanaide',\n", - " 'bye bye c-boy',\n", - " 'bye bye c-boy',\n", - " 'bye bye c-boy',\n", - " 'c-boy',\n", - " 'bye bye c-boy',\n", - " 'bye bye c-boy',\n", - " 'bye bye c-boy',\n", - " 'good bye bye bye',\n", - " \"i just can't stop hearing your laughter\",\n", - " \"you can't hide your eyes of pity\",\n", - " 'sleep! my friend',\n", - " 'god only knows my fate',\n", - " 'there burns my soul!',\n", - " 'kumo ni nokotta kizuato tsuki no akari ga kazoeru owari',\n", - " 'nemure shoujo ni modotte',\n", - " 'moeru hikari o matotte',\n", - " 'kuruizaita hanabira aoi tsuki',\n", - " 'anata ha iki nagara yakare',\n", - " 'sono karada ga hanatsu hikari ga mabushi sugite',\n", - " 'sleep! my friend',\n", - " 'shibarareta no ha \"yowasa\" de nui-awaseta shinjitsu o kataru',\n", - " 'soko ni nikushimi ha nakatta',\n", - " 'soko ni ai dake ga atta',\n", - " 'dare darou to kegasu no ha yurusanai',\n", - " 'tatoe anata datoshite mo',\n", - " 'kizuki-ageta kono ai dake ha',\n", - " 'karesasenai sleep! my friend',\n", - " 'wakare o kimeta yozora ni asa ha michizure o koban deru',\n", - " 'kitto shinjite iru kara',\n", - " 'soko ni ai ga aru koto o',\n", - " 'kuruizaita hanabira aoi tsuki',\n", - " 'anata ha iki nagara yakare',\n", - " 'yoake ga ima, hanatsu hikari ga mabushi sugite',\n", - " 'sleep! my friend',\n", - " 'dare darou to kegasu no ha yurusanai',\n", - " 'tatoe anata datoshite mo',\n", - " 'kizuki-ageta kono ai dake ha',\n", - " 'karesasenai sleep! my friend',\n", - " \"now you've got everything i gave to\",\n", - " \"i'm so proud of time spend with you, baby\",\n", - " 'grand pain',\n", - " \"i'm gonna fling you to the wind\",\n", - " \"now you've got everything i gave to\",\n", - " \"i'm so proud of time spend with you, baby\",\n", - " 'grand pain',\n", - " \"i'm gonna fling you to the wind\",\n", - " 'must build it now sameta koko kara',\n", - " 'i must break it now aishita mono wo',\n", - " 'i must leave it now subete wo koroshite',\n", - " 'i must confess it now soto he dekakeyou',\n", - " \"i'm just building that omou ga mama no\",\n", - " \"i'm just breaking that rakuen mezasu\",\n", - " \"i'm just leaving that setsunai keredo\",\n", - " 'i must confessing that mune ha takanaru',\n", - " 'asa, mezameta toki',\n", - " 'ore no ryouude ha hikichigirareteita',\n", - " 'sou sa, buzama na you de',\n", - " 'kamen hazuseba shozen konna mon sa',\n", - " 'dakedo dakara koso, narifuri kamawazu',\n", - " 'imadani soko de matsu kimi ni ai ni ikeru',\n", - " 'doredake no kizu wo kizamikomareyou to',\n", - " 'kioku no kanata ni kieta ano hi wo sagasou',\n", - " 'anata no sugata nara donna hitogomi demo',\n", - " 'hanarete ite mo kanarazu mitsuketeta',\n", - " 'dakedo ima konna ni chikaku ni iru no ni',\n", - " 'anata no kokoro sukoshi mo mie nai',\n", - " \"we can't go back, but if we could, we will get same answer\",\n", - " \"we close to the edge, it can't be help, i won't see your heart again ×2\",\n", - " 'futashika na kokoro no kyori fuan darake da yo',\n", - " 'doredake futari wa tsunagatte iru no darou',\n", - " 'tsukuri warai ga itai yo',\n", - " 'sukoshi no koto de sugu kimochi ga shizun de',\n", - " 'yowaki ni natteku jibun ga iyada yo',\n", - " \"we can't go back, but if we could, we will get same answer\",\n", - " \"we close to the edge, it can't be help, i won't see your heart again ×2\",\n", - " 'naze motto futari umakui ka nain darou ne',\n", - " 'sore demo anata wo omotte iru, dakara',\n", - " 'make nai yo kurushikute mo',\n", - " 'sure chigau futari wa ima shabon-dama no you ni',\n", - " 'ware sou ni natte na ni nimo ie nai mama iru yo',\n", - " 'futari susumu michi wa mou wakatterunda',\n", - " 'demo norikoetai anata to tomo ni',\n", - " 'tatoe muri dato shite mo',\n", - " 'kitto',\n", - " 'hegoak ebaki banizkio',\n", - " 'neria izango zen',\n", - " 'ez zuen aldegingobainan, honela',\n", - " 'ez zen gehiago txoria izango',\n", - " 'eta nik...txoria nuen maite',\n", - " 'the bird which is a bird',\n", - " 'if i had cut the wings to her',\n", - " 'she would have been mine',\n", - " 'she would not be flees',\n", - " 'but,thus',\n", - " 'she would not have been anymore a bird',\n", - " \"and me...it's the bird which i loved\",\n", - " 'raining natsu no gogo ni tōriame kasa no shita',\n", - " 'kissing nureta hō ni sotto kuchizuketa',\n", - " 'ano kisetsu ni mada kogarete iru',\n", - " 'miss you mado no soto ni tōzakaru keshiki-tachi',\n", - " 'breezing niji ga mieta sugu ni kie sō de',\n", - " 'ame ashita wa furanakere ba ī',\n", - " 'nani mo te ni tsukazu ni uwanosora no hibi',\n", - " \"nothing but you're the part of me\",\n", - " 'mada tarinakute',\n", - " 'mada kienakute',\n", - " 'kasaneta tenohira kara osana-sa ga',\n", - " 'what a good thing we lose?',\n", - " 'what a bad thing we knew',\n", - " 'sonna fureizu ni nureteku ame no naka',\n", - " 'tada tarinakute',\n", - " 'mada ienakute',\n", - " 'kazoeta hi no yume kara sayonara ga',\n", - " 'what a good thing we lose?',\n", - " 'what a bad thing we knew',\n", - " 'furerarezu ni iretara waraeta ka na?',\n", - " 'calling shiroi iki ga maiagaru sora no shita',\n", - " 'freezing tsuyoi kaze ni sukoshi kajikanda te to',\n", - " 'yowa-sa o poketto no naka ni',\n", - " 'doko o miwatashite mo tōrisugita hibi',\n", - " \"nothing but you're the part of me\",\n", - " 'mata furetakute',\n", - " 'tada mabushiku te',\n", - " 'omowasu me o sorashita yasashi-sa ni',\n", - " 'i wanna sleep in your feel',\n", - " 'i wanna see you in the deep',\n", - " 'sonna fureizu o narabeta uta o ima',\n", - " 'ano kaerimichi basu ni yurarete',\n", - " 'kanau hazu mo nai yō na yume o mite',\n", - " 'i wanna sleep in your feel',\n", - " 'i wanna see you in the deep',\n", - " 'kurikaesu kisetsu ni narenai mama',\n", - " 'mō sukoshi kurai otona de iretara',\n", - " 'nan te ietadarō',\n", - " 'mada tarinakute',\n", - " 'mada kienakute',\n", - " 'kasaneta tenohira kara osana-sa ga',\n", - " 'what a good thing we lose?',\n", - " 'what a bad thing we knew',\n", - " 'sonna fureizu ni nureteku ame no naka',\n", - " 'tada tarinakute',\n", - " 'mada ienakute',\n", - " 'kazoeta hi no yume kara sayonara ga',\n", - " 'what a good thing we lose?',\n", - " 'what a bad thing we knew',\n", - " 'furerarezu ni iretarawaraeta ka na?',\n", - " 'iruñeako reggae-ska taldeak klub ska aurkezten dizue',\n", - " 'du pays basque, skalariak',\n", - " 'comment ça va, beti ska, és bienvenido a este lugar',\n", - " 'welcome, welcome, ongi etorri to the klub ska',\n", - " 'welcome, welcome, ongi etorri to the klub ska',\n", - " 'peitus lorta star',\n", - " 'ratu kapyu wa',\n", - " 'teni priktu pyor',\n", - " 'irnri kus vorchia tvoirta',\n", - " 'no pis isu ra',\n", - " 'hrisus viktura',\n", - " 'kenih karta kui',\n", - " 'mei a kwonti kunra chi',\n", - " 'sofeila nomeia',\n", - " 'shurkaio duri nana',\n", - " 'chukara furwana',\n", - " 'orlano somarago',\n", - " 'rise',\n", - " 'why am i here nowhere ?',\n", - " 'why am i here nowhere ?',\n", - " 'my dis your dis',\n", - " 'why am i here nowhere ?',\n", - " 'why am i here nowhere ?',\n", - " 'why am i here nowhere ?',\n", - " 'my dis your dis',\n", - " 'inori sasagu maria mou nido to modorenai',\n", - " 'omoi tsugeru maria mou hitori no kioku ni',\n", - " 'forbidden relation with love',\n", - " 'my dis love',\n", - " 'why am i here nowhere ?',\n", - " 'why am i here nowhere ?',\n", - " 'why am i here nowhere ?',\n", - " 'my dis your dis',\n", - " 'my dis your dis',\n", - " 'inori sasagu maria mou nido to modorenai',\n", - " 'omoi tsugeru maria mou hitori no kioku ni',\n", - " 'forbidden relation with love',\n", - " 'toki no naka e maria mou nido to modorenai',\n", - " 'to eien ni nemuru maria mou hitori no kioku ni',\n", - " 'forbidden relation with love',\n", - " 'anata e...',\n", - " 'fui ni mikakete shimatta yo (yeah, i saw him)',\n", - " 'machikado de kimi no kareshi o (i told you)',\n", - " \"tanoshi-sō ni hoka no on'nanoko to ude o\",\n", - " \"kun detakedo koreijō wa (i don't wanna hurt you)\",\n", - " 'hanashite mo dōse okorushi ne (why?)',\n", - " '\"kare wa son\\'na hito janai\" tte (sure you\\'re right)',\n", - " 'dakara kimi no kaoiro ukagainagara',\n", - " '\"ki no seidatta\" tte itta (i\\'m sorry)',\n", - " 'oh, naze wakatte kurenai no?',\n", - " 'saki no nai mirai o hitori de mattete (no)',\n", - " 'kimi no kanashimu toko nante mitakunai nda, baby',\n", - " \"an'na yatsu yori mo ore no kata ga\",\n", - " 'kimi no koto shiawase ni deki-sō sa',\n", - " 'kimi o aishi tenai koto wa',\n", - " 'shitterunoni itsu made nai teru no sa?',\n", - " \"son'na kare no koto kataru kimi wa (you look happy)\",\n", - " \"terete ukare-gimina koe de (i'm happy)\",\n", - " '\"isshōgai itsu made mo issho ni doko made mo',\n", - " 'tsuite ku\" ttе (i don\\' t know what to say no more)',\n", - " 'iukedo mawari no tomodachi ni wa (yup, they know)',\n", - " \"barеteruyo kare no chara-sa wa (it's you)\",\n", - " 'they say love is blind, oh, baby, you so blind',\n", - " 'teokure ni naru mae ni',\n", - " 'oh, naze wakatte kurenai no?',\n", - " 'iiwake nanka wa kiki akitekita',\n", - " 'shinsō o sake teru dake',\n", - " 'nanoha o mitōshi, baby',\n", - " \"an'na yatsu yori mo ore no kata ga\",\n", - " 'zutto kiminotonari ga niai-sō sa',\n", - " 'ore wa baka mite mo ī no sa',\n", - " 'kono kimochi kakushi teru kurainara',\n", - " 'yeah, miss sunshine itsu demo',\n", - " 'saikōna smile doko demo',\n", - " 'saikōna life shika niawanai',\n", - " 'saiakuna yatsu wa… niawanai',\n", - " 'ura ga ari-sō ore no kan kara',\n", - " \"yatsu wa maji fakin' dakara\",\n", - " 'kimi no menomaede',\n", - " 'me ga oyoi deru nante hiku no teihen',\n", - " 'kimi o nakaseru nante majiarienai, baby',\n", - " 'koko kara kimidake o ubai satte ikitai, baby',\n", - " 'demo kekkyoku shōjiki-sha-tachi wa baka o miru, uh',\n", - " 'but you know what?',\n", - " \"an'na yatsu yori mo ore no kata ga\",\n", - " 'kimi no koto shiawase ni deki-sō sa',\n", - " 'kimi o aishi tenai koto wa',\n", - " 'shitterunoni itsu made nai teru no sa?',\n", - " \"an'na yatsu yori mo ore no kata ga\",\n", - " 'zutto kiminotonari ga niai-sō sa',\n", - " 'ore wa baka mite mo ī no sa',\n", - " 'kono kimochi kakushi teru kurainara',\n", - " \"i was alone... i can't get to the sky...\",\n", - " \"alone for all time! i can't get to the sky...\",\n", - " 'kawaki kuzure ochita hitoaku no negai',\n", - " 'naguritsukeru suna no ame ga subete wo saratta',\n", - " \"alone for all time! i can't get to the sky...\",\n", - " 'grow worse',\n", - " 'alone for all time! with scars...',\n", - " 'kawaki mizu motomete ubaiau sekai',\n", - " 'sakeru kizu wo umeteku no wa yuganda yokubou datta',\n", - " \"alone for all time! i can't get to the sky...\",\n", - " 'grow worse',\n", - " 'alone for all time! with scars...',\n", - " 'sabaku wo tobitatsu gensou, hiai hane ni kae',\n", - " 'tsuiraku suru sora ni wakare tsugete hatenaku',\n", - " 'shiroku kagayaku tatoe moetsukite mo...',\n", - " 'the vain world...',\n", - " 'besides... dareka ga ochiru yura yurete',\n", - " 'desire... hitori de wa sora ni fukaku oboresou de...',\n", - " 'sabaku wo tobitatsu gensou, hiai hane ni kae',\n", - " 'tsuiraku suru sora ni wakare tsugete hatenaku',\n", - " 'tatoe tsukite mo hane wo hirogete miseyou',\n", - " 'asu wo nugutte shimai sou na kurayami no naka mieta mono',\n", - " 'sotto fureta hoho tsutau namida',\n", - " 'kizamu toki no iro',\n", - " 'soko ni kimi ga ita',\n", - " 'ano hibi no kaze wa',\n", - " 'kimi no kakera mune ni oita',\n", - " 'i want, i want to stay alive',\n", - " 'kimi to sugoshita hibi ni',\n", - " \"i'm walking to one side\",\n", - " 'futari no michi chigau nanika wo mite ita kara',\n", - " 'our pieces fit all wrong',\n", - " 'kamiawazu ni kizuku koto dekinakatta',\n", - " 'asu wo nugutte shimai souna kurayami no naka me wo korashita',\n", - " 'sotto fureta hoho tsutau namida',\n", - " 'kkizamu toki no iro',\n", - " 'soko ni kimi ga ita',\n", - " 'moshi boku ga ano hi chigau mirai eranda nara...',\n", - " 'sotto yureru mado utsuru jibun toikaketa',\n", - " \"i'm picking up pieces\",\n", - " 'arifurete mo modoreru no nara kimi wo hanasanai',\n", - " 'you broke my confusion',\n", - " 'onaji yume ni se wo mukezu irareru you ni',\n", - " 'moshi kasukana hikari de sae mo',\n", - " 'sono saki ni aru mirai nara',\n", - " 'hatenai kanashimi norikoete',\n", - " 'shinjitai ima wo',\n", - " 'kimi to mita hibi wo',\n", - " 'wasure kaketeta kawaranu kioku no kaze',\n", - " 'kieta negai wo nosete',\n", - " 'asu wo nugutte shimai sou na kurayami no naka me wo korashita',\n", - " 'sotto fureta hoho tsutau namida',\n", - " 'kizamu toki no iro',\n", - " 'shinjitai ima wo',\n", - " 'kimi to mita hibi wo',\n", - " 'aitakute furetakute',\n", - " 'me no mae ni iru no ni',\n", - " 'ima ko yatte dakiatsu tete mo',\n", - " 'your eyes off on me',\n", - " 'boku wo mite boku dake wo mite',\n", - " 'kizukeba kyo mo mata aiso warai',\n", - " 'where are you?',\n", - " 'where are you?',\n", - " 'where are you?',\n", - " 'where is your heart?',\n", - " 'where are you?',\n", - " 'where are you?',\n", - " 'where are you?',\n", - " 'where is your heart?',\n", - " 'where are you?',\n", - " 'where are you?',\n", - " 'where are you?',\n", - " 'where is your heart?',\n", - " \"kon'na sugu-gawa ni iru no ni\",\n", - " 'kurushikute tsumetakute',\n", - " 'mune ga kishimu dakenanoni',\n", - " 'ne doshite, ne doshite',\n", - " 'why my skin acts like this?',\n", - " 'kasane atte nagusame atte oshimai',\n", - " 'kao mo mitakunai hodo aishiteru',\n", - " 'i love you, i love you, i love you, and i hate you',\n", - " 'i love you, i love you, i love you, and i hate you',\n", - " 'i love you, i love you, i love you, and i hate you',\n", - " 'mo kimi ni wa kikoenai',\n", - " 'i love you, i love you, i love you, and i hate you',\n", - " 'i love you, i love you, i love you, and i hate you',\n", - " 'i love you, i love you, i love you, and i hate you',\n", - " 'mo kimi ni wa kikoenai',\n", - " 'mo kimi ni wa kikoenai',\n", - " 'kalekantoian jira, auzo zarrean',\n", - " 'banabil, banabil, beste norabait noa',\n", - " 'plazaren gibelean, indatxiki bateik hurbil',\n", - " 'hor zegonk! fundi nadila!',\n", - " 'biba karrika ska',\n", - " '¡viva la kalle ska!',\n", - " '¡viva la kalle ska!',\n", - " 'turned a corner in old district',\n", - " \"keepin' walkin' my own way\",\n", - " 'after the square, near the alley',\n", - " 'there it is, fucking hell',\n", - " '¡viva la kalle ska!',\n", - " '¡viva la kalle ska!',\n", - " '¡viva la kalle ska!',\n", - " 'anar donant voltes, sense un nord clar',\n", - " 'pel laberint que és aquesta ciutat',\n", - " 'ja edc ser-hi a prop \"oita!\" ja l\\'he trobat!',\n", - " 'que bé! visca la terra, visca el carrer ska!',\n", - " '¡viva la kalle ska!',\n", - " '¡viva la kalle ska!',\n", - " 'la gente di strada passo sicuro',\n", - " 'si lascia dietro le ferite e la censura',\n", - " \"seguendo l'istinto di un ritmo in levare\",\n", - " 'e vivere gridando viva la kalle ska!',\n", - " '¡viva la kalle ska! ¡viva la kalle ska!',\n", - " '¡viva la kalle ska! ¡viva la kalle ska!',\n", - " '¡viva la kalle ska! ¡viva la kalle ska!',\n", - " '¡viva la kalle ska! (¡está en la calle!) ¡viva la',\n", - " 'kalle ska!',\n", - " '¡viva la kalle ska! ¡viva la kalle ska!',\n", - " 'hayareba sutaru to iwa reru sekai de',\n", - " 'doko e mukaeba ii toyuu no ka?',\n", - " 'do sunda? do sunda?',\n", - " 'shika reta reru wo kakenukeru dake ja',\n", - " 'nanika monotarinai to omou nda',\n", - " 'donanda? donanda?',\n", - " 'mujun wo kakaeta kokoro no sakebi ga kikoeru kai?',\n", - " 'chigau tte iwa reta tte ii',\n", - " 'boku ra no beat de hashiru dake sa',\n", - " \"we live just like rock'n'roll\",\n", - " 'dare mo ga tayasuku yume wo utaukedo',\n", - " 'nagusame ni shika kikoenai nda',\n", - " \"nan'nanda? nan'nanda?\",\n", - " 'nagare ga arunara yudanete miyou ka?',\n", - " 'nariyuki makase demo kamawanai',\n", - " 'sonanda sonanda',\n", - " 'korogari tsuzukete doko made ikeru ka',\n", - " 'kigatsukeba boku ra no mezasu bashoda',\n", - " 'sono saki no koto wa kangaezu ni',\n", - " \"we live just like rock'n'roll\",\n", - " 'detatokoshobu de',\n", - " 'me no mae no kabe wo buchikowase',\n", - " 'ikioi tsukete susume',\n", - " \"son'na ikikata ni akogare teta\",\n", - " 'zutto kitto motto',\n", - " 'mujun wo kakaeta kokoro no sakebi ga kikoeru kai?',\n", - " 'chigau tte iwa reta tte ii boku ra no beat de hashiru dake sa',\n", - " \"we live just like rock'n'roll\"]},\n", - " 'data': [\"kiss kiss kissin' noise love love lost my love\",\n", - " \"kiss kiss kissin' noise love love lost my love\",\n", - " 'puraido wo sutete yaru sa ai no nai anata no tame ni',\n", - " 'sono kao no yasashisa wa uso darou',\n", - " 'good luck sabireta kage ga anata ga jealousy sae mo kizu tsuketa',\n", - " 'saigo made sono saigo no toki made wa futari wa totemo yurusenai kara',\n", - " 'return to our mother close my close my life',\n", - " 'urusai kiss nakushita ai sore mo jinsei',\n", - " 'motome au mono nani mo katarazu ooinaru kage ima wa sabirete',\n", - " 'sutereotaipu yoru ni dakareteru dakara',\n", - " 'puraido wo sutete yaru sa ai no nai anata no tame ni',\n", - " 'sono kao no yasashisa wa uso darou',\n", - " 'noise anata no kiss kara nogare',\n", - " 'noise itsuka ano basho ni kaeru',\n", - " 'noise darake karamawari shite itemo',\n", - " 'good luck sabireta kage ga anata ga jealousy sae mo kizu tsuketa',\n", - " 'saigo made sono saigo no toki made wa futari wa totemo yurusenai',\n", - " 'i and love',\n", - " \"don't kiss me noisy love don't kiss me only you\",\n", - " \"don't kiss me lost my love\",\n", - " 'chikara makase no sono te wo hodoite',\n", - " 'nozondeta no wa anata no hou desho?',\n", - " 'kamawanai de ye, ye, yei',\n", - " 'suki ni sasete ye, ye, yei',\n", - " \"now i'm on my way, way, way\",\n", - " \"ima nara dekiru wa i'll say good-bye\",\n", - " 'mou modorenai just broken heart',\n", - " 'moetsukita no true love is gone',\n", - " 'tsuyogaru mune sakebu kedo',\n", - " 'just broken heart',\n", - " 'nee kirai ni naru mae ni',\n", - " 'senaka mukete get outta here',\n", - " 'namida nanka misetakunai',\n", - " 'just broken heart',\n", - " 'torimidashite sugaru no wa yamete',\n", - " 'ii kagen ni kakugo wo kimete yo',\n", - " 'kao wo agete ye, ye, yei',\n", - " 'arukidashite ye, ye, yei',\n", - " 'you can find your way, way, way',\n", - " \"kizutsukeau yori let's say good-bye\",\n", - " 'mou modorenai just broken heart',\n", - " 'moetsuktia no true love is gone',\n", - " 'tsuyogaru mune sakebu kedo',\n", - " 'just broken heart',\n", - " 'nee kirai ni naru mae ni',\n", - " 'senaka mukete get outta here',\n", - " 'namida nanka misetakunai',\n", - " 'just broken heart',\n", - " \"go where you wanna go don't chase me anymore×3\",\n", - " 'go where you wanna go',\n", - " 'mou modorenai just broken heart',\n", - " 'moetsuktia no true love is gone',\n", - " 'tsuyogaru mune sakebu kedo',\n", - " 'just broken heart',\n", - " 'nee kirai ni naru mae ni',\n", - " 'senaka mukete get outta here',\n", - " 'namida nanka misetakunai',\n", - " 'just broken heart',\n", - " \"go where you wanna go don't chase me anymore×2\",\n", - " 'go where you wanna go',\n", - " 'nami ga uneru musuu no ude ga ikite iku sube o kime kanete iru',\n", - " 'zen to aku ga enshutsu-sarete iki o nomu you na entertainment',\n", - " 'nou ga uneru tanin no ishi ga subliminal de ori-komarete iku',\n", - " 'sou ne kimi o tatoeru nara ba jikken case no shiroi mouse',\n", - " 'hoho o tsutatte ochita namida no shizuku sae mo tasuuketsu ni yotte kyakka-sareru',\n", - " 'ayatsutte kimi no kido-airaku gouriteki ni muda no nai you ni',\n", - " 'dare mo ga shinji aeru sekai madowasarezu ni nagare o midasazu ni',\n", - " 'kankaku ni mebaeta wazuka na gimon sae mo tasuuketsu ni yotte kyakka sareru',\n", - " 'ayatsutte kimi no kido-airaku gouriteki ni muda no nai you ni',\n", - " 'sentaku no yurusare nai sekai mimi o fusaite shikou mo tomete',\n", - " 'ayatsutte kimi no kido-airaku seishin ga kowarenai you ni',\n", - " 'utagai no yochi na donai sekai muri ni waratte sono te o sashi-nobete',\n", - " 'mistake, escape, \"responsibility\"',\n", - " 'despair, death way, \"all is to hope\"',\n", - " \"it's grown into a scream\",\n", - " 'kedarui music unzari',\n", - " \"it's grown into a scream\",\n", - " 'gaiken dake nakami karappo',\n", - " 'genkai wo toppashite fly away',\n", - " 'sekai igamasu vol. de',\n", - " 'sorezore no bakkuguraundo output',\n", - " 'kore ga umarete new rock',\n", - " 'is everybody going crazy?',\n", - " 'kane ni doku sareta melody',\n", - " 'is everybody going crazy?',\n", - " 'sore ni muragaru kado ni miihaa',\n", - " 'kudaranai baka na kategoraizu',\n", - " 'sono kabe buchi kowashitakute',\n", - " 'hibikaseru bakkingu to cool beat',\n", - " 'nori okureru na new wave',\n", - " 'dare mo mane ga dekinai music maikurofon kara digital input',\n", - " 'dare mo mane ga dekinai music todokeru ultimate na energy',\n", - " 'kono chiki zutto itsumademo toi wo kasaneru \"ima no haya\" ni',\n", - " 'odori odorasarete ataru isshun no eikou wa iranai',\n", - " 'genkai wo toppashite fly away',\n", - " 'sekai igamasu vol. de',\n", - " 'sorezore no bakkuguraundo output',\n", - " 'kore ga umarete new rock',\n", - " 'kudaranai baka na kategoraizu',\n", - " 'sono kabe buchi kowashitakute',\n", - " 'hibikaseru bakkingu to cool beat',\n", - " 'nori okureru na new wave',\n", - " 'ano hi boku ga nigirishimeteta yume',\n", - " 'ima wa koko ni atte',\n", - " 'hitori ni natte doko ni itatte',\n", - " 'omotteru kimi ni',\n", - " 'mune wo tsuki sasu itami sae mo',\n", - " 'wasuretaku nai yo',\n", - " 'to tsutae nai no wa',\n", - " 'semete no kimochi',\n", - " 'bariki wo saidai ni kiipu',\n", - " 'koko kara wa',\n", - " 'iya kitto hitori de ikeru to',\n", - " 'madamada faito',\n", - " 'ushinatta koto mo kate ni natte',\n", - " 'ikite ikeru to',\n", - " 'ii kikaseru',\n", - " 'subete nagedashi',\n", - " 'ima sugu ni kimi wo kono te ni tada',\n", - " 'daki yosetai yo to negau koe mo',\n", - " 'hanareteku kyori ni todoka nai kimi no nioi',\n", - " 'tada kaze ni yurete kieteku',\n", - " 'yume no daishou ni...',\n", - " 'osanai hi ni oboeta kanashimi ga',\n", - " 'ima mo wasurerare nai to',\n", - " 'uchi akete kureta',\n", - " 'kako no kizu de sae mo',\n", - " 'itoshi sugita kara',\n", - " 'kimochi ga tsutawari sugite',\n", - " 'koware nai you ni kie nai de',\n", - " 'sou te wo tsunageba yokatta',\n", - " 'its not so easy to be consistent',\n", - " 'ibara demo',\n", - " 'tomaru koto no nai',\n", - " 'toki no naka hashiri tsuzukeru',\n", - " 'furikaeru hibi nante imi nai kara',\n", - " 'te no todoku kyori ni ita kimi no nukumori sae',\n", - " 'omoidase nai de ikiteku',\n", - " 'wasuretaku nai no ni...',\n", - " 'kotoba mo ie nai mama ni',\n", - " 'kanjou wo kiipu',\n", - " 'saisho wa daitai',\n", - " 'iron wa same nai mama ni',\n", - " 'daionryou kiipu',\n", - " 'bai bai bai bai',\n", - " 'iou to zutto omotteta mono',\n", - " 'kotoba tte nande tsutaekirezu ni',\n", - " 'matte tatte modotte ko nai',\n", - " 'wakare tokatte wasureteku kara',\n", - " 'subete nagedashi',\n", - " 'ima sugu ni kimi wo kono te ni tada',\n", - " 'daki yosetai yo to negau koe mo',\n", - " 'hanareteku kyori ni todoka nai kimi no nioi',\n", - " 'tada kaze ni yurete kieteku',\n", - " 'yume no daishou ni...',\n", - " 'tsutaetai kedo',\n", - " 'bariki wo saidai ni kiipu',\n", - " 'koko made wa',\n", - " 'iya kitto kimi ga ita kara',\n", - " 'madamada faito',\n", - " 'kimi no kotoba ga kate ni natte hashiri tsudukeru',\n", - " 'hashiri tsuzukeru',\n", - " 'ikutsumono toki no naka de kimi no yume o miteitai',\n", - " 'ikutsumono yume o koete kimi ni aeru sono hi made',\n", - " 'ikutsumono toki no naka de kimi no yume o miteitai',\n", - " 'kimi wa karen na hana no youni',\n", - " 'sotto boku no mune no naka saiteiru yo',\n", - " 'kimi ni aitakute aenakute kurushikute',\n", - " 'ima mo kimi dake o kimi dake o omou',\n", - " 'kimi to tooku hanarete itemo zutto',\n", - " 'karezu boku dake ni hohoendeite',\n", - " 'kaze ga hakondekita ano kaori wa',\n", - " 'kitto kimi kara todoita messeeji',\n", - " 'kimi ga itoshikute itoshikute itai hodo',\n", - " 'kimi ni tsutaetai tsutaetai omoi',\n", - " 'ikutsumono yume o koete kimi ni aeru sono hi made',\n", - " 'ikutsumono toki no naka de kimi no yume o miteitai',\n", - " 'kimi ga itoshikute itoshikute itai hodo',\n", - " 'kimi ni tsutaetai tsutaetai omoi',\n", - " 'kimi ni aitakute aenakute kurushikute',\n", - " 'ima mo kimi dake o kimi dake o omou',\n", - " 'hagureta kizu darake no tori wo miteta',\n", - " 'kimi naraba nani wo omoudarou?',\n", - " 'usorona kimi no me ga sabishi kute',\n", - " 'iroaseta...marude owari wo miteru you ni',\n", - " 'yureta sora no shita kimi no te ni nukumori wo tada tsutaete itai taeru made...',\n", - " 'moe yuku aoki umi ga chiheisen mo',\n", - " 'hora sakeru marude owari he to mukau you ni',\n", - " 'ima umi wo koe furisosogu shikisai ga engakidasu chi de',\n", - " 'karenai omoi ga ima kudakechiru kimi no soba he...kono uta nose',\n", - " 'wataru tori ga tabi no owari wo yume mite ita sono hitomi wa dore dake jyoukei mitsumeta?',\n", - " 'wareta sora no naka kimi no te ni nukumori wo tada tsutaete itai',\n", - " 'kimi to me ni utsusou ikuoku no iro ga tokekomu keshiki wo',\n", - " 'kono uta wo kuchiguse no you ni kimi dake ni afuredasu koto no ba wo tsunagi omoi wo todokete...',\n", - " 'iro wa kie onto mo naku shizuka ni yuki ga furu',\n", - " 'kaze no ugokanai mori no naka de nemutte itan dayo',\n", - " 'we’re discouraged',\n", - " 'we’re discouraged',\n", - " 'stillness in time',\n", - " 'we’re discouraged',\n", - " 'we’re discouraged',\n", - " 'stillness in time',\n", - " 'iro no narabi ga chigau niji ga sora ni kakaru',\n", - " 'gyaku nu nakareru jikan no naka de mezamerun darou',\n", - " 'we’re discouraged',\n", - " 'we’re discouraged',\n", - " 'stillness in time',\n", - " 'we’re discouraged',\n", - " 'we’re discouraged',\n", - " 'stillness in time',\n", - " 'we’re discouraged',\n", - " 'stillness in time',\n", - " 'we’re discouraged',\n", - " 'stillness in time',\n", - " 'we’re discouraged',\n", - " 'we’re discouraged',\n", - " 'stillness in time',\n", - " 'we’re discouraged',\n", - " 'we’re discouraged',\n", - " 'stillness in time',\n", - " 'we’re discouraged',\n", - " 'stillness in time',\n", - " 'we’re discouraged',\n", - " 'stillness in time',\n", - " 'bazkaldurikan bapo-bapo',\n", - " 'goazen bai plazara',\n", - " 'hantxen egingo degu',\n", - " 'gogotik algara',\n", - " 'oraindikan, mutilak',\n", - " 'tragotxo bat bota',\n", - " 'bota, bota beste bat',\n", - " 'oraindikan bota',\n", - " 'bazkaldurikan bapo-bapo',\n", - " 'goazen bai plazara',\n", - " 'hantxen egingo degu',\n", - " 'gogotik algara',\n", - " 'tragoarekin zaigu, zaigu',\n", - " 'barrena pixkortu',\n", - " 'ez zan gizon makala',\n", - " 'hau zuena sortu',\n", - " 'oraindikan, neskatxak',\n", - " 'tragotxo bat bota',\n", - " 'bota, bota beste bat',\n", - " 'oraindikan bota',\n", - " 'bazkaldurikan bapo-bapo',\n", - " 'goazen bai plazara',\n", - " 'hantxen egingo degu',\n", - " 'gogotik algara',\n", - " 'oraindikan, mutilak',\n", - " 'tragotxo bat bota',\n", - " 'bota, bota beste bat',\n", - " 'oraindikan bota',\n", - " 'din don',\n", - " '(c. m. alberdi)',\n", - " 'din don, din don, din don',\n", - " 'orain hameikak',\n", - " 'din don, din don, din don',\n", - " 'laster hamabixek',\n", - " 'dun! jo dik ordu bata',\n", - " 'din don ordu bixek',\n", - " 'holako erlojurik',\n", - " 'ez zaukek azpeitixek',\n", - " 'mi tío procurador',\n", - " 'mi padre alkate',\n", - " 'mis hermanas maestras',\n", - " 'conmigo cásate',\n", - " 'ai! mírame, gaxua!',\n", - " 'erantzun ezazute',\n", - " 'zertarako hoiekin',\n", - " 'ezkontzen zerate?',\n", - " 'din don...',\n", - " 'mi aittitte relojero',\n", - " 'mi tía jostune',\n", - " 'mi hermano mixionero',\n", - " 'conmigo cásate',\n", - " 'ai! mírame, gaxua!',\n", - " 'erantzun ezazute',\n", - " 'zertarako hoiekin',\n", - " 'ezkontzen zerate?',\n", - " 'din don...',\n", - " 'gipuzkoa erdian',\n", - " 'izarraitz menpian',\n", - " 'urola barrenian',\n", - " 'azkoitiko herrian',\n", - " 'ai! mírame, gaxua!',\n", - " 'erantzun ezazute',\n", - " 'zertarako hoiekin',\n", - " 'ezkontzen zerate?',\n", - " 'din don...',\n", - " 'después de almorzar bien a gusto',\n", - " 'vámonos a la plaza',\n", - " 'allí montaremos',\n", - " 'una buena juerga',\n", - " 'esperad, chicos',\n", - " 'echemos todavía otro traguito',\n", - " 'echemos, echemos uno más',\n", - " 'echemos todavía',\n", - " 'después de almorzar bien a gusto',\n", - " 'vámonos a la plaza',\n", - " 'allí montaremos',\n", - " 'una buena juerga',\n", - " 'el trago nos ha reanimado',\n", - " 'el interior',\n", - " 'no fue un hombre cualquiera',\n", - " 'quien esto inventó',\n", - " 'venga, chicas',\n", - " 'echemos el último traguito',\n", - " 'echemos, echemos uno más',\n", - " 'echemos todavía',\n", - " 'después de almorzar bien a gusto',\n", - " 'vámonos a la plaza',\n", - " 'allí montaremos',\n", - " 'una buena juerga',\n", - " '--',\n", - " '(c. m. alberdi)',\n", - " 'din-don, din-don',\n", - " 'ahora son las once',\n", - " 'din-don, din-don',\n", - " 'pronto las doce',\n", - " '¡dun! dió la una',\n", - " 'din-don, las dos',\n", - " 'azpeitia no tiene',\n", - " 'un reloj como éste',\n", - " 'mi tío procurador',\n", - " 'mi padre alcalde',\n", - " 'mis hermanas maestras',\n", - " 'cásate conmigo',\n", - " '¡ay! mírame, pobrecilla',\n", - " 'contestadme:',\n", - " '¿cómo os casáis',\n", - " 'con esa gente?',\n", - " 'din-don...',\n", - " 'mi abuelo relojero',\n", - " 'mi tía costurera',\n", - " 'mi hermano misionero',\n", - " 'cásate conmigo',\n", - " '¡ay! mírame pobrecilla',\n", - " 'y contestadme:',\n", - " '¿cómo os casáis',\n", - " 'con esa gente?',\n", - " 'din-don...',\n", - " 'en el centro de gipuzkoa',\n", - " 'bajo el izarraitz',\n", - " 'bien entrado el valle de urola',\n", - " 'en el pueblo, pobrecilla',\n", - " 'y contestadme:',\n", - " '¿cómo os casáis',\n", - " 'con esa gente?',\n", - " 'din don...',\n", - " '--',\n", - " 'after having a delicious lunch',\n", - " 'we go to the square',\n", - " 'and there we start up a great party',\n", - " \"guys, wait! let's take another drink\",\n", - " 'come on, one more drink',\n", - " 'we have to have',\n", - " 'after having a delicious lunch',\n", - " 'we go to the square',\n", - " 'and there we start up a great party',\n", - " 'our interior has',\n", - " 'revived with the drink',\n", - " 'not just any ordinary person',\n", - " 'has invented this',\n", - " 'hurry up, girls!',\n", - " \"let's have our last drink\",\n", - " 'come on, just one more drink,we must have',\n", - " 'after having a delicious lunch',\n", - " 'we go the square',\n", - " 'and there we start up a great party',\n", - " '--',\n", - " 'ding-dong, ding-dong, ding-dong',\n", - " 'now it is eleven',\n", - " 'ding dong, ding dong',\n", - " 'soon it will be noon, (twelve)',\n", - " \"dong, it's one\",\n", - " 'ding -dong, two',\n", - " 'azpeitia has not',\n", - " 'a watch like this',\n", - " 'my uncle, attorney',\n", - " 'my father, mayor',\n", - " 'my sisters, teachers',\n", - " 'marry me!',\n", - " 'oh, just look at me you poor thing',\n", - " 'answer me',\n", - " 'how is it possible you have married to those people?',\n", - " 'ding-dong...',\n", - " 'my grandfather, watchmaker',\n", - " 'my aunt, seamstress',\n", - " 'my brother, missionary',\n", - " 'marry me!',\n", - " 'oh, just look at me you poor thing',\n", - " 'and answer me:',\n", - " 'how is it possible you have married to those people?',\n", - " 'ding-dong...',\n", - " 'at the heart of gipuzkoa',\n", - " 'under the izarraitz',\n", - " 'deep inside the valley of urola',\n", - " 'in the village, you poor thing',\n", - " 'answer me;',\n", - " 'how is it possible you have married to those people?',\n", - " 'ding-dong...']}}},\n", - " 'fi': {'sentence': {'pop': {'meta': {'train_data': ['maanwäen maanportti',\n", - " 'alas wartta',\n", - " 'kastesienen rihmastoista',\n", - " 'niwosköyde',\n", - " 'wyöltä wuolos',\n", - " 'katkerkyynel',\n", - " 'kiwen loween',\n", - " 'kaiwa kannon alle',\n", - " 'kynsin kynnä',\n", - " 'wäsy wäsy',\n", - " 'deep deep',\n", - " 'ether earth alive',\n", - " 'yet deeper still',\n", - " 'stoned heart',\n", - " 'a triumph over flesh',\n", - " 'meander like mushroom roots',\n", - " 'in the meridian of the spheres',\n", - " 'eloign fears beyond reason',\n", - " 'therefore deep deep',\n", - " 'yet deeper still',\n", - " 'katariina koissa kulki',\n", - " 'ilma vyt valehti',\n", - " 'siit vki miettimhn',\n", - " 'ukot, akat arvomahan',\n", - " 'kyln vki kuiskimahan',\n", - " 'juorummt urkkimah',\n", - " 'kyln vki kuiskimahan',\n", - " 'mmt urkkimah',\n", - " 'mik meijn minjll',\n", - " 'mik meijn minill',\n", - " 'mik meijn minjll',\n", - " 'mik meijn minill',\n", - " 'vytt valehtii',\n", - " 'ilman vyt valehtii',\n", - " 'vytt valehtii',\n", - " 'ilman vyta valehtii',\n", - " 'katariina koissa kulki',\n", - " 'ilman vyt valehti',\n", - " 'siit vki miettimhn',\n", - " 'ukot akat arvomahan:',\n", - " 'mik meijn minjll',\n", - " 'mik meijn minill',\n", - " 'mik meijn minjll',\n", - " 'mik minill',\n", - " 'vytt valehtii',\n", - " 'ilman vyt valehtii',\n", - " 'vytt valehtii',\n", - " 'ilman vyt valehtii',\n", - " 'oisko ollu asialla',\n", - " 'kyln pojat pontevimmat',\n", - " 'aitan ovell iltasella',\n", - " 'katariinan kynnyksell',\n", - " 'mik meijn minjll',\n", - " 'mik meijn minill',\n", - " 'mik meijn minjll',\n", - " 'mik meijn minill',\n", - " 'vytt valehtii',\n", - " 'ilman vyt valehtii',\n", - " 'vytt valehtii',\n", - " 'ilman vyt valehtii',\n", - " 'mik meijn minjll...',\n", - " 'katariina wandered through the house',\n", - " 'and her belt was missing',\n", - " 'that set the people thinking',\n", - " 'the men, the women wondering',\n", - " 'all the villagers whispering',\n", - " 'the scandal-mongers snooping',\n", - " 'all the villagers whispering',\n", - " 'the nosy women snooping',\n", - " \"what's up with the girl\",\n", - " \"what's up with the girl?\",\n", - " \"what's up with the girl\",\n", - " \"what's up with the girl?\",\n", - " 'without a belt she wandered there',\n", - " 'and her belt was missing',\n", - " 'without a belt she wandered there',\n", - " 'and her belt was missing',\n", - " 'katariina wandered through the house',\n", - " 'and her belt was missing',\n", - " 'that set the people thinking',\n", - " 'the men, the women wondering',\n", - " \"what's up with the girl\",\n", - " \"what's up with the girl?\",\n", - " \"what's up with the girl\",\n", - " \"what's up with the gir\",\n", - " 'like maggots we crawl here',\n", - " 'in search for our purpose',\n", - " 'the taste of virgin oil in our mouth',\n", - " 'explain this',\n", - " 'explain that',\n", - " 'can’t understand why',\n", - " 'this can’t be all',\n", - " \"and i'm not giving up\",\n", - " 'destroy and dominate!',\n", - " 'i need more in my life',\n", - " 'destroy and dominate!',\n", - " 'we all want to be gods',\n", - " 'i... am... the... god...',\n", - " 'i... am... what... i... want',\n", - " 'you must hurt to believe',\n", - " 'you must kill to receive',\n", - " 'go to work',\n", - " 'get paid',\n", - " 'and then just hope to get laid',\n", - " 'explain this',\n", - " 'and explain that',\n", - " 'still don’t know why',\n", - " \"this can’t be all that i'm going to have\",\n", - " 'tätä mieltä et sinä tahtonut',\n", - " 'mutta päähäsi se istutetaan',\n", - " 'tätä kieltä et sinä toivonut',\n", - " 'mutta suuhusi se ommellaan',\n", - " 'sinä sanot mitä me sanomme',\n", - " 'sinä teet rumat tekomme',\n", - " 'sinä kärsit... minä nautin',\n", - " 'sinä häviät... minä vaadin',\n", - " 'sinä teet... minä käsken',\n", - " 'siitä puuttuu kolme käskyä!',\n", - " 'mutta silti... minä jatkan',\n", - " 'sinä alistut... sen parempi',\n", - " 'law ta3rafoh',\n", - " 'law yom ye2abilko s2aloh',\n", - " 'leih el2ayam yaakhdoh',\n", - " 'law ta3rafoh',\n", - " 'law yom choftoh kallemoh',\n", - " '3a nnas hena bihebooh',\n", - " 'ou fakkaroh fatni ou bastanah',\n", - " 'ou kaman ba2a 3arrafoh',\n", - " 'min fat habibo taah',\n", - " 'ou b2o s2aaloh',\n", - " 'ezzayo we zay halo',\n", - " 'fe balo aw mech fe baalo',\n", - " 'mansach hawana w 2amaana',\n", - " 'kolli li t2al 2oloooh',\n", - " 'ou b2o s2aaloh',\n", - " 'ezzayo we zzay halo',\n", - " 'fe balo aw mech fe baalo',\n", - " 'mansach hawana w 2amaana',\n", - " 'kolli li t2al 2oloooh',\n", - " 'ou fakkaroh fatni ou bastanah',\n", - " 'ou kaman ba2a 3arrafoh',\n", - " 'min fat habib ou taah',\n", - " 'law ta3rafoh',\n", - " 'law kan fi binkom kalam',\n", - " 'had ysallem li 3aleiih',\n", - " 'law ta3rafoh',\n", - " '2ouloulou bab3at lou salam',\n", - " 'le3nih we l2albo liih',\n", - " 'law ta3rafoh',\n", - " 'law kan fi binkom kalam',\n", - " 'had ysallem li 3aleiih',\n", - " 'law ta3rafoh',\n", - " '2ouloulou bab3at lou salam',\n", - " 'le3nih we l2albo liih',\n", - " 'ou fakkaroh fatni ou bastanah',\n", - " 'ou kaman ba2a 3arrafoh',\n", - " 'min fat habibo taah',\n", - " 'ou b2o s2aaloh',\n", - " 'ezzayo we zzay halo',\n", - " 'fe balo aw mech fe baalo',\n", - " 'mansach hawana w 2amaana',\n", - " 'kolli li t2al 2oloooh',\n", - " 'ou b2o s2aaloh',\n", - " 'ezzayo we zzay halo',\n", - " 'fe balo aw mech fe baalo',\n", - " 'mansach hawana w 2amaana',\n", - " 'kolli li t2al 2oloooh',\n", - " 'ou fakkaroh fatni ou bastanah',\n", - " 'ou kaman ba2a 3arrafoh',\n", - " 'min fat habib ou taah',\n", - " 'juosten kylmässä käyt',\n", - " 'askelin alastomin',\n", - " 'viiman talvisen purressa',\n", - " 'luihin ja ytimiin',\n", - " 'jumalan sokea sisar',\n", - " 'kutsuu sinua',\n", - " 'kutsuu kuiskaten',\n", - " 'toiselta unohdetulta rannalta...',\n", - " 'kaadut juoksuaskeliin',\n", - " 'vaan et tunne, kun viiltää jää',\n", - " 'hiuksensa kauniit piirtää',\n", - " 'verivanaa sinulle seurata...',\n", - " 'maailmastaan kumuaa',\n", - " 'vahva sointi rummun',\n", - " 'aalloista kaikuu',\n", - " 'kaikuu rannasta',\n", - " 'lyö samaan tahtiin',\n", - " 'kanssa sydämesi',\n", - " 'vaan lakkaa',\n", - " 'ellet saavukaan...',\n", - " 'blind sister',\n", - " 'you run in the cold',\n", - " 'with naked steps',\n", - " 'as the winter draught bites',\n", - " 'to the bone and to the core',\n", - " 'the blind sister of god',\n", - " 'calls you',\n", - " 'calls you whispering',\n", - " 'from another forgotten shore...',\n", - " 'you fall whilst running',\n", - " \"but you don't feel the ice cutting you\",\n", - " 'her beautiful hair draws',\n", - " 'a bloody line for you to follow...',\n", - " 'from her world stems',\n", - " 'a pounding of a drum',\n", - " 'it reflect from the waves',\n", - " 'from the shore',\n", - " 'it beats in syncopation',\n", - " 'with your heart',\n", - " 'but it will stop',\n", - " 'if you do not come...',\n", - " 'tuuli harhaa',\n", - " 'pyhätöt kasvavat lehdot',\n", - " 'silmäten lehtii',\n", - " 'saapuu keväin haie',\n", - " 'viljavalti parveilee',\n", - " 'spring wind strays',\n", - " 'rinses and dyes the leafs',\n", - " 'morning is stirred',\n", - " 'äärellä veden luodolla istuen',\n", - " 'polviin päänsä painaneena',\n", - " 'laineet kolean tuulen syleilyssä',\n", - " 'taakkansa saavat kantaakseen',\n", - " 'nähnyt on tulta, nähnyt on kuolemaa',\n", - " 'mies petojen kasvattama',\n", - " 'nähnyt on hävityksen kansansa',\n", - " 'nähnyt mitä ei voi unohtaa',\n", - " 'taivaille vannonut ikuista vihaa',\n", - " 'kantaja miekan ruosteisen',\n", - " 'kantaja kiven kironnut kuninkaita',\n", - " 'polttanut maat takanaan',\n", - " 'laaksoihin kärsimysten',\n", - " 'virtaan vetten katkeruuden',\n", - " 'polkuja seuraamatta',\n", - " 'painon alle musertuen',\n", - " 'äärellä veden kurjalla karilla',\n", - " 'hahmo raskain aatoksin',\n", - " 'yksin kiroaa, hiekalle laskee',\n", - " 'kiveenhakatun kohtalon',\n", - " 'ei aukene taivas, ei nouse tuuli',\n", - " 'pilvet rantaa varjostavat',\n", - " 'hiljaisuudessa kiroaa ja odottaa',\n", - " 'matkaaja tyhjään huomiseen',\n", - " 'sitä surua ei voi unohtaa',\n", - " 'ei kiveä jalkoihin laskea',\n", - " 'sitä vihaa ei voi tukahduttaa',\n", - " 'on hulluus kiven painona',\n", - " 'sitting on a rock by the sea',\n", - " 'with head bown to his knees',\n", - " 'caressed by the coldest wind',\n", - " 'the silent waves receive his burden',\n", - " 'fire has he seen and death as well',\n", - " 'man grown up by beasts',\n", - " 'destruction has he seen, of his own people',\n", - " 'seen what cannot be unmade',\n", - " 'eternal hatred to all heavens',\n", - " 'by a corroded blade he swore',\n", - " 'the bearer of stone, cursed has he kings',\n", - " 'and burnt all the land behind',\n", - " 'to valleys of suffering',\n", - " 'into the stream of bitter rivers',\n", - " 'aside paths made by man',\n", - " 'ever under crushing weight',\n", - " 'on an isolated rock by the sea',\n", - " 'there sits a grief-stricken man',\n", - " 'alone he curses and lays on the sand',\n", - " 'a weighing fate carved in stone',\n", - " \"yet skies don't open, no wind shall rise\",\n", - " 'and clouds they shadow the shore',\n", - " 'in silence a roamer curses and waits',\n", - " 'until another tomorrow',\n", - " 'an unforgotten grief',\n", - " 'ever carried with the stone',\n", - " 'an unforsaken hatred',\n", - " 'madness weighing down the stone',\n", - " 'kuuletko tuulen vuoria jдytдvдn?',\n", - " 'jддlinnoissa talven yksin se ulvoo',\n", - " 'vapautettu pakkanen pian meidдt saavuttaa',\n", - " 'rautaportit avautuu, on aika kuoleman',\n", - " '... kun syksy vaihtuu talveen',\n", - " 'ei kylmyys tunne armoa',\n", - " 'ei pakkanen vдisty... koskaan!',\n", - " 'tunnetko poltteen jдisen peitteen',\n", - " 'hyytдvдn sisimpддsi?',\n", - " 'дlд katso valkeutta vaan kohtaa pakkanen',\n", - " 'tuhoava lempeдn taivahan',\n", - " '... kun saapuu talvi ikuinen',\n", - " 'ei kylmyys tunne armoa',\n", - " 'ei pakkanen vдisty... koskaan!',\n", - " 'kaikki lдmpвђ\" katoaa, talvi tekee tuloaan',\n", - " 'vihreд saa vaipan valkoisen',\n", - " 'pohjoisissa hoveissa on lumipeite ikuinen',\n", - " 'et kesдд enдд nдhdд saa, vain taivaan kalvenneen',\n", - " 'kylmд henkдys sammuttaa liekin',\n", - " 'ikuisen',\n", - " 'pohjoisen hoveissa on talvi armoton',\n", - " 'jдinen kiille metsissд pian heikot lannistaa',\n", - " 'talvilinnain siimeksessд aikamme on koittanut!',\n", - " 'pakkanen on nдlissддn',\n", - " 'taivaanne se verhoaa',\n", - " 'ei kylmyys tunne armoa',\n", - " 'ei pakkanen vдisty... koskaan!',\n", - " 'ei kylmyys tunne armoa',\n", - " 'ei pakkanen vдisty... koskaan!',\n", - " 'jo saapuu talvi ikuinen',\n", - " 'vihreд saa vaipan valkoisen',\n", - " 'siivet katkaistaan, vastarinta murretaan',\n", - " 'ei yksikддn enkeli eloon jдд',\n", - " 'viiltдvд pakkanen voiton saa',\n", - " 'lumi on peittдvд pohjoisen maan',\n", - " 'lehdet kalpenee, valittaen kuolee',\n", - " 'pilvet kerддntyvдt katselemaan',\n", - " 'paholaiset temmeltдvдt sydдmessд',\n", - " 'talven',\n", - " 'vдsymдttд tanssivat valkoisissa saleissa',\n", - " 'jo ikuinen talvi vallitsee',\n", - " 'sen loppua turha on odottaa',\n", - " 'kuulkaa!',\n", - " 'lapset pakkasen!',\n", - " 'kuulkaa!',\n", - " 'tдmд talvi on ikuinen!',\n", - " 'can you hear the wind gnawing the mountains?',\n", - " 'in the ice castles of winter it howls alone',\n", - " 'the frost now unleashed soon shall us reach',\n", - " \"the iron gates are opening, 'tis the time for death\",\n", - " '.... when autumn turns to winter',\n", - " 'coldness knows no mercy',\n", - " 'the frost does not stand aside... ever!',\n", - " 'can you feel the icy crust piercing through your',\n", - " 'skin',\n", - " 'burning you deep inside?',\n", - " 'quit staring at the light and encounter the frost',\n", - " 'that shall lay waste the tender sky',\n", - " '.... when the winter eternal arrives',\n", - " 'coldness knows no mercy',\n", - " 'the frost does not stand aside... ever!',\n", - " \"all warmth is vanishing, the winter's drawing\",\n", - " 'nigh',\n", - " 'green is enshrouded by white',\n", - " \"in the northern courts there's an eternal crust of snow\",\n", - " 'no summer you shall ever see, only a sky ran pale',\n", - " 'the eternal flame is blown out by a breeze so',\n", - " 'cold;',\n", - " 'the winter is unmerciful in the courts of the north',\n", - " 'the icy glitter in the forests soon puts the weak to death',\n", - " \"in the heart of the winter's stronghold our time has finally come!\",\n", - " 'the hunger of the frost is growing',\n", - " 'your heaven it enshrouds with fury',\n", - " 'coldness knows no mercy',\n", - " 'the frost does not stand aside... ever!',\n", - " 'coldness knows no mercy',\n", - " 'the frost never stands aside!',\n", - " 'welcome the winter eternal',\n", - " 'green enshrouded by white',\n", - " 'all wings are cut and the resistance is broken',\n", - " 'none of the angels shall survive',\n", - " 'the sharp cutting frost is the victor',\n", - " 'and snow shall veil the northern ground',\n", - " 'leaves are turning pale, dying in lament',\n", - " 'and the clouds are gathering to witness',\n", - " \"'tis tumult of demons in the heart of winter\",\n", - " \"with no signs of exhaust they're dancing in the white halls\",\n", - " \"at last it's the reign of the eternal winter\",\n", - " 'a vain hope that it will end',\n", - " 'hear me!',\n", - " 'children of the frost!',\n", - " 'hear me!',\n", - " 'this winter is forever!',\n", - " 'olemme onnettomuus',\n", - " 'rutto ja kulkutauti',\n", - " 'olemme suvaitsemattomuus',\n", - " 'kuivuus ja nälänhätä',\n", - " 'murha',\n", - " 'olemme tuho ja hävitys',\n", - " 'tulva ja tuli',\n", - " 'olemme viha ja väkivalta',\n", - " 'sydämmesi pimeys',\n", - " 'ilmestyskirjan ratsastajat',\n", - " 'tuomiopäivän airuet',\n", - " 'ilmestyskirjan ratsastajat',\n", - " 'sota, nälkä, taudit ja kuolema!',\n", - " 'murha',\n", - " 'olemme epätoivo joka jäätää sydämmesi',\n", - " 'myrkky verenkierrossasi',\n", - " 'olemme varjo silmäkulmassasi',\n", - " 'terä yössä, joka viiltää kurkkusi',\n", - " '(english translation:)',\n", - " 'riders of the apocalypse',\n", - " 'we are calamity',\n", - " 'plague and epidemic',\n", - " 'we are intolerance',\n", - " 'drought and famine',\n", - " 'we are destruction and havoc',\n", - " 'flood and fire',\n", - " 'we are hate and violence',\n", - " 'the darkness of your heart',\n", - " 'riders of the apocalypse',\n", - " 'heralds of the coming doomsday',\n", - " 'riders of the apocalypse',\n", - " 'war, famine, calamity and death!',\n", - " 'we are the desperation that freezes your heart',\n", - " 'we are the poison in your circulation',\n", - " 'we are the shadow in the corner of your eye',\n", - " 'we are the knife in the night that cuts your throat',\n", - " 'nousetko vielä',\n", - " 'makea ruusun tuoksu',\n", - " 'virtaatko vielä',\n", - " 'kuulas meden juoksu',\n", - " 'nousetko vielä',\n", - " 'vain pursuna suoksi',\n", - " 'ja kuihdut kumaraan',\n", - " 'surun vuoksi',\n", - " 'nousetko vielä',\n", - " 'taimesta tuoksi',\n", - " 'virtaatko vielä',\n", - " 'joen juoksuna luokse',\n", - " 'nousetko vielä',\n", - " 'vai painutko suoksi',\n", - " 'ja peität rantaani',\n", - " 'surun vuoksi',\n", - " '(english translation:)',\n", - " 'wavery',\n", - " 'would you rise again',\n", - " 'sweet lure of a rose',\n", - " 'would you flow again',\n", - " 'run of honey sparkle',\n", - " 'would you grow again',\n", - " 'on mire and marshes',\n", - " 'or bend and perish',\n", - " 'to woe burned ashes',\n", - " 'would you rise again',\n", - " \"hope's seedling\",\n", - " 'would you flow again',\n", - " 'or descend to depths',\n", - " 'and drown my shore',\n", - " 'wavering misery',\n", - " 'tulkaapa äijät, nyt ryypätään kun minun hautajaiseni on',\n", - " 'itse kun tänne kuoppaan suistuin seuraksenne vain taivu en',\n", - " 'kuten sinä, kuten minä, vaikka te taikka me;',\n", - " 'kunhan vain saamme juodaksemme',\n", - " 'hei tulehan ja kuule kuinka iloisesti kilahtaa',\n", - " 'se malja juoka nyt tyhjennämme',\n", - " 'tulkaapa markus, mitja, marko ja henri',\n", - " 'hilpeät veikot riimukivelle',\n", - " 'kun tässä kerran jo istuttu on niin reilut kännit kiskaiskaamme',\n", - " 'hautakiveeni saa kaivertaa tilaisuus kun siihen on:',\n", - " '\"tässä lepää ja aikaansa viettää juoppolalli verraton.\"',\n", - " \"come along fellows, let's booze all night for it is now my funeral\",\n", - " \"i just slipped into this grave and can't keep you company\",\n", - " 'just like you as well as me, just like any of us near;',\n", - " 'as long as we get to drink our beer',\n", - " 'hey stop by to listen how merrily it clinks',\n", - " 'as we raise a chalice to be emptied here',\n", - " 'come now markus, mitja, marko and henri',\n", - " 'the merry men on my burial ground',\n", - " 'now that we1ve sat here for long enough',\n", - " 'it would be time to get real drunk',\n", - " 'i would be glad if someone carved these honest words on my tombstone:',\n", - " '\"underneath you lies and rests one excellent, unrivalled sot.\"',\n", - " 'hands up. clap clap. hands up. everybody clap clap',\n", - " 'kim ga ima sonna chiisa na te de gyutto nigirishimete hanasanai no wa',\n", - " 'kono saki ni machiuketeru mirai e no chiketto (ticket) kana?',\n", - " 'konna umareta bakari no inochi ni takusareta yume',\n", - " '\"yasashiku, soshite shiawase ni sodachimasu you ni\"',\n", - " 'yogore kitta kono sekai e to tobidashite',\n", - " 'kokkara hajimatte iku kimi dake no sutoorii (story) (everybody clap clap)',\n", - " 'itsuka yume de miteita you na yoake wo',\n", - " 'kimi wa miretara ii na (everybody clap clap)',\n", - " 'itsuka kimi ga boku mitai na otona ni',\n", - " 'natte hoshiku wa nai kara (everybody clap clap)',\n", - " 'hands up. clap clap. hands up. everybody clap clap',\n", - " 'mazariau hito no kokoro to kokoro shinjitsu to uso kakehiki shite wa',\n", - " 'sono originaru (original) no kimi ga nurikaerarete iku',\n", - " 'yatto dareka wo keotoshite made te ni ireta manee (money)',\n", - " 'soshite tsuini temoto ni nokotta no wa nani?',\n", - " 'hontou ni taisetsu da to omou mono made hanarete iku baddo endingu (bad ending) na monogatari',\n", - " 'daremo mita koto ga nai you na yoake wo',\n", - " 'kimi wa miretara ii na (everybody clap clap)',\n", - " 'itsuka kimi ga boku mitai na otona ni',\n", - " 'natte hoshiku wa nai kara (everybody clap clap)',\n", - " \"saigen'naku azayaka ni irodorareta sekai sae monokuro (monochrome) ni utsushidasu hitomi\",\n", - " 'shoukkoi garasu (glass) tama no you ni toumei na ano koro ni wa',\n", - " \"mou modorenai n' da to shitte ite mo mada,,\",\n", - " 'itsuka yume de miteita you na yoake wo',\n", - " 'kimi to miretara ii na (everybody clap clap)',\n", - " 'itsuka boku mo kimi mitai na hitomi wo',\n", - " 'mata torimodoseru no kana (everybody clap clap)',\n", - " 'daremo mita koto nai you na yoake wo',\n", - " 'kimi to miretara ii na (everybody clap clap)',\n", - " 'soshitara boku mo kimi mitaku kagayakeru',\n", - " \"sonna ki sae shiteru n' da (everybody clap clap)\",\n", - " 'hands up. clap clap. hands up. everybody clap clap',\n", - " 'hail to the king',\n", - " 'hail to the queen',\n", - " 'hail to the house, maidens and squires',\n", - " 'one for the sun',\n", - " 'one for the moon',\n", - " 'one for every star in the sky!',\n", - " 'drink for the living',\n", - " 'drink for the dead',\n", - " 'drink for the keepers of otherworld',\n", - " 'hail to the elven',\n", - " 'hail to the dwarfs:',\n", - " 'hail to the goblins - hell to the orcs!',\n", - " 'drink for the fire',\n", - " 'drink for the cold:',\n", - " \"drink for the winter's frost father old\",\n", - " 'drink for spring',\n", - " \"(let's) drink for her, for sweet\",\n", - " \"thighs of eostre and sun's return\",\n", - " 'hail to my left foot',\n", - " 'hail to your right',\n", - " 'hail to the mighty one in the middle',\n", - " 'drink for the ladies -',\n", - " 'ah! indeed...',\n", - " 'also (one) to some very special sheep',\n", - " 'toinen mulle kaatakaa, malja meille nostakaa',\n", - " 'tänä yönä pimeys meitä väistää!',\n", - " 'hullun lailla tanssikaa, lailla hullun naurakaa',\n", - " 'huomispäivä jos ees nousee, ken voi titää!',\n", - " 'lailla juopuneiden jumalten, viinin hengen, humalten',\n", - " 'vaaraa, pimeyttä hurmio uhmaa',\n", - " \"kuolema voi odottaa, unhdus - ket' kiinnostaa?\",\n", - " 'on lyhyt elontie, siis pitäkäämme hauskaa!',\n", - " 'one for the fallen, one for the pure',\n", - " 'one for the wicked and one for the true',\n", - " 'drink to the virgins!',\n", - " 'drink to the whores',\n", - " '(drink) to all blessed mothers and all their chores',\n", - " 'one for you, sire!',\n", - " 'one for me own',\n", - " 'one for you all and one for...',\n", - " 'drink for the ceiling',\n", - " 'drink for the floor',\n", - " '(for) all between and much much more!',\n", - " 'tuure kilpeläinen',\n", - " 'lisätään lämpöä',\n", - " 'armoton maa / such a harsh land',\n", - " 'ei hymyile suotta / not often smiling',\n", - " 'sen viimassa tarpoo / one walks in the wind',\n", - " 'tarjoo kassalla kuittia / must offer you receipt',\n", - " 'armoton maa / such a harsh land',\n", - " 'ei tervehdi vieraita / not talking to strangers',\n", - " 'se kaappiinsa kätkee / it hides in the closet',\n", - " 'kaikkein kauneimmat astiat / all that is beautiful',\n", - " 'anna sun kätesi / please let me hold your hand',\n", - " 'ota minut vastaan / please let me come inside',\n", - " 'kun ulkona kylmentynyt / when it is so cold outside',\n", - " 'nyt ihmiset / now, fellow men',\n", - " \"lisätään lämpöä / let's get a bit warmer\",\n", - " 'sylillinen / one more armful',\n", - " 'halkoja nuotioon / of wood for the fire',\n", - " 'niin kaunis on maa / such lovely a land',\n", - " 'viaton leikki lapsien / the play of the innocent',\n", - " 'ne oppia saa / they shall be learning',\n", - " 'laulut pohjolan tulvien / the songs of the bitter north',\n", - " 'hetki on syntyä / one moment to be born',\n", - " 'kasvaa ja kuolla / to grow and then to die',\n", - " 'hetki on haaveilla / one moment for dreaming',\n", - " 'haavoja nuolla / for caring the hurting',\n", - " 'pelätä, empiä / to fear and to hesitate',\n", - " 'hehkua lempeä / to love and to embrace',\n", - " 'niin, että kipinät lyö / so that the fire is born',\n", - " 'ihmiset / fellow men',\n", - " \"lisätään lämpöä / let's get a bit warmer\",\n", - " 'vielä sylillinen / one more armful',\n", - " 'halkoja nuotioon / of wood for the fire',\n", - " 'siis ihmiset / now please, fellow men',\n", - " \"lisätään lämpöä / let's get a bit warmer\",\n", - " 'vielä kourallinen / one more handful',\n", - " 'arvoa tuokioon / of worth for the moment',\n", - " 'ja mä katson tätä maisemaa / and i look at the landscape',\n", - " 'se sulkeutuu tai aukeaa / its closing, its opening',\n", - " \"se mitä mieli heijastaa / it's what the mind reflects\",\n", - " 'on kaikki mitä nään / is all that i can see',\n", - " \"lisätään lämpöä / let's get warmer\",\n", - " 'sylillinen / one more armful',\n", - " 'halkoja nuotioon / of wood for the fire',\n", - " 'siis ihmiset / now please, fellow men',\n", - " \"lisätään lämpöä / let's get a bit warmer\",\n", - " 'vielä kourallinen / one more handful',\n", - " 'arvoa tuokioon / of worth for the moment',\n", - " 'katson tätä maisemaa / i look a t the landscape',\n", - " \"se sulkeutuu tai aukeaa / it's closing or opening\",\n", - " \"se mitä mieleni heijastaa / it's what the mind reflects\",\n", - " 'on kaikki mitä nään / is all that i can see',\n", - " 'ihmiset / fellow men',\n", - " \"lisätään lämpöä / let's get warmer\",\n", - " 'vielä sylillinen / one more armful',\n", - " 'halkoja nuotioon. / of wood for the fire',\n", - " 'english translation by panze',\n", - " 'sataa',\n", - " 'don’t ask me why',\n", - " 'sä kikatat liian kovaa',\n", - " 'don’t ask me why',\n", - " 'voi puhua kaikesta',\n", - " 'don’t ask me why',\n", - " 'rottinkituolit',\n", - " 'mee pois',\n", - " 'don’t ask me why',\n", - " 'eiku tuu sittenkin takas',\n", - " 'don’t ask me why',\n", - " 'ilahduttavuus',\n", - " 'don’t ask me why',\n", - " 'menetä tämä päivä',\n", - " 'harmaa sävytön paiste',\n", - " 'valkoisten kärpästen suvi',\n", - " 'iltapäivä ankeaa kesää',\n", - " 'matka kiveen kuvaa',\n", - " 'hymyile 7 toivo',\n", - " 'suuntaa vene hyvään ajoon',\n", - " 'väkevä taimi kasva täällä',\n", - " 'vie meidät mailta',\n", - " 'tuonne kohti',\n", - " 'vapaa saattaja',\n", - " 'seitsen sarvi haara',\n", - " 'hirvi vie rajoille',\n", - " 'kuolleen ajo hiljaa',\n", - " 'laske väsynyt vesi',\n", - " 'saata hautaan laulu',\n", - " 'elä uusi verso',\n", - " 'vehreys täällä kalmistossa',\n", - " 'kanna pois',\n", - " 'väli kasvaa',\n", - " 'viimein ajo',\n", - " 'äären halki',\n", - " 'lose this thin day',\n", - " 'grey shine of june',\n", - " 'mid-summer of white flies',\n", - " 'dreary afternoon',\n", - " 'trail carved in stone',\n", - " \"bliss' path\",\n", - " 'burial-boats blaze',\n", - " \"in summer's ceremony\",\n", - " 'takes us there',\n", - " 'to seasons feast',\n", - " 'seven spiked elk',\n", - " 'let us sway',\n", - " 'to the shadow',\n", - " 'of the grave-meadows',\n", - " 'prepare the dead',\n", - " 'rinse the grey skin',\n", - " 'sprouts growing',\n", - " 'in burial-grove',\n", - " 'spirit carriages',\n", - " 'through the vale',\n", - " '-sataa-',\n", - " 'sataakohan',\n", - " 'silloin lunta',\n", - " 'kun tulet hiljaa huoneeseen',\n", - " 'en ole vielä valmis',\n", - " 'ja joka hetki kuin viimeistään',\n", - " 'sun sydän lyö',\n", - " '(kertosäe)',\n", - " 'niin taivaltaa',\n", - " 'niin taivaltaa',\n", - " 'hän halki tuntemattoman',\n", - " 'sataakohan',\n", - " 'vai onko lehdet',\n", - " 'jo puista maahan pudonneet',\n", - " 'et ole vielä valmis',\n", - " 'ja joka askeleella',\n", - " 'sua pelko syö',\n", - " '(kertosäe)',\n", - " '-it snows -',\n", - " 'does it snow',\n", - " 'snow (then)',\n", - " 'when you silently enter the room',\n", - " \"i'm not ready yet\",\n", - " 'and every moment, like its last',\n", - " 'your heart beats',\n", - " '(chorus)',\n", - " 'so wanders/journeys',\n", - " 'so wanders/journeys',\n", - " 'he/she through the unknown',\n", - " 'does it rain,',\n", - " 'or have the leaves',\n", - " 'already fallen down (to the ground) from the trees',\n", - " \"you're not ready yet\",\n", - " 'and on every step',\n", - " 'fear consumes you',\n", - " '(chorus) x2',\n", - " 'part 1: erämaajärvi',\n", - " 'kautta erämaajärven',\n", - " 'matkaa kulkuri yksinäinen',\n", - " 'näkee lammella joutsenparven',\n", - " 'vapauttaan itkevän',\n", - " 'kaipuu menneisyyteen',\n", - " 'kiirii ilmassa huutoina kotkien',\n", - " 'ikijärveltä turvatulta',\n", - " 'käy matka vuorten taa',\n", - " 'part 2: witchdrums',\n", - " 'instrumental',\n", - " 'part 3: this moment is eternity',\n", - " 'day possesses no key here',\n", - " 'where moon sheds the cold twilight',\n", - " 'this moment is eternity',\n", - " 'land of beauty',\n", - " 'cold and cruel',\n", - " 'fjeld chants echoing',\n", - " 'reflecting the melancholy',\n", - " 'trust the wind',\n", - " 'trust the fire',\n", - " 'call for the hermit',\n", - " 'the hermit of the night',\n", - " 'land of raven',\n", - " 'land of bear',\n", - " 'land of eagle',\n", - " 'and wolverine',\n", - " 'dismal are the mirrors of a wolf',\n", - " 'part 4: etiäinen',\n", - " 'instrumental',\n", - " '\"aurinko ja kuu',\n", - " 'syttyneet kaukana sieltä',\n", - " 'missä lehväin suoja yllein kumartuu',\n", - " 'kai vuosia olen jo kulkenut',\n", - " 'muassa metsien kansojen',\n", - " 'olen oppinut viisautta susilta',\n", - " 'ja nukkunut karhujen kanssa',\n", - " 'yhtään ihmistä en ole kohdannut',\n", - " 'kylänkään liepeille sattunut',\n", - " 'tiedä en matkaani kotoa',\n", - " 'kohtalo sanelee minne johtaa tie.\"',\n", - " 'kaukana tyvenessä',\n", - " 'vehreä polku verelle johdattaa',\n", - " 'yllä maan, taivas kattona',\n", - " 'loppunsa on kaikella',\n", - " '\"kai vuosia olen jo kulkenut',\n", - " 'miettien veljeni lähtöä',\n", - " 'kunpa tietäisin minne hän päätyy',\n", - " 'jumalat suojelkoot häntä matkallaan.\"',\n", - " 'järkähtävät vankat kalliot',\n", - " 'vaeltavat kuu ja aurinko',\n", - " 'tuulet yltyvät, myrskyt tyyntyvät',\n", - " 'laivojansa aallot etsivät',\n", - " '\"taivaalla tähdet valaiskaa',\n", - " 'tulen vain minä tarvitsen',\n", - " 'luonnosta olen syntynyt',\n", - " 'edessäs\\' mitään pelkää en.\"',\n", - " '\"the sun and the moon',\n", - " 'lit so far from where',\n", - " 'the shelter of branches does bend over me',\n", - " \"i count it as years that i've wandered\",\n", - " 'amongst the folk of the woods',\n", - " \"wisdom i've learned from wolves\",\n", - " 'and i have slept in the beds of bears',\n", - " \"no other man i've met on my way\",\n", - " \"no village i've walked past by\",\n", - " \"i couldn't tell my way from home\",\n", - " 'destiny dictates where my road shall turn. \"',\n", - " 'far far away in the still',\n", - " 'a verdant path once leads to blood',\n", - " 'above the earth with heavens as vault',\n", - " 'there is an end to all',\n", - " '\"i count it as years that i\\'ve wandered',\n", - " \"just thinking of my brother's departure\",\n", - " 'oh i wish i was told where he would end up',\n", - " 'may the gods guard him on his journey. \"',\n", - " 'and the steady rocks stir',\n", - " 'the moon and the sun do rove',\n", - " 'winds are rising, storms abate',\n", - " 'their ships the waves still seek',\n", - " '\"stars on the sky come out',\n", - " 'only the fire i need',\n", - " 'from the nature i have born',\n", - " 'before thee nothing i fear. \"',\n", - " 'aamuinen pystyvä viha',\n", - " 'aamuinen päivä ei loista',\n", - " 'kun sä meet petiin',\n", - " 'ylhäältä ohut sade',\n", - " 'syvempi kuin leveä',\n", - " 'alastonta tuo',\n", - " 'sarastus aamu ja koitto',\n", - " 'yltäpäältä sateessa',\n", - " 'sä meet petiin',\n", - " 'frail',\n", - " 'fury at dawn',\n", - " 'ride the early light',\n", - " 'she slithers undress',\n", - " 'frail rain above',\n", - " 'deeper than wide',\n", - " 'stripped bare',\n", - " 'cathedral-sunrise',\n", - " 'soaked in rain',\n", - " 'she slips undress',\n", - " 'yksi on \"one\", kaksi on \"two\"',\n", - " 'vanha on \"old\" ja uusi on \"new.\"',\n", - " 'mitä on \"what?\", kuka on \"who?\"',\n", - " 'minä on \"me\" ja sinä on \"you.\"',\n", - " 'kolme on \"three\", neljä on \"four\"',\n", - " 'katto on \"ceiling\", lattia \"floor.\"',\n", - " 'vähemmän on \"less\", enemmän on \"more\"',\n", - " 'shakki on \"chess\" ja ovi on \"door.\"',\n", - " 'kävellä on \"walk\", jutella on \"talk\"',\n", - " 'lusikka on \"spoon\" ja haarukka on \"fork.\"',\n", - " 'korkki on \"cork\", possu on \"pork\"',\n", - " 'valmis on \"ready\" ja raaka on \"raw.\"',\n", - " 'naama on \"face\", paikka on \"place\"',\n", - " 'rumpu on \"drum\" ja basso on \"bass.\"',\n", - " 'ässä on \"ace\", avaruus \"space\"',\n", - " '\"to start\" on aloitus ja \"stop\" on seis!',\n", - " 'tiedän, \"i know\", kasvaa on \"grow\"',\n", - " 'nopee on \"fast\" ja hidas on \"slow.\"',\n", - " 'läppä on \"joke\" virta on \"flow\"',\n", - " 'kyllä on \"yes\" ja ei on \"no.\"',\n", - " 'lyhyt on \"short\", pitkä on \"long\"',\n", - " 'soittaa on \"play\" ja laulu on \"song.\"',\n", - " 'mieto maku \"mild\", vahva on \"strong\"',\n", - " 'oikein on \"right\" ja väärin on \"wrong.\"',\n", - " 'tykätä on \"like\", fillari on \"bike\"',\n", - " 'levysoitin \"turntable\", mikrofoni \"mic.\"',\n", - " 'yrittää on \"try\", miksi on \"why?\"',\n", - " 'märkä on \"wet\" ja kuiva on \"dry.\"',\n", - " 'valhe on \"lie\", ujo on \"shy\"',\n", - " 'nauraa on \"laugh\" ja itkee on \"cry.\"',\n", - " 'minä olen \"i\" ja riimi on \"rhyme\"',\n", - " 'kello on \"clock\" ja aika on \"time.\"',\n", - " 'hip hoppii englantii, siit oppii englantii',\n", - " 'hip hoppii englantii, siit oppii englantii',\n", - " 'tytöt on \"girls\", pojat on \"boys\"',\n", - " 'hiljaisuus on \"silence\", melu on \"noise.\"',\n", - " 'valinta on \"choice\", ääni on \"voice\"',\n", - " 'huone on \"room\" ja lelut on \"toys.\"',\n", - " 'sisko on \"sister\", veli on \"brother\"',\n", - " 'tämä on \"this\" ja toinen on \"other.\"',\n", - " 'kylmempi \"colder\", kuumempi \"hotter\"',\n", - " 'leipä on \"bread\" ja voi on \"butter.\"',\n", - " 'kuulla on \"hear\", pelko on \"fear\"',\n", - " 'kaukana \"far\" ja lähellä \"near.\"',\n", - " 'kyynel on \"tear\", korva on \"ear\"',\n", - " 'nenä on \"nose\" ja täällä on \"here.\"',\n", - " 'missä on \"where?\" no, siellä on \"there.\"',\n", - " 'pöytä on \"table\" ja tuoli on \"chair.\"',\n", - " 'reilu on \"fair\", karhu on \"bear\"',\n", - " 'kynnet on \"nails\" ja tukka on \"hair.\"',\n", - " 'vuoro on \"turn\", oppia \"learn\"',\n", - " 'kastua \"get wet\", palaa on \"burn.\"',\n", - " 'hattu on \"hat\", rotta on \"rat\"',\n", - " 'koira on \"dog\" ja kissa on \"cat.\"',\n", - " 'isi on \"dad\", surullinen \"sad\"',\n", - " 'iloinen on \"happy\", vihainen on \"mad.\"',\n", - " 'vähentää on \"substract\", lisätä on \"add\"',\n", - " 'hyvä on \"good\" ja paha on \"bad.\"',\n", - " 'raha on \"money\", hassu on \"funny\"',\n", - " 'sateinen on \"rainy\", aurinkoinen \"sunny.\"',\n", - " 'äiti on \"mom\", \"mother\" tai \"mummy\"',\n", - " 'vatsa on \"belly\", \"stomach\" tai \"tummy.\"',\n", - " 'pöljä on \"dummy\", herkku on \"yummie!\"',\n", - " '\"nothing\" ei oo mitään ja jotain on \"something.\"',\n", - " 'hip hoppii englantii, siit oppii englantii',\n", - " 'hip hoppii englantii, siit oppii englantii',\n", - " 'hip hoppii englantii, siit oppii englantii. eka on \"first\", jano on \"thirst\"',\n", - " 'paras on \"best\" ja huonoin on \"worst.\"',\n", - " 'kolmas on \"third\", lintu on \"bird\"',\n", - " 'toinen on \"second\" ja sana on \"word.\"',\n", - " 'lapsi on \"child\", villi on \"wild\"',\n", - " 'vahva on \"strong\" ja mieto on \"mild.\"',\n", - " 'silmät on \"eyes\", kaks kertaa \"twice\"',\n", - " 'tuhma on \"naughty\" ja kiltti on \"nice.\"',\n", - " 'veitsi on \"knife\", elämä on \"life\"',\n", - " 'sulhanen on \"husband\" ja vaimo on \"wife.\"',\n", - " 'vauva on \"baby\", ehkä on \"maybe\"',\n", - " 'laiska on \"lazy\" ja hullu on \"crazy.\"',\n", - " 'tavata on \"meet\", kuumuus on \"heat\"',\n", - " 'juoda on \"drink\" ja syödä on \"eat.\"',\n", - " 'kädet on \"hands\" ja jalat on \"feet\"',\n", - " 'rytmi on \"rhythm\" ja isku on \"beat.\"',\n", - " 'kylmä on \"cold\", myyty on \"sold\"',\n", - " 'nuori on \"young\" ja vanha on \"old.\"',\n", - " 'kun tarina on kerrottu, tarina on \"told\"',\n", - " 'päästää irti \"let go\", pidä kiinni \"hold.\"',\n", - " 'taivuttaa \"bend\", korjata \"mend\"',\n", - " 'säästää \"save\", tuhlata \"spend.\"',\n", - " 'lähettää \"send\", ystävä \"friend\"',\n", - " 'alku on \"beginning\" ja loppu on \"the end.\"',\n", - " 'yume ni mita machi doko ni aru no ka',\n", - " 'tadoritsukitai dareka oshiete',\n", - " 'spark jet city',\n", - " 'hashiru choppaa mitoreteta',\n", - " 'spark jet city venus punk no',\n", - " 'sea side jet city',\n", - " 'mune no oku kara komiagetekuru',\n", - " 'jisoku gohyaku no metaru kurisutaru (metal crystal)',\n", - " 'spark jet city gairoju ni wa saru ga ite',\n", - " \"spark jet city chotto kiken'na kanji no\",\n", - " 'sea side jet city',\n", - " 'ah... chiri biinzu (chilli beans) wo kai ni ikou',\n", - " 'ah... kizu darake no ponteiakku (pontiac) de',\n", - " 'machi no akari wa miraa booru (mirror ball) de touitsu sareta',\n", - " 'atarashii seido',\n", - " 'spark jet city sangoshou uri mo iru shi',\n", - " 'spark jet city sora tobu beddo (bed)',\n", - " 'sea side jet city',\n", - " 'spark jet city ai shiteiru toka inai toka',\n", - " 'spark jet city dou demo ii ze sonna kotogara',\n", - " 'ah... mune no oku kara komiagete kuru',\n", - " 'ah... kono kimochi de ikiteiku yo',\n", - " 'doko ni aru no ka yume ni mita machi tadoritsukitai',\n", - " 'yume ni mita machi yeah!',\n", - " 'spark jet city hashiru choppaa mitoreteta',\n", - " 'spark jet city tama ni ikou ze piip shou (peep show)',\n", - " 'spark jet city cherii sooda (cherry soda) to cherii pai (cherry pie)',\n", - " 'spark jet city hachikiresouna body ni',\n", - " 'spark jet city ai shiteiru toka inai toka',\n", - " 'spark jet city sore hodo suukou janai ze',\n", - " 'spark jet city sora tobu beddo',\n", - " 'sea side jet city',\n", - " 'veljet sekд siskot',\n", - " 'kokoontukaamme yhteen pцytддn!',\n", - " 'on meidдn malja nostettava',\n", - " 'uudelle jumalalle',\n", - " 'tдhden alla syntynyt',\n", - " 'meidдn seuraamme nyt liittyy',\n", - " 'hдn syц kaikki pцydдn antimet',\n", - " 'ja vapahtajaksemme ilmoittautuu',\n", - " 'ketkд asettivat sankarinsa juhlittaviksi',\n", - " 'aina meidдn pyhiemme aikaan?',\n", - " 'ja he toistuvasti julkeavat puhua meistд hдpдisijцinд!',\n", - " 'juopot eivдt ulos astu lain',\n", - " 'valvova isдntд vaihtuu vain',\n", - " \"sillд jok' ikistд pдivдд kuluvaa\",\n", - " 'seuraa loputon pimeд yц',\n", - " 'pian suden uneen',\n", - " 'taas vaipua saa...',\n", - " 'brothers and sisters',\n", - " 'gather around the table!',\n", - " 'a chalice we have to raise',\n", - " 'to a god of an unknown faith',\n", - " 'the one born under a star',\n", - " 'now joins our company',\n", - " 'he eats all yield of the festive table',\n", - " 'and declares himself our savior',\n", - " 'who did arrange the celebration of their holy',\n", - " 'always on the days of our feasts?',\n", - " 'and again and again they dare speak of us as blasphemers!',\n", - " 'drunkards never step out of the door',\n", - " 'observing masters alone taking turns',\n", - " 'for every passing day in human life',\n", - " 'is followed by an endless dark of night',\n", - " \"into a wolf's dream\",\n", - " 'we soon may fall again...',\n", - " \"you get used to hangin' if you hang long enough\",\n", - " \"you get used to hangin' if you hang long enough\",\n", - " \"you get used to hangin' if you hang long enough\",\n", - " \"you get used to hangin' if you hang long enough\",\n", - " 'now i have two or three whiskey sodas',\n", - " 'massakkut tusarnaarparsi kalaallit nunaata radioa, i lytter til grønlands radio',\n", - " \"you get used to hangin' if you hang long enough\",\n", - " \"you get used to hangin' if you hang long enough\",\n", - " 'ehhhh, breath. (...)',\n", - " 'you hang long enough, you get used to hangin',\n", - " \"c'mon, ha\",\n", - " 'now i have two or three whiskey sodas',\n", - " \"you're forty-five and almost blind\",\n", - " \"you get used to hangin' if you hang\",\n", - " 'tämän puun jokaisella juurella haluaisin istua',\n", - " 'kaunein polte somija syissä',\n", - " 'tämän puun jokaisella oksalla sydän löystyy',\n", - " 'kipu ei satu varpuspäivä',\n", - " 'sparrow-day',\n", - " 'i would like to sit on every root of this tree',\n", - " 'with kindled curling flame',\n", - " 'on each bough of this tree a heart loosens',\n", - " \"pain won't hurt on a sparrow day\",\n", - " 'saitei datta kisetsu wa soro soro owatte',\n", - " 'kono goro sanpo to ka tanoshiku natteru',\n", - " 'mukashi itta pasta no omise mo itta yo',\n", - " 'kaki kake no aburae mo iro tashiteru',\n", - " 'doushite hito wa arasoi ya nikushimi dattari',\n", - " 'wakatte mo raitakattari bride mottari',\n", - " 'lion wa kyou ashita ikiru tame tatakau',\n", - " 'watashi wa jibun ga aishita hito wo wasure you',\n", - " 'you make a toy of you he makes a fool of you',\n", - " 'she makes a mess of you itsumo i make a peace with you',\n", - " 'ganbatteta dakedo mou modorenai',\n", - " 'torieaezu no toriaezu no romance janakatta',\n", - " 'datte tomodachi yori shinjireteta',\n", - " 'doushite kono goro yasashii kyoku ga suki na no',\n", - " 'atatakai yukkuri na oto ga kikitai',\n", - " 'shiryoku ga mata waruku naru kamoshirenai',\n", - " 'yakyuu no night game zutto mite iru',\n", - " 'kateru toki mo makeru toki mo te nuki na wake janai',\n", - " 'subete no balance ga bimyou ni ugoite',\n", - " 'ai suru koto no hou ga mada game yomeru kamo',\n", - " 'kesa mo mata terebi ya news ga hora saki yomi',\n", - " 'you make a toy of you he makes a fool of you',\n", - " 'she makes a mess of you itsumo i make a peace with you',\n", - " 'ganbatteta dakedo mou modorenai',\n", - " 'torieaezu no toriaezu no romance janakatta',\n", - " 'datte tomodachi yori shinjiteta',\n", - " 'aseisiin, oi pohjoisen soturit!',\n", - " 'isiemme pyhдllд maalla',\n", - " 'vihollinen meitд vastaan',\n", - " 'kruunataan vain kuolemallaan',\n", - " 'kristityt karkoitetaan',\n", - " 'taivaansa porteilla',\n", - " 'verellдn kastetaan',\n", - " 'te kurjat, heikot kддnnyttдjдt',\n", - " 'jotka astutte meidдn tiellemme',\n", - " 'kadotukseen, taivaan lapset',\n", - " ...]},\n", - " 'data': ['ruusut tieni varrelta',\n", - " 'anteeksi kaikki suokaa',\n", - " 'teille joku antoi elämän',\n", - " 'antoi lämmön, kantoi huolen',\n", - " 'vain lyhyt hetki ja nautin',\n", - " 'tuon pitkän työn hedelmän',\n", - " 'annoin enemmän kuin kaiken',\n", - " 'vähemmän kuin tyhjää...',\n", - " 'huudan tyhjyyteen',\n", - " 'missä kukaan ei kuule, ei käsitä',\n", - " 'voihkeessa vailla vastausta',\n", - " 'tuo tuuli tuoksun sinusta...',\n", - " 'fleeting epiphany',\n", - " 'roses, along the way',\n", - " 'forgive me for everything',\n", - " 'somebody gave you life',\n", - " 'gave you warmth, cared for you...',\n", - " 'in only a short moment, i enjoy',\n", - " 'the fruit of that long labour',\n", - " 'i gave you more than everything',\n", - " 'less than nothing...',\n", - " 'i scream into the emptiness',\n", - " 'to where no one hears or understands',\n", - " 'along with a moan without reponse',\n", - " 'the wind brings me your scent...',\n", - " 'lehtoon luille makaan',\n", - " 'aukeaa maahan',\n", - " 'makaan selätysten',\n", - " 'lehtiä seassa',\n", - " 'pysähtyy tänne niitylle ja kevätaukiolle',\n", - " 'lehdistä kuule maata',\n", - " 'voi tuntea mistä luut alkaa',\n", - " 'tuntea kun puotoaa läpi ja syvempään',\n", - " 'ainoat kukat sinä kesänä',\n", - " 'odottaa täällä kesänhiessä',\n", - " 'through bloom-blades',\n", - " 'in a grave grove',\n", - " 'lay on the bones',\n", - " 'feel deep with the leaves',\n", - " 'linger in meadows and spring-plains',\n", - " 'through bloom-blades the dead utter',\n", - " 'hear the bones collide',\n", - " 'feel when night runs through into deeper shadows',\n", - " 'only flowers this july',\n", - " \"wait here in summer's breath\",\n", - " 'synnyin tappamaan, aiheuttamaan tuhoa',\n", - " 'tuottamaan tuskaa, moderni messias',\n", - " 'kylvän kuolemaa, sadonkorjuun aika',\n", - " 'raiskaan ja kidutan, moderni messias',\n", - " '(chorus:)',\n", - " 'haudattuani teidät vedin käteen ja huusin että olen jumala!',\n", - " 'lopunalku lähenee, viikatteeni heiluu',\n", - " 'päitä putoilee ja sperma haisee',\n", - " '(chorus)',\n", - " '(and the same in english:)',\n", - " '(pissed to the utter maximum)',\n", - " 'i was born to kill, to cause destruction',\n", - " 'to cause pain, modern messiah',\n", - " 'i spread death, time for the harvest',\n", - " 'i rape and torture, modern messiah',\n", - " '(chorus:)',\n", - " 'after i buried you i jerked myself off and shouted that i am a god!',\n", - " 'the beginning of the end draws near, my scythe swings',\n", - " 'heads are falling and sperm smells',\n", - " '(chorus)',\n", - " 'kauan sitten kylän päässä syntyi kaksi poikaa',\n", - " 'kaksi perillistä sodanjumalan karhuntaljoin verhotun',\n", - " 'jo kolmen iästä, sanovat, toisiansa alkoivat harjoittaa',\n", - " 'ja kun teräksensä yhteen kalahti, saattoi kuulla ukkosen',\n", - " 'kauan sitten kylän päässä varttui kaksi poikaa',\n", - " 'kaksiko vain typerystä kuolemaa pilkkaamaan?',\n", - " 'ei yksikään haava vielä ollut tehnyt',\n", - " 'tehtäväänsä',\n", - " 'ja siksi kai sitä miekasta vihollisen täytyi anoa',\n", - " 'aina kunnia houkuttaa nuorta kansaa',\n", - " '(ryöstöretki merten taa) ja taistelu sitäkin enemmän',\n", - " 'varmaan turmaan rientävän tielle',\n", - " 'vain toinen hullu uskaltautuu',\n", - " 'kun kenttä hohkaa kärsimystä ja kirveet lentävät',\n", - " 'leikki kanssa kuoleman vain yltyy',\n", - " 'niin riemukasta lapsien on päitä pudottaa',\n", - " 'kuunnellessaan sotajoukkoa hurraavaa',\n", - " \"usein käykin vain niin et' vertaisesta tulee alempi\",\n", - " 'tarinan kulku voitoista kääntyy',\n", - " 'ja maine ihmisen helposti antaa veljensä unohtaa',\n", - " 'ylpeys, tuo kavalin tauti päällä maan',\n", - " 'näin on vienyt taas yhden uhrin muassaan',\n", - " 'kumpi lie se epatto, kilpi alhaalla ja miekka koholla',\n", - " 'teilleen mennyt vaiko hän joka hautoja kaivaa saa?',\n", - " \"heikompaa voima mik' riepottaa;\",\n", - " 'kotinsa on iäksi jättänyt tahtoen vielä surmata',\n", - " 'kunniaton moinen työ',\n", - " 'long ago a village away there were born two sons',\n", - " 'two heirs of the god of war dressed in bearskins',\n", - " 'from the age of three, they say, each other they did train',\n", - " 'and when their steel did clash thunder could be heard',\n", - " 'long ago a village away there did grow two sons',\n", - " 'or were they just two fools born to mock their deaths?',\n", - " \"still they hadn't got a wound that would've hurt'd enough\",\n", - " 'to prevent them from begging such from a foreign blade',\n", - " 'honour always tempts the young blood',\n", - " '(plundering across the seas) and battles even more',\n", - " 'into the way of the one rushing to his doom',\n", - " 'only another insane dares step',\n", - " 'when the field emits pain and axes fly about',\n", - " 'play with death is on the increase',\n", - " 'such a joy for children the dropping of heads is',\n", - " 'as long as their army cheers',\n", - " 'yet so often equality becomes inferiority',\n", - " 'the course of a story twists at triumphs',\n", - " 'and fame so easily lets a man forsake his kin',\n", - " 'thus pride, that most insidious illness on all earth',\n", - " 'once again has taken its prey',\n", - " 'which one might be the failure, he who left with a lowered',\n", - " 'shield and sword held high or he who has to dig the graves?',\n", - " 'tossed about is the weaker by what force;',\n", - " 'his home he has left, gained just more will to slay',\n", - " 'what a disgrace is such work',\n", - " \"i'm a working man saenai mo ningu taimu\",\n", - " 'tsukare torenai in shite y shirt boy',\n", - " \"kaisha ni ikeba mata shikararete warukunakutemo i'm sorry\",\n", - " 'three. two. one. go wo ruweizu zangyou yasumi mo henjou weekend',\n", - " 'kaserareta shimei wo rippa ni hatasutame',\n", - " 'in the sky kumo wo tobikoete',\n", - " 'hateshinai daichie',\n", - " 'sukoshi yoreta nekutai wo kyu tto shimenaoshite',\n", - " 'kokontoko (saikin) tsuitenai',\n", - " 'kanojo ni furare kuruma jikotte hoken ni wa ittenai',\n", - " 'saikoro nigitte ore no jinsei ge-mu itsudatte furidashi ni modoru',\n", - " 'irotoridori no aisu kuri mu wo katate ni de to shitatte',\n", - " 'itsumo no merodi nagaretara ibi dashida !',\n", - " 'in the sky kumo wo tobikoete',\n", - " 'hateshinai daichie',\n", - " 'ki ga tsukeba teppen mawatteru mystic moonlight',\n", - " 'mou yameteyarunante iwanaide ganbarou !',\n", - " 'kutabireta sono su-tsu wo hokorashiku matotte',\n", - " 'hi-ro- nante hodotooikedo hokorashii mainichisa i can fly',\n", - " 'in the sky kumo wo tobikoete',\n", - " 'hateshinai daichie',\n", - " 'ki ga tsukeba teppen mawatteru mystic moonlight',\n", - " 'mou yameteyarunante iu monka bakayaro !',\n", - " 'sousa ore wa tori da hikouki da ! iya supaman da !!',\n", - " 'just go ! hang in there !!',\n", - " '*kimi no mune de naka nai',\n", - " 'kimi ni mune kogasa nai',\n", - " \"i'm looking for a perfect sky\",\n", - " \"i'm looking for a perfect sky\",\n", - " 'gozen rei-ji sotto uchi wo nukete',\n", - " 'hitori de nonda gimuretto',\n", - " 'chottodake me ga sameta yo',\n", - " 'koujichuu no douro ni habamarete',\n", - " 'kimi he to tsuduku ai mo',\n", - " 'tachigiete shimau no ka na',\n", - " 'ikichigau omoi darake ne',\n", - " 'asayake ga ao ni kawaru goro',\n", - " '*repeat',\n", - " '**sunahama de kamoshika no taan',\n", - " 'atsui natsu wa kaasute de dansu',\n", - " \"i'm looking for a perfect sky\",\n", - " \"i'm looking for a perfect sky\",\n", - " 'wakaregi ni satto kawasu kuchiduke',\n", - " 'hitori ni naritakutte',\n", - " 'chotto dake uso tsuita ne',\n", - " 'kimi ga omou hodo kodomo ja nai',\n", - " 'kidui tatte iwa nai',\n", - " 'sore wa kiken na kakehiki ka na',\n", - " 'wakari aeru hi ga kuru hazu',\n", - " 'niji no o ga umi ni tokeru you',\n", - " '*repeat',\n", - " 'ten wo aoide maameido janpu',\n", - " 'ichido kiri no shakunetsu romansu',\n", - " \"i'm looking for a perfect sky\",\n", - " \"i'm looking for a perfect sky\",\n", - " 'sono mama de ii kedo',\n", - " \"hey,baby,when you're lonely\",\n", - " 'kokoro hiraite',\n", - " 'naminori mo ii kedo',\n", - " 'hey,baby,talk to me',\n", - " 'anata to mitai kanpeki na sora wo',\n", - " '*repeat',\n", - " '**repeat',\n", - " 'taikan rosuto byuutii',\n", - " 'katakata warau sutuupiddo',\n", - " 'nengan ronsou heretikku',\n", - " 'jakusha ni banzai rabu mii',\n", - " 'shitai ga zekkei remurikku',\n", - " 'koukai jii nara noorimuzu',\n", - " 'star of nic',\n", - " '「did you love me?」',\n", - " '\"did you love me?\"',\n", - " 'hey hey hey baby, i love you',\n", - " 'and if you love me too, then i love you three four five',\n", - " \"hey can't you see that's me\",\n", - " 'do you know lumiland? do you know poroland?',\n", - " 'do you know ruskaland, and dangerous dangerous love?',\n", - " 'made in finland, made in finland',\n", - " 'hakkaa päälle suomen poika, ettei meitä toiset voita',\n", - " 'sibelius, sauna ja sisu',\n", - " 'ne on made in finland',\n", - " 'hey hey hey lady, i want you',\n", - " 'and if you want me too, bring two tea to thirty-two',\n", - " 'i wait for you, you, you',\n", - " 'do you know vihtaland? do you know untoland?',\n", - " 'do you know urkkiland, and dangerous, dangerous love?',\n", - " 'made in finland, made in finland',\n", - " 'hakkaa päälle suomen poika, ettei meitä toiset voita',\n", - " 'höyhenet, terva ja viina',\n", - " 'ne on made in finland',\n", - " 'hey hey hey baby, i talk to you',\n", - " 'and if you talk me too, then i talk you three four five',\n", - " \"hey can't you see that's me\",\n", - " 'do you know lätkäland? do you know mölliland?',\n", - " 'do you know härmäland, and dangerous, dangerous love?',\n", - " 'made in finland, made in finland',\n", - " 'hakkaa päälle suomen poika, ettei meitä toiset voita',\n", - " 'pursiainen, salin ja viren',\n", - " 'ne on made in finland',\n", - " 'sisu in finland',\n", - " 'sauna in finland',\n", - " 'verta pakkiin suomen poika, ettei meitä toiset voita',\n", - " 'dangerous love and me, ne on made in finland',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sunato karta',\n", - " 'pekhat karta',\n", - " 'adrishto karta',\n", - " 'drishto karta',\n", - " 'upat karta',\n", - " 'parlo karta',\n", - " 'biaapat karta',\n", - " 'alapato karta',\n", - " 'bakato karta',\n", - " 'boojat karta',\n", - " 'aavat karta',\n", - " 'jaat bhee karta',\n", - " 'nirgun karta',\n", - " 'sirgun karta',\n", - " 'gur prasaad',\n", - " 'naanak samdrishtaa',\n", - " 'gur prasaad',\n", - " 'naanak samdrishtaa',\n", - " 'gur prasaad',\n", - " 'naanak samdrishtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sunato karta',\n", - " 'pekhat karta',\n", - " 'adrishto karta',\n", - " 'drishto karta',\n", - " 'upat karta',\n", - " 'parlo karta',\n", - " 'biaapat karta',\n", - " 'alapato karta',\n", - " 'bakato karta',\n", - " 'boojat karta',\n", - " 'aavat karta',\n", - " 'jaat bhee karta',\n", - " 'nirgun karta',\n", - " 'sirgun karta',\n", - " 'gur prasaad',\n", - " 'naanak samdrishtaa',\n", - " 'gur prasaad',\n", - " 'naanak samdrishtaa',\n", - " 'gur prasaad',\n", - " 'naanak samdrishtaa',\n", - " 'gur prasaad',\n", - " 'naanak samdrishtaa',\n", - " 'gur prasaad',\n", - " 'naanak samdrishtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " \"if you don't see god\",\n", - " 'in all',\n", - " 'you won’t see god',\n", - " 'at all',\n", - " 'at all',\n", - " \"if you don't see god\",\n", - " 'in all',\n", - " \"you won't see god\",\n", - " 'at all',\n", - " 'at all',\n", - " 'if you don’t see god',\n", - " 'in all',\n", - " \"you won't see god\",\n", - " 'at all',\n", - " 'at all',\n", - " 'ah',\n", - " 'ah ah ah',\n", - " 'ah ah ah',\n", - " 'ah ah ah ah ah',\n", - " 'ah ah ah ah ah ah',\n", - " 'sunato karta',\n", - " 'pekhat karta',\n", - " 'adrishto karta',\n", - " 'drishto karta',\n", - " 'upat karta',\n", - " 'parlo karta',\n", - " 'biaapat karta',\n", - " 'alapato karta',\n", - " 'bakato karta',\n", - " 'boojat karta',\n", - " 'aavat karta',\n", - " 'jaat bhee karta',\n", - " 'nirgun karta',\n", - " 'sirgun karta',\n", - " 'gur prasaad',\n", - " 'naanak samdrishtaa',\n", - " 'gur prasaad',\n", - " 'naanak samdrishtaa',\n", - " 'gur prasaad',\n", - " 'naanak samdrishtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " 'sabh karta',\n", - " 'sabh bhugtaa',\n", - " \"if you don't see god\",\n", - " 'in all',\n", - " \"you won't see god\",\n", - " 'at all',\n", - " 'at all',\n", - " \"if you don't see god\",\n", - " 'in all',\n", - " \"you won't see god\",\n", - " 'at all',\n", - " 'at all',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'sabh karta',\n", - " 'ole uloin saari',\n", - " 'minkä tavoittaa levossa',\n", - " 'ole veen lakeus',\n", - " 'aava levon soutaa',\n", - " 'ole silmän tyyni',\n", - " 'veneenä livu',\n", - " 'ole riemun nuotta',\n", - " 'veestäni viety saalis',\n", - " 'ole salassa luoto',\n", - " 'paolla ulapalla',\n", - " 'ole pinnan kuva',\n", - " 'maailman nurja',\n", - " 'ole aamu laaksoon',\n", - " 'seppelöivä piennar',\n", - " 'ole heinän törmä',\n", - " 'tuoksuna teillä',\n", - " 'ole pellon puntarpää',\n", - " 'mittumaaren seppel',\n", - " 'ole nitty tuolla',\n", - " 'aho toisaalla',\n", - " 'ole nupulla kohti',\n", - " 'keltaa tänne tuoma',\n", - " 'ole ryytien tuoksuva',\n", - " 'pelkän ilon valli',\n", - " 'ole päivänkaaren sali',\n", - " 'huomenen holvi',\n", - " 'ole illan aavuus',\n", - " 'yön paino rintaan',\n", - " 'ole karkelo pisaroita',\n", - " 'laskeudu sateisena',\n", - " 'ole kuulaalla kaste',\n", - " 'solistessasi lähde',\n", - " 'rakasta niin rakastan',\n", - " 'rakastan tulessa',\n", - " 'täällä mä palan',\n", - " 'poltan lempeä',\n", - " 'mut lempes okaa',\n", - " 'ja lusias sammuu',\n", - " 'jään karrelle',\n", - " 'jään tuhkaa',\n", - " '(english translation:)',\n", - " 'furthest',\n", - " 'be the furthest island',\n", - " 'reached asleep',\n", - " 'be vast waters',\n", - " 'widths to row',\n", - " 'be calm eyes',\n", - " 'glide of an oar',\n", - " \"be blithe's seine\",\n", - " 'a catch from my water',\n", - " 'be an arcane islet',\n", - " 'fled afar',\n", - " \"be lake's reflection\",\n", - " 'adverse of the world',\n", - " 'be dawn pouring into a valley',\n", - " 'laurels lining the lane',\n", - " 'be a bank of hay',\n", - " 'scent on a road',\n", - " 'be a field of foxtails',\n", - " \"mid summer's mirth\",\n", - " 'be a meadow there',\n", - " 'a glade elsewhere',\n", - " 'be blossoms reaching',\n", - " 'view of their yellow',\n", - " \"be herb's thriumph\",\n", - " 'fragnance rampart',\n", - " \"be day's hallway\",\n", - " 'arching tomorrow',\n", - " \"be evening's ease\",\n", - " 'weight of night on chest',\n", - " 'be feasting drops',\n", - " 'descending rainy',\n", - " 'be morning dew',\n", - " 'rippling fount',\n", - " 'love me so love i feel',\n", - " 'love in pyre',\n", - " 'here in fire',\n", - " 'sear with love',\n", - " 'but your love is thorned',\n", - " 'and light fails',\n", - " 'i am left scorched',\n", - " 'i am left in ashes',\n", - " 'well the party was jumpin, the place was packed',\n", - " 'snoop dogg is on the microphone ready to rap',\n", - " 'elastinen, kimmo, an elastino',\n", - " \"up in the sky, you've never seen tho\",\n", - " \"up in the air, you've never seen tho\",\n", - " \"that's what she said, straight to the head\",\n", - " \"so real and it's the truth\",\n", - " 'rocking with big snoop',\n", - " 'koko yö',\n", - " 'ainakun kunnolla nollataan',\n", - " 'siinä menee koko yö',\n", - " 'jengi ja fiilis on kohdallaan',\n", - " \"everybody's just dancing and drinking\",\n", - " 'and having a good time',\n", - " 'just dancing and drinking, hands up in the air',\n", - " 'mittasuhteet paisuu, illast tuli isompi ku luulinkaa oon liikkeellä snoopin kaa',\n", - " 'kaikki on mahollista tää on todiste siit',\n", - " 'mul o pinkkaa, ja kaverit otin messiin',\n", - " 'menee holia huolel, olin jo nuoren vipeis en suomessa koskaan kolikko puolel',\n", - " 'ainutlaatusii hetkii ei tuu paluuta tähän, nyt menee myöhäsee tai aikasee, miten haluut sen nähä',\n", - " 'tytöt tanssii, pojat palleja paukuttelee',\n", - " 'mä vasta alottelen älä ala haukottelee',\n", - " 'minne jatkoille, pidetää poow-woow',\n", - " 'mul koiruudet mieles oon stadin snadi bowwow',\n", - " 'pannaa puntarii, kokemuksii vai unta niin',\n", - " 'ei mun tarvii miettii, ei aikaa kumpaankin',\n", - " 'viikonloppuyöt unettomii, koska sillon jos mä rupeen hommiin',\n", - " 'siinä menee koko yö',\n", - " 'aina kun kunnolla nollataan',\n", - " 'siinä menee koko yö',\n", - " 'jengi ja fiilis on kohdallaan',\n", - " \"everybody's just dancing and drinking\",\n", - " 'and having a good time',\n", - " 'just dancing and drinking, hands up in the air',\n", - " 'just niinkun meilläpäin on tapana',\n", - " 'takuu varmasti, menee aamun asti',\n", - " 'me voidaa nukkua sit, ku hiipu kuasi',\n", - " 'viikon lepää et taas loppuviikon tullen mä jaksan, jos tiiät mist mä puhun nii tää on sulle',\n", - " 'ja sulle',\n", - " 'for you, and you, and you, and you too',\n", - " \"'cause this is all that i do\",\n", - " 'i make it bang, hang and i swang, do my thang',\n", - " 'and let the music play louder',\n", - " \"i'm a show yo how to\",\n", - " 'conduct the crowd, move around',\n", - " 'how you like me now',\n", - " 'koko yö',\n", - " 'aina kun kunnolla nollataan',\n", - " 'siinä menee koko yö',\n", - " 'jengi ja fiilis on kohdallaan',\n", - " \"everybody's just dancing and drinking and having a good time\",\n", - " 'just dancing and drinking',\n", - " 'hands up in the air-air-air-yea',\n", - " 'antaa virrata sateen',\n", - " 'pian se hahmoja nostattaa',\n", - " 'kun luonnonhelma henkii',\n", - " 'verettömiä utulintuja',\n", - " 'kuin häilyviä perhoja',\n", - " 'väreilisi pinta maan',\n", - " 'niin auer hiljaa vierii',\n", - " 'viljan yllä laineilee',\n", - " 'let the rain fall',\n", - " 'after the grey clouds',\n", - " 'colourless songbirds',\n", - " 'rise without a tune',\n", - " 'like fluttering butterflies',\n", - " 'the ground is filled',\n", - " 'with odd shapes',\n", - " 'and fog that flourishes in the wind',\n", - " 'clear tamei',\n", - " 'nï stei pah lekka shi sonna kamei',\n", - " 'memma xēi ast wana famei',\n", - " 'dora geh slā ay dessa wanna balei inu',\n", - " 'chung ma tella ka',\n", - " 'kei massa wanna kar xēi tamei wa',\n", - " 'xao void mogu ta se wing yalasa',\n", - " \"wit' a see through body chema ki sonola\",\n", - " 'clear tamei',\n", - " 'nï stei pah lekka shi sonna kamei',\n", - " 'memma xēi ast wana famei',\n", - " 'dora geh slā ay dessa wanna balei inu',\n", - " 'chung ma tella ka',\n", - " 'kei massa wanna kar xēi tamei wa',\n", - " 'xao void mogu ta se wing yalasa',\n", - " \"wit' a see through body chema ki sonola\",\n", - " 'chen mi pi la ka',\n", - " 'mei nu ah so we',\n", - " 'tami wenna sung',\n", - " 'putno kasson me',\n", - " 'men no sawa figh sowa kama nu',\n", - " 'tami wenna sung',\n", - " 'putno kasson me',\n", - " 'chung ma tella ka',\n", - " 'kei massa wanna kar xēi tamei wa',\n", - " 'xao void mogu ta se wing yalasa',\n", - " \"wit' a see through body chema ki sonola\",\n", - " 'di mi pi la ka!',\n", - " 'wi lu pressu win',\n", - " 'tami wenna sung',\n", - " 'putno kasson me',\n", - " 'winnu sawer fi sonnu callu ni',\n", - " 'honnu sallu ta bollu nattu wei',\n", - " 'chen mi pi la ka mei nu ah so we',\n", - " 'tami wenna sung putno kasson me',\n", - " 'men no sawa figh sowa kama nu',\n", - " 'tami wenna sung putno kasson me',\n", - " 'chen mi pi la ka mei nu ah so we',\n", - " 'tami wenna sung putno kasson me',\n", - " 'men no sawa figh sowa kama nu',\n", - " 'tami wenna sung putno kasson me',\n", - " 'tami wenna sung putno kasson me',\n", - " 'men no sawa figh sowa kama nu',\n", - " 'tami wenna sung putno kasson me',\n", - " 'men no sawa figh sowa kama nu',\n", - " 'tami wenna sung putno kasson me',\n", - " 'men no sawa figh sowa kama nu',\n", - " 'tami wenna sung putno kasson me',\n", - " 'men no sawa figh sowa kama nu',\n", - " 'mustan surman veljeskunta',\n", - " 'kuningas ruton airuet',\n", - " 'kylmän tulen kantajat',\n", - " 'hänen viestinsä sanansaattajat',\n", - " 'lailla saatanan vasaran',\n", - " 'iskemme vihan voimalla',\n", - " 'ruosteiset naulat ja koukut',\n", - " 'lailla saatanan vasaran',\n", - " 'vitsauksin ja kirouksin',\n", - " 'siunaan tätä maailmaa',\n", - " 'tämä on lahjani sinulle:',\n", - " 'verta ja tuhkaa!',\n", - " 'mustan tulen palvelijat',\n", - " 'saatanan apostolit',\n", - " 'kaaoksesta syntyneet',\n", - " 'kunniassa nousseet',\n", - " 'verta ja tuhkaa!',\n", - " 'painajaisin ja manauksin',\n", - " 'siunaan tätä maailmaa',\n", - " 'tämä on lahjani sinulle:',\n", - " 'totaalinen kuolema!',\n", - " 'black terror metal hell!',\n", - " 'blood and ashes',\n", - " 'brotherhood of the black death',\n", - " 'heralds of the great king pest',\n", - " 'carriers of the cold fire',\n", - " 'harbringers of his message',\n", - " \"like satan's hammer\",\n", - " 'we strike with force of hatred',\n", - " 'rusty nails and hooks',\n", - " \"like satan's hammer\",\n", - " 'with curses and plagues',\n", - " 'i bless this world',\n", - " 'this is my gift to humankind:',\n", - " 'blood and ashes',\n", - " 'servants of the black fire',\n", - " 'apostoles of satan',\n", - " 'from the chaos born',\n", - " 'risen in honour',\n", - " 'with nightmares and oaths',\n", - " 'i bless this world',\n", - " 'this is my gift to you:',\n", - " 'total death!',\n", - " 'black terror metal hell!',\n", - " 'kun syksyn vienot lehvät',\n", - " 'vaitonaisena liitää varisparvi',\n", - " 'etäiseen pilvenlonkaan',\n", - " 'ihmisten luota ne kaikkoavat',\n", - " 'unten kultalaan',\n", - " 'like fine leaves in autumn',\n", - " 'silently the crows fly',\n", - " 'beyond distant clouds',\n", - " 'far away from where man dwells',\n", - " 'to the golden pasture of dreams',\n", - " 'yeah 1-2..',\n", - " 'wu-tang.. killa beez..',\n", - " 'bobby steeles.. cilvaringz.. beretta 9..',\n", - " 'killah ganz..',\n", - " 'aiyo my sword is equivalent to the 7 headed dragon',\n", - " \"blowin' fire we be stompin' finnish streets like a fuckin' giant\",\n", - " 'the red kiyaffa rocks the mental, my ill kinda darts ripping shit apart',\n", - " 'and bombing instrumentals apart',\n", - " 'enter my chamber, 3rd door, 1st floor, the slayer',\n", - " \"it's the rzarectah student from the deserts of arabia\",\n", - " \"i've been around since born born rockin' wu-tang songs\",\n", - " \"and choppin' niggas off like i'm mowin' lawn\",\n", - " \"appearin' from the dark under bobby's light\",\n", - " 'went through lobby fights to elevate myself to clan copyright',\n", - " \"i'm probably right and left, to swing a sword in finland\",\n", - " \"bringin' forth the name and chop the feet of rumpelstiltskin\",\n", - " \"wu-tang's the name, it's forever and you know it\",\n", - " \"tryin' to come across, you got somethin' to prove? better show it\",\n", - " 'johnny bro the song will blow hard in hellsinki',\n", - " 'peace from wu-tang, cilvaringz and bob digi',\n", - " 'sä et saa mua, mun niskat ei katkee vaik et ostas',\n", - " 'ei tuu aamua jolloin heräisin viemää mun roskat',\n", - " 'sun saastasee laatikkoo, joka on kun aavikko',\n", - " 'täynnä kangastuksii joil o valmiit raamit jo',\n", - " 'puhumalla selvii, juoksemal jää henkii',\n", - " 'mut miten näille pärjää ku nää istuu vaan penkil',\n", - " 'tuun tekee kaikkeni että jengi näkis',\n", - " 'anna mun elää vaik et tykkääkään räpist',\n", - " 'sinä päivänä ku tiput joni ei oo säälimäs',\n", - " 'sokee pärjää vaa uskol ja kuuntelemal ääniä',\n", - " 'sä et tee kumpaakaan sä loit mulle taakan',\n", - " 'ai tää o muka raakaa? vittu tsiigaa mun naamaa',\n", - " 'se hymyilee vaa jos oikeesti o aihetta',\n", - " 'tunteet ajelee, vaikee tuntee välivaihetta',\n", - " 'ja jos kelaa et musa on ilmasta niin näkee',\n", - " 'et nii on terveydenhuoltoki ku katkasen sun kätes',\n", - " \"yo hip bone's connected to ya knee bone\",\n", - " \"yo knee bone's connected to ya leg bone\",\n", - " \"ya leg bone's connected to ya feet bone\",\n", - " 'my lips is connected to this tree bone',\n", - " \"describe life to you, in a bird's eye view\",\n", - " \"understand why the water is wet, the sky's blue\",\n", - " 'why the earth sinks in a quake, the weight of a snowflake',\n", - " \"but you can't trace back the original black man's birthdate\",\n", - " \"it's like countin' ever sand in the sahara desert\",\n", - " 'the potential, every band of the parametric',\n", - " 'heavy watts of volts used by the world electric',\n", - " \"every molecule of shit dropped in the world's septics\",\n", - " 'islam is older than sun, moon and stars',\n", - " 'wisdom more powerful than gun, platoon and bombs',\n", - " \"words of sun tzu bein' used when they're harmed\",\n", - " 'in the midst of the batu, kid i stay calm',\n", - " 'the ring on my pinky, who would ever think bobby digi',\n", - " \"would be flowin' over hip hop tracks in helsinki?\",\n", - " 'with my man cilvaringz from the land of the genie',\n", - " 'b.m.g. put that cream in the middle, like the twinkee',\n", - " \"we poppin' it off, with rockin' da north\",\n", - " \"ganz cockin' the 4, beretta's blockin' the door\",\n", - " \"we dropped the tour, fuck that, we stoppin' the war\",\n", - " \"you heads of the snakes we be choppin' 'em off\",\n", - " 'deep in my mental, a weekend residential rental',\n", - " \"was the scannin', hotel enter continental\",\n", - " 'room 7-6-8, ringz brought the mixtape',\n", - " 'of jonny bro beats that he pulled from a sick crate',\n", - " 'i laid my verse in 20 minutes, nigga time is money',\n", - " 'so we call that money minutes',\n", - " \"a killa bee's on this track, about to put that honey in it\",\n", - " 'known to rock the magic black cap without the bunny in it',\n", - " 'females hit me up on the email',\n", - " 'sayin\\', \"bobby we scared to climb the killa bee sales\"',\n", - " 'i said, \"bitch, record companies won\\'t ship me',\n", - " \"cuz i only speak the truth and they can't politic me\",\n", - " 'i got a big fat dick so come and lick me',\n", - " \"got a stack of cream but no nigga won't stick me\",\n", - " \"know these contracts so these labels can't vick me\",\n", - " 'put me in a line-up watch the c-ciphers pick me\"',\n", - " \"as the world's greatest niggas hate us\",\n", - " \"cuz they can't fuck with our status, we on a hiatus\",\n", - " 'from america to eu wrote \"oh bobbito\"',\n", - " \"and y'all groupies hope y'all could do me ho\",\n", - " \"yo hip bone's connected to ya knee bone\",\n", - " \"yo knee bone's connected to ya leg bone\",\n", - " \"ya leg bone's connected to ya feet bone\",\n", - " 'my lips be connected to this weed bone',\n", - " 'deflate the hate, bring back the love that was given',\n", - " \"a day of birth i lost while livin'\",\n", - " \"got no priorities after drinkin' 40's and smoke blunts\",\n", - " 'block wisdom and look at the world with a blurried vision',\n", - " \"cuz plan's born as i open my eyes\",\n", - " 'see the jewels and diamonds pass by in the skies',\n", - " 'create a masterpiece with the full capacity',\n", - " 'acknowledge of the truth and the truth is what i promise (to the people)',\n", - " 'and i shall be honest and i shall destroy evil',\n", - " 'with no commas in between my sentences',\n", - " 'with no man attempted murder on examiners',\n", - " 'the abbott rza and the cabinet will civilize you savages!',\n", - " 'mul o rytmi veres ja luis, kulkee mun selkäytimee',\n", - " 'mä seison pikku-robal näytän ykköst kytille',\n", - " 'räkis vaik voissa paistas, näkyy kaikes minkä tekee',\n", - " 'innovatiivisii tapoi vetää verottaja rekee',\n", - " 'jos sul on ennakkoluuloi, aika kytkee ne vekee',\n", - " 'mä raivaan kaiken mikä tulee eteen, tuut sä megee',\n", - " 'friedil paukuttaa, messis joni ja wu-ampiaisii',\n", - " 'ja mä oon se koala jonka squadi hoitaa kampis naisii',\n", - " 'ei enää märkäkorvii, rima korkeel ei aikaa lorvii',\n", - " 'ilman lentolupakirjaa mä tähtään korkeimpaan tornii',\n", - " 'valkkaa sanat tai rysty, mul ei oo tarvet ystävystyy',\n", - " 'täysii päähän ja paareil pois nii pitkälle kun ikin pystyy',\n", - " 'plus mun koko crew spittaa vaan spittaamisen ilost',\n", - " 'ja kittaan mut jos feattaan niin feattaan, mis ne hillot?',\n", - " 'jos wu on fölis nii voit pitää sun baxit, koska rähinää',\n", - " \"ei oo mitää ( ...?... ) c'mon\",\n", - " 'verellä kirjoitettu kirja elämän',\n", - " 'käsissä sodan maailman luojan',\n", - " 'yli kuluvan talven voiko kuoleva jaksaa',\n", - " 'haavoittuneenakin susia kutsuen',\n", - " 'eikä miekka paranna metsien haavoja',\n", - " 'näin kirjoitettua ei verettä päätetä',\n", - " 'kuuntele, kuinka huudot kaikuvat',\n", - " 'vastarannalla aamuun ei odoteta',\n", - " 'maasta savea, taivaalta tuhkaa',\n", - " 'tulesta uhrit poltetun maan',\n", - " 'merestä aallot, taivaalta pisarat',\n", - " 'tulen henget rauhoittamaan',\n", - " 'ei kukaan meihin ole katsonut aikoihin',\n", - " 'on ruoska repinyt pilvet halki',\n", - " 'rotat juoksevat kannella maailman',\n", - " 'kauna saaliiden silmist leiskuu',\n", - " 'kun idän varjo lännestä lankeaa',\n", - " 'ja saastunut mieli kunniaa hakee',\n", - " 'jäästä syntynyt on ajettu tuleen',\n", - " 'tulen tekijät mustaan hukkuneet',\n", - " 'ei kukaan sano että näkisi tulevan',\n", - " 'ei kukaan sano jos pelkää',\n", - " 'kallioihin pirstokaa kirveet',\n", - " 'päätänne riiputtakaa, heikot polvistukaa',\n", - " 'syvään lihaan nahkanne luokaa',\n", - " 'ryveten häpeässä lapsenne uhratkaa',\n", - " 'ihmisen tahto kuin rauta taivuttamaton',\n", - " 'riiputtaa päätään kurja luotu virheetön',\n", - " 'se pelkää, mutta kuolee taistellen',\n", - " 'puolesta jumalten joita itse tunne ei',\n", - " 'odottaa voittajan täytyy',\n", - " 'voidakseen sanansa tuuleen heittää',\n", - " 'vuoret liikkuvat harvoin',\n", - " 'ei niitä siirrä yksin vahvinkaan',\n", - " 'vain hetken teidän liekkinne roihuaa',\n", - " 'katso, se hiljaa hiipuu, maan tuhkin koristaa',\n", - " 'syvyys kylmä viimeisen hehkun tukahduttaa',\n", - " 'kutsutko kuoleman sen vielä kerran herättämään',\n", - " 'sitä vielä itket kun synkän vieraan taloosi laskit',\n", - " 'siipensä levittämään kauniin elämäsi ylle',\n", - " 'sen yhdellä henkäyksellä poistamaan',\n", - " 'aseisiin, sen te kuulette aina',\n", - " 'teidän verellänne tämä maa peitetään',\n", - " 'se on polku, jota pitkin teitä seurataan',\n", - " 'niin kauas kuin pimeys jaksaa kantaa',\n", - " 'paikkanne lunastakaa, ette koskaan ole vapaita',\n", - " 'arkuissanne lapsenne kannetaan',\n", - " 'sataa ihmisen viha jumalten niskaan',\n", - " 'vahvemman oikeus vahvemman tappaa',\n", - " 'puolusta kotiasi, tuholle uhraa rakkaasi',\n", - " 'polta maa takanasi ennen kuin poltat itsesi',\n", - " 'sataa ihmisen viha jumalten niskaan',\n", - " 'punaiset pilvet sumentavat taivaan',\n", - " 'näin kaikki päättyy, kuumuus maan tyhjiin imee',\n", - " 'näin kaikki päättyy, näen sen nyt',\n", - " 'punainen taivas rotat saartaa',\n", - " 'verellä kirjoitettu kirja elämän',\n", - " 'käsistä sodan maailman luojan',\n", - " 'kansi hiiltyneenä laskettu maahan',\n", - " 'sanat sanomattomiksi tehty',\n", - " 'näin kaikki päättyy, näen sen nyt',\n", - " 'tämä sivu on viimeinen',\n", - " 'näin kaikki päättyy, tyhjään ja unohdukseen',\n", - " 'eikä kukaan tänne palaa',\n", - " 'a land driven into the fire',\n", - " 'the book of life written in blood',\n", - " 'lies in the hands of the lord of the world of war',\n", - " 'this lasting winter could the dying endure',\n", - " 'still calling the wolves when wounded',\n", - " \"the sword doesn't heal the forests' wounds\",\n", - " 'what is written is undone by blood',\n", - " 'hearken to the echoes of warcries',\n", - " 'the opposing shore will not wait for the dawn',\n", - " 'clay from the earth, ash from the sky',\n", - " 'offerings of the burnt soil from flames',\n", - " 'waves from the sea, drops from the sky',\n", - " 'to calm the spirits of fire',\n", - " 'no one has looked at us from above',\n", - " 'the scourge has ripped through the clouds',\n", - " 'race of rats on the deck of the world',\n", - " 'grudge flames in the eyes of the prey',\n", - " 'when the west casts a shadow on east',\n", - " 'whilst a poisoned mind desires glory',\n", - " 'which was born of ice is now driven into fire',\n", - " 'the firemakers all drowned in black',\n", - " 'no man will say he sees the coming',\n", - " 'no man will say he fears',\n", - " 'splinter your axes against the rocks',\n", - " 'hang your heads and kneel',\n", - " 'shed your skin to reveal your flesh',\n", - " 'wallow in shame to sacrifice your kin',\n", - " 'the will of man like iron unbent',\n", - " 'who was created flawless may hang his head',\n", - " 'he fears, but will die fighting',\n", - " 'in honour of gods he has never known',\n", - " 'the victor must wait for his moment',\n", - " 'to cast his words into the wind',\n", - " 'rarely the mountais do move',\n", - " \"even the strongest won't shift them alone\",\n", - " 'your flame is ablaze but once',\n", - " 'behold as it wanes to veil the earth in ash',\n", - " 'last sparkles die out in the depths of cold',\n", - " 'death itself you may invite to find and fan them',\n", - " 'and so you shall weep, for the somber guest in your stay',\n", - " 'spreads its wings over your beautiful life',\n", - " 'blowing it out with one single breath',\n", - " 'to arms, you shall always hearken',\n", - " 'with your blood they veil the ground',\n", - " \"it's a path you will be followed on\",\n", - " 'as long as the darkness may reach',\n", - " 'claim your positions, you shall never be free',\n", - " 'in your coffins your children are carried',\n", - " 'the wrath of man cast upon the gods',\n", - " 'right through strength kills the strong',\n", - " 'defend your home, offer your loved to the ruin',\n", - " 'burn the land left behind before burning yourself',\n", - " 'the wrath of man cast upon the gods',\n", - " 'red clouds blur over the sky',\n", - " 'this is how it ends, heat sweeps the earth',\n", - " 'this is how it ends, i can see it now',\n", - " 'red sky to encircle the rats',\n", - " 'the book of life written in blood',\n", - " 'from the hands of the lord of the world of war',\n", - " 'lay down on earth with bindings charred',\n", - " 'and with all words made unsaid',\n", - " 'this is how it ends, i can see it now',\n", - " 'this page will be the last',\n", - " 'this is how it ends, to emptiness, to oblivion',\n", - " 'and none will ever return',\n", - " 'chotto dake de ii kanjite what i feel',\n", - " 'tsurete yuku kara hi nichijou made let go',\n", - " 'oto ni yurarete flow',\n", - " 'dekakeyou time to ride saa eye to eye',\n", - " 'kyouyuu suru jikan to kono shunkan wo',\n", - " 'key to life shiritai ? tonight',\n", - " 'oshiete ageru but i want you to',\n", - " 'feel the beat, feel the beat unaru beesu no ue',\n", - " 'feel the heat, feel the heat atsuku moeagaru',\n", - " 'oto ga subete wo tsutsumikonda toki bokura wa hitotsu ni naru',\n", - " 'sing it loud motto tooku made todoku you ni',\n", - " 'sing it loud kimi ga doko no dare demo ii',\n", - " \"you're the one, you're the one\",\n", - " 'kikasete yo',\n", - " 'now sing it loud minna hitori hitori ga superstar',\n", - " 'sing it loud arittake no koe de ima',\n", - " 'o-wi-oh o-wi-oh',\n", - " 'sora no mukou made',\n", - " 'get the party started',\n", - " 'shake your town',\n", - " 'get the party started',\n", - " 'shake it upside down',\n", - " 'tsuki ga chuu ni ukabu time to get crazy now',\n", - " 'dare nitotte mo nichijou wa so full of blues',\n", - " 'nukedasou yo city cruise',\n", - " 'moonlight terasu daitokai alright, alright',\n", - " 'aisu beki jikan to kyou ni raise your glass',\n", - " 'key to life mitsukeru tonight',\n", - " 'kimi no naka ni aru',\n", - " 'sing it loud motto tooku made todoku you ni',\n", - " 'sing it loud kimi ga doko no dare demo ii',\n", - " \"you're the one, you're the one\",\n", - " 'kikasete yo',\n", - " 'now sing it loud minna hitori hitori ga superstar',\n", - " 'sing it loud arittake no koe de ima',\n", - " 'o-wi-oh o-wi-oh',\n", - " 'sora no mukou made',\n", - " 'feel the beat, feel the beat',\n", - " 'feel the heat, feel the heat',\n", - " 'feel the beat, feel the beat',\n", - " 'feel the heat, feel the heat',\n", - " 'sing it loud tatoe kono koe karete mo',\n", - " 'sing it loud owaru koto no nai uta wo',\n", - " 'errbody scream it tonight',\n", - " 'sing it loud motto tooku made todoku you ni',\n", - " 'sing it loud kimi ga doko no dare demo ii',\n", - " \"you're the one, you're the one\",\n", - " 'kikasete yo',\n", - " 'now sing it loud minna hitori hitori ga superstar',\n", - " 'sing it loud arittake no koe de ima',\n", - " 'o-wi-oh o-wi-oh',\n", - " 'sora no mukou made',\n", - " 'o-wi-oh o-wi-oh',\n", - " 'sora no mukou made',\n", - " 'sora no mukou made',\n", - " 'get the party started',\n", - " 'shake your town',\n", - " 'get the party started',\n", - " 'shake it upside down',\n", - " \"just come'n dance with me baby\",\n", - " 'put your best dress on',\n", - " \"cause tonight i'm gonna take you away\",\n", - " 'konya wa kimi wo shinju ni shiyou',\n", - " 'we can dance our cares away',\n", - " 'karei na doresu matoi ai ni kite',\n", - " 'yami nante tori haratte shimaou',\n", - " 'yume no you na yuki ni futari somarou',\n", - " 'we can dance our cares away, away',\n", - " 'baby suteki na basho he tsurete tte ageru',\n", - " 'kimi ga motto kagayaki masu you ni cause baby',\n", - " 'mai odorasetai ai to hane ga aru',\n", - " 'kono omoi, uke tomete',\n", - " 'because tonight hitorikiri ja dekinai',\n", - " 'yorokobi wo kimi to kanjitai yo',\n", - " \"so just come'n dance with me baby\",\n", - " 'put your best dress on',\n", - " \"cause tonight i'm gonna take you away\",\n", - " 'konya wa kimi wo shinju ni shiyou',\n", - " 'we can dance our cares away, away',\n", - " 'dadadodadadadoda',\n", - " 'dadadoda dadadoda, yeah',\n", - " \"tonight we'll fankii na paatii ni shiyou\",\n", - " 'omoi no mama ni haato wo yurashi aou yo baby',\n", - " 'subete wo boku ni makasete oite',\n", - " 'torokeru you ni tanoshi mou',\n", - " 'because tonight',\n", - " 'hitorikiri ja dekinai',\n", - " 'yorokobi wo kimi to kanjitai yo',\n", - " \"so just come'n dance with me baby\",\n", - " 'put your best dress on',\n", - " \"cause tonight i'm gonna take you away\",\n", - " 'konya wa kimi wo shinju ni shiyou',\n", - " 'we can dance our cares away, away',\n", - " 'dadadodadadadoda',\n", - " 'dadadoda dadadoda, yeah',\n", - " 'dadadodadadadoda',\n", - " 'dadadoda dadadoda, yeah',\n", - " 'because tonight',\n", - " 'hitorikiri ja dekinai',\n", - " 'yorokobi wo kimi to kanjitai yo',\n", - " \"so just come'n dance with me baby\",\n", - " 'put your best dress on',\n", - " \"cause tonight i'm gonna take you away\",\n", - " 'konya wa kimi wo shinju ni shiyou',\n", - " 'we can dance our cares away, away',\n", - " \"so just come'n dance with me baby\",\n", - " 'put your best dress on',\n", - " \"cause tonight i'm gonna take you away\",\n", - " 'konya wa kimi wo shinju ni shiyou',\n", - " 'we can dance our cares away, away',\n", - " \"so just come'n dance with me baby\",\n", - " 'put your best dress on',\n", - " \"cause tonight i'm gonna take you away\",\n", - " 'konya wa kimi wo shinju ni shiyou',\n", - " 'we can dance our cares away, away',\n", - " 'mataleena neito nuori',\n", - " 'neito nuori ja nurja',\n", - " \"sill'on synkkää syämessä\",\n", - " 'pahan mennehen maa',\n", - " 'kun ol kolme poikalasta',\n", - " 'kolme lasta laitettu',\n", - " 'kolme kääröä kerällä',\n", - " 'omaksi annettu',\n", - " 'mataleena neito nuori',\n", - " 'neito nuori ja nurja',\n", - " \"sill'on synkkää syämessä\",\n", - " ...]},\n", - " 'rock': {'meta': {'train_data': ['here i scream in agony, in loneliness and pain',\n", - " 'the world around forsaken me- my life has gone insane',\n", - " 'here i scream in misery, frustration all around',\n", - " 'i can’t heal all the wounds they sliced- just can be myself',\n", - " 'i cannot change your destiny, can only help you think',\n", - " 'as far as my horizons lead- your thoughts will be more deep',\n", - " 'hope inside is torturing me- keeps painfully alive',\n", - " 'a light inside, a knowledge deep, that shines so bright!',\n", - " 'tartu käteeni ja livu kanssani autuuteen- avaa silmäsi uuteen kirkkauteen',\n", - " 'kyyneleet valuvat silmistä luomettomista',\n", - " 'jotka valaistumisen tulet ovat siunanneet... siunanneet...',\n", - " 'voisiko todella tämä raadeltu liha – olla hänen ruma kuvansa – elämä tässä painajaisessa – tahdon herätä',\n", - " 'see the darkness take my heart – see it drown in the black lake – where’s no beginning – where’s no start – heart...',\n", - " 'epätoivo ja hämmennys – sanat jotka kaikuvat – itsevihani raunioissa – suruni vuorilla huudan tuskaani – tahdon herätä...',\n", - " 'wach auf... wach auf... tahdon herätä... wach auf... wach auf... herätä...',\n", - " 'i long to find that grandiose stream – the esoteric source of thoughts – hear the forbidden tongue',\n", - " 'see the darkness – take our hearts – see the blackness – drowns us apart',\n", - " 'i long to hear the answer to mysteries – that riddle my mind',\n", - " 'askel askeleelta etenen – yhä syvemmälle pimeyteen...',\n", - " 'hyvää yötä kaikki hyppyläiset!',\n", - " 'yks kaks kol nel, kaks kaks kol nel...',\n", - " 'sitting here waiting for your call',\n", - " 'is it coming now, is it coming at all',\n", - " 'at all baby, at all baby',\n", - " 'yes is it coming now',\n", - " 'call me on your telephone girl',\n", - " 'call me on your telephone girl',\n", - " 'call me on your telephone now',\n", - " 'i’ve been waiting, waiting so long',\n", - " 'is it coming now, is it coming along',\n", - " 'coming along, are you coming along',\n", - " 'along with me darling',\n", - " 'call me on your telephone girl',\n", - " 'call me on your telephone girl',\n", - " 'call me on your telephone now',\n", - " 'call me on your telephone girl',\n", - " 'call me on your telephone girl',\n", - " 'call me on your telephone now',\n", - " 'sitting here just waiting for your call',\n", - " 'is it coming now, is it coming at all',\n", - " \"at all baby, won't you call me, call me\",\n", - " 'call me, call me baby',\n", - " 'call me on your telephone girl',\n", - " 'call me on your telephone girl',\n", - " 'call me on your telephone now',\n", - " 'girl, i said girl',\n", - " 'hey!',\n", - " 'kun vielä nousen tästä ylös',\n", - " 'pyyhin kuoleman harteiltani',\n", - " 'suoristan selkäni',\n", - " 'ja tapan itseni',\n", - " 'heitän hyvästit',\n", - " 'maailman melulle',\n", - " 'anna anteeksi',\n", - " 'se, että hengitin',\n", - " 'kuolema ylivuotinen',\n", - " 'saavuttaa jo minut',\n", - " 'ei olisi pitänyt',\n", - " 'päästä näin pitkälle',\n", - " 'kuolema ylivuotinen',\n", - " 'saavuttaa jo minut',\n", - " 'murhamieli madaltuu',\n", - " 'lähestyessä ratkaisun lopullisen',\n", - " 'ei enää viivytyksiä',\n", - " 'ei turhia tekosyitä',\n", - " 'kuolema ylivuotinen',\n", - " 'saavuttaa jo minut',\n", - " 'when i finally get up from here',\n", - " 'i’ll brush death of my shoulders',\n", - " 'straighten my back',\n", - " 'and… kill myself',\n", - " 'i bid farewell',\n", - " 'to the noise of the world',\n", - " 'forgive me',\n", - " 'that i breathed',\n", - " 'death long overdue',\n", - " 'catches up with me',\n", - " 'i shouldn´t have',\n", - " 'gotten this far',\n", - " 'death long overdue',\n", - " 'catches up with me',\n", - " 'murderous mind sinks',\n", - " 'at the dawn of the final solution',\n", - " 'no more delays',\n", - " 'no futile excuses',\n", - " 'death long overdue',\n", - " 'catches up with me',\n", - " 'olen aukaissut uuden silmän',\n", - " 'ja katsonut tyhjyyteen',\n", - " 'olen aukaissut uuden avaruuden',\n", - " 'ja se on aukaissut itsensä minuun',\n", - " 'i have opened a new eye',\n", - " 'i have opened a new eye',\n", - " 'and gazed into the void',\n", - " 'i have opened a new space',\n", - " 'and it has opened itself in me',\n", - " 'tausender monde sterne schein – blutüberströmt und ganz allein – tausender monde sternenglut – blutüberströmt und voller wut',\n", - " 'äänet ohjaavat veistä ihollani – kylmä teräs suutele lihaa',\n", - " 'carving through the gates of night – morning breeze alive – never saw this life before – same way like tonight',\n", - " 'terä kulkee, nuolee syviä uurteita – kehoni itkee kauneudessaan',\n", - " 'carving through the gates of night – morning breeze alive – never saw this live before – same way like tonight',\n", - " 'avoimet viillot saastaa rykivät – oksentaen, sylkien pahoinvointiani',\n", - " 'carving through the gates of night – morning breeze alive – never saw this life before – same way like tonight',\n", - " \"darling it's me, don't you know this is me?\",\n", - " \"i said i will come and show what you've done\",\n", - " \"the moon is my guide there's no other light\",\n", - " \"i'm staring at you, your eyes in the night\",\n", - " 'now enter the dream. can you hear the wild scream?',\n", - " 'deep in the night i breath by your side',\n", - " 'hunting you down it gives me this heat',\n", - " \"for now you can breathe, i'll wait till you're weak\",\n", - " 'whispering voices surrounding you',\n", - " \"you're starting to fear what you're going to see in the moon glow\",\n", - " \"darling, she's been hiding inside me\",\n", - " '\"odotan iltaa ja yötä sen viimeistä työtä',\n", - " '-se vapauttaa, vie pimeyden taa',\n", - " 'voimaa antaa. turvaa haet sä turhaan!',\n", - " 'lupasin ain sinut saavuttaavain, nyt on aika tullut!\"',\n", - " \"i'm hunting your dreams, i'm taking them down\",\n", - " 'destroying your heart by draining your love!',\n", - " 'now you will feel how my life has been',\n", - " 'living a dream as a living dead being',\n", - " 'whispering voices surround you',\n", - " \"you're starting to fear what you're going to see in the moon glow\",\n", - " \"darling, she's been hiding inside me\",\n", - " '\"odotan iltaa ja yötä sen viimeistä työtä',\n", - " '-se vapauttaa, vie pimeyden taa',\n", - " 'voimaa antaa. turvaa haet sä turhaan!',\n", - " 'lupasin ain sinut saavuttavain, nyt on aika!\"',\n", - " '\"turhaan haet sa turvaa!',\n", - " 'lupaisin ain sinut saavuttavain',\n", - " 'nyt on aika!\"',\n", - " '\"tämä on se uni',\n", - " 'puhdistava tuli.\"',\n", - " 'oooooooooooooh, fight!',\n", - " 'oh baby, nooooo-ooh-oohh',\n", - " 'oh baby, nooooo-ooh-oohh',\n", - " 'togisumasu eyes',\n", - " 'kiki aki ta phrase ya',\n", - " 'dare ka no copy jya mitasarenai n da yo',\n", - " 'spark! kiete kure mata tora no i o karite, fuiteku n daro',\n", - " 'makki no dosu kuro no best play, in the house daiissen no stage de',\n", - " 'koreppocchi mo makeru kigashi nee na',\n", - " '24/7, come on, fight it out',\n", - " 'shosen ao no sekai ni',\n", - " 'tojikome rare te warau',\n", - " 'taiyou o ushinatte boku wa',\n", - " 'tsuki no ari ka o sagasu',\n", - " 'miete ita mono made miushinatte bokura wa',\n", - " 'omoide no umi no naka, obore te iku noni',\n", - " 'doushite? (doushite?)',\n", - " 'chikai atta koto made',\n", - " 'nakatta koto ni shite tsugi no passport',\n", - " 'oh baby...',\n", - " 'cloudy...',\n", - " 'ushinaware insistence',\n", - " 'nareai no everyday flater ni tsuite n da yo',\n", - " 'spark... kie souda',\n", - " 'hakusha wa kakara zu tomo omoi ni',\n", - " 'utsuroi wa nai',\n", - " 'oooooooooooooh, fight!',\n", - " 'makki no dosu kuro no best play, in the house daiissen no stage de',\n", - " 'kozotte sagasu elysion no tobira mokuzen de nogasu',\n", - " 'tenohira kara waratte ochite iku kirei ni',\n", - " 'hisshi de atsume houkou tta karappo no story',\n", - " 'taisetsu na omoide mo sukoshi oiteikou',\n", - " 'subete seotta mama jya wataru ni wa omoku te',\n", - " 'soushite (soushite)',\n", - " 'mata deatta toki ni wa',\n", - " 'sukoshi irokoku atatame te kure',\n", - " 'oooooooooooooh, fight!',\n", - " 'rebel one! (rebel one!)',\n", - " 'towa no koe again',\n", - " 'kokoro ni i tsu todoku',\n", - " 'rebel one! (rebel one!)',\n", - " 'towa no koe again',\n", - " 'kika sete',\n", - " 'rebel one! (rebel one!)',\n", - " 'towa no koe again',\n", - " 'kokoro ni i tsu todoku',\n", - " 'rebel one! (rebel one!)',\n", - " 'turning point...',\n", - " 'oooooooooooooh, fight!',\n", - " 'g9, ichi keta de miseru',\n", - " 'gekidou no nou nai kakumei',\n", - " 'oooooooooooooh, fight!',\n", - " 'uh... base, ability, mind',\n", - " 'oooooooooooooh, fight!',\n", - " 'round 1 dassee ichi kara hoe te na',\n", - " 'kuratta zasetsu purasu honki no shunkan da',\n", - " 'g9 hebii no punch!',\n", - " 'miseru gekidou ichi keta de nou nai kakumei',\n", - " 'rebel one... (rebel one...)',\n", - " 'shake violently, again',\n", - " 'rebel one... (rebel one...)',\n", - " 'shake violently, again',\n", - " 'taiyou o ushinatte shimatta boku no hitomi wa',\n", - " 'tsuki o utsushi kagayaku koto wa nai yo',\n", - " 'tsuki nai yoku to ganbou ni ate rare te',\n", - " 'kitto doko ni mo nai mono o sagashi te',\n", - " 'aruku yo...',\n", - " 'miete ita mono made miushinatte bokura wa',\n", - " 'omoide no umi no naka, obore te iku noni',\n", - " 'doushite? (doushite?)',\n", - " 'chikai atta koto made',\n", - " 'nakatta koto ni shite tsugi no passport',\n", - " 'taisetsu na omoide mo sukoshi oiteikou',\n", - " 'subete seotta mama jya wataru ni wa omoku te',\n", - " 'soushite (soushite)',\n", - " 'mata deatta toki ni wa',\n", - " 'sukoshi irokoku atatame te kure',\n", - " 'oooooooooooooh, fight!',\n", - " 'umaku oiteike tara, obore nai de, sute nai de, mata aeru kara',\n", - " 'rebel one! (rebel one!)',\n", - " 'towa no koe again',\n", - " 'kokoro ni i tsu todoku',\n", - " 'rebel one! (rebel one!)',\n", - " 'turning point...',\n", - " 'revi',\n", - " 'algoritmi',\n", - " 'ajattele',\n", - " 'haluja',\n", - " 'unohda',\n", - " 'sajien rajat',\n", - " 'räjähdä eloon',\n", - " 'molten uranium',\n", - " 'tear',\n", - " 'the algorithm',\n", - " 'think of',\n", - " 'the urges',\n", - " 'forget',\n", - " 'the boundaries of species',\n", - " 'explode to life',\n", - " 'näkki laulaa lauluaan',\n", - " 'luokseen sävelet houkuttavat',\n", - " 'kylmään järveen nukkumaan',\n", - " 'ihmislasta tuudittaa',\n", - " 'kauas sävelet kantautuvat',\n", - " 'kohti kylmää kuolemaa',\n", - " 'järven selälle tanssimaan',\n", - " 'lumoutuneena vaeltaa',\n", - " 'näkki chants a song',\n", - " 'its tunes fill the air',\n", - " 'shivers of chillness',\n", - " 'cradle a human child',\n", - " 'fading to trance',\n", - " 'on a starlit lake',\n", - " 'enchantment',\n", - " 'of stony loneliness',\n", - " 'lonely and black – you sit there alone – peaceful and sad – feeling well, feeling down',\n", - " 'in this magical dark world – still so warm, still so filled – with melancholy',\n", - " 'ei, et kuulu tähän maailmaan – vien sinut mukanani kylmään hautaan... kylmään hautaan...',\n", - " 'ehkä hulluuden mustissa syövereissä – viimeinkin saat silmäsi auki... saat silmäsi auki... saat silmäsi auki...',\n", - " 'i see love where you see hate – no longer try to make you understand – i just go my way... my way...',\n", - " 'kimi no rippa na souzou rinen to',\n", - " 'boku no katte na bousou risou wo',\n", - " 'masete konete yaite sukoshi hoshite itamete nitsumete',\n", - " 'supaisu ni hitosashi kanashimi wo',\n", - " 'ai no sousu wo nishizuku tarashitara',\n", - " 'dekiagatta saigo no bansan chuu ni matta supuun to shousan',\n", - " 'this light bgm rewinds gmt',\n", - " 'power station had become inhumanity',\n", - " 'i’ll fly to fall down, ignore your logic',\n", - " 'july 20, may steal melodic encores',\n", - " 'i am painting their ufo scarlet and powder blue',\n", - " 'by piles of technologies of radio she created',\n", - " 'i am making the x-rated music to carry it off',\n", - " 'by forbidden experiments',\n", - " 'that is maybe…',\n", - " 'shikou to sakugo no cheisu',\n", - " 'sore wa tsumari kako to ima no reasu',\n", - " 'migi hidari migi de migite agetan jya mou akashingou',\n", - " 'odoridasu aidea',\n", - " 'damarikomu seorii',\n", - " 'ichi juu haku sen kurikaeshiteiru',\n", - " 'i am painting their ufo scarlet and powder blue',\n", - " 'by piles of technologies of radio she created',\n", - " 'i am making the x-rated music to carry it off',\n", - " 'by forbidden experiments',\n", - " 'so…',\n", - " 'i am painting their ufo scarlet and powder blue',\n", - " 'by piles of technologies of radio she created',\n", - " 'i am making the x-rated music to carry it off',\n", - " 'by forbidden experiments',\n", - " 'that is maybe…',\n", - " 'enban hirai kagaku no yoru mirai to souguu',\n", - " 'idai na koushin',\n", - " 'enban hirai kakuu no yoru mikaimei no nazo',\n", - " 'subete ga mu ni mukatteiru tashika ni dareka ga sou itteita',\n", - " 'sore wa dareshimo ga shitteite dareshimo ga shiranu furi wo shita koto',\n", - " 'yoru wa gunjou iyoiyo da iyoiyo taiyou ga gyakuryuu suru',\n", - " 'makkuro de kouketsu na hikari ni terasarete',\n", - " 'kindan no chougou',\n", - " 'mujinzou no tankyuushin',\n", - " 'abc no kyoiku',\n", - " 'aijou no hi ikkansei',\n", - " 'kindan no chougou',\n", - " 'mujinzou no tankyuushin',\n", - " 'abc no kyoiku',\n", - " 'aijou no hi ikkansei',\n", - " 'owari ka, owari ka, owari ka, owari ka',\n", - " 'owari da, owari da, owari da, owari da ne',\n", - " 'hän katsoi maan reunalta tähteä putoavaa',\n", - " 'nyt kauniit kasvot neitosen peittää karu maa',\n", - " 'jokaisen tytyy katsoa silmiin totuuden',\n", - " 'sill aika ompi voittoisa, mutt tämä maa on ikuinen',\n", - " 'hän katsoi maan reunalta tähteä putoavaa',\n", - " 'nyt kauniit kasvot neitosen peittää karu maa',\n", - " 'jokaisen tytyy katsoa silmiin totuuden',\n", - " 'sill aika ompi voittoisa, mutt tämä maa on ikuinen',\n", - " \"there's a place in the north, far, far away\",\n", - " 'home for the wandering man',\n", - " 'dreaming fells with skies so pale',\n", - " 'calm is the glorious land',\n", - " 'flames will send the sign to the sky',\n", - " 'that we have come to feast tonight',\n", - " 'the lakes are echoing with our song',\n", - " 'shadows are dancing on the forest walls',\n", - " 'shadows are dancing on the forest walls',\n", - " 'enchantment of the fire and moon',\n", - " 'lost in the whispering night',\n", - " \"the raven's magic enthralls the woods\",\n", - " \"it's crawling in the sweet starlight\",\n", - " 'we have gathered in this distant land',\n", - " 'full of wisdom, secrets and tales',\n", - " 'morning will never rise again',\n", - " 'roaming wolves are howling for the dead',\n", - " 'roaming wolves are howling for the dead, oh yeah',\n", - " 'la la la',\n", - " '(lai lai hei)',\n", - " 'la la la',\n", - " '(lai lai hei)',\n", - " 'hän katsoi maan reunalta tähteä putoavaa',\n", - " 'nyt kauniit kasvot neitosen peittää karu maa',\n", - " 'jokaisen tytyy katsoa silmiin totuuden',\n", - " 'sill aika ompi voittoisa, mutt tämä maa on ikuinen',\n", - " 'la la la',\n", - " '(lai lai hei)',\n", - " 'la la la',\n", - " '(lai lai hei)',\n", - " 'kutsu verestä',\n", - " 'käskemättä',\n", - " 'orgaanisia',\n", - " 'bakteerien haluja',\n", - " 'hyväile vieraita muotoja',\n", - " 'askew sprout',\n", - " 'call from the blood',\n", - " 'uncommanding',\n", - " 'organic',\n", - " 'bacterial desires',\n", - " 'embrace alien shapes',\n", - " 'voit astua kesdelle täaydellistä ympyrää',\n", - " 'silti se on vain piirretty viiva tomussa',\n", - " 'voit viiltää halki pelokkaiden silmien',\n", - " 'silti se sinut löytää',\n", - " 'sen nälkäiset kasvot',\n", - " 'unenmustan käytävän syvyydessä',\n", - " 'a circle is a line in the dust',\n", - " 'you can enter the center of a perfect circle',\n", - " 'still it is only a drawn line in the dust',\n", - " 'you can slice through fearful eyes',\n", - " 'seill it will find you',\n", - " 'its hungry face',\n", - " 'in the depths of a passage black as a dream',\n", - " 'te verestä kiimaiset murhamiehet!',\n", - " 'kiimaiset kiimaiset miehet',\n", - " \"rock 'n' roll\",\n", - " \"rock 'n' roll\",\n", - " \"rock 'n' roll\",\n", - " \"rock 'n' roll\",\n", - " \"rock 'n' roll\",\n", - " \"rock 'n' roll\",\n", - " \"rock 'n' roll\",\n", - " \"rock 'n' roll\",\n", - " 'fbi',\n", - " \"rock 'n' roll\",\n", - " 'kgb',\n", - " \"rock 'n' roll\",\n", - " 'cia',\n", - " \"rock 'n' roll\",\n", - " 'tnt',\n", - " \"rock 'n' roll\",\n", - " 'plo',\n", - " \"rock 'n' roll\",\n", - " 'ira',\n", - " \"rock 'n' roll\",\n", - " 'thx',\n", - " \"rock 'n' roll\",\n", - " 'xxx',\n", - " \"rock 'n' roll\",\n", - " 'mtv dna!',\n", - " 'mtv dna!',\n", - " 'fbi',\n", - " \"rock 'n' roll\",\n", - " 'kgb',\n", - " \"rock 'n' roll\",\n", - " 'cia',\n", - " \"rock 'n' roll\",\n", - " 'tnt',\n", - " \"rock 'n' roll\",\n", - " 'plo',\n", - " \"rock 'n' roll\",\n", - " 'ira',\n", - " \"rock 'n' roll\",\n", - " 'thx',\n", - " \"rock 'n' roll\",\n", - " 'xxx',\n", - " \"rock 'n' roll\",\n", - " 'ddr',\n", - " \"rock 'n' roll\",\n", - " 'rpm',\n", - " \"rock 'n' roll\",\n", - " 'bpm',\n", - " \"rock 'n' roll\",\n", - " 'mtv',\n", - " \"rock 'n' roll\",\n", - " 'dna',\n", - " \"rock 'n' roll\",\n", - " 'kkk',\n", - " \"rock 'n' roll\",\n", - " 'thc',\n", - " \"rock 'n' roll\",\n", - " \"abc rock 'n' roll!\",\n", - " 'mtv dna!',\n", - " 'mtv dna!',\n", - " 'mtv dna!',\n", - " 'mtv dna!',\n", - " 'fbi',\n", - " 'kgb',\n", - " 'cia',\n", - " 'tnt',\n", - " 'plo',\n", - " 'ira',\n", - " 'thx',\n", - " 'xxx',\n", - " 'ddr',\n", - " 'rpm',\n", - " 'bpm',\n", - " 'mtv',\n", - " 'dna',\n", - " 'kkk',\n", - " 'thc',\n", - " \"abc rock 'n' roll!\",\n", - " 'mtv',\n", - " 'dna',\n", - " 'kkk',\n", - " \"rock 'n' roll!\",\n", - " '38 saturnal wars',\n", - " 'still the same old never-ending ache',\n", - " 'forever this solitude going on',\n", - " 'forever alone',\n", - " 'kolmekymmentäyksi mustan linnun kehää',\n", - " 'kahdeksan siiveniskua vaille seitsemää',\n", - " 'kunnes taas sukeltaa pimeään',\n", - " 'olemassaolon hämärään',\n", - " 'so sick and tired of this world',\n", - " 'this promised land of decadence',\n", - " 'so sick and tired of this life',\n", - " 'this never-ending misery',\n", - " 'endless streams of empty shells',\n", - " 'towards the gates of nothingness',\n", - " 'kun usva nielee syksyn tulta',\n", - " 'livun toiseen maailmaan',\n", - " 'täällä olen vain kuori',\n", - " 'jota eksynyt aave asuttaa',\n", - " 'flaming chalice of the golden horizon',\n", - " 'fumes of the bitter wine of age',\n", - " 'burns within revealing the true form',\n", - " 'rarely witnessed by the human eye',\n", - " '- taikatalvi',\n", - " 'lapsistain rakkain tää näyttämö on',\n", - " 'mis kuutamo kujillaan kulkee',\n", - " 'taipunut havu, kesä hoivassa sen',\n", - " 'valkomeren niin aavan',\n", - " 'joka aavekuun siivin',\n", - " 'saapuu mut kotiin noutamaan',\n", - " 'päällä talvisen maan hetki kuin ikuisuus',\n", - " 'mi pienen kissan jaloin luokseni hiipii',\n", - " 'tääl tarinain lähteellä asua saan mis',\n", - " 'viulu valtavan kaihon',\n", - " 'ikisäveltään maalaa',\n", - " 'laulullaan herättää maan',\n", - " '- enchanted winter',\n", - " 'this stage is the dearest of my children',\n", - " 'where moonlight moves through alleys',\n", - " 'a bent twig, a summer in its care',\n", - " 'white vast open sea',\n", - " 'on the wings of a phantom moon',\n", - " 'comes to take me home',\n", - " 'in winterland a moment is an eternity',\n", - " 'creeps to me on kitten paws',\n", - " 'i get to live here where the story begins',\n", - " 'where a violin echoes the eternal melody of immense longing',\n", - " 'waking up the earth with its song',\n", - " 'mikään joki ei meitä',\n", - " 'lähemmäs voi tuoda',\n", - " 'mikään joki ei meitä',\n", - " 'pidemmäs voi viedä',\n", - " 'juoksee puro',\n", - " 'solistessaan sateisena',\n", - " 'virrat palaa',\n", - " 'aina aamuun',\n", - " 'harhan teiltä',\n", - " 'virrat palaa',\n", - " 'tehneinä matkaa',\n", - " 'aalloilla harjanteina',\n", - " '(english translation:)',\n", - " 'rivers return',\n", - " 'no river',\n", - " 'could bring closer',\n", - " 'no river',\n", - " 'could take further',\n", - " 'for rivers run',\n", - " 'when led with rain',\n", - " 'currents return',\n", - " 'from strayed',\n", - " 'paths to rest',\n", - " 'currents return',\n", - " 'having crowned',\n", - " 'billows with crests',\n", - " 'chaban ni buingu renchuu',\n", - " 'boke jama na party',\n", - " 'ano wana bara su kiha koreppochimonee',\n", - " 'tsumi ikura? tsumi stare n hannin ga renga nage',\n", - " 'bake ta neko no furan shitai renchuu pork & bits',\n", - " 'blood! blood! blood! love!',\n", - " \"rock 'n' roll chainsaw\",\n", - " \"rock 'n' roll chainsaw\",\n", - " \"rock 'n' roll chainsaw\",\n", - " \"rock 'n' roll chainsaw\",\n", - " 'japan risk rebel brand',\n", - " 'bubble bubble bouri',\n", - " 'global benri bu ranbou ore ga okite',\n", - " 'surippa senpuu rokku subete manabe ramen',\n", - " 'suteki na ban kubaru na pan kubetsu v.i.p',\n", - " 'blood! blood! blood! love!',\n", - " \"rock 'n' roll chainsaw\",\n", - " \"rock 'n' roll chainsaw\",\n", - " \"rock 'n' roll chainsaw\",\n", - " \"rock 'n' roll chainsaw\",\n", - " 'fan! ikansan! ika sane!',\n", - " 'keikan! ika sane!',\n", - " 'zeni ka? ikari ka? zenbu!',\n", - " 'jii ie ika sen!',\n", - " 'jii ie ika sen!',\n", - " 'bonbon inkan kanekashi seyo boku',\n", - " 'paan!!oshiekisa o? oyoke bou',\n", - " 'boro make sa people!',\n", - " 'hana makka kade kechonchonchonchon!',\n", - " 'hana makka kade kechonchonchonchon!',\n", - " 'kechonchonchonchon!',\n", - " 'kechonchonchonchon!',\n", - " 'away! away! away! chainsaw away!',\n", - " 'away! away! chainsaw!',\n", - " 'pinkiri fudou mane',\n", - " 'ore kutsuu ha sukuwa rene',\n", - " 'ikiume naka fuantei ibuki ki kaeshi tara fanfare',\n", - " 'janpu no manga ni mi furuu eikyou baramake boke! suppin gazou',\n", - " 'binbou na janba genba ja aga njan',\n", - " 'pipopo repiso 2papa ranbasa',\n", - " 'tontoro bakkani bora renna toppi paredo',\n", - " 'blood! blood! blood! love!',\n", - " \"rock 'n' roll chainsaw\",\n", - " 'ta tataratta tattatta chainsaw!',\n", - " 'ta tataratta tattatta chainsaw!',\n", - " \"rock 'n' roll chainsaw!\",\n", - " 'tatta ima waratta yatsu karahatsu taosu!!!!!!!!',\n", - " 'hakaba karada dangan ga tsukan da hakkekkyuu',\n", - " 'zanpai sutanbai akkenaku nankan datsu ha!',\n", - " 'zanpai sutanbai akkenaku datsu ha!',\n", - " 'away! away! away! chainsaw away!',\n", - " 'away! away! chainsaw!',\n", - " 'pinkiri fudou mane',\n", - " 'ore kutsuu ha sukuwa rene',\n", - " 'kenjuu de juuman rei',\n", - " 'noroi kutsuu fabric',\n", - " 'away! away! away! chainsaw away!',\n", - " 'away! away! chainsaw!',\n", - " 'pinkiri fudou mane',\n", - " 'ore kutsuu ha sukuwa rene',\n", - " 'denki isu te maneku son piku',\n", - " 'saraba rabameitsu']},\n", - " 'data': ['luutahoilla hiljaa kuljen, kuulostelen pohjantuutla',\n", - " 'kaavin maata kourillani tarpeiksi tulevan päivän',\n", - " 'huomenna tulen takaisin, juodaan malja, juodaan toinen',\n", - " 'multaa viskon viinaksiisi, maistaa saat manalan mahdin',\n", - " 'niin sovin ja niin myös teenkin',\n", - " 'valvoin yötä, äänen kuulin',\n", - " 'sjövereistä mustan mielen',\n", - " 'kätköistä kamalan laulun',\n", - " 'ruumiinmultaa aana sulle',\n", - " 'ruumiinmultaa vihmon sulle',\n", - " 'niin rikastun, niin rakastun',\n", - " 'otan riskin, katson kortit',\n", - " 'juotuasi multiani',\n", - " 'ruumiinjätteitä, muruja',\n", - " 'näät maailman uusin silmin',\n", - " 'näät maailman hullun silmin',\n", - " 'jollet juokaan multaa kalman, jollet maista mustaa maata',\n", - " 'menetän mä sillion kaiken, rahat, mielen hengen',\n", - " 'huomenna tulen takaisin, juodaan malja, juodaan toinen',\n", - " 'multaa viskon viinaksiisi, maistaa saat manalan mahdin',\n", - " 'ruumiinmultaa, ruumiinmultaa, ruumiinmultaa',\n", - " 'pääsi kääntyy, vääntyy mieli',\n", - " 'hukut tuskaan, kaadut haahan!',\n", - " 'kuolema on kohtalosi',\n", - " 'tuonelasta saat kotisi',\n", - " 'niin sovin ja niin myös teenkin',\n", - " 'valvoin yötä, äänen kuulin',\n", - " 'syövereistä mustan mielen',\n", - " 'kätköista kamalan laulun',\n", - " 'ruumiinmultaa, ruumiinmultaa, ruumiinmultaa',\n", - " '(english translation:)',\n", - " 'soil of the corpse',\n", - " 'calmly i walk in the bone gardens',\n", - " 'i listen to the wind of north',\n", - " 'i dig soil with my hands',\n", - " 'for the good of the day to come',\n", - " 'tomorrow i will be back again',\n", - " \"we'll drink a cup and another\",\n", - " \"i'll toss soil in your spirits\",\n", - " 'you are to taste the might of death',\n", - " 'so i agreed and so will do',\n", - " 'i stayed up nights, heard a sound',\n", - " 'from the depths of the dark mind',\n", - " 'from the caches of the horrible song',\n", - " 'soil of the corpse, i give it to you',\n", - " 'i sprinkle it around for you',\n", - " 'to get rich, to fall in love',\n", - " 'i take a risk, i check my cards',\n", - " 'as you drink the soil like wine -',\n", - " 'crumbs, remnants, the corpse of mine -',\n", - " 'you will see the world with new eyes',\n", - " 'you will see the world with insane eyes',\n", - " \"if you don't drink the soil of death\",\n", - " \"if you don't taste the black earth\",\n", - " 'i will then lose everything -',\n", - " 'my money, mind and spirit',\n", - " 'tomorrow i will be back again',\n", - " \"we'll drink a cup and another\",\n", - " \"i'll toss soil in your spirits\",\n", - " 'you are to taste the might of death',\n", - " 'your head will turn, your mind will twist',\n", - " \"you'll sink in pain, and you'll fall down\",\n", - " 'your destiny is death',\n", - " 'the underworld will be your home',\n", - " 'so i agreed and so will do',\n", - " 'i stayed up nights, i heard a sound',\n", - " 'from the depths of the dark mind',\n", - " 'from the caches of the horrible song',\n", - " 'at war with myself',\n", - " 'mieleni ainainen sotatanner',\n", - " 'once again in this hell',\n", - " 'ristitulessa raunioina',\n", - " 'at war with myself',\n", - " 'riutuneet kädet kaivavat',\n", - " 'fucking war in my head',\n", - " 'hedelmätönä maaperää',\n", - " 'on my knees, shattered',\n", - " 'waiting for the fury to settle',\n", - " 'to find the haven in this madness',\n", - " 'and see the storm to calm',\n", - " 'tired, empathy my torturer',\n", - " \"only choice whom i'll hurt this time\",\n", - " 'torture, empathy, a hurtful choice',\n", - " 'nourishing my true self',\n", - " 'altruistic deprivation',\n", - " 'inside your hearts rest my past',\n", - " 'which kneels to my regrets',\n", - " 'through all the chaos, in the middle of silence',\n", - " 'all the burial pits, shelters of my shadow',\n", - " 'to perish into nothingness',\n", - " 'through the veils of life and death',\n", - " 'frei',\n", - " 'puhdistuneena erillisenä kaikesta',\n", - " 'in die unendlichkeit',\n", - " 'katson universumiani keskellä aikaa',\n", - " 'im selben moment wie es mir das herz zerschneidet',\n", - " 'neues glück erwacht',\n", - " 'in mir aus der asche der vergangenheit',\n", - " 'ei saastainen sielu enää ryömi',\n", - " 'befreit',\n", - " 'ulos onnettomasta ruumiista',\n", - " \"was there something i didn't say\",\n", - " 'was there anything undone',\n", - " \"i saw you drown but i couldn't help\",\n", - " 'lost it all, saved myself',\n", - " 'just wanted you to stay',\n", - " 'pieces of you left behing',\n", - " \"didn't i want you to leave\",\n", - " 'a hurtful trail of memories',\n", - " 'just wanted you to be',\n", - " 'what leads to your remains',\n", - " 'here with me',\n", - " 'not a sign of what you used to be',\n", - " 'why?',\n", - " 'miksi sirpaleet lankeavat rakkaitteni edessä?',\n", - " 'why?',\n", - " 'miksi kätensä torjuvat, työntävät kauemmas?',\n", - " 'menneisyytesi irvikuva kasvotusten kanssani',\n", - " 'avuttomana, huurtuvat lasin takana',\n", - " 'vaikka haluaisin silittää hiuksiasi',\n", - " 'etäännyn ja käännän selkäni',\n", - " 'break the silence in me',\n", - " 'take the sorrow from me',\n", - " 'why?',\n", - " 'miksi sirpaleet lankeavat rakkaitteni edessä?',\n", - " 'why?',\n", - " 'miksi kätensä torjuvat, työntävät kauemmas?',\n", - " \"please don't strip that mask off\",\n", - " \"i don't want to see the wicked truth\",\n", - " 'let it be',\n", - " 'leave me my illusion',\n", - " 'nail it to the bone',\n", - " 'usein painaa ja valvottaa',\n", - " 'omatunto kun kolkuttaa',\n", - " 'se on varmaa, joka kahlaa synnissä',\n", - " 'rauhaa ei hän saa',\n", - " 'tämän hetken voin unohtaa',\n", - " 'sitä velkaa taas maksetaan',\n", - " 'siihen harhaan koko maailma on koukussa',\n", - " 'huutaa tuskissansa:',\n", - " 'miksi herra sallit pahan lyöda ihmistä taas',\n", - " 'kaikkivaltiaana kaiken estää sä voisit',\n", - " 'paaduttaa voinhan itseni jälleen',\n", - " 'kaivaa kuoppaa tippua päälleen',\n", - " 'toistaa lauseen tunnetun ääneen:',\n", - " 'parannuksen huomenna teen',\n", - " 'taikka laulaa:',\n", - " 'katkaista saan siteet valheen',\n", - " 'nyt irroittaa vihdoinkin kahleen',\n", - " 'jeesus auttaa toivottomuudesta',\n", - " 'ja rauhan saan sydämeen',\n", - " 'aamen',\n", - " 'kovan koulun sain aloittaa',\n", - " 'herra laittoi mut huomaamaan',\n", - " 'omat synnit:',\n", - " 'miten hirret silmissä on niin korkeat',\n", - " 'ennen etsin vain taivaalta',\n", - " 'joka vuoristosta ja huipulta',\n", - " 'tuli jeesus, joka olikin jo pohjalla',\n", - " 'armo syntiselle',\n", - " 'jospa pahan poistais herra oisin ensimmäinen',\n", - " 'sinä toinen myöskin kaiki ihmiset maan',\n", - " 'english translation:',\n", - " \"it often weighs me down and doesn't let me sleep\",\n", - " 'when my conscience beats me',\n", - " \"it's certain that the one who wades trough sin\",\n", - " \"can't have peace\",\n", - " 'i can forget this moment',\n", - " \"that's the debt that's being paid again\",\n", - " \"that's the illusion the whole world is depending on\",\n", - " 'shouting in agony',\n", - " 'why do you let evil hit people again, lord?',\n", - " 'as the almighty you could prevent it all',\n", - " 'i can still harden myself',\n", - " 'dig a hole, fall on my head',\n", - " 'repeat the often-heard sentence aloud:',\n", - " \"i'm going to make an amendment.... tomorrow\",\n", - " 'or sing:',\n", - " 'i can finally cut the restrains of lies',\n", - " 'and cast off the chain',\n", - " \"jesus helps when i'm in despair\",\n", - " 'and i can have peace in my heart',\n", - " 'amen',\n", - " 'i was made to start the hard lessons',\n", - " 'lord made me to see',\n", - " 'my own sins:',\n", - " 'how the beams in my eyes are so high',\n", - " 'before this i only searched the sky',\n", - " 'every mountain and every peak',\n", - " 'then came jesus, who already was at the bottom',\n", - " 'the forgiveness for a sinner',\n", - " 'if the lord would remove the evil, i would be the first',\n", - " 'you the second and then every people on earth',\n", - " 'suuri tyhjyys odottaa',\n", - " 'sillähän on aikaa',\n", - " 'aina kulman takana',\n", - " 'odottaa kuolema',\n", - " 'loputon mustuus avaruuden',\n", - " 'ei halua mitään muuta',\n", - " 'kuin tappaa meidät kaikki',\n", - " 'se odottaa siellä, joka puolella',\n", - " 'se on minussa',\n", - " 'odotus ikuinen',\n", - " 'se loppuu vielä',\n", - " 'odotus ikuinen',\n", - " 'vielä kuolema voittaa',\n", - " 'tyhjyyteen',\n", - " 'kotiin',\n", - " 'pimeyteen',\n", - " 'olemattomuuteen',\n", - " 'minun nimeni',\n", - " 'unholaan katoaa, niin kuin sinäkin',\n", - " 'tyhjyys odottaa',\n", - " 'me olemme tuhkaa',\n", - " 'lopultakin',\n", - " 'the great emptiness awaits',\n", - " 'well, it has time',\n", - " 'always around the corner',\n", - " 'waits death',\n", - " 'endless blackness of space',\n", - " 'does not want anything else',\n", - " 'than to kill us all',\n", - " 'it waits there, all around us',\n", - " 'it is in me',\n", - " 'endless wait',\n", - " 'it will still end',\n", - " 'endless wait',\n", - " 'death will prevail',\n", - " 'into the void',\n", - " 'to home',\n", - " 'into darkness',\n", - " 'into oblivion',\n", - " 'my name, will be forgotten, just like you',\n", - " 'emptiness awaits',\n", - " 'we are ashes',\n", - " 'finally',\n", - " 'ravaged from inside',\n", - " 'by these thoughts i struggle to hide',\n", - " 'while the radiant cinstellations',\n", - " 'of my mind',\n", - " 'slowly diminish - into obscurity',\n", - " 'gradually extinguishing',\n", - " 'the will to hold on',\n", - " 'this perpetual repetition',\n", - " 'turns one into mindless drone -',\n", - " 'hollow inside',\n", - " 'kuinka jaksaisin enää yrittää',\n", - " 'käsien haroessa aina tyhjää?',\n", - " 'ylittääkö suru ilon vai ilo surun',\n", - " 'kun tärkempää olisi edes',\n", - " 'tuntea jotain....tuntea jotain',\n", - " 'tuntea jotain',\n", - " 'pysäyttäkää maailma',\n", - " 'jäisin tässä pois',\n", - " \"'cause you loose all... perkele\",\n", - " 'yeah yeah yeah yeah yeah yeah',\n", - " 'oh yeah yeah yeah yeah yeah yeah',\n", - " 'i think i did it again',\n", - " \"i made you believe we're more than just friends\",\n", - " 'oh baby',\n", - " 'it might seem like a crush',\n", - " \"but it doesn't mean that i'm serious\",\n", - " \"'cause to lose all my senses\",\n", - " 'that is just so typically me',\n", - " 'oh baby, baby',\n", - " 'oops!... i did it again',\n", - " 'i played with your heart',\n", - " 'got lost in the game',\n", - " 'oh baby, baby',\n", - " \"oops!... you think i'm in love\",\n", - " \"that i'm sent from above\",\n", - " \"i'm not that innocent\",\n", - " 'you see my problem is this',\n", - " \"i'm dreaming away\",\n", - " 'wishing that heroes, they truly exist',\n", - " 'i cry, watching the days',\n", - " \"can't you see i'm a fool in so many ways\",\n", - " 'but to lose all my senses',\n", - " 'that is just so typically me',\n", - " 'oops!... i did it again',\n", - " 'i played with your heart, got lost in the game',\n", - " 'oh baby, baby',\n", - " \"oops!... you think i'm in love\",\n", - " \"that i'm sent from above\",\n", - " \"i'm not that innocent\",\n", - " '\"jätkät hei, mä lähen meneen ny ihan oikeesti\"',\n", - " '\"hei ankku hei, ennen ku lähet ni kato mitä mä toin sulle\"',\n", - " '\"ei jumalauta, hyvännäkönen. siis eiks tää oo siis....\"',\n", - " '\"on on, sixpack, kyllä\"',\n", - " '\"eihän sun ois tarvinnu hyvä mies, sitä paitsi meill\\' on noita väkeviä\"',\n", - " '\"nii nii, mut aamuks!\"',\n", - " 'oops!... i did it again',\n", - " \"i've played with your heart, got lost in this game, oh baby, baby\",\n", - " \"oops!... you think i'm in love, that i'm sent from above\",\n", - " \"i'm not that innocent\",\n", - " \"it's hot, it's mean, summer, to me\",\n", - " \"green grass, won't last, sky blue, me too\",\n", - " \"it's hot, it's mean, summer, to me\",\n", - " \"green grass, won't last, sky blue, me too\",\n", - " \"it's hot, it's mean, summer, to me\",\n", - " \"green grass, won't last, sky blue, me too\",\n", - " \"it's hot, it's mean, summer, to me\",\n", - " \"green grass, won't last, sky blue, me too\",\n", - " \"it's hot, it's mean, summer, to me\",\n", - " \"green grass, won't last, sky blue, me too\",\n", - " \"it's hot, it's mean, summer, to me\",\n", - " \"green grass, won't last, sky blue, me too\",\n", - " \"it's hot, it's mean, summer, to me\",\n", - " \"green grass, won't last, sky blue, me too\"]}}},\n", - " 'fr': {'sentence': {'pop': {'meta': {'train_data': ['i say money',\n", - " 'everyday think of my money',\n", - " 'everyday want have some money',\n", - " 'doing it do it for money',\n", - " \"l'argent, money\",\n", - " 'cedis, cfa',\n", - " 'euro, dollar',\n", - " 'naira, naira',\n", - " \"l'argent, money\",\n", - " 'cedi, cfa',\n", - " 'euro, dollar',\n", - " 'naira, naira',\n", - " 'uhhmmm quand je passe, on me salue',\n", - " \"parce que j'ai trop d'argent\",\n", - " 'quand je salue, tous gesticulent',\n", - " \"parce que j'ai trop d'argent\",\n", - " 'quand je souris, tout le monde rit',\n", - " \"parce que j'ai trop l'argent\",\n", - " \"quand je suis là, c'est jour de fête\",\n", - " \"parce qu'il y a trop d'argent\",\n", - " 'aaah chérie coco, follow me go oh',\n", - " \"parce qu'il y a trop l'argent\",\n", - " 'elle me dit: \"je t’aime, bara style eh\"',\n", - " 'a cause de mon argent oh',\n", - " 'elle me dit: \"master, tu es frais dis\"',\n", - " 'a cause de mon argent',\n", - " 'eeeh tout le monde trinquer (trinquer)',\n", - " 'à la santé de mon argent oh',\n", - " \"l'argent, money\",\n", - " 'cedis, cfa',\n", - " 'euro, dollar',\n", - " 'naira, naira',\n", - " \"l'argent, money\",\n", - " 'cedis, cfa',\n", - " 'euro, dollar',\n", - " 'naira, naira',\n", - " 'eh père de famille, pas respecté',\n", - " \"parce que j'ai plus d'argent\",\n", - " 'on me zappe, on boutte, on me *****',\n", - " \"parce que j'ai pas l'argent oh\",\n", - " 'et dans le quartier, j’suis la peste',\n", - " \"parce que j'ai pas d'argent\",\n", - " 'aaah quand je parle, ça sent mauvais',\n", - " \"parce que j'ai pas l'argent oh\",\n", - " 'ah chérie coco tu veux me quitter',\n", - " \"parce que j'ai plus d'argent\",\n", - " 'ahh elle m’dit: \"monsieur, la marmite est vide\"',\n", - " \"il faut donner l'argent\",\n", - " 'everyday money no dey',\n", - " 'anytime money no dey',\n", - " 'mama is tired oooh',\n", - " 'go to your daddy',\n", - " \"l'argent, money\",\n", - " 'cedis, cfa',\n", - " 'euro, dollar',\n", - " 'naira, naira',\n", - " \"l'argent, money\",\n", - " 'cedi, cfa',\n", - " 'euro, dollar',\n", - " 'naira, naira',\n", - " 'i say money',\n", - " 'everyday want have some money',\n", - " 'moi je veux, tu veux la money',\n", - " 'doing it do it for money',\n", - " 'everyday money no dey',\n", - " 'anytime money no dey',\n", - " 'mama is tired oooh',\n", - " 'go to your daddy',\n", - " 'everyday money no dey',\n", - " 'anytime money no dey',\n", - " 'mama is tired oooh',\n", - " 'go to your daddy',\n", - " \"l'argent, money\",\n", - " 'cedis, cfa',\n", - " 'euro, dollar',\n", - " 'naira, naira',\n", - " \"l'argent, money\",\n", - " 'cedi, cfa',\n", - " 'euro, dollar',\n", - " 'naira, naira',\n", - " 'dangerous guy (dangerous guy)',\n", - " 'supiscious eyes, je hais tout ce que tu est (supiscious eyes)',\n", - " 'dangerous guy, supiscious eyes',\n", - " \"énervé, tu m'as blessée (you hurt me)\",\n", - " 'un duel (revenge)',\n", - " 'un duel au sommet',\n", - " 'oh make it till i hurt you till i kill you till someone go away',\n", - " \"don't hurt me\",\n", - " \"don't hurt me\",\n", - " \"don't hurt me\",\n", - " \"don't hurt me\",\n", - " \"don't hurt me\",\n", - " \"don't hurt me\",\n", - " \"don't hurt me magical ennemy\",\n", - " 'dangerous guy (the chaos is sweet darling)',\n", - " 'prêt aux délations (dangerous guy)',\n", - " 'dangerous guy (dangerous guy)',\n", - " 'mon cœur au galop (my heart in a galope)',\n", - " \"toute seule tu m'a laissée (you left me)\",\n", - " 'toute seule je me vengerai (revenge)',\n", - " 'dangerous guy (dangerous guy)',\n", - " 'supiscious eyes, je hais tout ce que tu est',\n", - " '(supiscious eyes, i hate all that you are)',\n", - " 'dangerous guy, supiscious eyes',\n", - " \"énervé, tu m'as blessée (you hurt me)\",\n", - " 'un duel (revenge)',\n", - " 'un duel au sommet',\n", - " 'oh make it till i hurt you till i kill you till someone go away',\n", - " \"don't hurt me\",\n", - " \"don't hurt me\",\n", - " \"don't hurt me\",\n", - " \"don't hurt me\",\n", - " \"don't hurt me\",\n", - " \"don't hurt me\",\n", - " 'd-d-double x on the track, bitch',\n", - " 'bitch, bitch, bitch, bitch',\n", - " \"hey, my oh my, baby why you're mine\",\n", - " 'you are something nice to see (see)',\n", - " 'where you are, you have slayed my mind',\n", - " 'come and take my heart and leave, hey',\n", - " 'she just want a little touch and go',\n", - " 'baby she be tryna let me know',\n", - " 'baby girl, you can pour some more',\n", - " 'anywhere where you want, hey oh',\n", - " 'omo wagba condo, yeah',\n", - " 'wagba condo, yeah',\n", - " 'omo wagba condo, yeah',\n", - " 'wagba condo, yeah',\n", - " 'she just want a little touch and go',\n", - " 'she trying to let me know',\n", - " 'baby girl, you can pour some more',\n", - " 'anywhere where you want we go, yeah',\n", - " 'wagba condo, yeah',\n", - " 'omo wagba condo, yeah',\n", - " 'omo wagba condo, yeah',\n", - " 'omo wagba condo, yeah',\n", - " \"and i'mma put you in a goyard bag (hey)\",\n", - " 'put you on some louis swag',\n", - " 'everything that you want',\n", - " \"i'mma gucci gucci gang\",\n", - " 'tu vas bomber à gucci gang',\n", - " 'trop de mala à gucci gang',\n", - " 'tu vas couler à gucci gang',\n", - " 'gucci gucci gang, gang',\n", - " \"non mais là c'est trop, j'pête un cable\",\n", - " \"j'ai l'air piquée, attends mais comment ça ?\",\n", - " \"fais belek, c'est contagieux\",\n", - " \"j'fais la bombe, ouais j'fais la bombe\",\n", - " 'abana, abana, dès maintenant abana, ouais',\n", - " \"j'donnerai tout, tu connais mes phases\",\n", - " \"j'suis pépère, tu connais mes bails\",\n", - " \"abana, abana yeah, j'suis solo dans ma bulle\",\n", - " \"t'as voulu tout changer, t'es zéro big oh\",\n", - " \"le mec est à bout, d'toute façon j'm'en fous\",\n", - " \"à tes côtés j'vois flou, les autres sont jaloux, ouais yeah yeah\",\n", - " \"and i'mma put you in a goyard bag (hey)\",\n", - " 'put you on some louis swag',\n", - " 'everything that you want',\n", - " \"i'mma gucci gucci gang\",\n", - " 'tu vas bomber à gucci gang',\n", - " 'trop de mala à gucci gang',\n", - " 'tu vas couler à gucci gang',\n", - " 'gucci gucci gang, gang',\n", - " 'hey, show you i kill somebody',\n", - " \"we don't kill somebody\",\n", - " \"my guys and me are rockin'\",\n", - " 'show you i kill somebody, yeah',\n", - " 'tu veux rider dans paris',\n", - " 'tu vas te perdre, on parie ?',\n", - " \"j'suis gucci-sée dans paris, yeah yeah yeah\",\n", - " 'il faut faire des choix',\n", - " 'le bendo ou la merco',\n", - " 'il faut faire des choix, yeah',\n", - " 'le bendo ouais, ou la merco',\n", - " \"i'll go up for you, oh no\",\n", - " \"i'll go down for you\",\n", - " \"and i'mma put you in a goyard bag (hey)\",\n", - " 'put you on some louis swag',\n", - " 'everything that you want',\n", - " \"i'mma gucci gucci gang\",\n", - " 'tu vas bomber à gucci gang',\n", - " 'trop de mala à gucci gang',\n", - " 'tu vas couler à gucci gang',\n", - " 'gucci gucci gang, gang',\n", - " 'hey, show you i kill somebody',\n", - " \"we don't kill somebody\",\n", - " \"my guys and me are rockin'\",\n", - " 'show you i kill somebody, yeah',\n", - " 'tu veux rider dans paris',\n", - " 'tu vas te perdre, on parie ?',\n", - " \"j'suis gucci-sée dans paris, yeah yeah yeah\",\n", - " 'si tu tombes beaucoup trop bas',\n", - " 'si tu perds confiance tourne-toi vers moi',\n", - " 'feel the wind blow softly through my hair',\n", - " \"i'm invincible whenever you are there\",\n", - " 'et comme un défi, tu te lèves pour aimer la vie',\n", - " 'love life ( la la la la la... )',\n", - " 'love life ( la la la la la... )',\n", - " \"it's you and i ( la la la la la... )\",\n", - " 'love life ( la la la la la... )',\n", - " 'si un chagrin casse ta voix',\n", - " 'perdue sur les chemins tend une main vers moi',\n", - " 'i feel the sun shine breeze upon my face',\n", - " \"when i hear your voice i know i'll be ok\",\n", - " 'et comme un défi, tu te lèves pour aimer la vie',\n", - " 'love life ( la la la la la... )',\n", - " 'love life ( la la la la la... )',\n", - " \"it's you and i ( la la la la la... )\",\n", - " 'love life ( la la la la la... )',\n", - " 'et pour que tu sois',\n", - " 'toujours plus, toujours plus forte',\n", - " 'et que le vend de la vie',\n", - " 'soulève tes ailes et te transporte',\n", - " 'love life...',\n", - " 'love life ( la la la la la... )',\n", - " 'love life ( la la la la la... )',\n", - " 'love life ( la la la la la... )',\n", - " \"c'est toi et moi ( la la la la la... )\",\n", - " 'love life ( la la la la la... )',\n", - " '( siffle )',\n", - " 'tu me déchires, tu me répares',\n", - " \"tu m'opères à coeur ouvert\",\n", - " 'tu me déportes, tu me grand large',\n", - " 'je te détache, tu me dérives',\n", - " 'oooooh tues moi encore',\n", - " 'oh tu me tues',\n", - " 'assassine de la nuit',\n", - " 'assassine de la nuit',\n", - " \"je t'espionne, tu me soupçonnes\",\n", - " \"je t'alarme, tu me cambrioles\",\n", - " 'je te vise, tu me cibles',\n", - " 'je me rends, tu me descends',\n", - " 'oooooh tues moi encore',\n", - " 'oh tu me tues',\n", - " 'assassine de la nuit',\n", - " 'assassine de la nuit',\n", - " 'assassine de la nuit',\n", - " 'assassine de la nuit',\n", - " 'oh oh',\n", - " 'je te haut, tu me noies',\n", - " 'je te coule, tu me bois',\n", - " \"je t'asphyxe, tu me félines\",\n", - " 'je te démon, tu me divines',\n", - " 'oooooh tues moi encore',\n", - " 'oh tu me tues',\n", - " 'assassine de la nuit',\n", - " 'assassine de la nuit',\n", - " 'assassine de la nuit',\n", - " 'assassine de la nuit',\n", - " 'assassine de la nuit',\n", - " 'assassine',\n", - " 'tu me déchires, tu me répares',\n", - " \"tu m'opères à coeur ouvert\",\n", - " 'tu me déportes, tu me grand large',\n", - " 'je te détache, tu me dérives',\n", - " 'oooooh tues moi encore',\n", - " 'oh tu me tues',\n", - " 'assassine de la nuit',\n", - " 'le pudding et le shetland',\n", - " 'david bailey, mary quant',\n", - " 'jerk and radio caroline',\n", - " '\"caroline\" no \"caroline\"',\n", - " \"it's made in england\",\n", - " 'accordéon qui balance',\n", - " 'les gauloises et la pétanque',\n", - " 'tour eiffel et camembert',\n", - " 'et maurice chevalier',\n", - " \"c'est made in france\",\n", - " 'les français les anglais',\n", - " 'peuvent toujours essayer',\n", - " 'ils ne seront jamais',\n", - " 'jamais pareils, pareils, pareils, pareils, pareils',\n", - " 'les beatniks aux cheveux longs',\n", - " 'like the young napoléon',\n", - " 'les dollies pas compliquées',\n", - " 'difficult à expliquer',\n", - " \"it's made in england\",\n", - " 'les guitares romantiques',\n", - " 'the sono no terrific',\n", - " 'oh ! my darling i love you',\n", - " 'mon amour, mon amour',\n", - " \"c'est made in france\",\n", - " 'entre londres et calais',\n", - " 'il y a un fossé',\n", - " 'un si petit bateau',\n", - " \"et puis de l'eau, de l'eau, de l'eau, de l'eau, de l'eau\",\n", - " 'mini jupes et maxi bottes',\n", - " \"liberty jusqu'à non-stop\",\n", - " 'burlington, julie christie',\n", - " 'and the salvation army',\n", - " \"it's made in england\",\n", - " 'le beaujolais, le pastis',\n", - " 'les british promènent à nice',\n", - " 'et le tunnel sous la manche',\n", - " 'but the tunnel sous la manche',\n", - " \"c'est made in france\",\n", - " 'no, made in england',\n", - " 'non, made in france',\n", - " 'no, made in england',\n", - " 'non, made in france...',\n", - " 'mesdames et messieurs',\n", - " 'etes-vous preets a bouger',\n", - " 'quands daddy car il est la',\n", - " 'pour tout controler',\n", - " 'etes-vous preets pour ca',\n", - " 'etes-vous preets pour ca',\n", - " 'you recognise the sound?',\n", - " \"well, it's the underground\",\n", - " 'you recognise the sound?',\n", - " \"well, it's the underground\",\n", - " 'le soir comme la journee',\n", - " 'tu traines dans les rues',\n", - " 'la journee comme le soir',\n", - " \"la drogue est a l'affut\",\n", - " 'a laffut du neaut',\n", - " 'toujours besoin de perfs',\n", - " 'maudis tel jour',\n", - " 'ou cette drogue est apparue',\n", - " 'ah, je suis selected',\n", - " 'selected, collected',\n", - " 'ah, je suis selected',\n", - " 'to be collected',\n", - " 'ah, je suis selected',\n", - " 'selected, collected',\n", - " 'ah, je suis selected',\n", - " 'to be collected',\n", - " 'you recognise the sound?',\n", - " \"well, it's the underground\",\n", - " 'ah, je suis selected',\n", - " 'ah, je suis selected',\n", - " 'you recognise the sound?',\n", - " \"well, it's the underground\",\n", - " 'you recognise the sound?',\n", - " \"well, it's the underground\",\n", - " 'le soir comme la journee',\n", - " 'tu traines dans les rues',\n", - " 'la journee comme le soir',\n", - " \"la drogue est a l'affut\",\n", - " 'a laffut du neaut',\n", - " 'toujours besoin de perfs',\n", - " 'maudis tel jour',\n", - " 'ou cette drogue est apparue',\n", - " 'ah, je suis selected',\n", - " 'selected, collected',\n", - " 'ah, je suis selected',\n", - " 'to be collected',\n", - " 'in the darkest night',\n", - " \"we're all waiting for a sign\",\n", - " 'for a wake-up call',\n", - " 'saying peace is coming back',\n", - " \"we don't wanna the fear\",\n", - " \"we won't burst into tears\",\n", - " 'cauz this desert town',\n", - " 'is still the place we feel like home',\n", - " 'and our kids will play in front of the house',\n", - " 'and my hands will be shaking in a concert hall',\n", - " 'and the sirens will be silent all night',\n", - " 'when we celebrate life',\n", - " 'toi te souviens-tu',\n", - " 'comment tout était si calme',\n", - " 'avant que la nuit',\n", - " 'que la nuit ne dresse les armes',\n", - " 'toi te souviens-tu',\n", - " 'de ces visages qui se mêlent',\n", - " 'un instant vécu',\n", - " 'lorsque la nuit était belle',\n", - " 'dans les rues dans nos quartiers',\n", - " 'il y a comme un arrière-goût de liberté',\n", - " 'dans le fond de nos pensées',\n", - " 'cette nuit tous enfermés',\n", - " 'dans les rues de nos quartiers',\n", - " 'il y a comme un arrière-goût de liberté',\n", - " 'dans le fond de nos pensées',\n", - " 'cette nuit tous éveillés',\n", - " 'would you please pass my hat',\n", - " \"it's gettin late, i've got to go\",\n", - " \"you're momma she's already tired\",\n", - " 'your daddy he is getting mad',\n", - " 'say goodnight to your momma',\n", - " 'the dinner it was very good',\n", - " 'kiss me quick then pass my hat',\n", - " \"your daddy's mad i've got to go\",\n", - " \"s'il vous plaît remettez mon chapeau\",\n", - " 'cela est gettin tard, je dois aller',\n", - " 'vous momma, elle a fatigué déjà votre lalo',\n", - " 'il se fâchera',\n", - " 'on parle(disent) goodnight à votre momma le déjeuner',\n", - " \"c'était très bon\",\n", - " \"m'embrasseront rapide\",\n", - " 'alors remettent mon chapeau votre ïàïà fou',\n", - " 'je dois aller',\n", - " 'would you please pass my hat',\n", - " \"it's gettin late, i've got to go\",\n", - " \"you're momma she's already tired\",\n", - " 'your daddy he is getting mad',\n", - " 'say goodnight to your momma',\n", - " 'the super it was very good',\n", - " 'kiss me quick then pass my hat',\n", - " \"your daddy's mad i've got to go\",\n", - " \"d'autres larmes chaudes\",\n", - " 'de ce corps seul',\n", - " \"suintaient d'un ?il de marbre...\",\n", - " \"d'un ?il fissuré...\",\n", - " 'fendu par la lumière',\n", - " 'ô combien cruelle...',\n", - " 'de toute une vie passée',\n", - " \"a chercher l'obscurité...\",\n", - " \"d'autres larmes chaudes\",\n", - " 'de cet être oublié',\n", - " 'coulaient comme pour fuir',\n", - " 'la mort venant...',\n", - " 'telles des gouttes de pluie',\n", - " \"fuyant l'orage\",\n", - " \"fuyant la foudre d'un dieu\",\n", - " 'certes, en colère',\n", - " 'mais bien impuissant',\n", - " 'face au courage',\n", - " \"d'un être usé par la vie...\",\n", - " 'les muscles se tendaient, se bloquaient...',\n", - " \"sans nervosité aucune, comme s'ils savaient...\",\n", - " \"comme s'ils attendaient l'instant présent...\",\n", - " 'depuis de longs moments...',\n", - " 'le sang prenait peur et se concentrait',\n", - " \"auprès d'un c?ur sans regrets...\",\n", - " 'sans remords aucun...',\n", - " \"auprès d'un c?ur\",\n", - " 'oublié par la vie...',\n", - " 'haïssant ce fluide, (ce sang)',\n", - " 'qui fait vivre les humains...',\n", - " \"l'?il de marbre brillait\",\n", - " 'malgré la tristesse de la scène',\n", - " \"l'?il de marbre admirait\",\n", - " 'le miroir face à lui...',\n", - " \"le reflet d'un corps qui le porta\",\n", - " 'ces années durant...',\n", - " 'oubliant la douleur infligée, la honte apportée...',\n", - " \"fuyant le passé regretté , autant que l'avenir renié...\",\n", - " '(translation)',\n", - " '(tears of the one despised...)',\n", - " 'other warm tears',\n", - " \"this lone body's\",\n", - " 'were oozing from a marble eye...',\n", - " 'from a fissured eye...',\n", - " 'cracked by the light',\n", - " '-oh, how cruel !-',\n", - " 'of a whole life spent',\n", - " 'searching for darkness...',\n", - " 'other warm tears',\n", - " \"this forgotten being's\",\n", - " 'were running as to flee',\n", - " 'from the coming death...',\n", - " 'as drops of rain',\n", - " 'fleeing from the storm',\n", - " 'fleeing from the thunderbolt of a god',\n", - " 'angry indeed',\n", - " 'but still powerless',\n", - " 'before the courage of a being',\n", - " 'that life had worn away...',\n", - " 'muscles were stretching, blocking...',\n", - " 'without any nervousness, as if they knew...',\n", - " 'as if they had been waiting for this very moment',\n", - " 'for a long time...',\n", - " 'blood got scared and was concentrating',\n", - " 'around a regretless heart...',\n", - " 'deprived of any remorse...',\n", - " 'around a heart',\n", - " 'that had been neglected by life...',\n", - " 'hating that fluid -that blood-',\n", - " 'which makes humans live...',\n", - " 'the marble eye was sparkling',\n", - " 'despite the sadness of the scene',\n", - " 'the marble eye was admiring',\n", - " 'in front of the mirror...',\n", - " 'the reflection of a body that',\n", - " 'had carried him all these years...',\n", - " 'forgetting the pain inflected, the shame brought...',\n", - " 'fleeing from the regretted past',\n", - " 'as much as from the denied future...',\n", - " '(translated from french by aries)',\n", - " \"you say you don't like the music on the radio (mmh yeah)\",\n", - " 'the people, they try too hard to be original (mmh yeah)',\n", - " \"what if i told you, that we can't get get get away, away\",\n", - " 'this is not a pop song, honey',\n", - " 'this is what the cool kids like (cool kids like)',\n", - " \"can you feel the beat? it's funky\",\n", - " 'this is what the cool kids like (cool kids like)',\n", - " \"yo, ça dit quoi les jeunes ? moi j'ai glandé tout l'été\",\n", - " \"rien à faire, la météo m'a beaucoup aidé\",\n", - " \"j'aimerais sortir avec cette meuf, j'attends qu'elle me dise oui\",\n", - " \"j'te kiffe plus que fifa 18\",\n", - " \"c'est nous les plus forts, c'est nous les beaux gosses\",\n", - " \"ta maman m'écoute entre deux injections de botox\",\n", - " \"donald, on t'aime pas, t'es qu'une pourriture\",\n", - " \"jj, caba et todi, c'est la coolitude\",\n", - " \"what if i told you, that we can't get get get away, away (on va le faire, on va le faire)\",\n", - " 'this is not a pop song honey (on va le faire, on va le faire)',\n", - " 'this is what the cool kids like (on va le faire, on va le faire)',\n", - " 'cools kids like',\n", - " \"can you feel the beat? it's funky (on va le faire, on va le faire)\",\n", - " 'this is what the cool kids like',\n", - " 'cools kids like',\n", - " \"j'ai éteint ma télé, elle ne parle que de choses terribles\",\n", - " 'je ne la rallume que pour voir le foot et ma série (vrai)',\n", - " \"ouais, j'ai rdv (quoi ?), j'ai mis des nike et un polo neuf\",\n", - " \"elle s'en fout que j'ai des milliers de followers\",\n", - " 'elle est vraie, elle est fraîche, elle est groovy',\n", - " \"je remercie le ciel de l'avoir trouvé\",\n", - " \"baby, baby, toi et moi, c'est pour la vie\",\n", - " 'excepté ce soir, je serais avec mes reufs toute la nuit',\n", - " \"what if i told you, that we can't get get get away, away (on va le faire, on va le faire)\",\n", - " 'this is not a pop song, honey (on va le faire, on va le faire)',\n", - " 'this is what the cool kids like (on va le faire, on va le faire)',\n", - " 'cool kids like',\n", - " \"can you feel the beat? it's funky (on va le faire, on va le faire)\",\n", - " 'this is what the cool kids like',\n", - " 'cool kids like',\n", - " 'on se voit, on se connait',\n", - " \"quand nos regards se croisent on s'attire\",\n", - " 'on se promet les plus belles phrases',\n", - " 'je te dirai que moi la préface je la connais',\n", - " \"la nation s'embrase\",\n", - " 'on se cherche de ville en ville par amour on se trouve',\n", - " 'on laisse les âmes futiles écrire de beaux discours',\n", - " \"simplicité la nation s'y engage\",\n", - " 'et complicité, on fera des ravages',\n", - " 'we are from the north',\n", - " 'we came from the south',\n", - " 'we are all the nation',\n", - " 'we are from the north',\n", - " 'we came from the south',\n", - " 'we are all the nation',\n", - " 'yes we are',\n", - " 'yes we are',\n", - " 'je, tu, elle, il, on a la rage au coeur',\n", - " \"nos langages subtils viennent d'ici et d'ailleurs\",\n", - " 'nous ferons face et grâce à nos esprits',\n", - " \"la nation s'embrasse, la nation guérit\",\n", - " 'we are from the north',\n", - " 'we came from the south',\n", - " 'we are all the nation',\n", - " 'we are from the north',\n", - " 'we came from the south',\n", - " 'we are all the nation',\n", - " 'yes we are',\n", - " 'yes we are',\n", - " 'est-ce que tu le sens le bonheur',\n", - " \"qui se dessine à l'horizon ?\",\n", - " 'est-ce que tu la sens la chaleur ?',\n", - " 'la nation devient ta maison',\n", - " 'tout se donner',\n", - " 'embrasser le monde entier',\n", - " 'we are from the north',\n", - " 'we came from the south',\n", - " 'we are all the nation',\n", - " 'we are from the north',\n", - " 'we came from the south',\n", - " 'we are all the nation',\n", - " 'yes we are',\n", - " 'yes we are',\n", - " 'yes we are',\n", - " 'yes we are',\n", - " \"comme, comme j'ai dit une fois\",\n", - " \"long, c'est le jour sans toi\",\n", - " \"besoins s'enflament\",\n", - " 'mes sentiments',\n", - " 'je me réclame',\n", - " \"passé s'est fait\",\n", - " \"silence m'enforce\",\n", - " 'je ne répens',\n", - " 'qui mal',\n", - " 'doux, chaque battement du coeur',\n", - " 'fortes, les frissons du peur',\n", - " \"j'ai mal du coeur\",\n", - " \"et mal d'esprit\",\n", - " \"ma vie s'en va\",\n", - " 'la voix emue',\n", - " 'perdue, échue',\n", - " 'et je denoue',\n", - " 'sans moi',\n", - " 'translation ::',\n", - " 'as, as i once said',\n", - " 'long, is the day without you',\n", - " 'needs inflame',\n", - " 'my sentiments',\n", - " 'i shout complaints',\n", - " 'the past is done',\n", - " 'silence burys me',\n", - " 'i repent',\n", - " 'soft, each beat of the heart',\n", - " 'strong, the shivers of fear',\n", - " 'my heart bleeds',\n", - " \"and i can't think\",\n", - " 'my life is disappearing',\n", - " 'with emotional voice',\n", - " 'lost, expired',\n", - " 'i am unravelling',\n", - " 'without you',\n", - " 'aye!',\n", - " 'this song is just for ya',\n", - " 'ya know this is',\n", - " 'haha!',\n", - " 'drop this',\n", - " 'jakku wae neon',\n", - " 'osi jagajyeotda tudeolgeoryeo',\n", - " 'tto tudeolgeoryeo ( hey baby wae tto geurae)',\n", - " 'hangsang wae neon',\n", - " 'jakku sari jjyeotda tudeolgeoryeo',\n", - " '( neomu yeppeunde nae nuneneun hangsang',\n", - " 'you are the prettiest girl)',\n", - " 'niga eotteon oseul ibeodo',\n", - " 'naegen hangsang beautiful',\n", - " '( baby let me do wannado just let me do wanna do)',\n", - " 'sesang modeun geol da gajyeodo',\n", - " 'niga eobseumyeon an dwae my girl',\n", - " 'you‘re the only one for me yeah',\n", - " 'nan niga jeil joha',\n", - " 'niga jeil yeppeo',\n", - " 'jinaganeun got-got maeryeogi da heulleo',\n", - " 'niga jeil joha',\n", - " 'neo hanamyeon dwae',\n", - " 'gaseume saegyeo dwo',\n", - " 'niga sesangeseo jeil sojunghae',\n", - " 'every time i like you',\n", - " 'woah~,woah~',\n", - " 'oh my love for you',\n", - " 'neobakken eobseo nan',\n", - " 'i belong with you',\n", - " 'woah~,woah~',\n", - " 'crazy love for you',\n", - " 'neobakken eobseo nan',\n", - " 'gilgeorireul georeul ttae',\n", - " 'neol boneun namjadeurui',\n", - " 'siseoni neukkyeojine',\n", - " 'geotneun moseupjocha neomuna yeppeun geol',\n", - " 'happiness',\n", - " 'is what i feel now ( now i’m gonna kiss you',\n", - " 'now i just wanna kiss you now)',\n", - " 'dareun nuga naege ondaedo',\n", - " 'chyeodabojido anha my love',\n", - " '( baby let me do wanna',\n", - " 'wanna do just let me do wanna, wanna do)',\n", - " 'sesang modeun geol da jundaedo',\n", - " 'neo hanamyeon chungbunhae my love',\n", - " 'you‘re the only one for me yeah',\n", - " 'nan niga jeil joha',\n", - " 'niga jeil yeppeo',\n", - " 'jinaganeun got-got maeryeogi da heulleo',\n", - " 'niga jeil joha',\n", - " 'neo hanamyeon dwae',\n", - " 'gaseume saegyeo dwo',\n", - " 'niga sesangeseo jeil sojunghae',\n", - " 'geunyang idaero',\n", - " 'isseojumyeon dwae yeah',\n", - " 'ireoke areumdaun neoinde',\n", - " 'you gotta know that you’re the prettiest for me',\n", - " 'niga jeil joha nan niga jeil yeppeo, yeah',\n", - " 'mareun chehyeonge jom jageun ki',\n", - " 'jogeuman eolgure budeureoun meoritgyeol',\n", - " 'neol gatgo sipeo tto ango sipeo',\n", - " 'everywhere neol yeope dugo sipeo',\n", - " 'eoneu nuga neol yokhaedo areumdaume ttareun daegail ppun',\n", - " 'geureon geon singyeongsseul pillyo eobtji',\n", - " 'you and i just fall in love all night long',\n", - " 'nan niga jeil joha',\n", - " 'niga jeil yeppeo',\n", - " 'jinaganeun got-got maeryeogi da heulleo',\n", - " 'niga jeil joha',\n", - " 'neo hanamyeon dwae',\n", - " 'gaseume saegyeo dwo',\n", - " 'niga sesangeseo jeil sojunghae',\n", - " 'every time i like you',\n", - " 'woah~,woah~',\n", - " 'oh my love for you',\n", - " 'neobakken eobseo nan',\n", - " 'i belong with you',\n", - " 'woah~,woah~',\n", - " 'crazy love for you',\n", - " 'neobakken eobseo nan',\n", - " 'traduction:',\n", - " 'aye!',\n", - " 'this song is just for ya',\n", - " 'ya know this is',\n", - " 'haha!',\n", - " 'drop this',\n", - " \"pourquoi est-ce que tu n'arrêtes pas\",\n", - " 'de te plaindre que tes vêtements rapetissent',\n", - " 'et tu te plains encore',\n", - " 'hé bébé pourquoi es-tu comme ça',\n", - " 'toujours, tu te plains que tu deviens plus joufflus',\n", - " 'a mes yeux, you are the prettiest girl',\n", - " \"n'importe quels vêtements que tu portes\",\n", - " 'pour moi tu es beautiful',\n", - " 'baby let me do wanna wanna do',\n", - " 'just let me do wanna wanna do',\n", - " \"même si j'ai tout dans le monde, si je ne t'ai pas\",\n", - " 'alors je ne peux ma girl',\n", - " 'you are the only one for me yeah',\n", - " \"je t'aime le plus, tu es la plus jolie\",\n", - " \"n'importe où tu passe, ton charme se répands\",\n", - " \"je t'aime le plus et j'ai seulement besoin de toi\",\n", - " 'je vais te graver dans mon cœur',\n", - " 'tu es la plus importante dans ma vie',\n", - " 'every time i like you',\n", - " 'oh my love for you',\n", - " \"je n'ai seulement que toi\",\n", - " 'i belong with you',\n", - " \"crazy love for you, sans toi je n'existe pas\",\n", - " 'quand tu marches sur le trottoir, les hommes qui te regardent',\n", - " 'je sens leurs regards, même ta démarche est belle',\n", - " 'happiness is what i feel now',\n", - " 'now i’m gonna kiss you now',\n", - " 'i just wanna kiss you now',\n", - " \"si quelqu'un d'autre vient à moi\",\n", - " 'je ne la regarderait même pas, ma love',\n", - " 'baby let me do wanna wanna do',\n", - " 'just let me do wanna wanna do',\n", - " \"même si elle me dit qu'elle me donnera le monde\",\n", - " 'je suis simplement heureux avec toi ma love',\n", - " 'you are the only one for me yeah',\n", - " \"je t'aime le plus, tu es la plus jolie\",\n", - " \"n'importe où tu passe, ton charme se répands\",\n", - " \"je t'aime le plus et j'ai seulement besoin de toi\",\n", - " 'je vais te graver dans mon cœur',\n", - " 'tu es la plus importante dans ma vie',\n", - " \"tout ce que tu as à faire c'est de rester comme ça yeah\",\n", - " 'tellement si belle, toi',\n", - " 'you gotta know that you’re the prettiest for me',\n", - " \"je t'aime le plus, tu es la plus jolie\",\n", - " 'avec une petite taille et une petite taille',\n", - " 'un petit visage et des cheveux doux',\n", - " \"je te veux et je veux t'enlacer\",\n", - " 'everywhere je veux te garder à mes côtés',\n", - " 'quiconque te parles mal',\n", - " \"c'est simplement un autre prix pour toi d'être magnifique\",\n", - " \"tu n'as pas besoin de t'inquiéter de toutes ces choses\",\n", - " 'you and i just fall in love all night long',\n", - " \"je t'aime le plus, tu es la plus jolie\",\n", - " \"n'importe où tu passe, ton charme se répands\",\n", - " \"je t'aime le plus et j'ai seulement besoin de toi\",\n", - " 'je vais te graver dans mon cœur',\n", - " 'tu es la plus importante dans ma vie',\n", - " 'every time i like you',\n", - " 'oh my love for you',\n", - " \"je n'ai seulement que toi\",\n", - " 'i belong with you',\n", - " \"crazy love for you, je n'ai seulement que toi\",\n", - " \"voir des enfants de l'amitié\",\n", - " \"venu d'un pays\",\n", - " 'jadis très fort',\n", - " \"ils cherchent l'étoile\",\n", - " 'arrivent à temps',\n", - " 'ils viennent chez vous',\n", - " 'ouvrent les portes',\n", - " 'un rêve pour tous',\n", - " \"europe c'est nous\",\n", - " 'les noirs les blancs',\n", - " 'les jeunes les vieux',\n", - " 'les grands petits',\n", - " 'forts ou malades',\n", - " 'un grand asile',\n", - " 'pour tous les hommes',\n", - " 'ceux qui contestent',\n", - " 'regardent les gens passer',\n", - " 'expirent en enfer',\n", - " \"important pour l'avenir\",\n", - " 'ceux qui contestent',\n", - " 'regardent les gens passer',\n", - " 'expirent en enfer',\n", - " 'le prêtre dira',\n", - " 'hear children cry',\n", - " 'and parents sigh',\n", - " 'running away',\n", - " \"leave sorrow's days\",\n", - " 'follow the star',\n", - " 'touching the dream',\n", - " 'longing for hope',\n", - " 'drown in the sea',\n", - " 'when will they sing',\n", - " \"and joy who'll bring\",\n", - " 'learning to guide',\n", - " 'not to divide',\n", - " 'send rays of light',\n", - " 'to darkened lands',\n", - " 'will we remain',\n", - " 'in strangling hands',\n", - " 'those who deny',\n", - " 'who make you die',\n", - " 'will pay in hell',\n", - " 'the preacher will tell',\n", - " 'ceux qui contestent',\n", - " 'regardent les gens passer',\n", - " 'expirent en enfer',\n", - " \"important pour l'avenir\",\n", - " 'those who deny',\n", - " 'who make you die',\n", - " 'will pay in hell',\n", - " 'the preacher will tell',\n", - " \"j'te vois, tu joues, t'es pas si mal, j'avoue\",\n", - " \"l'air un peu froid, le regard plutôt doux\",\n", - " \"mais je danse, je danse, t'es pas le premier fou\",\n", - " \"mon ange, oublie l'idée du rendez-vous\",\n", - " \"and you don't even know my name\",\n", - " 'but i can just rock with you',\n", - " \"and you don't even know my name\",\n", - " 'but i can just play with you',\n", - " 'oh, lentement',\n", - " \"i'll make you feel good all night long\",\n", - " \"j'peux jouer avec toi\",\n", - " 'et même danser pour toi',\n", - " 'te laisser croire que tes beaux yeux',\n", - " \"pourraient m'laisser sans voix\",\n", - " 'tu tournes autour de moi, parais bien sûr de toi',\n", - " 'i can even let you play with me if i want, want',\n", - " 'baby (baby)',\n", - " 'if you want me',\n", - " 'you got, you got',\n", - " 'baby (you gotta work it)',\n", - " 'you gotta work it (you gotta work it baby)',\n", - " \"baby (i know, i know that we're tonight)\",\n", - " 'if you want me (i know, i know you had to try)',\n", - " 'you got, you got',\n", - " \"baby (i know, i know that we're tonight)\",\n", - " 'you gotta work it (i know, i know you had to try)',\n", - " \"l'air est humide et flou, je me noie dans la foule\",\n", - " \"plus je m'éloigne et plus tu deviens fou\",\n", - " \"tu vois, je n'ai que faire de tes mots doux, mon loup\",\n", - " \"l'affaire est claire, je n'aime pas les déjà-vu\",\n", - " \"and you don't even know my name\",\n", - " 'but i can just rock with you',\n", - " \"and you don't even know my name\",\n", - " 'but i can just play with you',\n", - " 'oh, lentement',\n", - " \"i'll make you feel good all night long (i'll make you feel good)\",\n", - " \"j'peux jouer avec toi\",\n", - " 'et même danser pour toi',\n", - " 'te laisser croire que tes beaux yeux',\n", - " \"pourraient m'laisser sans voix\",\n", - " 'tu tournes autour de moi, parais bien sûr de toi',\n", - " 'i can even let you play with me if i want, want',\n", - " 'baby (baby)',\n", - " 'if you want me',\n", - " 'you got, you got',\n", - " 'baby (you gotta work it)',\n", - " 'you gotta work it (you gotta work it baby)',\n", - " \"baby (i know, i know that we're tonight)\",\n", - " 'if you want me (i know, i know you had to try)',\n", - " 'you got, you got',\n", - " \"baby (i know, i know that we're tonight)\",\n", - " 'you gotta work it (i know, i know you had to try) (you gotta work it baby)',\n", - " 'you play with tammy, tammy, tammy, tammy',\n", - " 'done now?',\n", - " 'you play with tammy, tammy, tammy',\n", - " 'done now?',\n", - " 'you play with tammy, tammy, tammy, tammy',\n", - " 'done now?',\n", - " \"je vois tes yeux, je sens c'que tu veux, j'ai inventé le jeu\",\n", - " 'you play with tammy, tammy, tammy, tammy',\n", - " 'done now?',\n", - " 'you play with tammy, tammy, tammy',\n", - " 'done now?',\n", - " 'you play with tammy, tammy, tammy, tammy',\n", - " 'done now?',\n", - " \"je vois tes yeux, je sens c'que tu veux, j'ai inventé le jeu\",\n", - " 'baby (baby)',\n", - " 'if you want me',\n", - " 'you got, you got',\n", - " 'baby (you gotta work it)',\n", - " 'you gotta work it (you gotta work it baby)',\n", - " \"baby (i know, i know that we're tonight)\",\n", - " 'if you want me (i know, i know you had to try)',\n", - " 'you got, you got',\n", - " \"baby (i know, i know that we're tonight)\",\n", - " 'you gotta work it (i know, i know you had to try)',\n", - " \"and you don't even know my name (don't even know my name)\",\n", - " 'i know, i know you had to try',\n", - " \"and you don't even know my name (and you don't even know my name)\",\n", - " 'i know, i know you had to try',\n", - " 'baby',\n", - " \"je vois tes yeux, je sens c'que tu veux, j'ai inventé le jeu\",\n", - " 'baby',\n", - " \"je vois tes yeux, je sens c'que tu veux, j'ai inventé le jeu\",\n", - " 'missikara djarati wari!! wari!!',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'angné bin kélé man, me badé lou eh!',\n", - " 'angné bin kélé man!!',\n", - " 'angné bin kélé man, me badé lou eh!',\n", - " 'angné bin kélé man you',\n", - " 'multipartism it is not tribalism',\n", - " 'multipartism yeah, it is not tribalism',\n", - " 'nor-kouibé kouman oh! keep silent yourself, keep silent dioula',\n", - " 'nor-kouibé kouman oh! keep silent yourself, keep silent bété',\n", - " 'nor-kouibé kouman oh! keep silent yourself, keep silent baoulé',\n", - " 'i kouibé kouman dôni conceal to you bôyôrôdjan!!',\n", - " 'the soldiers are annoyed',\n", - " 'because they are badly paid',\n", - " 'the police officers are annoyed',\n", - " 'because they are badly paid',\n", - " 'the professors are annoyed',\n", - " 'their baffoulés syndacaux rights',\n", - " 'the annoyed students cont',\n", - " 'they want more freedom',\n", - " '\"paper longuer\" the mourouti',\n", - " 'because they were knocked',\n", - " 'the doctors are annoyed',\n", - " 'because they are badly paid',\n", - " 'the workmen are annoyed',\n", - " 'because they were compressed',\n", - " 'the government is annoyed',\n", - " 'cases of the state emptied... emptied...',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'missikara djarati wari!! wari!!',\n", - " 'abidjan ya cloth',\n", - " 'in cotonou ya cloth',\n", - " 'in bamako bastard cloth',\n", - " 'in lome ya cloth',\n", - " 'in conakry ya cloth',\n", - " 'in monravia bastard cloth',\n", - " 'in lome ya cloth',\n", - " 'in kinshasa ya cloth oh!',\n", - " 'addis ababa bastard cloth...',\n", - " 'abidjan ya cloth oh!',\n", - " 'in cotonou ya cloth',\n", - " 'in bamako bastard cloth',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'wari-banan, wari banan gbêrêya bé bê-kan',\n", - " 'angné bin kélé man, me badé lou eh!',\n", - " 'angné bin kélé man!!',\n", - " 'angné bin kélé man, me badé lou eh!',\n", - " 'angné bin kélé man you',\n", - " 'nor-kouibé kouman oh! conceal pdci',\n", - " 'nor-kouibé kouman oh! conceal pit',\n", - " 'nor-kouibé kouman oh! conceal usd',\n", - " 'i-kouibé kouman dôni oh! conceal fpi',\n", - " \"tout' l world is annoyed, fâché, fâché\",\n", - " 'quand tout va mal, when life goes wrong',\n", - " 'try for a little french song',\n", - " 'french songs are maybe démodées mais si douces à fredonner',\n", - " \"french songs are tender à l'envi, nostalgiques à l'infini\",\n", - " 'et quand on ne sait plus where to belong',\n", - " 'try for a little french song',\n", - " \"french song will take you to paris, to pigalle ou l'île saint-louis\",\n", - " 'french song are dancing sous la pluie, de bastille aux tuileries',\n", - " 'because we have de quoi frimer, we have brassens, brel and ferré',\n", - " 'we have boris vian, barbara, gainsbourg, trenet, prévert, kosma',\n", - " 'because we have de quoi choisir we have aznavour, reggiani',\n", - " 'bécaud, nougaro, moustaki, édith piaf cloclo and johnny',\n", - " 'oui, oui, oui, oui',\n", - " \"bien sûr ce n'est pas duke ellington\",\n", - " \"ce n'est pas eivis ni jackson\",\n", - " \"ce n'est pas fitzgerald ou armstrong\",\n", - " \"c'est just a little french song\",\n", - " 'mais quand le chagrin reste too iong',\n", - " 'moi je chante une little french song',\n", - " 'because we have de quoi frimer, we have brassens, brel and ferré',\n", - " 'we have boris vian, barbara, gainsbourg, trenet, prévert, kosma',\n", - " 'because we have de quoi choisir we have aznavour, reggiani',\n", - " 'bécaud, nougaro, moustaki, edith piaf cloclo and johnny',\n", - " 'oui, oui, oui, oui',\n", - " \"et qu'on soit de londres ou de hong kong, qu'on soit trois feuilles\",\n", - " 'ou shu-bang',\n", - " \"qu'on soit djellabah ou sarong, try for a little french song\",\n", - " 'quand les méchants sonnent leur gong',\n", - " 'moi je chante une little french song',\n", - " 'ooooh oh oooh oh ooooh oh ooooh oh oooooh',\n", - " \"aïe aïe aïe c'est les jumo, les jumoooo\",\n", - " 'momomohombii',\n", - " \"c'est chaud ça brûle\",\n", - " 'tout le monde tout le monde',\n", - " 'sexy the way you move that body',\n", - " \"i'm standing here\",\n", - " \"i'm ready\",\n", - " \"c'est parti pour le show\",\n", - " \"hey girl t'es sexy\",\n", - " 'the way you move that body',\n", - " \"i'm standing here\",\n", - " \"i'm ready\",\n", - " \"c'est parti pour le show oh oh\",\n", - " 'mon coeur fait \"boum\" quand tu passes devant moi',\n", - " '\"boum boum\" quand il entend ta voix',\n", - " \"c'est toi la plus belle tu es ma reine\",\n", - " \"aussi ravissante qu'un couché d'soleil\",\n", - " 'docta lova',\n", - " \"j'adore ton déhanché\",\n", - " \"ta beauté m'a charmé\",\n", - " 'apprends moi à lover',\n", - " 'et dans ta tête ça fait ti ki ti ki pam pam',\n", - " 'ooooh oh oooh oh ooooh oh ooooh oh oooooh',\n", - " \"les demoiselles vont bouger les massoko c'est ça!\",\n", - " 'zouker zouker',\n", - " 'ti ki ti pam pam',\n", - " 'sexy the way you move that body',\n", - " \"i'm standing here\",\n", - " ...]},\n", - " 'data': ['mar-an-tette, leverette',\n", - " 'lannette, lafayette, livernois',\n", - " 'labrosse, louis, mettetal',\n", - " 'rochelle, marseilles',\n", - " 'riopelle, manistique, armour',\n", - " 'mercier, lemay',\n", - " 'tournier, saliotte et leroy',\n", - " 'montlieu, cadieux',\n", - " 'neveaux, avenue en detroit',\n", - " \"well, i'm ready\",\n", - " \"i'm ready\",\n", - " \"i'm ready, ready, ready to\",\n", - " 'rock and roll',\n", - " 'lamphere, belle terre',\n", - " 'marseilles, mettetal, et',\n", - " 'rouge, le blanc',\n", - " 'shine you’re the light',\n", - " 'nae mame',\n", - " 'deureo on geoni',\n", - " 'malhaejwo',\n", - " 'eonjebuteonji',\n", - " 'gogaereul dollimyeon',\n", - " 'ni nuni tteoolla',\n", - " 'can i could',\n", - " 'i be your man',\n", - " 'siganeun neol hyanghae',\n", - " 'heureuna bwa',\n", - " 'amu mal eomneun',\n", - " 'neoui sonjise',\n", - " 'nan nuneul gamji motae',\n", - " 'niga deo seonmyeonghaejyeo ga',\n", - " 'so give me the light',\n", - " 'give me the light',\n", - " 'bitnaneun ni misoga',\n", - " 'nal nogyeo',\n", - " 'sesangeul barkhyeo',\n", - " 'nae apeul bichwo',\n", - " 'na modu byeonhago',\n", - " 'sarajindago haedo',\n", - " 'neomanui bichi neukkyeojyeo',\n", - " 'light in my eye',\n", - " 'i, i, i',\n", - " 'nege dagaga',\n", - " 'piharyeogo haebwado',\n", - " 'andwae deo gidaril sun eobseo',\n", - " 'you, you, you',\n", - " 'nae soneul jaba',\n", - " 'pihaegal suneun eobseo',\n", - " 'jigeum geu bicheul gatgesseo',\n", - " 'bitnaneun ni misoga',\n", - " 'nal nogyeo',\n", - " 'sesangeul barkhyeo',\n", - " 'nae apeul bichwo',\n", - " '(you light up my night',\n", - " 'you make me so right)',\n", - " 'modeun geoseul boge hae',\n", - " 'give me the light',\n", - " 'nae apeul eonjena',\n", - " 'barkhineun bit',\n", - " 'i wanna kiss you',\n", - " 'i wanna hold you tight',\n", - " 'neowa nanugo sipeo',\n", - " 'ni modeungeol',\n", - " 'naege gidaegil',\n", - " 'you, you, you',\n", - " 'naege dagawa',\n", - " 'i sunganeul jiwodo',\n", - " 'naneun neoreul nochi anha',\n", - " 'i, i, i',\n", - " 'ne soneul jaba',\n", - " 'can’t let you go',\n", - " 'wanna make you feel my love',\n", - " 'lady, lady',\n", - " 'cuz you are the one for me',\n", - " 'sigani jinado',\n", - " 'wanna be love',\n", - " 'your love',\n", - " 'ne mamdo mangseoriji anke',\n", - " 'josimseureopge jogeumssik dagaga',\n", - " 'jayeonseureopge neoege boyeojulge',\n", - " 'french translation :',\n", - " \"shine you're the light\",\n", - " 'es-tu venue dans mon cœur ?',\n", - " 'dis-moi, depuis quand ?',\n", - " 'quand je tourne la tête',\n", - " 'je penses à tes yeux',\n", - " 'can i could i be your man ?',\n", - " 'le temps semble flotter autour de toi',\n", - " 'a tes gestes sans mots',\n", - " 'je ne peux pas fermer mes yeux',\n", - " 'je deviens encore plus clair',\n", - " 'so give me the light',\n", - " 'give me the light',\n", - " 'ton sourire scintillant me fait fondre',\n", - " 'il révéle le monde, il brille devant moi',\n", - " 'même si tout change et disparaît',\n", - " 'je ne sens que ta lumière',\n", - " 'light in my eye',\n", - " \"i, i, i, j'irais vers toi\",\n", - " \"j'essaye de l'éviter\",\n", - " 'mais je ne peux pas',\n", - " 'je ne peux plus attendre',\n", - " 'you, you, you tiens ma main',\n", - " \"tu ne peux pas l'éviter\",\n", - " 'je vais avoir cette lumière',\n", - " 'ton sourire scintillant me fait fondre',\n", - " 'il révèle le monde',\n", - " 'il brille devant moi',\n", - " '(you light up my night',\n", - " 'you make me so right)',\n", - " 'tu me fais tout voir',\n", - " 'give me the light',\n", - " 'la lumière qui brille toujours devant moi',\n", - " 'i wanna kiss you',\n", - " 'i wanna hold you tight',\n", - " 'je veux tout partager avec toi',\n", - " \"j'espère que tu te reposeras sur moi\",\n", - " 'you, you, you, viens vers moi',\n", - " 'même si le moment est effacé',\n", - " 'je ne te laisserais pas partir',\n", - " 'i, i, i, tiens ta main',\n", - " \"can't let you go\",\n", - " 'wanna make you feel my love',\n", - " 'lady, lady',\n", - " 'cuz you are the one for me',\n", - " 'même après que le temps soit passé',\n", - " 'wanna ba love your love',\n", - " \"alors ton cœur n'hésitera pas\",\n", - " \"j'irais prudemment vers toi\",\n", - " 'petit à petit',\n", - " 'naturellement, je vais te montrer',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'tu veux... millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'tu veux... millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'tu veux... millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'millions, millions, millions, millions... cash, cash, cash',\n", - " 'tu veux... ah... cash... testarossa',\n", - " 'ah... cash... bahamas',\n", - " 'ah... cash... des millions...',\n", - " \"ah... cash... f-dans l'illicite\",\n", - " 'tu veux... ah... cash... testarossa',\n", - " 'ah... cash...',\n", - " 'ah... cash... des millions...',\n", - " 'ah... cash...',\n", - " 'ah...',\n", - " 'ah...',\n", - " 'cash... ca-cash...',\n", - " 'cash... ca-cash...',\n", - " 'cash... ca-cash...',\n", - " 'cash... ca-cash...',\n", - " 'cash... ca-cash...',\n", - " 'cash... ca-cash...',\n", - " 'cash... ca-cash...',\n", - " 'cash... ca-cash...',\n", - " 'des millions, millions, millions, millions... cash, cash, cash',\n", - " 'des millions, millions, millions, millions... cash, cash, cash',\n", - " 'des millions, millions, millions, millions... cash, cash, cash',\n", - " 'des millions, millions, millions, millions... cash, cash, cash',\n", - " 'des millions, millions, millions, millions... cash, cash, cash',\n", - " 'des millions, millions, millions, millions... cash, cash, cash',\n", - " 'des millions, millions, millions, millions... cash, cash, cash',\n", - " 'des millions, millions, millions, millions... cash, cash, cash',\n", - " 'ahi, amors, com dure departie',\n", - " 'me convenra faire de la millor',\n", - " 'ki onques fust amee ne servie!',\n", - " 'dieus me ramaint a li par sa douçour',\n", - " \"si voirement ke m'en part a dolor\",\n", - " \"las, k'ai je dit? ja ne m'en part je mie:\",\n", - " 'se li cors va servir nostre signor',\n", - " 'li cuers remaint del tot en sa baillie',\n", - " \"por li m'en vois sospirant en surie\",\n", - " 'car je ne doi faillir mon creator:',\n", - " \"ki li faura a cest besoing d'aïe\",\n", - " 'saciés ke il li faura a grignor',\n", - " 'et saicent bien li grant et li menor',\n", - " 'ke la doit on faire chevallerie',\n", - " 'ou on conquierl paradis et honor',\n", - " \"et pris et los, et l'amor de s'amie\",\n", - " 'dieus, tant a avons este preus par huiseuse!',\n", - " 'or verra on ki a certes iert preus:',\n", - " \"s'irons vengier la honte dolereuse\",\n", - " 'dont chascuns doit estre iriés et honteus',\n", - " 'car a no tans est perdusl li saint lieus',\n", - " 'ou dieus soffri por nos mort glorïeuse;',\n", - " \"s'or i laissons nos anemis morteus\",\n", - " 'a tos jors mais iert no vie honteuse',\n", - " 'on a pris quelques affaires un tricot',\n", - " 'plus un kit de couturière au cas où',\n", - " 'on avait fait un tremplin au veillis',\n", - " \"un grand tremplin pour partir loin d'ici\",\n", - " 'johnny welcome home',\n", - " 'johnny welcome',\n", - " 'oh les jours de neige de neige au veillis',\n", - " 'quelques bonnes longueurs de ficelle au cas où',\n", - " 'en bas claquent les portes du pénitencier',\n", - " 'mais bon dieu bon dieu elle va pas tout gâcher',\n", - " 'johnny welcome home',\n", - " 'johnny welcome',\n", - " 'elle chantait plutôt sunday afternoon',\n", - " 'il était plutôt du genre barstool blues',\n", - " 'comment faire entre eux et eux, eux et nous',\n", - " \"se faire un tremplin pour partir n'importe où\",\n", - " 'johnny welcome home',\n", - " 'johnny welcome',\n", - " 'radio activity , radio activity , ra-ra-ra-radio activity',\n", - " \"we're on a mission for orientation\",\n", - " 'radio activity , radio activity , ra-ra-ra-radio activity',\n", - " \"we're on a mission for orientation\",\n", - " 'ordre tombé de tout en haut',\n", - " 'politique du politburo',\n", - " 'playlist on the radio',\n", - " 'sous menace du',\n", - " 'single bubble gum',\n", - " \"enrichie à l'uranium\",\n", - " 'titre , hit , bombe atomique',\n", - " 'radio activity , radio activity , ra-ra-ra-radio activity',\n", - " \"we're on a mission for orientation\",\n", - " 'fabriqué au fond du labo',\n", - " 'musique pour robot',\n", - " \"encodage dans l'cerveau\",\n", - " 'mp3 + h2o',\n", - " 'e=2mc propagé dans circuit',\n", - " 'track hit buzz clash code fanatique',\n", - " 'matraquage en réseaux sociaux',\n", - " 'perfusion dans tous les tuyaux',\n", - " \"objectif thune à l'auto-tune\",\n", - " 'on a marché sur la lune',\n", - " 'phénomène hiro chimique',\n", - " 'hit para tchernobylique',\n", - " 'titre , hit , bombe atomique',\n", - " 'radio activity , radio activity , ra-ra-ra-radio activity',\n", - " \"we're on a mission for orientation\",\n", - " 'marx marx marx planète',\n", - " 'marx planète stargate',\n", - " 'marx marx marx planète',\n", - " 'marx planète stargate',\n", - " 'marx marx marx planète',\n", - " 'marx planète stargate',\n", - " 'marx marx marx planète',\n", - " 'marx planète stargate',\n", - " 'radio activity , radio activity , radio activity',\n", - " \"we're on a mission for orientation\",\n", - " 'radio activity , radio activity , radio activity',\n", - " \"we're on a mission for orientation\",\n", - " 'marx marx marx planète',\n", - " 'marx marx marx planète',\n", - " 'marx marx',\n", - " 'marx planète stargate',\n", - " 'marx marx',\n", - " 'marx planète stargate',\n", - " 'un,deux,trois',\n", - " \"elle n'est pas de moi\",\n", - " 'mais je peux',\n", - " 'le voir dans ses yeux',\n", - " 'un, deux, trois',\n", - " \"elle n'est pas de moi\",\n", - " 'mais je peux',\n", - " 'le voir dans ses yeux',\n", - " 'i shout',\n", - " \"what i'm saying\",\n", - " \"'cos less is more\",\n", - " 'save me',\n", - " 'if you save me',\n", - " 'then less is more',\n", - " 'less is more',\n", - " \"dans l'obscurité\",\n", - " 'je cherche ton son',\n", - " 'pour me guider',\n", - " 'pour éclairer',\n", - " 'mon horizon',\n", - " 'telle est la vie',\n", - " \"qu'on m'a donné\",\n", - " 'je dois errer',\n", - " 'dans les ténèbres',\n", - " \"pour l'éternité\",\n", - " \"j'ai parfois envie\",\n", - " \"d'autres plaisirs\",\n", - " 'de petites joies',\n", - " 'des raisons de vivre',\n", - " \"ou d'exister\",\n", - " 'mais je reste seul',\n", - " 'dans mes pensées',\n", - " 'mon univers',\n", - " 'reste fermé',\n", - " 'a tout jamais',\n", - " 'ecoute moi',\n", - " 'entends moi',\n", - " \"c'est mon cri\",\n", - " \"qui t'appelle\",\n", - " 'emmène moi',\n", - " 'entraîne moi',\n", - " 'dans ces lieux',\n", - " 'interdits',\n", - " 'prends ma main',\n", - " 'prends ma main',\n", - " 'guide mes pas',\n", - " 'dans cette vie',\n", - " 'prends mon âme',\n", - " 'prends mon âme',\n", - " \"c'est mes rêves\",\n", - " \"qui s'éclairent\",\n", - " \"j'ai aimé\",\n", - " \"tant d'idées\",\n", - " \"que j'ai dû\",\n", - " 'inventer',\n", - " 'seul le bruit',\n", - " \"m'a compris\",\n", - " 'et me mon-',\n", - " '-tre ma vie',\n", - " 'vois mes larmes',\n", - " 'vois mes larmes',\n", - " \"qui s'écoulent\",\n", - " 'de la mort',\n", - " \"c'est mon c? ur\",\n", - " \"c'est mon coeur\",\n", - " 'qui attend',\n", - " 'la lumière',\n", - " 'in darkness',\n", - " 'i search your sound',\n", - " 'to guide me',\n", - " 'to enlighten',\n", - " 'my horizon',\n", - " 'this is the life',\n", - " 'they gave me',\n", - " 'i have to wander',\n", - " 'in darkness',\n", - " 'forever',\n", - " 'i sometimes need',\n", - " 'some other pleasures',\n", - " 'some small joies',\n", - " 'some reasons to live',\n", - " 'or to exist',\n", - " 'but i stay alone',\n", - " 'with my thoughts',\n", - " 'my world',\n", - " 'stay closed',\n", - " 'forever',\n", - " 'listen to me',\n", - " 'hear me',\n", - " 'this is my cry',\n", - " 'which is calling you',\n", - " 'take me',\n", - " 'lead me away',\n", - " 'to these forbidden',\n", - " 'places',\n", - " 'take my hand',\n", - " 'take my hand',\n", - " 'guide me',\n", - " 'in this life',\n", - " 'take my soul',\n", - " 'take my soul',\n", - " \"that's my dreams\",\n", - " 'which are enlightening me',\n", - " \"i've loved\",\n", - " 'so many ideas',\n", - " 'that i had',\n", - " 'to invent',\n", - " 'only the noise',\n", - " 'understood me',\n", - " 'and showed me',\n", - " 'my life',\n", - " 'behold my tears',\n", - " 'behold my tears',\n", - " 'which are flowing',\n", - " 'out of death',\n", - " \"that's my heart\",\n", - " \"that's my heart\",\n", - " 'which is waiting for',\n", - " 'the light',\n", - " 'ninaaaa',\n", - " \"je t'attendrai comme avant\",\n", - " 'sans faire de bruit sans faire semblant',\n", - " \"juste parce que tu es celle, celle qui m'a donné des ailes\",\n", - " \"on a gravé des souvenirs sur l'écorce de nos 20 ans\",\n", - " 'depuis, nina, tu es partie, et ça me bouffe la vie',\n", - " 'nina nina, nina nina',\n", - " \"i'm still waiting\",\n", - " 'nina nina nina',\n", - " 'je sais que tu ne viendras pas',\n", - " \"and i'm still waiting\",\n", - " 'nina nina nina',\n", - " \"mais je t'attendrai là-bas\",\n", - " 'so far away from...',\n", - " 'nina nina nina',\n", - " 'je sais que tu ne viendras pas',\n", - " \"and i'm still waiting\",\n", - " 'nina nina nina',\n", - " \"mais je t'attendrai là-bas\",\n", - " 'so far away from...',\n", - " 'je garderai sur mes lèvres, le goût sucré de tes baisers',\n", - " 'la douceur de ton corps, le parfum de ta peau bronzée',\n", - " \"j'emporterai avec moi l'étoile de ton regard de braise\",\n", - " 'et tous ces petits mots que tu me criais tout bas',\n", - " 'nina nina, nina nina',\n", - " \"i'm still waiting\",\n", - " 'nina nina nina',\n", - " 'je sais que tu ne viendras pas',\n", - " \"and i'm still waiting\",\n", - " 'nina nina nina',\n", - " \"mais je t'attendrai là-bas\",\n", - " 'so far away from...',\n", - " 'nina nina nina',\n", - " 'je sais que tu ne viendras pas',\n", - " \"and i'm still waiting\",\n", - " 'nina nina nina',\n", - " \"mais je t'attendrai là-bas\",\n", - " 'one day',\n", - " \"i've been back to that town you know\",\n", - " 'in this place where you came my way',\n", - " 'the last time just before you go',\n", - " 'one day',\n", - " 'i heard your voice talking to me',\n", - " 'remember all the words you say',\n", - " \"there's something that will always be\",\n", - " 'forever and ever',\n", - " 'nina nina, nina nina',\n", - " \"i'm still waiting\",\n", - " 'nina nina nina',\n", - " 'je sais que tu ne viendras pas',\n", - " \"and i'm still waiting\",\n", - " 'nina nina nina',\n", - " \"mais je t'attendrai là-bas\",\n", - " 'so far away from...',\n", - " 'nina nina nina',\n", - " 'je sais que tu ne viendras pas',\n", - " \"and i'm still waiting\",\n", - " 'nina nina nina',\n", - " \"mais je t'attendrai là-bas\",\n", - " '(musique: daniel mongrain & pier-luc lampron)',\n", - " '(paroles: françois mongrain)',\n", - " \"(espérer peut faire très mal, surtout face à des illusions. échec après échec, l'on se réfugie dans la réclusion et le mépris. toutefois, la vie sans désir ne peut pas valoir la peine d'être vécue.)\",\n", - " '(dm-) nothing ever compared to',\n", - " 'the pain delivered by hope',\n", - " 'this reassuring derision',\n", - " 'to believe in illusions',\n", - " 'abstraction of all desires',\n", - " 'that is the way to suicide',\n", - " 'in a world nourished by lies',\n", - " 'no one can fulfil his life',\n", - " 'failure after failure',\n", - " 'more than the heart can endure',\n", - " 'life becomes a slow torture',\n", - " 'until the grand departure',\n", - " 'aging faster than time passes',\n", - " \"don't implore to start over\",\n", - " 'wishes rarely ever come true',\n", - " 'when youth grows old too fast',\n", - " '(lead: pier-luc lampron)',\n", - " 'failure after failure',\n", - " 'until the grand departure',\n", - " 'failure after failure',\n", - " 'until the grand departure',\n", - " '(lead: daniel mongrain)',\n", - " 'janvier :',\n", - " '- 01/01 : 3010 - zones (ep)',\n", - " '- 01/01 : solat - dealers de rêves (ep)',\n", - " '- 06/01 : sameer ahmad - ne mourez jamais seul (ep)',\n", - " '- 10/01 : youssoupha - boma yé (ep)',\n", - " '- 12/01 : bazoo - évolution',\n", - " '- 13/01 : the shin sekai - the shin sekai vol.2',\n", - " '- 20/01 : alpha wann - alph lauren (ep)',\n", - " \"- 20/01 : mydriase (le bon nob & clem beat'z) - grosse tête (ep)\",\n", - " \"- 20/01 : seiya & ben maker - tristesse d'un mélomane\",\n", - " '- 20/01 : shtar academy - shtar academy',\n", - " '- 27/01 : zbatata - vrais reconnaissent vrais',\n", - " '- 27/01 : pepso stavinsky - météorites (ep)',\n", - " '- 30/01 : rgf - rap genius net tape',\n", - " '- 31/01 : l’exécuteur de hong kong - l’envol du caméléon',\n", - " 'février :',\n", - " \"- 03/02 : deen burbigo - fin d'après minuit (ep)\",\n", - " '- 03/02 : sp (s-krim) - criminology',\n", - " \"- 08/02 : t.i.s & tum'soul - soulitude (vol.1)\",\n", - " '- 09/02 : dr kimble, débill sass, gaïden & tidess - grandline',\n", - " \"- 10/02 : abe 2 l'shefa - c ash misere\",\n", - " '- 10/02 : arkanson - 20 ans après (ep)',\n", - " '- 10/02 : mister you - le prince',\n", - " '- 10/02 : diomay - le gaucher',\n", - " \"- 16/02 : swatt's - l'amorce\",\n", - " '- 17/02 : crown - pieces to the puzzle',\n", - " \"- 17/02 : missak - l'adultère est un jeu d'enfant (ep)\",\n", - " '- 21/02 : rgf - the big three vol.1',\n", - " '- 22/02 : gwad - entre les lignes',\n", - " '- 24/02 : fossoyeur et guyle - mic en main',\n", - " '- 24/02 : grems - buffy (ep)',\n", - " '- 24/02 : jul - dans ma paranoia',\n", - " '- 24/02 : indila - mini world',\n", - " '- 24/02 : team bs - team bs',\n", - " '- 24/02 : bhati - patchwork',\n", - " 'mars :',\n", - " \"- 02/03 : l'artmature - second souffle\",\n", - " '- 02/03 : jcr - rudimentaire',\n", - " '- 03/03 : kaaris - or noir part. ii',\n", - " '- 03/03 : disiz - transe-lucide',\n", - " \"- 10/03 : dj mosko - prouesses de l'ombre vol.2\",\n", - " '- 10/03 : lim - violences urbaines 4',\n", - " '- 10/03 : mz - mz music vol. 3',\n", - " '- 10/03 : r.e.d.k. - chant de vision',\n", - " '- 10/03 : tunisiano - marqué à vie',\n", - " \"- 12/03 : lucio bukowski & haymaker - l'homme vivant\",\n", - " '- 17/03 : beeby - ad hominem',\n", - " '- 19/03 : sadek - en attendant #jnnmj',\n", - " '- 20/03 : fixpen sill, caballero, lomepal, meyso - fixpen singe (ep)',\n", - " '- 21/03 : rgf - the big three vol.2',\n", - " '- 24/03 : furax barbarossa - testa nera',\n", - " '- 30/03 : bazoo & goune - terminus',\n", - " '- 31/03 : black m - les yeux plus gros que le monde',\n", - " '- 31/03 : grödash - bandana & purple haze',\n", - " '- 31/03 : mac tyer - banger 2',\n", - " '- 31/03 : seyté et el chileno - a ciel ouvert',\n", - " 'avril :',\n", - " '- 02/04 : s.pri noir - 0.0.s. licence to kill',\n", - " '- 04/04 : tom kingue - cogito avant ergo sum',\n", - " \"- 06/04 : alkpote - l'orgasmixtape\",\n", - " '- 07/04 : loko & karna - décalages horaires',\n", - " '- 08/04 : vii - culte',\n", - " '- 09/04 : senamo et neshga - sennes',\n", - " '- 14/04 : dinos punchlinovic - apparences',\n", - " '- 14/04 : utopie - quid pro quo',\n", - " \"- 18/04 : davodka - l'art tisant (ep)\",\n", - " \"- 21/04 : ayna - héritage en attendant l'album #msml (ep)\",\n", - " '- 21/04 : bigflo & oli - le trac (ep)',\n", - " '- 21/04 : orgasmic & fuzati - grand siècle',\n", - " '- 25/04 : gros mo - fils de pute',\n", - " '- 28/04 : melan - vagabond de la rime ii',\n", - " '- 28/04 : metek - paris 75021 (mixtape)',\n", - " '- 28/04 : zekwe ramos - seleção 2',\n", - " '- 29/04 : beny le brownies - pre dora (ep)',\n", - " 'mai :',\n", - " '- 05/05 : révolution urbaine - cheval de troie',\n", - " '- 12/05 : abis - hall in',\n", - " '- 12/05 : coloquinte\\ufeff - camouflage studio',\n", - " '- 12/05 : dany dan & ol kainry - saison 2',\n", - " '- 12/05 : la smala - un murmure dans le vent',\n", - " '- 12/05 : le bon son - du bon son #1',\n", - " '- 12/05 : patee gee - oracle',\n", - " '- 12/05 : yo.k - optimum',\n", - " '- 13/05 : mani deïz - the cassette sunday',\n", - " '- 15/05 : eklips - monster',\n", - " '- 19/05 : beeby - quatre saisons vol. 1',\n", - " \"- 19/05 : georgio - à l'abri (ep)\",\n", - " \"- 19/05 : s-pi - les chroniques d'un gesteur & gentleman\",\n", - " '- 19/05 : tiers monde - toby or not toby',\n", - " '- 19/05 : visions sonores - visions sonores',\n", - " '- 20/05 : espiiem - cercle privé',\n", - " '- 26/05 : a2h - art de vivre',\n", - " \"- 26/05 : l'entourage - jeunes entrepreneurs\",\n", - " '- 26/05 : metek - riski',\n", - " '- 26/05 : odezenne - rien (en digital)',\n", - " \"- 26/05 : pand'or - dans ma boîte, vol.2\",\n", - " '- 26/05 : volts face - face à volts',\n", - " '- 29/05 : lucio bukowski & haymaker - golgotha (ep)',\n", - " '- 30/05 : ritzo - point zéro',\n", - " 'juin :',\n", - " '- 02/06 : joke - ateyaba',\n", - " '- 09/06 : kalif hardcore - vendredi 13',\n", - " '- 09/06 : niro - miraculé',\n", - " '- 09/06 : odezenne - rien (ep)',\n", - " '- 09/06 : la mannschaft - doucement mais sûrement',\n", - " '- 10/06 : 20syl - motifs (ep)',\n", - " '- 16/06 : luidji - station 999',\n", - " '- 16/06 : veerus - minuit',\n", - " '- 16/06 : mlc - vendetta',\n", - " '- 16/06 : jul - lacrizeomicmek',\n", - " '- 19/06 : juicy p - certifié vrai 2',\n", - " '- 20/06 : i.n.c.h. - ni saint ni sauf',\n", - " '- 21/06 : asocial club - toute entrée est définitive',\n", - " '- 27/06 : gaïden, kimble, faderbeaz & raheem - rorschach',\n", - " '- 27/06 : sadek - en attendant #jnnmj2',\n", - " '- 30/06 : fixpen sill - on verra plus tard',\n", - " '- 30/06 : kenyon - nouvel air',\n", - " \"- 30/06 : pand'or - dans ma boite (édition collector)\",\n", - " '- 30/06 : monstre marin corporation - la monster party - chapitre 1',\n", - " 'juillet :',\n", - " '- 02/07 : jeanjass & le seize - jean xvi',\n", - " '- 07/07 : taïro - street tape vol.4',\n", - " \"- 10/07 : l'argent de la drogue - no future\",\n", - " '- 13/07 : cause commune - i.a',\n", - " \"- 23/07 : lucio bukowski & nestor kéa - l'art raffiné de l'ecchymose\",\n", - " 'août :',\n", - " '-',\n", - " 'septembre :',\n", - " '- 01/09 : lacrim - corleone',\n", - " '- 03/09 : maj trafyk - petite prophétie',\n", - " '- 05/09 : give me five - dès le dépar vol.2',\n", - " '- 08/09 : soulkast - memento mori',\n", - " '- 15/09 : les chroniques du wati boss, vol.2 (compilation)',\n", - " '- 15/09 : lomepal - seigneur',\n", - " '- 29/09 : swift guad - la chute des corps',\n", - " '- 29/09 : chapsy - 3u',\n", - " '- 29/09 : stick - 1 mc 2 plus',\n", - " 'octobre :',\n", - " '- 03/10 : lacraps - machine à écrire',\n", - " '- 05/10 : lago de feu - lago lacuisse lebiff',\n", - " '- 06/10 : katana - le fourreau',\n", - " \"- 06/10 : l'algerino - aigle royal\",\n", - " '- 12/10 : népal - 16par16',\n", - " \"- 13/10 : hologram lo' - deeplodocus\",\n", - " '- 13/10 : soprano - cosmopolitanie',\n", - " '- 13/10 : paco - paco-errant',\n", - " '- 15/10 : reeno - en attendant mon album',\n", - " '- 19/10 : la race canine - k7k9',\n", - " '- 19/10 : lucio bukowski & mani deïz - ...',\n", - " '- 19/10 : ysha - ces gars: derrière les masques',\n", - " '- 20/10 : black kent - the college blackout (mixtape)',\n", - " '- 20/10 : criks - le calme avant la tempête (mixtape)',\n", - " '- 20/10 : maska - espace temps',\n", - " '- 20/10 : mr ogz - battements',\n", - " '- 24/10 : tito prince - les prémices de totination (ep)',\n", - " '- 27/10 : aladin 135 - a peine majeur',\n", - " '- 27/10 : greg frite - les gros mots de greg frite',\n", - " '- 27/10 : mer2crew - remise à flow',\n", - " '- 27/10 : quincy - point g (ep)',\n", - " '- 27/10 : vald - nqnt (ep)',\n", - " 'novembre :',\n", - " '- 02/11 : cultiz - cultiz ton beat',\n", - " '- 03/11 : akhenaton - je suis en vie',\n", - " '- 03/11 : jeanjass - goldman',\n", - " '- 03/11 : marin monster - marin monster',\n", - " '- 07/11 : ned - setup',\n", - " \"- 10/11 : hologram lo' & darryl zeuja - inner city\",\n", - " '- 14/11 : bazoo & goune - home tape',\n", - " '- 17/11 : black m - le monde plus gros que mes yeux',\n", - " \"- 17/11 : ibrahim maalouf & oxmo puccino - au pays d'alice\",\n", - " \"-17/11 : gueule d'ange - classico micro\",\n", - " '- 19/11 : lucio bukowski - tchouen (la difficulté initiale) (ep)',\n", - " '- 20/11 : phases cachées - phases b vol.2',\n", - " '- 24/11 : busta flex - soldat (ep)',\n", - " '- 24/11 : la fouine - capitale du crime vol.4',\n", - " '- 24/11 : jarod - frappe préventive',\n", - " '- 26/11 : nem - lignes de fuite',\n", - " 'décembre :',\n", - " '- 01/12 : black kent & dj myst - la kentessence vol.1 (mixtape)',\n", - " '- 01/12 : skreally boy - karma (ep)',\n", - " '- 01/12 : caballero - le pont de la reine (ep)',\n", - " '- 01/12 : rochdi - blue tape',\n", - " '- 01/12 : xv barbar - instinct animal',\n", - " '- 08/12 : mani deiz - cupcakes',\n", - " '- 10/12 : sameer ahmad - perdants magnifiques',\n", - " '- 14/12 : romeo elvis - famille nombreuse',\n", - " '- 15/12 : guizmo - dans ma ruche',\n", - " \"- 18/12 : sam's - gestelife révolution\",\n", - " '- 25/12 : népal - 16par16 (remix)',\n", - " 'wight is wight',\n", - " 'dylan is dylan',\n", - " 'wight is wight',\n", - " 'viva donovan',\n", - " \"c'est comme un soleil\",\n", - " 'dans le gris du ciel',\n", - " 'wight is wight',\n", - " 'hippie, hip hip hip',\n", - " 'hip hip hip',\n", - " 'hip hip hip',\n", - " \"ils sont arrivés dans l'île nue\",\n", - " 'sans un bagages et les pieds nus',\n", - " 'comme un cyclone inattendu',\n", - " 'comme une fleur avant la saison',\n", - " 'comme une pluie de papillons',\n", - " 'a laquelle on a jamais cru',\n", - " 'wight is wight',\n", - " 'dylan is dylan',\n", - " 'wight is wight',\n", - " 'viva donovan',\n", - " \"c'est comme un soleil\",\n", - " 'dans le gris du ciel',\n", - " 'wight is wight',\n", - " 'hippie, hip hip hip',\n", - " 'hip hip hip',\n", - " 'hip hip hip',\n", - " \"toi qui a voulu t'emprisonner\",\n", - " 'as-tu le droit de condamner',\n", - " \"celui qui cherche à s'évader ?\",\n", - " 'chacun mène sa vie comme il veut',\n", - " 'tu ne peux plus baisser les yeux',\n", - " 'car aussi vrai que tu es né',\n", - " 'wight is wight',\n", - " 'dylan is dylan',\n", - " 'wight is wight',\n", - " 'viva donovan',\n", - " \"c'est comme un soleil\",\n", - " 'dans le gris du ciel',\n", - " 'wight is wight',\n", - " 'hippie, hip hip hip',\n", - " 'hip hip hip',\n", - " 'hip hip hip',\n", - " 'wight is wight',\n", - " 'dylan is dylan',\n", - " 'wight is wight',\n", - " 'viva donovan',\n", - " \"c'est comme un soleil\",\n", - " 'dans le gris du ciel',\n", - " 'wight is wight',\n", - " 'hippie, hip hip hip',\n", - " 'hip hip hip',\n", - " 'hip hip hip',\n", - " 'wight is wight',\n", - " 'dylan is dylan',\n", - " 'wight is wight',\n", - " 'viva donovan',\n", - " \"c'est comme un soleil\",\n", - " 'dans le gris du ciel',\n", - " 'wight is wight',\n", - " 'hippie, hip hip hip',\n", - " 'hip hip hip',\n", - " 'hip hip hip...',\n", - " 'riding on the city of new orleans',\n", - " 'illinois central monday morning rail',\n", - " 'fifteen cars and fifteen restless riders',\n", - " 'three conductors and twenty-five sacks of mail',\n", - " 'all along the southbound odyssey',\n", - " 'the train pulls out at kankakee',\n", - " 'rolls along past houses, farms and fields',\n", - " \"passin' trains that have no names\",\n", - " 'freight yards full of old black men',\n", - " 'and the graveyards of the rusted automobiles',\n", - " 'good morning america how are you?',\n", - " \"don't you know me i'm your native son\",\n", - " \"i'm the train they call the city of new orleans\",\n", - " \"i'll be gone five hundred miles when the day is done\",\n", - " 'les matins se suivent et se ressemblent',\n", - " \"quand l'amour fait place au quotidien\",\n", - " \"on n'était pas fait pour vivre ensemble\",\n", - " \"ça n'suffit pas de toujours s'aimer bien\",\n", - " \"c'est drôle, hier, on s'ennuyait\",\n", - " \"et c'est à peine si l'on trouvait\",\n", - " 'des mots pour se parler du mauvais temps',\n", - " \"et maintenant qu'il faut partir\",\n", - " 'on a cent mille choses à dire',\n", - " \"qui tiennent trop à c'ur pour si peu de temps\",\n", - " \"on s'est aimé comme on se quitte\",\n", - " 'tout simplement sans penser à demain',\n", - " 'a demain qui vient toujours un peu trop vite',\n", - " 'aux adieux qui quelques fois se passent un peu trop bien',\n", - " \"on s'est aimé comme on se quitte\",\n", - " 'tout simplement sans penser à demain',\n", - " \"i'm the train they call the city of new orleans\",\n", - " \"i'll be gone five hundred miles when the day is done\",\n", - " \"girl, don't you wanna dance right now?\",\n", - " 'je sais que je peux le faire',\n", - " \"don't you wanna dance right now?\",\n", - " \"avec toi je m'envole, je quitte la terre\",\n", - " \"je n'ai plus peur de prendre la lumière\",\n", - " 'tu poses un regard sur moi, je me révèle',\n", - " \"je pourrais défier le monde si c'est toi qui m'appelles\",\n", - " 'et si je, et si je tombe',\n", - " 'je sais que tu pardonneras tous mes faux pas',\n", - " 'même à bout de bras',\n", - " \"c'est toi qui me relèveras\",\n", - " \"j'ai toujours eu si peur\",\n", - " 'et quand je danse pour toi, pour nous',\n", - " \"don't make me say it again\",\n", - " \"(don't you wanna dance right now?)\",\n", - " '(get up)',\n", - " \"tu m'aides à briser chaînes\",\n", - " \"(don't you wanna dance right now?)\",\n", - " '(get up)',\n", - " 'nothing can stop you',\n", - " 'but you, you , you',\n", - " \"tu m'aides à briser chaînes\",\n", - " 'parce que je danse pour nous, nous, nous',\n", - " 'je sais que je peux le faire',\n", - " 'i see it inside you',\n", - " \"i know that it's there\",\n", - " 'i know that you want it',\n", - " '(you know that i want it)',\n", - " \"i can tell that you're scared\",\n", - " \"(je n'ai plus peur)\",\n", - " \"but we're already here\",\n", - " \"it's all ready now\",\n", - " 'and you gotta get up',\n", - " 'if you wanna get down',\n", - " 'you can dance',\n", - " '(i can dance)',\n", - " 'if you wanna dance',\n", - " '(i wanna dance)',\n", - " 'get up and dance',\n", - " '(i get up and dance)',\n", - " 'you can move',\n", - " '(i can move)',\n", - " 'all you gotta do',\n", - " '(i gotta do)',\n", - " 'is get up and move',\n", - " \"don't make me say it again\",\n", - " \"(don't you wanna dance right now?)\",\n", - " '(get up)',\n", - " \"tu m'aides à briser chaînes\",\n", - " \"(don't you wanna dance right now?)\",\n", - " '(get up)',\n", - " 'nothing can stop you',\n", - " 'but you, you , you',\n", - " \"tu m'aides à briser chaînes\",\n", - " 'parce que je danse pour nous, nous, nous',\n", - " 'see this battle that you fight',\n", - " 'and this enemy you face is yourself',\n", - " \"said it's all on you girl\",\n", - " 'if your victory is yours',\n", - " 'then you gotta go and get it',\n", - " \"it's not up to me already or anyone else\",\n", - " \"it's gotta be you you you\",\n", - " \"j'ai toujours eu si peur\",\n", - " 'et quand je danse pour toi, pour nous',\n", - " \"don't make me say it again\",\n", - " \"don't make me say it again\",\n", - " \"(don't you wanna dance right now?)\",\n", - " '(get up)',\n", - " \"tu m'aides à briser chaînes\",\n", - " \"(don't you wanna dance right now?)\",\n", - " '(get up)',\n", - " 'nothing can stop you',\n", - " 'but you, you , you',\n", - " \"tu m'aides à briser chaînes\",\n", - " 'parce que je danse pour nous, nous, nous',\n", - " 'on ne recule devant rien, ni le mal, ni le bien',\n", - " \"c'est une histoire sans fin à chaque fois\",\n", - " \"cette sensation d'indifférence, soif de reconnaissance\",\n", - " \"qu'on traine depuis l'enfance à chaque fois\",\n", - " \"it's about you, it's about me, it's behind you, it's behind me\",\n", - " \"it's about you, it's about me, last zoom on our love\",\n", - " \"it's about you, it's about me, because of you, because of me\",\n", - " \"it's about you, last zoom on our love\",\n", - " 'on ne se souvient de rien, on prend le même chemin',\n", - " 'on pousse encore plus loin à chaque fois',\n", - " \"cette sensation d'enfermement, de vide et d'isolement\",\n", - " \"entre nous l'océan à chaque fois\",\n", - " \"it's about you, it's about me, it's behind you, it's behind me\",\n", - " \"it's about you, it's about me, last zoom on our love\",\n", - " \"it's about you, it's about me, because of you, because of me\",\n", - " \"it's about you, last zoom on our love\",\n", - " 'des mots dans ma bouche que tes yeux me soufflent',\n", - " \"redessinent à l'encre noir les contours de notre histoire\",\n", - " 'l’euphorie des jours est passée par nous déjà',\n", - " 'on a fait le tour, on a franchi le delta',\n", - " 'y-a-t-il un antidote au poison des détails?',\n", - " 'nos cœurs qui s’érodent',\n", - " 'c’est le temps qui les entaille, entaille, entaille',\n", - " 'plus rien ne m’agite',\n", - " 'une étincelle, ou je m’éteins sans toi',\n", - " 'plus rien ne m’agite',\n", - " 'si ta peau hésite',\n", - " 'prends moi la flamme et je brûle avec toi',\n", - " 'si ta peau hésite',\n", - " 'and i know',\n", - " 'your fire took away my pride',\n", - " \"and it's burning down inside\",\n", - " 'and i know',\n", - " 'that only you can turn the tide',\n", - " 'lift me up and make me glide',\n", - " 'oh oh oh oh',\n", - " 'viens le temps des anges',\n", - " 'qui nous ramène en arrière',\n", - " 'on goûte aux mensonges',\n", - " 'la vérité est amère, amère, amère',\n", - " 'juste à la limite',\n", - " 'entre la queue et les envies d’encore',\n", - " 'juste à la limite',\n", - " 'si ta peau me quitte',\n", - " 'que reste-t-il pour faire chanter mon corps',\n", - " 'si ta peau me quitte',\n", - " 'x3',\n", - " 'and i know',\n", - " 'that only you can turn the tide',\n", - " 'lift me up and make me glide',\n", - " 'that only you can turn the tide',\n", - " 'lift me up and make me glide',\n", - " 'la.i.la.i.la.i.la.i.la.i.la.i.la',\n", - " \"tire tire l'aiguille ma fille\",\n", - " 'la.i.la.i.la.i.la.i.la.i.la.i.la',\n", - " \"tire tire l'aiguille ma fille\",\n", - " \"tire tire l'aiguille ma fille\",\n", - " \"tire tire tire l'aiguille ma fille\",\n", - " 'demain demain tu te marie mon amie',\n", - " \"tire tire tire l'aiguille ma fille\",\n", - " 'ta robe doit etre finie',\n", - " 'sous tes doigts naissent des fleurs',\n", - " 'lettres de paillettes, de diamants',\n", - " \"diademe d'orangers porte par mere\",\n", - " 'est entre les mains de ta maman',\n", - " 'ta chambre est couverte de petits bouts de soie',\n", - " \"le chat sur le tapis s'en donne a coeur joie\",\n", - " 'pres du feu qui danse, le fauteuil se balance',\n", - " 'et berce ton pere endormi',\n", - " 'ta maman sans dire mot',\n", - " 'acheve de plier ton trousseau',\n", - " 'ton papa saura demain, apres le bal',\n", - " \"qu'un mariage coute bien du mal\",\n", - " 'la lumiere de la lampe fume et chancelle',\n", - " \"tes yeux se couvrent d'un rideau de dentelles\",\n", - " 'ne les laisse pas se fatiguer mon amie',\n", - " 'demain, il faut etre jolie',\n", - " \"et quand l'orgue chantera\",\n", - " \"lorsqu'enfin tu lui prendras le bras\",\n", - " \"puissent des millions d'etoiles au fil des heures\",\n", - " 'semer votre route de bonheur',\n", - " 'mon général?',\n", - " 'oui',\n", - " 'si la france est envahie, que faites-vous?',\n", - " 'et bien, je pars immédiatement à londres',\n", - " 'a londres? mais pourquoi?',\n", - " 'ben pour faire un appel',\n", - " 'et vous diriez quoi?',\n", - " 'mon général (mon général, mon général)',\n", - " 'i am the général bébé',\n", - " 'come on and join my army',\n", - " 'you, my little soldier',\n", - " 'come on and make a war of love with me',\n", - " 'i am your général, général of love',\n", - " 'come on my little soldier',\n", - " \"let's play together\",\n", - " 'a war of love',\n", - " 'come on and join me in my army',\n", - " 'come on and join me in my army',\n", - " 'mon général (mon général, mon général)',\n", - " 'you my little love soldier',\n", - " 'my little love soldier',\n", - " '(war of love)',\n", - " 'you are my little love',\n", - " '(war of love)',\n", - " \"let's play together soldier\",\n", - " '(libre, libre)',\n", - " \"let's play my love\",\n", - " 'the war of love',\n", - " '(car il est absurde de considérer la lutte comme perdue)',\n", - " 'my love soldier',\n", - " 'i am your général baby',\n", - " 'come on and join me in my army',\n", - " 'you are my little love soldier',\n", - " \"let's play together a war of love\",\n", - " 'just fuck, just fuck, just fuck',\n", - " 'the look in her eyes',\n", - " 'the blush on her cheeks',\n", - " \"she's got the sexiest lips\",\n", - " 'the way that she tromps',\n", - " 'reveals her perfect hips',\n", - " \"she's really a beauty\",\n", - " 'ohhhh i think i love you, ouahouh',\n", - " \"ohhhh i don't know how to, ouahouh\",\n", - " 'écoute-moi bien chéri',\n", - " \"je n'ai pas toute la nuit\",\n", - " 'toi tu parles depuis des heures',\n", - " \"et moi je pars dans un quart d'heure\",\n", - " \"j'dois prendre l'avion, j'rentre à new york\",\n", - " \"so, why don't we just fuck ?\",\n", - " 'just fuck, just fuck, just fuck',\n", - " \"so, why don't we just fuck ?\",\n", - " 'just fuck, just fuck, fuck',\n", - " 'écoute-moi bien garçon',\n", - " \"t'es plutôt bien mignon\",\n", - " 'sers-moi un dernier verre',\n", - " \"qu'on puisse commencer nos affaires\",\n", - " \"tout c'que tu dis, tu sais j'm'en moque\",\n", - " \"so, why don't we just fuck ?\",\n", - " 'just fuck, just fuck, fuck',\n", - " 'ça me monte dans la tête',\n", - " 'ce, ce soir je vais te faire la fête',\n", - " \"allez bébé, partons d'ici\",\n", - " \"s'te plait appelle-nous un taxi\",\n", - " \"si tu savais comme j'ai envie\",\n", - " 'ohhhh i think i love you, ouahouh',\n", - " \"ohhhh i don't know how to, ouahouh\",\n", - " \"attends je donne l'adresse\",\n", - " 'mais tu regardes pas mes fesses',\n", - " \"t'as la chance bébé ce soir\",\n", - " \"regarde j'ai pris mes accessoires\",\n", - " \"allez, viens, j't'ammène à new york\",\n", - " \"so, why don't we just fuck ?\",\n", - " 'just fuck, just fuck, allez, just fuck, viens',\n", - " \"so, why don't we just fuck ?\",\n", - " 'just fuck, just fuck, just fuck',\n", - " \"so, why don't we just fuck ?\",\n", - " 'i went down to the river',\n", - " 'but the river was dry',\n", - " 'i went down to the sea',\n", - " 'but it was not the place to be',\n", - " 'so i climbed the highest mountain',\n", - " 'and i climbed to the mountaintop',\n", - " 'girl, i found me a home',\n", - " \"and i don't have to roam\",\n", - " 'au bord de la riviére',\n", - " 'mais la riviére était sèche',\n", - " 'au bord de la mer gras',\n", - " \"n'était pas la place pour moi\",\n", - " 'je trouve la plus haute montagne',\n", - " 'mais la montagne était trop haute',\n", - " \"oh j'ai trouvé mon foyer\",\n", - " 'il faut plus me promener',\n", - " 'well i went down to the river',\n", - " 'but the river was dry',\n", - " 'i went down to the sea',\n", - " 'but it was not the place to be',\n", - " 'so i climbed the highest mountain',\n", - " ...]},\n", - " 'r-b': {'meta': {'train_data': ['...mais je ne veux pas marcher avec toi sur mon dos',\n", - " \"c'est difficile pour moi de respirer\",\n", - " 'tous les garçons sont comme les chiens',\n", - " 'et tous les chiens sont les mêmes',\n", - " \"je n'écoute plus ce que tu as à dire\",\n", - " 'bloody marie antoinette',\n", - " \"i'm just tryna build a marie and a vet\",\n", - " \"'cause all the boys bark like dogs\",\n", - " \"and the cats grabbin' palms\",\n", - " \"i'm just tryna find a fairy and a jet\",\n", - " 'bloody marie antoinette',\n", - " \"i'm just tryna build a marie and a vet\",\n", - " \"'cause all the boys bark like dogs\",\n", - " \"and the cats grabbin' palms\",\n", - " \"i'm just tryna find a fairy and a jet\",\n", - " 'bloody marie antoinette',\n", - " \"i'm just tryna build a marie and a vet\",\n", - " \"'cause all the boys bark like dogs\",\n", - " \"and the cats grabbin' palms\",\n", - " \"i'm just tryna find a fairy and a jet\",\n", - " 'had to call my momma off the weekend',\n", - " 'let me be with you',\n", - " 'let me be with you',\n", - " 'avec toi je me sens bien, oh je me sens moi',\n", - " 'je me réveille chaque matin en pensant à toi',\n", - " 'je veux bâtir un monde à nous, tu seras mon roi',\n", - " \"je remercie le ciel de m'avoir guidée jusqu'à toi\",\n", - " \"avec toi je me sens forte, je n'ai peur de rien\",\n", - " 'peu importe qui se mettra sur notre chemin',\n", - " \"c'est avec toi que je me vois grandir chaque jour\",\n", - " \"dans tes bras j'aime me blottir, et ça pour toujours\",\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " \"avec toi le temps qui passe ne m'effraie pas\",\n", - " 'il me suffit de fermer les yeux et tu es là',\n", - " 'avec toi je veux croire aux promesses',\n", - " 'que la vie me fait',\n", - " \"j'ai l'impression de te connaître\",\n", - " 'depuis des années',\n", - " \"je n'ai pas assez de mots pour te dire oh combien je t'aime\",\n", - " 'chaque mot que tu prononces sonne comme un poème',\n", - " 'comme un ange tombé du ciel, tu veilles sur moi',\n", - " 'je ne veux plus jamais, plus jamais, plus jamais, être loin de toi',\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " 'just you and me, love will always love forever',\n", - " \"just you and me, i just hope we'll stay together\",\n", - " 'just you and me, you my one and only lover',\n", - " 'just you and me, just you and me',\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " 'let me be with you, let me be with you',\n", - " 'let me be with you',\n", - " \"j'ai pas ma place dans tes nuits solitaires\",\n", - " 'tes sourires amères',\n", - " \"j'essaie de capter ton atmosphère\",\n", - " 'je retombe en arrière',\n", - " \"comme une ombre , une éclipse tu t'éloignes de moi\",\n", - " 'et mon âme se consume, je me noie',\n", - " 'je deviens fou',\n", - " 'and i feel like i can go on',\n", - " 'and i feel like it’s going strong',\n", - " 'and i wonder, and i wonder',\n", - " 'and i feel like i can go on',\n", - " 'and i feel like it’s going strong',\n", - " 'and i wonder, and i wonder',\n", - " \"j'ai pas trouvé mon chemin dans ton brouillard\",\n", - " \"et j'en crève encore\",\n", - " \"je t'ai cherchée si longtemps au hasard\",\n", - " 'que je perds le nord',\n", - " 'comme une histoire qui glisse, tu t’éloignes de nous',\n", - " \"tu me condamnes et j'assume mais j'avoue\",\n", - " 'je deviens fou',\n", - " 'and i feel like i can go on',\n", - " 'and i feel like it’s going strong',\n", - " 'and i wonder, and i wonder',\n", - " 'and i feel like i can go on',\n", - " 'and i feel like it’s going strong',\n", - " 'and i wonder, and i wonder',\n", - " \"comme une ombre , une éclipse tu t'éloignes de moi\",\n", - " 'et mon âme se consume, je me noie',\n", - " 'comme une histoire qui glisse, tu t’éloignes de nous',\n", - " \"tu me condamnes et j'assume mais j'avoue\",\n", - " 'je deviens fou',\n", - " 'and i feel like i can go on',\n", - " 'and i feel like it’s going strong',\n", - " 'and i wonder, je deviens fou, and i wonder',\n", - " 'and i feel like i can go on',\n", - " 'and i feel like it’s going strong',\n", - " 'and i wonder, je deviens fou, and i wonder',\n", - " 'and i feel like i can go on',\n", - " 'and i feel like it’s going strong',\n", - " 'and i wonder, and i wonder',\n", - " 'couplet 1 (youcef dark)',\n", - " 'yeah , makech salem alikoum majitch anaya nveyes',\n", - " 'manich jdid alikoum ki tchoufni sur tmeyez',\n", - " \"b'klam masmoum baroud, f'sma makech houdoud\",\n", - " \"b'akliya jdida chriki rassek yahbet fi my hood\",\n", - " 'maken hata kanoun men ghir hamou rabi',\n", - " 'maken hata protocole, ta3ref el monopole',\n", - " 'klami klam chari3 , ta3ref sira bera',\n", - " 'khatina kho lakhlaye3 yek machi rojlat el hamra',\n", - " 'manich number one bessah wlid rap',\n", - " 'tal3ouni mes principes, tay7atni kothrat las7ab',\n", - " 'so7ba el kemya sahbi, takhles fe cendrier',\n", - " 'soumtek fe soug rkhissa, kima les faux billet',\n", - " 'twaswissek khalih andek kamel malade mentale',\n", - " \"navigué toul nhar fe'lil n'viser les étoiles\",\n", - " 'zawali wlid trig mechni wlid général',\n", - " 'zankawi youcef dark à la malala yousafzai',\n", - " 'couplet 2 (youcef dark)',\n", - " 'yeah, makech la démocratie, kayen la demo-écraser',\n", - " 'makech el vide fi rassi mana3refch la diplomatie',\n", - " \"mani nhawes 3el'visa, nhawes ana 3la el-3iza\",\n", - " \"khali nza3ef denia ou nfare7 yema la'3ziza\",\n", - " \"yek lazem t'combaté kima torro fi la corrida\",\n", - " 'kbel ma tazdem contrôler bech tivité alik les dégâts',\n", - " 'kima la vida loca, ma vie kanet mahlouka',\n", - " 'khali ton avi andek ana natle3 douga douga',\n", - " 'takhmemi bezaf el fou9a, mana3yech kayen espoir',\n", - " 'kelma kima rssassa haba wahda fi bit nar',\n", - " 'koulma derna kalma jamra mekra fe les bâtards',\n", - " \"yel mas'oul y on a mare, mel hogra y on a mare\",\n", - " 'fe zanka nebka dima machikitch ana na7mel',\n", - " 'dhel capable haka nahbel nkamel sem yamchi fe dem',\n", - " \"b'zbel za3ma haka nakder hareb f9or wana mkhader\",\n", - " 'matatweder fel hem takhder ou tetkerker fiha bel mor',\n", - " 'couplet 3 (maglive)',\n", - " 'denia dhi welat mghabra, les jeunes mkhadra',\n", - " \"el'biban msakra, el'3aklia mwadra\",\n", - " \"m3abia zetla, el'blad hadi\",\n", - " 'makech li hab el khir gharka fi bir',\n", - " 'on cherche le bonheur on trouve le malheur',\n", - " 'we come in smooth, with hard decibels',\n", - " 'my guns will shoot',\n", - " 'they will shoot you down, shoot you down',\n", - " 'if you try to move, try to be deceiving',\n", - " 'my guns will shoot',\n", - " 'they will shoot you down, shoot you down',\n", - " 'pedro',\n", - " 'are you scared to walk alone, eu caminho contigo',\n", - " 'no, you can stand on your own, mas és o meu amigo',\n", - " 'that means i bleed when you do',\n", - " \"i care for my crew, if they ever come out and it's blu samu\",\n", - " 'hello hello, how do you do-oh-oh',\n", - " 'you better not come in here being blue',\n", - " 'acabo contigo',\n", - " 'isto é a minha família',\n", - " 'castiga',\n", - " 'quem não nos quer bem',\n", - " 'but i walk with kings',\n", - " 'we sting and buy back',\n", - " 'if you bring your ass',\n", - " 'to a cartier, with disrespect',\n", - " 'lay down bitch, you made your bet',\n", - " 'hi',\n", - " 'e lembra-se de todos, da blu e o sete sete',\n", - " 'todos',\n", - " 'suerte, la suerte no existe',\n", - " 'cambiar mi vida para estar el jefe',\n", - " 'mi corazon esta formando siete siete',\n", - " 'blu, morgan, rayan, félé flingue tu vas respecter',\n", - " \"depuis tout petit j'suis dans l'ciel\",\n", - " 'comme darrell, on veut tous la présidentielle',\n", - " \"j'marche droit, j'suis clean à part des bières et quelques bédos\",\n", - " \"mais plus j'grandis plus j'pense à faire du sale pour faire plus de zéros\",\n", - " \"j'lâcherai pas l’affaire j'continuerai à chanter\",\n", - " \"toutes les langues qu’on pourra réunir sur l'papier\",\n", - " \"j'lâcherai pas l’affaire j'continuerai à chanter\",\n", - " \"toutes les langues qu’on pourra réunir sur l'papier\",\n", - " 'a minha mãe me dizia',\n", - " 'quando era pequena',\n", - " 'até ao último dia',\n", - " 'se protege a família ah-ah-ah',\n", - " 'we come in smooth, with hard decibels',\n", - " 'my guns will shoot',\n", - " 'they will shoot you down, shoot you down',\n", - " 'if you try to move, try to be deceiving',\n", - " 'my guns will shoot',\n", - " 'they will shoot you down, shoot you down',\n", - " 'ouuuuh!',\n", - " 'el rey mago',\n", - " 'appelle wizkid',\n", - " 'chérie na ngai eh (go go !)',\n", - " 'chérie na ngai eh (go go !)',\n", - " 'chérie na ngai eh',\n", - " 'go chérie, go baby, allez maman',\n", - " 'le matin, la journée, même le soir',\n", - " 'la piscine, la voiture et avion tu kiffes ça',\n", - " \"mon bébé, t’inquiètes pas j'assure tes arrières\",\n", - " \"regarde-moi et dis-moi fally yak'o boire jus !\",\n", - " 'tala ngai na misu appelle-moi bébé',\n", - " 'wana ngai na komi zoba aaaaaah !',\n", - " 'when you give me love, i give you love too',\n", - " 'when you do me good, i do you good too',\n", - " 'when you hold me down, i hold you down too',\n", - " 'never leave me alone, never leave me alone (never)',\n", - " 'yo chérie na ngai (cherie na ngai eeh)',\n", - " 'yo bébé na ngai (cherie na ngai eeh)',\n", - " 'yo cherie na ngai (cherie na ngai eeh)',\n", - " 'oza bébé na ngai',\n", - " 'love you, love you, love you',\n", - " \"when you touch me girl i'm outta control\",\n", - " \"when you hold me girl i'm straight in the zone\",\n", - " \"when you kiss me gyal you killin' me so\",\n", - " \"when you leave me gyal i'm gone\",\n", - " \"love the way you dancin' no way\",\n", - " \"baby gyal don't leave me no way\",\n", - " 'gimme that love you today',\n", - " 'let you go got no way (starboy)',\n", - " 'when you give me love, i give you love too',\n", - " 'when you do me good, i do you good too',\n", - " 'when you hold me down, i hold you down too',\n", - " 'never leave me alone, never leave me alone (never)',\n", - " 'yo chérie na ngai (cherie na ngai eeh)',\n", - " 'yo bébé na ngai (cherie na ngai eeh)',\n", - " 'yo cherie na ngai (cherie na ngai eeh)',\n", - " 'oza bébé na ngai',\n", - " 'mon bébé est devenu maestro (mama na kufi eh)',\n", - " 'mon bébé est devenu yakuza eh (mama na kufi eh)',\n", - " 'my baby become maestro (mama na kufi eh)',\n", - " 'my baby become yakuza eh (mama na kufi eh)',\n", - " 'chérie a bongwani elingani oh nga eh (mama na kufi eh)',\n", - " 'a lemboli ngai na nzoto (mama na kufi eh)',\n", - " 'a komisi ngai piscine (mama na kufi eh)',\n", - " 'mon bébé est devenu maestro ooh',\n", - " 'when you give me love, i give you love too',\n", - " 'when you do me good, i do you good too',\n", - " 'when you hold me down, i hold you down too',\n", - " 'never leave me alone, never leave me alone (never)',\n", - " 'yo chérie na ngai (cherie na ngai eeh)',\n", - " 'yo bébé na ngai (cherie na ngai eeh)',\n", - " 'yo cherie na ngai (cherie na ngai eeh)',\n", - " 'oza bébé na ngai',\n", - " '(intro)',\n", - " 'we wanna sing a song for love',\n", - " 'for love',\n", - " 'it’s all about the real love !',\n", - " '(refrain)',\n", - " 'love is the meaning, oh just a feeling yeah',\n", - " 'everything and more',\n", - " 'your heart is perfect',\n", - " 'twisted and manic',\n", - " 'open up the door !',\n", - " 'love i know',\n", - " 'eager to survive',\n", - " 'all alone and where you go',\n", - " 'means to stay alive !',\n", - " '(couplet 1)',\n", - " \"même l'âme en peine, je ne baisse jamais les bras\",\n", - " \"car partager l'amour au final c'est ce qu'on fait là !\",\n", - " 'chacun sa part, même infime, en agissant autour de soi',\n", - " \"tous maîtres d'une part du monde donc responsables de son état\",\n", - " \"chaque battement d'ailes a ses conséquences\",\n", - " \"comme l'effet papillon toutes nos actions ont un sens\",\n", - " 'même un regard a son influence',\n", - " 'tout peut se provoquer même la moindre coïncidence',\n", - " 'love this life, open your heart!',\n", - " 'ouvrir son cœur, c’est peut être le but de notre existence ?',\n", - " 'free your mind, open your eyes !',\n", - " \"partir ailleurs c'est laisser à l'inconnu une chance\",\n", - " \"je veux croire en l'humain malgré nos déceptions\",\n", - " 'pas besoin de leurs bouquins pour juger nos actions',\n", - " \"ceux qui veulent faire le bien n'ont pas de distinctions\",\n", - " \"viens refaire ce refrain qu'ils comprennent bien la chanson!\",\n", - " '(refrain)',\n", - " 'love is the meaning',\n", - " 'or just a feeling',\n", - " 'everything and more',\n", - " 'your heart is perfect',\n", - " 'twisted and manic',\n", - " 'open up the door !',\n", - " 'love i know',\n", - " 'eager to survive',\n", - " 'all alone and where you go',\n", - " 'means to stay alive !',\n", - " '(couplet 2)',\n", - " 'see, the stars not far away',\n", - " 'start walking slowly, stop sailing in vain, like a boat in a mayday',\n", - " 'surrender your soul, life’s a mystery',\n", - " 'love let your heart loose, wild in the storm and shackles free !',\n", - " 'all in your head, it’s all in your head !',\n", - " 'you know, you are your own worst enemy',\n", - " 'you think you’re dead',\n", - " 'just smash up your meds !',\n", - " 'trust yourself to give up, finally',\n", - " 'you’re writing your story',\n", - " 'concealing so much pain, you’re on the run',\n", - " 'guilty and sorry',\n", - " 'don’t stop breathing, dancing, having fun !',\n", - " 'et tous ces sentiments qui restent nous accompagnent',\n", - " 'ce qu’il y a dans nos cœurs tu sais jamais ne fane',\n", - " 'fermés depuis longtemps il faut ouvrir les vannes',\n", - " 'et ne plus avoir peur du temps qui s’éloigne',\n", - " 'love this life, open your heart !',\n", - " 'feel the vibes, move pon dis freestyle !',\n", - " 'free your mind, open your eyes, feel the vibes !',\n", - " '(refrain)',\n", - " 'love is the meaning',\n", - " 'or just a feeling',\n", - " 'everything and more',\n", - " 'your heart is perfect',\n", - " 'twisted and manic',\n", - " 'open up the door !',\n", - " 'love i know',\n", - " 'eager to survive',\n", - " 'all alone and where you go',\n", - " 'means to stay alive !',\n", - " '(outro)',\n", - " 'we wanna sing a song for love (bis)',\n", - " 'it’s all about the real love ! (bis)',\n", - " 'love is the meaning, oh just a feeling yeah',\n", - " 'everything and more',\n", - " 'your heart is perfect',\n", - " 'twisted and manic',\n", - " 'open up the door !',\n", - " 'love i know',\n", - " 'eager to survive',\n", - " 'all alone and where you go',\n", - " 'go to stay alive !',\n", - " 'they say you better run',\n", - " 'now you know you better run',\n", - " 'running for this place',\n", - " 'searching for my home',\n", - " 'gonna leave my mother land',\n", - " 'finding my own space',\n", - " 'i believe in tomorrow',\n", - " 'what else can i say ?',\n", - " 'and my road is so narrow',\n", - " \"there's no run away\",\n", - " 'wake up in the morning',\n", - " 'must find a shelter everyday',\n", - " \"today i'm crying\",\n", - " 'but tomorow is another day',\n", - " 'i hope now',\n", - " 'my family will settle down',\n", - " 'i know now',\n", - " 'the road will be long',\n", - " 'tous citoyens du monde mais je repose la question :',\n", - " 'qui a posé ces frontières, qui prend les décisions ?',\n", - " \"qui légitime qu'un peuple soit accepté ou non ?\",\n", - " 'quelle échelle de valeur entre civilisations ?',\n", - " 'car laisser tous les siens pour fuir sa condition',\n", - " 'se perdre sur le chemin de ses rêves et ambitions',\n", - " 'risquer sa vie chaque pas pour garder sa direction',\n", - " \"reste le quotidien d'un homme quittant sa nation\",\n", - " 'les gens sont si étranges quand tu es étranger',\n", - " \"et le regard de l'autre est si souvent sans pitié !\",\n", - " 'sentir que tu déranges, personne ne veut se mélanger',\n", - " 'et à la moindre faute, se laisser submerger',\n", - " \"traverser l'océan, les tempêtes\",\n", - " \"le souffle du vent jamais ne s'arrête\",\n", - " \"refugees my people don't give up\",\n", - " 'struggle everyday',\n", - " \"can't you see, poor people raise up\",\n", - " 'find their way to a better day',\n", - " 'keeping strong they never give up, i say',\n", - " 'struggle everyday',\n", - " 'no matter what they say',\n", - " 'wake up in the morning',\n", - " 'must find a shelter everyday',\n", - " \"i'm crying\",\n", - " 'tomorow is another day',\n", - " 'i hope now',\n", - " 'my family will settle down',\n", - " 'i know now',\n", - " 'the road will be long']},\n", - " 'data': ['oh-ooh, oh, oh, oh, oh, oh-ooh, oh',\n", - " 'la semaine est longue',\n", - " 'oui le temps me manque',\n", - " 'je veux voir du monde',\n", - " \"l'adrénaline monte\",\n", - " \"j'ai l'impression d'être le chaînon manquant\",\n", - " 'il me faut caresser la liberté sans gants',\n", - " 'il me faut un dj monstrueux ce soir',\n", - " 'danser pour sortir le stress de mon corps',\n", - " \"on ne vit qu'une fois\",\n", - " \"c'est ce qu'on m'a dit\",\n", - " 'je veux donner de la voix',\n", - " \"la piste m'attire\",\n", - " 'un son nostalgique pour voyager hier',\n", - " \"t'as pas rêvé de planer jette moi la première pierre\",\n", - " \"j'appelle les filles on se comprend comme des jumelles\",\n", - " 'on est fraîches, folles et belles',\n", - " \"et les lumières nous douchent on s'éclate\",\n", - " 'je veux des \"oh\"',\n", - " 'je veux des \"hey\"',\n", - " 'je veux des',\n", - " 'avec mon groupe',\n", - " 'on fait le mystères',\n", - " 'on est les masters',\n", - " 'du step by step',\n", - " 'music is the odyssey (yeah)',\n", - " \"it's here for you for me\",\n", - " 'just listen from the magic key',\n", - " 'music is the odyssey (yeah)',\n", - " \"it's here for you for me\",\n", - " 'just listen, let your life be free',\n", - " 'ils sont la pour pecho',\n", - " 'on est là pour faire le show',\n", - " 'il commence à se faire tard',\n", - " 'il commence à faire chaud',\n", - " 'i text my man, i lost my mind',\n", - " \"hands up le dj sait ce qu'il fait\",\n", - " \"on s'est même retrouvé en face to face\",\n", - " 'au milieu de la piste les spot-lights me flashent',\n", - " 'je danse le mirroir me flatte',\n", - " 'le dj nous passe les bo de nos vies',\n", - " 'magic music, magic movie',\n", - " 'et nous on se repasse les films de nos vies',\n", - " 'magic music, magic movie',\n", - " 'music is the odyssey (yeah)',\n", - " \"it's here for you for me\",\n", - " 'just listen from the magic key',\n", - " 'music is the odyssey (yeah)',\n", - " \"it's here for you for me\",\n", - " 'just listen, let your life be free',\n", - " 'missing you, missing you, missing you, magic crew',\n", - " 'missing you, missing you, missing you, magic crew',\n", - " 'en musique on se déhanche',\n", - " \"on va vibrer jusqu'au 'bout tonight\",\n", - " \"oh-uh, oh, oh, oh, oh, oh (jusqu'au bout de la night)\",\n", - " 'en musique on se déhanche',\n", - " \"on va vibrer jusqu'au 'bout tonight\",\n", - " 'oh-uh, oh, oh, oh, oh, oh...',\n", - " 'music is the odyssey (yeah)',\n", - " \"it's here for you for me\",\n", - " 'just listen from the magic key',\n", - " 'music is the odyssey (yeah)',\n", - " \"it's here for you for me\",\n", - " 'just listen like your life be free',\n", - " 'en musique on se déhanche',\n", - " \"on va vibrer jusqu'au 'bout tonight\",\n", - " \"oh-uh, oh, oh, oh, oh, oh (jusqu'au bout de la night)\",\n", - " 'en musique on se déhanche',\n", - " \"on va vibrer jusqu'au 'bout tonight\",\n", - " 'oh-uh, oh, oh, oh, oh, oh...',\n", - " 'i was a liar, i gave into the fire',\n", - " \"i know i should've fought it\",\n", - " \"at least i'm being honest\",\n", - " \"feel like a failure 'cause i know that i failed you\",\n", - " \"i should've done you better\",\n", - " \"'cause you don't want a liar\",\n", - " 'and i know, and i know, and i know',\n", - " \"she gives you everything but boy, i couldn't give it to you\",\n", - " 'mon amour, mon amour, mon amour',\n", - " 'sans toi, plus rien ne brille, plus aucun rêve ne me tient debout',\n", - " 'so one last time',\n", - " 'i need to be the one who takes you home',\n", - " 'one more time',\n", - " \"i promise after that, i'll let you go\",\n", - " \"baby, i don't care if you got her in your heart\",\n", - " 'all i really care is you wake up in my arms',\n", - " 'one last time',\n", - " 'i need to be the one who takes you home',\n", - " 'tout seul je dérive',\n", - " 'si de ta peau tu me prives',\n", - " 'les minutes sont des années',\n", - " 'quand le cœur se laisse aller',\n", - " 'viens, on recommence',\n", - " \"on s'accorde une deuxième chance\",\n", - " 'rattrapons le temps gâché',\n", - " 'arrêtons de nous cacher',\n", - " 'mon amour, mon amour, mon amour',\n", - " \"j'pourrais changer d'avis mais tu resteras mon seul amour\",\n", - " 'and i know, and i know, and i know',\n", - " 'that you got everything, but i got nothing here without you, baby',\n", - " 'oui, attends-moi',\n", - " \"si tu t'enfuis, je suis juste un fantôme (juste un fantôme)\",\n", - " 'attends-moi',\n", - " 'sans toi, je suis sans vie, sans idéaux',\n", - " \"je sais qu'on ne peut jamais remonter le temps\",\n", - " \"pourquoi ne pas s'apprendre à s'aimer au présent ?\",\n", - " 'attends-moi',\n", - " \"si tu t'enfuis, je suis juste un fantôme\",\n", - " \"i know i should've fought it\",\n", - " \"at least i'm being honest, yeah...\",\n", - " 'but stay with me a minute',\n", - " \"i swear i'll make it worth it, yeah\",\n", - " \"'cause i don't wanna be without you (oh...)\",\n", - " 'so one last time',\n", - " 'i need to be the one who takes you home (who takes you home, babe!)',\n", - " 'one more time (oh yeah)',\n", - " \"i promise after that, i'll let you go (i promise that, i'll let you go)\",\n", - " \"baby, i don't care if you got her in your heart, babe\",\n", - " 'all i really care is you wake up in my arms, oh!',\n", - " 'one last time',\n", - " 'i need to be the one who takes you home, yeah (ooh!)',\n", - " 'attends-moi',\n", - " \"si tu t'enfuis, je suis juste un fantôme\",\n", - " \"sporting all your favorite brands you're deep into details\",\n", - " 'tell me just how deep is too deep',\n", - " 'sipping on your sweetest beverage let me levitate',\n", - " \"don't call me, don't call me now i'm\",\n", - " 'sleeping for another year',\n", - " 'learning how to concentrate',\n", - " 'working for another key',\n", - " 'running in circles',\n", - " \"don't think these days will return\",\n", - " 'romance and playgrounds left behind',\n", - " 'acid and purple',\n", - " \"don't think these days will return\",\n", - " 'romance and playgrounds left behind',\n", - " 'la lumière est entière (simplement)',\n", - " \"plus belle est l'entrée (simplement)\",\n", - " \"j'ai la chance d'avoir des amis comme collègues\",\n", - " \"thérapie d'hommes posés\",\n", - " \"c'est ma vie j’reconnais\",\n", - " \"j'ai pas toujours pris la voie sans problème\",\n", - " \"et dans l'élan on perd des renforts\",\n", - " 'pour gagner un peu de légèreté',\n", - " 'parfois il faudrait simplement se délester',\n", - " 'sans pour autant se lâcher ou se détester',\n", - " 'cette vie est plein de puterie',\n", - " 'faut la baiser pour éviter de la subir',\n", - " 'je m’apprêtais à me punir',\n", - " \"et puis j'ai rencontré ulysse (ulysse)\",\n", - " \"et puis j'ai rencontré une fille (yeah yeah)\",\n", - " 'running in circles',\n", - " \"don't think these things will return\",\n", - " 'romance and playgrounds left behind',\n", - " 'romance and playgrounds left behind',\n", - " 'running in circles (simplement)',\n", - " 'acid and purple (simplement)',\n", - " 'romance and playgrounds left behind',\n", - " 'romance and playgrounds left behind']},\n", - " 'rap': {'meta': {'train_data': ['yeah, come on',\n", - " 'listen',\n", - " 'willing to stay cool',\n", - " \"we're both single\",\n", - " 'sending out signals',\n", - " 'let me sink, han',\n", - " 'willing to stay cool',\n", - " 'we have the same goals',\n", - " \"we're both single\",\n", - " 'sending out signals',\n", - " 'let me sink, han',\n", - " 'step forward (come on, listen)',\n", - " 'step forward',\n", - " 'step forward',\n", - " 'step forward',\n", - " 'come through, come through (come on)',\n", - " 'come get wild and lose',\n", - " 'go and move the shoulders',\n", - " 'when i look at you',\n", - " 'come through, come through (come on)',\n", - " 'come get wild and lose',\n", - " 'go and move the shoulders',\n", - " 'when i look at you',\n", - " 'j’suis dans le club en mode : le boss tourne la tête, les femmes tournent la tête, le club tourne la tête',\n", - " \"dégaine trop puissante, t’as le mouv' d’avant\",\n", - " \"tu crois que c’est le mouv' du jour mais j’ai le mouv' d’après\",\n", - " 'je brille encore plus que les dents de gucci mane',\n", - " 'les photographes se bousculent, comme sur un pogo, dans un concert de di-meh',\n", - " 'tu veux encore ? danse sur le beat, danse sur le beat, hein',\n", - " 'danse sur le beat, danse sur le beat, hein',\n", - " 'j’suis sur le dancefloor et j’remue les fesses fort quand je danse sur le beat, danse sur le beat, hein',\n", - " 'fruit de mes efforts, fruit de la passion',\n", - " 'j’en ai mis un peu trop à ma façon',\n", - " 'et puisque j’étais complètement bourré',\n", - " 'est-ce qu’on peut dire que ça s’est pas passé ?',\n", - " 'come through, come through',\n", - " 'come get wild and lose',\n", - " 'go and move that shoulders',\n", - " 'when i look at you',\n", - " 'come through, come through',\n", - " 'come get wild and lose',\n", - " 'go and move that shoulders',\n", - " 'when i look at you',\n", - " 'look at you',\n", - " 'when i look at you (yeah, yeah, yeah)',\n", - " 'look at you',\n", - " 'go and move that shoulders',\n", - " 'when i look at you',\n", - " 'i dont even remember how we got here...',\n", - " \"j'pense même pas que j'ai éteint la tv avant de partir...\",\n", - " \"j'ai juste fait des kilomètres et des kilomètres\",\n", - " \"dans une kia hybride singing bitch don't kill my vibe\",\n", - " \"j'ai passé les douanes, made it down to tijuan\",\n", - " 'dans une piscine full of liquor looking for some peace of mind',\n", - " \"j'ai fait des kilomètres et des kilomètres\",\n", - " \"j'avais même pas de permis mais j'me suis permis moi même\",\n", - " \"j'ai passé les douanes only one thing in mind\",\n", - " \"j'veux même pas savoir où j'vais atterrir\",\n", - " 'i just gotta get the fuck out of here',\n", - " 'je repense à ma carrière les deux pieds dans le sable',\n", - " \"j'm'apprête à sell out le métropolis\",\n", - " \"tu croyais que ma carrière s'en allait go south\",\n", - " 'i landed in south by south-west',\n", - " \"on est partis en tournée, ç'a tourné dans chambre d’hôtel\",\n", - " \"3 jeunes blancs with attitude straight outta canton de l'est\",\n", - " 'i just woke up this morning sur cette fucking chanson thème',\n", - " 'we gotta get the fuck out of here',\n", - " \"j'ai juste fait des kilomètres et des kilomètres\",\n", - " \"dans une kia hybride singing bitch don't kill my vibe\",\n", - " \"j'ai passé les douanes, made it down to tijuan\",\n", - " 'dans une piscine full of liquor looking for some peace of mind',\n", - " \"(that's right)\",\n", - " \"i just woke up in la (that's right)\",\n", - " \"i just woke up in la (that's right)\",\n", - " \"i got to pick up the phone (that's right)\",\n", - " \"tell some people i'm gonna be late (that's right)\",\n", - " \"won't make it to none of your fake shit (that's right)\",\n", - " \"won't make it to none of your fake shit (that's right)\",\n", - " \"j'serai pas là si vous me cherchez (that's right)\",\n", - " \"won't make it to none of your fake shit (that's right)\",\n", - " \"(that's right)\",\n", - " 'baby',\n", - " \"please don't try to save me\",\n", - " \"mêle-toi donc tes business, me i'm feeling kind of wavy\",\n", - " 'appelle donc ta best girl, she might be my next girl',\n", - " \"attache-toi les cheveux comme j't'ai appris, check pas mes text girl\",\n", - " \"attache-toi les cheveux comme j't'ai appris, comme toute le reste girl\",\n", - " \"tu sais que je suis le best girl, grâce a moi t'es quelqu'un\",\n", - " \"j'suis toujours en tournée, toute le reste j'm'en calisse\",\n", - " \"i'm be on some futurist, nouvelle date sur ces clive shit\",\n", - " '(hold up)',\n", - " \"l'ennui c'est la conscience du temps\",\n", - " \"pis j'ai pas de temps a perdre\",\n", - " \"j'm'ennuie du temps perdu, c'est bien tout ce que je me rappelle\",\n", - " \"tant qu'on a la démence pour nous protéger, we good\",\n", - " \"mais j'ai peur de mes idées quand je suis seul sur la route\",\n", - " \"i'm feeling so alone, j'm'ennuie de ma maison\",\n", - " \"mon gérant au bout du fil and i'm screaming on the phone\",\n", - " 'i want my money, yeah',\n", - " 'i want my money, yeah',\n", - " 'colt 45 sur la white powder',\n", - " 'i got few girls dans la limousine',\n", - " 'toutes gelées sur la ketamine',\n", - " 'they love it when i rap about it, i know',\n", - " \"my life's a mess and i'm broke\",\n", - " \"chaque fin de semaine i'm on the road\",\n", - " 'these rappers queb are on the chokehold',\n", - " 'cause we the best',\n", - " \"and i'm so gone (that's right)\",\n", - " \"j'ai pu de conscience (that's right)\",\n", - " \"that's why im sippin' lean (that's right)\",\n", - " \"mixed with ecstasy (that's right)\",\n", - " \"so she came through j'ai dit (that's right)\",\n", - " \"elle voulait fuck pis j'ai dit (that's right)\",\n", - " \"keep it on the low yeah (that's right)\",\n", - " 'if you do it big i just might',\n", - " \"(that's right)\",\n", - " 'contrôle, contrôle',\n", - " 'contrôle, contrôle',\n", - " 'perte de contrôle totale',\n", - " 'tellement de choses ont changé',\n", - " \"now i'm on some shit that got a youngin' unconscious\",\n", - " 'fuckboy sur le campus',\n", - " \"yeah that's me, yeah that's me, bitch\",\n", - " 'ma vie a pris un tournant real triste',\n", - " \"no lie, mo'fucker on some real shit\",\n", - " 'toujours des histoires de cœur',\n", - " \"i don't care, man i'm cursed\",\n", - " \"pis j'ai ma main au-dessus du killswitch\",\n", - " \"all alone sur la plaza st-hubert, sippin' on pabst\",\n", - " 'reminiscing all about the good days',\n", - " \"fait que les bands c'tait le good pay\",\n", - " \"mon salaire de l'époque t'aurait laissé bouche bée\",\n", - " 'what you know about going out on tour pis ramener des gros dollars ?',\n", - " 'bonjour, au revoir, tôt ou tard',\n", - " 'ton tour viendra, faut y croire',\n", - " 'big bottles, rollies and audemars',\n", - " \"j'étais parti sur un faux départ\",\n", - " \"shit, y'a fallu j'lui dise que je l'aime plus\",\n", - " 'damn, she broke down après mon départ',\n", - " \"en voyant les photos de tout ce que j'ai perdu\",\n", - " \"while the whole world's falling appart\",\n", - " \"you see me moving on to the next broad, c'est wrong\",\n", - " \"mon âge a pu rapport, j'suis mort\",\n", - " \"la tolérance est infinie dans l'impasse\",\n", - " \"bienvenue dans ma perte de contrôle, j'suis out\",\n", - " 'contrôle, contrôle',\n", - " 'le motel, elvis roméo, morale, 2016, hey !',\n", - " \"j'ai pas fini ! morale, chut ! morale, voilà\",\n", - " 'tais-toi ! mais tais-toi toi..',\n", - " 'mais tais-toi aussi toi !',\n", - " \"mais qu'est-ce que c'est qu'ce bordel ?!\",\n", - " 'ta-t-t-ta-taaa',\n", - " \"moi aussi, j'sais faire de la trompette !\",\n", - " '*hurlements et aboiements de chiens*',\n", - " 'ah voilà des chiens maintenant, putain',\n", - " 'ta gueule le clebs !',\n", - " \"c'est quoi qu- d-, oh ! allez une grognasse maintenant !\",\n", - " \"*rires d'un large public*\",\n", - " \"ha-ha, ha-haha ouais, c'est pas bientôt fini ?!\",\n", - " '*deux femmes se disputent en anglais*',\n", - " 'what is ?! hey ! stop, stop talking in english !',\n", - " 'ce projet musical représente le bonheur et la gaieté, bravo !',\n", - " 'happy new year !',\n", - " 'hahahahahaha, ahahahaha !',\n", - " 'risk on bob, sick engineering',\n", - " 'pa announcement : ...',\n", - " 'oui, everything is controlled, sun',\n", - " 'tous les boutons sont opérationnels',\n", - " 'for final approach, kanye',\n", - " 'capitaine moustache',\n", - " 'docteur dubois',\n", - " 'nous pouvons décoller',\n", - " \"sampling from our world's lines and phrases\",\n", - " 'and s-, and sampling from the world size effective',\n", - " 'what else to say ?',\n", - " 'taxi !',\n", - " 'taxi ! en direction le 1630, taxi',\n", - " 'all aboard ! for real',\n", - " 'amenez-nous à linkebeek !',\n", - " 'oh, pardon',\n", - " 'where did you get that ?',\n", - " 'oh..',\n", - " 'ah..',\n", - " 'mais où est le strauss ? où est le strauss, jimmy ?',\n", - " \"je sais que c'est toi qui l'a caché, jimmy\",\n", - " \"*pleurs d'un enfant*\",\n", - " 'tobesektesheuneuvonevraktinigen',\n", - " \"that's an offer you can't refuse\",\n", - " 'my name is elvis',\n", - " \"i'm a, uh, rapper\",\n", - " \"don't worry\",\n", - " \"and i want to say, there's going to be ? in this\",\n", - " \"so be nice with ? and please don't forget to see the ?\",\n", - " 'thank you !',\n", - " \"ok, c'est disiz et nneka\",\n", - " \"c'est disiz et nneka\",\n", - " \"ok, c'est disiz qui arrive, c'est nneka et sérigne\",\n", - " \"nos prénoms sont 'cains-fri', ça joue pas les 'cains-ri'\",\n", - " \"de dakar à ouari', de hambourg à paris\",\n", - " 'hannibal et mata hari dans ta ville en charivari',\n", - " 'afrique-occident, la géométrie varie',\n", - " 'les puissants nous pétrissent et nous roulent dans la farine',\n", - " 'le gringo fixe les prix, le peuple paye le tarif',\n", - " \"sauf qu'à la place tahrir, ils ont shooté le chérif\",\n", - " \"l'afrique a une bonne étoile\",\n", - " 'je prends sa jeunesse dans sa trajectoire',\n", - " 'les ventres gargouillent mais on perd pas espoir',\n", - " \"cette vie, c'est la nuit, on a la shining star\",\n", - " 'oh shining star, will you smile down on me!',\n", - " 'oh, what you are',\n", - " 'when you look down on me ?',\n", - " 'beautiful star, do keep your eyes on me!',\n", - " 'oh,oh,oh,oh what you are',\n", - " 'when you smile down on me ?',\n", - " 'this time i great you, would you trust me',\n", - " 'pulls your heart strings, do you love me',\n", - " 'i appreciate you baby!',\n", - " 'and though you seem so far away',\n", - " 'you pursuit me i can feel you',\n", - " 'lighted well within my mind',\n", - " 'and i know you’re sometimes lonely',\n", - " 'oh, i wish that i could change it',\n", - " 'oh then i know you still got me',\n", - " 'and i pray my love will give you life',\n", - " 'to help you free to keep you smile',\n", - " 'you’re my shining star, to take my love and live!',\n", - " 'ma jolie, jolie, jolie, jolie, jolie petite étoile',\n", - " \"a toi je m'agrippe quand je tombe ou perds les pédales\",\n", - " 'depuis la position fœtale, mon cœur a trop de pétales',\n", - " \"ringard si tu veux mais, pour l'amour, j'suis intraitable !\",\n", - " 'oh shining star, please look down for me!',\n", - " 'oh, what you are ?',\n", - " 'when you look down at me',\n", - " 'with you, i, i feel love',\n", - " 'when you, place your light on me',\n", - " 'i feel warm !',\n", - " 'oh shining star, will you smile down on me!',\n", - " 'oh, what you are',\n", - " 'when you look down on me ?',\n", - " 'beautiful star, do keep your eyes on me!',\n", - " 'oh,oh,oh,oh what you are',\n", - " 'when you smile down on me ?',\n", - " 'this one for the crew',\n", - " 'this one, this one for the crew',\n", - " 'yeah, big respect to the break, motherfucker, man',\n", - " 'check the flow, man, check the flow',\n", - " \"check the flow pour l'outro\",\n", - " 'check the flow, man, check the flow',\n", - " 'check the flow, man, check the flow',\n", - " 'check the flow',\n", - " 'spéciale dédicace à tous les gens qui supportent le hip-hop',\n", - " 'spéciale touch à tous les groupes qui roulent au top en bas',\n", - " \"spéciale touch à l'underground parisien\",\n", - " 'et à tous les gens qui défoncent encore des trains',\n", - " 'check the flow, man, check the flow',\n", - " 'check the flow () karim',\n", - " 'check the flow, man, check the flow',\n", - " 'check the flow pour mon frère',\n", - " \"arsène, toujours dans l'arène\",\n", - " 'big up, big up aussi à mon homie, p.s.o',\n", - " 'check the flow, man, check the flow',\n", - " 'check the flow pour',\n", - " 'check the flow, , check the flow, solo',\n", - " 'check the flow, pour mon frère de-clau',\n", - " 'big up, big up pour la divine ludivine',\n", - " 'big up, big up pour mon homeboy thierry, yes',\n", - " \"un tas d'big up à monsieur et à mon frère\",\n", - " 'spéciale dédicace à , et get busy',\n", - " 'check the flow, man, check the flow',\n", - " 'check the flow, man, check the flow ()',\n", - " 'check the flow, big red, check the flow',\n", - " 'check the flow, , check the flow (rakim)',\n", - " \"check the flow pour l'upside psycho\",\n", - " 'the flow',\n", - " 'check the flow pour toutes les banlieues',\n", - " 'check the flow pour toutes les banlieues',\n", - " 'check the flow pour toutes les banlieues',\n", - " 'check the flow pour toutes les banlieues',\n", - " 'check the flow',\n", - " 'yeah, yeah',\n", - " \"je sais, j'étais juste un musicien parmi tant d'autres\",\n", - " \"pis t'étais juste une muse, mais c't'assez pour un tango\",\n", - " \"comme des poissons dans l'eau quand on allait down low\",\n", - " \"manteaux d'armée assortis, on peut sortir commando\",\n", - " 'break up in a sec sans même break a sweat',\n", - " 'wake up, café écossais, make up sex',\n", - " 'nos humeurs changeaient comme notre trame sonore',\n", - " 'ipod en mode shuffle',\n", - " 'bone thugs-n-harmonium',\n", - " 'a beach house by the frank ocean',\n", - " 'nos esprits dérivent pendant que les joints se consument',\n", - " 'binge fucking and chain smoking',\n", - " \"j'fais pu de drogues de même ces jours-ci\",\n", - " \"c'est pu comme avant\",\n", - " \"j'avais les rêves de visionnaire\",\n", - " \"j'faisais les cauchemars d'une vie honnête\",\n", - " \"tu m'as dit: «tu peux pas rester pour me voir foutre ma vie en l'air»\",\n", - " 'but i told you we would be alright, right',\n", - " \"i guess t'as raccroché trop vite\",\n", - " \"maintenant tu m'appelles sur mon new phone\",\n", - " 'looking for the old me',\n", - " \"maintenant tu m'appelles sur mon new phone\",\n", - " 'looking for the old me',\n", - " \"maintenant que t'as compris que j'ai move on\",\n", - " \"c'est là que t'essayes de mettre tes moves on me\",\n", - " \"maintenant tu m'appelles sur mon new phone\",\n", - " 'looking for the old me',\n", - " 'mais tu vas chercher longtemps',\n", - " 'garde l’œil ouvert, on va pull up en subaru',\n", - " 'à nous la rue, pas de carrés rouges',\n", - " \"on est sur le cas des avocats parce qu'on veut les k de kamaro\",\n", - " \"donne-moi ma cut, donne-moi l'alcool\",\n", - " 'ça prend pas la tête à papa roach',\n", - " 'my music was born in america',\n", - " \"baby, that's rock 'n roll\",\n", - " \"uh, mon étoile, je l'ai gagnée\",\n", - " 'si je dois recommencer, je répéterai mes exploits comme mike jones',\n", - " 'on pédale, on pédale, on pédale, on veut',\n", - " 'que des médailles et des maillots jaunes',\n", - " \"mais qu'est-ce que j'entends?\",\n", - " \"que y'a des rappeurs qui s'inventent des vies tout droit sortis des asiles\",\n", - " \"qu'est-ce que j'entends? c'est mon petit doigt qui me dit que j'suis à deux doigts de sortir le troisième\",\n", - " 'que des hommes de parole dans ma clique',\n", - " 'aucun rappeur, on est quinze sur la scène',\n", - " 'coup de théâtre, aucun acteur',\n", - " 'on arrive dans ta ville',\n", - " \"on fait tout sauter en trois quarts d'heure\",\n", - " 'même pas défait mes valises',\n", - " \"j'refais ma vie à chaque 24 heures, tour life\",\n", - " \"une main vers le ciel, on a fait le serment d'honneur\",\n", - " 'la vérité, que la vérité, si on ment, on meurt, ah',\n", - " 'promis sur mes amis, juré sur mes enfants terribles',\n", - " \"bon dieu voit, sur ma mère, sur l'amérique\",\n", - " 'man i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " \"tout c'qu'on fait, c'est officiel (yeah)\",\n", - " 'mon salon est officiel (yeah)',\n", - " \"mon jacket, c't'un officiel (yeah)\",\n", - " \"ta copine est pas si belle (but i'd still hit that tho!)\",\n", - " \"i pull up au fme (sup')\",\n", - " \"tout' gelé sur l'éphédrine (what's up)\",\n", - " \"tu nous vois, t'es comme : « fml »\",\n", - " 'ta carrière sera éphémère (aaah)',\n", - " 'ah! minimum trois milles par show',\n", - " \"j'en fais-tu du bread à ton avis, ben oui!\",\n", - " \"sex, drugs and rock 'n' roll\",\n", - " 'le pocket swollen à cause du rap queb, oui',\n", - " 'had this girl up in the condo',\n", - " 'je lui ai mis dans le wrong hole',\n", - " \"reconduit sa petite fille au camp d'jour\",\n", - " 'fuck boy, lary kidd, ben oui!',\n", - " 'shout-out à big jo la légende, on est là, mon gars, dans des édifices',\n", - " 'les gars font leur bitch depuis quelques temps. who knows? i just might be féministe',\n", - " \"à part mon avance de dix milles que j'ai blow, je n'ai vu aucun bénéfice\",\n", - " \"shout-out au p'tit patnais rowjay, mais surtout shout-out au boy médéric\",\n", - " 'who the fuck wants it right now? que tous mes real ones se manifestent',\n", - " 'regarde-moi maman, j’suis à prague en train de chiller avec des ballerines',\n", - " \"so j'pull up dans les 5 à 7, high as fuck parce j'ai rien à perdre\",\n", - " 'mes goons faisaient des home invasions, sylvain cossette (hahaha)',\n", - " \"une main vers le ciel, on a fait le serment d'honneur\",\n", - " 'la vérité, que la vérité, si on ment, on meurt, ah',\n", - " 'promis sur mes amis, juré sur mes enfants terribles',\n", - " \"bon dieu voit, sur ma mère, sur l'amérique\",\n", - " 'man i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " 'garde l’œil ouvert m’en va pull up en bugatti (skrr, skrr)',\n", - " 'dans mes bons habits comme un sultan d’abu dhabi',\n", - " 'fais tourner les têtes ébahis when they look at me (look at me now)',\n", - " 'i’ll be comin’ straight up pour le milk and honey',\n", - " \"and i'm rockin' them glasses comme buddy holly\",\n", - " 'when i pull up, pull up j’donne un torticoli (aw!)',\n", - " 'promis, promis, sur la tête de mommy',\n", - " 'si j’ai un doubt ‘bout it, j’d’mande au man above me',\n", - " 'and i’m thinking imma go with that',\n", - " 'm’a prendre un lease sur l’avant-garde',\n", - " 'oùssé qu’on s’en va, ça nous r’garde',\n", - " 'so shut the fuck up pis er’garde',\n", - " 'look at me now (look at me)',\n", - " '20 y est pu like he used to',\n", - " 'now they clownin’, comme mr. bean en mini cooper',\n", - " 'pendant qu’moi j’finis dans l’whip d’une jeune virginie coosa',\n", - " 'fais comme martin lawrence, woosah-woosah',\n", - " 'to check imma do so',\n", - " 'dead o in town, sont comme où ça, où ça?',\n", - " 'les deux yeux ouverts comme le hibou du hooters',\n", - " 'we sippin’ only sur le grey goose et mousseux, nah!',\n", - " 'j’pop jamais d’champagne sans t’éclabousser',\n", - " 'bitch, i’m no whale, j’viens pas d’tadoussac',\n", - " 'you suck it down, yeah baby that’s what’s up',\n", - " 'you running in circles dans l’carrousel',\n", - " 'yo! c’est confirmé, we loopin’ and loopin’ d’un circuit fermé',\n", - " 'on va frapper la route, faire le tour du québec',\n", - " 'i mean, combien d’loops avant d’être riches et célèbres?',\n", - " \"fa' que on fait d’la vitesse, baby c’t’un euphémisme\",\n", - " 'j’sur les amphétamines avec philippe fehmiu',\n", - " 'imma keep it poppin’, fuck up le showb’iness',\n", - " 'imma keep it hundred, vas-y, fais-le, fais mieux',\n", - " \"peek-a-boo, c'est moi le mc au parcours impeccable\",\n", - " \"shout-out à adam, i'm smokin' on medical (on medical weed now)\",\n", - " \"si t'es pas down, tu peux suck sur mon edible\",\n", - " 'arrogant miracle boy in america',\n", - " '500 chevaux dans ma chevy, go merry-go-round (round)',\n", - " 'man, i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " 'que des hommes de parole dans ma clique',\n", - " 'man i swear it on my life',\n", - " 'on my life, on my life',\n", - " 'man i swear it',\n", - " 'hey man, do you think you could lend me a bit of cash?',\n", - " \"12 for two bottles of red wine 10 for a ben's of hash\",\n", - " 'you could buy some k and we could make it through the night',\n", - " 'something in my head has made me scared of what’s inside',\n", - " \"i've had an awful day, i'm feeling sorry for myself\",\n", - " \"don’t tell me to stop, i didn't come to you for help\",\n", - " 'just to get a loan to buy myself some wine and beer',\n", - " 'fill this hole of mine and let my troubles disappear',\n", - " \"belle bouteille, viens ici que j'te caresse\",\n", - " \"tu me plais et j'ai un peu de monnaie donc allons à la caisse\",\n", - " 'prends ma main, on va se balader et dépêche toi ça presse',\n", - " 'laisse-moi reposer mes lèvres, faut se saouler en express',\n", - " \"j'ai un boulot qui me pèse, laisse moi apaiser mes peines\",\n", - " 'on peut appeler tes potes',\n", - " 'moretti pas heineken',\n", - " 'plus de cœur entre mes côtes',\n", - " 'comprends-tu petite en verre, tout le rouge que tu contiens laisse le couler dans mes veines...',\n", - " '(le chat est parti dansant dans la rue',\n", - " \"mais plus de battement de cœur on s'en tape de ton châtiment)\",\n", - " 'et à la main une belle ‘teille de vin',\n", - " 'tu me gardes maladroit',\n", - " 'et je te garderai frais sous les ombres noires des bâtiments',\n", - " \"on me dit que j'abuse\",\n", - " 'je joue albert camus',\n", - " \"je veux des femmes nues, de la bouffe, un peu d'art\",\n", - " 'et je battis mon chemin',\n", - " 'c’est pour ça que j’suis puni',\n", - " 'entre collines faites de vin',\n", - " \"je dirais que j'suis bien loti\",\n", - " 'motor city hella class in the night',\n", - " 'heavy hand serves nicely when the pelican arrives',\n", - " 'half-ass lights act as candles for a blanche',\n", - " 'when desire for the use of double-bedding comes to mind',\n", - " 'swig a bit of house, it embellishes the night',\n", - " 'let the liquor in the wine be the flicker in the glass frame',\n", - " 'wizard took the pulse that resided in my cage',\n", - " 'saino’s £4,99 be the red flow in my veins',\n", - " \"life in motor city kinda pricey, but if you're feeling lucky\",\n", - " \"there's a couple mecca bingos\",\n", - " 'win a bit of copper dough',\n", - " 'spend it on a bottle go',\n", - " \"linger by the wide-eyed in need of a lighter (guy comes up n' says)\",\n", - " '\"i’m in need of some guidance, why would a guy so mighty delight in my suffering, what a shoddy kingdom',\n", - " 'driven by my wille zum leben;',\n", - " 'i\\'m sad and i\\'m lonely again\"',\n", - " \"i said: hey man! (quoi qu'est ce qu'il y a ?) take a walk on the wild side (qu'est ce qu'il veut ce bouffon, tu veux une claque ou quoi ?)\",\n", - " \"no. hey man, (quoi je te jure, j'vais te gifler) take a walk on the wild side (arrête avec ton wild side de merde là)\",\n", - " \"no, and chill man, hey man, (hey man, ouais j'ai compris) take a walk on the wild side. (aaaah! ah oui)\",\n", - " 'there you go',\n", - " 'hey man, take a walk on the wild side. (and the moon man says…)',\n", - " 'hey, man do you think you could lend me a bit of cash?',\n", - " \"12 for two bottles of red wine 10 for a ben's of hash\",\n", - " 'you could buy some k and we could make it through the night',\n", - " \"something in my head has made me scared of what's inside\",\n", - " \"i've had an awful day, i'm feeling sorry for myself\",\n", - " \"don't tell me to stop i didn't come to you for help\",\n", - " 'just to get a loan to buy myself some wine and beer',\n", - " 'fill this hole of mine and let my troubles disappear',\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " \"love with no meaning, don't want it\",\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " 'love without feeling',\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " 'love with no meaning',\n", - " 'woh ooh oh ooh woy, woy',\n", - " \"c'qui t'intéresse, c'est son poste\",\n", - " \"et tout c'que celui-ci t'offre\",\n", - " \"pour ainsi dire, tout c'que tu désires\",\n", - " \"elle pense qu'elle a trouvé son autre\",\n", - " 'celui qui lui fera des gosses',\n", - " \"pour ainsi dire, l'homme de sa vie\",\n", - " 'mais pour lui il en est tout autrement',\n", - " \"c'est pas de son cœur mais de son compte dont il est dépendant\",\n", - " \"son rôle de prince charmant bwoy, ça n'a duré qu'un temps\",\n", - " \"ses seules motivations, c'est les voyages et l'argent\",\n", - " 'we talk about love',\n", - " \"en vérité, elle sait qu'ça t'intéresse pas\",\n", - " 'toi tu cherches autre chose',\n", - " \"love you never give and that's a natural fact\",\n", - " 'so tu parles lo-ooo-ove',\n", - " \"this bring to see you're not interested in that\",\n", - " 'searching for love',\n", - " 'elle cherche avec toi en vain mais ne trouve pas',\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " 'love without meaning',\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " 'love with no feeling',\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " 'love with no meaning',\n", - " 'woh ooh oh ooh woy, woy',\n", - " \"xxx you're makin' love\",\n", - " \"you're just fakin' love\",\n", - " \"your love is not real, it's just a tainted love\",\n", - " 'you do anything to get what you want',\n", - " \"to love her today and tomorrow you're gone\",\n", - " \"if that's the game you play\",\n", - " 'this gonna conovking you one day, hey',\n", - " \"you know you're just a fake\",\n", - " 'all you give to her is your xxx',\n", - " 'tu parles lo-ove',\n", - " \"this bring to see you're not interested in that\",\n", - " 'researching for love',\n", - " 'elle cherche avec toi en vain mais ne trouve pas',\n", - " 'you talk about love',\n", - " \"en vérité, elle sait qu'ça t'intéresse pas\",\n", - " 'toi tu cherches autre cho-o-ose',\n", - " \"love you never give and that's a natural fact\",\n", - " \"boy, elle t'a toujours donné d'l'amour\",\n", - " 'les beaux tout comme les mauvais jours',\n", - " 'certes en doutant, sans jamais vraiment faillir',\n", - " 'elle a gardé confiance en toi',\n", - " 'malgré tes faux pas',\n", - " 'en parlant de toi elle garde toujours le sourire',\n", - " 'disrespecting your mama',\n", - " 'your style and your fellow',\n", - " \"now you're in big trouble, for her you were xxx\",\n", - " 'with all the things you do',\n", - " 'mama still there for you',\n", - " 'and you talk about love',\n", - " \"en vérité, elle sait qu'ça t'intéresse pas\",\n", - " 'toi tu cherches autre cho-o-ose',\n", - " \"with love you never give and that's a natural fact\",\n", - " 'so, tu parles lo-ooo-ove',\n", - " 'this bring to see not interested in that',\n", - " \"and you're searching for love\",\n", - " 'elle cherche avec toi en vain mais ne trouve pas',\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " 'love with no meaning',\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " 'love without feeling',\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " 'love with no meaning',\n", - " 'woh ooh oh ooh woy, woy',\n", - " 'love with no feeling',\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " 'talk about love',\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " 'love with no meaning',\n", - " 'woh ooh oh ooh oh, ooh yeah',\n", - " 'talk about love',\n", - " 'woh ooh oh ooh woy, woy',\n", - " \"oh j'ai connu l'amour fou\",\n", - " 'oh oh oh oh',\n", - " 'talalalalalala',\n", - " 'i never saw it coming anyway you lied',\n", - " 'cause you never believed any word that you said',\n", - " 'and i walked all day trying to find out',\n", - " 'what this is all about',\n", - " 'yeah, you say that you want to know',\n", - " 'tu as dit, tu as dit, tu as dit',\n", - " 'you want to get better',\n", - " \"tu veux que j'sois l'meilleur, tu veux que j'sois l'meilleur\",\n", - " 'so come here if you really want to see, yeah',\n", - " 'what is wrong with me',\n", - " \"à c'qui p' entre nous deux, ça allait l'faire\",\n", - " 'it’s the prime of your life, it’s the prime of my life',\n", - " \"c'était mieux avant mais j'me porte bien mieux maintenant, ouais\",\n", - " 'it’s the prime of your life, she was the pride of my life',\n", - " \"c'était mieux avant mais j'me porte bien mieux maintenant, ouais\",\n", - " \"ensemble, on a fait des choses, j'aimais bien quand tu filais en douce\",\n", - " \"y a pas d'problème, y a plusieurs causes, moi j'étais là quoi qu'il en coûte\",\n", - " \"toujours en pleine symbiose, on s'donnait du sexe intense\",\n", - " \"j'le fais comme un virtuose, quand elle crie, ça fait mes ambiances\",\n", - " 'je nous voyais faire du biff dans la ville ensemble, on voulait devenir une entité',\n", - " 'oh, une entité, une entité',\n", - " 'it’s the prime of your life, it’s the prime of my life',\n", - " \"c'était mieux avant mais j'me porte bien mieux maintenant, ouais\",\n", - " 'it’s the prime of your life, she was the pride of my life',\n", - " \"c'était mieux avant mais j'me porte bien mieux maintenant, ouais\",\n", - " 'it’s the prime of your life, it’s the prime of my life',\n", - " \"j'ai connu l'amour fou, j'ai connu l'amour fou\",\n", - " 'it’s the prime of your life, she was the pride of my life',\n", - " 'j’ai connu l’amour fou, j’ai connu l’amour fou',\n", - " 'j’ai connu l’amour fou, j’ai connu l’amour fou',\n", - " \"j’ai connu l'amour fou\",\n", - " 'it’s the prime of your life',\n", - " 'it’s the prime of your life, it’s the prime of my life',\n", - " \"j'ai connu l'amour fou, j'ai connu l'amour fou\",\n", - " 'it’s the prime of your life, she was the pride of my life',\n", - " \"c'était mieux avant mais j'me porte bien mieux maintenant ouais\",\n", - " \"et j'ai connu l'amour fou oh\",\n", - " 'it’s the prime of your life, it’s the prime of my life',\n", - " \"et j'ai connu l'amour fou oh, j’ai connu l'amour fou\",\n", - " 'it’s the prime of your life, she was the pride of my life',\n", - " '(mac keller/eyst)',\n", - " 'apolloïd, yeah, yeah, apolloïd',\n", - " 'here it comes, yeah',\n", - " 'back in the desert, (ouh), homie, yo',\n", - " '(eyst)',\n", - " 'ooh, in our times',\n", - " \"we're givin'up our lives\",\n", - " 'still when the sun rise',\n", - " '(on the sahara)',\n", - " 'ooh, we fire rhymes',\n", - " 'below the giant thrives',\n", - " 'we watch as love dies',\n", - " '(to the sahara)',\n", - " '(eyst)',\n", - " \"ooh, 'round the world\",\n", - " \"i've been wanderin' in search\",\n", - " \"of a peace, but i'm the first\",\n", - " \"'cause i want us to learn\",\n", - " 'if the govеrnments observe, that',\n", - " 'with a bit of work (work)',\n", - " \"and if thеy ain't sold, (huh)\",\n", - " \"we'll erase the thirst, (yeah)\",\n", - " 'for power and gold',\n", - " 'take this shit from the worse',\n", - " \"'cause, we in the worst situation\",\n", - " '\\'till it changes let\\'s be patient\"',\n", - " 'and watch money eat our passions?',\n", - " 'guess, there must be a reason',\n", - " \"why we're fighting for the easin'\",\n", - " 'of getting through all the seasons, man',\n", - " 'in these bloody streets',\n", - " \"everywhere there's misery\",\n", - " \"people don't give shits\",\n", - " 'stay away from these areas',\n", - " 'with the fear of being beaten, stolen, (stolen)',\n", - " \"criminals 'till the beat is ballin' (ballin')\",\n", - " 'media reports',\n", - " 'satan gets the wizardry',\n", - " 'funding being short',\n", - " \"it's always a shit story\",\n", - " \"now we forced to stayin' hidden, fallin', (feelin' for them)\",\n", - " \"giving all to get the children holdin', (and love 'em)\",\n", - " '(mac keller)',\n", - " \"j'me sens seul et vois mes semblables maigrir, (maigrir)\",\n", - " \"au fond n'est c'pas une excuse pour souffrir et utiliser la douleur pour s'aigrir\",\n", - " \"je marche et je erre jusqu'à n'plus sentir mes nerfs , (nerfs)\",\n", - " 'dans la foule je me perd en faisant tout pour leur plaire , (plaire)',\n", - " 'je serai donc bien le dernier grain du sablier',\n", - " \"je me noierai dans l'océan de sable pour oublier\",\n", - " 'que la vie est une chienne qui te bouffe sans tablier',\n", - " \"que le diable peut être en prada sans pour autant s'habiller , (s'habiller)\",\n", - " \"j'suis né l'cordon au cou la nature m'a laissé vivre\",\n", - " \"j'espère n'pas agoniser dans un ravin un peu ivre\",\n", - " \"j'suis mort je n'fais que rapper ma vie passée\",\n", - " 'mais rapper ne fait que raviver et ressasser de vieux souvenirs entassés , (entassés)',\n", - " \"j'incarne ce qu'ils craignent : un jeune nègre aigre\",\n", - " 'écourtant leur règne et restant toute sa vie intègre',\n", - " \"plus d'romance littéraire, c'est la délinquance urbaine\",\n", - " \"j'cherche mon itinéraire, et ma douleur est ébène\",\n", - " 'tempête de sable ce monde est opaque et peu aimable',\n", - " \"ici pas de fable de toute la misère je m'accable\",\n", - " 'univers macabre, sahara inarretable',\n", - " \"l'environnement s'délabre mais les grains sont intouchables\",\n", - " 'comme un peul ou un touareg',\n", - " 'la nature dicte mes règles',\n", - " 'marron est le nèg',\n", - " 'noir et noble comme un aigle',\n", - " 'germons comme le seigle',\n", - " \"c'monde est rempli d'easter egg\",\n", - " 'prends ce que je lègue',\n", - " \"j'suis plus ce garçon espiègle\",\n", - " '(eyst)',\n", - " 'ooh, in our times',\n", - " \"we're givin'up our lives\",\n", - " 'still when the sun rise',\n", - " '(on the sahara)',\n", - " 'ooh, we fire rhymes',\n", - " 'below the giant thrives',\n", - " 'we watch as love dies',\n", - " '(to the sahara)',\n", - " 'yeah, in our days',\n", - " 'we gave up our ways',\n", - " 'now as the sun sets',\n", - " '(on the sahara)',\n", - " \"no, we're silent, right\",\n", - " \"we fed the giant's bite\",\n", - " 'helpless as love died',\n", - " '(mac keller/eyst)',\n", - " 'eh, eh, eh, eh',\n", - " '(on the sahara), hmm',\n", - " 'eh, eh, eh, eh',\n", - " '(to the sahara), hmm',\n", - " 'mets ça sur le vire de bord',\n", - " 'un peu psylo dans mon cinéma',\n", - " 'dans mon exhaust de char y’a des ministres morts',\n", - " 'dans ma poubelle j’bump du biggie smalls',\n", - " \"we there obligés d'get le dough\",\n", - " 'mais laissez faire les jeunes aujourd’hui make it on their own',\n", - " 'from the ceiling to the floor stacké comme du gold biche',\n", - " 'they say they livin’ by the code pis y get ce mullah',\n", - " \"we there obligés d'get le dough\",\n", - " 'mais laissez faire les jeunes aujourd’hui make it on their own',\n", - " 'from the ceiling to the floor stacké comme du gold biche',\n", - " 'they say they livin’ by the code pis y get ce mullah',\n", - " 'qu’est-ce tu veux que j’t’apporte j’veux dire',\n", - " 'on a tous une idée propre à nous de c’qu’on veut qu’y arrive devant ‘a porte',\n", - " 'pis chu pas là pour être meilleur ou pire que c’qu’on rêve ou soupire quand c’est',\n", - " 'bof',\n", - " 'but i think i love you so much',\n", - " 'j’serais capable d’endurer les pires souffrances su’l globe',\n", - " \"juste pour être devant toi pis être là à me d’mander what's love\",\n", - " 'our love is no pain we love love love love',\n", - " 'our love is no pain we love love love love',\n", - " \"i said this feeling's so good that it can't be the last time\",\n", - " \"i rhyme jumping off like i'm hopping a rail line\",\n", - " \"cause i'm comin' up for the paper with that\",\n", - " 'here to the royalties on this track',\n", - " 'milk coffee and the sugar check the blind',\n", - " \"these captains on the side still thinkin' i slip\",\n", - " \"i see the rhyme's fortified\",\n", - " \"haters they try to throw a wrench in my closet there's no stopping my strive\",\n", - " \"cause i'm, down to ride 'til the cops shut us down\",\n", - " 'and when they show, they better chase your boy out of town cause',\n", - " \"i'm dedicated to this rap shit\",\n", - " 'similar to jay when they wanna pull the gat quick',\n", - " \"you can get hit with the rhythm that the sound break 'em down\",\n", - " \"cause they didn't say nothing when the beat start to pound\",\n", - " \"yo this ain't the first time that i'm stepping on the mic\",\n", - " 'if you breakers gonna drop, then you better drop it wise',\n", - " 'so what you want, yo?',\n", - " 'un peu de cha-cha-cha',\n", - " 'and what you want, yo?',\n", - " 'un peu de sucre de cachaça',\n", - " \"i said this ain't my first time\",\n", - " \"and this ain't my first rhyme\",\n", - " \"c'est du hip hop on donne ça\",\n", - " 'version makossa',\n", - " \"c'est quoi ton style, man?\",\n", - " 'i want some hip-hop shit',\n", - " \"mais qu'est ce qu'tu veux man?\",\n", - " 'i want some hip-hop shit',\n", - " \"si c'est vrai que t'assailles le beat\",\n", - " \"j'te passe du papier, un bic\",\n", - " 'you know coffee and the sugar cats rap every week',\n", - " 'paris première, la ville de lumière',\n", - " 'on marque le teint cireux sous un réverbère',\n", - " 'je veux parler pour vous faire taire',\n", - " \"dans cette pollution je rappe : une bouffée d'air\",\n", - " 'je fédère autour de notes éphémères',\n", - " 'de quelques accords binaires ou ternaires',\n", - " 'la terre mère à chaque fin de mes vers',\n", - " 'je suis soleil, vous êtes mon univers',\n", - " 'un flow bobo pour les gosses de prolétaires',\n", - " 'dire les valeurs du hip-hop avant que je les perde',\n", - " \"avant qu'on m'enterre entre le cap et le caire\",\n", - " \"entre la cape et l'épée je suis le\",\n", - " 'la première sera surement la dernière',\n", - " 'paris première sur une ambiance printanière',\n", - " 'beat assaillant, milk coffee sugar',\n", - " 'la première fois que tu goûtes le soda',\n", - " 'so what you want, yo?',\n", - " 'un peu de cha-cha-cha',\n", - " 'and what you want, yo?',\n", - " 'un peu de sucre de cachaça',\n", - " \"i said this ain't my first time\",\n", - " \"and this ain't my first rhyme\",\n", - " \"c'est du hip hop on donne ça\",\n", - " 'version makossa',\n", - " \"c'est quoi ton style, man?\",\n", - " 'i want some hip-hop shit',\n", - " \"mais qu'est ce qu'tu veux man?\",\n", - " 'i want some hip-hop shit',\n", - " \"si c'est vrai que t'assailles le beat\",\n", - " \"j'te passe du papier, un bic\",\n", - " 'you know coffee and the sugar cats rap every week',\n", - " 'les premiers mots pour dire \"c\\'est la guerre\" c\\'est l\\'instru',\n", - " \"l'encre sur l'écume, le sucre moisi et forcément l'or sans l'écu\",\n", - " \"la mort dans l'vécu, la première larme avec son lot de consolation\",\n", - " \"mais j'vends pas ma tristesse comme un produit d'consommation\",\n", - " 'mon premier sourire comme un texte pour me révolter',\n", - " 'récolter le vote des sans-voix laissés sur le bas coté',\n", - " 'au rez des chaussées, au gré des fossés',\n", - " 'entre va-nu-pieds et mocassins weston à déchausser',\n", - " 'mon premier shoot, mes dribbles, écrivain du ballon rond',\n", - " \"j'voulais m'amuser dans un sport, j'y ai trouvé une profession\",\n", - " 'une hiérarchie, mes premiers doutes, déboires de mes premières routes',\n", - " \"j'me suis craché sur de grandes joutes... verbales\",\n", - " 'mes premiers clashs, ma première femme, mon premier show',\n", - " 'picaflore mon premier album, mon premier feat',\n", - " 'atlanta, belleville dans un salon',\n", - " \"a recevoir l'inspiration un peu comme une première chanson\",\n", - " 'so what you want, yo?',\n", - " 'un peu de cha-cha-cha',\n", - " 'and what you want, yo?',\n", - " 'un peu de sucre de cachaça',\n", - " \"i said this ain't my first time\",\n", - " \"and this ain't my first rhyme\",\n", - " \"c'est du hip hop on donne ça\",\n", - " 'version makossa',\n", - " \"c'est quoi ton style, man?\",\n", - " 'i want some hip-hop shit',\n", - " \"mais qu'est ce qu'tu veux man?\",\n", - " 'i want some hip-hop shit',\n", - " \"si c'est vrai que t'assailles le beat\",\n", - " \"j'te passe du papier, un bic\",\n", - " 'you know coffee and the sugar cats rap every week',\n", - " 'the same album comes back to your first time, your first line',\n", - " \"cause this is how, it's going down, i gotta say\",\n", - " 'that it all comes back to your first time, your first rhyme',\n", - " \"cause this is how, it's going down, i gotta say\",\n", - " 'woo-oohh',\n", - " 'sugar sugar',\n", - " 'yeah, yeah, baby',\n", - " 'i (i) think about you (think about you), everyday, everynight, baby',\n", - " \"i (i) think about you (think about you), i know sometimes it ain't right, baby\",\n", - " 'i (i) think about you (think about you), woo-woo-woah',\n", - " 'i (i) think about you (think about you, baby)',\n", - " \"j'les compare toutes avec toi, même si j'attends la bonne\",\n", - " \"j'visualise ton corps même sans te mater, damn\",\n", - " \"faut que tu sortes de ma tête, ça fait quatre titres où je parle de toi dans l'album (sans compter l'interlude)\",\n", - " \"tu m'as blessé beauté, mais pour moi tu n'étais que majesté\",\n", - " \"paris me rappelle à toi, donc j'suis parti voir dave dans un petit club de manchester\",\n", - " 'on a posé o.d, on a croisé des dj',\n", - " \"sans m'étaler, on a froissé le budget\",\n", - " 'on a déconné sous le ciel étoilé, quand même on est allés voir le concert de bj',\n", - " \"me voilà à chicago, loin de la où t'as vu naître mes peines\",\n", - " 'dans un quartier du sud, où les blancs normalement ne peuvent pas mettre les pieds',\n", - " \"mais je pense encore à toi, je suis parti sans savoir où j'allais\",\n", - " \"il ne me restait de ta bouche qu'un mot d'amour tracé sur mon miroir avec ton rouge à lèvres\",\n", - " 'et je pense encore à toi (toi)',\n", - " 'i (i) think about you (think about you), everyday, everynight, baby',\n", - " \"i (i) think about you (think about you), i know sometimes it ain't right, baby\",\n", - " 'i (i) think about you (think about you), woo-woo-woah',\n", - " '(i (i) think about you (toi)',\n", - " 'yeah yeah yeah yeah yeah)',\n", - " \"thinkin' 'bout you, thinkin' 'bout you\",\n", - " \"all day, all night, steady thinkin' 'bout you\",\n", - " \"make my money, then i'm thinkin' 'bout you\",\n", - " \"all day, all night, steady thinkin' 'bout you\",\n", - " \"thinkin' 'bout you, after i make money\",\n", - " 'if i want the tea, you know i want the honey',\n", - " 'like a hundred fifty thousand, just for the drumset',\n", - " 'if you niggas wanna fuck off, nigga come for the drama',\n", - " \"i know you want that lovin', yeah\",\n", - " \"the love ain't on the way (southside)\",\n", - " \"southside, yeah, the love ain't on the way\",\n", - " \"the love ain't on the way (lovin', yeah)\",\n", - " \"southside, yeah the love ain't on the way\",\n", - " '(yah, yah, yah, yah)',\n", - " \"j'étais sur un gros business, mais comme t'étais dans ma tête j'suis parti voir des copines à tokyo (sugoi!)\",\n", - " 'mon associé m\\'a dit \"reviens dans la capitale, tu peux pas planter ton client\"',\n", - " \"alors je suis revenu pardi, là j'suis dans l'stud', j'vais bientôt partir et quitter paris\",\n", - " \"c'est plus facile de trouver d'la pure qu'une putain d'place de parking\",\n", - " \"donc l'équipe débarque en amérique dans un tie-quar de riches\",\n", - " 'en studio les cain-ri font des sheitanneries',\n", - " 'mes gars viennent de chicago, les chaînes en or brillent',\n", - " 'personne ne comprend rien sauf les schémas de rimes',\n", - " \"car ce truc est universel, comme l'étude des versets\",\n", - " 'ce truc est universel, y a pas de diversion',\n", - " \"mon feu est deversé, j'enregistre dix versions\",\n", - " \"i know you want that lovin', yeah\",\n", - " 'paris on the way (southside)',\n", - " 'southside, you know that paris on the way (paris sud, paris sud, paris sud, eh)',\n", - " \"paris on the way (lovin', yeah)\",\n", - " 'southside, you know that paris on the way',\n", - " '(yah)',\n", - " \"thinkin' 'bout you, thinkin' 'bout you\",\n", - " \"all day, all night, still thinkin' 'bout you\",\n", - " \"bake my money, (ouais, ouais) then i'm thinkin' 'bout you (ouais ouais)\",\n", - " \"all day, all night, still thinkin' 'bout you\",\n", - " \"- i wanna' go, like, when you... man, bro, let me just put one track to the whole song, you can still keep cut- ya mean ?\",\n", - " '- ok ok ok... yeah yeah',\n", - " '- how it used to be, like the old school records was man, it feel like it was like this bro',\n", - " '- yeah yeah yeah',\n", - " '- it was a marriage, it was a marriage',\n", - " '- yeah yeah',\n", - " \"- that's what i die for\",\n", - " 'feeling my love, feeling my love',\n", - " \"n'approchez pas my sweet baby love #wheresay\",\n", - " 'sexy banana wait and see',\n", - " 'ohh my love, ohh my love',\n", - " 'feeling my love, feeling my love',\n", - " \"n'approchez pas my sweet baby love\",\n", - " 'sexy banana wait and see',\n", - " 'ohhh my love, ohh my love',\n", - " 'est-ce que tu veux nye bras? (ma girl)',\n", - " \"faut pas l'approcher dèh (ma girl)\",\n", - " \"that's ma girl girl girl girl (ma girl)\",\n", - " 'feeling ma girl girl girl girl (ma girl)',\n", - " 'est-ce que tu veux nye bras oooh? (my girl)',\n", - " \"faut pas l'approcher dèh (ma girl)\",\n", - " \"that's ma girl girl girl girl (ma girl)\",\n", - " 'feeling ma girl girl girl girl (ma girl)',\n", - " 'under you dey my skyfall',\n", - " 'like to use',\n", - " 'loving chilling you end of time (boom boom boom boom)',\n", - " \"girl with you we've special time (boom boom boom boom)\",\n", - " 'wanna see you everytime (boom boom boom boom)',\n", - " '(boom boom boom boom)',\n", - " 'est-ce que tu veux nye bras? (ma girl)',\n", - " \"faut pas l'approcher dèh (ma girl)\",\n", - " \"that's ma girl girl girl girl (ma girl)\",\n", - " 'feeling ma girl girl girl girl (ma girl)',\n", - " 'est-ce que tu veux nye bras oooh? (my girl)',\n", - " \"faut pas l'approcher dèh (ma girl)\",\n", - " \"that's ma girl girl girl girl (ma girl)\",\n", - " 'feeling ma girl girl girl girl (ma girl)',\n", - " 'finalement je suis un commando',\n", - " 'je suis son body garde dans le game',\n", - " 'trop de sniper tourne autour de mon bébé',\n", - " 'mais moi je ne laisse pas le way (sodja)',\n", - " 'ah, que voulez-vous?',\n", - " \"ah, mais qu'est-ce que voulez-vous?\",\n", - " 'reculez, que voulez-vous?',\n", - " \"ah, mais qu'est-ce que voulez-vous vous?\",\n", - " 'oh boboé ya dra wo',\n", - " 'oh boboé ya dra wo',\n", - " 'dra comme ça',\n", - " 'oh boboé ya dra wo',\n", - " 'oh boboé ya dra wo',\n", - " 'dra comme ça',\n", - " 'oh bobobobobo bobo fiãfi tɔ',\n", - " 'oh bobobobobo bobo',\n", - " 'oh bobobobobo bobo fiãfi tɔ',\n", - " 'oh bobobobobo bobo',\n", - " 'est-ce que tu veux nye bras? (ma girl)',\n", - " \"faut pas l'approcher dèh (ma girl)\",\n", - " \"that's ma girl girl girl girl (ma girl)\",\n", - " 'feeling ma girl girl girl girl (ma girl)',\n", - " 'est-ce que tu veux nye bras oooh? (my girl)',\n", - " \"faut pas l'approcher dèh (ma girl)\",\n", - " \"that's ma girl girl girl girl (ma girl)\",\n", - " 'feeling ma girl girl girl girl (ma girl)',\n", - " 'elle est my girl girl girl girl girl',\n", - " \"moi je l'aime l'aime l'aime l'aime\",\n", - " 'elle est dans mon cœur coeur coeur',\n", - " 'lover girl ohhh',\n", - " 'girl girl girl girl girl',\n", - " \"please girl don't come around my girl\",\n", - " 'i love my girl girl girl girl girl',\n", - " \"she's one eh eh eh\",\n", - " 'a real type a real type i love',\n", - " 'a real type a real type i love oh my gosh',\n", - " 'a real type a real type i love',\n", - " 'a real type a real type i love oh my gosh',\n", - " 'feeling my love, feeling my love',\n", - " \"n'approchez pas my sweet baby love\",\n", - " 'sexy banana wait and see',\n", - " 'ohh my love, ohh my love',\n", - " 'feeling my love, feeling my love',\n", - " 'sexy banana wait and see',\n", - " 'ohhh my love, ohh my love',\n", - " 'ehhhhhhhh',\n", - " '(french romance (ouh~)',\n", - " 'bonjour)',\n", - " 'hello stranger, younkie, touriste',\n", - " 'bienvenue, welcome, to visit paris',\n", - " \"pour vous j'allume la grande ville de lumière\",\n", - " 'paris froufrou, paris mystère',\n", - " 'very typique, la french teuteuch',\n", - " 'il fait tatache, titi gavroche',\n", - " 'quand walt disney prend la bastoche',\n", - " 'paris musée fait les popoches',\n", - " 'chorus :',\n", - " '(if you need a tourist guy for french romance',\n", - " 'we are your last chance, so hello donny and say manu chao)',\n", - " 'what you need is what i say',\n", - " 'so typique is so français',\n", - " 'so paris is so cliché',\n", - " 'shubilabab ah (x2)',\n", - " 'what you need is what i say',\n", - " 'so typique is so français',\n", - " '(fronguy, french kiss is so bouloub',\n", - " 'please kiss me malibiboup)',\n", - " '(french romance)',\n", - " 'fait chauffé la visa à défaut des méninges',\n", - " \"à saint germain des prés, y'en a du beau linges\",\n", - " 'entre zadigue, voltaire, bhl et gap',\n", - " 'ainsi parlait zara chez jean-paul sap',\n", - " \"j't'emmène à bical voir amélie poulain\",\n", - " 'récupéré ma com, dans son bar à tapin',\n", - " \"tu veux du gay paris, des clichés d'zazou\",\n", - " \"faites cheese c'est pique-poquet à pompompidou\",\n", - " 'chorus :',\n", - " '(if you need a tourist guy for french romance',\n", - " 'we are your last chance, shabalibaloum dop (x2))',\n", - " 'what you need is what i say',\n", - " 'so typique is so français',\n", - " ...]},\n", - " 'data': ['just give me that smile',\n", - " 'oh, baby ! come on',\n", - " \"i can't live without it, no, i can't\",\n", - " 'i need that one, that twice, that three',\n", - " 'just give me that smile (donne-moi ce sourire)',\n", - " 'oh, baby ! come on (donne)',\n", - " \"i can't live without it, no, i can't\",\n", - " 'i need that one (yeah), that twice (han), that three',\n", - " 'but just give me that smile',\n", - " \"donne-moi ce sourire que je l'ajoute à ma collec'\",\n", - " 'un de plus dans ma smilothèque avec celui qui dessine tes fossettes',\n", - " 'say cheese ! car le petit oiseau va sortir',\n", - " 'trois, deux, un et immortaliser ce sourire',\n", - " 'just give me that smile',\n", - " \"laisse-moi te tirer le portrait, j'suis un maniaque d'images\",\n", - " 'un sourire à chaque mot, sourire à chaque note, sourire à chaque visage',\n", - " '36 poses pour figer le temps, faire kiffer les gens',\n", - " 'et voir briller, briller, briller les dents',\n", - " 'just give me that smile (donne-moi ce sourire)',\n", - " 'oh, baby ! come on (donne)',\n", - " \"i can't live without it, no, i can't\",\n", - " 'i need that one (yeah), that twice (han), that three',\n", - " 'but just give me that smile',\n", - " 'oublie tes états d’âmes, je zoome',\n", - " 'lâche ta plus belle arme, ça tourne',\n", - " \"j'veux pas de maquillage de clowns\",\n", - " 'de masques ou de personnages, cartoon',\n", - " 'développer les négatifs de ces moments positifs',\n", - " \"fixer, fixer, fixer, fixer l'objectif\",\n", - " 'just give me that smile',\n", - " 'donne moi ce sourire, ce contraste',\n", - " 'ce pigment sur film noir et blanc, smile',\n", - " 'technicolor, ultra brite',\n", - " \"édenté ou émail diamants, c'est dans la boite\",\n", - " \"en peloch' ou polar ou pixels\",\n", - " \"j'veux pas du small... mais du smile xxl\",\n", - " 'just give me that smile (donne-moi ce sourire)',\n", - " 'oh, baby ! come on (donne)',\n", - " \"i can't live without it, no, i can't\",\n", - " 'i need that one (yeah), that twice (han), that three',\n", - " 'but just give me that smile',\n", - " 'just give me that smile (allez, donne-moi ce sourire)',\n", - " 'oh, baby ! come on (allez, juste un)',\n", - " \"i can't live without it, no, i can't\",\n", - " 'i need that one (yeah), that twice (han), that three',\n", - " 'just give me that smile (donne-moi ce sourire)',\n", - " 'oh, baby ! come on (donne)',\n", - " \"i can't live without it, no, i can't\",\n", - " 'i need that one (yeah), that twice (han), that three',\n", - " 'but just give me that smile',\n", - " 'i need that one, that twice, that tree',\n", - " 'but just give me that smile',\n", - " 'yeah yeah, yeah',\n", - " 'yeah yeah, yeah yeah',\n", - " 'ana w 3chiri west marina',\n", - " 'chella satat chafo fina',\n", - " 'we7da fihom sayga bina',\n", - " 'galt liha ma tfreini 7ta lmarina (yeah)',\n", - " 'wella agadir oufella, oufella',\n", - " 'oufella oufella',\n", - " '7ta l agadir oufella oufella',\n", - " 'mabaghich ntfella, ntfella',\n", - " 'ana w 3chiri west marina',\n", - " 'kantlowto 3la sata smiytha katrina',\n", - " 'qué pasa mi gasolina',\n", - " 'matkhafich menni ga3 ma dareb kina',\n", - " 'yeah yeah, jaya l chi 3am ma kawina',\n", - " 'kmina semm bach ydawina, yeah yeah',\n", - " 'f kolla track flow assassinant, yeah yeah',\n", - " 'f kolla scène public d san siro',\n", - " 'kolchi mkhellet lfer7a f sirop yeah yeah',\n", - " 'gha kanlowwi lowwi, w nbda ntfekker gha b lil louis v, margiela',\n", - " \"cc d'rif f nif, la sa7bi gha bsa7tek khellini ndozi ghir b kherdala\",\n", - " 'yeah yeah, wakha kberna m3a lmja7em',\n", - " 'ja men lor w 9olbni cupidon',\n", - " 'sur mon 31, je suis dans mon élément, choufni...',\n", - " 'ana w 3chiri west marina',\n", - " 'chella satat chafo fina',\n", - " 'we7da fihom sayga bina',\n", - " 'galt liha ma tfreini 7ta lmarina (yeah)',\n", - " 'wella agadir oufella, oufella',\n", - " 'oufella oufella',\n", - " '7ta l agadir oufella oufella',\n", - " 'mabaghich ntfella, ntfella',\n", - " 'ana w 3chiri west marina',\n", - " 'zit argan, berrad atay',\n", - " 'gddam lmarina kanfekker f lghorba every single day',\n", - " 'f sofitel massage, finition gommage',\n", - " 'bg, trop mimi bla crimi bla dopage',\n", - " 'hdi shibtek la 3achratni fchi pausage',\n", - " \"toto ga3 ma khalwh kho c'est dommage\",\n", - " \"b9a 7adi l'calculette tal ghedwa, bnj li ghaterte9 ton décodage\",\n", - " 'jeune déséquilibré sauvage makina kinka7kom kamlin f chi sarcophage',\n", - " 'loca vida f marina, double tour ga3 ma 3yina, yeah yeah',\n", - " 'ch7al ch7al sebbo fina melli doublnahom visaw fina, yeah yeah',\n", - " \"c'est l'heure de l'enquête, c'est l'amitié qui t'inquiète\",\n", - " \"dima nefs l'concept, ya\",\n", - " 'nwelli international b7al skepta',\n", - " 'rap maghribi kamel bin yeddi, machi b7alk nta rih li kayji yddik',\n", - " 'bo7di m9atale l rassi ji tchoufna...',\n", - " 'ana w 3chiri west marina',\n", - " 'chella satat chafo fina',\n", - " 'we7da fihom sayga bina',\n", - " 'galt liha ma tfreini 7ta lmarina (yeah)',\n", - " 'wella agadir oufella, oufella',\n", - " 'oufella oufella',\n", - " '7ta l agadir oufella oufella',\n", - " 'mabaghich ntfella, ntfella',\n", - " 'ana w 3chiri west marina',\n", - " \"cette nuit j'ai pas dormi, on m'a appris un décès\",\n", - " 'un ange nous a laissé',\n", - " 'j’repense à toutes les fois ou j\\'ai dit : \"je suis pressé\"',\n", - " 'au lieu de la voir quand je zonais sur le pc',\n", - " \"7h du mat', la lumière commence à m'agresser\",\n", - " 'je tourne dans paris sud comme la mafia trece',\n", - " \"j'ai dit à cette fille de ne pas m'adresser la parole\",\n", - " 'elle est vexée mais mon cœur est blessé',\n", - " 'j’me suis toujours dressé contre ceux qui veulent me dresser',\n", - " 'même s’il pleut ici le ton des gens est très sec',\n", - " 'noyé dans les excès, dans le mal on excelle',\n", - " \"un mec cède à l'abandon, il se tue dans les wc\",\n", - " 'une famille de réfugiés crie, étendue par terre',\n", - " 'elle finit rapatriée dans des charters',\n", - " 'j’m’en tape des chattes mal maquillées',\n", - " 'ou de briller dans les charts frère',\n", - " 'j’sors le magma qui est dans mes artères',\n", - " '7h du matin, mes démons complotent',\n", - " \"vu que ce monde nous monte l'un contre l'autre\",\n", - " \"pour aider l'oubli, y’a des moyens d'pression\",\n", - " 'un journal tenu par des lobbys ça fait bonne impression',\n", - " 'pendant qu’les dirigeants resserrent les liens avec ces gens',\n", - " 'des mômes meurent dans les territoires annexés',\n", - " 'pendant qu’les dirigeants resserrent les liens avec ces gens',\n", - " 'des mômes meurent dans les territoires annexés',\n", - " 'got me thinkin about the changes that i didn’t make',\n", - " 'all night, all night, all night',\n", - " 'they just wanna run your life, fuck what they say',\n", - " 'all night, all night, all night',\n", - " \"on dit qu'on veut changer, ça veut pas dire qu'on essaie\",\n", - " 'all night, all night, all night',\n", - " \"c'est pour ceux qui étaient là quand personne me connaissait\",\n", - " 'all night, all night, all night',\n", - " '\"another day another dollar\", that\\'s what they say',\n", - " 'i just wanna get paid',\n", - " 'all we see is that the world is out to get me',\n", - " \"but maybe that's me\",\n", - " 'i gotta get a job just to find another job',\n", - " \"this life don't fuck with me\",\n", - " 'all on tv is the things that i should never buy',\n", - " 'lord knows i tried',\n", - " 'wake up in the morning and i ask myself',\n", - " 'with everybody hurting, should i love thy wealth ?',\n", - " 'love these hoes and buy new clothes',\n", - " \"maybe ain't enough to do these shows\",\n", - " 'give that hope wearing all this gold',\n", - " 'smoke this dope while i save these souls',\n", - " \"the world so cold that i'm on a roll\",\n", - " \"keep her on the road while she's diggin' like a troll\",\n", - " 'gotta take it where they never took it',\n", - " 'catch a flight but i never book it',\n", - " \"now i'm livin' like i never wasn't\",\n", - " \"money matters but it really doesn't\",\n", - " 'imma make it till the day i die',\n", - " \"don't believe in death from life i have\",\n", - " 'we wanna change it but we never do it',\n", - " 'do what you want if it feels alright',\n", - " '×2',\n", - " 'got me thinkin about the changes that i didn’t make',\n", - " 'all night, all night, all night',\n", - " 'they just wanna run your life, fuck what they say',\n", - " 'all night, all night, all night',\n", - " \"on dit qu'on veut changer, ça veut pas dire qu'on essaie\",\n", - " 'all night, all night, all night',\n", - " \"c'est pour ceux qui étaient là quand personne me connaissait\",\n", - " 'all night, all night, all night',\n", - " '×3',\n", - " '7 heures 77',\n", - " 'now they wanna ride with us',\n", - " 'now they wanna shine with us',\n", - " 'uh, my young niggas in the building',\n", - " 'my dopeboys in the building',\n", - " 'got bad bitches in the building',\n", - " 'goddamn',\n", - " \"better tell them bitches, it's going down\",\n", - " 'what the fuck them niggas want?',\n", - " 'who the hell them bitches was?',\n", - " \"my nigga was only tryna' get a couple dollars in his pockets\",\n", - " 'coucou flow, murdering beats',\n", - " 'now you know how a nigga rocking',\n", - " 'rollie on, got my gun',\n", - " \"you know a nigga really robbin'\",\n", - " 'rollie on, got my gun',\n", - " 'in case a nigga try to rob me',\n", - " \"told them pussy niggas better keep my name out they motherfuckin' mouth\",\n", - " 'i guess they love the way it taste',\n", - " \"cause them niggas always bitchin' now\",\n", - " \"my city gon' blow\",\n", - " \"my city gon' blow\",\n", - " \"my city gon' blow, my city gon' blow\",\n", - " \"i'm talkin' bout' the four\",\n", - " \"my city gon' blow, my city gon' blow\",\n", - " \"my city gon' blow\",\n", - " \"my city gon' blow, my city gon' blow\",\n", - " \"i'm talkin' bout the four\",\n", - " \"my city gon' blow\",\n", - " \"c'est pour les parasites qu'on a sortis payback\",\n", - " 'ouais, si tu nous payes pas, gros tu connais la suite',\n", - " \"à ma gauche y'a lk qui tire l'white beretta\",\n", - " 'à ma droite enima, ouais gros surveille ta fille',\n", - " \"j'le fais pour la monnaie, non pas pour les pétasses\",\n", - " \"si, si j'parle de pétard, c'est qu'on vient prendre ta vie\",\n", - " 'tous une enfance délicate',\n", - " \"j'le fais pour mon 514\",\n", - " \"j'le fais pour mes bandits, j'le fais pour ma ville\",\n", - " 'rafale sur toute la ville',\n", - " \"on nettoie tout l'calibre\",\n", - " \"l'alibi est préparé (ratatataw)\",\n", - " \"t'as vendu la drogue toute ta vie\",\n", - " \"t'es encore là à déballer (ratatata)\",\n", - " \"arrête d'faire le tron-pa\",\n", - " \"t'as beau nous mentir, mais le regard ne trompe pas\",\n", - " 'toujours coulé mes maths, jamais tourné en rond comme un compas',\n", - " \"si j'meurs, j'meurs au combat\",\n", - " \"mes frères, c'pas mes contacts\",\n", - " \"si j'roule un backwood, c'est pour m'canaliser\",\n", - " \"ces rappeurs jouent les faux, en vrai ils n'le sont pas\",\n", - " 'devant la kalash, y sont tous paralysés',\n", - " 'tous vécu la galère, dealé pour un salaire',\n", - " 'toutes mes têtes cramées finissent en couvre-feu',\n", - " 'tes gars ouvrent leurs grandes gueules, les miens ouvrent le feu',\n", - " 'ma mère m’a dit : \"respecte le coran et ton dieu\", yeah',\n", - " \"j'ai dit tant qu'tu seras proche du hood, moi j'm'en fou d’eux, yea\",\n", - " \"c'matin j’ai prié pour qu'ma nouvelle bitch fasse deux, yea\",\n", - " 'maman, ton fils sait faire du feu même quand il pleut, yea',\n", - " \"j'veux qu'mes ennemis et les traitres viennent à ma mort\",\n", - " \"j'sais qu'le devil m'laissera rentrer dans leur corps\",\n", - " \"pussyboy, j'peux pas relaxer, j'suis d'jà mort, yea\",\n", - " \"pussyboy, j'fais des billets tous les soirs, yea\",\n", - " \"my city gon' blow\",\n", - " \"my city gon' blow\",\n", - " \"my city gon' blow, my city gon' blow\",\n", - " \"i'm talkin' bout' the four\",\n", - " \"my city gon' blow, my city gon' blow\",\n", - " \"my city gon' blow\",\n", - " \"my city gon' blow, my city gon' blow\",\n", - " \"i'm talkin' bout' the four\",\n", - " \"my city gon' blow\",\n", - " \"let me, let me in, or else we shuttin' it down\",\n", - " 'we came to make it rain',\n", - " \"poppin' bottles, droppin' liquors around\",\n", - " \"if them niggas actin' up, we gon' meet them outside\",\n", - " 'loudest niggas in the room',\n", - " 'but still weakest outside',\n", - " 'fully loaded magazine',\n", - " \"can't forget about the beam\",\n", - " 'one on your knuclehead',\n", - " 'watch this nigga do the dead',\n", - " \"i wanna see you do the talkin' now\",\n", - " \"probably won't cause this nigga dead\",\n", - " 'welcome to my city buddy, where them niggas really dying everyday',\n", - " \"bitches sellin' pussy, police watchin', nigga we gon' do it anyway\",\n", - " \"shout-out to them young niggas gettin' pay\",\n", - " 'gotta double up the k',\n", - " 'foreign whips, we roll out',\n", - " \"i'm iced up and i'm gold out\",\n", - " \"if you ask about us, they'll tell you\",\n", - " 'them young niggas, they on now',\n", - " \"my city gon' blow\",\n", - " \"my city gon' blow\",\n", - " \"my city gon' blow, my city gon' blow\",\n", - " \"i'm talkin' bout' the four\",\n", - " \"my city gon' blow, my city gon' blow\",\n", - " \"my city gon' blow\",\n", - " \"my city gon' blow, my city gon' blow\",\n", - " \"i'm talkin' bout' the four\",\n", - " \"my city gon' blow\",\n", - " 'back to the future',\n", - " 'yeah (huh)',\n", - " 'freebandz!',\n", - " '9.3',\n", - " 'future hendrix for homage future the world (sevran)',\n", - " \"cause you knw what i'm sayin' fbg we global (rgt)\",\n", - " 'orh click',\n", - " \"i won't trust these bitches, these bitches gon' tell\",\n", - " \"we don't trust no snitch around, none of these bitches, these bitches gon' tell\",\n", - " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", - " 'motherfuck these police, nigga, my niggas they shooting at 12 (niggas shooting at police, boy)',\n", - " 'je me devais de les kalashnikover, je me balade au cimetière avec mes trophées (therapy)',\n", - " \"je fume un joint de beuh pour me doper, la guerre on va la faire, y'a r, je suis opé\",\n", - " 'je leur pisse dessus comme sur une aire de repos, les couilles se voient même de dos (2-7)',\n", - " \"balayette en traître, j'suis pas ton te-po, ici tous les coups sont vrais, t'es pas au rt-spo\",\n", - " \"ce qui te touche ne m'effleure pas (kaa-ris), j'rentre dans le carré comme bobby shmurda\",\n", - " \"ak chargé et tu smurferas, crystal, ck-cra, j'mélange dans la cuisine, tes implants, ton legging\",\n", - " \"sur le siège chauffant, ce n'est pas un leasing,mon gang est sur le listing (okay)\",\n", - " \"tu m'attaques il parait, rafale et ta chatte disparait\",\n", - " \"j'augmente la dose dans le trafic (pute), et la criminalité sur le graphique\",\n", - " \"même dans la saleté faut que je m'applique,j'fais des hat tricks, je viens d'afrique (fuck)\",\n", - " \"j'prends le pouvoir comme napoléon, roi soleil éclairé par les rayons\",\n", - " \"t'es ébloui par mes xénons, la gifle te donne les oreillons\",\n", - " \"i won't trust these bitches, these bitches gon' tell\",\n", - " \"we don't trust no snitch around, none of these bitches, these bitches gon' tell\",\n", - " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", - " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", - " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", - " \"we don't carry no snitch around, none of these bitches, these bitches gon' tell\",\n", - " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", - " 'got the molly, got white, got the lean, got the kush, got the purp and the pills',\n", - " \"j'suis dans le bunker comme oussama,psychogun, rayon gamma\",\n", - " 'tout droit, direct dans vos tarmas en même temps que la jordan 11 blue gamma',\n", - " 'depuis \"vendeur de nah nah\", organisés comme le fatah',\n", - " 'je défouraille tous ces bâtards, je les mange en steak tartare',\n", - " \"tu veux rapper comme moi, t'es cloné, j'fais du liquide, de la monnaie\",\n", - " \"je passe devant toi, t'es sonné, tout se passe sous ton gros nez (s-e)\",\n", - " \"j'suis pépère, bttf, zanotti (wouh)\",\n", - " 'armes de guerre, je possède toute la panoplie',\n", - " \"i won't trust these bitches (sevran), these bitches gon' tell\",\n", - " \"we don't trust no snitch around, none of these bitches, these bitches gon' tell\",\n", - " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", - " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", - " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", - " \"we don't carry no snitch around, none of these bitches, these bitches gon' tell\",\n", - " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", - " 'got the molly, got white, got the lean, got the kush, got the purp and the pills',\n", - " 'selling bricks on deck like jackie chan, got them hoes on deck like shoestrings',\n", - " \"with a brand new lambo shoestring, i'm a gutter ass nigga i don't do 'caine\",\n", - " \"got a whole lot of autotune on it, no t-pain, 36 o's in the whip, no keychain\",\n", - " 'young ass white bitch, amy grant, nigga,young rich nigga hanging with penitentiary niggas',\n", - " 'motherfuck the feds, fuck illuminati',\n", - " \"nigga we ain't scared, this a kamikaze\",\n", - " 'order more bitches, order more bottles, we doing this shit, we might not see tomorrow',\n", - " 'two hundred bitches from paris on my timeline, they might have went all the way this time',\n", - " \"treat a nigga like a one of a kind, diamonds hanging, i'm in sierra leone\",\n", - " \"fuck with a rich nigga if that's what you want, come fuck a rich nigga, that's what you want\",\n", - " \"ace of spades and kush, oh that's what we on, you niggas trying to buy me? know they some clones\",\n", - " 'drink your molly, mix it all on up, these persian bitches know they all want us',\n", - " \"i won't trust these bitches (2-7), these bitches gon' tell\",\n", - " \"we don't trust no snitch around, none of these bitches, these bitches gon' tell\",\n", - " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", - " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", - " \"motherfuck these police, nigga, my niggas they shooting at 12 (i'm a young nigga, young nigga)\",\n", - " \"we don't carry no snitch around, none of these bitches, these bitches gon' tell\",\n", - " \"i'm a hood nigga straight out the motherfucking gutter, i serve the whole bail\",\n", - " 'got the molly, got white, got the lean, got the kush, got the purp and the pills',\n", - " 'therapy !',\n", - " 'kaaris !',\n", - " 'kaaris !',\n", - " 'kaaris !',\n", - " \"féfé west la cité, survêt' pp kimpembe\",\n", - " 'ntiy7o ay bambina, vite fait bien fait ki mbappé',\n", - " 'tabac west lpipa, kharej pila men dari',\n", - " 'olifly, sandale fila, jay sakhet ki l3asifa dial katrina',\n", - " \"wallah, wesh, c'est comment double to riina\",\n", - " 'finma y7et lkhedma ka ykoun assassinat',\n", - " 'gallek rapper dareb selfie m3a sina',\n", - " '3ali f derbi, f lgame grande ibnu sina',\n", - " 'wakha lglb 9asse7, mama li touchina',\n", - " 'salsa brésilienne m3a draga f lcouzina',\n", - " 'respecté b7al chi baleine f lcasino',\n", - " 'weld bnj city block tale9 zino',\n", - " \"légende dl'époque, mezzikti médoc\",\n", - " 'vero pazzo marocchino west lblock',\n", - " 'mezzikti solo, ma 3endi ta colloc',\n", - " \"caméléon c'est du jamais vu, hadchi kollo déjà-vu\",\n", - " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", - " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", - " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", - " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", - " 'fiesta loca with la mifa',\n", - " 'ambiance romance, danse amicale',\n", - " 'double to 3onsori askip, ga3 maham tkoun dareb salib wella kippa',\n", - " 'gjami wasel l costa rica',\n", - " \"gha tchofni m'isolé f chi zona tropical\",\n", - " 'caramelo west lbocal',\n", - " 'jamais hna had lila, aji nichan w 9sed local',\n", - " 'vida scénario mkherbe9 ki babel',\n", - " 'bayet n7elmo b l3a9t casa de papel',\n", - " \"ga3 ma ntsenna ordre d'exécution, opérationnel\",\n", - " 'gjam w flow exceptionnel',\n", - " 'kolhom ka yt3awdo',\n", - " 'gha ndiwha kolha gha nkhelliwhom ka ytwa3do',\n", - " 'wakha ga3 ma ytwad3o',\n", - " 'ma f jibhom ta dinero w barkin ka yt3ando',\n", - " '(x2)',\n", - " \"légende dl'époque, mezzikti médoc\",\n", - " 'vero pazzo marocchino west lblock',\n", - " 'mezzikti solo, ma 3endi ta colloc',\n", - " \"caméléon c'est du jamais vu, hadchi kollo déjà-vu\",\n", - " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", - " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", - " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", - " 'déjà déjà-vu, déjà déjà-vu, kolchi déjà-vu',\n", - " \"so j'ai cette hipster broad, elle se prend pour kirsten dunst\",\n", - " 'au salon off avec ses talons hauts sur la piste de danse',\n", - " \"jacket de jeans pis l't-shirt de kill 'em all\",\n", - " \"mais parle-s'y pas de james hetfield, elle sait même pas si y'est mort\",\n", - " \"okay, j'ai cette scientifique, chimie, physique and all\",\n", - " 'elle étudie les plantes, elle connait tous les dinosaures',\n", - " \"elle aime pas la musique qu'j'écoute, elle dit que c'est vide de sens, que ça fait la glorification de l'ignorance\",\n", - " \"donc bref, c'est richard strauss quand qu'on chill ensemble, rick ross dès qu'j'la crisse dehors (boss)\",\n", - " \"j'sur t'es capable de compter jusqu'à six milliards\",\n", - " \"t'es peut-être ben bonne en chimie, mais tu manques de shimmy shimmy ya\",\n", - " \"faut qu'tu comprennes qu'on est bad boy for life, baby\",\n", - " 'so parle-moi pas de même, baby',\n", - " \"elle peut chiller dans notre élément tant qu'est assez smart pour comprendre qu'elle l'est moins qu'moi\",\n", - " \"first off all, flip un deux dollars, pile ou face, fucking get it back, arrête de jouer avec ton bread p'tit pit\",\n", - " 'fucking joue avec, pousse le souped-up touareg, crash le whip, fucking fous la merde',\n", - " \"fucking blow d'la fucking peinture off la table\",\n", - " 'yeah, shout-out au mont tremblant versant nord',\n", - " 'nasale, i do it',\n", - " \"strapped, i'm nice with the fifth, fucking tapette, toi t'es nice avec les fifs, how stupid\",\n", - " \"super smash bros, crazy whips, le grand prix à a-justice, jus d'tomate sous le capot\",\n", - " \"la vieille benz à mon autre boy, j'l'appelle grand daddy\",\n", - " 'intérieur blanc et sièges noirs, elle a cinq carries',\n", - " \"best believe le duster à cody c'est pas un balai\",\n", - " \"best believe ta bouche c't'un bol de toilette (ace)\",\n", - " \"best believe que quand tu m'vois m'frotter les deux mains, j'pull un hand rub comme birdman, so stupid, just holla at me\",\n", - " 'yeah, on veut that james hyndman money',\n", - " 'les sciences occultes, make a stupid white bitch your slave',\n", - " \"type money, j'rap avec la drive d'un proxénète\",\n", - " '(ah) prends ta tête to make money',\n", - " \"quand y'a d'la bisbille le whole crew d'vient michael bisping (bong!)\",\n", - " \"cnn, on veut that bloody money, faut qu'ça saigne\",\n", - " \"parce que j't'about mes vieux hommes comme les résidences soleil\",\n", - " 'yeah, vas-y, snuff-moi pour mon iphone',\n", - " 'vas-y, cogne-moi pour mon iphone',\n", - " 'vas-y, stab-moi pour mon iphone',\n", - " 'pull out un duster chrome, appelez david butler-jones',\n", - " \"j'pull un christian bale si tu hate, swing une hache dans un salon, les sofas plastifiés\",\n", - " \"but i doubt it man, j'suis nice with it, j'spend ce jeune bread, call me bryan williams\",\n", - " \"sept heure qui c'est\",\n", - " \"qui c'est\",\n", - " 'et cette habitant avec',\n", - " \"qu'est ce qu'il attend fait?\",\n", - " 'smoking',\n", - " \"je t'aimé, mon amour joli\",\n", - " \"what's the difference between smoking and drinking?\",\n", - " \"je t'aimé, mon amour joli\",\n", - " 'a nigga bout to take flight',\n", - " 'made it through the storms',\n", - " \"it's only right to get my light\",\n", - " 'danm right !',\n", - " 'nigga bout to take flight',\n", - " 'i made it through the storms',\n", - " \"it's only right to get my light\",\n", - " 'danm right !',\n", - " 'made it through the storms (x3)',\n", - " \"i was just jumpin' off the head of a bowser\",\n", - " \"now these old folks yellin' tellin' me pick up my trousers\",\n", - " \"man but i can't\",\n", - " 'gotta show my ass off to all of these doubters',\n", - " 'gimme credit or debt it or regret it when i be sending out flowers',\n", - " \"nigga i'm the, truth. excellence in a black form\",\n", - " 'martin luther king with a semi-automatic weapon screaming out \"nigga bring it on\"',\n", - " \"i got that, power. and nigga i be power trippin'\",\n", - " 'keep peace with folks in our position',\n", - " 'only good math up in our division huh',\n", - " \"some of y'all go where the wind blow\",\n", - " 'keep the noisy ? out the window cause in case a nigga tryna skeem on a ?',\n", - " \"nigga, don't, do it\",\n", - " \"i ain't a killer but don't push it\",\n", - " \"i got a lot of older cousins that care about me that ain't afraid to serve time behind a bullet\",\n", - " 'click click click click',\n", - " \"and that's my last warning\",\n", - " \"i know a lot of y'all want me out of here\",\n", - " 'go ahead do with the cash warrants',\n", - " \"i'm in a four corner room, nigga\",\n", - " 'four candles lit, nigga',\n", - " 'ill temped move, nigga',\n", - " 'bad news',\n", - " 'a nigga bout to take flight',\n", - " 'made it through the storms',\n", - " \"it's only right to get my light\",\n", - " 'danm right !',\n", - " 'nigga bout to take flight',\n", - " 'i made it through the storms',\n", - " \"it's only right to get my light\",\n", - " 'danm right !',\n", - " 'made it through the storms (x3)',\n", - " 'faut que je vise mon négro',\n", - " \"il faut que j'ai l'air un peu pro\",\n", - " 'il y a pas de vice, cesse de viser les plus faibles',\n", - " 'ils me méprisent comme calimero',\n", - " 'je suis haïs par leurs sentiments',\n", - " 'ils sont parmi tous ces gens qui me mentent',\n", - " \"j'ai la flemme de m'expliquer, je ne cesse de les piquer, oui j'ai tilté\",\n", - " 'fuck vos putains de manips, rester moi pour cette vie',\n", - " 'unique dans mon art de vie',\n", - " \"vont-ils me reprocher d'être utile ?\",\n", - " \"je n'ai pas de limite négro dans le jeu\",\n", - " 'des tas de lyrics un peu dangereux',\n", - " 'guette les enjeux jeune loup',\n", - " \"dans le calme on est frais qu'à nous deux\",\n", - " 'et vrai que mes putains de loups pèsent',\n", - " \"on se place pendant qu'eux ne font que jacter\",\n", - " \"j'ai lâché des vrais seize\",\n", - " 'pas de message, on est venu tout rafler',\n", - " 'les meufs nous collent car elles savent qui on est',\n", - " 'elles crient nos places car trop loin est le sommet',\n", - " 'une vie de dingue, un rythme trop effréné',\n", - " 'je ne suis pas bilingue mais les cainris aiment ce que je fais',\n", - " \"pas très loin de vivre ce dont j'ai rêvé\",\n", - " \"la meute debout pendant que d'autres vont pioncer\",\n", - " \"mon ex regrette maintenant qu'elle sait que j'ai percé\",\n", - " \"je l'insulte en lui disant ses quatre vérités\",\n", - " 'ce que ces négros peuvent jacter',\n", - " 'ciblent les miens et ça en secret',\n", - " 'je vous ai tous démasqué',\n", - " 'les visages tombent pas en toute sincérité',\n", - " \"ce soir j'éteins l'impatience\",\n", - " 'je tromperai la vigilance',\n", - " \"de cette douleur qui m'assiège\",\n", - " \"j'apprivoiserai l'aurore\",\n", - " \"le coeur brûlant d'effort\",\n", - " \"d'avoir déjoué tant de pièges\",\n", - " \"soyons tout ce que l'on a promis\",\n", - " \"soyons tout ce qu'on s'est promis (x 2)\",\n", - " 'yeah yeah everybody get down rock the planet',\n", - " 'yeah yeah rock the planet tout le monde debout',\n", - " 'et rock the planet, un, deux, trois come on',\n", - " '(refrain):',\n", - " \"took us so long (x 2) it won't be long\",\n", - " \"but we're going strong\",\n", - " \"it won't be longe (x 2) go on and on\",\n", - " \"we'll going on and on (x 2)\",\n", - " 'je suis un monde échoué',\n", - " 'je suis un monde à sauver',\n", - " \"fait à l'échelle de tes mains\",\n", - " 'les hommes sont comme des navires',\n", - " \"conscients du danger c'est dire\",\n", - " 'la tristesse de notre destin',\n", - " \"soyons tout ce qu'on a perdu\",\n", - " \"soyons tout ce que l'on a cru (x 2)\",\n", - " 'yeah yeah everybody get down rock the planet',\n", - " 'yeah yeah rock the planet tout le monde debout',\n", - " 'et rock the planet, un, deux, trois come on',\n", - " '(refrain):',\n", - " \"took us so long (x 2) it won't be long\",\n", - " \"but we're going strong\",\n", - " \"it won't be longe (x 2) go on and on\",\n", - " \"we'll going on and on (x 2)\",\n", - " 'rock the planet (x 4)',\n", - " \"it won't be longe\",\n", - " 'go on and on (x 2)',\n", - " 'ce soir je suis moi à nouveau',\n", - " 'un peu jean-françois bizot',\n", - " 'paris est redevenu le monde',\n", - " \"réveiller l'espoir qui dort\",\n", - " 'assis au pas de la porte',\n", - " 'calmer la rage qui déjà gronde',\n", - " 'yeah yeah everybody get down rock the planet',\n", - " 'yeah yeah rock the planet tout le monde debout',\n", - " 'et rock the planet, un, deux, trois come on',\n", - " '(refrain):',\n", - " \"took us so long (x 2) it won't be long\",\n", - " \"but we're going strong\",\n", - " \"it won't be longe (x 2) go on and on\",\n", - " \"we'll going on and on (x 2)\",\n", - " 'paroles rédigées et annotées par la communauté française de rap genius',\n", - " '(girl laughing)',\n", - " 'vibrer, une corde, une inspiration, un cil',\n", - " \"un cheveux, des antennes d'insectes\",\n", - " 'vibration, le son, la vie',\n", - " '(are you there, are you there?',\n", - " 'where are you?)',\n", - " 'un souffle, une veine qui bat, un frisson',\n", - " 'chaire de poule, les lèvres qui tressailles',\n", - " 'tressaillir, trembler brièvement',\n", - " \"sursauter a cause d'une émotion\",\n", - " '(can you see me?)',\n", - " 'une paupière qui cligne, un regard profond',\n", - " '(can you feel me?)',\n", - " 'une émotion vive, un amour impossible',\n", - " 'une sensation essentielle, inéluctable, inébranlable',\n", - " '(do you love me?)',\n", - " 'les hommes viennent de mars',\n", - " '(i love you)',\n", - " 'et les femmes viennent de vénus',\n", - " 'essentialiste',\n", - " '(let me in)',\n", - " 'nature féminine et masculine, différente par essence',\n", - " '(love me as i have loved you, as i have love you',\n", - " 'love me as i have loved you',\n", - " 'are you ready?)',\n", - " 'whoa, oh whoa, oh whoa, oh, oh whoa, oh',\n", - " 'hold my hand(hold my hand)',\n", - " 'sean paul, girl you know i care',\n", - " 'zaho, whoa, oh whoa, oh whoa, oh, oh whoa, oh',\n", - " 'yo, yo, yo(yo, yo, yo)',\n", - " 'alright then(hé, hé)',\n", - " 'so make me tell you this',\n", - " 'girl you know i care',\n", - " 'so if you ever seem to lose your way',\n", - " \"don't have no fear\",\n", - " 'hold my hand',\n", - " \"i'll be there girl, you know i care girl\",\n", - " \"'cause this love that we share\",\n", - " 'i will stay within ah de right direction',\n", - " \"don't have no fear\",\n", - " 'hold my hand',\n", - " \"i'll be there girl, you know i care girl, 'cause i care\",\n", - " '(zaho)',\n", - " \"oh, oh, le temps que j'ai me parait trop court\",\n", - " \"j'ai perdu trop de plumes parmi les vautours\",\n", - " \"combien de fois la vie m'a fait la cour\",\n", - " \"et combien de fois elle m'a joué des tours\",\n", - " \"j'ai crié(crié)\",\n", - " 'crié conne de mon amour',\n", - " \"je n'ai entendu que mon écho en retour\",\n", - " 'comme un boomerang, comme ta voix me manques',\n", - " 'tu me consoles quand tu chantes',\n", - " 'girl you know i care',\n", - " 'so if you ever seem to lose your way',\n", - " \"don't have no fear\",\n", - " 'hold my hand',\n", - " \"i'll be there girl, you know i care girl, cause i care\",\n", - " \"'cause this love that we share\",\n", - " 'i will stay within ah de right direction',\n", - " \"don't have no fear\",\n", - " 'hold my hand',\n", - " \"i'll be there girl, you know i care girl\",\n", - " 'all my love, all my heart',\n", - " 'well, this is what you getting girl from the start',\n", - " 'on the run, on the job',\n", - " 'me never yet keep a beat make it fall apart',\n", - " 'sweet is love but love is hard',\n", - " 'sometime you got to work pon it right round the clock',\n", - " 'never let it flop, never let it stop',\n", - " 'give thanks for what we got, me tell you this',\n", - " 'girl you know i care',\n", - " \"so if you ever seem to lose your way, don't have no fear\",\n", - " 'hold my hand',\n", - " \"i'll be there girl, you know i care girl\",\n", - " \"'cause this love that we share\",\n", - " \"i will stay within ah de right direction, don't have no fear\",\n", - " 'hold my hand',\n", - " \"i'll be there girl, you know i care girl, 'cause i care\",\n", - " '(zaho)',\n", - " 'tu as touché la cible, et je connais bien la suite',\n", - " 'pas moyen de fuire',\n", - " \"ce n'est pas qu'un feu de paille\",\n", - " \"j'ai tellement peur du vide\",\n", - " \"je veux fonçer, mais j'hésite mais mon coeur bât de plus\",\n", - " 'en plus vite boy',\n", - " \"j'aimerais tellement pouvoir te dire que loin de toi c'est\",\n", - " 'trop dure',\n", - " 'petit à petit je me fanne',\n", - " 'viens déposser tes ailes autour',\n", - " \"pour m'emmener loin de tout\",\n", - " 'girl you know i care',\n", - " 'so if you ever lose your way',\n", - " \"don't have no fear\",\n", - " 'hold my hand',\n", - " 'it is the right minute, the right hour to show my power',\n", - " 'so, let me shine, bloom like a flower',\n", - " 'for those who got too much self esteem',\n", - " 'keep in mind that knowledge reigns supreme',\n", - " \"i used to live fast, i knew you wouldn't last\",\n", - " 'so i changed and broke a bond with the past',\n", - " 'i saw the things clear: life is a nightmare',\n", - " 'you make money for a year then you out of there',\n", - " 'too bad in school you were so brillant',\n", - " 'street life and drugs sunk you into oblivion',\n", - " 'you should dig in your brain',\n", - " 'girls are really hard to entertain?',\n", - " 'no, yours like to be served',\n", - " \"ain't she greedy, don't you think she deserves\",\n", - " \"a smack: she's the arrow, you're the target\",\n", - " \"can't you see she's inloved with your wallet\",\n", - " \"so heed the world of a brother who don't eat swine\",\n", - " 'in a positive line, and my mind is divine',\n", - " 'explode in a flow of melody',\n", - " 'open your eyes fight the tragedy, brother wake up',\n", - " 'wake up',\n", - " \"dieu, allah n'ont jamais dit : tuez pour nous\",\n", - " 'alors pourquoi des pleurs, des cris, des morts partout',\n", - " 'les religions se veulent apôtres de la paix',\n", - " \"mais en leur nom combien d'enfants sont tombés?\",\n", - " 'combien de petits corps chétifs ont plié',\n", - " \"sous le poids d'une croix qu'il n'ont jamais portée\",\n", - " \"par la faute d'un homme qui s'est cru entité\",\n", - " 'qui rassembla ses fils et leur cria : tuez',\n", - " 'inutile de dire leurs armes, qui les fournissait?',\n", - " 'la vie de mille hommes vaut bien moins que ses propres intérêts',\n", - " 'la croyance est donc utilisée',\n", - " \"pour soutirer de l'argent, au peuple berné\",\n", - " 'alors se retourne dans sa tombe st vincent de paul',\n", - " \"en voyant que l'église est devenu un jeu de monopole\",\n", - " \"pour le rôle principal à présent c'est la course\",\n", - " \"bientôt l'ostie sera cotée en bourse\",\n", - " 'monde réveille-toi, va au-delà de ta foi',\n", - " \"et prend conscience du fait que l'on abuse de toi\",\n", - " 'tu dois arrêter dès à présent de fixer les cieux',\n", - " 'et regarder enfin la réalité dans les yeux',\n", - " \"il est aberrant qu'au nom de ça, il ait coulé tant de sang\",\n", - " \"qu'il se soit déifié en affluant leurs dents\",\n", - " \"faut-il qu'on vous secoue comme des shakers\",\n", - " \"pour comprendre qu'à ce problème, il n'y a qu'une solution:\",\n", - " 'wake up',\n", - " 'wake up',\n", - " 'you wake up in a world of combinations',\n", - " 'where is the future of the next generation',\n", - " 'you go to school to get a good education',\n", - " 'work to live and live to strive for your nation',\n", - " 'down with my possee we refused to dig that',\n", - " 'to admit that get played like \"pitty pack\"',\n", - " 'the asiatic automatic akhénaton, might be raw',\n", - " 'but is a better paragon',\n", - " 'than any other rhymer unstable',\n", - " 'remains green like a ping pong table',\n", - " 'than any politician, i teach revelation',\n", - " 'all kind of diss is a weak manifestation',\n", - " 'some say my brain is an encyclopedia',\n", - " \"i guess it's why i don't lie like a media\",\n", - " 'i break the wrath of the evil in half',\n", - " 'strickliy science in this paragraph',\n", - " 'ulema iam soul of islam',\n", - " 'listen, you will come to no harm',\n", - " 'by the way in the light we rest',\n", - " 'while the evil is plinged in the darkside of the mooncrest',\n", - " 'a.k.h.e.n.a.t.o.n. is a pro and',\n", - " 'elaborates a battle plan with no end',\n", - " \"this is the tongue of the truth, no fakin', no make up\",\n", - " 'get up and stand up, fight for your rights, brother',\n", - " 'wake up',\n", - " 'm o n d a y',\n", - " 'monday you love me',\n", - " 'tuesday you make me cry',\n", - " 'monday you lovely',\n", - " 'tuesday you say good bye',\n", - " 'i don’t wanna see you',\n", - " 'on your bad days',\n", - " 'nonono…',\n", - " 'telly*',\n", - " 'today you dry my tears',\n", - " 'ooooooh',\n", - " 'tomorrow you don’t care',\n", - " 'girl i bless the day',\n", - " 'that you came inna mi life',\n", - " 'and i swear to the stars',\n", - " 'that you have to be my wife',\n", - " 'but ah sometime winter',\n", - " 'sometime summer and',\n", - " 'our love it gonna last',\n", - " 'forever',\n", - " 'girl of my dreams',\n", - " 'don’t be my worst nightmare',\n", - " 'we’ve got so much loving to share',\n", - " 'today you dry my tears',\n", - " 'ooooooh',\n", - " 'pour le meilleur pour le pire',\n", - " 'pour le meilleur pour le pire',\n", - " 'monday you love me',\n", - " 'tuesday you make me cry',\n", - " 'monday you lovely',\n", - " 'tuesday you say good bye',\n", - " 'i don’t wanna see you',\n", - " 'on your bad days',\n", - " 'nonono…',\n", - " 'akhenaton',\n", - " 'les soirs ou tu n’es pas la',\n", - " 'mon poste joue ses ballades',\n", - " 'mon souffle est court tout tourne autour',\n", - " 'mon coeur est malade',\n", - " 'alors on vient dancer comme autrefois',\n", - " 'rappelles moi ces bon moments',\n", - " 'avant que la vie nous trace une autre voie',\n", - " 'quand tu souriais que tes mains douces enlacées',\n", - " 'mon cou',\n", - " 'es-tu bien la ? quels sont ces doigts qui prennent mon pouls ?',\n", - " 'je n’ai pas vu passer tout ces étés',\n", - " 'pendant l’hiver ma plume s’est asséchée',\n", - " 'm’ont blessé',\n", - " 'recite mes rubaïyat',\n", - " 'nos épopées vaillantes',\n", - " 'depuis le zénith de nos heures',\n", - " 'jusqu’a l’instant si silencieux',\n", - " 'des lumières vacillantes',\n", - " 'monday you love me',\n", - " 'tuesday you make me cry',\n", - " 'monday you lovely',\n", - " 'tuesday you say good bye',\n", - " 'i don’t wanna see you',\n", - " 'on your bad days',\n", - " 'nonono…',\n", - " 'oh, oh oh balance balance gal',\n", - " 'one di dance wall it wall them me three man',\n", - " 'oh, oh, oh de paname à kingston',\n", - " 'kossity and capelli i make them bouncy',\n", - " 'oh, oh, oh bouge sur le riddim man',\n", - " 'after the coke di one the powerly san',\n", - " 'oh, oh, oh lady lady',\n", - " 'oh, oh, oh faut que tu remues ton body',\n", - " 'faut que tu te sentes bien dans tes sapes, dans ta jupe et dans tes bottines',\n", - " 'soirée coquine, sors de ta routine',\n", - " 'oublie ton ex et ramène tes copines',\n", - " 'dancehall fever xxx routine',\n", - " \"prends pas le taxi on t'envoie la limousine\",\n", - " 'appelle tes sistas, tes voisines et tes cousines',\n", - " \"factory, enchaîne les tubes comme à l'usine\",\n", - " \"kossity capelli c'est la dancehall cuisine\",\n", - " 'oh, oh oh balance balance gal',\n", - " 'one di dance wall it wall them me three man',\n", - " 'oh, oh, oh de paname à kingston',\n", - " 'kossity and capelli i make them bouncy',\n", - " 'oh, oh, oh bouge sur le riddim man',\n", - " 'after the coke di one the powerly san',\n", - " 'oh, oh, oh lady lady',\n", - " 'oh, oh, oh faut que tu remues ton body',\n", - " 'and dancing oh, and dancing me show',\n", - " 'crusy na busy in nady slow',\n", - " 'shawn ken a po, po tunner get now',\n", - " 'forget your body for you gever cow',\n", - " 'no sexy a bet dem finer no oh',\n", - " 'dem gal a puss am fever get blow',\n", - " 'please no cross di dogter sweet did he but so',\n", - " 'grouv in a next so, whoow a say so',\n", - " 'gal all bal oh',\n", - " 'oh, oh oh balance balance gal',\n", - " 'one di dance wall it wall them me three man',\n", - " 'oh, oh, oh de paname à kingston',\n", - " 'kossity and capelli i make them bouncy',\n", - " 'oh, oh, oh bouge sur le riddim man',\n", - " 'after the coke di one the powerly san',\n", - " 'oh, oh, oh lady lady',\n", - " 'oh, oh, oh faut que tu remues ton body',\n", - " 'wil he band so, will he band',\n", - " 'will he band, will he band so, will he band',\n", - " 'wakédé, tout le monde doit danser le wakédé',\n", - " 'wakédé, tout le monde doit danser le wakédé',\n", - " 'au cul jadé, allume ton lighta, allume ton lighta',\n", - " 'allume ton lighta, allume ton lighta',\n", - " 'play so di i jo, président, play so di i jo',\n", - " 'gal all bal oh',\n", - " 'oh, oh oh balance balance gal',\n", - " 'one di dance wall it wall them me three man',\n", - " 'oh, oh, oh de paname à kingston',\n", - " 'kossity and capelli i make them bouncy',\n", - " 'oh, oh, oh bouge sur le riddim man',\n", - " 'after the coke di one the powerly san',\n", - " 'oh, oh, oh lady lady',\n", - " 'oh, oh, oh faut que tu remues ton body',\n", - " 'appelle suzy, caroline, asma et pauline',\n", - " 'dancehall folie, ici il y a que des xxx',\n", - " 'elles sont toutes jolies, toutes catégories',\n", - " 'même si on reste poli, jamais ça xxx',\n", - " 'one fast to slow, bouge sur le tempo',\n", - " \"ce soir tu l'as dans la peau tu sais qui sont les capos\",\n", - " \"allume ton zippo, nous on a tout ce qu'il faut\",\n", - " \"si t'as aucun défaut, allez vas-y fais ton show\",\n", - " 'oh, oh oh balance balance gal',\n", - " 'one di dance wall it wall them me three man',\n", - " 'oh, oh, oh de paname à kingston',\n", - " 'kossity and capelli i make them bouncy',\n", - " 'oh, oh, oh bouge sur le riddim man',\n", - " 'after the coke di one the powerly san',\n", - " 'oh, oh, oh lady lady',\n", - " 'oh, oh, oh faut que tu remues ton body',\n", - " \"seven years ago, but it's yesterday\",\n", - " \"i'm watching the sky but it's all grey\",\n", - " \"now i'm all alone i can feel the pain\",\n", - " \"you're still in my mind and you're still in my brain\",\n", - " \"seven years ago, but it's yesterday\",\n", - " \"i'm watching the sky but it's all grey\",\n", - " \"now i'm all alone i can feel the pain\",\n", - " \"you're still in my mind and you're still in my brain\",\n", - " \"seven years ago, but it's yesterday\",\n", - " \"seven years ago, but it's yesterday\",\n", - " \"seven years ago, but it's yesterday\",\n", - " \"seven years ago, but it's yesterday\",\n", - " \"i'm watching the sky but it's all grey\",\n", - " \"now i'm all alone i can feel the pain\",\n", - " \"you're still in my mind and you're still in my brain\",\n", - " \"seven years ago, but it's yesterday\",\n", - " \"seven years ago, but it's yesterday\",\n", - " 'octobre 2003',\n", - " 'le crou connait de sérieux dysfonctionnement',\n", - " 'pop hip se désintéresse du rock',\n", - " 'et commence à écrire des chansons pour florent pagny',\n", - " '\"l\\'agonie en patagonie\"',\n", - " 'king ju qui a fait copain copain',\n", - " 'avec le show business',\n", - " 'commence à fréquenter ...',\n", - " \"tandis que flip voudrait le beurre et l'argent du beurre (monté à l'envers)\",\n", - " \"c'est à cette époque\",\n", - " \"qu'mc salo et cadillac\",\n", - " 'rejoignent le crou in-extrémis',\n", - " 'accompagnant l’abominable ju',\n", - " 'dans une série de concerts',\n", - " 'que ça fait rigoler tout le monde',\n", - " \"alors qu'en fait c'est pas drole\",\n", - " 'ride dans ma ville comme jacques vill’',\n", - " 'j’viens de stack up trente mille tranquille',\n", - " 'j’veux toucher le million avant trente-six',\n", - " 'gotta catch up, shit, faut que je pense vite',\n", - " 'jamais spill de ketchup sur la banquette',\n", - " 'avec shabbo sur un newave mais j’pas jean-luc',\n", - " \"j'veux pas 'ton amitié j'm'en calice\",\n", - " 'i got new friends and they’re all dead',\n", - " 'alexander mcqueen payé hors-taxes',\n", - " \"j'm'allumes un russian cream back à l’hôtel\",\n", - " 'never faked it, j’ai des principes',\n", - " 'vingt-six, bitch i gotta have it',\n", - " 'bitch i gotta have it, bitch i gotta have it',\n", - " \"j'ride dans ma ville comme jacques vill’\",\n", - " 'si j’réponds pas au phone laisses moi tranquille',\n", - " 'j’veux juste remplir les poches de mon balmain',\n", - " 'thirty bands et je les stack up',\n", - " 'recomptes pour le fun quand j’suis high as fuck',\n", - " 'étape par étape comme si j’étais à l’école',\n", - " 'j’vais tout les renvoyer à l’école',\n", - " 'if i wanna bail, its all for best',\n", - " 'pockets are filled, poppin a pill if i get a chill',\n", - " 'king of the hill, i’m willing and able',\n", - " 'i keep my hands on the wheel, my foot on the stables',\n", - " 'look ma im gone',\n", - " 'pop drop it lock n load',\n", - " 'i gotta go south, make sure you fill up the whole bag',\n", - " 'cuz i dont consider ever going back',\n", - " 'ride dans ma ville comme jacques vill’',\n", - " 'j’viens de stack up trente mille tranquille',\n", - " 'j’veux toucher le million avant trente-six',\n", - " 'gotta catch up, shit, faut que je pense vite',\n", - " 'jamais spill de ketchup sur la banquette',\n", - " 'avec shabbo sur un newave mais j’pas jean-luc',\n", - " \"j'veux pas 'ton amitié j'm'en calice\",\n", - " 'i got new friends and they’re all dead',\n", - " 'j’ai pas made it bitch, j’ai made it happen',\n", - " 'j’ai pas l’choix d’flex comme un athlète',\n", - " 'c’pour ça j’fuck around, dépense le cash vite',\n", - " 'get it back quick, mula fait des backflips',\n", - " 'esskedit mane, clean cut, helmut lang',\n", - " 'ou bien philipp plein, cliqued up on s’est mis bien',\n", - " 'dans ma ville dans un range and i’m switching lanes',\n", - " 'laisse-moi shine, bling-bling, juste comme lil’ wayne',\n", - " 'on the ball, yeh, i been on the road',\n", - " 'j’ai la sauce, j’la laisse couler comme de l’eau',\n", - " 'ils riaient d’nous, maintenant ils veulent que j’reste humble',\n", - " 'so c’est \"f you\" quand j’pull up en f1 \\'skuur\\'',\n", - " 'ride dans ma ville comme jacques vill’',\n", - " 'j’viens de stack up trente mille tranquille',\n", - " 'j’veux toucher le million avant trente-six',\n", - " 'gotta catch up, shit, faut que je pense vite',\n", - " 'jamais spill de ketchup sur la banquette',\n", - " 'avec shabbo sur un newave mais j’pas jean-luc',\n", - " \"j'veux pas 'ton amitié j'm'en calice\",\n", - " 'i got new friends and they’re all dead',\n", - " 'this is a dj underground exclusive',\n", - " 'qui font le droit? la justice pourquoi?',\n", - " 'la justice nique sa mère',\n", - " 'le dernier juge que j’ai vu avait le plus de vices',\n", - " 'que le dealer de ma rue',\n", - " 'one, two, three, four',\n", - " \"woop woop that's the sound of da police\",\n", - " 'ah ah ni-nique la police',\n", - " \"woop woop that's the sound of da police\",\n", - " 'nique nique nique nique la police',\n", - " \"woop woop that's the sound of da police\",\n", - " 'ah ah nique la police',\n", - " \"woop woop that's the sound of da police\",\n", - " 'ah ah nique nique nique la police',\n", - " 'non rien de rien',\n", - " 'nique la police',\n", - " 'non je ne regrette rien',\n", - " 'nique la police',\n", - " 'non rien de rien',\n", - " 'nique la police',\n", - " 'non je ne regrette rien',\n", - " 'nique la police',\n", - " 'justice nique sa mère',\n", - " 'justice nique sa mère',\n", - " 'justice nique sa mère',\n", - " 'justice nique sa mère',\n", - " 'justice nique sa mère',\n", - " 'justice nique sa mère',\n", - " 'justice nique ta mère',\n", - " 'justice nique ta mère',\n", - " \"woop woop that's the sound of da police\",\n", - " 'nique la police',\n", - " \"woop woop that's the sound of da police\",\n", - " 'nique la police',\n", - " \"woop woop that's the sound of da police\",\n", - " 'nique la police',\n", - " \"woop woop that's the sound of da police\",\n", - " 'nique nique nique nique la police',\n", - " 'justice nique sa mère',\n", - " \"le dernier juge que j'ai vu\",\n", - " 'avait plus de vices',\n", - " 'que le dealer de ma rue',\n", - " 'ju-stice ni-que ta mere',\n", - " 'ta ni-que ta me-re',\n", - " 'ju-stice ni-que ta me-re me-re',\n", - " 'justice nique ta mère',\n", - " \"le dernier juge que j'ai vu\",\n", - " 'avait plus de vices',\n", - " 'que le dealer de ma rue',\n", - " \"woop woop that's the sound of da police\",\n", - " 'fuck the police',\n", - " \"woop woop that's the sound of da police\",\n", - " 'nique la police',\n", - " \"woop woop that's the sound of da police\",\n", - " ...]},\n", - " 'rock': {'meta': {'train_data': ['elle',\n", - " 'avait dix-huit ans',\n", - " 'les cheveux au vent',\n", - " 'la ligne',\n", - " \"d'un cygne\",\n", - " 'qui depliait ses...',\n", - " 'elle',\n", - " 'avait les accents',\n", - " \"d'un oiseau chantant\",\n", - " 'et tous les musiciens',\n", - " 'se retournaient sur...',\n", - " 'elle',\n", - " \"avait tout l'eclat\",\n", - " 'de ce siecle-la',\n", - " 'ou la valse',\n", - " 'etait reine',\n", - " \"ou l'amour etait roi\",\n", - " 'dans un ciel',\n", - " 'de dentelles',\n", - " 'irre...',\n", - " 'elle',\n", - " 'promenait ses mains',\n", - " 'sur un clavecin',\n", - " 'et chopin la trouvait',\n", - " 'b...elle',\n", - " \"n'avait qu'a sourire\",\n", - " 'pour le faire ecrire',\n", - " 'ecoutez',\n", - " 'les preludes',\n", - " \"qu'il composait pour elle\",\n", - " 'elle',\n", - " \"j'ai tant reve d'elle\",\n", - " 'parle avec elle',\n", - " 'que souvent',\n", - " 'je me prends',\n", - " 'pour elle',\n", - " 'elle',\n", - " 'est mon ideal',\n", - " 'la plus grande etoile',\n", - " 'et je veux',\n", - " 'ressembler',\n", - " 'a son portrait fidele',\n", - " \"il n'y a qu'elle\",\n", - " \"et c'est elle\",\n", - " 'mon mod...',\n", - " 'elle',\n", - " 'avait dix-huit ans',\n", - " 'les cheveux au vent',\n", - " 'la magie',\n", - " 'des folies',\n", - " \"que l'on faisait pour elle\",\n", - " \"c'etait la plus belle\",\n", - " 'je voudrais etre...elle!',\n", - " 'toi qui ne vit que pour être',\n", - " 'une image perdue dans la masse!',\n", - " 'sache que nous sommes doués',\n", - " 'du pouvoir de vie ou de mort et',\n", - " \"que tu n'es rien sauf un pion perdu\",\n", - " 'dans la grandeur de notre jeu',\n", - " 'feel your radiant glory',\n", - " 'for the ultimate time',\n", - " 'you will be forced to accept',\n", - " 'the fire which burns you is the same',\n", - " 'to which you should grant respect and life',\n", - " 'primitive thoughtless human!',\n", - " 'prostitue toi pour ton dieu!',\n", - " 'les larmes du christ sauront',\n", - " 'laver définitivement ton ame!',\n", - " \"tu n'es qu'une bataille inutile\",\n", - " \"dans une guerre gagnée d'avance\",\n", - " \"je t 'ai vu comprendre et apprendre\",\n", - " \"l'essence de notre supériorité\",\n", - " 'mais tu n\\'es qu\\' \" holy and weak \"',\n", - " \"avide de croyance et d'illusion!\",\n", - " 'and finally you will perish',\n", - " 'by fire and blood',\n", - " 'unfit for the \" satanik generation \"',\n", - " 'and return to your origin!',\n", - " 'from ashes to ashes',\n", - " 'here is your fate!',\n", - " 'prostitute yourself for your god!',\n", - " 'the tears of christ will surely know',\n", - " 'how to wash your soul!',\n", - " 'du gehst den weg zu dir selbst, und an dir selbst',\n", - " 'geht der weg vorbei',\n", - " 'und an deinen sieben teufeln!',\n", - " 'verbrennen musst du dich wollen, in deiner',\n", - " 'eigenen flamme; wie wolltest du neu werden',\n", - " 'wenn du nicht erst asche geworden bist? und',\n", - " 'hüte dich vor den anfällen deiner liebe',\n", - " 'lust ist tiefer noch als herzeleid',\n", - " 'ihr höheren menschen, ihr lernt es nicht',\n", - " 'lust will ewigkeit',\n", - " 'wandering through the refuge of my dreams',\n", - " 'nightmarish blessings to speak',\n", - " 'decay in shrouds and fragments',\n", - " 'this place steams in the mist of butchered mind',\n", - " 'i became nothingness',\n", - " 'i became abyss of expression',\n", - " 'embracing the poison',\n", - " 'as hunger that keeps me awake',\n", - " 'crushing eleos and pride',\n", - " 'through reign of contradiction',\n", - " 'clasping the dusty ruins',\n", - " 'reclaiming the throne of bones',\n", - " 'commanding a legion',\n", - " 'composed of tainted words and symbols',\n", - " 'erupting abyssal volcanism',\n", - " 'raising the omega of mind',\n", - " 'reasons to justify',\n", - " 'the fall seems eternal',\n", - " 'crumbling in rays of light',\n", - " 'blinding the clearest sight',\n", - " 'chaque matin, quand le soleil se lève pour les',\n", - " 'autres, en répandant la joie et la chaleur dans',\n", - " 'toute la nature, tandis qu’aucun de mes traits',\n", - " 'ne bouge, en regardant fixement l’espace plein',\n", - " 'de ténèbres, accroupi vers le fond de ma caverne',\n", - " 'aimée, dans un désespoir qui m’enivre comme le',\n", - " 'vin, je meurtris de mes puissantes mains ma',\n", - " 'poitrine en lambeaux',\n", - " 'objet de mes vœux',\n", - " 'je n’appartenais plus à l’humanité',\n", - " 'et je ne demanderais pas mieux que de ne pas',\n", - " 'épuiser mon esprit à réfléchir continuellement',\n", - " 'rappelle-toi-le bien; nous sommes sur ce vaisseau',\n", - " 'démâté pour souffrir',\n", - " 'embracing the poison',\n", - " 'as hunger that keeps me awake',\n", - " 'embracing the poison',\n", - " 'as hunger that keeps me addicted',\n", - " 'for i consciously perish in the bright shining',\n", - " 'embers of the golden sun',\n", - " 'one poisoned well to bail from, may be more',\n", - " 'effective than countless jars of venomous',\n", - " 'liquid',\n", - " 'why would i destroy myself on purpose, while',\n", - " 'speaking insensate curses against all that',\n", - " 'breathes and crying oceans of acid?',\n", - " 'for what i still fear the most is myself',\n", - " 'for lust burns deeper still than heartache',\n", - " 'until the poison devours me',\n", - " 'until the poison devours me',\n", - " 'until the poison devours you',\n", - " 'until the poison devours us',\n", - " 'la force des choses',\n", - " \"la force de l'âme\",\n", - " 'la force du vent',\n", - " 'la force des innocents',\n", - " 'the force of things',\n", - " 'the force of the soul',\n", - " 'the force of the winds',\n", - " 'the force of the innocents',\n", - " 'la force des mots',\n", - " 'la force des riens',\n", - " 'la force de tes yeux',\n", - " 'la force et ça va mieux !',\n", - " 'the force of words',\n", - " 'the force of nothing',\n", - " 'the force of your eyes',\n", - " 'the force it goes well !',\n", - " 'la force des forces',\n", - " \"la force de l'ordre\",\n", - " 'la force de ton nom',\n", - " \"la force d'une chanson\",\n", - " 'the force of forces',\n", - " 'the force of order',\n", - " 'the force of your name',\n", - " 'the force of a song',\n", - " 'la force du soleil',\n", - " 'la force des marins',\n", - " 'la force des ouvriers',\n", - " 'la force des patronniers',\n", - " 'the force of the suns',\n", - " 'the force of sailers',\n", - " 'the force of workers',\n", - " 'company force',\n", - " 'la force des tigres',\n", - " 'la force des fous',\n", - " 'la force de toi',\n", - " 'la force et ça ira !',\n", - " 'the force of tigers',\n", - " 'the force of fools',\n", - " 'the force of you',\n", - " \"the force then it's ok !\",\n", - " 'de kracht !',\n", - " 'de kracht !',\n", - " 'de kracht !',\n", - " 'de kracht !',\n", - " 'la force beaucoup',\n", - " 'la force de la passion',\n", - " 'la force libre',\n", - " 'la force en équilibre',\n", - " \"la force de l'hiver\",\n", - " 'la force de ta peau',\n", - " \"la force d'une main\",\n", - " 'la force et je vais bien !',\n", - " 'the force very much',\n", - " 'the force of passion',\n", - " 'the free force',\n", - " 'the hanging in a balance force',\n", - " 'the force of winter',\n", - " 'the force of the skin',\n", - " 'the force of the hands',\n", - " 'the force and i feel good !',\n", - " 'oh my weakness, oh my weakness !',\n", - " 'oh my weakness, oh my weakness !',\n", - " 'oh ma faiblesse, tu me blesses !',\n", - " 'oh my weakness, oh my weakness !',\n", - " 'oh ma faiblesse, tu me blesses !',\n", - " 'oh my weakness, you hurt me...',\n", - " 'oh ma faiblesse, tu me blesses !',\n", - " 'the force of silence',\n", - " 'the force of age',\n", - " 'the force of time',\n", - " 'the force of sentiments',\n", - " 'la force du silence',\n", - " \"la force de l'âge\",\n", - " 'la force du temps',\n", - " 'la force des sentiments',\n", - " 'the force of walls',\n", - " 'the force of cries',\n", - " 'the force of your mouth',\n", - " 'the force that laid me down !',\n", - " 'la force des murs',\n", - " 'la force des cris',\n", - " 'la force de ta bouche',\n", - " 'la force qui me couche !',\n", - " 'the force again',\n", - " 'the force of your bones',\n", - " 'the political force',\n", - " 'atomic force',\n", - " 'la force encore',\n", - " 'la force de tes os',\n", - " 'la force politique',\n", - " 'la force atomique',\n", - " 'the force of police',\n", - " 'the force of blows',\n", - " 'the military force',\n", - " 'the force of prayers',\n", - " 'la force des corps',\n", - " 'la force des coups',\n", - " 'la force militaire',\n", - " 'la force des prières',\n", - " 'the force of titans',\n", - " 'the force of fears',\n", - " 'the force of us',\n", - " 'the « we are standing up » force',\n", - " 'la force des titans',\n", - " 'la force des phobies',\n", - " 'la force de nous',\n", - " 'la force on tient debout !',\n", - " 'de kracht !',\n", - " 'de kracht !',\n", - " 'de kracht !',\n", - " 'de kracht !',\n", - " 'the force of the stars',\n", - " 'the force of the moment',\n", - " 'the force of love',\n", - " 'the force i still believe it !',\n", - " 'the force of ideas',\n", - " 'the force of nothingness',\n", - " 'the force to end it all',\n", - " 'the force to keep us smiling',\n", - " 'la force des étoiles',\n", - " \"la force de l'instant\",\n", - " \"la force de l'amour\",\n", - " \"la force j'y crois toujours !\",\n", - " 'la force des idées',\n", - " 'la force du néant',\n", - " \"la force d'en finir\",\n", - " \"la force d'en sourire\",\n", - " 'oh ma faiblesse',\n", - " 'oh my weakness, oh my weakness !',\n", - " 'oh ma faiblesse',\n", - " 'oh my weakness, oh my weakness !',\n", - " 'oh ma faiblesse, tu me blesses !',\n", - " 'oh ma faiblesse',\n", - " 'oh ma faiblesse, tu me blesses !',\n", - " 'de kracht !',\n", - " 'de kracht !',\n", - " 'de kracht !',\n", - " 'de kracht !',\n", - " 'aaaaaaaaaaah',\n", - " 'ooooooooooh',\n", - " 'aaaaaaaaaaah',\n", - " 'oooooooooh',\n", - " 'bring the sun, spins around and around and around',\n", - " 'bring the sun, spins around and around and around',\n", - " 'bring the sun, spins around and around and around',\n", - " 'bring the sun, spins around and around and around',\n", - " 'is it mine, is it mine, is it mine, is it mine',\n", - " 'is it mine, is it mine, is it mine, is it mine',\n", - " 'is it mine, is it mine, is it mine, is it mine',\n", - " 'is it mine, is it mine, is it mine, is it mine',\n", - " 'spins around and around and around and around',\n", - " 'spins around and around and around and around',\n", - " 'spins around and around and around and around',\n", - " 'spins around and around and around and around',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " \"toussaint l'ouverture\",\n", - " 'freedom!',\n", - " 'from!',\n", - " 'home!',\n", - " 'home!',\n", - " '*horse galloping and neighing*',\n", - " 'toussaint!',\n", - " \"toussaint l'ouvеrture!\",\n", - " 'toussaint!',\n", - " \"toussaint l'ouverture!\",\n", - " 'libеrté!',\n", - " 'egalité!',\n", - " 'fraternité!',\n", - " 'sangre de dios!',\n", - " 'hijo de dios!',\n", - " 'amor de dios!',\n", - " 'sangre es vida!',\n", - " 'vida es sangre!',\n", - " 'sangre es amor!',\n", - " 'amor es sangre!',\n", - " 'toussaint!',\n", - " \"toussaint l'ouverture!\",\n", - " \"toussaint l'ouverture!\",\n", - " 'freedom!',\n", - " 'freedom!',\n", - " 'ellos!',\n", - " 'sepultura, tambours du bronx',\n", - " 'absurdité, absurdity, absurdo',\n", - " 'tragédie, tragedy, tragédia',\n", - " 'les doigts sont sur les déclencheurs du changement',\n", - " 'the fingers are on the triggers of change',\n", - " 'os dedos estão no gatilho da mudança',\n", - " \"un pouvoir de changement à d'autres mains\",\n", - " 'a power of change to other hands',\n", - " 'mudança de poder pra outras mãos',\n", - " 'now is the time!',\n", - " 'fallen dictators step down, step down',\n", - " 'instigators step down, step down',\n", - " 'aggravators step down, step down',\n", - " 'structure violence',\n", - " 'égalité, equality, igualdade',\n", - " 'la démocratie, democracy, a democracia',\n", - " 'dictateurs dépôts, instigateurs',\n", - " 'fallen dictators, instigators',\n", - " 'ditadores depostos, instigadores',\n", - " 'aggravateurs démissionnent',\n", - " 'aggravators step down',\n", - " 'agitadores estão caindo',\n", - " 'now is the time!',\n", - " 'fallen dictators step down, step down',\n", - " 'instigators step down, step down',\n", - " 'aggravators step down, step down',\n", - " 'structure violence',\n", - " 'a storm has formed and fills the air',\n", - " 'feel the weight of catastrophe',\n", - " 'kept the needs from humanity',\n", - " 'the total greed, the absurdity',\n", - " 'fallen dictators step down, step down',\n", - " 'instigators step down, step down',\n", - " 'aggravators step down, step down',\n", - " 'structure violence',\n", - " 'structure violence',\n", - " \"« religion: une alimentation intellectuelle malsaine ... avec un arrière-goût désagréable. l'emballage est souvent beau, mais le contenu est dépourvu de valeur nutritive »\",\n", - " 'aussi bien manger ses propres excréments',\n", - " 'guilt flesh, moist sermons',\n", - " 'lethal devotion',\n", - " 'obedience trickling',\n", - " 'holy insertion',\n", - " 'fuck my head',\n", - " 'indecent',\n", - " 'pernicious flesh, moist gospel',\n", - " 'intemperate repent',\n", - " 'pastoral febrile',\n", - " 'divine insertion',\n", - " 'fuck my head',\n", - " 'indecent',\n", - " \"what'll we do with the baby?\",\n", - " \"what'll we do with the baby-o?\",\n", - " \"what'll we do with the baby?\",\n", - " \"what'll we do with the baby-o?\",\n", - " 'wrap him up in a tablecloth',\n", - " 'throw him up in the old hayloft',\n", - " \"that's what we do with the baby\",\n", - " \"that's what we do with the baby-o\",\n", - " 'every time the baby grins',\n", - " 'give my baby another bottle of gin',\n", - " \"that's what we do with the baby\",\n", - " \"that's what we do with the baby-o\",\n", - " 'every time the baby cries',\n", - " 'stick my finger in the babies eyes',\n", - " \"that's what we do with the baby\",\n", - " \"that's what we do with the baby-o\",\n", - " '\"]',\n", - " '\"]',\n", - " 'mon ami! mon ami! coco, coco, le petit singe…',\n", - " \"le bon roi dagobert, le bon roi dagobert, a, le bon roi dagobert, a mis sa culotte à l'envers, le grand saint eloi lui dit: “o mon roi, votre majesté est mal culottée!” “cest vrai, lui dit le roi, je vais la remettre à l'endroit!” c'était un idiot. j'ai vu coco, coco le petit singe, hier au zoo de toronto dans sa petite cage. il m’a dit si tu veux on va jouer. attention! mon ami, mon ami! fa-lala-lala-la-la…\",\n", - " '\"]',\n", - " \"je sais qu'il me traite\",\n", - " 'comme il traite les autres',\n", - " 'on dirait presque',\n", - " \"qu'il ne m'aime pas\",\n", - " 'quand vous me dites',\n", - " \"tu devrais t'en aller\",\n", - " \"mem'si c'est vrai\",\n", - " \"ca ne m'aide pas\",\n", - " 'je comprends vos raisons',\n", - " \"vous voyez sur'ment mieux que moi\",\n", - " 'oui mais',\n", - " 'ne me plaignez pas',\n", - " 'ma vie est plutot belle',\n", - " 'et quand ca ne va pas',\n", - " \"tous mes amis m'appellent\",\n", - " 'je vous remercie',\n", - " 'de votre sympathie',\n", - " 'non ne me plaignez pas',\n", - " 'mais restez la',\n", - " 'quand je suis seule',\n", - " 'je suis bien dans ma chambre',\n", - " 'avec un livre',\n", - " 'ou un film ancien',\n", - " 'et pour ma fete',\n", - " \"si c'est vrai qu'il m'oublie\",\n", - " \"j'ai vos cadeaux\",\n", - " 'pour me chauffer le coeur',\n", - " 'je comprends vos raisons',\n", - " \"vous voyez sur'ment mieux que moi\",\n", - " 'pourtant...',\n", - " 'this foreign face that is looking at me',\n", - " 'in absence, i am hanging alone',\n", - " 'this lifeless nakedness that devours me',\n", - " 'which is this eye that is looking at me',\n", - " 'i see nakedness',\n", - " 'i see silence',\n", - " 'i can hear you',\n", - " 'i hear blood',\n", - " 'that screams and swims in reverse',\n", - " 'i can hear it now',\n", - " 'sand, please help me',\n", - " \"don't turn back\",\n", - " 'i hear blood',\n", - " 'that screams and swims in reverse',\n", - " 'i can hear it now',\n", - " 'in the air there is a poison that kills you]',\n", - " 'sand, sand, sand please help me',\n", - " 'do not turn back, back',\n", - " \"'cause this is the air that penetrates you\",\n", - " 'sand, sand, sand please help me',\n", - " 'do not turn back, back',\n", - " 'in the air there is a poison that kills you',\n", - " '\"mais qu\\'est-ce que vous nous foutez là m. artaud? et savez-vous ce que c\\'est au juste que la cruauté?',\n", - " \"c'est l'homme qu'il faut maintenant se décider à émasculer\",\n", - " 'dieu, le hasard bestial de l\\'animalité inconsciente humaine, partout où on peut le rencontrer.\"',\n", - " 'in the air there is a poison that kills you]',\n", - " '\"lorsque vous lui aurez fait un corps sans organes, alors vous l\\'aurez délivré de tous ses automatismes et rendu à sa véritable et immortelle liberté.\"',\n", - " 'when, when we hear the eye open',\n", - " 'there, there in that place',\n", - " 'there, a whisper is a scream',\n", - " 'breathing there, into that place',\n", - " \"i know you'll stay\",\n", - " 'loneliness is not the same here',\n", - " \"it's over for today\",\n", - " 'now, again...',\n", - " 'now again...',\n", - " 'when, when we hear the eye open',\n", - " 'there, there in that place',\n", - " 'there, a whisper is a scream',\n", - " 'breathing there, into that place',\n", - " 'breathing there, into that place',\n", - " 'when, when we hear the eye open',\n", - " 'there, there in that place',\n", - " 'there, a whisper is a scream',\n", - " 'breathing there, into that place',\n", - " 'when, when we hear the eye open',\n", - " 'there, there in that place',\n", - " 'there, a whisper is a scream',\n", - " 'breathing there, into that place',\n", - " 'now again, now again, now again',\n", - " 'now!',\n", - " 'now again, now again, now again',\n", - " 'now...',\n", - " 'everybody stand as one',\n", - " 'we don’t care where you come from',\n", - " 'you’ll never be alone',\n", - " 'can you feel it ? it’s coming from your mind',\n", - " 'you know all your dreams could be mine',\n", - " 'there’s nothing left behind us, walk with me',\n", - " 'figure it out, be what you wanna be !',\n", - " 'everybody stand as one',\n", - " 'we don’t care where you come from',\n", - " 'you’ll never be alone',\n", - " 'du coup on fait avec ce qui nous reste',\n", - " 'du culot, de l’enthousiasme, et un sourire face aux crs',\n", - " 'une main tendue et c’est tout ton pays qui se reveille',\n", - " 'faut qu’on se bouge pour que nos gamins s’émerveillent',\n", - " 'alors on se rassemble, sans savoir si on se ressemble',\n", - " 'comme un seul peuple, un seul homme',\n", - " 'le regard fier et les mains qui tremblent',\n", - " 'ces graines qu’on sème pour tout une vie',\n", - " 'a toutes ces secondes qu’on apprécie',\n", - " 'everybody stand as one',\n", - " 'we don’t care where you come from',\n", - " 'you’ll never be alone',\n", - " 'we gonna start tonight',\n", - " 'we gonna start tonight',\n", - " 'we will be proud',\n", - " 'we are the voice of a generation',\n", - " 'we gonna be the ones',\n", - " 'we gonna be the ones',\n", - " 'ho yeah we will be proud',\n", - " 'i’m proud',\n", - " 'everybody stand as one',\n", - " 'we don’t care where you come from',\n", - " 'you’ll never be alone',\n", - " '\"le vent, qui roule un coeur sur le pavé des cours... un ange qui sanglote accroché dans un arbre... la colonne d’azur qu’entortille le marbre font ouvrir dans ma nuit des portes de secours.\"',\n", - " 'no one ever came',\n", - " '(no one ever came) no one ever came',\n", - " 'no one, no one',\n", - " 'i watched in your eyes',\n", - " 'which never looked in mine',\n", - " 'and i saw this white poison',\n", - " 'slowly spread',\n", - " 'of the world outside]',\n", - " 'no one ever came',\n", - " '\"i will pass,\" she said',\n", - " 'but no one ever came',\n", - " 'my eyes were turned into ashes',\n", - " 'day one ; the one percent gain global control',\n", - " 'within the shadows they pull the strings of major assets',\n", - " 'with phantom enemies they divided us',\n", - " 'to implement their ultimate masterplan',\n", - " 'worldwide, widespread',\n", - " 'a manmade pandemic',\n", - " 'worldwide, widespread',\n", - " 'buy the antidote or die',\n", - " 'worldwide, widespread',\n", - " 'a manmade pandemic',\n", - " 'worldwide, widespread',\n", - " 'choose between life or death',\n", - " 'present day ; the virus spread to a global scale',\n", - " 'the one percent decides who lives and who dies',\n", - " 'they locked away the antidote - top secret',\n", - " 'under the umbrella the masterplan is in place',\n", - " 'au détriment de la vie humaine, les cadavres peuplent la terre interdite',\n", - " 'dans la folie, la boîte de pandore fut ouverte - un chemin sans retour',\n", - " \"le fléau s'est répandu sur le monde\",\n", - " 'seuls les cendres et le sang sont laissés derrière',\n", - " 'les morts règnent désormais sur l\\'ombre de ce qui était nommé autrefois \"humanité\"',\n", - " 'worldwide, widespread',\n", - " 'a manmade pandemic',\n", - " 'worldwide, widespread',\n", - " 'buy the antidote or die',\n", - " 'worldwide, widespread',\n", - " 'a manmade pandemic',\n", - " 'worldwide, widespread',\n", - " 'choose between life or death',\n", - " 'on prend un verre, un revolver',\n", - " \"c'est drôle pourtant de faire semblant\",\n", - " \"c'est une grande gueule et souvent seule\",\n", - " 'oh non, je me sens à contretemps',\n", - " 'hello, hello, hello, how low?',\n", - " 'hello, hello, hello, how low?',\n", - " 'hello, hello, hello, how low?',\n", - " 'hello, hello... un, deux, trois !',\n", - " \"with the lights out, it's less dangerous\",\n", - " 'here we are now, entertain us',\n", - " 'i feel stupid and contagious',\n", - " 'here we are now, entertain us',\n", - " 'a mulatto',\n", - " 'an albino',\n", - " 'a mosquito',\n", - " 'my libido',\n", - " 'yeah, hey, yay',\n", - " 'je suis le pire de mon meilleur',\n", - " \"et j'en suis fière, merci à ma mère\",\n", - " 'on est ensemble depuis toujours',\n", - " \"et il me semble que c'est ça l'amour\",\n", - " 'hello, hello, hello, how low?',\n", - " 'hello, hello, hello, how low?',\n", - " 'hello, hello, hello, how low?',\n", - " 'hello, hello, hello...',\n", - " \"with the lights out, it's less dangerous\",\n", - " 'here we are now, entertain us',\n", - " 'i feel stupid and contagious',\n", - " 'here we are now, entertain us',\n", - " 'a mulatto',\n", - " 'an albino',\n", - " 'a mosquito',\n", - " 'my libido',\n", - " 'yeah, hey, yay',\n", - " 'je perds le sens et ma conscience',\n", - " 'et ça me fait rire, y a rien à dire',\n", - " 'comme on est bien',\n", - " \"quoi? j'en sais rien\",\n", - " \"c'est pas facile d'être indélébile\",\n", - " 'hello, hello, hello, how low?',\n", - " 'hello, hello, hello, how low?',\n", - " 'hello, hello, hello, how low?',\n", - " 'hello, hello... un, deux, trois !',\n", - " \"with the lights out, it's less dangerous\",\n", - " 'here we are now, entertain us',\n", - " 'i feel stupid and contagious',\n", - " 'here we are now, entertain us',\n", - " 'a mulatto',\n", - " 'an albino',\n", - " 'a mosquito',\n", - " 'my libido',\n", - " 'a denial, a denial',\n", - " 'a denial, a denial',\n", - " 'a denial, a denial',\n", - " 'a denial, a denial',\n", - " 'a denial',\n", - " '(musique: daniel mongrain & stéphane bélanger)',\n", - " '(paroles: françois mongrain)',\n", - " \"(la nature est souvent prise pour acquise et à la légère. les éléments, lorsque déchainés, sont incontrôlables, ne montrant jamais de pitié. arrêtons de penser à notre petite personne. nous ne sommes qu'un simple grain de sable comparé au pouvoir des sources primaires.)\",\n", - " '(fm-) calcination',\n", - " '(dm-) elementals unleashed',\n", - " '- blow the nations down',\n", - " '- hidden forces revealed',\n", - " '- engulf the titans',\n", - " '- main sources of power',\n", - " '- tremors',\n", - " '- will defeat the leaders',\n", - " '(fm-) falling empire',\n", - " 'absolute failure',\n", - " 'neglected nature',\n", - " 'a foreseen disaster',\n", - " \"the elements'masters\",\n", - " 'shall exult their anger',\n", - " 'in this trial without lawyers',\n", - " \"don't expect to be spared...\",\n", - " '..by the four primal sources',\n", - " '- calcination',\n", - " '- elementals unleashed',\n", - " '- blow the nations down',\n", - " '- hidden forces revealed',\n", - " '- engulf the titans',\n", - " '- main sources of power',\n", - " '- tremors',\n", - " '- will defeat the leaders',\n", - " '(lead: pier-luc lampron)',\n", - " '(lead: daniel mongrain)',\n", - " \"i can see you i can't see you\",\n", - " \"i can see you i can't see you\",\n", - " \"i can't see you i can see you again\",\n", - " \"i can' see you i can't see you again\",\n", - " \"i can see you i can't see you\",\n", - " \"i can see you i can't see you\",\n", - " \"i can't see you i can see you again\",\n", - " \"i can see you i can't see you my friend\",\n", - " \"i can give you i can't tell you\",\n", - " \"i can't give you i can tell you\",\n", - " \"i can't give you i can give you again\",\n", - " \"i can't tell you i can't tell you my name\",\n", - " 'je voudrais du temps',\n", - " 'je voudrais te sentir près de moi',\n", - " 'contre des temps morts',\n", - " \"est ce que tu m'aimes encore ?\",\n", - " 'je voudrais du temps',\n", - " 'et te sentir encore près de moi',\n", - " 'contre des plus forts',\n", - " \"est ce que tu m'aimes encore ?\",\n", - " \"i can't love you i can love you\",\n", - " \"i can't love you i can love you\",\n", - " \"i can't love you i can love you again\",\n", - " \"i can't kiss you i can't kiss you again\",\n", - " \"i can't feel you i can't see you\",\n", - " \"i can't feel you i can't see you\",\n", - " \"i can't feel you\",\n", - " \"i can't feel you again...\",\n", - " 'play that song for me',\n", - " 'sounds so supernatural',\n", - " \"that's how it has to be\",\n", - " 'play that song for me',\n", - " 'sounds so supernatural',\n", - " \"that's how it has to be\",\n", - " 'play that song for me',\n", - " 'sounds so supernatural',\n", - " \"that's how it has to be\",\n", - " 'play that song for me',\n", - " 'sounds so supernatural',\n", - " \"that's how it has to be\",\n", - " 'oubliez-ça jamais',\n", - " \"quand j'avais quinze ans\",\n", - " 'un petit commençait',\n", - " 'african music',\n", - " 'a consumé',\n", - " \"jusque d'aujourd'hui\",\n", - " \"c'est ma vie\",\n", - " 'play that song for me',\n", - " 'sounds so supernatural',\n", - " \"that's how it has to be\",\n", - " 'play that song for me',\n", - " 'sounds so supernatural',\n", - " \"that's how it has to be\",\n", - " 'avec mes amis',\n", - " 'on a beaucoup tourné',\n", - " 'je jouais les congas',\n", - " \"c'est le vrai, le reggae\",\n", - " 'ça me fait pas peur',\n", - " 'les musiques depuis que',\n", - " 'vont me donner bonheur',\n", - " 'play that song for me',\n", - " 'sounds so supernatural',\n", - " \"that's how it has to be\",\n", - " 'play that song for me',\n", - " 'sounds so supernatural',\n", - " \"that's how it has to be\",\n", - " 'sounds so supernatural',\n", - " 'sounds so supernatural',\n", - " \"that's how it has to be\",\n", - " 'negative ed',\n", - " \"don't play my bassline wrong, dickhead\",\n", - " 'negative ed',\n", - " \"he's a naysayer of his neg\",\n", - " 'negative ed',\n", - " 'lives in my brain, out of his head',\n", - " 'negative ed',\n", - " \"he's not ok and i'm just dead\",\n", - " 'ned',\n", - " \"don't fuck with negative ed\",\n", - " \"don't fuck with negative ed\",\n", - " \"don't fuck with negative ed\",\n", - " 'wow',\n", - " 'negative ed',\n", - " 'yeah yeah yeah yeah',\n", - " 'oh why you so negative?',\n", - " \"eh mais putain, mais pourquoi t'es si négatif ?\",\n", - " \"non mais tu te fous de ma gueule, ça fait combien de jours que tu t'es pas lavé ?\",\n", - " \"lave-toi putain (...) tu pues ! ta gueule putain ! ferme ta gueule ! arrête de t'plaindre ! putain ferme ta gueule ! tu m'saoules ! dégage ! sors de chez moi ! j'te déteste !\",\n", - " 'negative ed',\n", - " \"don't play my bassline wrong dickhead!\",\n", - " 'negative ed',\n", - " 'my adversariel dickhead',\n", - " 'negative ed',\n", - " 'he does cocaine & i make bread',\n", - " 'negative ed',\n", - " 'out of his way',\n", - " \"he's anti-dead\",\n", - " 'ned',\n", - " \"don't fuck with negative ed\",\n", - " \"don't fuck with negative ed\",\n", - " \"don't fuck with negatory\",\n", - " 'negatory negatory',\n", - " 'ya ya ya ya',\n", - " 'negative ed',\n", - " 'yeah yeah yeah yeah',\n", - " 'why you so negative?',\n", - " 'ta gueule!',\n", - " \"tu sers à rien, tu passes tes journées à t'branler après tu veux même pas m'baiser, putain mais sors de chez moi!\",\n", - " \"cent a l'heure\",\n", - " \"sur un long ruban d'argent\",\n", - " 'la pluie fait briller la route allegrement',\n", - " 'et la radio, et la radio',\n", - " 'hurle a tout vent',\n", - " 'ce jour la',\n", - " 'le bonheur etait au bout',\n", - " \"mon coeur avait l'air d'un fou\",\n", - " 'je me revois',\n", - " 'foncant comme une fleche',\n", - " 'au rendez-vous',\n", - " 'amoureuse, amoureuse',\n", - " \"j'avais mis ma vie en musique\",\n", - " 'amoureuse, amoureuse',\n", - " \"j'etais l'enfant d'une chanson\",\n", - " \"amoureuse (sur un ruban d'argent)\",\n", - " 'amoureuse (la pluie fait le beau temps)',\n", - " 'et la radio, et la radio',\n", - " \"hurle a tout vent (sur un ruban d'argent)\",\n", - " \"amoureuse (j'entends courir mon coeur)\",\n", - " 'amoureuse (je vois courir les fleurs)',\n", - " \"et l'autoroute qui se deroule\",\n", - " \"a cent a l'heure\",\n", - " 'amoureuse, amoureuse',\n", - " \"j'avais mis ma vie en musique\",\n", - " 'amoureuse, amoureuse',\n", - " \"j'etais l'enfant d'une chanson\",\n", - " \"en roulant j'avais fait dix fois le tour\",\n", - " \"de tout un roman d'amour pour un garcon\",\n", - " 'qui me telephonait',\n", - " 'depuis trois jours',\n", - " 'amoureuse, amoureuse',\n", - " \"j'avais mis ma vie en musique\",\n", - " 'is there anybody here',\n", - " \"searchin' for the last trance ?\",\n", - " 'loopy bones and skeletons breathe',\n", - " 'into the winds of nonsense',\n", - " \"dancing the death's dance\",\n", - " \"she's coming fast...\",\n", - " \"fondus dans l'ébène pour d'étranges parades nuptiales\",\n", - " 'cadavres exquis et ravers célèbrent le grand tout',\n", - " \"trémoussent leur cul dans l'infusoire des sociétés macabres\",\n", - " 'foire aux vanités au chant du hibou',\n", - " 'salvation',\n", - " 'by hard beats',\n", - " 'when they will take you by your cold hands',\n", - " \"for the death's dance\",\n", - " 'is there anybody here',\n", - " \"searchin' for the last trance ?\",\n", - " 'loopy bones and skeletons breathe',\n", - " 'into the winds of nonsense',\n", - " \"dancing the death's dance\",\n", - " \"she's coming fast...\",\n", - " 'tes neuf vies se sont écoulées, bébé ...ils approchent',\n", - " 'leurs tambours roulent la galoche des loteries infernales',\n", - " \"demi-dieux grotesques, joyeux et glaçants face aux psychés, crachent l'écume des lunes\",\n", - " 'et des queues de comètes dans tes annales',\n", - " 'salvation',\n", - " 'by hard kicks',\n", - " 'when they will take you by your jelly brains',\n", - " \"for the death's dance\",\n", - " 'is there anybody here',\n", - " \"searchin' for the last trance ?\",\n", - " 'loopy bones and skeletons breathe',\n", - " 'into the winds of nonsense',\n", - " \"dancing the death's dance\",\n", - " 'and maquabir exhorted:',\n", - " '\"what we were, you are\"',\n", - " '\"what we are, you will be\"',\n", - " \"passé le scalpel des jours, c'est un essaim de poignards-cristal\",\n", - " \"qui bourdonne sous l'pick-up des dj's en mains anonymes des ruches noires\",\n", - " 'ça y est, la rumeur du vent efface ton monde, tu es ce crâne au sourire sans fin',\n", - " 'oh infini éjaculatoire',\n", - " 'salvation',\n", - " 'beats your ears',\n", - " 'when they will take you by your cold hands',\n", - " \"for the death's dance\",\n", - " 'is there anybody here',\n", - " \"searchin' for the last trance ?\",\n", - " 'loopy bones and skeletons breathe',\n", - " 'into the winds of nonsense',\n", - " \"dancing the death's dance\",\n", - " \"she's coming fast...\",\n", - " '(nicola sirchis / dominique nicolas)',\n", - " '55, les 7 jours de pekin',\n", - " \"c'est guerre froide tout autour du tonkin\",\n", - " '57, buddy holly rocker',\n", - " \"eddy cochran rock'n roller\",\n", - " '55, les 7 jours de pekin',\n", - " \"c'est guerre froide tout autour du tonkin\",\n", - " '57, buddy holly rocker',\n", - " \"eddy cochran rock'n roller\",\n", - " 'you!',\n", - " \"voila un recit maudit que t'oublies\",\n", - " \"place d'italie\",\n", - " \"voila un recit maudit que t'oublies\",\n", - " \"place d'italie\",\n", - " \"voila un recit maudit que t'oublies\",\n", - " \"place d'italie\",\n", - " 'a coup de be-bop',\n", - " 'au golf drouop',\n", - " 'a coup de be-bop',\n", - " 'au golf drouop',\n", - " 'a coup de be-bop',\n", - " 'au golf drouop',\n", - " '55, tu jouais pour dien bien phu',\n", - " \"ho chi minh se fout de toi - t'es cocu\",\n", - " '58, presley se contortionne',\n", - " \"rock'n roll il nous en donne\",\n", - " '55, tu jouais pour dien bien phu',\n", - " \"ho chi minh se fout de toi - t'es cocu\",\n", - " '58, presley se contortionne',\n", - " \"rock'n roll il nous en donne\",\n", - " 'you!',\n", - " \"voila un recit maudit que t'oublies\",\n", - " \"place d'italie\",\n", - " \"voila un recit maudit que t'oublies\",\n", - " \"place d'italie\",\n", - " \"voila un recit maudit que t'oublies\",\n", - " \"place d'italie\",\n", - " 'a coup de be-bop',\n", - " 'au golf drouop',\n", - " 'a coup de be-bop',\n", - " 'au golf drouop',\n", - " 'a coup de be-bop',\n", - " 'au golf drouop',\n", - " \"voila un recit maudit que t'oublies\",\n", - " \"place d'italie\",\n", - " \"voila un recit maudit que t'oublies\",\n", - " \"place d'italie\",\n", - " \"voila un recit maudit que t'oublies\",\n", - " \"place d'italie\",\n", - " 'a coup de be-bop',\n", - " 'au golf drouop',\n", - " 'a coup de be-bop',\n", - " 'au golf drouop',\n", - " 'a coup de be-bop',\n", - " 'au golf drouop',\n", - " 'a coup de be-bop',\n", - " 'au golf drouop',\n", - " 'a coup de be-bop',\n", - " 'be-bop',\n", - " 'be-bop',\n", - " 'be-bop',\n", - " 'oi',\n", - " 'original:',\n", - " 'do you need me ?',\n", - " 'do you need me to punish you for all of your sins ?',\n", - " 'oh i need you!',\n", - " 'do you want me ?',\n", - " 'do you want me to break up the animal in you ?',\n", - " 'oui je te veux !',\n", - " 'oui je te veux toi pour réveiller tous mes démons',\n", - " 'je ne peux plus me passer de toi !',\n", - " 'tu es mon seul désir',\n", - " 'besoin de toi pour, éveiller mes désirs',\n", - " 'my angel slept with a devil',\n", - " 'he stole her wings',\n", - " 'my angel burns for ever',\n", - " 'her lust made her weak',\n", - " 'do you want me ?',\n", - " 'do you me to bring out the animal in you ?',\n", - " 'j’ai besoin de toi !',\n", - " 'j’ai besoin de toi pour ne plus rire de tous mes vices',\n", - " 'you can’t ignore me',\n", - " 'i am the only one',\n", - " 'i know you need me',\n", - " 'i’m the one that wakes up your lust',\n", - " 'my angel slept with a devil',\n", - " 'he stole her wings',\n", - " 'my angel burns for ever',\n", - " 'her lust made her weak',\n", - " 'j’ai rencontré le diable',\n", - " 'il m’a brisé les ailes',\n", - " 'perdu pour toujours',\n", - " 'mon désir fera ma perte',\n", - " '...made her weak',\n", - " 'je ne peux plus me passer de toi',\n", - " 'tu es mon seul désir',\n", - " 'besoin de toi pour',\n", - " 'éveiller mes désirs',\n", - " 'j’ai rencontré le diable',\n", - " 'il m’a brisé les ailes',\n", - " 'perdu pour toujours',\n", - " 'mon désir fera ma perte',\n", - " 'j’ai rencontré le diable',\n", - " 'il m’a brisé les ailes',\n", - " 'perdu pour toujours',\n", - " 'mon désir fera ma perte',\n", - " 'english:',\n", - " 'do you need me?',\n", - " 'do you need me to punish you for all of your sins?',\n", - " 'oh i need you!',\n", - " 'do you want me?',\n", - " 'do you want me to break up the animal in you?',\n", - " 'yes i want you!',\n", - " 'yes i want you to wake up all of my demons',\n", - " 'i can’t go without you!',\n", - " 'you are my only desire',\n", - " 'i need you to wake up my desires',\n", - " 'my angel slept with a devil',\n", - " 'he stole her wings',\n", - " 'my angel burns forever',\n", - " 'her lust made her weak',\n", - " 'do you want me?',\n", - " 'do you me to bring out the animal in you?',\n", - " 'i need you!',\n", - " 'i need you to stop laughing about my “vices”',\n", - " 'you can’t ignore me',\n", - " 'i am the only one',\n", - " 'i know you need me',\n", - " 'i’m the one that wakes up your lust',\n", - " 'my angel slept with a devil',\n", - " 'he stole her wings',\n", - " 'my angel burns forever',\n", - " 'her lust made her weak',\n", - " 'i met the devil',\n", - " 'he broke my wings',\n", - " 'lost forever',\n", - " 'my desire will lead to my loss',\n", - " '...made her weak',\n", - " 'i can’t go without you!',\n", - " 'you are my only desire',\n", - " 'i need you to wake up my desires',\n", - " 'i met the devil',\n", - " 'he broke my wings',\n", - " 'lost forever',\n", - " 'my desire will lead to my loss',\n", - " 'i met the devil',\n", - " 'he broke my wings',\n", - " 'lost forever',\n", - " 'my desire will lead to my loss',\n", - " 'oh oh, oh oh oh',\n", - " 'so jetlagged',\n", - " 'quelle heure est-il, où tu es?',\n", - " 'un autre avion et tu repars',\n", - " ...]},\n", - " 'data': ['y tombe des bombes',\n", - " 'ça boume, surboum, sublime',\n", - " \"des plombe qu'ça tombe\",\n", - " \"un monde immonde s'abîme\",\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " \"c'est l'hécatombe\",\n", - " 'ça retombe en trombe, ça fume',\n", - " 'tout flambe, les tombes',\n", - " 'les temples, exemple, sublime',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'infâme napalm',\n", - " \"les flammes surplombent l'abîme\",\n", - " 'goddamn, tout crame',\n", - " 'tout tremble et tombe en ruine',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'rock around the bunker',\n", - " 'rock around, rock around',\n", - " 'bring the sun',\n", - " 'aaaaaaaaaaah',\n", - " 'ooooooooooh',\n", - " 'aaaaaaaaaaah',\n", - " 'oooooooooh',\n", - " 'bring the sun, spins around and around and around',\n", - " 'bring the sun, spins around and around and around',\n", - " 'bring the sun, spins around and around and around',\n", - " 'bring the sun, spins around and around and around',\n", - " 'is it mine, is it mine, is it mine, is it mine',\n", - " 'is it mine, is it mine, is it mine, is it mine',\n", - " 'is it mine, is it mine, is it mine, is it mine',\n", - " 'is it mine, is it mine, is it mine, is it mine',\n", - " 'spins around and around and around and around',\n", - " 'spins around and around and around and around',\n", - " 'spins around and around and around and around',\n", - " 'spins around and around and around and around',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " 'sun, sun, bring the sun',\n", - " \"toussaint l'ouverture\",\n", - " 'freedom!',\n", - " 'from!',\n", - " 'home!',\n", - " 'home!',\n", - " '*horse galloping and neighing*',\n", - " 'toussaint!',\n", - " \"toussaint l'ouverture!\",\n", - " 'toussaint!',\n", - " \"toussaint l'ouverture!\",\n", - " 'liberté!',\n", - " 'egalité!',\n", - " 'fraternité!',\n", - " 'sangre de dios!',\n", - " 'hijo de dios!',\n", - " 'amor de dios!',\n", - " 'sangre es vida!',\n", - " 'vida es sangre!',\n", - " 'sangre es amor!',\n", - " 'amor es sangre!',\n", - " 'toussaint!',\n", - " \"toussaint l'ouverture!\",\n", - " \"toussaint l'ouverture!\",\n", - " 'freedom!',\n", - " 'freedom!',\n", - " 'ellos!',\n", - " \"feuilles oh, sauvez la vie moi, j'ai de la misère oh\",\n", - " \"feuilles oh, sauvez la vie moi, j'ai de la misère oh\",\n", - " 'pitie moi malade, je cours à la maison du gangan similo',\n", - " 'pitie moi malade, je cours à la maison du gangan , si gangan est bon',\n", - " \"il me sauvera la vie , j'ai de la misère oh\",\n", - " 'actual haitian creole lyrics:',\n", - " 'fèy, o! sove lavi mwen. nan mizè mwen ye, o!',\n", - " 'fèy, o! sove lavi mwen. nan mizè mwen ye, o!',\n", - " 'pitit mwen malad, mwen kouri kay gangan similo',\n", - " 'pitit mwen malad, mwen kouri kay gangan. si li bon gangan',\n", - " 'sove lavi mwen, nan mizè mwen ye, o!',\n", - " 'english translation:',\n", - " \"oh leaves, save my life. i'm in misery. oh!\",\n", - " \"oh leaves, save my life. i'm in misery. oh!\",\n", - " 'little me is sick. i run to the house of similo (the spiritual healer)',\n", - " \"little me is sick. i run to the house of the spiritual healer. if he's a good one\",\n", - " \"he'll save my life. i'm in misery. oh!\",\n", - " 'drum & bass – right in yer face',\n", - " 'in a movie place we gotta give it no stress',\n", - " 'wicked and liquid – wicked – wicked and liquid',\n", - " 'one / one, two / two, give it to the rest – come on ! x2',\n", - " \"j'ai comme l’impression parfois qu'mes subs te foutent la pression\",\n", - " \"t'es à 120 pulsations fais tésau l’bouton pression\",\n", - " \"j'aime quand ça glisse, quand le beat déboule le long de tes cuisses\",\n", - " 'ma langue frétille et mon index est relax',\n", - " 'drum & bass – right in your face',\n", - " \"la grosse caisse qui tabasse même si le dancefloor s'affaisse\",\n", - " 'ça fait wicked and liquid – wicked – wicked and liquid',\n", - " \"one / one, two / two, j'aime quand ça fait hoo ! hoo !\",\n", - " 'i could be you, you could be me',\n", - " 'two raindrops in the same sea',\n", - " 'you could be me, i could be you',\n", - " 'two angles of the same view',\n", - " 'and we share the same blood',\n", - " 'comme deux gouttes d’eau',\n", - " 'on se ressemble',\n", - " 'comme provenant de la même mère',\n", - " 'comme deux ruisseaux (you could be me)',\n", - " 'qui se rassemblent (i could be you)',\n", - " 'pour faire les grandes rivières',\n", - " 'and we share the same blood',\n", - " 'yeah, we share the same blood',\n", - " 'and we share the same blood',\n", - " 'yeah, we share the same blood',\n", - " 'music is the weapon, music is the weapon of the future',\n", - " 'music is the weapon, music is the weapon of the future',\n", - " 'music is the weapon, music is the weapon of the future',\n", - " 'same fucking blood',\n", - " 'same fucking blood',\n", - " 'au 56, 7, 8, peu importe',\n", - " 'de la rue x, si vous frappez à la porte',\n", - " \"d'abord un coup, puis trois autres, on vous laisse entrer\",\n", - " 'seul et parfois même accompagné',\n", - " 'une servante, sans vous dire un mot, vous précède',\n", - " 'des escaliers, des couloirs sans fin se succèdent',\n", - " \"décorés de bronzes baroques, d'anges dorés\",\n", - " \"d'aphrodites et de salomés\",\n", - " \"s'il est libre, dites que vous voulez le quarante-quatre\",\n", - " \"c'est la chambre qu'ils appellent ici de cléopâtre\",\n", - " 'dont les colonnes du lit de style rococo',\n", - " 'sont des nègres portant des flambeaux',\n", - " \"entre ces esclaves nus taillés dans l'ébène\",\n", - " 'qui seront les témoins muets de cette scène',\n", - " 'tandis que là-haut un miroir nous réfléchit',\n", - " \"lentement j'enlace melody\",\n", - " 'melody',\n", - " 'melody',\n", - " 'english translation - \"the private mansion\"',\n", - " \"at number fifty-six, seven, eight, it doesn't matter\",\n", - " 'on x street, if you knock on the door',\n", - " 'first one time, then three more, they let you in',\n", - " 'alone and sometimes even with a friend',\n", - " 'a servant, without a word, before you went his way',\n", - " 'long endless passages, spiral stairways',\n", - " 'decorated with baroque bronzes, golden angels',\n", - " 'aphrodites and salomés',\n", - " \"if it's free, say you want number fourty-four\",\n", - " 'it\\'s the room they call \"the cleopatra\"',\n", - " 'around the four-posted rococo-style bed',\n", - " 'stand black statues holding torches',\n", - " 'between these naked slaves, carved from ebony',\n", - " 'who are the silent witnesses of this scene',\n", - " 'while up on the ceiling, a mirror reflects us',\n", - " 'slowly, i embraced melody',\n", - " \"ça m'a pris par surprise\",\n", - " \"quand j'étais qu'un gamin\",\n", - " \"j'regardais tomber mes nuits\",\n", - " \"et j'en attendais rien\",\n", - " 'moi à springfield, massachusetts',\n", - " \"la vie coulait comme de l'eau\",\n", - " \"un matin j'ai pris perpète\",\n", - " 'en ouvrant la radio',\n", - " \"ça s'appelait rock and roll\",\n", - " \"moi ça m'a rendu folle\",\n", - " \"moi j'y ai rien compris\",\n", - " \"sauf que c'était ma vie\",\n", - " 'tu comprends rien mais que ça sonne',\n", - " 'ça faisait un, deux, trois, pretty mama',\n", - " 'quatre, cinq, six, i miss you',\n", - " \"sept, huit, neuf, can't get enough\",\n", - " \"dix, onze, douze, i ain't got the blues\",\n", - " 'one, two, three, come on baby',\n", - " 'four, five, six, a kiss',\n", - " \"seven, eight, ninе, you're on my mind\",\n", - " 'ten, elеven, twelve, tell me when',\n", - " \"il paraît qu'il y en aurait qui se damnent\",\n", - " \"pour du pouvoir, pour de l'or\",\n", - " 'chacun sa façon de brader son âme',\n", - " \"on les plaint pour ce qu'ils ignorent\",\n", - " 'moi quand j\\'entends l\\'intro de \"hey joe\"',\n", - " \"oh je comprends mieux qu'aucun mot\",\n", - " 'et rien ne me met dans le même état',\n", - " \"que la voix d'aretha\",\n", - " \"ça s'appelait rock and roll rock, rock and roll\",\n", - " \"moi ça m'a rendu folle ça m'a rendu, rendu folle\",\n", - " \"moi j'y ai rien compris rien compris\",\n", - " \"sauf que c'était ma vie c'était ma vie\",\n", - " 'tu comprends rien mais que ça sonne',\n", - " 'ça faisait',\n", - " 'ça faisait un, deux, trois, pretty mama',\n", - " 'quatre, cinq, six, i miss you',\n", - " \"sept, huit, neuf, can't get enough\",\n", - " \"dix, onze, douze, i ain't got the blues\",\n", - " 'one, two, three, come on baby baby',\n", - " 'four, five, six, a kiss a kiss',\n", - " \"seven, eight, nine, you're on my mind\",\n", - " 'ten, eleven, twelve, tell me when',\n", - " \"et c'était plus qu'une musique\",\n", - " 'un langage, une communion',\n", - " 'une religion laïque',\n", - " 'notre façon de dire non',\n", - " \"des cheveux longs jusqu'au blouson\",\n", - " 'mêmes idoles et mêmes temples',\n", - " 'nous allions tous même direction',\n", - " 'nulle part, oui, mais ensemble',\n", - " \"et c'est un, deux, trois, pretty mama\",\n", - " 'quatre, cinq, six, i miss you miss you',\n", - " \"sept, huit, neuf, can't get enough\",\n", - " \"dix, onze, douze, i ain't got the blues\",\n", - " 'one, two, three, come on baby baby',\n", - " 'four, five, six, a kiss',\n", - " \"seven, eight, nine, you're on my mind\",\n", - " 'ten, eleven, twelve, tell me when tell me when',\n", - " 'un, deux, trois, pretty mama pretty mama',\n", - " 'quatre, cinq, six, i miss you miss you',\n", - " \"sept, huit, neuf, can't get enough can't get enough\",\n", - " \"dix, onze, douze, i ain't got the blues\",\n", - " 'one, two, three, come on baby yeah-ah',\n", - " 'four, five, six, a kiss give me a kiss',\n", - " \"seven, eight, nine, you're on my mind on my mind\",\n", - " 'ten, eleven, twelve, tell me when come on baby',\n", - " 'un, deux, trois, pretty mama pretty mama',\n", - " 'quatre, cinq, six, i miss you i miss you',\n", - " \"sept, huit, neuf, can't get enough i can't get enough\",\n", - " \"dix, onze, douze, i ain't got the blues got the blues\",\n", - " 'come on baby',\n", - " 'hey yeah yeah',\n", - " 'alright-right',\n", - " 'alright, pretty mama',\n", - " 'here now lies the immaturity of verity',\n", - " 'in a rotten reality that relies on deception',\n", - " 'and nourishes lies since its inception',\n", - " 'i no longer choke on the smoke screen',\n", - " 'and a chaotic stream with extreme means',\n", - " 'yet in the meantime my mind is blown away',\n", - " 'cast astray',\n", - " 'castrer et incarcérer car',\n", - " 'je ne sais plus trop quoi penser',\n", - " 'ni par ou passer pour aller outre la route toute tracée',\n", - " 'qui nous est: désignée, destinée, pavée, érigée et régis',\n", - " 'par les mécaniques économiques souillées sous',\n", - " \"l'influence de l'opinion de ces véreux et vicieux\",\n", - " \"vice rois de la haute finance qui font fit d'autrui\",\n", - " \"qui font l'autruche alors que\",\n", - " 'gaz en main ils gèrent la ruche',\n", - " 'but here still lies the immaturity of verity',\n", - " 'in a rotten reality that relies on deception',\n", - " 'and nourishes lies since its inception',\n", - " 'but to unveil those misfit deeds',\n", - " 'would indeed deaden the dubious nature of the beast',\n", - " 'a childish fantasy, my forlorn fetish of verity',\n", - " 'utopian immaturity',\n", - " '\"a counter-progress towards economy',\n", - " 'and a felony against the ill-will\"',\n", - " 'of an elitist society',\n", - " \"ci-gît céans l'immaturité de la vérité\",\n", - " 'dans une réalité tarie qui se fie à la tromperie',\n", - " \"face à la fantaisie infantile d'un fétiche masochiste\",\n", - " \"pour le fin fond de l'histoire, la vérité, puis le savoir\",\n", - " 'ainsi fûmes nous ostracisés, des lors subjugués',\n", - " \"et intoxiqués par l'épais écran de fumée\",\n", - " 'it is night',\n", - " \"it's not night\",\n", - " \"i'm happy\",\n", - " \"i'm not happy\",\n", - " \"i'm sad\",\n", - " \"i'm not sad\",\n", - " \"it's early\",\n", - " \"it's late\",\n", - " 'je marche',\n", - " 'je marche pas',\n", - " 'bonsoir monsieur',\n", - " 'tu viens avec moi ?',\n", - " 'tu viens mon chéri ?',\n", - " 'oui monsieur, viens',\n", - " 'tu es prêt ?',\n", - " 'viens…',\n", - " \"ça m'est égal\",\n", - " 'what do you want me to do?',\n", - " 'je veux - je veux pas',\n", - " \"i touch you - et c'est dur monsieur\",\n", - " \"it's not like that\",\n", - " \"i'll show you…\",\n", - " 'show you love… love…',\n", - " 'let me sink…',\n", - " 'ohhh…',\n", - " \"je dois manger - n'importe quoi\",\n", - " 'i break off the corner of your mind and eat it',\n", - " \"i'm eating your mind\",\n", - " \"i'm eating your body\",\n", - " 'viens ici ici',\n", - " 'come i want your body',\n", - " \"viens, viens faire l'amour\",\n", - " \"faire l'amour\",\n", - " \"faire l'amour\",\n", - " 'come into my arms',\n", - " 'i kiss your lips',\n", - " 'you die',\n", - " 'i want your body',\n", - " 'i do not want your body',\n", - " \"de quoi s'agit-il ?\",\n", - " 'bonne nuit - good night',\n", - " \"bonjour - mornin'\",\n", - " \"it's night - it's day\",\n", - " \"it's morning\",\n", - " \"c'est ça, non?\",\n", - " \"i love you, you're so well read\",\n", - " 'blue stockings well spread',\n", - " 'your carnal knowledge knocks me dead',\n", - " \"i love you, you're so well read\",\n", - " 'blue stocking give head',\n", - " \"i love you, you've read:\",\n", - " \"ovid, anaïs nin, the song of solomon, the perfumed garden and georges bataille's the story of the eye\",\n", - " 'the petronius satyricon, the arabian nights, the decameron',\n", - " \"the marquis de sade's 120 days\",\n", - " 'and serge gainsbourg singing songs to sweet jane b',\n", - " \"i love you, you've read:\",\n", - " 'sacher-masoch and dhl',\n", - " \"portnoy's complaint and mine as well\",\n", - " 'frank harris, the life and loves',\n", - " 'lusts of a moron, wings of a dove',\n", - " 'the latins of the silver age',\n", - " 'the triolets of paul verlaine',\n", - " 'lautreamont and g. cabrera infante',\n", - " 'mishima yukio and sweet jane b',\n", - " \"i love you, you're so well read\",\n", - " 'blue stocking give head',\n", - " 'whisper what they said:',\n", - " \"'le silence de la chambre est profond\",\n", - " \"aucun bruit n'arrive plus\",\n", - " 'ni des routes, ni de la ville, ni de la mere',\n", - " 'la nuit est a son terme, partout limpide et noir',\n", - " 'la lune a disparu',\n", - " 'ils ont peur',\n", - " 'il ecoute, les yeux au sol',\n", - " 'son silence effrayante',\n", - " 'il parle de sa beauté',\n", - " 'les yeux fermees',\n", - " \"il peut revoir encore l'image dans sa perfection'\",\n", - " \"c'est le malaise du moment\",\n", - " \"l'épidémie qui s'étend\",\n", - " 'la fête est finie on descend',\n", - " 'les pensées qui glacent la raison',\n", - " 'paupières baissées, visage gris',\n", - " 'surgissent les fantomes de notre lit',\n", - " 'on ouvre le loquet de la grille',\n", - " \"du taudit qu'on appelle maison\",\n", - " 'protect me from what i want',\n", - " 'protect me from what i want',\n", - " 'protect me from what i want',\n", - " 'protect me',\n", - " 'protect me',\n", - " 'protège-moi, protège-moi',\n", - " 'protège-moi, protège-moi',\n", - " 'protège-moi, protège-moi',\n", - " 'protège-moi, protège-moi',\n", - " 'sommes nous les jouets du destin',\n", - " 'souviens toi des moments divins',\n", - " 'planants, éclatés au matin',\n", - " 'et maintenant nous sommes tout seuls',\n", - " \"perdus les reves de s'aimer\",\n", - " 'les temps où on avait rien fait',\n", - " 'il nous reste toute une vie pour pleurer',\n", - " 'et maintenant nous sommes tout seuls',\n", - " 'protect me from what i want',\n", - " 'protect me from what i want',\n", - " 'protect me from what i want',\n", - " 'protect me',\n", - " 'protect me',\n", - " 'protect me from what i want (protège-moi, protège-moi)',\n", - " 'protect me from what i want (protège-moi, protège-moi)',\n", - " 'protect me from what i want (protège-moi, protège-moi)',\n", - " 'protect me',\n", - " 'protect me',\n", - " 'protège-moi, protège-moi',\n", - " 'protège-moi, protège-moi',\n", - " 'protect me from what i want',\n", - " 'protect me from what i want',\n", - " 'protect me from what i want',\n", - " 'protect me',\n", - " 'protect me',\n", - " 'protect me from what i want',\n", - " 'protect me from what i want',\n", - " 'protect me from what i want',\n", - " 'protect me',\n", - " 'protect me',\n", - " 'protect me from what i want',\n", - " 'protect me from what i want',\n", - " 'protect me from what i want',\n", - " 'protect me',\n", - " 'protect me',\n", - " 'disconnected from what we used to be',\n", - " 'reaching once and for all the point of no return',\n", - " 'overthinking we redefined our kind',\n", - " \"a failed attempt to rewrite nature's law\",\n", - " 'we sacrified our spirituality',\n", - " 'on the altar of superficiality',\n", - " \"lost far from our elder's way\",\n", - " 'so far away',\n", - " 'disciples of transhumanism',\n", - " 'a shattered icon of our legacy',\n", - " \"lost far from our elder's way\",\n", - " 'so far away',\n", - " 'we soiled our land on planetary scale',\n", - " 'reaching once and for all the point of no return',\n", - " 'a foolish matricide of mother earth',\n", - " 'an attempt to rise as a new maker',\n", - " 'des millénaires nous avons vécu selons nos traditions',\n", - " \"dans le respect de nos ancêtres jusqu'à ce que les cultures de masse\",\n", - " \"n'atrophient notre intellect pour sombrer dans un monde envahi du vide\",\n", - " \"malgré l'urgence d'agir maintenant, avant qu'il ne soit trop tard\",\n", - " 'dociles, les brebis bien domptées se sont mutilé la raison, abandonnant leur liberté',\n", - " 'on comptera nos morts abandonnés, on comptera les corps des crucifiés. de connards en',\n", - " 'prisonniers, de sévices en amitiés ,de bâtards en tisonniers : des supplices alambiqués',\n", - " 'years passing by',\n", - " 'your mind messed up, so is life',\n", - " 'where did this come from?',\n", - " 'struggling through the night',\n", - " 'with only clouds on your side',\n", - " \"it's not true though\",\n", - " \"it's not true\",\n", - " 'to bleed',\n", - " 'is to feel',\n", - " 'in your core',\n", - " 'dreams',\n", - " 'fall apart',\n", - " \"don't you ever\",\n", - " \"don't you ever close your heart to me\",\n", - " \"don't you ever\",\n", - " \"don't you ever close your heart to me\",\n", - " 'things always fall apart',\n", - " 'rips your heart out thousand times',\n", - " \"it's not the end though\",\n", - " 'falling through the sunken skies',\n", - " 'with your words by my side',\n", - " \"it's not the end though\",\n", - " \"it's not the end\",\n", - " 'to bleed',\n", - " 'is to feel',\n", - " 'dreams',\n", - " 'fall apart',\n", - " \"don't you ever\",\n", - " \"don't you ever close your heart to me\",\n", - " 'dreams',\n", - " 'fall apart',\n", - " \"don't you ever\",\n", - " 'never say never',\n", - " \"it's not over now\",\n", - " '\"que les cieux noirs d\\'orage',\n", - " 'chassent le voile devant tes yeux',\n", - " \"ainsi que tu as chuté tu t'élèveras\",\n", - " 'tombant au travers des miroirs de ton espirit',\n", - " \"qui t'ont gardé sauf et aveugle\",\n", - " 'une chute libre dont tu ne vois pas la fin',\n", - " \"à présent laisse l'air caresser ta peau\",\n", - " 'gisent encore des fragments épars',\n", - " 'dans la fissure entre les marées',\n", - " 'mais la vérité seule survivra',\n", - " 'tout le reste périra par le feu',\n", - " 'sous des nuages de pluie sombres',\n", - " 'à travers ton océan de douleur',\n", - " 'le soleil de nouveau percera',\n", - " 'et tu verras un autre jour\"',\n", - " '\"c\\'était le moment du départ. il me venait des vilaines pensées, des sensations bien sinistres... toute la moche incohérence des vapeurs, des foules, des sifflets, ça stupéfie... je voyais là-bas au loin les rails qui foutaient le camp dans le tunnel. moi aussi j’allais disparaître...\"',\n", - " 'memory',\n", - " 'on the memories trail',\n", - " 'we rise and fall',\n", - " 'all fails, we carry on',\n", - " 'for years of falling, falling and fall...',\n", - " 'memory',\n", - " 'on the memories trail',\n", - " 'we rise and fall',\n", - " 'all fails, we carry on',\n", - " 'for years of falling, falling and fall...',\n", - " 'lay down',\n", - " 'let the river flow',\n", - " 'flow in',\n", - " 'in a place far',\n", - " 'so far from here',\n", - " 'so far',\n", - " 'all fails, we carry on',\n", - " 'for years of falling, falling, falling...',\n", - " '\"moi aussi j\\'allais disparaître...\"',\n", - " 'dans les camps de concentrations',\n", - " 'block, h, block, h block h',\n", - " 'service torture, service mental',\n", - " 'service secret, service fasciste',\n", - " 'en sibérie occidentale',\n", - " 'torture, torture mentale',\n", - " 'dans les pays sous-developpés',\n", - " \"la dictature s'est imposée\",\n", - " 'les militaires sont au pouvoir',\n", - " 'dans les camps rien de beau à voir',\n", - " 'service torture, service nada',\n", - " \"c'etait un gamin un gosse de paris\",\n", - " 'sa seule famille etait sa mere',\n", - " 'une pauvre fille aux grands yeux fletris',\n", - " 'par le chagrin et la misere',\n", - " 'elle aimait les fleurs, les roses surtout',\n", - " 'et le cher bambin, le dimanche',\n", - " 'lui apportait des roses blanches',\n", - " \"au lieu d'acheter des joujoux\",\n", - " 'la calinant bien tendrement',\n", - " 'il disait en les lui donnant',\n", - " 'tiens ma jolie maman',\n", - " 'voici des roses blanches',\n", - " 'toi qui les aimes tant',\n", - " 'va quand je serai grand',\n", - " \"j'acheterai au marchand\",\n", - " 'toutes ses roses blanches',\n", - " 'pour toi jolie maman',\n", - " 'au dernier printemps le destin brutal',\n", - " 'vint frapper la blonde ouvriere',\n", - " \"elle tomba malade et pour l'hopital\",\n", - " 'le gamin vit partir sa mere',\n", - " \"un matin d'avril parmi les promeneurs\",\n", - " \"n'ayant plus un sous dans sa poche\",\n", - " 'sur un marche le pauvre gosse',\n", - " 'furtivement vola quelques fleurs',\n", - " \"la fleuriste l'ayant surpris, en baissant la tete il lui dit\",\n", - " 'la marchande emue doucement lui dit',\n", - " \"elle l'embrassa et l'enfant partit\",\n", - " \"tout rayonnant qu'on le pardonne\",\n", - " \"puis a l'hopital il vint en courant\",\n", - " 'pour offrir les fleurs a sa mere',\n", - " 'mais en le voyant une infirmiere',\n", - " 'lui dit:',\n", - " \"et le gamin s'agenouillant, dit devant le petit lit blanc\",\n", - " 'leurs bouches grande ouvertes ne laissant paraître de son et prenant ma place',\n", - " 'je serai la dissonance dans la mélodie de ton existence',\n", - " 'grinçante, spectrale, remontant dans ta voie spinale',\n", - " \"pour te hanter et t'obséder, comme jamais tu ne l’avais été\",\n", - " 'un enfer à en faire pâlir le porteur de lumière',\n", - " 'où je déciderai et ne serai plus ton esclave',\n", - " \"mais, d'une manière ou d'une autre, nous nous reverrons!\",\n", - " 'je ferai le pas afin de rejoindre cette danse',\n", - " 'macabre et hypnotique',\n", - " 'prendre la main de la décharnée et me laisser tourner',\n", - " 'dans cette ronde sans fin comme l’apothéose de mon chemin',\n", - " \"un point culminant dont je ne sais si je dois redouter la chute ou l'ascension!\",\n", - " 'ne pouvant déterminer. de quel côté tu es',\n", - " \"et quelle route je suis sur le point d'emprunter!\",\n", - " \"and what happen if i don't want to choose between the two paths?\",\n", - " 'and if the one on my back becomes a part of the crossroads?',\n", - " 'to see the whole and break the chains of duality',\n", - " 'an alternative against antagonism to find and to fulfill myself',\n", - " 'being more complete through the loss than ever before',\n", - " 'i can even feel the delicate caress of the three graces',\n", - " 'but another thing touches my skin, cold and dangerous',\n", - " 'striking in the most complete silence, like a winter wind',\n", - " 'as far as my eyes can see, behind the thick veil of memory',\n", - " 'striking in the most complete silence, for the void in my heart',\n", - " 'and i shout, to express the suffering, to find and to fulfill myself',\n", - " 'as my heart will beat as a voice in the land of stars',\n", - " 'que vienne le froid',\n", - " 'et l’armée du seigneur de l’hiver',\n", - " 'de givre, de neige et de glace',\n", - " 'les guerriers des montagnes oubliées',\n", - " 'oh!',\n", - " 'mettons nous en marche',\n", - " 'sous cette lune de marbre',\n", - " 'que retentissent nos pas',\n", - " 'i reign on the kingdom of the moon',\n", - " 'i sit upon the secret throne',\n", - " 'and my soul vanishes in lost hopes',\n", - " 'for now i know i am the last human soul',\n", - " 'from the summits i observe',\n", - " 'these mighty and majestic landscapes',\n", - " 'from the highest mountains i contemplate',\n", - " 'the last ashes of the human race',\n", - " 'par le sang de nos ancètres',\n", - " 'viendra notre force',\n", - " 'et l’esprit du dieu de l’hiver',\n", - " 'guidera nos pas',\n", - " 'dans ce royaume',\n", - " 'sombre et solitaire',\n", - " 'nous attendons',\n", - " 'et préparons cette guerre',\n", - " 'i live in the kingdom of sorrow',\n", - " 'in eternal landscapes of sepulchral snow',\n", - " 'i reign on the kingdom of the moon',\n", - " 'i sit upon the secret throne',\n", - " 'and my soul vanishes in lost hopes',\n", - " 'for now i know i am the last human soul',\n", - " 'from the summits i observe',\n", - " 'these mighty and majestic landscapes',\n", - " 'from the highest mountains i contemplate',\n", - " 'the last ashes of the human race',\n", - " 'déchire la peau épaisse',\n", - " 'qui pèse sur mes épaules',\n", - " 'détache-la pour moi',\n", - " 'membre par membre',\n", - " 'pièce par pièce',\n", - " 'je veux te montrer qui je suis',\n", - " 'au delà de mon corps',\n", - " 'au delà de ma chair',\n", - " 'te laisser entrevoir',\n", - " 'mes éctats limpides',\n", - " 'non humains',\n", - " 'regarde-moi',\n", - " 'tel que je suis',\n", - " 'et accepte-moi',\n", - " 'ne les laisse pas',\n", - " 'me voler mon âme',\n", - " 'ne les laisse pas la ternir',\n", - " 'pierce the thick skin',\n", - " 'that weighs upon my shoulders',\n", - " 'tear it off of me',\n", - " 'limb by limb',\n", - " 'piece by piece',\n", - " 'so i may show you who i am',\n", - " 'beyond my body',\n", - " 'beyond my flesh',\n", - " 'so you may catch a glimpse',\n", - " 'of my non-human',\n", - " 'shards of light',\n", - " 'behold me',\n", - " 'as i am',\n", - " 'and embrace me',\n", - " 'do not let them',\n", - " 'rob me of my soul',\n", - " 'do not let them tarnish it',\n", - " 'nekrah el khaliji',\n", - " 'ma 3ndich accent missri',\n", - " 'man dirch clip fl b7ar ou derriate ki brralenti',\n", - " 'man behdelch 3omri ftee-shirt diesel moulé',\n", - " 'ou chi ray ban gucci b7al chi raiman gauchi',\n", - " 'ou nekrah el markat men nhar joe strummer mat',\n", - " 'ou maranich bou7di',\n", - " 'lli 7ebb lboite à rythme',\n", - " 'lli 7ebb lplayback',\n", - " 'ych3al el itm, ytferrej fba7ibbak',\n", - " '3ndna batteur 3rguane, chanteur sekhfane',\n", - " 'rasta chadd el mizane ou la basse fi yedd 9azam',\n", - " 'ou guercifi za3fane, ou mdigouti liyyam',\n", - " 'ou maranich bou7di',\n", - " 'kayn barry',\n", - " 'barry wl maticha, darga wl hendia',\n", - " 'oul7al lbouhali wl7al lcasawi',\n", - " 'dial hafssa 3issawa h-kayne',\n", - " 'hazzou l3emmariyya',\n", - " 'w7na jina',\n", - " 'ou maranich bou7di',\n", - " '\"wla kenti baghi ddir che3bi, dir che3bi',\n", - " 'tkoun tl3eb lgherbi l3eb lgherbi',\n", - " 'mat9derch tkhellethoum bjouj',\n", - " 'koulla 7aja wl9awa3ed dialha',\n", - " 'sincèrement le niveau',\n", - " 'le niveau des paroles par exemple',\n", - " 'le niveau de la musique',\n", - " \"c'est pas un niveau\",\n", - " \"c'est pas un niiiveau\",\n", - " 'maranich bou7di',\n", - " 'ntouma hnaya',\n", - " '3awnouna newdo had rroubla',\n", - " 'rappeur rasta gnawa surfeur df3 jbha ou nif',\n", - " 'men aourioura l guercif',\n", - " 'maranich bou7di',\n", - " 'marakch bou7dek',\n", - " 'maranich bou7di',\n", - " 'wahya aourioura...',\n", - " 'confusion indicible',\n", - " 'la raison est impuissante',\n", - " 'tant de mots inutiles',\n", - " 'pour exprimer la tourmente',\n", - " 'le plaisir et la douleur',\n", - " \"se partagent l'univers\",\n", - " 'font mourir ou font peur',\n", - " 'nous emprisonnent dans la chair',\n", - " 'vingt mille feux sous les nerfs',\n", - " 'je me noie dans la souffrance',\n", - " 'comme un jeu, ou comme une guerre',\n", - " 'rien à voir avec la chance',\n", - " 'la tourmente est la rage',\n", - " 'qui ne connait pas de cible',\n", - " 'revenant du fond des âges',\n", - " 'comme une armée invincible',\n", - " \"je n'attendrai plus en vain\",\n", - " 'le matin des magiciens',\n", - " 'je ne crois plus au destin',\n", - " \"il ne reste que l'incertain\",\n", - " 'english translation:',\n", - " 'indescribable confusion',\n", - " 'the reason is powerless',\n", - " 'so many unnecessary words',\n", - " 'to express the turmoil',\n", - " 'pleasure and pain',\n", - " 'share the universe',\n", - " 'are dying or are afraid',\n", - " 'imprison us in the flesh',\n", - " 'twenty thousand fires under the nerves',\n", - " \"i'm drowning in suffering\",\n", - " 'as a game or as a war',\n", - " 'nothing to do with luck',\n", - " 'the turmoil is the rage',\n", - " 'who does not know the target',\n", - " 'coming back from the depths',\n", - " 'as an invincible army',\n", - " 'i wait in vain',\n", - " 'morning of the magicians',\n", - " 'i no longer believe in fate',\n", - " 'there are only uncertain',\n", - " '\"?\"',\n", - " 'suicide man must breed, it never ended',\n", - " 'he keeps a war in him, he dreams of other skies',\n", - " 'in the city of dead leaves, was born tragic',\n", - " 'with her body of dark bells, the lady of dreams',\n", - " 'awake everything is beyond',\n", - " 'putrified fury carried in me',\n", - " 'you carry them, those nights',\n", - " 'those unique lights',\n", - " 'darkness is completed',\n", - " '\"depuis quand brûlais-tu, feu?\"',\n", - " 'with this cross of dust',\n", - " 'and those faces, are they gods?',\n", - " 'are we gods?',\n", - " '\"oh, s\\'il te plaît, sois mon père! sois ma maison!',\n", - " 'il faut oublier tout cela, répond le géant, à voix basse. il faut oublier ces mots. il faut oublier les mots',\n", - " 'il a repris dans sa main la petite jambe, qui est immense déjà, et de son bras libre il nage dans cet espace sans fin de courants qui s\\'entrechoquent, d\\'abîmes qui s\\'entrouvrent, d\\'étoiles.\"',\n", - " 'putrified fury',\n", - " 'inside, in our deaf lands',\n", - " 'landed on your blood swell',\n", - " 'on all your flesh breakers',\n", - " 'in our deaf lands',\n", - " '\"il faut oublier ces mots. il faut oublier les mots',\n", - " 'il a repris dans sa main la petite jambe, qui est immense déjà, et de son bras libre il nage dans cet espace sans fin de courants qui s\\'entrechoquent, d\\'abîmes qui s\\'entrouvrent, d\\'étoiles.\"',\n", - " 'look at the ground, littering genocide',\n", - " 'lick and eat the corpses of previous nights',\n", - " 'close her eyes',\n", - " 'she carries them among the sky',\n", - " 'close her clock eyes',\n", - " 'make the day disappear',\n", - " 'of us, nobody can say anything',\n", - " 'awake, anyone left?',\n", - " '\"merde, j\\'serai jamais tranquille...',\n", - " 'j\\'vous demande rien bordel de dieu!\"',\n", - " '\"qui tue le soleil pour installer le royaume de la nuit noire, et qui crève la croix afin que les espaces de l’espace ne puissent plus jamais se rencontrer.\"',\n", - " 'putrified fury',\n", - " 'inside, in our deaf lands',\n", - " 'landed on your blood swell',\n", - " 'on all your flesh breakers',\n", - " 'in our deaf lands',\n", - " '\"ce qui m\\'a précédé, je ne le saisirai jamais',\n", - " 'ils appartiennent tous à la nuit, à cette nuit sans image',\n", - " 'moi aussi je suis là, plongé dans cette nuit',\n", - " 'je la désire, cette nuit, comme mon père l’a désirée sans doute',\n", - " 'je m\\'en vais.\"',\n", - " \"i'm this blade in men's eyes\",\n", - " 'their revolted eyes will marry me',\n", - " \"they won't dance anymore\",\n", - " 'they will rave and ramble, run and dance',\n", - " '\"j\\'ai toujours vécu dans des contradictions et n\\'en ai jamais souffert. si j\\'avais été un être systématique, j\\'aurai du mentir pour pouvoir trouver une solution. or, non seulement, j\\'ai accepté ce caractère insoluble des choses, mais j\\'y ai même trouvé une certaine volupté : la volupté de l\\'insoluble. je n\\'ai jamais cherché à aplanir, à réunir, ou à réconcilier l\\'irréconciliable. j\\'ai toujours pris les contradictions comme elles venaient, aussi bien dans ma vie privée que dans la théorie. je n\\'ai jamais eu de but, je n\\'ai cherché à trouver aucun résultat, je crois qu\\'il ne peut y avoir, aussi bien en général que pour soi, ni résultat, ni but. tout est non pas sans sens, le mot me dégoûte un peu, mais sans nécessité.\"',\n", - " 'yesterday',\n", - " 'she smiled already, before he came',\n", - " 'on his suicided horse, full of blood',\n", - " 'yesterday',\n", - " 'a road that took us back there',\n", - " 'in a place far, so far from here',\n", - " \"we'll be back there\",\n", - " '\"je ne suis pas un être de joie.\"',\n", - " 'putrified fury',\n", - " 'inside, in our deaf lands',\n", - " 'landed on your blood swell',\n", - " 'on all your flesh breakers',\n", - " 'in our deaf lands',\n", - " 'in our deaf lands',\n", - " \"gagner à naître, avoir faim d'exister\",\n", - " 'prêcher le beau et se déshabiller',\n", - " \"perdre une guerre pour gagner bien d'autres choses\",\n", - " 'oh! boy, le beau portrait',\n", - " \"si on s'y mettait, si on s'y mettait\",\n", - " 'trouver son île dans un ananas',\n", - " 'déchirer les murs et les almanachs',\n", - " 'servir des gâteaux dans tous les autobus',\n", - " 'oh! boy, le beau banquet',\n", - " \"si on s'y mettait, si on s'y mettait, si on s'y mettait\",\n", - " 'on donnerait plus de poils à saint-jean-baptiste',\n", - " \"l'été viendrait peut-être le vingt et un de mai\",\n", - " \"le bonheur se demanderait pas s'il est catholique\",\n", - " \"et mes chansons seraient de l'an prochain\",\n", - " \"si on s'y mettait, si on s'y mettait\",\n", - " \"si on s'y mettait, si on s'y mettait\",\n", - " \"si on s'y mettait, si on s'y mettait\",\n", - " \"si on s'y mettait, si on s'y mettait\",\n", - " \"si on s'y mettait, si on s'y mettait\",\n", - " \"si on s'y mettait, si on s'y mettait\",\n", - " \"si on s'y mettait, si on s'y mettait\",\n", - " \"si on s'y mettait, si on s'y mettait\",\n", - " \"si on s'y mettait, si on s'y mettait...\"]}}},\n", - " 'ga': {'sentence': {'pop': {'meta': {'train_data': ['imtheochaidh soir is siar',\n", - " 'a dtainig ariamh',\n", - " 'an ghealach is an ghrian',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the doh fol the day',\n", - " \"imtheochaidh an ghealach's an ghrian\",\n", - " \"an daoine og is a chail 'na dhiadh\",\n", - " 'fol lol the doh fol the day',\n", - " 'fol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the doh fol the day',\n", - " 'imtheochaidh a dtainig ariamh',\n", - " 'an duine og is a chail ne dhiadh',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the doh fol the day',\n", - " 'translation',\n", - " 'i will go east and go west',\n", - " 'from whence came',\n", - " 'the moon and the sun',\n", - " 'the moon and the sun will go',\n", - " 'and the young man',\n", - " 'with his reputation behind him',\n", - " 'i will go wherever he came from -',\n", - " 'the young man with his reputation behind him',\n", - " 'hi-ri, hi-ra',\n", - " 'hi',\n", - " 'hoireann is o-ho',\n", - " 'hi, ro ho, oh ho ro',\n", - " 'hoireann is o-ho',\n", - " 'him-o, ro ho, oh ho ro',\n", - " 'hi-ri, hi-ra',\n", - " 'hi-ri, hi-ra',\n", - " 'saol na saol',\n", - " 'tús go deireadh',\n", - " 'tá muid beo',\n", - " 'go deo',\n", - " 'saol na saol',\n", - " 'tús go deireadh',\n", - " 'tá muid beo',\n", - " 'go deo',\n", - " 'hoireann is o-ho',\n", - " 'hi, ro ho, oh ho ro',\n", - " 'hoireann is o-ho',\n", - " 'him-o, ro ho, oh ho ro',\n", - " 'hi-ri, hi-ra',\n", - " 'hi-ri, hi-ra',\n", - " 'hoireann is o-ho',\n", - " 'hi-ri, him ho-ro ho',\n", - " 'thuirt an gobha fuirighidh mi (the blacksmith said, \"i\\'ll wait\")',\n", - " '\\'s thuirt an gobha falbhaidh mi (the blacksmith said, \"i\\'ll go\"(',\n", - " \"'s thuirt an gobha leis an othail (the blacksmith said, in his confusion)\",\n", - " \"a bh' air an dòrus an t-sàbhail (standing at the door of the barn)\",\n", - " 'gu rachadh e a shuirghe (that he was going to go courting)',\n", - " 'sèist: chorus (after each verse):',\n", - " \"'si eilean nam bothan nam bothan (island of bothies, of bothies)\",\n", - " 'eilean nam bothan nam bothan (island of bothies, of bothies)',\n", - " 'eilean nam bothan nam bothan (island of bothies, of bothies)',\n", - " \"am bothan a bh' aig fionnghuala (fingal's bothies)\",\n", - " \"'si eilean nam bothan nam bothan (island of bothies, of bothies)\",\n", - " 'eilean nam bothan nam bothan (island of bothies, of bothies)',\n", - " 'eilean nam bothan nam bothan (island of bothies, of bothies)',\n", - " \"am bothan a bh' aig fionnghuala (fingal's bothies)\",\n", - " \"bheirinn fead air fulmairean (i'd knock spots off the birds)\",\n", - " \"bheirinn fead air falmairean (i'd knock spots off the hakes)\",\n", - " 'liuthannan beaga na mara (little lythes of the sea)',\n", - " 'bheireamaid greis air an tarrainn (we would take a while hauling them in)',\n", - " 'na maireadh na duirgh dhuinn (if our hand lines last)',\n", - " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", - " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", - " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", - " 'bheireamaid greis air an tarrainn (we would take a while hauling them in)',\n", - " 'na maireadh na duirgh dhuinn (if our hand lines last)',\n", - " \"bheirinn fead air fulmairean (i'd knock spots off the birds)\",\n", - " \"bheirinn fead air falmairean (i'd knock spots off the hakes)\",\n", - " 'liuthannan beaga na mara (little lythes of the sea)',\n", - " 'bheireamaid greis air an tarrainn (we would take a while hauling them in)',\n", - " 'na maireadh na duirgh dhuinn (if our hand lines last)',\n", - " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", - " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", - " \"cha d'thuirt an dadan a' seo (we got nothing here)\",\n", - " 'bheireamaid greis air an tarrainn (we would take a while hauling them in)',\n", - " 'na maireadh na duirgh dhuinn (if our hand lines last)',\n", - " 'thuirt an gobha fuirighidh mi (the blacksmith said, \"i\\'ll wait\")',\n", - " '\\'s thuirt an gobha falbhaidh mi (the blacksmith said, \"i\\'ll go\")',\n", - " \"'s thuirt an gobha leis an othail (the blacksmith said, in his confusion)\",\n", - " \"a bh' air an dòrus an t-sàbhail (standing at the door of the barn)\",\n", - " 'gu rachadh e a shuirghe (that he was going to go courting)',\n", - " '(irish verse)',\n", - " \"buachaill ón eirne mé's bhréagfainn féin cailín deas óg\",\n", - " \"né iarfainn bó spré léithe tá mé saibhir go leor 's liom\",\n", - " \"corcaigh a mhéid e, dhá thaobh a ghleanna's tír eoghain\",\n", - " \"'s mur n-athraí mé béasaí 's mé n' t-oibhr ar chontae mhaigh eo\",\n", - " 'come by the hills to the land where fancy is free',\n", - " 'and stand where the peaks meet the sky and the loughs meet the sea',\n", - " 'where the rivers run clear and the bracken is gold in the sun',\n", - " 'and the cares of tomorrow can wait till this day is done',\n", - " 'come by the hills to the land where life is a song',\n", - " 'and stand where the birds fill the air with their joy all day long',\n", - " 'where the trees sway in time and even the wind sings in tune',\n", - " 'and the cares of tomorrow can wait till this day is done',\n", - " 'come by the hills to the land where legend remains',\n", - " 'the stories of old fill our hearts and may yet come again',\n", - " 'where the past has been lost and the future is still to be won',\n", - " 'and the cares of tomorrow can wait till this day is done',\n", - " 'and the cares of tomorrow can wait till this day is done',\n", - " 'do you hear what i hear?',\n", - " 'do you hear what i hear?',\n", - " 'do you hear what i hear?',\n", - " 'said the little lamb to the shepherd boy',\n", - " '\"do you hear what i hear',\n", - " 'ringing through the sky, shepherd boy?',\n", - " 'do you hear what i hear?',\n", - " 'a song, a song high above the trees',\n", - " 'with a voice as big as the sea',\n", - " 'with a voice as big as the sea\"',\n", - " 'said the shepherd boy to the mighty king',\n", - " '\"do you know what i know',\n", - " 'in your palace warm, mighty king?',\n", - " 'do you know what i know?',\n", - " 'a child, a child shivers in the cold',\n", - " 'let us bring him silver and gold',\n", - " 'let us bring him silver and gold\"',\n", - " 'do you hear what i hear?',\n", - " 'don oíche úd i mbeithil',\n", - " 'beidh tagairt faoi ghrian go brách',\n", - " 'don oíche úd i mbeithil',\n", - " 'go dtáinig an briathar slán',\n", - " 'tá gríosghrua ar spéartha',\n", - " \"'s an talamh 'na chlúdach bán\",\n", - " 'féach íosagán sa chléibhín',\n", - " \"'s an mhaighdean in aoibhneas grá\",\n", - " 'said the king to the people everywhere',\n", - " '\"listen to what i say',\n", - " 'pray for peace, people everywhere',\n", - " 'listen to what i say',\n", - " 'the child, the child sleeping in the night',\n", - " 'he will bring us goodness and light',\n", - " 'he will bring us goodness and light\"',\n", - " 'listen to what i say',\n", - " 'do you know what i know?',\n", - " 'do you hear what i hear?',\n", - " 'do you hear what i hear?',\n", - " \"chuamar'na síos go inneall an chré / we went down to the engine of the earth\",\n", - " \"chuamar'na síos go imeall an bhrí / we went down to the edge of meaning\",\n", - " \"chuamar'na síos go preamhacha an tsaoil / we went down to the roots of experience\",\n", - " \"d'oscail mo shúil / my eyes were opened\",\n", - " \"d'árdaigh mo chroi / my heart was lifted\",\n", - " \"d'athuraigh an bhrí / all sense was twisted\",\n", - " 'is dfháuraigh mé go buan / and i was left forever wounded',\n", - " 'cuimhnín ar mo mháthair / i think of my mother',\n", - " \"cuimhnín ar m'athair / i think of my father\",\n", - " 'cuimhnín ar na déithe / i think of the gods',\n", - " 'cuimhnín ar mo mháthair / i think of my mother',\n", - " \"cuimhnín ar m'athair / i think of my father\",\n", - " 'cuimhnín ar mo chéile / i think of my woman',\n", - " 'a derdriu menidera már',\n", - " 'diamsa ceomainech cloth bán',\n", - " 'cesfaitit ulaid rit ré',\n", - " 'a ingen fial feidlimthe!',\n", - " 'dogena gnim n-grannin-garg',\n", - " 'ar feirg ri rig n-ulad n-ard',\n", - " 'biaid do lectan innach dú',\n", - " 'bid scel n-airdaire a dderdriu',\n", - " 'biaid etach cid iartain',\n", - " 'dot draig a be forlassair',\n", - " 'is it amsir cluinti se',\n", - " 'longes tri mac n-ard n-uisle',\n", - " 'dogena gnim n-grannin-garg',\n", - " 'ar feirg ri rig n-ulad n-ard',\n", - " 'biaid do lectan innach dú',\n", - " 'bid scel n-airdaire a dderdriu',\n", - " 'hups, a sheáin, a bhráthair',\n", - " 'fuair do mháthair bás',\n", - " 'ó, ní bhfuair, ní bhfuair',\n", - " 'chuaigh sí suas an tsráid',\n", - " 'hups, a sheáin, a bhráthair',\n", - " 'fuair do mháthair bás',\n", - " 'ó, ní bhfuair in aon chor',\n", - " 'chuaigh sí suas an tsráid',\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'portín sheáin an tsíoda',\n", - " 'is iníon philib an cheoil',\n", - " \"he didn't dance 'n' dance\",\n", - " \"he didn't dance today\",\n", - " \"he didn't dance 'n' dance\",\n", - " 'no, nor yesterday',\n", - " \"he didn't dance 'n' dance\",\n", - " \"he didn't dance today\",\n", - " \"he didn't dance 'n' dance\",\n", - " 'walked all after the',\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'portín sheáin an tsíoda',\n", - " 'is iníon philib an cheoil',\n", - " 'throw him up, up',\n", - " 'throw him up high',\n", - " 'throw him up, up',\n", - " \"he'll come down by and by\",\n", - " 'throw him up, up',\n", - " 'throw him up high',\n", - " 'throw him up, up',\n", - " \"he'll come down by and by\",\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'portín sheáin an tsíoda',\n", - " 'is iníon philib an cheoil',\n", - " 'piper sell your pipes',\n", - " 'buy your wife a gown',\n", - " 'piper sell your pipes',\n", - " 'buy your wife a gown',\n", - " 'piper sell your pipes',\n", - " 'buy your wife a gown',\n", - " \"i wouldn't never sell me pipes\",\n", - " 'for all the wives in town',\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'cuc-a-neandí-neandí',\n", - " 'cuc-a-neandí-ó',\n", - " 'portín sheáin an tsíoda',\n", - " 'is iníon philib an cheoil',\n", - " 'hm, die-yeh ro',\n", - " 'hm, die-yeh',\n", - " 'hm, die-yeh ro',\n", - " 'hm, die-yeh',\n", - " 'hm-o-ro-ho',\n", - " 'hm, die-yeh ro',\n", - " 'hm, die-yeh',\n", - " 'hm, die-yeh ro',\n", - " 'hm, die-yeh',\n", - " 'hm, die-yeh ro',\n", - " 'hm, die-yeh',\n", - " 'hoireann is o-ro',\n", - " 'tá muid beo',\n", - " 'him ho-ro-ho',\n", - " 'go deo na ndeor',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'him ho-ro-ho',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'him ho-ro-ho',\n", - " 'hi-ri-hu, ho-ro-hu',\n", - " 'him ho-ro-ho',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'him ho-ro-ho',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'hoireann is o-ro',\n", - " 'tá muid beo',\n", - " 'him ho-ro-ho',\n", - " 'go deo na ndeor',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'him ho-ro-ho',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'him ho-ro-ho',\n", - " 'hi-ri-hu, ho-ro-hu',\n", - " 'him ho-ro-ho',\n", - " 'hm, die-yeh ro',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'hm, die-yeh',\n", - " 'him ho-ro-ho',\n", - " 'hm, die-yeh ro',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'hm, die-yeh',\n", - " 'him ho-ro-ho',\n", - " 'hm, die-yeh ro',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'hm, die-yeh',\n", - " 'him ho-ro-ho',\n", - " 'hm, die-yeh ro',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'hm, die-yeh',\n", - " 'him ho-ro-ho',\n", - " 'hm, die-yeh ro',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'hm, die-yeh',\n", - " 'him ho-ro-ho',\n", - " 'hm, die-yeh ro',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'hm, die-yeh',\n", - " 'hm ho-ro-ho',\n", - " 'hm, die-yeh ro',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'hm, die-yeh',\n", - " 'him ho-ro-ho',\n", - " 'hm, die-yeh ro',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'hm, die-yeh',\n", - " 'him ho-ro-ho',\n", - " 'hm, die-yeh ro',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'hm, die-yeh',\n", - " 'him ho-ro-ho',\n", - " 'hm, die-yeh ro',\n", - " 'hi-ri-hu, ho-ro-hu, ho-ri-hu',\n", - " 'hm, die-yeh',\n", - " 'him ho-ro-ho',\n", - " 'éirigh suas a stóirin mura bfhuil tu do shui',\n", - " 'foscail a\\x92 doras agus lig mise \\x91un ti',\n", - " 'ta buidéal im aice bhéarfas deoch',\n", - " 'do mhnaoi an ti',\n", - " 'a\\x92s ta suil \\x91gam nach ndiultuigheann',\n", - " 'tu mé fa do nion',\n", - " 'nuair a éirighim amach ar maidin',\n", - " 'agus dearcaim uaim siar',\n", - " 'is dearcaim ar a\\x92bhaile ud a bhfuil',\n", - " 'agam le ghabhail ann',\n", - " 'tuiteann na deóra na sróite liom sios',\n", - " 'agus gniomh se mile osna a',\n", - " 'ta cosuil le cumhaidh',\n", - " 'i ngleanntain na coilleadh uaigni',\n", - " 'is lag brónach a bim',\n", - " 'ó dhomnach go domhnach \\x91s',\n", - " 'mé ag cathamh mo shaol',\n", - " '\\x91mé feitheamh gach trathnóna ce',\n", - " 'shiuluil \\x91n ród no cé thiocfadh \\x91n ti',\n", - " '\\x91s gan duine ar an domhan mhór a thiocfadh',\n", - " '\\x91s thógfadh mo chroi',\n", - " 'a mhaili a chéadsearc na',\n", - " 'tréig thusa mé go brach',\n", - " 'nach bhfuil mé do dhiaidh gachaon la',\n", - " 'fa mhalaidh na n-ard',\n", - " 'is tu cruithneach ar mhna éireann',\n", - " 'is tu an péarla \\x91ta doiligh \\x91fhail',\n", - " 'is dar mhoinna mo bhéil ni bréag é',\n", - " 'go bhfuil mé leatsa i ngra',\n", - " 'idir ann is idir as',\n", - " 'idir thuaidh is idir theas',\n", - " 'idir thiar is idir thoir',\n", - " 'idir am is idir áit',\n", - " 'as an sliogán',\n", - " 'amhrán na farraige',\n", - " 'suaimhneach ná ciúin',\n", - " 'ag cuardú go damanta',\n", - " 'mo ghrá',\n", - " 'tá mé idir ghrá',\n", - " 'between the winds, between the waves',\n", - " 'between the sands, between the shore',\n", - " 'from the shell',\n", - " 'a song of the sea',\n", - " 'neither quiet nor calm',\n", - " 'searching for love again',\n", - " 'mo ghrá',\n", - " 'tá mé idir ghrá',\n", - " \"who is that there, that's rapping the door to me? (x3)\",\n", - " '“only meself,” says cúnla',\n", - " \"who is that there, that's tapping the windowpane? (x3)\",\n", - " '“only meself,” says cúnla',\n", - " 'chorus',\n", - " 'cúnla, cúnla, cúnla, don’t come any near’r to me! (x3)',\n", - " '“maybe i shouldn’t,” says cúnla',\n", - " 'cé hé siúd thíos atá ag leagadh na gclathacha? (x3)',\n", - " '\"mise mé féin,\" a deir cúnla',\n", - " 'chúnla chaoin ná tara níos giorra dhom (x3)',\n", - " '\"maise mur\\' dtaga,\" a deir cúnla',\n", - " 'chorus',\n", - " \"who is that there, that's climbing the stairs to me? (x3)\",\n", - " '“only meself,” says cúnla',\n", - " \"who is that there, that's tickling the toes of me? (x3)\",\n", - " '“only meself,” says cúnla',\n", - " 'chorus',\n", - " 'who’s that there? rapping the door to me?',\n", - " 'who’s that there?',\n", - " 'who’s that there? tapping the windowpane?',\n", - " 'who’s that there?',\n", - " 'don’t come any near’r to me!',\n", - " 'don’t come any near’r to me!',\n", - " 'cé hé siúd thíos atá ag tochas mo bhonnacha? (x3)',\n", - " '\"mise mé féin,\" a deir cúnla',\n", - " 'cé hé siúd thíos ag tarraingt na pluide dhíom? (x3)',\n", - " '\"mise mé féin,\" a deir cúnla',\n", - " '\"mise mé féin,\" a deir cúnla',\n", - " 'chorus',\n", - " '“maybe i shouldn’t,” says cúnla',\n", - " '“i shouldn’t,” says cúnla',\n", - " '“maybe i shouldn’t,” says cúnla',\n", - " 'why spend your leisure bereft of pleasure?',\n", - " 'amassing treasure, why scrape and save?',\n", - " 'why look so canny at every penny?',\n", - " \"you'll take no money within the grave\",\n", - " 'landlords and gentry with all their plenty',\n", - " \"must still go empty where e'er they're bound\",\n", - " \"so to my thinking we'd best be drinking\",\n", - " 'our glasses clinking and round and round',\n", - " 'is iomaí slí sin do bhíos ag daoine',\n", - " 'ag cruinniú píosaí is ag déanamh stóir',\n", - " \"'s a laghad a smaoiníos ar ghiorra a’ tsaoil seo\",\n", - " 'go mbeidh siad sínte faoi an leac go fóill',\n", - " 'más tiarna tíre, diúc no rí thú',\n", - " 'ní cuirfear pingin leat ‘s tú ‘dul faoin bhfód',\n", - " 'mar sin is dá bhrí sin, níl beart níos críonna',\n", - " 'ná bheith go síoraí ag cur preab san ól',\n", - " \"king solomon's glory, so famed in story\",\n", - " \"was far outshone by the lily's guise\",\n", - " 'but hard winds harden both field and garden',\n", - " 'pleading for pardon, the lily dies',\n", - " \"life's but a bauble of toil and trouble\",\n", - " \"the feathered arrow, once shot ne'er found\",\n", - " 'so lads and lasses, because life passes',\n", - " 'come fill your glasses for another round',\n", - " 'is gearr an saol ‘tá ag an lílí sciamhach',\n", - " 'cé gur buí agus gur geal a ghabháil',\n", - " 'is solamh críonna ina chulaith riúil',\n", - " 'nach bhfuil baol air in áille dhó',\n", - " 'níl sa tsaol seo ach mar soinneán gaoithe',\n", - " 'ga a scaoiltear nó slám de cheo',\n", - " 'mar sin ‘s dá bhrí sin, níl beart níos críonna',\n", - " 'ná bheith go síoraí ag cur preab san ól',\n", - " 'the huckster greedy, he blinds the needy',\n", - " 'their strifes unheeding, shouts \"money down!\"',\n", - " 'his special vices, his fancy prices',\n", - " \"for a florin's value he'll charge a crown\",\n", - " \"with hump for trammel, the scripture's camel\",\n", - " \"missed the needle's eye and so came to ground\",\n", - " \"why pine for riches, while still you've stitches\",\n", - " 'to hold your britches up? another round!',\n", - " 'buain nam bairnich, nam bairnich, nam bairnich',\n", - " 'buain nam bairnich air creagan rubh nan cudaigean',\n", - " 'buain nam bairnich, nam bairnich, nam bairnich',\n", - " \"'s goilidh sinn na bairnich 'san taigh air rubh nan cudaigean\",\n", - " 'goilidh sinn na bairnich, na bairnich, na bairnich',\n", - " \"goilidh sinn na bairnich 'san taigh air rubh nan cudaigean\",\n", - " 'goilidh sinn na bairnich, na bairnich, na bairnich',\n", - " \"'s cagnaidh sinn na bairnich air cladach rubh nan cudaigean\",\n", - " 'cagnaidh sinn na bairnich, na bairnich, na bairnich',\n", - " 'cagnaidh sinn na bairnich air cladach rubh nan cudaigean',\n", - " 'cagnaidh sinn na bairnich, na bairnich, na bairnich',\n", - " \"'s sgaoiligh sinn na bairnich air muir rubh nan cudaigean\",\n", - " 'sgaoiligh sinn na bairnich, na bairnich, na bairnich',\n", - " 'sgaoiligh sinn na bairnich air muir rubh nan cudaigean',\n", - " 'sgaoiligh sinn na bairnich, na bairnich, na bairnich',\n", - " \"'suidhidh sinn le tabh ann air creagan rubh nan cudaigean\",\n", - " 'be hileam bo horam bo eirich is ithibh ith',\n", - " 'be hileam bo horam bo feitheamh air na cudaigean',\n", - " 'be hileam bo horam bo eirich is ithibh ith',\n", - " 'nach ith sibh na bairnich is ithidh mi na cudaigean',\n", - " '/',\n", - " '--ooo--',\n", - " 'rubh nan cudaigean (headland of the cuddy fish)',\n", - " 'harvest of the limpets , of the limpets, of the limpets',\n", - " 'harvest of the limpets on the rocks of the headland....',\n", - " 'harvest of the limpets, of the limpets, of the limpets',\n", - " 'and we will boil the limpets in the house on the headland of the cuddy fish',\n", - " 'we will boil the limpets, the limpets, the limpets',\n", - " 'we will boil the limpets in the house on the headland',\n", - " 'we will boil the limpets, the limpets, the limpets',\n", - " 'and we will chew the limpets on the shore of the headland…',\n", - " 'we will chew the limpets, the limpets, the limpets',\n", - " 'we will chew the limpets on the shore of the headland…',\n", - " 'we will chew the limpets, the limpets, the limpets',\n", - " 'and we will scatter the limpets on the sea at the headland…',\n", - " 'we will scatter the limpets, the limpets, the limpets',\n", - " 'we will scatter the limpets on the sea at the headland…',\n", - " 'we will scatter the limpets, the limpets, the limpets',\n", - " 'and we will sit with nets on the rocks of the headland…',\n", - " 'be hileam bo horam bo, rise and eat, eat',\n", - " 'be hileam bo horam bo, waiting on the cuddy fish',\n", - " 'be hileam bo horam bo, rise and eat ,eat',\n", - " 'won’t you eat the limpets, and i will eat the cuddy fish',\n", - " 'tuirse mo chroí ar a phósadh',\n", - " \"'s ar bhuachaillí óige an tsaiol\",\n", - " 'nár bhfearr daoife cailín deas leofa',\n", - " 'na bean a mbeadh puntaí léi',\n", - " 'oíche mhór fhada bheith dúcaí',\n", - " 'nár dheas a bheith ag súgradh léi',\n", - " \"b'faras a chaillteach bhíos srannfaí\",\n", - " 'is ag tarraingt an phlaincéad léi',\n", - " 'nuair a théim go tí faire ná tórraimh',\n", - " \"'sé d'fiafras an óig bhean díom\",\n", - " \"'chormaic a bhfuil tú do phósadh\",\n", - " \"nó nach n'aithníonn tú an óig fhear groí\",\n", - " \"'sé duirt se 'gus deirim féin leofa\",\n", - " 'go minic go mór faraor',\n", - " \"'s an mhéid acu 'tá gan pósadh\",\n", - " \"gur acu 'tá spóirt a' tsaiol\",\n", - " \"ó rachaidh mé scilleadh 's a chaitheadh\",\n", - " 'go baile na hiarr fhad siar',\n", - " \"'s bhéarfaidh mé 'n ruaig sin go hárainn\",\n", - " \"'s ar and ainnir chráidh mo chroí\",\n", - " 'dár a leoga mar rinneadh mo phósadh',\n", - " 'ní mó ná gur cealgadh mo chroí',\n", - " \"'s rachaidh mé arís na róimhe\",\n", - " 'go bhfaigh mé cead pósta arís',\n", - " \"i'm tired to my heart of marriage\",\n", - " 'and of the young men of this world',\n", - " \"they'd be better off with a nice girl\",\n", - " 'than a woman who had money',\n", - " 'to stay awake the whole long night',\n", - " \"wouldn't it be fine to be sporting with her\",\n", - " 'instead of the old woman who snores',\n", - " 'and pulls the blanket to her',\n", - " 'when i go to a wake-house or funeral',\n", - " 'all the young women ask me',\n", - " 'cormac, are you getting married',\n", - " 'or do you see that youth is wearing away?',\n", - " 'i said to them and i still say',\n", - " 'that i do indeed see it, alas',\n", - " \"and those who aren't married\",\n", - " 'have all the fun in life',\n", - " 'i will go complaining and chattering',\n", - " 'to far in the west',\n", - " \"i'll take a trip to aron\",\n", - " 'to the young woman who has tormented my heart',\n", - " 'by the book, if my marriage has been made',\n", - " \"it's not that my heart has been bound\",\n", - " \"and i'll go off to rome\",\n", - " 'to get permission to marry again',\n", - " 'ës e ceap breatuinn tir mo, ghráidh',\n", - " 'tïr nan craobh ë s nan beanntan árd',\n", - " 'ës e ceap breatuinn tir mo, ghráidh',\n", - " 'tïr ëas áillidh leinn air thalamh',\n", - " '(it is cape breton the land of my love',\n", - " 'the land of the trees and high mountains',\n", - " 'it is cape breton the land of my love',\n", - " 'the most beautiful land on earth to us.)',\n", - " '(from the chorus of a song composed by',\n", - " 'dan alex macdonald, framboise, cape breton)',\n", - " 'reel:',\n", - " 'a null thar nan eileanan , gu dhíameireaga gun teid sinn',\n", - " 'a null thar nan eileanan , gu dhíameireaga gun teid sinn',\n", - " 'a null thar nan eileanan , gu dhíameireaga gun teid sinn',\n", - " 'a null rathad shasuinn agus dhachaidh rathad eirinn',\n", - " '(over across the islands, to america we will go',\n", - " 'over across the islands, to america we will go',\n", - " 'over across the islands, to america we will go',\n", - " 'over by way of england and home by way of ireland)',\n", - " 'imtheochaidh soir is siar',\n", - " 'a dtainig ariamh',\n", - " 'an ghealach is an ghrian',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " \"imtheochaidh an ghealach's an ghrian\",\n", - " \"an daoine og is a chail 'na dhiadh\",\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " 'imtheochaidh a dtainig ariamh',\n", - " 'an duine og is aa chail ne dhiadh',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " 'idir dhá láimh',\n", - " 'daoine fíuntach',\n", - " 'scríobh an ogham',\n", - " 'i mbanba óir',\n", - " 'i nglas héinne',\n", - " 'fial ó nádúir',\n", - " 'fonn ceoil',\n", - " 'i mbanba óir',\n", - " 'lios na aileach',\n", - " 'draicht draiotheach',\n", - " 'tuamai rithe',\n", - " 'i mbanba oir',\n", - " 'clochán naofa',\n", - " 'cill is caisléain',\n", - " 'truit na gceilteach',\n", - " 'i mbanba óir',\n", - " 'translation',\n", - " 'both two hands',\n", - " 'of noble people',\n", - " 'write the ogham',\n", - " 'in golden ireland',\n", - " 'in young company',\n", - " 'noble of nature',\n", - " 'desire of music',\n", - " 'in golden ireland',\n", - " 'ring forts of rock',\n", - " 'the magic of the druids',\n", - " 'tombs of kings',\n", - " 'in golden ireland',\n", - " 'holy clochan*',\n", - " 'churchyards and castles',\n", - " 'sound of the celtic (or secret?) language**',\n", - " 'in golden ireland',\n", - " 'imtheochaidh soir is siar',\n", - " 'a dtainig ariamh',\n", - " 'an ghealach is an ghrian',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " \"imtheochaidh an ghealach's an ghrian\",\n", - " \"an daoine og is a chail 'na dhiadh\",\n", - " 'fol lol the doh fol the day',\n", - " 'fol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the doh fol the day',\n", - " 'imtheochaidh a dtainig ariamh',\n", - " 'an duine og is aa chail ne dhiadh',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the doh fol the day',\n", - " 'chorus:',\n", - " \"'sí do mhaimeo í, 'sí do mhaimeo í\",\n", - " \"'sí do mhaimeo í, cailleach an airgid\",\n", - " \"'sí do mhaimeo í, ó bhaile inis mhóir í\",\n", - " \"'s chuirfeadh sí cóistí ar bhóithre cois fharraige\",\n", - " 'dá bhfeicfeá\\' an \"steam\" \\'ghabhail siar tóin uí loin\\'',\n", - " \"'s na rothaí 'ghabhail timpeall siar ó na ceathrúnaí\",\n", - " \"chaithfeadh sí 'n stiúir naoi n-vair' ar a cúl\",\n", - " \"'s ní choinneodh sí siúl le cailleach an airgid\",\n", - " '(chorus)',\n", - " \"'measann tú, 'bpósfa', 'measann tú 'bpósfa'\",\n", - " \"'measann tú, 'bpósfa', cailleach an airgid?\",\n", - " \"tá's a'm nach 'bpósfa', tá's a'm nach 'bpósfa'\",\n", - " \"mar tá sé ró-óg 'gus d'ólfadh sé'n t-airgead\",\n", - " '(chorus twice)',\n", - " \"'s gairid go 'bpósfaidh, 's gairid go 'bpósfaidh\",\n", - " \"'s gairid go 'bpósfaidh, beirt ar an mbaile seo\",\n", - " \"'s gairid go 'bpósfaidh, 's gairid go 'bpósfaidh\",\n", - " 'séan shéamais mhóir agus máire ní chathasaigh',\n", - " '(chorus three times)',\n", - " 'translation',\n", - " 'chorus:',\n", - " 'she is your granny, she is your granny',\n", - " \"she's your granny, the hag with the money\",\n", - " 'she is your granny, from the town of nishmore',\n", - " 'and she would put coaches on the roads of cois farraige',\n", - " \"if you'd see the steam going past toin ui loin'\",\n", - " 'and the wheels turning speedily out from her flanks',\n", - " \"she'd scatter the stoor nine times to the rear\",\n", - " \"but she'd never keep pace with the hag with the money\",\n", - " '(chorus)',\n", - " \"do you reckon he'd marry, do you reckon he'd marry\",\n", - " \"do you reckon he'd marry the hag with the money?\",\n", - " \"i know he'll not marry, i know he'll not marry\",\n", - " \"'cause he is too young and he'll squander the money\",\n", - " '(chorus twice)',\n", - " \"we'll soon have a wedding, we'll soon have a wedding\",\n", - " \"we'll soon have a wedding, by two in the village\",\n", - " \"we'll soon have a wedding, we'll soon have a wedding\",\n", - " 'between sean seamais mhoir and maire ni chathasaigh',\n", - " '(chorus three times)',\n", - " 'imtheochaidh soir is siar',\n", - " 'a dtainig ariamh',\n", - " 'an ghealach is an ghrian',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the doh fol the day',\n", - " \"imtheochaidh an ghealach's an ghrian\",\n", - " \"an daoine og is a chail 'na dhiadh\",\n", - " 'fol lol the doh fol the day',\n", - " 'fol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the doh fol the day',\n", - " 'imtheochaidh a dtainig ariamh',\n", - " 'an duine og is a chail ne dhiadh',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the doh fol the day',\n", - " 'thíos cois na trá domh, in ndoimhneacht na h-oíche',\n", - " \"an saol mhor ina gcodhladh, 's mise liom féin\",\n", - " 'na h-éanacha mara ag scairtigh go léanmhar',\n", - " 'cosúil le h-anamnacha bochta i bpéin',\n", - " \"iomlán gealaí 's iomlán rabharta\",\n", - " \"aoibhneas 's ciúineas, 's áilleacht sa domhain\",\n", - " 'crónán na fairrige ag dul siar ar mo chluasa',\n", - " 'bog-cheol an uisce ag sileadh san abhainn',\n", - " 'istigh ar na h-inseáin tá sean-reilig bheannaithe',\n", - " 'an áit inar mhaireadh naoimh san aimsir fadó',\n", - " 'tá daoine istigh ann ag chaith seal go h-aerach',\n", - " 'ní shiúlfaidh siad thar fán chladaigh níos mó',\n", - " \"bhuail uaigneas m'intínn 's mé ag amharc ar an reilig\",\n", - " \"'s mé ag meadhradh ar dhaoine istigh ann ina luí\",\n", - " \"fir a's mná óga, seandaoine 's páistí\",\n", - " \"muintir mo mhuintir 's cairde mo chroí\",\n", - " \"tá na coiligh ag glaoch 's na réalta ag bánú\",\n", - " \"tá an ghealach ina luí 's ní fada go lá\",\n", - " 'slán agat anois a shean-reilig bheannaithe',\n", - " \"'s na daoine a shiúlfadh liom síos cois na trá\",\n", - " 'english translation from jason carns',\n", - " 'down by the beach, in the deep of night',\n", - " 'the big world is sleeping and i am alone',\n", - " 'the sea-birds are calling sorrowfully',\n", - " 'like poor souls in pain',\n", - " 'total purity and total abundance',\n", - " 'bliss and calmness and beauty in the world',\n", - " 'the murmur of the sea going into my ears',\n", - " 'the soft song of the water flowing in the river',\n", - " 'above on the headland* there is a blessed old cemetery',\n", - " 'the place in which saints lived in times long ago',\n", - " 'there are people within spending a while carefree',\n", - " 'the will not walk round on the shore any more',\n", - " 'loneliness strikes my spirits as i look at the cemetery',\n", - " \"and i'm thinking about the people in there sleeping\",\n", - " 'men and young women, old people and children',\n", - " 'people of my people and friends of my heart',\n", - " 'the cocks are crowing and the stars are fading',\n", - " \"the moon is setting and it's not long until day\",\n", - " 'goodbye now blessed old cemetery',\n", - " 'and to the people who walked with me down by the beach',\n", - " '(above...)* a rough translation. couldn\\'t find the word \"inseáin\", but think',\n", - " 'it means something like this',\n", - " 'by: traditional',\n", - " 'from: \"clannad\"',\n", - " \"tá mo chleamhnas 'a dhéanamh inniu agus inné\",\n", - " \"'s ní mó ná go dtaitníonn an bhean udaí liom féin\",\n", - " \"ach fuígfidh mé mo dhiaidh í, 's rachaidh mé leat féin\",\n", - " 'síos fána coille craobhaigh',\n", - " 'a match was a-making here last night',\n", - " \"and it isn't with the girl that i love the best\",\n", - " \"i'll leave her behind and i'll go along with you\",\n", - " 'down by the banks of the ocean',\n", - " \"'mo codladh go h-eadarshuth b'aite liom féin\",\n", - " 'leabaí luachair a bheith faoi mo thaobh',\n", - " 'buideal brandaí a bheith faoi mo cheann',\n", - " \"'s mo chailín deas óg 'bheith ar lámh' liom\",\n", - " 'sleeping to milking time is my delight',\n", - " 'a bed of green rushes underneath my side',\n", - " 'a bottle of brandy underneath my head',\n", - " 'and a charming young maid in my arms',\n", - " 'shiúil mise thoir agus shiúil mise thiar',\n", - " \"shiúil mise corcaigh 'gus sráideanna bhaile' cliath\",\n", - " 'macasamhail mo chailín ní fhaca mise riamh',\n", - " \"'sí 'n bhean í a d'fhág mo chroí cráite\",\n", - " 'oh i walked east and i walked west',\n", - " \"i walked cork and dublin's streets\",\n", - " \"an equal to my love i didn't meet\",\n", - " \"she's the wee lass that's left my heart broken\",\n", - " 'guinea pig',\n", - " 'pig, pig, pig, pig',\n", - " 'guinea pig',\n", - " 'pig, pig, pig, pig',\n", - " 'guinea pig',\n", - " 'pig, pig, pig, pig',\n", - " \"i don't wanna be your guinea pig, pig, pig\",\n", - " 'guinea pig',\n", - " 'pig, pig, pig, pig',\n", - " 'guinea pig',\n", - " 'pig, pig, pig, pig',\n", - " 'guinea pig',\n", - " 'pig, pig, pig, pig',\n", - " \"i don't wanna be your guinea pig, pig, pig\",\n", - " 'beady eyes, fuzzy hair',\n", - " 'beady eyes, fuzzy hair',\n", - " 'beady eyes, fuzzy hair',\n", - " 'beady eyes, fuzzy hair',\n", - " 'guinea pig (guinea pig)',\n", - " 'pig, pig, pig, pig',\n", - " 'guinea pig (guinea pig)',\n", - " 'pig, pig, pig, pig',\n", - " 'guinea pig (guinea pig)',\n", - " 'pig, pig, pig, pig',\n", - " \"i don't wanna be your guinea pig, pig, pig\"]},\n", - " 'data': ['imtheochaidh soir is siar',\n", - " 'a dtainig ariamh',\n", - " 'an ghealach is an ghrian',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " \"imtheochaidh an ghealach's an ghrian\",\n", - " \"an daoine og is a chail 'na dhiadh\",\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " 'imtheochaidh a dtainig ariamh',\n", - " 'an duine og is a chail ne dhiadh',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " 'ged bhiodh ann cur is cathadh',\n", - " 'is sìde nan seachd sian',\n", - " 'gheibheadh griogair dhomsa cnacan',\n", - " \"'san caidlimid fo dhìon\",\n", - " 'sèist:',\n", - " 'ochain ochain ochain uiridh',\n", - " 'ochain uiridh ó',\n", - " 'ochain ochain ochain uiridh',\n", - " \"'s mór mo mhulad 's mór\",\n", - " \"is mór a b'annsa bhith aig griogair\",\n", - " 'fo bhrata ruibeach ròin',\n", - " 'na bhith aig baran crìon na dalach',\n", - " 'ag giùlan sìoda is sròil',\n", - " '(sèist)',\n", - " 'chuir iad a cheann air ploc daraich',\n", - " 'is dhòirt iad fhuil ma làr',\n", - " 'nam biodh agamsa an sin cupan',\n", - " \"dh'òlainn dith mo shàth\",\n", - " '(sèist)',\n", - " 'ged tha mnathan chàich aig baile',\n", - " \"'nan laighe is 'nan cadal sàmh\",\n", - " 'is ann bhios mise bruaich mo leapa',\n", - " \"a' bualadh mo dhà làimh\",\n", - " '(sèist)',\n", - " 'ba hu, ba hu, ba mo leanabh',\n", - " 'ba mo leanabh, ba',\n", - " 'ba hu, ba hu, ba mo leanabh',\n", - " 'chan eil thu ach tlàth',\n", - " 'chan eil thu ach tlàth',\n", - " 'english translation:',\n", - " 'even in the drifting snow',\n", - " 'with all seven elements abounding',\n", - " 'gregor would find a crevice for me',\n", - " 'and we would sleep in its shelter',\n", - " 'chorus:',\n", - " 'ochain ochain ochain uiridh',\n", - " 'ochain uiridh ó',\n", - " 'ochain ochain ochain uiridh',\n", - " 'oh great is my lamentation',\n", - " 'i would rather be with gregor',\n", - " 'under a hairy sealskin rug',\n", - " 'than with the withered baron of dal',\n", - " 'with silk and satin to wear',\n", - " '(chorus)',\n", - " 'they put his head on an oaken stump',\n", - " 'and spilled blood on the ground',\n", - " 'if i had had a wee cup there',\n", - " 'i would have drunk my fill',\n", - " '(chorus)',\n", - " 'although the rest of the women of the village',\n", - " 'are lying in their peaceful sleep',\n", - " 'i myself am beside my bed',\n", - " 'beating with my two hands',\n", - " '(chorus)',\n", - " 'lullabye, my little one',\n", - " 'lullabye, my little one',\n", - " 'lullabye, my little one',\n", - " 'you are just so delicate',\n", - " 'you are just so delicate',\n", - " 'source: celtic lyrics corner',\n", - " 'bha dà phiuthar ann ’s lad a’ coiseachd sios an t-sràid',\n", - " 'o an t-uisge is a’ ghaoth',\n", - " 'phut an tè bu shine an tè eile dhan an t-sruth',\n", - " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", - " 'there were two sisters came walking down the street',\n", - " 'oh the wind and rain',\n", - " 'older one pushed the younger one in',\n", - " 'crying oh the dreadful wind and rain',\n", - " 'oir thug seonaidh dhan tè b’ òige fàinne àlainn òir',\n", - " 'o an t-uisge is a’ ghaoth',\n", - " 'cha d’ fhuair an tè eile aon sian dhe chuid',\n", - " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", - " 'so she pushed her into the river to drown',\n", - " 'oh the wind and rain',\n", - " 'watched her as she floated down',\n", - " 'crying oh the dreadful wind and rain',\n", - " 'flodradh gus an d’ rànaig i linne mhòr a’ chasg',\n", - " 'o an t-uisge is a’ ghaoth',\n", - " 'athair, o ahtair, seall an eala air an t-snàmh',\n", - " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", - " 'then out of the woods came a fiddler fair',\n", - " 'oh the wind and rain',\n", - " 'he plucked thirty strands of her long yellow hair',\n", - " 'crying oh the dreadful wind and rain',\n", - " 'is rinn e bogha grinn dhen gaoisnean bàn',\n", - " 'oh the wind and rain',\n", - " 'then he made a fiddle bow of her long yellow hair',\n", - " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", - " 'agus rinn e cnagan-fidhle dhe a corragan caola',\n", - " 'oh the wind and rain',\n", - " 'and he made fiddle pegs of her long finger bones',\n", - " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", - " 'and he made a little fiddle of her own breast bone',\n", - " 'o an t-uisge is a’ ghaoth',\n", - " 'which sound would melt a heart of stone',\n", - " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", - " 'is an aona phort a thigeadh a-mach às an fhidheall',\n", - " 'o an t-uisge is a’ ghaoth',\n", - " 'only tune that the fiddle would play',\n", - " 'was oh the dreadful wind and rain',\n", - " 'sior chaoineadh, an t-uisge is gaoir na ghaoithe',\n", - " 'hallelujah, hallelu',\n", - " 'hallelujah, hallelu',\n", - " 'oíche chiúin, oíche mhic dé',\n", - " 'cách na suan go héiri an lae',\n", - " 'dís is dílse ag faire le spéis',\n", - " 'glór binn aingeal le clos insan aer',\n", - " 'críost ag teacht ar an saol',\n", - " 'críost ag teacht ar an saol',\n", - " 'hallelujah, hallelu',\n", - " 'hallelujah, hallelu',\n", - " 'hallelujah, hallelu',\n", - " 'hallelujah, hallelu',\n", - " 'silent night, holy night',\n", - " 'shepherds quake at the sight',\n", - " 'glories stream from heaven afar',\n", - " 'heavenly hosts singing alleluia',\n", - " 'christ the savior is born',\n", - " 'christ the savior is born',\n", - " 'hallelujah, hallelu',\n", - " 'hallelujah, hallelu',\n", - " 'hallelujah, hallelu',\n", - " 'silent night, holy night',\n", - " \"son of god, love's pure light\",\n", - " 'radiant beams from thy holy face',\n", - " 'with the dawn of redeeming grace',\n", - " 'jesus, lord at thy birth',\n", - " 'jesus, lord at thy birth',\n", - " 'jesus, lord at thy birth',\n", - " 'hallelujah, hallelu',\n", - " 'hallelujah, hallelu',\n", - " 'hallelujah, hallelu',\n", - " 'hallelujah, hallelujah',\n", - " 'oscail mo shúile',\n", - " 'nìos mò èist è sin',\n", - " 'ar an tsáile snámha',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'open my eyes saltwater rain',\n", - " 'oscail mo shúil in that way',\n", - " 'ãˆist tù in that way',\n", - " 'ãˆist tù in that way',\n", - " 'missing part in that way',\n", - " 'ãˆist tù oscail mo shùil',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'open my eyes, saltwater rain',\n", - " 'oscail mo shùil, no more inside',\n", - " 'saltwater rain, oscail mo shùil',\n", - " 'english translation, open my eyes',\n", - " 'bigger, listen to us',\n", - " 'swimming in saltwater',\n", - " 'open my eyes, saltwater rain',\n", - " 'open my eyes in that way',\n", - " 'you listen in that way',\n", - " 'you listen in that way',\n", - " 'missing part, in that way',\n", - " 'you listen open my eyes',\n", - " 'no more inside, saltwater rain',\n", - " 'open my eyes',\n", - " 'ar chonnlaigh ghlais an fhoghmhair',\n", - " 'a stóirín gur dhearc mé uaim',\n", - " 'ba deas do chos i mbróig',\n", - " \"'sba ró-dheas do leagan siubhail\",\n", - " 'do ghruaidh ar dhath na rósaí',\n", - " \"'sdo chúirníní bhí fighte dlúith\",\n", - " \"monuar gan sinn 'ár bpósadh\",\n", - " \"nó'r bórd luinge 'triall 'un siubhail\",\n", - " 'tá buachaillí na h-áite seo',\n", - " \"a' gartha 'gus ag éirghe teann\",\n", - " 'is lucht na gcochán árd',\n", - " \"a' deánamh fáruis do mo chailín donn\",\n", - " 'dá ngluaiseadh rí na spáinne',\n", - " \"thar sáile 's a shlóighte cruinn\",\n", - " 'bhrúighfinn féar is fásach',\n", - " \"'s bhéinn ar láimh le mo chailín donn\",\n", - " \"ceannacht buaibh ar aontaigh'\",\n", - " 'dá mbínn agus mo chailín donn',\n", - " 'gluais is tar a chéad-searc',\n", - " \"nó go dtéidh muid thar ghaoth-bearra 'nonn\",\n", - " 'go sgartar ó n-a chéile',\n", - " \"bárr na gcraobh 's an eala ón tuinn\",\n", - " 'ní sgarfar sin ó chéile',\n", - " \"'s níl ach baois díbh á chur 'n mur gcionn\",\n", - " 'english to the above:',\n", - " 'on the green stubble-fields of autumn',\n", - " 'i saw you, my sweetheart',\n", - " 'nice were your feet in shoes',\n", - " 'and wonderful your nimble gait',\n", - " 'your two cheeks the color of roses',\n", - " 'and your ringlets tightly plaited',\n", - " \"alas that we're not married\",\n", - " 'or on board ship sailing away',\n", - " 'the boys around here are',\n", - " 'laughing and getting bold',\n", - " 'and the people of the high straw?',\n", - " 'are making ?? of my brown girl',\n", - " 'if the king of spain would',\n", - " 'go abroad with his assembled men',\n", - " 'i would flatten grass and rank grass',\n", - " 'and i would be with my brown girl',\n", - " 'buying cows at the fair',\n", - " 'if i were ? and my brown girl',\n", - " 'go and come first love',\n", - " 'until we go over to gaoth-bearra',\n", - " 'until we separate from each other',\n", - " 'the tops of the branches and the swan from the waves ?',\n", - " \"that won't separate us\",\n", - " \"and it's only folly for you to put it ??\",\n", - " 'i wrote a letter',\n", - " 'to my sweetheart and a sharp complaint',\n", - " 'she sent it back to me',\n", - " 'that her heart was inside me',\n", - " 'like the sweetest swan?',\n", - " 'finer than silk or bird feathers',\n", - " 'heavy is my sigh',\n", - " 'when i think of being apart from her',\n", - " 'what i heard on sunday',\n", - " 'as conversation among the women',\n", - " 'that she was going to be married',\n", - " 'to a young man from the place',\n", - " 'sweetheart take my advice',\n", - " 'and this autumn stay as you are',\n", - " \"and don't tell anyone, my love\",\n", - " 'that you are my love',\n", - " 'imtheochaidh soir is siar',\n", - " 'a dtainig ariamh',\n", - " 'an ghealach is an ghrian',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " \"imtheochaidh an ghealach's an ghrian\",\n", - " \"an daoine og is a chail 'na dhiadh\",\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " 'imtheochaidh a dtainig ariamh',\n", - " 'an duine og is a chail ne dhiadh',\n", - " 'fol lol the doh fol the day',\n", - " 'fol the day fol the day',\n", - " 'translation',\n", - " 'i will go east and go west',\n", - " 'from whence came',\n", - " 'the moon and the sun',\n", - " 'the moon and the sun will go',\n", - " 'and the young man',\n", - " 'with his reputation behind him',\n", - " 'i will go wherever he came from -',\n", - " 'the young man with his reputation behind him',\n", - " 'oscail mo shúile',\n", - " 'nìos mò',\n", - " 'èist è sin',\n", - " 'ar an tsáile snámha',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'open my eyes',\n", - " 'saltwater rain',\n", - " 'oscail mo shúil',\n", - " 'in that way',\n", - " 'èist tù',\n", - " 'in that way',\n", - " 'èist tù',\n", - " 'in that way',\n", - " 'missing part',\n", - " 'in that way',\n", - " 'èist tù',\n", - " 'oscail mo shùil',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'fol lol the doh fol the day',\n", - " 'open my eyes',\n", - " 'saltwater rain',\n", - " 'oscail mo shùil',\n", - " 'no more inside',\n", - " 'saltwater rain',\n", - " 'oscail mo shùil',\n", - " 'english translation',\n", - " 'open my eyes',\n", - " 'bigger',\n", - " 'listen to us',\n", - " 'swimming in saltwater',\n", - " 'open my eyes',\n", - " 'saltwater rain',\n", - " 'open my eyes',\n", - " 'in that way',\n", - " 'you listen',\n", - " 'in that way',\n", - " 'you listen',\n", - " 'in that way',\n", - " 'missing part',\n", - " 'in that way',\n", - " 'you listen',\n", - " 'open my eyes',\n", - " 'no more inside',\n", - " 'saltwater rain',\n", - " 'open my eyes',\n", - " 'my love, more dear than this life you are to me',\n", - " 'your kiss more clear than the crystal of the sea',\n", - " \"please save me, i've fallen here\",\n", - " 'i’m lost and alone',\n", - " 'an angel weeps',\n", - " 'i hear him cry',\n", - " 'a lonely prayer',\n", - " 'a voice so high',\n", - " 'dry all your tears',\n", - " 'come what may',\n", - " 'and in the end, the sun will rise on one more day',\n", - " 'hey...',\n", - " 'céile mo chroí, do croíse, ar shlánaitheoir',\n", - " 'is císte mo chroí, do chroí sábhálaim comh thíar',\n", - " \"o 's follas gur líon do chroí\",\n", - " 'dom grása, a stór',\n", - " \"athair ré's a íosa aicí lag bás, is mé in pian\",\n", - " 'dry all your tears',\n", - " 'come what may',\n", - " 'and in the end, the sun will rise on one more day',\n", - " 'hey...',\n", - " 'the sun will rise on one more day',\n", - " 'fraoch a rònaigh, muran a bhàlaigh',\n", - " 'fraoch a rònaigh, muran a bhàlaigh',\n", - " 'crois iar nan cliar, crois iar sholais',\n", - " 'crois iar nan cliar, crois iar sholais',\n", - " 'crois iar nan cliar, crois iar sholais',\n", - " \"beinn dubh sholais, aird a' bhorrain\",\n", - " 's fhada bhuam grìminis, lìrinis, càrinis...',\n", - " 'fraoch a rònaigh, muran a bhàlaigh',\n", - " 'fraoch a rònaigh, muran a bhàlaigh',\n", - " 'crois iar nan cliar, crois iar sholais',\n", - " 'crois iar nan cliar, crois iar sholais',\n", - " 'crois iar nan cliar, crois iar sholais',\n", - " \"beinn dubh sholais, aird a' bhorrain\",\n", - " \"beinn dubh sholais, aird a' bhorrain\",\n", - " 'translation:',\n", - " 'heather from rona, sea-bent from vallay',\n", - " 'heather from rona, sea-bent from vallay',\n", - " 'western cross of the clergy, western cross of sollas',\n", - " 'western cross of the clergy, western cross of sollas',\n", - " 'western cross of the clergy, western cross of sollas',\n", - " 'black mountain of sollas, height of morran',\n", - " 'far from me are griminish, lirinish, cairnish...',\n", - " 'heather from rona, sea-bent from vallay',\n", - " 'heather from rona, sea-bent from vallay',\n", - " 'western cross of the clergy, western cross of sollas',\n", - " 'western cross of the clergy, western cross of sollas',\n", - " 'western cross of the clergy, western cross of sollas',\n", - " 'black mountain of sollas, height of morran',\n", - " 'black mountain of sollas, height of morran',\n", - " 'ná bí ag troid liom anois',\n", - " 'nó ní do namhaid mé;',\n", - " 'ná bí ag troid liom anois',\n", - " 'tuigfidh tú sa deireadh thiar thall nach do namhaid mé',\n", - " 'ó taobh tuathail amach',\n", - " 'níor mhaith liom troid arís',\n", - " 'ón taobh tuathail amach',\n", - " 'mar throid mé liom féin',\n", - " 'throid mé le dé',\n", - " 'throid mé le mo shaol',\n", - " 'agus throid mé léi',\n", - " 'throid mé le mo chéile',\n", - " 'throid mé é\\x92',\n", - " 'throid mé chomh minic sin gur chuir mé',\n", - " 'eagla orm féin',\n", - " 'na cuir ag troid mé arís',\n", - " 'ní chun mo leasa é',\n", - " 'ná cuir ag troid mé arís',\n", - " 'mar níl aon fhonn orm an t-anam atá agam',\n", - " 'a chur amú i mo shaol',\n", - " 'ó taobh tuathail amach',\n", - " 'níor mhaith liom troid arís',\n", - " 'ón taobh tuathail amach',\n", - " 'ó, in ainm dé',\n", - " 'coinnigí an tsíocháin',\n", - " 'déanfaidh muidne fás i ngach aon slí',\n", - " 'coinnigí an tsíocháin',\n", - " 'tá dóthain le déanamh cheana féin;',\n", - " 'coinnigí an tsíocháin',\n", - " 'tá athrú ar an domhan amuigh le déanaí',\n", - " 'coinnigí an tsíocháin',\n", - " 'sara nglacann muid an dara céim',\n", - " 'ó taobh tuathail amach',\n", - " 'níor mhaith liom troid arís',\n", - " 'ón taobh tuathail amach']}}},\n", - " 'hr': {'sentence': {'pop': {'meta': {'train_data': ['mister yuppie diže sistem',\n", - " 'počinje još jedan dan',\n", - " 'čisti zubi, čisti nokti',\n", - " 'kao puppy poslušan',\n", - " 'nosi smješak uz kravatu',\n", - " 'naceren i kad je sam',\n", - " 'on je corporate man',\n", - " 'on je nas business plan',\n", - " 'on je office ken',\n", - " 'on je bang, bang, bang',\n", - " 'mister yuppie, daj pokaži im',\n", - " 'danas nisi samo man machine',\n", - " 'mister yuppie, daj pokaži im',\n", - " 'danas nisi business rin tin tin',\n", - " 'pusti malo telefon',\n", - " \"obuci se k'o elton john\",\n", - " 'i pleši s nama disko',\n", - " 'o-o-o',\n", - " 'kava točno tri minute',\n", - " 'za pet ručak proguta',\n", - " 'efikasnost prije svega',\n", - " 'i dve lajne s laptopa',\n", - " 'troši happy derm',\n", - " 'happy meal',\n", - " 'happy pill, happy kill',\n", - " \"he's happy - is he?\",\n", - " \"he's a bang\",\n", - " \"he's got it\",\n", - " \"he's a bang\",\n", - " \"i don't think so\",\n", - " 'mister yuppie, daj pokaži im',\n", - " 'danas nisi samo man machine',\n", - " 'mister yuppie, daj pokaži im',\n", - " 'danas nisi business rin tin tin',\n", - " 'pusti malo telefon',\n", - " \"obuci se k'o elton john\",\n", - " 'i pleši s nama disko',\n", - " 'o-o-o',\n", - " 'srce je moje zagrlio muk',\n", - " 'sa violina više ne dolazi zvuk',\n", - " 'tama je prekrila potonuli grad',\n", - " 'time has become my worst enemy',\n", - " 'all through the years there was nobody to set me free',\n", - " 'for this pain, captured me forever',\n", - " 'ref:',\n", - " 'nikad više moje oči neće jutra vidjeti',\n", - " 'bez tebe nikad više neću disati',\n", - " \"loosing our sacred love is what i'll never forgive myself\",\n", - " 'and i will never, never be the same',\n", - " 'you are the bliss of my memory',\n", - " 'when i close my eyes the only thing that i see',\n", - " \"now i know, you were kissin' a fool\",\n", - " 'siva je boja moje ljubavi',\n", - " 'u meni sreća već odavno ne postoji',\n", - " 'zadnji si osmijeh u meni slomio ti',\n", - " 'ref:',\n", - " \"loosing our sacred love is what i'll never forgive myself\",\n", - " \"'cause there is no one that could ever take your place\",\n", - " 'nikad vise moje oči neće jutra vidjeti',\n", - " 'bez tebe nikad više neću disati',\n", - " 'ja radim na plantaži pamuka',\n", - " 'berem ga po cijeli dan',\n", - " 'pamučne gaće što ih nosiš ti',\n", - " 'od pamuka su što sam brao ja',\n", - " 'u zemlji gdje živiš ti',\n", - " 'blagostanje je i dobro se živi',\n", - " 'a ja radim teško cijeli dan',\n", - " 'a nisam glup nego radostan',\n", - " 'brao pamuk ili banane',\n", - " 'svejedno je, ti nisi za me',\n", - " 'ti si lijepa i zgodna',\n", - " 'i zgodna i lijepa',\n", - " 'kad te se sjetim, muka mi je',\n", - " 'od pamuka je',\n", - " 'muka mi je',\n", - " 'od pamuka je',\n", - " 'muka mi je',\n", - " 'od pamuka je',\n", - " 'muka mi je',\n", - " 'od pamuka je',\n", - " 'because i live in a banana state',\n", - " \"it doesn't mean that i'm banana man\",\n", - " 'because i live in the ass of the world',\n", - " \"it doesn't mean that i am less worth\",\n", - " 'because i live in a banana state',\n", - " \"it doesn't mean that i'm banana man\",\n", - " 'because i live in the ass of the world',\n", - " \"it doesn't mean that i am less worth\",\n", - " 'i work hard on cotton fields',\n", - " \"pickin' cotton every day\",\n", - " 'underwear that you wear',\n", - " \"is of the cotton that i've made\",\n", - " 'in the country where you live',\n", - " 'rules the harmony and prosperity',\n", - " \"you don't know me\",\n", - " \"you don't know me\",\n", - " \"you don't know me\",\n", - " 'because i live in a banana state',\n", - " \"it doesn't mean that i'm banana man\",\n", - " 'because i live in the ass of the world',\n", - " \"it doesn't mean that i am less worth\",\n", - " 'to što živim u banana stejt',\n", - " 'ne znači da sam glup i da sam strejt',\n", - " 'to što živim u šupku svijeta',\n", - " 'ne znači da sam manje vrijedan',\n", - " 'hey mr.taliman tally me banana',\n", - " 'daylight come and i want to go home',\n", - " 'hey mr.taliman tally me banana',\n", - " 'daylight come and i want to go home',\n", - " 'hej gospodine talimane tali mi bananu',\n", - " 'zora sviće i ja moram poć',\n", - " 'hej gospodine talimane tali mi bananu',\n", - " 'zora sviće i ja moram poć',\n", - " 'zora sviće i ja moram poć',\n", - " 'zora sviće i ja moram poć',\n", - " 'telegram sam',\n", - " 'telegram sam je moj superman',\n", - " 'kratkorepi tom, kratkorepi tom',\n", - " 'ima staklene oči i živčani slom',\n", - " 'tetka beladona, tetka beladona',\n", - " 'u bijeloj kupaoni on je bio ona',\n", - " 'telegram sam je moj superman',\n", - " 'telegram sam je moj superman',\n", - " 'bobi je u redu, bobi je u redu',\n", - " 'dok ga momci u plavom opet ne odvedu',\n", - " 'psihomodo je lud, psihomodo je lud',\n", - " 'svaka žena u gradu s njim počinila bi blud',\n", - " 'telegram sam je moj superman',\n", - " 'telegram sam je moj superman',\n", - " 'plastik fantastik, plastik fantastik',\n", - " 'hiper sintetik i automatik',\n", - " 'ja prodajem snove',\n", - " 'a ti trebaš uvijek nove',\n", - " 'telegram sam je moj superman',\n", - " 'telegram sam je moj superman',\n", - " 'telegram sam je moj superman',\n", - " 'telegram sam',\n", - " 'telegram sam',\n", - " 'telegram sam',\n", - " 'vooooo',\n", - " 'telegram sam',\n", - " 'telegram sam',\n", - " 'telegram sam',\n", - " 'vooooo',\n", - " 'telegram sam',\n", - " 'telegram sam',\n", - " 'telegram sam',\n", - " 'telegram sam baby',\n", - " 'telegram sam',\n", - " 'ja sam ja jeremija',\n", - " 'i am i, jeremija',\n", - " 'prezivam se krstic',\n", - " 'krstic is my last name',\n", - " 'selo mi je toponica',\n", - " 'toponica is my village',\n", - " 'drvena mi dvokolica',\n", - " 'my chariots are wooden',\n", - " 'sluzio sam stari kadar',\n", - " 'i served in the old staff',\n", - " 'artiljerija',\n", - " 'artillery',\n", - " 'ja sam ja jeremija',\n", - " 'i am i, jeremija',\n", - " 'prezivam se krstic',\n", - " 'krstic is my last name',\n", - " 'imam sito i karlicu',\n", - " 'i have sieve and pelvis',\n", - " 'imam zenu vracaricu',\n", - " 'i have witch woman',\n", - " 'sluzio sam stari kadar',\n", - " 'i served in the old staff',\n", - " 'artiljerija',\n", - " 'artillery',\n", - " 'ja sam ja jeremija',\n", - " 'i am i, jeremija',\n", - " 'prezivam se krstic',\n", - " 'krstic is my last name',\n", - " 'imam njivu i livadu',\n", - " 'i have filed and meadow',\n", - " 'vodenicu valjanicu',\n", - " 'water mill (???)',\n", - " 'sluzio sam starii kadar',\n", - " 'i served in the old staff',\n", - " 'artiljerija',\n", - " 'artillery',\n", - " 'ja sam ja jeremija',\n", - " 'i am i, jeremija',\n", - " 'prezivam se krstic',\n", - " 'krstic is my last name',\n", - " 'vise kuca prijalica',\n", - " 'more houses (???)',\n", - " 'preko puta udovica',\n", - " 'across the street a widow',\n", - " 'sluzio sam stari kadar',\n", - " 'i served in the old staff',\n", - " 'artiljerija...',\n", - " 'atrillery',\n", - " 'there is no reason for you to turn around',\n", - " \"it's pity for you to waste your time\",\n", - " 'all the things you could are real good done',\n", - " 'so will you listen to me, my son',\n", - " 'there is no reason for you to turn around',\n", - " \"it's pity for you to waste your time\",\n", - " 'all the things you could are real good done',\n", - " 'so will you listen to me, my son',\n", - " 'take money',\n", - " 'there is no reason for you to turn around',\n", - " \"it's pity for you to waste your time\",\n", - " 'all the things you could do are real good done',\n", - " 'so will you listen to me, my son',\n", - " 'there is no reason for you to turn around',\n", - " \"it's pity for you to waste your time\",\n", - " 'all the things you could do are real good done',\n", - " 'so will you listen to me, my son',\n", - " 'take money and run',\n", - " 'take money and run',\n", - " 'you must be hurry boy',\n", - " 'your shadow is catching you',\n", - " \"it's getting closer and closer\",\n", - " 'you must be hurry boy',\n", - " 'your shadow is catching you',\n", - " \"it's getting colder and colder\",\n", - " 'you must be hurry boy',\n", - " 'your shadow is catching you',\n", - " \"it's getting closer and closer\",\n", - " 'you must be hurry boy',\n", - " 'your shadow is catching you',\n", - " \"it's getting colder and colder\",\n", - " 'take money and run',\n", - " 'take money and run',\n", - " 'ne okreći se sine',\n", - " 'nema razloga',\n", - " 'šteta je, gubiš vrijeme',\n", - " 'sve što si mogao učiniti, učinio si dobro',\n", - " 'zato me poslušaj sinko',\n", - " 'uzmi novce i bježi',\n", - " 'uzmi novce i bježi',\n", - " 'uzmi novce i bježi',\n", - " 'uzmi novce i bježi',\n", - " 'take money and run',\n", - " 'take money and run',\n", - " 'take money and run',\n", - " 'take money and run',\n", - " 'beži',\n", - " 'ma, beži',\n", - " \"bu te ulovil'\",\n", - " \"bu te ulovil'\",\n", - " 'vrag ti mater',\n", - " \"bu te ulovil'\",\n", - " 'sota mono tratao no trateja mon',\n", - " 'uto traja satija totaja tom',\n", - " 'ima toja satao no trateja mon',\n", - " 'uto traja satija tom satija tom',\n", - " 'sadom sadom',\n", - " 'sadom sadom',\n", - " 'una torti sadom',\n", - " 'una parki sadom',\n", - " 'suta mono tratao na trateja ton',\n", - " 'uto traja satija totaja ton',\n", - " 'ima toja satao uno trateja ton',\n", - " 'uto traja satija tom satija tom',\n", - " 'sadom sadom',\n", - " 'sadom sadom',\n", - " 'una torti sadom',\n", - " 'una parki sadom',\n", - " 'suta mono tratao na trateja ton',\n", - " 'uto traja satija totaja ton',\n", - " 'ima toja satao no trateja ton',\n", - " 'uto traja satija tom satija tom',\n", - " 'sadom sadom',\n", - " 'sadom sadom',\n", - " 'una torti sadom',\n", - " 'una parki sadom',\n", - " 'ya mnogo let pidzhak noshu',\n", - " 'davno potersya i ne nov on',\n", - " 'i ya zovu k sebe portnogo',\n", - " 'i pereshit pidzhak proshu',\n", - " 'ya govoryu emu shutya:',\n", - " '\"perekroite vse inache',\n", - " 'sulit mne novyie udachi',\n", - " 'iskusstvo kroyki i shitya\"',\n", - " 'ya poshutil. a on pidzhak',\n", - " 'serezno tak pereshivaet',\n", - " 'a sam-to vse perezhivaet:',\n", - " 'vdrug chto ne tak. takoy chudak',\n", - " 'odna zabota nayavu',\n", - " 'v ego userde molchalivom:',\n", - " 'chtobyi ya vyiglyadel schastlivyim',\n", - " 'v tom pidzhake. poka zhivu',\n", - " 'on predstavlyaet eto tak:',\n", - " 'edva lish ya pidzhak primeryu -',\n", - " 'opyat v tvoyu lyubov poveryu',\n", - " 'kak byi ne tak. takoy chudak',\n", - " 'opyat v tvoyu lyubov poveryu',\n", - " 'kak byi ne tak. takoy chudak',\n", - " 'pure and white, her skin is so inviting',\n", - " 'like a new, unbeaten snow',\n", - " 'eyes of blue, so beautiful and blinding',\n", - " 'like the sky over moscow',\n", - " 'jas makedonec, a ona rusinka',\n", - " 'jas dobredojden kako muzika',\n", - " 'muzika! muzika!',\n", - " 'što ne ja razbiram',\n", - " 'ni \"kakalin\", ni \"kamaja\"',\n", - " 'ma ništo ne ja razbiram',\n", - " 'ni \"kakalin\", ni \"kamaja\"',\n", - " 'za nea se kje naučam',\n", - " 'ni \"kakalin\", ni \"kamaja\"',\n", - " 'ma ništo ne ja razbiram',\n", - " 'ni \"kakalin\", ni \"kamaja\"',\n", - " 'za nea se kje naučam',\n", - " 'jas makedonec, a ona rusinka',\n", - " 'dajte i votka a mene rakija',\n", - " 'muzika! muzika!',\n", - " 'što ne ja razbiram',\n", - " 'ni \"kakalin\", ni \"kamaja\"',\n", - " 'ma ništo ne ja razbiram',\n", - " 'ni \"kakalin\", ni \"kamaja\"',\n", - " 'za nea se kje naučam',\n", - " 'laj laj laj la la laj laj laj la la...',\n", - " 'laj laj laj la la laj laj laj la la...',\n", - " 'laj laj laj la la laj laj laj la la...',\n", - " 'laj laj la la laj...',\n", - " 'ni \"kakalin\", ni \"kamaja\"',\n", - " 'ma ništo ne ja razbiram',\n", - " 'ni \"kakalin\", ni \"kamaja\"',\n", - " 'za nea se kje naučam',\n", - " 'ni \"kakalin\", ni \"kamaja\"',\n", - " 'ma ništo ne ja razbiram',\n", - " 'ni \"kakalin\", ni \"kamaja\"',\n", - " 'za nea se kje naučam',\n", - " 'za nea se kje naučam',\n", - " 'uvijek sam bila, kaže',\n", - " 'out of your league',\n", - " 'od prvog dana, bejbe, skačeš',\n", - " 'na svaki moj mig',\n", - " 'to je baš tako unsexy, dear',\n", - " 'ovo je zadnji đir za nas',\n", - " 'pronađi spas, now',\n", - " 'go, go, go, go',\n", - " 'on kaže stani, honey',\n", - " 'samo loš dan',\n", - " 'volimo se ludo',\n", - " \"al' je možda premali stan\",\n", - " 'mi smo dva slonića roza',\n", - " 'u sto hiljada poza',\n", - " 'reci nismo li',\n", - " 'molim te, reci, reci',\n", - " 'o ne',\n", - " 'miss. right and mr. wrong',\n", - " 'ovo je sing-a-long',\n", - " 'o-o-o, samo se smiješi',\n", - " 'miss. right and mr. wrong',\n", - " 'ovo je so-long-see-you',\n", - " 'o-o-o, broji 1, 2, 3, 4',\n", - " 'ti si italic, a ja volim bold',\n", - " 'volim boogie-woogie',\n", - " 'disco, speed',\n", - " 'ti voliš stoned',\n", - " 'mrzim dah tvoj dok spavaš',\n", - " 'kako me obožavaš',\n", - " 'kako ljubiš me',\n", - " 'na tebi mrzim sve',\n", - " 'miss. right and mr. wrong',\n", - " 'ovo je sing-a-long',\n", - " 'o-o-o, samo se smiješi',\n", - " 'miss. right and mr. wrong',\n", - " 'ovo je so-long-see-you',\n", - " 'o-o-o, broji 1, 2, 3, 4',\n", - " 'miss right, and mr. wrong again...',\n", - " '(dobro veče dragi slušaoci, naša večerašnja emisija u cjelosti je posvečena najvećoj zvijezi rock n rolla, gospodinu elvisu j. kurtoviću i njegovom pratećem sastavu meteorcima. za naše mlađe slušaoce evo nekoliko osnovnih biografskih podataka o elvisu. elvis je rođen kao dijete iz mješovitog braka, od oca crnca i majke bijelkinje. od majke je nasljedio ljubav prema country-ju. pa kao i staciju poslušamo elvisom jedan country napjev; \"in our country\")',\n", - " 'in our country',\n", - " 'in our country people are good',\n", - " 'in our country nobody work',\n", - " 'in our country brena is big star',\n", - " 'in our country everybody has a good car',\n", - " \"on concerts and gallеries', there arе no public\",\n", - " 'some people in my country wanted republic',\n", - " \"on concerts and galleries', there are no public\",\n", - " 'some people in my country still want republic',\n", - " 'in our country',\n", - " 'in our country mountains are hot',\n", - " 'in our country people make good book',\n", - " 'in our country boys play basketball',\n", - " \"on concerts and galleries', there are no public\",\n", - " 'some people in my country wanted republic',\n", - " \"on concerts and galleries', there are no public\",\n", - " 'some people in my country still want republic',\n", - " 'ты balkanizer, миран оратор',\n", - " 'я energizer - русификатор',\n", - " 'дистрибуира',\n", - " 'добро поруку',\n", - " 'дружба приятель',\n", - " 'пока дышу я - люблю и верю',\n", - " 'буду любить когда постарею',\n", - " '(ћу) волети и веровати',\n", - " 'истина eдна',\n", - " 'дружба приятель',\n", - " 'welcome my friend this is the best part of the game',\n", - " 'when people come together just to feel the same',\n", - " \"and when you need a friend to feel like you're at home\",\n", - " 'just turn around, watch the crowd',\n", - " 'you’re not alone',\n", - " '(ooh)',\n", - " \"you're not alone\",\n", - " '(ooh)',\n", - " 'zdravo russkaja, traktor mašina',\n", - " 'sviramo skupa, mala nam bina',\n", - " 'pije se šljiva, loče se votka',\n", - " 'za zdravlje russkaja, razvaljotka',\n", - " 'first time we met, we smoked marijuana',\n", - " 'drinking rakija, stage was kafana',\n", - " 'whole night long, singing this song',\n", - " 'not gonna stop this until mañana',\n", - " 'welcome my friend this is the best part of the game',\n", - " 'when people come together just to feel the same',\n", - " \"and when you need a friend to feel like you're at home\",\n", - " 'just turn around, watch the crowd',\n", - " 'you’re not alone',\n", - " '(ooh)',\n", - " \"you're not alone\",\n", - " '(ooh)',\n", - " 'pjevamo glasno, pravi se šutka',\n", - " \"ovaj će dernek trajat' do jutra\",\n", - " \"ovaj će dernek trajat' do jutra\",\n", - " 'jer nam je život od danas do sutra',\n", - " '(ooh)',\n", - " \"you're not alone\",\n", - " '(ooh)',\n", - " \"you're not alone\",\n", - " 'дружба приятель',\n", - " 'pogled mili',\n", - " 'jedini dušu smiri',\n", - " 'o volim te',\n", - " 'noć je duga',\n", - " 'bez tebe tuga',\n", - " 'ruku mi daj',\n", - " 'nikad ne puštaj',\n", - " 'everything for you',\n", - " 'i give myself to you',\n", - " 'neka me svet čuje sad',\n", - " 'životom branim te ja',\n", - " 'neka nas svi vide sad',\n", - " 'svako nek zna, da zauvek',\n", - " 'tvoja sam ja',\n", - " 'kruna je tvoja',\n", - " 'ljubavi moja',\n", - " 'želim da znaš',\n", - " 'da tebi pripada',\n", - " 'everything for you',\n", - " 'i give myself to you',\n", - " 'neka me svet čuje sad',\n", - " 'životom branim te ja',\n", - " 'neka nas svi vide sad',\n", - " 'svako nek zna, da zauvek',\n", - " 'tvoja sam ja',\n", - " 'svako nek zna, da zauvek',\n", - " 'volim te ja']},\n", - " 'data': ['stvari se polako vrcaju na mjesto',\n", - " 'ovako ne\\x8ato se ne dogaða cesto',\n", - " 'premda, priznajem ponekad pretjeram',\n", - " 'i nekud otplovim sam',\n", - " 'i tad slike izblijede sve',\n", - " 'i tad zatvaram se u sebe',\n", - " 'i tad nisi mi potrebna',\n", - " 'kazaljke i dalje krugove crtaju',\n", - " 'umjesto zvijezda ki\\x8ane kapi na grad padaju',\n", - " 'prazno mjesto u mom krevetu sjeca me',\n", - " 'bila si tu',\n", - " 'tko zna , kuda si oti\\x8ala',\n", - " 'tko zna ,zbog cega se ne vraca\\x8a',\n", - " 'tko zna ,sve pi\\x8ae u zvijezdama',\n", - " 'jo\\x8a jucer poljupcima mi smo se borili',\n", - " 'i dodirom smo jedno drugom tajne otkrivali',\n", - " '\\x8ato se dogodilo gdje je ta kap \\x8ato je',\n", - " 'prelila ca\\x8au , \\x8ato te natjerala da odnese\\x8a',\n", - " 'sve \\x8ato sam volio , a tebe sam volio',\n", - " 'sve \\x8ato sam sanjao, a tebe sam sanjao',\n", - " 'ma zar sam pogrije\\x8aio \\x8ato sam se smijao',\n", - " 'kad su mi govorili da sve su \\x8eene kurve',\n", - " 'kad bi zauvijek zaspao ovaj grad',\n", - " 'kao u bajci prekriven trnjem i travama',\n", - " 'sve dok se ti ne vrati\\x8a,a vratit ce\\x8a se znam',\n", - " 'i sve dok tvoja ruka ne dotakne moj dlan',\n", - " 'do me ne zagrli\\x8a',\n", - " 'dok me ne poljubi\\x8a',\n", - " 'dok me ne zagrije tvoj dah',\n", - " '(da vidim ruke)',\n", - " \"volim te k'o, volim te k'o\",\n", - " \"volim te k'o, volim te k'o\",\n", - " 'video, dvd, kompjuterske igrice',\n", - " \"volim te k'o, volim te k'o\",\n", - " \"volim te k'o, volim te k'o\",\n", - " 'sladoled i kokice',\n", - " 'casio i šljokice',\n", - " \"volim te k'o, volim te k'o\",\n", - " \"volim te k'o, volim te k'o\",\n", - " \"k'o konana, dilana, alana\",\n", - " 'ona dva partizana',\n", - " \"volim te k'o, volim te k'o\",\n", - " \"volim te k'o, volim te k'o\",\n", - " 'lcd, bpm, h&m, s/m',\n", - " \"volim te k'o, volim te k'o\",\n", - " \"volim te k'o, volim te k'o\",\n", - " 'kristl i aleksis',\n", - " 'domačica keksiz',\n", - " \"volim te k'o, volim te k'o\",\n", - " \"volim te k'o, volim te k'o\",\n", - " \"kao tarzan čitu, k'o jovanka titu\",\n", - " \"volim te k'o, volim te k'o\",\n", - " \"volim te k'o, kao plivadone\",\n", - " 'bombone, trodone',\n", - " 'žvakače i toblerone',\n", - " \"volim te k'o, volim te k'o\",\n", - " \"volim te k'o, volim te k'o\",\n", - " 'car sex, fast sex, last sex with the ex',\n", - " 'honey pie, honey pie',\n", - " 'sakrit ću te u zube kao žvaku',\n", - " 'honey pie, honey pie',\n", - " 'nitko te neće pronači u mraku',\n", - " 'welcome brother and neighbor',\n", - " 'in my house of labour',\n", - " 'in my city of pain',\n", - " 'country of the insane',\n", - " '- german -',\n", - " '... lies to my people',\n", - " 'lies to my ...',\n", - " 'raditi, hraniti, spavati',\n", - " 'voliti, gubiti, plakati',\n", - " 'grabiti, stvoriti, stušiti',\n", - " 'roditi se i živjeti',\n", - " 'ljubiti, grliti, želiti',\n", - " 'mrziti, pucati, ( )',\n", - " 'otići ili ostati',\n", - " 'ostariti i najzad umrijeti',\n", - " 'aman, aman ...',\n", - " 'odlazi dan',\n", - " 'ti polako za njim kreni ali sam',\n", - " 'jer izgubiti ćeš igru',\n", - " 'ovu igru koju odavno već znam',\n", - " '(sava raka tika taka, bija baja buf)',\n", - " 'ne brini, ne brini za mene',\n", - " 'laž mi ništa ne može',\n", - " 'kaži, kaži kako je',\n", - " 'kada se gubi sve',\n", - " 'pred svima govoriš da ništa ne patiš',\n", - " 'i da me ne voliš, baby (baby)',\n", - " 'sad, važi, pokaži',\n", - " 'da možeš bez mene',\n", - " 'jer samo dvije riječi',\n", - " 'danas ti želim reći:',\n", - " 'bar (bar), bar (bar) za kraj',\n", - " 'ne brini, ne brini za mene',\n", - " 'laž mi ništa ne može',\n", - " 'kaži, kaži kako je',\n", - " 'kada se gubi sve',\n", - " 'ne brini, ne brini za mene',\n", - " 'laž mi ništa ne može',\n", - " 'kaži, kaži kako je',\n", - " 'kada se gubi sve',\n", - " \"i couldn't stand the lie\",\n", - " 'now you are doomed to cry',\n", - " \"bye (bye), bye (don't ever), don't lie\",\n", - " '(could it be, could it be, is it true?)',\n", - " '(i was fool that could die for you)',\n", - " \"tell me, tell me, can't you see?\",\n", - " \"you'll never die for me\",\n", - " 'could it be, could it be, is it true? (is it true?)',\n", - " 'i was fool that could die for you',\n", - " '(you know that i could die for you)',\n", - " \"tell me, tell me, can't you see?\",\n", - " \"you'll never die for me\",\n", - " 'could it be, could it be, is it true?',\n", - " 'i was fool that could die for you',\n", - " \"tell me, tell me, can't you see?\",\n", - " \"you'll never die for me\",\n", - " \"tell me, tell me, can't you see?\",\n", - " \"you'll never die for me\",\n", - " 'i got this one thing',\n", - " 'something for nothing',\n", - " 'its really something',\n", - " 'oh sweet nothing',\n", - " 'my little secret',\n", - " \"yeah i'll keep it\",\n", - " 'its so convenient',\n", - " 'even at my weakest',\n", - " 'let it go',\n", - " 'let it grow',\n", - " 'play the casio',\n", - " 'to the radio',\n", - " 'i got this one thing',\n", - " 'something for nothing',\n", - " 'its really something',\n", - " 'oh sweet nothing',\n", - " 'čuvao sam ljubav',\n", - " 'samo za tebe',\n", - " 'čuvao sam ljubav',\n", - " 'samo za tebe',\n", - " 'čuvao sam ljubav',\n", - " 'samo za tebe',\n", - " 'let it go',\n", - " 'let it grow',\n", - " 'dolazi stari dobrih mir',\n", - " 'donosi vrijeme ljubavi',\n", - " 'opijah me dah proljeća',\n", - " 'bolji život predosjećam',\n", - " 'ding ding dong čujte zvona zvon',\n", - " 'u ritmu cijeli svijet zvoni, svaka kuća, svaki dom',\n", - " \"sad svi ruke gore nek 'se čuje zvon\",\n", - " 'ding dong diri diri dam diri dong',\n", - " \"budi tu uz nas i nek' se čuje glas\",\n", - " \"nek' se čuje jasno i nek' se čuje glasno\",\n", - " 'da u miru i dobru trebamo svi poć',\n", - " 'stigla nam je tiha noć',\n", - " 'čestit božić dobrim ljudima i sretna nova, nova godina',\n", - " 'čestit božić dobrim ljudima i sretna nova, nova godina',\n", - " 'ding ding dong here comes the song',\n", - " \"it's colonia gang coming on strong\",\n", - " 'just lift your hands in the air',\n", - " 'ding dong diri diri dam diri de',\n", - " \"if you're a girl, boy, woman or a man\",\n", - " 'just sing with us the best you can',\n", - " 'singing and dancing is not a crime',\n", - " \"just tell the world it's christmas time\",\n", - " 'merry christmas wish you everyone and a happy, happy new year',\n", - " 'merry christmas wish you everyone and a happy, happy new year',\n", - " 'čestit božić dobrim ljudima i sretna nova, nova godina',\n", - " 'čestit božić dobrim ljudima i sretna nova, nova godina',\n", - " 'merry christmas wish you everyone and a happy, happy new year',\n", - " 'merry christmas wish you everyone and a happy, happy new year']}}},\n", - " 'id': {'sentence': {'pop': {'meta': {'train_data': ['jangankan biar hilang semua yang telah diberi',\n", - " 'jangankan pergi rasa manusiawi dan naluri diri',\n", - " 'biar bumi tetap bersinar di bawah mentari',\n", - " 'agar kita tetap bersinar di bawah mentari',\n", - " 'let there be joy and harmony',\n", - " 'from the roof sky above to the deep blue sea',\n", - " 'all that we have under the sun',\n", - " 'singing loud in unheard sounds',\n", - " 'telling us that we are one',\n", - " 'jangankan biar hilang semua yang telah diberi',\n", - " 'jangankan pergi rasa manusiawi dan naluri diri',\n", - " 'biar bumi tetap bersinar di bawah mentari',\n", - " 'agar kita tetap bersinar di bawah mentari',\n", - " 'let there be joy and harmony',\n", - " 'from the roof sky above to the deep blue sea',\n", - " 'all that we have under the sun',\n", - " 'singing loud in unheard sounds',\n", - " 'telling us that we are one',\n", - " 'let there be joy and harmony',\n", - " 'from the roof sky above to the deep blue sea',\n", - " 'all that we have under the sun',\n", - " 'singing loud in unheard sounds',\n", - " 'telling us that we are one',\n", - " 'jangankan lenyap keindahan diri',\n", - " 'kesucian hati',\n", - " 'joy and harmony',\n", - " 'di bawah mentari',\n", - " 'joy and harmony',\n", - " 'let there be joy and harmony',\n", - " 'from the roof sky above to the deep blue sea',\n", - " 'all that we have under the sun',\n", - " 'singing loud in unheard sounds',\n", - " 'telling us that we are one',\n", - " 'let there be joy and harmony',\n", - " 'from the roof sky above to the deep blue sea',\n", - " 'all that we have under the sun',\n", - " 'singing loud in unheard sounds',\n", - " 'telling us that we are one',\n", - " 'jangankan lenyap keindahan diri',\n", - " 'kesucian hati',\n", - " 'dum must qalandar must must, dam must qalandar must',\n", - " 'dum must qalandar must must, dam must qalandar must',\n", - " 'mera vird hai dam dam ali ali',\n", - " 'mera vird hai dam dam ali ali',\n", - " 'sakhi laal qalandar must must',\n", - " 'sakhi laal qalandar must must',\n", - " 'jhole laal qalandar must must',\n", - " 'dum must qalandar must must, dam must qalandar must',\n", - " 'mera vird hai dam dam ali ali',\n", - " 'mera vird hai dam dam ali ali',\n", - " 'sakhi laal qalandar must must',\n", - " 'sakhi laal qalandar must must',\n", - " 'jhole laal qalandar must must',\n", - " 'dum must qalandar must must, dam must qalandar must',\n", - " 'dum must qalandar must must, dam must qalandar must (chorus)',\n", - " 'sufi chants (nfak)',\n", - " 'dum must qalandar must must, dam must qalandar must',\n", - " 'qawwali vocables (nfak)',\n", - " 'dum must qalandar must must, dam must qalandar must',\n", - " 'qawwali vocables',\n", - " 'akhi ja malanga akhi da malanga akhi ja malanga tu ali ali ali ali',\n", - " 'akhi ja malanga akhi da malanga akhi ja malanga',\n", - " 'akhi ja malanga sajia pe mun lain k',\n", - " 'akhi ja malanga sajia pe mun lain k',\n", - " 'aj nai te kal saray ali ali kehn gay',\n", - " 'must must must must dam must qalandar must must',\n", - " 'dum must qalandar must must, dam must qalandar must',\n", - " 'dum must qalandar must must, dam must qalandar must',\n", - " 'ta sumamente magnifiko bo ta',\n", - " 'ku bo kurpa sexy bo ta kana kara na laira',\n", - " 'shake bo body e sodanan ta maria',\n", - " 'bendishon di jah',\n", - " 'paso ta sumamente magnifiko bo ta',\n", - " 'ku bo kurpa sexy bo ta kana kara na laira',\n", - " 'shake bo body e sodanan ta maria',\n", - " 'ta sumamente magnifiko bo ta',\n", - " 'ku bo kurpa sexy bo ta kana kara na laira',\n", - " 'shake bo body e sodanan ta maria',\n", - " 'bendishon di jah',\n", - " 'paso ta sumamente magnifiko bo ta',\n", - " 'ku bo kurpa sexy bo ta kana kara na laira',\n", - " 'shake bo body e sodanan ta maria',\n", - " 'bendishon di jah bo ta',\n", - " 'sumamente, sumamente magnifiko',\n", - " 'ora e angel jega aparese den mi sonjo',\n", - " 'di e fortalesa i mi ke ta e donjo',\n", - " 'pa mi jega ba den kaja shine ku bo',\n", - " 'ta sumamente magnifiko bo ta',\n", - " 'ku bo kurpa sweety bo ta show bo kara',\n", - " 'mi no por warda pa hanja bo den mi gara',\n", - " 'cocktail special di jah bo ta',\n", - " 'paso ta sumamente',\n", - " 'ej, bin serka mi',\n", - " 'bo sa bon bon ku ta bo te exsistentia',\n", - " 'di henter mi kurason mi ke bo kompronde mi',\n", - " 'bo sa muchu bon ku ta bo ta mi bida, mi amor',\n", - " 'ai, bo ta magnifiko',\n", - " 'unda ku bo bai bo ta steal tur e show',\n", - " 'amor di mi so',\n", - " 'hasi bo kos mi ta basha un pida kos',\n", - " 'mi ta bai te shelu bin ku strea pa bo',\n", - " 'luna ku solo ta brija pa bo',\n", - " 'awa ta kai ku tur sorti kolo',\n", - " 'bo ta magnifiko',\n", - " 'mi kurason su topiko',\n", - " 'mi ta hura te na morto ku no tin niun otro kos',\n", - " 'ta sumamente magnifiko bo ta',\n", - " 'ku bo kurpa sexy bo ta kana kara na laira',\n", - " 'shake bo body e sodanan ta maria',\n", - " 'bendishon di jah',\n", - " 'paso ta sumamente magnifiko bo ta',\n", - " 'ku bo kurpa sexy bo ta kana kara na laira',\n", - " 'shake bo body e sodanan ta maria',\n", - " 'bendishon di jah bo ta',\n", - " 'den mi kurason bo te pieda importante',\n", - " 'mi ta kla para pa shoot e bala den bo wante',\n", - " 'pa mi kaba di forme puzzle bo te pieda importante',\n", - " 'tantu sensual hopi elegante',\n", - " 'unda bo ta bai bo bo ta brija',\n", - " 'special selecta pa bo kuida e simija',\n", - " 'si mi no hanja bo pa mi so',\n", - " 'mi kabes no ta frija',\n", - " 'ta bo te medaja mi ke gana tur dia tende awor',\n", - " 'ej, bin serka mi',\n", - " 'bo sa bon bon ku ta bo te exsistentia',\n", - " 'di henter mi kurason mi ke bo kompronde mi',\n", - " 'bo sa muchu bon ku ta bo ta mi bida, mi amor',\n", - " 'ai, bo ta magnifiko',\n", - " 'unda ku bo bai bo ta steal tur e show',\n", - " 'amor di mi so',\n", - " 'hasi bo kos mi ta basha un pida kos',\n", - " 'mi ta bai te shelu bin ku strea pa bo',\n", - " 'luna ku solo ta brija pa bo',\n", - " 'awa ta kai ku tur sorti kolo',\n", - " 'bo ta magnifiko',\n", - " 'mi kurason su topiko',\n", - " 'mi ta hura te na morto ku no tin niun otro kos',\n", - " 'ta sumamente magnifiko bo ta',\n", - " 'ku bo kurpa sexy bo ta kana kara na laira',\n", - " 'shake bo body e sodanan ta maria',\n", - " 'bendishon di jah',\n", - " 'paso ta sumamente magnifiko bo ta',\n", - " 'ku bo kurpa sexy bo ta kana kara na laira',\n", - " 'shake bo body e sodanan ta maria',\n", - " 'bendishon di jah bo ta',\n", - " 'ta sumamente magnifiko bo ta',\n", - " 'cool down! monday',\n", - " 'yaru ki no nai',\n", - " 'kedarui to itsumo no',\n", - " 'tuesday wednesday',\n", - " 'mukashi no to nomeba',\n", - " 'onaji omoidebanashi after 5 mo munashikute',\n", - " 'tabin kitto daremo ga',\n", - " 'kanashii genjitsu to risou no naka de kurushinde yume miteru',\n", - " 'please! please get me shaking! remember dream',\n", - " 'nanimo kowakunakatta ano koro wo torimodoshite',\n", - " 'just forget the bad feelings! remember dream',\n", - " 'tachidomattenai de imasugu wake up! my soul!',\n", - " 'thursday friday',\n", - " 'tokei ki ni shite bakari',\n", - " 'yuuitsu no otanoshimi wa no',\n", - " 'welcome! weekend',\n", - " 'oyasumi no kimari koto',\n", - " 'hiru made ne te itoshi no to',\n", - " 'hontou wa kitto daremo ga',\n", - " 'ikutsumono fuan ya omoi wo oshi koroshite yume miteru',\n", - " 'please! please get me shaking! remember dream',\n", - " 'ashita dake wo mitsumete kagayaki hanatsu mirai e',\n", - " 'just forget the bad feelings! remember dream',\n", - " 'hora kusubuttenai de hajikero! blazing passion!',\n", - " 'tabin kitto daremo ga',\n", - " 'kanashii genjitsu to risou no naka de kurushinde yume miteru',\n", - " 'please! please get me shaking! remember dream',\n", - " 'ashita dake wo mitsumete kagayaki hanatsu mirai e',\n", - " 'just forget the bad feelings! remember dream',\n", - " 'hora kusubuttenai de hajikero! blazing passion!',\n", - " 'please! please get me shaking! remember dream',\n", - " 'nanimo kowakunakatta ano koro wo torimodoshite',\n", - " 'just forget the bad feelings! remember dream',\n", - " 'tachidomattenai de imasugu wake up! my soul!',\n", - " 'bghit ngoul lik ch7al man kalma',\n", - " 'bghit nghani lik ch7al man naghma',\n", - " \"bghitak tchouf datak f'9albi wtarta7\",\n", - " 'bghit nachhad lik wangoul ch7al tanbghik',\n", - " 'm3ak 3acht o7lamt otmanit o7a9a9t omazal',\n", - " 'bghit ntof onchof m3ak boldan wa b7or a rassi wa jbal',\n", - " 'a lyoum hani wa9fa fat7a ro7i lik',\n", - " \"a lyoum hani w'kol ma fia hdito lik\",\n", - " \"d3it l'rabbi kamal lik kol matatmanah\",\n", - " 'tmanit koun yamkan n9arab lik ma testenna',\n", - " 'm3ak ghanit wa chta7t wa d7akt wabkit wa l3abt omazal',\n", - " \"bghit n7ass wa ndo9 o na7yi rou7 nraya7 l'bal\",\n", - " 'm3ak 3acht o7lamt otmanit o7a9a9t omazal',\n", - " 'bghit ntof onchof m3ak boldan wa b7or a rassi wa jbal',\n", - " 'a lyoum hani wa9fa fat7a ro7i lik',\n", - " \"a lyoum hani w'kol ma fia hdito lik\",\n", - " '7abit nor li sakna fi 3inik',\n", - " '7alit ktab maktabi wa ktabt 7rouf smitak nta fih',\n", - " 'a lyoum hani wa9fa fat7a ro7i lik',\n", - " \"a lyoum hani w'kol ma fia hdito lik\",\n", - " 'a lyoum hani wa9fa fat7a ro7i lik',\n", - " \"a lyoum hani w'kol ma fia hdito lik\",\n", - " 'sugisaru kisetsu no you ni bokura wa kawari yuku',\n", - " 'namae wo yonda anata no kioku ga usurenai you ni',\n", - " 'my heart is screaming your name',\n", - " 'these hands reaching for you',\n", - " 'unmei no imi wo wasurenaidene',\n", - " 'itsumo uso bade waratte',\n", - " 'kimi to futari de yume mita basho e ochitai',\n", - " 'ima hanasanaide',\n", - " 'anata no inai sekai ni modoritakunai',\n", - " 'demo yume wa mada yume no mama de',\n", - " 'shizuka ni subete wa kieru',\n", - " 'yeah',\n", - " 'fukai ne muri ni kimi ga iru kara',\n", - " 'hitori janai',\n", - " 'your heart is screaming my name',\n", - " 'your hands reaching for me',\n", - " 'unmei no imi wo wasurenaidene',\n", - " 'itsumo uso bade waratte',\n", - " 'kimi to futari de yume mita basho e ochitai',\n", - " 'ima hanasanaide',\n", - " 'anata no inai sekai ni modoritakunai',\n", - " 'demo yume wa mada yume no mama de',\n", - " 'tashika ni subete wa owaru',\n", - " 'itsu no hika kono yume mo owaru ka na',\n", - " 'afure deta namida wo hirotta',\n", - " 'jag jagar drömmen som blev sann',\n", - " 'kimi ga itta',\n", - " 'kimi to futari de yume mita basho e ochitai',\n", - " 'ima hanasanaide',\n", - " 'anata no inai sekai ni modoritakunai',\n", - " 'demo yume wa mada yume no mama de',\n", - " 'tashika ni subete wa owaru',\n", - " 'me wo tojireba soko ni roses & the crosses',\n", - " 'umetsukushiteku',\n", - " 'atashi marude frozen',\n", - " 'code red',\n", - " 'atashi melting down',\n", - " 'ring the alarm',\n", - " 'mezamenai',\n", - " 'yume no naka',\n", - " 'furasshubakku no nami',\n", - " 'kioku sura subete arai nagashite yuku no',\n", - " 'itsuwari no jibun naraba',\n", - " 'umaku yareru kedo',\n", - " 'ari no mama ja hitorikiri... ?',\n", - " \"i can't get you out of my head\",\n", - " 'kono mama ja dame my handle',\n", - " \"i can't get you out of my head\",\n", - " 'fever',\n", - " 'me ga kuramu',\n", - " 'tatenai kamo',\n", - " 'hitorigoto tsubuyaku nante bom',\n", - " 'kokoro no naka no angel to devil',\n", - " 'atashi hold me down',\n", - " 'ring the alarm',\n", - " 'mezamenai',\n", - " 'yume no naka',\n", - " 'furasshubakku no nami',\n", - " 'kioku sura subete arai nagashite yuku no',\n", - " 'itsuwari no jibun naraba',\n", - " 'umaku yareru kedo',\n", - " 'ari no mama ja hitorikiri... ?',\n", - " \"i can't get you out of my head\",\n", - " 'kono mama ja dame my handle',\n", - " \"i can't get you out of my head\",\n", - " 'namida no umi in oboreru koto mo nai',\n", - " 'anata to hanarereba...',\n", - " \"but i can't get you out of my head\",\n", - " \"i can't get you out of my head\",\n", - " 'kono mama ja dame my handle',\n", - " \"i can't get you out of my head\",\n", - " 'sukāto no tsubasa hiroge teru',\n", - " 'kanojo wa kōsha no okujō de',\n", - " 'boku wa momoiro no yume haita',\n", - " 'boku wa momoiro no koi haita',\n", - " 'shinita gari-darake no kyōshitsu de',\n", - " 'shindasakananome de oborete ku',\n", - " 'zetsutaiteki mono o shiryo kōryo',\n", - " 'zetsutaiteki mono o dōkei su',\n", - " 'takai fensu no ue aruku',\n", - " 'teikū hikō-chū metoroporisu',\n", - " \"boku no nagasu chi wa nan'notame?\",\n", - " 'boku no nagasu chi wa kimi no tame',\n", - " 'yoiyami no yoru ni neonsain',\n", - " \"sekai wa fujun'na iro-darake\",\n", - " 'shian baioretto burū bura',\n", - " 'shian baioretto burakku',\n", - " 'fill up heat',\n", - " 'running to you',\n", - " 'under dark sky',\n", - " 'without your love',\n", - " 'i never win in the game',\n", - " 'fill up heat',\n", - " 'running to you',\n", - " 'under dark sky',\n", - " 'without your love',\n", - " 'i never win in the game',\n", - " 'on the evil linе',\n", - " 'sukāto no tsubasa hirogetara',\n", - " 'kanojo ga waratte tobitatta',\n", - " 'boku wa momoiro no yume no tochū',\n", - " 'boku wa momoiro no koi no tochū',\n", - " 'takai fеnsu o norikoeta',\n", - " 'panorama no machi ni towairaito',\n", - " 'azayakana hodo ni tōmeide',\n", - " 'nigiyakana hodo no shijima',\n", - " 'fill up heat',\n", - " 'running to you',\n", - " 'under dark sky',\n", - " 'without your love',\n", - " 'i never win in the game',\n", - " 'fill up heat',\n", - " 'running to you',\n", - " 'under dark sky',\n", - " 'without your love',\n", - " 'i never win in the game',\n", - " 'on the evil line',\n", - " 'joudan ja nai sonnan ja nai',\n", - " 'do- yu- no?',\n", - " 'mada mada ne tarinain da yo',\n", - " 'kotaete yo no no no 1-2-3',\n", - " 'kaze no naka gensou no naka',\n", - " 'watashi no genkai dare mo shiranai iki wo kirashite',\n", - " 'blade runner',\n", - " 'kako ni wa nai mirai ni mo nai',\n", - " 'ima tsukandeku mono',\n", - " 'keep your mind',\n", - " 'kimi to no story tsunagatteku story story',\n", - " 'itsuka mita you na yume wo',\n", - " 'kinarenai iro demo one more try',\n", - " 'kinou yori ashita yori',\n", - " 'toomawashi no no no 1-2-3',\n", - " 'yaranai yori yaru hou ga ii',\n", - " 'mi wo noridashite tobidashita haato wo daite',\n", - " 'beautiful world',\n", - " 'utsukushiku saite ne hokorashiku waratte',\n", - " 'tsukamitai ima ga aru',\n", - " 'keep your dream',\n", - " 'dore kurai naite ne dore kurai waratte',\n", - " 'ima kimi to mitsukeyou',\n", - " 'itsuka yumemita sekai wo mitakute',\n", - " \"* it's gonna be a start for myself\",\n", - " \"it's gonna be a goal for myself\",\n", - " '* = repeat x 3',\n", - " 'blade runner',\n", - " 'hashiritsuzuke kodoku datte ne',\n", - " 'tsukamitai ima ga aru',\n", - " 'keep your mind',\n", - " 'kimi to no story tsunagatteku story story',\n", - " 'itsuka mita you na yume wo',\n", - " 'jangan kau cari conversation, uh',\n", - " 'bila tak ingin sebuah nation, wohoho yehehe yeah...',\n", - " 'lelah kudengar demoralization',\n", - " 'tatap negri ucap valediction',\n", - " 'wo ho ho..',\n", - " '(bang bang!)',\n", - " 'pergi loe (bang bang!)',\n", - " 'pergi loe (bang bang!)',\n", - " 'wo ooow...',\n", - " '(bang bang!)',\n", - " 'pergi loe (bang bang!)',\n", - " 'pergi loe (bang bang!)',\n", - " 'pergi loe',\n", - " '(bang bang!)',\n", - " 'pergi loe (bang bang!)',\n", - " 'pergi loe (bang bang!)',\n", - " 'wo ho hou ye he he he hey yeah..',\n", - " '(bang bang!)',\n", - " '(bang bang!)',\n", - " 'pergi loe (bang bang!)',\n", - " 'you better go to hell!',\n", - " '(bang bang!)',\n", - " '(bang bang!)',\n", - " \"anyway i don't like you!\",\n", - " '(bang bang!)',\n", - " '(bang bang!)',\n", - " '(bang bang!)',\n", - " '(bang bang!)',\n", - " '(bang bang!)',\n", - " '(bang bang!)',\n", - " '(bang bang!)',\n", - " 'aruku dashita muzyou no kami huminizitta zennin o',\n", - " 'sube o nakusu genzitsu ni sube o nakusu genzitsu o',\n", - " 'kawakikitta notomoto ni sosogi konda aku no tama',\n", - " 'hukaku shizumu kankaku ni hukaku shizumu kakaku o',\n", - " 'i feel tonight',\n", - " 'inside dream',\n", - " 'the voice heals me',\n", - " 'urusare zaru mono ni hizamazuite ita',\n", - " 'suna o kamu zibun ga ita',\n", - " 'urusarzaru mono ni obiete ita kara',\n", - " 'kyouki to kyouhu ni hurueru',\n", - " 'ahure dashita muti no saru dore o mite mo onazi kao',\n", - " 'teashi o mo gareta tidaruma ni ......',\n", - " 'teashi o mo gareta tidaruma o ......',\n", - " '*say oh-oh, let me blow',\n", - " 'mawaru mawaru mira-bo-ru',\n", - " 'kuru? konai ka wa kimi shidai',\n", - " 'say oh-oh, let me show',\n", - " \"furasshu abi shootin' pose\",\n", - " 'choose it, crazy, sexy, kawaii?',\n", - " 'girl in the mirror',\n", - " 'kagami no naka wa fushigi na sekai',\n", - " 'nan ni demo henshin dekiru no',\n", - " 'itsumo no jibun yori mo daitan',\n", - " 'mitsukete yo honmono no watashi',\n", - " 'bad girl...actress...super model?',\n", - " 'whatever you want',\n", - " '**say oh-oh, make me glow',\n", - " 'kira-chun hade ni roll',\n", - " 'noru? noranai wa kimi shidai',\n", - " 'say oh-oh, make it hot',\n", - " 'agatte yuku kodou',\n", - " \"feelin' so good, we got no limit\",\n", - " 'girl in the mirror',\n", - " 'kagami no naka ni hanashikakeru no',\n", - " 'kyou no watashi wa donna kibun?',\n", - " 'tokidoki chotto wakannaku naru',\n", - " 'mou hitori no watashi ga hohoemu',\n", - " 'rock star...sniper...celebrities?',\n", - " 'whatever you want',\n", - " 'repeat *',\n", - " 'dare datte kagami no mae egao tsukuru no wa',\n", - " 'misetakunai kanjou',\n", - " 'tojikomeru tame nan ja nai?',\n", - " 'talk to myself',\n", - " 'repeat **',\n", - " 'repeat *',\n", - " 'from coast to coast, north to south',\n", - " \"i've gotta keep moving to see what is going on\",\n", - " 'hitori de arukitai no ima wa',\n", - " 'coast to coast, east to west',\n", - " \"i've gotta keep moving to be who i really want to be\",\n", - " 'dare ni mo tayorenai no ima wa',\n", - " 'kido airaku ga aimai sonna nichijou ni akite',\n", - " 'kaaten wo aketa totan kokoro no koe wo kiita',\n", - " 'hontou wa ima ni mo kowarete shimaisou',\n", - " 'anata ni yasashiku naritai kara koso',\n", - " 'jibun wo migaki ni iku no',\n", - " 'dakara let me go for now, for now',\n", - " 'from coast to coast, north to south',\n", - " \"i've gotta keep moving to see what is going on\",\n", - " 'hitori de kangaetai no ima wa',\n", - " 'coast to coast, east to west',\n", - " \"i've gotta keep moving to be who i really want to be\",\n", - " 'jibun wo sagashitai no ima wa',\n", - " 'dare mo kare mo ga ai de umarete wa kesarete',\n", - " 'kaaten wo tojita totan kokoro no ana ni ochita',\n", - " 'hontou wa anata ni yorikakatte itai no',\n", - " 'kawaru anata wo miokuttari son na yakumawari',\n", - " 'chotto bouken shitai dake',\n", - " 'anata nashi de korondemo anata nashi de tatanakucha',\n", - " \"don't ask me why for now, for now\",\n", - " 'from coast to coast, north to south',\n", - " \"i've gotta keep moving to see what is going on\",\n", - " 'hitori de arukitai no ima wa',\n", - " 'coast to coast, east to west',\n", - " \"i've gotta keep moving to be who i really want to be\",\n", - " 'dare ni mo tayorenai no ima wa',\n", - " 'from coast to coast, north to south',\n", - " \"i've gotta keep moving to see what is going on\",\n", - " 'hitori de kangaetai no ima wa',\n", - " 'coast to coast, east to west',\n", - " \"i've gotta keep moving to be who i really want to be\",\n", - " 'jibun wo sagashitai no ima wa',\n", - " 'one day anata ga ireba to koukai mo suru deshou',\n", - " 'suna wo kamu you na omoi',\n", - " 'one day anata no kureta kotoba ni nagasu namida de',\n", - " 'kajikanda te wo atatameru wa',\n", - " 'corocodo',\n", - " 'corocodocodo',\n", - " 'cerecedeng',\n", - " 'cerecedegedeng',\n", - " 'cisaingeng',\n", - " 'cisaingengeng',\n", - " 'cirikidzing',\n", - " 'cirikidzkidzing',\n", - " 'corocodo',\n", - " 'corocodocodo',\n", - " 'cerecedeng',\n", - " 'cerecedegedeng',\n", - " 'cisaingeng',\n", - " 'cisaidengeng',\n", - " 'cirikidzkidzing',\n", - " 'corocodo',\n", - " 'corocodocodo',\n", - " 'cerecedeng',\n", - " 'cerecedegedeng',\n", - " 'cisaingeng',\n", - " 'cisaingengeng',\n", - " 'cirikidzing',\n", - " 'cirikidzkidzing',\n", - " 'corocodo',\n", - " 'corocodocodo',\n", - " 'cerecedeng',\n", - " 'cerecedegedeng',\n", - " 'cisaingeng',\n", - " 'cisaidengeng',\n", - " 'cirikidzing',\n", - " 'corocodo',\n", - " 'corocodocodo',\n", - " 'cerecedeng',\n", - " 'cerecedegedeng',\n", - " 'cisaingeng',\n", - " 'cisaingengeng',\n", - " 'cirikidzing',\n", - " 'cirikidzkidzing',\n", - " 'corocodo',\n", - " 'corocodocodo',\n", - " 'cerecedeng',\n", - " 'cerecedegedeng',\n", - " 'cisaingeng',\n", - " 'cisaidengeng',\n", - " 'cirikidzing',\n", - " 'jū o motsu shōnen sakebu',\n", - " 'no way , no way , no way , leave me alone',\n", - " 'sotto dakishime te tsubuyaku',\n", - " 'no need to worry, baby...',\n", - " 'moeru sora yakeru kokyō ( machi )',\n", - " \"we don't know “why”\",\n", - " 'yōsha naku tsubusare te ku my heart',\n", - " 'always my wish is only one, “ just want to see your smile”',\n", - " 'just do it! go there to be alive',\n", - " 'fujōri na kanashimi o koe te yuke',\n", - " 'kotae o motome te',\n", - " 'just do it! go there to be alive',\n", - " 'arehate ta daichi ni saku hana wa',\n", - " 'kimi daro u ka',\n", - " 'boku daro u ka',\n", - " \"stop killing now! c'mon! that ‘ s enough!\",\n", - " \"why don't you see the flowers with her smile?\",\n", - " 'gotta stop killing now! c‘mon! that‘s enough!',\n", - " 'why don‘t you see the flowers with her smile? ah ah',\n", - " 'pan o motsu shōjo hohoemu',\n", - " 'okay, okay, okay, how can i say...',\n", - " 'kitsuku kuchibiru kamishime te',\n", - " 'no need to change, baby',\n", - " 'ubaiau sono hate de will we get the love?',\n", - " 'rikutsu ( rojikku ) ni kowasare te ku my mind',\n", - " 'always my wish is only one, “ just want to save your dream”',\n", - " 'todoke kono negai yo',\n", - " 'tachikire nai kanashimi o koe te yuke',\n", - " 'kotae o motome te',\n", - " 'ano sai ta hana wa',\n", - " 'dare no “yume” “kibō” datta no daro u',\n", - " 'kimi daro u ka',\n", - " 'boku daro u ka',\n", - " 'just do it! go there to be alive',\n", - " 'fujōri na kanashimi o koe te yuke',\n", - " 'kotae o motome te',\n", - " 'just do it! go there to be alive',\n", - " 'arehate ta daichi ni saku hana wa',\n", - " 'kimi daro u ka',\n", - " 'boku daro u ka',\n", - " \"stop killing now! c'mon! that ‘ s enough!\",\n", - " \"why don't you see the flowers with her smile?\",\n", - " 'gotta stop killing now! c‘mon! that‘s enough!',\n", - " 'why don‘t you see the flowers with her smile? ah ah',\n", - " 'beri aku kesempatan untuk bisa merindukanmu',\n", - " 'jangan datang terus',\n", - " 'beri juga aku ruang bebas dan sendiri',\n", - " 'jangan ada terus',\n", - " 'aku butuh tahu seberapa kubutuh kamu',\n", - " 'percayalah rindu itu baik untuk kita',\n", - " 'pagi melihatmu menjelang siang kau tahu',\n", - " 'aku ada di mana sore nanti',\n", - " 'tak pernah sekali pun ada malam yang dingin',\n", - " 'hingga aku lupa rasanya sepi',\n", - " 'tak lagi sepi bisa kuhargai',\n", - " 'baik buruk perubahanku tak akan kau sadari',\n", - " 'kita berevolusi',\n", - " 'bila kita ingin tahu seberapa besar rasa yang kita punya',\n", - " 'kita butuh ruang',\n", - " 'pagi melihatmu menjelang siang kau tahu',\n", - " 'aku ada di mana sore nanti',\n", - " 'tak pernah sekali pun ada malam yang dingin',\n", - " 'hingga aku lupa rasanya sepi',\n", - " 'tak lagi sepi bisa kuhargai',\n", - " 'kita tetap butuh ruang sendiri-sendiri',\n", - " 'untuk tetap menghargai rasanya sepi',\n", - " 'pagi melihatmu menjelang siang kau tahu',\n", - " 'aku ada di mana sore nanti',\n", - " 'tak pernah sekali pun ada malam yang dingin',\n", - " 'hingga aku lupa rasanya sepi',\n", - " 'tak lagi sepi bisa kuhargai',\n", - " 'tak lagi sepi bisa kuhargai',\n", - " 'english',\n", - " 'give me a chance to miss you',\n", - " \"don't always come\",\n", - " 'give me a free space to be alone',\n", - " \"don't always be here\",\n", - " 'i need to know how much i need you',\n", - " 'trust me, yearning is good for us',\n", - " 'in the morning i see you, as noon come you know',\n", - " 'where will i be in the evening',\n", - " \"never once there's a cold night\",\n", - " 'and now i forget how solitude feels like',\n", - " \"i can't appreciate solitude anymore\",\n", - " 'good or bad my changes are, you will not notice',\n", - " 'we evolute',\n", - " 'if we want to know how deep our feelings are',\n", - " 'we need space',\n", - " 'in the morning i see you, as noon come you know',\n", - " 'where will i be in the evening',\n", - " \"never once there's a cold night\",\n", - " 'and now i forget how solitude feels like',\n", - " \"i can't appreciate solitude anymore\",\n", - " 'we still need each of our own space',\n", - " 'to keep appreciating how solitude feels like',\n", - " 'in the morning i see you, as noon come you know',\n", - " 'where will i be in the evening',\n", - " \"never once there's a cold night\",\n", - " 'and now i forget how solitude feels like',\n", - " \"i can't appreciate solitude anymore\",\n", - " \"i can't appreciate solitude anymore\",\n", - " 'kata-kata dari mulutmu memang berbahaya',\n", - " 'kau permainkan oh hatiku dengan berbagai cara',\n", - " 'mata, bibirmu sentuhku sampai ku tak bersuara',\n", - " 'lihat arogansimu, ku malah lemah tak berdaya',\n", - " 'kau pikirku mudah bagimu',\n", - " 'namun bersamamu tabu bagiku',\n", - " 'now baby boy listen to me, boy show me',\n", - " \"how you're gonna get me paralyzed\",\n", - " 'this is me now tell me',\n", - " \"when you're gonna get me paralyzed\",\n", - " 'this is me boy get me',\n", - " \"how you're gonna get me paralyzed\",\n", - " 'imma let you slide',\n", - " 'cuz i wont lie',\n", - " 'i want you to get me paralyzed',\n", - " \"how you're gonna get me paralyzed\",\n", - " \"when you're gonna get me paralyzed\",\n", - " \"how you're gonna get me paralyzed\",\n", - " 'are you gonna get me paralyzed',\n", - " 'oh kau bawa aku lagi sampai ku hampir mati',\n", - " 'caramu kagumiku, kau kejar aku sampai mati',\n", - " 'memang ku kagumimu dari atas sampai hati',\n", - " 'tak perlu ku ragu, dari hati sampai kaki',\n", - " 'kau pikirku mudah bagimu',\n", - " 'namun bersamamu tabu bagiku',\n", - " 'now baby boy listen to me, boy show me',\n", - " \"how you're gonna get me paralyzed\",\n", - " 'this is me now tell me',\n", - " \"when you're gonna get me paralyzed\",\n", - " 'this is me boy get me',\n", - " \"how you're gonna get me paralyzed\",\n", - " 'imma let you slide',\n", - " 'cuz i wont lie',\n", - " 'i want you to get me paralyzed',\n", - " \"how you're gonna get me paralyzed\",\n", - " \"when you're gonna get me paralyzed\",\n", - " \"how you're gonna get me paralyzed\",\n", - " 'are you gonna get me paralyzed',\n", - " \"how you're gonna get me paralyzed\",\n", - " \"how you're gonna get me paralyzed\",\n", - " \"how you're gonna get me paralyzed\",\n", - " 'now baby boy listen to me, boy show me',\n", - " \"how you're gonna get me paralyzed\",\n", - " 'this is me now tell me',\n", - " \"when you're gonna get me paralyzed\",\n", - " 'this is me boy get me',\n", - " \"how you're gonna get me paralyzed\",\n", - " 'imma let you slide',\n", - " 'cuz i wont lie',\n", - " 'i want you to get me paralyzed',\n", - " \"how you're gonna get me paralyzed\",\n", - " \"when you're gonna get me paralyzed\",\n", - " \"how you're gonna get me paralyzed\",\n", - " 'are you gonna get me paralyzed',\n", - " 'semalam i call you, you tak answer',\n", - " 'you kata you keluar pergi dinner',\n", - " 'you kata you keluar dengan kawan you',\n", - " \"but when i called tommy he said it wasn't true\",\n", - " 'so i drove my car pergi damansara',\n", - " 'tommy kata maybe you tengok bola',\n", - " 'tapi bila i sampai, you tak ada',\n", - " 'lagilah i jadi gila!',\n", - " 'so i called and called sampai you answer',\n", - " \"you kata, 'sorry, sayang. tadi tak dengar\",\n", - " 'my phone was on silent, i was at the gym.\"',\n", - " 'tapi latar belakang suara perempuan lain',\n", - " \"sudahlah, sayang, i don't believe you\",\n", - " \"i've always known that your words were never true\",\n", - " 'why am i with you? i pun tak tahu',\n", - " 'no wonderlah my friends pun tak suka',\n", - " \"so i guess that's the end of our story\",\n", - " 'akhir kata she accepted his apology',\n", - " 'tapi last-last kita dapat tahu she was cheating too',\n", - " \"with her ex-boyfriend's best friend...\",\n", - " 'tommy',\n", - " \"t'lah kucoba melupakanmu\",\n", - " 'namun bayangmu terus menggangguku',\n", - " 'ingin ku lari dari kenyataan',\n", - " 'yang selalu saja meresahkanku',\n", - " 'adakah cara tuk hilang darimu',\n", - " 'karna ku tahu kau bukan milikku',\n", - " 'ingin ku lari dari kenyataan',\n", - " 'yang selalu saja meresahkanku',\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " \"i don't know what to do yeah\",\n", - " 'adakah cara tuk hilang darimu',\n", - " 'karna ku tahu kau bukan milikku',\n", - " 'ingin ku lari dari kenyataan',\n", - " 'yang selalu saja meresahkanku',\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " \"i don't know what to do yeah\",\n", - " \"don't you know that evеrytime\",\n", - " 'i see your smile',\n", - " \"therе's a part of me\",\n", - " \"i can't deny\",\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " \"i don't know what to do yeah\",\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " 'everytime i see you smile, laugh and cry',\n", - " \"i can't get you out of my mind girl\",\n", - " \"i don't know what to do yeah\",\n", - " 'tubuh saling bersandar',\n", - " 'ke arah mata angin berbeda',\n", - " 'kau menunggu datangnya malam',\n", - " 'saat ku menanti fajar',\n", - " 'sudah coba berbagai cara',\n", - " 'agar kita tetap bersama',\n", - " 'yang tersisa dari kisah ini',\n", - " 'hanya kau takut kuhilang',\n", - " 'perdebatan apapun menuju kata pisah',\n", - " 'jangan paksakan genggamanmu',\n", - " 'izinkan aku pergi dulu',\n", - " 'yang berubah hanya',\n", - " 'tak lagi kumilikmu',\n", - " 'kau masih bisa melihatku',\n", - " 'kau harus percaya',\n", - " 'kutetap teman baikmu',\n", - " 'sudah coba berbagai cara',\n", - " 'agar kita tetap bersama',\n", - " 'yang tersisa dari kisah ini',\n", - " 'hanya kau takut kuhilang',\n", - " 'perdebatan apapun menuju kata pisah',\n", - " 'jangan paksakan genggamanmu',\n", - " 'yang berubah hanya',\n", - " 'tak lagi kumilikmu',\n", - " 'kau harus percaya',\n", - " 'kutetap teman baikmu',\n", - " 'izinkan aku pergi dulu',\n", - " 'yang berubah hanya',\n", - " 'tak lagi kumilikmu',\n", - " 'kau masih bisa melihatku',\n", - " 'kau harus percaya',\n", - " 'kutetap teman baikmu',\n", - " 'english',\n", - " 'each of us is inclined',\n", - " 'to different cardinal directions',\n", - " 'you are expecting night to come',\n", - " 'while i am waiting for dawn',\n", - " 'we have tried every ways',\n", - " 'for us to stay together',\n", - " 'what is left from this story is',\n", - " 'your apprehensiveness of me disappearing',\n", - " \"whatever the disputation, is leading to the word 'separation'\",\n", - " \"don't force your hold\",\n", - " 'let me go first',\n", - " 'what will change is only',\n", - " \"that i'm not yours anymore\",\n", - " 'you still can see me',\n", - " 'you must believe',\n", - " \"i'm still your good friend\",\n", - " 'we have tried every ways',\n", - " 'for us to stay together',\n", - " 'what is left from this story is',\n", - " 'your apprehensiveness of me disappearing',\n", - " \"whatever the disputation, is leading to the word 'separation'\",\n", - " \"don't force your hold\",\n", - " 'you must believe',\n", - " \"i'm still your good friend\",\n", - " 'let me go first',\n", - " 'what will change is only',\n", - " \"that i'm not yours anymore\",\n", - " 'you still can see me',\n", - " 'you must believe',\n", - " \"i'm still your good friend\",\n", - " 'ku tuliskan kenangan tentang',\n", - " 'caraku menemukan dirimu',\n", - " 'tentang apa yang membuatku mudah',\n", - " 'berikan hatiku padamu',\n", - " 'takkan habis sejuta lagu',\n", - " 'untuk menceritakan cantikmu',\n", - " \"'kan teramat panjang puisi\",\n", - " \"'tuk menyuratkan cinta ini\",\n", - " 'telah habis sudah cinta ini',\n", - " 'tak lagi tersisa untuk dunia',\n", - " 'karena telah ku habiskan',\n", - " 'sisa cintaku hanya untukmu',\n", - " 'aku pernah berpikir tentang',\n", - " 'hidupku tanpa ada dirimu',\n", - " 'dapatkah lebih indah dari',\n", - " 'yang ku jalani sampai kini',\n", - " 'aku selalu bermimpi tentang',\n", - " 'indah hari tua bersamamu',\n", - " 'tetap cantik rambut panjangmu',\n", - " 'meskipun nanti tak hitam lagi',\n", - " 'bila habis sudah waktu ini',\n", - " 'tak lagi berpijak pada dunia',\n", - " 'telah aku habiskan sisa hidupku',\n", - " 'hanya untukmu',\n", - " 'dan telah habis sudah cinta ini',\n", - " 'tak lagi tersisa untuk dunia',\n", - " 'karena telah ku habiskan sisa cintaku',\n", - " 'hanya untukmu',\n", - " 'untukmu',\n", - " 'hidup dan matiku..',\n", - " 'bila musim berganti',\n", - " 'sampai waktu terhenti',\n", - " 'walau dunia membenci',\n", - " 'ku kan tetap di sini',\n", - " 'bila habis sudah waktu ini',\n", - " 'tak lagi berpijak pada dunia',\n", - " 'telah aku habiskan sisa hidupku',\n", - " 'hanya untukmu',\n", - " 'telah habis sudah cinta ini',\n", - " 'tak lagi tersisa untuk dunia',\n", - " 'karena telah ku habiskan sisa cintaku',\n", - " 'hanya untukmu',\n", - " 'karena telah ku habiskan sisa cintaku',\n", - " 'hanya untukmu',\n", - " 'i wrote about memories',\n", - " 'on how i found you',\n", - " 'about what made it easy',\n", - " 'giving you my heart',\n", - " \"a million songs, won't be enough\",\n", - " 'to tell the story about your beauty',\n", - " 'this poem will extremely long',\n", - " 'to tell about this love',\n", - " 'this love runs out already',\n", - " 'no longer left for the world',\n", - " 'because i have spent the rest of my love',\n", - " 'only for you',\n", - " 'i ever thought about',\n", - " 'how my life would be without you',\n", - " 'could it be more beautiful',\n", - " 'then i had lived until now?',\n", - " 'i always dream about',\n", - " 'how fine the old days with you',\n", - " 'your long hair still remains beautiful',\n", - " \"although it won't stay black\",\n", - " 'if the time runs out already',\n", - " 'no longer rests to the world',\n", - " 'i have spent the rest of my life',\n", - " 'just for you',\n", - " 'if this love runs out already',\n", - " 'no longer left to the world',\n", - " 'because i have spent the rest of my love',\n", - " 'only for you',\n", - " 'for you...',\n", - " 'my life, and my death',\n", - " 'when the seasons changed',\n", - " 'until the time stops',\n", - " 'even though the world hates',\n", - " 'i will stay, right here',\n", - " 'when the time runs out already',\n", - " 'no longer rests on the world',\n", - " 'because i have spent the rest of my love',\n", - " 'only for you',\n", - " 'this love runs out already',\n", - " 'no longer left for the world',\n", - " 'because i have spent the rest of my love',\n", - " 'only for you',\n", - " 'because i have spent the rest of my love',\n", - " 'only for you',\n", - " 'kanji',\n", - " 'oh ready or not',\n", - " 'show の幕開け',\n", - " 'are you ready or not',\n", - " '乗り込んで行け レッドゾーン',\n", - " 'just go 曝け出せ本性',\n", - " 'ready or not',\n", - " 'yes or no じゃママゴト 俺ならpunkしてる',\n", - " 'keep going life は do or die',\n", - " '選んだ道なら 逃げず 信じて貫けよ',\n", - " 'it.s your choice yup',\n", - " '“今を超えるため 問いかけろ 過去の自分へ”',\n", - " '先駆者の言葉に感謝 uh',\n", - " 'are you ready or not',\n", - " '準備できたなら その拳掲げろ',\n", - " 'like mike tyson wow',\n", - " '恐れないで この手をとってよ (とってよ)',\n", - " '心配はいらないから just let it go (let it go)',\n", - " 'きっと世界中、誰も',\n", - " '完璧な人生じゃないから',\n", - " '今の君を信じて',\n", - " 'oh ready or not',\n", - " 'show の幕開け',\n", - " 'are you ready or not',\n", - " '乗り込んで行け レッドゾーン',\n", - " 'just go 曝け出せ本性',\n", - " 'ready or not',\n", - " 'impossible',\n", - " '不可能など 俺にはないな i.m possible',\n", - " 'marathon',\n", - " '片道切符 1秒後もすでに過去',\n", - " '人生というドラマ 主人公じゃなきゃ',\n", - " 'やりたいことをやって 毎日がbirthday',\n", - " '魂は絶えず燃え 輝き続けて朽ちないさ',\n", - " '恐れないで この手をとってよ (とってよ)',\n", - " '心配はいらないから just let it go (let it go)',\n", - " '答えなんて出ないよ',\n", - " '何度転んでも立ち上がれば',\n", - " 'いつか光が差して',\n", - " 'oh ready or not',\n", - " 'show の幕開け',\n", - " 'are you ready or not',\n", - " '乗り込んで行け レッドゾーン',\n", - " 'just go 曝け出せ本性',\n", - " 'ready or not',\n", - " '未来は誰もわからない winding road',\n", - " '本能を信じて進むのさ',\n", - " '振り返るにはまだ少し早すぎるから',\n", - " 'oh you don’t need to worry',\n", - " 'oh ready or not',\n", - " 'show の幕開け',\n", - " 'are you ready or not',\n", - " '乗り込んで行け レッドゾーン',\n", - " 'just go 曝け出せ本性',\n", - " 'ready or not',\n", - " 'romaji',\n", - " 'oh ready or not',\n", - " 'show no makuake',\n", - " 'are you ready or not',\n", - " 'norikon de ike reddo zōn',\n", - " 'just go taku ke dase honshō',\n", - " 'ready or not',\n", - " 'yes or no ja mamagoto ore nara punk shiteru',\n", - " 'keep going life wa do or die',\n", - " 'eran da michi nara nige zu shinji te tsuranukeyo',\n", - " 'it . s your choice yup',\n", - " '“ima o koeru tame toikakero kako no jibun e”',\n", - " 'senku sha no kotoba ni kansha uh',\n", - " 'are you ready or not',\n", - " 'junbi deki ta nara sono kobushi kakagero',\n", - " 'like mike tyson wow',\n", - " 'osore nai de kono te o totte yo (totte yo)',\n", - " 'shinpai wa ira nai kara just let it go (let it go)',\n", - " 'kitto sekaijū, dare mo',\n", - " 'kanpeki na jinsei ja nai kara',\n", - " 'ima no kimi o shinji te',\n", - " 'oh ready or not',\n", - " 'show no makuake',\n", - " 'are you ready or not',\n", - " 'norikon de ike reddo zōn',\n", - " 'just go taku ke dase honshō',\n", - " 'ready or not',\n", - " 'impossible',\n", - " 'fukanō nado ore ni wa nai na i . m possible',\n", - " 'marathon',\n", - " 'katamichi kippu 1 byō go mo sudeni kako',\n", - " 'jinsei toyuu dorama shujinkō ja nakya',\n", - " 'yari tai koto o yatte mainichi ga birthday',\n", - " 'tamashī wa taezu moe kagayakitsuzuke te kuchi nai sa',\n", - " 'osore nai de kono te o totte yo (totte yo)',\n", - " 'shinpai wa ira nai kara just let it go ( let it go)',\n", - " 'kotae nante de nai yo',\n", - " 'nan do koron de mo tachiagare ba',\n", - " 'itsuka hikari ga sashi te',\n", - " 'oh ready or not',\n", - " 'show no makuake',\n", - " 'are you ready or not',\n", - " 'norikon de ike reddo zōn',\n", - " 'just go taku ke dase honshō',\n", - " 'ready or not',\n", - " 'mirai wa dare mo wakara nai winding road',\n", - " 'honnō o shinji te susumu no sa',\n", - " 'furikaeru ni wa mada sukoshi haya sugiru kara',\n", - " 'oh you don ‘ t need to worry',\n", - " 'oh ready or not',\n", - " 'show no makuake',\n", - " 'are you ready or not',\n", - " 'norikon de ike reddo zōn',\n", - " 'just go taku ke dase honshō',\n", - " 'ready or not',\n", - " '20th century ato chotto de',\n", - " 'hi ga kureru hyakunenkan no nagakatta',\n", - " 'sono chotto dake saigo no yonen de',\n", - " ...]},\n", - " 'data': ['oh, yep',\n", - " 'j-flow right here',\n", - " 'vidi, drop the voice, come on',\n", - " 'oh, tiada yang hebat dan mempesona',\n", - " 'ketika kau lewat di hadapanku',\n", - " 'biasa saja',\n", - " 'waktu perkenalan lewatlah sudah',\n", - " 'ada yang menarik pancaran diri',\n", - " 'terus mengganggu',\n", - " 'mendengar cerita sehari-hari',\n", - " 'yang wajar tapi tetap mengasyikkan',\n", - " 'kini terasa sungguh',\n", - " 'semakin engkau jauh',\n", - " 'semakin terasa dekat',\n", - " 'akan kukembangkan',\n", - " 'kasih yang kau tanam',\n", - " 'di dalam hatiku',\n", - " 'right here baby',\n", - " 'break it down, break it down',\n", - " 'vidi, come on, oh',\n", - " 'oh, tiada kejutan pesona diri',\n", - " 'pertama kujabat jemari tanganmu',\n", - " 'biasa saja',\n", - " 'masa pertalian terjalin sudah',\n", - " 'ada yang menarik bayang-bayangmu',\n", - " 'tak mau pergi',\n", - " 'dirimu nuansa-nuansa ilham',\n", - " 'hamparan laut tiada bertepi',\n", - " 'kini terasa sungguh',\n", - " 'semakin engkau jauh',\n", - " 'semakin terasa dekat',\n", - " 'akan kukembangkan',\n", - " 'kasih yang kau tanam',\n", - " 'di dalam hatiku',\n", - " 'ah, ah, you know, the further that you go',\n", - " 'the close that it feels',\n", - " 'the feeling that you show, is that how heaven feels',\n", - " 'seconds gone by, minute after minute',\n", - " 'i was too shy, my words',\n", - " 'words have been deleted',\n", - " 'ku terdiam dan hanya bisa bla bla bla',\n", - " 'like a shooting star, i',\n", - " 'make a wish like la la la',\n", - " 'my pressure is gone',\n", - " 'my treasure is found',\n", - " 'my baby girl you really',\n", - " 'make my world can go around',\n", - " 'menatap nuansa, (aha) nuansa bening',\n", - " 'break it down v',\n", - " 'jelasnya doa bercinta',\n", - " 'sing for the ladies come on',\n", - " 'kini terasa sungguh',\n", - " 'semakin engkau jauh',\n", - " 'semakin terasa dekat',\n", - " 'just the far as we go, just the closer that we feel',\n", - " 'akan kukembangkan',\n", - " 'kasih yang kau tanam',\n", - " 'right here in my heart, right here in my mind',\n", - " 'di dalam hatiku',\n", - " 'kini terasa sungguh',\n", - " 'semakin engkau jauh',\n", - " 'semakin terasa dekat',\n", - " 'akan kukembangkan',\n", - " 'kasih yang kau tanam',\n", - " 'di dalam hatiku',\n", - " 'right here, baby',\n", - " 'right here, baby',\n", - " 'vidi come, on',\n", - " 'kini terasa sungguh',\n", - " 'come on boy',\n", - " 'break it down, break it down',\n", - " 'come on',\n", - " 'kini terasa sungguh',\n", - " 'j-flow right here',\n", - " 'desperate girl',\n", - " 'kanashimi iro no sora derision madoromu glass mado wa twilight',\n", - " 'furishikiru ame no naka overnight',\n", - " 'kurushi magire ni sakebu silent boyaketa shikai dake ga pleasure',\n", - " 'koe wo age nakijakuru oh mad girl',\n", - " 'kurui dashita shisen chi wo nagasu hitomi no misery',\n", - " 'yumemite ina yo itsumo dead time kono te wo nigirishime without',\n", - " 'you',\n", - " 'kono mama jafutaritomo crumble down',\n", - " 'musaboru karada yoru wo make up kake hiki darake konna love game',\n", - " 'itsu no aida ni kawari hate oh mad girl',\n", - " 'kurui dashita shisen chi wo nagasu hitomi wa misery',\n", - " 'midare sugita kioku doko kara ka tsumahajiku melody',\n", - " 'only lonely my girl mitsumete ageru',\n", - " 'itsuwaru sono mune kiekaketara',\n", - " 'only lonely my girl nemure nu yoru wa',\n", - " 'suteki wo matoi moeagareyo',\n", - " 'kurui dashita shisen chi wo nagasu hitomi wa misery',\n", - " 'midare sugita kioku doko kara ka tsumahajiku melody',\n", - " 'only lonely my girl mitsumete ageru',\n", - " 'itsuwaru sono mune kiekaketara',\n", - " 'only lonely my girl nemure nu yoru wa',\n", - " 'suteki wo matoi moeagareyo',\n", - " 'only lonely my girl mitsumete ageru',\n", - " 'itsuwaru sono mune kiekaketara',\n", - " 'only lonely my girl nemure nu yoru wa',\n", - " \"suteki wo matoi i'm just loving you\",\n", - " 'der yek goshe in donya ma oftadim mesle do barg',\n", - " 'der ye jangale bozorg va bivafa',\n", - " 'faghad man o to, faghad mah faghad, man o to, faghad mah dotah',\n", - " 'sheshmata vaz kon, (manaaa) mana negah kon',\n", - " 'sheshmata vaz kon, mano negah kon',\n", - " 'ghalbe manam mesle khodet gom shodeh',\n", - " 'na injast o na onja keh bozorg shodeh',\n", - " 'bego be man be man bego, koja beram',\n", - " 'bego be man kojast, khoneje man',\n", - " 'bego be man be man bego, koja beram',\n", - " 'bego be man kojast khoneje man',\n", - " 'shajad poshteh setahreha ghajem shode',\n", - " 'na injast o na onja ke bozorg shodeh',\n", - " 'na injast o na onja keh bozorg shodeh',\n", - " 'sheshmata vaz kon, (manaaa) mana negah kon',\n", - " 'sheshmata vaz kon, mano negah kon',\n", - " 'kojast khoneje man, haminjahst vakhti pishe to hast',\n", - " 'kusadari apa maumu',\n", - " 'saat kau memujaku',\n", - " 'cobaiku saja tapi diriku tak bodoh',\n", - " 'godai hatiku, ku takkan melihatmu',\n", - " 'diamkan diriku, ku kan lari mengejarmu',\n", - " 'ooh.. ooh.. irama dan musikku',\n", - " 'ooh.. ooh.. mulai merasukmu',\n", - " 'ooh.. ooh.. tak perlu kamu gundah',\n", - " 'ooh.. ooh.. siap! jangan lengah',\n", - " 'shake it off, shake it off',\n", - " 'buat iramaku',\n", - " 'shake it off, shake it off',\n", - " 'jadi ekstasimu',\n", - " 'shake it off, shake it off',\n", - " 'ikuti aku',\n", - " 'shake it off, shake it off',\n", - " 'everyone now shake it off',\n", - " 'shake it off, shake it off',\n", - " 'shake it off, shake it off',\n", - " 'shake it off, shake it off',\n", - " 'shake',\n", - " 'i see your sexy body want me to the floor and let it go',\n", - " \"your lips don't say a word but your eyes saying let it flow, ow ow\",\n", - " 'naughty that i will be, seize your mind and let it blow',\n", - " \"you can't handle it cause now\",\n", - " \"i'm in my tight jean's pretty low, ow ow\",\n", - " 'ooh.. ooh.. i want you on the front row',\n", - " \"ooh.. ooh.. cuz i'm about to show\",\n", - " \"ooh.. ooh.. boy you behave and don't\",\n", - " 'ooh.. ooh.. shut up! my turn to move',\n", - " 'shake it off, shake it off',\n", - " 'i wanna dance with you',\n", - " 'shake it off, shake it off',\n", - " 'i wanna fly with you',\n", - " 'shake it off, shake it off',\n", - " 'wanna move with you',\n", - " 'shake it off, shake it off',\n", - " 'everyone now shake it off',\n", - " 'shake it off, shake it off',\n", - " 'shake it off, shake it off',\n", - " 'shake it off, shake it off',\n", - " 'shake',\n", - " 'shake it off, shake it off',\n", - " 'shake it off, shake it off',\n", - " 'shake it off, shake it off',\n", - " 'shake',\n", - " 'shake, shake, shake it off, shake',\n", - " 'shake, shake, shake it off, shake',\n", - " 'shake, shake, shake it off, shake',\n", - " 'shake, shake, shake it off, shake',\n", - " '(sexy body want me to the floor and let it go)',\n", - " \"(your lips don't say a word, saying let it flow)\",\n", - " 'shake it off, shake it off',\n", - " 'buat iramaku',\n", - " 'shake it off, shake it off',\n", - " 'jadi ekstasimu',\n", - " 'shake it off, shake it off',\n", - " 'ikuti aku',\n", - " 'shake it off, shake it off',\n", - " 'everyone now shake it off',\n", - " 'shake it off, shake it off',\n", - " 'i wanna dance with you',\n", - " 'shake it off, shake it off',\n", - " 'i wanna fly with you',\n", - " 'shake it off, shake it off',\n", - " 'wanna move with you',\n", - " 'shake it off, shake it off',\n", - " 'everyone now shake it off',\n", - " 'shake it off, shake it off',\n", - " 'buat iramaku',\n", - " 'shake it off, shake it off',\n", - " 'jadi ekstasimu',\n", - " 'shake it off, shake it off',\n", - " 'ikuti aku',\n", - " 'shake it off, shake it off',\n", - " 'everyone now shake it off',\n", - " '(sexy body want me to the floor and let it go)',\n", - " 'i wanna dance with you',\n", - " \"(your lips don't say a word, saying let it flow)\",\n", - " 'i wanna fly with you',\n", - " '(sexy body want me to the floor and let it go)',\n", - " 'wanna move with you',\n", - " \"(your lips don't say a word, saying let it flow)\",\n", - " 'everyone now shake it off',\n", - " '(sexy body want me to the floor and let it go)',\n", - " 'i wanna dance with you',\n", - " \"(your lips don't say a word, saying let it flow)\",\n", - " 'i wanna fly with you',\n", - " '(sexy body want me to the floor and let it go)',\n", - " 'wanna move with you',\n", - " \"(your lips don't say a word, saying let it flow)\",\n", - " 'raise your flag , the only one',\n", - " \"don't look back! you don't let me down\",\n", - " 'rushing out to rising sun',\n", - " 'nothing but the heart or crown',\n", - " 'raise your flag , the only one',\n", - " \"don't look back! you don't let me down\",\n", - " 'rushing out to rising sun',\n", - " 'nothing but the heart or crown',\n", - " 'itsuka no one two step odotte i ta',\n", - " 'on & on de yurashi te',\n", - " 'two-five-one de narashi te',\n", - " \"dondon tōku hirogatte you're the one\",\n", - " '(raise your flag , the only one',\n", - " \"don't look back! you don't let me down\",\n", - " 'rushing out to rising sun',\n", - " 'nothing but the heart or crown)',\n", - " 'kimi wa itsu datte koe o karashi te',\n", - " 'waratte nai te utatte',\n", - " 'one by one de kizan de',\n", - " 'yūkan de i tai to negau',\n", - " 'sōzō ijō ni igan da sekai datta toshite',\n", - " 'starting over mukō e',\n", - " 'kakage ta te o orosa nai de',\n", - " 'namida wa shimatte oi te',\n", - " 'takaraka ni koe age te ii yo',\n", - " 'kimi dake no hata furikazashi te',\n", - " 'ashita o osore nai de',\n", - " 'kawara nai ashidori o you keep on',\n", - " 'utae... (raise your flag , the only one)',\n", - " \"susume... (don't look back! you don't let me down)\",\n", - " 'todoke... (rushing out to rising sun)',\n", - " \"you're the one (nothing but the heart or crown)\",\n", - " '(raise your flag , the only one',\n", - " \"don't look back! you don't let me down)\",\n", - " 'kimi wa itsu datte mune o kogashi te',\n", - " 'amaku te chotto nigaku te',\n", - " 'kyōshitsu no soto ni mukatte',\n", - " 'dondon sore wa fukuran de',\n", - " 'dare ka ga kime ta kimi no “kimi rashi sa” nante',\n", - " 'turning over sugao de',\n", - " 'ao sa wa mugen no one way e',\n", - " 'tenohira sora ni oi te',\n", - " 'akogare wa koe ni shi te ii yo',\n", - " 'asahi no mukō no one day e',\n", - " 'sukoshi dake senobi shi te',\n", - " 'kimi dake ni hanataba o you beam on',\n", - " 'warae... (raise your flag , the only one)',\n", - " \"hazume... (don't look back! you don't let me down)\",\n", - " 'odore... (rushing out to rising sun)',\n", - " \"you're the one (nothing but the heart or crown)\",\n", - " 'furidashi kara fumidasu ichi ho wa',\n", - " 'mae yori mo zutto tsuyoi kara',\n", - " 'kakage ta te o orosa nai de',\n", - " 'namida mo sarakedashi te',\n", - " 'takaraka ni koe age te ii yo',\n", - " 'kanae tai yume shitsu kusa nai de',\n", - " 'kagayakeru sono hi made',\n", - " 'kawara nai ashidori o you keep on',\n", - " 'utae... (raise your flag , the only one)',\n", - " \"susume... (don't look back! you don't let me down)\",\n", - " 'todoke... (rushing out to rising sun)',\n", - " \"you're the one (nothing but the heart or crown)\",\n", - " '(raise your flag , the only one',\n", - " \"don't look back! you don't let me down\",\n", - " 'rushing out to rising sun',\n", - " 'nothing but the heart or crown)',\n", - " 'dekkyanshi dera ritchere cherira',\n", - " 'boreborebore we keraponi',\n", - " 'chorape chorapenape yutcho morabinyu',\n", - " 'megeparapi gera weriweriweriweri bora',\n", - " 'megeparacho gera merimerimerimeri nyu',\n", - " 'chore chorekkira pakerati deritchon nyurumeru',\n", - " 'rikkyorakkyore wiriwiri nyu',\n", - " 'nyuru me me meremerenyu',\n", - " 'dekkyanshi dera ritchere cherira',\n", - " 'boreborebore we keraponi',\n", - " 'chorape chorapenape yutcho morabinyu',\n", - " 'dekkyanshi dere ritchere cherira',\n", - " 'geregeregere meranyuru',\n", - " 'chorape chorape yoritche nyurumeri',\n", - " 'megeparapi gera weriweriweriweri bora',\n", - " 'megeparacho gera merimerimerimeri nyu',\n", - " 'chore chorekkira pakerati deritchon nyurumeru',\n", - " 'rikkyorakkyore wiriwiri nyu',\n", - " 'nyuru me me meremerenyu',\n", - " 'dekkyanshi dera ritchere cherira',\n", - " 'boreborebore we keraponi',\n", - " 'chorape chorapenape yutcho morabinyu',\n", - " 'dekkyanshi dere ritchere cherira',\n", - " 'geregeregere meranyuru',\n", - " 'chorape chorape yoritche nyurumeri',\n", - " 'megeparapi gera weriweriweriweri bora',\n", - " 'megeparacho gera merimerimerimeri nyu',\n", - " 'chore chorekkira pakerati deritchon nyurumeru',\n", - " 'rikkyorakkyore wiriwiri nyu',\n", - " 'nyuru me me meremerenyu',\n", - " 'dekkyanshi dera ritchere cherira',\n", - " 'boreborebore we keraponi',\n", - " 'chorape chorapenape yutcho morabinyu',\n", - " 'dekkyanshi dere ritchere cherira',\n", - " 'geregeregere meranyuru',\n", - " 'chorape chorape yoritche nyurumeri',\n", - " 'megeparapi gera weriweriweriweri bora',\n", - " 'megeparacho gera merimerimerimeri nyu',\n", - " 'chore chorekkira pakerati deritchon nyurumeru',\n", - " 'rikkyorakkyore wiriwiri nyu',\n", - " 'nyuru me me meremerenyu',\n", - " 'dekkyanshi dera ritchere cherira',\n", - " 'boreborebore we keraponi',\n", - " 'chorape chorapenape yutcho morabinyu',\n", - " 'dekkyanshi dere ritchere cherira',\n", - " 'geregeregere meranyuru',\n", - " 'chorape chorape yoritche nyurumeri',\n", - " 'indonesian original',\n", - " 'setidaknya punya tujuh puluh tahun',\n", - " 'tak bisa melompat kumahir berenang',\n", - " 'bahagia melihat kawanan betina',\n", - " 'berkumpul bersama sampai ajal',\n", - " 'besar dan berani berperang sendiri',\n", - " 'yang aku hindari hanya semut kecil',\n", - " 'otak ini cerdas kurakit berangka',\n", - " 'wajahmu tak akan pernah aku lupa',\n", - " 'waktu kecil dulu mereka menertawakan',\n", - " 'mereka panggilku gajah',\n", - " '(ku marah) ku marah',\n", - " 'kini baru ku tahu puji di dalam olokan',\n", - " '(mereka ingat ku marah)',\n", - " 'jabat tanganku panggil aku gajah',\n", - " 'kau temanku kau doakan aku',\n", - " 'punya otak cerdas aku harus tangguh',\n", - " 'bila jatuh gajah lain membantu',\n", - " 'tubuhmu di situasi rela jadi tamengku',\n", - " 'kecil kita tak tahu apa-apa',\n", - " 'wajar bila terlalu cepat marah',\n", - " 'kecil kita tak tahu apa-apa',\n", - " 'yang terburuk kelak bisa jadi yang terbaik',\n", - " 'yang terburuk kelak bisa jadi yang terbaik',\n", - " 'kau temanku kau doakan aku',\n", - " 'punya otak cerdas aku harus tangguh',\n", - " 'bila jatuh gajah lain membantu',\n", - " 'tubuhmu di situasi rela jadi tamengku',\n", - " 'kau temanku kau doakan aku',\n", - " 'punya otak cerdas aku harus tangguh',\n", - " 'bila jatuh gajah lain membantu',\n", - " 'tubuhmu disituasi rela jadi tamengku',\n", - " 'english translation',\n", - " 'at least i have 70 years',\n", - " \"although i can't jump, i can swim\",\n", - " \"i'm happy to flirt with female herds\",\n", - " 'we will be together until we die',\n", - " \"big and brave, i'm fighting my war alone\",\n", - " \"what i'm afraid of is just small ants\",\n", - " 'my brain is clever, i assemble and count',\n", - " 'your face, i will never forget it',\n", - " 'when i was young, they laugh at me',\n", - " 'they called me an elephant',\n", - " '(i was angry) i was angry',\n", - " 'now i know there is compliments beneath mockeries',\n", - " '(they remember i was angry)',\n", - " 'shake my hand, call me an elephant',\n", - " 'you are my friend, you pray for me',\n", - " 'i have a smart brain, i have to be tough',\n", - " 'if i fall, other elephants will help me',\n", - " 'you will use your body as my shield during dangers',\n", - " \"when we were young we don't know anything\",\n", - " \"it's normal to be angry\",\n", - " \"when we were young we don't know anything\",\n", - " 'the worst can soon be the best',\n", - " 'the worst can soon be the best',\n", - " 'you are my friend, you pray for me',\n", - " 'i have a smart brain, i have to be tough',\n", - " 'if i fall, other elephants will help me',\n", - " 'you will use your body as my shield during dangers',\n", - " 'you are my friend, you pray for me',\n", - " 'i have a smart brain, i have to be tough',\n", - " 'if i fall, other elephants will help me',\n", - " 'you will use your body as my shield during dangers',\n", - " 'kutahu kau sudah ada yang punya',\n", - " 'tapi ku takkan pedulikan itu',\n", - " 'ku yakin kau rasakan hal yang sama',\n", - " 'terlihat dari caramu menatap aku',\n", - " 'and i’ll fly away to be with you',\n", - " 'saat kau putus tinggalkan dirinya',\n", - " 'i’ll fly away to be with you',\n", - " 'detak jantungku secepat peluru',\n", - " 'saat kau tersenyum kepadaku',\n", - " 'sudah tinggalkan saja pacarmu',\n", - " 'karna kutahu kau suka aku',\n", - " 'and i’ll fly away to be with you',\n", - " 'saat kau putus tinggalkan dirinya',\n", - " 'i’ll fly away to be with you',\n", - " 'and i’ll fly away to be with you',\n", - " 'saat kau putus tinggalkan dirinya',\n", - " 'i’ll fly away to be with you',\n", - " 'and i’ll fly away to be with you',\n", - " 'and i’ll wait for you to be with me',\n", - " 'and i’ll fly away to be with you',\n", - " 'and i’ll wait for you to be with me',\n", - " 'and i’ll fly away to be with you',\n", - " 'saat kau putus tinggalkan dirinya',\n", - " 'i’ll fly away to be with you',\n", - " 'i’ll fly away to be with you',\n", - " 'i’ll fly away to be with you',\n", - " 'chorus:',\n", - " 'shibaraku no aida',\n", - " 'mata hanarebanare',\n", - " 'moh sukoshi shitara',\n", - " 'say goodbye',\n", - " 'nanbyakunen no toki wo koe',\n", - " 'enkyori renai',\n", - " 'jikanyo',\n", - " 'tomareyo itsumademo',\n", - " 'refrain:',\n", - " 'heart to heart',\n", - " 'in the middle of nowhere',\n", - " 'times apart',\n", - " 'yume no sekai',\n", - " 'gone so far',\n", - " \"and i`m tryn' to go there\",\n", - " 'where the stars',\n", - " 'will always shine',\n", - " 'heart to heart',\n", - " 'in a dream that`s forever',\n", - " 'times apart',\n", - " 'hoshi no sekai',\n", - " 'in the dark',\n", - " 'i will love you forever',\n", - " 'heart to heart',\n", - " 'as tears go by',\n", - " 'heart to heart',\n", - " 'heart to heart',\n", - " 'chorus:',\n", - " 'kagayaku tsukiyo',\n", - " 'hoshizorano time mashine',\n", - " 'genjitsu ni mezame',\n", - " 'hikimodosareru',\n", - " 'tooi kamakura jidai kara',\n", - " 'syunkanidoh',\n", - " 'owakare',\n", - " 'kondo aeru hi made',\n", - " 'refrain:',\n", - " 'heart to heart',\n", - " 'in the middle of nowhere',\n", - " 'times apart',\n", - " 'yume no sekai',\n", - " 'gone so far',\n", - " \"and i`m tryn' to go there\",\n", - " 'where the stars',\n", - " 'will always shine',\n", - " 'heart to heart',\n", - " 'in a dream that`s forever',\n", - " 'times apart',\n", - " 'hoshi no sekai',\n", - " 'in the dark',\n", - " 'i will love you forever',\n", - " 'heart to heart',\n", - " 'as tears go by',\n", - " 'kondo aeru hi made',\n", - " 'refrain:',\n", - " 'heart to heart',\n", - " 'in the middle of nowhere',\n", - " 'times apart',\n", - " 'yume no sekai',\n", - " 'gone so far',\n", - " \"and i`m tryn' to go there\",\n", - " 'where the stars',\n", - " 'will always shine',\n", - " 'heart to heart',\n", - " 'in a dream that`s forever',\n", - " 'times apart',\n", - " 'hoshi no sekai',\n", - " 'in the dark',\n", - " 'i will love you forever',\n", - " 'heart to heart',\n", - " 'as tears go by',\n", - " 'heart to heart',\n", - " 'ku ingin cinta hadir untuk selamanya',\n", - " 'bukan hanya lah untuk sementara',\n", - " 'menyapa dan hilang',\n", - " 'terbit tenggelam bagai pelangi',\n", - " 'yang indahnya hanya sesaat',\n", - " 'tuk ku lihat dia mewarnai hari',\n", - " 'tetaplah engkau disini',\n", - " 'jangan datang lalu kau pergi',\n", - " 'jangan anggap hatiku',\n", - " 'jadi tempat persinggahanmu',\n", - " 'untuk cinta sesaat',\n", - " 'mengapa ku tak bisa jadi',\n", - " 'cinta yang tak akan pernah terganti',\n", - " '(ku hanya menjadi) cinta yang tak akan terjadi',\n", - " 'lalu mengapa kau masih disini',\n", - " 'memperpanjang harapan',\n", - " 'tetaplah engkau disini',\n", - " 'jangan datang lalu kau pergi',\n", - " 'jangan anggap hatiku',\n", - " 'jadi tempat persinggahanmu',\n", - " 'untuk cinta sesaat',\n", - " 'kau bagai kata yang terus melaju',\n", - " 'di luasnya ombak samudera biru',\n", - " 'namun sayangnya kau tak pilih aku',\n", - " 'jadi pelabuhanmu',\n", - " 'tetaplah engkau disini',\n", - " 'jangan datang lalu kau pergi',\n", - " 'jangan anggap hatiku',\n", - " 'jadi tempat persinggahanmu',\n", - " 'bila tak ingin disini',\n", - " 'jangan berlalu lalang lagi',\n", - " 'biarkanlah hatiku',\n", - " 'mencari cinta sejati',\n", - " 'wahai cintaku',\n", - " 'wahai cinta sesaat',\n", - " 'english',\n", - " 'i would like for love to exist forever',\n", - " 'not only for a moment',\n", - " 'to greet me and then leave',\n", - " 'to rise and set like the sun',\n", - " 'which beauty is ephemeral',\n", - " 'only for me to see it brighten the day',\n", - " 'please stay here',\n", - " \"don't just come and then leave\",\n", - " \"don't assume my heart\",\n", - " 'is a place for your stopover',\n", - " \"why can't i be\",\n", - " 'a love that is irreplaceable',\n", - " '(i only am) a love that would never occur',\n", - " 'then why are you still here?',\n", - " 'elevating my hopes up?',\n", - " 'please stay here',\n", - " \"don't just come and then leave\",\n", - " \"don't assume my heart\",\n", - " 'is a place for your stopover',\n", - " 'you are like the word that keeps going',\n", - " 'in the vast blue ocean',\n", - " \"but unfortunately you don't pick me\",\n", - " 'to be your harbor',\n", - " 'please stay here',\n", - " \"don't just come and then leave\",\n", - " \"don't assume my heart\",\n", - " 'is a place for your stopover',\n", - " \"if you don't want to be here\",\n", - " \"don't roam here again\",\n", - " 'please let my heart',\n", - " 'search for true love',\n", - " 'oh my love',\n", - " 'oh ephemeral love',\n", - " 'you! soro soro teki fuyashite',\n", - " 'kyōgōsha no teki fuyashite',\n", - " 'mō soro soro teki fuyashite',\n", - " 'sore ni makenai jibun wo tsukure',\n", - " 'hiyowa na shisutemu kudaite yaru no sa isoge break it down',\n", - " 'break a system',\n", - " 'sonna hanashi wa nomi komenai ze',\n", - " 'manyuaru goshi ni nani ga mieru?',\n", - " 'noruma konashite mita sekai wa',\n", - " 'ashiato darakedo owatteita',\n", - " 'omaera no shisutemu kudake ochiru dake sa jiki ni break it down',\n", - " 'break a system',\n", - " 'break out',\n", - " 'go! mad! outsider!',\n", - " 'go! mad! outsider!',\n", - " 'go! mad! outsider!',\n", - " 'i’m the outsider!',\n", - " '------------------------------------------',\n", - " 'you! slowly get more enemies',\n", - " 'get more powerful enemies',\n", - " 'gradually get more enemies',\n", - " \"then create a self that won't lose to them\",\n", - " 'break down the weak system, hurry up, break it down',\n", - " 'b-r-e-a-k a s-y-s-t-e-m',\n", - " \"i won't swallow that kind of story\",\n", - " 'what can you see beyond the manual?',\n", - " \"after doing your share the world you'll\",\n", - " 'see has ended full of footprints',\n", - " 'just break down your system, immediately break it down',\n", - " 'b-r-e-a-k a s-y-s-t-e-m',\n", - " 'break out',\n", - " 'go! mad! outsider!',\n", - " 'go! mad! outsider!',\n", - " 'go! mad! outsider!',\n", - " \"i'm the outsider!\",\n", - " 'disampingmu',\n", - " 'temani dirimu',\n", - " 'demi cintanya, serahkan jiwaku',\n", - " 'meski tiada banyak waktu',\n", - " 'tersisa untuk cinta',\n", - " 'tetap aku...',\n", - " 'love you, baby i do',\n", - " 'i never find someone like you',\n", - " 'love you yess i still do*',\n", - " 'better or worst i will be there',\n", - " \"yes i'll be there for you\",\n", - " 'tak perlu kau ragu',\n", - " 'kumelupakanmu',\n", - " 'meski tiada banyak waktu tersisa untuk cinta',\n", - " 'tetap aku',\n", - " 'love you, baby i do',\n", - " 'i never find someone like you',\n", - " 'love you yes i still do*',\n", - " 'better or worst i will be there',\n", - " \"yes i'll be there for you\",\n", - " 'disiniku ku memelukmu',\n", - " 'hingga tiba akhir masa',\n", - " 'menjemputmu',\n", - " 'i love you, baby i do',\n", - " 'i never find someone like you',\n", - " 'love you yes i still do*',\n", - " 'better or worst i will be there',\n", - " \"yes i'll be there for you\",\n", - " 'oboete iru kana?',\n", - " 'oh babe deatta koro wa',\n", - " 'mitsumeau dake de egao koboreteta',\n", - " 'bokura wa \"nagatsudzuki shinai yo\" nante',\n", - " 'hito ni iwareta yo ne...',\n", - " 'sukunai kotoba ni',\n", - " 'gokai tokenu mama',\n", - " 'toozakaru futari',\n", - " 'hitomi ni miete kuru ki ga shite',\n", - " 'bokura wa masaka... sonna fuu ni tanin no',\n", - " 'sasayaki ni madowasarenai yo ne?...',\n", - " \"you're still my only one\",\n", - " 'mou ichido sagashite yo',\n", - " 'futari de egaita yume wo',\n", - " \"is it too much i'm asking for?\",\n", - " 'oh ima demo daiji na mono wa',\n", - " \"mada kiete'nai kara\",\n", - " \"don't let go\",\n", - " 'futari no kokoro wo',\n", - " 'tsunagitomeru mono',\n", - " 'ima mata the two of us',\n", - " 'omoidashite miyou yo',\n", - " 'bokura wa toomawari wo shita keredo',\n", - " 'tashikameatte ikeba ii deshou',\n", - " \"you're still my only one\",\n", - " 'mou ichido modoshite yo',\n", - " 'futari dake no jikan wo',\n", - " \"is it too much i'm asking for?\",\n", - " 'oh ima demo taisetsu na mono',\n", - " \"iroasete'nai kara\",\n", - " \"don't let go\",\n", - " 'oh baby no...',\n", - " 'koukai dake wa shitaku wa nai kara',\n", - " 'sono mama motto soba ni ite',\n", - " 'kono fukai omoi wakatte hoshii',\n", - " 'hayaku kokoro no tobira wo akete mite yo',\n", - " \"baby can't you see\",\n", - " \"you're still my only one\",\n", - " 'mou ichido sagashite yo',\n", - " 'futari de egaita yume wo',\n", - " \"is it too much i'm asking for?\",\n", - " 'oh ima demo daiji na mono wa',\n", - " \"mada kiete'nai kara\",\n", - " \"don't let go\",\n", - " \"you're still my only one\",\n", - " 'mou ichido modoshite yo',\n", - " 'futari dake no jikan wo',\n", - " \"is it too much i'm asking for?\",\n", - " 'oh ima demo always know i feel for you',\n", - " \"iroasete'nai kara\",\n", - " \"don't let go\",\n", - " \"no i don't ever wanna lose my baby\",\n", - " \"don't let go... oh...\",\n", - " \"don't let go...\",\n", - " 'ku hitung detik waktu',\n", - " 'memikirkanmu tiada habisnya',\n", - " 'kau di detak jantungku',\n", - " 'di setiap nafasku tiada gantinya',\n", - " \"kau s'galanya\",\n", - " 'yang bermakna',\n", - " 'i just wanna hold you',\n", - " 'i just wanna kiss you',\n", - " 'i just wanna love you all my life',\n", - " \"i normally wouldn't say this\",\n", - " \"but i just can't contain it\",\n", - " 'i want you here forever right here',\n", - " 'by my side',\n", - " 'all the fears you feel inside',\n", - " \"and all the tears you've cried\",\n", - " \"they're ending right here\",\n", - " \"i'll heal your hardened soul\",\n", - " \"i'll keep you oh so close\",\n", - " \"don't worry i'll never let you go\",\n", - " \"you're all i need\",\n", - " \"you're everything\",\n", - " 'i just wanna hold you',\n", - " 'i just wanna kiss you',\n", - " 'i just wanna love you all my life',\n", - " \"i normally wouldn't say this\",\n", - " \"but i just can't contain it\",\n", - " 'i want you here forever right here',\n", - " 'by my side',\n", - " 'siapa yang kan menyangka',\n", - " 'aku tergila-gila',\n", - " 'dengarlah sekali lagi',\n", - " 'i love you',\n", - " 'tiada yang lain lagi',\n", - " \"hatiku t'lah terkunci\",\n", - " 'cuma kamu',\n", - " 'i just wanna hold you',\n", - " 'i just wanna kiss you',\n", - " 'i just wanna love you all my life',\n", - " \"i normally wouldn't say this\",\n", - " \"but i just can't contain it\",\n", - " 'i want you here forever right here',\n", - " 'by my side']}}},\n", - " 'is': {'sentence': {'pop': {'meta': {'train_data': [\"05. tjet (doesn't mean anything):\",\n", - " 'ef þú reynir (if you try)',\n", - " 'að halda lífsins takti (to keep the rhythm of life)',\n", - " 'í sama sama horfinu (in the same same path)',\n", - " 'takti dag eftir nótt (rhythm day after night)',\n", - " 'ef þú reynir (if you try)',\n", - " 'að halda lífsins takti (to keep the rhythm of life)',\n", - " 'dag eftir dag eftir nótt eftir nótt (day after day after night after night)',\n", - " 'í sama horfinu (in the same path)',\n", - " 'teikna þríhyrninga abcd (drawing triangles abcd)',\n", - " 'teikna þríhyrninga abcd (drawing triangles acbd)',\n", - " 'teikna ferhyrninga abcd (drawing squares abcd)',\n", - " 'jafnarma trapísu (isosceles trapezium)',\n", - " 'og mér finnst (and i think)',\n", - " 'svo mikið af hlaupum (so much running)',\n", - " 'hann á jafnframt hlut í þér (he owns also a part of you)',\n", - " 'hann svífur (he glides)',\n", - " 'þú reynir (you try)',\n", - " 'að halda lífsins takti (to keep the rhythm of life)',\n", - " 'dag eftir dag nótt eftir nótt (day after day after night after night)',\n", - " 'í sama horfinu (in the same path)',\n", - " 'en hvað er hann að segja? (but what is he saying?)',\n", - " '(?)',\n", - " 'teikna þríhyrninga abcd (drawing triangles abcd)',\n", - " 'teikna ferhyrninga abcd (drawing squares abcd)',\n", - " 'teikna trapísu abcd (drawing trapezium abcd)',\n", - " 'jafnarma trapísu (isosceles trapezium)',\n", - " 'trúin á guðina, fylgjendur siðanna',\n", - " 'sannsemi sjálfs síns, hreinskilni og tryggð',\n", - " 'afrakstur vopnadauða, ei sigur né tap',\n", - " 'samkoma jafningja í blóði eða anda',\n", - " 'í ragnarökum berjast, uns enginn mun standa',\n", - " 'eftir dauða ávalt velkomnir í hátíðarhöld',\n", - " 'ei sól né máni, dagur né kvöld',\n", - " 'kristur svo kom og tók öll völd',\n", - " 'en ei hafa allir fallist á hans trú',\n", - " 'haldist sjálfum sér sannir, nú fram á 20stu öld',\n", - " 'þrjóskan við kristni dofnar en helst',\n", - " 'ei sjá þeir blekkinguna sem í henni felst',\n", - " 'trúin á guðina, varðveiting siðanna',\n", - " 'mun koma á ný, með krist farin fyrir bý',\n", - " 'aðalbjörn tryggvason',\n", - " 'mars 1997',\n", - " 'english:',\n", - " 'in blood and spirit',\n", - " 'the believe in the gods, followers of the old ways',\n", - " 'the truth of one self, honesty and loialty',\n", - " 'to die by a wepon, neither victory nor defeat',\n", - " 'the gathering of equials in blood or spirit',\n", - " 'in ragnarök will fight, untill no man stands',\n", - " 'after death always welcome in a celebration',\n", - " 'neither sun nor moon, day nor night',\n", - " 'christ then came and took over',\n", - " 'but not everyone has submittet to his belief',\n", - " 'stayed true to themselfs,now untill the 20th century',\n", - " 'the resistance against christianity fades but stayes',\n", - " 'blind are they to the illusion within it',\n", - " 'the believe in the gods, perservation of the culture',\n", - " 'will come again, with christianity thrown for the dogs',\n", - " 'aðalbjörn tryggvason',\n", - " 'mars 1997',\n", - " 'transilation by pálmason',\n", - " 'ek man jötna',\n", - " 'ár of borna',\n", - " 'þá er forðum mik',\n", - " 'fædda höfðu;',\n", - " 'níu man ek heima',\n", - " 'níu íviðjur',\n", - " 'mjötvið mæran',\n", - " 'fyr mold neðan',\n", - " 'ár var alda',\n", - " 'þar er ekki var',\n", - " 'var-a sandr né sær',\n", - " 'né svalar unnir;',\n", - " 'jörð fannsk æva',\n", - " 'né upphiminn',\n", - " 'gap var ginnunga',\n", - " 'en gras hvergi',\n", - " 'áðr burs synir',\n", - " 'bjöðum of yppðu',\n", - " 'þeir er miðgarð',\n", - " 'mæran skópu;',\n", - " 'sól skein sunnan',\n", - " 'á salar steina',\n", - " 'þá var grund gróin',\n", - " 'grænum lauki',\n", - " 'sól varp sunnan',\n", - " 'sinni mána',\n", - " 'hendi inni hægri',\n", - " 'um himinjöður;',\n", - " 'sól þat né vissi',\n", - " 'hvar hon sali átti',\n", - " 'máni þat né vissi',\n", - " 'hvat hann megins átti',\n", - " 'stjörnur þat né vissu',\n", - " 'hvar þær staði áttu',\n", - " 'þá gengu regin öll',\n", - " 'á rökstóla',\n", - " 'ginnheilög goð',\n", - " 'ok um þat gættusk;',\n", - " 'nótt ok niðjum',\n", - " 'nöfn of gáfu',\n", - " 'morgin hétu',\n", - " 'ok miðjan dag',\n", - " 'undorn ok aftan',\n", - " 'árum at telja',\n", - " 'hittusk æsir',\n", - " 'á iðavelli',\n", - " 'þeir er hörg ok hof',\n", - " 'hátimbruðu;',\n", - " 'afla lögðu',\n", - " 'auð smíðuðu',\n", - " 'tangir skópu',\n", - " 'ok tól gørðu',\n", - " 'ár var alda',\n", - " 'þar er ekki var',\n", - " 'var-a sandr né sær',\n", - " 'né svalar unnir;',\n", - " 'jörð fannsk æva',\n", - " 'né upphiminn',\n", - " 'gap var ginnunga',\n", - " 'en gras hvergi',\n", - " 'áðr burs synir',\n", - " 'bjöðum of yppðu',\n", - " 'þeir er miðgarð',\n", - " 'mæran skópu;',\n", - " 'sól skein sunnan',\n", - " 'á salar steina',\n", - " 'þá var grund gróin',\n", - " 'grænum lauki',\n", - " 'sól varp sunnan',\n", - " 'sinni mána',\n", - " 'hendi inni hægri',\n", - " 'um himinjöður;',\n", - " 'sól þat né vissi',\n", - " 'hvar hon sali átti',\n", - " 'máni þat né vissi',\n", - " 'hvat hann megins átti',\n", - " '(i \"fadingen\":)',\n", - " 'stjörnur þat né vissu',\n", - " 'hvar þær staði áttu',\n", - " 'i remember jötnar',\n", - " 'borned before time',\n", - " 'in primeal time',\n", - " 'they fostered me;',\n", - " 'nine worlds i remember',\n", - " 'nine jötunn -maidens (who dwells in the wood)',\n", - " 'before the measure-tree',\n", - " 'grew from the mold',\n", - " 'before time itself',\n", - " 'there was nothing',\n", - " 'no sand, nor sea',\n", - " 'nor cool waves;',\n", - " 'earth existed not at all',\n", - " 'nor the sky above',\n", - " 'just the gaping abyss',\n", - " 'but vegetation nowhere',\n", - " 'until borrs sons',\n", - " 'raised the lands',\n", - " 'they created midgard',\n", - " 'our praised world;',\n", - " 'the sun shone from the south',\n", - " 'onto their stone halls',\n", - " 'then the ground grew',\n", - " 'green with plants',\n", - " 'the sun hurled from the south',\n", - " 'with the moon',\n", - " 'her right hand landed',\n", - " 'over the sky horizon;',\n", - " 'the sun did not know',\n", - " 'where her hall was',\n", - " 'the moon did not know',\n", - " 'what his stenght was',\n", - " 'the stars did not know',\n", - " 'where their places was',\n", - " 'then all powers went',\n", - " 'to the judgment-chairs',\n", - " 'the most holy gods;',\n", - " 'and they declared that;',\n", - " 'night and hours',\n", - " 'should be given names',\n", - " 'morning also',\n", - " 'and midday',\n", - " 'afternoon and evening',\n", - " 'to tell time',\n", - " 'the æsir met',\n", - " 'at ithavoll',\n", - " 'they made sanctuaries and high',\n", - " 'temples;',\n", - " 'made forges',\n", - " 'precious treasures',\n", - " 'shaped tongs',\n", - " 'and similar tools',\n", - " 'before time itself',\n", - " 'there was nothing',\n", - " 'no sand, nor sea',\n", - " 'nor cool waves;',\n", - " 'earth existed not at all',\n", - " 'nor the sky above',\n", - " 'just the gaping abyss',\n", - " 'but vegetation nowhere',\n", - " 'until borrs sons',\n", - " 'raised the lands',\n", - " 'they created midgard',\n", - " 'our praised world;',\n", - " 'the sun shone from south',\n", - " 'onto their stone halls',\n", - " 'then the ground grew',\n", - " 'green with plants',\n", - " 'the sun hurled from the south',\n", - " 'with the moon',\n", - " 'her right hand landed',\n", - " 'over the sky horizon;',\n", - " 'the sun did not know',\n", - " 'where her hall was',\n", - " 'the moon did not know',\n", - " 'what his stenght was',\n", - " '(in \"the fading\" : )',\n", - " 'the stars did know know',\n", - " 'where their places was',\n", - " 'stúlka mín litla, sem leikur þér dátt',\n", - " 'liðinn er dagur og komin er nátt',\n", - " 'tími að fara nú fötunim úr',\n", - " 'fingurna þvo, en hvað segir þú?',\n", - " 'gefðú mér kodda og gefðú mér sæng',\n", - " 'gefðú mér rúm sem á tvöfaldan veng',\n", - " 'þar mun ég fljúga í hugarins heim',\n", - " 'og halda í draum út í víðfeðman geim',\n", - " 'fljúgðú þá vina min huganum í',\n", - " 'heimsóttu venus og merkúkry',\n", - " \"þar muntu hitt'eina fallega frú\",\n", - " 'sem færir þér gjafir, en hvað segir þu?',\n", - " 'frá jörðinni liggur svó leiðin til mars',\n", - " 'lækir þar ida af silung og lax',\n", - " 'töff er að reikna um júpiters tungl',\n", - " 'og taka þar lagið, en hvað segir þu?',\n", - " 'gefðú mér kodda og gefðú mér sæng',\n", - " \"á satúrnus dansa þeir klukkun'um kring\",\n", - " 'kólfunum skjóta með úranus swíng',\n", - " 'í neptunus borg má svo byggja sér bú',\n", - " 'sér bregða til pluto, en hvað segir þú?',\n", - " 'my little girl, who plays so well',\n", - " 'the day has passed and the night has come',\n", - " 'time now to take your clothes off',\n", - " 'wash the fingers, or what do you think?',\n", - " 'give me a pillow and give me a blanket',\n", - " 'give me a bed that has two sets of wings',\n", - " 'there i will fly in the home of my mind',\n", - " 'and go in a dream to the huge universe',\n", - " 'then fly my friend in the mind',\n", - " 'visit venus and mercury',\n", - " 'there you will meet a beautiful wife',\n", - " 'who brings you presents, or what do you think?',\n", - " 'from earth the the route leads to mars',\n", - " 'where shoals of trouts and salmon play',\n", - " \"delays are expected at jupiter's moon\",\n", - " 'and, or what do you think?',\n", - " 'give me a pillow and give me a blanket',\n", - " 'in saturn they dance around the clock',\n", - " 'shot the clubs with a uranus swing',\n", - " 'in neptune city you may build your home',\n", - " 'and travel to pluto, or what do you think?',\n", - " 'the fimbulvetr prays the blast of death from north',\n", - " '3 years of frost, 3 years of night',\n", - " 'the final breath evaporates to the sky',\n", - " 'to the stars up high',\n", - " 'skali and hati chase the moon',\n", - " 'stars drop from the canopy',\n", - " 'fenris crashs his chains',\n", - " 'naglfar appears during night',\n", - " 'the end of all no one to escape',\n", - " 'muspells sons are on their way',\n", - " 'odens son, thor awaits them',\n", - " 'to fight – to strike',\n", - " 'þá kemur inn ríki',\n", - " 'að regindómi',\n", - " 'öflugur ofan',\n", - " 'sá er öllu ræður',\n", - " 'þar kemur inn dimmi',\n", - " 'dreki fljúgandi',\n", - " 'naður fránn, neðan',\n", - " 'frá niðafjöllum;',\n", - " 'ber sér í fjöðrum',\n", - " 'flýgur völl yfir',\n", - " 'niðhöggur nái',\n", - " 'nú mun hún sökkvast',\n", - " 'hwær cwóm helm? hwær cwóm byrn(e)?',\n", - " 'hwær cwóm feax flówende?',\n", - " 'hwær cwóm helm? hwær cwóm byrn(e)?',\n", - " 'hwær cwóm feax flówende?',\n", - " 'hwær cwóm hand on hearpestrenge?',\n", - " 'hwær cwóm fýr (scin)ende?',\n", - " 'hwær cwóm hand on hearpestrenge?',\n", - " 'hwær cwóm fýr (scin)ende?',\n", - " 'hwær cwóm helm? hwær cwóm byrn(e)?',\n", - " 'hwær cwóm feax flówende?',\n", - " 'hwær cwóm helm? hwær cwóm byrn(e)?',\n", - " 'hwær cwóm feax flówende?',\n", - " 'hwær cwóm hand on hearpestrenge?',\n", - " 'hwær cwóm fýr (scin)ende?',\n", - " 'hwær cwóm hand on hearpestrenge?',\n", - " 'hwær cwóm fýr (scin)ende?',\n", - " 'hwær cwóm helm hwær cwóm byrn(e)',\n", - " 'hwær cwóm feax flówende?',\n", - " 'hwær cwóm helm? hwær cwóm byrn(e)?',\n", - " 'hwær cwóm feax flówende?',\n", - " 'hwær cwóm hand on hearpestrenge?',\n", - " 'hwær cwóm fýr (scin)ende?',\n", - " 'hwær cwóm hand',\n", - " 'hwær cwóm fýr',\n", - " 'vi er vikinger, i nord vi sejler fra',\n", - " 'kyst til fremmed land, vi kæmper alle mand',\n", - " 'æsir giv os mod, til valhal efter død',\n", - " 'i den mørke muld, vi skåler frydefuldt',\n", - " 'þat mælti mín móðir',\n", - " 'at mér skyldi kaupa fley ok fagrar árar',\n", - " 'fara á brott með víkingum',\n", - " 'standa upp í stafni, stýra dýrum knerri',\n", - " 'halda svá til hafnar höggva mann ok annan',\n", - " 'höggva mann ok annan',\n", - " 'þél höggr stórt fyr stáli stafnkvígs á veg jafnan út með éla meitli andærr jötunn vandar',\n", - " 'en svalbúinn selju sverfr eirar vanr þeiri gestils ölpt með gustum gandr of stál fyr brandi',\n", - " 'we are vikings, from the north, we are sailing from',\n", - " 'from coast to foreign land, vi are figting every man',\n", - " 'æsir give us currage, to valhal after death',\n", - " 'in the dark soil, we cheer joyfully',\n", - " 'that said my mother',\n", - " 'that i should buy',\n", - " 'fley and beautiful years',\n", - " 'go away with vikings',\n", - " 'stand up in the letter',\n", - " 'steer animals knierri',\n", - " 'keep going to the harbor',\n", - " 'chop man and another',\n", - " 'chop a man and another',\n", - " 'it knocks a big steel head',\n", - " 'pimple on the way evenly',\n", - " 'out with a little girl',\n", - " 'anderr jotunn vandar',\n", - " 'a cool selling',\n", - " 'they swear their names',\n", - " 'gestils swallowed with gusts',\n", - " 'gandr or steel fire brandi',\n", - " 'fastir fyrir',\n", - " 'saxið þyrstir, heimtar blóð',\n", - " '(stand tall',\n", - " 'my blade yearns for courageous blood)',\n", - " 'ljóð eg þau kann er kann-at þjóðans kona og mannskis mögur',\n", - " 'hjálp heitir eitt, en það þér hjálpa mun við sökum og sorgum og sútum görvöllum',\n", - " 'það kann eg annað er þurfu ýta synir, þeir er vilja læknar lifa',\n", - " 'það kann eg hið þriðja: ef mér verður þörf mikil hafts við mína heiftmögu, eggjar eg deyfi minna andskota, bíta-t þeim vopn né velir',\n", - " 'það kann eg ið fjórða: ef mér fyrðar bera bönd að bóglimum, svo eg gel að eg ganga má, sprettur mér af fótum fjötur, en af höndum haft. það kann eg ið fimmta: ef eg sé af fári skotinn flein í fóki vaða, fýgur-a hann svo stinnt að eg stöðvig-a-g, ef eg hann sjónum of sé’g',\n", - " 'það kann eg ið sétta: ef mig særir þegn á rótum rás viðar, og þann hal er mig heifta kveður, þann eta mein heldur en mig',\n", - " 'það kann eg ið sjöunda: ef eg sé hávan loga sal um sessmögum, brennur-at svo breitt, að eg honum bjargig-a-g. þann kann eg galdur að gala',\n", - " 'það kann eg ið átta, er öllum er nytsamlegt að nema: hvar er hatur vex með hildings sonum það má eg bæta brátt',\n", - " 'það kann eg ið níunda: ef mig nauður um stendur að bjarga fari mínu á floti, vind eg kyrri vogi á og svæfi’g allan sæ',\n", - " 'those songs i know, which nor sons of men nor queen in a king’s court knows; the first is help which will bring thee help in all woes and in sorrow and strife',\n", - " 'a second i know, which the son of men must sing, who would heal the sick',\n", - " 'a third i know: if sore need should come of a spell to stay my foes; when i sing that song, which shall blunt their swords, nor their weapons nor staves can wound',\n", - " 'a fourth i know: if men make fast in chains the joints of my limbs, when i sing that song which shall set me free, spring the fetters from hands and feet. a fifth i know: when i see, by foes shot, speeding a shaft through the host, flies it never so strongly i still can stay it, if i get but a glimpse of its flight',\n", - " 'a sixth i know: when some thane would harm me in runes on a moist tree’s root, on his head alone shall light the ills of the curse that he called upon mine. a seventh i know: if i see a hall high o’er the bench-mates blazing, flame it ne’er so fiercely i still can save it, — i know how to sing that song',\n", - " 'an eighth i know: which all can sing for their weal if they learn it well; where hate shall wax ‘mid the warrior sons, i can calm it soon with that song',\n", - " 'a ninth i know: when need befalls me to save my vessel afloat, i hush the wind on the stormy wave, and soothe all the sea to rest',\n", - " 'fram á rauða nótt',\n", - " 'fram í rauðan dauðann',\n", - " 'enginn veit sinn næturstað',\n", - " '(our steps, to the night',\n", - " 'if we shall not return',\n", - " 'we shall not be forgotten)',\n", - " 'hljóðs bið ek allar',\n", - " 'helgar kindir',\n", - " 'meiri ok minni',\n", - " 'mögu heimdallar;',\n", - " 'viltu at ek, valföðr',\n", - " 'vel fyr telja',\n", - " 'forn spjöll fira',\n", - " 'þau er fremst of man',\n", - " 'attention i demand from all',\n", - " 'sacred families',\n", - " 'greater and lesser',\n", - " 'children of heimdallr;',\n", - " 'you want me, valfather',\n", - " 'to well recite',\n", - " 'the ancient tales',\n", - " 'those which i remember best',\n", - " 'eyes open wide, blinded by the sun now',\n", - " 'orange and white, dark red, green and yellow',\n", - " 'rainbow colors! do not hide, see the view!',\n", - " 'step aside, go through!',\n", - " 'against the light, too strong, blow a fuse now',\n", - " 'everything bright, new songs, burning shoes',\n", - " 'the look in your eyes! break our bones into half!',\n", - " 'scream and shout and do laugh!',\n", - " 'let yourself... go (oh oh oh)',\n", - " 'let yourself... go (oh oh oh)',\n", - " 'stay close to me',\n", - " 'count one, two and three',\n", - " 'up in through your sleeves',\n", - " 'bursting through the seams',\n", - " \"open your eyes and see - you'll see\",\n", - " 'inn um ermar, upp hryggjarsúluna',\n", - " 'yfir skóg, flæðir niður brekkuna',\n", - " 'allt upp í loft! ég mun aldrei gleyma!',\n", - " 'því ég mun aldrei!',\n", - " 'hleypur um, rífur, leysir flækjurnar',\n", - " '(upp með rótum) með blik í augum!',\n", - " 'stórmerki, undur, brjótum bein í sundur!',\n", - " 'let yourself... go (oh oh oh)',\n", - " 'let yourself... go (oh oh oh)',\n", - " 'stay close to me',\n", - " 'count one, two and three',\n", - " 'up in through your sleeves',\n", - " 'bursting through the seams',\n", - " 'open your eyes and see',\n", - " 'stay close to me',\n", - " 'count one, two and three',\n", - " 'up in through your sleeves',\n", - " 'right beyond the trees',\n", - " \"show you how you'll be\",\n", - " 'stay close to me',\n", - " 'count one, two and three',\n", - " 'up in through your sleeves',\n", - " 'bursting through the seams',\n", - " 'open your eyes and see',\n", - " \"you'll see\",\n", - " 'stay close to me',\n", - " 'count one, two, three',\n", - " 'up in your sleeves',\n", - " \"you're right beyond trees\",\n", - " 'stay close to me',\n", - " 'count one, two, three',\n", - " 'up in your sleeves',\n", - " 'burst through the seams',\n", - " 'open your eyes and see',\n", - " \"you'll see, you'll see\",\n", - " 'thad lenti í drætti, - it was quite a delay',\n", - " 'ad módir mín mig ætti, - when my mother had me',\n", - " \"thvi hún var svo gískid grey. - but then she's such a slender sort\",\n", - " 'en læknrinn var sóttur, - the doctor was fetched',\n", - " 'og loksins ól hún dóttur, - and finally her daughter was born',\n", - " 'og thád sést ekki sætari mey. - and none had ever seen a sweeter girl',\n", - " 'en pabbi var sjaálfur, - my father spent usually',\n", - " 'á sjónum alltaf hálfur, - his time at sea half-drunk',\n", - " 'svo hann gat ekki lengur sagt nei. - but he could not deny me',\n", - " 'fyrst var hann mjög sleginn, - at first he was rather shocked',\n", - " 'en seinna sagdi hann feginn. - but then he said, relieved',\n", - " 'ad thad sést ekki sætari mey. - none shall ever see a sweeter girl',\n", - " 'sætari mey, - such a sweet girl',\n", - " 'sætari mey, - such a sweet girl',\n", - " 'nei thad sést ekki sætari mey. - there is no sweeter girl',\n", - " 'og fyrr en mig vardi, - before i knew it',\n", - " 'hver strákur á mig stardi, - every boy would gaze at me',\n", - " 'eins og stelpur á gleym-mér-ei. - as girls gaze at forget-me-nots',\n", - " \"their fóru ad skjálfa, - they'd shiver\",\n", - " 'og sögdu vid sig sjálfa, - and say to themselves',\n", - " \"hún er sorglega stygg, - she's hard to get -\",\n", - " 'en mjóg trygg, ad ég hygg, - but very loyal, i think',\n", - " 'og thad sést ekki sætari mey. - and there is no sweeter girl',\n", - " 'ég lærdi i bernsku, - i learned quite early',\n", - " 'ad blikkaá finni ensku, - to speak proper english',\n", - " 'og min söngrödd var sweet and gay. - and my song was sweet and gay',\n", - " 'en vestur á landi, - but while out west',\n", - " 'ég lenti í hjónabandi. - i stumbled into marriage',\n", - " 'thad er sorglegt fyrir sidprúda mey - it was sad for such a nice girl',\n", - " 'hann lagdi í sinn vana, - he was used to',\n", - " 'ad elska* ameríkana, - loving american girls',\n", - " 'svo ég kyssti hann og sagdi ok. - so i kissed him and said ok',\n", - " 'en illt var í efni, - then i discovered deceit',\n", - " 'hann var ódamála í svefni, - when he spoke in his sleep',\n", - " 'og thá reyndist hann, - and i found out',\n", - " 'ramm islenskt grey. - he was very icelandic after all',\n", - " 'islenskt grey, - just a poor icelander',\n", - " 'islenskt grey, - just a poor icelander',\n", - " 'sem ásædist islenska mey. - who wanted an icelandic girl',\n", - " 'en nú er önnur öldin, - everything has since changed',\n", - " 'ég dansa kát á kvöldin, - now i go dancing every night',\n", - " 'og thiy kalla mig gleym-mér-ei. - and boys call me forget-me-not',\n", - " 'og piltarnir their skjálfa, - and they shiver',\n", - " 'their segja vid sig sjálfa, - they say to themselves',\n", - " 'nei, thú setydir mér blossandi ást. - no, you send me currents of love',\n", - " 'thvílíkt hnoss! - such luck!',\n", - " 'thvi thad sést ekki sætari mey. - since there is no sweeter girl',\n", - " 'gling gló, klukkan sló, - tic toc, the clock chimed',\n", - " 'máninn ofar skyum hló, - moon smiled above the clouds',\n", - " 'lysti upp gamli gótuslód, - lighting the old trail',\n", - " 'thar gladleg lína stód. - there lina gaily stood',\n", - " 'gling gló, klukkan sló, - tic toc, the clock chimed',\n", - " 'máninn ofar skyum hló,- moon smiled above the clouds',\n", - " 'leitar lási var á leid, - lasi from leiti was on his way',\n", - " 'til lína hanns er beid. - to lina awaiting him',\n", - " 'unnendum er máninn kær, - to sweethearts the moon is dear',\n", - " 'umm thau tófraljóma slær. - around them falls its magic light',\n", - " \"lási á bidilsbuxum var, - lasi wore his suitor's breeches\",\n", - " 'brátt frá línu fær hann svar. - soon from lina came his reply',\n", - " 'gling gló, klukkan sló, - tic toc, the clock chimed',\n", - " 'máninn ofar skyum hló. - moon smiled above the clouds',\n", - " 'lási vard svo hyr á brá, - lasi wore a happy smile',\n", - " 'thvi lína sagdi \"já\". - for lina answered \"yes\"',\n", - " 'ég bý við sjóinn',\n", - " 'og á nóttunni',\n", - " 'þá kafa ég níður',\n", - " 'alveg á hafsbotninn',\n", - " 'undir allar iður',\n", - " 'og sett akkerið mitt út',\n", - " 'hér vill ég vera',\n", - " 'hér á ég heima',\n", - " 'i live by the ocean',\n", - " 'and during the night',\n", - " 'i dive into it',\n", - " 'down to the bottom',\n", - " 'underneath all currents',\n", - " 'and drop my anchor',\n", - " \"this is where i'm staying\",\n", - " 'this is my home',\n", - " 'í valhöll til fórna fagran dreng',\n", - " 'þeir færðú fjötra í',\n", - " \"þeir neglð'ann svo hátt á krýsukross\",\n", - " \"og þeir kölluð'ann þræla þý\",\n", - " 'óliver - kæri',\n", - " 'óliver - mæri',\n", - " 'óliver - nú rakna þín bönd',\n", - " 'óliver - ljúfi',\n", - " 'óliver - prúði',\n", - " 'óliver - nú skjálfa öll lönd',\n", - " 'enginn mun skilja þrautir þær',\n", - " 'er þola mátti hann',\n", - " 'hann gerði það fyrir mig og þig',\n", - " 'fyrir allan sannleikann',\n", - " 'óliver - kæri',\n", - " \"sál þínn er heimur and'og álfa\",\n", - " 'hinn fyrsti og síðasti',\n", - " 'kjarninn í hugum mannanna sjálfra',\n", - " 'þú gafst þeim vísindi - óh, óh, óh',\n", - " 'stóðst eins og máttarstólpi stinnur',\n", - " 'sterkur á svellinu',\n", - " 'nú heyrast mun hátt í skýjunum',\n", - " 'á helgafellinu',\n", - " 'óliver - þú færð sígurlaun',\n", - " 'þú færð sígurlaun',\n", - " 'þó köld sé þín hönd',\n", - " 'óliver - þú færð sígurlaun',\n", - " 'þú færð sígurlaun',\n", - " 'mín elskandi ónd - brjóttú böndin nú!',\n", - " 'in valhalla a long time ago a beautiful boy',\n", - " 'they put in chains',\n", - " 'they nailed him so high upon a cross',\n", - " 'and they called him a slave',\n", - " 'oliver - lovely',\n", - " 'oliver - glorious',\n", - " 'oliver - your bonds are untied now',\n", - " 'oliver - pleasant',\n", - " 'oliver - modest',\n", - " 'oliver - all the lands quiver now',\n", - " 'no one will understand the trials that',\n", - " 'he had to endure',\n", - " 'he did it for me and you',\n", - " 'for all the truth',\n", - " 'oliver - lovely',\n", - " 'you soul is home to spirit and elves',\n", - " 'the first and the last',\n", - " 'the essence is in the minds of the men themselves',\n", - " 'you gave them the knowledge - oh, oh, oh',\n", - " 'piled like a rigid stack of power',\n", - " 'strong on the ice',\n", - " 'you can hear high in the skies now',\n", - " 'about your legend',\n", - " 'oliver - you get your victorious reward',\n", - " 'you get your victorious reward',\n", - " 'though your hand is cold',\n", - " 'oliver - you get your victorious reward',\n", - " 'you get your victorious reward',\n", - " 'my beloved hand - break the ties now!',\n", - " 'valði henni herföðr',\n", - " 'hringa ok men',\n", - " 'fekk spjöll spaklig',\n", - " 'ok spá ganda',\n", - " 'sá hon vítt ok of vítt',\n", - " 'of veröld hverja',\n", - " 'sá hon valkyrjur',\n", - " 'vítt of komnar',\n", - " 'görvar at ríða',\n", - " 'til goðþjóðar;',\n", - " 'skuld helt skildi',\n", - " 'en skögul önnur',\n", - " 'gunnr, hildr, göndul',\n", - " 'ok geirskögul',\n", - " 'nú eru talðar',\n", - " 'nönnur herjans',\n", - " 'görvar at ríða',\n", - " 'grund valkyrjur',\n", - " 'ek sá baldri',\n", - " 'blóðgum tívur',\n", - " 'óðins barni',\n", - " 'örlög folgin;',\n", - " 'stóð of vaxinn',\n", - " 'völlum hæri',\n", - " 'mjór ok mjök fagr',\n", - " 'mistilteinn',\n", - " 'varð af þeim meiði',\n", - " 'er mær sýndisk',\n", - " 'harmflaug hættlig',\n", - " 'höðr nam skjóta;',\n", - " 'baldrs bróðir var',\n", - " 'of borinn snemma',\n", - " 'sá nam óðins sonr',\n", - " 'einnættr vega',\n", - " 'þó hann æva hendr',\n", - " 'né höfuð kembði',\n", - " 'áðr á bál of bar',\n", - " 'baldrs andskota;',\n", - " 'en frigg of grét',\n", - " 'í fensölum',\n", - " 'vá valhallar',\n", - " 'vituð ér enn - eða hvat?',\n", - " 'óthinn opened my eyes',\n", - " 'to rings and necklaces',\n", - " 'to the things men own, things the wise know',\n", - " 'to prophecy',\n", - " 'i saw more and more',\n", - " 'looking out over all the worlds',\n", - " 'i saw valkyrjur',\n", - " 'saddled all around',\n", - " 'ready to ride',\n", - " 'to the homes of the gods',\n", - " 'skuld held a shield',\n", - " 'and skǫgul another',\n", - " 'gunnr, hildr, gǫndul',\n", - " 'and geirskǫgul',\n", - " 'now are counted',\n", - " 'the valkyrjur',\n", - " 'ready to ride',\n", - " 'to the earth, the valkyrjur',\n", - " 'i saw baldr',\n", - " 'the bloodied victim',\n", - " 'óthinn’s son',\n", - " 'resigned to his fate',\n", - " 'there stood',\n", - " 'the mistletoe',\n", - " 'grown slender and fair',\n", - " 'high above the plain',\n", - " 'that tree',\n", - " 'which seemed harmless',\n", - " 'caused a terrible sorrow',\n", - " 'when hǫthr took a shot',\n", - " 'baldr’s brother',\n", - " 'was born soon thereafer',\n", - " 'óthinn’s son; he took vengeance',\n", - " 'when one night old',\n", - " 'he had never washed his hands',\n", - " 'nor combed his hair',\n", - " 'when he put baldr’s slayer',\n", - " 'on the funeral pyre',\n", - " 'frigg wept',\n", - " 'in fensalir',\n", - " 'for the woe of valhǫll',\n", - " 'have you learned enough yet, allfather?']},\n", - " 'data': ['grjót og stál opna gáttir',\n", - " 'sem hönd hefur læst',\n", - " '(from the shouting of rocks',\n", - " 'his eyes finally opened)',\n", - " 'ðá cóm of more',\n", - " 'under misthleoþum',\n", - " 'grendel gongan',\n", - " 'godes yrre bær•',\n", - " 'mynte se mánscaða',\n", - " 'manna cynnes',\n", - " 'sumne besyrwan',\n", - " 'in sele þám héan•',\n", - " 'né þæt se áglaéca',\n", - " 'yldan þóhte',\n", - " 'ac hé geféng hraðe',\n", - " 'forman síðe',\n", - " 'slaépendne rinc',\n", - " 'slát unwearnum•',\n", - " 'bát bánlocan',\n", - " 'blód édrum dranc•',\n", - " 'synsnaédum swealh',\n", - " 'sóna hæfde',\n", - " 'unlyfigendes',\n", - " 'ealgefeormod',\n", - " 'fét ond folma',\n", - " 'lícsár gebád',\n", - " 'atol aéglaéca',\n", - " 'him on eaxle wearð',\n", - " 'syndolh sweotol',\n", - " 'seonowe onsprungon',\n", - " 'burston bánlocan',\n", - " 'béowulfe wearð',\n", - " 'gúðhréð gyfeþe',\n", - " 'scolde grendel þonan',\n", - " 'feorhséoc fléön',\n", - " 'under fenhleoðu',\n", - " 'sécean wynléas wíc',\n", - " 'gryreléoð galan',\n", - " 'godes andsacan',\n", - " 'sigeléasne sang',\n", - " 'sár wánigean',\n", - " 'helle hæfton',\n", - " 'héold hine fæste',\n", - " 'sé þe manna wæs',\n", - " 'mægene strengest',\n", - " 'on þaém dæge',\n", - " 'þysses lífes',\n", - " 'hwær cwóm helm? hwær cwóm byrne?',\n", - " 'hwær cwóm feax flówende?',\n", - " \"7. fafa (doesn't mean anything):\",\n", - " 'þú kemur skríðandi inn í eyðimörkina (you come crawling into the desert)',\n", - " 'þú sérð ei með hvað (?) ljós (you see not with (?) light)',\n", - " 'hann bíður bara dagsins í dag (he only waits for today)',\n", - " 'sykurlaus (sugarless)',\n", - " 'kjarna(?) (core of something)',\n", - " 'þennan hring (?) (this circle (?))',\n", - " 'bíð ég þín (i wait for you)',\n", - " 'þú kemst ei áfram fafafafa (you cannot go forward fafafafa)',\n", - " 'hann er þar og fafafa (he is there and fafafa)',\n", - " 'fáðu fafa fáðu fafa (get fafa get fafa)',\n", - " '(?)',\n", - " 'fáðu fafa (get fafa)',\n", - " 'heill dagr',\n", - " 'heilir dags synir',\n", - " 'heil nótt ok nift',\n", - " 'óreiðum augum',\n", - " 'lítið okkr þinig',\n", - " 'ok gefið sitjöndum sigr',\n", - " 'heilir æsir',\n", - " 'heilar ásynjur',\n", - " 'heil sjá in fjölnýta fold',\n", - " 'mál ok mannvit',\n", - " 'gefið okkr mærum tveim',\n", - " 'ok læknishendr, meðan lifum',\n", - " '\"hail, day!',\n", - " 'hail, sons of day!',\n", - " 'and night and her daughter now!',\n", - " 'look on us here',\n", - " 'with loving eyes',\n", - " 'that waiting we victory win',\n", - " '\"hail to the gods!',\n", - " 'ye goddesses, hail',\n", - " 'and all the generous earth!',\n", - " 'give to us wisdom',\n", - " 'and goodly speech',\n", - " 'and healing hands, life-long',\n", - " 'starálfur staring elf',\n", - " 'blá nótt yfir himininn blue night over the sky',\n", - " 'blá nótt yfir mér blue night over me',\n", - " 'horf-inn út um gluggann dis-appeared out of the window',\n", - " 'minn með hendur me with hands',\n", - " 'faldar undir kinn hidden under my cheek',\n", - " 'hugsum daginn minn i think about my day',\n", - " 'í dag og í gær today and yesterday',\n", - " 'blá náttfötin klæða mig í i put on my blue nighties',\n", - " 'beint upp í rúm go straight to bed',\n", - " 'breiði mjúku sængina i pull the soft covers over',\n", - " 'loka augunum close my eyes',\n", - " 'ég fel hausinn minn undir sæng i hide my head under the covers',\n", - " 'starir á mig lítill álfur a little elf stares at me',\n", - " \"hleypur að mér en hreyfist ekki runs towards me but doesn't move\",\n", - " 'úr stað - sjálfur from place - himself',\n", - " 'starálfur a staring elf',\n", - " 'opna augun i open my eyes',\n", - " 'stírurnar úr take the crusts out',\n", - " \"teygi mig og tel (hvort ég sé ekki) stretch myself and check (if i haven't)\",\n", - " 'kominn aftur og alltalltílæ returned again and everything is okay',\n", - " 'samt vantar eitthvað still there is something missing',\n", - " 'eins og alla vegginna like all the walls',\n", - " 'verðug dróttning stór',\n", - " 'hjarta af gulli skína',\n", - " 'kronum þik med vánum, ást ok trú',\n", - " 'fagra, grýttur land, heimr árnadalr',\n", - " 'fylgið dróttningu ljóssins',\n", - " 'worthy queen of ages',\n", - " 'the heart of gold shines',\n", - " 'we crown thee with hope, love, and faith',\n", - " 'beautiful, stony land, home arendelle',\n", - " 'follow the queen of light',\n", - " 'fyrir ofan vatnajökul',\n", - " 'ekki langt frá ódáðahraun',\n", - " 'þar á fúsi hreindýr heima',\n", - " 'þá ferðast hann á laun',\n", - " 'hann fúsi hreindýr syngur',\n", - " 'við fossanið og kvak',\n", - " 'hann leikur sér hjá læknum',\n", - " 'lengst inn við fjallabak',\n", - " 'húllum hæ, húllum hæ - fúsi hreindýr syngur æ',\n", - " 'þegar klukkan slær - einn, tveir, þrír',\n", - " 'já þá er hann ekki seinn',\n", - " 'er hann ekki seinn',\n", - " 'er hann ekki seinn að stinga sér í volgan hver',\n", - " 'húllum hæ, húllum hæ - fúsi hreindýr syngur æ',\n", - " 'þegar klukkan slær - einn, tveir, þrír',\n", - " 'þá vill hann tala við geir',\n", - " 'vill hann tala við geir',\n", - " 'vill hann tala við geir um það',\n", - " 'hve gaman sé á þessum stað',\n", - " 'fyrir ofan vatnajökul',\n", - " 'húllum hæ, húllum hæ - fúsi hreindýr syngur æ',\n", - " 'þegar klukkan slær - einn, tveir, þrír',\n", - " 'takk, nú eru góð ráð dýr',\n", - " 'eru góð ráð dýr',\n", - " 'eru góð ráð dýr af þvi',\n", - " 'hann fúsi vill fara í sumarfrí',\n", - " 'húllum hæ, húllum hæ - fúsi hreindýr syngur æ',\n", - " 'þegar klukkan slær - einn, tveir, þrír',\n", - " 'nú er hann fúsi stór',\n", - " 'er hann fúsi stór',\n", - " 'er hann fúsi stærsta dýr sem',\n", - " 'ekur um í fjórða gír',\n", - " 'far above the vatnajökull glacier',\n", - " 'not far away from the ódáðahraun lavafield',\n", - " 'there is where fúsi reindeer lives',\n", - " 'he wanders there alone',\n", - " 'fúsi reindeer sings',\n", - " 'by the waterfalls and bird-songs',\n", - " 'he plays by the stream',\n", - " 'all the way furthest in by fjállabak',\n", - " 'hullum hey, hullum hey - fúsi reindeer always sings',\n", - " 'when the clock strikes - one, tock, three',\n", - " 'yes then he is never late',\n", - " 'he is never late',\n", - " 'he is never late to dive into a warm spring',\n", - " 'hullum hey, hullum hey - fúsi reindeer always sings',\n", - " 'when the clock strikes - one, tock, three',\n", - " 'yes then he wants to talk to geir',\n", - " 'he wants to talk to geir',\n", - " 'he wants to talk to geir about',\n", - " 'what fun there is to be had in this town',\n", - " 'far avbove the vatnajökull glacier',\n", - " 'hullum hey, hullum hey - fúsi reindeer always sings',\n", - " 'when the clock strikes - one, two, three',\n", - " 'tock, now good advices are dear',\n", - " 'good advises are dear',\n", - " 'good advises are dear because',\n", - " 'fúsi wants to go on a summer holiday',\n", - " 'hullum hey, hullum hey - fúsi reindeer always sings',\n", - " 'when the clock strikes - one, two, three',\n", - " 'now fúsi, he is big',\n", - " 'fúsi, he is big',\n", - " 'fúsi, he is the biggest animal that',\n", - " 'rides around with four gears']}}},\n", - " 'it': {'sentence': {'pop': {'meta': {'train_data': ['alegria',\n", - " 'come un lampo di vita',\n", - " 'alegria',\n", - " 'come un pazzo gridar',\n", - " 'alegria',\n", - " 'del delittuoso grido',\n", - " 'bella ruggente pena, seren',\n", - " 'come la rabbia di amar',\n", - " 'alegria',\n", - " 'come un assalto di gioia',\n", - " 'alegria',\n", - " 'i see a spark of life shining',\n", - " 'alegria',\n", - " 'i hear a young minstrel sing',\n", - " 'alegria',\n", - " 'beautiful roaring scream',\n", - " 'of joy and sorrow',\n", - " 'so extreme',\n", - " 'there is a love in me raging',\n", - " 'alegria',\n", - " 'a joyous, magical feeling',\n", - " 'alegria',\n", - " 'come un lampo di vita',\n", - " 'alegria',\n", - " 'come un pazzo gridar',\n", - " 'alegria',\n", - " 'del delittuoso grido',\n", - " 'bella ruggente pena, seren',\n", - " 'come la rabbia di amar',\n", - " 'alegria',\n", - " 'come un assalto di gioia',\n", - " 'del delittuoso grido',\n", - " 'bella ruggente pena, seren',\n", - " 'come la rabbia di amar',\n", - " 'alegria',\n", - " 'come un assalto di gioia',\n", - " 'alegria',\n", - " 'como la luz de la vida',\n", - " 'alegria',\n", - " 'como un payaso que grita',\n", - " 'alegria',\n", - " 'del estupendo grito',\n", - " 'de la tristeza loca',\n", - " 'serena',\n", - " 'como la rabia de amar',\n", - " 'alegria',\n", - " 'como un asalto de felicidad',\n", - " 'del estupendo grito',\n", - " 'de la tristeza loca',\n", - " 'serena',\n", - " 'como la rabia de amar',\n", - " 'alegria',\n", - " 'como un asalto de felicidad',\n", - " 'there is a love in me raging',\n", - " 'alegria',\n", - " 'a joyous, magical feeling',\n", - " 'arivam terda a la sira',\n", - " 'coi strumeint in dal bavol',\n", - " \"a g'am al bas e la chitara e po al viulein\",\n", - " \"a g'am dal machini ch'i an fat toti la guera\",\n", - " \"a gh' quala ed lucio\",\n", - " \"c'la g'ha un cartoun a tac a la purtera\",\n", - " 'eh - oh a sam la banda',\n", - " 'a sam gnu che par suner',\n", - " \"an's ciapa gnanc un sold\",\n", - " \"ma a gh' da fer dal gran casein\",\n", - " 'a sam la banda i sunador',\n", - " 'con du tambur e gnanc un sold',\n", - " 'a sam gnu par fer baraca tota sira',\n", - " 'a sam la banda i sunador',\n", - " 'qui dal viulein e qui dal folk',\n", - " 'a sam gnu par fer baraca tota sira',\n", - " \"a gh' i delinqueint ed modna\",\n", - " 'i delinqueint ed modna',\n", - " \"a gh' i delinqueint ed modna\",\n", - " 'i delinqueint ed modna',\n", - " 'a sam visti c** di puvret',\n", - " \"a g'am dal ghegni ch'i fan spaveint\",\n", - " \"a gh' un bancari, a gh' un dutor e di sfigh\",\n", - " \"ma eh - oh quand a's partes\",\n", - " \"a'g vin d'la mosa, a'g vin dal fes\",\n", - " \"e un, du, tri, quater la gint i d'vinten mat\",\n", - " \"a's va in gir par la muntagna\",\n", - " 'e par la basa ad oc sbare',\n", - " \"al prem c'a'l s'indurmeinta\",\n", - " 'al ciapa un sciaf a tac i deint',\n", - " 'a sam la banda i sunador',\n", - " 'con du tambur e gnanc un sold',\n", - " 'a sam gnu par fer baraca tota sira',\n", - " 'a sam la banda i sunador',\n", - " 'qui dal viulein e qui dal folk',\n", - " 'a sam gnu par fer baraca tota sira',\n", - " \"a gh' i delinqueint ed modna\",\n", - " 'i delinqueint ed modna',\n", - " \"a gh' i delinqueint ed modna\",\n", - " 'i delinqueint ed modna',\n", - " \"will you ever see that i couldn't turn a blind eye?\",\n", - " 'the day that we said goodbye',\n", - " \"it's true that someday your honesty will pay\",\n", - " \"now who's gonna say?\",\n", - " 'da quando non mi hai più cercato',\n", - " 'mi sembra molto più difficile',\n", - " 'credevo di essere più forte',\n", - " 'di quella sera e tutte le parole',\n", - " 'ed è bastato un solo sguardo',\n", - " 'solo una volta non lo scordi più',\n", - " 'rincontrarsi nei pensieri',\n", - " 'ritrovarsi come ieri',\n", - " 'anche se non può più tornare',\n", - " 'basta una volta e non lo scordi più',\n", - " 'quella sera e tutte le parole (scordi più)',\n", - " \"will you ever see that i couldn't turn a blind eye?\",\n", - " 'the day that we said goodbye',\n", - " \"it's true that someday your honesty will pay\",\n", - " 'and i paid my dues',\n", - " \"now who's gonna say?\",\n", - " 'win or lose',\n", - " 'senza ormai più chiedersi',\n", - " 'se mai ce la farò',\n", - " 'e se domani domani forse ritornerò',\n", - " 'magari un giorno poi',\n", - " 'poi me ne pentirò',\n", - " 'ma ne valeva la pena rischiare tutto o no?',\n", - " 'never seems so really ended',\n", - " \"no i can't really forget it\",\n", - " \"no i can't forget you\",\n", - " \"will you ever see that i couldn't turn a blind eye?\",\n", - " 'the day that we said goodbye',\n", - " \"it's true that someday your honesty will pay\",\n", - " 'and i paid my dues',\n", - " \"now who's gonna say?\",\n", - " 'win or lose',\n", - " 'ahhh',\n", - " \"will you ever see that i couldn't turn a blind eye?\",\n", - " 'the day that we said goodbye',\n", - " \"it's true that someday your honesty will pay\",\n", - " 'and i paid my dues',\n", - " \"ed era l'ultimo saluto\",\n", - " 'e non ci penso più...',\n", - " 'cadono giù stalle - stelle',\n", - " 'lacrima (il) tramonto',\n", - " 'gocce di luce dagli occhi',\n", - " 'nella notte cieca',\n", - " 'è qui che a casa mia ormai ritorno',\n", - " \"c'incontreremo stasera\",\n", - " 'menta e rosmarino',\n", - " 'che ho preso a calci le notti',\n", - " 'per starti più vicino',\n", - " \"amor, d'amor sia l'amor perduto!!\",\n", - " 'i feel so lonely tonight',\n", - " 'se per farmi male ti amai',\n", - " 'i feel so lonely tonight',\n", - " \"se per farmi vivo t'amai\",\n", - " 'cadono giù stalle - stelle',\n", - " 'e una monetina',\n", - " 'i miei pensieri in farfalle dentro la mattina',\n", - " 'è qui che a casa mia ormai ritorno',\n", - " 'i feel so lonely tonight',\n", - " 'se per farmi male ti amai',\n", - " 'i feel so lonely tonight',\n", - " 'se per farmi vivo ti amai',\n", - " \"con l'anima in piena\",\n", - " 'mi sgominai',\n", - " 'mi smemorai',\n", - " 'i feel so lonely tonight',\n", - " 'se per farmi male ti amai',\n", - " 'i feel so lonely tonight',\n", - " 'se per farmi vivo ti amai',\n", - " 'i feel so lonely tonight',\n", - " 'se per farmi male ti amai',\n", - " 'i feel so lonely tonight',\n", - " 'se per farmi vivo ti amai',\n", - " \"e t'amo ancora\",\n", - " 'mi piace andare forte',\n", - " \"un po' tra la pazzia e il blues\",\n", - " \"e po mannaggia 'a morte\",\n", - " 'mi sparo due panini al cheese',\n", - " \"a te che te ne 'mporta\",\n", - " \"'a vita è 'a mia\",\n", - " \"it's all right\",\n", - " 'ti chiamerò stanotte',\n", - " 'non ho più schede e sono giù',\n", - " \"'o ssaje ca sotto sotto\",\n", - " 'sta vita nun me piace cchiù',\n", - " 'i believe in you',\n", - " 'i believe in you',\n", - " 'living on the road',\n", - " 'fra la sicilia e il mare',\n", - " 'qualcosa poi succederà',\n", - " 'comprerò il giornale',\n", - " \"it's all right\",\n", - " 'i believe in you',\n", - " 'i believe in you',\n", - " 'living on the road',\n", - " 'adesso non fumare',\n", - " 'guarda le luci andiamo là',\n", - " 'hai paura di volare',\n", - " \"it's all right\",\n", - " 'i believe in you',\n", - " 'i believe in you',\n", - " \"se e' ilegal el fumo\",\n", - " \"no e' certo parche' manca el consumo\",\n", - " 'epur i vende le cartine',\n", - " 'tabachi a scatoloni che resta nee cantine',\n", - " 'da senpre i dise che fa mal',\n", - " 'de gente che se spara',\n", - " \"e' senpre pien el giornal\",\n", - " 'da senpre ritenuo na rovina',\n", - " \"l'alcoismo e' legal ma cuanta\",\n", - " \"gente l'assassina\",\n", - " \"in olanda e' legal\",\n", - " \"cua' invesse no'\",\n", - " \"par la gente e' normal\",\n", - " \"cua' invesse no'\",\n", - " \"e' torna' me amigo da l'olanda\",\n", - " \"e cua' co un caneo i ne spranga\",\n", - " \"in olanda e' legal\",\n", - " \"cua' invesse no'\",\n", - " \"forse le tronbe e' normal\",\n", - " \"cua' invesse no'\",\n", - " \"e' torna' me amigo da l'olanda\",\n", - " \"e cua' co un caneo i ne spranga\",\n", - " 'cuante i ghe ne dise sul fumar',\n", - " 'cuanta gente che no vol gnanca scoltar',\n", - " \"un rito che no e' de sta cultura\",\n", - " \"e la mafia se fa i sche'i\",\n", - " \"sora un clima de pau'ra\",\n", - " \"li insegna che l'alcol fa sangue, vitamine\",\n", - " \"e no' pal vostro ben\",\n", - " \"parche' i ve roba le medissine\",\n", - " \"no e' tanto meio meso litro in ostaria\",\n", - " \"de bever un cafe' o fumar un ciospo de maria\",\n", - " \"in olanda e' legal\",\n", - " \"cua' invesse no'\",\n", - " \"par la gente e' normal\",\n", - " \"cua' invesse no'\",\n", - " \"e' torna' me amigo da l'olanda\",\n", - " \"e cua' co un caneo i ne spranga\",\n", - " \"in olanda e' legal\",\n", - " \"cua' invesse no'\",\n", - " \"forse le tronbe e' normal\",\n", - " \"cua' invesse no'\",\n", - " \"e' torna' me amigo da l'olanda\",\n", - " \"e cua' co un caneo i ne spranga\",\n", - " \"par certa gente e' ilegal fumar\",\n", - " 'la stessa gente giustifica copar',\n", - " \"ligarte se ti fumi, cuea e' la so civilta'\",\n", - " \"a venessia sconto in cae a ansterdan senta'\",\n", - " 'pensa che ben poderte far trancuio i to canoni',\n", - " 'gnente para in giro e ronpimenti de coioni',\n", - " \"se cua' fusse cussi' pensa\",\n", - " 'i turisti che vegnaria',\n", - " \"par inpossibile ma rilanciaria l'economia\",\n", - " \"in olanda e' legal\",\n", - " \"cua' invesse no'\",\n", - " \"par la gente e' normal\",\n", - " \"cua' invesse no'\",\n", - " \"e' torna' me amigo da l'olanda\",\n", - " \"e cua' co un caneo i ne spranga\",\n", - " \"in olanda e' legal\",\n", - " \"cua' invesse no'\",\n", - " \"forse le tronbe e' normal\",\n", - " \"cua' invesse no'\",\n", - " \"e' torna' me amigo da l'olanda\",\n", - " \"e cua' co un caneo i ne spranga\",\n", - " 'sorridi provocandomi',\n", - " 'con gli occhi mi incateni qui',\n", - " 'mi lasci andare tanto sai',\n", - " 'che puoi riprendermi',\n", - " \"you're drowning in the deep for me (sei sabbie mobili)\",\n", - " \"i love the way i'm drawn to you (tu sai accendermi)\",\n", - " 'just like oceans rise to kiss the moon',\n", - " \"it's gravity, our love is like gravity\",\n", - " 'tu che mi dai vita completamente',\n", - " 'calmami e di colpo pretendimi',\n", - " 'mani come nodi stringono noi',\n", - " 'che attraversiamo sabbie mobili',\n", - " 'bring me back to life when you light my fire',\n", - " 'makes me feel so high never coming down',\n", - " \"it's more than just fantasy come true\",\n", - " 'i feel your love rising from deep inside of me',\n", - " \"up to ecstasy, fino all'estasi\",\n", - " \"your desire's pulling me\",\n", - " 'to exaclty where i need to be',\n", - " \"it's so good that i can hardly breathe\",\n", - " 'i feel it take over me',\n", - " \"mi lasci ancora immergere (you give me all you've got)\",\n", - " 'sei acqua che sa spegnermi (you make me feel so free)',\n", - " 'e il tuo sapore diventerà forza di gravità',\n", - " 'bring me back to life when you light my fire',\n", - " 'makes me feel so high never coming down',\n", - " 'take control and show me how it feels',\n", - " 'to go from heaven up to ecstasy',\n", - " 'sento ogni battito del tuo cuore',\n", - " 'stringere i miei sensi immobili',\n", - " 'un sospiro appeso a un brivido qui',\n", - " 'che così intenso dal profondo sale su',\n", - " \"fino all'estasi\",\n", - " \"you're drowning in the deep for me\",\n", - " \"don't fight it just let it be (fino all'estasi)\",\n", - " \"now your desire's pulling me\",\n", - " \"our love is like gravity, it's gravity, baby\",\n", - " 'tu che mi dai vita completamente',\n", - " 'calmami e di colpo pretendimi',\n", - " 'take control and show me how it feels',\n", - " 'to go from heaven up to ecstasy',\n", - " 'sento ogni battito del tuo cuore',\n", - " 'stringere i miei sensi immobili',\n", - " \"it's more than just fantasy come true\",\n", - " 'i feel your love rising from deep inside of me',\n", - " \"up to ecstasy, fino all'estasi\",\n", - " 'up to ecstasy',\n", - " 'mr. e. jones, il sole è alto tirati su',\n", - " 'mr. e. jones, se stai sognando svegliati',\n", - " \"mr. e. jones dai resti a letto forse un po' di più\",\n", - " 'mr. e. jones prepara il tuo caffè',\n", - " 'mr. e. jones, sei già in ritardo, sempre così',\n", - " 'mr. e. jones, non perder tempo, vestiti',\n", - " \"mr. e. jones c'è già in cucina odore di caffè (ricordi tua madre)\",\n", - " 'mr. e. jones lo preparava lei',\n", - " 'e, ti svegliava, il suo profumo',\n", - " 'e, ti piaceva, il suo profumo',\n", - " 'mr. e. jones, vestito in grigio, bene così',\n", - " 'mr. e. jones, sei quasi pronto, sbrigati',\n", - " 'mr. e. jones la porta è aperta, scendi giù un città (corri in ufficio)',\n", - " 'mr. e. jones prendi il cappello e vai',\n", - " 'mr. e. jones la porta è aperta, scendi giù un città',\n", - " 'mr. e. jones la porta è aperta, scendi giù un città',\n", - " 'mr. e. jones',\n", - " 'so fatte u frikkettone a botte de triusche',\n", - " 'e me so devertute che coline e francische',\n", - " \"ma mo so pendite e che le terrise me ne 'a sci\",\n", - " 'e de fa u frikkettone non ne vogghie chiù sapè',\n", - " 'non ne vogghie chiù sapè',\n", - " 'de fa u frikkettone',\n", - " 'e de fa u frikkettone',\n", - " 'non ne vogghie chiù sapè',\n", - " 'a japige so sciute p’u fume sci a’ccattà',\n", - " 'e a cudde ce so ditte non te pozze pagà',\n", - " 'jidde me pigghie a sckaffe, \"dammille le terrise',\n", - " 'e vattinne da do c’ non vuè jesse accise\"',\n", - " 'non ne vogghie chiù sapè...',\n", - " 'so assute dalla palde vindemila lilre',\n", - " 'e u chernute che chidde vattinne da u verviire',\n", - " '\"le terrise so picche però fasce nudde',\n", - " 'mo vene la madame e c’avà frecà a tutte\"',\n", - " 'non ne vogghie chiù sapè...',\n", - " 'o centre sociale stonne nu muerse sckattate',\n", - " 'le chempagne a dorme tu le vide scettate',\n", - " 'la destra a venciute e nu ce stame a chiamendà',\n", - " 'e u fume da a la cape ce fasce stetà',\n", - " 'non ne vogghie chiù sapè...',\n", - " \"mo j'a sci a tezzuà da mammà e da tatà\",\n", - " \"p'cé lore secure robba bbone m'anna dà\",\n", - " '\"al pettuccio fa bene una tazza di tè\"',\n", - " 'e de fa u frikkettone non ne vogghie chiù sapé',\n", - " 'non ne vogghie chiù sapè...',\n", - " 'i sing ammore',\n", - " 'per dirti: \"darling, i love you',\n", - " 'sto inguaiato, ti amo very much',\n", - " 'purtroppo però non lo so dir\"',\n", - " 'do you capire?',\n", - " 'my love, tu dare solo un kiss',\n", - " 'io pregare, tu credermi perché',\n", - " 'desidero te for me',\n", - " 'e non sapendo \"catarì\"',\n", - " 'né \"torna a surriento\"',\n", - " 'canto \"only you\"',\n", - " 'solo per te',\n", - " 'i sing ammore',\n", - " 'do you capire oppure no?',\n", - " 'voglio dirti \"i love you, i love you so',\n", - " 'e resta così with me\"',\n", - " 'e non sapendo \"catarì\"',\n", - " 'né \"torna a surriento\"',\n", - " 'canto \"only you\"',\n", - " 'solo per te',\n", - " 'i sing ammore',\n", - " 'do you capire oppure no?',\n", - " 'voglio dirti \"i love you, i love you so',\n", - " 'e resta così accanto a me\"',\n", - " 'i sing ammore',\n", - " 'i sing ammore',\n", - " 'voglio essere gainsbourg',\n", - " 'voglio una lolita al mou',\n", - " 'ay marieke mon amour',\n", - " 'dammi quello che vuoi tu',\n", - " 'se con gli altri balli il twist',\n", - " 'se con gli altri prendi il trip',\n", - " 'dove vado non lo so',\n", - " 'quanto male ti farò',\n", - " 'voglio essere gainsbourg',\n", - " 'voglio una lolita al mou',\n", - " 'ay marieke mon amour',\n", - " 'dammi quello che vuoi tu',\n", - " 'voglio il ciuffo di de andré',\n", - " 'e una bimba come te',\n", - " 'build the modern chansonnier',\n", - " 'build the modern chansonnier',\n", - " 'build the modern chansonnier',\n", - " 'build the modern chansonnier',\n", - " 'certi giorni penso che',\n", - " 'voglio odiare i want to hate',\n", - " 'copulare in hit parade',\n", - " 'ammazzarmi insieme a te',\n", - " 'forse un giorno morirò',\n", - " 'amplificatore vox',\n", - " 'if i die juliette greco',\n", - " \"all'inferno brucerò\",\n", - " 'certi giorni penso che',\n", - " 'voglio odiare i want to hate',\n", - " 'copulare in hit parade',\n", - " 'suicidarmi insieme a te',\n", - " 'il tabacco di de andré',\n", - " 'e una fica come te',\n", - " 'build the modern chansonnier',\n", - " 'build the modern chansonnier',\n", - " 'build the modern chansonnier',\n", - " 'build the modern chansonnier',\n", - " 'ho visto un sogno',\n", - " \"l'ho visto c'è\",\n", - " 'oltre le stelle',\n", - " 'è acceso in me',\n", - " \"l'ho visto in terra\",\n", - " \"l'ho visto in te\",\n", - " \"l'ho visto dove\",\n", - " \"visto dov'è\",\n", - " 'love is',\n", - " 'love is all around',\n", - " \"l'ho visto altrove\",\n", - " \"l'ho visto qua\",\n", - " 'nel sole giallo',\n", - " \"io l'ho visto già\",\n", - " \"l'ho visto al buio\",\n", - " 'con gli occhi tuoi',\n", - " 'quando i miei occhi',\n", - " 'erano stanchi ormai',\n", - " 'love is',\n", - " 'love is',\n", - " \"it's all around\",\n", - " 'love is love',\n", - " \"it's all around\",\n", - " 'stiamo ballando',\n", - " 'tra le rovine',\n", - " 'sulle macerie',\n", - " 'cercando amore',\n", - " 'fino alla fine',\n", - " 'tra le nostre miserie',\n", - " 'love is all around',\n", - " \"l'ho visto nero\",\n", - " \"l'ho visto in me\",\n", - " 'credevo allora',\n", - " 'che fossi tu',\n", - " 'ho visto un sogno',\n", - " 'sembrava vero',\n", - " 'ci credo ancora',\n", - " 'e ancora spero',\n", - " 'love is love',\n", - " 'is all around',\n", - " 'love is love',\n", - " \"it's all around\",\n", - " 'stiamo ballando',\n", - " 'tra le rovine',\n", - " 'sulle macerie',\n", - " 'cercando amore',\n", - " 'fino alla fine',\n", - " 'tra le nostre miserie',\n", - " 'love is all around',\n", - " 'love is all around',\n", - " 'love is',\n", - " 'i think love is',\n", - " \"it's all around\",\n", - " 'love is love',\n", - " \"it's all around\",\n", - " 'i say love love',\n", - " \"it's all around\",\n", - " 'love is love',\n", - " \"it's all around\",\n", - " 'i feel the knife at my throat',\n", - " 'and it cuts and it burns',\n", - " 'have you no mercy',\n", - " 'i feel the knife at my throat',\n", - " 'and it cuts and it burns',\n", - " 'have you no mercy',\n", - " 'you laugh as i twist and i turn',\n", - " 'crushing the air in my chest',\n", - " 'till there is no air to breathe',\n", - " \"pray there's a way to escape\",\n", - " 'but the joke is on me',\n", - " 'show me some hope',\n", - " 'show me some light',\n", - " 'cause i got nothing left in me tonight',\n", - " \"if i don't go\",\n", - " 'if i say no',\n", - " 'is it the end?',\n", - " 'scappo perché so che non saprei dirti di no',\n", - " 'vorrei giurarti che tornerò presto ma no',\n", - " 'non posso dirtelo lasciarti in bilico mai',\n", - " 'mai o mai',\n", - " \"piuttosto insultami con tutto l'odio che hai\",\n", - " 'quello che so',\n", - " 'è che vorrei',\n", - " 'star dentro tutte le cose che sei',\n", - " \"if i don't go\",\n", - " 'if i say no',\n", - " 'is it the end?',\n", - " 'graffi che parlano e mi ricordano che',\n", - " 'ci sei',\n", - " 'dentro i miei guai',\n", - " 'nel buio tu sei luce per sempre',\n", - " 'dentro i miei guai',\n", - " 'nel buio tu sei',\n", - " 'luce per sempre',\n", - " 'luce per sempre',\n", - " \"if i don't go\",\n", - " 'if i say no',\n", - " 'is it the end?',\n", - " 'graffi che parlano e mi ricordano che',\n", - " 'ci sei',\n", - " 'dentro i miei guai',\n", - " 'nel buio tu sei luce per sempre',\n", - " 'fa così freddo',\n", - " 'fa così freddo',\n", - " \"lanciami un'ancora di salvezza\",\n", - " 'luce per sempre',\n", - " \"un'ancora di salvezza\",\n", - " 'luce per sempre',\n", - " 'se la vita che dai',\n", - " 'a chi ti chiede aiuto',\n", - " 'se il pensiero che hai',\n", - " \"e' gi concreto in me\",\n", - " 'la preghiera che fai',\n", - " \"e' il credo che ho cercato\",\n", - " 'un sapore che ormai io non baciavo piu',\n", - " 'e mi abbandono a te',\n", - " 'la mia pace stabile',\n", - " 'ed abbandono tutti i miei se',\n", - " \"you'll always be a part of me\",\n", - " 'resta qui, nel vento che ha soffiato',\n", - " \"you'll always be inside of me\",\n", - " \"resta qui per un po'\",\n", - " 'se il rispetto che dai',\n", - " \"e' darti senza fiato\",\n", - " 'se la scelta che fai',\n", - " \"e' una carezza in pi\",\n", - " 'se nel tempo che hai',\n", - " 'il tuo vero alleato',\n", - " 'un sentiero che ormai',\n", - " 'io non passavo pi',\n", - " 'io mi abbandono a te',\n", - " 'ad una pace affabile',\n", - " 'ed abbandono tutti i miei se',\n", - " \"you'll always be a part of me\",\n", - " 'resta qui',\n", - " 'nel posto che hai trovato',\n", - " \"you'll always be inside of me\",\n", - " \"resta qui per un po'\",\n", - " 'e mi abbandono a te',\n", - " 'a una pace immobile',\n", - " 'poi ti abbandoni su di me',\n", - " \"you'll always be a part of me\",\n", - " 'resto qui',\n", - " 'nel vento che hai portato',\n", - " \"you'll always be inside of me\",\n", - " \"resta qui per un po'\",\n", - " \"you'll always be a part of me\",\n", - " 'reti qui',\n", - " 'nel posto che ho cercato',\n", - " \"you'll always be inside of me\",\n", - " \"resto qui per un po'\",\n", - " \"resta qui per un po'\",\n", - " \"you'll always be a part of me\",\n", - " '--alessandro safina:',\n", - " 'vive il ricordo',\n", - " 'di quel primo momento',\n", - " 'magico incontro',\n", - " 'in un giorno di vento',\n", - " 'e le parole che non ho trovato mai',\n", - " 'come per miracolo per te le trovai',\n", - " 'io ti chiamai passione',\n", - " 'incanto ed armonia',\n", - " 'parole antiche',\n", - " 'parole nuove',\n", - " 'venute da chissà dove',\n", - " 'ti dissi che sei un sogno',\n", - " 'che sempre sognerò',\n", - " 'tu sei aria e memoria',\n", - " 'e sempre ti amerò',\n", - " 'aria e memoria',\n", - " 'è storia di una storia',\n", - " 'respiro e sento',\n", - " 'che tu mi vivi dentro',\n", - " \"e l'infinito adesso esiste e so cos'è\",\n", - " 'è saper amare come io amo te',\n", - " 'ti chiamerò passione',\n", - " 'incanto ed armonia',\n", - " 'parole in piena',\n", - " 'che come un fiume',\n", - " 'si getteranno nel cuore',\n", - " \"ti parlerò d'amore\",\n", - " 'finchè non dormirai',\n", - " 'sarai aria e memoria',\n", - " 'non mi lasciare mai',\n", - " '--chrissie hynde:',\n", - " 'your voice is all i hear',\n", - " 'your smile is all i see',\n", - " 'wishes come true',\n", - " 'i know why',\n", - " 'i see the passion in your eyes',\n", - " 'you casted a spell upon me',\n", - " 'your voice',\n", - " \"i'm your trust\",\n", - " \"we'll be together\",\n", - " 'you are the leading on my dreams',\n", - " 'and we will dream forever',\n", - " 'you are the song in my heart',\n", - " \"and i'll always love you\",\n", - " 'your touch tell me this',\n", - " 'heaven does exist',\n", - " 'i know you will be there',\n", - " 'come what may',\n", - " 'i see the passion in your eyes',\n", - " 'you casted a spell upon me',\n", - " 'your voice',\n", - " \"i'm your trust\",\n", - " \"we'll be together\",\n", - " 'and i will sing to you of love',\n", - " 'untill you save the night',\n", - " 'you are the song in my heart',\n", - " \"and i'll always love you (2x)\",\n", - " 'ohh-ohh, ah',\n", - " \"wide awake, can't think straight\",\n", - " \"i'm alright, it's too late, yeah\",\n", - " 'at night i am light, i am bright in the night',\n", - " \"out of sight, i'll be bright\",\n", - " \"like a star, i'll go far\",\n", - " \"like a star we'll go far in the dark\",\n", - " \"when the night i can't sleep\",\n", - " 'wide awake, fighting dreams',\n", - " 'they are huge, earth to moon',\n", - " \"and i know they'll become true\",\n", - " \"soon as bright, i'm alive\",\n", - " \"like a star, i'll go far\",\n", - " \"like a star we'll go far in the dark\",\n", - " \"sfumature dell'anima (anima)\",\n", - " 'sono cresciute in camera (cresciute in camera)',\n", - " 'sono sei personalità (personalità)',\n", - " 'siamo il tempo che passerà (passerà)',\n", - " \"sì, ricordi lontani, ma' (lontani, ma')\",\n", - " 'due ragazzini in macchina (macchina)',\n", - " 'morire è matematica (matematica)',\n", - " 'come pioggia che poi cadrà (poi cadrà)',\n", - " 'la vita che non capirai',\n", - " 'siamo noi, luna pallida',\n", - " 'e ad amarsi ti ammalerai',\n", - " 'sì, cuori di ceramica',\n", - " 'si guarisce metà e metà',\n", - " 'la vita è una metafora',\n", - " 'cinematografica',\n", - " 'come una videocamera',\n", - " \"when the night i can't sleep\",\n", - " 'wide awake, fighting dreams',\n", - " 'they are huge, earth to moon',\n", - " \"and i know they'll become true\",\n", - " \"soon as bright, i'm alive\",\n", - " \"like a star, i'll go far\",\n", - " \"like a star we'll go far in the dark\",\n", - " 'quando la notte non riesco a dormirci',\n", - " 'quando finirà tu, ti prego, stringimi',\n", - " 'vita toglie senza darci motivi, sì',\n", - " 'crisi ed instabili tratti emotivi, sì',\n", - " 'quando non ci sarai, ti prego, fingi di',\n", - " 'quando la notte non potrò più stringerti',\n", - " \"resta stanotte, sì, anche s'è egoista, sì\",\n", - " 'anche se guarissi, solo per finta, sì',\n", - " \"when the night i can't sleep\",\n", - " 'wide awake, fighting dreams',\n", - " 'they are huge, earth to moon',\n", - " \"and i know they'll become true\",\n", - " \"soon as bright, i'm alive\",\n", - " \"like a star, i'll go far\",\n", - " \"like a star we'll go far in the dark\",\n", - " \"wide awake, can't think straight\",\n", - " \"i'm alright, it's too late, yeah\",\n", - " 'at night i am light, i am bright in the night',\n", - " \"out of sight, i'll be bright\",\n", - " \"like a star, i'll go far\",\n", - " \"like a star we'll go far in the dark\",\n", - " 'in the night, hey',\n", - " 'ricordo feste di schiuma',\n", - " \"di te l'odore che respirai\",\n", - " 'mi segue come una piuma',\n", - " \"'cause i'm still loving you\",\n", - " 'forse non lo sai ma è vero',\n", - " \"'cause i'm still loving you\",\n", - " 'forse non ci credi ma spero',\n", - " \"'cause i'm still loving you\",\n", - " 'ricordo pioggia che passa',\n", - " 'mi manchi e tu non passi mai',\n", - " 'mi segue come una carezza',\n", - " \"'cause i'm still loving you\",\n", - " 'forse non lo sai ma è vero',\n", - " \"'cause i'm still loving you\",\n", - " 'forse non ci credi ma spero',\n", - " \"'cause i'm still loving you\",\n", - " 'forse non lo sai ma è vero',\n", - " \"'cause i'm still loving you\",\n", - " 'dimmi che ci credi, lo spero',\n", - " \"'cause i'm still loving you\",\n", - " \"'cause i'm still loving you\",\n", - " \"i'm still loving you!!!\",\n", - " '(grazie a ornella291289 per questo testo)',\n", - " 'johnny, el pagante esta muy loco!',\n", - " 'zio, te ne pentirai',\n", - " 'north face, snake, volcom style',\n", - " 'booster, nike, iuter',\n", - " 'magazza non si discute',\n", - " 'timberland, air max',\n", - " 'pass per il wapp',\n", - " 'pass pass pass',\n", - " 'vodka menta al magenta',\n", - " 'poi dal pusher compro un penta',\n", - " \"la serata è un po' spenta\",\n", - " 'ma la pupa la fomenta',\n", - " 'zio no!',\n", - " 'minchia frate cannonate',\n", - " 'le serate sempre pagate',\n", - " 'le impennate sopra il rello',\n", - " 'minchia zibo che bordello',\n", - " 'johnny, el pagante esta muy loco!',\n", - " 'entro in pass al lime',\n", - " 'tuta adidas e nike',\n", - " 'cazzo me ne sai, i got a feeling tonight',\n", - " 'entro in pass al lime',\n", - " 'tuta adidas e nike',\n", - " 'cazzo me ne sai, i got a feeling tonight',\n", - " 'prima aber poi guastalla',\n", - " 'la mia vita è sempre a palla',\n", - " 'qui al tumi ci si scialla',\n", - " 'e al rattazzo ci si sballa',\n", - " 'poi al reef, altro spliff',\n", - " 'con i soci sempre in trip',\n", - " 'strappo un drink alla goccia',\n", - " 'mi ubriaco come... boh?',\n", - " 'vodka menta, al magenta',\n", - " 'poi dal pusher compro un penta',\n", - " \"la serata è un po' spenta\",\n", - " 'ma la pupa la fomenta',\n", - " 'johnny el pagante esta muy loco!',\n", - " 'zio no!',\n", - " 'entro in pass al lime',\n", - " 'tuta adidas e nike',\n", - " 'cazzo me ne sai, i got a feeling tonight',\n", - " 'entro in pass al lime',\n", - " 'tuta adidas e nike',\n", - " 'cazzo me ne sai, i got a feeling tonight',\n", - " 'tarzan, dean, boogie e penny lane',\n", - " 'hanno rubato i sogni ai tempi miei',\n", - " 'la musica leggera oggi',\n", - " 'nelle classifiche dei dischi impera',\n", - " 'good good-bye, hollywood',\n", - " \"non lo so, cos'è importante o no\",\n", - " 'helmut newton, greta aveva stile',\n", - " 'cerco un vestito tutto nero',\n", - " \"passa un'auto in corsa\",\n", - " \"e' come un film da un finestrino chiuso\",\n", - " 'good good-bye, dancing night',\n", - " \"still the rain, i'll see your face again\",\n", - " 'good good-bye, hollywood',\n", - " \"non lo so, cos'è importante o no\",\n", - " 'fashion vogue nei jardins de mode',\n", - " 'un telefilm anche a natale sempre',\n", - " \"la neve e l'aria insieme\",\n", - " 'che io ti scriva o no non cambia',\n", - " 'al cavern club del roxy music entro',\n", - " 'ti ho scritto già una cartolina',\n", - " 'e penso ancora ai miei parenti',\n", - " 'che svernavano a rapallo insieme',\n", - " 'good good-bye, amsterdam',\n", - " \"still the rain, i'll see your face again\",\n", - " 'good good-bye, amsterdam',\n", - " \"still the rain, i'll see your face again\",\n", - " 'al cavern club del roxy music entro',\n", - " 'ti ho scritto già una cartolina',\n", - " 'e penso ancora ai miei parenti',\n", - " 'che svernavano a rapallo insieme',\n", - " 'good good-bye, amsterdam',\n", - " \"still the rain, i'll see your face again\",\n", - " 'good good-bye ciao',\n", - " 'good good bye ciao',\n", - " 'good good bye ciao',\n", - " 'good good bye ciao',\n", - " 'good good bye ciao',\n", - " 'good good bye ciao',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'donkey tonkey people',\n", - " \"spero, che fai l'asino sul serio per un po'\",\n", - " \"e se fai il ballo dell'asino, io ci sto\",\n", - " 'xchè le tue parole, sembrino raggi di sole (oh)',\n", - " 'e per ricordarti, di dimenticare',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'donkey tonkey people',\n", - " \"ora, giù in città, c'è una blue crayola\",\n", - " 'è di cioccolata ya e si chiama lola',\n", - " 'xchè i tuoi occhi adesso sembrino raggi di sole (oh)',\n", - " 'chiameremo felicità, la disperazione',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'donkey tonkey people',\n", - " 'uh na na na, voglio bere',\n", - " 'uh na na na, bere te',\n", - " 'uh na na na, e la tua bocca di miele',\n", - " 'uh na na na, bere te',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'do the donkey people',\n", - " 'do the donkey people',\n", - " 'do the donkey people',\n", - " 'do the donkey people',\n", - " 'uh na na na, voglio bere',\n", - " 'uh na na na, bere te',\n", - " 'uh na na na, e la tua luna di fiele',\n", - " 'uh na na na, bere te',\n", - " 'do the donkey, donkey, donkey',\n", - " 'do the donkey, donkey, donkey',\n", - " 'do the donkey, donkey, tonkey',\n", - " 'do the donkey people',\n", - " 'do the donkey people',\n", - " 'do the donkey people',\n", - " 'do the donkey people',\n", - " 'always pokémon',\n", - " 'gotta catch ‘em all',\n", - " 'you gotta catch ‘em all (all)',\n", - " 'you gotta catch ‘em all (all)',\n", - " 'you gotta catch ‘em all',\n", - " 'always pokémon',\n", - " 'il mondo è grande, grande ma',\n", - " 'chi viaggia poi cammina col cuore un po’ più in là',\n", - " 'scoprendo cos’è la libertà, libertà',\n", - " 'la forza della volontà (volontà)',\n", - " 'ti porta dove va',\n", - " 'la tua curiosità',\n", - " 'muovendoti con agilità',\n", - " 'per noi (per noi)',\n", - " 'l’avventura non finisce mai',\n", - " 'se ci segui ti divertirai',\n", - " 'dai partiamo tutti insieme',\n", - " 'per un grande pokémon tour',\n", - " 'you gotta catch ‘em all',\n", - " 'gira, gira il mondo',\n", - " 'gira la tua sfera',\n", - " 'quando hai già lanciato',\n", - " 'la tua pokèball!',\n", - " 'gira, gira il mondo',\n", - " 'pianta la bandiera',\n", - " 'dove sei arrivato',\n", - " 'coi tuoi amici pokémon',\n", - " 'gira, gira il mondo, (gira il mondo)',\n", - " 'gira la tua sfera',\n", - " 'grida a perdifiato',\n", - " '“gotta catch ‘em all!” (gira il mondo)',\n", - " 'gira la tua sfera',\n", - " 'yes you gotta catch ‘em all',\n", - " 'catch, catch!',\n", - " 'you gotta catch ‘em all!',\n", - " 'gotta catch ‘em all',\n", - " 'you gotta catch ‘em all (all)',\n", - " 'you gotta catch ‘em all (all)',\n", - " 'you gotta catch ‘em all',\n", - " 'always pokémon',\n", - " 'lancia la tua sfera poké',\n", - " 'e l’avventura non finirà!',\n", - " 'con ogni lancio sei più forte perché',\n", - " 'puoi catturare nuovi pokémon!',\n", - " 'you gotta catch ‘em all!',\n", - " 'gira, gira il mondo',\n", - " 'pianta la bandiera',\n", - " 'dove sei arrivato coi tuoi amici pokémon',\n", - " 'gira, gira il mondo, (gira il mondo)',\n", - " 'gira la tua sfera',\n", - " 'grida a perdifiato',\n", - " '“gotta catch ‘em all!” (gira il mondo)',\n", - " 'gira la tua sfera',\n", - " 'yes you gotta catch ‘em all!',\n", - " 'catch, catch!',\n", - " 'you gotta catch’em all!',\n", - " 'you gotta catch ‘em all (all)',\n", - " 'you gotta catch ‘em all (all)',\n", - " 'you gotta catch ‘em all',\n", - " 'always pokémon',\n", - " 'you gotta catch ‘em all (all)',\n", - " 'you gotta catch ‘em all (all)',\n", - " 'you gotta catch ‘em all',\n", - " 'always pokémon',\n", - " 'come on johnny johnny johnny kiss me',\n", - " 'johnny johnny kiss me',\n", - " 'baciami baciami baciami johnny please',\n", - " \"tutte le ragazze dell'oklahoma\",\n", - " 'sono innamorate di johnny kiss',\n", - " 'ogni signorina lo ferma e dice',\n", - " 'baciami baciami johnny please',\n", - " 'con accento italo americano',\n", - " 'masticando gomma risponde yeah',\n", - " 'più nessuna donna lo lascia in pace',\n", - " 'baciami baciami very well',\n", - " \"c'è persino quella miss che gli grida\",\n", - " \"johnny kiss se mi baci, ti regalo l'automobile\",\n", - " \"c'è quell'altra che gli dà la miniera di papà\",\n", - " 'per avere i baci in esclusività',\n", - " \"tutte le ragazze dell'oklahoma\",\n", - " 'sono innamorate di johnny kiss',\n", - " 'johnny sei il mio tipo quanto mi piaci',\n", - " 'baciami baciami johnny please',\n", - " \"c'è persino quella miss che gli grida\",\n", - " \"johnny kiss se mi baci, ti regalo l'automobile\",\n", - " \"c'è quell'altra che gli dà la miniera di papà\",\n", - " 'per avere i baci in esclusività',\n", - " \"tutte le ragazze dell'oklahoma\",\n", - " 'sono innamorate di johnny kiss',\n", - " 'johnny sei il mio tipo quanto mi piaci',\n", - " 'baciami baciami johnny please',\n", - " 'baciami baciami johnny please',\n", - " 'baciami baciami johnny please',\n", - " 'baciami baciami',\n", - " 'baciala!',\n", - " 'johnny please',\n", - " 'le nostre anime inseparabili',\n", - " 'ora non coincidono, i percorsi cambiano',\n", - " 'come se le stelle che ci illuminavano',\n", - " 'da lassù ormai non si rivelano',\n", - " 'da un tempo che ci lascia andare via',\n", - " 'mirror, mirror on the wall',\n", - " 'can’t you see you’re losing control?',\n", - " 'non ho più paura di te',\n", - " 'è il riflesso ormai di un altra me',\n", - " 'mirror, mirror on the wall',\n", - " 'can’t you see you’re losing it all?',\n", - " 'non mi fai paura perché',\n", - " 'ogni mio difetto ora è perfetto',\n", - " 'anche se non risponderai',\n", - " 'anche se ogni luce è spenta',\n", - " 'ammetti che non mi perderai, perché sarò',\n", - " 'sarò la musica che non sa andar via',\n", - " 'mirror, mirror on the wall',\n", - " 'can’t you see you’re losing control?',\n", - " 'non ho più paura di te',\n", - " 'è il riflesso ormai di un altra me',\n", - " 'mirror, mirror on the wall',\n", - " 'can’t you see you’re losing it all?',\n", - " 'non mi fai paura perché',\n", - " 'ogni mio difetto ora è perfetto',\n", - " 'anche se non vorrai',\n", - " 'tu sarai con me e io sarò con te per sempre',\n", - " 'anche se non lo sai',\n", - " 'ora sono qui e sono invulnerabile',\n", - " 'mirror, mirror on the wall',\n", - " 'can’t you see you’re losing control?',\n", - " 'non ho più paura di te',\n", - " 'è il riflesso ormai di un altra me',\n", - " 'mirror, mirror on the wall',\n", - " 'can’t you see you’re losing it all?',\n", - " 'non mi fai paura perché',\n", - " 'ogni mio difetto ora è perfetto',\n", - " 'duorme, nennella mia',\n", - " 'fino a che vene juorno',\n", - " 'duorme, nennella mia',\n", - " 'che è ancora notte',\n", - " \"e strigneme 'e dete\",\n", - " 'sempe cchiù forte',\n", - " \"si vene 'o mammone\",\n", - " \"e si vene 'o mammone\",\n", - " \"chiudimmo 'a porta\",\n", - " 'duorme, nennella mia',\n", - " \"fora sta 'o malotiempo\",\n", - " 'duorme, nennella mia',\n", - " 'meglio ca nun siente',\n", - " \"e strigneme 'e dete\",\n", - " 'sempe cchiù forte',\n", - " \"si vene 'o mammone\",\n", - " \"e si vene 'o mammone\",\n", - " \"chiudimmo 'a porta\",\n", - " 'ninnnàninnanoè',\n", - " 'ninnanàninnanoè',\n", - " 'ninnnàninnanoè',\n", - " 'ninnanàninnanoè',\n", - " \"e strigneme 'e dete\",\n", - " 'sempe cchiù forte',\n", - " \"si vene 'o mammone\",\n", - " \"e si vene 'o mammone\",\n", - " \"chiudimmo 'a porta\",\n", - " '\"a commissà, so\\' io maciste!\"',\n", - " '\"ohu, questo qui è diventato matto!\"',\n", - " '- pim pum pam -',\n", - " '\"parla! parla! dov\\'è? parla!!!\"',\n", - " ...]},\n", - " 'data': [\"ecco cos'è quello che ho dentro di me\",\n", - " 'strega di chi, tu che non sei fantasia',\n", - " \"vattene via, c'è ipocrisia\",\n", - " 'quella che brucia i sogni',\n", - " 'fotti chi vuoi, fotti chi puoi, ma fottiti dai!',\n", - " 'questa città con regole senza pietà',\n", - " 'spogliati qui, spogliati da ogni bugia',\n", - " 'poi vattene via, poi vattene via',\n", - " 'senza non sei piã\\x99 niente',\n", - " 'fotti chi vuoi, fotti chi puoi, ma fottiti dai!',\n", - " 'non pensare che delusa e sola, io ti aspetti quü',\n", - " 'provo senso anche se ho un nodo in gola, vattene da quü',\n", - " \"c'è una scusa dietro ogni parola\",\n", - " \"mentre il fiato e l'urlo ti divora\",\n", - " 'urlo solo una parola sola fottiti!!',\n", - " \"copriti dall'incubo della bugia, parlo di te\",\n", - " 'perchè tu sei la bugia',\n", - " 'vattene via, vattene via',\n", - " \"da dire non c'è piã\\x99 niente\",\n", - " 'fotti chi vuoi, fotti chi puoi, ma fottiti dai!',\n", - " 'non pensare che delusa e sola, io ti aspetti quü',\n", - " 'provo senso anche se ho un nodo in gola, vattene da quü',\n", - " \"c'è una scusa in ogni tua parola\",\n", - " \"quando il fiato e l'urlo ti divora\",\n", - " 'urlo solo una parola sola fottiti!!',\n", - " \"ecco cos'è lurida dentro di te\",\n", - " 'strega chi sei, proprio non hai fantasia',\n", - " \"c'è ipocrisia, l'ipocrisia\",\n", - " 'quella che gela il sangue',\n", - " 'fotti chi vuoi, fotti chi puoi, ma fottiti dai....',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'i love you, i love you, i love you (i love you)',\n", - " 'i love you, i love you, i love you',\n", - " 'i love you, i love you, i love you (i love you)',\n", - " 'i love you, i love you, i love you',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, nicola, alessandra',\n", - " 'lorenza, nicola, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'i love you, i love you, i love you (i love you)',\n", - " 'i love you, i love you, i love you',\n", - " 'i love you, i love you, i love you (i love you!)',\n", - " 'i love you, i love you, i love you',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'i love you, i love you, i love you (i love you)',\n", - " 'i love you, i love you, i love you',\n", - " 'i love you, i love you, i love you (i love you!)',\n", - " 'i love you, i love you, i love you',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'i love you, i love you, i love you (i love you)',\n", - " 'i love you, i love you, i love you',\n", - " 'i love you, i love you, i love you (i love you)',\n", - " 'i love you, i love you, i love you',\n", - " 'lorenza, nicola, alessandra',\n", - " 'lorenza, giada, nicola',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'i love you, i love you, i love you',\n", - " 'i love you, i love you, i love you',\n", - " 'i love you, i love you, i love you',\n", - " 'i love you, i love you, i love you',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra (ahhh!)',\n", - " 'lorenza, giada, alessandra',\n", - " 'lorenza, giada, alessandra',\n", - " 'i love you, i love you, i love you (i love you)',\n", - " 'i love you, i love you, i love you',\n", - " 'i love you, i love you, i love you (i love you)',\n", - " 'i love you, i love you, i love you',\n", - " 'so beautiful so beautiful so beautiful eh!',\n", - " 'lega le mie mani',\n", - " 'lega le mie gambe',\n", - " 'apri le mie mani...',\n", - " 'apri le mie gambe',\n", - " 'entra nel mio mondo',\n", - " 'dove adesso io ti perdo',\n", - " 'se io sto fingendo tu non soffrirai',\n", - " 'so beautiful so beautiful so beautiful',\n", - " 'so beautiful eh!',\n", - " 'lega le mie mani mostrami il tuo onore',\n", - " 'dammi una ragione per sentirmi bene',\n", - " \"non fermarti all'apparenza\",\n", - " 'e mangiami anche il cuore',\n", - " 'entra in questa dignità di donna sorridente',\n", - " 'tu vedi solo te stesso',\n", - " 'e non ti accorgi che adesso',\n", - " 'io non sono qui con te',\n", - " 'so beautiful so beautiful so beautiful',\n", - " 'so beautiful eh!',\n", - " 'basterebbe una carezza',\n", - " \"solo un po' di tenerezza\",\n", - " 'per ascoltare il battito di una creatura',\n", - " 'la forza ed il piacere',\n", - " 'tu sei qui che vuoi godere',\n", - " 'fammi vedere chi sei',\n", - " \"li' dietro agli occhi, cosa cerchi?\",\n", - " 'so beautiful so beautiful',\n", - " 'you are so beautiful eh',\n", - " 'eh',\n", - " 'lega le mie mani',\n", - " 'lega le mie gambe',\n", - " 'cogli tutti i fiori che vuoi possedere',\n", - " \"maledetta primavera di quest'abbandono\",\n", - " 'cerchi la divinità',\n", - " 'e... resti solo un uomo',\n", - " 'lemandorle suonano',\n", - " 'la pizza, il pop, la musica elettronica',\n", - " 'la pizza, il pop, la musica elettronica',\n", - " 'la pizza, il pop, la musica elettronica',\n", - " 'la pizza, il pop, la musica elettronica',\n", - " 'la pizza, il pop, la musica elettronica',\n", - " 'la pizza, il pop, la musica elettronica',\n", - " 'la pizza, il pop, la musica elettronica',\n", - " 'la pizza, il pop, la musica elettronica',\n", - " 'la pizza, il pop, la musica elettronica',\n", - " 'la pizza, il pop, la musica elettronica',\n", - " 'la pizza, il pop, la musica elettronica',\n", - " \"chiara come un bel sole d'inverno\",\n", - " \"e trasparente stella all'imbrunire\",\n", - " 'succhia questo bellissimo giorno',\n", - " 'e tutte quante insieme le mie paure',\n", - " 'you make me feel loved',\n", - " 'you make me feel all loved (x2)',\n", - " 'dolce e cara domenica',\n", - " 'dai tuoi solai io sento le campane',\n", - " \"e sulla scia di un'elica\",\n", - " 'i miei ricordi di seghe, fossi e rane!',\n", - " 'you make me feel...',\n", - " 'you make me feel loved',\n", - " 'you make me feel all loved',\n", - " 'you make me feel loved',\n", - " 'you make me feel...',\n", - " 'you make me feel loved',\n", - " 'col mal di denti nel cuore sorrido a te',\n", - " 'you make me feel loved',\n", - " 'col cuore in fiamme di sera ripenso a te',\n", - " 'down, down, down',\n", - " 'down, down, down',\n", - " 'down, down, down',\n", - " \"oh, don't let me down\",\n", - " \"chiara come un bel sole d'inverno\",\n", - " \"e stella rossa lontana all'imbrunire\",\n", - " 'succhia questo bellissimo giorno',\n", - " \"che l'amore non ha niente da capire\",\n", - " 'you make me feel loved',\n", - " 'you make me feel all loved',\n", - " 'you make me feel loved',\n", - " 'you make me feel...',\n", - " 'you make me feel loved',\n", - " 'col mal di denti nel cuore sorrido a te',\n", - " 'you make me feel loved',\n", - " 'col cuore in fiamme di sera io incendio te',\n", - " 'you make me feel loved',\n", - " 'belle parole insonni che dedico a te',\n", - " 'you make me feel loved',\n", - " \"femmine folli e albe d'oro io dedico a te\",\n", - " 'you make me feel loved',\n", - " 'you make me feel all loved',\n", - " 'as far wrengo',\n", - " 'delta cento',\n", - " 'elto rebishow',\n", - " 'novish tama',\n", - " 'esto rama',\n", - " 'cento rebishlow',\n", - " 'now bella rema',\n", - " 'bella suma',\n", - " 'zappa retisgo',\n", - " 'as far wrengo',\n", - " 'delta cento',\n", - " 'elto rebishow',\n", - " 'novish tama',\n", - " 'esto rama',\n", - " 'cento rebishlow',\n", - " 'bella rema',\n", - " 'bella suma',\n", - " 'zappa retisgo',\n", - " 'as far wrengo',\n", - " 'delta cento',\n", - " 'elto rebishow',\n", - " 'novish tama',\n", - " 'esto rama',\n", - " 'cento rebishlow',\n", - " 'as far wrengo',\n", - " 'delta cento',\n", - " 'elto rebishow',\n", - " 'novish tama',\n", - " 'esto rama',\n", - " 'cento rebishlow',\n", - " \"generazione che và lotta per la sua identità un' altra ne arriverà sicuro che nn mollerà corona e democrazia maschera dell'ipocrisia partiti e socetà fuori dalla legalitaà\",\n", - " \"la txalaparta insiste nel suo antico su e giu'un suono magico che non viene da nord ne da sud\",\n", - " \"belfast falls road today la social non ti basta mai welcome in derry bogside per strada non e' tutto ok red hand volunteer force e' l'odio che se ne va' nn so se partiro' la tregua quanto durera'\",\n", - " 'la musica irlandese che esce dai pub dice nn siamo una colonia nn lo saremo mai',\n", - " 'twenty six & six british troops now',\n", - " \"l'europa dei cowboy cavalca il dollaro e' in iraq\",\n", - " 'berlusconi blair aznar i servi del garande croupier black hawks and vody bags sul tavolo come le fiches tra le macerie a bagdad giocano la mano col morto',\n", - " \"l'europa dei perdenti tra colonie a poverta'\",\n", - " \"l'europa potenti insegue un 'altro vietnam\",\n", - " 'nether oil for blood',\n", - " 'nor oil for blood',\n", - " '(grazie a fidiox per questo testo)',\n", - " 'non posso più aspettare',\n", - " 'non voglio stare qui',\n", - " 'rinchiuso dentro a un video spento',\n", - " 'canzone per juke-box che non vorrei ascoltare mai',\n", - " 'grida babylon keep you satisfied',\n", - " 'sorda babylon musica play so high',\n", - " 'rit:nero su nero si avvicina il mattino',\n", - " 'let me tell you about that thing',\n", - " 'la notte rimbomba un suono vicino',\n", - " 'nero su nero is still outside',\n", - " 'si scalda nel fuoco di un profumo latino',\n", - " 'come again come again till the sun will rise up',\n", - " 'nero su nero è arrivato il mattino',\n", - " \"right in the morning i'm gettin high\",\n", - " 'qui il tempo si è fermato',\n", - " 'cosa sei cosa fai dove vai',\n", - " 'stai con me',\n", - " \"qui nel cuore del mio mondo, se c'è amore sarà per te\",\n", - " 'non so nasconderlo',\n", - " 'rit:...',\n", - " 'i’ve left to find a follow go home',\n", - " 'the thousand miles you are alone, are alone',\n", - " 'i’m going away with a learing anyway',\n", - " 'you came back home someday',\n", - " 'the wind will still a follow go home',\n", - " 'and feel the eyes will bright inside with a sand',\n", - " 'no star will shine away',\n", - " 'and the one will say a pray',\n", - " 'you came back home someday',\n", - " 'you went away forever',\n", - " 'you went away alone',\n", - " 'but someone always waiting four you at home today',\n", - " 'no star will shine away',\n", - " 'and the one will say a pray',\n", - " 'you came back home someday',\n", - " 'you went away forever',\n", - " 'you went away alone',\n", - " 'but someone always waiting for you at home today',\n", - " 'you left to find a pot of gold',\n", - " 'a thousand miles you rode alone, all alone!',\n", - " 'oh, the long and lonely way will not lead you anywhere...',\n", - " \"you'll come back home some day;\",\n", - " \"you'll come back home some day\",\n", - " \"the wind will steal your 'pot of gold'\",\n", - " 'and fill your eyes with burning sand, bitter sand!',\n", - " 'no star will show the way and no one will hear your prayer...',\n", - " \"you'll come back home some day;\",\n", - " \"you'll come back home some day\",\n", - " 'you went away forever;',\n", - " 'you went away alone',\n", - " \"but someone's always waiting\",\n", - " 'for you... at home... today!',\n", - " \"ti resta da trovare la pentola d'oro\",\n", - " 'mille miglia hai cavalcato da solo, tutto solo',\n", - " 'sulla lunga strada solitaria',\n", - " 'che non ti porterà da nessuna parte',\n", - " 'un giorno ritornerai a casa',\n", - " \"il vento ruberà la tua pentola d'oro\",\n", - " 'e riempirà i tuoi occhi di sabbia che brucia, sabbia amara',\n", - " 'nessuna stella segnerà il tuo cammino',\n", - " 'e nessuno ascolterà le tue preghiere',\n", - " 'un giorno tornerai a casa',\n", - " 'sei andato via per sempre',\n", - " 'sei andato via da solo',\n", - " 'ma qualcuno ti sta ancora aspettando',\n", - " 'oggi a casa',\n", - " 'rit',\n", - " 'row row to lampedusa we go',\n", - " 'go go for a better life we row',\n", - " 'oohhho dolce musa portami a lampedusa',\n", - " 'oohhho dolce musa bring me to lampedusa',\n", - " 'ieu suntu quiddrhu ca sfida li leoni puru lu desertu e la siccità',\n", - " 'ieu suntu quiddrhu ca parla cu le tigria a mienzu la savana e sutta nu baobab',\n", - " 'ieu suntu alfa e omegaca scise della valle dellu paradisu e la terra popolau',\n", - " 'ieu suntu creatore de danzee solitudinie su na zattera nu sacciu a du sta bbau',\n", - " 'the waters are terbulent',\n", - " \"raging hard with the disperate rave's all sinking for better meant\",\n", - " 'putting the own lives in a detriment',\n", - " 'leaving loved was behind',\n", - " 'koping that they could find',\n", - " 'in the slice of paradise',\n", - " 'making the ultimate sacrifice',\n", - " 'la speranza de ddrha gente ca intra lu disagiu ha nata',\n", - " 'a su na barca alla deriva ene mannata',\n", - " \"perch'è fonte de guadagnu pe ci dice ca la iuta\",\n", - " 'ma è sulu sfruttamento pe ci rischia la vita',\n", - " 'pe nu giurnu migliore forte imu remare',\n", - " 'la strada è ancora longa a lampedusa imu riare',\n", - " 'rit',\n", - " \"e la pelle mia s'ha spusata cu lu sule\",\n", - " 'mi conforterà perchè sta bau versu la notte',\n", - " \"nun c'è casa mia lu mare se stà face forte\",\n", - " 'chissà se dormirò,chissà se dormirò senza te',\n", - " 'human souls are constantly',\n", - " 'reaching hard for survival',\n", - " 'seeking better perpetualy',\n", - " 'preserving life is essential',\n", - " \"though they don't know\",\n", - " 'what the future home',\n", - " 'yet still they go',\n", - " 'searching for better show',\n", - " 'rit',\n", - " 'aston martin, lamborghini',\n", - " 'sui sedili a far bocchini',\n", - " 'profumato da gaultier',\n", - " 'ma il degrado è dentro me',\n", - " 'freak & chic!',\n", - " 'freak & chic!',\n", - " '(such a bitch)',\n", - " 'la vuitton è da duemila',\n", - " 'vai in giro a far la figa',\n", - " 'col collier di van cleef',\n", - " 'succhi, succhi in autogrill',\n", - " 'freak & chic',\n", - " 'freak & chic',\n", - " 'vieni ora, vieni qui',\n", - " 'vuitton, coca e gin',\n", - " 'ketamina e chanel',\n", - " 'noi queen del trash and glam',\n", - " 'vieni ora, vieni qui',\n", - " 'a bere in d&g',\n", - " 'freak & chic',\n", - " 'freak & chic',\n", - " 'vivi e muori così!',\n", - " 'tutti su di me',\n", - " 'voglio una gang bang',\n", - " 'bulgari e cartier',\n", - " 'freak & chic',\n", - " 'freak & chic',\n", - " 'vivi e muori così!',\n", - " 'tutti su di me',\n", - " 'voglio una gang bang',\n", - " 'bulgari e cartier',\n", - " 'freak & chic',\n", - " 'freak & chic',\n", - " 'vivi e muori così!',\n", - " 'a noi piace il dolore',\n", - " \"l'alcool a tutte le ore\",\n", - " 'vomitiamo lo champagne',\n", - " 'sulle scarpe yves saint laurent',\n", - " 'freak & chic',\n", - " 'freak & chic',\n", - " 'sotto i nostri occhiali prada',\n", - " 'noi restiam troie da strada',\n", - " 'vesto oscar de la ren',\n", - " 'ma il degrado è dentro me',\n", - " 'freak & chic',\n", - " '(what a freak)',\n", - " 'fish and chips',\n", - " '(such a bitch)',\n", - " 'vieni ora, vieni qui',\n", - " 'vuitton, coca e gin',\n", - " 'ketamina e chanel',\n", - " 'noi queen del trash and glam',\n", - " 'vieni ora, vieni qui',\n", - " 'a bere in d&g',\n", - " 'freak & chic',\n", - " 'freak & chic',\n", - " 'vivi e muori così!',\n", - " 'tutti su di me',\n", - " 'voglio una gang bang',\n", - " 'bulgari e cartier',\n", - " 'freak & chic',\n", - " 'freak & chic',\n", - " 'vivi e muori così!',\n", - " 'tutti su di me',\n", - " 'voglio una gang bang',\n", - " 'bulgari e cartier',\n", - " 'freak & chic',\n", - " 'freak & chic',\n", - " 'vivi e muori così!',\n", - " 'se mi porti in una gita',\n", - " 'sul tuo motoscafo riva',\n", - " \"tolgo l'intimo dior\",\n", - " 'doggystyle, sì, io ci sto!',\n", - " 'freak & chic',\n", - " '(ma quanto siamo troie!)',\n", - " 'freak & chic',\n", - " 'vieni ora, vieni qui',\n", - " 'ketamina e chanel',\n", - " 'vieni ora, vieni qui',\n", - " 'freak & chic',\n", - " 'freak & chic',\n", - " 'vivi e muori così!',\n", - " 'tutti su di me',\n", - " 'voglio una gang bang',\n", - " 'bulgari e cartier',\n", - " 'freak & chic',\n", - " 'freak & chic',\n", - " 'vivi e muori così!',\n", - " 'tutti su di me',\n", - " 'voglio una gang bang',\n", - " 'bulgari e cartier',\n", - " 'freak & chic',\n", - " 'freak & chic',\n", - " 'vivi e muori così!',\n", - " 'se mi porti in una gita',\n", - " 'sul tuo motoscafo riva',\n", - " \"tolgo l'intimo dior\",\n", - " 'doggystyle, sì, io ci sto',\n", - " 'freak & chic',\n", - " 'la nausea di vivere con quella massa di coglioni /',\n", - " 'uscire ogni volta per accumulare delusioni /',\n", - " 'lo sbocco quando sale... il marcio a pezzettoni /',\n", - " 'rigurgitare il blocco e far finta di esser buoni',\n", - " 'in una società in cui esprimersi é sbagliato /',\n", - " 'senza regole - niente lavoro /',\n", - " 'sono uno zero, uno squilibrato /',\n", - " 'non voglio più pensarci ma non posso lasciar stare /',\n", - " 'ti vomito tutto addosso, mi devo liberare /',\n", - " 'nausea to live with that mass of bollocks /',\n", - " 'going out every time to accumulate disillusions /',\n", - " 'vomit when it rises up... the taste of rot in bits /',\n", - " 'regurgitate the block and pretend to be good. /',\n", - " 'in a society where expressing ourselves is wrong /',\n", - " \"with no rules - no job / i'm a zero, a deranged one /\",\n", - " \"don't wanna think about it, but i can't f*ckin' give up /\",\n", - " 'i puke it all on you, i need to relieve myself /',\n", - " \"n'fus è a strada\",\n", - " \"e n'fus so e'pensieri ca te faje\",\n", - " 'tu nun jesce a tre mis',\n", - " \"n'fus è a strada\",\n", - " \"e n'fus so e'pensieri ca te faje\",\n", - " 'tu nun jesce a tre mis',\n", - " 'e nun tien niente a fa',\n", - " \"quanta scuse t'truov pe nun te\",\n", - " 'ntussecà',\n", - " \"e na luce s'appiccia\",\n", - " 'ma tu nun vuò chiù turnà',\n", - " 'dimme ca è overo',\n", - " 'ca nun è cagnato niente',\n", - " 'e tutto se move',\n", - " 'perché sta smania ca se sente',\n", - " 'e se more',\n", - " 'mentre stanotte na jastemma',\n", - " 'se ne va',\n", - " 'paura e sta',\n", - " \"comme quando nun c'a faje\",\n", - " 'hai paura si',\n", - " 'si vai reritt e resti a per',\n", - " 'comme faje po a turnà',\n", - " 'ma na vota ce creriv',\n", - " 'e mo nun saje comme fà',\n", - " 'e dimme addo stiv',\n", - " 'quann cagnav o viento',\n", - " \"nun c'a faciv a pensà\",\n", - " 'a tutto chest',\n", - " 'quann beviv e annascunniv',\n", - " \"rint o vin l'anema\",\n", - " \"vesto all'occidentale\",\n", - " 'con un senso di colpa micidiale',\n", - " \"vesto all'occidentale\",\n", - " 'come i miei genitori, come il mio cane',\n", - " 'cerco le mie radici',\n", - " 'cerco le mie narici',\n", - " 'nello specchietto retrovisore',\n", - " 'aaaah... aaah...',\n", - " \"vesto all'occidentale\",\n", - " 'una vita prolungata e innaturale',\n", - " \"vesto all'occidentale\",\n", - " 'con un pizzico di colore meridionale',\n", - " 'cerco le mie radici',\n", - " 'cerco le mie narici',\n", - " 'nello specchietto retrovisore',\n", - " 'aaaah... aaah...',\n", - " 'aaaah... aaah...',\n", - " 'aaaah... aaah...',\n", - " 'eh!',\n", - " \"vesto all'occidentale\",\n", - " 'una vita prolungata e innaturale',\n", - " \"vesto all'occidentale\",\n", - " 'come i miei genitori, come il mio cane',\n", - " \"vesto all'occidentale\",\n", - " \"vesto all'occidentale\",\n", - " \"vesto all'occidentale\",\n", - " \"vesto all'occidentale\",\n", - " \"vesto all'occidentale\",\n", - " '(- ma secondo te? quello che stiamo dicendo...',\n", - " '- eh...',\n", - " '- è vero?)',\n", - " 'e poi svegliarsi',\n", - " \"essendo l'alba\",\n", - " 'addormentarsi essendo notte',\n", - " 'volare essendo cielo',\n", - " 'un sogno vascello',\n", - " 'una realtà di luna',\n", - " 'una sponda immaginaria',\n", - " 'aspirazione luce',\n", - " \"do you need somebody - e c'è ancora mare\",\n", - " 'do you love somebody - mare nelle mani',\n", - " \"do you need somebody - e c'è ancora mare\",\n", - " 'somebody',\n", - " 'e navigare',\n", - " 'ma dove andare',\n", - " 'andare avanti essendo vita',\n", - " 'magari fino al tibet',\n", - " 'una stella negra',\n", - " 'un amore nuova guinea',\n", - " \"l'universo in un tepee\",\n", - " 'aspirazione sì',\n", - " \"do you need somebody - e c'è ancora cielo\",\n", - " 'do you love somebody - cielo sotto i piedi',\n", - " \"do you need somebody - e c'è ancora cielo\",\n", - " 'e volare, volare, volare',\n", - " 'dove sei tu',\n", - " 'e tornare, tornare',\n", - " 'con le tue ali',\n", - " \"do you need somebody - e c'è ancora mare\",\n", - " 'do you love somebody - dove siamo veri',\n", - " 'do you need somebody',\n", - " 'scaldare il mondo essendo sole',\n", - " 'magari in fondo al cuore',\n", - " 'un giorno normale',\n", - " 'qualche cosa che rimane',\n", - " 'una vibrazione presto',\n", - " 'aspirazione everest',\n", - " \"do you need somebody - e c'è ancora cielo\",\n", - " 'do you love somebody - cielo sotto i piedi',\n", - " \"do you need somebody - e c'è ancora cielo\",\n", - " 'e volare, volare, volare',\n", - " 'dove sei tu',\n", - " 'e tornare, tornare',\n", - " 'e volare, volare, volare',\n", - " 'dove sei tu',\n", - " 'e tornare, tornare',\n", - " 'con le tue ali',\n", - " \"do you need somebody - e c'è ancora cielo\",\n", - " 'do you love somebody - cielo sotto i piedi',\n", - " \"do you need somebody - e c'è ancora cielo\",\n", - " 'do you love somebody - dove siamo veri',\n", - " \"do you need somebody - e c'è ancora cielo\",\n", - " 'do you love somebody - cielo sotto i piedi',\n", - " \"do you need somebody - e c'è ancora mare\",\n", - " 'do you love somebody - mare nelle mani',\n", - " \"questa è l'ombra della mia croce\",\n", - " \"e si espande a vista d'occhio\",\n", - " 'sbavando scuro affronta il tempo',\n", - " 'poi darà un senso al male trascorso...',\n", - " 'hai deturpato anni di limpidezza',\n", - " 'troncato i passi di un eterno solo',\n", - " 'ma non dai un senso al male trascorso',\n", - " 'non rendi conto al vuoto che ti sovrasta...',\n", - " 'sono mani che si rafforzano incassando e sfregiando',\n", - " 'microtraumi che vietano il sorriso ai miei specchi',\n", - " 'guarda come mi hai ridotto - in cosa ricado ancora',\n", - " 'continuo a rialzarmi e ferire a caso anche morendo',\n", - " 'a pezzi, senza te',\n", - " 'un elastico tenuto in tiro sotto marziali ginocchiate inferte',\n", - " \"un bambino sempre chiuso al buio - dall'angoscia scalcia contro cosa?\",\n", - " \"immortalità è reagire al pungolo dell'esaurimento\",\n", - " 'e far vedere a chi aveva vinto che il traguardo non era lã¬...',\n", - " 'contro la tecnica del non voler mai dare risposte',\n", - " 'contro il murare nel ghiaccio ogni mia attenzione',\n", - " \"contro l'acidità del mondo-fuori a cui ti allinei\",\n", - " 'patibolo dove finisci con chi esercita su di te',\n", - " 'dietro alla durezza del tuo rapportarti',\n", - " 'quel ritmo bulimico che non sai scansare...',\n", - " 'castrato a fuoco mi hai pressato a terra',\n", - " 'ma ora chi va avanti e chi annega qui??',\n", - " 'ora chi va avanti e chi annega qui?? (x 4)',\n", - " \"questa è l'ombra della tua croce\",\n", - " 'da un esile cero sempre sottovento',\n", - " 'nel suo restringersi perde diottrie',\n", - " 'rattoppata in vano da due fondi in vetro..',\n", - " 'hai deturpato anni di limpidezza',\n", - " 'troncato i passi di un eterno solo',\n", - " 'ma non dai un senso al male trascorso',\n", - " 'non rendi conto al vuoto che ti sovrasta...',\n", - " '(contemplo ulcere che si dilatano, autoimmuni)',\n", - " \"stritolato dall'infierire della tensione psichica\",\n", - " 'ma i lineamenti che plasma tanta ingiustizia',\n", - " 'consacrano il mito della vendicatività',\n", - " '\"redemption karma\"',\n", - " \"here's the shadow of my cross\",\n", - " 'rolling as far as the eye can see',\n", - " 'smudging darkness to face time',\n", - " \"then it'll make some sense of past evil ...\",\n", - " \"you've defaced years of purity\",\n", - " 'slashing the steps of who has been alone forever',\n", - " 'but you give no meaning to past evil',\n", - " \"you don't give account to the emptiness above you ...\",\n", - " 'hands give each other strength as they take and scar',\n", - " 'microtraumas that want no smiles in my mirrors',\n", - " \"look what you've done to me - down again\",\n", - " 'i keep getting up and lash out even as i die',\n", - " 'shattered, without you',\n", - " 'elastic pulled taut as knees kick in killer blows',\n", - " 'a child always shut in the dark - kicking out at what in anguish?',\n", - " 'immortality means reacting to the spur of exhaustion',\n", - " 'showing the winner that the finishing line was somewhere else ...',\n", - " 'against the tactic of giving no replies',\n", - " 'against the walling in ice of all my gestures',\n", - " 'against the acidity of the world-outside of which you stand',\n", - " 'the gallows where you end up with those who influence you',\n", - " 'behind the hard manner you have',\n", - " \"the bulimic pace you can't shrug off ...\",\n", - " \"i'm fire-castrated as you press me to the ground\",\n", - " 'but now who goes on and who drowns here??',\n", - " 'now who goes on and who drowns here?? (',\n", - " \"here's the shadow of your cross\",\n", - " \"from a slim candle that's always downwind\",\n", - " 'losing dioptres as it narrows',\n", - " 'patched in vain between two glass layers ...',\n", - " \"you've defaced years of purity\",\n", - " 'slashing the steps of the only everlasting',\n", - " 'but you give no meaning to past evil',\n", - " \"you don't give account to the emptiness above you ...\",\n", - " '(i contemplate autoimmune gaping ulcers)',\n", - " 'throttled by the pressure of mental tension',\n", - " 'but the features that so much injustice is shaping',\n", - " 'consecrate the myth of vengeance',\n", - " \"simmo turnate chiù arraggiate r'ajere\",\n", - " \"chiù passa 'o tiempo e chiù ce facimmo scure\",\n", - " 'simmo terrune e cià facimmo chè nire',\n", - " \"parlammo n'faccia e nun tenimmo problemi\",\n", - " 'al mukawama, al mukawama',\n", - " 'badder than the bite of the baddest tarantula',\n", - " 'al mukawama, al mukawama',\n", - " 'keep resisting yo, resistencia global',\n", - " 'al mukawama, al mukawama',\n", - " 'badder than the bite of the baddest tarantula',\n", - " 'al mukawama, al mukawama',\n", - " 'keep resisting yo, resistencia global',\n", - " 'fydaije fydaije ithaura thaura shaabje',\n", - " '(guerrieri, guerrieri, è una rivoluzione, una rivoluzione popolare)',\n", - " 'intifada intifada thaura shaabje',\n", - " \"al mukawama ammischiato 'mmiezzo 'a genta mia\",\n", - " \"' a palestina ce l'insegna stù sistema è pazzia\",\n", - " \"resistenza popolare tutte quante 'mmiezzo 'a via\",\n", - " 'intifada intifada thaura shaabje',\n", - " \"al mukawama ammischiato 'mmiezzo 'a genta mia\",\n", - " \"' a palestina ce l'insegna stù sistema è pazzia\",\n", - " \"resistenza popolare tutte quante 'mmiezzo 'a via al mukawama, al mukawama\",\n", - " 'badder than the bite of the baddest tarantula',\n", - " 'al mukawama, al mukawama',\n", - " 'keep resisting yo, resistencia global',\n", - " 'al mukawama, al mukawama',\n", - " 'badder than the bite of the baddest tarantula',\n", - " 'al mukawama, al mukawama',\n", - " 'keep resisting yo, resistencia global',\n", - " 'al mukawama, resistencia popular, like the people in filastin',\n", - " 'the resistance should never give in…',\n", - " 'clown, perdona, clown',\n", - " 'se non si ride e non si applaude qui',\n", - " 'clown, capisci, clown',\n", - " 'clown, perdona, clown',\n", - " 'se non si ride e non si applaude qui',\n", - " 'clown, capisci, clown',\n", - " 'siamo insensibili',\n", - " 'clown, guardaci, clown',\n", - " 'siamo sicuri di non esserci',\n", - " 'clown, capisci, clown',\n", - " 'siamo invisibili',\n", - " 'via, via, vieni via di qui',\n", - " 'niente più ti lega a questi luoghi',\n", - " 'neanche questi fiori azzuri',\n", - " 'via, via, neanche questo tempo grigio',\n", - " 'pieno di musiche',\n", - " 'e di uomini che ti son piaciuti',\n", - " \"it's wonderful, it's wonderful, it's wonderful\",\n", - " 'good luck my baby',\n", - " \"it's wonderful, it's wonderful, it's wonderful\",\n", - " 'i dream of you',\n", - " 'chips chips',\n", - " 'du-du du-du-du',\n", - " 'ci-bum ci-bum-bum',\n", - " 'du-du du-du-du',\n", - " 'ci-bum ci-bum-bum',\n", - " 'du-du du-du-du',\n", - " 'via, via, vieni via con me',\n", - " 'entra in questo amore buio',\n", - " 'non perderti per niente al mondo',\n", - " 'via, via, non perderti per niente al mondo',\n", - " \"lo spettacolo d'arte varia\",\n", - " 'di uno innamorato di te',\n", - " \"it's wonderful, it's wonderful, it's wonderful\",\n", - " 'good luck my baby',\n", - " \"it's wonderful, it's wonderful, it's wonderful\",\n", - " 'i dream of you',\n", - " 'chips chips',\n", - " 'du-du du-du-du',\n", - " 'ci-bum ci-bum-bum',\n", - " 'du-du du-du-du',\n", - " 'ci-bum ci-bum-bum',\n", - " 'du-du du-du-du',\n", - " 'via, via, vieni via con me',\n", - " 'entra in questo amore buio',\n", - " 'pieno di uomini',\n", - " 'via, entra e fatti un bagno caldo',\n", - " \"c'è un accappatoio azzurro\",\n", - " 'fuori piove, è un mondo freddo',\n", - " \"it's wonderful, it's wonderful, it's wonderful\",\n", - " 'good luck my baby',\n", - " \"it's wonderful, it's wonderful, it's wonderful\",\n", - " 'i dream of you',\n", - " 'chips chips chips',\n", - " 'du-du du-du-du',\n", - " 'ci-bum ci-bum-bum',\n", - " 'du-du du-du-du',\n", - " 'ci-bum ci-bum-bum',\n", - " 'du-du du-du-du',\n", - " 'cinque limoni 1000 mila euro!!!!!! ooohhhhh!!!',\n", - " \"la nuova europa eccola quà, e sai qual'è la novità?\",\n", - " 'che ci han fottuti, tutto quà, perchè in euro tutto raddoppia!',\n", - " \"e kissà come finirà, forse a pagare anche l'aria..\",\n", - " '\"se poi lei mi consentirà\", facciam la fine dell\\'america!',\n", - " 'questa è la società che ci impongono qua',\n", - " 'questa è la società che ci vendono gia',\n", - " 'e ora viviamo per pagare, ma lo stipendio è sempre uguale',\n", - " 'questo sistema fa cagare, non li possiamo lasciar fare!!!',\n", - " \"e la massa che fa', la testa abbasserà...\",\n", - " 'non farti omologare come una macchina...',\n", - " 'm-a c-c-h-i-n-a m-a-c-c-h-i-n-a di merda!!! oooohhhh!!!!',\n", - " 'questa è la società che ci vendono quà',\n", - " 'e tu non lamentarti piã\\x99...',\n", - " 'se non ce la fai piã\\x99!',\n", - " 'consumisti, arrivisti, nel cemento a sprofondar!! soffocar!!',\n", - " \"you remember?i'm your saro tuo cugino in brooklino tanto tempo è gia passato ti lasciai da picculino mow iu tengo lot of money e nun fazzu u piscaturi cu much business ho incassato stare qui è un bell'affare! certo che mi sono accorto che il pensiero is differenti non mi importa del creato prendi money assai potenti mangia vivi and futti futti ca poi dio perdona a tutti car and beatures night and club ma non chiedermi il perchè!what you see is what you get fuck and story italiano in usa what you see is what you get back to square mother brother sorry scuse me once again what you see you gotta sing it what you see you gotta move it\",\n", - " \"e' fin troppo facile mostrarsi ai propri simili col fare prepotente e intransigente a volte idifferente di chi solo con i soldi riesce ad esaltare il proprio ego fottuta appartenenza di una specie un pò cogliona e un pò animale che non ci serve a niente o perlomeno fa incazzare coloro che continuano a lavorare sulle proprie spalle mentre chi fa il capo mangia pane a tradimento\",\n", - " 'ohi cuginu!bella storia!iu mi sentu americano quando tu sarai più grande ti darò na grossa mano se verrai qui a brooklino posso farti un gran favore!di restare lì in italia senti a me cu to fa fari?!certu che mi sono accorto che il pensiero is differenti non mi importa del creato prendi money assai potenti mangia vivi and futti futti ca poi dio perdona a tutti car and beatures night and club ma non chiedermi il perchè!',\n", - " 'what you see is what you get fuck and story italiano in usa what you see is what you get back to square mother brother sorry scuse me once again what you see you gotta sing it what you see you gotta move it',\n", - " \"tutta questa potenza di chi si sente un dio grazie al denaro degenera in violenza controllata,mirata,studiata così come se fosse di cultura da quelli che manovrano le fila di questa enorme pagliacciata di chi vuol farci credere che qui è tutt'apposto ma è solo una illusione e ci continuano a fregare col sogno americano di chi col falso inganno vuole solo comandare\",\n", - " \"what you see is what you get fuck and story italiano in usa what you see is what you get back to square mother brother sorry scuse me once again(x2)please don't aske me one i'm dead!\",\n", - " '(grazie a lorella per questo testo)',\n", - " 'colgo un fiorellino di montagna',\n", - " 'perché sei tu il mio amor',\n", - " 'perché con questo fiore, raccolto su in montagna',\n", - " 'spero di portarti in montagna',\n", - " 'perché la più bella sei per me',\n", - " 'yes i love you in the sky forever, forever',\n", - " 'yes i love you in the sky forever, forever',\n", - " 'quando guarderai il mio fiorellino',\n", - " 'tu penserai a me',\n", - " 'io penserò che tu mi stai pensando',\n", - " 'poi, domani, tornerò in montagna',\n", - " 'spero di portarti insieme a me',\n", - " 'yes i love you in the sky forever, forever',\n", - " 'yes i love you in the sky forever, forever',\n", - " 'yes i love you in the sky forever, forever',\n", - " 'yes i love you in the sky forever, forever',\n", - " 'fu il percorso e il percorso',\n", - " 'fu maledetto',\n", - " 'fu il destino e il destino',\n", - " 'fu contraddetto',\n", - " 'e non ci credo ancora',\n", - " 'e non voglio parlarne',\n", - " 'e ci credo al paradiso',\n", - " 'ma non può bastarmi',\n", - " 'ora voglio un’altra vita',\n", - " 'ora voglio stare meglio',\n", - " 'ora voglio il ricordo non lo mitighi il tempo',\n", - " 'baby bring down all the rain',\n", - " 'if that’s what it’s gonna take',\n", - " 'to make it epic',\n", - " 'gotta make it epic',\n", - " 'who’s got tomorrow if you don’t own today',\n", - " 'to make it epic, gonna make it epic',\n", - " 'fu perfetto e tremendo',\n", - " 'fu un tradimento',\n", - " 'fu crudele e cruciale',\n", - " 'e fermò il tempo',\n", - " 'e ci provo anche adesso a cambiare i fatti',\n", - " 'nello specchio il viso di chi sa che è tardi',\n", - " 'perché hai lasciato un segno',\n", - " 'perché posso fare meglio',\n", - " 'perché la mia vita valga un po’ di orgoglio',\n", - " 'baby bring down all the rain',\n", - " 'if that’s what it’s gonna take',\n", - " 'to make it epic',\n", - " 'gotta make it epic',\n", - " 'who’s got tomorrow if you don’t own today',\n", - " 'to make it epic, gonna make it epic',\n", - " 'una vita in bilico',\n", - " 'un libro epico',\n", - " 'la mia vita in bilico',\n", - " 'un libro epico: fine primo capitolo',\n", - " 'baby bring down all the rain',\n", - " 'if that’s what it’s gonna take',\n", - " 'to make it epic',\n", - " 'gotta make it epic',\n", - " 'se tu, se tu voli insieme a me, sali queste scale alte fin lassù',\n", - " \"lo so, lo so è solo rock'n'roll, lasciami provare se sono un jolly o un re\",\n", - " 'se vuoi, se vuoi ballare insieme a me, più in alto andrò più in alto se sono un jolly o un re',\n", - " \"yeah ... rock'n'roll city, angeli dannati, i know it's only rock'n'roll\",\n", - " \"love you, love you baby, i'm arlequin baby, i know it's only rock'n'roll\",\n", - " \"oh yeah.....! i' m mister rock\",\n", - " \"viva, viva, viva rock' n ' roll\",\n", - " \"viva, viva, viva rock' n ' roll\",\n", - " 'viva, viva, viva mister rock',\n", - " 'oh yeah ......! mister rock!',\n", - " \"lo so, lo so è solo rock'n'roll, lasciami provare se sono un jolly o un re\",\n", - " \"rock'n'roll city, angeli dannati, i know it's only rock'n'roll\",\n", - " \"love you, love you baby, i'm arlequin baby, i know it's only rock'n'roll\",\n", - " 'lavoro tutto il giorno, mi sbatto come un gatto, la sera non ne posso più',\n", - " \"mi arrabbio te ne freghi, grido, grido senti, adesso non m'importa più\",\n", - " 'adios alla city',\n", - " 'nei bicchieri di pastis',\n", - " 'dentro il vortice del twist',\n", - " 'nei quartieri a luci rosse danno un film',\n", - " 'si chiama \"supernicotin\"',\n", - " 'tu sei la festa di halloween',\n", - " \"nell'autobus bruciato delle drag queen\",\n", - " 'mi dicono: \"francisco vieni qui\"',\n", - " 'kill me baby please',\n", - " 'you are my lady heroin chic',\n", - " 'take me to the beach',\n", - " 'jamaica thc',\n", - " 'ti do la mia saudade',\n", - " 'che sono fiori avvelenati',\n", - " 'ti fanno sesso i pirati',\n", - " 'ti do le mie parole',\n", - " 'nella noche quando piove',\n", - " 'due signore nude ubriache',\n", - " 'mi parlano di te, baby',\n", - " 'love me baby please',\n", - " 'you are my lady heroin chic',\n", - " 'take me to the beach',\n", - " 'jamaica thc',\n", - " 'kill me baby please',\n", - " 'you are my lady heroin chic',\n", - " 'take me to the beach',\n", - " 'jamaica thc',\n", - " 'love me baby please',\n", - " 'you are my lady heroin chic',\n", - " 'take me to the beach',\n", - " 'caraibi, napoli',\n", - " '(bing bang being be, bing bang being be, bing bang being be destiny)',\n", - " \"essere illusioni fantasmi avere immagini e sogni d'essere\",\n", - " '(oh ah ah oh oh oh, oh ah ah eh eh eh, e sei solo kyrie eleison)',\n", - " 'cosa credi credi di avere mille cose è ciò che hai che ti ha è ciò che hai che ti ha',\n", - " '(bing bang being be bing bang being be bing bang being be destiny)',\n", - " '(oh ah ah oh oh oh, oh ah ah eh eh eh, e sei solo kyrie eleison)',\n", - " 'cosa credi di avere il massimo del sesso',\n", - " 'ma è il sesso che ti ha è il sesso che ti ha',\n", - " '(bing bang being be, bing bang being be, bing bang being be destiny)',\n", - " \"essere illusioni fantasmi avere immagini e sogni d'essere\",\n", - " \"essere illusioni fantasmi avere immagini e sogni d'essere\",\n", - " '(oh ah ah oh oh oh, oh ah ah eh eh eh, e sei solo kyrie eleison)',\n", - " 'cosa credi di essere un uomo',\n", - " \"e' quel che sei che ti ha\",\n", - " 'to be or not to be, to be or not to be, to be or not to be',\n", - " '(bing bang being be, bing bang being be, bing bang being be destiny)',\n", - " '(oh ah ah oh oh oh, oh ah ah eh eh eh, e sei solo kyrie eleison)',\n", - " 'cosa credi che si ripeta la canzone',\n", - " 'ma il denaro non mi ha, il denaro non mi avrà',\n", - " '(bing bang being be, bing bang being be, bing bang being be destiny)',\n", - " '(oh ah ah oh oh oh, oh ah ah eh eh eh, e sei solo kyrie eleison)',\n", - " 'guarda fuori è già mattina',\n", - " 'questo è un giorno che ricorderai',\n", - " \"alzati in fretta e vai, c'è chi crede in te\",\n", - " 'non ti arrendere',\n", - " 'once in every life there comes a time',\n", - " 'we walk out all alone and into the light',\n", - " \"the moment won't last but then\",\n", - " 'we remember it again when we close our eyes',\n", - " 'like stars across the sky',\n", - " 'e per avvincere tu dovrai vincere',\n", - " 'we were born to shine',\n", - " 'all of us here because we believe',\n", - " 'non arrenderti',\n", - " 'qualcuno è con te',\n", - " 'like stars across the sky',\n", - " 'we were born to shine',\n", - " 'e per avvincere dovrai vincere',\n", - " 'e allora vincerai',\n", - " 'caravan petrol!...',\n", - " 'caravan petrol!...',\n", - " 'caravan petrol!...',\n", - " 'caravan petrol!...',\n", - " 'caravan...',\n", - " \"mm'aggio affittato nu camello\",\n", - " \"mm'aggio accattato nu turbante\",\n", - " 'nu turbante â rinascente',\n", - " \"cu 'o pennacchio russo e blu...\",\n", - " \"cu 'o fiasco 'mmano e 'o tammurriello\",\n", - " \"cerco 'o ppetrolio americano\",\n", - " \"mentre abballano 'e beduine\",\n", - " \"mentre cantano 'e ttribbù...\",\n", - " \"comme si' bello\",\n", - " 'a cavallo a stu camello',\n", - " \"cu 'o binocolo a tracolla\",\n", - " \"cu 'o turbante e 'o narghilè...\",\n", - " \"gué, si' curiuso\",\n", - " 'mentre scave stu pertuso...',\n", - " 'scordatello, nun è cosa:',\n", - " \"ccá, 'o ppetrolio, nun ce sta...\",\n", - " 'alláh! alláh! alláh!',\n", - " 'ma chi tha ffatto fá?',\n", - " \"comme si' bello\",\n", - " 'a cavallo a stu camello',\n", - " \"cu 'o binocolo a tracolla\",\n", - " \"cu 'o turbante e 'o narghilè!...\",\n", - " \"cu 'o fiasco 'mmano e cu 'o camello\",\n", - " \"cu 'e gguardie 'nnanze e 'a folla arreto\",\n", - " \"'rrevutá faccio tuleto:\",\n", - " 'nun se pò cchiù cammená...',\n", - " \"jammo, è arrivato 'o pazzariello!\",\n", - " \"s'è travestuto 'a menelicche...\",\n", - " \"'mmesca 'o ppepe cu 'o ttabbacco...\",\n", - " \"chi sarrá st'alí babbá!?...\",\n", - " \"comme si' bello\",\n", - " 'a cavallo a stu camello',\n", - " \"cu 'o binocolo a tracolla\",\n", - " \"cu 'o turbante e 'o narghilè...\",\n", - " \"gué, si' curiuso\",\n", - " 'mentre scave stu pertuso...',\n", - " 'scordatello, nun è cosa:',\n", - " \"ccá, 'o ppetrolio, nun ce sta...\",\n", - " 'alláh! alláh! alláh!',\n", - " 'ma chi tha ffatto fá?',\n", - " \"comme si' bello\",\n", - " 'a cavallo a stu camello',\n", - " \"cu 'o binocolo a tracolla\",\n", - " \"cu 'o turbante e 'o narghilè!...\",\n", - " 'finale:',\n", - " 'alláh! alláh! alláh!',\n", - " 'ma chi mmha ffatto fá?',\n", - " \"comme só' bello\",\n", - " 'a cavallo a stu camello',\n", - " \"cu 'o binocolo a tracolla\",\n", - " \"cu 'o turbante e 'o narghilè!...\",\n", - " 'e se penso a te…',\n", - " 'mi faccio male',\n", - " 'ma invecchierò…',\n", - " 'pensando a te',\n", - " 'e se me ne andai…',\n", - " 'fu per amore',\n", - " 'che un giorno sai…',\n", - " 'ucciderò',\n", - " 'oh babe',\n", - " 'ci vuole tempo',\n", - " 'oh',\n", - " 'tutta una vita… lo so',\n", - " 'because i love you… more than i need you',\n", - " '‘cos i feel so bad, feel so bad',\n", - " 'because i need you, more than i want you',\n", - " 'cos i feel so bad, feel so bad',\n", - " 'così resterai…',\n", - " 'di puro amore',\n", - " 'che un giorno sai',\n", - " 'ammazzerò',\n", - " 'oh babe',\n", - " 'ma è un’altra storia',\n", - " 'oh',\n", - " 'quella che sai',\n", - " 'che so',\n", - " 'because i love you… more than i need you',\n", - " '‘cos i feel so bad, feel so bad',\n", - " 'because i need you, more than i want you',\n", - " 'cos i feel so bad, feel so bad',\n", - " 'uhhhhhhhh',\n", - " 'ma non è vero',\n", - " 'che il cielo è nero',\n", - " 'che il cielo è nero',\n", - " 'neeeeeero',\n", - " 'tornerai',\n", - " 'amerò',\n", - " 'uhhhhhhhh',\n", - " 'ma è un’altra storia',\n", - " 'la nostra storia',\n", - " 'e’ un’altra storia',\n", - " 'yeeeeah',\n", - " 'ma non è vero',\n", - " 'che il cielo è nero',\n", - " 'che porti via',\n", - " 'la nostra storia',\n", - " 'e’ un’altra storia',\n", - " 'yeeeeah',\n", - " 'because i love you more than i need you',\n", - " 'cos i feel so bad',\n", - " 'sei proprio un grasso menefregista',\n", - " 'sei dal lontano il piu',\n", - " 'coatto uomo nel mondo',\n", - " 'sei una testa di cazzo-',\n", - " 'lato di ferro',\n", - " 'sei una testa di cazzo',\n", - " 'guardo la tivu ogni pomeriggio',\n", - " \"quando l'accendo, vedo\",\n", - " \"un gran cazzo - l'odio e l'amo\",\n", - " 'che dio-sei magico',\n", - " \"sure he's had his share of problems\",\n", - " 'his life has been tough',\n", - " \"but that's no excuse to be so fucking gruff\",\n", - " \"mark sanger serves him ham, though he doesn't like pork\",\n", - " \"he'd rather eat his own shit with a knife and a fork\",\n", - " 'basta con lo stronzo - non lo mangia, prego!',\n", - " 'lato di ferro - ti voglio bene',\n", - " 'lato di ferro, una domanda',\n", - " 'puoi dirmi se il tuo piatto e buono',\n", - " 'mi domandavo',\n", - " 'you are really a fat person who does not give a fuck',\n", - " ...]},\n", - " 'rap': {'meta': {'train_data': ['g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'seeh',\n", - " \"mai più ore in un vicolo pe' alza' uno spicciolo\",\n", - " 'non sono più un pesce piccolo',\n", - " 'ma un pescecane',\n", - " \"in quest'acque non puoi nuotare\",\n", - " \"la società ti c'infila\",\n", - " 'questo tipo di vita non la scegli mica',\n", - " 'lei seleziona',\n", - " 'come funziona',\n", - " 'elementi, luoghi e ora',\n", - " 'la zona di guerra è roma',\n", - " 'che non è sazia ancora',\n", - " 'sarà razzia allora',\n", - " \"visto che tutti siam uomini d'affari\",\n", - " \"noi s'affidam a quelli coi prezzi meno cari\",\n", - " \"non lo sto a fà pe' aricchimme\",\n", - " \"unicamente per sopravvive'\",\n", - " \"spero poter continuare a scrive'\",\n", - " \"de 'sta vita vissuta al limite\",\n", - " \"brucerò da giovane pe' non arrivare a vecchio\",\n", - " 'guardarsi la mattina a uno specchio',\n", - " 'fare i conti con se stesso:',\n", - " '\"come ho campato fino adesso?\"',\n", - " 'al domani non ci penso',\n", - " 'la coscienza che ho perso',\n", - " 'la società del resto',\n", - " 'ne sono il riflesso',\n", - " 'droga, soldi, potere e sesso',\n", - " \"ora è unita l'europa\",\n", - " 'ognuno beve, fuma e scopa',\n", - " \"co' zuretti like mezz'etti i buy organi faggot\",\n", - " 'by use too big in cap by the abbot',\n", - " 'benassati rap mind the gap i shake your fake culo adottato',\n", - " 'i do business with satana mascherato',\n", - " \"accanna con la canna 'mazza e mollazza il tuo vicino\",\n", - " 'fanculo ai rappers wannabe gambino',\n", - " 'esclusivo istante like noyz diamante',\n", - " 'dj kimo in the limo ti sderenava',\n", - " 'commento esilarante like ugo francica nava',\n", - " 'i play bowling with madonna',\n", - " 'smoke blunt with cappadonna',\n", - " 'i spit with flamì from milano',\n", - " 'pimp cap tarango mia rap tuscolano',\n", - " 'macareno de treno with montana',\n", - " 'like fontana concettuale',\n", - " 'paga shit andrò su in verticale',\n", - " 'respect me man',\n", - " 'tha shit never arrend bombe di notte extralarge',\n", - " 'i do the shit al contrario like savage',\n", - " 'i stop your glory your memory',\n", - " 'benassa the glassa walk alone',\n", - " 'make lo sport like ski ma with malone!',\n", - " 'ascolto il cole fumo il touch tacci il tuo strazio di smokkare',\n", - " \"you can't fuck with the gemellare\",\n", - " 'è okay che il mio dj tocca smokka per ripicca',\n", - " 'mega involvet with the ambrogio splikka',\n", - " 'gemello with benassa the glassa',\n", - " 'sopra il beat di mobb deep que te pasa?',\n", - " 'i have my man tozzi ti fa a pezzi re david',\n", - " 'mentre lo guardavi',\n", - " \"l'italiano che vi rende schiavi\",\n", - " 'we mix imprese',\n", - " 'with inglese',\n", - " 'with my man paper mi er double p portese',\n", - " 'nigga scolorati like benassati devasto il tuo canestro a mestiere',\n", - " 'vendo droga pesante nel tuo quartiere',\n", - " 'paghi in spicci',\n", - " 'like massicci',\n", - " 'ma non credi',\n", - " 'se non vedi',\n", - " 'truceklan nane ti rimane svasticato',\n", - " 'stilizzato like mamone',\n", - " 'i rap parioli, coppedè and alberone',\n", - " 'i do the storia with chicoria',\n", - " 'selling dope and coke with ammonia',\n", - " 'check it!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'ah-ah, check it! in the panchine, 2004',\n", - " 'g-mellow, benassa the glassa, chicoria mc gregorio vii',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'g-mellow!',\n", - " 'allo stadio e in un bar... na-na-na na-na-ne',\n", - " 'allo stadio e in un bar... na-na-na na-na-ne',\n", - " 'this is nane',\n", - " 'in the panchine',\n", - " 'check-check it',\n", - " \"te riesco a fa' na rockaz da medio grammo\",\n", - " 'check-check it',\n", - " 'the spiccio messo male, narco non settimanale',\n", - " 'turn in the kefiah in your mercato rionale',\n", - " 'venticinque a settimana, io e chicoria incastrati',\n", - " 'in front of the giudice freestyle amplificati',\n", - " 'i stolen rolex fasulli, fanciulli',\n", - " 'i rap terza media plus my man ciccio nulli',\n", - " 'my people speak dialetto nel localetto',\n", - " 'ti caghi sotto quando senti il grilletto',\n", - " 'you find me in the panchine baby very well',\n", - " 'bomb three points like latrell sprewell',\n", - " 'col gel i drink by the spina, we make rapina',\n", - " 'in the panchina with the baionetta marocchina',\n", - " 'impanicati, we are pirati in prati',\n", - " 'benassati pay cauzione, we never arrestati',\n", - " 'nessuno ti vuole in casa, come la droga scrausa',\n", - " 'le tue pussy colorate got the menopausa',\n", - " 'vita illegale, contromano, i do frontale',\n", - " 'bombe a castelletto, fuck your rap omosessuale',\n", - " \"tangenziale, that's deadly combination\",\n", - " 'traffik records, we ready for the compilation',\n", - " 'playstation, my man noyz tell me \"spegni tutto\"',\n", - " 'allarmi fake, get away with the farabutto',\n", - " 'imbratto ritratti sui tuoi muri appena rifatti',\n", - " 'vandals inside fighting with the piedipiatti',\n", - " 'strength approach with my man armando',\n", - " 'we smoke blunt with petrarca, ludovico, orlando',\n", - " 'with lorenzo we cook rockaz da medio grammo',\n", - " 'we organizzati, are you ready for the scambio?',\n", - " 'in the panchine got more fans than the knicks',\n", - " 'i love savage boys plus free bloody tricks',\n", - " 'in the tasca cole stolen posca',\n", - " 'with halo 4 solo, drinking caipiroska',\n", - " 'chilling at hungaria, i robbery fondiaria',\n", - " 'dropped off parioli borough the scena sanguinaria',\n", - " 'dropping bomba incendiaria, destroy the polizia',\n", - " 'you looking for prove, testimoni, disappear',\n", - " 'sputo sangue io tra voi',\n", - " 'in the panchina più truceboys',\n", - " 'e-e-e-e-ecco che vuoi',\n", - " 'chissà se starò tra voi',\n", - " 'sputo sangue io tra voi',\n", - " 'in the panchina più truceboys',\n", - " 'e-e-e-e-ecco che vuoi',\n", - " 'chissà se starò tra voi',\n", - " \"e-e-e-e-ecco che c'è, sta g-mel\",\n", - " 'truceklan: ta gueule',\n", - " 'slk, pappa magnaccia',\n", - " 'ztk minaccia pizza in faccia',\n", - " 'che prendo io, sono re del porcoddio',\n", - " 'camuffo la voce, ti denuncio io',\n", - " \"l'avocat, je pense, petit pois\",\n", - " \"tre anni fa ricevetti l'immortalità\",\n", - " \"truceklan, l'armata degli zombie\",\n", - " 'je suis la tagliola, tu es bambi, soccombi',\n", - " 'trombi, dandy, superga, invicta, champion, finto dandy spendi',\n", - " 'guadagni sogni ma magni a scrivere',\n", - " 'rapisco il figlio sopravvivere',\n", - " \"bodega t'aime, et le problème\",\n", - " \"chi l'ha vu, déjà-vu, truce: la crème\",\n", - " 'perisco ma non capisco',\n", - " 'like pessoa lontano da me in me esisto',\n", - " \"di fronte al palco t'ho visto, insisto\",\n", - " 'agonizzante like gesù cristo',\n", - " 'i have in my head a chiodo fisso',\n", - " 'alone with myself mi crocifiggo',\n", - " 'put me in the croces',\n", - " 'look my apostoli look, roces',\n", - " 'feroce we make bodega with cormega',\n", - " 'in the panchine ti strega',\n", - " 'rap dei quartieri alti',\n", - " 'ai cerchi diamanti',\n", - " 'avanti, mai più, carry up your santi',\n", - " 'vendo droga a tua sorella',\n", - " 'mafioso come uno dei fratelli sbarella',\n", - " 'in della, gun blade with pistola a molla',\n", - " 'i sniff the colla, kidnap baby in the culla',\n", - " 'happiness like chi se trastulla',\n", - " 'in the panchine this is shit i device',\n", - " 'hip hop terrorism, we make the ride',\n", - " 'is divine of columbine',\n", - " 'sono un ragazzo, giornatacce sprecate senza fare un cazzo',\n", - " \"di mattina un bowling e nel pomeriggio m'ammazzo\",\n", - " '\"c\\'era una volta in america\", tra un omicidio e un razzo',\n", - " 'abusi like christiane f., jt leroy and laura palmer',\n", - " 'with pugnale tradizionale santa sangre',\n", - " 'inquietante like \"mangiati vivi!\"',\n", - " 'umberto lenzi esclusivi',\n", - " \"cogne come twin peaks, scopri l'assassino\",\n", - " 'our time to , speaks al contrario come er nano',\n", - " 'in bedroom mi drogo con bob sul divano',\n", - " 'to the darkness the future pass',\n", - " 'the magician long to see',\n", - " 'fottiti stronzo, fire walk with me',\n", - " 'chest è pe wuaglijun ca stann a ind e a for ro sistem',\n", - " 'napoli bros, dope one, clementin, lirical drugs',\n", - " 'fratellì purtamml a sott cu nuij oh, oh',\n", - " 'e man aizat wuagliju',\n", - " 'put your hands in the sky',\n", - " 'p chi ven a ind e fogn',\n", - " 'put your hands in the sky',\n", - " 'p chi ven a ind e fogn',\n", - " 'put your hands in the sky',\n", - " 'p chi ven a ind e fogn',\n", - " 'cunusc a vit ro pal?',\n", - " \"tutt e jurnat cu l'uocchij sbarrat quand occor lanc e signal\",\n", - " 'ha la sorella bella in cella dalla pasquetta!',\n", - " 'la panetta nella sella della lambretta!',\n", - " 'cap kist è figli a me',\n", - " 'mò t pigl ca currè',\n", - " 'napl pentit e re',\n", - " \"at ca carlito's way\",\n", - " 'vatt comm a triple h',\n", - " \"p v cuntà tutt e guaj v' essà fa nu medley\",\n", - " 'cari cumpar re miei',\n", - " 'nata puntat e natu frat puntat che fierr',\n", - " \"chi è appena nat e già è catapultati int a 'uerr\",\n", - " 'ma vuò ra bon ca sto vnenn ro giappon?',\n", - " 'passm sett pacchett!',\n", - " \"fatt nu gir e po' aspett!\",\n", - " 'circ e nu m chiedr cartin',\n", - " 'men trash na scen e silent hill',\n", - " 'pigl e flash?',\n", - " 'è a machin e clementin!',\n", - " 'quann iesc ammacchij int e cazttin!',\n", - " \"close your eyes, don't cry!\",\n", - " 'guard quanti guaij!',\n", - " 'p chi ver a vit bianc e ner comm a sin city!',\n", - " 'ten o nir ra mort, o bianc ra coc',\n", - " \"luatv alloc, ca abbasc n's joc\",\n", - " 'drog int e vasc, a gent fatic',\n", - " 'e sord s fann aret a nu vic',\n", - " 'chest è a vit e chi viv a jurnat abbandunat',\n", - " 'wapp cu na cap spustat',\n", - " \"nun s'accuntent ra mullic\",\n", - " 'si s parl e cash addvient nu nemic!',\n", - " \"p nient po' piglià nu gripp\",\n", - " \"t ferm p wuardà s si e l'antiscipp\",\n", - " 'ha cercat e cagnà strad',\n", - " \"ha pruat n'è cos\",\n", - " \"mamm r'acopp o barcon ca lancn e dos\",\n", - " 'ognun ten nu ruol e mann annanz o srvizij',\n", - " \"o pal ha rat l'allarm e po scatt nu blitz!\",\n", - " 'sang ca schizz si sbagl p vizij',\n", - " \"t'aiz e renar ma mai t realizz!\",\n", - " \"close your eyes, don't cry!\",\n", - " 'guard quanti guaij!',\n", - " 'p chi ver a vit bianc e ner comm a sin city!',\n", - " \"e scol elementar puntav all'univers\",\n", - " \"ma o futur cu l'uocchij a criatur s ver divers!\",\n", - " 'fors s fann kiù sord cu nu lavor onest',\n", - " \"po' si va ngann na cord e o cor ca s'arrest!\",\n", - " 'la malafama porta tanta grana',\n", - " 'parla la campagna e inala bamba amara',\n", - " 'ma la trama già è sgamata',\n", - " 'sotto la madonna è pronta già la bara!',\n", - " \"it's a city of drugs, superstar\",\n", - " 'quant tras è ò cas ca stut e far!',\n", - " \"e capit, o falc c'ha cuntrullat\",\n", - " \"stev vstut stran, chi s'è sntut mal?\",\n", - " \"e quatt a nott st'o sol\",\n", - " \"po' pigl e bott a cuntror\",\n", - " \"si zomp o'cuntator\",\n", - " \"ma che v'cont a signor rò sicond pian?\",\n", - " \"a puzz e sgang sott o' balcon?\",\n", - " 'signò sincerament simm buoni wuagliun!',\n", - " 'soe creschiu caminande in custas carrerasa',\n", - " 'in bichinaos e prattasa nugoresas',\n", - " 'e a sos chi mi dimandana dae ube benzo e chie soe',\n", - " 'rispondo chi soe nugoresu de nugoro!',\n", - " 'custa est pro nugoro mama de cada cantone chi iscribo',\n", - " 'de cada contu chi conto de cada tassa chi bibo',\n", - " 'de cada rima chi serro de cada base chi pisto',\n", - " 'de sa limba chi faveddo de sa domo in ube isto',\n", - " \"sa nugoro de eris cussa chi m' at bidu creschere\",\n", - " 'cussa chi appo serrau a lucchette in coro pro sempere',\n", - " 'sa nugoro chi banto in cada locu a arta boche',\n", - " 'mama de chie est nachiu paschiu creschiu inoche',\n", - " 'sa nugoro in iberru nibada in istiu brusiada',\n", - " 'cussa de zente mala isfidiada chi zirat armada',\n", - " \"cussa chi at connottu s'odiu ma cheret amore\",\n", - " 'cussa chi est mudada meda dae cando fippo minore',\n", - " 'e commo chi apereo sa bentana de domo e pompio iffora',\n", - " \"pesso a issa comente siete una sennora m'abbizzo\",\n", - " 'canta est galana e cantu so istau fortunau',\n", - " \"de aere custu sambene e l'aere rappresentau\",\n", - " 'custa est pro tottu sas bortas chi fieru mi so intesu',\n", - " \"de negossiare in sardu chi'n s'azzentu nugoresu\",\n", - " \"in mesu asos amicos chi m'ant sempere diffesu e cumpresu\",\n", - " \"chi'n piachere in tzilleri mi so trattesu\",\n", - " \"m'allugo una zicca saludo ghiro in bichinau\",\n", - " 'mi firmo a pompiare sos murales chi ant pintau',\n", - " \"sa luche de s'impuddile m'accumpazzat in sa janna\",\n", - " 'solu durches paragulas pro tene mama manna',\n", - " 'soe creschiu caminande in custas carrerasa',\n", - " 'in bichinaos e prattasa nugoresas',\n", - " 'e a sos chi mi dimandana dae ube benzo e chie soe',\n", - " 'rispondo chi soe nugoresu de nugoro!',\n", - " 'chin tottu s’affettu, nugoro, custa cantone este pro tene',\n", - " 'pro ti narrere sinzeru, chi abberu ti cherio bene!',\n", - " 'ti lu deppo pro sos durches ammentos de pitzinnia',\n", - " \"chi tue m'as pintau chin sas menzus tintas chi aias\",\n", - " 't’appo torrau s’amore e su profundu sentimentu',\n", - " 'cando appo iscrittu nugoro in cudd’artu muru‘e tzimentu',\n", - " 'inube cada manzanu colabo pro andare a iscola',\n", - " 'chin su walkman alluttu e s’urtima mea cantone noba',\n", - " 'su pessamentu bolat e che abba de ribu mi trisinat',\n", - " 'in cuddos ammentos de cando istabo in bia mughina',\n", - " 'fippo galu minore ma est incue chi appo cumpresu',\n", - " 'chi no est dae su sambenau chi si biete su nugoresu',\n", - " 'ma dae su sensu de appartenenzia a custa zitade',\n", - " 'pro custa limba e pro custa manna comunidade',\n", - " 'de zente chi appo perdiu o zente chi si ch’est andada',\n", - " 'zente chi est abbarrada e a fiancu meu est sempere istada',\n", - " 'dae sa punta ‘e su monte ortobene t’appo ammirada',\n", - " 'in cussas nottes craras tottu canta illucherada',\n", - " 'chin seuna e su nurache, santu predu e pred’istrada',\n", - " 'bibende intro ‘e unu zilleri chin sa serranda abbassiada',\n", - " 'm’ammento cada contu, cada locu, cada boche',\n", - " 'cada cara de sas pessones chi appo connottu inoche',\n", - " 'in su bene e in su male ses unu donu de deu',\n", - " 'custu ti cherio narrere, nugoro, sambene meu!',\n", - " 'soe creschiu caminande in custas carrerasa',\n", - " 'in bichinaos e prattasa nugoresasa',\n", - " 'e a sos chi mi dimandana dae ube benzo e chie soe',\n", - " 'rispondo chi soe nugoresu de nugoro!',\n", - " 'castaman! (caparezza) oh yeah',\n", - " '(listen) legalize your seed (alborosie)',\n", - " 'lega-legalize him, lega-legalize him',\n", - " 'tell you me, tell you me, tell you me, tell you me if you lega-legalize him',\n", - " 'lega-legalize him, lega-legalize him',\n", - " 'tell you me, tell you me, tell you me, tell you me if you lega-legalize him',\n", - " 'lega-legalize him, lega-legalize him',\n", - " 'tell you me, tell you me, tell you me, tell you me if you lega-legalize him',\n", - " 'lega-legalize him, lega-legalize him',\n", - " 'i want to rammande',\n", - " 'mando in fumo denaro perché sono un castaman',\n", - " 'io mando in fumo denaro pure con la canasta al bar',\n", - " \"lo champagne, la pelliccia d'astrakan\",\n", - " 'a chi mi chiede come si fa dico che basta amar',\n", - " 'ed io amo fare il premier, mi gasa come perrier',\n", - " \"quand'ero bambino vestivo come un manichino dell'atelier\",\n", - " 'avevo le bburago, vetri scuri e chauffeur',\n", - " 'otto babysitter con auricolari e tailleur',\n", - " 'ed alla scuola elementare, furbetto e lesto',\n", - " 'trafficavo sotto banco quello e questo',\n", - " 'una volta condannato ricorrevo in appello',\n", - " 'poi venivo protetto dal mio gran maestro',\n", - " 'divenuto adolescente la prima intuizione',\n", - " \"ogni capo deve avere un capo d'imputazione\",\n", - " 'sono un presidente in erba ma me ne fotto della maria',\n", - " 'perché io lotto ma per la mia legalizzazione',\n", - " 'legalize (lega-legalize him)',\n", - " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", - " 'legalize (lega-legalize him)',\n", - " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", - " 'sensimilla e ganja no, ma il mio seme spargerò',\n", - " 'io mi legalize (lega-legalize him)',\n", - " 'pratico lo sport e non mi fermo mai, man',\n", - " 'gare offshore alle isole cayman',\n", - " 'scalo le spa, non il mont blanc',\n", - " 'e salgo di livello come un super saiyan',\n", - " 'mi atteggio da messia ma non mi fido di pietro',\n", - " 'io mi fido solo di chi dice: \"firmo il decreto\"',\n", - " 'ma se vengo più indagato di pedine a cluedo',\n", - " 'rimangio tutto come un ruminante nel carrubeto',\n", - " 'così ricco che i miei soldi io li do alle fiamme',\n", - " 'li do alle fiamme, le fiamme gialle',\n", - " 'invece di arrestarmi, saltano alle spalle',\n", - " 'di chi ha la piantagiona come bobbe malle',\n", - " 'chi mi accusa di tangente diventa secante',\n", - " 'chi doveva stare zitto diventa squillante',\n", - " 'ma vado dal mio medico curante',\n", - " 'che mi prescrive più di un antimicotico per il glande',\n", - " 'legalize (lega-legalize him)',\n", - " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", - " 'legalize (lega-legalize him)',\n", - " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", - " 'sensimilla e ganja no, ma il mio seme spargerò',\n", - " 'io mi legalize (boomba, sienteme a me)',\n", - " 'pasta and mandolino plus nuff party at ciampino (oh)',\n", - " 'me bigga than the pope and redda than cremlino',\n", - " 'me buy out italy, me have a deep borsellino',\n", - " \"i'm the hypest prime minister, hyper than al pacino\",\n", - " 'some people call me dumb, some call me malandrino',\n", - " \"of the likkle politicians i'm the real principino\",\n", - " 'me gnam the biggest food, plus biscotti del mulino',\n", - " 'and the youngest set a gal them call me ercolino (legali-li-li-)',\n", - " 'hasta! me no finish yet',\n", - " 'me want a tv station so me buy that',\n", - " 'me want a football team so me buy that',\n", - " 'and if me break the law, me change that',\n", - " \"and nobody can say nothin' to bomboclaat\",\n", - " \"i'm uplifted and so charmin' and me belly phat\",\n", - " 'and me link up with the crème of america',\n", - " 'so me buy left and right, so me account never dry',\n", - " 'so me buy, buy, buy, then me bye, bye, bye',\n", - " 'legalize (legalize)',\n", - " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", - " 'legalize (legalize)',\n", - " 'legalize the premier (tell you me, tell you me, tell you me, tell you me if you lega-legalize him) (the premier)',\n", - " 'sensimilla e ganja no, ma il mio seme spargerò',\n", - " 'io mi legalize',\n", - " 'ora che sei castaman hai caste amanti',\n", - " 'hai qualche minorenne nei tuoi tanti party',\n", - " 'mai sposarti ma fai tagli ai nastri',\n", - " 'delle intercettazioni per i grandi appalti',\n", - " 'e se capita che un giorno starai male male',\n", - " 'vedrai leccaculo al tuo capezzale',\n", - " 'darai una buona parola per farli entrare',\n", - " 'nel tuo paradiso fiscale',\n", - " '*cori angelici*',\n", - " 'me lo ripeto in testa giusto per non dormire',\n", - " 'resta sveglio perché il meglio deve ancora svanire',\n", - " 'per poi sognare un altro modo per potersi rialzare',\n", - " 'come la pioggia che cade senza mai farsi male',\n", - " '\"da dove siete usciti?\", dice una voce incerta',\n", - " 'non lo so, ma siamo entrati da una ferita aperta',\n", - " 'le cicatrici dicono di starcene fra i deboli',\n", - " 'parliamo col linguaggio dei segni indelebili',\n", - " \"come ieri, tu non c'eri\",\n", - " 'disturbi ereditari, sfortunati ereditieri',\n", - " 'perché spesso chi ti giudica è il primo che poi ti trucida',\n", - " 'quando lanciare un sasso vale più di una supplica',\n", - " 'ci hanno detto: \"non è tutto oro ciò che luccica\"',\n", - " \"ma l'hanno detto perché è tutto loro ciò che luccica\",\n", - " 'ora voglio gridare fortissimo',\n", - " 'la vita fa schifo, il panorama è bellissimo',\n", - " \"it's a beautiful disaster\",\n", - " \"it's a beautiful disaster\",\n", - " \"i get this feeling i can't miss\",\n", - " \"you're getting harder to resist\",\n", - " 'and maybe by the time i know',\n", - " \"it'll be too late to let you go\",\n", - " 'who knew my heart could beat so quick',\n", - " 'my life i gave away for this',\n", - " \"don't care what anybody sees\",\n", - " \"i know i'm doing this for me\",\n", - " 'prendo quei pezzi di vita che ho vissuto per sbaglio',\n", - " 'e li cambio in emozioni di piccolo taglio',\n", - " 'chi vive sempre e comunque, chi vive chiuso in un bunker',\n", - " \"chi vive sotto la luce e vede l'inizio del tunnel\",\n", - " 'io con il cuore di pietra, tu con la coda di paglia',\n", - " 'stanchi di nascondere la testa sotto la rabbia',\n", - " 'mangiare la polvere, condirsi la terra',\n", - " 'noi che cerchiamo la pace a costo di farvi la guerra',\n", - " 'con ventiquattro mila baci probabilmente giuda ci avrebbe sterminati',\n", - " 'sentirsi inadeguati, sentirsi uno dei tanti',\n", - " \"l'occasione persa fa l'uomo ladro di rimpianti\",\n", - " \"rapaci nati con l'animo colpevole\",\n", - " 'denuncia la tua vita per felicità ingannevole',\n", - " 'a tutti noi cresciuti dentro camere oscure',\n", - " 'dove ogni stronzo mente, la verità pure',\n", - " \"it's a beautiful disaster\",\n", - " \"it's a beautiful disaster\",\n", - " \"i get this feeling i can't miss\",\n", - " \"you're getting harder to resist\",\n", - " 'and maybe by the time i know',\n", - " \"it'll be too late to let you go\",\n", - " 'who knew my heart could beat so quick',\n", - " 'my life i gave away for this',\n", - " \"don't care what anybody sees\",\n", - " \"i know i'm doing this for me\",\n", - " 'i can be your butterfly',\n", - " 'love you so hard that i could die',\n", - " 'well, i can make it worth it all',\n", - " 'what a beautiful way to fall',\n", - " \"it's a beautiful disaster\",\n", - " 'beautiful disaster',\n", - " \"i get this feeling i can't miss\",\n", - " \"you're getting harder to resist\",\n", - " 'and maybe by the time i know',\n", - " \"it'll be too late to let you go\",\n", - " 'who knew my heart could beat so quick',\n", - " 'my life i gave away for this',\n", - " \"don't care what anybody sees\",\n", - " \"i know i'm doing this for me\",\n", - " 'beautiful disaster',\n", - " \"it's a beautiful disaster\",\n", - " 'life on the earth is not fun anymore',\n", - " 'bitches fighting bitches like a world war',\n", - " \"what's your name?\",\n", - " 'she looks so young, she wants cocaine',\n", - " 'per quanto ti amo cancello tinder',\n", - " \"c'è chi cucina, c'è chi pulisce\",\n", - " 'per quanto ti amo mi prostituisco',\n", - " 'ho più paura di una troia che del terrorismo',\n", - " 'ho un problema con la droga e con il turismo',\n", - " 'vado in vacanza in colombia e poi mi trasferisco',\n", - " 'per quanto ti amo mi trasferisco',\n", - " 'mi fa paura più la droga che il terrorismo',\n", - " \"c'ho problemi con 'sta troia e con il turismo\",\n", - " 'vado in vacanza in colombia e mi prostituisco',\n", - " \"hey, hey, hey, what's your name?\",\n", - " 'she looks so young, she wants cocaine',\n", - " \"ah, it's ok. ah, it's ok\",\n", - " \"hey, hey, hey, what's your name?\",\n", - " 'she looks so young, she wants cocaine',\n", - " \"what's your name?\",\n", - " 'sto per dirti qualcosa di ridicolo',\n", - " 'per quanto ti amo ti compro il gianicolo',\n", - " 'per quanto ti amo ti compro il gianicolo',\n", - " 'per quanto ti amo ti compro il gianicolo',\n", - " \"what's your name?\",\n", - " \"what's your name? what's your name?\",\n", - " \"hey, hey, hey, what's your name?\",\n", - " \"what's your name? what's your name?\",\n", - " 'life on the earth is not fun anymore',\n", - " 'fun anymore, fun anymore, fun anymore',\n", - " 'fun anymore, fun anymore, fun anymore',\n", - " 'ztk, vandals inside',\n", - " 'tutto il mio crew, man',\n", - " '(exclusive!)',\n", - " 'te smonto especially quando conto',\n", - " 'te lascio perplesso',\n", - " 'like benassa the glassa sconnesso',\n", - " \"adesso, 'cause my man got fretta, vendetta\",\n", - " 'sulle panchine la tua testa rotta',\n", - " 'che infetta le tue pussy esclusive',\n", - " 'esilio like solo rime sieropositive',\n", - " 'bravo rossa pick me up mega',\n", - " 'my boys jump high when i say bodega',\n", - " 'mi frega, il nostro mostro ad incastro',\n", - " 'ti strega, riavvolgi il nastro, the next canestro, un destro',\n", - " 'my man furetti the maestro',\n", - " 'a testaccio, ti rintraccio, alley-oop di loris quando schiaccio',\n", - " 'i do the mafia, te scucio la kefiah',\n", - " 'i fuck with sushi, i do cocaine with john belushi',\n", - " 'ti strusci, when i got droghe da sniffare',\n", - " 'cole, chicoria, gemello a.k.a. \"the gemellare\"',\n", - " '25 a settimana, da assaggio a acchittata',\n", - " 'una linea che non va sorpassata',\n", - " 'oltrepassata calcolo veloce come un computer',\n", - " 'un lavoro truce come il pusher',\n", - " 'matematica materia scolastica insegnata',\n", - " \"l'unica che uso in pratica\",\n", - " 'moltiplicazioni di notti insonni',\n", - " \"passando a rincore' 'sti milioni\",\n", - " \"che c'hai nei pantaloni?\",\n", - " 'svuota la tasca e capovolgila',\n", - " \"fai la figura dell'idiota\",\n", - " 'te ne do la prova',\n", - " 'se cerchi la droga',\n", - " 'chi cerca trova',\n", - " 'cerca, cerca, cerca bene',\n", - " \"pe' me potemo stacce un mese\",\n", - " \"intero, pe' davero\",\n", - " 'io col gemello e benassa',\n", - " 'la meglio mollazza, più il cole',\n", - " 'ciò che la gente non vuole',\n", - " 'truceboys, truceklan, in the panchine',\n", - " \"noi c'avemo le meglio rime\",\n", - " \"'e più gonfie le bustine\",\n", - " 'se il mio pasto non venisse dal crimine',\n", - " 'io a voi, non ve lascerei nemmeno le briciole',\n", - " 'got hip hop, lucio fulci',\n", - " 'put diamanti on my bara',\n", - " \"don't stay close to me\",\n", - " 'when i trip mario bava',\n", - " 'the whip and the body',\n", - " 'try to fix my nodi',\n", - " 'nobody is like my baby stickly chiodi',\n", - " 'from sado to maso, i got carichi pendenti',\n", - " 'plus film escrementi with sangue redenti',\n", - " 'mettimi il j from my immagini sacre',\n", - " 'when i go out, i gonna leave the massacre',\n", - " 'i stay in the panchine far away from problemi',\n", - " 'you stay in your place i got metodi estremi',\n", - " 'cole benassa, put you in the cassa',\n", - " 'gmellow chicoria, ammonia and the roccias',\n", - " 'bravo rossa, i pick you up mega',\n", - " 'push up al crew fast like the moto in piega',\n", - " 'veteranos mix your shit for the scena',\n", - " 'i stay in front of you like nema problema',\n", - " 'benassa! yes benassa!',\n", - " 'oh shit we forget of benassa!',\n", - " 'not me stronzo, i kill you bonzo',\n", - " \"fuck'd up in assenzio, silenzio shh\",\n", - " 'smell of incenso durante il tuo incesto',\n", - " 'ti detesto, i wanna be pretesto',\n", - " 'come noyz ti molesto, nel cesso, without nesso',\n", - " 'i got sconnesso',\n", - " 'you say stronzate, like a palate',\n", - " 'chilati de dosi de eroina',\n", - " \"io mi buco solo co' la stricnina\",\n", - " 'like a vagina cosparsa de cocaina',\n", - " 'te do la caccia come un setter',\n", - " 'anche berlusconi is a gangsta rapper',\n", - " 'i met-tri with the dado',\n", - " 'my only story is only sado-maso',\n", - " 'peace to my man gel, corrado',\n", - " '(exclusive)',\n", - " 'street king man',\n", - " \"siete all'ascolto del machete mixtape volume due\",\n", - " 'salmolebon',\n", - " 'belzabass',\n", - " 'yeh, yeh, yeh, yeh',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up',\n", - " 'yeah, ah',\n", - " 'con questa boccia di vodka potrei ballare samba',\n", - " 'soffio nel palloncino, la festa dei caramba',\n", - " 'apro il portabagagli, a saperlo',\n", - " 'ci mettevo un serpente a sonagli, un black mamba',\n", - " 'aggiornati sui termini chiede se ho bamba',\n", - " 'sembri un tipo a posto, un tipo in gamba',\n", - " 'eh, insomma, non sono mica un terrorista',\n", - " 'anche se in tasca ho una bomba',\n", - " 'fate turni di ronda, solo sbirri in giro, è notte fonda',\n", - " 'vuoi levarmi la patente per mezza bionda',\n", - " 'chiede qual è il mio mestiere (il musicista)',\n", - " 'ride come fosse un dovere (oh)',\n", - " 'e allora sono un anticonformista e in due sere',\n", - " 'lo stipendio di un carabiniere e di un finanziere messi insieme (ah-ah)',\n", - " 'puoi prestarmi il cappello che poi',\n", - " 'ho bisogno della fiamma per accendermi il joint',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up',\n", - " 'yeah',\n", - " 'apro la busta perché',\n", - " 'ho saputo da maria che \"c\\'è posta per me\"',\n", - " 'potresti rovinarmi e mandarmi in clinica',\n", - " \"levarmi l'appetito e la fame chimica (bu-bu-bu)\",\n", - " 'fumo sali da bagno, almeno così',\n", - " 'vengo a mangiarti la faccia come eugene (eugene)',\n", - " \"per voi è routine, fammi 'sta perquisa\",\n", - " 'quando fumo mi trasformo in un mostro come arisa',\n", - " \"faccio arrivare un pacco bomba dall'alabama\",\n", - " 'supera i raggi-x della dogana',\n", - " \"ti preparano il blitz 'sti figli di puttana\",\n", - " 'portati il paracadute perché saltiamo in aria',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up (wooh, wooh)',\n", - " 'if my train goes off the track',\n", - " 'pick it up, pick it up, pick it up',\n", - " 'bleah',\n", - " 'sex, sex',\n", - " 'sex, sex',\n", - " 'sex, sex',\n", - " 'sex, sex',\n", - " 'sick luke, sick luke',\n", - " 'ti offro un drink, via da qui',\n", - " 'uber drive, limousine',\n", - " \"rock'n’roll nella suite\",\n", - " \"metti l'ice, togli i jeans\",\n", - " 'sex, sex, sex on the beach',\n", - " 'con la dark va così',\n", - " 'sex, sex, sex on the beach',\n", - " 'nuovo ice, nuovi jeans',\n", - " 'sex, sex, sex on the beach',\n", - " 'sex, sex, sex on the beach',\n", - " 'sex, sex, sex on the beach',\n", - " 'nuovo ice, nuovi jeans',\n", - " 'tony',\n", - " 'vieni, ti ho scelto (okay)',\n", - " 'oggi ti porto a letto',\n", - " 'è tardi, fai presto',\n", - " 'la uso e poi la getto',\n", - " 'lei dice sempre: \"sì\" (uh)',\n", - " 'vuole me, ma è una bitch (bitch)',\n", - " 'nuovo ice, nuovi jeans (ice)',\n", - " 'la nostra vita è un film (ehi, ehi, uoh)',\n", - " 'sex, sex, sex on the beach',\n", - " 'sex, sex, sex on the beach',\n", - " 'sex, sex, sex on the beach',\n", - " 'nuovo ice, nuovi jeans',\n", - " 'mi offre un drink, via da qui',\n", - " 'uber drive, limousine',\n", - " \"rock'n’roll nella suite\",\n", - " \"metti l'ice, togli i jeans\",\n", - " 'sex, sex, sex on the beach',\n", - " 'con la dark va così',\n", - " 'sex, sex, sex on the beach',\n", - " 'nuovo ice, nuovi jeans',\n", - " 'sex, sex, sex on the beach',\n", - " 'sex, sex, sex on the beach',\n", - " 'sex, sex, sex on the beach',\n", - " 'nuovo ice, nuovi jeans',\n", - " 'volo sopra un jet, no economy (no economy)',\n", - " 'non voglio la tua tipa, no economy (no basic)',\n", - " 'lei mi offre un drink, andiamo via da qui',\n", - " 'sex, sex on the beach',\n", - " 'estate calda, bollente (hot, hot)',\n", - " 'troppo ghiaccio, ho la febbre (ecciù)',\n", - " 'lei si connette come il bluetooth',\n", - " 'ho una nuova auto, fa \"skrrt-skrrt\"',\n", - " 'bella hadid, amiri jeans',\n", - " 'giuro che mi sento come justin',\n", - " 'iced out, rischio di affogarmi',\n", - " 'vvs1 tutti i miei diamanti',\n", - " 'sex, sex, sex on the beach',\n", - " 'lei dice sempre sì',\n", - " 'sex, sex, sex on the beach',\n", - " 'nuovo ice, nuovi jeans',\n", - " 'mi offre un drink, via da qui',\n", - " 'uber drive, limousine',\n", - " \"rock'n'roll nella suite\",\n", - " \"metti l'ice, togli i jeans\",\n", - " 'sex, sex, sex on the beach',\n", - " 'con la dark va così',\n", - " 'sex, sex, sex on the beach',\n", - " 'nuovo ice, nuovi jeans',\n", - " 'sex, sex, sex on the beach',\n", - " 'sex, sex, sex on the beach',\n", - " 'sex, sex, sex on the beach',\n", - " 'nuovo ice, nuovi jeans',\n", - " \"portatemi i vostri soldi che convinco un'amica\",\n", - " 'e ci trascorro un mese disteso alla deriva',\n", - " 'quando tornerò a casa racconterò agli amici',\n", - " 'che il mondo è solo danno, rimpianti e sacrifici',\n", - " 'e sacrifici, e sacrifici, e sacrifici, e sacrifici',\n", - " 'e sacrifici, e sacrifici, e sacrifici, e sacrifici',\n", - " 'vote who you want daddy',\n", - " 'but you can vote who you want daddy',\n", - " 'you can vote who you want daddy',\n", - " 'but you can vote who you want daddy',\n", - " 'but your money belongs to jd',\n", - " 'but your money belongs to jd',\n", - " 'but your money belongs to jd',\n", - " 'but your money belongs to jd',\n", - " 'ah!',\n", - " \"quann' facc' rap 'o frat' vac in overdose\",\n", - " \"cos cos cos cos cos 'o frat cos'?\",\n", - " \"quann' facc' rap 'o frat' a capa na rapos'\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"quann' facc' rap 'o frat' so' pericolos'\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"(cos cos cos cos cos o'frat cos'?)\",\n", - " 'viviamo tra pareti che si chiudono e tu in mezzo (ahh)',\n", - " 'uso il rap apposta per non fare il tipo grezzo',\n", - " 'super funk in una busta sound pittoresco',\n", - " 'un lavoratore col datore disonesto',\n", - " \"ma sta metropolitan a vint' an'n scavat'\",\n", - " \"ma 'a stat' facenn'\",\n", - " \"o 'a stat' cercann'?\",\n", - " \"'o stat' c'ingann'\",\n", - " \"ma quant' pigliamm'?\",\n", - " \"tre nummer' pu' banculott' che ca' nun c'stamm'\",\n", - " \"rint' i post staj facend' 'a fila a quattr' semman'\",\n", - " \"stamm' april' ma me vuless' fa' natal' a cas'\",\n", - " \"rint' 'e trasmission' fra' ce' stann' e criminal'\",\n", - " \"quirinale, viminale e tutt'italia che 'rinal'\",\n", - " \"guardo 'a television', so' tutt' ugual'\",\n", - " \"'sti programm' aro' se chiagne, pur' se mor' a zanzara\",\n", - " \"na' città che sta incazzat', ch'ha 'chiappat' mazzat'\",\n", - " \"'o sang' 'e san gennaro a stu gir' s'è ghiacciat'! (mamm' e che fridd!)\",\n", - " 'ah!',\n", - " \"quann' facc' rap 'o frat' vac in overdose\",\n", - " \"cos cos cos cos cos 'o frat cos'?\",\n", - " \"quann' facc' rap 'o frat' a capa na rapos'\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"quann' facc' rap 'o frat' so' pericolos'\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"(cos cos cos cos cos o'frat cos'?)\",\n", - " \"tu nun hai fatt a'manovr', hai fatt' 'a retromarc'\",\n", - " \"ma n'hai guardat' 'u specchiett', e aret' a chist è schiacc'\",\n", - " \"ta racuord' 'e sta città tra mandulin' è limun'\",\n", - " \"e c'hai lasciat' int' 'a giungla, ma n'hai pavat' l'imu?\",\n", - " \"fridd' comm' l'igloo pur' se 'u sol' è sicur'\",\n", - " \"tu tien' 'a facc' è c**** rap ca' facc' paur'\",\n", - " \"ehi pur' tu nata carta conosciut'\",\n", - " \"'na vacanza addo' 'sto mar' 'u vir' ancor' tutt' scur'\",\n", - " \"ngopp' a sti muntagn', sull' fiamm', sull' tanf'\",\n", - " 'hai magnat\" e t\\'ha liccat\\' e baff\\' \\'o frat\\' fatt\\' \\'u selfie',\n", - " \"mentr' car' 'o cornicione a galleria\",\n", - " \"ver' chiù mangià rint' 'a tv ca dint' tutt' 'o frig' mij\",\n", - " 'internet è nato a napoli e lo sai',\n", - " \"dalle signore sui balconi 'nciucio web wifi\",\n", - " \"come pino e troisi part' ro' nient' 'o frat'\",\n", - " \"e come alessandro siani 'na risat' c'ha semp' salvat'! (te voglio fa' capì)\",\n", - " 'ah!',\n", - " \"quann' facc' rap 'o frat' vac in overdose\",\n", - " \"cos cos cos cos cos 'o frat cos'?\",\n", - " \"quann' facc' rap 'o frat' a capa na rapos'\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"quann' facc' rap 'o frat' so' pericolos'\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"(cos cos cos cos cos o'frat cos'?)\",\n", - " \"ramm' 'o tiemp' che t' faccio capì fra' qual è 'o problem'\",\n", - " \"masterchef, 'o mar' ca è velen'\",\n", - " \"ngopp 'o beat certament' spir' tant' sentiment'\",\n", - " \"tutt' boss, buc' 'n front', tutt' salvator' cont'\",\n", - " \"rat' c' 'na man' pe' n'asci'\",\n", - " \"part' ra luntan' a' casa mi'\",\n", - " \"ca cap' rint' 'o sol c'asciuttamm'\",\n", - " \"fratelli' tu sai mo ch'aspettamm'\",\n", - " \"è nu' miracol' pa' gent'\",\n", - " \"signo' tien' m' present'\",\n", - " \"fall' pe' chi mo' t' sta senter' ma 'o mezz' sa rallent'\",\n", - " \"è nu' miracol pa' gent'\",\n", - " \"signo' tien'm present'\",\n", - " \"fall' pe' chi mo t' sta senter ma tutt' sa rallent'\",\n", - " 'ah!',\n", - " \"quann' facc' rap 'o frat' vac in overdose\",\n", - " \"cos cos cos cos cos 'o frat cos'?\",\n", - " \"quann' facc' rap 'o frat' a capa na rapos'\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"quann' facc' rap 'o frat' so' pericolos'\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"cos cos cos cos cos o'frat cos'?\",\n", - " \"(cos cos cos cos cos o'frat cos'?)\",\n", - " 'non per la politica dovete odiarmi',\n", - " 'non per la voce nasale',\n", - " 'ma per questo pezzo',\n", - " 'adesso avete un motivo, avete un motivo! (ahah)',\n", - " 'in fight club edward norton ha le turbe',\n", - " 'non esiste nessun tyler durden',\n", - " 'in shutter island di caprio è un malato mentale',\n", - " 'capace di architettare trame assurde',\n", - " 'nel sesto senso bruce willis è un morto',\n", - " 'nelle 12 scimmie è il morto',\n", - " '\"ehi ragazzi ma che fine ha fatto bruce willis?',\n", - " 'sapete se un film è in porto?\"',\n", - " 'the others: sono loro gli spettri!',\n", - " 'beh, dopo il sesto senso cosa cazzo ti aspetti?',\n", - " 'hai presente kevin spacey? (sì!)',\n", - " 'bene, è lui kaiser souse nei soliti sospetti! (no)',\n", - " 'serial killer di se7en? kevin spacey!',\n", - " 'cattivo di superman? kevin spacey!',\n", - " 'perfetto criminale? kevin spacey!',\n", - " \"''ho capito, non c'è bisogno che mi stressi!''\",\n", - " 'and the winner is kevin spacey!',\n", - " 'two time academy award kevin spacey is coming back to the big screen this week',\n", - " 'and the winner is kevin spacey!',\n", - " 'kevin spacey, kevin, kevin, kevin, kevin spacey',\n", - " \"l'enigmista è il cadavere della prima scena (no)\",\n", - " 'nel codice da vinci il graal è la maddalena (no)',\n", - " 'blair witch project non è una storia vera (no)',\n", - " 'decidi tu se ne vale la pena',\n", - " 'io & marley? alla fine il cane muore',\n", - " 'nel film hachiko (hachiko) il cane muore',\n", - " 'bruce willis in the jackal muore (e te pareva)',\n", - " 'come il cinema col cinepanettone',\n", - " \"in profondo rosso l'assassino è la madre\",\n", - " \"in psycho norman è l'assassino della madre\",\n", - " 'se ti interessa il genere ti basterà guardare',\n", - " 'porta a porta, primo canale',\n", - " 'in sid & nancy sid uccide nancy',\n", - " \"'sti decessi, sempre lì nei cessi\",\n", - " 'il colonnello di american beauty è gay, sì',\n", - " 'ed uccide kevin spacey!',\n", - " 'and the winner is kevin spacey!',\n", - " 'kevin spacey blitz',\n", - " 'and the winner is kevin spacey!',\n", - " 'senti, se ti infastidisco skippa e vai oltre',\n", - " \"sentiti 'sto disco o skippa e vai oltre\",\n", - " 'non hai visto star wars? dai, forte!',\n", - " 'darth vader è il padre di luke skywalker',\n", - " 'e il mago di prestige ha un gemello',\n", - " 'the game non è un tranello, è un gioco del fratello',\n", - " 'la moglie del soldato ha il pisello',\n", - " 'e bruce willis muore in armageddon',\n", - " 'passione di cristo? pensione di gibson',\n", - " 'è un robot quello messo sul crocifisso',\n", - " 'ti disturba? beh, a me disturba che la trama',\n", - " 'di disturbia sia la stessa di hitchcock',\n", - " 'il curioso caso di benjamin button',\n", - " 'lo vedi al contrario ed è un film come un altro',\n", - " 'ma... ma... ma che ti aspettavi ti dicessi?',\n", - " '\"and the winner is kevin spacey!\"',\n", - " 'and the winner is kevin spacey!',\n", - " \"this is kevin spacey's second academy award\",\n", - " 'he won an oscar in 1995 for supporting role in the usual suspects',\n", - " 'and the winner is kevin spacey!',\n", - " 'kevin spacey',\n", - " 'dopo di che, penso che non ne sentirete mai più parlare',\n", - " 'pick up the phone',\n", - " \"i'm calling the plug\",\n", - " 'you know the plug, provides me the drugs, fuck with a thug',\n", - " \"i can't fuck with no frauds\",\n", - " 'my bitch on diet. she snortin the coke. pick up the phone',\n", - " \"i'm calling the plug\",\n", - " 'you know the plug, provides me the drugs, fuck with a thug',\n", - " \"i can't fuck with no frauds\",\n", - " 'my bitch on diet. she snortin the coke...',\n", - " 'sei di mattina col plug!',\n", - " 'mi chiede \"perché mi tradisci?\"',\n", - " 'lei non sa chi sia il plug',\n", - " 'sei solo una troia che cazzo capisci',\n", - " 'mi danno del misogino, mi sento bocconi',\n", - " 'vieni visto come un delinquente quando ti opponi',\n", - " 'attualmente sposato col money, money money money',\n", - " 'ragazzi di strada per strada appendiamo le scarpe al posto dei panni',\n", - " 'il mio plug si chiama julio',\n", - " 'io fotto con i plug messicani',\n", - " 'oscar continua a chiamarmi',\n", - " 'lui è il plug per le armi',\n", - " 'un saluto ai miei plug africani',\n", - " 'mi fido di loro per rivotrill',\n", - " 'scarcerate mio fratello, e scarcerate pure timothy',\n", - " 'big up al mio plug per la ganja',\n", - " 'direttamente dalla francia',\n", - " 'scende sempre con la prome la mischiamo con la fanta',\n", - " 'la mia bitch sniffa bamba, la mia bitch sniffa bamba',\n", - " 'bianca come la barba di gandalf',\n", - " 'un saluto al mio plug che la manda',\n", - " 'pick up the phone',\n", - " \"i'm calling the plug\",\n", - " 'you know the plug, provides me the drugs, fuck with a thug',\n", - " \"i can't fuck with no frauds\",\n", - " 'my bitch on diet uh she snortin the coke, pick up the phone',\n", - " \"i'm calling the plug\",\n", - " 'you know the plug, provides me the drugs, fuck with a thug',\n", - " \"i can't fuck with no frauds\",\n", - " 'my bitch on diet. she snortin the coke...',\n", - " 'she snortin the coke uh. she snortin the coke',\n", - " 'pick up the phone bitch',\n", - " 'calling the plug',\n", - " \"i'm calling the plug nigga\",\n", - " \"i'm calling the plug\",\n", - " \"it's lit, mh!\",\n", - " 'check-check it, real recognize real',\n", - " 'ztk, truceklan',\n", - " 'chicoria, g-mellow, noyz',\n", - " 'se fumamo tutta la skunk',\n", - " 'deadly combination',\n", - " 'benassa (pow, pow), cole, pow-pow check it',\n", - " 'fanculo tutto, ah, ah',\n", - " 'ti devasta itp, check it',\n", - " 'two thousand and four, traffik records',\n", - " 'il pusher più trucido',\n", - " 'oh, check it esclusivo',\n", - " 'uno sparo nel culo di chi parla di quello che scrivo',\n", - " 'gundeleros, we do the patto di sangue',\n", - " 'with my man g-mellow we still smoking piante',\n", - " 'get borbuka sell out from commercio',\n", - " 'show you talento play like suono marcio',\n", - " 'benetti, noyz, carter, gel, kimo, chico',\n", - " 'g-mellow, benassa the glassa amico',\n", - " \"truceklan con l'esercito affiliato\",\n", - " 'colpo di stato, fiamme nel commissariato',\n", - " 'in the panchine, baby, say what?',\n", - " 'sex every day, why not?',\n", - " 'in the audi, too fast for polizia',\n", - " 'show me paletta, i disappear, santa maria',\n", - " 'chilling with tarango, sto fatto al mare',\n", - " 'peace to santino, (man) che te lo dico a fare?',\n", - " 'er pusher più trucido: mariuccio de \"amore tossico\"',\n", - " \"l'anni '70 co' 'na spada tra 'e braccia conficcata (ah)\",\n", - " \"e la pezza de brown che nun t'accanna\",\n", - " \"'na rapina pe' ventimila, c'era ancora 'a lira\",\n", - " 'pistole puntate non le far sparare',\n", - " 'cesare e compare',\n", - " \"usciti dal ser.t vonno i soldi pe' 'l dessert\",\n", - " '38 e 7 sessantacinque',\n", - " \"su 'a tempia te la spinge (dai, dai)\",\n", - " 'er fero è freddo',\n", - " \"ma brucia quanno te manna all'inferno\",\n", - " \"mo so' io che all'angolo discuto\",\n", - " \"pe' tera sputo, non ti illudo\",\n", - " 'il lavoro più lurido',\n", - " 'trarmi in arresto, togliermi di mezzo',\n", - " 'hai fatto peggio',\n", - " \"adesso so' tre come me sur cemento\",\n", - " \"un mare do' marcia er piede\",\n", - " 'e nulla, nulla devi chiedere',\n", - " 'te lo ricordo, non me, stronzo',\n", - " \"i'll be sordo when i stay sbronzo\",\n", - " 'from parioli borough to torre maura squad',\n", - " 'we do mafia with borbuka stock',\n", - " 'benassa the glassa, truceklan rappresenta',\n", - " 'we be the infamous like nane rape chi si lamenta',\n", - " 'come una corona di spine che ci tenta',\n", - " 'in the panchine, the boys of roma violenta',\n", - " 'senza sentenza, we are going to the hell',\n", - " 'figli della violenza like luis buñuel',\n", - " 'we sell morfina a bela lugosi with cocaina',\n", - " 'we mix the dosi like chicoria and g-mellow',\n", - " 'we are mafiosi, in this jungle you are lost',\n", - " 'cole, fulci, sodoma ghost',\n", - " 'i wanna be a rockstar',\n", - " 'i wanna be a crackstar',\n", - " 'i wanna be, itp ti devasta',\n", - " ...]},\n", - " 'data': ['basta, nessuna ipocrisia',\n", - " 'i lupi non ballano più, non ballano nella prateria',\n", - " 'basta, nessuna ipocrisia',\n", - " 'oggi nella prateria ammazza la gente la polizia',\n", - " 'si muore per la strada col fucile nella mano',\n", - " 'ma questo non si dice questo è poco hollywoodiano',\n", - " 'in galera per la vita per difendere un sentiero',\n", - " 'non ci fermerete mai, non si ferma mai un guerriero',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'gente a’ ge’ venite a cca’',\n", - " 'nun vennite ’a storia',\n", - " 'sul sentiero di guerra',\n", - " 'oggi come allora',\n", - " 'gente a’ ge’ voglio allucca’',\n", - " 'finacché so’ vivo ancora',\n", - " 'è preziosa ’a libertà',\n", - " 'ma vale assaje e cchiù ’a memoria',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'gli spiriti senza pace di coloro che morirono invano',\n", - " 'che accantonarono le leggi dell’uomo abbastanza a lungo',\n", - " 'da permettere alla loro coscienza di essere la loro guida',\n", - " 'oggi chiedono la comprensione di tutto il mondo',\n", - " 'c’è una nazione che sta morendo',\n", - " 'la cui sacralità è stata tradita, sfruttata, svenduta',\n", - " 'da chi non la rispettava, né la capiva',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'no way, the black hills are not for sale',\n", - " 'good pretesto, droga pesante for antipasto',\n", - " 'in front of carrarmato remix this manifesto',\n", - " 'fat dj gorilla, light up the scintilla',\n", - " 'i shut-up your sister mentre si dimena, strilla',\n", - " \"goa stolen gemello, shit-man, i don't forget\",\n", - " 'loris do guardiano, i trip with ketavet',\n", - " 'respect me and mi familia primo',\n", - " 'respect in the panchine, respect dj kimo',\n", - " 'i stay away from campo di fave gay',\n", - " \"i need frangetta i'm the pussy-sensei\",\n", - " 'pussy fastidiosa je frantumo la mucosa',\n", - " 'i make fall love four bitches under bridge acquacetosa',\n", - " 'we are teppisti, we trust in the obelischi',\n", - " 'we sniff droga on the top of giradischi',\n", - " 'mischio roba buona con roba da equino',\n", - " 'k-hole in centocelle near forte prenestino',\n", - " 'your destino, i control the burattino',\n", - " 'i stolen the piante down in the sgabuzzino',\n", - " 'with tarango i eat pizza in the obitorio',\n", - " 'we sell pillolette at the consultorio',\n", - " 'a mortorio, we fishing with the esplosivo',\n", - " 'we put some psicofarmaco in your aperitivo',\n", - " 'i do calzino appizz, carabinieri blitz',\n", - " 'ciampino get away, with tozzi in via ritz',\n", - " 'mi zona, we gossip from the quartiere',\n", - " 'mama is in the street, dad is a contrabbandiere',\n", - " 'better than carabiniere, fuck the piedipiatti',\n", - " \"never do the spia, 'cause i kill you mentecatti\",\n", - " 'mi zona, we gossip from the quartiere',\n", - " 'mama is in the street, dad is a contrabbandiere',\n", - " 'better than carabiniere, fuck the piedipiatti',\n", - " \"never do the spia, 'cause i kill you mentecatti\",\n", - " 'piove a dirotto (merda), mi riparo sotto la tettoia',\n", - " 'gente come me, sempre in cerca de rogna',\n", - " 'sguazza nella fogna',\n", - " \"co' un piede appoggiato al muro e l'altro sull'asfalto\",\n", - " 'scompaio quando è troppo caldo',\n", - " \"come quanno ero rimasto l'unico pusher romano al villaggio\",\n", - " \"autunno '97\",\n", - " 'un circolo di serie che non rivedrò più',\n", - " 'johnny manco fumava, gli faccio il tè con la marijuana',\n", - " 'saluto mamma, faccio bagagli',\n", - " 'ad amsterdam sto per arrivarci',\n", - " \"sai che al bakker's teg, homegrown fantasy man\",\n", - " \"scenno da casa mia, c'ho 'na puttana in vetrina\",\n", - " \"diciassett'anni, venti metri quadrati, in dieci ammucchiati\",\n", - " \"diciassett'anni, in dieci ammucchiati\",\n", - " \"uno accanto all'altro, addormentati\",\n", - " 'mi zona, we gossip from the quartiere',\n", - " 'mama is in the street, dad is a contrabbandiere',\n", - " 'better than carabiniere, fuck the piedipiatti',\n", - " \"never do the spia, 'cause i kill you mentecatti\",\n", - " 'mi zona, we gossip from the quartiere',\n", - " 'mama is in the street, dad is a contrabbandiere',\n", - " 'better than carabiniere, fuck the piedipiatti',\n", - " \"never do the spia, 'cause i kill you mentecatti\",\n", - " 'can you feel the bongo? questa merda è pongo',\n", - " 'ovunque vai questa nostra musica è proprio lì intorno',\n", - " 'mental delay, special trip to luna giusta per licantropia',\n", - " \"è giunta l'ora di portarti via\",\n", - " 'gemello say goodbye to yesterday finalmente',\n", - " 'show the jolly cerca wally tra la gente',\n", - " 'from ashes rise doppio petto nella limo like lavino ci stai stretto questa volta ti fa effetto',\n", - " \"we come from the scuola nun ve n'è\",\n", - " \"bloody rotten fans tell me who's the next\",\n", - " \"who's the best on this track\",\n", - " 'mira mira il panorama double dragon della strada',\n", - " 'dimmi tu come si impara a farne a meno bada',\n", - " 'vai con dios maricón took the sky',\n", - " 'between the nuvole di fumo, la città e il suo profumo',\n", - " 'perché sono awake from the sleep live and tour',\n", - " \"boys don't cry that's the only cure\",\n", - " \"yes my click sad but true sniffin' glue abbastanza\",\n", - " 'da trasformare questo cielo nero in una stanza',\n", - " 'gem gem blues band back con cole bang bang',\n", - " 'exclusive slang, slang, slang, canzone',\n", - " 'ho nulla in testa, niente addosso e castlevania frusta',\n", - " 'serve un sun niente sole dopo la tempesta',\n", - " 'my man batistuta do mitraglia',\n", - " 'metti una mela sulla testa di gem e poi sbaglia',\n", - " 'anyway but today is the billie holiday',\n", - " 'still the greatest motherfucker of this rap game',\n", - " \"it's fucked up the giornali like sole 24 ore\",\n", - " 'since you start to listen truceklan sei uno splendore',\n", - " 'bad propose, speaker boss, per portarti su più in alto',\n", - " 'in the cloud e non scendere più manco',\n", - " 'this pezzo was ricordi vari mi costano danari',\n", - " 'itp da una vita bloody hell safari',\n", - " 'vuoi clarence seedorf is to dress ciabatte',\n", - " \"why she's french on the bench si combatte\",\n", - " 'vedi i throbbing gristle e io lo amo cristo',\n", - " 'the new kid on the block is born imprevisto',\n", - " 'we no dancing lento in a sketch di flamenco mama',\n", - " 'e vola via tutto i hate this panorama',\n", - " \"it's like no tomorrow, smoking gettin' borrow\",\n", - " 'è come quando esco e poi da te non torno',\n", - " \"let's comin' out in giro per compound\",\n", - " 'why you wanna live without the truce sound',\n", - " 'now pensami sgargiante adesso in questo istante',\n", - " 'guido verso il mare e niente è più importante',\n", - " 'the sorry man this say in the lane come back again',\n", - " 'i stay in the maze with borbuka and haze',\n", - " 'the tetra eyes smoke full mix grosse bolle',\n", - " 'fegatello with molte zolle',\n", - " 'dream and smoke put on the poltrona',\n", - " 'nulla mi lega neanche una persona',\n", - " 'itp dream team è questa è la conferma',\n", - " 'the crew more requested on this terraferma',\n", - " 'can you feel the botta avoid capotta',\n", - " 'mixin all the shit sotto il sole a capocotta',\n", - " 'i erase the t from the cartello ostia',\n", - " 'looking for the spot you must say \"ostia\"',\n", - " 'sai mega crew più itp bless ya',\n", - " 'scrive ti devasta',\n", - " 'stolen p qui con gem plus benassa',\n", - " 'chico free que te pasa?',\n", - " \"boys don't cry come stai? parli con la radio\",\n", - " 'se mi dai ciò che hai mentre me ne vado',\n", - " \"texturizzo gemellare tutto l'armadio\",\n", - " 'metto nello scrigno ogni disco registrato',\n", - " 'cassaforte passa con le corde e via',\n", - " 'pianoforte spacciamorte donna nostalgia',\n", - " \"sgattaiolando lascio l'oro in the via\",\n", - " 'infilando fili blunt per la fumeria',\n", - " '\"mi sento qua, mi sento il quadricipite, praticamente che... siccome mi sta uscendo il muscolo nuovo, praticamente c\\'ho tutti i dolori proprio sento i muscoli nuovi che non c\\'avevo, capito, che stanno a usci\\' proprio\"',\n", - " '\"sì, sì...\"',\n", - " 'oh well this is jabbering',\n", - " 'oh well this is jabbering',\n", - " 'too much jabbering was going on',\n", - " 'too much jabbering was going on',\n", - " 'jabbering was going on, was going on',\n", - " 'president and prime ministers',\n", - " 'all in a breath of life',\n", - " 'promises you made just to jump from the fools',\n", - " 'you built more than braking down the schools...',\n", - " 'too much jabbering was going on',\n", - " 'too much jabbering was going on',\n", - " 'jabbering was going on, was going on.:',\n", - " 'loro fanno troppe chiacchiere lo sai:',\n", - " 'politici corrotti che mettono un pianeta nei guai',\n", - " 'fan pubblicità anche su la rai',\n", - " 'ma apparte la campagna elettorale non si vedono mai',\n", - " 'babaman capisce e si fa forza di un pensiero',\n", - " 'so solamente che per me nessuno è straniero',\n", - " 'too much jubbering',\n", - " 'questo è quello che fan e tutta la gente si è stancata per davvero',\n", - " 'qui conta solo il dinero',\n", - " 'io sfamerei i bambini del mondo con i soldi del clero',\n", - " 'non credo a quello che vedo:',\n", - " 'un papa ricco parla della povertà',\n", - " 'mi seguon da',\n", - " 'little things that you say to hunt your campaign',\n", - " 'that you seem you forget and the people are treat to geal...',\n", - " \"why am i only's spreading for battles...\",\n", - " 'you promise to built more denident to fix some on the roads...',\n", - " 'too much jabbering was going on',\n", - " 'too much jabbering was going on',\n", - " 'jabbering was going on, was going on...:',\n", - " 'oh mama mama la società degrada',\n", - " 'e la gente non fa niente per cambiarla',\n", - " 'babaman se...',\n", - " 'continuano a menarla',\n", - " 'vedo la faccia di un politico che parla',\n", - " 'e mi chiedo perchè',\n", - " 'la società non cambia',\n", - " 'io sono un granello nella sabbia',\n", - " 'io vedo troppa rabbia',\n", - " 'vogliono la mia mente in gabbia',\n", - " 'io li combatto perchè medito in jah rastafarai',\n", - " 'little things that you say to hunt your campaign',\n", - " 'that you seem you forget and the people are treat to gee...',\n", - " \"why am i only's spreading for battles...\",\n", - " 'you promise to built more denidentt to fix some of the roads...',\n", - " 'too much jabbering was going on',\n", - " 'too much jabbering was going on',\n", - " 'jabbering was going on, was going on...',\n", - " 'too many questions and no answers while cancer advances',\n", - " 'but now the two the devil dances in the mantis kind of stances',\n", - " \"i look straight deep in the panther's eyes, i fantasize and realize\",\n", - " 'the same glances from the other side, no chances to get out alive',\n", - " 'i dive back into hell, back in the same shell, getting the same smell',\n", - " 'standing in front of the same door, same bell',\n", - " 'traces of blood up on the ceiling, no healing',\n", - " 'my face is pealing, my flesh is torn apart',\n", - " 'his fingers across my heart',\n", - " \"i'm ready to witness my own execution, i start freaking out\",\n", - " \"i hear he's coming up, this time there won't be waking up, no doubt\",\n", - " 'for the first time i bend down on my knees and pray for family',\n", - " 'pray for my friends, i even pray for my enemies',\n", - " \"i'm terrorized, i'm petrified, i look through the demon's eyes\",\n", - " \"i'm about to die, so a fear for my life, what the fuck, i begin to cry\",\n", - " \"i'm caught by a strange kind of thought and brought to a sort of attraction to death...\",\n", - " 'for god sake! i take my last breath',\n", - " 'reflections of the demon in me',\n", - " \"i see my face traced all over the place, no gravity, my body's floating in space\",\n", - " 'i wonder if this shit is real, it might just be a dream',\n", - " \"i take a piece of glass and cut my throat, that's when i start to scream\",\n", - " 'i bash my face against my knees, at this point nothing really fears me',\n", - " 'i scream as loud as i can, but nobody really hears me',\n", - " 'blood flows, pain grows, the scene is now completely red',\n", - " \"i realize i cannot die, 'cause i'm already dead\",\n", - " \"cause i'm already dead...\",\n", - " \"cause i'm already dead...\",\n", - " 'oggi no, la malasorte non perseguita',\n", - " 'oggi è così ma per domani zero replica',\n", - " \"i'm sick hell, smashed, i can't get out alive\",\n", - " \"i can't breathe, i sang into the other side\",\n", - " 'oggi no, la malasorte non perseguita',\n", - " 'oggi è così ma per domani zero replica',\n", - " \"i fell dead, sick hell, i can't move\",\n", - " \"i crash into a pond of blood, i'm paralyzed\",\n", - " 'contaci tra più rischi e sbagli, scontri più deragli',\n", - " 'se vuoi l’hardcore in versione senza tagli',\n", - " 'qua sta, qui ci si slega a vicenda in pieno k.o',\n", - " 'fanculo i contro e i pro e se sei pronto o no',\n", - " 'da mo veleno invade l’aria, spore di muscaria',\n", - " 'l’impatto tira giù dato che sdraia',\n", - " 'collisioni tra psicosomati, multi-previsioni trip',\n", - " 'manda in ceneri i neuroni, sbra',\n", - " 'mentre tot pressione al top grado massimo di sclero',\n", - " '(stress davvero!) non stop',\n", - " 'per restare intero la parte tipo crash test',\n", - " 'ma se sbocci a caso la piazza è tipo far west',\n", - " '(now niggas contest!) tra gentaglia da saloon guerriglia',\n", - " 'tipo platoon, samurai senza uno shogun',\n", - " '() panorama a tre-e-sessanta, diavolo e acqua santa',\n", - " 'mentre sta terra va a puttane, chico',\n", - " 'per sempre todo o nada, chico',\n", - " 'vada come vada, chico',\n", - " 'quel che non sai tu lo sa la strada, chico',\n", - " 'se lo dico è perchè è un tot sono le volte che ho lasciato il foglio in bianco',\n", - " 'e per orgoglio non ho pianto',\n", - " 'lacrime e ghiaccio, qua è così che va',\n", - " \"c'è qualcosa che spinge la sfida fino al di là\",\n", - " 'certi match tra me e me sono harakiri',\n", - " 'finché respiri chiedono sangue più dei vampiri',\n", - " 'sangue nel sangue...',\n", - " 'sangue nel sangue...',\n", - " 'oggi no, la malasorte non perseguita',\n", - " 'oggi è così ma per domani zero replica',\n", - " \"i'm sick hell, smashed, i can't get out alive\",\n", - " \"i can't breathe, i sang into the other side\",\n", - " 'oggi no, la malasorte non perseguita',\n", - " 'oggi è così ma per domani zero replica',\n", - " \"i fell dead, sick hell, i can't move\",\n", - " \"i crash into a pond of blood, i'm paralyzed\",\n", - " \"sembra che tutto sia l'opposto di quello che credi, procedi per gradi\",\n", - " 'camminando a piedi nudi su chiodi se gridi',\n", - " 'qualcuno ascolta, chiedi aiuto',\n", - " \"ma anche stavolta nessuno è venuto l'ennesimo rifiuto\",\n", - " 'il vuoto è già occupato da un altro più scaltro, più furbo',\n", - " 'scusa il disturbo, sarò cieco, muto, sordo ma più bastardo',\n", - " 'perché è così che va nel mondo, amigo',\n", - " 'sarò in castigo in compagnia del mio alter-ego',\n", - " 'sayonara mama! la via del vuoto mi reclama (bring the drama!)',\n", - " 'occhi immobili sul panorama',\n", - " \"già scomparso il tempo trascorso nell'attesa\",\n", - " \"l'impresa si è già conclusa, la porta resta chiusa\",\n", - " 'qualcosa che non torna, realtà che appare drastica',\n", - " 'gas di piombo, cibo finto e sesso in plastica',\n", - " \"c'è da pensare a un disegno preciso, nascosto\",\n", - " 'mi sono spesso chiesto se era già tutto stato previsto',\n", - " 'predisposto al tradimento come giuda',\n", - " 'ora in strada inquisizione in stile torquemada',\n", - " \"lascia che accada, c'è ancora un giorno da aspettare\",\n", - " 'perché oggi è andata solo perché doveva andare',\n", - " 'resta solo un giorno per trovare il modo...',\n", - " 'resta solo un giorno per trovare il modo...',\n", - " 'oggi no, la malasorte non perseguita',\n", - " 'oggi è così ma per domani zero replica',\n", - " \"i'm sick hell, smashed, i can't get out alive\",\n", - " \"i can't breathe, i sang into the other side\",\n", - " 'oggi no, la malasorte non perseguita',\n", - " 'oggi è così ma per domani zero replica',\n", - " \"i fell dead, sick hell, i can't move\",\n", - " \"i crash into a pond of blood, i'm paralyzed\",\n", - " \"tutta 'sta gente deve stare a casa, hai capito? se la cosa non la senti, non la vivi, non ci credi, che cazzo lo vai a fare? perché?\",\n", - " 'perchè perdere tempo',\n", - " \"va ragà, io di tutto 'sto discorso vi posso dire solo una cosa\",\n", - " 'eh cosa?',\n", - " \"che non c'è niente di peggio di gente che si vende la propria cultura\",\n", - " 'words manifest, layin in the rest',\n", - " 'one to the chest, two to the flash',\n", - " 'three in the back on the attack',\n", - " 'funerals and gotta to be like that',\n", - " '(chief e soci)',\n", - " '\"why\\'d you wanna front\"',\n", - " \"when you're not for real\",\n", - " '(se non sei vero)',\n", - " '\"why\\'d you wanna front\"',\n", - " \"when you're not in the deal\",\n", - " '(se non sai la cosa)',\n", - " '\"why\\'d you wanna front\"',\n", - " \"just playin' a part\",\n", - " '(giocando un ruolo)',\n", - " '\"why\\'d you wanna front\"',\n", - " \"not comin' from the heart\",\n", - " '(se non ti viene dal cuore)',\n", - " 'non ci si crede, più fastidioso di quando mi pestano un piede',\n", - " 'o nel deserto avvolto dalla sete',\n", - " \"l'adrenalina sale, tocca il massimo\",\n", - " 'mi trasforma in un soggetto pessimo, cavalco il lessico',\n", - " 'verso chi tenta di sfumare il mio passato prossimo',\n", - " 'un classico, ma in questa direzione trova solo',\n", - " 'tempo critico, sopra il campo ritmico',\n", - " 'gigolò di turno non ne vuole più di fronte',\n", - " 'neanche fossi caronte, preparo il mio trapasso su diverse sponde',\n", - " 'senza nessuno sconto il viaggio del non-ritorno',\n", - " 'faccio volentieri il tre per due per averne meno attorno',\n", - " 'perché nessuno può bruciare la mia vita',\n", - " 'il suo nome scompare come sul bagnasciuga',\n", - " '\"mc\\'s act like they don\\'t know\"',\n", - " '\"just don\\'t understand\"',\n", - " 'questo è chief e soci, non pavarotti and friends',\n", - " 'homicidal on arrival, massacration, no survivor',\n", - " 'termination, devastation, devastation, termination',\n", - " 'homicidal on arrival, massacration, no survivor',\n", - " 'termination, devastation, devastation, termination',\n", - " '\"why\\'d you wanna front\"',\n", - " \"when you're not for real\",\n", - " 'se non sei vero',\n", - " '\"why\\'d you wanna front\"',\n", - " \"when you're not in the deal\",\n", - " 'se non sai la cosa',\n", - " '\"why\\'d you wanna front\"',\n", - " \"just playin' a part\",\n", - " 'giocando un ruolo',\n", - " '\"why\\'d you wanna front\"',\n", - " \"not comin' from the heart\",\n", - " 'se non ti viene dal cuore',\n", - " 'basta con la plastica, giù la maschera',\n", - " 'il tuo gioco dura poco come la tua vita sulla sedia elettrica',\n", - " \"e non c'è tecnica che regge come mille schegge\",\n", - " 'le mie parole cariche come i quesiti della sfinge',\n", - " 'da ogni direzione potenza di fuoco come un plotone',\n", - " \"d'esecuzione, giro un cannone con una cartina gigante\",\n", - " \"dentro c'è qualcuno che piange mentre brucia lentamente\",\n", - " 'alte le mura che mi separano dal costo',\n", - " 'profonde le radici che mi legano al contesto',\n", - " 'che di stile mi contagia tipo epidemia',\n", - " 'divento ciò che il mondo non vuole che io sia',\n", - " 'il mio credo non ha prezzo, il mio silenzio è caro',\n", - " 'in tasca cash ma in bocca il sapore amaro',\n", - " \"why'd you wanna play the role?\",\n", - " 'and i got love agose the cohose the pose and knows',\n", - " 'they even got no souls',\n", - " \"i'm goin' in the death and that and yes i rhyme the best\",\n", - " 'time for the life i live',\n", - " 'so been the gots to play the gots to pay',\n", - " \"and pain it's all i gots to give\",\n", - " 'homicidal on arrival, massacration, no survivor',\n", - " 'termination, devastation, devastation, termination',\n", - " 'homicidal on arrival, massacration, no survivor',\n", - " 'termination, devastation, devastation, termination',\n", - " '\"why you wanna front?\"',\n", - " '\"know \\'m sayin\\'?\"',\n", - " 'homicidal get on arrival, massacration, no survivor',\n", - " 'termination, devastation, devastation, termination',\n", - " 'homicidal, homicidal, homicidal, homicidal',\n", - " 'homicidal, homicidal, homicidal',\n", - " 'words manifest, layin in the rest',\n", - " 'one to the chest, two to the flash',\n", - " 'words manifest, layin in the rest',\n", - " 'one to the chest, two to the flash',\n", - " 'words manifest, layin in the rest',\n", - " 'one to the chest, two to the flash',\n", - " 'massacration, massacration, massacration',\n", - " 'e questo vi volevo dire',\n", - " 'yo yo, welcome to the gates of hell',\n", - " 'noyz narcos, duke montana',\n", - " 'truceklan in the motherfucking house',\n", - " \"connected with the street mentality, you know what i'm saying?\",\n", - " 'this is real shit hardcore',\n", - " 'come on, ah ah ah',\n", - " \"it's the gates of hell motherfucker\",\n", - " 'welcome to the gates of hell',\n", - " \"it's the gates of hell motherfucker\",\n", - " 'welcome to the gates of hell',\n", - " 'where the demons play, where the motherfucking devil plays',\n", - " 'yeah, enjoy the silence',\n", - " 'seh! è quello che vorrei fare adesso',\n", - " \"ma tu, me spari le cazzate nell'orecchio\",\n", - " \"me mandi in paranoia e rovini 'sto viaggio\",\n", - " 'in questo mondo sempre caldo',\n", - " \"pure d'inverno chiuso dentro al ministero dell'inferno\",\n", - " \"te dovevano spara', fuck rec\",\n", - " \"dovresti fa 'n duet co' platinette\",\n", - " 'mentre io sputo fatti, squaglio microfoni',\n", - " 'e sulle basi lascio ceneri',\n", - " \"siete afoni co' la paura de' parla'\",\n", - " \"dei cazzi vostri, dei cazzi miei non te impiccia'\",\n", - " \"pe' svolta' tocca vende' dischi\",\n", - " \"ho pagato la siae con i soldi de l'impicci\",\n", - " 'rischi, se ti metti contro narcos and duke montana',\n", - " \"du' figli di puttana\",\n", - " 'we ought brutalize',\n", - " \"y'all better recognize\",\n", - " 'real role boy still alive',\n", - " 'noyz narcos, duke montana',\n", - " 'them are tell no lies',\n", - " 'and the gates of hell',\n", - " 'of hell spirit never dies',\n", - " 'we ought brutalize',\n", - " \"y'all better recognize\",\n", - " 'real role boy still alive',\n", - " 'noyz narcos, duke montana',\n", - " 'them are tell no lies',\n", - " 'and the gates of hell',\n", - " 'of hell spirit never dies',\n", - " \"brutto figlio di puttana questo è l'inferno\",\n", - " \"narcos rap, duke montana, sbraga 'sto perno\",\n", - " 'nella cabrio d\\'inverno, \"trucelife\" sullo sterno',\n", - " 'truceboys live in eterno',\n", - " 'non mi fermo più e non mi fermi tu',\n", - " 'il più affilato, truceklan il crew',\n", - " 'più affiliato sotto al suolo al quadraro',\n", - " 'entra sano dentro al ministero e ne esci deviato',\n", - " 'faccio gang bang nel letto, lo slang del campetto',\n", - " 'porto il rap criminale al clubbetto',\n", - " 'truceklan il progetto, cospirazione occulta',\n", - " 'ultra formazione in combutta',\n", - " 'butta su le lame, notti corte e orge',\n", - " \"truceklan crew del male, morte all'infame\",\n", - " 'sotto a chi tocca',\n", - " \"cuciti la bocca quando fotti co' 'sta roba brutale\",\n", - " 'duke montana, noyz narcos, t.klan connect',\n", - " 'we ought brutalize',\n", - " \"y'all better recognize\",\n", - " 'real role boy still alive',\n", - " 'noyz narcos, duke montana',\n", - " 'them are tell no lies',\n", - " 'and the gates of hell',\n", - " 'of hell spirit never dies',\n", - " 'we ought brutalize',\n", - " \"y'all better recognize\",\n", - " 'real role boy still alive',\n", - " 'noyz narcos, duke montana',\n", - " 'them are tell no lies',\n", - " 'and the gates of hell',\n", - " 'of hell spirit never dies',\n", - " 'prisoner 709 did a bad thing',\n", - " 'prisoner 709 did a bad thing',\n", - " 'prisoner 709 did a bad thing',\n", - " 'he did a bad thing, he did a bad thing',\n", - " 'il rap è psicoterapia, quindi materia mia',\n", - " 'block notes, penna a sfera, via!',\n", - " 'parto confuso come se portassi a cena mia wallace',\n", - " 'divento acuto, beh, maria callas',\n", - " 'fantasia a galla sopra fogli, sotto un lumicino',\n", - " 'ricordi con più decolli dei trolley a fiumicino',\n", - " 'passo le ore al micro, mi è più vicino',\n", - " 'del mio migliore amico',\n", - " 'porto una chaise longue nella studio session',\n", - " 'rap autospurgo del mio lato oscuro, manson',\n", - " 'scrivo finché faccio fumo denso',\n", - " 'finché perdo il braccio, futuro nelson',\n", - " 'ti liberi se parli il rap',\n", - " 'e non puoi dire il contrario, tanto è \"parli il rap\"',\n", - " 'ogni sputo mentre canto è una tavola rorschach',\n", - " 'ho un nemico immaginario, tu chiamami john nash',\n", - " \"i'm jung\",\n", - " 'forever jung, forever jung, forever jung',\n", - " 'forever jung, forever jung, forever jung',\n", - " 'i veri padri del rap sono freud e jung',\n", - " 'prima di dj kool herc e del folle boom',\n", - " 'prima che la vecchia scuola ci abbia messo rime su',\n", - " 'potere alla parola prima di francesco di gesù',\n", - " 'guarda chi lo pratica',\n", - " 'ha seri problemi, non basta la chiropratica',\n", - " 'nah, gente prolissa col primo che a tiro capita',\n", - " \"già, l'analista ha la biro carica\",\n", - " 'tra erotomani come solo tinder sa, finte star',\n", - " \"quarantenni che seguono l'iter da peter pan\",\n", - " 'narcisi con ai piedi mille fan, timberland',\n", - " 'marciti nella bipolarità, yin e yang',\n", - " 'il rap ha reso potente la gioventù',\n", - " 'a carte scoperte la poker room',\n", - " 'diventi paziente e dottore tu',\n", - " 'ringrazia la mente di freud e jung',\n", - " 'sì, jung',\n", - " 'forever jung, forever jung, forever jung (still jung)',\n", - " 'forever jung, forever jung, forever jung (still jung)',\n", - " 'forever jung, forever jung, forever jung (still jung)',\n", - " 'forever jung, forever jung, forever jung (still jung)',\n", - " 'me and my adidas we be the original',\n", - " 'trying to defeat us is gonna take a miracle',\n", - " 'for 35 years they been trying to get rid of me',\n", - " 'now i appear here rhyming in italy',\n", - " 'king dmc is always gonna sing',\n", - " 'all the little kids are kings and queens',\n", - " 'positivity is all that he brings',\n", - " 'with all this negative bullshit it’s time for a change',\n", - " 'let it be known on every continent',\n", - " 'i’m coming to the show and stomping shit',\n", - " 'byford and bannah told me not to quit',\n", - " 'i put my mind to it and accomplish it',\n", - " 'i rock it like sha from the funky 4',\n", - " 'i’m grand like the wizard called theodore',\n", - " 'a lot like god so praise the lord',\n", - " 'forever young, forever more',\n", - " 'forever young!',\n", - " 'forever jung, forever jung, forever jung',\n", - " 'forever jung, forever jung, forever jung',\n", - " 'forever jung, forever jung, forever jung',\n", - " 'forever jung, forever jung, forever jung']},\n", - " 'rock': {'meta': {'train_data': ['cappuccino',\n", - " 'macchiato',\n", - " 'affogato',\n", - " 'cortado',\n", - " 'cappuccino',\n", - " 'macchiato',\n", - " 'affogato',\n", - " 'cortado',\n", - " 'kafe mania!',\n", - " \"i'm kafe mania\",\n", - " 'looking for perfect roasting, you know',\n", - " \"i'm kafe mania\",\n", - " 'looking for bono coffee, you know',\n", - " 'cappuccino',\n", - " 'macchiato',\n", - " 'affogato',\n", - " 'cortado',\n", - " 'cappuccino',\n", - " 'macchiato',\n", - " 'affogato',\n", - " 'cortado',\n", - " 'i want to fly',\n", - " 'i need to fly',\n", - " 'i want to fly',\n", - " \"but i don't have the wings\",\n", - " 'i want to fly',\n", - " 'i need to fly',\n", - " 'i want to fly',\n", - " \"but i don't have the wings\",\n", - " 'the wings, the wings',\n", - " 'the wings, the wings',\n", - " 'the wings, the wings',\n", - " 'the wings',\n", - " 'the wings, the wings',\n", - " 'the wings, the wings',\n", - " \"i don't have the wings\",\n", - " 'i want to fly',\n", - " 'i need to fly',\n", - " 'i want to fly',\n", - " \"but i don't have the wings\",\n", - " 'chucho is my friend',\n", - " 'he have the wings',\n", - " 'chucho is my friend',\n", - " 'he have the wings',\n", - " 'the wings, the wings',\n", - " 'the wings, the wings',\n", - " 'the wings, the wings',\n", - " 'the wings',\n", - " 'the wings, the wings',\n", - " 'the wings, the wings',\n", - " \"i don't have the wings\",\n", - " 'io ho bisogno dite come la barca',\n", - " 'bisogna dеl mare per poter andarе',\n", - " 'la primavera bisogna del sole',\n", - " 'per poter fiorire',\n", - " 'la farfalladun fiore',\n", - " \"un bimbo d'una mano\",\n", - " 'che lo acompagni',\n", - " \"un cane d'un pedrone\",\n", - " 'e del vento la quilone',\n", - " 'per poter volare',\n", - " 'the wings, the wings',\n", - " 'the wings, the wings',\n", - " 'the wings, the wings',\n", - " 'the wings',\n", - " 'the wings, the wings',\n", - " 'the wings, the wings',\n", - " \"i don't have the wings\",\n", - " 'my name is greta thunberg',\n", - " \"i'm 15 years old and i'm from sweden\",\n", - " 'you are never too small to make a difference',\n", - " 'to make a difference, to make a difference',\n", - " 'piccola guerriera, scesa dalla luna',\n", - " 'come una nave di vichinghi nella notte scura',\n", - " 'alla casa bianca, forte come un manga',\n", - " \"you've ignored us in the past\",\n", - " 'and you will ignore us again',\n", - " 'ignore us again',\n", - " \"picnic all'inferno\",\n", - " 'siamo cotti a fuoco lento',\n", - " 'siamo carne per avvoltoi',\n", - " 'che gira e gira, siamo sempre noi',\n", - " \"picnic all'inferno\",\n", - " 'mangio plastica e cemento',\n", - " 'siamo nudi e siamo armati',\n", - " 'siamo quelli che si sono alzati',\n", - " \"picnic sull'ascensore per l'inferno\",\n", - " 'piccola guerriera, figlia della luna',\n", - " \"l'uomo è l'animale più feroce sulla terra\",\n", - " \"siamo sempre in guerra contro l'indifferenza\",\n", - " \"you've ignored us in the past\",\n", - " 'and you will ignore us again',\n", - " \"picnic all'inferno\",\n", - " 'siamo cotti a fuoco lento',\n", - " 'siamo carne per avvoltoi',\n", - " 'che gira e gira siamo sempre noi',\n", - " \"picnic all'inferno\",\n", - " 'mangio plastica e cemento',\n", - " 'siamo nudi e siamo armati',\n", - " 'siamo quelli che si sono alzati',\n", - " \"picnic sull'ascensore per l'inferno\",\n", - " \"trash girl, il mio futuro me lo prendo (you've ignored us in the past, and you will ignore us again)\",\n", - " 'il mio futuro me lo prendo',\n", - " \"(you've ignored us in the past, and you will ignore us again)\",\n", - " 'il mio futuro non lo vendo (non lo vendo)',\n", - " \"picnic all'inferno\",\n", - " 'mangio plastica e cemento',\n", - " 'siamo carne per avvoltoi',\n", - " 'che gira e gira siamo sempre noi',\n", - " \"picnic all'inferno\",\n", - " 'siamo cotti a fuoco lento',\n", - " 'siamo nudi e siamo armati',\n", - " 'siamo quelli che si sono alzati',\n", - " 'you are never too small to make a difference',\n", - " 'thank you',\n", - " 'vivere male, vivere tutti',\n", - " '(we just wanna live)',\n", - " 'per nostro signore dei compromessi',\n", - " '(we just wanna live)',\n", - " 'nel vangelo di giuda è scritto così',\n", - " '(we just wanna live)',\n", - " 'che tu sia maledetto, tu che regnerai',\n", - " '(we just wanna die)',\n", - " 'soffici e pie, malizia sua',\n", - " '(we just wanna live)',\n", - " 'grazie signore, ci insegni a soffrire',\n", - " '(we just wanna live)',\n", - " 'ho una macchia nera sul cuore, lo sai',\n", - " '(we just wanna live)',\n", - " 'che pagano son io e pagani i miei dei',\n", - " '(we just wanna die)',\n", - " 'tuo figlio dorme nel letto della coerenza',\n", - " '(we just wanna live)',\n", - " 'i discepoli in terra nella pazienza',\n", - " '(we just wanna live)',\n", - " 'io non dormo per niente, che coscienza non ho',\n", - " '(we just wanna live)',\n", - " 'questo poco tempo è tutto quello che hai',\n", - " '(we just wanna die)',\n", - " 'e se il domani venisse a prenderci tutti',\n", - " '(we just wanna live)',\n", - " 'a calci nel culo per sterminarci',\n", - " '(we just wanna live)',\n", - " 'i destini son salici e per versi lo sai',\n", - " '(we just wanna live)',\n", - " 'perché il tuo nome è presagio di morte e di guai',\n", - " '(we just wanna die)',\n", - " 'we just wanna live',\n", - " 'we just wanna live',\n", - " 'we just wanna live',\n", - " 'we just wanna die',\n", - " 'we just wanna die',\n", - " 'we just wanna...',\n", - " 'parlami',\n", - " 'il tuo silenzio guarda dentro',\n", - " 'non resisterò',\n", - " 'è un attimo, nel tuo vuoto sento che',\n", - " 'io non ce la farò',\n", - " 'walk on by',\n", - " 'you walk on by',\n", - " 'walk on by',\n", - " 'wondering why...',\n", - " 'wandering from you',\n", - " 'falling at your side',\n", - " 'wandering from you',\n", - " 'healing my desire',\n", - " 'stumble in your soul',\n", - " 'give yourself to me',\n", - " 'hurting your desire',\n", - " 'healing mine',\n", - " 'slegami',\n", - " 'dal mio rimorso, sei diverso',\n", - " 'mentre muoio e poi',\n", - " 'risorgo dentro te',\n", - " 'finché vivrò',\n", - " 'ricordarti così',\n", - " 'sarà una colpa eterna su di me...',\n", - " 'walk on by',\n", - " 'you walk on by',\n", - " 'walk on by',\n", - " 'wondering why...',\n", - " 'wandering from you',\n", - " 'falling at your side',\n", - " 'wandering from you',\n", - " 'healing my desire',\n", - " 'stumble in your soul',\n", - " 'give yourself to me',\n", - " 'hurting your desire',\n", - " 'healing mine',\n", - " 'wandering from you',\n", - " 'falling at your side',\n", - " 'wandering from you',\n", - " 'healing my desire',\n", - " 'stumble in your soul',\n", - " 'give yourself to me',\n", - " 'hurting your desire',\n", - " 'healing mine...',\n", - " 'healing mine...',\n", - " 'healing mine...',\n", - " '(stumble in your heart again)',\n", - " '(healing my eyesight...)',\n", - " 'give yourself to me...',\n", - " '(healing mine, healing mine...)',\n", - " '(healing my eyesight ...)',\n", - " 'stumble in your arms again',\n", - " '(healing mine)',\n", - " 'healing my eyesight...',\n", - " 'come sai puoi vincere',\n", - " 'così guardami so fingere',\n", - " 'come sai non ho fame',\n", - " 'come vuoi lo so non fa male',\n", - " 'guardami puoi fendere',\n", - " 'voli dentro me so fingere',\n", - " 'come sai non ho fame',\n", - " 'come vuoi lo so non fa male',\n", - " 'come sai non ho fame',\n", - " 'come vuoi lo so non fa male',\n", - " 'come sai qui sto bene',\n", - " 'legami se vuoi non fa male',\n", - " 'cassago... arin... camponogara...',\n", - " 'xente che verxe el finestrin e sgatara...',\n", - " 'ocio! ocio! ara che sbara!!! areo',\n", - " 'da bocia fionda e cerbotana',\n", - " 'tiravo drio ae gaine i baini',\n", - " 'dea coeana de me mama',\n", - " 'se tirava a coa ai gati',\n", - " 'se tirava sassi',\n", - " 'se se tirava sege co vaeanghe de pornassi',\n", - " 'tute de flanea, panini coa nutea',\n", - " 'giri coa grasiea e casa in barea',\n", - " 'pai campi al pomerijio',\n", - " 'co jijio e cajio',\n", - " 'in caiffo pai fossi e su pal sarajio',\n", - " \"se 'ndava vendemare e spanociare\",\n", - " 'sensa farse mae',\n", - " 'tuto par zogare molto naturae',\n", - " 'e i toseti in cità sofegai dal cemento',\n", - " 'i gà da scoresare par sentire un fià de vento',\n", - " 'i tosi de campagna poenta e ossi magna',\n", - " 'te i cati ae sagre sora el paeo dea cucagna',\n", - " 'i tosi de campagna co pissa i se bagna',\n", - " \"i porta pasegiare su pa l'arzare a cagna\",\n", - " 'i tosi de campagna mai visto che i se eagna',\n", - " 'bisogna te i conossi pa becarli in castagna',\n", - " 'i tosi de campagna al mare o in montagna',\n", - " 'i tosi de campagna xe tosi de campagna',\n", - " 'el spris col gin... hu! ma dove?',\n", - " 'a padova dal cinesin - che bon!',\n", - " 'qua i o tajia col grinton e tre olive sul baston',\n", - " 'qua in zona - see!',\n", - " 'a xente quea bona',\n", - " 'quea co un fià de sae dentro soa meona',\n", - " 'tra tosi se capimo',\n", - " 'se no se conossemo',\n", - " 'femo sempre a gara',\n", - " 'a chi fa pì el semo',\n", - " 'no ghemo pei soa lengua',\n", - " 'e no semo schissinosi',\n", - " 'signore pareceve',\n", - " 'semo tuti bravi tosi',\n", - " 'e seto chi se incassa',\n", - " 'pa farse i cassi mii?',\n", - " 'ti! nialtri semo massa tranquii',\n", - " 'nissuni xé cativo',\n", - " 'par queo te o digo',\n", - " 'te si cressuo cussì',\n", - " 'te si pa forsa me amigo',\n", - " 'me amigo',\n", - " 'te si pa forsa me amigo',\n", - " 'se se se se se',\n", - " 'i tosi de campagna poenta e ossi magna',\n", - " 'te i cati ae sagre sora el paeo dea cucagna',\n", - " 'i tosi de campagna co pissa i se bagna',\n", - " \"i porta pasegiare su pa l'arzare a cagna\",\n", - " 'i tosi de campagna mai visto che i se eagna',\n", - " 'bisogna te i conossi pa becarli in castagna',\n", - " 'i tosi de campagna al mare o in montagna',\n", - " 'i tosi de campagna xe tosi de campagna',\n", - " 'e co i vede e tete fora',\n", - " 'do minuti e i se inamora',\n", - " 'pò i va casa e i se fa seghe pa tre dì',\n", - " \"cò se ora 'ndare in figa\",\n", - " \"gà l'oseo in carne viva\",\n", - " \"ma i ghe conta tuti che i xé 'ndai\",\n", - " 'a gà ciavà',\n", - " 'ha ha ha ha ha ha ha ha!',\n", - " 'i tosi de campagna poenta e ossi magna',\n", - " 'te i cati ae sagre sora el paeo dea cucagna',\n", - " 'i tosi de campagna co pissa i se bagna',\n", - " \"i porta pasegiare su pa l'arzare a cagna\",\n", - " 'i tosi de campagna mai visto che i se eagna',\n", - " 'bisogna te i conossi pa becarli in castagna',\n", - " 'i tosi de campagna al mare o in montagna',\n", - " 'i tosi de campagna xe tosi de campagna',\n", - " 'i tosi de campagna in giro e sucche ragna',\n", - " 'se! se! se! se!',\n", - " 'i tosi de campagna i risi in testa magna',\n", - " 'se! se! se! se!',\n", - " 'i tosi de campagna mai vista na magagna',\n", - " 'se! se! se! se!',\n", - " 'i tosi de campagna xé tosi de campagna',\n", - " 'se! se! se! seeeee!',\n", - " 'se se se!',\n", - " 'i tosi de campagna.... campagna lupia??',\n", - " \"nun te perdere cu e' mane toje\",\n", - " 'tanta vote staraje sulo',\n", - " 'quanne triemme t’annascunne',\n", - " \"l'aie sapè ca' po’ te truovano\",\n", - " \"a parlà sempe d'e guai 'e ll'ate\",\n", - " 'cuorpe allerte senza vita',\n", - " \"nun te servono e' cumpagne\",\n", - " \"si staje sulo ind'a na' stanza\",\n", - " \"nun te perdere int'e’ mane toje\",\n", - " 'e tanta vote staraje sulo',\n", - " 'nuje simme vivi dinto e’ mane noste',\n", - " \"nuje simme vivi dinto e' mane noste\",\n", - " \"a parlà sempe d’e guai 'e ll'ate\",\n", - " 'cuorpe allerte senza vita',\n", - " \"nuje simme vivi dinto e' mane noste\",\n", - " 'nuje simme vivi dinto e’ mane noste',\n", - " 'nun ce ne sapimme ascì',\n", - " \"uno 'nguollo a n'ato\",\n", - " \"premme ppe nun ji' cchiu' 'nfunno\",\n", - " \"nun simme comm e' nonni nuoste\",\n", - " \"ca' se accuntentano da terra lloro\",\n", - " 'nun ce ne sapimme ascì',\n", - " \"a' famma e' arrivà ca' c'ha resi mostri\",\n", - " 'maronna mò me sento male',\n", - " \"eppure nun m'arrenne maje\",\n", - " 'uh, la mia cadillac',\n", - " 'la mia rolls royce, oh yeah',\n", - " 'marlboro',\n", - " 'blue jeans gucci',\n", - " 'yeah, yeah, yeah, yeah',\n", - " 'cowboy, mio amor',\n", - " 'la mia puledra chic',\n", - " 'oh no, no, no',\n", - " 'maledetto me',\n", - " 'maledetto posto',\n", - " 'maledetta te',\n", - " 'maledetto mostro',\n", - " 'amami senza chiedere in cambio',\n", - " 'lucifero il ribelle, la giacca di pelle, luci sul selvaggio',\n", - " 'ra-pa-pa-pa',\n", - " 'wow, da una cadillac',\n", - " 'uff, è una cadillac, yeah',\n", - " 'ra-pa-pa-pa, pa-pa',\n", - " 'ra-pa-pa-pa, pa-pa',\n", - " 'ra-pa-pa-pa, pa-pa',\n", - " 'ra-pa-pa-pa, pa-pa',\n", - " 'è una cadillac, yeah',\n", - " 'rock and roll, blue suede shoes',\n", - " 'popstar rock, ah, sid vicious',\n", - " \"anni '70, ma rum e cola\",\n", - " 'rosa come la cadillac, la mia camicia a pois',\n", - " \"sono vestito strano, ma'\",\n", - " 'maledetto me',\n", - " 'maledetto posto',\n", - " 'maledetta te',\n", - " 'maledetto mostro',\n", - " 'amami senza chiedere in cambio',\n", - " 'lucifero il ribelle, la giacca di pelle, luci sul selvaggio',\n", - " 'ra-pa-pa-pa',\n", - " 'wow, da una cadillac',\n", - " 'uff, è una cadillac, yeah',\n", - " 'ra-pa-pa-pa, pa-pa',\n", - " 'ra-pa-pa-pa, pa-pa',\n", - " 'ra-pa-pa-pa, pa-pa',\n", - " 'ra-pa-pa-pa, pa-pa',\n", - " \"sono vestito strano, ma'\",\n", - " 'sono vestito strano',\n", - " \"sono vestito strano, ma'\",\n", - " 'vestito strano',\n", - " \"sono vestito strano, ma'\",\n", - " 'sono vestito strano',\n", - " \"sono vestito strano, ma'\",\n", - " 'è una cadillac, yeah',\n", - " 'ra-pa-pa-pa, pa-pa (la mia cadillac)',\n", - " 'ra-pa-pa-pa, pa-pa (la mia puledra chic, la mia cadillac)',\n", - " 'ra-pa-pa-pa, pa-pa (la mia puledra chic, la mia cadillac)',\n", - " 'ra-pa-pa-pa, pa-pa (la mia puledra chic, la mia cadillac)',\n", - " 'è una cadillac, yeah',\n", - " 'pobblemi pobblemi besteme pobblemi',\n", - " 'sveja bonora, so xa in ritardo ma',\n", - " 'corro de fora, senti che fredo fa',\n", - " 'tiro na scora, me inciodo e torno in drio',\n", - " 'xe vegnuo fora calcossa pal dadrio',\n", - " 'co xe caldo co xe fredo co no parte el motorin',\n", - " 'quando a femena me rompe i cojoni pa 3 dì',\n", - " 'quando a festa xe finia',\n", - " \"quando sara l'ostaria\",\n", - " 'quando in man so pien de briscoe ma perdo ea partia',\n", - " 'pobblemi pobblemi besteme pobblemi',\n", - " 'e se me incasso perdo el serveo',\n", - " 'voria spaccare tutto e far masseo',\n", - " 'sfogarme un fià tirare su un casin',\n", - " 'calmarme con na tromba o un bel pompin',\n", - " 'el ga vuo a meningite da picoeo...',\n", - " 'so pare e so mare no se ga incorto...',\n", - " 'pobblemi! vai!',\n", - " 'pobblemi pobblemi besteme pobblemi',\n", - " \"e facc sempe chell ca' nun se putess fa', e dic 'na buscia\",\n", - " \"quanta penzier ca' me faccio e vuless cagnà, e dic 'na buscia. è chiamml co' nomm suoj, addà senti' can un è bbuon. ca' nun ce stann cchiù uommene, uommene\",\n", - " 'e nun se parlan uommene e uommene',\n", - " 'e se vennen uommene e uommene',\n", - " 'e se cantan uommene e uommene',\n", - " \"e s'acciren uommene e uommene\",\n", - " \"e po' chiagnen uommene, uommene\",\n", - " 'l’unico omme er sul papà!',\n", - " \"si vuo' rispett, e nun si' omme\",\n", - " \"vinnel a chi sò fa' fa' è sul 'na buscia\",\n", - " \"i' teng 'a storia mij ca' nun è 'a toj\",\n", - " \"è chest è 'a vita mij\",\n", - " \"è chiamml co' nomm suoj, addà senti' can un è bbuon\",\n", - " \"ca' nun ce stann cchiù uommene uommene\",\n", - " 'e nun se parlan uommene e uommene',\n", - " 'e se vennen uommene e uommene',\n", - " 'e se cantan uommene e uommene',\n", - " \"e s'acciren uommene e uommene\",\n", - " \"e po' chiagnen uommene, uommene\",\n", - " 'l’unico omme er sul papà!',\n", - " 'uommene, uommene',\n", - " 'uommene e uommene',\n", - " \"ca' nun ce stann cchiù uommene uommene\",\n", - " 'e nun se parlan uommene e uommene',\n", - " 'e se vennen uommene e uommene',\n", - " 'l’unico omme er sul papà!',\n", - " 'one and two and three and four',\n", - " 'one and two and three and four five',\n", - " 'che cosa è successo? abbiamo perso',\n", - " \"tutti il controllo, c'è da resettare il sistema\",\n", - " 'nei nostri bagagli si racchiudono',\n", - " 'dei mondi diversi e lontani dal vostro',\n", - " 'jaspersound, jaspersound',\n", - " 'qui nessuno ha vergogna, né tanto meno starà',\n", - " \"a giudicare che c'è nei vostri cannoni\",\n", - " 'one and two and three and four',\n", - " 'one and two and three and four five',\n", - " 'one and two and three',\n", - " 'so one a two b three c four d',\n", - " 'jaspersound, jaspersound',\n", - " 'so one and two and three for the jaspers',\n", - " 'un deux trois pour le jaspers',\n", - " 'so one and two and three',\n", - " 'jaspersound',\n", - " 'someday prendo un nastro rosso',\n", - " 'sarà come tu lo vuoi',\n", - " 'il mio cerchio azzurro e verde',\n", - " 'non traspare limiti',\n", - " 'someday prendo un pesce rosso',\n", - " 'involucri di plastica',\n", - " 'vado in centro e mi rifletto',\n", - " 'in lenti divergenti blu',\n", - " 'someway walking nelle piazze',\n", - " \"watchin' cielo elettrico\",\n", - " 'sotterraneo e silenzioso',\n", - " 'corre un cavo verso sud',\n", - " 'something splitting in fase neutro',\n", - " 'fast connection - subito',\n", - " \"l'elio è sazio e sta inglobando atomi di idrogeno\",\n", - " 'god bless me',\n", - " 'tungsteno e aria',\n", - " 'painting mondo sopra tela',\n", - " 'zooming in togliattigrad',\n", - " 'reaching bunker sotterraneo',\n", - " \"stepping nell'oscurità\",\n", - " 'pulling filo interruttore noting luce unusual',\n", - " 'satellites as lampadine',\n", - " 'bruciano in the universe',\n", - " 'forget the pain and all the games we play',\n", - " 'forget the worry and the shame',\n", - " \"i don't want no more\",\n", - " 'the gates of hell are waiting',\n", - " 'let them wait a little more',\n", - " '(ah-ah, ah...)',\n", - " 'where, where i go',\n", - " \"my spirit is free, i'm coming home\",\n", - " 'where, where i go (oh, where i...)',\n", - " 'remember me, but let me go...',\n", - " 'with no regrets i lay down all my blame',\n", - " \"the fate, the hate, it's all the same\",\n", - " '(you will become who you are...)',\n", - " \"i don't care no more\",\n", - " '(oh-oh, oh-oh, oh...)',\n", - " 'the gates of hell are waiting',\n", - " 'let them wait a little more',\n", - " '(ah-ah, ah...)',\n", - " 'where, where i go',\n", - " \"my spirit is free, i'm coming home\",\n", - " 'where, where i go (oh, where i...)',\n", - " 'remember me, but let me go...',\n", - " 'senza rimpianti abbandono la colpa',\n", - " \"il destino e l'odio sono una cosa sola\",\n", - " \"i cancelli dell'inferno ci stanno aspettando\",\n", - " 'lascia che attendano',\n", - " 'ovunque stia andando',\n", - " 'il mio spirito è libero',\n", - " 'sto tornando a casa',\n", - " 'conserva il ricordo',\n", - " 'ma lascia che io vada',\n", - " '(hey-ey-ey-ey-ey...)',\n", - " 'where, where i go',\n", - " \"my spirit is free, i'm coming home\",\n", - " 'where, where i go',\n", - " 'remember me, remember me',\n", - " 'remember me, but let me go...',\n", - " 'i can feel i can fly...',\n", - " 'where, where i go',\n", - " 'i can feel i can fly',\n", - " 'where, where i go...',\n", - " '\"clamoroso, nuova grande impresa del rock and roll che batte il rap, la techno e si insedia stabilmente al primo posto nella classifica dei generi musicali preferiti dai giovani italiani',\n", - " 'nuove accuse per il rock and roll sospettato per aver orinato sul palco e di aver mangiato la testa di un pipistrello; coinvolto - e sarebbe incredibile - anche il rock and roll acrobatico',\n", - " 'clamorosi sviluppi nella vicenda che vede coinvolti da una parte il rock and roll e dall\\'altra le forze anti rock and roll, i cosiddetti matusa; dopo i recenti attacchi di questi ultimi, il rock ha risposto con un indecoroso rumore molesto, vediamo:\"',\n", - " 'il rap non mi va',\n", - " \"l'hip hop proprio non mi va\",\n", - " 'la techno è una merda',\n", - " 'ma il rock and roll, il rock and roll',\n", - " 'sì che mi piace',\n", - " 'non ha mai scontentato nessuno',\n", - " 'il rock and roll, il rock and roll',\n", - " 'facile da suonare:',\n", - " 'rock, rock, rock, rock and roll',\n", - " 'rock and roll',\n", - " 'il jazz, troppi assoli',\n", - " 'la fusion è complicata',\n", - " 'ma il rock and roll',\n", - " 'il rock and roll sì che mi piace',\n", - " 'non ha mai deluso nessuno',\n", - " 'il rock and roll',\n", - " 'il rock and roll, facile da suonare:',\n", - " 'rock, rock, rock, rock and roll',\n", - " 'rock and roll, rock and roll',\n", - " 'rock and roll, rock and roll',\n", - " 'non mi va, non ci sto, rock and roll',\n", - " 'io vorrei solo rock and roll!',\n", - " 'ma il rock and roll, il rock and roll',\n", - " 'sì che mi piace',\n", - " 'il rock and roll. il rock and roll',\n", - " 'facile da suonare',\n", - " 'maledetto rock and roll',\n", - " 'tu spacchi gli alberghi e orini sul mondo',\n", - " 'rock and roll',\n", - " 'mamma mia, mamma mia, rock and roll',\n", - " 'rock!',\n", - " 'rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " 'rock and roll. rock and roll',\n", - " '\"clamoroso: nuova grande impresa del rockandroll, che batte il rap, la techno e si insedia stabilmente al primo posto nella classifica dei generi musicali preferiti dai giovani italiani',\n", - " 'il rock and roll braccato su tutto il territorio nazionale dalle forze dell\\'ordine, dopo le recenti devastazioni di camere d\\'albergo.\"',\n", - " 'e datemi il rock and roll!',\n", - " '\"ecco, secondo l\\'agenzia transpress, il rock si starebbe aggirando ubriaco urlando come un pazzo, in compagnia, purtroppo, del rock and roll acrobatico, che sarebbe suo ostaggio!\"',\n", - " '(in sottofondo, sottovoce:)',\n", - " 'ti piace! ti piace tanto il rock and roll!',\n", - " 'ecco! ti sborro!',\n", - " 'yeah, and this is mister rock and roll!',\n", - " '\"suo ostaggio! suo ostaggio! suo ostaggio!\"',\n", - " '\"rock and roll!',\n", - " 'arriva, arriva una bomba... arriva il migliore...',\n", - " 'roooock and roooooooooooooll... aaaaaaaaah!\"',\n", - " 'i’m gonna kill you!',\n", - " 'sono la bestia, il male che si presta per l’inchiesta',\n", - " 'la voce di chi bluffa e ti pesta su richiesta!',\n", - " 'armi a terra prima che l’ansia mi prenda',\n", - " 'sotterro l’ascia di guerra sulla tua faccia di merda!',\n", - " 'la storia è questa: chi sei e cosa vuoi?',\n", - " 'straight to the point, pass pass me the joint!',\n", - " 'i nostri sogni vanno in pasto agli avvoltoi',\n", - " 'perché se non li inventiamo i veri mostri siamo noi',\n", - " 'nella blacklist siamo depressi per colpa di una finta bad bitch',\n", - " 'vuole farmi a pezzi come la strega di blair witch!',\n", - " 'boy band ‘n sync, finti come il wrestling',\n", - " 'scemi fottete contro van helsing!',\n", - " 'rest in peace, corazzato come un kantus',\n", - " 'ho fatto un altro album, tu stai silente, albus!',\n", - " 'capo di sto cazzo, sei grande come un quantum',\n", - " 'fatti un autoscatto col .44 magnum!',\n", - " 'bellimbusti senza requisiti giusti',\n", - " 'cambiano i tuoi gusti in base a quale cazzo succhi!',\n", - " 'posso mangiarti cruda come il sushi',\n", - " 'push me, pussy, ti strusci, no time for your bullshit',\n", - " 'parli con chi conta?',\n", - " 'riempiti la bocca con i soldi che ti porti nella tomba',\n", - " 'mi prendo la colpa se l’odio mi somiglia',\n", - " 'ma se tocco il fondo cambio bottiglia!',\n", - " \"i'm a killer!\",\n", - " 'no excuses, i was born this way!',\n", - " \"i'm a killer!\",\n", - " \"no solution, ain't no word to say\",\n", - " \"i'm a killer!\",\n", - " 'no excuses, i was born this way!',\n", - " \"i'm a killer!\",\n", - " \"no solution, ain't no word to say\",\n", - " 'i got a little bit a anger to vent',\n", - " \"stick a faggot rapper's pretty head in cement\",\n", - " \"i don't give a shit if you are a g or a gent\",\n", - " \"this is rock 'n roll now you see what i meant\",\n", - " 'give me that hard guitar riff',\n", - " 'your nursery bars is garbage',\n", - " 'my samurai swords the sharpest',\n", - " \"slice 'em, dice 'em, put them in a box quick!\",\n", - " 'i cock back and spill your brain',\n", - " 'machete to your neck bitch, feel the pain',\n", - " \"money ain't changed skits, still the same!\",\n", - " 'give me that fat check, bills to pay!',\n", - " \"ugly mug and i'm sick since evil\",\n", - " 'rub me wrong and i turn ezekiel',\n", - " 'needles, pins, pins and needles',\n", - " 'vicious, nitro, porco d-!',\n", - " \"i'm a killer!\",\n", - " 'no excuses, i was born this way!',\n", - " \"i'm a killer!\",\n", - " \"no solution, ain't no word to say\",\n", - " \"i'm a killer!\",\n", - " 'no excuses, i was born this way!',\n", - " \"i'm a killer!\",\n", - " \"no solution, ain't no word to say\",\n", - " 'perché cerchi di essere ciò che non sei?',\n", - " 'la realtà è un insieme di specchi deformi',\n", - " 'perché non posso essere ciò che vorrei?',\n", - " 'non ho tempo sono intento a decompormi',\n", - " 'perché vorresti avere quello che non hai?',\n", - " 'hai ciò che serve non parlo di soldi',\n", - " 'perché mi vuoi insegnare quello che non sai?',\n", - " \"i can't stand none of your lies!\",\n", - " 'so let the blood come down!',\n", - " 'ehi, attenti che i bambini sono pazzi',\n", - " 'i giocattoli li fanno stare matti',\n", - " 'loro giocano e poi ridono di niente',\n", - " 'è un pericolo, pericolo costante',\n", - " 'attention, deficit hyperactivity disorder',\n", - " 'attention, deficit hyperactivity',\n", - " 'con la testa demoliscono i palazzi',\n", - " 'se li sgridi si buttan dai terrazzi',\n", - " 'loro vedono un mondo strabiliante',\n", - " 'i bambini, i bambini sono pazzi!!',\n", - " 'attention, deficit hyperactivity disorder',\n", - " 'attention, deficit hyperactivity',\n", - " 'disorder, disorder!',\n", - " 'ah, ah',\n", - " 'come sai puoi vincere',\n", - " 'così guardami, so fingere',\n", - " 'come sai non ho fame',\n", - " 'come vuoi, lo so, non fa male',\n", - " 'guardami, puoi fendere',\n", - " 'voli dentro me, so fingere',\n", - " 'come sai non ho fame',\n", - " 'come vuoi, lo so, non fa male',\n", - " 'come sai non ho fame',\n", - " 'come vuoi, lo so, non fa male',\n", - " 'come sai qui sto bene',\n", - " 'legami se vuoi non fa male, uh',\n", - " 'come sai',\n", - " 'come sai',\n", - " \"tuto l'ano stemo qua\",\n", - " \"a spetar che vegna ista'\",\n", - " 'sensa pressa ndemo pian',\n", - " 'sempre co na bira in man',\n", - " 'ti ga voja de spiagion',\n", - " 'monta su sol me vespon',\n", - " 'na sopressa e un chio de pan',\n", - " 'femo festa fin doman',\n", - " 'vien co mi che qua se sua',\n", - " 'e se no sta casa tua',\n", - " 'no sta romparme e toe',\n", - " 'poe vegnire chi che voe',\n", - " 'no sta fare el goldon',\n", - " 'ndemo via a baeton',\n", - " \"varda mi che so s-ciopa'\",\n", - " 'me ne ciavo de sti qua',\n", - " 'che xe quei tuti esaltai',\n", - " 'e fa i fighi paestrai',\n", - " 'quante mone che ghe xe',\n", - " 'pa ogni parte che te ve',\n", - " 'co xe sera carburar',\n", - " 'e po via a pasturar',\n", - " 'vien co mi che qua se sua',\n", - " 'e se no sta casa tua',\n", - " 'no sta romparme e toe',\n", - " 'poe vegnire chi che voe',\n", - " 'no sta fare el goldon',\n", - " 'ndemo via a baeton',\n", - " 'vien co mi che qua se sua',\n", - " 'e se no sta casa tua',\n", - " 'no sta romparme e toe',\n", - " 'poe vegnire chi che voe',\n", - " 'no sta fare el goldon',\n", - " 'ndemo via a baeton',\n", - " 'ci sparavamo quei video',\n", - " 'ci guardavamo quei video',\n", - " 'delle fettine panate',\n", - " \"dopo aver fatto l'amore\",\n", - " 'ci sparavamo quei video',\n", - " 'ci guardavamo quei video',\n", - " 'delle fettine panate',\n", - " \"dopo aver fatto l'amore\",\n", - " \"delle fettine pa' (x16)\",\n", - " 'ci sparavamo quei video',\n", - " 'ci guardavamo quei video',\n", - " 'la mattina, la sera',\n", - " 'era la stessa storia',\n", - " 'ci guardavamo quei video',\n", - " 'ci sparavamo nei video',\n", - " 'delle fettine panate',\n", - " \"dopo aver fatto l'amore\",\n", - " \"delle fettine pa' (x16)\",\n", - " 'ci sparavamo quei video',\n", - " 'ci guardavamo quei video',\n", - " 'delle fettine panate',\n", - " \"dopo aver fatto l'amore\",\n", - " 'ci sparavamo quei video',\n", - " 'ci facevamo dei video',\n", - " 'delle fettine panate',\n", - " \"dopo aver fatto l'amore\",\n", - " \"delle fettine pa' (x16)\",\n", - " 'ci facevamo quei video',\n", - " 'ci facevamo nei video',\n", - " 'delle fettine panate',\n", - " \"dopo aver fatto, dopo aver fatto l'amore\"]},\n", - " 'data': ['hooligan, parlo cockney',\n", - " 'in macchina in sette, tafferugli',\n", - " 'oh sì, cresciuti nel parco, hyde park',\n", - " 'sto mettendo benzina, irish pub',\n", - " 'da una stalla alle stelle, al bar delle star',\n", - " 'la giacca di pelle, in paradiso con kurt',\n", - " 'baby, come on',\n", - " 'figlio di un dio, figlio di un bar',\n", - " 'non mi far litigare (come on)',\n", - " 'figlio di un dio, figlio di un bar (come on)',\n", - " 'non mi far litigare (baby, come on)',\n", - " 'figlio dei jeans, figlio dei club (come on)',\n", - " 'lasciatemi stare (baby, come on)',\n", - " \"figlio di tro', figli di star (come on)\",\n", - " 'posso ancora guidare (baby, come on)',\n", - " 'figlio di un dio, figlio di un bar (come on)',\n", - " 'lasciatemi stare',\n", - " 'bomber black (come on)',\n", - " 'stivaletto (baby, come on)',\n", - " 'domenica a messa (come on)',\n", - " 'sigaretta (baby, come on)',\n", - " 'oh, sì, cintura di pelle (oh, yeah)',\n", - " 'serpente',\n", - " 'camicia aperta (oh, dio)',\n", - " 'delinquente',\n", - " 'occhiaie e porsche',\n", - " 'kate moss',\n", - " 'paradiso di star (oh, yeah)',\n", - " 'su una rolls (baby, come on)',\n", - " 'figlio di un dio, figlio di un bar',\n", - " 'non mi far litigare (come on)',\n", - " 'figlio di un dio, figlio di un bar (come on)',\n", - " 'non mi far litigare (baby, come on)',\n", - " 'figlio dei jeans, figlio dei club (come on)',\n", - " 'lasciatemi stare (baby, come on)',\n", - " \"figlio di tro', figli di star (come on)\",\n", - " 'posso ancora guidare (baby, come on)',\n", - " 'figlio di un dio, figlio di un bar (come on)',\n", - " 'lasciatemi stare (baby, come on)',\n", - " '(figlio di un dio, figlio di un bar)',\n", - " '(figlio di un dio, figlio di un bar)',\n", - " 'non mi far litigare (baby, come on)',\n", - " '(figlio di un dio, figlio di un bar)',\n", - " '(figlio di un dio, figlio di un bar)',\n", - " 'lasciatemi stare (come on)',\n", - " 'figlio di un dio, figlio di un bar (come on)',\n", - " 'non mi far litigare (baby, come on)',\n", - " 'figlio dei jeans, figlio dei club (come on)',\n", - " 'lasciatemi stare (baby, come on)',\n", - " \"figlio di tro', figli di star (come on)\",\n", - " 'posso ancora guidare (baby, come on)',\n", - " 'figlio di un dio, figlio di un bar (come on)',\n", - " 'lasciatemi stare (baby, come on)',\n", - " 'vai vai vai olio lubrifica',\n", - " 'che sta sera vago co na tosa magnifica',\n", - " 'anca se ea no lo sa',\n", - " 'borgellissimo e feice so xa mexo suà',\n", - " 'cossà ghe xe de mae, tutti se vergogna',\n", - " 'a dire che ghe voe a dire che bisogna',\n", - " 'fa ridare a xente coe recie delicae',\n", - " 'che pensa che sta qua sia na canson demensiae',\n", - " \"l'amore in do xe complicà\",\n", - " 'te poe far stare mae',\n", - " 'ghe xe chi preferisse',\n", - " 'stare a ramenarse e bae',\n", - " 'ai ai ai ai ai ai ai',\n", - " 'menandome el cuco no go sbaglià mai',\n", - " 'mi vago a memoria no serve giornai',\n", - " 'coe principesse, coe streghe e xo seghe',\n", - " 'no sta ciaparne massa sul serio ma semo seri',\n", - " 'chi che ga el cuco sempre in man no ga pensieri',\n", - " 'o forse ghe na anca massa e xe sidià',\n", - " 'a nostra società voe che te pensi a pinciare se sa',\n", - " 'de amore se more come julietta e romeo',\n", - " \"no xe mai morto nissuni co se menava l'oseo\",\n", - " 'e noialtri xoghemo, xoghemo a carte scoverte',\n", - " 'altro che va in letto e man sora e coverte',\n", - " \"l'amore in do xe complicà\",\n", - " 'te poe far stare mae',\n", - " 'ghe xe chi preferisse',\n", - " 'stare a ramenarse e bae',\n", - " 'ai ai ai ai ai ai ai',\n", - " 'menandome el cuco no go sbaglià mai',\n", - " 'mi vago a memoria no serve giornai',\n", - " 'coe principesse, coe streghe e xo seghe',\n", - " 'ai ai ai ai ai ai ai',\n", - " 'a voia de figa no passarà mai',\n", - " 'sta tento che quei che xe scandaixai',\n", - " 'xe pexo de ti co i va casa e xo seghe',\n", - " 'ai ai ai ai ai ai ai',\n", - " 'menandome el cuco no go sbaglià mai',\n", - " 'mi vago a memoria no serve giornai',\n", - " 'coe principesse, coe streghe e xo seghe',\n", - " 'ai ai ai ai ai ai ai',\n", - " 'a voia de figa no passarà mai',\n", - " 'sta tento che quei che xe scandaixai',\n", - " 'xe pexo de ti co i va casa e xo seghe',\n", - " 'ho visto prati muoversi',\n", - " 'come il mare',\n", - " 'nel grano d’inverno',\n", - " 'e uccelli liberi',\n", - " 'tuffarsi',\n", - " 'per non tornare, per non tornare…',\n", - " 'l’amore sa',\n", - " 'ho visto senza luce',\n", - " 'domeniche di gospel nell’aria',\n", - " 'e giorni luminosi',\n", - " 'solo di te, solo di te',\n", - " 'l’amore sa',\n", - " 'e tutto brilla',\n", - " 'let it shine, shine, shine',\n", - " 'shine on me',\n", - " 'let it shine, shine, shine',\n", - " 'shine on me',\n", - " 'se perdo la mia fede',\n", - " 'che avevo in te',\n", - " 'ritornera’ il buio',\n", - " 'perché di te',\n", - " 'io mi illumino',\n", - " 'solo di te, solo di te',\n", - " 'l’amore fa',\n", - " 'e tutto brilla',\n", - " 'let it shine, shine, shine',\n", - " 'shine on me',\n", - " 'let it shine, shine, shine',\n", - " 'shine on me',\n", - " 'let it shine, shine, shine',\n", - " 'shine on me',\n", - " 'let it shine, shine, shine',\n", - " 'shine on me',\n", - " 'e’ tutto qui',\n", - " 'eppure e’ tutto qui',\n", - " 'let it shine, shine, shine',\n", - " 'let it shine',\n", - " 'let it shine, shine, shine',\n", - " 'let it shine',\n", - " 'ho visto il mississippi',\n", - " 'come un mare',\n", - " 'andare all’inferno',\n", - " 'e un angelo',\n", - " 'tuffarsi',\n", - " 'per non tornare, per non tornare…',\n", - " 'l’amore sa',\n", - " 'se colpa de so mama che se na bea dona',\n", - " 'so pare anca lu col ghe la vede al dise bona',\n", - " 'dopo na bea serata dopo anca i biciarini',\n", - " \"e una e do e tre', po' vien vanti i fantuini\",\n", - " 'picinin, vogio tornar picinin',\n", - " 'de dormir in pase desso ti ga finio',\n", - " 'tuta la note in pie a sentir che pianse el fio',\n", - " 'ogni ocasion se bona par far casin',\n", - " 'e se el fio se lagna no te digo el me vissin...',\n", - " 'che co gero picinin no vardavo el taquin',\n", - " \"coi tempi che coreva 'andavo drito de bain\",\n", - " 'perché co sincue franchi me compravo e figurine',\n", - " \"co diese franchi tutto l'album de stampine\",\n", - " 'co vinti franchi ma',\n", - " 'e magnavo un stic',\n", - " 'co trenta franchi ghe robavo na bic',\n", - " 'co mie franchi, che gera un tesoro',\n", - " \"compravo tre' grami de libano oro...\",\n", - " 'sei molto avara ed altrettanto sei crudele',\n", - " 'se penso a te nella bocca ho solo fiele',\n", - " 'non capisci che qua si soffre',\n", - " 'tu non capisci che siamo ombre',\n", - " 'pronte a sciogliersi dentro al crepuscolo',\n", - " 'ci spazzi via come fossimo pulviscolo',\n", - " 'il tuo gelo inquietante mi imprigiona',\n", - " 'ma tu non sei più mia padrona',\n", - " 'ho visto gente disperarsi tutti per la stessa causa',\n", - " 'ho visto quanto il mondo è avaro e da allora ne ho la nausea',\n", - " 'è una gara senza tregua',\n", - " 'vince chi più spende il contagio cresce in fretta',\n", - " 'questa malattia si espande',\n", - " 'è una battaglia che perdiamo nessuno ha il tuo potere',\n", - " 'tutti pronti a fottersi per poterti avere',\n", - " 'interpreto sto mondo come merce da mercato',\n", - " 'impreco contro dio che da qua non ci ha salvato',\n", - " 'vita balorda e ingorda ti parlo ma sei sorda',\n", - " 'il domani è già arrivato ciò che è stato non si scorda',\n", - " 'due corpi pieni di te ma tu sei venuta meno',\n", - " \"e allora dammi un perché a 'sto ritmo non c'è freno\",\n", - " \"loro ignoravano che era l'ultimo dei giorni\",\n", - " 'tu abbandoni per sempre e già so che non ritorni',\n", - " 'vita fuggitiva esperienza punitiva',\n", - " 'qualunque sia il tuo senso posizione o prospettiva',\n", - " 'oh my life you make me cry again',\n", - " 'you sweep me away like ash',\n", - " \"and now i'm going to crash i'm breakin' down\",\n", - " 'oh my life you make me cry again',\n", - " 'you sweep me away like ash',\n", - " \"and now i'm going to crash i'm breakin' down\",\n", - " 'oh my life you make me cry again',\n", - " 'you sweep me away like ash',\n", - " \"and now i'm going to crash\",\n", - " \"i'm breakin' down\",\n", - " 'oh my life you make me cry again',\n", - " 'you sweep me away like ash',\n", - " \"and now i'm going to crash\",\n", - " \"i'm breakin' down\",\n", - " \"so i'll live every day like the last of my life\",\n", - " 'i saw too brothers die',\n", - " \"and i know we'll always cry\",\n", - " 'work and make your empire',\n", - " 'no question no reason',\n", - " 'keep quiet will be come the harvest season',\n", - " 'fanatici del business persi nei loro affari',\n", - " 'scarseggiano i denari effetti collaterali',\n", - " 'manicheismo tra ricchezza e povertà',\n", - " 'e continuiamo a non capire quale sia la realtà',\n", - " \"so i'll live every day like the last of my life\",\n", - " \"i saw too brothers die and i know we'll always cry\",\n", - " 'work and make your empire no question no reason',\n", - " 'keep quiet will be come the harvest season',\n", - " 'è un incastro meccanismo',\n", - " 'agite con tempismo',\n", - " \"vi arricchite per la gioia ma perdete l'umorismo\",\n", - " 'ennesimo incantesimo sogni per gli ingordi',\n", - " 'più cresci e più ti accorgi che hanno un prezzo anche i tuoi sogni',\n", - " \"so i'll live every day like the last of my life\",\n", - " \"i saw too brothers die and i know we'll always cry\",\n", - " 'work and make your empire',\n", - " 'no question no reason',\n", - " 'keep quiet will become the harvest season',\n", - " \"if your mind is standing by you don't think you don't realize\",\n", - " 'that is high the bloody price',\n", - " 'you become colder than ice',\n", - " 'lend your blow even if you bleed',\n", - " 'take your time that you really need',\n", - " 'you must get up from this filthy shit',\n", - " 'live your life and go on free',\n", - " 'oh my life you make me cry again',\n", - " 'you sweep me away like ash',\n", - " \"and now i'm going to crash\",\n", - " \"i'm breakin' down\",\n", - " 'oh my life you make me cry again',\n", - " 'you sweep me away like ash',\n", - " \"and now i'm going to crash\",\n", - " \"i'm breakin' down\",\n", - " 'oh my life you make me cry again',\n", - " 'you sweep me away like ash',\n", - " \"and now i'm going to crash\",\n", - " \"i'm breakin' down\",\n", - " 'oh my life you make me cry again',\n", - " 'you sweep me away like ash',\n", - " \"and now i'm going to crash\",\n", - " \"i'm breakin' down\",\n", - " 'life bitch',\n", - " 'you make me cry',\n", - " 'life bitch',\n", - " 'you make me cry life bitch',\n", - " 'you make me cry life bitch',\n", - " 'you make me cry',\n", - " 'xe istà! e semo tuti pronti a fare merdon',\n", - " 'xe istà! poenta ossi e vin soto el baraccon',\n", - " 'xe istà! mi no avevo a machina scapotà',\n", - " 'coea moea a disco a go cavà!',\n", - " 'xe istà! co sento caldo me par tuto pì beo',\n", - " \"xe istà! canotierine che me tira l'oseo\",\n", - " 'xe istà! sempre col brasso fora dal finestrin',\n", - " 'scolto i pomata e i angelstrip',\n", - " 'a cassago massa caldo fa, eora',\n", - " 'vago',\n", - " 'a butarme dentro in tergoea',\n", - " 'a cassago',\n", - " \"appuntamento fisso pà l'istà\",\n", - " 'co gossosparty e rumatera',\n", - " 'fasemo merda e te spetemo qua!',\n", - " 'cassago sitis laif',\n", - " 'cassago sitis laif',\n", - " 'cassago sitis laif',\n", - " \"dai che 'ndemo uoooh!\",\n", - " \"dai che 'ndemo uoooh!\",\n", - " \"dai che 'ndemo uoooh!\",\n", - " \"dai che 'ndemoooooooo!\",\n", - " 'a cassago massa caldo fa, eora',\n", - " 'vago a butarme dentro in tergoea',\n", - " 'a cassago',\n", - " \"appuntamento fisso pà l'istà\",\n", - " 'co gossosparty e rumatera',\n", - " 'fasemo merda e te spetemo qua',\n", - " 'cassago sitis laif',\n", - " 'cassago sitis laif',\n", - " 'cassago sitis laif',\n", - " \"l sol l'è da un pezz già tramuntaa\",\n", - " 'e numm semm chi intorn al foeugh adrè a balaa',\n", - " \"la luna adess l'è già alta soo in del ciel\",\n", - " 'e numm semm chi ammò adrè a bev',\n", - " 'on oltra bira, on alter gir intorn al foeugh',\n", - " 'on oltra volta e poeu se turna indré anmò',\n", - " 'cantem la téra, i montagn, i noster bosch',\n", - " \"festa pagana da la matina a quand l'è fosch!!\",\n", - " 'yes i know my way',\n", - " \"ma nun' è addò m'aie purtato tu\",\n", - " 'yes i know my way',\n", - " \"mo' nun me futte cchiù\",\n", - " \"mo' nun me futte cchiù\",\n", - " \"tu vaje deritto e i' resto a pere\",\n", - " \"và tu va tant'io sbareo\",\n", - " 'yes i know my way',\n", - " \"'e guaie mie 'e saccio i'\",\n", - " 'ma chi me crede',\n", - " 'yes i know my way',\n", - " \"ma tu nun puo' venì\",\n", - " \"ma tu nun puo' venì\",\n", - " \"ij m'arreseco sulo si vale 'a pena 'e tentà\",\n", - " \"ma po' chi mm'o ffa' fa\",\n", - " \"siente fa' accussì nun dà retta a nisciuno\",\n", - " \"fatte 'e fatte tuoie\",\n", - " \"ma si aje suffrì caccia 'a currea\",\n", - " \"siente fa' accussì\",\n", - " \"miette 'e creature 'o sole\",\n", - " \"pecchè hanna sapè' addò fà friddo\",\n", - " 'e addò fà cchiù calore',\n", - " 'yes i know my way',\n", - " \"ma nun' è addò m'aie purtato tu\",\n", - " 'yes i know my way',\n", - " \"mo' nun me futte cchiù\",\n", - " \"mo' nun me futte cchiù\",\n", - " \"tu vaje deritto e i' resto a pere\",\n", - " \"và tu va tant'io sbareo\",\n", - " 'yes i know my way',\n", - " \"'e guaie mie 'e saccio ij\",\n", - " 'ma chi me crede',\n", - " 'yes i know my way',\n", - " \"ma tu nun puo' venì\",\n", - " \"ma tu nun puo' venì\",\n", - " \"i' m'arreseco sulo si vale 'a pena 'e tentà'\",\n", - " \"ma po' chi mm'o ffa' fa\",\n", - " \"siente fa' accussì nun dà retta a nisciuno\",\n", - " \"fatte 'e fatte tuoie\",\n", - " \"ma si aje suffrì caccia 'a currea\",\n", - " \"siente fa' accussì\",\n", - " \"miette 'e creature 'o sole\",\n", - " 'pecchè hanna sapè addò fà friddo',\n", - " 'e addò fà cchiù calore',\n", - " 'yes i know my way',\n", - " 'yes i know my way',\n", - " 'my way',\n", - " 'my way']}}},\n", - " 'ja': {'sentence': {'pop': {'meta': {'train_data': ['see the world is in your hands',\n", - " 'and you don’t need to pretend',\n", - " 'that you fit fine in this',\n", - " 'i’m gonna take you on a trip',\n", - " 'somewhere where the sea is clear',\n", - " 'where the sun burns your skin',\n", - " 'feel the wind inside your hair',\n", - " 'and take a deep breath',\n", - " 'smell the sand',\n", - " 'embrace the mess',\n", - " '何でも,何でも,できるからのに',\n", - " '何度も,何度も,花見の踊り',\n", - " '見せたい!',\n", - " '心の中にわかりますか?',\n", - " '私の気持ちを聞こえたますか?',\n", - " 'i just need tenderness',\n", - " 'あなたのところはどこにありますか',\n", - " '私の場所にある日くるのか',\n", - " 'i just see emptiness',\n", - " 'どうしてあなたに全部あげたいよ',\n", - " 'feel the sea upon your face',\n", - " 'and make your own way',\n", - " 'see it shines',\n", - " 'as it’s your quest',\n", - " '何でも,何でも,できるからのに',\n", - " '何度も,何度も,花見の踊り',\n", - " '見せたい!',\n", - " '一度 踏み外した',\n", - " '見えない階段があって',\n", - " '恐くなって',\n", - " '大きく感じていたんだ',\n", - " '(oh) 嫌いになって',\n", - " '(oh) 投げ出したって',\n", - " '自分からは逃げらんないから',\n", - " 'so i bring me some new sox',\n", - " '磨いたクツで',\n", - " 'もう一回 出直したって',\n", - " \"they can't say like\",\n", - " '\"アハハハ\" no, \"アハハハ\" no, no',\n", - " 'i believe myself',\n", - " 'so! burn it man, burn it man',\n", - " 'life is a bit like the tournament',\n", - " 'たいがいの場合 自分次第',\n", - " 'やりきったら後悔なんてない',\n", - " 'get it all together',\n", - " '練って 待って',\n", - " 'yes 戦闘モード ok',\n", - " 'ネバギバでしょ?',\n", - " 'テンション 上がってんなら 皆',\n", - " 'clap your hand',\n", - " '巻いて like this',\n", - " 'リズムに乗ってstop!!',\n", - " 'うらはらドキッて、息をきって',\n", - " 'bounce now! and stop!!',\n", - " \"don't know what's comin' up\",\n", - " 'but i make it through',\n", - " '根拠なんて無いけど',\n", - " 'as long as we keep all',\n", - " 'our dreams alive',\n", - " 'then we gonna make it there, right!?',\n", - " 'bring me some new sox',\n", - " '服を着替えて',\n", - " 'もう一回 出直したって',\n", - " \"they can't say like\",\n", - " '\"アハハハ\" no, \"アハハハ\" no, no (hell no!)',\n", - " 'so watch out now (watch out now)',\n", - " 'bring me my sunglasses',\n", - " '助走付けて',\n", - " 'もう一回戦 挑んだって',\n", - " 'we can sing like (say what?)',\n", - " '\"アハハハ\" no, \"アハハハ\" no, no (hell yeah!)',\n", - " 'so believe yourself',\n", - " 'dark cloud, loneliness',\n", - " 'no helping hand',\n", - " 'can you handle this?',\n", - " 'i make you say \"uh uh uh\"',\n", - " 'i know you can do it',\n", - " 'what? dark cloud, rainy day',\n", - " \"no one's around\",\n", - " 'can you handle this?',\n", - " \"oops! baby then you'll know\",\n", - " 'your life will go on',\n", - " 'oh yeah?',\n", - " 'never give yourself up!',\n", - " 'oh, oh, ok!',\n", - " 'go and keep your hand up!',\n", - " 'keep your hand up feel me?',\n", - " \"oh i'll take you there now\",\n", - " 'why! you ready? hold on',\n", - " 'now we gonna rock the house!!!',\n", - " 'bring me some new sound',\n", - " '襟をつめて',\n", - " 'もう一回 出直したって',\n", - " \"they can't say like\",\n", - " '\"アハハハ\" no, \"アハハハ\" no, no (hell no!)',\n", - " 'so watch out now (watch out now)',\n", - " 'bring me my sunglasses',\n", - " '空を目指して',\n", - " 'もう一回戦 挑んだって',\n", - " 'we can sing like (say what?)',\n", - " '\"アハハハ\" no, \"アハハハ\" no, no (oh yeah)',\n", - " 'so believe yourself (yourself)',\n", - " 'いつだって',\n", - " 'あの雲抜け出すためなら',\n", - " 'どんな風向きでも',\n", - " \"it's not mine\",\n", - " \"but it's alright, yeah (yeah)\",\n", - " 'here we go now everybody say',\n", - " 'our (our)',\n", - " 'say ooh (ooh)',\n", - " 'ok, say oh yeah (oh yeah)',\n", - " 'bring me some new sound',\n", - " '顔をあげて (yeah)',\n", - " 'もう一回出直したって',\n", - " \"they can't say like\",\n", - " '\"アハハハ\" no, \"アハハハ\" no, no (hell no)',\n", - " 'いつだって',\n", - " '間違いなんて',\n", - " '笑い飛ばし',\n", - " '迷惑だってかけちゃって',\n", - " '何遍だってやり直せる',\n", - " 'you can make it right',\n", - " \"'cause i know it\",\n", - " 'bring me my sunglasses',\n", - " '空を目指して (yeah)',\n", - " 'もう一回戦挑んだって',\n", - " 'we can sing like (say what?)',\n", - " '\"アハハハ\" no, \"アハハハ\" no, yeah',\n", - " 'so believe yourself',\n", - " '弾んだ気持ち止まんない',\n", - " 'love me love me love me love me love me baby',\n", - " 'you&i 秘密(ナイショ)のメッセージ',\n", - " 'tell me tell me tell me now',\n", - " 'キミの人気はナンバーワン',\n", - " 'love me love me love me love me love me baby',\n", - " 'でも僕だけ見ていてよ',\n", - " 'show me show me show me now',\n", - " 'wait! ちょっと危険だな。 好きになり過ぎた',\n", - " 'no! ソッコーout of control アメージングなmy lover',\n", - " 'ok, girl キミには yes man 毎日がheavenly',\n", - " 'ok, girl すでにトリコさ i love you',\n", - " '完ぺきな 恋人に なるから ok, girl',\n", - " 'だから笑ってよ i love you',\n", - " 'baby i don’t have some time',\n", - " 'even though, you make me shine',\n", - " 'but i’m knock out from your appeal',\n", - " 'i wanna get yours be mine(so hot)',\n", - " '?',\n", - " '涙もlucky も半分こ',\n", - " 'love me love me love me love me love me baby',\n", - " 'ぜんぶシェアして歩こう',\n", - " 'tell me tell me tell me now',\n", - " 'wait! なんか焦るんだ。かわい過ぎるから',\n", - " 'no! ホントout of control アメージングなmy lover',\n", - " 'ok, girl キミには yes man 毎日がheavenly',\n", - " 'ok, girl すでにトリコさ i love you',\n", - " '完ぺきな 恋人に なるから ok, girl',\n", - " 'だから笑ってよ i love you',\n", - " 'i need you i’ll never let you go',\n", - " 'telling me whisper',\n", - " 'i’m a super man to you',\n", - " 'would you love me?',\n", - " 'i’ll never wanna leave you, kiss me now',\n", - " 'i’ll never wanna leave you, kiss me now',\n", - " '? ok!',\n", - " 'キミが 誰か 奪われないように',\n", - " 'you 抱きしめていたい!',\n", - " 'ok, girl キミには yes man 毎日がheavenly',\n", - " 'ok, girl すでにトリコさ i love you',\n", - " '完ぺきな 恋人に なるから ok, girl',\n", - " 'だから笑ってよ i love you',\n", - " 'ok, girl キミには yes man 毎日がheavenly',\n", - " 'ok, girl すでにトリコさ i love you',\n", - " 'ひざまずいても 奪ってでも',\n", - " '手に入れないと 気が済まない',\n", - " \"boy, you're so so fly とめられない\",\n", - " 'まるで fire みたいなdesire',\n", - " 'speed it up, boy',\n", - " \"誰にも 乗らせない you're my fast car\",\n", - " '手に負えないけど hot (speed it up, speed it up, speed it up now)',\n", - " 'give me the key',\n", - " 'たまらない let me drive you down the love street',\n", - " '息も出来ぬほどに (gimme that, gimme that gimme that now)',\n", - " '四六時中 そう一晩中',\n", - " '囁いてしまう oh boy, i need you',\n", - " '幻のヴィンテージ まさに exclusive',\n", - " '逃したら次はないから',\n", - " 'speed it up, boy',\n", - " \"誰にも 乗らせない you're my fast car\",\n", - " '手に負えないけど hot (speed it up, speed it up, speed it up now)',\n", - " 'give me the key',\n", - " 'たまらない let me drive you down the love street',\n", - " '息も出来ぬほどに (gimme that, gimme that gimme that now)',\n", - " 'もう熱すぎてオーバーヒート',\n", - " '狂いそうなほど your heart beats',\n", - " 'slow it down, slow it down, just slow it down (baby baby)',\n", - " '任せてよ let me control you',\n", - " '落ち着いてもう一度',\n", - " 'gimme that, gimme, gimme that',\n", - " 'i know what you want, yeah',\n", - " 'speed it up, boy',\n", - " \"誰にも 乗らせない you're my fast car\",\n", - " '手に負えないけど hot (speed it up, speed it up, speed it up now)',\n", - " 'give me the key',\n", - " 'たまらない let me drive you down the love street',\n", - " '息も出来ぬほどに (gimme that, gimme that gimme that now)',\n", - " 'speed it up, boy',\n", - " \"誰にも 乗らせない you're my fast car\",\n", - " '手に負えないけど hot (speed it up, speed it up, speed it up now)',\n", - " 'give me the key',\n", - " 'たまらない let me drive you down the love street',\n", - " '息も出来ぬほどに (gimme that, gimme that gimme that now)',\n", - " 'still in the mood for a melody',\n", - " 'それでも朝日は語る',\n", - " '幼さを捨てる時に',\n", - " '前触れも知らせもないと',\n", - " 'i cannot fly away, i want to cry today',\n", - " '願いは遠く',\n", - " 'but i will try real hard, maybe i can be tough',\n", - " '歩き出すことの意味を知る',\n", - " 'floating feathers in the spring',\n", - " 'i feel the soothing breeze',\n", - " \"i hear it, “don't stay”\",\n", - " '目を閉じればこの背に',\n", - " 'i am ready to get ready',\n", - " 'for my longest journey',\n", - " 'far away, far away',\n", - " 'そっと進み出す',\n", - " 'still in the juvenile memories',\n", - " '今でも響く笑い声',\n", - " 'やさしい日々にも今は',\n", - " '短い別れを告げて',\n", - " 'as the autumn sky',\n", - " 'the scenery surrounds me keep changing',\n", - " 'and, day by day',\n", - " '親しきものたちさえ',\n", - " 'yes, i won’t lose it, believing',\n", - " \"what i've grew in my mind\",\n", - " 'the new day is today',\n", - " 'なにも迷わずに',\n", - " 'forever i will be, whatever i can be',\n", - " '一人ではなく',\n", - " 'so i can fly anywhere, i mean it everywhere',\n", - " '誰かと共に行く意味を知る',\n", - " 'floating feathers in the spring',\n", - " 'i feel the soothing breeze',\n", - " \"i hear it,“don't stay”\",\n", - " '目を閉じればこの背に',\n", - " 'i am ready to get ready',\n", - " 'for my longest journey',\n", - " 'far away, far away',\n", - " 'そっと進み出す',\n", - " 'いつしか風は止んで',\n", - " '視界はただただ広く',\n", - " 'それでも歩は進んで',\n", - " 'きっとこれが 始まりの終わり',\n", - " 'please break my heart',\n", - " 'please break me down',\n", - " 'please break my heart',\n", - " 'please break me down',\n", - " \"sorry sorry, i'm sorry so much\",\n", - " '何もかも捨てた過去は',\n", - " 'baby, baby, i loved you',\n", - " '独りで生きていくから',\n", - " 'sonic, sonic, boom, super sonic',\n", - " 'すぐに忘れられない your face',\n", - " 'baby, baby, i loved you',\n", - " '一人じゃ生きていけないでしょ',\n", - " \"i'm so fine\",\n", - " \"私なら it's okay\",\n", - " \"不意に i'm so crying\",\n", - " '愛に飢えてるの',\n", - " '誰にもきっと近づかないように',\n", - " 'might change my mind',\n", - " \"like 'my oh my'\",\n", - " '間違いだけを照らす moonlight',\n", - " 'もう二度と戻れない good night',\n", - " '望みは一つ so far',\n", - " 'お願いだからどうか',\n", - " 'あなただけなの time goes by',\n", - " '好きなだけ嫌って more',\n", - " 'like gallows-bird',\n", - " '繰り返した',\n", - " 'love makes me…',\n", - " 'bad',\n", - " '誰にも止められない',\n", - " 'why',\n", - " '(please break my heart)',\n", - " '(please break me down)',\n", - " 'ごめんねじゃ足りない',\n", - " 'あなたを愛してる',\n", - " 'そのままこのまま midnight',\n", - " '自由に飛び立て fly more',\n", - " \"sorry sorry, i'm sorry so much\",\n", - " '何もかも捨てた過去は',\n", - " 'baby, baby, i loved you',\n", - " '独りで生きていくから',\n", - " 'sonic, sonic, boom, super sonic',\n", - " 'すぐに忘れられない your face',\n", - " 'baby, baby, i loved you',\n", - " '一人じゃ生きていけないでしょ',\n", - " \"i'm in fan-fan-fantasy\",\n", - " '(i feel blue blue)',\n", - " 'これは fan-fan-fantasy',\n", - " '(i feel blue blue)',\n", - " 'キャパオーバーしそうに',\n", - " 'あなたが したいように',\n", - " 'まだ夢から覚めないみたいに',\n", - " '回る回る時計が tick tack',\n", - " '好きなだけ笑って more',\n", - " '油断しないで',\n", - " \"don't let me go before\",\n", - " 'love makes me…',\n", - " 'bad',\n", - " '始まらないように',\n", - " 'bye',\n", - " '(please break my heart)',\n", - " '(please break me down)',\n", - " 'ごめんねじゃ足りない',\n", - " 'あなたを愛してる',\n", - " 'そのままこのまま midnight',\n", - " '自由に飛び立て fly more',\n", - " 'please break my heart',\n", - " 'please break me down',\n", - " 'please break my heart',\n", - " 'please break me down',\n", - " 'please break my heart',\n", - " 'please break me down',\n", - " 'please break my heart',\n", - " 'please break me down',\n", - " \"sorry sorry, i'm sorry so much\",\n", - " '何もかも捨てた過去は',\n", - " 'baby, baby, i loved you',\n", - " '独りは寂しいけど',\n", - " 'sonic, sonic, boom, super sonic',\n", - " '会いたいわ すぐにそばに来てよ',\n", - " 'baby, baby, i loved you',\n", - " '一人じゃ生きていけないけど',\n", - " 'please break my heart',\n", - " 'please break me down',\n", - " 'please break my heart',\n", - " 'please break my heart',\n", - " 'please break me down',\n", - " 'please break my heart',\n", - " 'please break my heart',\n", - " 'please break me down',\n", - " 'please break my heart',\n", - " 'please break me down',\n", - " '安室奈美恵「interlude〜don’t wanna cry symphonic style」の歌詞',\n", - " \"go! go! go! let's go!\",\n", - " \"that's right!\",\n", - " 'フォルムに目が眩んで完全なるloser',\n", - " 'どうやって取り返しにいこうかmy way',\n", - " 'endlessな毎日が退屈なら',\n", - " 'もうひとつの星で巡り逢おうか',\n", - " '未知なるyou&i',\n", - " '揺れ動くto my heart',\n", - " 'closer closer',\n", - " '深い海の底',\n", - " '高い空の果て',\n", - " 'so tell me are you ready',\n", - " \"let's go let's go let's go go go go\",\n", - " \"let's go let's go let's go let's go\",\n", - " \"go go go let's go\",\n", - " 'android syndrome',\n", - " 'キミだけに従う',\n", - " '導いて in your voice',\n", - " \"―you're my adrenalin―\",\n", - " 'android syndrome',\n", - " '感情もコントロール',\n", - " 'キミ以外は不可能',\n", - " \"―you're my adrenalin―\",\n", - " 'u―ah―yessir!',\n", - " '有能なキミはdeveloper',\n", - " 'u―ra―ra―ra',\n", - " 'クレイジーなほどアン・ドゥ・トロワ',\n", - " '支配の先で理解して',\n", - " 'すべてを巧みに操作して',\n", - " 'エラーを解除してほしい',\n", - " 'その指先で',\n", - " '未知なるyou&i',\n", - " '揺れ動くto my heart',\n", - " 'closer closer',\n", - " '深い孤独の闇',\n", - " '高い理想の果て',\n", - " 'so tell me are you ready',\n", - " \"let's go let's go let's go go go go\",\n", - " \"let's go let's go let's go let's go\",\n", - " \"go go go let's go\",\n", - " 'android syndrome',\n", - " 'キミだけのandroid',\n", - " '気がついてin my voice',\n", - " \"―you're my adrenalin―\",\n", - " 'android syndrome(syndrome)',\n", - " '感覚をlet it go',\n", - " '愛はここにあるよ',\n", - " \"―you're my adrenalin―\",\n", - " 'baby, you give me the soul',\n", - " 'so, ボクはキミのもの',\n", - " \"i can do it! don't worry\",\n", - " \"―you're my adrenalin―\",\n", - " 'baby, you give me hope',\n", - " '永遠にlet me know',\n", - " \"完全にキミのもの(go! go! go! let's go!)\",\n", - " \"―you're my adrenalin―\",\n", - " 'android syndrome',\n", - " 'キミだけに従う',\n", - " '導いて in your voice',\n", - " \"―you're my adrenalin―\",\n", - " 'android syndrome',\n", - " '感情もコントロール',\n", - " 'キミ以外は不可能',\n", - " \"―you're my adrenalin―\",\n", - " 'android syndrom',\n", - " 'キミだけのandroid',\n", - " '気がついてin my voice',\n", - " \"―you're my adrenalin―\",\n", - " 'android syndrome',\n", - " \"感覚をlet's go\",\n", - " '愛はここにあるよ',\n", - " \"―you're my adrenalin―\",\n", - " \"―you're my adrenalin―\",\n", - " '微かに羽ばたきするbutterfly',\n", - " 'let go, let grow, let spread out',\n", - " 'like a water-drop ripple out in waves',\n", - " '今ここから始まる連鎖',\n", - " 'chain (brra) reaction (hey, oh, woah, yeah, yeah, yeah), 拡がる連鎖',\n", - " 'chain reaction (brra, yeah), 繋がる連鎖 (yeah)',\n", - " 'この世界中 轟かす 全てが so effectiveな',\n", - " 'rhythm, beat, melody, we make you so crazy, now',\n", - " \"what's up? flash!\",\n", - " '反応するaffective 変化はelectric',\n", - " \"yeah, it's so electric, yeah (oh-oh-oh)\",\n", - " \"まだほんの生まれたてのfactor (it's a factor)\",\n", - " '共鳴しだす心がmedium *by the medium*',\n", - " 'make a wish, 現実に変えていく *we want to*',\n", - " '(get me started, 今始まる連鎖)',\n", - " 'chain reaction, 拡がる連鎖',\n", - " 'chain reaction, 今ここから世界が繋がる',\n", - " 'ding-ding, 心が hit, hit 繋がる drill, drill',\n", - " \"邪魔するwall, let's break it down (chain)\",\n", - " 'make a wish, 現実に変えていく',\n", - " 'get me started, 今始まる連鎖',\n", - " 'we make it, 未来を make it',\n", - " '小さな蝶が 起こす奇跡',\n", - " '羽ばたきを嵐へ we can change',\n", - " 'stop waiting, get ready, we can make the story',\n", - " 'baby, now you gonna be crazy',\n", - " \"今を don't waste it and choose it, yeah\",\n", - " 'yeah, 信じて just do it',\n", - " '(隔離された世界に 風穴空けるその意思)',\n", - " '何度も打ち込めよ決意 殻を破れ',\n", - " 'ビリビリ痺れる beat が',\n", - " '轟く世界を揺るがす どこまでも',\n", - " '小さな一歩も step by step',\n", - " 'yeah, bass to the beat, going \"brra, brra, brra\"',\n", - " 'hey, are you ready to go?',\n", - " 'yeah, there is no fear',\n", - " 'yeah, there is no fear (yeah)',\n", - " \"まだほんの生まれたてのfactor (it's a factor)\",\n", - " '共鳴しだす心がmedium *by the medium*',\n", - " 'make a wish, 現実に変えていく *we want to*',\n", - " '(get me started, 今始まる連鎖)',\n", - " 'ding-ding, 心が hit, hit 繋がる drill, drill',\n", - " \"邪魔するwall, let's break it down (chain)\",\n", - " 'make a wish, 現実に変えていく',\n", - " 'get me started, 今始まる連鎖',\n", - " '散らばる点を 結んだ線が (oh, yeah)',\n", - " '円になり (touch me right) 縁となる, oh yeah',\n", - " '僕らは new age (through the dark)',\n", - " '(we will become the one, ひとつになれる)',\n", - " '世界が 生まれ変わろうとしてる',\n", - " 'do you feel it? (make the chain)',\n", - " 'we are the one',\n", - " 'chain reaction, 拡がる連鎖',\n", - " 'chain (yeah, eh-eh-eh) reaction, 繋がる連鎖 (chain)',\n", - " 'ding-ding, 心が hit, hit 繋がる drill, drill',\n", - " \"邪魔するwall, let's break it down (chain)\",\n", - " 'make a wish, 現実に変えていく',\n", - " 'get me started, 今始まる連鎖',\n", - " '(ah-ah-ah-ah-ah)',\n", - " 'i wanna see ya, you do, so fine, yeah (yeah, yeah)',\n", - " 'sync dreams, the one makes you start (oh-ooh, yeah)',\n", - " 'i wanna see',\n", - " '(get me started) *今始まる連鎖*',\n", - " 'what’cha gonna do tonight? ギラツイテル floor',\n", - " '制御不能の launcher 不敵の all-rounder',\n", - " '一心不乱に spinning around 楽しいことしよう',\n", - " '閉じ込めた情熱 yeah 出口探してる yeah',\n", - " 'ハダける理性 脱ぎ捨てていいんじゃない?',\n", - " 'let’s party',\n", - " 'get over right away, come on',\n", - " 'we’re gonna make it our story',\n", - " '勇敢で fool 降りしきる laser beam yeah',\n", - " '颯爽と回避(かわ)し go there',\n", - " '1 2 3',\n", - " 'dance dance dance',\n", - " 'dance dance dance',\n", - " 'we just gotta make it grove',\n", - " 'dance dance dance baby',\n", - " 'dance dance dance',\n", - " 'dance dance dance',\n", - " 'dance dance dance',\n", - " 'your kiss make me wanna move',\n", - " 'dance dance dance baby',\n", - " 'dance dance dance',\n", - " '欲望のままに火花散らそう',\n", - " '忘却の yesterday 桃源郷まで dive',\n", - " 'そう come on',\n", - " 'dance dance dance',\n", - " 'dance dance dance tonight',\n", - " 'people gather on the floor ほらビリビリしてるんだ',\n", - " '思惑と 欲望が 激しく渦巻いてるんだ',\n", - " 'そう dance dance dance dance',\n", - " '闇の向こうのストロボの光が',\n", - " '正体を暴く 甘いだけの夜なら興味ない',\n", - " '流れる汗 止めなくていいんじゃない?',\n", - " 'let’s party',\n", - " 'get over right away, come on (yeah)',\n", - " 'we’re gonna make it our story',\n", - " '空前の boom 望み通りの rule yeah',\n", - " '誘い込む事件性',\n", - " '1 2 3 (whoa whoa whoa yeah)',\n", - " 'dance dance dance',\n", - " 'dance dance dance',\n", - " 'we just gotta make it grove',\n", - " 'dance dance dance baby (ooh)',\n", - " 'dance dance dance (ooh)',\n", - " 'dance dance dance (dance)',\n", - " 'dance dance dance',\n", - " 'your kiss make me wanna move',\n", - " 'dance dance dance baby (ooh yeah)',\n", - " 'dance dance dance (oh)',\n", - " '欲望のままに火花散らそう (uh uh yeah)',\n", - " '忘却の yesterday 桃源郷まで dive',\n", - " 'そう come on',\n", - " 'dance dance dance (yeah yeah)',\n", - " 'dance dance dance tonight (yeah)',\n", - " 'ハダける理性 脱ぎ捨てていいんじゃない?',\n", - " '(we’re gonna party)',\n", - " '流れる汗 止めなくていいんじゃない?',\n", - " '(don’t stop the party)',\n", - " 'go crazy party people',\n", - " 'yeah, we’re never gonna stop',\n", - " '振り乱す このカラダ',\n", - " 'get up and get up (hey)',\n", - " 'むき出しの hero 溢れ落ちる soul',\n", - " 'this is our world now',\n", - " 'everybody dance',\n", - " 'dance dance dance',\n", - " 'dance dance dance',\n", - " 'we just gotta make it grove (yeah)',\n", - " 'dance dance dance baby',\n", - " 'dance dance dance',\n", - " 'dance dance dance',\n", - " 'dance dance dance',\n", - " 'your kiss make me wanna move',\n", - " 'dance dance dance baby',\n", - " 'dance dance dance (everybody)',\n", - " '欲望のままに 火花散らそう (dance yeah)',\n", - " '忘却の yesterday 桃源郷まで dive',\n", - " 'そう come on',\n", - " 'dance dance dance (yeah)',\n", - " 'dance dance dance tonight',\n", - " '(whoa) そう come on',\n", - " '(oh) dance dance dance',\n", - " 'dance dance dance tonight',\n", - " \"let's do dreaming\",\n", - " \"let's do dreaming\",\n", - " 'hello, hello, hello, hello',\n", - " 'atlantis, we find the people. atlantis, we pray for a new world',\n", - " 'hello, hello, hello, hello 失われた都市の希望たどる',\n", - " '大地は沈み 言葉もわからない',\n", - " 'でもようやく思い出した',\n", - " '僕ら失った都市の夢みつける',\n", - " 'イルカの声に耳澄まし',\n", - " '砕けた記憶を取り戻す',\n", - " \"let's do dreaming\",\n", - " \"let's do dreaming\",\n", - " 'hello, hello, hello, hello',\n", - " 'atlantis, we find the people. atlantis, we pray for a new world',\n", - " 'hello, hello, hello, hello',\n", - " 'atlantis, we find the people. atlantis, we pray for a new world',\n", - " 'amazing 溢れる想い君はきっと堪えて',\n", - " 'amazing 叶えたいから忘れないよずっと',\n", - " \"君はどこでも (like i'm in the bottom of the world)\",\n", - " \"前を向いてた (there's nothing of the protection)\",\n", - " '光り輝く (even this conflict is wasting time)',\n", - " '夜明けを求めて まだ遠くて',\n", - " '希望に疲れた心はもう二度と 姿亡きもの求め',\n", - " '空へ',\n", - " 'amazing (you remember) 溢れる想い君はきっと堪えて',\n", - " 'amazing (you remember) 叶えたいから忘れないよずっと',\n", - " '波は静まり (my emotion is already burst)',\n", - " '無音の彼方へ消えてく',\n", - " '月夜に浮かべた面影まだ今も 姿亡きもの求め',\n", - " '空へ',\n", - " 'amazing (you remember) 溢れる想いひとり涙をこらえて',\n", - " 'amazing (you remember) 叶えたいから忘れないよずっと',\n", - " '“believe in yourself and the present',\n", - " 'whatever happened you can get over”',\n", - " 'you said, so i can believe myself',\n", - " 'this environment and this moment',\n", - " \"ready go! i don't wanna anymore\",\n", - " 'you have gone away to the neo universe',\n", - " 'like a bomb! everything is already burst',\n", - " \"but i don't cry, cause you will rebirth\",\n", - " 'amazing 愛しき友よ君は帰らぬ旅人',\n", - " 'amazing 出逢えたこと忘れないよ',\n", - " 'amazing (you remember) 溢れる想い君にサヨナラ告げても',\n", - " 'amazing (you remember) 叶えたいから忘れないよ',\n", - " '生まれ変わるだろう',\n", - " 'you remember',\n", - " \"ready go! i don't wanna anymore\",\n", - " 'you have gone away to the neo universe',\n", - " 'like a bomb. everything is already burst',\n", - " \"but i don't cry, cause you will rebirth\",\n", - " 'clap your hands everybody! everybody さあ clap your hands!',\n", - " \"clap your hands everybody! don't stop さあ clap your hands!\",\n", - " 'clap your hands everybody! everybody さあ clap your hands!',\n", - " 'clap your hands everybody! bring it up, bring it up, bring it up!',\n", - " 'freaky cheeky party time アガってく all the time, yeah uh huh!',\n", - " 'freaky cheeky party time 飛ばしてく all the time, yeah hot hot!',\n", - " '終わらない夏が 眩しく胸に煌めく (sexy i!)',\n", - " 'こうして君と 出逢えた奇跡は feel so fine! (can i sexy!?)',\n", - " '全部オーライな季節到来 問題ない',\n", - " '予定は free はじけすぎ アピリすぎ ei yo!',\n", - " 'はまる傾向もうすでに k.o. play my song',\n", - " 'lose my mind! shake shake your thang! shake shake!',\n", - " 'tail lamp 横目に たどり着いたのは絶景な beach',\n", - " 'cool biz shapely 逆ハートの brazilian がいい!',\n", - " \"drink up 陽気に踊りはしゃぐ君は freakin' me\",\n", - " '季節のせい 何か始まりそうな you and me',\n", - " 'freaky cheeky party time アガってく all the time, yeah uh huh!',\n", - " 'freaky cheeky party time 飛ばしてく all the time, yeah hot hot!',\n", - " '終わらない夏が 眩しく胸に煌めく (sexy i!)',\n", - " 'こうして君と 出逢えた奇跡は feel so fine! (can i sexy!?)',\n", - " \"今日はオールナイト let's dance all night, you and i\",\n", - " 'もうすでに lock on! つまり君にゾッコン! ya know!',\n", - " '雰囲気に浮かれ気味 見渡してもそう やっぱり君 uh!',\n", - " 'lose my mind! shake shake your thang! shake shake!',\n", - " 'サンセットバックに rainbow に変わる crazy な beach',\n", - " 'dj turn it up! 最高の瞬間を instagram',\n", - " \"drink up 陽気に踊りはしゃぐ君は freakin' me\",\n", - " '季節のせい 何か始まりそうな you and me',\n", - " 'freaky cheeky party time アガってく all the time, yeah uh huh!',\n", - " 'freaky cheeky party time 飛ばしてく all the time, yeah hot hot!',\n", - " '終わらない夏が 眩しく胸に煌めく (sexy i!)',\n", - " 'こうして君と 出逢えた奇跡は feel so fine! (can i sexy!?)',\n", - " 'oh~~~~~~~~~~ party time! 4x',\n", - " 'clap your hands everybody! everybody さあ clap your hands!',\n", - " \"clap your hands everybody! don't stop さあ clap your hands!\",\n", - " 'clap your hands everybody! everybody さあ clap your hands!',\n", - " 'clap your hands everybody! bring it up, bring it up, bring it up!',\n", - " 'freaky cheeky party time アガってく all the time, yeah uh huh!',\n", - " 'freaky cheeky party time 飛ばしてく all the time, yeah hot hot!',\n", - " '終わらない夏が 眩しく胸に煌めく (sexy i!)',\n", - " 'こうして君と 出逢えた奇跡は feel so fine! (can i sexy!?)',\n", - " 'oh~~~~~~~~~~ party time! 8x',\n", - " 'さみしい曖昧な期待で「いつかは何かが起きる…」と',\n", - " '満たされないこの想い嘆き悲しんでいた日々',\n", - " 'when i 時に事がうまく運べたとき壊したくてそれを全部',\n", - " \"その繰り返しの毎日は心なしか…it's a sad day\",\n", - " '錆びた屋根の上の夕日がボクを円く包み込んだんだ',\n", - " \"it's just a little routine\",\n", - " 'i do to make me feel like my friend and fam are with me',\n", - " '押し寄せるこの想いが描く未来変えていく...',\n", - " 'oshiyoseru kono omoi ga egaku mirai kaete yuku',\n", - " '※i wanna thank you and tell you that i miss you',\n", - " '毎日歩いたこの道grateful',\n", - " 'ボクを導く出会いが優しく背中押すよ',\n", - " 'i wanna thank you and tell you that i miss you',\n", - " 'いままで感じた全てがgrateful',\n", - " \"いまボクがここにいるのはfrom time after time i'd like to thank you※\",\n", - " 'いつでも見失いそうな時それを教えてくれたのは',\n", - " 'そうさ年と共に増えていく数えきれない大切な...',\n", - " 'その一人一人の声が聞こえてくるのさ',\n", - " \"livin' it up, breakin' it up, working it up, i need to go now\",\n", - " 'yeah! i need to go now',\n", - " \"i'm happy i'm makin' it breakin' it looking it up on the internet\",\n", - " 'taking the time to evaluate',\n", - " \"hoping that everything goes to plan, that's the plan!\",\n", - " \"hoping i can, rockin' the island called japan, you're the man!\",\n", - " \"i've been livin' in it so long, i wanna understand\",\n", - " \"i love it so much i don't think that i could ever leave\",\n", - " \"i've made it my own, and yeah it's home, so please stop asking me\",\n", - " \"it's just a iil something that i call the busy life\",\n", - " 'but maybe everyday is not much of a busy life',\n", - " '(※くり返し×2)',\n", - " 'early morning, turn that alarm right off',\n", - " 'running for that packed train, no time to turn down',\n", - " '人混みをすり抜けてさぁ',\n", - " 'いつも通りの笑顔でおはよう',\n", - " '可愛いあの子は、シャッチョサンにおべっかです',\n", - " '否定はしないが僕にはできそうにない',\n", - " '頭をクリアに今宵は繰り出そう',\n", - " 'たまにゃいいでしょ シャンパンでパーティータイム',\n", - " 'i wanna move so good like the hottest pop star',\n", - " 'dancing in the rain, not a care in the world',\n", - " \"'cause you 人生一度きり\",\n", - " \"まだまだ can't get enough 夜はこれから\",\n", - " \"not gonna stop, we dancing till the sun's up\",\n", - " \"you won't keep me on the clock\",\n", - " \"now that i'm getting it out\",\n", - " 'you asking too much, you know i got that new touch',\n", - " \"and now i'm not gonna stop 'cause now i'm getting it out\",\n", - " 'boys ambitious. 大志を抱きなさい',\n", - " '校長先生がそんな事言ってた',\n", - " 'アメニモマケズ ノルマ達成だ',\n", - " '忘れてないぜ上昇志向と好奇心',\n", - " \"i'm popping um up popping um up drink the champagne up tonight\",\n", - " \"and i'm singing it up singing it up, karaoke prince in the house\",\n", - " 'ストレス クリアに今宵は繰り出そう',\n", - " 'たまにゃいいでしょ エンジョイだ friday night',\n", - " 'i wanna move so good like the hottest pop star',\n", - " 'dancing in the rain, not a care in the world',\n", - " \"'cause you 人生一度きり\",\n", - " \"まだまだ can't get enough 夜はこれから\",\n", - " \"i'm living it up, i don't want to be afraid\",\n", - " \"when it's all said and done, i hit the ground and run\",\n", - " 'i wanna move so good like thе hottest pop star',\n", - " 'dancing in the rain, not a care in thе world',\n", - " \"'cause you 人生一度きり\",\n", - " \"まだまだ can't get enough 夜はこれから\",\n", - " 'woo (cosmic explorer)',\n", - " '星を離れて 何世代の夢',\n", - " '幾千の時を 紡いできたから',\n", - " '炎の雨も どこか安らぐ',\n", - " '暖かさだけを 求めて',\n", - " 'break new ground (break new ground)',\n", - " 'space explorer (space explorer)',\n", - " 'break new ground (break new ground)',\n", - " 'seek new field',\n", - " 'woo (cosmic explorer)',\n", - " '月の明かりも 海の香りも',\n", - " '氷の大地も 僕は知らないけど',\n", - " '静かの夜が 周りを包む',\n", - " '光の力は ここにある',\n", - " 'break new ground (break new ground)',\n", - " 'space explorer (space explorer)',\n", - " 'break new ground (break new ground)',\n", - " 'seek new field',\n", - " 'woo (cosmic explorer)',\n", - " '現実味のない距離 超えていく break new ground',\n", - " '魂だけが永遠 cosmic explorer',\n", - " 'woo (cosmic explorer)',\n", - " '(cosmic explorer)',\n", - " '(cosmic explorer)',\n", - " '浜崎あゆみ「pieces of seven」の歌詞',\n", - " \"you're just like a ...\",\n", - " '暁の明星',\n", - " 'hung up on your ... ah',\n", - " '暁の表情',\n", - " \"don't tell me why 欲望も度を越しゃ武器になる\",\n", - " '身の程知らず',\n", - " '騙し騙され 敵無しじゃいられない 不屈のfighter',\n", - " 'heavenly ... feel fine ... all or nothing',\n", - " '過乗な空想 追っ掛けて',\n", - " 'falling out ... give me, glorious kiss',\n", - " \"彷徨う本能 don't back out!\",\n", - " 'hung up on どうしたって 永遠のbump',\n", - " 'oh! hey, super soul',\n", - " 'hung up on どう見たって 人生はtrap',\n", - " 'give me a chance',\n", - " 'hung up on どうしたって 葛藤のfunk',\n", - " 'oh my god! help me just now, hung up on there is no way out!',\n", - " \"shakin' heart, shakin' heart cry!\",\n", - " \"don't tell me why 一心不乱に霧の中もがいては\",\n", - " '息切らしてる',\n", - " 'そう 補充すべきは 柔らかな君の愛 所詮common boy',\n", - " \"forever ... lovin' ... but we're alone\",\n", - " '冷めない愛を 欲しがって',\n", - " 'everyday ... call you in a daydream',\n", - " \"oh 幻想 後悔 ... don't back out!\",\n", - " 'hung up on どうしたって 永遠のbump',\n", - " 'oh, give me your love',\n", - " 'hung up on どう見たって 人生はtrap',\n", - " 'tell me a truth',\n", - " 'hung up on どうしたって 葛藤のfunk',\n", - " \"don't look back, i never need any of mercy what a joke!\",\n", - " 'shout it out, shout it out now!',\n", - " 'hung up on どうしたって 永遠のbump',\n", - " 'oh! hey, super soul',\n", - " 'hung up on どう見たって 人生はtrap',\n", - " 'give mе a chance',\n", - " 'hung up on どうしたって 葛藤のfunk',\n", - " 'oh my god! help me just now, hung up on thеre is no way out!',\n", - " \"shakin' heart, shakin' heart cry!\",\n", - " '見つめ合う 一瞬のかけひき',\n", - " 'めぐり会う 偶然のparty night',\n", - " '背を向けた ぎりぎりの強がり',\n", - " 'あなたから言わせたい \"still i love you…\"',\n", - " 'なくしてわかる 愛の意味が 今胸に熱い',\n", - " 'come on baby come on my love',\n", - " '今すぐ take on my heart',\n", - " 'come on baby come on my love',\n", - " \"揺らめく lookin' for dream\",\n", - " 'come on baby come on my love',\n", - " \"ため息 missin' your love\",\n", - " 'come on baby come on my love',\n", - " '激しく crazy for you',\n", - " 'サヨナラを告げたのは あやまち',\n", - " 'あの頃へ帰りたい \"catch my true heart…\"',\n", - " '淋しさ抱いて 愛の中へ そっと誘って',\n", - " 'come on baby come on my love',\n", - " 'やさしく take on my heart',\n", - " 'come on baby come on my love',\n", - " \"まぶしく lookin' for dream\",\n", - " 'come on baby come on my love',\n", - " \"素直に missin' your love\",\n", - " 'come on baby come on my love',\n", - " 'ささやく crazy for you',\n", - " 'come on baby come on my love',\n", - " '今すぐ take on my heart',\n", - " 'come on baby come on my love',\n", - " \"揺らめく lookin' for dream\",\n", - " 'come on baby come on my love',\n", - " \"ため息 missin' your love\",\n", - " 'come on baby come on my love',\n", - " '激しく crazy for you',\n", - " 'ここ最近の trend は #wildandfree',\n", - " '見られるほど',\n", - " 'あふれ出す extasy',\n", - " 'i know you checking me out (a-ha)',\n", - " 'i know you checking me out (a-ha)',\n", - " 'show window では 売ってナイ originality',\n", - " '眠る前欠かせない ootd',\n", - " 'i know you checking me out (a-ha)',\n", - " 'i know you checking me out (a-ha)',\n", - " 'あっという間に 過ぎていく everyday life',\n", - " '私らしく 生きなきゃ もったいないじゃナイ',\n", - " 'come on follow me now',\n", - " 'everytime you checking me out',\n", - " 'freeze しちゃうくらい hot',\n", - " '私のスベテが',\n", - " 'lookbook lookbook yeah',\n", - " 'everyone so click and shout',\n", - " '目指すは常に top',\n", - " '上から下まで',\n", - " 'lookbook lookbook yeah',\n", - " '輝きたいなら',\n", - " '磨かなきゃでしょ',\n", - " 'everytime you checking me out',\n", - " '飛び出す killing shot',\n", - " '私のスベテが',\n", - " 'lookbook lookbook yeah',\n", - " 'take a quick look, my lookbook',\n", - " '気になるコト 必須',\n", - " '一瞬で トリコに high quality',\n", - " 'and you keep on starring till eternity',\n", - " 'i know you checking me out (a-ha)',\n", - " 'i know you checking me out (a-ha)',\n", - " '気になるなら 迷わずに like me',\n", - " \"毎日が update 挑むと i'm hype\",\n", - " '批判には “whatever”',\n", - " '楽しむのが style',\n", - " 'come on follow me now',\n", - " 'everytime you checking me out',\n", - " 'freeze しちゃうくらい hot',\n", - " '私のスベテが',\n", - " 'lookbook lookbook yeah',\n", - " 'everyone so click and shout',\n", - " '目指すは常に top',\n", - " '上から下まで',\n", - " 'lookbook lookbook yeah',\n", - " '最高の自分でいたい',\n", - " '美しき perfect lies',\n", - " 'come on follow me now',\n", - " 'everytime you checking me out',\n", - " 'freeze しちゃうくらい hot',\n", - " '私のスベテが',\n", - " 'lookbook lookbook yeah',\n", - " 'everytime you checking me out',\n", - " 'freeze しちゃうくらい hot',\n", - " '私のスベテが',\n", - " 'lookbook lookbook yeah',\n", - " 'everyone so click and shout',\n", - " '目指すは常に top',\n", - " '上から下まで',\n", - " 'lookbook lookbook yeah',\n", - " '輝きたいなら',\n", - " '磨かなきゃでしょ',\n", - " 'everytime you checking me out',\n", - " '飛び出す killing shot',\n", - " '私のスベテが',\n", - " 'lookbook lookbook yeah',\n", - " 'lookbook lookbook yeah',\n", - " 'lookbook lookbook yeah',\n", - " 'dance all night もう止められない',\n", - " 'so hold me tight 回るこの世界',\n", - " 'dance all night いつまでも君と',\n", - " 'one more time 踊り続けたい',\n", - " '真夜中過ぎのtaxi',\n", - " '片手で見せるid',\n", - " '弾むビートとrydeen',\n", - " '私を招くparty',\n", - " 'デカめのサングラス',\n", - " 'ネオンカラーのネイル',\n", - " 'イビザのカーニバル',\n", - " 'きらめきが on the floor',\n", - " 'dance all night もう止められない',\n", - " 'so hold me tight 回るこの世界',\n", - " 'dance all night いつまでも君と',\n", - " 'one more time 踊り続けたい',\n", - " 'dance with me please',\n", - " 'till we call the police',\n", - " 'never gonna leave',\n", - " 'till di sun come down',\n", - " 'sun come down',\n", - " 'time ta bounce',\n", - " 'we takin ova and ova',\n", - " \"we're takin ova and ova and ova\",\n", - " \"it's never ova\",\n", - " 'if you move with me',\n", - " 'we can drink chablis',\n", - " 'you can feed me diamonds all night, yeah',\n", - " \"and now it's on to the next one\",\n", - " 'to the nеxt one',\n", - " 'to the next onе (to the afterparty...)',\n", - " 'to the next one',\n", - " 'to the next one',\n", - " 'and the next one',\n", - " 'dance all night 目覚める星たち',\n", - " \"it's time to shine この想い胸に\",\n", - " 'dance all night どこまでも君と',\n", - " 'in my eyes 今を映したい',\n", - " '少し焼けた肌を濡らして',\n", - " '降り注ぐ音浴びたら',\n", - " 'グラス置いて朝日抱いて',\n", - " '指と指を絡め合う',\n", - " \"変わらないで it's just like paradise\",\n", - " 'またここで惹かれ合おう',\n", - " 'dance all night...',\n", - " 'dance all night もう止められない',\n", - " 'just you & i なんにもいらない',\n", - " 'dance all night いつまでも君と',\n", - " 'feel the light 輝き続けたい',\n", - " 'dance all night...',\n", - " '浜崎あゆみ「bridge to the sky」の歌詞',\n", - " '浜崎あゆみ「the judgment day」の歌詞',\n", - " \"it's my only desire\",\n", - " \"am i chasin' devils?\",\n", - " 'to an ending i call my own, call my own',\n", - " \"it's my only desire\",\n", - " \"now, i got the feelin' again\",\n", - " 'i just had to feel it again',\n", - " 'and now',\n", - " \"now, i got the feelin' again\",\n", - " 'now, i saw the light of the end',\n", - " 'i just saw the light of the end',\n", - " 'just now',\n", - " 'now, i saw the light of the end',\n", - " \"it's my only desire\",\n", - " 'i kiss hello my blinded eyes',\n", - " 'and reach for final ecstasy',\n", - " 'good-bye to heroes',\n", - " 'good-bye to heroes',\n", - " 'time to tell you so',\n", - " 'no parachute, no big surprise',\n", - " \"and now the future's chasin' me\",\n", - " 'good-bye to heroes',\n", - " 'good-bye to heroes',\n", - " \"i'm gonna let you go\",\n", - " \"can't get it outta my head\",\n", - " \"i can't get it outta my head\",\n", - " \"no, i can't\",\n", - " \"can't get it outta my head\",\n", - " 'now, i saw the light of the end',\n", - " 'i just saw the light of the end',\n", - " 'just now',\n", - " 'now i saw the light of the end',\n", - " \"it's my only desire\",\n", - " 'i kiss hello my blinded eyes',\n", - " 'and reach for final ecstasy',\n", - " 'good-bye to heroes',\n", - " 'good-bye to heroes',\n", - " 'time to tell you so',\n", - " 'no parachute, no big surprise',\n", - " \"and now the futures chasin' me\",\n", - " 'good-bye to heroes',\n", - " 'good-bye to heroes',\n", - " \"i'm gonna let you go\",\n", - " 'dark and light and live and die',\n", - " \"and war and peace and truth and lyin'\",\n", - " \"it's not falling, it's not flyin'\",\n", - " \"there's no tellin' there's no askin'\",\n", - " 'black and white and love and hate',\n", - " 'and yes and no and real and faking',\n", - " \"it's not starting, it's not ending\",\n", - " \"there's no comin', there's no goin'\",\n", - " 'dark and light and live and die',\n", - " \"and war and peace and truth and lyin'\",\n", - " \"it's not falling, it's not flyin'\",\n", - " \"there's no tellin' there's so askin' myself\",\n", - " 'will it be beautiful?',\n", - " '<和訳>',\n", - " 'それは俺の欲望',\n", - " '悪魔でも追いかけてるみたいに',\n", - " '最後まで自分を呼び続ける',\n", - " 'そう、それが俺の願いさ',\n", - " ...]},\n", - " 'data': ['baby baby 冗談なのね 口付けは',\n", - " 'feeling feeling 探ってるの 唇で',\n", - " 'タッチしてるだけで 充たされてる',\n", - " 'そう キミの鼓動',\n", - " 'baby baby そうなのね 雨の中で',\n", - " 'feeling feeling 泣いてるみたいな 眼差しで',\n", - " 'こっちみてうなずく ふりをして',\n", - " 'そう 感じているの',\n", - " \"i'm feeling u\",\n", - " \"i'm feeling u\",\n", - " 'baby i just wanna feel you',\n", - " 'take me high, so i melt with you',\n", - " \"i'm feeling u\",\n", - " \"i'm feeling u\",\n", - " 'baby i just wanna feel you',\n", - " 'take me high, so i melt with you',\n", - " \"i'm feeling u\",\n", - " 'baby baby 冗談なのね 口付けは',\n", - " 'feeling feeling 探ってるの 唇で',\n", - " 'タッチしてるだけで 充たされてる',\n", - " 'そう キミの鼓動',\n", - " \"i'm feeling u\",\n", - " \"i'm feeling u\",\n", - " 'baby i just wanna feel you',\n", - " 'take me high, so i melt with you',\n", - " \"i'm feeling u\",\n", - " \"i'm feeling u\",\n", - " 'baby i just wanna feel you',\n", - " 'take me high, so i melt with you',\n", - " \"i'm feeling u\",\n", - " \"i'm feeling u\",\n", - " \"i'm feeling u\",\n", - " 'the morning of machine civilization',\n", - " '赤い楯 影迷い',\n", - " '灰色の服纏い',\n", - " 'リズムに囚われた朝',\n", - " 'いつもと同じ瞬間',\n", - " '止めない生産ライン',\n", - " '何かが欠けてる',\n", - " 'in the twilight of machinery',\n", - " \"where's the world going\",\n", - " \"won't somebody tell me\",\n", - " 'are these thoughts illusion',\n", - " 'are we all one',\n", - " 'この世界は変われるのか',\n", - " 'この想いは幻か',\n", - " 'people find work to be done',\n", - " '人は働き 鳥歌う',\n", - " '眠りに落ちた夢',\n", - " '目を覚ませ 彼叫ぶ',\n", - " 'いつもと同じ瞬間',\n", - " 'この刹那に生きる',\n", - " 'いつか革命求め',\n", - " 'in the twilight of machinery',\n", - " \"where's the world going\",\n", - " \"won't somebody tell me\",\n", - " 'are these thoughts illusion',\n", - " 'are we all one',\n", - " 'この想いを変えられるのか',\n", - " 'いつも夢に笑いかける',\n", - " 'break through',\n", - " 'paradigm',\n", - " 'in your mind',\n", - " 'revolution',\n", - " 'desire',\n", - " 'science',\n", - " 'ascension',\n", - " 'thirteen',\n", - " 'white shirt',\n", - " 'white shirt',\n", - " 'white shirt',\n", - " 'black shirt',\n", - " 'black shirt',\n", - " 'singularity',\n", - " 'we are all one',\n", - " 'are we all one',\n", - " \"baby baby, don't look so sad\",\n", - " \"there's gonna be a better tomorrow\",\n", - " '重い扉の向こうは',\n", - " 'いつでも 青空さ',\n", - " '昨日と同じ一日が暮れて',\n", - " '彼女は深い溜息とともに眠る',\n", - " '果せなかった約束',\n", - " 'またひとつ増えただけ',\n", - " 'それでも明日を夢見る',\n", - " 'baby baby, close your eyes',\n", - " 'go back into your endless dream',\n", - " '目覚める頃はとっくに',\n", - " '笑顔が戻ってる',\n", - " 'いい事だけを信じてるうちに',\n", - " 'すべてを許せる自分に会える いつか',\n", - " 'あんなに愛した人も',\n", - " '愛してくれた人も',\n", - " '振り向けば ただの幻',\n", - " \"baby baby, don't think you're lonely\",\n", - " \"don't give up loving somebody new\",\n", - " '繰り返される別れに',\n", - " '臆病にならないで',\n", - " 'ah,淋しいなんて',\n", - " 'ah,感じるひまもないくらい',\n", - " '果たせなかった約束',\n", - " 'またひとつ増えただけ',\n", - " 'それでも明日を夢見る',\n", - " \"baby baby, don't look so sad\",\n", - " \"there's gonna be a better tomorrow\",\n", - " '重い扉の向こうは',\n", - " 'いつでも 青空さ',\n", - " 'baby baby, close your eyes',\n", - " 'go back into your endless dream',\n", - " '果てしない夢の続き',\n", - " '見させてあげるから',\n", - " \"just believe someday you'll find your hard time's gone\",\n", - " 'try not to look back on your yesterday',\n", - " 'so keep on dreaming of tomorrow',\n", - " \"don't you think you're lonely\",\n", - " \"don't give up on loving\",\n", - " \"somebody's waiting just for you\",\n", - " \"just believe someday you'll find your hard time's gone\",\n", - " 'try not to look back on your yesterday',\n", - " 'so keep on dreaming of tomorrow',\n", - " \"don't you look so sad, girl\",\n", - " 'there will be a fine thing',\n", - " 'everything will be all right',\n", - " \"just believe someday you'll find your hard time's gone\",\n", - " 'try not to look back on your yesterday',\n", - " 'so keep on dreaming of tomorrow',\n", - " 'baby, close your brown eyes',\n", - " 'go back to your dreaming',\n", - " 'you can see the blue sky spread',\n", - " 'michi madness',\n", - " 'michi madness',\n", - " 'michi madness',\n", - " 'まだあなたの隣にいるのは why?',\n", - " 'i decided not to call you',\n", - " 'もう会わない',\n", - " '何度も決めたのに',\n", - " 'また thinking about you all the time',\n", - " '二人が出会ったこと',\n", - " \"won't you tell me why?\",\n", - " '複雑なlove',\n", - " 'いらない',\n", - " 'でも一人の time',\n", - " '聞こえてくるの your voice',\n", - " 'why are you running away from this?',\n", - " 'you should be true to your feelings',\n", - " 'i say 落ちたくないの no way',\n", - " 'but is it already too late',\n", - " 'kiss kiss kiss',\n", - " '初めての this feeling',\n", - " 'kiss kiss kiss',\n", - " '止まりそうになる my heart',\n", - " '誰よりも',\n", - " '何よりも',\n", - " '感じ合ってる気がするから',\n", - " \"no i just can't stop\",\n", - " 'kiss kiss kiss',\n", - " '忘れたい this feeling',\n", - " 'kiss kiss kiss',\n", - " '心が痛いから',\n", - " \"but i'm blinded\",\n", - " \"i'm addicted\",\n", - " '現実から逃げ切れない',\n", - " '一瞬のour happiness',\n", - " '一緒にいない時間 oh it feel so long',\n", - " '常に confusion',\n", - " 'is this wrong?',\n", - " 'こんな situation',\n", - " 'どうしようもないの',\n", - " 'もし誰かが傷つくなら',\n", - " \"let's stop right now\",\n", - " '行かないで please',\n", - " \"don't leave me\",\n", - " 'ほんとは言いたいよ',\n", - " 'but 強がるしかないの',\n", - " 'why are you running away from this?',\n", - " 'you should be true to your feelings',\n", - " 'i say 落ちたくないの no way',\n", - " 'but is it already too late',\n", - " 'kiss kiss kiss',\n", - " '初めての this feeling',\n", - " 'kiss kiss kiss',\n", - " '止まりそうになる my heart',\n", - " '誰よりも',\n", - " '何よりも',\n", - " '感じ合ってる気がするから',\n", - " \"no i just can't stop\",\n", - " 'kiss kiss kiss',\n", - " '震える唇に',\n", - " 'kiss kiss kiss',\n", - " '最後にもう一度',\n", - " '涙味',\n", - " '噛み締めた',\n", - " '残念なタイミング',\n", - " '予想してたエンディング',\n", - " 'kiss kiss kiss',\n", - " 'every time i try to turn away',\n", - " 'kiss kiss kiss',\n", - " 'my heart feels like its gonna stop',\n", - " 'kiss kiss kiss',\n", - " \"and i just don't know why\",\n", - " 'kiss kiss kiss',\n", - " 'but i really want to see you again',\n", - " 'kiss kiss kiss',\n", - " 'am i doing the wrong thing',\n", - " 'kiss kiss kiss',\n", - " \"oh, i really don't know\",\n", - " 'kiss kiss kiss',\n", - " \"but right now, i don't care\",\n", - " 'kiss kiss kiss',\n", - " 'why are you running away from this?',\n", - " 'you should be true to your feelings',\n", - " 'i say 落ちたくないの no way',\n", - " 'but is it already too late',\n", - " 'kiss kiss kiss',\n", - " '初めての this feeling',\n", - " 'kiss kiss kiss',\n", - " '止まりそうになる my heart',\n", - " '誰よりも',\n", - " '何よりも',\n", - " '感じ合ってる気がするから',\n", - " \"no i just can't stop\",\n", - " 'kiss kiss kiss',\n", - " '震える唇に',\n", - " 'kiss kiss kiss',\n", - " '最後にもう一度',\n", - " '涙味',\n", - " '噛み締めた',\n", - " '残念なタイミング',\n", - " '予想してたエンディング',\n", - " '真夜中 泡立つ血が騒いでる',\n", - " \"i can't stop this 上向く三日月\",\n", - " '誰も知らないの somebody tell me about it',\n", - " '教えてやるよ 惹かれてる your perfume',\n", - " '思うままに!',\n", - " 'そう激しく!',\n", - " \"can't you feel me?\",\n", - " 'going crazy!',\n", - " 'this gravity 互いに feel good',\n", - " 'キツめの timing 全て見たいんだ',\n", - " '夢ならば じらし過ぎ i know you lied',\n", - " '強引だね 腰つきで引きよせる',\n", - " '鼓動が acceleration たまらない attraction',\n", - " 'excited condition もう我慢出来ない',\n", - " '感じるままに!',\n", - " 'もっと熱く!',\n", - " \"can't you feel me?\",\n", - " 'going crazy!',\n", - " '止められない oh, you take me higher',\n", - " \"からまり shake you let's fly into the night!\",\n", - " \"p・a・r・a・d・o・x i'm gonna make you stop it baby\",\n", - " \"p・a・r・a・d・o・x i'm gonna make you stop it\",\n", - " \"p・a・r・a・d・o・x i'm gonna make you keep on baby\",\n", - " 'p・a・r・a・d・o・x',\n", - " '窓枠に伸びる影から裸の彼方',\n", - " '時を刻む月灯りと数多の朝が',\n", - " '未だにまだまとわりつく貴方の最中(さなか)',\n", - " '露わな儚き頭と身体の狭間',\n", - " 'oh yeah! can you make me fly high?',\n", - " '思うままに!',\n", - " 'そう激しく!',\n", - " \"can't you feel me?\",\n", - " 'going crazy!',\n", - " 'this gravity 互いに feel good',\n", - " 'きつめの timing 全て見たいんだ',\n", - " \"p・a・r・a・d・o・x i'm gonna make you stop it baby\",\n", - " \"p・a・r・a・d・o・x i'm gonna make you stop it\",\n", - " \"p・a・r・a・d・o・x i'm gonna make you keep on baby\",\n", - " 'p・a・r・a・d・o・x',\n", - " '安室奈美恵「shine more」の歌詞',\n", - " 'check it out…',\n", - " 'music come on. you were gone',\n", - " '無言と不安の',\n", - " '理由とリアルを知ってるboth of us',\n", - " '鼓動のリズムはずっと',\n", - " '生きてる…tellin’ you why',\n", - " '会いたい i can’t tonight',\n", - " 'moon is so bright',\n", - " 'many seasons, many scenes',\n", - " 'でもclose my eyes',\n", - " 'この愛は',\n", - " '永遠にto you',\n", - " 'baby remember to shine',\n", - " '遠い日のyour mind',\n", - " '通り雨じゃない',\n", - " '尊いmany nights',\n", - " 'baby remember to shine',\n", - " 'こんなにevery time',\n", - " 'un-でも追わない',\n", - " 'believe that you’re my baby',\n", - " 'i wanna shine',\n", - " 'music come on あの記憶',\n", - " '聴いてたアナログ',\n", - " 'フレーズ繰り返す 頭の奥',\n", - " '夜明けのようにlet go',\n", - " '明日へwhy should cry',\n", - " 'あんなに泣いたのは最初で最後',\n", - " 'many reasons, many things',\n", - " '今close my eyes',\n", - " 'この愛は…oh',\n", - " 'many seasons, many scenes',\n", - " 'ねぇclose your eyes',\n", - " 'あの愛は…oh',\n", - " 'baby remember to shine',\n", - " '消えないknowing pain',\n", - " '昨日のmorning rain',\n", - " '綺麗な思い出',\n", - " 'baby remember to shine',\n", - " 'こんなにevery time',\n", - " 'un-でも追わない',\n", - " 'believe that you’re my baby',\n", - " 'everybody’s here everybody hears',\n", - " 'and nobody can’t stop music',\n", - " 'you were gone so i will go',\n", - " 'everybody’s here everybody hears',\n", - " 'and nobody can’t stop music',\n", - " 'you were gone so i will go',\n", - " '永遠にto you',\n", - " 'baby remember to shine',\n", - " '遠い日のyour mind',\n", - " '通り雨じゃない',\n", - " '尊いmany nights',\n", - " 'baby remember to shine',\n", - " '消えないknowing pain',\n", - " '昨日のmorning rain',\n", - " '綺麗な思い出',\n", - " 'baby remember to shine',\n", - " 'こんなにevery time',\n", - " 'un-でも追わない',\n", - " 'i wanna shine yeah-ya',\n", - " 'baby remember to shine',\n", - " 'あなたを忘れない',\n", - " 'un-でも追わない',\n", - " 'oh, i wanna shine more',\n", - " \"安室奈美恵「let's do the motion」の歌詞\",\n", - " 'right now, rising sun',\n", - " 'be a believer, be a dreamer',\n", - " \"let's do the motion\",\n", - " \"let's do the motion\",\n", - " \"let's do the action\",\n", - " 'feel the vibration',\n", - " 'join the revolution',\n", - " 'everybody wants see the sun',\n", - " 'everybody wants see the moon',\n", - " \"we're the motion\",\n", - " 'dangerous motion',\n", - " '廃墟の底 そこから生まれだし',\n", - " '回顧主義だけが眠りさまし',\n", - " '「ドウゾ ヨロシク」',\n", - " 'これがうわさの',\n", - " '昔誰もが よく使っていたうそ',\n", - " '革命の前夜共存しよう',\n", - " 'いつかまた細胞分裂',\n", - " 'かなりいいんじゃない?',\n", - " '何も悪くないんじゃない?',\n", - " '誰もこわれてくんじゃない',\n", - " '何に頼る訳じゃない!!',\n", - " '太いワイヤーのフェンスよじ登り',\n", - " '戦いが始まる',\n", - " '身体中が fight 叫ぶように',\n", - " '嘆くように',\n", - " '狂いそう いたく高鳴る夜',\n", - " 'i need a second',\n", - " \"and i'll be in it\",\n", - " 'i need a vision higher and higher',\n", - " 'ooh, right now!',\n", - " \"let's do the motion\",\n", - " \"let's do the action\",\n", - " 'feel the vibration',\n", - " 'join the revolution',\n", - " '光を手に入れたい resistance',\n", - " '終わりのない calculation',\n", - " 'できてるんじゃない?',\n", - " 'でてくるんじゃない?',\n", - " 'やればいいんじゃない?',\n", - " 'キラメクんじゃない?',\n", - " 'サイレンが鳴り響く時 待ち',\n", - " '磨き上げてる 銀の knife',\n", - " '空を舞うサーチライト',\n", - " '夜空彩る花火!',\n", - " 'あがるころ 奇跡わき上がる!!',\n", - " 'i need a second',\n", - " \"and i'll be in it\",\n", - " 'i need a vision higher and higher',\n", - " 'ooh, right now!',\n", - " \"lеt's do the motion\",\n", - " \"let's do the action\",\n", - " 'feel thе vibration',\n", - " 'join the revolution',\n", - " \"let's do the motion\",\n", - " '(brighter days! brighter nights!)',\n", - " \"let's do the action\",\n", - " '(brighter days! brighter nights!)',\n", - " 'feel the vibration',\n", - " '(brighter days! brighter nights!)',\n", - " 'join the revolution',\n", - " '(brighter days! brighter nights!)',\n", - " 'right now!!',\n", - " 'right now!!',\n", - " 'そんな視線で 何を期待している?',\n", - " '予想は出来ている でも応えてあげない',\n", - " '吐息がかかる 瞳を閉じて',\n", - " '今触れそうで触れないこの距離が tonight',\n", - " 'i like it',\n", - " \"悪戯に tease! how's my love?\",\n", - " '君に tease! something wrong?',\n", - " '気まぐれに tease!',\n", - " '君の 燃え上がる fire 心の desire',\n", - " 'i know you want it bad bad bad, my love',\n", - " 'i want it bad bad bad, your love',\n", - " 'you know i like it',\n", - " \"tease! i'm devious\",\n", - " '裏腹の愛が 疼いている my heart',\n", - " 'my honey, baby',\n", - " '潤んだ目が もっともっと見たくなる',\n", - " '子猫みたいな 無邪気さが堪らない',\n", - " '指先なぞる 素肌を 噛んでみたい yeah',\n", - " 'まだ刺激が欲しいと囁いて tonight',\n", - " 'i like it',\n", - " \"悪戯に tease! how's my love?\",\n", - " '君に tease! something wrong?',\n", - " '気まぐれに tease!',\n", - " '君の 燃え上がる fire 心の desire',\n", - " 'i know you want it bad bad bad, my love',\n", - " 'i want it bad bad bad, your love',\n", - " 'you know i like it',\n", - " \"tease! i'm devious\",\n", - " '裏腹の愛が 疼いている my heart',\n", - " 'my honey, baby',\n", - " 'this is so dangerous. yeah, yeah',\n", - " 'this is so dangerous. ooh',\n", - " '止められないほど 惹かれている am i?',\n", - " \"悪戯に tease! how's my love? (焦らして)\",\n", - " '君に tease! something wrong? (woo-woo-woo)',\n", - " '気まぐれに tease!',\n", - " '君の 燃え上がる fire 心の desire (woo-hu)',\n", - " 'i know you want it bad bad bad, my love (my love)',\n", - " 'i want it bad bad bad, your love (baby, your love)',\n", - " 'you know i like it',\n", - " \"tease! i'm devious\",\n", - " '裏腹の愛が 疼いている my heart',\n", - " 'my honey, baby',\n", - " 'we don’t need',\n", - " 'we don’t get the things in order',\n", - " 'no time to waste そうきっと',\n", - " '右へ 左へ turn, turning over',\n", - " 'no side でもういいよね?',\n", - " 'make a noise and louder',\n", - " 'そのセリフは柄じゃないけど いいや',\n", - " 'we will find out 飽きがくるまで',\n", - " '朝が来るまで all right',\n", - " 'we cool! what a cool sound!',\n", - " '目を閉じて鳴らすの the good song',\n", - " 'we fool! what a fool dance!',\n", - " '手を取って踊るよ anyone can’t stop',\n", - " 'cool, so fool, we two',\n", - " 'melody loops とびきりのセンスで',\n", - " 'give me your sound to dance',\n", - " 'we don’t need',\n", - " 'we don’t get the things in order',\n", - " 'no time to waste そうきっと',\n", - " '西へ 東へ 手の鳴るほうへ',\n", - " 'no side でもういいよね?',\n", - " 'ずっと響くナンバー',\n", - " 'その名前は忘れてるけど いいや',\n", - " 'we will find out? i can’t tell the end',\n", - " '朝が来るまで all right',\n", - " 'we cool! what a cool sound!',\n", - " '目を閉じて鳴らすの the good song',\n", - " 'we fool! what a fool dance!',\n", - " '手を取って踊るよ anyone can’t stop',\n", - " 'cool, so fool, we two',\n", - " 'melody first 意味なんてないよね',\n", - " '君の sound to dance',\n", - " 'make a noise and louder',\n", - " 'そのセリフは柄じゃないけど いいや',\n", - " 'we will find out 飽きがくるまで',\n", - " '朝が来るまで all right',\n", - " 'we cool! what a cool sound!',\n", - " '目を閉じて鳴らすの the good song',\n", - " 'we fool! what a fool dance!',\n", - " '手を取って踊るよ anyone can’t stop',\n", - " 'cool, so fool, we two',\n", - " 'melody loops とびきりのセンスで',\n", - " 'give me your sound to dance',\n", - " '倖田來未「won’t be long ~red cherry version~」の歌詞',\n", - " 'oly oly oly oh!',\n", - " 'yely yely yely yeah!!',\n", - " 'the up-town tokio',\n", - " \"slamin' night!!\",\n", - " 'oly oly oly oh!',\n", - " 'yely yely yely yeah!!',\n", - " 'the up-town tokio',\n", - " \"slamin' night!!\",\n", - " 'たりない頭なら、知恵を盗みゃいい',\n", - " 'ちょうじり合わすなら、',\n", - " 'うそも必要さ',\n", - " \"won't be long, won't be long\",\n", - " 'もうすぐさ、とどくまで',\n", - " \"won't be long, won't be long\",\n", - " 'あなたのためにすべて',\n", - " 'いつのまにか覚えた',\n", - " \"(da)smokin' day\",\n", - " 'もう忘れはしない、愛がtripしても',\n", - " \"won't be long, won't be long\",\n", - " 'もうすぐさ、とどくまで',\n", - " \"won't be long, won't be long\",\n", - " 'あなたのためにすべて',\n", - " '恥もかいてきた たどりつくために',\n", - " 'でもそばには あなたがいる',\n", - " '何もこわくない',\n", - " 'いつのまにかみつけた',\n", - " '(da)sun-shine day',\n", - " 'もうなくしはしない、',\n", - " '心がcrushしても',\n", - " \"won't be long, won't be long\",\n", - " 'もうすぐさ、笑えるのは',\n", - " \"won't be long, won't be long\",\n", - " 'あなたのためにすべて',\n", - " 'oly oly oly oh!',\n", - " 'yely yely yely yeah!!',\n", - " 'the up-town tokio',\n", - " \"slamin' night!!\",\n", - " 'oly oly oly oh!',\n", - " 'yely yely yely yeah!!',\n", - " 'the up-town tokio',\n", - " \"slamin' night!!\",\n", - " \"won't be long, won't be long\",\n", - " 'もうすぐさ、とどくまで',\n", - " \"won't be long, won't be long\",\n", - " 'あなたのためにすべて',\n", - " \"won't be long, won't be long\",\n", - " 'もうすぐさ、笑えるのは',\n", - " \"won't be long, won't be long\",\n", - " 'あなたのためにすべて',\n", - " 'oly oly oly oh!',\n", - " 'yely yely yely yeah!!',\n", - " 'the up-town tokio',\n", - " \"slamin' night!!\",\n", - " 'oly oly oly oh!',\n", - " 'yely yely yely yeah!!',\n", - " 'the up-town tokio',\n", - " \"slamin' night!!\",\n", - " 'stars in sky lullabyおやすみよ',\n", - " '街を食べ尽くした闇 midnight',\n", - " '愛なき街に生まれて思うことは何?',\n", - " '同じゆりかごで育ったことを',\n", - " 'いつの日から僕ら忘れてしまったの?',\n", - " '自分のことばかりで',\n", - " 'everybody working hard walking hard everyday',\n", - " 'i forgot the goal of life. oh my god',\n", - " 'what is right and what is wrong?',\n", - " 'worry about it everyday',\n", - " 'everybody lost the way but life still goes on',\n", - " 'lullaby for tokyo city',\n", - " 'おやすみ tokyo city',\n", - " 'birds in sky waking up はじまるよ',\n", - " '街を塗りつぶしたような morning croud',\n", - " '終わりなき波に揺られて思うことはなに?',\n", - " 'デカい夢抱いて育ったことを',\n", - " 'いつの日から僕ら忘れてしまったの?',\n", - " '心に嘘ばかりで',\n", - " 'everybody working hard walking hard everyday',\n", - " 'i forgot the goal of life. oh my god',\n", - " 'what is right and what is wrong?',\n", - " 'worry about it everyday',\n", - " 'everybody lost the way but life still goes on',\n", - " 'lullaby for tokyo city',\n", - " 'おやすみ tokyo city',\n", - " 'japanese',\n", - " 'watching all the',\n", - " 'watching all the',\n", - " 'watching all the girls gone by',\n", - " '照らす太陽みたい 眩しすぎるよbaby cute',\n", - " 'ボクらを誘ってすまし顔でmodel walking',\n", - " 'i like a ショートパンツ! やっぱりワンピース!',\n", - " 'i like a ロングヘアー!',\n", - " 'でもショートもpretty girl!',\n", - " 'いつだって みとれて',\n", - " 'おぼれてcrazy foolish boy',\n", - " 'だってねthere is the world',\n", - " 'thanks to amazing girl♪',\n", - " '一緒に踊ろう 笑ってよ oh baby',\n", - " 'watching all the',\n", - " 'watching all the girls go by',\n", - " 'イジワルしないで こっち向いてよ baby',\n", - " 'watching all the',\n", - " 'watching all the',\n", - " 'watching all the girls go by',\n", - " 'oh oh oh',\n", - " '強気なgirls go by',\n", - " 'oh oh oh',\n", - " '蒼い空の下で声かけたなら',\n", - " '(思い切って)',\n", - " 'ゆっくり振り向いた目もくらむような',\n", - " 'shinee girlsとびっきりさ',\n", - " 'i like a blond hair! black hair! no border!',\n", - " 'i like a sexy girl! pretty girl! cutie girl!',\n", - " 'いつだって みとれて',\n", - " 'おぼれてcrazy foolish boy',\n", - " 'だってねbeautiful girls all over the worldでしょ♪',\n", - " '一緒に騒ごう 笑ってよ oh baby',\n", - " 'watching all the',\n", - " 'watching all the girls go by',\n", - " 'ソッポ向かないで こっち向いてよ baby',\n", - " 'watching all the',\n", - " 'watching all the',\n", - " 'watching all the girls go by',\n", - " 'everything is shining',\n", - " 'you want to rock to shine',\n", - " '惚れさせてトリコにしてください',\n", - " 'ボクらをずっと照らし続けて',\n", - " '(照らし続けて)',\n", - " '一緒に踊ろう 笑ってよ oh baby',\n", - " 'watching all the',\n", - " 'watching all the girls go by',\n", - " 'イジワルしないで こっち向いてよ baby',\n", - " 'watching all the',\n", - " 'watching all the',\n", - " 'watching all the girls go by',\n", - " 'oh oh oh',\n", - " 'ボクらのgirls go by',\n", - " 'oh oh oh',\n", - " '輝き続けて',\n", - " 'blow you away!',\n", - " 'blow you away!',\n", - " 'yeah!',\n", - " \"let's get started 聞こえるbeatに\",\n", - " 'バンドのrhythmに',\n", - " '身をゆだねたら',\n", - " \"yeah! it's a party 案内するよ\",\n", - " 'take a bow どうぞ',\n", - " '皆さんこちら',\n", - " 'i got your ハート一瞬で奪うphantom',\n", - " '目疑うワザのパレード',\n", - " 'shall we dance? ゾクゾクしたいなら follow me',\n", - " \"it's a spectacle!!!!\",\n", - " 'oh!',\n", - " 'clap for me! clap for me!',\n", - " 'applauseに! applauseに!',\n", - " 'ovationに ovationに',\n", - " '今夜は',\n", - " 'すべてを捧げに',\n", - " 'アナタのために ご招待v.i.p',\n", - " 'are you ready?',\n", - " 'ほら、',\n", - " 'ここからshow time',\n", - " 'baby,ついてこれるかい?',\n", - " 'もっと',\n", - " 'oh! (oh!) oh!(oh!) oh!(oh!) oh! ooooh',\n", - " 'blow you away',\n", - " 'blow you away',\n", - " 'girl, so take you another world',\n", - " '見た事ないよな世界 oh!',\n", - " '身震いするようなentertainment 知ってるかい',\n", - " 'そう高くget lifted',\n", - " 'you worth to me',\n", - " 'どんな色に染/ま/り/た/い?',\n", - " 'oh!',\n", - " 'clap for me! clap for me!',\n", - " 'applauseに! applauseに!',\n", - " 'ovationにovationに',\n", - " '溺れて',\n", - " 'すべてを捧げに',\n", - " 'アナタのために 期待に応えに',\n", - " 'shout it loud yeah',\n", - " 'ほら、',\n", - " 'ここからshow time',\n", - " 'baby,ついてこれるかい?',\n", - " 'もっと',\n", - " 'oh! (oh!) oh!(oh!) oh!(oh!) oh! ooooh',\n", - " 'blow you away',\n", - " 'blow you away',\n", - " '今夜は 溺れて',\n", - " 'clap for me! clap for me!',\n", - " 'applauseに! applauseに!',\n", - " 'ovationに ovationに',\n", - " '今夜は',\n", - " 'すべてを捧げに',\n", - " 'アナタのために ご招待v.i.p',\n", - " 'are you ready?',\n", - " 'clap for me! clap for me!',\n", - " 'applauseに! applauseに!',\n", - " 'ovationにovationに',\n", - " '溺れて',\n", - " 'ほら、',\n", - " 'ほら、',\n", - " 'ここからshow time',\n", - " 'baby,ついてこれるかい?',\n", - " 'もっと',\n", - " 'oh! (oh!) oh!(oh!) oh!(oh!) oh! ooooh',\n", - " 'blow you away',\n", - " 'blow you away',\n", - " '黒のストッキング。純白のエプロン。そして、メイドカチューシャ。',\n", - " '萌え萌えキュン!',\n", - " 'pardon me あなたを見てると crazy',\n", - " 'suddenly あの時出逢うまで',\n", - " '寂しい気持ちはただ',\n", - " 'きまぐれに',\n", - " 'ひとの やさしさ奪う',\n", - " '悲しいone-man dance... ow!',\n", - " 'is it true',\n", - " '信じられないことよ oh baby',\n", - " 'i see you',\n", - " 'あなたに輝く my eyes',\n", - " 'wish i knew',\n", - " '心がほどけてゆく oh baby',\n", - " 'is it true',\n", - " 'あなたの腕のなか uh!',\n", - " 'wish i knew....',\n", - " 'ecchi till i die (till i die, till i die)',\n", - " 'shawty so kawaii (so kawaii, so kawaii)',\n", - " 'a-cup is just fine, with onii (onii)',\n", - " 'a-cup is just-just fine with onii (onii)',\n", - " 'ecchi till i die (till i die, till i die)',\n", - " 'shawty so kawaii (so kawaii, so kawaii)',\n", - " 'a-cup is just fine, with onii (onii)',\n", - " 'a-cup is just-just fine with onii (onii)',\n", - " 'onii-chan',\n", - " 'tu tu turu,tu tu ru turu',\n", - " 'tu tu turu,tu tu ru tu',\n", - " \"all my ladies n'my fellas sing along wit me\",\n", - " \"1 2 3 we gon' boogie\",\n", - " '誘ってみる 連れ出しに行く',\n", - " '一人でなんて部屋にいたりしていないで',\n", - " 'スペシャルな夜 終わらないparty',\n", - " 'my people up in here',\n", - " \"(com'on evybody)\",\n", - " '迎えに行くよ codillac 飛ばして',\n", - " '今日はどうしても一緒に過ごしたい',\n", - " 'out fits なんて気にしないでok',\n", - " '早く急いで',\n", - " '回り続けるプリズムが照らす',\n", - " '少し寂しい横顔にmm oh oh oh',\n", - " 'どうしようもないくらいに',\n", - " '奪われるから so i so i...',\n", - " 'i gonna be with you',\n", - " 'you got me steppin up to ya',\n", - " 'すきまもないほど cling to ya',\n", - " \"i'mma show you how to rock my body all night\",\n", - " '目と目が合う度に深まるように',\n", - " 'we gonna boogie',\n", - " '(why dont we hook up and have a good time,oh baby)',\n", - " 'step to right side,step to left side',\n", - " '見つめる瞳そらさずに踊る',\n", - " 'もっと合わせて二人のタイミング',\n", - " 'shake shake shake and pose',\n", - " '流れていく時も忘れて',\n", - " 'いっそこのまま次のステップへ',\n", - " '滑り込むのもいいかも',\n", - " 'ねえどう思う?',\n", - " 'ゆれる体に伝わる灼熱',\n", - " 'シャイな振りは止めて隠さず oh oh oh',\n", - " 'とめられないくらい',\n", - " '夢中になるから so i so i...',\n", - " 'wanna hold you',\n", - " 'you got me steppin up to ya',\n", - " 'すきまもないほど cling to ya',\n", - " \"i'mma show you how to rock my body all night\",\n", - " '目と目が合う度に深まるように',\n", - " 'we gonna boogie',\n", - " '(why dont we hook up and have a good time,oh baby)',\n", - " 'tu tu turu,tu tu turu',\n", - " 'tu tu turu,tu tu ru tu',\n", - " \"all my ladies n'my fellas sing along wit me\",\n", - " \"1 2 3 we gon' boogie\",\n", - " 'tu tu turu,tu tu turu',\n", - " 'tu tu turu,tu tu ru tu',\n", - " \"all my ladies n'my fellas sing along wit me\",\n", - " \"1 2 3 we gon' boogie\",\n", - " 'そのままテンポ',\n", - " 'くるわさないで',\n", - " 'センシュアルなモーション',\n", - " '(hey.do you like it?)',\n", - " 'babe.捕まる腕に込めるmy heart',\n", - " '(can you feel it?)',\n", - " \"let's dance! dance! dance!\",\n", - " 'you got me steppin up to ya',\n", - " 'すきまもないほど cling to ya',\n", - " \"i'mma show you how to rock my body all night\",\n", - " '目と目が合う度に深まるように',\n", - " 'we gonna boogie',\n", - " '(why dont we hook up and have a good time,oh baby)',\n", - " 'you got me steppin up to ya',\n", - " 'すきまもないほど cling to ya',\n", - " \"i'mma show you how to rock my body all night\",\n", - " '目と目が合う度に深まるように',\n", - " 'we gonna boogie',\n", - " '(why dont we hook up and have a good time,oh baby)',\n", - " 'たまに香る甘いscent',\n", - " '何気ない仕草さえも',\n", - " 'everything you do',\n", - " \"it's like a magic\",\n", - " '全てがso specialで',\n", - " 'これ以上距離なんて',\n", - " '縮めること無理なくらいに',\n", - " 'i just wanna be',\n", - " 'even closer babe',\n", - " '既に制御不能みたい',\n", - " 'when you touch me tenderly',\n", - " \"it's like i'm in outer space\",\n", - " '肌越しで聴く響く鼓動が',\n", - " 'when you look into my eyes',\n", - " 'i just fall so deep in love',\n", - " 'もっともっと深くハマってしまいそう',\n", - " \"you're my love love love love\",\n", - " 'いつだって',\n", - " \"you're my love love love love\",\n", - " 'wanna hold you kiss you hug you',\n", - " \"you're my love love love love\",\n", - " '落ち込んでも',\n", - " \"you're my love love love love\",\n", - " '包み込んでくれる',\n", - " 'a.s.a.p.今すぐ',\n", - " '会いたいの この気持ちは',\n", - " \"you're the only one\",\n", - " 'who makes me feel this way',\n", - " '今さら隠さなくてもイイでしょ?',\n", - " '少しシャイなところも',\n", - " '不器用なところさえも',\n", - " 'oh the way you talk',\n", - " 'oh the way you walk',\n", - " '全て好きかも what can i do!?',\n", - " 'when you touch me tenderly',\n", - " \"it's like i'm in outer space\",\n", - " '肌越しで聴く響く鼓動が',\n", - " 'when you look into my eyes',\n", - " 'i just fall so deep in love',\n", - " 'もっともっと深くハマってしまいそう',\n", - " \"you're my love love love love\",\n", - " 'いつだって',\n", - " \"you're my love love love love\",\n", - " 'wanna hold you kiss you hug you',\n", - " \"you're my love love love love\",\n", - " '落ち込んでも',\n", - " \"you're my love love love love\",\n", - " '包み込んでくれる',\n", - " '理解しているの',\n", - " 'ちょっと私が“love is blind”気味って…',\n", - " \"everyday and night i'm thinkin' bout you\",\n", - " '何も手につかないくらいに',\n", - " 'でも少しくらい ねぇ baby',\n", - " '溺れてみてもアリなんじゃない?',\n", - " \"i'm in the mood so just baby turn the lights down (okay!)\",\n", - " \"don't have to be shy so just baby drive me around (okay!)\",\n", - " 'ハマってしまいそう',\n", - " \"you're my love love love love\",\n", - " 'いつだって',\n", - " \"you're my love love love love\",\n", - " 'wanna hold you kiss you hug you',\n", - " \"you're my love love love love\",\n", - " '落ち込んでも',\n", - " \"you're my love love love love\",\n", - " '包み込んでくれる',\n", - " '椎名林檎「浴室」の歌詞',\n", - " '新宿のカメラ屋さんの階段を降りた茶店は',\n", - " 'ジッポの油とクリーム あんたの台詞が香 った',\n", - " '云ったでしょ?「俺を殺して」',\n", - " '今日は特別に笑ってばかりのあたしは丁度',\n", - " 'さっき一度夢で死んだあんたを仕方無く愛す',\n", - " 'どうか 見捨てたりしないで',\n", - " '洗って 切って 水の中',\n", - " '呼吸器官は冒される',\n", - " 'あたしが完全に乾くのいまきちんと見届けて',\n", - " '磨いて 裂いて 水の中',\n", - " '無重力に委される',\n", - " 'あたしが完全に溶けたらすぐきちんと召し上がれ',\n", - " 'あんたが目の前で絶えて嗚咽を止められなかった',\n", - " '何だか浮世の全て恋しくて堪 らなかった',\n", - " 'あんな夢を見させないで',\n", - " 'a scent so sweet that it got me dirty',\n", - " 'the troops to protect me were out on patrol',\n", - " 'please watch me closely and do check to see',\n", - " 'i dry out completely, i dry through and through',\n", - " 'a lie so big that it got me dirty',\n", - " 'as soon as i said it a wound opened up',\n", - " 'and when i do melt down entirely immediately, bon appetit',\n", - " 'you said it did not you? \"just do it kill me\"',\n", - " \"so wash me cut me i'm underwater\",\n", - " 'my lungs and breathing are quite affected',\n", - " 'please watch me closely and do check to see',\n", - " 'i dry out completely, i dry through and through',\n", - " 'come shine me tear me, i am underwater',\n", - " 'relying completely on zero gravity',\n", - " 'and when i do melt down entirely immediately, bon appetit',\n", - " \"i'm not afraid of a little boredom\",\n", - " 'why did the two of them ever chance to meet?',\n", - " \"i'm not afraid of a little boredom\",\n", - " 'why did the two of them ever chance to meet?',\n", - " 'i..',\n", - " 'each day we live could be our last, from now on',\n", - " 'important thing is how you live it, embrace your life',\n", - " '悲しみが溢れたら微笑んで',\n", - " 'いくつもの終わりを越えた',\n", - " \"i don't wanna stay this way\",\n", - " '止まりたくない',\n", - " 'i might be wrong (僕が間違っているのかもしれない)',\n", - " 'それでもまだ',\n", - " \"where's the end?\",\n", - " 'what is the end?',\n", - " 'so tell me how do you see me in your eyes?',\n", - " \"you see a sad look on my face, don't worry about it\",\n", - " '孤独に襲われたら頷いて',\n", - " '一緒に月の光を辿ろう',\n", - " 'i just stay a step ahead',\n", - " '見ていてほしい',\n", - " 'i might hate myself',\n", - " 'それでもまだ',\n", - " \"where's the end?\",\n", - " 'what is the end?',\n", - " \"where's the end?\",\n", - " '探し求めoh end of line',\n", - " '疲れて目を閉じる前に',\n", - " '歩みを止めるその前に',\n", - " 'i just wanna find my true self',\n", - " \"where's the end?\",\n", - " 'what is thе end?',\n", - " \"where's thе end?\",\n", - " '探し求めoh end of line',\n", - " 'no way, your deep hate',\n", - " \"it's quench doubt voice\",\n", - " 'no way, your deep hate',\n", - " 'get away, god bless no stars',\n", - " 'break me, sad grey',\n", - " 'there is my god to carry me',\n", - " 'nowhere, my sick',\n", - " 'but in this world, you need me',\n", - " '(forlorn skies)',\n", - " 'nothing to live for',\n", - " '(forlorn lights)',\n", - " 'nothing to die for',\n", - " '冷たい唇なぞる様に交わした嘘',\n", - " '音が途切れても響きだけは重く痛く残って',\n", - " '冷たい唇なぞる様に交わした嘘',\n", - " '音が途切れても響きだけは重く痛い',\n", - " '冷たい言葉で満たして',\n", - " '乾いた心を癒して',\n", - " '風なびく黄金の羽 軽やかに踊る様',\n", - " '揺れる穂に包まれて 蘇るあの光景',\n", - " '緋色の絨毯は 赤く頬染めてゆく',\n", - " '君の横顔に触れて recall me that sight',\n", - " '風なびく黄金の羽 軽やかに駈けてゆく',\n", - " '揺れる穂に包まれて 蘇るあの予感',\n", - " \"she's waiting to see the light ephemeral world\",\n", - " \"she's dreaming to see the light ephemeral world\",\n", - " 'i see you in my heart beautiful feeling',\n", - " 'i see you in my world beautiful feeling',\n", - " '夏草の揺れる丘 軽やかに駈けてゆく',\n", - " '雨の後の余韻に あなたを想い留める',\n", - " '空想と現実の 間で揺れる記憶',\n", - " \"僅かな光を辿り i'm looking for you\",\n", - " \"she's waiting to see the light ephemeral world\",\n", - " \"she's dreaming to see the light ephemeral world\",\n", - " 'i see you in my heart beautiful feeling',\n", - " 'i see you in my world beautiful feeling',\n", - " '風なびく黄金の羽 軽やかに駈けてゆく',\n", - " '揺れる穂に包まれて 蘇るあの予感',\n", - " '緋色の絨毯は 赤く頬染めてゆく',\n", - " '君の横顔に触れて recall me that sight',\n", - " \"she's waiting to see the light ephemeral world\",\n", - " \"she's dreaming to see the light ephemeral world\",\n", - " 'i see you in my heart beautiful feeling',\n", - " 'i see you in my world beautiful feeling',\n", - " \"yeah, we back again, let's go\",\n", - " 'throw ya fist in the air now, come on',\n", - " 'throw ya fist in the air',\n", - " '不屈のplayer 跳ね除ける play back',\n", - " '一度しかない tonight',\n", - " '決してブレない 見てるのは way up',\n", - " '試されるなら smack it down',\n", - " '諦めたら終わりの game',\n", - " 'ゲンカイなんて out of my way',\n", - " 'nobody gonna stop me now',\n", - " '迷わずただ scream & shout',\n", - " '超えるボーダー 全て blow up',\n", - " 'この瞬間 everything... my everything 燃やそう',\n", - " 'もっと上に (alright)',\n", - " \"外すブレーキ (let's ride)\",\n", - " '目指すは前人未到の ground',\n", - " '高く高く in the air 拳上げて hold up',\n", - " 'stand up',\n", - " 'throw ya fist up to the sky',\n", - " 'stand up',\n", - " \"come on come on let's go high\",\n", - " 'just get up 光差す方に',\n", - " \"どこまでも we don't stop\",\n", - " 'さぁ stand up (come on stand up)',\n", - " '突き進んでいく my way',\n", - " 'throw ya fist in the air now, come on',\n", - " 'throw ya fist in the air',\n", - " '立ち止まれば その時点でエラー',\n", - " '下を向く暇はない',\n", - " '答えなら明白 確実に raise up',\n", - " '乗りこなしてく up & down',\n", - " 'タフに切り拓く my days',\n", - " '越されても we do it again',\n", - " 'nobody gonna stop me now',\n", - " 'まだまだ gotta push it up',\n", - " '見える closer gotta be stronger',\n", - " \"あともう少し... もう少し i'm looking for\",\n", - " 'もっと上に (alright)',\n", - " ...]},\n", - " 'r-b': {'meta': {'train_data': ['(ラップ)yo shorty',\n", - " 'the way we flow is オシャレ',\n", - " 'you better watch yourself!',\n", - " 'yo baller, we about to hit yo 頭',\n", - " \"and that's how we gon' party\",\n", - " '(ラップ)yo shorty',\n", - " 'the way we flow is オシャレ',\n", - " 'you better watch yourself!',\n", - " 'yo baller, we about to hit yo 頭',\n", - " 'uh huh, no doubt',\n", - " 'i really really like it, let me show you',\n", - " 'baby this is how we do',\n", - " 'だからもっと(遅くまで)もっと',\n", - " 'あそびたいんじゃない',\n", - " 'i really really like it, let me tell you',\n", - " '何言われても やりたいことまだあるから',\n", - " \"you ain't going home tonight\",\n", - " 'i like it (you like it)',\n", - " 'he likes it (she likes it)',\n", - " 'we like it (they like it)',\n", - " '朝まで かえさない',\n", - " 'i love it (you love it)',\n", - " 'he loves it (she loves it)',\n", - " 'we love it (they love it)',\n", - " 'そのままjust work that thang',\n", - " \"(ラップ)重い腰上げなよ、it's been a whileお待ちどおさま\",\n", - " 'we back to holla、まだ行くぜ、待たせたな',\n", - " 'go pop-pa-pop-pop 感じてるなら',\n", - " 'say what-wa-what-what! きょうの目玉は',\n", - " 'extraordinary man、仮眠とるヒマもねえ',\n", - " 'ワキガよりfunkyです、並外れてる、セン?',\n", - " \"うなぎ上り、ノリノリi'm rollin'\",\n", - " 'yoぞうきんよりもdown and dirtyなstyleで阻止する',\n", - " \"stop! the hatin' and the negativity\",\n", - " 'and slow down…そんなやつはお呼びじゃねえ…だから',\n", - " 'stop! わからなくてもfollow me',\n", - " 'here we go now! (oh my!) beats beふくよか',\n", - " \"今日もまたi'm here alone\",\n", - " 'まだ誰からも電話ないし',\n", - " 'でも tonight 出かけたい',\n", - " 'そしてやな事leave it behind',\n", - " \"彼女's in the front 手を上げて\",\n", - " '周り気にしないで',\n", - " \"イケメン's in the back 声上げて 朝まで騒いで\",\n", - " \"今夜はparty time, baby can't you see\",\n", - " '楽しみに来たんだし',\n", - " '明日の事はforgetしてもいいよ',\n", - " 'i really really like it, let me show you',\n", - " 'baby this is how we do',\n", - " 'だからもっと(遅くまで)もっと',\n", - " 'あそびたいんじゃない',\n", - " 'i really really like it, let me tell you',\n", - " '何言われても やりたいことまだあるから',\n", - " \"you ain't going home tonight\",\n", - " \"夜も 明け it's time to go\",\n", - " \"でも まだ i'm in the mood so 踊ろう\",\n", - " 'あと one more 曲をplay',\n", - " 'してよ追い出されるまで',\n", - " '(ラップ)ベロアのジャージ rock a fat gold じゃらじゃら',\n", - " 'stars オシャレ泥棒 the fashionista',\n", - " '一粒300meter、俺等leaders',\n", - " 'これ保証、guaranteed to rock the show',\n", - " \"hey yo i stash mo' cash flow私の 活動\",\n", - " 'asteroid peopleの心 コチョコチョ',\n", - " \"oh my…mr.dj won't you rewind(yoクリ!)\",\n", - " 'ごめんあそばせ、i bust it、そう朝まで',\n", - " \"if you feel what i'm sayin' then この指止まれ\",\n", - " 'ow! supreme イケテすぎ committee',\n", - " 'そこのfine君、少してれ気味',\n", - " '全てgimme gimme! すでにseventeen',\n", - " 'yo r-e-s-p-e-c-t',\n", - " \"どんな感じ?tell me what's the issue?\",\n", - " 'ここの水甘い しかたがない we so fly!',\n", - " 'the boys look soooo good (next!)',\n", - " '常に逃げてるfrom the press (yes!)',\n", - " \"it's クリfrom the hama、\",\n", - " 'm-flo bring the drama',\n", - " 'who shot ya? 知らねえやつあ、',\n", - " 'go ask your mama',\n", - " '(ラップ)yo shorty',\n", - " 'the way we flow is オシャレ',\n", - " 'you better watch yourself!',\n", - " 'yo baller, we about to hit yo 頭',\n", - " 'uhhuh',\n", - " '(ラップ)yo shorty',\n", - " 'the way we flow is オシャレ',\n", - " 'you better watch yourself!',\n", - " 'yo baller, we about to hit yo 頭',\n", - " 'uh huh, no doubt',\n", - " 'strobelight 照らしてる you and me',\n", - " '今日からmore than 友達',\n", - " '時間も忘れるくらい',\n", - " 'keep me moving to your beat',\n", - " 'make you say 「ooh wee!」',\n", - " 'when i hit the scene',\n", - " 'shine しに来たんだし',\n", - " 'つまらないことはforgetしてもいいよ',\n", - " 'i really really like it、let me tell you',\n", - " 'これからがいいとこ',\n", - " \"初めてでも it don't matter so\",\n", - " 'そのまま act like you know',\n", - " 'i really really like it, let me show you',\n", - " 'baby this is how we do',\n", - " 'だからもっと(遅くまで)もっと',\n", - " 'あそびたいんじゃない',\n", - " 'i really really like it, let me tell you',\n", - " '何言われても やりたいことまだあるから',\n", - " \"you ain't going home tonight\",\n", - " 'i like it (you like it)',\n", - " 'he likes it (she likes it)',\n", - " 'we like it (they like it)',\n", - " \"まだまだdon't hit the lights\",\n", - " 'i love it (you love it)',\n", - " 'he loves it (she loves it)',\n", - " 'we love it (they love it)',\n", - " \"終わらないthis party's vibe\",\n", - " 'i just wanna be myself',\n", - " 'そう簡単に首を縦には振らないの(no!!)',\n", - " '自分のやりたいように 動いてなきゃ',\n", - " 'どうも気が済まない 言いなりは嫌!',\n", - " 'なのに 君の前では何故 別人に変わったみたいに',\n", - " 'いい子ちゃんになりたくなるわ',\n", - " \"whenever you're beside me...\",\n", - " 'all i can say is...',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes!! my man...',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes!! my man...',\n", - " '“yes.” 君の為なら',\n", - " '“yes.” いつでも言うわ',\n", - " 'just wanna be real. みんなは言うわ',\n", - " '宏実は頑固 言う事聞かない(ワガママね)',\n", - " '伝えたい事も 見せたいものも溢れる程',\n", - " '届けたいだけなのに baby',\n", - " '君からの説教なら',\n", - " 'お膝抱えて 聞きたいの ダメな私をねぇ叱って…',\n", - " \"whenever you're beside me\",\n", - " 'all i can say is...',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes!! my man...',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes!! my man...',\n", - " '“yes.” 君の為なら',\n", - " '“yes.” いつでも言うわ',\n", - " 'when i come to you the only thing',\n", - " 'that i can say is “yes, yes.”',\n", - " '君にだけなら誠実 誰よりも従順に',\n", - " '“yes, yes.”',\n", - " 'when i come to you the only thing',\n", - " 'that i can say is “yes, yes.”',\n", - " '君にだけなら誠実 誰よりも従順に',\n", - " '“yes, yes.”',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes!! my man...',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes!! my man...',\n", - " '“yes.” 君の為なら',\n", - " '“yes.”',\n", - " '“yes.” いつでも言うわ',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes!! my man...',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes!! my man...',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes!! my man...',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes, yes, my man',\n", - " 'yes!! my man...',\n", - " '倖田來未「feel」の歌詞',\n", - " '車の中そっと',\n", - " '髪をなでてくれた',\n", - " '君の手のぬくもり',\n", - " '今胸を熱くしてく',\n", - " '二人だけの空間',\n", - " '秘密の時間(トキ)がそっと',\n", - " '走り出す気持ち',\n", - " '私を置いたままで・・・',\n", - " 'why tell me why',\n", - " '何度も君からのmailを',\n", - " '読み返しても不安が襲う',\n", - " 'why tell me why',\n", - " '君への想い',\n", - " '言葉なんかで伝えられないから',\n", - " 'now i know the way that i take the music',\n", - " 'you know something happened and dancing inside me',\n", - " 'yes i want you to feel my heart',\n", - " 'close your eyes',\n", - " 'feel it feel it feel it',\n", - " 'remember everything',\n", - " 'yes the way that i take the music',\n", - " 'you know something happened and dancing inside me',\n", - " \"feeling free and just close to me that's all\",\n", - " \"now you know what i'm saying\",\n", - " \"it's easy thing to get my feel\",\n", - " '「どうすればいいの?」',\n", - " 'また君を困らせてる',\n", - " '本当は君とこのまま',\n", - " '一緒に居たいだけの口実・・・',\n", - " '無器用なせいだね',\n", - " '本当の気持ちなんて簡単に伝わらない',\n", - " 'それが恋愛なのかな?',\n", - " 'why tell me why',\n", - " 'お揃いでつけてる指輪があるのに',\n", - " 'why tell me why',\n", - " 'つまらないことで機嫌悪くして後悔で',\n", - " 'now i know the way that i take the music',\n", - " 'you know something happened and dancing inside me',\n", - " 'yes i want you to feel my heart',\n", - " 'close your eyes',\n", - " 'feel it feel it feel it',\n", - " 'remember everything',\n", - " 'yes the way that i take the music',\n", - " 'you know something happened and dancing inside me',\n", - " \"feeling free and just close to me that's all\",\n", - " \"now you know what i'm saying\",\n", - " \"it's easy thing to get my feel\",\n", - " '「これからもずっと一緒にいようね」',\n", - " '素直に言えた日',\n", - " '君からの返事は「いつもそばに居るよ」',\n", - " 'when you walking to the door',\n", - " \"i' m looking for your next door\",\n", - " '目から知るdaylight',\n", - " '肌で知るcold night',\n", - " '同じように君感じていたい (daylight)',\n", - " 'i wanna know i wanna know',\n", - " '未だ知らない 暗号',\n", - " 'will you stay?',\n", - " 'このままkeeping',\n", - " 'tell me what are you thinking?',\n", - " \"you'd better 君にplug in\",\n", - " '泳ぐシナプスのpool',\n", - " \"it's so good good way\",\n", - " 'feel like dreaming',\n", - " '君のなかをcrusing',\n", - " 'you say you say you say',\n", - " 'hate it like it move it take it',\n", - " '全て 集め collection',\n", - " '迷う direction',\n", - " '僕のimage',\n", - " '君の持つimageとをblending',\n", - " '鳴り響くようなmusic',\n", - " '言葉では言えないfeeling',\n", - " 'all around the sea like all around the sea',\n", - " 'このままdreaming このままdreaming',\n", - " \"宇宙船みたいに i can't feel the gravity\",\n", - " 'もう溶け合うvision まるでillusion',\n", - " 'get off the ground down like that',\n", - " '触れて知る正解',\n", - " '潜れば明解',\n", - " 'どこまでも積み重ね停滞',\n", - " 'i wanna go i wanna go',\n", - " '未だ知らない 邂逅',\n", - " 'will you stay?',\n", - " 'このままwaving',\n", - " 'i know you are feeling',\n", - " 'you got it 君にplug in',\n", - " '泳ぐシナプスのpool',\n", - " \"it's so good good way\",\n", - " 'what a wonderful な stimulation!',\n", - " '脳内は自由に',\n", - " '理性の枷外せ',\n", - " 'hate it like it 交換 多幸感',\n", - " '前へ 深く connection',\n", - " '心 reaction',\n", - " '僕のimage',\n", - " '君の持つimageとblending',\n", - " '鳴り響くようなmusic',\n", - " 'ことばでは言えないfeeling',\n", - " 'all around the sea like all around the sea',\n", - " 'このままdreaming このままdreaming',\n", - " '僕らはdreaming',\n", - " \"宇宙船みたいに i can't feel the gravity\",\n", - " 'もう溶け合うvision まるでillusion',\n", - " 'get off the ground down like that',\n", - " 'just be friends; all we gotta do',\n", - " \"just be friends; it's time to say goodbye\",\n", - " 'just be friends; all we gotta do',\n", - " 'just be friends; just be friends...',\n", - " '浮かんだんだ昨日の朝早くに',\n", - " '割れたグラスかき集めるような',\n", - " 'これは一体なんだろう切った指からしたたる滴',\n", - " '僕らはこんなことしたかったのかな',\n", - " '分かってたよ心の奥底では 最も辛い選択がベスト',\n", - " 'それを拒む自己愛と結果自家撞着の繰り返し',\n", - " '僕はいつになれば言えるのかな',\n", - " '緩やかに朽ちてゆくこの世界で足掻く僕の唯一の活路',\n", - " '色褪せた君の微笑み刻んで栓を抜いた',\n", - " '声を枯らして叫んだ反響残響空しく響く',\n", - " '外された鎖のその先はなにひとつ残ってやしないけど',\n", - " 'ふたりを重ねてた偶然暗転断線儚く千々に',\n", - " '所詮こんなものさ呟いた枯れた頬に伝う誰かの涙',\n", - " 'all we gotta do; just be friends',\n", - " \"it's time to say goodbye; just be friends\",\n", - " 'all we gotta do; just be friends',\n", - " 'just be friends just be friends...',\n", - " 'the night before, i realized inside my lonely heart',\n", - " 'as i am watching petals fall into my open hands',\n", - " 'our love is like a rose in bloom the beauty is just so fleeting',\n", - " 'i wish that we could stop the time together just this once',\n", - " \"remember now, it's there inside, the season that we met\",\n", - " 'the gentle smile you gave to me still lingers in my head',\n", - " \"but it's time to let you go, it's a new page in our storybook\",\n", - " 'the days are past, our hearts were young',\n", - " 'we were never meant to be',\n", - " 'all of the promises we never ever meant to keep',\n", - " \"nothing is changing, there's nothing to talk about\",\n", - " 'even though i love you, even though i need you',\n", - " \"it's time for me to say\",\n", - " 'the rain the pours inside of my broken heart',\n", - " 'an emptiness that stretches forever inside of me',\n", - " \"i thought i knew what i'd be facing when you walk away\",\n", - " \"but every inch of me's screaming against the pain that's inside\",\n", - " 'now all these scars that remain between us',\n", - " 'unraveling the memories',\n", - " 'we tried so hard to forget',\n", - " 'cause this could be the very moment we say our goodbyes',\n", - " 'we take a step and try to move on, there is no turning back',\n", - " 'just one more time, i pray just more time',\n", - " 'that if only i could return to those days',\n", - " \"i'd sacrifice everything that i have now\",\n", - " 'just to feel the warmth of your smile again',\n", - " '声を枯らして叫んだ反響残響空しく響く',\n", - " '外された鎖のその先はなにひとつ残ってやしないけど',\n", - " 'ふたりを繋いでた絆綻び解け日常に消えてく',\n", - " 'さよなら愛した人ここまでだもう振り向かないで歩き出すんだ',\n", - " 'これでおしまいさ',\n", - " 'just be friends; all we gotta do just be friends',\n", - " \"it's time to say goodbye\",\n", - " '触れてみたい 嗅いでみたい',\n", - " '君の空気 and heart is make high time',\n", - " '身体の芯まで 燃やしてみたい',\n", - " \"時が止まって be stoned it's so cool\",\n", - " 'everything is green 風を掴める',\n", - " 'もっと高い所にいたい',\n", - " 'silverのかおり 頭が冴える',\n", - " '鮮やかな色で塗り潰す',\n", - " '塗り潰す 塗り潰す',\n", - " \"i'm so cool he's so cool she's so cool\",\n", - " 'we cool and you?',\n", - " \"i'm so cool he's so cool she's so cool\",\n", - " 'we cool and you?',\n", - " '赤い光の 溢れる部屋で',\n", - " 'happy brothers get together with m.r',\n", - " 'grindしたら 心たかぶる',\n", - " 'please let me stand next your fire, jimi',\n", - " '吐息が響く 目線を交わす',\n", - " 'こぼれるsmile a-ha-ha-ha',\n", - " 'いつも以上に 繋がり合える',\n", - " 'oh, let me go great kingdom throne',\n", - " 'kingdom throne, kingdom throne',\n", - " \"i'm so cool he's so cool she's so cool\",\n", - " 'we cool and you?',\n", - " \"i'm so cool he's so cool she's so cool\",\n", - " 'we cool and you?',\n", - " 'pre-hook:',\n", - " \"baby i'm tryna recover our relationship\",\n", - " 'こんな意味ない口論 i never wanna fight like this',\n", - " \"don't you know why i'm tryna recover our relationship\",\n", - " 'baby i wish you to realize it 毎週同じ言い争い',\n", - " 'verse1:',\n", - " 'こんな風に重い空気',\n", - " '感じたのいつからだろう',\n", - " '見つめ合えばちょっとくらいなら',\n", - " 'すれ違い平気だった(今はもう)',\n", - " '繋いでた手は今',\n", - " \"嘘みたいでboy i'm gettin' tired\",\n", - " 'このわだかまりoh baby please tell me why',\n", - " 'このままじゃ解消せず',\n", - " 'pre-hook:',\n", - " \"baby i'm tryna recover our relationship\",\n", - " 'こんな意味ない口論 i never wanna fight like this',\n", - " \"don't you know why i'm tryna recover our relationship\",\n", - " 'baby i wish you to realize it 毎週同じ言い争い',\n", - " 'hook:',\n", - " '何度も何度も何度もそう',\n", - " 'その手を離そうとしたけれど',\n", - " \"don't you know i don't want to lose your love\",\n", - " 'we have to be strong, we gotta stay together',\n", - " '中身のない意地固い絆',\n", - " 'どっちが大事? (ねぇ教えて)',\n", - " 'promise, pair-ring, our relationship',\n", - " 'how can i, how can i recover it',\n", - " 'verse2:',\n", - " \"it's more precious than anything when we're alone\",\n", - " 'いつも一緒に聴いたour favorite love song',\n", - " 'ねえどうして亀裂埋めれずもうすぐ消える全部',\n", - " 'そんな結末はいや',\n", - " \"まるで別人you're such a lier\",\n", - " \"胸の温もりoh baby tell me it's real?\",\n", - " '2年前のあなたは何処?',\n", - " 'pre-hook:',\n", - " \"baby i'm tryna recover our relationship\",\n", - " 'こんな意味ない口論 i never wanna fight like this',\n", - " \"don't you know why i'm tryna recover our relationship\",\n", - " 'baby i wish you to realize it 毎週同じ言い争い',\n", - " 'hook:',\n", - " '何度も何度も何度もそう',\n", - " 'その手を離そうとしたけれど',\n", - " \"don't you know i don't want to lose your love\",\n", - " 'we have to be strong, we gotta stay together',\n", - " '中身のない意地固い絆',\n", - " 'どっちが大事? (ねぇ教えて)',\n", - " 'promise, pair-ring, our relationship',\n", - " 'how can i, how can i recover it',\n", - " 'bridge:',\n", - " \"baby i don't know where the hell did we go wrong?\",\n", - " 'we got no communication',\n", - " '答えを一緒に探していたはずなのに',\n", - " '繋いだ手離して全て',\n", - " '記憶から消すことなど出来ない',\n", - " 'how can i do it, how can i do it',\n", - " 'how can i recover it',\n", - " 'hook:',\n", - " '何度も何度も何度もそう',\n", - " 'その手を離そうとしたけれど',\n", - " \"don't you know i don't want to lose your love\",\n", - " 'we have to be strong, we gotta stay together',\n", - " '中身のない意地固い絆',\n", - " 'どっちが大事? (ねぇ教えて)',\n", - " 'promise, pair-ring, our relationship',\n", - " 'how can i, how can i recover it',\n", - " 'ending:',\n", - " 'our days, our love, our promise',\n", - " 'our words, our hearts, our pair-ring',\n", - " 'our time, our kiss, our memories',\n", - " 'how can i, how can i recover it',\n", - " 'hey sweetie boy',\n", - " 'あまり焦らないでいい like a candy',\n", - " 'あまく ゆるく 語るだけでいい like a tasty cherry',\n", - " 'ゆっくり時間かけてみて 気持ち込めて突然',\n", - " '離さないで do your way, love drip down from us',\n", - " '言葉なんかじゃ伝わらない 見つめ合うだけじゃ物足りない',\n", - " '分かるでしょ want you to take off my lip gloss',\n", - " 'to take off my all oh oh oh',\n", - " '「愛してる」じゃ伝えきれない 手の平の熱じゃ物足りない',\n", - " '分かるでしょ want you to take off my all',\n", - " \"(i i i i i i) can't stop do it again\",\n", - " 'hey spicy boy 少し力づくでいい like a curry',\n", - " '辛く 強く 話すだけでいい like a tasty kimchee',\n", - " 'ぜんぶをゆだねさせて 思うがまま突然',\n", - " '壊さないで do your way, love drip down from us',\n", - " '言葉なんかじゃ伝わらない 見つめ合うだけじゃ物足りない',\n", - " '分かるでしょ want you to take off my lip gloss',\n", - " 'to take off my all, oh oh oh',\n", - " 'じゃ伝えきれない 手の平の熱じゃ物足りない',\n", - " '分かるでしょ want you to take off my all',\n", - " \"(i i i i i i) can't stop do it again\",\n", - " \"everybody say 'j' , can you hear me say a?\",\n", - " \"さぁ皆で 's' all my bitches say yes\",\n", - " \"motherfucker say 'm' all my boys say 'i'\",\n", - " \"everybody say 'n' 'e' just kiss me baby\",\n", - " \"everybody say 'j' can you hear me say 'a'\",\n", - " \"さぁ 皆で 's'\",\n", - " 'i am the best, yes! do you want my lips?',\n", - " 'should i shake my hips?',\n", - " 'i want you to kiss my l.i.p.s',\n", - " '言葉なんかじゃ伝わらない 見つめ合うだけじゃ物足りない',\n", - " '分かるでしょ want you to take off my lip gloss',\n", - " 'to take off my all, oh oh oh',\n", - " '「愛してる」じゃ伝えきれない 手の平の熱じゃ物足りない',\n", - " '分かるでしょ want you to take of my all',\n", - " \"(i i i i i i) can't stop do it again!\",\n", - " \"everybody say 'j' can you hear me say 'a'\",\n", - " \"さぁ皆で 's' all my bitches say yes\",\n", - " \"motherfucker say 'm' all my boys say 'i'\",\n", - " \"every body say 'n' 'e' just kiss me baby\",\n", - " \"everybody say 'j' can you hear me say 'a'\",\n", - " \"さぁ 皆で 's'\",\n", - " \"(i i i i i i) can't stop do it again!\"]},\n", - " 'data': ['i wanna love i wanna touch',\n", - " 'can you feel me through the night? i make you mine',\n", - " 'かじかむその手を離さぬように握るよ',\n", - " '去年よりも寒い冬になると 朝のニュースでは言っていたけど',\n", - " '凍える夜でも二人なら i will make you alright',\n", - " '寒くはない',\n", - " \"so be my girlfriend it's gonna be so fun\",\n", - " '今宵 雨が雪に変わるから 転ばぬように二人で歩こう',\n", - " 'cause you are you are the only one for me baby',\n", - " \"every night i'll get you love\",\n", - " '冷めない愛で誰よりも温めてあげる',\n", - " \"every morning i'll give a kiss\",\n", - " '目覚めた時から誰よりも笑わせてあげる',\n", - " 'i wanna see your everything',\n", - " \"i will never let you down let's start it now\",\n", - " 'このまま二人で遠くの街で暮らそう',\n", - " '今も忘れられない恋の痛みも 癒えることのない心の傷も',\n", - " 'これからは僕にあずけてよ i can take it away',\n", - " 'もう独りじゃない',\n", - " \"so be my girlfriend it's gonna be so fun\",\n", - " '今宵 雨が雪に変わるから 転ばぬように二人で歩こう',\n", - " 'cause you are you are the only one for me baby',\n", - " \"every night i'll get you love\",\n", - " '冷めない愛で誰よりも温めてあげる',\n", - " \"every morning i'll give a kiss\",\n", - " '目覚めた時から誰よりも笑わせてあげる',\n", - " 'snow is falling, let me love you',\n", - " 'i will make you make you so happy',\n", - " 'i will stand by you forever',\n", - " 'i will make you make you so happy',\n", - " \"so be my girlfriеnd it's gonna be so fun\",\n", - " '今宵 雨が雪に変わるから 転ばぬように二人で歩こう',\n", - " 'cause you are you arе the only one for me baby',\n", - " \"every night i'll get you love\",\n", - " '冷めない愛で誰よりも温めてあげる',\n", - " \"every morning i'll give a kiss\",\n", - " '目覚めた時から誰よりも笑わせてあげる',\n", - " 'snow is falling, let me love you',\n", - " 'i will make you make you so happy',\n", - " 'i will stand by you forever',\n", - " 'i will make you make you so happy',\n", - " '倖田來未「atomic energy」の歌詞',\n", - " 'baby, baby',\n", - " 'baby, baby...',\n", - " '今日も独り朝が来るまで 眠れそうにないよ',\n", - " 'ベッドの中で思い出している oh darling 君のコトを',\n", - " 'i want you back',\n", - " 'もう一度だけ just give me one more chance',\n", - " \"let me tell you baby i'm sorry\",\n", - " '戻りたいよ 君との愛しい朝に',\n", - " \"cause i love you baby i'm sorry\",\n", - " '戻れるなら 他には何も要らない oh darling',\n", - " 'カラダだけじゃ満たせないモノを君は持ち合わせているのに',\n", - " 'あの日の僕はどうかしていたよ oh darling i wanna say sorry',\n", - " 'i need your love',\n", - " '君の理想に近づくから',\n", - " \"let me tell you baby i'm sorry\",\n", - " '戻りたいよ 君との愛しい朝に',\n", - " \"cause i love you baby i'm sorry\",\n", - " '償うから アナタのそばにいさせて',\n", - " 'i really want you back i really want you back',\n", - " 'i really want you back just give me a second chance',\n", - " 'i really want you back i really want you back',\n", - " 'i really want you back just give me a second chance',\n", - " '許して欲しいとは言わない でも必要なんだ',\n", - " '君がいなきゃ生きていけない',\n", - " \"i'm going crazy baby i'm feeling broken down\",\n", - " 'please call me back',\n", - " \"let me tell you baby i'm sorry\",\n", - " '戻りたいよ 君との愛しい朝に',\n", - " \"cause i love you baby i'm sorry\",\n", - " '戻れるなら 他には何も要らない',\n", - " \"let me tell you baby i'm sorry\",\n", - " '戻りたいよ 君との愛しい朝に',\n", - " \"cause i love you baby i'm sorry\",\n", - " '償うから アナタのそばにいさせて oh darling',\n", - " 'i really want you back i really want you back',\n", - " 'i really want you back just give me a second chance',\n", - " 'i really want you back i really want you back',\n", - " 'i really want you back just give me a second chance',\n", - " 'we are treasure, we are forever',\n", - " '共に未来を描くのさ',\n", - " 'we are treasure, we all together',\n", - " 'memories memories make your memories',\n", - " 'あの丘めがけ走り抜けよう',\n", - " '目指すなら何処へでもいけるさ',\n", - " '振り返らず未来を見据えて',\n", - " \"let's get together and run\",\n", - " 'let me try try try it again one more time',\n", - " '間違っていても後悔はしない',\n", - " 'if you wanna make, make your smile one more night',\n", - " 'i believe the way we go',\n", - " 'because',\n", - " 'we are, we are treasurе, we are forevеr',\n", - " '共に未来を描くのさ',\n", - " 'we are treasure, we all together',\n", - " 'memories memories make your memories',\n", - " '今からでも遅くはないから',\n", - " '秘めてたもの曝け出してくれ',\n", - " '眩しいぐらい光解き放て',\n", - " \"let's get together and shine\",\n", - " 'let me try try try it again one more time',\n", - " 'つまずいたくらいなら問題ない',\n", - " 'if we could be, be the one, much more fun',\n", - " 'i believe the way we go',\n", - " 'because',\n", - " 'we are, we are treasure, we are forever',\n", - " '君と夢をみたいから',\n", - " 'we are treasure, we all together',\n", - " '胸の奥に刻むのさ',\n", - " 'you are not alone',\n", - " 'you are not alone',\n", - " 'you are not alone',\n", - " 'make your memories',\n", - " '<×2>',\n", - " '大切なモノでも 無くしてしまうから',\n", - " '信じたモノだけは 離さずに抱えて',\n", - " '僕らはこの先も独りじゃないから',\n", - " 'i believe that i could be the one',\n", - " \"i'm gonna sing for my lover, sing for my pleasure\",\n", - " 'sing for my memories',\n", - " 'because',\n", - " 'we are treasure, we are forever',\n", - " '共に未来を描くのさ',\n", - " 'we are treasure, we all together',\n", - " '共に今を生きるのさ',\n", - " 'we are, we are treasure, we are forever',\n", - " '君と夢をみたいから',\n", - " 'we are treasure, we all together',\n", - " '胸の奥に刻むのさ',\n", - " 'you are not alone',\n", - " 'you are not alone',\n", - " 'you are not alone',\n", - " 'make your memories',\n", - " 'you are not alone',\n", - " 'you are not alone',\n", - " 'you are not alone',\n", - " 'make your memories']},\n", - " 'rap': {'meta': {'train_data': [\"yo, yo, what you talkin' 'bout? (what?)\",\n", - " \"yo, what you talkin' 'bout?\",\n", - " \"waht, ayy, let's go!\",\n", - " \"we talkin' 'bout bitches and money (bitches and money)\",\n", - " \"we talkin' 'bout bitches and money (bitches and money)\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " '大金と女の子たち (ayy)',\n", - " '大金と女の子たち',\n", - " '大金と女の子たち',\n", - " \"we talkin' 'bout bitches and money (woo!)\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " 'bitches and money, ayy',\n", - " \"we talkin' 'bout bitches and money\",\n", - " 'bitches and money, ayy',\n", - " '大金と女の子たち (bitches and money)',\n", - " '大金と女の子たち',\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " 'boys jealous looking so ugly',\n", - " 'six street, yeah, we party (party)',\n", - " 'open it shit up, we mosh pit',\n", - " 'take a flight by jet blue',\n", - " \"just touch down pull wit' bentley coupe\",\n", - " 'in london spend all my euro (euro)',\n", - " 'check my poster out in soho',\n", - " \"i sippin' henney on the rock\",\n", - " \"i sippin' henney on the rock\",\n", - " '巡演到美国我工作的时候也感觉我像在度假',\n", - " 'do not disturb',\n", - " \"ain't no time for your turn\",\n", - " 'ice so freezing got me rocking my fur',\n", - " \"she said i'm such a jerk\",\n", - " '对了的 照这个样子做对了的',\n", - " '在看一下在坐的废物些',\n", - " '在我面前永远是脆弱的',\n", - " '对了的 照这个样子做对了的',\n", - " '在看一下在坐的废物些',\n", - " '在我面前永远是脆弱的',\n", - " 'sheesh!',\n", - " \"we talkin' 'bout bitches and money\",\n", - " 'bitches and money, ayy',\n", - " \"we talkin' 'bout bitches and money\",\n", - " 'bitches and money, ayy, woo',\n", - " '大金と女の子たち (bitches and money)',\n", - " '大金と女の子たち',\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " 'お金と女のことが好き',\n", - " '裸の動画送ってくるし',\n", - " '体綺麗で顔も美人',\n", - " '100万以上の時給を稼ぎ',\n", - " 'すぐに使い車2台',\n", - " 'いつまでも欲のかたまり',\n", - " '馬鹿に付ける薬はない',\n", - " 'なんで君hoe達にやる為払う?',\n", - " 'アフターパーティのクラブ',\n", - " 'ビッチズやりたがる',\n", - " 'vipん中に花火つくシャンパンボトル',\n", - " '数分で手にする誰かの一ヶ月分',\n", - " \"let's go!\",\n", - " \"we talkin' 'bout bitches and money (bitches and money)\",\n", - " \"we talkin' 'bout bitches and money (bitches and money)\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " '大金と女の子たち',\n", - " '大金と女の子たち',\n", - " '大金と女の子たち',\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " 'bitches and money, ayy',\n", - " \"we talkin' 'bout bitches and money\",\n", - " 'bitches and money, ayy',\n", - " '大金と女の子たち (bitches and money)',\n", - " '大金と女の子たち',\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"this is normal, don't worry\",\n", - " '他们从来不敢当面作对',\n", - " '躲在背后 多嘴 always',\n", - " '我在食物链的顶端他们排在末尾',\n", - " '我的地盘我做主像是一只鲨鱼活在水里',\n", - " '当个男人不要当个窝囊废',\n", - " '我的规矩就是没有规矩',\n", - " '害怕就远离这里 台下充满太多未知数',\n", - " '人群像wave, ayy, everyone face to face',\n", - " '下一秒开始祈祷不要被我们给遇到',\n", - " '在你身体划个伤口留下记号',\n", - " '流出来的血染红我的皮草',\n", - " 'higher gang无处不在 就像被网络覆盖',\n", - " '没有搞不定的问题 就像神秘的达芬奇',\n", - " 'ha ha ha ha每个国家都能找到属于我的踪迹',\n", - " '过得生活总是那么有趣那么充裕',\n", - " '拿到海贼王的宝藏就在这个冬季',\n", - " \"let's go!\",\n", - " \"we talkin' 'bout bitches and money (bitches and money)\",\n", - " \"we talkin' 'bout bitches and money (bitches and money)\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " '大金と女の子たち, ayy',\n", - " '大金と女の子たち',\n", - " '大金と女の子たち',\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " 'bitches and money, ayy',\n", - " \"we talkin' 'bout bitches and money\",\n", - " 'bitches and money, ayy',\n", - " '大金と女の子たち (bitches and money)',\n", - " '大金と女の子たち',\n", - " \"we talkin' 'bout bitches and money\",\n", - " \"we talkin' 'bout bitches and money\",\n", - " 'whats good',\n", - " 'ゲリラ豪雨',\n", - " 'ゲリラ豪雨',\n", - " 'ゲリラ豪雨',\n", - " 'ゲリラ豪雨',\n", - " 'get it out get it out get it out',\n", - " 'きみがgive me now ゲリラ',\n", - " 'スタイル時代カルチャー',\n", - " '超えてきたぜゲリラ',\n", - " 'リメンバー 気づけば',\n", - " 'ヤバイのはヤバイ',\n", - " 'マッカートニー',\n", - " 'ジャンル関係ない音落ちてきたゲリラ',\n", - " 'フーのトミー',\n", - " 'ナンバガブランキー',\n", - " 'm.i.aムー&タイラー',\n", - " 'ピュアとクズのミルフィーユ',\n", - " '音がなればfeel',\n", - " 'アイマ music ピッチ',\n", - " 'oh get it out',\n", - " 'ドンストップ',\n", - " '降り止まないこの music',\n", - " '(傘も何もいらないよ)',\n", - " 'ドンストップ',\n", - " '鳴り止まないこの music',\n", - " '(君と同じ場所にしたい',\n", - " '身体中満たす感じてる喜び)',\n", - " 'ドンストップ',\n", - " '降り止まないこの music',\n", - " 'ブリーズ more for me',\n", - " 'あれはそうだ',\n", - " '天才テレビくん',\n", - " 'でみたドラムセット',\n", - " 'あのときからわたし',\n", - " '壊れてる',\n", - " 'ドラム&ラッパー',\n", - " '昔リメンバー',\n", - " '土砂降りもリズムに聞こえたなまるで',\n", - " 'ゲリラ豪雨 ゲリラ豪雨',\n", - " 'あれから一度も降り止まぬrain',\n", - " 'ゲリラ豪雨 ゲリラ豪雨',\n", - " '降れよ音で濡らしてくれよヘロー',\n", - " '大人たちが話すことは',\n", - " '僕らにとっては古いことで',\n", - " '楽しもうbaby 無我夢中に',\n", - " '始まりはみんな同じとこ',\n", - " 'let me hear say eh eh eh',\n", - " 'everybody eh eh eh',\n", - " 'like aゲリラ みんな上げていけば',\n", - " '悲しむ暇もなくつれていく今すぐ',\n", - " 'ドンストップ',\n", - " '降り止まないこのmusic',\n", - " '(傘も何もいらないよ)',\n", - " 'ドンストップ',\n", - " '止まることのないmusic',\n", - " '(君と全て分け合いたい',\n", - " '身体中満たす感じてる喜び)',\n", - " 'ドンストップ',\n", - " 'もっと降れよmore music',\n", - " 'please more for',\n", - " 'whats good',\n", - " \"what's good\",\n", - " 'guerrilla heavy rain',\n", - " 'guerrilla heavy rain',\n", - " 'guerrilla heavy rain',\n", - " 'guerrilla heavy rain',\n", - " 'get it out get it out get it out',\n", - " 'you give me now guerrilla',\n", - " 'style, era, culture',\n", - " 'i got beyond, guerrilla',\n", - " 'remember, when you realize',\n", - " 'danger is danger',\n", - " 'the sounds that doesn’t take any genre falls, guerrilla',\n", - " 'mccartney',\n", - " 'tomy in the who',\n", - " 'nanbagablanky',\n", - " 'm.i.a moo & tyler',\n", - " 'millefeuille of pure and trashes',\n", - " 'if there’s no music, then feel',\n", - " 'i’m a music bitch',\n", - " 'don’t stop',\n", - " 'this music doesn’t stop falling',\n", - " 'there’s no umbrella or anything is needed',\n", - " 'don’t stop',\n", - " 'this music doesn’t stop',\n", - " 'i want to stay at the same place with you',\n", - " 'it ãlls my whole body, the joy of feeling it',\n", - " 'don’t stop',\n", - " 'the music doesn’t stop falling',\n", - " 'please, more for me',\n", - " 'that is it',\n", - " 'mr.genius tv',\n", - " 'the drum set that i saw in that show',\n", - " 'from that moment, i',\n", - " 'have been broken',\n", - " 'drum & rappers',\n", - " 'remember the old time',\n", - " 'even the heavy rain started sounded as rhythms, it’s just like',\n", - " 'guerrilla heavy rain, guerrilla heavy rain',\n", - " 'ever since that day, it has never stopped, rain',\n", - " 'guerrilla heavy rain, guerrilla heavy rain',\n", - " 'fall on me, web me with the noise, hello',\n", - " 'stuff grown ups talk about is',\n", - " 'old stuff for us',\n", - " 'baby, let’s enjoy, lose your mind',\n", - " 'the start is the same for everyone',\n", - " 'let me hear say eh eh eh',\n", - " 'everybody eh eh eh',\n", - " 'like a guerrilla, if we all start lifting it together',\n", - " 'it’ll be taken without any time to feel sad, now',\n", - " 'don’t stop',\n", - " 'this music never stop falling',\n", - " 'there is no umbrella or other stuff needed',\n", - " 'don’t stop',\n", - " 'the music will never end',\n", - " 'i want to share everything with you',\n", - " 'it’s filling my whole body, joy from this feeling',\n", - " 'don’t stop',\n", - " 'let it fall more music',\n", - " 'please, more for me',\n", - " \"what's good\",\n", - " '皆がそろそろ寝る時間だな',\n", - " '準備をはじめる louis vuitton から',\n", - " 'snapback cap 組み合わせて今日も',\n", - " '鏡越し確認する swag(i got it)',\n", - " '今夜の partyは ladies free だろ',\n", - " '誰となるかな親密に',\n", - " '03 エリアー流ハンター',\n", - " '狙いを定める一番 fly girl',\n", - " 'いろんな展開あるなんだかんだ',\n", - " 'i got some mad bitches working',\n", - " 'under cover',\n", - " 'i got my iphone charged フルパワーで',\n", - " 'ひたすら増えてく番号、番号',\n", - " \"we're just having a party\",\n", - " \"there's no need to hurry\",\n", - " 'あるがままに騒げば',\n", - " 'freedom all over the building',\n", - " '心拍数あがっても心配いらないって',\n", - " \"we're going hard\",\n", - " 'keep the music going all night',\n", - " 'keep the ladies shining all night',\n", - " 'keep the bottles popping all night',\n", - " 'going pm to am、pm to am',\n", - " 'keep the music going all night',\n", - " 'keep the ladies shining all night',\n", - " 'keep the bottles popping all night',\n", - " 'going pm to am、pm to am',\n", - " '今夜は朝まで弾けたい(blow it)',\n", - " 'party が無いと life は味気ない(no no)',\n", - " '爆音で流れる最新 leak(what is it)',\n", - " '待てない正式な配信日(dig it)',\n", - " '世の中のルールは意味不明だよ',\n", - " 'それを守るとかありえねーだろ',\n", - " 'club で踊るだけ風営法とか',\n", - " '出直してこい cops 10年後、マジ',\n", - " \"世界中の music lovers what's up\",\n", - " 'デカめのスピーカーを爆音でならす',\n", - " '俺等絶対負ける気ないから',\n", - " 'we will never stop the party keep',\n", - " 'the ladies(come on in)',\n", - " \"we're just having a party\",\n", - " \"there's no need to hurry\",\n", - " 'あるがままに騒げば',\n", - " 'freedom all over the building',\n", - " '心拍数あがっても心配いらないって',\n", - " \"we're going hard\",\n", - " 'keep the music going all night',\n", - " 'keep the ladies shining all night',\n", - " 'keep the bottles popping all night',\n", - " 'going pm to am、pm to am',\n", - " 'keep the music going all night',\n", - " 'keep the ladies shining all night',\n", - " 'keep the bottles popping all night',\n", - " 'going pm to am、pm to am',\n", - " '明日の予定とか忘れたいてか',\n", - " '時すでに遅し忘れたかも',\n", - " 'ここは不思議なオレ等のパラダイス',\n", - " '1日24時間じゃぜんぜんたりないす no',\n", - " '普通に行きてちゃつまらない(yeah)',\n", - " '騒ぎたいならdo it tonight(i do it)',\n", - " \"何が何でも楽しむ主義(that's me)\",\n", - " 'なにが悪いんだ huh?fuck the police',\n", - " \"we're just having a party\",\n", - " \"there's no need to hurry\",\n", - " 'あるがままに騒げば',\n", - " 'freedom all over the building',\n", - " '心拍数あがっても心配いらないって',\n", - " \"we're going hard\",\n", - " 'keep the music going all night',\n", - " 'keep the ladies shining all night',\n", - " 'keep the bottles popping all night',\n", - " 'going pm to am、pm to am',\n", - " 'keep the music going all night',\n", - " 'keep the ladies shining all night',\n", - " 'keep the bottles popping all night',\n", - " 'going pm to am、pm to am',\n", - " '(ceschi)',\n", - " 'walking on tippy toes',\n", - " 'through rubble and debris',\n", - " 'towards a brighter light',\n", - " 'i feel my grandmother calling me',\n", - " 'over to the window',\n", - " 'we can go',\n", - " 'wherever the wind blows',\n", - " 'in a moment',\n", - " 'any possibility can happen',\n", - " 'in a moment',\n", - " 'we can be forgotten or remembered',\n", - " 'in a moment',\n", - " 'worlds can change',\n", - " 'those moments when hope remains',\n", - " 'are the precious porcelain pieces of power',\n", - " 'that so many people crave',\n", - " 'i am not afraid',\n", - " 'to say',\n", - " 'that i got a little bit of hope and',\n", - " 'ima stay this way',\n", - " 'whenever the happiness eventually',\n", - " 'fades away',\n", - " \"i'll find my way to the top of the mountains peak\",\n", - " 'with a falcons beak on my face',\n", - " 'pecking away at the dark when life is bleak',\n", - " 'these heartbeats can move so slow',\n", - " 'like rain droplets down car windows',\n", - " 'and pockets are empty holes',\n", - " 'where stress only grows and grows',\n", - " 'in a moment',\n", - " 'any possibility can happen',\n", - " 'in a moment',\n", - " 'we can be forgotten or remembered',\n", - " 'in a moment',\n", - " 'worlds can change',\n", - " \"but i'll love you til the grave\",\n", - " \"and i'll struggle to become a better person every minute every day\",\n", - " \"i don't play\",\n", - " \"this ain't no fucking game\",\n", - " \"i'm saying\",\n", - " 'that the human race can overcome all this pain',\n", - " 'anyway',\n", - " 'so as long hope remains',\n", - " \"i'ma struggle to become a better person every minute every day\",\n", - " 'between our shoulder blades',\n", - " 'between our shoulder blades',\n", - " \"there's a power sprouting\",\n", - " 'deeply',\n", - " 'between our shoulder blades',\n", - " '(kaigen)',\n", - " '過去を漂う箱舟の中で身篭った御子の名は望み/',\n", - " '下書きのまま保存した明日に溢した悲しみの染み抜き/',\n", - " 'なけなしを分けあい再び開花を誓うにこやかな蕾/',\n", - " '爪痕へ一人一人のあと一息が吹き寄せる寿/',\n", - " '焦土と化した郷土は想像すら容易に参上できぬ程の惨状/',\n", - " '逃げ延びた事実や生かされている実感はできるものならいっそ返上/',\n", - " 'してしまおうかと思うぐらい重く、あまりに無力/',\n", - " 'な自分自身に理不尽なまでにのしかかる 死に底ない一同/',\n", - " '心因性の被災により 額に開いた 負い目に覆い被せる罪滅ぼしを創作(捜索)中/',\n", - " '電波には乗らぬ数多の現場、 情報の瓦礫を除去すれば、/',\n", - " '捌き切れずに持て余した善意が転移すべき先は一目瞭然/',\n", - " '大は小を兼ねず、大と小を兼ね備える当意即妙の共同戦線/',\n", - " 'この期に及んで組織図を広げ、つまらん利害に迂回を促され後手に/',\n", - " '回るご対応 一命を落っことしても延命させたい慣例とその恩恵/',\n", - " '知ってか知らずか日常的に担いでいた片棒の全貌が露出/',\n", - " 'ひいては視野を囲うべく加工された建屋もよもやの爆発/',\n", - " '我田引水を使用しての冷却に腐心しようなら容赦なく付着する不信感/',\n", - " '都合よく括った高をほどく耐用年数をとうに超過した依存心のメルトダウン/',\n", - " '起こりえた想定外という人災に際して差し迫る俺たちの判断/',\n", - " 'や行動が怠慢な想定内を押し流したって構いやしない/',\n", - " '同じ傷が築いた絆がおいそれと倒壊/',\n", - " 'する恐れなど到底なく、空回りする縦割りの頭を勝ち割り/',\n", - " '苦しい時のお上頼みからの立ち退き、 分かち合える労り/',\n", - " 'の炊き出し係 はもちろん持ち回りで繋げる踏ん張り/',\n", - " 'in an ark drifting among the past a child was conceived',\n", - " 'and was named hope',\n", - " 'spilt sorrow on a tomorrow saved as a draft',\n", - " 'now we clean the stains out',\n", - " 'a smiling bud, sharing pennies and swearing to bloom again',\n", - " 'toward a scar, each one’s “one more step”',\n", - " 'pushes together a day of celebration',\n", - " 'our birthplace turned to scorched earth',\n", - " 'a terrible spectacle beyond imagination’s reach',\n", - " 'reality of our escape and the feeling of being kept alive are so heavy',\n", - " 'on my incompetent shoulders it’s absurd, i’d give it back if i could',\n", - " 'a group of survivors, stricken by a psychogenic disaster',\n", - " 'which opened eyes of debt on our foreheads',\n", - " 'so we quest and create for atonement',\n", - " 'many scenes that do not travel on radio waves',\n", - " 'if the rubble of information is cleaned out',\n", - " 'will only take one look to see where the over flowing goodwill will spread to',\n", - " 'not “better bigger than small” but both “big and small” united front repartee',\n", - " 'still trying to spread that organization chart',\n", - " 'responses delayed by detours caused of useless interests',\n", - " 'they put people’s lives on the line',\n", - " 'just to keep alive conventions and the fruit it bears',\n", - " 'the acts we took part in either consciously or not',\n", - " 'have exposed in its entirety like fuel rods',\n", - " 'in addition, a structure was constructed to engulf our view',\n", - " 'only soon to explode',\n", - " 'every miller draws water to his own mill to cool down',\n", - " 'if one takes pains in this then distrust will attach to those relentlessly',\n", - " 'a meltdown of dependency well beyond its service life',\n", - " 'which was overestimated for convenience sake',\n", - " 'our decisions face a man-made disaster beyond expectations',\n", - " 'which could happen there is no problem if',\n", - " 'our actions push aside the expectations built on laziness',\n", - " 'crush the hierarchical heads just spinning wheels and never assuming',\n", - " 'that the bond tied by shared scars could collapse',\n", - " 'retreat from reliance on authority in times of crisis',\n", - " 'compassion shared at soup kitchens',\n", - " 'this connection is our firm stand',\n", - " '(ceschi)',\n", - " 'between our shoulder blades',\n", - " 'between our shoulder blades',\n", - " \"there's a power sprouting\",\n", - " 'deeply',\n", - " 'between our shoulder blades',\n", - " \"don't panic don't don't panic(×3)\",\n", - " 'ドタバタ慌てふためくブレイクス',\n", - " \"don't panic don't don't panic(×3)\",\n", - " 'party, start it! くれぐれも warning',\n", - " \"don't panic\",\n", - " 'とっくのとうアッつ間に始まってるゼ',\n", - " '御機嫌は如何?',\n", - " '落ち着いてハニー 今まだスパーリング',\n", - " '本番はこんなんじゃすまないゼ バーニング',\n", - " \"don't panic\",\n", - " '堂々とリクライニング倒してリラックス',\n", - " '宇宙へダイビング',\n", - " '心の準備ができたら打ち上げ開始',\n", - " '冷ましそっと待機',\n", - " \"don't panic\",\n", - " 'クラシックで言やタイタニック',\n", - " '大船に乗ったつもりでドラマティック',\n", - " 'rip... シンフォニックな5人',\n", - " '肩並べクロマティックに降臨',\n", - " \"don't panic\",\n", - " '神経が過敏 まずは深呼吸',\n", - " '慌てるな民 我ら五天王 制定せし憲法',\n", - " '高い危険度 願うご清聴',\n", - " \"don't panic don't don't panic(×3)\",\n", - " 'ドタバタ慌てふためくブレイクス',\n", - " \"don't panic don't don't panic(×3)\",\n", - " 'party, start it! くれぐれも warning',\n", - " 'i shoot from the hip',\n", - " \"i'm quick on the draw\",\n", - " '16 in the clip and the \"yes, yes, y\\'all\"',\n", - " 'i treat the crowd like a firing squad',\n", - " \"trigger happy like a postman who's lost his job (he's got a gun!)\",\n", - " 'better run for the exits',\n", - " \"i'm young and i'm reckless, fidgeting and restless\",\n", - " 'my lips shoot the gift that my teeth are on',\n", - " 'but no need for alarm, i mean no harm',\n", - " \"i'm cool, calm, collected\",\n", - " 'when times is hectic',\n", - " 'move to the set, diffuse bombs detected',\n", - " \"roll to any show, i'm in full control\",\n", - " \"to get dough, keep movin' like soul ii soul\",\n", - " \"please, no panickin'\",\n", - " 'freeze like a mannequin',\n", - " \"east of the line, i won't leave, i'm not anakin\",\n", - " \"i'm bringin' the love, call me gavin macleod\",\n", - " \"with the crowd, like james brown, yell i'm black and i'm proud\",\n", - " 'maaaaan, we gotta go back to japan!',\n", - " 'i know, i hope the people there remember our band!',\n", - " 'well incase they forgot, how ud can rock',\n", - " 'we got young einstein, blowing up the spot!',\n", - " \"don't panic don't don't panic(×3)\",\n", - " 'ドタバタ慌てふためくブレイクス',\n", - " \"don't panic don't don't panic(×3)\",\n", - " 'party, start it! くれぐれも warning',\n", - " '御乗車注意 特別なクルージング',\n", - " 'お乗り遅れのないようにグルーヴィング',\n", - " '空気読む読まないすら無い エビバリとっくに side to side',\n", - " 'ほらスタンバイ 焦らずクオンタイズ合わせてタイトなセット',\n", - " '出発はオンタイム ベルト着用のサイン',\n", - " 'lights camera サクサクとaction',\n", - " \"don't panic\",\n", - " '大好きです',\n", - " '(kaigen)',\n", - " '敵地のアンチも味方のベンチも総立ち/',\n", - " '腕比べの行方は紙一重 奇跡よ 集え/',\n", - " '劇的な幕切れの仕入先/',\n", - " 'all stand, from the haters in enemy land to the bench of my fam',\n", - " 'a thin line divides the outcome of battle. gather here miracles',\n", - " 'the supplier of a dramatic curtain fall',\n", - " '(myka 9)',\n", - " '(kaigen)',\n", - " '記録を残そうが、記憶に残ろうが/',\n", - " '決めれば一躍頼みの綱、 外せば一夜で刺身のつま/',\n", - " 'つまりのるかそるか、万事休すか九死に一生を得るか/',\n", - " '手に汗握る窮地の心地よさに酔いしれる/',\n", - " '筋金入りの勝負師の見せ場が押寄せる/',\n", - " '固唾を飲む土俵際で巻きこす/',\n", - " '歓喜と失意の渦はカオスの図/',\n", - " '向かい風が強くなれば、自ずと預かる仲間の信頼/',\n", - " '脳裏に取り付く懲りずに重ねたみじめで無様な失敗/',\n", - " 'の後味は問われる真価に難なく応えるために/',\n", - " '積み立てた備えと思えば憂えなし/',\n", - " 'デッドライン直前 疑心と自信のトレードが合意に達し/',\n", - " '新規の伝説をお膳立て 流れを変える弾数 /',\n", - " '残りは果たして何発? のしかかる重圧/',\n", - " 'は率先して担いでごらん 天王山で充実/',\n", - " 'した景観を満喫するには、それに見合うだけの負荷が不可欠/',\n", - " 'either you hit a new record or remain in memory',\n", - " 'if it works, spring into becoming the last hope',\n", - " 'if not, turn into garnish for sashimi in one night',\n", - " 'sink or swim, it’s “the end” or an “escape from death”',\n", - " 'a hardcore gambler ecstatic in the pleasant sweaty palm tight squeeze',\n", - " 'here comes the flood of highlights',\n", - " 'paint a picture of chaos, a vortex of rapture and despair',\n", - " 'among the breathless at the edge of the ring',\n", - " 'when the headwind’s strong look after the trust of friends',\n", - " 'miserable awkward mistakes repeated and layered in the back of mind',\n", - " 'nothing to worry about, think of the aftertaste as savings',\n", - " 'a preparation for the right answer to the question of true value',\n", - " 'right before deadline, set the stage for a new legend',\n", - " 'through the trading agreement of doubt and confidence',\n", - " 'bullets to change momentum, how many shots left in the chamber?',\n", - " 'the pressure is on, so take the initiative to carry the ball',\n", - " 'the weight you carry must correspond',\n", - " 'in order to fully enjoy the view from the top of mount make-or-break',\n", - " '約束された将来/',\n", - " 'においても挫折は執拗に出場機会/',\n", - " 'に恵まれる。 逃した魚の大きさを計量し、踏ん張りどころ/',\n", - " 'で感傷にひたるよりかは、どん底で捕れた泥んこ/',\n", - " 'の成果を認め、磨けば光る穴埋めの育成に精を/',\n", - " '出していくほうがより正解。 苦節何年かかっても/',\n", - " '度々後ろ指を差され、情熱が少々荒んでも/',\n", - " 'あの日の衝動でくるんだ信念が芯まで腐るもんか/',\n", - " '花道を飾る役目をおめおめと諦めに譲るなんざ/',\n", - " 'まっぴらごめん。 末路すら貫通する渇望が活路に/',\n", - " '抜擢され、忘れ物をした古巣へ電撃復帰/',\n", - " '色違いの夢が返り咲き、過去の脚本を捨てた働き /',\n", - " 'が続きを演出するが、取り戻す結末は原作に忠実に/',\n", - " '来世まで語り継がれる名場面のライセンスを独占/',\n", - " '和洋折衷の番狂わせの詰め合わせ。 myka9, kaigen /',\n", - " 'の二枚看板。 西海岸からジパングへ通すアリウープパス/',\n", - " 'この曲の終了のブザーと同時に灯すヒップホップの明日/',\n", - " 'even for a promised future',\n", - " 'defeat is persistent with its chances to play',\n", - " 'rather than measuring the size of the fish that escaped',\n", - " 'and becoming sentimental in a time for final effort',\n", - " 'the correct answer is to acknowledge the muddy fruits',\n", - " 'picked at the bottom of the pit',\n", - " 'and hustle to make up the deficit which shines if polished',\n", - " 'no matter how many criticisms and years of hardship it takes',\n", - " 'and the passion goes rough, conviction wrapped with that one day’s',\n", - " 'impulse will never rot to the core',\n", - " 'no way will i give way to giving up when my role is',\n", - " 'to walk down the runway. thirst, strong enough penetrate even fate',\n", - " 'was chosen as the path for a',\n", - " 'speedy return to the old place where i left something',\n", - " 'a dream in a different color blooms and',\n", - " 'the work continues to perform without the script of the past',\n", - " 'but the ending i retrieve is faithful to the original',\n", - " 'monopolized the licenses for the highlights',\n", - " 'to be passed down to the next life',\n", - " 'surprise package of styles compiled from the east and west',\n", - " 'myka9 and kaigen double headliner',\n", - " 'alley oop pass complete from the west coast to zipang',\n", - " 'light up hiphop’s future as the buzzer signals the end of this jam',\n", - " '(myka 9)',\n", - " '(kaigen)',\n", - " '来世まで語り継がれる名場面のライセンスを独占/',\n", - " '和洋折衷の番狂わせの詰め合わせ。 myka9, kaigen /',\n", - " 'の二枚看板。 西海岸からジパングへ通すアリウープパス/',\n", - " 'この曲の終了のブザーと同時に灯すヒップホップの明日/',\n", - " 'monopolized the licenses for the highlights',\n", - " 'to be passed down to the next life',\n", - " 'surprise package of styles compiled from the east and west',\n", - " 'myka9 and kaigen double headliner',\n", - " 'alley oop pass complete from the west coast to zipang',\n", - " 'light up hiphop’s future as the buzzer signals the end of this jam',\n", - " 'husky studio',\n", - " 'you should go the fuck home and meditate on this shit boy',\n", - " 'we’re living intuitively',\n", - " 'purely knowing it',\n", - " 'a.w.c',\n", - " 'お前の弱いマフィア',\n", - " '出直して古いサティアン',\n", - " 'rappersの目には涙',\n", - " '何人が失うのそのキャリア?',\n", - " '欲しいの全部買う',\n", - " '売られてない喧嘩も買う',\n", - " '予算管理しなくても',\n", - " 'i bounce back like a balloon',\n", - " '同じ土俵無理',\n", - " 'ザコいその頭ん中熟知',\n", - " 'give the whole thing to me',\n", - " 'i have been been through it',\n", - " '当然の報い',\n", - " 'your boyfriend 惚れ込む',\n", - " '媚びないエロス',\n", - " '腐ったシーンを解毒',\n", - " '選ばれし女神のゲノム',\n", - " 'まじお前誰?',\n", - " '(who r u?)',\n", - " 'マジでお前誰?',\n", - " '(who r u?)',\n", - " 'give me the whole ting man',\n", - " 'i reign on these bitches',\n", - " 'ノらないと負け',\n", - " 'ay yo, chaki why they testing me?',\n", - " 'i got anarchy to the left of me',\n", - " 'i got young killaz steady check for me',\n", - " 'and i rep the rock',\n", - " 'till the death of me',\n", - " '街の喧嘩小僧',\n", - " 'ダチは前科者',\n", - " '見てきた色んなもの',\n", - " 'chanelに取り憑かれた女の子',\n", - " '物が溢れてる',\n", - " '影にいい物が隠れてる',\n", - " 'どれもまがいもん',\n", - " '売れたらダサくても',\n", - " 'いいんじゃないの?',\n", - " 'リアルって何?',\n", - " 'まじリアルって何?',\n", - " 'てかお前誰?',\n", - " 'なー?',\n", - " 'お前は誰?',\n", - " 'coolな奴ら',\n", - " '1%もいないんじゃない?',\n", - " '三つ数えるから泣き止め',\n", - " 'デニムでも履いてれば味が出る',\n", - " 'まじお前誰?',\n", - " '(who r u?)',\n", - " 'マジでお前誰?',\n", - " '(who r u?)',\n", - " 'give me the whole ting man',\n", - " 'i reign on these bitches',\n", - " 'ノらないと負け',\n", - " 'ay yo, chaki why they testing me?',\n", - " 'i got anarchy to the left of me',\n", - " 'i got young killaz steady check for me',\n", - " 'and i rep the rock',\n", - " 'till the death of me',\n", - " 'you can’t make me respect you man',\n", - " 'that shit is earned',\n", - " 'you used to love me',\n", - " 'but you now hating?',\n", - " 'shit is \"learned\"',\n", - " 'you don’t know what to feel about me',\n", - " 'you don’t know what you doing',\n", - " 'but we knowing it',\n", - " \"まずslip off the rules what's poppin my dogg\",\n", - " 'dogear originoo so patarn 今宵も',\n", - " 'budamunk make sound parfectなbrother',\n", - " '奴の音楽をnextに上げる money maker',\n", - " 'changin talk このgameも俺がstickふれば風向きも変わるぜ see you bitch next time',\n", - " '奴らには未来が見えた',\n", - " '肩の荷降ろして風切る cool men grap plant',\n", - " 'last dance 常にsupplyする master',\n", - " \"let's flyt backで落とし込むdog style\",\n", - " 'flash輝き続けてるbroに愛',\n", - " 'backs今動きをとめる気はない',\n", - " 'ten commandments 俺なら一度でpop out',\n", - " 'for life borderはシカトでmake right',\n", - " 'thats the buglers 地下からheat vibe',\n", - " 'fallin down 試す crunch must clip mine',\n", - " 'just take it 俺はすぐそこにいる',\n", - " 'world wide tokaidopeness check rigght?',\n", - " 'まぁこれで業界の足も固まる 過ぎるブームに踊るfuckin bitchならpass',\n", - " '限界はとっくに越えたこれが新たなmusicの扉',\n", - " '即効take&over across the street trip everywhere',\n", - " 'women in the mirror uknow',\n", - " '閉じこもったgirlsもノブを捻るniceなrapのskillを持つkillеr meets buda',\n", - " 'why now?',\n", - " 'why you price down?',\n", - " 'why you leveling your shit with these rundowns?',\n", - " 'あの子たちにはまだわかんない',\n", - " '欲しくても深いとこまで掘れない no',\n", - " 'but baby i can もっと気づかせる存在価値',\n", - " \"何でもさらけ出して don't hide\",\n", - " 'what you wanna do to me? 何も怖くない',\n", - " 'what you wanna do bae?',\n", - " 'what you wanna do to me bae?',\n", - " 'you know i can love you',\n", - " 'you know i can love you bae',\n", - " 'what you wanna do bae?',\n", - " 'what you wanna do to me bae?',\n", - " 'you know i can love you',\n", - " 'you know i can love you bae',\n", - " '後ろ見ず来たここまで',\n", - " \"let's get started その言葉も面影\",\n", - " '増えた money けどいまだ走る city',\n", - " 'mama told me relax i said i’m sorry',\n", - " 'look at my squad bigchain 光らす neck',\n", - " 'we just playing 勝ち続けるこの game',\n", - " '嘘みたいな speed 駆け上がる top',\n", - " '嘘つける girl といる夜もある',\n", - " 'everything crazy 脱ぎ捨てるまた heavy weight hoodie ya',\n", - " \"feel like 80's 綺麗事を片付けるbaby ya\",\n", - " '気づかぬふりしてればfree',\n", - " 'i’m busy you know だから trust me',\n", - " '何で言う気は無いただ別に',\n", - " 'want you wanna do? 本当の俺は君に・・・',\n", - " 'what? you & me...',\n", - " '\"me & you\" ? 夜中の♡、既読スルー',\n", - " '大事なもの突き放した痛みで測る true value?',\n", - " 'そんなに怖い of a broken heart?',\n", - " '溺れそうになれば掛ける歯止めを?',\n", - " 'それで失うモメンタム i need you to hear 心の声を・・・',\n", - " 'they don’t make them like you no more nowadays',\n", - " 'なのにそんなに簡単にあげちゃうのはなぜ?',\n", - " '出会い、別れ、泣かせ、そんなのただの流れ',\n", - " 'i know you want to go deeper',\n", - " 'いいよ。私の中で',\n", - " 'what you wanna do bae?',\n", - " 'what you wanna do to me bae?',\n", - " 'you know i can love you',\n", - " 'you know i can love you bae',\n", - " 'what you wanna do bae?',\n", - " 'what you wanna do to me bae?',\n", - " 'you know i can love you',\n", - " 'you know i can love you bae',\n", - " 'i’m swift swift swift. no taylor',\n", - " 'i serve serve serve. no waiter',\n", - " 'i’m a full course meal',\n", - " 'mad flavors you ain’t satisfied with that bitch',\n", - " 'she is a wafer',\n", - " 'you are 限定盤 なかなか手に入らん少数生産',\n", - " \"you're limited edition. you're king\",\n", - " 'you come through shut shit down. 閉館',\n", - " \"baby go hard, we don't need no brake\",\n", - " \"we ain't gonna stop 朝までshake\",\n", - " \"turn up all night, we don't need no brake\",\n", - " \"we ain't gonna stop 朝までshake\",\n", - " '展示会でつけた最新のclothing',\n", - " 'looking fly you know my style いつも通り',\n", - " 'real is what i do always 妥協は許さない',\n", - " '未来的すぎな完璧主義',\n", - " '入るやいなやvip直行no id check',\n", - " '足下はnike id yeah',\n", - " \"i'm ill mother fucker i'm ill\",\n", - " 'ハイヒールのbi***s wanna f**k me',\n", - " 'マジでcrazyなシチュエーションがいつの間にか',\n", - " '俺の3dimension',\n", - " 'やっぱlifeは楽しまなきゃ意味ねえっしょ',\n", - " '独自のstyle a to z heads to toe',\n", - " 'always keep it fresh no イミテーション',\n", - " 'be original恐れはno good',\n", - " 'sky is the limit man一人で操縦',\n", - " '今日中出来る事明日にまわすな',\n", - " '今夜がpartyならnever遊び逃すな',\n", - " \"turn up baby go hard, we don't need no brake\",\n", - " \"we ain't gonna stop 朝までshake\",\n", - " \"turn up all night, we don't need no brake\",\n", - " \"we ain't gonna stop 朝までshake\",\n", - " \"turn up baby go hard, we don't need no brake\",\n", - " \"we ain't gonna stop 朝までshake\",\n", - " \"turn up all night, we don't need no brake\",\n", - " \"we ain't gonna stop 朝までshake\",\n", - " '(turn up)',\n", - " 'まるで今夜が最後のようにみなturn up',\n", - " \"i'm in the building\",\n", - " 'ladies you gotta turn up',\n", - " 'yeah you gotta turn up 次から次へと',\n", - " \"i'm poppin' bottles turn up\",\n", - " 'work hard play hard日々自己啓発',\n", - " '今日も乾杯セレブレイト互いの成果',\n", - " '価値観分かり合う腹違いbrothersと',\n", - " 'party like a rock star',\n", - " 'give me more give me more',\n", - " '止まらぬ状況',\n", - " 'ネガティブマインド早めに消去',\n", - " \"その心配事we don't need\",\n", - " '先に行くだけgo like hiromi',\n", - " 'だってヘイター気にしちゃ切りないし',\n", - " 'きっとどうせloserの意見意味ないし',\n", - " '良さげなバイブスだけでただ過ごす',\n", - " 'ヘイトやジェラス who cares 全部タイムロス',\n", - " 'party 楽しんだもん勝ちってのはガチ',\n", - " '騒ぎまくるのも一つの形',\n", - " 'やるなら全力いつかはみなrip',\n", - " '地獄か天国 turn up',\n", - " \"turn up baby go hard, we don't need no brake\",\n", - " \"we ain't gonna stop 朝までshake\",\n", - " \"turn up all night, we don't need no brake\",\n", - " \"we ain't gonna stop 朝までshake\",\n", - " \"turn up baby go hard, we don't need no brake\",\n", - " \"we ain't gonna stop 朝までshake\",\n", - " \"turn up all night, we don't need no brake\",\n", - " \"we ain't gonna stop 朝までshake\",\n", - " '(turn up)',\n", - " 'まるで今夜が最後のようにみなturn up',\n", - " \"i'm in the building\",\n", - " 'ladies you gotta turn up',\n", - " 'yeah you gotta turn up 次から次へと',\n", - " \"i'm poppin' bottles turn up\"]},\n", - " 'data': ['忘れて black out',\n", - " 'black out',\n", - " 'bla-bla-bla-black out',\n", - " 'black out',\n", - " 'black out',\n", - " 'bla-bla-bla-bla-bla-bla',\n", - " '夢つかみたきゃ',\n", - " '攻める時は now',\n", - " 'ヤツの game リセットして',\n", - " 'black out',\n", - " 'トロけるほど hot',\n", - " 'な body 照らして',\n", - " 'つまらないこと',\n", - " '忘れて black out (yeah, uh)',\n", - " 'i see ladies, lazers, bottles with chasers',\n", - " 'and i see ladies, lazers, lots of bottles with chasers',\n", - " 'yes, they call me visionair',\n", - " '先々が見える',\n", - " 'i can take you anywhere',\n", - " '未来教えてあげる',\n", - " 'あなたにもあげたい チェルシー',\n", - " 'take a shot',\n", - " 'あともう一つグイッと行けば',\n", - " '仲良くなれる',\n", - " 'だから why? why?',\n", - " 'なんて聞かず',\n", - " 'ワイワイしてようぜ',\n", - " 'bye-bye なんて言わず',\n", - " '倍々に楽しむ方法',\n", - " 'let me tell you how do it',\n", - " 'つま先から頭のてっぺんまで',\n", - " 'dipped in 新品 fashion',\n", - " 'ギラギラ ambush',\n", - " '片手に cash',\n", - " 'もう片方には magnum',\n", - " '今日の mission 今日のこと',\n", - " '忘れて black out',\n", - " '時計仕掛けのハートの',\n", - " 'タイムリミットが',\n", - " '迫って来たから',\n", - " 'black out',\n", - " 'ハデにしたいなら',\n", - " '後戻りはなし',\n", - " '未来までのカウントダウン to',\n", - " 'black out',\n", - " 'i prefer that you would just call me weezy - eastside gangsta’',\n", - " 'and i be runnin’ this shit like a flanker',\n", - " 'black card banker',\n", - " 'hanker in the back pocket',\n", - " 'and i wear them skinny jeans so you see my fat wallet',\n", - " 'that’s right i’m a big shot',\n", - " 'call me little cannonball',\n", - " 'mister gets up in your girl’s mouth like some anbesol',\n", - " 'hip-hop president',\n", - " 'ain’t my girl eloquent?',\n", - " \"don't she got more junk in her trunk than a elephant?\",\n", - " 'i-i-i’m an animal',\n", - " 'watch me i examine you',\n", - " 'and my chucks are old, but i swear that my flannel new',\n", - " 'man, i get money manual',\n", - " 'then i just man you',\n", - " 'bitch, i’m gone like my lam’ roof (young money)',\n", - " '夢つかみたきゃ',\n", - " '攻める時は now',\n", - " 'ヤツの game リセットして',\n", - " 'black out',\n", - " 'トロけるほど hot',\n", - " 'な body 照らして',\n", - " 'つまらないこと',\n", - " '忘れて black out',\n", - " '3, 2, 1, 逃げないで',\n", - " 'wait and see',\n", - " '明日を変えたいなら',\n", - " '全て black out',\n", - " '3, 2, 1, その気になれば',\n", - " 'you can wipe the city out so fast just like a',\n", - " 'black out',\n", - " 'black out',\n", - " '時計仕掛けのハートの',\n", - " 'タイムリミットが',\n", - " '迫って来たから',\n", - " 'black out',\n", - " 'ハデにしたいなら',\n", - " '後戻りはなし',\n", - " '未来までのカウントダウン to',\n", - " 'black out',\n", - " 'nana-nana-nana-nana black out',\n", - " 'nana-nana-nana-nana black out',\n", - " 'nana-nana-nana-nana black out',\n", - " 'nana-nana-nana-nana black out',\n", - " '(black out)',\n", - " 'black out',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " '女の子とベッドでfly',\n", - " 'たまに外国人とskype',\n", - " '普段はスタンプ送るline',\n", - " '友達いっぱい',\n", - " '嫌いな人には電話しない',\n", - " '携帯鳴ったら出る',\n", - " 'こっちから用があったらかける',\n", - " 'プルルル',\n", - " 'ナイスなクローズ買ったらフレックス',\n", - " 'ナイスなキックス買ったらフレックス',\n", - " 'なんでもかんでもみんなフレックス',\n", - " 'インスタグラムに写真載せる',\n", - " 'おー、格好いいね',\n", - " 'facebookとtwitter見て',\n", - " 'pop that pussy like that',\n", - " 'そうやって人生も楽しめ',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " '君はまだiphone4',\n", - " 'ぶっちゃ変わんないほとんど',\n", - " 'あの子はドモのスマートフォン',\n", - " 'なんでもいいからまず遊ぼう',\n", - " 'so pussy in my iphone',\n", - " 'iphone in my pocket',\n", - " '女の子と原宿に出かける',\n", - " 'ブーティコールはやりたいだけ',\n", - " 'bad bi-i-itch fuck it',\n", - " '記念に写真を撮ろう',\n", - " 'いけてる女いけてる男',\n", - " 'あの子もこの子も',\n", - " 'yellow t20 follow me',\n", - " '番号交換する',\n", - " '翼を授ける like red bull',\n", - " 'fly boy fly chick 空に浮く',\n", - " 'new pussy 登録する',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in your iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " 'pussy in my iphone5',\n", - " '大事な事第一',\n", - " '血は水よりも濃い',\n", - " \"that's what mama told me\",\n", - " 'でも泥水は血よりも濃い',\n", - " '多分それにやられちゃったmy daddy',\n", - " 'yeah he always told me',\n", - " 'not to sell work',\n", - " '17.5 same color t-shirts',\n", - " 'ママの勇気で生き延びた8ヶ月',\n", - " 'daddy came home',\n", - " '3日後にすぐ破裂した胎包',\n", - " '稀に見る安産',\n", - " 'love child 5 pound 8 ounces',\n", - " '生まれはアトランタ so',\n", - " 'やりたいことやるのは条件反射',\n", - " 'enfant terrible',\n", - " '私はスターだと教えてくれた父上',\n", - " '“jah”は神“mirror\"は鏡',\n", - " 'このミドルネームが唯一の形見',\n", - " 'only jah love blessed me through my days',\n", - " 'only jah love',\n", - " 'so i hafi give thanks and praise',\n", - " 'only jah love blessed me through my days',\n", - " 'only jah love',\n", - " 'so i hafi give thanks and praise',\n", - " '大事な事第一',\n", - " '血は水よりも濃いjust the theory',\n", - " '慣れないこともある最初は',\n", - " 'だからhands out your pockets',\n", - " 'head out your ass',\n", - " 'never focus on your past',\n", - " 'always keep it moving',\n", - " '枠にハマらず 難関もくぐり',\n", - " '抜けてきた',\n", - " 'we are some trooping commandos',\n", - " '腹ん中の時から波乱万丈',\n", - " '学校 病院に面会室',\n", - " '家に帰れば積まれた督促状',\n", - " '危険な目にも合わせた',\n", - " 'but you stayed strong',\n", - " 'a smile can go miles',\n", - " 'you taught me that',\n", - " 'そんなやだからこそゆっときな',\n", - " 'どんなとこでも気持ちでutopia',\n", - " 'he never gave me up and you gave me love',\n", - " 'どん底からここまで',\n", - " 'you held me up',\n", - " 'only jah love blessed me through my days',\n", - " 'only jah love',\n", - " 'so i hafi give thanks and praise',\n", - " 'only jah love blessed me through my days',\n", - " 'only jah love',\n", - " 'so i hafi give thanks and praise',\n", - " 'me and my baby',\n", - " 'riding thru constant spree',\n", - " 'all eyes on we',\n", - " 'and we not pop no style',\n", - " 'i said i said',\n", - " 'me and my baby',\n", - " 'riding thru constant spree',\n", - " 'all eyes on we',\n", - " 'and they not know a ting',\n", - " 'love is all we bring',\n", - " '忘れて black out',\n", - " 'black out',\n", - " 'black out',\n", - " 'black out',\n", - " 'black out',\n", - " '夢つかみたきゃ',\n", - " '攻める時は now',\n", - " 'ヤツの game リセットして',\n", - " 'black out',\n", - " 'トロけるほど hot',\n", - " 'な body 照らして',\n", - " 'つまらないこと',\n", - " '忘れて black out (yeah, uh)',\n", - " 'i see ladies, lazers, bottles with chasers',\n", - " 'and i see ladies, lazers, lots of bottles with chasers',\n", - " 'yes, they call me visionair',\n", - " '先々が見える',\n", - " 'i can take you anywhere',\n", - " '未来教えてあげる',\n", - " 'あなたにもあげたい チェルシー',\n", - " 'take a shot',\n", - " 'あともう一つグイッと行けば',\n", - " '仲良くなれる',\n", - " 'だから why? why?',\n", - " 'なんて聞かず',\n", - " 'ワイワイしてようぜ',\n", - " 'bye-bye なんて言わず',\n", - " '倍々に楽しむ方法',\n", - " 'let me tell you how do it',\n", - " 'つま先から頭のてっぺんまで',\n", - " 'dipped in 新品 fashion',\n", - " 'ギラギラ ambush',\n", - " '片手に cash',\n", - " 'もう片方には magnum',\n", - " '今日の mission 今日のこと',\n", - " '忘れて black out',\n", - " '時計仕掛けのハートの',\n", - " 'タイムリミットが',\n", - " '迫って来たから',\n", - " 'black out',\n", - " 'ハデにしたいなら',\n", - " '後戻りはなし',\n", - " '未来までのカウントダウン to',\n", - " 'black out',\n", - " 'i prefer that you would just call me weezy - eastside gangsta’',\n", - " 'and i be runnin’ this shit like a flanker',\n", - " 'black card banker',\n", - " 'hanker in the back pocket',\n", - " 'and i wear them skinny jeans so you see my fat wallet',\n", - " 'that’s right i’m a big shot',\n", - " 'call me little cannonball',\n", - " 'mister gets up in your girl’s mouth like some anbesol',\n", - " 'hip-hop president',\n", - " 'ain’t my girl eloquent?',\n", - " \"don't she got more junk in her trunk than a elephant?\",\n", - " 'i-i-i’m an animal',\n", - " 'watch me i examine you',\n", - " 'and my chucks are old, but i swear that my flannel new',\n", - " 'man, i get money manual',\n", - " 'then i just man you',\n", - " 'bitch, i’m gone like my lam’ roof',\n", - " '(young money)',\n", - " '夢つかみたきゃ',\n", - " '攻める時は now',\n", - " 'ヤツの game リセットして',\n", - " 'black out',\n", - " 'トロけるほど hot',\n", - " 'な body 照らして',\n", - " 'つまらないこと',\n", - " '忘れて black out',\n", - " '3, 2, 1, 逃げないで',\n", - " 'wait and see',\n", - " '明日を変えたいなら',\n", - " '全て black out',\n", - " '3, 2, 1, その気になれば',\n", - " 'you can wipe the city out so fast just like a',\n", - " 'black out',\n", - " 'black out',\n", - " '時計仕掛けのハートの',\n", - " 'タイムリミットが',\n", - " '迫って来たから',\n", - " 'black out',\n", - " 'ハデにしたいなら',\n", - " '後戻りはなし',\n", - " '未来までのカウントダウン to',\n", - " 'black out',\n", - " 'nana-nana-nana-nana black out',\n", - " 'nana-nana-nana-nana black out',\n", - " 'nana-nana-nana-nana black out',\n", - " 'nana-nana-nana-nana black out',\n", - " '(black out)',\n", - " 'black out',\n", - " '(orko eloheim)',\n", - " 'when the satellites move around the earth like the death star',\n", - " \"the planet's spinning faster, now you're feeling the free fall\",\n", - " 'ancient future primitive, vocabulary unlimited',\n", - " \"we fall through time and space, be at one with the bass, y'all\",\n", - " 'when the satellites move around the earth like the death star',\n", - " \"the planet's spinning faster, now you're feeling the free fall\",\n", - " 'ancient future primitive, vocabulary unlimited',\n", - " \"we fall through time and space, now you're feeling the bass, y'all\",\n", - " '(kaigen)',\n", - " '進化の蜃気楼を目指し、科学の砂漠から打ちあげられた希望が/',\n", - " '巡り巡って不時着した先は、人が欲に征服された惑星だった/',\n", - " '首輪を付けたホモサピエンスの手前味噌を立ち入り禁止の/',\n", - " '領域で極度に熟成させ、更なる人知が開けても/',\n", - " '内なる陣地を閉ざしていれば未来は未開/',\n", - " '少々面倒ではありますが心を通わせる術は事足りているのに/',\n", - " 'その勤めを怠り、性懲りもなくお決まりの稚拙な捌け口/',\n", - " 'から感情を排泄する愚かな傾向に加え、年々複雑に/',\n", - " '枝分かれしていく背景 植え込みに立てる大義名分の捏造はお茶の子さい/',\n", - " 'さい しかしエゴという根っこは古今東西ご健在 競い合い/',\n", - " 'が本能であろうとなかろうと、煩悩のペースに釣られて走ればいずれ/',\n", - " '共倒れ。 紛れ込んだ子猿に自らの乳を分け与える/',\n", - " '母犬のように軋轢や国益に拘束されぬ無償/',\n", - " 'の愛情が、滞納中の宇宙船地球号の入場料/',\n", - " '何世紀経とうが、暴力の応酬の踏襲は依然有史以前と同じ/',\n", - " '顔や名前を変えても戦争はしぶとい醜い伝統行事/',\n", - " 'aiming for the mirage of evolution, hope launched from the desert of science',\n", - " 'went round and round and crash landed on a planet where people were occupied by greed',\n", - " 'even if human knowledge is further expanded',\n", - " 'through, taking a chained homo sapience brain and',\n", - " 'age it to an extreme in a territory off limits',\n", - " 'if the internal encampment is closed the future remains primitive',\n", - " 'although troublesome to a degree, we possess the tools to communicate minds',\n", - " 'but we neglect our job and in spite of repeated failures return to cheap outlets',\n", - " 'to excrete emotions through foolish tendencies',\n", - " 'in addition, year after year the background increases',\n", - " 'complexity through branching',\n", - " 'fabrication of good reason in the shrubbery is a piece of cake',\n", - " 'however the root known as ego is in good health in all ages and countries',\n", - " 'no matter if competition is our instinct or not, running at the rate of the bait of worldly desire will lead us to cutting each other’s throat',\n", - " 'unconditional love, unbound by national interest and friction',\n", - " 'like a mother sharing breast milk to a lost enemy’s child',\n", - " 'is the overdue entrance fee to starship earth',\n", - " 'centuries have passed but the continuous exchange of violence is the same as that of the prehistoric days',\n", - " 'no matter how they change the name and face, war is an ugly unyielding traditional event',\n", - " '(orko eloheim)',\n", - " '(orko eloheim)',\n", - " 'when the satellites move around the earth like the death star',\n", - " \"the planet's spinning faster, now you're feeling the free fall\",\n", - " 'ancient future primitive, vocabulary unlimited',\n", - " \"we fall through time and space, be at one with the bass, y'all\",\n", - " '(kaigen)',\n", - " '何世紀経とうが、暴力の応酬の踏襲は依然有史以前と同じ/',\n", - " '顔や名前を変えても戦争はしぶとい醜い伝統行事/',\n", - " 'centuries have passed but the continuous exchange of violence is the same as that of the prehistoric days',\n", - " 'no matter how they change the name and face, war is an ugly unyielding traditional event']},\n", - " 'rock': {'meta': {'train_data': ['oh, baby, so young cd スタイル (yeah, yeah, yeah)',\n", - " 'ウォークマン片手にhead phone スタイル (yeah, yeah, yeah)',\n", - " 'wow, black, r&b キラリ スマイル (yeah, yeah, yeah)',\n", - " 'ただ そういうアナタの理解しだい (yeah, yeah, yeah)',\n", - " \"ooh, let's format 飽和状態\",\n", - " \"dead zone, let's go! 息がつけない\",\n", - " 'アウ! アウ! アウ! アウ!',\n", - " 'アウ! アウ! アウ! アウ!',\n", - " 'tokyo cityにdcスタイル (yeah, yeah, yeah)',\n", - " 'あー tokyoは二人を抱いてるスタイル (yeah, yeah, yeah)',\n", - " 'ooh-ビタミンb.d.やけにスパイス (yeah, yeah, yeah)',\n", - " 'ただそういうアナタのミライ不在 (yeah, yeah, yeah)',\n", - " \"ooh, let's format! なんかlo-fi!\",\n", - " \"red zone, let's go! 針はふれない\",\n", - " 'アウ! アウ! アウ! アウ!',\n", - " 'アウ! アウ! アウ! アウ!',\n", - " 'for young electric pop',\n", - " 'for young electric pop',\n", - " 'for young electric pop',\n", - " \"let's format! 飽和状態\",\n", - " \"let's forget! なんかlo-fi\",\n", - " 'cool, cool, cool! 息がつけない',\n", - " 'アウ! アウ! アウ! アウ!',\n", - " 'アウ! アウ! アウ! アウ!',\n", - " 'アウ',\n", - " 'for young electric pop',\n", - " 'for young electric pop',\n", - " 'for young electric pop',\n", - " 'for young electric pop',\n", - " 'for young electric pop',\n", - " 'for young electric pop',\n", - " 'for young electric pop',\n", - " 'for young electric pop',\n", - " 'for young electric pop (アウ! アウ!)',\n", - " 'for young electric pop (アウ!)',\n", - " 'for young electric pop',\n", - " 'for young electric pop',\n", - " 'red green white green red red white',\n", - " 'red green white green red red white',\n", - " 'red green white green red red white',\n", - " 'red green white green red red white',\n", - " '今夜はこれが三原色 世界にあふれる holy christmas time',\n", - " 'red green white green red red white',\n", - " 'red red white green green white red',\n", - " 'white white red green blue red white',\n", - " 'red red pink pink white green white',\n", - " 'ひとりでゴロゴロいいんじゃない',\n", - " 'ふたりでうとうとアリじゃない?',\n", - " '恋人 友達 ファミリーに',\n", - " '今年いちばんのありがとう',\n", - " '今夜はこれが三原色 世界にあふれる holy christmas time',\n", - " '老いも若きも最大級 世界は丸ごと holy christmas time',\n", - " '今夜をつつむ三原色 世界にあふれる holy christmas time',\n", - " 'あなたに愛を 私に愛を 少しの愛を しみ込む愛を',\n", - " '丸い世界を いばれる世界を love love love',\n", - " 'かなしいことも たのしいことも この夜だけは 忘れらんないよ',\n", - " 'どんな時代も これしかないよ love love love love',\n", - " 'red green white green red red white',\n", - " 'red green white green red red white',\n", - " 'red green white green red red white',\n", - " 'red green white green red red white',\n", - " 'red green white green red red white',\n", - " 'red green white green red red white',\n", - " \"i don't know why\",\n", - " \"i don't know reason to fight\",\n", - " \"it's just for joy\",\n", - " \"i don't know why\",\n", - " \"i don't know reason to die\",\n", - " \"it's just for show\",\n", - " '想像していたような everything is imitation',\n", - " 'die inside, おどけて笑う',\n", - " \"they don't know what you want\",\n", - " 'the sacrifice is never knowing',\n", - " 'dawn dawn',\n", - " 'what should i do?',\n", - " 'ding‐dong',\n", - " 'i hear sound of the bell',\n", - " 'abracadabra',\n", - " 'i said words',\n", - " '簡単に全部リセットできたら',\n", - " 'こうやって泣いちゃいないよ',\n", - " 'give me',\n", - " 'and i know',\n", - " 'give me',\n", - " 'and you know',\n", - " '理想とか期待では',\n", - " '明日は変わらない',\n", - " 'give me',\n", - " 'and i know',\n", - " 'give me',\n", - " 'and you know',\n", - " '少しでも描いたら',\n", - " 'その希望を',\n", - " '離さないで',\n", - " 'ほら',\n", - " \"i don't know why\",\n", - " \"i don't know reason to try\",\n", - " \"it's just for fame\",\n", - " \"i don't know why\",\n", - " \"i don't know reason to hide\",\n", - " \"it's just for fun\",\n", - " 'give me',\n", - " 'and i know',\n", - " 'give me',\n", - " 'and you know',\n", - " '理想とか期待では',\n", - " '明日は変わらない',\n", - " 'give me',\n", - " 'and i know',\n", - " 'give me',\n", - " 'and you know',\n", - " '痛いくらい悩んでも',\n", - " '離さないで',\n", - " 'いつだって考えて',\n", - " '足を止めてさまよった',\n", - " '曖昧なこの心情は息を止めた',\n", - " 'give me',\n", - " 'and i know',\n", - " 'give me',\n", - " 'and you know',\n", - " '理想とか期待では',\n", - " '明日は変わらない',\n", - " 'give me',\n", - " 'and i know',\n", - " 'give me',\n", - " 'and you know',\n", - " '“居たい”願いを繋いだら',\n", - " 'その希望を',\n", - " '離さないで',\n", - " '景色よ色褪せてゆけ',\n", - " 'カラカラにのどは渇いて',\n", - " '運び込む恋人達は僕だけの物だよ',\n", - " 'foreverキスをすれば甘くgood taste',\n", - " '服を脱がし今確かめよう',\n", - " 'パパやママには内緒だよ',\n", - " 'いずれ分る時が来るから',\n", - " 'i feel so good inside',\n", - " 'i feel so good inside',\n", - " 'tonight songs sing a song',\n", - " 'dissonance boogie',\n", - " 'tonight songs sing a song',\n", - " 'dissonance boogieめくるめく溺愛の歌は',\n", - " '不協和音のブギーであなたにもあげたい',\n", - " '欲望が殺意へと変われば',\n", - " 'i feel so good inside',\n", - " 'i feel so good inside',\n", - " 'tonight songs sing a song dissonance boogie',\n", - " 'tonight songs sing a song dissonance boogie',\n", - " 'tonight songs sing a song dissonance boogie',\n", - " 'tonight songs sing a song [dissonance boogie]',\n", - " '夜よこの破廉恥な想像を綺麗に包んでよ',\n", - " \"criminal dreaming, you're chelsea girl\",\n", - " '甘く鋭利な瞬間[しゅんかん]',\n", - " '小生意気な君の目にも',\n", - " \"criminal dreaming, you're chelsea girl\",\n", - " 'ah… uh… ah…',\n", - " '深く 濁った 底辺を蠢き',\n", - " '認められない羽を生やした俺は「素敵かい?」',\n", - " '「無様」な振る舞いがお似合いだろ?それでい',\n", - " \"俺は生きる腐ったvery fuck'in doubter!\",\n", - " 'natural born trash human',\n", - " 'natural born worthless fellow',\n", - " 'natural born rebel spirit',\n", - " 'it is good as orange rotted',\n", - " '手を伸ばし 届く筈もない壁を睨む',\n", - " 'do you see this muzzle that aims at your head now?',\n", - " 'now by this hand in a free cockroach some time',\n", - " 'do you see this muzzle that aims at your head now?',\n", - " 'i am seen. in the future when you fall on ground...',\n", - " '手を伸ばせば 届くと信じていたい',\n", - " 'natural born trash human',\n", - " 'natural born worthless fellow',\n", - " 'natural born rebel spirit',\n", - " 'it is good as orange rotted!',\n", - " 'don’t you give me your love and passion?',\n", - " '(believe in love, even though',\n", - " 'there are borders and disturbance and more',\n", - " 'i’m the only one who loves you',\n", - " 'because i’m crazy about you)',\n", - " 'let’s ride to hell, 追従してgo',\n", - " '一緒なら寧ろ死にたいじゃない',\n", - " 'beyond the line 果てなんかない',\n", - " 'i swear, i’m gonna be so fxxking grateful',\n", - " 'blessing word 貴方は至高',\n", - " '命令に your highness 忠実にfollow',\n", - " 'you give orders 渡しはしない',\n", - " '何より尊い存在(もの)よ',\n", - " 'you don’t know why my love is crying',\n", - " '凝着したい 過剰なくらい',\n", - " '永遠(とわ)になりたい don’t wanna cry',\n", - " '嫉妬妄想狂いそうよ',\n", - " 'don’t you give me your love and passion?',\n", - " '愛とは暴動衝動 let go',\n", - " '精神(こころ)以上に本能、心臓(ハート)まで more 要求したい',\n", - " 'i don’t want to live in a world without you',\n", - " '貴方以外のこの未来を kill it, kill it',\n", - " 'i would be happy to kill it for my love',\n", - " 'go till the end 視線は lock',\n", - " '遮られずに遂げたい願い',\n", - " 'straight to you 純心は fly',\n", - " 'above the star and sun… so fxxking wonderful',\n", - " 'hey, get out 冗談じゃない',\n", - " '視界の dirty は排除してtrash',\n", - " 'kick them out 容赦など無い',\n", - " '誰より譲れぬ存在(もの)よ',\n", - " 'i’m in the dark, can’t see your eyes',\n", - " '暗い視えない 孤独は痛い',\n", - " '共に居たい no more. time!',\n", - " '窒息もう苦しいよ',\n", - " 'won’t you come and hold me tight',\n", - " '愛とは純情結晶 get all',\n", - " '想像以上の恩情、hard な応え要望してる',\n", - " 'i wanna make it with you, baby',\n", - " '貴方の愛を得られるなら risk it, risk it',\n", - " 'i’m gonna risk it all what’s for two of us',\n", - " '狂う愛憎模様 marble に溶解して',\n", - " '1(one) and all、融合 焦燥さえも',\n", - " '形状は悲壮 自由に細胞単位で',\n", - " 'you don’t know why my love is crying',\n", - " '凝着したい 過剰なくらい',\n", - " '永遠(とわ)になりたい don’t wanna cry',\n", - " '抱擁してよもっと',\n", - " 'don’t you give me your love and passion?',\n", - " '貴方の全て頂戴',\n", - " '理由なんて要らない 唯愛し愛されてたい',\n", - " 'i don’t want to live in a world without you',\n", - " '貴方以外何も要らない get it, get it',\n", - " 'i can’t resist it. get it for my love',\n", - " 'i’ll spend my life for loving you',\n", - " 'kill it, kill it',\n", - " '(i’m imaging now, if you’re mine',\n", - " 'it’s like a paradise and haven and more',\n", - " 'you’re the only man who i love',\n", - " 'in my life and destiny and all)',\n", - " 'don’t you give me your love and passion?',\n", - " 'i know the border. it should be wrecked, go',\n", - " 'are you fucking with me?',\n", - " 'bomb! bomb! bomb!',\n", - " 'bring it on!! bring it on!!',\n", - " \"why you trippin' boy, you ain’t shit\",\n", - " 'motherfucker!',\n", - " 'pop rock, rap sell out',\n", - " 'business talk shit. oh shit',\n", - " 'come on mother fucking japanese',\n", - " '脳天突き刺す覚醒 high zone',\n", - " '反乱分子 mad terrorist',\n", - " '「yellow monkey」「japanese culture」「propaganda」「rape」',\n", - " '自虐 nadir motherfucker',\n", - " 'you scum sucker',\n", - " 'loser負け犬の烙印',\n", - " '枷を解くドクドク脈打つ鼓動に問い掛ける',\n", - " '侵食された現状に順応(fuck)',\n", - " '虐げられた現状に順応(fuck)',\n", - " '踠き足掻く気高き遠吠え轟かす',\n", - " 'are you fuckin ready or guys?',\n", - " 'stand up!!',\n", - " 'take back control',\n", - " 'stand up!!',\n", - " 'take this shit by force',\n", - " 'stand up!!',\n", - " \"that's how i roll\",\n", - " 'stand up!!',\n", - " 'take this shit by force',\n", - " 'do-or-die!砕け散る一縷の望み',\n", - " '蛇の道這いずる弱きはfuckin die!!',\n", - " 'break it down!救いはない報いを受けろ',\n", - " 'motherfucker hustler 発火 die in a fire',\n", - " 'do-or-die!砕け散る一縷の望み',\n", - " '蛇の道這いずる弱きはfuckin die!!',\n", - " '「道無き未知の道 導き行き着く先',\n", - " 'カタチ無き 価値あるモノ求めて唄う」',\n", - " 'stand up!!',\n", - " 'take back control',\n", - " 'stand up!!',\n", - " 'take this shit by force',\n", - " 'stand up!!',\n", - " \"that's how i roll\",\n", - " 'stand up!!',\n", - " 'take this shit by force',\n", - " 'light the truth together',\n", - " 'find it out remember',\n", - " 'wow oh oh oh oh wow',\n", - " 'wow oh oh oh oh wow',\n", - " 'wow oh oh oh oh wow',\n", - " 'wow oh oh oh oh wow',\n", - " 'あの日 約束を信じて',\n", - " 'ずっと時を重ねて来た',\n", - " 'そう君だけの夢や希望',\n", - " '決して消させやしないため',\n", - " '誰かを救うその強さも',\n", - " '戸惑い嘆くその弱さも',\n", - " '今この時この場所が',\n", - " '明日を描く事信じて',\n", - " 'remember me',\n", - " 'whatever this result means',\n", - " 'remember me',\n", - " \"we're living in a split screen\",\n", - " 'remember me',\n", - " 'along again you will see, will see, will see, with me',\n", - " 'light the truth together',\n", - " '何かそう届きそうな気がした',\n", - " 'find it out remember',\n", - " 'こんな星の夜は きっと',\n", - " 'ランタンを灯し',\n", - " '暗闇に道標照らし出し',\n", - " 'find it out remember',\n", - " '夢抱き叫んでいた',\n", - " 'light the truth and shine your life',\n", - " 'wow oh oh oh oh wow',\n", - " 'wow oh oh oh oh wow',\n", - " 'wow oh oh oh oh wow',\n", - " 'wow oh oh oh oh wow',\n", - " '僕が生きる今日その意味を',\n", - " 'ただこの手で掴むまで',\n", - " 'ほんの僅かな後悔も',\n", - " '残さず歩き続けて行く',\n", - " '誰かの大切な笑顔が',\n", - " 'あるべき場所にあるために',\n", - " 'いろんな色や形 匂い',\n", - " '1つも 見落とさぬ様に',\n", - " 'remember me',\n", - " 'whatever this result means',\n", - " 'remember me',\n", - " \"we're living in a split screen\",\n", - " 'remember me',\n", - " 'along again you will see, will see, will see, with me',\n", - " 'find it our remember',\n", - " 'find it our remember',\n", - " 'light the truth together',\n", - " '何かそう届きそうな気がした',\n", - " 'find it out remember',\n", - " 'こんな星の夜は きっと',\n", - " 'ランタンを灯し',\n", - " '暗闇に道標照らし出し',\n", - " 'find it out remember',\n", - " '夢抱き叫んでいた',\n", - " 'light the truth and shine your life',\n", - " 'wow oh oh oh oh wow',\n", - " 'wow oh oh oh oh wow',\n", - " 'wow oh oh oh oh wow',\n", - " 'wow oh oh oh oh wow',\n", - " 'light the truth together ooh',\n", - " 'find it out remember',\n", - " 'light the truth together ooh',\n", - " 'find it out remember ooh',\n", - " \"sun will come out. i'm so happy now\",\n", - " 'because i have the treasure',\n", - " 'well, do you know what?',\n", - " \"no, it's not fortune and it's not the fame\",\n", - " 'when i fall down it picks me up',\n", - " 'yes! the thing is you!',\n", - " '答えはいつでも君の声にあった',\n", - " '転んでしまっても手を取り笑ってくれたね',\n", - " 'いつでも いつでも',\n", - " 'その声を聴かせてよ',\n", - " \"i won't like you and you won't like me\",\n", - " \"but you're the only one\",\n", - " 'i… i want in this world',\n", - " \"when you hear this. you'll know it's your song\",\n", - " 'i mean to say this “thanks to you',\n", - " \"won't let no one hurt you!\",\n", - " '答えはいつでも君の声にあった',\n", - " '僕の全部を僕より分かってくれたね',\n", - " 'いつでも いつでも',\n", - " 'その声を守るから',\n", - " 'when i close my eyes. i always float your face',\n", - " \"it's just another day. but i keep trying so hard\",\n", - " 'when i close my eyes. i always float your face',\n", - " \"i've never seen one like you\",\n", - " \"i'm so glad i met\",\n", - " '答えはいつでも君の声にあった',\n", - " '転んでしまっても手を取り笑ってくれたね',\n", - " 'いつでも いつでも',\n", - " 'その声を聴かせてよ',\n", - " 'その声を守るから',\n", - " 'その声を聴かせてよ',\n", - " 'その声を守るから',\n", - " 'play in the circle',\n", - " 'come pay for your filthiness',\n", - " 'the bloody scaffold and bitch',\n", - " 'please die… before i die',\n", - " '虚偽と嘯く目',\n", - " 'evil fame',\n", - " 'inside #2',\n", - " '完全に歪んだinsane',\n", - " 'death to traitors',\n", - " 'scaffold and bitch',\n", - " '憎悪鳴らせ 侵した数だけ',\n", - " 'death to traitors',\n", - " 'scaffold and bitch',\n", - " '忘却願うcrime',\n", - " 'この痛みは届かない',\n", - " '嘘と生きる君へ',\n", - " '眠れぬ俺の傍で',\n", - " 'are you still alive?',\n", - " 'play in the circle',\n", - " 'come pay for your filthiness',\n", - " 'the bloody scaffold and bitch',\n", - " 'please die…before i die',\n", - " '虚偽と嘯く目',\n", - " 'evil fame',\n", - " 'inside #2',\n", - " '完全に歪んだinsane',\n", - " 'fxxk',\n", - " 'traitors',\n", - " 'scaffold and bitch',\n", - " '憎悪鳴らせ 侵した数だけ',\n", - " 'death to traitors',\n", - " 'scaffold and bitch',\n", - " '忘却願うcrime',\n", - " '罪と転がり変われない',\n", - " '醜さと散る君は',\n", - " '今でも死の淵に立つ',\n", - " 'are you still alive?',\n", - " 'death to traitors',\n", - " 'scaffold and bitch',\n", - " '憎悪鳴らせ 侵した数だけ',\n", - " 'death to traitors',\n", - " 'scaffold and bitch',\n", - " '忘却願うcrime',\n", - " 'アイドンビリーブマイ母性',\n", - " '他人事じゃないよ児童虐待',\n", - " 'アイドンビリーブマイ母性',\n", - " '他人事じゃないよ児童虐待',\n", - " 'アイドンビリーブマイ母性',\n", - " '他人事じゃないよ児童虐待',\n", - " 'アイドンビリーブマイ母性',\n", - " '他人事じゃないよ児童虐待',\n", - " 'カームダウンマイ情緒',\n", - " 'カームダウンマイ情緒',\n", - " 'カームダウンマイ情緒',\n", - " 'ホルモンバランスに深く敬礼',\n", - " '犬がすきわたし犬がすきわたし犬がすき',\n", - " 'わたし産むとしたら犬',\n", - " '犬がすきわたし犬がすきわたし犬がすき',\n", - " 'わたし産むとしたら犬',\n", - " 'アイドンビリーブマイ母性',\n", - " '他人事じゃないよ児童虐待',\n", - " 'アイドンビリーブマイ母性',\n", - " '他人事じゃないよ児童虐待',\n", - " 'アイドンビリーブマイ母性',\n", - " '他人事じゃないよ児童虐待',\n", - " 'アイドンビリーブマイ母性',\n", - " '他人事じゃないよ児童虐待',\n", - " 'カームダウンマイ情緒',\n", - " 'カームダウンマイ情緒',\n", - " 'カームダウンマイ情緒',\n", - " 'カームダウンマイ情緒',\n", - " 'カームダウンマイ情緒',\n", - " 'カームダウンマイ情緒',\n", - " 'カームダウンマイ情緒',\n", - " 'ホルモンバランスに深く敬礼',\n", - " '孫の顔見せて孫の顔見せて孫の顔見せて',\n", - " '見せてから戻す',\n", - " '孫の顔見せて孫の顔見せて孫の顔見せて',\n", - " '見せてから戻す',\n", - " '先祖代々 至極自己実現',\n", - " '先祖代々 至極自己実現',\n", - " '先祖代々 至極自己実現',\n", - " '先祖代々 地獄!自己実現',\n", - " 'i don’t believe in my maternal instinct',\n", - " \"it's not none of my business! child abuse!\",\n", - " 'i don’t believe in my maternal instinct',\n", - " \"it's not none of my business! child abuse!\",\n", - " 'i don’t believe in my maternal instinct',\n", - " \"it's not none of my business! child abuse!\",\n", - " 'i don’t believe in my maternal instinct',\n", - " \"it's not none of my business! child abuse!\",\n", - " 'please calm down my emotional instability',\n", - " 'please calm down my emotional instability',\n", - " 'please calm down my emotional instability',\n", - " 'take a deep bow to my hormone balance',\n", - " 'i love dogs, i love dogs, i love dogs',\n", - " 'i deliver a puppy, not a baby',\n", - " 'i love dogs, i love dogs, i love dogs',\n", - " 'i deliver a puppy, not a baby',\n", - " 'i don’t believe in my maternal instinct',\n", - " \"it's not none of my business! child abuse!\",\n", - " 'i don’t believe in my maternal instinct',\n", - " \"it's not none of my business! child abuse!\",\n", - " 'i don’t believe in my maternal instinct',\n", - " \"it's not none of my business! child abuse!\",\n", - " 'i don’t believe in my maternal instinct',\n", - " \"it's not none of my business! child abuse!\",\n", - " 'please calm down my emotional instability',\n", - " 'please calm down my emotional instability',\n", - " 'please calm down my emotional instability',\n", - " 'please calm down my emotional instability',\n", - " 'please calm down my emotional instability',\n", - " 'please calm down my emotional instability',\n", - " 'please calm down my emotional instability',\n", - " 'take a deep bow to my hormone balance',\n", - " 'having let my parents meet their grandkid',\n", - " 'their grandkid, their grandkid',\n", - " 'i immediately put it back in my belly',\n", - " 'through generations sheer pleasures! self-realization',\n", - " 'through generations sheer pleasures! self-realization',\n", - " 'through generations sheer pleasures! self-realization',\n", - " 'through generations sheer agony! self-realization',\n", - " 'tears filled on the sky',\n", - " 'it is ready to cry',\n", - " 'their spirits to fly',\n", - " 'it will spill from sky rim',\n", - " 'my eyes could see crack on sky',\n", - " 'heavy weather will come to near',\n", - " 'under the sky that seems to come fall any moment',\n", - " \"you're very kind\",\n", - " 'you have good mind',\n", - " \"i don't find any correct\",\n", - " 'was not pleased with that one',\n", - " 'my eyes could see crack on sky',\n", - " 'heavy weather will come to near',\n", - " 'under the sky that seems to come fall any moment',\n", - " 'tears filled on the sky',\n", - " 'it is ready to cry',\n", - " 'their spirits to fly',\n", - " 'it will spill from sky rim',\n", - " 'my eyes could see crack on sky',\n", - " 'heavy weather will come to near',\n", - " 'under the sky that seems to come fall any moment',\n", - " '涙が空を埋め尽くし 泣き出す寸前だ',\n", - " '彼らの魂が飛び交い 空の淵からこぼれる',\n", - " '私の目に空の亀裂が映る',\n", - " '暗雲が立ち込める',\n", - " '今にも落ちてきそうだ',\n", - " '君はやさしい \"よき心\"を携えている',\n", - " '私は\"正解\"を見つけられない それに満足できない',\n", - " '私の目に空の亀裂が映る',\n", - " '暗雲が立ち込める',\n", - " '今にも落ちてきそうだ',\n", - " '涙が空を埋め尽くし 泣き出す寸前だ',\n", - " '彼らの魂が飛び交い 空の淵からこぼれる',\n", - " '私の目に空の亀裂が映る',\n", - " '暗雲が立ち込める',\n", - " '今にも落ちてきそうだ',\n", - " 'check check check target, how many?',\n", - " 'hey hey! ダダダダダディガディディディラッタッタッタタラー',\n", - " \"ready to go, let's run away 1-2-3 yeah! yeah!\",\n", - " 'there to go, fire bison 全てを突き飛ばしburst!',\n", - " 'rush! fire bison',\n", - " 'rush! fire bison',\n", - " 'rush! fire bison',\n", - " 'rush! fire bison',\n", - " 'check check check microphone, how is it?',\n", - " 'hey hey! ドゥダドゥダドゥヤイヤイヤイヤイルットゥトゥトゥル',\n", - " 'ok go, are you tired already? yeah! yeah!',\n", - " 'boo boo boo rolling bison 全てをなぎ倒しblast!',\n", - " 'rush! rolling bison',\n", - " 'rush! rolling bison',\n", - " 'rush! rolling bison',\n", - " 'rush! rolling bison',\n", - " '逆に恐くて叫べないよ',\n", - " '思い切り蹴っ飛ばす蹴っ飛ばす',\n", - " '止まるな助かるまで',\n", - " '周りはジャマするな自分次第で',\n", - " 'check check check target, how many?',\n", - " 'hey hey! ダダダダダディガディディディラッタッタッタタッター',\n", - " \"ready to go, let's run away 1-2-3 yeah! yeah!\",\n", - " '大爆破 fire bison それではさようなら bye!',\n", - " 'rush! fire bison',\n", - " 'rush! fire bison',\n", - " 'rush! fire bison',\n", - " 'rush! fire bison',\n", - " 'fire bison',\n", - " 'fire bison',\n", - " 'fire bison',\n", - " 'fire bison',\n", - " '木漏れ日に手を翳して',\n", - " 'with my headphone 歩き出した',\n", - " 'will you talk to me',\n", - " 'in front of the garden gate',\n", - " 'lately, are you feeling unhappy again',\n", - " \"cold winter's day, and she cried again\",\n", - " 'walking and thinking about',\n", - " \"what's inside your head\",\n", - " 'with my shoes on',\n", - " '軽快なステップ刻んで',\n", - " '始まりは 終わりだって',\n", - " '雨上がって 気付いたんだ',\n", - " 'wake me up',\n", - " 'when you feel like talking',\n", - " 'when you feel like walking',\n", - " '始まりを 怖れたのは',\n", - " '幼かっただけじゃない',\n", - " 'broken in million',\n", - " 'when you feel like singing',\n", - " 'can you feel me right now',\n", - " 'let me know',\n", - " '人は何か手に入れた時',\n", - " '同時に何失うのかな?',\n", - " '空想で積み上げたストーリー',\n", - " '目の前に広がった庭で',\n", - " '今まで選んだこの道も',\n", - " 'people usually do not find something',\n", - " \"until it's gone\",\n", - " 'i know where you come from',\n", - " '始まりは 終わりだって',\n", - " '雨上がって 気付いたんだ',\n", - " 'wake me up',\n", - " 'when you feel like talking',\n", - " 'when you feel like walking',\n", - " '冬の空に 思い馳せて',\n", - " '歌い出して 探してるのさ',\n", - " 'where are you now',\n", - " 'when you feel like singing',\n", - " 'can you feel me right now',\n", - " 'let me know',\n", - " 'handed something',\n", - " 'loosing something again',\n", - " 'wonder if everyone is living like this?',\n", - " 'tell me why',\n", - " 'drop in from time to time',\n", - " 'can you hear my story',\n", - " '冬の空に 思い馳せて',\n", - " '歌い出して 探してるのさ',\n", - " 'where are you now',\n", - " 'when you feel like smiling',\n", - " 'can you feel me right now',\n", - " '始まりは 終わりだって',\n", - " '雨上がって 気付いたんだ',\n", - " 'wake me up',\n", - " 'when you feel like talking',\n", - " 'can you feel me right now',\n", - " 'let me know',\n", - " 'where are we now?',\n", - " \"it's never too late\",\n", - " 'coming in',\n", - " 'coming out',\n", - " '周り 見てみな',\n", - " 'ノイズ まみれで',\n", - " 'you can’t see me but you hear me loud',\n", - " 'don’t that make you crazy now',\n", - " 'don’t that make you crazy now',\n", - " '目を凝らせ この世界は',\n", - " 'it’s all upside down',\n", - " 'coming in',\n", - " 'coming out',\n", - " '周り 見てみな',\n", - " 'ノイズ まみれで',\n", - " 'you can’t see me but you hear me loud',\n", - " 'don’t that make you crazy now',\n", - " 'don’t that make you crazy now',\n", - " '目を凝らせ この世界は',\n", - " 'it’s all upside down',\n", - " 'don’t stop 戻れない flashback',\n", - " 'look up 気づけば it’s all past',\n", - " 'too fast 引き裂かれそうさ sa',\n", - " 'don’t stop 戻れない flashback',\n", - " 'look up 気づけば it’s all past',\n", - " 'too fast 引き裂かれそうさ sa',\n", - " 'don’t stop 戻れない flashback',\n", - " 'look up 気づけば it’s all past',\n", - " 'too fast 引き裂かれそうさ sa',\n", - " 'don’t stop 戻れない flashback',\n", - " 'look up 気づけば it’s all past',\n", - " 'too fast 引き裂かれそうさ sa',\n", - " 'don’t stop 戻れない flashback',\n", - " 'look up 気づけば it’s all past',\n", - " 'too fast 引き裂かれそうさ sa',\n", - " 'don’t stop 戻れない flashback',\n", - " 'look up 気づけば it’s all past',\n", - " 'too fast 引き裂かれそうさ sa',\n", - " 'don’t stop 戻れない flashback',\n", - " 'look up 気づけば it’s all past',\n", - " 'too fast 引き裂かれそうさ sa',\n", - " 'don’t stop 戻れない flashback',\n", - " 'look up 気づけば it’s all past',\n", - " 'too fast 引き裂かれそうさ sa',\n", - " 'don’t stop 戻れない flashback',\n", - " 'look up 気づけば it’s all past',\n", - " 'too fast 引き裂かれそうさ sa',\n", - " 'here with you now i am good, still miss you',\n", - " \"i don't know what i can do, we can't be true\",\n", - " '満たされる事なく二人の距離',\n", - " '縮まっていく度切ない',\n", - " '溢れ出した想いつのるだけで',\n", - " \"uh it's hard for me to say\",\n", - " \"'cause we, we can see how it's gonna end\",\n", - " 'but i got my love for you',\n", - " 'もしもこのまま君を忘れる事ができたら',\n", - " 'なんて思えば思うほどに',\n", - " '君を忘れることなんて僕にはできるはずもなくて',\n", - " 'we always wish tonight could last forever',\n", - " 'i can be your side',\n", - " \"i shouldn't be in your heart\",\n", - " 'either the time we have spent',\n", - " 'and i want you to know what the truth is',\n", - " 'but sometimes it makes me feel so sick, oh no',\n", - " \"i just can't say to you, no i won't\",\n", - " \"'cause we, we can see how it's gonna end\",\n", - " 'but i got my love for you',\n", - " 'もしもこのまま君を忘れてしまったら',\n", - " '二度と愛する事もないかな?',\n", - " '僕は本当にそれで心から幸せと言えるかな?',\n", - " 'yes, we always wish tonight could last forever',\n", - " 'i can be your side',\n", - " '空を見つめては (staring at an empty sky)',\n", - " 'そっとうずくまる (crouch down gently)',\n", - " '空をうずめてく (buried in an empty sky)',\n", - " '石を積む右手 (right hand gains a jewel)',\n", - " '空をうずめてく (buried in an empty sky)',\n", - " 'きっと雨が濡らす (surely the rain will dampen)',\n", - " 'この土砂降りのハレルヤ (hallelujah for this downpour)',\n", - " '積まれた嘘流して (piled lies wash away)',\n", - " '彼に唱えた 風 (distant cries wind)',\n", - " '髪の隙間をぬけた (passes through hair)',\n", - " 'その滴りを (those drops)',\n", - " '奪って (steal away steal away)',\n", - " '空を見つめて (staring at the sky)',\n", - " '知ったふりをする (pretend to have known)',\n", - " '空を見つめて (staring at the sky)',\n", - " 'ずっと意味は濡れる (the meaning of the wetness all along)',\n", - " 'いくつものずるさを (so many dishonest things)',\n", - " '積もうとして (become the burden)',\n", - " 'いつ終えると知れず (when will it finish and be known)',\n", - " '幾重にもずらす (over and over pushed away)',\n", - " '雨は止むの? (a break in the rain?)',\n", - " 'アナタを道連れに (you unwilling fellow traveler)',\n", - " 'あの空にいた (in the distant sky)',\n", - " '雨音 (the sound of rain)',\n", - " 'バンドメイド 「alive-or-dead」 歌詞',\n", - " 'why?',\n", - " '姿眩ませて why?',\n", - " '膨らむ代償 why?',\n", - " 'who said? you said?',\n", - " \"i don't know that\",\n", - " 'lie? 見定め確証',\n", - " 'lie? 刻むブロック the truth',\n", - " 'getting growing',\n", - " 'a chain reaction',\n", - " 'i feel it coming, i feel it coming',\n", - " '迷路みたいな 意図をほどいて',\n", - " 'i feel it coming',\n", - " 'caught in the undertow',\n", - " 'believe in fate',\n", - " 'please 罫線を超えて昇ってく もっと',\n", - " '動く変化に予測不能 future',\n", - " '保証の有無など 気にしてちゃ',\n", - " \"you don't get it 奇跡はない\",\n", - " '呪文の様に 羅列するborder',\n", - " '溶けない様に 繰り返し to pile up',\n", - " \"i'll take you with me to the other side\",\n", - " \"i'll take you with me to the other side\",\n", - " '蠢く欲望',\n", - " '灯すよ blackに',\n", - " '一息で 吹き消す炎に oh, oh',\n", - " \"'cause now we are\",\n", - " 'partners in crime',\n", - " 'check',\n", - " '与える影響 check',\n", - " '焦げ付く心理に face',\n", - " 'to live or to die, a choice you make',\n", - " 'i feel it coming, i feel it coming',\n", - " '転がすように 未来紡いで',\n", - " 'i feel it coming',\n", - " 'caught in the undertow',\n", - " 'believe in fate',\n", - " 'please ピリオド壊して創っていく 今日を',\n", - " \"遮られても 切り開け make one's way\",\n", - " '見えないリスクを 閉じ込めて',\n", - " 'watch your step 踏み外すな',\n", - " '奇術の様に 泡になるnose dive',\n", - " 'もがいてもがいて 掴み取る foggy night',\n", - " \"i'll take you with me to the other side\",\n", - " \"i'll take you with me to the other side\",\n", - " 'i feel it coming, i feel it coming',\n", - " '迷路みたいな 意図をほどいて',\n", - " 'i feel it coming',\n", - " 'caught in the undertow',\n", - " 'believe in fate',\n", - " 'virtual reality space',\n", - " 'please 罫線を超えて昇ってく もっと',\n", - " '動く変化に予測不能 future',\n", - " '保証の有無など 気にしてちゃ',\n", - " \"you don't get it 奇跡はない\",\n", - " '呪文の様に 羅列するborder',\n", - " '溶けない様に 繰り返し to pile up',\n", - " \"i'll take you with me to the other side\",\n", - " \"i'll take you with me to the other side\",\n", - " 'japanese:',\n", - " 'うちひしがれてるとき お前は来た',\n", - " 'うちのめされてるとき お前は来た',\n", - " 'やさしく寄りそうように 笑いかける',\n", - " '妙なもの売るために お前は来た',\n", - " 'みんな待ちこがれている 救いの手を',\n", - " 'みんな待ちつづけている 救いの手を',\n", - " 'みんな待ちつかれたとき 誘ってくる',\n", - " '妙に耳障りよく 甘い溶けそうな言葉で',\n", - " '(めちゃくちゃ悪い男) 誘ってくる',\n", - " '(めちゃくちゃ悪い男) 誘ってくる',\n", - " '(めちゃくちゃ悪い男) 誘ってくる',\n", - " '妙なもの売るために お前は来た',\n", - " '(みんな待ちこがれている) 救いの手を',\n", - " '(みんな待ちつづけている) 救いの手を',\n", - " '(みんな待ちつかれたとき) 誘ってくる',\n", - " '妙に耳障りよく 甘い溶けそうな言葉で',\n", - " '(めちゃくちゃ悪い男) お前は来た',\n", - " '(めちゃくちゃ悪い男) お前は来た',\n", - " '(めちゃくちゃ悪い男) お前は来た',\n", - " '(めちゃくちゃ悪い男) お前は来た',\n", - " 'romaji:',\n", - " 'uchi hishigareteru toki omae wa kita',\n", - " 'uchinomesareteru toki omae wa kita',\n", - " 'yasashiku yori sōyō ni waraikakeru',\n", - " 'myōna mono uru tame ni omae wa kita',\n", - " 'minna machikogareteiru sukui no te o',\n", - " 'minna machitsuzuketeiru sukui no te o',\n", - " 'minnamachi tsukareta toki sasottekuru',\n", - " 'myō ni mimizawari yoku amai toke sōna kotoba de',\n", - " '( mechakucha warui otoko ) sasottekuru',\n", - " '( mechakucha warui otoko ) sasottekuru',\n", - " '( mechakucha warui otoko ) sasottekuru',\n", - " 'myōna mono uru tame ni omae wa kita',\n", - " '( minna machikogareteiru ) sukui no te o',\n", - " '( minna machitsuzuketeiru ) sukui no te o',\n", - " '( minnamachi tsukareta toki ) sasottekuru',\n", - " 'myō ni mimizawari yoku amai toke sōna kotoba de',\n", - " '( mechakucha warui otoko ) omae wa kita',\n", - " '( mechakucha warui otoko ) omae wa kita',\n", - " '( mechakucha warui otoko ) omae wa kita',\n", - " '( mechakucha warui otoko ) omae wa kita',\n", - " 'english:',\n", - " 'you are crazy when you are out',\n", - " 'you are caught when you are scolded me',\n", - " 'laughing so as to gently drift away',\n", - " 'you came to sell strange things',\n", - " 'everyone is waiting for the helping hand',\n", - " 'everyone waits for the helping hand',\n", - " 'everyone invites me when they are waiting',\n", - " 'strangely harsh and sweet with melting words',\n", - " '(insanely bad guy) invited',\n", - " '(insanely bad guy) invited',\n", - " '(insanely bad guy) invited',\n", - " 'you came to sell strange things',\n", - " '(everyone is longing for) a helping hand',\n", - " '(everyone is keeping on) a helping hand',\n", - " '(when everyone waits) i invite you',\n", - " 'strangely harsh and sweet with melting words',\n", - " '(insanely bad guy) you came',\n", - " '(insanely bad guy) you came',\n", - " '(insanely bad guy) you came',\n", - " '(insanely bad guy) you came',\n", - " '日本語 / japanese',\n", - " '世界の誰よりも輝ける',\n", - " 'そう信じて生きてきたのは確かなんだ',\n", - " 'でも世界の誰もがそう輝ける',\n", - " 'そう信じてこれから生きていけたらどれだけ',\n", - " '素敵なんだろう?',\n", - " '僕らの住む世界は',\n", - " 'きっときっと素敵なハズ',\n", - " 'でもなんで今日も僕らはみな自分が',\n", - " '一番可愛いんだろ?',\n", - " 'say my name',\n", - " \"i've got to take my chance to change your heart\",\n", - " 'everything will be alright tonight',\n", - " 'yes i am',\n", - " 'so keep on walking, go out through the door',\n", - " '後ろ振り向かずに行こう',\n", - " '何のために産声をあげる?',\n", - " 'この世界にきっと何かを訴えるためで',\n", - " '僕らのこの両手がもっともっと救いの手に',\n", - " '変わっていって願ってみて 明日の景色が動いていく',\n", - " 'say my name',\n", - " \"i've got to take my chance to change your heart\",\n", - " 'everything will be alright tonight',\n", - " 'yes i am',\n", - " 'so keep on walking, go out through the door',\n", - " '後ろ振り向かずに行こう',\n", - " 'you say my name',\n", - " 'you take my hand',\n", - " \"let's start it now\",\n", - " \"it's not too late\",\n", - " 'you say my name',\n", - " 'you take my hand',\n", - " \"let's start it now it's not too late\",\n", - " 'say my name',\n", - " \"i've got to take my chance to change your heart\",\n", - " 'everything will be alright tonight',\n", - " 'yes i am',\n", - " 'so keep on walking, go out through the door',\n", - " '前だけを見続けよう',\n", - " 'say my name',\n", - " \"let's start it now\",\n", - " \"it's not too late\",\n", - " 'yes i am',\n", - " '(hey lady, are you going up or do-do-do-do-do-down?)',\n", - " 'hey lady, are you going up or do-do-do-do-do-down?',\n", - " 'no matter what you say or what you do',\n", - " \"you're going do-do-do-do-do-down\",\n", - " 'are you going up or going down?',\n", - " 'hey lady, are you going up or do-do-do-do-do-down?',\n", - " '上へ参ります',\n", - " '下へ参ります',\n", - " '閉まるドアにお気をつけください',\n", - " '次は地獄に止まります',\n", - " 'going up, going down',\n", - " 'going up, going down',\n", - " 'hell yeah!',\n", - " '地下2000階',\n", - " '真っ逆さま',\n", - " '火あぶり針地獄のフロアです',\n", - " 'だからいつも命がけ',\n", - " 'going up, going down',\n", - " 'going up, going down',\n", - " 'hell yeah!',\n", - " 'hey lady, are you going up or do-do-do-do-do-down?',\n", - " 'no matter what you say or what you do',\n", - " 'you’re going do-do-do-do-do-down',\n", - " '上へ参ります',\n", - " '下へ参ります',\n", - " '閉まるドアにお気をつけください',\n", - " '次は地獄に止まります',\n", - " 'going up, going down',\n", - " 'going up, going down',\n", - " 'hell yeah!',\n", - " '地下2000階',\n", - " '真っ逆さま',\n", - " '火あぶり針地獄のフロアです',\n", - " 'だからいつも命がけ',\n", - " 'going up, going down',\n", - " 'going up, going down',\n", - " 'hell yeah!',\n", - " '上へ参ります',\n", - " '下へ参ります',\n", - " '上へ参ります',\n", - " '下へ参ります',\n", - " 'going up, going down',\n", - " 'going up, going down',\n", - " 'hell yeah!',\n", - " '上へ参ります',\n", - " '下へ参ります',\n", - " 'だからいつも命がけ',\n", - " 'going up, going down',\n", - " 'going up, going down',\n", - " 'hell yeah!',\n", - " 'i’m not interested in any betting like in pokers',\n", - " 'what’s the point of guessing which is which of them’s the jokers',\n", - " 'plenty of guessing and cheating, already right preachers?',\n", - " 'some say it’s a microcosm of this world, but who cares?',\n", - " 'i guess you’ve just chose the different planet all you haters',\n", - " 'this one’s not created for men like you, only dreamers',\n", - " 'i would kindly ask you not to bother me you creatures',\n", - " 'i’ll be good and you go home we’ll meet you in next century',\n", - " 'もう少しだけ乗ってけ',\n", - " '痛い痛いのは飛んでけ',\n", - " 'そして また恋しよう',\n", - " 'スカしてるやつぁほっとけ',\n", - " 'i guess i’m not old enough to understand my grade card',\n", - " 'first of all, how well you know about me mr. teacher?',\n", - " \"if i were you, it'd take a couple of years to give me grades\",\n", - " 'now, it’s my turn to give you one what can you do to cheer me',\n", - " 'もしかしたら僕だけ?',\n", - " 'って思った その数だけ',\n", - " '君は輝いてる',\n", - " 'ヤツらはもうほっとけ',\n", - " '冷めて固まった頭はまずチンして',\n", - " 'そのあと冷凍庫で3時間半冷やして',\n", - " '待つその間にキスでもしようか',\n", - " 'ah ah ah 脳はおいといてさ',\n", - " 'もう少しだけ乗ってけ',\n", - " '痛い痛いのは飛んでけ',\n", - " '何度でも恋しよう',\n", - " 'スカしてるやつぁほっとけ',\n", - " 'the world was silent',\n", - " 'i covered eyes and ears',\n", - " 'and fell asleep again to avoid awaking',\n", - " '夜の憂鬱を 振り解くように',\n", - " '僕をいつも そっと揺り起こすように',\n", - " 'as you did it to me',\n", - " 'ah, i wanna wake you in the same way',\n", - " \"i'll stay beside you as you stayed beside me\",\n", - " 'like you gave me love, i will give it back to you',\n", - " '君がくれたように 君に触れ',\n", - " 'ただ糧となっていられるように',\n", - " \"i'm here beside you\",\n", - " 'the world is empty',\n", - " 'if your laughter breaks off',\n", - " 'and i would never find the reason to sing here',\n", - " '日々の普通を 書き留めるように',\n", - " '君の苦痛を そっと抱き寄せるように',\n", - " 'as you did it to me',\n", - " 'ah, i wanna hold you in the same way',\n", - " 'i will stay beside you as you stayed beside me',\n", - " 'like you gave me love, i will give it back to you',\n", - " '君がくれたように 君に触れ',\n", - " 'ただ糧となっていられるように',\n", - " \"i'm here beside you\",\n", - " 'beside you, ah...',\n", - " '夜は明日の朝を迎えて',\n", - " '僕らは今を昨日に変えて',\n", - " 'ただ暮れるように 戯れるように',\n", - " '互いの日々を繋いで',\n", - " 'i will stay beside you as you stayed beside me',\n", - " 'like you gave me love, i will give it back to you',\n", - " '君がくれたように 君に触れ',\n", - " 'ただ糧となっていられるように',\n", - " 'stay beside you',\n", - " 'i will stay beside you',\n", - " 'i will stay beside you',\n", - " 'i will stay beside you',\n", - " ...]},\n", - " 'data': ['once upon a time',\n", - " 'there was an old man',\n", - " 'he went gathering firewood in the mountains',\n", - " 'and came upon a big bamboo dazzling in the woods',\n", - " 'he split the bamboo',\n", - " 'a beautiful girl appeared',\n", - " 'pale as moonlight',\n", - " 'pale as moonlight',\n", - " '可愛い男たちが',\n", - " '好きな揺れる煙',\n", - " '蜃気楼憧れた あぁ あの日の言葉忘れてさ',\n", - " 'i wish i could be free',\n", - " \"but that's just a dream\",\n", - " 'floating like a paper balloon',\n", - " 'not trapped in a cage ah',\n", - " '玉のかんざし落ち',\n", - " 'クルクル回る風車 ah',\n", - " '梅雨の雨に濡れて',\n", - " '触れてみたいは天の向こう',\n", - " 'i long to return to the moon',\n", - " 'i wanted a place to stay but',\n", - " 'i think, i like it here too',\n", - " 'when men lust for me',\n", - " 'i feel so happy',\n", - " '傷をなめあうなら',\n", - " '許してあげてもいい',\n", - " '欲しいものなど ah',\n", - " 'あたいにはない',\n", - " 'a droplet falls',\n", - " 'like a moment from forever',\n", - " 'precious, sweet and tender',\n", - " \"as a baby's heart\",\n", - " 'fall from grace',\n", - " 'into the raging darkness',\n", - " 'just to find the way',\n", - " \"back to its lover's arms\",\n", - " 'and through this fate they never understand',\n", - " 'just how endless the sea',\n", - " '終りのない世界の中 すべては生まれ変わり続け',\n", - " '形のない世界の中 目をとじれば何か見えるでしょう',\n", - " \"it's hard to find\",\n", - " 'that silent peace of mind',\n", - " 'they die to be',\n", - " 'そして何か見つけたら 手をのばしてごらん',\n", - " '怖くはない',\n", - " 'alive in an asian sky',\n", - " 'alive in an asian sky',\n", - " 'あなたが いっしょにさわいだなら',\n", - " '美しい明かり 道にともる',\n", - " '足りないのは ちょっとの勇気でしょう',\n", - " 'さぁ押してくれ 小さな背中を',\n", - " \"and this god they don't understand\",\n", - " 'why what is should be',\n", - " '僕も消えて 君も消えて 空のかなたに 登ってって',\n", - " '雨になって 大地に落ちて 命をあげて また始まる',\n", - " 'try to hide',\n", - " 'in the illusion that they fight',\n", - " 'and die to be',\n", - " 'そして花が咲いたなら ほほえんでごらん',\n", - " 'さみしくはない',\n", - " 'alive in an asian sky',\n", - " 'alive in an asian sky',\n", - " 'alive in an asian sky',\n", - " 'so high to forever fly',\n", - " '(solo)',\n", - " 'いつの頃だったか、まだ生まれたばかりの頃',\n", - " 'どんなことでも恐れずにやる勇気があった',\n", - " 'そしてそこでは、どんな境界もなく',\n", - " '見渡す限り、すべての自由があった',\n", - " '少しでも思い出して・・・',\n", - " \"i'll never know if i even knew the difference\",\n", - " 'between what is and what should never be',\n", - " 'yeah, but my hands are reaching up into the heavens',\n", - " \"'cause i wanna know what i could be\",\n", - " 'alive in an asian sky',\n", - " 'alive in an asian sky',\n", - " 'alive in an asian sky',\n", - " 'so high to forever fly',\n", - " 'alive in an asian sky',\n", - " 'alive in an asian sky',\n", - " 'alive in an asian sky',\n", - " 'so high to forever fly',\n", - " 'alive in an asian sky',\n", - " 'alive in an asian sky',\n", - " 'alive in an asian sky',\n", - " 'so high to forever fly',\n", - " \"it's not the world\",\n", - " \"but it's me that's near the end\",\n", - " 'losing you was losing everything i had',\n", - " \"it's been a while since i've noticed the first crack\",\n", - " 'but your eyes just locked me up',\n", - " 'and just have to watch myself fall',\n", - " '勝手 生きたら 離れて 必要なのは',\n", - " '間と君の心を戻すこと',\n", - " \"but i can't\",\n", - " \"i'm breaking down\",\n", - " '散らばっている少しずつ消えていく',\n", - " 'in the dark',\n", - " 'いつか 滑って 壊れたら',\n", - " 'please find my pieces and put me into one',\n", - " 'you seem just fine, almost better on your own',\n", - " \"i don't blame you cause hearts never break the same\",\n", - " 'もう一度 僕を呼んでくれれば',\n", - " '恋しかった 会いたかったと',\n", - " '涙を流すだろう',\n", - " '勝手 生きたら 離れて 必要なのは',\n", - " '時間と君の心を戻すこと',\n", - " \"but i can't\",\n", - " \"i'm breaking down\",\n", - " '散らばっている少し ずつ消え ていく',\n", - " 'in the dark',\n", - " 'いつか 滑って 壊れたら',\n", - " 'please find my pieces and put me into one',\n", - " \"i'm breaking down\",\n", - " '散らばっている少しずつ消えていく',\n", - " 'in the dark',\n", - " 'いつか 滑って壊れたら',\n", - " 'please find my pieces and put me into one',\n", - " 'like a shooting star, you came and went',\n", - " 'from the moment you fell into my atmosphere',\n", - " 'when you touched my air, you sparked with the verve',\n", - " 'like nothing i’ve ever seen',\n", - " 'my world lit up in your colours',\n", - " 'seemed so graceful, so beautiful',\n", - " 'for the first time in my life',\n", - " 'i wasn’t scared to show myself',\n", - " 'under such a radiant hope',\n", - " 'did i even have a chance',\n", - " 'to make a wish for it to last forever?',\n", - " 'you left me here mesmerized all alone',\n", - " 'when i realized, the star has faded away',\n", - " 'all that remains in my hands',\n", - " 'are the stardusts of you',\n", - " 'still floating in globe',\n", - " 'all that remains in my hands',\n", - " 'are the stardusts of you',\n", - " 'still glowing with hope',\n", - " '輝く君は僕を貫き',\n", - " '瞬く間に消え去っていった',\n", - " '残された僕は何もできずに',\n", - " 'ただひたすら君の放つ光を',\n", - " '僕は彷徨う君を求め永遠に',\n", - " '君が残した星の砂を追って',\n", - " '僕らを包むこの世界がある限り',\n", - " 'きっと君を見つけ出す',\n", - " 'その時君はまた微笑んで',\n", - " 'くれるだろうか',\n", - " 'この記憶の中で鮮やかに光り生き続ける君を',\n", - " '見つけ出すまで僕はこの体を決っして止める ことはない',\n", - " '君がくれた無限の喜びを',\n", - " 'kanji',\n", - " '有り余す程の 鳴り止まぬ音の',\n", - " '直中に立って 生まれた物を',\n", - " '100の感情を 殺せないよ',\n", - " 'music goes round',\n", - " 'the beat goes on, make a loud sound',\n", - " 'such freedom is not to be found',\n", - " 'let me blow your mind for a while',\n", - " \"i want you to realize that you're alive\",\n", - " \"don't suppress your emotions\",\n", - " 'bare all your feelings',\n", - " \"don't suppress your emotions\",\n", - " 'bare all your feelings',\n", - " 'let me see your joy',\n", - " 'show me your anger',\n", - " 'let me see your grief',\n", - " 'and show me your pleasure',\n", - " '止めどなく鳴らす rock の様に自由で',\n", - " 'それぞれ晒す 僕の様に夢中で',\n", - " '解き放て 蒸せ返ったlove and hate',\n", - " '解き放て 全て溢れ出すまで',\n", - " '100の感情を 消せやしないよ',\n", - " 'music goes round',\n", - " 'the beat goes on, make a loud sound',\n", - " 'such freedom is not to be found',\n", - " 'let me blow your mind for a while',\n", - " \"i want you to realize that you're alive\",\n", - " \"don't suppress your emotions\",\n", - " 'bare all your feelings',\n", - " \"don't suppress your emotions\",\n", - " 'bare all your feelings',\n", - " 'let me see your joy',\n", - " 'show me your anger',\n", - " 'let me see your grief',\n", - " 'and show me your pleasure',\n", - " '止めどなく鳴らす rock の様に自由で',\n", - " 'それぞれ晒す 僕の様に夢中で',\n", - " '音楽は鳴り止まない',\n", - " '感情はやり場がない',\n", - " '日々を音楽が助け出す様に',\n", - " '君の感情が溢れ出す様に',\n", - " 'a hundred emotions',\n", - " '止めどなく鳴らす rock の様に自由',\n", - " 'rock の様に',\n", - " '暗いだけの部屋 不定期 パッシングライト',\n", - " 'めまいするほど まばゆい パッシングライト',\n", - " 'ほめ合うムード どこか観たようなスタイル',\n", - " 'けなさないジョークも いつか観たようなスタイル',\n", - " 'to flash, flash, flash',\n", - " 'i know how that feels',\n", - " '見えないものが見えないよ',\n", - " 'ありのまま 気のまま なんだろう?',\n", - " '少し眩しい',\n", - " '少し眩しい',\n", - " '少し眩しい',\n", - " 'light!',\n", - " 'imitation, strobe, come on',\n", - " 'imitation, strobe, come on',\n", - " 'imitation, strobe, come on',\n", - " 'imitation, strobe, come on',\n", - " 'imitation',\n", - " 'imitation, strobe',\n", - " 'imitation',\n", - " 'imitation, strobe, come on',\n", - " 'to flash, flash, flash',\n", - " 'i know how that feels',\n", - " '見せたいもの早く見せてよ',\n", - " 'ありのままって言うのなんだろう?',\n", - " '少し眩しい',\n", - " '少し眩しい',\n", - " '少し眩しい',\n", - " '少し眩しい',\n", - " '少し眩しい',\n", - " 'light!',\n", - " 'imitation, strobe, come on',\n", - " 'imitation, strobe, come on',\n", - " 'imitation, strobe, come on',\n", - " 'imitation, strobe, come on',\n", - " 'imitation, strobe, come on (yeah-yeah-yeah, yeah-yeah-yeah)',\n", - " 'imitation, strobe, come on (yeah-yeah-yeah-yeah-yeah-yeah)',\n", - " 'imitation, strobe, come on (yeah-yeah-yeah, yeah-yeah-yeah)',\n", - " 'imitation, strobe, come on (yeah-yeah-yeah-yeah-yeah-yeah)',\n", - " '(yeah-yeah-yeah, yeah-yeah-yeah)',\n", - " '(yeah-yeah-yeah-yeah-yeah-yeah)',\n", - " 'imitation, strobe, come on (yeah-yeah-yeah, yeah-yeah-yeah)',\n", - " 'imitation, strobe, come on (yeah-yeah-yeah-yeah-yeah-yeah)',\n", - " 'imitation, strobe, come on',\n", - " 'imitation, strobe, come on',\n", - " '独房の闇消された強者、地獄の底から蘇れ',\n", - " 'your soul is living now',\n", - " \"fuckin' unreasonable world\",\n", - " '魂売った人類ども、地獄の底で裁かれてくれ',\n", - " 'he said \"we won\\'t live under the law\"',\n", - " 'i say \"come off it!\" to an unreasonable world',\n", - " 'go, for violent paradise',\n", - " '荒野を走る事6マイル',\n", - " 'ついにかの人をば探しあてる',\n", - " 'その男マントをひるがえし',\n", - " '威風堂々たるそのいでたち',\n", - " '「僕らの村を救ってよ、',\n", - " '今大変な騒ぎになってる助けが欲しい」',\n", - " '「そればらば」と取り出す優待券',\n", - " '「報酬は礼金ということで」',\n", - " '走る事忘れた老いた馬',\n", - " '早く戻らなければいけないのに',\n", - " 'ようやく僕らの村に着く',\n", - " '銃声が聞こえるやいなや',\n", - " '顔つき変わり oh yeah!',\n", - " 'good times he here comes',\n", - " 'good times he here comes',\n", - " '(good times he here comes)',\n", - " 'good times he here comes',\n", - " 'good times he here comes',\n", - " '(good times he here comes)',\n", - " 'good times he here comes',\n", - " 'good times he here comes',\n", - " '(good times he here comes)',\n", - " 'good times he here comes',\n", - " 'good times he here comes',\n", - " 'show me the way',\n", - " '彼の目に炎が宿り',\n", - " '敵か味方か分からぬ内に',\n", - " 'マシンガン oh no!',\n", - " 'bad time he here comes',\n", - " 'bad time he here comes',\n", - " '(bad time he here comes)',\n", - " 'bad time he here comes',\n", - " 'bad time he here comes',\n", - " '(bad time he here comes)',\n", - " 'bad time he here comes',\n", - " 'bad time he here comes',\n", - " '(bad time he here comes)',\n", - " 'bad time he here comes',\n", - " 'bad time he here comes',\n", - " 'take me away',\n", - " 'japanese:',\n", - " 'ゆっくり溶け出していく 大切な物がひとつづつ',\n", - " 'ああ それを見ている 何もできずに',\n", - " '快楽を求めるあまり こんなにいびつに進化した',\n", - " '大人たちが立っている こけしみたいに',\n", - " '義務のように美しく',\n", - " '義務のように夢見がち',\n", - " '義務のようにほほえんで',\n", - " '義務のように虚ろ',\n", - " 'もしもこんな世の中で',\n", - " '君のようになれるなら',\n", - " 'もしもこんな世の中で',\n", - " '君がいなくなったら',\n", - " '義務のように美しく',\n", - " '義務のように語らない',\n", - " '義務のように愛し合い',\n", - " '義務のように眠る',\n", - " 'もしもこんな世の中で',\n", - " '君のようになれるなら',\n", - " 'もしもこんな世の中で',\n", - " '君がいなくなったら',\n", - " 'キャンドルがゆれる部屋で センスのいい曲がかかり',\n", - " '大人たちが泣いている 何も感じない',\n", - " '義務のように美しい',\n", - " '義務のように愛し合う',\n", - " '義務のように美しい',\n", - " '義務のように愛し合う',\n", - " 'romaji:',\n", - " 'yukkuri tokedashiteiku taisetsuna mono ga hitotsu zutsu',\n", - " 'ā sore o miteiru nani mo dekizu ni',\n", - " 'kairaku o motomeru amari konnani ibitsu ni shinka shita',\n", - " 'otonatachi ga tatteiru kokeshi mitai ni',\n", - " 'gimu no yō ni utsukushiku',\n", - " 'gimu no yō ni yumemi gachi',\n", - " 'gimu no yō ni hohoende',\n", - " 'gimu no yō ni utsuro',\n", - " 'moshimo konna yononaka de',\n", - " 'kun no yō ni narerunara',\n", - " 'moshimo konna yononaka de',\n", - " 'kun ga inaku nattara',\n", - " 'gimu no yō ni utsukushiku',\n", - " 'gimu no yō ni kataranai',\n", - " 'gimu no yō ni aishiai',\n", - " 'gimu no yō ni nemuru',\n", - " 'moshimo konna yononaka de',\n", - " 'kun no yō ni narerunara',\n", - " 'moshimo konna yononaka de',\n", - " 'kun ga inaku nattara',\n", - " 'kyandoru ga yureru heya de sensu no ī kyoku ga kakari',\n", - " 'otonatachi ga naiteiru nani mo kanjinai',\n", - " 'gimu no yō ni utsukushī',\n", - " 'gimu no yō ni aishiau',\n", - " 'gimu no yō ni utsukushī',\n", - " 'gimu no yō ni aishiau',\n", - " 'english:',\n", - " 'important things slowly melting out one by one',\n", - " 'i can not do anything watching it ah',\n", - " 'i have evolved into such an irregular so much that i want pleasure',\n", - " 'like a kid that adults are standing',\n", - " 'beautiful like duty',\n", - " 'dreaming like duty',\n", - " 'smile like an obligation',\n", - " 'like a duty empty',\n", - " 'if this is the case',\n", - " 'if you can be like you',\n", - " 'if this is the case',\n", - " 'if you are gone',\n", - " 'beautiful like duty',\n", - " 'i do not talk like a duty',\n", - " 'like a duty to love each other',\n", - " 'sleep like duty',\n", - " 'if this is the case',\n", - " 'if you can be like you',\n", - " 'if this is the case',\n", - " 'if you are gone',\n", - " 'a good song is taken in the room where the candle shakes',\n", - " 'adults are crying i do not feel anything',\n", - " 'beautiful like duty',\n", - " 'i love each other like duty',\n", - " 'beautiful like duty',\n", - " 'i love each other like duty',\n", - " 'please yesterday 悩殺の everyday',\n", - " '開拓者の labyrinth',\n", - " '未来図のストロボ さかしまなbaby face',\n", - " '道しるべは no thanks 君と close my eyes',\n", - " 'ah, snail job……',\n", - " 'night snails & plastic boogie',\n", - " 'はがい絞めのstory',\n", - " 'night snails & plastic boogie',\n", - " 'please yesterday',\n", - " 'please yesterday',\n", - " \"願い事が神秘を抱きしめたら let's start again\",\n", - " '泥だらけのsensational beginners',\n", - " 'かたつむりは今夜モザイクを映さない',\n", - " '泡まみれのspiritual game',\n", - " 'mindのroller star',\n", - " 'stand up invaders!',\n", - " 'night snails & plastic boogie',\n", - " '腐りかけのmusic',\n", - " 'night snails & plastic boogie',\n", - " '群れなすかたつむり',\n", - " 'snail……',\n", - " '殻を破るstatus',\n", - " 'snail……',\n", - " 'please yesterday',\n", - " 'please yesterday',\n", - " 'please yesterday',\n", - " '甘いときめき 今狂い咲き',\n", - " '全て吐き出せ night mare',\n", - " '唇求め 喜び求め',\n", - " '旋律乱し 優れた機能で passion',\n", - " '頭に湧き出る 海の水を飲み',\n", - " '広がる imagination',\n", - " '最高のkissと 最低のmissを',\n", - " '思い出したら frenzy',\n", - " '愛しき火花散らして 幻想を手に入れ泣いても',\n", - " \"それに夢中なら… don't be cried\",\n", - " 'your body!',\n", - " 'la la la la... talking with my lips',\n", - " 'la la la la... i like your lips lips',\n", - " 'la la la la... velvet your lips',\n", - " 'la la la la... talking with my lips yeah!',\n", - " '冷蔵庫にはつめたいmilk',\n", - " 'のどをうるおすための',\n", - " '指についたmilkを吸いながら',\n", - " 'いつまでも待つ baby',\n", - " '夜ごと髪を乱して 思考回路に守られて',\n", - " '喜ぶ身体と fry tonight',\n", - " 'your body!',\n", - " 'la la la la... talking with my lips',\n", - " 'la la la la... i like your lips lips',\n", - " 'la la la la... velvet your lips',\n", - " 'la la la la... talking with my lips yeah!',\n", - " '触れ合う指先 暴れる誘惑に',\n", - " '二度と騙されはしない…',\n", - " '舌を出す genocideが',\n", - " 'きれいごとで 夢を見たら',\n", - " 'もうそれで このまま砕いて 今さらもがいて',\n", - " 'それを絡めた 羽を広げて!',\n", - " 'la la la la... talking with my lips',\n", - " 'la la la la... i like your lips lips',\n", - " 'la la la la... velvet your lips ah',\n", - " 'la la la la... talking with my lips',\n", - " 'talking with my lips talking with my lips',\n", - " 'i like your lips velvet your lips',\n", - " 'talking with my lips i like your lips',\n", - " 'sleepless imagination sleepless imagination',\n", - " 'sleepless imagination sleepless imagination',\n", - " 'sleepless sleepless sleepless sleepless',\n", - " 'sleepless sleepless sleepless sleepless',\n", - " 'if it is a sin',\n", - " \"where's my existance?\",\n", - " 'if it is a sin',\n", - " \"where's my existance?\",\n", - " '何処にも無いのよ私の灯火',\n", - " 'ずるいわこのまあなたは知らない',\n", - " \"i'm falling down and down\",\n", - " \"i'm falling down and down\",\n", - " \"i'm falling down and down\",\n", - " \"i'm falling down and down\",\n", - " '戸惑い切なさ苦しさ寂しさも',\n", - " 'すべて縺れて思わず',\n", - " 'あいしてるなんて呟けたら',\n", - " 'if it is a sin',\n", - " \"where's my existance?\",\n", - " 'if it is a sin',\n", - " \"where's my existance?\",\n", - " 'あなたの煙草の煙が近付く',\n", - " 'あたしを酷く拒絶して許さない',\n", - " \"i'm falling down and down\",\n", - " \"i'm falling down and down\",\n", - " \"i'm falling down and down\",\n", - " \"i'm falling down and down\",\n", - " '朽ち果てて消えて',\n", - " 'しまう果実のように今も',\n", - " '虚しくあなたを',\n", - " '想えば想うほど溶け墜ちて',\n", - " 'somebody tell me. is this',\n", - " 'a sin by loving him?',\n", - " 'i want you i need you',\n", - " \"i can't stand it\",\n", - " \"don't know what to do\",\n", - " '眩暈悪い夢胸騒ぎ怯えているの',\n", - " '私の唇が思わず漏らしてた罪を',\n", - " 'お願いあなたの腕の中にはまだ今も',\n", - " '私の居場所が隠されているから',\n", - " 'ねぇ許して',\n", - " 'if it is a sin',\n", - " \"where's my existance?\",\n", - " 'if it is a sin',\n", - " \"where's my existance?\",\n", - " 'if it is a sin',\n", - " \"where's my existance?\",\n", - " 'if it is a sin',\n", - " \"where's my existance?\",\n", - " 'another step up',\n", - " \"it's takin' takin' takin' takin' long\",\n", - " 'always digging',\n", - " \"it's gettin' getting' getting' get it on\",\n", - " 'wherever you stand just start to walk',\n", - " 'everywhere you go goes round and round',\n", - " \"it's coming back to what i know\",\n", - " 'the deep deep deeper we go',\n", - " \"feeling alone, but it's oh so simple\",\n", - " 'let it go',\n", - " \"dim dim dim the light's low\",\n", - " 'but not blind, i can see the symbol',\n", - " 'let it show',\n", - " 'mighty story',\n", - " \"don't hide it from me\",\n", - " 'いつだって人は迷うんだって',\n", - " '気付いちゃったって知らんぷりしていよう',\n", - " 'そしてgood good days',\n", - " '僕らは生まれてからso多くを学び',\n", - " '死に近づくにつれて多くを忘れ',\n", - " '気付いた時にゃもう灰になってる',\n", - " '生きた証を残しておくにはモノじゃ無くて',\n", - " '「誰かの記憶に残るような人生をお薦めします」',\n", - " 'the deep deep deeper we go',\n", - " \"feeling alone, but it's oh so simple\",\n", - " 'let it go',\n", - " \"dim dim dim the light's low\",\n", - " 'but not blind, i can see the symbol',\n", - " 'let it show',\n", - " 'mighty story',\n", - " \"don't hide it from me\",\n", - " 'いつだって人は迷うんだって',\n", - " '気付いちゃったって知らんぷりしていよう',\n", - " 'そしてgood good days',\n", - " '物事にはsoどんな時だって',\n", - " 'オマケのノビシロがついていて',\n", - " '何かを築きそして変えて越えて',\n", - " '奇跡と言う名の必然を繰り返して! 上へ',\n", - " 'we never, we never',\n", - " 'we will not stop right here',\n", - " 'we never, we never',\n", - " 'we will not stop right here',\n", - " 'we never, we never',\n", - " 'we will not stop right here',\n", - " 'we never, we never',\n", - " 'we will not stop right here',\n", - " 'we never, we never',\n", - " 'we will not stop right here',\n", - " 'we never, we never',\n", - " 'we will not stop right here',\n", - " 'we never, we never',\n", - " 'we will not stop right here',\n", - " 'we never, we never',\n", - " 'we will not stop right here (so choose wisely)',\n", - " 'do what you do gotta get through',\n", - " 'へたれてる時間なんて微塵も無いぞ',\n", - " '後悔しないように生きる',\n", - " 'そんな風に生きたって悔いは残るさ',\n", - " '長いものに巻かれて終わる?',\n", - " 'いやそれどころか巻いて終わるのさ',\n", - " '予測すらできやしない猛スピードで',\n", - " 'ほらgood, good-bye',\n", - " '(raise your hands, now!)',\n", - " \"“let's get it going”さあ始めよう…\",\n", - " '(raise your hands, now!)',\n", - " 'so, 僕らの名の下に',\n", - " '(raise your hands, now!)',\n", - " 'bring it, bring it on',\n", - " '(raise your hands, now!)',\n", - " \"can't stop!!!\",\n", - " '目障りな喧騒にはget out',\n", - " '挑発するよう舌出して bye now',\n", - " '不撓不屈 唯々昇るさ',\n", - " '余所見出来るの?出来ない you see',\n", - " \"risk 伴った愉快さがdon't stop\",\n", - " 'play out 朽ちてゆけ お前が',\n", - " '逆巻く熱を帯びて 全身全霊 checkmate',\n", - " '意思表示する叫びの 金輪際容赦しない condition',\n", - " '僕ら色の scenario は never end…ahhhhh!',\n", - " '(raise your hands, now!)',\n", - " 'i will win against!',\n", - " '運命は僕らさ 魂を魂で穿って',\n", - " 'i know(you know?) you know?(i know)',\n", - " '“we get to the top”(3, 2, 1, jump!)',\n", - " 'i will win against!',\n", - " '前人未踏の地へ 絶対的な存在へと',\n", - " 'i know(you know?) you know?(i know)',\n", - " 'a declaration of ××× 此処に…聴け!',\n", - " '(raise your hands, now!)',\n", - " \"例え声を枯らしてもdon't care\",\n", - " '喉の奥から求めてsing it',\n", - " '不承不承 生きるのはやめろよ',\n", - " '姦しく鳴る戯言go away',\n", - " '鼓膜揺るがせ 脊髄で feeling',\n", - " 'play out 後は見下ろすだけ',\n", - " '激情の渦が示す 未来の姿 showing up',\n", - " '支配する eye contact 世界中を切り裂いてゆけ',\n", - " '僕ら色の memory は never die…ahhhhh!',\n", - " '(raise your hands, now!)',\n", - " 'i will win against!',\n", - " '運命が僕らさ 魂を魂で掴んで',\n", - " 'i know(you know?) you know?(i know)',\n", - " '“we get to the top”(3, 2, 1, jump!)',\n", - " 'i will win against!',\n", - " '前人未踏の地で 負け知らずの微笑みを',\n", - " 'i know(you know?) you know?(i know)',\n", - " 'a declaration of ××× 此処に…聴け!',\n", - " '(raise your hands, now!)',\n", - " \"“let's get it going”さあ始めよう…\",\n", - " 'so, 僕らの名の下に',\n", - " '(raise your hands, now!)',\n", - " 'bring it, bring it on',\n", - " '(raise your hands, now!)',\n", - " \"can't stop!!!\",\n", - " '(raise your hands, now!)',\n", - " 'i will win against!',\n", - " '運命は僕らさ 魂を魂で穿って',\n", - " 'i know(you know?) you know?(i know)',\n", - " '“we get to the top”(3, 2, 1, jump!)',\n", - " 'i will win against!',\n", - " '前人未踏の地へ 絶対的な存在へと',\n", - " 'i know(you know?) you know?(i know)',\n", - " 'a declaration of ××× 此処に…聴け!',\n", - " '(raise your hands, now!)',\n", - " '偽物 不確かな黒 imitation uncertain black',\n", - " '正義 残酷な赤 justice brutal red',\n", - " '途切れた色 paranoia broken colors paranoia',\n", - " '角膜に刻むスローモーション slow motion engraved in my cornea',\n", - " '全てが終わるこの場所で everything ends in this place',\n", - " '何が残るか俺は知らない i have no idea what could remain',\n", - " '願望 騙し続け desires continue to deceive',\n", - " '審判 逃げ込んだ影 judgement take refuge in the shadows',\n", - " '歪んだ色 paranoia distorted colors paranoia',\n", - " '角膜に刻むスローモーション slow motion engraved in my cornea',\n", - " '全てが終わるこの場所で everything ends in this place',\n", - " '何が残るか俺は知らない i have no idea what could remain',\n", - " '刹那の夢 白昼夢 moment of dreams daydream',\n", - " '眼に焼き付くスローモーション slow motion burned into my eyes',\n", - " '刹那の夢 その記憶 moment of dreams that memory',\n", - " '脳裏に刻むスローモーション engraved into my mind slow motion',\n", - " '切れかけた街灯に照らされて 明滅繰り返す人々の影',\n", - " 'ゴムの匂いと空気の湿り気 静寂と呼ぶには、はなはだ多弁',\n", - " 'したがって 定まらぬ視点 星を滑って 東北に流転',\n", - " '蛾が群がって どうせ無駄だって 夢に焼け落ちて あとは何もねえ',\n", - " '行き先のない乗車券 此岸の終わりの夕景',\n", - " '地球の裏の荒野へ 早く連れてってくれ',\n", - " '夏の庭に犬の骨 死屍累々の日付',\n", - " 'それを踏んづけて明日へ 気管支炎の音符で',\n", - " '血を吐くまでは歌え 放射状 北の山背',\n", - " 'そこに咲いた花でさえ 冒涜は許されて',\n", - " '僕は舌打ちをしたこの街へ いや、舌打ちしたのは街の方で',\n", - " '砂場に子供らの神話体系 その一粒ごと神は宿って',\n", - " '絡まって 切れぬ社会性 みだりに越えて 唾を吐き掛け',\n", - " '我が塞がって 来世疑って 無様に燃えて あとは何もねえ',\n", - " '獣と人の分岐点 命にたかる銀蠅',\n", - " '精子は霊地の巡礼 死ぬには早い降雪',\n", - " '国道沿いのラブホテル トワイライト純潔で',\n", - " '言葉足らずの夜明け 吃音的な世の果て',\n", - " 'それを飲み込んでは咽せる 結露に滴るカーテン',\n", - " '命が今焼け落ちて 車道に冬の銀河系',\n", - " 'トラックの荷台に跨がって 歳月が通り過ぎた',\n", - " '交差点で横転して 血を流していた',\n", - " '窓越しにそれを見ていたら 命がじりじりと焦げる音を聞いた',\n", - " 'スピードと摩擦 火花を散らして',\n", - " 'スピードと摩擦 内臓を焦がして',\n", - " '体内に発車の汽笛 血液は逃避の路線',\n", - " '旅立っては近づいて 離れてくのはどうして?',\n", - " '苛立ちは尚叫んで ひび割れた今日の風景',\n", - " '地表にうがつささくれ 二月は無垢な難破船',\n", - " 'スピードと摩擦 内臓を焦がして',\n", - " 'english lyrics',\n", - " 'shadows dance atop both the cement and asphalt, moved by the flicker of the lights hanging above them',\n", - " 'the scent of rubber and encroaching humidity arrests my attention and steals away the quiet',\n", - " 'my eyesight flies between the stars in the sky, on a pilgrimage to a single northeastern light',\n", - " 'those pitiable moths, ensnared by their dreams, fly towards the open flame and burn ‘til nothing’s left',\n", - " 'in the station at the dusk of life, holding a one-way ticket to nowhere',\n", - " 'i only hope that this bullet train is on a non-stop course to hell',\n", - " 'dog bones lay strewn among summer flowers next to fresh time-stamped corpses',\n", - " 'throat stricken with heavy bronchitis, i march upon them both towards the end',\n", - " 'carried along by the northern gales, i sing even as i vomit blood',\n", - " 'there’s nobody left to condemn me, even as i crush flowers underfoot',\n", - " \"i wrap my hands around the town’s neck and squeeze hard, but it feels like i’m the one who's suffocating\",\n", - " 'when children speak of their many myths and legends, the gods only exist when they live alongside them',\n", - " 'i spit full force, in my struggle to persist, at this utterly tangled and impregnable society',\n", - " \"there’s no path to the future, and afterlife uncertain, yet in desperation i burn 'til nothing's left\",\n", - " 'flies swarm around all those yet living, forming a line between beasts and mankind',\n", - " 'sperm journey to a nearby graveyard; death in the form of a fierce blizzard',\n", - " 'twilight shines without a clue on the dirty old love hotel down the road',\n", - " 'so much left unspoken at dawn that by the end all the world does is stutter',\n", - " 'the curtains are soaked through with dew, enough that i very nearly drowned',\n", - " 'life is engulfed and turns to ashes on this road born of the milky way',\n", - " 'a lifetime seems to pass me by as i sit on the bed of this pickup truck',\n", - " 'a trail of blood follows in its wake as it crosses the intersection',\n", - " 'as my eyes stare straight ahead through the rear windshield, i hear the sounds of lives combusting all around me',\n", - " 'speed and friction. sparks flying everywhere',\n", - " 'speed and friction. my insides are on fire',\n", - " 'my soul sounds the departing train. my blood is the only escape i have left',\n", - " 'i can feel myself leaving the station. wait a minute, where’s everyone gone?',\n", - " 'looking out over arid plains, i keep screaming ‘til my lungs give out',\n", - " 'i strike the ground and it splits open, revealing all the abandoned shipwrecks',\n", - " 'speed and friction. my insides are on fire',\n", - " 'i bought a one way ticket',\n", - " 'もう戻らない',\n", - " 'あとは have fun それだけでいい',\n", - " 'i need to go this way',\n", - " 'time flies away',\n", - " 'いつか全部思い出',\n", - " 'so take my time and rest',\n", - " 'そっと呟いた my heart said',\n", - " \"i'm not slacking off\",\n", - " '大切なだけ',\n", - " 'like a bottle of wine',\n", - " 'その時がくるまで',\n", - " \"the nights i've been through\",\n", - " 'tells only the truth',\n", - " 'もらった birthday',\n", - " 'あとはマイペースで',\n", - " 'everything i was given',\n", - " 'and everything i earned',\n", - " '無くさないように描いた場所まで walk',\n", - " 'ねぇそのままで',\n", - " \"we're almost there\",\n", - " '急がないでいい',\n", - " 'たまに cry with me',\n", - " 'wait for the storm to go away',\n", - " 'with a favorite book in my hand',\n", - " '壊れないように',\n", - " 'また晴れるまで',\n", - " 'see off today…',\n", - " 'if we stay together',\n", - " 'ただそれだけで',\n", - " 'it looks much better',\n", - " '怖いもの全部 go out',\n", - " 'can you heat up the soup',\n", - " \"i'll put in 欲しいだけの love\",\n", - " 'and stir it up',\n", - " 'あとは humming together その時まで',\n", - " 'sorry できない無理に run',\n", - " 'pick it up one by one',\n", - " '運ぶものがある we have many',\n", - " '落とさないように walk',\n", - " 'ねぇそのままで',\n", - " \"we're almost there\",\n", - " '急がないでいい',\n", - " 'たまに cry with me',\n", - " 'wait for the storm to go away',\n", - " 'with a favorite book in my hand',\n", - " '壊れないように',\n", - " 'また晴れるまで',\n", - " 'see off today…',\n", - " \"ain't nobody coming\",\n", - " 'but somethings got me humming',\n", - " '長い一日の終わりにまた誰かが singing',\n", - " \"you did just fine it's okay\",\n", - " '明日はもっと better day',\n", - " \"we're almost there\",\n", - " 'my dear let it be',\n", - " \"we're almost there\",\n", - " '急がないでいい',\n", - " 'たまに cry with me',\n", - " 'wait for the storm to go away',\n", - " 'with a favorite book in my hand',\n", - " 'また晴れるまで',\n", - " 'sitting up on the bed',\n", - " 'ねぇそのままで',\n", - " \"we're almost there\",\n", - " '急がないでいい',\n", - " 'たまに cry with me',\n", - " 'wait for the storm to go away',\n", - " 'with a favorite book in my hand',\n", - " '壊れないように',\n", - " 'また晴れるまで',\n", - " 'see off today…',\n", - " 'my first story - 虚言neurose',\n", - " '日本語 / japanese',\n", - " 'kill me the person way so back',\n", - " 'kill me the person long ago',\n", - " 'what am i doing with them at this time',\n", - " 'why do i have to go along',\n", - " 'when is the time i come to be this way',\n", - " 'yeah, be just as now',\n", - " '虚言に染まりきった世界 歩き出した',\n", - " '紙クズだけを手にして',\n", - " '僕だけは迷わないように 火を灯した',\n", - " '誰かが目を覚ます前に',\n", - " '(i want to wake up)',\n", - " 'nobody cares about me (i will not stand up)',\n", - " 'nobody knows about me (i will not wake up)',\n", - " 'いつだって僕の絡まる感情は',\n", - " '連鎖的不完全状態',\n", - " 'いつまで? どこまで?',\n", - " 'i will always standing here from now on',\n", - " 'they just talk among the will forever',\n", - " \"tell me the reason why you're alive\",\n", - " \"tell me the reason why you're proud\",\n", - " '今僕が僕じゃなくなって',\n", - " 'もう愛も夢も消え去った',\n", - " '何もかも意味がないの',\n", - " 'yeah nothing i wanna know',\n", - " \"tell me the reason why you're alive\",\n", - " 'be just as now',\n", - " '夢を見る事が出来たならそれは叶う?',\n", - " 'じゃあ不幸な人は居ないね',\n", - " '意味なんてあってないような',\n", - " '言葉が今 バカなアリスを迷わせる',\n", - " 'get lost in yourself',\n", - " 'nobody cares about me (i will not stand up)',\n", - " 'nobody knows about me (i will not wake up)',\n", - " 'they just talk among their will forever',\n", - " \"tell me the reason why you're alive\",\n", - " \"tell me the reason why you're proud\",\n", - " '今僕が僕じゃなくなって',\n", - " 'もう愛も夢も消え去った',\n", - " '何もかも意味がないの',\n", - " 'kill me the person away so back',\n", - " 'kill me the person long ago',\n", - " '今誰が僕を名乗ってんの?',\n", - " 'もうドレもコレも同じだった',\n", - " 'これからも変わらないの',\n", - " 'nothing i wanna know',\n", - " 'nothing i wanna know',\n", - " 'nothing i wanna know',\n", - " 'nothing i wanna know woah',\n", - " '(what am i living for? what am i living for?)',\n", - " '(what am i living for? what am i living for?)',\n", - " 'living for!',\n", - " '誰」にでも同じ世界を見せるの',\n", - " '僕を夢の国の中の',\n", - " 'ドブネズミとでも思ってんの?',\n", - " 'こんなの今だけだから',\n", - " \"(tell me the reason why you're alive)\",\n", - " \"tell me the reason why you're alive\",\n", - " \"tell me the reason why you're proud\",\n", - " '今僕が僕じゃなくなって',\n", - " 'そう僕は虚言neurose',\n", - " 'これからも変わらないの',\n", - " 'yeah nothing i wanna know',\n", - " 'ok?',\n", - " 'sometimes with my heart',\n", - " 'i feel like just runnning away',\n", - " 'どこでもない、どこか',\n", - " 'my pretty sadness',\n", - " '受け止めて',\n", - " 'hi! pretty princess',\n", - " \"let's have a tea together\",\n", - " 'get ready?',\n", - " 'then if you come!',\n", - " \"i'll sing for you\",\n", - " '…& just for me',\n", - " '何かが変わるまで',\n", - " 'yeah baby',\n", - " '何にも言わないで',\n", - " '声を殺して飲み込んで',\n", - " 'ok?',\n", - " 'もう少しだけそばにいるのなら',\n", - " '心をみせてもいい',\n", - " 'my pretty sadness',\n", - " 'この夜に',\n", - " 'hey,dreamy princess',\n", - " \"let's make a wish together\",\n", - " 'get ready?',\n", - " 'i can tell fairy tales for you',\n", - " '…& just for me',\n", - " '涙がこぼれても',\n", - " '今は',\n", - " '何にも聞かないで',\n", - " \"it's ok…\",\n", - " '何かが崩れても',\n", - " '気にしないで',\n", - " 'can you come to get',\n", - " 'some ice creams with me',\n", - " 'can you bake a pinky cup cakes',\n", - " 'with me together',\n", - " 'get ready?',\n", - " 'then if you come!',\n", - " \"i'll sing for you\",\n", - " '…& just for me',\n", - " '何かが壊れても',\n", - " 'yeah baby',\n", - " '何にも言わないで',\n", - " '声を殺して飲み込んで',\n", - " 'get ready?',\n", - " 'i can tell fairy tales for you',\n", - " '…& just for me',\n", - " '涙がこぼれても',\n", - " '今は',\n", - " '何にも聞かないで',\n", - " \"it's ok…\",\n", - " '何かが崩れても',\n", - " \"(hey,don't say anything!)\",\n", - " \"it's just for you\",\n", - " 'japanese:',\n", - " '地震 水害 台風 大火災',\n", - " '見舞われるたんびにもうやめよう',\n", - " 'と思った でもやめられない俺は',\n", - " 'あれを',\n", - " '殺されそうになったって',\n", - " '殺されない限りまだだ',\n", - " 'やれるさ もうやめられない俺は',\n", - " 'あれを',\n", - " '分かってる そんなことぐらい',\n", - " '異常だ これは',\n", - " '分かってる でもやめられない',\n", - " 'なぜだか 今日もあれを',\n", - " '病 貧困 戦争 大飢饉',\n", - " '見舞われるたんびにもう無理だ',\n", - " 'と思った でもやめられない俺は',\n", - " 'あれを',\n", - " '分かってる そんなことぐらい',\n", - " '異常だ これは',\n", - " '分かってる でもやめられない',\n", - " 'なぜだか 今日もあれを',\n", - " '殺されそうになったって',\n", - " '殺されない限りまだだ',\n", - " 'やれるさ もうやめられない俺は',\n", - " 'あれを',\n", - " '楽しくもないのに',\n", - " 'romaji:',\n", - " 'jishin suigai taifū dai kasai',\n", - " 'mimawareru tanbi ni mō yameyō',\n", - " 'to omotta demo yamerarenai ore wa',\n", - " 'are o',\n", - " 'korosare sō ni nattatte',\n", - " 'korosarenai kagiri madada',\n", - " 'yarerusa mō yamerarenai ore wa',\n", - " 'are o',\n", - " 'wakatteru sonna koto gurai',\n", - " 'ijōda kore wa',\n", - " 'wakatteru demo yamerarenai',\n", - " 'nazeda ka kyō mo are o',\n", - " 'yamai hinkon sensō dai kikin',\n", - " 'mimawareru tanbi ni mō murida',\n", - " 'to omotta demo yamerarenai ore wa',\n", - " 'are o',\n", - " 'wakatteru sonna koto gurai',\n", - " 'ijōda kore wa',\n", - " 'wakatteru demo yamerarenai',\n", - " 'nazeda ka kyō mo are o',\n", - " 'korosare sō ni nattatte',\n", - " 'korosarenai kagiri madada',\n", - " 'yarerusa mō yamerarenai ore wa',\n", - " 'are o',\n", - " 'tanoshiku mo nainoni',\n", - " 'english:',\n", - " 'earthquake flood typhoon great fire',\n", - " \"let's stop it at once\",\n", - " 'i thought but i can not quit',\n", - " 'that',\n", - " 'i was about to be killed',\n", - " 'it is still unless it is killed',\n", - " 'i can do it i can not quit',\n", - " 'that',\n", - " 'i know that much',\n", - " 'this is abnormal',\n", - " 'i know but i can not stop it',\n", - " 'for some reason today',\n", - " 'disease poverty war famine',\n", - " 'i can not take it any more',\n", - " 'i thought but i can not quit',\n", - " 'that',\n", - " 'i know that much',\n", - " 'this is abnormal',\n", - " 'i know but i can not stop it',\n", - " 'for some reason today',\n", - " 'i was about to be killed',\n", - " 'it is still unless it is killed',\n", - " 'i can do it i can not quit',\n", - " 'that',\n", - " \"even though it's not fun\",\n", - " 'ah-ra-la-oh la',\n", - " 'don’t go away 逃げ場はない ah-ra-oh la-t-ah-oh la',\n", - " 'oh why? you’re crying 嗤え 狂え ah-ra-oh la-t-ah-oh la',\n", - " 'coming up… coming up…',\n", - " '嗚呼、殺意の眼 粋な獲物 昂ぶる 昂ぶる',\n", - " 'not enough… not enough…',\n", - " 'まだその命 愉悦に足りはしない',\n", - " 'we all are the jingoes oh-oh-oh',\n", - " '獣じみた欲を貪れ',\n", - " 'we are in the jungle oh-oh-oh',\n", - " 'さあ牙を研げ 死の数を競おう ah',\n", - " 'go on your way 容赦もなく',\n", - " 'no one is left 奪い尽くす',\n", - " 'showing up… showing up…',\n", - " '大義と似せたそれは私刑 甚振(いたぶ)る 甚振る',\n", - " 'you’re the same… you’re the same…',\n", - " '善と言い張る醜さこそが本性',\n", - " 'we all are the jingoes oh-oh-oh',\n", - " '弱き者を慈悲も残さず',\n", - " 'we are in the jungle oh-oh-oh',\n", - " '喰い尽くすのは 獣より人間(ひと)の性(さが)',\n", - " 'dance it up u-ra-ra',\n", - " 'o-o-o-o-o-o-o',\n", - " 'hurry up i-ya-ya',\n", - " 'o-a-o-a-o-a-o',\n", - " 'the world will be colorful, painful, beautiful',\n", - " 'when your life is lost',\n", - " 'we all are the jingoes oh-oh-oh',\n", - " '獣じみた欲を貪れ',\n", - " 'we are in the jungle oh-oh-oh',\n", - " 'さあ牙を研げ 死の数を競え',\n", - " 'the jingoes oh-oh-oh',\n", - " '嬲(なぶ)り倒す 味を舐めては',\n", - " 'we are in the jungle oh-oh-oh',\n", - " 'また舌を出す 狂った人間(とも)たちよ ah',\n", - " 'we all are the jingoes oh-oh-oh…',\n", - " 'we are in the jungle oh-oh-oh…',\n", - " '色を重ねて',\n", - " '嘘を重ねて',\n", - " '綺麗なままじゃいられない',\n", - " '輝きたくて 羽が欲しくて',\n", - " '気づけば溺れていた',\n", - " 'butterfly, butterfly, i',\n", - " 'butterfly, i wish that i could hide',\n", - " 'in a purple sky, no one see me cry',\n", - " 'butterfly',\n", - " 'butterfly',\n", - " '愛したくても',\n", - " '愛せないのは',\n", - " '汚れを知らないだけだと',\n", - " '雲の流れが 羨ましくて',\n", - " ...]}}},\n", - " 'ko': {'sentence': {'pop': {'meta': {'train_data': ['hangul',\n", - " '언제부턴가 네가',\n", - " '보고 싶지 않았고',\n", - " '그 어느 샌가 네가',\n", - " '더 이상 필요한지 몰랐어',\n", - " '그래서 너는 떠났고',\n", - " '그렇게 갈라져버렸어',\n", - " '어쩌면 우린',\n", - " '아무런 감정도 없이',\n", - " '이별을 준비해야 했나 봐',\n", - " '서로 아플 것만 생각했지만',\n", - " '그랬던 기억마저도',\n", - " '이제는 사라지나 봐',\n", - " '돌이킬 수 없는 일을',\n", - " '내가 자초하고',\n", - " '모든 상황을 잔인하게 만들었어',\n", - " '똑같을 거란 그 말을',\n", - " '그 말을 인정해버렸어',\n", - " '끝났다는 그 말에',\n", - " '우리는 갈라져버렸어',\n", - " '어쩌면 우린',\n", - " '아무런 감정도 없이',\n", - " '이별을 준비해야 했나 봐',\n", - " '서로 아플 것만 생각했지만',\n", - " '그랬던 기억마저도',\n", - " '이제는 사라지나 봐',\n", - " '어쩌면 우린',\n", - " '아무런 조건도 없이',\n", - " '사랑만 했어야 했나 봐',\n", - " '먼저 아플걸 생각하는 것도',\n", - " '나눈 모든 얘기들도',\n", - " '그렇게 떠나가나 봐',\n", - " '어쩌면 우린',\n", - " '아무런 조건도 없이',\n", - " '사랑만 했어야 했나 봐',\n", - " '먼저 아플걸 생각하는 것도',\n", - " '나눈 모든 얘기들도',\n", - " '그렇게 떠나가나 봐',\n", - " '어쩌면 우린',\n", - " '미안한 감정도 없이',\n", - " '서로를 떠나야 했나 봐',\n", - " '사랑했던 우리의 추억들도',\n", - " '좋았던 기억마저도',\n", - " '그렇게 지나가나 봐',\n", - " 'romanization',\n", - " 'eonjebuteonga nega',\n", - " 'bogo sipji anhassgo',\n", - " 'geu eoneusaenga nega',\n", - " 'deo isang piryohanji mollasseo',\n", - " 'geuraeseo neoneun tteonassgo',\n", - " 'geureohge gallajyeo beoryeosseo',\n", - " 'eojjeomyeon urin',\n", - " 'amureon gamjeongdo eopsi',\n", - " 'ibyeoreul junbihaeya',\n", - " 'haessna bwa',\n", - " 'seoro apeul geosman',\n", - " 'saenggakhaessjiman',\n", - " 'geuraessdeon gieokmajeodo',\n", - " 'ijeneun sarajina bwa',\n", - " 'dorikil su eopsneun ireul',\n", - " 'naega jachohago',\n", - " 'modeun sanghwangeul',\n", - " 'janinhage mandeureosseo',\n", - " 'ttokgateul georan',\n", - " 'geu mareul',\n", - " 'geu mareul injeonghae',\n", - " 'beoryeosseo',\n", - " 'kkeutnassdaneun',\n", - " 'geu mare',\n", - " 'urineun gallajyeo',\n", - " 'beoryeosseo',\n", - " 'eojjeomyeon urin',\n", - " 'amureon gamjeongdo eopsi',\n", - " 'ibyeoreul junbihaeya',\n", - " 'haessna bwa',\n", - " 'seoro apeul geosman',\n", - " 'saenggakhaessjiman',\n", - " 'geuraessdeon gieokmajeodo',\n", - " 'ijeneun sarajina bwa',\n", - " 'eojjeomyeon urin',\n", - " 'amureon jogeondo eopsi',\n", - " 'sarangman haesseoya',\n", - " 'haessna bwa',\n", - " 'meonjeo apeulgeol',\n", - " 'saenggakhaneun geosdo',\n", - " 'nanun modeun yaegideuldo',\n", - " 'geureohge tteonagana bwa',\n", - " 'eojjeomyeon urin',\n", - " 'amureon jogeondo eopsi',\n", - " 'sarangman haesseoya',\n", - " 'haessna bwa',\n", - " 'meonjeo apeulgeol',\n", - " 'saenggakhaneun geosdo',\n", - " 'nanun modeun yaegideuldo',\n", - " 'geureohge tteonagana bwa',\n", - " 'eojjeomyeon urin',\n", - " 'mianhan gamjeongdo eopsi',\n", - " 'seororeul tteonaya',\n", - " 'haessna bwa',\n", - " 'saranghaessdeon',\n", - " 'uriui chueokdeuldo',\n", - " 'johassdeon gieokmajeodo',\n", - " 'geureohge jinagana bwa',\n", - " 'english translation',\n", - " 'at some point, i stopped missing you',\n", - " 'at some point, i didn’t know if i even needed you',\n", - " 'so you left',\n", - " 'and we split ways like that',\n", - " 'maybe we had to prepare for a breakup',\n", - " 'without any emotions',\n", - " 'we thought about how we would hurt',\n", - " 'but even memories of that are disappearing',\n", - " 'i brought it upon myself',\n", - " 'something that couldn’t be undone',\n", - " 'i made everything so cruel',\n", - " 'i ended up admitting',\n", - " 'that it’ll all be the same',\n", - " 'when i said it was over',\n", - " 'we split apart',\n", - " 'maybe we had to prepare for a breakup',\n", - " 'without any emotions',\n", - " 'we thought about how we would hurt',\n", - " 'but even memories of that are disappearing',\n", - " 'maybe we had to love without any conditions',\n", - " 'thinking that i’ll be the first to hurt',\n", - " 'all the things we talked about',\n", - " 'it’s leaving just like that',\n", - " 'maybe we had to love without any conditions',\n", - " 'thinking that i’ll be the first to hurt',\n", - " 'all the things we talked about',\n", - " 'it’s leaving just like that',\n", - " 'maybe we had to leave each other',\n", - " 'without any sorry feelings',\n", - " 'our memories of love',\n", - " 'even our good memories',\n", - " 'it’s all passing just like that',\n", - " 'yeah, hey girl',\n", - " 'you know my name',\n", - " 'sensitive thug',\n", - " \"i'm a sensitive thug\",\n", - " \"yeah i'm sensitive\",\n", - " \"i'm a sensitive thug\",\n", - " \"i'm love\",\n", - " '액션영화를 봤어, 악당이 죽었어',\n", - " \"눈물을 흘렸어, cause i'm sensitive\",\n", - " \"i'm sensitive thug\",\n", - " '우리의 사랑은 아직도 불타고 있어',\n", - " \"cause i'm sensitive, i'm a sensitive thug\",\n", - " '오늘은 기념일 사랑하는 그녀에게',\n", - " '장미 100송이를 쏴 like brrrah',\n", - " \"cause i'm sensitive, i'm a sensitive thug\",\n", - " '약속시간에 좀 늦었어',\n", - " '그녀가 좀 섭섭해 했나봐, 웃어, baby',\n", - " \"i'm a sensitive thug\",\n", - " \"i'm a sensitive thug\",\n", - " \"i'm a sensitive thug\",\n", - " '피도 눈물도 없는 sensitive thug',\n", - " \"가끔 몰래 울어 cause i'm a sensitive thug\",\n", - " \"yeah, i'm a sensitive thug\",\n", - " '친구들 몰래 멜로 영화를 봐',\n", - " \"cause i'm a sensitive\",\n", - " '아직도 엄마한테 용돈받아',\n", - " '그래도 부끄럽지 않아',\n", - " \"i'm a sensitive thug\",\n", - " \"i'm a thug\",\n", - " 'b. 1. a. 4',\n", - " '숨이 멎을 것만 같아',\n", - " '사랑이 온 것만 같아',\n", - " '모르겠어 모르겠어',\n", - " '모르겠어 모르겠어',\n", - " '모르겠어 모르겠어',\n", - " 'like it like it like it',\n", - " 'drop it',\n", - " 'oh my beautiful target 헤이',\n", - " 'you zoom zoom heart like a rocket 호',\n", - " 'oh my beautiful target 헤이',\n", - " 'you zoom zoom heart like a rocket 호',\n", - " 'i like it like it like it',\n", - " 'i like it like it like it',\n", - " 'i like it like it like it',\n", - " '내 맘은 boom boom boom boom',\n", - " '너땜에 숨 숨 숨 숨',\n", - " '을 못쉬어 난 슬 슬 슬 슬쩍',\n", - " '다가가 너에게 빠져버렸어 어',\n", - " '내 스타일에 적합해',\n", - " '난 네게 반해서 허우적대',\n", - " '너와 함께라면 언제나 나',\n", - " '서울 뉴욕 로마 프라하',\n", - " 'oh my beautiful target 헤이',\n", - " 'you zoom zoom heart like a rocket 호',\n", - " 'oh my beautiful target 헤이',\n", - " 'you zoom zoom heart like a rocket 호',\n", - " 'i like it like it like it',\n", - " 'i like it like it like it',\n", - " 'i like it like it like it',\n", - " 'oh my beautiful target',\n", - " 'you zoom zoom my heart like a rocket',\n", - " '내 뜨거운 심장이 그대를 기다려요',\n", - " '미쳐버릴 것만 같아 i like it',\n", - " '녹아버릴 것만 같아',\n", - " '너 때문에 너 때문에',\n", - " '너 때문에 너 때문에',\n", - " '너 때문에 너 때문에',\n", - " 'oh oh i’m up &high',\n", - " '내 눈에 띄었어 넌 내 style yeah',\n", - " '더 이상은 내게 묻지도 마 날',\n", - " '놀리지 마 나 어떡하나',\n", - " '마른침이 고여온다 yeah',\n", - " 'ma target is you 날아가 후',\n", - " 'i’m like a robin hood',\n", - " 'what’s you gon’ make me do',\n", - " 'oh yes! sir!! gotta shoot!!',\n", - " 'oh my beautiful target',\n", - " 'you zoom zoom my heart like a rocket',\n", - " '내 뜨거운 심장이 그대를 기다려요',\n", - " 'oh my beautiful lady',\n", - " '난 너만 보여 나 어떡해',\n", - " '내 뜨거운 사랑을 그대여 받아줘요',\n", - " 'oh my beautiful target 헤이',\n", - " 'you zoom zoom heart like a rocket 호',\n", - " 'oh my beautiful target 헤이',\n", - " 'you zoom zoom heart like a rocket 호',\n", - " 'i like it like it like it',\n", - " 'i like it like it like it',\n", - " 'i like it like it like it',\n", - " 'come into 내 맘 닷 컴',\n", - " '아이디 패스워드 너의 luv',\n", - " '내 맘을 꼭 담아서',\n", - " 'i love you like a love song',\n", - " 'i like it like it like it',\n", - " 'i like it like it like it',\n", - " 'i like it like it like it',\n", - " 'come into 내 맘 닷 컴',\n", - " '아이디 패스워드 너의 luv',\n", - " '내 맘을 꼭 담아서',\n", - " 'i love you like a love song',\n", - " '뜨거운 사랑을 그대가 받아줘요',\n", - " 'i like it like it like it',\n", - " 'spread the love 반짝이게',\n", - " \"네게 보여 줄래 let's have a good time\",\n", - " '지금부터 더 신나게',\n", - " 'celebrate your happiness, celebrate your happiness',\n", - " \"come on let's take a ride\",\n", - " '꼭 해 줄 말이 있어',\n", - " '걱정 따윈 떨쳐 버리고',\n", - " '네 맘을 펼쳐봐',\n", - " '어제 생각은 마 이 밤을 느껴봐',\n", - " \"i'll show you how to rock baby\",\n", - " 'ooh, 노력 할 필요 없어 그냥 그저 이대로',\n", - " \"enjoy yourself, now let's get down, ooh...\",\n", - " 'spread the love 반짝이게',\n", - " \"네게 보여 줄래 let's have a good time\",\n", - " '지금부터 더 신나게',\n", - " 'celebrate your happiness, celebrate your happiness',\n", - " '기다려 온 tonight',\n", - " '리듬에 몸을 맡겨 버리고',\n", - " '바로 이 느낌이야',\n", - " 'oh let the groove get into you',\n", - " '어제 생각은 마 이 밤을 느껴봐',\n", - " \"i'll show you how to rock baby\",\n", - " 'ooh, 노력 할 필요 없어 그냥 그저 이대로',\n", - " \"enjoy yourself, now let's get down, ooh...\",\n", - " 'spread the love 반짝이게',\n", - " '네게 보여 줄래 have a good time',\n", - " '지금부터 더 신나게',\n", - " 'celebrate your happiness, celebrate your happiness',\n", - " 'sit back, enjoy the ride',\n", - " '맘 가는 대로 하면 돼',\n", - " '이젠 네 시간이야',\n", - " 'let love grow and last forever, ooh...',\n", - " 'spread the love 반짝이게 (oh)',\n", - " \"네게 보여 줄래 let's have a good time\",\n", - " '지금부터 더 신나게',\n", - " 'celebrate your happiness, celebrate your happiness (oh)',\n", - " 'free your mind',\n", - " \"i'll show you how to have a good time (show you how to have a good time)\",\n", - " 'celebrate your happiness, yeah',\n", - " \"i want you to shine, let's have a good time, yeah\",\n", - " 'ooh, have a good time',\n", - " 'ooh ooh ooh ooh...',\n", - " 'yeah, let it, let it shine',\n", - " 'free your, free your mind',\n", - " 'woo~ baby',\n", - " '멍하니 널 바라만 보게만 돼',\n", - " '마치 니가 내 여자가 맞는 건지 아닌지',\n", - " '니 어깨를 감싸고 너의 눈을 맞출때면',\n", - " 'i can’t control my feeling because of you',\n", - " 'you are so precious, oh my baby',\n", - " '누구에게도 이렇게 빠져본적이 없어',\n", - " 'i wanna make love with you',\n", - " 'i wanna make love with you',\n", - " '너를 더 알고 싶어서',\n", - " '아침해가 뜰 때 까지',\n", - " '너와 나 단둘이',\n", - " 'it’s gonna be a sweet night baby, i swear',\n", - " 'we’re making love all night baby it feels so right',\n", - " '너와 함께라면 내 기분은 막 날아가',\n", - " '한시라도 눈떼기 싫어 baby we making love',\n", - " '네게서 빠질 수 없어 we making love',\n", - " 'oh baby 너와 있는 이 시간에 난',\n", - " '나른하게 누워만 있고 싶어 my love is so true',\n", - " 'oh baby i will cherish your love all night yeah',\n", - " '내게서 빠져나오지 못하도록',\n", - " 'i wanna make love with you',\n", - " 'i wanna make love with you',\n", - " '너를 더 알고 싶어서',\n", - " '아침해가 뜰 때 까지',\n", - " '너와 나 단둘이',\n", - " 'it’s gonna be a sweet night baby, i swear',\n", - " '믿어줘 너 같은 여자 없다는',\n", - " '내 속삭임 you have to trust',\n", - " '너와 눈맞추는',\n", - " '순간 순간 들을 간직해 my love',\n", - " 'i wanna make love with you',\n", - " 'i wanna make love with you',\n", - " '너를 더 알고 싶어서',\n", - " '아침해가 뜰 때 까지',\n", - " '너와 나 단둘이',\n", - " 'it’s gonna be a sweet night baby, i swear',\n", - " 'all day, all day, all day~ no no, make love~',\n", - " 'make love, make love, yeah~',\n", - " 'we are, we are, we are',\n", - " 'we are, we are, we are',\n", - " '처음 알게 됐어 이렇게 연인도 아닌데',\n", - " '사람이 사람을 이만큼 좋아할 수 있단 걸',\n", - " 'you make me laugh 이 험하고 거친 세상에',\n", - " '우린 안식처야 내게 내게',\n", - " 'home sweet home, baby',\n", - " 'baby no matter where we are',\n", - " '항상 함께 일거야 we are',\n", - " \"'cause you make me strong\",\n", - " 'you don’t make me feel alone',\n", - " 'baby no matter whatever we do',\n", - " '더 빛나고 아름다울 거야',\n", - " \"'cause we're star\",\n", - " '항상 기억해 we have each other now',\n", - " 'we are, we are, we are',\n", - " 'we are, we are, we are',\n", - " 'we are, we are, we are',\n", - " 'we are, we are, we are',\n", - " 'ay, 청담 to 옥수 힘들었던 시간 지나',\n", - " '여기까지 왔지 성수 (hey)',\n", - " '우리의 찬란했던 20대 함께해준',\n", - " '내 fan, 내 staff, 내 fam 모두 thank you',\n", - " '고마운 사람들이 너무 많아',\n", - " '바닥친 내 자존감 올려준 너 말야',\n", - " '수백번을 말해도 해도 모자라',\n", - " '알잖아 우린 flower',\n", - " '너 없인 절대로 못 자라',\n", - " 'baby no matter where we are',\n", - " '변하지 않을 거야 we are',\n", - " '슬퍼하지마 언제나 함께일 테니까',\n", - " '다른 각자의 삶에서',\n", - " '함께 많은 걸 배웠어 사랑해',\n", - " '항상 기억해 we have each other',\n", - " 'we are, we are, we are',\n", - " 'we are, we are, we are',\n", - " 'we are, we are, we are',\n", - " 'we are, we are, we are',\n", - " '우리를 우리가 될 수 있도록',\n", - " '만들어줘서 고마운 마음 뿐이야 내겐',\n", - " '앞으로도 소중히 기억할게',\n", - " '늘 언제 어디에 있던지 우리',\n", - " 'we are, we are, we are (ooh...)',\n", - " 'we are, we are, we are (yeah, yeah)',\n", - " 'we are, we are, we are',\n", - " 'we are, we are, we are',\n", - " '너와 나와 우리 (me and you and we are)',\n", - " '너와 나와 우리 (me and you and we are)',\n", - " '너와 나와 우리 (me and you and we are)',\n", - " '너와 나와 우리',\n", - " 'we are heaven',\n", - " 'we are together',\n", - " 'we are love, we are love',\n", - " 'we are unending',\n", - " '(we are yours, yeah)',\n", - " 'hey guys, do you want to be cool?',\n", - " 'do you want to learn how to',\n", - " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", - " 'so what u gonna do',\n", - " '쉿, it’s wonder girls',\n", - " 'what’s my name? (l.i.m) wonder girls 막내 (here i am)',\n", - " '내가 혜림이다 혹시 모르면 테레비 봐',\n", - " '그래도 모르면 이거나 적어라 조심히 받아라 옛다 내 랩이다',\n", - " '\"tell me\" 누가 나처럼 \"so hot\", \"nobody\"',\n", - " '왜 불만 있어? 뭘 봐',\n", - " '모두 잘 알 듯 나 뒤늦게 합류',\n", - " '그래서 어쩌라고 솔직히 말해 봐 혜림이 멋져 라고',\n", - " '다른 여자 랩퍼 솔직히 싱겁네',\n", - " '착한 척만 하기도 이젠 피곤해',\n", - " '유빈언니도 내 랩 듣고 이러네',\n", - " '난 니가 얌전하고 착한 줄만 알았지',\n", - " '한국말로 랩하고 i can rap in english',\n", - " '我会唱中文饶舌 speaking foreign languages',\n", - " 'i sing, i dance, talking 쉿 about me?',\n", - " 'it ain’t cool, shut up and dance boy',\n", - " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", - " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", - " 'so whatchu gonna do? so whatchu gonna do?',\n", - " 'shh, it’s still wonder girls',\n", - " 'you foxes acting like kings in the jungle, watch out!',\n", - " 'the tiger is back for real',\n", - " 'we wonder girls we back to spread the wonder',\n", - " '현재 우리 전적 보자면 한국에서 먼저',\n", - " 'triple crown 먹고 went to america',\n", - " 'billboard hot 100 진입 now we’re movie stars',\n", - " '근데 뭐라구 감히 누가 갔다구',\n", - " '다시 한 번 말해 봐 없지 깡다구',\n", - " '내 이름과 얼굴 전 세계로 나가',\n", - " '급이 달라 전세기로 날아',\n", - " '내가 노는 물 넌 마시면 탈 나',\n", - " '맛있다고 또 먹어 또 먹음 배탈 나',\n", - " '한국말로 랩하고 i can rap in english',\n", - " '我会唱中文饶舌 speaking foreign languages',\n", - " 'i sing, i dance, talking 쉿 about me?',\n", - " 'it ain’t cool, shut up and dance boy',\n", - " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", - " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", - " 'so whatchu gonna do? so whatchu gonna do?',\n", - " 'shh, 쉿, stop shushing me',\n", - " '난 하고 싶은대로 할 거야',\n", - " '이 쌩뚱맞은 반주처럼 아무도 예상하지 못하게',\n", - " '내 비행을 막을 순 없어 because i am a wonder girl',\n", - " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", - " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", - " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", - " 'act cool, ac-act cool, ac-act cool, ac-act, ac-act',\n", - " '달이 차고 내 마음도 차고',\n", - " '이대로 담아 두기엔 너무 안타까워 너를 향해 가는데',\n", - " '달은 내게 오라 손짓하고',\n", - " '귓속에 얘길 하네 지금 이 순간이 바로 그 순간이야',\n", - " '제일 마음에 드는 옷을 입고 노란 꽃 한 송이를 손에 들고',\n", - " '널 바라 보다 그만 나도 모르게 웃어버렸네',\n", - " '이게 아닌데 내 마음은 이게 아닌데',\n", - " '널 위해 준비한 오백가지 멋진 말이 남았는데',\n", - " '사랑 한다는 그 흔한 말이 아니야',\n", - " '그 보단 더욱더 로맨틱하고 달콤한 말을 준비했단 말이야',\n", - " '숨이 차고 밤 공기도 차고',\n", - " '두 눈을 감아야만 네 모습이 보여 걸을 수가 없는데',\n", - " '구름 위를 걷는다는 말이 과장이 아니란 걸 알게 됐어',\n", - " '널 알게 된 후부터 나의 모든 건 다 달라졌어',\n", - " '이게 아닌데 내 마음은 이게 아닌데',\n", - " '널 위해 준비한 오백가지 멋진 말이 남았는데',\n", - " '사랑한다는 그 흔한 말이 아니야',\n", - " '그 보단 더욱더 로맨틱하고 달콤한 말을 준비했단 말이야',\n", - " '나를 봐줘요 내 말을 들어봐 줘요',\n", - " '아무리 생각을 하고 또 해도 믿어지지 않을 만큼 사랑해',\n", - " 'translation',\n", - " 'the moon seems cold, so is my heart',\n", - " 'to leave it like this',\n", - " 'i feel it could be so regrettable',\n", - " 'i find my way toward you',\n", - " 'the moon says, gestures me to come towards it',\n", - " 'and it whispers to me',\n", - " 'right now is the moment you wanted',\n", - " 'i put on my favorite clothes',\n", - " 'i take a single yellow rose in my hand while i stared at you',\n", - " 'without me knowing, i gave out a laugh',\n", - " 'this wasn’t it',\n", - " 'this wasn’t what my heart had planned',\n", - " 'for you the things i’ve prepared, i have over 500 cool things to say',\n", - " 'i love you, not something cheesy like that',\n", - " 'it is more, i’ve prepared something romantic and sweet',\n", - " 'my breath seems cool, so does the breeze outside',\n", - " 'only when i close both of my eyes i see you',\n", - " 'but i can’t walk blindfolded',\n", - " 'the phrase “feels like walking on a cloud”',\n", - " 'i knew it wasn’t just a metaphor the moment i saw you',\n", - " 'this isn’t it, this wasn’t what my heart had planned',\n", - " 'for you, the things i’ve prepared, i have over 500 cool things to say to you',\n", - " '“i love you,” it isn’t something so cheesy like that',\n", - " 'it is more, i’ve prepared something romantic and sweet',\n", - " 'do look at me, do listen to me',\n", - " 'no matter how many times i think about it, over and over again to where',\n", - " 'i can’t believe it exists, that’s how much i love you',\n", - " 'credit:',\n", - " 'translation: twirly @ youtube.com',\n", - " 'korean original',\n", - " '한 없이 웃기만 하네요 그녀도',\n", - " '아무렇지 않게 시간은',\n", - " '그댈 잡고 또 흘러가네요',\n", - " '꿈에 그대와 손을 잡고 함께하죠',\n", - " '잔인하게 난 해가 뜨면',\n", - " '인사를 하죠 베갤 적시며',\n", - " 'oh 너와 나 같은 하늘 아래 있어도',\n", - " '만날 순 없지만 나를 믿어줘',\n", - " 'i’ll be there for you',\n", - " '기다려 지금 너에게로 갈 테니까',\n", - " '어디에 있건 갈 테니까',\n", - " 'wait for me hey 시간아 더 빨리 가',\n", - " '기다려 너 있는 곳으로 갈 테니까',\n", - " '시간을 달려 갈 테니까 wait for me yeah',\n", - " '그녀에게 내 맘이 닿을 수 있도록',\n", - " '시간아 가라 가라 더 빨리',\n", - " '시간아 가라 가라 그녀에게',\n", - " '내가 닿을 수 있도록',\n", - " '머리에 아무것도 안 담겨',\n", - " '생각에 눈이 감겨',\n", - " '한 숨을 뱉고 내 두 손',\n", - " '머리 위에서 깍지 잡혀',\n", - " '다 거기서 거긴 듯해',\n", - " '내 삶이 반으로 접힌 듯해',\n", - " '꿈에 아름다운 네 모습',\n", - " '아직도 심장이 멈춘 듯 해',\n", - " '눈부신 햇살 아래',\n", - " '너와 얼굴을 마주하고',\n", - " '말하고 싶어 지금의 날',\n", - " '살게 해줘서 고맙다고',\n", - " '그리웠어 목소리 표정',\n", - " '가녀린 숨결까지도',\n", - " '이제 어디 안가 곁에 있을게',\n", - " '세상이 끝나는 순간까지도',\n", - " 'oh 너와 나 같은 하늘 아래 있어도',\n", - " '만날 순 없지만 나를 믿어줘',\n", - " 'i’ll be there for you',\n", - " '기다려 지금 너에게로 갈 테니까',\n", - " '어디에 있건 갈 테니까',\n", - " 'wait for me hey 시간아 더 빨리 가',\n", - " '기다려 너 있는 곳으로 갈 테니까',\n", - " '시간을 달려 갈 테니까 wait for me yeah',\n", - " '그녀에게 내 맘이 닿을 수 있도록',\n", - " '시간아 가라 가라 더 빨리',\n", - " '시간아 가라 가라 그녀에게',\n", - " '내가 닿을 수 있도록',\n", - " 'time passed and the spring flowers have bloomed',\n", - " '추웠던 날들을 보내 기억해',\n", - " '난 너에게만 속해',\n", - " 'i can only breathe when i’m next to you',\n", - " '준비됐어 너 하나면 족해',\n", - " 'i ain’t gonna leave 나 약속해',\n", - " '기다려 (기다려) 이제 우린 영원할 테니까',\n", - " '(and i’m coming for you, baby)',\n", - " '네가 없으면 난 안되니까 (yeah)',\n", - " 'wait for me hey 시간아 더 빨리 가',\n", - " '기다려 너 있는 곳으로 갈 테니까',\n", - " '시간을 달려 갈 테니까 wait for me yeah',\n", - " '그녀가 날 기억할 수 있도록',\n", - " '시간아 가라 가라 더 빨리',\n", - " 'english translation',\n", - " 'she keeps smiling on and on',\n", - " 'as if it’s nothing, time holds onto you as it ticks away',\n", - " 'in my dreams, i’m with you as i hold your hand',\n", - " 'but cruelly, i say goodbye',\n", - " 'when the sun rises',\n", - " 'as my pillow gets wet',\n", - " 'oh you and me, we’re under the same sky',\n", - " 'but we can’t meet, but believe in me',\n", - " 'i’ll be there for you',\n", - " 'wait (wait) because i’ll go to you right now',\n", - " 'wherever you are, i’ll go',\n", - " 'wait for me, hey, time is ticking faster',\n", - " 'wait (wait) because i’ll go to you right now',\n", - " 'i’ll run against time and go to you, wait for me yeah',\n", - " 'so that my heart can reach her',\n", - " 'time go faster',\n", - " 'time go to her',\n", - " 'so i can reach her',\n", - " 'i can’t put anything in my head',\n", - " 'my eyes close at the thought of you',\n", - " 'i let out a sigh',\n", - " 'and put my hands behind my head',\n", - " 'everything seems the same',\n", - " 'it’s like my life folded in half',\n", - " 'you still look beautiful in my dreams',\n", - " 'it’s like my heart stopped',\n", - " 'i want to look into your face',\n", - " 'under the dazzling sunlight',\n", - " 'and tell you, thank you',\n", - " 'for making me live as the me right now',\n", - " 'i missed you, your voice',\n", - " 'your face, even your soft breathing',\n", - " 'i won’t go anywhere now, i’ll be by your side',\n", - " 'even until the moment the world ends',\n", - " 'oh you and me, we’re under the same sky',\n", - " 'but we can’t meet, but believe in me',\n", - " 'i’ll be there for you',\n", - " 'wait (wait) because i’ll go to you right now',\n", - " 'wherever you are, i’ll go',\n", - " 'wait for me, hey, time is ticking faster',\n", - " 'wait (wait) because i’ll go to you right now',\n", - " 'i’ll run against time and go to you, wait for me yeah',\n", - " 'so that my heart can reach her',\n", - " 'time go faster',\n", - " 'time go to her',\n", - " 'so i can reach her',\n", - " 'time passed and the spring flowers have bloomed',\n", - " 'i’m letting go of the cold days, i remember',\n", - " 'i’m only inside of you',\n", - " 'i can only breathe when i’m next to you',\n", - " 'i’m ready for this, you alone are enough for me',\n", - " 'i ain’t gonna leave, i promise you',\n", - " 'wait (wait) because we’re gonna be forever now',\n", - " '(and i’m coming for you, baby)',\n", - " 'because i can’t go on without you (yeah)',\n", - " 'wait for me hey time go faster',\n", - " 'wait because i’ll go to you right now',\n", - " 'i’ll run against time and go to you, wait for me yeah',\n", - " 'so she can remember me',\n", - " 'time go faster',\n", - " 'breathe in',\n", - " 'breathe in and out and in and out and out',\n", - " 'breathe in',\n", - " 'breathe in and out and (out and out)',\n", - " 'breathe in',\n", - " 'breathe in and out and in and out and out',\n", - " 'breathe in',\n", - " 'breathe in and out and (out and out)',\n", - " '호흡은 비정상',\n", - " '심박수 비정상',\n", - " '시력은 괜찮고',\n", - " '혈압도 비정상',\n", - " '이렇게 뛰는데 정상일 리 없지',\n", - " '이렇게 뛰다가 저 세상 가겠지',\n", - " '지금 뛰는 게 난지',\n", - " '나인지 심장인지',\n", - " '파 파파파파파파팟',\n", - " '막 나를 앞서가네',\n", - " '너 땜에 너 땜에',\n", - " '내 맘이 심장이',\n", - " '내 숨이 숨이 숨이 숨이',\n", - " '(학 학)',\n", - " 'breathe in and out',\n", - " 'out of control',\n", - " 'breathe in and out',\n", - " 'breathe in and out, and out',\n", - " '웬만한 thrill에도 무덤덤했는데',\n", - " '나 치느님을 봐도 끄떡없었는데',\n", - " '들었다 놨다 놨다 들었다',\n", - " 'breathe in and out, and out',\n", - " 'breathe in',\n", - " 'breathe in and out, and in and out, and out',\n", - " 'breathe in',\n", - " 'breathe in and out, and (out and out)',\n", - " '걷잡을 수 없이',\n", - " '날뛰는 heart rate',\n", - " '이럴 줄 몰랐어',\n", - " 'oh i’m so overrated',\n", - " '자, 당겨졌어 trigger',\n", - " '시작 전에 breathe out',\n", - " '심장보다 빨리 달려',\n", - " 'speed up and catch you up',\n", - " '지금 뛰는 게 난지',\n", - " '나인지 심장인지',\n", - " '파 파파파파파파팟',\n", - " '막 나를 앞서가네',\n", - " '너 땜에 너 땜에',\n", - " '내 맘이 심장이',\n", - " '내 숨이 숨이 숨이 숨이',\n", - " '(학 학)',\n", - " 'breathe in and out',\n", - " 'out of control',\n", - " 'breathe in and out',\n", - " 'breathe in and out, and out',\n", - " '웬만한 thrill에도 무덤덤했는데',\n", - " '나 치느님을 봐도 끄떡없었는데',\n", - " '들었다 놨다 놨다 들었다',\n", - " 'breathe in and out, and out',\n", - " '아무 약도 안 드네',\n", - " '심각한 거 같아',\n", - " '아무래도 널 봐야',\n", - " 'good for my mind, my soul, my heart',\n", - " '(breathe out)',\n", - " 'breathe in and out',\n", - " 'out of control',\n", - " 'breathe in and out',\n", - " 'breathe in and out, and out',\n", - " '웬만한 thrill에도 무덤덤했는데',\n", - " '나 치느님을 봐도 끄떡없었는데',\n", - " '들었다 놨다 놨다 들었다',\n", - " 'breathe in and out, and out',\n", - " 'breathe in',\n", - " 'breathe in and out and in and out and out',\n", - " 'breathe in',\n", - " 'breathe in and out and (out and out)',\n", - " '다른 공간 같은 하늘 아래',\n", - " '마주쳤던 우리',\n", - " '알 수 없는 공기',\n", - " '가득 채웠던 기운들이',\n", - " '눈을 감으며 너를 꿈꾸며 빠져들어',\n", - " '스며들어 한걸음 너에게',\n", - " '숨을 내쉬며 천천히 다가갈게',\n", - " '내 손을 잡아 forever my love',\n", - " '너의 미소만이 나를 움직여',\n", - " '기분 좋은 하루를 시작하는 이유',\n", - " '너의 모습들이 나를 웃게 해',\n", - " '어딜 가도 너와 함께 있는 기분',\n", - " 'if it’s a dream',\n", - " '꿈에서 깨지 않길 바라',\n", - " '행복한 기억은 슬플 때 기억하라고 있는 건데',\n", - " '알 수 없는 내일이라 해도 너와 함께면 돼',\n", - " '저 끝까지 달려 see the sunrise, you and me',\n", - " '어딜 가도 너와 함께 있는 기분',\n", - " '그게 내가 살아가는 이유',\n", - " '지친 하루에 힘든 날들에 지금처럼',\n", - " '다가와 줘 내 맘을 안아줘',\n", - " '매일 기록해 너와의 시간들을',\n", - " '너를 꼭 담아 forever my love',\n", - " '너의 미소만이 나를 움직여',\n", - " '기분 좋은 하루를 시작하는 이유',\n", - " '너의 모습들이 나를 웃게 해',\n", - " '어딜 가도 너와 함께 있는 기분',\n", - " '숨을 쉬어도 너와 함께 있는 기분',\n", - " '내 맘속에 네가 살고 있는 이유',\n", - " '이 행복이 가끔은 겁이 나 all mine',\n", - " '눈 뜨면 아침이 널 데려갈까 afraid',\n", - " '영원이라는 헛된 꿈들은 나를 깨워',\n", - " '숨어있던 불안한 마음을',\n", - " '알려주지만 난 포기할 수 없어',\n", - " '내 손을 꼭 잡아 you are my love',\n", - " '너의 미소만이 나를 움직여',\n", - " '기분 좋은 하루를 시작하는 이유',\n", - " '너의 모습들이 나를 웃게 해',\n", - " '어딜 가도 너와 함께 있는 기분',\n", - " '숨을 쉬어도 너와 함께 있는 기분',\n", - " '내 맘속에 네가 살고 있는 이유',\n", - " '이 행복이 가끔은 겁이 나 all mine',\n", - " '눈뜨면 아침이 널 데려갈까 afraid',\n", - " 'english translation',\n", - " 'in different places, under the same sky',\n", - " 'we came together',\n", - " 'felt like a mysterious air',\n", - " 'was all around us',\n", - " 'i close my eyes, dreaming of you, falling for you',\n", - " 'seeping into you, taking a step toward you',\n", - " 'i’ll let out a breath and slowly go to you',\n", - " 'hold my hand, forever my love',\n", - " 'only your smile moves me',\n", - " 'it’s the reason i start my day',\n", - " 'all of you makes me smile',\n", - " 'wherever i go, feels like i’m with you',\n", - " 'if it’s a dream',\n", - " 'i hope i never wake up',\n", - " 'happy memories are there to remember when you’re sad',\n", - " 'even if tomorrow is unknown, it’ll be ok if i’m with you',\n", - " 'let’s go till the end, see the sunrise, you and me',\n", - " 'wherever i go, feels like i’m with you',\n", - " 'that’s the reason i live',\n", - " 'when the days are tiring and long',\n", - " 'come to me like you are now, embrace my heart',\n", - " 'i wanna record each moment with you',\n", - " 'placing you in each one, forever my love',\n", - " 'only your smile moves me',\n", - " 'it’s the reason i start my day',\n", - " 'all of you makes me smile',\n", - " 'wherever i go, feels like i’m with you',\n", - " 'even when i breathe, feels like i’m with you',\n", - " 'it’s the reason you live in my heart',\n", - " 'sometimes, i get scared of this happiness, all mine',\n", - " 'what if the morning takes you away, afraid',\n", - " 'pointless dreams of eternity wake me up',\n", - " 'the hidden anxieties tell me',\n", - " 'but i can’t give you up',\n", - " 'so hold my hand tight, you are my love',\n", - " 'only your smile moves me',\n", - " 'it’s the reason i start my day',\n", - " 'all of you makes me smile',\n", - " 'wherever i go, feels like i’m with you',\n", - " 'even when i breathe, feels like i’m with you',\n", - " 'it’s the reason you live in my heart',\n", - " 'sometimes, i get scared of this happiness, all mine',\n", - " 'what if the morning takes you away, afraid',\n", - " '손끝에 쥔 light, i want more oh, oh',\n", - " '두 눈을 떠 inside out 솔직한 널 보여',\n", - " '두 눈 감고 feels like 익숙한 곳 dreams i',\n", - " 'now i can go breath like',\n", - " '이대로 go scream like',\n", - " 'i got a feeling 소리쳐 louder',\n", - " '이게 바로 나의 fantasy야',\n", - " 'i got a felling i know you want it',\n", - " '원한다면 언제든 everyday야',\n", - " '지겨운 건 shit 이제 그만 stop it',\n", - " \"i don't care, oh, oh\",\n", - " \"i'll be there, oh, oh\",\n", - " 'i got a feeling 소리쳐 louder',\n", - " '미쳐라 널 위한 melody야',\n", - " \"i don't need to say anymore, oh, oh\",\n", - " '다가와 더 priceless 진짜 원하는 그대로',\n", - " '두 눈 감고 feels like 익숙한 곳 dreams i',\n", - " 'now i can go breath like',\n", - " '이대로 go scream like',\n", - " 'i got a feeling 소리쳐 louder',\n", - " '이게 바로 나의 fantasy야',\n", - " 'i got a felling i know you want it',\n", - " '원한다면 언제든 everyday야',\n", - " '지겨운 건 shit 이제 그만 stop it',\n", - " \"i don't care, oh, oh\",\n", - " \"i'll be there, oh, oh\",\n", - " 'i got a feeling 소리쳐 louder',\n", - " '미쳐라 널 위한 melody야',\n", - " '떨려오는 목소리 그 무대위의 내가',\n", - " \"i can't control, i see the light to the star\",\n", - " '익숙한 곳 끝이 없는 노래',\n", - " \"너 원하고 있잖아 i can't control\",\n", - " '이대로 go scream like',\n", - " 'i got a feeling 소리쳐 louder',\n", - " '이게 바로 나의 fantasy야',\n", - " 'i got a felling i know you want it',\n", - " '원한다면 언제든 everyday야',\n", - " '지겨운 건 shit 이제 그만 stop it',\n", - " \"i don't care, oh, oh\",\n", - " \"i'll be there, oh, oh\",\n", - " 'i got a feeling 소리쳐 louder',\n", - " '미쳐라 널 위한 melody야',\n", - " '사람들 나 보고 what a player',\n", - " '여기도 거기도 full of haters',\n", - " 'i’ll live my way',\n", - " 'and i’ll be like',\n", - " 'da dada da dada say what',\n", - " '매일 똑같은 하루 난 지쳐',\n", - " '거짓뿐인 삶 don’t look back',\n", - " 'can’t stop it',\n", - " 'no i can’t stop it what',\n", - " '모든 게 날 미치게 만들어',\n", - " '숨이 막혀 벗어나고 싶어',\n", - " '더 이상은 못 참아 나 이젠',\n", - " 'do it like do it like',\n", - " 'we only live once',\n", - " 'wolo wolo',\n", - " 'wolo wolo',\n", - " 'imma show you',\n", - " 'we only live once',\n", - " 'imma show you',\n", - " 'we only live once',\n", - " 'yeah',\n", - " 'do it do it',\n", - " \"we don't give a what so do it\",\n", - " '오늘 밤 끝까지 달려',\n", - " 'we movin’ on it',\n", - " '이제 everyday and any day',\n", - " \"don't have to do that work\",\n", - " '우리 마음대로 달려볼까',\n", - " '멈추지 말아 skrrt',\n", - " '원하지 않아 그냥 내버려 둬',\n", - " '그냥 hustling and hustling',\n", - " '한 번뿐인 인생',\n", - " 'imma do it 억제하는 널 잘 봐',\n", - " 'let me do it',\n", - " '중요한 걸 잊지마 oh no',\n", - " '모든 게 날 미치게 만들어',\n", - " '숨이 막혀 벗어나고 싶어',\n", - " '더 이상은 못 참아 나 이젠',\n", - " 'do it like do it like',\n", - " 'we only live once',\n", - " 'wolo wolo',\n", - " 'wolo wolo',\n", - " 'imma show you',\n", - " 'we only live once',\n", - " 'imma show you',\n", - " 'we only live once',\n", - " 'we only live once',\n", - " 'we only live once',\n", - " '설익은 나 점점 붉어져 뜨거워져',\n", - " '시간이 지날수록 달달하고',\n", - " '혀끝에 남은 새콤함은',\n", - " '밤새 널 잊지 못하게 해',\n", - " 'so sweet answer like this',\n", - " 'so sweet answer like this',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " 'so sweet answer like this',\n", - " 'so sweet answer like this',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " '씹히는 딸기씨처럼',\n", - " '예상치 못한 입안 즐거움은 너와 나',\n", - " '날 씻기는 단비처럼',\n", - " '조심스레 살며시 너',\n", - " '스며들어와 baby baby',\n", - " '입이 닿을 때 난 녹아버려',\n", - " '내가 닿을 때 넌 놓아버려',\n", - " '아무도 모르게 이렇게 훔치고 싶어',\n", - " 'i wanna steal you baby',\n", - " 'i wanna eat you up baby',\n", - " 'so sweet answer like this',\n", - " 'so sweet answer like this',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " 'so sweet answer like this',\n", - " 'so sweet answer like this',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " '그대를 만나고 바라보고',\n", - " '내 전불 맡기게 돼버린',\n", - " '이 모든 것이 꿈인 듯이',\n", - " '기적과도 같은 선물인 걸',\n", - " '그 긴 나의 어두움 속에',\n", - " '따스히 날 비춰주던',\n", - " '그대에게나 넘치는 이 맘',\n", - " '모두 담아 보낼게',\n", - " 'so sweet answer like this',\n", - " 'so sweet answer like this',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " 'so sweet answer like this',\n", - " 'so sweet answer like this',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " 'like a strawberry',\n", - " '복잡한 이 도시를 깨워 회색 빛 거리',\n", - " '저 신호등 아래 어깨를 익숙하게 흔들어',\n", - " '어깨를 빨리 더 빨리',\n", - " '손 끝의 울림 더 깊이 더 깊이',\n", - " 'i just want to feel good',\n", - " 'all night long oh',\n", - " '이 순간이 good thing good thing',\n", - " '날 보는 너 good thing good thing',\n", - " 'good thing good thing',\n", - " '이 시간은 good thing good thing',\n", - " 'good thing good thing babe',\n", - " '더 가볍게 good thing good thing',\n", - " 'good thing good thing',\n", - " '더 아래로 이 리듬에',\n", - " '밤새도록 너와 함께 더 신나게',\n", - " '우린 밤새 놀아 together 우린',\n", - " '터지는 마음에 밤새 뜨거워진 공기',\n", - " '음악은 널 채운 treasure',\n", - " '내 마음의 treasure',\n", - " '느끼는 데로 조금 더 신나게 널 멈추지 마',\n", - " 'give me what you got',\n", - " 'because you know that i can take it',\n", - " 'give me what you got',\n", - " '여긴 나의 place space ship',\n", - " 'whipping cream 가볍게 up to the sky',\n", - " '나아가 flex flex one’s muscles',\n", - " 'step up if you can keep up',\n", - " 'keep up with me',\n", - " '숨 크게 한 번 쉬고 들어가자 really deep',\n", - " '시끄럽게 춤을 추는 거야 daily',\n", - " 'until we get that good thing babe',\n", - " 'i just want to feel good',\n", - " 'all night long oh',\n", - " '이 순간이 good thing good thing',\n", - " '날 보는 너 good thing good thing',\n", - " 'good thing good thing',\n", - " '이 시간은 good thing good thing',\n", - " 'good thing good thing babe',\n", - " '더 가볍게 good thing good thing',\n", - " 'good thing good thing',\n", - " '더 아래로 이 리듬에',\n", - " '밤새도록 너와 함께 더 신나게',\n", - " 'i just want to feel good',\n", - " 'all night long oh',\n", - " '이 순간이 good thing good thing',\n", - " '날 보는 너 good thing good thing',\n", - " '이 시간은 good thing good thing',\n", - " 'good thing good thing babe',\n", - " '더 가볍게 good thing good thing',\n", - " '더 아래로 이 리듬에',\n", - " '밤새도록 너와 함께 더 신나게',\n", - " '더 신나게 더 신나게 더 신나게',\n", - " 'can you keep that secret?',\n", - " '(yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah)',\n", - " 'secret',\n", - " '(yeah, yeah, yeah, yeah, yeah, yeah)',\n", - " 'tell me',\n", - " '니 옆에 있는 남자',\n", - " '걔넨 빈 깡통이야 no, no, no (no)',\n", - " '내 점퍼 입고 나와',\n", - " \"i'ma 'bout to jump off with you, you, you (you)\",\n", - " '니 친구한테 말해',\n", - " '오늘 니 마음 도난당했다고 oh girl (oh girl)',\n", - " '너와 나 너와 나 둘이만',\n", - " 'we can go slow',\n", - " '(ay)',\n", - " '파격적인 몸매',\n", - " '가짜들과는 비교할게 nothing',\n", - " '오늘 밤에는 party',\n", - " \"너와 나 빼곤 no one's invited\",\n", - " '비밀로 로 로 로',\n", - " 'keep it low, low, low',\n", - " '밤공기에 설레는 이 밤',\n", - " '알아가자 너와 나 like',\n", - " '너의 향수 chocolate (chocolate)',\n", - " 'skinny jeans with high heels',\n", - " 'wanna get to know ya (oh)',\n", - " 'tell me',\n", - " 'can you keep that secret?',\n", - " '움직여봐 baby',\n", - " '오늘 다 보여줄게 boy (boy)',\n", - " 'can you keep that secret?',\n", - " '다가와 내 곁에',\n", - " '데려가 줘 아무도 찾지 않게',\n", - " 'can you keep that secret?',\n", - " '(nobody gotta know ya, nobody gotta know)',\n", - " 'can you keep that secret?',\n", - " '(nobody gotta know ya, nobody gotta know no no)',\n", - " 'can you keep that secret?',\n", - " '(nobody gotta know ya, nobody gotta know)',\n", - " 'can you keep that secret?',\n", - " '(nobody gotta know ya, nobody gotta know no, no)',\n", - " '다가와 줘 천천히',\n", - " '밤은 아직 젊어 boy (skrrt)',\n", - " '집에 가기 싫은 밤이야',\n", - " 'wanna get to know you more (ya)',\n", - " '니 곁에 앉아 아무 생각 없이 wanna ride bae',\n", - " ...]},\n", - " 'data': ['yes, i’m in love',\n", - " '아무 말 없이 있을 때',\n", - " '그 때 난',\n", - " 'yes, you’re in love',\n", - " '아무 표정이 없을 때',\n", - " '딱히 억지로 뭔가를 안 해도',\n", - " 'we got the fire',\n", - " '정적 그 안에서 타올라',\n", - " 'we gonna fire (yeah, yeah, yeah)',\n", - " '매 순간마다 커져 가',\n", - " '터질 듯한 이 느낌',\n", - " 'deep, deep, deep in love',\n", - " '눈빛으로 말하고 있어',\n", - " '깊 깊 깊어져',\n", - " '자연스럽게 빠져들어',\n", - " 'give, give, give me love',\n", - " '말 없이도 난 다 알아',\n", - " '(deep, deep, deep in love)',\n", - " 'i know what you want',\n", - " 'and you know what i want',\n", - " 'it’s love',\n", - " 'love',\n", - " 'love',\n", - " 'yes, i’m in love',\n", - " '그저 손만 닿아 있을 때',\n", - " '그 때 난',\n", - " 'yes, you’re in love',\n", - " '그저 편하게 누운 채',\n", - " '서로 바라보고 있기만 해도',\n", - " 'we got the fire',\n", - " '고요함 속 뜨거운 외침 (yeah, yeah, yeah)',\n", - " 'we gonna fire',\n", - " '매 순간마다 커져 가',\n", - " '터질 듯한 이 느낌',\n", - " 'deep, deep, deep in love',\n", - " '눈빛으로 말하고 있어',\n", - " '깊 깊 깊어져',\n", - " '자연스럽게 빠져들어',\n", - " 'give, give, give me love',\n", - " '말 없이도 난 다 알아',\n", - " '(deep, deep, deep in love)',\n", - " 'i know what you want',\n", - " 'and you know what i want',\n", - " 'it’s love',\n", - " 'oh, 아마도 끝이 없이 계속될 거야',\n", - " '서로를 향한 발걸음은',\n", - " 'deep, deep, deep in love',\n", - " '눈빛으로 말하고 있어',\n", - " '깊 깊 깊어져',\n", - " '자연스럽게 빠져들어',\n", - " 'give, give, give me love',\n", - " '말 없이도 난 다 알아',\n", - " '(deep, deep, deep in love)',\n", - " 'i know what you want',\n", - " 'and you know what i want',\n", - " 'it’s love',\n", - " 'deep, deep, deep in love',\n", - " '오렌지 빛 저녁 노을이 물들 때',\n", - " '왠지 니가 너무 보고 싶어',\n", - " '내 낡은 보드를 타고 달릴 때',\n", - " '왠지 너의 숨결 부는 것 같아',\n", - " 'touch my body',\n", - " \"except you there ain't nobody\",\n", - " 'oh honey now touch my body',\n", - " \"except you there ain't nobody\",\n", - " 'eh break down',\n", - " 'baby 나 너의 update 궁금할 때',\n", - " '생각나 너의 좋은 perfume',\n", - " \"i'm so in love\",\n", - " '오늘 밤 널 만나러 가는 길에',\n", - " '널 닮은 예쁜 꽃을 주고 싶어',\n", - " 'touch my body',\n", - " \"except you there ain't nobody\",\n", - " 'oh honey now touch my body',\n", - " \"except you there ain't nobody\",\n", - " 'eh break down',\n", - " '넌 나를 태워 너무 좋아 미워',\n", - " '가끔 너땜에 미치는 날 알잖아',\n", - " 'you are the best',\n", - " '나는 oh oh 후딜 입은 니 모습',\n", - " 'oh oh 어지러워',\n", - " '내 방에 침댈 주고 싶어',\n", - " '내 모둘 주고 싶어',\n", - " '솔직히 널 보고 싶어',\n", - " \"baby you know that you're my world\",\n", - " '너를 원한다고 하면',\n", - " '넌 뭐라고 말할까',\n", - " 'where you at what you doing',\n", - " 'baby come inside',\n", - " '끝없이 생각나 잠이 오질 않는걸',\n", - " '오늘 밤 너와 나 만나자',\n", - " 'oh baby oh baby oh baby',\n", - " 'touch my body',\n", - " \"except you there ain't nobody\",\n", - " 'oh honey now touch my body',\n", - " \"except you there ain't nobody\",\n", - " 'eh',\n", - " \"i'm so in love\",\n", - " \"touch my body ain't nobody\",\n", - " \"except you there ain't nobody\",\n", - " 'touch my body',\n", - " 'oh honey now touch my body',\n", - " \"except you there ain't nobody\",\n", - " 'eh break down',\n", - " 'you worth it, you perfect',\n", - " 'deserve it, just work it',\n", - " '넌 귀티나 귀티',\n", - " '또 pretty야 pretty',\n", - " '빛이나 빛이 넌 진리이자 이치',\n", - " '혹시 누가 너를 자꾸 욕해 욕해',\n", - " \"tell 'em you're my lady\",\n", - " '가서 전해 전해',\n", - " '딴 놈들이 뭐라건',\n", - " '이 세상이 뭐라건',\n", - " '넌 내게 최고 너 그대로',\n", - " '절대 쫄지 말아',\n", - " '누가 뭐래도 넌 괜찮아 alright',\n", - " '강해 너는 말야',\n", - " 'you say yes or no, yes or no',\n", - " '20세기 소녀들아',\n", - " 'live your life',\n", - " 'live your life come on baby',\n", - " '21세기 소녀들아',\n", - " \"you don't mind\",\n", - " \"you don't mind that new lady\",\n", - " '말해 너는 강하다고',\n", - " '말해 넌 충분하다고',\n", - " 'let you go, let you go, let you go',\n", - " 'let it go oh',\n", - " 'all my ladies put your hands up',\n", - " '21세기 소녀',\n", - " 'hands up',\n", - " 'all my ladies put your hands up',\n", - " 'now scream',\n", - " '너 지나가네 남자들이 say',\n", - " 'oh yeah 쟤 뭐야 대체 누구야',\n", - " '넋이 나가네 여자들이 say',\n", - " '어 얘는 또 뭐야 대체 누구야',\n", - " 'oh bae 절대 낮추지 마',\n", - " 'okay 쟤들에 널 맞추진 마',\n", - " \"you're mine\",\n", - " '넌 충분히 아름다워',\n", - " \"don't worry, don't worry\",\n", - " \"baby you're beautiful\",\n", - " 'you, you, you',\n", - " '20세기 소녀들아',\n", - " 'live your life',\n", - " 'live your life come on baby',\n", - " '21세기 소녀들아',\n", - " \"you don't mind\",\n", - " \"you don't mind that new lady\",\n", - " '말해 너는 강하다고',\n", - " '말해 넌 충분하다고',\n", - " 'let you go, let you go, let you go',\n", - " 'let it go oh',\n", - " 'all my ladies put your hands up',\n", - " '21세기 소녀',\n", - " 'hands up',\n", - " 'all my ladies put your hands up',\n", - " 'now scream',\n", - " 'everybody wanna love you',\n", - " 'everybody gonna love you',\n", - " '다른 건 걱정하지 마',\n", - " 'everybody wanna love you bae',\n", - " 'everybody gonna love you bae',\n", - " '넌 사랑 받아 마땅해',\n", - " 'all my ladies put your hands up',\n", - " '21세기 소녀',\n", - " 'hands up',\n", - " 'all my ladies put your hands up',\n", - " 'now scream',\n", - " 'all my ladies put your hands up',\n", - " '21세기 소녀',\n", - " 'hands up',\n", - " 'all my ladies put your hands up',\n", - " 'now scream',\n", - " '넌 철저해 나 아니면 절대 너를 못 당해',\n", - " '난 담을 넘고',\n", - " '뻠뻠뻠뻠뻠',\n", - " '뻠뻠 뻠뻠뻠뻠뻠',\n", - " '철벽같은 너의 맘을 열어 (uh)',\n", - " '나타날 땐 바람처럼 사라질 땐',\n", - " '연기처럼 너의 눈을 속이고',\n", - " '다가갈 땐 꽃잎처럼 파고들 땐',\n", - " '가시처럼 네 심장을 노리고',\n", - " '(danger) 오늘 밤에 오늘 밤에',\n", - " '오늘 밤에 오늘 밤에',\n", - " '(danger) 널 훔쳐가요 훔쳐가요',\n", - " '(훔쳐가요)',\n", - " 'stay, 손끝이 널 따라간 순간',\n", - " '세상에서 너만 빛나',\n", - " 'stay, 어둠이 다 삼켜버린 밤',\n", - " \"it's my show time\",\n", - " '(danger) 나와 함께 나와 함께',\n", - " '나와 함께 나와 함께',\n", - " '(danger) 사라져요 사라져요',\n", - " '(사라져요 사라져요)',\n", - " '난 신중해 내 타깃은 오직 하나뿐인데',\n", - " '난 초를 세고',\n", - " '뻠뻠뻠뻠뻠',\n", - " '뻠뻠 뻠뻠뻠뻠뻠',\n", - " '완벽했던 나의 시나리오 (uh)',\n", - " '바라볼 땐 미로처럼 잡았을 땐',\n", - " '모래처럼 시간은 더 흐르고',\n", - " '머릿속엔 안개처럼 흐트러진',\n", - " '퍼즐처럼 알다가도 모르고',\n", - " '(danger) 오늘 밤에 오늘 밤에',\n", - " '오늘 밤에 오늘 밤에',\n", - " '(danger) 널 훔쳐가요 훔쳐가요',\n", - " '(훔쳐가요)',\n", - " 'stay, 투영한 네 함정 속에 난',\n", - " '다시 한 번 몸을 던져',\n", - " 'stay, 너만이 날 볼 수 있는 밤',\n", - " \"it's my show time\",\n", - " '(danger) 나와 함께 나와 함께',\n", - " '나와 함께 나와 함께',\n", - " '(danger) 사라져요 사라져요',\n", - " '사라져요 사라져요',\n", - " '(danger) 너는 전부 알고 있어',\n", - " 'oh baby, yeah',\n", - " '또 나를 움직여 조증하고 있어',\n", - " 'oh, baby, yeah',\n", - " '(danger) 오늘 밤에 오늘 밤에',\n", - " '오늘 밤에 오늘 밤에',\n", - " '(danger) 널 훔쳐가요 훔쳐가요',\n", - " '훔쳐가요 훔쳐가요',\n", - " '(danger) 나와 함께 나와 함께',\n", - " '나와 함께 나와 함께',\n", - " '(danger) 사라져요 사라져요',\n", - " '(사라져요 사라져요)',\n", - " 'stay, 모든게 네 계 획대로야',\n", - " '진실은 네 손에 있어',\n", - " 'stay, 세상을 다 가진 듯한 밤',\n", - " \"it's my show time\",\n", - " '(danger) 오늘 밤에 오늘 밤에',\n", - " '오늘 밤에 오늘 밤에',\n", - " '(danger) 널 훔쳐가요 훔쳐가요',\n", - " '훔쳐가요 훔쳐가요',\n", - " '(danger) 나와 함께 나와 함께',\n", - " '나와 함께 나와 함께',\n", - " '(danger) 사라져요 사라져요',\n", - " '사라져요 사라져요',\n", - " 'taemin \"괴도 (danger)\" english translation',\n", - " \"you're so intense, if it's not me, no one can win you\",\n", - " \"i can't hold it anymore\",\n", - " 'bbum, bbum, bbum, bbum, bbum',\n", - " 'open your iron-like heart',\n", - " \"i'll appear like the wind, disappear like smoke\",\n", - " 'deceiving your eyes',\n", - " \"i'll approach you like a flower, dig into you like a thorn\",\n", - " 'going after your heart',\n", - " 'danger, tonight, tonight',\n", - " 'tonight, tonight',\n", - " \"danger, i'll steal you, i'll steal you away\",\n", - " '(steal you)',\n", - " 'stay, when my fingers follow you',\n", - " \"you're the only one who shines in this world\",\n", - " 'stay, on this night that swallowed all the darkness',\n", - " \"it's my show time\",\n", - " 'danger, with me, with me',\n", - " 'with me, with me',\n", - " 'danger, disappear, disappear',\n", - " '(disappear disappear)',\n", - " \"i'm very careful, my target is only you\",\n", - " \"i'll count the seconds and\",\n", - " 'bbum, bbum, bbum, bbum, bbum',\n", - " 'my perfect scenario',\n", - " \"i'm like a maze when you look at me\",\n", - " \"i'm like sand when you catch me\",\n", - " 'scattered like the fog',\n", - " 'mysterious like a puzzle',\n", - " 'danger, tonight, tonight',\n", - " 'tonight, tonight',\n", - " \"danger, i'll steal you, i'll steal you away\",\n", - " '(steal you)',\n", - " 'stay, into your transparent trap',\n", - " \"i'll throw myself again\",\n", - " 'stay, only you can see me tonight',\n", - " \"it's my show time\",\n", - " 'danger, with me, with me',\n", - " 'with me, with me',\n", - " 'danger, disappear, disappear',\n", - " '(disappear disappear)',\n", - " 'danger, you know everything',\n", - " 'oh baby yeah',\n", - " 'you move me and control me again',\n", - " 'oh, baby, yeah',\n", - " 'danger, tonight, tonight',\n", - " 'tonight, tonight',\n", - " \"danger, i'll steal you, i'll steal you away\",\n", - " 'steal you',\n", - " 'danger, with me, with me',\n", - " 'with me, with me',\n", - " 'danger, disappear, disappear',\n", - " '(disappear disappear)',\n", - " 'stay, everything is going as you planned',\n", - " 'the truth is in your hands',\n", - " 'stay, like you have the whole world tonight',\n", - " \"it's my show time\",\n", - " 'danger, tonight, tonight',\n", - " 'tonight, tonight',\n", - " \"danger, i'll steal you, i'll steal you away\",\n", - " 'steal you',\n", - " 'danger, with me, with me',\n", - " 'with me, with me',\n", - " 'danger, disappear, disappear',\n", - " 'disappear, disappear',\n", - " '아쉬울 것도 없어',\n", - " '진짜 할 만큼 했어',\n", - " '난 어차피 너 따위 있으나 없으나 똑같아',\n", - " '매번 약속은 번복',\n", - " '또 셀 수 없이 반복',\n", - " '너란 남자 딱 그 정도 내 마음 다 줬지만 no',\n", - " '빈 깡통 같은 네 sorry',\n", - " '이젠 그저 개 짖는 소리',\n", - " '정신을 차리고 보니 네 모든 게 오글거려',\n", - " '널 버려줄 게 recycle',\n", - " '네 옆에 그녀는 바보',\n", - " \"오늘 난 말할 게 i don't want you no more\",\n", - " 'hold up 영원할 거라 했어?',\n", - " '근데 결론은 또 you messed up',\n", - " '왔다 갔다 가벼운 넌 ping-pong',\n", - " '난 지금 너를 차는 거야, ding-dong',\n", - " \"player, you ain't know\",\n", - " '사람 잘못 골랐어',\n", - " '나만을 바라보고 위해 받들어 줬어야 해',\n", - " '여왕벌처럼 (woo!)',\n", - " 'see you later, boy, see you later',\n", - " 'see you later, boy, see you later, later',\n", - " 'see you later, boy, see you later',\n", - " \"would've, could've, should've, didn't\",\n", - " 'see you later, boy, see you later',\n", - " 'see you later, boy, see you later, later',\n", - " 'see you later, boy, see you later',\n", - " 'see you later, maybe never',\n", - " '콩깍지 벗겨졌어',\n", - " '잡아도 소용없어',\n", - " '또 이랬다저랬다 이러쿵저러쿵 구차해',\n", - " \"이제는 you ain't got no best friend (ew)\",\n", - " '외로울 거야 weekend (he-he!)',\n", - " '그래 넌 loser 외톨이 못된 양아치, ha-ah-ah',\n", - " '빈 깡통 같은 네 sorry',\n", - " '이젠 그저 개 짖는 소리',\n", - " '정신을 차리고 보니 네 모든 게 못나 보여',\n", - " '널 버려줄 게 recycle',\n", - " '네 옆에 그녀는 바보',\n", - " \"오늘 난 말할 게 i don't want you no more\",\n", - " '아픔도 모르게 빨랐던 시간만큼 (hey)',\n", - " '너는 훅 간 거야 지금 방금 (hey)',\n", - " '내가 누군지 까먹었니 똑바로 기억해',\n", - " \"i'm a boss bitch\",\n", - " '너 정도는 바로 정돈',\n", - " '이미 지웠어 네 전화번호',\n", - " \"설렘을 향해 다시 심장의 시동을 걸고 boomin'\",\n", - " 'pedal to the metal like',\n", - " 'see you later, boy, see you later',\n", - " 'see you later, boy, see you later, later',\n", - " 'see you later, boy, see you later',\n", - " \"would've, could've, should've, didn't\",\n", - " 'see you later, boy, see you later',\n", - " 'see you later, boy, see you later, later',\n", - " 'see you later, boy, see you later',\n", - " 'see you later, maybe never',\n", - " 'goodbye, baby 내가 네 곁에 있었을 때 잘하지 왜',\n", - " 'why you wanna go and do that, do that, why?',\n", - " '내 뒷모습을 좋아하던 너',\n", - " '지금 실컷 보고 잘 기억해',\n", - " 'bye-bye, bye-bye, bye',\n", - " 'see you later, boy, see you later',\n", - " 'see you later, boy, see you later, later',\n", - " 'see you later, boy, see you later',\n", - " \"would've, could've, should've, didn't\",\n", - " 'see you later, boy, see you later (hey!)',\n", - " 'see you later, boy, see you later, later (woo!)',\n", - " 'see you later, boy, see you later',\n", - " 'see you later, maybe never',\n", - " \"(would've, would've, would've)\",\n", - " \"would've, could've, should've, didn't\",\n", - " \"(would've, would've, would've)\",\n", - " \"would've, could've, should've, didn't\",\n", - " \"(would've, would've, would've)\",\n", - " \"would've, could've, should've, didn't\",\n", - " 'see you later, boy, see you later',\n", - " 'see you later, boy, see you later',\n", - " \"would've, could've, should've, didn't\",\n", - " 'see you later, boy, see you later',\n", - " 'see you later, boy, see you later, later',\n", - " 'see you later, boy, see you later',\n", - " 'see you later, maybe never',\n", - " 'you’re finally coming to me',\n", - " '네가 없으면 난 lonely',\n", - " '네가 없으면 난 nothing',\n", - " 'we gotta 계속 get going',\n", - " '오래 걸렸어 널 찾는 게',\n", - " '신이 내려준 것 같이',\n", - " 'on and on',\n", - " 'on and on',\n", - " 'baby don’t go',\n", - " 'you think about my love again i know babe',\n", - " 'a man that cares about you baby that’s me',\n", - " 'oh baby 진심 담은 노래 this is your song',\n", - " 'you better know i never let you down',\n", - " '누가 우리 막아도 상관없어',\n", - " \"love again, we'll love again, love till we die\",\n", - " 'we gotta hit it up live it up feel the love',\n", - " 'all day and night',\n", - " '너와 나 너와 나 우주에서',\n", - " '완벽하지 않아도 is it okay?',\n", - " '나 같은 남자 사랑해줘 alright',\n", - " '실수해도 baby is it okay?',\n", - " '날 위로해줄 사람 네가 돼줄래',\n", - " '믿어줘 믿어줄래',\n", - " 'wake up from now you’ll never be alone',\n", - " '믿어줘 믿어줄래',\n", - " 'on and on you will know',\n", - " '사랑 흘러 in my body',\n", - " 'baby no baby don’t',\n", - " 'don’t you say i’m not ready',\n", - " 'i can see the color of you',\n", - " '날 믿고 손을 잡아 girl you know it',\n", - " 'we don’t have no time to play',\n", - " 'i got you baby no worries',\n", - " '항상 옆에 있을게',\n", - " 'don’t know 뭐가 이렇게 좋은지',\n", - " '그냥 이유 없이 난 원해',\n", - " 'don’t you know that yeah',\n", - " '우리 잘 어울려',\n", - " 'yeah',\n", - " '완벽하지 않아도 is it okay?',\n", - " '나 같은 남자 사랑해줘 alright',\n", - " '실수해도 baby is it okay?',\n", - " '날 위로해줄 사람 네가 돼줄래',\n", - " '믿어줘 믿어줄래',\n", - " 'wake up from now you’ll never be alone',\n", - " '믿어줘 믿어줄래',\n", - " '우린 서로를 선택했어',\n", - " '나랑 같은 길로 걷는 게',\n", - " '절대 후회하지 않게 i’ll do my best',\n", - " '나만 믿고 따라와 줄래',\n", - " 'don’t need to worry',\n", - " 'trust me don’t worry',\n", - " '완벽하지 않아도 is it okay?',\n", - " '나 같은 남자 사랑해줘 alright',\n", - " '실수해도 baby is it okay?',\n", - " '날 위로해줄 사람 네가 돼줄래',\n", - " '믿어줘 믿어줄래',\n", - " 'wake up from now you’ll never be alone',\n", - " '비춰줘 비춰줄래',\n", - " 'ye ye~ ye ye~ ye! ye! ye! ye ye~ 1,2,3 ye~',\n", - " 'if you wanna pretty every wanna pretty',\n", - " '안된다는 맘은 no no no no',\n", - " 'if you wanna pretty every wanna pretty',\n", - " '어디서나 당당하게 걷기',\n", - " '나와 맞는 옷에 또 받쳐주는 말투',\n", - " '센스있는 포즈 그냥 되지는 않죠',\n", - " '생활 상식은 기본 시사 상식은',\n", - " '선택 다 끊임 없는 노력이죠',\n", - " 'girl! pretty girl!',\n", - " 'pretty girl! 조금도 망설일 것 없죠',\n", - " '난 beautiful girl!',\n", - " 'beautiful girl! beautiful! ye ye ye ye',\n", - " 'girl! pretty girl!',\n", - " 'pretty girl! 그냥 되진 않는거죠',\n", - " '난 beautiful girl!',\n", - " 'beautiful! ye ye ye ye common beautiful girl!',\n", - " 'if you wanna pretty every wanna pretty',\n", - " '안된다는 맘은 no no no no',\n", - " 'if you wanna pretty every wanna pretty',\n", - " '어디서나 당당하게 걷기',\n", - " 'girl! pretty girl!',\n", - " 'pretty girl! 조금도 망설일 것 없죠',\n", - " '난 beautiful girl!',\n", - " 'beautiful girl! beautiful! ye ye ye ye',\n", - " 'girl! pretty girl!',\n", - " 'pretty girl! 그냥 되진 않는거죠',\n", - " '난 beautiful girl!',\n", - " 'beautiful! ye ye ye ye common beautiful girl!',\n", - " '마음은 예쁘게 표정은 산뜻하게',\n", - " '하루를 시작하면서 잊지 말아야 하죠',\n", - " '두 눈을 깜박이며 살짝 미소 지으면',\n", - " '이젠 모든게 완벽하죠',\n", - " 'girl! pretty girl!',\n", - " 'pretty girl! 누구라도 될수있죠',\n", - " '난 beautiful girl!',\n", - " 'beautiful! ye ye ye ye ye ye ye ye',\n", - " 'girl! pretty girl!',\n", - " 'pretty girl! 그냥 되진 않는거죠',\n", - " '난 beautiful girl!',\n", - " 'beautiful girl ye~',\n", - " 'if you wanna pretty every wanna pretty',\n", - " '안된다는 말은 no no no no',\n", - " 'if you wanna pretty every wanna pretty',\n", - " '어디서나 당당하게 걷기',\n", - " 'korean',\n", - " '난 왜 니가 가진 것들을 부러워하는 걸까',\n", - " '감당하지도 못할 것들을 손에 꼭 쥐고서',\n", - " '여기서 무얼 얼만큼 더 나아지고픈 걸까',\n", - " '너도 똑같은 거 다 아는데 내가 이기적인 걸까',\n", - " '많이 가져도 난 아직 너 같진 않아',\n", - " '아픈 기억들 위로 매일 혼자 걸어 난',\n", - " '아플걸 알아도 자꾸 마음이 가나 봐',\n", - " '그래서 자꾸 네게 욕심을 내나 봐',\n", - " '나의 나의 나의 그대여',\n", - " '이름만 불러봐도 맘이 벅차요',\n", - " '난 더욱 더욱 더욱 크게 되어',\n", - " '널 가득 안고 싶고 그래요',\n", - " '하고 싶은 말을 하는 게 불안해서',\n", - " '너를 밀어내고서 불편하게 만들어',\n", - " '듣고 싶은 말이 너무나 많은데도',\n", - " '바라지를 못하고 마음 아프게 기다려',\n", - " '나의 나의 나의 그대여',\n", - " '이름만 불러봐도 맘이 벅차요',\n", - " '난 더욱 더욱 더욱 크게 되어',\n", - " '널 가득 안고 싶고 그래요',\n", - " 'english translation',\n", - " 'why am i jealous of what you have',\n", - " 'holding tight onto things i’ll never manage',\n", - " 'how much better do i want to be',\n", - " 'i know you’re the same, maybe i’m just being selfish',\n", - " 'although i have a lot, i’m still not quite like you',\n", - " 'every day i walk alone, over the painful memories',\n", - " 'i know it’ll hurt but i can’t help noticing',\n", - " 'maybe that’s why i keep longing for you',\n", - " 'my my my darling',\n", - " 'just calling your name makes my heart full',\n", - " 'i want to get bigger, bigger, and bigger',\n", - " 'so i can give you a big armful of hugs',\n", - " 'cuz i’m afraid to say things i want to say',\n", - " 'i push you away and make things uncomfortable',\n", - " 'although there is so much i want to hear',\n", - " 'i cannot dare to desire and just wait painfully',\n", - " 'my my my darling',\n", - " 'just calling your name makes my heart full',\n", - " 'i want to get bigger, bigger, and bigger',\n", - " 'so i can give you a big armful of hugs',\n", - " '정말 이기적이야 넌',\n", - " '너무 예쁜 걸',\n", - " '내 입 꼬리가 헤퍼지잖아 girl',\n", - " 'oh special girl',\n", - " '뭘 해도 뭘 해도 나는 녹아',\n", - " '누가 뭐래도 뭐래도 니가 일상',\n", - " '뻔하지만 이건 널 위한 고백',\n", - " '이건 널 위한 고백 이지만 가끔',\n", - " '혼자 하는 사랑 같아 가슴이 따끔',\n", - " '지금 너의 감정은 어때',\n", - " '아직도 너의 답을 기다리잖아 여태',\n", - " '친구들이 같이 한 자리에서도',\n", - " '둘이 심상치 않은 기류 눈치 챘었고',\n", - " '우연히 거리에서 마주칠 때',\n", - " '어색한 눈빛 교환이 버릇이 돼 uh',\n", - " '너의 마음이 나와 똑같다면',\n", - " '이대로 그 맘이 계속 자라면',\n", - " '절대로 겁먹지 말기 더 많이',\n", - " '사랑해주기',\n", - " '한 발 물러서면 잡아주기',\n", - " '더 미루지 말고',\n", - " '오늘 한번 kiss 해 줄래',\n", - " '종일 너만 바라보는데',\n", - " '이게 장난 같니',\n", - " 'only you only you',\n", - " '그만 밀당 하고',\n", - " '더 미루지 말고',\n", - " '오늘 한번 넘어가줄래',\n", - " '지금 내가 하는 말들이',\n", - " '너는 장난 같니',\n", - " 'love is you love is you',\n", - " '오늘 한번만 받아줘',\n", - " '저기도 왜 여기도 왜',\n", - " '온통 연인 들 뿐이고',\n", - " '우리도 저들과 같을 수 있다고',\n", - " 'oh special girl',\n", - " '뭘 해도 뭘 해도 나는 녹아',\n", - " '누가 뭐래도 뭐래도 니가 일상',\n", - " '뻔하지만 이건 널 위한 고백',\n", - " '못 참아 나도 더 이상',\n", - " '이것도 저것도 아닌 우리 사이',\n", - " '여기서 멀어지는 건 순식간',\n", - " '이제 내가 당길 테니까 제발 놓지 마',\n", - " '자 입술은 가볍게 힘 풀어줘',\n", - " '그다음은 내게 다 맡겨줄래',\n", - " '시간이 금이란 속담이 맞았네',\n", - " '오늘따라 흘러가는 시간이 야속해',\n", - " '더 미루지 말고',\n", - " '오늘 한번 kiss 해 줄래',\n", - " '종일 너만 바라보는데',\n", - " '이게 장난 같니',\n", - " 'love is you love is you',\n", - " '오늘 한번만 받아줘',\n", - " '여전히 둘의 사이 어색해 어떡해',\n", - " '너만 괜찮다면 내가 지켜줄게 ooh',\n", - " '불안함은 잠시 접을래 yeah ooh',\n", - " '더 미루지 말고',\n", - " '오늘 한번 kiss 해 줄래',\n", - " '종일 너만 바라보는데',\n", - " '이게 장난 같니',\n", - " 'only you only you',\n", - " '그만 밀당 하고',\n", - " '더 미루지 말고',\n", - " '오늘 한번 넘어가줄래',\n", - " '지금 내가 하는 말들이',\n", - " '너는 장난 같니',\n", - " 'love is you love is you',\n", - " '오늘 한번만 받아줘',\n", - " 'english translation',\n", - " '------------------------------------------',\n", - " 'you’re so selfish',\n", - " '(you’re so pretty)',\n", - " 'my lips are being so easy girl',\n", - " '(oh special girl)',\n", - " 'whatever you do, you melt me',\n", - " 'whatever anyone says, you’re #1',\n", - " 'it’s obvious but this is a confession for you',\n", - " 'this is a confession for you',\n", - " 'but sometimes, i feel like it’s a typical love',\n", - " 'how do you feel right now?',\n", - " 'i’m still waiting for your answer',\n", - " 'when we were all hanging out',\n", - " 'my friends already noticed the weird air between us',\n", - " 'when i randomly run into you on the street',\n", - " 'the awkward exchange of looks became a habit',\n", - " 'if you feel the same way as me',\n", - " 'if your feelings are growing',\n", - " 'don’t be scared, let’s love even more',\n", - " 'if someone takes a step back, let’s catch each other',\n", - " 'don’t push it back any more',\n", - " 'i wanna kiss you today',\n", - " 'all day, i’m only looking at you',\n", - " 'do you think this is a joke?',\n", - " 'only you only you',\n", - " 'stop playing games with me',\n", - " 'don’t push it back any more',\n", - " 'will you fall for me today?',\n", - " 'what i’m saying right now',\n", - " 'do you think it’s a joke?',\n", - " 'love is you love is you',\n", - " 'accept me today',\n", - " 'here and there',\n", - " 'this place is filled with couples',\n", - " 'we can be like them',\n", - " '(oh special girl)',\n", - " 'whatever you do, you melt me',\n", - " 'whatever anyone says, you’re #1',\n", - " 'it’s obvious but this is a confession for you',\n", - " 'i can’t wait anymore',\n", - " 'we’re not this or that',\n", - " 'it’ll only take a moment for us to grow apart',\n", - " 'now i’ll do the pulling',\n", - " 'so please don’t let go',\n", - " 'relax your lips',\n", - " 'then just trust me',\n", - " 'it’s true when they say time is gold',\n", - " 'time passing feels even crueller today',\n", - " 'don’t push it back any more',\n", - " 'i wanna kiss you today',\n", - " 'all day, i’m only looking at you',\n", - " 'do you think this is a joke?',\n", - " 'love is you love is you',\n", - " 'accept me today',\n", - " 'it’s still awkward between us',\n", - " 'if it’s alright with you, i’ll protect you',\n", - " 'i wanna put away my anxiety for a moment',\n", - " 'don’t push it back any more',\n", - " 'i wanna kiss you today',\n", - " 'all day, i’m only looking at you',\n", - " 'do you think this is a joke?',\n", - " 'only you only you',\n", - " 'stop playing games with me',\n", - " 'don’t push it back any more',\n", - " 'will you fall for me today?',\n", - " 'what i’m saying right now',\n", - " 'do you think it’s a joke?',\n", - " 'love is you love is you',\n", - " 'accept me today',\n", - " 'perception, illusion, your vision',\n", - " 'perception, illusion, your vision',\n", - " 'out of light but i see',\n", - " '이리 오라 말하지만 넌 의미 없지',\n", - " '널 버리라 말하지만',\n", - " 'but you see',\n", - " 'but you see',\n", - " 'but you see',\n", - " '넌 그때 어렸다 믿지만 난 알았지',\n", - " '거친 편견들이 둘러싸여',\n", - " '멋진 품격들을 우린 놓쳐',\n", - " 'we lay our real feelings here and there',\n", - " 'and here and there',\n", - " 'perception and here and there',\n", - " 'illusion and here and there',\n", - " 'your vision and here and there',\n", - " 'perception and here and there',\n", - " 'illusion and here and there',\n", - " 'your vision',\n", - " 'perception, illusion, your vision',\n", - " 'perception, your vision',\n", - " 'illusion, perception',\n", - " 'hours of trying and i say',\n", - " '이해하려는 하지만 더 힘이 없지',\n", - " \"잃어버린 너를 찾지만 can't you see\",\n", - " '너를 찾아다니지만 사실은 아니지',\n", - " 'digital version of yourself',\n", - " 'is only part of yourself',\n", - " '다 지난 너를 버리고 니 감정을 입어',\n", - " 'you may let your feelings appear',\n", - " 'you may let your feelings appear',\n", - " 'and here and there',\n", - " 'and here and there',\n", - " 'and here and there',\n", - " 'and here and there',\n", - " '이리 오라 말하지만 넌 의미 없지',\n", - " '이리 오라 말하지만 넌 의미 없지',\n", - " 'earthquake in the club',\n", - " 'stage 는 갈라지고',\n", - " '술은 흘러내리고 있어',\n", - " '그러니까 옆에서 누가 춤을 추던',\n", - " '술에 취해 비틀거리던',\n", - " '너가 신경 쓸 필요 없어',\n", - " '그래 이 노랜 fuxkin 번지 shit',\n", - " '너무 wild 해',\n", - " '살아남는 방법을 알려줄 게',\n", - " 'ay 넌 왜 아직도 거기있어',\n", - " '여기 재밌는 게 더 많아',\n", - " '멍청한 애들은 모르네',\n", - " '썩어빠진 씬을 침수시킨 뒤에',\n", - " '물결을 완전히 바꿨지',\n", - " '하나부터 열까지 너넨',\n", - " '전부 틀에 박혔으니',\n", - " '뭐라는지 하나도',\n", - " '알아들을 수 없는 너의',\n", - " '가사 속에 살고 있는 너조차도',\n", - " '너를 모르지',\n", - " 'fuckyall 전부 때려 부시지',\n", - " '부디 이 영감이 내 맘속에 영원하길',\n", - " '그러니까 답이 없는 그래 너네 concept',\n", - " '같은 것들 그냥 집어치우고 세탁기에 넣어 bish',\n", - " '세탁기에 넣어 swish',\n", - " '세탁기에 넣어 swish',\n", - " 'new wave new wave new wave -',\n", - " 'everybody comin’ yayayayaya comin’ ya ya',\n", - " 'everyday we movin’ yayayayaya movin’ yaya',\n", - " 'everybody comin’ yayayayaya comin’ ya ya',\n", - " 'everyday we movin’ yayayayaya movin’ yaya',\n", - " 'i wanna make you groove',\n", - " '조명이 어두워질 때',\n", - " 'the way your body move',\n", - " '아침이 밝을때 까지',\n", - " 'i wanna make you groove',\n", - " '우리가 만든 물결은',\n", - " 'the way your body move',\n", - " '뭐든지 가능하게 해',\n", - " 'hey wait baby mama oou',\n", - " 'i don’t want no drama ya',\n", - " 'makin some fuxking money',\n", - " 'move to yokohama',\n", - " 'gq magazine',\n", - " 'you gotta let me in',\n", - " 'omega off the beam',\n", - " 'be on binge and i cut the scene',\n", - " 'and i’m going crazy wavy',\n", - " 'bottles poppin got me daydream',\n", - " 'ice so colde and got a frostbite',\n", - " '너무 추워서 이빨이 딱딱 ya',\n", - " 'what all over my shoe oou',\n", - " 'giving me neck in the coupe ya',\n", - " 'babygirl gotta get loose poppin a perc and i holla at you',\n", - " 'she wanna ride along hmm got a bish mad at you hmmm',\n", - " 'flame hachoo seoul to baton rouge',\n", - " 'and i’m so wavy',\n", - " 'noddin devils dancin',\n", - " 'smoothest of the century',\n", - " 'yo mama call me baby',\n", - " 'ya ya shix is goin fuxkin crazy',\n", - " 'ya ya everybody everybody',\n", - " 'yayayayaya comin ya ya',\n", - " 'everyday we movin yayayayaya movin yaya',\n", - " 'everybody comin yayayayaya comin ya ya',\n", - " 'everyday we movin yayayayaya movin yaya',\n", - " 'i wanna make you groove',\n", - " '조명이 어두워질 때',\n", - " 'the way your body move',\n", - " '아침이 밝을때 까지',\n", - " 'i wanna make you groove',\n", - " '우리가 만든 물결은',\n", - " 'the way your body move',\n", - " '뭐든지 가능하게 해',\n", - " 'so baby don’t cry so baby don’t cry',\n", - " 'so baby don’t cry baby don’t cry',\n", - " 'baby don’t cry baby don’t cry',\n", - " '다 말해줄래 하나도 빠짐없이 (why you leave me now) tell me (오오 에워)',\n", - " '변명 하지마 내가 너를 잘 알잖아 내 눈보고 말해봐 (워워 워워)',\n", - " 'so baby don’t cry baby tell me why',\n", - " 'you’re leaving me tonight you’re leaving me tonight',\n", - " 'so baby don’t cry baby tell me why',\n", - " '떠나는 건 너야 날 버린 건 너야',\n", - " 'rewind, rewind돌아갈 거야 우리 처음 만났던 바로 그 날',\n", - " '다시 시작하고 싶어 죽어도 이렇게는 싫어',\n", - " 'come on, come on 그 놈이 대체 뭐가 더 잘났니',\n", - " '나보다 널 사랑하니 singing (오오 에워)',\n", - " 'so baby don’t cry look into my eyes you know that',\n", - " 'i love you don’t tell me goodbye (why why)',\n", - " 'why do you wanna walk away',\n", - " 'so baby don’t cry baby tell me why',\n", - " 'you’re leaving me tonight you’re leaving me tonight',\n", - " 'so baby don’t cry baby tell me why',\n", - " '떠나는 건 너야 날 버린 건 너야',\n", - " 'you know me 너도 내 성격 잘 알잖아 끝까지 착한 척은 안 해',\n", - " 'you know me 잘 지내 그딴 말은 안해 불행하길 빌꺼야',\n", - " 'so baby don’t cry baby tell me why',\n", - " 'you’re leaving me tonight you’re leaving me tonight',\n", - " 'so baby don’t cry baby tell me why',\n", - " '떠나는건 너야 날 버린건 너야',\n", - " '매일 밤마다 널 그려 넣어',\n", - " '날 항상 밝은 빛으로 물들여 주는 너 so ma su',\n", - " 'so baby don’t cry baby tell me',\n", - " 'why you’re leaving me tonight you’re leaving me tonight',\n", - " 'so baby don’t cry',\n", - " 'i draw you in my dream',\n", - " '꿈속의 너를 계속 그려가',\n", - " '눈 뜨면 잃을까',\n", - " '지금 이대로 모든 게 멈추길',\n", - " 'ay 깊은 안갯속에 난 길을 잃어가',\n", - " '너란 빛을 따라가 네게 닿을지 몰라',\n", - " \"i'm falling down 끝이 없는 걸\",\n", - " '어서 baby 나를 깨워줘',\n", - " 'oh 너만 떠올라',\n", - " '태양이 구름 위를 걸을 때',\n", - " '달이 너를 비출 때',\n", - " 'girl you make me wonder',\n", - " '매일 봐도 모르겠어 baby',\n", - " '네가 보고 싶어 oh crazy',\n", - " '또 네게 빠져나올 수 없어',\n", - " \"i don't know how you do it\",\n", - " 'you wake me up with your mind',\n", - " 'you wake me up with your mind',\n", - " 'you wake me up with your',\n", - " '이건 마치 bright light',\n", - " '순간의 패러다임',\n", - " 'you wake me up with your',\n", - " 'you wake me up with your mind',\n", - " \"i'm on your side\",\n", - " \"you'll be my sign\",\n", - " '조금씩 빠져들 거야 더',\n", - " '흐릿하던 날들은 너로 선명해져',\n", - " 'i got you now 널 보면 lose my mind',\n", - " '너의 향기로 차올라 eh',\n", - " '나의 맘은 벅차올라 eh',\n", - " '잡은 두 손 꼭 놓지 마 eh',\n", - " 'i never let you go',\n", - " 'girl you make me wonder',\n", - " '매일 봐도 모르겠어 baby',\n", - " '네가 보고 싶어 oh crazy',\n", - " '또 네게 빠져나올 수 없어',\n", - " \"i don't know how you do it\",\n", - " 'you wake me up with your mind',\n", - " 'you wake me up with your mind',\n", - " 'you wake me up with your',\n", - " '이건 마치 bright light',\n", - " '순간의 패러다임',\n", - " 'you wake me up with your',\n", - " 'you wake me up with your mind',\n", - " '나를 잡아 놓지 말아 줘',\n", - " \"i'm doin' it all yeah\",\n", - " \"i'd do it all for you\",\n", - " '내가 바래온 너라서',\n", - " \"i think i'm in love, yeah\",\n", - " \"i've fallin' for you\",\n", - " '끝이 안 보여 난, ah',\n", - " '매일 새로운 날, ah',\n", - " 'yeah, i think that you know',\n", - " '너를 본 순간',\n", - " '굳이 말하지만, ah',\n", - " '매일 눈부셔 넌, ah',\n", - " 'yeah, i think that you know',\n", - " \"so please don't let me go\",\n", - " 'you wake me up with your mind',\n", - " 'you wake me up with your mind',\n", - " 'you wake me up with your',\n", - " '이건 마치 bright light',\n", - " '순간의 패러다임',\n", - " 'you wake me up with your',\n", - " 'you wake me up with your mind',\n", - " 'you wake me up with your mind',\n", - " 'you wake me up with your',\n", - " '이건 마치 bright light',\n", - " '순간의 패러다임',\n", - " 'you wake me up with your',\n", - " 'you wake me up with your mind',\n", - " '온종일 몰아친 너무 바쁜 일',\n", - " '걸음걸이까지 내 게 아닌데',\n", - " '밤이 너무 멋진걸 집에 가기엔',\n", - " '아직 계획한 건 아무것도 없지만, 기분만큼은 high지 (ha)',\n", - " '별 약속 없는데, 전화하면 좀 어때?',\n", - " \"what you think 'bout that? (ooh)\",\n", - " \"what you think 'bout that, that? (ha)\",\n", - " '저 달이 미치게 우릴 불러 대는데',\n", - " \"what you think 'bout that?\",\n", - " \"what you think 'bout that, that? (woah, woah, woah, ooh)\",\n", - " 'hey, mama, 지금 바로 이 순간',\n", - " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", - " 'just you and i (ooh, woah-ooh, woah-oh)',\n", - " 'hey, mama, 특별할 것 없는 밤',\n", - " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", - " 'just you and i (ooh, woah-ooh, woah-oh)',\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", - " '모두 잊고 여기 모여 봐',\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", - " '지금 바로 놀라게 해 봐 날',\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", - " '밤을 딛고 별에 올라 봐',\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", - " '지금 네게 뛰어드는 날 봐 (that’s right)',\n", - " 'ya, 때깔나게 차려입을 필요 없어 (oh, yeah)',\n", - " '일하다 말고 온 게 뭐가 어때?',\n", - " '얼레벌레 차려입고 꾸미다 밤새',\n", - " '이미 넌 클라스가 다른 모태 (alright!)',\n", - " '넌 뭘 입어도 사실 hot해 (hot해)',\n", - " '계획 짜고 그래 봤자 뻔해',\n", - " '여유 부릴 틈이 없잖아',\n", - " '해가 짧아지고 있다고 (woo, ha!)',\n", - " '별 약속 없는데, 전화하면 좀 어때?',\n", - " \"what you think 'bout that? (ooh)\",\n", - " \"what you think 'bout that, that? (ha)\",\n", - " '저 달이 미치게 우릴 불러 대는데',\n", - " \"what you think 'bout that?\",\n", - " \"what you think 'bout that, that? (woah, woah, woah, ooh)\",\n", - " 'hey, mama, 지금 바로 이 순간',\n", - " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", - " 'just you and i (ooh, woah-ooh, woah-oh)',\n", - " 'hey, mama, 특별할 것 없는 밤',\n", - " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", - " 'just you and i (ooh, woah-ooh, woah-oh)',\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", - " '모두 잊고 여기 모여 봐',\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", - " '지금 바로 놀라게 해 봐 날',\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", - " '밤을 딛고 별에 올라 봐',\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", - " '지금 네게 뛰어드는 날 봐 (that’s right)',\n", - " 'ah-yeah, are you ready? (that’s right)',\n", - " 'everybody, put your hands up!',\n", - " 'now, one, two, three',\n", - " '일상을 모두 같이 뒤집어 (뒤집어 모두 뒤집어)',\n", - " 'everyday is a party day (it’s a party day, it’s a party day)',\n", - " '세상을 다 뒤집어 다 쓰러질 때까지 all night',\n", - " 'hey, mama, 지금 바로 이 순간',\n", - " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", - " 'just you and i (ooh, woah-ooh, woah-oh)',\n", - " 'hey, mama, 특별할 것 없는 밤',\n", - " 'let’s make a night (ooh, woah-ooh, woah-oh)',\n", - " 'just you and i (ooh, woah-ooh, woah-oh)',\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", - " '모두 잊고 여기 모여 봐',\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", - " \"지금 바로 놀라게 해 봐 날 (let's make a night, baby)\",\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh)',\n", - " '밤을 딛고 별에 올라 봐',\n", - " 'that’s right (ooh, whoo-ooh, ooh, ooh; 별에 올라 봐, oh-oh)',\n", - " '지금 네게 뛰어드는 날 봐 (that’s right)',\n", - " 'one, two, three, joosuc and epik high, yo',\n", - " \"one, two, three, we livin' street life\",\n", - " 'this is street life, i was born in the city',\n", - " \"this is street love, i'll be mourned by the city\",\n", - " \"this is street life, livin' in the seoul city\",\n", - " \"it's me the t, listen closely\",\n", - " '이 땅의 culture 문화를 수많은 방에 가둔 것 (a dark future)',\n", - " '나와 널 둘러싼 사방은 벽',\n", - " '깔린 것은 bar와 night club (where you love to go)',\n", - " '틀에 박힌 이 좁은 곳은 prison to you a soul (oh no)',\n", - " '날개를 펴보지도 못하고',\n", - " '자신의 soul 고립의 십자가로 못박고',\n", - " 'now get up, stand up, 붐비는 거리로',\n", - " '숨쉬는 도시 속에 수많은 people 사이로',\n", - " \"it's the crossroad, 신과 사람의 교차로\",\n", - " \"you've got to know, 지상낙원은 따로 없다고\",\n", - " 'this is u a barrio, car audio 볼륨을 더 위로',\n", - " 'everybody say oh!',\n", - " \"it's a streetparty, e-p-i-k, yo\",\n", - " 'everybody 거리로, capital j',\n", - " \"it's a streetparty, all day\",\n", - " \"it's a streetparty, e-p-i-k, yo\",\n", - " 'everybody 거리로, capital j',\n", - " \"it's a streetparty, all day, all night\",\n", - " 'okay, you, move you a body',\n", - " 'this street i told ya 바로 어머니',\n", - " '이 거리 말했지 바로 아버지, 그래',\n", - " '우연이 아닌 필연이다 싶었지',\n", - " '절대 돈으로 환산할 수 없는 값어치',\n", - " '지금으로부터 약 8년 전',\n", - " '나와 깊은 사랑에 빠지게 된 이 culture와의 만남',\n", - " '700만화소를 훨씬 뛰어넘는',\n", - " 'digital camera 보다 생생히 기억이 살아나',\n", - " 'oh ma sweety, 고향은 거리',\n", - " '태어나서 자라나서 clean or dirty',\n", - " 'whatever 상관없어',\n", - " '있는 그대로 솔직하게 살아가',\n", - " 'hip-hop 내 사랑아',\n", - " 'paris, london, tokyo, japan',\n", - " '소리없어 퍼져 번식해 세계를 제패',\n", - " 'ayo, epik high, keep it tite',\n", - " \"다 함께 거리로 나가 지금, let's get high\",\n", - " ...]},\n", - " 'r-b': {'meta': {'train_data': ['i’m looking for your ice',\n", - " 'i’m looking for your eyes',\n", - " 'i’m looking for your heart',\n", - " 'heart, heart, heart, heart',\n", - " 'i’m looking for your ice',\n", - " 'i’m looking for your eyes',\n", - " 'i’m looking for your heart',\n", - " 'heart, heart, heart, heart',\n", - " 'you and i, mm-mm',\n", - " 'i’m looking for your mind',\n", - " 'you and i, mm-mm',\n", - " 'i’m looking for your mind',\n", - " 'ah-ah-ah-ah',\n", - " 'ah-ah-ah-ah',\n", - " 'ah-ah-ah-ah',\n", - " 'ah-ah-ah-ah',\n", - " 'heart, heart, heart',\n", - " '난 너의 눈매를 살피고 싶어 매일',\n", - " '넌 눈이 제일 예쁜 것 같아 난 수영해 yeah-eh',\n", - " '남의 눈에 어떻다 한들',\n", - " '너의 친절함과 네 눈빛이',\n", - " '순수한 걸 알아 난 (yeah)',\n", - " '날 바라보는 네 눈빛이 너무 고와 (고와)',\n", - " '날 향해 밀려오는 너의 파란 파도와',\n", - " '난 소금이 될래',\n", - " '너에게 섞여 함께 녹아들게',\n", - " '함께 녹아들게',\n", - " '네가 날 분리하지 못하게',\n", - " '태양이 지고 달이 뜨면 활동해',\n", - " '이 느낌은 오로지 너만 느낄 수 있어 날 통해',\n", - " '기억해줘 우린 이랬다는 걸 yeah',\n", - " '멀리 있는 별도 우릴 빛내주는 걸',\n", - " '너와 나의 약속 (yeah)',\n", - " '너와 나의 약속',\n", - " 'yeah, yeah, yeah, yeah',\n", - " 'i’m looking for your ice',\n", - " 'i’m looking for your eyes',\n", - " 'i’m looking for your heart',\n", - " 'heart, heart, heart, heart',\n", - " 'i’m looking for your ice',\n", - " 'i’m looking for your eyes',\n", - " 'i’m looking for your heart',\n", - " 'heart, heart, heart, heart',\n", - " 'you and i, mm-mm',\n", - " 'i’m looking for your mind',\n", - " 'you and i, mm-mm',\n", - " 'i’m looking for your mind',\n", - " 'ah-ah-ah-ah',\n", - " 'ah-ah-ah-ah',\n", - " 'ah-ah-ah-ah',\n", - " 'ah-ah-ah-ah',\n", - " 'heart, heart, heart',\n", - " 'i need touch',\n", - " 'i need love',\n", - " 'you need touch',\n", - " 'you need love (yeah, yeah, yeah)',\n", - " 'we need love',\n", - " 'let’s make love',\n", - " '뜨거워 해가 없는데도',\n", - " '우린 무브 파도 물을 저어서 (yeah)',\n", - " '지구 반대편에 갈래 (brr)',\n", - " '지구 반대편에 갔을 땐',\n", - " 'starting on a blank page',\n", - " '무슨 말 할까',\n", - " '내가 아니라면',\n", - " '긴장 안 할까',\n", - " '머릿속엔 온통',\n", - " '생각이 너무 많다',\n", - " 'so just take a deep deep breath',\n", - " '숨을 쉬어',\n", - " \"i promise it'll be okay\",\n", - " '어디로 가게 될지 모르지만',\n", - " 'every little thing will be alright',\n", - " '걷고 있다는 게 중요하잖아',\n", - " 'every little thing',\n", - " 'will be just fine',\n", - " '하루가 너무 느려',\n", - " '내일도 이럴까',\n", - " '하나도 기대 안 돼',\n", - " '다를 것 없으니까',\n", - " '마음만 너무 급해',\n", - " \"i know you know what i'm saying\",\n", - " 'so just take a deep deep breath',\n", - " '숨을 쉬어',\n", - " \"i promise it'll be okay\",\n", - " '무릎 꿇고 포기하고 싶지 않아',\n", - " '잠을 자면서도 꿈을 놓지 않아',\n", - " '못할 것 같을 때',\n", - " \"prove to myself that i'll\",\n", - " 'make it through this',\n", - " 'at the end of the day',\n", - " '무릎 꿇고 포기하고 싶지 않아',\n", - " '잠을 자면서도 꿈을 놓지 않아',\n", - " '못할 것 같을 때',\n", - " 'remind myself that there’s',\n", - " 'always a reason',\n", - " 'for feeling this way',\n", - " 'every little thing',\n", - " 'will be alright',\n", - " 'every little thing',\n", - " 'every little thing',\n", - " 'every little thing',\n", - " 'will be alright',\n", - " 'everything will be alright',\n", - " '어디로 가게 될지 모르지만',\n", - " 'every little thing will be alright',\n", - " '걷고 있다는 게 중요하잖아',\n", - " 'evеry little thing',\n", - " 'will be just fine',\n", - " 'evеry little thing',\n", - " 'every little thing',\n", - " 'will be alright',\n", - " 'will be alright',\n", - " 'starting on a blank page',\n", - " '무슨 말 할까',\n", - " '멈출 수 없어 난',\n", - " '널 통해서',\n", - " '색다른 눈을 떠',\n", - " '여태 못 느껴봤던',\n", - " '새로운 감정',\n", - " '네 맘 안에서',\n", - " 'feel so good feel so good',\n", - " '자유로이 날아',\n", - " 'you got me i got you',\n", - " \"that's good\",\n", - " '예민해진 감각들이',\n", - " '온종일 나를 깨워 끝이 없이',\n", - " '상상 그 이상으로',\n", - " '꿈을 꾸는 것 같아',\n", - " 'open up your senses',\n", - " 'open up your senses',\n", - " 'open up your senses',\n", - " 'fly high fly high',\n", - " 'open up your senses',\n", - " 'fly high fly high',\n", - " 'open up your senses',\n", - " '달라져 난',\n", - " '다른 감각',\n", - " '널 더 원하게 돼',\n", - " '너만의 색으로 날',\n", - " '채워가 줘',\n", - " '네 맘 안에서',\n", - " 'feel so good feel so good',\n", - " '자유로이 날아',\n", - " 'you got me i got you',\n", - " \"that's good\",\n", - " '예민해진 감각들이',\n", - " '온종일 나를 깨워 끝이 없이',\n", - " '상상 그 이상으로',\n", - " '꿈을 꾸는 것 같아',\n", - " 'open up your senses',\n", - " \"i'll never let you go\",\n", - " 'you’ll always be in my heart',\n", - " \"i'll never let you go\",\n", - " 'you’ll always be in my heart',\n", - " 'open up your senses',\n", - " 'open up your senses',\n", - " 'fly high fly high',\n", - " 'open up your senses',\n", - " 'fly high fly high',\n", - " 'open up your senses',\n", - " \"girl won't you bring it back (yeah)\",\n", - " '가까이 와 what you waiting for?',\n", - " '내 맘을 알잖아 baby (yeah)',\n", - " '처음인 것처럼 feel this',\n", - " '아직 남아있는 너의 첫 느낌 너의 느낌',\n", - " 'i wanna love like the first time',\n", - " 'rewind it back 시간이 없어 난',\n", - " \"won't you bring that ass over\",\n", - " \"아침이 오기 전에 let's go\",\n", - " \"넌 위험해 취한 듯 even when i'm sober\",\n", - " \"내 몸이 너를 원해 let's go\",\n", - " '나도 잘 알아 너의 떨림을 느끼고 있어',\n", - " \"i ain't trippin cause this real love, this is real love\",\n", - " 'girl, i got it 매일 밤 너를 상상해 (baby)',\n", - " '완벽한 body, i know you gonna hurt somebody',\n", - " '처음이자 마지막 같은 느낌만 줄게',\n", - " \"that's why i need your number\",\n", - " \"top of the list (you're the top)\",\n", - " '그 많고 많은 여자들 사이에 제일 으뜸은 바로 너야',\n", - " \"i’m gon' work for that kiss, muah\",\n", - " '제일 좋아, 연락해, 널 데리러 와 asap',\n", - " '네 옆에 널 집적대는 놈들',\n", - " '위협해 but don’t be afraid, i got you',\n", - " '기억해 내 이름 내 모습',\n", - " '여긴 너무 정신없어 let’s relocate',\n", - " '천천히 해 느끼고 싶어 난',\n", - " \"i'mma make you come over\",\n", - " \"그 다음 알잖아 let's go\",\n", - " '너의 뒤에 있을게 cause when you bend over',\n", - " \"i'll hit it from the back so let's go\",\n", - " '이젠 잘 알아 너의 몸짓을 느끼고 있어',\n", - " \"i ain't trippin' cause this is real love, this is real love\",\n", - " 'girl, i got it 매일 밤 너를 상상해 (baby)',\n", - " '완벽한 body, i know you gonna hurt somebody',\n", - " '처음이자 마지막 같은 느낌만 줄게',\n", - " \"that's why i need your number\",\n", - " 'shawty ride with your baby',\n", - " '너의 하얀 mercedes 비교할 수가 없지',\n", - " '너의 그림 같은 body 너 내게 1 of 1',\n", - " \"we gon' have some fun tonight\",\n", - " '모두가 널 원하지만',\n", - " '그래도 내 옆에 있는 이유',\n", - " 'girl, i got it 매일 밤 너를 상상해 (baby)',\n", - " '완벽한 body, i know you gonna hurt somebody',\n", - " '처음이자 마지막 같은 느낌만 줄게',\n", - " \"that's why i need your number\",\n", - " 'all i want is your digits',\n", - " \"call you even when i'm busy\",\n", - " \"you and i, it's that ride or die\",\n", - " \"i'mma pull up in a minute\",\n", - " 'all i want is your digits',\n", - " \"call you even when i'm busy\",\n", - " \"you and i, it's that ride or die\",\n", - " \"i'mma pull up in a minute\",\n", - " '하루가 지나도 울리지 않는 phone',\n", - " '이젠 이런 기다림이 더 익숙해진걸',\n", - " '모래시계처럼 쌓이는 한숨관 반대로',\n", - " '너에 대한 내 기댄 서서히 줄어들어',\n", - " '믿었었어, 바빴다면서',\n", - " '어색한 핑계를 늘어놓는 널 봐도',\n", - " '몰랐었어, 내심 알았는지도',\n", - " '그저 네가 변했다는 사실을',\n", - " '믿기 싫었을 뿐',\n", - " 'tell me what to do',\n", - " \"i don't know what to do\",\n", - " 'your love is just a memory',\n", - " \"baby, it's your last time\",\n", - " 'to give me your best try',\n", - " 'and to give your heart to me',\n", - " '대체 왜 이래? 그만해, 이제',\n", - " '이별 노래의 가사처럼 변해 가는 너의 말',\n", - " 'it seems like over to us',\n", - " '잦은 다툼 속 의미 없는 상철 남기고',\n", - " '전불 되돌리기엔 너무 늦은 듯해',\n", - " '부질없어, 전불 쏟아도',\n", - " '결국엔 채워지지 않을 너처럼, oh oh',\n", - " '이젠 알겠어, 원래 알았는지도',\n", - " '이별은 예정된 결말처럼',\n", - " '우리 앞에 놓인걸 (yeah yeah)',\n", - " 'tell me what to do',\n", - " \"i don't know what to do\",\n", - " 'your love is just a memory',\n", - " '(your love is just a memory, yeah)',\n", - " \"baby, it's your last time\",\n", - " 'to give me your best try',\n", - " 'and to give your heart to me',\n", - " '(take it to the bridge)',\n", - " 'yeah, yeah, yeah (ay you know?)',\n", - " '얼마나 많은 생각이 오갔는지, baby',\n", - " 'yeah, yeah, yeah',\n", - " 'yeah, yeah, yeah',\n", - " '누군간 마지막을 말해야겠지, ooh',\n", - " 'tell me what to do',\n", - " \"i don't know what to do\",\n", - " 'your love is just a memory (ooh yeah, yeah, yeah, yeah)',\n", - " \"baby, it's your last time to\",\n", - " 'give me your best try (no more, ooh)',\n", - " 'and to give your heart to me (this love is over)',\n", - " 'tell me what to do',\n", - " \"i don't know what to do (i don't know what to say, no more, yeah)\",\n", - " 'your love is just a memory (yeah) (whatever you want)',\n", - " \"baby, it's your last time (whatever you say)\",\n", - " 'to give me your best try',\n", - " \"and to give your heart to me (we know it's over)\",\n", - " '넌 언제나 내게',\n", - " '새로운 걸 보여줘서',\n", - " '대신할 수 없어',\n", - " '다른 어떤 것도 yeah',\n", - " 'let me teach you baby',\n", - " '나의 모든 걸',\n", - " '너의 마음에 담아줄게',\n", - " '춤이 끝나지 않게',\n", - " '사랑이 멈추지 않게',\n", - " 'my baby yeah',\n", - " 'late at night, i think of you',\n", - " 'baby late at night, i think of you',\n", - " 'late at night, i think of you',\n", - " 'baby late at night, i think of you',\n", - " 'killing me softly (woo woo woo)',\n", - " 'when i feel so lonely (woo woo woo)',\n", - " 'let me love you baby (woo woo woo)',\n", - " 'you are so lovely (woo woo woo)',\n", - " '밤이 찾아오면 나는 널 생각해',\n", - " '아니 사실 하루 종일 난 널 생각해',\n", - " 'you know',\n", - " 'everything every night',\n", - " 'so sensitive',\n", - " 'i’ll give it to you one more time hey',\n", - " '있을게 너의 옆에',\n", - " '있어줘 넌 나의 muse',\n", - " 'oops 나의 꿈을 가득 채운',\n", - " '너의 모습, 포즈',\n", - " 'i’ll take a picture of you',\n", - " '우리는 춤을 출 거야',\n", - " '그리고 새로운 세상을 볼 거야',\n", - " '다른 애들은 시시해서 넌 아마 이어폰을 낄 거고',\n", - " '내 노래를 듣게 될 거야',\n", - " '밤새 내 노래 안에서 쉬어도 돼',\n", - " '너가 없었으면 이 노래도 없기에',\n", - " '너가 없으면 이 노래는 없지',\n", - " 'baby 그러니까 춤을 추자 밤새 yeah',\n", - " 'late at night, i think of you',\n", - " 'baby late at night, i think of you',\n", - " 'late at night, i think of you',\n", - " 'baby late at night, i think of you',\n", - " 'killing me softly (woo woo woo)',\n", - " 'when i feel so lonely (woo woo woo)',\n", - " 'let me love you baby (woo woo woo)',\n", - " 'you are so lovely (woo woo woo)',\n", - " '다시 너를 보내기 전에',\n", - " '전화기를 꺼내기 전에',\n", - " 'you know i want more',\n", - " 'so do you want it',\n", - " 'all we gotta do',\n", - " 'one thing rewind it',\n", - " '넌 완벽해 내겐 정말',\n", - " '전화해 it is alright',\n", - " 'baby 너에게 익숙해져만 가',\n", - " '매일이 오늘 같기를',\n", - " '바라고 바래 난 baby',\n", - " 'you like dream',\n", - " \"but it's real life\",\n", - " 'baby you make me alive',\n", - " 'now i know',\n", - " 'that it is real my baby',\n", - " '너 때문에 realize',\n", - " '네가 나의 의미였나',\n", - " '주변의 시선들은',\n", - " '다 밖으로 미뤄놔',\n", - " '줄게 더 많이',\n", - " '거기 있어 가만히',\n", - " \"bae you say it's alright\",\n", - " 'and praise me all night',\n", - " '품에 안아도 함께 눈 감아지길',\n", - " '난 네 옆에서 널 보았을 때',\n", - " '너의 모든 것을 다 가졌으니',\n", - " 'i give enough time',\n", - " 'i give enough time',\n", - " 'i know that we feelin’ alright',\n", - " 'all you wanted is all i wanted',\n", - " 'so i give enough time',\n", - " 'i give enough time',\n", - " \"i know that we feelin' alright\",\n", - " 'all i wanted is all you wanted',\n", - " '아직은 널 보내긴 일러',\n", - " 'it ain’t unfamiliar',\n", - " 'i call you my real love',\n", - " '너와 나 둘 만의 방식',\n", - " '내일을 더 기다리는지',\n", - " 'we got no worries',\n", - " '우리 둘이 전부 완벽해 이미',\n", - " \"that's how i feel like\",\n", - " 'get high 더 준비해놔',\n", - " '5:30 너를 위해 나',\n", - " 'bae we gonna be alright',\n", - " '닮아가는 너의 그 모습',\n", - " '마음에 들기만 해',\n", - " '모든 걸 감안해도 나의',\n", - " \"bae you say it's alright\",\n", - " 'and praise me all night',\n", - " '품에 안아도 함께 눈 감아지길',\n", - " '난 네 옆에서 널 보았을 때',\n", - " '너의 모든 것을 다 가졌으니',\n", - " 'i give enough time',\n", - " 'i give enough time',\n", - " \"i know that we feelin' alright\",\n", - " 'all you wanted is all i wanted',\n", - " 'so i give enough time',\n", - " 'i give enough time',\n", - " \"i know that we feelin' alright\",\n", - " 'all i wanted is all you wanted',\n", - " '다시 너를 보내기 전에',\n", - " '전화가 울리기 전에',\n", - " 'you know i want more',\n", - " 'so do you want it',\n", - " 'all we gotta do',\n", - " 'one thing rewind it',\n", - " 'you acting so positive right',\n", - " '주말이 왔으니 기분은 high',\n", - " 'yeah i’m feelin’ alright',\n", - " '네 모든 것들이 이제',\n", - " 'makes me alive',\n", - " 'it’s hard for me to realize',\n", - " '익숙하지 않은 긴 밤',\n", - " '너와 계속해 걸어도 돼',\n", - " 'i’ll be dreaming',\n", - " 'in my real life',\n", - " '너와 단 둘이서 남아',\n", - " '너도 같은 마음 일걸 알아',\n", - " 'we here to feel alright',\n", - " 'i know we gonna spend all night',\n", - " '다시 너를 보내기 전에',\n", - " '전화가 울리기 전에',\n", - " 'you know i want more',\n", - " 'so do you want it',\n", - " 'all we gotta do',\n", - " 'one thing rewind it',\n", - " 'you acting so positive right',\n", - " '주말이 왔으니 기분은 high',\n", - " 'yeah i’m feelin’ alright',\n", - " '네 모든 것들이 이제',\n", - " 'makes me alive',\n", - " 'it’s hard for me to realize',\n", - " '익숙하지 않은 긴 밤',\n", - " '너와 계속해 걸어도 돼',\n", - " 'i’ll be dreaming in my real life',\n", - " '너와 단 둘이서 남아',\n", - " '너도 같은 마음 일걸 알아',\n", - " 'we here to feel alright',\n", - " 'i know we gonna spend all night',\n", - " '널 닮은 새하얀 리듬 속삭이듯 내 귓가를',\n", - " '우리의 그 추억들이 하나 둘 되살아나',\n", - " '이대로 멈춰도 좋아 아무래도 난 좋아',\n", - " '빛바랜 옛 기억들이 스쳐 지나네',\n", - " 'you and me 우리 둘이',\n", - " '시원한 바람 속 멜로디',\n", - " 'here with me, stay with me',\n", - " '따뜻한 너의 작은 목소리',\n", - " 'oh how much i love you',\n", - " '우리 여기 함께 있어',\n", - " '내 손을 잡고 두 눈을 감아',\n", - " 'this song is for you',\n", - " 'i wanna give love to you',\n", - " 'everyday i think of you',\n", - " 'i wanna make you feel good',\n", - " 'everywhere i think about you',\n", - " 'i wanna give love to you',\n", - " 'everyday i think of you',\n", - " 'i wanna make you feel good',\n", - " 'everyday, everyday',\n", - " 'you and me 우리 둘이',\n", - " '시원한 바람 속 멜로디',\n", - " 'here with me, stay with me',\n", - " '따뜻한 너의 작은 목소리',\n", - " 'oh how much i love you',\n", - " '우리 여기 함께 있어',\n", - " '내 손을 잡고 두 눈을 감아',\n", - " 'this song is for you',\n", - " 'i wanna give love to you',\n", - " 'everyday i think of you',\n", - " 'i wanna make you feel good',\n", - " 'everywhere i think about you',\n", - " 'i wanna give love to you',\n", - " 'everyday i think of you',\n", - " 'i wanna make you feel good',\n", - " 'everyday, everyday',\n", - " 'i wanna give love to you',\n", - " 'give my love to you',\n", - " '가끔씩',\n", - " '들리지 않는지',\n", - " '되묻지 내게',\n", - " '한번씩',\n", - " '보이지는 않는지',\n", - " '되묻지 네게 되묻지',\n", - " '우린 좀 멀어져도 서로를 잊지마',\n", - " '가끈은 기억에세 꺼내고 살아',\n", - " 'we will live separate lives',\n", - " \"but don't say bye\",\n", - " \"don't say bye\",\n", - " '구겨진옷들 사이에 널',\n", - " '넣고서 나는',\n", - " '또뭘 챙겨야 하는지',\n", - " '우린는 어디 있는지',\n", - " '시간은 계속 나를 보채',\n", - " '우린 좀 멀어져도 서로를 잊지마',\n", - " '가끈은 기억에세 꺼내고 살아',\n", - " 'we will live separate lives',\n", - " \"but don't say bye\",\n", - " \"don't say bye\",\n", - " 'always always comes and goes',\n", - " 'always always comes and goes',\n", - " \"we don't get it\",\n", - " 'always always comes and goes',\n", - " 'always always comes and goes',\n", - " \"we don't get it\",\n", - " 'my flight leaves in 4hours',\n", - " \"and i'm calling you\",\n", - " 'your flight leaves in 4hours',\n", - " \"and you're calling me\",\n", - " '우린 좀 멀어져도 서로를 잊지마',\n", - " '가끈은 기억에세 꺼내고 살아',\n", - " 'we will live separate lives',\n", - " \"but don't say bye\",\n", - " \"don't say bye\",\n", - " 'always always comes and goes',\n", - " 'always always comes and goes',\n", - " \"we don't get it\",\n", - " 'always always comes and goes',\n", - " 'always always comes and goes',\n", - " \"we don't get it\",\n", - " '난 알고있어 아주 먼 곳에 네가 있단걸',\n", - " '파란 별이 방안의 날 비추는 밤. 작은 창가에 기대 앉아',\n", - " '짙은 구름이 바람결에 흔들릴때 그때만을 기다려요',\n", - " '물에 잠긴 내 동공에 보름달이 일식 할 때',\n", - " 'talking to the moon',\n", - " '두 눈을 뜬채 밤을 지새워',\n", - " 'talking to the moon',\n", - " '혹시 그대도 저 달을 보며 내게 말 할까봐',\n", - " '바보같이 난 기대해',\n", - " '닿을수 없는 그대에게 나의 부름이 전해지게',\n", - " '부디, 제발 my baby',\n", - " '언젠가 네가 꿈속에서 내 음성을 듣는 날이 오게되면',\n", - " '입술을 열어. 망설이지 말고 대답해줘. 너도 날 그린다고',\n", - " '짙은 구름이 바람결에 흔들릴때 그때만을 기다려요',\n", - " '차오르는 그리움에',\n", - " '물에 잠긴 내 동공에 보름달이 일식 할 때',\n", - " 'talking to the moon',\n", - " '두 눈을 뜬채 밤을 지새워',\n", - " 'talking to the moon',\n", - " '혹시 그대도 저 달을 보며 내게 말 할까봐',\n", - " '바보같이 난 기대해',\n", - " '닿을수 없는 그대에게 나의 부름이 전해지게',\n", - " '부디, 제발 my baby',\n", - " 'talking to the moon',\n", - " '두 눈을 뜬채 밤을 지새워',\n", - " 'talking to the moon',\n", - " '혹시 그대도 저 달을 보며 내게 말 할까봐',\n", - " '바보같이 난 기대해',\n", - " '닿을수 없는 그대에게 나의 부름이 전해지게',\n", - " '부디, 제발 my baby, my baby',\n", - " \"i know. you're somewhere far away\",\n", - " 'the night when the blue star lights me up in the room. lean on the window',\n", - " 'wait for the clouds to wobble in the wind',\n", - " 'when the full moon gets a eclipse in my submerged pupil',\n", - " 'talking to the moon',\n", - " 'stay up all night with my eyes open',\n", - " 'talking to the moon',\n", - " \"maybe you'll see the moon and talk to me\",\n", - " 'i expect like a fool',\n", - " 'try to call you but can not reach',\n", - " 'please, oh please, my baby',\n", - " 'someday when you listen to my voice in your dreams',\n", - " 'open your lips. dont hesitate to answer. u miss me too',\n", - " 'wait for the clouds to wobble in the wind',\n", - " 'heart filled of longing',\n", - " 'when the full moon gets a eclipse in my submerged pupil',\n", - " 'talking to the moon',\n", - " 'stay up all night with my eyes open',\n", - " 'talking to the moon',\n", - " \"maybe you'll see the moon and talk to me\",\n", - " 'i expect like a fool',\n", - " 'try to call you but can not reach',\n", - " 'please, oh please, my baby',\n", - " 'talking to the moon',\n", - " 'stay up all night with my eyes open',\n", - " 'talking to the moon',\n", - " \"maybe you'll see the moon and talk to me\",\n", - " 'i expect like a fool',\n", - " 'try to call you but can not reach',\n", - " 'please, oh please, my baby',\n", - " '이 밤은 까맣고 고요해',\n", - " '차가운 공기만 메우네',\n", - " '너가 비운 자리를',\n", - " '채워줄 누군가를 또 찾네',\n", - " '내 밤은 그렇듯 여전해',\n", - " '뭐가 와도 난 허전해',\n", - " 'the days keep goin on',\n", - " 'and imma keep it straight it',\n", - " 'like as it was',\n", - " '뭐 또 그렇지 yeh',\n", - " '내가 그렇지 yeh',\n", - " '별 의심 없이 딴 여지없이',\n", - " '너를 내 안에 뒀지',\n", - " '난 또 속았지 yeah',\n", - " '난 다 줬으니 yeah',\n", - " '남은 건 없지',\n", - " '난 망가졌으니',\n", - " 'nothing to lose',\n", - " 'and nothing to proof',\n", - " \"cause you've got everything\",\n", - " \"you've got everything\",\n", - " 'nothing to lose',\n", - " 'and nothing to proof',\n", - " \"cause you've got everything\",\n", - " \"you've got everything\",\n", - " '이 밤은 까맣고 고요해',\n", - " '차가운 공기만 메우네',\n", - " '네 체취가 그리워져',\n", - " '행여 하는 마음에 또',\n", - " '널 드리우네',\n", - " '내 밤은 그렇듯 여전해',\n", - " '뭐가 와도 난 허전해',\n", - " '날 벼랑 끝에 모나봐',\n", - " '너를 담은 게 내 죄인듯해',\n", - " '뭐 또 그렇지 yeh',\n", - " '내가 그렇지 yeh',\n", - " '별 의심 없이 딴 여지없이',\n", - " '너를 내 안에 뒀지',\n", - " '난 또 속았지 yeah',\n", - " '난 다 줬으니 yeah',\n", - " '남은 건 없지',\n", - " '난 망가졌으니',\n", - " 'nothing to lose',\n", - " 'and nothing to proof',\n", - " \"cause you've got everything\",\n", - " \"you've got everything\",\n", - " 'nothing to lose',\n", - " 'and nothing to proof',\n", - " \"cause you've got everything\",\n", - " \"you've got everything\",\n", - " \"you've got everything\",\n", - " \"you've got everything\",\n", - " \"you've got everything\",\n", - " \"you've got everything\",\n", - " '다 가져가고 남은 건 없어',\n", - " '난 망가졌어 더 잃을 건 없어',\n", - " 'i think i’m lost i’m lost i’m lost',\n", - " 'i think i’m lost i’m lost i’m lost',\n", - " 'nothing to lose',\n", - " 'and nothing to proof',\n", - " \"cause you've got everything\",\n", - " \"you've got everything\",\n", - " 'nothing to lose',\n", - " 'and nothing to proof',\n", - " \"cause you've got everything\",\n", - " \"you've got everything\",\n", - " 'nothing to lose',\n", - " 'and nothing to proof',\n", - " 'nothing to lose',\n", - " 'and nothing to proof',\n", - " 'you know we had to do a remix',\n", - " 'for this one',\n", - " \"it's official\",\n", - " 'this is',\n", - " 'this the motherfucking remix baby',\n", - " 'shawty take a ride you a bad bitch',\n", - " '뒤로 back it up 여기까지',\n", - " 'lamborghini door suicide',\n", - " \"빨간 'raris on the floor\",\n", - " 'make a bitch automatic',\n", - " '이미 너의 몸 automatic',\n", - " '너의 touch 나의 drip automatic',\n", - " '알아서 올라가',\n", - " '말 안해도 하잖아',\n", - " 'i make a bitch automatic',\n", - " 'baby, link up',\n", - " \"you know it's automatic\",\n", - " 'let me do you like a savage',\n", - " 'i be in a casket',\n", - " \"'cause you looks kill\",\n", - " 'so let me get a taste',\n", - " \"i'm sure you're bored with these other guys\",\n", - " \"it's no surprise\",\n", - " 'so put it on me',\n", - " 'just feel the tides all up on your body',\n", - " \"soaking wet, i'll leave you\",\n", - " '내 취향은 입맛부터',\n", - " '너까지 비슷한 맛',\n", - " 'i like it, lick it like',\n", - " '대리 아저씨는 우리 뒷좌석만 봐',\n", - " '자꾸 흘끔흘끔대 just ride',\n", - " '원한다고 말해 내 어깨 무릎 발',\n", - " 'oh, daddy, daddy wanna slap my ass',\n", - " '손 까딱 uh 가까이와 uh',\n", - " '내가 아 하면 넌 어',\n", - " 'like automatics',\n", - " \"딱딱해 you're so naughty\",\n", - " 'full course mеal, umm, umm, yummy',\n", - " '규칙적인 반응이 더 야해',\n", - " '우린 안 멈춰 기계처럼 서서 해',\n", - " '한 번 두 번 그 뒤론 안 셌어',\n", - " '밤새워 (skrr, skrr)',\n", - " 'handprint and good grips',\n", - " '우리가 탄 머스탱 엔진과열',\n", - " 'she moves like',\n", - " \"shе's on motorcycle\",\n", - " \"give her lil' pow pow\",\n", - " 'on her baby maker',\n", - " '떨어트려 너의 oil',\n", - " '좋아서 어쩔 줄',\n", - " 'one zero one',\n", - " \"she's being automatic\",\n", - " 'no way to stop',\n", - " \"bitch i'm magnetic\",\n", - " '내가 쌩 하면 쓩 하고 날아갔지',\n", - " '슈퍼보드보다 짧은 너의 사정거리',\n", - " '나를 짧게 봤다면 니 손해',\n", - " '놀아나게 되는거야 내 손에',\n", - " \"i'm pretty lil' ching but i'm loco\",\n", - " 'and you start vibrating',\n", - " 'like automatic',\n", - " 'you lucky lucky to see',\n", - " 'an asian girl this tatted',\n", - " 'this girl has her personal magic',\n", - " \"when you're home\",\n", - " \"boys see me they fuckin' panic\",\n", - " '내 목소리 들음 지갑 열어 automatic',\n", - " 'quick bitch please',\n", - " \"i'm the one to fuckin' deal\",\n", - " \"they say i'm going to the top, top already\",\n", - " 'jamie 변했다 변했다',\n", - " 'the only time you get laid',\n", - " \"when there's packs of money\",\n", - " '변한건 너의 시선이',\n", - " '넌 또 억울함을 삼켜',\n", - " '불효자는 울어',\n", - " 'stop whining bish, stop',\n", - " 'stop',\n", - " 'come and take a ride with a bad bitch',\n", - " \"i'ma work it up 여기까지\",\n", - " 'drop the top down 뭐든지',\n", - " '어디든 bitches know who i be',\n", - " \"i'm a savage\",\n", - " '너의 모든 것 automatic',\n", - " 'that coupe that juice automatic',\n", - " '알아서 올라가',\n", - " '말 안해도 알잖아',\n", - " 'i make a, automatic',\n", - " \"don't you know?\",\n", - " 'i can do this thing all the time',\n", - " 'here i come',\n", - " '05 년부터 지금까지 i still put it down',\n", - " '혹시 모른다면 better do your homework',\n", - " \"mess with a og like me it's a real thing\",\n", - " '내가 데려다줄게',\n", - " \"'cause i can take you way up high\",\n", - " 'v twins and automatics',\n", - " '883 배기음 goes wild',\n", - " 'so you wanna be',\n", - " 'playa, playa',\n", - " '난 써내 오직 좋은 톤의 tracks',\n", - " '야자수 아래 시동걸린 hd',\n", - " '소리 아래 two wheels for life',\n", - " 'ride with me 차별 없이',\n", - " '나란히 지평 너머',\n", - " '감아 throttle wild',\n", - " 'on behalf of the misfits',\n", - " '변하고 있어',\n", - " 'this verse be the proof',\n", - " '나의 앞은 뚫려 있어',\n", - " 'you see my',\n", - " 'v twin on automatic',\n", - " \"dreaming falling in fantasy till i'm so high\",\n", - " '입술이 자연스레 뱉는 나의 멜로디',\n", - " \"dreaming falling in fantasy until i'm so high\",\n", - " '널 지배하지 my vibe',\n", - " 'what you waiting for oh, oh',\n", - " '그래 나는 자유롭지 super fly always',\n", - " 'positive, positive',\n", - " 'back up on ma real shit (yeah)',\n", - " 'what you waiting for oh, oh',\n", - " \"대기는 필요없지 i'm first in line\",\n", - " 'ready, set, automatic check',\n", - " \"now i'm taking off\",\n", - " 'let me take that ass home 준비되면 말해',\n", - " '시동은 걸려있어 벌써 밖에 valet',\n", - " '굳이 말하지 않아도',\n", - " '이미 내 이름 들어봤잖아 (babylon)',\n", - " 'oh 눈빛만 봐도 알어',\n", - " '넌 기계처럼 you a auto',\n", - " '더 빠르게 빠르게 make it clap',\n", - " 'girl you look good real good',\n", - " \"won't you back that\",\n", - " 'a-ut-oma-tic',\n", - " '달아올라 all night',\n", - " \"위험해 'cause she automatic\",\n", - " 'hold up',\n", - " '눈이 마주친 그 다음엔',\n", - " 'hold up',\n", - " '스치듯 손이 닿은 이 순간',\n", - " '너와 나는 이미 서로에게',\n", - " '녹아 하나가 된 듯한 기분',\n", - " '비 비 빙빙 취해 너에게 가고 싶어',\n", - " '닿기만 해 닿기만 해',\n", - " '어찌할 바를 모르게',\n", - " '당혹스럽게 널 압도하려고',\n", - " '애매하게 날 깨우면',\n", - " '아주 크게 소리내 널 물어버리고',\n", - " '떠날 지 몰라',\n", - " '다시 날 잊지 못하게',\n", - " '떠날 지 몰라',\n", - " '내게 어디서 왔냐 물어보면 난 모르지',\n", - " '나도 내가 어디서 튀어나온 건 지 모르니까',\n", - " '그게 뭐가 중요해',\n", - " '지금 내가 어딨는 지가 중요해',\n", - " '나랑 같이 내가 보고 있는 걸',\n", - " '같이 하고 싶으면',\n", - " '내 옆에 딱 달라붙어',\n", - " 'uh 달라붙어 uh 밀착해',\n", - " '넌 나의 친구도 좋고',\n", - " '더 뜨거워도 좋아',\n", - " \"told you i'm going down\",\n", - " 'no need to mess around',\n", - " '그래 baby 날 믿어',\n", - " '널 위해서 다 밀어',\n", - " \"i'll be your private eye\",\n", - " 'every need be satisfied',\n", - " 'wap, wap, licky, licky right there',\n", - " 'wap, wap, licky, licky right there',\n", - " \"don't be too shy\",\n", - " 'beautiful ones we know',\n", - " 'what what you do to me',\n", - " 'make me, ooh, yeah, wanna breathe',\n", - " 'wilding out for you',\n", - " 'what?',\n", - " \"let's all enjoy the ride\",\n", - " \"it's so automatic\",\n", - " \"can't tell me nothing\",\n", - " '혼자하는 사랑도 좋지만',\n", - " '누가 뭐래도 난 너랑 나눌 때가 제일 좋아',\n", - " \"i'm back on the microphone\",\n", - " 'with r&b 알고 있지',\n", - " '네가 뭘 원하는지',\n", - " 'i make it look easy 너무 쉽게',\n", - " '마치 do, re, mi, uh, do, re, mi',\n", - " 'ay chancellor you got my back homie',\n", - " '시동을 걸어 vroom 갈 시간이 됐어',\n", - " '흐름 타지 못하는 저 병신들은 제껴',\n", - " 'so smooth 이 트랙 위에선 아무도',\n", - " \"못 따라오지 let's work\",\n", - " \"이제서야 몸 풀었으니 let's work\",\n", - " 'drifting 해 drifting that s course',\n", - " '어디까지 갈지 몰라도 끝까지',\n", - " \"let's get retarded\",\n", - " '알고 있지 네가 뭘 원하는지',\n", - " '알고 있어 네가 뭘 더 원하는지',\n", - " 'move bitch get out the way',\n", - " 'get out the way 비켜',\n", - " '굳이 말 안 해도 yeah you already know',\n", - " 'this shit is automatic',\n", - " 'yeah when i skrrt, skrrt 로데오',\n", - " 'they be like automatic',\n", - " '니 옆에 그녈 내 옆에 옮기는 magic',\n", - " 'i make her drip, drip, drip 나를 조심해',\n", - " '눈 깜짝할 새 우린 호텔 로비에',\n", - " 'i put a key in my automatic',\n", - " '배기음 소리는 like a bad bitch',\n", - " 'giddy up, giddy up 너의 엔진',\n", - " '멈추지 마 보고 싶어 너의 flexing',\n", - " '속도를 올려 끝이 보이는 race',\n", - " 'she swerve on me 당연하다는 듯이',\n", - " '별이 비추는 천장 아래서 dance',\n", - " '검은 ghost make a bitch automatic',\n", - " \"oceanfromtheblue, yeah that's me\",\n", - " '시간이 없으니 옷은 안 벗고',\n", - " '작아도 커 보이는 나의 존재감',\n", - " '떠나면 느껴질 거야 나의 부재가',\n", - " 'oh 가이드는 필요 없어',\n", - " 'yeah 이건 프리스타일',\n", - " '난 생각 없이 뱉는 verse 에',\n", - " '벌써 다가오는 다음 step 준비할 뿐',\n", - " \"i'm so automatic when you do\",\n", - " 'and i hope you do too',\n", - " \"for my baby i'll do anything\",\n", - " 'and i hope you do too',\n", - " \"i'm so wavy not be lazy\",\n", - " 'for my baby trust me',\n", - " '요즘 그녈 위해 일하는 중',\n", - " '내 다음 수 안 보이지',\n", - " '절대 보일일 없지',\n", - " \"'cause i'm automatic\",\n", - " \"what's the next for me\",\n", - " '말이 좀 많은 것 같애',\n", - " 'want you to shut up for me',\n", - " 'fuck that fantasy',\n", - " '하고 싶은 걸 다 do it on me',\n", - " \"if you ain't about that bad bitch\",\n", - " \"you wouldn't be looking for me\",\n", - " '엑셀을 밟어 넌',\n", - " '멈추는 법이 없지',\n", - " '이미 넌 날 알듯이',\n", - " 'i got you automatic',\n", - " '너와 난 춤추듯이',\n", - " \"we goin' acrobatic\",\n", - " 'i love the power',\n", - " \"when i'm on top 꿰뚫어 보지\",\n", - " '언제나 니 마음 안아줄게 사랑으로',\n", - " \"매일 i'm full of love\",\n", - " '멀리봐 여긴 game',\n", - " '모두 원할 걸 다',\n", - " \"yes that's right babe\",\n", - " 'you wanna come inside?',\n", - " '지혜로운 사람되자',\n", - " \"진지하게 안해 it's automatic\",\n", - " '그냥 재밌게 해',\n", - " 'baby, just take a bite',\n", - " 'we talk more than we feel though',\n", - " \"but damn sixth sense ain't a thing to trust\",\n", - " \"girl i'll give time for you to relax\",\n", - " \"ain't no bitch can surpass you a lady\",\n", - " '꺼져가는 빛을 위해 thunder (volt)',\n", - " \"뒷말은 다 들려 don't you shut up\",\n", - " 'we need love and the peace and',\n", - " 'whatever',\n", - " '다 틀린게 없어 잠깐 동안만',\n", - " \"baby, won't you lose that smile\",\n", - " \"it ain't for the gram\",\n", - " \"it's just a game\",\n", - " \"why don't you play?\",\n", - " 'yeah',\n", - " \"5 o'clock in the morning\",\n", - " '시간이 지나면 평온한 밤이 오길',\n", - " '모두가 자는 중임',\n", - " '아무도 몰래 떠나 이 자리에서 멀리',\n", - " 'well, well, bump like odell',\n", - " '모두가 잠든 사이 호텔 로비에',\n", - " '다 쥐죽은듯이 조용해',\n", - " '이 밤이 가기 전에 널 초대해',\n", - " \"timeless tales you're too far away\",\n", - " 'from me it is rapunzel',\n", - " '난 잡힐 듯 잡히지 않겠지',\n", - " '쉬운 듯이 연기했었네',\n", - " \"12 o'clock, it's 12 o'clock\",\n", - " \"there's no way to find no way to find us\",\n", - " '내게 올라타 나를 따라오면 돼',\n", - " '빨리 아무도 모르게',\n", - " \"i've been giving rides to the bad bitches\",\n", - " '머리카락 발바닥 모두 fine creatures',\n", - " '혓바닥 쳐다봐 너네 lane switchers',\n", - " '촉촉했지만 이젠 dry swishers',\n", - " '보다 못해 빨리 타',\n", - " '내 생각에 너는 목이 타',\n", - " '뜨거워지고 땀이나',\n", - " 'takes some beads and take it off',\n", - " \"like it's mardi gras\",\n", - " '자전거 automatic',\n", - " '달리면 기분 좋아 automatic',\n", - " '네가 날 automatic',\n", - " 'ummm',\n", - " \"baby i'm a tesla autopilot\",\n", - " '소리없지만 innovative 해',\n", - " '각자의 삶을 풀어 우린',\n", - " '음악으로 너네들 귀를 놀리지',\n", - " '집밖으로 나가기는 아직 무리',\n", - " '이어폰을 꽂은 채',\n", - " '눈을 감아줘 please',\n", - " '이런 음악이 너네를 riding 하는',\n", - " '기분을 들게 만든다면 반 정도 succeed',\n", - " '이건 마치 새로 뽑은 nike 옷을 입고',\n", - " '한강 질주하는 기분 um i like this',\n", - " '사람들은 어디에서',\n", - " '뭘 하며 낙을 볼지 궁금해',\n", - " '너의 마음을 달래기 위해',\n", - " '이 멜로디가 약이 되었으면 해',\n", - " '이 멜로디가 너를 깨웠으면 해',\n", - " '우리 음악이 평화를 만들었으면 해',\n", - " '우린 많은게 바뀌게 될 거라고 man',\n", - " 'negative vibe, put it aside',\n", - " 'shout out to the ones',\n", - " 'who have rolled the dice',\n", - " 'we be balling never be falling',\n", - " \"i'ma go chase only good end\",\n", - " 'got your back we got mutual trust in',\n", - " '더 깊은 바다를 헤엄치길 원해',\n", - " '깊은 바다를 헤엄치길 원해',\n", - " \"think it's funny\",\n", - " 'how you always be complaining',\n", - " 'all you do is wait for the moment',\n", - " 'gotta hit your own scheme like',\n", - " 'boom boom pow',\n", - " \"if you run away it's a goodbye ciao\",\n", - " 'ayo bring that shit from the top',\n", - " 'all the way from the top',\n", - " '위험해 너의 몸 내 위에',\n", - " '빠르게 질주해 you crash it',\n", - " \"위험해 위험해 i don't mind\",\n", - " \"long as she got a bag i'll smash it\",\n", - " \"어디든 i'll smash it\",\n", - " \"여기 차 안에서 i'll smash it\",\n", - " 'brake for the pussy i park it',\n", - " 'then beat it up mike tyson',\n", - " \"shawty we ain't got no time\",\n", - " '시간이 없어 지금 당장 올라타',\n", - " \"i'm sitting down on the bed 우린 계속 가\",\n", - " '밤새 24/7 stay up all night',\n", - " '아직 갈 길이 너무 멀어',\n", - " \"baby, i'ma pop your body\",\n", - " '조명 아래 너의 허리 라인',\n", - " '나를 미치게 해 너의 거친 숨소리까지',\n", - " \"i'm feeling your vibe\",\n", - " 'you feeling my vibe',\n", - " 'oh i make a bitch automatic',\n", - " 'baby, want you to',\n", - " 'come up with that for me',\n", - " '나 모른 척 할게 속삭여줘 몰래',\n", - " 'you can drive up all night',\n", - " '너 다다를 때까지',\n", - " '널 데려가 어디든 다',\n", - " '자연스럽게 automatic',\n", - " 'but 따라오는 건 manual shit',\n", - " '난 사실 빠른 건 별로',\n", - " 'auto 보단 stick analog',\n", - " '조금씩 흔들리는 네 몸짓',\n", - " '창문은 열어둬 더워질 걸 automatic',\n", - " 'hey baby, in da coupe',\n", - " 'keep push it 더 쭉',\n", - " \"don't stop it baby\",\n", - " '발이 끝까지 닿을 때까지',\n", - " 'hey, give me that loop',\n", - " '위험해 보여도 난 with my whole crew',\n", - " \"yeah, it's automatic\",\n", - " '속도는 계속 dramatic',\n", - " '준비해 ready and get set go',\n", - " 'uno, dos and tres and four',\n", - " 'let me know what you waiting for',\n", - " \"don't mess it up, ready and get set go\",\n", - " '뒤에서 우릴 따라오지 못하게',\n", - " \"yeah, we gotta don't stop\",\n", - " '알아 나도 지금 우린 위험해',\n", - " ...]},\n", - " 'data': ['korean original',\n", - " '뻔한 노래 이제 끌래?',\n", - " '내가 느끼게 해 줄 새로운 설렘',\n", - " '눈을 감고 파도가 넘치는 바다로 가는, uh, 거야',\n", - " '넌 붉은 비키니를 입고 날 불러 (아아, 아아, 아-아)',\n", - " '난 내 두 눈을 어디에 놓을지 정확히 알고 있어 (빠빠)',\n", - " '그건 바로 (빠) 너의 (너의, 너의) 으아으으',\n", - " '네 입술과 (빠빠) 매끈한 엉덩이를 봐',\n", - " '아무것도 중요하지 않아, 지금 이 순간',\n", - " '아름다운 그대 (그대)',\n", - " '하나뿐인 그대 (그대, 그대, 밤은)',\n", - " '나 오늘 밤은 그대 품에 안기고 싶어',\n", - " 'ma lady, lady, lady',\n", - " 'ha, 네 입술은 빨개',\n", - " '깨물고 싶어져',\n", - " '달콤한 딸기 같애',\n", - " '이 순간 되고 싶어',\n", - " '네가 들고 있는 파란 레모네이드의 빨대',\n", - " 'ha, 해변에 누워서 잘 때',\n", - " '태닝 오일을 등에다 발라 달래',\n", - " '긴 생머리, 잘록한 허리를 부드럽게 스치는 내 손의 핑거 발레',\n", - " '눈동자는 수영장, 크고 깊고 투명해',\n", - " '난 지금 그 속에 푹 빠져서 계속 허우적대',\n", - " '네 미소는 내 기분 띄우는 부력',\n", - " '내 각막에 보물 지도를 그려',\n", - " '네 맘이 나침판, 어디로 갈까?',\n", - " '난 컴퍼스, 네 물음에는 원만 그려',\n", - " '네 입술과 (빠빠) 매끈한 엉덩이를 봐',\n", - " '아무것도 중요하지 않아, 지금 이 순간',\n", - " '아름다운 그대 (그대)',\n", - " '하나뿐인 그대 (그대, 그대, 밤은)',\n", - " '나 오늘 밤은 그대 품에 안기고 싶어',\n", - " 'ma lady, lady, lady',\n", - " '더운 여름도, woo yeah',\n", - " '추운 겨울도, woo yeah',\n", - " '우리 사이를 멈출 수가 없는걸',\n", - " \"you're the only one\",\n", - " '아름다운 그대 (그대)',\n", - " '하나뿐인 그대 (그대, 그대, 밤은) (oh, 그대, uh)',\n", - " '나 오늘 밤은 그대 품에 안기고 싶어 (그대, 그대, yeah yeah yeah)',\n", - " 'ma lady, lady, lady (uh)',\n", - " 'my lady, my lady, i want you, you, you (아무 말도 다 필요 없어)',\n", - " \"my lady, my lady, you're the only one, yeah (나 오늘을 기념할 키스나 할래)\",\n", - " 'english translation',\n", - " 'turn off the cliché music now',\n", - " 'i’ll make you feel a new kind of excitement',\n", - " 'close your eyes and we’ll go to the ocean with crashing waves',\n", - " 'you wear a red bikini and call out to me',\n", - " 'i know exactly where to put my eyes',\n", - " 'and that’s on your woo yeah',\n", - " 'i look at your lips and your sexy butt',\n", - " 'nothing is more important than this moment',\n", - " 'beautiful you',\n", - " 'only you',\n", - " 'i want to be in your arms tonight',\n", - " 'ma lady lady lady',\n", - " 'your lips are red',\n", - " 'i want to bite them, like sweet strawberries',\n", - " 'i want to be that blue straw in your lemonade right now',\n", - " 'when you’re laying on the beach',\n", - " 'you ask me to rub tanning oil on your back',\n", - " 'my fingers do a ballet as they softly touch your long straight hair and thin waist',\n", - " 'your eyes are as big and deep and clear as the swimming pool',\n", - " 'i’ve fallen deeply into them, splashing around',\n", - " 'your smile is the lifting power that raises my mood',\n", - " 'draw a treasure map on my eyes',\n", - " 'where will your heart’s compass point to?',\n", - " 'i’m a compass, only drawing a circle to your questions',\n", - " 'i look at your lips and your sexy butt',\n", - " 'nothing is more important than this moment',\n", - " 'beautiful you',\n", - " 'only you',\n", - " 'i want to be in your arms tonight',\n", - " 'ma lady lady lady',\n", - " 'in the hot summer woo yeah',\n", - " 'in the cold winter woo yeah',\n", - " 'nothing can stop us',\n", - " 'you’re the only one',\n", - " 'beautiful you',\n", - " 'only you',\n", - " 'i want to be in your arms tonight',\n", - " 'ma lady lady lady',\n", - " 'my lady my lady i want you you you',\n", - " 'my lady my lady',\n", - " 'you’re the only one yeah',\n", - " '(english translation below)',\n", - " 'hangul',\n", - " '어서 내게 달려와 이 긴 밤이 지나가기 전에',\n", - " 'us make warm on a cold 외로움이 혼내기 전에',\n", - " '어릴 때 안고 자던 그 인형처럼 내 품 품에 안겨줘',\n", - " '꼭 껴안고 자던 그 포근한 감촉 그 향기',\n", - " '너는 내게 원초적으로 내 사람 같아',\n", - " '이유는 몰라도 혈류에 네가',\n", - " '타고 흐르듯 내 몸속을 여행하듯',\n", - " '내 전부를 아는 것 같이 따뜻해서',\n", - " '기억 밑 서랍 간직해 두었지',\n", - " '어서 내게 달려와 이 긴 밤이 지나가기 전에',\n", - " 'us make warm on a cold 외로움이 혼내기 전에',\n", - " '목 놓아 길을 찾던 어린애처럼 내 품 품에 안겨줘',\n", - " '어릴 때 안고 자던 그 인형처럼 내 품 품에 안겨줘',\n", - " '내 품 품에 안겨줘 안겨줘',\n", - " '그래 네 품속이 네 숨 어떻게 그 짧은',\n", - " '두 팔의 둘레로 온 우주를 감싸 안아줄 수 있고',\n", - " '너의 품에만 안기면 원래 내가 있던 곳 같아',\n", - " '오래전 그 오래전',\n", - " '너에게 정해졌던 나 미칠 듯 영원하게 사랑해 줄 거라고',\n", - " '기억 밑 서랍 따뜻함 꺼내줄 그 품이 필요해',\n", - " '어서 내게 달려와 내 품속이',\n", - " '네 숨 내 품속이',\n", - " 'english translation',\n", - " 'hurry and run to me',\n", - " 'before this long night is over',\n", - " 'us make warm on a cold',\n", - " 'before loneliness scolds us',\n", - " 'like the doll you slept with when you were young',\n", - " 'come into my arms',\n", - " 'tightly wrapped around each other',\n", - " 'that cozy touch, that scent',\n", - " 'feels like you were always mine',\n", - " 'i don’t know why',\n", - " 'but as if you’re riding in my blood',\n", - " 'as if you’re traveling through my body',\n", - " 'it’s so warm as if you know everything about me',\n", - " 'so i kept you in the drawer underneath my memories',\n", - " 'hurry and run to me',\n", - " 'before this long night is over',\n", - " 'us make warm on a cold',\n", - " 'before loneliness scolds us',\n", - " 'like a lost child shouting for the way',\n", - " 'come into my arms',\n", - " 'like the doll you slept with when you were young',\n", - " 'come into my arms',\n", - " 'come into my arms',\n", - " 'come into my arms',\n", - " 'yeah your embrace',\n", - " 'your breath',\n", - " 'how can those short arms',\n", - " 'wrap around the entire universe?',\n", - " 'every time i’m in your arms',\n", - " 'feels like i was always supposed to be there',\n", - " 'long ago, that time long ago',\n", - " 'i was already decided for you',\n", - " 'that i would crazily, forever love you',\n", - " 'i need that embrace',\n", - " 'to take out that warmth from the drawer underneath my memories',\n", - " 'hurry and run to me',\n", - " 'my embrace',\n", - " 'your breath',\n", - " 'my embrace',\n", - " '내려오는 붉은 빛 사이로',\n", - " '느껴지는',\n", - " '그대 눈빛 ah-ah',\n", - " '내 흥얼거림에 한없이 빠져서',\n", - " '보내오는',\n", - " '달콤한 눈빛',\n", - " '열린 문틈으로 살며시 들어와 앉고선',\n", - " '그렇게 매일 바라만 보나요',\n", - " '두 눈을 마주치면',\n", - " '부르던 노래를 멈추고',\n", - " '다가가서 속삭이고 싶어져 oh, nah',\n", - " 'i feel i love you',\n", - " 'oh, i love you',\n", - " 'oh, i like you',\n", - " 'do i know you? oh, i',\n", - " 'i think i love you (love you)',\n", - " 'oh, i love you (love you)',\n", - " 'oh, i like you (like you)',\n", - " \"maybe you'll feel it too\",\n", - " '아주 작은 움직임조차',\n", - " '반응하게 돼 버렸어 난',\n", - " 'baby, you know it (know it)',\n", - " '알아 baby, you know it',\n", - " '어쩜 우린',\n", - " '비슷할지 모르죠',\n", - " '같은 생각을 하며',\n", - " '뭔갈 바라고 있는 것만 같아 ah-ah-ah-ah',\n", - " '열린 문틈으로 살며시 들어와 앉고선',\n", - " '그렇게 매일 바라만 보나요',\n", - " '두 눈을 마주치면',\n", - " '부르던 노래를 멈추고',\n", - " '다가가서 속삭이고 싶어져 oh, nah',\n", - " 'i feel i love you (you-ooh-ooh-ooh)',\n", - " 'oh, i love you (ooh, i love you)',\n", - " 'oh, i like you (ooh-ooh)',\n", - " 'do i know you? oh, i',\n", - " 'i think i love you (love you)',\n", - " 'oh, i love you (love you)',\n", - " 'oh, i like you (like you)',\n", - " \"maybe you'll feel it\",\n", - " '혹시 지금 그대',\n", - " '내게 다가올 거라면',\n", - " '망설이지 말고 와 줘',\n", - " '어색한 인사는',\n", - " '우리 하지 않기로 해요',\n", - " '오래된 연인처럼',\n", - " 'i feel i love you (hey-eh-eh-eh-eh)',\n", - " 'oh, i love you (eh-eh-eh-eh-eh)',\n", - " 'oh, i like you (do-roo-do-do-do)',\n", - " 'do i know you? oh, i',\n", - " 'i think i love you (love you)',\n", - " 'oh, i love you (love you)',\n", - " 'oh, i like you (like you)',\n", - " \"maybe you'll feel it too\",\n", - " '(i feel i love you)',\n", - " 'woo-ooh-ooh-ooh',\n", - " 'woo-ooh-ooh-ooh',\n", - " 'woo-ooh-ooh-ooh',\n", - " 'woo-ooh-ooh-ooh, whoa-oh',\n", - " '(i feel i love you)',\n", - " 'woo-ooh-ooh-ooh',\n", - " 'woo-ooh-ooh-ooh',\n", - " 'woo-ooh-ooh-ooh, woo-ooh-ooh-ooh',\n", - " 'ooh-ooh-ooh-ooh-ooh-ooh-ooh',\n", - " '예전 그날의 나를 보면',\n", - " '\"넌 잘하고 있어\" 그렇게 말을 해주고 싶어',\n", - " '늘 속상한 날들 불안한 네 하루',\n", - " '다 눈이 부시게 바뀔 거야',\n", - " '꼭 지금 내 모습처럼',\n", - " '어느 곳을 가던지 매번 헤매던 길',\n", - " '어딜 가도 똑같이 또 반복되던 얘기',\n", - " '너무 늦지 않게 너도 다 알게 될 테니',\n", - " \"you'll be shining, it's all timing\",\n", - " 'all your dreams come true',\n", - " 'make yourself brand new',\n", - " '널 믿어 dreams come true',\n", - " 'life is beautiful',\n", - " '귀를 기울여 네 안의 소릴 들어',\n", - " 'all your dreams come true',\n", - " 'life is beautiful',\n", - " 'it feels like love, la-la-la-la-love',\n", - " '알게 될 거야',\n", - " 'it feels like love, la-la-la-la-love',\n", - " '난 또 다른 너야',\n", - " 'yeah, yeah',\n", - " 'competition with myself, nobody else',\n", - " 'what a feeling, wish you well',\n", - " 'before i look in mirror in the morning, see a lion behind my iris',\n", - " '포기하지 말고 너는 너의 뜻대로 가길',\n", - " 'ooh, 나는 누군지 깊은 고민, ah-ah',\n", - " '믿어야 할 하난 나 또 너 우리',\n", - " '밤이 깊을수록 더 별은 빛나듯이',\n", - " '때론 보이지 않아도 느낄 수가 있지',\n", - " '분명 이 길 끝엔 찾던 답이 있을 테니',\n", - " \"you'll be shining, it's all timing\",\n", - " 'all your dreams come true (ooh, ooh)',\n", - " 'make yourself brand new',\n", - " '널 믿어 dreams come true (dreams come true)',\n", - " 'life is beautiful',\n", - " '귀를 기울여 네 안의 소릴 들어',\n", - " 'all your dreams come true (come true)',\n", - " 'life is beautiful',\n", - " 'it feels like love, la-la-la-la-love (it feels like love)',\n", - " '알게 될 거야',\n", - " 'it feels like love, la-la-la-la-love (it feels like love, yeah, yeah)',\n", - " '난 또 다른 너야',\n", - " '숨이 차올 때면 잠깐 앉아서 쉬어도 돼 (쉬어도 돼)',\n", - " '급할 건 없어',\n", - " '지금처럼 계속 포기하지 않으면',\n", - " \"finally, i'm happy, yeah\",\n", - " 'ya, 쳐진 입꼬리를 upside down',\n", - " \"i'mma smile for a while, who gon' stop me now? ayy\",\n", - " '맘의 목소리를 따르는 건',\n", - " '작은 걸음이지만 큰 변화야, uhm',\n", - " '지레 겁먹지 말기',\n", - " '모두 불완전해 네 탓하지 말기',\n", - " '행복한 상상을 매일 하기 (my everyday)',\n", - " '제일 중요한 건 네 자신을 믿기',\n", - " 'all my dreams come true (come true)',\n", - " \"i'm feeling brand new\",\n", - " \"'cause all my dreams come true (your dream too)\",\n", - " 'life is beautiful (hey)',\n", - " \"귀를 기울여 네 안의 소릴 들어 (that's for you)\",\n", - " 'all your dreams come true (come true)',\n", - " 'life is beautiful',\n", - " 'it feels like love, la-la-la-la-love (it feels like)',\n", - " '알게 될 거야 (ayy, ayy)',\n", - " 'it feels like love, la-la-la-la-love (feels like love)',\n", - " '난 또 다른 너야',\n", - " 'it feels like love, la-la-la-la-love',\n", - " '(ooh, feels like, feels like, yeah)',\n", - " '아름다운 너',\n", - " 'it feels like love, la-la-la-la-love (yeah)',\n", - " '아름다운 너야 (ooh)',\n", - " 'she’s working over time',\n", - " 'she working',\n", - " 'working over time she working',\n", - " '시험에 들고 있어',\n", - " '너의 아름다움 속에',\n", - " 'hold up hold up 비 내려',\n", - " 'money shower',\n", - " 'pour up pour up 느리게',\n", - " 'she grinding',\n", - " '매일 밤 매일 밤 every night',\n", - " 'she kill me like it’s murda',\n", - " 'murda murda murda murda',\n", - " 'she dancing like its murda',\n", - " 'murda murda murda murda',\n", - " 'she give love to the strangers',\n", - " '아무도 널 가질 수 없어',\n", - " '너란 여잔 danger',\n", - " 'they call you murda murda',\n", - " 'ooooh she killin it',\n", - " 'straight murder scene',\n", - " 'i can’t breath emergency',\n", - " 'no mercy no courtesy',\n", - " '네 말이라면 다 뭐든지',\n", - " '다 해야만 할 것만 같아',\n", - " '네께 난 돼야만 할 것만 같아',\n", - " '시간이 얼마가 지났든',\n", - " '다시 널 봬야 좀 살 것만 같아',\n", - " 'baby just hol up hol up girl',\n", - " 'where u goin',\n", - " '다 완벽한데 좀 외로워 보여',\n", - " '다 필요 없어 그대로만',\n", - " '옆자리만 빼고 그대로 와',\n", - " 'come get this love from me',\n", - " 'it’s yours bae you deserve it',\n", - " 'you and me 그래 너와 나',\n", - " '남잔 똑같대지 but no i’m not',\n", - " 'she kill me like it’s murda',\n", - " 'murda murda murda murda',\n", - " 'she dancing like its murda',\n", - " 'murda murda murda murda',\n", - " 'she give love to the strangers',\n", - " '아무도 널 가질 수 없어',\n", - " '너란 여잔 danger',\n", - " 'they call you murda murda',\n", - " 'murda murda she dancing',\n", - " 'in money shower',\n", - " '그 모습이 아름다워 날 죽여',\n", - " 'water water you thirsty',\n", - " 'and now you want her',\n", - " '난 너에게 목이 말라 시들어',\n", - " '눈을 감아 넌 다른 세상을 열어',\n", - " '꿈처럼 working every night',\n", - " '밤에 달처럼',\n", - " 'all the time all the time',\n", - " 'every night',\n", - " 'she kill me like it’s murda',\n", - " 'murda murda murda murda',\n", - " 'she dancing like its murda',\n", - " 'murda murda murda murda',\n", - " 'she give love to the strangers',\n", - " '아무도 널 가질 수 없어',\n", - " '너란 여잔 danger',\n", - " 'they call you murda murda',\n", - " '난 네 아름다움에 노예 너의',\n", - " '난 헤어 나올 수 없어 없어',\n", - " '헤어 나올 수 없어',\n", - " 'hangul',\n", - " '이건 세상에서 제일 비싼 단독 공연',\n", - " '가수는 나고 관객은 너 하나',\n", - " '화려한 막이 이제 곧 올라가기 전에',\n", - " '그저 몇 가지만 주의해줘요',\n", - " '세상에서 제일 편한 옷을 갈아 입고',\n", - " '제일 좋아하는 자리에 누워',\n", - " '배터리가 바닥나지 않게 조심하고',\n", - " '통화상태를 항상 유지해줘요',\n", - " '듣고 싶은 노래를 말 만해 everything',\n", - " '입이 심심할 때는 coffee, popcorn, anything',\n", - " '너무 부담주진 말고 편하게 들어줘',\n", - " '아님 내가 너무 떨리니까',\n", - " '오직 너에게만 감동적인 노래',\n", - " '오직 너를 웃게 하기 위한 코너',\n", - " '네가 너무 설레 잠 못 들게 만들 거야',\n", - " '지금이야 크게 소리 질러줘',\n", - " '누구보다 특별한 너의 취향을 알아',\n", - " '달콤한데 슬픈 듯 아찔하게 (맞지)',\n", - " '근데 다음 곡이 중요해 볼륨 높여봐',\n", - " '기억 나니 우리 그 날 그 노래',\n", - " '내가 너무 진지해 보여도 웃지마',\n", - " '누가 봐도 완벽한 노래는 아니지만',\n", - " '많이 연습한 부분을 너 때문에 틀리잖아',\n", - " '아직 나는 너무 떨리니까',\n", - " '오직 너에게만 감동적인 노래',\n", - " '오직 너를 웃게 하기 위한 코너',\n", - " '네가 너무 설레 잠 못 들게 만들 거야',\n", - " '지금이야 크게 소리 질러',\n", - " '이 공연은 거의 다 끝나 가고 있어',\n", - " '어땠는지 말해줘 문자로',\n", - " '너무나 아쉽지만 졸린 거 이미 알고 있어',\n", - " '기대해줘 마지막 곡 이 중에서도 제일',\n", - " '감동적인 노래',\n", - " '오직 너를 웃게 하기 위한 코너',\n", - " '네가 너무 설레 잠 못 들게 만들 거야',\n", - " '지금이야 제일 원하는 걸 말해 어떤 노래를',\n", - " '다시 듣고 싶어? 사실 내가 원해',\n", - " '네가 너무 설레 잠 못 들지 모르지만',\n", - " '앵콜이야 크게 소리 질러줘',\n", - " '이건 세상에서 제일 비싼 단독공연',\n", - " '가수는 나고 관객은 너 하나',\n", - " 'english translation',\n", - " 'this is the most expensive solo concert in the world',\n", - " 'i’m the singer and the audience is just you',\n", - " 'before the curtains are drawn',\n", - " 'just be careful of a few things',\n", - " 'change into the most comfortable clothes',\n", - " 'lay in your favorite spot',\n", - " 'careful that your battery doesn’t drain',\n", - " 'always be on the call',\n", - " 'tell me any song you want to hear, everything',\n", - " 'when you’re hungry, get coffee, popcorn, anything',\n", - " 'don’t give me too much pressure, just comfortably listen',\n", - " 'or else i’ll be too nervous',\n", - " 'a moving song only for you',\n", - " 'a corner that will only make you laugh',\n", - " 'i’m gonna make your heart flutter so much that you can’t sleep',\n", - " 'the time is now, shout out loud',\n", - " 'i know your special tastes better than anyone',\n", - " 'sweet yet sad and breathtaking (right?)',\n", - " 'but the next song is important, turn up the volume',\n", - " 'do you remember? that song from that day?',\n", - " 'even if i seem too serious, don’t laugh',\n", - " 'anyone can see it’s not a perfect song',\n", - " 'i practiced this part a lot but i’m making mistakes cuz of you',\n", - " 'because i’m still so nervous',\n", - " 'a moving song only for you',\n", - " 'a corner that will only make you laugh',\n", - " 'i’m gonna make your heart flutter so much that you can’t sleep',\n", - " 'the time is now, shout out loud',\n", - " 'this concert is almost over',\n", - " 'tell me how it was through text',\n", - " 'i don’t want to hang up but i know you’re sleepy',\n", - " 'be excited for this last song, the most important',\n", - " 'a moving song only for you',\n", - " 'a corner that will only make you laugh',\n", - " 'i’m gonna make your heart flutter so much that you can’t sleep',\n", - " 'the time is now, tell me what song you want',\n", - " 'wanna hear it again? honestly, i want you',\n", - " 'i don’t know if your heart will flutter and not go to sleep',\n", - " 'but this is the encore, shout out loud',\n", - " 'this is the most expensive solo concert in the world',\n", - " 'i’m the singer and the audience is just you',\n", - " 'korean original',\n", - " '일하는 사이 사이마다',\n", - " '니 생각이 나',\n", - " '건널목 앞에 설 때마다',\n", - " '난 너만 떠올라',\n", - " '너란 공기는',\n", - " '내 숨이 가쁘게',\n", - " '그렇게 사라져 가',\n", - " 'if you 내 사랑이 100이었다면',\n", - " '그 반을 남겨놓지 않았으면',\n", - " '내 곁에 아직까지 있을까',\n", - " '사랑은 하고 있을까 우린',\n", - " '다 주고 싶지',\n", - " '않아서가 아니었어 난',\n", - " '다만 시간이 필요했어',\n", - " '몇 번의 이별에',\n", - " '다친 내 기억에',\n", - " '다 주기 겁이 났어',\n", - " 'if you 만약 내 사랑이 100이었다면',\n", - " '그 반을 남겨놓지 않았으면',\n", - " '내 곁에 아직까지 있을까',\n", - " '사랑은 하고 있을까 우린',\n", - " '맘 속에 숨겨 둔 반쪽의 사랑',\n", - " '반까지 마저 꺼내 줄 수 있어 이제는',\n", - " '돌아와 줘 오늘은',\n", - " 'if you 만약 내 사랑이 100이었다면',\n", - " '그 반을 남겨놓지 않았으면',\n", - " '내 곁에 아직까지 있을까',\n", - " '사랑은 하고 있을까 우린',\n", - " '너란 곳에 살아보니까',\n", - " '다른 곳에서는 단 하루도',\n", - " '난 나로 살 수 없는 걸',\n", - " '안 되는 걸',\n", - " '다시 또 사랑한다면 그때도 니가 아니면',\n", - " '사랑은 못 해 나는',\n", - " 'english translation',\n", - " 'here and there, while i work',\n", - " 'i think about you',\n", - " 'every time i see a crossroad',\n", - " 'i can only think of you',\n", - " 'the air called you',\n", - " 'makes me run out of breath',\n", - " 'then you vanish like that',\n", - " 'if you, if my love was 100',\n", - " 'if i didn’t leave half of it remaining',\n", - " 'would you still be by my side?',\n", - " 'would we still be in love?',\n", - " 'i wasn’t that',\n", - " 'i didn’t want to give you my all',\n", - " 'i just needed some time',\n", - " 'because of my past break ups',\n", - " 'because of my scarred memories',\n", - " 'i was afraid to give you my all',\n", - " 'if you, if my love was 100',\n", - " 'if i didn’t leave half of it remaining',\n", - " 'would you still be by my side?',\n", - " 'would we still be in love?',\n", - " 'two halves of love',\n", - " 'that are hidden in my heart',\n", - " 'i can take out even the other half now',\n", - " 'come back to me today',\n", - " 'if you, if my love was 100',\n", - " 'if i didn’t leave half of it remaining',\n", - " 'would you still be by my side?',\n", - " 'would we still be in love?',\n", - " 'after living in a place of you',\n", - " 'i can’t live a single day',\n", - " 'in any other place',\n", - " 'i can’t',\n", - " 'if i love again and it’s not you',\n", - " 'i can’t love']},\n", - " 'rap': {'meta': {'train_data': [\"i'm born slacker but i need some estate\",\n", - " 'baking rappers alive',\n", - " 'cause i think i needed some bread',\n", - " '티들은 못 내도 모두가 나의 fan인 듯해',\n", - " \"cause i'm always breezy\",\n", - " '주의로 소문이 부는 듯해, ay',\n", - " \"i'm born slacker but i need some of that please\",\n", - " \"i'm working my ass off to make you work on my lap dance\",\n", - " '다시 말해 you my bitch, to come lick the tip off',\n", - " 'the kick off, 내 balls 너의 식사',\n", - " '취향이 니 기사 you so sentimental, woo',\n", - " '준비된 여자에게 털어, 지식이 식상',\n", - " '빈 집에 진상 자랑거리 하나 없네',\n", - " '이건 반 진심이야, 축하해, 너희 오디션 입상',\n", - " \"i'm a born slacker, still clapping\",\n", - " '아직도 나에게 인정받을 album 그건 한국엔 없으니',\n", - " '그럼 게으르게 두지, 연간 한 장씩 안내도',\n", - " '내 album을 이기는 건 새로운 내 album 뿐이었으니',\n", - " '내 하루는 기상, 기분 나쁜 새끼들',\n", - " '죽여버릴 곡 쓰는 게 내 평범한 면상에 seasoning',\n", - " '요즘은 이쁜 rap이 유행인가보네',\n", - " '뭐, 그런 것도 하나 내지 뭐',\n", - " 'but you know we have a problem here',\n", - " 'nobody claims it, i think they scared',\n", - " \"y'all know what it is, yeah, bruh, i think they scared\",\n", - " 'what you mad for, yeah, bruh, i think they scared',\n", - " '지금 은퇴해도 내 위치는 locked and good, yeah',\n", - " 'nobody claims it, i think they scared',\n", - " \"y'all know what it is, yeah, bruh, i think they scared\",\n", - " 'what you mad for, yeah, bruh, i think they scared',\n", - " '지금 은퇴해도 내 위치는 locked and good',\n", - " \"i bet they scared, yeah, bitch, i'm on to the next\",\n", - " '내 album이 나올때마다 i bet they switching they plans',\n", - " '충분한 balance',\n", - " '내가 불공평하다 말해도 간지를 버린 새끼들',\n", - " 'they be swinging they chains like, yeah',\n", - " 'what, karma be the reason',\n", - " '하도 까대서 내가 내 인상 찌푸리는 짓을',\n", - " '나도 신사나 가서 콧대 하늘 찔러버릴 시술 받고',\n", - " '내 콧대와 콧대를 맞춰보고 싶군',\n", - " 'but the only and always be the lonely',\n", - " '내 pace 맞춰 따라오는 새끼가 어째 한 명도 없으니',\n", - " '이건 step stone, 어쩌면 내 본판',\n", - " '어떤 건 손을 아무리 대도 어찌 좋아질 수가 없으니',\n", - " 'the bar so lifted, my diction gifted',\n", - " '갈겨써도 못 따라와, my clock still skipping',\n", - " \"더럽게 재미없지, i ain't playing no more\",\n", - " '대충해도 역사에 남겠어, 은퇴를 해도',\n", - " 'nobody claims it, i think they scared',\n", - " \"y'all know what it is, yeah, bruh, i think they scared\",\n", - " 'what you mad for, yeah, bruh, i think they scared',\n", - " '지금 은퇴해도 내 위치는 locked and good, yeah',\n", - " 'nobody claims it, i think they scared',\n", - " \"y'all know what it is, yeah, bruh, i think they scared\",\n", - " 'i think they scared',\n", - " 'umm, yeah',\n", - " 'okay, uh, yeah',\n", - " '벌어야겠네, 쉬었어 실컷',\n", - " '내 소비 습관 안 고침 아직',\n", - " '유지비 차이 땜에',\n", - " '누구 눈에 부자여도 내 기분 거지 같지',\n", - " '허리띠 졸라매는 건 싫어',\n", - " '어릴 때 보다 배때기 늘어났지',\n", - " '눈 높은 게 노답이라는데',\n", - " '난 10년 전에 이미 답찾았지',\n", - " '나 보는 눈이 달라지는 거 느껴',\n", - " '그때부터 생긴 radar, yeah',\n", - " '아마 그때부터 암세포같이',\n", - " '퍼져버린 나의 연예인 병',\n", - " '시발, who’s number one?',\n", - " 'i’m one and only',\n", - " '어느 곳이건 90프로 병신',\n", - " '난 10과 11 그 사이쯤',\n", - " '단점은 너무 겸손한 성격이지',\n", - " '나도 물론 love 얘기해',\n", - " '다만 나의 양극성이 문제',\n", - " '어느 날엔 다 이해되도',\n", - " '어느 날엔 심히 역겨움을 느껴',\n", - " '직업적 상담은 거부 (uh, yeah)',\n", - " '필요한 거 너의 품 (yeah, uh)',\n", - " '척 안 해 나는',\n", - " '내가 제일 잘 알아 내게 낀 거품',\n", - " 'no, no, no, mama i gotta go get it',\n", - " 'you see that telelelelele on my radar, bitch',\n", - " 'fuck anybody on my radar',\n", - " 'nothing but a part of my cater, bitch',\n", - " '덜어, 덜어, 덜어, 덜어, 덜어',\n", - " 'this gon never stop untill i make it, see that',\n", - " 'telelelelele, telelelelele on my radar',\n", - " 'no, no, no, mama i gotta go get it',\n", - " 'you see that telelelelele on my radar, bitch',\n", - " 'mama i gotta go get it',\n", - " 'you see that telelelelele on my radar, bitch',\n", - " 'mama i gotta go get it',\n", - " 'you see that telelelelele on my radar, bitch',\n", - " 'mama i gotta go get it',\n", - " 'you see that telelelelele on my radar',\n", - " 'tv 트니까 자존감 뭐, 지랄',\n", - " '강사짓 하네, 저 사기꾼 새끼',\n", - " '사진 몇 장하고 편집한 역사면',\n", - " '뭐든지 다 말이 되지',\n", - " '나도 저렇게 하자',\n", - " '야, 누군 저 말이 도움 됐다잖아',\n", - " '내 기준엔 크게 두 부류 같아',\n", - " '한탕 아니면 노가다 (yeah)',\n", - " 'lookin like a movie shit',\n", - " '근데 난 영화보단 부귀지',\n", - " '욕심엔 고통이 따라온대',\n", - " '근데 내 특기가 그거 다루기지 (uh, yeah)',\n", - " '허세 같대, 미친놈 같대',\n", - " '피곤하대, 누군 멋지다네',\n", - " '지랄하네, 너희 중 누구든지',\n", - " '내 근처라도 와보고 말해',\n", - " 'no, no, no, mama i gotta go get it',\n", - " 'you see that telelelelele on my radar, bitch',\n", - " 'fuck anybody on my radar',\n", - " 'nothing but a part of my cater, bitch',\n", - " '덜어, 덜어, 덜어, 덜어, 덜어',\n", - " 'this gon never stop untill i make it, see that',\n", - " 'telelelelele, telelelelele on my radar',\n", - " 'telelelelele on my radar, bitch',\n", - " 'telelelelele on my radar',\n", - " 'telelelelele on my radar, bitch',\n", - " 'telelelelele on my radar',\n", - " 'telelelelele on my radar, bitch',\n", - " 'telelelelele on my radar',\n", - " 'telelelelele on my radar, bitch',\n", - " 'telelelelele on my radar',\n", - " 'telelelelele on my radar, bitch',\n", - " 'telelelelele on my radar',\n", - " 'telelelelele on my radar, bitch',\n", - " 'telelelelele on my radar',\n", - " 'telelelelele on my radar, bitch',\n", - " 'telelelelele on my radar',\n", - " 'telelelelele on my radar, bitch',\n", - " 'telelelelele on my radar, bitch',\n", - " \"let's get it closer girl\",\n", - " 'i wanna know you right',\n", - " 'i got plenty of time to spend with you tonight',\n", - " \"let's get it closer girl\",\n", - " 'i wanna know you right',\n", - " 'i got plenty of time to spend with you tonight',\n", - " \"i'm a natural born hustler i hustle errday\",\n", - " '무대 또는 studio, each and eyway',\n", - " 'christian은 아니지만 christian dior',\n", - " 'christian louboutin sneakers 평소엔 편하게 ajs',\n", - " 'like play stations, 내가 쏘니',\n", - " '뭐든지 맘껏 집어, 이제부턴 다 니 꺼니',\n", - " '가고 싶음 말해 honolulu, vegas',\n", - " '어쩌면 tokyo or new york, 아니면 lakers',\n", - " '아침엔 바닷가, 점심엔 쇼핑몰',\n", - " '저녁은 근사한 뷔페, 아님 필렛미뇽',\n", - " \"밤엔 최고급 호텔에서 relaxin'\",\n", - " \"sexin' all night long 우리 둘만의 dancin'\",\n", - " \"hands in the air i just don't care\",\n", - " 'yeah, baby call me true playa',\n", - " '잠들어, 내 어깨에 기대',\n", - " \"술이 아닌 내게 기댄 너의 향기에 취해 (let's get high)\",\n", - " \"let's get it closer girl\",\n", - " 'i wanna know you right',\n", - " 'i got plenty of time to spend with you tonight',\n", - " \"let's get it closer girl\",\n", - " 'i wanna know you right',\n", - " 'i got plenty of time to spend with you tonight',\n", - " '가끔 내가 옆에 없어도 슬퍼 말아',\n", - " '당장 보기엔 좀 멀어도 갈게 바로',\n", - " '바뻐 몸은 많이 버려도 난 괜찮아',\n", - " '그래도 돈은 많이 벌어놓았으니까',\n", - " '평소 갖고 싶은 거 아니면 가고 싶은 곳',\n", - " '다 말해, 너의 미소를 볼 때면 나도 기쁜 걸',\n", - " 'yeah, baby you already know, wherever is dope',\n", - " \"어디든 갈게 널 데리고, so let's fly away\",\n", - " 'i want you to be on my side always',\n", - " '가끔 여자들이 날 유혹해도 내 머릿속엔 니 생각뿐',\n", - " \"don't you worry bout a thang stevie wonder girl i got you\",\n", - " 'your hips your thighs, 니 입술과',\n", - " 'when i kiss your body, 나만 아는 니 몸짓들까지도',\n", - " '오늘 밤 또 알고 싶어 더',\n", - " '오늘만큼은 got plenty of time to spend with you',\n", - " 'i wanna feel some love',\n", - " \"let's get it closer girl\",\n", - " 'i wanna know you right',\n", - " 'i got plenty of time to spend with you tonight',\n", - " \"let's get it closer girl\",\n", - " 'i wanna know you right',\n", - " 'i got plenty of time to spend with you tonight',\n", - " \"(watch out, ay) you don't know my style\",\n", - " \"you don't know bout me 'cause you don't bout moi\",\n", - " '(watch out, ay) 넌 내가 누군지 몰라',\n", - " '나의 이름을 알아도, 그래, 너는 날 몰라',\n", - " \"(watch out, ay) you don't know my style\",\n", - " \"you don't know bout me 'cause you don't bout moi\",\n", - " '(watch out, ay) 넌 내가 누군지 몰라',\n", - " '나의 이름을 알아도 나를 몰라',\n", - " 'i see no one in korea have swagger like mine',\n", - " \"뛰는 놈 위에 나는 다른 rapper, i'm fly\",\n", - " '아니면 제껴, 상관할 필요 없이',\n", - " '난 나의 길을 걷지 바삐 bust it baby like plies',\n", - " '내 rap은 돈 되지 so 맛있게 먹어',\n", - " '가진 게 없어 나는 오늘도 바쁘게 벌어',\n", - " 'tryna be thoro, 오늘이 마지막인 것처럼 살지',\n", - " '난 뒤돌아 보지 않고 앞으로 걸어, yeah',\n", - " \"it's the return of the young hustle\",\n", - " '8년째 낼름 거리는 king of the tongue tussle',\n", - " 'master of the flow puzzle',\n", - " '고집과 난 멋을 부리며 돈을 쓰는 동시에 돈 벌어',\n", - " '더 걸어, 더 뛰어, 뛰어난 swag',\n", - " '이건 위험한 rap, 그 흐름을 한 번 더 이어갈 track',\n", - " \"me i'm the best in this industry\",\n", - " '인정하기 싫겠지만 사실이야, boy please believe',\n", - " \"(watch out, ay) you don't know my style\",\n", - " \"you don't know bout me 'cause you don't bout moi\",\n", - " '(watch out, ay) 넌 내가 누군지 몰라',\n", - " '나의 이름을 알아도, 그래, 너는 날 몰라',\n", - " \"(watch out, ay) you don't know my style\",\n", - " \"you don't know bout me 'cause you don't bout moi\",\n", - " '(watch out, ay) 넌 내가 누군지 몰라',\n", - " '나의 이름을 알아도 나를 몰라',\n", - " \"you don't know, you don't know, you don't know me\",\n", - " \"i don't know, i don't know, i don't know you\",\n", - " \"so don't touch so don't judge don't approach me\",\n", - " \"you ain't got, you ain't got nuttin' on me\",\n", - " \"you don't know, you don't know, you don't know me\",\n", - " \"i don't know, i don't know, i don't know you\",\n", - " \"so don't touch so don't judge don't approach me\",\n", - " \"you ain't got, you ain't got nuttin' on me\",\n", - " '가-가-가지 말라는 길로 고집 피워 계속 끝없이 걸어',\n", - " '기나긴 시간 고생을 거듭해 견뎌낼 gutter',\n", - " '겁 없이 나를 걸어 결국 이겨낸 괴로움',\n", - " '때로는 외로움이 남아 가끔씩 눈물이 고여',\n", - " '고로 결론은 결코 포기하지 않는 것',\n", - " 'got some guts to be myself, 나로 살아가는 건',\n", - " '그 어떤 이에게는 그건 뿌리 깊은 gonzo',\n", - " '그 어떤 이에게는 이건 거지 같은 꼴',\n", - " '나는 dok2 the illest korean',\n", - " 'rapper들의 rapper 그 화두에 꼭 끼는',\n", - " \"악명 높은 어린이 i'm the dopest\",\n", - " '한국 hip-hop의 compass',\n", - " '내 rap에는 절대로 stop 버튼이 없어',\n", - " \"like broken ol' radio\",\n", - " '발등 찍힐 일도 없지, you already know',\n", - " '누구를 데리고 와도 난 끄떡없어',\n", - " \"그냥 이 beat를 따라 bounce 끄떡거려, get'em\",\n", - " \"(watch out, ay) you don't know my style\",\n", - " \"you don't know bout me 'cause you don't bout moi\",\n", - " '(watch out, ay) 넌 내가 누군지 몰라',\n", - " '나의 이름을 알아도, 그래, 너는 날 몰라',\n", - " \"(watch out, ay) you don't know my style\",\n", - " \"you don't know bout me 'cause you don't bout moi\",\n", - " '(watch out, ay) 넌 내가 누군지 몰라',\n", - " '나의 이름을 알아도 나를 몰라',\n", - " \"you don't know, you don't know, you don't know me\",\n", - " \"i don't know, i don't know, i don't know you\",\n", - " \"so don't touch so don't judge don't approach me\",\n", - " \"you ain't got, you ain't got nuttin' on me\",\n", - " \"you don't know, you don't know, you don't know me\",\n", - " \"i don't know, i don't know, i don't know you\",\n", - " \"so don't touch so don't judge don't approach me\",\n", - " \"you ain't got, you ain't got nuttin' on me\",\n", - " 'korean (original)',\n", - " '왜 그랬을까 왜 그랬을까',\n", - " '사랑 웃기지말라 그래',\n", - " 'yeah yeah',\n", - " '쓰디쓴 술과 and i',\n", - " '너땜에 끊었던 담배',\n", - " '다시 너땜에 물고',\n", - " 'goes out to you (goes out to you baby)',\n", - " '말 한마디 없이 떠나간 그대여',\n", - " '내 그대여 지금 이 노래 들리시나요',\n", - " '니가 없이 맞는 외로운 아침',\n", - " '그대 떠난 후 내 맘속 지도의',\n", - " '나침반은 길을 잃었어',\n", - " '내 삶을 다 망친',\n", - " '아무 준비도 못한',\n", - " '내게서 멀리 도망친',\n", - " '나의 비너스',\n", - " '널 미워하려고 난 신께 빌었어',\n", - " '너무 억울해서 내 자신이',\n", - " '너무나 한심해서',\n", - " '내 말투 행동 걸음걸이 하나까지',\n", - " '도배된 널 닮은',\n", - " '습관들이 날 괴롭혀',\n", - " '잊지 않아 어떻게 잊을까 나',\n", - " '내 모든 추억의',\n", - " '첫페이지에 네가 있잖아',\n", - " '생일 바닷가 깊은 사랑에 절벽 넘어',\n", - " '첫실연의 아픔을 내게준',\n", - " '첫번째 여자잖아',\n", - " '나 미친척 해 슬퍼도 웃어볼래',\n", - " '텅빈 네 맘 바라지 않아 we just too late',\n", - " '네꺼라며 네 맘대로 할거라며',\n", - " '이게 네 사랑방식 애초에 시작을',\n", - " '말았더라면',\n", - " '너와 한 시간은 너무나 힘들었어',\n", - " '맨날 전화기만 붙들고',\n", - " '나는 널 기다렸는데',\n", - " '항상 넌 아무런',\n", - " '잘못하나 없어 미안하다고 말하고서',\n", - " '나를 피하고 그대로 가버렸어',\n", - " 'but i love you girl',\n", - " '네가 있어줬으면 싶어',\n", - " 'but i love you girl',\n", - " '네가 잡아줬으면 싶어',\n", - " 'but i love you girl',\n", - " '말하지 않아도',\n", - " '서툰 내 맘 제발 놓지 말아줘요',\n", - " 'oh my girl',\n", - " '내 눈엔 그저 예쁘기만 해',\n", - " '너무 빠지지는 말란 친구의 말에',\n", - " '일단 화부터 내 그 애는 다르다고',\n", - " '누구보다 착하고 순수한 그런 아이라고',\n", - " 'uh 사 아니 정말로 좋아해',\n", - " '널 우린 변치 말자 행복하게 해줄게',\n", - " '넌 내 곁에 머물러 시간이 더 흘러',\n", - " '일 이년 지나고 나면',\n", - " 'more better than this year',\n", - " '힘들어 지쳐보여 네 목소리가',\n", - " '기댈 곳이 필요해 기대 제발',\n", - " '나 안보여 왜 너혼자 쓰러져',\n", - " '고갤 저어 가슴이 찢어지고 무너져',\n", - " '우리 처음 만났을땐 좋았는데',\n", - " '서로 보고만 있어도 행복했는데',\n", - " '사실 아직도 난 그래',\n", - " '근데 왜 너는 안그래',\n", - " '요즘 널 보면 예전 그 느낌이',\n", - " '네겐 없는데',\n", - " '너와 한 추억은 너무나 고달팠어',\n", - " '물론 내 잘못이겠지 이렇게 위로하겠지',\n", - " '세월이 가면 이 기억도',\n", - " '연기처럼 저멀리 날아가',\n", - " '새 사랑이 내게도 찾아올런지',\n", - " 'but i love you girl',\n", - " '너를 웃게 해주고 싶어',\n", - " 'but i love you girl',\n", - " '네 눈물 닦아주고 싶어',\n", - " 'but i love you girl',\n", - " 'nothing anymore',\n", - " '떠난 그대 맘 되돌릴수 없는걸',\n", - " 'i know girl',\n", - " '마지막 그대 얼굴',\n", - " '보고 싶어서 전화해~',\n", - " '끝까지 아무 대답없는 너지만~',\n", - " 'oh 왜 나를 피하는지',\n", - " '내게 말해줘요 girl',\n", - " '아직도 난 제자리에요',\n", - " 'but i love you girl',\n", - " '네가 있어줬으면 싶어',\n", - " 'but i love you girl',\n", - " '네가 잡아줬으면 싶어',\n", - " 'but i love you girl',\n", - " '말하지 않아도',\n", - " '서툰 내 맘 제발 놓지 말아줘요',\n", - " 'but i love you girl',\n", - " '너를 웃게 해주고 싶어',\n", - " 'but i love you girl',\n", - " '네 눈물 닦아주고 싶어',\n", - " 'but i love you girl',\n", - " 'nothing anymore',\n", - " '떠난 그대 맘 되돌릴수 없는걸',\n", - " 'i know girl',\n", - " 'english (translated)',\n", - " 'why did you do that? why did you do that?',\n", - " 'love? don’t make me laugh',\n", - " 'yeah yeah',\n", - " 'with bitter beer and i',\n", - " 'cigarettes that i quit because of you',\n", - " 'because of you i smoke them again',\n", - " 'goes out to you',\n", - " 'to you who left without one word',\n", - " 'can you hear this song right now',\n", - " 'this lonely morning i meet without you',\n", - " 'after you left, the compass of the map in my heart',\n", - " 'has lost its way',\n", - " 'my life is all ruined',\n", - " 'i was unprepared',\n", - " 'you ran far away from me',\n", - " 'my venus',\n", - " 'i’ve prayed to god to try to hate you',\n", - " 'because it was so unfair',\n", - " 'because my life felt so miserable',\n", - " 'my tone, actions, even my steps have gone away',\n", - " 'my habits that have copied yours',\n", - " 'are bothering me',\n", - " 'you can’t be forgotten, how can i forget you',\n", - " 'you’re on the first page',\n", - " 'of all of my memories',\n", - " 'birthdays, the beach, over the cliff of deep love',\n", - " 'you’re the first girl who’s given me the pain',\n", - " 'of a first broken heart',\n", - " 'even if in my craziness i feel sad i’ll try to smile',\n", - " 'i don’t want your empty feelings, we just too late',\n", - " 'uh if it’s your’s, if you’re going to do whatever you want',\n", - " 'this is the way you love?',\n", - " 'if i hadn’t started the beginning yeah',\n", - " 'the time i had with you was so hard',\n", - " 'everyday i waited for you',\n", - " 'by my phone',\n", - " 'and every time you have no blame',\n", - " 'you told me you were sorry',\n", - " 'and avoided me then left',\n", - " 'but i love you girl',\n", - " 'i wish you would stay here',\n", - " 'but i love you girl',\n", - " 'i wish you would hold onto me',\n", - " 'but i love you girl',\n", - " 'even if i don’t say it',\n", - " 'please don’t lose my eager heart',\n", - " 'ma girl',\n", - " 'in my eyes you are just beautiful',\n", - " 'my friend told me not to fall too deeply',\n", - " 'first i get mad that girl is different',\n", - " 'she is nicer and more pure than anybody',\n", - " 'i lo-… no, i really like you',\n", - " 'let’s not change i’ll make you happy, you',\n", - " 'stay by my side time flows by',\n", - " 'when 1, 2 years goes by',\n", - " 'more better than this year',\n", - " 'your voice seems so tired',\n", - " 'you need a place to lean, please lean on me',\n", - " 'don’t you see me? why do you fall alone?',\n", - " 'lower my head, my heart tears and breaks',\n", - " 'it was great when we first met',\n", - " 'we were happy just seeing each other',\n", - " 'actually i’m still like that',\n", - " 'but why aren’t you?',\n", - " 'lately when i see you',\n", - " 'i don’t get the same feelings yeah',\n", - " 'the memories with you were so hard',\n", - " 'of course it may be my fault',\n", - " 'i’ll probably comfort myself like this',\n", - " 'when time goes by this memory will be like smoke too',\n", - " 'fly far away, a new love may find me too',\n", - " 'but i love you girl',\n", - " 'i want to make you smile',\n", - " 'but i love you girl',\n", - " 'i want to wipe away your tears',\n", - " 'but i love you girl',\n", - " 'nothing anymore',\n", - " 'i can’t turn back your changed heart',\n", - " 'i know girl',\n", - " 'i call wanting to see your face',\n", - " 'one last time',\n", - " 'but till the end there’s no answer from you',\n", - " 'oh why are you avoiding me?',\n", - " 'please tell me girl',\n", - " 'i’m still standing still',\n", - " 'but i love you girl',\n", - " 'i wish you would stay here',\n", - " 'but i love you girl',\n", - " 'i wish you would hold onto me',\n", - " 'but i love you girl',\n", - " 'even if i don’t say it',\n", - " 'please don’t lose my eager heart',\n", - " 'but i love you girl',\n", - " 'i want to make you smile',\n", - " 'but i love you girl',\n", - " 'i wan to wipe away your tears',\n", - " 'but i love you girl',\n", - " 'nothing anymore',\n", - " 'i can’t turn back your changed heart',\n", - " 'i know girl',\n", - " '(uh! uh!) 그토록 해맑았던 너의 그 미소',\n", - " '까만 먹구름에 쌓인 내게로',\n", - " '살며시 내게 다가온 그대와의 노래로',\n", - " '우린 하나라는 느낌을 느끼고',\n", - " '사랑은 언제나 내 맘속에 (영원한)',\n", - " '그저 태지 말대로 너와 (함께 한)',\n", - " '시간들 속에서 포근해 지는 것',\n", - " 'everyday to the j and i keeps it hot can you get',\n", - " 'with that 소중한 넌 나의 ticket',\n", - " '힘들던 나의 삶에 고통을 잊게(show down sean)',\n", - " '세상에서 무엇보다도 내가 너를 좋아하게 된 이유',\n", - " '너무나 긴 방황의 길',\n", - " '그곳으로 내게 손을 내민 너의 손길',\n", - " '그대 왜 내게 이렇게 늦게 다가왔나 사랑해요 my love',\n", - " 'i know your eyes in the morning sun',\n", - " 'i feel you touch me in the pouring rain',\n", - " 'and the moment that you wander far from me',\n", - " 'i wanna feel you in my arms again',\n", - " 'how deep is your love',\n", - " '너만을 간직한 내 가슴만큼 커다란 슬픔',\n", - " '영원한 것이 될까 너의 마음',\n", - " '변하진 않았을까 얼마나 많은',\n", - " '사랑이 남아있나 불안한 지금',\n", - " '이 모든 게 쓸데없는 고민들',\n", - " '이젠 믿음만이 내 모든 아픔을 다 지워졌나',\n", - " '언제나 그건 반드시 절대로 변치 않듯이 널 지켜줄게 너의 두 눈 속에서 살아갈게',\n", - " '언제나 같이 할게 (what what)',\n", - " '너와 하나 맞나 내 인생에서 사는 이유하나 (uh!)',\n", - " '빛이 돼 나를 밝혀 줘 또 부셔 줘 너를 위해서',\n", - " '혹시 다른 곳 다시 태어난대도 오직 내겐 너 하나',\n", - " 'and you come to me on a summer breeze',\n", - " 'keep me warm in your love',\n", - " 'then you softly leave',\n", - " \"and it's me you need to show\",\n", - " 'how deep is your love?',\n", - " 'how deep is your love',\n", - " 'how deep is your love',\n", - " 'i really need to learn',\n", - " \"cause we're living in a world of fools\",\n", - " 'breakin’ us down',\n", - " 'when they all should let us be',\n", - " 'we belong to you and me',\n", - " 'uh! you hold me the key to my heart uh!',\n", - " 'yo! and we can never be apart boo',\n", - " 'we’ll ride dip and dive take you',\n", - " 'to a place as i’m by your side uh!',\n", - " 'two hearts falling deep inside uh!',\n", - " 'from start let me make you glide',\n", - " 'cause you got me open wide',\n", - " 'and you may not think i care for you',\n", - " 'when you know down inside',\n", - " 'that i really do',\n", - " \"and it's me you need to show\",\n", - " 'how deep is your love?',\n", - " '(how deep is your love',\n", - " 'how deep is your love)',\n", - " 'i really need to learn',\n", - " \"cause we're living in a world of fools\",\n", - " 'breakin’ us down',\n", - " 'when they all should let us be',\n", - " 'we belong to you and me',\n", - " 'coming to you live',\n", - " 'potential',\n", - " '질 거면, yeah',\n", - " '질 거면 왜 해?',\n", - " '깔끔한 계획',\n", - " '여기서 제외',\n", - " 'put on my jet pack',\n", - " '왜 계속 rap 해?',\n", - " '솔직히 no 이해',\n", - " '솔직히 널 위해',\n", - " 'bro 그냥 just get back',\n", - " 'back, back, back up',\n", - " 'world tour, trendsetter',\n", - " \"2 ep's, full album\",\n", - " \"you can't touch this\",\n", - " \"i'm just saying potential\",\n", - " 'your far from my lane your lame',\n", - " \"i'm on my space ship no safe shit, uh\",\n", - " 'album 냈어, 반응 좋았어',\n", - " \"but i don't care, 바로 다음 거\",\n", - " '섭외 전화, 모든 공연 리스트 준비해놔',\n", - " 'coming to you live',\n", - " '그 rolex, 그 money dance',\n", - " '어설퍼 너, 음, no thanks',\n", - " 'your favorite rapper, 걔 누구였지?',\n", - " 'just bars',\n", - " 'legacy',\n", - " 'legacy',\n", - " '왜 계속 rap 해?',\n", - " '솔직히 no 이해',\n", - " '왜 계속 rap 해?',\n", - " '솔직히 no 이해',\n", - " \"what? i ain't rapping it's all about the money\",\n", - " \"flexin'\",\n", - " '겨우 모은 돈으로 일단은 사러 가 brand',\n", - " '쓰고 나면 돈 얼마는 없어',\n", - " '괜찮아, look at my dab',\n", - " '남은 걸로 섭외해 model',\n", - " '당연히 한 손에는 bottle',\n", - " '이쪽 손은 내 사랑, 돈다발',\n", - " '귀에 대고 전화 통화로 convo, whoa, whoa',\n", - " '최대한 연습한 대로 하면',\n", - " '좀 벌게 해주세요, 제발요, 하나님 저 외로워요',\n", - " 'and i need money to cover my 부족한 외모',\n", - " 'so i can maybe maybe really get ladies, ladies',\n", - " 'till then i ooh, yuh (ay, ay, look at my dab)',\n", - " 'ooh, yuh (ay ay, ay, girl look at my dab)',\n", - " 'ooh, yuh (ay, ay, girl look at my dab)',\n", - " 'yuh, yuh, same adlibs',\n", - " 'how you rappers got no taste?',\n", - " \"가사에서 제발 '총' 빼\",\n", - " 'click clack, bang bang',\n", - " '잡아보지도 못한 총대',\n", - " \"your lame it's okay\",\n", - " '따라 하는 거야 못하면 원래',\n", - " \"i mean don't get it too twisted man\",\n", - " 'keep doing you so i can do me',\n", - " 'legacy',\n", - " 'dream perfect',\n", - " 'mmm, yeah',\n", - " 'f all your long talk',\n", - " '행동의 montage, 미래가 길어',\n", - " '우린 긴 말이 싫어 like f all the long talk',\n", - " 'mmm, yeah',\n", - " 'f all your long talk',\n", - " '행동의 montage, 미래가 길어',\n", - " '우린 긴 말이 싫어 like f all the long talk',\n", - " 'legacy',\n", - " 'legacy',\n", - " 'legacy',\n", - " 'legacy',\n", - " 'iite cool',\n", - " 'legacy',\n", - " 'legacy',\n", - " 'legacy',\n", - " 'legacy',\n", - " 'legacy (legacy)',\n", - " 'legacy (legacy)',\n", - " 'legacy (legacy)',\n", - " 'legacy (legacy)',\n", - " 'legacy (legacy)',\n", - " 'legacy (legacy)',\n", - " 'legacy (legacy)',\n", - " 'legacy',\n", - " '이젠 홍대마저 따라하는 gd 혹은 top',\n", - " '니 자신이 되어라. please be original',\n", - " '볼펜보다 칼을 얼굴에 댄 음악들은 그만 듣고파',\n", - " '뻑이 가기보단 빡',\n", - " '공연보다 공중파, 음악보다는 개인기',\n", - " '역사를 쓰기보단 image in the making',\n", - " 'rap이 옥의 티인 wack mc 대신',\n", - " '내 소개를 합니다. hi, my name is',\n", - " 'b, double e, n-z-i-n-o',\n", - " 'z를 g가 아닌 z로 발음하는 매너',\n", - " '연예인이 되게 해준다는 달콤한 말을 해도',\n", - " '구미가 안 땡기면 숟가락을 내려',\n", - " '내가 내키지 않음 내치고',\n", - " '내가 내키면 해, 그게 내 신념',\n", - " 'yeah, illionaire seems good',\n", - " 'the q, gonzo, isshoman, leggo!',\n", - " 'mr. independent, the real musician',\n", - " 'respect my walk, my talk, my ill decision',\n", - " \"let's ride (let's ride, let's ride)\",\n", - " \"let's ride (let's ride, let's ride)\",\n", - " 'mr. independent, the real musician',\n", - " 'respect my walk, my talk, my ill decision',\n", - " \"let's ride (let's ride, let's ride)\",\n", - " \"let's ride (let's ride, let's ride)\",\n", - " \"10 years in the game, i'm finally here\",\n", - " '지나간 날에 손 흔들고 이제 마무리 지어',\n", - " '멈출 순 없어, 더욱 세게 나아갈 뿐이지',\n", - " '밑바닥부터 외롭게 시작한 우리지',\n", - " \"it's illionaire, baby. put your hands up in the air, baby\",\n", - " '고1 때 재미 삼아 시작했던 내 rap이',\n", - " \"이 판을 완전히 바꿨지, yeah, the game's changed\",\n", - " '기억도 안 나, 놀아봤던 게 언제인지',\n", - " '그만큼 정말 부지런하게 일했지',\n", - " '그 결과 매일매일이 payday 됐지',\n", - " '그게 나의 hustle, i hustle real hard',\n", - " '그러니 너도 어서 니 것을 키워 봐',\n", - " '이제는 인정할 수밖에 없어 내 style',\n", - " \"실력과 돈, livin' like a fiesta\",\n", - " '훗날에 사람들은 날 이렇게 기억하겠지',\n", - " 'the quiett, 계약서 한 장 없이 탄생한 rap star',\n", - " 'mr. independent, the real musician',\n", - " 'respect my walk, my talk, my ill decision',\n", - " \"let's ride (let's ride, let's ride)\",\n", - " \"let's ride (let's ride, let's ride)\",\n", - " 'mr. independent, the real musician',\n", - " 'respect my walk, my talk, my ill decision',\n", - " \"let's ride (let's ride, let's ride)\",\n", - " \"let's ride (let's ride, let's ride)\",\n", - " \"i'm fienin' for a good life. yeah, i'm a dt fan\",\n", - " '음악이 내 직업이지만 난 tv엔 잘 안 나오는 rapper',\n", - " \"i'm an independent musician and i'm proud of it, i feel incredible\",\n", - " '난 어설프게 뛸 바엔 멋지게 걸어',\n", - " '반짝 벌고 떨어질 바엔 난 천천히 벌어',\n", - " \"gutter to the top, i made nothin' to somethin'\",\n", - " \"부정할 수 없지, yeah, i've been workin' and workin'\",\n", - " '적히고 적히는 내 rhyme in my 공책',\n", - " \"studio to venue, where all the microphone's at?\",\n", - " \"oh yeah, i'm everywhere like wi-fi. day time to night time\",\n", - " '거리부터 인터넷, 언제나 늘 tight한',\n", - " '스켸줄에 쫓겨 시간 가는 줄 몰라도',\n", - " \"방이 클럽 안인 듯 i be rockin' all night long\",\n", - " \"i'm on my own, the self made illionaire\",\n", - " '난 내 여자, 내 가족 땜에 일을 해',\n", - " '난 일을 배워왔지, 어렸을 떄부터',\n", - " '내 배는 내가 직접 잘 벌어서 안 굶겨',\n", - " 'put your illionaire signs up',\n", - " '내가 louis 선글라스 쓸 때 니들은 그냥 인상 써',\n", - " '계약서 난 안 써, 잔소리도 안 들어',\n", - " '100프로 내 얘기와 내 맘대로 난 만들어',\n", - " \"내 music, it's ill, i got diamonds on my grills\",\n", - " \"mo' real, mo' skills, mo' thrills, mo' deals\",\n", - " 'mr. independent, the real musician',\n", - " 'respect my walk, my talk, my ill decision',\n", - " \"let's ride (let's ride, let's ride)\",\n", - " \"let's ride (let's ride, let's ride)\",\n", - " 'mr. independent, the real musician',\n", - " 'respect my walk, my talk, my ill decision',\n", - " \"let's ride (let's ride, let's ride)\",\n", - " \"let's ride (let's ride, let's ride)\",\n", - " 'slo야 그거 틀어봐',\n", - " 'i want some roll',\n", - " 'i just want some roll cake',\n", - " 'i wanna go',\n", - " 'i just wanna go there',\n", - " 'i want some roll',\n", - " 'i just want some roll cake',\n", - " 'i wanna go',\n", - " 'i just wanna go there',\n", - " 'whippin’ and whippin’ and whippin’',\n", - " 'and whippin’ the paper',\n", - " 'yeah i call it roll cake',\n", - " 'i’m the best baker',\n", - " 'whippin’ and whippin’ and whippin’',\n", - " 'and whippin’ the paper',\n", - " 'yeah i call it roll cake',\n", - " 'i’m the best baker',\n", - " 'gochild',\n", - " '던져 버렸지 철 지게는 얼마 전에',\n", - " '먼저 물어 이제 넌 지금 얼마를 원해',\n", - " '솔직히 난 hunnit 없어',\n", - " '지금 내 안중엔',\n", - " 'this shit fresh 증명해',\n", - " '내 앞에 선 관중이',\n", - " 'hey yah what time is it now',\n", - " 'yah prime time 나를봐',\n", - " '작당모의한 내년은 ytc4lyf',\n", - " '틀어봐 당장 이런까라 박자는',\n", - " '우리 나와바리란 말이지',\n", - " 'make money',\n", - " 'make money',\n", - " '낱장은됐고 더 겹쳐서 불러',\n", - " 'bakery',\n", - " 'bakery',\n", - " '빳빳한 것들로 말아서 불러',\n", - " 'roll cake roll cake',\n", - " '더 많이 원해높게 높게',\n", - " 'for next birthday zilla',\n", - " 'no 스뎅 rolex',\n", - " 'i want some roll',\n", - " 'i just want some roll cake',\n", - " 'i wanna go',\n", - " 'i just wanna go there',\n", - " 'i want some roll',\n", - " 'i just want some roll cake',\n", - " 'i wanna go',\n", - " 'i just wanna go there',\n", - " 'whippin’ and whippin’ and whippin’',\n", - " 'and whippin’ the paper',\n", - " 'yeah i call it roll cake',\n", - " 'i’m the best baker',\n", - " 'whippin’ and whippin’ and whippin’',\n", - " 'and whippin’ the paper',\n", - " 'yeah i call it roll cake',\n", - " 'i’m the best baker',\n", - " '쩐이 필요 하지 난 꽤 배 고프지',\n", - " '울 엄빠 등골까지',\n", - " '펴 이젠 효도할 때지',\n", - " '이 새 소리로 그치 ppprrrrrr',\n", - " '뭉칫돈이 roll cake 이면',\n", - " '난 이미 제일가는 제빵사지',\n", - " '쇼미 빨이 빠지고나면',\n", - " '결국 내 주머니가 제일 꽉차지',\n", - " 'skrrrrr',\n", - " '곧 우린 전국을 refresh',\n", - " 'prrrrrr',\n", - " 'made by zene 이 소린 존나 lit 해',\n", - " '한참 앞서가지',\n", - " 'like my trap daddy bill stax',\n", - " '지금 이 순간부터',\n", - " '나오는 음악은 나와 비슷해져',\n", - " '가는걸 느낄수밖에',\n", - " '그럼 넌 누구를 들을거야',\n", - " '내가 선두에 서 있어',\n", - " '그럼 넌 누구를 찾을거야',\n", - " '난정말 배고파 가져와 뭉칫돈',\n", - " '더미를 i want some roll cake',\n", - " '아참 i’m the best baker',\n", - " 'i’ll put your money in my pocket',\n", - " 'i want some roll',\n", - " 'i just want some roll cake',\n", - " 'i wanna go',\n", - " 'i just wanna go there',\n", - " 'i want some roll',\n", - " 'i just want some roll cake',\n", - " 'i wanna go',\n", - " 'i just wanna go there',\n", - " 'whippin’ and whippin’ and whippin’',\n", - " 'and whippin’ the paper',\n", - " 'yeah i call it roll cake',\n", - " 'i’m the best baker',\n", - " 'whippin’ and whippin’ and whippin’',\n", - " 'and whippin’ the paper',\n", - " 'yeah i call it roll cake',\n", - " 'i’m the best baker',\n", - " 'okay i’m the best baker 야 야',\n", - " '너네들의 페이스메이커 야 야',\n", - " '내 목에다가 체인 세 겹 야 야',\n", - " '빛나는 미소 고마워 예권',\n", - " '멍청이들은 안 돼 아무리',\n", - " '따라해봐도 (never never)',\n", - " '나는 새꺄 제빵왕이야',\n", - " '김탁구간지로다가임마 (oh yeah)',\n", - " '소보루는 좆까 내 피부는',\n", - " '존나게 깔끔해 oh clean (clean)',\n", - " 'rollcake with some cream',\n", - " '존나게 달콤해 oh sweet (sweet)',\n", - " '핫 뜨거야 롤케익 수두룩 만들어놔',\n", - " '새끼들은 먹어보고 싶어도 못 먹어',\n", - " '내 지갑에 다 들어가 다 들어가 야',\n", - " '오 나 빵을 많이 구워',\n", - " '그 꼴이 마치 그 저 파리바게트',\n", - " '음 목걸이 아래루 목걸이 아래루',\n", - " '목걸이 한 개 더',\n", - " '에이 초까리하게 늘 더 많이 원해',\n", - " '두 손 바리바리루',\n", - " '예 난 카미카제 느낌으로다가',\n", - " '현금박치기 빡빡빡빡빡',\n", - " 'i want some roll',\n", - " 'i just want some roll cake',\n", - " 'i wanna go',\n", - " 'i just wanna go there',\n", - " 'i want some roll',\n", - " 'i just want some roll cake',\n", - " 'i wanna go',\n", - " 'i just wanna go there',\n", - " 'whippin’ and whippin’ and whippin’',\n", - " 'and whippin’ the paper',\n", - " 'yeah i call it roll cake',\n", - " 'i’m the best baker',\n", - " 'whippin’ and whippin’ and whippin’',\n", - " 'and whippin’ the paper',\n", - " 'yeah i call it roll cake',\n", - " 'i’m the best baker',\n", - " \"i'm on my beast mode\",\n", - " 'sipping on',\n", - " '난 절대 안 가르쳐줘 내 비법',\n", - " '내 모두 기겁',\n", - " '처럼 옷을 입어',\n", - " 'like big pun',\n", - " '날으는 bitches, 일으킨 기적',\n", - " '로또에 당첨,',\n", - " 'big blunts',\n", - " \"i'm like grim reaper\",\n", - " 'iphone trapping on a beeper',\n", - " '열두시 반을 넘긴 시간에',\n", - " '사람들의 열기로 열기 가득해',\n", - " '갖은 열정을 다 꺼낸 다음에',\n", - " '바닥에 담배처럼 비벼대',\n", - " '마음이 비어있을 때',\n", - " '어디에도 잘 안 달라 붙을 때',\n", - " '전기처럼 갑자기 올라',\n", - " '온 신경을 다 깨우는 너',\n", - " \"she's so hot 눈에 들어와\",\n", - " \"you'll be mine tonight\",\n", - " \"you're so special girl\",\n", - " '우리 둘이 do it everything',\n", - " \"you'll be like alright\",\n", - " \"i knew it that's my girl\",\n", - " 'what you want',\n", - " 'is more than 내 주머니 right?',\n", - " '오히려 넌 딴 게 궁금하지만',\n", - " '다들 뭔가 착각하고 있는지',\n", - " '안 보이나봐 널 못 꿰뚫어봐',\n", - " '따뜻이 널 데워준 뒤',\n", - " '조금씩 깊이 네게 침투한 뒤',\n", - " '전기처럼 널 자극하면',\n", - " '폭발해버릴지도 몰라',\n", - " \"she's so hot 눈에 들어와\",\n", - " \"you'll be mine tonight\",\n", - " \"you're so special girl\",\n", - " '우리 둘이 do it everything',\n", - " \"you'll be like alright\",\n", - " \"i knew it that's my girl\",\n", - " \"she's so hot 눈에 들어와\",\n", - " \"you'll be mine tonight\",\n", - " \"you're so special girl\",\n", - " '우리 둘이 do it everything',\n", - " \"you'll be like alright\",\n", - " \"i knew it that's my girl\",\n", - " '내 눈에 비친 널 반드시 데리구가',\n", - " \"girl i'mma make u mine tonite\",\n", - " \"내일의 일이 우릴 막아도 i just don't care\",\n", - " \"i'mma spend some time tonite\",\n", - " '그래 너와 함께 나와 같이',\n", - " '밤새 내일이 오면 아쉬움이 남지 않게',\n", - " 'money i got that honey how u like that',\n", - " '우리 둘이면 충분해 저 하늘에 닿기엔',\n", - " 'stay fly~ everydays a party',\n", - " \"젊은데 뭐 어때 let's get retarted\",\n", - " 'one for the money and 2 for the dough',\n", - " 'primary jinbo young king young boss',\n", - " \"she's so hot 눈에 들어와\",\n", - " \"you'll be mine tonight\",\n", - " \"you're so special girl\",\n", - " '우리 둘이 do it everything',\n", - " \"you'll be like alright\",\n", - " \"i knew it that's my girl\",\n", - " \"she's so hot 눈에 들어와\",\n", - " \"you'll be mine tonight\",\n", - " \"you're so special girl\",\n", - " '우리 둘이 do it everything',\n", - " \"you'll be like alright\",\n", - " \"i knew it that's my girl\",\n", - " \"let's dance on the floor, it's like netherlands\",\n", - " '모든 게 새로워 like travel man',\n", - " 'toilet? right over there',\n", - " \"ladies' room? 줄 서보세요\",\n", - " '여보세요, bartender man',\n", - " '목 좀 축이게 give me cocktail',\n", - " 'or lemonade? or gatorade?',\n", - " '\"음, lemonade로 할게\"하는 순간',\n", - " '내 눈에 든 검정색 finger nail (hello)',\n", - " 'hey, 내 이름은 beenzino에요',\n", - " '난 이상한 애 아니에요 not a player',\n", - " 'but i swear no other man is realer',\n", - " '입꼬리를 씰룩거리며 기다렸지',\n", - " '너의 답변 and she says \"스물셋\", \"대학생\"',\n", - " '\"fendi bag\" \"한잔 해\"',\n", - " \"let's dance\",\n", - " 'let me light you up like a candle',\n", - " 'yes, i know how to handle you',\n", - " 'you know that i can handle you',\n", - " 'you know that i can handle you',\n", - " \"let's roll, let's go, let's make some moves\",\n", - " \"baby, let's do some one on one\",\n", - " 'we can do a little one on one',\n", - " 'we can do a little one on one',\n", - " 'we had a little chitchat, 서로 서로 간봤지',\n", - " '이제는 충분해, so girl how you like me?',\n", - " '어린 티 팍팍 내봤자지',\n", - " '스물셋, 너도 알을 나이니',\n", - " '통금? ha, 말 다 했지, 아버진 주무신대',\n", - " '새벽 세 시 반이니까 마음 놔',\n", - " '아무도 널 안 찾아',\n", - " '니 친구는 내 친구한테 짱박혔지',\n", - " '이제 남은 건 너와 나 단둘',\n", - " '오늘은 빼도 박도 못한단 걸 알아둬',\n", - " '뭘 그리 망설이셔? 마음 편히 먹으라고',\n", - " 'you can make yourself at home',\n", - " '아무도 우릴 못봤어',\n", - " '이따 나갈 때 얼굴 가려도 돼 내 모자로',\n", - " \"i don't know you know\",\n", - " \"i don't know, you know\",\n", - " \"i don't know, you know\",\n", - " 'damn',\n", - " 'let me light you up like a candle',\n", - " 'yes, i know how to handle you',\n", - " 'you know that i can handle you',\n", - " 'you know that i can handle you',\n", - " \"let's roll, let's go, let's make some moves\",\n", - " \"baby, let's do some one on one\",\n", - " 'we can do a little one on one',\n", - " 'we can do a little one on one',\n", - " '다리 같이 꼬인 태도. 아까랑 딴판이지',\n", - " '넌 변해버렸어, before, after',\n", - " '참 못됐어, 넌, 차라리 말을 말지',\n", - " '건방지게 발음하지, \"get out of my way\"',\n", - " '음, 그만 가봐도 돼, 너는 가방을 매',\n", - " '난 인사를 건내며 또 담배를 태웠고 너털 웃음을 짓지',\n", - " '남자들아 들어라, 이때 울으면 gg',\n", - " '지기 싫어? 움직이셔',\n", - " '이대로 죽기 싫어서 계속된 내 show',\n", - " '미소로 꽉꽉 채워 놓은 얼굴로 등장했지, 내가',\n", - " '\"yo, ladies wassup?\" (hi)',\n", - " \"let's dance on the floor, 처음인 듯이\",\n", - " '고개를 끄덕이며 거울을 보지',\n", - " '얼음 녹이듯 홀을 누비는 내 태도는 불량해',\n", - " 'fuck the police',\n", - " 'let me light you up like a candle',\n", - " 'yes, i know how to handle you',\n", - " 'you know that i can handle you',\n", - " 'you know that i can handle you',\n", - " \"let's roll, let's go, let's make some moves\",\n", - " \"baby, let's do some one on one\",\n", - " 'we can do a little one on one',\n", - " 'we can do a little one on one',\n", - " 'sunny day sunny day',\n", - " '내리 쬐는 태양 아래 지금 무얼 찾아 헤매',\n", - " 'anywhere anywhere',\n", - " '그 어디가 됐든 떠나',\n", - " '지금 숨이 막혀 hottest',\n", - " \"i don't wanna sleep tonight\",\n", - " 'call me up baby',\n", - " \"i don't care i don't care\",\n", - " '더위만큼 지루한 시간을 날려버려',\n", - " 'right now',\n", - " '더 뜨겁게 high 타오르잖아',\n", - " '원해 난',\n", - " '더 과감해져',\n", - " '짜릿한 느낌 좋아',\n", - " '터트려줘 이 무드에 취해서',\n", - " 'i feel fine feel so fine',\n", - " 'so turn it up',\n", - " '하고 싶잖아 불태워봐 우리만의 party',\n", - " 'got no time to look at my eyes',\n", - " 'look at my eyes',\n", - " 'oh hold me baby',\n", - " 'somebody tell me tell me',\n", - " 'somebody help me help me',\n", - " 'i really want him want him',\n", - " 'call me call me call me call me',\n", - " 'want him want him like a grenade',\n", - " '나와 함께 해',\n", - " '지금 이 순간이 지나가기 전에',\n", - " '불어 시원하게',\n", - " '바람이 우리를 감싸 안아주네',\n", - " '같이하고 싶은 밤',\n", - " '어둠 속에서 난 피어나',\n", - " '서로에게 빛이 되어',\n", - " '더 기다려주지 않아',\n", - " '시간은 계속 지나 둘이',\n", - " 'got us two on fire 더는 참지 않을래',\n", - " '더 뜨겁게 high 타오르잖아',\n", - " '변해 난',\n", - " ...]},\n", - " 'data': ['everybody welcome to beverly hills',\n", - " 'where the dreams come true',\n", - " 'yeah, i’m at the top so high',\n", - " 'welcome to beverly hills',\n", - " '맑은 공기, 다른 시야',\n", - " '다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'yeah, i’m at the top so high',\n", - " 'welcome to beverly hills',\n", - " '맑은 공기, 다른 시야',\n", - " '다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " \"yo, i'm back on my grind, yeah\",\n", - " '긴 show는 끝났어, 난 집에 와서 다시 가방을 싸네',\n", - " 'featuring 녹음 몇 개 하고 공연하러 미국에 감에',\n", - " \"no rest, tour let's start the show like common and kanye\",\n", - " '솔직히 이제 촬영은 질렸지',\n", - " '내가 하고싶은 건 real show, real track과 rap',\n", - " \"yo, i'm outta death row, 이건 aftermath\",\n", - " '새 노래를 만들었지 어젯밤에',\n", - " '그리고 들어갈 거야 새 album에',\n", - " 'coming soon motherfucker new lp',\n", - " '그동안 찍고 있어 넌 selfie',\n", - " '11년 동안 11장의 album을 냈지만',\n", - " '어제 데뷔한 것처럼 kill shit, yeah',\n", - " '아직도 rap을 빠르게만 하면 잘하는 줄 아는 놈들',\n", - " '이건 100미터 달리기가 아냐, 느껴봐라, 이 음악의 영혼을',\n", - " '뭐 그렇다고 해도, you know, bewhy는 잘하지 물론',\n", - " '1ll recognize 1ll motherfucker',\n", - " \"we be chillin' at the motherfuckin'...\",\n", - " 'yeah, i’m at the top so high',\n", - " 'welcome to beverly hills',\n", - " '맑은 공기, 다른 시야',\n", - " '다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'yeah, i’m at the top so high',\n", - " 'welcome to beverly hills',\n", - " '맑은 공기, 다른 시야',\n", - " '다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'welcome to beverly hills, beverly hills',\n", - " '제3의 눈 덕분에 이미 난 너네 머리 위',\n", - " '500짜리 노예 계약에서 mr. indenpent',\n", - " '1llionaire motherfucker, 이게 내 길이지',\n", - " 'la scala beef bolognese beverly hills',\n", - " '수제 lemonade 한 잔이면 배부르지',\n", - " 'natural nine over eight - my gambling skill',\n", - " '날 엿 먹이는 놈들 입에 돼 물리지',\n", - " '개소리는 집어치우고 부자가 된 적 없듯',\n", - " '돈 벌어 달에 억이 이젠 average지',\n", - " 'hip-hop은 가난 하단 것은 깨버린지',\n", - " '오래, 보란 듯이 백만장자 돼버리기',\n", - " \"let's go get the money, go get the money\",\n", - " 'go get the money, go get the money, go',\n", - " '고갤 끄덕거려, 갤 끄덕거려',\n", - " '고갤 끄덕거려, 갤 끄덕거려, ohh',\n", - " '뭐든 쉽지 뭐를 하든 간에 난 안 지침',\n", - " 'rap은 그냥 미침, 뒷짐 지고 헛 기침하며',\n", - " \"꼰대같이 일침 할 때 i ain't bitchin'\",\n", - " \"i be eatin' rice, feeling nice\",\n", - " 'building price, killing guys',\n", - " \"in disguise, flip this dice, mill' on count\",\n", - " '1lly life, billing top, city lights, woah',\n", - " '요즘은 이런 track 위에 rap하며',\n", - " 'dab하면 하찮게 여기는 게 swag',\n", - " 'no benz, no chains, rolex, 스냅백',\n", - " '부끄러워하며 피하는 게 swag',\n", - " '닥쳐, 내 꼴리는 대로 하는 게 내 hip-hop',\n", - " 'trap이든 boom bap이든 어떤 rhythm이든',\n", - " '너희들보단 나니까',\n", - " 'yeah, i’m at the top so high',\n", - " 'welcome to beverly hills',\n", - " '맑은 공기, 다른 시야',\n", - " '다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'yeah, i’m at the top so high',\n", - " 'welcome to beverly hills',\n", - " '맑은 공기, 다른 시야',\n", - " '다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'yeah, i’m at the top so high',\n", - " 'welcome to beverly hills',\n", - " '맑은 공기, 다른 시야',\n", - " '다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " 'beverly hills, beverly hills',\n", - " '모두 다 welcome to beverly hills',\n", - " \"1llionaire, we're gettin' money outta here boy\",\n", - " 'spring, summer, fall, winter',\n", - " \"aye, yea let's get it\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " 'get money season, 봄, 여름, 가을, 겨울',\n", - " '풍요롭게 지내, uh, uh',\n", - " '나는 겨우 사거나 어려움을 겪지 않네',\n", - " '버는 돈이 니들 나이처럼 적지 않네',\n", - " '절대 먹지 않네 조금 식은 음식',\n", - " \"i'm gettin' hella cheese, 사진을 찍은 듯이\",\n", - " '난 십분도 쉬지 않고 뭐든 쉬운 듯 일하지',\n", - " '1lly, 1ll이 좀 많아, 그런 깊은 뜻이',\n", - " '막돼먹은 이런 hip-hop으로 돈을 잘 버네',\n", - " '외면하던 놈들 이제 와서 날 보네',\n", - " '그런 얌체 같은 놈들 이제 내가 깔보네',\n", - " '뭐든 뚜껑 열어 봐야 아는 법, calzone',\n", - " '알로에 한잔 마시고',\n", - " '5억짜리 귀신 차 시동',\n", - " '부릉 부릉 소리 나시고',\n", - " '서울에 비가 오면 날씨 좋은 곳으로',\n", - " \"뜨는 게 내 취미 i'mma ball\",\n", - " \"biggest man up in this game but i ain't tall\",\n", - " '뭐든 만족하지 못해 하나론',\n", - " '오늘도 열심히 돈 벌러 gotta go',\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " 'it’s like one rollie, two rollie, three rollie, four',\n", - " 'two chains, three chains, four and couple mo',\n", - " '차가 둘, 셋, 넷, 오늘 뭘 탈지 고르고',\n", - " '내 지갑은 늘 뚱뚱, my pocket gordo',\n", - " '어제는 fiji. 그저껜 홍콩',\n", - " '오늘은 van city, 다음은 toronto',\n", - " '새해론 dubai, 세계 방방곡곡 잘 돌아다니네',\n", - " '못 따라오지 홍길동도',\n", - " '난 통도 크게 기분 대로 맘껏 쏘지',\n", - " 'young king, young boss, young og',\n", - " 'in this motherfucker i be runnin shit',\n", - " '많은 걸 이뤄냈지만 아직도 어리지',\n", - " '어제보단 나은 오늘, 오늘보다 쩌는 내일',\n", - " \"mission complete well i ain't fuckin fail\",\n", - " '제일 잘 나가는 젊은 대한민국 대표 rapstar',\n", - " '여전히 연예인이 아닌 그냥 rapstar',\n", - " '내 style 대로 지키는 나의 품위',\n", - " '태권도 flow, 검은 띠, 니들은 품띠',\n", - " '이제 와서 hip-hop 한다 설치는 idol이나 rapper',\n", - " '너네들 다 늦었으, 이곳은 이미 내 꺼',\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"biatch, i'm riatch, ho\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " \"eyday i'm gettin' rich bish, rich bish\",\n", - " '난 놀면서도 돈을 버네 (난 놀면서도 돈을 버네)',\n", - " '자면서도 돈을 버네 (자면서도 돈을 버네)',\n", - " '돈을 쓰면서도 돈을 버네 (돈을 쓰면서도 돈을 버네)',\n", - " '돈을 벌면서도 돈을 버네 (돈을 벌면서도 돈을 버네)',\n", - " '난 놀면서도 돈을 버네 (난 놀면서도 돈을 버네)',\n", - " '자면서도 돈을 버네 (자면서도 돈을 버네)',\n", - " '돈을 쓰면서도 돈을 버네 (돈을 쓰면서도 돈을 버네)',\n", - " 'heh, whoop',\n", - " 'get up in the morning',\n", - " \"looked around and ain't nothing changed\",\n", - " \"and i can't be living like this\",\n", - " 'so this is what i said',\n", - " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", - " \"pedal to the metal, bitch, i'm all in\",\n", - " 'do the same if you winning fifty one (seoul)',\n", - " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", - " \"pedal to the metal, bitch, i'm all in\",\n", - " 'do the same if you winning fifty one',\n", - " 'uh, 첫째로 나를 알어? bitch',\n", - " 'no, 너는 반의 반을 알어, bitch',\n", - " '모른다면 오늘밤은 나를 안어',\n", - " '나를 닮은 애를 낳아, i know you fuck with this',\n", - " \"okay, now i'm startin' up\",\n", - " 'kush in the bong, hash in the pot',\n", - " \"okay, now i'm stirring up\",\n", - " 'tick to the tock, now the games locked',\n", - " \"no, i ain't welcoming y'all\",\n", - " '기회는 끼니와 달라',\n", - " '놓치면 싹 다 무너질 dominoes (yeah)',\n", - " '누구나 인생은 도박 아니면 도망',\n", - " '51%가 넘는다면 고민 말어, 걸어 몽땅 (okay)',\n", - " '돌을 던진다면 받아 성을 쌓아',\n", - " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", - " \"pedal to the metal, bitch, i'm all in\",\n", - " 'do the same if you winning fifty one',\n", - " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", - " \"pedal to the metal, bitch, i'm all in\",\n", - " 'do the same if you winning fifty one',\n", - " 'uh, 둘째로 칼을 갈어, bitch',\n", - " 'hah, 후회는 필요찮아, not a bit',\n", - " '모든 실패는 가르침 (okay)',\n", - " '무너진다면 여기에 영원히 잠들지 (for real)',\n", - " '남김없이 싹 다 걸어버려',\n", - " \"stake's high, still fuck the flop (fuck that shit)\",\n", - " '상상못해 다음장',\n", - " 'pocket rockets, 다음 단계는 주식상장 (yeah)',\n", - " '내 손에는 건전지처럼 double a, 쥐어졌지',\n", - " '그러니까 나는 겁없이 가진 전부를 걸었지 (okay)',\n", - " '한다리만 걸치고 눈치보는 새끼들 주머니를 털어',\n", - " '한국은 안돼? 얼마를 깔래? 네 혓바닥 걸어, bitch (seoul)',\n", - " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", - " \"pedal to the metal, bitch, i'm all in\",\n", - " 'do the same if you winning fifty one (seoul)',\n", - " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", - " \"pedal to the metal, bitch, i'm all in\",\n", - " 'do the same if you winning fifty one',\n", - " '이 바닥은 널 망하게 할 수 있는 강원랜드',\n", - " '재미보러 왔던 곳이었는데 또 어느새',\n", - " '항상 갇혀 있는 것만 같지, 마치 감옥에',\n", - " '조심해, 잘못하단 너도 빈털털이 돼',\n", - " 'slot machine을 땡기듯 한푼 두푼 땡기다',\n", - " '작품성이 아닌 오로지 수익만을 챙기다',\n", - " '술과 인기에 취해서 생각없는 냄비만',\n", - " '먹다보니 남는 것은 라면 먹는 냄비다',\n", - " '처음부터 이길 수가 없었던 사기',\n", - " '모든 것을 잃은 후엔 결국 영혼을 팔지',\n", - " '이건 바다 이야기가 너의 이야기',\n", - " '아니면 나의 이야기, 오늘도 전부를 걸지, yeah',\n", - " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", - " \"pedal to the metal, bitch, i'm all in\",\n", - " 'do the same if you winning fifty one (seoul)',\n", - " \"said i'm all in, burn the bridge behind cause i'm all in\",\n", - " \"pedal to the metal, bitch, i'm all in\",\n", - " 'do the same if you winning fifty one',\n", - " '네가 바로 내 기쁨. 어린 아이 된 기분',\n", - " '네 생각 안 하고 버티기 길어봐야 10분',\n", - " '지금 너와 내 사이, 냉정과 열정 사이',\n", - " '어떻게라도 좋아 if i could keep you right beside me',\n", - " '네 얼굴은 조각 같이 너무 아름다워',\n", - " '너만 보면 난 동상 같이 얼어, my superstar',\n", - " '넌 한 마리 butterfly, 꽃밭의 나비효과',\n", - " '작은 미소에 내 맘 속에는 폭풍이 일잖아',\n", - " '더 달아나 봐. 날아가 봐. 이 참에 나를 좀 알아가 봐',\n", - " '남자는 애 아님 개라잖아. 다른 놈 매 같이 채가잖아 (ah)',\n", - " '지금까지 못 느껴 본 사랑 줄게',\n", - " \"i'll be your james bond. 끝까지 널\",\n", - " 'you got me losing my mind the way you got me fired up',\n", - " 'never give up, boy, even when they try us',\n", - " 'you and me against the world',\n", - " 'with you i ride or die tonight',\n", - " 'you have my heart like the beat the way you got me turned up',\n", - " 'never give up boy even when they try us',\n", - " 'you and me against the world',\n", - " 'with you i ride or die tonight',\n", - " 'ah, yep',\n", - " '내가 지루한 현실주의자라면 넌 몽상가',\n", - " '너 가는 곳이라면 꿈 속이라도 쫓아가',\n", - " '저 푸른 초원 위 그림 같은 집을 짓고',\n", - " '네 약지 손가락 위 엄지만한 다이아 찍고',\n", - " '세상을 선물할게. 넌 그 주인이 돼주면 돼',\n", - " '이건 미친 사랑 노래. 넌 그 주인공이 돼주면 돼',\n", - " \"내 달력은 새빨개. 왜? 'cause everyday is your birthday\",\n", - " \"내 달력은 새빨개. 왜? 'cause everyday is your birthday\",\n", - " '잘 들어나 봐. 들어와 봐. 제발 날 그만 좀 들었다 놔',\n", - " '한 입 가지고 두 말 할까 봐? 소꿉장난은 그만 할까 봐, nah',\n", - " 'we ride or die. 너는 bonnie, 나는 clyde',\n", - " '우리에게 내일은 없다. tonight',\n", - " 'you got me losing my mind the way you got me fired up',\n", - " 'never give up, boy, even when they try us',\n", - " 'you and me against the world',\n", - " 'with you i ride or die tonight',\n", - " 'you have my heart like the beat the way you got me turned up',\n", - " 'never give up boy even when they try us',\n", - " 'you and me against the world',\n", - " 'with you i ride or die tonight',\n", - " 'me and my girlfriend, we ride or die',\n", - " \"me and my girlfriend (i'm crazy)\",\n", - " 'me and my girlfriend, we ride or die',\n", - " \"me and my girlfriend (i'm crazy)\",\n", - " 'me and my girlfriend, we ride or die',\n", - " \"me and my girlfriend (i'm crazy)\",\n", - " 'me and my girlfriend, we ride or die',\n", - " \"me and my girlfriend (i'm crazy)\",\n", - " 'you got me losing my mind the way you got me fired up',\n", - " 'never give up, lady, even when they try us',\n", - " 'you and me against the world',\n", - " 'with you i ride or die tonight',\n", - " 'you have my heart like the beat the way you got me turned up',\n", - " 'never give up boy even when they try us',\n", - " 'you and me against the world',\n", - " 'with you i ride or die tonight',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'under rapper들의 연봉, 그건 내 손목의 시계 money',\n", - " '또 돈 벌러 갈 시간이네, 시곌 보니',\n", - " 'illionaire, 전국 길에 여기저기 매장 밖에 걸린 사진',\n", - " '우린 니네 머리 위에서 뛰어다니며 놀지',\n", - " '따라잡았다 싶을 때 또 앞서 가네 저 멀리',\n", - " 'at rodeo, beverly, 옷에 3천을 딱 걸지만',\n", - " '괜찮아. 뭐, 한두 달이면 썼던 돈을 다 벌지',\n", - " '내 몸값은 늘 올라, amigos',\n", - " 'versace, givenchy, balmain, yeah i need those',\n", - " '아직도 안 믿고 날 씹고 아니꼬워하는',\n", - " '놈들에겐 관심조차 없어. 난 뒤도 안돌아',\n", - " '스물하나에는 1억, 스물둘엔 거의 2억',\n", - " \"그럼 스물셋엔 더? hell yeah, i'm gettin' bigger\",\n", - " 'with the quiett and beenzino, we the illionaire gambino',\n", - " '다 물러나, 저 뒤로. 누가 감히들 댐비노?',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'i love my life, how about you?',\n", - " 'fuck the price, 일단 바구니에 담아둬',\n", - " \"분더샵 shopper, i don't shop in karmaloop\",\n", - " 'got rolex, already. 다음은 차라고',\n", - " 'i treat my girlfriend like it is her birthday',\n", - " '월요일에는 현대, 화요일에는 롯데',\n", - " '수요일에는 rodeo, 목요일에는 워커힐',\n", - " '금요일엔 10 corso como에 가서 comme des',\n", - " 'you can call me 지름신, or 힙합 입씨름신',\n", - " 'yves saint laurent 신을 신고 신고식을 치르지만',\n", - " \"alright, i don't give a shit. 언제나 어김 없이\",\n", - " '섭외가 끊임없지. 너무 좋아, 내 직업이',\n", - " 'and let the haters hate on me. 걔네가 늘상 해온 일',\n", - " '말릴 생각은 없어. 증오는 몸에 해롭지',\n", - " '난 좋은 것만 보고 듣고, 좋은 것만 배웠으니',\n", - " '이 자리에 왔지. my clique, you know what it is',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'fuck bad bitches, yeah, i fuck bad bitches',\n", - " 'good girl gone bad, gone bed with me',\n", - " 'illionaire, 여자들이 앵기지',\n", - " 'fuck love, 난 돈을 챙기지',\n", - " 'rap flow winner with chanel chain',\n", - " 'steaks for my dinner, 그게 내 웰빙',\n", - " 'dok2와 zino, illionaire gang',\n", - " \"yeah, we ballin' like lebron, dwayne wade\",\n", - " 'top class muhfuckas on one',\n", - " '우리 공연에 오는 게 그녀들의 소원',\n", - " '불과 몇십 초만에 매진되는 콘서트 티켓',\n", - " '다음날 딱 열 배 비싸게 파는 bitches',\n", - " \"이 얘긴 나에게는 현실, 허나 너에겐 swaggin'\",\n", - " 'illionaire the rap stars, 니넨 그냥 행인',\n", - " \"bitches actin', my money stackin'\",\n", - " \"rappers wackin', muhfucka i'm gangin', wussup\",\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'illionaire gang, illi-illionaire gang',\n", - " 'hahaaaha yea yeah',\n", - " 'i feel good right now',\n", - " 'just stay with me tonight girl',\n", - " \"let's go\",\n", - " \"girl girl baby don't leave tonight\",\n", - " 'i know you heard heard',\n", - " 'me stay with me tonight yeah',\n", - " \"girl girl baby don't leave tonight\",\n", - " 'i know you heard heard',\n", - " 'me stay with me tonight yeah',\n", - " 'girl girl girl girl',\n", - " 'baby girl girl girl girl bbaby',\n", - " 'girl girl girl girl baby',\n", - " 'girl girl girl girl',\n", - " 'check it out now',\n", - " 'girl girl',\n", - " '오늘따라 더 예뻐 보이는듯 해',\n", - " '더 가까이 내 옆으로 와',\n", - " '내 몸은 자동적으로 이끌려',\n", - " '니 곁으로 가',\n", - " '놀라 거울을 봐',\n", - " '놀라하지도 마',\n", - " '너와 함께라서 더 아름다운',\n", - " '오늘의 이 서울의 밤',\n", - " \"yeah let's do it right now\",\n", - " '우리의 사랑은 서로에게',\n", - " \"let's propin right now\",\n", - " \"let's make it groovin night ma\",\n", - " 'just say yes say yes',\n", - " '아니라고 말하지마',\n", - " 'just say yes say yes',\n", - " '우리에게 필요한 건 오직 우리 둘',\n", - " '물이 흐르는 것처럼 밤새',\n", - " 'i just wanna flow with you',\n", - " \"i'm luvin who\",\n", - " \"i'm luvin you\",\n", - " '두 말하면 잔소리',\n", - " '오늘따라 짙게 거칠게 느껴지는',\n", - " '니 숨소리와 숨냄새',\n", - " '그 향기에 취해',\n", - " \"cuz i'm a jk\",\n", - " \"i'll be drunken n a tiger\",\n", - " \"you ain't a t\",\n", - " \"but you're ma baby lady\",\n", - " '내 품에 안겨',\n", - " '조금 더 가까이 와',\n", - " '더 나를 당겨',\n", - " '이제 마음 비워',\n", - " '다시 말할게 한번',\n", - " 'listen',\n", - " \"girl girl baby don't leave tonight\",\n", - " 'i know you heard heard',\n", - " 'me stay with me tonight yeah',\n", - " \"girl girl baby don't leave tonight\",\n", - " 'i know you heard heard',\n", - " 'me stay with me tonight yeah',\n", - " 'girl girl girl girl baby',\n", - " 'girl girl girl girl bbaby',\n", - " 'girl girl girl girl baby',\n", - " 'girl girl girl girl',\n", - " '아직 가지마요',\n", - " 'stay with me tonight girl',\n", - " '조금만 더 있어줘',\n", - " 'never have a gonna miss you',\n", - " 'ma baby girl',\n", - " '내 곁으로 와',\n", - " 'just hold me down',\n", - " 'hold me down',\n", - " '아직 가지마요',\n", - " 'stay with me tonight girl',\n", - " '조금만 더 있어줘',\n", - " 'never have a gonna miss you',\n", - " 'ma baby girl',\n", - " '내 곁으로 와',\n", - " 'just hold me down',\n", - " 'i want you want you want you',\n", - " 'i want you want you want you',\n", - " 'i want you want you want you',\n", - " 'i want you want you want you',\n", - " 'the qay',\n", - " 'babe girl listen',\n", - " '난 오직 너 땜에 숨 쉬어',\n", - " '내일이 어떻게 되든',\n", - " '오늘 밤은 너와 함께해야 겠어',\n", - " '의심 하지마',\n", - " '절대 내 사랑은 거짓이 아냐',\n", - " '나 보다 멋진 놈 많아도',\n", - " '나 처럼 널 사랑할 수 있는 사람은',\n", - " '오직 나 하나',\n", - " '잠깐만 babe 이런 날 두고',\n", - " '대체 어딜 가려구',\n", - " '널 위한 내가 여기 있는데',\n", - " '곰인형 끌어안고 자려구',\n", - " 'hhh 굳이 말 안 해도 알고 있어',\n", - " 'you want me too',\n", - " \"girl you already know ain't nobody\",\n", - " 'luvs you like the quiett do',\n", - " '보여 줬지 지금껏',\n", - " '너도 느끼고 있을 걸',\n", - " '내 사랑은 어머니의 사랑만큼이나',\n", - " '넓고 깊은걸',\n", - " '걱정 같은 건 던져 버려',\n", - " 'babe 하룻밤 만에 식는 그런',\n", - " '사랑이 아냐 이건',\n", - " 'mary j 처럼 real love',\n", - " 'feel this luv',\n", - " '할 말은 더 많지만 잠시',\n", - " 'yeah 이제 우리가 움직일 차례지',\n", - " 'movin like hip hop kissin like rnb',\n", - " '보여줘 babe',\n", - " '니가 날 얼마나 원하는지',\n", - " \"girl girl baby don't leave tonight\",\n", - " 'i know you heard heard',\n", - " 'me stay with me tonight yeah',\n", - " \"girl girl baby don't leave tonight\",\n", - " 'i know you heard heard',\n", - " 'me stay with me tonight yeah',\n", - " 'girl girl girl girl baby',\n", - " 'girl girl girl girl bbaby',\n", - " 'girl girl girl girl baby',\n", - " 'girl girl girl girl baby',\n", - " '아직 가지마요',\n", - " 'stay with me tonight girl',\n", - " '조금만 더 있어줘',\n", - " 'never have a gonna miss you',\n", - " 'ma baby girl',\n", - " '내 곁으로 와',\n", - " 'just hold me down',\n", - " 'hold me down',\n", - " '아직 가지마요',\n", - " 'stay with me tonight girl',\n", - " '조금만 더 있어줘',\n", - " 'never have a gonna miss you',\n", - " 'ma baby girl',\n", - " '내 곁으로 와',\n", - " 'just hold me down',\n", - " 'i want you want you want you',\n", - " 'i want you want you want you',\n", - " 'i want you want you want you',\n", - " 'i want you want you want you',\n", - " 'got 20 plus models on and bitches mad',\n", - " 'well bitch you crazy, 걔넨 나한테 관심없어',\n", - " '예쁜 미소로 너를 반길 땐 only 탑승 전과 짐을 나를 때',\n", - " '아님 dishing out on 장거리 비행',\n", - " 'fake oxygen은 pumped, 옆자리 bitch bunch a cunts',\n", - " '중간에 껴서 창가 앉은 박아 새끼 내 팔걸이 거는 꼴이',\n", - " '아님 these babies fucking mad, 아님 옆자리 코골 때',\n", - " '아님 복도자리를 탐한 아주머니와 자리 바꿔드릴 때',\n", - " 'from fucking shanghai to melbourne to tennessee chattanooga',\n", - " 'i fucks with my city, my home town, my 송파, let’s get it, uh',\n", - " \"when i'm on that thang\",\n", - " \"i don't even think fucking i just want to land\",\n", - " '제발 같은 시차, 제발 같은 집에서',\n", - " '일어나서 일하러 가고 싶어',\n", - " \"fuck you know man, i don't like no changes\",\n", - " \"i don't need no class, wanna buy no more tickets\",\n", - " 'uh, flying 해외는 되도록 피해',\n", - " 'travel domestic them tickets you keep it',\n", - " '버스 아님 자가용 bitches i pick up',\n", - " \"and bitch they hate me and bitch they bitchin'\",\n", - " \"and chasing their dollars and bitch i ain't paying though\",\n", - " \"pay your shit i ain't eating that\",\n", - " '약빨 듣지도 않아 이 귀 밑엔, uh',\n", - " 'chicken or beef 난 안 먹어',\n", - " '승무원 좋지, 다들 tight한 skirt에',\n", - " '승무원 좋지, 다들 nice한 body',\n", - " '승무원 좋지, 다들 상냥한 게',\n", - " '내 꿈에 그리던 올백 머리 too',\n", - " '풍부해 보여 그녀들의 머리 숱',\n", - " \"when i'm on that thang\",\n", - " \"i don't even think fucking i just want to land\",\n", - " '제발 같은 시차, 제발 같은 집',\n", - " '제발 같은 시차, 집-',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'we go crazy like we just pop some molly',\n", - " '느낌이 아주 좋아, 대충 오지 감이',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'we go crazy like we just pop some molly',\n", - " '느낌이 아주 좋아, 대충 오지 감이',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'yelows mob, yeah, we the crew',\n", - " '얽매이지 않는 댔잖아, we fuck the rules',\n", - " '우린 잘하고 있어, fly like a bird',\n", - " '이미 다 알고있어 like we don’t need to learn anymore',\n", - " 'groovyroom track에 메세지를 보내',\n", - " '병신새끼들, 나가서 바람이나 좀 쐐',\n", - " '우리는 하고싶은 대로 다 하고',\n", - " '전부 다 가져갈 꺼야',\n", - " '우린 음악으로 보여줄 꺼라서',\n", - " '노래 만들고 또 작업하러 가',\n", - " 'we be yelows mobbin',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'we go crazy like we just pop some molly',\n", - " '느낌이 아주 좋아, 대충 오지 감이',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'we go crazy like we just pop some molly',\n", - " '느낌이 아주 좋아, 대충 오지 감이',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'yelows mob, yeah, we the fam',\n", - " '정성민, 정광민, 백재훈',\n", - " '이광민은 좀 위험해',\n", - " 'cause all they do is killing fashion',\n", - " '간지를 챙겨, 2009 jiggy fellaz',\n", - " '우린 너희랑 어울리는 일',\n", - " '자체를 못한다고 시시해서',\n", - " 'and we gotta keep it lowkey',\n", - " 'we be plottin and mobbin on the low',\n", - " 'even tho you trynna kill the music and the fashion',\n", - " '우리보다 어차피 멋없어',\n", - " '나는 기다리고 있지',\n", - " '우리들이 얻을 호화로운 것들',\n", - " '그리고 나는 기다리고 있지',\n", - " 'herr nayne이 한국에 돌아오는 거',\n", - " 'we be yelows mobbin',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'we go crazy like we just pop some molly',\n", - " '느낌이 아주 좋아, 대충 오지 감이',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'we go crazy like we just pop some molly',\n", - " '느낌이 아주 좋아, 대충 오지 감이',\n", - " 'now i’m with my homies we be yelows mobbin',\n", - " 'yeah',\n", - " 'yelows mobbin',\n", - " 'yelows mobbin',\n", - " 'yelows mobbin',\n", - " 'it’s a groovyroom track',\n", - " '11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " '11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " \"the world is ours, gettin' money and the power\",\n", - " 'turn down for nothing, a team of the hour',\n", - " '시간은 11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " \"sample clear는 다 됐고, i'm back in my studio\",\n", - " '다행히 pay는 아직도 예전 그대로네',\n", - " '역시 fan들 밖에 없다네, so fuck the haters out there',\n", - " '내가 싫다면 어서 나가, 여서 너가 건질 건 오직 질투 밖에',\n", - " \"i'm on another level, 여긴 딴 세상 같애 (woah)\",\n", - " \"내가 내뱉는 rap으로 i'm makin' big money, 내 계좌 안엔 (woah)\",\n", - " '늘 내 예상보다 더 많은 액수가 있어',\n", - " '난 매일 새 옷의 택을 뗄 수도 있어',\n", - " \"but i'm so ambitious, 매순간 있어 난 작업실에 (woah)\",\n", - " \"man, i don't give a shit about what you think, i like the life i live\",\n", - " 'no fake shit, 절대 하기 싫은 일 따윈 안 하지',\n", - " '또 내 철칙은 변치 않지 너와 달리',\n", - " '또 너흰 절대로 본 적 없지, 나 같은 놈을 봤니? (no!)',\n", - " \"i'm the fuckin' only one, and i don't pop molly, too\",\n", - " \"illionaire, we the fuckin' top threes\",\n", - " \"we on tour, what you waitin' for?\",\n", - " '수목금토일월화, 우리가 사는 방식',\n", - " \"swaggin' out for 24/7, 타협 같은 거 없이 we go straight\",\n", - " \"let's get it\",\n", - " '11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " '11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " \"the world is ours, gettin' money and the power\",\n", - " 'turn down for nothing, a team of the hour',\n", - " '시간은 11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " '1 for the money',\n", - " '2 for the bitches, 3 for the rolexes, 난 전부 다 원해',\n", - " '이미 다 있지 but 그보다 훨씬 더 많은 걸 원해',\n", - " '이제 내가 뭘 할지 너는 조금도 감 잡을 수 없어',\n", - " '그게 뭐든 간에, 알잖아, q에게 불가능은 없네',\n", - " '그건 하나의 견해',\n", - " '수십년 묵은 생각들은 변해',\n", - " '반대자들은 과민하게 행동해도 마음 한 켠에선 날 동경해',\n", - " 'hustle and hustle and hustle and grind',\n", - " 'rehearsal은 없어 임마, 현실을 봐',\n", - " '가끔씩 가사에 헛소릴 썼어도 잘 살고 있어, 내 현실을 봐',\n", - " 'fuck, maintain and shit',\n", - " \"this ballin' is real, ain't hashtag and shit\",\n", - " '이건 우리가 만든 인생이지, 니가 느끼는 건 시샘이지',\n", - " '괜찮아, 그건 자연스런 reaction, 니 걸 찾아 질투 시기 대신',\n", - " 'what the fuck is going on right now?',\n", - " \"countin' my 신사임당, 그녀는 나의 조상, now\",\n", - " 'a muhfucker came from the gutter',\n", - " \"더 큰 돈을 벌어, bish, shut up, i'm a don, now\",\n", - " '시간은 11시 11분, 발걸음을 무대에 올리지, illionaire time, now',\n", - " '11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " '11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " \"the world is ours, gettin' money and the power\",\n", - " 'turn down for nothing, a team of the hour',\n", - " '시간은 11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " '니가 쉽게 얻은 자린 누구든 쉽게 앉지',\n", - " '쉽게 등을 돌릴 너의 잘난 fan도',\n", - " '밑바닥에서 이뤄온 내 자리는 누구에게도 안 뺏겨',\n", - " \"real rap money, yain't know\",\n", - " '난 내일도 모레도 1분 1초가 멀다하게 위로 가, 제일로',\n", - " '굳이 설치지 않아도 알아줘, 알아서 그려진 머리 위 halo',\n", - " 'hello, wassup, what it do, aloha',\n", - " '난 너와 친군 안 해, 다 시간 낭비, 난 말 안 놓아',\n", - " '돈은 벌고 쓰고 쓴 돈보다 더 벌지, 너나 잘 모아',\n", - " '아직 뭐 젊은데 뭘 걱정하니, 맘 놓아',\n", - " \"let's get it then, 내 바람들은 스쳐가지 않고 현실이 돼\",\n", - " \"illionaire, million here, we be killin' em there\",\n", - " 'come fuck with me, yeah, hah',\n", - " 'worldwide stunna, 전 세계에서 내게 전활 걸어',\n", - " '늘 돈 잘 벌어, 매일 건방 떨어, 난 자신해 확실한 것만 열어',\n", - " '여러 rapper들 다 데려와서 물어',\n", - " 'rap 하나로 꿈을 이룬 그 사람이 누구?',\n", - " '부정할 수 없는 사실, 부러우면 꿇어',\n", - " '나는 불어, 줄어들지 않아, 매순간 또 늘어, get rich',\n", - " 'okay now, fuck with me, you know i got it',\n", - " \"if it ain't about money, bitch, 닥쳐 아가리\",\n", - " '11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " '11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " \"the world is ours, gettin' money and the power\",\n", - " 'turn down for nothing, a team of the hour',\n", - " '시간은 11시 11분',\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em\",\n", - " \"we don't move the crowd, we kill 'em, uh\",\n", - " 'my 2 chainz and rollies',\n", - " '2 chainz and rollies',\n", - " '2 chainz and rollies',\n", - " '2 chainz and rollies',\n", - " \"2 chainz and hol' up\",\n", - " \"rap star, flashlights, gettin' my cash right\",\n", - " 'i rap nice, her ass nice, my day date rolex nice',\n", - " 'all i got is 1 mic and 2 chainz and 3 chicks',\n", - " '1 rollie, 2 door mercedes, 300 kicks',\n", - " '그 누가 뭐래도 난 the best of the decade',\n", - " '몇 번의 성공, but still tryna get paid',\n", - " \"naysayers and playa haters can't tell me nothin'\",\n", - " '날 쬐끔도 따라 올 수 없지 너흰',\n", - " \"we illionaire, we doin' big. yeah, true indeed, 네겐 꿈이지\",\n", - " '사람들은 다들 우리 집이 원래 부자인 줄 알고 있지',\n", - " \"but my life's slumdawg illionaire movie shit\",\n", - " '그래, 지금은 vegas에서 다음 편을 찍고 있지',\n", - " '니 차보다 비싼 시계를 차고 있어 난',\n", - " '그게 뭐든 간에, hyundai, kia or nissan',\n", - " \"this fuckin' beat produced by q and prima vista\",\n", - " 'fuck these broke ass motherfuckers. peace out',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " \"2 chainz and a motherfuckin' rollie\",\n", - " '18k white gold full diamonds blue sapphire bustdown rollie',\n", - " '난 좋은 직장, 좋은 집, 차 가진 남자 one and only',\n", - " '니가 쉴 때 난 빡세게 일해 배로 벌어, 니가 뛸 때 난 놀지',\n", - " \"y'all be fallin' while i'm ballin'. shoppin' spree in vegas mallin'\",\n", - " '논리는 없지만 늘 완벽해, play the beat, 반복해',\n", - " 'illionaire, 이곳에선 제일 잘 나가, 탈옥해',\n", - " \"가격표, 가격대? 2ne1, i don't care\",\n", - " 'bada boom bada bang, 두 손 들어 내게 항복해',\n", - " 'i gotta spend my mula crazy, 돈뭉치를 날리지',\n", - " \"인천에서부터 world wide, get my fuckin' airline mileage\",\n", - " \"my street knowledge over 니 명문 fuckin' college\",\n", - " 'rap star, my life, two job으론 안 갈리지',\n", - " \"rolex, mo' sex, good life, no stress\",\n", - " \"don't test, go let's, dope, best, i'm so blessed\",\n", - " 'thank you',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " \"2 chainz and a motherfuckin' rollie\",\n", - " '애들이 그러는데 이 노래가 자랑이 너무 심하대',\n", - " '심한 정도가 아니지',\n", - " '미친 거 아니야?',\n", - " 'got my 2 chainz, no tity boi, illy boys get milly, boi',\n", - " \"늘 돈 되는 일이 모이는 길이 보여, let's get it, boi\",\n", - " '나를 향한 기립 박수, 진짜를 원하면 이리 와',\n", - " '우린 정말 질이 달라, 확실히 완전히 feel이 와, uh',\n", - " '재벌을 바라보는 부자, 넌 그지를 바라보는 loser',\n", - " '나를 따라 오는 여자 또 나를 따라하는 남자',\n", - " '니 질투와 시기는 좀 기집애 steelo',\n", - " '내 돈을 욕한 다음에 고민하지 진로',\n", - " '난 니가 평생 벌 돈을 미리 벌어',\n", - " '또 난 여전히 창창해, 갈 길이 멀어, uh',\n", - " 'okay, 성공은 내 mission, go harder, ambition',\n", - " 'sucker rapper들은 댐비지만 본전도 못 챙기지',\n", - " '너의 오래된 bad bitch는 내게 와서 앵기지',\n", - " '난 여자친구가 있어도 또 하나가 더 생기지',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and rollies, 2 chainz and rollies',\n", - " '2 chainz and a motherfuckin rollie',\n", - " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", - " \"i'm alive and doing what i love and plus i'm getting paid\",\n", - " \"push that peddle to the medel, we gon' never take a break\",\n", - " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", - " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", - " \"i'm alive and doing what i love and plus i'm getting paid\",\n", - " \"push that peddle to the medel, we gon' never take a break\",\n", - " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", - " \"i'm feeling good i'm feeling great\",\n", - " \"and ain't nobody, no hater gon' stop me not today\",\n", - " \"and i hope you understood what it is, i'm trying to say\",\n", - " \"if you ain't down to roll then get the fuck up out my way, uh\",\n", - " '나이를 먹다 보니까 돈도 좀 벌다보니까',\n", - " '가만 있는 시간이 아까워, 시계의 바늘은 계속 해 도니까',\n", - " \"밝은 날 꼭 오니까 i'ma work hard and believe in god\",\n", - " '환경탓 해봤자 넌 좆도 없지, 매일 먹고만 노니까',\n", - " 'look at my chain and look at my gold ring',\n", - " \"it's eighteen kerot gold, the proof that i do my thing\",\n", - " '내 반지를 고를 때 느낌 말로 표현 못해',\n", - " '지금 내가 부러워? 그럼 너도 노력해',\n", - " 'and we did it, 해냈네, 같이 성공을 기념해',\n", - " 'for my my fans and for friends, 난 힘들던 시절을 기억해',\n", - " '힘들어도 또 이겨네, 너도 반드시 이뤄내',\n", - " \"put your hands in the air 'cause you know we celebrate\",\n", - " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", - " \"i'm alive and doing what i love and plus i'm getting paid\",\n", - " \"push that peddle to the medel, we gon' never take a break\",\n", - " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", - " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", - " \"i'm alive and doing what i love and plus i'm getting paid\",\n", - " \"push that peddle to the medel, we gon' never take a break\",\n", - " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", - " 'celebrate, celebrate, 힘겨웠던 yesterday',\n", - " '때로는 걱정이 앞섰지만 헤쳐나왔고 해냈네',\n", - " 'better days, better days, 어떻게 될까 내년엔',\n", - " '자꾸만 나아지는 게 느껴져, 마음가짐을 더 새롭게',\n", - " '외제차는 아니지만 새 차를 장만해서 기뻐',\n", - " '물질이 전부는 아니지만 내가 가진 걸 누리고싶어',\n", - " '하고싶은 일을 한다는 게 얼마나 기쁜 일인지 알아?',\n", - " '하나둘씩 이뤄간다는 게 말처럼 쉬운 일은 결코 아냐',\n", - " '서른이 넘어도 rap을 해, 어린애 장난이 아닌데',\n", - " '자꾸만 tv에서 이상한 짓 하니까 모르는 사람들 헷갈리네',\n", - " '좋은 대학 나온 것도 아니고 미남이라 불리는 편도 아니지',\n", - " '그런데도 사람들이 반기고 내 음악을 귀에 달고 다니지',\n", - " '내 가치가 올라갔어, fan들과 하나님께 감사',\n", - " '이런 내가 자랑스럽다면 번쩍 들어봐 hi-lite sign',\n", - " '살아갈 자신없다면 내가 커가는 걸 보면서 기운내',\n", - " 'celebrate, celebrate, 우리 분위기는 완전 축제',\n", - " 'you know i do what i love and get money',\n", - " \"ball honey g's got big money\",\n", - " '내 rap 안의 얘깃거리',\n", - " '나 같이 하면 아퍼 니 머리',\n", - " '까맣기만 하던 내 가슴이',\n", - " '끄는 대로 더 줘 차가울 뿐이지',\n", - " '난 내가 뭘 하고 있는지를 알어',\n", - " '니 자신도 모르는 넌 뒤나 따라오다',\n", - " '넘어지는 situation get em',\n", - " 'rapper들의 situa-style',\n", - " '많아, 내 성공이나 바라보다 늙지',\n", - " '내 미래의 시간은 늘 바다보다 넓지',\n", - " '날 알아보는 멋진 illionaire gang',\n", - " '그건 바로 equal illionaire fans',\n", - " '주말마다 무대 위는 매일이요',\n", - " \"stumble the ladies' heart\",\n", - " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", - " \"i'm alive and doing what i love and plus i'm getting paid\",\n", - " \"push that peddle to the medel, we gon' never take a break\",\n", - " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", - " \"celebrate, celebrate, hommie, yeah, i'm feeling great\",\n", - " \"i'm alive and doing what i love and plus i'm getting paid\",\n", - " \"push that peddle to the medel, we gon' never take a break\",\n", - " \"tell the waitress bring a bottle 'cause you know we celebrate\",\n", - " 'let me inroduce loptimist',\n", - " \"i'm from the big deal dead'p\",\n", - " 'you know i mean',\n", - " 'yo, check it',\n", - " 'loptimist he was born in 1985',\n", - " 'he make flows goes to us cooly high',\n", - " 'for you better check this line',\n", - " 'this one goes out to your mind',\n", - " 'yo check it',\n", - " 'i introduce him 이혁기, 하',\n", - " '스무살 약관의 나이로 자각',\n", - " '힙합 나이롱',\n", - " '환자들을 치료한다는 사명을 해답으로',\n", - " '드디어 첫번째 앨범을 들고 나왔어',\n", - " '그건 관심 집중된 상태에서 완성',\n", - " \"'undisputed', 말할 필요도 없지\",\n", - " '드디어 발매될 loptimist 22 channels',\n", - " \"yo fuckin fake mc's and your fan\",\n", - " 'your fan and your money shit',\n", - " '다시 한번 우리가 싹쓸이해갈껄',\n", - " '병신, you better check it',\n", - " '모르겠어 난',\n", - " 'i can’t figure out',\n", - " '복잡한 내 맘',\n", - " '정리가 잘 안돼',\n", - " \"i'm waiting 'til i die\",\n", - " 'so i never have to be alone',\n", - " '내가 죽는다면',\n", - " '내 주머니 싹 다 비워줘',\n", - " '가진 것 하나 없지 i got nothing',\n", - " '뭐든 쌓아둘 걸 내 이름 앞에',\n", - " 'i’m too hard to love, and that’s my bad',\n", - " '떠나가도 돼 but please be right back',\n", - " 'fell in love',\n", - " 'you fell in love with me',\n", - " 'i don’t know what you see in me',\n", - " 'tripping up',\n", - " 'you telling me that i’m the one',\n", - " \"i’m 'bout to cut you like a bouncer\",\n", - " '내 앞에 있는다는 건 믿을 수가 없는 일',\n", - " '누가 봐도 네 손핸데 대체 왜 굳이',\n", - " 'i’ll probably cut you deep',\n", - " 'but love is still what you bleed',\n", - " '너에게 상처 남길 것만 같아 tattooist',\n", - " 'it hurts me when i see you smile',\n", - " '미소 짓지마',\n", - " '별로란 걸 알아 난',\n", - " 'i still wish that you were mine',\n", - " '이미 알고 있을까',\n", - " 'girl you’re wasting time',\n", - " '괜찮다 말하지만',\n", - " 'i wanna know why you',\n", - " 'like me',\n", - " 'like me',\n", - " 'like me',\n", - " '괜찮은 사람 많은데',\n", - " 'why me',\n", - " 'why me',\n", - " 'why me',\n", - " 'i wanna know why you',\n", - " 'like me',\n", - " 'like me',\n", - " 'like me',\n", - " '괜찮은 사람 많은데',\n", - " 'why me',\n", - " 'why me',\n", - " 'why me',\n", - " 'i wanna know',\n", - " 'patiently and instantly',\n", - " '뒤바뀐 삶에',\n", - " '한줄기 밝은 색의 원이 그림자를 채웠고',\n", - " '나를 둘러싸던 안개는 개였어',\n", - " '혼자였을 때의 발걸음은 계속 꼬여',\n", - " '내 기분은 rollercoaster',\n", - " 'up and down motions',\n", - " 'as you came to me a little closer',\n", - " '사소한 행복들이 조금 보여',\n", - " '아직 네가 보지 못한 좀 부족한 내 모습이',\n", - " '널 비워내고 밀어내',\n", - " 'that’s why i don’t want you calling me',\n", - " '그런 부분까지 좋다고 넌 말하지',\n", - " '의심이 워낙 많은 탓에 난 아직',\n", - " '이해 못 해 너란 멋진 사람이',\n", - " '착각한 건 아닌지',\n", - " 'confusing with another me',\n", - " 'it hurts me when i see you smile',\n", - " '미소 짓지마',\n", - " '별로란 걸 알아 난',\n", - " 'i still wish that you were mine',\n", - " '이미 알고 있을까',\n", - " 'girl you’re wasting time',\n", - " '괜찮다 말하지만',\n", - " 'i wanna know why you',\n", - " 'like me',\n", - " 'like me',\n", - " 'like me',\n", - " '괜찮은 사람 많은데',\n", - " 'why me',\n", - " 'why me',\n", - " ...]}}},\n", - " 'la': {'sentence': {'non-music': {'meta': {'train_data': ['latina',\n", - " 'ego sum abbas cucaniensis,',\n", - " 'et consilium meum est cum bibulis,',\n", - " 'et in secta decii voluntas mea est,',\n", - " 'et qui mane me quesierit in taberna,',\n", - " 'post vesperam nudus egredietur,',\n", - " 'et sic denudatus veste clamabit:',\n", - " 'wafna! wafna',\n", - " 'quid fecisti sors turpissima?',\n", - " 'nostre vite gaudia',\n", - " 'abstulisti omnia!',\n", - " 'haha!',\n", - " 'english',\n", - " 'i am the abbot of cockaigne',\n", - " 'and my assembly is one of drinkers,',\n", - " 'and i wish to be in the order of decius.',\n", - " 'and whoever searches me out at the tavern in the morning,',\n", - " 'after vespers he will leave naked,',\n", - " 'and thus stripped of his clothes he will call out:',\n", - " 'woe! woe!',\n", - " 'what have you done, vilest fate?',\n", - " 'the joys of my life',\n", - " 'you have taken all away!',\n", - " 'haha!',\n", - " 'abilify',\n", - " 'accuneb',\n", - " 'accupril',\n", - " 'aciphex',\n", - " 'actonel',\n", - " 'actos',\n", - " 'adderall',\n", - " 'advair diskus',\n", - " 'aldactone',\n", - " 'altace',\n", - " 'amaryl',\n", - " 'ambien',\n", - " 'amoxil',\n", - " 'apresoline',\n", - " 'aricept',\n", - " 'ativan',\n", - " 'augmentin',\n", - " 'avalide',\n", - " 'avapro',\n", - " 'avelox',\n", - " 'avodart',\n", - " 'bactrim ds/septra ds',\n", - " 'bactroban',\n", - " 'benicar hct',\n", - " 'bentyl',\n", - " 'biaxin',\n", - " 'boniva',\n", - " 'buspar',\n", - " 'cardura',\n", - " 'cartia xt',\n", - " 'catapres',\n", - " 'ceftin',\n", - " 'celebrex',\n", - " 'celexa',\n", - " 'chantix',\n", - " 'cheratussin ac',\n", - " 'cialis',\n", - " 'cipro',\n", - " 'cleocin',\n", - " 'cogentin',\n", - " 'colcrys',\n", - " 'combivent respimat',\n", - " 'concerta',\n", - " 'coreg',\n", - " 'coumadin/jantoven',\n", - " 'cozaar',\n", - " 'crestor',\n", - " 'cutivate',\n", - " 'cymbalta',\n", - " 'deltasone',\n", - " 'depakote',\n", - " 'desyrel',\n", - " 'detrol',\n", - " 'diabeta',\n", - " 'diflucan',\n", - " 'dilantin',\n", - " 'diovan',\n", - " 'diovan hct',\n", - " 'ditropan xl',\n", - " 'doryx',\n", - " 'duragesic',\n", - " 'dyazide',\n", - " 'effexor xr',\n", - " 'elavil',\n", - " 'evista',\n", - " 'fioricet',\n", - " 'flagyl',\n", - " 'flexeril',\n", - " 'flomax',\n", - " 'flonase',\n", - " 'flovent diskus',\n", - " 'flovent hfa',\n", - " 'folvite',\n", - " 'fosamax',\n", - " 'glucophage',\n", - " 'glucotrol',\n", - " 'humalog',\n", - " 'hytrin',\n", - " 'imdur',\n", - " 'imitrex',\n", - " 'inderal',\n", - " 'januvia',\n", - " 'k-dur',\n", - " 'keflex',\n", - " 'kenalog',\n", - " 'keppra',\n", - " 'klonopin',\n", - " 'lamictal',\n", - " 'lanoxin',\n", - " 'lantus',\n", - " 'lasix',\n", - " 'levaquin',\n", - " 'levitra',\n", - " 'levothroid/levoxyl/synthroid',\n", - " 'lexapro',\n", - " 'lidoderm',\n", - " 'lioresal',\n", - " 'lipitor',\n", - " 'loestrin 24 fe',\n", - " 'lopid',\n", - " 'lopressor',\n", - " 'lortab',\n", - " 'lotensin',\n", - " 'lovaza',\n", - " 'lunesta',\n", - " 'lyrica',\n", - " 'macrodantin',\n", - " 'maxzide',\n", - " 'medrol',\n", - " 'methadose',\n", - " 'mevacor',\n", - " 'microzide',\n", - " 'minocin',\n", - " 'mobic',\n", - " 'motrin',\n", - " 'namenda',\n", - " 'nasacort',\n", - " 'nasonex',\n", - " 'neurontin',\n", - " 'nexium',\n", - " 'niaspan',\n", - " 'nitrostat',\n", - " 'norvasc',\n", - " 'novolog',\n", - " 'omnicef',\n", - " 'ortho tri cyclen',\n", - " 'oxycontin',\n", - " 'pamelor',\n", - " 'paxil',\n", - " 'pen-vk',\n", - " 'percocet/roxicet',\n", - " 'peridex',\n", - " 'phenergan',\n", - " 'plaquenil',\n", - " 'plavix',\n", - " 'pravachol',\n", - " 'premarin',\n", - " 'prevacid',\n", - " 'prilosec',\n", - " 'prinivil/zestril',\n", - " 'proair hfa/ventolin hfa',\n", - " 'proscar',\n", - " 'protonix',\n", - " 'prozac',\n", - " 'reglan',\n", - " 'relafen',\n", - " 'remeron',\n", - " 'requip',\n", - " 'restoril',\n", - " 'rheumatrex',\n", - " 'risperdal',\n", - " 'robaxin',\n", - " 'rocaltrol',\n", - " 'roxicodone',\n", - " 'sarafem',\n", - " 'seroquel',\n", - " 'singulair',\n", - " 'soma',\n", - " 'spriva handihaler',\n", - " 'strattera',\n", - " 'suboxone',\n", - " 'tamiflu',\n", - " 'tenormin',\n", - " 'topamax',\n", - " 'toprol xl',\n", - " 'tricor',\n", - " 'tricor',\n", - " 'tylenol #3',\n", - " 'ultram',\n", - " 'valium',\n", - " 'valtrex',\n", - " 'vasotec',\n", - " 'verelan',\n", - " 'viagra',\n", - " 'vibramycin',\n", - " 'vicodin/norco',\n", - " 'vigamox',\n", - " 'vistaril',\n", - " 'voltaren',\n", - " 'vytorin',\n", - " 'vyvanse',\n", - " 'wellbutrin xl',\n", - " 'xalatan',\n", - " 'xanax',\n", - " 'yasmin/ocella',\n", - " 'yaz',\n", - " 'zanaflex',\n", - " 'zebeta',\n", - " 'zestoretic',\n", - " 'zetia',\n", - " 'zithromax',\n", - " 'zocor',\n", - " 'zofran',\n", - " 'zoloft',\n", - " 'zovirax',\n", - " 'zyloprim',\n", - " 'zyprexa',\n", - " '(screams)',\n", - " 'bash my intestines up my anus',\n", - " '(screams)',\n", - " 'diarrhoea on my penis',\n", - " '(screams)',\n", - " 'diarrhoea',\n", - " '(screams)',\n", - " 'passage',\n", - " 'diarrhoea on my penis',\n", - " '(screams)',\n", - " 'penis',\n", - " '(screams)',\n", - " 'latin',\n", - " 'english',\n", - " 'loquebantur variis linguis apostoli, alleluia,',\n", - " 'the apostles spoke in different tongues,',\n", - " 'magnalia dei, alleluia',\n", - " 'of the great works of god,',\n", - " 'repleti sunt omnes spiritu sancto,',\n", - " 'they were all filled with the holy spirit',\n", - " 'et ceperunt loqui variis linguis',\n", - " 'and began to speak in different tongues',\n", - " 'magnalia dei, alleluia',\n", - " 'of the great works of god,',\n", - " 'gloria patri et filio et spiritui sancto, alleluia',\n", - " 'glory be to the father and to the son and to the holy spirit,',\n", - " 'aynun marekegn sil, kenferu gelognal',\n", - " 'demo kemotkubet, fiqir yasnesagnal',\n", - " 'dear my love yilegnal, keziyam yenei fiqir',\n", - " 'sintun quanqua chiye, kesu lenegagir',\n", - " 'guramayle liju, guramayle quanquaw (2x)',\n", - " 'gunifein awuliqei, lebeskugn yibola',\n", - " 'guramayle liju, guramayle quanquaw (2x)',\n", - " 'gunifein awuliqei, lebeskugn yibola',\n", - " 'yeteqebaw shito, yegelaw terenn',\n", - " 'b’lugn, b’lugn yilal, yeqerebut endehonn',\n", - " 'kekenfer ketirsu, kaynu fiqir yizogn',\n", - " 'iwozawozalehu, ere man yastilegn',\n", - " 'guramayle liju, guramayle quanquaw (2x)',\n", - " 'emebeitei mariam, argeelign yegilei',\n", - " 'guramayle liju, guramayle quanquaw (2x)',\n", - " 'gunifein awuliqei, lebeskugn yibola',\n", - " 'ahkal sewunetu, inde’hitsan lijj',\n", - " 'abeit meleslesu, abeit siyasgomedj',\n", - " 'yenei egir endante, min aleseleseuw',\n", - " 'kenei beit, ante beit, yete’melaleseuw',\n", - " 'guramayle liju, guramayle quanquaw (2x)',\n", - " 'gunifein awuliqei, lebeskugn yibola',\n", - " 'guramayle liju, guramayle quanquaw',\n", - " 'guramayle libsu, guramayle quanquaw',\n", - " 'emebeitei mariam, argeelign yegilei',\n", - " 'beferensayochu quanqua, be’inglizegna beenager',\n", - " 'betalianegna beegetim, be’germenigna beefokir',\n", - " 'kaffu mar yifesal liju, lezza aleuw ahndebetu',\n", - " 'esti yichawot,yifendiq, kalesu aydemqim beitu',\n", - " 'chewatah yinafiqegnal, yarada lij qonjo seuw',\n", - " 'beleselesu ejochih, nah gebahin debabseuw?',\n", - " 'guramayle, guramayle, guramayle, guramayle',\n", - " 'guramayle, guramayle, guramayle, guramayle',\n", - " 'gura’maylee, gura’mayle, gura’mayle',\n", - " 'track list',\n", - " '1- pir shodim vali bozorg na',\n", - " '2- dorian gray (skit)',\n", - " '3- golosangam (ft. behzad leito)',\n", - " '4- pesare bad (ft. sohrab mj & cornellaa)',\n", - " '5- sobe sobe (ft. cornellaa)',\n", - " '6- har chi bade (ft. cornellaa)',\n", - " '7- +3:30 (tehran maserati) (ft. behzad leito)',\n", - " '8- mehmooni khodemoone (ft. erfan, sina mafee, sepehr khalse, behzad leito, paya, & magico)',\n", - " '9- woody allen (skit)',\n", - " '10- eyval eyval',\n", - " '11- jozvi az man',\n", - " 'album cover',\n", - " 'by momet shabani',\n", - " 'click cover for annotation',\n", - " 'album teaser',\n", - " 'youtube link',\n", - " 'phoenix suns 2016-17 roster',\n", - " '#0 marquese chriss',\n", - " '#1 devin booker',\n", - " '#2 eric bledsoe',\n", - " '#3 jared dudley',\n", - " '#4 tyson chandler',\n", - " '#8 tyler ulis',\n", - " '#10 derrick jones',\n", - " '#11 brandon knight',\n", - " '#12 t.j. warren',\n", - " '#14 ronnie price',\n", - " '#15 alan williams',\n", - " '#19 leandro barbosa',\n", - " '#21 alex len',\n", - " '#35 dragan bender',\n", - " 'phoenix suns 2016-17 jerseys',\n", - " 'home',\n", - " 'away',\n", - " 'alternates',\n", - " 'pride',\n", - " 'players traded',\n", - " 'in',\n", - " 'marquese chriss',\n", - " 'mike scott',\n", - " 'jared sullinger',\n", - " 'cenk akyol',\n", - " 'out',\n", - " 'skal labissière',\n", - " 'georgios papagiannis',\n", - " 'bogdan bogdanović',\n", - " 'p.j. tucker',\n", - " 'intestinal infectious diseases (001–009)(001) cholera',\n", - " '(002) typhoid and paratyphoid fevers',\n", - " '(003) other salmonella infections',\n", - " '(003.0) salmonella gastroenteritis',\n", - " '(004) shigellosis',\n", - " '(004.9) shigellosis, unspec.',\n", - " '(005) other poisoning (bacterial)',\n", - " '(005.0) staphylococcal food poisoning',\n", - " '(006) amoebiasis',\n", - " '(006.0) acute amoebic dysentery without mention of abscess',\n", - " '(006.1) chronic intestinal amoebiasis without mention of abscess',\n", - " '(006.2) amoebic nondysenteric colitis',\n", - " '(006.3) amoebic liver abscess',\n", - " '(006.4) amoebic lung abscess',\n", - " '(006.5) amoebic brain abscess',\n", - " '(006.6) amoebic skin ulceration',\n", - " '(006.8) amoebic infection of other sites',\n", - " '(006.9) amoebiasis, unspecified',\n", - " '(007) other protozoal intestinal diseases',\n", - " '(007.0) balantidiasis',\n", - " '(007.1) giardiasis',\n", - " '(007.2) coccidiosis',\n", - " '(007.3) intestinal trichomoniasis',\n", - " '(007.4) cryptosporidiosis',\n", - " '(007.5) cyclosporiasis',\n", - " '(007.9) unspecified protozoal intestinal disease',\n", - " '(008) intestinal infections due to other organisms',\n", - " '(008.61) enteritis due to rotavirus',\n", - " '(008.69) enteritis due to other viral enteritis',\n", - " '(008.8) intestinal infection due to other organism not elsewhere classified',\n", - " '(009) ill-defined intestinal infections',\n", - " '(009.1) colitis enteritis and gastroenteritis of presumed infectious origin',\n", - " 'tuberculosis (010–018)(010) primary tuberculous infection',\n", - " '(010.0) primary tuberculous infection',\n", - " '(010.1) tuberculous pleurisy in primary progressive tuberculosis',\n", - " '(010.8) other primary progressive tuberculosis',\n", - " '(010.9) primary tuberculous infection, unspecifed',\n", - " '(011) pulmonary tuberculosis',\n", - " '(011.0)',\n", - " '(011.1)',\n", - " '(011.2)',\n", - " '(011.3)',\n", - " '(011.4)',\n", - " '(011.5)',\n", - " '(011.6)',\n", - " '-any form',\n", - " '(011.7)',\n", - " '(011.8)',\n", - " '(011.9)',\n", - " '-respiratory tuberculosis',\n", - " '-tuberculosis of lung',\n", - " '(011.9)',\n", - " 'respiratory tuberculosis',\n", - " 'tuberculosis of lung',\n", - " '(012) other respiratory tuberculosis',\n", - " '(013) tuberculosis of meninges and central nervous system',\n", - " '(014) tuberculosis of intestines, peritoneum, and mesenteric glands',\n", - " '(015) tuberculosis of bones and joints',\n", - " '(015.0) tuberculosis of vertebral column',\n", - " \"-pott's disease\",\n", - " '(016) tuberculosis of genitourinary system',\n", - " '(017) tuberculosis of other organs',\n", - " '(017.1) erythema nodosum with hypersensitivity reaction in tuberculosis',\n", - " '-bazin disease',\n", - " '(017.2) tuberculosis of peripheral lymph nodes',\n", - " '-scrofula',\n", - " '(018) miliary tuberculosis',\n", - " 'zoonotic bacterial diseases (020–027)(020) plague',\n", - " '(020.0) bubonic plague',\n", - " '(021) tularemia',\n", - " '(022) anthrax',\n", - " '(023) brucellosis',\n", - " '(024) glanders',\n", - " '(025) melioidosis',\n", - " '(026) rat-bite fever',\n", - " '(027) other zoonotic bacterial diseases',\n", - " '(027.0) listeriosis',\n", - " '(027.1) erysipelothrix infection',\n", - " '(027.2) pasteurellosis',\n", - " 'other bacterial diseases (030–041)(030) leprosy',\n", - " '(031) diseases due to other mycobacteria',\n", - " '(032) diphtheria',\n", - " '(033) whooping cough',\n", - " '(034) streptococcal sore throat and scarlatina',\n", - " '(034.0) strep throat',\n", - " '(034.1) scarlet fever',\n", - " '(035) erysipelas',\n", - " '(036) meningococcal meningitis',\n", - " '(037) tetanus',\n", - " '(038) septicaemia',\n", - " '(038.2) pneumococcal septicemia',\n", - " '(038.4) septicemia, gram-negative, unspec.',\n", - " '(038.9) septicemia, nos',\n", - " '(039) actinomycotic infections',\n", - " '(040) other bacterial diseases',\n", - " '(041) bacterial infection in conditions classified elsewhere',\n", - " 'human immunodeficiency virus (hiv) infection (042–044)(042) human immunodeficiency virus infection with specified conditions',\n", - " '(043) human immunodeficiency virus infection causing other specified',\n", - " '(044) other human immunodeficiency virus infection',\n", - " 'poliomyelitis and other non-arthropod-borne viral diseases of central nervous system (045–049)(045) acute poliomyelitis',\n", - " '(046) slow virus infection of central nervous system',\n", - " '(046.0) kuru',\n", - " '(046.1) creutzfeld-jakob disease',\n", - " '(047) meningitis due to enterovirus',\n", - " '(048) other enterovirus diseases of central nervous system',\n", - " '(049) other non-arthropod-borne viral diseases of central nervous system',\n", - " 'viral diseases accompanied by exanthem (050–059)(050) smallpox',\n", - " '(050.0) variola major',\n", - " '(050.1) alastrim',\n", - " '(051) cowpox and paravaccinia',\n", - " '(051.0) cowpox',\n", - " '(051.1) pseudocowpox',\n", - " '(051.2) contagious pustular dermatitis',\n", - " '(052) chickenpox',\n", - " '(052.0) postvaricella encephalitis',\n", - " '(052.1) varicella (hemorrhagic) pneumonitis',\n", - " '(052.2) postvaricella myelitis',\n", - " '(052.7) chickenpox with other specified complications',\n", - " '(052.8) chickenpox with unspecified complication',\n", - " '(052.9) varicella without complication',\n", - " '(053) herpes zoster',\n", - " '(053.0) herpes zoster with meningitis',\n", - " '(053.1) herpes zoster with other nervous system complications',\n", - " '(053.10) herpes zoster with unspecified nervous system complication',\n", - " '(053.11) geniculate herpes zoster',\n", - " '(053.12) postherpetic trigeminal neuralgia',\n", - " '(053.13) postherpetic polyneuropathy',\n", - " '(053.14) herpes zoster myelitis',\n", - " '(053.2) herpes zoster with ophthalmic complications',\n", - " '(053.7) herpes zoster with other specified complications',\n", - " '(053.8) herpes zoster with unspecified complication',\n", - " '(053.9) herpes zoster without complication',\n", - " '(054) herpes simplex',\n", - " '(054.0) eczema herpeticum',\n", - " '(054.1) genital herpes',\n", - " '(054.2) herpetic gingivostomatitis',\n", - " '(054.3) herpetic meningoencephalitis',\n", - " '(054.4) herpes simplex with ophthalmic complications',\n", - " '(054.5) herpetic septicemia',\n", - " '(054.6) herpetic whitlow',\n", - " '(054.9) herpetic disease, uncomplicated',\n", - " '(055) measles',\n", - " '(056) rubella',\n", - " '(057) other viral exanthemata',\n", - " '(057.0) fifth disease',\n", - " '(057.9) exanthems, viral, unspec.',\n", - " '(058) other human herpesvirus',\n", - " '(058.1) roseola infantum',\n", - " '(058.2) other human herpesvirus encephalitis',\n", - " '(058.8) other human herpesvirus infections',\n", - " '(059) other poxvirus infections',\n", - " '(059.0) other orthopoxvirus infections',\n", - " '(059.01) monkeypox',\n", - " '(059.1) other parapoxvirus infections',\n", - " '(059.11) bovine stomatitis',\n", - " '(059.12) sealpox',\n", - " '(059.2) yatapoxvirus infections',\n", - " '(059.21) tanapox',\n", - " '(059.22) yaba monkey tumor virus',\n", - " '(059.8) other poxvirus infections',\n", - " '(059.9) poxvirus infections, unspecified',\n", - " 'arthropod-borne viral diseases (060–066)(060) yellow fever',\n", - " '(061) dengue fever',\n", - " '(062) mosquito-borne viral encephalitis',\n", - " '(062.9) encephalitis, mosquito, unspec.',\n", - " '(063) tick-borne viral encephalitis',\n", - " '(064) viral encephalitis transmitted by other and unspecified arthropods',\n", - " '(065) arthropod-borne hemorrhagic fever',\n", - " '(065.8) ebola, unspec.',\n", - " '(066) other arthropod-borne viral diseases',\n", - " '(066.4) west nile virus, unspec.',\n", - " 'other diseases due to viruses and chlamydiae (070–079)(070) viral hepatitis',\n", - " '(070.0) hepatitis a with hepatic coma',\n", - " '(070.0) hepatitis a with hepatic coma',\n", - " '(070.1) hepatitis a w/o coma',\n", - " '(070.2) hepatitis b with hepatic coma',\n", - " '(070.3) hepatitis b w/o coma, acute',\n", - " '(070.4) other specified viral hepatitis with mention of hepatic coma',\n", - " '(070.5) other specified viral hepatitis without mention of hepatic coma',\n", - " '(070.7) unspecified viral hepatitis c',\n", - " '(070.70) unspecified viral hepatitis c w/o hepatic coma',\n", - " '(070.71) unspecified viral hepatitis c with hepatic coma',\n", - " '(070.9) hepatitis, viral, nos',\n", - " '(071) rabies',\n", - " '(072) mumps',\n", - " '(072.9) mumps, uncomplicated',\n", - " '(073) ornithosis',\n", - " '(074) specific diseases due to coxsackie virus',\n", - " '(074.0) herpangina',\n", - " '(074.3) hand, foot, mouth disease',\n", - " '(075) mononucleosis',\n", - " '(076) trachoma',\n", - " '(077) other diseases of conjunctiva due to viruses and chlamydiae',\n", - " '(078) other diseases due to viruses and chlamydiae',\n", - " '(078.0) molluscum contagiosum',\n", - " '(078.1) warts, all sites',\n", - " '(078.11) condyloma acuminata',\n", - " '(078.2) sweating fever',\n", - " '(078.3) cat-scratch disease',\n", - " '(078.4) foot-and-mouth disease',\n", - " '(078.5) cmv disease',\n", - " '(079) viral infection in conditions classified elsewhere and of unspecified site',\n", - " '(079.3) rhinovirus',\n", - " '(079.4) hpv',\n", - " '(079.6) respiratory syncytial virus',\n", - " 'rickettsioses and other arthropod-borne diseases (080–088)(080) louse-borne (epidemic) typhus',\n", - " '(081) other typhus',\n", - " '(081.0) murine typhus (endemic typhus)',\n", - " \"(081.1) brill's disease\",\n", - " '(081.2) scrub typhus',\n", - " '(081.9) typhus unspecified',\n", - " '(082) tick-borne rickettsioses',\n", - " '(082.0) spotted fevers',\n", - " '(082.1) boutonneuse fever',\n", - " '(082.2) north asian tick fever',\n", - " '(082.3) queensland tick typhus',\n", - " '(082.4) ehrlichiosis',\n", - " '(082.40) unspecified ehrlichiosis',\n", - " '(082.41) ehrlichiosis chafeensis',\n", - " '(082.49) other ehrlichiosis',\n", - " '(082.8) other specified tick-borne rickettsioses',\n", - " '(082.9) tick-borne rickettsiosis unspecified',\n", - " '(083) other rickettsioses',\n", - " '(083.0) q fever',\n", - " '(083.1) trench fever',\n", - " '(083.2) rickettsialpox',\n", - " '(083.8) other specified rickettsioses',\n", - " '(083.9) rickettsiosis unspecified',\n", - " '(084) malaria',\n", - " '(085) leishmaniasis',\n", - " '(086) trypanosomiasis',\n", - " '(087) relapsing fever',\n", - " '(088) other arthropod-borne diseases',\n", - " '(088.8) other specified arthropod-borne diseases',\n", - " '(088.81) lyme disease',\n", - " '(088.82) babesiosis',\n", - " 'syphilis and other venereal diseases (090–099)(090) congenital syphilis',\n", - " '(091) early syphilis, symptomatic',\n", - " '(091.0) syphilis, primary, genital',\n", - " '(092) early syphilis, latent',\n", - " '(093) cardiovascular syphilis',\n", - " '(094) neurosyphilis',\n", - " '(095) other forms of late syphilis, with symptoms',\n", - " '(096) late syphilis, latent',\n", - " '(097) other and unspecified syphilis',\n", - " '(098) gonococcal infections',\n", - " '(098.0) gonorrhoea, acute, lower gu tract',\n", - " '(098.4) conjunctivitis, gonococcal',\n", - " '(098.8) gonococcal infection of other specified sites',\n", - " '(098.86) gonococcal peritonitis',\n", - " '(099) other venereal diseases',\n", - " '(099.0) chancroid',\n", - " '(099.1) lymphogranuloma venereum',\n", - " '(099.2) granuloma inguinale',\n", - " \"(099.3) reiter's disease\",\n", - " '(099.4) other nongonococcal urethritis',\n", - " '(099.5) other venereal diseases due to chlamydia trachomatis',\n", - " '(099.8) other specified venereal diseases',\n", - " '(099.9) venereal disease unspecified',\n", - " 'other spirochetal diseases (100–104)(100) leptospirosis',\n", - " \"(101) vincent's angina\",\n", - " '(102) yaws',\n", - " '(103) pinta',\n", - " '(104) other spirochaetal infection',\n", - " 'mycoses (110–118)(110) dermatophytosis',\n", - " '(110.0) dermatophytosis of scalp/beard',\n", - " '(110.1) onychomycosis',\n", - " '(110.2) dermatophytosis of hand',\n", - " '(110.3) tinea cruris',\n", - " '(110.4) tinea pedis',\n", - " '(110.9) tinea corporis, nos',\n", - " '(111) dermatomycosis, other and unspecified',\n", - " '(111.0) tinea versicolor',\n", - " '(111.9) dermatomycosis, unspec.',\n", - " '(112) candidiasis',\n", - " '(112.0) moniliasis, oral',\n", - " '(112.1) moniliasis, vulva/vagina',\n", - " '(112.2) monilial balanitis',\n", - " '(112.3) moniliasis, skin/nails',\n", - " '(114) coccidioidomycosis',\n", - " '(115) histoplasmosis',\n", - " '(115.0) histoplasma infection, unspec.',\n", - " '(116) blastomycotic infection',\n", - " '(117) other mycoses',\n", - " '(118) opportunistic mycoses',\n", - " 'helminthiases (120–129)(120) schistosomiasis (bilharziasis)',\n", - " '(121) other trematode infections',\n", - " '(122) echinococcosis',\n", - " '(123) other cestode infection',\n", - " '(124) trichinosis',\n", - " '(125) filarial infection and dracontiasis',\n", - " '(126) ancylostomiasis and necatoriasis',\n", - " '(127) other intestinal helminthiases',\n", - " '(127.0) ascariasis',\n", - " '(127.1) anisakiasis',\n", - " '(127.2) strongyloidiasis',\n", - " '(127.3) trichuriasis',\n", - " '(127.4) enterobiasis',\n", - " '(127.5) capillariasis',\n", - " '(127.6) trichostrongyliasis',\n", - " '(128) other and unspecified helminthiases',\n", - " '(129) intestinal parasitism, unspecified',\n", - " 'other infectious and parasitic diseases (130–136)(130) toxoplasmosis',\n", - " '(130.9) toxoplasmosis, unspec.',\n", - " '(131) trichomoniasis',\n", - " '(131.0) urogenital trichomoniasis',\n", - " '(131.01) trichomonal vaginitis',\n", - " '(131.02) trichomoniasis, urethritis',\n", - " '(132) pediculosis and phthirus infestation',\n", - " '(132.0) pediculosis, head lice',\n", - " '(132.1) pediculosis, body lice',\n", - " '(132.2) pediculosis, pubic lice',\n", - " '(132.9) pediculosis, unspec.',\n", - " '(133) acariasis',\n", - " '(133.0) scabies',\n", - " '(133.8) other acariasis',\n", - " '-chiggers',\n", - " '(133.9) acariasis unspecified',\n", - " '(134) other infestation',\n", - " '(134.0) myiasis',\n", - " '(134.1) other arthropod infestation',\n", - " '(134.2) hirudiniasis',\n", - " '(134.8) other specified infestations',\n", - " '(134.9) infestation unspecified',\n", - " '(135) sarcoidosis',\n", - " '(136) other and unspecified infectious and parasitic diseases',\n", - " '(136.0) ainhum',\n", - " \"(136.1) behcet's syndrome\",\n", - " '(136.3) pneumocystosis',\n", - " '(136.4) psorospermiasis',\n", - " '(136.5) sarcosporidiosis',\n", - " '(136.9) infectious/parasitic diseases, unspec.',\n", - " 'late effects of infectious and parasitic diseases (137–139)(137) tuberculosis, respiratory, late effects',\n", - " '(138) polio, late effects',\n", - " '(139) late effects of other infectious and parasitic diseases',\n", - " 'latina',\n", - " 'in trutina mentis dubia',\n", - " 'fluctuant contraria',\n", - " 'lascivus amor et pudicitia.',\n", - " 'sed eligo quod video,',\n", - " 'collum iugo prebeo;',\n", - " 'ad iugum tamen suave transeo.',\n", - " 'english',\n", - " 'in the wavering balance of my feelings',\n", - " 'set against each other',\n", - " 'lascivious love and modesty.',\n", - " 'but i choose what i see,',\n", - " 'and submit my neck to the yoke;',\n", - " 'i yield to the sweet yoke.',\n", - " 'latina',\n", - " 'veni, veni, venias,',\n", - " 'ne me mori facias,',\n", - " 'hyrca, hyrce, nazaza,',\n", - " 'trillirivos!',\n", - " 'pulchra tibi facies,',\n", - " 'oculorum acies,',\n", - " 'capillorum series,',\n", - " 'o quam clara species!',\n", - " 'rosa rubicundior,',\n", - " 'lilio candidior,',\n", - " 'omnibus formosior,',\n", - " 'semper in te glorior!',\n", - " 'english',\n", - " 'come, come, o come,',\n", - " 'do not let me die,',\n", - " 'hyrca, hyrce, nazaza,',\n", - " 'trillirivos!',\n", - " 'beautiful is your face,',\n", - " 'the gleam of your eye,',\n", - " 'your braided hair,',\n", - " 'what a glorious creature!',\n", - " 'redder than the rose,',\n", - " 'whiter than the lily,',\n", - " 'lovelier than all others,',\n", - " 'i shall always glory in you!',\n", - " 'chorus',\n", - " 'passio domini nostri jesu christi secundum joannem.',\n", - " 'the passion of our lord jesus christ according to st. john.',\n", - " 'evangelist',\n", - " 'haec cum dixisset jesus, egressus est cum discipulis suis trans torrentem cedron, ubi erat hortus, in quem introivit ipse, et discipuli ejus. sciebat autem et judas, qui tradebat eum, locum: quia frequenter jesus convenerat illuc cum discipulis suis. judas ergo cum accepisset cohortem, et a pontificibus et pharisaeis ministros, venit illuc cum laternis, et facibus, et armis. jesus itaque sciens omnia, quae ventura erant super eum processit, et dixit eis:',\n", - " 'when jesus had spoken these words, he went forth with his disciples over the brook cedron, where there was a garden, into which he entered with his disciples. and judas also, who betrayed him, knew the place: because jesus had often resorted thither together with his disciples. judas therefore having received a band of soldiers and servants from the chief priests and the pharisees, cometh thither with lanterns and torches and weapons. jesus therefore, knowing all things that should come upon him, went forth and said to them:',\n", - " 'jesus',\n", - " 'quem quaeritis?',\n", - " 'whom seek ye?',\n", - " 'evangelist',\n", - " 'responderunt ei:',\n", - " 'they answered him:',\n", - " 'chorus',\n", - " 'jesum nazarenum.',\n", - " 'jesus of nazareth.',\n", - " 'evangelist',\n", - " 'dicit eis jesus:',\n", - " 'jesus saith to them:',\n", - " 'jesus',\n", - " 'ego sum.',\n", - " 'i am he.',\n", - " 'evangelist',\n", - " 'stabat autem et judas, qui tradebat eum, cum ipsis. ut ergo dixit eis: ego sum, abierunt retrorsum, et ceciderunt in terram. iterum ergo interrogavit eos:',\n", - " 'and judas also, who betrayed him, stood with them. as soon therefore as he had said to them: i am he, they went backward and fell to the ground. again therefore he asked them:',\n", - " 'jesus',\n", - " 'quem quaeritis?',\n", - " 'whom seek ye?',\n", - " 'evangelist',\n", - " 'illi autem dixerunt:',\n", - " 'and they said:',\n", - " 'chorus',\n", - " 'jesum nazarenum.',\n", - " 'jesus of nazareth.',\n", - " 'evangelist',\n", - " 'respondit jesus:',\n", - " 'jesus answered:',\n", - " 'jesus',\n", - " 'dixi vobis, quia ego sum: si ergo me quaeritis, sinite hos abire.',\n", - " 'i have told you that i am he. if therefore you seek me, let these go their way;',\n", - " 'evangelist',\n", - " 'ut impleretur sermo, quem dixit: quia quos dedisti mihi, non perdidi ex eis quemquam. simon ergo petrus habens gladium eduxit eum: et percussit pontificis servum: et abscidit auriculam ejus dexteram. erat autem nomen servo malchus. dixit ergo jesus petro:',\n", - " 'that the word might be fulfilled which he said: of them whom thou hast given me, i have not lost anyone. then simon peter, having a sword, drew it and struck the servant of the high priest and cut off his right ear. and the name of the servant was malchus. jesus therefore said to peter:',\n", - " 'jesus',\n", - " 'mitte gladium in vaginam. calicem, quem dedit mihi pater, non bibam illum?',\n", - " 'put up thy sword in the scabbard. the chalice which my father hath given me, shall i not drink it?',\n", - " 'evangelist',\n", - " 'cohors ergo, et tribunus, et ministri judaeorum comprehenderunt jesum, et ligaverunt eum. et adduxerunt eum ad annam primum; erat enim socer caiphae, qui erat pontifex anni illius. erat autem caiphas, qui consilium dederat judaeis: quia expedit unum hominem mori pro populo. sequebatur autem jesum simon petrus, et alius discipulus. discipulus autem ille erat notus pontifici, et introivit cum jesu in atrium pontificis. petrus autem stabat ad ostium foris. exivit ergo discipulus alius, qui erat notus pontifici, et dixit ostiariae: et introduxit petrum. dicit ergo petro ancilla ostiaria:',\n", - " 'then the band and the tribune and the servants of the jews took jesus, and bound him. and they led him away to annas first, for he was father-in-law to caiphas, who was the high priest of that year. now caiphas was he who had given the counsel to the jews: that it was expedient that one man should die for the people. and simon peter followed jesus: and so did another disciple. and that disciple was known to the high priest and went in with jesus into the court of the high priest. but peter stood at the door without. the other disciple therefore, who was known to the high priest, went out and spoke to the portress and brought in peter. the maid therefore that was portress saith to peter:',\n", - " 'chorus',\n", - " 'numquid et tu ex discipulis es hominis istius?',\n", - " \"art not thou also one of this man's disciples?\",\n", - " 'evangelist',\n", - " 'dicit ille:',\n", - " 'he saith:',\n", - " 'petrus',\n", - " 'non sum.',\n", - " 'i am not.',\n", - " 'evangelist',\n", - " 'stabant autem servi, et ministri ad prunas: quia frigus erat, et calefiebant se: erat autem cum eis et petrus stans, et calefaciens se. pontifex ergo interrogavit jesum de discipulis suis, et de doctrina ejus. respondit ei jesus:',\n", - " 'now the servants and ministers stood at a fire of coals, because it was cold, and warmed themselves. and with them was peter also, standing, and warming himself. the high priest therefore asked jesus of his disciples and of his doctrine. jesus answered him:',\n", - " 'jesus',\n", - " 'ego palam locutus sum mundo: ego semper docui in synagoga, et in templo, quo omnes judaei conveniunt: et in occulto locutus sum nihil. quid me interrogas? interroga eos, qui audierunt quid locutus sim ipsis: ecce hi sciunt quae dixerim ego.',\n", - " 'i have spoken openly to the world. i have always, taught in the synagogue and in the temple, whither all the jews resort: and in secret i have spoken nothing. why asketh thou me? ask them who have heard what i have spoken unto them. behold they know. what things i have said.',\n", - " 'evangelist',\n", - " 'haec autem cum dixisset, unus assistens ministrorum dedit alapam jesu, dicens:',\n", - " 'and when he had said these things, one of the servants, standing by, gave jesus a blow, saying:',\n", - " 'chorus',\n", - " 'sic respondes pontifici?',\n", - " 'answerest thou the high priest so?',\n", - " 'evangelist',\n", - " 'respondit ei jesus:',\n", - " 'jesus answered him:',\n", - " 'jesus',\n", - " 'si male locutus sum, testimonium perhibe de malo: si autem bene, quid me caedis?',\n", - " 'if i have spoken evil, give testimony of the evil; but if well, why strikest thou me?',\n", - " 'evangelist',\n", - " 'et misit eum annas ligatum ad caipham pontificem. erat autem simon petrus stans et calefaciens se. dixerunt ergo ei:',\n", - " 'and annas sent him bound to caiphas the high priest. and simon peter was standing and warming himself. they said therefore to him:',\n", - " 'chorus',\n", - " 'numquid et tu ex discipulis ejus es?',\n", - " 'art not thou also one of his disciples?',\n", - " 'evangelist',\n", - " 'negavit ille, et dixit:',\n", - " 'he denied it and said:',\n", - " 'petrus',\n", - " 'non sum.',\n", - " 'i am not.',\n", - " 'evangelist',\n", - " 'dicit ei unus ex servis pontificis, cognatus ejus, cujus abscidit petrus auriculam:',\n", - " 'one of the servants of the high priest (a kinsman to him whose ear peter cut off) saith to him:',\n", - " 'chorus',\n", - " 'nonne ego te vidi in horto cum illo?',\n", - " 'did i not see thee in the garden with him?',\n", - " 'evangelist',\n", - " 'iterum ergo negavit petrus: et statim gallus cantavit. adducunt ergo jesum a caipha in praetorium. erat autem mane: et ipsi non introierunt in praetorium, ut non contaminarentur, sed ut manducarent pascha. exivit ergo pilatus ad eos foras, et dixit:',\n", - " \"again therefore, peter denied; and immediately the cock crew. then they led jesus from caiphas to the governor's hall. and it was morning; and they went not into the hall, that they might not be defiled, but that they might eat the pasch. pilate therefore went out to them, and said:\",\n", - " 'pilatus',\n", - " 'quam accusationem affertis adversus hominem hunc?',\n", - " 'what accusation bring you against this man?',\n", - " 'evangelist',\n", - " 'responderunt et dixerunt ei:',\n", - " 'they answered and said to him:',\n", - " 'chorus',\n", - " 'si non esset hic malefactor, non tibi tradidissemus eum:',\n", - " 'if he were not a malefactor, we would not have delivered him up to thee.',\n", - " 'evangelist',\n", - " 'dixit ergo eis pilatus:',\n", - " 'pilate therefore said to them:',\n", - " 'pilatus',\n", - " 'accipite eum vos, et secundum legem vestram judicate eum.',\n", - " 'take him you, and judge him according to your law.',\n", - " 'evangelist',\n", - " 'dixerunt ergo ei judaei:',\n", - " 'the jews therefore said to him:',\n", - " 'chorus',\n", - " 'nobis non licet interficere quemquam.',\n", - " 'it is not lawful for us to put any man to death.',\n", - " 'evangelist',\n", - " 'ut sermo jesu impleretur, quem dixit, significans qua morte esset moriturus. introivit ergo iterum in praetorium pilatus et vocavit jesum, et dixit ei:',\n", - " 'that the word of jesus might be fulfilled, which he said, signifying what death he should die. pilate therefore went into the hall again and called jesus and said to him:',\n", - " 'pilatus',\n", - " 'tu es rex iudaeorum?',\n", - " 'art thou the king of the jews ?',\n", - " 'evangelist',\n", - " 'respondit jesus:',\n", - " 'jesus answered:',\n", - " 'jesus',\n", - " 'a temet ipso hoc dicis, an alii dixerunt tibi de me?',\n", - " 'sayest thou this thing of thyself, or have others told it thee of me?',\n", - " 'evangelist',\n", - " 'respondit pilatus:',\n", - " 'pilate answered:',\n", - " 'pilatus',\n", - " 'numquid ego judaeus sum? gens tua et pontifices tradiderunt te mihi: quid fecisti?',\n", - " 'am i a jew? thine own nation and the chief priests have delivered thee up to me. what hast thou done?',\n", - " 'evangelist',\n", - " 'respondit jesus:',\n", - " 'jesus answered:',\n", - " 'jesus regnum meum non est de mundo. si ex hoc mundo esset regnum meum, ministri mei utique decertarent, ut non traderer judaeis: nunc autem regnum meum non est hinc.',\n", - " 'my kingdom is not of this world. if my kingdom were of this world, my servants would certainly strive that i should not be delivered to the jews: but now my kingdom is not from hence.',\n", - " 'evangelist',\n", - " 'dixit itaque ei pilatus:',\n", - " 'pilate therefore said to him:',\n", - " 'pilatus',\n", - " 'ergo rex es tu?',\n", - " 'art thou a king then?',\n", - " 'evangelist',\n", - " 'respondit jesus:',\n", - " 'jesus answered:',\n", - " 'jesus',\n", - " 'tu dicis quia rex sum ego. ego in hoc natus sum, et ad hoc veni in mundum, ut testimonium perhibeam veritati: omnis, qui est ex veritate, audit vocem meam.',\n", - " 'thou sayest that i am a king. for this was i born, and for this came i into the world; that i should give testimony of the truth. every one that is of the truth heareth my voice.',\n", - " 'evangelist',\n", - " 'dicit ei pilatus:',\n", - " 'pilate saith to him:',\n", - " 'pilatus',\n", - " 'quid est veritas?',\n", - " 'what is truth?',\n", - " 'evangelist',\n", - " 'et cum hoc dixisset, iterum exivit ad judaeos, et dicit eis:',\n", - " 'and when he had said this, he went out again to the jews and saith to them:',\n", - " 'pilatus',\n", - " 'ego nullam invenio in eo causam. est autem consuetudo vobis ut unum dimittam vobis in pascha: vultis ergo dimittam vobis regem judaeorum?',\n", - " 'i find no cause in him. but you have a custom that i should release one unto you at the pasch. will you, therefore, that i release unto you the king of the jews?',\n", - " 'evangelist',\n", - " 'clamaverunt ergo rursum omnes, dicentes:',\n", - " 'then cried they all again, saying:',\n", - " 'chorus non hunc, sed barabbam.',\n", - " 'not this man, but barabbas.',\n", - " 'evangelist',\n", - " 'erat autem barabbas latro.',\n", - " 'now barabbas was a robber.',\n", - " 'evangelist',\n", - " 'tunc ergo apprehendit pilatus jesum, et flagellavit. et milites plectentes coronam de spinis, imposuerunt capiti ejus: et veste purpurea circumdederunt eum. et veniebant ad eum, et dicebant:',\n", - " 'then therefore pilate took jesus and scourged him. and the soldiers plaiting a crown of thorns, put it upon his head; and they put on him a purple garment. and they came to him and said:',\n", - " 'chorus',\n", - " 'ave, rex iudaeorum.',\n", - " 'hail, king of the jews.',\n", - " 'evangelist',\n", - " 'et dabant ei alapas. exivit ergo iterum pilatus foras, et dicit eis:',\n", - " 'and they gave him blows. pilate therefore went forth again and saith to them:',\n", - " 'pilatus',\n", - " 'ecce adduco vobis eum foras, ut cognoscatis, quia nullam invenio in eo causam.',\n", - " 'behold, i bring him forth unto you, that you may know that i find no cause in him.',\n", - " 'evangelist',\n", - " '(exivit ergo jesus portans coronam spineam et purpureum vestimentum.) et dicit eis:',\n", - " '(jesus therefore came forth, bearing the crown of thorns and the purple garment.) and he saith to them:',\n", - " 'pilatus',\n", - " 'ecce homo.',\n", - " 'behold the man.',\n", - " 'evangelist',\n", - " 'cum ergo vidissent eum pontifices et ministri, clamabant, dicentes:',\n", - " 'when the chief priests, therefore, and the servants had seen him, they cried out, saying:',\n", - " 'chorus',\n", - " 'crucifige, crucifige eum.',\n", - " 'crucify him, crucify him.',\n", - " 'evangelist',\n", - " 'dicit eis pilatus:',\n", - " 'pilate saith to them:',\n", - " 'pilatus',\n", - " 'accipite eum vos, et crucifigite: ego enim non invenio in eo causam.',\n", - " 'take him you, and crucify him; for i find no cause in him.',\n", - " 'evangelist',\n", - " 'responderunt ei iudaei:',\n", - " 'the jews answered him:',\n", - " 'chorus',\n", - " 'nos legem habemus, et secundum legem debet mori, quia filium dei se fecit.',\n", - " 'we have a law, and according to the law he ought to die, because he made himself the son of god.',\n", - " 'evangelist',\n", - " 'cum ergo audisset pilatus hunc sermonem, magis timuit. et ingressus est praetorium iterum: et dixit ad jesum:',\n", - " 'when pilate, therefore, had heard this saying, he feared the more. and he entered into the hall again; and he said to jesus:',\n", - " 'pilatus',\n", - " 'unde es tu?',\n", - " 'whence art thou?',\n", - " 'evangelist',\n", - " 'jesus autem responsum non dedit ei. dicit ergo ei pilatus:',\n", - " 'but jesus gave him no answer. pilate therefore saith to him:',\n", - " 'pilatus',\n", - " 'mihi non loqueris? nescis quia potestatem habeo crucifigere te, et potestatem habeo dimittere te?',\n", - " 'speakest thou not to me? knowest thou not that i have power to crucify thee, and i have power to release thee?',\n", - " 'evangelist',\n", - " 'respondit jesus:',\n", - " 'jesus answered:',\n", - " 'jesus',\n", - " 'non haberes potestatem adversum me ullam, nisi tibi datum esset desuper. propterea, qui me tradidit tibi majus peccatum habet.',\n", - " 'thou shouldst not have any power against me, unless it were given thee from above. therefore, he that hath delivered me to thee hath the greater sin.',\n", - " 'evangelist',\n", - " 'et exinde quaerebat pilatus dimittere eum. judaei autem clamabant, dicentes:',\n", - " 'and from henceforth pilate sought to release him. but the jews cried out, saying:',\n", - " 'chorus',\n", - " 'si hunc dimittis, non es amicus caesaris. omnis enim, qui se regem facit, contradicit caesari.',\n", - " \"if thou release this man, thou art not caesar's friend. for whosoever maketh himself a king speaketh against caesar.\",\n", - " 'evangelist',\n", - " 'pilatus ergo cum audisset hos sermones, adduxit foras jesum, et sedit pro tribunali, in locum, qui dicitur lithostrotos, hebraice autem gabbatha. erat autem parasceve paschae, hora quasi sexta, et dicit judaeis:',\n", - " 'now when pilate heard these words, he brought jesus forth and sat down in the judgment seat, in the place that is called lithostrotos, and in hebrew gabbatha. and it was the parasceve of the pasch, about the sixth hour; and he saith to the jews:',\n", - " 'pilatus',\n", - " 'ecce rex vester.',\n", - " 'behold your king.',\n", - " 'evangelist',\n", - " 'illi autem clamabant:',\n", - " 'but they cried out:',\n", - " 'chorus',\n", - " 'tolle, tolle, crucifige eum.',\n", - " 'away with him. away with him: crucify him.',\n", - " 'evangelist',\n", - " 'dicit eis pilatus:',\n", - " 'pilate saith to them:',\n", - " 'pilatus',\n", - " 'regem vestrum crucifigam?',\n", - " 'shall i crucify your king?',\n", - " 'evangelist',\n", - " 'responderunt pontifices:',\n", - " 'the chief priests answered:',\n", - " 'chorus',\n", - " 'non habemus regem, nisi caesarem.',\n", - " 'we have no king but caesar.',\n", - " 'evangelist',\n", - " 'tunc ergo tradidit eis illum ut crucifigeretur. (!) susceperunt autem jesum, et eduxerunt. et bajulans sibi crucem, exivit in eum, qui dicitur calvariae, locum, hebraice autem golgotha: ubi crucifixerunt eum, et cum eo alios duos, hinc et hinc, medium autem jesum. scripsit autem et titulum pilatus: et posuit super crucem. erat autem scriptum: jesus nazarenus, rex judaeorum. hunc ergo titulum multi judaeorum legerunt, quia prope civitatem erat locus, ubi crucifixus est jesus. et erat scriptum hebraice, graece, et latine. dicebant ergo pilato pontifices judaeorum:',\n", - " 'then, therefore, he delivered him to them to be crucified. and they took jesus and led him forth. and bearing his cross, he went forth to that place which is called calvary but in hebrew golgotha; where they crucified him, and with him, two others one on each side and jesus in the midst. and pilate wrote a title also: and he put it upon the cross. and the writing was: jesus of nazareth, the king of the jews. this title therefore many of the jews did read: because the place where jesus was crucified was nigh to the city. and it was written in hebrew, in greek, and in latin. then the chief priests of the jews said to pilate:',\n", - " 'chorus',\n", - " 'noli scribere, rex judaeorum, sed quia ipse dixit: rex sum judaeorum.',\n", - " 'write not: the king of the jews; but that he said: i am the king of the jews.',\n", - " 'evangelist',\n", - " 'respondit pilatus:',\n", - " 'pilate answered:',\n", - " 'pilatus',\n", - " 'quod scripsi, scripsi.',\n", - " 'what i have written, i have written.',\n", - " 'evangelist',\n", - " 'milites ergo cum crucifixissent eum, acceperunt vestimenta ejus et fecerunt quatuor partes: unicuique militi partem, et tunicam. erat autem tunica inconsutilis, desuper contexta per totum. dixerunt ergo ad invicem:',\n", - " 'the soldiers therefore, when they had crucified him, took his garments (and they made four parts, to every soldier a part) and also his coat. now the coat was without seam, woven from the top throughout. they said then one to another:',\n", - " 'chorus',\n", - " 'non scindamus eam, sed sortiamur de illa cujus sit.',\n", - " 'let us not cut it, but let us cast lots for it, whose it shall be:',\n", - " 'evangelist',\n", - " 'ut scriptura impleretur, dicens: partiti sunt vestimenta mea sibi: et in vestem meam miserunt sortem. et milites quidem haec fecerunt. stabant autem juxta crucem jesu mater ejus, et soror matris ejus maria cleophae, et maria magdalene. cum vidisset ergo jesus matrem, et discipulum stantem, quem diligebat, dicit matri suae:',\n", - " \"that the scripture might be fulfilled which saith: they have parted my garments among them, and upon my vesture they have cast lots. and the soldiers indeed did these things. now there stood by the cross of jesus his mother, and his mother's sister, mary of cleophas and mary magdalen. when jesus therefore had seen his mother and the disciple standing whom he loved, he saith to his mother:\",\n", - " 'jesus',\n", - " 'mulier, ecce filius tuus.',\n", - " 'woman, behold thy son.',\n", - " 'evangelist',\n", - " 'deinde dicit discipulo:',\n", - " 'after that, he saith to the disciple.',\n", - " 'jesus',\n", - " 'ecce mater tua.',\n", - " 'behold thy mother.',\n", - " 'evangelist',\n", - " 'et ex illa hora accepit eam discipulus in sua. postea sciens jesus quia omnia consummata sunt, ut consummaretur scriptura, dixit:',\n", - " 'and from that hour, the disciple took her to his own. afterwards, jesus, knowing that all things were now accomplished, that the scripture might be fulfilled, said',\n", - " 'jesus',\n", - " 'sitio.',\n", - " 'i thirst.',\n", - " 'evangelist',\n", - " 'vas ergo erat positum aceto plenum. illi autem spongiam plenam aceto, hysopo circumponentes, obtulerunt ori ejus. cum ergo accepisset jesus acetum, dixit:',\n", - " 'now there was a vessel set there, full of vinegar. and they, putting a sponge full of vinegar about hyssop, put it to his mouth. jesus therefore, when he had taken the vinegar, said:',\n", - " 'jesus',\n", - " ...]},\n", - " 'data': ['cum tacent clament',\n", - " 'cum tacent clament',\n", - " 'serva ne',\n", - " 'servan tuter',\n", - " 'servan servan tuter',\n", - " 'dum inter homines',\n", - " 'sumus colamus',\n", - " 'humanitatem',\n", - " 'cum tacent clament',\n", - " 'dum inter homines',\n", - " 'sumus colamus',\n", - " 'humanitatem',\n", - " 'cum tacent clament',\n", - " 'notes',\n", - " 'the following brief notes are mainly based on those of m. brunschvicg. but those of mm. faugère, molinier, and havet have also been consulted. the biblical references are to the authorised english version. those in the text are to the vulgate, except where it has seemed advisable to alter the reference to the english version.',\n", - " 'p. 1, l. 1. the difference between the mathematical and the intuitive mind.—pascal is here distinguishing the logical or discursive type of mind, a good example of which is found in mathematical reasoning, and what we should call the intuitive type of mind, which sees everything at a glance. a practical man of sound judgment exemplifies the latter; for he is in fact guided by impressions of past experience, and does not consciously reason from general principles.',\n", - " 'p. 2, l. 34. there are different kinds, etc.—this is probably a subdivision of the discursive type of mind.',\n", - " 'p. 3, l. 31. by rule.—this is an emendation by m. brunschvicg. the ms. has sans règle.',\n", - " 'p. 4, l. 3. i judge by my watch.—pascal is said to have always carried a watch attached to his left wrist-band.',\n", - " 'p. 5, l. 21. scaramouch.—a traditional character in italian comedy.',\n", - " 'p. 5, l. 22. the doctor.—also a traditional character in italian comedy.',\n", - " 'p. 5, l. 24. cleobuline.—princess, and afterwards queen of corinth, figures in the romance of mademoiselle de scudéry, entitled artamène ou le grand cyrus. she is enamoured of one of her subjects, myrinthe. but she \"loved him without thinking of love; and remained so long in that error, that this affection was no longer in a state to be overcome, when she became aware of it.\" the character is supposed to have been drawn from christina of sweden.',\n", - " 'p. 6, l. 21. rivers are, etc.—apparently suggested by a chapter in rabelais: how we descended in the isle of odes, in which the roads walk.',\n", - " 'p. 6, l. 30. salomon de tultie.—a pseudonym adopted by pascal as the author of the provincial letters.',\n", - " 'p. 7, l. 7. abstine et sustine.—a maxim of the stoics.',\n", - " 'p. 7, l. 8. follow nature.—the maxim in which the stoics summed up their positive ethical teaching.',\n", - " 'p. 7, l. 9. as plato.—compare montaigne, essais, iii, 9.',\n", - " 'p. 9, l. 29. we call this jargon poetical beauty.—according to m. havet, pascal refers here to malherbe and his school.',\n", - " 'p. 10, l. 23. ne quid nimis.—nothing in excess, a celebrated maxim in ancient greek philosophy.',\n", - " \"p. 11, l. 26. that epigram about two one-eyed people.—m. havet points out that this is not martial's, but is to be found in epigrammatum delectus, published by port-royal in 1659.\",\n", - " 'lumine æon dextro, capta est leonilla sinistro,',\n", - " 'et potis est forma vincere uterque deos.',\n", - " 'blande puer, lumen quod habes concede parenti,',\n", - " 'sic tu cæcus amor, sic erit ilia venus.',\n", - " 'p. 11, l. 29. ambitiosa recidet ornamenta.—horace, de arte poetica, 447.',\n", - " 'p. 13, l. 2. cartesian.—one who follows the philosophy of descartes (1596-1650), \"the father of modern philosophy.\"',\n", - " 'p. 13, l. 8. le maître.—a famous french advocate in pascal\\'s time. his plaidoyers el harangues appeared in 1657. plaidoyer vi is entitled pour un fils mis en religion par force, and on the first page occurs the word répandre: \"dieu qui répand des aveuglements et des ténèbres sur les passions illégitimes.\" pascal\\'s reference is probably to this passage.',\n", - " 'p. 13, l. 12. the cardinal.—mazarin. he was one of those statesmen who do not like condolences.',\n", - " 'p. 14, l. 12. saint thomas.—thomas aquinas (1223-74), one of the greatest scholastic philosophers.',\n", - " 'p. 14, l. 16. charron.—a friend of montaigne. his traité de la sagesse (1601), which is not a large book, contains 117 chapters, each of which is subdivided.',\n", - " 'p. 14, l. 17. of the confusion of montaigne.—the essays of montaigne follow each other without any kind of order.',\n", - " 'p. 14, l. 27. mademoiselle de gournay.—the adopted daughter of montaigne. she published in 1595 an edition of his essais, and, in a preface (added later), she defends him on this point.',\n", - " 'p. 15, l. 1. people without eyes.—montaigne, essais, ii, 12.',\n", - " 'p. 15, l. 1. squaring the circle.—ibid., ii, 14.',\n", - " 'p. 15, l. 1. a greater world.—ibid., ii, 12.',\n", - " 'p. 15, l. 2. on suicide and on death.—ibid., ii, 3.',\n", - " 'p. 15, l. 3. without fear and without repentance.—ibid., iii., 2.',\n", - " 'p. 15, l. 7. (730, 231).—these two references of pascal are to the edition of the essais of montaigne, published in 1636.',\n", - " \"p. 16, l. 32. the centre which is everywhere, and the circumference nowhere.—m. havet traces this saying to empedocles. pascal must have read it in mlle de gournay's preface to her edition of montaigne's essais.\",\n", - " 'p. 18, l. 33. i will speak of the whole.—this saying of democritus is quoted by montaigne, essais, ii, 12.',\n", - " \"p. 18, l. 37. principles of philosophy.—the title of one of descartes's philosophical writings, published in 1644. see note on p. 13, l. 8 above.\",\n", - " 'p. 18, l. 39. de omni scibili.—the title under which pico della mirandola announced nine hundred propositions which he proposed to uphold publicly at rome in 1486.',\n", - " 'p. 19, l. 26. beneficia eo usque læta sunt.—tacitus, ann., lib. iv, c. xviii. compare montaigne, essais, iii, 8.',\n", - " 'p. 21, l. 35. modus quo, etc.—st. augustine, de civ. dei, xxi, 10. montaigne, essais, ii, 12.',\n", - " 'p. 22, l. 8. felix qui, etc.—virgil, georgics, ii, 489, quoted by montaigne, essais, iii, 10.',\n", - " 'p. 22, l. 10. nihil admirari, etc.—horace, epistles, i. vi. 1. montaigne, essais, ii, 10.',\n", - " 'p. 22, l. 19. 394.—a reference to montaigne, essais, ii, 12.',\n", - " 'p. 22, l. 20. 395.—ibid.',\n", - " 'p. 22, l. 22. 399.—ibid.',\n", - " 'p. 22, l. 28. harum sententiarum.—cicero, tusc., i, 11, montaigne, essais, ii, 12.',\n", - " 'p. 22, l. 39. felix qui, etc.—see above, notes on p. 22, l. 8 and l. 10.',\n", - " 'p. 22, l. 40. 280 kinds of sovereign good in montaigne.—essais, ii, 12.',\n", - " \"p. 23, l. 1. part i, 1, 2, c. 1, section 4.—this reference is to pascal's traité du vide.\",\n", - " 'p. 23, l. 25. how comes it, etc.—montaigne, essais, iii, 8.',\n", - " 'p. 23, l. 29. see epictetus, diss., iv, 6. he was a great roman stoic in the time of domitian.',\n", - " 'p. 24, l. 9. it is natural, etc.—compare montaigne, essais, i, 4.',\n", - " 'p. 24, l. 12. imagination.—this fragment is suggestive of montaigne. see essais, iii, 8.',\n", - " \"p. 25, l. 16. if the greatest philosopher, etc. see raymond sebond's apologie, from which pascal has derived his illustrations.\",\n", - " 'p. 26, l. 1. furry cats.—montaigne, essais, ii, 8.',\n", - " \"p. 26, l. 31. della opinione, etc.—no work is known under this name. it may refer to a treatise by carlo flori, which bears a title like this. but its date (1690) is after pascal's death (1662), though there may have been earlier editions.\",\n", - " 'p. 27, l. 12. source of error in diseases.—montaigne, essais, ii, 12.',\n", - " 'p. 27, l. 27. they rival each other, etc.—ibid.',\n", - " 'p. 28, l. 31. næ iste, etc.—terence, heaut., iv, i, 8. montaigne, essais, iii, 1.',\n", - " 'p. 28, l. 15. quasi quidquam, etc.—plin., ii, 7. montaigne, ibid.',\n", - " 'p. 28, l. 29. quod crebro, etc.—cicero, de divin., ii, 49.',\n", - " 'p. 29, l. 1. spongia solis.—the spots on the sun. pascal sees in them the beginning of the darkening of the sun, and thinks that there will therefore come a day when there will be no sun.',\n", - " 'p. 29, l. 15. custom is a second nature, etc.—montaigne, essais, i, 22.',\n", - " 'p. 29, l. 19. omne animal.—see genesis vii, 14.',\n", - " 'p. 30, l. 22. hence savages, etc.—montaigne, essais, i, 22.',\n", - " 'p. 32, l. 3. a great part of europe, etc.—an allusion to the reformation.',\n", - " \"p. 33, l. 13. alexander's chastity.—pascal apparently has in mind alexander's treatment of darius's wife and daughters after the battle of issus.\",\n", - " \"p. 34, l. 17. lustravit lampade terras.—part of cicero's translation of two lines from homer, odyssey, xviii, 136. montaigne, essais, ii, 12.\",\n", - " 'tales sunt hominum mentes, quali pater ipse',\n", - " 'jupiter auctiferas lustravit lampade terras.',\n", - " 'p. 34, l. 32. nature gives, etc.—montaigne, essais, i, 19.',\n", - " 'p. 37, l. 23. our nature consists, etc.—montaigne, essais, iii, 13.',\n", - " 'p. 38, l. 1. weariness.—compare montaigne, essais, ii, 12.',\n", - " 'p. 38, l. 8. cæsar was too old, etc.—see montaigne, essais, ii, 34.',\n", - " 'p. 38, l. 30. a mere trifle, etc.—montaigne, essais, iii, 4.',\n", - " 'p. 40, l. 21. advice given to pyrrhus.—ibid., i, 42.',\n", - " 'p. 41, l. 2. they do not know, etc.—ibid., i, 19.',\n", - " 'p. 44, l. 14. they are, etc.—compare montaigne, essais, i, 38.',\n", - " 'p. 46, l. 7. those who write, etc.—a thought of cicero in pro archia, mentioned by montaigne, essais, i, 41.',\n", - " 'p. 47, l. 3. ferox gens.—livy, xxxiv, 17. montaigne, essais, i, 40.',\n", - " 'p. 47, l. 5. every opinion, etc.—montaigne, ibid.',\n", - " 'p. 47, l. 12. 184.—this is a reference to montaigne, essais, i, 40. see also ibid., iii, 10.',\n", - " 'p. 48, l. 8. i know not what (corneille).—see médée, ii, vi, and rodogune, i, v.',\n", - " 'p. 48, l. 22. in omnibus requiem quæsivi.—eccles. xxiv, ii, in the vulgate.',\n", - " 'p. 50, l. 5. the future alone is our end.—montaigne, essais, i, 3.',\n", - " 'p. 50, l. 14. solomon.—considered by pascal as the author of ecclesiastes.',\n", - " 'p. 50, l. 20. unconscious of approaching fever.—compare montaigne, essais, i, 19.',\n", - " 'p. 50, l. 22. cromwell.—cromwell died in 1658 of a fever, and not of the gravel. the restoration took place in 1660, and this fragment was written about that date.',\n", - " 'p. 50, l. 28. the three hosts.—charles i was beheaded in 1649; queen christina of sweden abdicated in 1654; jean casimir, king of poland, was deposed in 1656.',\n", - " 'p. 50, l. 32. macrobius.—a latin writer of the fifth century. he was a neo-platonist in philosophy. one of his works is entitled saturnalia.',\n", - " 'p. 51, l. 5. the great and the humble, etc.—see montaigne, essais, ii, 12.',\n", - " 'p. 53, l. 5. miton.—a man of fashion in paris known to pascal.',\n", - " 'p. 53, l. 15. deus absconditus.—is. xiv, 15.',\n", - " 'p. 60, l. 26. fascinatio nugacitatis.—book of wisdom iv, 12.',\n", - " 'p. 61, l. 10. memoria hospitis, etc.—book of wisdom v, 15.',\n", - " 'p. 62, l. 5. instability.—compare montaigne, essais, iii, 12.',\n", - " 'p. 66, l. 19. foolishness, stultitium.—i cor. i, 18.',\n", - " 'p. 71, l. 5. to prove divinity from the works of nature.—a traditional argument of the stoics like cicero and seneca, and of rationalist theologians like raymond sebond, charron, etc. it is the argument from design in modern philosophy.',\n", - " \"p. 71, l. 27. nemo novit, etc.—matthew xi, 27. in the vulgate, it is neque patrem quis novit, etc. pascal's biblical quotations are often incorrect. many seem to have been made from memory.\",\n", - " 'p. 71, l. 30. those who seek god find him.—matthew vii, 7.',\n", - " 'p. 72, l. 3. vere tu es deus absconditus.—is. xiv, 15.',\n", - " 'p. 72, l. 22. ne evacuetur crux christi.—i cor. i, 17. in the vulgate we haveut non instead of ne.',\n", - " 'p. 72, l. 25. the machine.—a cartesian expression. descartes considered animals as mere automata. according to pascal, whatever does not proceed in us from reflective thought is a product of a necessary mechanism, which has its root in the body, and which is continued into the mind in imagination and the passions. it is therefore necessary for man so to alter, and adjust this mechanism, that it will always follow, and not obstruct, the good will.',\n", - " 'p. 73, l. 3. justus ex fide vivit.—romans i, 17.',\n", - " 'p. 73, l. 5. fides ex auditu.—romans x, 17.',\n", - " 'p. 73, l. 12. the creature.—what is purely natural in us.',\n", - " 'p. 74, l. 15. inclina cor meum, deus.—ps. cxix, 36.',\n", - " 'p. 75, l. 11. unus quisque sibi deum fingit.—see book of wisdom xv, 6, 16.',\n", - " 'p. 76, l. 34. eighth beatitude.—matthew v, 10. it is to the fourth beatitude that the thought directly refers.',\n", - " \"p. 77, l. 6. one thousand and twenty-eight.—the number of the stars according to ptolemy's catalogue.\",\n", - " 'p. 77, l. 29. saint augustine.—epist. cxx, 3.',\n", - " 'p. 78, l. 1. nisi efficiamini sicut parvuli.—matthew xviii, 3.',\n", - " 'p. 80, l. 20. inclina cor meum, deus, in....—ps. cxix, 36.',\n", - " 'p. 80, l. 22. its establishment.—the constitution of the christian church.',\n", - " 'p. 81, l. 20. the youths and maidens and children of the church would prophesy.—joel ii, 28.',\n", - " 'p. 83, l. 11. on what, etc.—see montaigne, essais, ii, 12.',\n", - " 'p. 84, l. 16. nihil amplius ... est.—ibid. cicero, de finibus, v, 21.',\n", - " 'p. 84, l. 17. ex senatus ... exercentur.—montaigne, essais, iii, 1. seneca, letters, 95.',\n", - " 'p. 84, l. 18. ut olim ... laboramus.—montaigne, essais, iii, 13. tacitus, ann., iii, 25.',\n", - " \"p. 84, l. 20. the interest of the sovereign.—the view of thrasymachus in plato's republic, i, 338.\",\n", - " 'p. 84, l. 21. another, present custom.—the doctrine of the cyrenaics. montaigne, essais, iii, 13.',\n", - " 'p. 84, l. 24. the mystical foundation of its authority.—montaigne, essais, iii, 13. see also ii, 12.',\n", - " 'p. 85, l. 2. the wisest of legislators.—plato. see republic, ii, 389, and v, 459.',\n", - " 'p. 85, l. 4. cum veritatem, etc.—an inexact quotation from st. augustine, de civ. dei, iv, 27. montaigne, essais, ii, 12.',\n", - " 'p. 85, l. 17. veri juris.—cicero, de officiis, iii, 17. montaigne, essais, iii, i.',\n", - " 'p. 86, l. 9. when a strong man, etc.—luke xi, 21.',\n", - " 'p. 86, l. 26. because he who will, etc.—see epictetus, diss., iii, 12.',\n", - " 'p. 88, l. 19. civil wars are the greatest of evils.—montaigne, essais, iii, 11.',\n", - " 'p. 89, l. 5. montaigne.—essais, i, 42.',\n", - " 'p. 91, l. 8. savages laugh at an infant king.—an allusion to a visit of some savages to europe. they were greatly astonished to see grown men obey the child king, charles ix. montaigne, essais, i, 30.',\n", - " \"p. 92, l. 8. man's true state.—see montaigne, essais, i, 54.\",\n", - " 'p. 95, l. 3. omnis ... vanitati.—eccles. iii, 19.',\n", - " 'p. 95, l. 4. liberabitur.—romans viii, 20-21.',\n", - " 'p. 95, l. 4. saint thomas.—in his commentary on the epistle of st. james. james ii, 1.',\n", - " 'p. 96, l. 9. the account of the pike and frog of liancourt.—the story is unknown. the duc de liancourt led a vicious life in youth, but was converted by his wife. he became one of the firmest supporters of port-royal.',\n", - " 'p. 97, l. 18. philosophers.—the stoics.',\n", - " 'p. 97, l. 24. epictetus.—diss., iv, 7.',\n", - " 'p. 97, l. 26. those great spiritual efforts, etc.—on this, and the following fragment, see montaigne, essais, ii, 29.',\n", - " 'p. 98, l. 3. epaminondas.—praised by montaigne, essais, ii, 36. see also iii, 1.',\n", - " 'p. 98, l. 17. plerumque gratæ principibus vices.—horace, odes, iii, xxix, 13, cited by montaigne, essais, i, 42. horace has divitibus instead of principibus.',\n", - " 'p. 99, l. 4. man is neither angel nor brute, etc.—montaigne, essais, iii, 13.',\n", - " 'p. 99, l. 14. ut sis contentus, etc.—a quotation from seneca. see montaigne, essais, ii, 3.',\n", - " 'p. 99, l. 21. sen. 588.—seneca, letter to lucilius, xv. montaigne, essais, iii, i.',\n", - " 'p. 99, l. 23. divin.—cicero, de divin., ii, 58.',\n", - " 'p. 99, l. 25. cic.—cicero, tusc, ii, 2. the quotation is inaccurate. montaigne, essais, ii, 12.',\n", - " 'p. 99, l. 27. senec.—seneca, epist., 106.',\n", - " 'p. 99, l. 28. id maxime, etc.—cicero, de off., i, 31.',\n", - " 'p. 99, l. 29. hos natura, etc.—virgil, georgics, ii, 20.',\n", - " 'p. 99, l. 30. paucis opus, etc.—seneca, epist., 106.',\n", - " 'p. 100, l. 3. mihi sic usus, etc.—terence, heaut., i, i, 28.',\n", - " 'p. 100, l. 4. rarum est, etc.—quintilian, x, 7.',\n", - " 'p. 100, l. 5. tot circa, etc.—m. seneca, suasoriæ, i, 4.',\n", - " 'p. 100, l. 6. cic.—cicero, acad., i, 45.',\n", - " 'p. 100, l. 7. nec me pudet, etc.—cicero, tusc., i, 25.',\n", - " 'p. 100, l. 8. melius non incipiet.—the rest of the quotation is quam desinet. seneca, epist., 72.',\n", - " 'p. 100, l. 25. they win battles.—montaigne, in his essais, ii, 12, relates that the portuguese were compelled to raise the siege of tamly on account of the number of flies.',\n", - " 'p. 100, l. 27. when it is said, etc.—by descartes.',\n", - " 'p. 102, l. 20. arcesilaus.—a follower of pyrrho, the sceptic. he lived in the third century before christ.',\n", - " 'p. 105, l. 20. ecclesiastes.—eccles. viii, 17.',\n", - " 'p. 106, l. 16. the academicians.—dogmatic sceptics, as opposed to sceptics who doubt their own doubt.',\n", - " 'p. 107, l. 10. ego vir videns.—lamentations iii, i.',\n", - " 'p. 108, l. 26. evil is easy, etc.—the pythagoreans considered the good as certain and finite, and evil as uncertain and infinite. montaigne, essais, i, 9.',\n", - " 'p. 109, l. 7. paulus æmilius.—montaigne, essais, i, 19. cicero, tusc., v, 40.',\n", - " 'p. 109, l. 30. des barreaux.—author of a licentious love song. he was born in 1602, and died in 1673. balzac call him \"the new bacchus.\"',\n", - " 'p. 110, l. 16. for port-royal.—the letters, a. p. r., occur in several places, and are generally thought to indicate what will be afterwards treated in lectures or conferences at port-royal, the famous cistercian abbey, situated about eighteen miles from paris. founded early in the thirteenth century, it acquired its greatest fame in its closing years. louis xiv was induced to believe it heretical; and the monastery was finally demolished in 1711. its downfall was no doubt brought about by the jesuits.',\n", - " 'p. 113, l. 4. they all tend to this end.—montaigne, essais, i, 19.',\n", - " 'p. 119, l. 15. quod ergo, etc.—acts xvii, 23.',\n", - " 'p. 119, l. 26. wicked demon.—descartes had suggested the possibility of the existence of an evil genius to justify his method of universal doubt. see his first meditation. the argument is quite cartesian.',\n", - " 'p. 122, l. 18. deliciæ meæ, etc.—proverbs viii, 31.',\n", - " 'p. 122, l. 18. effundam spiritum, etc.—is. xliv, 3; joel ii, 28.',\n", - " 'p. 122, l. 19. dii estis.—ps. lxxxii, 6.',\n", - " 'p. 122, l. 20. omnis caro fænum.—is. xl, 6.',\n", - " 'p. 122, l. 20. homo assimilatus, etc.—ps. xlix, 20.',\n", - " 'p. 124, l. 24. sapientius est hominibus.—1 cor. i, 25.',\n", - " 'p. 125, l. 1. of original sin.—the citations from the rabbis in this fragment are borrowed from a work of the middle ages, entitled pugio christianorum ad impiorum perfidiam jugulandam et maxime judæorum. it was written in the thirteenth century by raymond martin, a catalonian monk. an edition of it appeared in 1651, edited by bosquet, bishop of lodève.',\n", - " 'p. 125, l. 24. better is a poor and wise child, etc.—eccles. iv, 13.',\n", - " 'p. 126, l. 17. nemo ante, etc.—see ovid, met., iii, 137, and montaigne, essais, i, 18.',\n", - " 'p. 127, l. 10. figmentum.—borrowed from the vulgate, ps. ciii, 14.',\n", - " 'p. 128. l. 5. all that is in the world, etc.—first epistle of st. john, ii, 16.',\n", - " \"p. 128, l. 7. wretched is, etc.—m. faugère thinks this thought is taken from st. augustine's commentary on ps. cxxxvii, super flumina babylonis.\",\n", - " 'p. 129, l. 6. qui gloriatur, etc.—1 cor. i, 31.',\n", - " 'p. 130, l. 13. via, veritas.—john xiv, 6.',\n", - " 'p. 130, l. 14. zeno.—the original founder of stoicism.',\n", - " 'p. 130, l. 15. epictetus.—diss., iv, 6, 7.',\n", - " 'p. 131, l. 32. a body full of thinking members.—see i cor. xii.',\n", - " 'p. 133, l. 5. book of wisdom.—ii, 6.',\n", - " 'p. 134, l. 28. qui adhæret, etc.—1 cor. vi, 17.',\n", - " 'p. 134, l. 36. two laws.—matthew xxii, 35-40; mark xii, 28-31.',\n", - " 'p. 135, l. 6. the kingdom of god is within us.—luke xvii, 29.',\n", - " 'p. 137, l. 1. et non, etc.—ps. cxliii, 2.',\n", - " 'p. 137, l. 3. the goodness of god leadeth to repentance.—romans ii, 4.',\n", - " 'p. 137, l. 5. let us do penance, etc.—see jonah iii, 8, 9.',\n", - " 'p. 137, l. 27. i came to send war.—matthew x, 34.',\n", - " 'p. 137, l. 28. i came to bring fire and the sword.—luke xii, 49.',\n", - " 'p. 138, l. 2. pharisee and the publican.—parable in luke xviii, 9-14.',\n", - " 'p. 138, l. 13. abraham.—genesis xiv, 22-24.',\n", - " 'p. 138, l. 17. sub te erit appetitus tuus.—genesis iv, 7.',\n", - " 'p. 140, l. 1. it is, etc.—a discussion on the eucharist.',\n", - " 'p. 140, l. 34. non sum dignus.—luke vii, 6.',\n", - " 'p. 140, l. 35. qui manducat indignus.—i cor. xi, 29.',\n", - " 'p. 140, l. 36. dignus est accipere.—apoc. iv, ii.',\n", - " 'p. 141. in the french edition on which this translation is based there was inserted the following fragment after no. 513:',\n", - " '\"work out your own salvation with fear.\"',\n", - " 'proofs of prayer. petenti dabitur.',\n", - " 'therefore it is in our power to ask. on the other hand, there is god. so it is not in our power, since the obtaining of (the grace) to pray to him is not in our power. for since salvation is not in us, and the obtaining of such grace is from him, prayer is not in our power.',\n", - " 'the righteous man should then hope no more in god, for he ought not to hope, but to strive to obtain what he wants.',\n", - " 'let us conclude then that, since man is now unrighteous since the first sin, and god is unwilling that he should thereby not be estranged from him, it is only by a first effect that he is not estranged.',\n", - " 'therefore, those who depart from god have not this first effect without which they are not estranged from god, and those who do not depart from god have this first effect. therefore, those whom we have seen possessed for some time of grace by this first effect, cease to pray, for want of this first effect.',\n", - " 'then god abandons the first in this sense.',\n", - " 'it is doubtful, however that this fragment should be included in the pensées, and it has seemed best to separate it from the text. it has only once before appeared—in the edition of michaut (1896). the first half of it has been freely translated in order to give an interpretation in accordance with a suggestion from m. emile boutroux, the eminent authority on pascal. the meaning seems to be this. in one sense it is in our power to ask from god, who promises to give us what we ask. but, in another sense, it is not in our power to ask; for it is not in our power to obtain the grace which is necessary in asking. we know that salvation is not in our power. therefore some condition of salvation is not in our power. now the conditions of salvation are two: (1) the asking for it, and (2) the obtaining it. but god promises to give us what we ask. hence the obtaining is in our power. therefore the condition which is not in our power must be the first, namely, the asking. prayer presupposes a grace which it is not within our power to obtain.',\n", - " 'after giving the utmost consideration to the second half of this obscure fragment, and seeking assistance from some eminent scholars, the translator has been compelled to give a strictly literal translation of it, without attempting to make sense.',\n", - " 'p. 141, l. 14. lord, when saw we, etc.—matthew xxv, 37.',\n", - " 'p. 143, l. 19. qui justus est, justificetur adhuc.—apoc. xxii, ii.',\n", - " 'p. 144, l. 2. corneille.—see his horace, ii, iii.',\n", - " 'p. 144, l. 15. corrumpunt mores, etc.—i cor. xv, 33.',\n", - " 'p. 145. l. 25. quod curiositate, etc.—st. augustine, sermon cxli.',\n", - " 'p. 146, l. 34. quia ... facere.—i cor. i, 21.',\n", - " 'p. 148, l. 7. turbare semetipsum.—john xi, 33. the text is turbavit seipsum.',\n", - " 'p. 148, l. 25. my soul is sorrowful even unto death.—mark xiv, 34.',\n", - " 'p. 149, l. 3. eamus. processit.—john xviii, 4. but eamus does not occur. see, however, matthew xxvi, 46.',\n", - " 'p. 150, l. 36. eritis sicut, etc.—genesis iv, 5.',\n", - " 'p. 151, l. 2. noli me tangere.—john xx, 17.',\n", - " 'p. 156, l. 14. vere discipuli, etc.—allusions to john viii, 31, i, 47; viii, 36; vi, 32.',\n", - " 'p. 158, l. 41. signa legem in electis meis.—is. viii, 16. the text of the vulgate is in discipulis meis.',\n", - " 'p. 159, l. 2. hosea.—xiv, 9.',\n", - " 'p. 159, l. 13. saint john.—xii, 39.',\n", - " 'p. 160, l. 17. tamar.—genesis xxxviii, 24-30.',\n", - " 'p. 160, l. 17. ruth.—ruth iv, 17-22.',\n", - " 'p. 163, l. 13. history of china.—a history of china in latin had been published in 1658.',\n", - " 'p. 164, l. i. the five suns, etc.—montaigne, essais, iii, 6.',\n", - " 'p. 164, l. 9. jesus christ.—john v, 31.',\n", - " 'p. 164, l. 17. the koran says, etc.—there is no mention of saint matthew in the koran; but it speaks of the apostles generally.',\n", - " 'p. 165, l. 35. moses.—deut. xxxi, 11.',\n", - " 'p. 166, l. 23. carnal christians.—jesuits and molinists.',\n", - " 'p. 170, l. 14. whom he welcomed from afar.—john viii, 56.',\n", - " 'p. 170, l. 19. salutare, etc.—genesis xdix, 18.',\n", - " 'p. 173, l. 33. the twelve tables at athens.—there were no such tables. about 450 b.c. a commission is said to have been appointed in rome to visit greece and collect information to frame a code of law. this is now doubted, if not entirely discredited.',\n", - " 'p. 173, l. 35. josephus.—reply to apion, ii, 16. josephus, the jewish historian, gained the favour of titus, and accompanied him to the siege of jerusalem. he defended the jews against a contemporary grammarian, named apion, who had written a violent satire on the jews.',\n", - " 'p. 174, l. 27. against apion.—ii, 39. see preceding note.',\n", - " 'p. 174, l. 28. philo.—a jewish philosopher, who lived in the first century of the christian era. he was one of the founders of the alexandrian school of thought. he sought to reconcile jewish tradition with greek thought.',\n", - " 'p. 175, l. 20. prefers the younger.—see no. 710.',\n", - " 'p. 176, l. 32. the books of the sibyls and trismegistus.—the sibyls were the old roman prophetesses. their predictions were preserved in three books at rome, which tarquinius superbus had bought from the sibyl of erythræ. trismegistus was the greek name of the egyptian god thoth, who was regarded as the originator of egyptian culture, the god of religion, of writing, and of the arts and sciences. under his name there existed forty-two sacred books, kept by the egyptian priests.',\n", - " 'p. 177, l. 3. quis mihi, etc.—numbers xi, 29. quis tribuat ut omnis populus prophetet?',\n", - " 'p. 177, l. 25. maccabees.—2 macc. xi, 2.',\n", - " 'p. 177, l. 7. this book, etc.—is. xxx, 8.',\n", - " 'p. 178, l. 9. tertullian.—a christian writer in the second century after christ. the quotation is from his de cultu femin., ii, 3.',\n", - " 'p. 178, l. 16. (θεὸς), etc.—eusebius, hist., lib. v, c. 8.',\n", - " 'p. 178, l. 22. and he took that from saint irenæus.—hist., lib. x, c 25.',\n", - " 'p. 179, l. 5. the story in esdras.—2 esdras xiv. god appears to esdras in a bush, and orders him to assemble the people and deliver the message. esdras replies that the law is burnt. then god commands him to take five scribes to whom for forty days he dictates the ancient law. this story conflicted with many passages in the prophets, and was therefore rejected from the canon at the council of trent.',\n", - " 'p. 181, l. 14. the kabbala.—the fantastic secret doctrine of interpretation of scripture, held by a number of jewish rabbis.',\n", - " 'p. 181, l. 26. ut sciatis, etc.—mark ii, 10, 11.',\n", - " 'p. 183, l. 29. this generation, etc.—matthew xxiv, 34.',\n", - " 'p. 184, l. 11. difference between dinner and supper.—luke xiv, 12.',\n", - " 'p. 184, l. 28. the six ages, etc.—m. havet has traced this to a chapter in st. augustine, de genesi contra manichæos, i, 23.',\n", - " 'p. 184, l. 31. forma futuri.—romans v, 14.',\n", - " 'p. 186, l. 13. the messiah, etc.—john xii, 34.',\n", - " 'p. 186, l. 30. if the light, etc.—matthew vi, 23.',\n", - " 'p. 187, l. 1. somnum suum.—ps. lxxvi, 5.',\n", - " 'p. 187, l. 1. figura hujus mundi.—1 cor. vii, 31.',\n", - " 'p. 187, l. 2. comedes panem tuum.—deut. viii, 9. panem nostrum, luke xi, 3.',\n", - " 'p. 187, l. 3. inimici dei terram lingent.—ps. lxxii, 9.',\n", - " 'p. 187, l. 8. cum amaritudinibus.—exodus xii, 8. the vulgate has cum lacticibus agrestibus.',\n", - " 'p. 187, l. 9. singularis sum ego donec transeam.—ps. cxli, 10.',\n", - " 'p. 188, l. 19. saint paul.—galatians iv, 24; i cor. iii, 16, 17; hebrews ix, 24; romans ii, 28, 29.',\n", - " 'p. 188, l. 25. that moses, etc.—john vi, 32.',\n", - " 'p. 189, l. 3. for one thing alone is needful.—luke x, 42.',\n", - " 'p. 189, l. 15. and the christians, etc.—romans vi, 20; viii, 14, 15.',\n", - " 'p. 189, l. 17. when saint peter, etc.—acts xv. see genesis xvii, 10; leviticus xii, 3.',\n", - " 'p. 189, l. 27. fac secundum, etc.—exodus xxv, 40.',\n", - " 'p. 190, l. 1. saint paul.—1 tim. iv, 3; 1 cor. vii.',\n", - " 'p. 190, l. 7. the jews, etc.—hebrews viii, 5.',\n", - " 'p. 192, l. 15. that he should destroy death through death.— hebrews ii, 14.',\n", - " 'p. 192, l. 30. veri adoratores.—john iv, 23.',\n", - " 'p. 192, l. 30. ecce agnus, etc.—john i, 29.',\n", - " 'p. 193, l. 15. ye shall be free indeed.—john viii, 36.',\n", - " 'p. 193, l. 17. i am the true bread from heaven.—ibid., vi, 32.',\n", - " 'p. 194, l. 27. agnus occisus, etc.—apoc. xiii, 8.',\n", - " 'p. 194, l. 34. sede a dextris meis.—ps. cx, 1.',\n", - " 'p. 195, l. 12. a jealous god.—exodus xx, 5.',\n", - " 'p. 195, l. 14. quia confortavit seras.—ps. cxlvii, 13.',\n", - " 'p. 195, l. 17. the closed mem.—the allusions here are to certain peculiarities in jewish writing. there are some letters written in two ways, closed or open, as the mem.',\n", - " 'p. 199, l. 1. great pan is dead.—plutarch, de defect. orac., xvii.',\n", - " 'p. 199, l. 2. susceperunt verbum, etc.—acts xvii, 11.',\n", - " 'p. 199, l. 20. the ruler taken from the thigh.—genesis xlix, 10.',\n", - " 'p. 208, l. 6. make their heart fat.—is. vi, 10; john xii, 40.',\n", - " 'p. 209, l. 1. non habemus regem nisi cæsarem.—john xix, 15.',\n", - " 'p. 218, l. 17. in horeb, etc.—deut. xviii, 16-19.',\n", - " 'p. 220, l. 34. then they shall teach, etc.—jeremiah xxxi, 34.',\n", - " 'p. 221, l. 1. your sons shall prophesy.—joel ii, 28.',\n", - " 'p. 221, l. 20. populum, etc.—is. lxv, 2; romans x, 21.',\n", - " 'p. 222, l. 25. eris palpans in meridie.—deut. xxviii, 29.',\n", - " 'p. 222, l. 26. dabitur liber, etc.—is. xxix, 12. the quotation is inaccurate.',\n", - " 'p. 223, l. 24. quis mihi, etc.—job xix, 23-25.',\n", - " \"p. 224, l. 1. pray, etc.—the fragments here are pascal's notes on luke. see chaps. xxii and xxiii.\",\n", - " 'p. 225, l. 20. excæca.—is. vi, 10.',\n", - " 'p, 226, l. 9. lazarus dormit, etc.—john xi, 11, 14.',\n", - " 'p. 226, l. 10. the apparent discrepancy of the gospels.—to reconcile the apparent discrepancies in the gospels, pascal wrote a short life of christ.',\n", - " 'p. 227, l. 13. gladium tuum, potentissime.—ps. xlv, 3.',\n", - " 'p. 228, l. 25. ingrediens mundum.—hebrews x, 5.',\n", - " 'p. 228, l. 26. stone upon stone.—mark xiii, 2.',\n", - " 'p. 229, l. 20. jesus christ at last, etc.—see mark xii.',\n", - " 'p. 230, l. 1. effundam spiritum meum.—joel ii, 28.',\n", - " 'p. 230, l. 6. omnes gentes ... eum.—ps. xxii, 27.',\n", - " 'p. 230, l. 7. parum est ut, etc.—is. xlix, 6.',\n", - " 'p. 230, l. 7. postula a me.—ps. ii, 8.',\n", - " 'p. 230, l. 8. adorabunt ... reges.—ps. lxxii, 11.',\n", - " 'p. 230, l. 8. testes iniqui.—ps. xxv, 11.',\n", - " 'p. 230, l. 8. dabit maxillam percutienti.—lamentations iii, 30.',\n", - " 'p. 230, l. 9. dederunt fel in escam.—ps. lxix, 21.',\n", - " 'p. 230, l. 11. i will bless them that bless thee.—genesis xii, 3.',\n", - " 'p. 230, l. 12. all nations blessed in his seed.—ibid., xxii, 18.',\n", - " 'p. 230, l. 13. lumen ad revelationem gentium.—luke ii, 32.',\n", - " 'p. 230, l. 14. non fecit taliter, etc.—ps. cxlvii, 20.',\n", - " 'p. 230, l. 20. bibite ex hoc omnes.—matthew xxvi, 27.',\n", - " 'p. 230, l. 22. in quo omnes peccaverunt.—romans v, 12.',\n", - " 'p. 230, l. 26. ne timeas pusillus grex.—luke xii, 32.',\n", - " 'p. 230, l. 29. qui me, etc.—matthew x, 40.',\n", - " 'p. 230, l. 32. saint john.—luke i, 17.',\n", - " 'p. 230, l. 33. jesus christ.—ibid., xii, 51.',\n", - " 'p. 231, l. 5. omnis judæa, etc.—mark i, 5.',\n", - " 'p. 231, l. 7. from these stones, etc.—matthew iii, 9.',\n", - " 'p. 231, l. 9. ne convertantur, etc.—mark iv, 12.',\n", - " 'p. 231, l. 11. amice, ad quid venisti?—matthew xxvi, 50.',\n", - " 'p. 231, l. 31. what is a man, etc.—luke ix, 25.',\n", - " 'p. 231, l. 32. whosoever will, etc.—ibid., 24.',\n", - " 'p. 232, l. 1. i am not come, etc.—matthew v, 17.',\n", - " 'p. 232, l. 2. lambs took not, etc.—see john i, 29.',\n", - " 'p. 232, l. 4. moses.—ibid., vi, 32; viii, 36.',\n", - " 'p. 232, l. 15. quare, etc.—ps. ii, 1, 2.',\n", - " 'p. 233, l. 8. i have reserved me seven thousand.—1 kings xix, 18.',\n", - " 'p. 234, l. 27. archimedes.—the founder of statics and hydrostatics. he was born at syracuse in 287 b.c., and was killed in 212 b.c. he was not a prince, though a relative of a king. m. havet points out that cicero talks of him as an obscure man (tusc, v, 23).',\n", - " 'p. 235, l. 33. in sanctificationem et in scandalum.—is. viii, 14.',\n", - " 'p. 238, l. 11. jesus christ.—mark ix, 39.',\n", - " 'p. 239, l. 7. rejoice not, etc.—luke x, 20.',\n", - " 'p. 239, l. 12. scimus, etc.—john iii, 2.',\n", - " 'p. 239, l. 25. nisi fecissem ... haberent.—ibid., xv, 24.',\n", - " 'p. 239, l. 32. the second miracle.—ibid., iv, 54.',\n", - " 'p. 240, l. 6. montaigne.—essais, ii, 26, and iii, 11.',\n", - " 'p. 242, l. 9. vatable.—professor of hebrew at the collège royal, founded by francis i. an edition of the bible with notes under his name, which were not his, was published in 1539.',\n", - " 'p. 242, l. 19. omne regnum divisum.—matthew xii, 25; luke xi, 17.',\n", - " 'p. 242, l. 23. si in digito ... vos.—luke xi, 20.',\n", - " \"p. 243, l. 12. q. 113, a. 10, ad. 2.—thomas aquinas's summa, pt. i, question 113, article 10, reply to the second objection.\",\n", - " 'p. 243, l. 18. judæi signa petunt, etc.—i cor. i, 22.',\n", - " 'p. 243, l. 23. sed vos, etc.—john x, 26.',\n", - " 'p. 246, l. 15. tu quid dicis? etc.—john ix, 17, 33.',\n", - " 'p. 247, l. 14. though ye believe not, etc.—john x, 38.',\n", - " 'p. 247, l. 25. nemo facit, etc.—mark ix, 39.',\n", - " \"p. 247, l. 27. a sacred relic.—this is a reference to the miracle of the holy thorn. marguerite périer, pascal's niece, was cured of a fistula lachrymalis on 24 march, 1656, after her eye was touched with this sacred relic, supposed to be a thorn from the crown of christ. this miracle made a great impression upon pascal.\",\n", - " 'p. 248, l. 23. these nuns.—of port-royal, as to which, see note on page 110, line 16, above. they were accused of calvinism.',\n", - " 'p. 248, l. 28. vide si, etc.—ps. cxxxix, 24.',\n", - " 'p. 249, l. 1. si tu, etc.—luke xxii, 67.',\n", - " 'p. 249, l. 2. opera quæ, etc.—john v, 36; x, 26-27.',\n", - " 'p. 249, l. 7. nemo potest, etc.—john iii, 2.',\n", - " 'p. 249, l. 11. generatio prava, etc.—matthew xii, 39.',\n", - " 'p. 249, l. 14. et non poterat facere.—mark vi, 5.',\n", - " 'p. 249, l. 16. nisi videritis, non creditis.—john iv, 8, 48.',\n", - " 'p. 249, l. 23. tentat enim, etc.—deut. xiii, 3.',\n", - " 'p. 249, l. 25. ecce prædixi vobis: vos ergo videte.—matthew xxiv, 25, 26.',\n", - " 'p. 250, l. 7. we have moses, etc.—john ix, 29.',\n", - " 'p. 250, l. 30. quid debui.—is. v, 3, 4. the vulgate is quis est quod debui ultra facere vineæ meæ, et non feci ei.',\n", - " 'p. 251, l. 12. bar-jesus blinded.—acts xiii, 6-11.',\n", - " 'p. 251, l. 14. the jewish exorcists.—ibid., xix, 13-16.',\n", - " 'p. 251, l. 18. si angelus.—galatians i, 8.',\n", - " 'p. 252, l. 10. an angel from heaven.—see previous note.',\n", - " 'p. 252, l. 14. father lingende.—claude de lingendes, an eloquent jesuit preacher, who died in 1660.',\n", - " 'p. 252, l. 33. ubi est deus tuus?—ps. xiii, 3.',\n", - " 'p. 252, l. 34. exortum est, etc.—ps. cxii, 4.',\n", - " 'p. 253, l. 6. saint xavier.—saint françois xavier, the friend of ignatius loyola, became a jesuit.',\n", - " 'p. 253, l. 9. væ qui, etc.—is. x, i.',\n", - " 'p. 253, l. 24. the five propositions.—see preface.',\n", - " 'p. 253, l. 36. to seduce, etc.—mark xiii, 22.',\n", - " 'p. 254, l. 6. si non fecissem.—john xv, 24.',\n", - " 'p. 255, l. 11. believe in the church.—matthew xviii, 17-20.',\n", - " 'p. 257, l. 14. they.—the jansenists, who believed in the system of evangelical doctrine deduced from augustine by cornelius jansen (1585-1638), the bishop of ypres. they held that interior grace is irresistible, and that christ died for all, in reaction against the ordinary catholic dogma of the freedom of the will, and merely sufficient grace.',\n", - " 'p. 258, l. 4. a time to laugh, etc.—eccles. iii, 4.',\n", - " 'p. 258, l. 4. responde. ne respondeas.—prov. xxvi, 4, 5.',\n", - " 'p. 260, l. 3. saint athanasius.—patriarch of alexandria, accused of rape, of murder, and of sacrilege. he was condemned by the councils of tyre, aries, and milan. pope liberius is said to have finally ratified the condemnation in a.d. 357. athanasius here stands for jansenius, saint thersea for mother angélique, and liberius for clement ix.',\n", - " 'p. 261, l. 17. vos autem non sic.—luke xxii, 26.',\n", - " 'p. 261, l. 23. duo aut tres in unum.—john x, 30; first epistle of st. john, v, 8.',\n", - " 'p. 262, l. 18. the fronde.—the party which rose against mazarin and the court during the minority of louis xiv. they led to civil war.',\n", - " 'p. 262, l. 25. pasce oves meas.—john xxi, 17.',\n", - " 'p. 263, l. 14. jeroboam.—i kings xii, 31.',\n", - " 'p. 265, l. 21. the servant, etc.—john xv, 15.',\n", - " 'p. 266, l. 4. he that is not, etc.—matthew xii, 30.',\n", - " 'p. 266, l. 5. he that is not, etc.—mark ix, 40.',\n", - " 'p. 266, l. 11. humilibus dot gratiam.—james iv, 6.',\n", - " 'p. 266, l. 12. sui eum non, etc.—john i, 11, 12.',\n", - " 'p. 266, l. 33. we will be as the other nations.—i sam. viii, 20.',\n", - " 'p. 268, l. 19. vince in bono malum.—romans xii, 21.',\n", - " 'p. 268, l. 26. montalte.—see note on page 6, line 30, above.',\n", - " 'p. 269, l. 11. probability.—the doctrine in casuistry that of two probable views, both reasonable, one may follow his own inclinations, as a doubtful law cannot impose a certain obligation. it was held by the jesuits, the famous religious order founded in 1534 by ignatius loyola. this section of the pensées is directed chiefly against them.',\n", - " 'p. 269, l. 22. coacervabunt sibi magistros.—2 tim. iv, 3.',\n", - " 'p. 270, l. 3. these.—the writers of port-royal.',\n", - " 'p. 270, l. 15. the society.—the society of jesus.',\n", - " 'p. 271, l. 15. digna necessitas.—book of wisdom xix, 4.',\n", - " 'chapter i',\n", - " 'the origins of the vampire',\n", - " 'throughout the whole vast shadowy world of ghosts and demons there is no figure so terrible, no figure so dreaded and abhorred, yet dight with such fearful fascination, as the vampire, who is himself neither ghost nor demon, but yet who partakes the dark natures and possesses the mysterious and terrible qualities of both. around the vampire have clustered the most sombre superstitions, for he is a thing which belongs to no world at all; he is not a demon, for the devils have a purely spiritual nature, they are beings without any body, angels, as is said in s. matthew xxv. 41, \"the devil and his angels.\" and although s. gregory writes of the word angel, \"nomen est officii, non naturae,\"--the designation is that of an office not of a nature, it is clear that all angels were in the beginning created good in order to act as the divine messengers (ἄγγελοι), and that afterwards the fallen angels lapsed from their original state. the authoritative teaching of the fourth lateran council under innocent iii in 1215, dogmatically lays down: \"diabolus enim et alii daemones a deo quidem natura creati sunt boni, sed ipsi per se facti sunt mali.\" and it is also said, job iv. 18: \"ecce qui seruiunt ei, non sunt stabiles, et in angelis suis reperit prauitatem.\" (behold they that serve him are not steadfast, and in his angels he found wickedness.)',\n", - " 'john heinrich zopfius in his dissertatio de uampiris seruiensibus, halle, 1733, says: \"vampires issue forth from their graves in the night, attack people sleeping quietly in their beds, suck out all their blood from their bodies and destroy them. they beset men, women and children alike, sparing neither age nor sex. those who are under the fatal malignity of their influence complain of suffocation and a total deficiency of spirits, after which they soon expire. some who, when at the point of death, have been asked if they can tell what is causing their decease, reply that such and such persons, lately dead, have arisen from the tomb to torment and torture them.\" scoffern in his stray leaves of science and folk lore writes: \"the best definition i can give of a vampire is a living, mischievous and murderous dead body. a living dead body! the words are idle, contradictory, incomprehensible, but so are vampires.\" horst, schriften und hypothesen über die vampyren, (zauberbibliothek, iii) defines a vampire as \"a dead body which continues to live in the grave; which it leaves, however, by night, for the purpose of sucking the blood of the living, whereby it is nourished and preserved in good condition, instead of becoming decomposed like other dead bodies.\"',\n", - " 'a demon has no body, although for purposes of his own he may energize, assume, or seem to assume a body, but it is not his real and proper body. so the vampire is not strictly a demon, although his foul lust and horrid propensities be truly demoniacal and of hell.',\n", - " 'neither may the vampire be called a ghost or phantom, strictly speaking, for an apparition is intangible, as the latin poet tells us:',\n", - " 'par leuibus uentis uolucrique simillima somno.',\n", - " 'and upon that first easter night when jesus stood in the midst of his disciples and they were troubled and frightened, supposing they had seen a spirit, he said: \"uidete manus meas, et pedes, quia ego ipse sum: palpate, et uidete: quia spiritus carnem, et ossa non habet, sicut ne uidetis habere.\" (see my hands and feet, that it is i myself; handle and see: for a spirit hath not flesh and bone, as you see me to have.)',\n", - " 'there are, it is true, upon record some few instances when persons have been able to grasp, or have been grasped by and felt the touch of, a ghost, but these phenomena must be admitted as exceptions altogether, if indeed, they are not to be explained in some other way, as for example, owing to the information of a body by some spirit or familiar under very rare and abnormal conditions.',\n", - " \"in the case of the very extraordinary and horrible hauntings of the old darlington and stockton station, mr. james durham, the night-watchman, when one winter evening in the porter's cellar was surprised by the entry of a stranger followed by a large black retriever. this visitor without uttering a word dealt him a blow and he had the impression of a violent concussion. naturally he struck back with his fist which seemed however to pass through the figure and his knuckles were grazed against the wall beyond. none the less the man uttered an unearthly squeak at which the dog gripped mr. durham in the calf of the leg causing considerable pain. in a moment the stranger had called off the retriever by a curious click of the tongue, and both man and animal hurried into the coal-house whence there was no outlet. a moment later upon examination neither was to be seen. it was afterwards discovered that many years before an official who was invariably accompanied by a large black dog had committed suicide upon the premises, if not in the very cellar, where at least his dead body had been laid. the full account with the formal attestation dated 9th december, 1890, may be read in w. t. stead's real ghost stories, reprint, grant richards, 1897, chapter xi, pp. 210-214.\",\n", - " 'major c. g. macgregor of donaghadee, county down, ireland, gives an account of a house in the north of scotland which was haunted by an old lady, who resided there for very many years and died shortly after the beginning of the nineteenth century. several persons who slept in the room were sensibly pushed and even smartly slapped upon the face. he himself on feeling a blow upon the left shoulder in the middle of the night turned quickly and reaching out grasped a human hand, warm, soft, and plump. holding it tight he felt the wrist and arm which appeared clothed in a sleeve and lace cuff. at the elbow all trace ceased, and in his astonishment he released the hand. when a light was struck nobody could be seen in the room.',\n", - " \"in a case which occurred at a cottage in girvan, south ayrshire, a young woman lost her brother, a fisher, owing to the swamping of his boat in a storm, when the body was recovered it was found that the right hand was missing. this occasioned the poor girl extraordinary sorrow, but some few nights later when she was undressing, preparatory to bed, she suddenly uttered a piercing shriek which immediately brought the other inmates of the house to her room. she declared that she had felt a violent blow dealt with an open hand upon her shoulder. the place was examined, and distinctly marked in livid bruises there was seen the impression of a man's right hand.\",\n", - " 'andrew lang in his dreams and ghosts (new edition, 1897), relates the story of \"the ghost that bit,\" which might seem to have been a vampire, but which actually cannot be so classed since vampires have a body and their craving for blood is to obtain sustenance for their body. the narrative is originally to be found in notes and queries, 3rd september 1864, and the correspondent asserts that he took it \"almost verbatim from the lips of the lady\" concerned, a person of tried veracity. emma s------ was asleep one morning in her room at a large house near cannock chase. it was a fine august day in 1840, but although she had bidden her maid call her at an early hour she was surprised to hear a sharp knocking upon her door about 3.30. in spite of her answer the taps continued, and suddenly the curtains of her bed were slightly drawn, when to her amaze she saw the face of an aunt by marriage looking through upon her. half unconsciously she threw out her hand, and immediately one of her thumbs was sensibly premed by the teeth of the apparition. forthwith she arose, dressed, and went downstairs, where not a creature was stirring. her father upon coming down rallied her a little upon being about at cockcrow and inquired the cause. when she informed him he determined that later in the day he would pay a visit to his sister-in-law who dwelt at no great distance. this he did, only to discover that she had unexpectedly died at about 3.30 that morning. she had not been in any way ailing, and the shock was fearfully sudden. on one of the thumbs of the corpse was found a mark as if it had been bitten in the last agony.',\n", - " 'the disturbances at the lamb hostelry, lawford\\'s gate, bristol, which aroused something more than local interest in the years 1761-62, were not improbably due to witchcraft and caused by the persecutions of a woman who trafficked in occultism of the lowest order, although on the other hand they may have been poltergeist manifestations. the two little girls, molly and debby giles, who were the subjects of these phenomena, were often severely bitten and pinched. the impressions of eighteen or twenty teeth were seen upon their arms, the marks being clammy with saliva and warm spittle, \"and the children were roaring out for the pain of the pinches and bites.\" on one occasion whilst an observer was talking to dobby giles she cried out that she was bitten in the neck when there suddenly appeared \"the mark of teeth, about eighteen, and wet with spittle.\" that the child should have nipped herself was wholly impossible, and nobody was near her save mr. henry durbin who recorded these events, and whose account was first printed in 1800, the year after his death, since he did not wish his notes to be given to the public during his lifetime. on 2nd january, 1762, mr. durbin notes: \"dobby cried the hand was about her sister\\'s throat, and i saw the flesh at the side of her throat pushed in, whitish as if done with fingers, though i saw none. her face grew red and blackish presently, as if she was strangled, but without any convulsion or contraction of the muscles.\" thursday, 7th january, 1762, we have: \"dobby was bitten most and with deeper impressions than molly. the impression of the teeth on their arms formed an oval, which measured two inches in length.\" all this certainly looks as if sorcery were at work. it may be remembered that in salem during the epidemic of witchcraft the afflicted persons were tormented \"by biting, pinching, strangling, etc.\" when goodwife corey was on trial, \"it was observed several times, that if she did but bite her under lip in time of examination, the persons afflicted were bitten on their arms and wrists, and produced the marks before the magistrates, minister, and others.\"',\n", - " 'in the proceedings of the national laboratory of psychical research, vol. i., 1927, will be found an account of the phenomena connected with eleonore zügun, a young rumanian peasant girl, who in the autumn of 1926, when only thirteen years old was brought to london by the countess wassilko-serecki, in order that the manifestations might be investigated at \"the national laboratory of psychical research,\" queensberry place, south kensington. the child was said to be persecuted by some invisible force or agent, which she knew as dracu, anglice the devil. there were many extraordinary happenings and she was continually being scratched and bitten by this unseen intelligence. it must suffice to give but two or three instances of the very many \"biting phenomena.\" on the afternoon of monday, 4th october, 1926, captain neil gow an investigator in his report, notes: \"3.20. eleonore cried out. showed marks on back of left hand like teeth-marks which afterwards developed into deep weals. . . . 4.12. eleonore was just raising a cup of tea to her lips, but suddenly gave a cry and put the cup down hastily: there was a mark on her right hand similar to that caused by a bite. both rows of teeth were indicated.\" of the same incident, mr. clapham palmer, an investigator who was also present writes: \"eleonore was in the act of raising the cup to her lips when she suddenly gave a little cry of pain, put down her cup and rolled up her sleeve. on her forearm i then saw what appeared to be the marks of teeth indented deeply in the flesh, as if she or someone had fiercely bitten her arm. the marks turned from red to white and finally took the form of white raised weals. they gradually faded but were still noticeable after an hour or so.\" such bitings not infrequently occurred, and photographs have been taken of the marks.',\n", - " 'it were an interesting question to discuss the cause of these indentations and no doubt it is sufficiently remarkable, but however that may be such inquiry were impertinent here, for it is clearly not vampirism, nor indeed cognate thereto. the object of the vampire is to suck blood, and in these cases if blood was ever drawn it was more in the nature of a scratch or slight dental puncture, there was no effusion. again the agent who inflicted these bites was not sufficiently material to be visible, at any rate he was able to remain unseen. the true vampire is corporeal.',\n", - " 'the vampire has a body, and it is his own body. he is neither dead nor alive; but living in death. he is an abnormality; the androgyne in the phantom world; a pariah among the fiends.',\n", - " 'even the pagan poet taught his hearers and his readers that death was a sweet guerdon of repose, a blessed oblivion after the toil and struggle of life. there are few things more beautiful and there are few things more sad than the songs of our modern pagans who console their aching hearts with the wistful vision of eternal sleep. although perhaps they themselves know it not, their delicate but despairing melancholy is an heritage from the weary yet tuneful singers of the last days of hellas, souls for whom there was no dawn of hope in the sky. but we have a certain knowledge and a fairer surety for \"now christ is risen from the dead, the first-fruits of them that sleep.\" yet gray, half greek, seems to promise to his rustics and his hinds as their richest reward after life of swink and toil dear forgetfulness and eternal sleep. swinburne was glad:',\n", - " 'that no life lives for ever',\n", - " 'that dead men rise up never;',\n", - " 'that even the weariest river',\n", - " 'winds somewhere safe to sea.',\n", - " '. . . . .',\n", - " 'only the eternal sleep',\n", - " 'in an eternal night.',\n", - " 'emily brontë lusted for mere oblivion:',\n", - " 'oh, for the time when i shall sleep',\n", - " 'without identity.',\n", - " 'and never care how rain may steep,',\n", - " 'or snow may cover me!',\n", - " 'flecker in utter despair wails out:',\n", - " 'i know dead men are deaf, and cannot hear',\n", - " 'the singing of a thousand nightingales . . .',\n", - " 'i know dead men are blind and cannot see',\n", - " 'the friend that shuts in horror their big eyes,',\n", - " 'and they are witless--',\n", - " 'even more beautifully than the poets have sung, a weaver of exquisite prose has written: \"death must be so beautiful. to lie in the soft brown earth, with the grasses waving above one\\'s head, and listen to silence. to have no yesterday, and no to-morrow. to forget time.\" poor sorry souls! how arid, how empty are such aspirations when we think of the ardent glowing phrase of the little flower: \"je veux passer mon ciel à faire du bien sur la terre!\" and \"even in the bosom of the beatific vision the angels watch over us. no, i shall never be able to take any rest until the end of the world. but when the angel shall have said \\'time is no more,\\' then i shall rest, then i shall be able to rejoice, since the number of the elect will be complete.\"',\n", - " 'so we see that even for those who take the most pagan, the most despairing, the most erroneous views, the ideal is oblivion and rest. how fearful a destiny then is that of the vampire, who has no rest in the grave, but whose doom it is to come forth and prey upon the living. in the first place it may briefly be inquired how the belief in vampirism originated, and here it is not impertinent to remark that the careful investigations in connexion with psychic phenomena which have been so fruitful of recent years, and even modern scientific discovery, have proved the essential truth of many an ancient record and old superstition, which were until yesterday dismissed by the level-headed as the wildest sensationalism of melodramatic romance. the origins of a belief in vampirism, although, of course, very shadowy, unformed and unrelated, may probably be said to go back to the earliest times when primitive man observed the mysterious relations between soul and body. the division of an individual into these two parts must have been suggested to man by his observation, however crude and rough, of the phenomenon of unconsciousness, as exhibited in sleep and more particularly in death. he cannot but have speculated concerning that something, the loss of which withdraws man for ever from the living and waking world. he was bound to ask himself if there was any continuance in any circumstances at present veiled from, and unknown to, him of that life and that personality which had obviously passed elsewhere. the question was an eternal one, and it was, moreover, a personal one which concerned him most intimately, since it related to an experience he could not expect to escape. it was clear to him before long that the process called death was merely a passage to another world, and naturally enough he pictured that world as being very like the one he knew, only man would there enjoy extended powers over the forces with which he waged such ceaseless war for the mastery during his period on earth. it might be that the world was not so very far away, and it was not to be supposed that persons who had passed over would lose their interest in and affection for those who for a little while had been left behind. relations must not be forgotten just because they did not happen to be visibly present, any more than to-day we forget one of the family who has gone on a voyage for a week or a month or a year. naturally those whose age and position during their lifetime had entitled them to deference and respect must be treated with the same consideration, nay, with even more ample honours since their authority had become mysteriously greater and they would be more active to punish any disrespect or neglect. hence as a family venerated the father of the house both in life and after death, which was the germ of ancestral worship, so the tribe would venerate the great men, the chieftains and the heroes, whose exploits had won so much not only for their own particular houses, but for the whole clan. the shilluk, a tribe who dwell upon the western bank of the white nile, and who are governed by a single king, still maintain the worship of nyakang, the hero who founded the dynasty and settled this people in their present territory. nyakang is conceived as having been a man, although he did not actually die but vanished from sight. yet he is not altogether divine, for the great god of the shilluk, the creator of mankind and the world, juok, is without form, invisible and omnipresent. he is far greater than and far above nyakang, and he reigns in those highest heavens where neither the prayers of man can reach his ears, nor can he smell the sweet savour of sacrifice.',\n", - " 'not only nyakang, but each of the shilluk kings after death is worshipped, and the grave of the monarch becomes a sanctuary, so that throughout the villages there are many shrines tended by certain old men and old women, where a ritual which is practically identical in each separate place is elaborately conducted. indeed, the principal element in the religion of the shilluk may be said to be the veneration of their dead kings.',\n", - " 'other african tribes also worship their dead kings. the baganda, whose country uganda lies at the actual source of the nile, think of their dead kings as being equal to the gods, and the temples of the deceased monarchs are built and maintained with the utmost care. formerly when a king died hundreds of men were killed so that their spirits might attend upon the spirit of their master, and what is very significant as showing that these people believe the king and his ghostly followers could return in forms sufficiently corporeal to perform the very material function of eating is that on certain solemn days at earliest dawn the sacred tomtom is beaten at the temple gates and crowds of worshippers bring baskets of food for the dead king and his followers lest being hungry he should become angered and punish the whole tribe.',\n", - " 'in kiziba, which lies on the western side of the lake victoria nyanza, the religion of the natives consists of the worship of their dead kings, although there is a supreme god rugada, who created the world, man and beasts, but even their hierarchs know little about him and he receives no sacrifice, the business of the priests being to act as intermediaries between the people and the dead monarchs.',\n", - " 'so the bantu tribes of northern rhodesia acknowledge a supreme deity, leza, whose power is manifested in the storm, in the torrential rain clouds, in the roar of thunder and the flash of lightning, but to whom there is no direct access by prayer or by sacrifice. the gods, then, whom these tribes worship are sharply divided into two classes, the spirits of departed chiefs, who are publicly venerated by the whole tribe, and the spirits of relations who are privately honoured by a family, whose head performs the sacerdotal functions upon these occasions. \"among the awemba there is no special shrine for these purely family spirits, who are worshipped inside the hut, and to whom family sacrifices of a sheep, a goat, or a fowl is made, the spirit receiving the blood spilt upon the ground, while all the members of the family partake of the flesh together. for a religious wemba man the cult of the spirit of his nearest relations (of his grandparents, or of his deceased father, mother, elder brother or maternal uncle) is considered quite sufficient. out of these spirit relatives a man will worship one whom he considers as a special familiar, for various reasons. for instance, the diviner may have told him that his last illness was caused because he had not respected the spirit of his uncle; accordingly he will be careful in the future to adopt his uncle as his tutelary spirit. as a mark of such respect he may devote a cow or a goat to one of the spirits of his ancestors.\" this custom is very significant, and two points should be especially noted. the first is that the deceased, or the spirit of the deceased, is not merely propitiated by, but partakes of, blood, which is spilt for his benefit. secondly, the deceased, if not duly honoured, can cause illness, and therefore is capable of exercising a certain vengeful or malevolent power. the essential conception that underlies these customs is not so very far removed from the tradition of a vampire who craves to suck blood and causes sickness through his malignancy.',\n", - " 'very similar ideas prevail among the herero, a bantu tribe of german south-west africa, who believe that ndjambi karunga, the great good god who dwells in heaven above is far too remote to be accessible, wherefore he neither receives nor requires worship and offerings. \"it is their ancestors (ovakuru) whom they must fear; it is they who are angry and can bring danger and misfortune on a man . . . it is in order to win and keep their favour, to avert their displeasure and wrath, in short to propitiate them, that the herero bring their many offerings; they do so not out of gratitude, but out of fear, not out of love, but out of terror.\" the rev. g. viehe, a missionary among the tribe writes: \"the religious customs and ceremonies of the ovaherero are all rooted in the presumption that the deceased continue to live, and that they have a great influence on earth, and exercise power over the life and death of man.\"',\n", - " 'the religion of the ovambo, another bantu tribe of german south-west africa, runs on practically the same lines. the supreme being, kalunga, the creator, desires neither adoration nor fear. the whole religion is the worship, or rather the propitiation, of the spirits of the dead. every man at death leaves behind him a phantom form which continues a certain kind of life (not very clearly defined) upon earth, and this spirit has power over the living. especially may it cause various kinds of sickness. the spirits of private persons can only exert their influence over the members of their own families; the souls of chiefs and great warriors have a much wider scope, they can influence the whole clan for weal or woe; they can even to some extent control the powers of nature and ensure a bountiful corn-crop by their careful provision of rain, since under their kindly direction there shall be neither too little nor too great an abundance. moreover, they can ward off disease, but if on the other hand they be offended they can visit the tribe with pestilence and famine. it may be particularly noted that among the ovambo the phantoms of dead magicians are dreaded and feared in no ordinary manner. the only way to prevent the increase of these dangerous spirit folk is by depriving the body of its limbs, a precaution which must be taken immediately after death. so it is customary to sever the arms and legs from the trunk and to cut the tongue out of the mouth, in order that the spirit may have no power either of movement or of speech, since the mutilation of the corpse has rendered a ghost, who would assuredly be both powerful and truculent, inoperative and incapable. it will later be seen that the mutilation, the cutting off of the head, and especially the driving of a stake through the body with other dismemberments, were resorted to as the most effective means, short of complete cremation, of dealing with a vampire, whilst according to theosophists only those become vampires who have during their lifetime been adepts in black magic, and miss jessie adelaide middleton says that the people who become vampires are witches, wizards and suicides.',\n", - " 'canon callaway has recorded some very interesting details of amatongo or ancestor worship among the zulus. a native account runs as follows: \"the black people do not worship all amatongo indifferently, that is, all the dead of their tribes. speaking generally, the head of each house is worshipped by the children of that house; for they do not know the ancients who are dead, nor their laud-giving names, nor their names. but their father whom they knew is the head by whom they begin and end in their prayer, for they know him best, and his love for his children; they remember his kindness to them whilst he was living, they compare his treatment of them whilst he was living, support themselves by it and say, \\'he will still treat us in the same way now he is dead. we do not know why he should regard others besides us; he will regard us only.\\' so it is then although they worship the many amatongo of their tribe, making a great fence around them for their protection; yet their father is far before all others when they worship the amatongo. their father is a great treasure to them even when he is dead.\" it would appear that among the zulus the spirits of those who are recently deceased, especially the fathers and mothers of families, are most generally venerated and revered. as is natural, the spirits of the remoter dead are forgotten, for time passes and their memory perishes when those who knew them and sang their praises follow them into the world beyond. as we have remarked, in nearly every case we find recognized the existence of a supreme being, who is certainly a high spiritual power that had never been a man, and the homage paid to whom (in those very rare instances where such worship is conceived of as desirable or even possible) differs entirely from the cult of the dead, be they family ancestors or some line of ancient kings. there are, of course, many other gods in the african pantheon, and although the natives will not allow that these were ever men, and indeed sharply differentiate in ritual practice their worship from the cult of the spirits and phantoms, yet in nearly all cases it is to be suspected, and in many cases it is certain, that these gods were heroes of old whose legend instead of becoming faint with years and dying away grew more and more splendid until the monarch or the warrior passed into pure deity. a similar process holds forth in heathen religions the wide world over. and with regard to the baganda polytheism the rev. j. roscoe remarks \"the principal gods appear to have been at one time human beings, noted for their skill and bravery, who were afterwards deified by the people and invested with supernatural powers.\"',\n", - " 'it is said that the caffres believe that men of evil life after death may return during the night in corporeal form and attack the living, often wounding and killing them. it seems that these revenants are much attracted by blood which enables them more easily to effect their purpose, and even a few red drops will help to vitalize their bodies. so a caffre has the greatest horror of blood, and will never allow even a spot fallen from a bleeding nose or a cut to lie uncovered, but should it stain the ground it must be instantly hidden with earth, and if it splotch upon their bodies they must purify themselves from the pollution with elaborate lustral ceremonies.',\n", - " 'there are, indeed, few if any peoples who have not realized the mysterious significance attached to blood, and examples of this belief are to be found in the history of every clime. it is expressed by the chinese writers on medicine; it was held by the arabs, and it is prominent among the traditions of the romans. even with regard to animals the soul or life of the animal was in the blood, or rather actually was the blood. so we have the divine command, leviticus xvii. 10-14: \"homo quilibet de domo israel, et de aduenis qui peregrinantur inter eos, si comederit sanguinem, obfirmabo faciem meam contra animam illius, et dispertam eam de populo suo. quia anima carnis in sanguine est: et ego dedi illum uobis, ut super altare in eo expietis pro animabus uestris, et sanguis pro animae piaculo sit. idcirco dixi filiis israel: omnis anima ex uobis non comedet sanguinem, nec ex aduenis, qui peregrinantur apud uos. homo quicumque ex filiis israel, et de aduenis, qui peregrinantur apud uos, si uenatione atque aucupio ceperit feram uel auem, quibus esci licitum est, fundat sanguinem eius, et operiat illum terra. anima enim omnis carnis in sanguine est: unde dixi filiis israel: sanguinem uniuersae carnis non comedetis, quia anima carnis in sanguine est: et quicumque comederit illum, interibit.\" (if any man whosoever of the house of israel, and of the strangers that sojourn among them, eat blood i will set my face against his soul, and will cut him off from among his people: because the life of the flesh is in the blood: and i have given it to you, that you may make atonement with it upon the altar for your souls, and the blood may be for an expiation for the soul. therefore i have said to the children of israel: no soul of you, nor of the strangers that sojourn among you, shall eat blood. any man whatsoever of the children of israel, and of the strangers that sojourn among you, if by hunting or by fowling, he take a wild beast or a bird, which is lawful to eat, let him pour out its blood, and cover it with earth. for the life of all flesh is in the blood: therefore i said to the children of israel: you shall not eat the blood of any flesh at all, because the life of the flesh is in the blood, and whosoever eateth it, shall be cut off.) the hebrew word which is translated \"life\" in this passage and particularly in the phrase \"because the life of the flesh is in the blood,\" also signifies \"soul,\" and the revised version has a marginal note: \"heb. soul.\" since then the very essence of life, and even more, the spirit or the soul in some mysterious way lies in the blood we have a complete explanation why the vampire should seek to vitalize and rejuvenate his own dead body by draining the blood from the veins of his victims.',\n", - " 'it will be remembered that in a famous necromantic passage in the odyssey, when ulysses calls up the ghosts from the underworld, in order that they may recover the power of speech, he has to dig deep a trench and therein pour the blood of sacrifice, black rams, and it is only after they have quaffed their fill of this precious liquor that the phantoms may converse with him and enjoy something of their human powers and mortal faculties.',\n", - " 'among the many references to funereal customs and the rites of mourning in holy writ there is one which has a very distinct bearing upon this belief that blood might benefit the deceased. the prophet jeremias in fortelling the utter ruin of the jews and the complete desolation of their land says: \"et morientur grandes, et parui in terra ista: non sepelientur neque plangentur, et non se incident, neque caluitium fiet pro eis.\" (both the great and little shall die in this land; they shall not be buried nor lamented, and men shall not cut themselves, nor make themselves bald for them.) and again the same prophet tells us that after the jews had been carried away in captivity of babylon: \"uenerunt uiri de sichem et de silo, et de samaria octoginta uiri: rasi barba, et scissis uestibus et squallentes: et munera, et thus habebant in manu, ut offerrent in domo domini.\" the word \"squallentes\" which the douai version renders \"mourning\" is translated by the authorised version as \"having cut themselves\" and the same rendering is given in the revised version. these customs of shaving part of the head and the beard which is referred to in the words \"nor make themselves bald for them\" and more particularly the practice of cutting or wounding the body in token of mourning were strictly forbidden as savouring of heathenish abuse. thus in leviticus xix. 28, we read: \"et super mortuo non incidetis carnem uestrum, neque figuras aliquas, aut stigmata facietis uobis. ego dominus.\" (you shall not make any cuttings in your flesh, for the dead, neither shall you make in yourselves any figures or marks: i am the lord.) and again (xxi. 5) the same command with regard to mourning is enforced: \"non radent caput, nec barbam, neque in carnibus suis facient incisuras.\" (neither shall they shave their head, nor their beard, nor make incisions in their flesh.) s. jerome, however, tells us that the custom persisted. for he says in his commentary on jeremias, xvi. 6, which may be dated 415-420: \"mos hic fuit apud ueteres, et usque hodie in quibusdam permanet iudaeorum, ut in luctibus incidant lacertos, et caluitium faciant, quod iob fecisse legimus.\" and yet these observances had been, as we saw, most sternly forbidden, nay, and that most emphatically and more than once. thus in deuteronomy they are sternly reprobated as smacking of the grossest superstition: \"non comedetis cum sanguine. non augurabimini, nec obseruabitis somnia. neque in rotundum attondebitis comam: nec radetis barbam. et super mortuo non incidetis carnem uestram, neque figuras aliquas, aut stigmata facietis uobis. ego dominus.\" (you shall not eat with blood. you shall not divine nor observe dreams. nor shall you cut your hair round-wise: nor shave your beard. you shall not make any cuttings in your flesh, for the dead, neither shall you make in yourselves any figures or marks: i am the lord.) \"filii estote domini dei uestri: non uos incidetis, nec facietis, caluitium super mortuo. quoniam populus sanctus es domino deo tuo: et te elegit ut sis ei in populum peculiarem de cunctis gentibus, quae sunt super terram.\" (be ye children of the lord your god: you shall not cut yourselves, nor make any baldness for the dead; because thou art a holy people to the lord thy god: and he chose thee to be his peculiar people of all nations that are upon the earth.)',\n", - " 'presumably these two customs were thus sternly prohibited as largely borrowed by the jews from the pagan people around them, who might indeed as having no hope make such extravagant and even indecent exhibition of their mourning for the departed, but which practices would at the least be highly unbecoming in the chosen people of jehovah. assuredly, even if they go no deeper, these observances are tainted with such savagery and seem so degrading that it is not surprising to find ordinances among other peoples, for instance the code of solon at athens, forbidding mourners to wound and scratch their faces and persons. the laws of the ten tables also which were largely based on this earlier legislation do not permit women to tear and disfigure their faces during the funeral rites. these two customs, shaving the head and lacerating the face, are found the whole world over at all times and among all races. the former hardly concerns us here, but it is interesting to inquire into the idea which lay at the root of this \"cuttings in the flesh for the dead.\" this practice existed in antiquity among the assyrians, the arabs, the scythians and such peoples as the moabites, the philistines, and the phoenicians. jordanes tells us that attila was lamented, \"not with womanly wailing, empty coronach and tears, but with the blood of warriors and strong men.\" among many african tribes, among the polynesians of tahiti, the sandwich islands and the whole pacific archipelago; among the aborigines of australia, new zealand and tasmania; among the patagonians; among the indians of california and north america; as. among very many other races, mourning for the dead is always accompanied by the laceration of the body until blood freely flows, and it is even not unknown for relatives of the deceased to inflict terrible mutilations upon themselves, and he who is most pitiless and most barbarous is esteemed to show the greater honour and respect to the departed. the important point lies in the fact, that blood must be shed, and this appears to constitute some covenant with the dead, so that by freely bestowing what he requires they prevent him from returning to deprive them of it forcibly and in the most terrifying circumstances. if they are not willing to feed him with their blood he will come back and take it from them, so naturally it is believed to be far better to give without demur and gain the protection of the ghost, rather than to refuse what the phantom will inevitably seize upon in vengeance and in wrath.',\n", - " 'many australian tribes considered blood to be the best remedy for a sick and weakly person, and there is, of course, no small modicum of truth in the idea when we consider the scientific transfusion of blood as is practised in certain cases by doctors at the present time, a remedy of which there are many examples in the middle ages and in later medicine. bonney, the australian traveller, tells us that among certain tribes on the darling river in new south wales, \"a very sick or weak person is fed upon blood which the male friends provide, taken from their bodies in the way already described\" that is to say by opening a vein of the forearm and allowing the blood to run into a wooden bowl or some similar vessel. \"it is generally taken in a raw state by the invalid, who lifts it to his mouth like jelly between his fingers and thumb.\" it must be remembered that the aborigines firmly believe in the existence of the soul after death, and since blood during the life proves the most helpful and sustaining nourishment it will communicate the same vitalizing qualities if bestowed upon one who has passed beyond, for they do not entertain the idea that death is any great severance and separation.',\n", - " 'this certainly gives us a clue to the belief underlying the practice of scratching the body and shedding blood upon the occasion of a death, and there can be no doubt that, although possibly the meaning was obscured and these lacerations came to evince nothing more than a proof of sorrow at the bereavment, yet fundamentally the blood was offered by mourners for the refreshment of the departed to supply him with strength and vigour under his new conditions. these practices, then, involved a propitiation of the dead; further, a certain intimate communication with the dead, and assuredly bear a necromantic character, and have more than a touch of vampirism, the essence of which consists in the belief that the dead man is able to sustain a semi-life by preying upon the vitality, that is to say, by drinking the blood of the living. accordingly we are fully able to understand why these customs, heathenish and worse, were so uncompromisingly denounced and forbidden in the mosaic legislation. it was no mere prohibition of indecorous lamentations tinged with paganism, but it went something deeper, for such observances are not free from the horrid superstition of black magic and the feeding of the vampire till he suck his full of hot salt blood and be gorged and replete like some demon leech.',\n", - " 'the word vampire (also vampyre) is from the magyar vampir, a word of slavonic origin occuring in the same form in russian, polish, czech, serbian, and bulgarian with such variants as bulgarian, vapir, vepir; ruthenian vepyr, vopyr, opyr; russian upir, upyr; south russian upuir; polish upier. miklosich suggests the turkish uber, witch, as a possible source. another derivation, which is less probable is from the root pi--to drink, with the prefix va, or av. from the root pi--come the greek πίνω i drink, some tenses of which are formed from the root po--, such as a perfect πέπωκα; a future passive ποθήσομαι; to which must be added the perfect infinitive πεπόσθαι which occurs in theognis. hence we have the aeolic πώνω, and also probably ποταμός, properly perhaps of fresh, drinkable water πότιμον ὕδωρ.',\n", - " 'the sanskrit is pâ, pî, pi-bâmi (bibo); pâ-nam (potus) pâ-tra (poculum); latin po-tus, po-to, po-culum, etc., with which are connected bibo and its many forms and compounds (root--bi-); slavonic, pi-tî (bibere); lithuanian, po-ta (ebriositas), and a vast number of other variants.',\n", - " 'ralston must certainly be quoted in this connexion, although it should be borne in mind that he is a little out of date in some details. the songs of the russian people from which (p. 410) i cite the following passage was published early in 1872. of vampires he writes: \"the name itself has never been satisfactorily explained. in its form of vampir , it has been compared with the lithuanian wempti = to drink, and wempti, wampiti = to growl, to mutter, and it has been derived from a root pi with the prefix u = av, va. if this derivation is correct, the characteristic of the vampire is a kind of blood-drunkenness. in accordance with this idea the croatians called the vampire pijauica; the servians say of a man whose face is coloured by constant drinking, that he is \\'blood-red as a vampire\\'; and both the servians and the slovaks term a hard drinker a vlkodlak. the slovenes and kashubes call the vampire vieszey, a name akin to that borne by the witch in our own language as well as in russian. the poles name him upior or upir, the latter being his designation among the czekhs also.\" the istrian vampire is strigon, and among the wallachians there is a vampire called murony. in greece there are some local names for the vampire, (cyprus), σαρκωμένος, \"the one who has put on flesh\"; (tenos), ἀναικαθούμενος, \"he who sits up in his grave\" in cythnos, ἄλυτος \"incorrupt\"; in cythera, ἀνάρραχο, λάμπασμα, and λάμπαστρο, three words of which i can suggest no satisfactory explanation and which ever so great an authority on greece as mr. j. c. lawson finds unintelligible. newton, travels and discoveries in the levant (i, p. 212) and more particularly pashley, travels in crete (ii, p. 207), mention a term used in rhodes and generally in crete, καταχανος, the derivation of which is uncertain. pashley thinks it may have meant a \"destroyer,\" but mr. lawson connects it with kara and the root χαν-, i gape or yawn, in allusion to the gaping mouth of the vampire, os hians, dentes candidi, says leone allacci.',\n", - " 'st. clair and brophy in their twelve years\\' study of the eastern question in bulgaria, 1877, have a note (p. 29, n. 1): \"the pure bulgarians call this being by the genuine slavonic name of upior, the gagaous (or bulgarians of mixed race) by that of obour, which is turkish; in dalmatia it is known as wrikodlaki, which appears to be merely a corruption of the romaic βρυκόλαξ.\"',\n", - " 'the word vampir, vampyr, is apparently unknown in greece proper and the general modem term is βρυκόλακας, which may be transliterated as vrykolakas (plural vrykolakes). tozer gives the turkish name as vurkolak, and hahn records that amongst some of the albanians βουρβολάκ-ου is used of the restless dead. it is true that in parts of macedonia where the greek population is in constant touch with slavonic neighbours, especially in melenik in the north-east, a form βάμπυρασ or βόμπυρασ has been adopted,\" and is there used as a synonym of vrykolakas in its ordinary greek sense, but strangely enough with this one exception throughout the whole of greece and the greek islands the form \"vampire\" does not appear. coraes denies the slavonic origin of the word vrykolakas, and he seeks to connect a local variant βορβόλακασ with a hypothetical ancient word μορμόλυξ alleged to be the equivalent of μορμολύκη which is used by the geographer strabo, and μορμολυκεία used by arrianus of nicomedia in his διατριβαὶ ἐπικτήτου and the more usual μορμολυκεῖον found in aristophanes, thesmophoriazuasae (417):',\n", - " 'εῖ᾽τα δια τοῦτον ταῖσ γυναικωνίτισιν',\n", - " 'σφραγῖδας ὲπιβάλλουσιν ἤδη καὶ μοχλούς,',\n", - " 'τηρο̃ῦντεσ ἡμᾶσ, καὶ προσέτι μολοττικοὺς',\n", - " 'τρέφουσι, μορμολυκε̑ῖα τοῖσ μοιχοῖς, κύνασ·',\n", - " 'the word occurs again in plato, phaedo: \"τοῦτον ὁῦν πειρώμεθα πείθειν μὴ δεδίεναι τὸν θάνατον ὥσπερ τὰ μορμολύκεια\". it is, of course, a derivation and diminutive of mormo (μορμώ), a hobgoblin, or worse, a ghoul of hideous appearance. the theory is patriotic and ingenious, but bernard schmidt and all other authorities agree that it is entirely erroneous and the modern greek word vrykolakas must undoubtedly be identified with a word which is common to the whole slavonic group of languages. this word slovenian volkodlak, vukodlak, vulkodlak, is a compound form of which the first half means \"wolf,\" whilst the second half has been identified, although the actual relation is not quite demonstrable, with blaka, which in old slavonic, new slavonic, and serbian signifies the \"hair\" of a cow or a horse or a horse\\'s mane. yet whatsoever the analytical signification of the compound may precisely be, the synthesis in the actual employment of all slavonic tongues, save one, is the equivalent of the english \"werewolf\"; scotch \"warwulf\"; german \"werwolf\" and french \"loup-garou.\" the one language in which this word does not bear this interpretation is the serbian, for here it signifies \"a vampire.\" but it should be remarked in this connexion that the slavonic peoples, and especially the serbians believe that a man who has been a werewolf in his life will become a vampire after death, and so the two are very closely related. it was even thought in some districts, especially elis that those who had eaten the flesh of a sheep killed by a wolf might become vampires after death. however, it must be remembered that although the superstitions of the werewolf and the vampire in many respects agree, and in more than one point are indeed precisely similar, there is, especially in slavonic tradition, a very great distinction, for the slavonic vampire is precisely defined and it is the incorrupt and re-animated dead body which returns from its grave, otherwise it cannot be said strictly to be a vampire. as we shall have occasion to observe it were, perhaps, no exaggeration to say that the conception of the vampire proper is peculiar to slavonic peoples, and especially found in the balkan countries, in greece, in russia, in hungary, bohemia, moravia, and silesia. there are, of course, many variants, both western and oriental; and other countries have tales of vampires which exactly fit the slavonic norm, but outside the districts we have specified the appearances of the vampire are rare, whilst in his own domain even now he holds horrid sway, and people fear not so much the ghost as the return of the dead body floridly turgescent and foully swollen with blood, endued with some abominable and devilish life.',\n", - " 'in danish and swedish we have vampyr; the dutch is vampir; the french le vampire; italian, spanish, portuguese, vampiro; modern latin, vampyrus. the oxford english dictionary thus defines vampire: \"a preternatural being of a malignant nature (in the original unusual form of the belief an animated corpse), supposed to seek nourishment and do harm by sucking the blood of sleeping persons; a man or woman abnormally endowed with similar habits.\" the first example which has been traced of the use of the word in literature seems to be that which occurs in the travels of three english gentlemen, written about 1734, which was printed in vol. iv. of the harleian miscellany, 1745, where the following passage occurs: \"we must not omit observing here, that our landlord seems to pay some regard to what baron valvasor has related of the vampyres, said to infest some parts of this country. these vampyres are supposed to be the bodies of deceased persons, animated by evil spirits, which come out of the graves, in the night-time, suck the blood of many of the living, and thereby destroy them.\" the word and the idea soon became quite familiar, and in his citizen of the world (1760-2) oliver goldsmith writes in every-day phrase: \"from a meal he advances to a surfeit, and at last sucks blood like a vampire.\"',\n", - " 'johnson, edited by latham, 1870, has: \"vampire. pretended demon, said to delight in sucking human blood, and to animate the bodies of dead persons, which, when dug up, are said to be found florid and full of blood.\" a quotation is given from forman\\'s observations on the revolution in 1688, 1741, which shows that so early the word had acquired its metaphorical sense: \"these are the vampires of the publick and riflers of the kingdom.\" david mallet in his zephyr, or the stratagem, has:',\n", - " 'can russia, can the hungarian vampire',\n", - " 'with whom call in the hordes and empire,',\n", - " 'can four such powers, who one assail',\n", - " 'deserve our praise should they prevail?',\n", - " \"a few travellers and learned authors had written of vampires in the seventeenth century. thus we have the famous de graecorum hodie quorundam opinationibus of leone allacci, published at cologne in 1645; there are some detailed accounts in the relation de ce qui s'est passé a sant-erini isle de l'archipel by father françois richard, a jesuit priest of the island of santorini (thera), whose work was published at paris in 1657; paul ricaut, sometime english consul at smyrna in his the present state of the greek and armenian churches anno christi, 1678, 8vo, london, 1679, mentions the tradition with a very striking example, but he does not actually use the word vampire. in 1679 philip rohr published at leipzig his thesis de masticatione mortuorum, which in the eighteenth century was followed by a number of academic treatises, such as the dissertatio de hominibus post mortem sanguisugis, uulgo dictis vampyren, by john christopher rohl and john hertel, leipzig, 17 32; the dissertatio de cadaueribus sanguisugis of john christian stock, published at jena in the same year; the dissertatio de uampyris seruiensibus of john heinrich zopfius and charles francis van dalen which appeared in the following year; all of which in some sense paved the way for john christian harenberg's von vampyren.\",\n", - " 'in 1744 was published at naples \"presso i fratelli raimondi\" the famous dissertazione sopra i vampiri of gioseppe davanzati, archbishop of trani. this book had already widely circulated in manuscript--\"la sua dissertazione sopra i vampiri s\\'era sparsa per tutta l\\'italia benchè manoscritta,\" says the anonymous biographer--and a copy had even been presented to the holy father, the learned benedict xiv, who in a letter of 12th january, 1743, graciously thanked the author with generous compliment upon his work. \"l\\'abbiamo subito letta con piacere, e nel medesimo tempo ammirata si per la dottrina, che per la vasta erudizione, di cui ella è fornita\"; wrote the pope. it will not then be unfitting here to supply some brief notice--of the dissertazione sopra i vampiri, which although it ran into a second edition, \"napoli. m.dcc.lxxxix. presso filippo raimondi,\" in england seems almost entirely unknown since strangely enough even the british museum library lacks a copy. we would premise that as the good archbishop\\'s arguments and conclusions are philosophical it is quite allowable for us, whilst fully recognizing his scholarship and skill in handling his points, not to accept these but rather to maintain the contrary.',\n", - " 'gioseppe davanzati was born at bari on 29th august, 1665. after having commenced his studies at the jesuit p. 24 college in his native town, he passed at the age of fifteen to the university of naples. already had he resolved to seek the priesthood, and after a course of three years, his parents being now dead, he entered the university of bologna, when he greatly distinguished himself in science and mathematics. some few years were next spent in travelling, during which period he made his headquarters at paris, \"essendo molto innamorato delle maniere, e de\\'costumi de\\' francesi.\" spain, portugal, the low countries, germany, switzerland were visited in turn, and we are told that he repeatedly expressed his wish to cross over to england, \"nobil sede dell \\'arti e delle scienze\" but that by some accident his desire was again and again frustrated. early in the reign of clement xi, (1700-1721) he was recalled to italy, and having been raised to the priesthood by the bishop of montemartino (salerno) he was appointed treasurer of the famous sanctuary of s. nicholas at bari. his genius speedily attracted attention, and before long he was sent by the pope as legate extraordinary to the emperor charles vi, to vienna, a difficult and important mission which he discharged so admirably well that upon his return he was rewarded with the archbishopric of trani and other honours. this noble prelate remained high in favour with the successors of clement xi, innocent xiii (1721-1724), benedict xiii (1724-1730), and clement xii (1730-1740), and when on the death of this latter pontiff cardinal prospero lorenzo lambertini was elected and took the title of benedict xiv an old and intimate friend of his own was sitting in the chair of s. peter. although five and seventy years of age, archbishop davanzati journeyed to rome to kiss the feet of the new pope by whom he was welcomed with the utmost kindness and every mark of distinction. upon the death of monsignor crispi, archbishop of ferrara, the supreme pontiff on 2nd august, 1746, preconized gioseppe davanzati as patriarch of alexandria, a dignity vacant by the aforesaid prelate\\'s decease. early in february, 1755, archbishop davanzati contracted a severe chill which turned to inflammation of the lungs. upon the night of the sixteenth of that month, having been fortified with the sacraments of the church be slept peacefully away, being aged 89 years, 5 months, and 16 days.',\n", - " 'the dissertazione sopra i vampiri owed its first suggestion to the various discussions which were held at rome during the years 1738-39 in the apartments of cardinal schrattembach, bishop of olmütz, and which arose from the official reports of vampirism submitted to him by the chapter of his diocese. the cardinal sought the advice and co-operation of various learned members of the sacred college and other prelates of high repute for experience and sagacity. amongst these was davanzati who frankly confesses that until the cardinal consulted him and explained the whole business at length he had no idea at all what a vampire might be. davanzati commences his work by relating various well-known and authenticated cases of vampires, especially those which had recently occurred in germany during the years 1720-1739. he shows a good knowledge of the literature of the subject, and decides that the phenomena cannot enter into the category of apparitions and ghosts but must be explained in a very different way, he finds that with but few exceptions both ancient and modern philosophers seem ignorant of vampirism, which he justly argues with pertinent references to the malleus maleficarum and to delrio must be diabolical in origin be it an illusion or no. he next considers at some length in several chapters of great interest the extent of the demon\\'s power. chapter xiii discusses \"della forza della fantasia,\" and in chapter xiv be argues \"che le apparizioni de\\'fantasmi, e dell\\' ombre de\\' morti, di cui fanno menzione gli storici, non siano altro che effetto di fantasia.\" here we take leave to join issue with him, and to-day it will very generally be agreed that his line of argument is at least perilous. nor can we accept \"che l\\'apparizione de\\' vampiri non sia altro che paro effetto di fantasia.\" the truth lies something deeper than that as leone allacci so well knew. yet with all its faults and limitations the dissertazione sopra i vampiri is deserving of careful consideration for there is much that is well presented, much that is of value, although in the light of fuller investigations and clearer knowledge the author\\'s conclusion cannot be securely maintained.',\n", - " \"even better known than the volume of davanzati is the dissertations sur les apparitions des anges, des démons et des esprits, et sur les revenants et vampires de hongrie, de bohême, de moravie, et de silésie, published at paris, chez debure l'ainé, 2 vols., 12mo, 1746. the work was frequently reprinted, and translated into english 1759; into german 1752; second edition 1757-8. in its day it exercised a very great influence, and as it is still constantly referred to, it may not be impertinent to give a brief account of the eminent authority, its author.\",\n", - " \"dom augustin calmet, who is so famous as a biblical exegetist, was born at ménil-la-horgne, near commercy, lorraine, on 26th february, 1672; and died at the abbey of senones, near saint-dié, 25th october, 1757. he was educated by the monks of the benedictine priory of breuil, and in 1688 he joined this learned order in the abbey of st. mansuy at toul, being professed in the following year, and ordained 17th march, 1696. at the abbey of moyen-moutier, where he taught philosophy and theology, he soon engaged the help of the whole community to gather the material for his vast work on the bible. the first volume of this huge commentary appeared at paris in 1707, commentaire littéral sur tous les livres de l'ancien et du nouveau testament; and the last of the twenty-three quarto volumes was published only in 1716. several most important reprints were issued throughout the eighteenth century, including two latin versions, the one by f. vecelli which came from houses at venice and frankfort, six volumes folio, 1730; the other by mansi, lucca, 9 vols., folio, 1730-1738 of which version there are at least two subsequent editions it is impossible that in some small points so encyclopædic a work should not be open to criticism, but its merits are permanent and the erudition truly amazing. yet this was only one of many learned treatises which dom calmet published on biblical subjects, and so greatly was their value esteemed that his dissertations were rapidly translated into latin and the principal modern european languages. when we add to these his historical and philosophical writings the output of this great scholar is well-nigh incredible. so remarkable a man could not fail to hold high honours in his own congregation, and it was only at his earnest prayer that pope benedict xiii refrained from compelling him to accept a mitre, since this pontiff on more than one occasion expressed himself anxious to reward the merits and the learning of the abbot of senones.\",\n", - " 'to-day, perhaps the best known of dom calmet\\'s works in his traité sur les apparitions des esprits, et sur les vampires, and in his preface he tells us the reasons which induced him to undertake this examination. one point which lie emphasizes must carefully be borne in mind and merits detailed consideration. vampires, as we have seen, particularly infest slavonic countries, and it does not appear that this species of apparition was well known in western europe until towards the end of the seventeenth century. there undoubtedly were cases of vampirism, as will be recorded in their due order, and certain aspects of witchcraft have much in common with the vampire tradition, especially the exercise of that malign power whereby the witch caused her enemies to dwindle, peak and pine, draining them dry as hay. but this is not vampirism proper. the fuller knowledge of these horrors reached western europe in detail during the eighteenth century, and it at once threw very considerable light upon unrelated cases that had been recorded from time to time, but which appeared isolated and belonging to no particular category. writing in 1746, dom calmet, who had long studied the subject, remarks that certain events, certain movements, certain fanaticisms, certain phenomena, it may be in the physical or in the supernatural order, distinguish and characterise certain several centuries. he continues: \"in this present age and for about sixty years past, we have been the hearers and the witnesses of a new series of extraordinary incidents and occurrences. hungary, moravia, silesia, poland, are the principal theatre of these happenings. for here we are told that dead men, men who have been dead for several months, i say, return from the tomb, are heard to speak, walk about, infest hamlets and villages, injure both men and animals, whose blood they drain thereby making them sick and ill, and at length actually causing death. nor can men deliver themselves from these terrible visitations, nor secure themselves from these horrid attacks, unless they dig the corpses up from the graves, drive a sharp stake through these bodies, cut off the heads, tear out the hearts; or else they burn the bodies to ashes. the name given to these ghosts is oupires, or vampires, that is to say, blood-suckers, and the particulars which are related of them are so singular, so detailed, accompanied with circumstances so probable and so likely, as well as with the most weighty and well-attested legal deposition that it seems impossible not to subscribe to the belief which prevails in these countries that these apparitions do actually come forth from their graves and that they are able to produce the terrible effects which are so widely and so positively attributed to them. . . . the brucolaques (vrykolakes) of greece and the archipelago are apparitions of quite a new kind.\" the author then says that he has solid reasons for treating the subject of vampires, and especially for dealing with those who infest hungary, moravia, silesia and poland, although he well knows that he is laying himself open to damaging criticism on both sides. many persons will accuse him of temerity and presumption for having dared to cast doubts upon certain details in these well-authenticated accounts, whilst others will attack him for having wasted his time in writing seriously on a subject which appears to them frivolous and inept. \"howbeit,\" he continues, \"whatever line anyone may choose to adopt, it is to my mind useful and indeed necessary to investigate a question which seems to have an important bearing upon religion. for if it be a truth that vampires may actually thus return from their graves, then it becomes necessary to write in defence of, and to prove, this truth; if it be an error and an illusion, it follows in the interests of religion that those who credit it must be undeceived and that we should expose a groundless superstition, a fallacy, which may easily have very serious and very dangerous consequences.\"',\n", - " 'in the first chapter of his second volume, which section directly discusses vampires,--the first volume being preliminary and generally concerned with apparitions of various kinds,--don calmet again defines a vampire, and at the risk of a certain amount of repetition his words must once again be quoted: the apparitions (revenans) of hungary, or vampires . . . are men who have been dead for some considerable time, it may be for a long period or it may be for a shorter period, and these issue forth from their graves and come to disturb the living, whose blood they suck and drain. these vampires visibly appear to men, they knock loudly at their doors and cause the sound to re-echo throughout the whole house, and once they have gained a foothold death generally follows. to this sort of apparition is given the name vampire or oupire, which in the slavonic tongues means a blood-sucker. the only way to obtain deliverance from their molestations is by disinterring the dead body, by cutting off the head, by driving a stake through the breast, by transfixing the heart, or by burning the corpse to ashes.\"',\n", - " 'it may be remarked here that although in the course of this book there will be occasion to deal with many ghosts of the vampire family and to treat of cognate superstitions and traditions the essential feature of the vampire proper lies in the fact that he is a dead body re-animated with an awful life, who issues from his tomb to prey upon the living by sticking their blood which lends him new vitality and fresh energies. since he is particularly found in greece it is to a greek writer we may go for a description of this pest. one of the earliest--if indeed he were not actually the first--of the writers of the seventeenth century who deals with vampires is leone allacci, (alacci), more commonly known as leo allatius. this learned scholar and theologian was born on the island of chios in 1586, and died at rome 19th january, 1669. at the age of fourteen he entered the greek college in rome, and when he had finished his academic course with most honourable distinction, returned to chios where he proved of the greatest assistance to the latin bishop marco giustiniani. in 1616 allacci received the degree doctor of medicine from the sapienza, and a little later, after having been attached to the vatican library, be professed rhetoric at the greek college. in 1622 pope gregory xv sent him to germany to superintend the transportation to rome of the palatinate library of heidelberg, which maximillian i had presented to the pope in return for large subsidies that enabled the war to be carried on against the federation of protestant princes. this important task, which owing to a disturbed state of the country was one of immense difficulty, allacci accomplished most successfully, and during the reigns of urban viii and innocent x he continued his work in the vatican library, especially concentrating upon the palatinate manuscripts. in 1661 alexander vi, as a recognition of his vast researches and eminent scholarship, appointed him custodian of the library. he was an earnest labourer for reunion, in which cause he wrote his great work de ecclesiae occidentalis atque orientalis perpetua consensione, published at cologne in 1648, a dissertation wherein all points of agreement are emphasized, whilst the differences are treated as lightly as possible.',\n", - " 'allacci, in his treatise de graecorum hodie quorundam opinationibus, cologne, 1645, discusses many traditions, and amongst others he deals at some length with the vampire, concerning whom he says: \"the vrykolakas is the body of a man of wicked and debauched life, very often of one who has been excommunicated by his bishop. such bodies do not like other corpses suffer decomposition after burial nor fall to dust, but having, so it seems, a skin of extreme toughness become swollen and distended all over, so that the joints can scarcely be bent; the skin becomes stretched like the parchment of a drum, and when struck gives out the same sound, from which circumstance the vrykolakas has received the name τυμπανιαῖος (\\'drum-like\\').\" according to this author a demon takes possession of such a body, which issues from the tomb, and, generally at night, goes about the streets of a village, knocking sharply upon doors, and summoning one of the household by name. but if the person called unwittingly answers he is sure to die on the following day. yet a vrykolakas never cries out a name twice, and so the people of chios, at all events, always wait to hear the summons repeated before they reply to anyone who raps at their door of a night.\" this monster is said to be so fearfully destructive to men, that it actually makes its appearance in the daytime, even at high noon, nor does it then confine its visits to houses, but even in fields and in hedged vineyards and upon the open highway it will suddenly advance upon persons who are labouring or travellers as they walk along, and by the horror of its hideous aspect it will slay them without laying hold on them or even speaking a word.\" accordingly a sudden death from no obvious cause is to be regarded with the gravest suspicion, and should there be any kind of molestation, or should any story of an apparition be bruited abroad they hasten to exhume the corpse which is often found in the state that has been described. thereupon without any delay \"it is taken up out of the grave, the priests recite the appointed prayers, and it is thrown on to a fiercely blazing pyre. before the orisons are finished skin will desquamate and the members fall apart, when the whole body is utterly consumed to ashes.\" allacci proceeds to point out that this tradition in greece is by no means new nor of any recent growth, for he tells us \"in ancient and modern times alike holy men and men of great piety who have received the confessions of christians have tried to disabuse them of such superstitions and to root this belief out of the popular imagination.\" indeed a nomocanon or authoritative ordinance of the greek church is cited to the following effect: \"concerning a dead man, if he be found whole, the which they call vrykolakas.',\n", - " '\"it is impossible that a dead man should become a vrykolakas, unless it be by the power of the devil who, wishing to mock and delude some that they may incur the wrath of heaven, causeth these dark wonders, and so very often at night he casteth a glamour whereby men imagine that the dead man whom they knew formerly, appears and holds converse with them, and in their dreams too they see strange visions. at other times they may behold him in the road, yea, even in the highway walking to and fro or standing still, and what is more than this he is even said to have strangled men and to have slain them.',\n", - " '\"immediately there is sad trouble, and the whole village is in a riot and a racket, so that they hasten to the grave and they unbury the body of the man . . . and the dead man--one who has long been dead and buried--appears to them to have flesh and blood . . . so they collect together a mighty pile of dry wood and set fire to this and lay the body upon it so that they burn it and they destroy it altogether.\"',\n", - " 'what is exceedingly curious is that after so emphatically declaring these phenomena to be a superstition and an idle fantasy, the nomocanon continueth as follows: \"be it known unto you, however, that when such an incorrupt body shall be discovered, the which, as we have said is the work of the devil, ye must without delay summon the priests to chant an invocation to the all holy mother of god . . . and solemnly to perform memorial services for the dead with funeral-meats.\" this provision is at any rate pretty clear evidence that the author or authors of this ordinance must have had some belief in the vrykolakas, and it appears to me that they would not have added so significant a cautel unless they had deemed it absolutely necessary, and having salved their consciences by speaking with rigid officialism, they felt it incumbent upon them to suggest precautions in case of the, expected happening and the consequence of difficulties and mistrust. in fact, they were most obviously safeguarding themselves.',\n", - " 'allacci, at any rate, had no hesitation about declaring his own views, and he thoroughly believed in the vampire. he says, and says with perfect truth: \"it is the height of folly to attempt to deny that such bodies are not infrequently found in their graves incorrupt and that by use of them the devil, if god permit him, devises most horrible complots and schemes to the hurt and harm of mankind.\" father françois richard, reference to whose important work has been made above, distinctly lays down that particularly in greece the devil may operate by means of dead bodies as well. as by sorcerers, all this being allowed by some inscrutable design of providence. and there can be no doubt that the vampire does act under satanic influence and by satanic direction. for the wise words of s. gregory the great, although on another occasion, may most assuredly be applied here: \"qui tamen non esse incredibilia ista cognoscimus, si in illo et alia facta pensamus. certe iniquorum omnium caput diabolus est: et huius capitis membra sunt omnes iniqui.\" all this, of course, under divine permission. the authors of the malleus maleficarum in the first part teach us how there are \"three necessary concomitants of witchcraft, which are the devil, a witch, and the permission of god.\" so are these three necessary concomitants of vampirism, to wit, the devil, the dead body, and the permission of god.\" father richard writes: \"the devil revitalizes and energizes these dead bodies which he preserves for a long time in their entirety; he appears with the actual face and in the likeness of the dead, stalking abroad up and down the streets, and presently he will parade the country roads and the fields; he bursts his way into men\\'s houses, filling many with awful fear, leaving others dumb with horror, whilst others are even killed; he proceeds to acts of violence and blood, and strikes terror into every heart.\" the good father proceeds to say that at first he believed these appearances to be merely ghosts from purgatory returning to ask for help, masses and pious prayers\"; but on learning the details of the case he soon found that he had to deal with something very other, for such ghosts never commit excesses, violent assaults, wreaking the destruction of cattle and goods, and even causing death. these appearances then are clearly diabolical, and the matter is taken in hand by the priests who assemble on a saturday, that being the only day of the week on which a vrykolakas rests in his grave and cannot walk abroad.',\n", - " 'it may be remembered that saturday was the one day of the week which was particularly avoided by witches for their assemblies, and that no sabbat was held on this day. for saturday is sacred to the immaculate mother of god. \"it is well known,\" says that great doctor s. alphonsus, \"that saturday is dedicated by holy church to mary, because, as s. bernard tells us, on that day, the day after the death of her son, she remained constant in faith.\" (per illud triste sabbatum stetit in fide, et saluata fuit ecclesia in ipsa sola; propter quod, aptissime tota ecclesia, in laudem et gloriam eiusdem uirginis, diem sabbati per totius anni circulum celebrare consueuit.) in england this excellent practice of devotion was known as early as anglo-saxon times, since in the leofric missal a special mass is assigned to saturdays in honour of our lady.',\n", - " 'mr. g. f. abbott, in his macedonian folklore, relates that in northern greece \"people born on a saturday (hence called σαββατιανοὶ or sabbatarians) are believed to enjoy the doubtful privilege of seeing ghosts and phantasms, and of possessing great influence over vampires. a native of socho assured the writer that such a one was known to have lured a vrykolakas into a barn and to have set him to count the grains of a heap of millet.\" while the demon was thus engaged, the sabbatarian attacked him and succeeded in nailing him to the wall . . . at liakkovikia it is held that the sabbatarian owes his power to a little dog, which follows him every evening and drives away the vrykolakas. it is further said that the sabbatarian on these occasions is invisible to all but the little dog.\"',\n", - " 'the priests then on a saturday go in procession to the grave where lies the body which is suspect. it is solemnly disinterred, \"and when they find it whole, they take it for certain that it was serving as an instrument of the devil.\"',\n", - " 'this abnormal condition of the dead is held to be a sure mark of the vampire, and is essential to vampirism proper. in the greek church it is often believed to be the result of excommunication, and this is indeed an accepted and definite doctrine of the orthodox church, which must be considered in turn a little later.',\n", - " 'it is not impossible, i think, that cases of catalepsy, or suspended animation which resulted in premature burial may have helped to reinforce the tradition of the vampire and the phenomenon of vampirism. some authorities consider catalepsy as almost entirely, if not wholly, psychic, and certainly not a disease in any correct sense of the word, although it may be a symptom of obscure diseases arising from nervous disorders. a celebrated medical authority has pronounced that \"in itself catalepsy is never fatal.\" it belongs to the domain of hypnotism, and is said to be refreshing to the subject, especially when he is exhausted by long mental exertion or physical toil. very often it arises from conscious or subconscious auto-suggestion, and it has been described as \"the supreme effort of nature to give the tired nerves their needed repose.\" no doubt the fatal mistake so often made in the past was that of endeavouring by drastic measures to hasten restoration to consciousness., instead of allowing nature to recuperate at will. if the attempt is successful it comes as a fearful shock to the nerves which are craving for rest; if the effort is seemingly without result the patient is in imminent danger of an autopsy or of being buried alive, a tragedy which, it is to be feared, has happened to very many. it is clear that as yet serious attention has not been adequately given to this terrible accident. a quarter of a century ago it was computed that in the united states an average of not less than one case a week of premature burial was discovered and reported. this means that the possibility of such danger is appalling. in past centuries when knowledge was less common, when adequate precautions were seldom, if ever, employed, the cases of premature burial, especially at such times as the visitation of the plague and other pestilences must have been far from uncommon. two or three examples of recent date, that is to say occuring at the end of the last century, may profitably be quoted as proving extremely significant in this connexion.',\n", - " 'a young lady, who resided near indianopolis, came to life after fourteen days of suspended animation. no less than six doctors had applied the usual tests, and all unhesitatingly signed certificates to witness that she was dead. her little brother against this consensus of opinion clung to her and declared that she had not died. the parents were in bitter agony, but at length it was necessary to remove the body. the boy endeavoured to prevent this, and in the excitement the bandage which tied up the jaw was loosened and pushed out of place, when it appeared that her lips were quivering and the tongue gently moving. \"what do you want, what do you want?\" cried the child. \"water,\" distinctly, if faintly, came the answer from the supposed corpse. water was administered, the patient revived, and lived her full span of years, healthy and normal until she was an old woman.',\n", - " 'a lady who is now the head matron of one of the largest orphan asylums in the united states has been given over as dead no less than twice by the physicians in attendance; her body has twice been shrouded in the decent cerements of the grave; and twice has she been resuscitated by her friends. on the second occasion, in view of the former experience, extraordinary precautions were taken. all known tests were applied by the physicians, and humanly speaking all possible doubt was set at rest. the doctors had actually left the house, and the undertaker was at his sad business. it chanced that the body was pierced by a pin, and to the joy of her friends it was noted that a small drop of blood shortly afterwards oozed from the puncture. the family insisted upon the preparations being stayed; vigorous treatment was unremittingly applied, and the patient returned to life. to-day she is an exceptionally active and energetic administratrix. it should be remarked that the lady declared that she had never for a moment lost consciousness, that she was fully cognizant of all that went on around her, that she perfectly understood the meaning of all the tests which were so assiduously employed, but that all the while she felt the utmost indifference with regard to the result. the verdict of the physicians that she was dead did not cause her either the slightest surprise or the smallest alarm. a very similar accident occurred to a gentleman of good estate, one of the most prominent citizens of harrisburg, in pennsylvania. after a long illness he apparently died from inflamatory rheumatism, which was complicated with heart trouble. all preparations were made for the funeral, but his wife determined that this should not take place for at i-east a week, so great was her fear of premature burial. in the course of two or three days it was noticed that the body had moved; the eyes were wide open, and one of the arms had altered the position in which it had been carefully placed. his wife shrieked out his name, upon which he slowly arose, and with assistance was supported to a chair. even before the arrival of the physicians, who were instantly summoned, he had regained a marked degree of strength, together with an ability of movement which had not been possible throughout the whole course of his illness. he was soon in excellent health, and what is very remarkable, he stated that during the time of suspended animation he was perfectly aware of everything that was going on all around, that the grief of his family filled him with terrible agony, and he dreaded the preparations for interment, but that he was unable to move a muscle or utter a word.',\n", - " \"the death of washington irving bishop, the well-known thought-reader, caused a great sensation at the time. on many occasions he had been in a cataleptic state for several hours, and once, at least, his trance was so long that two physicians pronounced him to be dead. there is little doubt that eventually the autopsy was performed with irregular haste, and that the unfortunate subject was not dead before the surgeon's knife had actually penetrated his brain.\",\n", - " 'although through the ages few cases have been actually recorded the incidents of premature burial and of autopsy performed on the living must be numberless. one such accident nearly occurred to the great humanist marc-antoine muret, who, falling ill upon a journey, was conveyed to the local hospital as a sick stranger, name unknown. whilst he lay, not even unconscious, upon the rough pallet, the physicians, who had been lecturing upon anatomy and were anxious to find a subject to illustrate their theories, gathered round in full force. they eagerly discussed the points to be argued, and deeming the patient dead, the senior physician gravely pronounced, pointing to the patient: \"faciamus experimentum in anima uili.\" the eyes of the supposed corpse opened widely, and a low, but distinct voice answered: \"uilem animam appellas pro qua christus non dedignatus est mori.\"',\n", - " 'as was customary in the case of prelates, when cardinal diego de espinosa, bishop of sigeunza and grand inquisitor of spain under philip ii died after a short illness, the body was embalmed before it lay in state. accordingly in the presence of several physicians the surgeon proceeded to operate for that purpose. he had made a deep incision, and it is said that the heart had actually been brought into view and was observed to beat. the cardinal recovered consciousness at the fatal moment, and even then had sufficient strength to grasp with his hand the scalpel of the anatomist. in the earlier years of the nineteenth century both cardinal spinola and the octogenarian cardinal della somaglia were prepared for embalmment before life was extinct.',\n", - " 'in the seventh book of the historia naturalis, (liii, 52, ed. brotier, barbou, 1779), pliny relates many instances of persons who, being deemed dead, revived. \"auiola consularis in rogo reuixit: et quoniam subueniri non potuerat præ ualente flamma, uiuus crematus est. similis causa in l. lamia prætorio uiro traditur. nam c. ælium tuberonem prætura functum a rogo relatum, messala rufus, et plerique tradunt. hæc est conditio mortalium: ad has, et eiusmodi occasiones fortunæ gignimur, uti de homine ne morti quidem debeat credi. reperimus inter exempla, hermotini clazomenii animam relicto corpore errare solitam, uagamque e longinquo multa annunitiare, quæ nisi a præsente nosci non possent, corpore interim semianimi: donec cremato eo inimici (qui cantharidæ uocabantur) remeanti animæ uelut uaginam ademerint. aristeæ etiam uisam euolantem ex ore in proconneso, corui effigie, magna quæ sequitur fabulositate. quam equidem et in gnossio epimenide simili modo accipio: puerum æstu et itinere fessum in specu septem et quinquaginta dormisse annis: rerum faciem mutationemque mirantem uelut postero experrectum die: hinc pari numero dierum senio ingruente, ut tamen in septimum et quinquagesimum atque centesimum uitæ duraret annum. feminarum sexus huic malo uidetur maxime opportunus, conuersione uuluæ: quæ si corrigatur, spiritus restituitur. hue pertinet nobile apud græcos uolumen heraclidis, septem diebus feminæ exanimis ad uitam reuocatæ.',\n", - " 'uarro quoque auctor est, xx. uiro se agros diuidente capuæ, quemdam qui efferretur, foro domum remaasse pedibus. hoc idem aquini accidisse. romæ quoque corsidium materteræ suæ maritum sumere locato reuixisse, et locatorem funeris ab eo elatum. adiicit miracula, quæ tota indicasse conueniat. e duobus fratribus equestris ordinis, corsidio maiori accidisse, ut uideretur exspirasse, apertoque testamento recitatum heredem minorem funeri institisse; interim cum, qui uidebatur extinctus, plaudendo conciuisse ministeria, et narrasse \"a fratre se uenisse, commendatum sibi filiam ab eo. demonstratum præterea, quo in loco defodisset aurum nullo conscio, et rogasse ut iis funebribus, quæ comparasset, efferretur.\" hoc eo narrante, fratris domestici propere annuntiauere exanimatum illum: et aurum, ubi dixerat, repertum est. plena præterea uita est his uaticiniis, sed non conferenda, cum sæpius falsa sint, sicut ingenti exemplo docebimus. bello siculo gabienus cæsaris classiarus fortissimus captus a sex. pompeio, iussu eius incisa ceruice, et uix cohærente, iacuit in litore toto die. deinde cum aduesperauisset, cum gemitu precibusque congregata multitudine petiit, uti pompeius ad se ueniret, aut aliquem ex arcanis mitteret: se enim ab inferis remissum, habere quæ nuntiaret. misit plures pompeius ex amicis, quibus gabienus dixit: \"inferis diis placere pompeii causas et partes pias: proinde euentum futurum, quem optaret: hoc se nuntiare iussum: argumentum fore ueritatis, quod peractis mandatis, protinus exspiraturus esset\": idque ita euenit. post sepulturam quoque uisorum exempla, sunt: nisi quod naturæ opera, non prodigia consectamur.',\n", - " 'it was truly said by pliny that \"such is the condition of humanity, and so uncertain is men\\'s judgement that they cannot determine even death itself.\" the words of the wise old roman have been re-echoed by many a modern authority. sabetti in his tractatus xvi, \"de extrema unctione,\" compendium theologiæ moralis, (ed. recognita t. barrett; pustet; 1916; p. 776) asks: \"quid sacerdoti agendum sit, si ad ægrotum accedat, eumque modo mortuum, ut uulgo dicitur, inueniat? in the course of resolving this, he lays down: \"iam age ex sententia plurimorum medicorum doctissimorum probabile est homines in omnibus ferme casibus post instans mortis, ut uulgo dicitur, seu post ultimam respirationem, intus aliquamdiu uiuere, breuius uel diutius, iuxta naturam causae quae mortem induxit. in casibus mortis ex morbis lenti progressus probabile est uitarn interne perdurare aliquot momenta, sex circiter, uel, iuxta quosdam peritos, unam dimidiam horam: in casibus uero mortis repentinae uita, interna perdurat longius, forte non improbabiliter, usque ad putrefactionem.\" professor huxley wrote: \"the evidence of ordinary observers on such a point as this (that a person is really dead) is absolutely worthless. and, even medical evidence, unless the physician is a person of unusual knowledge and skill, may have little more value.\" the british medical journal remarks: \"it is true that hardly any one sign of death, short of putrefaction, can be relied upon as infallible.\" sir henry thompson wrote: \"it should never be forgotten that there is but one really trustworthy proof that death has occurred in any given instance, viz., the presence of a manifest sign of commencing decomposition.\" and professor p. brouardel emphatically declares: \"we are obliged to acknowledge that we have no sign or group of signs sufficient to determine the moment of death with scientific certainty in all cases.\" colonel e. p. vollum, m.d., medical inspector of the united states army, and corresponding member of the new york academy of sciences, who himself was upon one occasion almost buried alive, most emphatically declared that \"even stoppage of the beating of the heart, and breathing, for a considerable time, with all other appearances of death, excepting decomposition, do not make it certain that a person is dead,\" and he also added the terrible warning that \"the suspended activity of life may return after the body has been interred.\" it is unnecessary to enter into these partial cases of premature burial, but there is overwhelming evidence that such accidents were far from uncommon. dr. thouret, who was present at the destruction of the famous vaults of les innocens, told mons. desgenettes that there could be no doubt many of the persons must have been interred alive, since the skeletons were found in positions which showed the dead must have turned in their coffins. kempner supplies similar particulars when describing disinterments which have taken place in new york and other districts of the united states, also in holland and elsewhere.',\n", - " 'the celebrated investigator, dr. franz hartmann, collected particulars of more than seven hundred cases of premature burial and of narrow escapes from it, some of which occurred in his own neighbourhood. in his great work premature burial he tells us of the terrible incident which happened to the famous french tragedienne, mile. rachel, who on 3rd january, 1858, \"died\" near cannes, and who was to be embalmed, but after the proceedings had commenced she suddenly returned to life, only to expire in reality some ten hours later from the shock and from the injuries which had been inflicted upon her. another case which is of particular interest as having occurred in moravia, where the belief in vampires is particularly strong, is that of the postmaster in a small town who, as it was thought, died in a fit of epilepsy. about a year afterwards it became necessary to disinter some of the bodies from the graveyard in order to enlarge one of the transepts of the parish church, and the dreadful fact was revealed that the unfortunate postmaster must have been buried whilst still alive, a discovery which so horrified the physician who had signed the death certificate that he lost his reason.',\n", - " 'in the chancel of s. giles, cripplegate, there is still to be seen a monument sacred to the memory of constance whitney, whose many virtues are described in somewhat rhetorical fashion upon a marble tablet. a figure above this scroll represents the lady in the act of rising from her coffin. this might be taken to be a beautiful symbolism, but such is not the case, for it represents an actual circumstance. the unfortunate lady had been buried while in a condition of suspended animation, and consciousness returned to her when the sexton opened the coffin and desecrated the body in order to steal a valuable ring which had been left upon one of her fingers. in former years when the rifling of tombs and body-snatching were by no means an infrequent practice, many similar cases came to light, and there can be no doubt that no inconsiderable proportion of persons were buried in a state of trance or catalepsy.',\n", - " \"the story of gabrielle de launay, a lady whose cause was tried before the high court of paris, about 1760, caused a profound sensation throughout the whole of france. when eighteen years of age gabrielle, the daughter of m. de launay, the president of the civil tribunal of toulouse, was betrothed to captain maurice de serres. unhappily the latter was suddenly ordered abroad to the indies on active service. the president, fearing that his child might die in a foreign land, refused to allow the marriage to be celebrated immediately so that she might accompany her husband under his protection. the lovers parted heart-broken, and in about two years' time news reached france of the gallant young soldier's death. p. 41 this, however, proved to be false, although his safety was not known until, after an absence of well-nigh five years, be presented himself once more in paris. here he happened to pass the church of s. roch, the entire facade of which was heavily draped with black and shrouded for the funeral of some person of distinction. upon enquiry, he learned that the mourning was on account of a young and beautiful lady who had died suddenly after two days' illness, the wife of the president du bourg, who before her marriage had been mlle. gabrielle de launay. it appeared that, owing to the report of the death of maurice de serres, m. de launay had compelled his daughter to marry this gentleman, who although nearly thirty years her senior was a figure of great wealth and importance. as may be imagined, the young captain was distracted with grief, but that night, taking a considerable sum in gold, he visited the sexton of the cemetery of s. roch and with great difficulty bribed him to exhume the corpse of madame du bourg in order that he might once more look upon the features of the woman whom he had so passionately loved. with every precaution, under the pale light of a waning moon, the terrible task was completed, the coffin was silently unscrewed, and the unhappy lover threw himself upon his, knees in an agony of grief. at last the grave-digger suggested that everything must be replaced in order, when with a terrible cry the young officer suddenly seized the cold, clay body and, before the bewildered sexton could prevent him, threading his rapid course among the tombs, with lightning speed he disappeared into the darkness. pursuit was useless, and nothing remained but for the poor man to replace the empty shell in the grave, to shovel back the earth and arrange the spot so that there might be no trace of any disturbance. he felt sure, at least, that his accomplice in so terrible a crime, a sacrilege which would inevitably bring the severest punishment upon those concerned in it, must maintain silence, if only for his own sake.\",\n", - " \"nearly five years had passed when m. du bourg, who upon the anniversary of his wife's death each june attended a solemn requiem, as he was passing through a somewhat unfrequented street in the suburbs of paris came face to face with a lady in whom he recognised none other than the wife whose death he had mourned so tenderly and so long. p. 42 as he attempted to speak, she with averted looks swept past him as swiftly as the wind and, leaping into a carriage with emblazoned panels, was driven quickly away before he could reach the spot. however, m. du bourg had noticed the arms of the noble house of de serres, and he determined that inquiry should at once be made. it was no difficult task for a man of his position to obtain an order that the grave of his wife might be examined, and when this was done the empty broken coffin turned suspicion into certainty. the fact that the sexton had resigned his post and had gone no one knew where, but seemingly in comfortable circumstances shortly after the funeral of madame du bourg lent its weight to the investigations which were now taken in hand. experienced lawyer that he was, m. du bourg accumulated evidence of the first importance. he found that it was said that captain maurice de serres had married his young and lovely wife, madame julie de serres, some five years previously and, as it was supposed, then brought her back with him from some foreign country, to paris.\",\n", - " 'the whole city was astounded when the president du bourg demanded from the high court the dissolution of the illegal marriage between captain maurice de serres and the pretended julie de serres, who, as the plaintiff steadfastly declared, was gabrielle du bourg, his lawful wife. the novelty of the circumstances caused the profoundest sensation, and vast numbers of pamphlets were exchanged by the faculty, many of whom maintained that a prolonged trance had given rise to the apparent death of madame du bourg, and it was stated that although she had continued to exist for a great number of hours in her grave, cases of similar lethargies had been recorded, and even if such fits were of the rarest, yet the circumstance was possible. madame julie de serres was summoned to appear in court and answer the questions of the judges. she stated that she was an orphan born in south america, and had never left her native country until her marriage. certificates were produced, and on every side lengthy arguments were heard, which it is unnecessary to detail. many romantic incidents ensued, but these, however interesting, must be passed over, for it shall suffice to say that eventually, mainly through the sudden introduction of her little daughter, amid a pathetic scene, the identity of julie',\n", - " 'p. 43',\n", - " 'de serres with gabrielle du bourg, née launay, was established and acknowledged. in vain did her advocate plead that her marriage to m. du bourg had been dissolved by death, although this fact most certainly ought to have been accepted as consonant with sound theology. none the less the result was that, in spite of her prayer to be allowed to enter a cloister, she was ordered to return to her first husband. two days after, the president du bourg awaited her arrival in the great hall of his mansion. she appeared, but could scarcely totter through the gates, for she had but a few moments previously drained a swift poison. crying \"i restore to you what you have lost,\" she fell a corpse at his feet. at the same moment captain de serres died by his own hands.',\n", - " 'it cannot escape notice that these events very closely resemble that novella of bandello (ii, 9), which relates the true history of elena and gerardo, adventures nearly resembling the tragic tale of romeo and juliet. elena and gerardo are the children of two nobles of venice, messer pietro and messer paolo, whose palaces fronted each other on the grand canal. gerardo chances to see elena at her window, and from that hour he knows neither happiness nor sleep until he has declared his consuming passion. a kindly nurse brings them together, and in her presence they exchange rings and vows of tenderest love before the statue of madonna the virgin, spending long nights in amorous ecstasy and bliss. for these unions were fast binding, although not a sacrament, indeed, until then had received the benison of holy church. it is a common saying to apply to any man: \"si, è ammogliato; ma il matrimonio non è stato benedetto.\" wherefore the spousals of the lovers remained a secret.',\n", - " \"in a little while messer paolo, thinking great things of his son's career in the world, dispatches the young man to beirut, and gerardo needs must go. but when he had been absent some six months messer pietro informs his daughter that he has appointed a day for her marriage with a young man of ancient house and fair estate, and not daring to tell her father what had passed, she sunk under her silent grief, and upon the evening before her new nuptials she fell into a swoon across her bed, so that in the morning she was found cold and stark as a stiffening corpse. the physicians assembled in numbers and talked learnedly; remedies of every sort were applied\",\n", - " 'p. 44',\n", - " \"without avail; and no one doubted she was dead. so they carried her to church for burial and not for marriage. that night they bore in sombre and silent procession upon a black gondola to the campo which is hard by san pietro in castello, where lies the sacred body of venice's great patriarch, san lorenzo giustiniani. they left her there in a marble sarcophagus outside the church, with torches blazing around.\",\n", - " 'now it happened that gerardo\\'s galley bad returned from syria, and was newly anchored at the port of lido. many friends came to greet him, and as they talked, marking the funeral cortège, he idly asked who was gone. when be learned it was elena, grief fell upon him like a cloud of night. but he dissembled until all had departed, when, calling his friend the captain of the galley, he told him the whole story of his love, and swore he would once again kiss his wife, even if he had to break open her monument. the captain tried in vain to dissuade him, but seeing it was of no avail the two men took a boat and rowed together to san pietro. it was long after midnight when they landed and made their way to the place of sepulture. pushing back the massive lid, gerardo flung himself upon the body of his elena. at length the good captain, who feared the signors of the night would visit the spot and put them under arrest, compelled the hapless lover to return to the boat, but he could no whit persuade him to leave elena\\'s body, and this gerardo bore in his arms and reverently laid it in the boat, himself clasping it in his arms with many a sad kiss and bitter sigh. the captain, much alarmed, scarce dared to make for the galley, but rowed up and down and out to the open lagoon, the dying husband yet laid by his dead wife. however, the sea-breezes freshened with their salt tang, and far over the waters the horizon lightened towards dawn. it was then that the spark of life awoke in elena\\'s face; she moved gently, and gerardo, starting from his grief, began to chafe her hands and feet. they carried her secretly to the house of the captain\\'s mother; here she was put in a warm bed, possets and food were administered; presently she opened her eyes, and lived. a gracious and lordly feast was made by messer paolo for his son\\'s return, and when all the company were assembled gerardo entered, leading elena in bridal array, and kneeling at his father\\'s feet he said: \"lo, my father, i bring you my wedded wife whom i have this day',\n", - " 'p. 45',\n", - " 'saved from death.\" great were the rejoicings, and messer pietro was summoned from his house of mourning to a home of gladness. so when the whole truth had been told him and he welcomed back not only his dead daughter but her husband also with a joyful heart and with thanksgiving, he blessed the young couple, and on the morrow morn holy church with solemn rite hallowed the bond of matrimony whose, joys had already been sweetly consummated.',\n", - " 'the parallels between the two adventures are very striking. our main interest in the sad story of de serres and his love, which assuredly might have ended far otherwise, lies in the fact that the unfortunate gabrielle du bourg was actually buried as dead in her coffin, and only restored to life after several days had passed. occasionally epitaphs may be seen both abroad and in england, which record some premature burial. such a one was placed over the tomb of a mrs. blunden in the cemetery of basingstoke, hampshire, and this tells how the unfortunate lady was prematurely interred, but the original inscription is to a large extent obliterated. unfortunately overwhelming evidence proves that such terrible accidents are far from rare, for mr. william tebb, in his authoritative work premature burial had collected of recent years from medical sources alone two hundred and nineteen narrow escapes from being buried alive; one hundred and forty-nine premature interments that actually took place; ten cases of bodies being dissected before life was extinct; three cases in which this shocking error was very nearly made; and two cases where the work of embalmment had already begun when consciousness returned.',\n", - " 'there is no greater mistake than to suppose that most cases of premature burial, and of escape from premature burial, happened long ago, and that even then the majority of these took place under exceptional conditions, and for the most part in small towns or remoter villages on the continent. amazing as it may appear in these days of enlightenment, the number of instances of narrowest escapes from premature burial, and also of this terrible fate itself, has not decreased of recent years, but it has, on the contrary, increased. in a letter on page 1,104 of the lancet, 14th june, 1884, the witness describes in detail the appearance presented by two bodies which he saw in the crypt of the cathedral of bordeaux, when',\n", - " 'p. 46',\n", - " 'part of the cemetery there had been dug up and many graves disinterred. in la presse médicale, paris, 17th august, 1904, there is an article, \"the danger of apparent death,\" by doctor icard of marseilles, whose study la mort réelle et la mort apparente when published in 1897 attracted great attention. the writer, an eminent figure in the medical world, describes in detail some twelve cases of the revival of persons who had been certified as dead by their doctors, the body in one instance recovering consciousness when several physicians were present and the funeral ceremonies had actually commenced. it should be remarked that dr. m. k. boussakis, professor of physiology at the faculty of medicine of athens, was one of the eye-witnesses upon that occasion, and a similar case is mentioned on the authority of dr. zacutus lusitanus, who was also present. it should be remembered that greece is the country where belief in the vampire still most strongly survives.',\n", - " 'a terrible case of actual interment whilst still alive is described in a letter published in the sunday times, 6th september, 1896. some years ago the paris figaro, in an article of some length considered the terrible possibilities of being buried alive, and within fifteen days the editor received over four hundred letters from different parts of france, and all these were from persons who had either themselves been buried alive, or been on the point of being so interred, or who had escaped a premature grave through some fortunate accident.',\n", - " 'in september, 1895, a boy named ernest wicks was found lying on the grass in regent\\'s park, apparently dead, and after being laid out in the s. marylebone mortuary was brought back to life by the keeper, mr. ellis. when the doctor arrived the lad was breathing freely though still insensible, and a little later he was removed to the middlesex hospital. here the surgeon pronounced him to be \"recovering from a fit.\" at an inquest held at wigan, 21st december, 1902, mr. brighouse, one of the county coroners for lancashire, remarked with great emphasis upon the extraordinary circumstances, for he informed the jury that the child upon whom they sat had \"died\" four times, and the mother had obtained no less than three medical certificates of death, any one of which would have been sufficient for the subject to have been buried. in 1905, a mrs. holden, aged twenty-eight, living at hapton, near accrington, \"died,\" and the doctor did not hesitate',\n", - " 'p. 47',\n", - " 'to give a certificate of death, when all the arrangements for the funeral were made. fortunately, the undertaker noticed a slight twitch of the eyelids, and eventually the woman\\'s life was saved, and she lived well and strong under perfectly normal conditions. on 7th january, 1907, the midland daily telegraph reported the case of a child who \"to all intents and purposes died\" whilst an operation was being performed upon it. however, the patient who had been certified dead more than half-an-hour before recovered. on 14th september, 1908, the papers published the details of an extraordinary trance of a mrs. rees, nora street, cardiff, who appeared to have had a very narrow escape from premature burial. to go back some forty years, there may be found fully reported in the british medical journal, 31st october, 1885, the famous case of a child at stamford hill who fell into convulsions and passing into a trance was supposed to have died, recovering consciousness only after five days. hufeland, dealing with these instances of trance, remarks that \"six or seven days are often required to restore such cases. dr. charles londe says that fits of this kind \"last for days and days together,\" and that \"it seems not improbable that people may have been buried in this state in mistake for death.\" a case of exceptional interest is described as occurring in 1883 by the professor of medicine in the university of glasgow, dr. w. t. gairdner. the person whom he was treating remained in a trance which lasted twenty-three consecutive weeks, and so remarkable a circumstance attracted very considerable attention at the time, giving rise to a lengthy controversy.',\n", - " 'it should be more widely known that the ordinary simulacra of death are utterly deceptive and dr. john oswald remarks in his profound work suspended animal life, \"in consequence of an ignorant confidence placed in them persons who might have been restored to life . . . have been consigned to the grave.\" in september, 1903, dr. forbes winslow emphasized the fact that \"all the appearances of death may be so strikingly displayed in a person in a cataleptic condition that it is quite possible for burial to take place while life is not extinct,\" and he added \"i do not consider that the ordinary tests employed to ascertain that life is extinct are sufficient; i maintain that the only satisfactory proof of death is decomposition.\"',\n", - " 'p. 48',\n", - " \"even from this very hasty review, and examples might be multiplied, indeed are multiplying in every direction almost daily, terrible truth though it may be, it is obvious that premature burial is by no means an uncommon thing, whilst recovery from catalepsy or deep trances, sometimes lasting very many days, is even more frequent, and such cases have been recorded in all ages, times without number. it is, i think, exceedingly probable that extraordinary accidents of this kind, which would have been gossiped and trattled throughout large districts, and, passing from old to young, whispered round many a winter's fireside, were bound soon to have assumed the proportions of a legend which must, consciously or unconsciously, have continually gathered fresh accretions of horror and wonder in its train. it is possible, i say, that hence may have been evolved some few details which notably helped to swell the vampire tradition. i do not for a moment wish to imply that these circumstances, which we have just considered at some length, however striking and ghastly, were in any way the foundation of the belief in vampires. i would rather emphasize that the tradition goes far deeper and contains far more dark and scathful reality than this. i would not even suggest that premature burial and resuscitation from apparent death added anything essentially material to the vampire legend, but i do conceive it probable that these macabre happenings, ill-understood and unexplained, did serve to fix the vampire tradition more firmly in the minds of those who had been actual witnesses of, or who by reliable report knew of similar occurrences, and were fearful and amazed.\",\n", - " 'there are to be read examples of persons who, after death, have given evident signs of life by their movements. one such case is related by tertullian, who tell s us that he himself witnessed it, \"de meo didici.\" a young woman, who had once been in slavery, a christian, after she had been married but a few months died suddenly in the very flower of her age and happiness. the body was carried to the church, and before it was entrusted to the earth, a service was held. when the priest, who was saying the requiem \"praesente cadauere,\" raised his hands in prayer, to the astonishment of all the young girl who was lying upon her bier with her hands laid in repose at her side, also lifted her hands and gently clasped them as if she too were taking part',\n", - " 'p. 49',\n", - " 'in the supplication of the mass, and then toward the end she refolded them in the original position.',\n", - " 'tertullian also says that on one occasion, when a body was about to be interred, a body which was already in the grave seemed to draw to one side as though to make place for the newcomer.',\n", - " 'in the life of s. john the almsgiver, patriarch of alexandria, written by leontius archbishop of cyprus, we are told that when the saint who was aged sixty-four, died at amanthus in cyprus, 11th november, 616, his body was brought with great veneration and holy observance to the principal church of that place. here was opened a magnificent tomb in which two bishops had already been buried. it is said that out of respect the two bodies drew one to the right and one to the left, and that this took place in the sight of all who were present, \"non unus, neque decem, neque centum uiderunt, sed omnis turba, quae conuenit ad eius sepulturam.\" it must be remembered that archbishop leontius had his facts from those who had actually been present at the interment, and the same account may be found in the menology of symeon metaphrastes.',\n", - " 'evagrius ponticus relates the legend of a certain anchorite named thomas, who died in the nosokomeion at daphne, a suburb of antioch, where was the shrine of the martyr s. babylas. the hermit, a stranger, was buried in that part of the cemetery used for beggars and the very poor. in the morning, however, the body was found to be lying by a rich mausoleum in the most honourable part of the grounds. it was again interred, but when on the following day it was found by the sexton that the same thing had happened a second time, the people hastened to the patriarch ephraim and told him of the marvel. thereupon the body was borne with great rejoicing with an attendance of wax flambeaux and fuming frankincense into the town, and honourably enshrined with worship meet in one of the churches, and for many years the city annually observed the festival of the translation of s. thomas eremita. the same story is related by the ascetical writer, the monk johannes moschus, in his very beautiful treatise δειμών pratum spirituale, \"the spiritual meadow,\" but moschus says that the remains of the hermit rested in his grave whilst in veneration for his',\n", - " 'p. 50',\n", - " 'sanctity the bodies of those who were buried near had been found to have issued forth and modestly lay at some considerable distance.',\n", - " 'in hagiology there are many instances of the dead hearing, speaking and moving. thus in the life of s. donatus, the patron of arezzo, who succeeded the first bishop s. satyrus towards the end of the third century, we are told that eustasius, receiver-general of the revenues of tuscany, being called away on a journey, for safety sake left the public funds in the hands of his wife, euphrosina. this lady, being afraid that her house might be robbed, secretly buried the chests in the earth. she told the matter to no one, but unhappily before her husband\\'s return she expired suddenly in the night, and it was quite unknown where she had concealed her charge. eustasius was beside himself with grief and fear, for it seemed inevitable that be should be accused of peculation by his enemies, and condemned to death. in his despair he betook himself to s. donatus, and the holy man asked him that they might visit the grave of euphrosina. a great company gathered in the church, when the saint, going up to the grave, said in a loud voice that might be heard by all: \"euphrosina, tell us we pray thee, where thou didst put the public funds.\" the woman answered from her tomb, and certainly her accents were heard revealing the hiding-place. s. donatus went with the receiver-general to the spot indicated, and there they found the money carefully secured.',\n", - " 'it is related in the life of the famous anchorite, s. macarius of egypt, who died a.d. 394, that one of the monks of his laura was accused of murder, and as those who lay the charge spoke with great gravity and sureness, s. macarius bade them all resort to the grave of the deceased, where, striking his staff upon the ground, he adjured the dead man in these words: \"the lord by me bids you tell us whether this man, who is now accused of your murder, in truth committed the crime, or was in any way consenting thereto?\" immediately a hollow voice issuing from the tomb declared: \"of a truth he is wholly innocent, and had no hand at all in my death.\" \"who then,\" inquired the saint, \"is the guilty one?\" the dead man replied: \"it is not for me, my father, to bear witness; let it suffice to know that he who has been accused is innocent. leave the guilty in the hands of god. who',\n", - " 'p. 51',\n", - " 'can say whether the all-holy and compassionate god may not have mercy upon him and bring him to repentance.\"',\n", - " 'in the history of s. rheticus, as related by c. vettius aquilinus juvencus, the latin poet of the fourth century, who was so popular in the middle ages, we are told that when the saint had expired,\" his body was carried in solemn procession to the grave of his deceased wife, and suddenly, to the amazement of all present, the dead mail arose on his bier and said: \"dost thou remember well, my dear wife, that which thou didst ask me upon thy death-bed? lo, here am i come to fulfil the promise made so long syne. receive me then whom you have sweetly expected all this while.\" at these words it appeared as if the deceased wife, who had been dead for many years, revived again, and breaking the linen bands which enswathed her, she stretched forth her hands to her husband. (deprensa est laeuam protendens femina palmam, inuitans socium gestu uiuentis amoris.) the corpse was lowered into the tomb, and there the twain lie in peace, awaiting the resurrection of the just.',\n", - " 'not unsimilar is the legend of s. injurieux, whose dead body moved out of its own grave to repose in that of his wife scholastica. injurieux was a noble senator of clermont in auvergne, who married in virgin wedlock a lady of rank, scholastica. s. gregory of tours, in his historia francorum, tells us that scholastica died first, and injurieux, standing by the coffin in which her body was laid, as she was about to be carried forth to burial said in the presence of all: \"i thank thee, o, god, for having bestowed upon me this maiden treasure, which i return into thy hands unspotted, even as i received it.\" the dead wife smiled at these words, and her voice was heard to reply: \"why dost thou speak, o my husband, of these things which concern no one but ourselves?\" hardly had the lady been buried in a magnificent tomb, when the husband died also, and for some reason was temporarily interred in a separate grave, at a distance from the monument of his wife. on the next morning it was found that injurieux had left the place where he had been laid, and his dead body reposed by the side of that of scholastica. no man dared disturb the two corpses, and to the present day the senator and his wife are popularly called \"the two lovers.\"',\n", - " 'in his vies des saints monsignor guérin relates the following',\n", - " 'p. 52',\n", - " 'story s. patrick: \"st. patrice commande à la mort de rendre ses victimes afin que leur propre bouche proclame devant le peuple la vérité des doctrines qu\\'il leur annonce; ou bien il s\\'assure si son ordre de planter une croix sur la tombe des chrétiens, et non des infidèles, a été fidélement exécuté, en interrogeant les morts eux-mêmes, et en apprenant de leur bouche s\\'ils ont mérité ce consolant hommage.\"',\n", - " 'in this connexion--the tradition of a dead person who speaks--the story of s. melor may be not impertinent. about the year 400 a.d., there was a certain duke of cornwall named melian, whose brother, rivold, conspired against him and put him to death. the duke had left a young son, melor, whom the usurper feared to slay, but sent to be brought up under the strictest rule in one of the cornish monasteries, where the novice continually edified the community by his holy life, having (so it is said) the gift of miracles. after a few years rivold, being afraid lest the boy should depose him, bribed a soldier named cerialtan to murder melor secretly. this was accordingly done. the assassin cut off the head of melor, and carried it to the duke. he had murdered the boy in the depths of the forest, whither he had enticed him, and as he was making his way through the thicket lie chanced to look back his eyes being attracted by a great light. and lo, all around the body stood a company of angels, robed in white albs, and holding in their hands tapers which glistered as golden stars. when he had gone a little further, the wretched murderer was overcome by parching thirst, and almost fainting on his path he cried out in an agony: \"wretched man that i am! i die for a draught of cool water.\" then the head of the murdered boy spoke to him, saving: \"cerialtan, strike upon the grass of this lawn with thy stick, and a fountain shall spring forth for thy need.\" the man did so, and having quenched his thirst at the miraculous well, be went swiftly on his way. now when the head was brought into the presence of duke rivold this evil tyrant smote it with his hand, but he instantly sickened, and three days afterwards he died. the head was then taken back to the body and was honourably buried with it. and not many years afterwards the relics were translated with great worship to the town of amesbury, which is in wiltshire.',\n", - " \"in his histoire hagiologique du diocèse de valence, l'abbé\",\n", - " 'p. 53',\n", - " 'nadal tells us that when s. paulus succeeded s. torquatus as bishop of st-paul-trois-châteaux, shortly after his consecration a certain jew, a common usurer, came up to him in the streets of the city and loudly demanded a large sum of money which, as he said, had been lent to bishop torquatus, the predecessor of paulus. in order to ascertain whether this claim was equitable or not, s. paulus, robed in full pontificals, visited the tomb of s. torquatus in the cathedral, and touching the place of sepulture with his crozier requested torquatus to declare whether the money had been repaid or no. the voice of the dead bishop immediately answered from the grave: \"verily hath the jew received his money, returned unto him at the appointed time, with interest, ay, and double interest.\" the chronicles tell us that this undoubtedly took place, for many were present and bear witness that they both saw and heard these things.',\n", - " 'eugippius, who succeeded the martyr s. vigilius in the see of trent, has left us a life of s. severinus, who was one of the last christian bishops among the roman inhabitants of the district of the danube, immediately before the withdrawal to italy. on one occasion s. severinus having watched all night by the bier of a priest named silvanus bade him at dawn once more speak to his brethren who longed to hear his voice, for he had been an eloquent and fervent preacher. silvanus opened his eyes and the saint asked him if he wished to return to life. but the dead man answered: \"my father, detain me no longer here i pray thee, nor delay for me that hour of everlasting rest which those who sleep in jesus most sweetly enjoy.\" and then, closing his eyes, in this world he woke no more.',\n", - " 'this happening must at once bring to mind the famous miracle of s. philip neri, who was the spiritual director of the massimo family. in 1583 the son and heir of prince fabrizio massimo died of a fever at the age of fourteen, and when, amid the lamentations of the bereaved parents and the weeping relatives, s. philip entered the room, he laid his hand upon the brow of the youth, and called him by name. upon this the dead boy returned to life, opened his eyes, and sat up in the bed. \"art thou unwilling to die?\" asked the saint. \"no,\" sighed the youth gently. \"art thou resigned to yield they soul?\" \"i am.\" \"then go,\" said s. philip. \"va,',\n", - " 'p. 54',\n", - " 'che sii benedetto, e prega dio per noi!\" the boy sank back on his pillow with a heavenly smile, and a second time expired. on 16th march every year a festa is held in the family chapel within palazzo massimo in memory of this miracle.',\n", - " 'it is related in the life of s. theodosius the cenobite, written by bishop theodore of petra (536), that a large sepulchre having been made near the monastery, s. theodosius said: \"the tomb is now finished indeed, but who will be the first among us to occupy it?\" whereupon a certain monk named basil, falling upon his knees, prayed that this honour might be his, and within the space of about a month, without pain or disease, he passed away as a man who takes his rest in sleep. yet for full forty days afterwards s. theodosius, at matins and at the other hours, saw the dead monk still occupying his place in the choir. it was he alone who saw the monk, but others, especially one aetius, heard his voice. whereupon theodosius prayed that all might see the apparition of basil, and assuredly the eyes of all were opened so that they beheld him in his wonted place in their midst. when aetius would joyfully have embraced the figure it vanished from his touch, saying the words: \"hold, aetius. god be with you, my father and my brethren. but me shall ye see and hear no more.\"',\n", - " 'it was the custom of s. gregory, bishop of langres, to rise from his bed at night, when everyone else was fast in repose, and going quietly into the church to spend several hours at his devotions. this was long unobserved, but it so happened that one night one of the brethren lay awake, and he observed the bishop on his way down the corridors. from curiosity he stole softly after him, and presently saw him enter the baptistry, the door of which seemed to open to him of its own accord. for some time there was silence; and then the voice of the bishop was heard chanting aloud the antiphon, when immediately afterwards many voices took up the psalm, and the singing, decani and cantori, continued for the space of three hours. \"i, for my part;\" says s. gregory of tours, \"think that the saints, whose relics were there venerated and preserved, revealed themselves to the blessed man, and hymned praises to god in company with him.\"',\n", - " 'examples of later date when under exceptional conditions dead persons have returned to life, are not infrequently to',\n", - " 'p. 55',\n", - " 'be found. s. stanislaus the martyr, bishop of cracow,',\n", - " 'a not dissimilar incident is said to have occurred in the life of s. antony of padua, whose father was accused at lisbon of having been privy to the death of a certain nobleman, even if he had not actually slain him, as was implied. the saint, having requested that the body of the murdered man should be brought into court, solemnly adjured him saying: \"is it true that my father in any way consented unto or contrived thy assassination?\" with a deep groan the body made reply: \"in no wise is the accusation true. it is altogether false and framed of malice.\" whereupon the magistrates convinced by this positive declaration set free the prisoner.',\n", - " 'on 9th march, 1463, s. catherine of bologna, a poor clare, died at the convent there, and so great was her reputation for sanctity that rather more than a fortnight after her burial, her body was disinterred and placed in the church upon an open bier for the veneration of all. the vast, crowds who came were struck with the fact that her face retained a fresh and glowing colour, far more lively, indeed, than during her life. amongst others who visited the remains was a little maid of eleven years old by name leonora poggi. as out of reverence she stood at some distance, it was noticed that the',\n", - " 'p. 56',\n", - " 'body not only opened wide its eyes, but made a sign with the hand, saying: \"leonora, come hither.\" the girl advanced trembling, but s. catherine added: \"do not be afraid; you will be a professed nun of this community, and all in the convent will love you. nay, more, you shall be the guardian of this, my body.\" eight years afterwards leonora refused the hand of a wealthy suitor of high rank, and took the veil in the house of corpus domini. here she lived for no less than five and fifty years, reaching an extreme old age with the love and respect of the whole sisterhood. she was indeed for half a century the guardian of the most holy relic of the body of s. catherine.',\n", - " 'immediately after the death of that great ecstatica, s. maria maddelena de pazzi, who expired 25th may, 1607, the body of the holy carmelite was honourably laid upon a catafalque in the nuns\\' church of s. maria degli angeli, whilst all florence thronged thither to kiss her feet and touch were it but her raiment with medals and rosaries. among the first who visited the convent and who were favoured by being allowed to venerate the body before the multitude won admittance was a certain pious jesuit, father seripandi, and in his company chanced to be a young man of noble family whom he was striving to turn from the most dissolute courses. whilst the good priest knelt in prayer the youth scanned intently the countenance of the saint, but she frowning slightly gently turned away her face as if offended at his gaze. he stood abashed and dumbfounded, when father seripandi said: \"verily, my son, this saint would not suffer your eyes to behold her, inasmuch as your life is so licentious and lewd.\" \"it is true,\" cried the young man, \"but god helping me i will amend my ways in every particular.\" he did so, and before long was distinguished by no ordinary piety and observance of religion.',\n", - " 'similar cases of the resuscitation of the dead, corpses that arose from their graves, the movement of dead bodies, might indeed be almost indefinitely multiplied. and it is not at all impossible that as these extraordinary circumstances happened in the lives of the saints, so they would be imitated and parodied by the demon, for, as tertullian has said, \"diabolus simia dei.\"',\n", - " 'it has been well remarked that man has always held the',\n", - " 'p. 57',\n", - " 'dead in respect and in fear. the christian faith, moreover, has its seal upon the sanctity of death. even from the very infancy of humanity the human intelligence, inspired by some shadow of the divine truth, has refused to believe that those whom death has taken are ought but absent for a while, parted but not for ever. it has been argued, and not without sound sense, that primitive man desired to keep the dead, to preserve the mortal shell, and what are the tomb, the cave of prehistoric man, the dolmen of the gaulish chieftain, the pyramid of pharaoh, but the final dwelling-place, the last home? as for the actual corpse, this still had some being, it yet existed in the primitive idea. there can be nothing more horrible, no crime more repellent, than the profanation of the dead.',\n", - " 'dr. épaulard says: \"les vraies et graves profanations, de veritables crimes, reconnaissent pour mobile les grandes forces impulsives qui font agir l\\'être humain. je nommerai cela vampirisme, quitte à expliquer par la suite l\\'origine de cette appellation.',\n", - " '\"l\\'instinct sexuel, le plus perturbateur de tons les instincts, doit être cité en première ligne comme, l\\'un des facteurs les plus importants du vampirisme.',\n", - " '\"la faim, besoin fondamental de tout être vivant, aboutit dans quelques circonstances à des actes du vampirisme. on pourait citer maint naufrage et maint siège célèbre on la nécessité fit loi. le cannibalisme du bien des tribes savages n\\'a pas d\\'autre origine que la faim à satisfaire.',\n", - " 'chez l\\'homme se développe énormément l\\'instinct de propriété. d\\'où le travail, d\\'où, chez certains, le vol. nous venons de voir que la coutume de tons les temps fut d\\'orner les morts de ce qu\\'ils aimaient à posséder. les voleurs n\\'ont pas hésité à dépouiller les cadavres. . . . les parlements et les tribunaux eurent assez souvent à châtier des voleurs sacrilèges.\"',\n", - " 'vampirism, then, in its extended and more modern sense, may be understood to mean any profanation of a dead body, and it must accordingly be briefly considered under this aspect. \"on doit, entendre par vampirisme toute profanation de cadavres, quel que soit son mode et quelle que soit son origine.\"',\n", - " 'in france there have been many cases of sacriligious theft from the dead. in 1664 jean thomas was broken on the wheel for having disinterred the body of a woman and stolen',\n", - " 'p. 58',\n", - " 'the jewels in which she was buried; and well-nigh a century before, in 1572, a grave-digger jean regnault was condemned to the galleys for having stolen jewels and even winding-sheets from corpses. in 1823, pierre renaud was sentenced at riom for having opened a tomb with intent to steal. not many years after, the police captured the band \"de la rue mercadier,\" seven ruffians who made it their business to violate graves and the vaults of rich families and who thus had stolen gems and gold to the value of no less than 300,000 francs. it is well-known that the notorious ravachol forced open the tomb of madame de rochetaillée in the expectation that she had been buried in her jewels, but found nothing of this kind, as the lady was merely wrapped in her shroud of lawn.',\n", - " 'on 12th july, 1663, the parliament of paris heavily sentenced the son of the sexton of the cemetery attached to saint-sulpice. this young wretch was in the habit of exhuming corpses and selling them to the doctors. in the seventeenth century the faculty of paris was allowed one dead body a year, and the famous physician, mauriccau lay under grave suspicion of having illegally procured bodies to dissect for his anatomical studies.',\n", - " \"in england the resurrection men added a new terror to death. even the bodies of the wealthy, when every precaution had been taken, were hardly safe against the burgling riflers of vault and tomb, whilst to the poor it was a monstrous horror as they lay on their sick beds to know that their corpses were ever in danger of being exhumed by ghouls, carted to the dissection theatre, sold to 'prentice doctors to hack and carve. in his novel, the mysteries of london, g. w. m. reynolds gives a terrible, but perhaps not too highly coloured, picture of these loathsome thefts. irregular practitioners and rival investigators in the anatomy schools were always ready to buy without asking too many questions. body-snatching became a regular trade of wide activities. one of the wretches who plied the business most successfully even added a word to the english language. william burke, of the firm burke and hare, who was hanged 28th january, 1829, began his career in november, 1827. this seems to have commenced almost accidentally. hare was the keeper of a low lodging-house in an edinburgh slum, and here died an old soldier owing a considerable amount for his rent. with\",\n", - " 'p. 59',\n", - " 'the help of burke, another of his guests, they carried the corpse to dr. robert knox, of 10 surgeon\\'s square, who promptly paid £7 10s. for it. the scotch had the utmost horror of resurrection men, and bodies were not always easy to procure, although the vile knox boasted that he could always get the goods he required. it is said that relations would take it in turns to stand guard over newly-dug graves, and the precaution was not unnecessary. another lodger at hare\\'s fell ill, and it was decided that he should be disposed of in the same way. but he lingered, and so burke smothered him with a pillow, hare holding the victim\\'s legs. dr. knox paid £10 for the remains. since money is so quickly earned they do not hesitate to supply the wares. a friendless beggar woman; her grandson, a dumb-mute; a sick englishman; a prostitute named mary paterson, and many more were enticed to the lodgings and murdered. quite callously burke confessed his method. he used to lie on the body while hare held nose and mouth; \"in a very few minutes the victims would make no resistance, but would convulse and make a rumbling noise in their bellies for some time. after they had ceased crying and making resistance we let them die by themselves.\" dr. knox contracted that he would pay £10 in winter and £8 in summer for every corpse produced. at last the whole foul business comes to light.',\n", - " 'up the close and down the stair,',\n", - " 'but and ben with burke and hare,',\n", - " \"burke's the butcher, hare's the thief,\",\n", - " 'knox the boy that buys the beef.',\n", - " \"so sang the street urchins. burke confessed, and was hanged. hare turned king's evidence, but it would seem that was hardly needed, for the suspicion which connected these ruffians with the numerous disappearances was overwhelming from the first, and soon became certainty. it was a grave scandal that both the villains and their paramours, together with dr. knox, who, in spite of his denials, undoubtedly was well aware of the whole circumstances, were not all five sent to the gallows. it is true that the mob endeavoured to catch them and would have torn them to pieces. to the mob they should have been duly thrown. that they escaped by some legal quibble or flaw speaks ill indeed for the age.\",\n", - " 'p. 60',\n", - " 'that species of vampirism known as necrophagy or necrophagism, which is cannibalism, is very often connected with the religious rites of savage people and also finds a place in the sabbat of the witches. sir spenser st. john, in his description of haiti, gives curious details of the voodoo cult when cannibalism mingles with the crudest debauchery. among the kwakiutl indians of british columbia the cannibals (hamatsas) are the most powerful of all the secret societies. they tear corpses asunder and devour them, bite pieces out of living people, and formerly they ate slaves who had been killed for their banquet. the haida indians of the queen charlotte islands practise a very similar religion of necrophagy. among the ancient mexicans the body of the youth whom they sacrificed in the character of the god tetzcatlipoca was chopped up into small pieces and distributed amongst the priests and nobles as a sacred food. in australia the bibinga tribe cut up the bodies of the dead and eat them in order to secure the reincarnation of the deceased. the same ceremony was observed by the arunta. casper, vierteljahrschrift, viii (p. 163) mentions the case of an idiot who killed and ate a baby in order to impart to himself the vitality of the child. it should be remarked that necrophagy enters very largely into the passions of the werewolf, and there are innumerable examples of lycanthropists who have devoured human flesh, and slain men to feed upon their bodies. boguet recounts that in the year 1538 four persons charged with sorcery, jacques bocquet, claude jamprost, clauda jamguillaume and thievenne paget, confessed that they had transformed themselves into wolves and in this shape had killed and eaten several children. françoise secretain, pierre gandillon and george gandillon also confessed that they had assumed the form of wolves and caught several children whom they had stripped naked and then devoured. the children\\'s clothes were found without rent or tear in the fields, \"tellement qu\\'il sembloit bien que ce fust vne personne, qui les leur eut deuestus.\"',\n", - " 'a remarkable instance of necrophagy which caused a great noise in the eighteenth century is said to have given de sade a model for minski, \"l\\'ermite des appenins,\" in juliette, iii (p. 313). the horrible abode of this muscovite giant is amply described. the tables and chairs are made of human bones,',\n", - " 'p. 61',\n", - " 'and the rooms are hung with skeletons. this monster was suggested by blaise ferrage, or seyé, who in 1779 and 1780 lived in the pyrenees, and captured men and women whom he devoured.',\n", - " 'one of the most terrible and extraordinary cases of cannibalism was that of sawney beane, the son of peasants in east lothian, who was born in a village at no great distance from edinburgh towards the close of the fourteenth century. he and a girl in the same district wandered away in company, and took up their abode in a cave on the coast of galloway. it is said this cavern extended nearly a mile under the sea. here they lived by robbing travellers, and carrying off their bodies to their lair they cooked and ate them. eight sons and six daughters they gendered, and the whole tribe used to set forth upon marauding expeditions, sometimes attacking as many as five and six persons travelling in company. grandchildren were born to this savage, and it is said that for more than five and twenty years these cannibals killed men on the highway and dragging the prey to their lair fed upon human flesh. suspicion was often aroused, and even panic ensued, but so skilfully had nature concealed the opening to the cave that it was long ere the gang could be traced and captured. the whole family were put to death amid the most horrible torments in the year 1435 at edinburgh. it is probable that in the first place beane and his female companion were driven to necrophagy by starvation, and the horrid craving for human flesh once tasted became a mad passion. the children born into such conditions would be cannibalistic as a matter of course.',\n", - " 'sawney beane was made the subject of a romance--sawney beane, the man-eater of midlothian, by thomas preskett prest, who, between the years 1840 and 1860 was the most famous and most popular purveyor of the \"shocker\" which circulated in immense numbers. prest\\'s greatest success was sweeney todd, a character who was once supposed actually to have lived, but who is almost certainly fiction. it will be remembered that todd\\'s victims disappeared through a revolving trap-door into the cellars of his house. their bodies, when stripped and rifled, were handed over to be used by mrs. lovett, who resided next door and kept a pie-shop which was greatly frequented. once it so happened that the supply ran short',\n", - " 'p. 62',\n", - " 'for a while, as todd for some reason was unable to dispatch his customers, and mutton was actually used in the pies. complaints were made that the quality of the pies had deteriorated, the meat had lost its usual succulence and flavour.',\n", - " 'in a manuscript, which has never been printed, written about 1625 by the brother of henry percy, ninth earl of northumberland, george percy, who was twice deputy-governor of virginia, and entitled a trewe relatyon of the proceedings and occurrences of momente which have happened in virginia from . . . 1609 untill 1612, details are given of the terrible conditions under which the early colonists had to live. starvation sometimes faced them, and not only were corpses then dug out of graves and eaten, but \"one of our colony murdered his wife . . . and salted her for his food, the same not being discovered before he had eaten part thereof, for which cruel and inhuman fact i adjudged him to be executed, the acknowledgment of the deed being enforced from him by torture, having hung by the thumbs, with weights at his feet a quarter of an hour before he would confess the same.\"',\n", - " 'as is often recorded in history during long and terrible sieges, starvation has driven the wretched citizens of a beleagured town to devour human flesh. an example of this may be found in the bible, which tells us of the horrors when jerusalem was encompassed by benadad of syria during the reign of king joram (b.c. 892), kings iv (a. v. kings ii), vi, 24-30: \"congregauit benadad rex syriae, uniuersum exercitum suum, et ascendit, et obsidebat samariam. factaque est fames magna in samaria: et tamdiu obsessa est, donec uenundaretur caput asini octoginta argenteis, et quarta pars cabi stercoris columbarum quinque argenteis. cumque rex israel transiret per murum, mulier quaedam exclamauit ad eum; dicens: salua me domine mi rex. qui ait: non te saluat dominus: unde te possum saluare? de area, uel de torculari? dixitque ad eam rex: quid tibi uis? quae respondit: mulier ista dixit mihi: da filium tuum, ut comedamus eum hodie, et filium meum comedemus eras. coximus ergo filium meum, et comedimus. dixique ei die altera: da filium tuum ut comedamus eum. quae abscondit filium suum. quod cum audisset rex, scidit uestimenta sua, et transibat per murum. uiditque omnis populus cilicium, quo uestitus erat ad carnem intrinsecus.\"',\n", - " 'p. 63',\n", - " \"(benadad king of syria gathered together all his army, and went up, and besieged samaria. and there was a great famine in samaria; and so long did the siege continue, till the head of an ass was sold for fourscore pieces of silver, and the fourth part of a cabe of pigeon's dung, for five pieces of silver. and as the king of israel was passing by the wall, a certain woman cried out to him, saying: save me, my lord o king. and he said: if the lord doth not save thee how can i save thee? out of the barnfloor, or out of the winepress? and the king said to her: what aileth thee? and she answered: this woman said to me: give thy son, that we may eat him to-day, and we will eat my son to-morrow. so we boiled my son, and ate him. and i said to her on the next day: give thy son that we may eat him. and she hath hid her son. when the king heard this, he rent his garments, and passed by upon the wall. and all the people saw the hair-cloth which he wore within next to his flesh.)\",\n", - " 'w. a. f. browne, sometime commissioner for lunacy in scotland, has a very valuable paper necrophilism, which was read at the quarterly meeting of the medico-psychological association, glasgow, 21st may, 1874. he points out that in ireland, under the savagery of queen elizabeth, when the rich pastures were burned into a wilderness, \"the miserable poor . . . out of every corner of the woods and glens came creeping forth upon thin hands, for their legs could not bear them, they looked like anatomes of death; they spoke like ghosts crying out of their graves; they did eat the dead carrions; happy when they could find them; yea, they did eat one another soon after; insomuch as the very carcasses they spared not to scrape out of their very graves.\" during the siege of jerusalem by titus, during the plague in italy in 450, cannibalism was rife. during a famine in france in the eleventh century \"human flesh was openly exposed for sale in the market-place of tournus.\" a man had built a hut in the forest of macon and here he murdered all whom he could entice within his doors, afterwards roasting the bodies and feeding on them. browne says that there came under his notice in the west indies two females who frequented graveyards at night. it does not appear that they exhumed bodies but they used to sleep among the tombs, and these dark wanderings, as might be expected, thoroughly scared',\n", - " 'p. 64',\n", - " 'the native population. he also adds: \"the abodes of the dead have been visited, violated; the exhumed corpses, or parts of them, have been kissed, caressed, or appropriated, and carried to the homes of the ravisher, although belonging to total strangers.\" he also says: \"i was much struck, when frequenting the parisian asylums as a student, with the numbers of anæmic, dejected females who obtruded upon me the piteous confession that they had eaten human flesh, devoured corpses, that they were vampires, etc.\" dr. legrande du saulle says that in many members of a scottish family there appeared connate necrophagism. prochaska mentions a woman of milan also tempted children to her house and ate them at her leisure. a girl of fourteen, belonging to puy de drôme, is described as having displayed on all occasions an extraordinary avidity for human blood and as sucking greedily recently inflicted wounds. the brigand gaetano mammone, who long terrorized south italy, was accustomed as a regular habit to drain with his lips the blood of his unhappy captives. in another instance a man who dwelt apart in a cave in the south of france seized a girl of twelve years old, strangled her, violated the corpse, and then inflicting deep gashes upon it with a knife drank the blood and devoured the flesh. he kept the remains in his retreat but subsequently interred them. he was judged insane.',\n", - " 'in the sixteenth century there dwelt in hungary a terrible ogress, the countess elisabeth ba\\'thory, who for her necro-sadistic abominations was known as \"la comtesse hongroise sanguinaire.\" the comte de charolais (1700-1760), \"de lugubre mémoire,\" loved nothing better than to mingle murder with his debauches, and many of the darkest scenes in juliette but reproduce the orgies he shared with his elder brother, the duke of burgundy.',\n", - " \"dr. lacassagne, in his study vacher l'éventreur et les crime's sadiques, lyon-paris, 1899, has collected many cases of necro-sadism. joseph vacher, who was born at beaufort (isère), 16th november, 1869, was guilty of a series of crimes which lasted from may, 1894, to august, 1897. he was tramping during those years up and down france, immediately after his release as cured from an asylum where be had been confined for attempting to rape a young servant who refused his hand in marriage. vacher's first crime seems to have been committed\",\n", - " 'p. 65',\n", - " \"19th may, 1894, when in a lonely place he killed a working girl of twenty-one. he strangled her and then violated the body. on 20th november of the same year he throttled a farmer's daughter aged sixteen at vidauban (var), violated the body and mutilated it with his knife. in the same way on 1st september, 1895 at bénonces (ain), he killed a lad of sixteen, victor portalier, and slashed open the stomach. three weeks later he strangled a shepherd boy of fourteen, pierre massot-pellet, and mutilated the body. in all some eleven murders with violation were traced to vacher, the last being that of a shepherd lad aged thirteen, pierre laurent, at courzieu (rhône), 18th june, 1897. the body was indescribably hacked and bitten. probably this maniac was guilty of many more assaults which did not come to light.\",\n", - " \"in england the sensation caused by the mysterious mutilations by jack the ripper will not easily be forgotten. the first body was found at whitechapel, 1st december, 1887; the second, which had thirty-nine wounds, 7th august, 1888. on 31st of the same month a woman's corpse was found horribly mutilated; 8th september a fourth body bearing the same marks, a fifth on 30th september; a sixth on 30th november. on the 1st june, 1889, human remains were dredged from the thames; 17th july a body still warm was discovered in a whitechapel slum; on 10th september of the same year the last body.\",\n", - " 'the classic instance of \"vampirism,\" serjeant bertrand, will be fully dealt with in a later chapter.',\n", - " 'andréas bickel killed women after having both raped and mutilated them in an indescribable manner. dr. épaulard quoting from feuerbach, ahtenmœsigen darstellung merkwürdzer verbrechen says that bichel declared: \"je puis dire qu\\'en ouvrant la poitrine, j\\'étais tellement, excité que je tressaillais et que j\\'aurais voulu trancher un morceau de chair pour le manger.\" in the year 1825 a vine-dresser named léger, a stalwart fellow of four and twenty, left his home to find work. he wandered about the woods for a week or more, and was then seized with a terrible craving to eat human flesh. \"il rencontre une petite fille de douze ans, la viole, lui déchire les organes génitaux, lui arrache le coeur, le mange et boit son sang, puis enterre le cadavre. arrêté peu après, il fait tranquillement l\\'aveu de son crime, est condamné et executé.\"',\n", - " 'p. 66',\n", - " 'a famous case was that of vincenzo verzeni, a necrophagist and necrosadist, who was born at bottanuco of an ailing and impoverished stock and arrested in 1872 for the following crimes: an attempt to strangle his cousin marianna, a girl of twelve years old; a similar attempt to throttle signora aruffi; aged twenty-seven; a similar attempt upon signora gala; the murder of giovanna motta (les viscères et les parties génitales sont arrachées du corps, les cuisses lacérées, un mollet detaché. le cadavre est nu); the murder and mutilation of signora frizoni, aged twenty-eight; an attempt to strangle his cousin maria previtali, aged nineteen. whilst he was committing these crimes \"pour prolonger le plaisir, il mutila ses victimes, leur suça le sang, et détacha même des lambeaux pour les manger.\"',\n", - " 'those vampirish atrocities which are urged by sexual mania are generally classified as necrophilia and necrosadism--\"la nécrophilie est la profanation qui tend à toute union sexuelle avec le cadavre: coït normal ou sodomique, masturbation, etc. le nécrosadisme est la mutilation des cadavres destinée à provoquer un éréthisme génital. le nécrosadisme diffère du sadisme en ce qu\\'il ne recherche pas la douleur, mais la simple destruction d\\'un corps humain. les nécrosadisme aboutit parfois à des actes de cannibalisme qui peuvent prendre le nom de nécrophagie . . . . nécrophiles et nécrosadiques sont la plupart du temps des dégénéres impulsifs on debiles mentaux, ce que prouvent lour vie antérieure et leurs tares héréditaires. ce sont en outre bien souvent des hommes auxquels un contact professionel avec le cadavre a fait perdre toute répugnance (fossoyeurs, prêtres, étudiants en médicine).\" the word nécrophilie seems, to have been first suggested by a belgian alienist of the nineteenth century, dr. guislain; nécrosadisme is used by dr. épaulard.',\n", - " \"necrophilia was not unknown in ancient egypt, and was carefully provided against as herodotus tells us, book ii, lxxxix: τὰσδε γυναῖκας τῶν ἐπιφάνεων ἀνδρῶν, ἐπεὰν τελευτήσωσι, οὐ παραυτίκα διδοῦσι ταριχεύειν οὐδὶ ὁ?`σαι ἀ?'ν ἑ?`ωσι εὐειδέες κάρτα καὶ λόγου πλεῦνος γυναῖκες?: ἀλλ᾽ὲπεὰν τριταῖαι ἡ?` τεταρτραῖαι γένωνται, οὑ?'τω παραδιδοῦσι τοῖσι ταριχεύουσι· το̃ῦτο δε ποιεῦσι οὐ?'τω τοῦδε εἱ?'νεκεν, ἱ?'να μὴ σφι οῖ ταριχευταὶ μίσγωνται τῇσι γυναιξί?: λαμφθῆναι γαρ τινὰ φασὶ μισγόμενον νεκρῷ προσφάτῳ γυναικός κατειπεῖν δὲ τὸν ὁμότεχνον· wives of noblemen and women\",\n", - " 'p. 67',\n", - " 'of great beauty and quality are not given over at once to the embalmers; but only after they have been dead three or four days; and this is done in order that the embalmers may not have carnal connexion with the corpse. for it is said that one was discovered in the act of having intercourse with a fair woman newly dead, and was denounced by his fellow-workman.\"',\n", - " 'it was said that after periander, tyrant of corinth, had slain his wife he entered her bed as a husband. in the praxis rerum criminalium of damhouder, at the end of the sixteenth century we have: \"casu incidit in memoriam execrandus ille libidinis ardor, quo quidam feminam cognoscunt mortuam.\"',\n", - " 'a very large number of cases of necrophilia has been collected by various authorities, of which it will suffice to give but a few examples. \"en 1787, près de dijon, à cîteaux, un mien aïeul, qui était médecin de cette célèbre abbaye, sortait un jour du convent pour aller voir, dans une cabane située au milieu des bois, la femme d\\'un bûcheron que la veille il avait trouvée mourante. le mari, occupé à de rudes travaux, loin de sa cabane, se trouvait forcé d\\'abandonner sa femme qui n\\'avait ni enfants, ni parents ni voisins autour d\\'elle. en ouvrant la porte du logis, mon grand-père fut frappé d\\'un spectacle monstrueux. un moine quêteur accomplissait l\\'acte du coït sur le corps de la femme qui n\\'était plus qu\\'un cadavre.\"',\n", - " 'in 1849 the following case was reported: \"il venait de mourir une jeune personne de seize ans qui appartenait a une des premières familles de la ville. une partie de la nuit s\\'était écoulée lorsqu\\'on entendit dans la chambre de la morte le bruit d\\'un meuble qui tombait. la mère, dont l\\'appartement était voisin, s\\'empressa d\\'accourir. en entrant, elle apperçut un homme qui s\\'échappait en chemise du lit de sa fille. son effroi lui fit pousser de grands cris qui réunirent autour d\\'elle toutes les personnes de la maison. on saisit l\\'inconnu qui ne répondait que confusément aux questions qu\\'on lui posait. la première pensée fut que c\\'était un voleur, mais son habillement, certains signes dirigèrent les recherches d\\'un autre côté et l\\'on reconnut bientôt que la jeune fille avait été déflorée et polluée plusiers fois. l\\'instruction apprit que la garde avait été gagnée à prix d\\'argent: et bientôt d\\'autres révélations prouvèrent que ce malheureux, qui avait',\n", - " 'p. 68',\n", - " 'reçu une éducation distinguée, jouissait d\\'une très grande aisance et était lui-même d\\'une bonne famille n\\'en était pas à son coup d\\'essai. les débats montrérent qu\\'il s\\'était glissé un assez grand nombre de fois dans le lit de jeunes filles mortes et s\\'y était livré à sa détestable passion.\"',\n", - " 'in 1857 the case of alexandre siméon, a necrophilist who was always feeble-minded--he was born in 1829, a foundling--and who eventually became wholly insane, attracted considerable attention. his habits were of the most revolting nature, and \"siméon, trompant la surveillance, s\\'introduisait dans la salle de morts quand il savait que le corps d\\'une femme venait d\\'y être déposé. là, il se livrait aux plus indignes profanations. il se vanta publiquement de ces faits.\"',\n", - " 'dr. morel, gazette hebdomadaire de médicine et de chirurgie, 13th march, 1857, relates: \"un acte semblable à, celui de siméon a été commis à la suite d\\'un pari monstrueux, par un élève d\\'une école secondaire de médicine, en présence de ses camarades. il est bon d\\'ajouter que cot individu, quelques années plus tard, est mort aliéné.\"',\n", - " 'dr. moreau, of tours, in his famous study aberrations du sens génésique, 1880, quoting from the evénement, 26th april, 1875, relates an extraordinary case at paris in which the culprit, l-----, was a married man and the father of six children. the wife of a neighbour having died, l-----undertook to watch in the death chamber, whilst the family were arranging the details of the interment. \"alors une idée incompréhensible, hors nature, passa par l\\'esprit du veilleur de la morte. il souffla, les bougies allumées près du lit, et ce cadavre, glacé, raidi, déjà, au décomposition fut le proie de ce vampire sans nom.\" the profanation was almost immediately discovered owing to the disorder of the bed and other signs. l----- fled, but at the instance of dr. pousson and the husband, who was half mad with grief and rage, he was arrested and inquiry made. a quel délire a-t-il obéi?',\n", - " 'in les causes criminelles et mondaines, 1886, albert bataille gives an account of henri blot, \"un assez joli garçon de vingt-six ans, à figure un peu blème. ses cheveux sont ramenés sur le front, à la chien. il porte à la lèvre supérieure une fine moustache soigneusement effilée. ses yeux, profondement noirs, enfoncés dans l\\'orbite, sont clignotants. il a quelque chose de félin dans l\\'ensemble de la physionomie; quelque',\n", - " 'p. 69',\n", - " 'chosi aussi de l\\'oiseau de nuit.\" \"le 25 mars, 1886, dans la soirée, entre 11 heures et minuit blot escalade une petite porte donnant dans le cimetière saint-ouen, se dirige vers la fosse commune, enlève la cloison qui retient la terre sur la dernierè bière de la rangée. une croix piquée au-dessus de la fosse lui apprend quo le cercueil est le corps d\\'une jeune femme de dix-huit ans, fernando méry, dite carmanio, figurante de théâtre, enterrée la veille.',\n", - " '\"il déplace la bière, l\\'ouvre, retire le corps de la jeune fille qu\\'il emporte à l\\'extremité de la tranchée, sur le remblai. là, il pose, par précaution, ses genoux sur des feuilles de papier blanc enlevées à des bouquets et pratique le colt sur le cadavre. ensuite, il s\\'endort probablement, et ne se réveille que pour sortir du cimitière assez à temps pour ne pas être vu, mais trop tard pour replacer le corps.\" a curious point is that when the profanation was discovered a man named duhamel wrote a letter avowing that he had committed the violation. he was confined at mazas, since he gave such full details that he was truly believed to have been guilty. whilst under the observation of two doctors he proved to be of unsound mind. on 12th june blot again violated a tomb, he fell asleep, was discovered and arrested. on 27th august, when brought to trial, and the judge expressed his horror of such acts, he replied callously: \"que voulez-vous, chacun a ses passions. moi le cadavre, c\\'est la mienne!\" dr. motet was unable to certify him insane, and he was sentenced to two years\\' imprisonment.',\n", - " 'dr. tiberius of athens communicated the following case. a young medical student, some seven years ago, made his way at night into the mortuary chapel where lay the body of a beautiful actress who had just died, and for whom he had long nourished an insensate passion. covering the cold clay with passionate kisses he violated the corpse of his inamorata. it should be remarked that the body had been dressed in the richest costume and covered with jewels, as it was to be carried thus in the funeral procession.',\n", - " 'necrophilia is said to be common in certain eastern countries. \"en turquie, dans les endroits où les cimetières sont mal gardés, on a souvent vu, parâit-il d\\'abjects individus, la lie du peuple, contenter sur des cadavres qu\\'ils exhumaient leurs désirs sexuels.\"',\n", - " 'p. 70',\n", - " 'the case of victor ardisson, who was called by the papers \"le vampire du muy,\" and who was arrested in 1901 upon multiplied charges of the exhumation and violation of dead bodies, was studied in great detail by dr. épaulard, who summed up his verdict in these words: \"ardisson est un débile mental inconscient des actes qu\\'il accomplit. il a violé des cadavres parce que, fossoyeur, il lui était facile de se procurer des apparences de femme sous forme de cadavres auxquels il prêtait une sorte d\\'existence.\"',\n", - " 'the motive of the leopold and loeb case which occurred at chicago, and which was so widely discussed throughout america in 1924 was necrosadism. having killed the unfortunate boy the two wretched degenerates violated the body. it may not untruly be said that this morbid crime sprang in the first place from a false philosophy. with ample money at their command, their minds rotted with the backwash of freud, these two young supermen conceived themselves above all laws. they had exhausted every erotic emotion, and sought something new to thrill their jaded nerves. these vilenesses and abominations would be ended by a return to the true philosophy, the lore of the schoolmen and doctors.',\n", - " 'there are not unknown--in fact there are not uncommon--amazing cases of what may be called \"mental necrophilia,\" a morbid manifestation for which suitable provision is made in the more expensive and select houses of accomodation.',\n", - " 'in his study la corruption fin-de-siècle léo taxil remarks: \"une passion sadiste des plus effrayantes est celle des détraqués auxquels on a donné le nom. de \\'vampire.\\' ces insensés veulent violer des cadavres. cette dépravation du sens génésique, dit le docteur paul moreau de tours constitue le degré le plus extrême des déviations de l\\'appetit vénérien.\" he also speaks of \"chambres funèbres\" as being not uncommon in certain brothels. \"d\\'ordinaire, on dispose, dans une pièce de l\\'établissement des tentures noires, un lit mortuaire, en un mot, tout un appareil lugubre. mais l\\'un des principaux lupanars de paris a, en permanence, une chambre spéciale, destinée aux clients qui désirent tâter du vampirisme.',\n", - " '\"les murs de la chambre sout tendus de satin noir, parsemi de larmes d\\'argent. au milieu est un catafalque, très riche. une femme, paraissant inerte, est là, couchée dans un cercueil découvert, la tête reposant sur un coussin de velours. tout',\n", - " 'p. 71',\n", - " \"autour, de longs cierges, plantés dans de grandes chandeliers d'argent. aux quatre coins de la pièce, des urnes funéraires et des cassolettes, brûlant, avec des parfums, un mélange d'alcool et de sel gris, dont les flammes blafardes, qui éclairent le catafalque, donnent à la chair de la pseudo-morte la couleur cadavérique.\",\n", - " '\"le fou luxurieux, qui a payé dix louis pour cette séance, est introduit. il y a un prie-dieu oû\\'il s\\' agenouille. un harmonium, placé dans un cabinet voisin, joue le dies irae ou le de profundis. alors, aux accords de cette musique de funérailles le vampire se rue sur la fille qui simule la défunte et qui a ordre de ne pas faire un mouvement, quoiqu\\'il advienne.\"',\n", - " 'it might not unreasonably be thought that the catafalque, the bier, the black pall, would arouse solemn thoughts and kill desire, but on the contrary this funeral pomp and the trappings of the dead are considered in certain circles the most elegant titillation, the most potent and approved of genteel aphrodisiacs.',\n", - " 'latina & mittelhochdeutsch',\n", - " 'uf dem anger',\n", - " 'floret silva nobilis',\n", - " 'floribus et foliis.',\n", - " 'ubi est antiquus',\n", - " 'meus amicus? ah!',\n", - " 'hinc equitavit',\n", - " 'eia, quis me amabit? ah!',\n", - " 'floret silva undique,',\n", - " 'nah mime gesellen ist mir wê.',\n", - " 'gruonet der walt allenthalben,',\n", - " 'swâ ist min geselle alse lange? ah!',\n", - " 'der ist geriten hinnen,',\n", - " 'o wî, wer sol mich minnen? ah!',\n", - " 'english',\n", - " 'on the green',\n", - " 'the noble woods are burgeoning',\n", - " 'with flowers and leaves.',\n", - " 'where is the lover',\n", - " 'i knew? ah!',\n", - " 'he has ridden off!',\n", - " 'oh! who will love me? ah!',\n", - " 'the woods are burgeoning all over,',\n", - " 'i am pining for my lover.',\n", - " 'the woods are turning green all over,',\n", - " 'why is my lover away so long? ah!',\n", - " 'he has ridden off,',\n", - " 'oh woe, who will love me? ah!']},\n", - " 'pop': {'meta': {'train_data': ['make a monkey out, make a monkey out',\n", - " \"don't make a monkey of me\",\n", - " 'make a monkey out, make a monkey out',\n", - " \"don't make a monkey of me\",\n", - " 'make a monkey out, make a monkey out',\n", - " \"don't make a monkey of me\",\n", - " 'make a monkey out, make a monkey out',\n", - " \"don't make a monkey of me\",\n", - " 'narippanashi no denwa wo yoso ni noizu darake no radio',\n", - " 'kousaten de wa ima tachi_oujou habamarete no toujou',\n", - " 'make a monkey out, make a monkey out',\n", - " \"don't make a monkey of me\",\n", - " 'make a monkey out, make a monkey out',\n", - " \"don't make a monkey of me\",\n", - " 'doko made tsuzuku? kono kaidan to kakato no toreta buutsu',\n", - " 'yagate sora ni wa hikari ga sashite boku no kokoro tokashite',\n", - " '*kimi to no conversation. good communication',\n", - " \"torete 'ru hazu darou i stand by you\",\n", - " \"furikaerazu tsukinukete _ikeba ii n' da\",\n", - " \"don't make a monkey of me\",\n", - " \"tobitateba miete kuru sonna mon' na n' da\",\n", - " 'kodou agete sakebe!!',\n", - " \"saa nansei no kaze wo uke (don't make a monkey out of me.)\",\n", - " \"aimai nante hatsutete (don't make a monkey out of me.)\",\n", - " \"passion, session, good condition. (don't make a monkey out of me.)\",\n", - " 'say yeah!! (yeah!!)',\n", - " 'say ho!! (ho!!)',\n", - " \"don't make a monkey out of me\",\n", - " '*chorus',\n", - " \"jibun wo shinjite nukete _ikeba ii n' da\",\n", - " 'taiyou no __ku atsuku',\n", - " \"toki tateba iete kuru sonna mon' na n' da\",\n", - " 'kodou agete sakebe!!',\n", - " 'make a monkey out, make a monkey out',\n", - " \"don't make a monkey of me\",\n", - " 'make a monkey out, make a monkey out',\n", - " \"don't make a monkey of me\",\n", - " 'make a monkey out, make a monkey out',\n", - " \"don't make a monkey of me\",\n", - " 'make a monkey out, make a monkey out',\n", - " \"don't make a monkey of me\",\n", - " 'neon kkum-cheoreom naege dagawaseo kkumman gateun haenbok kkul gatchi',\n", - " 'dalkomhage',\n", - " 'nal hollyeoseo (hamkkehamyeonseo) hangsang bulanhaesseo',\n", - " 'kkaenamyeon modeunge da nun apeseo sarajilkka bwa',\n", - " 'na mam jolyeosseo bulanhaesseo geu dongan',\n", - " 'nal gajyeoseo nan apa my dream girl maeil nat bam shido ddaedo eobshi',\n", - " 'gashi gateun neon (naege angigo) sangcheo nal geol almyeonseodo',\n", - " \"you're my dream girl meomchulsuga eobseo nan\",\n", - " 'jeomjeom deo jeomjeom deo nege bbayeodeuna bwa baby',\n", - " 'geumbangirado nokeul geot gata neon taeyang boda ddeugeobda',\n", - " 'ni hyanggi-neun dok cheoreom onmom-e peojyeo jungdokiran ge ireon geonga',\n", - " 'beoseonalsu eobtge geobuhalsu eobtge',\n", - " 'neoege gajyeo beorin geotman gat-a',\n", - " 'nal gajyeoseo nan apa my dream girl maeil nat bam shido ddaedo eobshi',\n", - " 'gashi gateun neon (naege angigo) sangcheo nal geol almyeonseodo',\n", - " \"you're my dream girl meomchulsuga eobseo nan\",\n", - " 'jeomjeom deo jeomjeom deo nege bbayeodeuna bwa baby',\n", - " \"girl, you're so hypnotizing, na nal ilijeori\",\n", - " 'jabgo heundeulji nae ap-e geudaeneun machi',\n", - " 'nalkaroun kkot gata jangmi nun-i meol goet gatchi areumdabji',\n", - " 'ooh ooh ooh you know that i love you, i love you',\n", - " \"ooh ooh ooh you know that i'll always be with you\",\n", - " 'nal gajyeoseo nan apa my dream girl maeil nat bam shido ddaedo eobshi',\n", - " 'gashi gateun neon (naege angigo) sangcheo nal geol almyeonseodo',\n", - " \"you're my dream girl meomchulsuga eobseo nan\",\n", - " 'jeomjeom deo jeomjeom deo nege bbayeodeuna bwa baby',\n", - " 'oh ma la oh oh me giova oh',\n", - " 'pe dolae gi? po va po',\n", - " 'e sha me co oh me gioma ah',\n", - " 'p? d? le pa tus dac',\n", - " 'e la fongo oh te de van',\n", - " 'pe a su mon ah tu na',\n", - " 'oh de salai tu ghe',\n", - " 'mani t?nai oh ye',\n", - " 'oh ni? pa eh eh pad? pa nar',\n", - " 'oh da ne pe se do oh',\n", - " 'e cha la co na cha me pa de',\n", - " 'sar male giac ef ma',\n", - " 'e ma pa co oh te do la ah',\n", - " 'cas do le pa ta',\n", - " 'pa',\n", - " 'gi reo jin ha ru ga nae gen him i deu reo',\n", - " 'i reon geon na bbun in ji',\n", - " 'ja peul su itt ji man geu reol su do eob deon',\n", - " 'ba bo i gi ddae mun ya oh',\n", - " 'dda seu hi nae ri neun haet sa ra rae do',\n", - " 'nae ma eum eun cha ga un son ggeut shi rin eo dum',\n", - " 'na neun neo mu yak hae eo dun bam e hon ja ul ji mo reu neun de',\n", - " 'mu shim hi do deung eul dol li ne yo',\n", - " 'nan jeol dae a nin de o jok geu dae bbun da reun sa ram eun a nin de',\n", - " 'eol gul ma jeo jeom jeom dal ma ga jan a',\n", - " 'geo jit mal cheo reom ddo da reun na ri wa do',\n", - " 'we ro un geon na bbun in ji',\n", - " 'nae ga geu dael wi han geu rim ja yeott deon',\n", - " 'geu ddae cheo reom sal su i sseul ji',\n", - " 'ma eum i ma rae yo ddeo na ga ra go',\n", - " 'nae du nun eun jjo ja yo geu dae mo seub man',\n", - " 'na neun neo mu yak hae eo dun bam e hon ja ul ji mo reu neun de',\n", - " 'mu shim hi do deung eul dol li ne yo',\n", - " 'nan jeol dae a nin de o jok geu dae bbun da reun sa ram eun a nin de',\n", - " 'eol gul ma jeo jeom jeom dal ma ga jan a',\n", - " 'ma eum i heun deul li neun bam nae gi eok ma jeo do ji weo ya ha na yo (so tell me)',\n", - " 'na neun neo mu yak hae eo dun bam e hon ja ul ji mo reu neun de',\n", - " 'mu shim hi do deung eul dol li ne yo',\n", - " 'nan jeol dae a nin de o jok geu dae bbun da reun sa ram eun a nin de',\n", - " 'eol gul ma jeo jeom jeom oh baby',\n", - " 'i reon nae gen geu dae man nae jeon bu jan a',\n", - " 'sumjocha swigi himdeun sigandeul',\n", - " 'nae mogeul joineun sesangeun',\n", - " 'amuri jiuryeo aesseobwado',\n", - " 'gyesok nareul jakkuman sseureojige haneunde',\n", - " 'naega gajin jeonbu ojik neo hanappunya',\n", - " 'neoreul nochi anheulge',\n", - " 'you are my last love neon nae majimak sarang',\n", - " 'you are my last love kkeuteul hamkkehal saram',\n", - " 'geochin sesangeseo badanaen hanaui seonmul',\n", - " 'nae nunape ttodareun gijeok',\n", - " 'you are the last love',\n", - " 'sumanheun sigakui sangcheodeuldo woo baby',\n", - " 'apeumi seororeul jjijeodo',\n", - " 'ssahigo ssahin i chueukdeuleun',\n", - " 'seoroui nunmuleul dagga juneun geol',\n", - " 'yeogi mureupkkulgo neoreul boneun nareul bwa',\n", - " 'neol wihae nareul geolge',\n", - " 'you are my last love neon nae majimak sarang',\n", - " 'you are my last love kkeuteul hamkkehal saram',\n", - " 'geochin sesangeseo badanaen hanaui seonmul',\n", - " 'nae nunape ttodareul gijeok',\n", - " 'you are the last love',\n", - " 'i jageun banjironeun malhalsu eobtjiman',\n", - " 'yaksokhalge modeun geol nan neoreul wihaeseo',\n", - " 'you are my last love you are the love of my life',\n", - " 'eodun gireul balkke bichuneun hanaui deungbul',\n", - " 'nae nunape ttodareun gijeok',\n", - " 'you are the last love',\n", - " '(verse 1)',\n", - " 'the red light meomchwobeorin',\n", - " 'sigan sok neomanui hyanggi',\n", - " 'ggaeji anheul kkumgyeolcheoreom',\n", - " 'jeomjeom deo ppajyeodeureo',\n", - " 'the green light michyeobeorin',\n", - " 'nan neoege jiljuhalkka',\n", - " 'teojil deuthan simjangsorin',\n", - " 'neoegeman ddwigo isseo',\n", - " 'like satellites and shootings stars',\n", - " 'taeyangeul bon byeolcheoreom',\n", - " 'ni juwireul dolgo dora',\n", - " 'ddeugeowodo dagaga',\n", - " 'neol machimnae angoseo (holding your heart)',\n", - " 'nunbusige taolla',\n", - " '(chorus)',\n", - " 'we live for this love (nanana nana nanana)',\n", - " 'we live for this love (nanana nana nanana)',\n", - " 'we live for this love',\n", - " '(verse 2)',\n", - " 'the firelight bultabeorin',\n", - " 'nunbiche gadhin sungan',\n", - " 'nal ggaewo jul han beonui kiseu',\n", - " 'on sesangeul da gajil geot gata',\n", - " 'like satellites and shootings stars',\n", - " 'ggochipeul bon beol cheoreom',\n", - " 'ni juwireul dolgo dora geochimeobsi dagaga',\n", - " 'neol machimnae angoseo (holding your heart)',\n", - " 'jeo nopi nara olla',\n", - " '(chorus)',\n", - " 'we live for this love (nanana nana nanana)',\n", - " 'we live for this love (nanana nana nanana)',\n", - " 'we live for this love',\n", - " '(rap part)',\n", - " 'i can’t get enough, i can’t get off of your love',\n", - " 'nan neoui sarang eobsineun mos sara',\n", - " 'jungdokdoeneun geol',\n", - " 'nun kkamppak hal sai i’m by your side',\n", - " 'ib matchwobomyeon i feel so high',\n", - " '(we live for this love)',\n", - " 'neoraneun solar system',\n", - " 'ane naneun shooting star',\n", - " 'ggeullyeoga, geobuhal su eobtneun black hole',\n", - " 'it’s automatic systematic in this universe',\n", - " 'nege ikkeullyeoga geobu hal su eobtneun black hole',\n", - " '(break)',\n", - " 'everytime i count 1 2 3',\n", - " 'uril dulleossan segyega meomchuji',\n", - " 'dugeundaen biteue matchugo',\n", - " '(chorus)',\n", - " 'we live for this love (everytime i count 1 2 3)',\n", - " 'it’s automatic it’s automatic systematic tematic',\n", - " 'we live for this love (urin ggeuteobsi sarangeul ggumkkuji)',\n", - " 'it’s automatic it’s automatic systematic tematic',\n", - " 'we live for this love',\n", - " 'ggum sogedo ggae-eonado eonjena gyeote isseo',\n", - " 'duryeowo ma nae son jaba naega neol jikyeojulge',\n", - " 'hey yeogil jom bwayo',\n", - " 'listen to me ladies',\n", - " 'hwaryeohan mudae wi',\n", - " 'nunbusige biccnaneun spotlight',\n", - " 'pay attention to me nal ttara hae',\n", - " 'what do you wanna',\n", - " 'ja sijakhae bwa',\n", - " 'hey hey hey hey oh',\n", - " 'sum makhineun yeolgi',\n", - " 'yeogin jigeum eodi',\n", - " 'modu soril jilleo bwa this is it',\n", - " 'it’s girls’ revolution',\n", - " 'sarangttaeme tto saramttaeme',\n", - " 'deoneun ulji malja',\n", - " 'neon nuguboda areumdaun',\n", - " 'geureon yeojanikka',\n", - " 'nawa ja yeogiro',\n", - " 'ttarawa mangseorijima',\n", - " 'yeogijeogi singyeong kkeugoseo',\n", - " 'neol wihae saneun geoya',\n", - " 'nal jom bwa meosjiji anhni',\n", - " 'woo nal ttara haebwa',\n", - " 'gibun up johajil geoya',\n", - " 'ladies pay attention come on',\n", - " 'ijebuteo dangdanghage',\n", - " 'gaseum pyeogo jasin issge',\n", - " 'modu nal ttarawa',\n", - " 'follow me follow me follow me ladies',\n", - " 'amu saenggak haji malgo',\n", - " 'tteugeopge oneureul jeulgyeo bwa alright',\n", - " 'modu hamkke nawa follow me',\n", - " 'i’m a fighter bureul jipyeora',\n", - " 'eheradiya chumchwora lady',\n", - " 'dara dara balkeun dara',\n", - " 'show me your super power',\n", - " 'nunbusige biccnaneun nalgae',\n", - " 'pyeolchyeoboneun geoya',\n", - " 'miss lady luck haengunui yeosin',\n", - " 'misoreul bonaejwoyo',\n", - " 'nawa ja yeogiro',\n", - " 'ttarawa mangseorijima',\n", - " 'yeogijeogi singyeong kkeugoseo',\n", - " 'neol wihae saneun geoya',\n", - " 'nal jom bwa meosjiji anhni',\n", - " 'woo nal ttara haebwa',\n", - " 'gibun up johajil geoya',\n", - " 'ladies pay attention come on',\n", - " 'ijebuteo dangdanghage',\n", - " 'gaseum pyeogo jasin issge',\n", - " 'modu nal ttarawa',\n", - " 'follow me follow me follow me ladies',\n", - " 'amu saenggakhaji malgo',\n", - " 'tteugeopge oneureul jeulgyeo bwa alright',\n", - " 'modu hamkke nawa follow me',\n", - " 'everybody moyeora',\n", - " 'let’s get together follow me',\n", - " 'say victory victory',\n", - " 'modu nareul ttaraseohae boneun geoya',\n", - " 'move',\n", - " 'x2',\n", - " 'ijebuteo dangdanghage',\n", - " 'gaseum pyeogo jasin issge',\n", - " 'modu nal ttarawa',\n", - " 'follow me follow me follow me ladies',\n", - " 'amu saenggak haji malgo',\n", - " 'tteugeopge oneureul jeulgyeo bwa alright',\n", - " 'modu hamkke nawa follow me',\n", - " 'pediculose insides my fibriconosis',\n", - " 'cavities dermatofied on lucerative',\n", - " 'piemia nephrosis i ingest sarnapyrosis',\n", - " 'on the gribled thryroided exudated',\n", - " 'corion necro feasted by citeiematized',\n", - " 'prostata connected by micosis croup',\n", - " 'the severed slug contains',\n", - " 'munching cutaneopsoriac abdominal',\n", - " 'blastoma grabs by insipid grotesque',\n", - " 'vasculose disentery like fetidness',\n", - " 'endamoebus flatulence on dermia',\n", - " 'i abuse and consume your fetal pregnant',\n", - " 'acarus scalpel',\n", - " 'on the process in anosmia',\n", - " 'connection of the maggotization frying',\n", - " 'tumorous devied mononeuclonicism',\n", - " 'only relics, dementia',\n", - " 'phorlorn effluviazed',\n", - " 'albumined trastorm',\n", - " 'denigrate, peptic ulcerous',\n", - " 'echlampse bladder',\n", - " 'frozen limbs on ecczema',\n", - " 'bizarreness on the dolency ectopy',\n", - " 'monochlonic scamose endosmosis',\n", - " 'foretic insides now aglutinized',\n", - " 'of renal donors of edemic',\n", - " 'neuroblastoma injerted by viral oestogena',\n", - " 'cephall extirp carcinoma infiltrates',\n", - " 'lynphomed clinicism in rectal masticate',\n", - " 'regurgitate',\n", - " 'segregate the abortive',\n", - " 'oncho seweds volvulus',\n", - " 'the pulverized chronic symptoms',\n", - " 'mince the gastric adeno carcinoma',\n", - " 'cysts',\n", - " 'by producing',\n", - " 'cervyx intestinal tissues',\n", - " 'teratomes penetrating the malign',\n", - " 'calcino embrionary excrete co foetal',\n", - " 'the scent of the inside bladder',\n", - " 'captor of dipomes reeks off',\n", - " 'the fetal crinoma',\n", - " 'and fertible possibilities',\n", - " 'engendred on hepaticrania excretor of comielitis',\n", - " 'in complexed with the maggotized',\n", - " 'cremate in',\n", - " 'the placent blasted',\n", - " 'sarno tumorose renal conditions',\n", - " 'frolic through',\n", - " 'vaginometric fistules',\n", - " 'anatomous frigteaned flebotomy',\n", - " 'flutter myocardiac dactille and muscle paptille',\n", - " 'griblling sinusad',\n", - " 'abortative',\n", - " 'etypathogenical',\n", - " 'reeconstructive',\n", - " 'degenerative liquor dysfunct',\n", - " 'dum, exercitus uruk devastat agres meridiane',\n", - " 'baazgor progressus exercitus nigrae pergit',\n", - " 'etiam in aeri, cum legione orkianis, domini draconum',\n", - " 'trux orcus equitat fulvum alatum',\n", - " 'horridum squamis osseis emicantem flammas',\n", - " 'ex faucibus ardentibus praeentem multitudinibus',\n", - " 'draconis tegentibus spectaculum solis alis membranaceis',\n", - " 'insputant ignem in vicis subiacentis ubi inantier',\n", - " 'gentae elficae incessunt scorpionibus, defendentes',\n", - " 'a morte alata devastanteque urente omnia',\n", - " 'invantier evocant in cavernis tum',\n", - " 'perfossis ab hobbit kaltag ut vultures, dracones',\n", - " 'iniciunt in cuniculis subterraneis elicantes',\n", - " 'unguibus incolas pavidas laniatas monstruosis',\n", - " 'draconibus',\n", - " \"(the legion of the orkian's dragons)\",\n", - " \"while uruk's army was ravaging the middle lands\",\n", - " \"baazgor's black armies raise up in the sky with\",\n", - " 'orkian, dragons master... a filthy ogre rides',\n", - " 'a monstrous black winged horse',\n", - " 'covered with bony plates, he vomited violent flames',\n", - " 'from the hot jaws',\n", - " 'an preceded a multitude of dragons with with',\n", - " 'membranous wings',\n", - " 'they spit fire on the below villages where the elfic',\n", - " 'people try to find an escape uselessly',\n", - " 'they defend themselves from the winged death which',\n", - " 'burns anything she meets',\n", - " 'in vain they look for a shelter in the caves dug by',\n", - " \"kaltag's hobbit since\",\n", - " 'like vultures, the dragons creep into the',\n", - " 'underground tunnels',\n", - " 'taking out the terrified habitants torn by the',\n", - " 'monstrous dragons',\n", - " 'romanization',\n", - " 'love my boy (ooh yeah)',\n", - " 'i love my boy (i love you my boy)',\n", - " 'i love my boy (duduru duru duru)',\n", - " 'i love my boy (i love you my boy)',\n", - " 'everybody scream!',\n", - " 'oneul bam maeil bam',\n", - " 'jakkuman ni saenggangman naneun',\n", - " 'geudaeye diva diva di di di diva',\n", - " 'oneul bam maeil bam',\n", - " 'jjaritjjaritan i sungan naneun',\n", - " 'geudaeye diva diva di di di diva',\n", - " 'jakkuman ni saenggagi na neoye dalkomhan hyanggi',\n", - " 'amureochi aneun cheok nan nege ppajeo beoryeosseo',\n", - " 'chagapge mareul handaedo naneun meomchul su eopseo',\n", - " 'nal bara bondago yaksokae naege',\n", - " 'i got ni mameul yeol su inneun master key',\n", - " 'neon naye masterpiece',\n", - " 'uri gachi machi hwansange tag team',\n", - " 'you know we are destiny',\n", - " 'sarangeun bul ta after this',\n", - " 'neomuna dalkomhan soksagim',\n", - " 'jjaritjjaritan kiss so sweet boy',\n", - " 'you are my favorite',\n", - " 'oneul bam maeil bam',\n", - " 'jakkuman ni saenggangman naneun',\n", - " 'geudaeye diva diva di di di diva',\n", - " 'oneul bam maeil bam',\n", - " 'jjaritjjaritan i sungan naneun',\n", - " 'geudaeye diva diva di di di diva',\n", - " 'just tell me what you wanna do',\n", - " 'nae mameul gajeogarago',\n", - " 'i don’t wanna let you go',\n", - " 'neon naman baraborago',\n", - " 'i just wanna get it done',\n", - " 'sarangeul mal hal georago',\n", - " 'apado joa niga eopshineun',\n", - " 'sal suga eomneunde nan',\n", - " 'i got big plans for you, love for you',\n", - " 'i don’t give a damn what people say',\n", - " 'sarangi jungyohae',\n", - " 'no matter what you are my man',\n", - " 'jakkuman jeomjeom nan beonjeo l o v e',\n", - " 'sarangiran gamjeong',\n", - " 'you’re so perfect neon naege manjeom',\n", - " 'come to me naege dagawa jweo',\n", - " 'oneul bam maeil bam',\n", - " 'jakkuman ni saenggangman naneun',\n", - " 'geudaeye diva diva di di di diva',\n", - " 'oneul bam maeil bam',\n", - " 'jjaritjjaritan i sungan naneun',\n", - " 'geudaeye diva diva di di di diva',\n", - " 'oneul bam ni gyeoteseo jamdeulgoman shipeo',\n", - " 'ireonge sarangilkka jakkuman tteollyeo',\n", - " 'ttatteutan neoye pume ankkigoman shipeo',\n", - " 'na ije eotteokae neoyege ppajeonnabwa',\n", - " 'oneul bam maeil bam',\n", - " 'jakkuman ni saenggangman naneun (oh oh)',\n", - " 'geudaeye diva diva di di di diva',\n", - " 'oneul bam maeil bam (oneul bam)',\n", - " 'jjarit jjaritan i sungan naneun (yeah)',\n", - " 'geudaeye diva diva di di di diva',\n", - " 'oneul bam maeil bam',\n", - " 'jakkuman ni saenggangman naneun',\n", - " 'geudaeye diva diva di di di diva',\n", - " 'oneul bam maeil bam',\n", - " 'jjaritjjaritan i sungan naneun',\n", - " 'geudaeye diva diva di di di diva',\n", - " 'na na na na na',\n", - " 'na na na na na',\n", - " 'na na na na na',\n", - " 'na na na na na',\n", - " 'diva diva di di di diva',\n", - " 'korean',\n", - " 'i love my boy (ooh yeah)',\n", - " 'i love my boy (i love you my boy)',\n", - " 'i love my boy (duduru duru duru)',\n", - " 'i love my boy (i love you my boy)',\n", - " 'everybody scream!',\n", - " '오늘 밤 매일 밤',\n", - " '자꾸만 니 생각만 나는',\n", - " '그대의 diva diva di di di diva',\n", - " '오늘 밤 매일 밤',\n", - " '짜릿짜릿한 이 순간 나는',\n", - " '그대의 diva diva di di di diva',\n", - " '자꾸만 니 생각이 나 너의 달콤한 향기',\n", - " '아무렇지 않은 척 난 네게 빠져 버렸어',\n", - " '차갑게 말을 한대도 나는 멈출 수 없어',\n", - " '날 바라 본다고 약속해 내게',\n", - " 'i got 니 맘을 열 수 있는 master key',\n", - " '넌 나의 masterpiece',\n", - " '우리 같이 마치 환상의 tag team',\n", - " 'you know we are destiny',\n", - " '사랑은 불 타 after this',\n", - " '너무나 달콤한 속삭임',\n", - " '짜릿짜릿한 kiss so sweet boy',\n", - " 'you are my favorite',\n", - " '오늘 밤 매일 밤',\n", - " '자꾸만 니 생각만 나는',\n", - " '그대의 diva diva di di di diva',\n", - " '오늘 밤 매일 밤',\n", - " '짜릿짜릿한 이 순간 나는',\n", - " '그대의 diva diva di di di diva',\n", - " 'just tell me what you wanna do',\n", - " '내 맘을 가져가라고',\n", - " 'i don’t wanna let you go',\n", - " '넌 나만 바라보라고',\n", - " 'i just wanna get it done',\n", - " '사랑을 말 할 거라고',\n", - " '아파도 좋아 니가 없이는',\n", - " '살 수가 없는데 난',\n", - " 'i got big plans for you, love for you',\n", - " 'i don’t give a damn what people say',\n", - " '사랑이 중요해',\n", - " 'no matter what you are my man',\n", - " '자꾸만 점점 난 번져 l o v e',\n", - " '사랑이란 감정',\n", - " 'you’re so perfect 넌 내게 만점',\n", - " 'come to me 내게 다가와 줘',\n", - " '오늘 밤 매일 밤',\n", - " '자꾸만 니 생각만 나는',\n", - " '그대의 diva diva di di di diva',\n", - " '오늘 밤 매일 밤',\n", - " '짜릿짜릿한 이 순간 나는',\n", - " '그대의 diva diva di di di diva',\n", - " '오늘 밤 니 곁에서 잠들고만 싶어',\n", - " '이런게 사랑일까 자꾸만 떨려',\n", - " '따뜻한 너의 품에 안기고만 싶어',\n", - " '나 이제 어떡해 너에게 빠졌나봐',\n", - " '오늘 밤 매일 밤',\n", - " '자꾸만 니 생각만 나는 (oh oh)',\n", - " '그대의 diva diva di di di diva',\n", - " '오늘 밤 매일 밤 (오늘 밤)',\n", - " '짜릿 짜릿한 이 순간 나는 (yeah)',\n", - " '그대의 diva diva di di di diva',\n", - " '오늘 밤 매일 밤',\n", - " '자꾸만 니 생각만 나는',\n", - " '그대의 diva diva di di di diva',\n", - " '오늘 밤 매일 밤',\n", - " '짜릿짜릿한 이 순간 나는',\n", - " '그대의 diva diva di di di diva',\n", - " 'na na na na na',\n", - " 'na na na na na',\n", - " 'na na na na na',\n", - " 'na na na na na',\n", - " 'diva diva di di di diva',\n", - " 'al lunedè meti deent la prema',\n", - " \"spazzeti'l muund cui tergicristai\",\n", - " 'pizzi i fanai per majà la cürva',\n", - " 'banana negra che la voer scapà',\n", - " 'ma me la ciapi cunt el vulaant',\n", - " 'el me mutuur la digerirà',\n", - " 'i cupertoni san giamò a memoria',\n", - " 'ogni chilometro de spetascià',\n", - " \"all'autogrill prima del gottardo\",\n", - " \"gh'è johnny cash che voe sultà soe\",\n", - " 'el voer un passagg fin in funt al tunnel',\n", - " 'verdi la porta el foe setà giò',\n", - " \"el paltò l'è negro cume la chitara\",\n", - " 'la facia düra cume sti muntagn',\n", - " 'el dis me spiàs sun dumà un fantasma',\n", - " 'ma svolza la radio che me canti amò',\n", - " 'hey johnny cash scià che vèmm scià che vèmm',\n", - " \"e tant anca 'l gottardo l'è un oltru anell de fööch\",\n", - " 'e canta cry cry cry ghost rider in the sky',\n", - " 'e visto che te seet te te lassi anca fümà',\n", - " \"in sull'autostrada a casalpusterlengo\",\n", - " \"gh'è una gran pulver se veed nagott\",\n", - " \"l'è menga nèbia l'è menga foemm\",\n", - " \"l'è tüta sabia e in mezz gh'è un omm\",\n", - " \"el gh'ha soe un capell che'el par quasi un strasc\",\n", - " \"el gh'ha i salopett i scarponi gross\",\n", - " \"el riid un zicc e po'l tussis\",\n", - " \"g'ha la tera in facia e in fuunt ai pulmòni\",\n", - " 'hey woody guthrie scià che vèmm scià che vèmm',\n", - " \"questa tèra l'è la tua tèra ma adess però mangen pioe\",\n", - " \"l'onda verde la diis nagott ma questa nigula finirà\",\n", - " \"de dree gh' è mia la california ma a cesenatico podum\",\n", - " 'ruva',\n", - " \"all'usteria visén a faenza gh'è un fio elegant cun't i\",\n", - " 'oecc de matt',\n", - " 'el beev gio whisky cume beev gazusa',\n", - " 'la sua chitara par che la va a tocch',\n", - " \"el g'ha i dii cume dees anguillla pèll maron\",\n", - " 'e la vuus de dona',\n", - " \"el me diis g'ho de scapà del diavul c\",\n", - " \"he'l me cerca cun scià el me cuntratt\",\n", - " 'hey robert johnson scià che vèmm scià che vèmm',\n", - " 'comacchio non è la louisiana ma i zanzar i henn püssèe catiiv',\n", - " \"gnanca el diavul el se fa vedè quaand l'è scià l'ura del tramuunt\",\n", - " 'e non temere per il crocevia che che in italia urmai i henn tücc rondò',\n", - " \"e rua voenn in fund alla pianüüra che l'è vestiì cume un arcubalen\",\n", - " \"la sua chitara a l'è incendiada de dre de lüü pasa el tempuraal\",\n", - " 'el dupèera i tron el dupèera i fulmin i a liga insema i a sona amo',\n", - " 'la tèra gialda la paar el so palco e tutt el cieel un amplificaduur',\n", - " 'hey jimi hendrix scià che vèmm scià che vèmm',\n", - " \"forli l'è menga woodstock e fra un po' brüset anca te\",\n", - " 'e a suon de purple haze little wing e woodoo child',\n", - " \"adess gh'è scià la grandin e i cuntadini i henn mea taant cunteent\",\n", - " \"e al casell de cesena nord la stradal l'ha ma fermà\",\n", - " \"fann el giir del camion varden l'abitacul\",\n", - " 'varden departutt e poe se varden luur',\n", - " '\"ma è strano sembravate in cinque',\n", - " 'dentro la cabina un minuto fa\"',\n", - " '\"ci son solo io con tutti i mei dischi ma prego pòduf cuntrulà\"',\n", - " 'promi ter re',\n", - " 'salutare',\n", - " 'coa gresco ba tu e re',\n", - " 'for meteno ven tusacredo',\n", - " 'fendere be la ri',\n", - " 'poli ceriona',\n", - " 'volare',\n", - " 'dimi kareche entu maredo',\n", - " 'beligerate ficu tanima',\n", - " 'dimi karache entu maredo',\n", - " 'beligerate ficu tanima',\n", - " '(oh, oh)',\n", - " 'mera',\n", - " '(ah)',\n", - " 'san guiva ni me de',\n", - " 'mi fen de re',\n", - " 'fu ga ve nu ma',\n", - " 'po li ce re da tana',\n", - " 'potesta confico',\n", - " 'malete venefico',\n", - " 'potesta facina',\n", - " 'malete peresona',\n", - " 'batura',\n", - " 'come and make feel cpu nun naui dunoe ja yogi ije',\n", - " 'turn on my head zero one zero one one one zero one',\n", - " 'ne momane kumtulde ne shilchenun sarajigo hosangiyo ready go',\n", - " 'come and have some fun ne nunun gomseg enjin jigu odidun',\n", - " 'yonghwachorom i can see it all memorinun ne shimjang keiburun',\n", - " 'ne pidjul noui momi neane hell yeah cloaking by fear',\n", - " 'welcome my slaves hwansange sesanguro norul deryogarira',\n", - " 'welcome my slaves tatuthan ni onginun ije piryochi anha',\n", - " 'welcome my slaves ne apheso yongwonhi nonun chumul churira',\n", - " 'welcome my slaves noui sumsorin ije amu uimiga obso',\n", - " 'chaos of the world chagabge byonhegago sum shwigi jocha bogcha',\n", - " 'gwanshim obshi saraji amuredo johachi nega gajin turaneso byorirobshi',\n", - " 'sarassoji king of the world modurul jojonghari boiji anun',\n", - " 'hisenge arumdabge mihwa doeri naui mogul joine salgi wihe',\n", - " 'dalline ochodaga irohgena help me cloaking by fear',\n", - " 'welcome my slaves hyonranhan ne mosubi norul yuhog harira',\n", - " 'welcome my slaves noui modun shiganul jonbu jomshigharira',\n", - " 'welcome my slaves dalkomhan gu dogiga noui mogul joerira',\n", - " \"welcome my slaves you can't get out can't get out\",\n", - " \"a shock is comin' down to me what is the real\",\n", - " \"i can't feel it anymore shockwave raving\",\n", - " 'raving in this glamorous cyberworld',\n", - " 'raving in this holly fancy lies illusions',\n", - " \"you're gonna be addicted\",\n", - " 'welcome you have just entered the frenzied place',\n", - " 'where yo can get the perfect ecstasy can you feel it',\n", - " 'your body and soul became so useless idiot',\n", - " 'est dues in nobis...omnibus',\n", - " 'deus absconditus',\n", - " 'dominus vobiscum',\n", - " 'eo domine diabolus',\n", - " 'we speak in tongues, for we are legion',\n", - " 'we speak in tongues, in nomine patris',\n", - " 'stultior stulto fuisti',\n", - " 'qui tabellis crederes',\n", - " 'stultorum infinitus',\n", - " 'est numerous',\n", - " \"i'm alone in the deep black space\",\n", - " 'i touch pieces of light around me',\n", - " \"i don't know why i feel fine in this cosmic way\",\n", - " 'follow me through the nebulous',\n", - " 'in my silver machine',\n", - " 'i realize my dream',\n", - " 'and i follow my destiny',\n", - " 'in ten thousand milliard',\n", - " 'i brush against the stars',\n", - " 'throughout all the galaxy',\n", - " \"i cross comets, i see quasar, it's fabulous\",\n", - " 'my garden is really endless',\n", - " 'and now the time is not my enemy, i am free',\n", - " 'welcome to my constellation',\n", - " 'welcome to my constellation',\n", - " 'andromeda coma berenices',\n", - " 'cassiopeia delphinus hercules',\n", - " 'aquarius corona australis',\n", - " 'cetus cygnus virgo aries phoenix',\n", - " 'chameleon lynx hydra serpens',\n", - " 'pisces orion aurica sextans',\n", - " 'ursa major taurus lupus leo',\n", - " 'fornax pictor aquila draco',\n", - " 'capricornus pegasus centaurus',\n", - " 'ara apus ophiocus perseus',\n", - " 'vela mensa sagitta antlia',\n", - " 'lepus libra monoceros musca',\n", - " 'katalave to makria sou echo thema',\n", - " \"oli i zoi mou kataligei s' ena psema\",\n", - " 'choris esena einai adynato na ziso',\n", - " 'pos na synechiso',\n", - " 'katalave to pia den xero ti na kano',\n", - " 'echo archisei tora meres na ta chano',\n", - " 'einai aximerota kai dyskola ta vradia',\n", - " 'zo mesa sta skotadia',\n", - " 'den tin palevo allo pia ti monaxia',\n", - " 'i apousia sou fotia, pou kaiei mera nychta stin kardia mou',\n", - " 'den tin palevo allo pos na sou to po',\n", - " 'to evales fainetai skopo, chilia kommatia na kopo',\n", - " 'po po po, poso se thelo',\n", - " 'po po po, poso mou leipeis',\n", - " 'po po po, poso ponao',\n", - " \"kai s' anazitao\",\n", - " \"oso zo tha to fonazo, pos s' agapo kai den s' allazo\",\n", - " \"na' soun edo na ginoume ena, ola ta dino gia sena\",\n", - " 'katalave to makria sou arrostaino',\n", - " \"ap' ton paradeiso stin kolasi pigaino\",\n", - " 'sou leo chanomai kai tipota den kaneis',\n", - " 'thes na me trelaneis',\n", - " 'katalave to einai provlima megalo',\n", - " \"na mi boro ap' to myalo mou na se vgalo\",\n", - " 'kai mono esy me dyo lexeis tha to lyseis',\n", - " 'pes pos tha gyriseis',\n", - " 'den tin palevo allo pia ti monaxia',\n", - " 'i apousia sou fotia, pou kaiei mera nychta stin kardia mou',\n", - " 'den tin palevo allo pos na sou to po',\n", - " 'to evales fainetai skopo, chilia kommatia na kopo',\n", - " 'po po po, poso se thelo',\n", - " 'po po po, poso mou leipeis',\n", - " 'po po po, poso ponao',\n", - " \"kai s' anazitao\",\n", - " \"oso zo tha to fonazo, pos s' agapo kai den s' allazo\",\n", - " \"na' soun edo na ginoume ena, ola ta dino gia sena\",\n", - " 'den tin palevo allo pia ti monaxia',\n", - " 'i apousia sou fotia, pou kaiei mera nychta stin kardia mou',\n", - " 'den tin palevo allo pos na sou to po',\n", - " 'to evales fainetai skopo, chilia kommatia na kopo',\n", - " 'po po po, poso se thelo',\n", - " 'po po po, poso mou leipeis',\n", - " 'po po po, poso ponao',\n", - " \"kai s' anazitao\",\n", - " \"oso zo tha to fonazo, pos s' agapo kai den s' allazo\",\n", - " \"na' soun edo na ginoume ena, ola ta dino gia sena\",\n", - " 'po po po',\n", - " 'terror serpit inter ordines orcorum',\n", - " 'silva ante eos incepit tremere',\n", - " 'sub terra gelida charcharon procedebat',\n", - " 'contra eos dispelans transitu eius omnia res',\n", - " 'adesti cum omnia sua vi demum apparet...',\n", - " 'nigra maxima species vomens flammas',\n", - " 'coperta aculeorum incepit igni concremare',\n", - " 'configgere et vorare',\n", - " 'exercitus dehiscit',\n", - " 'orkian ruinosum equum conscendit',\n", - " 'educatus nanis in spelunca iam dudum',\n", - " 'figens in eius oculos gladius',\n", - " 'inundans sanguine inter ululatum belvae',\n", - " 'terram infra positam',\n", - " '(charcharon (devastanting rage))',\n", - " 'the wood in front of them starting to shiver',\n", - " 'under the cold ground a charcharon proceeded toward them',\n", - " 'eradicating everything at his passage',\n", - " 'here he comes to reveal himself in all his power',\n", - " 'an enormous black figure, vomiting flames',\n", - " 'covered by auculeses, starting to incinerate, transfix',\n", - " 'tear to pieces',\n", - " 'the army flaked off',\n", - " 'orkian, jumped on the back of the devastating steed',\n", - " 'trained by dwarfs in the caves since hundreds of years',\n", - " 'thrusting, into his eyes, his broadsword',\n", - " 'flooding with blood the ground below between',\n", - " 'the screams of the beast',\n", - " '(exorcízó te, immundíssime spíritus, omnis incúrsio adversárii, omne phantásma, omnis legio:',\n", - " 'in nómine dómini nostri (jesu christi) eradicáre, et effugáre ab hoc plásmate dei',\n", - " 'ipse tibi ímperat, qui te de supérnis coelórum in inferióra terrae demérgi praecépit',\n", - " 'ipse tibi ímperat, qui mari, ventis, et tempestátibus imperávit.)',\n", - " 'accuser, accuser',\n", - " 'exhaustless fountain of poison divine',\n", - " 'i ate of death to cleanse my flesh of god',\n", - " 'to make me thy entrance to the veins of the world',\n", - " 'now as we turn to seek thy face',\n", - " 'pour down on us thy redeeming wrath',\n", - " 'for you will ascend into heaven',\n", - " 'and will exalt thy throne above god',\n", - " 'and you will sit also upon the mount of the congregation',\n", - " 'in the sides of the north',\n", - " 'and you will ascend above the heights of the clouds',\n", - " 'and will be like the most high',\n", - " 'yet where you brought down to the sides of the pit',\n", - " 'which we now must merge with the skies',\n", - " 'opposer, opposer',\n", - " 'core, marrow and essence of my will',\n", - " 'i renounce this flesh in the name of thy praise',\n", - " \"to kindle the coals of salvation's spring\",\n", - " 'i drank of hell to cleanse my soul of god',\n", - " 'to reach the light in which thou dwellest',\n", - " 'adversary, adversary',\n", - " \"glorious slanderer and everything's adversary\",\n", - " 'whose blade alone split the tongues of the world',\n", - " 'yet shall the highest of truths mark thy crown',\n", - " 'now as we turn to seek thy face',\n", - " 'pour down on us thy redeeming wrath',\n", - " 'romanized',\n", - " 'swipge bwatdeon i sesangi nae mamdaero gulleogaji anheul ttae',\n", - " 'honja gamdanghal su eomneun jeolmange jeomjeom muneojigo',\n", - " 'hyeonsiriraneun byeok ape jakku kkeutdo eobsi churakhaneun ge',\n", - " 'oh nan i sesangeul hechyeo nagayahal banghyangeul irheosseo',\n", - " 'daeche wae, wae, wae',\n", - " 'jeulgeoun komidi yeonghwareul bwado useumdaesin wae nunmuri naneunji',\n", - " 'naman wae, wae, wae',\n", - " 'gaseum hankyeon tteugeowojineun chaek hangwoneul bwado oeroume gonggami gaji nan',\n", - " 'mwongae hollindeutae modeun apeumdeuri nae yaegigachi moripdwae',\n", - " 'ireona han beon deo',\n", - " 'right now',\n", - " 'no more pain goodbye, goodbye',\n", - " 'yakhaejin nal beoseo deonjigo',\n", - " 'nareul igyeonaegesseo (bring me back to me)',\n", - " 'no more cry goodbye, goodbye',\n", - " 'i sesangeul ttwieo neomgesseo',\n", - " 'alright',\n", - " 'yeah',\n", - " 'pogiran mareun molla nan gwaenhi jogeuphaejil pillyon eobtjanha',\n", - " 'dwaesseo deo keun kkumeul wihae jigeum nan sumeul goreul ppunya',\n", - " 'neomeojimyeon ireoseogo silpae ttawi jeulgimyeon geumaningeol',\n", - " 'that’s right dasi sesangeun nae pyeoneuro doraseogo isseo',\n", - " 'never back, back, back',\n", - " 'wae manheun saramdeureun gippeumboda',\n", - " 'seulpeumeul deo deo keuge saenggakhaneunji',\n", - " 'run my way, way, way',\n", - " 'wae neomunado yarbeun gwi geokjeongppunya',\n", - " 'namdeul mare hwipsseullyeo georeoganeun gil',\n", - " 'geudeurui mameun gananhae hajiman beoseonal su isseo',\n", - " 'dasi tuktuk teoreonaego ttwieo gal su isseo',\n", - " 'ireona han beon deo',\n", - " 'right now',\n", - " 'no more pain goodbye, goodbye',\n", - " 'yakhaejin nal beoseo deonjigo',\n", - " 'nareul igyeonaegesseo (bring me back to me)',\n", - " 'no more cry goodbye, goodbye',\n", - " 'i sesangeul ttwieo neomgesseo',\n", - " 'alright',\n", - " 'yeah',\n", - " 'keuge sumeul hanbeon deurimasigo nae baeteo',\n", - " 'halsu isseo niga daheul su inneun huimang gyesokhaeseo georeo',\n", - " 'meomchuji ma sesangiran geuneureseon',\n", - " 'nuguboda deo deo deo neon jayurowo',\n", - " 'silpaeran geon nareul deo',\n", - " 'ganghage hago duryeoumeun',\n", - " 'nal deo ttwige haneungeol',\n", - " 'watch me now',\n", - " 'woah',\n", - " 'no more pain goodbye, goodbye',\n", - " 'yakhaejin nal beoseo deonjigo',\n", - " 'nareul igyeonaegesseo (bring me back to me)',\n", - " 'no more cry goodbye, goodbye',\n", - " 'i sesangeul ttwieo neomgesseo',\n", - " 'alright',\n", - " 'yeah',\n", - " 'let me say goodbye, goodbye',\n", - " 'nae gaseume bureul deonjigo',\n", - " 'jinjja naega doegesseo (nan dallajigesseo)',\n", - " 'one more say goodbye, goodbye',\n", - " 'kkeutdo eomneun tteugeoumeuro han beon deo',\n", - " 'alright',\n", - " 'yeah',\n", - " \"dansa in su 'entu 'e tramuntana\",\n", - " 'dansa umpare a mie',\n", - " \"dansa in su mare 'e s'avventura\",\n", - " 'dansa in custa die',\n", - " 'astrolicamus dae supra',\n", - " 'de custa altura',\n", - " 'narami de sa fortuna',\n", - " \"bola in 'entu 'e s'ingiustizia\",\n", - " 'bola umpare a mie',\n", - " \"vola in su mare 'e s'indifferentzia\",\n", - " 'bola in custa die',\n", - " 'astrolicamus chirchend su',\n", - " 'venidore',\n", - " 'namami de custu amore',\n", - " 'nois, sos ammentos',\n", - " 'nois, sos trabentos',\n", - " 'nois, che sirbones isperdidos',\n", - " 'in su ludu, nois',\n", - " \"tue e deo sutt'e una ferula\",\n", - " 'ube naschet sa chintula',\n", - " \"dansa in s'annu duamiza, fiza\",\n", - " 'dansa umpare a chie?',\n", - " \"dansa in su chelu chi t'assimiza\",\n", - " 'fortzis umpare a mie',\n", - " \"bola in su mundu 'e sas tempestas\",\n", - " 'bola in sas enas',\n", - " 'beni chi astrolicamus',\n", - " 'nois, sos ammentos',\n", - " 'nois, sos trabentos',\n", - " 'nois, che sirbones isperdidos',\n", - " 'in su ludu, nois',\n", - " \"tue e deo sutt'e una ferula\",\n", - " 'ube naschet sa chintula',\n", - " '(grazie a ivo per questo testo)',\n", - " 'salve',\n", - " 'salve',\n", - " 'salve',\n", - " 'salve',\n", - " 'salve',\n", - " 'salve',\n", - " 'salve',\n", - " 'o clements, o pia, o dulcis maria',\n", - " 'o clements, o pia, o dulcis maria',\n", - " 'o clements, o pia, o dulcis maria',\n", - " 'o clements, o pia, o dulcis maria',\n", - " 'o clements, o pia, o dulcis maria',\n", - " 'o clements, o pia, o dulcis maria',\n", - " 'salve regina, mater misericordiae',\n", - " 'mater misericordiae, salve regina',\n", - " 'salve regina, mater misericordiae',\n", - " 'salve regina',\n", - " 'salve',\n", - " 'salve',\n", - " 'salve',\n", - " 'salve',\n", - " 'salve',\n", - " 'salve',\n", - " 'salve',\n", - " 'salve regina',\n", - " 'eodum sogeseo deullineun jeolgyu',\n", - " 'gongpoe jillin sesangeul',\n", - " 'dwijibeobeorilgeoya da',\n", - " 'michyeobeorin sesang',\n", - " 'bakkwonoheulgeoya nan',\n", - " 'dongwa hyeopbage nun gamneun jadeul get out',\n", - " 'nyuseureul bwado jeonbu gonggongui jeogigo',\n", - " 'ssaikopaeseudeuri michyeo nalttwineun panigo',\n", - " 'igeon beomjoewaui jeonjaeng',\n", - " 'ttokgachi gapa julge',\n", - " 'ieneun i nuneneun nun i mareul gieokhae',\n", - " 'yongseoran eobseo urin jeoldae',\n", - " 'i gotta feeling',\n", - " 'chameul suga eobseo give it up',\n", - " 'i gotta feeling',\n", - " 'niga nuneul gamneun nal',\n", - " 'neoneun wiheomhae',\n", - " 'jalmot geondeuryeosseo get away',\n", - " 'becuz i’m cuz i’m dangerous',\n", - " 'i’m a badman',\n", - " 'eodum soge neoreul gadwojulge',\n", - " 'ah! ah! ah! ah!',\n", - " 'geobe jillin moseubeul bwa',\n", - " 'i’m a badman',\n", - " 'nideureul da sseureobeorilgeoya',\n", - " 'eotteon byeonmyeong ttawineun naege hajima in the end',\n", - " 'badman ( ya ya) badman ( ya ya)',\n", - " 'yeh guyz gamhi nuga uril mallyeo',\n", - " 'i dosiui gonggineun neomuna sum makhyeo',\n", - " 'cheoeumbuteo jalmotdoen neohui iriwa gangokhae',\n", - " 'deoreoun ssakdeureul da jallabeoril ttaekkaji an meomchwo',\n", - " 'nan dokhae',\n", - " 'ttokgachi nunmul heullyeobwa you got that?',\n", - " 'i gotta feeling',\n", - " 'da bul taewobeoryeo burn it up',\n", - " 'i gotta feeling',\n", - " 'niga ulbujitneun nal',\n", - " 'neoneun wiheomhae',\n", - " 'gal ttaekkaji gasseo get away',\n", - " 'becuz i’m cuz i’m dangerous',\n", - " 'i’m a badman',\n", - " 'eodum soge neoreul gadwojulge',\n", - " 'ah! ah! ah! ah!',\n", - " 'geobe jillin moseubeul bwa',\n", - " 'i’m a badman',\n", - " 'nideureul da sseureobeorilgeoya',\n", - " 'eotteon byeonmyeong ttawineun naege hajima in the end',\n", - " 'badman ( ya ya) badman ( ya ya)',\n", - " 'wae jakku geondeuryeo',\n", - " 'ja iri eopdeuryeo',\n", - " 'da mame an deureo',\n", - " 'neol bomyeon lose control',\n", - " 'badman',\n", - " 'wae jakku geondeuryeo',\n", - " 'ja iri eopdeuryeo',\n", - " 'da mame an deureo',\n", - " 'neol bomyeon lose control',\n", - " 'badman',\n", - " 'uril mannamyeon jebal jeori domang gajwo',\n", - " 'jeoldaero urin nideureul gamanhi mot nwadwo',\n", - " 'i’m a badman',\n", - " 'eodum soge neoreul gadwojulge',\n", - " 'ah! ah! ah! ah!',\n", - " 'geobe jillin moseubeul bwa',\n", - " 'i’m a badman',\n", - " 'nideureul da sseureobeorilgeoya',\n", - " 'eotteon byeonmyeong ttawineun naege hajima in the end',\n", - " '넌 나의 paradise',\n", - " '넌 나의 paradise paradise',\n", - " '넌 나의 paradise',\n", - " '넌 나의 paradise paradise',\n", - " '눈 앞에 펼쳐진 ocean view',\n", - " '거기에 어울리는 fashion look',\n", - " '너가 날 쳐다볼 때는 feel so good',\n", - " 'bye라는 말은 하지마',\n", - " '널 보내 긴 싫어 시간이 아까워',\n", - " '네 마음도 데칼코마니처럼',\n", - " '나와 같은 마음이라는걸 알고 있어',\n", - " 'so dangerous 다 보여 내 맘은 씨스루',\n", - " 'so beautiful 내 시선을 훔쳐가는 너',\n", - " 'so dangerous you’re driving me crazy baby',\n", - " '작은 손짓 하나에도 i’m done',\n", - " '(넌 나의 paradise) you’re beautiful girl',\n", - " '너는 보고 있는데 계속 보고 싶은',\n", - " 'you’re my only girl',\n", - " '(넌 나의 paradise) you’re beautiful girl',\n", - " '너를 생각하면 내입은 올라가',\n", - " '넌 나의 paradise 천국 같지',\n", - " '빛나는 피부와 sexy 한 your lips',\n", - " 'ice cream 같은 향기 너라면 다 줄게',\n", - " '내 손을 잡아 걸어볼까 꽃길',\n", - " '나는 여기서 널 계속 기다렸어 나',\n", - " '너 말고 안돼 나는 너고 너는 나 yeah',\n", - " 'so baby welcome to my zone',\n", - " '우리 둘 만에 공간에',\n", - " '같이 시간을 보내 영원히 forever',\n", - " 'so dangerous 다 보여 내 맘은 씨스루',\n", - " 'so beautiful 내 시선을 훔쳐가는 너',\n", - " 'so dangerous you’re driving me crazy baby',\n", - " '작은 손짓 하나에도 i’m done',\n", - " '(넌 나의 paradise) you’re beautiful girl',\n", - " '너는 보고 있는데 계속 보고 싶은',\n", - " 'you’re my only girl',\n", - " '(넌 나의 paradise) you’re beautiful girl',\n", - " '너를 생각하면 내입은 올라가',\n", - " '하늘 높이 올라가 구름 위에 떠있는',\n", - " '저 달이 되어줘 날 밝혀줘',\n", - " '이제는 상상하지마 너가 생각하는',\n", - " '것들 내가 풀어줄게',\n", - " 'i don’t know what you’re thinking right now',\n", - " 'it’s about that time we both go out',\n", - " 'and do something about it you know',\n", - " '넌 나의 paradise (paradise)',\n", - " '넌 나의 paradise paradise (you’re my paradise)',\n", - " '넌 나의 paradise',\n", - " '넌 나의 paradise paradise (paradise)',\n", - " '넌 나의 paradise (paradise)',\n", - " '넌 나의 paradise paradise (you’re my paradise)',\n", - " '넌 나의 paradise',\n", - " '넌 나의 paradise paradise',\n", - " 'you’re my paradise',\n", - " 'neon naui paradise',\n", - " 'neon naui paradise paradise',\n", - " 'neon naui paradise',\n", - " 'neon naui paradise paradise',\n", - " 'nun ape pyeolchyeojin ocean view',\n", - " 'geogie eoullineun fashion look',\n", - " 'neoga nal chyeodabol ttaeneun feel so good',\n", - " 'byeraneun mareun hajima',\n", - " 'neol bonae gin sireo sigani akkawo',\n", - " ...]},\n", - " 'data': ['my country is a state of mind',\n", - " 'my country is a state of mind',\n", - " 'my country is a state of mind',\n", - " 'my country is a state of mind',\n", - " 'country is a state of mind',\n", - " 'country is a state of mind',\n", - " 'country is a state of mind',\n", - " 'cunt is a state of mind',\n", - " 'cunt is a state of mind',\n", - " 't is a state of mind',\n", - " 't is a state of mind',\n", - " 'state of mind',\n", - " 'state of mind',\n", - " 'ate of mind',\n", - " 'ate of mind',\n", - " 'aeormine',\n", - " 'aeromine',\n", - " 'aeorium',\n", - " 'aeorium',\n", - " 'aeom',\n", - " 'aeom',\n", - " 'om',\n", - " 'om',\n", - " 'om',\n", - " 'om',\n", - " 'om',\n", - " 'om',\n", - " 'i am bound to past',\n", - " 'and stagnant presence',\n", - " 'sallow faces, seducers',\n", - " 'seize my threads of mind',\n", - " 'to suscipe pre animabus illis',\n", - " 'quarum hodie memoriam facimus',\n", - " 'yo, just thought i’d let you know',\n", - " 'no matter what day of the week it is',\n", - " 'you’re the only girl on my mind c’mon!',\n", - " 'nae nunul bol ddae ddokgati malhal ddae',\n", - " 'neol jeongmal anajugo sipeosseo',\n", - " 'na imanhamyun eoddae? ni namjaron eoddae?',\n", - " 'ddan aedeulboda',\n", - " 'neoreul akkyeojul geoya neowa hamkkehal geoya',\n", - " 'eonjena neohanaman bollae',\n", - " 'sunday, monday to sunday!',\n", - " 'bogo ddo bogo sipeo',\n", - " 'monday, sunday to monday!',\n", - " 'jakku ddo bogo sipeo',\n", - " 'maeil achimeul nan neowa nunddeugo sipeo',\n", - " 'niga isseo gomawo monday to sunday',\n", - " 'now i think it’s time girl oh!',\n", - " 'weol, hwa, su, mok, geum, to',\n", - " 'nun ddeumyeon ni saenggakbuteo',\n", - " 'ilyoil achimeneun neowa hamkke nunddeo',\n", - " 'uri dureul seokkneundamyeon hwansangui collabo',\n", - " 'neol wihae bureul bravo',\n", - " 'an chakhaedo dwae dodohamyeon eoddae',\n", - " 'naegen an geurae',\n", - " 'geuraeseo ggok yaksokhae neohanaman jikillae',\n", - " 'eonjena neohanaman bollae',\n", - " 'sunday, monday to sunday!',\n", - " 'bogo ddo bogo sipeo',\n", - " 'monday, sunday to monday! jakku ddo bogo sipeo',\n", - " 'maeil ahchimeul nan neowa nunddeugo sipeo',\n", - " 'niga isseo gomawo',\n", - " 'malhaettjanha geugeot bwa ni gyeote itjanha',\n", - " 'nae mameul aljanha',\n", - " 'neoege eoullineun saram geurae na yeogi itjanha',\n", - " 'ije nan modu ni ggeoya eonjena neohanaman bollae',\n", - " 'sunday, monday to sunday!',\n", - " 'bogo ddo bogo sipeo',\n", - " 'monday, sunday to monday!',\n", - " 'jakku ddo bogo sipeo',\n", - " 'maeil achimeul nan neowa nunddeugo sipeo',\n", - " '(nunddeugo sipeo)',\n", - " 'niga isseo gomawo monday to sunday',\n", - " 'sunday, monday to sunday!',\n", - " '(every single day you make my heart sway)',\n", - " 'monday, sunday to monday!',\n", - " '(every day i honjaran geon byeollonikkan)',\n", - " 'maeil achimeul nan neowa nunddeugo',\n", - " '(nunddeugo sipeo)',\n", - " 'sipeo',\n", - " 'niga isseo gomawo',\n", - " 'nawahamkke isseojwo monday to sunday',\n", - " 'hangul',\n", - " 'universe universe universe',\n", - " '집에 가는 길에 지하철에 앉아',\n", - " 'oh 니 목소리가',\n", - " '듣고 싶어 전화했는데',\n", - " '어디 갔니 그새 현기증이 나네',\n", - " 'oh 나는 니가 없인 잠시도 안돼',\n", - " '너의 목소리는 음악이 되고',\n", - " '나를 춤추게 해 넌 날 미치게 해',\n", - " '너의 숨소리는 나를 살게 해',\n", - " 'why is it beautiful',\n", - " 'why is it beautiful',\n", - " 'you are my universe',\n", - " '너만 들리네 보이네 너무 광대해',\n", - " 'you are my universe',\n", - " '너만을 상상해 너만을 그리네',\n", - " 'let me know how you’re doin’ now',\n", - " '니가 어디서 뭘 하는지 다 알고 싶어',\n", - " '나 이제 solo 아냐 너 이제 홀로',\n", - " '아냐 나만의 girl로 only ya',\n", - " 'we just keep on rolling',\n", - " '환상적인 moly hold up',\n", - " '여긴 어디야 universe',\n", - " '너와 내가 타고 있는 거야 우주선',\n", - " '더 이상 뭘 더 바래 너와 있음',\n", - " 'it’s done',\n", - " '아무도 우릴 막지 못해',\n", - " 'keep it going on',\n", - " '너의 목소리는 음악이 되고',\n", - " '나를 춤추게 해 넌 날 미치게 해',\n", - " '너의 숨소리는 나를 살게 해',\n", - " 'why is it beautiful',\n", - " 'why is it beautiful',\n", - " 'you are my universe',\n", - " '너만 들리네 보이네 너무 광대해',\n", - " 'you are my universe',\n", - " '너만을 상상해 너만을 그리네',\n", - " '난 안되겠어 without you',\n", - " '별처럼 쏟아져 너의 눈빛',\n", - " 'you and i universe',\n", - " '쏟아지는 별들의 universe',\n", - " '너만 있다면 함께라면',\n", - " '난 타오를 텐데',\n", - " 'you are my universe',\n", - " '너만 들리네 보이네 너무 광대해',\n", - " 'you are my universe',\n", - " '너만을 상상해 너만을 그리네',\n", - " 'you and i universe',\n", - " '쏟아지는 별들의 universe',\n", - " '너와 함께라면 어딜 가든 paradise',\n", - " 'we just keep on rolling',\n", - " 'everyday every night',\n", - " 'you and i universe',\n", - " '쏟아지는 별들의 universe',\n", - " '이것은 오직 너만을 위한 나의 verse',\n", - " '이곳은 마치 유토피아 너의 universe',\n", - " 'romanization',\n", - " 'universe universe universe',\n", - " 'jibe ganeun gire jihacheore anja',\n", - " 'oh ni moksoriga',\n", - " 'deutgo sipeo jeonhwahaessneunde',\n", - " 'eodi gassni geusae hyeongijeungi nane',\n", - " 'oh naneun niga eopsin jamsido andwae',\n", - " 'neoui moksorineun eumagi doego',\n", - " 'nareul chumchuge hae neon nal michige hae',\n", - " 'neoui sumsorineun nareul salge hae',\n", - " 'why is it beautiful',\n", - " 'why is it beautiful',\n", - " 'you are my universe',\n", - " 'neoman deulline boine neomu gwangdaehae',\n", - " 'you are my universe',\n", - " 'neomaneul sangsanghae neomaneul geurine',\n", - " 'let me know how you’re doin’ now',\n", - " 'niga eodiseo mwol haneunji da algo sipeo',\n", - " 'na ije solo anya neo ije hollo',\n", - " 'anya namanui girlro only ya',\n", - " 'we just keep on rolling',\n", - " 'hwansangjeogin moly hold up',\n", - " 'yeogin eodiya universe',\n", - " 'neowa naega tago issneun geoya ujuseon',\n", - " 'deo isang mwol deo barae neowa isseum',\n", - " 'it’s done',\n", - " 'amudo uril makji moshae',\n", - " 'keep it going on',\n", - " 'neoui moksorineun eumagi doego',\n", - " 'nareul chumchuge hae neon nal michige hae',\n", - " 'neoui sumsorineun nareul salge hae',\n", - " 'why is it beautiful',\n", - " 'why is it beautiful',\n", - " 'you are my universe',\n", - " 'neoman deulline boine neomu gwangdaehae',\n", - " 'you are my universe',\n", - " 'neomaneul sangsanghae neomaneul geurine',\n", - " 'nan andoegesseo without you',\n", - " 'byeolcheoreom ssodajyeo neoui nunbit',\n", - " 'you and i universe',\n", - " 'ssodajineun byeoldeurui universe',\n", - " 'neoman issdamyeon hamkkeramyeon',\n", - " 'nan taoreul tende',\n", - " 'you are my universe',\n", - " 'neoman deulline boine neomu gwangdaehae',\n", - " 'you are my universe',\n", - " 'neomaneul sangsanghae neomaneul geurine',\n", - " 'you and i universe',\n", - " 'ssodajineun byeoldeurui universe',\n", - " 'neowa hamkkeramyeon eodil gadeun paradise',\n", - " 'we just keep on rolling',\n", - " 'everyday every night',\n", - " 'you and i universe',\n", - " 'ssodajineun byeoldeurui universe',\n", - " 'igeoseun ojik neomaneul wihan naui verse',\n", - " 'igoseun machi yutopia neoui universe',\n", - " 'na more na okeyane',\n", - " 'na ostrove buyane',\n", - " 'stoit altyrj kamenj',\n", - " 'sidit na nyom parenj',\n", - " 'sidit ne skuchaet',\n", - " 'pechali ne znaet',\n", - " 'ochey ne smykaet',\n", - " 'sidit nablyudaet',\n", - " 'is pasti is klykastoy',\n", - " 'ogonj ispuskaet',\n", - " 'besovskiye rati',\n", - " 'ognyom pozhigaet',\n", - " 'mir i poryadok',\n", - " 'khranit sberegaet',\n", - " 'vsyak yego znaet',\n", - " 'vsyak voskhvalyaet',\n", - " 'i sing for lennon',\n", - " 'i sing for j.j. cale',\n", - " 'i sing for elvis',\n", - " 'i sing for you',\n", - " 'i sing for elton john',\n", - " 'i song for bowie',\n", - " 'i sing for the beatles',\n", - " 'i sing for me',\n", - " 'i sing for daltrey',\n", - " 'i sing for the who',\n", - " 'i sing for hendrix',\n", - " 'i sing for you',\n", - " 'i sing for dylan',\n", - " 'i sing for donovan',\n", - " 'i sing for clapton',\n", - " 'i sing for you',\n", - " 'i sing for neil young',\n", - " 'i sing for nash',\n", - " 'i sing for crosby',\n", - " 'i sing for me',\n", - " 'oh...',\n", - " \"et tant pis si j'en oublie\",\n", - " \"et tant pis si j'en oublie\",\n", - " \"et tant pis si j'en oublie\",\n", - " 'tant pis',\n", - " 'tant pis...',\n", - " 'those innocent, fun games of the hallucination generation',\n", - " 'bizarre!',\n", - " 'those innocent, fun games of the hallucination generation',\n", - " 'bizarre!',\n", - " 'psychedelic circus',\n", - " 'psychedelic circus',\n", - " 'bizarre!',\n", - " 'are you ready?',\n", - " 'you you you you-kiss',\n", - " 'brave sound brave sound',\n", - " 'binggeul binggeul binggeul binggeul binggeul binggeul binggeul binggeul',\n", - " 'binggeul binggeul binggeul binggeul binggeul binggeul binggeul binggeul',\n", - " 'hwatgime baeteun mari yeoreon kkori dwaesseo',\n", - " 'ijewa huhwahaedo michin sorin girl',\n", - " 'neowana ireon nari ol jureun mollasseo',\n", - " 'i wanna see you girl dorawa jebal',\n", - " 'nareul tteonagaseo neoman jal sara',\n", - " 'mwot gateun sanghwangiya nan jeongmal jichyeosseo',\n", - " 'jeonhwa han tong jocha haji annneun neo',\n", - " 'neon mot dwaesseo',\n", - " 'nae meori binggeul binggeul',\n", - " 'nal tteonagaji malla haetjanha',\n", - " 'jeongmallo niga piryohadan marya',\n", - " 'i just want you baby here right now now now',\n", - " 'saranghago ittan marya',\n", - " 'binggeul binggeul binggeul binggeul (ni juwireul) binggeul binggeul binggeul binggeul',\n", - " 'binggeul binggeul binggeul binggeul (oneuldo) binggeul binggeul binggeul binggeul',\n", - " 'nan ni juwireul maemdora binggeul binggeul',\n", - " 'neomani nal manjokshikyeo you make me tingle tingle',\n", - " 'neon nae salme bingo keojyeobeoryeotteon nae eager',\n", - " 'ttaemune nan neoreul ireo neon mirror soge girl',\n", - " 'jjaekkak jjaekkak jjaekkak jjaekkak shiganeun heulleogago',\n", - " 'oh dodaeche al su eobseo neoye maeumeul',\n", - " 'saenkkeut saenkkeut saenkkeut saenkkeut miso jitteon neo',\n", - " 'eodiro ganni na mot chaketta girl',\n", - " 'nareul tteonagaseo neoman jal sara',\n", - " 'mwot gateun sanghwangiya nan jeongmal jichyeosseo',\n", - " 'jeonhwa han tong jocha haji annneun neo',\n", - " 'neon mot dwaet eo',\n", - " 'eojet bam mwohaesseo oh oh',\n", - " 'nal tteonagaji malla haetjanha',\n", - " 'jeongmallo niga piryohadan marya',\n", - " 'i just want you baby here right now now now',\n", - " 'saranghago ittan marya',\n", - " 'binggeul binggeul binggeul binggeul (ni juwireul) binggeul binggeul binggeul binggeul',\n", - " 'binggeul binggeul binggeul binggeul (oneuldo) binggeul binggeul binggeul binggeul',\n", - " 'i just want you neol ajikto saranghajana',\n", - " 'naegen neo ppunirangeo jal algo itjana',\n", - " 'jiul su eoptan geol you are the only one',\n", - " 'jebal nareul tteonajima',\n", - " 'binggeul binggeul binggeul binggeul',\n", - " '(kevin: binggeulbinggeul)',\n", - " 'binggeul binggeul binggeul binggeul',\n", - " 'binggeul binggeul binggeul binggeul',\n", - " '(binggeulbinggeul)',\n", - " 'binggeul binggeul binggeul binggeul',\n", - " 'ni juwireul nan oneuldo',\n", - " 'galoba angelozebis, galoba',\n", - " 'velebi da bibini',\n", - " 'vaios veli, vaios suli',\n", - " 'da galoba, suli',\n", - " 'dideba upalsa, ugalobet mariams, mariam',\n", - " 'didebuli suli, alaverdi, sioni, ateni',\n", - " 'betania, gremi',\n", - " 'kari cris, sada har mimaluli, lelianshi',\n", - " 'dakarguli',\n", - " 'galobid davlie suli',\n", - " 'deda, mama, tsoli, shvili, shvilishvili',\n", - " 'kera budea, dideda',\n", - " 'tu danama',\n", - " 'oboli doli, oboli suli',\n", - " 'bindia, tendeba, gatenda, sinatle, sioni',\n", - " 'tu aisi',\n", - " 'galoba upalsa, alleluia',\n", - " 'tu daria',\n", - " 'schnittke, alfred schnittke',\n", - " 'dio odio lileo-lile',\n", - " 'sheminde upalo',\n", - " 'shemindet givi, tito, ira, rezo',\n", - " 'gogi, vazha, sulkhani, muriko',\n", - " 'dareka zarma, temiko, temo, sheminde',\n", - " 'temo',\n", - " 'givi, tito, ira, rezo, temo',\n", - " 'tu daria tu tu tu',\n", - " 'odio odoia naduri nana odoia naduri',\n", - " 'odio odoia!',\n", - " 'odio naduri zari nana',\n", - " 'chu chu...',\n", - " 'daria tu avdaria',\n", - " 'kriala tsa, shoria gza, bibini, shori',\n", - " 'karia, bibini, suli, bibini, veli',\n", - " 'eria, eri',\n", - " 'suli nateli, avet, alfred',\n", - " 'dideba upalsa, ugalobet mariams',\n", - " 'uplis gamchens',\n", - " 'dauntet santeli suli nateli',\n", - " 'amen, alleluia',\n", - " 'time! merciless time!',\n", - " 'time! merciful time!',\n", - " 'gone with the time!',\n", - " 'time, merciful time!',\n", - " 'time! merciless time!',\n", - " 'gone with the time!',\n", - " 'time that tries all',\n", - " 'despair and hope',\n", - " 'time of joy, time of terror',\n", - " 'of good and evil!',\n", - " 'gone with the time',\n", - " 'merciless time',\n", - " 'time of terror, joy',\n", - " 'terror and joy!',\n", - " 'devouring time!',\n", - " 'with terror and joy!',\n", - " 'with terror and joyful',\n", - " 'joy',\n", - " 'brr brr!',\n", - " 'brr brr!',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'get-get-get-get low when the whistle go',\n", - " '(woo!)',\n", - " 'brr brr! (woo!)',\n", - " '(woo!)',\n", - " 'get-get-get low when the whistle go',\n", - " '(woo!)',\n", - " 'brr brr! (woo!)',\n", - " '(woo!)',\n", - " 'get-get-get low when the whistle go',\n", - " '(woo!)',\n", - " 'get-get-get get low (woo!)',\n", - " '(woo!)',\n", - " 'barbès, yalla habibi',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'get-get-get-get low when the whistle go',\n", - " '(woo!)',\n", - " 'brr brr! (woo!)',\n", - " '(woo!)',\n", - " 'get-get-get low when the whistle go',\n", - " '(woo!)',\n", - " 'brr brr! (woo!)',\n", - " '(woo!)',\n", - " 'get-get-get get low',\n", - " 'low low low low',\n", - " 'low low low low... (woo!)',\n", - " 'get-get-get get low',\n", - " 'low low low low',\n", - " 'low low low low… (woo!)',\n", - " 'barbès, yalla habibi',\n", - " '(yalla habibi, yalla habibi',\n", - " 'yalla habibi, yalla habibi',\n", - " 'yalla habibi, yalla habibi)',\n", - " 'calcinated scrotal sacs',\n", - " 'boiling syphilitic chancres',\n", - " 'pustulated porstate burns',\n", - " 'pelvic region sets on fire',\n", - " 'scalding penis warfs...',\n", - " 'venereal blisters...',\n", - " 'incinerated testicles',\n", - " 'scorched priapism',\n", - " 'sadistic pyromaniac emasculation',\n", - " 'penile papules cremation',\n", - " 'frenzied genital carbonization',\n", - " 'incendiary consequence of the furuncular ignition',\n", - " 'pyosperm combustion fueled by smegmatic fermentation',\n", - " 'bbaet gyeo beo rin shi seon eo geut nan mal tu eo ggae neo meo na reul ba ra bo neun neo',\n", - " 'eo ddeon mal lo da shi dol lil su ga eob seo o neul nae ja ri neun i mi jeong hae jyeo beo rin geo ya',\n", - " '(you lose) ni ga ggum ggun ni ga weon han gyeol lon i eott ni',\n", - " 'neo eui sang sang neo eui mang sang chak gak so ge seon',\n", - " 'nae ga cha jeum better place na man a neun new way',\n", - " 'neo eui mam i meom chweo sseo nae gyeo teu ro jom deo dang gyeo o neun geu sun gan',\n", - " \"mo deun geo shi byeon hae sseo geu ddae ga myeon gyeol guk it's over\",\n", - " 'ddeo na ya man hae shi gye so geui music',\n", - " '\"neo eui gyeo teul deo chae weo jul su eob seo\"',\n", - " 'naeng jeong han dae dap han ma di ro do',\n", - " 'neo eui du nun eun i mi nal chat go i sseo',\n", - " '(think it) neo reul wi han neo reul hyang han mi so bbun i ji',\n", - " \"ha ji man i'm not that! nat seol gett ji man\",\n", - " 'na reul ba ggun your reason ne ge nam gin my shoe',\n", - " 'yeol du shi ga ji na myeon neo e ge man jom deo gi eok dwe neun geu sun gan',\n", - " \"mo deun geo shi sa ra jyeo geu ddae ra myeon gyeol guk it's over\",\n", - " 'no chil su eob seo it ji mot ha neun han sa ram eul dda ra seo ga',\n", - " 'neo man eul wi han geo ya in one way, in one way',\n", - " 'nae ga cha jeum better place na man a neun new way',\n", - " 'neo eui mam i meom chweo sseo nae gyeo teu ro jom deo dang gyeo o neun geu sun gan',\n", - " 'mo deun geo shi byeon hae sseo geu ddae ga myeon gyeol guk',\n", - " 'na reul ba ggun your reason ne ge nam gin my shoe',\n", - " 'yeol du shi ga ji na myeon neo e ge man jom deo gi eok dwe neun geu sun gan',\n", - " \"mo deun geo shi sa ra jyeo geu ddae ra myeon gyeol guk it's over\",\n", - " 'on an island i long to be',\n", - " 'gazing out upon the shining surface of the sea',\n", - " 'i hear the sound of the ocean wave on wave',\n", - " 'crying, \"you who have turned away from home\"',\n", - " 'ascnam tar tuinn topur ndílenn dochum néirenn to sail across the wild sea back to ireland',\n", - " 'deus caeli ac terrae god of heaven and earth',\n", - " 'maris et fluminum the sea and the rivers',\n", - " 'deus solis ac lunae god of the sun and the moon',\n", - " 'on an island i long to live',\n", - " 'seabirds lament the coming of the winter wind',\n", - " 'i hear the endless sound of sea on shore',\n", - " 'crying, \"you who have turned away from home\"',\n", - " 'deus super caelo et in caelo et sub caelo god above heaven and in heaven and under heaven',\n", - " 'habet habitaculum erga caelum he dwells in heaven',\n", - " 'et terram et mare and earth and sea',\n", - " 'et omnia quae sunt in eis and all that is in them',\n", - " 'non separantur pater not separate are the father',\n", - " 'et filius et spiritus sanctus the son and the holy spirit',\n", - " 'on an island i long to be',\n", - " 'evening brings a whisper of the summer breeze',\n", - " 'i hear the song of the ocean wave on wave',\n", - " 'crying, \"you who have turned away from home\"',\n", - " 'ascnam tar tuinn topur ndílenn dochum néirenn to sail across the wild sea back to ireland',\n", - " 'inspirat omnia he inspires all things',\n", - " 'vivificat omnia he makes all things grow',\n", - " 'superat omnia he is above all things',\n", - " 'suffulcit omnia he supports all things',\n", - " '(4x)',\n", - " 'gratias agimus',\n", - " '(gratias agimus)',\n", - " 'agimus tibi',\n", - " 'propter magnam gloriam',\n", - " 'propter gloriam tuam',\n", - " '(propter gloriam tuam.)',\n", - " 'domine deus',\n", - " 'deus rex coelestis',\n", - " 'o domine deus',\n", - " 'pater omnipotens',\n", - " \"don't go away\",\n", - " \"don't go away\",\n", - " \"forever and ever we'll go on\",\n", - " \"don't go away\",\n", - " \"don't go away\",\n", - " \"there's no other place where you belong\",\n", - " \"don't go away, go away, go away, go away,...\",\n", - " 'o domine deus',\n", - " '(o domine deus)',\n", - " 'pater omnipotens',\n", - " 'o domine deus',\n", - " 'pater omnipotens',\n", - " \"don't go away\",\n", - " \"don't go away\",\n", - " \"forever and ever we'll go on\",\n", - " \"don't go away\",\n", - " \"don't go away\",\n", - " \"there's no other place where you belong\",\n", - " \"don't go away\",\n", - " '(o domine deus)',\n", - " \"don't go away\",\n", - " \"i've given to you real all my love (pater omnipotens)\",\n", - " \"don't go away\",\n", - " '(o domine deus)',\n", - " \"don't go away\",\n", - " \"forever and ever we'll go on. (pater omnipotens)\",\n", - " 'o domine deus',\n", - " '(o domine deus)',\n", - " 'pater omnipotens',\n", - " \"don't go away\",\n", - " \"don't go away\",\n", - " \"forever and ever we'll go on\",\n", - " \"don't go away\",\n", - " '(o domine deus)',\n", - " \"don't go away\",\n", - " \"there's no other place where you belong. (pater omnipotens)\",\n", - " \"don't go away\",\n", - " '(o domine deus)',\n", - " \"don't go away\",\n", - " \"forever and ever we'll go on. (pater omnipotens)\",\n", - " \"don't go away\",\n", - " '(o domine deus)',\n", - " \"don't go away\",\n", - " 'na na nana naaaa na nanaaaa (pater omnipotens)',\n", - " \"don't go away\",\n", - " '(o domine deus)',\n", - " \"don't go away\",\n", - " \"forever and ever we'll go on\",\n", - " '(pater omnipotens)',\n", - " \"warrior's back\",\n", - " \"we're gonna rock this\",\n", - " 'aha hu',\n", - " '(ooh~ oh no no~ oh~)',\n", - " 'b.a.p',\n", - " 'arrrr',\n", - " 'hu',\n", - " \"what's your b? (b)\",\n", - " 'matseo ssaulkke i',\n", - " 'georie yeonghondeureul wihae woah',\n", - " \"what's your a? (a)\",\n", - " 'saeroun hyeongmyeongui sijakjeom',\n", - " 'magaboltemyeon magabwa nal',\n", - " \"what's your p? (p)\",\n", - " 'akhan dna, baireoseu',\n", - " 'urin jeonsadeureul da irheosseo (huh!)',\n", - " \"once again, what's the name of the game?\",\n", - " 'b.a.p da ireoseo',\n", - " 'saki no mienai tatakai no hibi',\n", - " \"(bang bang) you'd betta watch your back\",\n", - " 'yudan hitotsu sureba mou naraku',\n", - " 'uso ga riaru wo nomikomu mae ni',\n", - " '(bomb bomb) cut it off kore ige',\n", - " \"can't take so get it on\",\n", - " 'warrior (uh)',\n", - " 'uchikomu mune no naka (uh uh)',\n", - " 'risei no oku made mo (uh)',\n", - " 'digidigidon digidigidon',\n", - " 'warrior (uh)',\n", - " 'hi wo tomose kokoro ni (uh uh)',\n", - " 'ageru tamashii no shout (uh)',\n", - " 'digidigidon digidigidon',\n", - " 'sora no mas***a',\n", - " 'get down, get down',\n", - " 'ge-get get ge-get down (uh)',\n", - " 'get down, get down',\n", - " '(bow wow wow wow wow) (rawr)',\n", - " 'get down, get down',\n", - " 'ge-get get ge-get down (yeah) (uh)',\n", - " 'get down, get down',\n", - " '(bow wow wow wow wow)',\n", - " 'yeah',\n", - " 'ginagin ssaume mogi mareun',\n", - " 'geu daedeureul wihae nallineun punch',\n", - " 'seoroga dareugo pyeoneul gareugo',\n", - " 'geu mari got mujihan saramdeul marigo',\n", - " 'simjange ullineun nae mari nimalgwa dareuni',\n", - " 'hwaganani deureo samadi jansori',\n", - " '(rest in peace)',\n", - " 'jinsildeureul wihan i gido',\n", - " 'garyeojin siseutem geomeun geurimjaga wiro',\n", - " 'deopyeodo gulhaji annneun sinseonghan baetji',\n", - " \"what's the name of the game?\",\n", - " 'b.a.p',\n", - " 'zetsubou ga michi wo habanda yoru wa',\n", - " '(bang bang) warau akuma ga sagasu hikari',\n", - " 'through the night',\n", - " 'yami ga subete wo nomikonde yuku',\n", - " '(bomb bomb) kuzureochitara owari ga',\n", - " 'omoku no shikakaru',\n", - " 'warrior (uh)',\n", - " 'uchikomu mune no naka (uh uh)',\n", - " 'risei no oku made mo (uh)',\n", - " 'digidigidon digidigidon',\n", - " 'warrior (uh)',\n", - " 'hi wo tomose kokoro ni (uh uh)',\n", - " 'ageru tamashii no shout (uh)',\n", - " 'digidigidon digidigidon',\n", - " 'sora no mas***a',\n", - " 'get down, get down',\n", - " 'ge-get get ge-get down (uh)',\n", - " 'get down, get down',\n", - " '(bow wow wow wow wow) (rawr)',\n", - " 'zankoku sugiru genjitsu no mae demo no...',\n", - " 'senshi tachi wa tomaru koto wa nai no, no, no, no...',\n", - " 'warrior (uh)',\n", - " 'uchikomu mune no naka (uh uh)',\n", - " 'risei no oku made mo (uh)',\n", - " 'digidigidon digidigidon',\n", - " 'warrior (uh)',\n", - " 'hi wo tomose kokoro ni (uh uh)',\n", - " 'ageru tamashii no shout (uh)',\n", - " 'digidigidon digidigidon',\n", - " 'sora no mas***a',\n", - " 'get down, get down',\n", - " 'ge-get get ge-get down (uh)',\n", - " 'get down, get down',\n", - " '(bow wow wow wow wow)',\n", - " '__________________',\n", - " 'warrior is back',\n", - " 'we gonna rock this',\n", - " 'oh~no~woah woah~',\n", - " 'b.a.p',\n", - " \"what's your b?\",\n", - " 'matseo ssaulkke i georie yeonghondeureul wihae whoa',\n", - " \"what's your a?\",\n", - " 'saeroun hyeongmyeongui sijakjeom',\n", - " 'magaboltemyeon magabwa nal',\n", - " \"what's your p?\",\n", - " 'akhan dna, baireoseu',\n", - " 'urin jeonsadeureul da irheosseo',\n", - " \"once again, what's the name of the game? b.a.p\",\n", - " 'da ireoseo',\n", - " 'kkeuteomneun jeonjaengeun nugul wihaeinna',\n", - " 'bang bang bigeophage da geudae dwieseo meoril gyeonunda',\n", - " 'geudaedeurui wiseoneun yongseobadeul su inna',\n", - " 'bomb bomb eoduun gamyeon sogeul da deonjyeo',\n", - " 'get it on',\n", - " 'warrior',\n", - " 'taeyangarae neoreul matgyeobwa',\n", - " 'nae gaseume bureul jipyeobwa',\n", - " 'digidigideom digidigideom',\n", - " 'warrior',\n", - " 'chongalboda jomdeo ppareuge',\n", - " 'nigaseume pago deureoga',\n", - " 'digidigideom digidigideom',\n", - " 'mogeul joyeoganda',\n", - " 'get down get down',\n", - " 'getgetgetget get down',\n", - " 'get down get down',\n", - " '(wa da wa da wa)',\n", - " 'get down get down',\n", - " 'getgetgetget get down',\n", - " 'get down get down',\n", - " '(wa da wa da wa)',\n", - " 'yeah',\n", - " 'ginagin ssaume mogi mareun',\n", - " 'geu daedeureul wihae nallineun punch',\n", - " 'seoroga dareugo pyeoneul gareugo',\n", - " 'geu mari got mujihan saramdeul marigo',\n", - " 'simjange ullineun nae mari nimalgwa dareuni',\n", - " 'hwaganani deureo samadi jansori',\n", - " '( rest in peace) jinsildeureul wihan i gido',\n", - " 'garyeojin siseutem geomeun geurimjaga wiro',\n", - " 'deopyeodo gulhaji annneun sinseonghan baetji',\n", - " \"what's the name of the game? b.a.p\",\n", - " 'jeolmangui neupeseo sara bonjeok inna',\n", - " 'bang bang angmongdeuri nal goerophyeo gil irheun nachimban',\n", - " 'angma gateun ipsullo neon swipge malhal tenga',\n", - " 'bomb bomb hana dulssik jugeoga jiok gateun mare sumi meojeoga',\n", - " 'warrior',\n", - " 'taeyangarae neoreul matgyeobwa',\n", - " 'nae gaseume bureul jipyeobwa',\n", - " 'digidigideom digidigideom',\n", - " 'warrior',\n", - " 'chongalboda jomdeo ppareuge',\n", - " 'ni gaseume pago deureoga',\n", - " 'digidigideom digidigideom',\n", - " 'mogeul joyeoganda',\n", - " 'get down get down',\n", - " 'get get get get get down',\n", - " 'get down get down',\n", - " '(wa da wa da wa)',\n", - " 'haneurarae geudaen garyeojiji annneunda',\n", - " 'sumeobwado jinsil ape mureup kkurnneunda',\n", - " 'neoneoneoneoneoneo neoneo neon~',\n", - " 'warrior',\n", - " 'taeyangarae neoreul matgyeobwa',\n", - " 'nae gaseume bureul jipyeobwa',\n", - " 'digidigideom digidigideom',\n", - " 'warrior',\n", - " 'chongalboda jomdeo ppareuge',\n", - " 'ni gaseume pago deureoga',\n", - " 'digidigideom digidigideom',\n", - " 'mogeul joyeoganda',\n", - " 'get down get down',\n", - " 'getgetgetget get down',\n", - " 'get down get down',\n", - " '(wa da wa da wa)',\n", - " 'telethusa',\n", - " 'omnia',\n", - " 'hic cuando telethusa circulatrix',\n", - " 'qua clunem tunica tegente nulla',\n", - " 'sexum latius altiusque motat',\n", - " 'crisabit tibi fluctuante lumbo',\n", - " 'haec sic non mode te priape posit',\n", - " 'privignum quoque sed movere phaedrae',\n", - " 'when telethusa, that little street slut',\n", - " 'who loves to shake her naked butt',\n", - " 'moving her pussy up and down, left and right',\n", - " 'wiggling with her cunt in plain sight',\n", - " \"she'll move you, priapus, make you hot\",\n", - " 'and even hippolytus(*) can withstand her not',\n", - " '(* the nephew of phaedrae; character from classic greek history)',\n", - " 'one shot, two shot',\n", - " 'one shot, two shot',\n", - " 'just for one, just-just for one',\n", - " 'one shot, two shot',\n", - " 'one shot, two shot',\n", - " 'just for one, just-just for one',\n", - " '가빠지는 숨소리에',\n", - " '높아지는 아드레날린',\n", - " '이건 고작 시작인걸',\n", - " '알고있어 알고있어',\n", - " '두 눈에서 흐르는 spangles are falling down',\n", - " '반짝이는 세상 그 곳에서 나를 적셔놔',\n", - " '황홀한 시간 속에 주인공은 너와 나',\n", - " \"ain't no one, yeah, nobody\",\n", - " '빠져버린 나',\n", - " '모든건 이미 perfect',\n", - " 'with you, with you, with you',\n", - " '시작된 firework',\n", - " '홀려버린 이 기분에',\n", - " 'i do, i do, i do',\n", - " '(one shot, two shot) 나와 넌',\n", - " '(one shot, two shot) have some fun',\n", - " '우리 둘이 just for one',\n", - " 'just for one (just for one)',\n", - " '(one shot, two shot) 나와 넌',\n", - " '(one shot, two shot) have some fun',\n", - " '우리 둘이 just for one',\n", - " 'just for one (just for one)',\n", - " '이 순간에 what can i say? (what can i say?)',\n", - " '표현조차 사치인걸',\n", - " \"but it's okay, it is okay\",\n", - " '이미 읽혀버린 너란 세계',\n", - " '감각은 날 일깨워 마치 아름다운 sound',\n", - " '순간 마법에 다 홀린듯한 내 모습은 strange',\n", - " '나란 퍼즐의 완성 마지막 조각은 너',\n", - " \"ain't no one, yeah, you're the one\",\n", - " '빠져버린 나',\n", - " '모든건 이미 perfect',\n", - " 'with you, with you, with you',\n", - " '시작된 firework',\n", - " '홀려버린 이 기분에',\n", - " 'i do, i do, i do',\n", - " '(one shot, two shot) 나와 넌 (나와 넌)',\n", - " '(one shot, two shot) have some fun (oh)',\n", - " '우리 둘이 just for one',\n", - " 'just for one (just for one)',\n", - " '(one shot, two shot) 나와 넌',\n", - " '(one shot, two shot) have some fun',\n", - " '우리 둘이 just for one',\n", - " 'just for one (just for one)',\n", - " '스쳐가는 순간도',\n", - " '담고싶어 모든걸',\n", - " '지나칠수 없어서, no, no, no, no',\n", - " '내게서 느낀 변화를',\n", - " '받아들이기로 했어 난 (oh)',\n", - " '모든 건 이미 perfect',\n", - " 'with you, with you, with you (with you, with you, with you)',\n", - " '끝없이 firework (끝없이 baby)',\n", - " '찬란하게 빛난 네게',\n", - " 'i do, i do, i do (i do, i do, i do)',\n", - " '(one shot, two shot) 나와 넌',\n", - " '(one shot, two shot) have some fun',\n", - " '우리 둘이 just for one (ooh)',\n", - " 'just for one (just for one)',\n", - " '(one shot, two shot) 나와 넌 (넌)',\n", - " '(one shot, two shot) have some fun (oh)',\n", - " '우리 둘이 just for one (oh, oh, oh, oh)',\n", - " 'just for one (just for one)',\n", - " '(one shot, two shot) party for one',\n", - " '(one shot, two shot) party for one, one',\n", - " '(우리 둘이) party for one',\n", - " '(just for one, just for one) oh, yeah',\n", - " '(one shot, two shot, 나와 넌) party for one',\n", - " '(one shot, two shot, have some fun) party for one, one',\n", - " '(우리 둘이) party for one',\n", - " '(just for one) just for one, just-just for one',\n", - " 'romanization',\n", - " 'one shot two shot',\n", - " 'one shot two shot',\n", - " 'just for one',\n", - " 'one shot two shot',\n", - " 'one shot two shot',\n", - " 'just for one',\n", - " 'gappajineun sumsolie nop-ajineun adeulenallin',\n", - " 'igeon gojag sijag-ingeol algoiss-eo algoiss-eo',\n", - " 'du nun-eseo heuleuneun spangles are falling down',\n", - " 'banjjag-ineun sesang geu gos-eseo naleul jeogsyeonwa',\n", - " 'hwangholhan sigan sog-e ju-ingong-eun neowa na',\n", - " \"ain't no one, yeah nobody\",\n", - " 'ppajyeobeolin na',\n", - " 'modeungeon imi perfect with you with you with you',\n", - " 'sijagdoen firework',\n", - " 'hollyeobeolin i gibun-e',\n", - " 'i do i do i do',\n", - " '(one shot two shot) nawa neon',\n", - " '(one shot two shot) have some fun',\n", - " 'uli dul-i just for one',\n", - " 'just for one',\n", - " '(one shot two shot) nawa neon',\n", - " '(one shot two shot) have some fun',\n", - " 'uli dul-i just for one',\n", - " 'just for one',\n", - " 'i sungan-e what can i say? (what can i say?)',\n", - " 'pyohyeonjocha sachiingeol',\n", - " \"but it's ok it is ok\",\n", - " 'imi ilghyeobeolin neolan segye',\n", - " 'gamgag-eun nal ilkkaewo machi aleumdaun sound',\n", - " 'sungan mabeob-e da hollindeushan nae moseub-eun strange',\n", - " 'nalan peojeul-ui wanseong majimag jogag-eun neo',\n", - " \"ain't no one, yeah you're the one\",\n", - " 'ppajyeobeolin na',\n", - " 'modeungeon imi perfect with you with you with you',\n", - " 'sijagdoen firework',\n", - " 'hollyeobeolin i gibun-e',\n", - " 'i do i do i do',\n", - " '(one shot two shot) nawa neon',\n", - " '(one shot two shot) have some fun',\n", - " 'uli dul-i just for one',\n", - " 'just for one',\n", - " '(one shot two shot) nawa neon',\n", - " '(one shot two shot) have some fun',\n", - " 'uli dul-i just for one',\n", - " 'just for one',\n", - " 'seuchyeoganeun sungando',\n", - " 'damgosip-eo modeungeol',\n", - " 'jinachilsu eobs-eoseono no no no',\n", - " 'naegeseo neukkin byeonhwaleul',\n", - " 'bad-adeul-igilo haess-eo nan',\n", - " 'modeun geon imi perfect with you with you with you',\n", - " '(with you with you with you)',\n", - " 'kkeut-eobs-i firework (kkeut-eobs-i baby)',\n", - " 'chanlanhage bichnan nege',\n", - " 'i do i do i do (i do i do i do)',\n", - " '(one shot two shot) nawa neon',\n", - " '(one shot two shot) have some fun',\n", - " 'uli dul-i just for one',\n", - " 'just for one',\n", - " '(one shot two shot) nawa neon',\n", - " '(one shot two shot) have some fun',\n", - " 'uli dul-i just for one',\n", - " 'just for one',\n", - " 'party for one',\n", - " 'party for one',\n", - " 'party for one, oh yeah',\n", - " 'party for one',\n", - " 'party for one',\n", - " 'party for one',\n", - " 'just for one',\n", - " 'just for one',\n", - " 'tiesto vom si ande resta',\n", - " 'feros done don',\n", - " 'de monte verra',\n", - " 'in tu demoni',\n", - " 'ferum',\n", - " 'ferum e calusta eri',\n", - " 'fera e calurra estam',\n", - " 'ave',\n", - " 'aveum deorem',\n", - " 'devoni devorem',\n", - " 'calusta meo deo deum',\n", - " 'tiesto estu on de resta',\n", - " 'in terra terrum',\n", - " 'ferus totiem oferis terra',\n", - " 'ferum',\n", - " 'tiesto vom si ande resta',\n", - " 'feros done don',\n", - " 'de monte verra',\n", - " 'in tu demoni',\n", - " 'ferum',\n", - " 'ferum e calusta eri',\n", - " 'fera e calurra estam',\n", - " 'ave rirem iruirem',\n", - " 'maleo',\n", - " '---',\n", - " '.',\n", - " 'metal! nickel! iron!',\n", - " 'fire and steel',\n", - " 'zinc! uranium! titanium!',\n", - " \"metal's their will\",\n", - " 'cuprum! yttrium! plutonium!',\n", - " 'fire and steel',\n", - " 'cobaltum! thorium! stronitium!',\n", - " \"metal's their will\",\n", - " 'gallium! prometium! palladium!',\n", - " 'fire and steel',\n", - " 'metallium! germanium! tecntetium!',\n", - " \"metal's their will\",\n", - " 'fermium! caesium! einsteinium!',\n", - " 'fire and steel',\n", - " 'litium! radium! berillium!',\n", - " \"metal's their will\",\n", - " 'haha, 4minute',\n", - " 'get it on the floor',\n", - " 'leggo!',\n", - " 'uh uh uh uh uh uh uh uh uh uh',\n", - " 'get on the floor',\n", - " 'uh uh uh uh uh uh uh',\n", - " 'get it on the floor',\n", - " 'uh uh uh uh uh uh uh uh uh uh',\n", - " 'get on the floor',\n", - " 'uh uh uh uh uh uh uh',\n", - " 'get it on the floor',\n", - " 'namdeul bodan jomdeo, ttoryeot hage',\n", - " 'nugu boda jomdeo, jjarit hage',\n", - " 'jeulgil junbi dwen saram man ttarawa',\n", - " 'get it on get it on get it on the floor',\n", - " 'namdeureun hyung nae naelsun eobtji',\n", - " 'nugu do ttara halsun eobtji',\n", - " 'jeulgil junbi dwae sseumyeon ttarawa',\n", - " 'get it on get it on get it on the floor',\n", - " 'ni shimjangeul kung kwang georige',\n", - " 'ni maeumeul dara oreuge',\n", - " 'eumageun meomchuji anhge',\n", - " 'bollyum eun ije deo keuge',\n", - " 'get it on the floor get it on the floor oh oh',\n", - " 'neukkyeobwa, jeulgyeobwa, eumake',\n", - " 'ni momeul matgyeo bwa',\n", - " 'get it on get it on get it on',\n", - " 'get it on get it on get it on the floor',\n", - " 'deo nopge, deo keuge, bollyumeul',\n", - " 'deo keuge ollyeo bwa',\n", - " 'get it on get it on get it on',\n", - " 'get it on get it on get it on the floor',\n", - " 'uh uh uh uh uh uh uh uh uh uh',\n", - " 'get on the floor',\n", - " 'uh uh uh uh uh uh uh',\n", - " 'get it on the floor',\n", - " 'uh uh uh uh uh uh uh uh uh uh',\n", - " 'get on the floor',\n", - " 'uh uh uh uh uh uh uh',\n", - " 'get it on the floor',\n", - " 'volume up!',\n", - " 'extremos orcos scriptos ab copiis',\n", - " 'septentrionis kazh-ran',\n", - " 'navigii parati erant ad solvendum',\n", - " 'versus ruid-dor sinus elfmuth',\n", - " 'theatrum supremi certaminis designatum',\n", - " 'blasphema caterva ad litus',\n", - " 'ex collibus ubi appropinquant',\n", - " 'naves bellicae soloturae',\n", - " 'intus horum servi suos dominos',\n", - " 'nigris armant',\n", - " 'sanguine eorum loricis adversariorum',\n", - " 'defendentibus eorum',\n", - " 'aura corpora atra convoluta ac sagis',\n", - " 'eorum signa ferentibus',\n", - " 'nave profecta ornata capitibus principum',\n", - " 'princeps remigium tempus remorum',\n", - " 'pulsu metitur nanorum',\n", - " 'qui a roze-el ducti',\n", - " 'templum eldril destruxerunt',\n", - " 'arcanorum artium peritissimi',\n", - " 'nunc cruore manant strigitu',\n", - " 'mille scuticarum quae eorum',\n", - " 'duram cutem lacerant',\n", - " 'et eorum dolor, aegritudo, sudori, sanguinis',\n", - " 'permixtus lembum propellit',\n", - " 'i portum argentatum quo sol',\n", - " 'iam lassus se conduit',\n", - " 'omnia parata ad proelio sunt... tympana',\n", - " 'metiuntur magna itinera orcorum',\n", - " 'ac hominum deformum pugnae aviditate',\n", - " 'cupiditate sola contentionis',\n", - " 'ordine procedunt sub caelo cinereo onusto odiis',\n", - " 'sicut domini impiarum animarum',\n", - " '(they sail towards elfmuth (before war))',\n", - " 'when the last ogres were recruited',\n", - " 'by the troops of north kazh-ran',\n", - " 'the warships where readied to set towards ruid-dor',\n", - " 'heart of elmuth, designated as the theatre of the last battle',\n", - " 'a blasphemous horde, from the hills',\n", - " 'goes to the coast where the warship are ready',\n", - " 'inside, the servants',\n", - " 'arm their lords with armours',\n", - " 'now black for the blood of their enemies',\n", - " 'and protecting their bodies',\n", - " 'wrapped by a black breeze',\n", - " ...]},\n", - " 'r-b': {'meta': {'train_data': ['{0:00 intro}',\n", - " '{0:33 chorus 1: head}',\n", - " '{1:15 chorus 2: trombone (ryan porter)}',\n", - " '{1:58 chorus 3: trombone, tenor saxophone (kamasi washington)}',\n", - " '{2:24 chorus 4-6: tenor saxophone}',\n", - " '{4:50 chorus 7-9: piano (cameron graves)}',\n", - " '{7:15 chorus 10-11: head}',\n", - " '{8:42 outro}',\n", - " '{9:20 end}',\n", - " 'hangul',\n", - " '내 도시 위엔',\n", - " '필요 없지 license',\n", - " 'it’s like a nonsense',\n", - " '밤은 짧기에 서둘러 tonight is the night',\n", - " '우리 여길 떠날 때엔',\n", - " 'don’t look back',\n", - " 'we are not fake',\n", - " '물 흐르듯이',\n", - " 'see, i know what u want',\n", - " 'so 낭비하지 마',\n", - " '투명한 건 꼭 떠올라',\n", - " '수면 위로 다',\n", - " 'look, 반짝거리잖아',\n", - " 'you are shining like a star',\n", - " '멈추지 말고 따라와 줘 매일',\n", - " '비워져있어 네 자린',\n", - " 'you make ma world',\n", - " 'you should know baby',\n", - " '넌 너이기에 소중해 또 필요해 난 like fire',\n", - " 'we got the key',\n", - " '세상은 우리',\n", - " '주윌 돌 테니',\n", - " 'so feel your own free',\n", - " '진짜인지',\n", - " '의심하진 마',\n", - " 'believe and get your own feelin’',\n", - " 'in a rainbow rainbow car',\n", - " 'in a rainbow rainbow car',\n", - " '규칙은 깨지길 바랬지',\n", - " '내려놔 그 짐, and make your fantasy',\n", - " 'with me here, rainbow rainbow car, l’ll make u free',\n", - " \"i'll make you free\",\n", - " '그래 걔넨 걔네일뿐이지',\n", - " '너는 뭐가 되려해?',\n", - " '우리 모두 갖고있잖아, 원하는게 뭐던지 간에',\n", - " 'so 빛을 부어, 빛을 부어',\n", - " '떨어지더라도 걱정마 그건 다리 인거야',\n", - " '널 잃지마, 잃지마',\n", - " '네 색을 따라가 번지더라도 make it right',\n", - " '아무도 없는 듯이',\n", - " 'see, i know what u want',\n", - " '한 가지 색깔로만 덮인 네 모습을 봐',\n", - " '이 순간에도',\n", - " 'look 흐려지고 있잖아',\n", - " 'l’ll make u like a star',\n", - " '멈추지 말고 따라와 줘 매일',\n", - " '비워져 있어 네 자린',\n", - " 'you make ma world',\n", - " 'you should know baby',\n", - " '넌 너이기에 소중해 또 필요해 난 like fire',\n", - " 'we got the key',\n", - " '세상은 우리',\n", - " '주윌 돌 테니',\n", - " 'so feel your own free',\n", - " '진짜인지',\n", - " '의심하진 마',\n", - " 'believe and get your own feelin’',\n", - " 'in a rainbow rainbow',\n", - " 'in a rainbow rainbow',\n", - " '어렵게 생각하진 마',\n", - " 'time to divide, divide',\n", - " '규칙은 깨지길 바랬지',\n", - " '내려놔 그 짐, and make your fantasy',\n", - " 'with me here, rainbow rainbow car',\n", - " 'it’s who we are',\n", - " 'yes ride with it',\n", - " 'good feels on wheels',\n", - " '눈치는 보지 말고 그저 즐겨',\n", - " '널 만드는 일이 널 지치게 하지마',\n", - " '붓을 꺼내 색을 칠해 더 빛날 수 있게',\n", - " 'yes ride with it',\n", - " 'good feels on wheels',\n", - " '눈치는 보지 말고 그저 즐겨',\n", - " '널 만드는 일이 널 지치게 하지마',\n", - " '붓을 꺼내 색을 칠해 더 빛날 수 있게',\n", - " 'in a rainbow rainbow car',\n", - " 'in a rainbow rainbow car',\n", - " '규칙은 깨지길 바랬지',\n", - " '내려놔 그 짐, and make your fantasy',\n", - " 'with me here, rainbow rainbow car, l’ll make u free',\n", - " 'romanization',\n", - " 'nae dosi wien',\n", - " 'pil-yo eobsji license',\n", - " 'it’s like a nonsense',\n", - " 'bam-eun jjalbgie seodulleo tonight is the night',\n", - " 'uli yeogil tteonal ttaeen',\n", - " 'don’t look back',\n", - " 'we are not fake',\n", - " 'mul heuleudeus-i',\n", - " 'see, i know what u want',\n", - " 'so nangbihaji ma',\n", - " 'tumyeonghan geon kkog tteoolla',\n", - " 'sumyeon wilo da',\n", - " 'look, banjjaggeolijanh-a',\n", - " 'you are shining like a star',\n", - " 'meomchuji malgo ttalawa jwo maeil',\n", - " 'biwojyeoiss-eo ne jalin',\n", - " 'you make ma world',\n", - " 'you should know baby',\n", - " 'neon neoigie sojunghae tto pil-yohae nan like fire',\n", - " 'we got the key',\n", - " 'sesang-eun uli',\n", - " 'juwil dol teni',\n", - " 'so feel your own free',\n", - " 'jinjjainji',\n", - " 'uisimhajin ma',\n", - " 'believe and get your own feelin’',\n", - " 'in a rainbow rainbow car',\n", - " 'in a rainbow rainbow car',\n", - " 'gyuchig-eun kkaejigil balaessji',\n", - " 'naelyeonwa geu jim, and make your fantasy',\n", - " 'with me here, rainbow rainbow car, l’ll make u free',\n", - " \"i'll make you free\",\n", - " 'geulae gyaenen gyaeneilppun-iji',\n", - " 'neoneun mwoga doelyeohae?',\n", - " 'uli modu gajgoissjanh-a, wonhaneunge mwodeonji gan-e',\n", - " 'so bich-eul bueo, bich-eul bueo',\n", - " 'tteol-eojideolado geogjeongma geugeon dali ingeoya',\n", - " 'neol ilhjima, ilhjima',\n", - " 'ne saeg-eul ttalaga beonjideolado make it right',\n", - " 'amudo eobsneun deus-i',\n", - " 'see, i know what u want',\n", - " 'han gaji saegkkalloman deop-in ne moseub-eul bwa',\n", - " 'i sungan-edo',\n", - " 'look heulyeojigo issjanh-a',\n", - " 'l’ll make u like a star',\n", - " 'meomchuji malgo ttalawa jwo maeil',\n", - " 'biwojyeo iss-eo ne jalin',\n", - " 'you make ma world',\n", - " 'you should know baby',\n", - " 'neon neoigie sojunghae tto pil-yohae nan like fire',\n", - " 'we got the key',\n", - " 'sesang-eun uli',\n", - " 'juwil dol teni',\n", - " 'so feel your own free',\n", - " 'jinjjainji',\n", - " 'uisimhajin ma',\n", - " 'believe and get your own feelin’',\n", - " 'in a rainbow rainbow',\n", - " 'in a rainbow rainbow',\n", - " 'eolyeobge saeng-gaghajin ma',\n", - " 'time to divide, divide',\n", - " 'gyuchig-eun kkaejigil balaessji',\n", - " 'naelyeonwa geu jim, and make your fantasy',\n", - " 'with me here, rainbow rainbow car',\n", - " 'it’s who we are',\n", - " 'yes ride with it',\n", - " 'good feels on wheels',\n", - " 'nunchineun boji malgo geujeo jeulgyeo',\n", - " 'neol mandeuneun il-i neol jichige hajima',\n", - " 'bus-eul kkeonae saeg-eul chilhae deo bichnal su issge',\n", - " 'yes ride with it',\n", - " 'good feels on wheels',\n", - " 'nunchineun boji malgo geujeo jeulgyeo',\n", - " 'neol mandeuneun il-i neol jichige hajima',\n", - " 'bus-eul kkeonae saeg-eul chilhae deo bichnal su issge',\n", - " 'in a rainbow rainbow car',\n", - " 'in a rainbow rainbow car',\n", - " 'gyuchig-eun kkaejigil balaessji',\n", - " 'naelyeonwa geu jim, and make your fantasy',\n", - " 'with me here, rainbow rainbow car, l’ll make u free',\n", - " 'hangul',\n", - " \"i'll sing it to you girl\",\n", - " 'i can make a thousand songs for you babe (babe)',\n", - " \"just lookin' at your face\",\n", - " '넌 나의 영감이 돼 all day always',\n", - " '넌 날 노래하게 만들어 ooh yes',\n", - " '넌 말야 just like the melodies',\n", - " \"that's in my head\",\n", - " '내 머릿속을 가득 채운 선율처럼',\n", - " '그렇게 넌 존재하고 있어',\n", - " 'inside of me girl',\n", - " 'you and i, 너와 나 둘이 함께 있으면',\n", - " '더 바랄것 이 없어',\n", - " '우리 둘 so good together',\n", - " '널 닮아가는 나 날 닮은 너 yeah',\n", - " '달콤한 너의 향기처럼',\n", - " '너 내게 스며들면',\n", - " '멀리 있어도 함께인 것처럼',\n", - " '난 널 느낄 수 있는데 yeah',\n", - " 'lah lah lah lah',\n", - " 'you make me wanna sing sing sing',\n", - " '너를 보면',\n", - " '너너너너너',\n", - " '알잖아 나의 queen queen queen',\n", - " \"yeah that's true yo\",\n", - " '걱정하지마 oh',\n", - " '언제나 너의 뒤 뒤 뒤',\n", - " '너의 뒤에서',\n", - " '너의 뒤에서 널 지켜줄 거야 oh',\n", - " '함께할 거야 we we we',\n", - " 'cause we are meant to be',\n", - " '좋은 덴 이유도 없어 여기 우리처럼',\n", - " '오 이런 다정한 남잘 봤나',\n", - " 'my destiny you and i',\n", - " '나 지금 너만 보고 걷고 있어',\n", - " 'you make me 매일 매일이',\n", - " 'up and down 오늘도 웃게 해줘',\n", - " '네가 있어 감사해 my all',\n", - " 'you and i 너와 나 둘이 함께 있으면',\n", - " '더 바랄 것이 없어',\n", - " '우리 둘 so good together',\n", - " '널 닮아가는 나 날 닮은 너 yeah',\n", - " '달콤한 너의 향기처럼',\n", - " '너 내게 스며들면',\n", - " '멀리 있어도 함께인 것처럼',\n", - " '난 널 느낄 수 있는데 yeah',\n", - " '떨어져도 넌 내 옆에',\n", - " '멀어져도 can’t fade away',\n", - " '말 뿐인 감정일 거라며 친구들은',\n", - " '못 믿고 있고 난 배웠네',\n", - " '그래 영화 영화 사람들은 보기만 하고 내 앨범엔',\n", - " 'you know my life is like a movie shoot',\n", - " '다 너로 채웠네 sing',\n", - " '차분한 멜로디 안 질리고 새롭지',\n", - " '바로 몇 분 전에 네가 준 영감들은 셀 수 없지',\n", - " '시간은 두렵지 않아 흐르지 않을 거니까',\n", - " '넘어져도 괜찮아 내 가슴이 베개가 될 거니까',\n", - " '라라라라라',\n", - " 'you make me wanna sing sing sing',\n", - " '너를 보면',\n", - " '너너너너너',\n", - " '알잖아 나의 queen queen queen',\n", - " \"yeah that's true yo\",\n", - " '걱정하지마 oh',\n", - " '언제나 너의 뒤 뒤 뒤',\n", - " '너의 뒤에서',\n", - " '너의 뒤에서 널 지켜줄 거야 oh',\n", - " '함께할 거야 we we we',\n", - " 'cause we are meant to be',\n", - " 'romanization',\n", - " \"i'll sing it to you girl\",\n", - " 'i can make a thousand songs for you babe (babe)',\n", - " \"just lookin' at your face\",\n", - " 'neon naui yeong-gam-i dwae all day always',\n", - " 'neon nal nolaehage mandeul-eo ooh yes',\n", - " 'neon mal-ya just like the melodies',\n", - " \"that's in my head\",\n", - " 'nae meolis-sog-eul gadeug chaeun seon-yulcheoleom',\n", - " 'geuleohge neon jonjaehago iss-eo',\n", - " 'inside of me girl',\n", - " 'you and i neowa na dul-i hamkke iss-eumyeon',\n", - " 'deo balal geos-i eobs-eo',\n", - " 'uli dul so good together',\n", - " 'neol dalm-aganeun na nal dalm-eun neo yeah',\n", - " 'dalkomhan neoui hyang-gicheoleom',\n", - " 'neo naege seumyeodeulmyeon',\n", - " 'meolli iss-eodo hamkkein geoscheoleom',\n", - " 'nan neol neukkil su issneunde yeah',\n", - " 'lalalalala',\n", - " 'you make me wanna sing sing sing',\n", - " 'neoleul bomyeon',\n", - " 'neoneoneoneoneo',\n", - " 'aljanh-a naui queen queen queen',\n", - " \"yeah that's true yo\",\n", - " 'geogjeonghajima oh',\n", - " 'eonjena neoui dwi dwi dwi',\n", - " 'neoui dwieseo',\n", - " 'neoui dwieseo neol jikyeojul geoya oh',\n", - " 'hamkkehal geoya we we we',\n", - " 'cause we are meant to be',\n", - " 'joh-eun den iyudo eobs-eo yeogi ulicheoleom',\n", - " 'o ileon dajeonghan namjal bwassna',\n", - " 'my destiny you and i',\n", - " 'na jigeum neoman bogo geodgo iss-eo',\n", - " 'you make me maeil maeil-i',\n", - " 'up and down oneuldo usge haejwo',\n", - " 'nega iss-eo gamsahae my all',\n", - " 'you and i neowa na dul-i hamkke iss-eumyeon',\n", - " 'deo balal geos-i eobs-eo',\n", - " 'uli dul so good together',\n", - " 'neol dalm-aganeun na nal dalm-eun neo yeah',\n", - " 'dalkomhan neoui hyang-gicheoleom',\n", - " 'neo naege seumyeodeulmyeon',\n", - " 'meolli iss-eodo hamkkein geoscheoleom',\n", - " 'nan neol neukkil su issneunde yeah',\n", - " 'tteol-eojyeodo neon nae yeop-e',\n", - " 'meol-eojyeodo can’t fade away',\n", - " 'mal ppun-in gamjeong-il geolamyeo chingudeul-eun',\n", - " 'mos midgo issgo nan baewossne',\n", - " 'geulae yeonghwa yeonghwa salamdeul-eun bogiman hago nae aelbeom-en',\n", - " 'you know my life is like a movie shoot',\n", - " 'da neolo chaewossne sing',\n", - " 'chabunhan mellodi an jilligo saelobji',\n", - " 'balo myeoch bun jeon-e nega jun yeong-gamdeul-eun sel su eobsji',\n", - " 'sigan-eun dulyeobji anh-a heuleuji anh-eul geonikka',\n", - " 'neom-eojyeodo gwaenchanh-a nae gaseum-i begaega doel geonikka',\n", - " 'lalalalala',\n", - " 'you make me wanna sing sing sing',\n", - " 'neoleul bomyeon',\n", - " 'neoneoneoneoneo',\n", - " 'aljanh-a naui queen queen queen',\n", - " \"yeah that's true yo\",\n", - " 'geogjeonghajima oh',\n", - " 'eonjena neoui dwi dwi dwi',\n", - " 'neoui dwieseo',\n", - " 'neoui dwieseo neol jikyeojul geoya oh',\n", - " 'hamkkehal geoya we we we',\n", - " 'cause we are meant to be',\n", - " 'sratli ma naawedchi rani halef',\n", - " 'ma naachakchi ana menek',\n", - " 'rani madror',\n", - " 'aah ya bent eness cheyebtini',\n", - " 'hsen awni habeltini wasaltini',\n", - " \"hata l'amour\",\n", - " 'ya bent eness cheyebtini',\n", - " 'hsen awni habeltini weditini',\n", - " \"jusque'a l'amour\",\n", - " 'ah kounti mkhalta aayta gbali',\n", - " 'ou tah kadri bahdeltini derti fia',\n", - " 'rayek batol',\n", - " 'kounti mkhalta aayta gbali',\n", - " 'ou tah kadri bahdeltini derti rayek',\n", - " 'bia batol',\n", - " 'yak andha taleb aafrit aala biha',\n", - " 'aachakt ou koulit louken rfet rouhi wejrit',\n", - " 'yak andha taleb aafrit aala biha',\n", - " 'aachakt ou koulit louken rfet rouhi wejrit',\n", - " 'yak andek taleb aafrit beritini',\n", - " \"ou cheyebtini weditini jusque'a l'amour\",\n", - " 'yak andek taleb aafrit beritini',\n", - " \"ou cheyebtini weditini jusque'a l'amour\",\n", - " 'ya bent eness cheyebtini hsen awni',\n", - " \"habeltini wasaltini jusque'a l'amour\",\n", - " 'ya bent eness cheyebtini hsen awni',\n", - " \"habeltini weditini jusque'a l'amour\",\n", - " 'korean',\n", - " \"it goes like nah i know what's going on\",\n", - " '요즘엔 지치지 않으면 잠에 못 들어 it’s okay',\n", - " '정적이 싫어서 억지로 틀어놓은',\n", - " \"티비는 집중이 되지 않아 하나도 it's okay\",\n", - " '니 생각이 날 땐',\n", - " 'it all come alive and',\n", - " \"now i'm in a nightmare\",\n", - " 'it’s all about you',\n", - " '니 생각이 나지만',\n", - " '정신 차리겠거니 하고 말지',\n", - " '약이 없네 이 독한 감기에',\n", - " \"it's all about you okay\",\n", - " \"i'm never fine never fine never fine\",\n", - " \"i'm never fine never fine never fine\",\n", - " '다 써버리고 버리듯이',\n", - " '이 노랜 별 의미 없었으면 해',\n", - " 'okay okay okay you okay',\n", - " \"it's okay okay okay\",\n", - " \"it's okay okay okay\",\n", - " '어차피 소용없는 짓이지만',\n", - " '내게 할 짓이 못되지만',\n", - " \"it's okay okay okay\",\n", - " \"now i'm okay okay okay\",\n", - " '말하지 않아도',\n", - " '날 보지 않아도 돼',\n", - " '해봤자 뭐해',\n", - " 'okay and i’m sometimes kinda',\n", - " 'locked down in my own time',\n", - " '맘에도 없던 괜한 말에 흠칫',\n", - " '거린 너의 눈은 이제 보내달란 눈치',\n", - " '하긴 뭐 어때 나름 넓어진 내 방 내 차',\n", - " '다시 돌아가고 싶지 않아서',\n", - " '허우적거릴 뿐이지',\n", - " '진짜로 정말 가끔씩',\n", - " '그리운 거야 니 품이',\n", - " '이럴 거면 왜 그랬어 왜 그랬어',\n", - " 'cuz i don’t know',\n", - " \"let's not do this\",\n", - " 'trying on it’s just foolish',\n", - " '창가를 때리는 빗물이',\n", - " '괴롭히네 매일 밤',\n", - " \"i'm never fine never fine never fine\",\n", - " \"i'm never fine never fine never fine\",\n", - " '다 써버리고 버리듯이',\n", - " '이 노랜 별 의미 없었으면 해',\n", - " 'okay okay okay you okay',\n", - " \"it's okay okay okay\",\n", - " 'it’s okay okay okay',\n", - " '어차피 소용없는 짓이지만',\n", - " '내게 할 짓이 못되지만',\n", - " \"it's okay okay okay\",\n", - " \"now i'm okay\",\n", - " 'romanized',\n", - " \"it goes like nah i know what's going on\",\n", - " \"yojeum-en jichiji anh-eumyeon jam-e mos deul-eo it's okay\",\n", - " 'jeongjeog-i silh-eoseo eogjilo teul-eonoh-eun',\n", - " \"tibineun jibjung-i doeji anh-a hanado it's okay\",\n", - " 'ni saeng-gag-i nal ttaen',\n", - " 'it all come alive and',\n", - " \"now i'm in a nightmare\",\n", - " \"it's all about you\",\n", - " 'ni saeng-gag-i najiman',\n", - " 'jeongsin chaligessgeoni hago malji',\n", - " 'yag-i eobsne i doghan gamgie',\n", - " \"it's all about you okay\",\n", - " \"i'm never fine never fine never fine\",\n", - " \"i'm never fine never fine never fine\",\n", - " 'da sseobeoligo beolideus-i',\n", - " 'i nolaen byeol uimi eobs-eoss-eumyeon hae',\n", - " 'okay okay okay you okay',\n", - " \"it's okay okay okay\",\n", - " \"it's okay okay okay\",\n", - " 'eochapi soyong-eobsneun jis-ijiman',\n", - " 'naege hal jis-i mosdoejiman',\n", - " \"it's okay okay okay\",\n", - " \"now i'm okay okay okay\",\n", - " 'malhaji anh-ado',\n", - " 'nal boji anh-ado dwae',\n", - " 'haebwassja mwohae',\n", - " \"okay and i'm sometimes kinda\",\n", - " 'locked down in my own time',\n", - " 'mam-edo eobsdeon gwaenhan mal-e heumchis',\n", - " 'geolin neoui nun-eun ije bonaedallan nunchi',\n", - " 'hagin mwo eottae naleum neolb-eojin nae bang nae cha',\n", - " 'dasi dol-agago sipji anh-aseo',\n", - " 'heoujeoggeolil ppun-iji',\n", - " 'jinjjalo jeongmal gakkeumssig',\n", - " 'geuliun geoya ni pum-i',\n", - " 'ileol geomyeon wae geulaess-eo wae geulaess-eo',\n", - " \"cuz i don't know\",\n", - " \"let's not do this\",\n", - " \"trying on it's just foolish\",\n", - " 'chang-galeul ttaelineun bismul-i',\n", - " 'goelobhine maeil bam',\n", - " \"i'm never fine never fine never fine\",\n", - " \"i'm never fine never fine never fine\",\n", - " 'da sseobeoligo beolideus-i',\n", - " 'i nolaen byeol uimi eobs-eoss-eumyeon hae',\n", - " 'okay okay okay you okay',\n", - " \"it's okay okay okay\",\n", - " \"it's okay okay okay\",\n", - " 'eochapi soyong-eobsneun jis-ijiman',\n", - " 'naege hal jis-i mosdoejiman',\n", - " \"it's okay okay okay\",\n", - " \"now i'm okay\",\n", - " 'korean',\n", - " 'my life is sweet like donut',\n", - " '내 전화기가 떨어',\n", - " 'pick my phone up',\n", - " '미안한데 친한 척은 넣어둬',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " 'my life is sweet like donut',\n", - " '내 전화기가 떨어',\n", - " 'pick my phone up',\n", - " '미안한데 친한 척은 넣어둬',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " '한국 2 thou 16',\n", - " '그때부터 난 밑은 안 봤지',\n", - " 'on the web like spiderman',\n", - " 'reppin h1ghr gang',\n", - " 'dab dab on em',\n", - " '챙겨 내, 내 목소린 비싸, sweet 16s. sweet 16s',\n", - " 'ya! ya!',\n", - " '바람이 불어 내 삶에',\n", - " '내가 어딜 가던 making waves',\n", - " '파도 일으키고, 내 음악은 볼륨 키고',\n", - " 'up up up up, let’s put it on blast',\n", - " '비록 여름 몸매 아니라도',\n", - " '내 기분은 beach mode',\n", - " '지난 일은 쉿 쉿, 놀지 뭐',\n", - " '그 뒤론 다시 beast mode',\n", - " 'working all day and night',\n", - " 'she call me workaholic',\n", - " '야근 매일 해 난',\n", - " '가만 보면 나는 사랑하고 있어, 내일의 날',\n", - " '누구나 할 줄 아는 말은 쉽지',\n", - " 'when it’s easy 너무 시시',\n", - " '마치 시험장 with a cheat sheet, like',\n", - " '뻔한 얘기, 뻔한 가사, 뻔할 테지',\n", - " '근데 변하고 있는걸 삶의 위치, 이건 내비',\n", - " 'yo i’m savvy when it comes to me rappin',\n", - " 'plans coming true when i map em',\n", - " 'no paper planes, i’m david blaine, poppin up like magic',\n", - " 'my life is sweet like donut',\n", - " '내 전화기가 떨어',\n", - " 'pick my phone up',\n", - " '미안한데 친한 척은 넣어둬',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " 'my life is sweet like donut',\n", - " '내 전화기가 떨어',\n", - " 'pick my phone up',\n", - " '미안한데 친한 척은 넣어둬',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " 'hit hit what what 나의 직업은 two time ceo',\n", - " '매일 매일 밤 밤 소주집 아니면 난 작업실이죠',\n", - " 'always on my grind i’m hustling',\n", - " '어느 새부터 돈 벌었지',\n", - " '부자 되자고 이유는 항상 명확했어',\n", - " '개인 욕심은 아니었지',\n", - " 'for my people people 그건 나의 기초 기초',\n", - " '나의 죄들을 씻겨 씻겨내',\n", - " '두 손을 붙여 빌어 빌어',\n", - " 'ay ay ay',\n", - " '난 판을 엎고 있어',\n", - " '그 와중 판을 업고 있어',\n", - " '도중에 respect도 얻고 있어',\n", - " '그래도 난 아직도 적도 있어',\n", - " 'but i’m just doing me',\n", - " 'look out for the family',\n", - " '하기 싫은 건 안 하지',\n", - " '아주 만약에 aomg h1ghr music한테 도움되면 그땐 양보하지 ph-1 let’s get it done',\n", - " 'dj khaled boy we got another one',\n", - " 'this that feel good salute to the drunken one',\n", - " 'every thurxday we finna have a lot of fun',\n", - " 'my life is sweet like donut',\n", - " '내 전화기가 떨어',\n", - " 'pick my phone up',\n", - " '미안한데 친한 척은 넣어둬',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " 'my life is sweet like donut',\n", - " '내 전화기가 떨어',\n", - " 'pick my phone up',\n", - " '미안한데 친한 척은 넣어둬',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " 'romanization',\n", - " 'my life is sweet like donut',\n", - " 'nae jeonhwagiga tteol-eo',\n", - " 'pick my phone up',\n", - " 'mianhande chinhan cheog-eun neoh-eodwo',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " 'my life is sweet like donut',\n", - " 'nae jeonhwagiga tteol-eo',\n", - " 'pick my phone up',\n", - " 'mianhande chinhan cheog-eun neoh-eodwo',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " 'hangug 2 thou 16',\n", - " 'geuttaebuteo nan mit-eun an bwassji',\n", - " 'on the web like spiderman',\n", - " 'reppin h1ghr gang',\n", - " 'dab dab on em',\n", - " 'chaeng-gyeo nae, nae mogsolin bissa, sweet 16s. sweet 16s',\n", - " 'ya! ya!',\n", - " 'balam-i bul-eo nae salm-e',\n", - " 'naega eodil gadeon making waves',\n", - " 'pado il-eukigo, nae eum-ag-eun bollyum kigo',\n", - " 'up up up up, let’s put it on blast',\n", - " 'bilog yeoleum mommae anilado',\n", - " 'nae gibun-eun beach mode',\n", - " 'jinan il-eun swis swis, nolji mwo',\n", - " 'geu dwilon dasi beast mode',\n", - " 'working all day and night',\n", - " 'she call me workaholic',\n", - " 'yageun maeil hae nan',\n", - " 'gaman bomyeon naneun salanghago iss-eo, naeil-ui nal',\n", - " 'nuguna hal jul aneun mal-eun swibji',\n", - " 'when it’s easy neomu sisi',\n", - " 'machi siheomjang with a cheat sheet, like',\n", - " 'ppeonhan yaegi, ppeonhan gasa, ppeonhal teji',\n", - " 'geunde byeonhago issneungeol salm-ui wichi, igeon naebi',\n", - " 'yo i’m savvy when it comes to me rappin',\n", - " 'plans coming true when i map em',\n", - " 'no paper planes, i’m david blaine, poppin up like magic',\n", - " 'my life is sweet like donut',\n", - " 'nae jeonhwagiga tteol-eo',\n", - " 'pick my phone up',\n", - " 'mianhande chinhan cheog-eun neoh-eodwo',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " 'my life is sweet like donut',\n", - " 'nae jeonhwagiga tteol-eo',\n", - " 'pick my phone up',\n", - " 'mianhande chinhan cheog-eun neoh-eodwo',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " 'hit hit what what naui jig-eob-eun two time ceo',\n", - " 'maeil maeil bam bam sojujib animyeon nan jag-eobsil-ijyo',\n", - " 'always on my grind i’m hustling',\n", - " 'eoneu saebuteo don beol-eossji',\n", - " 'buja doejago iyuneun hangsang myeonghwaghaess-eo',\n", - " 'gaein yogsim-eun anieossji',\n", - " 'for my people people geugeon naui gicho gicho',\n", - " 'naui joedeul-eul ssisgyeo ssisgyeonae',\n", - " 'du son-eul but-yeo bil-eo bil-eo',\n", - " 'ay ay ay',\n", - " 'nan pan-eul eopgo iss-eo',\n", - " 'geu wajung pan-eul eobgo iss-eo',\n", - " 'dojung-e respectdo eodgo iss-eo',\n", - " 'geulaedo nan ajigdo jeogdo iss-eo',\n", - " 'but i’m just doing me',\n", - " 'look out for the family',\n", - " 'hagi silh-eun geon an haji',\n", - " 'aju man-yag-e aomg h1ghr musichante doumdoemyeon geuttaen yangbohaji ph-1 let’s get it done',\n", - " 'dj khaled boy we got another one',\n", - " 'this that feel good salute to the drunken one',\n", - " 'every thurxday we finna have a lot of fun',\n", - " 'my life is sweet like donut',\n", - " 'nae jeonhwagiga tteol-eo',\n", - " 'pick my phone up',\n", - " 'mianhande chinhan cheog-eun neoh-eodwo',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " 'my life is sweet like donut',\n", - " 'nae jeonhwagiga tteol-eo',\n", - " 'pick my phone up',\n", - " 'mianhande chinhan cheog-eun neoh-eodwo',\n", - " 'milly rockin everywhere',\n", - " 'yeah you know i go hard',\n", - " 'hit hit, what what',\n", - " \"ami ku mi dios, mi'n ta mi so mas\",\n", - " 'fuck tur esnan kuabira lomba',\n", - " 'mientras tantu bo ta papia, sen ta konta',\n", - " 'den kaya tin tantu snake i anaconda',\n", - " \"ta pesei me' mi t'un guy ku mi prinsipio\",\n", - " \"bitch nigga, mi'n ke sa ni nada dibo\",\n", - " 'den rabia nos tur ta purba den casino',\n", - " 'wak nan no hanjabo mal benta, sin sa pa kiko',\n", - " 'mi ta ku mi dios, e ta wak mi lomba',\n", - " 'yen a rabia foi dia nan a tende mi ta kobra',\n", - " 'mi sa di label nan, ku ke kibra mi forsa',\n", - " 'pero tur kaminda ku bo bai, tin track ta toka',\n", - " 'show bo love, pa ora bo pasa pa nan gosa',\n", - " 'ma sinja pa no pone pan na tur su boka',\n", - " 'subi facebook, skibi ko pa ofendemi',\n", - " \"mi'n tin nadi prove, tur hende konose mi\",\n", - " 'mi ta stel un alibi pe defende mi',\n", - " 'pa ki ku ta, e reshershi nai bin wak mi drechi',\n", - " 'korda den tempu nan hodidu, huntu ku quincy',\n", - " 'lora kumpra un strap, sin sa ni ki e ta kosta',\n", - " 'na guy chiki, mi ker a bira warda kosta',\n", - " \"mi'n por yuda ku mi ta mal in love ke coca\",\n", - " 'si mi konfia bo un ko, ma hasie ta pa bo so sa',\n", - " \"lage'le kere ta helicopter ta, ta zona\",\n", - " 'skrrrr',\n", - " \"ami ku mi dios, mi'n ta mi so mas\",\n", - " 'fuck tur esnan kuabira lomba',\n", - " 'mientras tantu bo ta papia, sen ta konta',\n", - " 'den kaya tin tantu snake i anaconda',\n", - " \"ta pesei me' mi t'un guy ku mi prinsipio\",\n", - " \"bitch nigga, mi'n ke sa ni nada dibo\",\n", - " 'den rabia nos tur ta purba den casino',\n", - " 'wak nan no hanjabo mal benta, sin sa pa kiko',\n", - " 'ni maske kiko sosode',\n", - " 'of kiko bo komete',\n", - " 'korda hisa bo kabes, tur kos lo bai ta alright',\n", - " \"korda mantene e fe, i soru pa bo'n ta scared\",\n", - " 'i bolbe huza e kabes i keda hustle all night',\n", - " 'ta pesei mes mi ta keda ku e koi on me',\n", - " 'direct ta kla pa ba, bentana saka skupi',\n", - " \"mi ta soru pa ami'n te prome ku tinku kur'i\",\n", - " 'ta desea pa tende ku ta nos a muri',\n", - " 'lanta tur dia mal nervia',\n", - " \"mi'n ni gusta ni road den stad\",\n", - " 'pa mi hanjami tinku zona bo dilanti kamara',\n", - " 'mi mester di un pida hasj',\n", - " 'pa lora pafo di stad',\n", - " \"toch den bario me' ma lora serka kamara\",\n", - " \"pa kiko lo mi stress pa un tipo ku'n ta ku mi\",\n", - " 'mi, ke esnan ku tei ahinda lo bai subi',\n", - " 'unbei nos tin un studio mes, ku tin jacuzzi',\n", - " 'persigui bo sonjo pa bo tra bo movie',\n", - " \"ami ku mi dios, mi'n ta mi so mas\",\n", - " 'fuck tur esnan kuabira lomba',\n", - " 'mientras tantu bo ta papia, sen ta konta',\n", - " 'den kaya tin tantu snake i anaconda',\n", - " \"ta pesei mes mi t'un guy ku mi prinsipio\",\n", - " \"bitch nigga, mi'n ke sa ni nada dibo\",\n", - " 'den rabia nos tur ta purba den casino',\n", - " 'wak nan no hanjabo mal benta, sin sa pa kiko']},\n", - " 'data': ['hangul',\n", - " '천천히 더 가까워졌지',\n", - " '널 봤을 때 난 마치',\n", - " '어린 소녀 같았지',\n", - " '서두를 것 없이 난 이미',\n", - " '수많은 여자들을 대신해 already',\n", - " 'woo hoo baby',\n", - " '내가 네 눈 안에 maybe',\n", - " 'u know',\n", - " '나란 존재 하나만으로도 꽉 차게',\n", - " '밤새 나란 행복을 줄게 꽉 차게',\n", - " '이대로 우리',\n", - " '둘만의 party like 블랙홀',\n", - " '더 설명하지 않아도 돼',\n", - " 'u know we know oh',\n", - " 'i know what u want',\n", - " '네 모든 상상 속에선',\n", - " 'let’s talk with with my body',\n", - " 'i know that u want it',\n", - " 'slowly baby',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'u and me',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'ooh ooh',\n", - " 'play me',\n", - " 'slowly slowly slowly baby',\n", - " 'sweaty sweaty sweaty baby',\n", - " '그래 나 천천히 가는 걸 좋아해',\n", - " '목적지 설정해 난 너 안에 너 안에',\n", - " 'slowly',\n", - " '이건 막 달고 짜',\n", - " '땀인지 꿀인지 아님',\n", - " 'whipping cream',\n", - " 'your booty is like boomin',\n", - " 'so beautiful',\n", - " '우리 둘',\n", - " 'stop oh 이대로 우리',\n", - " '둘만의 party like 블랙홀',\n", - " '더 설명하지 않아도 돼',\n", - " 'u know we know oh',\n", - " 'i know what u want',\n", - " '네 모든 상상 속에선',\n", - " 'let’s talk with with my body',\n", - " 'i know that u want it',\n", - " 'slowly baby',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'u and me',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'ooh ooh',\n", - " 'play me',\n", - " 'slowly slowly slowly baby',\n", - " 'sweaty sweaty sweaty baby',\n", - " 'take it easy',\n", - " 'i’m the only one hope u know it baby',\n", - " 'i know u already crush on me',\n", - " 'love',\n", - " 'rollin rolling baby',\n", - " 'love',\n", - " 'roll it roll it baby',\n", - " 'oh u found me at casual',\n", - " 'casual darkness',\n", - " 'and i wanna call u my beautiful',\n", - " 'beautiful witness',\n", - " 'i know what u want',\n", - " '네 모든 상상 속에선',\n", - " 'let’s talk with with my body',\n", - " 'i know that u want it',\n", - " 'slowly baby',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'u and me',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'ooh ooh',\n", - " 'play me',\n", - " 'slowly slowly slowly baby',\n", - " 'sweaty sweaty sweaty baby',\n", - " 'slowly baby',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'u and me',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'ooh ooh',\n", - " 'play me',\n", - " 'slowly slowly slowly baby',\n", - " 'sweaty sweaty sweaty baby',\n", - " 'romanization',\n", - " 'cheoncheonhi deo gakkawojyeossji',\n", - " 'neol bwasseul ttae nan machi',\n", - " 'eorin sonyeo gatassji',\n", - " 'seodureul geot eopsi nan imi',\n", - " 'sumanheun yeojadeureul daesinhae already',\n", - " 'woo hoo baby',\n", - " 'naega ne nun ane maybe',\n", - " 'u know',\n", - " 'naran jonjae hanamaneurodo kkwak chage',\n", - " 'bamsae naran haengbogeul julge kkwak chage',\n", - " 'idaero uri',\n", - " 'dulmanui party like beullaekhol',\n", - " 'deo seolmyeonghaji anhado dwae',\n", - " 'u know we know oh',\n", - " 'i know what u want',\n", - " 'ne modeun sangsang sogeseon',\n", - " 'let’s talk with with my body',\n", - " 'i know that u want it',\n", - " 'slowly baby',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'u and me',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'ooh ooh',\n", - " 'play me',\n", - " 'slowly slowly slowly baby',\n", - " 'sweaty sweaty sweaty baby',\n", - " 'geurae na cheoncheonhi ganeun geol johahae',\n", - " 'mokjeokji seoljeonghae nan neo ane neo ane',\n", - " 'slowly',\n", - " 'igeon mak dalgo jja',\n", - " 'ttaminji kkurinji anim',\n", - " 'whipping cream',\n", - " 'your booty is like boomin',\n", - " 'so beautiful',\n", - " 'uri dul',\n", - " 'stop oh idaero uri',\n", - " 'dulmanui party like beullaekhol',\n", - " 'deo seolmyeonghaji anhado dwae',\n", - " 'u know we know oh',\n", - " 'i know what u want',\n", - " 'ne modeun sangsang sogeseon',\n", - " 'let’s talk with with my body',\n", - " 'i know that u want it',\n", - " 'slowly baby',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'u and me',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'ooh ooh',\n", - " 'play me',\n", - " 'slowly slowly slowly baby',\n", - " 'sweaty sweaty sweaty baby',\n", - " 'take it easy',\n", - " 'i’m the only one hope u know it baby',\n", - " 'i know u already crush on me',\n", - " 'love',\n", - " 'rollin rolling baby',\n", - " 'love',\n", - " 'roll it roll it baby',\n", - " 'oh u found me at casual',\n", - " 'casual darkness',\n", - " 'and i wanna call u my beautiful',\n", - " 'beautiful witness',\n", - " 'i know what u want',\n", - " 'ne modeun sangsang sogeseon',\n", - " 'let’s talk with with my body',\n", - " 'i know that u want it',\n", - " 'slowly baby',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'u and me',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'ooh ooh',\n", - " 'play me',\n", - " 'slowly slowly slowly baby',\n", - " 'sweaty sweaty sweaty baby',\n", - " 'slowly baby',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'u and me',\n", - " 'sweaty sweaty sweaty sweaty',\n", - " 'ooh ooh',\n", - " 'play me',\n", - " 'slowly slowly slowly baby',\n", - " 'sweaty sweaty sweaty baby',\n", - " 'girl',\n", - " '(i need a cha cha beat boy)',\n", - " 'girl, malhaejwo ne maeum baro jigeum',\n", - " 'baby gati ollagaja haneul wiro',\n", - " 'all i wanna do is kick it with you',\n", - " 'neoui mommae geurin geotman gata misul',\n", - " 'oneul uisangcheoreom ne maeumdo see-through',\n", - " 'all i wanna do is kick it with you (yeah, okay, yeah)',\n", - " 'girl mwoga jungyohanji baby baro malhaejulge',\n", - " 'na jigeum ocheonmanwonjjari sigye chatjiman',\n", - " 'naneun neoreul hwolssin akkiji babe',\n", - " 'nega wonhandamyeon an chalge',\n", - " 'heose ttawineun an tonghanikka',\n", - " 'uh, n eon jeongmal singihan yeoja',\n", - " 'nareul noryeokhage mandeunikka baby oh yeah',\n", - " 'uri durui bameul sangsanghaesseo girl all night',\n", - " \"mome tattooleul boyeojwo if it's alright\",\n", - " 'girl, malhaejwo ne maeum baro jigeum',\n", - " 'baby gati ollagaja haneul wiro',\n", - " 'all i wanna do is kick it with you',\n", - " 'neoui mommae geurin geotman gata misul',\n", - " 'oneul uisangcheoreom ne maeumdo see-through',\n", - " 'all i wanna do is kick it with you',\n", - " 'eotteokhae nae mame nega deureooryeo hae',\n", - " 'swipge ppajilkka bwa wiheomhae boyeo josimharyeo hal ttae',\n", - " 'eh, umjigyeojiji anha',\n", - " 'nal boneun ne siseoni nae momeul gama',\n", - " 'hanaro eolkhyeo neowa na',\n", - " 'ijebuteon amudo pulji moshae',\n", - " 'ppeonhaji anhge uyeongati manna baby',\n", - " 'seoroege nogadeureo',\n", - " 'oneulbam uri gibuneun jeo haneul gureum wi',\n", - " 'ne mome tatureul boyeojwo',\n", - " 'imi nae mameun junbidoeeoisseo',\n", - " '(i need a cha cha beat boy)',\n", - " 'boy, malhalge nae maeum baro jigeum',\n", - " 'geurae gati ollagaja haneul wiro',\n", - " 'all i wanna do is kick it with you',\n", - " 'nega wonhandaero nae daedabeun me too',\n", - " 'ijebuteo neol bureuge haejwo my boo',\n", - " 'all i wanna do is kick it with you',\n", - " \"naega hago sipeun modeun geot dwien ’neowa hamkke'ga saengryakdoeeo itji\",\n", - " 'yojeum ingi manheun gyopo oppadeulgwaneun dalla, kimchi hyanggiga baeeo itji',\n", - " 'deokbune nan mora, horangi (uh)',\n", - " 'taek dallin oseun bange ssahyeo gago isseo, bame ibeo, pyeonhage',\n", - " 'ijen neoneun na, naneun neoro gubun jitgo',\n", - " '\"all i wanna do\" rago malhae, pyeonhage (hey)',\n", - " 'neoui yeopjarireul sangsanghal geogo',\n", - " 'geugoseneun naega issge doel geoya',\n", - " 'geurigo neoe daehae jangdamhageondae',\n", - " 'mwodeun hal su isseul georago mitge doel geoya, uh',\n", - " 'girl, malhaejwo ne maeum baro jigeum (malhaejwo ne maeum baro jigeum)',\n", - " 'baby gati ollagaja haneul wiro (whoa)',\n", - " 'all i wanna do is kick it with you',\n", - " 'neoui mommae geurin geotman gata misul (uh)',\n", - " 'oneul uisangcheoreom ne maeumdo see-through',\n", - " 'all i wanna do is kick it with you',\n", - " \"it's aomg\",\n", - " 'seattle to seoul baby, woo!',\n", - " 'it’s everything you wanted, baby',\n", - " \"it's everything you wanted, baby\",\n", - " 'dream team, yeah',\n", - " 'hangul',\n", - " 'sunday morning',\n", - " '포근한 이불속에서 뜬 눈',\n", - " '날 감싸 안은 큰 손과 낮은 목소리',\n", - " 'i’m telling you',\n", - " '이 순간이 영원하면 좋겠어 everyday',\n", - " '너도 그렇길 we are fallin’',\n", - " '창 밖, 봄이 내린 땅 위에',\n", - " '넌 아름답기에 love, i love you',\n", - " '매일 아침',\n", - " '새로워지는 내 맘이',\n", - " '너로 가득 차',\n", - " 'maybe it’s love',\n", - " '지친 하루가 끝나면 기대라',\n", - " '말해주는 네게서',\n", - " '사랑을 배워 난',\n", - " '서툴지만 말할래 이제',\n", - " 'i’m so in love with you',\n", - " 'fallin’ fallin’ fallin’ fall in love',\n", - " 'fallin’ fallin’ fallin’ fall in love',\n", - " '넌 브런치를 만들어주겠다며 날 깨워',\n", - " 'someday, u and me',\n", - " '멀지않은 미래에',\n", - " 'i’m telling you',\n", - " '이 순간이 영원하면 좋겠어 everyday',\n", - " '너도 그렇길',\n", - " 'we are fallin’',\n", - " '창 밖, 봄이 내린 땅 위에',\n", - " '넌 아름답기에 love, i love you',\n", - " '매일 아침',\n", - " '새로워지는 내 맘이',\n", - " '너로 가득 차',\n", - " 'maybe it’s love',\n", - " '지친 하루가 끝나면 기대라',\n", - " '말해주는 네게서',\n", - " '사랑을 배워 난',\n", - " '서툴지만 말할래 이제',\n", - " 'i’m so in love with you',\n", - " 'fallin’ fallin’ fallin’ fall in love',\n", - " 'fallin’ fallin’ fall in love',\n", - " 'romanization',\n", - " 'sunday morning',\n", - " 'pogeunhan ibulsog-eseo tteun nun',\n", - " 'nal gamssa an-eun keun songwa naj-eun mogsoli',\n", - " 'i’m telling you',\n", - " 'i sungan-i yeong-wonhamyeon johgess-eo everyday',\n", - " 'neodo geuleohgil we are fallin’',\n", - " 'chang bakk, bom-i naelin ttang wie',\n", - " 'neon aleumdabgie love, i love you',\n", - " 'maeil achim',\n", - " 'saelowojineun nae mam-i',\n", - " 'neolo gadeug cha',\n", - " 'maybe it’s love',\n", - " 'jichin haluga kkeutnamyeon gidaela',\n", - " 'malhaejuneun negeseo',\n", - " 'salang-eul baewo nan',\n", - " 'seotuljiman malhallae ije',\n", - " 'i’m so in love with you',\n", - " 'fallin’ fallin’ fallin’ fall in love',\n", - " 'fallin’ fallin’ fallin’ fall in love',\n", - " 'neon beuleonchileul mandeul-eojugessdamyeo nal kkaewo',\n", - " 'someday, u and me',\n", - " 'meoljianh-eun milaee',\n", - " 'i’m telling you',\n", - " 'i sungan-i yeong-wonhamyeon johgess-eo everyday',\n", - " 'neodo geuleohgil',\n", - " 'we are fallin’',\n", - " 'chang bakk, bom-i naelin ttang wie',\n", - " 'neon aleumdabgie love, i love you',\n", - " 'maeil achim',\n", - " 'saelowojineun nae mam-i',\n", - " 'neolo gadeug cha',\n", - " 'maybe it’s love',\n", - " 'jichin haluga kkeutnamyeon gidaela',\n", - " 'malhaejuneun negeseo',\n", - " 'salang-eul baewo nan',\n", - " 'seotuljiman malhallae ije',\n", - " 'i’m so in love with you',\n", - " 'fallin’ fallin’ fallin’ fall in love',\n", - " 'fallin’ fallin’ fall in love']},\n", - " 'rap': {'meta': {'train_data': ['plling – labedey subedey',\n", - " 'hambel? humedey hadadey',\n", - " 'kada strring hata – hums fufufu',\n", - " 'iseda chachacah sum chochochoch',\n", - " 'kakadeka kakadera',\n", - " 'sepa schprrrr van grrrr sanana',\n", - " 'quik – banananafama hui',\n", - " 'orsons sprgrsä sabasdei',\n", - " 'samana pfui?',\n", - " 'da strutzn hutzn lutzn rutzn',\n", - " 'katastumpfn hui',\n", - " 'pispapüt üt üt',\n", - " 'maeckes pletto lüt lüt',\n", - " 'süt',\n", - " 'lola ah draschri karadschni',\n", - " 'afickaplu – ja, batta fali (colle)',\n", - " 'opaschita uuh katapau',\n", - " '(chacha) chiicha (pah!)',\n", - " 'sup pelepö chob batta fredsch dro (klola)',\n", - " 'lolja daszählt battafrä do – pola',\n", - " 'grabedschie',\n", - " 'frag mich nicht',\n", - " 'bled tschevie',\n", - " 'orsons',\n", - " 'ah – kappatschref kappatschruw',\n", - " 'pah! chop walapow letsträ – haa',\n", - " 'copplä tscha psiu',\n", - " 'forfack uäh?',\n", - " 'psiu – uäh?',\n", - " 'psiu – uäh?',\n", - " 'oida, wenn i sog uii',\n", - " 'sogts ihr gay',\n", - " 'uii – gay?',\n", - " 'uii – gay?',\n", - " 'orsons orsons orsons orsons orsons',\n", - " 'orsons orsons orsons orsons orsons',\n", - " 'orsons orsons orsons orsons orsons',\n", - " 'orsons orsons orsons orsons yakeey!',\n", - " 'haki kimba',\n", - " 'hanti kula pade',\n", - " 'pasek zawi',\n", - " 'fatzf tsat kratsa futawa',\n", - " 'halla ku sammakuschi pa satapiv',\n", - " 'sekra sek patsch mezzi kenimi?',\n", - " 'hattabrill jetta zettabi gellari',\n", - " 'pennahis cossa behama beta ti?',\n", - " 'tati tatü tata',\n", - " 'breaks my heart',\n", - " 'dance',\n", - " 'tick – muneldemuns',\n", - " 'pit – muneldemuns',\n", - " 'plitzt di blickt ni nick mundeldemuns',\n", - " 'buneldemuns buneldemuns',\n", - " 'penas vagana',\n", - " 'andrea dragana',\n", - " 'petra vatertag (achso)',\n", - " 'flicflacenem packenem tackenem buckimham',\n", - " 'gehirnamputakinem',\n", - " 'plack',\n", - " 'plaque karies',\n", - " 'prrrrr ade es',\n", - " 'knabensechs – hihihi',\n", - " 'abe es',\n", - " 'muneldemuns',\n", - " 'copplä tscha psiu',\n", - " 'forfack uäh?',\n", - " 'psiu – uäh?',\n", - " 'psiu – uäh?',\n", - " 'oida, wenn i sog uii',\n", - " 'sogts ihr gay',\n", - " 'uii – gay?',\n", - " 'uii – gay?',\n", - " 'orsons orsons orsons orsons orsons',\n", - " 'orsons orsons orsons orsons orsons',\n", - " 'orsons orsons orsons orsons orsons',\n", - " 'orsons orsons orsons orsons yakeey!',\n", - " 'man, 이건 진짜 first page',\n", - " '무언가를 이루고자 무언가를 걸 때',\n", - " 'aw, man, aw, man',\n", - " '새끼들아 better realize me',\n", - " '2016년에 real rising',\n", - " '내 음악은 너희들한테는',\n", - " '현대미술같이 다가오지',\n", - " '너도 할 수 있을거 같다며',\n", - " 'why don’t you do it',\n", - " 'motherfuckers it’s time just do some',\n", - " '말만 하다가는 더 늦어',\n", - " '또 난 내 자리는 피해주기 싫어',\n", - " '그렇다고 누구한테도 피해주기 싫어',\n", - " 'but 아빠 said',\n", - " '피해를 보더라도 현명하게',\n", - " '가끔은 피해를 보는 게 더 현명하대, word',\n", - " '그래서 나는 그저 down for my people',\n", - " 'yelows mob fucker 우린 전부 비보호',\n", - " 'get my ammo right click clack reload',\n", - " 'get my ammo and shoot it and i reload',\n", - " '그래서 나는 그저 down for my people',\n", - " 'yelows mob fucker 우린 전부 비보호',\n", - " 'get my ammo right click clack reload',\n", - " 'get my ammo and shoot it and i reload',\n", - " 'zero fucks given',\n", - " 'zero fucks is given',\n", - " '지금 내 기분',\n", - " 'zero fucks given',\n", - " 'zero fucks is given',\n", - " '지금 내 기분',\n", - " 'zero fucks is given',\n", - " 'zero fucks is given',\n", - " '지금 내 기분',\n", - " 'zero fuck zero fuck',\n", - " 'zero fucks is given',\n", - " 'zero fucks is given',\n", - " 'zero fucks is given',\n", - " 'zero fucks is given',\n", - " 'zero fucks is given',\n", - " 'romanization',\n", - " 'mueongaleul ilugoja mueongaleul geol ttae',\n", - " 'aw man, aw man',\n", - " 'saekkideul-a better realize me',\n", - " '2016nyeon-e real rising',\n", - " 'nae eum-ag-eun neohuideulhanteneun',\n", - " 'hyeondaemisulgat-i dagaoji',\n", - " 'neodo hal su iss-eulgeo gatdamyeo',\n", - " 'why don’t you do it',\n", - " 'motherfuckers it’s time just do some',\n", - " 'malmanhadaganeun deo neuj-eo',\n", - " 'tto nan nae jalineun pihaejugisilh-eo',\n", - " 'geuleohdago nuguhantedo pihaejugisilh-eo',\n", - " 'but appa said',\n", - " 'pihaeleul bodeolado hyeonmyeonghage',\n", - " 'gakkeum-eun pihaeleul boneunge',\n", - " 'deo hyeonmyeonghadae word',\n", - " 'geulaeseo naneun geujeo down for my people',\n", - " 'yelows mob fucker ulin jeonbu biboho',\n", - " 'get my ammo right click clack reload',\n", - " 'get my ammo and shoot it and i reload',\n", - " 'geulaeseo naneun geujeo down for my people',\n", - " 'yelows mob fucker ulin jeonbu biboho',\n", - " 'get my ammo right click clack reload',\n", - " 'get my ammo and shoot it and i reload',\n", - " 'zero fucks given',\n", - " 'zero fucks is given',\n", - " 'jigeum nae gibun',\n", - " 'zero fucks given',\n", - " 'zero fucks is given',\n", - " 'jigeum nae gibun',\n", - " 'zero fucks is given',\n", - " 'zero fucks is given',\n", - " 'jigeum nae gibun',\n", - " 'zero fuck zero fuck',\n", - " 'zero fucks is given',\n", - " 'zero fucks is given',\n", - " 'zero fucks is given',\n", - " 'zero fucks is given',\n", - " 'zero fucks is given',\n", - " 'korean',\n", - " 'ㅤ',\n", - " \"i've been tossing turnin' up all night (all night)\",\n", - " '나도 왠지 이유는 잘 몰라 (no)',\n", - " \"생각이 많은지 배가 고픈건지 i don't know\",\n", - " \"어찌 됐든 간에 i'm alright\",\n", - " \"(no, i'm not alright)\",\n", - " '한순간에 바뀐 진로',\n", - " '그 후로 발걸음 옮겼지, 다른 길로',\n", - " '내겐 가끔 위로가 필요해서 난 기도로 빌어보곤 했지',\n", - " 'i be making sure that (he knows)',\n", - " \"making sure that all my problems don't turn into troubles\",\n", - " \"that it's all a piece of the puzzle\",\n", - " '다 계획됐다는 것을',\n", - " '울 엄마 알람은 새벽같이 buzzin',\n", - " \"5 o clock in the mornin' (mornin')\",\n", - " '쉬지 않는 새벽기도',\n", - " '때론 좀 많이 외롭기도 할 거야',\n", - " '꼭 잘되고 말 거야 for my mama and father (i love you)',\n", - " '밥 챙겨 먹냐 라는 카톡이 와도',\n", - " \"바로 답장 못 하는 이윤 'cause i be hustlin' harder\",\n", - " \"i still don't know how to use my cuckoo\",\n", - " \"(i don't know, i don't know how to use)\",\n", - " \"i still don't know how to use my cuckoo (cuckoo)\",\n", - " \"but it's all good (it's real good)\",\n", - " 'i never wanna waste no time (nah)',\n", - " 'no, i never wanna waste no time (nah)',\n", - " 'no luxury of homemade rice',\n", - " 'listen 내 주위엔 내 웰빙을 걱정해주는 애들이 많지',\n", - " '가끔 보면 정말 나에겐',\n", - " 'lots of blessings on blessings',\n", - " 'counting my lessons on lessons',\n", - " '또 작은 일까지 감사하는 습관이 뱄어',\n", - " 'all things are good (amen)',\n", - " 'oh, things are fine',\n", - " '나이 들수록 짧아지는 입',\n", - " '그건 다 밥통처럼 차오르는',\n", - " '내 머릿속 늘 피곤해져',\n", - " 'what are we gonna do? ooh-ooh-ooh-ooh (what?)',\n", - " '전엔 자주하던 설거지 (true)',\n", - " '요샌 바쁘다고 못 하지',\n", - " '근데 그게 차라리 나아, 나 아직 갈 길이 많아 (whoa)',\n", - " '밖에서 김밥으로 때울게 2000원치',\n", - " '아직 난 배고파',\n", - " '지금 허기가 비워진 배에서부터',\n", - " '나오는 것인 아닌 choosing life and death in this music',\n", - " \"yeah, it's do or die or do or die or do or die\",\n", - " \"i still don't know how to use my cuckoo\",\n", - " \"(i don't know, i don't know how to use)\",\n", - " \"i still don't know how to use my cuckoo (cuckoo)\",\n", - " \"but it's all good (it's real good)\",\n", - " 'i never wanna waste no time (nah)',\n", - " 'no, i never wanna waste no time (never)',\n", - " 'no luxury of homemade rice',\n", - " '밥 한 끼쯤은 굶어도 난 괜찮아',\n", - " '살 빠지고 좋지 뭐',\n", - " \"발 뻗고 잠 못 자도 baby, it's alright\",\n", - " '바빠지고 좋지 뭐',\n", - " '밥 한 끼쯤은 굶어도 난 괜찮아',\n", - " '살 빠지고 좋지 뭐',\n", - " \"발 뻗고 잠 못 자도 baby, it's alright\",\n", - " '바빠지고 좋지 뭐',\n", - " 'romanization',\n", - " \"i've been tossing turning up all night\",\n", - " 'nado waenji iyuneun jal molla',\n", - " \"saeng-gag-i manh-eunji baega gopeungeonji i don't know\",\n", - " \"eojji dwaessdeun gan-e i'm alright\",\n", - " \"no, i'm not alright\",\n", - " 'hansungan-e bakkwin jinlo',\n", - " 'geu hulo balgeol-eum olmgyeossji, daleun gillo',\n", - " 'naegen gakkeum wiloga pil-yohaeseo nan gidolo bil-eobogon haessji',\n", - " 'i be making sure that',\n", - " 'he knows',\n", - " \"making sure that all my problems don't turn into troubles\",\n", - " \"that it's all a piece of the puzzle\",\n", - " 'da gyehoegdwaessdaneun geos-eul',\n", - " 'ul eomma allam-eun saebyeoggat-i buzzin',\n", - " '5 o clock in the mornin',\n", - " 'swiji anhneun saebyeoggido',\n", - " 'ttaelon jom manh-i oelobgido hal geoya',\n", - " 'kkog jaldoego mal geoya for my mama and father',\n", - " 'bab chaeng-gyeo meognya laneun katog-i wado',\n", - " 'balo dabjang mos haneun iyun cus i be hustlin harder',\n", - " \"i still don't know how to use my cuckoo\",\n", - " \"(i don't know, i don't know how to use)\",\n", - " \"i still don't know how to use my cuckoo (cuckoo)\",\n", - " \"but it's all good (it's all good)\",\n", - " 'i never wanna waste no time (nah)',\n", - " 'no i never wanna waste no time (nah)',\n", - " 'no luxury of homemade rice',\n", - " 'nae juwien nae welbing-eul geogjeonghaejuneun aedeul-i manhji',\n", - " 'gakkeum bomyeon jeongmal na-egen',\n", - " 'lots of blessings on blessings',\n", - " 'counting my lessons on lessons',\n", - " 'tto jag-eun ilkkaji gamsahaneun seubgwan-i baess-eo',\n", - " 'all things are good',\n", - " 'oh things are fine',\n", - " 'nai deulsulog jjalb-ajineun ib',\n", - " 'geugeon da babtongcheoleom chaoleuneun',\n", - " 'nae meolis-sog neul pigonhaejyeo',\n", - " 'what are we gonna do?',\n", - " 'jeon-en jajuhadeon seolgeoji',\n", - " 'yosaen bappeudago mos haji',\n", - " 'geunde geuge chalali naa, na ajig gal gil-i manh-a',\n", - " 'bakk-eseo gimbab-eulo ttaeulge 2000wonchi',\n", - " 'ajig nan baegopa',\n", - " 'jigeum heogiga biwojin baeeseobuteo',\n", - " 'naoneun geos-in anin choosing life and death in this music',\n", - " \"yeah it's do or die or do or die or do or die\",\n", - " \"i still don't know how to use my cuckoo\",\n", - " \"(i don't know, i don't know how to use)\",\n", - " \"i still don't know how to use my cuckoo (cuckoo)\",\n", - " \"but it's all good (it's all good)\",\n", - " 'i never wanna waste no time (nah)',\n", - " 'no i never wanna waste no time (never)',\n", - " 'no luxury of homemade rice',\n", - " 'bab han kkijjeum-eun gulm-eodo nan gwaenchanh-a',\n", - " 'sal ppajigo johji mwo (johji mwo)',\n", - " \"bal ppeodgo jam mos jado baby it's alright\",\n", - " 'bappajigo johji mwo (johji mwo, mm)',\n", - " 'bab han kkijjeum-eun gulm-eodo nan gwaenchanh-a',\n", - " \"sal ppajigo johji mwo (it's all good)\",\n", - " \"bal ppeodgo jam mos jado baby it's alright\",\n", - " 'bappajigo johji mwo',\n", - " 'korean',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(like i got so many chopper)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(and it goes shot shot shot shot)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(like i got so many chopper)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(and it goes shot shot shot shot)',\n", - " 'yeah shot shot take a shot',\n", - " 'like i got a chopper gunner',\n", - " 'turn it up like i’m rambo',\n", - " '술에 뛰어들어 술에 쩔어',\n", - " 'hol’up hol’up hol’up hol’up',\n", - " '우린 아직 어려 잠에 들기에는 젊어',\n", - " '어서 보드카에 juice를 섞어',\n", - " '[hook: sik-k)',\n", - " 'young boys but we sippin on that champagne',\n", - " '오늘 밤엔 we don’t care bout damn thang',\n", - " '흥청망청 신사임당 king 세종',\n", - " '흥청망청 신사임당 king 세종',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(like i got so many chopper)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " 'and it goes shot shot shot shot',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(like i got so many chopper)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(and it goes shot shot shot shot)',\n", - " 'young shot callers, yeah we go loud',\n", - " 'but we gon go much louder',\n", - " '왜냐면 젊음은 짧어',\n", - " 'my whole crew turn it up 안 피곤하지',\n", - " '술을 마셔 우리 머릿 속은 미로 같기에',\n", - " 'now we be mobbin’ 우리는 이 밤이',\n", - " '끝나는거따윈 신경쓰지않지',\n", - " 'tonight is the night so what we do is party',\n", - " 'what we do is 혼자 온 여자들 찾기',\n", - " '친구들끼리 온 여자들 같이해',\n", - " '나랑 내 친구들이 맞이해',\n", - " '우린 몸을 술처럼 섞을 테니까',\n", - " 'blame it on alcohol, jamie foxx',\n", - " 'young boys but we sippin on that champagne',\n", - " '오늘 밤엔 we don’t care bout damn thing',\n", - " '흥청망청 신사임당 king 세종',\n", - " '흥청망청 신사임당 king 세종',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(like i got so many chopper)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(and it goes shot shot shot shot)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(like i got so many chopper)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " 'and it goes shot shot shot shot',\n", - " 'a shot of the henney, ohh ohh',\n", - " 'aomg that my team, yeah crew crew',\n", - " 'who is he 도대체 쟤는 누구',\n", - " '박재범 한달에 술값 천만원 난 술꾼',\n", - " '다음날 후회 할 것은 분명해',\n", - " '그래도 난 너의 몸매를 구경해',\n", - " '이리와 baby 같이 한잔해',\n", - " '네 놀이터 내 위에 올라타 baby',\n", - " 'i celebrate celebrate with my team',\n", - " '다 같이 올라가고 향해 성공의길',\n", - " 'sik-k future baller flex on them kids',\n", - " 'i’m poppin these bottles',\n", - " 'i’m with all these models',\n", - " 'full throttle on you and your friends',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(like i got so many chopper)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(and it goes shot shot shot shot)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(like i got so many chopper)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(and it goes shot shot shot shot)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(like i got so many chopper)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(and it goes shot shot shot shot)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(like i got so many chopper)',\n", - " '알코올은 싫지만 주면 마실 수 밖에',\n", - " '(and it goes shot shot shot shot)',\n", - " 'romanization',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(like i got so many chopper)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(and it goes shot shot shot shot)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(like i got so many chopper)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(and it goes shot shot shot shot)',\n", - " 'yeah shot shot take a shot',\n", - " 'like i got a chopper gunner',\n", - " 'turn it up like i’m rambo',\n", - " 'sul-e ttwieodeul-eo sul-e jjeol-eo',\n", - " 'hol’up hol’up hol’up hol’up',\n", - " 'ulin ajig eolyeo jam-e deulgieneun jeolm-eo',\n", - " 'eoseo bodeuka-e juiceleul seokk-eo',\n", - " '[hook: sik-k)',\n", - " 'young boys but we sippin on that champagne',\n", - " 'oneul bam-en we don’t care bout damn thang',\n", - " 'heungcheongmangcheong sinsaimdang king sejong',\n", - " 'heungcheongmangcheong sinsaimdang king sejong',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(like i got so many chopper)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " 'and it goes shot shot shot shot',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(like i got so many chopper)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(and it goes shot shot shot shot)',\n", - " 'young shot callers, yeah we go loud',\n", - " 'but we gon go much louder',\n", - " 'waenyamyeon jeolm-eum-eun jjalb-eo',\n", - " 'my whole crew turn it up an pigonhaji',\n", - " 'sul-eul masyeo uli meolis sog-eun milo gatgie',\n", - " 'now we be mobbin’ ulineun i bam-i',\n", - " 'kkeutnaneungeottawin singyeongsseujianhji',\n", - " 'tonight is the night so what we do is party',\n", - " 'what we do is honja on yeojadeul chajgi',\n", - " 'chingudeulkkili on yeojadeul gat-ihae',\n", - " 'nalang nae chingudeul-i maj-ihae',\n", - " 'ulin mom-eul sulcheoleom seokk-eul tenikka',\n", - " 'blame it on alcohol, jamie foxx',\n", - " 'young boys but we sippin on that champagne',\n", - " 'oneul bam-en we don’t care bout damn thing',\n", - " 'heungcheongmangcheong sinsaimdang king sejong',\n", - " 'heungcheongmangcheong sinsaimdang king sejong',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(like i got so many chopper)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(and it goes shot shot shot shot)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(like i got so many chopper)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " 'and it goes shot shot shot shot',\n", - " 'a shot of the henney, ohh ohh',\n", - " 'aomg that my team, yeah crew crew',\n", - " 'who is he dodaeche jyaeneun nugu',\n", - " 'bagjaebeom handal-e sulgabs cheonman-won nan sulkkun',\n", - " 'da-eumnal huhoe hal geos-eun bunmyeonghae',\n", - " 'geulaedo nan neoui mommaeleul gugyeonghae',\n", - " 'iliwa baby gat-i hanjanhae',\n", - " 'ne nol-iteo nae wie ollata baby',\n", - " 'i celebrate celebrate with my team',\n", - " 'da gat-i ollagago hyanghae seong-gong-uigil',\n", - " 'sik-k future baller flex on them kids',\n", - " 'i’m poppin these bottles',\n", - " 'i’m with all these models',\n", - " 'full throttle on you and your friends',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(like i got so many chopper)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(and it goes shot shot shot shot)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(like i got so many chopper)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(and it goes shot shot shot shot)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(like i got so many chopper)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(and it goes shot shot shot shot)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(like i got so many chopper)',\n", - " 'alkool-eun silhjiman jumyeon masil su bakk-e',\n", - " '(and it goes shot shot shot shot)',\n", - " 'layrhm li mat ytl9 sra7 radi o bhalo',\n", - " 'cha3b parole taygidi o ygrati gdam l kanon',\n", - " 'kola o blano hnaya swal7 m3a rab7a o lmojod',\n", - " 'b nidal s3aya nta machi mn da7iya tam3 lojo2',\n", - " 'o 7na b9ina fstreet frontline ga3 lfossol',\n", - " 'kolchi chari tabot ta7d maymni mor motna',\n", - " 'omerta ti9a f sbrdila njr gdam l cocot',\n", - " 'f zn9a cnss hip hop culture ma3ndich compte',\n", - " 'netflix rap ki lwa7y ta7 bach nzid nbombi',\n", - " 'sb7anllah fkola ster sms bgjami mnfoundi',\n", - " 'tal 9a3 habt ntagi nab fake fuck solta o les flics',\n", - " '3awd lkrk tanta la 39ti b3icha matrix ok',\n", - " 'ana ra daakhl sou9i ghi s9ina dem',\n", - " 'rap o chira tassa lkina f rassi tjdeb',\n", - " 'l3chran galo lacha dar galo chi 3wina tem',\n", - " 'walo sold glbna 69 drbna denya gdem',\n", - " 'my life koula nhar kadouz bhal chi d9i9a katjri fast',\n", - " 'ghi lbare7 passili kora , lyouma sahbi koubli kass',\n", - " 'kanchouf ki kant denya simple malha tcomplicat',\n", - " 'bnadem bach ydir fiha kber kinsa ga3 dakchi li fat',\n", - " 'dmaghi m9bara ch7al men fikra matet 9bel matzad',\n", - " '7regna dikrayat b drug sghar ba9i fina ghi lfant',\n", - " '7yatna kant , wer9a vierge pleine bdehk m3a l3chran',\n", - " 'daba la fwejhek dhek chi flan katgol yakma kayn chi blan',\n", - " 'te7 enpane fseka dial chi 9erd ydouz fik ki chi train',\n", - " 'rbitouna kan3bdo lah , l9inakoum kt3bdo drahm',\n", - " 'gama b9it fahem chnou kitra , l9wada mdgouga m3a libra',\n", - " 'drog f zn9a chkoun li bgha , khellat l39oula mkhiibra',\n", - " 'drari m9emra 3la 7yatha byed wla k7el ki zebra',\n", - " 'lmima weldha dab fl mel7 ba9a katsena chi bra',\n", - " 'ma7dbi fblad wlad l97ab ara chi ntra , wkoub lia nchrab',\n", - " 'khalaya li fdmaghi wlaw talbin chra3',\n", - " 'ma3ndi kindir mn soghri kansma3 ghi ngiir xico hbil!',\n", - " 'maymchich balk b3id ghandrabk ghi blkhir',\n", - " 'kbart o dfant 3aibi fbir fkola star dm kisil',\n", - " 'drari 3arfini chkandir nefs lcode nhar o lil',\n", - " \"mrid jib chi contenaire kan9si l'kick o'snare\",\n", - " 'fuck lmise en scene 7atina lgraffiti f la rhyme',\n", - " 'filter west la gaine kantal3o lbareme',\n", - " 'wkha ydwi l9arin 3alim zn9awi fla guerre',\n", - " 'machi ana li mabghitch sifti tkamoflat bcapuche',\n", - " 'kla star 3ando preuve 7arf dlkdoub makaydimch',\n", - " 'makharjnach mn nefs roots baghi n3ich mor lmout',\n", - " 'da7kna khayb o fat lfout 3demt sora o7kamt sout',\n", - " 'lkabt ljahel ki tachyer tobus kidi dzayr',\n", - " 'lay7 snarti 3tini ghi rass lmal mabghitch lmlayr',\n", - " 'nmout khfif bla dnoub bach jay bach dayr',\n", - " 'skhit bdenia bghit n7ass brassi khfif wana tayr',\n", - " '9raw li fnjani chafo 3ini darbo tam',\n", - " 'ba9i ma brawli drabi tsawr lgi7 o dem',\n", - " 'tab3ini f n3assi mabghatch tssali ded',\n", - " 'ana o hbali machatt walo ghi rrrdem',\n", - " 'glbi fin tasa tatbred chrbti ota degoti',\n", - " 'khayb solo ch7al mn 9rd gdam jmhoro yban beauty',\n", - " 'madwitch b7omti la l3a9t mama la 3issaba',\n", - " 'tarssm brap damar o cherr nab mktaba',\n", - " 'ina mo9rar hada ra kayn fl plakare',\n", - " 'ktrt ma khmage o 7ayl nssina n3awdo la cart',\n", - " 'mrad khouya madorch 7dana la t infekta bina',\n", - " '55 planet fuck lgrammy ba9i ki bdina',\n", - " 'ghi mtl3inha 3la walo ob9ina fidel',\n", - " 'hadchi twal ga3 nhar casck mic ki sitel',\n", - " 'b9owt rassi madrb fl beat 9ssa7tli tibi',\n", - " 'ktabti puzzl at79d la3rfiti ana fini',\n", - " '3chiri tlebha kbira ,lsan li kidikali dirlo jbira',\n", - " 'makansa tahaja bla modkira, wga3ma kankhaf nnmot sghir',\n", - " 'ta rani kaber f9ont chirrir , 3alam khor fash kayte7 lil',\n", - " 'mouka w 7adya jnabha tamen chorta katnkra f street',\n", - " 'l9wada foug kola beat , reprezent the east',\n", - " 'frap kaniki lboombap hit topline jani easy',\n", - " 'clasick 7at the curse fog instru lazy jesus',\n", - " 'we dont need nobody , ydk f akbr penis',\n", - " 'makans3aw ta 9ard hit blastna tteht l ard',\n", - " 'l7ej 3dna fl bronx , lktaba 3ndna fard',\n", - " 'm3ak jdour li underground ntouma lli lfo9 chouk olward',\n", - " 'lou7 nard 55 la clique , kola mera ghayji fik chi face',\n", - " 'ch7al men motherfuck ,ja fog rasso vaze',\n", - " 'drouba 3dna sauvage men sghor fuck the cops',\n", - " 'showing love , acab fkoula tag',\n", - " 'fzen9a fach kay7dro zbot kanst7la kola taff',\n", - " 'fay9 kan7lam, kantchlel f daya dyal sem',\n", - " 'kolchi krem fyedi stylo lmdad mkabed kidem',\n", - " 'makayn la rap la gmel yeekh bdit kanamel *',\n", - " \"bnadem f'sic mundus ztem lmakhyer fikoum bda yzmel\",\n", - " 'sakn f dmaghi kandmer sad bab dar blama tsmer',\n", - " 'ana w3chrani t9abna lcarnet kolo mcharger blma3den',\n", - " \"abbran kali lbrrani dag l'underground blibari\",\n", - " 'gama ghanfrani aprat street scentists trust nobody',\n", - " 'dow tafi couplet kafi bach lachi ay racist',\n", - " \"ktaba mn9a3 l'afric 7at hiphop illmatic\",\n", - " \"binatna ch7al mn disc ch7al mn pist life's risk\",\n", - " 'brahch 9sar mn litro 9balt lmicro zah9o ch7l mn kick',\n", - " 'frge3 lclik hada jahdbna 3la smig',\n", - " 'kolchi ki ban lih lculture tarf dlkhobz ozit',\n", - " 'btarjlit kola ysed 3la karo f bit salit lktaba',\n", - " 'flwer9a rmit kansaynk tgoli ghir brit yo !',\n", - " 'woogie on and on',\n", - " 'i can love you like forever, yeah, yeah, yeah',\n", - " 'my love is on fuego, yeah, yeah',\n", - " '아마 영원히 난 너 없인',\n", - " '이젠 안돼, cause i don’t like that',\n", - " 'cause i',\n", - " 'loving you till the end like xyz',\n", - " 'loving you till the end like xyz',\n", - " '끝날 때까지 like xyz',\n", - " 'loving you till the end like xyz',\n", - " 'xyz-z-z',\n", - " 'you like being with me',\n", - " \"i’m makin' hitlist, hitlist\",\n", - " \"good life i’m livin' it\",\n", - " '널 만났고 이젠 만족해',\n", - " '끝날 때까지 너를 붙잡아 볼게, yeah',\n", - " 'xyz-z-z, yeah, yeah, yeah, yeah, till the end',\n", - " '너도 같은 생각이라면',\n", - " '정확히 you feel this way',\n", - " 'cause i need you really really bad',\n", - " 'you also need me babe',\n", - " '끝이라는 곳의 끝자락에서',\n", - " 'you can meet me there',\n", - " 'i’m not perfect',\n", - " '그래서 나는 노력해, yeah',\n", - " 'keep it one hunnit',\n", - " '내가 죽는 날까지',\n", - " 'keep it one hunnit',\n", - " '너도 나를 알잖아',\n", - " '시작을 했으면 끝을 봐야 하지',\n", - " 'yeah, i don’t need nuthin but you',\n", - " 'yeah',\n", - " 'i can love you like forever, yeah, yeah, yeah',\n", - " 'my love is on fuego, yeah, yeah',\n", - " '아마 영원히 난 너 없인',\n", - " '이젠 안돼, cause i don’t like that',\n", - " 'cause i',\n", - " 'loving you till the end like xyz',\n", - " 'loving you till the end like xyz',\n", - " '끝날 때까지 like xyz',\n", - " 'loving you till the end like xyz',\n", - " 'xyz with you',\n", - " '너의 이야기지 내 노랜',\n", - " '넌 나의 insipiration',\n", - " '다른 여자들은 make no sense',\n", - " 'my mama likes you',\n", - " 'so you can be my wife too',\n", - " 'so we can hit up cancun',\n", - " 'happy ending, game 끝',\n", - " '난 지쳐',\n", - " '너 때문이 아니라',\n", - " '지루한 놈들이 몇 있어',\n", - " '이유 없이 나를 싫어해서',\n", - " '매번 망치려고 하지 내 vision',\n", - " '따라 올 수 있겠냐고',\n", - " '나랑 내 식구들의 ambition',\n", - " 'cause we on mission killer',\n", - " 'but i’m not perfect',\n", - " 'unlike my girlfriend',\n", - " '네 눈에 fallin 네 폰에 callin',\n", - " 'yeah yeah yeah yeah yeah yeah yeah',\n", - " 'yeah yeah yeah',\n", - " 'i can love you like forever, yeah, yeah, yeah',\n", - " 'my love is on fuego, yeah, yeah',\n", - " '아마 영원히 난 너 없인',\n", - " '이젠 안돼, cause i don’t like that',\n", - " 'cause i',\n", - " 'loving you till the end like xyz',\n", - " 'loving you till the end like xyz',\n", - " '끝날 때까지 like xyz',\n", - " 'loving you till the end like xyz',\n", - " 'romanization',\n", - " 'i can love you like forever',\n", - " 'yeah yeah yeah',\n", - " 'my love is on fuego yeah yeah',\n", - " 'ama yeongwonhi',\n", - " 'nan neo eopsin',\n", - " 'ijen andwae',\n", - " 'cause i don’t like that',\n", - " 'cause i',\n", - " 'loving you till the end like xyz',\n", - " 'loving you till the end like xyz',\n", - " 'kkeutnal ttaekkaji like xyz',\n", - " 'loving you till the end like xyz',\n", - " 'xyz z z',\n", - " 'you like being with me',\n", - " 'i’m makin hitlist hitlist',\n", - " 'good life i’m livin it',\n", - " 'neol mannassgo ijen manjokhae',\n", - " 'kkeutnal ttaekkaji neoreul butjaba bolge yeah',\n", - " 'xyz z z',\n", - " 'yeah yeah yeah yeah till the end',\n", - " 'neodo gateun saenggagiramyeon',\n", - " 'jeonghwakhi you feel this way',\n", - " 'cause i need you really really bad',\n", - " 'you also need me babe',\n", - " 'kkeutiraneun gosui kkeutjarageseo',\n", - " 'you can meet me there',\n", - " 'i’m not perfect',\n", - " 'geuraeseo naneun noryeokhae yeah',\n", - " 'keep it one hunnit',\n", - " 'naega jukneun nalkkaji',\n", - " 'keep it one hunnit',\n", - " 'neodo nareul aljanha',\n", - " 'sijageul haesseumyeon kkeuteul bwaya haji',\n", - " 'yeah i don’t need nuthin but you',\n", - " 'yeah',\n", - " 'i can love you like forever',\n", - " 'yeah yeah yeah',\n", - " 'my love is on fuego yeah yeah',\n", - " 'ama yeongwonhi',\n", - " 'nan neo eopsin',\n", - " 'ijen andwae',\n", - " 'cause i don’t like that',\n", - " 'cause i',\n", - " 'loving you till the end like xyz',\n", - " 'loving you till the end like xyz',\n", - " 'kkeutnal ttaekkaji like xyz',\n", - " 'loving you till the end like xyz',\n", - " 'xyz with you',\n", - " 'neoui iyagiji nae noraen',\n", - " 'neon naui insipiration',\n", - " 'dareun yeojadeureun make no sense',\n", - " 'my mama likes you',\n", - " 'so you can be my wife too',\n", - " 'so we can hit up cancun',\n", - " 'happy ending geim kkeut',\n", - " 'nan jichyeo',\n", - " 'neo ttaemuni anira',\n", - " 'jiruhan nomdeuri myeot isseo',\n", - " 'iyu eopsi nareul silheohaeseo',\n", - " 'maebeon mangchiryeogo haji nae vision',\n", - " 'ttara ol su issgessnyago',\n", - " 'narang nae sikgudeurui ambition',\n", - " 'cause we on mission killer',\n", - " 'but i’m not perfect',\n", - " 'unlike my girlfriend',\n", - " 'ne nune fallin ne pone callin',\n", - " 'yeah yeah yeah yeah yeah yeah yeah',\n", - " 'yeah yeah yeah',\n", - " 'i can love you like forever',\n", - " 'yeah yeah yeah',\n", - " 'my love is on fuego yeah yeah',\n", - " 'ama yeongwonhi',\n", - " 'nan neo eopsin',\n", - " 'ijen andwae',\n", - " 'cause i don’t like that',\n", - " 'cause i',\n", - " 'loving you till the end like xyz',\n", - " 'loving you till the end like xyz',\n", - " 'kkeutnal ttaekkaji like xyz',\n", - " 'loving you till the end like xyz',\n", - " 'paroles de amine 16-3 feat ghetto star & l\\'morphine \"jakom\"',\n", - " 'hadchi 3ajib, haha ha ha',\n", - " '16-3, huh, ey',\n", - " 'trapaholic real trap shit',\n", - " 'ja ja ja jakom li taygol klam face wakha f wejho weld nas',\n", - " 'da da da daz men droub dlam chaf lwli 7ta tab w chab rass',\n", - " 'fa fa fa fach tchoufni labes sayg jibi 3amer a l3chir',\n", - " 'kha kha kha khas te3ref belli 7tana chbe3t f had lblad dmir',\n", - " 'ka ka ka kayn li 3ach ra7el mat rajel rda b l9lil',\n", - " 'nta nta nta nta li konti tame3 dowezti 7yatk ndil',\n", - " 'fi fi fi fine li kano 9bel dazo 9bel mato 9bel',\n", - " \"bda bda bda bda brassi nassi kassi ntassi l'passé dfel\",\n", - " \"drahem nhari dour te3ya tji l' da da da\",\n", - " \"dari me7loula l'ga3 3echrani ni ni ni\",\n", - " 'nichan ki dima tan3awd ach tan3ich',\n", - " 'mouslim mrebbi le7ya w machi daech',\n", - " 'ra ra ra rastafras 16-3 family',\n", - " 'matan3refekch ghir bla ma tnamili',\n", - " 'makansem3ekch ghi bla ma t7ajini',\n", - " 'gjam lfani ch7al men hadi khatini',\n", - " 'x2',\n", - " 'hbel b klamo nit, favori 3la ga3 tocara',\n", - " '3la ga3 lkoussala, ana ga3 makount hna',\n", - " 'ana machi souti ghi le3ba',\n", - " 'chems lbare7 li ghatchre9 ghedda',\n", - " 'tanhreb bezzaf, tanghfel n3as tankteb rap',\n", - " 'ka ka ka kat9atel f passage b7ala dmaghek mbouchi',\n", - " 'ka ka ka kan7etkom 9balti b7alla kanakol sushi',\n", - " 'ka ka ka kan dribbler rwappa face machi messi w machi gauchi',\n", - " 'di di di dima classe dareb chemisa rose versace',\n", - " 'papa, 7yati action machi drama',\n", - " 'mama, makatsrefch 3lya mama',\n", - " 'machi wlad leb7er, rou7 3owwama',\n", - " 'ghanhder wakha dirouli kmama',\n", - " 'sla7i fo9 ktafi w kharej nsayyed',\n", - " 'li banli fel viseur bih ghan3iyyed',\n", - " 'dareb team 3askri kanriyed',\n", - " 'titiz kayti7 3lya bla manriyyet',\n", - " 'x2',\n", - " 'hbel b klamo nit, favori 3la ga3 tocara',\n", - " '3la ga3 lkoussala, ana ga3 makount hna',\n", - " 'ana machi souti ghi le3ba',\n", - " 'chems lbare7 li ghatchre9 ghedda',\n", - " 'tanhreb bezzaf, tanghfel n3as tankteb rap',\n", - " 'moul thousand punchline, li taykherrej men zbel chlayd',\n", - " 'khouk ay9ouna 3ibra, antiye7 3lik fikra matgoulch aie',\n", - " \"lmal wel banoun w l'extase, tansowb robot 3endi f sta7\",\n", - " \"gherre9 l'kif fel häagen-dazs, waji ndakro dik sa3\",\n", - " 'rkeb m3aya f had train, f 7yati 9otr machi chou3a3',\n", - " 'hebtou lard fine mchito ga3, tanbi3 snan l9irch b chi dollar',\n", - " 'la ta7 lek le3jeb njibou lik, euy',\n", - " 'ma3endi 7ta chi synonyme, euy',\n", - " 'coup de phare dyali ziyro limen',\n", - " \"très solide l'morphine clamonet\",\n", - " 'x2',\n", - " 'hbel b klamo nit, favori 3la ga3 tocara',\n", - " '3la ga3 lkoussala, ana ga3 makount hna',\n", - " 'ana machi souti ghi le3ba',\n", - " 'chems lbare7 li ghatchre9 ghedda',\n", - " 'tanhreb bezzaf, tanghfel n3as tankteb rap',\n", - " 'rastafrass',\n", - " 'groovy everywhere',\n", - " \"fuck everybody in this fuckin' room (yelows gang)\",\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " \"fuck everybody in this fuckin' room (yelows gang)\",\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " 'because we can’t fuck with you (gang)',\n", - " 'because we can’t fuck with you (gang)',\n", - " 'because we can’t fuck with you (gang, gang)',\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " \"yls we youngin', youngin', youngin', youngin'\",\n", - " 'negativity, g.soul형처럼 멀리 멀리',\n", - " \"yeah i'm fuckin' trend\",\n", - " 'who can race, 너넨 이제 내 fan',\n", - " '뭘 내 빼 가입해 yelows gang',\n", - " 'cop new tom ford',\n", - " \"i’m fuckin' boon the shopper\",\n", - " '난 편집샵의 단골',\n", - " '영수증은 brrrrrrr 날려',\n", - " '너의 머리 위의 kangol',\n", - " '네 티셔츠에 있는 camo bape',\n", - " '잡히기 싫음 달려',\n", - " '아님 잡혀, 내 verse는 동물원 같아',\n", - " \"fuck everybody in this fuckin' room (yelows gang)\",\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " \"fuck everybody in this fuckin' room (yelows gang)\",\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " 'because we can’t fuck with you (gang)',\n", - " 'because we can’t fuck with you (gang)',\n", - " 'because we can’t fuck with you (gang, gang)',\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " '우릴 보면 도망가',\n", - " '노란색의 경찰차',\n", - " 'we been thru the highs and lows',\n", - " '너네 방은 소강당',\n", - " 'we the trap 소믈리에',\n", - " '넌 음악 소홀히 해',\n", - " '아직도 소몰이 해',\n", - " '모르면 조용히 해',\n", - " 'f-u-c-k with the man sik-k',\n", - " 'he been the same day 1',\n", - " '우린 매일 해, 너넨 이메일 해',\n", - " 'yeah, we go way back',\n", - " '힙플 자녹게, yeah',\n", - " 'gang, gang, gang, gang, gang, gang',\n", - " 'fam, fam, fam, fam, fam, fam',\n", - " 'understand-stand-stand-stand-stand-stand',\n", - " 'we make you dance, dance, yuh',\n", - " 'look at our presence',\n", - " 'bitches vibrating just like my phone',\n", - " 'just like ferrari we ride in this bitch',\n", - " 'pimpin on 네 여친 또 그 년 친구',\n", - " 'wifin them bitches like wifi',\n", - " 'and let all my wives fight',\n", - " '빌리야 놀지마, 걔네는 사짜',\n", - " '허내인이 sik-k the groovy 다음 타자',\n", - " 'fuck with us 우린 빼곤 다들 나가',\n", - " \"fuck everybody in this fuckin' room (yelows gang)\",\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " \"fuck everybody in this fuckin' room (yelows gang)\",\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " 'because we can’t fuck with you (gang)',\n", - " 'because we can’t fuck with you (gang)',\n", - " 'because we can’t fuck with you (gang, gang)',\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " \"f-u-c-k everybody in this fuckin' room\",\n", - " 'if you feel me, get down',\n", - " 'because we can fuck with you',\n", - " '내 인기는 무식해, 높은 줄 모르고 솟구치는 중',\n", - " 'sik-k, woodie gochild',\n", - " '우린 보여주지 mob shit crew',\n", - " 'woo, ytc4lif we mobbin’',\n", - " 'woo, yls mob still mobbin’',\n", - " 'woo, 다 이해 못 하지 너, 하긴',\n", - " 'woo, 봐, 여태 넌 발 밑 그자리',\n", - " '그대로 서 있는거지 뭐',\n", - " '네가 시도한건 아무것도',\n", - " '그 자리에서 지켜봐라',\n", - " '내가 어딜 향해 가나 gochild fuck it up',\n", - " '파도 쳐 new waves on str8 곧 판도는 바뀌어',\n", - " '판을 쳐 네 playlist엔 곧 몇은 빠져',\n", - " \"fuck everybody in this fuckin' room\",\n", - " 'if u feel me, get down fuckers',\n", - " 'because we can’t fuck with you',\n", - " \"fuck everybody in this fuckin' room (yelows gang)\",\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " \"fuck everybody in this fuckin' room (yelows gang)\",\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " 'because we can’t fuck with you (gang)',\n", - " 'because we can’t fuck with you (gang)',\n", - " 'because we can’t fuck with you (gang, gang)',\n", - " 'because we can’t fuck with you (yelows gang)',\n", - " 'romanization',\n", - " 'groovy everywhere',\n", - " 'fuck everybody in this fuckin room',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'yelows gang',\n", - " 'fuck everybody in this fuckin room',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang gang',\n", - " 'because we can’t fuck with you',\n", - " 'yelows gang',\n", - " 'yls we youngin youngin youngin youngin',\n", - " 'negativity, g.soulhyeongcheoleom meolli meolli',\n", - " \"yeah i'm fuckin' trend\",\n", - " 'who can race, neonen ije nae fan',\n", - " 'mwol nae ppae gaibhae yelows gang',\n", - " 'cop new tomford',\n", - " \"i’m fuckin' boon the shopper\",\n", - " 'nan pyeonjibsyabui dangol',\n", - " 'yeongsujeungeun brrrrrrr nallyeo',\n", - " 'neoui meoli wiui kangol',\n", - " 'ne tisyeocheue issneun camo bape',\n", - " 'jabhigi silheum dallyeo',\n", - " 'anim jabhyeo nae beolseuneun dongmulwon gata',\n", - " 'fuck everybody in this fuckin room',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'yelows gang',\n", - " 'fuck everybody in this fuckin room',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang gang',\n", - " 'because we can’t fuck with you',\n", - " 'yelows gang',\n", - " 'ulil bomyeon domangga',\n", - " 'nolansaegui gyeongchalcha',\n", - " 'we been thru the highs and lows',\n", - " 'neone bangeun sogangdang',\n", - " 'we the trap someullie',\n", - " 'neon eumag soholhi hae',\n", - " 'ajigdo somoli hae',\n", - " 'moleumyeon joyonghi hae',\n", - " 'f u c k',\n", - " 'with the man sik-k',\n", - " 'he been the same day 1',\n", - " 'ulin maeil hae',\n", - " 'neonen imeil hae',\n", - " 'yeah we go way back',\n", - " 'hibpeul janogge yeah',\n", - " 'gang gang gang gang gang gang',\n", - " 'fam fam fam fam fam fam',\n", - " 'understand stand stand stand stand stand',\n", - " 'we make you dance dance',\n", - " 'yuh',\n", - " 'look at our presence',\n", - " 'bitches vibrating',\n", - " 'just like my phone',\n", - " 'just like ferrari we ride in this bitch',\n", - " 'pimpin on ne yeochin tto geu nyeon chingu',\n", - " 'wifin them bitches like wifi',\n", - " 'and let all my wives fight',\n", - " 'billiya noljima gyaeneneun sajja',\n", - " 'heonaeini sik-k the groovy daeum taja',\n", - " 'fuck with us ulin ppaegon dadeul naga',\n", - " 'fuck everybody in this fuckin room',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'yelows gang',\n", - " 'fuck everybody in this fuckin room',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang gang',\n", - " 'because we can’t fuck with you',\n", - " 'f u c k everybody in this fuckin room',\n", - " 'if u feel me',\n", - " 'get down because we can fuck with you',\n", - " 'nae ingineun musighae nopeun jul moleugo sosguchineun jung',\n", - " 'sik-k woodie gochild ulin boyeojuji mob shit crew',\n", - " 'woo ytc4lif we mobbin’',\n", - " 'woo yls mob still mobbin’',\n", - " 'woo da ihae mos haji neo, hagin',\n", - " 'woo bwa yeotae neon bal mit geujali',\n", - " 'geudaelo seo issneungeoji mwo nega sidohangeon amugeosdo',\n", - " 'geu jalieseo jikyeobwala naega',\n", - " 'eodil hyanghae gana gochild fuck it up',\n", - " 'pado chyeo new waves on str8 god pandoneun bakkwieo',\n", - " 'paneul chyeo ne playlisten god myeocheun ppajyeo',\n", - " 'fuck everybody in this fuckin room',\n", - " 'if u feel me, get down fuckers',\n", - " 'because we can’t fuck with you',\n", - " 'fuck everybody in this fuckin room',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'yelows gang',\n", - " 'fuck everybody in this fuckin room',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'yelows gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang',\n", - " 'because we can’t fuck with you',\n", - " 'gang gang',\n", - " 'because we can’t fuck with you',\n", - " 'yelows gang',\n", - " 'korean',\n", - " '안된다고 말을했지',\n", - " 'but i don’t give up, i’m gon make it',\n", - " 'for better life, better life',\n", - " 'for my better life, better life',\n", - " '하고 싶은 게 많아, 사고 싶은 게 많아',\n", - " 'so i will be the famous, famous rapper',\n", - " 'then i’m livin’ better life, better life',\n", - " 'then i’m livin’ my better life, my better life',\n", - " 'mo’ money mo’ fame new j’s',\n", - " '돌아다니기에도 더 큰 무대',\n", - " '방금 tag 뗀 새 옷에',\n", - " '신발은 까만 rick owens',\n", - " '다들 더 많은걸 원하고',\n", - " '좀 더 빠른걸 원해',\n", - " 'but 난 좀 더 다른걸 원해',\n", - " '그래서 매일 매일 작업해',\n", - " 'because time clocks anyway',\n", - " 'do not waste your day',\n", - " '난 무조건 열심히 만 하지 않고 똑똑하게 일해',\n", - " '또 다른 기회들을 위해서',\n", - " 'i push hard with passion',\n", - " 'i have fun with this',\n", - " 'yeah i have fun with this boi',\n", - " '안된다고 말을했지',\n", - " 'but i don’t give up, i’m gon make it',\n", - " 'for better life, better life',\n", - " 'for my better life, better life',\n", - " ...]},\n", - " 'data': ['korean',\n", - " 'i fly to you to your room',\n", - " \"우리 둘은 lookin' beautiful baby\",\n", - " '이만큼이나 너에게서 정말로 (groovy everywhere)',\n", - " '가까워 아주',\n", - " \"i fuckin' love you\",\n", - " \"i fuckin' love you\",\n", - " \"motherfuckin' love you\",\n", - " \"i fuckin' love you, yeah\",\n", - " \"i fuckin' love you\",\n", - " \"i fuckin' love you\",\n", - " \"motherfuckin' love you\",\n", - " \"i fuckin' love you, yeah\",\n", - " 'light it up my cigarette',\n", - " '너가 담밸 안 핀다면 미안해, yeah, yeah',\n", - " '연기는 저기루 불어 후',\n", - " '너에게 닿지 않게, yeah, yeah',\n", - " '나는 날아가지, yeah, like a 나비, yeah',\n", - " \"lookin' for my flower, 난 너에게 갔지\",\n", - " '너는 몰라 아직, 말하기 전까진',\n", - " \"baby i be flyin'\",\n", - " 'never seen probably never seen',\n", - " 'yeah, 넌 찢고 나왔나 봐 magazine',\n", - " 'yeah, 다 티 나게 나는 너에게 어필해',\n", - " '사실대로 말해, 이런 적 없긴',\n", - " '왜 거짓말을 쳐? 난 지금보다 더',\n", - " '많이 솔직한 걸 원하고 있어',\n", - " '정하지 말자 선을',\n", - " '어차피 그어봤자 넘을 거야',\n", - " \"yeah, i fuckin' love you, oh ah\",\n", - " 'i fly to you to your room',\n", - " \"우리 둘은 lookin' beautiful baby\",\n", - " '이만큼이나 너에게서 정말로',\n", - " '가까워 아주',\n", - " \"i fuckin' love you\",\n", - " \"i fuckin' love you\",\n", - " \"motherfuckin' love you\",\n", - " \"i fuckin' love you, yeah\",\n", - " \"i fuckin' love you\",\n", - " \"i fuckin' love you\",\n", - " \"motherfuckin' love you\",\n", - " \"i fuckin' love you, yeah\",\n", - " '난 맨날 너를 떠올리고',\n", - " '그땐 딴 생각 할 시간 없다고 한시도, yeah',\n", - " '너는 모를 거야 이유도, 난 괜히 아쉬운 척',\n", - " '너는 느껴야 돼 피부로',\n", - " '자릴 옮기자 먼저 우리 집으로',\n", - " \"i fly to you, headin' to the stu\",\n", - " 'firing the booth, 다른 뜻으로',\n", - " 'yellow-life my lingo',\n", - " 'mob for life my ego',\n", - " '나는 너가 좋아, yeah, yeah',\n", - " '그 어떤 것보다, yeah',\n", - " 'you better tell no lie',\n", - " 'wanna make you mine',\n", - " 'everything will be fine',\n", - " '너만 내게로 온다면 나는 너를 위해 살어',\n", - " \"we on morherfuckin' fire\",\n", - " '난 이미 날아가고 있어 너에게로',\n", - " '착각이 아냐 절대로',\n", - " 'everything will be fine',\n", - " '너만 내게로 온다면 나는 너를 위해 살어',\n", - " \"we on motherfuckin' fire\",\n", - " 'i fly to you to your room',\n", - " \"우리 둘은 lookin' beautiful baby\",\n", - " '이만큼이나 너에게서 정말로',\n", - " '가까워 아주',\n", - " \"i fuckin' love you\",\n", - " \"i fuckin' love you\",\n", - " \"motherfuckin' love you\",\n", - " \"i fuckin' love you, yeah\",\n", - " \"i fuckin' love you\",\n", - " \"i fuckin' love you\",\n", - " \"motherfuckin' love you\",\n", - " \"i fuckin' love you, yeah\",\n", - " 'romanization',\n", - " 'groovy everywhere',\n", - " 'i fly to you to your room',\n", - " 'uli dul-eun lookin beautiful baby',\n", - " 'imankeum-ina neoege',\n", - " 'seo jeongmallo',\n", - " 'gakkawo aju',\n", - " 'i fuckin love you',\n", - " 'i fuckin love you',\n", - " 'mother fuckin love you',\n", - " 'i fuckin love you yeah',\n", - " 'i fuckin love you',\n", - " 'i fuckin love you',\n", - " 'mother fuckin love you',\n", - " 'i fuckin love you yeah',\n", - " 'light it up my cigarette',\n", - " 'neoga dambael an pindamyeon',\n", - " 'mianhae yeah yeah',\n", - " 'yeongineun jeogilu bul-eo hu',\n", - " 'neoege dahji anhge yeah yeah',\n", - " 'naneun nal-agaji yeah',\n", - " 'like a nabi yeah',\n", - " 'lookin for my flower',\n", - " 'nan neoege gassji',\n", - " 'neoneun molla ajig malhagi jeonkkajin',\n", - " 'baby i be flyin',\n", - " 'never seen probably never seen',\n", - " 'yeah neon jjijgo nawassna bwa magazine',\n", - " 'yeah da ti nage',\n", - " 'naneun neoege eopilhae',\n", - " 'sasildaelo malhae ileon jeog eobsgin',\n", - " 'wae geojismal-eul chyeo nan jigeumboda deo',\n", - " 'manh-i soljighan geol wonhago iss-eo',\n", - " 'jeonghaji malja seon-eul',\n", - " 'eochapi geueobwassja neom-eul geoya',\n", - " 'yeah i fuckin love you oh ah',\n", - " 'i fly to you to your room',\n", - " 'uli dul-eun lookin beautiful baby',\n", - " 'imankeum-ina neoege',\n", - " 'seo jeongmallo',\n", - " 'gakkawo aju',\n", - " 'i fuckin love you',\n", - " 'i fuckin love you',\n", - " 'mother fuckin love you',\n", - " 'i fuckin love you yeah',\n", - " 'i fuckin love you',\n", - " 'i fuckin love you',\n", - " 'mother fuckin love you',\n", - " 'i fuckin love you yeah',\n", - " 'nan maennal neoleul tteoolligo',\n", - " 'geu ttaen ttan saeng-gag hal sigan eobsdago',\n", - " 'hansido yeah',\n", - " 'neoneun moleul geoya iyudo',\n", - " 'nan gwaenhi aswiun cheog',\n", - " 'neoneun neukkyeoya dwae pibulo',\n", - " 'jalil olmgija meonjeo uli jib-eulo',\n", - " 'i fly to you',\n", - " 'headin to the stu',\n", - " 'firing the booth',\n", - " 'daleun tteus-eulo',\n", - " 'yellow-life my lingo',\n", - " 'mob for life my ego',\n", - " 'naneun neoga joh-a yeah yeah',\n", - " 'geu eotteon geosboda yeah',\n", - " 'you better tell no lie',\n", - " 'wanna make you mine',\n", - " 'everything will be fine',\n", - " 'neoman naegelo ondamyeon',\n", - " 'naneun neoleul wihae sal-eo',\n", - " 'we on morherfuckin fire',\n", - " 'nan imi nal-agago iss-eo neoegelo',\n", - " 'chaggag-i anya jeoldaelo',\n", - " 'everything will be fine',\n", - " 'neoman naegelo ondamyeon',\n", - " 'naneun neoleul wihae sal-eo',\n", - " 'we on motherfuckin fire',\n", - " 'i fly to you to your room',\n", - " 'uli dul-eun lookin beautiful baby',\n", - " 'imankeum-ina neoege',\n", - " 'seo jeongmallo',\n", - " 'gakkawo aju',\n", - " 'i fuckin love you',\n", - " 'i fuckin love you',\n", - " 'mother fuckin love you',\n", - " 'i fuckin love you yeah',\n", - " 'i fuckin love you',\n", - " 'i fuckin love you',\n", - " 'mother fuckin love you',\n", - " 'i fuckin love you yeah',\n", - " 'korean original',\n", - " '밟히는 인생, 신발을 벗고',\n", - " '퉁퉁 부은 내 발을 펴',\n", - " '담보로 몸 잡고',\n", - " '빡시게 깡으로 버티는 하루 속',\n", - " '달뜨는 밤',\n", - " '잠 못 드는 자들의 악몽 속은 늘 파도 쳐',\n", - " '다 다그쳐, 몹쓸 싸움구경만 노리는 악플러',\n", - " '이 rap game에 새내기',\n", - " '쫌 뜨려고 하면 패대기',\n", - " '보석처럼 난 캐내지',\n", - " 'with the poker face',\n", - " \"you'd better get at me\",\n", - " '인터넷 gone savage with',\n", - " '엿 바꿔먹은 베댓',\n", - " '나의 hater들의 물 세례',\n", - " '꼴 보기 싫은 츤데레',\n", - " '내가 가려는 곳',\n", - " '지금보다 더 높이 올라가',\n", - " '땅이 안보일 때까지',\n", - " '밤하늘에 비추는 달빛을 잡고',\n", - " \"i'm dreaming again\",\n", - " '이곳은 higher plane',\n", - " 'higher plane',\n", - " 'higher plane',\n", - " 'higher plane',\n", - " 'walk through the fire',\n", - " 'and i can take you higher',\n", - " 'higher, take my hand',\n", - " \"i'll take you higher\",\n", - " 'with whatever you desire',\n", - " 'just walk through the fire',\n", - " \"fire, take my hand i'll take you higher\",\n", - " \"we ain't on the same page\",\n", - " 'or the same game hater',\n", - " \"you can't hang\",\n", - " '전부 다 내려놔 이제는 bang bang',\n", - " 'i does my thang thang',\n", - " '손목을 걸고 도전, 작두',\n", - " 'meditation focus',\n", - " 'my third eye expose the bogus',\n", - " '고주파로 쏘는 45th bang',\n", - " '뱅 귀에 돋은 소름, 더 짜내는 노란 고름, (ugh)',\n", - " '너가 걷고 있는 살얼음 위 라도 빠른 걸음',\n", - " 'skate, 차고 당겨, chase 추격하는 pace',\n", - " 'gone without a trace, make space',\n", - " 'until i see the pearly gates, 네버엔딩 race',\n", - " 'levitate to a higher plane',\n", - " '내가 가려는 곳',\n", - " '지금보다 더 높이 올라가',\n", - " '땅이 안보일 때까지',\n", - " '밤하늘에 비추는 달빛을 잡고',\n", - " \"i'm dreaming again\",\n", - " '이곳은 higher plane',\n", - " 'higher plane',\n", - " 'higher plane',\n", - " 'higher plane',\n", - " 'walk through the fire',\n", - " 'and i can take you higher',\n", - " 'higher, take my hand',\n", - " \"i'll take you higher\",\n", - " 'with whatever you desire',\n", - " 'just walk through the fire',\n", - " \"fire, take my hand i'll take you higher\",\n", - " '집에 가는 길 이젠 찾을 수 없어',\n", - " 'i do this for the love',\n", - " '겁이 나도 나는 떠',\n", - " 'looking in the mirror like',\n", - " 'i’m on my own',\n", - " 'forgot the way home',\n", - " 'but all i know i’m going',\n", - " 'higher, higher, higher',\n", - " \"you know i'm going\",\n", - " 'higher, higher, higher',\n", - " \"you know i'm going\",\n", - " 'higher, higher, higher',\n", - " \"you know i'm going\",\n", - " 'higher, higher, higher',\n", - " '이곳은 higher plane',\n", - " 'walk through the fire',\n", - " 'and i can take you higher',\n", - " 'higher, take my hand',\n", - " \"i'll take you higher\",\n", - " 'with whatever you desire',\n", - " 'just walk through the fire',\n", - " 'fire, take my hand',\n", - " \"i'll take you higher\",\n", - " 'romanization',\n", - " 'balbhineun insaeng, sinbareul beotgo',\n", - " 'tungtung bueun nae bareul pyeo',\n", - " 'damboro mom jabgo',\n", - " 'ppagsige kkangeuro beotineun haru sok',\n", - " 'daltteuneun bam',\n", - " 'jam mot deuneun jadeurui agmong sogeun neul pado chyeo',\n", - " 'da dageuchyeo, mobsseul ssaumgugyeongman norineun agpeulleo',\n", - " 'i rap gamee saenaegi',\n", - " 'jjom tteulyeogo hamyeon paedaegi',\n", - " 'boseokcheoreom nan kaenaeji',\n", - " 'with the poker face',\n", - " \"you'd better get at me\",\n", - " 'inteones gone savage with',\n", - " 'yeot bakkwomeogeun bedaet',\n", - " 'naui haterdeurui mul selye',\n", - " 'kkol bogi silheun cheundere',\n", - " 'naega galyeoneun got',\n", - " 'jigeumboda deo nopi ollaga',\n", - " 'ttangi anboil ttaekkaji',\n", - " 'bamhaneure bichuneun dalbicheul jabgo',\n", - " \"i'm dreaming again\",\n", - " 'igoseun higher plane',\n", - " 'higher plane',\n", - " 'higher plane',\n", - " 'higher plane',\n", - " 'walk through the fire',\n", - " 'and i can take you higher',\n", - " 'higher, take my hand',\n", - " \"i'll take you higher\",\n", - " 'with whatever you desire',\n", - " 'just walk through the fire',\n", - " \"fire, take my hand i'll take you higher\",\n", - " \"we ain't on the same page\",\n", - " 'or the same game hater',\n", - " \"you can't hang\",\n", - " 'jeonbu da naeryeonwa ijeneun bang bang',\n", - " 'i does my thang thang',\n", - " 'sonmogeul geolgo dojeon, jagdu',\n", - " 'meditation focus',\n", - " 'my third eye expose the bogus',\n", - " 'gojuparo ssoneun 45th bang',\n", - " 'baeng gwie dodeun soreum, deo jjanaeneun noran goreum, (ugh)',\n", - " 'neoga geodgo issneun sareoreum wi lado ppareun georeum',\n", - " 'skate, chago danggyeo, chase chugyeokhaneun pace',\n", - " 'gone without a trace, make space',\n", - " 'until i see the pearly gates, nebeoending race',\n", - " 'levitate to a higher plane',\n", - " 'naega galyeoneun got',\n", - " 'jigeumboda deo nopi ollaga',\n", - " 'ttangi anboil ttaekkaji',\n", - " 'bamhaneure bichuneun dalbicheul jabgo',\n", - " \"i'm dreaming again\",\n", - " 'igoseun higher plane',\n", - " 'higher plane',\n", - " 'higher plane',\n", - " 'higher plane',\n", - " 'walk through the fire',\n", - " 'and i can take you higher',\n", - " 'higher, take my hand',\n", - " \"i'll take you higher\",\n", - " 'with whatever you desire',\n", - " 'just walk through the fire',\n", - " \"fire, take my hand i'll take you higher\",\n", - " 'jibe ganeun gil ijen chajeul su eopseo',\n", - " 'i do this for the love',\n", - " 'geobi nado naneun tteo',\n", - " 'looking in the mirror like',\n", - " 'i’m on my own',\n", - " 'forgot the way home',\n", - " 'but all i know i’m going',\n", - " 'higher, higher, higher',\n", - " \"you know i'm going\",\n", - " 'higher, higher, higher',\n", - " \"you know i'm going\",\n", - " 'higher, higher, higher',\n", - " \"you know i'm going\",\n", - " 'higher, higher, higher',\n", - " 'igoseun higher plane',\n", - " 'walk through the fire',\n", - " 'and i can take you higher',\n", - " 'higher, take my hand',\n", - " \"i'll take you higher\",\n", - " 'with whatever you desire',\n", - " 'just walk through the fire',\n", - " 'fire, take my hand',\n", - " \"i'll take you higher\",\n", - " 'hangul',\n", - " 'hey boy it’s cold',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " '너의 yoga pants',\n", - " 'blew my mind',\n", - " '옆 선의 shape',\n", - " 'blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'tight jean',\n", - " '네 바지가 너무 tight 해서',\n", - " '나는 지금 거의 탈진',\n", - " '헤벌레 oh no no',\n", - " '안 그런 척해도 want some mo mo mo',\n", - " '너의 까만 sunglasses에',\n", - " '빨려 들어가 버리네',\n", - " '못 빠져나와 이제',\n", - " '혼자 살면 날 데려가 집에',\n", - " 'lil baby',\n", - " '나는 원래 이래 lil baby',\n", - " 'lil baby please save me',\n", - " 'lil baby please save me',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " '너의 yoga pants',\n", - " 'blew my mind',\n", - " '옆 선의 shape',\n", - " 'blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " '난 솔직하게 불만 많아',\n", - " 'i try, you hide',\n", - " 'i might ride or die for you',\n", - " 'yeah',\n", - " '네가 나를 읽고 씹을 때',\n", - " '나는 기다리고 있는데',\n", - " '네가 나랑 있고 싶을 땐',\n", - " '그땐 너만 급해',\n", - " '밀어내는 척은 그만',\n", - " '마음을 열어 조금만',\n", - " '나를 알려줄게 금방',\n", - " '유행 같은놈이 아니야',\n", - " '나는 classic',\n", - " 'and i’m flexin',\n", - " 'and i’m finessin',\n", - " 'with my lil baby',\n", - " 'i’m finessin',\n", - " 'with my lil baby',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " '너의 yoga pants',\n", - " 'blew my mind',\n", - " '옆 선의 shape',\n", - " 'blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'romanized',\n", - " 'hey boy it’s cold',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'neoui yoga pants',\n", - " 'blew my mind',\n", - " 'yeop seon-ui shape',\n", - " 'blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'tight jean',\n", - " 'ne bajiga neomu tight haeseo',\n", - " 'naneun jigeum geoui taljin',\n", - " 'hebeolle oh no no',\n", - " 'an geuleon cheoghaedo want some mo mo mo',\n", - " 'neoui kkaman sunglasses-e',\n", - " 'ppallyeo deul-eoga beoline',\n", - " 'mos ppajyeonawa ije',\n", - " 'honja salmyeon nal delyeoga jib-e',\n", - " 'lil baby',\n", - " 'naneun wonlae ilae lil baby',\n", - " 'lil baby please save me',\n", - " 'lil baby please save me',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'neoui yoga pants',\n", - " 'blew my mind',\n", - " 'yeop seon-ui shape',\n", - " 'blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'nan soljighage bulman manh-a',\n", - " 'i try, you hide',\n", - " 'i might ride or die for you',\n", - " 'yeah',\n", - " 'nega naleul ilg-go ssib-eul ttae',\n", - " 'naneun gidaligo issneunde',\n", - " 'nega nalang issgo sip-eul ttaen',\n", - " 'geuttaen neoman geubhae',\n", - " 'mil-eonaeneun cheog-eun geuman',\n", - " 'ma-eum-eul yeol-eo jogeumman',\n", - " 'naleul allyeojulge geumbang',\n", - " 'yuhaeng gat-eunnom-i aniya',\n", - " 'naneun classic',\n", - " 'and i’m flexin',\n", - " 'and i’m finessin',\n", - " 'with my lil baby',\n", - " 'i’m finessin',\n", - " 'with my lil baby',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'neoui yoga pants',\n", - " 'blew my mind',\n", - " 'yeop seon-ui shape',\n", - " 'blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'lil baby you blew my mind',\n", - " 'you got too many numbers in your phone',\n", - " 'you got too many numbers in your phone',\n", - " '너는 몰라, where to call (where to call)',\n", - " '너는 몰라, where to go (where to go)',\n", - " 'yeah, 연락이 올 땐 씹어버려 전부',\n", - " '연락이 오기 전에 지워버려 전부',\n", - " 'cause you got too many numbers in your phone',\n", - " '전부 지워버려 내 번호 말곤',\n", - " 'like it’s new beginning',\n", - " '다 지워버려도 문제는 생기지않아, in my opinion',\n", - " '다른 새끼들은 쓸모가 없어',\n", - " 'yeah, cause they all fucked up',\n", - " \"i'mma only real one on the come up\",\n", - " '나를 사랑하면 넌 더 떳떳해질 수 있어',\n", - " 'yeah, first thing first',\n", - " 'yeah, let you know what’s wrong',\n", - " 'you got too many numbers in your phone',\n", - " 'you got too many numbers in your phone',\n", - " '너는 몰라, where to call (where to call)',\n", - " '너는 몰라, where to go (where to go)',\n", - " 'yeah, 연락이 올 땐 씹어버려 전부',\n", - " '연락이 오기 전에 지워버려 전부',\n", - " 'cause you got too many numbers in your phone',\n", - " '전부 지워버려 내 번호 말곤',\n", - " 'you got too many number in your phone',\n", - " 'but i got to many numbers in my phone',\n", - " '그래도 same same으로 칠 순 없어',\n", - " '난 이기적이야, baby',\n", - " '아예 전화기를 꺼놔, yeah, yeah',\n", - " '나보다 나은 놈이 없어, 질투가 아니라',\n", - " '네 시간을 아껴주는거야, yeah, baby',\n", - " 'who’s gon’ love you',\n", - " 'the way that i do',\n", - " 'no one no one no one',\n", - " '설명할 수 없지만',\n", - " 'baby i’m telling you, yeah',\n", - " 'baby i’m telling you, yeah',\n", - " 'like it’s new beginning',\n", - " '다 지워버려도 문제는 생기지않아, in my opinion',\n", - " '다른 새끼들은 쓸모가 없어',\n", - " 'yeah, cause they all fucked up',\n", - " \"i'mma only real one on the come up\",\n", - " '나를 사랑하면 넌 더 떳떳해질 수 있어',\n", - " 'yeah, first thing first',\n", - " 'yeah, let you know what’s wrong',\n", - " 'you got too many numbers in your phone',\n", - " 'you got too many numbers in your phone',\n", - " '너는 몰라, where to call (where to call)',\n", - " '너는 몰라, where to go (where to go)',\n", - " 'yeah, 연락이 올 땐 씹어버려 전부',\n", - " '연락이 오기 전에 지워버려 전부',\n", - " 'cause you got too many numbers in your phone',\n", - " '전부 지워버려 내 번호 말곤',\n", - " 'romanization',\n", - " 'you got too many numbers',\n", - " 'in your phone',\n", - " 'you got too many numbers',\n", - " 'in your phone',\n", - " 'neoneun molla where to call',\n", - " 'neoneun molla where to go',\n", - " 'yeonragi ol ttaen ssibeobeoryeo jeonbu',\n", - " 'yeonragi ogi jeone jiwobeoryeo jeonbu',\n", - " 'cause you got too many numbers',\n", - " 'in your phone',\n", - " 'jeonbu jiwobeoryeo nae beonho malgon',\n", - " 'like it’s new beginning',\n", - " 'da jiwobeoryeodo munjeneun saenggijianha',\n", - " 'in my opinion',\n", - " 'dareun saekkideureun sseulmoga eopseo',\n", - " 'yeah cause they all fucked up',\n", - " 'imma only real one on the come up',\n", - " 'nareul saranghamyeon neon deo',\n", - " 'tteostteoshaejil su isseo',\n", - " 'yeah first thing first',\n", - " 'yeah let you know what’s wrong',\n", - " 'you got too many numbers',\n", - " 'in your phone',\n", - " 'you got too many numbers',\n", - " 'in your phone',\n", - " 'neoneun molla where to call',\n", - " 'neoneun molla where to go',\n", - " 'yeonragi ol ttaen ssibeobeoryeo jeonbu',\n", - " 'yeonragi ogi jeone jiwobeoryeo jeonbu',\n", - " 'cause you got too many numbers',\n", - " 'in your phone',\n", - " 'jeonbu jiwobeoryeo nae beonho malgon',\n", - " 'you got too many number',\n", - " 'in your phone',\n", - " 'but i got to many numbers',\n", - " 'in my phone',\n", - " 'geuraedo same sameeuro chil sun eopseo',\n", - " 'nan igijeogiya baby',\n", - " 'aye jeonhwagireul kkeonwa yeah yeah',\n", - " 'naboda naeun nomi eopseo',\n", - " 'jiltuga anira ne',\n", - " 'siganeul akkyeojuneungeoya yeah baby',\n", - " 'who’s gon’ love you',\n", - " 'the way that i do',\n", - " 'no one no one no one',\n", - " 'seolmyeonghal su eopsjiman',\n", - " 'baby i’m telling you yeah',\n", - " 'baby i’m telling you yeah',\n", - " 'like it’s new beginning',\n", - " 'da jiwobeoryeodo munjeneun saenggijianha',\n", - " 'in my opinion',\n", - " 'dareun saekkideureun sseulmoga eopseo',\n", - " 'yeah cause they all fucked up',\n", - " 'imma only real one on the come up',\n", - " 'nareul saranghamyeon neon deo',\n", - " 'tteostteoshaejil su isseo',\n", - " 'yeah first thing first',\n", - " 'yeah let you know what’s wrong',\n", - " 'you got too many numbers',\n", - " 'in your phone',\n", - " 'you got too many numbers',\n", - " 'in your phone',\n", - " 'neoneun molla where to call',\n", - " 'neoneun molla where to go',\n", - " 'yeonragi ol ttaen ssibeobeoryeo jeonbu',\n", - " 'yeonragi ogi jeone jiwobeoryeo jeonbu',\n", - " 'cause you got too many numbers',\n", - " 'in your phone',\n", - " 'jeonbu jiwobeoryeo nae beonho malgon',\n", - " 'paroles de mobydick \"supermoutcho\"',\n", - " 'سوبر موتشو',\n", - " 'أشد من العين, أقوى من الشلولو',\n", - " 'كسبروفي الحطة, الصقر, أبو الروبلة',\n", - " 'أخف من البرق, أقصح من لاموزيك',\n", - " 'الرجل الذي يساوي ضعف ثمنه, انه',\n", - " \"l'moutchou code einstein jouj 39ola fwa7ed\",\n", - " \"ness choufa 3endi jayba l'plan, 7di m3a la feinte\",\n", - " 'ta debban nchedou byidi w3eyni mghemda',\n", - " 'kharej liha nichan wakha tjib jackie chan, nfar3o bla mda',\n", - " 'b claque wa7ed 9atel van damme, w jet li 3elle9',\n", - " 'maja ydour ta khebtato lbelgha diali lwejho, ma9 ba9, mermela9',\n", - " 'ghi 3yet lia la chi wa7ed ja w3lik 3a9',\n", - " \"nteb3o lderbo mnin ja, l'black ninja\",\n", - " \"choufa d'nser, li jani face nmchi bmo fdess minjara\",\n", - " 'chfinja, mtrini foug l3afia, msini m3a la mafia',\n", - " 'ghir ila bghitini nadini bipini ga3 w njik',\n", - " 'khef men titsuite fhemtini',\n", - " \"sintifinti l'code dima wade7 bin 3ini\",\n", - " 'james bond 7daya tilmid',\n", - " 'lmiri mayzhe9 kolchi jaybo maths',\n", - " 'ghalat icha3a lartakebto d3ti assat',\n", - " \"sabatiro w aka supermoutcho l'flash\",\n", - " 'men foug sa3ada 7adi rbat bach maytrach tchach wsafi',\n", - " 'supermoutcho ja, supermoutcho tar',\n", - " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", - " 'supermoutcho ja, supermoutcho tar',\n", - " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", - " 'supermoutcho ja, supermoutcho tar',\n", - " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", - " 'supermoutcho ja, supermoutcho tar',\n", - " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", - " '60 passeports, 60 comptes, 60 jinsia',\n", - " 'f koula blad 3endi wlia, w 7ta men haifa tay7a fia',\n", - " '3endi villa ged sekht west napoli wtanya f paris',\n", - " 'wfaytli cha9m angelina jolie, ba9a ldaba tbipi fia appel anonyme',\n", - " 'ghir nch9amha bent 3aycha west chhi9 wlebka',\n", - " 'messkina me chkat, bghat supermoutcho bayta thellel',\n", - " '3arfatni 3endi 3dem tiw bel hend mchellel',\n", - " 'mkelemha finma mchit, lmoutchou m3elem kayskivi da9',\n", - " 'b 9ent wa7ed gad nefre9, f ness bab men l7did che9',\n", - " 'kung fu muaythai king of ninja banzai',\n", - " 'street fighters alpha 3 khay , flying high, chlada',\n", - " 'bruce lee nad men l9ber wtrina bia west kala la ga3 les kata',\n", - " 'wellit b7al khaylo tab3o',\n", - " 'gad ne9ez men alkhouzayrat wn9is espania wnefs 9at3o',\n", - " 'meliou7 3echra metro mboumbi foug lbach',\n", - " 'wagf foug twin w7adi lblad bach maytach tchach wsafi',\n", - " 'supermoutcho ja, supermoutcho tar',\n", - " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", - " 'supermoutcho ja, supermoutcho tar',\n", - " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", - " 'supermoutcho ja, supermoutcho tar',\n", - " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", - " 'supermoutcho ja, supermoutcho tar',\n", - " \"supermoutcho jera 3la ga3 lbakhakhich, b'baygon\",\n", - " 'makayench tnemnim 3endi lwednin madyin',\n", - " 'ga3 lbakhachich mytin, baygon',\n", - " '3endi téléphone chad bih satellite wgad ntiri fga3 lbakhachich, baygon',\n", - " \"l3dou jaybo l'as dos wakha fdlam tiban lblan wkolchi na3es kideban, baygon\",\n", - " 'supermoutcho rajolo l3adala b7al lboulissi nsali lcombat wakha ykoun demi yssil, baygon',\n", - " \"jarima ghi tchoufouha lmoutchou arajolo l'3ankabout ytiri fbouha, baygon\",\n", - " 'supermoutcho fog chok titir k7az balak 3endak yji chi 7ed yfok, baygon',\n", - " '7yat le3do chada fkhit choufa 3endi net taye7 kter men nayed kolchi dayekh, baygon',\n", - " \"l3dou f 3ini ki l3abit mor l'mountif dima chayef w7adi rit, baygon\",\n", - " 'li bghaw ydirou lia lfekh mchaw dbaba l3dou ychoufni ygoul miao, baygon',\n", - " 'super meghribi kan mkhebe3 wla mekchouf kolchi mehtouf kolchi merchoch, baygon',\n", - " 'b baygon',\n", - " 'supermoutcho ja, supermoutcho tar',\n", - " \"supermoutcho terra 3la ga3 lbakhakhich, b'baygon\",\n", - " 'طلع يوم جديد وراح سوبر موتشو الى النوم راكضا',\n", - " 'بعدما حارب الاشرار والاعداء ثم البخاشيش',\n", - " 'فلا تنسوا يا اصدقائي, سوبر موتشو يسهر على راحتكم',\n", - " 'ودائما في خدمة الحق والعدالة',\n", - " 'لنا عودة معه في الحلقة القادمة']},\n", - " 'rock': {'meta': {'train_data': ['ueuone drucorigin',\n", - " 'auios auiettos, auios auiei',\n", - " 'mantrat-io ulatin',\n", - " 'auios auiettos',\n", - " 'mantrat-io ulatin',\n", - " 'auios auiei',\n", - " 'doaxte in bretannoi rigion',\n", - " 'auios auiettos, auios auiei',\n", - " 'belorigos argantios',\n", - " 'auios auiettos',\n", - " 'belorigos argantios',\n", - " 'auios auiei',\n", - " 'comanxte mercin rigos',\n", - " 'auios auiettos, auios auiei',\n", - " 'siraxta gabesse',\n", - " 'auios auiettos',\n", - " 'siraxta gabesse',\n", - " 'auios auiei',\n", - " 'sin cecantont uidlui',\n", - " 'in cantlobi senauon',\n", - " 'in the west he rose',\n", - " 'the high king from antumnos',\n", - " 'with a high queen',\n", - " 'noble daughter of bretannos',\n", - " 'their first born son, lo, the sovereign celtos',\n", - " 'the world marveled at the offspring of the antumnos',\n", - " 'uiors benape bisiomos',\n", - " 'auios auiettos, auios auiei',\n", - " 'bie matir mouon mapon',\n", - " 'auios auiettos',\n", - " 'bie matir mouon mapon',\n", - " 'auios auiei',\n", - " 'gegnetro eobon mapos',\n", - " 'auios auiettos, auios auiei',\n", - " 'iaccousassos aurios',\n", - " 'auios auiettos',\n", - " 'iaccousassos aurios',\n", - " 'auios auiei',\n", - " 'in the west he rose',\n", - " 'the high king from antumnos',\n", - " 'with a high queen',\n", - " 'noble daughter of bretannos',\n", - " 'their first born son, lo, the sovereign celtos',\n", - " 'the world marveled at the offspring of the antumnos',\n", - " 'sin cecantont uidlui',\n", - " 'tre panpe aisson',\n", - " 'bou uassoi anuan celtos',\n", - " 'auios auiettos, auios auiei',\n", - " 'maras boudas doaxte eu',\n", - " 'auios auiettos',\n", - " 'maras boudas doaxte eu',\n", - " 'auios auiei',\n", - " 'eddi-jo atir cenetli',\n", - " 'auios auiettos',\n", - " 'eddi-jo atir cenetli',\n", - " 'auios auiei',\n", - " 'in the west, he rose, the high king from antumnos',\n", - " 'with a high queen, noble daughter of bretannos',\n", - " 'their first born son, lo, the sovereign celtos',\n", - " 'the world marveled at the offspring of the antumnos',\n", - " 'in the west, he rose, the high king from antumnos',\n", - " 'with a high queen, noble daughter of bretannos',\n", - " 'their first born son, lo, the sovereign celtos',\n", - " 'the world marveled at the offspring of the antumnos',\n", - " 'tumorous parenchyma contains pus',\n", - " 'boils, pimples and festering pores',\n", - " 'pseudotumours on anal tract',\n", - " 'purulence in carbuncles and furuncles',\n", - " 'parasitical cysts into urethra',\n", - " 'chapped soles by scabs and pustules',\n", - " 'septic atrophy with benign tumours',\n", - " \"myxoma's stroma full of phlegms\",\n", - " 'ulcerous neoplasms on the pubis',\n", - " 'proliferation of fibroma in mandible',\n", - " 'defect of osteoma in verrucose clunis',\n", - " 'inflammatory lipoma of parotid gland',\n", - " 'quantum of mucus in pathogenic warts',\n", - " 'haemangioma cavernosum of tongue',\n", - " 'malignant blastoma of ovaries',\n", - " 'sarcoma osteogenes of facial skeleton',\n", - " 'haemorrhage and suppuration of metastases',\n", - " 'exulceration of the carcinoma of appendix',\n", - " 'necrosis of infectious cervical nodules',\n", - " 'terminal stage of granuloma gangraenescens',\n", - " 'delaceration',\n", - " 'amputation',\n", - " 'mutilation',\n", - " 'anatomization',\n", - " 'decimation',\n", - " 'victimization',\n", - " 'brutalization',\n", - " 'humiliation',\n", - " 'annihilation',\n", - " 'damnification',\n", - " 'degredation',\n", - " 'dehumanization',\n", - " 'hipsters and posers i abhor',\n", - " \"welcome to the thrasher's abattoir\",\n", - " 'detruncation',\n", - " 'termination',\n", - " 'with no sedation',\n", - " 'emasculation',\n", - " 'terrorization',\n", - " 'extermination',\n", - " 'this means total w.a.r',\n", - " 'welcome to absolute poserslaught',\n", - " 'die...time to die...die in pain',\n", - " 'die...time to die...die in pain',\n", - " 'die...time to die...die in pain',\n", - " 'time to die',\n", - " 'strangulation',\n", - " 'suffocation',\n", - " 'mutilation',\n", - " 'asphyxiation',\n", - " 'immolation',\n", - " 'victimization',\n", - " 'brutalization',\n", - " 'mortification',\n", - " 'annihilation',\n", - " 'exsanguination',\n", - " 'dehumanization',\n", - " 'welcome to the',\n", - " \"thrasher's abattoir\",\n", - " 'unfleshed aseity',\n", - " 'humincubation nystagmus praxis',\n", - " 'fissured laconic transfixions transfix',\n", - " 'emeticised lacerations threnodise',\n", - " 'noumenom entified dearth obscuration',\n", - " 'obsidian illumination iatrogenesis',\n", - " 'aphorism nil',\n", - " 'vis divina',\n", - " 'lumen animae',\n", - " 'vis divina',\n", - " 'signum vitae',\n", - " 'vis, vis divina est lucem animae',\n", - " 'vis, vis divina est signum vitae',\n", - " 'vis, vis divina est lucem animae',\n", - " 'vis, vis divina est mater amoris',\n", - " 'divine strength',\n", - " 'light of the soul',\n", - " 'divine strength',\n", - " 'sign of life',\n", - " 'strength, divine strength is the light of the soul',\n", - " 'strength, divine strength is a sign of life',\n", - " 'strength, divine strength is the light of the soul',\n", - " 'strength, divine strength is the mother of love',\n", - " 'bacterial virus into corpus',\n", - " 'cutaneous mycosis by moulds',\n", - " 'organism contaminated by microbes',\n", - " 'malaria, dysentery by protozoa',\n", - " 'flagellates, amoebae, infusoria',\n", - " 'parasitized vermes',\n", - " 'helminths inside apparatus',\n", - " 'burrowed trematodes',\n", - " 'morbidity by bilharzia',\n", - " 'taenia extruded hook',\n", - " 'cluster of ascarides',\n", - " 'incubation of infestants',\n", - " 'posterior with pinworms',\n", - " 'hookworm into mucosa',\n", - " 'digestive tube with echinococcus',\n", - " 'mites into bile duct',\n", - " 'ganglia full of filariae',\n", - " 'tumefaction of lower extremities',\n", - " 'bedbugs, lice and heteroptera',\n", - " 'crab lousiness of pubes',\n", - " 'itch exanthema',\n", - " 'tick inflammations',\n", - " 'sucking leech',\n", - " 'flea bite into human host',\n", - " 'stomoxys larvae from dung',\n", - " 'trachea with bluebottle ovula',\n", - " 'lucilia carnivorous nymphs',\n", - " 'vital bots into flesh',\n", - " 'pupae in flowing secreta',\n", - " 'tse tse fly on the eyeball',\n", - " 'sinistro cerebral myiasis',\n", - " 'venomous spidery arthropoda',\n", - " 'tarantula and black widow',\n", - " 'paralysis by scorpion',\n", - " 'collapse of man',\n", - " 'poka zemlya esche vertitsya',\n", - " 'poka esche yarok svet',\n", - " 'gospodi, day zhe tyi kazhdomu',\n", - " 'chego u nego net:',\n", - " 'umnomu day golovu',\n", - " 'truslivomu day konya',\n", - " 'day schastlivomu deneg',\n", - " 'i ne zabud pro menya',\n", - " 'poka zemlya esche vertitsya',\n", - " 'gospodi, tvoya vlast!',\n", - " 'day rvuschemusya k vlasti',\n", - " 'navlastvovatsya vslast',\n", - " 'day peredyishku schedromu',\n", - " 'hot do ishoda dnya',\n", - " 'kainu day raskayanie',\n", - " 'i ne zabud pro menya',\n", - " 'ya veryu: tyi vse umeesh',\n", - " 'ya veruyu v mudrost tvoyu',\n", - " 'kak verit soldat ubityiy',\n", - " 'chto on prozhivaet v rayu',\n", - " 'kak verit kazhdoe uho',\n", - " 'tihim recham tvoim',\n", - " 'kak veruem i myi sami',\n", - " 'ne vedaya, chto tvorim!',\n", - " 'gospodi moy bozhe',\n", - " 'zelenoglazyiy moy!',\n", - " 'poka zemlya esche vertitsya',\n", - " 'i eto ey stranno samoy',\n", - " 'poka ey esche hvataet',\n", - " 'vremeni i ognya',\n", - " 'day zhe tyi vsem ponemnogu',\n", - " 'i ne zabud pro menya',\n", - " 'day zhe tyi vsem ponemnogu',\n", - " 'i ne zabud pro menya',\n", - " 'bloody hypertrophy of papillae spewing urethritis like urticaria',\n", - " 'septicaemia filled dermis scorched by acidic uric nocturia',\n", - " 'verrucose urethra',\n", - " 'glutenous condyloma',\n", - " 'ureterocoeles excreting warm, decaying, cystic pemphigus',\n", - " 'gnawing at flesh with rancid uraturial lust',\n", - " 'internalized conflict externalized as war',\n", - " 'hymning thy rebellion lucifer morning star',\n", - " 'bringer of light, forever shrouded by night',\n", - " 'i am hell, a sulphurous lake of fire and suffering',\n", - " 'my blackened heart is a writhing mass of poisonous snakes',\n", - " 'grotesquely slithering as i slowly shed my dying skin',\n", - " 'in darkness',\n", - " 'thou shalt come unto me',\n", - " 'in darkness',\n", - " 'thou shalt worship me',\n", - " 'in darkness',\n", - " 'thou art mine eternally',\n", - " 'thy curse',\n", - " 'all of my lies',\n", - " 'be blessed',\n", - " 'lord of the flies',\n", - " 'scapegoat',\n", - " 'shunned and despised',\n", - " 'my church is my sacrifice',\n", - " 'follow after me into the halls of my damnation',\n", - " 'i wield death like a scythe, reaping annihilation',\n", - " 'a monarch enthroned upon my throne of guilt',\n", - " 'i am hell, a barren shrine to decay and neglect',\n", - " 'uninhabitable, the darkened depths of cold empty space',\n", - " 'my necropolis, the catacombs and tombs of disease',\n", - " 'monumental, the fallen temple of dead deities',\n", - " 'my necrolog, an eternal curse lost in the abyss',\n", - " 'in darkness',\n", - " 'thou shalt come unto me',\n", - " 'in darkness',\n", - " 'thou shalt worship me',\n", - " 'in darkness',\n", - " 'thou art mine eternally',\n", - " 'rise',\n", - " 'synagoga satanae',\n", - " 'lies',\n", - " 'lucifuge rofocale',\n", - " 'rise',\n", - " 'synagoga satanae',\n", - " 'lies',\n", - " 'lucifuge rofocale',\n", - " 'absoluter höllenzwang',\n", - " 'mein infernaler opfergang',\n", - " 'ein auferstanden ungetier',\n", - " 'festgenagelt tief in mir',\n", - " 'et vidi de mare bestiam ascendentem',\n", - " 'habentem capita septem et cornua decem',\n", - " 'et super cornua eius decem diademata et super capita eius nomina blasphemiae',\n", - " 'ich allein bin mein',\n", - " 'ein nichts',\n", - " 'verdorben mein name',\n", - " 'mein leid mein reich',\n", - " 'mein wille mein fluch',\n", - " 'über mich und außer mir',\n", - " 'täglich hungert mein leib',\n", - " 'und dürstet meine seele aufs neue',\n", - " 'ich trage die schuld',\n", - " 'wie ich ertrage die beschuldigungen',\n", - " 'ich bin in versuchung',\n", - " 'und kenne keine erlösung',\n", - " 'denn mein ist das leid',\n", - " 'die wut',\n", - " 'und das streben',\n", - " 'bis zum tod',\n", - " 'amen',\n", - " 'bow down before thy lord below',\n", - " 'bow down before thy lord below',\n", - " 'i shall rise, i shall rule in blasphemy',\n", - " 'and in the end when thou art mine thou will be like me',\n", - " 'in saecula saeculorum',\n", - " 'in stagnum ignis et sulphuris',\n", - " 'in darkness',\n", - " 'thou shalt come unto me',\n", - " 'in darkness',\n", - " 'thou shalt worship me',\n", - " 'in darkness',\n", - " 'thou art mine eternally',\n", - " '\"if we have no peace, it is because we have forgotten that we belong to each other\"',\n", - " '(-mother teresa (1910-1997)-)',\n", - " 'i: codex nemesis alpha omega',\n", - " '\"veni, creator spiritus',\n", - " 'et lumina animam mortali mundi',\n", - " 'ex dolore meo, nunc et semper',\n", - " 'ad splendorem angeli triumphantis.\"',\n", - " 'ii: symphonia ignis divinus (the quantum gate revealed)',\n", - " 'suspiria angeli, lamenta domini',\n", - " \"tempesta di fuoco che sconvolgi l'anima\",\n", - " 'cruciatus angeli, vulnera domini',\n", - " \"consegna all'oblio le scorie del tempo\",\n", - " 'son of a lost superior world',\n", - " \"once i claimed the grace of god and the angels' mortal dawn\",\n", - " \"the red sea is bleeding hate, the volcano's screaming rage\",\n", - " \"it's the archangel hit and downed, moving oceans, shaking grounds\",\n", - " \"the red sea is bleeding hate, the volcano's screaming rage\",\n", - " \"it's the archangel hit and downed, moving oceans, shaking grounds\",\n", - " 'may i shine in the empyrean light',\n", - " \"through my eye of amethyst i'll see\",\n", - " 'draco magnus est proiectus',\n", - " 'draco ille serpens antiquus',\n", - " 'qui seducit universum',\n", - " 'orbem proiectus et in terram',\n", - " 'draco magnus est proiectus',\n", - " 'draco ille serpens antiquus',\n", - " 'qui seducit universum',\n", - " 'orbem proiectus et in terram',\n", - " 'et audivi vocem magnam',\n", - " 'vox in caelo nunc dicentem',\n", - " 'facta est virtus dei nostri regnum',\n", - " 'sancte michael archangele',\n", - " 'princeps militiae caelestis',\n", - " 'malum nunc detrude, sancte michael',\n", - " 'viri sanguinum',\n", - " 'codex nemesis',\n", - " 'veni archangelus',\n", - " 'in dolore meo tu eri et tu es',\n", - " 'viri sanguinum',\n", - " 'codex nemesis',\n", - " 'veni archangelus',\n", - " 'in dolore meo tu eri et tu es',\n", - " 'suspiria angeli, lamenta domini',\n", - " 'la rotta perduta di un cuore ormai naufrago',\n", - " 'cruciatus angeli, vulnera domini',\n", - " \"l'antico furore che sfida il peccato\",\n", - " 'son of a lost superior world',\n", - " \"once i claimed the grace of god and the angels' mortal dawn\",\n", - " \"crossing the tornado's eye to the akashic radiant might\",\n", - " 'in the matrix coded sky, chaos is fed by his new cry',\n", - " \"crossing the tornado's eye to the akashic radiant might\",\n", - " 'in the matrix coded sky, chaos is fed by his new cry',\n", - " 'may i shine in the empyrean light',\n", - " \"through my eye of amethyst i'll see\",\n", - " 'draco magnus est proiectus',\n", - " 'draco ille serpens antiquus',\n", - " 'qui seducit universum',\n", - " 'orbem proiectus et in terram',\n", - " 'draco magnus est proiectus',\n", - " 'draco ille serpens antiquus',\n", - " 'qui seducit universum',\n", - " 'orbem proiectus et in terram',\n", - " 'et audivi vocem magnam',\n", - " 'vox in caelo nunc dicentem',\n", - " 'facta est virtus dei nostri regnum',\n", - " 'sancte michael archangele',\n", - " 'princeps militiae caelestis',\n", - " 'malum nunc detrude, sancte michael',\n", - " 'viri sanguinum',\n", - " 'codex nemesis',\n", - " 'veni archangelus',\n", - " 'in dolore meo tu eri et tu es',\n", - " 'viri sanguinum',\n", - " 'codex nemesis',\n", - " 'veni archangelus',\n", - " 'in dolore meo tu eri et tu es',\n", - " 'iii: the astral convergence',\n", - " '(instrumental)',\n", - " 'iv: the divine fire of the archangel',\n", - " '(sacrum ignis)',\n", - " 'one hidden voice revealed to me:',\n", - " '(fatum)',\n", - " '\"you cannot wear a mortal skin',\n", - " '(fervor ignis ardor)',\n", - " 'you cannot lie, you can\\'t deny the reason why you are alive.\"',\n", - " 'my angels, feed my soul and reign supreme',\n", - " '(ignis sacrum)',\n", - " 'i close my eyes, i feel your hand',\n", - " '(fatum)',\n", - " \"to quantum oceans we'll ascend\",\n", - " '(ignis fervor ardor)',\n", - " 'my genesis, your nemesis',\n", - " \"beyond the stars we'll live again\",\n", - " 'my angels, feed my soul and reign supreme',\n", - " 'reign supreme',\n", - " 'draco magnus est proiectus',\n", - " 'draco ille serpens antiquus',\n", - " 'qui seducit universum',\n", - " 'orbem proiectus et in terram',\n", - " 'draco magnus est proiectus',\n", - " 'draco ille serpens antiquus',\n", - " 'qui seducit universum',\n", - " 'orbem proiectus et in terram',\n", - " 'et audivi vocem magnam',\n", - " 'vox in caelo nunc dicentem',\n", - " 'facta est virtus dei nostri regnum',\n", - " 'sancte michael archangele',\n", - " 'princeps militiae caelestis',\n", - " 'malum nunc detrude, sancte michael',\n", - " 'viri sanguinum',\n", - " 'codex nemesis',\n", - " 'veni archangelus',\n", - " 'in dolore meo tu eri et tu es',\n", - " 'viri sanguinum',\n", - " 'codex nemesis',\n", - " 'veni archangelus',\n", - " 'in dolore meo tu eri et tu es',\n", - " 'viri sanguinum',\n", - " 'codex nemesis',\n", - " 'veni archangelus',\n", - " 'in dolore meo tu eri et tu es',\n", - " 'viri sanguinum',\n", - " 'codex nemesis',\n", - " 'veni archangelus',\n", - " 'in dolore meo tu eri et tu es',\n", - " 'v: of psyche & archetypes (system overloaded)',\n", - " '\"alpha omega, matrix corpus',\n", - " 'fiat in me divina veritas',\n", - " 'ad splendorem angeli triumphantis.\"',\n", - " 'alpha foetus, incarnatus, matrix corpus',\n", - " 'dogma, immortalis revelatio',\n", - " 'alpha foetus, codex magnus, matrix corpus',\n", - " 'neo multiversalis revelatio',\n", - " 'alpha foetus, incarnatus, matrix corpus',\n", - " 'dogma, immortalis revelatio',\n", - " 'alpha foetus, codex magnus, matrix corpus',\n", - " 'neo multiversalis revelatio',\n", - " 'neural zone',\n", - " 'fractal seed of resonance',\n", - " 'new binaural frequency',\n", - " 'energetic stream of power',\n", - " 'soul gate',\n", - " 'telepathic contact',\n", - " \"qi's magnetic portal\",\n", - " 'to unloch the orgone state',\n", - " 'altered cells implosion',\n", - " 'new perception of higher self',\n", - " 'quantum nexus',\n", - " 'nuclear fire',\n", - " 'humans cyborgs',\n", - " 'gods and titans',\n", - " 'neo genetic',\n", - " 'motus karma',\n", - " 'alien foetus',\n", - " 'matrix corpus',\n", - " 'quantum fire',\n", - " 'humans titans',\n", - " 'novus motus',\n", - " 'alien corpus',\n", - " 'alpha ignis',\n", - " 'signum astralis',\n", - " 'flamma omega',\n", - " 'multiversalis',\n", - " 'alpha ignis',\n", - " 'signum astralis',\n", - " 'domin eius',\n", - " 'prometheus',\n", - " 'exodus to organic symmetry',\n", - " 'astral pole of consciousness',\n", - " 'paradox of waves behavior',\n", - " 'embryo of a newborn starchild',\n", - " 'destined to soon carry',\n", - " 'all the weight of atlas woe',\n", - " 'alpha code expanding',\n", - " 'cloned sons rising',\n", - " 'prometheus',\n", - " 'quantum nexus',\n", - " 'nuclear fire',\n", - " 'humans cyborgs',\n", - " 'gods and titans',\n", - " 'neo genetic',\n", - " 'motus karma',\n", - " 'alien foetus',\n", - " 'matrix corpus',\n", - " 'quantum fire',\n", - " 'humans titans',\n", - " 'novus motus',\n", - " 'alien corpus',\n", - " 'alpha ignis',\n", - " 'signum astralis',\n", - " 'flamma omega',\n", - " 'multiversalis',\n", - " 'alpha ignis',\n", - " 'signum astralis',\n", - " 'domin eius',\n", - " 'prometheus',\n", - " 'quantum nexus',\n", - " 'nuclear fire',\n", - " 'humans cyborgs',\n", - " 'gods and titans',\n", - " 'neo genetic',\n", - " 'motus karma',\n", - " 'alien foetus',\n", - " 'matrix corpus',\n", - " 'quantum fire',\n", - " 'humans titans',\n", - " 'novus motus',\n", - " 'alien corpus',\n", - " 'alpha ignis',\n", - " 'signum astralis',\n", - " 'flamma omega',\n", - " 'multiversalis',\n", - " 'alpha ignis',\n", - " 'signum astralis',\n", - " 'domin eius',\n", - " 'prometheus',\n", - " 'alpha ignis',\n", - " 'signum astralis',\n", - " 'flamma omega',\n", - " 'multiversalis',\n", - " 'alpha ignis',\n", - " 'signum astralis',\n", - " 'domin eius',\n", - " 'prometheus',\n", - " 'brivido amaro or piega il fiero volto',\n", - " \"tersa paura al suo levar l'occhio si' stanco\",\n", - " 'fredda visione dal mondo dimenticata',\n", - " \"antica porta ch'al morto sol al vero mal conduce\",\n", - " 'har-kuun!',\n", - " 'seven black towers tearing the skies',\n", - " \"seven the guardians of the underworld's night\",\n", - " 'archways of dark stone, mad gothic maze',\n", - " 'unholy fortress built on anger and hate',\n", - " 'over majestic peaks',\n", - " 'we hail the fallen kings',\n", - " 'great warriors born to win',\n", - " 'celestial blazing steel',\n", - " 'millions of swords and shields',\n", - " 'flaming the coldest wind',\n", - " 'dark gate, primordial sin',\n", - " 'black legends now revealed',\n", - " 'solo',\n", - " 'transcending vision',\n", - " 'ancestral madness',\n", - " 'chaos and oblivion',\n", - " 'gateway to hell',\n", - " 'transcending vision',\n", - " 'ancestral madness',\n", - " 'chaos and oblivion',\n", - " 'gateway to hell',\n", - " \"all'ignoto va il lor sguardo\",\n", - " 'piange il cuore il negato',\n", - " \"nell'oblio di un rimpianto\",\n", - " \"sferza l'ombra il suo passato\",\n", - " 'ruins of mighty evil',\n", - " 'asking for new splendor',\n", - " \"cosmic hell's dominion\",\n", - " \"nekron's resurrection\",\n", - " 'ruins of mighty evil',\n", - " 'asking for new splendor',\n", - " \"cosmic hell's dominion\",\n", - " \"nekron's resurrection\",\n", - " '…',\n", - " 'burn the skies of gods and angels',\n", - " 'flames of force divine',\n", - " 'the great call of shining heavens',\n", - " 'storms the walls of kron',\n", - " 'the ancient fires of har-kuun',\n", - " 'the ancient fires of har-kuun',\n", - " 'har-kuun, har-kuun',\n", - " 'chorus:',\n", - " 'illuminati sumus',\n", - " 'adhus divinitus',\n", - " 'praeditio maledictum',\n", - " 'infernus rex foedus',\n", - " 'hibernus tempus anni',\n", - " 'ventorum furia',\n", - " 'obscuritas naturae',\n", - " 'aeterna tenebra',\n", - " 'illuminati sumus',\n", - " 'adhus divinitus',\n", - " 'praeditio maledictum',\n", - " 'infernus rex foedus',\n", - " 'hibernus tempus anni',\n", - " 'ventorum furia',\n", - " 'obscuritas naturae',\n", - " 'aeterna tenebra',\n", - " 'eterno fuoco ancor vivo ed or pulsante',\n", - " 'pietra opaca di ruvido spento riflesso',\n", - " 'morte, tormento, rovina di sangue ed odio',\n", - " 'pena, dolore, o gotico cuor di lamento e pianto',\n", - " 'har-kuun!',\n", - " 'sad tales forgotten, mysterious for most',\n", - " 'now are revealing all their dangerous words',\n", - " 'another dark entrance, another dark gate',\n", - " 'true gothic nightmare, an infernal descent',\n", - " 'over majestic peaks',\n", - " 'we hail the fallen kings',\n", - " 'great warriors born to win',\n", - " 'celestial blazing steel',\n", - " 'millions of swords and shields',\n", - " 'flaming the coldest wind',\n", - " 'dark gate, primordial sin',\n", - " 'black legends now revealed',\n", - " 'solo',\n", - " 'infinite shadows',\n", - " 'cosmic damnation',\n", - " 'dark reign of terror',\n", - " 'evil reborn',\n", - " 'infinite shadows',\n", - " 'cosmic damnation',\n", - " 'dark reign of terror',\n", - " 'evil reborn',\n", - " 'nel suo infido lamento',\n", - " 'un segreto ferma il passo',\n", - " \"se nel calice e' versato\",\n", - " 'rima el sangue del dannato',\n", - " 'ruins of mighty evil',\n", - " 'asking for new splendor',\n", - " \"cosmic hell's dominion\",\n", - " \"nekron's resurrection\",\n", - " 'ruins of mighty evil',\n", - " 'asking for new splendor',\n", - " \"cosmic hell's dominion\",\n", - " \"nekron's resurrection\",\n", - " '…',\n", - " 'burn the skies of gods and angels',\n", - " 'flames of force divine',\n", - " 'the great call of shining heavens',\n", - " 'storms the walls of kron',\n", - " 'the ancient fires of har-kuun',\n", - " 'the ancient fires of har-kuun',\n", - " 'har-kuun, har-kuun',\n", - " 'chorus:',\n", - " 'illuminati sumus',\n", - " 'adhus divinitus',\n", - " 'praeditio maledictum',\n", - " 'infernus rex foedus',\n", - " 'hibernus tempus anni',\n", - " 'ventorum furia',\n", - " 'obscuritas naturae',\n", - " 'aeterna tenebra',\n", - " 'illuminati sumus',\n", - " 'adhus divinitus',\n", - " 'praeditio maledictum',\n", - " 'infernus rex foedus',\n", - " 'hibernus tempus anni',\n", - " 'ventorum furia',\n", - " 'obscuritas naturae',\n", - " 'aeterna tenebra',\n", - " 'solo',\n", - " 'aidus esti-io gnata uer axsin bitous uertassit in uextlon',\n", - " 'etic uextlon clouir',\n", - " 'garion sepimor, brater',\n", - " 'dligentes bisiomos',\n", - " 'deuinin budin ro-plecomos, brater',\n", - " 'age, rouraxsamos',\n", - " 'aritere tres rhenon dexsoui',\n", - " 'tres alpes epro-crabantes',\n", - " 'eriwedu arcipi',\n", - " 'laxsarin - uroncin beromos',\n", - " 'uodextes - adandamos',\n", - " 'emmos nis adgarion',\n", - " 'atisepitor silon antumni',\n", - " 'ansi cretimi, brater',\n", - " 'rata deuon beunti uer toutas gallias',\n", - " 'budi deuon, brater ulates blatouesant',\n", - " 'ecce dominus dissipabit terram:',\n", - " 'et nudabit eam, et affliget faciem ejus',\n", - " 'et disperget habitatores ejus',\n", - " 'for by fire and by his sword will the lord plead with all flesh',\n", - " 'but countless shall be the slain of man',\n", - " 'dissipatione dissipabitur terra, et direptione prædabitur;',\n", - " 'dominus enim locutus est verbum hoc',\n", - " 'for by fire and by his sword will the lord plead with all flesh',\n", - " 'but countless shall be the slain of man',\n", - " 'propter hoc maledictio vorabit terram',\n", - " 'et peccabunt habitatores ejus;',\n", - " 'ideoque insanient cultores ejus',\n", - " 'et relinquentur homines pauci',\n", - " 'for by fire and by his sword will the lord plead with all flesh',\n", - " 'but countless shall be the slain of man',\n", - " 'i kill you in the name',\n", - " 'and to the honor of lucifer',\n", - " 'helon, taul, varf, pan',\n", - " 'homonoreum, clemialh, sergueath, agla',\n", - " 'tetragrammaton, casely, scirin, lucifer',\n", - " 'lucifer, ouyar, chameron, aliseon',\n", - " 'mandousin, premy, orient, esmony',\n", - " 'eparinesont, estitot, dumosson, danochar',\n", - " 'casmiel, hayes, fabelleronthou',\n", - " 'sodomo, peatham, venite, lucifer',\n", - " 'amen',\n", - " 'okoshichatta ka na jaa choudo ii ya',\n", - " 'asa made tsukiatte yo',\n", - " 'mado no koori ga toke dasu koro ni wa kitto kaeru kara sa',\n", - " 'kodomotachi ni wa warui kedo kotoshi wa akiramete yo',\n", - " 'kore demo kanari mayotte zuibun to herashitan dakedo',\n", - " \"i'm santa claus kimi ni senko no purezento\",\n", - " 'doremo koremo yasumono nan dakedo',\n", - " 'santa claus ichinen ni ichido dake dakara',\n", - " 'santa claus kimi ni zenbu ageru yo',\n", - " 'aoi garasu dama ni bokura no bouken ga',\n", - " 'doko mademo tsuzuku you ni negai wo kaketoita',\n", - " \"i'm santa claus kimi ni senko no purezento\",\n", - " 'doremo koremo magaimo no dakedo',\n", - " 'santa claus ichinen ni ichido dake dakara',\n", - " 'santa claus kimi ni zenbu ageru yo',\n", - " \"you're the whole audience when i sing\",\n", - " \"you're all the listeners when i speak\",\n", - " \"you're everyone surrounds me\",\n", - " \"you're all that matters to me\",\n", - " 'mado no koori ga toke dasu koro ni wa kitto kaeru kara sa',\n", - " \"i'm santa claus boku ni saigo no purezento\",\n", - " 'santa claus owakare no kisu wo shite kure yo',\n", - " 'santa claus',\n", - " \"i've got to go back to the place i'm living in\",\n", - " \"i'm living in the cold place\",\n", - " \"nausea' evacuation\",\n", - " \"copremesis' defecation\",\n", - " 'digestive system full of excrements',\n", - " 'lacrimation with regurgitation of crap',\n", - " 'chronic disgorgement with constipation',\n", - " 'emesis by phlegmy chunk',\n", - " 'suffocation with deglutition of mucus',\n", - " 'spume on the maxilla with eructation',\n", - " 'spitting of saliva with expectoration',\n", - " 'delirium with convulsive emunction',\n", - " \"chyme's mixture on vomited bust\",\n", - " 'mucopurulent discharge on a clitoris',\n", - " 'mouldy impetigo on shaggy cunt',\n", - " 'faeces about oozing abscess',\n", - " 'strangulation of glans by prepuce',\n", - " 'pyorrhoea into obstructed salpinx',\n", - " \"spasm of scrotal sac' with urination\",\n", - " \"tits disfigured' by lichen and dartre\",\n", - " 'palpation of intumescent tonsils',\n", - " 'irritation of oesophagus by vomits',\n", - " \"sperm's clumps into pharyngal cavity\",\n", - " 'aspiration of sputa and spittles',\n", - " 'cacostomia with virulent sternutation',\n", - " 'stool and piss on a decubitus',\n", - " 'secretion of urinary calculus and semen',\n", - " 'corrupt taenia from diarrhoeal excretion',\n", - " 'brr brr!',\n", - " 'brr brr!',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'get-get-get-get low when the whistle go',\n", - " '(woo!)',\n", - " 'brr brr! (woo!)',\n", - " '(woo!)',\n", - " 'get-get-get low when the whistle go',\n", - " '(woo!)',\n", - " 'brr brr! (woo!)',\n", - " '(woo!)',\n", - " 'get-get-get low when the whistle go',\n", - " '(woo!)',\n", - " 'get-get-get get low (woo!)',\n", - " '(woo!)',\n", - " 'barbès, yalla habibi',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'get low, get-get-get low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'low low low low',\n", - " 'get-get-get-get low when the whistle go',\n", - " '(woo!)',\n", - " 'brr brr! (woo!)',\n", - " '(woo!)',\n", - " 'get-get-get low when the whistle go',\n", - " '(woo!)',\n", - " 'brr brr! (woo!)',\n", - " '(woo!)',\n", - " 'get-get-get get low',\n", - " 'low low low low',\n", - " 'low low low low... (woo!)',\n", - " 'get-get-get get low',\n", - " 'low low low low',\n", - " 'low low low low… (woo!)',\n", - " 'barbès, yalla habibi',\n", - " '(yalla habibi, yalla habibi',\n", - " 'yalla habibi, yalla habibi',\n", - " 'yalla habibi, yalla habibi)',\n", - " 'ambinata in siraxta',\n", - " 'cailon areuedons in nemesi',\n", - " 'satiion branon tosagiiet uo moudas',\n", - " 'samali gaison exetontin',\n", - " 'rete pos uoretun mapon celti',\n", - " 'con lami nertaci cerdacipe',\n", - " \"exete 'os brane exte 'os\",\n", - " \"etic laxsci 'os aidu laxsci 'os\",\n", - " 'etic toage gariion toage',\n", - " 'etic uregepe tunceton',\n", - " \"exete 'os brane exte 'os\",\n", - " \"etic laxsci 'os aidu laxsci 'os\",\n", - " 'etic toage gariion toage',\n", - " 'etic uregepe tunceton',\n", - " 'loux in aredubu, uregetiio tunceton',\n", - " 'cauaros uer agromagos etic bardos',\n", - " 'uer tenetin',\n", - " 'aidus laxscit in menuanbi',\n", - " 'suuidon',\n", - " 'druuis suuidbo etic lama cerdon papon',\n", - " 'tigerne trienepace',\n", - " 'lugu romeda silon',\n", - " 'antumni',\n", - " \"exete 'os brane exte 'os\",\n", - " \"etic laxsci 'os aidu laxsci 'os\",\n", - " 'etic toage gariion toage',\n", - " 'etic uregepe tunceton',\n", - " \"exete 'os brane exte 'os\",\n", - " \"etic laxsci 'os aidu laxsci 'os\",\n", - " 'etic toage gariion toage',\n", - " 'etic uregepe tunceton',\n", - " \"exete 'os brane exte 'os\",\n", - " \"etic laxsci 'os aidu laxsci 'os\",\n", - " 'etic toage gariion toage',\n", - " 'etic uregepe tunceton',\n", - " \"exete 'os brane exte 'os\",\n", - " \"etic laxsci 'os aidu laxsci 'os\",\n", - " 'etic toage gariion toage',\n", - " 'etic uregepe tunceton',\n", - " \"exete 'os brane exte 'os\",\n", - " \"etic laxsci 'os aidu laxsci 'os\",\n", - " 'etic toage gariion toage',\n", - " 'etic uregepe tunceton',\n", - " \"exete 'os brane exte 'os\",\n", - " \"etic laxsci 'os aidu laxsci 'os\",\n", - " 'etic toage gariion toage',\n", - " 'etic uregepe tunceton',\n", - " 'lechery during vaginal intercourse',\n", - " 'unconventional orgastic vulgarities',\n", - " 'necking with silicone boobs',\n", - " 'masochistic ligation of penis',\n", - " \"lesbian's cancer and varices\",\n", - " 'smegma on anal dildo',\n", - " 'unnatural gratification of fetishism',\n", - " \"masturbator's devourment of sperm\",\n", - " 'gerontophilic concubine for pornography',\n", - " \"homosexual's testicular grafting\",\n", - " 'orally excited reproductive instinct',\n", - " 'fellatio and cunnilinctus',\n", - " 'repulsion of gene mutation',\n", - " \"lilliputian's hormonal disturbance\",\n", - " 'individuum with all gonads',\n", - " 'metabolic aberration of hermaphrodite',\n", - " \"paedophile's pollution and meteorism\",\n", - " 'gagging of gigantean eunuch',\n", - " 'psoriatic pectus of transvestite',\n", - " 'sliminess and crabs on the buttocks',\n", - " 'moribund castrated necrophil',\n", - " 'sodomy and obscene incest',\n", - " 'deviated erection in sadism',\n", - " 'infamous coprophilia, mysophilia',\n", - " 'auto erotic lubrication of ass',\n", - " 'acquired immune deficiency syndrome',\n", - " 'ea! lindo illuvatar, lindo ea, pellia pellerin',\n", - " 'im menel im arda mano eru',\n", - " 'vilya, nar, nen, kemen lindo ea',\n", - " 'let it be! sing illuvatar. sing \"let it be\" beyond the void, beyond remembering',\n", - " 'un heaven, in earth, exalt the one',\n", - " 'air, fire, water, earth, sing \"let it be!\"',\n", - " 'welcome!',\n", - " 'to the elder ruins again',\n", - " 'the wind whispers beside the deep forest',\n", - " 'darkness will show us the way',\n", - " 'heic noenum pax, here is no peace',\n", - " 'the sky has darkened thirteen as',\n", - " 'we are collected woeful around a book',\n", - " 'made of human flesh',\n", - " 'de grandae vus antiquus mulum tristis',\n", - " 'arcanas mysteria scriptum',\n", - " 'the books blood written pages open',\n", - " 'invoco crentus domini de daemonium',\n", - " 'we follow with our white eyes',\n", - " 'the ceremonial proceeding',\n", - " 'heic noenum pax, bring us the goat',\n", - " 'rex sacriticulus mortifer',\n", - " 'in the circle of stone coffins',\n", - " 'we are standing with our black robes on',\n", - " 'holding the bowl with unholy water',\n", - " 'psychomantum et precr exito annos major',\n", - " 'ferus netandus sacerdos magus mortem animalium',\n", - " 'onisan kochira te no naru hou e gion de asonda osanai hi o',\n", - " 'nihon ningyou no you na kimi wa hyoujou hitotsu kaenai mama de',\n", - " 'sotto me o toji soine o shite nennen okorori yo...',\n", - " 'ima wa nakihaha o omou kono ko ni kasanete wa',\n", - " 'mainichi maiban komoriuta to mikazuki se ni yurayura',\n", - " 'kururi, furari, fuwari, kurari',\n", - " 'kyou mo mada koto no ne o kanadeyou',\n", - " 'kururi, furari, fuwari, kurari',\n", - " 'kururi, furari, sawagu',\n", - " 'kururi, furari, fuwari, kurari',\n", - " '\"mother and you and my new relation\"',\n", - " \"12 cd's for the price of 1\",\n", - " 'without thinking i put my hand on your neck',\n", - " \"i'm gonna sing the last lullaby for you while you smile at me\",\n", - " 'you say nothing and you do nothing',\n", - " 'i wonder why i fell in love with you',\n", - " 'impossible love',\n", - " 'te no hira o kasaneteru chiisa na kimi no te',\n", - " 'tsuriawanu yume nakigara to ai',\n", - " 'kururi, furari, fuwari, kurari',\n", - " 'kururi, furari, fuwari, kurari',\n", - " 'kururi, furari, fuwari, kurari',\n", - " 'kururi, furari, sawagu',\n", - " 'adaptogenic endocrine hormone',\n", - " 'cytokine transferred allostasis',\n", - " 'all-heal panacea',\n", - " 'adrenal axis',\n", - " 'hormonal balance regulated',\n", - " 'neuroendocrine trinity',\n", - " 'in harmonia hypothalamus',\n", - " 'cytokine allostasis',\n", - " 'all-heal panacea',\n", - " 'all heal panax...',\n", - " 'all heal panax...',\n", - " 'surfeit epistaxis',\n", - " 'crimson stream',\n", - " 'choking coagulation',\n", - " 'gorge on nostrum araliaceae',\n", - " 'open the floodgates of red',\n", - " 'ginsenoside',\n", - " 'triterpine saponin',\n", - " 'phagocytosis augmented',\n", - " 'interferens amass',\n", - " 'in flagellum opposition',\n", - " 'pathogen deletion',\n", - " 'macrophagic satiety',\n", - " 'suni en ma taili suni en ma taili',\n", - " 'suni en ma lov',\n", - " 'endori ma suni en toro',\n", - " 'en sera en dolor ori',\n", - " 'orma mi oni dolo',\n", - " 'orma i mundi lei aten undeli',\n", - " 'le loani ur lov',\n", - " 'i unti in ma ensodie',\n", - " 'emor tudi e undi lov',\n", - " 'suni en talien da lov ta lien',\n", - " 'suni en talien adoro',\n", - " 'suni en talien da lov ta lien',\n", - " 'delisun mi gund mi enda',\n", - " 'i len mi suelen i mundi undela',\n", - " 'gund gund mi undela mi undela',\n", - " 'i lend i talen mian inson mi',\n", - " 'i talen mia es on mi i tolen mi tae',\n", - " 'gund mi enda',\n", - " \"you're living angel, you're swimming angel\",\n", - " \"you're leaving angel, you're sweating angel\",\n", - " \"look myself i don't hide my hurts\",\n", - " 'in this travel come on to hug',\n", - " 'welcome to the elder ruins again',\n", - " 'the wind whispers beside the deep forest',\n", - " 'darkness will show us the way',\n", - " 'the sky has darkened',\n", - " 'thirteen as we are',\n", - " 'we are collected woeful around a book',\n", - " 'made of human flesh',\n", - " 'heic noenum pax - here is no peace',\n", - " 'de grandae vus antiquus mulum tristis',\n", - " 'arcanas mysteria scriptum',\n", - " 'the books blood written pages open',\n", - " 'invoco crentus domini de daemonium',\n", - " 'we follow with our white eyes',\n", - " 'the ceremonial proceeding',\n", - " 'rex sacriticulus mortifer',\n", - " 'in the circle of stone coffins',\n", - " 'we are standing with our black robes on',\n", - " 'holding the bowl with unholy water',\n", - " 'heic noenum pax - bring us the goat',\n", - " 'psychomantum et precr exito annos major',\n", - " 'ferus netandus sacerdos magus',\n", - " 'mortem animalium',\n", - " 'spoken',\n", - " 'na brictom uidluias uidlu tigontias so adgagsona severim tertionicnim lidssatim liciatim eíanom uoduiuoderce lunget utonid ponc nitixsintor sises duscelinatia in eíanom anuana esi andernados brictom banona flatucias paulla dona potitius iaia duxtir adiegias potitam atir paullias severa dusxtir ualentos dona paullius adiega matir aiías potita dona primus i abesias',\n", - " 'etic epotiniosco etic ruficna casta dona nonus co etic diligenti soc ulatio nicnom aucitionim aterem potiti ulatucia mat banonias ne incitas biontutu in das mnas ueronadas brictas lissinau severim licinaue tertioni cnim eíabi tiopritom biietutu semiti ratet severa tertionicna du ne incitas biontutus anatia nepi anda ad incorsonda pilu donicon sincarata',\n", - " 'the man of ea am i',\n", - " 'the mand of dakima am i',\n", - " ...]},\n", - " 'data': ['catoues caletoi',\n", - " 'urit namantas anrimius',\n", - " 'ro- te isarnilin -urextont',\n", - " 'au glannabi rhenus',\n", - " 'ad ardus alpon',\n", - " \"tou' magisa matua\",\n", - " \"tou' brigas iuerilonas\",\n", - " 'budinas bardon',\n", - " 'clouos canenti',\n", - " 'anuanon anmaruon',\n", - " 'cauaron colliton',\n", - " 'adio- biuotutas -robirtont',\n", - " 'uolin cridili',\n", - " 'are rilotuten atrilas',\n", - " 'a ulati, mon atron',\n", - " \"a brogi'm cumbrogon!\",\n", - " \"exs tou' uradiu uorrobirt\",\n", - " 'cenetlon clouision',\n", - " 'cauaron caleton',\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " \"tou' mnas et genetas\",\n", - " 'tigernias, tecas',\n", - " \"tou' uiroi uertamoi\",\n", - " 'in sose cantle cingeton',\n", - " 'in- gutoues -beronti',\n", - " 'cante cladibu in lame',\n", - " 'exsrextos canumi:',\n", - " 'a ulati, mon atron',\n", - " \"a brogi'm cumbrogon!\",\n", - " \"exs tou' uradiu uorrobirt\",\n", - " 'cenetlon clouision',\n", - " 'cauaron caleton',\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'a ulati, mon atron',\n", - " \"a brogi'm cumbrogon!\",\n", - " \"exs tou' uradiu uorrobirt\",\n", - " 'cenetlon clouision',\n", - " 'cauaron caleton',\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'a ulati, mon atron',\n", - " \"a brogi'm cumbrogon!\",\n", - " \"exs tou' uradiu uorrobirt\",\n", - " 'cenetlon clouision',\n", - " 'cauaron caleton',\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'a blatu blande bitos biuon!',\n", - " \"a ‚m' atrila, a ‚ma helvetia!\",\n", - " 'ne regv. na gandobe inte noviio',\n", - " 'extincon. papi coriiosed exa o',\n", - " 'mesamobi molatvs certiognv sveticon',\n", - " 'pape bovdi. macarni. papon mar',\n", - " 'nane devorbvetid loncate',\n", - " 'nv gnate ne dama gvssov n',\n", - " 'vero ne cvrri ne papi cos pape ambito',\n", - " 'papi bovdi ne tetv batoron veia svebreto sv',\n", - " 'citbio ledgamo berto',\n", - " 'nene devv bvit on cate',\n", - " 'on the latin alphabet:',\n", - " 'karangyny ottur chyran',\n", - " 'kaan deerde sholban yshkash',\n", - " 'kattyrangnan odu chainan',\n", - " 'karam ezhim iyi karaa',\n", - " 'karak bazyp chivesh derge',\n", - " 'kadyk churek shimirt kynnyr',\n", - " 'kalbak syryi kirbi helen',\n", - " 'karam ezhim charash karaa',\n", - " 'kaiyzhe-da yrai berze',\n", - " 'khaialanyp kostup chorur',\n", - " 'khazhan shagda uttundurbas',\n", - " 'karam ezhim charash karaa',\n", - " 'khazhan shagda uttundurbas',\n", - " 'karam ezhim charash karaa',\n", - " 'karam ezhim charash karaa',\n", - " 'english translation',\n", - " 'the goat of fukk',\n", - " 'with cock of fire',\n", - " 'converte linguam tuam',\n", - " 'in natibus meis',\n", - " 'lucifer incestus',\n", - " 'praise the evilchurch',\n", - " 'an occult hellride',\n", - " 'triumph of sin',\n", - " 'converte linguam tuam',\n", - " 'in natibus meis',\n", - " 'lucifer incestus',\n", - " 'praise the evilchurch',\n", - " \"don't be afraid! just move ahead!\",\n", - " 'saegira reta daichi e',\n", - " \"don't look back! keep on going!\",\n", - " 'ima kakedashite yuku',\n", - " 'eien ni kanjiru shijima o kirisaku',\n", - " 'sakebi ni karamitsuku onore no kanashimi ga',\n", - " \"don't hesitate! don't lose your way!\",\n", - " 'kutsugaesa reta asu',\n", - " \"don't look back! keep on going!\",\n", - " 'ima torimodosu tame',\n", - " 'setsuna no mayoi sae mirai o ubai yuku',\n", - " 'afureru ikari mo kono-te ni nigirishime',\n", - " \"i'll fly to the sky on wings of justice\",\n", - " 'fighting the evil, bringing all peace',\n", - " \"i'll fly over world on wings of justice\",\n", - " 'chasing the evil until the honor will rule again',\n", - " 'just fight against the traitor',\n", - " 'flames rage in my heart',\n", - " 'wielding my sword, i face the overwhelming evil',\n", - " 'koboreochi-sona omoi o nosete',\n", - " 'takeru hono o matotte',\n", - " 'let us scream! just move ahead!',\n", - " 'haitoku no daichi e',\n", - " 'yuku te o fujiru ganzen no kyoi sae',\n", - " 'ashidori togirezu nagitaoshi tsudzukete',\n", - " 'kesshite taenai omoi o nosete',\n", - " 'susabu ten kaminari nogotoku',\n", - " 'koboreochi-sona omoi o nosete',\n", - " 'aikoku to shinka no hoko yo todoroke',\n", - " 'sakari moe yuku hono to ten kaminari nogotoku',\n", - " 'kono-te ni subete o takushi furue',\n", - " 'sator arepo tenet opera rotas, the inner becomes the outer',\n", - " 'in my nekromanteion i summoned a son of smokeless fire',\n", - " '*',\n", - " 'the rebis transmutates into azoth, the pull of ahriman is overcome',\n", - " 'visita interiora terrae rectificandoque invenies occultum lapidem',\n", - " '*',\n", - " 'in the psychotronic model of reality telluric power is valid',\n", - " 'harness it, treasure it, in a hypnagogic state of mind',\n", - " 'trapped in the space-time continuum',\n", - " 'nympholeptic for the numinous',\n", - " 'et in arcadia ego',\n", - " 'ashes and flies mix in the choking wind',\n", - " 'blinded eyes behold that which is not',\n", - " 'my inward nekyia reveals discarded ones',\n", - " 'voiceless angelic figures disavow with vomitous troparion',\n", - " 'i summon the twin to the metatron',\n", - " 'protect the sickened spawn of mine',\n", - " 'i travel millennia to reach thy throat',\n", - " 'and slash it with the left hand',\n", - " 'fall again cherub of the ark',\n", - " 'gather pitiful cries together as garland',\n", - " 'and descend the enumeration of ten',\n", - " 'disgrace is thine to bear',\n", - " 'ad te suspiramus, gementes et flentes',\n", - " 'in hac lacrimarum valle',\n", - " 'me immundum munda tuo sanguine',\n", - " 'o memoriale mortis domini',\n", - " 'vere passum, immolatum in cruce',\n", - " 'sicut erat in principio',\n", - " 'et nunc',\n", - " 'et semper',\n", - " 'et in saecula saeculorum',\n", - " 'from camellia sinensis',\n", - " 'forthwith it flows',\n", - " 'polyphenolic antioxidant',\n", - " 'juventas immortal',\n", - " 'harnessing tannin',\n", - " 'tied in glass chains',\n", - " 'chaining the catechin',\n", - " 'theobroma dominate',\n", - " 'deific sustenance',\n", - " 'the coming decay, genesis to the end',\n", - " 'for the stinking face of mankind condemned',\n", - " 'sacred erosion, the revelation denied',\n", - " 'de praestigiis daemonum, ominous light',\n", - " 'beyond sanctorum',\n", - " 'rex tremendae, son of perdition',\n", - " 'rex tremendae, lord of cynism',\n", - " 'rex tremendae, shining sovereign',\n", - " 'the shadows are bent, by his presence malign',\n", - " 'led to the gallows, processions of death',\n", - " 'descend to the blind world, souls ripped from flesh',\n", - " 'tyrannical kingdom, dimensions of pain',\n", - " 'sub terra inferis, consumed by the flames',\n", - " 'beyond sanctorum',\n", - " 'rex tremendae, son of perdition',\n", - " 'rex tremendae, lord of cynism',\n", - " 'rex tremendae, shining sovereign',\n", - " 'the shadows are bent, by his presence malign',\n", - " 'rex tremendae majestatis',\n", - " 'rex tremendae majestatis',\n", - " 'kono karada taema naku',\n", - " 'obie tsudzukete ita',\n", - " 'ikinagara boukyaku no kyokkei ni shosarete',\n", - " 'tatoe karada naku shite mo',\n", - " 'kioku no naka de iki nagarae sasete',\n", - " 'come on',\n", - " 'welcome to my darkness world',\n", - " 'i will lead you in my voice',\n", - " 'welcome to my darkness world',\n", - " 'i will lead you',\n", - " 'tomodachi mo ryoushin mo',\n", - " 'watashi no me wo minai',\n", - " 'kai neko mo norainu mo watashi ni chikayoranai',\n", - " 'sora utsusu asatsuyu ni mo',\n", - " 'kitto watashi no sugata wa utsuranai',\n", - " 'come on',\n", - " 'welcome to my darkness world',\n", - " 'i will lead you in my voice',\n", - " 'welcome to my darkness world',\n", - " 'i will lead you',\n", - " 'watashi wo mite koe wo kiite',\n", - " 'mina no naka ni watashi ga inai',\n", - " 'come on',\n", - " 'welcome to my darkness world',\n", - " 'i will lead you in my voice',\n", - " 'welcome to my darkness world',\n", - " 'i will lead you in my voice',\n", - " 'welcome to my darkness world',\n", - " 'i will lead you in my voice',\n", - " 'welcome to my darkness world',\n", - " 'i will lead you in my voice',\n", - " 'sa senit conectos onda bocca nene',\n", - " 'rionti onda boca ne on',\n", - " 'barnaunom ponc nit issintor sies eianepian',\n", - " 'digs ne lisantim ne licia',\n", - " 'ne rodatim biont utu semnanom sagitiont',\n", - " 'seuerim lissatim licia',\n", - " 'tim anandognam acolut utanit andognam da bocca diomine',\n", - " 'inside se bnanom',\n", - " 'inside se brictom',\n", - " 'in eainom anuana sanander',\n", - " 'inside se bnanom',\n", - " 'inside se brictom',\n", - " 'in eainom anuana sanander',\n", - " 'inside se bnanom',\n", - " 'eainom anuana sanander',\n", - " 'inside brictom',\n", - " 'inside bnanom',\n", - " 'inside brictom',\n", - " 'in eainom anuana sanander!',\n", - " 'aia cicena nitianncobueðliðat iasuolsonponne antumnos',\n", - " 'nepon nesliciata neosuode neiauodercos nepon su biiontutu',\n", - " 'semn anom adsaxs nadoc suet petidsiont sies peti sagitiontias',\n", - " 'seu erim tertio lissatim is anandogna ictontias',\n", - " 'inside se bnanom',\n", - " 'inside se brictom',\n", - " 'in eainom anuana sanander',\n", - " 'inside se bnanom',\n", - " 'inside se brictom',\n", - " 'in eainom anuana sanander',\n", - " 'inside se bnanom',\n", - " 'inside se brictom',\n", - " 'inside se bnanom',\n", - " 'eainom anuana sanander!',\n", - " 'inside brictom',\n", - " 'inside bnanom',\n", - " 'inside brictom',\n", - " 'in eainom anuana sanander!',\n", - " '------------',\n", - " 'in eainom anuana sanander',\n", - " 'inside se bnanom',\n", - " 'inside se brictom',\n", - " 'inside se bnanom',\n", - " 'eainom anuana sanander!',\n", - " 'inside brictom',\n", - " 'inside bnanom',\n", - " 'inside brictom',\n", - " 'in eainom anuana sanander!',\n", - " 'nas aakhu khan she en asbiu',\n", - " 'ua tehani, ua temam, ua khames re per akhu',\n", - " 'ua khames em bah khan she en amu',\n", - " 'ua khames em bah khan she en seshet',\n", - " 'temam aakhu thaui, temam aakhu shemsu satha',\n", - " 'saakhu nebu tchaut, saakhu nebu khebentiu',\n", - " 'snemeh em bah akhu-ager',\n", - " 'tata ab uk em she en asbiu',\n", - " 'ta-ua akh uk em she en nesersert',\n", - " 'meh u she en shemmet, meh u she en shamu',\n", - " 'ua uk, ua uk, ua uk aat en khet',\n", - " 'ua uk, ua uk, ua uk',\n", - " 'by the pilar pnath i call you',\n", - " 'nephreu - ka nai hadoth',\n", - " 'nocturnal necromany',\n", - " 'my brother in almonsin-metraton',\n", - " 'you cannot decieve me',\n", - " 'for i know that your accursed',\n", - " 'magic is true madness out of time',\n", - " 'and a horror from beyond the shperes',\n", - " 'veni, veni, veni',\n", - " 'adonai saboath, metraton on agla',\n", - " 'mathon, verbun pythonicum',\n", - " 'mysterium salamandrae, conventus',\n", - " 'sylvorum, antra gnomorum',\n", - " 'veni, veni, veni',\n", - " 'daemonia coeli god, almonsin',\n", - " 'gibor, jehosua, evam, zariatnatmik',\n", - " 'yi-nash-yog-sothoth-',\n", - " 'he-igeb-fi-throdog-yah!',\n", - " 'veni, veni, veni',\n", - " 'e mortuis, me duxisti',\n", - " 'dilecta mi, te consequens',\n", - " 'ad viventes, sed inferis',\n", - " 'nunc carens, excrucior',\n", - " 'now when death awaits me i am calm',\n", - " 'i surrender to the burden of this life',\n", - " 'all the sings are glowing in the dark',\n", - " 'a final rest, a calling to the ones who are blessed',\n", - " 'ad viventes',\n", - " 'aetatis brevis, levitate',\n", - " 'elicitus, a tenebris',\n", - " 'dierum onus, me frangens',\n", - " 'sollicitus, corde ardens',\n", - " 'now when death awaits me i am calm',\n", - " 'i surrender to the burden of this life',\n", - " 'all the sings are glowing in the dark',\n", - " 'a final rest, a calling to the ones who are blessed',\n", - " 'ad viventes',\n", - " 'quasi praesens, tecum fui',\n", - " 'crevi lucem, a tenebris',\n", - " 'aetatis onus, me frangens',\n", - " 'e mortuis, ad viventes',\n", - " 'utu lei san no pienso no utu oe',\n", - " 'donlei sun doloe hia do lea lan',\n", - " 'da fiu tra donta uso',\n", - " 'leno niar mo clads nior',\n", - " 'denta lea no',\n", - " 'un te lian te lian te u don',\n", - " 'te lian',\n", - " 'talien te lian',\n", - " 'taliun talain taia layalin',\n", - " 'ta laia lien taliun talain te lian',\n", - " 'taliun talie on',\n", - " 'taliun talien te lian',\n", - " 'taliun dale on',\n", - " 'tali undate lian',\n", - " 'in len mi cio',\n", - " 'silen cio',\n", - " 'uxellos tou arduenna et bivos to brixtos (x2)',\n", - " \"togosse can'iegis sitone uxamos (x2)\",\n", - " 'cainis esue immi spacto',\n", - " \"cainis esue can'tou vida\",\n", - " \"lavenocaron albeis, venon to'bannias (x2)\",\n", - " \"veno-ne ollos trano, et'ollo moripennon (x2)\",\n", - " 'cainis esue immi spacto',\n", - " \"cainis esue can'tou vida\",\n", - " \"vidus, abona, e'dubron, magos etic nantos (x2)\",\n", - " \"reipatro catros et'locun bivos (x2)\",\n", - " 'cainis esue immi spacto',\n", - " \"cainis esue can'tou vida\",\n", - " 'choir (x2):',\n", - " \"cara'toi tecos tersos\",\n", - " 'canumi uis devos',\n", - " 'uxellos cainia',\n", - " 'imon coimos elvetia',\n", - " 'uxellos tou arduenna et bivos to brixtos (x2)',\n", - " \"togosse can'iegis sitone uxamos (x2)\",\n", - " 'cainis esue immi spacto',\n", - " \"cainis esue can'tou vida\",\n", - " 'choir (x2):',\n", - " \"cara'toi tecos tersos\",\n", - " 'canumi uis devos',\n", - " 'uxellos cainia',\n", - " 'imon coimos elvetia',\n", - " 'together (x2):',\n", - " \"cara'toi tecos tersos\",\n", - " 'canumi uis devos',\n", - " 'uxellos cainia',\n", - " 'imon coimos elvetia',\n", - " '0-9',\n", - " '10 years',\n", - " '100 demons',\n", - " '1000 homo djs',\n", - " '12 stones',\n", - " '1349',\n", - " '16volt',\n", - " 'the 1975',\n", - " '2nd and archer',\n", - " '2x4',\n", - " '3',\n", - " '3 doors down',\n", - " '3 inches of blood',\n", - " '3 quarters dead',\n", - " '3 years hollow',\n", - " '30 seconds to mars',\n", - " '311',\n", - " '32 leaves',\n", - " '36 crazyfists',\n", - " '3ot7',\n", - " '3rd strike',\n", - " '3teeth',\n", - " '4 arm',\n", - " '4 dead in 5 seconds',\n", - " '40 below summer',\n", - " '+44',\n", - " '5 seconds of summer',\n", - " '55 escape',\n", - " '66samus',\n", - " '7 horns 7 eyes',\n", - " '7h. target',\n", - " 'a',\n", - " 'abandon all ships',\n", - " 'abandoned',\n", - " 'abattoir',\n", - " 'abiogenesis',\n", - " 'abiotic',\n", - " 'abnormality',\n", - " 'abominable putridity',\n", - " 'aborted',\n", - " 'above, below',\n", - " 'above only',\n", - " 'an abstract illusion',\n", - " 'abysmal dawn',\n", - " 'abysmal torrent',\n", - " 'abyss walker',\n", - " 'the acacia strain',\n", - " 'acaedia',\n", - " 'acârash',\n", - " 'accept',\n", - " 'the accüsed',\n", - " 'accuser',\n", - " 'acid bath',\n", - " 'acid horse',\n", - " 'acid king',\n", - " 'acid witch',\n", - " 'acrania',\n", - " 'acranius',\n", - " 'act of defiance',\n", - " 'ac/dc',\n", - " 'adelitas way',\n", - " 'adept',\n", - " 'adjentist',\n", - " 'adrenaline mob',\n", - " 'advent sorrow',\n", - " 'adventures',\n", - " 'advocates',\n", - " 'aegaeon',\n", - " 'aeons confer',\n", - " 'aeon',\n", - " 'aeons of corruption',\n", - " 'aerosmith',\n", - " 'æther realm',\n", - " 'affiance',\n", - " 'afi',\n", - " 'after all',\n", - " 'after the burial',\n", - " 'against all authority',\n", - " 'against all will',\n", - " 'agalloch',\n", - " 'age of daze/age of days',\n", - " 'agent orange',\n", - " 'agent steel',\n", - " 'agnostic front',\n", - " 'the agonist',\n", - " 'the agony scene',\n", - " 'agoraphobic nosebleed',\n", - " 'ainundale',\n", - " 'the air i breathe',\n", - " 'air raid',\n", - " 'airbourne',\n", - " 'ajr',\n", - " 'akani',\n", - " 'akercocke',\n", - " 'al-namrood',\n", - " 'the alarm',\n", - " 'alaska',\n", - " 'alesana',\n", - " 'alestorm',\n", - " 'the algorithm',\n", - " 'alice cooper',\n", - " 'alice in chains',\n", - " 'alien ant farm',\n", - " 'alien invasion defence system',\n", - " 'alien weaponry',\n", - " 'all',\n", - " 'the all-american rejects',\n", - " 'all good things',\n", - " 'all shall perish',\n", - " 'all that remains',\n", - " 'all time low',\n", - " 'allele',\n", - " 'the allman brothers band',\n", - " 'alluvial',\n", - " 'almanac',\n", - " 'alpha tiger',\n", - " 'alpha wolf',\n", - " 'δ (alt-j)',\n", - " 'altars of destruction',\n", - " 'alter bridge',\n", - " 'alterbeast',\n", - " 'altered perceptions',\n", - " 'altitudes & attitudes',\n", - " 'am radio',\n", - " 'amass the grave',\n", - " 'ambersmoke',\n", - " 'âme noire',\n", - " 'amebix',\n", - " 'america',\n", - " 'american sin',\n", - " 'american standard',\n", - " 'amiensus',\n", - " 'the amity affliction',\n", - " 'ammotrack',\n", - " 'amon amarth',\n", - " 'amorphis',\n", - " 'amyst',\n", - " 'anaal nathrakh',\n", - " 'anacrusis',\n", - " 'anal cunt',\n", - " 'analepsy',\n", - " 'anarchy club',\n", - " 'anata',\n", - " 'anathema',\n", - " 'anberlin',\n", - " 'ancesttral',\n", - " 'anciients',\n", - " 'ancst',\n", - " '...and oceans',\n", - " 'andromida',\n", - " 'anew revolution',\n", - " 'angel blake',\n", - " 'angel dust',\n", - " 'angel vivaldi',\n", - " 'angel witch',\n", - " 'angelcorpse',\n", - " 'angelmaker',\n", - " 'angels & airwaves',\n", - " 'angelus apatrida',\n", - " 'anger as art',\n", - " 'angra',\n", - " 'angry samoans',\n", - " 'anihilated',\n", - " 'animals as leaders',\n", - " 'annihilator',\n", - " 'annisokay',\n", - " 'annotations of an autopsy',\n", - " 'anomalie',\n", - " 'another animal',\n", - " 'a.n.s',\n", - " 'anthrax',\n", - " 'anti-cimex',\n", - " 'anti-mortem',\n", - " 'anti-flag',\n", - " 'anubis gate',\n", - " 'anup sastry',\n", - " 'anvil',\n", - " 'any given day',\n", - " 'apartment 26',\n", - " 'aphyxion',\n", - " 'apoapsis',\n", - " 'apocalypse orchestra',\n", - " 'apocalyptica',\n", - " 'the apples in stereo',\n", - " 'aranda',\n", - " 'arcade fire',\n", - " 'arch enemy',\n", - " 'archers',\n", - " 'archgoat',\n", - " 'architects',\n", - " 'archspire',\n", - " 'arctic monkeys',\n", - " 'arcturus',\n", - " 'arkaea',\n", - " 'arkentype',\n", - " 'arkona',\n", - " 'armored saint',\n", - " 'army of anyone',\n", - " 'the arrs',\n", - " 'arsenica',\n", - " 'arsis',\n", - " 'arson anthem',\n", - " 'art nation',\n", - " 'art of anarchy',\n", - " 'art of drone',\n", - " 'art of dying',\n", - " 'artillery',\n", - " 'die ärzte',\n", - " 'as blood runs black',\n", - " 'as i lay dying',\n", - " 'as it is',\n", - " 'as karma brings',\n", - " 'as lions',\n", - " 'as paradise falls',\n", - " 'as they burn',\n", - " 'as you drown',\n", - " 'ascendant',\n", - " 'asg',\n", - " 'ash',\n", - " 'ashes of soma',\n", - " 'ashes remain',\n", - " 'asia',\n", - " 'asking alexandria',\n", - " 'asphyx',\n", - " 'assuming we survive',\n", - " 'asterism',\n", - " 'astray valley',\n", - " 'at the drive-in',\n", - " 'at the gates',\n", - " 'at rest',\n", - " 'at war',\n", - " 'atena',\n", - " 'atheist',\n", - " 'atlas',\n", - " 'atomkraft',\n", - " 'atoms to ashes',\n", - " 'atreyu',\n", - " 'atrocity',\n", - " 'attack attack!',\n", - " 'attila',\n", - " 'attomica',\n", - " 'audioslave',\n", - " 'audiotopsy',\n", - " 'audrey horne',\n", - " 'august burns red',\n", - " 'auras',\n", - " 'austrian death machine',\n", - " 'authority zero',\n", - " 'autograph',\n", - " 'automatic kane',\n", - " 'autopsy',\n", - " 'autumn kings',\n", - " 'the autumn offering',\n", - " 'avatar',\n", - " 'avenged sevenfold',\n", - " 'avenger of blood',\n", - " 'aversion to life',\n", - " 'aversions crown',\n", - " 'the avett brothers',\n", - " 'aviana',\n", - " 'avion roe',\n", - " 'avoid',\n", - " 'avulsed',\n", - " 'awakening sun',\n", - " 'awolnation',\n", - " 'azazel',\n", - " 'b',\n", - " 'babymetal',\n", - " 'backswing',\n", - " 'backwordz',\n", - " 'bad company',\n", - " 'bad religion',\n", - " 'bad omens',\n", - " 'bad wolves',\n", - " 'badbadnotgood',\n", - " 'badflower',\n", - " 'baest',\n", - " 'bal-sagoth',\n", - " 'balgeroth',\n", - " 'band of horses',\n", - " 'baphomet',\n", - " 'baptized in blood',\n", - " 'baroness',\n", - " 'barrier',\n", - " 'bastard priest',\n", - " 'bathory',\n", - " 'battalion',\n", - " 'battle beast',\n", - " 'battlecross',\n", - " 'batushka',\n", - " 'bayonet',\n", - " 'bayside',\n", - " 'beartooth',\n", - " 'beastie boys',\n", - " 'beastwars',\n", - " 'the beatles',\n", - " 'becoming the archetype',\n", - " 'before i turn',\n", - " 'before the dawn',\n", - " 'before the harvest',\n", - " 'behemoth',\n", - " 'behind the pieces',\n", - " \"be'lakor\",\n", - " 'belie my burial',\n", - " 'belle & sebastian',\n", - " 'belly',\n", - " 'belphegor',\n", - " 'belzebubs',\n", - " 'beneath an obsidian sky',\n", - " 'beneath my feet',\n", - " 'beneath the massacre',\n", - " 'benediction',\n", - " 'benighted',\n", - " 'bent life',\n", - " 'bermuda',\n", - " 'berried alive',\n", - " 'berserkyd',\n", - " 'betrayal',\n", - " 'betraying the martyrs',\n", - " 'between the buried and me',\n", - " 'betzefer',\n", - " 'beyond all recognition',\n", - " 'beyond creation',\n", - " 'beyond the bridge',\n", - " 'beyond the pleasure',\n", - " 'big country',\n", - " 'big star',\n", - " 'bill haley & his comets',\n", - " 'billy talent',\n", - " 'bind the sacrifice',\n", - " 'bio-cancer',\n", - " 'bionic jive',\n", - " 'black breath',\n", - " 'black city',\n", - " 'black crown initiate',\n", - " 'the black dahlia murder',\n", - " 'black december',\n", - " 'black fast',\n", - " 'black flag',\n", - " 'black jackal',\n", - " 'the black keys',\n", - " 'black label society',\n", - " 'black light burns',\n", - " 'black map',\n", - " 'black metal box',\n", - " 'black peaks',\n", - " 'black sabbath',\n", - " 'black star',\n", - " 'black stone cherry',\n", - " 'black therapy',\n", - " 'black tide',\n", - " 'black tongue',\n", - " 'black tusk',\n", - " 'black veil brides',\n", - " 'black13',\n", - " 'blacklistt',\n", - " 'blacklite district',\n", - " 'blackstar',\n", - " 'blacktop mojo',\n", - " 'blaenavon',\n", - " 'blameshift',\n", - " 'bleed by example',\n", - " 'bleed from within',\n", - " 'bleed the sky',\n", - " 'bleeding through',\n", - " 'the blessing of this curse',\n", - " 'blessthefall',\n", - " 'blind channel',\n", - " 'blind guardian',\n", - " 'blind oracle',\n", - " 'blind pilot',\n", - " 'blind witness',\n", - " 'blindside',\n", - " 'blink-182',\n", - " 'blklst',\n", - " 'blood feast',\n", - " 'blood red throne',\n", - " 'bloodbath',\n", - " 'bloodhound gang',\n", - " 'bloodred hourglass',\n", - " 'bloodsimple',\n", - " 'bloodthorn',\n", - " 'blowsight',\n", - " 'blue felix',\n", - " 'blue light special',\n", - " 'blue öyster cult',\n", - " 'blue stahli',\n", - " 'blur',\n", - " 'boarcorpse',\n", - " 'bob seger and the silver bullet band',\n", - " 'bobaflex',\n", - " 'body count',\n", - " 'bog wraith',\n", - " 'boil',\n", - " 'bolt thrower',\n", - " 'bombus',\n", - " 'bon iver',\n", - " 'bon jovi',\n", - " 'bonded by blood',\n", - " 'borialis',\n", - " 'boris',\n", - " 'boris the blade',\n", - " 'borknagar',\n", - " 'born of osiris',\n", - " 'bossk',\n", - " 'boston',\n", - " 'boston manor',\n", - " 'bound in fear',\n", - " 'the bourgeois',\n", - " 'boy hits car',\n", - " 'brain drill',\n", - " 'brand new',\n", - " 'brand of sacrifice',\n", - " 'a breach of silence',\n", - " 'breakdown bros',\n", - " 'breakdown of sanity',\n", - " 'breaking benjamin',\n", - " 'breaking point',\n", - " 'breath of nibiru',\n", - " 'breathe carolina',\n", - " 'the breathing process',\n", - " 'bridge to grace',\n", - " 'bright eyes',\n", - " 'brighter than a thousand suns',\n", - " 'bring me the horizon',\n", - " 'brocas helm',\n", - " 'brojob',\n", - " 'broken bells',\n", - " 'brokenrail',\n", - " 'brothers of metal',\n", - " 'brothers till we die',\n", - " 'the browning',\n", - " 'brujeria',\n", - " 'brutal truth',\n", - " 'brymir',\n", - " 'buckcherry',\n", - " 'buckethead',\n", - " 'budgie',\n", - " 'buffalo tom',\n", - " 'bullet for my valentine',\n", - " 'bulletproof messenger',\n", - " 'bullets and octane',\n", - " 'bunker 66',\n", - " 'buried side',\n", - " 'buried in verona',\n", - " 'burn the ballroom',\n", - " 'burn the priest',\n", - " 'burn halo',\n", - " 'burning the masses',\n", - " 'burnt by the sun',\n", - " 'bury tomorrow',\n", - " 'bury your dead',\n", - " 'burzum',\n", - " 'bush',\n", - " 'butterfingers',\n", - " 'butthole surfers',\n", - " 'the buzzcocks',\n", - " 'buzzhorn',\n", - " 'by the thousands',\n", - " 'byebye bunny',\n", - " 'byzantine',\n", - " 'c',\n", - " 'cabal',\n", - " 'cage the elephant',\n", - " 'cage9',\n", - " 'cake',\n", - " 'caliban',\n", - " \"caligula's horse\",\n", - " 'calipash',\n", - " 'call of the void',\n", - " 'callejon',\n", - " 'callenish circle',\n", - " 'callisto',\n", - " 'candiria',\n", - " 'candlelight red',\n", - " 'candlemass',\n", - " 'cane hill',\n", - " 'cannabis corpse',\n", - " 'cannibal corpse',\n", - " 'cannibal grandpa',\n", - " 'capital enemy',\n", - " 'car bomb',\n", - " 'carach angren',\n", - " 'carcass',\n", - " 'carcer city',\n", - " 'carnation',\n", - " 'carnifex',\n", - " 'the cars',\n", - " 'casket robbery',\n", - " 'cast the stone',\n", - " 'cathedral',\n", - " 'cattle decapitation',\n", - " 'cauldron',\n", - " 'cavalera conspiracy',\n", - " 'cave in',\n", - " 'cavernicular',\n", - " 'cavo',\n", - " 'cbc band',\n", - " 'celldweller',\n", - " 'celtic frost',\n", - " 'cemican',\n", - " 'centinex',\n", - " 'cephalic carnage',\n", - " 'cerberus',\n", - " 'cerebral bore',\n", - " 'cerebral effusion',\n", - " 'cervello',\n", - " 'ceterum',\n", - " 'chaos divine',\n", - " 'chapel of disease',\n", - " 'charcoal tongue',\n", - " 'charm city devils',\n", - " 'the charm the fury',\n", - " 'charred walls of the damned',\n", - " 'chasing lana',\n", - " 'cheap trick',\n", - " 'chelsea grin',\n", - " 'chevelle',\n", - " 'children of bodom',\n", - " 'chimaira',\n", - " 'chiodos',\n", - " 'chon',\n", - " 'christmas',\n", - " 'chronolyth',\n", - " 'chrysalis',\n", - " 'chuggaboom',\n", - " 'chunk! no, captain chunk!',\n", - " 'chvrches',\n", - " 'cilice',\n", - " 'cinder',\n", - " 'cinematic sunrise',\n", - " 'cipher system',\n", - " 'circa survive',\n", - " 'circle jerks',\n", - " 'circle of dust',\n", - " 'circle survive',\n", - " 'circles',\n", - " 'cky',\n", - " 'clarkkent',\n", - " 'the clash',\n", - " 'clawerfield',\n", - " 'clawfinger',\n", - " 'clawhammer',\n", - " 'the clay people',\n", - " 'clocked in',\n", - " 'close your eyes',\n", - " 'closterkeller',\n", - " 'closure',\n", - " 'closure in moscow',\n", - " 'clutch',\n", - " 'coal chamber',\n", - " 'coalesce',\n", - " 'code orange',\n", - " 'codeine king',\n", - " 'coheed and cambria',\n", - " 'cold',\n", - " 'cold kingdom',\n", - " 'cold metal',\n", - " 'cold war kids',\n", - " 'coldplay',\n", - " 'coldrain',\n", - " 'coldseed',\n", - " 'coldtears',\n", - " 'collective soul',\n", - " 'comaniac',\n", - " 'combichrist',\n", - " 'come the dawn',\n", - " 'conan',\n", - " 'concepts',\n", - " 'condition critical',\n", - " 'conducting from the grave',\n", - " 'confessor',\n", - " 'confide',\n", - " 'conquer divide',\n", - " 'conquering dystopia',\n", - " 'continents',\n", - " 'the contortionist',\n", - " 'the contradiction',\n", - " 'control denied',\n", - " 'converge',\n", - " 'convivium',\n", - " 'core 10',\n", - " 'corelia',\n", - " 'coroner',\n", - " 'corporate avenger',\n", - " 'corroded',\n", - " 'corrosion of conformity',\n", - " 'count raven',\n", - " 'counterparts',\n", - " 'countless skies',\n", - " 'coup de grâce',\n", - " 'cover your tracks',\n", - " 'covet',\n", - " 'cradle of filth',\n", - " 'the cranberries',\n", - " 'crass',\n", - " 'craving lucy',\n", - " 'crawl back to zero',\n", - " 'cream',\n", - " 'creed',\n", - " 'creedence clearwater revival (ccr)',\n", - " 'creeper',\n", - " 'cries of the captive',\n", - " 'crimson sun',\n", - " 'crisix',\n", - " 'critical solution',\n", - " 'crobot',\n", - " 'cromok',\n", - " 'crooked x',\n", - " 'crosby, stills, nash(, & young)',\n", - " '††† (crosses)',\n", - " 'crossfade',\n", - " 'crossfaith',\n", - " 'crowbar',\n", - " 'crowdburn',\n", - " 'the crown',\n", - " 'crown the empire',\n", - " 'crucify me gently',\n", - " 'cruel hand',\n", - " 'crunt',\n", - " 'cryptopsy',\n", - " 'crystal lake',\n", - " 'cult of luna',\n", - " 'cute is what we aim for',\n", - " ...]}}},\n", - " 'mi': {'sentence': {'pop': {'meta': {'train_data': [\"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " 'fatboy, fatboy',\n", - " 'fatboy, fatboy',\n", - " 'fatboy, fatboy',\n", - " 'fatboy, fatboy',\n", - " \"let's hear it for the fatboy\",\n", - " 'fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa-fa',\n", - " 'bo-bo-bo-bo-bo-bo-bo-bo-bo-bo-bo-bo',\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " \"let's hear it for the fatboy\",\n", - " 'fute full apon shukhe...',\n", - " 'kaar isharai...',\n", - " 'kaar adore...',\n", - " 'kaata bon...',\n", - " 'shomirone shohag chorai',\n", - " 'fute full apon shukhe...',\n", - " 'kaar isharai...',\n", - " 'kaar adore...',\n", - " 'kaata bon...',\n", - " 'shomirone shohag chorai',\n", - " 'fute full apon shukhe...',\n", - " 'kaar isharai...',\n", - " 'kaar adore...',\n", - " 'kaata bon...',\n", - " 'shomirone shohag chorai',\n", - " 'fute full apon shukhe...',\n", - " 'kaar isharai...',\n", - " 'kaar adore...',\n", - " 'kaata bon...',\n", - " 'shomirone shohag chorai',\n", - " \"(haa-nee' yóo' oh) (chanting)\",\n", - " 'shaa ni (yóo oh) : to me...you (chanting)',\n", - " 'shaa ni : to me...you',\n", - " \"shaa ninánóh'aah : you give it back to me\",\n", - " \"(haa-nee' yóo' oh) (chanting)\",\n", - " \"shaa ni (yóo' oh) : to me...you (chanting)\",\n", - " 'shaa ni : to me...you',\n", - " \"ninánóh'aah : give it back\",\n", - " \"(haa-nee') yé'iitsoh jiní náá léi' : giant is repeating...\",\n", - " \"ní náá léi' : he says over and over\",\n", - " \"ninánóh'aah : give it back\",\n", - " \"(haa-nee') yé'iitsoh jiní náá léi' : giant is repeating...\",\n", - " \"ninánóh'aah : give it back\",\n", - " \"ni (yóo' oh) x4\",\n", - " \"(haa-nee' yóo' oh) (chanting)\",\n", - " 'shaa ni (yóo oh) : to me...you (chanting)',\n", - " 'shaa ni : to me...you',\n", - " \"shaa ninánóh'aah : you give it back to me\",\n", - " \"(haa-nee' yóo' oh) (chanting)\",\n", - " \"shaa ni (yóo' oh) : to me...you (chanting)\",\n", - " 'shaa ni : to me...you',\n", - " \"ninánóh'aah : give it back\",\n", - " \"(haa-nee') yé'iitsoh jiní náá léi' : giant is repeating...\",\n", - " \"ní náá léi' : he says over and over\",\n", - " \"ninánóh'aah : give it back\",\n", - " \"(haa-nee') yé'iitsoh jiní náá léi' : giant is repeating...\",\n", - " \"ninánóh'aah : give it back\",\n", - " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", - " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", - " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", - " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", - " 'ah, ah, ah, ah, ah-ah, ah-ah, we can',\n", - " 'ah, ah, ah, ah, ah-ah, ah-ah, we can',\n", - " 'back there, ah, ah, ah, ah',\n", - " 'ah, ah, ah, ah, ah, ah, ah',\n", - " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", - " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", - " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", - " 'ooh, ooh, ooh, ooh, ooh-ooh, ooh-ooh, ooh, ooh',\n", - " 'pokarekare ana',\n", - " 'nga wai o waiapu',\n", - " 'whiti atu koe hine',\n", - " 'marino ana e',\n", - " 'e hine e',\n", - " 'hoki maira',\n", - " 'kamate au',\n", - " '-i te aroha e',\n", - " 'tuhituhi taku rita',\n", - " 'tuku atu taku ringi',\n", - " 'kia kiti to iwi',\n", - " 'raru raru ana e',\n", - " 'e hine e',\n", - " 'hoki maira',\n", - " 'kamate au i could die',\n", - " '-i te aroha e',\n", - " 'e hine e',\n", - " 'hoki maira',\n", - " 'kamate au',\n", - " '-i te aroha e',\n", - " 'kamate au i could die',\n", - " '-i te aroha e of love for you',\n", - " 'stormy are the waters',\n", - " 'of restless waiapu',\n", - " 'if you cross them, girl',\n", - " 'they will be calmed',\n", - " 'oh girl',\n", - " 'come back to me',\n", - " 'i could die',\n", - " 'of love for you',\n", - " 'i write you my letter',\n", - " 'i send you my ring',\n", - " 'so your people can see',\n", - " 'how troubled i am',\n", - " 'oh girl',\n", - " 'come back to me',\n", - " 'i could die',\n", - " 'of love for you',\n", - " 'oh girl',\n", - " 'come back to me',\n", - " 'i could die',\n", - " 'of love for you',\n", - " 'i could die',\n", - " 'of love (for you)',\n", - " 'te aroha',\n", - " 'te whakapono',\n", - " 'te rangimarie',\n", - " 'tatou tatou e',\n", - " 'te aroha',\n", - " 'te whakapono',\n", - " 'te rangimarie',\n", - " 'tatou tatou e',\n", - " 'love',\n", - " 'faith and',\n", - " 'peace',\n", - " 'be amongst us all',\n", - " 'love',\n", - " 'faith and',\n", - " 'peace',\n", - " 'be amongst us all',\n", - " 'love',\n", - " 'faith and',\n", - " 'peace',\n", - " 'be amongst us all',\n", - " 'love',\n", - " 'faith and',\n", - " 'peace',\n", - " 'be amongst us all',\n", - " 'ahh',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'i',\n", - " 'ooh ooh ooh ooh',\n", - " 'ooh ooh ooh',\n", - " 'i ooh i ooh',\n", - " 'i ooh i ooh',\n", - " 'i ooh i ooh',\n", - " 'i ooh i ooh',\n", - " 'i waited for you',\n", - " 'i waited',\n", - " 'i waited for you',\n", - " 'i waited',\n", - " 'i waited for you',\n", - " 'i waited',\n", - " 'i waited for you',\n", - " 'i waited for you',\n", - " 'i waited',\n", - " 'i waited for you',\n", - " 'i waited',\n", - " 'i waited for you',\n", - " 'i waited',\n", - " 'i waited for you',\n", - " 'ooh ooh ooh ooh',\n", - " 'ooh ooh oh ooh oh ooh',\n", - " 'ooh oh oh ooh oh oh',\n", - " 'ooh oh oh',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ardas bhaee',\n", - " 'amar das guru',\n", - " 'amar das guru',\n", - " 'ardas bhaee',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'ram das guru',\n", - " 'sachee sahee',\n", - " 'ooh aah, oh you',\n", - " 'too wild you’re too wild',\n", - " 'you’re too wild',\n", - " 'too wild you’re too wild',\n", - " 'you’re too wild',\n", - " 'ooh, i am you',\n", - " 'you, you are me',\n", - " 'ooh ahh, oh you',\n", - " 'too wild you’re too wild',\n", - " 'you’re too wild',\n", - " 'too wild you’re too wild',\n", - " 'you’re too wild',\n", - " 'ooh aah, oh you',\n", - " 'ooh, i am you',\n", - " 'you, you are…',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'sohung',\n", - " 'ong sohung',\n", - " 'sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'sohung',\n", - " 'ong sohung',\n", - " 'sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'i am peace',\n", - " 'peace is in me',\n", - " 'i am peace',\n", - " 'peace is in me',\n", - " 'ong sohung',\n", - " 'sohung',\n", - " 'ong sohung',\n", - " 'sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'sohung',\n", - " 'ong sohung',\n", - " 'sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'i am peace',\n", - " 'peace is in me',\n", - " 'i am peace',\n", - " 'peace is in me',\n", - " 'i am peace',\n", - " 'peace is in me',\n", - " 'i am peace',\n", - " 'peace is in me',\n", - " 'ong sohung',\n", - " 'sohung',\n", - " 'ong sohung',\n", - " 'sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'ong sohung',\n", - " 'yeah...',\n", - " \"you've got me where you want me\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me where you want...\",\n", - " 'wooo!',\n", - " 'dit-it-it!',\n", - " 'dit-it-it!',\n", - " 'dit-it-it!',\n", - " 'dit-it-it!',\n", - " 'oooooooh, ooooooh, oooooooh',\n", - " 'oooooooh, ooooooh, oooooooh',\n", - " 'oooooooh, ooooooh, oooooooh',\n", - " \"you've got me where you want me\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me where you want me\",\n", - " 'doo-do doo-doo-do!',\n", - " 'doo-do doo-doo-do!',\n", - " 'doo-do doo-doo-do!',\n", - " \"you've got me...\",\n", - " \"you've got me...\",\n", - " \"you've got me...\",\n", - " \"you've got me...\",\n", - " \"you've got me!\",\n", - " 'wooo!',\n", - " 'dit-it-it!',\n", - " 'dit-it-it!',\n", - " 'dit-it-it!',\n", - " 'oooooooh, ooooooh, oooooooh',\n", - " 'oooooooh, ooooooh, oooooooh',\n", - " 'oooooooh, ooooooh, oooooooh',\n", - " \"you've got me where you want me\",\n", - " \"you've got me...\",\n", - " \"you've got me...\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me...\",\n", - " \"you've got me...\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me...\",\n", - " \"you've got me...\",\n", - " \"you've got me where you want me\",\n", - " \"you've got me...\",\n", - " \"you've got me...\",\n", - " 'wooooh!',\n", - " 'doo-do doo-doo-do!',\n", - " 'doo-do doo-doo-do!',\n", - " 'doo-do doo-doo-do!',\n", - " 'doo-do doo-doo-do!',\n", - " 'doo-do doo-doo-do!',\n", - " 'doo-do doo-doo-do!']},\n", - " 'data': ['waiting for you',\n", - " \"i've been waiting so long for you\",\n", - " 'for you',\n", - " 'waiting for you',\n", - " \"i've been waiting so long for you\",\n", - " 'for you',\n", - " 'waiting for you',\n", - " \"i've been waiting so long for you\",\n", - " 'for you',\n", - " 'waiting for you',\n", - " \"i've been waiting so long for you\",\n", - " 'for you',\n", - " 'for you',\n", - " 'for you',\n", - " 'waiting for you',\n", - " \"i've been waiting so long for you\",\n", - " 'for you',\n", - " 'for you',\n", - " 'for you',\n", - " 'for you',\n", - " 'for you',\n", - " 'waiting for you',\n", - " \"i've been waiting so long for you\",\n", - " 'for you',\n", - " 'waiting for you',\n", - " \"i've been waiting so long for you\",\n", - " 'for you',\n", - " 'waiting for you',\n", - " \"i've been waiting so long for you\",\n", - " 'for you',\n", - " 'waiting for you',\n", - " \"i've been waiting so long for you\",\n", - " 'for you',\n", - " 'give it up, yeah huh aaaah',\n", - " 'give it up, yeah huh aaaah',\n", - " 'do the drake',\n", - " 'get back huh',\n", - " 'do the drake',\n", - " 'get back wow',\n", - " 'give it up, yeah huh aaaah',\n", - " 'give it up, yeah huh aaaah',\n", - " 'waaaaaw',\n", - " 'aaaaah',\n", - " 'give it up, yeah huh aaaah',\n", - " 'give it up, yeah huh aaaah',\n", - " 'do the drake',\n", - " 'get back huh',\n", - " 'do the drake',\n", - " 'get back wow',\n", - " 'give it up, yeah huh aaaah',\n", - " 'give it up, yeah huh aaaah',\n", - " 'give it up, yeah huh aaaah',\n", - " 'give it up, yeah huh aaaah',\n", - " 'do the drake',\n", - " 'get back huh',\n", - " 'do the drake',\n", - " 'get back wow',\n", - " 'give it up, yeah huh aaaah',\n", - " 'give it up, yeah huh aaaah',\n", - " 'pearly shells from the ocean',\n", - " 'shining in the sun',\n", - " 'covering the shore',\n", - " 'when i see them',\n", - " 'my heart tells me that i love you',\n", - " 'more than all the little pearly shells',\n", - " 'for every grain of sand upon the beach',\n", - " \"i've got a kiss for you\",\n", - " \"and i've got more left over\",\n", - " 'for each star that twinkles in the blue',\n", - " 'pearly shells',\n", - " 'shining in the sun',\n", - " 'covering the shore',\n", - " 'when i see them',\n", - " 'my heart tells me that i love you',\n", - " 'more than all the little pearly shells',\n", - " 'pupu a o ewa',\n", - " 'i ka nuku',\n", - " 'e lawe mai',\n", - " 'ahe aina',\n", - " 'mai no',\n", - " 'ala hula puuloa he ala hele no kaahupahau',\n", - " 'i apau huna one i ka kahakai',\n", - " 'ua honi nau',\n", - " \"ho'i koe lawa na\",\n", - " \"pakahi hoku 'i ka lani\",\n", - " 'puhau',\n", - " 'ala hula puuloahe ala hele no kaahupahau',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ahh!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ahh!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"',\n", - " '\"ooh, ooh! it\\'s great, yeah!\"']}}},\n", - " 'nb': {'sentence': {'pop': {'meta': {'train_data': ['har du det fint nå, er du et vakkert sted uten farer?',\n", - " 'jeg har blitt stor nå, men skriver fortsatt brev til en som ikke svarer',\n", - " 'jeg ville spurt deg om da du var ung, hva du tenkte på',\n", - " 'om du kjempet mot de samme ting som jeg gjør nå',\n", - " 'så mange ting du ikke vet',\n", - " 'ubesvarte brev',\n", - " 'og disse gatene er dekket av alle dine gamle fotspor',\n", - " 'jeg følger etter dem så godt jeg kan',\n", - " 'men jeg husker ikke hvor du tro',\n", - " 'og jeg har ikke tid til hjertesorg, den må du ta fra meg',\n", - " 'for det banker to hjerter i meg nå',\n", - " 'det er så mye jeg vil fortelle deg',\n", - " 'så mange ting du ikke vet',\n", - " 'ubesvarte brev',\n", - " 'english translation',\n", - " 'are you ok now? are you in a beautiful place, safe from danger?',\n", - " \"i'm all grown up now, but am still writing letters to someone who doesn't answer\",\n", - " 'i would have asked you what you thought about when you were young',\n", - " 'whether you fought against the same things that i do now',\n", - " \"so many things you don't know, unanswered letters\",\n", - " 'and these streets are covered with all of your old footsteps',\n", - " 'i follow them as well as i can',\n", - " \"but i don't remember where you walked\",\n", - " \"and i don't have time for heartbreak, you have to take it away from me\",\n", - " 'because i have two hearts beating in me now',\n", - " 'there is so much i would like to tell you',\n", - " \"so many things you don't know, unanswered letters\",\n", - " 'når stormen setter til',\n", - " 'og uvær river trær fra stammen',\n", - " 'da, sånn rundt nattestid er',\n", - " 'det odin hunder samles',\n", - " 'du kan høre oss når månen stikker',\n", - " 'frem men aldri om du ser oss før du',\n", - " 'blir en kriger selv',\n", - " 'jegeren leder oss vi er født til å sloss',\n", - " 'over fjell og fjorder gjennom trolske skoger',\n", - " 'odins jakt åsgårdsreien',\n", - " 'odins hunder einherjen',\n", - " '(english translation:)',\n", - " '(asgardsreien)',\n", - " 'when the storm sets and tear trees apart',\n", - " 'then, around the darkest hours the dogs of odin will gather',\n", - " 'you can hear us when the moon appear above',\n", - " 'but you will never see us',\n", - " 'before you become a warrior yourself',\n", - " 'the hunter leads us we are born to fight',\n", - " 'over mountains and fjords',\n", - " 'through enchanted forests',\n", - " 'odins hunt asgardsreien',\n", - " 'odins dogs einherjen',\n", - " '(music: hrimgrimnir, lyric: vanargandr)',\n", - " 'nordens paradis er gravlagt i et slør av løgn men under hviler fortsatt',\n", - " 'den hedenske sannhet',\n", - " 'hlorride åpner sine øyne ved yggdrasils stamme. mektige allfader reiser',\n", - " 'seg i valaskjalv',\n", - " 'lysmaktens ørn og mørkemaktens nidhogg. stridens forbannelser gjennom ratatosk',\n", - " 'blir sendt',\n", - " 'igjen er det liv i urdabrønnen. søken for visdom i rimtussenes brønn er i gang',\n", - " 'over nivlheim veller fortsatt kvergjelme. en ny storhetstid ser sitt utbrudd',\n", - " 'hold fast ved ditt opphav. portene skal åpnes',\n", - " 'igjen er reginsnagler slått inn i himmelvelvets søyle',\n", - " 'igjen spinner nornene den nyfødtes skjebne. igjen truer folket fra nord med',\n", - " 'vinterens evige mørke',\n", - " 'vi entrer en ny tid, legger en annen bak. hedensk regin, riv vekk sløret av løgn',\n", - " 'de dystre verdener av ni er mektigere enn før. en horde av svikere vandrer den',\n", - " 'dunkle sti',\n", - " 'sigtyrs navn runger gjennom nordens fjell og kratt. på hlidskjalf han sitter',\n", - " 'og våker',\n", - " 'fortell meg, mime, den glemte saga. jeg søker din visdom, jeg søker ditt hat',\n", - " 'alt jeg begjærer ligger og hviler i din hånd. gi meg den hedenske sannhets ånd',\n", - " 'hærfjotur fjetrer krigerene av korset, hvor godt et nederlag jeg ser',\n", - " 'jeg speiler meg i kristent blod. en ny storhetstid ser sitt utbrudd',\n", - " 'himlen setter sprekker, mime, hørte min bønn',\n", - " 'så vakkert et syn det er, å se alt som engang var ta liv igjen',\n", - " 'reginsnagler er slått inn for å bli. odin vender aldri vekk sitt blikk',\n", - " 'i mannheim jeg vandrer stolt, vender mitt blikk mot gudeheimen',\n", - " '\"en gang fallt vi, men bare en\"',\n", - " '(english translation:)',\n", - " '(of norse lineage)',\n", - " 'the northern paradise is buried in a veil of lies',\n", - " 'but underneath the pagan truth still rests',\n", - " 'hlorride opens his eyes by the roots of yggdrasil',\n", - " 'mighty allfather rises in valaskjalv',\n", - " \"the eagle of the power of light and nidhogg's power of darkness\",\n", - " 'the curse of the battle are sent through ratatosk',\n", - " 'there is life in the urda-well once again',\n", - " \"the search for wisdom in the frostgoblin's well has begun\",\n", - " 'over nivlheim kvergjelme still springs forth. a new time of greatness erupts',\n", - " 'hold on to your origin. the gates shall open',\n", - " 'the bolts of regin are once again driven into the column of the vault of heaven',\n", - " 'again the norns‘ spin fate of the newly born',\n", - " 'again the people of the north threaten with winters eternal darkness',\n", - " 'we enter a new era, and lay another behind',\n", - " 'pagan regin, tear away the veil of lies',\n", - " 'the dismal worlds of nine are more powerful than before',\n", - " 'a horde of betrayers wander the gloomy path',\n", - " \"sigtyr's name resounds through the mountains and the thickets of the north\",\n", - " 'upon hlidskjalf he sits and watches',\n", - " 'tell me mime, about the forgotten saga',\n", - " 'i seek your wisdom, i seek your hate',\n", - " 'all i desire rests in your hand',\n", - " 'give me the pagan spirit of truth',\n", - " 'haerfjotur spellbinds the warriors of the cross',\n", - " 'how great a defeat i see',\n", - " 'i see my reflection in christian blood',\n", - " 'a new time of greatness erupts',\n", - " \"the heaven's crack mime, you heeded my call\",\n", - " 'what a beautiful sight it is, to see everything as it once was, take life again',\n", - " 'the bolts of regin have been driven in for good',\n", - " \"odin's gaze will never turn away. in mannheim i wander proudly\",\n", - " 'i turn my gaze towards the home of the gods',\n", - " '\"once we fell, but only once\"',\n", - " 'lyse netter',\n", - " 'tindrende og klar',\n", - " 'vide landskap',\n", - " 'åpne landskap',\n", - " 'bright nights',\n", - " 'twinkling and clear',\n", - " 'vast landscapes',\n", - " 'open landscapes',\n", - " 'elv og daler',\n", - " 'fjord og fossefall',\n", - " 'åpne sletter',\n", - " 'sol der står i brann',\n", - " 'rivers and valleys',\n", - " 'fjord and waterfall',\n", - " 'open tracts',\n", - " 'where the sun is afire',\n", - " 'demonized!',\n", - " 'mesmerized by the moon!',\n", - " 'my soul belongs to the night!',\n", - " '\"...isen og snoen er livet mitt',\n", - " 'svart og hvit er',\n", - " 'mine farger...\"',\n", - " 'demonized!',\n", - " 'mesmerized by the moon!',\n", - " 'my soul belongs to the night!',\n", - " '\"...vi hater sol, vi',\n", - " 'elsker natten...',\n", - " '...dagen doer, solen doer, lykken',\n", - " 'doer...',\n", - " 'og jeg reiser igjen!...\"',\n", - " 'new years eve',\n", - " 'dressed up people by the table',\n", - " \"some one's standing up for speech\",\n", - " \"to see us coming they're not able\",\n", - " 'nor our magic feeling reach',\n", - " 'candles burning down so slowly',\n", - " 'may i take your hand to dance?',\n", - " \"orchestra's playing for us only\",\n", - " \"this i'd call true elegance\",\n", - " 'some time ago there was night',\n", - " 'you called the spirits and they came',\n", - " 'we both know now that they were right',\n", - " 'when the answer was my name',\n", - " 'the air of love might not exist',\n", - " \"it's hard to believe what is unseen\",\n", - " 'but black on white cannot be missed',\n", - " \"there's more than air in between\",\n", - " 'together last night of the year',\n", - " 'a kiss of yours, a touch of sky',\n", - " 'for a moment world was ours, my dear',\n", - " 'too beautiful to be a lie',\n", - " 'a star, a wish, a dream come true',\n", - " 'i never saw it coming by',\n", - " 'sparkling redness is now blue',\n", - " \"you're not mine, it makes me cry\",\n", - " 'new years eve with all its glimmering glory',\n", - " 'with the sparkling fire works and shining glow',\n", - " \"in my heart i'll always keep our true story\",\n", - " 'as i return to northern snow',\n", - " 'sami translation:',\n", - " 'ođđajagiruohtta',\n", - " 'čiŋadan olbmot beavdegáttis',\n", - " 'soamis vel sártni doallame',\n", - " 'eai áicca munno boahtima',\n", - " 'eaige olle munno gildi dovdduide',\n", - " 'gintalat jaskadit bullet, nohket',\n", - " 'oaččun go duinna dánsut?',\n", - " 'joavku čuojaha munnuide',\n", - " 'dát dat gal lea albma hearvái',\n", - " 'duvle muhtin ija',\n", - " 'don vuoiŋŋaid bivdet ja dat bohte',\n", - " 'dál moai dihte ahte sis lei njuolga',\n", - " 'go vástádus lei mu namma',\n", - " 'ráhkisvuođa áibmu ii soaitte gávdnot',\n", - " 'lea váttis jáhkkit man ii leat oaidnán',\n", - " 'muhto čáhppat vielgadis ii mana garvit',\n", - " 'lea eanet go áibmu munno gaskkas',\n", - " 'ovttas jagi maŋemus ija',\n", - " 'du cummá guoskkahii almmi',\n", - " 'bottoža máilbmi gullui munnuid, ráhkkásan',\n", - " 'ila čáppat leahkit gielisin',\n", - " 'násti, sávaldat, niehku duohtan',\n", - " 'in goassege vuordán dan šaddat',\n", - " 'gildi ruoksat lea dál alit',\n", - " 'ganjaldan go it leat mu',\n", - " 'ođđajagiruohtta gait gildi čuovggaiguin',\n", - " 'čuovgi dolaiguin ja šealgi hilaiguin',\n", - " 'mu váimmu ozas vurken munno muitalusa',\n", - " 'go fas máhcan davvi muohttagii',\n", - " 'nordlyset farger himmelen',\n", - " 'speiles ned på isen',\n", - " 'de sier tiden leger sår',\n", - " 'de sier tiden leger sår',\n", - " 'betatt av synets makt',\n", - " 'den sterke sol og månes pakt',\n", - " 'vil sannheten bli meg forunt?',\n", - " 'vil sannheten bli meg forunt?',\n", - " 'mitt sinn er et hav',\n", - " 'en alle tankers grav',\n", - " 'jeg ville gi det til deg',\n", - " 'jeg ville gi det til deg',\n", - " 'kan du se fargenes spill',\n", - " 'som hører nordnatten til',\n", - " 'vil du dele mitt syn?',\n", - " 'tør du dele mitt syn?',\n", - " 'translation:',\n", - " 'night of the north',\n", - " 'the northern lights colour the sky',\n", - " 'reflect on the ice',\n", - " 'they say time heals all wounds',\n", - " 'they say time heals all wounds',\n", - " 'seduced by the power of the sight',\n", - " 'the powerful union of sun and moon',\n", - " 'will i be bestowed with the truth?',\n", - " 'will i be bestowed with the truth?',\n", - " 'my mind is an ocean',\n", - " 'a grave of all thoughts',\n", - " 'i wanted to give it to you',\n", - " 'i wanted to give it to you',\n", - " 'can you see the play of colours',\n", - " 'belonging to the night of the north',\n", - " 'will you share what i see?',\n", - " 'do you dare share what i see?',\n", - " 'som av meg',\n", - " 'som ild i hår',\n", - " 'var du her',\n", - " 'jeg kunne vært alt du er',\n", - " 'alt du var, og alt du ville bli',\n", - " 'alle mørke tanker ville vike i vårt liv',\n", - " 'jeg skulle elsket deg, skulle gitt deg mitt blod',\n", - " 'og om du ville hadde jeg levd for deg',\n", - " 'som av meg',\n", - " 'som ild i hår',\n", - " 'var du her',\n", - " 'jeg kunne vært alt du er',\n", - " 'alt du var, og alt du ville bli',\n", - " 'fantes det en evighet, så var den til for oss',\n", - " 'jeg skulle ha sett for deg når solen sank i hav',\n", - " 'og om du ville hadde jeg dødd for deg',\n", - " 'om jeg ser tilbake',\n", - " 'på alt det som var',\n", - " 'jeg føler hva jeg følte og vet at ingen noen gang',\n", - " 'vil komme så nær',\n", - " 'som av meg',\n", - " 'som ild i hår',\n", - " 'var du her',\n", - " 'jeg kunne vært alt du er',\n", - " 'alt du var, og alt du ville bli',\n", - " 'tiden skulle bli en venn vi begge fant igjen',\n", - " 'men når jeg ser deg gå nå, vil jeg den skal gå med deg',\n", - " 'og viske ut den veien vi hadde lagt ut på',\n", - " 'translation:',\n", - " 'as of me',\n", - " 'as of me',\n", - " 'as fire in hair',\n", - " 'were you here',\n", - " 'i could have been all you are',\n", - " 'all you were, and all you wanted to be',\n", - " 'all dark thoughts would yield in our life',\n", - " 'i should have loved you, should have given you my blood',\n", - " 'and if you wanted, i would have lived for you',\n", - " 'as of me',\n", - " 'as fire in hair',\n", - " 'were you here',\n", - " 'i could have been all you are',\n", - " 'all you were, and all you wanted to be',\n", - " 'were there an eternity, then it was there for us',\n", - " 'i should have seen you when the sun set in the sea',\n", - " 'and if you wanted, i would have died for you',\n", - " 'if i look back',\n", - " 'at all that used to be',\n", - " 'i feel what i felt and i know that no one',\n", - " 'will ever come quite so close',\n", - " 'as of me',\n", - " 'as fire in hair',\n", - " 'were you here',\n", - " 'i could have been all you are',\n", - " 'all you were, and all you wanted to be',\n", - " 'time was to become a friend we both rediscovered',\n", - " 'but when i see you leaving now, i want it to go with you',\n", - " 'and erase the path we had set out upon',\n", - " 'hei, vil du ta min hånd',\n", - " 'så kan du bli med',\n", - " 'til mitt annerledessted',\n", - " 'av et hav i stormens makt',\n", - " 'ble jeg skylt inn mot land',\n", - " 'en gang på alle fargenes strand',\n", - " 'se meg inn i øynene',\n", - " 'kan du like det du ser?',\n", - " 'vil du se mer?',\n", - " 'hei du, nå favnes vi inn – i mitt spindelsinn',\n", - " 'her kan vi falle til ro – i mitt spindelsinn',\n", - " 'jeg fulgte vindens sang',\n", - " 'her var toner som fløy',\n", - " 'som farger ut av skogens tøy',\n", - " 'jeg vil ta deg med inn hit',\n", - " 'så du kan se hvem jeg er',\n", - " 'og om du vil bli værende her',\n", - " 'se meg inn i øynene',\n", - " 'kan du like det du ser?',\n", - " 'vil du se mer?',\n", - " 'hei du, nå favnes vi inn – i mitt spindelsinn',\n", - " 'her kan vi falle til ro – i mitt spindelsinn',\n", - " 'og når du ser lanterner lyse vei',\n", - " 'som en bro ut av hav og land',\n", - " 'kan du like det du ser?',\n", - " 'vil du se mer?',\n", - " 'hei du, nå favnes vi inn i mitt spindelsinn',\n", - " 'her kan vi falle til ro – i mitt spindelsinn',\n", - " 'translation:',\n", - " 'spindelsinn',\n", - " 'hey, will you take my hand',\n", - " 'and come along',\n", - " 'to my unique place',\n", - " \"by a sea under the storm's control\",\n", - " 'was i washed ashore',\n", - " 'once on the beach of all colours',\n", - " 'look me in the eyes',\n", - " 'might you like what you see?',\n", - " 'would you like to see more?',\n", - " \"hey you, we're being embraced – in my mind web\",\n", - " 'here we can come to rest – in my mind web',\n", - " \"i followed the wind's song\",\n", - " 'there were tones flying',\n", - " \"as colours out of the forest's cloth\",\n", - " 'i want to bring you along in here',\n", - " 'so you can see who i am',\n", - " 'and whether you want to remain here',\n", - " 'look me in the eyes',\n", - " 'might you like what you see?',\n", - " 'would you like to see more?',\n", - " \"hey you, we're being embraced – in my mind web\",\n", - " 'here we can come to rest – in my mind web',\n", - " 'and when you see lanterns marking your path',\n", - " 'as a bridge over sea and land',\n", - " 'might you like what you see?',\n", - " 'would you like to see more?',\n", - " \"hey you, we're being embraced in my mind web\",\n", - " 'here we can come to rest – in my mind web',\n", - " 'og lev drmmen',\n", - " 'og lev drmmen',\n", - " 'og lev drmmen',\n", - " 'elska d',\n", - " 'du vis m alt fra sorte hull til fossefall',\n", - " 'du lar m stirr inni d p kloss hold',\n", - " 'du gir m innsikt, livet mitt e sinnsykt',\n", - " 'mat m, mat m, du e mitt kosthold',\n", - " 'i kveld dansa vi salsa, hanne srvaag',\n", - " 'fjelltur med han monsen, ah vi e fr r',\n", - " 'vi ska kjr p, vi som tr',\n", - " 'syng ut mens en million tv-tittera hr p',\n", - " 'i love you te quiero, i love you oh-oh-oh',\n", - " 'i love you te quiero, i love you ai-ai-ai',\n", - " 'i love you te quiero, i love you oh-oh-oh',\n", - " 'elska d, ya-ha-ha',\n", - " 'stue, kjkken, bad, tel og med p soverommet',\n", - " 'vi har gjort det overalt helt siden va unge',\n", - " 'det e s trygt og godt nr du dansa foran m',\n", - " 'vil bli gammel og glem alt sammen med d',\n", - " 'huska du champagne-episoden med han aune sand?',\n", - " 'har du glmt at vi kom ut av skapet hos han skavlan?',\n", - " 'du lev bare en gang, du sir det birkje',\n", - " 'trur de m ha glmt at livet gr i reprise',\n", - " 'i love you te quiero, i love you oh-oh-oh',\n", - " 'i love you te quiero, i love you ai-ai-ai',\n", - " 'i love you te quiero, i love you oh-oh-oh',\n", - " 'elska d, ya-ha-ha',\n", - " 'i love you te quiero, i love you oh-oh-oh',\n", - " 'i love you te quiero, i love you ai-ai-ai',\n", - " 'i love you te quiero, i love you oh-oh-oh',\n", - " 'elska d, ya-ha-ha',\n", - " 'og lev drmmen, p stedet, p stedet',\n", - " 'og lev drmmen, livet, leve',\n", - " 'og lev drmmen gjennom en tv',\n", - " 'elska d',\n", - " 'i love you te quiero, i love you oh-oh-oh',\n", - " 'i love you te quiero, i love you ai-ai-ai',\n", - " 'i love you te quiero, i love you oh-oh-oh',\n", - " 'elska d, ya-ha-ha',\n", - " 'i love you te quiero, i love you oh-oh-oh',\n", - " 'i love you te quiero, i love you ai-ai-ai',\n", - " 'i love you te quiero, i love you oh-oh-oh',\n", - " 'elska d, ya-ha-ha',\n", - " 'hun løfter sitt blikk mot månen rund',\n", - " 'trollferd gjennom skogen',\n", - " 'alle de venter i innerste lund',\n", - " 'trollferd gjennom skogen',\n", - " 'kom, ta i ring – og dansen vil gå hele natten',\n", - " 'latter og leven, bålet blir tent',\n", - " 'trollferd gjennom skogen',\n", - " 'det bruser i trærne, det ventes spent',\n", - " 'trollferd gjennom skogen',\n", - " 'kom, ta i ring – og dansen vil gå hele natten',\n", - " 'hun går imot dem på naken fot',\n", - " 'trollferd gjennom skogen',\n", - " 'hun vet at i natt teller hennes mot',\n", - " 'trollferd gjennom skogen',\n", - " 'kom, ta i ring – og dansen vil gå hele natten',\n", - " 'stunden nærmer seg, hun er klar',\n", - " 'trollferd gjennom skogen',\n", - " 'vinden stilner i alle får',\n", - " 'trollferd gjennom skogen',\n", - " 'fang meg og fri meg, la dansen gå',\n", - " 'trollferd gjennom skogen',\n", - " 'fra alle kanter synges det nå',\n", - " 'trollferd gjennom skogen',\n", - " 'kom, ta i ring – og dansen vil gå hele natten',\n", - " 'translation:',\n", - " 'troll journey',\n", - " 'she lifts her view to the moon round',\n", - " 'troll journey through the woods',\n", - " 'gathered they wait in innermost grove',\n", - " 'troll journey through the woods',\n", - " 'come, join the ring – and the dancing shall last the whole night',\n", - " 'laughter and liveliness, the bonfire is lit',\n", - " 'troll journey through the woods',\n", - " \"there's rustling in the trees, and excited awaitening\",\n", - " 'troll journey through the woods',\n", - " 'come, join the ring – and the dancing shall last the whole night',\n", - " 'she walks toward them on naked foot',\n", - " 'troll journey through the woods',\n", - " 'she knows that she must be brave tonight',\n", - " 'troll journey through the woods',\n", - " 'come, join the ring – and the dancing shall last the whole night',\n", - " 'the moment approaches, she is ready',\n", - " 'troll journey through the woods',\n", - " 'the wind dies down on every field',\n", - " 'troll journey through the woods',\n", - " 'trap me and free me, let the dancing commence',\n", - " 'troll journey through the woods',\n", - " 'from all directions the singing comes',\n", - " 'troll journey through the woods',\n", - " 'come, join the ring – and the dancing shall last the whole night',\n", - " 'uden sorrig for det, som svandt',\n", - " 'han drager paa nye & farlig fâ¦rd',\n", - " 'hans eeneste sorrig vâ¦re at han intet fandt',\n", - " 'som vaer een taare vâ¦rdt',\n", - " 'til han medynk saae',\n", - " 'i hendes èine, der alt lius vaer tendt',\n", - " 'der al glâ¦de snart vaer endt',\n", - " 'slig een pige hellig, vacker',\n", - " 'det brustne blik flacker',\n", - " 'hun kiâ¦ndte haabet brast',\n", - " 'han viiger for bendes blik',\n", - " 'med een smertelig mystik',\n", - " 'fylder hende mod hiâ¦rtenskiâ¦r',\n", - " 'med hendes ild ligger sort & dèd',\n", - " 'ondskab qvalte hver een glèd',\n", - " 'dend hviide gloe, dend slukte han',\n", - " \"men dend ha'r skabt een mâ¦cktig brand\",\n", - " 'aff had & elskov & tungindigt haab',\n", - " 'nyfèdt bâ¦res maanen frem',\n", - " 'ofver det sind som her bleff rèfved',\n", - " 'aff dend mèrcke',\n", - " 'magi paa hende èfved',\n", - " 'med râ¦dde skrit. mod ham -',\n", - " 'dybt berèrt:',\n", - " '\"du diefvlens sendebud',\n", - " 'som bâ¦rer fryckt fra mand til brud',\n", - " 'du menskehadets reene styrkedrik',\n", - " 'du nâ¦ring for min siâ¦l, som dèr;',\n", - " 'gaae ey bort, o skygge, fèr',\n", - " 'ieg viiser kiâ¦ndsler som ieg hafvde angst',\n", - " 'for at nâ¦re fèr ieg bleff din fangst\"',\n", - " 'on he hunts with sorrow none',\n", - " 'for what hath passed is gone',\n", - " 'his sole regret the absence',\n", - " 'of desires worthie his teares',\n", - " 'until he saw pitie in her eyne',\n", - " 'where all the light did shine',\n", - " 'and soone all joie should die',\n", - " 'her glazed eyne did wander',\n", - " 'a mayden pure in grandeur',\n", - " 'left alone & lost',\n", - " 'from her eyne he retreats',\n", - " 'clad in mournfulle mysterie',\n", - " 'he takes her heart in his',\n", - " 'but dark & dead is her light',\n", - " \"evil took her fire's breath\",\n", - " \"her embers were by him devour'd\",\n", - " 'and inside of him a fire buildes',\n", - " 'of hate & love & hope so sad',\n", - " 'the moone comes forth',\n", - " 'born anew above her soule -',\n", - " 'stolen here by the dark',\n", - " 'binding magick of olde',\n", - " \"frighten'd she nears him\",\n", - " 'and speakes:',\n", - " 'thou, messenger of the devil',\n", - " \"who brings fear into lovers' hearts\",\n", - " 'thou, elixir to the hatred of men',\n", - " 'and air to my soule, now dying;',\n", - " 'leave me not, o shadow',\n", - " 'before i give myself away',\n", - " 'to these long denied desires',\n", - " 'thy gift to my dying heart',\n", - " 'i den mørke hall',\n", - " 'hvor døden er ens kall',\n", - " 'for her er ingen nåde løs',\n", - " 'i den tomme, glemte sal',\n", - " 'her hvor balder frøs',\n", - " 'og døde i hels mørke hall',\n", - " 'gravlagt i eljudne',\n", - " 'ingen her en fredsmann er',\n", - " 'pine og pest',\n", - " 'fra dødsrikets begjær',\n", - " 'la skrikene klinge',\n", - " 'og lokke døden frem',\n", - " 'for den skal bringe',\n", - " 'fortapelse inn i dem',\n", - " 'i dunkle daler gamle',\n", - " 'pines æser, vaner - alle',\n", - " 'i gamle mørke eljudne',\n", - " 'i dunkle daler gamle',\n", - " 'tomhetens korstog har kommet',\n", - " 'glemsel og tap har dødsriket bragt',\n", - " 'æser og vaner er alle i hel dømt',\n", - " 'der hvor balder ble gravlagt',\n", - " 'in the dark hall',\n", - " 'where death is ones call',\n", - " 'for here no mercy is',\n", - " 'in the empty forgotten hall',\n", - " 'where balder froze',\n", - " 'and died in hels dark hall',\n", - " 'buried in eljudne',\n", - " 'where no man peace can find',\n", - " 'pain and plague from the realms of deaths desire',\n", - " 'let the screams sound',\n", - " 'and lure death forth',\n", - " 'it shall bring perdition into them',\n", - " 'in obscure and ancient valleys',\n", - " 'æsir and vanir - all is tormented',\n", - " 'in the cold and dark eljudnir',\n", - " 'in obscure and ancient valleys',\n", - " 'the crusade of emtiness has arrived',\n", - " 'oblivion and loss has the realms of death',\n", - " 'æsir and vanir are all in hel doomed',\n", - " 'where balder was buried',\n", - " 'jeg leter ikke mer, for jeg har funnet gull',\n", - " 'og jeg kan ikke miste det uansett hva som skjer',\n", - " 'jeg venter ikke mer, på sol, på en god dag',\n", - " 'på å våkne, på å se',\n", - " 'at bunnløs lykke er ikke et fyrverkeri',\n", - " 'den er stille som snø, stille som snø',\n", - " 'som februarlys og tulipaner',\n", - " 'som venter sakte med alt sitt vakre på å dø',\n", - " 'jeg leter ikke mer, for smilet ditt er tatovert',\n", - " 'i hjertet mitt og jeg kan aldri bli blind igjen',\n", - " 'jeg venter ikke mer, jeg har solgt skjøtet',\n", - " 'til familiens arvesorg, og jeg skal aldri aldri dit igjen',\n", - " 'bunnløs lykke er ikke et fyrverkeri',\n", - " 'den er stille som snø, stille som snø',\n", - " 'som februarlys og tulipaner',\n", - " 'som venter sakte med alt sitt vakre på å dø',\n", - " 'english translation',\n", - " \"i'm not searching any more, for i have found gold\",\n", - " \"and i can't lose it no matter what happens\",\n", - " \"i'm not waiting any more for sun, for a good day\",\n", - " 'to wake up, to see',\n", - " 'that endless happiness is not fireworks',\n", - " \"it's as quiet as snow, quiet as snow\",\n", - " 'like february light and tulips',\n", - " 'that slowly wait in all their beauty to die',\n", - " \"i'm not searching any more, for your smile is tattooed\",\n", - " 'in my heart and i can never become blind again',\n", - " \"i'm not waiting any more, i have sold the title deed\",\n", - " 'to the family sorrow, and i will never ever go there again',\n", - " 'endless happiness is not fireworks',\n", - " \"it's as quiet as snow, quiet as snow\",\n", - " 'like february light and tulips',\n", - " 'that slowly wait in all their beauty to die',\n", - " 'ichot a burde in boure bryht',\n", - " 'that sully semly is on syht',\n", - " 'menskful maiden of myht',\n", - " 'feir and fre to fonde',\n", - " 'in al this wurhliche won',\n", - " 'a burde of blod ant of bon',\n", - " 'neuerzete y nuste non',\n", - " 'lussomore in londe',\n", - " 'blow, blow, northerne wynd',\n", - " 'sent thou me my suetyng!',\n", - " 'blow, blow, norterne wynd',\n", - " 'blou! blou! blou!',\n", - " 'with lokkes leftliche ant longe',\n", - " 'with frount ant face feir to fonde',\n", - " 'with murpes monie mote heo monge',\n", - " 'that brid so breme in boure',\n", - " 'with lossom eye grete ant gode',\n", - " 'with browen blysfol under bode',\n", - " 'he that reste hin the rode',\n", - " 'that leflich lif honoure!',\n", - " 'blow, blow, northerne wynd',\n", - " 'sent thou me my suetyng!',\n", - " 'blow, blow, norterne wynd',\n", - " 'blou! blou! blou!',\n", - " 'for hire loue y carke ant care',\n", - " 'for hire loue y droupne ant dare',\n", - " 'for hire loue my blisse is bare',\n", - " 'ant al ich waxe won;',\n", - " 'for hire loue in slep y slake',\n", - " 'for hire loue al nyht ich wake',\n", - " 'for hire loue mournyng y make',\n", - " 'mor then eny mon',\n", - " 'blow, blow, northerne wynd',\n", - " 'sent thou me my suetyng!',\n", - " 'blow, blow, norterne wynd',\n", - " 'blou! blou! blou!',\n", - " 'møndarn',\n", - " \"olje og kim send amfetamin'a, jeg er fra møndarn\",\n", - " 'dj broiler sett på no hard style',\n", - " 'kjetil oppspin og skløttene dj broiler på laurits',\n", - " 'møndaren',\n", - " 'møndaren',\n", - " 'møndaren',\n", - " 'møndaren',\n", - " 'møndaren',\n", - " 'møndaren',\n", - " 'extesi party extesi party kommer jenter hit får di drink med no rart i',\n", - " 'extesi party extesi party kommer jenter hit får di drink med no rart i',\n", - " 'ghb showers ghb showers rohypnol i drinken gir meg super powers',\n", - " 'ghb showers ghb showers rohypnol i drinken gir meg super powers',\n", - " \"olje og kim send amfetamin'a, jeg er fra møndarn\",\n", - " 'møndaren',\n", - " 'møndaren',\n", - " 'møndaren',\n", - " 'møndaren',\n", - " 'møndaren',\n", - " 'møndaren',\n", - " 'møndaren',\n", - " 'extesi party extesi party kommer jenter hit får di drink med no rart i',\n", - " 'extesi party extesi party kommer jenter hit får di drink med no rart i',\n", - " 'ghb showers ghb showers rohypnol i drinken gir meg super powers',\n", - " 'ghb showers ghb showers rohypnol i drinken gir meg super powers',\n", - " 'jeg vevde i stillhet og jeg vevde i sang',\n", - " 'i mitt hus der langt mot nord',\n", - " 'med en hage av villskap og berusende klang',\n", - " 'spant jeg mine ord',\n", - " 'jeg lyttet til vinden og jeg førte min tråd',\n", - " 'med en nål fra regnbuens hånd',\n", - " 'og til sist når jeg stod der med kjolen på',\n", - " 'ble jeg løftet av skogens ånd',\n", - " 'og kommer du ut forbi mitt hus engang',\n", - " 'skal du høre at jeg synger din sang',\n", - " 'og du vet du har et sted du kan gå',\n", - " 'når du har skogens kjole på',\n", - " 'jeg bærer min kjole med stolthet og fryd',\n", - " 'da kjenner jeg at jeg er fri',\n", - " 'og når jeg lytter til regndråpers lyd',\n", - " 'ønsker jeg det var vi',\n", - " 'som danset av glede der ute i det blå',\n", - " 'selv om regnet øste ned',\n", - " 'vi er en av samme med skogens kjole på',\n", - " 'og det tror jeg alle kan se',\n", - " 'og kommer du ut forbi mitt hus en gang',\n", - " 'skal du høre at jeg synger min sang',\n", - " 'og du vet du har et sted du kan gå',\n", - " 'når du har skogens kjole på',\n", - " 'og kommer du ut forbi mitt hus en gang',\n", - " 'hører du at jeg synger din sang',\n", - " 'vet du at du har et sted du kan gå',\n", - " 'når du har skogens kjole på',\n", - " 'translation:',\n", - " \"the forest's gown\",\n", - " 'i wove in silence and i wove in song',\n", - " 'in my house far up north',\n", - " 'with a garden of wildness and merry sound',\n", - " 'spun i my words',\n", - " 'i listened to the wind and guided my thread',\n", - " \"with a needle from the rainbow's hand\",\n", - " 'and finally when i stood there with the gown on',\n", - " \"i was lifted by the forest's spirit\",\n", - " 'and if you come by my house some time',\n", - " 'you shall hear me singing your song',\n", - " \"and you know you've got a place to go\",\n", - " \"when you're wearing the forest's gown\",\n", - " 'i wear my gown with pride and joy',\n", - " 'and i feel i am free',\n", - " 'and when i listen to the sound of raindrops',\n", - " 'i wish it were we',\n", - " 'who danced in joy out there in the blue',\n", - " 'even though the rain poured down',\n", - " \"we are one and the same wearing the forest's gown\",\n", - " \"and i think that's clear for all to see\",\n", - " 'and if you come by my house some time',\n", - " 'you shall hear me singing my song',\n", - " \"and you know you've got a place to go\",\n", - " \"when you're wearing the forest's gown\",\n", - " 'and if you come by my house some time',\n", - " \"you'll hear me singing your song\",\n", - " \"you'll know you've got a place to go\",\n", - " \"when you're wearing the forest's gown\",\n", - " 'let the monkey out',\n", - " 'we can throw things, scream and shout',\n", - " 'can even make the mushroom clouds',\n", - " \"i don't know but we'll figure it out\",\n", - " 'du kan gjørra mytti gæli',\n", - " 'du kan føl dæ ganske tappa',\n", - " \"du kan slå dæ løs på by'n\",\n", - " 'og du kan sett dæ ned på trappa',\n", - " 'men hvis du passe tida',\n", - " 'og har tida til å slappe av',\n", - " 'kan du gjørra som han vinni',\n", - " 'ta en luftetur med apa',\n", - " \"e det apa te'n vinni, bare vinni som vet\",\n", - " 'e det papp og bomull inni, bare vinni som vet',\n", - " 'å ha seg med en ape, det e passe lite straight',\n", - " 'men å ape etter apa, det e heller ikke greit',\n", - " 'let the monkey out',\n", - " 'we can throw things, scream and shout',\n", - " 'can even make the mushroom clouds',\n", - " \"i don't know but we'll figure it out\",\n", - " 'dø ung, dø hard',\n", - " 'til valhall vi drar',\n", - " 'i et fandens ritt',\n", - " 'menn støpt av granitt',\n", - " 'flere hundre krigers drikkelag',\n", - " 'en evig fest med måltid og slag',\n", - " 'skjenk våre krus til randen',\n", - " 'gi faen i morgenfanden',\n", - " 'drikk for våre brødre',\n", - " 'og drikk for de av dem som døde',\n", - " 'drikk!...så mjøden din',\n", - " 'drikk!...da for odin!!',\n", - " 'dø i ære do uten frykt',\n", - " 'til gylne haller det bærer',\n", - " 'i et fandens ritt',\n", - " 'dø ung, dø hard, dø i ære',\n", - " 'dø uten frykt',\n", - " '(english translation:)',\n", - " '(eternal)',\n", - " 'die young, die hard',\n", - " 'to valhalla we travel',\n", - " 'in a hellish ride',\n", - " 'men moulded of granite',\n", - " \"several hundred warrior's symposium\",\n", - " 'an eternal feast with meal and bottle',\n", - " 'pour our mugs to the rim',\n", - " \"don't give a damn about tomorrow's pain\",\n", - " 'drink for our brothers',\n", - " 'and drink for those who died',\n", - " 'drink!!...your mead',\n", - " 'drink!!...for odin',\n", - " 'die honourfull die without fear',\n", - " 'to the golden halls in a hellish ride',\n", - " 'die young, die hard, die honourfull, die without fear',\n", - " 'nå føler jeg att tiden er naer. min visdom',\n", - " 'mine tanker, har nådd, og skapt ... jeg har',\n", - " 'kunskapene nå. min sjel hungrer ei mer',\n", - " 'nok tid, har død hen. nå kan jeg vandre, i',\n", - " 'dimensioner',\n", - " 'english translation: emperor of an dimension unknown',\n", - " 'now i feel that the time is near. my wisdom',\n", - " 'my thoughts, has reached and created ... i have',\n", - " 'the knowledge now. my soul craves no longer',\n", - " 'enough time has died. now i can wander, in',\n", - " 'dimensions',\n", - " 'i am officially running',\n", - " 'for president of the united states',\n", - " \"i'm i’m i'm i'm i’m really rich\",\n", - " \"i'm i'm i'm i'm i'm really rich\",\n", - " 'skal jeg sitte å høre på sånn surreprat som detta her',\n", - " 'det gjør jeg ikke',\n", - " 'nobody would be tougher on isis than donald trump',\n", - " 'nobody would be tougher on isis than donald trump trump trump trump',\n", - " 'koffer skal e det',\n", - " 'ko koffer skal e det',\n", - " 'koffer skal e det',\n", - " 'ko koffer skal e det',\n", - " 'koffer skal e det',\n", - " 'ko koffer skal e det',\n", - " 'exuda',\n", - " \"it's your body\",\n", - " 'hvorfor fullfører du ikke løpet',\n", - " 'koffer skal e det',\n", - " 'nå var du veldig smart',\n", - " 'koffer skal e det',\n", - " 'ko koffer skal e det',\n", - " 'koffer skal e det',\n", - " 'ko ko ko ko',\n", - " 'det gjør jeg ikke',\n", - " 'koffer skal e det',\n", - " 'ko koffer skal e det',\n", - " 'koffer skal e det',\n", - " 'ko ko ko ko',\n", - " 'det gjør jeg ikke',\n", - " 'nobody would be tougher on isis than donald trump',\n", - " 'nobody would be tougher on isis than donald trump trump trump trump',\n", - " \"you call women you don't like fat pigs, dogs, slobs and disgusting animals\",\n", - " 'only rosie o’donnel',\n", - " 'exuda',\n", - " 'it’s your body',\n", - " 'hvorfor fullfører du ikke løpet',\n", - " 'koffer skal e det',\n", - " 'nå var du veldig smart',\n", - " 'i am officially running',\n", - " 'for president of the united states',\n", - " 'det viser du faen ikke på tv',\n", - " 'nå var du veldig smart',\n", - " 'ikke sant ikke sant virkelig',\n", - " 'hadde du gått på denne skolen hadde du sikkert fått sekseren blank',\n", - " 'fortids redskap i rusten avmakt',\n", - " 'gamle spår fryst i is',\n", - " 'stilt i skauen nå',\n", - " 'der vi høgde på gammalt vis',\n", - " 'vi var menn ta skauens makt',\n", - " 'dreiv tømmer i vindens skugge',\n", - " 'ba ei stille bønn',\n", - " 'for døm mektige trea vi høgde',\n", - " 'langli-kara enda sine daer her',\n", - " 'døm gjekk ut ei novembernatt',\n", - " 'je leita og leita',\n", - " 'men såg døm aldri att',\n", - " 'kun et fjernt minne er døm nå',\n", - " 'alt døm lærte på sin veg',\n", - " 'skauens skikk og bruk',\n", - " 'det er viten som dauer med meg',\n", - " 'sovna inn på salig hvilestad',\n", - " 'nedgravd på moseseng nær randa ta lia',\n", - " 'borte for evig og alltid',\n", - " \"ingen tårer for den siste mann' ta skauen\",\n", - " 'et tre igjen på dau manns stad',\n", - " 'ei sliten bjørk i ensom majestet',\n", - " 'skauen gir og skauen tar',\n", - " 'slik det har vøri i all evighet',\n", - " 'alt vi gjorde har visna vekk',\n", - " 'lagt ned i ei stille grav',\n", - " 'sjøl om sorga har stilna',\n", - " 'takker je for det skauen gav',\n", - " 'old times’ tools in rusty resignation',\n", - " 'old tracks frozen in ice',\n", - " 'the forests are quiet now',\n", - " 'where we logged the old-fashioned way',\n", - " 'we were men carved by the force of nature',\n", - " 'we felled timber in the shadow of winds',\n", - " 'told a silent prayer',\n", - " 'for the majestic trees we cut down',\n", - " 'the guys from langila died here',\n", - " 'they went out a late november night',\n", - " 'i searched for ages',\n", - " 'but saw them never again',\n", - " 'now they are nothing but a faded memory',\n", - " 'everything they learned through their years',\n", - " 'the forest’s ways',\n", - " 'that is knowledge which dies with me',\n", - " 'put to rest on our holy ground',\n", - " 'buried on a bed of moss near the edge of a field',\n", - " 'perished forevermore',\n", - " 'no tears shed for forest’s last man',\n", - " 'a tree on dead man’s ground',\n", - " 'a tired birch in lonesome majesty',\n", - " 'the forest gives and takes',\n", - " 'as it has been for all eternity',\n", - " 'everything we did has withered away',\n", - " 'buried in a silent grave',\n", - " 'even though the sorrow has passed',\n", - " 'i thank the forest for what it gave',\n", - " 'de ringte meg fra hollywood - sa \"you got',\n", - " 'the look\"',\n", - " '\"jeg gjør hva som helst\", sa jeg - klar til å',\n", - " 'suge kukk',\n", - " 'klar til å make a movie - make it make it',\n", - " 'rain',\n", - " 'ville make the hall of fame, nahmsayin',\n", - " 'så jeg tok en tur til hollywood - sekken',\n", - " 'full av dreams',\n", - " 'skulle make the big screen, by any means',\n", - " 'så jeg ringte min kontakt opp, sa jeg er er',\n", - " 'i byen',\n", - " 'men de leava meg på seen, det er ikke',\n", - " 'alltid som it seems',\n", - " 'jeg har en manager i statene som digger',\n", - " 'det jeg gjør',\n", - " 'han sier alltid \"christopher, i love your',\n", - " 'charachter\"',\n", - " 'du har noe spesielt, really, du kan komme',\n", - " 'far',\n", - " 'og du er intelligent, baby you could be a',\n", - " 'star',\n", - " 'i think you can get a golden globe, oscar',\n", - " 'og en emmy',\n", - " 'du tør å tenke stort, det er deg og carew',\n", - " 'og hennie',\n", - " 'nå må jeg get my buzz going som en',\n", - " 'fucking bie',\n", - " 'ordne meg ny aksent og bli sammen med',\n", - " 'thea sofie',\n", - " 'alle i norge sier \"kom hjem på besøk, du',\n", - " 'lovte, du ga oss pinky\"',\n", - " 'jeg bare \"chill the fuck outm, jeg er',\n", - " 'opptatt med things\"',\n", - " 'pluss at weeden her er lilla, den ser ut',\n", - " 'som tinky winky',\n", - " 'er det så rart jeg henger ut fortsatt, i',\n", - " 'mean',\n", - " 'jeg er redd, jeg innrømmer det',\n", - " 'jeg vil ikke se filmen om mitt liv i reprise på',\n", - " 'tv3',\n", - " 'eller rett på dvd, men hei',\n", - " 'alle elsket meg som karsten og som han i',\n", - " 'af1',\n", - " 'i really thought you were amazing in your',\n", - " 'latest movie role',\n", - " 'sa jeg til en dude, for jeg visste han hadde',\n", - " 'blow',\n", - " 'you seem really cool bro, how long are',\n", - " 'you in town',\n", - " 'jeg bare \"god knows, guess i\\'ll see you',\n", - " 'guys around\"',\n", - " 'gotta go, i gotta raise some hell',\n", - " 'feste med it-jenter, sørge for å kiss and',\n", - " 'tell',\n", - " 'spise østers med de og really get out of',\n", - " 'my shell',\n", - " 'kun for i kveld',\n", - " 'må get the money tommorow',\n", - " 'pappen min heter ikke vipps kartel, bro',\n", - " \"i'm kind of a big deal back in norway, like\",\n", - " 'forreal',\n", - " 'du vet norwegian grammies?',\n", - " \"i think i'm up to like three of those\",\n", - " 'selling out solo shows, get the flus',\n", - " 'jeg er faktisk millionær, counting in',\n", - " 'norwegian crowns',\n", - " 'jeg er redd, jeg innrømmer det',\n", - " 'jeg vil ikke se filmen om mitt liv i reprise på',\n", - " 'tv3',\n", - " 'eller straight to dvd, men hei',\n", - " 'alle elsket meg som hubert og som han i',\n", - " 'af1',\n", - " 'treacherous queen',\n", - " 'who abused my good faith',\n", - " 'i will take you',\n", - " 'where birds have never been',\n", - " 'a knife in my belt',\n", - " 'a spear in my hand',\n", - " 'to my burning eyes',\n", - " 'your halls are made of glass',\n", - " 'treacherous queen',\n", - " 'you abused my good faith',\n", - " 'i will take you',\n", - " 'where birds have never been',\n", - " 'a knife in my belt',\n", - " 'a spearhead in my heart',\n", - " 'to my burning heart',\n", - " 'your walls are made of glass',\n", - " 'the age of the heroes',\n", - " 'a distant memory',\n", - " 'the iron law rules iceland',\n", - " 'evil kings faithless queens',\n", - " 'who hides in the bay of smoke',\n", - " 'nothing goes unpunished',\n", - " 'look where you step',\n", - " 'you might tread on me',\n", - " 'queen in the bay of smoke',\n", - " 'bring supplies',\n", - " 'for the worst of your winters',\n", - " 'i shall wear your pain',\n", - " 'as a golden crown',\n", - " 'we shall crawl the tunnels',\n", - " 'in the dark of the underworld',\n", - " 'a million midgets are waiting for you',\n", - " 'queen in the bay of smoke',\n", - " 'i tasted your beauty',\n", - " 'you threw me to the dogs',\n", - " 'i walked as a wolf among the dogs',\n", - " 'i walked as a god among the slaves',\n", - " 'queen in the bay of smoke',\n", - " 'i mørket under jorden',\n", - " 'ligger dvergenes druger',\n", - " 'den hvite dronning faller',\n", - " 'i regins svarte hull',\n", - " 'skalden søker',\n", - " 'en konges skamhevn',\n", - " 'dronningen dulgt',\n", - " 'i småfolkets berg',\n", - " 'dvergene stimler',\n", - " 'og fagermøya sammen',\n", - " 'skrek står å se',\n", - " 'i berg-disas blikk',\n", - " 'hva vondt har jeg gjort?',\n", - " 'hvor tar du meg hen?',\n", - " 'tåresalt drysser',\n", - " 'på gulvet av gull',\n", - " 'her skal du bli',\n", - " 'svilkefulle kvinne',\n", - " 'ta skalden til mann',\n", - " 'og skammen i hug',\n", - " 'gautaty sendte gondul og skogul for å kåre blant kongene',\n", - " ...]},\n", - " 'data': ['(music: hrymr, lyric: vanargandr)',\n", - " 'vår metafysiske virkelighet er gått tapt',\n", - " 'gudene er en død myte i manns liv',\n", - " 'står som evhemeristiske symboler',\n", - " 'ikke lenger som en milepæl i våre hjerter',\n", - " 'mennesket har banet vei for ny tenkning',\n", - " 'en slaves og den uverdiges dumskap',\n", - " 'skal vi glemme og la det bli',\n", - " 'en forgangen tid?',\n", - " '(english translation:)',\n", - " '(a bygone time)',\n", - " 'our metaphysical reality is lost',\n", - " 'the gods are a dead myth in mans life',\n", - " 'stand as evhemeristic symbols',\n", - " 'no longer as a milestone in our hearts',\n", - " 'man has deared the way for rethinking',\n", - " \"a slaves and the unworthy's foolishness\",\n", - " 'shall we forget and let it be',\n", - " 'a bygone time?',\n", - " 'og du sa; fortsett bare fortsett ikke stopp opp for å tenke',\n", - " 'det er klart det stikker litt',\n", - " 'når du danser hele natten',\n", - " 'og skyller vitaminer ned med gift',\n", - " 'men hold blikket på veien og ha skylapper på',\n", - " 'du vet at du må du må videre nå',\n", - " 'stå opp til en ny dag',\n", - " 'en mørk, men hvit dag',\n", - " 'ta et valg',\n", - " 'ikke vent et sekund',\n", - " 'ikke sov en time',\n", - " 'ikke tvil bare gjør',\n", - " 'og jeg sa; hodet hjertet eller magen',\n", - " 'hodet hjertet eller magen',\n", - " 'hvor får jeg beskjed, hvor får jeg beskjed?',\n", - " 'hodet, hjertet eller magen',\n", - " 'men du sa; fortsett, bare fortsett, bare gjør det du skal gjøre',\n", - " 'ikke la deg distrahere, det er store ting på spill',\n", - " 'du tenker alt for mye og du lytter alt for nøye',\n", - " 'du har glemt hva du skal lytte til',\n", - " 'i går var du sikker, du hadde lagt en plan',\n", - " 'en plan om et arbeid en by og en mann',\n", - " 'om natten er alt lett, men denne hvite morgenen er den',\n", - " 'mørkeste du har sett',\n", - " 'og ikke vent et sekund',\n", - " 'ikke sov en time',\n", - " 'ikke tvil bare gjør',\n", - " 'men hodet hjertet eller magen',\n", - " 'hodet hjertet eller magen',\n", - " 'hvor får jeg beskjed, hvor får jeg beskjed?',\n", - " 'hodet, hjertet eller magen',\n", - " 'du vil bare sove dine føtter er så trøtte etter',\n", - " 'alt for mange lange netter',\n", - " 'men det er du og deg mot verden og verden tviler aldri bare',\n", - " 'kjenn etter',\n", - " 'og ikke vent et sekund',\n", - " 'ikke sov en time',\n", - " 'ikke tvil bare gjør',\n", - " 'og jeg sa; hodet, hjertet eller magen',\n", - " 'hodet, hjertet eller magen',\n", - " 'hvor får jeg beskjed, hvor får jeg beskjed?',\n", - " 'hodet, hjertet eller magen',\n", - " 'hodet hjertet eller magen',\n", - " 'hodet hjertet eller magen',\n", - " 'hvor får jeg beskjed, hvor får jeg beskjed?',\n", - " 'hodet, hjertet eller magen',\n", - " 'english translation',\n", - " \"and you said: keep going just keep going don't stop to think\",\n", - " 'of course it stings a bit',\n", - " 'when you dance all night',\n", - " 'and wash your vitamins down with poison',\n", - " 'but keep your eyes on the road and put blinders on',\n", - " 'you know you have to keep going now',\n", - " 'wake up to a new day',\n", - " 'a dark, but white day',\n", - " 'make a choice',\n", - " \"don't wait even a second\",\n", - " \"don't sleep even an hour\",\n", - " \"don't have doubts, just do it\",\n", - " 'and i said: head heart or stomach',\n", - " 'head heart or stomach',\n", - " 'which is telling the truth, which is telling the truth?',\n", - " 'head heart or stomach',\n", - " 'but you said: keep going, just keep going, just do what you have to do',\n", - " \"don't get distracted, there's so much at stake\",\n", - " 'you think all too much and you listen all too closely',\n", - " 'you have forgotten what you should listen to',\n", - " 'yesterday you were certain, you had made a plan',\n", - " 'a plan about a job a city and a man',\n", - " 'at night everything is easy, but this white morning is the',\n", - " 'darkest you have seen',\n", - " \"don't wait even a second\",\n", - " \"don't sleep even an hour\",\n", - " \"don't have doubts, just do it\",\n", - " 'and i said: head heart or stomach',\n", - " 'head heart or stomach',\n", - " 'which is telling the truth, which is telling the truth?',\n", - " 'head heart or stomach',\n", - " 'you just want to sleep, your feet are so tired after',\n", - " 'too many long nights',\n", - " \"but it's you against the world and the world is never in doubt, just\",\n", - " 'close your eyes',\n", - " \"don't wait even a second\",\n", - " \"don't sleep even an hour\",\n", - " \"don't have doubts, just do it\",\n", - " 'and i said: head heart or stomach',\n", - " 'head heart or stomach',\n", - " 'which is telling the truth, which is telling the truth?',\n", - " 'head heart or stomach',\n", - " 'head heart or stomach',\n", - " 'head heart or stomach',\n", - " 'head heart or stomach',\n", - " 'which is telling the truth, which is telling the truth?',\n", - " 'head heart or stomach',\n", - " '(music and lyric: vanargandr)',\n", - " 'fra ginnunga-gap til evig tid',\n", - " 'fra tidenes morgen til dommedag',\n", - " 'fra jotneblod til verdens hav',\n", - " 'fra bein og marg til fjell og land',\n", - " 'vår tid er talt, lengselens skrik',\n", - " 'maktenes mørke har talt sin tid',\n", - " 'men opp av dypet, det glemte, dunkle',\n", - " 'reises en tid av hedensk fortid',\n", - " 'jeg står i skyggen av visjoner, den forviste sannhet finnes her',\n", - " 'riv min sjel, stjel mitt sinn, allikevel blir jeg aldri din',\n", - " 'vik for meg, svikere av løgnens far',\n", - " 'bærere av svik, av støvet kom, til støv skal bli',\n", - " 'forsvinne med tiden, tiden glemt og lagt i grus',\n", - " 'hør mine tidløse kall, vår åpenbaring, vårt fall',\n", - " 'gi meg visdom, gi meg makt, for i glemsel sviket er lagt',\n", - " 'en ny seier er fortalt, en annen tro har forfalt',\n", - " 'himlen tegner gudebilder gravd opp av dype kilder',\n", - " 'ã†tten gjemt i manns minne opp av dypet vi skal finne',\n", - " 'visjoner av en evighet i skyggen er fortalt',\n", - " 'sprer seg mens den andre dør',\n", - " 'fra ginnunga-gap til evig tid',\n", - " 'den norrøne ã†tt vil aldri dø!!',\n", - " '(english translation:)',\n", - " '(from ginnunga-gap to eternity)',\n", - " 'from ginnunga-gap to eternity',\n", - " 'from the dawn of time to doomsday',\n", - " 'from giants blood to world seas',\n", - " 'from bone and marrow to mountains and land',\n", - " 'our time is spoken, the yearning scream',\n", - " 'the twilight of the gods has been told',\n", - " 'but up from the deep, the forgotten, the gloomy',\n", - " 'rises the time of pagan past',\n", - " 'i stand in the shadow of visions',\n", - " 'the banished truth lies here',\n", - " 'rip my soul, steal my mind',\n", - " 'still, i will never be yours',\n", - " 'give way for me mongrels of the father of lies',\n", - " 'bearers of betrayal. from the dust came, into dust remain',\n", - " 'vanish with time, time forgotten and lain in ruins',\n", - " 'hear my timeless call',\n", - " 'our revelation, our fall',\n", - " 'give me wisdom, give me power',\n", - " 'for the betrayal has sunk into oblivion',\n", - " 'a new victory has been told',\n", - " 'another faith has decayed',\n", - " 'the heaven draws idol',\n", - " 'unearthed from deep sources',\n", - " 'the lineage hidden in the memory of man',\n", - " 'up from the deep we shall find',\n", - " 'visions of eternity in the shadow is told',\n", - " 'spreads while the other dies',\n", - " 'from ginnunga-gap to eternity',\n", - " 'the norse lineage will never die!!',\n", - " 'et ritus i smerte et ritus i blod',\n", - " 'metall mot kjøtt alt blir dødt',\n", - " 'et slakt i hov et offer av blot',\n", - " 'metall mot kjøtt alt blir dødt',\n", - " 'en flukt fra livet en reise uten tid',\n", - " 'mot dødens grøder grimme, skarpe klør',\n", - " 'nok et slakt av en avmakt',\n", - " 'kjenn din fiende lær han å kjenne',\n", - " 'det føles befriende og se den avmakt brenne',\n", - " '(english translation:)',\n", - " '(know your enemy)',\n", - " 'a rite in pain a rite in blood',\n", - " 'metal against flesh everything turns out dead',\n", - " 'a slaughter in hov a victim of sacrifice',\n", - " 'metal against flesh everything turns out dead',\n", - " 'an escape from life a journey without time',\n", - " 'towards the crops of death grim, sharp claws',\n", - " 'another slaughter of an impotence',\n", - " 'know your enemy',\n", - " 'learn to know him',\n", - " 'it feels liberating to see the',\n", - " 'impotence burn',\n", - " 'work it (?x)',\n", - " 'harder!',\n", - " 'work it (?x)',\n", - " 'better!',\n", - " 'work it (?x)',\n", - " 'stronger!',\n", - " 'work it, harder, work it, better, work it, faster, work it, stronger',\n", - " 'work it, work it, better, work it, faster, work it, stronger',\n", - " 'work it, harder, work it, better, work it, faster, work it, stronger',\n", - " '(?x)',\n", - " 'work it harder, work it better, do it faster, makes us stronger',\n", - " 'work it, harder, work it, better, work it, faster, work it, stronger',\n", - " 'work it harder, makes us better, do it faster, makes us stronger',\n", - " 'work it (7x)',\n", - " 'better!',\n", - " '(?x)',\n", - " 'work it (?x)',\n", - " 'harder!',\n", - " 'work it (?x)',\n", - " 'better!',\n", - " 'work it (?x)',\n", - " 'faster!',\n", - " 'work it (?x)',\n", - " 'stronger!',\n", - " '(2x)',\n", - " 'work it, harder, work it, better',\n", - " 'work it, harder, work it, better',\n", - " 'work it faster, makes us stronger (3x)',\n", - " 'work it faster, makes us better',\n", - " 'work it faster, makes us stronger (3x)',\n", - " 'work it faster, makes us harder',\n", - " 'work it faster, makes us stronger (4x)',\n", - " 'work it harder, makes us better, do it faster, makes us stronger',\n", - " 'our work is never over! (?x)',\n", - " 'work it, harder, work it, better',\n", - " '(2x)',\n", - " 'our work is never over! (?x)',\n", - " 'work it faster, makes us stronger',\n", - " 'work it (?x)',\n", - " 'harder!',\n", - " 'work it (?x)',\n", - " 'better!',\n", - " 'work it (?x)',\n", - " 'faster!',\n", - " 'work it (?x)',\n", - " 'stronger!',\n", - " '(2x)',\n", - " 'work it... (?x)',\n", - " 'rites of death',\n", - " 'rites of undeath',\n", - " \"we're falling\",\n", - " \"we're falling down\",\n", - " \"i told you we're into deep\",\n", - " \"transfer life into what's dead\",\n", - " 'the act of humans playing god',\n", - " 'redoing the acts of medieval',\n", - " 'witchcraft and the worship of dead',\n", - " \"we're falling, we're falling down\",\n", - " 'from our throne, so supposedly high',\n", - " 'when we confront the power great',\n", - " 'the might of our own creator',\n", - " \"transfer life into what's dead\",\n", - " 'the act of human playing god',\n", - " 'redoing the acts of medieval',\n", - " 'witchcraft and the worship of dead',\n", - " 'the rites of undeath',\n", - " 'is the testament of our own death',\n", - " 'sometimes i cry in grief',\n", - " 'not for the dead that once surrounded me',\n", - " 'or for the sadness that comes to me',\n", - " 'when i am lonely',\n", - " 'but i cry',\n", - " 'for those who have chosen a life without christ',\n", - " 'there are twelve months',\n", - " 'three hundred and sixty-five days a year',\n", - " 'but it takes just one second to answer him',\n", - " 'and receive eternal peace',\n", - " 'vi kommer tilbake på hvite hester',\n", - " 'med sverdene hevet klare til kamp !',\n", - " 'vi strider med kristus mot hedningefolket',\n", - " 'som slo seg på brystet og sa:',\n", - " '\"gud han er død\", de ville ei knele',\n", - " 'de ville ei døpes i natt skal de dø !',\n", - " 'hver eneste en de ender med sine, i helvædes rige',\n", - " 'menn uten mot mål og mening',\n", - " 'gud, kan ei blø',\n", - " 'i natt skal du dø',\n", - " 'sverdene i våre hender',\n", - " 'frir deg ut fra jordiske bånd',\n", - " 'vi tar våre hester sammen med kristus',\n", - " 'oppad vi farer mot himmelens hall',\n", - " 'der skal vi i sammen med herren regjere',\n", - " 'hans styrke består til evige tider',\n", - " 'med frihet og glede i lyset fra tronen',\n", - " 'vår trette sjel vil der finne hvile',\n", - " 'men utenfor skjærer de tenner og gråter',\n", - " 'vær du ei en dåre når du tar ditt valg',\n", - " 'nå ser vi i et speil som i en gåte',\n", - " 'men da skal vi se utilslørt',\n", - " 'himmelen åpenbart !',\n", - " 'vemod over det tapte liv',\n", - " 'et liv som aldri ble levd',\n", - " 'jeg vet lite av glede',\n", - " 'men mye av vrede',\n", - " 'vik fra meg',\n", - " 'satan',\n", - " 'hei alexander!',\n", - " 'i natt kom det enda mer snø!',\n", - " 'selma, iselin og jeg gikk på ski til kråkeslottet',\n", - " 'som er en hytte vi har laget i et tre et stykke fra huset',\n", - " 'vi hadde fått med sjokoladekake som mat til hytta',\n", - " 'verdens beste mammakake!',\n", - " 'etterpå hoppet vi ned i snøen',\n", - " 'sjokoladekakesmulene ga vi til hønene',\n", - " 'de elsker alt vi gir dem av menneskemat',\n", - " 'til og med gelé med vaniljesaus!',\n", - " 'sauene brekte, og ville også ha mat',\n", - " 'men de fikk bare masse kos',\n", - " 'nå skal jeg spille på fiolin',\n", - " 'jeg øver meg på å spille det du lærte meg',\n", - " 'håper du snart kommer på besøk!',\n", - " 'mange gårsklemmer fra kaja!',\n", - " 'hi alexander!',\n", - " 'it came even more snow today!',\n", - " 'selma, iselin and i went on skiing to the crows castle',\n", - " 'which is a little hut we made in a tree some place from the house',\n", - " 'we brought chocolate cake as food to the hut',\n", - " \"the world's best mom cake!\",\n", - " 'afterwards, we jumped into the snow',\n", - " 'we gave the chocolate cake crumbs to the chickens',\n", - " 'they love everything we give them of human food',\n", - " 'even the jelly with custard!',\n", - " 'the sheeps bleated, and also wanted food',\n", - " 'but they only got lots of hugs',\n", - " 'now i will play the violin',\n", - " \"i'm practising to play what you taught me\",\n", - " 'hope you soon will come to visit!',\n", - " 'tons of contryhugs from kaja!',\n", - " 'fall for meg nå inatt',\n", - " 'vinn min vilje, vinn min hånd',\n", - " 'uten deg kan jeg ei leve',\n", - " 'ta deg i akt, min trolldomsmakt',\n", - " 'vil fange deg inn og du blir min',\n", - " 'har vi en i månens favn?',\n", - " 'da hun så han i dansen den aller første dag',\n", - " 'sang hennes hjerte og lo hennes sjel, og lo hennes sjel',\n", - " 'det var han hun skulle ha',\n", - " 'hun hadde aldri sett slik ynde i en mann',\n", - " 'og dansen gikk på vollen, på vollen',\n", - " 'det var han hun skulle ha',\n", - " 'fall for meg nå inatt',\n", - " 'vinn min vilje, vinn min hånd',\n", - " 'uten deg kan jeg ei leve',\n", - " 'ta deg i akt, min trolldomsmakt',\n", - " 'vil fange deg inn og du blir min',\n", - " 'har vi en i månens favn?',\n", - " 'han sa, \"skjønne kvinne, kom over hit',\n", - " 'hør, vil du vel gifte deg, gifte deg',\n", - " 'med meg så ung jeg er\"',\n", - " 'hun ble nok blendet av hans sjarm og hans søte ord',\n", - " 'for da hun våknet den andre dag, den andre dag',\n", - " 'fant hun sengen tom',\n", - " 'fall for meg nå inatt',\n", - " 'vinn min vilje, vinn min hånd',\n", - " 'uten deg kan jeg ei leve',\n", - " 'ta deg i akt, min trolldomsmakt',\n", - " 'vil fange deg inn og du blir min',\n", - " 'har vi en i månens favn?',\n", - " 'så kom den tredje dagen, og med den den tredje natt',\n", - " 'og dansen gikk på vollen, på vollen',\n", - " 'han danset som om ingenting var hendt',\n", - " 'translation:',\n", - " \"in the moon's embrace\",\n", - " 'fall for me this very night',\n", - " 'win my will, win my hand',\n", - " 'without you, i cannot live',\n", - " 'beware, my magic power',\n", - " 'when she saw him dancing the very first day',\n", - " 'sang her heart and laugh did her soul, and laugh did her soul',\n", - " 'it was him she would have',\n", - " 'she had never seen such grace in a man',\n", - " 'and the dance was on the rampart, on the rampart',\n", - " 'it was him she would have',\n", - " 'fall for me this very night',\n", - " 'win my will, win my hand',\n", - " 'without you, i cannot live',\n", - " 'beware, my magic power',\n", - " \"will trap you and you'll become mine\",\n", - " \"do we have one in the moon's embrace?\",\n", - " 'he said, \"beautiful woman, come over here',\n", - " 'listen, will you pledge your troth, pledge your troth',\n", - " 'to me, though young i am\"',\n", - " 'she certainly was blinded by his charm and his sweet words',\n", - " 'for when she awoke the second day, the second day',\n", - " 'she found the bed empty',\n", - " 'fall for me this very night',\n", - " 'win my will, win my hand',\n", - " 'without you, i cannot live',\n", - " 'beware, my magic power',\n", - " \"will trap you and you'll become mine\",\n", - " \"do we have one in the moon's embrace?\",\n", - " 'then came the third day, and with that the third night',\n", - " 'and the dance was on the rampart, on the rampart',\n", - " 'he danced as if nothing had happened',\n", - " 'ved oasen',\n", - " 'mellom palmene',\n", - " 'i en lysning',\n", - " 'der slår me oss ned',\n", - " 'og som en gammel venn',\n", - " 'me møter igjen',\n", - " 'et sted',\n", - " 'der elefantene går te',\n", - " 'den lille sonden',\n", - " 'som søkte rundt jorden',\n", - " 'tok oss her',\n", - " 'elefantenes hemmelige gravplass',\n", - " 'jesus! det må vær her!',\n", - " 'me lukker øyne',\n", - " 'me lukker ørene',\n", - " 'når det nevnes',\n", - " 'tror ingen det',\n", - " 'ekspedisjoner',\n", - " 'og alle rikdommer',\n", - " 'blekne her',\n", - " 'elefantenes hemmelige gravplass',\n", - " 'jesus! det må vær her!',\n", - " 'eg hører det',\n", - " 'du hører det',\n", - " 'me hører begge samme sangen',\n", - " 'eg ser på deg',\n", - " 'du ser på meg',\n", - " 'og me skjønner begge at det vil forbli en',\n", - " 'hemmelighet',\n", - " 'elefantenes hemmelige gravplass',\n", - " 'jesus! det må vær her!',\n", - " 'elefantenes hemmelige gravplass',\n", - " 'jesus! det må vær her!',\n", - " 'elefantenes hemmelige gravplass',\n", - " 'jesus! det må vær her!',\n", - " 'elefantenes hemmelige gravplass',\n", - " 'jesus! det må vær her!',\n", - " 'english translation:',\n", - " 'by the oasis',\n", - " 'between the palms',\n", - " 'in an opening',\n", - " 'we set up camp',\n", - " 'and like an old friend we meet again',\n", - " 'that place where the elephants go',\n", - " 'the little probe that searched the earth',\n", - " 'took us here',\n", - " \"the elephant's secret graveyard!\",\n", - " 'jesus! it must be here!',\n", - " 'we keep eyes shut',\n", - " 'we keep ears shut',\n", - " 'and when its mentioned',\n", - " 'no one wants to see',\n", - " 'when it was in sight',\n", - " 'my heart stopped',\n", - " 'that place',\n", - " 'where the elephants go to',\n", - " \"the elephant's secret graveyard!\",\n", - " 'jesus! it must be here!',\n", - " 'we must walk alone from here',\n", - " 'i look at you you look at me',\n", - " 'and we both understand',\n", - " 'that it will remain a secret',\n", - " \"the elephant's secret graveyard!\",\n", - " 'jesus! it must be here!',\n", - " \"the elephant's secret graveyard!\",\n", - " 'jesus! it must be here!',\n", - " \"the elephant's secret graveyard!\",\n", - " 'jesus! it must be here!',\n", - " \"the elephant's secret graveyard!\",\n", - " 'jesus! it must be here!',\n", - " 'bikkjen, min aller beste venn',\n", - " 'eg skal aldri miste deg igjen',\n", - " 'bikkjen, min aller beste venn',\n", - " 'eg skal aldri miste deg igjen',\n", - " 'kor e bikkjen? kor e bikkjen?',\n", - " 'kor e bikkjen? eg må finne bikkjen',\n", - " 'for den som finner bikkjen får den feteste premien',\n", - " 'kor e bikkjen? kor e bikkjen?',\n", - " 'mamma har ment du. pappa tar tiden',\n", - " 'og hvis du ikkje finner bikkjen',\n", - " 'så blir det ingen premie, og ingen sjokolade, ingen kake',\n", - " 'varmere',\n", - " 'kaldere',\n", - " 'det er vanskelig nå som det er',\n", - " 'høyere',\n", - " 'lavere',\n", - " 'fugl, fisk eller skilpadde',\n", - " 'det e vanskelig å finne den',\n", - " 'når han e så veldig liten',\n", - " 'han e ikke bak potteplantene',\n", - " 'og i den nederste skuffen',\n", - " 'bikkjen, min aller beste venn',\n", - " 'eg skal aldri miste deg igjen',\n", - " 'bikkjen, min aller beste venn',\n", - " 'eg skal aldri miste deg igjen',\n", - " 'english translation (for those of you who wish to know what it means:)',\n", - " 'dogs, my best friend',\n", - " 'i will never lose you again',\n", - " 'dogs, my best friend',\n", - " 'i will never lose you again',\n", - " \"where's the dogs? where's the dogs?\",\n", - " \"where's the dogs? i have to find the dogs\",\n", - " 'for those who find dogs get the coolest prize',\n", - " \"where's the dogs? where's the dogs?\",\n", - " 'mom is supposed to. dad takes time',\n", - " 'and if you do not find the dogs',\n", - " 'so there will be no prize and no chocolate, no cake',\n", - " 'warmer',\n", - " 'colder',\n", - " 'it is difficult now as it is',\n", - " 'higher',\n", - " 'lower',\n", - " 'bird, fish or turtle',\n", - " \"it's hard to find it\",\n", - " \"when he's so very small\",\n", - " \"he's not behind the potted plants\",\n", - " 'or in the bottom drawer',\n", - " 'dogs, my best friend',\n", - " 'i will never lose you again',\n", - " 'dogs, my best friend',\n", - " 'i will never lose you again',\n", - " 'lenten ys come with loue to toune',\n", - " 'with blosmen ant with briddes roune',\n", - " 'that al this blisse bryngeth',\n", - " 'the threstelcoc him threteth oo;',\n", - " 'away is huere wynter wo',\n", - " 'when woderoue springeth',\n", - " 'dayeseyes in this dales',\n", - " 'notes suete of nyhtegales',\n", - " 'vch foul song singeth',\n", - " 'mody meneth, so doth mo;',\n", - " 'ichot ycham on of tho',\n", - " 'for loue that likes ille',\n", - " 'deawes donketh the dounes;',\n", - " 'deores with huere derne rounes',\n", - " 'domes forte deme',\n", - " 'yef me shal wonte wille of on',\n", - " 'this wunne weole y wole forgon',\n", - " 'ant wyht in wode be fleme',\n", - " 'naken under månelyset',\n", - " 'førte jeg min fot ut i dans',\n", - " 'øyne sorte som av kull',\n", - " 'fulgte mine steg fra skogens rand',\n", - " 'hør min sang over salten hav – fra evig tid',\n", - " 'over fjell og gjennom dyp skog – inn i drøm',\n", - " 'jeg kan se deg sove nå – min kjære',\n", - " 'alle vinder gi meg liv og hør min sang',\n", - " 'stille strekker seg hender',\n", - " 'ut av mørket og stryker ved mitt hår',\n", - " '\"kom barn, la oss gå lenger inn i skogen',\n", - " 'legg ditt hode ned, så skal du se ham igjen før dagen gryr\"',\n", - " 'hør min sang over salten hav – fra evig tid',\n", - " 'over fjell og gjennom dyp skog – inn i drøm',\n", - " 'jeg kan se deg sove nå – min kjære',\n", - " 'alle vinder gi meg liv og hør min sang',\n", - " 'jeg vil hviske ditt navn',\n", - " 'jeg vil leve uten savn',\n", - " 'jeg vil fylles av liv i all tid',\n", - " 'translation:',\n", - " 'hear my song',\n", - " 'naked under the moonlight',\n", - " 'i guided my foot into dance',\n", - " 'eyes black as of coal',\n", - " \"followed my steps from the forest's edge\",\n", - " 'hear my song across salty seas – from infinite time',\n", - " 'over mountains and through deep woods – into dreams',\n", - " 'i can see you sleep now – my dear',\n", - " 'all winds, give me life and hear my song',\n", - " 'silently hands stretch themselves',\n", - " 'out of darkness and caress my hair',\n", - " '\"come child, let us go further into the woods',\n", - " 'rest your head, and you shall see him again ere break of day\"',\n", - " 'hear my song across salty seas – from infinite time',\n", - " 'over mountains and through deep woods – into dreams',\n", - " 'i can see you sleep now – my dear',\n", - " 'all winds, give me life and hear my song',\n", - " 'i want to whisper your name',\n", - " 'i want to live without want',\n", - " 'i want to be filled with life forever',\n", - " '(music and lyric: vanargandr)',\n", - " 'i opphavs tider var ingenting, ikke sand, ikke sjø eller svale bølger;',\n", - " 'jord og opphimmel fantes der ikke, bare ginnunga-gap og gras ingen steder',\n", - " 'fra et urvesen av jotunslekt ble kuldeverden skapt',\n", - " 'frostjotner rår over kulde, mørke og den svarte makt',\n", - " 'lange dager og tunge år skal der engang komme, for menneskenes tid i midgard er omme',\n", - " 'de skal fare til det dunkle svarte, i flammene og kaoset de ikke vil makte',\n", - " 'frostjotner vil fryde seg i galskapens ekstase, de vil bli verdens nye mektigste rase',\n", - " 'de skal vokte verdens bønder, plyndre, drepe og fardømme',\n", - " 'i nord ligger slottet, til over tusner jotner',\n", - " 'de skuer ut mot landet, der alt skal stå i brann',\n", - " 'tidenes strid',\n", - " 'mørk, evig vinter',\n", - " 'pines i slid',\n", - " 'mennesker der lider',\n", - " 'for jotnenes kamp har begynt, mot det menneskene har forkynt',\n", - " 'her skal den mørke skjebne seire, for her skal frostjotnene feire',\n", - " 'mørk, evig vinter',\n", - " 'det klinger i sverd, økser og store hammere',\n", - " 'skrik og hyl synger som i nivlheim',\n", - " 'blodet fra jotner og menn flyter gjennom landet, og røyken fra brent skog stiger',\n", - " 'i en sort eim',\n", - " 'frostjotner sloss som gale ulver, mens menn løper som redde sauer',\n", - " 'jotnenes makt har satt sitt spor på en engang grønn, flott jord',\n", - " 'ingen liv spares etter denne siste krig for her skal alle dø på verste vis',\n", - " 'kvinner og menn, alle skal lide, til nivlheim gjennom slid de pines',\n", - " 'i opphavs tider var ingenting, ikke sand, ikke sjø eller svale bølger',\n", - " 'men nå finnes det mørke, kulde og evig vinter, for frostjotnene har verden underlagt',\n", - " 'i nord ligger slottet, til over tusen jotner',\n", - " 'de skuer ut mot ødeland, der alt står i brann',\n", - " 'for jotnenes kamp er vunnet, menneskene har forsvunnet',\n", - " 'her har den mørke skjebne seiret og frostjotnene har feiret',\n", - " 'mørk, evig vinter',\n", - " '(første vers tatt fra voluspå)',\n", - " '(english translation:)',\n", - " '(dark, eternal winter)',\n", - " 'in the time of origin there was nothing, not sand, not sea or cool waves',\n", - " 'earth and heaven did not exist, just ginnunga-gap, and grass nowhere',\n", - " 'from a primitive creature of giant- race, the cold world was made',\n", - " 'frost giants command the cold, the dark and black power',\n", - " \"long days and cruel years will someday arrive, for man's time in midgard is at an end\",\n", - " 'the shall wander into the gloomy darkness. into the flames and chaos they can not endure',\n", - " 'frost giants will rejoice at the ecstasy of madness. they will become the worlds new',\n", - " 'most powerful race',\n", - " 'they will guard the peasents of the world pillage, kill and condemn',\n", - " 'to the north lies the castle',\n", - " 'of over a thousand giants',\n", - " 'they look towards the land',\n", - " 'where everything will be lit afire',\n", - " 'war of time',\n", - " 'dark, eternal winter',\n", - " 'tortured in slid',\n", - " 'people there suffer',\n", - " 'for the giants battle has begun, against what man has proclaimed',\n", - " 'here, the dark fate will triumphant, for here the frost giants will celebrate',\n", - " 'dark, eternal winter',\n", - " 'swords, axes and large hammers will sound. screams and howls sing like in nivlheim',\n", - " 'the blood of giants & men will flow through the land, and the smoke of burnt forests‘',\n", - " 'rises in a black vapour',\n", - " 'frost giants fight like mad wolves while men flee like frightened sheep',\n", - " 'the giants‘ power has left its mark. on a once green and beautiful land',\n", - " 'no lives are spared after this last war, for here all will die in the worst possible way',\n", - " \"women and men, all shall suffer, to nivlheim through slid they're tortured\",\n", - " 'in the time of origin there was nothing, not sand, not sea or cool waves',\n", - " 'but now there is darkness, cold and eternal winter, for the frost giants have',\n", - " 'conquered the world',\n", - " 'to the north lies the castle, of over a thousand giants',\n", - " 'they look towards the wastelands, where everything is lit afire',\n", - " 'for the giants‘ battle has been won, man has disappeared',\n", - " 'here the dark fate has triumphed, and the frost giants have celebrated',\n", - " 'dark, eternal winter',\n", - " '(first verse taken from voluspå)',\n", - " '(music and lyric: vanargandr)',\n", - " 'i endeløse tider forlatt, har jeg dvelt i sorg',\n", - " 'men i denne siste natt, reises tidnes borg',\n", - " 'kaster en mørk skygge over det triste land',\n", - " 'en kald og hatefull uhygge faller ned i kristus favn',\n", - " 'jeg åpner mine øyne, ser en verden som venter',\n", - " 'som venter på meg den mektige kjemper',\n", - " 'i drepende stillhet sitter, mitt sinn er hatsk, minn sjel er bitter',\n", - " 'jeg lukker mine øyne',\n", - " 'åpenbaringens natt skal komme, når de kristne skal falle',\n", - " 'deres tid er omme, når helheim skal kalle',\n", - " 'jeg skal knuse kristen tro, jeg skal trosse gud',\n", - " 'jeg skal forpeste lysets bro, for jeg er gudenes sendebud',\n", - " 'jeg sitter i bond, ved maktenes dom, opprettholder av verdens ordning',\n", - " 'ved det hedenske hordes ting',\n", - " 'jeg kommer kledd i pestens sorte, dødsgaldreren av åpenbaringens natt',\n", - " 'når skyene setter sprekker er jeg borte, og guds flokk med døden dratt',\n", - " 'et siste pust av dødens vind forsvinner, utslettet alt av en nå glemt fortid',\n", - " 'intet er tilbake av falske minner',\n", - " 'den norrøne stolthet er endelig befridd',\n", - " '(english translation:)',\n", - " '(the night of revelation)',\n", - " 'in endless times abandoned',\n", - " 'i have dwelled in sorrow',\n", - " 'but on this last night',\n", - " 'times of sorrows arise',\n", - " 'and cast a dark shadow',\n", - " 'upon the wistful land',\n", - " 'a cold and spiteful horror',\n", - " 'falls into christ‘ embrace',\n", - " 'i open my eyes',\n", - " 'see a world that waits',\n", - " 'that waits for me, the mighty warrior',\n", - " 'in mortal silence rests',\n", - " 'my mind is hateful, my soul is bitter',\n", - " 'i close my eyes',\n", - " 'the night of revelations will arrive',\n", - " 'when the christians shall perish',\n", - " 'their time is at an end',\n", - " 'when helheim calls',\n", - " 'i will shatter the christian faith',\n", - " 'i will defy god',\n", - " 'i will poison the bridge of light',\n", - " 'for i am the messenger of the gods',\n", - " 'i sit in bond',\n", - " 'at the judgement of the powers',\n", - " 'keeper of the worlds',\n", - " 'by the heathen hordes court',\n", - " 'i come dressed in the black of the plague',\n", - " 'the necromancer of the night of revelation',\n", - " \"when the clouds crack, i'll be gone, and gods‘ flock with death departed\",\n", - " 'one last breath of deaths‘ wind vanished, annihilated all by a now forgotten past',\n", - " 'nothing remains of false memories',\n", - " 'the norse pride is free at last',\n", - " 'litle fuglen sette seg på kyrkjespong',\n", - " 'gud råde!',\n", - " 'han song så fagert ein ottesong',\n", - " 'herre gud sende oss sin nåde!',\n", - " 'litle fuglen sette seg på kyrkjespong',\n", - " 'gud råde!',\n", - " 'og presten han undrast på den litle fugle song',\n", - " 'herre gud sende oss sin nåde!',\n", - " 'litle fuglen sette seg på kyrkjegått',\n", - " 'gud råde!',\n", - " 'han song så fagert om stort og smått',\n", - " 'herre gud sende oss sin nåde!',\n", - " 'litle fuglen sette seg på kyrkjetårn',\n", - " 'gud råde!',\n", - " 'han song så fagert for alle småborn',\n", - " 'herre gud sende oss sin nåde!',\n", - " 'litle fuglen sette seg på lindekvist',\n", - " 'gud råde!',\n", - " 'han song så fagert om jesus krist',\n", - " 'herre gud sende oss sin nåde!',\n", - " '--------------------------',\n", - " 'little bird sat himself on the churchs roof',\n", - " 'god prevail!',\n", - " 'he sang a beautiful morning song (ottesong?)',\n", - " 'lord god, send us your grace',\n", - " 'little bird sat himself on the churchs roof',\n", - " 'god prevail!',\n", - " 'and the priest he wondered at the little birds song (?)',\n", - " 'lord god, send us your grace',\n", - " 'little bird sat himself on the churchs door',\n", - " 'god prevail!',\n", - " 'he sang so beautifully of large and small (all things great and wonderful, all creatures great and small!)',\n", - " 'lord god, send us your grace',\n", - " 'little bird sat himself on the churchs tower',\n", - " 'god prevail!',\n", - " 'he sangs so beautifully for all children',\n", - " 'lord god, send us your grace',\n", - " 'little bird sat himself on a lime twig. (linden twig)',\n", - " 'god prevail!',\n", - " 'he sang so beautifully about jesus christ',\n", - " 'lord god, send us your grace',\n", - " 'nb: rough translation of fairly archaic norwegian; you get the jist though!',\n", - " 'i et helheimsk brak tordnet tor',\n", - " 'tre udyr fødes noen har drevet hor',\n", - " 'avguder ler godt i natt hyller jotun-mor angerboda',\n", - " 'øye for øye tann for tann',\n", - " 'høst hva du sår hvis du sår din egen grav',\n", - " 'verg deg for nord',\n", - " 'vokt deg for den urskog',\n", - " 'skapninger i ulvens ham',\n", - " 'fenris har blod på tann',\n", - " '(english translation:)',\n", - " '(ironforest)',\n", - " 'in a hellish crash thor thundered',\n", - " 'three beasts were born',\n", - " 'someone has committed adultery',\n", - " 'demigods laughs tonight',\n", - " 'hailing the jotun-mother angerboda',\n", - " 'an eye for an eye and tooth for a tooth',\n", - " 'reap what you sow if you sow your own grave',\n", - " 'defend yourself against the north',\n", - " 'guard yourself for the primeval forest',\n", - " 'creatures in the guise of the wolf',\n", - " 'fenris has blood on teeth',\n", - " 'you have to climb the top',\n", - " \"go on, don't give up\",\n", - " 'it never seems to end',\n", - " \"it's controlling me\",\n", - " \"this ain't what i want to be\",\n", - " 'save me from this mess',\n", - " 'to dance all the night in the midnight sun',\n", - " 'that is my dream',\n", - " 'the drops lick my skin',\n", - " 'i dance with the wind',\n", - " 'it blows me away',\n", - " 'du ser hu som danse i skogen',\n", - " 'me lette skritt',\n", - " 'me lokkane øyne',\n", - " 'hu strekke ud hånnå',\n", - " 'men du nåare an ikje',\n", - " 'du ser hu',\n", - " 'hu strekke ud hånnå',\n", - " 'men du nåare an ikje',\n", - " 'å dansa i midnattsol',\n", - " 'de e min drøm',\n", - " 'to dance all the night in the midnight sun',\n", - " 'that is my dream',\n", - " 'the drops lick my skin',\n", - " 'i dance with the wind',\n", - " 'it blows me away']},\n", - " 'rap': {'meta': {'train_data': ['yeah!',\n", - " 'måtte fucke litt med hodet ditt, mayne',\n", - " \"med no' eighties-shit\",\n", - " 'hunnid!',\n", - " \"she's such a lady\",\n", - " 'she puts on a show (whooh!)',\n", - " \"she's got the body\",\n", - " 'she sparkles and glows (oral bee!)',\n", - " \"she's such a lady (chuch)\",\n", - " 'she puts on a show (you know)',\n", - " \"she's got the body\",\n", - " 'she sparkles and glows',\n", - " 'ey, jeg er i studio kledd i baris',\n", - " 'stilen er rojal sånn som märthas eller aris',\n", - " 'spiller bitches som ataris',\n", - " \"sipper på no' whisky uten ice, kall det baris\",\n", - " 'playa, hør på dette',\n", - " 'beezy mac, han chiller med en sjøbrunette',\n", - " 'en fi-i-i-in bitch',\n", - " 'yeah, hun er en cle-e-e-ean bitch',\n", - " 'uten sykdommer',\n", - " \"she's such a lady\",\n", - " 'she puts on a show',\n", - " \"she's got the body\",\n", - " 'she sparkles and glows',\n", - " \"she's such a lady\",\n", - " 'she puts on a show',\n", - " \"she's got the body\",\n", - " 'she sparkles and glows',\n", - " \"yeah, det der er så fo' real\",\n", - " \"beezy mackarony, han er rå fo' real\",\n", - " 'det her er så fristil',\n", - " 'beezy mackarony kjører rå g-stil',\n", - " 'så mange bitches, de vil ha meg',\n", - " 'bitches, de vil hoppe på min dick, og de vil kna meg',\n", - " 'store tits de putter på meg',\n", - " 'men det er kun en special lady som kan få meg',\n", - " 'yeah',\n", - " 'jeg er så yabba dabba med den shiten der, baby',\n", - " 'mange bitches som prøver seg, men uhh',\n", - " 'men det er kun en special lady som kan få meg',\n", - " 'yeee!',\n", - " 'yabba!',\n", - " 'dabba!',\n", - " 'biatch!',\n", - " \"she's such a lady\",\n", - " 'she puts on a show',\n", - " \"she's got the body\",\n", - " 'she sparkles and glows',\n", - " \"she's such a lady\",\n", - " 'she puts on a show',\n", - " \"she's got the body\",\n", - " 'she sparkles and glows',\n", - " 'mine playgirls vet',\n", - " 'gi meg kjærlighet',\n", - " 'mine playgirls vet',\n", - " 'gi meg kjærlighet',\n", - " 'baby, 2015 var et rått år',\n", - " 'plutselig fikk jeg hipsterfans med blått hår',\n", - " 'unge chicks med piercing oppi schnausen',\n", - " 'plutselig ville alle ha en bit av denne bossen',\n", - " 'er fortsatt ung og fresh - i hvertfall fresh',\n", - " 'hopper ut av senga, alltid klar for photo-sesh',\n", - " 'putter ned en track som de kan riste til',\n", - " 'er en o.g., men lar meg friste still',\n", - " '(crazy ladies)',\n", - " '(crazy ladies)',\n", - " 'oh oh oooh',\n", - " 'mine playgirls vet',\n", - " 'gi meg kjærlighet',\n", - " 'oh oh oooh',\n", - " 'mine playgirls vet',\n", - " 'gi meg kjærlighet',\n", - " 'oh, jeg må takke mine playgirls',\n", - " 'så shake den booty-en for en playboy',\n", - " 'oh, jeg må takke mine playgirls (my playgirls)',\n", - " 'for at de alltid kjenner dealen',\n", - " 'for at de fucker med profilen',\n", - " 'da vi var hata på så paya vi en heavy pris',\n", - " 'men nå ser vi digger damer i 4ever-tees',\n", - " 'la det være sånn forever, please',\n", - " \"så skal jeg lade deg med fler 4-ever-g's\",\n", - " 'du ser meg sitte backstage med ti bitches',\n", - " 'snakker fem på hver side - symmetri-bitches!',\n", - " 'du ser meg søle på noen cleavages',\n", - " 'på litteraturinteresserte poesi-bitches',\n", - " '(crazy ladies)',\n", - " '(crazy ladies)',\n", - " 'oh oh oooh',\n", - " 'mine playgirls vet',\n", - " 'gi meg kjærlighet',\n", - " 'oh oh oooh',\n", - " 'mine playgirls vet',\n", - " 'gi meg kjærlighet',\n", - " '(gi meg fucking kjærlighet)',\n", - " 'playgirls (o - oh)',\n", - " 'playgirls vet (jeg vet)',\n", - " 'playgirls vet (og de vet)',\n", - " 'playgirls vet (og de vet)',\n", - " 'play- (oh ooooh)',\n", - " '-girls vet',\n", - " 'oh oh oooh',\n", - " 'mine playgirls vet',\n", - " 'gi meg kjærlighet',\n", - " 'oh oh oooh',\n", - " 'mine playgirls vet',\n", - " 'gi meg kjærlighet',\n", - " 'mine playgirls vet',\n", - " 'alle mine playgirls vet',\n", - " 'mine playgirls vet',\n", - " 'alle mine playgirls vet',\n", - " 'jns with the less',\n", - " \"fucka gamet opp, og jeg har 'nough stress\",\n", - " 'fucka gamet opp, ga alle sexpress',\n", - " 'niggas on the top, men det er expect',\n", - " 'mine kroner kommer ikke ekspress',\n", - " 'yes mate, vi skal fly',\n", - " 'partys med battys, bacardi',\n", - " 'faktisk alt jeg gjør er taktisk',\n", - " 'og de prater piss, men fuck de (yeah)',\n", - " 'studio med jns (yes)',\n", - " 'gutta mine puller opp og vi er blessed (yes)',\n", - " 'føler meg som arif, bare kall meg flexnes',\n", - " 'og vi vender bare ryggen om de folka tester (yeah)',\n", - " 'se meg flexe (yeah)',\n", - " 'boy britz er på en next ting (yeah)',\n", - " 'femti streams og så netflix (yeah)',\n", - " \"dreammaker records is what im reppin'\",\n", - " 'vi flyr',\n", - " 'ey, min baby, kjent av flere lately',\n", - " 'e i studio maybe, med britz og noen ladies',\n", - " \"don't hate me\",\n", - " 'my baby, drop top i mercedes',\n", - " 'pull up, come on, save me',\n", - " 'ein natt med meg baby, dont play me',\n", - " 'fresh air force',\n", - " 'vi bare stepper inn med fresh air force',\n", - " 'og de sier jeg flyr som en sterk air force',\n", - " 'mye vil ha mer, så bitch vil ha more (ah)',\n", - " 'de ga meg aldri hånda, jeg var alt for whack for dem',\n", - " 'nå skriver de på insta spør om jeg har vers for dem',\n", - " 'wallah, meg og isah vi skal kaste lægs på dem (aha)',\n", - " 'vi skal kaste cash på dem',\n", - " 'studio med jns (yes)',\n", - " 'gutta mine puller opp og vi er blessed (yes)',\n", - " 'pumper ut noen bangers til de gir oss respekt',\n", - " 'og jeg har aldri vært så wavy, trenger ingen wavecheck (yeah)',\n", - " 'se meg flexe (yeah)',\n", - " 'boy britz er på en next ting (yeah)',\n", - " 'femti streams og så netflix (yeah)',\n", - " \"dreammaker records is what im reppin'\",\n", - " 'vi flyr',\n", - " 'ey, min baby, kjent av flere lately',\n", - " 'e i studio maybe, med britz og noen ladies',\n", - " \"don't hate me\",\n", - " 'my baby, drop top i mercedes',\n", - " 'pull up, come on, save me',\n", - " 'ein natt med meg baby, dont play me',\n", - " 'ey, min baby, kjent av flere lately',\n", - " 'e i studio maybe, med britz og noen ladies',\n", - " \"don't hate me\",\n", - " 'my baby, drop top i mercedes',\n", - " 'pull up, come on, save me',\n", - " 'ein natt med meg baby, dont play me',\n", - " 'ooh, hey min baby',\n", - " 'hey min baby, dont play me',\n", - " 'ooh, my love',\n", - " 'ohh, my love',\n", - " 'ohh, my love',\n", - " 'yeah (ooh)',\n", - " 'bosko (ooh)',\n", - " 'beezy (oh yeah, yeah yeah)',\n", - " 'lotion',\n", - " \"putter det ned forever (it's with the playboy foundation)\",\n", - " 'and you do know that (they wanna get it in)',\n", - " \"let's go\",\n", - " 'just let it get right into you, right into you',\n", - " \"and then we'll see, see what it do, what it do\",\n", - " 'just let it get right into you, and right into you',\n", - " 'and you will see, see what it do',\n", - " 'see what it do, do, do',\n", - " 'jeg har kommet for å samle opp noen løse ender',\n", - " 'og pimpe på din chick og hennes tøsevenner',\n", - " \"dytte'n inn i hennes glamorøse venner\",\n", - " 'før jeg deler det med mine skandaløse venner',\n", - " 'digge tøser kjenner denne gutten, mr. o-dot',\n", - " 'jeg gjør det big, du gjør det mindre enn en lodott',\n", - " 'beaten blodhot, flowen ligner lava',\n", - " 'foten er på nakken til en hoe, jeg står på krava',\n", - " \"styrter masse cava, e'kke den som slurper\",\n", - " \"e'kke den som cruiser rundt i lac-en med no'n hurper\",\n", - " 'for shit, jeg takler ikke sånne opp i fjeset, ass',\n", - " 'er mere g med triana iglesias',\n", - " 'å sjarmere hoochies ligger i mitt vesen, ass',\n", - " 'men unge beezyboy, den gutten her er kresen, ass',\n", - " 'uansett, hvis du er hypp på mitt crew',\n", - " 'bare holla på en playa, baby, see what it do, oh oh',\n", - " 'just let it get right into you, right into you',\n", - " \"and then we'll see, see what it do, see what it do\",\n", - " 'just let it get right into you, and right into you',\n", - " 'and you will see, see what it do, what it do',\n", - " 'so bay, la, mac dre, doc dre, okay',\n", - " 'so californ-i-a, no work, all play',\n", - " 'sjekk ut måten som jeg lever på',\n", - " 'eller, stryk det, sjekk ut måten som jeg svever på',\n", - " 'cruiser bort og spiser chicken ifra roscoe',\n", - " \"bitches digger ned, jeg bumper banger'n min med bosko\",\n", - " 'jeg har lukten av suksess i mine nostrils',\n", - " 'money-motivated som en mobster ifra moscow',\n", - " 'oh, er oppi hollywood hills',\n", - " 'titter ut på byen og den shitten gir meg chills (brrr)',\n", - " 'westcoast til jeg logger av',\n", - " 'haterfjes som snubler er hva beezybaby hugger av',\n", - " 'freshe klær, så denne duden er pretty',\n", - " 'når jeg bawler med big paulie borti studio city',\n", - " '(beezy, husk å toss opp dub-er for ditt crew)',\n", - " \"ey yo, lotion, hehe, i'ma see what it do\",\n", - " 'just let it get right into you, right into you',\n", - " \"and then we'll see, see what it do, see what it do\",\n", - " 'just let it get right into you, and right into you',\n", - " 'and you will see, see what it do',\n", - " 'see what it do, do, do',\n", - " 'just let it get right into you, right into you',\n", - " \"and then we'll see, see what it do, what it do\",\n", - " 'just let it get right into you, right into you',\n", - " 'and you will see, see what it do',\n", - " 'see what it do, what it do',\n", - " 'pimp-lotion, oh yeah (oh yeah)',\n", - " 'big ice (what up)',\n", - " 'and oral bee (yessir)',\n", - " 'say oral bee is in the house, mama',\n", - " 'say oral bee is in the house, baby (bosko)',\n", - " 'oral bee, yeah, oral bee is in the house (yabba)',\n", - " 'say oral bee is in this bitch (west coast)',\n", - " 'oh yeah (playa j)',\n", - " 'oral bee with bosko',\n", - " 'yeah, cruiser rundt i en fresh-ass lac i la, mayne',\n", - " 'boss opp, boss ut',\n", - " 'the playboy foundation wants to get into you',\n", - " 'yeah! what it doski?',\n", - " 'dette her er spikeren i kista for disse fuckings haterne, mayne',\n", - " 'big beezy!',\n", - " 'and you do know that',\n", - " 'and you do know that',\n", - " 'and you do know that',\n", - " 'jeg er så full av game',\n", - " 'jeg får garantert en plass på 1450s walk of fame',\n", - " \"big ice og jam, god damn, den banger'n her er vilter\",\n", - " 'skrur opp sub-en i jeep-en og ser at hooden tilter',\n", - " 'pusher custom made-skilter som gjør en hater ilter',\n", - " 'fuck hva de snakker om, jeg rapper fortsatt uten filter',\n", - " 'så store nuts at legen sa jeg burde gå med kilter',\n", - " 'ble du fan av meg i fjor, er du en etter-dilter',\n", - " 'men er du ekte kan du bli en del av kjernen',\n", - " '1450 walk of fame, hvem får den første stjernen?',\n", - " 'and you do know that',\n", - " 'and you do know that',\n", - " 'and you do know that',\n", - " 'jeg er så full av game',\n", - " 'jeg får garantert en plass på 1450s walk of fame',\n", - " 'and you do know that',\n", - " 'and you do know that',\n", - " 'and you do know that',\n", - " 'jeg er så full av game',\n", - " 'jeg får garantert en plass på 1450s walk of fame',\n", - " 'ingen squares i min circle, ingen her som ligner urkel',\n", - " 'alle her er bosser sånn som angela merkel',\n", - " 'vi går hardt, vi går apache, mer bling enn liberace',\n", - " 'karrieren din blir kort som karrieren til schillaci',\n", - " \"er dyppa i versace, dynka i no' d&g\",\n", - " 'mine favorittbokstaver, det er fortsatt p og g',\n", - " 'yeah, jeg og pimpguden er perlevenner',\n", - " 'hvis du snakker ned - fuck deg og dine fæle venner!',\n", - " 'and you do know that',\n", - " 'and you do know that',\n", - " 'and you do know that',\n", - " 'jeg er så full av game',\n", - " 'jeg får garantert en plass på 1450s walk of fame',\n", - " 'and you do know that',\n", - " 'and you do know that',\n", - " 'and you do know that',\n", - " 'jeg er så full av game',\n", - " 'jeg får garantert en plass på 1450s walk of fame',\n", - " 'california love',\n", - " 'california love, california',\n", - " 'california love',\n", - " 'nå i sommer, så har dama mi termin',\n", - " \"så jeg få'kke dra til cali for å bawle som et svin\",\n", - " 'første gang jeg dro dit, så var beezyboy en teen',\n", - " 'snakker 1994, baby, yadadadamean?',\n", - " \"jeg og fam'en marinerte uti oc\",\n", - " 'lenge før jeg hadde status som en og',\n", - " \"rollerblade'a nedover redondo\",\n", - " 'bare bawla som en ung rajon rondo',\n", - " 'denne beaten her er så californi',\n", - " 'mest sannsynlig, så blir dama di horny',\n", - " 'da kan jeg slamme som jeg slammer hoops',\n", - " \"mens vi hører på the world's most dangerous group\",\n", - " 'jeg så snoop i staples, den shiten var cray',\n", - " 'han hadde med seg warren g, dpg og dre',\n", - " 'det var så la, jeg hadde vanskelig for å tro det',\n", - " 'gutta bare chilla helt til neste episode',\n", - " 'california love, california',\n", - " 'california love',\n", - " 'california love, california',\n", - " 'california love',\n", - " \"i '94, så var beezyboy forelska i halle\",\n", - " 'samme år ble jeg forelska i cali',\n", - " 'som petter solberg ble forelska i rally',\n", - " \"og som duchess ble forelska i o'malley\",\n", - " 'uh, aristokattene, baby',\n", - " 'i cali shaker damene på pattene, baby',\n", - " 'store palmer, ruller bort til malibou',\n", - " 'bosser opp, har hotellrom med ocean view',\n", - " 'har vært i cali seks sommere på rad',\n", - " 'pluss noen turer innimellom det, oh my god',\n", - " 'det der må kalles en addiction',\n", - " 'la, jackie brown, pulp fiction',\n", - " 'uh, big beezy tarantino',\n", - " 'jeg burde kjøpe meg en mansion i encino',\n", - " 'pluss et hus i the bay',\n", - " 'jeg føler california love sånn som 2pac og dre',\n", - " 'california love, california',\n", - " 'california love',\n", - " 'california love, california',\n", - " 'california love',\n", - " 'la, whoa whoa whoa',\n", - " 'san diego, whoa whoa whoa',\n", - " 'all the playaz in the bay (what up, bosko?)',\n", - " \"oh yeah, i'm talkin' san franscisco? (frisco)\",\n", - " 'the whole damn yay (yay area!)',\n", - " 'city of long beach, long beach',\n", - " 'city of compton, compton',\n", - " 'city of la',\n", - " 'thousand oaks, to',\n", - " 'everybody, whoa whoa',\n", - " \"let's make a toast for the coast\",\n", - " 'california love, california',\n", - " 'california love',\n", - " 'california love, california',\n", - " 'california love',\n", - " 'la, whoa whoa whoa',\n", - " 'san diego, whoa whoa whoa',\n", - " 'på banen ut mot ammerud',\n", - " 'kom jeg i snakk med en gammel dame på 107',\n", - " 'så jeg prata om været , hvordan det alltid snør',\n", - " 'mer i groruddalen enn i byen, hun mente hør',\n", - " 'du er ikke hvor du er fra, du er det du gjør',\n", - " 'det hørtes temlig ut som noe jeg har skrevet sjøl',\n", - " 'jeg så forvirra ut hun så på meg og sa min sønn',\n", - " 'ingenting verdt å vinne lar seg vinnes av seg sjøl',\n", - " 'jeg er ikke en av de som mener alt var bedre før',\n", - " 'i min levetid har levetiden nemlig økt',\n", - " 'en del har bedre liv, mere tid og flere tør',\n", - " 'å våge vinne verden, flere bærer mindre bør',\n", - " 'du må huske jeg ble født her uten stemmerett',\n", - " \"nå har jeg månedskort, jeg smilte, sa ''du har nok rett''\",\n", - " 'men samtidig er sannelig samtiden van-vittig',\n", - " 'framskrittet styres alltid fram av gal business',\n", - " 'det er vanskelig å ikke synes alt er galskap',\n", - " 'det virker som om fornuften sakte avtar, hun sa',\n", - " 'ung må verden ennå være, det er klart at',\n", - " 'tålmodighet må ikke blandes ut med latskap',\n", - " 'dårlige ting kommer fort, bra ting kommer sakte',\n", - " 'og det er alltid tungt å bære vann i motbakke',\n", - " 'se ditt liv i tidens lys, historiens lange rekke',\n", - " 'vær mann for din hatt, nå jeg faktisk av på neste',\n", - " 'on the e train to queens, i was coming from a meeting',\n", - " 'thinking about burning one, and sue the head decon',\n", - " 'ipod warm button, peep don martin',\n", - " \"in the next seat, he's bugging\",\n", - " 'cause he never met a mc',\n", - " 'riding on the train, like he been working a dayjob',\n", - " \"nah, i'm not some stuck-up entertainer,man, you way off\",\n", - " 'these rappers stay soft, frogulent, burning made off',\n", - " 'gassed up, but not prepared for take-off',\n", - " 'but anyway, don told me that he lives in norway',\n", - " \"and he won't rest untill his song is on the air all day\",\n", - " \"i'm like, 'that's what they all say'\",\n", - " 'untill the game fucks them with no foreplay',\n", - " 'oslo, the ocean county to the project hallways',\n", - " \"he said: ''craig, on tv it seems like a (?)''\",\n", - " \"i said: '' ting er ikke alltid som de ser ut''\",\n", - " \"check some of these rappers bank accounts, you'll get the proof\",\n", - " \"it's fairy-tales, yo man, they faking in the booths\",\n", - " 'and the money that they making off the youth, has to stop',\n", - " \"they wanna be pop, but guns they don't blast to pop\",\n", - " 'in the hood they want out of place asher roth',\n", - " \"it's like taking a sick day, then walk passed your boss\",\n", - " 'i hope you learn something in this ride, crash your course',\n", - " \"blast your thoughts, it's like i passed the torch\",\n", - " \"but i gotta go, man, and i should have been stopped, i'm out\",\n", - " 'vær mann for din hatt',\n", - " 'så jeg er mann for min hatt, navnet er martin, jeg er minstemann fra',\n", - " 'gatas parlament ikke parlamentet bak akersgata',\n", - " 'tar betalt for spadetak, apekatter vi må ha mat as',\n", - " 'sprader stadig fram og prøver prakke på deg gatasplata',\n", - " 'denne teksten kommer fra rap genius norge!',\n", - " 'vegas, baby',\n", - " 'fra min city til din city',\n", - " 'ingen steder kan du bawle som i sin city',\n", - " 'det er beezy mackaroney (curtis brothers)',\n", - " 'sodapop og pony',\n", - " 'sin city, baby, vegas knights',\n", - " 'shiten off the chain som talladega nights',\n", - " 'moët-en flower som fontenen på bellagio',\n", - " 'beezy knocker shiten ut av stadion som dimaggio',\n", - " \"jeg og sodapop er kledd opp i no' fresh shit\",\n", - " 'nye sneakers, nye shorter, ny fresh kit',\n", - " \"vi er klare for no' blackjack\",\n", - " 'yeah, vi bringer playashiten back, back',\n", - " 'gjør det som sinatra, stilen er classy',\n", - " \"henger rundt på club-er hvor de spiller no' jazzy\",\n", - " 'titter etter notches som er freaky som cassy',\n", - " 'soda, du tar mary-kate, jeg kan ta ashley',\n", - " 'ironisk at jeg føler meg classy i en by så cheezy',\n", - " \"hoes'a skaper ikke bry for beezy\",\n", - " 'situasjonen, den er ny for beezy',\n", - " 'men det føles som om dette er en by for beezy (yeah)',\n", - " 'fra min city til din city',\n", - " 'ingen steder kan du bawle som i sin city (what)',\n", - " 'det er beezy mackaroney (curtis brothers)',\n", - " 'sodapop og pony',\n", - " 'fra din city til min city',\n", - " 'ingen steder kan du gamble som i sin city (say what)',\n", - " 'det er beezy mackaroney (okay)',\n", - " 'sodapop og pony',\n", - " 'nok en banger, nok en vegas night',\n", - " 'ser en breezy med en booty som er megatight',\n", - " \"what's your name, baby? make it right\",\n", - " 'vi gjør det master, major, mega right',\n", - " 'yeah, vi gjør det biggere enn biggest (hvorfor det?)',\n", - " 'fordi vi synes det er diggest (aha)',\n", - " 'bosser opp i store suiter',\n", - " 'såpass store suiter at horer titter',\n", - " \"hvor er soda? jeg har sett'n ved ruletten\",\n", - " \"han gambler som en psycho, som om ingenting kan mette'n\",\n", - " 'og han gambler nok med beezys penger',\n", - " 'og problemer som det der er mer enn beezy trenger',\n", - " 'vi møtte på noen digge dykes',\n", - " \"tok dem med på lunsj på-på jersey mike's\",\n", - " 'hun ene ligna litt på dorthe skappel',\n", - " 'så vi gifta oss i nærmeste chapel, holla',\n", - " 'fra min city til din city',\n", - " 'ingen steder kan du bawle som i sin city',\n", - " 'det er beezy mackaroney (curtis brothers)',\n", - " 'sodapop og pony',\n", - " 'fra din city til min city',\n", - " 'ingen steder kan du gamble som i sin city',\n", - " 'det er beezy mackaroney (curtis brothers)',\n", - " 'sodapop og pony',\n", - " 'ey yo, ey yo, ey yo',\n", - " \"nah, you don't wanna fuck with me\",\n", - " 'big oral fucking bee',\n", - " 'keeper det så g-g-g',\n", - " 'ey yo, ey yo, ey yo',\n", - " \"so you don't wanna fuck with me\",\n", - " 'big oral fucking bee',\n", - " 'keeper det så g-g-g',\n", - " 'fra min city til din city',\n", - " 'ingen steder kan du bawle som i sin city',\n", - " 'det er beezy mackaroney',\n", - " 'sodapop og pony',\n", - " 'fra din city til min city',\n", - " 'ingen steder kan du gamble som i sin city',\n", - " 'yessir, oh boy',\n", - " 'yeah, ey yo, sodapop, mayne (chuch)',\n", - " 'føles som vi er på toppen av verden, baby bro (yeah)',\n", - " 'shit, tenker på de stakkars haterne tilbake i norge, playboy (aha)',\n", - " 'sitter sikkert hjemme på hybelen sin og røyker hasj og spiller playstation, mayne',\n", - " 'mens vi suser rundt i verden som noen bosses',\n", - " 'cali cali cali',\n", - " 'cali cali cali california love',\n", - " 'dette er historien om hvordan det gikk til',\n", - " 'da vi dro til la for å finne oss selv',\n", - " 'og vi gikk på en smell alt første kveld',\n", - " 'og ikke skjønte bæret før vi kom til oss selv',\n", - " \"i've been searching for someone\",\n", - " 'but i found no one',\n", - " 'no one like you',\n", - " \"i've been searching for someone\",\n", - " 'but i found no one',\n", - " 'no one like you',\n", - " 'yo yo',\n", - " 'gikk opp på the strip',\n", - " 'kikka etter bloods kikka etter crips',\n", - " 'vakke noe pes alt var \"all good\"',\n", - " 'livet i hollywood er \"so smooth\"',\n", - " 'så på et skilt står det \"all nude\"',\n", - " 'jeg og gutta mine bare \"oh dude\"',\n", - " 'det var body shot til body shot',\n", - " 'og de som ikke tror stripping er noen ordentlig jobb',\n", - " 'hakke møtt monique for tro meg',\n", - " 'hun var nydelig og hun forsto meg',\n", - " 'det vakke lett for min nye bff',\n", - " 'vi sa honey \"you can take all the money that we got left\"',\n", - " \"i've been searching for someone\",\n", - " 'but i found no one',\n", - " 'no one like you',\n", - " \"i've been searching for someone\",\n", - " 'but i found no one',\n", - " 'no one like you',\n", - " '[verse}',\n", - " 'våkner opp blakk',\n", - " 'jeg bare \"oh fuck\"',\n", - " 'det var god kok last night',\n", - " \"poco loco that's right\",\n", - " 'hei dere ikke for å være gjerrig',\n", - " 'men reisekassa vår er tom sterri',\n", - " 'og vi er ikke ferdig med ferie på lenge',\n", - " 'det er fortsatt tolv uker igjen til vi er hjemme',\n", - " 'yo shorty no worries',\n", - " 'monique hun er jo vår homie',\n", - " 'vi bare stikker opp på klubben hennes tvert',\n", - " 'så får vi sikkert alle penga våre back',\n", - " \"i've been searching for someone\",\n", - " 'but i found no one',\n", - " 'no one like you',\n", - " \"i've been searching for someone\",\n", - " 'but i found no one',\n", - " 'no one like you',\n", - " 'åååh',\n", - " 'men når vi kommer opp på klubben har det skjedd noe trist',\n", - " 'monique har blitt syk siden sist',\n", - " 'hun er så ung så det gjør vondt å se at hun har blitt dement',\n", - " 'for både oss og våre penger har hun glemt',\n", - " 'så blir vi kasta ut på gata av en fyr som har pistol',\n", - " 'åh monique',\n", - " 'åh monique',\n", - " 'åh monique',\n", - " \"i've been searching for someone\",\n", - " 'but i found no one',\n", - " 'no one like you',\n", - " \"i've been searching for someone\",\n", - " 'but i found no one',\n", - " 'no one like you',\n", - " 'no one no one like you',\n", - " \"i've been searching for someone\",\n", - " 'but i found no one',\n", - " 'no one like you',\n", - " \"i've been searching for someone\",\n", - " 'but i found no one',\n", - " 'no one like you',\n", - " 'klokken fem om natten, e ennå ute på gaten',\n", - " 'ennå våken, e ennå ikkje i kåken',\n", - " 'klokken seks om natten, e ennå ute på streeten',\n", - " \"plukker om mobilen og finner nummer til pete'n\",\n", - " \"men eg tror han sover, eg kan'kkje komme over\",\n", - " 'han har sikkert kommet over en tøs han har kommet over',\n", - " 'det e streit, det e greit, det e kult',\n", - " \"eg kan'kje være sur\",\n", - " 'klokken fem om natten, klokken seks om natten',\n", - " 'klokken syv om natten, e ennå ute på gaten',\n", - " 'eg e så trøtt eg neste stuper',\n", - " 'byen våkner opp og det e allerede lys i noen ruter',\n", - " 'møter venner som vender hjemover igjen',\n", - " 'ennå en evneløs kar, denne har vart i flere uker',\n", - " 'eg lengter hjem etter sengen, men den e fult med no puter utav dunfjær',\n", - " 'du tar feil hvis du tror eg ender tomhendt der hjemme',\n", - " 'eg har en kjerring der som bare sitter og pugger kamasutra',\n", - " 'så framtiden e brukbar, brukbar',\n", - " 'rett skal være rett, så eg bare setter på no tupac',\n", - " 'utavmegsjølopplevelse, lever det regelrett',\n", - " 'unntaket som bekrefter regelens leverett',\n", - " 'i midten av forvirringen og klirringen, kronerullingen',\n", - " 'vil ingen røre tingenes stilling',\n", - " 'kjerringen sier det faller naturlig for oss to å være tvetydig',\n", - " \"det e'kkje seint, nei det e tidlig\",\n", - " 'hon sier at det faller naturlig for oss å være tvetydig',\n", - " \"det e'kkje seint, nei det e\",\n", - " 'tidlig, tidlig, tidlig, tidlig',\n", - " 'holder på å sovne',\n", - " 'så treffer eg tjommien min clova',\n", - " 'han kommer hele veien fra huntsville, alabama',\n", - " 'g-side',\n", - " 'så han må si ka det går i',\n", - " 'si det te de, mann',\n", - " 'one fingerprint on that button, watch it crank',\n", - " 'ace of spade up in my cup is what i like to drink',\n", - " \"since i'm highly toxicated i think i'm the man\",\n", - " \"i just rather be alone, i ain't got time for holding hands\",\n", - " \"i'm spending money i ain't even got\",\n", - " 'just my buzz alone got me buying out the nightspot',\n", - " 'damn, they told me it would never be the same',\n", - " \"yeah i'm fuckin', but i don't even remember names\",\n", - " \"and i'm sorry, this shit is so timeless\",\n", - " \"once you in the game, you ain't even gotta buy shit\",\n", - " \"i'm at austin at the south by southwest\",\n", - " \"labels wanna sign me, i don't even want the damn check\",\n", - " \"yeah i change my style, niggas still be wearing last year's\",\n", - " \"yeah i'm outta space, i don't even breath the air here\",\n", - " \"i don't even spend cash here\",\n", - " \"do it for my fans, that's the only reason i'm here\",\n", - " 'for vi eier den der undergrunnen',\n", - " 'nmg g-huset, slow motion soundz',\n", - " 'g-side',\n", - " 'tjommien 2 lettaz e og oppi kåken',\n", - " 'ey si ka det går i, mann',\n", - " 'they call me slick tony',\n", - " \"macaroni on these low self-esteem bitches then i pass 'em to my homies\",\n", - " \"i'm everything these other boys used to be\",\n", - " \"i can tell by her face she ain't used to me\",\n", - " 'see them other dudes treat her like she fine',\n", - " \"she say she like me 'cause i don't treat her like she mine\",\n", - " 'and i be up on my grind, and i beat up on her spine',\n", - " \"so she say she can't keep me up of off mine\",\n", - " 'thoughts turn to tweets, and tweets to texts',\n", - " 'and texts turn to speech, and speech turns to sex',\n", - " \"but she ain't gotta feel like a freak, boo\",\n", - " \"if it make you feel any better i'm a freak too\",\n", - " \"it's five am in the morning and i'm in bergen\",\n", - " \"only thing on my mind is burnin'\",\n", - " \"no sleep, i'm on my shit, i'm earnin'\",\n", - " 'got a norwegian freak that speak english, but give head in german',\n", - " 'hon sier det faller naturlig for oss å være tvetydige',\n", - " \"det e'kkje seint, nei det e tidlig\",\n", - " \"det e'kkje seint, nei det e tidlig\"]},\n", - " 'data': ['en jazzy motherfucker ifra 1450',\n", - " 'en classy motherfucker som de kaller big oral bee (mitt hjemsted)',\n", - " 'en jazzy motherfucker ifra 1450 (mackarone)',\n", - " 'en classy motherfucker som de kaller big oral bee',\n", - " '1450, home of big beezy',\n", - " 'dit hvor haters drar hvis de vil se en digg breezy',\n", - " 'mange kaller oss for nordens big easy',\n", - " \"men bustaz kan'ke komme hit og få et ligg easy\",\n", - " 'her er jeg ungenes idol',\n", - " 'gjorde 1450 til en verdensmetropol',\n", - " 'til en what? til en smeltedigel',\n", - " 'hoesa er så søte her at de kan smelte sméagol',\n", - " 'og de kan smelte smeezy',\n", - " 'over tusen søte bitches her, det telte smeezy',\n", - " 'champagne over bitches, shit, det helte smeezy',\n", - " \"er trygg på toppen, man, du kan'ke velte smeezy\",\n", - " 'haters, de har prøvd, men ingen felte beezy',\n", - " \"de endte opp i røde kors sitt telt, fo' sheezy\",\n", - " 'for jeg er gangsta som de niro',\n", - " 'og back i 14-fizzle er jeg gatene sin hero (hero, hero, hero)',\n", - " 'en jazzy motherfucker ifra 1450',\n", - " 'en classy motherfucker som de kaller big oral bee (big oral bee)',\n", - " 'en jazzy motherfucker ifra 1450 (big oral bee)',\n", - " 'en classy motherfucker som de kaller big oral bee',\n", - " '1-4-5-o, en oase',\n", - " 'første gang du kommer dit, så føler du ekstase',\n", - " 'tangen centrum, det er gangsterne sin base',\n", - " \"du vet du bør'ke messe med dem, dawg, du bør'ke fjase\",\n", - " 'de drikker tuborg, sjelden coronas',\n", - " 'ser lite rims, lite gylne daytonas',\n", - " \"men våre bitches, de kan matche barcelona's\",\n", - " 'de sitter bakpå når vi sladder og gjør donuts',\n", - " 'jeg gjør din hoe nuts, ikke glem det',\n", - " 'hun blir så fuktig når jeg rapper om mitt hjemsted',\n", - " 'hun vil rulle rundt med beezy på min mc',\n", - " 'tror jeg har en ledig plass bak dem tre',\n", - " 'ingen kan ta brodden ut av odden',\n", - " \"et haterfjes kom hit fra byen, og gatene, de fucka'n\",\n", - " 'de sier one-four-five',\n", - " 'er et sånn type sted only the strong survive, baby',\n", - " 'en jazzy motherfucker ifra 1450',\n", - " 'en classy motherfucker som de kaller big oral bee (big oral bee)',\n", - " 'en jazzy motherfucker ifra 1450 (big oral bee)',\n", - " 'en classy motherfucker som de kaller big oral bee',\n", - " '14-fizzle',\n", - " 'mitt hjemsted',\n", - " 'mackarony',\n", - " 'thirstin howl, god knows got flows',\n", - " 'norwegian teamin’, we in oslo',\n", - " 'side brok, we the crooks',\n", - " '84 scores, how this adidas look',\n", - " 'skihopp, skijumping',\n", - " '3 connecting flights and i ain’t eat nuthin',\n", - " 'scandinavian alien',\n", - " 'tasmanian damien, mainly in',\n", - " 'brooklyn! chill in norway',\n", - " 'brown cheese, some trees killed the fortay',\n", - " 'smoke weed in the shower when i’m at the plaza',\n", - " 'record the song and the video in half an hour',\n", - " 'la cura spanish, hip-hop cure',\n", - " 'you like this track, check the tour',\n", - " 'thorstein hyl, odd g, skatebård',\n", - " 'th3 nigga, need i say more?',\n", - " 'frå en plass uten gate, ej eig ikkje streetcred',\n", - " 'berre dritcred og god-til-å-drikke-spritcred',\n", - " 'vic lo, tight og tyste',\n", - " 'polo stil med norsk flagg på bryste',\n", - " 'han bor på plaza, ej bor på gata',\n", - " 'null retningssans, ej fer berre rundt og kava',\n", - " 'lite populær som ei onde stemama',\n", - " 'folk kika skeptisk som madcon på t-bana',\n", - " 'stakkars oslo, den minste og den største',\n", - " 'umuli å gå på fylla for her finnst ikkje grøfte',\n", - " 'sjølstendi, uavhengig',\n", - " 'han e lo life og ej e berre elendi',\n", - " 'så pass på, du kan’kje fucke med oss to',\n", - " 'frå bygda te brooklyn via oslo',\n", - " 'thirstin, thorstein, dei to fyllefantane',\n", - " 'herja rundt i oslo med litt drit i kantane',\n", - " 'pass på, du kan’kje fucke med oss to',\n", - " 'frå bygda te brooklyn, via oslo',\n", - " 'yo, you stupid fuckin’ with us two',\n", - " 'frå bygda te brooklyn, via oslo lo life generals, send',\n", - " 'the troops',\n", - " 'my passport lost, get it through',\n", - " 'stash weed, money, go through customs',\n", - " 'politi sleeping, we don’t trust em',\n", - " 'so fuck em, dei fe’kje bura oss inne',\n", - " 'siste glattcelle ligge sterkt i minne',\n", - " 'fe kun vatn, brød uten nåke',\n", - " 'det e ekstra nifst for ej kan ikkje språke',\n", - " 'the studio, runar, we wrote this track',\n", - " 'so cold, can’t take off my coat and hat',\n", - " 'ja, veire victor, det e stort sett wack',\n", - " 'ej trur me trenge en coke og cognac',\n", - " 'back to the plaza, get some sleep tonite',\n", - " 'ej ska tebake te gata og holde det tight',\n", - " '17 hours, 3 connecting flights',\n", - " 'he kun 17 krone til 3 røyk og reis',\n", - " 'oh shit',\n", - " 'cheesy eighties rock shit, mayne',\n", - " 'do-do-down',\n", - " \"we're gettin' do-do-down\",\n", - " \"we're gettin' do-do-down\",\n", - " \"we're gettin' do-do-down\",\n", - " 'ey, har deg på hjernen som et catchy hook',\n", - " 'så hvis du ser meg falle, prøv å catch en crook',\n", - " 'du har en catchy look',\n", - " \"jeg vil'ke legge deg ifra meg som en catchy book\",\n", - " 'du får en playa til å føle seg viril',\n", - " 'har aldri sett en breezy som har like saucy stil',\n", - " 'du er alt som mine øyne kan se',\n", - " 'i beezy sine drømmer, baby, putter vi det ned',\n", - " 'do-do-down (say what?)',\n", - " \"we're gettin' do-do-down\",\n", - " \"we're gettin' do-do-down (okay)\",\n", - " \"we're gettin' do-do-down\",\n", - " \"we're gettin' do-do-down (say what?)\",\n", - " \"we're gettin' do-do-down\",\n", - " \"we're gettin' do-do-down (okay)\",\n", - " \"we're gettin' do-do-down\",\n", - " 'hey, det er mange playaz som vil ha deg',\n", - " 'mange playaz som vil ta deg eller kna deg',\n", - " 'men denne pimpen, han vil la deg',\n", - " 'dueze din ting, ha noe mere enn en fling',\n", - " 'jeg er nesodden sin king, beeyboy the great',\n", - " 'så hvorfor kan jeg ikke bare be deg med på date? (what?)',\n", - " 'hey, hva faen holder meg tilbake?',\n", - " 'blir stum når jeg ser smilet ditt og kløfta i din hake',\n", - " 'do-do-down',\n", - " \"we're gettin' do-do-down (say what?)\",\n", - " \"we're gettin' do-do-down\",\n", - " \"we're gettin' do-do-down (whooh)\",\n", - " \"we're gettin' do-do-down\",\n", - " \"we're gettin' do-do-down (okay)\",\n", - " \"we're gettin' do-do-down\",\n", - " \"we're gettin' do-do-down\",\n", - " 'yeah, what up, baby girl?',\n", - " 'i mine drømmer, baby',\n", - " 'så putter vi det ned, hahaha, yeah',\n", - " \"we're gettin' do-do-down\",\n", - " \"we're (yeah) gettin' do-do-down\",\n", - " \"yeah, we're gettin' down, so shortie, what it do?\",\n", - " 'yep, my name is beezy mackarony, who the fuck is you?',\n", - " 'i feel like a neglected child cause i demand your attention introducing my self adding',\n", - " 'a voice to the message',\n", - " 'i feel like a neglected child cause i demand your attention introducing my self adding',\n", - " 'a voice to the message',\n", - " 'i was hard headed (thought) lessons where thought',\n", - " 'its like riding a bicicle to me its a part of me yall',\n", - " 'please pardon me yall if i ever disrespected',\n", - " 'i was disrespectless critizising your methods',\n", - " 'but im learning stuff everyday its hard to skip a lesson',\n", - " 'what happens after this? shit i dont know',\n", - " 'my folks had me at an early age',\n", - " 'along side others i was struggling with minimum-wage',\n", - " 'the my two brothers came',\n", - " 'stressed up on my fathers chest developed an acurance',\n", - " 'to take his family out of the continent',\n", - " 'no longer i throw rocks at the pen',\n", - " 'my mom is calm not seeing the sun in the slums without ajar',\n", - " 'apreciating what he does but he does what he loves',\n", - " 'i made mama proud',\n", - " 'i made mama proud',\n", - " 'im trying to keep a mom and daughter trying to make it right with this ryhme',\n", - " 'i made mama proud',\n", - " 'im trying to keep a mom and daughtermake it right with this ryhme',\n", - " 'for the times i screamed at you, and times i answered back',\n", - " 'im sorry mama. im sorry mama',\n", - " 'for the times i lied to you, for the times i stood high in front of you',\n", - " 'im sorry mama. im sorry mama',\n", - " 'stammer fra liberia, men aldri satt fot der',\n", - " 'alt jeg vet at folket mitt dør og at the finns mye dop her',\n", - " 'og se sønnen sin ble narkoman tok vel knekken på modern',\n", - " 'gikk langt over grensen, såret alle jeg elsket',\n", - " 'tilbringer nok netter på glattceller',\n", - " 'solgte dop, gjorde brekk bare for å skaffe meg, litt penger',\n", - " 'sliter fortsatt med abstinenser',\n", - " 'kaldt svetter',\n", - " 'i komunen ble jeg sjapt stemplet',\n", - " 'var skoleflink men ville heller ende opp som de eldre kriminelle',\n", - " 'hadde jeg kunnet gått tilbake i tiden, ville jeg hørt på mine foreldre',\n", - " 'i dag feller jeg tårer alene i mørket og ber til gud at alt skal bli bedre, alle',\n", - " 'kunne se det',\n", - " 'han kommer til å bli en narkis, kunne blitt noe stort no en gang men valgte å bli',\n", - " 'nothing',\n", - " 'skulle bli forbilde for lille søstra mi og all ting',\n", - " 'og bare tolv år gammel var første gang jeg ble lagt inn',\n", - " 'ejeg står fortapt mamma stakk jeg omringes av ondskap',\n", - " 'og en kald vind',\n", - " 'alt jeg sitter igjen er ubrukelig erfaring, jeg skuffet mor, selvmordstanker',\n", - " 'sitter her som en patetisk angrende pilleknaskende mother fucker alt gikk i vasken',\n", - " 'min',\n", - " 'fremtiden min? lurer fortsatt på om jeg takler det. (takler det.)',\n", - " 'mamma plis. jeg veit du fikk nok, jeg gjør mitt beste for å gjøre opp!',\n", - " 'vil gjøre deg stolt, det har gått 4 år siden jeg så deg og jeg. jeg har vokst!',\n", - " 'jeg var en tosk og jeg skulle hørt når du hadde det tøft. jeg var lagt nede du ga',\n", - " 'meg trøst!',\n", - " 'et lite løft dagen du fant meg liggende bevistløs nede i en grøft (nede i en grøft.)',\n", - " 'i made mama proud',\n", - " 'im trying to keep a mom and daughtermake it right with this ryhme',\n", - " 'for the times i screamed at you, and times i answered back',\n", - " 'im sorry mama. im sorry mama',\n", - " 'for the times i lied to you, for the times i stood high in front of you',\n", - " 'im sorry mama. im sorry mama']},\n", - " 'rock': {'meta': {'train_data': ['stå opp gå på weiter gehen nå ja keep on keeping on',\n", - " 'opp og ned langs stranda, the trolls are searching for the way',\n", - " 'sie will enda lengre nedover, ned zu die huleher skerinne',\n", - " 'jegermeister kennen at det lukter mistenkelig mannevondt and big',\n", - " 'er snusen opp en hulegang und leder trollene an',\n", - " 'gangen leder nеdover und sie høren sie ist nær',\n", - " 'noe stort ligger og grynter og ett brøl gir mor knær',\n", - " 'fräulein helluva, mannevond og svær',\n", - " 'fräulein helluva, hun spiser troll som bær',\n", - " 'jegermeister feels his nerves are shaking, dette blir hans siste dans',\n", - " 'nonetheless he will sacrifice it, han vil leve evig i legenden',\n", - " 'sakte kryper trollene closer to the sound they heard',\n", - " 'jegermeister be de andre ventem han vil være første troll som ser på',\n", - " 'fräulein helluva, mannevond og svær',\n", - " 'fräulein helluva, hun spiser troll som bær',\n", - " 'jegermeister is sneaking, sakte føler han seg frem',\n", - " 'er kan sehen eine åpning, carefully he has a little peek',\n", - " 'in the next cave there is a monster, she seems more than fortyfive feet tall',\n", - " 'the bodies of dead trolls are stuck in her teeth, in her hand rests an enormous club',\n", - " 'in a great hall she rules the day, surrounded by henchmen and servants',\n", - " 'upon a throne she sits and commands them, they all cower in fear',\n", - " 'gjennom tåkete daler',\n", - " 'mellom dystre fjell',\n", - " 'under grå skyer',\n", - " 'mitt i svarte natt',\n", - " 'på en stolt hest',\n", - " 'iført svarte klær',\n", - " 'sterke våpen i hånd',\n", - " 'uendelig med døde trær',\n", - " 'en evighet av kulde',\n", - " 'over stokk og stein',\n", - " 'inn i skyggene...',\n", - " 'ut fra tåken',\n", - " 'ut fra mørke',\n", - " 'ut fra fjellets store skygge',\n", - " 'drømmens slott...',\n", - " 'da stopper rittet',\n", - " 'som varte i en livstid',\n", - " 'for herren går',\n", - " 'between misty vales',\n", - " 'between gloomy mountains',\n", - " 'under gray clouds',\n", - " 'in the black night',\n", - " 'on a proud horse',\n", - " 'in black clothes',\n", - " 'strong weapons at hand',\n", - " 'the infinity with dead trees',\n", - " 'an eternity of cold',\n", - " 'over stone and wood',\n", - " 'in the shadows',\n", - " 'out from the mist',\n", - " 'out from darkness',\n", - " 'out from the big shadows of the mountain',\n", - " 'the castle of the dream…',\n", - " 'so ends the ride',\n", - " 'that lasted a lifetime',\n", - " 'for the master goes (in the castle of the dream)',\n", - " 'camouflage clair stiger plutslich ut of thin air und informeren trollene',\n", - " 'down the cave there is a river sie must cross but there is one catch, en høne kjører båten',\n", - " 'grusom gross und arg hen, horrible hades hen',\n", - " 'trollene sniker seg towards the riverboat place und speider etter hadeshøna',\n", - " 'suddenly står den rett bak shetlandspaul og skriker',\n", - " 'shetlandspaul han freezes up in tеrror und er pinkeln, mens hadeshøna hakker maten',\n", - " 'hadeshøna gulpes down shetlandspaul in violent frenzy, yummy!',\n", - " 'hungry hostile høna, foul and evil fowl',\n", - " 'hen of hades guards the river',\n", - " 'the rest of the trolls løper alt sie kan mot båten mens hadeshøna glefser i seg',\n", - " 'uheldigvis ser høna hva som skjer und skriker',\n", - " 'with beak and claws, the hen comes rushng mot dem eyes ablazing, høna willen essen alle',\n", - " 'jegermeister har fått nok og skyter vilt mot høna aber hadeshøna finnen derning',\n", - " 'trollene tar båten, legger utpå elven',\n", - " 'hen of hades lost the river',\n", - " 'sakte over elven staker islandshans, er hat mer å bære uten shetlandspaul',\n", - " 'hadeshøna stands still on the riverbank, boiling with white-hot rage hadeshøna lets out one more',\n", - " 'neslepaks',\n", - " 'paa den ottende dagen slukte han alt vann',\n", - " 'og paa den niende dagen fordervet han all mat',\n", - " 'og paa den tiende dagen brant han jorden',\n", - " 'neslepaks',\n", - " 'neslepaks',\n", - " 'neslepaks',\n", - " 'og paa den ellevte dagen slo han folk og dyr ihjel',\n", - " 'og paa den tolvte dagen kvalte han himmeriket',\n", - " 'og paa den trettende dagen skygget han for solen',\n", - " 'neslepaks',\n", - " 'saa var der ingen dager mer',\n", - " 'saa var der ingen dager mer',\n", - " 'ingen dager mer',\n", - " 'ingen dager mer',\n", - " 'torneherren speiles i ødelagt liv mens',\n", - " 'sorgengler regner fra',\n", - " 'oven til kosmos’ endeløse tidsrom skjenker vi',\n", - " 'den siste død',\n", - " 'skjenker vi den siste død',\n", - " 'neslepaks',\n", - " 'and on the 8th day he devoured all water',\n", - " 'and on the 9th day he spoiled all food',\n", - " 'and on the 10th day he burned the earth',\n", - " 'and on the 12th day he beat people and animals to death',\n", - " 'and on the 12th day he strangled heaven',\n", - " 'and on the 13th day he covered the sun',\n", - " 'and then there were no more days',\n", - " 'and then there were no more days',\n", - " 'no more days',\n", - " 'no more days',\n", - " 'the thornmaster is mirrored in ruined life',\n", - " 'while angels of sorrow rains from above',\n", - " 'to the endless time of cosmos we are given',\n", - " 'the final death',\n", - " 'we are given the final death',\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " '\"kan ikke finne ord til prise mæ nok\"',\n", - " 'sier dem som tar ordet',\n", - " 'mens jeg beføler en tidligere',\n", - " 'elev under bordet',\n", - " 'jeg har venta lenge nu',\n", - " 'tida er inne',\n", - " 'og jeg blir ikke yngre',\n", - " 'jeg har alt å vinne',\n", - " 'deilig å være autoritet i noens liv',\n", - " 'smågutter sier ikke imot når jeg går i regi',\n", - " 'i kveld, som til en hvertid',\n", - " 'har jeg publikum i min hule hånd',\n", - " 'alle er fornøyd',\n", - " 'ingen her ser ut til å tenke på at',\n", - " 'kjentfolk har sider du ikke ønsker å kjenne til',\n", - " 'vi er i et skuespill',\n", - " 'jeg snakker, alt du senser er tvilsomme',\n", - " 'undertoner bak hvert ord jeg sier',\n", - " 'hver ting jeg gjør',\n", - " 'ingenting blir noen gang som før',\n", - " 'nu som vi blør',\n", - " \"du få'kke lukke din hjertedør\",\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " 'jeg skal bergta deg',\n", - " 'jeg skal ta deg',\n", - " 'jeg ska ta å berge deg',\n", - " 'jeg skal bergta deg',\n", - " 'jeg skal ta deg',\n", - " 'jeg skal ta å',\n", - " 'kanskje jeg fitteberger deg',\n", - " 'kanskje jeg sitter og terger deg',\n", - " 'kanskje jeg fitteberger deg',\n", - " 'kanskje jeg sitter og terger deg',\n", - " 'yeah',\n", - " \"nothing's like it used to be\",\n", - " 'my teacher wanted to touch me',\n", - " \"nothing's like it used to be\",\n", - " 'my teacher wanted to',\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " \"all my life you've been leading my way\",\n", - " \"now you touch me, i don't know what to say\",\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " 'i wanna be forever young and never ever die',\n", - " '(never ever die)',\n", - " 'i want to be the first to taste your pink virgin pie',\n", - " '(your pink virgin pie)',\n", - " \"oh don't be scared and don't you throw up\",\n", - " \"now it's time for you\",\n", - " 'to grow up',\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " \"all my life you've been leading my way\",\n", - " \"now you touch me, i don't know what to say\",\n", - " \"all my life you've been leading my way\",\n", - " \"now you touch me, i don't know what to say\",\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " \"i'm under table\",\n", - " 'i am unable',\n", - " 'to say what i want',\n", - " 'i go where you go',\n", - " 'kom unge bror',\n", - " 'skjenk oss din rene ungdom',\n", - " 'legg ditt liv i våre hender',\n", - " 'kjemp vår krig med oss',\n", - " 'la vare sorger formørke ditt sinn',\n", - " 'la din sjel slites',\n", - " 'føl natten som legger seg rundt deg',\n", - " 'glem all kjærlighet',\n", - " 'ingen tårer skal fylle dine netter',\n", - " 'tre inn i broderskapets ring',\n", - " 'ingen svakhet skal du finne i din sjel',\n", - " 'styrken skal vandre ved din side',\n", - " 'kom',\n", - " 'del ditt hat med oss',\n", - " 'forlat ditt svake legeme',\n", - " 'la deg ei forvirres av vakre ord',\n", - " 'i døden finnes all makt',\n", - " 'come young brother',\n", - " 'give us your pure youth',\n", - " 'lay your life in our hands',\n", - " 'fight our war with us',\n", - " 'let our sorrows darken your mind',\n", - " 'let our soul be torn apart',\n", - " 'feel the night wrap itself around you',\n", - " 'forget all love',\n", - " 'no tears shall fill your nights',\n", - " 'enter the ring of brotherhood',\n", - " 'no weakness shall be found in your soul',\n", - " 'strength shall wander by your side',\n", - " 'come',\n", - " 'share your hate with us',\n", - " 'leave your weak body',\n", - " 'do not be bewildered by enchanting words',\n", - " 'in death lies all power',\n", - " 'fucking shit, fucking shit',\n", - " 'boys with an accent like this',\n", - " 'king of every city',\n", - " 'hot boys inni livet mitt',\n", - " 'jævla drit, jævla drit',\n", - " 'gutta med dialekt så svær',\n", - " 'kongen over bodø',\n", - " 'hot boy ber meg komme hit',\n", - " 'think again, think again',\n", - " 'if you think you can f-f-fool me',\n", - " 'with your words like this',\n", - " 'ta nu og bli med hjem til meg',\n", - " 'think again, think again',\n", - " 'if you think you can f-f-fool me',\n", - " 'kan du please bli med',\n", - " 'hjem til meg',\n", - " 'gonna fuck my heart and',\n", - " 'steal my pride',\n", - " 'in the city',\n", - " '(leave it there to die)',\n", - " 'leave it to die in the city, city',\n", - " '(leave it there to die, leave it there to die)',\n", - " 'gonna fuck my heart and',\n", - " 'steal my pride',\n", - " 'in the city',\n", - " '(leave it there to die)',\n", - " 'leave it to die in the city, city',\n", - " '(leave it there to die, leave it there to die)',\n", - " 'woah, woah',\n", - " '\"æ e fra bodø og æ kan spøtt\"',\n", - " 'boy with a brain so sexy',\n", - " 'make me say \"come get me\"',\n", - " 'hot boy with a fancy dick (ooh)',\n", - " 'jævla pikk, jævla pikk',\n", - " 'slutt nu å se på meg sånn der',\n", - " 'kongen over bodø',\n", - " 'lurer seg inn i livet mitt',\n", - " 'think again, think again',\n", - " 'if you think you can f-f-fool me',\n", - " 'with your words like this',\n", - " 'ta nu og bli med hjem til meg',\n", - " 'think again, think again',\n", - " 'if you think you can f-f-fool me',\n", - " 'kan du please bli med',\n", - " 'hjem til meg',\n", - " 'gonna fuck my heart and',\n", - " 'steal my pride',\n", - " 'in the city',\n", - " '(leave it there to die)',\n", - " 'leave it to die in the city, city',\n", - " '(leave it there to die, leave it there to die)',\n", - " 'gonna fuck my heart and',\n", - " 'steal my pride',\n", - " 'in the city',\n", - " '(leave it there to die)',\n", - " 'leave it to die in the city, city',\n", - " '(leave it there to die, leave it there to die)',\n", - " 'woah, woah',\n", - " 'nighttime in the city',\n", - " 'suddenly our eyes meet',\n", - " 'you look very pretty',\n", - " 'bodøgutt',\n", - " 'you said you would call me',\n", - " 'but you never called me',\n", - " 'i have been so lonely',\n", - " 'phone me, bitch',\n", - " 'nighttime in the city',\n", - " 'suddenly our eyes meet',\n", - " 'you look very pretty',\n", - " 'bodøgutt',\n", - " 'you said you would call me',\n", - " 'but you never called me',\n", - " 'i have been so lonely',\n", - " 'phone me, bitch',\n", - " 'gonna fuck my heart and',\n", - " 'steal my pride',\n", - " 'in the city',\n", - " '(leave it there to die)',\n", - " 'leave it to die in the city, city',\n", - " '(leave it there to die, leave it there to die)',\n", - " 'gonna fuck my heart and',\n", - " 'steal my pride',\n", - " 'in the city',\n", - " '(leave it there to die)',\n", - " 'leave it to die in the city, city',\n", - " '(leave it there to die, leave it there to die)',\n", - " 'woah, woah',\n", - " 'nighttime in the city',\n", - " 'you said you would call me',\n", - " 'damn, you look so pretty',\n", - " 'magnus, erik, kristoffer, fredrik, petter, thomas, jørgen, håvard',\n", - " 'gonna fuck me hard and',\n", - " 'steal my pride',\n", - " 'in the city',\n", - " '(leave it there to die)',\n", - " 'leave it to die in the city, city',\n", - " '(leave it there to die, leave it there to die)',\n", - " 'gonna fuck my heart and',\n", - " 'steal my pride',\n", - " 'in the city',\n", - " '(leave it there to die)',\n", - " 'leave it to die in the city, city',\n", - " '(leave it there to die, leave it there to die)',\n", - " 'woah, woah',\n", - " 'ingen stillhet her ute - en drøm',\n", - " 'her hvor månen rår - en drøm',\n", - " 'jeg hater denne skog',\n", - " 'hvor ingen fare truer',\n", - " 'ingen ulv',\n", - " 'ingen bjørn',\n", - " 'intet troll',\n", - " 'puster',\n", - " 'ingen onde ånder',\n", - " 'ingenting',\n", - " 'puster',\n", - " 'bare meg og natten -',\n", - " 'bare meg og natten',\n", - " 'en natt skal jag reise',\n", - " 'til helvete',\n", - " 'no stillness out here - a dream',\n", - " 'here where the moon rules - a dream',\n", - " 'i hate these woods',\n", - " 'where there is no danger',\n", - " 'no wolf',\n", - " 'no bear',\n", - " 'no troll',\n", - " 'breathes',\n", - " 'no evil spirits',\n", - " 'nothing',\n", - " 'breathes',\n", - " 'only the night and me - only the night and me',\n", - " 'a night i shall journey',\n", - " 'to hell',\n", - " 'en fager kvinne',\n", - " 'ved hallens tunge port står',\n", - " 'lyser som en gudinne',\n", - " 'med blondt langt hår',\n", - " \"one day we'll all stand in front of her and get\",\n", - " 'the judgement given by her scale',\n", - " 'the goddess of rights',\n", - " 'and the judge of the wrong',\n", - " \"this is syn's song\",\n", - " 'free us',\n", - " 'from the burden we bear',\n", - " 'from the forthcoming fear',\n", - " 'incept the trial',\n", - " \"it's in your hand\",\n", - " 'end this nightmare',\n", - " 'med sverdet hevet hun sier',\n", - " 'at rett skal være rett',\n", - " 'og skal du få komme gjennom porten',\n", - " 'så må du være bedt',\n", - " \"one day we'll all stand in front of her and get\",\n", - " 'the judgement given by her scale',\n", - " 'the goddess of rights',\n", - " 'and the judge of the wrong',\n", - " \"this is syn's song\",\n", - " 'som å søke beskyttelse mot mørket',\n", - " 'i armene til et speil',\n", - " 'hos den som kastet deg ut',\n", - " 'fra din egen dyriske varme',\n", - " 'siden er du siamesisk alene',\n", - " 'med et nattlodd i hver av dine fire hender',\n", - " 'det er ennå før drukningen',\n", - " 'eller trekningen',\n", - " 'august',\n", - " 'plutselig fikk jeg øye på deg',\n", - " 'inne i det forlatte kjøkkenet',\n", - " 'et askebeger med en sammensnørt epleskrott',\n", - " 'en sigarett stump en kirsebærstein',\n", - " 'hvor mange dager eller uker',\n", - " 'er det siden det falt så heraldisk på plass',\n", - " 'et rundt blikkaskebeger med bunnen dekket av et svart kornete belegg',\n", - " 'som jord med vulkansk aske',\n", - " 'det som roper i deg',\n", - " 'roper ikke på deg',\n", - " 'mai',\n", - " 'ansiktet en nisje',\n", - " 'der står skuffen med det i deg som ennå gløder og varmer',\n", - " 'når det er stille virker tyngeloven større',\n", - " 'ingen frukt nå bare blomster',\n", - " 'jeg tenker på et gult eple i regnet',\n", - " 'det er spist',\n", - " 'dyrene er spist og kommer igjen',\n", - " 'vi blir ødelagt og kommer igjen',\n", - " 'det som ikke kan se seg selv ser gjennom deg',\n", - " 'desember',\n", - " 'tilfrossne fotspor',\n", - " 'riller kvadrater kors fiskebeins mønster overstrødd med et tynt lag puddersnø',\n", - " 'så kontrasten mellom de opphøyde og de lave partiene blir tydelig',\n", - " 'der hvor mange individuelle spor møtes',\n", - " 'flyter de sammen i en nesten enhetlig ruglette tekstur',\n", - " 'overfloder av spor nærmer seg det sporløse igjen fra motsatt side',\n", - " 'det som ikke kan skrike selv har ingen angst',\n", - " 'det trenger ikke ditt skrik',\n", - " 'som å søke beskyttelse mot mørket',\n", - " 'i armene til et speil',\n", - " 'hos den som kastet deg ut',\n", - " 'fra din egen dyriske varme',\n", - " 'siden er du siamesisk alene',\n", - " 'med et nattlodd i hver av dine fire hender',\n", - " 'det er ennå før drukningen',\n", - " 'eller trekningen',\n", - " '_________________________',\n", - " 'like seeking protection from the dark',\n", - " 'in the arms of a mirror',\n", - " 'in the house of the one who threw you out',\n", - " 'of your own animal heat',\n", - " 'from then on you are siamesian alone',\n", - " 'with a sinker/ticket in each of your four hands',\n", - " 'it is still before the drowning',\n", - " 'or the drawing',\n", - " 'august',\n", - " 'suddenly i noticed you',\n", - " 'within the abandoned kitchen',\n", - " 'an ashtray with a twirled apple core',\n", - " 'a cigarette butt, a cherry stone',\n", - " 'how many days or weeks',\n", - " 'has it been since it fell together so heraldically',\n", - " 'a round tin ashtray with its bottom covered with a black, grainy coating',\n", - " 'as dirt with volcanic ashes',\n", - " 'that which shouts within you',\n", - " 'does not call you',\n", - " 'may',\n", - " 'the face a niche',\n", - " \"there is the drawer with what's still glowing and warming within you\",\n", - " 'when it is quiet, gravity seems to grow',\n", - " 'no fruit now, just flowers',\n", - " \"i'm thinking of a yellow apple in the rain\",\n", - " 'it is eaten',\n", - " 'the animals are eaten, then come back',\n", - " 'we become ruined, then come back',\n", - " 'that which cannot see itself, sees through you',\n", - " 'december',\n", - " 'frozen foot tracks',\n", - " 'grooves, squares, crosses, fishtail patterns sprinkled with a thin layer of snow',\n", - " 'making the contrast between the raised and the lower layers apparent',\n", - " 'there where many individual tracks meet',\n", - " 'they float together in an almost singular pebbled texture',\n", - " 'overflowings of tracks closes in on the traceless again, from the opposite side',\n", - " 'that which cannot scream by itself, has no fear',\n", - " 'it does not need your scream',\n", - " 'like seeking protection from the dark',\n", - " 'in the arms of a mirror',\n", - " 'in the house of the one who threw you out',\n", - " 'of your own animal heat',\n", - " 'from then on you are siamesian alone',\n", - " 'with a sinker/ticket in each of your four hands',\n", - " 'it is still before the drowning',\n", - " 'or the drawing',\n", - " 'seidmannen klatrer opp i tre',\n", - " 'finner der jords gamle smerte',\n", - " 'kutter den ned i høstens fred',\n", - " 'med saks skjærer ut dets hjerte',\n", - " 'eikens løv mot bakken faller',\n", - " 'seidmannen åndene kaller!',\n", - " 'eikens løv mot jorden faller',\n", - " 'seidmannen tryllevers traller!',\n", - " 'løken legges i lintøy ned',\n", - " 'hellige eiketreånden',\n", - " 'seidmannen sikrer verdens fred;',\n", - " 'fruktbarhet, solmakt i hånden!',\n", - " 'eikens løv mot bakken faller',\n", - " 'seidmannen åndene kaller!',\n", - " 'eikens løv mot jorden faller',\n", - " 'seidmannen tryllevers traller!',\n", - " 'der er solens brennende kraft;',\n", - " 'der er jordens fruktbare hav;',\n", - " 'i seidmannens mektige skaft;',\n", - " 'i drottens beåndede stav',\n", - " 'the sorcerer climbs a tree',\n", - " \"finds earth's old pain\",\n", - " 'cut it down in autumn peace',\n", - " 'with scissors cut out its heart',\n", - " 'oak leaves fall to the ground',\n", - " 'sorcerer calls the spirits!',\n", - " 'oak leaves fall to the ground',\n", - " 'sorcerer magic verse trolleys!',\n", - " 'onion laid down in swaddling clothes',\n", - " 'holy eiketreånden',\n", - " 'sorcerer ensure world peace;',\n", - " 'fertility, solmakt in hand!',\n", - " 'oak leaves fall to the ground',\n", - " 'sorcerer calls the spirits!',\n", - " 'oak leaves fall to the ground',\n", - " 'sorcerer magic verse trolleys!',\n", - " 'where is the burning force;',\n", - " 'where is the earth fertile seas;',\n", - " 'the shape of the sorcerer mighty shaft;',\n", - " 'in drottens inspirited spelling',\n", - " 'kom død, kjære død;',\n", - " 'gi meg løsning på alle gåter;',\n", - " 'gi meg nøkkel og tryllestav',\n", - " 'knyt opp verdens knuter',\n", - " 'hvorfor i døden, min venn, og der alene?',\n", - " 'hvorfor i glemselens elv du stuper?',\n", - " 'hvorfor i mørket, min venn, og der alene',\n", - " 'søker du lysets vennlige varme?',\n", - " 'la meg åpne det lukkede rom',\n", - " 'la meg riste de skjulte runer',\n", - " 'la meg kaste mitt spyd',\n", - " 'midt i trollets kalde hjerte',\n", - " 'hvorfor i døden, min venn, og der alene?',\n", - " 'hvorfor i glemselens elv du stuper?',\n", - " 'hvorfor i mørket, min venn, og der alene',\n", - " 'søker du lysets vennlige varme?',\n", - " 'døden var her først',\n", - " 'glemselen seirer til slutt',\n", - " 'mørket fødte lyset',\n", - " 'hva mer vil du vite?',\n", - " 'død, kjære død! død, min død!',\n", - " 'glemselen har tatt meg',\n", - " 'mørket har senket seg for alltid',\n", - " 'hva mer kan jeg vite?',\n", - " 'kom død, kjære død;',\n", - " 'gi meg løsning på alle gåter;',\n", - " 'gi meg nøkkel og tryllestav',\n", - " 'lås opp verdens låste luker',\n", - " 'døden var her først',\n", - " 'glemselen seirer til slutt',\n", - " 'mørket fødte lyset',\n", - " 'hva mer vil du vite?',\n", - " 'død, kjære død! død, min død!',\n", - " 'glemselen har tatt meg',\n", - " 'mørket har senket seg for alltid',\n", - " 'hva mer kan jeg vite?',\n", - " 'come death,dear death;',\n", - " 'solve all riddles for me;',\n", - " 'give me key and wand',\n", - " 'tie up all knots',\n", - " 'why in death,my friend,and there alone?',\n", - " 'why do you dive into the river of forgetfulness?',\n", - " 'why in darkness,my friend,and there alone?',\n", - " 'do you seek the friendly warmth of the light?',\n", - " 'let me open the closed room',\n", - " 'let me carve the hidden runes',\n", - " 'let me throw my spear',\n", - " 'into the cold heart of the troll',\n", - " 'why in death,my friend,and there alone?',\n", - " 'why do you dive into the river of forgetfulness?',\n", - " 'why in darkness,my friend,and there alone?',\n", - " 'do you seek the friendly warmth of the light?',\n", - " 'death was here first',\n", - " 'forgetfulness always wins in the end',\n", - " 'darkness gave birth to light',\n", - " 'what else do you want to know?',\n", - " 'death,dear death! death, my death!',\n", - " 'forgetfulness has taken me',\n", - " 'darkness has descended upon me forever',\n", - " 'what else can i know?',\n", - " 'come death,dear death;',\n", - " 'solve all riddles for me;',\n", - " 'give me key and wand',\n", - " 'unlock all hatches',\n", - " 'death was here first',\n", - " 'forgetfulness always wins in the end',\n", - " 'darkness gave birth to light',\n", - " 'what else do you want to know?',\n", - " 'death,dear death! death, my death!',\n", - " 'forgetfulness has taken me',\n", - " 'darkness has descended upon me forever',\n", - " 'what else can i know?',\n", - " 'langveysfra blifver hun iagttagen',\n", - " 'øine, mange graablick',\n", - " 'medens maanen tavst glider',\n", - " 'pigen:',\n", - " '\"eg merkje kalde øyne',\n", - " 'kva er eg vár - maa være snar',\n", - " 'før trolldomskraft med makt meg tar\"',\n", - " 'øine holder hende endnu',\n", - " 'seer fra nysgierrig fjærnhed',\n", - " 'norsk nat iiser',\n", - " 'naar lyd lig hylende varg sætter',\n", - " 'torden ruller',\n", - " '(angsten blusser)',\n", - " 'verden er sneen',\n", - " '- stille',\n", - " 'alleene hun aander',\n", - " 'hierteslag banker',\n", - " 'blodet iisner i aarene',\n", - " 'de underjordiske:',\n", - " '\"sorrigens kilde hviler',\n", - " 'paa de torneklædte træer',\n", - " 'hun er saa vacker een dyd',\n", - " 'hendes drøm solspell indvier\"',\n", - " 'paa disse hvide kinder',\n", - " 'paa denne smiilforladte mund',\n", - " 'taarerne i elver strømmer',\n", - " 'naar verden er i blund',\n", - " 'english translation:',\n", - " \"from far away she's being watched\",\n", - " 'eyes, many eyes of gray watches her',\n", - " 'while the moon slowly glides',\n", - " 'the girl:',\n", - " '\"i sense cold eyes',\n", - " 'whatever i do – i must be quick',\n", - " 'before sorcery takes me with force\"',\n", - " 'eyes still behold her',\n", - " 'looking curiously from afar',\n", - " 'norwegian night ices',\n", - " 'when the sound of howling wolves beckons',\n", - " 'thunder rolls',\n", - " '(her anxiety blazes)',\n", - " 'the world is snow',\n", - " '- quiet',\n", - " 'alone she breathes',\n", - " 'heart beats',\n", - " 'her blood turns to ice',\n", - " 'those underground:',\n", - " '\"the source of sorrow rests',\n", - " 'on the thorn dressed trees',\n", - " 'she is as beautiful as a virtue',\n", - " 'hendes drøm solspell indvier*',\n", - " 'on those white cheeks',\n", - " 'on that mouth that no longer smiles',\n", - " 'tears flows in rivers',\n", - " 'when the world sleeps',\n", - " '*untranslatable',\n", - " 'imellom buskene vi stirret',\n", - " 'på de som minnet om andre tider',\n", - " 'og fortalte at håpet var borte',\n", - " 'for alltid...',\n", - " 'vi hørte alvesang og vann',\n", - " 'som sildret',\n", - " 'det som en gang var er nu borte',\n", - " 'alt blodet...',\n", - " 'all lengsel og sorg som hersket',\n", - " 'og de følelser som kunne',\n", - " 'røres',\n", - " 'er vekk...',\n", - " 'for alltid...',\n", - " 'vi døde ikke...',\n", - " 'vi har aldri levd',\n", - " 'between the bushes we stared',\n", - " 'at those who reminded us of another age',\n", - " 'and told that hope was away',\n", - " 'forever',\n", - " 'we heard elven song and',\n", - " 'water that trickled',\n", - " 'what once was is now',\n", - " 'away',\n", - " 'all the blood',\n", - " 'all the longing and pain that',\n", - " 'ruled',\n", - " 'and the emotions that could be stirred',\n", - " 'are away',\n", - " 'forever',\n", - " 'we are not dead',\n", - " 'we have never lived',\n", - " 'ta nu å slutt',\n", - " 'ta nu å slutt slut',\n", - " 'give way for the kings of shut up',\n", - " 'i will suck it up for you',\n", - " 'swallow it down for you',\n", - " 'slutt!',\n", - " 'ta nu å slutt slut',\n", - " 'give way for the kings of shut up',\n", - " 'i will suck it up for',\n", - " 'swallow it down for you',\n", - " 'lalalala',\n", - " 'lalalala',\n", - " 'lalalala',\n", - " 'lalalala',\n", - " \"shut up i'm a cherry bomb and\",\n", - " \"i'm about to blow you up\",\n", - " 'this is the r. (be)for(e) the riot (riot!)',\n", - " 'a, b, c, d cup',\n", - " 'shut up up fyll et bomberom',\n", - " 'for det her kan gå jævlia galt',\n", - " 'on nichego ne ponimayet',\n", - " 'æ klikke internasjonalt',\n", - " 'ta nu å slutt',\n", - " 'ta nu å slutt slut',\n", - " 'give way for the kings of shut up',\n", - " 'i will suck it up for you',\n", - " 'swallow it down for you',\n", - " 'slutt!',\n", - " 'ta nu å slutt slut',\n", - " 'give way for the kings of shut up',\n", - " 'i will suck it up for',\n", - " 'swallow it down for you',\n", - " 'lalalala',\n", - " 'lalalala',\n", - " 'lalalala',\n", - " 'lalalala',\n", - " 'shut up we are going back og',\n", - " 'det blir fette jævla bra',\n", - " 'back to the crazy bad ass shit',\n", - " 'we have inside our hearts',\n", - " 'shut up i want to say to you, i say',\n", - " 'nananananana',\n", - " 'before we met you everything was better',\n", - " 'ta nu å slutt',\n", - " 'ta nu å slutt slut',\n", - " 'give way for the kings of shut up',\n", - " 'i will suck it up for you',\n", - " 'swallow it down for you',\n", - " 'slutt!',\n", - " 'ta nu å slutt slut',\n", - " 'givе way for the kings of shut up',\n", - " 'i will suck it up for',\n", - " 'swallow it down for you',\n", - " 'you telling me how to play it cool',\n", - " \"wеll i don't see the way you roll\",\n", - " 'smack in your face bitch',\n", - " 'we gonna go back to that dogshit',\n", - " 'you telling me how to play it cool',\n", - " \"well i don't see the way you roll\",\n", - " 'smack in your face bitch',\n", - " 'we gonna go back to that dogshit',\n", - " 'ta nu å slutt',\n", - " 'ta nu å slutt slut',\n", - " 'give way for the kings of shut up',\n", - " 'i will suck it up for you',\n", - " 'swallow it down for you',\n", - " 'slutt!',\n", - " 'ta nu å slutt slut',\n", - " 'give way for the kings of shut up',\n", - " 'i will suck it up for',\n", - " 'swallow it down for you',\n", - " 'lalalala',\n", - " 'lalalala',\n", - " 'lalalala',\n", - " 'lalalala',\n", - " 'hadde vært sykt stilig om vi kunne lagt lokk på ting som har skjedd',\n", - " \"e'kke keen på at folk slal få vite det. okay?\",\n", - " 'hilsen paulo',\n", - " 'helluva steht undt denken an hvordan hun kan finne ney undersåtter som kan hente vann',\n", - " 'the last one that she had died in a freakish accident, sie setzen sich an er wenn er fragt \"wo ist deine fornuft?\"',\n", - " 'jævelen han våget å insinuere frekt at hun var for stor for sin egen dør og aldri kunne dra vekk',\n", - " 'den frekke faen foreslo å spise nibdre mat, she flattened him and ate him fikk han servert på ett fat',\n", - " 'goddamn und ficken skitt she is still pissed off!',\n", - " 'om hun kunne kill him again she would live it in her heart',\n", - " 'she will töten er o igjen in fact she found him tasty',\n", - " 'hun grynter mens hun tenker fordi hun syns det er stress, when she can stick to hitting things da er hun i sitt ess',\n", - " 'sie will töten alt og alle in fact she will eat everyone',\n", - " 'rasende og sinna setter helluva i et brøl, all denne tankevirsomhet nå skal hun lage søl',\n", - " 'with her club in her hand, she strikes out towards the nearest servant',\n", - " 'slaget lander fint og flott på tjeneren sin topp, instant soup it makes of hi og helluva slurper opp',\n", - " 'happy for some soup she briefly forgets to be angry',\n", - " 'camouflage clair is a spelunking sister and so is steel sarah',\n", - " 'begge to utforske den wahnsinns grosse jungel fordi de leter etter hull',\n", - " 'hull som leder dypt ned, deeper down into the earth they hope to find a vicious mom',\n", - " 'steel sarah hum roper, she has found a dypt mørkt hole that she wants to explore',\n", - " 'steel sarah rappellerer deeper into nye steder',\n", - " 'after viele høydemeter steht sie støtt i hullets bunn og freser',\n", - " \"in front of her lies a serpent bigger than a king's apartment\",\n", - " 'men steel sarah bare gliser, she draws her sword und rett ut friser',\n", - " 'sword in hand she cuts that snake',\n", - " 'sword in hand she cleaves it into two',\n", - " 'sverd i hånd som drypper blod',\n", - " 'sverd i hånd som drypper slange blod',\n", - " 'right behind den døde ormen, kommer det en til slange',\n", - " 'den er også veldig hissig, but no match for our sword missy',\n", - " 'sword in hand she cuts that snake',\n", - " 'sword in hand she cleaves it into two',\n", - " 'sverd i hånd som drypper blod',\n", - " 'sverd i hånd som drypper slange blod',\n", - " 'steel sarah, draws her sword, cleaves the snakes, warrior',\n", - " 'sword in hand she cuts that snake',\n", - " 'sword in hand she cleaves it into two',\n", - " 'sverd i hånd som drypper blod',\n", - " 'sverd i hånd som drypper slange blod',\n", - " 'vårt hat skal vinne',\n", - " 'vår ondskap skal gro',\n", - " 'a feste seg i unge sjeler',\n", - " 'den siste krig skal vi vinne',\n", - " 'og de godes blod skal falle som regn',\n", - " 'deres korte sjeler skal samles',\n", - " 'vi skal rå de over kaos og evig natt',\n", - " 'vi skal glemme de kvinnelig vikante mødre',\n", - " 'og utslette alt',\n", - " 'et rike skal reiset seg',\n", - " 'i asken av brennte hjem',\n", - " 'det er kun en herre hersker',\n", - " 'vi heller deg satan de sterkes konge',\n", - " 'din tid er kommet',\n", - " 'our hate shall win',\n", - " 'our evil shall grow',\n", - " 'to fix itself in young souls',\n", - " 'the final war shall we win',\n", - " 'and the blood of the good shall fall as rain',\n", - " 'their short souls shall be gathered together',\n", - " 'we shall reign over chaos and everlasting night',\n", - " 'we shall forget the womanly weak small mother',\n", - " 'and end all',\n", - " 'a kingdom shall raise itself',\n", - " 'in the ash of burned homeland',\n", - " 'there is only one master ruler',\n", - " 'we pay tribute to you satan the king of the strong',\n", - " 'your time is has come']},\n", - " 'data': ['hengitt er vi',\n", - " 'til mørkets keiser',\n", - " 'den allmektiges kraft',\n", - " '(som) fører vårt sinn',\n", - " 'i kamp',\n", - " 'mot godhet og løgn',\n", - " 'dog fiendens hær er fattig',\n", - " 'er den stor',\n", - " 'men vi skal ta dem alle',\n", - " 'og hente dem inn',\n", - " 'en etter en',\n", - " 'det håp de ser i gud',\n", - " 'skal forsvinne i et hav av torner',\n", - " 'de torner deres falske frelser',\n", - " 'engang følte spikret i sin skalle',\n", - " 'himmelen skal rakne',\n", - " 'og en fandens torden',\n", - " 'skal buldre å brake',\n", - " 'hans krefter vil røyne',\n", - " 'der mørkets front',\n", - " 'beseirer lystes pest',\n", - " 'ã\\x98yne vil renne i sorg',\n", - " 'når de innser (at) deres gud',\n", - " 'ikke lenger kan hjelpe',\n", - " 'det håp de så i gud',\n", - " 'er svunnet og vekk for alltid',\n", - " 'de følger nå sin falske felser',\n", - " 'som fortsatt er bærer av en krone',\n", - " 'med torner',\n", - " 'men konge ble han ikke',\n", - " 'devoted are we',\n", - " 'to the emperor of the dark',\n", - " 'the power of the almighty',\n", - " '(which)leads our minds',\n", - " 'into battle',\n", - " 'against the good and their lies',\n", - " \"though the enemy's army is poor\",\n", - " 'it is big',\n", - " 'but we shall take them all',\n", - " 'gather them up',\n", - " 'one by one',\n", - " 'the hope they saw in god',\n", - " 'shall i disappear in an ocean of thorns',\n", - " 'the thorns their fake messiah',\n", - " 'once felt nailed to his skull',\n", - " 'heaven shall be torn',\n", - " 'and a f*cking thunder',\n", - " 'shall boulder and roar',\n", - " 'his powers will go weak',\n", - " 'where the front of dark',\n", - " 'conquer the plague of light',\n", - " 'eyes will run in sorrow',\n", - " 'when they realize (that) their god',\n", - " 'no longer can help',\n", - " 'the hope they found in god',\n", - " 'is gone and so it shall be forever',\n", - " 'now they follow their fake salvator',\n", - " 'who still carries a crown of thorns',\n", - " 'but king he never became',\n", - " 'professor otto står ved bålet, er brygger på ein troll love potion, den skal han gi til jegermeister',\n", - " 'jegermeister trenger den zu speed up all the fertilizing',\n", - " 'et stykke fra helluvas hall har trollene slått leir og made plans',\n", - " 'helluva skal få bli gravid nå',\n", - " 'jegermeister skal bli far og uten tvil så dør han av det',\n", - " 'nå drikker jegermeister troll-love eliksiren, er ist klar zu sacrifice life',\n", - " 'så tar han fart og løper straight towards helluva, he has no remorse and no fear',\n", - " 'he has no remorse and no fear',\n", - " 'rett bak ham følger sarah, camoclair und otto',\n", - " 'islandshans hat nicht zu gut fart',\n", - " 'now entering the hall, they all split up and distract helluva with all their power',\n", - " 'distract helluva with their power',\n", - " 'bang! helluva eksplodere, trampe rundt i sinne, denge laus med klubba si',\n", - " 'wow! camouflage claire sniker jegermeister bak und opp på ryggen til helluva',\n", - " \"now the other trolls retreat; they have made the feat, it's up to jegermeister\",\n", - " 'so none gets to witness mating unlike anything, except a few deep-water fish',\n", - " \"we're talking about angler fish\",\n", - " \"au! helluva feels something itching on her lower back but she's far too fat to reach it\",\n", - " \"slow! jegermeister's merging, melting into her skin, becoming a part of her\",\n", - " 'then the only thing left from jegermeister is a huge sack of balls',\n", - " 'they remain there even dangling, pumping out his semen whenever she is good to spawn',\n", - " 'spawning out some little troll bastards',\n", - " 'over the next few weeks, helluva pumps out a fullblown horde',\n", - " 'our dearest jegermeister made life better for the trolls',\n", - " 'out dearest jegermeister gave his life for all the trolls',\n", - " 'professor otto står ved bålet, er underholde massevis av trollkids, noen klatre rundt på islandhans',\n", - " 'resten av dei lytter til hva professoren lærer dem',\n", - " 'steel sarah und camouflage clair patruljere hulene og henter trollunger, helluva gir faen i det',\n", - " 'hun ligger i hallen sin og spruter ut en masse trollbarn',\n", - " 'ingen stillhet her ute - en droem',\n", - " 'her hvor maanen raar - en droem',\n", - " 'jeg hater denne skog',\n", - " 'hvor ingen fare truer',\n", - " 'ingen ulv',\n", - " 'ingen bjoern',\n", - " 'intet troll',\n", - " 'puster',\n", - " 'ingen onde aander',\n", - " 'ingenting',\n", - " 'puster',\n", - " 'bare meg og natten -',\n", - " 'bare meg og natten',\n", - " 'en natt skal jag reise',\n", - " 'til helvete',\n", - " 'english translation:',\n", - " 'no stillness out here - a dream',\n", - " 'here where the moon rules - a dream',\n", - " 'i hate these woods',\n", - " 'where there is no danger',\n", - " 'no wolf',\n", - " 'no bear',\n", - " 'no troll',\n", - " 'breathes',\n", - " 'no evil spirits',\n", - " 'nothing',\n", - " 'breathes',\n", - " 'only the night and me - only the night and me',\n", - " 'a night i shall journey',\n", - " 'to hell',\n", - " 'en skikkelse lå der på bakken',\n", - " 'så vond at de blomster rundt visnet',\n", - " 'en dyster sjel lå der på bakken',\n", - " 'så kald at alt vann ble til is',\n", - " 'en skygge da falt over skogen',\n", - " 'da skikkelsens sjel visnet bort',\n", - " 'for skikkelsens sjel var en skygge',\n", - " 'en skygge av vondskapens makt',\n", - " '----english translation----',\n", - " 'a figure lay there on the hilltop',\n", - " 'so evil that the flowers around withered',\n", - " 'a gloomy soul lay there on the hilltop',\n", - " 'so cold that the water turned to ice',\n", - " 'a shadow then settled over the woods',\n", - " \"then the figure's soul withered away\",\n", - " \"because the figure's soul was a shadow\",\n", - " 'a shadow of the evil power',\n", - " 'i en mørk skog med kalde tjern',\n", - " 'et sted hvor herren av verdens',\n", - " 'ild ikke rekker',\n", - " 'i det mørkeste i den store',\n", - " 'av natten - av tid',\n", - " 'og de samlet seg',\n", - " 'og blev dødens hus',\n", - " 'barn av tidens krefter',\n", - " 'bran av den mektiges sønner',\n", - " 'vi står i en sirkel av svart',\n", - " 'in a dark wood with cold lakes',\n", - " \"a place where master of the world's\",\n", - " \"fire doesn't get\",\n", - " 'in the darkest great',\n", - " 'night of the time',\n", - " 'and they gathered',\n", - " 'and became the house of the dead',\n", - " \"sons of time's power\",\n", - " 'sons of the powerful sons',\n", - " 'we stand in the black circle',\n", - " 'kaos på satans slagmark',\n", - " 'hellig jord badet i blod...',\n", - " 'eimen av slakta spedbarn',\n", - " 'kristen død og kristenmanns blod',\n", - " 'di åpner porten i natt.. til helvete!!!',\n", - " 'en ny åpenbaring i dyrets tegn',\n", - " 'evig hat og evig mørke',\n", - " 'forferdelse og evig pinsler',\n", - " 'skapt av ondskap og tidløst hat',\n", - " 'dommedags eld og (en) djevelsk død',\n", - " 'alt liv skal knuses i kampen mot gud',\n", - " 'med beina godt plantet i helveteee!!!!!!',\n", - " '\"tror ikke på noen gud, ingen gud!!!',\n", - " 'kvalme og forakt i kristen drakt... dommedag...',\n", - " 'golgatha blir nostalgi, jesus profeterte pedofili..\"',\n", - " 'slakt alt hellig, drep alt jordlig liv...',\n", - " 'lev i skitten synd, dø i evig skam!!',\n", - " 'brenn guds hus, død over guds barn',\n", - " 'ta ditt eget liv!!!! ta ditt eget liv!!!!',\n", - " 'vi åpner porten til helvete!!!',\n", - " 'meld deg skyldig i løgn og hykleri',\n", - " 'gammal tidløs misantropi',\n", - " 'jesus elsket korset, er min teori (for helvete)',\n", - " 'evig hat!!! hat!!! (repeat, og ta ditt eget liv)',\n", - " '-english translation-',\n", - " 'chaos on the satan battlefield',\n", - " 'sacred earth bathed in blood ...',\n", - " 'eim of slaughtered infants',\n", - " \"christian death and christian's blood\",\n", - " 'di opens the gate tonight .. to hell !!!',\n", - " 'a new revelation in the sign of the beast',\n", - " 'eternal hatred and eternal darkness',\n", - " 'horror and eternal torments',\n", - " 'created by evil and timeless hatred',\n", - " 'doomsday fire and (one) devilish death',\n", - " 'all life must be crushed in the fight against god',\n", - " 'with legs well planted in helletee !!!!!!',\n", - " '\"don\\'t believe in any god, no god !!!',\n", - " 'nausea and contempt in christian costume ... doomsday ...',\n", - " 'golgatha becomes nostalgia, jesus prophesied pedophilia .. \"',\n", - " 'slaughter all holy, kill all mortal life ...',\n", - " 'live in dirty sin, die in eternal shame !!',\n", - " 'burn the house of god, death of the children of god',\n", - " 'take your own life !!!! take your own life !!!!',\n", - " 'we open the gate to hell !!!',\n", - " 'guilty of lies and hypocrisy',\n", - " 'old timeless misanthropy',\n", - " 'jesus loved the cross is my theory (for hell)',\n", - " 'ever hate !!! hate!!! (repeat and take your own life)',\n", - " 'down at the docks',\n", - " 'down at the docks',\n", - " 'down at the docks',\n", - " \"that's where i'll be found\",\n", - " 'when the deal goes down at the docks',\n", - " 'han så på meg sa:',\n", - " '\"down at the docks',\n", - " 'down at the docks',\n", - " \"that's where i'll be found\",\n", - " 'when the deal goes down\"',\n", - " 'det er stille på kaia i kveld',\n", - " 'kun et par ensomme tankere helt for seg selv',\n", - " 'så møt meg på brygga ved pir nummer 5',\n", - " 'presis klokka 2 am',\n", - " 'og jeg er oppvokst på brygga i son',\n", - " 'men jeg har aldri vært utfor en slik situasjon',\n", - " 'babord blir bibord',\n", - " 'stranda på land',\n", - " 'på tynn is ved oslo havn',\n", - " 'og det er hvitevarer og sorte penger',\n", - " 'de har alt du trenger her',\n", - " 'så sa han bare:',\n", - " '\"down at the docks',\n", - " 'down at the docks\"',\n", - " 'han sa:',\n", - " '\"down at the docks',\n", - " \"that's where i'll be found\",\n", - " 'when the deal goes down at the docks\"',\n", - " 'jeg bare stod der og sa:',\n", - " '\"down at the docks?\"',\n", - " '\"ja, down at the docks',\n", - " \"that's where i'll be found\",\n", - " 'when the deal goes down\"',\n", - " 'og det tviler jeg ikke på',\n", - " 'han ga meg en lapp med telefonnummer på',\n", - " 'pluss førtifire, null fire tyve også åtte eller tre og noe mer',\n", - " 'og han sa: \"learn this number by heart',\n", - " 'og ikke fly rundt i byen gutt og tro du er smart',\n", - " 'lukten er av trøbbel',\n", - " 'smaken av spenn',\n", - " 'en fiende eller en venn',\n", - " 'og det er hvitevarer og sorte penger',\n", - " 'de har alt du trenger her',\n", - " 'så sa han bare:',\n", - " '\"down at the docks\"',\n", - " 'han så på meg, sa:',\n", - " '\"down at the docks',\n", - " 'down at the docks',\n", - " \"that's where i'll be found\",\n", - " 'when the deal goes down at the docks\"',\n", - " '\"hva faen mener du med',\n", - " 'down at the docks?!\"',\n", - " '\"down at the docks',\n", - " \"that's where i'll be found\",\n", - " 'when the deal goes down\"',\n", - " 'fra new york til rotterdam',\n", - " 'hamburg, cape town',\n", - " 'dubai til birmingham',\n", - " 'med containere og kontraband',\n", - " 'det er san antonio, københavn',\n", - " 'taiwan, hong kong',\n", - " 'fra east bay til oslo havn',\n", - " 'med containere og kontraband',\n", - " 'down at the docks',\n", - " 'down at the docks',\n", - " 'down at the docks',\n", - " \"that's where i'll be found\",\n", - " 'when the deal goes down at the docks',\n", - " 'du veit du finner meg',\n", - " 'down at the docks',\n", - " 'yeah',\n", - " 'down at the docks',\n", - " \"that's where i'll be found\",\n", - " 'when the deal goes down',\n", - " 'jeg er frelst, å for en nåde!',\n", - " 'nåde over nåde',\n", - " 'jeg er frelst, å hvilken gåte!',\n", - " 'nåde over nåde',\n", - " 'tenk all min synd har jesus sonet!',\n", - " 'til sin brud har han meg kronet',\n", - " 'jeg er frelst, å for en nåde!',\n", - " 'nåde over nåde',\n", - " 'dag for dag han meg bevarer',\n", - " 'nåde over nåde',\n", - " 'frelser meg fra syndens farer',\n", - " 'nåde over nåde',\n", - " 'og om jeg synder, han forlater',\n", - " 'dag for dag han meg bevarer',\n", - " 'nåde over nåde',\n", - " 'gud skje lov, snart er jeg hjemme!',\n", - " 'nåde over nåde',\n", - " 'lammets sang jeg skal istemme',\n", - " 'nåde over nåde',\n", - " 'takk, jesus. takk for nådens under',\n", - " 'takk for fred i sår og vunder!',\n", - " 'gud skje love, snart er jeg hjemme',\n", - " 'nåde over nåde',\n", - " '----------------------',\n", - " \"i'm saved, to a grace!\",\n", - " 'grace upon grace',\n", - " \"i'm saved, oh what riddle!\",\n", - " 'grace upon grace',\n", - " 'think all my sin, jesus atoned!',\n", - " 'to his bride, he has me crowned',\n", - " \"i'm saved, to a grace!\",\n", - " 'grace upon grace',\n", - " 'day by day he me preserves',\n", - " 'grace upon grace',\n", - " 'save me from sin hazards',\n", - " 'grace upon grace',\n", - " 'and if i sin, forgiving',\n", - " 'day by day he me preserves',\n", - " 'grace upon grace',\n", - " \"thank god, soon i'm home!\",\n", - " 'grace upon grace',\n", - " 'lamb song i shall istemmer',\n", - " 'grace upon grace',\n", - " 'thank you, jesus. thanks for grace under',\n", - " 'thank you for peace in wounds and vduring!',\n", - " \"god be love, soon i'm home\",\n", - " 'grace upon grace']}}},\n", - " 'nl': {'sentence': {'pop': {'meta': {'train_data': ['(rebecca)',\n", - " \"suddenly i'm flying, flying high in the sky\",\n", - " 'i can feel that i can catch the moon',\n", - " \"the wind whispers you're gonna be here soon\",\n", - " '(arash)',\n", - " 'eshghe man, to hamooni ke age baa man bemooni',\n", - " 'to mitooni, to mitooni, mano be aarezoom beresooni',\n", - " 'ey ghorboone khandidanet, ghorboone raghsidanet',\n", - " 'na mesle to peyda nemishe, na na na na be khodaa nemishe!',\n", - " '(rebecca)',\n", - " \"suddenly i'm flying, flying high in the sky\",\n", - " 'i can feel that i can catch the moon',\n", - " \"the wind whispers you're gonna be here soon\",\n", - " \"suddenly i'm dreaming, i'm walking under the sun\",\n", - " 'as the morning comes and i wake up',\n", - " 'you are with me and the sun is up',\n", - " '(arash)',\n", - " 'mitarsam een dastaat ye kaari bede be dastam!',\n", - " 'ey eshghe man joonam fadaat, bezaar bemoonam baahaat',\n", - " 'ghorboone range laabaat, beri babaa mimiram baraat!',\n", - " 'az daste man hey dar naro, hey hey invaro oonvar naro',\n", - " 'baba divoone misham naro, na na na na az pisham naro!',\n", - " '(rebecca)',\n", - " \"suddenly i'm flying, flying high in the sky\",\n", - " 'i can feel that i can catch the moon',\n", - " \"the wind whispers you're gonna be here soon\",\n", - " \"suddenly i'm dreaming, i'm walking under the sun\",\n", - " 'as the morning comes and i wake up',\n", - " 'you are with me and the sun is up',\n", - " \"suddenly i'm flying, flying high in the sky\",\n", - " 'i can feel that i can catch the moon',\n", - " \"the wind whispers you're gonna be here soon\",\n", - " \"suddenly i'm dreaming, i'm walking under the sun\",\n", - " 'as the morning comes and i wake up',\n", - " 'you are with me and the sun is up',\n", - " \"suddenly i'm flying, flying high in the sky\",\n", - " 'i can feel that i can catch the moon',\n", - " \"the wind whispers you're gonna be here soon\",\n", - " \"suddenly i'm dreaming, i'm walking under the sun\",\n", - " 'as the morning comes and i wake up',\n", - " 'you are with me and the sun is up',\n", - " '(arash)',\n", - " 'mitarsam een dastaat ye kaari bede be dastam!',\n", - " 'fiuri braenner eikin',\n", - " 'mijn lant i brand',\n", - " 'tusend aar gaan',\n", - " 'svertar brangin fridou',\n", - " 'den leifsvol eist fuër bluot',\n", - " 'tiran blovent vrijhet',\n", - " 'dej stikke wounds',\n", - " 'wandet nah waestan',\n", - " 'mijn lant i brand',\n", - " 'tusend aar leugen',\n", - " 'alleen dej wulfar wachten',\n", - " 'liiken dej stikke wounds',\n", - " 'doh dezen wound moet steeteg bluotin',\n", - " 'fire buning the oaks',\n", - " 'my land in flames',\n", - " 'thousand years gone',\n", - " 'swords brought peace',\n", - " 'the loving one thirsts for blood',\n", - " 'the tyrant who promised freedom',\n", - " 'the hidden wounds',\n", - " 'turned to the west',\n", - " 'my land in flames',\n", - " 'thousand years of lies',\n", - " 'only the wolves are guarding',\n", - " 'licking the hidden wounds',\n", - " 'but this wound shall steadily bleed',\n", - " 'jenny wil morgen niet naar school',\n", - " 'ze word gepest de maat is vol',\n", - " 'hold on, hold on yeah',\n", - " \"s' avonds huilend op haar bed\",\n", - " 'hopend op iemand die haar red',\n", - " 'hold on, hold on yeah',\n", - " 'you are not alone',\n", - " 'we are the dreamers',\n", - " 'yeah we are all the same',\n", - " 'we are the dreamers',\n", - " 'and we will never change',\n", - " 'we are the dreamers',\n", - " \"we're not afraid to say\",\n", - " 'whats on our mind yeah',\n", - " 'cause in the end the dreamers will survive',\n", - " 'cause in the end the dreamers will survive',\n", - " \"eva's ouders gaan uit elkaar\",\n", - " 'ze wil niet zeuren maar heeft het zwaar',\n", - " 'hold on, hold on yeah',\n", - " 'ze verlangt terug naar de oude tijd',\n", - " 'maar die gedachten doen nu pijn',\n", - " 'hold on, hold on yeah',\n", - " 'you are not alone',\n", - " 'we are the dreamers',\n", - " 'yeah we are all the same',\n", - " 'we are the dreamers',\n", - " 'and we will never change',\n", - " 'we are the dreamers',\n", - " \"we're not afraid to say\",\n", - " 'whats on our mind yeah',\n", - " 'cause in the end the dreamers will survive',\n", - " 'cause in the end the dreamers will survive',\n", - " \"hanna's vader heeft een nieuwe baan\",\n", - " 'pas verhuisd en niemand kent haar naam',\n", - " 'hold on, hold on yeah',\n", - " 'we are the dreamers',\n", - " 'yeah we are all the same',\n", - " 'we are the dreamers',\n", - " 'and we will never change',\n", - " 'we are the dreamers',\n", - " \"we're not afraid to say\",\n", - " 'whats on our mind yeah',\n", - " 'cause in the end the dreamers will survive',\n", - " 'we are we are the dreamers',\n", - " 'cause in the end the dreamers will survive',\n", - " 'we are we are the dreamers',\n", - " 'we are the dreamers',\n", - " 'we are the dreamers',\n", - " 'cause in the end the dreamers will survive',\n", - " 'ze koopt haar bloemen zelf',\n", - " 'ze hoopt dat dan de lente aan komt waaien',\n", - " 'maar diep vanbinnen weet ze wel, dat ze verwelken in een handomdraai',\n", - " 'dat het water troebel wordt, dat ze hun hoofden laten hangen',\n", - " 'the colour of anything, is buried underneath the the smell of sunlight',\n", - " 'and the moon that lies beneath',\n", - " 'hides the bitter truth',\n", - " 'that drowning in a bed of blooms, is better than the lies',\n", - " 'that slide from singers and the songs that slip their teeth',\n", - " 'bij het vallen van de avond',\n", - " 'verlangt hij naar een spoor',\n", - " 'van een belofte in haar woorden',\n", - " 'dat weet hij wel',\n", - " 'en de dagen blijven rennen',\n", - " 'de kalender is een spel',\n", - " 'het is wennen aan september',\n", - " 'al zo snel',\n", - " 'ze kijken naar elkaar, en ze vrijen met hun ogen wijder open dan ze ooit hebben gedaan',\n", - " 'voor haar voelt het als hoop',\n", - " 'maar ze ziet dat het voor hem',\n", - " 'meer een kwestie is van noodzaak door de stilte in haar stem',\n", - " \"all the summer's falling down\",\n", - " 'and the sun is on the ground',\n", - " 'falling upon a pile of photographs',\n", - " 'and the days flame out',\n", - " 'in the dark among the ashes',\n", - " 'on this calender-go-round',\n", - " 'i got older in september',\n", - " \"and there's no way out\",\n", - " 'de bomen worden kaler',\n", - " \"(autumn's falling down, around)\",\n", - " 'zijn dromen bladeren vooruit',\n", - " '(the leaves are blowing eastward into town)',\n", - " 'als naar het eind van een verhaal',\n", - " 'haar warmte tevergeefs',\n", - " '(all your life you had the things you lose)',\n", - " 'zijn armen leger dan hij nu kan hebben',\n", - " \"(the things you keep, the things you wish you'd never left behind)\",\n", - " 'ooit had hij het allemaal',\n", - " 'bij het vallen van de avond',\n", - " \"and the summer's falling down\",\n", - " 'sleept haar hart zich voort',\n", - " 'and her heart is on the ground',\n", - " 'ze wil terug maar gaat toch door',\n", - " 'a breath of wind among the photographs',\n", - " 'dat weet ze wel',\n", - " 'and the days fade out',\n", - " 'heeft ze hem ooit leren kennen?',\n", - " 'in the dark among the endings',\n", - " 'waren ze wel bij elkaar?',\n", - " 'on this calender-go-round',\n", - " 'het is wennen aan september',\n", - " 'heading west into september',\n", - " 'and the lights go down...',\n", - " 'and the lights go down...',\n", - " 'veel te vroeg dit jaar',\n", - " 'ahaha ... oweo... ahaha ... yeah yeah yeah',\n", - " 'ik voel me super , i feel great',\n", - " 'ik kan niet blijven staan want de music is heet',\n", - " 'ik wil shaken , das het liefste wat ik doe',\n", - " 'ik wil alleen maar dansen , maybe baby with you',\n", - " 'refrein :',\n", - " 'hey mister dj laat is horen hoe het klinkt , laat is voelen hoe het swingt',\n", - " 'hey... disco wij zijn stapelgek op disco',\n", - " 'disco dat is lekker retro',\n", - " 'take your chance , are you ready to dance',\n", - " 'come on and move your feet to the disco beat',\n", - " 'disco! ... ahaha ... oweo... ahaha... yeah yeah yeah',\n", - " 'ja dit is mega this is it',\n", - " 'were gonna do it , is iedereen fit',\n", - " 'ik wil feesten en ik weet wel hoe',\n", - " 'ik wil alleen maar dansen , maybe baby with you',\n", - " 'refrein :',\n", - " 'hey mister dj laat is horen hoe het klinkt , laat is voelen hoe het swingt',\n", - " 'hey... disco wij zijn stapelgek op disco',\n", - " 'disco dat is lekker retro',\n", - " 'take your chance , are you ready to dance',\n", - " 'come on and move your feet to the disco beat',\n", - " 'disco! ... ahaha ... oweo... ahaha... yeah yeah yeah',\n", - " 'disco ... disco wij zijn stapelgek op disco',\n", - " 'disco dat is lekker retro',\n", - " 'take your chance , are you ready to dance',\n", - " 'come on and move your feet to the disco beat',\n", - " 'disco wij zijn stapelgek op disco',\n", - " 'disco dat is lekker retro',\n", - " 'take your chance , are you ready to dance',\n", - " 'come on and move your feet to the disco beat',\n", - " 'disco!',\n", - " 'ey, ey, ey',\n", - " 'all of a sudden vinden ze me handsome',\n", - " 'want nnelgy die die get the bands up',\n", - " 'nnelgy die die get the bands up, bands up, ey',\n", - " 'all of a sudden vinden ze me handsome',\n", - " 'want nnelgy die die get the bands up',\n", - " 'nnelgy die die get the bands up, bands up, ey',\n", - " 'ey, ey',\n", - " 'all of a sudden vinden ze me handsome',\n", - " \"opeens zie 'k jouw meid in m'n mansions\",\n", - " 'want ze ziet ik ben met samuel',\n", - " 'maar babygirl dit is een level',\n", - " 'die je niet aankan want ik ben een rebel',\n", - " 'en als je het aankan kan je met me bellen',\n", - " 'laatst met garri tijdens fashionweek op in paris, op in paris, ey',\n", - " \"meet ik m'n nigga bokoe daar met de promethazine, promethazine, ey\",\n", - " 'amsen appen nnelgy zo van we willen je zien, we willen je zien, ey',\n", - " 'maar nnelgy die focust op 100 bands, 100 bands, 100 bands, 100 bands',\n", - " 'jouw moeder vraagt me hoe oud ik ben, want ze ziet dat ik about it ben',\n", - " 'all of a sudden vinden ze me handsome',\n", - " 'want nnelgy die die get the bands up',\n", - " 'nnelgy die die get the bands up, bands up, ey',\n", - " 'all of a sudden vinden ze me handsome',\n", - " 'want nnelgy die die get the bands up',\n", - " 'nnelgy die die get the bands up, bands up, ey',\n", - " 'ey, ey',\n", - " 'all of a sudden vinden ze me handsome',\n", - " 'maar bokoesam die is zo random',\n", - " 'ik ben met kenny, hij popt die benzos, ey, ey',\n", - " 'all of a sudden werd het sudden death',\n", - " 'erin, eruit net een ballennet',\n", - " 'wij vallen op, en jullie vallen net, vallen net, vallen net',\n", - " 'ik en nnelgy stoppen niet met drinken als we op een dag die gouden bekers vinden',\n", - " 'dan moet je opeens niet mee gaan willen, als ik naar mn huis rij van 9 millie',\n", - " 'you know, ik ben bekend, maar raak nooit gewend aan al die bands (bands, bands, bands)',\n", - " \"fok met m'n mans, en dan laat de club achter net als de the sand\",\n", - " 'all of a sudden vinden ze me handsome',\n", - " 'want nnelgy die die get the bands up',\n", - " 'nnelgy die die get the bands up, bands up, ey',\n", - " 'all of a sudden vinden ze me handsome',\n", - " 'want nnelgy die die get the bands up',\n", - " 'nnelgy die die get the bands up, bands up, ey',\n", - " 'op de radio is een kuikentje',\n", - " 'op de radio is een kuikentje',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'op de radio is ook een kip',\n", - " 'op de radio is ook een kip',\n", - " 'en de kip toktok',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'op de radio is ook een haan',\n", - " 'op de radio is ook een haan',\n", - " 'en de haan kukeleku',\n", - " 'en de kip toktok',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'op de radio is een kalkoen',\n", - " 'op de radio is een kalkoen',\n", - " 'en de kalkoen kloekloekloek',\n", - " 'en de haan kukeleku',\n", - " 'en de kip toktok',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'op de radio is een tamme duif',\n", - " 'op de radio is een tamme duif',\n", - " 'en de duif roekoe',\n", - " 'en de kalkoen kloekloekloek',\n", - " 'en de haan kukeleku',\n", - " 'en de kip toktok',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'op de radio is ook een kat',\n", - " 'op de radio is ook een kat',\n", - " 'en de kat miauw',\n", - " 'en de duif roekoe',\n", - " 'en de kalkoen kloekloekloek',\n", - " 'en de haan kukeleku',\n", - " 'en de kip toktok',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'op de radio is een grote hond',\n", - " 'op de radio is een grote hond',\n", - " 'en de hond woef woef',\n", - " 'de kat miauw',\n", - " 'en de duif roekoe',\n", - " 'en de kalkoen kloekloekloek',\n", - " 'en de haan kukeleku',\n", - " 'en de kip toktok',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'op de radio is ook een geit',\n", - " 'op de radio is ook een geit',\n", - " 'en de geit mèèè',\n", - " 'en de hond woef woef',\n", - " 'en de kat miauw',\n", - " 'en de duif roekoe',\n", - " 'en de kalkoen kloekloekloek',\n", - " 'en de haan kukeleku',\n", - " 'en de kip toktok',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'op de radio is een lammetje',\n", - " 'op de radio is een lammetje',\n", - " 'en t lam bèèè',\n", - " 'de geit mèèè',\n", - " 'de hond woef woef',\n", - " 'en de kat miauw',\n", - " 'en de duif roekoe',\n", - " 'en de kalkoen kloekloekloek',\n", - " 'en de haan kukeleku',\n", - " 'en de kip toktok',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'op de radio is een ook een koe',\n", - " 'op de radio is een ook een koe',\n", - " 'en de koe moeeh',\n", - " \"'t lam bèèè\",\n", - " 'de geit mèèè',\n", - " 'de hond woef woef',\n", - " 'de kat miauw',\n", - " 'en de duif roekoe',\n", - " 'en de kalkoen kloekloekloek',\n", - " 'en de haan kukeleku',\n", - " 'en de kip toktok',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'op de radio is een ook een stier',\n", - " 'op de radio is een ook een stier',\n", - " 'en de stier boeeh',\n", - " 'de koe moeeh',\n", - " \"'t lam bèèè\",\n", - " 'de geit mèèè',\n", - " 'de hond woef woef',\n", - " 'en de kat miauw',\n", - " 'en de duif roekoe',\n", - " 'en de kalkoen kloekloekloek',\n", - " 'en de haan kukeleku',\n", - " 'en de kip toktok',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'en het kuiken piep',\n", - " 'op de radio is een ook een tractor',\n", - " 'op de radio is een ook een tractor',\n", - " 'en de tractor broem',\n", - " 'de tractor broem',\n", - " 'de tractor broem',\n", - " 'en het kuiken',\n", - " 'oh oh!',\n", - " 'okee, okee, okee, we gaan beginnen',\n", - " 'alle jongens en meiden, zijn we er klaar voor?',\n", - " \"chicko's en chicka's\",\n", - " 'laat je truitjes zakken',\n", - " 'we gaan een beetje herrie maken',\n", - " 'laat je horen',\n", - " 'unos, dos, tres, quatro',\n", - " 'hey, hey baby',\n", - " 'uhh, ahh, i wanna know...',\n", - " 'if you be my girl',\n", - " '...two, three, four, five, six, seven, eight',\n", - " 'hey, hey baby',\n", - " 'uhh, ahh, i wanna know...',\n", - " 'if you be my girl',\n", - " 'want jij bent een vrouw',\n", - " 'waar ik zo van hou',\n", - " 'ik ben stapelgek op jou',\n", - " 'en als je wilt, ben ik je man',\n", - " 'ik zing zo hard als ik zingen kan',\n", - " 'ik zeg:',\n", - " 'hey, hey baby',\n", - " 'uhh, ahh, i wanna know...',\n", - " 'if you be my girl (come on! come on! one, two, unos!)',\n", - " 'hey, hey baby',\n", - " 'uhh, ahh, i wanna know...',\n", - " 'if you be my girl',\n", - " 'jij maakt me veel te dol',\n", - " \"en brengt m'n hoofd op hol\",\n", - " 'jij maakt het veel te bont',\n", - " 'als jij draait met je lekkere kont',\n", - " 'hey, hey baby',\n", - " 'uhh, ahh, i wanna know...',\n", - " 'if you be my girl (zwierezwaaien kontje draaien)',\n", - " 'uh, uh',\n", - " 'hey, hey baby (uh, uh - uh, uh)',\n", - " 'uhh, ahh, i wanna know...',\n", - " \"if you be my girl (come on! come on! met z'n allen!)\",\n", - " 'hey, hey baby',\n", - " 'uhh, ahh, i wanna know...',\n", - " 'if you be my girl (we gaan beuken!)',\n", - " 'hey, hey baby',\n", - " 'uhh, ahh, i wanna know...',\n", - " 'if you be my girl',\n", - " 'one, two, three, four, five, six, seven, eight',\n", - " '(come on! come on! come on!)',\n", - " 'hey, hey baby',\n", - " 'uhh, ahh, i wanna know...',\n", - " 'if you be my girl',\n", - " '(okee, okee, laat je lekker gaan)',\n", - " '(uh, uh)',\n", - " 'hey, hey baby (uh, uh - uh, uh)',\n", - " 'uhh, ahh, i wanna know...',\n", - " 'if you be my girl',\n", - " '... two three four five six seven eight',\n", - " '(come on! come on! oh yeah!)',\n", - " 'hey, hey baby',\n", - " 'uhh, ahh, i wanna know...',\n", - " 'if you',\n", - " 'dit is geen test',\n", - " 'het is te hopen dat je het allemaal gehad hebt',\n", - " '’t feestje met de familie',\n", - " 'veel plezier in’t kot',\n", - " 'dit is geen test',\n", - " 'geniet van uw laaste uren',\n", - " 'kalmte voor de storm',\n", - " 'donkere wolken overal',\n", - " 'het is te hopen dat je er veel aan gehad hebt',\n", - " 'want dit is uw laatste …',\n", - " 'geloof mij maar want',\n", - " 'dit want is geen test',\n", - " 'duisternis overal',\n", - " 'preparing for war citizens are running',\n", - " 'gas masks for everyone restrain yourself',\n", - " 'retaliation',\n", - " 'ce nest plus un test',\n", - " 'pas le moment de regretter',\n", - " \"ils t'ont bien appris\",\n", - " \"a devoir l'accepter\",\n", - " 'ce nest plus un test',\n", - " 'affronte cette realite',\n", - " 'le ciel te menace',\n", - " 'la pluie acide va tomber',\n", - " 'duisternis overal',\n", - " 'preparing for war citizens are running',\n", - " 'gas masks for everyone restrain yourself',\n", - " 'strike keeps going on',\n", - " 'another bomb is dropping undergrund silos',\n", - " 'this is not a test',\n", - " 'retaliation complication',\n", - " 'retaliation destruction',\n", - " 'preparing for war citizens are running',\n", - " 'gas masks for everyone restrain yourself',\n", - " 'strike keeps going on',\n", - " 'another bomb is dropping undergrund silos',\n", - " 'this is not a test',\n", - " 'refrein:',\n", - " 'wieder zin detox danny en de dirks',\n", - " 'we zin de slichtste showband van ol de six',\n", - " 'we zingn shalilala shalishalilala',\n", - " 'sukerboin baby pandabear koala',\n", - " 'wieder zin detox danny en de dirks',\n", - " 'we zin de slichtste showband van ol de six',\n", - " 'we zingn shalilala shalishalilala',\n", - " 'chocola baby discobar banana',\n", - " 'merci daw ier mochtn speeln vanaavnd',\n", - " 'tis toopn daj der iets aan oat',\n", - " 'wan tis te slotte over u dat goat',\n", - " 'en daj content noar us meug goan',\n", - " 'der is ol zever genoeg rondom us',\n", - " 'vanavnd trektju da nie an',\n", - " 'verget nu wek je kind en jenne vint',\n", - " \"wan ier zien danny en de man'n\",\n", - " 'refrein:',\n", - " 'wieder zin detox danny en de dirks',\n", - " 'we zin de slichtste showband van ol de six',\n", - " 'we zingn shalilala shalishalilala',\n", - " 'sukerboin baby pandabear koala',\n", - " 'wieder zin detox danny en de dirks',\n", - " 'we zin de slichtste showband van ol de six',\n", - " 'we zingn shalilala shalishalilala',\n", - " 'chocola baby discobar banana',\n", - " 'we schrievn ieder weke songs vor eur',\n", - " 'wuk vondjer tot nu toe ol van',\n", - " 'en van de cirque int algemeen vannacht',\n", - " 'ajt goe vond klapt in under an',\n", - " 'twee dirks en jene danny in e band',\n", - " 'tope gezet vo u plezier',\n", - " 'mar et plezier is hjeel an uzne kant',\n", - " 'da is teminste ip papier',\n", - " 'refrein:',\n", - " 'wieder zin detox danny en de dirks',\n", - " 'we zin de slichtste showband van ol de six',\n", - " 'we zingn shalilala shalishalilala',\n", - " 'sukerboin baby pandabear koala',\n", - " 'wieder zin detox danny en de dirks',\n", - " 'we zin de slichtste showband van ol de six',\n", - " 'we zingn shalilala shalishalilala',\n", - " 'chocola baby discobar banana',\n", - " 'de meiskes zin ier skwone en de vintn interessant',\n", - " 'der is oltied e kanse daj in oes kot beland',\n", - " 'wen nog noois zuk goe publiek get lik ier vanavnd in u dorp',\n", - " 'en wen pertanks ovrols gewist',\n", - " 'van sint-eloois-winkel toet in dworp',\n", - " 'van sint-eloois-winkel toet in dworp',\n", - " 'aha',\n", - " 'refrein:',\n", - " 'wieder zin detox danny en de dirks',\n", - " 'we zin de slichtste showband van ol de six',\n", - " 'we zingn shalilala shalishalilala',\n", - " 'sukerboin baby pandabear koala',\n", - " 'wieder zin detox danny en de dirks',\n", - " 'we zin de slichtste showband van ol de six',\n", - " 'we zingn shalilala shalishalilala',\n", - " 'chocola baby',\n", - " 'sukerboin baby chocola baby',\n", - " 'pandabear koala discobar banana',\n", - " 'onze koffer staan gepakt - joh',\n", - " 'we zijn er klaar voor here we go',\n", - " 'van new york naar tokio - ho',\n", - " 'langs parijs, sidney en zo',\n", - " 'we zien de coolste, hipste dingen',\n", - " 'we doen musea, winkels, clubs',\n", - " 'in rio gaan we lekker swingen',\n", - " 'dansein in kingston de rubberclub',\n", - " 'sunsamba - soulsalsa',\n", - " 'boogie woogie - wangbanga bang',\n", - " 'sunsamba - cha cha cha',\n", - " 'round the world we go',\n", - " 'sunsamba jo',\n", - " 'sunsamba - sunsamba',\n", - " 'sunsamba - sunsamba',\n", - " 'van chicago naar barcelona',\n", - " 'van helsinki naar berlijn',\n", - " 'kopenhagen dan santiago',\n", - " 'rome, londen en turijn',\n", - " \"soms met de bus, dan weer in taxi's\",\n", - " 'vliegtuig op en treintje af',\n", - " 'eerst saint tropez en dan naar nice toe',\n", - " 'wie wil er mee - wie roept er bis',\n", - " 'sunsamba - soulsalsa',\n", - " 'boogie woogie - wangbanga bang',\n", - " 'sunsamba - cha cha cha',\n", - " 'round the world we go',\n", - " 'sunsamba jo',\n", - " 'sunsamba - sunsamba',\n", - " 'sunsamba - sunsamba',\n", - " 'sunsamba - soulsalsa',\n", - " 'boogie woogie - wangbanga bang',\n", - " 'boogie woogie - wangbanga bang',\n", - " 'boogie woogie - wangbanga bang',\n", - " 'sunsamba - cha cha cha',\n", - " 'round the world we go',\n", - " 'sunsamba jo',\n", - " 'sunsamba - sunsamba',\n", - " 'sunsamba - sunsamba',\n", - " 'mhm yeah',\n", - " 'yeah yeah yeah',\n", - " 'say it’s kesh and i’m back with another one yeah',\n", - " 'niemand kan begrijpen wat ik nu voor je voel',\n", - " 'niemand kan beseffen wat ik voor je zou doen',\n", - " 'want er is niemand niemand just like you',\n", - " 'niemand niemand just like you',\n", - " 'er is niemand niemand',\n", - " 'nee er is niemand niemand',\n", - " 'cause you the only one i want',\n", - " 'you the only one i need',\n", - " 'je bent de enigste voor mij, yeah yeah',\n", - " 'you the only one i want',\n", - " 'you the only one i need',\n", - " 'alleen jij alleen jij',\n", - " 'oh isabella',\n", - " 'waar ga je heen',\n", - " 'als je wilt dan kom ik mee',\n", - " 'ga niet alleen',\n", - " 'oh isabella',\n", - " 'waar ga je heen',\n", - " 'want we zijn hier met zen twee',\n", - " 'ga niet alleen',\n", - " 'oh isabella',\n", - " 'ik speel geen games',\n", - " 'wat ik voel voor jou is real',\n", - " 'ik laat je zien',\n", - " 'want ik kijk alleen naar jou',\n", - " 'en wat ik voel',\n", - " 'voel ik enkel maar voor jou',\n", - " 'alleen voor jou',\n", - " 'niemand kan begrijpen wat ik nu voor je voel',\n", - " 'niemand kan beseffen wat ik voor je zou doen',\n", - " 'want er is niemand niemand just like you',\n", - " 'niemand niemand just like you',\n", - " 'er is niemand niemand',\n", - " 'nee er is niemand niemand',\n", - " 'cause you the only one i want',\n", - " 'you the only one i need',\n", - " 'je bent de enigste voor mij, yeah yeah',\n", - " 'you the only one i want',\n", - " 'you the only one i need',\n", - " 'alleen jij alleen jij',\n", - " 'oh isabella',\n", - " 'waar ga je heen',\n", - " 'als je wilt dan kom ik mee',\n", - " 'ga niet alleen',\n", - " 'oh isabella',\n", - " 'waar ga je heen',\n", - " 'want we zijn hier met zen twee',\n", - " 'ga niet alleen',\n", - " 'there’s only one fine girl like you',\n", - " 'there’s only one fine girl i need',\n", - " 'want er is niemand niemand just like you',\n", - " 'niemand niemand just like you',\n", - " 'oh isabel oh isabel oh isa oh isa',\n", - " 'oh isabella',\n", - " 'waar ga je heen',\n", - " 'als je wilt dan kom ik mee',\n", - " 'ga niet alleen',\n", - " 'oh isabella',\n", - " 'waar ga je heen',\n", - " 'want we zijn hier met zen twee',\n", - " 'ga niet alleen',\n", - " 'ga niet alleen',\n", - " 'ga niet alleen',\n", - " 'ga niet alleen',\n", - " 'say say',\n", - " 'it’s kesh and i’m back with another one',\n", - " 'it’s kesh and i’m back with another one yeah',\n", - " 'kesh',\n", - " 'wilhelmus van nassouwe',\n", - " 'ben ik, van duitsen bloed',\n", - " 'den vaderland getrouwe',\n", - " 'blijf ik tot in den dood',\n", - " 'een prinse van oranje',\n", - " 'ben ik, vrij onverveerd',\n", - " 'den koning van hispanje',\n", - " 'heb ik altijd geëerd',\n", - " \"we're gonna take you higher, higher\",\n", - " \"tonight's the night for kings and queens\",\n", - " 'ooohhoo',\n", - " 'come on and relight my fire, fire',\n", - " \"let's burn the roof with evergreens\",\n", - " 'ooh!',\n", - " 'take me baby make me higher, higher',\n", - " 'in a kingdom full of energy',\n", - " 'ooohhoo',\n", - " 'this royal party is my desire, desire',\n", - " 'we all have the same chemistry',\n", - " 'oohh!',\n", - " 'come on, enjoy it! and shout it out!',\n", - " \"we're going higher, from north to south\",\n", - " 'here in this kingdom, the whole night long',\n", - " 'we need each other to sing this song',\n", - " \"we're gonna take you higher, higher\",\n", - " 'tonight is the night for kings and queens',\n", - " 'oohhoo',\n", - " 'come on and relight my fire, fire',\n", - " \"let's brun the roof with evergreens\",\n", - " 'ohhooo',\n", - " 'we rock the nation, with kings and queens',\n", - " \"this celebration, it's a brand new scene\",\n", - " 'we join the party, hip hip hooray',\n", - " 'this new sensation, let the music play',\n", - " 'take me baby, take me higher, higher',\n", - " 'in a kingdom full of energy',\n", - " 'oohhoo',\n", - " 'this royal party is my desire, desire',\n", - " 'we all have the same chemistry, ooohho',\n", - " 'er lag een briefje',\n", - " 'op de keukentafel',\n", - " \"'ik kan niet leven van de wind\",\n", - " \"ciao.'\",\n", - " 'overal in huis',\n", - " 'open deuren',\n", - " 'lege kasten',\n", - " 'op de grond een foto',\n", - " 'van de mensen die wij waren',\n", - " 'dear dear mr. singer',\n", - " 'please sing me a song',\n", - " 'about beauty',\n", - " 'and everything perfect',\n", - " 'please sing me that song',\n", - " 'sign on the window',\n", - " 'says lonely',\n", - " 'sign on the door',\n", - " 'no company allowed',\n", - " 'overal in huis liggen schoenendozen',\n", - " 'op de radio klassiek',\n", - " 'in de wc een bos gedroogde rozen',\n", - " 'uit alle kamers komt paniek',\n", - " 'dear dear mr singer',\n", - " 'please sing me a song',\n", - " 'about beauty and everything',\n", - " 'perfect',\n", - " 'please sing me that song',\n", - " 'sign on the window',\n", - " 'says lonely',\n", - " 'sign on the door',\n", - " 'no company allowed',\n", - " 'ladies and gentleman, this is the big moment we all been waiting for',\n", - " 'i know you gonna dig this',\n", - " 'laat de dag voorbij gaan',\n", - " 'recht door de nacht naar de show',\n", - " 'dus kijk aan wie daar is',\n", - " 'badda boem badda bing',\n", - " 'een kwestie van meer jaren ervaring dan jij ja',\n", - " 'bijna zo goed op mij na',\n", - " 'de bijnaam niet voor niets de ideale schoonzoon',\n", - " 'zo`n gewoon ook',\n", - " 'hoger niveau sowieso',\n", - " 'maar ook zo bereikbaar',\n", - " 'kijk is geef je die leuke feitjes',\n", - " 'de rapper nummer 1 maar dan zonder nikies',\n", - " 'ik denk dat het nu wel tijd is',\n", - " 'dus geef me die mic is hier',\n", - " 'ik zie ze dansen, (dansen eh)',\n", - " 'en ik denk waar gaat het heen',\n", - " 'zoveel veranderd, (anderd eh)',\n", - " 'en waar ben ik al die tijd geweest',\n", - " 'dat weet ik niet maar iedereen zegt',\n", - " 'links rechts start hem op',\n", - " 'al mijn mensen gooi je handen op',\n", - " \"we say left right can't survive\",\n", - " 'you know we all love in the house tonight',\n", - " 'rechts links start hem op',\n", - " 'zo lang door tot de zon op komt',\n", - " 'we say right left mind your head and keep the party moving to the sunset',\n", - " '(oh)',\n", - " 'what happend diggy dex and wudstik',\n", - " 'we chillen skiggy rapz en big2 we doen dit',\n", - " 'voel je me aan we halen old school tourism op',\n", - " \"ik ken de d.a.c. rhymes nog uit m'n kop\",\n", - " 'big2 de grote man van de oppo groot geworden',\n", - " 'vroeger was ie te klein nu te dope voor woorden',\n", - " 'ik wil met mijn skiggy op msn',\n", - " 'en zei mijn rap binnen nederlands ben the man',\n", - " 'goddamn, we zijn veranderd 16 jaar',\n", - " 'alleen mijn haar is nu anders',\n", - " 'kleine inham, zij heb een pikram',\n", - " 'dus wat wat, disco shows we gaan elke stad af',\n", - " 'beetje van de map af',\n", - " 'zoo met die popariele flow werk door voor monsterrap-pen woord voor woord mee yess',\n", - " 'het is grappig om te zien dat er is wat er is',\n", - " 'links rechts start hem op',\n", - " 'al mijn mensen gooi je handen op',\n", - " \"we say left right can't survive\",\n", - " 'you know we all love in the house tonight',\n", - " 'rechts links start hem op',\n", - " 'zo lang door tot de zon op komt',\n", - " 'we say right left mind your head and keep the party moving to the sunset',\n", - " 'come through bass and its so amazing',\n", - " 'we give you the flavor that is your favorite',\n", - " 'and we arrange your ways and change it',\n", - " 'man we redecorate your whole behavoir',\n", - " 'the beat is up, off the heezie',\n", - " 'excuise me for the weezle',\n", - " 'thats easy peasy',\n", - " \"believe me i'm pleased to please this feast\",\n", - " \"and put peace in the scene with these 3 mc's\",\n", - " 'freeze, i hand out remove it, i rock it with my man and his name is wudstik',\n", - " 'of course you all know who is the rest of the crew',\n", - " 'skiggy diggy and biggie 2',\n", - " 'come on',\n", - " 'ik zie ze dansen, (dansen eh)',\n", - " 'en ik denk waar gaat het heen',\n", - " 'zoveel veranderd, (anderd eh)',\n", - " 'en waar ben ik al die tijd geweest',\n", - " 'dat weet ik niet maar iedereen zegt',\n", - " 'links rechts start hem op',\n", - " 'al mijn mensen gooi je handen op',\n", - " \"we say left right can't survive\",\n", - " 'you know we all love in the house tonight',\n", - " 'rechts links start hem op',\n", - " 'zo lang door tot de zon op komt',\n", - " 'we say right left mind your head and keep the party moving to the sunset',\n", - " '(oh)',\n", - " 'i know you gonna dig this',\n", - " 'check it out',\n", - " 'check check',\n", - " 'check check it out',\n", - " 'check check it out',\n", - " 'check check it out',\n", - " 'check it check it check it check it',\n", - " 'check it out',\n", - " 'hard pants, fashion pants, magic pants, fancy pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants',\n", - " 'housebroek, driekwart, corduroy, denim',\n", - " 'ik heb korte, lange, dunne, dikke, nieuwe, ouwe broeken',\n", - " 'nep behaarde, echte namaak slangenleren fashion pants',\n", - " 'housebroek, driekwart, corduroy, denim',\n", - " 'ik heb korte, lange, dunne, dikke, nieuwe, ouwe broeken',\n", - " 'nep behaarde, echte namaak slangenleren fashion pants',\n", - " 'dockers, khaki’s, acne, wrangler, lee, sugar canes',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", - " 'ruitjes, streepjes, stonewash, bleek, dure pijpen',\n", - " 'kledingsfaffie, elite pak niet, joggy’s tot de knieën',\n", - " 'zakken links, zakken rechts, rits die pijp eraf',\n", - " 'zakken links, zakken rechts, rits die pijp eraf',\n", - " 'stippen, smily’s, vlekken ketchup op mijn fashion pants',\n", - " 'verfstrepen, slijtplekken op mijn hard pants',\n", - " 'toverstafjes, sterren, stof in mijn magic pants',\n", - " 'bravoure attitude in mijn fancy pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", - " 'stippen, smily’s, vlekken ketchup op mijn fashion pants',\n", - " 'verfstrepen, slijtplekken op mijn hard pants',\n", - " 'toverstafjes, sterren, stof in mijn magic pants',\n", - " 'bravoure attitude in mijn fancy pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, international pants',\n", - " 'hard pants, fashion pants, magic pants, fancy pants, universal pants',\n", - " 'yeah, yeah, yeah, yeaaah',\n", - " 'kom naar de auto, yeah, van die faberge en neem je dames mee',\n", - " 'munda thoda offbeat hai',\n", - " 'par kudiyan de naal bahut sweet hai',\n", - " 'munda thoda offbeat hai',\n", - " 'par kudiyan de naal bahut sweet hai',\n", - " 'dhongi sa yeh bada dheeth hai',\n", - " 'viral ho gaya yeh tweet',\n", - " 'par fool wool karne mein cool',\n", - " 'tu badi tezz kataari hai',\n", - " 'shagan teri ki, lagan teri ki',\n", - " 'humne kardi tayaari hai',\n", - " 'nachde ne saare ral milke',\n", - " 'aaj hil dulke le saare ke saare nazare',\n", - " 'nachde ne saare ral milke',\n", - " 'aaj hil dulke le saare ke saare nazare',\n", - " 'khasma nu khaane!',\n", - " 'hadipa ... hadipa ... hadipa ... hadipa',\n", - " 'alu bade karaare',\n", - " 'karam na laalu bade karaare ... aa ha',\n", - " 'chadh chadhke chaubaare',\n", - " 'karam naal sweetu aaja maare ... aa ha',\n", - " 'alu bade karaare',\n", - " 'karam na laalu bade karaare ... aa ha',\n", - " 'chadh chadhke chaubaare',\n", - " 'karam naal sweetu aaja maare ... aa ha',\n", - " 'chak de!',\n", - " 'munde plenty mere lai ho gaye senti',\n", - " 'o tere lai ho gaye senti, tere lai ho gaye senti',\n", - " 'tere liye main set hoon, is baat ki guarantee',\n", - " 'par fool-wool karne mein cool, tu badi tezz kataari hai',\n", - " 'sehra baandh ke, kood faand, tujhe le jaana is baari hai',\n", - " 'nachde ne saare ral milke',\n", - " 'aaj hil dulke le saare ke saare nazare',\n", - " 'nachde ne saare ral milke',\n", - " 'aaj hil dulke le saare ke saare nazare',\n", - " 'khasma nu khaane!',\n", - " 'zor-zorse shor-wor kar, dj gaane bajaane aa',\n", - " 'ruthde-ruthde jeeja phuphad',\n", - " 'zor-zorse shor-wor kar, dj gaane bajaane aa',\n", - " 'ruthde-ruthde jeeja phuphad',\n", - " 'humne saare manane haan',\n", - " 'par fool wool karne mein cool',\n", - " 'tu badi tezz kataari hai',\n", - " 'shagan teri ki, lagan teri ki',\n", - " 'humne kardi tayaari hai',\n", - " 'nachde ne saare, nachde ne saare',\n", - " 'nachde ne saare ral milke',\n", - " 'aaj hil dulke le saare ke saare nazare',\n", - " 'nachde ne saare ral milke',\n", - " 'aaj hil dulke le saare ke saare nazare',\n", - " 'nachde ne saare, nachde ne saare',\n", - " 'khasma nu khaane!',\n", - " 'priapus',\n", - " 'omnia',\n", - " 'irumare, pedicare',\n", - " 'priapus, mentula, cunnus',\n", - " 'obscenis peream priape',\n", - " 'si non uti me pudet in probisque probris',\n", - " 'ed cum tu posito deus pudore',\n", - " 'ostendas mihi coleos patentes',\n", - " 'cum cunno mihi mentula est vocanda',\n", - " 'headfucking, assfucking',\n", - " 'priapus, prick, cunt',\n", - " 'for dirty words, using dirty language',\n", - " 'damn it priapus, i am ashamed',\n", - " 'but when i see you, god, standing shamelessly',\n", - " 'proudly presenting your big balls',\n", - " \"then words like 'cunt' and 'prick' pop into my head\",\n", - " 'hoofdneuken, kontneuken',\n", - " 'priapus, lul, kut',\n", - " 'voor vieze woorden, vuile taal uitslaan',\n", - " 'verdomd priapus, daarvoor schaam ik mij',\n", - " 'maar zie ik jou, god, daar schaamteloos staan',\n", - " 'pronkend met trots ontblote kloten',\n", - " \"dan komen woorden als 'kut' en 'lul' bij mij naar boven\",\n", - " 'na re, na re.. na re, na re..',\n", - " 'nana na re na re',\n", - " 'na re, na re',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'barso re megha megha',\n", - " 'barso re megha megha',\n", - " 'barso re megha barso',\n", - " 'barso re megha megha',\n", - " 'barso re megha megha',\n", - " 'barso re megha barso',\n", - " 'meetha hai kosa hai, barish ka bosa hai',\n", - " 'bosa hai, kosa hai, barish ka bosa hai',\n", - " 'meetha hai kosa hai, barish ka bosa hai',\n", - " 'bosa hai, kosa hai, barish ka bosa hai',\n", - " 'jal jal jal jal jal jal thal jal thal',\n", - " 'chal chal chal chal chal chal chal bheta chal',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'barso re..',\n", - " 'barso re megha',\n", - " 'barso re megha megha',\n", - " 'barso re megha barso..',\n", - " 'gile gile gile haan..',\n", - " 'haan haan haan haan..',\n", - " 'haan haan haan haan..',\n", - " 'geeli geeli maati',\n", - " 'geeli maati ke chal gharonde banyange re',\n", - " 'hari bhari ambi, ambi ki daali',\n", - " 'milke jhule jhulaayenge re haan..',\n", - " 'dhan, baiju, ghaj ne hal jote sabne',\n", - " 'bailon ki ghanti baji',\n", - " 'aur taale lage bharne',\n", - " 're tair ke chali, main to paar chali',\n", - " 're tair ke chali, main to paar chali',\n", - " 'paar waale par le ke naar chali re megha',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'kali kali raatein',\n", - " 'kali raaton mein',\n", - " 'yeh badarwa baras jaayega',\n", - " 'gali gali mujhko megha doondhega',\n", - " 'aur garaj ke palat jaayega',\n", - " 'ghar aagan, aganaa aur pani ka jharna',\n", - " 'bhool na jana mujhe sab poochhenge warna',\n", - " 're beh ke chali, main to beh ke chali',\n", - " 're keh ke chali, main to keh ke chali re megha',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'nana re, nana re, nana re, na na re',\n", - " 'nana re.. nana re.. nana re..',\n", - " 'na re na re na re na re na re',\n", - " \"sjeet 's op, 't weurt allein mer later\",\n", - " \"sjeet 's op, drek koume veer te laat\",\n", - " 'nei nei nei',\n", - " \"loer dao steit 'ne vespa zoonder sloot\",\n", - " 'kump dat eve good oet',\n", - " \"loer dao steit 'ne vespa zoonder sloot\",\n", - " 'pak deen tèllefoon en',\n", - " 'bel lando, bel lando en nico en jos, en jos',\n", - " 'veer koume get later',\n", - " 'bel lando, bel lando en nico en jos, en jos',\n", - " 'veer koume get later',\n", - " \"biste kraank, of höbste 'ne kater\",\n", - " 'bleijfste toes get zitte op de baank',\n", - " 'nei nei nei',\n", - " \"loer dao steit 'ne vespa zoonder sloot\",\n", - " 'kump dat eve good oet',\n", - " \"loer dao steit 'ne vespa zoonder sloot\",\n", - " 'pak deen tèllefoon en',\n", - " 'bel lando, bel lando en nico en jos, en jos',\n", - " 'veer koume get later',\n", - " 'bel lando, bel lando en nico en jos, en jos',\n", - " 'veer koume get later',\n", - " \"suddenly i'm flying, flying high in the sky\",\n", - " 'i can feel that i can catch the moon',\n", - " \"the wind whispers you're gonna be here soon\",\n", - " 'eshghe man, to hamooni ke age baa man bemooni',\n", - " ...]},\n", - " 'data': ['we hebben een h, een a, een n, een s, een t, een e, hebben we nog een e, een u, een w, een e en een n',\n", - " 'hebben we hans teeuwen, yeah',\n", - " 'ik ben hans teeuwen, ik ben hans teeuwen',\n", - " 'ik ben hans teeuwen, de koning van de lach',\n", - " 'ik ben hans teeuwen, ik ben hans teeuwen',\n", - " 'ja, ja, hans teeuwen, de koning van de lach',\n", - " 'hansje teeuwen, hansje teeuwen',\n", - " 'hansje teeuwen, de koning van de lach',\n", - " 'hansje teeuwen ayay yay yay, yay yay',\n", - " 'hansje teeuwen ayay yay yay',\n", - " 'wij zijn samen onderweg met hans teeuwen',\n", - " 'wij zijn samen onderweg met hans teeuwen',\n", - " 'hij is de koning van de lach, e viva hans teeuwen',\n", - " 'kleine kokette hans teeuwen, kijk nog is een-...',\n", - " 'hans teeuwen was trompetter in het leger van de prins, hij was -...',\n", - " 'hans teeuwen koning van de lach',\n", - " 'hans teeuwen is over the ocean, ha-...',\n", - " 'woooo hans teeuwen, bamalam',\n", - " 'woooo hans teeuwen, bamalam',\n", - " \"ik ben hans teeuwen, it's all in me\",\n", - " 'once, twice, three times hans teeuwen',\n", - " 'i just called to say hans teeuwen',\n", - " \"if there's something's strange in the neighbourhood\",\n", - " \"who you're gonna call?\",\n", - " 'hans teeuwen',\n", - " 'hans teeuwen, hans teeuwen, i love you hans teeuwen',\n", - " \"you're only a day away\",\n", - " 'hans teeuwen, hans teeuwen, i love you hans teeuwen',\n", - " \"you're only a day away\",\n", - " 'oooh hans teeuwen je bent de koning van de lach',\n", - " 'hans teeuwen, oh hans teeuwen',\n", - " 'ik ben hans teeuwen, my friend',\n", - " 'ik ben hans teeuwen, ik ben hans teeuwen',\n", - " 'ik ben hans teeuwen, de koning',\n", - " 'hans teeuwen',\n", - " 'van de lach',\n", - " \"you don't have to be rich to be my girl\",\n", - " \"you don't have to be cool to rule my world\",\n", - " \"ain't no particular sign\",\n", - " \"i'm more compatible with\",\n", - " 'i just want your extra time and your',\n", - " 'hans teeuwen',\n", - " 'ik kan nergens heen',\n", - " 'maar in het zuiden wacht een vrouw nog steeds op mij alleen',\n", - " 'ze heeft flessen vol tequila en flessen vol gin',\n", - " \"en dan neem ik m'n gitaar mee en m'n gouden ring\",\n", - " 'er zijn vliegtuigstoelen, miljoenen bijbedoelingen',\n", - " 'en bovendien zijn er limousines',\n", - " 'en er zijn leugens over sterren die we toch nooit zien',\n", - " 'misschien neem ik spanje als besluit',\n", - " \"laat m'n schepen achter\",\n", - " 'ik ga er stiekem tussenuit',\n", - " 'een vluchtweg naar een nieuw begin',\n", - " 'well, hop on my choo-choo',\n", - " \"i'll be your engine driver in a bunny suit\",\n", - " 'if you dress me up in pink and white',\n", - " 'we may be just a little fuzzy, talk about it later tonight',\n", - " \"she's my angel, she's a little better than the one that used to be with me\",\n", - " \"'cause she liked to scream at me\",\n", - " \"man, it's a miracle that's she's not living up in a tree\",\n", - " 'i may take a holiday in spain',\n", - " 'leave my wings behind me',\n", - " 'drive this little girl insane',\n", - " 'and fly away to someone new',\n", - " \"everybody's gone\",\n", - " \"they left the television screaming that the radio's on\",\n", - " \"m'n schoenen zijn gejat\",\n", - " 'maar ik hoef niet meer naar buiten, want er is nog wel wat',\n", - " \"well, happy new year's, baby\",\n", - " 'we could probably fix it, if we clean it up all day',\n", - " 'or we could simply pack our bags',\n", - " 'en gaan meteen naar barcelona, want we moeten hier weg',\n", - " 'misschien neem ik spanje als besluit',\n", - " \"(making the best of all that's left to me)\",\n", - " \"laat m'n schepen achter\",\n", - " 'ik ga er stiekem tussenuit',\n", - " '(all the lies she said just seem te break me in two)',\n", - " 'een vluchtweg naar een nieuw begin',\n", - " 'ik neem als spanje als besluit',\n", - " '(most of the time rewinding the lines)',\n", - " \"en laat m'n schepen achter\",\n", - " 'ik ga er stiekem tussenuit',\n", - " \"(i'm taking a day to get out of the way)\",\n", - " 'een vluchtweg naar een nieuw begin',\n", - " '(making my way back home to you again)',\n", - " 'geef me de tijd om te redden wie ik ben',\n", - " '(all of the lines she said)',\n", - " 'dagen vertragen, tot ze stoppen en stilstaan',\n", - " '(i am taking a day to get out of the way)',\n", - " 'geef me de tijd om mezelf terug te vinden',\n", - " '(making my way back home to you again)',\n", - " 'ik maak alles goed met wat er over blijft',\n", - " 'all of the lines she said',\n", - " 'owee oweeoooo',\n", - " 'zwaai een been omhoog, een arm opzij',\n", - " 'maak een pirouhette laat je dromen vrij',\n", - " 'swing je heupen los kom en rek je uit',\n", - " 'spring een gat in de lucht, maak een apengek geluid',\n", - " 'oembagoembawabbababba doe je jungle move',\n", - " 'oembagoembawabbababba feel the groove',\n", - " 'fun fun fun doe de funky monkey',\n", - " 'owee oweeoooo',\n", - " 'fun fun fun doe de funky monkey',\n", - " 'doe de funky monkey',\n", - " 'oe oe oe oe...',\n", - " 'voel je ook die beat, knetterkierewiet',\n", - " 'doe de beestiggekke dans en je weet nie wat je ziet',\n", - " 'zet de wereld op zijn kop doewadoewop',\n", - " 'ja we gaan ervoor zeg maar hop hop hop',\n", - " 'oembagoembawabbababba doe je jungle move',\n", - " 'oembagoembawabbababba feel the groove',\n", - " '(feel the groove)',\n", - " 'fun fun fun doe de funky monkey',\n", - " 'owee oweeoooo',\n", - " 'fun fun fun doe de funky monkey',\n", - " 'doe de funky monkey',\n", - " 'oe oe oe oe...',\n", - " 'fun fun fun doe de funky monkey',\n", - " 'owee oweeoooo',\n", - " 'fun fun fun doe de funky monkey',\n", - " 'doe de funky monkey',\n", - " 'funky monkey (funky monkey) funky monkey (funky monkey)',\n", - " 'owee oweeoooo',\n", - " 'owee oweeoooo',\n", - " 'oembagoembawabbababba doe je jungle move',\n", - " 'oembagoembawabbababba feel the groove',\n", - " 'fun fun fun doe de funky monkey',\n", - " 'owee oweeoooo',\n", - " 'fun fun fun doe de funky monkey',\n", - " 'doe de funky monkey',\n", - " '(doe de funky monkey)',\n", - " 'fun fun fun doe de funky monkey',\n", - " 'owee oweeoooo',\n", - " 'fun fun fun doe de funky monkey',\n", - " 'doe de funky monkey',\n", - " 'oe oe oe oe...',\n", - " 'doe de funky monkey',\n", - " '(the person who wrote this has serious problems)',\n", - " 'satigur kar deenai',\n", - " 'satigur kar deenai',\n", - " 'asthir ghar baar',\n", - " 'asthir ghar baar',\n", - " 'satigur kar deenai',\n", - " 'satigur kar deenai',\n", - " 'asthir ghar baar',\n", - " 'asthir ghar baar',\n", - " 'jo, jo nind karai in grihan kee',\n", - " 'jo, jo nind karai in grihan kee',\n", - " 'tis aagai hee maarai kartaar',\n", - " 'tis aagai hee maarai kartaar',\n", - " 'jo, jo nind karai in grihan kee',\n", - " 'jo, jo nind karai in grihan kee',\n", - " 'tis aagai hee maarai kartaar',\n", - " 'tis aagai hee maarai kartaar',\n", - " 'kartaar',\n", - " 'kartaar',\n", - " 'angel divine',\n", - " 'angel of mine',\n", - " 'this humble prayer',\n", - " 'i offer at your feet',\n", - " 'keep this home',\n", - " 'safe and warm',\n", - " 'all through the night',\n", - " 'for your beloved children',\n", - " 'all through the night',\n", - " 'all through the night',\n", - " 'satigur kar deenai',\n", - " 'satigur kar deenai',\n", - " 'asthir ghar baar',\n", - " 'asthir ghar baar',\n", - " 'satigur kar deenai',\n", - " 'satigur kar deenai',\n", - " 'asthir ghar baar',\n", - " 'asthir ghar baar',\n", - " 'nanak daas taa kee saranaa-ee',\n", - " 'nanak daas taa kee saranaa-ee',\n", - " 'jaa ko shabad akhand apaar',\n", - " 'jaa ko shabad akhand apaar',\n", - " 'nanak daas taa kee saranaa-ee',\n", - " 'nanak daas taa kee saranaa-ee',\n", - " 'jaa ko shabad akhand apaar',\n", - " 'jaa ko shabad akhand apaar',\n", - " 'apaar',\n", - " 'apaar',\n", - " 'angel divine',\n", - " 'angel of mine',\n", - " 'thus humble prayer',\n", - " 'i offer at your feet',\n", - " 'keep this home',\n", - " 'safe and warm',\n", - " 'all through the night',\n", - " 'hold your beloved children',\n", - " 'night',\n", - " 'all through the night',\n", - " 'all through the night',\n", - " 'all through the night',\n", - " 'all through the night',\n", - " 'all through the night',\n", - " 'all through the night',\n", - " 'all through the night',\n", - " 'all through the night',\n", - " 'satigur kar deenai',\n", - " 'satigur kar deenai',\n", - " 'asthir ghar baar',\n", - " 'asthir ghar baar',\n", - " 'satigur',\n", - " 'satigur',\n", - " 'satigur',\n", - " 'yaar de viah ch kabba ban gya si scene',\n", - " 'do din di lagdi ae zindagi rangeen (x2)',\n", - " 'kahda mode naal moda keh gaya',\n", - " 'oh meri jaan kad ke lai gayi',\n", - " 'sorry keh gayi roon wargi',\n", - " 'jatt di sari peeti lai gayi (x2)',\n", - " 'hunn uthde behnde nu rehnde',\n", - " 'ohde khyaal sataunde',\n", - " 'bhang peeti hove jyon eddan',\n", - " 'rehnde chakkar aunde (x2)',\n", - " '(rehnde chakkar aunde)',\n", - " 'jatt de dial ghuma gayi oh',\n", - " 'nakhron jodan de vich beh gayi',\n", - " '(beh gayi)',\n", - " 'sorry keh gayi roon wargi',\n", - " 'jatt di sari piti lai gayi (x2)',\n", - " 'kise pind di lagdi na',\n", - " 'na hi shehar kise di jaape',\n", - " 'lagdi ambron uttri ae',\n", - " 'jatt nu paye jihne siyape (x2)',\n", - " 'dil taan kad ke le gayi oh',\n", - " 'kalli dhadkan palle reh gayi',\n", - " 'sorry keh gayi roon wargi',\n", - " 'jatt di sari peeti lai gayi (x2)',\n", - " 'patni jugtan naal pari',\n", - " 'main vi botal di sonh kha li',\n", - " 'jehdi nakhre kardi si',\n", - " 'jatt ne mud mud takkan laa layi (x2)',\n", - " 'rab ne mel kara ditte',\n", - " 'shivjot nu love you keh gyi',\n", - " 'sorry keh gayi roon wargi',\n", - " 'jatt di sari peeti lai gayi (x2)',\n", - " 'eh, wa ? , poesie !',\n", - " 'moemoemoemoemoemoemoe',\n", - " 'eh, wa ? , poesie !',\n", - " 'moemoemoemoemoemoemoe',\n", - " 'la la la la la la la la la la la',\n", - " 'la la la la la la la la la la la',\n", - " 'de selle, de jo, altijd stoned',\n", - " 'de selle, de jo, constant meurg',\n", - " 'de selle, de jo, altijd coco',\n", - " 'de selle, de selle en de jo',\n", - " 'la la ....',\n", - " 'de selle, de jo, altijd stoned',\n", - " 'de selle, de jo, constant meurg',\n", - " 'de selle, de jo, weed en grass',\n", - " 'de selle, de jo, flippen op jazz',\n", - " 'here we go now ...',\n", - " 'oh, when the selle and the jo they go go cococo',\n", - " 'yeah, when the selle and the jo go go cococo',\n", - " \"they're realy flipping\",\n", - " \"and they don't know where they gogogo\",\n", - " 'hey jij!',\n", - " 'het is werner de walvis',\n", - " 'de walvis met watervrees',\n", - " 'hey you!',\n", - " \"it's werner the whale\",\n", - " 'the whale with a fear of water',\n", - " 'hey jij!',\n", - " 'het is werner de walvis',\n", - " 'de walvis met watervrees',\n", - " 'aflevering 1',\n", - " 'wulfar foraan',\n", - " 'i den silvaern manens luiht',\n", - " 'stjernar faran',\n", - " 'want wulfar iduur wouden briht',\n", - " 'wulfarweijd',\n", - " 'bluout fuër lejven',\n", - " 'bluout fuër alleaen lidan daan',\n", - " 'loufa fuër dijn heil',\n", - " 'louf zo ras en wijd jej kant',\n", - " 'wulfar foraan',\n", - " 'i den helder stjernar luiht',\n", - " 'ruolfar jehoschua',\n", - " 'zowan wulf dijn sjeler briht',\n", - " 'wulfarweijd',\n", - " 'bluout fuër lejven',\n", - " 'bluout fuër alleaen lidan daan',\n", - " 'loufa fuër dijn heil',\n", - " 'louf zo ras en wijd jej kant',\n", - " 'frontwards my wolves',\n", - " 'amidst a silvern moon’s light',\n", - " 'stars are falling',\n", - " 'when the wolfs breaks through the holt',\n", - " 'wolfhunting',\n", - " 'blood for life',\n", - " 'blood for all harm that was done',\n", - " 'run for your salvation',\n", - " 'run as fast and far as you can',\n", - " 'frontwards my wolves',\n", - " 'amidst the bright star’s light',\n", - " 'call for jehoschua',\n", - " 'when the wolf shatters your soul',\n", - " 'wolfhunting',\n", - " 'blood for life',\n", - " 'blood for all harm that was done',\n", - " 'run for your salvation',\n", - " 'run as fast and far as you can',\n", - " 'ooh la la, give me rumba mambo chacha',\n", - " 'aah ya ye, at the boya boya bay',\n", - " 'ooh la la, we are dancing in the moonlight',\n", - " 'aah ya ya, let us party all night',\n", - " 'baila baila, chickachickachicka aah',\n", - " 'baila baila amore, chickachickachicka aah',\n", - " 'baila baila, baila baila',\n", - " 'biala baila amore',\n", - " 'hij is superduper (superduper)',\n", - " 'kijk hem eens gaan',\n", - " 'ooh wat een kanjer (wauw)',\n", - " 'hoe heb jij dat gedaan (gewoon)',\n", - " 'wil je wat drinken (wanna drink)',\n", - " 'vroeg ik heel cool',\n", - " 'hij heette pedro (hey)',\n", - " 'zijn ogen zo zwoel',\n", - " 'ooh la la, give me rumba mambo chacha',\n", - " 'aah ya ye, at the boya boya bay',\n", - " 'ooh la la, we are dancing in the moonlight',\n", - " 'aah ya ya, let us party all night',\n", - " '(fiesta)',\n", - " 'baila baila, chickachickachicka aah',\n", - " 'baila baila amore',\n", - " 'kom op vertel ons',\n", - " 'was het net als tv (nou)',\n", - " 'heeft hij je gekust (smak)',\n", - " 'die avond aan zee',\n", - " 'in mijn bikini (ienimini)',\n", - " 'zolang gewacht',\n", - " 'precies wat ik wil (zo chill)',\n", - " 'die zoen in de nacht (aah)',\n", - " 'ooh la la, give me rumba mambo chacha',\n", - " 'aah ya ye, at the boya boya bay',\n", - " 'ooh la la, we are dancing in the moonlight',\n", - " 'aah ya ya, let us party all night',\n", - " 'baila baila, chickachickachicka aah',\n", - " 'baila baila amore',\n", - " 'ooh la la, oh wat zit het soms tegen',\n", - " 'ooh la la, denk ik gewoon weer aan jou',\n", - " 'ooh la la, ik zal het nooit meer vergeten',\n", - " 'ooh la la, heel die zomer met jou aan de zee',\n", - " 'ooh la la, give me rumba mambo chacha',\n", - " 'aah ya ye, at the boya boya bay',\n", - " 'ooh la la, we are dancing in the moonlight',\n", - " 'aah ya ya, let us party all night',\n", - " 'baila baila, chickachickachicka aah',\n", - " 'baila baila amore, chickachickachicka aah',\n", - " 'baila baila, baila baila',\n", - " 'baila baila amore',\n", - " \"'t is het donker wat je roept\",\n", - " 'naar waar men alle hoop laat varen',\n", - " 'nammtar wijst de weg naar de koningin en de hare',\n", - " \"ver weg van 't leven... gevoel voor vrede vergeten\",\n", - " 'vecht voor ereshkigal en de kroon van de absu',\n", - " 'dat al het licht vergaat naar nacht',\n", - " \"waar sterren zwijgen en zwart 't oog bindt\",\n", - " \"dood is daar eender met 't grimmige heden\",\n", - " 'vecht voor ereshkigal en de kroon van de absu',\n", - " 'dat al het licht vergaat naar nacht zonder einde',\n", - " 'dingir xul! peta babkama luruba anaku!',\n", - " 'ina qabal girru! ati me peta babka!',\n", - " 'ana harrani sa alaktasa la tarat!',\n", - " 'zi anna kanpa! zi kia kanpa!',\n", - " 'zi dingir kingu kanpa!',\n", - " 'zi dingir nammtar kanpa!',\n", - " 'usella mituti ikkalu baltuti!',\n", - " \"eli baltuti ima'idu mituti!\",\n", - " 'translation for the sumerian language part:',\n", - " 'dingir xul! open the gate for me so that i can enter here!',\n", - " 'in the middle of fire! gatekeeper, open your gate for me!',\n", - " 'road whose course does not turn back!',\n", - " 'spirit of the sky, remember! spirit of the earth, remember!',\n", - " 'spirit god of great emissary, remember!',\n", - " 'spirit god nammtar, remember!',\n", - " 'raise up the dead here consuming the living',\n", - " 'dead will be more numerous than the living',\n", - " \"songtekst van kisses - kisses & dancin'\",\n", - " 'kisses',\n", - " 'oh, let’s go',\n", - " 'heb je je week niet of je dag niet',\n", - " 'en gaat het even niet zoals je wilde',\n", - " 'wij weten hoe je weer de zon ziet',\n", - " 'en dit gevoel zo de wereld rondvliegt',\n", - " 'je weet niet, niet precies wat je doen moet',\n", - " 'je weet niet, niet precies, maar het voelt goed',\n", - " 'je weet niet, niet precies wat je doen moet',\n", - " 'hey world, get up and dance',\n", - " 'whoa-oh, whoa-oh',\n", - " 'kisses and dancin’',\n", - " 'kisses and dancin’ *(clap clap)*',\n", - " 'whoa-oh whoa-oh',\n", - " 'kisses and dancin’',\n", - " 'kisses and dancin’ *(clap clap)*',\n", - " 'c’mon, c’mon, dance, hey',\n", - " 'c’mon, c’mon, move your body',\n", - " 'c’mon, c’mon, dance, hey',\n", - " 'kisses',\n", - " 'iedereen in alle landen (let’s go)',\n", - " 'dans op die beat',\n", - " 'kom op en klap die handen *clap clap*',\n", - " 'want dit gevoel maakt alles anders (what)',\n", - " 'in drie seconden is je mood veranderd',\n", - " 'je weet niet, niet precies wat je doen moet',\n", - " 'je weet niet, niet precies, maar het voelt goed',\n", - " 'je weet niet, niet precies wat je doen moet',\n", - " 'hey world, get up and dance',\n", - " 'whoa-oh, whoa-oh',\n", - " 'kisses and dancin’',\n", - " 'kisses and dancin’ *(clap clap)*',\n", - " 'whoa-oh whoa-oh',\n", - " 'kisses and dancin’',\n", - " 'kisses and dancin’ *(clap clap)*',\n", - " 'c’mon, c’mon, dance, hey',\n", - " 'c’mon, c’mon, move your body',\n", - " 'c’mon, c’mon, dance, hey',\n", - " 'kisses',\n", - " 'kom op, we dansen rustig aan',\n", - " 'en denk er niet te veel bij na',\n", - " 'hey world, get up and dance',\n", - " 'get up and dance',\n", - " '(tu-tu-turn it up)',\n", - " 'whoa-oh, whoa-oh',\n", - " 'kisses and dancin’',\n", - " 'kisses and dancin’ *(clap clap)*',\n", - " 'whoa-oh whoa-oh',\n", - " 'kisses and dancin’',\n", - " 'kisses and dancin’ *(clap clap)*',\n", - " 'c’mon, c’mon, dance, hey',\n", - " 'c’mon, c’mon, move your body',\n", - " 'c’mon, c’mon, dance, hey',\n", - " 'kisses',\n", - " 'c’mon, c’mon, dance, hey',\n", - " 'c’mon, c’mon, move your body',\n", - " 'c’mon, c’mon, dance, hey',\n", - " 'kisses',\n", - " 'shake your body, do the move',\n", - " 'voel het ritme van de groove',\n", - " 'swing maar met ons mee',\n", - " \"da's de funky monkey, da's ok\",\n", - " 'let it flow to the beat',\n", - " 'beweeg je body feel the beat',\n", - " \"don't ever stop\",\n", - " \"zet de wereld op z'n kop\",\n", - " 'tsjakke tsjakke boem boem',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'dzjing doet de drum',\n", - " 'de beat zit in je feet',\n", - " 'de tsjakke boem boem beat',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'dzjing doet de drum',\n", - " 'de beat zit in je feet',\n", - " 'tsjakke boem',\n", - " 'tsjakke boem boem beat',\n", - " 'laat je gaan',\n", - " 'blijf niet staan',\n", - " 'kom naar voor',\n", - " 'en doe je ding',\n", - " 'we fuiven tot de zon opkomt',\n", - " \"komaan let's go\",\n", - " 'swing that thing',\n", - " 'let it flow - do the beat',\n", - " 'beweeg je body - feel the heat',\n", - " \"don't ever stop\",\n", - " \"zet de wereld op z'n kop\",\n", - " 'tsjakke tsjakke boem boem',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'dzjing doet de drum',\n", - " 'de beat zit in je feet',\n", - " 'de tsjakke boem boem beat',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'dzjing doet de drum',\n", - " 'de beat zit in je feet',\n", - " 'tsjakke boem',\n", - " 'tsjakke boem boem beat',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'dzjing doet de drum',\n", - " 'de beat zit in je feet',\n", - " 'de tsjakke boem boem beat',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'dzjing doet de drum',\n", - " 'de beat zit in je feet',\n", - " 'tsjakke boem',\n", - " 'tsjakke boem boem beat',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'dzjing doet de drum',\n", - " 'de beat zit in je feet',\n", - " 'de tsjakke boem boem beat',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'dzjing doet de drum',\n", - " 'de beat zit in je feet',\n", - " 'tsjakke boem',\n", - " 'tsjakke boem boem beat',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'tsjakke tsjakke boem boem',\n", - " 'd',\n", - " 'guarda fuori e gia mattina',\n", - " 'questo e un giorno che ricorderai',\n", - " 'alzati in fretta e vai',\n", - " \"c'e chi crede in te non ti arrendere\",\n", - " '(luister naar de zon, hij roept je naam',\n", - " 'dit is jouw moment, dus ga nu maar staan',\n", - " \"en wees niet bang voor 't licht dat je voelt op je gezicht\",\n", - " \"'t is echt bedoeld voor jou)\",\n", - " 'like stars across the sky',\n", - " 'e per avvincere tu dovrai vincere',\n", - " '(we were born to shine',\n", - " 'all of us here because we believe)',\n", - " 'once in every life there comes a time',\n", - " '(we walk out on our own and into the light)',\n", - " \"the moment won't last, but then we remember it again\",\n", - " '(when we close our eyes)',\n", - " '(like stars across the sky)',\n", - " 'e per avvincere tu divrai vincere',\n", - " '(we were born to shine',\n", - " 'all of us here because we believe)',\n", - " '(non arrenderti qualcuno e con te)',\n", - " '(like stars across the sky',\n", - " 'we were born to shine)',\n", - " 'e per avvincere (dovrai vincere)',\n", - " 'e allora vincerai (e allora vincerai)',\n", - " 'chanda suraj laakhon taare hain jab tere hi yeh saare',\n", - " 'kis baat par hothi hai phir thakraarein',\n", - " 'keenchi hai lakkeere is jameen pe par na keencho dekho',\n", - " 'beech mein do dilon ke yeh deewaarein',\n", - " 'duniya mein kahin bhi, dard se koyi bhi',\n", - " 'duniya mein kahin bhi, dard se koyi bhi',\n", - " 'thadpe to humko yahan pe',\n", - " 'ehsaas uske zakhmon ka ho ke',\n", - " 'apna bhi dil bhar bhar aaye roye aankhein',\n", - " 'what are u waiting for another day another talk',\n", - " 'somewhere we have to find a new way to peace',\n", - " 'what are you waiting for another sign another call',\n", - " 'somewhere we have to find a new way to peace!',\n", - " 'doori kyon dilon mein rahe faasle kyon badhte rahe',\n", - " 'pyaari hai zindagi hai pyaara jahaan',\n", - " 'rishte badi mushkilon se',\n", - " 'bante hai yahaan pe lekin',\n", - " 'tootne ke liye bas ek hi lamha',\n", - " 'ishq dava hai har ek dard ki',\n", - " 'zanjeer ishq hai har ek rishte ki',\n", - " 'ishq saari hadhon ko tod daale',\n", - " 'ishq to duniya ko pal mein mita bhi de',\n", - " 'ishq hai jo saare jahaan ko aman bhi de',\n", - " 'ronaq ishq se hai saare aalam ki',\n", - " 'chanda suraj laakhon taare hain jab tere hi yeh saare',\n", - " 'kis baat par hothi hai phir thakraarein',\n", - " 'keenchi hai lakkeere is jameen pe par na keencho dekho',\n", - " 'beech mein do dilon ke yeh deewaarein',\n", - " 'duniya mein kahin bhi, dard se koyi bhi',\n", - " 'duniya mein kahin bhi, dard se koyi bhi',\n", - " 'thadpe to humko yahan pe',\n", - " 'ehsaas uske zakhmon ka ho ke',\n", - " 'apna bhi dil bhar bhar aaye roye aankhein',\n", - " 'what are u waiting for',\n", - " 'ja ik zie je lopen en je',\n", - " 'shaked, shaked met je heupen',\n", - " 'oh yeah',\n", - " 'nee ik kan het niet geloven',\n", - " '(she is such a beauty queen)',\n", - " 'girl i wanna get to know you ja je',\n", - " 'bent het meisje van mijn dromen en ik',\n", - " 'verlies me in je ogen',\n", - " '(this is like a movie scene)',\n", - " \"don't keep me waiting\",\n", - " 'it drives me crazy',\n", - " 'oh was je maar van mij',\n", - " \"you'r a sidewalk supermodel ohohoh\",\n", - " 'ja de straat is je catwalk baby ohohoh',\n", - " \"and i can't get you out of my mind\",\n", - " 'when you smile, you make it shine bright',\n", - " 'de hele stad lijkt een movie poster ohohoh',\n", - " \"cause you'r a sidewalk supermodel ohohoh ohoh\",\n", - " 'nananananananana',\n", - " 'nananananananana',\n", - " 'je houd van dolce & gabana en ook',\n", - " 'gucci en prada ja je',\n", - " 'bent zo onweerstaanbaar',\n", - " \"(yeah you got me burnin' up)\",\n", - " 'girl i wanna know you better dus loop',\n", - " 'nu niet zomaar verder heb nog',\n", - " 'zoveel dingen te zeggen',\n", - " '(got the word all linin up)',\n", - " \"don't keep me waiting\",\n", - " 'it drives me crazy',\n", - " 'oh was je maar van mij',\n", - " \"you'r a sidewalk supermodel ohohoh\",\n", - " 'ja de straat is je catwalk baby ohohoh',\n", - " \"and i can't get you out of my mind\",\n", - " 'when you smile, you make it shine bright',\n", - " 'de hele stad lijkt een movie poster ohohoh',\n", - " \"cause you'r a sidewalk supermodel ohohoh ohoh\",\n", - " 'ja jij bent toch ieders type',\n", - " \"i see you walkin' down my street\",\n", - " 'en ik hoop dat jij me ziet',\n", - " 'cause you are the girl for me',\n", - " '(you are the girl for me)',\n", - " \"you'r a sidewalk supermodel\",\n", - " 'ja de straat is je catwalk baby',\n", - " 'ohohoh',\n", - " \"you'r a sidewalk supermodel ohohoh\",\n", - " 'ja de straat is je catwalk baby ohohoh',\n", - " \"and i can't get you out of my mind\",\n", - " 'when you smile, you make it shine bright',\n", - " 'de hele stad lijkt een movie poster ohohoh',\n", - " \"cause you'r a sidewalk supermodel ohohoh ohoh\",\n", - " 'nananananananana',\n", - " 'nananananananana',\n", - " 'rollerskaten langs de boulevard',\n", - " 'hotdogs eten non stop',\n", - " 'alle hotspots zoeken op de kaart',\n", - " 'i love to shop till i drop',\n", - " 'in miami, hollywood',\n", - " 'waar alles kan en niets moet',\n", - " 'en iedereen die durft te dromen',\n", - " 'wil maar een ding doen',\n", - " 'refrein',\n", - " 'living in the u u u u s a a a',\n", - " \"super xxl, it's the way\",\n", - " 'de sterren van de t t v die je om je heen',\n", - " 'glamour life, life, wish i could stay',\n", - " 'cause i love to be',\n", - " 'the american dream',\n", - " 'in the u.s.a a a',\n", - " 'in the u.s.a a a',\n", - " 'alles groter dan in nederland',\n", - " 'gebouwen super sky high',\n", - " 'altijd zon en zee de hele dag',\n", - " 'ze zeggen; hello, good morning, bye bye',\n", - " 'in miami, hollywood',\n", - " 'waar alles kan en niets moet',\n", - " 'en iedereen die durft te dromen',\n", - " 'wil maar een ding doen',\n", - " 'refrein',\n", - " 'ey ey ey, volg die droom',\n", - " 'ga met me mee naar de u.s.a',\n", - " 'all the way, take that plane',\n", - " \"don't explain, just fly away\",\n", - " \"hoofd in de wolken, it's okay (uh huh)\",\n", - " 'wanna make it in l.a. (uh huh)',\n", - " 'ga het maken, just maintain',\n", - " 'ga erheen en doe je ding',\n", - " 'try to live the american dream',\n", - " \"someday, someway, i'm gonna make it happen\",\n", - " \"someday, someway, we're gonna make it happen\",\n", - " 'refrein',\n", - " 'cause i love to be',\n", - " 'the american dream',\n", - " 'in the u.s.a a a',\n", - " 'in the u.s.a a a',\n", - " 'in the u.s.a a a',\n", - " 'in the u.s.a a a',\n", - " 'in ieder land, in elke stad, de scene die groeit actief',\n", - " \"als je ziek bent van de disco, dan is hier 't alternatief\",\n", - " 'hard, wij gaan hard, dit komt rechtstreeks uit het hart',\n", - " 'het vuurt dat brandt, de motor draait, ja de race die is gestart',\n", - " '(archi)',\n", - " \"hier geht's um ideale, um leidenschaft und wut\",\n", - " 'was wir fühlen ist grenzenlos aber ami-punk ist auch ganz gut',\n", - " '(olly)',\n", - " 'se sei stanco di barriere, puoi contare su di noi',\n", - " 'se vuoi vivere una scena, per convincerti che puoi',\n", - " 'euronoise is all we wanna play',\n", - " 'spread it out from spain to greece up to the uk!',\n", - " 'euronoise is all we wanna play',\n", - " 'save the bullshit for tomorrow, unite tonight, we say',\n", - " \"ik brul, ik roep, ik schreeuw, de longen uit m'n lijf\",\n", - " 'ik spring, ik dans, ik feest, ga als een kogel richting schijf',\n", - " '(pierre)',\n", - " \"c'est le même message, message d'humanité\",\n", - " 'sans chichis sans filet, sans domages ni intérêsts',\n", - " '(ingo)',\n", - " 'wir brauchen keine grenzen, komm, reiss die mauern ein',\n", - " 'wir brauchen deinen mittelfinger, es geht nicht allein!',\n", - " '(nwo)',\n", - " 'en el este, en el oeste, al norte y al sur',\n", - " 'toda europa está cantando, sólo faltas tú',\n", - " 'euronoise is all we wanna play',\n", - " 'spread it out from spain to greece up to the uk!',\n", - " 'euronoise is all we wanna play',\n", - " 'save the bullshit for tomorrow, unite tonight, we say',\n", - " 'euronoise is all we wanna play',\n", - " 'spread it out from spain to greece up to the uk!',\n", - " 'euronoise is all we wanna play',\n", - " 'save the bullshit for tomorrow, unite tonight, we say',\n", - " 'euronoise is all we wanna play',\n", - " 'we speak a different language but our spirit is the same',\n", - " 'euronoise is all we wanna play',\n", - " 'spread it out from spain to greece up to the uk!']},\n", - " 'rap': {'meta': {'train_data': ['bghatou howa (bghatou howa), bghaha hya (bghaha hya)',\n", - " 'bghatou 3la flousso 3lach bghato howa (bghatou howa)',\n", - " '3endha 7fari zine 3lach bghah hya (bghaha hya)',\n", - " 'bghatou howa, bghaha hya',\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'sakna weediane f me9ha chicha f kolla weekend',\n", - " \"b diplome dyal l7ila9a, dart l'golf seven\",\n", - " 'fati-fleur f dar ch9a slat wel imane',\n", - " 'mgabla ayi moussalsal 3tiha li kan, eh!',\n", - " 'li kan, wja3 trab w hdidan',\n", - " 'weediane samra f reception 3la rajel ta yban',\n", - " '3endha toula, l7emha byed w sderha mgoufel',\n", - " 'l3inine kbar w salef twil, li chafha ybourech',\n", - " 'bghaha serbay fel 7lal, galtlo la la mjou3ef',\n", - " 'bghaha 3essas galtlo, man9derch n3ich f koukhek',\n", - " '3arfa b 7e9 ryal sa3oudi kter men zoure9',\n", - " 'ga3 li b9a 7adi f weediane kaysbe7 mjouneb',\n", - " 'fati-fleur mgabla ghir l7oufa wel mdareb',\n", - " 'bghat rajel metdiyen, ma taydkhelch l darou chareb',\n", - " 'shahrukh khan 7afdalou fati-fleur ga3 les paroles',\n", - " 'weediane 7afda ghir habibi barcelouni',\n", - " 'ga3 li ja men sahara oujada wella el haouz',\n", - " 'noud wgaf mgadd l jed bouk, l jed bouk',\n", - " '3zel l7efra li bghit 3ad deggo, 3ad deggo',\n", - " \"dir l9wam w de9 f'dar b rendez-vous\",\n", - " \"de9 f'dar b rendez-vous\",\n", - " 'jib l7aja w di m3ak 9aleb d sekkar',\n", - " \"de9 f'dar b rendez-vous\",\n", - " \"jib l'famila w di khatem sawi ness dar\",\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'weediane mgabla ghir lwlad w di3an',\n", - " '3endha l i7sas 9wi te3ref skhi men ji3an',\n", - " '3chirha smiyto ali kniyto moul porsche cayenne',\n", - " 'hya garna f moul maserati rayan',\n", - " 'khouha, l fati-fleur ch3erha ghir b drour wel 7izam',\n", - " 'taw9it sla f dem, ma zagla 7ta chi mi3ad',\n", - " 'ah dogourdya 3arfa denya mti7an',\n", - " 'katsenna w9ita l3cha godam telfaza tne9i zeljlan (zeljlan)',\n", - " 'weediane khouha sghir kollo fchouch (kollo fchouch)',\n", - " \"wakha mchomya gadda techri l'khouha play\",\n", - " \"fati-fleur tal3a menha ri7t l'oum\",\n", - " 'weediane tal3a menha ri7t calvin klein',\n", - " 'weediane bghatou 3ayech w tayfertek fel mlayn',\n", - " 'lilt sda9 temchi l turkia ga3 ma bagha tsayn',\n", - " 'ga3 ma gadda tsenna 7ta ydir sidi rebbi tawil',\n", - " 'bghat sac louis v machi d swi9a fake',\n", - " 'ga3 li ja men doukkala rif wella souss',\n", - " 'noud wgaf mgadd l jed bouk, l jed bouk',\n", - " '3zel l7efra li bghit 3ad deggo, 3ad deggo',\n", - " \"dir l9wam w de9 f'dar b rendez-vous\",\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'bghit, fati-fleur fel 7lal fuck weediane',\n", - " 'fuck weediane, eh!',\n", - " 'fuck weediane, eh!',\n", - " 'love weed yeah, lo-love lo-love weed yeah',\n", - " 'love weed yeah!',\n", - " 'songtekst van idaly – \"birthday\" ft. emms',\n", - " 'yeah, now go girl, het is je birthday',\n", - " 'go girl, het is je birthday',\n", - " 'go girl, het is je birthday',\n", - " 'en now go girl, girl, girl',\n", - " 'baby girl, kom en go low (uh, ey)',\n", - " 'in de back of the club, waarom sta je daar solo?',\n", - " \"ey shawty, back it up mo', live life like yolo (ey, ey, ja)\",\n", - " 'ik heb funds op de bank en ik spend het like kojo',\n", - " 'je weet ik ben loco, yeah, yeah',\n", - " 'je weet ik ben icy (icy, uh, yeah)',\n", - " 'en ze valt in love, in love, als ze mij ziet',\n", - " 'back it up voor me, oh shawty, laat mij zien',\n", - " 'ey, ja, shawty wat jij kan, ja, ja',\n", - " 'ey, ja, ik wil het al lang, ja, ja, ho',\n", - " \"ey, ja, pa-party's startin' it, like yeah\",\n", - " \"champagne poppin' it, like yeah\",\n", - " \"shit ik ben ballin', money keep fallin', tot in de mornin' hier, oh yeah\",\n", - " \"party's startin' it, like yeah\",\n", - " \"champagne poppin' it, like yeah\",\n", - " \"shit ik ben ballin', money keep fallin', tot in de mornin' hier, oh yeah\",\n", - " 'yeah, now go girl, het is je birthday',\n", - " 'go girl, het is je birthday',\n", - " 'go girl, het is je birthday',\n", - " 'en now go girl, girl, girl, girl',\n", - " 'go girl, het is je birthday',\n", - " 'go girl, het is je birthday',\n", - " 'go girl, het is je birthday',\n", - " 'en now go girl, girl, girl, girl',\n", - " \"we're more than friends\",\n", - " 'jij weet dat ik er voor je ben',\n", - " 'champagne wat ik voor je schenk, yay',\n", - " 'wij doen die, wij doen die shoulder dance, ey, shoulder dance',\n", - " \"al m'n mannen zijn netjes\",\n", - " \"wij zijn de shelby's, check die baretjes\",\n", - " 'ey, bitch, we gaan hard (oh, yeah)',\n", - " 'ey, bitch, we gaan hard (okay)',\n", - " \"fles in m'n mond, je zag hoe ik stond, ik ben apart (rosé)\",\n", - " \"o-omin bbg's in m'n face, sistah\",\n", - " 'oh, ik kan die wijven lezen, ik weet is té',\n", - " 'baby, baby, payday, we gaan bewegen, is te',\n", - " \"o-omin bbg's in m'n face, sistah\",\n", - " 'oh, ik kan die wijven lezen, ik weet is té',\n", - " 'baby, baby, payday, we gaan bewegen, is te',\n", - " 'yeah, now go girl, het is je birthday',\n", - " 'go girl, het is je birthday',\n", - " 'go girl, het is je birthday',\n", - " 'en now go girl, girl, girl, girl',\n", - " 'go girl, het is je birthday',\n", - " 'go girl, het is je birthday',\n", - " 'go girl, het is je birthday',\n", - " 'en now go girl, girl, girl, girl',\n", - " 'ja julle naaiers',\n", - " 'jikijela die nommer',\n", - " 'die wat nie duidelik is nie sal duidelik kom',\n", - " 'g-boy, maak vol',\n", - " \"please don't take me for a poes\",\n", - " \"please don't take me for a poes\",\n", - " 'i was in my business being cool',\n", - " 'now, look what the fuck you made me do',\n", - " \"please don't take me for a poes\",\n", - " \"please don't take me for a poes\",\n", - " 'i was in my business being cool',\n", - " 'now, look what the fuck you made me do',\n", - " \"i don't really care about a naai\",\n", - " \"don't understand why they say that, i keep me kwaai\",\n", - " 'i was smoking pype with the i',\n", - " \"he gave me some fuckin' good advice\",\n", - " '\"don\\'t let nobody take you for a naai\"',\n", - " 'for two hours, i was staring at my knife',\n", - " 'why you had to make me take your life?',\n", - " 'fuck with me, verniet, you pay the price',\n", - " \"please don't take me for a poes\",\n", - " \"please don't take me for a poes\",\n", - " 'i was in my business being cool',\n", - " 'now, look what the fuck you made me do',\n", - " 'i',\n", - " \"i don't know why naaiers try till they die\",\n", - " \"i'm not a naai\",\n", - " \"you won't see a poes if you look in my eyes\",\n", - " \"don't vang n pain\",\n", - " \"don't vang n pain for me\",\n", - " \"put yourself at fuckin' ease\",\n", - " \"don't vang n pain for me\",\n", - " 'bloed het saloet, my broe',\n", - " \"maybe don't fuck with me, you gonna lose, my broe\",\n", - " 'die nommer bou, my broe',\n", - " 'ek breek nie af nie yo ek is die ou, my broe',\n", - " 'wies jy? jou fokken umpata',\n", - " 'vat jy my net vir n laany? jy kannie staan nie',\n", - " 'jy dink dat jy kan maar jy kannie, miniete nagaani',\n", - " 'jys n fokken moegoe jy val in jou boots, my broe',\n", - " 'gaan op jou knee en sê jys n poes, my broe',\n", - " 'jou fokken naaier',\n", - " \"please don't take me for a poes\",\n", - " \"please don't take me for a poes\",\n", - " 'i was in my business being cool',\n", - " 'now, look what the fuck you made me do',\n", - " \"please don't take me for a poes\",\n", - " \"please don't take me for a poes\",\n", - " \"please don't take me for a poes\",\n", - " \"please don't take me for a poes\",\n", - " 'i could kick you round over with the',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'al staan er maar een paar man, of honderden',\n", - " 'ik zet je zaal op zijn kop',\n", - " 'vind mezelf hard, dus ja daar hamer ik op',\n", - " 'en niet zachtjes aan, maar zo zachtjes aan als ik dig',\n", - " 'man, ik kom altijd aan als een speer',\n", - " 'oh my god, yo, here we go again',\n", - " 'geen mediocre act brengt hitte voor de fans',\n", - " 'heb liefde voor de craft,',\n", - " 'yes, can i get an amen',\n", - " 'en ook de stage presence zie je niet over het hoofd',\n", - " 'loop rond alsof ik verdomme op het podium woon',\n", - " 'engel & just, kom checken of geloof het gewoon',\n", - " 'qua shows sowieso een veel hoger niveau',\n", - " 'just is chilling, engel is chilling',\n", - " 'wat kan ik zeggen, hiphop is in de building',\n", - " 'killing it, kippenvel, shit, ben te ill in dit',\n", - " 'veel van die rappers weten niet wat een is',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'ben een tikkeltje arrogant, zo van “ik heb dit”',\n", - " 'trap de deur in, no biggie, no pun intended',\n", - " 'oh god damn it',\n", - " 'engel & just brengen het hard met wat presto magic',\n", - " \"you can't star in die fucking game (nee)\",\n", - " 'maar wel on-point op ouwe kicks',\n", - " 'als uit pennies van anfernee hardaway',\n", - " '‘t is effe niet anders, alles gaat plat',\n", - " 'want ik haal lappen tekst door de mangel heen',\n", - " 'en ik flex alles met een (kick, snare)',\n", - " 'no problemo, geef me die vijf mics als een d.a.c.-show',\n", - " '(that ol’ boombap) noem me de ambassadeur',\n", - " 'ja, die old-school heads brengen die ambacht terug',\n", - " 'dus aan de kant voor de vakman (just!)',\n", - " 'ik heb ruimte nodig, fuck uit de hoogte, man',\n", - " 'dit is de juiste bodem als een bruine boterham',\n", - " 'was ik niet duidelijk?',\n", - " 'twee keer stampen met je poten',\n", - " 'en met je vuist op een mokusslag',\n", - " '(boom boom bap), tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'kick, snare, tricks and hi-hats',\n", - " 'skilled in the trade of that ol’ boombap',\n", - " 'songtekst van sfb \"don\\'t you know\"',\n", - " 'ey, ey, yeah yeah',\n", - " \"don't you know?\",\n", - " \"don't you know?\",\n", - " \"don't you know?\",\n", - " \"we badder than dey, oh don't you know\",\n", - " \"dit is voor m'n magga's en ook voor de rovers\",\n", - " \"we badder than dey, oh don't you know\",\n", - " 'rij een cla, want ik ben een chauffeur',\n", - " \"we better than they, oh don't you know\",\n", - " 'ja ik sta klaar want ik ben een soldier',\n", - " \"we badder than dey, oh don't you know\",\n", - " 'oh yeah, yeah yeah yeah yeah',\n", - " \"oh don't you know\",\n", - " 'we better than they, oh did you not',\n", - " 'her mommy is in love met a criminal',\n", - " 'rij een cla, want ik ben een chauffeur',\n", - " '(yeah, yeah, yeah)',\n", - " 'zeg me ben je klaar, want dan pull ik over',\n", - " '(yeah, yeah, yeah)',\n", - " \"en ik weet d'r is gevaar, maar ik ben een soldier\",\n", - " 'ik hoor je bent nu klaar, is die shit al over?',\n", - " 'overleefd in santo boma tussen alle cobras',\n", - " '(yeah, yeah, yeah)',\n", - " \"oh, don't you know\",\n", - " 'original ganja farmer, oh',\n", - " 'ik hoor je chick is magga, silly city oh',\n", - " 'zometeen dan ben ik daar, dan pull ik over',\n", - " 'en dan gaan ze weer van \"hug me, hug me\"',\n", - " '\"kiss me, squeeze me\"',\n", - " \"''first they love me, now they wanna diss me''\",\n", - " 'ik kan niet focken met een wasteman',\n", - " \"en free m'n focking nigga jason\",\n", - " \"we badder than dey, oh don't you know\",\n", - " \"dit is voor m'n magga's en ook voor de rovers\",\n", - " \"we badder than dey, oh don't you know\",\n", - " 'rij een cla, want ik ben een chauffeur',\n", - " \"we badder than dey, oh don't you know\",\n", - " 'ja ik sta klaar want ik ben een soldier',\n", - " \"we badder than dey, oh don't you know\",\n", - " 'oh yeah, yeah yeah yeah yeah',\n", - " \"oh don't you know\",\n", - " \"oh don't you know\",\n", - " \"kijk naar m'n chains\",\n", - " 'fully gold',\n", - " 'geef mij die bae',\n", - " 'ben niet meer broke',\n", - " \"of vietnamees, nig' wanna know\",\n", - " 'big man ja, ik ben een big man',\n", - " 'niet onderschatten als ik effe sliep want',\n", - " \"ik ga niet mengen, dus ik hou m'n distance\",\n", - " 'ze willen leunen, maar ik ben geen kickstart',\n", - " 'en als ik pull up in je endz',\n", - " \"dan ben ik met m'n huiswerk als ik pull up in die benz\",\n", - " '(we better than them)',\n", - " 'maar dat is allang bekend',\n", - " 'club shutdown and again and again (shutdown)',\n", - " 'boss wan picca, show love aan een fan',\n", - " \"tatts op m'n arm, show love aan m'n gang\",\n", - " \"one man alone can't bleed for the fam (what)\",\n", - " \"one man alone can't bleed for the fam\",\n", - " \"we badder than dey, oh don't you know\",\n", - " \"dit is voor m'n magga's en ook voor de rovers\",\n", - " \"we badder than dey, oh don't you know\",\n", - " 'rij een cla, want ik ben een chauffeur',\n", - " \"we badder than dey, oh don't you know\",\n", - " 'ja ik sta klaar want ik ben een soldier',\n", - " \"we badder than dey, oh don't you know\",\n", - " 'oh yeah, yeah yeah yeah yeah',\n", - " 'songtekst van ronnie flex – \"batman\" ft. alec petrus & james francis',\n", - " 'batman with his sidekick, sidekick',\n", - " 'shawty can you back it up and let me get inside it',\n", - " '(yeah, yeah)',\n", - " 'batman with his sidekick, sidekick',\n", - " 'shawty can you back it up and let me get inside it',\n", - " '(yeah yeah)',\n", - " 'ooh, turn up',\n", - " \"these money moves wan' make me turn up yah\",\n", - " 'ooh, turn up',\n", - " \"are you ought to see who's a burn up yeah\",\n", - " \"sa passé, used to call me way now i don't know your way\",\n", - " \"olivier, i was so la now i'm so m.i.a\",\n", - " 'oralé, you were so boricua, though, ne parle anglais',\n", - " 'kept my faith, had to tell my',\n", - " 'cause i was going codeine, codeine, codeine since the dilla',\n", - " \"five honeys for sportin' freeroaming two dikes for winner\",\n", - " 'jodein, notra, alphawolf, franco, the villa killa',\n", - " \"can't let it go, can't let it go\",\n", - " 'i might die yeah',\n", - " 'she fall asleep with your d on her mind yeah',\n", - " 'what? she wanna fuck, she say that she wanna fuck',\n", - " \"aha, i know what's up, i'm not gonna let you run 'em up\",\n", - " \"i'm up, bitch i'm corrupt, put my feelings in a cup\",\n", - " 'batman with his sidekick, sidekick',\n", - " 'shawty can you back it up and let me get inside it',\n", - " '(yeah, yeah)',\n", - " 'batman with his sidekick, sidekick',\n", - " 'shawty can you back it up and let me get inside it',\n", - " '(yeah yeah)',\n", - " 'ooh, turn up',\n", - " \"these money moves wan' make me turn up yah\",\n", - " 'ooh, turn up',\n", - " \"are you ought to see who's a burn up yeah\",\n", - " 'ah, ey, panamera, paramaribo je weet ik crash',\n", - " \"paranoia door de drugs ik gooi m'n leven weg\",\n", - " 'ik land als een paratrooper op die ene kech',\n", - " 'ze komt uit paraguay, ik weet ze is op hete seks',\n", - " 'ja, leef het echt maar spend geen doezoe op geen ene fles (ice)',\n", - " 'niggers zagen me op de flyer dus ze bleven weg (yah)',\n", - " 'ik fuck met een paar vloggers maar geen een die rapt (wow)',\n", - " 'goofy nigga praat in lingo maar hij weet niet echt (uh)',\n", - " 'hop uit de limousine ik ben dom rijk (dom rijk)',\n", - " 'niggers trekken aan hun bitch wanneer ze omkijkt (what)',\n", - " 'ik heb twintig grannie haze, dat is ontbijt',\n", - " 'lil flex bitch, wat, ik ben dom rijk (what)',\n", - " 'batman with his sidekick, sidekick',\n", - " 'shawty can you back it up and let me get inside it',\n", - " '(yeah, yeah)',\n", - " 'batman with his sidekick, sidekick',\n", - " 'shawty can you back it up and let me get inside it',\n", - " '(yeah yeah)',\n", - " 'ooh, turn up',\n", - " \"these money moves wan' make me turn up yah\",\n", - " 'ooh, turn up',\n", - " \"are you ought to see who's a burn up yeah\",\n", - " 'songtekst van josylvio – \"paars licht\"',\n", - " 'ey, oeh',\n", - " 'skrr, skrr',\n", - " \"ik wil m'n moeder in een benz zien\",\n", - " \"en m'n vader in een bempie\",\n", - " \"rap 'n borie zonder kempi\",\n", - " 'ma niffo we innen die paper',\n", - " 'wil een osso in cally',\n", - " 'chain dikker en heavy',\n", - " 'dikke zuennet en henny',\n", - " 'ma niffo we gettin that paper',\n", - " 'pa-pa-paarse licht in de dashboard',\n", - " 'tem je bitch in this mad horse',\n", - " 'nieuwe stempel in passport',\n", - " 'vlieg naar de zon als we willen',\n", - " 'paarse licht in de dashboard',\n", - " 'tem je bitch in this mad horse',\n", - " 'nieuwe stempel in passport',\n", - " 'vlieg naar de zon als we willen',\n", - " 'ben met moeman en locks',\n", - " 'storing en chops',\n", - " 'saggy boogie en westside',\n", - " \"m'n hele gang moet die cash draaien\",\n", - " 'met beide handen naar cash grijpen',\n", - " 'doe niet kalm je moet fast rijden',\n", - " 'doe niet gek met die cash bij me',\n", - " '(d-doe niet gek met die cash bij me)',\n", - " \"m'n soldier is busy en trekt wahed niffie en steekt in je fissie\",\n", - " 'bestempeld als skinny maar cool bij de chimmies',\n", - " 'en platina platen dus fuck jullie vaders, ey, ey',\n", - " 'kom om te halen, kom niet om te geven',\n", - " \"ik kom voor m'n show, ik kom niet om te feesten\",\n", - " 'ik ben ondernemer, fuck een player hater',\n", - " \"m'n hele team is winning, jullie overleden\",\n", - " 'in de spotlight',\n", - " 'ben in de spotlight',\n", - " 'ik zie je thot lied',\n", - " \"al m'n base op de gram\",\n", - " 'in de spotlight',\n", - " 'in de spotlight',\n", - " 'ik zie je thot lied',\n", - " \"al m'n base op de gram\",\n", - " \"ik wil m'n moeder in een benz zien\",\n", - " \"en m'n vader in een bempie\",\n", - " \"rap 'n borie zonder kempi\",\n", - " 'ma niffo we innen die paper',\n", - " 'wil een osso in cally',\n", - " 'chain dikker en heavy',\n", - " 'dikke zuennet en henny',\n", - " 'ma niffo we gettin that paper',\n", - " 'pa-pa-paarse licht in de dashboard',\n", - " 'tem je bitch in this mad horse',\n", - " 'nieuwe stempel in passport',\n", - " 'vlieg naar de zon als we willen',\n", - " 'paarse licht in de dashboard',\n", - " 'tem je bitch in this mad horse',\n", - " 'nieuwe stempel in passport',\n", - " 'vlieg naar de zon als we willen',\n", - " 'tem die kechs in this horse mayne',\n", - " 'hennessy, fuck je bombay',\n", - " 'sylvio is een probleem',\n", - " \"nefertiti aan m'n gold chain\",\n", - " \"beetje ice op d'r visie\",\n", - " 'voel me net tony montana',\n", - " \"kop me m'n money dan kom ik je halen\",\n", - " 'say hello to my little friend',\n", - " 'beng, beng',\n", - " 'ik kan niet meer lachen ze moeten betalen',\n", - " 'ik hou niet van woorden maar hou van die daden',\n", - " 'ik ben met de wolven jij bent met de schapen',\n", - " 'loopt mee met de kudde ik ben aan het jagen',\n", - " 'trap een beetje in de benz',\n", - " 'neef we kennen geen rem',\n", - " 'op die gas fuck de tank',\n", - " 'paarse lichten in de dash',\n", - " '220 op de deck',\n", - " 'my niffo we rennen voor stacks',\n", - " 'bruno, wittie of packs',\n", - " 'we killen die shows en tracks',\n", - " 'sylvio, president hella cash',\n", - " 'niffo we rennen voor stacks',\n", - " 'bruno, wittie of packs',\n", - " 'we killen die shows en tracks',\n", - " 'sylvio, president hella cash, ey, ey, cash, cash',\n", - " \"ik wil m'n moeder in een benz zien\",\n", - " \"en m'n vader in een bempie\",\n", - " \"rap 'n borie zonder kempi\",\n", - " 'ma niffo we innen die paper',\n", - " 'wil een osso in cally',\n", - " 'chain dikker en heavy',\n", - " 'dikke zuennet en henny',\n", - " 'ma niffo we gettin that paper',\n", - " 'pa-pa-paarse licht in de dashboard',\n", - " 'tem je bitch in this mad horse',\n", - " 'nieuwe stempel in passport',\n", - " 'vlieg naar de zon als we willen',\n", - " 'paarse licht in de dashboard',\n", - " 'tem je bitch in this mad horse',\n", - " 'nieuwe stempel in passport',\n", - " 'vlieg naar de zon als we willen',\n", - " 'oeh, oeh, oeh, oeh',\n", - " 'oeh, pa-pa-paarse licht in de dashboard',\n", - " 'tem je bitch in this mad horse',\n", - " 'nieuwe stempel in passport',\n", - " 'vlieg naar de zon als we willen',\n", - " 'paarse licht in de dashboard',\n", - " 'tem je bitch in this mad horse',\n", - " 'nieuwe stempel in passport',\n", - " 'vlieg naar de zon als we willen',\n", - " 'jp ballin, jp ballin, jp ballin, jp ballin',\n", - " 'swag out, swag out, swag out, swag out (swag)',\n", - " 'bragadam, braga bragadam',\n", - " 'big city boy, big city boy (bof)',\n", - " 'big city boy, big city boy (bof)',\n", - " 'swag out, swag out, swag out, swag out (swag)',\n", - " 'bragadam, braga bragadam',\n", - " 'ik draai als een blender, so remember',\n", - " 'pakkies alladay, niet alleen in december',\n", - " 'yeah, bad money spender',\n", - " 'want ze zeggen ben een big money spender',\n", - " 'pretty boy swag, chicks die ik heb',\n", - " 'zie me staan en voor je het weet ben ik weg',\n", - " 'andere lijken barbie: ken',\n", - " 'hij praat stoer maar die boy is fresh',\n", - " 'b boy swag, (???) lucky days',\n", - " \"ballin' sick man, en z'n swag so crazy\",\n", - " 'bragadam, flow is easy, lazy',\n", - " 'bcb, takayna keiz baby',\n", - " 'jp baby, (???) ladies',\n", - " 'chickies lipgloss in mn nek lately',\n", - " 'rude boy, fucking killa',\n", - " 'swagg on, jij gaat voor een doorsnee nigger',\n", - " 'jp ballin, jp ballin, jp ballin, jp ballin',\n", - " 'swag out, swag out, swag out, swag out (swag)',\n", - " 'bragadam, braga bragadam',\n", - " 'big city boy, big city boy (bof)',\n", - " 'big city boy, big city boy (bof)',\n", - " 'swag out, swag out, swag out, swag out (swag)',\n", - " 'bragadam, braga bragadam',\n", - " 'jones baby dit gaat eng worden',\n", - " 'ball hard: m jordan',\n", - " 'rayban, snapback en een baco',\n", - " 'scbof ink up: vato',\n", - " 'terug als karma, fly, piloot',\n", - " 'mannen doen vies voor faam: deepthroat',\n", - " 'ratrace maar ik druk backspace',\n", - " 'you lose, sadface, ik bill jij grace, nigga',\n", - " 'airline bof sup babe',\n", - " \"gek op m'n broodjes: subway\",\n", - " 'top nigga, pols ice grilla',\n", - " 'simpelweg omdat de spot i filla',\n", - " 'jullie bubblegum, uh, i stay hard',\n", - " 'fashion, bel some: caesar',\n", - " 'want jullie mannen zijn clean, basic',\n", - " 'mi go all out, wasted',\n", - " \"roll als een motherfucker, keiz kwaai, ballin'\",\n", - " 'meids krijgen pokerface, daarna ga ik all in',\n", - " \"schatjes worden verliefd, alicia keys fallin'\",\n", - " 'ik ben der voor jou,splackaveli just call him, call em',\n", - " 'baby, no discussion over ladyies',\n", - " 'swag is ziek, swag out, swag crazy',\n", - " 'swag to the roof, jij niet, jij maybe',\n", - " \"baas in die shit sinds de takayna 80's\",\n", - " '87, mama die bracht iets prachtigs',\n", - " 'me lines zijn te krachtig, en jij rapt slechts achtig',\n", - " 'met mij zijn dat dacht je, mijn timeline is lastig',\n", - " 'met 50.000 followers machtig',\n", - " 'nou wie de fuck ben jij, en wie de fuck ben ik',\n", - " 'zeg me ze kennen mij, of anders suck a dick',\n", - " 'ik zet die shit opzij, get money liever quick',\n", - " \"takayna keiz kwaai ballin', bitch\",\n", - " 'jp ballin, jp ballin, jp ballin, jp ballin',\n", - " 'swag out, swag out, swag out, swag out (swag)',\n", - " 'bragadam, braga bragadam',\n", - " 'big city boy, big city boy (bof)',\n", - " 'big city boy, big city boy (bof)',\n", - " 'swag out, swag out, swag out, swag out (swag)',\n", - " 'bragadam, braga bragadam',\n", - " 'chaar bottle vodka',\n", - " 'kaam mera roz ka',\n", - " 'na mujhko koi roke',\n", - " 'na kisi ne roka (x2)',\n", - " 'main rahoon saari raat in the bar',\n", - " 'daaru piyun lagaatar',\n", - " 'ek aadhi sab pee lete hain',\n", - " 'main to piyun botal chaar',\n", - " 'chaar bottle vodka',\n", - " 'kaam mera roz ka',\n", - " 'na mujhko koi roke',\n", - " 'na kisi ne roka..',\n", - " 'so i wanna hangover tonight (x4)',\n", - " 'saari raat daaru, subah nimbu-paani',\n", - " 'party karne waalon ki hai yehi kahaani',\n", - " 'pet bhar ke jitni bhi pee lo',\n", - " 'kisi ki bandi ko bhi hello',\n", - " 'hello baby how do you do?',\n", - " 'ek minute ko khad jaa tu',\n", - " 'pata ni mujhe yeh samajh ni aata',\n", - " 'mere saath kabhi koi club nahi aata',\n", - " 'apne palle se koi ni pilaata',\n", - " 'main pee loon zyada phir koi munh ni lagata',\n", - " 'kyun ki, kyun ki, kyun ki, kyun ki..',\n", - " 'sooji-sooji aankhein meri yeh phir bhi dekho',\n", - " 'ladkiyon ko kaise yeh nihaarein',\n", - " 'agle din woh jhoome hangover me phir bhi dekho',\n", - " 'lever mera vodka pukaare (x2)',\n", - " 'kyun ki?',\n", - " 'ninja',\n", - " 'yo-yo-yo-yo-landi visser',\n", - " 'jack parow',\n", - " 'dj hi-tek',\n", - " 'die fokken antwoord',\n", - " 'wat pomp julle?',\n", - " 'wat pomp julle?',\n", - " 'wat pomp, wat pomp, wat pomp julle?',\n", - " 'wat pomp julle?',\n", - " 'wat pomp julle?',\n", - " 'wat pomp, wat pomp, wat pomp julle?',\n", - " 'wat pomp julle?',\n", - " 'wat pomp julle?',\n", - " 'wat pomp, wat pomp, wat pomp julle?',\n", - " 'wat pomp julle?',\n", - " 'wat pomp julle?',\n", - " 'wat pomp, wat pomp, wat pomp?',\n", - " 'fresh futuristig',\n", - " 'me i’m a misfit, drink my 5 roses tea with a biscuit',\n", - " 'i’m shweet and i’m twisted, like a koeksuster',\n", - " 'i’m rustig ekse, o, we go ballistig, you can’t fuck with this shit',\n", - " 'it’s dark and it’s different, pay attention or be like \"fuck it, i missed it\"',\n", - " '( joe, maar sy’s giftig, oo jissie is dit?)',\n", - " 'staan terug boetie, cause i spoeg when i spit shit',\n", - " 'i missed it',\n", - " 'my number’s unlisted',\n", - " 'yo fuck the system, i got my own system',\n", - " \"'cause i won’t listen, my tricky-dicky lietjie blows systems\",\n", - " 'you can hear me coming from the distance',\n", - " 'mense versigtig, i get up to mischief',\n", - " \"jou fokken mif dik lip op 'n tik klip\",\n", - " 'my style is poison, it’s a freak pak of gom',\n", - " 'giftige cherrie up on page 3 van die son',\n", - " 'wat pomp julle?',\n", - " 'raak dronk op pille',\n", - " 'vrot binne as die kwaai pop singers kop sinne',\n", - " 'ek verskyn uit die stoom van die stort',\n", - " \"soos n droom of ‘n visie, 'n oom op n missie\",\n", - " \"mirror, mirror on the wall tell me who's ill\",\n", - " \"i'm touched with true skill\",\n", - " 'i bust the blue steel',\n", - " 'shit, the mirror’s misty',\n", - " 'sjoe, who can this be',\n", - " \"let's see the seksie refleksie\",\n", - " \"eksie perfeksie donner op 'n entjie\",\n", - " 'stonewashed jeans palm bome op my hempie',\n", - " 'tssss',\n", - " \"fuck yes i'm dressed for success, my breath is kak fresh\",\n", - " 'jack parow!',\n", - " '( there you go, baby)',\n", - " 'look at that lekker romantiese afrikaans superster rapper',\n", - " 'check my fokken uit, lat die beat drop player',\n", - " 'die naam’s jack parow, fok steve hofmeyer',\n", - " 'me and my super fresh look to the rescue',\n", - " 'we come to gently caress you',\n", - " 'like two warm ballas in a nice cold palm',\n", - " 'make you feel strange when the mic’s on',\n", - " 'okay, this is my song',\n", - " 'fok jou ek dink jy’s ‘n poes!',\n", - " 'vat jou vir ‘n poes want jy klink soos ‘n poes!',\n", - " 'jy rap soos ’n poes en jy sing soos ‘n poes',\n", - " 'hou my neus vas want jy stink soos ‘n poes',\n", - " 'alright lemme speak yo, all up in this freak show',\n", - " 'okay, check out my skill, geen fokken clue nie',\n", - " 'like my name was nigel',\n", - " 'moenie my flippen tune nie',\n", - " 'ek gaan vir my ma se',\n", - " 'okay, toemaar los dit',\n", - " 'if it doesn’t fit, force it, that’s my motto',\n", - " \"i'm not weird, you're weird\",\n", - " \"i’m just flippin' new here\",\n", - " 'i rap like a sore thumb, what’s up with you brother?',\n", - " 'i fit right in, like my cock in your mother',\n", - " 'so don’t tell me i’ve got no fire',\n", - " 'i’m running on the spot and i’m so tired',\n", - " 'hair getting blown back by my blow dryer',\n", - " 'jou naaier, jou naaier',\n", - " 'uuh (hosss)',\n", - " '2009 (yo)',\n", - " 'die fokken antwoord (fresh futuristig)',\n", - " 'yo, dj hi-tek (duidelik)',\n", - " 'yo-landi visser (some fucking fancy shit)',\n", - " 'uuh',\n", - " 'jy check my op die fokken strate (yo)',\n", - " 'jy check my in fokken larny restaurant (we’re very fancy)',\n", - " 'yo, jy check my op page 3 van die son',\n", - " 'yo, die fokken ninja (ouch)',\n", - " 'stainless steel stab comin’ at ya',\n", - " 'my borshare mooi afgeskeer (daarsy!)',\n", - " 'donald duck cap from the overseas (oulik!)',\n", - " 'freessssh',\n", - " 'don’t fuck with my style',\n", - " 'ninja... i’m a tiger',\n", - " 'yo, waar die fok is jack?',\n", - " 'jack?',\n", - " 'parow?',\n", - " 'ek dink hy’s in die toilet...',\n", - " \"bitch, it's all good\",\n", - " 'ze zat bij me in de brugklas',\n", - " \"nu pas heb ik d'r gewiept via tinder, gap\",\n", - " \"4 swipes it's all it took\",\n", - " 'ze zegt \"ik heb een vriend\"',\n", - " \"bitch, it's all good\",\n", - " 'ze zat bij me in de brugklas',\n", - " \"nu pas heb ik d'r gewiept via tinder, gap\",\n", - " \"4 swipes it's all it took\",\n", - " 'ze zegt \"ik heb een vriend\"',\n", - " \"bitch, it's all good\",\n", - " '4 swipes is all it took',\n", - " 'met yung mau in de stad op onderzoek',\n", - " '4 swipes is wat ik nodig',\n", - " 'om te connecten met je bitch via de tinder',\n", - " \"it's all good, it's all good\",\n", - " \"it's all good, it's all good\",\n", - " '4 swipes is what it took',\n", - " \"it's all good, it's all good\",\n", - " \"it's all good, all good\",\n", - " 'in de binnenstad of we chillen in the hood',\n", - " '4 swipes is wat ik nodig heb',\n", - " '6 donnies pin ik zo direct',\n", - " 'ze was thirsty, dus ik heb die bitch drooggelegd',\n", - " \"paas d'r door naar yelli en we hebben nie eens overlegd\",\n", - " \"it's all good, it's all good\",\n", - " \"it's all good, it's all good\",\n", - " '4 swipes is what it took',\n", - " \"it's all good, it's all good\",\n", - " \"it's all good, all good\",\n", - " 'in de binnenstad of we chillen in the hood',\n", - " 'ze zat bij me in de brugklas',\n", - " \"nu pas heb ik d'r gewiept via tinder, gap\",\n", - " \"4 swipes it's all it took\",\n", - " 'ze zegt \"ik heb een vriend\"',\n", - " \"bitch, it's all good\",\n", - " 'ze zat bij me in de brugklas',\n", - " \"nu pas heb ik d'r gewiept via tinder, gap\",\n", - " \"4 swipes it's all it took\",\n", - " 'ze zegt \"ik heb een vriend\"',\n", - " \"bitch, it's all good\",\n", - " 'ze zat bij me in de brugklas',\n", - " \"nu pas, nu pas d'r gewiept via tinder, gap\",\n", - " \"4 swipes it's all it took\",\n", - " 'ze zegt \"ik heb, ik heb\"',\n", - " \"bitch, it's all good\",\n", - " 'so you lit now?',\n", - " 'everybody fucking with you right now',\n", - " \"your girlfriend's fucking with you right now\",\n", - " 'you lit dick, i never turn your lights down',\n", - " 'pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend (skurrt)',\n", - " 'p-pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend guuuurl',\n", - " 'pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend guuuurl',\n", - " 'pull up on your girlfriend',\n", - " \"goin' back, met m'n vrouw in de boy back\",\n", - " \"4k alleen om te liggen op d'r lap\",\n", - " \"jouw bitch post d'r nieuwe nagels\",\n", - " \"mijn vrouw post niet eens d'r nieuwe rolex op snap\",\n", - " 'ik heb gezien wat je vrouw doet online',\n", - " 'ik stuur bewijzen maar doe dat voor likes',\n", - " 'niet eens in de scene of een college-degree',\n", - " \"'kweet niet wat ze verdient, maar ze doet het voor shine\",\n", - " \"let's keep it real man\",\n", - " 'ik en niggers, zijn niggers en girlfriend',\n", - " 'je real boys status, no matsa',\n", - " 'je rolex is allergisch voor watah',\n", - " 'ze wou me, ze wou me pull up in je girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend guuuurl',\n", - " 'pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend guuuurl',\n", - " 'pull up on your girlfriend',\n", - " 'gwuan, pull up on your bestie (skurrrt)',\n", - " 'say she always love to twerk in the backseat',\n", - " 'run game girl, you deserve a eskie',\n", - " 'you had good gwuan, pull up on backie',\n", - " \"didn't wanna see win that newnew\",\n", - " \"your old friends hatin' on the new you\",\n", - " \"funny 'cuz you don't even see that\",\n", - " 'bitch you come and get it, baby daddy at your dm',\n", - " 'so you lit now?',\n", - " 'everybody fucking with you right now',\n", - " \"your girlfriend's fucking with you right now\",\n", - " 'you lit dick, i never turn your lights down, hah',\n", - " 'pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend (skurrt)',\n", - " 'p-pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend guuuurl',\n", - " 'pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend',\n", - " 'go ahead and pull up on your girlfriend guuuurl',\n", - " 'pull up on your girlfriend (skrr)',\n", - " 'songtekst van leafs – \"mikado\"',\n", - " \"bro i don't know, ze wil flexen bij men show\",\n", - " \"ga niet in zee wellou boot, catch een plane met al men bro's\",\n", - " 'heel de fam die is nu bij me want we stacken mikado',\n", - " 'heel de fam die is nu bij me want we stacken mikado',\n", - " 'jump rope, jump rope, jump rope, jump rope',\n", - " 'jump rope, jump rope, jump rope, ja ja',\n", - " 'jump rope, jump rope, jump rope, jump rope',\n", - " 'jump rope, jump rope, jump rope, ja ja',\n", - " 'never switch it up, dat is phoney',\n", - " 'wat shoutout yung mystic is me brody',\n", - " 'ben met vinnie, donnie, jurell, never lonely',\n", - " 'sweet life on deck zack and cody',\n", - " 'ben met de fam, en we zijn in zee',\n", - " 'want ik ben eng, fly net halloween',\n", - " 'ik ben de champ voel me cassius clay',\n", - " 'hou het honderd, waar is mijn trofee',\n", - " 'ik heb enough , saus en (?)',\n", - " \"yea i know, nog steeds ben ik daar met m'n bro's!\",\n", - " \"bro i don't know, ze wil flexen bij men show\",\n", - " \"ga niet in zee wellou boot, catch een plane met al men bro's\",\n", - " 'heel de fam die is nu bij me want we stacken mikado',\n", - " 'heel de fam die is nu bij me want we stacken mikado',\n", - " 'jump rope, jump rope, jump rope, jump rope',\n", - " 'jump rope, jump rope, jump rope, ja ja',\n", - " 'jump rope, jump rope, jump rope, jump rope',\n", - " 'jump rope, jump rope, jump rope, ja ja',\n", - " \"ben je met je friends, i don't give a damn\",\n", - " \"ik kom met m'n crew, jij komt met je gang\",\n", - " 'you know what to do, ik heb iets gespend',\n", - " \"ice around m'n wrist, lijkt of ik ben geklemd\",\n", - " 'ik wil dat je jumped, dan ben je down mijn baby',\n", - " 'pussy on the run, ik zeg see you later',\n", - " 'ik hoef geen saus bij chaps, ben je crazy',\n", - " 'ik heb meer dan genoeg voor de hele wereld',\n", - " 'ik heb (?) , saus en (?)',\n", - " \"yea i know, nog steeds ben ik daar met m'n bro's!\",\n", - " \"bro i don't know, ze wil flexen bij men show\",\n", - " \"ga niet in zee wellou boot, catch een plane met al men bro's\",\n", - " 'heel de fam die is nu bij me want we stacken mikado',\n", - " 'heel de fam die is nu bij me want we stacken mikado',\n", - " 'jump rope, jump rope, jump rope, jump rope',\n", - " 'jump rope, jump rope, jump rope, ja ja',\n", - " 'jump rope, jump rope, jump rope, jump rope',\n", - " 'jump rope, jump rope, jump rope, ja ja',\n", - " 'bizzey',\n", - " 'ramiks bitch (pa, pa, pa)',\n", - " \"frenna, we don't stop\",\n", - " \"we-we-we-we don't stop\",\n", - " \"voor mijn fatima's en brenda's\",\n", - " 'natasha, latoya',\n", - " 'ik heb het, en je wilt het',\n", - " 'ik kan op je spenden',\n", - " 'ik blow it all, pa-pa-pa-pa',\n", - " 'ik blow it all, eh-eh',\n", - " 'ik blow it all, like that',\n", - " 'ik blow it all, aye my girl',\n", - " 'ik blow it all, duf-duf-duf-duf',\n", - " 'ik blow it all, eh-yeah',\n", - " 'ik blow it all',\n", - " 'ik blow it all, ah yeah-eh',\n", - " 'you want it all (pa-pa-pa-pa)',\n", - " 'i got it all (duf-duf-duf)',\n", - " 'ik ben met frenna in balmain',\n", - " 'maar listen up all, eh',\n", - " 'jij bent een cliché',\n", - " 'en ik kom met money',\n", - " 'zie life is not easy',\n", - " 'oh, dus ik pak die money',\n", - " 'you want it all (pa-pa-pa-pa)',\n", - " 'i pay it all (duf-duf-duf-duf)',\n", - " 'je weet ik ball, eh eh',\n", - " 'je weet ik ball, yeah-yeah-yeah',\n", - " \"voor mijn fatima's en brenda's\",\n", - " 'natasha, latoya',\n", - " 'ik heb het, en je wilt het',\n", - " 'ik kan op je spenden',\n", - " 'ik blow it all, pa-pa-pa-pa',\n", - " 'ik blow it all, eh-eh',\n", - " 'ik blow it all, like that',\n", - " 'ik blow it all, aye my girl',\n", - " 'ik blow it all, duf-duf-duf-duf',\n", - " 'ik blow it all, eh-yeah',\n", - " 'ik blow it all',\n", - " 'ik blow it all, ah yeah-yeah-yeah',\n", - " 'boricua/moniqua, morena, colombiana, dominicana',\n", - " 'boricua/moniqua, morena, colombiana, dominicana',\n", - " 'moet het bedanken dus, brengen het naar je mama',\n", - " 'en dan naar de bahamas',\n", - " 'we kunnen liggen en chillen op de bahamas',\n", - " 'pussy nigga schaam je',\n", - " 'en we zoeken naar die kamers',\n", - " 'je wil kleven aan dames',\n", - " 'ik ben met bizzey, we gaan vamos',\n", - " \"ik show m'n roley en dan gaat ze mee\",\n", - " \"voor mijn fatima's en brenda's\",\n", - " 'natasha, latoya',\n", - " 'ik heb het, en je wil het',\n", - " 'ik kan op je spenden',\n", - " 'ik blow it all, pa-pa-pa-pa',\n", - " 'ik blow it all, eh-eh',\n", - " 'ik blow it all, like that',\n", - " 'ik blow it all, aye my girl',\n", - " 'ik blow it all, duf-duf-duf-duf',\n", - " 'ik blow it all, eh-yeah',\n", - " 'ik blow it all',\n", - " 'ik blow it all, ah yeah-yeah-yeah',\n", - " 'oh',\n", - " 'oh',\n", - " 'we stay in touch',\n", - " 'i got like sixty-five kilos of white powder in mij',\n", - " 'tinkiewinkie purple porsche (say what?)',\n", - " 'white albino, man',\n", - " 'ay, ay, ay, ay',\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'pull up in amsterdam',\n", - " 'i got the rubber bands',\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'pull up in amsterdam',\n", - " 'i got the rubberbands',\n", - " 'snelle planga net riff',\n", - " 'riced out in die bitch',\n", - " 'op je huid net een cyste',\n", - " 'lippenstift rood, een suzuki swift',\n", - " 'ik ben een kapitalist',\n", - " 'ik ben op ei als een kip',\n", - " 'al mijn mannen zijn te dik',\n", - " 'wij passen niet in die lift',\n", - " 'look at the flick of the wrist',\n", - " 'in het donker geef ik licht',\n", - " 'wordt dat en christian kist',\n", - " 'ik ben geen rapper maar een populist',\n", - " 'ik ga niet dood in een kist',\n", - " 'ik verdween in die mist',\n", - " \"ik kijk effe schindler's list\",\n", - " 'de nederlandse taylor swift',\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'pull up in amsterdam',\n", - " 'i got the rubber bands',\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'pull up in amsterdam',\n", - " 'i got the rubberbands',\n", - " 'ik doe dit voor mijn kids',\n", - " 'en ik heb niet eens kids',\n", - " 'speel effe de sims',\n", - " 'voel met henk-jan smits',\n", - " 'kom designer tot de rits',\n", - " 'mijn money wit net maurits',\n", - " 'gappie jij bent op niks',\n", - " 'patta van de game',\n", - " 'analyst, eh',\n", - " 'wil goud in mijn gebit',\n", - " 'wil een klap in mijn gezicht',\n", - " 'jij bent op saus als dips',\n", - " 'gek als kiss',\n", - " 'serieus net een jurist',\n", - " 'ik bombard angerfist',\n", - " 'ik chap wat fish en chips',\n", - " 'versace, goudvis',\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'pull up in amsterdam',\n", - " 'i got the rubber bands',\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'born in stockholm',\n", - " \"but i'm from the netherlands\",\n", - " 'pull up in amsterdam',\n", - " 'i got the rubberbands',\n", - " 'aye',\n", - " 'yeah, yeah, yeah',\n", - " 'aye',\n", - " 'yeah',\n", - " 'hustle hard pa buta sèn den lachi',\n", - " 'tantu money, mi tin tantu blachi',\n", - " 'min ta worry mi ku hende fasil',\n", - " 'buta money den un combinatie',\n", - " 'mi ta buta money den un combinatie',\n", - " 'mi ta buta money den un combinatie',\n", - " 'mi ta buta money den un combinatie',\n", - " 'mi ta buta money den un',\n", - " 'hustle hard pa buta sèn den lachi',\n", - " 'tantu money, mi tin tantu blachi',\n", - " 'min ta worry mi ku hende fasil',\n", - " 'buta money den un combinatie',\n", - " 'mi ta buta money den un combinatie',\n", - " 'mi ta buta money den un combinatie',\n", - " 'mi ta buta money den un combinatie',\n", - " 'mi ta buta money den un combinatie',\n", - " 'hustle hard pa buta sèn den lachi',\n", - " 'un ta nada, kiko ta ma hasi',\n", - " 'bo pordona na hopi, bon ta pami',\n", - " 'bosnan por mira kon mi life ta kaki',\n", - " 'paperchase, ami no bin strobami',\n", - " 'mi no ta worry mi, ku hende fasil',\n", - " 'keda focus, focus riba blachi',\n", - " 'pa money so, mi por tin concentratie',\n", - " ...]},\n", - " 'data': ['songtekst van idaly – \"fallin\\'\" ft. sfb & ronnie flex',\n", - " 'oh, yeah, yeah, yeah, yeah, ey',\n", - " 'oh, yeah, yeah, yeah, yeah, ey',\n", - " 'oh, yeah, yeah, yeah, yeah, ey',\n", - " 'yeah, ey',\n", - " \"ik ben fallin’, shawty fallin' for you\",\n", - " \"fallin' for you, yeah\",\n", - " 'fallin’ for you, yeah',\n", - " \"ey, ik ben fallin', shawty fallin' for you\",\n", - " \"fallin' for you\",\n", - " \"fallin' for you, yeah\",\n", - " \"ik ben fallin', yeah fallin' for you\",\n", - " \"fallin' for you\",\n", - " 'fallin’ for you',\n", - " \"ik ben fallin’, ik ben fallin' for you\",\n", - " 'fallin’ for you',\n", - " \"fallin' for you\",\n", - " 'throw that back on me, ba-back on me',\n", - " \"stop blowin' your seeka cause that's on me\",\n", - " \"that’s on me, that's on me\",\n", - " \"jij bent m'n shawty, the one that i need\",\n", - " 'types als jou zie je niet, styling queen',\n", - " 'jij bent de type, bij jou vind ik peace',\n", - " 'ik wil een fam met je starten, baby',\n", - " 'oh, yeah, oh, yeah',\n", - " 'hit her with a left, hit her with a right',\n", - " \"shawty come back, won't say it twice\",\n", - " 'b-beat it like a fight, ride me like a bike',\n", - " 'jij weet allang, allang ik ben die guy',\n", - " \"said i'm ballin' (prr)\",\n", - " \"geef je nummer, keep callin'\",\n", - " \"want je weet je bent m'n darlin'\",\n", - " 'oh, you, ey',\n", - " \"said i'm fallin', fallin' for you\",\n", - " \"fallin' for you\",\n", - " \"fallin' for you\",\n", - " \"ey, ik ben fallin', shawty fallin' for you\",\n", - " \"fallin' for you\",\n", - " \"fallin' for you, yeah\",\n", - " 'hoeveel moet ik nog slijmen, meisje',\n", - " 'wanneer heb jij tijd?',\n", - " 'kom je nog vanavond langs bij mij?',\n", - " 'baby wavy, ik ben down for life',\n", - " 'oké girl je bent fine, net china',\n", - " \"oh, ja, that's right, ey\",\n", - " 'jij bent the one, ik begrijp heel de hive, aye',\n", - " 'kan ik forever met je zijn?',\n", - " \"oh ja, ik ben fallin', ben fallin' for you\",\n", - " \"fallin' for you\",\n", - " \"fallin' for you, you, you, you, you, you\",\n", - " \"ey, ik ben fallin', shawty fallin' for you\",\n", - " \"fallin' for you\",\n", - " \"fallin' for you, yeah\",\n", - " \"g-girl ik ben fallin', fallin'\",\n", - " 'voor jou ga ik all in, all in',\n", - " \"je weet ik ben ballin', ballin'\",\n", - " 'dus alles is on me, on me',\n", - " \"g-girl ik ben fallin', fallin'\",\n", - " \"jij weet je bent m'n darlin'\",\n", - " \"bands op me en ik boss het op m'n shawty\",\n", - " 'mijn shawty',\n", - " 'yuh, oké',\n", - " \"shawty, je bent fallin' elke keer\",\n", - " 'voor jou doet een nigga iets meer',\n", - " 'shawty zet die body op me, yeah, ey',\n", - " 'ik ben in love met je waist line',\n", - " 'oh shawty, kom en bel me op facetime',\n", - " 'night en de day time',\n", - " \"jij bent m'n compa\",\n", - " \"oh, lil' mama, jij bent amazing\",\n", - " 'het is p.c.-time',\n", - " \"ik ben fallin', shawty fallin' for you\",\n", - " \"fallin' for you, yeah\",\n", - " \"fallin' for you, yeah\",\n", - " \"ey, ik ben fallin', shawty fallin' for you\",\n", - " \"fallin' for you\",\n", - " \"fallin' for you, yeah\",\n", - " 'songtekst van yung felix – \"mr lova\" ft. zefanio & ir sais',\n", - " 'y-y-y-yung felix',\n", - " 'oh, stop het',\n", - " 'oh, bom het',\n", - " \"heat is aan m'n voeten maar ze sokt 't, hmm\",\n", - " 'mr. lova, lova in je jungle, you',\n", - " \"jij mag komen zitten op m'n schommel, hmm\",\n", - " 'mr. lova, laat me in je jungle',\n", - " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", - " 'mr. lova, laat me in je jungle',\n", - " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", - " 'oh, hmm, oh, hmm, oh-oh-oh, hmm',\n", - " 'mr. lova, lova in je jungle, you',\n", - " \"jij mag komen zitten op m'n schommel, hmm\",\n", - " \"al show je me love, we don't give a fuck\",\n", - " 'schat ik zet je vast net als jongeren en job',\n", - " \"body slaapt allang, please don't call the cops\",\n", - " 'schud die billen dan, zo van rom-pom-pom-pom',\n", - " 'zet die, semi, , for me lovely body, pak ik, pak ik, pak ik',\n", - " 'semi zet ik for me lovely body, body',\n", - " 'oh, stop het',\n", - " 'oh, bom het',\n", - " \"heat is aan m'n voeten maar ze suckt 't, hmm\",\n", - " 'mr. lova, lova in je jungle, you',\n", - " \"jij mag komen zitten op m'n schommel, hmm\",\n", - " 'mr. lova, laat me in je jungle',\n", - " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", - " 'mr. lova, laat me in je jungle',\n", - " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", - " 'oh, hmm, oh, hmm, oh-oh-oh, hmm',\n", - " 'mr. lova, lova in je jungle, you',\n", - " \"jij mag komen zitten op m'n schommel, hmm\",\n", - " 'baby blijf rustig, controla (controla)',\n", - " 'dit is iri, zeker mi ta kla',\n", - " 'we gaan lang mami, night night',\n", - " 'i like the way that you smile',\n", - " \"you got me trippin'\",\n", - " 'aii bo body ta straks si',\n", - " 'anto mi gusta bo way, bo way, bo way, stop',\n", - " 'pone bo karga nan un side, joh',\n", - " 'mami we doen het de hele avond (chichi)',\n", - " 'pone bo karga nan den side, joh',\n", - " 'mami we doen het de hele avond',\n", - " 'oh, stop het',\n", - " 'oh, bom het',\n", - " \"heat is aan m'n voeten maar ze suckt 't, hmm\",\n", - " 'mr. lova, lova in je jungle, you',\n", - " \"jij mag komen zitten op m'n schommel, hmm\",\n", - " 'mr. lova, laat me in je jungle',\n", - " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", - " 'mr. lova, laat me in je jungle',\n", - " 'mr. lova, mr. lova, laat me in je jungle, jungle',\n", - " 'oh, hmm, oh, hmm, oh-oh-oh, hmm',\n", - " 'mr. lova, lova in je jungle, you',\n", - " \"jij mag komen zitten op m'n schommel, hmm\",\n", - " 'oh, hmm, oh, hmm, oh-oh-oh, hmm',\n", - " 'oh, hmm, oh, hmm, oh-oh-oh, hmm',\n", - " 'lil mama is nice, nice',\n", - " \"moet soms frans met 'r spreken 'oui'\",\n", - " \"heb m'n focus op je eyes gezet\",\n", - " 'hmm, maar die lips van je doen met je boy',\n", - " 'ik ken die sweet spot die zorgt voor die ooeh aah',\n", - " \"honey in m'n tea geen suga\",\n", - " 'ready, set, action yeah yeah',\n", - " 'ze is bool met de boy zonder effort yeah yeah',\n", - " 'ik zei ready, set, action yeah yeah',\n", - " 'ze is bool met de boy zonder effort yeah yeah',\n", - " 'honey honeybee, honeybee',\n", - " \"ze is de honing in m'n ginger tea (oh ooh)\",\n", - " 'honey honeybee, honeybee',\n", - " \"breng de honing in m'n ginger tea (oh ooh)\",\n", - " 'honey honeybee, honeybee',\n", - " \"ze is de honing in m'n ginger tea (oh ooh)\",\n", - " 'honey honeybee, honeybee',\n", - " \"ze is de honing in m'n ginger tea\",\n", - " 'honey honeybee',\n", - " \"m'n killerbee\",\n", - " 'ze vliegt om me heen, maar ze steekt me niet',\n", - " 'ze zeiden altijd pas op voor de bijen',\n", - " 'maar ik wil bij je zijn',\n", - " 'rechtstreeks naar je bloemenveld',\n", - " \"bestuif je voor m'n gingertea\",\n", - " 'dit is geen one night stand thing',\n", - " 'maar een long long long thing aye',\n", - " \"ik houd 't maar op een ding yeah\",\n", - " \"honeybee, ze is m'n honing\",\n", - " \"stoom iets and let's relax\",\n", - " 'next morning eet ik in bed',\n", - " \"maar ik heb 't niet over ontbijt nee\",\n", - " 'honey honeybee, honeybee',\n", - " \"ze is de honing in m'n ginger tea (oh ooh)\",\n", - " 'honey honeybee, honeybee',\n", - " \"breng de honing in m'n ginger tea (oh ooh)\",\n", - " 'honey honeybee, honeybee',\n", - " \"ze is de honing in m'n ginger tea (oh ooh)\",\n", - " 'honey honeybee, honeybee',\n", - " \"ze is de honing in m'n ginger tea\",\n", - " 'ik zei ready, set, action',\n", - " 'ready, set, action yeah yeah',\n", - " 'ik zei ready, set, action',\n", - " 'ready, set, action yeah yeah',\n", - " 'lil mama is nice, nice',\n", - " \"moet soms frans met 'r spreken 'oui'\",\n", - " \"heb m'n focus op je eyes gezet\",\n", - " 'hmm, maar die lips van je doen met je boy',\n", - " 'ready, set, action yeah yeah',\n", - " 'ik zei ready, set, action',\n", - " 'songtekst van leafs – \"mamacita\"',\n", - " 'iehh, ramiks, skieff skieff (ramiks skie.., ieh ieh, baby)',\n", - " 'leafs sensei, ayyy',\n", - " 'want ze is all red, gedressed, tight jeans tot ‘r waist ey',\n", - " 'meisje is op dreef ey, kom je met mee heya',\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " \"she set me in me feelings met d'r vibes, oh my\",\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " 'steeds in my mind heya, steeds in my mind heya',\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " 'she set me in my feelings met the vibes, oh my',\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " 'steeds in my mind heya, steeds in my mind heya',\n", - " 'in my mind, alright',\n", - " \"thot, make her so wet in nights, baby you're so damn fine\",\n", - " 'is ze bij mij dan blijft ze heel de night, yeah',\n", - " \"maar ze snap me ice tankings, nog steeds niet lackin'\",\n", - " 'paradise shawty, ik ben leafs sensei',\n", - " 'wie is niet down met ons? on the run met the anbu gang',\n", - " 'ben nog steeds in the endz, dus ik whip, slash, crash',\n", - " \"wij zijn nog steeds in love, eerlijk i don't know\",\n", - " 'boss bij elke show, super jong maar bulldoze (yeah)',\n", - " 'want ze is all red, gedressed, tight jeans tot ‘r waist ey',\n", - " 'meisje is op dreef ey, kom je met mee heya',\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " \"she set me in me feelings met d'r vibes, oh my\",\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " 'steeds in my mind heya, steeds in my mind heya',\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " 'she set me in my feelings met the vibes, oh my',\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " 'steeds in my mind heya, steeds in my mind heya',\n", - " \"steam, all in stunnin', i'mma keep it hunnid\",\n", - " 'ben on my way naar me bae, yeah still making money',\n", - " \"she's the one with the gass, lil' mama is elegant\",\n", - " 'kabba zo groot als een elephant, money moet langer dan slenderman',\n", - " \"je speelt met me feals, i don't like that\",\n", - " \"en nu stuur je mij een message, i don't write back\",\n", - " 'ze is highclass, ben je hajek?',\n", - " 'ik stond altijd klaar voor je yeah, pull up ik was daar voor je',\n", - " 'shawty, ik was daar voor je, yeah',\n", - " 'want ze is all red, gedressed, tight jeans tot ‘r waist ey',\n", - " 'meisje is op dreef ey, kom je met mee heya',\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " \"she set me in me feelings met d'r vibes, oh my\",\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " 'steeds in my mind heya, steeds in my mind heya',\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " 'she set me in my feelings met the vibes, oh my',\n", - " \"mamacita, ze blijft steeds in m'n mind heya\",\n", - " 'steeds in my mind heya, steeds in my mind heya',\n", - " 'proper patola',\n", - " 'nakhra ae swag',\n", - " 'suit patiala shahi chunni teri black',\n", - " 'o munde honke bharde',\n", - " 'tainu takk takk ke',\n", - " 'turre jadon hath tu',\n", - " 'lakk utte rakh ke',\n", - " 'proper patola',\n", - " 'nakhra ae swag',\n", - " 'suit patiala shahi',\n", - " 'chunni meri black',\n", - " 'o munde honke bharde',\n", - " 'mainu takk takk ke',\n", - " 'nachan jadon hath main',\n", - " 'lakk utte rakh ke',\n", - " '(badshah rap)',\n", - " 'look! rabb ne husna di rakhi koi thod nahi',\n", - " 'gallan di laali nu makeup di koi lod nahi',\n", - " 'phull ne gulaab de',\n", - " 'bull ne janaab de',\n", - " 'sonh lagge mummy di mainu',\n", - " 'tera koi tod nahi',\n", - " 'thodi te til kaala kudiye ni baatan paave',\n", - " 'suit patiala, gucci vucci nu maatan paave',\n", - " 'ghar tera ni main aape labh loon',\n", - " 'saanu bas das ja tu naa’m',\n", - " 'proper patola',\n", - " 'nakhra ae swag',\n", - " 'suit patiala shahi chunni teri black',\n", - " 'o munde honke bharde',\n", - " 'tainu takk takk ke',\n", - " 'turre jadon hath tu',\n", - " 'lakk utte rakh ke',\n", - " 'main laa dun tujhe haar',\n", - " 'pehna doon tujhe kangan',\n", - " 'ho taiyyar',\n", - " 'ghuma doon tujhe london',\n", - " 'haath mein rakhun haath rakhe jis cheez pe',\n", - " 'heere jadwa doon teri kaali kameez pe',\n", - " 'aaja mere paas, kar guzarish',\n", - " 'paise ki kya baat',\n", - " 'kar doon noton ki baarish',\n", - " 'itna na soch haath mera thaam',\n", - " 'tujhe yaad rahegi zindagi bhar ye shaam',\n", - " 'ja mundeya ve tere bas di ni gal',\n", - " 'na nach mere naal aake tu close',\n", - " 'haan chal patli gali se tu nikal',\n", - " 'tere jaison ko rakhti hoon on-toes',\n", - " 'kyun bole lie tu',\n", - " 'na kare try tu',\n", - " 'jaa jaa tu bete ghar ja',\n", - " 'proper patola',\n", - " 'nakhra ae swag',\n", - " 'suit patiala shahi chunni teri black',\n", - " 'o munde honke bharde',\n", - " 'tainu takk takk ke',\n", - " 'turre jadon hath tu',\n", - " 'lakk utte rakh ke',\n", - " 'proper patola',\n", - " 'nakhra ae swag',\n", - " 'suit patiala shahi',\n", - " 'chunni meri black',\n", - " 'o munde honke bharde',\n", - " 'mainu takk takk ke',\n", - " 'nachan jadon hath main',\n", - " 'lakk utte rakh ke',\n", - " 'ey, zoo-tududu-na-na-nahh, dah dah, yeah',\n", - " 'oeh baby omlaag, bring it back up, oeh laat me zien hoe je squat',\n", - " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", - " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", - " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", - " 'ik breng het omlaag, bring it back up',\n", - " 'hmmm, en je wilt niet dat ik stop',\n", - " \"zie je kijken naar m'n booty maar het is oké\",\n", - " \"t'is hier heel gezellig maar ik ga niet mee (dab!)\",\n", - " 'whine on a nigga, maak hem helemaal gek (hmmm, laat hem zien wat je hebt)',\n", - " 'hoe ik squat, hoe ik draai, hoe ik twirl',\n", - " 'al je boys kijken lang naar me, girl',\n", - " \"you got me liftin', shiftin', higher than the ceiling, your body is amazing, you're gifted\",\n", - " 'i push you to the limit, oh girl, but sugar ja je bent so fly',\n", - " \"you got me liftin', shiftin', higher than the ceiling, your body is amazing, you're gifted\",\n", - " 'i push you to the limit, oh girl, but sugar ja je bent so fly',\n", - " 'oeh baby omlaag, bring it back up, oeh laat me zien hoe je squat',\n", - " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", - " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", - " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", - " 'oeh baby omlaag, bring it back up now',\n", - " 'let me see you go down now',\n", - " 'wil dat jij niet meer ophoudt, wil dat jij me nu vasthoudt',\n", - " 'en ik zeg, hit zijn, kill it with the flow',\n", - " \"baby squat, we zijn op m'n goal\",\n", - " 'hit zijn, go down low, wil dat jij nu niet meer stopt',\n", - " \"you got me liftin', shiftin', higher than the ceiling, your body is so amazing, you're gifted\",\n", - " 'i push you to the limit, oh boy, boy sugar ja je bent so fly',\n", - " \"you got me liftin', shiftin', higher than the ceiling, your body is so amazing, you're gifted\",\n", - " 'i push you to the limit, oh boy, boy sugar ja je bent so fly',\n", - " 'oeh baby omlaag, bring it back up, oeh laat me zien hoe je squat',\n", - " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", - " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", - " 'oeh baby omlaag, bring it back up, ey laat me zien hoe je squat',\n", - " 'oeh baby omlaag-oh-oh-oh-oh-oh-oh-oh',\n", - " 'oeh baby omlaag!',\n", - " \"ik en m'n jongens worden rich\",\n", - " 'maak nu money met die pokoes, maar ik',\n", - " 'ik en me',\n", - " 'ik en me jongens worden rich',\n", - " '(spanker)',\n", - " \"ik en m'n jongens worden rich\",\n", - " 'maak nu money met die pokoes, maar ik droomde over bricks',\n", - " \"ik zet money op m'n family, jij zet money op een bitch\",\n", - " \"that's a no go, zeg die fake hoe's: stay the fuck up out my bizz\",\n", - " 'aan het rennen voor die guala, ben nog niet bij die finish',\n", - " \"vertel die fake hoe's: stay the fuck up out my bizz\",\n", - " 'hella cash, hella cash, hella cash, hella cash',\n", - " \"vertel die fake hoe's: stay the fuck up out my motherfucking bizz hella cash, hella cash, hella cash, hella cash gang, bitch\",\n", - " 'kijk me hele gang doet rennen voor die goddamn cash',\n", - " 'als die mannen niet begrijpen, komen big ass straps uit de koffer, richting dokter als die bullet jou catched',\n", - " 'beter betaal me die money',\n", - " 'ah mattie, we lachen niet',\n", - " 'ik ben aggresief',\n", - " 'vraag de fucking beat wat ik met hem doe',\n", - " 'bro, je gaat niet halen',\n", - " \"check m'n hele crew is bekend in de hood\",\n", - " 'dat is elke member, iedereen doet rennen voor die fucking paper',\n", - " 'fuck een player hater, spelen spel iets beter dan de fucking meeste',\n", - " 'ben een fucking meester, jij een fucking leerling, je kan van me leren, ey ey',\n", - " 'moeman, chopper en locos',\n", - " 'zackie, billy en borus',\n", - " 'westside en ace boogie',\n", - " 'ww en steve s',\n", - " \"m'n hele gang is op get cash\",\n", - " 'hella money, dit is hella cash',\n", - " 'we gaan het pakken dit jaar, wauw',\n", - " \"ik en m'n jongens worden rich\",\n", - " 'maak nu money met die pokoes, maar ik droomde over bricks',\n", - " \"ik zet money op m'n family, jij zet money op een bitch\",\n", - " \"that's a no go, zeg die fake hoe's: stay the fuck up out my bizz\",\n", - " 'aan het rennen voor die guala, ben nog niet bij die finish',\n", - " \"vertel die fake hoe's: stay the fuck up out my bizz\",\n", - " 'hella cash, hella cash, hella cash, hella cash',\n", - " \"vertel die fake hoe's: stay the fuck up out my motherfucking bizz\",\n", - " 'hella cash, hella cash, hella cash, hella cash gang, bitch',\n", - " 'ik ken die tijden, ik had niks',\n", - " \"er waren tijden dat we renden met z'n allen in de mist\",\n", - " 'er waren tijden in de hooptie, maar nu pull ik up in whips waar je u tegen kan zeggen',\n", - " 'beter let je op je bitch, look at the flick of the wrist',\n", - " \"ren tot ik lig in m'n kist\",\n", - " \"m'n jongens die leveren bricks\",\n", - " \"slecht nieuws, dat zijn balla's in je been mattie, ze komen gericht\",\n", - " 'in het donker, geef licht',\n", - " \"heel m'n nek die dript\",\n", - " 'hella cash in this bitch',\n", - " \"heel m'n gang die wordt rich\",\n", - " 'moeman, chopper en locos',\n", - " 'zackie billy en borus',\n", - " 'westside en ace boogie',\n", - " 'ww en steve s',\n", - " \"m'n hele gang is op get cash\",\n", - " 'hella money, dit is hella cash',\n", - " 'we gaan het pakken dit jaar, wauw',\n", - " \"ik en m'n jongens worden rich\",\n", - " 'maak nu money met die pokoes, maar ik droomde over bricks',\n", - " \"ik zet money op m'n family, jij zet money op een bitch\",\n", - " \"that's a no go, zeg die fake hoe's: stay the fuck up out my bizz\",\n", - " 'aan het rennen voor die guala, ben nog niet bij die finish',\n", - " \"vertel die fake hoe's: stay the fuck up out my bizz\",\n", - " 'hella cash, hella cash, hella cash, hella cash',\n", - " \"vertel die fake hoe's: stay the fuck up out my motherfucking bizz\",\n", - " 'hella cash, hella cash, hella cash, hella cash gang, bitch',\n", - " 'aye, 1,2,3, myew myew myew, myew myew myew, yeah',\n", - " '(spanker) skiiiiw',\n", - " 'omin flügels, spelen steen, papier, tizora',\n", - " 'ik word bejuggled door die youngings en papollas',\n", - " \"private party, private party, zonder phona's\",\n", - " 'heb jij geen money, jij geen money, zeg ze kom maar',\n", - " 'ey bitch we gaan hard (ojee)',\n", - " 'ey bitch we gaan hard (okee)',\n", - " 'living it large (ojee)',\n", - " 'living it large (okee)',\n", - " 'different apart (ojee)',\n", - " 'different apart (okee)',\n", - " 'ey bitch we gaan hard (ojee)',\n", - " 'ey bitch we gaan hard (okee)',\n", - " 'echt lit, trust me',\n", - " 'guest list, bus 3',\n", - " 'bad bitch, plus 4 (four)',\n", - " 'zeg niks, huts, ieh',\n", - " 'ojee (ojee), no phones (no phones), probleem (problema), hoop stroom',\n", - " 'die plakkers, esco-muggers, private party, goon, ja trappers',\n", - " 'ja die wifeys zeggen jokkers, weet niet hoe, ze weten alles',\n", - " 'ik wil dat je gaat, ik wil dat je komt',\n", - " 'ik wil dat je staat en weer zit op de grond',\n", - " 'ik wil de je loopt, ik wil dat je kruipt',\n", - " \"ik wil dat je bukt en 't drukt net een vuist (uh)\",\n", - " 'eten we delen we (eten we delen we)',\n", - " 'jullie die spelen het (jullie die spelen het)',\n", - " \"pappelle dat geven we, weg aan de bitches die menen 't, weten 't\",\n", - " 'represent met de gang, help je mattie ask you friend',\n", - " 'represent met de gang, help je mattie ask you friend',\n", - " 'ik represent met de gang, help je mattie ask you friend, yay',\n", - " 'omin flügels, spelen steen, papier, tizora (tizoraaa!)',\n", - " 'ik word bejuggled door die youngings en papollas',\n", - " \"private party, private party, zonder phona's\",\n", - " 'heb jij geen money, jij geen money, zeg ze kom maar',\n", - " 'ey bitch we gaan hard (ojee)',\n", - " 'ey bitch we gaan hard (okee)',\n", - " 'living it large (ojee)',\n", - " 'living it large (okee)',\n", - " 'different apart (ojee)',\n", - " 'different apart (okee)',\n", - " 'ey bitch we gaan hard (ojee)',\n", - " 'ey bitch we gaan hard (okee)',\n", - " 'hola mami, ben met papi',\n", - " 'private party zo van nada, quintie ster bokachi',\n", - " 'ewa flae, pak die cape, zij moet mee in die whip, maakt niet uit waar ze zit ik heb zwart schmetta wit',\n", - " 'wow gass gass weg',\n", - " 'gratis ballonnen en drank bitch is enough, ja we leven nu echt',\n", - " 'dit is no phones allowed, niks wat je nu tegen houdt',\n", - " 'schat ga me niet liken als je werkt met een privé-account, nah',\n", - " 'voor die flügels speel ik rock, paper and scissors',\n", - " \"maar 'k weet niet of ik wil verliezen of wou winnen\",\n", - " 'chillen, ja baby girl breng je vriendinnen',\n", - " 'je onderschat het, ja, maar het fucked je hele systeem',\n", - " 'er is nieuw meat op die deck',\n", - " \"m'n beveiliger josé vraagt om die sleutel van die gek\",\n", - " 'ik ben zo schuin dus let niet op wat ik zeg',\n", - " 'ey mami noem me jerr, noem me boefie, noem me slash',\n", - " 'omin flügels, spelen steen, papier, tizora (tizoraaa!)',\n", - " 'ik word bejuggled door die youngings en papollas',\n", - " \"private party, private party, zonder phona's\",\n", - " 'heb jij geen money, jij geen money, zeg ze kom maar',\n", - " 'ey bitch we gaan hard (ojee)',\n", - " 'ey bitch we gaan hard (okee)',\n", - " 'living it large (ojee)',\n", - " 'living it large (okee)',\n", - " 'different apart (ojee)',\n", - " 'different apart (okee)',\n", - " 'ey bitch we gaan hard (ojee)',\n", - " 'ey bitch we gaan hard (okee)',\n", - " 'spring voor een trein homie fuck die shit',\n", - " \"sta op je zusje d'r bucketlist\",\n", - " 'lost in de soos ben in love with this',\n", - " 'homie, it is what it is',\n", - " 'spring voor een waggie, homie fuck it',\n", - " 'hier een crack pipe homie suck it',\n", - " 'gaf hem ook aan je bitch en she loved it',\n", - " 'gaf hem ook aan je bitch en she loved it',\n", - " 'je bitch lijkt op big pun, homie wat een afgang',\n", - " 'bij de dealer zit ze shotgun',\n", - " 'en van pak lust ze wel pap van',\n", - " 'ik was laatst bij je moeder thuis',\n", - " 'wijntje en een lijntje met me schoenen uit',\n", - " 'ik kreeg hoofd en zij kreeg een high five',\n", - " 'wou het posten maar die chick die had geen wifi',\n", - " 'spring voor een trein, homie fuck die shit',\n", - " 'sta op je zusje der bucketlist',\n", - " 'lost in de soos ben in love with this',\n", - " 'spring voor een trein, homie fuck die shit',\n", - " 'sta op je zusje der bucketlist',\n", - " 'lost in de soos ben in love with this',\n", - " 'homie it is what it is',\n", - " 'buy je diamonds & pearls en ik hang ze in je necklace',\n", - " 'diamonds en pearls',\n", - " 'di-diamonds en pearls',\n", - " 'reverse cowgirl',\n", - " 'diamonds en pearls',\n", - " 'di-diamonds en pearls',\n", - " 'je bent meer dan dan m’n best friend',\n", - " 'reversed cowgirl, maar we spelen niet in een western',\n", - " 'baby back it up in reverse en',\n", - " 'ik buy je diamonds en pearls en ik hang ze in je necklace',\n", - " 'reverse cowgirl',\n", - " 'diamonds en pearls',\n", - " 'diamonds diamonds en pearls',\n", - " 'reverse cowgirl',\n", - " 'diamonds diamonds en pearls',\n", - " 'bite je in je nek net een musquito',\n", - " 'alleen maar hoge noten ieyooh',\n", - " 'hier wordt goed genoten, houd ‘t duizend net een kilo',\n", - " 'shawty ik zie je feenen',\n", - " 'je shined shined net vaseline',\n", - " 'op een dag wordt dat tasje van je celine',\n", - " 'meer dan een best best friend',\n", - " 'pull up en ik doe m’n thing',\n", - " 'alles is mogelijk',\n", - " 'je moet me wel geloven',\n", - " 'nee ik denk niet aan een no no no girl',\n", - " 'diamonds and pearls net ogen',\n", - " 'je bent meer dan dan m’n best friend',\n", - " 'reversed cowgirl, maar we spelen niet in een western',\n", - " 'baby back it up in reverse en',\n", - " 'ik buy je diamonds en pearls en ik hang ze in je necklace',\n", - " 'reverse cowgirl',\n", - " 'diamonds en pearls',\n", - " 'diamonds diamonds en pearls',\n", - " 'reverse cowgirl',\n", - " 'diamonds diamonds en pearls',\n", - " 'shawty zeg me what it do als ik aan je voel',\n", - " 'als je snapt wat ik bedoel',\n", - " 'pull up en we gaan hoger dan je roof',\n", - " 'shawty zeg me what it do als ik aan je voel, want ik wil niet overkomen als een fool',\n", - " 'als je snapt wat ik bedoel',\n", - " 'pull up en we gaan hoger dan je roof',\n", - " 'maken moves',\n", - " 'meer stroom dan pikachu',\n", - " 'in je bday suit look at you',\n", - " 'baby i’m feeling you',\n", - " 'meer stroom dan pikachu',\n", - " 'baby i’m feeling you, feeling you',\n", - " 'reverse cowgirl',\n", - " 'diamonds en pearls',\n", - " 'diamonds diamonds en pearls',\n", - " 'reverse cowgirl',\n", - " 'diamonds diamonds en pearls',\n", - " 'songtekst van mr. polska – \"pepepe\" ft. bizzey',\n", - " 'i just found the right girl (papapa)',\n", - " 'i can watch her all night long',\n", - " 'ass fat like a diaper (papapa)',\n", - " 'watch her go on and on',\n", - " 'all she do is like',\n", - " 'pepepe, pepepe, pepepe, pepepe',\n", - " 'papapa, papapa, papapa, papapa',\n", - " 'pepepe, pepepe, pepepe, pepepe',\n", - " 'papapa, papapa, papapa, papapa',\n", - " 'ik heb die bom in die broek, ja, bel de police',\n", - " 'raap het op en zak naar beneden door je knees',\n", - " 'shake met die picanha, all you can eat',\n", - " \"meisje gooi die billen van je recht op m'n spies\",\n", - " 'zeg mami, kom met die punani',\n", - " 'je backa is groot, zeg me draag die karl kani',\n", - " 'ik heb die beamer, maar ik wil die la ferrari',\n", - " \"kijk eens naar m'n stack, die is geel als een kanarie\",\n", - " 'meisje rij alsof jij op mijn glijbaan glijdt',\n", - " 'ik maak tijd voor een reis naar ass paradise',\n", - " 'i just found the right girl',\n", - " 'i can watch her all night long',\n", - " 'ass fat like a diaper',\n", - " 'watch her go on and on',\n", - " 'all she do is like',\n", - " 'pepepe, pepepe, pepepe, pepepe',\n", - " 'papapa, papapa, papapa, papapa',\n", - " 'pepepe, pepepe, pepepe, pepepe',\n", - " 'papapa, papapa, papapa, papapa',\n", - " 'pepepe, pepepe, pepepe, pepepe',\n", - " 'papapa, papapa, papapa, papapa',\n", - " 'pepepe, pepepe, pepepe, pepepe',\n", - " 'papapa, papapa, papapa, papapa',\n", - " 'ass fat like a diaper, noem me scooter ik ga hyper, hyper',\n", - " 'schat jij mag blijven',\n", - " 'je zit als op mijn scooter, jij mag hijgen... haaa',\n", - " 'a-ass zo fat ik kan het zien van voren',\n", - " \"ándele, ze wil m'n pokoes horen\",\n", - " \"ze wilt met me mee, ewa ja, zo hoort 't\",\n", - " 'ik zie dat je bakka gestoord is',\n", - " 'rum-pum-pum-pum-pum, akka als een champion',\n", - " 'wine it down, laat me zien wat je kan',\n", - " 'rum-pum-pum-pum-pum, bossen met die engine',\n", - " 'i got the keys and a suite',\n", - " 'i just found the right girl',\n", - " 'i can watch her all night long',\n", - " 'ass fat like a diaper',\n", - " 'watch her go on and on',\n", - " 'all she do is like',\n", - " 'pepepe, pepepe, pepepe, pepepe',\n", - " 'papapa, papapa, papapa, papapa',\n", - " 'pepepe, pepepe, pepepe, pepepe',\n", - " 'papapa, papapa, papapa, papapa',\n", - " 'pepepe, pepepe, pepepe, pepepe',\n", - " 'papapa, papapa, papapa, papapa',\n", - " 'pepepe, pepepe, pepepe, pepepe',\n", - " 'papapa, papapa, papapa, papapa',\n", - " 'it’s the way how you hypnotize me, don’t stop, no, no',\n", - " 'it’s the way how you hypnotize me, don’t stop, no, no',\n", - " 'it’s the way how you hypnotize me, don’t stop, no, no',\n", - " 'it’s the way how you hypnotize me, don’t stop, no, no',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'can i get a witness to testify?',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'are these three fools back at it again?',\n", - " 'yeah, het is aan vanaf de eerste seconde',\n", - " 'en met een aanpak van pak aan, die shit is begonnen',\n", - " 'we kicken in vanuit het pikkedonker',\n", - " 'deze schreeuwlelijk heeft zijn keel gesmeerd en heeft er zin in verdomme',\n", - " 'vergeet de next best en vergeet de youtube views',\n", - " 'vergeet de labels en wie d’r wel en niet toe doet',\n", - " 'want dit is nu (nu!), midden in het moment',\n", - " 'waarin echte onmiddellijk zullen merken of je doof bent',\n", - " '‘t is logisch, ik wil die vieze blikken zien van oh damn',\n", - " 'die beat is hard, die we normaal classic als',\n", - " 'niet je prototype openingsact',\n", - " 'maar heb je onze show voor je weet je zeker dat de toon wordt gezet',\n", - " 'want dit is lonerwerk en oefenen, non-stop',\n", - " 'zoeken die scherpte, werkt het noem ik ‘t on-point',\n", - " 'en misschien nog steeds die underdog',\n", - " 'maar never dat je hoort, ‘jonge, engel & just die lullen maar wat’',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'can i get a witness to testify?',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'are these three fools back at it again?',\n", - " 'yes, we komen correct',\n", - " 'je bent pas doof als je op het podium bent',\n", - " 'de show-and-tell, motherfucka',\n", - " 'hoe groot is je bek als niemand nog echt gelooft wat je zegt',\n", - " 'te veel rappertjes gooien er met de pet naar',\n", - " 'alsof een beetje niveau al meters boven hun cap gaat',\n", - " 'beter kom je correct, ik boost just en vice versa',\n", - " 'tot een level waar we zelf van versteld staan',\n", - " 'het is maar net hoe je presteert onder druk',\n", - " 'hoe verschrikkelijk dicht ben je als een lyric mislukt, kut',\n", - " 'en hoe pak je het op',\n", - " 'nou, kan je er nog om lachen of kap je de trek en ram je op stop',\n", - " '(de show must go on) yeah, we blijven relevant',\n", - " 'de underground act met de meeste shows van nederland',\n", - " 'en kan je d’r niet tegen, is zo veel spelen te druk?',\n", - " 'oké, native, neem ze mee naar de brug',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'can i get a witness to testify?',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'hold up, wait up, you know we come correct',\n", - " 'are these three fools back at it again?',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'ben met vic9 is me gunman',\n", - " 'hij kan zorgen dat je omloopt, of je laten rennen als die gun load',\n", - " 'stoot met gannoes in de omloop',\n", - " \"man's doing road, man's on road\",\n", - " 'mannen raken in paniek als die gun blowt',\n", - " 'i keep my broski beside me',\n", - " \"pijp op de heup, cuz it's likely\",\n", - " 'we blijven rennen op die nikes',\n", - " \"ben met m'n niggas, net yg\",\n", - " 'ben een zware jongen net als aiky',\n", - " 'shoot man down, boy ik fight niet',\n", - " \"ik heb die chain om m'n nek, hij is icy\",\n", - " \"care up, man on man don't try me\",\n", - " 'ik ben altijd op die mat, fuck around you might get shot',\n", - " \"action man, i don't chalk\",\n", - " 'schmurda niggas, ik ben hot',\n", - " 'ik ben altijd op die mat, fuck around you might get shot',\n", - " \"action man, i don't chalk\",\n", - " 'schmurda niggas, ik ben hot (raa, raa!)',\n", - " '2x',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'hey patser, zeg die jongetjes',\n", - " 'niemand als mij, schieten',\n", - " 'verandert je goon in een keeper',\n", - " 'verandert je block in een vriezer',\n", - " 'hey patser, zeg die jongetjes',\n", - " 'als ze willen geen visite',\n", - " 'want die schone blaffer worden viezer',\n", - " 'heb dat ding op de heup, net een pieper',\n", - " 'chill al lang vol met ice, niemand grijpt (ah, ah)',\n", - " 'shooter in de cut, tantoe werk, in bedrijf, niemand grijpt (ah, ah)',\n", - " 'shooter in de cut, plaats delict, geen gezicht, dus geen bewijs (ah, ah)',\n", - " 'shooter in de cut, voor een kleine prijs ga je op en van de lijst',\n", - " 'shooter in de cut',\n", - " 'die bitches die vinden het nice, want gannoes die mikken ze kam',\n", - " 'praat je money, praat ik alles hoog',\n", - " 'praat je gannoes, praat ik alles lang',\n", - " 'die bitches die vinden het nice, want gannoes die mikken ze kam',\n", - " 'praat je money, praat ik alles hoog',\n", - " 'praat je gannoes, praat ik alles lang (bang, bang!)',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'pull up, pull up, pull up, pull up, pull up, team dirty the ting d-d-d-dark the thing murky',\n", - " \"you pulling up to the prince, you can't verse me\",\n", - " 'you got hook and a verse, then come verse me',\n", - " 'man are still, gone like nascar in the black car tinted with a mask off',\n", - " 'man are rap star, they dread like rasta, imposter get bagged like costa (sky, sky)',\n", - " 'grew up in 1104',\n", - " 'came with the squad through 1104',\n", - " \"elf nul vier that eleven 'o four\",\n", - " 'gyal want man from 1104',\n", - " 'cause them man bummy',\n", - " \"we can't stand them\",\n", - " \"cause you spud man don't make you part of the mandem\",\n", - " 'beg make take him dodge like matrix',\n", - " \"10 man deep to the show like i'm asian\",\n", - " 'high like jamaican, that bar taken',\n", - " 'flow still cold homicide like jason',\n", - " \"lying in your raps you can't talk about no bandos\",\n", - " \"wait i can't even look like you\",\n", - " 'catch a m dargg, you can go pen dargg bigging up your chest dargg',\n", - " \"i don't wanna look like you\",\n", - " 'like trap trap in the bando',\n", - " \"i don't wanna look like you\",\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'zeg die mandem, ik ben op de block met die mandem',\n", - " 'broski beside me, is een gunman',\n", - " 'in de cut tot vroeg in de morning',\n", - " 'aye!',\n", - " 'songtekst van frenna – \"16 million\" ft. emms',\n", - " '16 million, ik ben one in a 16 million',\n", - " '(oh baby, wagwhaan?)',\n", - " 'in een 16 million, ik ben one in a 16 million',\n", - " '(oh baby, wagwhaan?)',\n", - " 'in een 16 million, ik ben one in a 16 million',\n", - " '(what is the thing?)',\n", - " 'in een 16 million, ik ben one in a 16 million (aye)',\n", - " 'in een 16 million, ik ben one in a....',\n", - " 'oeh baby, wagwan?',\n", - " \"oh baby, what's new?\",\n", - " 'je weet ik wacht lang, en dat ik niet duw',\n", - " 'je weet ik heb drank, verdrink in jouw ziel',\n", - " 'we turnen papier, vuitton voor je hiel',\n", - " 'aye, aye, aye',\n", - " 'in a 16 million, jij bent one in a 16 million',\n", - " 'in a 16 million, jij bent one in a, jij bent one in a...',\n", - " 'in a 16 million, jij bent one in a 16 million',\n", - " 'in a 16 million',\n", - " 'ah, ah, ah',\n", - " 'in a 16 mil, laat je nooit stikken, maar ik grijp jouw keel',\n", - " 'j-jeez, ik bepaal best veel',\n", - " 'want geef ik wat je eist, zo krijg ik jou stil',\n", - " \"freeze, baby please don't switch sides\",\n", - " 'weer een nieuwe hit, die moet geclipt zijn',\n", - " 'ah, she fell in love with my lifestyle',\n", - " \"boze ogen voor m'n mannen die doen bigtime\",\n", - " 'ik ben lit (prrrr)',\n", - " 'ik zorg chanel voor mijn bitch (hah)',\n", - " 'en ik mag, want ik zorg goed voor mijn kids (hah)',\n", - " 'baby, ik laat niet los, ik heb grip',\n", - " 'jij bent op another way, de kapitein van mijn schip, oh yeah',\n", - " 'in a 16 million, jij bent one in a 16 million',\n", - " 'in a 16 million, jij bent one in a, jij ben one in a...',\n", - " 'in a 16 million, jij bent one in a 16 million',\n", - " 'in a 16 million',\n", - " 'ah, ah, ah',\n", - " 'this is love aye, kiss and hugs aye',\n", - " \"man's not hot, dus ik pull met een winterjas aye\",\n", - " 'jij bent one in a 16 million',\n", - " 'jij bent one in a 16 million',\n", - " 'die millie raken is de motto baby',\n", - " 'fronkel honkel, ben niet dronko baby',\n", - " 'al die poenies die doen loco baby',\n", - " 'strijders samen, kom foto baby',\n", - " 'ze weet ik kom uit de jungle (zo veel vrouwen om mij heen)',\n", - " 'ik heb een probleem, zo veel vrouwen om me heen',\n", - " 'in a 16 million, jij bent one in a 16 million',\n", - " 'in a 16 million, jij bent one in a, jij bent one in a...',\n", - " 'in a 16 million, jij bent one in a 16 million',\n", - " 'in a 16 million',\n", - " 'ah, ah',\n", - " 'my bitch is bad and boujee',\n", - " 'ik kan je brengen naar cookies',\n", - " 'ik zet een lock op die pussy',\n", - " \"ik zeg je, ik geef geen fock om m'n goofy, aye\",\n", - " 'god damn, ik scheur op je bitch',\n", - " \"ik kan d'r zetten in gucci, oh\",\n", - " 'zij kan me vinden in gucci, ay',\n", - " \"laat d'r pitten in m'n hoodies\",\n", - " 'ik ben spits, doelgericht ik ben fit',\n", - " 'soldaat, aye, ik was altijd geschikt',\n", - " 'ah, lady ik zeg je nu wat het is',\n", - " 'aye, één uit de 16 mil, ik ben speciaal want dat is mijn plicht',\n", - " 'baby, wagwan...',\n", - " 'oeh baby wagwhaan?',\n", - " \"oh baby, what's new?\",\n", - " 'je weet ik wacht lang, en dat ik niet duw',\n", - " 'je weet ik heb drank, verdrink in jouw ziel',\n", - " 'we turnen papier, vuitton voor je hiel',\n", - " 'aye, aye, aye',\n", - " 'in a 16 million, jij bent one in a 16 million',\n", - " 'in a 16 million, jij bent one in a, jij bent one in a...',\n", - " 'in a 16 million, jij bent one in a 16 million',\n", - " 'in a 16 million',\n", - " 'ah, ah, ah',\n", - " \"met diquenz, we don't stop, w-w-we don't stop\",\n", - " 'in a 16 mill, jij bent one in a 16 mill']}}},\n", - " 'nn': {'sentence': {'pop': {'meta': {'train_data': ['horna gjallar, vinden bles',\n", - " 'trommer dundrar, vinded bles',\n", - " 'med spjut og boge meter til strid',\n", - " 'me g¥r i bresjen brèdre gjennom blod',\n", - " 'med von om «re i galskapens namn',\n", - " 'me vert aldri slegn sjèl om me fell',\n", - " 'me reiser ei til folkvang til',\n", - " 'vanedronnings famn, v¥re fedre skal',\n", - " 'me mèta om me fell i dag',\n", - " 'me flytar ei fr¥ var lagnad sjèlv',\n", - " 'om vinden ikkje bles v¥r vei',\n", - " 'til valfaders hall brèdre',\n", - " 'med heva spjut i odins namn',\n", - " 'me skal heva krus i odins namn',\n", - " 'nidingar skal falla for v¥re fètter',\n", - " 'dei treng ikkje be om sollyse dagar',\n", - " 'ingen hugsat ein tr«ll uten herre',\n", - " 'slegne vert dei n¥r dei fell',\n", - " 'me hevar v¥pen for v¥r tru',\n", - " 'me slaktar marken for v¥r tru',\n", - " 'ingen n¥de me viser',\n", - " 'for dei som snudde ryggen til',\n", - " 'dèy skal dei som freista',\n", - " '¥ mura brunnen inn',\n", - " 'ei som for med lègn og svik',\n", - " 'gje oss styrke, gje oss mot',\n", - " 'me skal sigra, brèdre gjennom blod',\n", - " 'horns are resounding, the winds are howling',\n", - " 'drums are pounding, the winds are howling',\n", - " 'with spear and bow we go into battle',\n", - " 'we are making a stand, brothers in blood',\n", - " 'with hope for honour in the name of madness',\n", - " 'we will never be defeated, even if we fall',\n", - " 'we are not going to folkvang',\n", - " 'into the arms of the vanir queen',\n", - " 'we shall ?? our fathers if we fall today',\n", - " 'we will not flee from our destiny',\n", - " \"even though the winds aren't blowing our way\",\n", - " 'brothers, to valfaders hall',\n", - " 'with spear raised in the name of oden',\n", - " 'we shall raise mugs in the name of oden',\n", - " 'cowards shall fall at our feet',\n", - " 'they do not have to pray for sun filled days',\n", - " 'no one remembers a slave without a master',\n", - " 'defeated they are when they fall',\n", - " 'we raise weapons for our faith',\n", - " 'we slaughter the fields for our faith',\n", - " 'we have no mercy for those',\n", - " 'who turned their backs',\n", - " 'those who attemmp to close the well',\n", - " 'shall die',\n", - " 'those who lied and betrayed shall die',\n", - " 'give us strenght strength?, give us courage',\n", - " 'we will prevail',\n", - " 'brothers in blood',\n", - " 'ehhh eeey hoo',\n", - " 'ehhh eeey hoo',\n", - " 'ehhh eeey hoo',\n", - " 'ehhh eeey hoo',\n", - " 'i ei havn, longt dar borte i sydensland',\n", - " 'set ein mann, stranda på ei strand',\n", - " 'gje meg di besta flaska med rom',\n", - " 'no vil eg ta ein skål',\n", - " 'i kveld ska me svelga til flasko vert tom, tom... tom... tom, skåla tom',\n", - " 'hey',\n", - " 'sail away, all the way to norges land, sail away du som sigla kan',\n", - " 'sail away, all the way to norges land, sail away du som sigla kan',\n", - " 'dans me meg, vakre senorita, vis meg veg, låt meg fylja deg',\n", - " 'fyll opp mitt tomme glas med rom, no vil eg ta ein skål',\n", - " 'i kveld ska flasko aldri verta tom, tom... tom... tom, skåla tom',\n", - " 'hey',\n", - " 'sail away, all the way to norges land, sail away du som sigla kan',\n", - " 'sail away, all the way to norges land, sail away du som sigla kan',\n", - " 'what should we do with an drunken sailor, what should we do with an drunken sailor',\n", - " 'what should we do with an drunken sailor, early in the morning',\n", - " 'what should we do with an drunken sailor, what should we do with an drunken sailor',\n", - " 'what should we do with an drunken sailor, early in the morning',\n", - " 'ehhh eeey hoo',\n", - " 'ehhh eeey hoo',\n", - " 'ehhh eeey hoo',\n", - " 'ehhh eeey hoo',\n", - " 'sail away, all the way to norges land, sail away du som sigla kan',\n", - " 'sail away, all the way to norges land, sail away du som sigla kan',\n", - " 'what should we do with an drunken sailor, what should we do with an drunken sailor',\n", - " 'what should we do with an drunken sailor, early in the morning',\n", - " 'wub a dub wub a dub, doob de bood',\n", - " 'skjhgkjosd',\n", - " 'doob a boob',\n", - " 'boob a doob',\n", - " 'beep',\n", - " '*dial up sounds*',\n", - " 'hi',\n", - " 'whoever you are',\n", - " 'u suk dik',\n", - " 'i love u',\n", - " 'jk lul ur a disgrace: d',\n", - " \"we're almost over\",\n", - " 'im breaking up with you',\n", - " 'k thnx bai',\n", - " 'ag',\n", - " 'dfh',\n", - " 'afdhf',\n", - " 'adfh',\n", - " 'adf',\n", - " 'h',\n", - " 'adfj',\n", - " 'asfg',\n", - " 'ja',\n", - " 'sfgj',\n", - " 's',\n", - " 'gjs',\n", - " 'fgj',\n", - " 's',\n", - " 'boob a doob',\n", - " 'oh, sinnerman, where you gonna run to?',\n", - " 'sinnerman, where you gonna run to?',\n", - " 'oh, sinnerman, where you gonna run to?',\n", - " 'sinnerman, where you gonna run to?',\n", - " 'oh, sinnerman, where you gonna run to?',\n", - " 'sinnerman, where you gonna run to?',\n", - " 'oh, sinnerman, where you gonna run to?',\n", - " 'sinnerman, where you gonna run to?',\n", - " 'future universal histories',\n", - " 'modernist theme :',\n", - " 'imagine our time seen from 1920, europe after la grande guerre',\n", - " 'welcome mass electricity and socialites on cocaine',\n", - " 'the roaring twenties reverberating from america',\n", - " 'with radio commercials for automobiles',\n", - " 'art deco beaming back, robing every lady, her rooms and cities',\n", - " 'she votes, she works and is sexually awakened by dr. sigmund freud',\n", - " 'as the new york skyline rises with the',\n", - " 'empire state and chrysler buildings',\n", - " 'jazz booms from nouvelle-orléans',\n", - " 'young couples lindy hop their way up',\n", - " 'the weimar republic in germany, dada in berlin and vienna',\n", - " 'followed by the murder of rosa luxemburg in 1919',\n", - " 'the maiden of socialism leads the workers towards the new dawn',\n", - " 'the proprietors of red labour the third international',\n", - " 'prussian theme :',\n", - " \"we're the wilhelmine combattants of 1913\",\n", - " 'prussian burschen aspiring to scars of fame',\n", - " 'eyes und nase covered, now let the swords fly',\n", - " 'the sweet folly of stitching gushing wunden',\n", - " 'drunk students in burschenschaft uniforms',\n", - " 'fighting the mensur für no grund at all',\n", - " 'the jahrhundert ahead shall ridicule our honour',\n", - " 'lach at our pride in vaterland und king',\n", - " 'modernist theme :',\n", - " 'new music follows the stravinsky line of le sacre du printemps 1913',\n", - " 'the motors of modernism rev with t.s. eliot’s the waste land',\n", - " \"and james joyce's ulysses in 1922\",\n", - " 'andré breton and the surrealists manifest in paris in 1924',\n", - " 'fritz lang directs « metropolis » in babelsberg in 1927',\n", - " 'prussian theme :',\n", - " \"schau me in the auge, sag you don't like my narbe\",\n", - " 'the prussian blade gab me another mouth',\n", - " 'i’ll keep on schnickschnacken to the ende',\n", - " 'as the wilhelmine combattant of 1913',\n", - " 'modernist theme :',\n", - " 'ten years of merriness and hope before the depression',\n", - " 'unemployment nationalises socialism, causing armageddon',\n", - " 'german aggression expands from within to the east and to the west',\n", - " 'world war ii ends with the nuclear sunset over the japanese empire',\n", - " 'umgangskrigen',\n", - " 'eg skrur på min menneskelegdom, skreiv du',\n", - " 'floden er skitten og full av lik, skreiv du',\n", - " 'eg skriv : um du skal vinna, må nokon tapa',\n", - " 'eg skriv : ingen hjelper ein som ikkje kan hjelpa',\n", - " 'tidi er ein isbre som utsletter spori etter oss, skreiv du',\n", - " 'ho skyv minnet fyre seg gjenom dalføret, skreiv du',\n", - " 'eg skriv : lat andre ofra seg sigeren',\n", - " 'eg skriv : utnytt dei veike til din fordel',\n", - " 'eg er guden som tok sjølvmord med å drepa sonen',\n", - " 'eg er kongane og hungerens brune tenner',\n", - " 'eg er elden som brann i sodoma',\n", - " 'eg er ulven som sprengde oklahoma',\n", - " 'eg er hornljod i kveldingi, hundeglam i skogen',\n", - " 'eg er siegfried, jaga millom trei i natti',\n", - " 'eg er tunet, treet og kvinna han fann',\n", - " 'eg er sverdet, og armen som treiv det',\n", - " 'eg er hod som skaut og baldur som fell',\n", - " 'eg er frigg som bag og mistelteinen ho gløymde',\n", - " 'eg er kniven som skar og såret som opna seg',\n", - " 'eg er skulden og han som ikkje angra',\n", - " 'eg var tridje verdskrigen som raste over hovudi',\n", - " 'det uniformerte folket som aldri vart informert',\n", - " 'eg krossfesta dei arme til ljoden av raga',\n", - " 'milliardane av liv som aldri klaga',\n", - " 'eg var torsoen som tagg på colaba causeway',\n", - " 'eg var den grønøygde jenta på gata i mumbai',\n", - " 'eg var grapefruktsvulsten i drosjevindauga',\n", - " 'eg var rupiane dei naudkomne ikkje ville hava',\n", - " 'eg skreiv med barberblad i sanningis andlit',\n", - " 'freste eit dikt for kvar von som døydde',\n", - " 'gjev dyri fred, send giftbegeret rundt',\n", - " 'drikk, saman fyrste gongen',\n", - " 'hwilum ylfete song',\n", - " 'dyde ic me to gomene',\n", - " 'nu thu miht gehyran',\n", - " 'tha sorhleod',\n", - " 'daeges ond nihtes',\n", - " 'calde gethrungen',\n", - " 'waeron mine fet',\n", - " 'forste gebunden',\n", - " 'hrimcealde sae',\n", - " 'hreo haeglfare',\n", - " 'haelethum on andan',\n", - " 'ic to sothe wat thaet bith',\n", - " 'haelethum on andan',\n", - " 'ic to sothe wat thaet bith',\n", - " 'eall thaet therinne is',\n", - " 'ceare sarra sorga',\n", - " 'ic eom bitter in breosthord',\n", - " 'mid sorgum gedrefted',\n", - " 'marian leofa modes milde eallgylden',\n", - " 'is me nu lifes hyht thaet ic haelan mag',\n", - " 'ei ta døm største ringsmyra',\n", - " 'noko nord om lauvliseter',\n", - " 'fekk engong sjuguttmyra te namn',\n", - " 'etter noko grufullt hadde hendt',\n", - " 'sju gutter hadde stevna hinaen',\n", - " 'fra setrer rundtom på skauen',\n", - " 'døm vart itte eni’ på ansles vis',\n", - " 'enn om å sliss te blodet rann',\n", - " 'døm skyra greiner ta',\n", - " 'ei furu like ved',\n", - " 'så spissa døm staura te',\n", - " 'og rauk sammen og slogs',\n", - " 'da kampen var over',\n", - " 'låg seks daue att på myra',\n", - " 'med innvolla i henda',\n", - " 'drog nummer sju seg hem',\n", - " 'så gjekk det itte bere',\n", - " \"hell at'n døe etter ei stynn\",\n", - " \"da'n væl var heme og hadde fortelt\",\n", - " 'om slaget som hadde tii stad',\n", - " 'seia detta hendte',\n", - " \"i år sekstenhundreogno'\",\n", - " 'har sju staure fått stå i myra',\n", - " \"som et minne ifrå gammal ti'\",\n", - " 'alt som står i myra',\n", - " 'blir svart som bek og hardt som stål',\n", - " 'drar te seg jernet fra lendet rundt',\n", - " 'eller blodet te sju gutter under torva',\n", - " 'one of the largest ring-marshes',\n", - " 'a stone’s throw north of lauvliseter',\n", - " 'was once named sjuguttmyra',\n", - " 'after something terrible happened there',\n", - " 'seven young shepherds had summoned each other',\n", - " 'from different farms around the forest',\n", - " 'seems they couldn’t come to an agreement any other way',\n", - " 'than to fight until rivers of blood would flow',\n", - " 'they cut branches off',\n", - " 'an old pine nearby',\n", - " 'then they sharpened their spears',\n", - " 'and clashed together and fought',\n", - " 'when the battle was over',\n", - " 'six of them laid dead on the marshlands',\n", - " 'with his own guts in his hands',\n", - " 'the seventh crawled home',\n", - " 'it didn’t end better',\n", - " 'than that he died after a while',\n", - " 'just shortly after he came home',\n", - " 'and told about the battle that had been fought',\n", - " 'ever since this happened',\n", - " 'sometime in the sixteen-hundreds',\n", - " 'seven poles have stood in the marsh',\n", - " 'as a memory of times which have long since passed',\n", - " 'everything that stands in the marsh',\n", - " 'turns pitch-black and hard as steel',\n", - " 'draws iron from the soil around',\n", - " 'or the blood of seven boys six feet under',\n", - " 'at hyggjande sinne',\n", - " 'skylet mathr hoesenn vesa',\n", - " 'heldr gaetenn at gethe',\n", - " 'thas horskr ok thogoll',\n", - " 'koemmr heimesgartha til',\n", - " 'sjaldan verthr vite vorom']},\n", - " 'data': ['deira dagar har mørkna',\n", - " 'moder jord meld sitt frafall',\n", - " 'men sverdet har gått vidare',\n", - " 'til ein ny bærar',\n", - " 'me er einsomme menn',\n", - " 'me bår fenresulvens muspell',\n", - " 'skoll skal sluka sola',\n", - " 'me er djerve menn',\n", - " 'sola svartner',\n", - " 'der fjellvegg ramlar',\n", - " 'nå gjestar sorgen',\n", - " 'på livets tre (yggdrasil)',\n", - " 'for byleits bror farar',\n", - " 'kva er det ikkje kampfar klaren?',\n", - " '(english translation:)',\n", - " '(red and black)',\n", - " 'the days have darkened',\n", - " 'mother earth announces her death',\n", - " 'while the sword has moved on',\n", - " 'to a new bearer',\n", - " 'we are lonesome men',\n", - " 'we bear the wolf-fenris muspell',\n", - " 'skoll shall swallow the sun',\n", - " 'we are brave men',\n", - " 'sun blackens',\n", - " \"where mountain's walls collapse\",\n", - " 'now guest the sorrow',\n", - " \"on the life's tree (yggdrasill)\",\n", - " \"for byleit's brother travels\",\n", - " \"what is it that the warfather can't do?\",\n", - " '(tekst: r. kronheim, grutle kjellson, dirge rep)',\n", - " 'utgards mèrke, langt der ute',\n", - " 'eg kjem ikkje inn, eit offer du krev?',\n", - " 'eit offfer eg krev, ingen lovnad eg gjen',\n", - " 'eg kan gje deg styrke, eg kan gje deg dauden',\n", - " 'de seier du kan ta meg av dage',\n", - " 'du seier du kan ta meg av dage',\n", - " 'men utan meg er heller ikkje du',\n", - " 'skapar av svakhet, meg kan du ikkje truga',\n", - " 'l¦r deg ¥ sj¥ med det retta auga',\n", - " 'du dunkle, du freistar ¥ f¥ meg i knt',\n", - " 'du taler i g¥ter, og f¥r meg vred',\n", - " 'med vrede, du veike, du ingenting f¥r',\n", - " 'din visdom eg krev for at du skal forst¥',\n", - " 'du vil eg skal lida, og end¥ til dåy',\n", - " 'du glèymer mi makt, at du er min tr«ll',\n", - " 'ditt opphav du glèymer. du prisar bedrag',\n", - " 'di verd er ei faginning, ingen heilhet, ingen svar',\n", - " 'orden eg skaper, men du motstrebar meg',\n", - " 'du talar med klårt, kva er det du krev',\n", - " 'eg krev eit offer, eg krev at du blèr',\n", - " 'du v¥ga ¥ trosse dei eldste, som bar deg fram',\n", - " '\"utgards mèrke langt der ute, eit offer vart krevd',\n", - " 'eit offer dei fekk, eit sinn vart styrka, men',\n", - " 'lekam gjekk tapt, klok vert den som veit ¥ v¥ga\"',\n", - " '\"han ofra sitt auge, for at fjan skulle sj¥',\n", - " 'han blèdde for dei som til slutt lot han r¥',\n", - " 'men ingen lovnad ei ga ham, det vart ingen fred',\n", - " 'dei skal fframleis kjempa, til jorda sig ned\"',\n", - " '(musikk: grutle kjellson)',\n", - " '(english translation: an eye for mimir)',\n", - " 'the darkness of utgard, far out there',\n", - " 'i can not enter, are you demanding sacrifce sacrifice??',\n", - " 'i demand a sacrifice, no promise i will give',\n", - " 'i can provide you with strenght strength?, i can give you death',\n", - " 'you say you can end my days',\n", - " 'but without my excistance existence?, would you not be',\n", - " 'creator of weakness, me you can not threaten',\n", - " 'learn how to see with the right eye',\n", - " 'obscure one, you attemp to get me on my knees',\n", - " 'you speak through riddles, and call forth my wrath',\n", - " 'with wrath, weakling, nothing is achieved',\n", - " 'i demand your wisdom, to make you understand',\n", - " 'you want me to suffer, and even to die',\n", - " 'you are forgetting my power, you are but my slave',\n", - " \"your source of origin you're forgetting, your praising deceit\",\n", - " 'your world is an illusion; no wholeness, no answer',\n", - " 'order i crfeate, but your opposing me',\n", - " 'your speaking with a cunning tongue, what are your demands',\n", - " 'i am demanding a sacrifice, i demand to see you bleed',\n", - " 'you have dared to oppose the ancient ones that brought you into excistance',\n", - " 'existence?',\n", - " 'the darkness of utgard, a sacrifice was demanded, a sacrifice they received',\n", - " 'a mind was strengthened, but the flesh was lost',\n", - " 'he who dares becomes wise',\n", - " '\"he gave his eye to see',\n", - " 'he bled for those who let him rule at last',\n", - " 'but no promises they gave him, no peace became',\n", - " 'they shall still be fighting \\'til the earth sinks\"',\n", - " '(music: grutle kjellson)',\n", - " 'one two three',\n", - " 'blackabilly me',\n", - " 'four five six',\n", - " 'burning kicks',\n", - " 'seven eight nine',\n", - " 'i want mine',\n", - " 'ten to one',\n", - " \"let's get it on\",\n", - " 'rockabilly mockabilly',\n", - " \"blackabilly burnin'\",\n", - " 'fuckabilly muckabilly',\n", - " \"whackabilly churnin'\",\n", - " 'cockabilly kickabilly',\n", - " \"trickabilly streamin'\",\n", - " 'ticabilly tocabilly',\n", - " \"clockabilly screamin'\",\n", - " 'me gav ljod til striden',\n", - " 'for å syne kva fred var',\n", - " 'no hev kampen breidt seg',\n", - " 'støyen vorte sann',\n", - " 'ein tvo tri',\n", - " 'det er tidi',\n", - " 'fire fem seks',\n", - " 'ta meg heks',\n", - " 'sju åtte ni',\n", - " 'i svinesti',\n", - " 'ti elleve tolv',\n", - " 'men utan vold',\n", - " 'blackabilly blackabully',\n", - " \"blackabuddy loomin'\",\n", - " 'blackabody blackaboarding',\n", - " \"blackaballing boomin'\",\n", - " 'blackafuzzing blackabuzzing',\n", - " \"blackajazzing freezin'\",\n", - " 'blackamunchy blackacrunchy',\n", - " \"blackawhacky wheezin'\",\n", - " 'me spelar svart metall',\n", - " 'men lèt ingen smaka stål',\n", - " 'me gjev all makt til klangen',\n", - " 'men spiller ikkje blod',\n", - " 'difor ser me attende',\n", - " 'mot uskulds fornalder',\n", - " 'då stridslyst styrde alt',\n", - " 'men ingen døydde i kamp',\n", - " 'chilihead chilihead',\n", - " 'hey chilihead',\n", - " 'why choose autumn',\n", - " 'when spring is an option?',\n", - " 'heacy head heavy head',\n", - " 'hey heavy head',\n", - " \"here's a chili bomb\",\n", - " 'for your blackabilly self',\n", - " 'rockabilly mockabilly',\n", - " 'blackabilly king',\n", - " 'fuckabilly muckabilly',\n", - " 'whackabilly king',\n", - " 'chilihead chilihead',\n", - " 'hey chilihead',\n", - " 'cheer up with colours',\n", - " 'red hot fur',\n", - " 'beerhead beerhead',\n", - " 'blackabilly king',\n", - " 'but if you pray',\n", - " 'winter will come',\n", - " 'rockabilly mockabilly',\n", - " 'blackabilly voguesville',\n", - " 'fuckabilly muckabilly',\n", - " 'whackabilly voguesville',\n", - " 'upp i otta må han rise',\n", - " 'som rikdom vil taka',\n", - " 'upp for sine meiningar',\n", - " 'slik må skalden stande',\n", - " 'til deg som vil i ljodkrig',\n", - " 'lat nåden liggje heime',\n", - " 'gakk berserk på valen',\n", - " 'so kvart steg vert ein siger',\n", - " 'me spelar for å vinne',\n", - " 'i strid med solarljod',\n", - " 'me spelar svart metall',\n", - " 'men spiller ikkje blod',\n", - " 'paroles de la chanson words and ideas :',\n", - " 'one two three',\n", - " 'blackabilly me',\n", - " 'four five six',\n", - " 'burning kicks',\n", - " 'seven eight nine',\n", - " 'i want mine',\n", - " 'ten to one',\n", - " \"let's get it on\",\n", - " 'rockabilly mockabilly',\n", - " \"blackabilly burnin'\",\n", - " 'fuckabilly muckabilly',\n", - " \"whackabilly churnin'\",\n", - " 'cockabilly kickabilly',\n", - " \"trickabilly streamin'\",\n", - " 'ticabilly tocabilly',\n", - " \"clockabilly screamin'\",\n", - " 'me gav ljod til striden',\n", - " 'for å syne kva fred var',\n", - " 'no hev kampen breidt seg',\n", - " 'støyen vorte sann',\n", - " 'ein tvo tri',\n", - " 'det er tidi',\n", - " 'fire fem seks',\n", - " 'ta meg heks',\n", - " 'sju åtte ni',\n", - " 'i svinesti',\n", - " 'ti elleve tolv',\n", - " 'men utan vold',\n", - " 'blackabilly blackabully',\n", - " \"blackabuddy loomin'\",\n", - " 'blackabody blackaboarding',\n", - " \"blackaballing boomin'\",\n", - " 'blackafuzzing blackabuzzing',\n", - " \"blackajazzing freezin'\",\n", - " 'blackamunchy blackacrunchy',\n", - " \"blackawhacky wheezin'\",\n", - " 'me spelar svart metall',\n", - " 'men lèt ingen smaka stål',\n", - " 'me gjev all makt til klangen',\n", - " 'men spiller ikkje blod',\n", - " 'difor ser me attende',\n", - " 'mot uskulds fornalder',\n", - " 'då stridslyst styrde alt',\n", - " 'men ingen døydde i kamp',\n", - " 'chilihead chilihead',\n", - " 'hey chilihead',\n", - " 'why choose autumn',\n", - " 'when spring is an option?',\n", - " 'heacy head heavy head',\n", - " 'hey heavy head',\n", - " \"here's a chili bomb\",\n", - " 'for your blackabilly self',\n", - " 'rockabilly mockabilly',\n", - " 'blackabilly king',\n", - " 'fuckabilly muckabilly',\n", - " 'whackabilly king',\n", - " 'chilihead chilihead',\n", - " 'hey chilihead',\n", - " 'cheer up with colours',\n", - " 'red hot fur',\n", - " 'beerhead beerhead',\n", - " 'blackabilly king',\n", - " 'but if you pray',\n", - " 'winter will come',\n", - " 'rockabilly mockabilly',\n", - " 'blackabilly voguesville',\n", - " 'fuckabilly muckabilly',\n", - " 'whackabilly voguesville',\n", - " 'upp i otta må han rise',\n", - " 'som rikdom vil taka',\n", - " 'upp for sine meiningar',\n", - " 'slik må skalden stande',\n", - " 'til deg som vil i ljodkrig',\n", - " 'lat nåden liggje heime',\n", - " 'gakk berserk på valen',\n", - " 'so kvart steg vert ein siger',\n", - " 'me spelar for å vinne',\n", - " 'i strid med solarljod',\n", - " 'me spelar svart metall',\n", - " 'men spiller ikkje blod']}}},\n", - " 'pl': {'sentence': {'pop': {'meta': {'train_data': ['love is bad my son',\n", - " 'love is bad my son',\n", - " 'for your eager eager eager eager heart',\n", - " 'your bigger eager eager eager heart',\n", - " 'get yourself a gun',\n", - " 'get yourself a gun',\n", - " 'shoot your',\n", - " 'eager eager eager eager heart',\n", - " 'your bigger eager eager eager heart',\n", - " 'zmądrychwstanie racz mi dać panie',\n", - " 'myślobranie nie w moim stanie',\n", - " 'i was raised by songs',\n", - " 'i was raised by songs',\n", - " 'in a little little little little place',\n", - " 'a little little little little place',\n", - " 'you were growing tall',\n", - " 'to 163 or 4',\n", - " \"till i've run run run out of space\",\n", - " 'i run run run out of space',\n", - " 'echo calls your name',\n", - " 'but life stays just the same',\n", - " 'life stays just the same',\n", - " 'słów składanie niedoczekanie',\n", - " 'zmądrychwstanie racz mi dać panie',\n", - " 'myślobranie nie w moim stanie',\n", - " 'zdań igranie spisz na kolanie',\n", - " 'i was raised by songs',\n", - " 'i was raised by songs',\n", - " \"'cause my father he would rather\",\n", - " 'rather have a son',\n", - " 'słów składanie niedoczekanie',\n", - " 'zmądrychwstanie racz mi dać panie',\n", - " 'myślobranie nie w moim stanie',\n", - " 'zdań igranie spisz na kolanie',\n", - " 'górniczo-hutnicza orkiestra dęta robi nam paparara',\n", - " 'robi nam paparara',\n", - " 'to robi nam górniczo-hutnicza orkiestra dęta',\n", - " 'robi nam pararara, robi nam paparara',\n", - " 'robi nam górniczo-hutnicza orkiestra dęta',\n", - " 'robi nam paparara, robi nam paparara',\n", - " 'a co na to nato?!',\n", - " 'nato na to nic! (x3)',\n", - " 'a co na to nato?!',\n", - " 'nato robi nam, robi nam, robi paparara, robi nam paparara',\n", - " 'robi nam górniczo-hutnicza orkiestra dęta',\n", - " 'robi nam paparara, robi nam paparara',\n", - " 'robi nam górniczo-hutnicza orkiestra dęta',\n", - " 'uważaj na zakrętach, nie pal tego skręta',\n", - " 'paparara',\n", - " 'robi nam paparara',\n", - " 'robi nam górniczo-hutnicza orkiestra dęta',\n", - " 'robi nam paparara, robi nam paparara',\n", - " 'a co na to nato?!',\n", - " 'nato na to nic! (x3)',\n", - " 'a co na to nato?!',\n", - " 'nato robi nam, robi nam, robi paparara, robi nam paparara',\n", - " 'you know the opases',\n", - " 'uważaj na wilki man',\n", - " 'you know the opases',\n", - " 'uważaj na wilki man',\n", - " 'you know the opases',\n", - " 'uważaj na wilki man',\n", - " 'you know the opases',\n", - " 'uważaj na wilki man',\n", - " 'robi nam paparara, robi nam paparara',\n", - " 'to robi nam górniczo hutnicza orkiestra dęta',\n", - " 'robi nam paparara, robi nam paparara',\n", - " 'to robi nam górniczo hutnicza orkiestra dęta',\n", - " 'robi nam paparara, robi nam paparara',\n", - " 'to robi nam górniczo hutnicza orkiestra dęta',\n", - " 'uważaj na zakrętach, nie pal tego skręta',\n", - " 'robi nam paparara, robi nam paparara',\n", - " 'to robi nam górniczo hutnicza orkiestra dęta',\n", - " 'robi nam paparara',\n", - " 'robi nam paparara',\n", - " '...',\n", - " 'boże odlatujący w obce dla nas strony',\n", - " 'powstrzymaj odlot swój',\n", - " 'i tul z płaczem do piersi ten wiecznie krzywdzony',\n", - " 'wierzący w ciebie gnój',\n", - " '(b. leśmian , do siostry)',\n", - " 'ashes',\n", - " 'scissors, stones',\n", - " 'blind children playing god',\n", - " 'unnamed species',\n", - " 'broken clock',\n", - " 'wounded soldiers on their way back home',\n", - " 'piece of heaven',\n", - " 'remembrances',\n", - " 'sweat and tears',\n", - " 'poisoned wine',\n", - " 'bitter honey',\n", - " 'second bottom of every dream',\n", - " 'half-dead prophets',\n", - " 'leper whores',\n", - " 'some old clothes of dethroned kings',\n", - " 'mene - tekel - fares',\n", - " 'i dance on the ashes of jerusalem',\n", - " 'mene - tekel - fares',\n", - " 'i weep on the ashes of jerusalem',\n", - " '\"deszcz\"',\n", - " 'zamiast srogiej burzy, slychac suchy grzmot',\n", - " 'taki glosny, taki suchy',\n", - " 'zamiast kropli deszczu scieram lepki pot',\n", - " 'taki lepki, zlem smierdzacy',\n", - " 'hej zwatpienia czas',\n", - " 'hej, powolnej smierci',\n", - " 'hej, scisnietych serc',\n", - " 'hej, spekanych ust',\n", - " 'nad glowa czarne chmury, pod nogami wypalony piach',\n", - " 'juz umilkl ptaków spiew, serca im wypalil zar',\n", - " 'przedramie nozem tne, krew z plowcina mieszam',\n", - " 'siec pajecza wciskam i moczem swym oblewam',\n", - " 'piescia niebu groze, w trucizne plyn zamieniam',\n", - " 'w twarz sie bogu smieje i czekam na deszcz',\n", - " 'english version:',\n", - " '\"the rain\"',\n", - " 'instead of a fierce storm, you hear a dry thunder',\n", - " 'so loud, so dry',\n", - " 'instead of a drop of rain, i wipe my clammy sweat',\n", - " 'so clammy, stinking to the evil',\n", - " 'hey, to the time of doubt',\n", - " 'hey, to slow death',\n", - " 'hey, to sinking hearts',\n", - " 'hey, to cracked lips',\n", - " 'black clouds above, burnt dirt underneath',\n", - " 'bird songs went quiet, embers burned their hearts',\n", - " 'i cut the forearms with a knife, i mix blood with declination',\n", - " 'i squeeze spider’s nest and i pour my piss on it',\n", - " 'i threaten heaven, i change liquid into poison',\n", - " 'i laugh in god’s face and wait for the rain',\n", - " \"i don't think it would be right\",\n", - " 'to call you the one and only',\n", - " 'i had many lovers before',\n", - " 'i might even have loved them more',\n", - " \"i don't think it would be right\",\n", - " 'to call you the one and only',\n", - " 'i cannot tell yet',\n", - " 'coz we have never met',\n", - " \"i don't think it would be right\",\n", - " 'to call you the one and only',\n", - " \"i don't think it would be right\",\n", - " 'to call you the one and only',\n", - " 'all i know is that you might be',\n", - " \"the reason why i'm lonely\",\n", - " \"i don't think it would be right\",\n", - " 'to call you the one and only',\n", - " \"i don't think it would be right\",\n", - " 'to call you the one and only',\n", - " 'i cannot tell yet',\n", - " 'coz we have never met',\n", - " \"i don't think it would be right\",\n", - " 'to call you the one and only',\n", - " 'all i know is that you might be',\n", - " \"the reason why i'm lonely\",\n", - " 'polish part :',\n", - " 'nie jestem pewien',\n", - " 'że to tylko ty jesteś moją jedyną',\n", - " 'miałem przecież dużo innych przed tobą',\n", - " 'i czasami wydaje mi się, że kocham je więcej niż ciebie',\n", - " 'nie jestem pewien',\n", - " 'że to tylko ty jesteś moją jedyną',\n", - " 'ja jeszcze nie znam prawdy',\n", - " 'przecież cię nie znam',\n", - " 'jeszcze cię nie widziałem',\n", - " 'nie jestem pewien',\n", - " 'że to tylko ty jesteś moją jedyną',\n", - " 'wszystko, co teraz chciałbym ci powiedzieć',\n", - " 'to jest to',\n", - " 'że najprawdopodobniej przez ciebie jestem',\n", - " 'samotny',\n", - " 'choć łączy nas wiele tak',\n", - " 'znów czuje chłód',\n", - " 'wciąż brak mi twego głosu',\n", - " 'szczerości słów',\n", - " 'choć wiatr celuje w oczy',\n", - " 'okrada ze snów',\n", - " 'nie odwracaj wzroku',\n", - " 'nim odnajdziesz mnie',\n", - " 'nim odnajdziemy się',\n", - " 'w każdą noc, w każdy dzień',\n", - " 'brak mi tchu, kiedy nie ma cię',\n", - " 'w każdą noc, w każdy dzień',\n", - " 'brak mi tchu, kiedy nie ma cię',\n", - " 'tak blisko mnie, tak blisko mnie, tak blisko mnie',\n", - " 'mnie, mnie, mnie',\n", - " 'w każdą noc, w każdy dzień',\n", - " 'zostań tu, nie oddalaj się',\n", - " 'bez obaw i świadków',\n", - " 'pobiegnijmy w deszcz',\n", - " 'zatańczmy na palcach',\n", - " 'niezdarnie chwiejąc się',\n", - " 'dłonie mam spokojne',\n", - " 'i choć czuje chłód',\n", - " 'zaczekam na ciebie',\n", - " 'aż odnajdziesz mnie',\n", - " 'aż odnajdziemy się',\n", - " 'when all the doors are closing',\n", - " 'when every promise is gone',\n", - " \"it's easy to be hiding\",\n", - " \"but ain't where i belong\",\n", - " 'no need to sugarcoat it',\n", - " 'they say bad habits die hard',\n", - " 'gotta dare to pull the trigger',\n", - " 'put your heart to the stars',\n", - " 'oh boy you better run now',\n", - " 'do boy you better run today',\n", - " \"fuck it start callin' the shots\",\n", - " 'and leave the haters to hate',\n", - " 'we got a million readers',\n", - " 'we got a million rhymes',\n", - " 'yeah we were made for loving',\n", - " 'and freedom is on our side',\n", - " 'its time that we live it up, its time we see the sky',\n", - " \"together we'll keep on tripping\",\n", - " 'to high to ever come down',\n", - " 'it time that we live it up',\n", - " 'its time that we see the sky',\n", - " 'together we keep on tripping',\n", - " 'to high to ever come down',\n", - " 'deano lying on the rainbow',\n", - " 'flying higher',\n", - " 'come to the woods and',\n", - " 'stay with us there',\n", - " 'and nothing in this world',\n", - " 'could make any change',\n", - " 'deano lying on the rainbow',\n", - " 'flying higher',\n", - " 'przyśnił mi się stary pokój',\n", - " 'różowe ściany obfite w motyle',\n", - " 'przy suficie samoloty',\n", - " 'którymi planowałam podróże',\n", - " 'na wszystkie wyspy świata',\n", - " 'mamo, weź mnie na plac zabaw',\n", - " 'young man and the young woman',\n", - " 'wszyscy ci co słuchają chucka mangione',\n", - " 'which way which hole which go',\n", - " 'everyone must spierdalać stąd',\n", - " 'young man and the young woman',\n", - " 'wszyscy ci co słuchają erica claptona',\n", - " 'which way which go which hole',\n", - " 'everyone must spierdalać stąd',\n", - " 'all the (other?) people you know what i mean',\n", - " 'spierdalać, spierdalać',\n", - " 'all the people you know',\n", - " 'young man and the young woman',\n", - " 'wszyscy ci co słuchają marylina mansona',\n", - " 'which way which hole which go',\n", - " 'everyone must spierdalać stąd',\n", - " 'i ten chłopak młody i ta młoda dziewczyna',\n", - " 'co tam nago sobie leżą w trzcinach',\n", - " 'spierdalać, spierdalać',\n", - " 'other people you know',\n", - " 'spierdalać, spierdalać other people',\n", - " 'spierdalać spierdalać, other people',\n", - " 'nooow',\n", - " 'spierdalać spierdalać, other people',\n", - " 'now',\n", - " 'haaaajlee si-leeesjaaa',\n", - " 'mais uma lua / another moon',\n", - " 'aqui, perto de nós, de mim ausente /here, close to us, absent to me',\n", - " 'a força do que fomos e de ser tua /the power of what we were and of being yours',\n", - " 'aqui adormeci, pesadamente, /here i slept, heavily',\n", - " 'caiu dentro de mim mais uma lua. /as ino me fell another moon',\n", - " 'e foram, como sempre, as minhas penas /my sorrows, were there as always',\n", - " \"ou foi a solidão de quem se prende /or was it the solitude of one who's held\",\n", - " 'a querer saber de nós, horas amenas /in the wish to know us, pleasant times',\n", - " \"e tudo o que a minh'alma não entende. /and all my soul does not understand\",\n", - " 'e aqui o que foi nosso vai morrendo, /and here what was ours is dying',\n", - " 'de amor falam as dores da beira fim. /of love the sorrows speak almost ended',\n", - " \"desculpa, meu amor, se te não prendo /pardon me, my love, if i don't hold you\",\n", - " 'mas vivo muito bem dentro de mim. /but live perfectly well within myself',\n", - " 'to tutaj blisko nas, tak mi brakuje',\n", - " 'siły, którą byliśmy i bycie dla ciebie',\n", - " 'to tutaj, śpię uśpiona snem swym ciężkim',\n", - " 'aż spada do mnie całkiem inny księżyc',\n", - " 'to tutaj, śpię uśpiona snem swym ciężkim',\n", - " 'aż spada do mnie całkiem inny księżyc',\n", - " 'i były tam, jak zawsze, moje zmartwienia',\n", - " 'a może to samotność, tego, kto ją trzymał',\n", - " 'chcą poznać nas, gdy czasy dogodniejsze',\n", - " 'i dusza ma wszystkiego nie rozumie',\n", - " 'chcą poznać nas, gdy czasy dogodniejsze',\n", - " 'i dusza ma wszystkiego nie rozumie',\n", - " 'i to, co tu było nasze - to zanika',\n", - " 'o miłości, mówią smutki prawie skończone',\n", - " 'ach wybacz miły mój, że cię nie trzymam',\n", - " 'lecz ty żyj sobie we mnie doskonale',\n", - " 'ach wybacz miły mój, że cię nie trzymam',\n", - " 'lecz ty żyj sobie we mnie doskonale',\n", - " 'ach wybacz miły mój, że cię nie trzymam',\n", - " 'lecz ty żyj sobie we mnie doskonale',\n", - " 'ach wybacz miły mój, że cię nie trzymam',\n", - " 'lecz ty żyj sobie we mnie doskonale',\n", - " 'to nie ja zabijam siebie, to nie ty zabijasz ciebie',\n", - " 'to ten świat zabija nas, już od lat - la lalala la',\n", - " 'how do you feel, a-how do you feel',\n", - " 'mister pedofeel',\n", - " 'czy to ja, czy to ty, czy to ja to, czy to ty ?',\n", - " '(pablopavo)',\n", - " 'a słuchaj mnie ja mówie tobie wolny styl nadaje pablopavo, yes!',\n", - " 'sidney polak połączył się z moją sprawą tutaj jest kawą która mnie stawia teraz tak na nogi ya bwoy! sidney polak jest błogi...',\n", - " 'ja mówie tobie man ja mówię tobie teraz tutaj man',\n", - " 'teraz sidney polak staje u twoich bram - bam, bam',\n", - " 'otwiera teraz tutaj cały ten kram',\n", - " 'gra dla ciebie tutaj zjednoczenie sound system',\n", - " '(reggaenerator)',\n", - " 'what mi said mi dreamin about my jamaican hollyday',\n", - " 'after sunday party is going beauty monday',\n", - " 'is a must mek a chillout with da ganja on the beach',\n", - " 'even when you have no money even when you not a rich',\n", - " 'well - i think da money is a not a problem',\n", - " 'when you meet a beauty gals you must comin falla dem',\n", - " 'i know jamaican uman is a not a femme fatal',\n", - " 'is a very nice to feel hungry look ova dem gal',\n", - " 'one - two - three second and whattai see',\n", - " 'black beauty uman is comin to me',\n", - " 'now i feel so cool and breake all mi a shame',\n", - " 'hi!!! sweety kitty please tell me your name',\n", - " 'i was born a sufferer',\n", - " 'a tree cut from its root',\n", - " 'it was not very long ago',\n", - " 'since i and i found the truth',\n", - " 'i was washed away from sin',\n", - " 'taken to their christening',\n", - " 'never knew the meaning',\n", - " 'till i and i get a revealing',\n", - " 'you‘ve gotta crawl before your walk',\n", - " 'walk before you run',\n", - " 'and if you run and get a fall',\n", - " 'just get up and brush it off',\n", - " 'tyle trudnych pytań i dróg',\n", - " 'by móc odnaleźć klucz',\n", - " 'do pełnej świadomości której nie zastanę już',\n", - " 'rosnącej w siłę represji',\n", - " 'wprowadzającej nas w stan awersji',\n", - " 'nie pozwól światu by mógł',\n", - " 'mieć coś do ukrycia',\n", - " 'pamiętaj każdy błąd prowadzi do prawdy',\n", - " 'a prawda zawsze jest źrenicą życia',\n", - " 'they say',\n", - " 'you‘ve gotta crawl before your walk',\n", - " 'walk before you run',\n", - " 'and if you run and get a fall',\n", - " 'just get up and brush it off (x4)',\n", - " 'elvis presley sing this song',\n", - " 'put some śmieci to the hasiok',\n", - " 'elvis presley sing this song',\n", - " 'put some śmieci to the hasiok',\n", - " 'elvis presley sing this song',\n", - " 'put some śmieci to the hasiok',\n", - " 'elvis presley sing this song',\n", - " 'put some śmieci to the hasiok',\n", - " 'elvis presley sing this song',\n", - " 'put some śmieci to the hasiok',\n", - " 'elvis presley sing this song',\n", - " 'put some śmieci to the hasiok',\n", - " 'elvis presley sing this song',\n", - " 'put some śmieci to the hasiok',\n", - " 'elvis presley sing this song',\n", - " 'put some śmieci to the hasiok x2',\n", - " 'nigdy nie, nigdy nie, nigdy nie wiesz dokąd',\n", - " 'nigdy nie, nigdy nie, nigdy nie wiesz dokąd',\n", - " 'nigdy nie, nigdy nie, nigdy nie wiesz dokąd',\n", - " 'nigdy nie, nigdy nie, nigdy nie wiesz dokąd',\n", - " 'żył sobie chłopczyk',\n", - " 'wierny dziewczynce',\n", - " 'i z tą wiernością',\n", - " 'radość w skrzynce',\n", - " 'jak każdy wie',\n", - " 'to miłość płonie',\n", - " 'a drewniana skrzynka nie sprawdziła się',\n", - " 'na przód ten marsz',\n", - " 'tak się bronią',\n", - " 'i dawno sprawdzona dłoń z dłonią',\n", - " 'na przód do dna',\n", - " 'gdzie smutek już nie ma',\n", - " 'gdzie jedyną prawdą',\n", - " 'jest on i ona',\n", - " 'there was a boy',\n", - " 'and there was a girl',\n", - " 'and if they could',\n", - " 'they would leave this world they',\n", - " 'tried a lot to give it a shot',\n", - " 'and so one day they flew',\n", - " 'watch them now',\n", - " 'walk hand in hand',\n", - " 'they managed somehow',\n", - " 'their own promised land',\n", - " 'maleńka, słuchaj, to kolejny tune dla ciebie',\n", - " 'o tym, co nas łączy i co czuję, nikt nie wie',\n", - " 'bywa tak, że jestem czasem zbyt pewny siebie',\n", - " 'bo przecież w każdej duszy podstępny diabeł drzemie',\n", - " 'i znów świat się zmienia i nic do stracenia',\n", - " 'jeśli postawisz kolejny krok',\n", - " 'to czas przebudzenia, zmiana pola widzenia',\n", - " 'już nie wypuszczę szczęścia z rąk posłuchaj mnie',\n", - " 'sometimes i know how beautiful is my soul',\n", - " 'please open the door than my heart will be only your',\n", - " 'throw away your every little fear',\n", - " 'i wanna see on your face joyfull tears',\n", - " 'and just remember baby girl this love is real, this love is real',\n", - " 'a ja podążam pustymi ulicami',\n", - " 'szukam ludzi, którzy są z tematem obeznani tak, jak ja',\n", - " 'kto nie zna miłości, a z niej się śmieję',\n", - " 'popada w beznadzieje, ja z góry na to leję, ta!',\n", - " 'ta siła, którą mam, ta siła, którą znam',\n", - " 'każdego dnia daje motywacje',\n", - " 'ta siła, którą mam, ta siła, którą znam',\n", - " 'daje mi z życia satysfakcje',\n", - " 'sometimes i know how beautiful is my soul',\n", - " 'please open the door than my heart will be only your',\n", - " 'throw away your every little fear',\n", - " 'i wanna see on your face joyfull tears',\n", - " 'and just remember baby girl this love is real, this love is real',\n", - " 'we was meant to love one another',\n", - " 'no matter what your color',\n", - " \"'cause we are all one\",\n", - " 'you must start to looking at yourself',\n", - " 'and you will see the beauty of your soul',\n", - " 'let your soul take control, let it lose your mind',\n", - " 'you know how to show that the god meant take control',\n", - " 'sometimes i know how beautiful is my soul',\n", - " 'please open the door than my heart will be only your',\n", - " 'throw away your every little fear',\n", - " 'i wanna see on your face joyfull tears',\n", - " 'and just remember baby girl this love is real, this love is real',\n", - " '\"wiatr\"',\n", - " 'znam te szara cisze, co noc poprzedza dluga',\n", - " 'znam ten szum za oknem, co mysli ciagle miesza',\n", - " 'wiem, ze juz za chwile pieklo w glowie mi otworzy',\n", - " 'wiem, ze siarka oddech czuc, popielny wiatr wypluwal',\n", - " 'popielny wiatr wieje, wieje',\n", - " 'popielny wiatr wieje, co imie zetrze me ze skal',\n", - " 'wiem, ze juz nie zasne',\n", - " 'boje sie otworzyc oczy',\n", - " 'serce bije rytmem',\n", - " 'wybijanym w okiennicach',\n", - " 'i dobrze wiem, ze tu przychodzisz',\n", - " 'bo wiesz, ze skowyt twój rozumiem',\n", - " 'i slucham twych slów skrzywionych',\n", - " 'co krzywa droga mnie prowadza',\n", - " 'popielny wiatr...',\n", - " 'a pieklo wciaz plonie',\n", - " 'i zarem swym bucha',\n", - " 'plonie i plonie',\n", - " 'popiolem lka',\n", - " 'popielny wiatr',\n", - " 'popielny wiatr',\n", - " 'plonie i plonie',\n", - " 'popiolem lka',\n", - " 'a pieklo wciaz plonie',\n", - " 'i zarem swym bucha',\n", - " 'plonie i plonie',\n", - " 'popiolem lka',\n", - " 'popielny wiatr',\n", - " 'plonie i plonie',\n", - " 'popiolem sra',\n", - " 'i krzywym okiem patrze krzywo',\n", - " 'na usmiechy krzywych twarzy',\n", - " 'i pluje krwia z mych czarnych pluc',\n", - " 'rzygam slów popiolem',\n", - " 'krzywa droga wciaz podazam',\n", - " 'tylko taka znam',\n", - " 'popiól czuje w ustach. ogien lykam w slinie',\n", - " 'patrze w pusta sciane, by imie swe przypomniec',\n", - " 'widze cienie startych slów, z niczym nie kojarze',\n", - " 'i tylko wiem, ze zyje, bo boli...',\n", - " 'english version:',\n", - " '\"the wind\"',\n", - " 'i know this grey silence that precedes a long night',\n", - " 'i know that in a moment it opens a hell in my head',\n", - " 'i know that the breath smells to sulphur, the ash-wind was spitting out',\n", - " 'the ash wind blows, it will erase my name from the rocks',\n", - " 'i know i will not fall asleep',\n", - " 'i fear to open my eyes',\n", - " 'the heart beats to the rhythm',\n", - " 'made by the shutters',\n", - " 'i know it well, you come in here',\n", - " 'because you know, i understand your howl',\n", - " 'and i listen to your twisted words',\n", - " 'that leads me the bad way',\n", - " 'the ash wind',\n", - " 'and the hell still burns',\n", - " 'and burst with its heat',\n", - " 'it burns and burns',\n", - " 'gulping ashes',\n", - " 'the ash wind',\n", - " 'the ash wind',\n", - " 'it burns and burns',\n", - " 'gulping ashes',\n", - " 'the ashy wind',\n", - " 'burns and burns',\n", - " 'it shits ash',\n", - " 'and with a turned eye i look wrong',\n", - " 'at the smiles of crooked faces',\n", - " 'and i spit blood from my black lungs',\n", - " 'i vomit ash of words',\n", - " 'i still follow the wrong way',\n", - " 'that’s the only one i know',\n", - " 'i taste ash in my mouth, i swallow fire in my saliva',\n", - " 'i look at empty wall to recall my name',\n", - " 'i see the shadows of erased words, i don’t associate them with anything',\n", - " 'and i only know that i’m alive because it hurts....',\n", - " 'dusze się, brak mi tchu, płonę tu!',\n", - " 'dusze się, brak mi tchu, płonę tu!',\n", - " 'ogłaszam wszem i wobec stan gotowości',\n", - " 'tylko teraz możesz zmienić bieg historii',\n", - " 'już czas powstrzymać koniec',\n", - " 'koniec tego świata',\n", - " 'przerwać ten proces',\n", - " 'zaćmienie uczuć, letarg w nas',\n", - " 'wzywam was!',\n", - " 'tu i teraz!',\n", - " 'huragan!',\n", - " 'zaprawdę powiadam wam',\n", - " 'wierzcie mi lub nie!',\n", - " 'nikt nas nie poprowadzi',\n", - " 'tylko nasze serca!',\n", - " 'pogrzebać histerię',\n", - " 'zatopić lęk, uśmierzyć ból',\n", - " 'ulokować naszą wiarę w nas!',\n", - " 'teraz!',\n", - " 'już czas powstrzymać koniec tego świata!',\n", - " \"suffocating, without air, i'm in flames!\",\n", - " \"suffocating, without air, i'm in flames!\",\n", - " 'i hereby announce the state of emergency',\n", - " 'only now you can alter history',\n", - " \"it's time to save this world\",\n", - " 'break the downward spiral',\n", - " 'abort the process',\n", - " 'of desensitization in us!',\n", - " 'come to me!',\n", - " 'here and now!',\n", - " 'hurricane!',\n", - " 'verily i say to you',\n", - " 'believe me or not',\n", - " 'no one will lead us',\n", - " 'apart from our hearts',\n", - " \"let's bury hysteria\",\n", - " \"let's drown the fear and numb the pain\",\n", - " 'and put our faith in ourselves!',\n", - " 'right now!',\n", - " \"it's time to abort the countdown to extinction!\",\n", - " 'ever homeward, ever homeward, yearns the weary rover',\n", - " \"ever homeward, ever homeward, till the journey's over\",\n", - " 'warm embraces and friendly faces, saying welcome home',\n", - " \"let me lie there 'neath the sky there, never more to roam\",\n", - " 'ever homeward, ever homeward, yearns the weary rover',\n", - " \"ever homeward, ever homeward, now the journey's over\",\n", - " 'wolne serce, lekką dusza, mam też dom mój blisko',\n", - " 'jak dzień spłynął rok, bo blisko jest już me ognisko',\n", - " 'choć już obce co tam będzie, serce do was płynie',\n", - " 'to jest dom mój, o nim śniłem, zawsze tam z oddali',\n", - " 'ever homeward, ever homeward, yearns the weary rover',\n", - " \"ever homeward, ever homeward, now the journey's over\",\n", - " 'dziś opowiem wam historię o kowboju',\n", - " 'który w prerii jadąc na rumaku swoim',\n", - " 'poczuł suchość w swoich ustach',\n", - " 'i miłości dawnej zew',\n", - " 'więc zatrzymał się na chwilę',\n", - " 'by kaktusa sobie zjeść',\n", - " 'i niestety kaktus trafił, co zupełnie inny jest',\n", - " 'a w pejotlu taka siła, że kowboja odmieniła',\n", - " 'rascynacji doznał światem psychodeli kowboj nasz',\n", - " 'nawet obraz który widzi jakiś inny teraz jest',\n", - " 'rzucił kolty, puscił konia, na gitarze zaczął grać',\n", - " 'ze swą marry gdzieś na ranczo do starości spokój mieć',\n", - " 'i co roku do kaktusa wrócić znów..',\n", - " 'english translation:',\n", - " \"today i'll tell you a story\",\n", - " 'of a cowboy riding his horse through a prairie',\n", - " 'who felt dryness in his mouth',\n", - " 'and the calling of a long gone love',\n", - " 'so he stopped for a moment to eat a cactus',\n", - " 'but, alas, he found a cactus that is completely different',\n", - " \"and in peyote there's such a power that it changed the cowboy\",\n", - " 'our cowboy felt fascinated by the world of psychedelia',\n", - " 'even the image he is seeing is somewhat different now',\n", - " 'he threw away his colts, let his horse go, started playing his guitar',\n", - " 'to have peace on a ranch with his mary until they are old',\n", - " 'and to return to the cactus every year',\n", - " 'mother of my dreams',\n", - " 'follow the winds of thy heart',\n", - " 'and reach the shore of passion',\n", - " 'mother of my sins',\n", - " 'follow the stream of thy blood',\n", - " 'and be the lord of yours desires',\n", - " 'mother of my dreams',\n", - " 'follow the vibes of thy body',\n", - " 'and ignore your thoughts',\n", - " 'mother of my sins',\n", - " 'follow the weaves of thy soul',\n", - " 'and live your life without a fear',\n", - " 'przyzwol, o matko milosci',\n", - " 'szerafko trosk i radosci!',\n", - " 'tak po swiecie niechaj wszedzie',\n", - " 'twoja wladza wieczna bedzie!',\n", - " 'wrong side of the street',\n", - " \"wanna dream but i can't sleep\",\n", - " 'wrong side of the street',\n", - " \"wanna cry but i can't speak\",\n", - " 'wrong side of the street',\n", - " 'gotta ride a losing streak',\n", - " 'wrong side of the street',\n", - " \"wanna dream but i can't sleep\",\n", - " 'wrong side of the street',\n", - " 'wrong side',\n", - " 'wrong side of the street',\n", - " \"wanna cry but i can't speak\",\n", - " 'wrong side of the street',\n", - " 'gotta ride a losing streak',\n", - " 'wrong side of the street',\n", - " \"wanna dream but i can't sleep\",\n", - " 'wrong side of the street',\n", - " 'wrong side',\n", - " 'nie boj sie, sprobuj jeszcze raz',\n", - " 'potykaz sie, znowu pecha masz',\n", - " 'byc moze nie masz szans',\n", - " 'kto to wie',\n", - " 'pamietaj jestem tu',\n", - " 'na zfe i dobre',\n", - " 'nie jestes sam, zaqofaj mnie ¹',\n", - " 'promete, jura/ promise, swear',\n", - " 'estás a pensar em mim, promete, jura /you are thinking of me, promise, swear',\n", - " 'se sentes como eu o vento a soluçar /if like me you feel in the sobbing of the wind',\n", - " 'as verdades mais certas mais impuras /truths more certain, more impure',\n", - " \"que as nossas bocas têm p'ra contar /that our lips have to tell\",\n", - " 'se sentes lá fora a chuva estremecida /if you fell the trembling rain out there',\n", - " 'como o desenlaçar duma aventura / as the inleashing of an adventure',\n", - " 'que pode ou não ficar por toda a vida /thar may or may not endure for life',\n", - " 'diz que sentes como eu, promete, jura /say you feel like me, promise, swear',\n", - " 'se sentes este fogo que te queima / if you feel this fire that burns you',\n", - " 'se sentes o meu corpo em tempestade /if you feel my body storming',\n", - " 'luta por mim amor, arrisca, teima /fight for me my love, risk, fear',\n", - " 'abraça este desejo que me invade /embrace this desire that invades me',\n", - " 'se sentes meu amor, o que eu não disse /if you feel my love, that what i have not said',\n", - " 'além de todo o mais do que disseste /is, above all, more than what you said',\n", - " 'é que não houve verso que eu sentisse /and in not one line of which i felt anything',\n", - " 'aquilo que eu te dei e tu me deste /of what i gave to you and you to me',\n", - " 'myślisz o mnie, obiecujesz, przysięgasz',\n", - " 'a jeśli czujesz, tak jak ja, że wiatr łka',\n", - " 'najbardziej pewne prawdy nie zawsze czyste',\n", - " 'i muszą się z tym liczyć nasze usta',\n", - " 'gdy czujesz, jak na zewnątrz wstrząsa deszczem',\n", - " 'i jak się ma rozpętać ta przygoda',\n", - " 'to może być lub nie na całe życie',\n", - " 'mówisz, czujesz jak ja, przysięgasz, ślubujesz',\n", - " 'gdy czujesz, jak ten ogień parzy, płonie',\n", - " 'gdy myślisz, że me ciało jest jak w sztormie',\n", - " 'a walka o mą miłość jest ryzykiem',\n", - " 'i to pragnienie, przytłacza mnie uściskiem',\n", - " 'gdy sądzisz, że ma miłość to już nie to',\n", - " 'tak poza wszystkim tym, co powiedziano',\n", - " 'to nie jest wcale wiersz, który ja czuję',\n", - " 'tamto, co ci dałam i ty mi również',\n", - " 'gdy czujesz, że na zewnątrz wstrząsa deszczem',\n", - " 'i jak się ma rozpętać ta przygoda',\n", - " 'to może być lub nie na całe życie',\n", - " 'mówisz, że czujesz jak ja, przysięgasz, ślubujesz',\n", - " 'we came from district laying very far from here',\n", - " \"so we don't understand these rules you gotta here\",\n", - " \"so i've had spoke him pope visiting you're at countryside\",\n", - " 'there is no city we can buy only bottle of wine',\n", - " 'nobody wanna sell anything that we want to drink',\n", - " \"that man i'm sure just leave, leaves no nothing\",\n", - " 'the prohibition made the gangsters like al capone',\n", - " 'did you see white morons just part of the twilight zone',\n", - " \"so we don't want no prohibition in a warsaw\",\n", - " \"so we don't want no prohibition in a cracow, eja!\",\n", - " \"so we don't want no prohibition in a stylee\",\n", - " 'ajri, ajri in a different stylee',\n", - " 'ajri, ajri in a different stylee',\n", - " 'ajri, ajri in a different stylee',\n", - " 'we came from lagos if you really wanna know, yes!',\n", - " 'not every pope is the reason to say no to us',\n", - " 'to drinking some or to drinking little some more',\n", - " 'i love girl with the legs like a betty ford',\n", - " 'to sell not drink during john paul visiting ya',\n", - " \"which motherfucker there's to brake this original law\",\n", - " 'me say me love in a different stylee',\n", - " 'babilons had met really, really thirsty',\n", - " \"so we don't want no prohibition in a warsaw\",\n", - " \"so we don't want no prohibition in a cracow\",\n", - " \"so we don't want no prohibition in a stylee\",\n", - " 'ajri, ajri in a different stylee',\n", - " \"so we don't want no prohibition in katowice\",\n", - " \"so we don't want no prohibition in gliwice\",\n", - " \"so we don't want no prohibition in a stylee\",\n", - " 'ajri, ajri in a different stylee',\n", - " 'ajri, ajri in a different stylee',\n", - " 'ajri, ajri in a different stylee',\n", - " 'ajri, ajri in a different, different stylee',\n", - " 'different, different stylee',\n", - " 'different, different stylee',\n", - " 'different, different stylee',\n", - " 'different, different stylee',\n", - " 'different, different stylee',\n", - " 'different, different stylee',\n", - " 'different, different stylee',\n", - " 'warszawscy radni to największa bandytierka',\n", - " 'każdy chciwie na publiczne pieniądze zerka',\n", - " 'jak tak patrzę to cyniczni i złośliwi',\n", - " 'głupi, pasożyty, insekter, nowotwór na organizmie żywym',\n", - " 'radny kradnie zasada jest taka',\n", - " 'synekura tego typu warta jest siusiaka',\n", - " 'lub pipuni wszelkiej maści złodziei na stołkach',\n", - " 'służba wasza temu miastu to kit na kółkach!',\n", - " 'nie chcemy żadnej prohibicji in a warsaw',\n", - " 'nie chcemy żadnej prohibicji in a cracow, eja',\n", - " 'nie chcemy żadnej prohibicji nawet w walii',\n", - " 'ajri, ajri in a different stylee!',\n", - " 'ajri, ajri in a different stylee!',\n", - " 'ajri, ajri in a different stylee!',\n", - " \"so we don't want no prohibition in a warsaw\",\n", - " \"so we don't want no prohibition in a cracow, eja!\",\n", - " \"so we don't want no prohibition in a stylee\",\n", - " 'ajri, ajri in a different stylee!',\n", - " 'ajri, ajri in a different stylee!',\n", - " 'ajri, ajri in a different stylee!',\n", - " 'ajri, ajri...',\n", - " 'radni warszawy to zupełna bandytierka',\n", - " 'mówię, co tu można by zagrabić każdy jeden zerka',\n", - " 'oni ja myślę zachowują się nieładnie',\n", - " 'radny kradnie - a całe miasto na dnie!',\n", - " 'na ulicy dziś królują traffic i bandyci',\n", - " 'duże miasto, duża kasa ratusz się nasyci',\n", - " 'ingerencji prawo oddział babilonu rości',\n", - " 'nie ma wolności bez solidarności',\n", - " 'nie ma ojczyzny bez białostoczczyzny',\n", - " 'nie ma tradycji bez prohibicji',\n", - " 'nie ma nowych mostów bez łapówek dla starostów',\n", - " 'nie ma oleju bez pancernego kleju',\n", - " 'nie ma el dupy gdy rozum lodem skuty',\n", - " 'nie ma el dupy gdy rozum lodem skuty',\n", - " 'nie ma el dupy gdy rozum lodem skuty',\n", - " 'nie ma satyry bez doktora yry',\n", - " 'nie ma satyry bez doktora yry',\n", - " '(reggaenerator)',\n", - " 'oh, my name is sandra i am living in jamaica',\n", - " 'if you wanna know my fire - if you want lova meka',\n", - " 'i can give you honey my special invitation',\n", - " 'to da dansall party and body confrontation',\n", - " 'what mi what mi what mi what mi what mi what mi said',\n", - " 'what mi what mi what mi what mi stigidingding whoai !',\n", - " 'what mi what mi what mi what mi what mi what mi said',\n", - " 'what mi what mi what mi what mi stigidingding whoai !',\n", - " 'mista polak is incoming to da town',\n", - " 'sidney polak puka do twoich bram',\n", - " 'moje imię to reggaenerator - yes i bless man !',\n", - " 'fire bun dem ! gimme da riddim man yes i ! whoai !',\n", - " '(pablopavo)',\n", - " 'muzyka reggae mówie tobie muzyka dancehall',\n", - " 'sidney polak teraz otwiera tutaj bal',\n", - " 'muzyka reggae ja mówie muzyka dancehall',\n", - " 'a zjednoczenie gra dla ciebie sound system',\n", - " 'wszystkie szyny są tutaj gotowe na pociągi man',\n", - " 'ja mówię tobie do ciebie teraz riddimy tutaj wysyłam',\n", - " 'ty stajesz teraz u moich bram',\n", - " 'sidney polak to mój brat ja mówie tobie boom shack-a-lack',\n", - " 'zjednoczenie teraz tutaj na arenie',\n", - " 'zobacz człowieku tutaj tak mistyczne połączenie yes i !',\n", - " 'inna dancehall style inna dancehall dancehall style...',\n", - " 'rosa do madragoa /rose of madragoa',\n", - " 'a rosa do madragoa /rose of madragoa',\n", - " 'enche a canastra na praça / filling her basket in the market',\n", - " 'vem para a rua, apregoa /out in the street her cries',\n", - " 'e acorda mei lisboa /aweken half of lisbon',\n", - " 'que sorri quando ela passa /which smiles as she passes by',\n", - " 'sobe as escadas divertida /merrily she ascends the steps',\n", - " 'numa alegria que alastra /with a joy she spreads around her',\n", - " 'baila-lhe a saia garrida /her bright skirt a-dancing',\n", - " 'náo lhe pesa a crus da vida /the cross of life weighting light upon her',\n", - " 'pesa-lhe mais a canastra /her basket weighting more',\n", - " 'se pela sombra das esquinas /if through the corner shadows',\n", - " 'a sua voz atordoa /her voice resounds',\n", - " 'sabem as outras varinas /other market women know',\n", - " 'quando passa pelas trinas /when she passes through the alleyways',\n", - " 'a rosa do madragoa /rose of madragoa',\n", - " 'ach różo ty, z madragoy',\n", - " 'napełnij na targu koszyk',\n", - " 'przyjdź tu klientów namawiać',\n", - " 'połowę zbudzić lizbony',\n", - " 'kiedy tędy przechodzisz',\n", - " 'wesoło wchodzi na schody',\n", - " 'radość się od niej rozchodzi',\n", - " 'tańczy szykowna spódnica',\n", - " 'nie waży wiele krzyż życia',\n", - " 'bo więcej waży jej koszyk',\n", - " 'gdy w cieniu rogów ulicy',\n", - " 'jej głos się wokół rozchodzi',\n", - " 'to wiedzą inne handlarki',\n", - " 'przez korytarze przechodzi',\n", - " 'ta róża – ta róża z madragoy',\n", - " '\"zniwa\"',\n", - " 'spójrz, jak slonce zachodzi',\n", - " 'patrz, bo juz nigdy nie wzejdzie',\n", - " 'wiec przytul sie do mnie, wez mnie w ramiona',\n", - " 'opowiem ci basn na dobranoc',\n", - " 'a dym ich katuszy... spij kochanie, spij...',\n", - " 'na wieki wieków sie wznosi...i nie patrz mi w oczy...',\n", - " 'i nie maja spoczynku we dnie i w nocy ...przestan juz oddychac...',\n", - " 'wyznawcy diabla i jego obrazu... przestan juz widziec...',\n", - " 'wiem, ze w ogniu splone. powiedz mi, czy to wolna wola',\n", - " 'upadl, upadl... uczyles mnie milosci',\n", - " 'wielki babilon... poznalem nienawisc',\n", - " 'co winem swego nierzadu... ból im na imie',\n", - " 'napoil wszystkie narody... przychodzi po zmroku',\n", - " 'wiem, ze w ogniu splone. powiedz mi, czy to wolna wola',\n", - " 'zapusc swoj sierp',\n", - " 'i zniwa swego dokonaj',\n", - " 'zapusc swoj sierp',\n", - " 'bo dojrzalo juz zniwo na ziemi...',\n", - " 'krew... wciaz i wciaz',\n", - " 'ogien... wciaz i wciaz',\n", - " 'milosc, czy tak ja rozumiesz',\n", - " 'kochasz? jest diabel w kochaniu',\n", - " 'ogien... wciaz i wciaz',\n", - " 'ksiezyc, juz w d sie odgial. dwa ksiezyce to pelen okrag',\n", - " 'w smrodzie rzygowin, wóda ochrzczonych',\n", - " 'to moja krew. moja milosc',\n", - " 'english version:',\n", - " '\"harvest\"',\n", - " 'look how the sun goes down',\n", - " 'look cause it’ll never come up',\n", - " 'so give me a hug, take me in your arms',\n", - " 'i’ll tell you a goodnight fairy-tale',\n", - " 'and the smoke torments them, sleep honey, sleep',\n", - " 'it goes up for centuries …and don’t look into my eyes',\n", - " 'they have no rest for days and nights ...stop breathing',\n", - " 'the worshippers of the devil and his image....stop seeing',\n", - " 'i know i’ll burn in the fire. tell me if it’s free will',\n", - " 'it went down, it went down…you taught me love',\n", - " 'great babyloon… i met the hate',\n", - " 'which is guilty of his anarchy their name is pain',\n", - " 'it fed all the nations...it comes after dark',\n", - " 'i know i’ll burn in the fire, tell me if it’s free will',\n", - " 'use your sickle',\n", - " 'and take your toll',\n", - " 'use your sickle',\n", - " 'because the harvest is rape on the earth',\n", - " 'blood…on and on',\n", - " 'fire…. on and on',\n", - " 'love, do you understand it like that?',\n", - " 'do you love? there is a devil in loving',\n", - " 'fire … on and on',\n", - " 'the moon already folded in a d.two moons form a full circle',\n", - " 'in the stench of vomiting, baptized in spirit',\n", - " 'this is my blood, my love',\n", - " 'katy :',\n", - " 'i wanted to ask you something – i came from england and wrote a song, a song that’s my response from my creativity, and i wanted to ask, has my song brought something new into your world?',\n", - " 'chciałam pana o coś zapytać. jestem z anglii i napisałam piosenkę, która jest wynikiem mojej twórczości i chciałabym się dowiedzieć, czy wniosła ona coś nowego do pańskiego świata?',\n", - " 'kazik',\n", - " 'it’s the first time in my life i’ve ever encountered this, that’s why it’s been a bit of a…shock for me. that people like this still exist, people who are inspired by my life, and they write to inspire others, they write the tunes they want to write, the tunes they’re able to write. yes. it’s the first time in my life',\n", - " 'pierwszy raz w życiu się z tym spotkałem, dlatego jest to dla mnie taki…trochę szok, że gdzieś istnieją tacy ludzie, dla których moje życie jest inspiracją. oni piszą inspirując innych, piszą muzykę przetwarzając ją na swoje melodie, i na coś co jest im bliskie. tak, to pierwszy raz w moim życiu',\n", - " 'dziki mówił, że to jego siostra jest',\n", - " 'a ja nie wierzyłem',\n", - " 'chociaż każdy dał się nabrać',\n", - " 'na ten żart',\n", - " 'armia wygrała mecz',\n", - " 'na stadionie wielki deszcz',\n", - " 'karolina, kazi, matczak',\n", - " 'no! i ty, i ty',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker now',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker now',\n", - " \"she's a punk punk, a punk rocker\",\n", - " 'punk punk a punk rocker',\n", - " 'punk punk a punk rocker',\n", - " 'punk punk a punk rocker',\n", - " 'hej!',\n", - " 'te pociągi jadą puste nie wiem gdzie',\n", - " 'i ty tego nie wiesz',\n", - " 'może to są czyste formy naszych dóbr',\n", - " 'no i skąd bym wiedzieć mógł',\n", - " 'że dojedziemy tu',\n", - " \"movement of jah' people\",\n", - " 'ja, i ty, i ty',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker now',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker now',\n", - " \"she's a punk punk, a punk rocker\",\n", - " 'punk punk a punk rocker',\n", - " 'punk punk a punk rocker',\n", - " 'punk punk a punk rocker',\n", - " 'hej!',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker now',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker',\n", - " 'sheena is a punk rocker now',\n", - " '(now now now)',\n", - " 'gabba gabba hey!!!',\n", - " 'force of nihility seems like to at last',\n", - " 'sins of six salvations destroy the sign of christ power',\n", - " '...although the suffocation i revived my life',\n", - " 'silent humiliation tearing my veins',\n", - " 'before the perish i command to be strong',\n", - " 'for devil inquisition inner myself',\n", - " \"i die for sin committed spreading it's stream\",\n", - " \"now forever sincere storm in my mind's endeavor\",\n", - " 'where light and darkness f*ck together',\n", - " 'ferocious behaviour to make the sin a savior',\n", - " 'mym grzechem szaleñstwo ku czci piekielnych bram...',\n", - " 'so foresee god shall fail at last!',\n", - " 'raped innocence',\n", - " 'then devil dwell',\n", - " 'satanic scent...',\n", - " '...w p³omieniach mych snów i pragnieñ dna',\n", - " 'w czelu\\x9cciach mej duszy ukrywam strach',\n", - " 'w mroku sk³êbiony przeklinam \\x9cwiat',\n", - " 'w obliczu nico\\x9cci wyrzekam boga!',\n", - " 'the motion seduction i smell an erotic fragrance',\n", - " 'and sexual sodomic variety i abruse so much',\n", - " '...usta zbroczy³em krwi¹ to wino zalewa me cia³o',\n", - " 'wieczna pokusa gdy uczuæ wci¹¿ za ma³o...',\n", - " 'consecration!',\n", - " 'devastation!',\n", - " 'self damnation!',\n", - " 'seduction!',\n", - " 'fornication!',\n", - " 'christianity eradictation!',\n", - " \"a-yo it's war ninja, yeah i'll piss on party time\",\n", - " 'sinister ackward rhymes, bangin your concubines',\n", - " 'haunt your mind, always on point like porcupines',\n", - " \"cuz you're like muslims eating pork, thinking pork ain't swine\",\n", - " 'conciuss kind, remain hard, stays refine',\n", - " 'couragous innovations it takes to stay alive',\n", - " \"haters arrived, so we feed'em what they don't like\",\n", - " \"cuz they know i'm in their faces, bagi won't go hide\",\n", - " \"ohh my and i ain't the one that gotta go profile\",\n", - " 'cuz we raw without even havingto hold the 45',\n", - " \"europe gon' ride, you wanna ask if i got dro?\",\n", - " \"what the fuck you in my b.i. for? this ain't quantico\",\n", - " 'you can ask ghost, we strive to get past',\n", - " 'the bulletproof wallets, yeah and not be broke',\n", - " 'and you know that you str8, abandoned them street codes',\n", - " \"my rap's like david banner, giving birth to a green hulk\",\n", - " 'minął czas mądrych króli, dziś to kraj wolnych ludzi',\n", - " 'widzę te wojny ulic, fałszywe sądy, synów i córy',\n", - " 'przebranych w uniformy nie zdolnych wrócić',\n", - " 'ale wciąż zdolnych w imię cudzych teorii burzyć',\n", - " 'tętni na blokach slang, słyszę w ich krokach strach',\n", - " 'jednych scotlandyard za skok na bank ściga',\n", - " 'inny z okna spadł chyba wprost na szyję, banał',\n", - " 'przeżył ten skok jak kot na linie balans',\n", - " 'inny to true-school, chciał zrobić na topach hajs',\n", - " 'dziś jeździ na wózku, lecz wciąż ma w oczach blask',\n", - " 'choć zboczył z kursu, bo musiał dotknąć w erce gwiazd',\n", - " 'dziś śmieje się częściej niż ja, siła i szczęście brat',\n", - " 'zło przyciąga zło, jak co? jak magnes stal',\n", - " 'to poważne jak schubert, mozart, wagner, bach',\n", - " 'po to masz na dnie w bagnie stać, by z niego wyjść',\n", - " 'po to ci kradnę czas, nim ci go skradnie syf',\n", - " 'everyday we fighting on the street corners',\n", - " 'all we need is peace so please brothers slow down',\n", - " 'put your weapons down now young soldiers',\n", - " \"we don't need another war and fight\",\n", - " 'welcome to spg district of the nasty town',\n", - " 'my name is nullo and i will be your private guide',\n", - " 'you need practice, sit in the back seat now',\n", - " \"like on a taxi cup, i'll show you my street life\",\n", - " \"where the black people, white people, yellow people don't sleep\",\n", - " \"if you want to tell lies you better don't speak\",\n", - " \"look in to my homie's eyes, they know street life\",\n", - " 'they know the price and they are cold as ice',\n", - " 'we are always ready to fight and to die with pride',\n", - " 'no cry, no smile, you are wrong because you are on the wrong side',\n", - " 'strong survive we know that from the history',\n", - " \"you can try, but you can't change your destiny\",\n", - " 'spg this is the best part of me',\n", - " \"bless god those streets, together let's fight to be free\",\n", - " \"we won't let them steal our dignity\",\n", - " 'we are more then homiez, man, we are family',\n", - " 'po labiryncie pytań jak satelita po orbitach',\n", - " 'w walce o honor witam na ochotnika',\n", - " 'jadę jak czołg, ja mam ten flow jakbym je wziął z chodnika',\n", - " 'nie wiesz skąd to weź obejrzyj komornika',\n", - " 'tak mnie uczono tu, burzono mur, nie jest różowo tu',\n", - " 'pokiwał anioł stróż głową znów',\n", - " 'tuż obok służbowo spojrzałem w oczy mu',\n", - " 'pokaż mi ścieżki, którymi kroczy wróg i podpisałem to 3w',\n", - " 'powiedz czy światłem bloki, a może bagnem bloki?',\n", - " 'a życie miewa przekaz dla wielu za głęboki?',\n", - " 'żelbetonowe ściany, sufity, podłogi',\n", - " 'widziałem to kim będę nim sięgnąłem po długopis',\n", - " 'everyday we fighting on the street corners',\n", - " 'all we need is peace so please brothers slow down',\n", - " 'put your weapons down now young soldiers',\n", - " \"we don't need another war and fight\",\n", - " 'o mamo nie placz nie',\n", - " 'niebos',\n", - " 'przeczysta królowo',\n", - " ...]},\n", - " 'data': [\"i'm nobody who are you\",\n", - " 'are you nobody too?',\n", - " 'than there is a pair of us',\n", - " \"don't tell they advartise you know\",\n", - " \"i'm nobody who are you\",\n", - " 'are you nobody too?',\n", - " 'jestem nikim a ty kim',\n", - " 'czy ty także jesteś nikim',\n", - " 'to znaczy byłaby z nas para',\n", - " 'i to by się rozniosło zaraz więc milcz',\n", - " \"i'm nobody...\",\n", - " 'jak ponuro stać się kimś',\n", - " 'żaba co publicznie',\n", - " 'skrzeczy w czerwcu chce się żyć',\n", - " 'bagnu zebranemu licznie',\n", - " \"i'm nobody\",\n", - " 'to zabija mnie!',\n", - " 'niszczy!',\n", - " 'oto ja - żywczem pogrzebany',\n", - " 'oto ja - spętany ciężarem winy',\n", - " 'ja!',\n", - " 'zawiniłem - jestem chory i zmęczony',\n", - " 'zanurzam się w piekle - ono wre potępionym',\n", - " 'zabija!',\n", - " 'oto ja - dosczętnie spopielony',\n", - " 'oto ja - na zawsze okaleczony',\n", - " 'ja!',\n", - " 'spośród wielu blizn tę najbardziej znać',\n", - " 'wyryta w mej pamięci na wieki wieków',\n", - " 'skąpany we krwi chce obmyć swoje rany',\n", - " 'zaprawdę powiadam wam - jestem zrujnowany',\n", - " 'zabija!',\n", - " 'this is killing me!',\n", - " 'destroys!',\n", - " 'this is me - buried alive',\n", - " 'this is me - burdened by guilt',\n", - " 'i am guilty - i am sick and tired',\n", - " 'i descend to hell - it boils with sinners',\n", - " 'killing me!',\n", - " 'this is me - buried alive',\n", - " \"this is me - i'm guilty\",\n", - " 'this is me - burnt to ashes',\n", - " 'this is me - forever impaired',\n", - " 'the most significant scar of mine',\n", - " 'imprinted in my memory forevermore',\n", - " 'all stained with blood i want to clean my wounds',\n", - " \"verily i say to you, i'm ruined\",\n", - " 'killing me!',\n", - " 'this is me - buried alive',\n", - " \"this is me - i'm guilty\",\n", - " 'hey!',\n", - " \"you know, now we have to keep on tryin', yeah\",\n", - " \"you know, now we have to keep movin' on, keep movin' on everyday\",\n", - " \"you know, now we have to keep on trying', yeah\",\n", - " \"you know, now we have to keep movin' on, keep movin' on\",\n", - " 'keep on trying, świat mówi zatrzymaj się, ty próbuj dalej',\n", - " 'keep on trying, co by nie było do każdego celu wytrwale',\n", - " 'keep on trying, świat mówi zatrzymaj się, ty próbuj dalej',\n", - " 'keep on trying, świat obłudnych przyzwyczajeń',\n", - " \"you know, now we have to keep on tryin', yeah\",\n", - " \"you know, now we have to keep movin' on, keep movin' on everyday\",\n", - " \"you know, now we have to keep on tryin', yeah\",\n", - " \"you know, now we have to keep movin' on, keep movin' on everyday\",\n", - " 'mam takie same plany jak ty',\n", - " 'do niektórych otwarta droga, przed większością zamknięte drzwi',\n", - " 'a twoja szansa śpi, wystarczy ją obudzić by przekonać się, że pasja dodaje sił',\n", - " 'są problemy i zmartwienia, nieporozumienia, słowa prowadzące do milczenia',\n", - " 'są iluzje, między nimi ty wierzący, że odmienisz swoje życie nie robiąc w tym kierunku nic',\n", - " \"you know, now we have to keep on tryin', yeah\",\n", - " \"you know, now we have to keep movin' on, keep movin' on everyday\",\n", - " \"you know, now we have to keep on tryin', yeah\",\n", - " \"you know, now we have to keep movin' on, keep movin' on\",\n", - " \"keep on tryin'\",\n", - " 'keep on (co by nie było do każdego celu wytrwale)',\n", - " \"keep on tryin', (świat mówi zatrzymaj się, ty próbuj dalej)\",\n", - " \"keep on tryin' (świat obłudnych przyzwyczajeń)\",\n", - " \"nobody can stop me and nobody's gonna break me down\",\n", - " \"cause imma keep on tryin'\",\n", - " \"no matter where i'm coming from\",\n", - " 'imma keep moving on',\n", - " \"cause imma keep on tryin'\",\n", - " 'no matter how many times i fail in this rat race',\n", - " \"i'll be standing face to face with fear\",\n", - " 'no matter what the fellas say envy makes the truth fade away',\n", - " \"cause i keep on tryin'\",\n", - " 'na rua do silêncio /in the street of silence',\n", - " 'na rua do silêncio /in the street of silence',\n", - " 'é tudo mais ausente, /all is more absent',\n", - " 'até foge o luar /even the moonlight flees',\n", - " 'e até a vida é pranto. /and even life is weeping',\n", - " 'não há juras de amor, /there are no declarations of love',\n", - " \"náo há quem nos lamente /there's no-one who misses us\",\n", - " 'e o sol quando lá vai /and when the sun breaks through',\n", - " \"é p'ra detair quebranto /it lies there broken\",\n", - " 'na rua do silêncio /in the street of silence',\n", - " 'o fado é mais sombrio /the fado is more sombre',\n", - " 'e as sombras duma flor /nor do the shadows of the flower',\n", - " 'não cabem lá também /fall there',\n", - " 'a rua tem destino /the street has a destination',\n", - " 'e o seu destino frio /and the destination is cold',\n", - " 'não tem sentido algum /with no meaning',\n", - " 'não pasa lá ninguém. /no-one passes there',\n", - " 'na rua do silêncio /in the street of silence',\n", - " 'as portas estão fechadas /the doors are closed',\n", - " 'e até o sonho cai, /and even dreams fall',\n", - " 'sem fé e sem ternura. /faithless and without tenderness',\n", - " 'na rua do silêncio /in the street of silence',\n", - " 'há lágrimas cansadas, /there are weary tears',\n", - " 'na rua do silêncio /in the street of silence',\n", - " 'é sempre noite escura. /it is always darkest night',\n", - " 'a na ulicy cisza',\n", - " 'wszystkiego tam brakuje',\n", - " 'znikł głos, księżyca blask',\n", - " 'i nawet płacze życie',\n", - " 'przysiąg miłości brak',\n", - " 'nikt tam nie lamentuje',\n", - " 'a kiedy słońce wschodzi',\n", - " 'to też jest jak rozbite',\n", - " 'a na ulicy cisza',\n", - " 'i fado tak ponure',\n", - " 'i nawet kwiatu cień',\n", - " 'tam także nie pasuje',\n", - " 'ma swoje przeznaczenie',\n", - " 'jej przeznaczeniem - chłód',\n", - " 'i nie ma nic znaczenia',\n", - " 'tam nie przechodzi nikt',\n", - " 'a na ulicy cisza',\n", - " 'drzwi wasze wciąż zamknięte',\n", - " 'i nawet sen opada',\n", - " 'bez wiary i bez czułości',\n", - " 'a na ulicy cisza',\n", - " 'i łzy też są zmęczone',\n", - " 'a na ulicy cisza',\n", - " 'i noc jest mroczna zawsze',\n", - " 'oj od krakowa jade',\n", - " 'z dalekiej obcej strony',\n", - " 'bo mi nie cheilei dac, hosa dyna',\n", - " \"mary's ulubiony\",\n", - " 'ej szerokim goscicem',\n", - " 'ej jedzie woz za wozem',\n", - " 'jak mi je nie dadza, hosa dyna',\n", - " 'to prezbije sie nozem',\n", - " 'ej nozem sie przebijej i utopie we wisle',\n", - " 'zebys ty wiedziala, hosa dyna',\n", - " 'ej co o tobie mysle',\n", - " \"oy from krakow i'm coming\",\n", - " 'from far away strange side',\n", - " 'because they did not want',\n", - " 'to give me beloved mary',\n", - " 'ey through wide highroad',\n", - " 'ey a riding carriage after marriage',\n", - " \"if they won't give me her, hosa dyna\",\n", - " 'i will stab myself with knife',\n", - " 'ey i will stab myself',\n", - " 'and will drown in the wisla',\n", - " 'so you know, hosa dyna',\n", - " \"ey what i'm thinking about you\",\n", - " \"it's a life of the gambler\",\n", - " \"scared money don't make none ?\",\n", - " 'but you better be carefull...',\n", - " \"'cause you might be the one get broke\",\n", - " 'you understand me..?',\n", - " 'you better thing twice',\n", - " 'before you roll the dice',\n", - " 'the outcome might not be nice',\n", - " 'big money on the table... x2',\n", - " 'do you really wanna gable with your life ?',\n", - " 'what about your kids and your wife?',\n", - " 'big money on the table... x2',\n", - " 'what they advertise',\n", - " \"i'm not wishing to believe\",\n", - " 'i want some balance in my life',\n", - " 'i like the fishes and the trees',\n", - " 'but i like new kicks too',\n", - " \"i'm riddled with the deeds\",\n", - " 'if u want for me to accept, they bringing it to me',\n", - " 'i like the way it looks',\n", - " 'i like the way it feels',\n", - " \"i like the dreams that they're selling, so i'm paying bills\",\n", - " 'fuck playing fields, or just laying still',\n", - " \"i'ma lay, lay money on the gambling wheel\",\n", - " 'see that dangle cars like mangle stars up in my face',\n", - " \"and have a laugh with don't grab apart of what we take\",\n", - " \"it's like to have a lunch you have a chance to drop the stakes\",\n", - " 'like an appetite, you gamble fast get choke some \"p\"s',\n", - " 'what set a hard at discreet when in sudden we can share',\n", - " \"like i'm passing the weed and you're jumping in the ash\",\n", - " \"and ain't pass it to me but it does't bring freedom\",\n", - " 'it brings more greed so all the matter things leaving',\n", - " 'when you merely find that you better off with that',\n", - " 'check the may flights and take them helicopters down',\n", - " 'there is a place i just hoped to get a plough land',\n", - " \"with a great sky doesn't often come round\",\n", - " 'you better thing twice',\n", - " 'before you roll the dice',\n", - " 'the outcome might not be nice',\n", - " 'big money on the table... x2',\n", - " 'if you really wanna gable with your life',\n", - " 'what about your kids and your wife?',\n", - " 'big money on the table... x2',\n", - " 'miasto luksusu niczym vegas na preriach',\n", - " 'jakość mówi sama za siebie jak bottega venta',\n", - " 'sto procent dla klienta, tu wam to wszystko wolno',\n", - " 'tylko wykręć numer, zadzwoń, zapłać 1000 euro',\n", - " 'masz swój majątek w oczach przegranej żywioł',\n", - " 'www kropka bankrut to prawie jak kasyno',\n", - " 'fortuny giną w wirtualnej ruletce',\n", - " 'wpisz login i hasło, duże wygrane codziennie',\n", - " 'czemu nie wcześniej to dla wybranych opcja',\n", - " 'dziś licytujemy klasyk ferrari testarossa',\n", - " 'milion po raz pierwszy, milion po raz drugi',\n", - " 'milion po raz trzeci, fortuna kontra długi',\n", - " 'tam się kręci gdzie kluby, kokaina z kuby w transie',\n", - " 'ten świat może być twój, możesz go kupić zawsze',\n", - " 'jak tylko stać cię, masz karty, numer konta',\n", - " 'do zabawy charakter, to zadzwoń tu jest kontrakt',\n", - " 'zero cztery, dziewięć szóstek i łącz się ze światem',\n", - " 'dzwoń, koszt dwa euro za minutę plus podatek',\n", - " 'wszystko to farsa, brat, nieporozumienia',\n", - " 'każą nam wierzyć w świat, którego dla nas nie ma...',\n", - " 'you better thing twice',\n", - " 'before you roll the dice',\n", - " 'the outcome might not be nice',\n", - " 'big money on the table...x2',\n", - " 'do you really wanna gable with your life',\n", - " 'what about your kids and wife?',\n", - " 'big money on the table...x2',\n", - " \"stay money, don't make no\",\n", - " 'least the truth, and i put my money on you...',\n", - " 'big money on the table... x2',\n", - " \"and nobody stay 'cause it ain't no joke\",\n", - " 'you maight just go home hope...',\n", - " 'big money on the table... x2',\n", - " 'chorus x3',\n", - " 'as meninas dos meus olhos /the girls of my eyes (idiom - the apple of my eyes)',\n", - " 'as meninas dos meus olhos /the girls of my eyes',\n", - " 'nunca mais tive mão nelas /never have i my hand in theirs',\n", - " 'fugiram para os teus olhos, /they fled to your eyes',\n", - " 'por favor deixa-me vê-las. /please let me see them',\n", - " 'as meninas dos meus olhos /the girls of my eyes',\n", - " \"se vão perder-se não sei /wheter they'll be lost i do not know\",\n", - " 'deixa-me ver se os teus olhos /let me see if your eyes',\n", - " 'as tratam e guardam bem. /care for them and keep them well',\n", - " 'as meninas dos meus olhos /the girls of my eyes/',\n", - " 'para poder encontrá-las /in order to encounter them',\n", - " 'foram pedir aos teus olhos /they went to ask your eyes',\n", - " 'que falem quando te calas./ to speak when you are silent',\n", - " 'as meninas dos meus olhos /the girls of my eyes',\n", - " 'já não sei aonde estão /i no longer know where they are',\n", - " 'deixa-me ver nos teus olhos /let me see in your eyes',\n", - " 'se as guardas no coração /if you keep them in your heart',\n", - " 'ach córeczki moje skarby',\n", - " 'nigdy przy mnie ich nie miałam',\n", - " 'ach córeczki moje skarby',\n", - " 'nigdy przy mnie ich nie miałam',\n", - " 'znikły by być skarbem twoim',\n", - " 'pozwól bym je zobaczyła',\n", - " 'ach córeczki moje skarby',\n", - " 'nigdy przy mnie ich nie miałam',\n", - " 'ach córeczki moje skarby',\n", - " 'nie wiem, czy je stracić mogę',\n", - " 'ach córeczki moje skarby',\n", - " 'nie wiem, czy je stracić mogę',\n", - " 'pozwól, żebym zobaczyła',\n", - " 'twoją troskę i twą ochronę',\n", - " 'pozwól, żebym zobaczyła',\n", - " 'twoją troskę i twą ochronę',\n", - " 'ach córeczki moje skarby',\n", - " 'bym je mogła jeszcze spotkać',\n", - " 'ach córeczki moje skarby',\n", - " 'bym je mogła jeszcze spotkać',\n", - " 'muszę pójść i je zapytać',\n", - " 'niech przemówią, chociaż milczą',\n", - " 'muszę pójść i je zapytać',\n", - " 'niech przemówią, chociaż milczą',\n", - " 'ach córeczki moje skarby',\n", - " 'ja już nie wiem, gdzie są one',\n", - " 'ach córeczki moje skarby',\n", - " 'ja już nie wiem, gdzie są one',\n", - " 'pozwól mi spojrzeć- pozwól mi spojrzeć w oczy twoje',\n", - " 'czy je chowasz w sercu swoim',\n", - " 'ach córeczki moje skarby',\n", - " 'ja już nie wiem, gdzie są one',\n", - " 'jeden z nas!',\n", - " 'głębiej we mnie, w głębi siebie',\n", - " 'chcę przełamać tę ciszę',\n", - " 'wzniecić ogień, rozbudzić gniew',\n", - " 'nie!',\n", - " 'ustały pieśni radości',\n", - " 'wiem!',\n", - " 'wiem!',\n", - " 'zamilkły hymny miłości',\n", - " 'poznaj to co gorzkie',\n", - " 'smutek, łzy, gorycz tych słów',\n", - " 'poczuj gwałtowny podmuch',\n", - " 'on jest zwiastunem burzy',\n", - " 'zobacz jak płaczą, jak płaczą miliony',\n", - " 'wzniecam ogień',\n", - " 'wzniecam ogień',\n", - " 'powiedz mi, że chcesz tego co ja',\n", - " 'powiedz mi, że chcesz tego co ja',\n", - " 'wzniecam ogień',\n", - " 'głębiej we mnie, w głębi siebie',\n", - " 'pragnę oczyścić się z piętna grzechu',\n", - " 'nie!',\n", - " 'ustały pieśni radości',\n", - " 'wiem!',\n", - " 'wiem!',\n", - " 'zamilkły hymny miłości',\n", - " 'wolno sączy się krew',\n", - " 'jeszcze wolniej odradza się nadzieja',\n", - " 'zaprawde powiadam wam',\n", - " 'nie jest jeszcze zbyt późno',\n", - " 'chcę wstać, zerwać łańcuchy',\n", - " 'wiem! zrobie to!',\n", - " 'wzniecam ogień',\n", - " 'wzniecam ogień',\n", - " 'powiedz mi, że chcesz tego co ja',\n", - " 'powiedz mi, że chcesz tego co ja',\n", - " 'wzniecam ogień',\n", - " 'nie!',\n", - " 'one of us!',\n", - " 'deeper inside my deepest mind',\n", - " 'i will break the silence',\n", - " 'ignite flame, awake the anger',\n", - " 'no! no!',\n", - " 'died the songs of glee',\n", - " 'why? why?',\n", - " 'love hymns ceased to be',\n", - " 'taste the bitter and sour',\n", - " 'experience sadness and tears',\n", - " 'feel the sudden gust of wind',\n", - " 'violent storm is near',\n", - " 'look at them, look at these millions cry',\n", - " 'ignite fire',\n", - " 'ignite fire',\n", - " 'simply tell me that you want the same',\n", - " 'simply tell me that you want the same',\n", - " 'ignite fire',\n", - " 'deeper inside my deepest mind',\n", - " \"i yearn to be free of sinner's stain\",\n", - " 'no! no!',\n", - " 'died the songs of glee',\n", - " 'why?',\n", - " 'why?',\n", - " 'love hymns ceased to be',\n", - " 'blood spills so slowly',\n", - " 'even slower does the hope rebore',\n", - " 'verily i say to you',\n", - " 'it is still not too late',\n", - " 'i will rise, break the chains',\n", - " 'i know i will!',\n", - " 'ignite fire',\n", - " 'ignite fire',\n", - " 'simply tell me that you want the same',\n", - " 'simply tell me that you want the same',\n", - " 'ignite fire',\n", - " 'no!!!',\n", - " \"everybody's talking at me\",\n", - " \"i don't hear a word they're saying\",\n", - " 'only the echoes of my mind',\n", - " 'people stopping staring',\n", - " \"i can't see their faces\",\n", - " 'only the shadows of their eyes',\n", - " \"i'm going where the sun keeps shining\",\n", - " \"thru' the pouring rain\",\n", - " 'going where the weather suits my clothes',\n", - " 'backing off of the north east wind',\n", - " 'sailing on summer breeze',\n", - " 'and skipping over the ocean like a stone',\n", - " 'każdy coś do mnie mówi',\n", - " 'ale nie słyszę ich słów',\n", - " 'tylko echo moich myśli',\n", - " 'ludzie przystają i patrzą się',\n", - " 'nie widzę ich twarzy',\n", - " 'tylko cień i oczu',\n", - " 'zmierzam tam gdzie słońce świeci',\n", - " 'poprzez padający deszcz',\n", - " 'zmierzam gdzie pogoda jest moim garniturem',\n", - " 'hamowany przez północno wschodni wiatr',\n", - " 'żeglując na letniej bryzie',\n", - " 'i przeskakując przez ocean niczym kamień',\n", - " 'by eljot',\n", - " 'w kolorowej sukience krz¹ta siê',\n", - " 'raz po raz odwraca g³owê',\n", - " 'uœmiech œle',\n", - " 'móg³byœ przysi¹c ¿e',\n", - " 'widzia³eœ wczoraj skrzyd³a jej',\n", - " 'jak je chowa³a pod sukienkê',\n", - " 'lecz ona',\n", - " 'ref:',\n", - " 'to nie ptak czy nie widzisz?',\n", - " 'to nie jest ptak',\n", - " 'ona to nie ptak',\n", - " 'to nie jest ptak czy nie widzisz?',\n", - " 'kocham ciebie mówi ka¿dy jej ma³y ruch',\n", - " 'lecz ty wœród kolorowych falban szukasz piór',\n", - " 'bo jesteœ pewien ¿e',\n", - " 'wczoraj widzia³eœ skrzyd³a cieñ',\n", - " 'dlatego klatkê zbudowa³eœ',\n", - " 'lecz ona',\n", - " 'ref:',\n", - " 'to nie ptak...',\n", - " 'tego dnia, gdy ciemnoœæ skradnie serce ci',\n", - " 'ona w oknie bêdzie œmiaæ siê lecz przez ³zy',\n", - " 'rozpuœci czarnoœæ w³osów i',\n", - " 'zmieniona w kruka skoczy by',\n", - " 'za chwilê oknem tym powróciæ tu',\n", - " 'lecz jako',\n", - " 'ref:',\n", - " 'rajski ptak bo tak chcia³eœ',\n", - " 'jako rajski ptak',\n", - " 'rajski ptak',\n", - " 'jako rajski ptak bo tak chcia³eœ!',\n", - " '(english translation:',\n", - " \"it's not a bird\",\n", - " \"she's hustling in a colorful dress\",\n", - " 'from time to time turning her head',\n", - " 'and smiles',\n", - " 'you could swear',\n", - " 'that you saw her wings yesterday',\n", - " 'when she was trying to hide them',\n", - " 'under the dress',\n", - " 'but she',\n", - " \"she's not a bird\",\n", - " \"can't you see\",\n", - " \"it's not a bird\",\n", - " \"she's not a bird\",\n", - " \"it's not a bird\",\n", - " \"can't you see\",\n", - " 'with her every move she tells you she loves you',\n", - " 'but you are looking for the feather in a colorful lace',\n", - " 'because you sure',\n", - " 'you saw the shade of the wings',\n", - " \"and that's why you built a cage\",\n", - " 'but she',\n", - " 'this day',\n", - " 'when the darkness will steal your heart',\n", - " 'she will be in the window laughing through tears',\n", - " 'with flowing hair',\n", - " 'and turned into raven jump',\n", - " 'only to come back to here',\n", - " 'but as bird of paradise',\n", - " 'because you wanted this',\n", - " 'as a bird of paradise',\n", - " 'as a bird of paradise',\n", - " 'because you wanted this)',\n", - " \"what's your name?\",\n", - " \"i'm jane\",\n", - " 'where are you from?',\n", - " 'from l.a',\n", - " 'tak jak lynch - david david david',\n", - " 'tak jak douglas - michael michael michael',\n", - " 'tak jak eastwood- eastwood eastwood eastwood',\n", - " 'tak jak oni mieszkasz w kaliforni',\n", - " 'a jak kiedyś bedze w ameryce',\n", - " 'mocze tobą jane się zachwycę',\n", - " 'i zapukam nagle do twych drzwi',\n", - " 'mocze może otworzysz mi',\n", - " 'do you wonder why i, fly like an eagle - so high',\n", - " 'and my spirit blows like a wind',\n", - " 'no limits for me, my life is just to live',\n", - " 'the life is too short to lose it',\n", - " 'i have nobody to hate',\n", - " 'i leave it for my enemies',\n", - " \"i'm a rebel, and you can be a rebel too\",\n", - " 'freedom! - believe it !',\n", - " 'be like a haydamaka in me',\n", - " \"i'm a rebel, and you can be a rebel too\",\n", - " 'freedom! - believe it !',\n", - " 'be like a haydamaka in me',\n", - " 'fight',\n", - " 'like a haydamaka in me',\n", - " 'fight ( tu di tu )',\n", - " 'like a haydamaka in me',\n", - " \"listen to me, i'm not the enemy\",\n", - " \"i have my way, your's not for me\",\n", - " 'no means no and white is white',\n", - " 'no more future for lies',\n", - " 'you are free you can dislike me',\n", - " \"but don't tell me who i should be, because\",\n", - " 'no means no and white is white',\n", - " 'no more future for lies',\n", - " 'no more lies',\n", - " 'your life is yours',\n", - " \"it's only your choice\",\n", - " \"don't convince me it's ok\",\n", - " 'go your way',\n", - " 'never turn me back',\n", - " 'the life is too short to lose it',\n", - " \"i'm a rebel, and you can be a rebel too\",\n", - " 'freedom! - believe it !',\n", - " 'be like a haydamaka in me',\n", - " \"i'm a rebel, and you can be a rebel too\",\n", - " 'freedom! - believe it !',\n", - " 'be like a haydamaka in me',\n", - " 'fight',\n", - " 'like a haydamaka in me',\n", - " 'fight',\n", - " 'like a haydamaka in me',\n", - " \"listen to me, i'm not the enemy\",\n", - " \"i have my way, your's not for me\",\n", - " 'no means no and white is white',\n", - " 'no more future for lies',\n", - " 'you are free you can dislike me',\n", - " \"but don't tell me who i should be, because\",\n", - " 'no means no and white is white',\n", - " 'no more future for lies',\n", - " 'no more lies',\n", - " 'buhalo holosno u hrudy bje',\n", - " 'hitara tiażko akordy bere',\n", - " 'dajte napytsja, bo krow ne wodycja',\n", - " \"tancjujte sobi to- kowbasobel'\",\n", - " 'buhalo holosno u hrudy bje',\n", - " 'hitara prosti akordy bere',\n", - " 'dajte napytsja, bo krow ne wodycja',\n", - " \"zatjamte sobi to- kowbasobel'\",\n", - " 'buhalo holosno u hrudy bje',\n", - " 'hitara prosti akordy bere',\n", - " 'ruhajte mesztamy, krow ne wodycia',\n", - " 'moja swoboda ce – kowbasobel',\n", - " 'ne placz, kochana, ne tuży za mnoju',\n", - " 'szczo wybraw swobodu swojeju żonoju',\n", - " 'w prostych akordach kozacka lubow',\n", - " 'ne placz kochana ne tuży za mnow',\n", - " 'buhalo holosno u hrudy bje',\n", - " 'hitara prosti akordy bere',\n", - " 'ruhajte mesztamy, zatjamte sobi',\n", - " \"nasza swoboda to – kowbasobel'\",\n", - " 'wojtek, have you come to save my day?',\n", - " 'the road is long and the river is so deep with wojtek my love remains… help me find my way back to poland i’m thousands of miles from home',\n", - " 'wypijemy jednego, drugiego, trzeciego za zdrowie naszego niedźwiedzia pijącego, palącego i walczącego żołnierza naszego niedźwiedzia wojtka',\n", - " 'wojtek, have you come to save my day?',\n", - " 'setki pustych slуw',\n", - " 'gesty, ktуre myla slad',\n", - " 'przecwiczony smiech',\n", - " 'za zaslona klamstwa',\n", - " 'nieraz widze jak',\n", - " 'obcy przyjaciela gra',\n", - " 'potem sieje zlo',\n", - " 'niszczac jednym ruchem warg',\n", - " 'to co dla mnie wartosc ma',\n", - " 'nie wiem czy to jest',\n", - " 'miejsce na normalny gest',\n", - " 'przytlaczaja nas',\n", - " 'wyuczone role',\n", - " 'wczoraj brzmialo \"tak\"',\n", - " 'dzis to samo znaczy \"nie\"',\n", - " 'w maske zmieni sie',\n", - " 'to co jeszcze szczere jest',\n", - " 'przedstawienie ciagle trwa',\n", - " 'co dzien pytam sie',\n", - " 'czy ja tez juz kogos gram',\n", - " 'czy to moja twarz',\n", - " 'czy to jeszcze jestem ja...',\n", - " '---',\n", - " 'added by marcin lesiak',\n", - " 'song: street',\n", - " 'i have been there',\n", - " 'i still think of that accident',\n", - " 'that dusky street',\n", - " 'looked at me and said be careful',\n", - " \"i won't forget\",\n", - " 'this place which has no name',\n", - " \"because it'd be\",\n", - " 'inside my mind forever',\n", - " \"don't be afraid\",\n", - " 'of that night',\n", - " 'i said to myself',\n", - " 'those drifting clouds',\n", - " 'overhead and everywhere',\n", - " 'i met a child',\n", - " 'who was tender and sincere',\n", - " 'he came to protect me',\n", - " 'from bad people',\n", - " 'my angle saved me so many times',\n", - " 'it may have been an emotion',\n", - " 'or just a dream',\n", - " '---',\n", - " 'added by marcin lesiak']},\n", - " 'rap': {'meta': {'train_data': ['zapierdalam na sygnale',\n", - " 'za mną chyba z dwustu mentów',\n", - " 'dwieście na godzinę mijam pełen bus studentów',\n", - " 'teraz już bez nerwów bo bus wyjebał w mentów',\n", - " 'a ja jadę jak szalony wioząc wóz prezentów',\n", - " 'jadę już na felgach ale ziomek ja nie pękam ja nie pękam nawet wtedy kiedy pęka szczęka, łapiesz?',\n", - " 'przed każdą akcją zmawiam pacierz',\n", - " 'po każdej akcji stawiam szmacie',\n", - " 'jebać policyjne ścierwo, często mawiam bracie',\n", - " 'what the fuck, a vibe or woman. t',\n", - " \"hey want me dead, nothing like my adrenaline's pumping\",\n", - " \"so i'm ready to survive the shot fire\",\n", - " 'i ducked and i dived',\n", - " 'i ducked and i dived',\n", - " 'the bullets missed by inches and hit the wall',\n", - " \"if that happened to hit my eyeball, shit i can't see at all\",\n", - " 'i slip, i slide, the wrong time to fall, the right time to move fast and think swift',\n", - " 'hold it, fuck five-o',\n", - " 'germany fuck five-o',\n", - " 'russia fuck five-o',\n", - " 'world fuck five-o',\n", - " \"finland, we're running from the cops\",\n", - " \"who's next?\",\n", - " \"we're running from the feds\",\n", - " 'uk',\n", - " \"we're running from the feds\",\n", - " \"fuck five-o we're running from the feds\",\n", - " 'wpierdalam się w osiedle',\n", - " 'hamuje i już biegnę',\n", - " 'już mnie goni banda hamów',\n", - " 'zaraz komuś jebnę',\n", - " 'ja się nie zatrzymam prędzej uduszę się powietrzem',\n", - " 'oni wszyscy wymiękają a ja biegnę coraz prędzej',\n", - " \"shit's about to get out of control, so i do what commando, roll over\",\n", - " 'for support or show these motherfuckers a few tricks like jump from 45 feet and land',\n", - " 'on some heavy bricks',\n", - " 'wypierdalam z kopa drzwi',\n", - " 'nie dam złapać się tym kurwom',\n", - " 'wypierdalam drugie drzwi i wybiegam na podwórko',\n", - " 'jeśli chcesz mnie złapać to postaraj się suko!',\n", - " 'jp wszystkim policyjnym grupom',\n", - " \"i'm hardcore\",\n", - " \"i'm doing parkour\",\n", - " \"i'm running straight through\",\n", - " \"someone's front door through the passage to the kitchen\",\n", - " 'i see people inside a boy',\n", - " 'had my t-shirt that said, \"don\\'t be snitching,\"',\n", - " 'hold it, fuck five-o',\n", - " 'germany fuck five-o',\n", - " 'russia fuck five-o',\n", - " 'world fuck five-o',\n", - " \"finland, we're running from the cops\",\n", - " \"who's next?\",\n", - " \"we're running from the feds\",\n", - " \"we're running from the feds\",\n", - " \"fuck five-o we're running from the feds\",\n", - " 'to jest gang z albanii',\n", - " 'a nie jakieś kurwa yolo',\n", - " 'wjeżdża prawdziwy milion',\n", - " 'i stoi z nami na molo',\n", - " 'jestem pijany jak świnia',\n", - " 'mam ochotę na chlanie',\n", - " 'czuję że już się zbliża',\n", - " 'ostre kitowanie',\n", - " 'chce się dobrze nakurwić',\n", - " 'choć za wcześnie na gogo',\n", - " 'naćpam się jak mikołaj',\n", - " 'zrobię mordą hoho',\n", - " 'chciałbym wziąć cię za rękę',\n", - " 'kicnąć z tobą jak zając',\n", - " 'słyszę jakieś głosy',\n", - " 'to pieniądze gadają',\n", - " 'ty i ja wraz z gangiem dzisiaj znikamy na noc',\n", - " 'so let’s do it like they do on',\n", - " 'discovery channel',\n", - " 'ty i ja wraz z gangiem dzisiaj znikamy na noc',\n", - " 'so let’s do it like they do on',\n", - " 'discovery channel',\n", - " 'tiri tiri',\n", - " 'tiri tiri',\n", - " 'tiri tiri',\n", - " 'tiri tiri',\n", - " 'ty i ty',\n", - " 'to jest gang albanii',\n", - " 'a nie elvis presley',\n", - " '2015 kurwa jestem',\n", - " 'popek firma, król albanii',\n", - " 'człowiek orkiestra wasze serca rozpali',\n", - " 'ty i ja wraz z gangiem dzisiaj znikamy na noc',\n", - " 'so let’s do it like they do on',\n", - " 'discovery channel',\n", - " 'ty i ja wraz z gangiem dzisiaj znikamy na noc',\n", - " 'so let’s do it like they do on',\n", - " 'discovery channel',\n", - " 'prostytutki skaczą z dachu burj khalifa',\n", - " 'krzycząc królu złoty, zajebista płyta',\n", - " 'z książem z dubaju robił zdjęcia',\n", - " 'i na kolanach płacze ze szczęścia',\n", - " 'give me baby hotel o 4 rano',\n", - " 'so let’s do it like they do on',\n", - " 'discovery channel',\n", - " 'ty i ja wraz z gangiem dzisiaj znikamy na noc',\n", - " 'so let’s do it like they do on',\n", - " 'discovery channel',\n", - " 'tiri tiri',\n", - " 'tiri tiri',\n", - " 'tiri tiri',\n", - " 'tiri tiri',\n", - " 'ty i ty',\n", - " \"tonight you're gonna see some breaking\",\n", - " 'and some rapping, and some breaking',\n", - " 'and some scratching, and some breaking',\n", - " 'and some , and some breaking',\n", - " \"and then... you're gonna see some more breaking\",\n", - " 'chcecie jeszcze coś, czy już mamy iść (...)',\n", - " 'chcecie posłuchać nas jeszcze?',\n", - " 'no to wam teraz kurwa zagramy hita',\n", - " \"don't you know?\",\n", - " \"that it's true\",\n", - " 'that for me and you',\n", - " 'you know the world iz a ghetto',\n", - " \"i've been around the world and i've learned one thing\",\n", - " 'more people are living like bums than like kings',\n", - " 'the truth is, the ghetto is a state of mind that you achieve',\n", - " \"i'm more ghetto than you can believe\",\n", - " \"that's where my head's at\",\n", - " \"it's what i talk about in my raps\",\n", - " \"no matter how much cash i get, i can't forget where i came from\",\n", - " 'where i was taught to aim my guns',\n", - " 'where the cops taught a nigga to run',\n", - " 'where i learned to fight',\n", - " 'bitches taught a nigga how to fuck right',\n", - " 'i used to bust raps underneath the street lights',\n", - " \"it's money, baby\",\n", - " \"that's the game, all ghettos are the same\",\n", - " 'too many people, not enough cash',\n", - " 'in comes the evil',\n", - " 'somebody gonna blast, somebody gonna die',\n", - " 'a mama\\'s gonna cry, kneel at the body, look up and say \"why?\"',\n", - " \"don't ask to understand it, don't even try\",\n", - " 'nie wiem co widzisz ty, ale wiem co widzę ja',\n", - " 'chciałoby się krzyczeć, kiedy frajer mówi \"sza\"',\n", - " 'w telewizji widzę, w wiadomościach',\n", - " 'widzę na ulicy (co?) bezdomnego gościa',\n", - " 'on wyciąga rękę, widzę też panienkę',\n", - " 'czeka na frajera, który da jej banknot, który ma dwa zera',\n", - " 'za kawałek cipy, w koło same vipy',\n", - " 'gucci, rolexy, mercedesy i zielone kwity',\n", - " 'i co z tego, już nie widzą bezdomnego',\n", - " 'co wyciąga rękę po kawałek chleba, a tak niewiele trzeba',\n", - " 'aby zmienić dzień chujowy w odrobinę nieba',\n", - " 'w tym momencie kop na cyce, zaliczona gleba',\n", - " 'koleś leży - rolex zmienia właściciela',\n", - " 'nie ma mercedesa i nie ma też portfela',\n", - " 'taki obraz znam, taki widzę, opisuję',\n", - " 'na tej płycie prezentuję...',\n", - " 'polska 2001 - ja pierdolę!',\n", - " 'patrzę w telewizor i testuję nerwy',\n", - " 'zamiast wziąć się za porządki, pierdolą bez przerwy',\n", - " 'farmazony, polityczne kurwy i kondony',\n", - " 'kaczka czy pies, dla mnie jedna świnia',\n", - " 'cała sytuacja to jedna wielka kpina',\n", - " 'kłótnia przy korycie o stołki i talary',\n", - " 'a dla ludzi haracz oraz kary',\n", - " \"but there's something in the ghetto that is nowhere else\",\n", - " \"it's the love that we have ourself although we lack wealth\",\n", - " 'reaching many of the places just take time',\n", - " 'and looking to the kids faces, all the single mother',\n", - " 'working two jobs for a fam, determined',\n", - " 'to make it with or without the man, the little boy',\n", - " 'bouncing his ball, little girl with the violin',\n", - " 'have a dream of carnegie hall, yo',\n", - " 'man on the wheelchair smile at the north, makes all my problems seem',\n", - " \"so small, cause in the ghetto you're taught\",\n", - " 'to get up when you fall, shake it off',\n", - " \"and everything that ain't ghetto seems so soft\",\n", - " 'people from the ghetto got a pride in them, a common bond',\n", - " 'survival you can call it, if you wanna',\n", - " 'from warsaw streets to south central corners',\n", - " 'from poland to california, the world iz a ghetto',\n", - " '(x2)',\n", - " 'mało ci życia na kredycie, w co grasz?',\n", - " 'chętnie się zamienię jeśli za dobrze masz',\n", - " 'życie jest ciężkie nie każdy o tym wie. teraz mówię ja!',\n", - " 'jędker z.i.p',\n", - " 'w życiu lata chude i tłuste',\n", - " 'nie wieżę, że ponad zdrowie przedkładasz kapustę',\n", - " 'progres powiem też jest do zrobienia',\n", - " 'jeśli uda się ominąć chwile zwątpienia',\n", - " 'lecz nie do przecenienia żywot toczy się dalej',\n", - " 'znowu skrecz, finansowy red alert',\n", - " 'czas upływa stale dopada pierdolony kredyt',\n", - " 'człowiek w polsce, skazany jest na niebyt',\n", - " 'wiązanie końca z końcem, codziennie',\n", - " 'dopóki nie wymięknie',\n", - " 'podatki? wiem kto ma pięknie',\n", - " 'zerkam w portfel świeci pustką',\n", - " 'głodny przed mpc-etą',\n", - " 'przerabiałem już to',\n", - " 'głód, pusta karta i długopis, boże',\n", - " 'która kawa na czczo bla, nie wiem',\n", - " 'tworzę!',\n", - " '(x2)',\n", - " 'life, spin cash, money, nigga fuck credit',\n", - " \"the corporate motherfuckers, make sure nigga's indebted\",\n", - " 'your word that bust ya ass to make shit, you eat shit',\n", - " \"you tryna keep up with mr. jones, nigga it ain't shit\",\n", - " \"put up a funny joke about nigga it's stoned, that's bullshit\",\n", - " 'fuck up your credit, nigga the bullshit',\n", - " \"dealin' with these niggas and bitches who ain't got shit\",\n", - " \"talkin' about black i got five, give me the rest of credit\",\n", - " 'just dead it, you heard my nigga big dame',\n", - " \"givin' not enough free dope for me to live so\",\n", - " 'i live life, stack cash, money, fuck that credit',\n", - " 'and leave something for my kids to inherit',\n", - " \"these corporate motherfuckers'll make sure you own\",\n", - " \"that's why i move with the big thing nigga and rushin'\",\n", - " '(x2)',\n", - " \"the world itself's just one big hoax. spamming each other with our burning commentary of bullshit masquerading as insight, our social media faking as intimacy. or is it that we voted for this? not with our rigged elections, but with our things, our property, our money. i'm not saying anything new. we all know why we do this, not because hunger games books makes us happy but because we wanna be sedated. because it's painful not to pretend, because we're cowards. fuck society\",\n", - " 'safari - moja podstawowa przeglądarka',\n", - " 'chciałem coś sprawdzić ale nie mogę bo aktualizacja',\n", - " 'przypomnij mi jutro, a teraz się odjeb',\n", - " 'bo jak będę chciał update to sobie go ściągnę',\n", - " 'czemu akurat teraz jak przeglądam ważne aukcje',\n", - " 'zawsze otwieram linki w nowej karcie',\n", - " 'technologia - nie ufam jej',\n", - " 'może i jest dobra ale wkurwia mnie, okej?',\n", - " 'technologia - nie ufam jej',\n", - " 'może i jest dobra ale wkurwia mnie (trochę), okej?',\n", - " '(scottie edge)',\n", - " 'trapped behind borders',\n", - " 'swimmin in foreign waters',\n", - " 'importes, exporters',\n", - " \"informers, flippin' on tape recorders\",\n", - " 'like da man dat knew too much',\n", - " 'never knew enough',\n", - " 'knew who to trust',\n", - " \"i'm talkin espionage\",\n", - " 'in camoflauge',\n", - " 'like boats on bogs',\n", - " 'in bayou fogs',\n", - " 'ya had ya secret plans',\n", - " 'ya microfilm',\n", - " 'secret agent man',\n", - " 'a view to a kill',\n", - " \"i'm talkin goldeneye\",\n", - " 'da l to da i',\n", - " 'r-o-y',\n", - " 'show me how ya spy',\n", - " '(mr. kaves)',\n", - " 'the saint with the halo',\n", - " 'the payroll',\n", - " 'da kavesman',\n", - " 'the mademan',\n", - " \"don't give a fuck what you say man\",\n", - " 'take over your chat room, got my',\n", - " 'powermac',\n", - " 'on mr. kaves-dot-com',\n", - " 'if you wanna get it on da breathtaker',\n", - " 'da bonebreaker',\n", - " 'da freshmaker',\n", - " 'the loanshark bet taker',\n", - " 'the ny skyscraper',\n", - " 'spy vs. spy',\n", - " 'look into my eyes',\n", - " 'try to cross the border',\n", - " 'to live & let die',\n", - " '(liroy)',\n", - " 'nowy jork, nowy jork!',\n", - " 'liroy znów nadciąga tu',\n", - " 'powiedz mi, powiedz co się stanie mu',\n", - " 'kiedy...wkraczamy do miasta',\n", - " 'liroy, lordz of brooklyn - cisnienie',\n", - " 'narasta',\n", - " 'wzrasta adrenalina, scyzoryk l swe',\n", - " 'rymy zaczyna',\n", - " 'mamy 1997 w kalendarzu na ścianie',\n", - " 'zadanie proste - freestyle na planie',\n", - " 'rym nasuwa się prosto z mojej głowy',\n", - " 'odruch ten bracie jest bezwarunkowy',\n", - " 'różowy cadillac przejeżdża obok mnie',\n", - " 'pytanie zachodzi gdzie ja jestem, gdzie?',\n", - " 'bay ridge, brooklyn, nowy jork',\n", - " 'jeśli znasz ten klimat',\n", - " 'jeśli znasz ten klimat to -',\n", - " '1995 to był rok kiedy pierwszy raz',\n", - " 'ujrzalem nowy jork',\n", - " 'polska - stany, czas na porównanie',\n", - " 'jeśli na to liczysz - zapomnij!',\n", - " 'nic się nie stanie takiego kolego',\n", - " 'skoomaj moją przestrzeń',\n", - " 'lordz of brooklyn powie ci coś',\n", - " 'jeszcze...',\n", - " 'chorus:',\n", - " 'spy vs. spy',\n", - " 'look into my eyes',\n", - " 'try to cross the border',\n", - " 'to live & let die',\n", - " '(breakdown w/sasch jenkins)',\n", - " '(paulie two times)',\n", - " 'throughtout the five boroughs',\n", - " \"paulie's rockin thorough\",\n", - " 'you slept like a sedative',\n", - " \"my style's never repetitive\",\n", - " 'you must pay attention',\n", - " 'to what i bhe mentionin',\n", - " 'when my microphone drops',\n", - " \"it's your brain i'm dentin' in\",\n", - " \"inventin' in\",\n", - " 'lunical lyrics',\n", - " 'with no repent',\n", - " \"i'll leave that mug all red\",\n", - " 'and that nose bone bent',\n", - " 'fuck the shure shot',\n", - " 'i got the direct hit',\n", - " 'my crew be on the rise',\n", - " 'like alcohol & unemployment',\n", - " 'but on a serious note',\n", - " \"i rock mc's like the vote\",\n", - " 'from sea to shining sea',\n", - " \"i got ya noddin'\",\n", - " 'like a bag a dee dee dee dee',\n", - " '(ad-money)',\n", - " 'bangin billy bats',\n", - " 'shootin craps on ya life wit a knife',\n", - " \"for the streets of my turf, gettin' hurt\",\n", - " 'cross the line ny express - 007 fuck',\n", - " 'that!',\n", - " \"yo, he better pay his fuckin' debt\",\n", - " '(bobalou & the 7th power)',\n", - " \"it's the spyhunter - seven\",\n", - " \"comin' in the name of thunder\",\n", - " 'i bring hell like thunder',\n", - " \"poland, hold up... new york's comin'\",\n", - " 'through',\n", - " \"lob... that's my crew\",\n", - " 'bringin in to your dome once again',\n", - " 'babalouu??? i meand dead',\n", - " 'president get blow up, hold up',\n", - " 'mc get smoked up',\n", - " 'where ya gonna run?',\n", - " 'ny you cannot run',\n", - " 'popek',\n", - " 'patrz komu ufasz',\n", - " 'i patrz kogo ruchasz',\n", - " \"i don't care of your road\",\n", - " 'anyone can go',\n", - " \"i don't care of your road\",\n", - " 'anyone can go',\n", - " \"i said i don't care of your road\",\n", - " 'anyone can go',\n", - " 'i know them vodoo',\n", - " 'dont take away your soul',\n", - " 'zawsze mi powtarzał, że się nigdy nie zakocha',\n", - " 'miał głowę na karku, nigdy nie walił do nocha',\n", - " 'nie wiem w jaki sposób omotała go ta locha',\n", - " 'ale poszedł do burdelu no i w kurwie się zakochał, jezus',\n", - " 'miał tatuaż \"patrz komu ufasz\"',\n", - " 'w wolnym tłumaczeniu kogo ruchasz',\n", - " 'na dziesięć lat do puchy wyśle go ta suka',\n", - " 'mózgiem operacji był tam jego kutas',\n", - " 'pochwalił się dziwce no i muka',\n", - " 'i po chuj ci ten tatuaż \"patrz komu ufasz\"?',\n", - " 'z miłości do tej kurwy leży cała jego grupa',\n", - " 'łukasz się zawinął no i pali głupa',\n", - " 'morda w kubeł, cichosza i nic nie mówcie dziwkom',\n", - " 'nawet jakby oczy zarosły ci pizdą',\n", - " 'morda w kubeł brat, bo na prawdę stracisz wszystko',\n", - " 'jak będziesz spowiadał się dziwkom',\n", - " 'konsekwencje jak strzał na ryj spadną ci na głowę szybko',\n", - " 'możesz być na siebie zły albo podziękuj tym dziwkom',\n", - " 'którym tak mówiłeś wszystko, o i porwaniach',\n", - " 'teraz ona na komendzie się na ciebie rozpierdala',\n", - " \"i don't care of your road\",\n", - " 'anyone can go',\n", - " \"i don't care of your road\",\n", - " 'anyone can go',\n", - " \"i said i don't care of your road\",\n", - " 'anyone can go',\n", - " 'i know them vodoo',\n", - " 'dont take away your soul',\n", - " \"i don't care of your road nigga\",\n", - " 'anyone can go nigga',\n", - " 'i know them vodoo',\n", - " 'dont take away your soul nigga',\n", - " \"i don't care of your road\",\n", - " 'anyone can go',\n", - " 'i know them vodoo',\n", - " 'dont take away your soul nigga',\n", - " 'hoes want to be mad but my wet flow will kill me',\n", - " 'skills like mel b who let talking filthy',\n", - " \"i'm the one to feel free\",\n", - " 'say what i want that for real g',\n", - " 'ab dont play with me',\n", - " \"i would take your babe i'm a pimp, see\",\n", - " 'my wave - windy',\n", - " 'that still be heist is in me',\n", - " \"i don't care of your road\",\n", - " 'anyone can go',\n", - " \"i don't care of your road\",\n", - " 'anyone can go',\n", - " \"i said i don't care of your road\",\n", - " 'anyone can go',\n", - " 'i know',\n", - " 'endorfiny, skurwysyny',\n", - " 'znowu drzemy japy',\n", - " 'give me that, daj mi to',\n", - " 'give me that, oddaj to',\n", - " 'give me that, daj mi to',\n", - " 'give me that, oddaj to',\n", - " 'give me that, też to chcesz?',\n", - " 'gospel, kurwa, co ty ćpiesz?',\n", - " 'jak troskliwe misie non-stop nakurwiam szczęściem',\n", - " 'ćpam życie całe życie albo jeszcze kurwa częściej',\n", - " 'athanatos salva me!',\n", - " 'i walk through fire where the ardent sky has no limit',\n", - " 'revival of the sword, triumphant revenge',\n", - " 'genesis! odium invictus!',\n", - " 'through raging chaos',\n", - " 'a stardust incarnate',\n", - " 'dawn of blades! everlasting and sacred',\n", - " 'fire descends bringing gnosis to these lands',\n", - " 'misticum! through our will',\n", - " 'through our sheer defiance',\n", - " 'majestic and blessed!',\n", - " \"a new order's conceived in explosions and blasts\",\n", - " 'cras es noster! omega reigns supreme!',\n", - " 'a prophet of extinction igniting the fires',\n", - " 'swearing allegiance to one burning will',\n", - " 'making a road for the spirit',\n", - " 'listen to the messenger',\n", - " 'trust my nemesis to seal extinction',\n", - " 'reclaim! the day of reckoning is nigh!',\n", - " 'cras es noster! omega reigns supreme!',\n", - " 'a prophet of extinction igniting the fires',\n", - " 'standing on the threshold of a terrible fate',\n", - " 'making a road for the spirit',\n", - " 'tonight we stand up to judge the old world',\n", - " 'in the silence of a shameful white flag, it shrinks away',\n", - " 'tyrants, regimes will all come down to dust',\n", - " 'mediocrities will perish',\n", - " 'i condemn everything you stand for',\n", - " 'liberation from dirt',\n", - " 'liberation from you',\n", - " 'eulogists of gods! go fuck yourself with your voodoo!',\n", - " 'the sun of death burns you down to nought!',\n", - " 'ta noc jest ogromna i świetlista',\n", - " 'w strugach wieczności',\n", - " 'zorza, która nigdy nie gaśnie',\n", - " 'spieniony potop płomieni',\n", - " 'wasz świat się rozpada',\n", - " 'przemawia ogień',\n", - " 'i śmierć przemawia',\n", - " 'jej majestat przedwieczny',\n", - " 'u fundamentów świata',\n", - " 'widnokrąg jasny i zimny',\n", - " 'z mej krwi...',\n", - " 'przez me oczy patrzący',\n", - " 'głodnych kruków krążą stada',\n", - " 'kopcie groby, kopcie groby...',\n", - " 'get, get, get the fuck out, wild west, pull a gun out',\n", - " 'get back, pull the bud out , never run out',\n", - " 'dark voice in my head that i shut out',\n", - " \"but every now and then it's gotta come out, run out\",\n", - " \"howlin' at the moon from the window in my room\",\n", - " 'with the body on the floor and his throat cut out',\n", - " 'all that tough talk you need to cut out',\n", - " 'time to hit the store before we run out, hit the stage and bug out',\n", - " 'you married to a slut we know she dug out',\n", - " 'always at the party with her butt out',\n", - " \"type to save her cig and put the butt out, i ain't the one to cuss out\",\n", - " \"i'll hit you with some acid in your face that you can't rub out\",\n", - " 'bust a fuckin shot and clear the club out',\n", - " \"i ain't at the spot that we once hung out, take some vitamins you lookin strung out\",\n", - " \"one more word, i'll cut your tongue out, look at who they brought out\",\n", - " \"middle fingers up you know we don't give a\",\n", - " \"fuck, fuck (don't give a fuck)\",\n", - " \"w chuju to mam, mam (don't give a fuck)\",\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " \"don't give a fuck, fuck (don't give a fuck)\",\n", - " \"w chuju to mam, mam (don't give a fuck)\",\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " 'nigdy nie nalegałem, by stać obok was na regale',\n", - " 'tu co drugi marny grajek twierdzi, że ma hype i kasę',\n", - " 'mam nadzieję, że se zdajesz sprawę, że te suki kłamią',\n", - " 'mówią, że lecą po bitach, chociaż ledwo utykają',\n", - " 'jestem słoń, mutylator, życie, smak ma porażki',\n", - " 'tak więc, wpuśćmy ci troszeczkę światła do czaszki',\n", - " 'ze mną ta banda z holandii, wersety podłe dla ogrów',\n", - " 'jucha ci sika z czerepu jakbyś chciał podlewać ogród',\n", - " 'monstrum, przez miasto niosę w zębach truchło',\n", - " 'wciąż nie mieszczę ci się w głowie, więc ci pęka mózg, ziom',\n", - " 'serio nie kłam, że nas nie kojarzysz tępa kurwo',\n", - " 'jesteśmy nie do zatrzymania tak jak stepback z trójką',\n", - " 'półmrok, za oknem płonie castlevania',\n", - " 'możesz mnie nazywać chronos, bo tak jak czas nie zwalniam',\n", - " 'oni wciąż gadają o ciuchach, wow, to fajnie, brawa',\n", - " 'wyłączam po drugim wersie, bo kurwa zasnę zaraz',\n", - " \"fuck, fuck (don't give a fuck)\",\n", - " \"w chuju to mam, mam (don't give a fuck)\",\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " \"don't give a fuck, fuck (don't give a fuck)\",\n", - " \"w chuju to mam, mam (don't give a fuck)\",\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " 'get the fuck outta my room, get outta my house',\n", - " 'get the fuck outta my face, before this shit get loud',\n", - " \"before i go rick james, start fuckin' up your couch\",\n", - " 'then i get all savage, get punched straight in your mouth',\n", - " \"hooligan style, man, i get all foul, these nigga's don't want no piece of me\",\n", - " \"we down with a crazy crowd, come try and test and you'll be history\",\n", - " \"i'm datin' lady death and she be kissin' me\",\n", - " \"i don't disagree, but this bitch need some listerine\",\n", - " \"the stench of death man i can feel it in my neck, and i can feel that i'm possessed (there ain't no rest if you're so wicked)\",\n", - " 'burn in hell, i gotta take it to heaven for all my niggas',\n", - " 'but we probably not enlisted in heaven, they got a system',\n", - " \"get the fuck out, yeah, words coming out of god's mouth\",\n", - " \"i tell the devil, let me come down, 'cause i'm marked now\",\n", - " \"'cause i'm running from the truth, but i'm still running like a\",\n", - " \"fuck, fuck (don't give a fuck)\",\n", - " \"w chuju to mam, mam (don't give a fuck)\",\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " \"don't give a fuck, fuck (don't give a fuck)\",\n", - " \"w chuju to mam, mam (don't give a fuck)\",\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " 'get, get, get the fuck out',\n", - " 'wy-wy wypierdalaj',\n", - " 'i got bad bitch in my jordans',\n", - " \"flexin' in my jordans\",\n", - " 'they gonna say this',\n", - " 'they gonna say that',\n", - " \"but i made it from nothin'\",\n", - " 'this bitch bad, she cunning',\n", - " 'some cheese nigga, she want it',\n", - " 'ey 2k, this a madness, ha-ha-ha!',\n", - " 'i got bad bitch in my jordans',\n", - " \"flexin' in my jordans\",\n", - " 'they gonna say this',\n", - " 'they gonna say that',\n", - " \"but i made it from nothin'\",\n", - " 'this bitch bad, she cunning',\n", - " 'some cheese nigga, she want it',\n", - " 'whip clean so i run it',\n", - " 'she drip hard like gunna',\n", - " 'she drip hard like gunna',\n", - " \"i'm in the air nigga like jordan\",\n", - " 'they were saying this they were saying that',\n", - " 'but i made all this happen',\n", - " 'all my homies gonna flex for real',\n", - " \"none these niggas ain't real for real\",\n", - " \"i'm livin' my life, nigga flex for real\",\n", - " 'work so hard, get my cash for real',\n", - " 'by my own nigga, by my own, been keeping money then invest',\n", - " \"we tried a lot nigga, tried cuz we didn't got any interest\",\n", - " 'nigga thousands bucks, nigga thousands bucks now u gonna show up at my event',\n", - " 'i get the trap in my veins',\n", - " 'i get the trap in my veins',\n", - " 'i got your bitch on my phone',\n", - " 'she said she wants me some love',\n", - " 'oh my god she already knows',\n", - " 'i only count on my bros',\n", - " 'pull up my nigga, we gone',\n", - " 'i get 2k on my prod',\n", - " \"and i'm making my mama so proud\",\n", - " \"and i'm making my mama so proud, yeah yeah\",\n", - " 'i got bad bitch in my jordans',\n", - " \"flexin' in my jordans\",\n", - " 'they gonna say this',\n", - " 'they gonna say that',\n", - " \"but i made it from nothin'\",\n", - " 'this bitch bad, she cunning',\n", - " 'some cheese nigga, she want it',\n", - " 'whip clean so i run it',\n", - " 'she drip hard like gunna',\n", - " 'i got bad bitch in my jordans',\n", - " \"flexin' in my jordans\",\n", - " 'they gonna say this',\n", - " 'they gonna say that',\n", - " \"but i made it from nothin'\",\n", - " 'this bitch bad, she cunning',\n", - " 'some cheese nigga, she want it',\n", - " 'whip clean so i run it',\n", - " 'she drip hard like gunna',\n", - " 'chcieliby wejść w moje buty',\n", - " 'ona pozuje do zdjęć, big booty ass bitch, twarz suki, oh',\n", - " 'lepiej zapytaj się czego nie lubi, oh',\n", - " 'lepiej nie pytaj się czemu nie lubi',\n", - " 'chyba mnie powoli nudzi',\n", - " 'nie mam wciąż czasu na groupies',\n", - " 'się nie zachowuje, kurwa, jak newbie, mała',\n", - " 'nawet jak płyną te litry wódy',\n", - " 'melanż niedługo mi zniszczy ludzi',\n", - " 'znowu mi dzwonią by wyjść się upić',\n", - " 'poza kontrolą jak wilku',\n", - " 'robię to z głową by wyjść na ludzi',\n", - " 'oni pierdolą to idź ich ucisz',\n", - " 'mówią mi w kółko - \"licz te sumy\"',\n", - " 'niedawno stałem na winklu',\n", - " 'nie chciałem nic w zamian, a dzisiaj to biorę co moje i spieprzam',\n", - " 'w głowie mam ciągle bałagan, a w płucach brakuje powietrza',\n", - " 'nie mam już czasu na gierki, zawijam szybko jak roadster tesla',\n", - " 'biorę tą forsę, wiesz jak jest, jakbym to rzucał w osiedla',\n", - " 'i got bad bitch in my jordans',\n", - " \"flexin' in my jordans\",\n", - " 'they gonna say this',\n", - " 'they gonna say that',\n", - " \"but i made it from nothin'\",\n", - " 'this bitch bad, she cunning',\n", - " 'some cheese nigga, she want it',\n", - " 'whip clean so i run it',\n", - " 'she drip hard like gunna',\n", - " 'i got bad bitch in my jordans',\n", - " \"flexin' in my jordans\",\n", - " 'they gonna say this',\n", - " 'they gonna say that',\n", - " \"but i made it from nothin'\",\n", - " 'this bitch bad, she cunning',\n", - " 'some cheese nigga, she want it',\n", - " 'whip clean so i run it',\n", - " 'she drip hard like gunna',\n", - " \"you know, i'm tired of all the aggression, huh\",\n", - " 'i just wanna sing songs like when we were kids, you know',\n", - " 'you know that',\n", - " '- zamknij kurwa ryj',\n", - " 'rub-a-dub-dub, three bodies in the tub',\n", - " 'now who the fuck you think that they be? (now who they be?)',\n", - " 'the hater, the faker, the whack track maker',\n", - " \"fuck it, i’mma make 'em all bleed (make 'em bleed)\",\n", - " 'you better invest in a vest',\n", - " 'or get a hole left in your chest',\n", - " 'i roll with the best of the best',\n", - " 'dudes wanna test, that’s a bad decision',\n", - " \"i don't suck my own dick and i ain't into ass kissing\",\n", - " 'another ass-kicking commences',\n", - " \"give a fuck about the outcome or if it's offensive\",\n", - " \"'cause when the dead walk we will live within fences\",\n", - " 'and i\\'ll bring \"lucille\" when i visit your campus',\n", - " 'śmierć tańczy, rozsiewając wokół trupów zapach',\n", - " 'ja chcę jak bóg ukarać łaków na poziomie gugu-gaga',\n", - " 'więc kundlu japa, w herbie martwica mózgu nadal',\n", - " 'nie dotkniesz mojej poprzeczki, choćbyś na chuju stawał',\n", - " 'bij na alarm, nadciąga piekielny szwadron',\n", - " 'wstaw w cudzysłów, że cechuje nas niedelikatność',\n", - " 'to czysty hardkor, plujemy w ryj tym pseudoznawcom',\n", - " 'konkurencja nie istnieje, jak pięciozłotowy banknot',\n", - " 'temper, temper, never count to ten when',\n", - " 'my rowdy gang enter, we split the crowd center',\n", - " 'we light incense with the scent of death',\n", - " 'invent sick tracks with intent to wreck',\n", - " 'so, mic check, one, two, fuck you and you too',\n", - " 'if you make it past me, you gotta face off with chu',\n", - " 'so do what you do and stay over there',\n", - " \"'cause we ain't having no bullshit over here\",\n", - " 'na majku społeczny odpad, zwykły prostak z nadwagą',\n", - " 'w dłoniach mam kije do golfa, a oddech cuchnie jak jabol',\n", - " 'wyczuwam strach łamago, niczym szkolony labrador',\n", - " 'niech przy tym tracku wasze babcie się dziś w piekle łajdaczą',\n", - " 'nad miasto przyleciał znów b29',\n", - " 'zmień ksywę na nawóz, od dzisiaj zamieszkasz w glebie',\n", - " 'i mnie się nie pozbędziesz nawet z pomocą koleżków',\n", - " 'jestem jak bakterie kału na twej szczoteczce do zębów',\n", - " 'rub-a-dub-dub, three bodies in the tub',\n", - " 'now who the fuck you think that they be? (now who they be?)',\n", - " 'the hater, the faker, the whack track maker',\n", - " \"fuck it, i’mma make ’em all bleed (make 'em bleed)\",\n", - " 'i went to hell and back, driving in a red cadillac',\n", - " 'i never left, now i even got the devil back',\n", - " 'i never rest, see my heart is in the wicked places in my chest',\n", - " \"nevertheless, i don’t stress, 'cause i'm dead already\",\n", - " \"and hella mella sweaty burnin' all your lily kelly\",\n", - " \"people lookin’ at me petty, like i'm fetty wap\",\n", - " \"aim my glock at your flock, 'cause they ready now\",\n", - " 'i let it pop, you gon feel it like a belly flop',\n", - " \"i'mma bully, i'mma jock, i'm the fuckin' rock\",\n", - " \"i'mma chip off the old block, you fuckin' flop\",\n", - " 'killing niggas like a cop, it will never stop',\n", - " 'always rapping for the real, rest in peace to pops',\n", - " 'he in heaven now, but i be still in hell a lot',\n", - " 'the demon knights in the castle of camelot',\n", - " 'they still in shock never open up the devils box',\n", - " \"see, that's a warning, it's gettin' warm, it's hella hot\",\n", - " 'rub-a-dub-dub, three bodies in the tub',\n", - " 'now who the fuck you think that they be? (now who they be?)',\n", - " 'the hater, the faker, the whack track maker',\n", - " \"fuck it, i'mma make 'em all bleed (make 'em bleed)\",\n", - " 'keep it classy...',\n", - " 'so classy',\n", - " 'no matter what it is in life you choose to do',\n", - " 'you gotta keep it classy',\n", - " 'keep it classy, yeah, keep it classy',\n", - " 'yeah, dat x on the european tour',\n", - " \"i'm give you much more than your average whore\",\n", - " \"now, what's poppin'?\",\n", - " 'you should go copy when this joint come out',\n", - " \"you need to pull out the gun, cause that's 74 year\",\n", - " 'gimme some smoke and a bottle of beer',\n", - " \"and we're good, send my check when you could\",\n", - " 'the sooner, the better, your wife gave your ex some head',\n", - " 'then you should get her',\n", - " 'from warsaw to cracow, the chemist have no limits',\n", - " 'wave the polish flag in the air',\n", - " 'when i go there, yeah, cross the atlantic on a bird',\n", - " 'my passport is good, so fuck what you heard',\n", - " 'the professor similar to lech wałęsa',\n", - " 'i move all the masses plus shake their asses',\n", - " 'the skinny man with glasses, giving no passes',\n", - " 'you gotta earn the shit, fuck around with the dat',\n", - " \"now, i'm a burn your shit\",\n", - " \"it's like that, yo, and you don't stop\",\n", - " \"i'm dat x and gurantee the hit, sure shot\",\n", - " \"it's like that, yo, and you don't quit\",\n", - " \"i'm dat x getting all that i can get like that\",\n", - " 'no matter what it is in life you choose to do',\n", - " 'you gotta keep it classy',\n", - " 'and if you wanna be respected by the people for what you do',\n", - " 'you gotta keep it classy',\n", - " 'and everytime that you step in a booth, you got to speak the truth',\n", - " 'then keep it classy',\n", - " 'because the lord gotta plan for me and gotta plan for you',\n", - " 'so keep it classy',\n", - " 'znam tysiąc sposobów jak zrobić dobry track',\n", - " 'fakt, pierdolę nierobów, co widzą tylko hajs',\n", - " 'brat, dziękuję bogu, walczę jak szogun',\n", - " 'ale przede wszystkim jeśli mogę wspieram zawsze ziomów',\n", - " 'znasz, przecież rytuał piątkę, a bluba i ogień dodaj',\n", - " 'tabasco plus sok z kielonka na spodzie',\n", - " 'jeśli masz swoją drogę rób to szczerze',\n", - " 'obojętne kim jesteś burdelmamą, księdzem, ja w to wierzę',\n", - " 'bóg, mahomet, budda ktoś mnie do nieba zabierze',\n", - " 'i nie mam zamiaru utrudniać',\n", - " 'wiesz co mnie wkurwia, to niemal jak klątwa',\n", - " 'do dziś podchodzą w klubach bym im sprzedał na jointa',\n", - " 'to nie kwestia skąpstwa, a klasy, którą masz',\n", - " 'wiem, że kiepsko wyglądam i mam podejrzaną twarz',\n", - " 'brat stać mnie, by na koncertach dać wszystko tu nim padnę',\n", - " 'nowy jork, londyn, warszawa, łódź w transie',\n", - " 'non-stop na trasie tryb życia polaka',\n", - " 'co wciąż jara się rapem, ale boi się latać',\n", - " 'jeśli boli wrzuć apap, to nie papa dance czy kombi',\n", - " \"o.s.t.r.'y, sadat x niszczymy tandetę jak wąglik\",\n", - " 'no matter what it is in life you choose to do',\n", - " 'you gotta keep it classy',\n", - " 'and if you wanna be respected by the people for what you do',\n", - " 'you gotta keep it classy',\n", - " 'and everytime that you step in a booth, you got to speak the truth',\n", - " 'then keep it classy',\n", - " 'because the lord gotta plan for me and gotta plan for you',\n", - " 'so keep it classy',\n", - " 'no matter what it is in life you choose to do',\n", - " 'you gotta keep it classy',\n", - " 'and if you wanna be respected by the people for what you do',\n", - " 'you gotta keep it classy',\n", - " 'and everytime that you step in a booth, you got to speak the truth',\n", - " 'then keep it classy',\n", - " 'because the lord gotta plan for me and gotta plan for you',\n", - " 'so keep it classy',\n", - " 'keep it classy...',\n", - " 'jessi-i-i.. jessi-i-i..',\n", - " 'aj aj aj, girl you take me high',\n", - " 'wszystko albo nic',\n", - " 'now listen to your dreams',\n", - " 'and let me be your prince',\n", - " 'niech spadnie deszcz',\n", - " 'ty bardzo tego chcesz',\n", - " 'dobrze wiesz, że ja też',\n", - " 'ej, ej, ej',\n", - " 'i want you to stay',\n", - " 'all the night and day',\n", - " 'and never go away',\n", - " 'nic nie rozłączy nas',\n", - " 'the sun shines for us',\n", - " 'między nami czar',\n", - " 'just the way you are',\n", - " \"jessica, baby please don't make me cry\",\n", - " 'tylko buzi daj, buzi daj',\n", - " \"jessica, baby please don't break my heart\",\n", - " 'udowodnię ci, że jestem wart',\n", - " 'daj mi trochę szans',\n", - " \"i'll show you how i dance\",\n", - " \"it's all about us\",\n", - " 'i nie liczy się czas',\n", - " 'wanna feel your touch',\n", - " 'w moje oczy patrz',\n", - " 'just love me tender',\n", - " 'a ja przy tobie będę',\n", - " 'you got me love stoned',\n", - " 'więc nie mów \"idź stąd\"',\n", - " 'to nie żaden błąd',\n", - " 'but this is what you want',\n", - " 'księżniczko ty',\n", - " 'zmieniasz zamek, gdy',\n", - " 'znajdę klucz do twego serca',\n", - " 'które jest jak twierdza',\n", - " 'oł oł oł',\n", - " \"i'll never let you go\",\n", - " 'i love you all the way',\n", - " 'i nigdy, nigdy mniej',\n", - " 'please, please, please',\n", - " 'gimme gentle kiss',\n", - " 'nie wiem, ile masz iq',\n", - " 'but i just like you',\n", - " \"jessica, baby please don't make me cry\",\n", - " 'tylko buzi daj, buzi daj',\n", - " \"jessica, baby please don't break my heart\",\n", - " 'udowodnię ci, że jestem wart',\n", - " 'daj mi trochę szans',\n", - " \"i'll show you how i dance\",\n", - " \"it's all about us\",\n", - " 'i nie liczy się czas',\n", - " 'wanna feel your touch',\n", - " 'w moje oczy patrz',\n", - " 'just love me tender',\n", - " 'a ja przy tobie będę',\n", - " 'jessica, jessica, jessiiiiiccaaaa',\n", - " 'jessica, jessica, jessiiiiiccaaaa',\n", - " 'ej, ej, ej',\n", - " 'i want you to stay',\n", - " 'all the night and day',\n", - " 'and never go away',\n", - " 'nic nie rozłączy nas',\n", - " 'the sun shines for us',\n", - " 'między nami czar',\n", - " 'just the way you are',\n", - " \"jessica, baby please don't make me cry\",\n", - " 'tylko buzi daj, buzi daj',\n", - " \"jessica, baby please don't break my heart\",\n", - " 'udowodnię ci, że jestem wart',\n", - " 'daj mi trochę szans',\n", - " \"i'll show you how i dance\",\n", - " \"it's all about us\",\n", - " 'i nie liczy się czas',\n", - " 'wanna feel your touch',\n", - " 'w moje oczy patrz',\n", - " 'just love me tender',\n", - " 'a ja przy tobie będę',\n", - " '(ej lbd, a dlaczego w ogóle jessica?)',\n", - " \"if my hair is black was red, toxic, blue and red to badly to this day all this month to keep these all can't manage\",\n", - " 'everydays ganges crossing fire making damage, law and convice to surely gonna pay but this option is too over we will take all of your cash',\n", - " 'miss things shipping she beens for rescuetive high school educate young go representative',\n", - " 'no god and the live is education lose everything never change graduation',\n", - " \"father that's you first got pride of his shoes find your prove and go inside decide to the true,everytime we turn the chick and dont speak to the younger\",\n", - " 'they will come more rebel you think it and did the something',\n", - " 'little girls happen little girl still try to show you after brother tryna safe your world',\n", - " 'proszę, podaruj mi uśmiech i miłość',\n", - " 'a uczucie oddam ze zdwojoną siłą',\n", - " 'nie jest moją winą, że zapominasz o mnie',\n", - " 'że jestem tylko dzieckiem, samemu nie dorosnę',\n", - " 'proszę, podaruj mi uśmiech i miłość',\n", - " 'a uczucie oddam ze zdwojoną siłą',\n", - " 'nie jest moją winą, że zapominasz o mnie',\n", - " 'że jestem tylko dzieckiem, samemu nie dorosnę',\n", - " 'gdybym miał taką moc by tu przetwarzać świat ten',\n", - " 'by honor z zaufaniem przeważał nad blaskiem',\n", - " 'co z tym bogactwem, cierpicie na przesyt?',\n", - " 'za mało na dzień ginie z głodu w afryce dzieci?',\n", - " 'ty przestań bredzić, że wolno czas latem płynie',\n", - " 'w końcu rozjebie łeb ci pięciolatek z karabinem',\n", - " 'za broń i kokainę i za życie w gnoju non-stop',\n", - " 'co bawi ciebie widok jak brzuchy z głodu rosną?',\n", - " 'nalana mordo wypchana kotletem',\n", - " 'to nasza europa wysławiana w świecie',\n", - " 'wolisz odlecieć, sumienie zabijać',\n", - " 'niż myśleć co się dzieje z noworodkami w chinach',\n", - " 'i chuj kogo obchodzi dzień poprzedni',\n", - " 'handel dziećmi, ustalanie cen nieletnich',\n", - " 'to twój pierdolony cel tajlandzkiej wycieczki',\n", - " 'oby los kiedyś ciebie na zawsze zbezcześcił',\n", - " 'spójrz w oczy mordercy na przeciw zagadce',\n", - " 'żyjemy w świecie dzieci zabitych przez matkę',\n", - " 'przymierze z diabłem, era dorosłych',\n", - " 'pytasz o realia? w nich nie ma miłości',\n", - " 'proszę, podaruj mi uśmiech i miłość',\n", - " 'a uczucie oddam ze zdwojoną siłą',\n", - " 'nie jest moją winą, że zapominasz o mnie',\n", - " 'że jestem tylko dzieckiem, samemu nie dorosnę',\n", - " 'proszę, podaruj mi uśmiech i miłość',\n", - " 'a uczucie oddam ze zdwojoną siłą',\n", - " 'nie jest moją winą, że zapominasz o mnie',\n", - " 'że jestem tylko dzieckiem, samemu nie dorosnę',\n", - " \"he takes a deep breath,a longs bunny hops today he says as everyday work work work ethic a fighter browses quickly she's a properly you can see it on a green\",\n", - " 'check every pouch to pays for the sweater short never no more bright to self as a best top but next shop nothing and best shoots comming run if u want he loves to do something',\n", - " \"i can't escape it, gray fingers on the bowl chest and all in grey vision shakes to the law if u go she's always,copy this elusive persines are opened she lend that room in\",\n", - " 'then take a deep breath once steady is noise line and pieces in the door door door nothing a man but he carried a gun and he stopped the black hell he knows he did kill that one',\n", - " 'nobodys fun nobodys cool nobody ever told it be sure its cool that was better fifteen just was a little solider stand young forever and stay here full over',\n", - " 'ugh, yeah word up word up',\n", - " 'ugh-huh.ugh-huh',\n", - " 'yeah yeah',\n", - " 'word up',\n", - " \"yo, it's one for the struggle\",\n", - " 'two for the pain',\n", - " 'three for the niggas with the bullets in their brains',\n", - " 'word up braat',\n", - " 'onyx and slums attack',\n", - " 'yo, yo',\n", - " 'ayo, the first time i got to poland',\n", - " 'i saw the cops patrolling blocks emotional cold as same',\n", - " 'as the as the blocks in ocean',\n", - " 'brooklyn was just ready to took a look on the niggas in the wrong way',\n", - " 'several hours come out to be a long way',\n", - " 'long days turned out into shorter nights, because all my life i have to fight',\n", - " 'in order to survive, escape from self-suicide',\n", - " 'gats up, to the sky, burned on the hip',\n", - " 'hollow tips for the politics',\n", - " 'niggas better learn quick',\n", - " 'real recognize real',\n", - " 'hip-hop, respect that, salute',\n", - " 'eyes red, ready to shoot',\n", - " 'bulletproof, the mic buff',\n", - " 'my nike boots, are shopped off',\n", - " 'slums attack, guns react',\n", - " 'with automatics cause an ave',\n", - " \"i'm making back up\",\n", - " 'sixteens in the clip',\n", - " 'sixteens when i spit',\n", - " 'sixteens in the whip',\n", - " 'one for the trouble',\n", - " 'two for the pain',\n", - " 'three for the niggas with bullets in their brains',\n", - " 'dziewięćdziesiąte lata, odległe miejsca, on słucha!',\n", - " 'oni wykonują, łączy ich hip-hop sztuka',\n", - " 'on drapie płyty, próbuje tworzyć, igły zdziera!',\n", - " 'hip-hop elementy, każdy z nich dziś pożera show!',\n", - " 'koncerty, teledyski, bariera marzeń',\n", - " 'ludzie z pasją doprowadzają do tych zdarzeń',\n", - " 'tworzą historie, o.n.y.x, tewu, slu, wspólny projekt',\n", - " 'rozpoznaj combo z la bomby, nagrany jakiś czas temu',\n", - " 'colabo slu, onyx, człowieku nic złego nie mów',\n", - " 'kilka lat temu pamiętam, z darkiem lot przez atlantyk',\n", - " 'ten pierwszy raz miałem ciarki, spełniam marzenia z braćmi',\n", - " 'ten pierwszy wylot do stanów, widok wieżowców projecty',\n", - " 'zamurowało pięć dzielnic, oto wizyt efekty',\n", - " 'tworzę historię, powiedzmy, mamy dziś dużo szczęścia',\n", - " 'od dziecka słuchałem rapu, chciałem ten rap napieprzać',\n", - " 'dziś wspólnie z braćmi na scenie, złączeni porozumieniem',\n", - " 'rap stał się naszym tłumaczem, rap to me przeznaczenie',\n", - " 'a bacdafucup natchnieniem, do życia grałem pirata',\n", - " '93 ważna data, wtedy powstał slums attack',\n", - " 'w walkmanie bez przerwy latał fredro i sticky',\n", - " 'ciężkie czasy dla clicki, chodziłem zły i przybity',\n", - " 'dzisiaj profity i hity, nagrania dają nam kopa',\n", - " 'zapamiętaj to chłopak, sen możesz zrealizować!',\n", - " 'dziewięćdziesiąte lata, odległe miejsca, on słucha!',\n", - " 'oni wykonują, łączy ich hip-hop sztuka',\n", - " 'on drapie płyty, próbuje tworzyć, igły zdziera!',\n", - " 'hip-hop elementy, każdy z nich dziś pożera show!',\n", - " 'koncerty, teledyski, bariera marzeń',\n", - " 'ludzie z pasją doprowadzają do tych zdarzeń',\n", - " 'tworzą historie, o.n.y.x, \"slam\" slu, wspólny projekt',\n", - " 'i murder, i murder, i murdering on the beat',\n", - " 'now turn the lights so everybody see',\n", - " \"i'm not to be, not to be, not to be fuck with!\",\n", - " \"one time you figured it out, it's too late bitch!\",\n", - " 'i shoot rappers up, ha-ptfu spit them out!',\n", - " \"i got choppers in waiting boy, don't let me send them out!\",\n", - " \"so many guns that i'm own, that i can't read them out!\",\n", - " \"trust me dog, you don't wanna my name in your mouth!\",\n", - " \"i'm dot on their foes, they have dot on their clothes\",\n", - " \"you nothing but 0s, you gonna be fuckin' exposed!\",\n", - " 'got the whole crowd tryna to see me up on their toes!',\n", - " \"you get swish g's out, i'm leaving nothing but holes!\",\n", - " \"i'm man in depress with, one hand on a dessert\",\n", - " \"in the land of desperate, i'm the man you shouldn't mess with!\",\n", - " \"i'm live for war, you die in peace\",\n", - " 'and when it comes to sticky fingaz nigga is zajebisty!',\n", - " 'to historia, brak granic, to, to colabo!',\n", - " 'ocean, zderzenie, fali rymów, colabo!',\n", - " 'ziemia, powietrze, pióro colabo!',\n", - " 'nuty, szacunek, one love, colabo!',\n", - " 'to historia, brak granic, to, to colabo!',\n", - " 'ocean, zderzenie, fali rymów, colabo!',\n", - " 'ziemia, powietrze, pióro colabo!',\n", - " 'nuty, szacunek, hip-hop, colabo!',\n", - " 'u u a a a',\n", - " 'heheheh',\n", - " 'woo woo',\n", - " 'keep it sick',\n", - " 'woo woo',\n", - " 'woo woo',\n", - " 'keep it sick',\n", - " 'woo woo',\n", - " 'argh!',\n", - " 'brrrah!',\n", - " 'pierdol się rozbitą flaszką, w arschloch, wchodzę tu z chujem na sztorc',\n", - " 'raszplo masz tu na dokładkę pocałunek z gazmo',\n", - " 'patrzę z góry jak jastrząb na wasz wyścig szczurów',\n", - " ...]},\n", - " 'data': ['ej, (what)',\n", - " 'foot up in the clutch, burning tires on my jaguar',\n", - " 'runnin till i fall no excuse, girl i love you too',\n", - " 'i love you too (i love you too)',\n", - " \"i love you and i'll always love you, even when you faded off the malibu\",\n", - " 'okay, okay, okay',\n", - " 'gold ’round my neck (bling, bling)',\n", - " 'prawie igrzyska w soczi (yeah)',\n", - " \"ice 'round my neck (ice, ice)\",\n", - " 'prawie igrzyska w soczi (shksh)',\n", - " 'for friends except',\n", - " \"ci ludzie których mam dosyć (fuck 'em)\",\n", - " 'rozpuszczam się jak relanium',\n", - " 'rozpuszczam się jak jej włosy (włosy, włosy....)',\n", - " 'oh, i can’t let her get away',\n", - " '(włosy, włosy, włosy)',\n", - " \"oh, i can't let her get away\",\n", - " '(restaurant posse)',\n", - " 'czas na emocje dla tych, którzy wzięli udział w konkursie audiotele',\n", - " 'dziś do wygrania: fiat cinquecento, komputer multimedialny i telefon z automatyczną sekretarką',\n", - " \"all y'all triple z on me i'm okay with that though\",\n", - " \"all y'all gonna wake i'm not repeating the same chords\",\n", - " \"steering with my knee when i'm ridin in a phantom\",\n", - " \"she got double d's, i got double, double platinum (that’s right)\",\n", - " 'oh, i can’t let her get away',\n", - " '(włosy, włosy, włosy...)',\n", - " \"i can't let her get away\",\n", - " '(włosy, włosy, włosy...)',\n", - " 'oh, i can’t let her get away',\n", - " '(platinum (oo-oh) platinum)',\n", - " \"oh, i can't let her get away\",\n", - " 'rap prosto z serca, nie gram z nut',\n", - " 'ja nie jestem artystą, jestem rzeźnikiem',\n", - " 'czuję, że żyję zadając se ból',\n", - " 'czuję, że żyję kiedy robię muzykę',\n", - " 'zero kompromisów, zimny jak lód',\n", - " 'jestem głuchy na waszą krytykę',\n", - " 'z twojej mordy czuję tylko smród',\n", - " 'zamknij mordę bo nagrywam płytę',\n", - " 'popek i the game to jest gangsta rap',\n", - " 'na rynku muzycznym już 12 lat',\n", - " 'bawię się muzyką wyjebane mam na hajs',\n", - " 'jesteśmy już blisko do-do-dotykamy gwiazd',\n", - " 'jak odejdę to z hukiem jak 2pac shakur',\n", - " 'będzie sądził mnie bóg, a nie stado hien !',\n", - " 'muzyka to zabawka, słyszysz ją z fur',\n", - " 'umiem się nią bawić hej',\n", - " 'nagrywam rap pod beat, a moją wizytówką jest ayeh',\n", - " 'pierwsza liga rapu - popek monster i the game',\n", - " '(2x)',\n", - " 'nagrywamy rap na światową skalę',\n", - " 'jeśli będę mógł, pójdę jeszcze dalej',\n", - " 'zarabiam gruby hajs bo do tego też mam talent',\n", - " 'jeśli będę mógł, będę robił to dalej',\n", - " '(wag wan production)',\n", - " 'yo, you know what it is man',\n", - " \"it's the motherfucking blood money capo !\",\n", - " 'popek, ruslan, you know what it is , la familia !',\n", - " 'wipe that fucking grin off your face bitch',\n", - " 'these new rap niggas pussy and i can taste it',\n", - " 'all this soft ass cotton ball rap niggas, face it',\n", - " '\"i\\'m more talented\"',\n", - " 'what the fuck do you do-',\n", - " '\"-when there is no one else to battle with?\"',\n", - " 'play battleship, assault rifles aimed at your yacht',\n", - " \"(aimed at ya city?), no matter how you living, you'll get shot\",\n", - " \"this ain't no fairy tale, no tinker bells flyin' 'round this hook\",\n", - " 'just that compton! monster!',\n", - " 'this is one for the books',\n", - " 'so let that red impala hop again',\n", - " \"don't stop. i'm in that drop-top\",\n", - " \"don't be shy bitch, hop right in\",\n", - " 'remember me? i sold 5 mill out the gate',\n", - " 'remember me? and slap the shit out niggas fucking with dre',\n", - " 'remember me? i put the world on blood',\n", - " 'so much chronic smoke seeping through the speakers',\n", - " 'like the world on drugs',\n", - " 'and i would love to be aftermath still',\n", - " 'but i burned my finger on too many roaches',\n", - " 'now pass me one of them pills, so i can levitate',\n", - " 'west side compton',\n", - " 'dj niquan',\n", - " 'popek monster i the game',\n", - " 'tekst i adnotacje na rap genius polska',\n", - " 'wiem, że ta muzyka do ciebie przemawia',\n", - " 'ja tak ty, nienawidzę prawa i te stare kurwy',\n", - " 'pozdychają na zawał',\n", - " 'jesteś z ulicy, obyś nie udawał',\n", - " 'to może być piekło, albo karnawał',\n", - " 'zajmijcie pozycje, bo zaczyna się zabawa',\n", - " 'bardzo dziwna gra, na dziwnych zasadach',\n", - " 'możesz ją wygrać, jak masz asy w rękawach',\n", - " 'jesteś na to gotów, to dawaj',\n", - " 'żyj według własnego prawa',\n", - " 'chyba, że chcesz robić całe życie to, co będą ci kazać',\n", - " 'ja was do niczego tu nie będę namawiać',\n", - " 'rób co uważasz, aby słusznie',\n", - " 'bo jeden zły ruch, z gry wypadasz - a bywa różnie',\n", - " 'jak masz dobry patent, nie odkładaj go na później',\n", - " 'w umyśle swoim odkryj patentów kuźnie',\n", - " 'i obserwuj co będzie później',\n", - " 'i love this ugly streets',\n", - " 'i ride on this ugly streets',\n", - " \"i'll die on this ugly streets\",\n", - " 'man i fight on this ugly streets',\n", - " 'thats why i make this ugly beats',\n", - " 'for you to dance on this ugly streets',\n", - " 'one love to the streets !',\n", - " \"if you are on the street don't act like a fool\",\n", - " 'you play the same game with the same rules',\n", - " 'as i play, hold your position',\n", - " 'rule number one: keep your mouth shout, eyes open and listen',\n", - " 'rule number two: give all you got, you only got one chance to score',\n", - " \"rule number three: you don't beat what you saw\",\n", - " 'rule number four: the game is in your hands not in hands of the lord',\n", - " 'rule number five: you have to love for the game so far',\n", - " 'rule number six: watch your actions, moves come back fast like bruce lee kicks',\n", - " 'rule number seven: learn how to use your mind and heart avoid using a weapon',\n", - " \"rule number eight: learn how to shoot straight. just in case u don't know who u gonna face\",\n", - " 'i love this ugly streets',\n", - " 'i ride on this ugly streets',\n", - " \"i'll die on this ugly streets\",\n", - " 'man i fight on this ugly streets',\n", - " 'thats why i make this ugly beats',\n", - " 'for you to dance on this ugly streets',\n", - " 'one love to the streets !',\n", - " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", - " 'all my cars got leather and wood, in my hood we call it buck',\n", - " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", - " 'all my cars got leather and wood, in my hood we call it buck',\n", - " \"i'm smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", - " 'all my cars got leather and wood, in my hood we call it buck',\n", - " 'na dmuchanym materacu zrobił self-made',\n", - " 'taki to był z niego młody werter',\n", - " 'na insta story zamieścił relację wcześniej',\n", - " 'jak ona klęczy przed rozpiętym goofy beltem',\n", - " \"w louis'a nerce z aliexpress, trzymał z jazzem kopertę\",\n", - " 'na gierce ciężkie, bo żydów więcej niż w parlamencie',\n", - " 'zawinął w bletkę i przez chwilę było śmiesznie',\n", - " 'lecz gdy brał bucha, poczuł pestkę',\n", - " 'tu królują szwedzkie meble',\n", - " 'od miesiąca do miesiąca na rezerwie',\n", - " 'wszyscy wpierdalają tutaj magdalenkę',\n", - " 'wszyscy wpierdalają tutaj magdalenkę',\n", - " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", - " 'all my cars got leather and wood, in my hood we call it buck',\n", - " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", - " 'all my cars got leather and wood, in my hood we call it buck',\n", - " \"i'm smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", - " 'all my cars got leather and wood, in my hood we call it buck',\n", - " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", - " 'all my cars got leather and wood, in my hood we call it buck',\n", - " 'na dmuchanym materacu wszędzie stemple',\n", - " \"powiedział jej ''te quiero siempre''\",\n", - " 'zanim zostawił sklejkę',\n", - " 'z torby gucci przewiązaną ma wstążeczkę',\n", - " 'ma koleżkę, co kupił czapeczkę',\n", - " 'kokonowe gluty ciążą jak kamienie',\n", - " 'kolory życia ma na dłoni na chusteczce',\n", - " 'współlokator gej pieje, gryzie go sumienie',\n", - " 'życie pisze prozy jak mikołaj rej',\n", - " 'poszli by do sklepu może chociaż by po wodę',\n", - " 'fobia taka mocna, mordo, że nie zbijesz jej',\n", - " 'na stoiku nocnym mają ciepłą colę',\n", - " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", - " 'all my cars got leather and wood, in my hood we call it buck',\n", - " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", - " 'all my cars got leather and wood, in my hood we call it buck',\n", - " \"i'm smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", - " 'all my cars got leather and wood, in my hood we call it buck',\n", - " \"smokin' out, pourin' up, puttin' dick up in yo' slut\",\n", - " 'all my cars got leather and wood, in my hood we call it buck',\n", - " \"hey yeah watch this man, babilon is suckin' like a vampire\",\n", - " 'this a blood blood, this a blood blood blood of a man !',\n", - " 'if live was a thing money could a buy',\n", - " 'rich shoulda live and poor woulda die',\n", - " 'if live was a thing money could a buy',\n", - " 'rich shoulda live and poor woulda die',\n", - " 'everywhere me go me hear the poor man a cry',\n", - " 'them tell me that the prices them a rise so high',\n", - " 'everywhere me go the people them ball',\n", - " 'them tell me that a crisis is shocking gonna all',\n", - " 'rich man and poor man a begger man, thief',\n", - " 'lion adaptor and indian chief',\n", - " 'rich man and poor man a begger man, thief',\n", - " 'lion adaptor and indian chief',\n", - " \"i can't stand it no\",\n", - " 'no, no, no',\n", - " \"i can't stand it no\",\n", - " 'no, no, no',\n", - " \"i can't stand it no\",\n", - " 'no, no, no',\n", - " \"i can't stand it no\",\n", - " 'no way',\n", - " 'babilon da bandit vampire bandit',\n", - " \"suckin' your blood dema like a mosquito\",\n", - " 'babilon da bandit vampire bandit',\n", - " 'you must distroy a dem fi safe your blood',\n", - " 'babilon da bandit vampire bandit',\n", - " \"suckin' your blood dema like a mosquito\",\n", - " 'babilon da bandit vampire bandit',\n", - " 'you must distroy a dem fi safe your blood',\n", - " 'cunning like a spider with his venom',\n", - " 'speedy like a cobra with her poison',\n", - " 'every time you must be ready fi shock',\n", - " 'danger mi bredda this a blood shark attack',\n", - " 'strong like anaconda with her greatness',\n", - " 'speedy like a cobra haffi no stress',\n", - " 'every time you must be ready fi shock',\n", - " 'danger mi bredda this a blood shark attack',\n", - " 'distroy da babilon and every time you lookin for',\n", - " 'irie jah jah love and hole yuh cahna (keep your position)',\n", - " 'distroy da babilon and every time you lookin for',\n", - " 'freedom and peace and jah jah holy kingdom',\n", - " 'distroy da babilon and every time you lookin for',\n", - " 'irie jah jah love and hole yuh cahna (keep your position)',\n", - " 'distroy da babilon and every time you lookin for',\n", - " 'freedom and peace and jah jah holy kingdom',\n", - " 'babilon da bandit vampire bandit',\n", - " \"suckin' your blood dema like a mosquito\",\n", - " 'babilon da bandit vampire bandit',\n", - " 'you must distroy a dem fi safe your blood',\n", - " 'babilon da bandit vampire bandit',\n", - " \"suckin' your blood dema like a mosquito\",\n", - " 'babilon da bandit vampire bandit',\n", - " 'you must distroy a dem fi safe your blood',\n", - " 'babilon to bandyta a babilon to złodziej',\n", - " 'babilon za chwile bracie napewno ciebie tutaj ubodzie',\n", - " 'babilon to jest złodziej tutaj bezczelny',\n", - " 'on sięga tobie bracie do mentalnej kielni',\n", - " 'on wszędzie dostaje on odwiedza wszelkie kraje',\n", - " 'to na co ma ochotę bracie zawsze dostaje',\n", - " 'raje obiecuje a później okrada',\n", - " 'gada nielada defenestruje ragga brygada man',\n", - " 'babilon da bandit vampire bandit',\n", - " \"suckin' your blood dema like a mosquito\",\n", - " 'babilon da bandit vampire bandit',\n", - " 'you must distroy a dem fi safe your blood',\n", - " 'babilon da bandit vampire bandit',\n", - " \"suckin' your blood dema like a mosquito\",\n", - " 'babilon da bandit vampire bandit',\n", - " 'you must distroy a dem fi safe your blood',\n", - " 'ekonomiści i politycy w białych rękawiczkach krwawi bandyci',\n", - " 'ekonomiści i politycy w białych rękawiczkach krwawi bandyci',\n", - " 'na ich zarękawkach nowych krew',\n", - " 'na ich furach służbowych krew',\n", - " 'na ich decyzjach papierowych krew',\n", - " 'ach zobacz człowieku czy tego właśnie chcesz',\n", - " 'babilon da bandit vampire bandit',\n", - " \"suckin' your blood dema like a mosquito\",\n", - " 'babilon da bandit vampire bandit',\n", - " 'you must distroy a dem fi safe your blood',\n", - " 'babilon da bandit vampire bandit',\n", - " \"suckin' your blood dema like a mosquito\",\n", - " 'babilon da bandit vampire bandit',\n", - " 'you must distroy a dem fi safe your blood',\n", - " 'if live was a thing money could a buy',\n", - " 'rich shoulda live and poor woulda die',\n", - " 'if live was a thing money could a buy',\n", - " 'rich shoulda live and poor woulda die',\n", - " 'girla girla girla girla poor would die',\n", - " 'girla girla girla girla poor would die',\n", - " 'girla girla girla girla poor would die',\n", - " 'girla girla girla girla poor would die die die',\n", - " 'budzi mnie hałas, ktoś wali w moje drzwi, ty',\n", - " 'patrzę na zegarek, moja pierwsza myśl to psy, zły',\n", - " 'zaglądam w wizjer, kto to może być i',\n", - " 'czemu tutaj przyszedł, po co, skąd i z kim',\n", - " 'film się zaczyna, oddech mi przyśpieszył, leci w krew adrenalina',\n", - " 'klimat znasz, ręka, zamek, szkło',\n", - " 'w drugiej ręce, jakby co nic nie widziałem',\n", - " 'otwórz, a mi mówi głos',\n", - " 'co noc chwili zakłóca, znam życie na bałutach',\n", - " 'tu nawet sobie się nie ufa, puka znów, cóż',\n", - " 'napierdala w drzwi, ty, szukam nóż tu',\n", - " 'leży koło płyt, chwyć go myślę',\n", - " 'lecz czy ostrze mi da spać, i to wszystko zniknie, nie wiem',\n", - " 'może by wiedział schwarzenegger',\n", - " 'los sprawdza nas codziennie, więc ja sprawdzę siebie',\n", - " 'nie gardzę niebem, po prostu',\n", - " 'stale idą kryminały w głowie, choć nie oglądam ale kino!',\n", - " 'to ci powiem, że ziomki bracie giną za proszek',\n", - " 'za grosze, za crack, za heroinę',\n", - " 'jeden strzał to rykoszet, prosto w gar',\n", - " 'pryska świat w jupiterach',\n", - " 'jeden chuj, wolę żyć, idę spać - nie otwieram',\n", - " 'idę swoim tempem',\n", - " 'przez ciągłe motaniny',\n", - " 'z biegiem czasu poznaję',\n", - " 'kolory tej dziedziny',\n", - " \"looking to see who's behind you (craig g)\",\n", - " \"hoping like hell they don't find you (let's go)\",\n", - " 'got an email from my homeboy tytus',\n", - " 'about a show in poland so i asked when the flight is',\n", - " \"he said thursday, i said for sure i'm doing it\",\n", - " 'pick me out in łódź, i touchdown in lublinek',\n", - " \"as i packed i hoped the police don't ruin it\",\n", - " \"they keep a close watch out just cause the crew i'm with\",\n", - " 'okay i head to jfk, at the ticket counter people looking in a way',\n", - " \"i'm thinking 'bout the show, little do i know\",\n", - " 'the hip-hop police tailed my ass from the door',\n", - " 'investigating every rapper so they can bust them',\n", - " \"luckily i peeped 'em on the low going through customs\",\n", - " 'went about my business the show got tore down',\n", - " 'hollered at o.s.t.r to drop some pronouns in the lab',\n", - " 'got the address called a cab',\n", - " \"and at that very moment that's when shit went bad\",\n", - " 'a car chase ensued i was nervous and zoning',\n", - " \"blowing through these little-ass streets like i'm in ronin\",\n", - " \"and it's 4 in the morning i finally hit o's spot\",\n", - " \"it went from bad to worse when i found out the door's locked\",\n", - " 'damn!',\n", - " 'brother on the run',\n", - " \"you didn't have to be, a brother on the run\",\n", - " 'one bullet from a gun',\n", - " \"that's how it started for this brother on the run\",\n", - " 'big h',\n", - " 'popek',\n", - " 'wagwan productions',\n", - " 'whisper on the beat',\n", - " 'h inside',\n", - " 'still killing them cats, niggas feeling my raps',\n", - " 'had to school them, this is english and maths',\n", - " \"i get a*'s, when i spray bars, get high when i blaze fam call the fire brigade\",\n", - " 'killing them cats, niggas feeling my raps',\n", - " 'had to school them, this is english and maths',\n", - " \"i get a*'s, when i spray bars, get high when i blaze fam call the fire brigade\",\n", - " 'done many crimes, paid many fines, been in the transit, handcuffed, many times',\n", - " \"more hoe's, i'm talking more shows, score goals like paul scholes\",\n", - " \"when it comes to the coke i'm qualified, call 5-0 tell 'em it's a homicide\",\n", - " 'please pay respect, or i will spray the tec',\n", - " \"black whip, i'm sick, lemme take a breath\",\n", - " \"i don't ask once, when i blast punks, mac-10 had niggas doing starjumps\",\n", - " \"yeah, i'm talking loads of paper, call the flying squad get me a negotiator\",\n", - " \"i stay awake, stood by the door with the small .38, stood by the door all i'm gonna wait, they were like h, goodness sake\",\n", - " 'call it a day, call it a night, call it a war, call it a fight',\n", - " 'grab the machine-gun shoot on sight, they were like h, are you alright',\n", - " 'am i alright, am i alright, writing this tune i was up all night',\n", - " \"i'm up for anything, up for a fight, grab the machine shoot on sight\",\n", - " 'say something safe, if you say anything say it to my face',\n", - " \"why these fools wanna hate on h, i can't hear them i was in space\",\n", - " \"i and i worship carry two swords, i and i music where's my too much violence i was ignored, smashed in windows kicked in doors, big online run up in stores, they were like h, this ain't yours, bloodline t-shirt's i was on tours\",\n", - " 'chodz pokażę ci londyn',\n", - " 'pokaże ci gdzie splonął',\n", - " 'gdzie wybuchały bomby',\n", - " 'zobaczysz wszystkie zakazane mordy ziomuś',\n", - " 'sto narodowści tutaj mieszka w jednym domu',\n", - " 'mordują się jak w grach',\n", - " 'robią wjazd na chate komuś',\n", - " 'tutaj gta na żywo oglądam z balkonu',\n", - " 'zamieszki, rozpierdol już jara się tottenham',\n", - " 'zajebali tam gangstera z londyńskiego ghetta',\n", - " 'dzieciaki ze wszystkich gangów stoją z butelkami w rękach',\n", - " '150 na godzinę przeżjdża karetka',\n", - " 'policja przestępca kałmie i przekręca',\n", - " 'zastrzelił go policjant jak płatny morderca',\n", - " 'każdy ponad prawem o tym ta piosenka',\n", - " 'brutalnie zajebali marka krew mają na rekach',\n", - " 'jeden z drugim',\n", - " 'co to było?',\n", - " 'żeby żyli',\n", - " 'no',\n", - " 'mogę spróbować...',\n", - " 'pewnego dnia',\n", - " 'welcome, this is godline',\n", - " 'all our lines are busy',\n", - " \"please wait, we'll help you in a moment\",\n", - " 'hold the line',\n", - " 'trying to connect with god',\n", - " 'trying to connect with god',\n", - " 'please just hold the line',\n", - " 'please just hold the line',\n", - " 'would they believe if i resided on earth',\n", - " 'evacuated the dead out the dirt',\n", - " 'if i healed all of the sick and fed the hungry',\n", - " 'brought the whole world peace?',\n", - " \"maybe some of that'd affect their belief? huh\",\n", - " 'nah, prolly not! cause i did those',\n", - " \"and none of these folks ain't growin'; they on they tiptoes\",\n", - " \"and regression's progression for people who ain't got no wisdom\",\n", - " \"and a father called these babblin' prophets and a couple mc's\",\n", - " \"they ain't believe the father; why they gon' believe me?\",\n", - " \"i'm a mirror of his majesty, showing my glory candidly\",\n", - " \"casually made a casualty; the world couldn't handle me\",\n", - " 'i created the sun, the moon, and the stars',\n", - " \"i'm the star of my own show, i'm the leading role for sure\",\n", - " 'these wizard of oz kings claiming that they rule things',\n", - " \"'till i reappear and treat the planet like my mood ring\",\n", - " 'who bring peace to your soul? man, the prophets of old foretold',\n", - " \"of my resurrection. i'm offering you protection\",\n", - " \"i'm offering you the only hope the world will ever have:\",\n", - " 'emmanuel, son of god, son of man, the lamb',\n", - " 'take two of those',\n", - " 'call me in the morning',\n", - " \"that's your prescription\",\n", - " 'trying to connect with god',\n", - " 'trying to connect with god',\n", - " 'please just hold the line',\n", - " 'please just hold the line',\n", - " 'halo? rejestracja? proszę połączyć mnie z bogiem',\n", - " 'nie mogę tu żyć, tracę głowę',\n", - " 'błagam, bo spadam i spalam się',\n", - " 'zaraz zakończę tą drogę na pogrzebie w grobie',\n", - " 'nie mogę, proszę o połączenie z doktorem',\n", - " 'co może mnie podnieść skuteczniej niż człowiek',\n", - " 'zapłacę, mam kasę, mam kartę, dam złoto',\n", - " 'cokolwiek potrzeba by kupić spokój na zawsze',\n", - " 'nie wiem, mam podać pesel?',\n", - " 'pewnie, 79— jak to nie chcecie? wściec się!',\n", - " 'dzwonie do was codziennie i mówicie że niewyspowiadanych',\n", - " 'wy nie przyjmujecie tylko w piekle',\n", - " 'oni, mają centyliony potępionych',\n", - " 'dają nam miliony możliwości by zwątpić',\n", - " 'poprosić? proszę uwolnić z ciemności mnie taka moja wola',\n", - " 'błagam boga o litości cień!',\n", - " 'nie! przestań mnie kusić diable',\n", - " 'nie mogę żyć tak, nie mogę umrzeć w grzechu nagle',\n", - " 'nie! przestań mnie dręczyć ciągle',\n", - " 'dzwonie i proszę o uzdrowienie doktorze',\n", - " 'hello my name is dr. jesus',\n", - " 'hell no your life is not for demons',\n", - " 'pray for forgivness not for riches',\n", - " 'i heal your soul now go and grow in love',\n", - " 'trying to connect with god',\n", - " 'trying to connect with god',\n", - " 'please just hold the line',\n", - " 'please just hold the line']}}},\n", - " 'pt': {'sentence': {'pop': {'meta': {'train_data': ['vem que elas vão chegar',\n", - " 'as gays de todo lugar',\n", - " 'as passivas do meu país',\n", - " 'ficando tudo feliz',\n", - " 'vai ter bicha enrustida',\n", - " 'no graider em ação',\n", - " 'e umas travas fervida de placa na mão',\n", - " 'eu quero um boy',\n", - " 'oh oh, oh',\n", - " 'bora frescar',\n", - " 'um boy, um boy, um boy',\n", - " 'vai ter babado na cidade',\n", - " 'vai ter bicha de todo mundo',\n", - " 'atrás de um boy do mundo todo',\n", - " 'querendo dar, querendo dar...',\n", - " 'we are, we are',\n", - " 'seven billion strong',\n", - " 'shining like diamonds',\n", - " 'nothing can hide us',\n", - " 'we are, we are',\n", - " 'seven billion stars',\n", - " 'the world...',\n", - " 'the world is ours, the world is ours',\n", - " 'the world is ours, thе world is ours....',\n", - " 'pra batucar, pra batucar',\n", - " 'juntas vamos fazer o atraque acontecеr',\n", - " 'seja em qualquer lugar as colegas grita vrá',\n", - " 'vai ter bicha machuda, bombada e mapô',\n", - " 'bicha urso e as travas tocando o terror',\n", - " 'eu quero um boy',\n", - " 'oh oh, oh',\n", - " 'bora frescar',\n", - " 'um boy, um boy, um boy',\n", - " 'vai ter babado na cidade',\n", - " 'vai ter bicha de todo mundo',\n", - " 'atrás de um boy do mundo todo',\n", - " 'querendo dar, querendo dar...',\n", - " 'we are, we are',\n", - " 'seven billion strong',\n", - " 'shining like diamonds',\n", - " 'nothing can hide us',\n", - " 'we are, we are',\n", - " 'seven billion stars',\n", - " 'the world...',\n", - " 'the world is ours, the world is ours',\n", - " 'the world is ours, the world is ours....',\n", - " 'pra batucar',\n", - " 'eu quero um boy',\n", - " 'oh oh, oh',\n", - " 'bora frescar',\n", - " 'um boy, um boy, um boy',\n", - " 'vai ter babado na cidade',\n", - " 'vai ter bicha de todo mundo',\n", - " 'atrás de um boy do mundo todo',\n", - " 'querendo dar, querendo dar...',\n", - " 'we are, we are',\n", - " 'seven billion strong',\n", - " 'shining like diamonds',\n", - " 'nothing can hide us',\n", - " 'we are, we are',\n", - " 'seven billion stars',\n", - " 'the world...',\n", - " 'the world is ours, the world is ours',\n", - " 'the world is ours, the world is ours....',\n", - " 'pra batucar, pra batucar',\n", - " '(na terra...)',\n", - " 'no meio do centro da terra',\n", - " 'no fundo do fundo do mar',\n", - " 'no fundo, o centro da terra',\n", - " 'no meio, o fundo do mar',\n", - " 'no meio do centro da terra',\n", - " 'no fundo, o meio do mar',\n", - " 'no fundo, o centro da terra',\n", - " 'é o meio do fundo do mar',\n", - " '(mar...)',\n", - " 'no meio do centro da terra',\n", - " 'no fundo do mar...',\n", - " '(no meio do centro da terra)',\n", - " 'um novo dia nasceu',\n", - " 'o tempo passou e o nosso amor só cresceu',\n", - " 'me sinto no céu, mudou meu astral',\n", - " 'parece carnaval',\n", - " 'waiting for you, waiting for you',\n", - " \"vou te esperar, i'll be waiting for you\",\n", - " 'waiting for you, waiting for you',\n", - " \"vou te esperar, i'll be waiting for you\",\n", - " 'a ausência faz o coração crescer forte',\n", - " 'é complicado mas a gente deu sorte',\n", - " 'de se esbarrar e então encontrar',\n", - " 'alguém pra esperar',\n", - " 'waiting for you, waiting for you',\n", - " \"vou te esperar, i'll be waiting for you\",\n", - " 'waiting for you, waiting for you',\n", - " \"vou te esperar, i'll be waiting for you\",\n", - " 'oh oh, yeah, yeah',\n", - " 'oh oh, yeah, yeah',\n", - " 'oh oh, yeah, yeah',\n", - " 'oh oh, yeah, yeah',\n", - " 'não importa pra onde você vá',\n", - " 'posso sentir você me tocar',\n", - " 'waiting for you, waiting for you',\n", - " \"vou te esperar, i'll be waiting for you\",\n", - " 'oh oh, yeah, yeah',\n", - " 'oh oh, yeah, yeah',\n", - " 'oh oh, yeah, yeah',\n", - " 'oh oh, yeah, yeah',\n", - " 'waiting for you, waiting for you',\n", - " \"vou te esperar, i'll be waiting for you\",\n", - " 'waiting for you, waiting for you',\n", - " \"vou te esperar, i'll be waiting for you\",\n", - " 'oh oh, yeah, yeah',\n", - " 'oh oh, yeah, yeah',\n", - " 'oh oh, yeah, yeah',\n", - " 'oh oh, yeah, yeah',\n", - " 'quand lo pet del cul venta',\n", - " 'dond midonz caga e vis',\n", - " 'donc m’es vis qu’eu senta',\n", - " 'una pudor de pis',\n", - " 'd’una orrida sancnenta',\n", - " 'qe tot iorn m’escarnis',\n", - " 'qe mais es de pez manenta',\n", - " 'qe de marabotis',\n", - " 'e quand ias so pis',\n", - " 'plus put d’autra serpenta',\n", - " 'e quaga mais en tres matis',\n", - " 'qu’autra no fai en trenta',\n", - " 'é varina, usa chinela',\n", - " 'tem movimentos de gata',\n", - " 'na canastra , a caravela',\n", - " 'no coração, a fragata',\n", - " 'em vez de corvos no xaile',\n", - " 'gaivotas vêm pousar',\n", - " 'quando o vento a leva ao baile',\n", - " 'baila no baile com o mar',\n", - " 'é de conchas o vestido',\n", - " 'tem algas na cabeleira',\n", - " 'e nas veias o latido',\n", - " 'do motor duma traineira',\n", - " 'vende sonhos e maresia',\n", - " 'tempestades apregoa',\n", - " 'seu nome próprio: maria',\n", - " 'seu apelido: lisboa',\n", - " 'she is a varina, and wears chinela',\n", - " 'she moves like a cat',\n", - " 'in the basket, the caravel',\n", - " 'in her heart, the frigate',\n", - " 'instead of ravens on the shawl',\n", - " 'sea-gulls came to lay down',\n", - " 'when the wind takes her to the ball',\n", - " 'she dances at the ball with the see',\n", - " 'her dress is made of shells',\n", - " 'she has seaweed on her hair',\n", - " 'and in her veins, (has) the bark',\n", - " 'of the engine of a traineira',\n", - " 'she sells dreams and the smell of the sea',\n", - " 'she announces storms',\n", - " 'her first name: maria',\n", - " 'her surname: lisboa',\n", - " 'primeiro foi um sorriso',\n", - " 'depois quase sem aviso',\n", - " 'é que o beijo aconteceu',\n", - " 'nesse infinito segundo',\n", - " 'fora de mim e do mundo',\n", - " 'minha voz emudeceu',\n", - " 'ficaram gestos suspensos',\n", - " 'e os desejos imensos',\n", - " 'como poemas calados',\n", - " 'teceram a melodia',\n", - " 'enquanto a lua vestia',\n", - " 'nossos corpos desnudados',\n", - " 'duas estrelas no meu peito',\n", - " 'no teu meu anjo perfeito',\n", - " 'a voz do búzio escondido',\n", - " 'os lençóis ondas de mar',\n", - " 'onde fomos naufragar',\n", - " 'como dois barcos perdidos',\n", - " 'first, one smile',\n", - " 'then, almost of a sudden',\n", - " 'our kiss succeeds',\n", - " 'in this endless second',\n", - " 'tossed out of my body and out of this world',\n", - " 'my voice silents',\n", - " 'only repressed gestures remain',\n", - " 'and our immeasurable desires',\n", - " 'give vent to the melody',\n", - " 'like silent poems',\n", - " 'as the moonlight dresses',\n", - " 'our bodies in nude',\n", - " 'two stars lay on my chest',\n", - " 'and on yours, my angel of perfection',\n", - " 'mumbles the voice from a hidden wirstle',\n", - " 'the sheets are the waves of the sea',\n", - " 'where we sink together',\n", - " 'like two ships adrift',\n", - " 'i got to be honest with you',\n", - " \"it wasn't to be this way\",\n", - " \"and everything we've been through now\",\n", - " 'jah knows that i prayed',\n", - " 'and now i realy know a special love is hard to find',\n", - " 'and everything in you is just a little divine',\n", - " 'and now i know my life was cool by your side',\n", - " 'and you are everything i searched all of this time',\n", - " \"'cause\",\n", - " \"i don't wanna go home without you, baby\",\n", - " \"i don't wanna go home without you\",\n", - " \"i don't wanna go home without you, baby\",\n", - " \"i don't wanna go home without you\",\n", - " 'eu tenho que te dizer',\n", - " 'que eu penso muito em você',\n", - " 'e não foi bem assim que eu quis não',\n", - " 'e jah sabe que eu tentei',\n", - " 'e agora eu to longe e era bom demais',\n", - " 'eu canto pra fugir do que a distancia me trás',\n", - " 'e agora eu sei da falta que você me faz',\n", - " 'e o que é menor que isso, vê se deixa pra trás',\n", - " \"'cause\",\n", - " \"i don't wanna go home without you, baby\",\n", - " \"i don't wanna go home without you\",\n", - " \"i don't wanna go home without you, baby\",\n", - " \"i don't wanna go home without you\",\n", - " 'dizem que sempre que choveu parou',\n", - " 'pero un día que se me nubló',\n", - " 'waiting for the sun to shine',\n", - " 'waiting for the sun to shine',\n", - " 'o tempo é grão de areia pelo ar',\n", - " 'no va perder la vida por quedar',\n", - " 'waiting for the sun to shine',\n", - " 'waiting for the sun to shine',\n", - " 'waiting for the sun to shine',\n", - " 'lonely, tan solo, sozinho',\n", - " 'tan solo, lonely , sozinho',\n", - " 'sunshine',\n", - " 'esperando o sol brilhar (waiting for the sun to shine)',\n", - " 'esperando el sol brillar (waiting for the sun to shine)',\n", - " 'waiting for the sun to shine (waiting for the sun to shine)',\n", - " 'o som da rua vem nos revelar',\n", - " 'que nadie canta solo por cantar',\n", - " 'waiting for the sun to shine',\n", - " 'waiting for the sun to shine',\n", - " 'pessoas precisam de espaço e paz',\n", - " 'la noche nunca pareció fulgaz',\n", - " 'waiting for the sun to shine',\n", - " 'waiting for the sun to shine',\n", - " 'waiting for the sun to shine',\n", - " 'lonely, tan solo, sozinho',\n", - " 'tan solo, lonely , sozinho',\n", - " 'sunshine',\n", - " 'esperando o sol brilhar (waiting for the sun to shine)',\n", - " 'esperando el sol brillar (waiting for the sun to shine)',\n", - " 'waiting for the sun to shine (waiting for the sun to shine)',\n", - " 'i do all the things i do to you',\n", - " \"you complain and it's dejavú\",\n", - " 'what, what did i, did i do?',\n", - " 'is it me, or is it just you?',\n", - " 'eu só quero te agradar',\n", - " 'você reclama pra variar',\n", - " 'você fica em suas lamúrias',\n", - " 'eu, eu dispenso a fúria',\n", - " 'então saia do sofá e se toca',\n", - " 'porque nós somos a música',\n", - " 'i do all the things i do to you',\n", - " \"you complain and it's dejavú\",\n", - " 'what, what did i, did i do?',\n", - " 'is it me, or is it just you?',\n", - " 'so get off the couch and, please',\n", - " 'cut off the crap',\n", - " \"'cause we have music, and we're not deaf\",\n", - " 'então saia do sofá e se toca',\n", - " 'porque nós somos a música',\n", - " 'agora sim, damos a volta a isto',\n", - " 'agora sim, há pernas para andar',\n", - " 'agora sim, eu sinto o optimismo',\n", - " 'vamos em frente, ninguém nos vai parar',\n", - " 'agora não, que é hora do almoço',\n", - " 'agora não, que é hora do jantar',\n", - " 'agora não, que eu acho que não posso',\n", - " 'amanhã vou trabalhar',\n", - " 'agora sim, temos a força toda',\n", - " 'agora sim, há fé neste querer',\n", - " 'agora sim, só vejo gente boa',\n", - " 'vamos em frente e havemos de vencer',\n", - " 'agora não, que me dói a barriga',\n", - " 'agora não, dizem que vai chover',\n", - " 'agora não, que joga o benfica',\n", - " 'e eu tenho mais que fazer',\n", - " 'agora sim, cantamos com vontade',\n", - " 'agora sim, eu sinto a união',\n", - " 'agora sim, já ouço a liberdade',\n", - " 'vamos em frente e é esta a direcção',\n", - " 'agora não, que falta um impresso',\n", - " 'agora não, que o meu pai não quer',\n", - " 'agora não, que há engarrafamentos',\n", - " 'vão sem mim, que eu vou lá ter',\n", - " 'vão sem mim, que eu vou lá ter...',\n", - " 'english translation:',\n", - " \"let's go, let's take a shot at this\",\n", - " \"let's go, our legs are for walking\",\n", - " \"let's go, i'm feeling optimistic\",\n", - " \"let's go ahead, no one can stop us\",\n", - " \"not now, it's time for lunch\",\n", - " \"not now, it's time for dinner\",\n", - " \"not now, i don't think i can\",\n", - " \"tomorrow i'm going to work\",\n", - " \"let's go, we've got all the strength\",\n", - " \"let's go, we can do it if we believe\",\n", - " \"let's go, i only see good folks here\",\n", - " \"let's go ahead and we'll succeed\",\n", - " \"not now, i've got a tummy-ache\",\n", - " \"not now, they say it's going to rain\",\n", - " 'not now, benfica is playing',\n", - " \"and i've got some things to do\",\n", - " \"let's go, we sing with desire\",\n", - " \"let's go, i feel the unity\",\n", - " \"let's go, i hear the liberty\",\n", - " \"let's go ahead, in this direction\",\n", - " \"not now, we don't have the right form\",\n", - " \"not now, my dad won't let me\",\n", - " \"not now, there's a traffic jam\",\n", - " \"go without me, i'll be along\",\n", - " 'existem praias tão lindas',\n", - " 'cheias de luz',\n", - " 'nenhuma tem os encantos',\n", - " 'que tu possuis',\n", - " 'tuas areias',\n", - " 'teu céu tão lindo',\n", - " 'tua sereia',\n", - " 'sempre sorrindo',\n", - " 'copacabana, princesinha do mar',\n", - " 'pelas manhãs tu ésa vida a cantar',\n", - " 'e a tardinha o sol poente',\n", - " 'deixa sempre uma saudade na gente',\n", - " 'copacabana, o mar eterno cantor',\n", - " 'ao te beijar ficou perdido de amor',\n", - " 'e hoje vive a murmurar',\n", - " 'só a ti copacabana eu hei de amar',\n", - " '***************************************',\n", - " 'full so pretty beaches of light exist none have the enchantments that you always possess your sands your so pretty sky your sereia smiling copacabana, princesinha of the sea per the mornings you ésa life to sing and tardinha the setting sun always leave a homesickness in people copacabana, the perpetual sea singer to kissing you was lost of love and today it lives to murmur you copacabana i i only have to love',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'pois a a rosa é uma flor',\n", - " 'a rosa é uma cor',\n", - " 'a rosa é um nome de mulher',\n", - " 'rosa é a flor da simpatia',\n", - " 'é a flor escolhida no dia',\n", - " 'do primeiro encontro do nosso dia',\n", - " 'com a vida querida',\n", - " 'com a vida mais garrida',\n", - " 'take it easy charlie',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'depois que o primeiro homem',\n", - " 'maravilhosamente pisou na lua',\n", - " 'eu me senti com direitos, com princípios',\n", - " 'e dignidade de me libertar',\n", - " 'por isso, sem preconceito eu canto',\n", - " 'eu canto a fantasia',\n", - " 'eu canto o amor',\n", - " 'eu canto a alegria',\n", - " 'eu canto a fé',\n", - " 'eu canto a paz',\n", - " 'eu canto a sugestão',\n", - " 'eu canto na madrugada',\n", - " 'take it easy my brother charlie',\n", - " 'pois eu canto até a minha amada',\n", - " 'esperada, desejada, adorada',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'take it easy my brother charlie',\n", - " '(charlie)',\n", - " 'take it easy meu irmão de cor',\n", - " '(take it easy my boy)',\n", - " 'take it easy my brother charlie',\n", - " '(take it easy my friend)',\n", - " 'take it easy meu irmão de cor',\n", - " '(olha, olha como o céu é azul)',\n", - " 'take it easy my brother charlie',\n", - " '(olha como o verde é o mar)',\n", - " 'take it easy meu irmão de cor',\n", - " '(olha que sol bonito, charles)',\n", - " 'take it easy my brother charlie',\n", - " '(take it easy my boy)',\n", - " 'take it easy meu irmão de cor',\n", - " '(take it easy my friend)',\n", - " 'take it easy my brother charlie',\n", - " '(tenha calma, meu amigo)',\n", - " 'take it easy meu irmão de cor',\n", - " '(charlie)',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'take it easy my brother charlie',\n", - " 'take it easy meu irmão de cor',\n", - " 'olhos verdes e boca cheia de vida',\n", - " '100 imagens refeitas sobre sua camisa',\n", - " 'não contei minha história, eu perdi a memória',\n", - " 'de tudo o que passei',\n", - " 'fuja logo comigo e confie no vento que se foi',\n", - " \"and you keep coming home cuz i'm running over my time\",\n", - " \"and you see that you're not far away but you clearly\",\n", - " \"don't make up your mind\",\n", - " 'so keep on moving on',\n", - " 'keep on driving me home',\n", - " 'and keep on moving on',\n", - " 'keep on driving me home',\n", - " \"and i complain that you're not here\",\n", - " \"but you can't hide from moments of fear\",\n", - " \"and you're not there so i pretend\",\n", - " \"you're an image from my head\",\n", - " 'and you say',\n", - " 'and you say',\n", - " 'recolhendo os pedaços do vaso da vida',\n", - " 'não precisa gritar, meu desejo é te amar sem ter fim',\n", - " 'fotogramas de instantes',\n", - " 'que foram importantes no mundo de nós dois',\n", - " 'fuja logo sozinho e confie no vento que se foi',\n", - " \"and you keep coming home cuz i'm running over my time\",\n", - " \"and you see that you're not far away but you clearly\",\n", - " \"don't make up your mind\",\n", - " 'so keep on moving on',\n", - " 'keep on driving me home',\n", - " 'and keep on moving on',\n", - " 'keep on driving me home',\n", - " \"and i complain that you're not here\",\n", - " \"but you can't hide from moments of fear\",\n", - " \"and you're not there so i pretend\",\n", - " \"you're an image from my head\",\n", - " 'and you say',\n", - " 'and you say',\n", - " 'clearly give it up, give it up',\n", - " 'give it up to the sky',\n", - " 'but you clearly give it up, give it up',\n", - " 'give it up to the sky',\n", - " 'clearly give it up, give it up',\n", - " 'give it up to the sky',\n", - " 'but you clearly give it so...',\n", - " 'so keep on moving on',\n", - " 'keep on driving me home',\n", - " 'and keep on moving on',\n", - " 'keep on driving me home',\n", - " \"so keep on moving on (so i complain that you're not here)\",\n", - " \"keep on driving me home (but you can't hide from moments of fear)\",\n", - " \"so keep on moving on (and you're not there so i pretend)\",\n", - " \"keep on driving me home (you're an image from my head)\",\n", - " \"and i complain that you're not here\",\n", - " \"but you can't hide from moments of fear\",\n", - " \"and you're not there so i pretend\",\n", - " \"you're an image from my head\",\n", - " 'and you say',\n", - " 'é você',\n", - " 'é você',\n", - " 'é você',\n", - " 'é você',\n", - " 'ah se esse amor só fosse meu',\n", - " 'ah se esse amor só fosse seu',\n", - " 'seria fácil a gente escapar',\n", - " 'if this love was just mine',\n", - " 'if this love was just yours',\n", - " 'it could could be easy to stop',\n", - " \"(but it's not)\",\n", - " 'mas a verdade é linda e pura',\n", - " 'a gente se ama sem frescura',\n", - " 'and my body says only yes!',\n", - " '(yes)',\n", - " 'the way you walk',\n", - " 'the way you talk',\n", - " 'the way you dance',\n", - " 'you move my heart so wild',\n", - " 'the way you touch',\n", - " 'the way you look at me, my love',\n", - " 'com você esse amor é bom demais',\n", - " 'ah se esse amor só fosse meu',\n", - " 'ah se esse amor só fosse seu',\n", - " 'seria fácil ele fácil ele passar',\n", - " '(mas não é)',\n", - " 'if this love was just mine',\n", - " 'if this love was just yours',\n", - " 'it could could be easy to stop',\n", - " \"(but i can't)\",\n", - " 'é mesmo o amor tem seu segredo',\n", - " 'de apagar as mágoas, o velho enredo',\n", - " 'de renovar pra acertar',\n", - " 'the way you think',\n", - " 'the way you act',\n", - " 'i understand you very well',\n", - " 'the way you say my love',\n", - " 'fascinates me',\n", - " 'this love is blessed love',\n", - " 'este amor é nosso amor',\n", - " 'abençoado pelo senhor',\n", - " 'this is our love',\n", - " 'beautiful',\n", - " 'the way you walk',\n", - " 'the way you talk',\n", - " 'you move my heart so well',\n", - " 'esse amor não pode parar',\n", - " \"(we can't stop)\",\n", - " 'este amor é nosso amor',\n", - " 'abençoado pelo senhor',\n", - " 'this is our love',\n", - " 'beautiful',\n", - " 'então',\n", - " 'a verdade é linda e pura',\n", - " 'a gente se ama sem frescura',\n", - " 'natural mental conection',\n", - " 'onde vai dar',\n", - " '(where will this go)',\n", - " 'onde vai dar',\n", - " '(where this will go)',\n", - " 'i say i never gonna give my love to nobody but you babe',\n", - " '(but you babe)',\n", - " \"and if i'm gonna give my love to nobody but you babe\",\n", - " '(but you babe)',\n", - " 'so love me forever, i said love me forever',\n", - " 'baby love me not just for pleasure',\n", - " 'love me always and forever',\n", - " \"cause i love you, it couldn't be better\",\n", - " \"and i'm giving my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"and i'm giving my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"and don't you ever give your love to nobody but me babe\",\n", - " '(but me babe)',\n", - " \"don't you ever give your love to nobody but me babe\",\n", - " '(but me babe)',\n", - " 'all day and all night',\n", - " 'i said all day and all night',\n", - " 'our love needs protection',\n", - " 'our love needs direction',\n", - " \"cause i love you, it couldn't be better\",\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " 'i say i never gonna give my love to nobody but you babe',\n", - " '(but you babe)',\n", - " \"and if i'm gonna give my love to nobody but you babe\",\n", - " '(but you babe)',\n", - " 'all day and all night',\n", - " 'i said all day and all night',\n", - " 'our love needs protection',\n", - " 'our love needs direction',\n", - " \"cause i love you, it couldn't be better\",\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " 'aqui nos teclados: prado',\n", - " 'nos scratches: dj marco',\n", - " 'guitarra e vocais: zé nigro',\n", - " 'contra-baixo: lucas martins',\n", - " 'bateria e vocais: bruno buarque',\n", - " 'na guitarra e vocais: dustang gallas',\n", - " 'gustavo lenza no pa',\n", - " 'nico ferreira monitor',\n", - " 'muitíssimo obrigado a todos',\n", - " 'telão, nosso roadie',\n", - " 'a todos que fizeram a coisa acontecer',\n", - " 'e nós estar aqui no palco agora',\n", - " 'xandinho na produção',\n", - " 'mas acima de tudo muitíssimo obrigado a vocês que compareceram',\n", - " 'valeu galera',\n", - " 'lindíssimo carnaval vos espera, nos espera',\n", - " 'vamo nessa com pouquinho de juízo',\n", - " 'mas não muito',\n", - " 'i say i never gonna give my love to nobody but you babe',\n", - " '(but you babe)',\n", - " \"and if i'm gonna give my love to nobody but you babe\",\n", - " '(but you babe)',\n", - " 'so love me forever, i said love me forever',\n", - " 'oh baby love me not just for pleasure',\n", - " 'baby love me always, forever',\n", - " \"cause i love you, it couldn't be better\",\n", - " \"and i'm giving my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"and i'm giving my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"and i'm giving my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"and i'm giving my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"and don't you ever give your love to nobody but me babe\",\n", - " '(but me babe)',\n", - " \"don't you ever give your love to nobody but me babe\",\n", - " '(but me babe)',\n", - " 'i say i never gonna give my love to nobody but you babe',\n", - " '(but you babe)',\n", - " \"and if i'm gonna give my love to nobody but you babe\",\n", - " '(but you babe)',\n", - " 'all day and all night',\n", - " 'i said all day and all night',\n", - " 'our love needs protection',\n", - " 'our love needs direction',\n", - " \"cause i love you, it couldn't be better\",\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " 'valeu, muito obrigado gente',\n", - " 'uma boa noite pra vocês',\n", - " 'saúde',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " \"i'm sending my love to you baby\",\n", - " 'you got my love, you got my love',\n", - " 'valeu, brigado',\n", - " 'até o anoitecer chegar',\n", - " 'e nos envolver',\n", - " 'passando do azul pro azul escuro',\n", - " 'até o rosa iluminar você',\n", - " 'aqui distante eu vou chorar',\n", - " 'por nós dois',\n", - " 'hummm, cada beijo',\n", - " 'cada beijo bom',\n", - " 'hummm, que saudades',\n", - " 'de te beijar',\n", - " 'hummm, cada beijo',\n", - " 'cada beijo bom',\n", - " 'hummm, cada beijo com sons',\n", - " 'agóra não tem mais azul nenhum',\n", - " 'sózinho fico com a lembrança sem côr',\n", - " 'hummm, cada beijo',\n", - " 'com um gosto bom',\n", - " 'hummm, cada beijo',\n", - " 'tem um tom',\n", - " 'hummm, cada beijo',\n", - " 'cada beijo bom',\n", - " 'hummm, cada beijo com som',\n", - " 'hummm, cada beijo',\n", - " 'cada beijo bom',\n", - " 'hummm, que saudades',\n", - " 'de te beijar',\n", - " 'hummm, cada beijo',\n", - " 'cada beijo bom',\n", - " 'hummm, cada beijo com som',\n", - " 'translation:',\n", - " 'until dusk approaches',\n", - " 'and involves us',\n", - " 'passing from blue to dark blue',\n", - " 'until the pink illuminates you',\n", - " 'here in the distance i will cry',\n", - " 'for both of us',\n", - " 'hmmm, each kiss',\n", - " 'each good kiss',\n", - " 'hmmm, how i miss',\n", - " 'kissing you',\n", - " 'hmmm, each kiss',\n", - " 'each good kiss',\n", - " 'hmmm, each kiss with sounds',\n", - " 'now there not any blue left',\n", - " 'alone i am with a colorless memory',\n", - " 'hmmm, each kiss',\n", - " 'with a good taste',\n", - " 'hmmm, each kiss',\n", - " 'has a key',\n", - " 'hmmm, each kiss',\n", - " 'each good kiss',\n", - " 'hmmm, each kiss with sound',\n", - " 'hmmm, each kiss',\n", - " 'each good kiss',\n", - " 'hmmm, how i miss',\n", - " 'kissing you',\n", - " 'hmmm, each kiss',\n", - " 'each good kiss',\n", - " 'hmmm, each kiss with sound',\n", - " 'eu sou, i am',\n", - " 'eu sou, i am',\n", - " 'eu sou, i am',\n", - " 'eu sou, i am',\n", - " 'i just desire what is not',\n", - " 'what was not, what is unfeasible',\n", - " \"i don't desire what was once\",\n", - " 'what was already, what is plausible',\n", - " 'i just desire what is real',\n", - " 'what is wrought, what is incredible',\n", - " \"i don't desire what is right\",\n", - " 'what is rule, what is suitable',\n", - " 'everybody needs a kiss',\n", - " 'everybody needs a kiss',\n", - " 'everybody, kiss somebody',\n", - " 'todo mundo precisa de beijo',\n", - " 'eu sou, i am',\n", - " 'todo mundo precisa de beijo',\n", - " 'eu sou, i am',\n", - " 'todo mundo precisa de beijo',\n", - " 'eu sou, i am',\n", - " 'todo mundo precisa de beijo',\n", - " 'eu sou, i am',\n", - " 'só quero o que não',\n", - " 'o que nunca, o inviável',\n", - " 'não quero o que já',\n", - " 'o que foi, o plausível',\n", - " 'só quero o que ainda',\n", - " 'o que atiça, o incrível',\n", - " 'não quero o que sim',\n", - " 'o que sempre, o cabível',\n", - " 'everybody needs a kiss',\n", - " 'everybody, kiss somebody',\n", - " 'everybody needs a kiss',\n", - " 'everybody, kiss somebody',\n", - " 'everybody needs a kiss',\n", - " 'everybody, kiss somebody',\n", - " 'everybody needs a kiss',\n", - " 'everybody, kiss somebody',\n", - " 'todo mundo precisa de beijo',\n", - " 'eu sou, i am',\n", - " 'todo mundo precisa de beijo',\n", - " 'eu sou, i am',\n", - " 'todo mundo precisa de beijo',\n", - " 'eu sou, i am',\n", - " 'todo mundo precisa de beijo',\n", - " 'eu sou, i am',\n", - " 'everybody needs a kiss',\n", - " 'everybody needs a kiss',\n", - " 'everybody, kiss somebody',\n", - " 'a insensatez',\n", - " 'que você fez',\n", - " 'coração mais sem cuidado',\n", - " 'fez chorar de dor',\n", - " 'o seu amor um amor',\n", - " 'tão delicado',\n", - " 'ah porque você',\n", - " 'foi fraco a**im',\n", - " 'assim tão desalmado',\n", - " 'ah, meu coração',\n", - " 'quem nunca amou',\n", - " 'não merece ser amado',\n", - " 'vai meu coração',\n", - " 'ouve a razão',\n", - " 'usa só sinceridade',\n", - " 'quem semeia vento',\n", - " 'diz a razão',\n", - " 'colhe sempre tempestade',\n", - " 'vai meu coração',\n", - " 'pede perdão',\n", - " 'perdão apaixonado',\n", - " 'vai porque quem não',\n", - " 'pede perdão',\n", - " 'não é nunca perdoado',\n", - " 'how insensitive',\n", - " 'musik: antonio carlos jobim',\n", - " 'text: norman gimbel',\n", - " 'how insensitive, i must have seemed',\n", - " 'when she told me that she loved me',\n", - " 'how unmoved and cold, i must have seemed',\n", - " 'when she told me so sincerely',\n", - " 'why she must have asked?',\n", - " 'did i just turn and stare in icy silence?',\n", - " 'what was i to say? what can you say',\n", - " 'when a love affair is over?',\n", - " 'how insensitive, he must have seemed',\n", - " 'when she told me that she loved him',\n", - " 'how unmoved and cold, he must have seemed',\n", - " 'when she told him so sincerely',\n", - " 'why she must have asked?',\n", - " 'did he just turn and stare in icy silence?',\n", - " 'what was she to say? what can he say',\n", - " 'when a love affair is over?',\n", - " \"now she's gone away\",\n", - " \"and i'm alone with a memory of her last look\",\n", - " 'vague and drawn and sad, i see it still',\n", - " 'all her heartbreak in that last look',\n", - " 'how she must have asked',\n", - " 'could i just turn and stare in icy silence?',\n", - " 'what was i to do? what can one do',\n", - " 'when a love affair is over?',\n", - " \"i've arrived in the city where i'm gonna sing\",\n", - " \"if i'm gonna sing, i must take a walk\",\n", - " \"if i take a walk, i'm watching some people\",\n", - " \"if i'm watching some people\",\n", - " 'i think about youhuhu, yeah, yeah, yeah...',\n", - " \"there's no one like youhuhu, yeah...\",\n", - " 'my grandma gave me this little guitar',\n", - " 'this little guitar has been quiet for a while',\n", - " \"if it's quiet for a while, it needs some new songs\",\n", - " 'if it needs some new songs',\n", - " 'i think about youhuhu, oh yeah',\n", - " 'all i write about is youhuhu, yeah...',\n", - " 'ai, ai, ai, moreno',\n", - " 'desse jeito você me ganha',\n", - " 'esse teu chamego',\n", - " 'o meu dengo e a tua manha',\n", - " 'ai, ai ai, moreno',\n", - " 'tua pele não há quem negue',\n", - " 'cor de quente, coração',\n", - " 'toda estrela e sol te segue',\n", - " \"i've arrived in the city where i'm gonna sing\",\n", - " \"if i'm gonna sing, i must take a walk\",\n", - " \"if i take a walk, i'm watching some people\",\n", - " \"if i'm watching some people\",\n", - " 'i think about youhuhu, yeah, yeah, yeah...',\n", - " \"there's no one like youhuhu, yeah...\",\n", - " 'my grandma gave me this little guitar',\n", - " 'this little guitar has been quiet for a while',\n", - " \"if it's quiet a while, it needs some new songs\",\n", - " 'if it needs some new songs',\n", - " 'i think about youhuhu, yeah, yeah, yeah...',\n", - " 'all i write about is youhuhu, yeah...',\n", - " 'só vou se for com ele',\n", - " 'eu tenho medo de avião',\n", - " 'se eu fico longe dele',\n", - " 'eu perco o norte e o chão',\n", - " 'só quero saber dele',\n", - " 'e nada mais importa',\n", - " 'eu vou ficar com ele',\n", - " 'que ele pega a minha mão',\n", - " 'e nunca mais me solta',\n", - " 'the more you know, the less you know',\n", - " 'the less you know, the more you know',\n", - " 'you know, babies know more than us',\n", - " 'they know more than us, and as we grow',\n", - " 'the less you know, the more you know',\n", - " 'the more you know, the less you know',\n", - " 'you know, babies know more than us',\n", - " 'they know more than us, and as we grow',\n", - " 'na verdade, eu penso que ele vai voltar',\n", - " 'que ele vai, ele vai, ele vai voltar',\n", - " 'the more you know, the less you know',\n", - " 'less you know, the more you know',\n", - " 'you know, babies know more than us',\n", - " 'they know more than us, and as we grow',\n", - " 'the less you know, the more you know',\n", - " 'the more you know, the less you know',\n", - " 'you know, babies know more than us',\n", - " 'they know more than us, and as we grow',\n", - " 'francamente, eu acho que ele não vai voltar',\n", - " 'que ele não, ele não, ele não vai voltar',\n", - " 'the more you know, less you know',\n", - " 'the less you know, the more you know',\n", - " 'you know, babies know more than us',\n", - " 'they know more than us, and as we grow',\n", - " 'the less you know, the more you know',\n", - " 'the more you know, the less you know',\n", - " 'you know, babies know more than us',\n", - " 'they know more than us, and as we grow',\n", - " 'na verdade, eu penso que ele não vai voltar',\n", - " 'que ele não, que ele não, ele não vai voltar',\n", - " 'na verdade, eu penso que ele vai voltar',\n", - " 'que ele vai, que ele vai, ele vai voltar',\n", - " 'que ele vai, vai, vai, vai, vai',\n", - " 'vai, vai, vai, vai, vai, vai...',\n", - " 'bring back the love, bring back the love',\n", - " 'bring back the love',\n", - " 'bring back the love, bring back the love',\n", - " 'bring back the love',\n", - " 'bring back the love, bring back the love',\n", - " 'bring back the love',\n", - " 'bring back the love, bring back the love',\n", - " 'bring back the love',\n", - " \"chegou a hora d'agente conversar sobre o nosso amor\",\n", - " 'voc foi embora e eu fiquei aqui pensando no voc falou',\n", - " 'sou uma mulher nova, mas tambm no sou',\n", - " 'sou mulher agora, mas tambm no sou',\n", - " 'bring back the love, bring back the love',\n", - " 'bring back the love',\n", - " 'bring back the love, bring back the love',\n", - " 'bring back the love',\n", - " 'no tem pessoa nesse mundo que eu ame tanto como voc',\n", - " 'no tem pessoa nesse mundo melhor para se descrever',\n", - " 'cinco anos no so poucos meu amor',\n", - " 'cinco anos no so, so, so',\n", - " 'bring back the love, bring back the love',\n", - " 'bring back the love',\n", - " 'bring back the love, bring back the love',\n", - " 'bring back the love',\n", - " 'bring back the love, bring back the love',\n", - " 'bring back the love',\n", - " 'bring back the love, bring back the love',\n", - " 'bring back the love',\n", - " 'bring back the love',\n", - " 'bring back the love',\n", - " 'bring back the love',\n", - " 'rio, rio, rio, yeah!',\n", - " 'rio, rio, rio',\n", - " 'let me take you to rio, rio',\n", - " \"fly'o the ocean like an eagle, ealge\",\n", - " 'and we can chill in my gazebo, gazebo',\n", - " 'oh, oh, oh, oh, na, na, na',\n", - " 'let me take you to rio, rio',\n", - " \"fly'o the ocean like an eagle, eagle\",\n", - " 'and we can chill in my gazebo',\n", - " 'oh, oh, oh, oh, na, na, na',\n", - " 'veja como é rico o nosso riso',\n", - " 'o sol é feliz e sabe rir também',\n", - " 'águas verdes rindo, mares vindo',\n", - " 'tudo é samba, samba e vem sambar meu bem!',\n", - " 'para ter amor e um pouquinho de rio',\n", - " 'onde a paixão é o riso de alguém',\n", - " 'vou te dar calor e um carinho de ritmo',\n", - " 'todo meu amor com a natureza vem, vem',\n", - " 'let me take you to rio, rio',\n", - " \"fly'o the ocean like an eagle, ealge\",\n", - " 'and we can chill in my gazebo, gazebo',\n", - " 'oh, oh, oh, oh, na, na, na',\n", - " 'let me take you to rio, rio',\n", - " \"fly'o the ocean like an eagle, eagle\",\n", - " 'and we can chill in my gazebo',\n", - " 'oh, oh, oh, oh, na, na, na',\n", - " 'há tanta beleza à se perder de vista',\n", - " 'cidade, floresta, meu cantinho, quintal',\n", - " \"faz quarenta graus p'ra esquentar a vida\",\n", - " \"faz uma batida p'ra ficar legal\",\n", - " 'laje, a minha nave no alto do morro',\n", - " 'todo dia é dia de beijar o sal',\n", - " 'sambas na batida, projetos e rimas',\n", - " 'não tem fantasia, tudo é carnaval',\n", - " 'let me take you to rio, rio',\n", - " \"fly'o the ocean like an eagle, ealge\",\n", - " 'and we can chill in my gazebo, gazebo',\n", - " 'oh, oh, oh, oh, na, na, na',\n", - " 'let me take you to rio, rio',\n", - " \"fly'o the ocean like an eagle, eagle\",\n", - " 'and we can chill in my gazebo',\n", - " 'oh, oh, oh, oh, na, na, na',\n", - " \"since that day you're all i think about\",\n", - " 'about, think about',\n", - " 'i think about, i think about',\n", - " 'zona norte, zona oeste, zona leste, zona sul',\n", - " 'esse é o barulho novo do motor da r1',\n", - " 'vrum, acelera, vai',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " 'e a fuga eu vou dar, na garupa ela vai gritar',\n", - " 'descabelada vai ficar e não para de apertar',\n", - " 'zona norte, zona oeste, zona leste, zona sul',\n", - " 'esse é o barulho novo do motor da r1',\n", - " 'vrum, acelera, vai',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " \"since that day you're all i think about\",\n", - " 'about, think about',\n", - " 'i think about, i think about',\n", - " 'zona norte, zona oeste, zona leste, zona sul',\n", - " 'esse é o barulho novo do motor da r1',\n", - " 'vrum, acelera, vai',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " 'e a fuga eu vou dar, na garupa ela vai gritar',\n", - " 'descabelada vai ficar e não para de apertar',\n", - " 'zona norte, zona oeste, zona leste, zona sul',\n", - " 'esse é o barulho novo do motor da r1',\n", - " 'vrum, acelera, vai',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " 'dododo, dododo, dododo, dododo',\n", - " 'dododo, dododo, dodododo',\n", - " \"since that day you're all i think about\",\n", - " 'about, think about',\n", - " 'i think about, i think about',\n", - " 'if jesus christ',\n", - " 'had been a black man',\n", - " 'there would be indifference',\n", - " 'the color of his purple skin',\n", - " 'if jesus christ',\n", - " 'had been a black man',\n", - " 'had been a black man',\n", - " 'um homem de cor',\n", - " 'a mesma mensagem de fé e de amor',\n", - " ...]},\n", - " 'data': ['hoje cedo, na rua do ouvidor',\n", - " 'quantos brancos horríveis eu vi',\n", - " 'eu quero um homem de cor',\n", - " 'um deus negro do congo ou daqui',\n", - " 'que se integre no meu sangue europeu',\n", - " 'black is beautiful, black is beautiful',\n", - " 'black beauty so peaceful',\n", - " 'i want to a black i want to a beautiful',\n", - " 'hoje a noite amante negro eu vou',\n", - " 'vou enfeitar o meu corpo no seu',\n", - " 'eu quero este homem de cor',\n", - " 'um deus negro do congo ou daqui',\n", - " 'que se integre no meu sangue europeu',\n", - " 'black is beautiful, black is beautiful',\n", - " 'black beauty so peaceful',\n", - " 'i want to a black i want to a beautiful',\n", - " 'beira-mar, o que caboclo',\n", - " 'beira-mar, e sentinela de oxum',\n", - " 'e remador de yemanja',\n", - " 'e sentinela de oxum',\n", - " 'e remador de yemanja',\n", - " 'sr. beira mar e ogum',\n", - " 'que bem das oudos de mar',\n", - " \"you don't know me\",\n", - " \"bet you'll never get to know me\",\n", - " \"you don't know me at all\",\n", - " 'feel so lonely',\n", - " 'the world is spinning round slowly',\n", - " \"there's nothing you can show me\",\n", - " 'from behind the wall',\n", - " 'show me from behind the wall',\n", - " 'show me from behind the wall',\n", - " 'show me from behind the wall',\n", - " 'show me',\n", - " \"you don't know me\",\n", - " \"bet you'll never get to know me\",\n", - " \"you don't know me at all\",\n", - " 'feel so lonely',\n", - " 'the world is spinning round slowly',\n", - " \"there's nothing you can show me\",\n", - " 'from behind the wall',\n", - " 'show me from behind the wall',\n", - " 'show me from behind the wall',\n", - " 'show me from behind the wall',\n", - " 'show me',\n", - " 'nasci lá na bahia de mucama com feitor',\n", - " 'o meu pai dormia em cama',\n", - " 'minha mãe no pisador',\n", - " 'laia ladaia sabatana ave maria',\n", - " \"you don't know me\",\n", - " \"bet you'll never get to know me\",\n", - " '(eu, você, nós dois',\n", - " 'já temos um passado, meu amor)',\n", - " \"you don't know me at all\",\n", - " '(um violão guardado, aquela flor)',\n", - " 'feel so lonely',\n", - " 'the world is spinning round slowly',\n", - " '(e outras mumunhas mais)',\n", - " \"there's nothing you can show me\",\n", - " 'from behind the wall',\n", - " 'show me from behind the wall',\n", - " 'come on and show me from behind the wall',\n", - " 'show me from behind the wall',\n", - " \"why don't you show me from behind the wall?\",\n", - " 'show me from behind the wall',\n", - " 'come on and show me from behind the wall',\n", - " 'show me from behind the wall',\n", - " 'come on and...',\n", - " 'laia ladaia sabatana ave maria',\n", - " 'laia ladaia sabatana ave maria',\n", - " 'eu agradeço ao povo brasileiro',\n", - " 'norte, centro, sul inteiro',\n", - " 'onde reinou o baião',\n", - " 'eu agradeço ao povo brasileiro',\n", - " 'norte, centro, sul inteiro',\n", - " 'onde reinou o baião',\n", - " 'alegria, como uma luz, nova vida',\n", - " 'alegria, ouço uma voz a cantar',\n", - " 'alegria, lágrima que brilha tanta emoção',\n", - " 'magia, uma loucura de amor',\n", - " 'alegria, como uma brisa de felicidade',\n", - " \"alegria, c'mon and sing together\",\n", - " 'alegria, raise your voices and sing',\n", - " 'alegria, set you spirit free and sing along with me tonight',\n", - " \"c'mon and sing it together\",\n", - " 'alegria, lift your voices and sing it with me',\n", - " 'lift your voices and sing it with me',\n", - " 'alegria, como la luz de la vida',\n", - " 'alegria, como un payaso que grita',\n", - " 'alegria, del estupendo grito, de la tristeza loca',\n", - " 'serena, como la rabia de amar',\n", - " 'alegria, como un asalto de felicidad',\n", - " 'olha pro mim tu me viste',\n", - " 'look at me, did you see me',\n", - " 'estava pensando em ti ness ultima noche',\n", - " 'i was thinking of you last night',\n", - " 'ai minha mãe perdona-me',\n", - " 'oh my mother forgive me',\n", - " 'huh hombre isso me escita',\n", - " 'oh man this excites me',\n", - " 'tem quem tem',\n", - " 'não tem quem tem',\n", - " 'não tem',\n", - " 'de vez em quando tem',\n", - " 'de vez em quando vem',\n", - " 'de vez em quando tem',\n", - " 'de vez em quando tem você (bis)',\n", - " 'se tem não sei se tem',\n", - " 'e quem tem não vê',\n", - " 'nem pensa em saber',\n", - " 'de vez em quando vem',\n", - " 'de vez em quando tem',\n", - " 'de vez em quando tem você (bis)',\n", - " 'se tem não sei se tem',\n", - " 'e quem tem não vê',\n", - " 'nem pensa em saber',\n", - " 'quem tem não tem',\n", - " 'e o que se tem?',\n", - " 'se não tem mais alguém',\n", - " 'de vez em quando tem',\n", - " 'de vez em quando vem',\n", - " 'de vez em quando tem você',\n", - " 'tem quem tem',\n", - " 'não tem quem tem',\n", - " 'não tem, não tem',\n", - " 'não tem, quem tem?',\n", - " 'translation:',\n", - " 'someone',\n", - " 'there are those who have',\n", - " 'there are those who have not',\n", - " 'have not',\n", - " 'sometimes have',\n", - " 'sometimes comes',\n", - " 'sometimes there is',\n", - " 'sometimes there is you (bis)',\n", - " \"if there are, i don't know there is\",\n", - " 'and who has does not see',\n", - " \"doesn't even care to know\",\n", - " 'sometimes comes',\n", - " 'sometimes there is',\n", - " 'sometimes there is you (bis)',\n", - " \"if there are, i don't know there is\",\n", - " 'and who has does not see',\n", - " \"doesn't even care to know\",\n", - " 'those who have, have not',\n", - " 'and what we have?',\n", - " 'if there is not someone',\n", - " 'sometimes comes',\n", - " 'sometimes there is',\n", - " 'sometimes there is you (bis)',\n", - " 'there are those who have',\n", - " 'there are those who have not',\n", - " 'have not, have not',\n", - " 'have not, have not?',\n", - " 'olhar',\n", - " 'de rapina',\n", - " 'carregado',\n", - " 'determinado a não deixar',\n", - " 'que a minha alquimia, tão vazia',\n", - " 'seja domada pelo teu amor',\n", - " \"dá p'ra ver que é fundamental\",\n", - " 'os refrões, os tacões e as flores do mal',\n", - " 'esta flecha é intencional',\n", - " 'os refrões, os tacões e as flores do mal',\n", - " 'these are the songs',\n", - " 'i wanna sing',\n", - " 'these are the songs',\n", - " 'i wanna play',\n", - " 'i will sing it every little time',\n", - " 'and i will sing it every day',\n", - " '(now listen here)',\n", - " 'these are the songs',\n", - " 'that i wanna sing and play',\n", - " 'esta é a canção que eu vou ouvir',\n", - " 'esta é a canção que eu vou cantar',\n", - " 'fala de você, meu bem',\n", - " 'e do nosso amor também',\n", - " 'sei que você vai gostar',\n", - " 'cadê o pop?',\n", - " 'qual é o pop?',\n", - " 'que faz todo mundo dançar?',\n", - " 'quem é o pop?',\n", - " 'como é o pop?',\n", - " 'que a rádio não parou de tocar',\n", - " 'ah, ah, ah, ah...',\n", - " 'o pop da mídia',\n", - " 'o pop da máfia',\n", - " 'pop pra criança',\n", - " 'pop pra gandaia',\n", - " 'pop de gringo',\n", - " 'pop de brega',\n", - " 'e se o pop é pop mesmo',\n", - " 'o pop te pega',\n", - " 'ah, ah, ah, ah...',\n", - " \"(i can't get no satisfaction...)\",\n", - " 'já sem o rei do disco',\n", - " 'sampler do nat king cole',\n", - " 'o prince da funk music',\n", - " \"a lenda do rock'n'roll\",\n", - " 'pin up heavy metal',\n", - " 'hip hop do bronx',\n", - " 'na mtv da barbie',\n", - " 'o cover dos rolling stones',\n", - " 'ah, ah, ah, ah...',\n", - " \"(i can't get no satisfaction)\",\n", - " 'no futuro',\n", - " 'todo mundo vai ter',\n", - " 'quinze minutos',\n", - " 'pra brilhar',\n", - " 'pois no mundo',\n", - " 'quem veio do pop',\n", - " 'um dia sempre',\n", - " 'ao pop voltará',\n", - " 'ah, ah, ah, ah ...',\n", - " \"(hit the road, jack, and don't come back no more...)\",\n", - " 'ah, ah, ah, ah ...',\n", - " \"(...and she's bying a stairway to heaven...)\",\n", - " 'contando estrêlas',\n", - " 'de um céu distante',\n", - " 'me faz lembrar o meu lugar',\n", - " 'meu coração aperta',\n", - " 'sem nem me avisar',\n", - " 'vendo um brilho lá no meio',\n", - " 'que não pode mais existir',\n", - " 'memorizo num instante',\n", - " 'o meu próprio céu',\n", - " 'são tantos céus',\n", - " 'tão diferentes',\n", - " 'que nunca sei',\n", - " 'o meu lugar',\n", - " 'me encontro sempre olhando',\n", - " 'perdida no ar',\n", - " 'relembrando meus momentos',\n", - " 'que me fazem só contemplar',\n", - " 'naquele tempo eu tinha tempo',\n", - " 'de me recostar',\n", - " 'sob o céu no meu coração',\n", - " 'eu vou contar até te achar',\n", - " 'por um instante eu soube',\n", - " 'qual é o seu lugar',\n", - " 'vendo um brilho lá no meio',\n", - " 'que não pode mais resistir',\n", - " 'memorizo num instante',\n", - " 'o meu próprio céu',\n", - " 'translation:',\n", - " 'counting stars',\n", - " 'of a distant sky',\n", - " 'i am reminded of my place',\n", - " 'my heart tightens',\n", - " 'without giving me notice',\n", - " 'i see a twinkle in the middle',\n", - " \"that can't exist any more\",\n", - " 'i memorize an instant',\n", - " 'my private sky',\n", - " 'there are so many skies',\n", - " 'all so different',\n", - " 'that i never know',\n", - " 'my place',\n", - " 'i find myself always looking',\n", - " 'lost in the air',\n", - " 'remembering my moments',\n", - " 'that make me contemplate',\n", - " 'then i had time',\n", - " 'to lay back',\n", - " 'under the sky in my heart',\n", - " 'i will count until i find you',\n", - " 'for an instant i knew',\n", - " 'where is your place',\n", - " 'i see a twinkle in the middle',\n", - " \"that can't resist no longer\",\n", - " 'i memorize an instant',\n", - " 'my own sky',\n", - " 'the summer is magic, is magic oh oh oh',\n", - " 'the summer is magic',\n", - " 'te sinto na pele, se entregue oh oh oh',\n", - " 'meu corpo te pede',\n", - " 'nas noites de verão',\n", - " 'o teu perfume é sedução',\n", - " 'transas no sol, transas no mar',\n", - " 'teu corpo é do vento',\n", - " 'a praia é teu país',\n", - " '40 graus pra ser feliz',\n", - " 'nos teus braços me atirei',\n", - " 'essa é a nossa lei',\n", - " 'the summer is magic, is magic oh oh oh',\n", - " 'the summer is magic',\n", - " 'te sinto na pele, se entregue oh oh oh',\n", - " 'meu corpo te pede',\n", - " 'nas noites de verão',\n", - " 'o teu perfume é sedução',\n", - " 'transas no sol, transas no mar',\n", - " 'teu corpo é do vento',\n", - " 'a praia é teu país',\n", - " '40 graus pra ser feliz',\n", - " 'nos teus braços me atirei',\n", - " 'essa é a nossa lei',\n", - " 'the summer is magic, is magic oh oh oh',\n", - " 'the summer is magic',\n", - " 'te sinto na pele, se entregue oh oh oh',\n", - " 'meu corpo te pede',\n", - " 'the summer is magic, is magic oh oh oh',\n", - " 'the summer is magic',\n", - " 'te sinto na pele, se entregue oh oh oh',\n", - " 'meu corpo te pede',\n", - " 'oh-oh-oh, oh oh oh',\n", - " 'oh-oh-oh, oh oh oh',\n", - " 'the summer is magic, is magic oh oh oh',\n", - " 'the summer is magic',\n", - " 'te sinto na pele, se entregue oh oh oh',\n", - " 'meu corpo te pede',\n", - " 'the summer is magic, is magic oh oh oh',\n", - " 'the summer is magic',\n", - " 'te sinto na pele, se entregue oh oh oh',\n", - " 'meu corpo te pede',\n", - " 'so danco samba',\n", - " 'so danco samba, vai, vai, vai, vai, vai',\n", - " 'so danco samba',\n", - " 'so danco samba, vai',\n", - " 'so danco samba',\n", - " 'so danco samba, vai, vai, vai, vai, vai',\n", - " 'so danco samba',\n", - " 'so danco samba, vai',\n", - " 'ja dancei o twist ate demais',\n", - " 'mas nao sei',\n", - " 'me cansei',\n", - " 'do calipso ao cha cha cha',\n", - " 'so danco samba',\n", - " 'so danco samba, vai, vai, vai, vai, vai',\n", - " 'so danco samba',\n", - " 'so danco samba, vai',\n", - " '(varias vezes)',\n", - " 'so danco samba',\n", - " 'so danco samba, vai',\n", - " 'so danco samba',\n", - " 'so danco samba, vai',\n", - " 'mas eu levei uma pernada',\n", - " 'de um morto-vivo',\n", - " 'embaixo dum arvoredo',\n", - " 'em cima do limo',\n", - " 'eu tava sem assunto',\n", - " 'e eles foram embora',\n", - " 'quando me veio um assunto',\n", - " 'encontrei a caipora',\n", - " 'calculadora na mão',\n", - " 'contando as sugestas',\n", - " 'que aplicava todo dia',\n", - " 'essa era a sua função',\n", - " 'lá, lá, lá',\n", - " 'a joyfull noise',\n", - " 'came into my window',\n", - " 'something like a new brazilian style',\n", - " 'bringing this explosion',\n", - " 'around me head',\n", - " 'it was a great moment',\n", - " 'fat beats, dry and strong',\n", - " 'my room is so high now',\n", - " 'like a nightmare',\n", - " 'lá, lá, lá',\n", - " 'e são colagens de imagens vivas',\n", - " 'estou dançando enquanto sonhando',\n", - " 'cheguei numa esquina toda colorida',\n", - " 'estava tudo tão claro',\n", - " 'aceso, tão vivo',\n", - " 'cheirando a tinta fresca',\n", - " 'era coisa nova',\n", - " 'só que no baque arrodeio',\n", - " 'disfarço, reparto, completo, arrumo',\n", - " 'desmancho, recorto e sampleio, sampleio...sampleio',\n", - " 'lá, lá, lá',\n", - " 'somebody makes me favorite beats',\n", - " \"last night what we're trying to do\",\n", - " 'was build a new sound',\n", - " 'and now we are hungry for listen this',\n", - " 'we are not responsable for damage speakers',\n", - " 'another level, other flavor',\n", - " 'do the androids dreams with eletric tropics?',\n", - " 'baptize the beat',\n", - " 'in a brazilian sambadelic excursion',\n", - " 'can you hear me? (4x)',\n", - " 'when the beat is side be side of the rhyme',\n", - " 'from the underground of the mud',\n", - " 'to play your mind, to talk inside',\n", - " 'then i show you what you want to find',\n", - " 'when the beat is side be side of the rhyme',\n", - " 'from the underground of the mud',\n", - " 'to play your mind, to talk inside',\n", - " 'then i show you what you want to find',\n", - " \"it's a frantic situation (4x)\",\n", - " \"it's a mad, mad maracatu (2x)\",\n", - " 'son los sebosos postizos',\n", - " 'que controlan la radio en el mundo',\n", - " 'lo-fi dream (3x)',\n", - " 'would you give yourself to me',\n", - " 'like it was the first time',\n", - " 'go crazy with my touch',\n", - " 'feel the heat of love',\n", - " 'stay right here with me',\n", - " \"i'm a firebird of passion\",\n", - " \"that's singing in your ear\",\n", - " 'i want you to be my baby',\n", - " 'let ourselves go crazy',\n", - " 'let go of our fears',\n", - " \"a soul that's traveled so far\",\n", - " 'an independent heart',\n", - " 'is now falling for you',\n", - " 'i want to be your secret',\n", - " 'take your peace and keep it',\n", - " \"be more than you've ever needed\",\n", - " \"no don't tell me no, don't deny yourself\",\n", - " 'a new chance at love, a new passion',\n", - " 'tell me',\n", - " 'so far from the earth',\n", - " \"i'll be your feet\",\n", - " 'straight to your heart on the wings of a dream',\n", - " 'feel what you feel, fall into me',\n", - " 'ride with my body, eternally',\n", - " 'vai se entregar pra mim',\n", - " 'como a primeira vez',\n", - " 'vai delirar de amor',\n", - " 'sentir o meu calor, vai me pertencer',\n", - " 'sou pássaro de fogo',\n", - " 'que canto ao teu ouvido',\n", - " 'vou ganhar este jogo, te amando feito um louco',\n", - " 'quero teu amor bandido',\n", - " 'minha alma viajante, coração independente',\n", - " 'por você corre perigo',\n", - " 'tô afim dos teus segredos, de tirar o teu sossego',\n", - " 'ser bem mais que um amigo',\n", - " 'não diga que não, não negue a você',\n", - " 'um novo amor, uma nova paixão',\n", - " 'diz pra mim',\n", - " 'tão longe do chão, serei os teus pés',\n", - " 'nas asas de um sonho, rumo ao teu coração',\n", - " 'permita sentir, se entrega pra mim',\n", - " 'cavalga em meu corpo a minha eterna paixão',\n", - " 'sou pássaro de fogo, firebird of passion',\n", - " 'a firebird of passion',\n", - " 'ai',\n", - " 'ai ai ai',\n", - " 'ai ai ai ai ai ai ai',\n", - " 'em cima, embaixo, puxa e vai',\n", - " 'ai ai ai',\n", - " 'ai ai ai ai ai ai ai',\n", - " 'em cima, embaixo, puxa e vaaaaaaaaaaaaaiii',\n", - " 'if you want to be metal',\n", - " 'the laws you got to obey',\n", - " 'the laws of gods of metal',\n", - " \"and that's what i say\",\n", - " 'woooowwwwwwww',\n", - " 'if you want to be metal',\n", - " 'no avacalhation',\n", - " 'use black forever',\n", - " 'go to the show of massacration',\n", - " 'no! boiolation',\n", - " 'frescuration',\n", - " 'viadation',\n", - " 'die! reggae idiota!',\n", - " 'mambo escroto',\n", - " 'forró babacaaaaaaaaaaaaaa!',\n", - " 'metal is the law',\n", - " 'the law is the metal',\n", - " 'metal the law is',\n", - " 'metal',\n", - " 'woooooooooooowwwwwwwwww',\n", - " 'now that you are metal',\n", - " 'metal you are',\n", - " 'never, never, never, never, never',\n", - " 'use bermudaaaaa',\n", - " 'no! boiolation',\n", - " 'frescuration',\n", - " 'viadation',\n", - " 'die! música eletrônica de bicha!',\n", - " 'pop de viados',\n", - " 'dance, no!!!',\n", - " 'metal is the law',\n", - " 'the law is the metal',\n", - " 'metal the law is',\n", - " 'metal',\n", - " 'ôôôôô ôôôô ôôôô ôôôô',\n", - " 'oooooohhhhh',\n", - " 'ai',\n", - " 'ai ai ai',\n", - " 'ai ai ai ai ai ai ai',\n", - " 'em cima, embaixo, puxa e vai',\n", - " 'ai ai ai',\n", - " 'ai ai ai ai ai ai ai',\n", - " 'em cima, embaixo, puxa e vaaaaaaaaaaaaaaiii',\n", - " 'ai',\n", - " 'ai ai ai',\n", - " 'ai ai ai ai ai ai ai',\n", - " 'ai',\n", - " 'ai ai ai',\n", - " 'ai ai ai ai ai ai ai',\n", - " 'metal',\n", - " 'cor di rosa',\n", - " 'na mare di tardi',\n", - " 'e ku nha kim bem, (cor di rosa)',\n", - " 'e ku nha kim kre bai',\n", - " 'cor di rosa',\n", - " 'e sabe ki trazenu',\n", - " 'ele e ki ta lembano',\n", - " 'ma e pa nos morada',\n", - " 'cor di rosa',\n", - " 'si du ka ba sedo',\n", - " 'es ta labantano alebe',\n", - " 'es ta pono stera',\n", - " 'wai cor de rosa',\n", - " 'nos distino e djarfogu',\n", - " 'du ka ta trocal',\n", - " 'ku nada des mundo',\n", - " 'fuska fuska',\n", - " 'xa note fitcha',\n", - " 'pa mundo ka odjano',\n", - " 'ku nha lima nobo',\n", - " 'kretcheu na peto',\n", - " 'ta djongo na madorna',\n", - " 'ai oh modrugado',\n", - " 'ka bu xan terral manche',\n", - " 'ai u ai u ai',\n", - " 'nos distino e djarfogo',\n", - " 'du ka ta trocal',\n", - " 'ku nada des mundo',\n", - " 'wai o dimingo',\n", - " 'dimingo nos distino e djarfogu',\n", - " 'du ka ta trocal',\n", - " 'ku nada des mundu',\n", - " 'oi mino',\n", - " 'mino de mama',\n", - " 'fran pa to kim odjabo',\n", - " 'curagi ta dam',\n", - " 'ta parcem ma mundu bira',\n", - " 'so di me ku bo, mino',\n", - " 'ku nos lima nobu',\n", - " 'wai oh mino',\n", - " 'mino nos distino e djargofu',\n", - " 'du ka ta trocal',\n", - " 'ku nada des mundu',\n", - " 'wai oh mama',\n", - " 'mama nos distinu e djarfogu, mama',\n", - " 'du ka ta trocal',\n", - " 'ku nada des mundu',\n", - " 'wai oh djarfogu',\n", - " 'djarfogu bo e nos distinu',\n", - " 'du ka ta trocabu',\n", - " 'ku nada des mundu',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'primera vez',\n", - " \"qu'm ba na rebera grande\",\n", - " \"'m passa sabe\",\n", - " 'fui dente dum reservado',\n", - " 'primera vez',\n", - " \"qu'm ba na rebera grande\",\n", - " \"'m passa sabe\",\n", - " 'fui dente dum reservado',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'nos era tres',\n", - " \"que t'ma um estamperode\",\n", - " 'quande no sai',\n", - " 'no ta que palpite descomandode',\n", - " 'nos era tres',\n", - " \"que t'ma um estamperode\",\n", - " 'quande no sai',\n", - " 'no ta que palpite descomandode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'primera vez',\n", - " \"qu'm ba na rebera grande\",\n", - " \"'m passa sabe\",\n", - " 'fui dente dum reservado',\n", - " 'primera vez',\n", - " \"qu'm ba na rebera grande\",\n", - " \"'m passa sabe\",\n", - " 'fui dente dum reservado',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'nos era tres',\n", - " \"que t'ma um estamperode\",\n", - " 'quande no sai',\n", - " 'no ta que palpite descomandode',\n", - " 'nos era tres',\n", - " \"que t'ma um estamperode\",\n", - " 'quande no sai',\n", - " 'no ta que palpite descomandode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'primera vez',\n", - " \"qu'm ba na rebera grande\",\n", - " \"'m passa sabe\",\n", - " 'fui dente dum reservado',\n", - " 'primera vez',\n", - " \"qu'm ba na rebera grande\",\n", - " \"'m passa sabe\",\n", - " 'fui dente dum reservado',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'nos era tres',\n", - " \"que t'ma um estamperode\",\n", - " 'quande no sai',\n", - " 'no ta que palpite descomandode',\n", - " 'nos era tres',\n", - " \"que t'ma um estamperode\",\n", - " 'quande no sai',\n", - " 'no ta que palpite descomandode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " 'oh, nho antone escaderode',\n", - " 'escaderode, escaderode',\n", - " '(dorival caymmi)',\n", - " 'nada como ser rosa na vida',\n", - " 'rosa mesmo ou mesmo rosa mulher',\n", - " 'todos querem muito bem a rosa',\n", - " 'quero eu todo mundo também quer',\n", - " 'um amigo meu disse que em samba',\n", - " 'canta-se melhor flor e mulher',\n", - " 'eu que tenho rosas como tema',\n", - " 'canto no compasso que quiser',\n", - " 'roses, roses, roses',\n", - " 'i thank of the roses that bloom in the spring',\n", - " 'love is a wonderful thing',\n", - " 'the rest of my life he will bring me',\n", - " 'roses and roses and roses of love',\n", - " 'roses, roses, roses',\n", - " \"i thank you for saying what we couldn't say\",\n", - " 'oh what a wonderful way',\n", - " 'to tell me i love you each day',\n", - " 'with roses and roses and roses of love',\n", - " '(dorival caymmi)',\n", - " 'rosas a me confundir',\n", - " 'rosas a te confudir',\n", - " 'são muitas são tantas são todas tão rosas',\n", - " 'rosas de abril',\n", - " 'roses, roses, roses',\n", - " \"i thank you for saying what we couldn't say\",\n", - " 'oh what a wonderful way',\n", - " 'to tell me i love you each day',\n", - " 'with roses and roses and roses of love',\n", - " '(e rosas e rosas de abril)',\n", - " 'roses and roses and roses de abril',\n", - " '(e rosas e rosas de abril)',\n", - " 'roses and roses and roses de abril',\n", - " '(e rosas e rosas de abril)',\n", - " 'ando tanto tempo a perguntar',\n", - " 'porque esperar tanto assim de alguém',\n", - " 'percorrendo espaços no mesmo lugar',\n", - " 'não sei a quanto tempo estou a te buscar',\n", - " 'num segundo eu vou',\n", - " 'sabendo e percebendo o seu sabor',\n", - " 'sem ter medo estou',\n", - " 'correndo contra o vento sem nunhum rancôr',\n", - " 'ando tanto tempo a perguntar',\n", - " 'porque esperar tanto assim de alguém',\n", - " 'sem saber',\n", - " 'sem qualquer medo de vêr',\n", - " 'translation:',\n", - " 'so long',\n", - " \"i've been wondering for so long\",\n", - " 'why to expect so much from someone',\n", - " 'running through spaces in the same place',\n", - " \"i've been searching for you a long long time\",\n", - " 'i am gone in a second',\n", - " 'knowing and learning your taste',\n", - " 'fearless i am',\n", - " 'running against the wind, holding no grudges',\n", - " \"i've been wondering for so long\",\n", - " 'why to expect so much from someone',\n", - " 'without knowing',\n", - " 'without any fear to see',\n", - " 'tristeza é uma coisa sem graça',\n", - " 'mas sempre fez parte da minha canção',\n", - " 'tristeza se uniu a beleza',\n", - " 'que sempre existiu no meu coração',\n", - " 'beleza é a tristeza da flor',\n", - " 'que nasceu sem perfume, mas tem seu valor',\n", - " 'beleza é a tristeza da chuva',\n", - " 'num dia de sol, a chorar lá do céu',\n", - " 'beleza é a camélia',\n", - " 'que vai enfeitar um caminho feliz',\n", - " 'beleza é o descanso do sol',\n", - " 'quando surge um luar lá no céu',\n", - " 'translation:',\n", - " 'sadness is a graceless thing',\n", - " 'but it was always part of my song',\n", - " 'sadness unifies with beauty',\n", - " 'that has always existed in my heart',\n", - " 'beauty is the sadness of the flower',\n", - " 'born without scent, but its value has',\n", - " 'beauty is the sadness of the rain',\n", - " 'on a sunny day, the cry from sky',\n", - " 'beauty is the camellia',\n", - " 'that will adorn a happy path',\n", - " 'beauty is the rest of the sun',\n", - " 'when there is a moon in the sky',\n", - " \"it's time for fun\",\n", - " 'get your flag all around the world',\n", - " 'coming out from everywhere',\n", - " 'everybody together, anywhere',\n", - " \"'cause we all belong to peace and love\",\n", - " \"i'm calling you, come on! you're not alone\",\n", - " 'play for freedom, vary the season',\n", - " 'every nation, one same reason',\n", - " 'go, gol! shake, jump and sing',\n", - " 'go, gol! muevete, salta y grita',\n", - " 'go, gol! gira, pula e canta',\n", - " 'dig for freedom',\n", - " 'all in one rhythm',\n", - " 'go, gol! shake, jump and sing',\n", - " 'go, gol! muevete, salta y grita',\n", - " 'go, gol! gira, pula e canta',\n", - " 'dig for freedom',\n", - " 'all in one rhythm',\n", - " 'sinta esse clima de festa',\n", - " 'em cada canto do brasil nossa torcida te espera',\n", - " 'o nosso canto é assim',\n", - " 'de norte ao sul do país',\n", - " 'bandeiras coloridas, todo mundo cabe aqui',\n", - " 'vem curtir esse calor',\n", - " 'futebol de uma só cor, todos na mesma sintonia',\n", - " 'mão pra cima, emoção que contagia',\n", - " 'vem sentir essa energia',\n", - " 'go, gol! shake, jump and sing',\n", - " 'go, gol! muevete, salta y grita',\n", - " 'go, gol! gira, pula e canta',\n", - " 'dig for freedom',\n", - " 'all in one rhythm',\n", - " 'go, gol! shake, jump and sing',\n", - " 'go, gol! muevete, salta y grita',\n", - " 'go, gol! gira, pula e canta',\n", - " 'dig for freedom',\n", - " 'all in one rhythm',\n", - " 'copa mundial de fútbol',\n", - " 'sinta essa energia',\n", - " 'all in one rhythm',\n", - " 'dig for freedom',\n", - " 'copa mundial de fútbol',\n", - " 'sinta essa energia',\n", - " 'all in one rhythm',\n", - " 'dig for freedom',\n", - " 'all in one rhythm',\n", - " 'vem, traz no peito paz e amor',\n", - " 'de qualquer jeito, de onde for',\n", - " 'liberdade no coração',\n", - " 'todo mundo uma só paixão',\n", - " 'go, gol! shake, jump and sing',\n", - " 'go, gol! muevete, salta y grita',\n", - " 'go, gol! gira, pula e canta',\n", - " 'dig for freedom',\n", - " 'all in one rhythm',\n", - " 'go, gol! shake, jump and sing',\n", - " 'go, gol! muevete, salta y grita',\n", - " 'go, gol! gira, pula e canta',\n", - " 'dig for freedom',\n", - " 'all in one rhythm',\n", - " 'these are the songs',\n", - " 'i want to sing',\n", - " 'these are the songs',\n", - " 'i want to play',\n", - " 'i will sing it every day',\n", - " 'these are the songs',\n", - " 'i want to sing and play',\n", - " 'these are the songs',\n", - " 'i want to sing',\n", - " 'these are the songs',\n", - " 'i want to play',\n", - " 'i will sing it every day',\n", - " 'these are the songs',\n", - " 'i want to sing and play',\n", - " 'esta é a canção que eu vou ouvir',\n", - " 'esta é a canção que eu vou cantar',\n", - " 'fala de você, meu bem',\n", - " 'e do nosso amor também',\n", - " 'sei que você vai gostar',\n", - " 'waltzing, waltzing with you',\n", - " 'in the garden of blue',\n", - " 'a waltz, one more, with you',\n", - " 'in the garden of truth',\n", - " 'in the garden of you',\n", - " 'in the garden of you',\n", - " 'in the garden',\n", - " 'and all that you do',\n", - " 'waltzing with you',\n", - " 'in the garden of blue',\n", - " 'a waltz, one more, with you',\n", - " 'in the garden of truth',\n", - " 'in the garden of you',\n", - " 'in the garden of you',\n", - " 'in the garden and all...',\n", - " 'and all that you do',\n", - " 'and all that you do',\n", - " 'and all you',\n", - " 'oh and all you do',\n", - " 'and all you',\n", - " 'and all you do',\n", - " '\"eu vou invadir sua mente',\n", - " 'que nessa altura está confusa, fraca e inconsciente.\"',\n", - " '\"era só o que faltava!\"',\n", - " \"what's your position? your definition? no matter your questions say yes or no!\",\n", - " \"we forbid your omission, a new war will come to leave the breakdown our weapons need your vote condemnation for who's don't support us in our hypocrit truth absolutely supreme you should accept our conditions\",\n", - " 'os eua por várias décadas vêem esmagando e explorando o terceiro mundo deliberadamente, e estão envolvidos em uma série de atrocidades',\n", - " 'atentados políticos, embargos econômicos, intervencionismo, uniteralismo em questões globais, ataques terroristas internacionais, portando-se radicalmente como grupos fundamentalistas',\n", - " 'i just want your permission to bring my revenge',\n", - " \"so give me your badge or no... let's create our links and enemies\",\n", - " 'o fundamentalismo americano é a grande fonte responsável pelo terrorismo na terra',\n", - " \"one more great imperial game we'll play. trust in my truism! fuck the rejections\",\n", - " \"hidding intentions about world instructions you can't be neutral, less or more, let's fight together against the axies of evil\",\n", - " 'history made by greed, hypocrite democracy, imperealist hegemony',\n", - " 'today i lost a part of me',\n", - " 'a deep old beautiful part of me',\n", - " 'the wonder woman of our family tree',\n", - " 'is leaving us tonight and i can not sleep',\n", - " 'today i lost a part of me',\n", - " 'a deep old beautiful part of me',\n", - " 'jael (arrivederci, goodbye, au revoir)',\n", - " 'today i lost a part of me',\n", - " 'a deep old beautiful part of me',\n", - " 'the wonder woman of our family tree',\n", - " 'is leaving us tonight and i can not sleep',\n", - " 'jael (arrivederci, goodbye, au revoir)',\n", - " 'padroeira da aventura, padroeira da alegria, da elegância',\n", - " 'dona do serviço que é bem feito',\n", - " 'maravilhosa matriarca, majestade maneira',\n", - " 'força da natureza',\n", - " 'que me passou seu dom de vida, de viver, de rir da vida, da desgraça da vida',\n", - " 'poderosa, possante, pulsante, pulsão de vida, dona da fantasia',\n", - " 'today i lost a part of me',\n", - " 'a deep old beautiful part of me',\n", - " 'today i lost a part of me, jael',\n", - " 'jael, padroeira da aventura, da alegria, dona do serviço que é bem feito, jael',\n", - " 'reconheci... a madonna ali parada no jardim',\n", - " 'não resisti... fui perguntar o que ela achava de mim',\n", - " 'eu não sei falar inglês',\n", - " 'ela não entende uma palavra em português',\n", - " 'i saw you saying that you say that you saw',\n", - " 'i saw you saying that you say that you saw (i feel good)',\n", - " 'i feel good because you put your butt on me',\n", - " 'i feel good because you put your butt on me',\n", - " 'perguntei para o meu pai',\n", - " 'o que ela me disse (aah)',\n", - " 'ela disse meu rapaz',\n", - " 'good because you put your butt on...',\n", - " 'the hula hula song make me feel so strong',\n", - " \"the hula hula hey goodbye i'm going away\",\n", - " 'the hula hula song make me feel so strong',\n", - " \"the hula hula hey goodbye i'm going away (a há)\",\n", - " 'because you put your butt on me (a há)',\n", - " 'you know you put your butt on me (a há)',\n", - " 'you know you put your butt on me',\n", - " 'shalalala yeah yeah yeah yeah yeah']},\n", - " 'rap': {'meta': {'train_data': [\"(hip-hop) that's what i got\",\n", - " '(samba) sempre tirando onda',\n", - " \"2na, marcelo, we rock and don't stop\",\n", - " 'e eu continuo queimando tudo até a última ponta',\n", - " 'essa é pros amigos que formam comigo (sempre)',\n", - " 'que por causa do hip hop só aumentam o ciclo',\n", - " 'so andaraí até la, tô na estrada',\n", - " 'sei do meu caminho, mantenho a antena ligada',\n", - " 'using rhythm and medical tons we give for addicts and jos',\n", - " 'phenomenal cross bones from drama felling alone',\n", - " 'high in chronic we zone from hydroponic grown',\n", - " 'from here to brazil, speeling the real, kelling you clowns',\n", - " 'pilantragem (no!), trairagem (nah!)',\n", - " 'mantenho o corpo fechado, seu olho gordo é em vão',\n", - " 'um b.boy sobrevivente, sempre adiante',\n", - " 'um microfone com um som de mais de mil alto-falantes',\n", - " 'we born celo (eu?), we spark the dot yellow',\n", - " 'while these coachers poachers approach us, smart fellows',\n", - " 'we transcendents with pens we bend letters',\n", - " 'to defend that within them, that makes us pretty better forever',\n", - " 'we make thousands of peoples rush to stage in flesh pass the barricade',\n", - " 'open some american sound clash forever play (sempre que toca)',\n", - " 'in this place we face greed and hunger',\n", - " 'while this music transcend your race, creed and color',\n", - " 'sem essa de auto afirmação, mas tem que tá na parada',\n", - " 'd2 e charli 2na, qualidade controlada',\n", - " 'vivendo um sonho, lógico o meu',\n", - " 'a caminho não é de tijolinho amarelo, mas é meu',\n", - " 'this shit we speak is liquid heat',\n", - " 'cause if you straight for the essence then you rep between',\n", - " 'spill this oil and millions boil',\n", - " 'from this two hottest cats from the brazillian soil',\n", - " 'que meu tambor toca assim, não importa a língua pra mim',\n", - " 'é que vagabundo é foda, deixa eu ganhar o meu dim',\n", - " 'é pra bombar no seu estéreo, vou botando de leve',\n", - " 'ri não, fala sério, é que vem da selva essa febre',\n", - " \"(hip-hop)(samba) that's what we got\",\n", - " 'old school, velha guarda, brazilian time, saravá',\n", - " \"toca-disco e tan-tan, that's what we got\",\n", - " 'b.boy, passista,roupa larga ou na beca',\n", - " \"versado ou rimado, that's what we got\",\n", - " 'meu samba é assim, tá ligado diz pra ele, charli',\n", - " \"2na, marcelo, we rock and don't stop\",\n", - " 'eu continuo queimando tudo até a última ponta!',\n", - " 'eu tô na onda',\n", - " 'isso é onda de outra bala',\n", - " 'for real, pica nessa bitch, for real (for real)',\n", - " 'for real, pica nessa bitch, for real (for real)',\n", - " 'for real, pica nessa bitch, for real (for real)',\n", - " 'for real, pica nessa bitch, for real (for real)',\n", - " \"pulo no bloco, 'cê quer tirar foto\",\n", - " 'eu saio vazado que eu tô de ski (skrtt, skrtt, skrtt)',\n", - " 'ela me liga, me quer todo dia',\n", - " 'eu sigo ocupado, fumando haxixe',\n", - " 'tô com meu carro, com a 9 do lado',\n", - " 'então fica de canto e não toca em mim',\n", - " 'só rich nigga, \\'cê fala: \"que fita',\n", - " 'esses cara são zica, nunca vi aqui\" (huh, huh, huh)',\n", - " 'que fita, tô soltando hit, que fita, yeah (pow, pow, pow)',\n", - " 'hey, mina, que esse trap nós dá aula e ensina, yeah',\n", - " 'só salve, levo essas mina pro lounge',\n", - " 'tô chave, ela quer dormir com a peita da tommy',\n", - " \"meu cachê tomou azulzin'\",\n", - " 'tipo seleção, ronaldo e robinho',\n", - " 'eu já pedi vários combo de jack',\n", - " 'e derrubei uma fanta no lean',\n", - " 'for real, levo novo drip, no deal',\n", - " 'for real, pica nessa bitch for real',\n", - " 'ei lotto, beat do lotto, eu mato (woah)',\n", - " 'for real, beat do lotto, for real',\n", - " 'for real, pica nessa bitch, for real (for real)',\n", - " 'for real, pica nessa bitch, for real',\n", - " 'woo, woo, check, check',\n", - " 'wow, woo, yeah, yeah',\n", - " 'woo, woo, check, check',\n", - " 'wow, woo, yeah, yeah',\n", - " 'woo, woo, check, check',\n", - " 'wow, woo, yeah, yeah',\n", - " 'woo, woo, check, check',\n", - " 'wow, woo, yeah, yeah',\n", - " 'for real!',\n", - " 'eu tô na onda',\n", - " 'skrtt, skrtt, skrtt',\n", - " \"kalaf: yo! we made it, we're here, buraka som sistema\",\n", - " \"lil'john: o andro até aparece na filmagem\",\n", - " 'andro: pela primeira vez, uh?',\n", - " 'lalaf: o condutor é ele',\n", - " 'all aboard!',\n", - " 'one, drop, two, drop, three, drop, four',\n", - " 'sound of kuduro knocking at your door',\n", - " 'one, drop, two, drop, three, drop, four',\n", - " 'sound of kuduro knocking at your door',\n", - " 'kuduro chegou, abri as portas',\n", - " 'qualquer pergunta terá resposta',\n", - " 'muitos criticaram, duvidaram',\n", - " 'mas hoje em dia dançam com força',\n", - " 'kuduro foi criado em angola',\n", - " 'estilo pesado, o povo vibra',\n", - " 'mulher angolana é de muita fibra',\n", - " 'kuduro é fruto da natureza',\n", - " 'ou um produto muito pesado',\n", - " 'agradecemos quem o criou',\n", - " 'tony amado e cota sebem',\n", - " 'vos considero',\n", - " 'quando canto só dou jajão',\n", - " 'com os buraka só dá confusão',\n", - " 'one, drop, two, drop, three, drop, four',\n", - " 'sound of kuduro knocking at your door',\n", - " 'one, drop, two, drop, three, drop, four',\n", - " 'sound of kuduro knocking at your door',\n", - " 'one, drop, two, drop, three, drop, four',\n", - " 'sound of kuduro knocking at your door',\n", - " 'one, drop, two, drop, three, drop, four',\n", - " 'sound of kuduro knocking at your door',\n", - " 'puto prata na casa, isso é buraka, one love',\n", - " 'kuduro está civilizado',\n", - " 'isto está mais do que comprovado',\n", - " 'está junto, não está misturado',\n", - " 'reparo o perfil do doutorado',\n", - " 'portugueses à minha procura',\n", - " 'faço kuduro com rima pura',\n", - " 'só por isso eu estou em altura',\n", - " 'chove latona tipo loucura',\n", - " 'sobe dj, vamos\\ufeff embora',\n", - " 'eu canto com muita coerência',\n", - " 'sobretudo inteligência',\n", - " 'mas não deixo de ser um gangsta',\n", - " 'está a refilar? quer comparar?',\n", - " 'olha o borracho que voa',\n", - " \"batida boa, 'tá te kuiar?\",\n", - " 'doutor, tá lida',\n", - " 'e sente o som da frustração',\n", - " 'e sente o som',\n", - " 'e sente o som da frustração',\n", - " 'e sente o som',\n", - " 'we about to drop away',\n", - " 'away',\n", - " 'one, drop, two, drop, three, drop, four',\n", - " 'sound of kuduro knocking at your door',\n", - " 'one, drop, two, drop, three, drop, four',\n", - " 'sound of kuduro knocking at your door',\n", - " 'one, drop, two, drop, three, drop, four',\n", - " 'sound of kuduro knocking at your door',\n", - " 'one, drop, two, drop, three, drop, four',\n", - " 'sound of kuduro knocking at your door',\n", - " \"this is what i've been told\",\n", - " 'i want diamonds and clothes',\n", - " \"i need syrup and 'tron\",\n", - " 'so i can fuck some hoes',\n", - " 'i wanna pull out a partys and hop out of a (rove?)',\n", - " 'i wanna make it right, i gotta make it right',\n", - " \"this is what i've been told\",\n", - " 'i wanna fish by the zone',\n", - " \"i'm drinking ace of spades, nigga, fuck patron\",\n", - " \"i want money and fame until the day i'm gone\",\n", - " 'i wanna make it right, i gotta make it right',\n", - " \"this is what i've been told\",\n", - " \"i need to pack me some 'kron\",\n", - " 'put kilos in the trunk and leave this rap alone',\n", - " 'i wanna stay on twitter and keep my ass at home',\n", - " 'i wanna make it right, i gotta make it right',\n", - " 'i hate your guts, i hate your guts',\n", - " 'i hate your guts, i hate your guts',\n", - " 'i hate your guts, i hate your guts',\n", - " 'i hate your guts',\n", - " \"this is what i've been told\",\n", - " 'i need to pop me some pills',\n", - " \"i gotta sell my soul so i can pop pho'reall\",\n", - " \"if that shit don't work i gotta pop ma stell\",\n", - " 'i wanna make it right, i gotta make it right',\n", - " \"this is what i've been told\",\n", - " 'i need a ratchet bitch',\n", - " 'i wanna go to the club find me a ratchet bitch',\n", - " \"hit the ass what i'm on\",\n", - " 'and say some ratchet shit',\n", - " 'i wanna make it right, i gotta make it right',\n", - " 'i hate your guts, i hate your guts',\n", - " 'i hate your guts, i hate your guts',\n", - " 'i hate your guts, i hate your guts',\n", - " \"so fuck what you've been told i gotta shit on my friends\",\n", - " 'i gotta dye my hair gold and wreck the shit out my pants',\n", - " 'i need to get my jaw wired',\n", - " \"and start fucking with 'keen\",\n", - " 'i gotta make it right, i wanna make it right',\n", - " \"this is what i've been told\",\n", - " 'i need to start me a crew',\n", - " 'hide your pride out the stage and beat the shit out of you!',\n", - " \"gotta get my face tatted and start bangin'piru\",\n", - " 'i wanna make it right, i gotta make it right',\n", - " 'i hate your guts, i hate your guts',\n", - " 'i hate your guts, i hate your guts',\n", - " 'i hate your guts, i hate your guts',\n", - " 'você é mc mas questiona meus raps',\n", - " 'poucas ideias, passo por esquinas',\n", - " 'sempre observo o estado da cria',\n", - " 'eu que testo seu proceder?',\n", - " 'com o rap eu não pago de pato',\n", - " 'com o rap que faço esmago os mcs \"marias cristinas\"',\n", - " 'conquistei respeito de meninos, meninas',\n", - " 'jovens e velhos, novo critério',\n", - " 'pra muitos o novo é assustados',\n", - " 'mano pensa, né? pelo amor',\n", - " 'só pensa',\n", - " 'o que me assusta são homens vivos com vaginas',\n", - " 'na soma, ouvido tirei do coma',\n", - " 'os conflitos que provoquei, veio à tona',\n", - " 'é fácil, o amigo simplifico',\n", - " 'e eu não sou magnífico',\n", - " 'só revejo o que penso',\n", - " 'arroto o critério patético',\n", - " 'e eu to muito louco pra você me entender',\n", - " 'pra tu conversar com a sua turminha sobre o r.a.p',\n", - " 'mano, vai se fudê',\n", - " 'to dentro do espaço que é estipulado',\n", - " 'acorda aliado, um passo pro lado',\n", - " 'dá licença aqui, minha levada continua acelerada na base',\n", - " 'posso sentir que, vagabundo fala muito',\n", - " 'ele chora e não aguenta o pique',\n", - " 'só que não',\n", - " 'o comédia pensa que é competição',\n", - " 'não é vacilação, minha situação',\n", - " 'bota a fita e volta, volta a fita jão',\n", - " 'esticaria o braço inteiro pra você se esticasse a mão lá atrás',\n", - " 'i hate your guts, i hate your guts',\n", - " 'i hate your guts, i hate your guts',\n", - " 'i hate your guts, i hate your guts',\n", - " 'hey',\n", - " 'essa é a nova, mano',\n", - " 'yeah',\n", - " '(fahel, me liga)',\n", - " 'yah',\n", - " 'chainz on my neck (yah, yah, yah)',\n", - " 'pediu foto, quis fumar meu beck (yeah)',\n", - " \"honey, bottles, loui' v na bag\",\n", - " 'uh, flexing, leve tudo na minha bag (honey bottles)',\n", - " 'chainz on my neck, uh',\n", - " 'fiquei flexing, tá tudo na bag (honey bottles)',\n", - " 'chainz on my neck, uh, uh',\n", - " 'ficou flexing quando viu meu swag (swag)',\n", - " 'chainz on my...',\n", - " 'louis v no cinto e na minha bag (hallelujah, hallelujah)',\n", - " 'chains on my neck',\n", - " 'lv de louis v na bag (bag) (hallelujah)',\n", - " 'te vi no dance floor (dance floor)',\n", - " 'tão high',\n", - " 'te vi no dance floor (dance floor)',\n", - " 'get high',\n", - " 'já tava bem louco, bem louco',\n", - " 'so high',\n", - " 'me puxa pro dance floor (dance for)',\n", - " 'get high',\n", - " 'chainz on my neck (yah, yah, yah)',\n", - " 'pediu foto, quis fumar meu beck',\n", - " 'honey bottles (bottles)',\n", - " 'uh, flexing, levo tudo na minha bag (honey bottles)',\n", - " 'chainz on my neck, uh',\n", - " 'fiquei flexing, tá tudo na bag (hallelujah, hallelujah)',\n", - " 'chainz on my neck, uh, uh',\n", - " 'ficou flexing quando viu meu swag',\n", - " 'fiz uma prece:',\n", - " 'só morro rico e calmo e sem estresse',\n", - " 'wow-wow',\n", - " 'ouro na pele (pele)',\n", - " 'brancos me odeiam e querem o meu swag',\n", - " 'wow-wow-wow',\n", - " 'esse é meu flow, assim que vou, não paro não',\n", - " 'assim tá bom, trap é meu dom e é hit bom',\n", - " 'bitch na home, manchou batom, não fiz questão',\n", - " 'red na mão em mais um show, tá lotadão (yeah, yeah)',\n", - " 'diamante chainz, na minha house chove cash',\n", - " 'my draco tá com a gang, aleluia, chove fé',\n", - " 'eu tô muito bem, tô vivendo só de trap',\n", - " 'vivência do gr, te mostrei como que é',\n", - " 'to lucrando bem, hater odeia meu sucesso (swag)',\n", - " 'fiz ‘que ninguém fez, quero grana sem estresse',\n", - " 'meu mano, eu ultrapassei, sabe bem como é que é',\n", - " 'diamante chain, podre de rico e sem estresse',\n", - " 'chainz on my neck, uh',\n", - " 'fiquei flexing, tá tudo na bag (hallelujah, hallelujah)',\n", - " 'chainz on my neck, uh, uh',\n", - " 'ficou flexing quando viu meu swag (swag)',\n", - " 'chainz on my neck, uh',\n", - " 'lv de louis v na bag (hallelujah, hallelujah)',\n", - " 'chainz on my neck (yah, yah)',\n", - " 'conferiu de longe: i got a swag',\n", - " '23 on my feet, vvs drippin on my wrist',\n", - " 'i drop the top, i’m zooming with my bitch',\n", - " 'almost crashed the benz off codein',\n", - " 'i can’t feel my face, can’t feel a thing',\n", - " 'shawty wanna fuck but i need some neck',\n", - " 'well she got that ass, then i hit it from the back',\n", - " 'you ain’t about that life, nigga, whole lotta cap',\n", - " 'numbers going up, i don’t even need to brag',\n", - " 'i fucked up the check, yeah, i fucked up the check',\n", - " 'gotta get these bands, yeah, gotta get that bag',\n", - " 'i fucked up the check, i fucked up the check',\n", - " 'gotta get these bands, gotta get that bag',\n", - " 'te vi no dance floor (dance floor)',\n", - " 'tão high',\n", - " 'te vi no dance floor (dance for)',\n", - " 'get high',\n", - " 'já tava bem louco, bem louco',\n", - " 'so high',\n", - " 'me puxa pro dance floor (dance floor)',\n", - " 'get high',\n", - " 'chainz on my neck (yah, yah, yah)',\n", - " 'pediu foto, quis fumar meu beck, yeah',\n", - " 'honey bottles (bottles)',\n", - " 'uh, flexing, levo tudo na minha bag (honey bottles)',\n", - " 'chainz on my neck, uh',\n", - " 'fiquei flexing, tá tudo na bag (hallelujah, hallelujah)',\n", - " 'chainz on my neck, uh, uh',\n", - " 'ficou flexing quando viu meu swag (swag)',\n", - " 'chainz on my neck, uh',\n", - " 'lv de louis v na bag (hallelujah, hallelujah)',\n", - " 'chainz on my neck (yah, yah)',\n", - " 'conferiu de longe: i got a swag (wow)',\n", - " '(hallelujah)',\n", - " '(yah, yah)',\n", - " '(fahel, me liga)',\n", - " '(simbora)',\n", - " '(zonaga... we go around the world)',\n", - " 'we tryna to globetrotter',\n", - " \"i'm back with the dope product\",\n", - " 'high with the ghostwriter',\n", - " 'around the hate days, hit up in the stage',\n", - " 'shut it down like up in 88',\n", - " 'we get the african drum, i brought my tribe with me',\n", - " 'we from that african slum, hard to survive really',\n", - " 'so look at us now, international my passport',\n", - " 'they catch me out in brooklyn, the visa in my name',\n", - " 'they catch me out in london, the visa in my name',\n", - " 'they catch me out in tokyo, the visa in my name',\n", - " \"they catch me and i don't need a fucking visa\",\n", - " 'so put your classes up in a celebration',\n", - " 'we got the party rocking all across the nation',\n", - " 'we going all around the world (zonaga)',\n", - " 'we all around the world',\n", - " 'we all around the world',\n", - " 'we all around the world',\n", - " 'around the world, around the world',\n", - " 'we all around the world',\n", - " 'we all around the world',\n", - " 'we all around the world',\n", - " 'we all around the world',\n", - " 'around the world, around the world',\n", - " 'simbora',\n", - " 'tão vamo nessa cumpade, do nosso jeito',\n", - " 'tranquilo e sossegado com os amigo de verdade',\n", - " 'sem sonho de masserati, sem caô, de humildade',\n", - " 'sem papo de ostentação, preocupado com a realidade',\n", - " 'o mundo é pequeno, mas o pensamento não',\n", - " 'fronteiras não são barreiras, tá tudo na nossa mão',\n", - " 'de baixo dos panos trago orgulho suburbano',\n", - " 'um pouco de europeu, um pouco de africano',\n", - " 'eu sou maloqueiro, cidade rio de janeiro',\n", - " 'que festa o ano inteiro, mas tem que puxar primeiro',\n", - " 'a ponta tá no cinzeiro, batuque pra batuqueiro',\n", - " 'que toca e vira terreiro, e bota as mina pra sambar',\n", - " 'toma cuidado que a festa não é puteiro',\n", - " 'os verme tá no chiqueiro, ih! querem dinheiro',\n", - " 'dinheiro tá com o banqueiro cumpade, sou maconheiro',\n", - " 'sujou! pega os parceiro e puxo o bonde pra...',\n", - " 'foi',\n", - " 'city, ghana, rio, são paulo, brasil',\n", - " '(all around the world)',\n", - " 'marcelo, ambassador, worldwide',\n", - " 'só me liga quando quer',\n", - " 'wanna make love',\n", - " 'quando quer',\n", - " 'wanna make love',\n", - " 'oh-oh, woah, woah',\n", - " 'wanna make love',\n", - " 'oh-oh, woah, woah',\n", - " 'wanna make love',\n", - " 'me liga quando quer',\n", - " 'wanna make love',\n", - " 'some se não quer',\n", - " 'wanna make love',\n", - " 'oh-oh, woah, woah',\n", - " 'make love',\n", - " 'oh-oh, woah, woah',\n", - " 'make love',\n", - " 'sábado, here we go',\n", - " 'me ligou, claro eu vou',\n", - " 'sabado, me ligou',\n", - " 'se arrumou, here we go',\n", - " 'de novo (aff!), damn girl',\n", - " 'dez da noite me ligou me dizendo: \"eu não vou\"',\n", - " 'pra você eu sou mais um (to make love!)',\n", - " 'deleta meu número do samsung (gotta make love!)',\n", - " 'onde eu errei? sempre avisei',\n", - " 'what up? the same',\n", - " 'gotta make love',\n", - " 'agora eu sei, destiny child',\n", - " 'say my name, say my name',\n", - " 'gotta make love',\n", - " 'só me liga quando quer',\n", - " 'wanna make love',\n", - " 'quando quer',\n", - " 'wanna make love',\n", - " 'oh-oh, woah, woah, woah',\n", - " 'wanna make love',\n", - " 'oh-oh, woah, woah',\n", - " 'wanna make love',\n", - " 'me liga quando quer',\n", - " 'wanna make love',\n", - " 'some se não quer',\n", - " 'wanna make love',\n", - " 'oh-oh, woah, woah',\n", - " 'make love',\n", - " 'oh-oh, woah, woah',\n", - " 'make love',\n", - " \"uh, me ligou ('gou), call for me\",\n", - " 'uh, me ligou pra saber de mim',\n", - " 'eu espero minha vez (vez), não atendo (não!)',\n", - " 'é minha vez (ex!), não entendo',\n", - " 'sinceramente, nem sei',\n", - " 'só não vou mais pensar em você (não)',\n", - " 'eu não quero mais',\n", - " 'sinceramente, nem sei',\n", - " 'eu não quero mais pensar em você (yeah)',\n", - " 'não volto atrás (não)',\n", - " 'só me liga quando quer',\n", - " 'wanna make love',\n", - " 'quando quer',\n", - " 'wanna make love',\n", - " 'oh-oh, woah, woah',\n", - " 'wanna make love',\n", - " 'oh-oh, woah, woah',\n", - " 'wanna make love',\n", - " 'me liga quando quer',\n", - " 'wanna make love',\n", - " 'some se não quer',\n", - " 'wanna make love',\n", - " 'oh-oh, woah, woah',\n", - " 'make love',\n", - " 'oh-oh, woah, woah',\n", - " 'make love',\n", - " 'ela me deixou alone (3x)',\n", - " 'me deixou alone',\n", - " 'i’m right here in the zone',\n", - " 'me deixou alone',\n", - " 'now i’m stuck inside my home',\n", - " 'ela depois voltou',\n", - " 'but i wont give her a moan',\n", - " 'e eu tou tipo um unknown',\n", - " 'eu nem sei quem é que eu sou',\n", - " 'ela não ultrapassou',\n", - " 'porque sabe que errou',\n", - " 'ela pôs-se a pensar e conseguiu perceber',\n", - " 'que não fazia sentido o que ela estava a dizer',\n", - " 'e eu não sabia o que fazer (2x)',\n", - " 'me deixou alone',\n", - " 'i’m right here in the zone',\n", - " 'ela me deixou alone',\n", - " 'now i’m stuck inside my home',\n", - " 'now i’m stuck inside my home',\n", - " 'i was better if i was gone',\n", - " 'but then i gotta respawn',\n", - " 'i gotta move fucking on',\n", - " 'you we’re sayin’ that i was cheating on you',\n", - " 'but you we’re my only boo',\n", - " 'now i’m in tears like you used to',\n", - " 'i just hope you loved me too',\n", - " 'me deixou alone',\n", - " 'i’m right here in the zone',\n", - " 'ela me deixou alone',\n", - " 'now i’m stuck inside my home (2x)',\n", - " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", - " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", - " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", - " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", - " 'se a gente tá junto é fuga',\n", - " 'parceira de crime, eu levo ela pra lua',\n", - " 'amo quando ela dança pra mim toda nua',\n", - " 'essas suas curvas me lembra as curvas das ruas',\n", - " 'eu fugindo da bula, sirenes e rabas se misturam na minha mente',\n", - " 'tudo de repente como entorpecente',\n", - " 'e ela descarregando esse pente, yeah',\n", - " 'mais de cem por hora e eu despisto todos eles (ei)',\n", - " 'uh, 180 graus, eu tô na marechal',\n", - " 'uh, 180 graus, despisto os policial',\n", - " 'wow, yeah, wow, yeah',\n", - " 'wow, yeah, despisto os polici-',\n", - " 'wow, wow, yeah, wow, yeah',\n", - " 'wow, yeah, yeah',\n", - " 'drift king, drift king, drift king, drift king',\n", - " 'drift king, drift king, drift king, drift king',\n", - " 'drift king, drift king, drift king, drift king',\n", - " 'drift king, drift king, drift king, yeah',\n", - " 'drift king, drift king, drift king, drift king',\n", - " 'drift king, drift king, drift king, yeah',\n", - " 'drift king, drift king, drift king, drift king',\n", - " 'drift king, drift king, drift king, yeah',\n", - " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", - " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", - " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", - " 'se eu te pego na curva é hmm (drift king, drift king, drift king, drift king, drift king, drift king, drift king)',\n", - " 'siiiim!',\n", - " 'ghetto woman',\n", - " 'minha gangue é do gueto',\n", - " 'minha gangue é do gueto',\n", - " 'e elas são más',\n", - " 'e elas são más',\n", - " 'minha gangue é do gueto e elas são más',\n", - " 'representam o que vários dizem “jamais”',\n", - " 'prove do nosso doce sem censura como se tivesse uma segunda chance isso não é um sonho, mesmo se fosse...',\n", - " 'você nunca vai resistir, sua vontade é tá aqui e a nossa é fazer tu engolir',\n", - " 'toda a estratégia, porque na buce é que fica o q.i',\n", - " 'pode admitir, não dá pra resistir',\n", - " 'mantemos as tanderas e os dogs no nosso jogo',\n", - " 'sabemos quem cola e não adianta passar o rodo',\n", - " 'se no seu bolso tem dinheiro não vem pagar de louco',\n", - " 'rude gyal multiplica o seu que hoje tá tendo em dobro',\n", - " 'porque conhece o nosso estilo, ganhar dinheiro',\n", - " 'e se gastar deixasse rico gastaríamos o tempo inteiro',\n", - " 'fica ligeiro, meu game não é passageiro',\n", - " 'e o doce tá fazendo efeeeeito',\n", - " 'minha gangue vem do gueto, pro mundo só respeito',\n", - " 'essência vem de dentro, e não tem a ver com peito',\n", - " 'mesmo sendo instrumentos, corpos e monumentos',\n", - " 'vestes e julgamentos, drogas e seus efeitos',\n", - " 'a maconha nos deixou louconas',\n", - " 'anjos e demônios deitados em camas',\n", - " 'prefere os criminais mas não ficam em cana',\n", - " 'uma vida independente sem tempo pra dramas',\n", - " 'o cheiro te chama',\n", - " 'vivências e tramas',\n", - " 'bucetas, hei!, xanas',\n", - " 'não dá pra negar',\n", - " 'que elas são más, elas são más, elas são más, elas são más',\n", - " 'minha gangue é do gueto e elas são más',\n", - " 'representam o que vários dizem “jamais”',\n", - " 'elas são más, elas são más, elas são más, elas são más',\n", - " '(inglês)',\n", - " 'yes!',\n", - " 'ghetto woman',\n", - " 'my gang is from the ghetto',\n", - " 'and they are bad',\n", - " 'and they are bad',\n", - " 'my gang is from the ghetto and they are bad',\n", - " 'representing what many say \"i would never\"',\n", - " 'prove our candy without censorship as if you had a second chance',\n", - " \"this ain't a dream\",\n", - " 'even if it was...',\n", - " \"you'll never resist, your wish is to be here and our wish is to make you swallow\",\n", - " 'all the strategy, cause in the pussy lies the iq',\n", - " \"you can admit it, you can't resist it\",\n", - " 'we keep the thunderas and the dogs in our game',\n", - " \"we know who rides along and it doesn't work sweeping it under\",\n", - " \"if there's money in your pocket don't try to act crazy\",\n", - " 'rude gyal multiplies yours cause today we got it double',\n", - " 'cause you know our style, getting money',\n", - " 'and if spending made us rich we would spend it all the time',\n", - " \"stay low, my game isn't temporary\",\n", - " \"and that acid's kicking iiiiin...\",\n", - " 'my gang comes from the ghetto, to the world only respect',\n", - " \"essence comes from within, and it's got nothing to do with tits\",\n", - " 'even as instruments, bodies and monuments',\n", - " 'clothing and judgements, drugs and its effects',\n", - " 'the weed got us wild',\n", - " 'angels and demons laying in beds',\n", - " \"prefer the criminals but don't go down\",\n", - " 'an independent life with no time for dramas',\n", - " 'the smell calls you',\n", - " 'experiences and plots',\n", - " 'pussies, hey!, punanis',\n", - " 'you cannot deny',\n", - " 'that they are bad, they are bad, they are bad, they are bad',\n", - " 'my gang is from the ghetto and they are bad',\n", - " 'representing what many say \"i would never\"',\n", - " 'they are bad, they are bad, they are bad, they are bad',\n", - " 'huh, soulja! x-type music',\n", - " \"and you know, you know we turnin' up\",\n", - " 'guimê',\n", - " \"you know we turnin' up\",\n", - " 'soulja, mc guime',\n", - " 'é nós',\n", - " 'you know that we dem boyz',\n", - " 'vai segurando essa conexão, moleque!',\n", - " \"and you know we makin' noise (king soulja)\",\n", - " '(we are in brazil and...)',\n", - " 'hold up, hold up, hold up, hold up',\n", - " 'ayy, ayy, ayy',\n", - " \"whippin' and flippin' them chickens (whip)\",\n", - " \"shout out my team cuz we winnin' (we win)\",\n", - " 'bugatti no expedition',\n", - " 'we running the dough like we sprinting',\n", - " 'tony montana run through atlanta',\n", - " \"brazil to montana, i'm toting that hammer\",\n", - " \"soulja boy tell' em louis v on my pajama\",\n", - " \"ridin' and pushin' montana\",\n", - " 'me and guimê on a private jet',\n", - " 'flex, finesse, ice on my rolex',\n", - " \"yo bitch, she suckin, she fuckin'\",\n", - " 'she wanna come holla at soulja',\n", - " \"whippin' that rover, hoppin', i tell and i told ya\",\n", - " 'whipping that coke and no cola (no cola)',\n", - " 'uh, all of these niggas i knowla',\n", - " \"my squad, we're taking shit over\",\n", - " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", - " \"brazil we made the tour, you know we makin' noise\",\n", - " 'brasil, brasil, brasil, ha, aqui é nóis',\n", - " \"we turnin' up to the max, guimê, soulja boy\",\n", - " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", - " \"brazil we made the tour, you know we makin' noise\",\n", - " 'brasil, brasil, brasil, ha, aqui é nóis',\n", - " \"we turnin' up to the max, guimê, soulja boy\",\n", - " 'dinheiro tá nos pensamentos',\n", - " 'todos parceiro curtindo os momentos, assim',\n", - " 'vários jordans lançamentos',\n", - " 'vai se envolvendo, ou se mordendo, enfim',\n", - " 'então, um brinde pra mim',\n", - " 'provei, não tô de brincadeira',\n", - " 'uns falaram que não ia chegar',\n", - " 'cheguei, até de panamera',\n", - " 'sem bobeira, a noite inteira',\n", - " 'brilha o diamante, brilha o ouro',\n", - " 'é guime e soulja boy, ela fala: \"até que é estouro\"',\n", - " 'quer sentar no banco de couro',\n", - " 'quer logo se envolver com o nosso bonde',\n", - " 'calma aí, respeita o moço',\n", - " 'sem alvoroço, cê veio de onde?',\n", - " 'é nóis! (turn up!) vai segurando!',\n", - " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", - " \"brazil we made the tour, you know we makin' noise\",\n", - " 'brasil, brasil, brasil, ha, aqui é nóis',\n", - " \"we turnin' up to the max, guimê, soulja boy\",\n", - " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", - " \"brazil we made the tour, you know we makin' noise\",\n", - " 'brasil, brasil, brasil, ha, aqui é nóis',\n", - " \"we turnin' up to the max, guimê, soulja boy\",\n", - " \"you know, you know we turnin' up\",\n", - " \"and you know we turnin' up\",\n", - " \"soulja, mc guime, let's go\",\n", - " 'you know that we dem boyz',\n", - " \"hey, and you know we makin' noise\",\n", - " 'hold up, hold up, hold up',\n", - " 'hold up, hold up, hold up',\n", - " 'hold up, we dem boyz',\n", - " 'chapa quente, nóis na voz',\n", - " 'da água pro vinho, guimê e soulja boy',\n", - " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", - " \"brazil we made the tour, you know we makin' noise\",\n", - " 'brasil, brasil, brasil, ha, aqui é nóis',\n", - " \"we turnin' up to the max, guimê, soulja boy\",\n", - " \"it's soulja and guime, oh yeah, we dem boyz!\",\n", - " \"brazil we made the tour, you know we makin' noise\",\n", - " 'brasil, brasil, brasil, ha, aqui é nóis',\n", - " \"we turnin' up to the max, guimê, soulja boy\"]},\n", - " 'data': ['eu tenho um sonho',\n", - " 'eu quero ir para o brasil e faze o bem;',\n", - " 'talvez olher para o céu e',\n", - " 'talvez, tornar-se um homem selvagem',\n", - " 'eu não sei',\n", - " 'i dream of calm brazilian skies',\n", - " 'um ceu de alegria',\n", - " \"i swear i wouldn't wanna be that guy\",\n", - " 'that missed a opportunity to be',\n", - " 'a great mc like racionais',\n", - " 'homem na estrada, no valor de nada?',\n", - " \"i'm trying to be the greatest rapper\",\n", - " \"only time i'll rap on sango beats\",\n", - " \"i don't wanna jump on the hype train\",\n", - " 'niggas trying claim they got the samba feet',\n", - " 'but please nigga step your ass that way',\n", - " 'niggas trying claim they got the baile funk',\n", - " 'but please nigga stay in your trap lane',\n", - " \"i see that you ain't what you say you be\",\n", - " 'você no mesmo balde também',\n", - " \"(i'm broke)\",\n", - " 'but got dreams like a rich man at heart',\n", - " '(fuck with me)',\n", - " \"and i'm broke and how you say in portuguese\",\n", - " 'estou quebrado',\n", - " 'i swear it feel like this ladder i climb',\n", - " 'gets mais alto e mais largo',\n", - " 'minha alma canta',\n", - " '(tão alto)',\n", - " 'can you hear my soul?, do you feel my heart?',\n", - " 'would you ride this wave if you embark my ark?',\n", - " 'i know a guy who can save',\n", - " 'nossa corações e fazer o seus',\n", - " 'dias dez vezes melhor, stick with me',\n", - " \"you're on the right path, so speak to me\",\n", - " 'eu falo de meu amor',\n", - " 'na pedronova a dor se leva',\n", - " 'a pedronova não tem problema',\n", - " 'a pedronova, i love you so',\n", - " 'é pedronova se vocês vem',\n", - " 'uma coisa nova',\n", - " 'que você também',\n", - " 'se voce chora',\n", - " 'isso é pedronova meu bem',\n", - " 'bem bem bem',\n", - " 'bom trabalho',\n", - " 'little children running in a building, shaking',\n", - " 'arrest the',\n", - " 'whatever they',\n", - " 'trynna earn the living',\n", - " 'unacceptable condition, happy to be ignorant',\n", - " 'with all they remain, takes',\n", - " 'the misconceptions they be',\n", - " 'but, eventually the jails',\n", - " 'all of the men',\n", - " \"we're seeking all of the women\",\n", - " 'to adolescence takes depression, they represent the cicle of viciousness',\n", - " 'if is the weapon',\n", - " \"i don't taste the ammunition\",\n", - " 'now the sun is burning',\n", - " 'now the pouring rain',\n", - " 'feel the city harming',\n", - " 'children, are you safe?',\n", - " 'now the sun is burning',\n", - " 'now the pouring rain',\n", - " 'feel the city harming',\n", - " 'children, are you safe?',\n", - " 'misturei desesperanças banhadas no desamor',\n", - " 'misturei falsas promessas com abandono e rancor',\n", - " 'misturei portas, entre abertas e emperradas',\n", - " 'carnes marcadas',\n", - " 'misturei bem, agora engole seco',\n", - " 'sem direito à recusa',\n", - " 'seco',\n", - " 'faca amolada riscando por dentro, garganta',\n", - " 'como o medo que domina',\n", - " 'que sobe pela espinha desde cedo',\n", - " 'caminho extremo',\n", - " 'extremamente estreito, na beira do abismo',\n", - " 'no fio da navalha, cicatrizes do aprendizado cravadas no couro forte',\n", - " 'nascimento',\n", - " 'vida sofrida, sobrevive morte',\n", - " 'now the sun is burning',\n", - " 'now the pouring rain',\n", - " 'feel the city harming',\n", - " 'children, are you safe?',\n", - " 'now the sun is burning',\n", - " 'now the pouring rain',\n", - " 'feel the city harming',\n", - " 'children, are you safe?',\n", - " 'tenho tentado ligar para ti, mas não te apanho',\n", - " 'habituei-me a falar contigo, sinto-me estranho',\n", - " 'tu aí tão longe sem ti, a vida é solitária',\n", - " 'sei que atrapalha a pequena diferença horária',\n", - " 'parece que foi ontem, amanhã faz um mês',\n", - " 'ups! sorry, esqueci-me que falas pouco português',\n", - " 'vou tentar em inglês para perceberes what i say',\n", - " \"i speak a little english, so i guess it's ok\",\n", - " \"anyway i've been missing you a lot\",\n", - " 'e ontem foi o meu b-day, guess you forgot',\n", - " 'esperei o dia inteiro, i was waiting your call',\n", - " 'i supose that you was busy on the work and at all',\n", - " 'whatever i just wanna let you know what i feel',\n", - " 'nem sei bem o que é, but trust me this is real',\n", - " 'fiz este som para ti, cause you love rnb',\n", - " 'whenever you hear you will be reminding of me',\n", - " 'ac',\n", - " 'and i think of you',\n", - " 'and all the things that we used to do',\n", - " 'it always makes me smile',\n", - " \"boy you're so fine\",\n", - " \"and you makes me wanna say you're my baby, baby\",\n", - " \"(you're my baby)\",\n", - " 'chove lá fora while i write my rhymes',\n", - " 'remains a pensar no que durou, old times',\n", - " 'quando dançavamos à chuva and made love all night',\n", - " 'so much on my mind on even know where to write',\n", - " 'não te quero pressionar, not trying to rush',\n", - " 'but baby you should know this is more than a crush',\n", - " 'yeah, i kinda love you right know',\n", - " 'i kinda love you right now',\n", - " 'and i think of you',\n", - " 'and all the things that we used to do',\n", - " 'it always makes me smile',\n", - " \"boy you're so fine\",\n", - " \"and you makes me wanna say you're my baby, baby\",\n", - " \"(you're my baby)\",\n", - " 'men, it feels so good',\n", - " 'relax lay back, let the music set the mood',\n", - " 'maybe i should move abroad',\n", - " 'em breve estaremos juntos, so help me god',\n", - " 'or maybe you should move up here',\n", - " \"i'll be by your side, so have no fear\",\n", - " \"mais do que físico, it's body it's soul\",\n", - " 'bo é nha cretcheu, that means my love in creole',\n", - " 'and i think of you',\n", - " 'and all the things that we used to do',\n", - " 'it always makes me smile',\n", - " \"boy you're so fine\",\n", - " \"and you makes me wanna say you're my baby, baby\",\n", - " \"(you're my baby)\",\n", - " \"(you're my baby)\",\n", - " \"(you're my baby)\",\n", - " 'and i think of you',\n", - " 'ahn, yeah, hey',\n", - " 'i got them coming for me',\n", - " 'from the show, studio, watch me glow',\n", - " 'you ain’t work longer than me',\n", - " 'hey, it ain’t no stronger than me',\n", - " 'yeah, i’m stuntin, bitch, i’m lovin',\n", - " 'my name buzzin, you ain’t work harder than me',\n", - " 'hey, i got them coming for me',\n", - " 'from the show, studio, watch me glow',\n", - " 'you ain’t work longer than me',\n", - " 'hey, it ain’t no stronger than me',\n", - " 'yeah, i’m stuntin, bitch, i’m lovin',\n", - " 'my name buzzin, you ain’t work harder than me',\n", - " 'e aí? foi mais ou menos assim',\n", - " 'não esperei o contrato chegar, escrevi um pra mim',\n", - " 'escrevi um próprio pra mim',\n", - " 'onde as regras estão na minha lousa e foi eu que escrevi (é)',\n", - " 'e vou vender isso aqui',\n", - " 'se é meu, vou colocar porcentagem e nós vai dividir (e aí?)',\n", - " 'multiplicar, dividir',\n", - " 'e que faça sentido essa vez o motivo que eu vir (porque)',\n", - " 'foi mais ou menos assim',\n", - " 'não esperei o contrato chegar, escrevi um pra mim (yeah)',\n", - " 'escrevi um próprio pra mim',\n", - " 'onde as regras estão na minha lousa e foi eu que escrevi (yeah)',\n", - " 'e vou vender isso aqui',\n", - " 'se é meu, vou colocar porcentagem e nós vai dividir (e aí?)',\n", - " 'multiplicar, dividir',\n", - " 'e que faça sentido essa vez o motivo que eu vir',\n", - " 'hey, i got them coming for me',\n", - " 'from the show, studio, watch me glow',\n", - " 'you ain’t work longer than me',\n", - " 'hey, it ain’t no stronger than me',\n", - " 'yeah, i’m stuntin, bitch, i’m lovin',\n", - " 'my name buzzin, you ain’t work harder than me',\n", - " 'hey, i got them coming for me',\n", - " 'from the show, studio, watch me glow',\n", - " 'you ain’t work longer than me',\n", - " 'hey, it ain’t no stronger than me',\n", - " 'yeah, i’m stuntin, bitch, i’m lovin',\n", - " 'my name buzzin, you ain’t work harder than me']},\n", - " 'rock': {'meta': {'train_data': ['vem sentir-se sádico',\n", - " 'eu sei cantar melhor que você',\n", - " 'eu sei cantar melhor que você',\n", - " 'weep it out, man, weep it out',\n", - " 'weep it out, man, weep it out',\n", - " 'weep it out, man, weep it out',\n", - " 'weep it out, man, weep it out',\n", - " 'vem, vem',\n", - " 'sentir-se áltico',\n", - " 'não obstante, o meu coração',\n", - " 'não obstante, o meu coração',\n", - " 'weep it out, man, weep it out',\n", - " 'weep it out, man, weep it out',\n", - " 'weep it out, man, weep it out',\n", - " 'weep it out, man, weep it out',\n", - " 'weep it out, ma-ma-ma-ma-ma-ma, ma-ma-ma-ma-ma-ma-ma-ma',\n", - " 'weep it out, man, weep it out',\n", - " 'weep it out, man, weep it out',\n", - " 'weep it out, man, weep it out',\n", - " 'weep it out, man, weep it out',\n", - " 'weep it out, ma-ma-ma-ma-ma-ma, ma-ma-ma-ma-ma-ma-ma-ma',\n", - " 'ma-ma-ma-ma-ma-ma-ma-ma, ma-ma-ma-ma-ma-ma-ma-ma',\n", - " 'no one knows you like i do',\n", - " 'e as estrelas',\n", - " 'como um ima',\n", - " 'so o seu olhar',\n", - " 'eu conheco seu ima',\n", - " 'no one knows you like i do',\n", - " 'voce me faz aceitar',\n", - " 'o calor de ser',\n", - " 'sereia minha',\n", - " 'quer entrar',\n", - " 'no one knows you like i do',\n", - " 'puras, virgens, vulvas dentadas',\n", - " 'é o reino das bestas soberanas',\n", - " 'peregrinos no degredo',\n", - " 'cruz violada, transformista',\n", - " 'misericórdia',\n", - " 'genuflexão',\n", - " 'castração',\n", - " 'infecção',\n", - " 'misericórdia!',\n", - " 'mais que imperfeita, mais que farpada',\n", - " 'doces rebentos do amor',\n", - " 'com sacra luxúria evangelista',\n", - " 'sangue do mundo, sangue para deus',\n", - " 'misericórdia',\n", - " 'infecção',\n", - " 'hóstia fecal',\n", - " 'deus é amor',\n", - " 'castração',\n", - " 'flagelação',\n", - " 'misericórdia',\n", - " 'lapidação',\n", - " 'de onde você veio? quem é você?',\n", - " 'para onde você vai? o que vai fazer?',\n", - " 'olhando seu rosto vejo só desilusões',\n", - " 'esqueceram que você levantou nossa nação',\n", - " 'quantas guerras você lutou?',\n", - " 'quantas medalhas você ganhou?',\n", - " 'quantos impostos você pagou?',\n", - " 'para agora ser esquecido?',\n", - " 'quem é você?',\n", - " 'mais um aposentado',\n", - " '---------------------------------------------------',\n", - " 'where are you from? who are you?',\n", - " 'where are you going? what are you going to do?',\n", - " 'looking at your face i see only delusions',\n", - " 'they forgot that you raised our nation',\n", - " 'how many wars did you fight?',\n", - " 'how many medals have you won?',\n", - " 'how many taxes did you pay?',\n", - " 'to be forgotten now?',\n", - " 'who are you?',\n", - " 'another retired',\n", - " 'lugares do caralho e gente afudê',\n", - " 'paixões em liverpool, saudades do jacarandá',\n", - " 'a chuva bem fininha da doce inglaterra',\n", - " 'bastardo da psicodelia, pictures and paintings',\n", - " 'júpiter maçã',\n", - " 'júpiter maçã',\n", - " 'júpiter maçã',\n", - " 'direto do aqualung, sonares de moby dick',\n", - " 'de charles dickens o natal, simpatia no undersound',\n", - " 'a couple of ideas da mooca à pompeia',\n", - " 'a couple of ideas da cidade baixa ao bom fim',\n", - " 'júpiter maçã',\n", - " 'júpiter maçã',\n", - " 'júpiter maçã',\n", - " 'as tortas e as cucas desconcertadas',\n", - " 'o brandy e a noiva, a miss lexotan',\n", - " 'freak you and fuck you em saturno',\n", - " 'bossa nova a seguir e o som medieval',\n", - " 'júpiter maçã',\n", - " 'júpiter maçã',\n", - " 'júpiter maçã',\n", - " 'coisas deixadas para trás (sem explicação)',\n", - " 'não me importo mais (com o seu perdão)',\n", - " 'e agora depois que passou (pude saber)',\n", - " 'vejo no seu olhar (não tente entender)',\n", - " 'agora é tarde pra se arrepender',\n", - " 'seus atos não falam mas dizem muito sobre você',\n", - " 'vou lutar',\n", - " 'enfrentar meus demônios de perto',\n", - " 'e encontrar toda a verdade que eu quero',\n", - " 'as últimas palavras que deixo pra você',\n", - " 'as últimas palavras, não tente entender',\n", - " 'agora é tarde',\n", - " 'não venha me dizer',\n", - " 'a mesma historia acabando com você',\n", - " 'vou lutar',\n", - " 'enfrentar meus demônios de perto',\n", - " 'e encontrar toda a verdade que eu quero',\n", - " 'eu não vou perder minha motivação',\n", - " 'e essa é minha unica convicção',\n", - " 'agora é tarde',\n", - " 'pra se arrepender',\n", - " 'agora é tarde',\n", - " 'pra se arrepender',\n", - " 'agora é tarde',\n", - " '(sinais de uma promessa me esforcei pra manter essa)',\n", - " 'pra se arrepender',\n", - " '(afogo sua presença na verdade que me resta)',\n", - " 'agora é tarde',\n", - " '(levar pra frente o que acabou)',\n", - " 'pra se arrepender',\n", - " '(só vai nos fazer sermos arrastados a pecar)',\n", - " 'vou lutar',\n", - " 'enfrentar meus demônios de perto',\n", - " 'e encontrar toda a verdade que eu quero',\n", - " 'eu não vou perder minha motivação',\n", - " 'e essa é minha unica convicção',\n", - " '------------------------------------------------------------------------',\n", - " 'english:',\n", - " \"things left behind (with no explanation) i don't care anymore (about your forgiveness) and now that's all behind (i could know) i can see it in your eyes (don't try to understand)\",\n", - " \"it's too late now to regret your actions don't speak but they tell a lot about you\",\n", - " \"i will fight face my demons closer and i'll find all the truth that i want\",\n", - " \"these are my last words for you these are my last words, don't try to understand\",\n", - " \"it's too late now, don't come and tell me the same story ending you\",\n", - " \"i will fight face my demons closer and i'll find all the truth that i want i'll not lose my motivation this is my only conviction\",\n", - " \"it's too late now (traces of a promise, i tried to keep it) to regret (i drown your presence in the truth that lasts for me) it's too late now (take on what already ended) to regret (it'll only make us be dragged to sin)\",\n", - " \"i will fight face my demons closer and i'll find all the truth that i want i'll not lose my motivation this is my only conviction\",\n", - " 'letra de \"paint my dreams\" com anelis assumpção, vitor hugo e liniker e os caramelows',\n", - " '\"nenê da vila matilda, sabe que eu já tinha visto... já tinha tido uma conversa sobre aquele post que você me mandou das frequências magnéticas da terra. com o lama michel, há uns dois anos atrás, exatamente essa conversa. e eu também creio em mudanças frequenciais.\"',\n", - " '\"a vida é isso, é tudo isso. é uma maravilha, é uma flor, orquídea... é um pedaço de pizza, é um... uma loucura, uma tamborzada. é poder tocar tambor até de manhã, ficar bem louco, tomar cachaça, essas coisas maravilhosas... e aí?\"',\n", - " \"don't be afraid when you feel my tears paint my dreams\",\n", - " 'paint my dreams',\n", - " \"i'm gonna be a bird, you'll be my old man gold\",\n", - " 'just paint like a dream',\n", - " \"don't be afraid when you feel my lips paint my dreams\",\n", - " 'paint my dreams',\n", - " \"i'm gonna be a flat painting on the wall\",\n", - " \"you'll be my owl, just paint as dream\",\n", - " \"don't be afraid if i leave no hope, no fear\",\n", - " 'just paint our dreams',\n", - " 'you can use the palette of god',\n", - " 'you can use all colours',\n", - " 'paint my dreams, paint my dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " '\"a vida é isso, é tudo isso. é uma maravilha, é uma \"',\n", - " '\" em mudanças frequenciais.\"',\n", - " \"don't be afraid when you feel my tears...\",\n", - " \"i'm gonna be a bird\",\n", - " \"don't be afraid when you feel my lips...\",\n", - " \"i'm gonna be a flat painting on the wall\",\n", - " \"don't be afraid if i leave no hope, no fear\",\n", - " 'just paint our dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " \"i'm gonna be a flat painting on the wall\",\n", - " 'my dreams',\n", - " 'paint my dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " 'paint my dreams',\n", - " 'my dreams',\n", - " 'paint my dreams',\n", - " \"i'm gonna be a bird\",\n", - " 'paint my dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " 'paint my dreams, paint my dreams',\n", - " 'paint my dreams, my dreams',\n", - " 'o seu azul, só eu vejo. porque se quer existe na paleta de deus. deus sequer existe? ou o azul é deus?',\n", - " 'agua de coco',\n", - " 'caldo de cana',\n", - " 'dentes de oro',\n", - " 'confusao urbana',\n", - " 'the storm clouds roll in',\n", - " 'set me free fortuna',\n", - " 'it’s late and i can’t find my friends',\n", - " 'caldo de cana',\n", - " 'macumba da cidade chegou',\n", - " 'muambeiro anarquista eubou',\n", - " 'malandro tambem tem coracao',\n", - " 'the rain’s still coming down',\n", - " 'the rain’s still coming down',\n", - " 'the rain’s still coming down',\n", - " 'the rain’s still coming down',\n", - " 'the rain’s still coming down',\n", - " 'agua de coco',\n", - " 'caldo de cana',\n", - " 'dentes de oro',\n", - " 'confusao urbana',\n", - " 'macumba da cidade chegou',\n", - " 'muambeiro anarquista eubou',\n", - " 'malandro tambem tem coracao',\n", - " 'the rain’s still coming down',\n", - " 'the rain’s still coming down',\n", - " 'the rain’s still coming down',\n", - " 'the rain’s still coming down',\n", - " 'the rain’s still coming down',\n", - " 'eletricidade solar nos carros',\n", - " 'não poluem e nem gastam nada',\n", - " 'lambidas na utopia',\n", - " 'deve ser amor o que eu estou sentindo',\n", - " 'só pode ser amor que eu estou sentindo',\n", - " 'tenho certeza que é amor o que eu estou sentindo',\n", - " 'aqui agora',\n", - " 'cantando e tocando pra você',\n", - " 'te entretendo',\n", - " 'give another chance, man',\n", - " 'give another chance',\n", - " 'give another chance, man',\n", - " 'give another chance',\n", - " 'deve ser amor o que eu estou sentindo',\n", - " 'só pode ser amor que eu estou sentindo',\n", - " \"sure, it is love what i'm feeling\",\n", - " 'aqui agora',\n", - " 'cantando e tocando pra você',\n", - " 'te entretendo',\n", - " 'give another chance, man',\n", - " 'give another chance, man',\n", - " 'give another chance, man',\n", - " 'give another chance, man',\n", - " 'give another chance, man',\n", - " 'give another chance, man',\n", - " 'give another chance, man',\n", - " 'give another chance, man',\n", - " 'somos mais de 20, todos a abardinar',\n", - " 'queremos beber, não queremos pagar',\n", - " 'vamos para a festa cantar e gritar',\n", - " 'vamos fazer merda, peidar e arrotar',\n", - " 'expulsos do bar',\n", - " 'fomos postos a andar',\n", - " 'expulsos do bar',\n", - " 'mas haveremos de voltar',\n", - " 'expulsos do bar',\n", - " 'fomos postos a andar',\n", - " 'expulsos do bar',\n", - " 'mas haveremos de voltar',\n", - " 'entupimos a privada, mijamos no balcão',\n", - " 'o patrão com tanta agitação',\n", - " 'chama a polícia pra nos por a andar',\n", - " 'vamos dar a fuga, mas haveremos de voltar',\n", - " 'expulsos do bar',\n", - " 'fomos postos a andar',\n", - " 'expulsos do bar',\n", - " 'mas haveremos de voltar',\n", - " 'expulsos do bar',\n", - " 'fomos postos a andar',\n", - " 'expulsos do bar',\n", - " 'mas haveremos de voltar',\n", - " 'expulsos do bar',\n", - " 'fomos postos a andar',\n", - " 'expulsos do bar',\n", - " 'mas haveremos de voltar',\n", - " 'expulsos do bar',\n", - " 'fomos postos a andar',\n", - " 'expulsos do bar',\n", - " 'mas haveremos de voltar',\n", - " 'where is the land of light?',\n", - " 'i think this light is a lie',\n", - " 'a luz me derrete em lágrimas',\n", - " 'me afogando',\n", - " 'do que restou eu sou',\n", - " 'só me restou o amor',\n", - " 'e o que sou',\n", - " 'desapareci',\n", - " 'from all the drugs the one i like more is music',\n", - " 'from all the junks the one i need more is music',\n", - " 'from all the boys the one i take home is music',\n", - " 'from all the ladies the one i kiss is music',\n", - " 'music is my boyfriend, music is my girlfriend',\n", - " \"music is my dead end, music's my imaginary friend\",\n", - " 'music is my brother, music is my great granddaughter',\n", - " 'music is my sister, music is my favorite mistress',\n", - " 'from all the shit the one i gotta buy is music',\n", - " 'from all the jobs the one i choose is music',\n", - " 'from all the drinks i get drunk off music',\n", - " 'from all the bitches the one i wanna be is music',\n", - " 'music is my beach house, music is my hometown',\n", - " \"music is my king size bed, music's where i meet my friends\",\n", - " 'music is my hot hot bath, music is my hot hot sex',\n", - " \"music is my back rub, my music is where i'd like you to touch\",\n", - " 'claro que sim, fui escoteira-mirim',\n", - " 'direto da escola, nao, nao ia cheirar cola',\n", - " 'nem basquete, pebolim',\n", - " 'o que eu gosto não é de graça, o que gosto não é farsa',\n", - " 'tem guitarra, bateria, computador saindo som',\n", - " 'alguns dizem que é mais alto que um furacão',\n", - " 'perto dele eu podia sentir',\n", - " 'saía de seu olho e chegava em mim',\n", - " 'sentada do seu lado eu queria encostar',\n", - " 'faria o tigela até o sol raiar',\n", - " 'debaixo do lençol ele gemia em ré bemol',\n", - " 'fiquei tensa, mas tava tudo bem',\n", - " 'ele é fodão, mas eu sei que eu sou também',\n", - " 'ele é fodão, mas eu sei que eu sou também',\n", - " 'ele é fodão, mas eu sei que eu sou também',\n", - " 'ele é fodão, mas eu sei que eu sou também',\n", - " 'ele é fodão, mas eu sei que eu sou também',\n", - " 'sinto que esqueci de te regar',\n", - " 'sem eu você não é nada',\n", - " 'sinto que esqueci de alimentar meu plano',\n", - " 'sem minha parte não vai rolar',\n", - " 'isso não é de boa',\n", - " 'não é de boa',\n", - " 'an accidental lover just makes me think of how the surface’s so above us',\n", - " 'it remains in my balcony and i can’t throw away',\n", - " 'this vision it is now my friend',\n", - " 'it made me',\n", - " 'não é de boa',\n", - " 'não é de boa',\n", - " 'an accidental lover just makes me think of how the surface’s so above us',\n", - " 'it remains in my balcony and i can’t throw away',\n", - " 'this vision it is now my friend',\n", - " 'it made me',\n", - " \"dance like nobody's watching\",\n", - " \"dance like nobody's watching\",\n", - " \"dance like nobody's watching\",\n", - " \"dance like nobody's watching\",\n", - " 'tem que sambar (pá pá pá pá)',\n", - " 'tem que amar sem pensar',\n", - " 'cantar bem alto a canção que vem de dentro (pá pá pá pá)',\n", - " 'esse é o juízo final (pá pá)',\n", - " 'em qualquer ritmo ou língua, em qualquer tempo (pá pá pá pá)',\n", - " 'em forma de desabafo ou desatino',\n", - " 'quebrar a métrica lógica ótica (pá pá pá pá)',\n", - " \"nobody's watching!\",\n", - " \"dance like nobody's watching\",\n", - " \"dance like nobody's watching (nobody, nobody)\",\n", - " \"dance like nobody's watching\",\n", - " \"dance like nobody's watching\",\n", - " 'dance como se ninguém pudesse te ver',\n", - " 'ame como se você nunca fosse sofrer',\n", - " 'cante como se ninguém pudesse te ouvir',\n", - " 'viva como se o paraíso fosse aqui',\n", - " 'dance como se ninguém pudesse te ver',\n", - " 'ame como se você nunca fosse sofrer',\n", - " 'cante como se ninguém pudesse te ouvir',\n", - " 'viva como se o paraíso fosse aqui',\n", - " \"dance like nobody's watching (nobody, nobody)\",\n", - " \"dance like nobody's watching (yeah, nobody's watching)\",\n", - " \"dance like nobody's watching\",\n", - " \"dance like nobody's watching (nobody's watching)\",\n", - " 'ena pá quê que foi que te deu?',\n", - " 'foi o sono que me venceu...',\n", - " 'viste paris não te convenceu?',\n", - " 'sim sim sim se me convenceu!',\n", - " 'i love to play in this country',\n", - " 'here in canadá',\n", - " \"bajula p'ra cima\",\n", - " \"palminhas p'ra cá\",\n", - " 'foi o sono que te venceu',\n", - " 'foi o resto que me bateu',\n", - " 'já deste mais voltas ao mundo do que eu',\n", - " 'já dei, já dei, depressa fui eu!',\n", - " 'i love to play in this country',\n", - " 'here in canadá',\n", - " \"bajula p'ra cima\",\n", - " \"palminhas p'ra cá\",\n", - " 'i love to play in this country',\n", - " 'here in canadá',\n", - " \"bajula p'ra cima\",\n", - " \"palminhas p'ra cá\",\n", - " 'i love to play in this country',\n", - " 'here in canadá',\n", - " \"bajula p'ra cima\",\n", - " \"palminhas p'ra cá\",\n", - " '---- 歌詞 / lyrics ----',\n", - " 'あきらめちゃっていいのに',\n", - " 'やめちゃえって思うのに',\n", - " '逃げ出すことさえできなくて',\n", - " 'フラフラ、フラフラ',\n", - " '自信が無くてそのせいで',\n", - " '自分自身も出せなくて',\n", - " '自信無くしてスパイラル',\n", - " 'グルグル、グルグル',\n", - " 'でも出逢えたから',\n", - " 'もう見失わないよ',\n", - " '笑顔があれば、',\n", - " 'いらない何も',\n", - " '豪華な品も',\n", - " '派手な飾りも、',\n", - " 'いらないから',\n", - " '食卓囲もう',\n", - " '昨日のミスも',\n", - " '不安な明日も',\n", - " '添えて',\n", - " 'ねぇ、いらない何も',\n", - " '凝った味付けも',\n", - " 'シャレた盛り付けも、',\n", - " 'いらないから',\n", - " '涙の味はもう',\n", - " 'しょっぱいとしても',\n", - " '最後にいつも',\n", - " '笑えたら',\n", - " 'それがスパイス',\n", - " '気持ちが着いて行かなくて',\n", - " '立ち止まってしまうのに',\n", - " '明日は待ってくれなくて',\n", - " 'ハラハラ、ハラハラ',\n", - " '痛いくらい掌(て)合わせて',\n", - " '震える手ぐっとおさえて',\n", - " 'どきどき、胸の速さで',\n", - " 'どんどん、進めたらいいな',\n", - " '思いきり泣いて',\n", - " '思いきり笑おう',\n", - " '一緒にいれば',\n", - " 'いらない何も',\n", - " 'ウソ\\\\の笑顔も',\n", - " '強がりならもう、',\n", - " 'いらないから',\n", - " '小さくたたもう',\n", - " '弱さもグチも',\n", - " '棚の奥にでも、置いて',\n", - " 'ねぇ、いらない何も',\n", - " 'その香り付けも',\n", - " '無理な色付けも、',\n", - " 'いらないから',\n", - " '素材のままじゃもう',\n", - " '足りないとしても',\n", - " '飾らずいつも',\n", - " '笑えたら',\n", - " 'どんな人混みでも',\n", - " 'ひとりだったけど',\n", - " '今はひとりだとしても、',\n", - " '孤独なんかじゃない',\n", - " '笑顔があれば、',\n", - " 'いらない何も',\n", - " '豪華な品も',\n", - " '派手な飾りも、いらないから',\n", - " '食卓囲もう',\n", - " '昨日のミスも',\n", - " '不安な明日も',\n", - " '添えて',\n", - " 'ねぇ、いらない何も',\n", - " '凝った味付けも',\n", - " 'シャレた盛り付けも、',\n", - " 'いらないから',\n", - " '涙の味はもう',\n", - " 'しょっぱいとしても',\n", - " '最後にいつも',\n", - " '笑えたら、',\n", - " '笑えたら、',\n", - " '大切な人と',\n", - " '笑えたら、',\n", - " '何よりも、',\n", - " 'それがスパイス',\n", - " '---- ローマ字 / romaji ----',\n", - " 'akiramechatte ii no ni',\n", - " 'yamechae tte omou no ni',\n", - " 'nigedasu koto sae dekinakute',\n", - " 'fura fura, fura fura',\n", - " 'jishin ga nakute sono sei de',\n", - " 'jibun jishin mo dasenakute',\n", - " 'jishin nakushite supairaru',\n", - " 'guru guru, guru guru',\n", - " 'demo deaeta kara',\n", - " 'mou miushinawanai yo',\n", - " 'egao ga areba',\n", - " 'iranai nani mo',\n", - " 'gouka na shina mo',\n", - " 'hade na kazari mo',\n", - " 'iranai kara',\n", - " 'shokutaku kakomou',\n", - " 'kinou no misu mo',\n", - " 'fuan na asu mo',\n", - " 'soete',\n", - " 'nee, iranai nani mo',\n", - " 'kotta ajitsuke mo',\n", - " 'shareta moritsuke mo',\n", - " 'iranai kara',\n", - " 'namida no aji wa mou',\n", - " 'shoppai to shite mo',\n", - " 'saigo ni itsumo',\n", - " 'waraetara',\n", - " 'sore ga supaisu',\n", - " 'kimochi ga tsuite ikanakute',\n", - " 'tachidomatte shimau no ni',\n", - " 'ashita wa matte kurenakute',\n", - " 'hara hara, hara hara',\n", - " 'itai kurai te awasete',\n", - " 'furueru te gutto osaete',\n", - " 'doki doki, mune no hayasa de',\n", - " 'don don, susumetara ii na',\n", - " 'omoikiri naite',\n", - " 'omoikiri waraou',\n", - " 'issho ni ireba',\n", - " 'iranai nani mo',\n", - " 'uso no egao mo',\n", - " 'tsuyogari nara mou',\n", - " 'iranai kara',\n", - " 'chiisaku tatamou',\n", - " 'yowasa mo guchi mo',\n", - " 'tana no oku ni demo, oite',\n", - " 'nee, iranai nani mo',\n", - " 'sono kaorizuke mo',\n", - " 'muri na irozuke mo',\n", - " 'iranai kara',\n", - " 'sozai no mama ja mou',\n", - " 'tarinai to shite mo',\n", - " 'kazarazu itsumo',\n", - " 'waraetara',\n", - " 'donna hitogomi demo',\n", - " 'hitori datta kedo',\n", - " 'ima wa hitori dato shite mo',\n", - " 'kodoku nanka ja nai',\n", - " 'egao ga areba',\n", - " 'iranai nani mo',\n", - " 'gouka na shina mo',\n", - " 'hade na kazari mo, iranai kara',\n", - " 'shokutaku kakomou',\n", - " 'kinou no misu mo',\n", - " 'fuan na asu mo',\n", - " 'soete',\n", - " 'nee, iranai nani mo',\n", - " 'kotta ajitsuke mo',\n", - " 'shareta moritsuke mo',\n", - " 'iranai kara',\n", - " 'namida no aji wa mou',\n", - " 'shoppai to shite mo',\n", - " 'saigo ni itsumo',\n", - " 'waraetara',\n", - " 'waraetara',\n", - " 'taisetsu na hito to',\n", - " 'waraetara',\n", - " 'nani yori mo',\n", - " 'sore ga supaisu',\n", - " '---- 英語訳/english ----',\n", - " \"though it'd be fine if i were to give up...\",\n", - " \"though i'm thinking i should just quit...\",\n", - " \"i can't even run away;\",\n", - " 'so unsteady, so unsteady...',\n", - " 'at the fault of my having no confidence',\n", - " \"i'm unable to even express myself\",\n", - " 'which makes me lose my confidence... in a spiral',\n", - " 'spinning, spinning...',\n", - " \"but now that we've met\",\n", - " \"i won't lose sight of it again!\",\n", - " 'if i have a smile',\n", - " \"i don't need a single thing;\",\n", - " \"i don't need\",\n", - " 'expensive things',\n", - " 'or flashy jewellery',\n", - " \"let's gather around the dinner table\",\n", - " 'setting spaces for',\n", - " \"yesterday's mistakes\",\n", - " 'and uncertain tomorrows',\n", - " \"y'know, i don't need a thing;\",\n", - " \"i don't need\",\n", - " 'exquisite flavors',\n", - " 'or fancy presentation',\n", - " 'even if the taste of tears',\n", - " 'is salty -',\n", - " 'in the end',\n", - " 'if you can still smile',\n", - " \"that's spice\",\n", - " \"my feelings just can't keep up\",\n", - " 'and i end up stopping along the way',\n", - " \"but tomorrow just won't wait for me\",\n", - " 'so exasperated, so exasperated...',\n", - " \"joining hands 'til it hurts;\",\n", - " 'keeping our shaking hands steady -',\n", - " \"it'd be nice if we could keep moving forward\",\n", - " 'at the speed of the beating hearts!',\n", - " \"let's cry with all our might...\",\n", - " 'and laugh with all our might!',\n", - " \"if we're together\",\n", - " \"i don't need a single thing;\",\n", - " \"i don't need any more\",\n", - " 'fake smiles',\n", - " 'or false pride',\n", - " \"let's tidily fold away\",\n", - " 'weaknesses and complaints',\n", - " 'storing them away in the back of a drawer',\n", - " \"y'know, i don't need a thing;\",\n", - " \"i don't need\",\n", - " 'that extra aroma',\n", - " 'or unnecessary coloring',\n", - " 'even if just the ingredients alone',\n", - " 'is not enough',\n", - " 'if without decoration',\n", - " 'you can still smile...',\n", - " 'no matter the group of people',\n", - " \"i've been alone;\",\n", - " \"even if i'm still alone now\",\n", - " \"i'm not lonely in the slightest!\",\n", - " 'if i have a smile',\n", - " \"i don't need a single thing;\",\n", - " \"i don't need\",\n", - " 'expensive things',\n", - " 'or flashy jewellery',\n", - " \"let's gather around the dinner table\",\n", - " 'setting spaces for',\n", - " \"yesterday's mistakes\",\n", - " 'and uncertain tomorrows',\n", - " \"y'know, i don't need a thing;\",\n", - " \"i don't need\",\n", - " 'exquisite flavors',\n", - " 'or fancy presentation',\n", - " 'even if the taste of tears',\n", - " 'is salty -',\n", - " 'in the end',\n", - " 'if you can still smile',\n", - " 'if you can still smile',\n", - " 'with people precious to you...',\n", - " 'if you can still smile',\n", - " 'then above all else',\n", - " \"that's spice\",\n", - " '---- italiano ----',\n", - " 'anche se starei meglio arrendendomi...',\n", - " 'nonostante stia pensando di smetterla...',\n", - " 'non riesco neanche a scappare;',\n", - " 'così instabile, così incerto...',\n", - " 'in colpa per la mancanza di confidenza',\n", - " 'non riesco nemmeno ad esprimermi',\n", - " 'e perdo altra confidenza... come in una spirale',\n", - " 'gira, gira...',\n", - " 'ma ora che ci siamo incontrarti',\n", - " 'non la perderò più di vista!',\n", - " 'finché ho il sorriso',\n", - " \"non ho bisogno d'altro;\",\n", - " 'non mi servono',\n", - " 'cose costose',\n", - " 'o gioielli vistosi',\n", - " 'stringiamoci intorno al tavolo di cucina',\n", - " 'sistemando le spezie',\n", - " 'per gli erorri del passato',\n", - " 'e un futuro incerto',\n", - " 'sai, non mi serve nulla;',\n", - " 'non ho bisogno di',\n", - " 'sapori squisiti',\n", - " 'o presentazioni decorate',\n", - " 'anche se le lacrime',\n", - " 'sono salate -',\n", - " 'alla fine',\n", - " 'se riesci ancora a sorridere',\n", - " 'è grazie alle spezie',\n", - " 'i miei sentimenti non ce la fanno',\n", - " 'e mi fermo a metà strada',\n", - " 'il futuro non mi aspetterà',\n", - " 'sono esasperata, sono spazientita...',\n", - " 'stringiamo le mani finché fa male;',\n", - " 'teniamo ferme le mani quando tremano -',\n", - " 'sarebbe bello se potessimo andare avanti',\n", - " 'alla velocità di un cuore che batte!',\n", - " 'piangiamo più forte che possiamo...',\n", - " 'e facciamo lo stesso ridendo!',\n", - " 'se siamo insieme',\n", - " \"non ho bisogno d'altro;\",\n", - " 'non mi servono altre cose',\n", - " 'falsi sorrisi',\n", - " 'o falsi orgogli',\n", - " 'mettiamo via con cura',\n", - " 'debolezze e malesseri',\n", - " 'chiudendoli sul fondo di un cassetto',\n", - " 'sai, non mi serve nulla;',\n", - " 'non ho bisogno di',\n", - " 'quel sapore in più',\n", - " 'o colori non necessari',\n", - " 'anche se gli ingredienti da soli',\n", - " 'non sono abbastanza',\n", - " 'se senza decorazioni',\n", - " 'riesci ancora a sorridere...',\n", - " 'non importa quante persone ci fossero',\n", - " 'mi sono sentita sola;',\n", - " 'e anche se lo sono ancora',\n", - " 'non mi sento affatto sola!',\n", - " 'se ho il sorriso',\n", - " \"non ho bisogno d'altro;\",\n", - " 'non mi servono',\n", - " 'cose costose',\n", - " 'o gioielli vistosi',\n", - " 'stringiamoci intorno al tavolo di cucina',\n", - " 'sistemando le spezie',\n", - " 'per gli erorri del passato',\n", - " 'e un futuro incerto',\n", - " 'sai, non mi serve nulla;',\n", - " 'non ho bisogno di',\n", - " 'sapori squisiti',\n", - " 'o presentazioni decorate',\n", - " 'anche se le lacrime',\n", - " 'sono salate -',\n", - " 'alla fine',\n", - " 'se riesci ancora a sorridere',\n", - " 'se riesci ancora a sorridere',\n", - " 'con le persone a te care...',\n", - " 'se riesci ancora a sorridere',\n", - " 'allora, soprattutto...',\n", - " 'è grazie alle spezie',\n", - " '---- português ----',\n", - " 'apesar de que não teria problema se eu desistisse...',\n", - " 'apesar de estar pensando em sair...',\n", - " 'eu não posso nem fugir;',\n", - " 'tão instável, tão instável..',\n", - " 'por eu não ter auto-confiança',\n", - " 'eu não consigo nem me expressar',\n", - " 'que por sua vez me faz perder a auto-confiança... em um ciclo vicioso',\n", - " 'girando, girando...',\n", - " 'mas agora que nós nos encontramos',\n", - " 'não vou mais me perder novamente!',\n", - " 'se eu tiver um sorriso',\n", - " 'eu não preciso de mais nada;',\n", - " 'coisas caras',\n", - " 'ou jóias chamativas',\n", - " 'não preciso de nada disso',\n", - " 'vamos nos juntar na mesa de jantar',\n", - " 'dando espaço para',\n", - " 'os erros de ontem',\n", - " 'e incertezas de amanhãs',\n", - " 'sabe, eu não preciso de mais nada;',\n", - " 'de sabores requintados',\n", - " 'ou de decoração extravante',\n", - " 'não preciso de nada disso',\n", - " 'até o gosto das lágrimas',\n", - " 'é salgado -',\n", - " 'no final',\n", - " 'se você conseguir sorrir',\n", - " 'esse é o tempero',\n", - " 'meus sentimentos não conseguem acompanhar',\n", - " 'e acabo parando no meio do caminho',\n", - " 'mas o amanhã não vai esperar por mim',\n", - " 'tão irritado, tão irritado...',\n", - " 'segurando as mãos até doer;',\n", - " 'mantendo nossas mãos trêmulas estáveis -',\n", - " 'seria legal se conseguíssemos seguir em frente',\n", - " 'na velocidade dos corações batendo!',\n", - " 'vamos chorar com todas as forças...',\n", - " 'e gargalhar com todas as forças...',\n", - " 'se estivermos juntos',\n", - " 'eu não preciso de mais nada;',\n", - " 'sorrisos falsos',\n", - " 'ou orgulho forçado',\n", - " 'não preciso de nada disso',\n", - " 'vamos dobrar organizadamente',\n", - " 'as fraquezas e reclamações',\n", - " 'guardando-as no fundo de uma gaveta',\n", - " 'sabe, não preciso de mais nada;',\n", - " 'daquele aroma extra',\n", - " 'ou de cores desnecessárias',\n", - " 'não preciso de nada disso',\n", - " 'mesmo se somente os ingredientes',\n", - " 'não forem suficientes',\n", - " 'se estiver sem decoração',\n", - " 'você ainda pode sorrir...',\n", - " 'não importa o grupo de pessoas',\n", - " 'sempre estive sozinho;',\n", - " 'mesmo se ainda estiver sozinho agora',\n", - " 'não estou nem um pouco solitário!',\n", - " 'se eu tiver um sorriso',\n", - " 'não preciso de mais nada;',\n", - " 'coisas caras',\n", - " 'ou jóias chamativas',\n", - " 'não preciso de nada disso',\n", - " 'vamos nos juntar na mesa de jantar',\n", - " 'dando espaço para',\n", - " 'os erros de ontem',\n", - " 'e incertezas de amanhã',\n", - " 'sabe, não preciso de mais nada;',\n", - " 'de sabores requintados',\n", - " 'ou de decoração extravagante',\n", - " 'não preciso de nada disso',\n", - " 'mesmo o gosto das lágrimas',\n", - " 'é salgado -',\n", - " 'no final',\n", - " 'se você conseguir sorrir',\n", - " 'se você conseguir sorrir',\n", - " 'com pessoas preciosas para você...',\n", - " 'se você conseguir sorrir',\n", - " 'então acima de tudo',\n", - " 'esse é o tempero',\n", - " 'we born alone, we die alone',\n", - " 'nem precisava sem assim',\n", - " \"can't feel the air inside my lung\",\n", - " 'in the bay area cold breeze',\n", - " 'não acredito, estou sufocando',\n", - " 'eu vou morrer neste lugar',\n", - " 'levei uma vida pra chegar até aqui',\n", - " 'tudo parece se apagar',\n", - " \"where's the air? mom, please help me\",\n", - " \"i'm gonna die in san francisco\",\n", - " 'shit, what an irony',\n", - " \"can't feel my arms, can't feel hands\",\n", - " 'at least i saw that big trees',\n", - " 'este lugar é o mais legal para se morrer',\n", - " 'sim, eu já me convenci',\n", - " 'precisa mesmo ser agora?',\n", - " 'logo na primeira vez?',\n", - " 'call the rescue, call the police',\n", - " 'nós vamos ser deportados',\n", - " 'pra guantánamo ou mofar em alcatraz',\n", - " \"where's the air? mom, please help me\",\n", - " \"i'm gonna die in san francisco\",\n", - " 'shit, what an irony!',\n", - " 'não acredito estou sufocando',\n", - " 'eu vou morrer neste lugar',\n", - " 'levei uma vida pra chegar até aqui',\n", - " 'tudo aparece se apagar',\n", - " \"what i think now? i don't know\",\n", - " 'feel the death, gonna die alone',\n", - " \"i think i'm happy now in this parking lot\",\n", - " 'de tirar o fôlego este visual',\n", - " 'sausalito, the last station',\n", - " 'sausalito, my last breath']},\n", - " 'data': ['hoje você acordou contente sem saber porque',\n", - " 'pensando em mudar tudo, que incomoda você',\n", - " 'hoje é dia, dia de eleição',\n", - " 'mas em que você votará, se só tem ladrão',\n", - " 'não se venda',\n", - " 'não seja burro',\n", - " 'derrube os porcos',\n", - " 'vote nulo',\n", - " 'nome diferentes, partidos diferentes, mas são todos iguais',\n", - " 'eles roubam e enganam cada vez mais',\n", - " 'beijam crianças, fazem comícios nos bairros do subúrbio',\n", - " 'ma exercendo seus cargos se tornarão porcos sujos',\n", - " 'não se venda',\n", - " 'não seja burro',\n", - " 'derrube os porcos',\n", - " 'vote nulo',\n", - " '--------------------------------------------------------------------',\n", - " 'today you woke up glad without knowing why',\n", - " 'thinking about changing everything, what bothers you',\n", - " 'today is the day of election',\n", - " 'but in which you will vote, if you only have a thief',\n", - " \"don't sell yourself\",\n", - " \"don't be dumb\",\n", - " 'tip the pigs',\n", - " 'vote null',\n", - " 'different names, different parties, but they are all alike',\n", - " 'they steal and cheat more and more',\n", - " 'kiss children, hold rallies in suburban neighborhoods',\n", - " 'ma exercising their positions will become dirty pigs',\n", - " 'do not sell',\n", - " 'do not be dumb',\n", - " 'tip the pigs',\n", - " 'vote null',\n", - " 'aicréuqonrevog',\n", - " 'caos e vergonha',\n", - " 'aicréuqonrevog',\n", - " 'uma suja campanha',\n", - " 'aicréuqonrevog',\n", - " 'roubando os trabalhadores',\n", - " 'aicréuqonrevog',\n", - " 'espancando os professores',\n", - " 'aicréuqonrevog',\n", - " 'aicréuqonrevog',\n", - " '-------------------------------',\n", - " 'aicréuqonrevog',\n", - " 'chaos and shame',\n", - " 'aicréuqonrevog',\n", - " 'a dirty campaign',\n", - " 'aicréuqonrevog',\n", - " 'stealing the workers',\n", - " 'aicréuqonrevog',\n", - " 'spanking teachers',\n", - " 'aicréuqonrevog',\n", - " 'aicréuqonrevog',\n", - " 'reconheci... a madonna ali parada no jardim',\n", - " 'não resisti... fui perguntar o que ela achava de mim',\n", - " 'eu não sei falar inglês',\n", - " 'ela não entende uma palavra em português',\n", - " 'i saw you saying that you say that you saw (i saw you saying)',\n", - " 'i saw you saying that you say that you saw (i feel good)',\n", - " 'i feel good because you put your butt on me',\n", - " 'i feel good because you put your butt on me',\n", - " 'perguntei para o meu pai',\n", - " 'o que ela me disse',\n", - " '\"ela disse, meu rapaz...\"',\n", - " 'i saw you saying that you say that you saw (i saw you saying)',\n", - " 'i saw you saying that you say that you saw (i feel good)',\n", - " 'i feel good because you put your butt on me',\n", - " 'i feel good because you put your butt on me',\n", - " 'i feel good because you put your butt on...',\n", - " 'the hula hula song make me feel so strong',\n", - " \"the hula hula hey, goodbye i'm going away\",\n", - " 'the hula hula song make me feel so strong',\n", - " \"the hula hula hey, goodbye i'm going away (a há)\",\n", - " 'because you put your butt on me (a há)',\n", - " 'you know you put your butt on me (a há)',\n", - " 'you know you put your butt on me',\n", - " 'shalalala yeah yeah yeah yeah yeah',\n", - " 'coiote esmaga a serpente',\n", - " 'essa cena neutral',\n", - " 'nostálgico faminto',\n", - " 'sem real',\n", - " 'sem real',\n", - " 'prime agora',\n", - " 'o detonador principal',\n", - " 'vamos coragem',\n", - " 'meu general',\n", - " 'atirador de elite',\n", - " 'eléctrico animal',\n", - " 'a vítima na arena',\n", - " 'atiro de escape',\n", - " 'prime agora',\n", - " 'o detonador principal',\n", - " 'vamos coragem',\n", - " 'meu general',\n", - " 'deserto mental',\n", - " 'dominó letal',\n", - " 'deserto mental',\n", - " 'rebenta com tudo',\n", - " 'holocausto final',\n", - " 'vamos coragem',\n", - " 'meu general',\n", - " 'ai como é doloroso',\n", - " 'acordar morto',\n", - " 'ai como é doloroso',\n", - " 'acordar morto',\n", - " 'neste planeta deserto',\n", - " 'ai como é doloroso',\n", - " 'acordar morto',\n", - " 'neste planeta deserto',\n", - " 'ai como é doloroso',\n", - " 'acordar morto',\n", - " 'neste planeta deserto',\n", - " 'ai como é doloroso',\n", - " 'acordar morto',\n", - " 'neste planeta deserto',\n", - " 'ai como é doloroso',\n", - " 'acordar morto',\n", - " 'neste planeta deserto',\n", - " 'ai como é doloroso',\n", - " 'acordar morto',\n", - " 'free as a fast fish in the blue aspace',\n", - " 'livre como um peixe rápido no azul espaço',\n", - " 'free with an adrift message',\n", - " 'livre como uma mensagem à deriva',\n", - " 'inside of a bottle (crossing the seas)',\n", - " 'dentro de uma garrafa (cruzando os mares)',\n", - " 'freedom is weitten in the letters',\n", - " 'liberdade está escrito nas cartas',\n", - " 'feedom for the ones that got faith',\n", - " 'liberdade para todo que crê',\n", - " 'but the enemies want metal chains',\n", - " 'mas os inimigos querem grilhões',\n", - " 'and the prayers of the past',\n", - " 'e as preces do passado',\n", - " 'the old ladies in novena',\n", - " 'as velhas senhoras em novena',\n", - " 'against the brave navigator',\n", - " 'contra o valente navegador',\n", - " 'in a fight between bales and... freedom',\n", - " 'numa luta entre fardos e a... liberdade',\n", - " 'free as a noble bird in the infinite blue',\n", - " 'livre como um pássaro nobre no azul infinito',\n", - " 'free as the wind impelling',\n", - " 'livre como o vento impulsionado',\n", - " 'the traveling message (crossing seaquakes)',\n", - " 'a mensagem viajante (cruzando maremotos)',\n", - " 'freedom was wnat i read in the letters',\n", - " 'liberdade foi o que eu li nas cartas',\n", - " 'freedom if you got faith',\n", - " 'liberdade se tão somente crer',\n", - " 'religiões inúteis',\n", - " 'é só lavagem cerebral',\n", - " 'podridão escondida',\n", - " 'na sua falsa moral',\n", - " 'imprensa sensacionalista',\n", - " 'impondo sua verdade',\n", - " 'iludindo milhares',\n", - " 'por toda eternidade',\n", - " 'por todos os lados',\n", - " 'o mundo nos sufoca',\n", - " 'são os donos da verdade',\n", - " 'de uma sociedade hipócrita',\n", - " 'roubando nossa liberdade',\n", - " 'governos egoístas',\n", - " 'abusando da autoridade',\n", - " 'nações contra nações',\n", - " 'foda-se a humanidade',\n", - " 'multinacionais irresponsáveis',\n", - " 'vendendo seu produto',\n", - " 'mais e mais dinheiro',\n", - " 'é um genocídio absurdo',\n", - " '---------------------------------',\n", - " 'useless religions',\n", - " \"it's just brainwashing\",\n", - " 'hidden rot',\n", - " 'in his false morality',\n", - " 'sensationalist press',\n", - " 'imposing your truth',\n", - " 'deceiving thousands',\n", - " 'for all eternity',\n", - " 'all over the place',\n", - " 'the world suffocates us',\n", - " 'they are the owners of truth',\n", - " 'of a hypocritical society',\n", - " 'stealing our freedom',\n", - " 'selfish governments',\n", - " 'abusing authority',\n", - " 'nations against nations',\n", - " 'fuck humanity',\n", - " 'irresponsible multinational companies',\n", - " 'selling your product',\n", - " 'more and more money',\n", - " 'it’s an absurd genocide',\n", - " \"desd'o dia em que eu olhei pra tu\",\n", - " 'logo vi que era \"i love you\"',\n", - " 'mas como eu nao sei falar inglês',\n", - " 'é assim que eu canto pra vocês',\n", - " \"giving on, i can't say\",\n", - " 'ah, what you gonna do? i watch you gone away',\n", - " \"i can't say\",\n", - " 'ah, what you gonna do? i watch you gone away',\n", - " 'lembro o dia em que você falou',\n", - " \"i don't, i don't, i don't, i don't know\",\n", - " 'quem diria que hoje a gente sai',\n", - " 'e você não quer dizer, \"goodbye\"',\n", - " \"giving on, i can't say\",\n", - " 'ah, what you gonna do? i watch you gone away',\n", - " \"i can't say\",\n", - " 'ah, what you gonna do? i watch you gone away',\n", - " \"i can't say\",\n", - " 'ah, what you gonna do? i watch you gone away',\n", - " \"i can't say\",\n", - " 'ah, what you gonna do? i watch you gone away',\n", - " 'lembro o dia em que você falou',\n", - " \"i don't, i don't, i don't, i don't know\",\n", - " 'quem diria que hoje a gente sai',\n", - " 'e você não quer dizer, \"goodbye\"',\n", - " \"giving on, i can't say\",\n", - " 'ah, what you gonna do? i watch you gone away',\n", - " \"i can't say\",\n", - " 'ah, what you gonna do? i watch you gone away',\n", - " \"i can't say\",\n", - " 'ah, what you gonna do? i watch you gone away',\n", - " \"i can't say\",\n", - " 'ah, what you gonna do? i watch you gone away',\n", - " 'multinacionais cercam',\n", - " 'toda nossa nação',\n", - " 'cercam todo continente',\n", - " 'criando total insatisfação',\n", - " 'aprisionam o povo',\n", - " 'em sua ignorância',\n", - " 'sujam nossas bandeiras',\n", - " 'em nome da ganância',\n", - " 'vamos enfrentar',\n", - " 'vamos reagir',\n", - " 'vamos nos unir',\n", - " 'em um',\n", - " 'temos que lutar',\n", - " 'não vamos fugir',\n", - " 'pois nos somos',\n", - " 'a américa do sul',\n", - " 'nós somos o terceiro mundo!',\n", - " 'nós somos a américa do sul!',\n", - " 'nós somos o terceiro mundo!',\n", - " 'nós somos a américa do sul!',\n", - " '-----------------------------------',\n", - " 'multinational companies surround',\n", - " 'our whole nation',\n", - " 'surround all the continent',\n", - " 'creating total dissatisfaction',\n", - " 'they imprison the people',\n", - " 'in their ignorance',\n", - " 'they dirty our flags',\n", - " 'in the name of greed',\n", - " \"let's face it\",\n", - " \"let's react\",\n", - " \"let's unite\",\n", - " 'in one',\n", - " 'we have to fight',\n", - " \"we won't run away\",\n", - " 'because we are',\n", - " 'the south america',\n", - " 'we are the third world!',\n", - " 'we are the south america!',\n", - " 'we are the third world!',\n", - " 'we are thesouth america!']}}},\n", - " 'sl': {'sentence': {'pop': {'meta': {'train_data': ['my segodnja v poezd seli',\n", - " 'my davno uže hoteli',\n", - " 'otorvatʹsja v niderlandah',\n", - " 'posmotretʹ na čudesah, ha-ha-ha',\n", - " 'tonight i go to have the time of my life',\n", - " 'i go to...',\n", - " 'ha ha ha ha ha !',\n", - " 'dope shit, marihuana!',\n", - " 'vam privet iz amsterdama!',\n", - " 'dope shit, marihuana!',\n", - " 'vam privet iz amsterdama!',\n", - " 'mʹ v sojuze dolgo žili',\n", - " 'žili-byli, ne tužili',\n", - " 'pionerami my bili -',\n", - " 'budʹ gotov! (vsegda gotov!)',\n", - " 'tonight i go to have the time of my life',\n", - " 'i go to...',\n", - " 'ha ha ha ha ha !',\n", - " 'dope shit, marihuana!',\n", - " 'vam privet iz amsterdama!',\n", - " 'dope shit, marihuana!',\n", - " 'vam privet iz amsterdama!',\n", - " 'lailailalalalai',\n", - " 'my prekrasno otorvalisʹ',\n", - " 'noči ? ne doždalisʹ',\n", - " 'nadoeli diskoteki',\n", - " 'podavaj nam kazačok - čok-čok - ura!',\n", - " 'tonight i go to have the time of my life',\n", - " 'i go to...',\n", - " 'uh ha uh ha uh !',\n", - " 'dope shit, marihuana!',\n", - " 'vam privet iz amsterdama!',\n", - " 'dope shit, marihuana!',\n", - " 'vam privet iz amsterdama!',\n", - " 'dope shit, marihuana!',\n", - " 'vam privet iz amsterdama!',\n", - " 'dope shit, marihuana!',\n", - " 'vam privet iz amsterdama!',\n", - " 'uh ha hmhm ura !',\n", - " 'lailailailalalalai ×4',\n", - " 'laibach',\n", - " 'ljubljana zagreb beograd',\n", - " 'zavedali so se - poparjen je odsel i',\n", - " '(they have been aware - scalded he left i)',\n", - " 'zavedali so se they have been aware',\n", - " '_odsel je_ _he left_',\n", - " 'da je treba that it is necessary',\n", - " '_poparjen je odsel_ _scalded he left_',\n", - " 'njegove izjave pripisati his statements acribe',\n", - " '_odsel je_ _he left_',\n", - " 'nevednosti to ignorance',\n", - " '_poparjen je odsel_ _scalded he left_',\n", - " 'zlobni propagandi malicious propaganda',\n", - " '_odsel je_ _he left_',\n", - " 'zavedali so se they have been aware',\n", - " '_poparjen je odsel_ _scalded he left_',\n", - " 'absurdnosti njegovega zadrzanja the absurdity of his restraint',\n", - " '_odsel je_ _he left_',\n", - " 'zavedali so se they have been aware',\n", - " '_poparjen je odsel_ _scalded he left_',\n", - " 'da je treba that it is necessary',\n", - " '_odsel je_ _he left_',\n", - " 'napraviti konec to bring to an end',\n", - " '_poparjen je odsel_ _scalded he left_',\n", - " 'takemu stanju stvari the present state of things',\n", - " '_odsel je_ _he left_',\n", - " 'za svoje necedne cilje for their dirty aims',\n", - " '_poparjen je odsel_ _scalded he left_',\n", - " 'kot orozje reakcije as the weapon of reaction',\n", - " '_odsel je_ _he left_',\n", - " 'proti duhu napredka nasega judstva against the spirit of progress of our nation',\n", - " '_poparjen je odsel_ _scalded he left_',\n", - " 'zavedali so se they have been aware',\n", - " '_odsel je_ _he left_',\n", - " 'ostati zvesti nasi preteklosti to stay faithful to our past',\n", - " '_poparjen je odsel_ _scalded he left_',\n", - " 'to je ta kraj brez porazov',\n", - " 'tu ni več praznih obljub',\n", - " 'ni obnemelih izrazov',\n", - " 'sledi obdobje miru',\n", - " 'ne bomo pili le vode',\n", - " 'in jedli same soli',\n", - " 'izbrisane vse tegobe',\n", - " 'samo veselje zori',\n", - " 'za nas',\n", - " 'skrbi',\n", - " 'dovolj',\n", - " 'krvi',\n", - " 'predan',\n", - " 'ponos',\n", - " 'zavest',\n", - " 'v nas',\n", - " 'kdor gleda...',\n", - " 'kdor gleda nas iz pekla',\n", - " 'naj vidi kdo je del neba',\n", - " 'nikdar nas več ne boli',\n", - " 'doma na zemlji čudežni',\n", - " 'ne kdaremo več bogatim',\n", - " 'sami postajamo to',\n", - " 'nobenih bojev predati',\n", - " 'ne bo potrebno jih ne bo',\n", - " 'prenehala je morija',\n", - " 'izginilo je to zlo',\n", - " 'začela se je idila',\n", - " 'začelo se je lepo',\n", - " 'kdor gleda...',\n", - " 'kdor gleda nas iz pekla',\n", - " 'naj vidi kdo je del neba',\n", - " 'nikdar nas več ne boli',\n", - " 'doma na zemlji čudežni',\n", - " '------------------------------------',\n", - " 'this is that place without defeat',\n", - " 'there are no more empty promises',\n", - " 'nor meaningless expressions followed by a period of peace',\n", - " 'we do not just drink water',\n", - " 'nor only eat salt',\n", - " 'erase all troubles',\n", - " 'only joy dawns',\n", - " 'for us',\n", - " 'care',\n", - " 'enough',\n", - " 'for our blood',\n", - " 'devoted to',\n", - " 'the pride of',\n", - " 'consciousness',\n", - " 'to us',\n", - " 'whoever watches ...',\n", - " 'whoever watches us from hell',\n", - " 'to see who is part of the sky',\n", - " 'us never longer do not hurt',\n", - " 'at home on earth wondrous',\n", - " 'do not steal longer riches',\n", - " 'we ourselves become thor',\n", - " 'no battles to give up',\n", - " 'will not have to them will not',\n", - " 'halted the seas',\n", - " 'gone was the evil',\n", - " 'into the scenery',\n", - " 'it started well',\n", - " 'whoever watches ...',\n", - " 'whoever watches us from hell',\n", - " 'to see who is part of the sky',\n", - " 'we no longer hurt',\n", - " 'at home on earth wondrous',\n", - " 'se omazich, mila majko',\n", - " 'zaj momche se pijano',\n", - " 'tak ozenih se, se zarobych',\n", - " 'se zachernih, se zapustich',\n", - " 'denem pie, nostem pie',\n", - " 'doma rano ne si ide',\n", - " 'od vechry, tak do zory',\n", - " 'mechanite toj gi redi',\n", - " 'do zory mechanite sheta',\n", - " 'pie vino, s rakie meshe',\n", - " 'shto da pravja, mila majko',\n", - " 'crno mie napisano',\n", - " 'so pesnjata, mila majko',\n", - " 'toj zorata si e cheka',\n", - " 'a ja doma kato moma',\n", - " 'vo postela meka leza',\n", - " 'zashto, majko, ti me rodi',\n", - " 'so pijanec vek me gory',\n", - " 's pogled, majko, ja zogorech',\n", - " 'bujna mladost az izgorih',\n", - " 'kato ptica-kukuvica',\n", - " 'vo postela meka leza',\n", - " 'cjala nost placha, makimacha',\n", - " 'mila majko, ja ste begam',\n", - " 'vutre v tumnata gora na vitosha, pliska kladenche pod ohranata na bay lisan',\n", - " 'sutrin rano na baira s purvite petli, idva cyalo stado s medni pribori',\n", - " 'no bay lisan ne puska vseki da pie ot lechebnata voda',\n", - " 'smurtno bolni ochi se oglezhdat v kristalen vodoley',\n", - " 'i edin sled drug, gniyat i ruzhdyat, hranyat zemyata',\n", - " 'nyama spasenie, dazhe i gorskite idat da gi grumnat',\n", - " 'kum mechok lyutiv i zul, bere siromak ot bogatash',\n", - " 'i go vodyat kum stariya buhul, no yunakut bez podaruk',\n", - " 'abe, yunache, shto si trugnal tui, bez elek, zhiletka i kalpak?',\n", - " '\"slushaite me gorski, nishto e v men, samo umut si moga da vi dam. no tryabva u doma na trapeza da donesa, zabranena vitoshka voda. s koyato mozhe da se vizhda dalechnoto nebe ot staria svyat.\"',\n", - " '\"ela togava da pomudrish s staria buhul',\n", - " 'pa she vidim dali shte pusne pri vulcite.\"',\n", - " 'visoki kushti, kum planina, no ot glina, ne ot kamanak',\n", - " 'mudrosta e leka i lesna, lekotata e mudrost',\n", - " 'istinata e prazna, a bezdelieto mudrost',\n", - " 'v kalni lokvi sa napisani nashte sveti knizha',\n", - " 'edin paisii da beshe tuka, da go mu drasnem daskalo',\n", - " 'i taka nashiat geroy uspya, pusnaha go da pie vitoshka chorba',\n", - " 'no gorskite voinici oshte pazyat stariat taen isvor. koi znae koi shte doide sled vreme?',\n", - " 'mozhe bi edin skromen maniak',\n", - " 'burning and slaying the fucking wisdom',\n", - " 'primitive journey to the stars, where the gods travel and fight. lead us to the lost realms of idleness',\n", - " 'i barval phudela, čhaje',\n", - " 'o bršim perela',\n", - " 'me tut džakerava, čhaje',\n", - " 'mande te ave',\n", - " 'aaa, tuke ka merav',\n", - " 'eee, so na aveja?',\n", - " 'dikhava tut sar aveja',\n", - " 'te mande asaja',\n", - " 'me prastava angle tute',\n", - " 'te čumide man',\n", - " 'aaa, tuke ka merav',\n", - " 'eee, so na aveja?',\n", - " 'pe ulica terđovava',\n", - " 'a tu na aveja',\n", - " 'so na aveja, čhaje mori',\n", - " 'tuke me merav',\n", - " 'aaa, tuke ka merav',\n", - " 'eee, so na aveja?',\n", - " 'laibach',\n", - " 'ljubljana zagreb beograd',\n", - " 'cari amici soldati, jaruzelsky, drzava, svoboda',\n", - " '(dear friends soldiers/jaruzelsky/the state/freedom)',\n", - " 'cari amici soldati dear friends soldiers',\n", - " 'cari amici soldati dear friends soldiers',\n", - " 'i tempi della pace the times of peace',\n", - " 'sono are',\n", - " 'passati! over!',\n", - " 'jaruzelsky jaruzelsky',\n", - " 'general jaruzelsky je imenoval general jaruzelsky proclaimed',\n", - " '31. avgust za dan dela in miru. august 31 as a day of work and peace',\n", - " 'povdarja: \"oblast he emphasizes: \"the authority',\n", - " 'je morda nesimpaticna might be unsympathetic',\n", - " 'a edina nesmrtna pot but the only immortal way',\n", - " 'miru in of peace',\n", - " 'stabilizacije.\" and stabilisation.\"',\n", - " 'svoboda',\n", - " 'v letih najtezjih socialnih in druzbenih prtresov',\n", - " 'v casu gospodarske krize',\n", - " 'je bila teznja',\n", - " 'da se ohrani enotnost in povezanost delavstva',\n", - " 'poglavitna naloga komunistov in zavednih delavcev',\n", - " 'z vkljucitvijo',\n", - " 'brezposelne delavske mladine',\n", - " 'je vse bolj rasel politicni',\n", - " 'in bojevni razmah',\n", - " 'oblikovalo se je javno mnenje...',\n", - " 'zaradi politicnega delovanja',\n", - " 'je oblast',\n", - " 'v letu 1982',\n", - " 'razpustila',\n", - " 'svobodo',\n", - " 'freedom',\n", - " 'in the worst years of social and moral collapse',\n", - " 'at a time of economic crisis',\n", - " 'there was a tendency',\n", - " 'to preserve working class union and unity',\n", - " 'the principal task of communists and aware workers',\n", - " 'incorporating',\n", - " 'unemployed working class youth',\n", - " 'was to step up political',\n", - " 'and militant reaction',\n", - " 'public opinion has been formed...',\n", - " 'due to political activity',\n", - " 'the authority has',\n", - " 'in the year 1982',\n", - " 'cancelled',\n", - " 'freedom',\n", - " 'sto posto te ljubam, sto posto e da',\n", - " 'a nadež da gubam jas nemam namera',\n", - " 'sto posto te ljubam, sto posto e da',\n", - " 'i pak kje ti rečam da jas sum uporna',\n", - " 'sto posto te ljubam, sto posto e da',\n", - " 'a nadež da gubam jas nemam namera',\n", - " 'sto posto te ljubam, sto posto e da',\n", - " 'i pak kje ti rečam da jas sum uporna',\n", - " 'ko bajadera sladok e, sladok e, sladok žimi se',\n", - " \"a koga kje te pogledne, dali e slučajno il' ne?\",\n", - " 'večerva kje go osvojam, na uvce kje mu došepnam',\n", - " 'za da go potsetam',\n", - " 'ne, nemoj da zaboraviš, na dzidot pokraj krevetot',\n", - " 'slika od vesnikot da isečeš i da me uramiš',\n", - " 'i nemoj da zaboraviš večerva da me sonuvaš',\n", - " 'sto posto te ljubam, sto posto e da',\n", - " 'a nadež da gubam jas nemam namera',\n", - " 'sto posto te ljubam, sto posto e da',\n", - " 'i pak kje ti rečam da jas sum uporna',\n", - " 'sto posto te ljubam, sto posto e da',\n", - " 'a nadež da gubam jas nemam namera',\n", - " 'sto posto te ljubam, sto posto e da',\n", - " 'i pak kje ti rečam da jas sum uporna',\n", - " 'ooh lalala lalalala...',\n", - " 'ooh lalala...',\n", - " 'ooh lalala...',\n", - " 'ne, nemoj da zaboraviš, na dzidot pokraj krevetot',\n", - " 'slika od vesnikot da isečeš i da me uramiš',\n", - " 'i nemoj da zaboraviš večerva da me sonuvaš',\n", - " 'sto posto te ljubam, sto posto e da',\n", - " 'a nadež da gubam jas nemam namera',\n", - " 'sto posto te ljubam, sto posto e da',\n", - " 'i pak kje ti rečam da jas sum uporna',\n", - " 'i love you one hundred percent, yes, i do',\n", - " 'and i often wonder if you would love me too',\n", - " 'i love you one hundred percent, yes, i do',\n", - " \"and i'll make you see that this heart of mine is true\",\n", - " \"and i'll make you see that this heart of mine is true\",\n", - " 'i love you one hundred percent, yes, i do']},\n", - " 'data': ['(the flowing dance of young maidens)',\n", - " \"uletaj na kryl'jach vetra\",\n", - " 'ty v kraj rodnoj, rodnaja pesnya nasha',\n", - " 'tuda gde my tebya svobodno peli',\n", - " \"gde bylo tak privol'no nam s toboju\",\n", - " 'tam, pod znojnym nebom',\n", - " 'negoj vozduch polon',\n", - " 'gde rad govor morja',\n", - " 'dremljut gory v oblakach',\n", - " \"uletaj na kryl'jach vetra\",\n", - " 'ty v kraj rodnoj, rodnaja pesnya nasha',\n", - " 'tuda gde my lubya svobodno peli',\n", - " \"gde bylo tak privol'no nam s toboju\",\n", - " '(general dance)',\n", - " 'poyte pesni slavi khanu! poy!',\n", - " \"slav'te silu doblest' khana! slav'!\",\n", - " 'slaven khan! khan!',\n", - " 'slaven on, khan nash!',\n", - " 'bleskom slavi solntsu raven khan',\n", - " 'netu ravnikh slavoy chanu! net!',\n", - " 'končana so dejanja mnogih',\n", - " 'zemlja kri preliva, gnije',\n", - " 'največ sveta otrokom sliši slave',\n", - " 'našli bomo pot in vero in postave',\n", - " 'če pa naklonijo smrt bogovi',\n", - " 'manj strašna noč je v črne zemlje krili',\n", - " 'kot so pod svetlim soncem',\n", - " 'sužni dnovi',\n", - " '____________',\n", - " 'the acts of many are over',\n", - " 'earth is flowing with blood, decaying',\n", - " 'the greater part of the world',\n", - " 'belongs to the children of slava',\n", - " 'we will find the way, the faith and principles',\n", - " 'but if the gods should grant us death',\n", - " 'less terrifying is the night',\n", - " \"within the black soil's folds\",\n", - " 'than days of slavery',\n", - " 'under the bright sun',\n", - " 'me sem gova chavoro',\n", - " 'khelav mange majlacho',\n", - " 'oj andale mandale',\n", - " 'e chora man astaren',\n", - " 'kas me astarava',\n", - " 'me mange asava',\n", - " 'samo jekh chaj ni mangel',\n", - " 'voj mande puchel',\n", - " 'o opa cupa na ker mange chaje muka',\n", - " 'ti daj ka merel ako ni keles',\n", - " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde',\n", - " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde',\n", - " 'sa e chaja kelena',\n", - " 'voj ni mangel te khelel',\n", - " 'oj andale mandale',\n", - " 'mudarel man o devel',\n", - " 'ava ruza ava khel',\n", - " 'pa i tiro mek avel',\n", - " 'oj andale mandale',\n", - " 'e sviracha ka kelen',\n", - " 'o opa cupa na ker mange chaje muka',\n", - " 'ti daj ka merel ako ni keles',\n", - " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde',\n", - " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde',\n", - " 'chao maj o hutalo',\n", - " 'i ruza so ni kelel',\n", - " 'oj andale mandale',\n", - " 'an bobo ki astarel',\n", - " 'ava ruza ava khel',\n", - " 'pa i tiro mek avel',\n", - " 'oj andale mandale',\n", - " 'e sviracha ka kelen',\n", - " 'o opa cupa na ker mange chaje muka',\n", - " 'ti daj ka merel ako ni keles',\n", - " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde',\n", - " 'lumbaj , lumbaj, lumbalaj ajde ajde ajde']}}},\n", - " 'sn': {'sentence': {'pop': {'meta': {'train_data': ['miss your vibe, miss your crime',\n", - " 'miss your pride, miss your fight',\n", - " 'body baby! dare ni mo mienai sonna kyuu ni',\n", - " 'jiki ni ai ni iku kara mou chotto hitorikiri',\n", - " 'samui sonna yoru kimi ni ai ni daki ni sugu ni',\n", - " 'iku kara mou chotto hitori',\n", - " 'doko ni ittai ikeba mou ichido futari',\n", - " 'tanoshii hibi sugoseru ka na?',\n", - " 'mnnn... hoshii your body',\n", - " 'me no mae no tobira aketara',\n", - " 'ikutsumo no hashi kakatteru',\n", - " 'kurikaesu tobira tojitara',\n", - " 'ikutsumo no hana narandeta',\n", - " \"haruka tooku ni (can't sleep hitori)\",\n", - " '(miss your size, miss your sight)',\n", - " \"egaiteta (can't dream kimi nashi de wa)\",\n", - " '(miss your night, miss your way)',\n", - " \"haruka kanata ni (can't sing umaku)\",\n", - " 'yume miteta (ikanai kanashii)',\n", - " 'watashi hitori (dare ni kikeba)',\n", - " '(miss your vibe, miss your crime)',\n", - " 'sabishii toki wa (kimi no ibasho oshiete moraeru)',\n", - " '(miss your pride, miss your fight)',\n", - " 'anata hitori ga (kimochi konna ni)',\n", - " 'ireba ii kara (tsuujiawanai)',\n", - " 'mienai chikara wo tayori ni',\n", - " '(dare ni mo mienai sonna kyuu ni jiki ni ai ni)',\n", - " 'nakimushi datta ano koro muri wo shiteta no',\n", - " '(samui sonna yoru kimi ni ai ni daki ni sugu ni)',\n", - " 'atama no naka no kotae wo jibun ni',\n", - " '(doko ni ittai ikeba mou ichido futari)',\n", - " 'atehame iradatte nigetagatteta',\n", - " '(kimochi konna ni demo fushigi body baby)',\n", - " 'zutto chikaku de',\n", - " '(miss your vibe, miss your crime)',\n", - " 'mebaeteta',\n", - " '(miss your night, miss your way)',\n", - " 'zuto soba de hohoende iru (kitto sore hod not so sad)',\n", - " 'anata hitori ga',\n", - " '(miss your lies, miss your legs)',\n", - " 'sasaeru yoru wa',\n", - " '(miss your eyes, miss your body)',\n", - " '(demo nazeka samishiku motometeru kimi)',\n", - " 'watashi hitori ga koko ni iru kara (atatakai body aitai)',\n", - " 'miss your size (dakitai kanjitai)',\n", - " 'miss your sight, miss your night, miss your way',\n", - " 'body baby! kitto sore hodo not so sad',\n", - " 'demo nazeka samishiku motometeru kimi no',\n", - " 'atatakai body aitai, dakitai, kanjitai',\n", - " 'why konna ni narenai futsuu na sekai',\n", - " \"please don't cry\",\n", - " 'mitakunai yo kimi no naiteru karada nante',\n", - " 'ima sugu ni demo sukui ni kimi no tonari de',\n", - " 'miss your body omoidasu yo',\n", - " 'fukai nemuri ni tsuku tabi, netemo sametemo ukande kuru yo',\n", - " 'your body baby, body body baby',\n", - " 'oide! takai sonna tokoro de hitori de inaide',\n", - " 'tobiorite oide umarete hajimete yorokobi no',\n", - " 'namida nagashite futari itsu mademo dakiai',\n", - " 'ai shiai, me wo samashitai',\n", - " 'ayashige na miryoku no naka ippuku',\n", - " \"but i don't smoke nante sonna samishii koto\",\n", - " 'iwanaide iki ga kurushiku naru hodo dakiaitai',\n", - " 'but inai soba ni inai kimi ga inai',\n", - " 'i miss your body baby! body baby!',\n", - " 'miss your size, miss your sight',\n", - " 'miss your night, miss your way',\n", - " 'miss your vibe, miss your crime',\n", - " 'miss your pride, miss your fight',\n", - " 'yume wo otte mayoikonda',\n", - " 'kokoro no mori no oku',\n", - " 'kagami yori sunda izumi utsuru yuganda smile',\n", - " \"koboreta namida wa (don't cry)\",\n", - " 'kin demo gin demo nakute',\n", - " 'arifureta namida (fall from my eyes)',\n", - " 'megami mo kizukanai',\n", - " 'masayume chasing chasing',\n", - " 'koero motto jibun shijou saikou no',\n", - " 'ima wo chasing chasing',\n", - " 'sou egaita jibun ni natte moyase mune no hi wo',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'na-na-na, na-na, hey, hey',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'kakenukero hero',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'na-na-na, na-na, hey, hey',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'moyase mune no hi wo (my life... yeah)',\n", - " 'yume wo tojite mimi sumaseba',\n", - " 'kasukani yobu koe',\n", - " 'daremo inai hazu no mori de',\n", - " 'miageta sora no ao',\n", - " 'koko he ha modoranai (good bye)',\n", - " 'kodoku toiu na no moudoku no',\n", - " 'amaku kaoru hana (fill up the sky)',\n", - " 'sakihokoru sekai ni',\n", - " 'sayonara changing changing',\n", - " 'koero motto jibun shijyou saikou no',\n", - " 'egao changing changing',\n", - " 'sou onegai ha kanau wa kitto terase mune no hi yo',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'na-na-na, na-na, hey, hey',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'kakenukero hero',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'na-na-na, na-na, hey, hey',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'terase mune no hi yo',\n", - " 'hey mou mechakucha haato de',\n", - " 'hontou no jibun ga dareda ka',\n", - " 'wake up shite make up',\n", - " 'enen mainichi kurikaeshite fade out (ah...)',\n", - " 'konna akumu kara (la...) no way baby (no way baby)',\n", - " '(na na na na na) nukedasu ni ha',\n", - " '(go gotta go now) me wo samasu shika nai',\n", - " 'mabushii asahi abite me wo korasu saki ni',\n", - " 'ano hi ni mita mirai ga te wo hirogeteru',\n", - " 'whoa whoa',\n", - " 'masayume chasing chasing',\n", - " 'koero motto jibun shijou saikou no',\n", - " 'toki wo chasing chasing',\n", - " 'sou egaita jibun ni natte moyase mune no hi wo',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'na-na-na, na-na, hey, hey',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'kakenukero hero',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'na-na-na, na-na, hey, hey',\n", - " 'na-na-na, na-na-na-na, oh',\n", - " 'moyase mune no hi wo',\n", - " 'annotation 1',\n", - " 'annotation 2',\n", - " 'annotation 3',\n", - " 'kimi wa windy lady',\n", - " 'boku no windy lady',\n", - " 'kimi wa windy lady',\n", - " 'boku no windy lady',\n", - " 'te o nobashite mo',\n", - " 'doko ka tōku e',\n", - " 'tonde yuku ai no yōna',\n", - " 'yami no yōna',\n", - " 'boku no windy',\n", - " 'boku no windy lady',\n", - " 'kimi wa windy lady',\n", - " 'boku no windy lady',\n", - " 'kimi wa windy girl',\n", - " 'boku no windy girl',\n", - " 'machi nakaniha',\n", - " 'nani mo nai yo',\n", - " 'ai nante tsukanoma no',\n", - " 'maboroshi sa',\n", - " 'boku no windy',\n", - " 'boku no windy lady',\n", - " 'fukinukeru kanashimi o',\n", - " 'boku ni mo',\n", - " 'kimi wa windy lady',\n", - " 'boku no windy lady',\n", - " 'kimi wa windy girl',\n", - " 'boku no windy girl',\n", - " 'te o nobashite mo',\n", - " 'doko ka tōku e',\n", - " 'tonde yuku ai no yōna',\n", - " 'yami no yōna',\n", - " 'boku no windy',\n", - " 'boku no windy lady',\n", - " 'fukinukeru kanashimi o',\n", - " 'boku ni mo',\n", - " 'fukinukeru kanashimi o',\n", - " 'boku ni mo',\n", - " 'i feel so angry',\n", - " 'riyuu nante nai',\n", - " 'jama bakari umakuikanai',\n", - " \"i'm getting red\",\n", - " 'hajikeru youna',\n", - " 'kizuitara chansu wo sagashiteru',\n", - " 'someone please stop me',\n", - " 'rumble!',\n", - " 'nirami togarese ikaku taisei',\n", - " 'just a word & it gets hazy',\n", - " 'eiri na serifu sashichigae',\n", - " 'hikisagarenai',\n", - " 'isshoka',\n", - " 'i feel so pained',\n", - " 'furui kizuato',\n", - " 'afuresou ni hiki ke ga suru',\n", - " 'long violent night',\n", - " 'fukichi na kibun',\n", - " 'osaerenai shoudou ga sakenda',\n", - " 'rumble!',\n", - " 'nirami togarese ikaku taisei',\n", - " 'just a word & it gets hazy',\n", - " 'eiri na serifu sashichigae',\n", - " 'hikisagarenai',\n", - " 'isshoka, soukazu',\n", - " 'kiba wo muke',\n", - " 'shot!',\n", - " 'shot!',\n", - " 'shot!',\n", - " 'shot!',\n", - " 'rumble!',\n", - " 'ueta kyouki sa girigiri ga ii',\n", - " 'just right and i go crazy',\n", - " 'ikigatta mama tsuranuke',\n", - " 'nigashi wa shinai zettai ni',\n", - " 'nayamitsuite',\n", - " 'mou gaman bakka shiterannai yo',\n", - " 'iitai koto wa iwanakucha',\n", - " 'kaerimichi yuugure no basutei',\n", - " 'ochikonda senaka ni bye bye bye',\n", - " 'kimi no fighting pose misenakya oh oh!',\n", - " 'yume ni made mita you na sekai wa',\n", - " 'arasoi mo naku heiwa no nichi jyou',\n", - " 'demo gen jitsu wa hibi torabu tte',\n", - " 'tama ni kuyandari shiteru',\n", - " 'sonna rolling days!',\n", - " 'koronjattatte ii ja nai no',\n", - " 'sonna toki wa waratte ageru',\n", - " 'norikonda basu no oku kara',\n", - " 'chiisaku hohoemi ga mieta',\n", - " 'kimi wo tayori ni shiteru yo oh oh!',\n", - " 'yume ni made mita you na sweet love',\n", - " 'koibitotachi wa kakurega o sagasu no',\n", - " 'demo genjitsu wa aenai hi ga',\n", - " 'tsuzukinagara mo shinjiteru no lonely days',\n", - " 'wooh, yeah, wooh!',\n", - " 'tsumazuitatte way to go, yeah yay',\n", - " 'doro darake rolling star!',\n", - " 'naru beku egao de itai keredo',\n", - " 'mamori ni iku tame ni shikata nai deshou',\n", - " 'kitto uso nante sou imi o motanai no',\n", - " 'all my loving',\n", - " 'sou janakya yatterannai',\n", - " 'yume ni made mita you na sekai wa',\n", - " 'arasoi mo naku heiwa na nichijou',\n", - " 'demo genjitsu wa hibi torabutte',\n", - " 'tama ni kuyandari shiteru',\n", - " 'sonna rolling days!',\n", - " 'oh, yeah, oh',\n", - " 'sou wakatterutte...',\n", - " 'oh, yeah, oh',\n", - " 'tsumazuitatte way to go, yeah yay',\n", - " 'doro darake rolling star!',\n", - " 'doushite darou namae yobu dakede',\n", - " 'futari no kyouri ga fuini chikaku naru',\n", - " 'hoho ni sunset katamuku yuuhi ga',\n", - " 'kawa ita suma hama to kokoro wo nureshiteku',\n", - " 'shine bright hashaide te wo fureta',\n", - " 'it must be love mune ni afureru hakanai eien',\n", - " 'call my name imasugu',\n", - " 'call my name nandomo',\n", - " 'anata no koe hibikaseteite into my heart',\n", - " 'feel the same? tokireteiku',\n", - " 'feel the same? kaiwani',\n", - " 'anata wa mou kuzuite iru no?',\n", - " 'so please call my name',\n", - " 'mono omoi ni fukeru furi wo shite',\n", - " 'atsuku naru koi wo sama sou',\n", - " 'hikaru shore break me wo hoso me nagara',\n", - " 'sui hei sen wo yubi saki de nazotte miru',\n", - " 'so sweet anata ga warau tabi',\n", - " 'you will be mine',\n", - " 'nami ni koboreru kakushita jounetsu',\n", - " 'call my name itsudemo',\n", - " 'call my name dokodemo',\n", - " 'anata no koto kanjiteru kara',\n", - " 'into my heart',\n", - " 'feel the same? kotae wo',\n", - " 'feel this way? isoide',\n", - " 'daiji namo no nakushita kunai',\n", - " 'so please call my name',\n", - " 'mitsume au dakede kiri toreru',\n", - " 'jikan no naka',\n", - " 'amai yo kan ga yozora ni hikattara',\n", - " 'close your eyes',\n", - " 'call my name imasugu',\n", - " 'call my name nandomo',\n", - " 'anata no koe hibi ka seteite',\n", - " 'into my heart',\n", - " 'feel the same? tokireru',\n", - " 'feel this way? kaiwani',\n", - " 'anata wa mou kuzuite iru no?',\n", - " 'so please call my name',\n", - " 'call my name itsudemo',\n", - " 'call my name dokodemo',\n", - " 'anata no koto kanjiteru kara',\n", - " 'into my heart',\n", - " 'feel the same? kotae wo',\n", - " 'feel this way? isoide',\n", - " 'daiji namo no nakushita kunai',\n", - " 'girl , take my messēji',\n", - " 'kotoba ni kome ta kokoro no koe o uketome te hoshii',\n", - " 'girl , take my messēji',\n", - " 'itsuwari no nai subete no kimochi koko ni shimesu kara',\n", - " 'hey hey hey konnanimo boku no koto miryou shi toi te sa',\n", - " 'henji sae nai no ?',\n", - " 'baby baby baby sore wa kimi no puraido ?',\n", - " 'sono kimochi o ima shiri tai kara',\n", - " 'kimi no futan ni nari taku wa nai',\n", - " 'kedo baby kotae ga hoshii yo',\n", - " 'you got a message kono omoi o',\n", - " 'a message tsuduru kimi no pēji',\n", - " 'bukiyou da kedo kazan nai kotoba de',\n", - " 'oh oh oh ? saigo made kome ta messēji',\n", - " 'oh oh oh ? kimi ni todoi te',\n", - " 'kitai to fu anga iri majit ta imēji',\n", - " 'just ri gi ding ri gi ding ri gi dong dong',\n", - " 'ne mamuru wan jon sarojapuko',\n", - " 'go to the top we ain’t no stop',\n", - " 'ni mame farushiwiru?ru tangyo',\n", - " 'just ri gi ding ri gi ding ri gi dong dong',\n", - " 'hoho mou honki da kara',\n", - " 'girl , take my messēji',\n", - " 'kotoba ni kome ta kokoro no koe o uketome te hoshii',\n", - " 'girl , take my messēji',\n", - " 'itsuwari no nai subete no kimochi koko ni shimesu kara',\n", - " 'kimi no futan ni nari taku wa nai',\n", - " 'kedo baby kotae ga hoshii yo',\n", - " 'you got a message kono omoi o',\n", - " 'a message tsuduru kimi no pēji',\n", - " 'bukiyou da kedo kazan nai kotoba de',\n", - " 'oh oh oh ? saigo made kome ta messēji',\n", - " 'oh oh oh ? kun ni todoi te',\n", - " 'moshimo todoku nara',\n", - " 'zutto mamoru yo',\n", - " 'you got a message kono omoi o',\n", - " 'a message tsuduru kimi no pēji',\n", - " 'bukiyou da kedo kazan nai kotoba de',\n", - " 'oh oh oh ? saigo made kome ta messēji',\n", - " 'oh oh oh ? kimi ni todoi te',\n", - " 'appudeeto motto tooku tooku tooku made tonde yuke',\n", - " 'hoka no dareka ja dame dame iya da yo',\n", - " 'koukai shitakunai kara ima sugu iu yo',\n", - " 'suki da suki da suki da suki da',\n", - " 'kono basho ga suki da yo',\n", - " 'daiji na koto ni kidzuita',\n", - " '(find the way, find the way, find the way)',\n", - " 'nani suru ka janakute dare to iru ka',\n", - " 'sagashi tsudzukete ita mono',\n", - " '(find the way, find the way)',\n", - " 'konna chikaku ni atta no (you can shine now)',\n", - " 'asu ni kitai fukuramu no wa',\n", - " 'kimi to mitai keshiki ga aru kara (get ready for…)',\n", - " 'appudeeto motto tooku tooku tooku made tonde yuke',\n", - " 'hoka no dareka ja dame dame iya da yo',\n", - " 'koukai shitakunai kara ima sugu iu yo',\n", - " 'suki da suki da suki da suki da',\n", - " 'kono basho ga suki da yo',\n", - " 'atarashii shisutemu demo',\n", - " '(brand new day, brand new day, brand new day)',\n", - " 'kienaide to negau omoi mo aru',\n", - " 'youryou seigen nante shinaide',\n", - " '(open mind, open mind)',\n", - " 'motto kimi to sugoshitai no (hold me tight tonight)',\n", - " 'donna ni kyou ga tanoshikutemo',\n", - " 'ashita ga watashi wo matteru kara (get ready for…)',\n", - " 'appudeeto motto tooku tooku tooku made tonde yuke',\n", - " 'hoka no dareka ja dame dame iya da yo',\n", - " 'koukai shitakunai kara ima sugu iku yo',\n", - " 'kimi ga kimi ga kimi ga kimi ga',\n", - " 'kimi ga soba ni ireba',\n", - " 'ushiro janaku shita demo naku mae dake muite korareta no wa',\n", - " 'kimi ga ita kara da yo',\n", - " 'appudeeto moshi mo bagu ga okitemo kitto mitsukedasu kara',\n", - " 'kimi ga inakucha dame dame iya da yo',\n", - " 'appudeeto motto tooku tooku tooku made tonde yuke',\n", - " 'hoka no dareka ja dame dame iya da yo',\n", - " 'koukai shitakunai kara ima sugu iu yo',\n", - " 'suki da suki da suki da suki da',\n", - " 'kimi ga daisuki da yo',\n", - " 'traces of love oikaketeta',\n", - " 'trace of love kokoro ni ukabe',\n", - " 'yasashii yoha no naka',\n", - " 'traces of love, trace of love',\n", - " 'remains of love',\n", - " 'traces of love, trace of love',\n", - " 'traces of love',\n", - " 'traces of love...',\n", - " 'until after midnight',\n", - " 'anata ga inai',\n", - " 'under the moonlight',\n", - " 'kumo to tomo ni nagaretai',\n", - " 'otona sugiru sekai',\n", - " 'naze ka raku ni konashiteru ne',\n", - " 'bunkatteru kedo',\n", - " 'sonna ni isogenai',\n", - " 'across my heart',\n", - " 'leaving footprints',\n", - " 'sore o oi, kie... sokuseki o kakushi',\n", - " 'yukue o kuramashi',\n", - " 'ibasho mo himitsu',\n", - " 'dakedo kukkiri sugu soko ni',\n", - " 'kehai kanji, otogashi, mata maboroshi... toritachi',\n", - " 'taiyou yokogiri',\n", - " 'isshun... kage...',\n", - " 'konna unmei',\n", - " 'samayou futari',\n", - " 'until after midnight',\n", - " 'anata ga inai',\n", - " 'under the moonlight',\n", - " 'kumo to tomo ni nagaretai',\n", - " 'itsu neteshimattan darou',\n", - " 'soba ni ite kuretayo ne',\n", - " 'mada yume o miteiru no?',\n", - " 'fushigi ni mune ga itakunai',\n", - " 'nakute ha naranai sonzai',\n", - " 'as long as the earth exists',\n", - " 'sou shinjite ha shaideita',\n", - " 'itsu neteshimattan darou',\n", - " 'soba ni ite kuretayo ne',\n", - " 'mada yume o miteiru no?',\n", - " 'fushigi ni mune ga itakunai',\n", - " 'dare ga kimeta no konna kimari',\n", - " 'donna ni hontou ni',\n", - " 'konna ni tappuri tsukari',\n", - " 'tsukarete hanarete...',\n", - " 'kotoba yori daiji ni shitai ai',\n", - " 'dakedo komari, katamari...',\n", - " \"don't run across my heart\",\n", - " 'run across the street',\n", - " 'cross the waters',\n", - " 'yori sotte itai',\n", - " \"don't run across my heart\",\n", - " 'run across the street',\n", - " 'cross the waters',\n", - " 'tonari ni kite hoshii',\n", - " \"don't run across my heart\",\n", - " 'run across the street',\n", - " 'cross the waters',\n", - " 'yori sotte itai',\n", - " \"don't run across my heart\",\n", - " 'run across the street',\n", - " 'cross the waters',\n", - " 'tonari ni kite hoshii',\n", - " \"don't run across my heart\",\n", - " 'run across the street',\n", - " 'cross the waters',\n", - " 'yori sotte itai',\n", - " \"don't run across my heart\",\n", - " 'run across the street',\n", - " 'cross the waters',\n", - " 'tonari ni kite hoshii',\n", - " 'kimi no kotoba de nemurenai kokoro ni hibiku itami ni',\n", - " 'sotto heya o nuke dashite umi no kaze o hoho ni uketa',\n", - " 'deatta toki no mune no takanari o wasurete shimawanai youni...',\n", - " 'kimi no namida ga koborete kokoro ni fukaku shimikonda',\n", - " 'waga mama datta jibun o yoru no umi ni sutete shimaou',\n", - " 'tell me why itsu kara?',\n", - " 'love sight ashi moto ni',\n", - " 'saku hana sae kitsukazu ni',\n", - " 'sugiteku toki no naka keep in my heart',\n", - " 'ironna koto gisei ni shite yuku keredo',\n", - " 'tebana shichaike nai mono',\n", - " 'love is... tokubetsu na',\n", - " 'love is... taisetsu na',\n", - " 'message... kimi ni tsutaetai so',\n", - " 'love is... yowakute',\n", - " 'love is... hakanaku temo',\n", - " \"zutto don't stop believin'\",\n", - " 'love is... motomeru',\n", - " 'love is... sasaeru',\n", - " 'message... hitori ja dekinai koto so',\n", - " 'love is... kawaranai',\n", - " 'love is... kimi no koe',\n", - " 'donna boku mo iyashite yuku one is love',\n", - " 'futari iku saki ni nani ga matteruka wakaranai kedo',\n", - " 'itoshisa to wa itsu datte',\n", - " 'ki ga tsukeba soba ni aru mono',\n", - " 'in your eyes utsushita',\n", - " 'sunrise sono naka de',\n", - " 'itsumo waratteitai',\n", - " 'ii kotoba narabe temo',\n", - " \"flowin' my heart\",\n", - " 'ii tarinakute bukiyou ni naru omoi sae',\n", - " 'kimi wa wakatte kureru ne',\n", - " 'love is... kanaeru',\n", - " 'love is... sasageru',\n", - " 'message... yume o misetai kara so',\n", - " 'love is... rekishi ga',\n", - " 'love is... kawattemo',\n", - " 'kokoro no oku towa ni kienai one is love',\n", - " 'yo!! hoshi no nai sky kono machi de',\n", - " 'one light mitsuketa deai',\n", - " 'i think so omou yoru meeru tensou',\n", - " 'ari no mama i wanna send you love',\n", - " \"kazoe kirenai shiin it's mean\",\n", - " 'soko ni umareru you gotta faith in me',\n", - " 'do it!! do it!! boku no yume kimi no kokoro ni shimikondeku',\n", - " 'everytime i do, lonely day, lonely night',\n", - " 'tsuyoku naritai shinji aitai',\n", - " \"tsuki... kaze... subete ga futari hiki yoseau just bringin' now\",\n", - " 'never ever let you go (never let your love go)',\n", - " \"kienai ai no kodou no refrain (i don't wanna pain)\",\n", - " 'sugiteku toki no naka keep in my heart',\n", - " 'ironna koto gisei ni shite yuku keredo',\n", - " 'tebana shichaike nai mono',\n", - " 'love is... tokubetsu na',\n", - " 'love is... taisetsu na',\n", - " 'message... kimi o mamoritai so',\n", - " 'love is... toki ni wa',\n", - " 'love is... kizu tsuketemo',\n", - " \"zutto don't stop believin'\",\n", - " 'love is... motomeru',\n", - " 'love is... sasaeru',\n", - " 'message... hitori ja dekinai koto so',\n", - " 'love is... kawaranai',\n", - " 'love is... kimi no koe',\n", - " 'donna boku mo iyashite yuku one is love',\n", - " 'boyaketa sekai no naka tooku',\n", - " 'kanjiru yoake no mabushi sa ni',\n", - " 'koware kaketeta tokei no hari',\n", - " 'ugoki dasou to mata uzuki hajimeteru',\n", - " \"i'm gonna survive\",\n", - " 'even if it is hard',\n", - " \"i'm gonna survive\",\n", - " 'as far as i see the flicker of hope',\n", - " 'mujun darake na otona no iiwake',\n", - " 'ayamachi bakari wo kurikaeshi nagara',\n", - " 'seigi nandato furi kazashiteru heiki na kao de',\n", - " 'yokusei sareteru yasuragi wa mou...',\n", - " 'saki nobashita akarui mirai nante aru wake naito',\n", - " 'azawarau kedo',\n", - " 'bokura wa mada ikiteru',\n", - " 'energy moshimo kono sekai ga owaru toshite mo',\n", - " 'rise against kasuka demo hikari ga mieta nara',\n", - " 'sore wa boku no naka ni umareta tashikana energy',\n", - " 'azayaka na hibi wo tori modoshitakute',\n", - " \"i'm gonna survive\",\n", - " 'even if it is hard',\n", - " \"i'm gonna survive\",\n", - " 'as far as i see the flicker of hope',\n", - " 'kagayaki nakushita kodomo no me ni wa',\n", - " 'nani ga utsutte nani wo kangaeteru no?',\n", - " 'kyodai na biru ni kezurarete yuku',\n", - " 'sora ni wa nanimo mie nai',\n", - " 'energy boku-tachi no shimei wa doko ni ano?',\n", - " 'rise against kono mama no sekai ja oware nai yo',\n", - " 'sore wa hitorih itori ga kasaneteku energy',\n", - " 'tamerawaz uni ima ugoki dashite',\n", - " 'tozasareta jidai nara sono me hiraite',\n", - " \"(don't close your eyes)\",\n", - " 'machigai darakeno yo no naka dakedo',\n", - " 'sorasazu (let me go) ni ikou',\n", - " 'sore demo mada bokura wa ikiteru kara',\n", - " 'ii nari ni natte sono',\n", - " 'saki ni mieta no wa hikari ka yami ka?',\n", - " 'kyodai na atsuryoku de osae tsukerare',\n", - " 'umareta no wa ikari ya namida',\n", - " 'nani ga seigi de, nani ga daiji ka?',\n", - " 'dareka ni makase kiri ja',\n", - " 'mie wa shinai sa never give up!',\n", - " 'deguchi ga nai tonneru nante nai',\n", - " 'karato shinjite mukae ima!',\n", - " 'energy kimi ga daiteru yariba no nai kimochi',\n", - " 'rise against uzumakiku yami no naka',\n", - " 'kakuse nai yo',\n", - " 'tatoe kono mama no sekai ga tsuduku toshite mo',\n", - " 'osorezu ni ima wo kaete ikou',\n", - " 'energy moshimo kono sekai ni owari ga kite mo',\n", - " 'rise against kasukademo hikari wo nozomu nara',\n", - " 'sore wa boku-tachi ni umareta tashikana energy',\n", - " 'chikara no nai mono kowasa naide',\n", - " 'hakanaki mono itoshiki mono',\n", - " \"omoi kaeshi te (don't forget)\",\n", - " 'itsuwari darake no yo no naka dakedo',\n", - " 'todoka nai (let me go) basho wa',\n", - " 'nainda ima bokura wa ikiteru kara',\n", - " \"i'm gonna survive\",\n", - " 'even if it is hard',\n", - " \"i'm gonna survive\",\n", - " 'as far as i see the flicker of hope',\n", - " '*do you know great progress in science?',\n", - " 'suki na dake metomorphose',\n", - " 'sashiba megashira sekkai era wo kezuri shiboukyuuin',\n", - " 'break out! crush shita complex',\n", - " 'kasanesugita ope ni warning',\n", - " 'kizu darake chimamireno',\n", - " 'utsukushiki medical body',\n", - " 'club no omoi rizumu muragaru yasui tane',\n", - " 'terashita black light sakete hohoemu no',\n", - " 'katakuzure shinai mune kubiresugita lain',\n", - " 'kitsuku sawaranaide shirikon ga yabureru',\n", - " 'uso wo kasanete',\n", - " 'uso ni torisukarete',\n", - " 'uso de katamete sugata de nani itte mo usokusai',\n", - " 'ishi wa migaitemo',\n", - " 'daiya ni wa naranai',\n", - " 'kokoro ga minikui mama ja mitame kaete mo imi ga nai',\n", - " 'do you know great progress in science?',\n", - " 'suki na dake metomorphose',\n", - " 'sashiba megashira sekkai era wo kezuri shiboukyuuin',\n", - " 'break out! crush shita complex',\n", - " 'kasanesugita ope ni warning',\n", - " 'kizu darake chimamireno',\n", - " 'utsukushiki medical body',\n", - " 'asobitsukareta koro ni dekita ika shita kareshi',\n", - " 'fui no houmon ni awate arubamu kakushita',\n", - " 'kako wo kakushite',\n", - " 'kako ni obieteru ima',\n", - " 'sono fushizen na egao saki ni hayaku kakushitekure!',\n", - " 'do you know great progress in science?',\n", - " 'suki na dake metomorphose',\n", - " 'sashiba megashira sekkai era wo kezuri shiboukyuuin',\n", - " 'break out! crush shita complex',\n", - " 'kasanesugita ope ni warning',\n", - " 'kizu darake chimamireno',\n", - " 'utsukushiki medical body',\n", - " 'uso wo kasanete',\n", - " 'uso ni torisukarete',\n", - " 'uso de katamete sugata de nani itte mo usokusai',\n", - " 'ishi wa migaitemo',\n", - " 'daiya ni wa naranai',\n", - " 'kokoro ga minikui mama ja mitame kaete mo imi ga nai',\n", - " 'do you know great progress in science?',\n", - " 'suki na dake metomorphose',\n", - " 'sashiba megashira sekkai era wo kezuri shiboukyuuin',\n", - " 'break out! crush shita complex',\n", - " 'kasanesugita ope ni warning',\n", - " 'kizu darake chimamireno',\n", - " 'utsukushiki medical bodyera is the reading for genzai (present time)',\n", - " 'madamada yume wa samenai ne',\n", - " 'kono michi no mukō nani ga ma terudarou',\n", - " 'kitto kitto kotae wa arukara',\n", - " 'akirame kirenai tachi tomarenainda',\n", - " 'demo ushirogami hiku ato sukoshi dake de mo',\n", - " 'sono yawaraka na egao no tonari ni itaikeredo',\n", - " 'massugu ni kakedasu',\n", - " 'harewataru aozora ga mabushii',\n", - " 'oikaze ni aora re',\n", - " 'atarashii tabi ga hajimaru',\n", - " 'itsuka mata aeru yo',\n", - " 'furikaerazu ni asu e mukau yo',\n", - " 'good luck my way',\n", - " 'shinjiru michi e',\n", - " 'atchi kotchi kakezuri mawatte',\n", - " 'tatakikomanaito kotae wa denai mitai',\n", - " 'kitto kitto kōkai shinaide',\n", - " 'warai ageru yo',\n", - " 'susumi tsuzukerunda',\n", - " 'hora mō kowaku wa nai',\n", - " 'asu nani ga okotte mo norikoe rare-sō',\n", - " 'koko made tsumazuite mo koreta kara',\n", - " 'utsuri yuku sekai no',\n", - " 'katasumi de kimi ni aete ureshii',\n", - " 'afure-sōna omoi o kotoba ni dekinakatta yo',\n", - " 'itsuka mata aetara motto umaku tsutae rareru ka na',\n", - " 'good luck my way',\n", - " 'hohoemi kakete',\n", - " 'massugu ni kakedasu',\n", - " 'harewataru aozora ga mabushii',\n", - " 'oikaze ni aora re',\n", - " 'atarashii tabi ga hajimaru',\n", - " 'itsuka mata aeru yo',\n", - " 'furikaerazu ni asu e mukau yo',\n", - " 'good luck my way',\n", - " '(smile at me)',\n", - " 'utsuri yuku sekai no',\n", - " 'katasumi de kimi ni aete ureshii',\n", - " 'afure-sōna omoi o kotoba ni dekinakatta yo',\n", - " 'itsuka mata aetara motto umaku tsutae rareru ka na',\n", - " 'haru ka na niji o koete',\n", - " 'good luck my way',\n", - " 'shinjiru michi e',\n", - " 'in the future',\n", - " 'shiruetto azayaka na shiruetto',\n", - " 'katatteru mirai wa katatteru',\n", - " 'mata deau ano basho ano yume no',\n", - " 'naka',\n", - " '* shiruetto azayaka na shiruetto',\n", - " 'joushiki wo tobikoeteyuku',\n", - " 'kiseki wa kitto kimi ni kakatteru',\n", - " 'itsumo no asa no rasshu',\n", - " 'chigau to ieba',\n", - " 'nanika chigaitai to omou kokoro kana',\n", - " 'itsumo no eki bari wadai no aidoru',\n", - " 'nani mo kawaranai fuku ga tada kawaru dake',\n", - " 'monotarinasa wo kanjiteru',\n", - " 'wakattekiteiru',\n", - " 'toboketa kanji de',\n", - " 'waraitobashiteru wake ni ikanai',\n", - " 'soro soro katatteru mirai wa kattateru',\n", - " '* repeat',\n", - " '** nasakenai mama ja sono uchi',\n", - " 'suterareru hayaku mitsukena',\n", - " 'yoafuredasu nanika wa aru kara',\n", - " 'katatteru mirai wa katatteru',\n", - " 'joushiki wo tobikoeteyuku<',\n", - " 'kiseki wa kitto kimi ni kakatteru',\n", - " 'madogiwa no saboten',\n", - " 'aoi sora wo mitsumeteru',\n", - " 'daisuki na kaze wo mei ippai abitai',\n", - " 'yoru no romanteikku',\n", - " 'asa no riaru gyappu wo doo suru',\n", - " '?',\n", - " 'mabushiku hikaru yuuki wo',\n", - " 'soro soro dou shita mon kai ?',\n", - " 'kono goro katatteru mirai wa katatteru',\n", - " '*** me no mae no bijon uchiyabutte',\n", - " 'joushiki wo tobikoeteyuku',\n", - " 'kiseki wa kitto kimi',\n", - " 'ni kakatteru',\n", - " 'tsuki ni hoe taiyou to moe',\n", - " 'itsu made mo togatta daiya de',\n", - " 'furi na koto tsuyoi tsuyoi mono ni kaeteku',\n", - " 'katatteru mirai wa katatteru',\n", - " 'joushiki wo tobikoeteyuku',\n", - " 'kiseki wa kitto kimi ni kakatteru',\n", - " '*** repeat',\n", - " '** repeat',\n", - " '* repeat',\n", - " \"i'm searching for the sense of my life, where am i going?\",\n", - " 'mi hatenu saki wo omoinagara',\n", - " 'hikikaesu koto wa yurusarezu',\n", - " 'tada, tatakai wo erabi yuku',\n", - " 'mamorubeki mono shinjiru mono wa',\n", - " 'suukina shukumei ni yurare',\n", - " 'usui haiiro ni irodzuita',\n", - " 'kibou ni sugari',\n", - " 'kono byakuya mo kirisake to',\n", - " 'cry out!',\n", - " 'raise my sword',\n", - " 'freedom became thousands of flames',\n", - " 'mezame yo ima kono toki',\n", - " 'raise my hope',\n", - " 'nageki wa tashikana kibou e to kawarudarou',\n", - " 'fusagi kakeru kumotta kokoro ga',\n", - " 'fumishimeru tsuchi wo nurashite yuku',\n", - " 'kienai kyozou ni modaenagara',\n", - " 'tada, hisou no daichi e yuku',\n", - " 'utareta setsuna mezameta kokoro',\n", - " 'yureru omoi mo uchi suteyo',\n", - " 'shunkoku ni moeagaru ishiki yo',\n", - " 'nozomi tsunagu yuruginai yaiba ni nare',\n", - " 'cry out!',\n", - " 'raise my sword',\n", - " 'freedom became thousands of flames',\n", - " 'ima kakeyo ano sora e',\n", - " 'raise my hope',\n", - " 'kanashimi wa tashika ni kibou e to kawarudarou',\n", - " 'miageru to, soko wa kawaranu sora',\n", - " 'yuuen no kimi omou',\n", - " 'shunkoku ni moeagaru ishiki yo',\n", - " 'nozomi tsunagu yuruginai yaiba ni nare',\n", - " 'cry out!',\n", - " 'raise my sword',\n", - " 'freedom became thousands of flames',\n", - " 'mezameyo ima kono toki',\n", - " 'raise my hope',\n", - " 'nageki wa tashikana kibou e to kawarudarou',\n", - " 'raise my sword',\n", - " 'freedom became thousands of flames',\n", - " 'ima kakeyo ano sora e',\n", - " 'raise my hope',\n", - " 'i cut off all of enemies',\n", - " 'ashita no hi wa tashika ni kimi no me ni utsurudarou',\n", - " 'fusagikonde hakidashita omae no iu risou to ha',\n", - " 'me no mae de furisosogu gizen no koe to fuhai no ame',\n", - " 'distraction! are you ready?',\n", - " 'satisfaction! are you ready?',\n", - " 'yousha suru yochi mo nai nakigarakai to magiresare',\n", - " 'mattou na michi o iku tsuyogari no daibensha sare',\n", - " 'mune no nai ore ni mo aishikata o oshietekure',\n", - " 'distraction! are you resdy?',\n", - " 'satisfaction! are you ready?',\n", - " 'mimizawari na zastunen riron bakari tsutawanai',\n", - " 'confusion asked me...',\n", - " 'ikiru imi ni kotae ha aru no?',\n", - " 'bukiyou na haibokushatachi ga warau hiniku na sama yo',\n", - " 'confusion asked me...',\n", - " 'dare ka no sukui motometeita',\n", - " 'kokoro no soko kara yowai jibun o aiseru no darou ka',\n", - " 'i sentence it to good-bye',\n", - " 'i can say nothing',\n", - " 'nani mo hoshiku ha nai dare mo shinjitakunakatta',\n", - " 'nani mo tsutaetakunai dare mo aishitakunakatta',\n", - " 'ohayō tokyo konichiwa',\n", - " \"sumimasen i'm foreigner\",\n", - " \"i don't speak japanese\",\n", - " 'but i love aoi sora',\n", - " 'when you say wakarimashita',\n", - " 'i say hitachi toyota',\n", - " 'kawasaki nintendo',\n", - " 'canon sony honda',\n", - " \"i'm losing my way\",\n", - " 'obāsan where should i go?',\n", - " 'shinjuku so big',\n", - " 'i need a doraemon',\n", - " 'you speak japanglish',\n", - " 'and show me body language',\n", - " 'what can i do?',\n", - " 'where should i go?',\n", - " 'no, nonono',\n", - " 'makudonarudo',\n", - " 'guguru toiletto',\n", - " 'kitto katto',\n", - " 'dizunilando',\n", - " 'takushi go hoteru',\n", - " 'sebun elebun miruku',\n", - " 'basu biru',\n", - " 'sutābakkusu',\n", - " 'ohayō tokyo konichiwa',\n", - " \"sumimasen i'm foreigner\",\n", - " \"i don't speak japanese\",\n", - " 'but i love ramen tempura',\n", - " 'when you say arigatō konbanwa',\n", - " 'i say suzuki yamaha',\n", - " 'uniqlo toshiba',\n", - " 'casio godzilla',\n", - " \"i'm losing my way\",\n", - " 'obāsan where should i go?',\n", - " 'shinjuku so big',\n", - " 'i need a doraemon',\n", - " 'you speak japanglish',\n", - " 'and show me body language',\n", - " 'what can i do?',\n", - " 'where should i go?',\n", - " 'please take me home',\n", - " 'no, nonono',\n", - " 'makudonarudo',\n", - " 'guguru toiletto',\n", - " 'kitto katto',\n", - " 'dizunilando',\n", - " 'takushi go hoteru',\n", - " 'sebun elebun miruku',\n", - " 'basu biru',\n", - " 'sutābakkusu',\n", - " 'sarada hanbāgā',\n", - " 'sandoitchi sōsēji',\n", - " 'kohi kēki',\n", - " 'aisukurimu konbini',\n", - " 'furaidopoteto',\n", - " 'esukarētā arukoru',\n", - " 'bareboru besuboru',\n", - " 'basukettoboru gorufu',\n", - " 'makudonarudo',\n", - " 'guguru toiletto',\n", - " 'kitto katto',\n", - " 'dizunilando',\n", - " 'takushi go hoteru',\n", - " 'sebun elebun miruku',\n", - " 'basu biru',\n", - " 'sutābakkusu',\n", - " 'i pray for you',\n", - " 'sora wo kaketa',\n", - " 'eien wo koete',\n", - " 'we pray for you',\n", - " 'kono shunkan ni',\n", - " 'dekiru koto naru',\n", - " 'koe ni takushi kimi wo omou',\n", - " 'we want to send you our songs now',\n", - " 'please, stop crying',\n", - " 'asu wo maneku',\n", - " 'hohoemi wo motte',\n", - " 'kaze wo kanji kimi wo omou',\n", - " 'we want to send you our songs now',\n", - " 'oshiyoseru',\n", - " 'kabe ni tachimukau',\n", - " 'uragiranai sono tsuyosa wa',\n", - " 'saisei wa sakebi kodama suru',\n", - " 'sora wo eguri sasaru',\n", - " 'no more tears',\n", - " 'oshiyoseru',\n", - " 'kako ni tachimukau',\n", - " 'kumori no nai sono tsuyosa ga',\n", - " 'hitosuji no hikari terashiteru',\n", - " 'we believe your new way of love',\n", - " 'no more tears',\n", - " 'semari kuru yami wo utte',\n", - " 'honoo no mama hashiri nukete',\n", - " 'nuzumanai tayakai no naka de',\n", - " 'inori wo sasage',\n", - " 'oshiyoseru',\n", - " 'kabe ni tachimukau',\n", - " 'uragiranai sono tsuyosa wa',\n", - " 'saisei wa sakebi kodama suru',\n", - " 'yami wo eguri sasaru',\n", - " 'no more tears',\n", - " 'oshiyoseru',\n", - " 'kako ni tachimukau',\n", - " 'mayoi no nai sono tsuyosa ga',\n", - " 'hitosuji no hikari terashiteru',\n", - " 'we believe your new way of love',\n", - " 'no more tears',\n", - " 'we want keep sending you our songs',\n", - " 'no more tears',\n", - " '1 kuraitsuita kachiku no kiba',\n", - " '2 yosougai da ne sono damage',\n", - " '3 atama ni makka na bara wo',\n", - " '4 kirei na sakasete yaru sa',\n", - " 'yes! got back my life!!',\n", - " 'yes! i got back my life!!',\n", - " '1 asai chie de hineridase',\n", - " '2 ima ni ikinokoru sube wo',\n", - " '3 pride wa toki ni yaiba',\n", - " '4 kiriotoseba yo nimaijita',\n", - " 'yes! got back my life!!',\n", - " 'yes! i got back my life!!',\n", - " 'devils back bone devils back bone',\n", - " 'buzama ni owarasete yaru sa',\n", - " 'devils back bone devils back bone',\n", - " 'onore ni asu wa nai to shire',\n", - " 'devils back bone devils back bone',\n", - " 'notauchi mawaru mushikera ga',\n", - " 'devils back bone devils back bone',\n", - " 'saigo da semete hade ni shine',\n", - " 'ikuyo !',\n", - " 'kyou mo kono mune wa haritsumeta mama',\n", - " 'houkago ni tsutsumarete kimi o miteru lady, ready?',\n", - " 'zutto ashinami wa sorowanai mama',\n", - " 'tsuzuku kara naisho da yo sukoshizutsu ne lady, ready?',\n", - " 'shirisugite shiranai kara (question and answer)',\n", - " 'kikoenai furi ga jouzu ni natte (question and answer)',\n", - " 'nee shinkokyuu hitotsu shitara me o akete',\n", - " 'jimonjitou yamete nanigenaku ohayou tte itchatteru',\n", - " 'akiru kurai zenbu kimi ga hoshii yo haato wa namida de ippai',\n", - " 'koi no iroha to ka mada wakattenai nda',\n", - " 'nandomo kurikaesu kedo sunzen de mata jikai e',\n", - " 'sweet na otomegokoro wa ainiku toriatsukattenai no desu',\n", - " 'nee, kore ga i love you?',\n", - " 'yatto te ni ireta hazu no panorama',\n", - " 'nihou susumi nihou sagaru nande? dakedo lady, ready?',\n", - " 'gooru dekinakucha tomarenai kara',\n", - " 'wakaranai mama demo ne ii yo, dakara lady ready?',\n", - " 'kinou no kotae nante sa (question and answer)',\n", - " 'kyou no kotae no mae de wa hora ne (question and answer)',\n", - " 'mou kakusesou mo nai kurai suki da kara',\n", - " 'shiranai koto wa itsuka shiretara ii ka na tte itchaou ka na',\n", - " 'toritomenai shiin demo daiji da kara ne andaarain o hiite',\n", - " 'koi no shikenkamoku ni kuwaeteoite yo',\n", - " 'toki ni kimi no kokoro ni nanbyaku mairu no distance?',\n", - " 'nante ne ki ni shisugi ka na dakedo sore ga honshin na no desu',\n", - " 'konna, anna toki wa dou shitara ii no?',\n", - " 'nareta merodi o kuchizusamu you ni',\n", - " 'kimi no naka no watashi wa doko ni iru no?',\n", - " 'guruguru mawatte shirokujichuu, risaitaru!',\n", - " 'someday i really really send it, precious for you!',\n", - " 'someday i really really send it',\n", - " 'itsuka sono hi ga kitara taisetsu na koe o kiite',\n", - " 'koi ni yoyaku rokuga wa arienai kara nogasanaide',\n", - " 'akiru kurai zenbu kimi ga suki da yo haato wa egao de ippai',\n", - " 'koi no iroha mo sukoshi wakaritai nda',\n", - " 'nandomo kurikaesu kedo sunzen de mata jikai e',\n", - " 'sweet na otomegokoro wa izen toriatsukattenai no desu',\n", - " 'nee, kore ga i love you?',\n", - " 'someday i really really send it, precious for you!',\n", - " 'someday i really really send it, precious for you!',\n", - " 'someday i really really send it, precious for you!',\n", - " 'someday i really really send it, precious for you!',\n", - " 'yume no tsuzuki',\n", - " 'sore tte kitto warau tame...',\n", - " 'hito wa kizutsuite mo mata aruku n da ne...',\n", - " 'shinjiru michi yuku',\n", - " 'sureba sono tabi de kanarazu',\n", - " 'soba ni aru kawaranu',\n", - " 'takara wo shiru',\n", - " 'nagaku tsuzuku michi no ue de',\n", - " 'meippai chikara tsuyoku arukou wo',\n", - " 'i wish lala kimi ga waraeba',\n", - " 'sekai juu ga minna happy na n da',\n", - " 'i wish lala',\n", - " \"say hello to what's waiting\",\n", - " 'lala lala',\n", - " 'cross road lala...',\n", - " 'furi mukeba tsurai nigai',\n", - " 'monokuro sekai no you da demo',\n", - " 'aruki dashita sono toki kara',\n", - " 'kawa tte iku n da kako no ga ga',\n", - " 'kizukeba hora mata hitotsu boku dake no iro ga aru',\n", - " 'sore dake de...',\n", - " 'i wish lala kimi ga waraeba',\n", - " 'sekai juu ga minna happy na n da',\n", - " 'i wish lala',\n", - " \"say hello to what's waiting\",\n", - " 'lala lala',\n", - " 'i wish lala kimi ga waraeba',\n", - " 'sekai juu ga minna happy na n da',\n", - " 'i wish lala',\n", - " \"say hello to what's waiting\",\n", - " 'lala lala',\n", - " 'cross road lala...',\n", - " 'furi mukeba tsurai nigai',\n", - " 'monokuro sekai no you da demo',\n", - " 'aruki dashita sono toki kara',\n", - " 'kawa tte iku n da kako no ga ga',\n", - " 'kizukeba hora mata hitotsu boku dake no iro ga aru',\n", - " 'sore dake de...',\n", - " 'mayonaka hibiku uta ni hikiyoserare masquerade',\n", - " 'mayoikomu niwa tobira wo akete dancing with fire',\n", - " 'no suso de kikazaru kimi to',\n", - " 'sotto shikou no motto hibbatte kono',\n", - " 'hazumu terase haneru moving shoes & doll',\n", - " 'ai no yoru kiri ni dakarete fukaku amaku suberu',\n", - " 'dare hitori jama wa sasenai subete futari no tame',\n", - " 'mabayui yubi de katamuke leading emotion',\n", - " 'matte kokkei na isso ubatte kono',\n", - " 'ginyuushijin ga sakebu marude swinging moon & soul',\n", - " 'ai no yoru hoshi ni dakarete yakeru suhada sukeru',\n", - " 'kami no yoru suna ni magirete yureru futari no kage',\n", - " 'ai no yoru kiri ni dakarete fukaku amaku suberu',\n", - " 'dare hitori jama wa sasenai subete futari no tame',\n", - " 'ai no yoru hoshi ni dakarete yakeru suhada sukeru',\n", - " ...]},\n", - " 'data': ['waterfall',\n", - " 'kikoeru kanata ni',\n", - " 'hitori omoide tadoreba',\n", - " 'oh',\n", - " 'mayotta my way to home',\n", - " 'subete kakaete',\n", - " 'hitogomi no naka',\n", - " 'wandered',\n", - " 'ano toki sagashita basho',\n", - " 'now i find the way, can go stronger',\n", - " \"flyin' high forever\",\n", - " 'egai ta mirai no colors afureteku',\n", - " 'kasaneta omoi no ashita ga',\n", - " 'ima kara hajimaru',\n", - " 'hitomi sora sazuni aruki dasuru true story, my own',\n", - " 'night fall',\n", - " 'anata no yokogao',\n", - " 'ima mo asenai manazashi',\n", - " 'oh',\n", - " 'fuan ni se wo muke',\n", - " 'jiyuu atsumete',\n", - " 'kitsui ta kokoro',\n", - " 'wishing',\n", - " 'saki dasu',\n", - " 'atarashi my flow',\n", - " 'now i find the way, can go stronger',\n", - " \"flyin' high forever\",\n", - " 'deaeta kiseki no ato uketomete',\n", - " 'tsudutta omoi no subete wo',\n", - " 'ima nara hanaseru',\n", - " 'hitomi sora sazuni tsukuridasu no true story, my own',\n", - " 'now i find the way, can go stronger',\n", - " \"flyin' high forever\",\n", - " 'egai ta mirai no colors afureteku',\n", - " 'kasaneta omoi no ashita ga',\n", - " 'ima kara hajimaru',\n", - " 'hitomi sora sazuni aruki dasuru true story, my own',\n", - " 'yami wo seou rekishi taiki wo kogasu',\n", - " 'machi no rhythm ni himei no opera show time',\n", - " 'kakusei no kodou',\n", - " 'shikaku chokugeki suru bishou wa sequence',\n", - " 'shinshi shukujo no capsule kudake star voice',\n", - " 'mirai wo musaboru',\n", - " 'tokihanatsu yogen sunda chikara no kehai',\n", - " 'hametsu teki chinou ga baberu azamuku',\n", - " 'shinshu iroke ni koori no peace keep down',\n", - " 'kakedashita yabou',\n", - " 'semari kuru yokan nara konya rekuiemu',\n", - " 'yurugasu oto ni naru',\n", - " \"cyclone baby you're get over now\",\n", - " 'kokoro mo shihai suru',\n", - " 'cyclone baby can you start everything?',\n", - " 'android sae mo kyoufu to nemuru',\n", - " 'midnight ni itoshi no berubetto freedome',\n", - " 'seiki no kanata ni',\n", - " '\"eien\" no maryoku sae tameiki ni kaeru',\n", - " 'kanjite netsu ni naru',\n", - " \"cyclone baby you're get over now\",\n", - " 'sono te de shihai suru',\n", - " 'cyclone baby can you start everything?',\n", - " 'furuedasu kibou hieta zetsubou no tame',\n", - " 'hikari no toki wo koete kore ga requiem',\n", - " 'yurugasu oto ni naru',\n", - " \"cyclone baby you're get over now\",\n", - " 'kokoro mo shihai suru',\n", - " 'cyclone baby can you start everything?',\n", - " 'surudoi kaze ni naru',\n", - " \"cyclone baby you're get over now\",\n", - " 'subete wo shihai suru',\n", - " 'cyclone baby can you start everything?',\n", - " 'i see passion in your eyes',\n", - " \"of a love that you can't hide\",\n", - " 'atsuku sayaite',\n", - " 'tamerattari shinaide',\n", - " 'daite',\n", - " 'i see passion in your eyes',\n", - " 'mou oshiete itsumom shritakatta himitsu',\n", - " 'donna yumemiteruno donna souzou shiteiruno',\n", - " 'kotaenai tada akaku somaru hoho no',\n", - " 'koi no aizu wa the passion in your eyes',\n", - " 'i see passion in your eyes',\n", - " \"of a love that you can't hide\",\n", - " 'atsuku sayaite',\n", - " 'tamerattari shinaide',\n", - " 'i see passion in your eyes',\n", - " \"like a fire that's burning blue\",\n", - " 'mune ga takaburu ooiku te wo hiraite',\n", - " 'daite',\n", - " 'i see passion in your eyes',\n", - " 'sotto oshiete itsumo shrirtakatta himitsu',\n", - " 'donna koto shiteruno donna keiken shiteiruno',\n", - " 'kotaenai tada akaku somaru hoho no',\n", - " 'koi no aizu wa the passion in your eyes',\n", - " 'i see passion in your eyes',\n", - " \"of a love that you can't hide\",\n", - " 'atsuku sayaite',\n", - " 'tamerattari shinaide',\n", - " 'i see passion in your eyes',\n", - " \"like a fire that's burning blue\",\n", - " 'mune ga takaburu ooiku te wo hiraite',\n", - " 'daite',\n", - " 'i see passion in your eyes',\n", - " 'i see passion in your eyes',\n", - " \"of a love that you can't hide\",\n", - " 'atsuku sayaite',\n", - " 'tamerattari shinaide',\n", - " 'i see passion in your eyes',\n", - " \"like a fire that's burning blue\",\n", - " 'mune ga takaburu ooiku te wo hiraite',\n", - " 'daite',\n", - " 'rice wa suki ka, japan no otoko nara',\n", - " 'power wo tameruze, ashita no rising sun',\n", - " 'chicken wa suki ka, body ni iize',\n", - " 'slim na karada wa, omae no tame ni',\n", - " 'yume wo misete yo, futari no yume',\n", - " \"don't close your eyes\",\n", - " \"i'm on fire you need fire\",\n", - " 'just tonight...',\n", - " \"i'm the trigger!\",\n", - " 'japan japan japan',\n", - " 'itoshii onna ga nemuru machi',\n", - " 'japan japan japan',\n", - " 'shinjita ai ni, massugu ni',\n", - " 'japan japan japan',\n", - " 'gohan wo tabete tsuyoku nare',\n", - " 'japan japan japan',\n", - " \"i'm the fire\",\n", - " '\"i live in japan\"',\n", - " 'everyday everynight, hard na mainichi',\n", - " 'utauze sing a song, omae ni love song',\n", - " 'hold me tight konya wa, omae to all night long',\n", - " 'aishite kiss shite, never never change',\n", - " 'egao misete yo, ore no tame ni',\n", - " \"don't close your eyes\",\n", - " \"i'm on fire you need fire\",\n", - " 'just tonight...',\n", - " \"i'm the trigger!\",\n", - " 'japan japan japan',\n", - " 'itoshii onna wo mamori nuite',\n", - " 'japan japan japan',\n", - " 'motto tsuyoku daite',\n", - " 'japan japan japan',\n", - " 'misoshiro nomindara omoi dashite',\n", - " 'japan japan japan',\n", - " \"i'm the fire\",\n", - " 'ore ga shindemo, omae wa shinu na, daite yaru, gyuu---u',\n", - " 'yume wo misete yo, futari no yume',\n", - " \"don't close your eyes\",\n", - " \"i'm on fire you need fire\",\n", - " 'just tonight...',\n", - " \"i'm the trigger!\",\n", - " 'japan japan japan',\n", - " 'itoshii onna wo dakishimete',\n", - " 'japan japan japan',\n", - " 'motto tsuyoku tsuyoku',\n", - " 'japan japan japan',\n", - " 'omae no tame ni ikite yuku',\n", - " 'japan japan japan',\n", - " \"i'm the fire\",\n", - " 'exotic na yoru ni, japan, anata to futari, japan',\n", - " 'exotic na yoru ni, japan, omae to... oh',\n", - " 'japan, japan',\n", - " 'fire!!',\n", - " 'japan',\n", - " 'photo frame no mukou oitekita basho wa',\n", - " 'iro asetemo furikaereba soko ni aru',\n", - " 'shounen datta koro kake mawatte itari',\n", - " 'sono waga mono gao ni',\n", - " 'my way my way kowasa shirazu',\n", - " 'blowing in the wind',\n", - " 'ano natsu no nioi fuujikonda kioku',\n", - " 'kaze wo kiru you ni bokura wa kakenuketa',\n", - " 'mabushii hizashi abite',\n", - " 'dokomademo zutto issho da to shinjiteta',\n", - " 'boku no daiji na memories',\n", - " 'guuzen wo yosooi ai ni ittarishita',\n", - " 'awai koigokoro kimi wa ima mo kawaranai',\n", - " 'kudakechitta otona butta kiss mo',\n", - " 'iwai shitai no ni',\n", - " 'i can not i can not akirameta yo',\n", - " 'i go back in time',\n", - " 'umi ga chikakatta ano fuukei e',\n", - " 'are kara tooku hanarete shimatta yo',\n", - " 'kokoro kezurarete',\n", - " 'kawatteiku kedo nakusanai omoi ga aru',\n", - " 'kimi wo aishita memories',\n", - " 'chihei e to mukatte sorezore no michi wo',\n", - " 'gouru wa mada mienai',\n", - " 'tsugi no jinsei e umare kawattemo',\n", - " 'minna ni aitai',\n", - " 'kaze wo kiru you ni bokura wa kakenuketa',\n", - " 'mabushii hizashi abite',\n", - " 'dokomademo zutto issho da to shinjiteta',\n", - " 'boku no daiji na memories',\n", - " 'hibi no naka de okoru deki goto ni',\n", - " 'sayuu sare zu ni ira re ru no nara',\n", - " 'totsu zen no ame mo kanashi mi to wa muen',\n", - " 'sou hei on',\n", - " \"it's moving, it's turning\",\n", - " \"it's the system of alive\",\n", - " 'living life, making love',\n", - " 'there is the system forever',\n", - " 'megu ru kise tsu wo kaze ga hakon de',\n", - " 'ame no nokori ga wo kimi ga sara u',\n", - " 'sou shite kokoro wa aozora wo egaki kaga yaki',\n", - " 'ita zura na ai wa katachi kae te',\n", - " 'kimochi no kazi wo toru',\n", - " \"i don't know where i will go to\",\n", - " 'fuan tei dakara nega u',\n", - " 'kono guuzen wa lucky day',\n", - " 'kimi ga sai go no shining love',\n", - " '*ikite iku system wa',\n", - " 'tan jyun na shiku mi jya nai kedo',\n", - " 'ima tashika ni wakaru no wa',\n", - " 'kuyama nai mirai tsu kuru koto',\n", - " \"it's moving, it's turning\",\n", - " \"it's the system of alive\",\n", - " 'living life, making love',\n", - " 'there is the system forever*',\n", - " 'toki wa yuru yaka ni iro wo kae te',\n", - " 'hyou jyou kae naga ra',\n", - " 'mune ni kioku to shite yaki tsuke te',\n", - " 'omoi de ga uma reru',\n", - " \"i don't know where i will go to\",\n", - " 'mai nichi ga onaji jya nai',\n", - " 'sono isshun demo precious time',\n", - " 'yo ga ake tara loving you again',\n", - " '* repeat',\n", - " 'oh loveland',\n", - " 'mekuru meku natsu no gogo',\n", - " 'dare mo ga',\n", - " 'kokage ni nige kondeta',\n", - " 'yaketsuku',\n", - " 'ishidatami no kanata ni',\n", - " 'yuremeku',\n", - " 'nige misu no naka kara',\n", - " 'moeru you na',\n", - " 'suteppu ni',\n", - " 'mi o makase',\n", - " 'arawareta hito wa',\n", - " 'oh loveland',\n", - " 'hoho ni kobeberu ase ga',\n", - " 'kawaita',\n", - " 'michi no ueni ochiruto',\n", - " 'totsuzen',\n", - " 'konna sabaku no machi ga',\n", - " 'minami no',\n", - " 'oashisu ni kawaru',\n", - " 'oh island',\n", - " 'kitto ano hito no sei',\n", - " 'anata no',\n", - " 'hitomi o mukete',\n", - " 'oh, loveland, oh island',\n", - " 'i love you, i love you',\n", - " 'oh, loveland, oh island',\n", - " 'i love you',\n", - " 'yume no ato',\n", - " 'nadoru yo ni',\n", - " 'kigatsuku to',\n", - " \"mienakunatte 'ta\",\n", - " 'oh loveland',\n", - " 'fui ni araware kieta',\n", - " 'ano hito',\n", - " 'kitto natsu no megami sa',\n", - " 'hikari no',\n", - " 'ai wa koko ni mo aru to',\n", - " 'oh, loveland',\n", - " 'oshie ni kitanda',\n", - " 'oh, loveland, oh island',\n", - " 'i love you, i love you',\n", - " 'oh, loveland, oh island',\n", - " 'i love you',\n", - " 'oh loveland, oh island',\n", - " 'i love you, i love you',\n", - " 'oh loveland, oh island',\n", - " 'i love you',\n", - " 'oh, loveland, oh island',\n", - " 'i love you, i love you',\n", - " 'oh, loveland, oh island',\n", - " 'i love you',\n", - " 'oh loveland, oh island',\n", - " 'i love you, i love you',\n", - " 'oh loveland, oh island',\n", - " 'i love you',\n", - " 'oh loveland, oh island',\n", - " 'i love you, i love you',\n", - " 'oh loveland, oh island',\n", - " 'i love you',\n", - " 'oh loveland, oh island',\n", - " 'i love you, i love you',\n", - " 'oh loveland, oh island',\n", - " 'i love you',\n", - " 'on drums, aoyama jun',\n", - " 'on bass, ito koki',\n", - " 'on guitar, shiina kazuo',\n", - " 'on keyboard, masato matsuda',\n", - " 'on the other keyboard, shigemi toru',\n", - " 'on sax, toki hidefumi',\n", - " 'chorus, cindy, sasaki kumi, murata kazuhito',\n", - " 'oh loveland, oh island',\n", - " 'i love you, i love you',\n", - " 'oh loveland, oh island',\n", - " 'i love you',\n", - " 'original lyrics:',\n", - " '切切蓬蓬 切蓬切蓬',\n", - " '切切蓬蓬',\n", - " '你懂不懂 我像一条龙',\n", - " '你不过一条小小蜈蚣',\n", - " '切切蓬蓬 切蓬切蓬',\n", - " '切切蓬蓬',\n", - " '你懂不懂 我像一条龙',\n", - " '你不过一个小小洋葱',\n", - " '一个天来一个地',\n", - " '你和我相差不知多少里',\n", - " '我就是嫁鸡嫁犬',\n", - " '也不会嫁给你',\n", - " '切切蓬蓬 切蓬切蓬',\n", - " '切切蓬蓬',\n", - " '你懂不懂 我是一条龙',\n", - " '怎能够嫁你小小蜈蚣',\n", - " '一个天来一个地',\n", - " '你和我相差不知多少里',\n", - " '我就是嫁鸡嫁犬',\n", - " '也不会嫁给你',\n", - " '切切蓬蓬 切蓬切蓬',\n", - " '切切蓬蓬',\n", - " '你懂不懂 我是一条龙',\n", - " '怎能够嫁你小小蜈蚣',\n", - " '切切蓬蓬',\n", - " '切切蓬蓬',\n", - " '切切蓬蓬',\n", - " 'chinese pinyin:',\n", - " 'qièqiè péng péng qiè péng qiè péng',\n", - " 'qièqiè péng péng',\n", - " 'nǐ dǒng bù dǒng wǒ xiàng yītiáo lóng',\n", - " 'nǐ bùguò yītiáo xiǎo xiǎo wúgōng',\n", - " 'qièqiè péng péng qiè péng qiè péng',\n", - " 'qièqiè péng péng',\n", - " 'nǐ dǒng bù dǒng wǒ xiàng yītiáo lóng',\n", - " 'nǐ bùguò yīgè xiǎo xiǎo yángcōng',\n", - " 'yīgè tiān lái yīgè de',\n", - " 'nǐ hé wǒ xiāngchà bùzhī duōshǎo lǐ',\n", - " 'wǒ jiùshì jià jī jià quǎn',\n", - " 'yě bù huì jià gěi nǐ',\n", - " 'qièqiè péng péng qiè péng qiè péng',\n", - " 'qièqiè péng péng',\n", - " 'nǐ dǒng bù dǒng wǒ shì yītiáo lóng',\n", - " 'zěn nénggòu jià nǐ xiǎo xiǎo wúgōng',\n", - " 'yīgè tiān lái yīgè de',\n", - " 'nǐ hé wǒ xiāngchà bùzhī duōshǎo lǐ',\n", - " 'wǒ jiùshì jià jī jià quǎn',\n", - " 'yě bù huì jià gěi nǐ',\n", - " 'qièqiè péng péng qiè péng qiè péng',\n", - " 'qièqiè péng péng',\n", - " 'nǐ dǒng bù dǒng wǒ shì yītiáo lóng',\n", - " 'zěn néng gòu jià nǐ xiǎo xiǎo wúgōng',\n", - " 'qièqiè péng péng',\n", - " 'qièqiè péng péng',\n", - " 'qièqiè péng péng',\n", - " 'english translation:',\n", - " 'chick chick boom boom chick boom chick boom',\n", - " 'chick chick boom boom',\n", - " \"do you understand i'm like a dragon?\",\n", - " \"you're nothing but a tiny centipede\",\n", - " 'chick chick boom boom chick boom chick boom',\n", - " 'chick chick boom boom',\n", - " \"do you understand i'm like a dragon?\",\n", - " \"you're nothing but a small red onion\",\n", - " \"we're from the same time and place\",\n", - " \"we're not that much different\",\n", - " \"i'll even marry a chicken or a dog\",\n", - " \"but i'll never ever marry you\",\n", - " 'chick chick boom boom chick boom chick boom',\n", - " 'chick chick boom boom',\n", - " \"do you understand i'm like a dragon?\",\n", - " 'how could i marry a tiny centipede like you?',\n", - " \"we're from the same time and place\",\n", - " \"we're not that much different\",\n", - " \"i'll even marry a chicken or a dog\",\n", - " \"but i'll never ever marry you\",\n", - " 'chick chick boom boom chick boom chick boom',\n", - " 'chick chick boom boom',\n", - " \"do you understand i'm like a dragon?\",\n", - " 'how could i marry a tiny centipede like you?',\n", - " 'chick chick boom boom',\n", - " 'chick chick boom boom',\n", - " 'chick chick boom boom',\n", - " 'donna kotoba mo',\n", - " 'kimochi wo tsutaekirenai',\n", - " 'sono mune ni dakarete',\n", - " 'hontou no itoshisa wo shiru',\n", - " 'eien no nagasa dewa tarinai kurai',\n", - " 'ichiban chikaku de mitsumete itai',\n", - " 'happy birthday to you!',\n", - " 'anata ga umareta hi',\n", - " 'yakusoku sareta mirai to no meguriai',\n", - " 'miracle day',\n", - " 'yureru kyandoru',\n", - " 'honoo wa moetsukiyou to',\n", - " '?(me) no mae no anata to',\n", - " 'chikai wa zutto kagayaiteru',\n", - " 'setsunasa ni oshierarete kidzuita no wa',\n", - " 'ai suru hoka ni wa nani mo iranai',\n", - " 'happy birthday to you!',\n", - " 'kono hi ga nakattara',\n", - " 'watashi wa hitorikiri ai kara hagureteta',\n", - " 'miracle day',\n", - " 'tatoe futari ni',\n", - " 'donna ni toki ga',\n", - " 'sugisattemo',\n", - " 'kyou to iu hi wo',\n", - " 'wasurenai wa',\n", - " 'happy birthday to you!',\n", - " 'anata ga umareta hi',\n", - " 'yakusoku sareta mirai to no meguriai',\n", - " 'whoo! whoo!',\n", - " 'inside out butta kire bonnou tatsu trigger',\n", - " 'shou mo nai pride nante gomi no hi ni sutete',\n", - " 'issaigassai karu samurai it crazy',\n", - " 'nainen no kikan ga unari o ageru nda',\n", - " 'life it goes on tadareta sekai datte',\n", - " 'nageiteru sono mae ni',\n", - " 'kaze yo izanae michi naru hou e',\n", - " 'untamed~',\n", - " 'wakiagaru netsu to (do not be dominated) kusuburu tamashii ga mune o shimetsukeru',\n", - " '(some way~)',\n", - " \"moeru hi no you ni there, i'll find my place\",\n", - " \"under the radar i'm reaching for the sky\",\n", - " 'deep inside buppanase honnou sasu frequence',\n", - " 'beat & rhyme & flow dangan o mashingan e souten',\n", - " 'ittou ryoudan kyokutou winds to blow down',\n", - " 'michi naki michi e to migaite susumu nda',\n", - " 'as time goes by oto no yaiba de motte',\n", - " 'kirihiraku sono saki ni',\n", - " 'ware o michibike hikari no hou e',\n", - " 'untamed~',\n", - " 'hakidasu itami ni (do not be dominated) shibireru karada ga mata uzukidasu',\n", - " '(some way~)',\n", - " 'tozashita hitomi ni now i face the change',\n", - " 'illuminate the glow i have inside',\n", - " 'blaze your mind~',\n", - " \"do not be dominated do not let'em take you away\",\n", - " '(fight! fight!)',\n", - " 'dohatsu ten tsuku raimei todoroke bakuon ride on',\n", - " 'do what you believe is right do what you can do at a time',\n", - " '(fight! fight!)',\n", - " 'dosuru kami no shoutei kurawaserya ii nda',\n", - " 'untamed~',\n", - " 'wakiagaru netsu to (do not be dominated ) kusuburu tamashii ga mune o shimetsukeru',\n", - " '(some way~)',\n", - " \"moeru hi no you ni there, i'll find my place\",\n", - " \"under the radar i'm reaching for the sky\",\n", - " 'hagane no kiba o toge umeki to koe o hage',\n", - " \"i'm gonna live out my life untamed~\",\n", - " '(fight! fight!)',\n", - " 'ore no machi ga moeru, ano tai sanji de',\n", - " 'omae no uchi mo moete, hisan na monogatari',\n", - " 'moeagaru honou, nigemadou mono ga',\n", - " 'tori kakomu hi no te ni',\n", - " 'kemuri ga me ni shimita',\n", - " 'fire! burning your spirit fire',\n", - " 'fire',\n", - " 'kako wo furikaeru, hima nante mounai',\n", - " 'osoikakaru kodoku, kizuita sono toki ni',\n", - " 'ano ko ga abunai',\n", - " 'itoshiki hito yo',\n", - " 'isoge hayaku! ai wo mamoru tame',\n", - " 'fire! burning your spirit fire',\n", - " 'fire! burning your spirit fire',\n", - " 'burning your spirit fire',\n", - " 'isoge hayaku! ai wo mamoru tame',\n", - " 'shinjiru mono subete, honou no naka he to',\n", - " 'fire! burning your spirit fire',\n", - " 'fire! burning your spirit fire',\n", - " 'burning your spirit fire',\n", - " 'fire',\n", - " 'itami ni modaeru',\n", - " 'hitoshizuku no ai',\n", - " 'nomihosezu ni iru',\n", - " 'uzuite',\n", - " 'kono mama',\n", - " 'oku ni yariagete',\n", - " 'nage dasezu ni iru',\n", - " 'if we look up at this beautiful sky',\n", - " 'maybe we can be innocent again',\n", - " \"it's never late to make a change\",\n", - " 'kegarete',\n", - " 'kowareta karada dake wo',\n", - " 'karamase tsuite',\n", - " 'nige dasanaide yo',\n", - " 'surikiresou deshou?',\n", - " 'ima sara nakidasanaide ne',\n", - " 'mata hi ga ochiteku',\n", - " 'being lost',\n", - " 'ai no nai kajitsu',\n", - " 'kiku mimi motazu ni',\n", - " 'kusarikakete yuku',\n", - " 'kutte wa kuwarete',\n", - " 'doko made kuchiru ka?',\n", - " 'hikari naki ana e',\n", - " 'strip yourself of pride',\n", - " \"you won't be prisoner of the artificial world\",\n", - " \"don't try to fkae it, just be real\",\n", - " 'ai no ki',\n", - " 'sakasete',\n", - " 'kawaita nobara ni wa hana wo',\n", - " 'kokoro ni wa eien wo',\n", - " 'itsuka wa',\n", - " 'todoku no?',\n", - " 'hajimete mita yume no tsuzuki wo',\n", - " 'mada tooi keredo',\n", - " 'being lost',\n", - " 'ah',\n", - " 'saigo kurai',\n", - " 'kirei ni soko',\n", - " 'tonde misete',\n", - " 'kegarete',\n", - " 'kowareta karada dake wo',\n", - " 'karamase tsuite',\n", - " 'nige dasanaide yo',\n", - " 'itsuka wa',\n", - " 'todoku no?',\n", - " 'hajimete mita yume no ori wo',\n", - " 'mada tooi keredo',\n", - " 'being lost',\n", - " 'kimi no hitomi ni nanika mitsumeteru no ka',\n", - " 'yume ni moeteru boku no senaka yo',\n", - " 'dainishiku sasaitemo yurushitekure',\n", - " 'kobanaka naranai jibun no sora',\n", - " \"music for the people lovin'\",\n", - " 'tsubasa o hirogete',\n", - " \"music for the people dancin'\",\n", - " 'chikara wo shinjite',\n", - " \"music for the people lovin'\",\n", - " 'tsubasa o hirogete',\n", - " \"music for the people dancin'\",\n", - " 'konotte yu piku torii',\n", - " 'hito wa daredemo nanika o ni nokoneru',\n", - " 'tooi no omoi hi yume o koiga shime',\n", - " 'naraeta furumade matta fure',\n", - " 'yaru dake yaru asada ore chikinu you',\n", - " \"music for the people lovin'\",\n", - " 'kaze omoi hirogara',\n", - " \"music for the people dancin'\",\n", - " 'tori yori tsubayaku',\n", - " \"music for the people lovin'\",\n", - " 'kaze omoi hirogara',\n", - " \"music for the people dancin'\",\n", - " 'mou tsugu ikuteri',\n", - " 'shita ni to wa jibun to atakaruno sa',\n", - " 'ichi mono senshi ni',\n", - " 'makenare nai',\n", - " \"music for the people lovin'\",\n", - " 'tsubasa o hirogete',\n", - " \"music for the people dancin'\",\n", - " 'chikara wo shinjite',\n", - " \"music for the people lovin'\",\n", - " 'tsubasa o hirogete',\n", - " \"music for the people dancin'\",\n", - " 'konotte yu piku torii',\n", - " 'yesterday sutorobo no naka',\n", - " 'atteta ki ga shita kedo',\n", - " 'if nante zettai iwanai',\n", - " 'tonari no heya no youna kyori',\n", - " 'kuruma no reesu me de otte',\n", - " 'kuyashisouna kao de',\n", - " 'zuuu to yukkuri to... hakkiri to...',\n", - " 'understand wakaru tte',\n", - " 'kao de wa ne kitto... itteta...',\n", - " 'kokoro no naka owari ga one more wowo day',\n", - " 'yoru ga kowai tte dare ni kiita no',\n", - " 'ittenai yo',\n", - " 'sonna munasawagi owaranai....',\n", - " 'yuuutsu ni nani mitsumeteru no ugokazu',\n", - " 'tooku dokoka de mou ichido dake',\n", - " 'when i kanwanai jikan.... koete',\n", - " 'so i modorenai michi wo hashitte',\n", - " 'owaranai yume dake wo',\n", - " 'tomaranai otonashiku matteru...',\n", - " 'samishisou ni itomeru long long way',\n", - " 'doa ga hiraiteitemo 1 more night',\n", - " 'wana ni hamtteru one wrong way',\n", - " 'mada mada kodomo de modorenai',\n", - " 'dou ni ka narisou de kowai',\n", - " \"it doesn't mater\",\n", - " 'what i need is ono more night',\n", - " 'sonna ni jikan wo miteru to',\n", - " 'mou konna yume ni natteru',\n", - " 'zuuu to hitori de owaranai hitorikiri',\n", - " 'tada hamatteiru',\n", - " 'mata haretekita ne',\n", - " 'mata ganbattetan da ne sugoi yo',\n", - " 'sonna sukai kyuuna sukooru',\n", - " 'donna ni sukejuuru kawatte',\n", - " 'suicchi shitemo',\n", - " 'sonna sutairu itsu demo',\n", - " 'suton ikinari sutoppu',\n", - " 'ittai doko made stone furafura',\n", - " 'futon no ha mitai ni',\n", - " 'yuu yuu to ochiteku',\n", - " 'itsu mademo strongna kokoro motterarenai',\n", - " 'ame ga fureba hitsuyou da ne sonna problem',\n", - " 'motto wakaritai yo ne subete zenbu shiritai',\n", - " 'shizukasugiru yoru wo',\n", - " 'when i',\n", - " 'mata kaaten wo shimeru tabi',\n", - " 'moon love tsuki nomae no kumo ni kakure',\n", - " 'i ga owaranai still w/z me itsumo',\n", - " 'motto motto nagaku sono kiss',\n", - " 'toozakaru nagai',\n", - " 'tomorrow now sugu soko ni',\n", - " 'mystery & wowo oshikake',\n", - " 'nemutteta un wo tsukaimakutte',\n", - " 'yarinokoshita sonna ni yo ne',\n", - " 'namida koraete irarenai',\n", - " 'namiuchi no jibun wo ukabe',\n", - " 'naitara make datte itteta yo ne',\n", - " 'asobi ga naoranai you da ne',\n", - " 'doko made meiwaku kaereba',\n", - " 'sou janai chigau sekai',\n", - " 'nodo kara nomikonde',\n", - " 'soko made kawarenai yo ne',\n", - " 'doko made karechimaeba ii no',\n", - " 'muri itte namida ga tomaru',\n", - " 'doko made nagareochiteku',\n", - " 'hana no sugu saki made ne',\n", - " 'tomadowazu me ga sameteku',\n", - " 'black silent wow wow',\n", - " 'black silent wow wow black on beat',\n", - " 'night edge tsume wo suberasete hiki-saku yoru ni wa koe mo iranai',\n", - " 'timeless kage ni furi-mukeba tsukareta kao no kodoku ga waratta',\n", - " 'maybe dare wo ura kireba tsunagari tsuzukete irareru no darou?',\n", - " 'don\\'t know shinjite \\'ta netsu wa \"ai\" to iu kotoba moeta maboroshi',\n", - " 'hanasaku mori wa bitoku no kuro ni',\n", - " 'black silent wow wow surudoku break in heart',\n", - " 'black silent wow wow hageshiku black on beat',\n", - " 'end of ... nakushita mono yori nakushisou na koto ni obieteta kara',\n", - " 'so long zetsubou no asu wo furi-harau tokei ni mi wo yudaneru',\n", - " 'sei naru mori wa fuhen no kuro ni',\n", - " 'black silent wow wow hisoka ni break in heart',\n", - " 'black silent wow wow kanashiku black on beat',\n", - " 'black silent wow wow',\n", - " 'black silent wow wow',\n", - " 'black silent wow wow surudoku break in heart',\n", - " 'black silent wow wow hageshiku black on beat',\n", - " 'black silent wow wow hisoka ni break in heart',\n", - " 'black silent wow wow kanashiku black on beat',\n", - " 'itsunomanika futari koi ni ochiteku seori- doori no story tv dake no story',\n", - " \"unzari shiteta n' datte hanasu kimi mae ni kokoro ga ugoku soshite me to me ga au\",\n", - " 'nani ka tagai no mune no naka saguriatte itsumo no kaze kyou no futari wo tsutsumu',\n", - " 'kaeri giwa kimi no kotoba wa \"ashita ne tte\" sono egao ga ore no kokoro wo',\n", - " 'kagayaki tsuzukeru hoshi no you',\n", - " 'hikari tsunagu kono saki e',\n", - " 'i need you always look for love',\n", - " 'i miss you anytime think of love',\n", - " 'itsunohinika kimi to futari yume mite sugisaru hibi sae nanika wo mitashite',\n", - " 'deau kimi no utsuroge na kao mae ni kokoro ga ugoku soshite kuchi wo hiraku',\n", - " 'shaberu kimi no kotoba hitotsu hitotsu tsutawatte kimagure fuku kaze kokoro wo sukasu',\n", - " 'kaeri giwa kimi no kotoba \"tomodachi de\" sono egao ni ore wa nido sui-komareteku',\n", - " 'omoi tsunoru kokoro wa itsu mademo',\n", - " 'iro asenai sora no you',\n", - " 'i need you always look for love',\n", - " 'i miss you anytime think of love',\n", - " 'hey, mr. mr.! kyou no choushi dou? toka icchatteru itatte normal na face',\n", - " 'kikeba koi bana hiru dora bari no story senchi na houkou',\n", - " 'hitori de iru yori raku ni raku ni ongaku tomo come with me, with me',\n", - " 'get down, get down you are the one, you are the \"one\"',\n", - " 'i need you always look for love',\n", - " 'i want you one love forever',\n", - " 'kagayaki tsuzukeru hoshi no you',\n", - " 'hikari tsunagu kono saki e',\n", - " 'i need you always look for love',\n", - " 'i miss you anytime think of love',\n", - " 'i need you always look for love',\n", - " 'i want you one love forever',\n", - " 'ittai nani wo shiteitanda zutto koko de miteitanda',\n", - " 'kyoukaisen no kochira gawa de kyoukaisen wo miteitanda',\n", - " 'ittai kimi wa donata desu ka ittai boku wa doitsu desu ka',\n", - " 'sousa bokura wa messiah jyanai dare mo suku e nai yo',\n", - " 'wakatteirunda...... wakatteitanda......',\n", - " 'kimi wa kami wo shinjimasu ka kami wa kimi wo suku imasu ka',\n", - " 'omoku nagumu wa tare komi soko ni taiyou wa nobora nai',\n", - " 'kimi wa ai wo shinjimasu ka boku ni nani wo motomemasu ka',\n", - " 'bokura nani ga dekiru darou ima kono toki ni',\n", - " 'wasurechyainai yo...... wasurechyainai yo......',\n", - " 'we can find a way we can find a way',\n", - " 'get over now! nori koero bokura wo hiki saku borderline',\n", - " 'oh oh oh oh fuki tobasunda',\n", - " 'come on now! mou ni do to nigiritta sono te hanasanai yo',\n", - " 'oh oh oh oh ima wa kanawanai yume demo itsuka atarashii sekai de',\n", - " 'kitto bokura wa tsukami toreru',\n", - " 'give you love! i give you my love',\n", - " 'yappari ima mo sekaijyu wa dare mo kare mo mukanshin de',\n", - " 'gasorin no tanka wo nageite yuuchoku ni calory ki ni shiteru',\n", - " 'boku ni chizu wa yaburetanda mou ni do to modosenai kamo ne',\n", - " 'ookuni wa haken wo arasoi matakuri kaesu',\n", - " 'wakatteiru hazu sa...... wakatteiru hazu sa......',\n", - " 'we can find a way we can find a way',\n", - " 'take it back! torimodo se bokura ga ageta risou wo',\n", - " 'oh oh oh oh tachiagarun da',\n", - " 'come on now saa isoge line wo koete hashiru no sa',\n", - " 'oh oh oh oh ima wa egakenai iro demo itsuka atarashii mirai de',\n", - " 'kitto kagayaki wo hanatsu darou',\n", - " 'give you love i give you my love',\n", - " 'check it out! hey bro keep going!',\n", - " '(aways) tsutaetai kono omoi (we gonna do that)',\n", - " \"kokoro kimi to tomo ni (dakara don't give up!)\",\n", - " 'keshite akiramenai de (get up! stand up! hey yo!)',\n", - " 'hashiri tsuzukero',\n", - " 'tell me a way where we go cross the borderline',\n", - " 'get over now! nori koero bokura wo hiki saku borderline',\n", - " 'oh oh oh oh fuki tobasunda',\n", - " 'come on now! mou ni do to nigiritta sono te hanasanai yo',\n", - " 'oh oh oh oh ima wa kanawanai yume demo itsuka atarashii sekai de',\n", - " 'kitto bokura wa tsukami toreru',\n", - " 'give you love! i give you my love',\n", - " 'koudai na sougen no mannaka',\n", - " 'nozoku sougankyou no kanatta',\n", - " 'zou no koushi o mi-okutte',\n", - " 'akashia no ki no shita de',\n", - " 'bokura no kyouri chikazuita',\n", - " 'daichi o kogasu taiyou ni',\n", - " 'futari mitsumeru sono saki de',\n", - " 'gazeru atsusou ni tobi hanete',\n", - " 'mujaki ni hasharu kimi no',\n", - " 'sono egao ni koi o shita',\n", - " \"everybody won't you take a ride\",\n", - " 'take a look inside',\n", - " \"it'll blow your mind\",\n", - " 'take a chance put it all aside',\n", - " \"when the nation's wide\",\n", - " \"you'd be starry-eyed\",\n", - " 'come and join me to take a ride',\n", - " 'to the country side',\n", - " \"we'll be side-by-side\",\n", - " 'step aside jekyll, mr. hyde',\n", - " 'you are now untied',\n", - " 'take a walk on the wild side',\n", - " 'miwatasu kagiri no chiheisen',\n", - " 'nozoku sougankyou no kanata',\n", - " 'shima-uma no mure no hakubyoku ni',\n", - " 'me o shiro kuro suru kimi no',\n", - " 'sono yokogao itoshii',\n", - " 'sodai de hiyoku na rakuen no',\n", - " 'futari mitsumeru sono saki ni',\n", - " 'yuuhi o se-otta kirin tachi',\n", - " 'akashia no ki no shita de',\n", - " 'boku wa kimi ni kisu o shita',\n", - " 'come and join me to take a ride',\n", - " 'to the country side',\n", - " \"we'll be side-by-side\",\n", - " 'step aside jekyll, mr. hyde',\n", - " 'you are now untied',\n", - " 'take a walk on the wild side',\n", - " 'ashi ato wo nokoshite',\n", - " 'sono akashi o shimesu raion',\n", - " 'chikara-dzuyoku ke-dakaku',\n", - " 'sonna fuu ni ikitai',\n", - " 'only you...',\n", - " 'only you...',\n", - " 'only you...',\n", - " 'only you...',\n", - " 'sou ano hi bokutachi wa futari deatta ne',\n", - " 'mada adokenasa ga nokotteta ano yokogao wasurenai',\n", - " 'hajimete atta hi kara kimochi wo ienai mamade',\n", - " 'sugoshite kita kedo kyou koso wa kono omoi todokeru yo',\n", - " 'kimi dake ni ( kiss kiss kiss) donna toki mo',\n", - " 'boku ga zutto kimi no soba ni iru yo',\n", - " '( kiss kiss kiss) kimi dake wo',\n", - " 'kore kara mo mitsumete itai',\n", - " 'i wanna feel you motto',\n", - " 'subete no ai wo komete kiss okuru yo',\n", - " 'mujaki ni warau kimi no',\n", - " 'koe wa itsu no hi mo boku wo',\n", - " 'terashite kureteru',\n", - " 'kimi ga iru kara boku mo waraerunda',\n", - " 'kimi dake ni ( kiss kiss kiss) donna toki mo',\n", - " 'boku wa kimi wo mamori tsutdzukeru yo',\n", - " '( kiss kiss kiss) kimi dake wo',\n", - " 'itsumademo dakishimete itai',\n", - " 'i wanna feel you motto',\n", - " 'subete no ai wo komete kiss okuru yo',\n", - " 'i just want you',\n", - " 'kimi ga ireba hoka ni nani mo iranai',\n", - " 'i just need you',\n", - " 'kimi no zenbu i love you',\n", - " 'always kimi no tonari ni boku ga iru yo',\n", - " 'always boku no tonari ni kimi ga iru yo',\n", - " 'ikura kagaitemo atama no naka wa kimi dake de muchuu no boku wo',\n", - " 'tomerarenai boku no subete wo kagetekitai',\n", - " 'kimi no soba ni',\n", - " 'kimi dake ni ( kiss kiss kiss) donna toki mo ( kimi',\n", - " 'dake ni~ whoa~)',\n", - " 'boku ga zutto kimi no soba ni iru yo ( kimi no soba ni oh~)',\n", - " '( kiss kiss kiss) kimi dake wo ( uh yeah~)',\n", - " 'kore kara mo mitsumete itai ( oh no~)',\n", - " 'i wanna feel you motto',\n", - " 'subete no ai wo komete kiss okuru yo (komete kiss okuru yo~)',\n", - " 'kiss kiss kiss donna toki mo',\n", - " 'donna toki mo baby~',\n", - " 'kiss kiss kiss kimi dake wo ( wow~)',\n", - " 'i wanna feel you motto',\n", - " 'subete no ai wo komete kiss okuru yo',\n", - " 'tsu datte aide sukuwa re ta jijitsu o hito wa wasure rare nainda',\n", - " 'spiral galaxy yo outou seyo',\n", - " 'hito wa kako o ikiru mono de wa naku',\n", - " 'sugosu jikan ga mijikaku tomo',\n", - " 'gyoushuku no toki no naka manabu beki koto mo arou',\n", - " 'peace & love kitto need',\n", - " 'kieru kokorozashi kou ubau twilight',\n", - " 'tachikire nu kizuna ore wa tsuyoku',\n", - " 'mata tsuyoku furuitata shi genkai he',\n", - " 'wo',\n", - " 'boku ni nokosa re ta suu juu nen',\n", - " 'mogai te nai te iki ta kurai de',\n", - " 'kawari wa shi nai darou',\n", - " \"wo it's too late\",\n", - " 'shinshoku sare ta dai tokai de',\n", - " 'chinbotsu nante atarimae de',\n", - " 'soredemo boku wa zutto ai wo utau n da',\n", - " 'zetsubou no jidai de wakatteru n da yo',\n", - " 'ai dake jya sekai wa sukue nai koto mo',\n", - " 'sou demo',\n", - " 'ai de sukuwa re ta jijitsu o hito wa wasure rare nai n da',\n", - " 'ikidoori no ishi kanbatsu shi ta gankyuu ga',\n", - " 'kakaekon da keshiki wa monokuro de fukanzen na',\n", - " 'kodoku ga taion o ubatta boku wa mimi wo fusagi',\n", - " 'ari mo shi nai kibou no melody sagasu',\n", - " 'itsu datte',\n", - " 'zetsubou no jidai de wakatteru n da yo',\n", - " 'uta jya sekai wa sukue nai koto mo',\n", - " 'sou demo',\n", - " 'kawatte ku negai wo utau yo',\n", - " 'boku dake demo me wa fuse nai',\n", - " 'justice',\n", - " 'clap your hands everybody',\n", - " 'ikiru reason sagashi motome babibusu',\n", - " 'yo close my eyes',\n", - " 'burete kairo panku suru vent blast',\n", - " 'bang! bang! bang! bang!',\n", - " 'just keep the light light',\n", - " 'ikiru light',\n", - " 'heavenly push push push',\n", - " 'kazase fuck',\n", - " 'negau truth truth truth',\n", - " 'all men are created equal',\n", - " 'nee?',\n", - " 'futoumei bakari wakara nai n da yo',\n", - " 'nani ga hito no ai no katachi na no?',\n", - " 'fusagu boku tachi ga iru yo',\n", - " 'majiwaru koto no nai kokoro',\n", - " 'nan hen mo tsutaeyo you to...',\n", - " 'kimi ga nageku yoru mo',\n", - " 'nigedashi taku naru hi mo aru daro',\n", - " 'for your life',\n", - " 'saigo no yoru o utau yo',\n", - " 'arittake no koe o komeru yo',\n", - " 'mou issai no ketsuraku no',\n", - " 'taiyou o nakushita asu sae',\n", - " 'ai no katachi ni kiduke naku te mo',\n", - " 'tsunage awase teku kokoro',\n", - " 'senaka no aita doresu koborete shimai-sōna iyaringu',\n", - " 'midareta kami hito suji mo nai',\n", - " 'odoketa torimaki-tachi watashi ga warawanai no o',\n", - " 'fushigina me o shite mite iru wa',\n", - " 'dress down hayaku mitsukete yo',\n", - " \"son'na ko ni kamatte tsumaranai hazuda wa\",\n", - " 'dress down-iki ga tomaru hodo mitsume raretakutte',\n", - " 'please tell me, tell me why',\n", - " 'dress down wazato kaki ageru',\n", - " 'kami no kaori sae mo hakara reta yūwaku',\n", - " 'dress down anata ga watashi ni muchūninaru mae ni',\n", - " \"i' m melting, melting, melting, melting you\",\n", - " 'dress down wazato kaki ageru',\n", - " 'kami no kaori sae mo hakara reta yūwaku',\n", - " 'dress down wazato hamidashita kuchibeni no maryoku de',\n", - " \"i' m waiting, waiting for you\",\n", - " 'dress down anata ga watashi ni',\n", - " 'muchūninaru mae ni',\n", - " \"i' m melting, melting, melting, melting you\",\n", - " 'haibisukasu no hana ga oka no ue ni saku koro',\n", - " 'tsuyoi kaze ni fukarete tatazundeiru',\n", - " 'kaori tadayottta fushigina shima ni',\n", - " 'genwaku no yorokobi afureteru yo',\n", - " 'emerarudo ga nagareta umi no ue ni hirogatte',\n", - " 'kimi no hosoi suashi mo nami wo kanjiru',\n", - " 'suijou koteeji mawaritsuzukeru',\n", - " 'ganka ni wa nettaigyo no kaaten',\n", - " 'what a marvelous sea i am in!',\n", - " 'hoshi no suna sawagu kimi no shiruetto',\n", - " 'we are too young to fall asleep',\n", - " 'suroo mooshon ni you yo',\n", - " '* sekidou no neiro ni kogasare',\n", - " 'kataku nani ikiru aoi toritachi yo',\n", - " 'oozora ni habataite',\n", - " 'bonnou no hana wo kubi ni sage',\n", - " 'kataku dakiyoseta hosoi sono kata wa',\n", - " 'komugiiro ni tokete hold on',\n", - " 'what a marvelous sea i am in!',\n", - " 'bitamin busoku no shiroi makigai to',\n", - " 'we are too young to fall asleep',\n", - " 'san setto ni terasarete',\n", - " '* repeat',\n", - " 'fukai kono umi e futari no namida wo hisoka ni nagasou',\n", - " 'nanimo kowaku nante nai sa',\n", - " 'te ni shita mono wo ushinau kurai',\n", - " 'arasoi wo matsu koto wo kurikaeshite',\n", - " 'kasumete',\n", - " 'nanimo kamo wo hoshigatte ita',\n", - " 'mayoeru mono no chikai',\n", - " 'mada minu sekai o tsukuridasu koto wo',\n", - " 'kuchihatete iku',\n", - " 'kanashii yume wo saegiru mono wa',\n", - " 'mizukara no yami datte',\n", - " 'if it makes your time stand still',\n", - " \"you'll know what it means\",\n", - " 'why would you want to?',\n", - " 'makes me feel doko kara ka',\n", - " 'nagareru keshiki kawaranaku natte',\n", - " 'oto mo naku tokihanatsu away',\n", - " 'osoretachikiri itsu kara ka',\n", - " 'takanaru kodou tomaranaku natte',\n", - " 'yasashiku mo keshisatte away',\n", - " 'wakariaeru koto',\n", - " 'nozonderu no?',\n", - " 'mata motometeru naze ubau no',\n", - " 'donna ashita datte kawaru hazu',\n", - " 'ima wo ikinuku koto de',\n", - " 'mawaru haguruma wo omoikiri',\n", - " 'hirogaru yami wo uchikesu mono wa',\n", - " 'mizukara no yume datte',\n", - " 'if it makes your time stand still',\n", - " \"you'll know that it's time\",\n", - " \"and i don't want to\",\n", - " 'makes me feel doko kara ka',\n", - " 'nagareru keshiki kawaranaku natte',\n", - " 'oto mo naku tokihanatsu away',\n", - " \"(i'm flying away)\",\n", - " 'osoretachikiri itsu kara ka',\n", - " 'takanaru kodou tomaranaku natte',\n", - " 'yasashiku mo keshisatte',\n", - " \"(i don't know where i'll go\",\n", - " \"but i'll make it worth my time)\",\n", - " 'whoa, whoa, whoa',\n", - " 'whoa, whoa, whoa',\n", - " 'makes me feel doko kara ka',\n", - " 'nagareru keshiki kawaranaku natte',\n", - " 'oto mo naku tokihanatsu away',\n", - " \"(i'm flying away)\",\n", - " 'osoretachikiri itsu kara ka',\n", - " 'takanaru kodou tomaranaku natte',\n", - " 'yasashiku mo keshisatte',\n", - " \"(i don't know where i'll go\",\n", - " \"but i'll make it worth my time)\",\n", - " 'cete ce lane ce mima layaya',\n", - " 'cete ce lane ce mima layaya',\n", - " 'cete ce lane ce mima layaya',\n", - " 'sarambé',\n", - " 'cete ce lane ce mima layaya',\n", - " 'cete ce lane ce mima layaya',\n", - " 'cete ce lane ce mima layaya',\n", - " 'sarambé',\n", - " 'xanaharí, xanaharí',\n", - " 'sarambé',\n", - " 'xanaharí, xanaharí',\n", - " 'sarambé',\n", - " 'brilla la vida en tu risa encendida',\n", - " 'sarambé',\n", - " 'brilla la vida en tu risa encendida',\n", - " 'sarambé',\n", - " 'sarambé, sarambé',\n", - " 'sarambé, sarambé',\n", - " 'cete ce lane ce mima layaya',\n", - " 'cete ce lane ce mima layaya',\n", - " 'cete ce lane ce mima layaya',\n", - " 'sarambé',\n", - " 'cete ce lane ce mima layaya',\n", - " 'cete ce lane ce mima layaya',\n", - " 'cete ce lane ce mima layaya',\n", - " 'sarambé',\n", - " 'xanaharí xanaharí',\n", - " 'sarambé',\n", - " 'xanaharí xanaharí',\n", - " 'sarambé',\n", - " 'brilla la vida en tu risa encendida',\n", - " 'sarambé',\n", - " 'brilla la vida en tu risa encendida',\n", - " 'sarambé',\n", - " 'xanaharí, xanaharí',\n", - " 'sarambé',\n", - " 'xanaharí, xanaharí',\n", - " 'sarambé',\n", - " 'xanaharí, xanaharí',\n", - " 'sarambé',\n", - " 'xanaharí, xanaharí',\n", - " 'sarambé',\n", - " 'xanaharí, xanaharí',\n", - " 'sarambé',\n", - " 'sarambé, sarambé',\n", - " 'sarambé, sarambé',\n", - " ...]},\n", - " 'rock': {'meta': {'train_data': ['kono yo ni sei wo kizutatta mono',\n", - " 'kono yo de ikitaeteiita mono',\n", - " 'futatsu wa hitotsu sa',\n", - " 'anata wa hikari to natta no?',\n", - " 'anata no hikari wo abiteiru no?',\n", - " 'kurikaesareru dekigoto no naka no hitotsu to omou ni wa',\n", - " 'madamada jikan ga kakari sou',\n", - " 'sonna ruuru bukku (rule book) no ue de bokura wa ikiteru kara',\n", - " 'donna kanashimi ni mo namida wo nagasunda ne',\n", - " \"we all knew that you'd be nowhere when we are born\",\n", - " 'how can we see your face elsewhere? now we are torn',\n", - " 'you will be waiting for us there?',\n", - " 'anata ga shirushita michishirube',\n", - " 'goishi wa boku ga hirotte aruku no!',\n", - " 'kurikaesareru dekigoto no naka no hitotsu to omou ni wa',\n", - " 'madamada jikan ga kakari sou',\n", - " 'sonna ruuru bukku (rule book) no ue de bokura wa ikiteru kara',\n", - " 'tsumaranai koto ya tanoshii koto ga hitsuzen ni mieru toki ga aru',\n", - " 'sayonara wa iwanai yo',\n", - " 'chikaku ni iru to shinjiteiru kara',\n", - " 'asa no hikari mabushikute',\n", - " 'weigh anchor!',\n", - " 'kotoba mo nakute',\n", - " 'tada nami no oto kiiteta',\n", - " 'kioku no imi tamesareteiru mitai ni',\n", - " 'yami no naka demo omoidasu',\n", - " 'mae ni susumu no',\n", - " 'miteite yo',\n", - " \"so repeatedly, we won't regret to them\",\n", - " 'sonna fuu nimo kangaeteta no',\n", - " 'akogare batsubyou mirai',\n", - " 'zetsubou soushitsu betsuri',\n", - " 'ikutsumono kanashimi to umi o koe',\n", - " 'tatoe------',\n", - " 'sekai no subete ga miiro ni toketemo kitto',\n", - " 'anata no koe ga suru',\n", - " 'daijoubu kaerou tte',\n", - " 'demo',\n", - " 'sekai ga subete hanten shiteiru no nara',\n", - " 'soredemo anata to massugu ni mae o mitete',\n", - " 'ima negai kometa ichigeki hazeta',\n", - " 'she was splendid like our flagship',\n", - " \"but it's all in the past\",\n", - " 'she never gave up hope even till the end',\n", - " 'only the sea knows dakara',\n", - " 'nuritsubusaretemo wasurenai',\n", - " 'kojiakeru no',\n", - " 'miteite yo',\n", - " \"so foolish, don't repeat the tragedy\",\n", - " 'sonna kotoba ni sugari wa shinai',\n", - " 'kirameki aozora kibou',\n", - " 'haiboku minazoko nemuri',\n", - " 'ikutsumono namida no umi o koe',\n", - " 'tatoe------',\n", - " 'watashi no subete ga kako ni kietemo zutto',\n", - " 'kitto tomo ni aru tte',\n", - " 'itsu no hi ka kawareru tte',\n", - " 'demo',\n", - " 'watashi ga subete maboroshi da to shitara sou',\n", - " 'soredemo anata to',\n", - " 'kiseki no you kono toki ni',\n", - " 'ima inori kometa ichigeki hibike',\n", - " 'sekai no subete ga miiro ni kietemo',\n", - " 'anata o wasurenai',\n", - " 'sekai no subete ga miiro ni toketemo',\n", - " 'watashi wa sagashidasu',\n", - " 'daijoubu kaerou tte ittemo',\n", - " 'sekai no subete ga miiro ni kietemo',\n", - " 'anata o wasurenai',\n", - " 'sekai no subete ga miiro ni toketemo',\n", - " 'watashi ga sagashidasu',\n", - " 'daijoubu kaerou tte demo',\n", - " 'daijoubu kawareru tte ima',\n", - " 'susumu no yo yareru tte mada',\n", - " 'zenbu uso kore de owari chigau!',\n", - " 'ima------',\n", - " 'watashi no subete ga miiro ni toketemo',\n", - " 'fukami e ochiteyuku',\n", - " 'soshite',\n", - " 'kioku no subete ga miiro ni natte',\n", - " 'hikari ni kieteyuku',\n", - " 'tatoe------',\n", - " 'sekai no subete ga miiro ni toketemo kitto',\n", - " 'anata no koe ga suru',\n", - " 'daijoubu kaerou tte',\n", - " 'demo',\n", - " 'taisetsu na anata ga umaretekuru nara sou',\n", - " 'watashi wa arukidaseru',\n", - " 'saigo ni ne kono negai',\n", - " 'ima norikoe mirai eto weigh anchor!',\n", - " 'romaji',\n", - " 'nanigenai hibi just the same old thing',\n", - " 'nani ga kakete tarinai ka',\n", - " 'kidzukanai furishite temo i can’t run away from myself',\n", - " 'i tried to show you i’m strong',\n", - " 'just a kid all long umaku amaetai kimochi ga',\n", - " 'hetakusona tsuyogari ni shika narazu',\n", - " 'the shape of love is the same as your heart is',\n", - " 'it doesn’t matter who you are',\n", - " 'so tell me my heart is the same as yours is',\n", - " 'sarigenaku morau sono aijou wa totemo fukakai de',\n", - " 'sunao ni wa ukeirerare',\n", - " 'nani ka wo mada tozashita mama',\n", - " 'no matter how much you say i can’t escape',\n", - " 'ima nani ka wo kaete koto de',\n", - " 'kono saki ni hirogaru nani ka wo kaeru',\n", - " 'the shape of love is the same as your heart is',\n", - " 'it doesn’t matter who you are',\n", - " 'so tell me my heart is the same as yours is',\n", - " 'tatoe hakanakutomo',\n", - " 'kanashii toki sabishii toki itsumo soba ni aru kara',\n", - " 'and we hold every moment cos that’s what family is for',\n", - " 'kakegae no nai mono wo suteru yuuki nante',\n", - " 'boku ni wa kore bocchi wo mochiawase te wa nai kedo',\n", - " 'tokidoki naze ka tebanashite komara setai toki ga aru',\n", - " 'hinekureta kawai-ge no nai boku',\n", - " 'the shape of love is the same as your heart is',\n", - " 'it doesn’t matter who you are',\n", - " 'so tell me my heart is the same as yours is',\n", - " 'tatoe hakanakutomo',\n", - " 'kanashii toki sabishii toki itsumo soba ni aru kara',\n", - " 'and we hold every moment cos that’s what family is for',\n", - " 'gone too far for so long',\n", - " 'got to find you’ve been right here all along',\n", - " 'i wanna take you away from here',\n", - " 'kono sekaijuu de nani ga arou to',\n", - " 'boku wo aishite kurete',\n", - " 'itsudemo sotto yasashiku sotto',\n", - " 'mimamori tsudzuketeru',\n", - " 'tsuyoku yowaku toki ni kibishiku',\n", - " 'atatakana nukumori',\n", - " 'and we hold every moment cos that’s what family is for',\n", - " 'the shape of love is the same as your heart is',\n", - " 'and tell me my heart is the same as yours is',\n", - " 'the shape of love is the same as your heart is',\n", - " 'and tell me my heart is the same as yours is',\n", - " 'kanji',\n", - " '何気ない日々just the same old thing',\n", - " '何が欠けて足りないか',\n", - " \"気づかない 振りしててもi can't run away from myself\",\n", - " \"i tried to show you i'm strong\",\n", - " 'just a kid all along うまく甘えたい気持ちが',\n", - " 'はたくそんな强がりにしか必ず',\n", - " 'the shape of love is the same as your heart is',\n", - " \"it doesn't matter who you are\",\n", - " 'so tell me my heart is the same as yours is',\n", - " 'さりげなくもらうその愛情はとてもふかかいで',\n", - " '素直には受け入れられ',\n", - " '何かをまだ閉ざしたまま',\n", - " \"no matter how much you say i can't escape\",\n", - " '今何かを変えてことで',\n", - " 'この先に広がる何かを変える',\n", - " 'the shape of love is the same as your heart is',\n", - " \"it doesn't matter who you are\",\n", - " 'so tell me my heart is the same as yours is',\n", - " 'たとえ儚くとも',\n", - " '悲しい時寂しい時、いつもそばにあるから',\n", - " \"and we hold every moment cause that's what family is for\",\n", - " 'かけがえのないものを捨てる勇気なんて',\n", - " '僕にはこれこっちを持ち合わせてはないけど',\n", - " '時々なぜか手放して困らせたい時がある',\n", - " '今くれた怖いでのない僕',\n", - " 'the shape of love is the same as your heart is',\n", - " \"it doesn't matter who you are\",\n", - " 'so tell me my heart is the same as yours is',\n", - " 'たとえ儚くとも',\n", - " '悲しい時寂しい時、いつもそばにあるから',\n", - " \"and we hold every moment cause that's what family is for\",\n", - " 'gone too far for so long',\n", - " \"got to find you've been right here all along\",\n", - " 'i wanna take you away from here',\n", - " 'この世界中で何があると',\n", - " '僕を愛してくれて',\n", - " 'いつでもそっと優しくそっと',\n", - " '見守り続けてる',\n", - " '強くく弱く時に厳しく',\n", - " '暖かな温もり',\n", - " \"and we hold every moment cause that's what family is for\",\n", - " 'the shape of love is the same as your heart is',\n", - " 'and tell me my heart is the same as yours is',\n", - " 'the shape of love is the same as your heart is',\n", - " 'and tell me my heart is the same as yours is',\n", - " 'umareta toki kara',\n", - " 'kagayaku bakari no (health angel)',\n", - " 'nomikome nomikome',\n", - " 'kyoyōryō made (health angel)',\n", - " 'ato kara ato kara umaretekuruyo',\n", - " 'ato kara ato kara umaretekuruyo',\n", - " 'umareta toki kara',\n", - " 'onaka ippai (health angel)',\n", - " 'tabemono no hō kara',\n", - " 'oikaketekuruyo (health angel)',\n", - " 'ato kara ato kara oikaketekuruyo',\n", - " 'ato kara ato kara oikaketekuruyo',\n", - " 'shinkaron no iki shōnin sa',\n", - " 'ikimono no naka de ichika kirei sa',\n", - " 'ju shibōbun nipaa sen tono',\n", - " 'doraimiruku de tune up sareru',\n", - " 'health angel health angel',\n", - " 'health angel tune up angel',\n", - " 'health angel health angel',\n", - " 'hеalth angel tune up angel',\n", - " 'umarеta toki kara',\n", - " 'eiyō katashō (health angel)',\n", - " 'koresuterōru ga',\n", - " 'atama ni tamaruyo (health angel)',\n", - " 'ato kara ato kara tamattekuruyo',\n", - " 'ato kara ato kara tamattekuruyo',\n", - " 'umareta toki kara',\n", - " 'tabetsuzuketekita (health angel)',\n", - " 'yaku ni mo tatanai',\n", - " 'tabemono matomete (health angel)',\n", - " 'hakidase hakidase ikara chō made',\n", - " 'omae sokkuri ura kaeru made',\n", - " 'hakidase hakidase ikara chō made',\n", - " 'omae sokkuri ura kaeru made',\n", - " 'todome wo sashite mo iin daze',\n", - " 'ore no mae kara kieusero',\n", - " '(get away from me now)',\n", - " 'kazari darake no kotoba de',\n", - " 'ore wo ayatsuru tsumori nara',\n", - " \"you can't control me oh! you are wrong\",\n", - " 'omae no kao wo miteru dake de',\n", - " 'ira ira hakike ga suruze',\n", - " '(get out of my face)',\n", - " 'ato ni mo saki ni mo hikenai',\n", - " 'itsumo urotaeru dake no ikeru shikabane',\n", - " 'shake off! shinobiyoru invitation',\n", - " 'break up! kobiuru imitation',\n", - " 'dhake off! ikasama illumination',\n", - " 'break up! ikareta imagination',\n", - " 'hitori yogari no poker face man',\n", - " 'omote to ura no hazama de',\n", - " 'ganjigarame ni shibararete',\n", - " 'miushinai kaketa yume no kakera',\n", - " 'sagashimotomete samayoi tsuzukeru',\n", - " '(easy fight) (easy fight)',\n", - " 'keep on easy rambling!',\n", - " '(easy fight) (easy fight)',\n", - " 'rambling in and out!',\n", - " 'shake off! shinobiyoru invitation',\n", - " 'break up! kobiuru imitation',\n", - " 'dhake off! ikasama illumination',\n", - " 'break up! ikareta imagination',\n", - " 'hitori yogari no poker face man',\n", - " 'omote to ura no hazama de',\n", - " 'ganjigarame ni shibararete',\n", - " 'maru de pierrot sa painted face man',\n", - " 'hibi wareta kagami no naka',\n", - " 'glass no kokoro wo utsushidasu',\n", - " 'tooku hateshinai yuutsu no stairway',\n", - " 'nukedasu sube mo shiranu mama',\n", - " 'miushinai kaketa yume no kakera',\n", - " 'sagashimotomete samayoi tsuzukeru',\n", - " '(easy fight) (easy fight)',\n", - " 'keep on easy rambling!',\n", - " '(easy fight) (easy fight)',\n", - " 'rambling in and out!',\n", - " 'all by myself',\n", - " 'all by myself',\n", - " 'all by myself',\n", - " 'aruki tsukareta yoru ni tatazumu',\n", - " 'nagareru namida o kioku ni kasanete',\n", - " 'deai no kazu dake wakare wa arukedo',\n", - " 'kagirinai toki ga tuduku to shinjiteta',\n", - " 'kizutsuke atta kotoba sae ima ha dakishime',\n", - " 'furikaerudake',\n", - " 'i feel alone',\n", - " 'how should i love you',\n", - " 'how could i feel you',\n", - " 'without you??',\n", - " 'kazoekire nai omoide ga jikan o umetsukusu',\n", - " 'anata o ashite anata ni kizusuite',\n", - " 'ai to iu kotoba no fukasa ni kizuita',\n", - " 'i still remember',\n", - " 'kotate no nai ashita ni yume o motomete ita hibi o',\n", - " 'kagirinaku hirogaru sora ni mou ichido umareta imi ima o ikiru imi o toikakete',\n", - " 'how should i love you',\n", - " 'how could i feel you',\n", - " 'without you..',\n", - " 'owari no nai ai no uta o ima anata ni',\n", - " 'nantonaku no bigaku de ikite kita jinsei',\n", - " 'sore wa so to shite, kimi wa ittai doko ni mukatte iru no ka ne?',\n", - " 'genjitsu to riso no tenbin wa itsu datte fuanteide',\n", - " 'soredemo kowarete iku sekai ni tadade wa nomikoma remai to mogaite',\n", - " 'give it to me, give it to me, nothing but',\n", - " 'give it to me, give it to me, nothing but',\n", - " 'shinjinai mono wa shinjinakute, kanjiruga mama ni ikireba itte',\n", - " 'give it to me, give it to me, nothing but',\n", - " 'give it to me, give it to me, nothing but',\n", - " 'nando datte tachiagatte ikitsuku toko made',\n", - " 'nothing changes my way',\n", - " 'just on my way',\n", - " 'nothing changes my fate',\n", - " \"nothing's gonna change\",\n", - " \"nothing's gonna change on my\",\n", - " 'nani mo kan mo subete o hoshi gatte',\n", - " 'sore wa yoshi to shite, boku wa ittai nani ga hoshikatta no ka ne?',\n", - " 'shinjitsu to kyozo no kyokai wa itsu datte fusenmeide',\n", - " 'sore demo yattekuru ashita ni kotae no mitsukaranu toi o daite',\n", - " 'give it to me, give it to me, nothing but',\n", - " 'give it to me, give it to me, nothing but',\n", - " 'nothing changes my way',\n", - " 'just on my way',\n", - " 'nothing changes my fate',\n", - " \"nothing's gonna change\",\n", - " \"nothing's gonna change on my way\",\n", - " 'just on my way',\n", - " 'nothing changes my fate',\n", - " \"nothing's gonna change\",\n", - " \"nothing's gonna change on my\",\n", - " 'give it to me, give it to me, nothing but',\n", - " 'give it to me, give it to me, nothing but',\n", - " 'give it to me, give it to me, nothing but',\n", - " 'give it to me, give it to me, nothing but',\n", - " 'nothing changes my way',\n", - " 'just on my way',\n", - " 'nothing changes my fate',\n", - " \"nothing's gonna change\",\n", - " \"nothing's gonna change on my way\",\n", - " 'just on my way',\n", - " 'nothing changes my fate',\n", - " \"nothing's gonna change\",\n", - " \"nothing's gonna change on my way\",\n", - " \"nothing's gonna change\",\n", - " \"nothing's gonna change on my way\",\n", - " 'nemurenu yoru wo ikutsu kazuetara ore-tachi tadoritsuku darou',\n", - " 'dore dake no inochi nakushita toki arasoi wa owaru no darou',\n", - " 'rekishi no ue wo korogaru dake no sukuenai doukeshi-tachi',\n", - " 'itsuka dareka ga itte ta you ni',\n", - " 'kotae wa kaze no naka',\n", - " 'somuketa kao wo ikutsu utaretara kizukanu furi yameru no ka',\n", - " 'dore hodo no kurushimi ni taetara egao wa jiyuu ni naru no ka',\n", - " 'sabita kusari ni tsungareta mama mata shippo wo maku no nara',\n", - " 'itsuka dareka ga itte ta you ni',\n", - " 'kotae wa kaze no naka',\n", - " 'furishiboru koe to nigirishimeru sono te de',\n", - " 'unmei wa kitto kawaru toki wo matte iru',\n", - " 'chippoke-na ai no sasayaka-na chikara de',\n", - " 'kanashimi wa itsumo dakareru no wo matte iru',\n", - " 'uso no pazuru wo narabekaeteru aware-na petenshi-tachi',\n", - " 'fukiyousa wo kiyou ni furumau oroka-na romanchisuto-tachi',\n", - " 'rekishi ga nanimo kataranaku naru sonna hi ga kuru yokan ni',\n", - " 'itsuka dareka ga itte ta you in',\n", - " 'kotae wa kaze no naka',\n", - " 'furishiboru koe to nigirishimeru sono te de',\n", - " 'unmei wa kitto kawaru toki wo matte iru',\n", - " 'chippoke-na ai no sasayaka-na chikara de',\n", - " 'kanashimi wa itsumo dakareru no wo matte iru',\n", - " 'noboru koto dake ni toraware',\n", - " 'sugita keshiki ga kirete ikō to',\n", - " 'kobihetsurai no ura ni kakure te o kaeshi',\n", - " 'mamoru takara e no izon ni chizu o sute',\n", - " 'noise of rain ashiato wa naite ita',\n", - " 'the end of all lies',\n", - " 'face to face with a horrid truth',\n", - " 'garakuta no kage de taoreru sekai',\n", - " \"we can't stop we won't drop\",\n", - " 'no more smiles you fake thus',\n", - " 'rei ji o tōru hari ga',\n", - " 'yozora no mukō o sasu',\n", - " 'outragers drive me nuts!',\n", - " 'outragers. drive me nuts now!',\n", - " 'outragers drive me nuts!',\n", - " 'the raging howl of underdogs',\n", - " 'outragers drive me nuts!',\n", - " 'outragers drive me nuts now!',\n", - " 'oulragers drive me nuts!',\n", - " 'rebel song of underdogs',\n", - " 'yami o yubisashiyokogitte mo',\n", - " 'kutsu wa kizukazuyogorete iku',\n", - " 'togireta kioku o gomakasu yō ni',\n", - " 'uso o kazari jibun o aishite',\n", - " 'noise of rain kodō wa doko e',\n", - " 'the end of all lies',\n", - " 'face to face with a horrid truth',\n", - " 'megami sae mo jiyū o nagesuteru sekai',\n", - " \"we can't stop we won't drop\",\n", - " 'no more smiles you fake thus',\n", - " 'rei ji o tōru hari ga',\n", - " 'taiyō no mukō o sasu',\n", - " 'outragers drive me nuts!',\n", - " 'outragers. drive me nuts now!',\n", - " 'outragers drive me nuts!',\n", - " 'the raging howl of underdogs',\n", - " 'outragers drive me nuts!',\n", - " 'outragers drive me nuts now!',\n", - " 'oulragers drive me nuts!',\n", - " 'rebel song of underdogs',\n", - " 'the end of all lies',\n", - " 'face to face with a horrid truth',\n", - " 'garakuta no kage de taoreru sekai',\n", - " \"we can't stop we won't drop\",\n", - " 'no more smiles you fake thus',\n", - " 'rei ji o tōru hari ga',\n", - " 'yozora no mukō o sasu',\n", - " 'outragers drive me nuts!',\n", - " 'outragers. drive me nuts now!',\n", - " 'outragers drive me nuts!',\n", - " 'the raging howl of underdogs',\n", - " 'outragers drive me nuts!',\n", - " 'outragers drive me nuts now!',\n", - " 'oulragers drive me nuts!',\n", - " 'rebel song of underdogs',\n", - " 'itsumo no you mo ni',\n", - " 'aruku machi nami yuugure',\n", - " 'no setsuna ni tokete',\n", - " 'haru no kuuki sukoshi tsumetakute',\n", - " 'dokoka natsukashii ki ga shita',\n", - " 'sasayaku you ni yasashii kaze',\n", - " 'mimimoto de boku no na wo yonda',\n", - " 'mayou koto mo naku michibikarete',\n", - " 'tadoritsuita kono basho',\n", - " 'yomigaeru kimi no koe tsumoru yuki futatsu no yume',\n", - " 'kisetsu wo meguri mata saita hana',\n", - " 'remember, my friend',\n", - " 'ima mo kawaranai mono',\n", - " 'ano hi bokura wa koko de te wo futta',\n", - " 'remember, myself',\n", - " 'ima mo wasurenai mono',\n", - " 'hanaretete mo kono hakanai omoi ga todoku you ni utau yo',\n", - " 'warau tabi ni shiroi toiki',\n", - " 'yoru wo somete sotto kiete',\n", - " 'nagareboshi wo minogasanai you',\n", - " 'ima me wo hanasanaide, to',\n", - " 'kotoba ni wa dekinai yume ni michita sono yokogao',\n", - " \"kiseki wo sagashi nani wo negau'n darou\",\n", - " 'remember, my friend',\n", - " 'ima mo kawaranai mono',\n", - " 'ano hi bokura wa koko de te wo futta',\n", - " 'remember, myself',\n", - " 'ima mo wasurenai mono',\n", - " 'hanaretete mo kono hakanai omoi ga todoku you ni utau yo',\n", - " 'みな ほんとに ありがとう!',\n", - " 'i love you! i love you! i love you! i love you! i love you!',\n", - " '本当にありがとうございました!',\n", - " 'jaya râdha-mâdhava kuñja-bihârî',\n", - " 'gopî-jana-vallabha, giri-vara-dhârî',\n", - " 'yas’odâ-nandana braja-jana-rañjana',\n", - " 'yâmuna-tîra-vana-cârî',\n", - " 'all the glories to râdhâ and mâdhava’s divine pastimes',\n", - " 'the lord of the gopis lifted the govardhan hill',\n", - " 'dear to yasoda, loved in vrindâvana',\n", - " 'at the yamunâ, he wanders in the woods',\n", - " 'please give the power to me now',\n", - " 'please give the power to me now',\n", - " 'please give the power to me now',\n", - " 'asu no hi wo mamoru tame',\n", - " 'please give the power to me now',\n", - " 'please give the power to me now',\n", - " 'please give the power to me now',\n", - " 'kagirareta toki no tame',\n", - " 'sora ni kazashita chikai wa kimi to tomo ni',\n", - " 'kagayaku',\n", - " 'one ok rock - どっぺるゲンガ',\n", - " 'romaji',\n", - " 'nanika ni michibikareru ka no you ni dete iku boku no kage',\n", - " 'tsunagareteta kusari mo ima ja nan no imi mo nasarenai',\n", - " 'tsumetaku ashiratta seika... sore tomo tada tanjun ni',\n", - " 'boku toiu ningen ni akita no ka?',\n", - " 'wakari wa shinai kedo...',\n", - " 'moshi hikari ga sashitemo',\n", - " 'nuke kara no',\n", - " 'boku ga tadatada iru dake',\n", - " 'i wanna be wanna be',\n", - " 'nigedashita kuroi boku ni dou yatte?',\n", - " \"i'm tryin' i'm tryin'\",\n", - " \"michisuu na ryouiki o guruguru mawan' no sa\",\n", - " 'sono boku ga boku ni kaeru shunkan wa',\n", - " \"it's just time!\",\n", - " \"now i'm here, now i stand, when i'm playing on my stage\",\n", - " 'jouhou ya rieki, jibun no tsugou to issho ni tsukerareta',\n", - " 'boku no sumu karada wa mou henshoku shite kusaru ippotemae',\n", - " 'jojo ni mushibande tokasu soitsura wa',\n", - " 'atakamo hajime kara kimi no naka ni imashita',\n", - " \"mitai na kao de sono ba o yari sugosu n'daro?\",\n", - " 'moshi kono mama boku ga',\n", - " 'koko ni itsudzukereba',\n", - " 'boku mo toketenaku naru yo',\n", - " 'i wanna go wanna go',\n", - " \"kugiri sura nai basho e you're a stranger\",\n", - " \"i'm alone i'm alone\",\n", - " \"sore demo burezu tada jibun shinjin' no sa\",\n", - " 'tada sou yaru beki koto wa hitotsu dake',\n", - " 'sore igai wa nai',\n", - " \"what i hear and what i play, they're everything in my heart\",\n", - " \"can't you see that?\",\n", - " 'tatoe mou boku ga ano kusari ni tsunagaretemo',\n", - " 'kimi no shiji o ukeru tsumori wa nai!',\n", - " 'i wanna go wanna go',\n", - " \"kugiri sura nai basho e you're a stranger\",\n", - " \"i'm alone i'm alone\",\n", - " \"sore demo burezu tada jibun shinjin' no sa\",\n", - " 'tada sou yaru beki koto wa hitotsu dake',\n", - " 'sore igai wa nai',\n", - " \"what i hear and what i play, they're everything in my heart\",\n", - " \"can't you see that?\",\n", - " 'kanji',\n", - " 'mata kioku wo tsukisasu yaketa nioi',\n", - " 'mou kokyuu mo dekinai',\n", - " 'memai ga suru youna kuroi taiyou',\n", - " 'ikitsugi no itami wo',\n", - " 'kiri kizande around the way',\n", - " 'kioku wo keshite feel my fear',\n", - " \"sugari tsuita and i'm dead\",\n", - " 'furi hodoite insane dream',\n", - " 'tell me what you want me to believe',\n", - " \"i can't see you, i can't feel you\",\n", - " 'tada yurushi wo motomete nagasu negai',\n", - " 'mada kodou wa taenai',\n", - " 'shikai wo nakushita akai mabuta yo',\n", - " 'sandome no inori wo',\n", - " 'kiri kizande around the way',\n", - " 'kioku wo keshite feel my fear',\n", - " \"sugari tsuita and i'm dead\",\n", - " 'furi hodoite insane dream',\n", - " 'kiri kizande around the way',\n", - " 'kioku wo keshite feel my fear',\n", - " \"sugari tsuita and i'm dead\",\n", - " 'furi hodoite insane dream',\n", - " 'kiri kizande around the way',\n", - " 'kioku wo keshite feel my fear',\n", - " \"sugari tsuita and i'm dead\",\n", - " 'furi hodoite insane dream',\n", - " 'tell me what you want me to believe',\n", - " \"i can't see you, i can't feel you\",\n", - " '(romanized)',\n", - " 'yume miteta, yume',\n", - " 'hate naki tooku',\n", - " 'kawaita hibi no sorairo te no naka',\n", - " 'tou kankaku oto no naka de shikousakugo',\n", - " 'jikan kankaku no nai, kuukan',\n", - " 'toushindai oto wo tatete',\n", - " 'boku no kao, tsukutte yuku',\n", - " 'kirei ni, katahou dake',\n", - " 'kono te ni ochita, kusari kake no ringo',\n", - " 'kagami ni utsuru, bokura no uragawa made',\n", - " 'too kankaku hito no naka de shikousakugo',\n", - " 'jikan kankaku no nai, kuukan',\n", - " 'toushindai tsume wo tatete',\n", - " 'boku no kao, kezutte yuku',\n", - " 'kirei ni, katahou dake',\n", - " 'too kankaku',\n", - " 'toushindai',\n", - " 'eternal damnation',\n", - " 'can i redeem myself?',\n", - " 'mata meguri yuku',\n", - " 'unmei ga rasen no yō ni',\n", - " 'heavenly punishment',\n", - " 'my soul is kept in chains',\n", - " 'mogaki tsudzukeru',\n", - " 'imada kanashimi no uzu no naka de',\n", - " 'haruka tōzakari yuku',\n", - " 'kaisō no osanaki hibi wa',\n", - " 'mōmoku ni tada kakimidashite yuku',\n", - " 'yodonda kokoro o',\n", - " 'fukaku mushibama re yuku',\n", - " 'kono kanashimi no imi wa',\n", - " 'bōkyaku no katasumi ni torawarete iru',\n", - " 'mōnidoto tsukamu koto no dekinai hikari',\n", - " 'miage omoi o haseru sora',\n", - " 'kurikaeshi toikakeru sadame',\n", - " 'itsuka kakageta tachiagaru imi wa',\n", - " 'ima mo kono daichi ni todoroite yuku',\n", - " 'imada kanashimi no uzu no naka de',\n", - " 'itsuka kanjita nukumori',\n", - " 'omoidasu yō ni me o toji',\n", - " 'chiri yuku kodō tashikameru yō ni',\n", - " 'ima koso furikaerazu kono omoi',\n", - " 'kono daichi ni todorokasete yuke',\n", - " 'heavenly punishment',\n", - " 'my soul is kept in chains',\n", - " 'mata meguri yuku',\n", - " 'unmei ga rasen no yō ni',\n", - " 'eternal damnation',\n", - " 'can i redeem myself?',\n", - " 'ima hashiridasu',\n", - " 'katsute no kioku o nosete',\n", - " \"disasters don't ever wait\",\n", - " \"the time has come, we can't delay\",\n", - " 'fly through hundreds of bullets',\n", - " 'paint the sky bloody red',\n", - " 'mitsumeyo sono mi ni yadotta',\n", - " 'kakoku na unmei no imi o',\n", - " 'inuke yo hametsu no kakushin',\n", - " 'oozora hishou suru tsurugi de',\n", - " 'ano toki kara henkaku shita paradaimu',\n", - " 'susumu basho mo kaeru basho saemo tooi maboroshi',\n", - " \"chikara tokihanate it's unlimited\",\n", - " 'osore nado sute',\n", - " 'ushinatta monono ookisa o',\n", - " 'sakebu you ni',\n", - " 'teki o akaku some our bloodred',\n", - " 'bokura no se niwa',\n", - " 'soredemo mamoritai mono ga aru',\n", - " \"disasters don't ever wait\",\n", - " \"the time has come, we can't delay\",\n", - " 'fly through hundreds of bullets',\n", - " 'paint the sky bloody red',\n", - " 'mezameyo ano hi tsunagareta',\n", - " 'musuu no nemurishi kioku yo',\n", - " 'tatakae sorezore no hokori',\n", - " 'sono te ni torimodoseru hi made',\n", - " 'dareka janaku bokura datta messianic child',\n", - " 'tomaru koto ga imi shiteiru nowa kono sekai no shi',\n", - " \"ikari tokihanate it's unlimited\",\n", - " 'tada teki o ute',\n", - " 'kizutsuku koto yori osoroshii',\n", - " 'kioku ga aru',\n", - " 'sora mo akaku some our bloodred',\n", - " 'bokura wa mune ni',\n", - " 'soredemo shinjitai ai ga aru',\n", - " \"disasters don't ever wait\",\n", - " \"the time has come, we can't delay\",\n", - " 'tsukarehatete ashi ga tomattemo',\n", - " 'kiki ni sarasareru inochi ga aru nara...',\n", - " \"chikara tokihanate it's unlimited\",\n", - " 'osore nado sute',\n", - " 'ushinatta monono ookisa o',\n", - " 'sakebu you ni',\n", - " 'teki o akaku some our bloodred',\n", - " 'bokura no se ni ha',\n", - " 'soredemo',\n", - " 'mamori tai?',\n", - " \"ikari tokihanate it's unlimited\",\n", - " 'tada teki o ute',\n", - " 'kizu tsuku koto yori osoroshii',\n", - " 'kioku ga aru',\n", - " 'sora mo akaku some our bloodred',\n", - " 'bokura wa mune ni',\n", - " 'soredemo shinjitai ai ga aru',\n", - " \"disasters don't ever wait\",\n", - " \"the time has come, we can't delay\",\n", - " 'fly through hundreds of bullets',\n", - " 'paint the sky bloody red',\n", - " \"disasters don't ever wait\",\n", - " \"the time has come, we can't delay\",\n", - " 'fly through hundreds of bullets',\n", - " 'paint the sky bloody red',\n", - " 'ubaware so na light',\n", - " 'good-bye aburi dase glow',\n", - " 'hibiku kui yori mae e',\n", - " 'shukuhai naraseyo goat',\n", - " '「maze, god, devil, my life」',\n", - " 'itaru soko de hau yōna',\n", - " '「maze, god, devil, my life」',\n", - " 'gaika narasu',\n", - " '「kill off」',\n", - " 'haitokushin o',\n", - " '「kill off」',\n", - " 'jison o',\n", - " '「kill off」',\n", - " 'i anshin o',\n", - " '「kill off」',\n", - " 'nando mo',\n", - " '「kill off」',\n", - " 'haitokushin o',\n", - " '「kill off」',\n", - " 'jison o',\n", - " '「kill off」',\n", - " 'i anshin o',\n", - " '「kill off」',\n", - " 'gurari gurari to akumu tsurushita',\n", - " '「too fast to live」',\n", - " '「too young to die」',\n", - " 'komaku tsuranuku kodo ni chikae mada yareru no sa',\n", - " 'too fast too die',\n", - " 'katachi no nai',\n", - " 'katachi no nai',\n", - " \"fukanzen'na sekai\",\n", - " '「kill off」',\n", - " 'haitokushin o',\n", - " '「kill off」',\n", - " 'jison o',\n", - " '「kill off」',\n", - " 'i anshin o',\n", - " '「kill off」',\n", - " 'nando mo',\n", - " '「kill off」',\n", - " 'haitokushin o',\n", - " '「kill off」',\n", - " 'jison o',\n", - " '「kill off」',\n", - " 'i anshin o',\n", - " '「kill off」',\n", - " 'gurari gurari to akumu tsurushita',\n", - " '「too fast to live」',\n", - " '「too young to die」',\n", - " 'komaku tsuranuku kodō ni chikae mada yareru no sa',\n", - " 'owaranai',\n", - " 'gurari gurari to kami mo tsurushita',\n", - " '「too fast to live」',\n", - " '「too young to die」',\n", - " 'moe kasu no yona kodo ni chikae mada yareru no sa',\n", - " 'too fast too die',\n", - " 'gaika narasu my life',\n", - " \"it's my life\",\n", - " 'fukaku fukaku ochite yuku',\n", - " 'hitotsu futatsu kiete yuku',\n", - " 'mou koko ni wa modorenai',\n", - " 'namida ga hoho wo tsutau seba matta sekai',\n", - " 'nijinde mieta keshiki ga aoku mieru',\n", - " \"kareochita itsuwari no dreaming i'm falling alone\",\n", - " 'kizutsuita kono hane wa anata ga nuiawaseta',\n", - " 'nigirishimetate hanasanaide karamase tsuyoku',\n", - " 'mata ikite yuku kimi to',\n", - " \"you're inside my nights\",\n", - " 'still feel lost inside your eyes',\n", - " 'try to hold on tight',\n", - " \"but you're long gone\",\n", - " 'lie in bed and dream of sleep',\n", - " \"cause nothing's right with me\",\n", - " \"under sheets i'm wondering\",\n", - " 'will this be the end?',\n", - " \"kareochita itsuwari no dreaming i'm falling alone\",\n", - " 'kizutsuita kono hane wa anata ga nuiawaseta',\n", - " 'nigirishimeta te hanasanaide karamase tsuyoku',\n", - " 'mata ikite yuku kimi to',\n", - " \"hagareochita itsuwari no dreaming i'm falling alone\",\n", - " 'kizutsuku koto ni sae ima wa mou nareta boku',\n", - " 'nobashita kono te karamasete hageshiku',\n", - " 'soshite mata fumidaseru yo kitto',\n", - " 'bochio bwe bwe bola wari erikope wa’e',\n", - " 'bochio bwe bwe bola wari eriko pe wa eriko pe wa’e',\n", - " 'boláwárí nnë bö ná a',\n", - " 'boláwárí nnë bö ná iööö',\n", - " 'ö béraí è le öee, ea párana',\n", - " 'ntá lapálo bolám ë, kóri we n’so bwe sabe a’m',\n", - " 'mari mari, mari wë bée',\n", - " 'mari mari, mari wë bée',\n", - " 'ö béraí è le öe, ea párana',\n", - " 'a tálapo èla lasá köri n’tòki bëölo',\n", - " 'ö béraí eá bö sö söbieria, ea párana',\n", - " 'a tálapo èla lasá köri ntòki bëölo',\n", - " 'a tálapo èla lasá köri ntòki bëölo',\n", - " 'a tálapo èla lasá köri ntòki bëölo',\n", - " 'bochio bwe bwe bola wari erikope wa’e (x3)',\n", - " 'bochio bwe bwe bola wari eriko pe wa eriko pe wa’e',\n", - " 'bochio bwe bwe bola wari erikope wa’e (x3)',\n", - " 'bochio bwe bwe bola wari eriko pe wa eriko pe wa’e',\n", - " 'bolá boláwárí nnë bö ná a',\n", - " 'bolá boláwárí nnë bö ná a',\n", - " 'ö béraí è le öee, ea párana',\n", - " 'ntá lapálo bolám ë, kóri we n’so bwe sabe a’m',\n", - " 'mari mari, mari wë bée',\n", - " 'mari mari, mari wë béiööö',\n", - " 'ö béraí è le öee, ea párana',\n", - " 'a tálapo èla lasá köri ntòki bëölo',\n", - " 'a tálapo èla lasá köri ntòki bëölo',\n", - " 'a tálapo èla lasá köri ntòki bëölo ölo ölo ölo',\n", - " 'ö béraí è le öee, ea párana',\n", - " 'ntá lapálo bolám ë, kóri we n’so bwe sabe a’m',\n", - " 'ö béraí è le öee, ea párana',\n", - " 'a tálapo èla lasá köri ntòki bëölo',\n", - " 'a tálapo èla lasá köri ntòki bëölo',\n", - " 'a tálapo èla lasá köri ntòki bëölo ölo ölo',\n", - " 'bochio bwe bwe bola wari erikope wa’e (x9)',\n", - " 'bochio bwe bwe bola wari eriko pe wa eriko pe wa’e',\n", - " 'english lyrics:',\n", - " 'good night miss we are free like the wind',\n", - " 'good night miss we are free, free like the wind',\n", - " 'is a lady to whom i love',\n", - " \"it's a lady to whom i love oh\",\n", - " 'when your mother found out',\n", - " 'she said that she could not allow our love as i do not have much money',\n", - " 'mari mari, mari don’t cry',\n", - " 'mari mari, mari don’t cry',\n", - " 'when your mother found out about us',\n", - " 'said that she could not consent our love',\n", - " 'because i dont have much money',\n", - " 'when her mother alleged said that he could not consent our love',\n", - " 'she said',\n", - " 'i cannot consent it because you do not have money',\n", - " 'i cannot consent it because you do not have money',\n", - " 'i cannot consent it because you do not have money',\n", - " 'good night miss we are free like the wind (x3)',\n", - " 'good night miss we are free like the wind',\n", - " 'good night miss we are free like the wind (x3)',\n", - " 'good night miss we are free like the wind',\n", - " 'is a lady to whom i love',\n", - " \"it's a lady to whom i love oh\",\n", - " 'when your mother found out',\n", - " 'she said that she could not allow our love as i do not have much money',\n", - " 'mari mari, mari don’t cry',\n", - " 'mari mari, mari don’t cry',\n", - " 'when your mother found out about us',\n", - " 'said',\n", - " 'i cannot consent it because you do not have money',\n", - " 'i cannot consent it because you do not have money',\n", - " 'i cannot consent it because you do not have money',\n", - " 'when her mother alleged said that he could not consent our love',\n", - " 'she said',\n", - " 'i cannot consent it because you do not have money',\n", - " 'i cannot consent it because you do not have money',\n", - " 'i cannot consent it because you do not have money',\n", - " 'good night miss we are free like the wind (x9)',\n", - " 'good night miss we are free like the wind, free like the wind',\n", - " 'dark side in my heart is',\n", - " 'nuguisarenai kako no kanashimi',\n", - " \"it's alright kokoro ni mo nai\",\n", - " 'blaster hanachi te o nobashita',\n", - " 'my life kirihanashita',\n", - " 'gakubuchi no naka nagameru you ni',\n", - " 'sonzai shoumei issai mou nee',\n", - " 'karoujite tamotsu jibun jishin',\n", - " 'sakete toorenai michi wa itsu kara ka konna datta',\n", - " 'soshite dare mo inaku natta...',\n", - " 'unmei nante kuso kurae',\n", - " 'yarikirenakute cry for pride',\n", - " 'ah, ah, ah, alone in my world',\n", - " 'hibiku ai no uta',\n", - " 'yuganda sekai magatta negai',\n", - " 'kuzuresatte iku risou to ashita',\n", - " 'haite suteru hodo ni taikutsu datta',\n", - " 'good bye precious life',\n", - " 'dark cloud in my heart is',\n", - " 'harewatari michi ni hikari wa sashita',\n", - " \"let's fight osore wa nai\",\n", - " 'moroha no tsurugi furikazashita',\n", - " 'my life hitorikiri ja nai',\n", - " 'nakama no koe ni michibikareru hou ni',\n", - " 'sonzai shoumei issai koutei',\n", - " 'tokihanatta jibun jishin',\n", - " 'sakete toorenai michi wa itsu datte konna datta',\n", - " 'mayoi wa kiete naku natta...',\n", - " 'unmei nante kuso kurae',\n", - " 'gamushara ni natte try for pride',\n", - " 'ah, ah, ah, alone in my world',\n", - " 'kikoeru ai no uta',\n", - " 'hizunda sekai todokasu negai',\n", - " 'yowane nante mon wa nigiritsubushita',\n", - " 'haite suteru hodo ni taisetsu datta',\n", - " \"it's my precious life\",\n", - " 'unmei nante kuso kurae',\n", - " 'yarikirenakute cry for pride',\n", - " 'ah, ah, ah, alone in my world',\n", - " 'hibiku ai no uta',\n", - " 'yuganda sekai magatta negai',\n", - " 'kuzuresatte iku risou to ashita',\n", - " 'haite suteru hodo ni taikutsu datta',\n", - " 'good bye precious life',\n", - " 'unmei nante nurikaete',\n", - " 'kizu darake ni natte try for pride',\n", - " 'ah, ah, ah alone in my world',\n", - " 'sore de mo ai o utau',\n", - " 'hizunda sekai todokasu negai',\n", - " \"kizukiagete'ku kizuna to ashita\",\n", - " 'haite sutete mo kekkyoku taisetsu na n da',\n", - " \"it's my precious life\",\n", - " 'torinokosareta boku wa kiseki wo nakushita',\n", - " 'afuredasu kodoku yo boku wo misetekure',\n", - " 'todokanai hoshi no you na towa no you na suna ni natteshimatta',\n", - " 'nemurenai kimi ga fui ni nemutta yoru wa tetsu no nioi ga shita',\n", - " 'mitsumenaide yo boku no koto',\n", - " 'yukisaki ga wakaranai yo',\n", - " 'mayday mayday',\n", - " 'far from perfection boku no ito ga karamatte karamatte',\n", - " 'aka no juumon mo ao no mahou mo sutesatte sutesatte',\n", - " 'far from ideal man kimi no koe ga kikitakute kikitakute',\n", - " 'aka no juumon mo ao no mahou mo hikisaite wasuretai',\n", - " 'boku wa mou furafura ni natte',\n", - " 'megami yo from from i am',\n", - " 'far from perfection',\n", - " 'may i help you?',\n", - " '[verse 3}',\n", - " 'omoidashite ii? kimi no koto',\n", - " 'kakusei shichaisou sa',\n", - " 'mayday mayday',\n", - " 'call me call me',\n", - " 'i am mo i was mo nukedashite',\n", - " 'hashiridase tornado neat star',\n", - " 'kunou wa kiseki no supai ni ubawasero',\n", - " 'mou nukedashite kimi wo koeteiku',\n", - " 'ushinatta seimei ga tsunaida',\n", - " 'yomigaere neighbormind forevermind',\n", - " 'nokosareta seimei no ito wa dare no? i know',\n", - " 'akaku somatteiku',\n", - " 'ano hi no i am ga nokoshita kizuna wa eien ni kakushite',\n", - " 'kimi to boku wo toumei na ito de tsunaide',\n", - " 'hanarenai you ni kimi wo tokashiteiku',\n", - " 'kodoku ga boku wo sukutte kakumei wo nomikonda',\n", - " 'akaku somatteiku',\n", - " 'black / sugの歌詞',\n", - " 'romaji',\n", - " 'azayaka sugita zanzō wa yumekautsutsuka',\n", - " 'sensaina iro-dzukai no shūmaku wa doko ka shinjitsumi ga nakute',\n", - " 'however, my heart was broken',\n", - " 'hoho o tsutau namida no imi o ne oshiete',\n", - " 'kanjita mama hora shira sete',\n", - " 'say that it is a lie',\n", - " 'right now,,, i want you baby',\n", - " 'nanimokamo sukuenu hanashi',\n", - " 'sekai to boku kurutteru no wa dotchina n dai?',\n", - " 'whatever, the result may be',\n", - " 'dō ka futari meguriawa sete yo nē kamisama',\n", - " 'fukai nemuri kara sametara',\n", - " \"it's now or never, so why don't you come??\",\n", - " 'tell me the meaning of life',\n", - " 'give me your love!! get off to inside!!',\n", - " 'we were made by stupid liquid',\n", - " 'muhyōjō ni warau sora to tsumetaku nureta hitomi',\n", - " 'kowashitakute ubaenakute aishitakute yurusenai',\n", - " 'however, my heart was broken',\n", - " 'hoho o tsutau namida no imi o ne oshiete',\n", - " 'kanjita mama hora...',\n", - " 'nuri kasanete ku kotae mo kusari kitta ai no hate mo',\n", - " 'subete ga shinjitsu soredake wa dō ka wasurenaide',\n", - " 'kanji',\n", - " '鮮やかすぎた残像は 夢か現か',\n", - " '繊細な色使いの終幕は どこか真実味がなくて',\n", - " 'however, my heart was broken',\n", - " '頬をつたう涙の意味をねぇ教えて',\n", - " '感じたまま ほら 知らせて',\n", - " 'say that it is a lie',\n", - " 'right now,,, i want you baby',\n", - " 'なにもかも 救えぬ話',\n", - " '世界と僕 狂ってるのはどっちなんだい?',\n", - " 'whatever, the result may be',\n", - " 'どうか ふたり 巡り会わせてよ ねぇ 神様',\n", - " '深い眠りから 覚めたら',\n", - " \"it's now or never, so why don't you come??\",\n", - " 'tell me the meaning of life',\n", - " 'give me your love!! get off to inside!!',\n", - " 'we were made by stupid liquid',\n", - " '無表情に笑う空と 冷たく濡れた瞳',\n", - " '壊したくて 奪えなくて 愛したくて 許せない',\n", - " 'however, my heart was broken',\n", - " '頬をつたう涙の意味をねぇ教えて',\n", - " '感じたまま ほら、、、',\n", - " '塗り重ねてく答えも 腐り切った愛の果ても',\n", - " '全てが真実 それだけはどうか 忘れないで',\n", - " 'fuhai shita bakenokawa',\n", - " 'tsumi wa suitai no yo ka',\n", - " 'obitadashiku korogaru',\n", - " 'dōzoku wa yoku no shigai',\n", - " 'i deny everything',\n", - " 'i deny all of it',\n", - " 'i deny everything',\n", - " 'yami o matoi kokō wa gi ni mukau',\n", - " 'soko ni shinjitsu ga aru to',\n", - " 'han kyōran no bōto shisō kurai',\n", - " '「mazaranu kuro」 de nuritsubusu',\n", - " 'rinen no taigen mure o hazure kami ni somuku',\n", - " \"i'll be a brain-dead god\",\n", - " 'chi o hau mirai yami to mae',\n", - " 'gūzō to nari kakushin e',\n", - " 'yoku no shinizama o mita',\n", - " 'kono me ni kurui nado nai',\n", - " 'mureru kairai',\n", - " 'growing hate',\n", - " 'kanashi teru',\n", - " 'hate your life',\n", - " 'mureru kairai',\n", - " 'growing hate',\n", - " 'kami o otoshii koko ni shi o sasageru',\n", - " 'kazoe kirenu koe yo te no naru hou e',\n", - " 'yami to nari kazarou yūshū no shi o',\n", - " 'i will blacken out this world',\n", - " 'darkness in the world',\n", - " 'starts tonight',\n", - " 'kuchibue wo fuita irae wa mada konu',\n", - " 'tameiki ga hitotsu kagerou no naka ni kiyu',\n", - " 'kinuginu no fumi wa machikurasedo konu',\n", - " 'neya no mutsugoto wa asa ake no sora ni kiyu',\n", - " 'shinuru ga kowakuba kono sato wo tokusare',\n", - " 'tsuki ga mitsu toki usagi ga haneru',\n", - " 'wa ga hitomi no oku wo miyo kokoro mayoite kimo kudakete',\n", - " 'mune hi wo yaku ga gotoku kokoro kuruiteyuku',\n", - " 'kogaretemo kogaretemo kurushimi yori nogarenu nara',\n", - " 'inishie no mono no you ni hi no naka e kakenuke tobe!',\n", - " 'asatsuyu no hoka ni shiru hito nazo nashi',\n", - " 'sarasara to hoho ni koboruru mono wa nanzo',\n", - " 'ikidama ga yoi ni kono mi yori izuru',\n", - " 'tsuki ga mitsu toki ware oni to naran',\n", - " 'wa ga hitomi no oku wo miyo guren no honoo yurameite',\n", - " 'shakunetsu ni mi wo yakedo kokoro itetsuiteyuku',\n", - " 'kogaretemo kogaretemo tama no shirohada ni furenu nara',\n", - " 'yume wo hamubaku no you ni yamiyo ni kakurete yuke!',\n", - " 'ima zo yomiji e makarou',\n", - " 'ima zo fuseshi me hirakou',\n", - " 'shinuru ga kowakuba kono sato wo tokusare!',\n", - " 'tsuki ga mitsu toki usagi ga haneru',\n", - " 'wa ga hitomi no oku wo miyo kokoro mayoite kimo kudakete',\n", - " 'mune hi wo yaku ga gotoku kokoro kuruiteyuku',\n", - " 'kogaretemo kogaretemo kurushimi yori nogarenu nara',\n", - " 'inishie no mono no you ni hi no naka e kakenuke tobe!',\n", - " 'wa ga hitomi no oku wo miyo mune hi wo yaku ga gotoku',\n", - " 'kogaretemo kogaretemo inishie no mono no you ni',\n", - " 'kuchibue wo fuita irae wa mada konu',\n", - " \"i'm a movie star, i am part of your soul\",\n", - " 'only you can set me, only i can set you free',\n", - " 'mabushii raito ni fuchidorarete ima',\n", - " 'arata na dorama ga hajimatteku',\n", - " 'hikari to kage ai to kodoku wo',\n", - " 'kimi no naka ni mitsuketa hi kara',\n", - " 'we are movie stars, this world of light',\n", - " 'kizuato sae hokorashiki romansu',\n", - " \"you're a movie star, you are part of my soul\",\n", - " 'only i can set you, only you can set me free',\n", - " 'kako kara tsuyosa wo yume kara kiseki wo',\n", - " ...]},\n", - " 'data': ['are you satisfied?',\n", - " 'just open your eyes',\n", - " 'you can see the light',\n", - " 'across this borderline!',\n", - " 'uchinomesareta',\n", - " 'nageki no hate de',\n", - " 'aragai tsuzuketeru kanjou',\n", - " 'yamiyo ni hibiku',\n", - " 'haruka na hikari',\n", - " 'shinjiteru monotachi no houkou',\n", - " 'hey! get low! hey! hoero!',\n", - " 'koudou okose ima',\n", - " 'hey! you’re gonna be somebody',\n", - " 'soukyuu no exodus',\n", - " 'wazuka ni nokoshita yume higher',\n", - " 'sore made nakushichau no wa iya',\n", - " 'mimi kasu wake nain da liar',\n", - " 'otanoshimi (yeah!)',\n", - " 'umarete hateru made',\n", - " 'kabe ga dekai hodo desire',\n", - " 'hiraku kokoro ni messiah',\n", - " 'kawaru jidai tsukandetain da',\n", - " 'akiramezu (yeah!)',\n", - " 'torawareta yoru wo koete',\n", - " 'hade ni howling my soul',\n", - " 'doromamire demo',\n", - " 'kakageta kobushi',\n", - " 'samayou tamashii wo sendou',\n", - " 'tsudoishi negai',\n", - " 'nandomo komete',\n", - " 'uchi narase oretachi no gouhou',\n", - " 'hey! dero!',\n", - " 'karakara na heya no doa kette',\n", - " 'hey! be somebody!',\n", - " 'haruka naru koe ni boumei',\n", - " 'nosutarujia',\n", - " 'wazuka ni nokoshita yume higher',\n", - " 'sore made nakushichau no wa iya',\n", - " 'mimi kasu wake nain da liar',\n", - " 'otanoshimi (yeah!)',\n", - " 'umarete hateru made',\n", - " 'kabe ga dekai hodo desire',\n", - " 'hiraku kokoro ni messiah',\n", - " 'kawaru jidai tsukandetain da',\n", - " 'akiramezu (yeah!)',\n", - " 'torawareta yoru wo koete',\n", - " 'hade ni howling my soul',\n", - " 'are you satisfied?',\n", - " 'just open your eyes',\n", - " 'you can see the light',\n", - " 'across the borderline!',\n", - " 'takara no mochigusare nante',\n", - " 'iwareteru baai janai tte',\n", - " 'erasou na kuchi nante kiite',\n", - " 'hazukashii demo',\n", - " 'owaru ki wa nain daro',\n", - " 'kabe ga dekai hodo kitai',\n", - " 'ga takamaru hodo ni itai na',\n", - " 'wazuka ni nokoshita yume higher',\n", - " 'makineiri? no!',\n", - " 'jounetsu ni yumizu no',\n", - " 'you na abura o sosoge',\n", - " 'torawareta yoru o koete hade',\n", - " 'ni howling my soul',\n", - " 'kimi ni aeru hi ha iki kirashi te sakamichi',\n", - " 'kake nobottara pukari ukabu shiroi tsuki',\n", - " 'furimuku kimi no me ni ha',\n", - " 'hiyashinsu buruu no sora',\n", - " 'neko no me ni ha yase tari futottari shi teru tsuki',\n", - " 'kimi to matteru yuki no nioi o matteru',\n", - " 'utatane to utakata no hibi ha sugi te yuku',\n", - " 'hora yuki ga sode ni ochi te tokeru',\n", - " 'kimi to yoru to ongaku no you ni',\n", - " 'la la la',\n", - " 'choudokyuu no misairu',\n", - " 'hayaru inochi',\n", - " 'kono utsushimi wa masshigura',\n", - " 'sekai no mannaka ga mitai',\n", - " \"take me there, won't you?\",\n", - " 'kaosu to kosumosu no aida de matteiru yo',\n", - " 'top value no doraibu',\n", - " 'kimi no inochi',\n", - " 'sono dna wa masshigura',\n", - " 'sekai no mannaka ni furete',\n", - " \"raise me up, won't you?\",\n", - " 'hakai to kensetsu no aida de tatteite yo',\n", - " 'machikirenai',\n", - " 'ima naraba kodomo ni mo otona ni mo nareru',\n", - " 'tamesaretai',\n", - " 'chikazuiteiru',\n", - " 'tashikamete hora',\n", - " 'jiyuu e byouyomi',\n", - " 'shokikachuu no miraizu',\n", - " 'oboro inochi',\n", - " 'futo kaeri mite masshiguru',\n", - " 'sekai no mannaka ga toonoku',\n", - " \"wake me up, won't you?\",\n", - " 'kibun to gouri no ryouhou de mayotteiru yo',\n", - " 'tachikiritai',\n", - " 'ima dake wa otoko ni mo onna ni mo naranai',\n", - " 'sabakaretai',\n", - " 'kajikandeiru',\n", - " 'dare hitori tote',\n", - " 'sokonenai you ni',\n", - " 'ame ga yande kaze ga fuite',\n", - " 'karamitsuita nawa hodoku toki',\n", - " 'ikiteiru akashi wa shuuchaku sono mono darou kedo',\n", - " 'hanataretai',\n", - " 'aihan suru futatsu wo musube',\n", - " 'jiyuu wa koko sa',\n", - " 'hontou no sekai no mannaka',\n", - " 'breaking new gate',\n", - " 'tsumaranai noizu kakikesu you ni',\n", - " 'iya fuon no otogete',\n", - " 'yatsura ga korobu suki neratteru',\n", - " 'hey you kika seru wa',\n", - " 'itsu datte sou kono sekai wa faulty',\n", - " 'tachidomattara out of control',\n", - " 'bousougimi to nonoshira rete mo',\n", - " \"i don't care fumidase\",\n", - " 'i’ve gotta be on my way (hey!!)',\n", - " 'mattairana michi ni kyoumi wa miatanai no',\n", - " \"just breakin' new gate (hey!!)\",\n", - " '“koukai” to iu inbou no ma no te kaikugutte',\n", - " 'kono uenai kaikan wa suriru to tomoni iki tsudzuke tte',\n", - " 'mitaku mo nai koukei bakari',\n", - " 'shikaku ni tojikomeru',\n", - " 'chiisana sora ni kowoegaku hato',\n", - " 'who are you? miageru wa',\n", - " 'mogaitatte sou riaru wa steady',\n", - " 'jiko anji shite mo out of control',\n", - " 'namida ja sukuwa renainara',\n", - " 'mou enjoy ajiwae!',\n", - " \"i've gotta be on my way (hey!!)\",\n", - " 'kotae no nai kyoufu wa kyouki ni kaereba ii',\n", - " 'just breakin’ new gate (hey!!)',\n", - " 'masshiro ni keshi satta peeji wa yaburi sutero',\n", - " 'kakugo no saki e to suriru to tomoni mi wo sasagete',\n", - " 'itsu datte sou ko no sekai wa faulty',\n", - " 'tachidomattara out off control',\n", - " 'bousougimi to nonoshira rete mo',\n", - " \"i don't care fumidase\",\n", - " \"i've gotta be on my way (hey!!)\",\n", - " 'mattairana michi ni kyoumi wa miatanai no',\n", - " \"just breakin' new gate (hey!!)\",\n", - " 'koukai to iu inbou no ma no te kaiku gute',\n", - " 'kono uenai kaikan ga atashi wo hashiraseru',\n", - " 'kakugo no saki e to suriru to tomoni mi wo sasagete',\n", - " 'mushoku toumei jougen naki bousou ni',\n", - " 'donna kao o shi te tokekomu ?',\n", - " 'kyousei m mie nai mono he no daishou',\n", - " 'cries in vain',\n", - " 'go mad',\n", - " 'aimai na hangyaku kanjou',\n", - " 'cries in vain',\n", - " 'ways to destroy your ambition',\n", - " 'reborn',\n", - " 'faceless',\n", - " 'aimai de ama sugi te beta tsuku koe ga',\n", - " 'maiban nou ni tamatte iki kuchi o fusagu shimatsu de...',\n", - " \"i ' m behind you\",\n", - " 'yoku ga pa kuri to kuchi hirai te n daro u ga, ittai',\n", - " 'nani o motome te iru n da ? sonzai jitai sae mo ga',\n", - " 'i do not want to know',\n", - " 'igamu kao ni mizu o ukabe te ha oyogu shinjitsu',\n", - " 'rot away',\n", - " 'without you',\n", - " 'cries in vain',\n", - " 'go mad',\n", - " 'aimai na hangyaku kanjou',\n", - " 'cries in vain',\n", - " 'ways to destroy your ambition',\n", - " 'reborn',\n", - " 'no saving me',\n", - " 'dare mo togame te ha i nai hazu mo naku kurui motomeru',\n", - " 'blue na kara sora + kan da tsumeato',\n", - " 'ittai doko ni...',\n", - " 'do you live ?',\n", - " 'shinji rare nai no ha dare no sei ? kotoba takumi ni',\n", - " 'misekake no sentaku naki michi bakari o',\n", - " 'tsure yattekuru taiyou',\n", - " 'shintai hitotsu subete o uke te nagasu jihi sae',\n", - " 'mugon no hada o some te ha afure dashi ta',\n", - " 'kizu o mune ni hime te',\n", - " 'rot away',\n", - " 'without you',\n", - " 'cries in vain',\n", - " 'go mad',\n", - " 'aimai na hangyaku kanjou',\n", - " 'cries in vain',\n", - " 'ways to destroy your ambition',\n", - " 'reborn',\n", - " 'unmei daro u ga kowashi te shimae',\n", - " 'kintore',\n", - " 'kintore',\n", - " 'kintore',\n", - " 'kintore',\n", - " 'bomb',\n", - " 'kyou mo souchou hayaoki ranningu yeah',\n", - " 'taiyou ni kagayaku goruden bodi',\n", - " 'eiyou hakyuu wa within 30 minutes',\n", - " 'karada ni minagiru purotein',\n", - " 'insutabae ga panee katto ga panee',\n", - " 'kagami no toriai hanpanee ha',\n", - " 'ueito matsu te ga furueteyagaru',\n", - " 'sakebi omae no shouri no tame ni',\n", - " 'rasuto 1kai fight or fight',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'tachimukae yokubou no mama ni',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'koero kinniku no mukougawa',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'kui no nai kintore jinsei he',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'oikomi wo kakete',\n", - " 'sujihidai suru body & soul owarinaki tatakai',\n", - " 'burn the fat',\n", - " 'sutoikku ni itame tsuzukete nani wo mezasu',\n", - " 'burn the fat',\n", - " 'onore nirami onore tousui',\n", - " 'yagate kuru kintore teitaiki ni chiito dei',\n", - " 'taikai mokuzen taicho banzen mizu nuki shio nuki kaborodingu',\n", - " 'ikeru ka oi ore no kinniku',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'tachimukae yokubou no mama ni',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'koero kinniku no mukougawa',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'kui no nai kintore jinsei he',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'oikomi wo kakete',\n", - " 'osoi kakaru raibarutachi no massuru foomu',\n", - " 'koko de wa minna ga shujinkou narihibiku kankei ni kodou suru shinzou',\n", - " 'nikutai kara katarareru shinjitsu shinjirareru no wa onore no karada nomi',\n", - " 'hiza wo tsuku na tachiagare',\n", - " 'maku wa hiraita misetsukero omae ga onrii wan',\n", - " 'kourin seyo kinniku no kami',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'tachimukae yokubou no mama ni',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'koero kinniku no mukougawa',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'kui no nai kintore jinsei he',\n", - " 'macho of the world',\n", - " 'macho of the world',\n", - " 'oikomi wo kakete',\n", - " 'dale gaii tatoka tale goa lui toka con yomisu',\n", - " 'anamio',\n", - " 'alasoino wakea shoyorino',\n", - " 'yukue bokugashi litai nowa',\n", - " 'sou nada isso weta cotogenacte',\n", - " 'bokuraro yorotewa dokomade',\n", - " 'nobasewa dare gaii rueruga te',\n", - " 'yeah',\n", - " 'hurungai idatoka bokugawa',\n", - " 'rui toka yuu tsumore monaio',\n", - " 'cono oshi nomilai ikite',\n", - " 'kuimi bokugachi litai no wa',\n", - " 'so nada isoreda koto ja nakete',\n", - " 'so unna ari rueta koto de monate',\n", - " 'bakuraro yorotewa dokomade',\n", - " 'nomaseda dare gai rueruga tse',\n", - " 'nekito',\n", - " 'bokuraro yorotewa dokomade',\n", - " 'nobasewa dare gaii rueruga te',\n", - " 'nekito',\n", - " 'bokuraro mimi tewa dokomade',\n", - " 'akereba darekani mieru katee sore',\n", - " 'dake',\n", - " 'nani hito tsu shiranai',\n", - " 'boku wa watada ni to re janake',\n", - " 'irunda',\n", - " 'bokuraro yorotewa dokomade',\n", - " 'nobasewa dare gaii rueruga te',\n", - " 'nekito',\n", - " 'bokuraro mimi tewa dokomade',\n", - " 'akereba darekani mieru katee sore dake',\n", - " 'boku wa watada hitori janai ke irunda',\n", - " \"let's do our rock, scissors, and paper\",\n", - " 'make your hands and let anything out now',\n", - " 'you get ready to go!',\n", - " 'you know somebody to share?',\n", - " 'i wonder if you can bear',\n", - " 'what is the one you take care?',\n", - " 'bring them back!',\n", - " \"let's do our rock, scissors, and paper\",\n", - " \"make your hands, don't blink your eyes\",\n", - " 'アイコなら振り出しで負けたらそれまでのゲーム',\n", - " 'aiko nara furidashite maketara sore made no game',\n", - " 'そうさ僕らはそれにも似たような世界で生きてる',\n", - " 'sou sa bokura wa sore ni mo nita you na sekai de ikiteru',\n", - " '後だしは反則! この瞬間 一瞬make',\n", - " 'atodashi wa hansoku! kono shunkan isshun make',\n", - " '君のもち手3つは喜び, 欲望, そして怒り',\n", - " 'kimi no mochi te muttsu wa yorokobi, yokubou, soshite ikari',\n", - " 'かたや僕の方は愛と嫉妬, 悲しみを比喩した',\n", - " 'kataya boku no hou wa ai to shitto, kanashimi wo hiyushita',\n", - " '文字通り君の欲は僕の悲しみにも勝る',\n", - " 'monji toori kimi no yoku wa boku no kanashimi ni mo masaru',\n", - " 'ところがその欲望には僕のグーの愛でねじ伏せる',\n", - " 'tokoro ga sono yokubou ni wa boku no gee no ai de neji fuseru',\n", - " \"you know it's how it works 成り立った方程式\",\n", - " \"you know it's how it works naritatta houteishiki\",\n", - " 'どれが外れたってぇ',\n", - " 'dore ga hazuretattee',\n", - " \"let's do our rock, scissors, and paper\",\n", - " \"make your hands, don't blink your eyes\",\n", - " 'アイコなら振り出しで負けたらそれまでのゲーム',\n", - " 'aiko nara furidashite maketara sore made no game',\n", - " 'そうさ僕らはそれにも似たような世界で生きてる',\n", - " 'sou sa bokura wa sore ni mo nita you na sekai de ikiteru',\n", - " '後だしは反則! この瞬間 一瞬make',\n", - " 'atodashi wa hansoku! kono shunkan isshun make',\n", - " \"let's make our hands\",\n", - " \"don't cheat on it\",\n", - " \"let's make some blends\",\n", - " \"don't blink you eyes\",\n", - " \"(let's do it)\",\n", - " \"let's do our rock, scissors, and paper\",\n", - " '与えられたこの手で作る勝ち負けに',\n", - " 'taerareta kono te de tsukuru kachi make ni',\n", - " '僕はいつもどっか戸惑う少年!',\n", - " 'boku wa itsumo dokka tomadou shounen!',\n", - " \"let's do our rock, scissors, and paper\",\n", - " \"make your hands, don't blink your eyes\",\n", - " 'アイコなら振り出しで負けたらそれまでのゲーム',\n", - " 'aiko nara furidashite maketara sore made no game',\n", - " 'そうさ僕らはそれにも似たような世界で生きてる',\n", - " 'sou sa bokura wa sore ni mo nita you na sekai de ikiteru',\n", - " '後だしは反則! この瞬間 一瞬make',\n", - " 'atodashi wa hansoku! kono shunkan isshun make',\n", - " '一瞬make, 一瞬make',\n", - " 'isshun make, isshun make',\n", - " '一瞬make',\n", - " 'isshun make',\n", - " 'hareta sora shiranai chizu de ume kakuseba',\n", - " 'kaze ga sasu akiya no karada karuku',\n", - " 'itsumo no tokoro de yume wa samezu',\n", - " 'iki wo koroshite ne ga eru',\n", - " 'kareta koe',\n", - " 'iranai kotoba de arainagasu',\n", - " 'chotto mattene',\n", - " 'ima soko made ikukara',\n", - " 'itsumo no yume no katachi ni niseta',\n", - " 'iki no rizumu de tobikoeru',\n", - " 'day another day',\n", - " 'hi kurasu today',\n", - " 'aikotoba wa \"shōkyo kanō',\n", - " 'ninshō mukankei tekigō muimi',\n", - " 'aikotoba wa \"shōkyo kanō\"',\n", - " 'dōki wa ari sonzai kanō',\n", - " 'seizon kanō sonzai kanō',\n", - " 'yukusaki wa koko',\n", - " 'hareta sora',\n", - " 'shiranai chizu de ume kakuseba',\n", - " 'kaze ga sasu akiya no karada karuku',\n", - " 'itsumo no tokoro de yume wa samezu',\n", - " 'iki wo koroshite negaeru',\n", - " 'kareta koe',\n", - " 'iranai kotoba de arainagasu',\n", - " 'chotto mattene',\n", - " 'ima soko made ikukara',\n", - " 'itsumo no yume no katachi ni niseta',\n", - " 'iki no rizumu de tobikoeru',\n", - " 'day another day',\n", - " 'hi kurasu today',\n", - " 'pretty queen, nae doko ni iru no?',\n", - " 'nozo kikonda kagami koshi no shoutai',\n", - " 'machikado de miushinatta',\n", - " 'yume no tsudzuki otte sagashite iru no sa',\n", - " 'miss pretty queen',\n", - " 'hagureta shoujo',\n", - " 'my little days',\n", - " 'togireta resuponsu',\n", - " 'nananana, nana, nana, nanana',\n", - " 'nananana, nana, nana, nanana',\n", - " 'miss pretty queen',\n", - " 'pretty queen saa me wo samashite',\n", - " 'garasu no kutsu wo kette hadashi de tobira kette',\n", - " 'kono sekai wo itsumo baby',\n", - " 'sono te no hira no ue mawashiteta jyanai?',\n", - " 'miss pretty queen',\n", - " 'toki ni wa serufishu',\n", - " 'my little pride',\n", - " 'bukyou na passhon',\n", - " 'nananana, nana, nana, nanana',\n", - " 'nananana, nana, nana, nanana',\n", - " 'miss pretty queen, oh',\n", - " 'miss pretty queen, oh',\n", - " 'basu kara furitara mashingan wo buu hanase',\n", - " 'chiisana na haato ni hi wo tsukeru',\n", - " 'pretty queen yuka ni kobore ochita',\n", - " 'namida iro no paaru tsunagi awase',\n", - " 'surikireta sukaato sotto',\n", - " 'hiroge mune wo hatte hane batakeba ii',\n", - " 'miss pretty queen',\n", - " 'hagureta shoujo',\n", - " 'my pretty queen',\n", - " 'kagami no naka',\n", - " 'miss pretty queen',\n", - " 'nananana, nana, nana, nanana',\n", - " 'nananana, nana, nana, nanana',\n", - " 'miss pretty queen',\n", - " 'miss pretty queen',\n", - " 'miss pretty queen',\n", - " 'miss pretty queen',\n", - " 'miss pretty queen',\n", - " 'sateraito, sateraito',\n", - " 'hizumi ma wada niwa ni saku asagao no you',\n", - " 'tsumadzuki, tsumadzuki',\n", - " 'hitori avuatā arōn',\n", - " 'nadare ga, nadare ga',\n", - " 'mune no oku no inishie de nari yamanu hibi',\n", - " 'sateraito, sateraito',\n", - " 'hisashiku kotae naku',\n", - " 'kantanfu no ame furu michi wo kita',\n", - " 'santantaru rireki wa dare no tame?',\n", - " 'sateraito, sateraito',\n", - " 'hizumi wa mou en wo kaku niji no wa no you',\n", - " 'marobi tsu, marobi tsu',\n", - " 'michi ni avuatā arōn',\n", - " 'shiretsu no, shiretsu no',\n", - " 'kiwami no asa ki wa itsu jususuka to toeba',\n", - " 'sateraito, sateraito',\n", - " 'mujou ni kotake naku',\n", - " 'tentousuru kazu dake toshi wo heta',\n", - " 'sousou taru risuku wa nan to tame?',\n", - " 'avuatā arōn',\n", - " 'ki wa mada tooi',\n", - " 'tada ikinobiyo',\n", - " 'avuatā arōn',\n", - " 'yoru wa fukai',\n", - " 'zanji nigenobiyo',\n", - " 'avuatā arōn',\n", - " 'ame wa tsuyoi',\n", - " 'junji norikoeyo',\n", - " 'sateraito, sateraito',\n", - " 'hizumi wa mou manten no oorora no you',\n", - " 'miageru, miageru',\n", - " 'michi ni avuatā arōn',\n", - " 'joretsu no, joretsu no',\n", - " 'tori ni takusu sain wa “mukae iranu mou”',\n", - " 'sateraito, sateraito',\n", - " 'kotae wa iranu mou',\n", - " 'kantanfu no ame furu michi wo kita',\n", - " 'santantaru rireki wa dare no tame?',\n", - " 'avuatā arōn',\n", - " 'ki wa mou sugu',\n", - " 'tada ikinobiyo',\n", - " 'avuatā arōn',\n", - " 'ki wa mou sugu',\n", - " 'tada ikinobiyo',\n", - " 'avuatā arōn',\n", - " 'ki wa mou sugu',\n", - " 'tada ikinobiyo',\n", - " 'buchimakeru',\n", - " 'kaiwai no migoroshi ni wa warau',\n", - " 'sono me de mita no wa',\n", - " 'jakusha kirisuteta utage',\n", - " 'magamagashiki hakugai',\n", - " 'babylon’s taboo',\n", - " 'yokuatsu sareta nabiite boukan',\n", - " 'ade due damballa',\n", - " 'tameshiteiru no ka?',\n", - " 'ade due damballa',\n", - " 'magamagashiki hakugai',\n", - " 'babylon’s taboo',\n", - " 'yokuatsu sareta nabiite boukan',\n", - " 'ade due damballa',\n", - " 'tameshiteiru no ka?',\n", - " 'ade due damballa',\n", - " 'giragira matataku osora no uso ga',\n", - " 'dosugurokute kirei',\n", - " 'dorodoro ni utsuru ura no ura made',\n", - " 'ukeireta unmei',\n", - " \"「this is babylon's taboo」\",\n", - " 'boukan no black eyes',\n", - " 'black eye, black eyes, black eye',\n", - " \"i can't forget this humiliation\",\n", - " 'fukan no black eyes',\n", - " 'black eye, black eyes, black eye',\n", - " \"i fucking can't forget this day\",\n", - " 'in vain',\n", - " 'shouki ka sae futashika na mono to natta',\n", - " 'this is a curse',\n", - " 'in vain',\n", - " 'mou hakichirasu zouo sae futashika na',\n", - " 'my curse',\n", - " 'giragira matataku kyokou to uso ga',\n", - " 'dosugurokute kirei',\n", - " 'dorodoro ni utsuru ura no ura made',\n", - " 'ukeireta unmei',\n", - " \"「this is babylon's taboo」\",\n", - " 'boukan no black eyes',\n", - " 'black eye, black eyes, black eye',\n", - " \"i can't forget this humiliation\",\n", - " 'fukan no black eyes',\n", - " 'black eye, black eyes, black eye',\n", - " \"i fucking can't forget this day\",\n", - " 'magamagashiki hakugai',\n", - " 'babylon’s taboo',\n", - " 'yokuatsu sareta nabiite boukan',\n", - " 'ade due damballa',\n", - " 'tameshiteiru no ka?',\n", - " 'ade due damballa',\n", - " 'magamagashiki hakugai',\n", - " 'babylon’s taboo',\n", - " 'yokuatsu sareta nabiite boukan',\n", - " 'ade due damballa',\n", - " 'tameshiteiru no ka?',\n", - " 'ade due damballa',\n", - " 'my curse',\n", - " 'zutto onaji basho ni ita koto nante',\n", - " 'shiru koto mo nai mama toki wa nagare',\n", - " 'mou nido to hanashitakunai',\n", - " 'yatto tadoritsuita iru beki basho e',\n", - " 'utsuriyuku keshiki kawariyuku mirai',\n", - " 'negaikome tada sora wo aogi',\n", - " 'tsunaida kokoro wa afurete',\n", - " 'omoi wa tsuuretsu ni karamiaiyuku',\n", - " \"i'll never forget your love\",\n", - " \"oh, wherever you are, i'll always remember\",\n", - " \"oh, wherever you are, i'll be thinking about you\",\n", - " \"i'll make the world shake, searching for you\",\n", - " 'just promise: remember me forever',\n", - " 'furikaereba sou itsumo to onaji',\n", - " 'taenai hikari wo hanachitsudzuke',\n", - " 'mabushii hodo tsuyoku hotobashiru omoi',\n", - " 'ikudo to naku kurikaesu kono joudou',\n", - " 'subete wo sutetemo mamoritai omoi ga',\n", - " 'ima mune no naka tachikomete osaekirenai',\n", - " 'oh, wherever you go, we will be reunited again',\n", - " \"i'll make the world shake, searching for you\",\n", - " 'your eyes, just like shining stars',\n", - " 'smile, healing my soul',\n", - " 'you keep me alive',\n", - " \"i won't lose you now\",\n", - " 'du di di ding...',\n", - " 'i’ve found the new way to live',\n", - " 'you gotta boost up',\n", - " 'boku no kotoba janai kitto kore wa bokutachi no kotoba da',\n", - " 'sekaijuu ga hidari te shika nakerya migi te o kakusu yatsura ni wa naruna',\n", - " 'kono ao no saki ni nani mo nai kidzuita hi kara sora miagenai',\n", - " 'soko nashi numa ni hora soko ga atte',\n", - " 'ima mo nao kegaru yuku kono machi ja',\n", - " 'tada kuuki dake o suou to shitatte',\n", - " 'warui mono mo issho ni suikondeshimau',\n", - " 'oh this way',\n", - " 'itsumo (itsumo) ushinatte (satte) tae rarenai mono nante',\n", - " 'kono te ni wa tsukuranu you ni to ikitekita bokura no te ni',\n", - " 'you are friend (friend), baby (dream)',\n", - " 'kidzukeba mou kokoro ni aishinuku beki mono bakari',\n", - " 'ima made okashita ayamachi ga subete warui to wa omoenakatta',\n", - " 'subete no yasashisa ga itsu datte tadashikunakatta koto no you ni',\n", - " 'nanji miayamaru koto nakare saizu no awanai fuku to onaji sa',\n", - " 'saizu no awanai kane ya haku kotoba wa omae o misuborashikusuru dake da zo',\n", - " 'takaga sonna mono wa kureteyareru kedo demo',\n", - " 'itsumo (itsumo) ushinatte (satte) taerarenai mono sae',\n", - " 'mamorezu ni kuyamu dake no hibi ni ikiteitaku wa nai kara',\n", - " 'you are friend (friend), baby (dream)',\n", - " 'kono te ni kakaeta mono o mamoreru tsuyosa o oh',\n", - " 'di di ding… ah ah…',\n", - " 'i’ve found the new way to live',\n", - " 'kono chi yori mo hon no sukoshi taisetsu da to ieru basho ga koko de',\n", - " 'kono ryoute ja mada kakae kirenai hodo na oh',\n", - " 'eien yori sara ni jikan o kaketemo',\n", - " 'negatta mirai o tada sono tame dake ni ikiteirareru you ni to',\n", - " 'oh this way',\n", - " 'itsumo (itsumo) ushinatte (satte) tae rarenai mono nante',\n", - " 'kono te ni wa tsukuranu you ni to ikite kita bokura no te ni',\n", - " 'you are friend (friend), baby (dream)',\n", - " 'kidzukeba mou kokoro ni aishinuku beki mono bakari',\n", - " 'oh this way',\n", - " 'itsumo (itsumo) ushinatte (satte) tae rarenai mono sae',\n", - " 'mamorezu ni kuyamu dake no hibi ni ikite ita ku wanai kara',\n", - " 'you are friend (friend), baby (dream)',\n", - " 'motto tsuyoku naru yo',\n", - " 'kore wa boku no kotoba janai bokura no kotoba',\n", - " 'di di ding… ah ah…',\n", - " 'i’ve found the new way to live',\n", - " 'moshi negaigoto ga kanau nonara',\n", - " 'saisho de saigo no shiawase shinjiru no',\n", - " 'futari de hitotsu ni nareta hi kara',\n", - " 'takusan no ai no kotoba o sagashita ne',\n", - " 'sekai de dare yori kitto shiawasena ki ga shita',\n", - " 'kono hibi ga kesshite owaranu you ni to',\n", - " 'itsu made mo kawaranu mama',\n", - " 'i love you now and forever',\n", - " 'will be beside you forever',\n", - " 'our love will last forever',\n", - " 'kimi no tamenara!',\n", - " 'i love you now and forever',\n", - " 'will be beside you forever',\n", - " 'our love will last forever',\n", - " 'tada aishiteru no wa',\n", - " 'hoka demo dare demonaku tada hitori kimi dakara',\n", - " 'kiseki ya unmei shinjiru yori',\n", - " 'eien no ai o katachi ni dekirunara',\n", - " 'dore dake bokura futari shiawase ni naru ka na?',\n", - " 'ureshikute egao afure dasu hibi o sugosukara',\n", - " 'dakedo kanashikute namida nagashita yoru demo tsunagareru',\n", - " 'kimi to ireba! !',\n", - " 'i love you now and forever',\n", - " 'will be beside you forever',\n", - " 'our love will last forever',\n", - " 'kimi no tamenara!',\n", - " 'i love you now and forever',\n", - " 'will be beside you forever',\n", - " 'our love will last forever',\n", - " 'tada aishiteru no wa',\n", - " 'hoka demo dare demonaku tada hitori kimi dakara',\n", - " \"i'll always give you all my love\",\n", - " 'i swear to love you with my life',\n", - " 'kamisama onegai',\n", - " 'kono mama futari de',\n", - " 'towa ni hibiku made dokoka touku e',\n", - " \"don'na kotoba demo tsutae kirenai no\",\n", - " 'ima wa kimi igai aisenaikara!',\n", - " 'ano hi ano toki no ano kotoba no imi',\n", - " 'kimi ga kureta no wa boku e no ai de!',\n", - " 'i love you now and forever',\n", - " 'will be beside you forever',\n", - " 'our love will last forever',\n", - " 'kimi o aiseru no wa',\n", - " 'hoka demo dare demonaku tada hitori boku dakeda yo',\n", - " 'soshite tsudoishi sutādasuto',\n", - " 'hyakunen me no mezame ni yobarete',\n", - " 'otokotachi wa mukau',\n", - " 'toki no suna wo koeru journey',\n", - " 'kusari no yō tsuranaru karami au karuma',\n", - " 'hikari de tatsu sadame',\n", - " 'stand up! stand up! stand up!',\n", - " 'uchikomu no wa',\n", - " 'all right now! all right now! all right now!',\n", - " 'hokori no bullet',\n", - " 'break you down! break you down! break you down!',\n", - " 'kobushi hanatsu seinaru vijon stand proud!',\n", - " 'tojirareteta toki ni',\n", - " 'hi no hikari abiseru no wa dareda',\n", - " 'mirai nokosu kibō',\n", - " 'nagareru hoshi no kuruseidāsu',\n", - " 'kakeru no wa inochi mamoru beki ai to',\n", - " 'kādo wa kubarareta',\n", - " 'stand up! stand up! stand up!',\n", - " 'tachihadakaru',\n", - " 'all right now! all right now! all right now!',\n", - " 'teki wo taoshi',\n", - " 'break you down! break you down! break you down!',\n", - " 'michi wo hiraku tamashi no vijon stand proud!',\n", - " 'yami no naka warau senaka wo',\n", - " 'sagashi oimotomeru otoko no',\n", - " 'sono ashioto rekuiemu',\n", - " 'sabaku ni hibiku',\n", - " 'stand up! stand up! stand up!',\n", - " 'uchikomu no wa',\n", - " 'all right now! all right now! all right now!',\n", - " 'hokori no bullet',\n", - " 'break you down! break you down! break you down!',\n", - " 'kobushi hanatsu seinaru vijon stand proud!',\n", - " 'stand up! stand up! stand up!',\n", - " 'tachihadakaru',\n", - " 'all right now! all right now! all right now!',\n", - " 'teki wo taoshi',\n", - " 'break you down! break you down! break you down!',\n", - " 'michi wo hiraku tamashi no vijon stand proud!',\n", - " 'ichido wa ano hikari wo mitanda yo totemo kirei de',\n", - " 'demo ima omoeba kitanakatta are wa iwayuru bad day dreams',\n", - " 'hikari ga mabushi sugite mawari ga miezu tada tada hibi wo',\n", - " 'bou ni futteta ano hi ima dakara waraeru yo',\n", - " 'ichido wa ano maku wo aketanda yo totemo omokute',\n", - " 'pressure, iyami sore ni katsu tame ni tada iya na yatsu de',\n", - " 'soshite ki ga tsuku to makkura na heya ni hitori bocchi datta',\n", - " 'owatta.... aou modorenai.... nante.... aruku no mo yameta',\n", - " \"demo i'm not alone. i'm not alone\",\n", - " \"we're not, we're not, we're not alone\",\n", - " 'okane ja kaenai mono te ni irete',\n", - " 'mou ichido hikari abite soshite kondo wa damasarenu you ni',\n", - " 'bokura wa ima mezasu yo yokubou ni michita seinendan',\n", - " 'dareka ga itta kotoba sore sura sono toki wa nagashite',\n", - " 'ima ni natte kidzuita yo yokubou ni maketa shounendan',\n", - " 'so, i know you know? you know i know?',\n", - " 'we have, we have, we have grown',\n", - " 'torawarenai you ni to ue muite aruku',\n", - " 'mou ichido hikari abite soshite kondo wa damasarenu you ni',\n", - " 'bokura wa ima mezasu yo yokubou ni michita seinendan',\n", - " 'dareka ga itta kotoba sore sura sono toki wa nagashite',\n", - " 'ima ni natte kidzuita yo yokubou ni maketa shounendan']}}},\n", - " 'so': {'sentence': {'pop': {'meta': {'train_data': ['paan mein pudina dekha',\n", - " 'naak ka nagina dekha',\n", - " 'chikni chameli dekhi',\n", - " 'chikna kamina dekha',\n", - " 'chaand ne cheater hoke cheat kiya toh',\n", - " 'sare tare bole gilli gilli akha',\n", - " 'meri baat, teri baat',\n", - " 'zyada baatein boori baat',\n", - " 'thaali mein katora leke',\n", - " 'aaloo bhat, muri bhat',\n", - " 'mere peeche kisi ne repeat kiya toh',\n", - " 'saala maine tere muh pe maara mukka',\n", - " 'ispe bhoot koi chadha hai',\n", - " 'thehar na jaane naa',\n", - " 'ab toh kya bura kya bhala hai',\n", - " 'fark pehchaane naa',\n", - " 'zidd pakad ke khada hai kambakht',\n", - " 'chhodna jaane naa',\n", - " 'badtameez dil, batameez dil, batamiz dil',\n", - " 'maane na, maane na',\n", - " 'badtameez dil, batameez dil, batamiz dil',\n", - " 'maane na, maane na',\n", - " 'yeh jo haal hai, sawaal hai, kamaal hai',\n", - " 'jaane na jaane na',\n", - " 'badtameez dil, battameez dil badtameez dil',\n", - " 'maane naa',\n", - " 'hawa mein havana dekha',\n", - " 'dhimka falaana dekha',\n", - " 'seeng ka singhara khaake',\n", - " 'sher ka ghuraana dekha',\n", - " 'poori duniya ka gol gol chakkar leke',\n", - " 'maine duniya ko maara dhakka',\n", - " 'hey bollywood hollywood very very jolly good',\n", - " 'raayi ke pahaad par teen futa liliput',\n", - " 'mere peeche kisi ne repeat kiya toh',\n", - " 'saala maine tere muh pe maara mukka',\n", - " 'ayaashi ke one way se khudko',\n", - " 'modna jaane naa',\n", - " 'kambal bewajah sharam ka',\n", - " 'odhna jaane naa',\n", - " 'zidd pakad ke khadha hai kambakht',\n", - " 'chodhna jaane na... haha!',\n", - " 'badtameez dil, batameez dil, batamiz dil',\n", - " 'maane na, maane na',\n", - " 'badtameez dil, batameez dil, batamiz dil',\n", - " 'maane na, maane na',\n", - " 'aaj saare, chaand taare',\n", - " 'bann gaye hai disco lights',\n", - " 'jal ke, bujha ke humko bula ke',\n", - " 'keh rahe hai, party all nights',\n", - " 'naata betuki dillagi se, todna jaane na',\n", - " 'aane wale kal ki fikar se, judna jaane na',\n", - " 'zidd pakad ke khada hai kambakht',\n", - " 'chodhna jaane na... haha',\n", - " 'badtameez dil, batameez dil, batamiz dil',\n", - " 'maane na, maane na',\n", - " 'badtameez dil, batameez dil, batamiz dil',\n", - " 'maane na, maane na',\n", - " 'yeh jo haal hai, sawaal hai, kamaal hai',\n", - " 'jaane na jaane na',\n", - " 'badtameez dil, battameez dil badtameez dil',\n", - " 'maane naa',\n", - " 'aftab sare kooh noor afshonee',\n", - " 'samavar jooshee',\n", - " 'yarom toonge tala doosh gerefte',\n", - " 'ghamze mifrooshee',\n", - " 'yarom tonge tala dosh gerefte',\n", - " 'ghamze mifroshe',\n", - " 'ye doonee anar doa doonee anar sisad doonee morvarid',\n", - " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", - " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", - " 'ajab abroo ajab laboo ajab rooo dokhtar ghoochani',\n", - " 'ajab giso besane barge boo dokhtar ghoochani',\n", - " 'ajab giso besane barge boo dokhtar ghoochani',\n", - " 'ye doonee anar doa doonee anar sisad doonee morvarid',\n", - " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", - " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", - " 'ye doonee anar doa doonee anar sisad doonee morvarid',\n", - " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", - " 'mishkofe gol ay mipashe gol dokhtar ghochani',\n", - " 'negarom bar labe bom omadoo raft chaarree nadarom',\n", - " 'dobare bar labam joon omado raft chaarree nadarom',\n", - " 'dobare bar labom joon omadoo raft chaarree nadarom',\n", - " 'cheragho por kon az roghane gol chaarree nadarom',\n", - " 'ke yarom chashm geryoon omadoo raft chaarree nadarom',\n", - " 'ke yarom chashm geryoon omadoo raft chaarree nadarom',\n", - " 'ye doonee anar doa doonee anar sisad doonee morvarid',\n", - " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", - " 'mishkofe gol ay mipashe gol dokhtar ghoochani',\n", - " 'maaṭi ke tum deeware',\n", - " 'jo sunyo hamri baat',\n", - " 'aaj milaawara mohe piya ka',\n", - " 'jo jagyo saari raat',\n", - " 'aaj rang hai ri maan',\n", - " 'rang hai ri',\n", - " 'aaj rang hai ri maan',\n", - " 'rang hai ri',\n", - " 'aaj rang hai ri maan',\n", - " 'rang hai ri',\n", - " 'aaj rang hai ri maan',\n", - " 'rang hai ri',\n", - " 'more khaajah ke ghar rang hai ri',\n", - " 'aaj rang hai ri maan',\n", - " 'rang hai ri',\n", - " 'more khaajah ke ghar rang hai ri',\n", - " 'aaj sajan milaawara more aangan men',\n", - " 'sajan milaawara more aangan men',\n", - " 'aaj rang hai ri maan',\n", - " 'rang hai ri',\n", - " 'aaj rang hai ri maan',\n", - " 'rang hai ri',\n", - " 'raini chaṛhi rasool ki',\n", - " 'so rang maula ke haath',\n", - " 'jis ki choonar rang diyo',\n", - " 'so dhan dhan wa ke bhaag',\n", - " 'aaj rang hai e maan',\n", - " 'rang hai ri',\n", - " 'aaj rang hai e maan',\n", - " 'rang hai ri',\n", - " 'aaj rang hai e maan',\n", - " 'rang hai ri',\n", - " 'aaj rang hai e maan',\n", - " 'rang hai ri',\n", - " 're aaj rang hai e maan',\n", - " 'rang hai ri',\n", - " 'are aaj rang hai e maan',\n", - " 'rang hai ri',\n", - " 'mere mahboob ke ghar',\n", - " 'e ri sakhi ri mere mahboob ke ghar',\n", - " 'e ri sakhi ri mere mahboob ke ghar',\n", - " 'e ri sakhi ri mere mahboob ke ghar rang hai ri',\n", - " 'aaj rang hai e maan',\n", - " 'rang hai ri',\n", - " 'aaj rang hai e maan',\n", - " 'rang hai ri',\n", - " 'mohe peer paayo nijaam ud-deen auliya',\n", - " 'mohe peer paayo nijaam ud-deen auliya',\n", - " 'mohe peer paayo nijaam ud-deen auliya',\n", - " 'mohe peer paayo nijaam ud-deen auliya',\n", - " 'mohe peer paayo saabir ‘ala ud-deen auliya',\n", - " 'mohe peer paayo saabir ‘ala ud-deen auliya',\n", - " 'mohe peer paayo nijaam ud-deen auliya',\n", - " 'nijaam ud-deen auliya',\n", - " '‘ala ud-deen auliya',\n", - " 'nijaam ud-deen auliya',\n", - " '‘ala ud-deen auliya',\n", - " 'nijaam ud-deen auliya',\n", - " '‘ala ud-deen auliya',\n", - " 'main to jab dekhoon more sang hai ri maan rang hai ri',\n", - " 'main to jab dekhoon more sang hai ri maan rang hai ri',\n", - " 'main to jab dekhoon more sang hai ri maan rang hai ri',\n", - " 'aaj rang hai ri maan',\n", - " 'rang hai ri',\n", - " 'des bides men ḍhoonḍ phiri hoon',\n", - " 'des bides men ḍhoonḍ phiri hoon',\n", - " 'are des bides men ḍhoonḍ phiri hoon',\n", - " 'tora rang man bhaayo nijaam ud-deen',\n", - " 'tora rang man bhaayo nijaam ud-deen',\n", - " 'tora rang man bhaayo nijaam ud-deen',\n", - " 'tora rang man bhaayo main tora rang',\n", - " 'tora rang man bhaayo main tora rang',\n", - " 'tora rang man bhaayo main tora rang',\n", - " 'are tora rang man bhaayo main tora rang',\n", - " 'bhul rahi re maan',\n", - " 'main to aiso rang',\n", - " 'mahboob-i ilaahi',\n", - " 'main to aiso rang',\n", - " 'mahboob-i ilaahi',\n", - " 'main to aiso rang',\n", - " 'mahboob-i ilaahi',\n", - " 'khusro rain suhaag ki so main jaagi pi ke sang',\n", - " 'khusro rain suhaag ki so main jaagi pi ke sang',\n", - " 'tan mora man peehu ka',\n", - " 'tan mora man peehu ka so donon ek hi rang',\n", - " 'main to aiso rang',\n", - " 'mahboob-i ilaahi',\n", - " 'main to aiso rang',\n", - " 'gokul dekha',\n", - " 'mathura dekha',\n", - " 'gokul dekha',\n", - " 'mathura dekha',\n", - " 'poorab dekha',\n", - " 'pachchhim dekha',\n", - " 'uttar dekha',\n", - " 'dakkhan dekha',\n", - " 'uttar dekha',\n", - " 'dakkhan dekha',\n", - " 'par tosa nah koyi rang dekha re',\n", - " 'main to aiso rang',\n", - " 'mahboob-i ilaahi',\n", - " 'main to aiso rang',\n", - " 'mahboob-i ilaahi',\n", - " 'phiri zamaane men chaar jaanib',\n", - " 'allaah',\n", - " 'nigaar-i yakta tumheen ko dekha',\n", - " 'haseen dekhe jameel dekhe',\n", - " 'bas ek tum sa tumheen ko dekha',\n", - " 'main to aiso rang',\n", - " 'mahboob-i ilaahi',\n", - " 'main to aiso rang',\n", - " 'mahboob-i ilaahi',\n", - " 'main to aiso rang',\n", - " 'des bides men ḍhoonḍ phiri hoon',\n", - " 'des bides men ḍhoonḍ phiri hoon',\n", - " 'des bides men ḍhoonḍ phiri hoon',\n", - " 'mohe tora rang man bhaayo nijaam ud-deen',\n", - " 'tora rang man bhaayo nijaam ud-deen',\n", - " 'jag jag jag jag',\n", - " 'jag jag jag ujyaaro',\n", - " 'jag ujyaaro',\n", - " 'jag ujyaaro',\n", - " 'khaajah nijaam ud-deen jagat ujyaaro',\n", - " 'khaajah nijaam ud-deen jagat ujyaaro',\n", - " 'saabir ‘ala ud-deen jagat ujyaaro',\n", - " 'saabir ‘ala ud-deen jagat ujyaaro',\n", - " 'meharwa',\n", - " 'meharwa ras boondaan barse',\n", - " 'meharwa ras boondaan barse',\n", - " 'boondaan barse',\n", - " 'ras boondaan barse',\n", - " 'boondaan barse',\n", - " 'ras boondaan barse',\n", - " 'khaajagaan ke darbaaran men',\n", - " 'khaajagaan ke darbaaran men',\n", - " 'aaj dekho ghan garje',\n", - " 'aaj dekho ghan garje',\n", - " 'aaj dekho ghan garje',\n", - " 'ras boondaan barse',\n", - " 'meharwa ras boondaan barse',\n", - " 'khaajah fareed ud-deen auliya',\n", - " 'qutub ud-deen auliya',\n", - " 'khaajah mu‘een ud-deen auliya',\n", - " 'khaajah qutub ud-deen auliya',\n", - " 'khaajah mu‘een ud-deen auliya',\n", - " 'khaajah qutub ud-deen auliya',\n", - " 'khaajah nijaam ud-deen',\n", - " 'khaajah naseer ud-deen',\n", - " 'khaajah nijaam ud-deen',\n", - " 'khaajah naseer ud-deen',\n", - " 'aaj shuhrah nijaam naseer ud-deen ka laa‘l mahboob bana',\n", - " 'laa‘l mahboob bana',\n", - " 'laa‘l mahboob bana',\n", - " 'laa‘l mahboob bana',\n", - " 'laa‘l mahboob bana',\n", - " 'nijaam ud-deen auliya jag ujyaaro',\n", - " 'nijaam ud-deen auliya jag ujyaaro',\n", - " 'nijaam ud-deen auliya jag ujyaaro',\n", - " 'nijaam ud-deen auliya jag ujyaaro',\n", - " 'jagat ujyaaro',\n", - " 'jagat ujyaaro',\n", - " 'jag ujyaaro jagat ujyaaro',\n", - " 'jag ujyaaro jagat ujyaaro',\n", - " 'jag ujyaaro jagat ujyaaro',\n", - " 'jag ujyaaro jagat ujyaaro',\n", - " 'jag ujyaaro jagat ujyaaro',\n", - " 'jag ujyaaro jagat ujyaaro',\n", - " 'teri soorat se kisi ki naheen milti soorat',\n", - " 'teri soorat se kisi ki naheen milti soorat',\n", - " 'ham jahaan men tiri tasweer liye phirte hain',\n", - " 'dekho main to aiso rang',\n", - " 'mahboob-i ilaahi',\n", - " 'main to aiso rang',\n", - " 'mahboob-i ilaahi',\n", - " 'nijaam ud-deen auliya jag ujyaaro',\n", - " 'nijaam ud-deen auliya jag ujyaaro',\n", - " 'jag ujyaaro jagat ujyaaro',\n", - " 'jag ujyaaro jagat ujyaaro',\n", - " 'wuh to jo maange barsat hai ri maan rang hai ri',\n", - " 'wuh to jo maange barsat hai ri maan rang hai ri',\n", - " 'aaj rang hai e maan',\n", - " 'rang hai ri',\n", - " 'aaj rang hai e maan',\n", - " 'rang hai ri',\n", - " 'kolli lama tbosileya bahrab min aneik',\n", - " \"khayfa shoo'ee y ban aalaya w arabni leek\",\n", - " \"nifsi ansa eni bahebak 'oli aamel eh?\",\n", - " 'hassa roohi gowa mini bit arabni leek',\n", - " 'kolli lama tbosileya bahrab min aneik',\n", - " \"khayfa shoo'ee y ban aalaya w arabni leek\",\n", - " \"nifsi ansa eni bahebak 'oli aamel eh?\",\n", - " 'hassa roohi gowa mini bit arabni leek',\n", - " 'albi law fi sawt y oolak aal lana hassa bee',\n", - " 'enta elli eshto omri w ana dawer aalay',\n", - " 'mosh bahebak hob aadi dana magnoona beek',\n", - " 'albi law fi sawt y oolak aal lana hassa bee',\n", - " 'enta elli eshto omri w ana dawer aalay',\n", - " 'mosh bahebak hob aadi dana magnoona beek',\n", - " 'w enta gambi hassa albi byetkalam maak',\n", - " \"farhet el donia f ayanaya ya habibi b loo'ak\",\n", - " 'law ha eesh el omr gambak rah eesh mareteyn',\n", - " 'nefsi anam w aassha fi hobak w etnafas hawak',\n", - " 'w enta gambi hassa albi byetkalam maak',\n", - " \"farhet el donia f ayanaya ya habibi b loo'ak\",\n", - " 'law ha eesh el omr gambak rah eesh mareteyn',\n", - " 'nefsi anam w aassha fi hobak w etnafas hawak',\n", - " 'albi law fi sawt y oolak aal lana hassa bee',\n", - " 'enta elli eshto omri w ana dawer aalay',\n", - " 'mosh bahebak hob aadi dana magnoona beek',\n", - " 'albi law fi sawt y oolak aal lana hassa bee',\n", - " 'enta elli eshto omri w ana dawer aalay',\n", - " 'mosh bahebak hob aadi dana magnoona beek',\n", - " 'aaji mera ji karda ...',\n", - " 'kaava kaava kaava',\n", - " 'aaj mera ji karda, mei ut jaa naale haava vava',\n", - " 'ki meri kismat ne (2) karditiya tandiya chaava ....',\n", - " 'ke aaj mera (2) jee karda, mei lut jaava',\n", - " 'lut jaa naale haava vava, aaj mera ji karda',\n", - " 'kaava kaava kaava ... aaj mera jee karda',\n", - " 'lut jaavaa naal havaa vaaa .... ohh ...',\n", - " 'rabba rabba mee barsa, saddi koti daaney paa (2)',\n", - " 'sada neer achanchal paraiyan ki',\n", - " 'khushiyan nachdiyan nachdiyan paraiyan ki',\n", - " 'kaliyan rathan lagan paraiyan ki',\n", - " 'gaavo toliyan gaavo toliyan gaavo toliyan',\n", - " 'nijaa boliyan',\n", - " 'rabba rabba mee barsa, saddi koti daaney paa .... (4)',\n", - " 'aaj mera ji karda, mei ut jaa naale haava vava',\n", - " 'ki meri kismat ne (2) karditiya tandiya chaava ....',\n", - " 'ke aaj mera (2) jee karda, mei lut jaa naal havavaa',\n", - " 'kaava kaava kaava',\n", - " 'sada neer achanchal paraiyan ki',\n", - " 'khushiyan nachdiyan nachdiyan paraiyan ki',\n", - " 'kaliyan rathan lagan paraiyan ki',\n", - " 'gaavo toliyan gaavo toliyan gaavo toliyan',\n", - " 'nijaa boliyan',\n", - " 'aaj mera ji karda, mei ut jaa naale haava vava',\n", - " 'ki meri kismat ne , karditiya tandiya chaava ....',\n", - " 'ke aaj mera jee karda, mei lut jaava .....',\n", - " 'aaaaaaaaa ...........',\n", - " 'inta harami goloub',\n", - " 'ya sarig ehsasi',\n", - " 'wallah aalayk esloub',\n", - " 'dawakhteli raasi',\n", - " 'inta harami goloub',\n", - " 'ya sarig ehsasi',\n", - " 'wallah aalayk esloub',\n", - " 'dawakhteli raasi',\n", - " 'mallik aani qahar',\n", - " 'w dhouq har al-jamer',\n", - " 'ana mafinee saber',\n", - " 'w khift al-aana bkaasi',\n", - " 'mallik aani qahar',\n", - " 'w dhouq har al-jamer',\n", - " 'ana mafinee saber',\n", - " 'w khift al-aana bkaasi',\n", - " 'inta harami goloub',\n", - " 'ya sarig ehsasi',\n", - " 'wallah aalayk esloub',\n", - " 'dawakhteli raasi',\n", - " 'enta harami gloub',\n", - " 'ya sareg ehsasi',\n", - " 'wallah aalayk esloub',\n", - " 'dawakhteli rassi',\n", - " 'hayartini w yaak',\n", - " 'yaa maalik ashowaqi',\n", - " 'qalb al ghala naadak',\n", - " 'w kaashf lik aw raqi',\n", - " 'hayar tini w yaak',\n", - " 'yaa maalik ashowaqi',\n", - " 'qalb al ghala naadak',\n", - " 'w kaashf lik aw raqi',\n", - " 'abeek w allah abeek',\n", - " 'w maalik bqalbi shaarik',\n", - " 'ana w lhaana aalayk',\n", - " 'yaa aghlaa kil naasi',\n", - " 'abeek w allah abeek',\n", - " 'w maalik bqalbi shaarik',\n", - " 'ana w lhaana aalayk',\n", - " 'yaa aghlaa kil naasi',\n", - " 'enta harami gloub',\n", - " 'ya sareg ehsasi',\n", - " 'wallah aalayk esloub',\n", - " 'dawakhteli rassi',\n", - " 'enta harami gloub',\n", - " 'ya sareg ehsasi',\n", - " 'wallah aalayk esloub',\n", - " 'dawakhteli rassi',\n", - " 'ya dinyiti wiynak',\n", - " 'mishtaga h laaynak',\n", - " 'aatini haqa aydeenak',\n", - " 'w di ana baliqiyaak',\n", - " 'ya dinyiti wiynak',\n", - " 'mishtaga h laaynak',\n", - " 'aatini haqa aydeenak',\n", - " 'w di ana baliqiyaak',\n", - " 'taal omri taal',\n", - " 'maleet aaysh al khayal',\n", - " 'areed hob w wsaal',\n", - " 'taal ya naasi',\n", - " 'taal omri taal',\n", - " 'maleet aaysh al khayal',\n", - " 'areed hob w wsaal',\n", - " 'taal ya naasi',\n", - " 'enta harami gloub',\n", - " 'ya sareg ehsasi',\n", - " 'wallah aalayk esloub',\n", - " 'dawakhteli rassi',\n", - " 'jadon sir ho chat hi lit jaaye',\n", - " 'badhal bijlee sit jaaye',\n", - " 'jadon sir ho chat hi lit jaaye',\n", - " 'badhal bijlee sit jaaye',\n", - " 'likheyah na hi mit jaaye',\n", - " 'dharthi shadh jaaye tha',\n", - " 'phir iko hi kaam tu kare pyaariya',\n", - " 'lehle ohsda naam',\n", - " 'iko hi kaam tu kare pyaariya',\n", - " 'lehle ohsda naam',\n", - " 'jadon duniya rabh hi ban jaaye',\n", - " 'paani aag hi ban jaaye',\n", - " 'ko sawab hi ban jaaye',\n", - " 'na abu ranee na maan',\n", - " 'phir iko hi kaam tu kare pyaariya',\n", - " 'lehle ohsda naam',\n", - " 'iko hi kaam tu kare pyaariya',\n", - " 'lehle ohsda naam',\n", - " 'jadon bhuleya imaan hi nai aave',\n", - " 'hath jhooreya maiman nai aave',\n", - " 'sidhamkar sham hi nai aave',\n", - " 'bulan na banere kat ka',\n", - " 'phir iko hi kaam tu kare pyaariya',\n", - " 'lehle ohsda naam',\n", - " 'iko hi kaam tu kare pyaariya',\n", - " 'lehle ohsda naam',\n", - " 'jadon lookhan le tu maran ture',\n", - " 'sabhan banaye karan ture',\n", - " 'hass hass suni charn ture',\n", - " 'sah rahe na jaayan',\n", - " 'phir iko hi kaam tu kare pyaariya',\n", - " 'lehle ohsda naam',\n", - " 'iko hi kaam tu kare pyaariya',\n", - " 'lehle ohsda naam',\n", - " 'submitted by djkm8175',\n", - " 'kalleyan guzaaran',\n", - " 'keevayn raatan kaalian',\n", - " 'dangdian menu',\n", - " 'rutaan pyar waalian',\n", - " 'teray baajon jee naiyon lagda',\n", - " 'main tay marr gai thaan',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'kalleyan guzaaran',\n", - " 'keevayn raatan kaalian',\n", - " 'dangdian menu',\n", - " 'rutaan pyar waalian',\n", - " 'teray baajon jee naiyon lagda',\n", - " 'main tay marr gai thaan',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'haan diyan sab kudian',\n", - " 'menun taanay dayndian',\n", - " 'haasay haasay day wich',\n", - " 'menun kamli kehndiyan',\n", - " 'haan diyan sab kudian',\n", - " 'menu taanay dayndian',\n", - " 'haasay haasay day vich',\n", - " 'menu kamli kehndiyan',\n", - " 'haan diyan sab kudian',\n", - " 'menu taanay dayndian',\n", - " 'haasay haasay day vich',\n", - " 'menu kamli kehndiyan',\n", - " 'ho',\n", - " 'teray baajon jee naiyon lagda',\n", - " 'main tay marr gai thaan',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'kalleyan guzaaran',\n", - " 'keevayn raatan kaalian',\n", - " 'dangdian menu',\n", - " 'rutaan pyar waalian',\n", - " 'teray baajon jee naiyon lagda',\n", - " 'main tay marr gai thaan',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aonsi aandi ronvaan',\n", - " 'teri rah tay beth kay',\n", - " 'haal meray nu loki',\n", - " 'hansday nay wekh kay',\n", - " 'aonsi aandi ronvaan',\n", - " 'teri rah tay beth kay',\n", - " 'haal meray nu loki',\n", - " 'hansday nay wekh kay',\n", - " 'aonsi aandi ronvaan',\n", - " 'teri rah tay beth kay',\n", - " 'haal meray nu loki',\n", - " 'hansday nay wekh kay',\n", - " 'teray baajon jee naiyon lagda',\n", - " 'main tay marr gai thaan',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'kalleyan guzaaran',\n", - " 'keevayn raatan kaalian',\n", - " 'dangdian menu',\n", - " 'rutaan pyar waalian',\n", - " 'teray baajon jee naiyon lagda',\n", - " 'main tay marr gai thaan',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'dard wandha way khera',\n", - " 'teray baajon aan kay',\n", - " 'khol na bethay koi',\n", - " 'menu teri jaan kay',\n", - " 'dard wandha way khera',\n", - " 'teray baajon aan kay',\n", - " 'khol na bethay koi',\n", - " 'menu teri jaan kay',\n", - " 'teray baajon jee naiyon lagda',\n", - " 'main tay marr gai thaan',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'kalleyan guzaaran',\n", - " 'keevayn raatan kaalian',\n", - " 'dangdian menu',\n", - " 'rutaan pyar waalian',\n", - " 'teray baajon jee naiyon lagda',\n", - " 'main tay marr gai thaan',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya',\n", - " 'aaja sohneya',\n", - " 'ghar aaja sohneya ho...',\n", - " 'mazzika hadya',\n", - " 'w aada aala tarabiza fadya',\n", - " 'b korsi wahed bas liya',\n", - " \"w 'ahweti lmazboota\",\n", - " 'di hagat bassita',\n", - " \"w beb'a w ana baamelha radya\",\n", - " 'w heb eesh el lahza diya',\n", - " \"w beb'a mabsoota\",\n", - " 'eh faydi di tarabiza yaani? korsi tani',\n", - " 'yaly ykoun aaed aalay wahad anani',\n", - " \"adi makan w fag'ana mal'ash makani\",\n", - " 'eesh aashani youmain w yetlaa mosh aashani',\n", - " 'ehtag li hodni li w hiya, el ahwa adfa',\n", - " 'ehtag li alb li w albi, liya awfa',\n", - " \"law fi youm deye't nafsi, ba'ooli asfa\",\n", - " \"amani da fi wahdeti mosh bab'a khayfa\",\n", - " 'mosh mostaaeda',\n", - " 'erga w eid tani li aada',\n", - " \"maba'ash hemla el garh tani\",\n", - " 'aw anam domooi aal makhada',\n", - " 'osloob hayati',\n", - " 'aham min asbeb enbisati',\n", - " 'meen elli al el wahda saaba?',\n", - " 'bel aaks ana f ahsan halati',\n", - " 'eh faydi di tarabiza yaani? korsi tani',\n", - " 'yaly ykoun aaed aalay wahad anani',\n", - " \"adi makan w fag'ana mal'ash makani\",\n", - " 'eesh aashani youmain w yetlaa mosh aashani',\n", - " 'ehtag li hodni li w hiya, el ahwa adfa',\n", - " 'ehtag li alb li w albi, liya awfa',\n", - " \"law fi youm deye't nafsi, ba'ooli asfa\",\n", - " \"amani da fi wahdeti mosh bab'a khayfa\",\n", - " 'ciao!',\n", - " 'sat naam',\n", - " 'sat naam',\n", - " 'sri waheguru',\n", - " 'sri waheguru',\n", - " 'sat naam',\n", - " 'sat naam',\n", - " 'sri waheguru',\n", - " 'sri waheguru',\n", - " 'tumaree sayvaa',\n", - " 'tumaree sayvaa',\n", - " 'ka-un, ka-un',\n", - " 'na taaray',\n", - " 'ka-un, ka-un',\n", - " 'na taaray',\n", - " 'ka-un, ka-un',\n", - " 'na taaray',\n", - " 'ka-un, ka-un',\n", - " 'na taaray',\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'tumaree sayvaa',\n", - " 'tumaree sayvaa',\n", - " 'tumaree sayvaa',\n", - " 'tumaree sayvaa',\n", - " 'ka-un, ka-un',\n", - " 'na taaray',\n", - " 'ka-un, ka-un',\n", - " 'na taaray',\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'jis neech ka-u',\n", - " 'ko-ee na jaanai',\n", - " 'jis neech ka-u',\n", - " 'ko-ee na jaanai',\n", - " 'naam japat ouh',\n", - " 'chahu kunṯ maanai',\n", - " 'naam japat ouh',\n", - " 'chahu kunṯ maanai',\n", - " 'jaa kai nikaṯ',\n", - " 'na aavai ko-ee',\n", - " 'jaa kai nikaṯ',\n", - " 'na aavai ko-ee',\n", - " 'sagal srisaṯ u-aa kay',\n", - " 'charan mal dho-ee',\n", - " 'sagal srisaṯ u-aa kay',\n", - " 'charan mal dho-ee',\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'tumaree sayvaa',\n", - " 'tumaree sayvaa',\n", - " 'tumaree sayvaa',\n", - " 'tumaree sayvaa',\n", - " 'ka-un, ka-un',\n", - " 'na taaray',\n", - " 'ka-un, ka-un',\n", - " 'na taaray',\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'jo praanee kaahoo',\n", - " 'na aavat kaam',\n", - " 'jo praanee kaahoo',\n", - " 'na aavat kaam',\n", - " 'sant prasaad taa',\n", - " 'ko japee-ai naam',\n", - " 'sant prasaad taa',\n", - " 'ko japee-ai naam',\n", - " 'saadhasang man',\n", - " 'sovat jaagay',\n", - " 'saadhasang man',\n", - " 'sovat jaagay',\n", - " 'tab prabh naanak',\n", - " 'meeṯhay laagay',\n", - " 'tab prabh naanak',\n", - " 'meeṯhay laagay',\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'tumaree sayvaa',\n", - " 'tumaree sayvaa',\n", - " 'tumaree sayvaa',\n", - " 'tumaree sayvaa',\n", - " 'ka-un, ka-un',\n", - " 'na taaray',\n", - " 'ka-un, ka-un',\n", - " 'na taaray',\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " \"pi'aaray\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " \"pi'aaray\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " \"pi'aaray\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " \"pi'aaray\",\n", - " \"pi'aaray\",\n", - " \"pi'aaray\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " \"pi'aaray\",\n", - " \"pi'aaray\",\n", - " \"pi'aaray\",\n", - " '(darashan maago)',\n", - " \"(dayhi pi'aaray)\",\n", - " \"pi'aaray\",\n", - " \"pi'aaray\",\n", - " \"pi'aaray\",\n", - " 'darashan maago',\n", - " 'darashan maago',\n", - " 'darashan maago',\n", - " \"dayhi pi'aaray\",\n", - " 'ah',\n", - " 'ya 7abeeby arreblayee',\n", - " 'ta domak be edayee',\n", - " 'ente bet3ref ana sho b7ebak',\n", - " 'we adeesh ghaly 3layee',\n", - " '7abeeby khaleek 7addy',\n", - " 'ghayr 3yonak ma baddy',\n", - " 'ebkhaf lwa7dy eb2a lawa7dy',\n", - " 'law betgheeb eshwayee',\n", - " 'sho b7ebak lama bte7ky',\n", - " 'tersom 3a shafafek de7ky',\n", - " 'sho b7ebak lama betbky , bteshky',\n", - " 'w 3am betghalghel feyyee',\n", - " '7abeeby enta el a7la',\n", - " '3omry be orbak 3am ye7la',\n", - " '3etrak , se7rak , sawtak , rasmak',\n", - " 'saro menni we feyee (2x)',\n", - " 'ya 7abeeb alby tammeny',\n", - " 'enak ma bteb3od 3any',\n", - " 'enta 7oby we ra3shet alby',\n", - " 'we enta noor 3enayee',\n", - " 'ya 7abeeby enta el ghaaly',\n", - " 'enta amar elayaly',\n", - " 'dal abaly we raye7 baly',\n", - " 'we oghmorny be 7enye',\n", - " 'sho b7ebak lama bte7ky',\n", - " 'tersom 3a shafafek de7ky',\n", - " 'sho b7ebak lama betbky , bteshky',\n", - " 'w 3am betghalghel feyyee',\n", - " '7abeeby enta el a7la',\n", - " '3omry be orbak 3am ye7la',\n", - " '3etrak , se7rak , sawtak , rasmak',\n", - " 'saro menni we feyee (2x)',\n", - " 'ya 7abeeby arreblayee',\n", - " 'ent bta3ref adeesh b7ebak',\n", - " 'we adeesh ghaly 3alyee',\n", - " '7abeeby khaleek 7addy',\n", - " 'ghair 3yonak ma baddy',\n", - " 'bkhaaf lewa7dy eb2a lewa7dy',\n", - " 'law betgheeb showayee',\n", - " 'sho b7ebaak ..',\n", - " 'sho b7ebak lama bte7ky',\n", - " 'tersom 3a shafafek de7ky',\n", - " 'sho b7ebak lama betbky , bteshky',\n", - " 'w 3am betghalghel feyyee',\n", - " '7abeeby enta el a7la',\n", - " '3omry be orbak 3am ye7la',\n", - " '3etrak , se7rak , sawtak , rasmak',\n", - " 'saro menni we feyee (3x)',\n", - " 'ibal lahl arou-sah om-yah-lee',\n", - " 'yah al-bil kou-rou-dil menyaah',\n", - " 'is-bahl kou-tul - ham-mahn ou-saw',\n", - " 'ahl-bi yam-mil kaw-lil laah',\n", - " 'is-bahl ahl-bi im-mil mous-saw heenal - my-dil',\n", - " \"has-bi kaw-lahl arah-baw heena yas'a-lou-na il 'araw-til\",\n", - " '- eehl laah',\n", - " \"fis-'ahm mil kaw-waah-reeh yaah\",\n", - " \"mi-'aa-nihl kou-laah- aah - leeh - aah\",\n", - " 'ay-nah ou-saw kooh nahn min kah-rah-baw',\n", - " \"has-di khamf 'alah ay-nahl musam-meh il-lah tou-lihl\",\n", - " 'kah-reeb',\n", - " 'has-dihl kou-toh ub-beehl ul-ou-saw',\n", - " 'wah oul-leel-arah-baw - wah oul-leel-arah-baw -',\n", - " 'wah oul-leel-',\n", - " 'yaa hub-bi al-mas-daw-nih ah-naay as-dee lil-kou-ral',\n", - " 'yaah',\n", - " \"mis-'aal bar'oun-nih\",\n", - " \"ya 'es-ta-khal-lahl 'am-duh uhm-mee a-raah kah -\",\n", - " 'yum-mi yam-mah',\n", - " 'as-dee naa-bi yam-mah - al-kharou-si yam-ma',\n", - " 'as-ta-wou lee il-lee yam-mah li-laah',\n", - " \"uk-rou 'ou-lee il-oh-daah daw-wah\",\n", - " 'oul-lee ya ahl-bi',\n", - " 'oul-lee ya um-mee',\n", - " 'oul-lee ya sa-hib',\n", - " 'mukhtasar mulaakat hai',\n", - " 'ankahi koi baat hai',\n", - " 'phir raat ki shaitaniyaan',\n", - " 'yaa alag yeh jazbaat hai',\n", - " 'mukhtasar mulaakat hai',\n", - " 'ankahi koi baat hai',\n", - " 'ankahi koi baat hai',\n", - " 'mukhtasar mulaakat hai',\n", - " 'ankahi koi baat hai',\n", - " 'phir raat ki, shaitaniyaan',\n", - " 'ya alag, yeh jazbaat hai',\n", - " \"i can't control this feeling\",\n", - " \"don't know whats going on\",\n", - " 'but i wanna let go, oo woo',\n", - " 'mausam yeh kehta hai',\n", - " 'bheege andheron mein',\n", - " 'dubki lagaatein hain aa',\n", - " 'par mujhko lagta hai',\n", - " 'main rok loon khudhko',\n", - " 'ehsaas hai yeh naya',\n", - " 'kya hua.. main hoon bekhabar',\n", - " 'hai naya sa suhaana asar',\n", - " 'jeet hai ya maat hai',\n", - " 'mukhtasar mulaakat hai',\n", - " 'ankahi koi baat hai',\n", - " 'yeh toh suna tha',\n", - " 'ke kuch aisa hota hai',\n", - " 'par mujhko bhi, ho gaya',\n", - " 'meri toh duniya, bilkul alag thi',\n", - " 'andaaz woh, kho gaya',\n", - " 'dekhna doobna ho gaya',\n", - " 'doobna tayrna ho gaya',\n", - " 'kya asar mere saath hai',\n", - " 'mukhtasar mulaakat hai',\n", - " 'ankahi koi baat hai',\n", - " 'phir raat ki, shaitaniyan',\n", - " 'ya alag, yeh jazbaat hai',\n", - " \"welli l'darek wine raki rayha\",\n", - " 'ma golt aayb ma golt kelma tayha',\n", - " \"welli l'darek hadi zaafa ou fayta\",\n", - " 'ki sekkerni zaafek tgouli ntaaa',\n", - " \"hadi halet l'meryool ki ghadi ngool ou ya layli\",\n", - " \"essbah n'sallem wa'ashiyya problem ou yaaa\",\n", - " \"aaah hadi halet l'meryool ki ghadi ngool ou ya layli\",\n", - " \"essbah n'sallem wa'ashiyya problem ou yaaa\",\n", - " \"welli l'darek wine raki rayha\",\n", - " 'ma golt aayb ma golt kelma tayha',\n", - " \"welli l'darek hadi zaafa ou fayta\",\n", - " 'ki sekkerni zaafek tgouli ntaaa',\n", - " \"men baad ma kont moul l'khayma wellit etranger ou ya layli\",\n", - " \"shar'aou li bil'ghaybi ou galou bondi ou yaaa\",\n", - " \"men baad ma kont moul l'khayma wellit etranger ou ya layli\",\n", - " \"shar'aou li bil'ghaybi ou galou bondi ou yaaa\",\n", - " \"welli l'darek wine raki rayha\",\n", - " 'ma golt aayb ma golt kelma tayha',\n", - " \"welli l'darek hadi zaafa ou fayta\",\n", - " 'ki sekkerni zaafek tgouli ntaaa',\n", - " 'haddertek ou eddigri... eshtegt... khallooni nshek ou ya layli',\n", - " \"wella bayet feddalma fi'ssema l'barda ou yaaa\",\n", - " 'haddertek ou eddigri... eshtegt... khallooni nshek ou ya layli',\n", - " \"wella bayet feddalma fi'ssema l'barda ou yaaa\",\n", - " \"welli l'darek wine raki rayha\",\n", - " 'ma golt aayb ma golt kelma tayha',\n", - " \"welli l'darek hadi zaafa ou fayta\",\n", - " 'ki sekkerni zaafek tgouli ntaaa',\n", - " 'what it is',\n", - " 'what it is (yah)',\n", - " 'what it is (ooh)',\n", - " 'what it is (ooh)',\n", - " \"what it is, what it ain't\",\n", - " 'what it is',\n", - " 'what it is',\n", - " 'what it is (ooh-ooh)',\n", - " \"what it is, what it ain't\",\n", - " 'what it is',\n", - " 'what it is (ooh)',\n", - " \"what it is, what it ain't\",\n", - " 'what it is (ooh)',\n", - " 'what it is (sheesh, sheesh)',\n", - " 'what it is (ooh)',\n", - " 'what it is',\n", - " \"what it is, what it ain't\",\n", - " 'what it is',\n", - " 'what it is',\n", - " 'what it is',\n", - " 'what it is',\n", - " 'what it is',\n", - " 'what it is',\n", - " \"what it is, what it ain't\",\n", - " 'what it is',\n", - " 'what it is',\n", - " 'what it is',\n", - " \"what it is, what it ain't\",\n", - " 'what it is',\n", - " 'what it is',\n", - " 'what it is',\n", - " \"what it is, what it ain't\",\n", - " 'goleh man ey nazaninam',\n", - " 'to azizeh delami',\n", - " 'to azizeh delami',\n", - " 'to azizeh delami',\n", - " 'to cheshat nashineh shabnam',\n", - " 'to azizeh delami',\n", - " 'to azizeh delami',\n", - " 'to azizeh delami',\n", - " 'mane dar be dar migardam tuyeh shahre cheshat',\n", - " 'to koocheye khaterat',\n", - " 'ta miyad ru ghabeh panjereh mishineh neghat',\n", - " 'rasti mimiram barat',\n", - " 'toro har kas ke nanide',\n", - " 'maste khoobi to shenide',\n", - " 'ey to hase bi tahamol',\n", - " 'to azizeh delami',\n", - " 'to azizeh delami',\n", - " 'to azizeh delami',\n", - " 'ru cheshat nashine shabnam',\n", - " 'tane to zarif tar az gol',\n", - " 'toh azize delami',\n", - " 'to azizeh delami',\n", - " 'to azizeh delami',\n", - " 'doone doone',\n", - " 'gole poone',\n", - " 'mirizam be rooye moohat',\n", - " 'daste daste',\n", - " 'gole maryam',\n", - " 'mirizam jaye ghadamhat',\n", - " 'dele to jedseye halmas',\n", - " 'arzeshesh bishtar az inhast',\n", - " 'goleh man ey nazaninam',\n", - " 'to azizeh delami',\n", - " 'to azizeh delami',\n", - " 'to azizeh delami',\n", - " 'tu cheshat nashineh shabnam',\n", - " 'to azizeh delami',\n", - " 'to azizeh delami',\n", - " 'to azizeh delami',\n", - " 'chikni chameli',\n", - " '電影: agneepath 演唱者: shreya ghoshal',\n", - " 'bichhoo mere naina badi zehereeli ankh maare',\n", - " 'kamsin kamariya saali ik thumke se lakh maare',\n", - " 'bichhoo mere naina badi zehereeli ankh maare',\n", - " 'kamsin kamariya saali ik thumke se lakh maare',\n", - " 'note hazaaron ke, khulle chhutta karaane aayi',\n", - " 'husn ki teeli se beedi chillam jalaane aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'jungle mein aaj mangal karungi',\n", - " 'bhookhe sheron se khelungi main',\n", - " 'makkhan jaisi hatheli pe angaare le lungi main',\n", - " 'haaye! gehre paani ki machhli hoon raja',\n", - " 'ghaat ghaat dariya mein ghoomi hoon main',\n", - " 'teri nazron ki lehron se haar ke doobi hoon main',\n", - " 'hoye jaanleva jalwa hai',\n", - " 'dekhne mein halwa hai',\n", - " 'jaanleva jalwa hai',\n", - " 'dekhne mein halwa hai',\n", - " 'pyaar se paros doongi toot le zaraa',\n", - " 'yeh toh trailer hai poori filam dikhane aayi',\n", - " 'husn ki teeli se beedi chilam jalaane aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'banjar basti mein aayi hai masti',\n", - " 'aisa namkeen chehra tera',\n", - " 'meri neeyat pe chadhke chhoote na hai rang gehra tera',\n", - " 'joban ye mera crajy hai raja',\n", - " 'saare pardo ko kaatungi main',\n", - " 'shaamein meri akeli hain aaja sang tere baatungi main',\n", - " 'haaye! baaton mein ishaara hai',\n", - " 'jisme khel saara hai',\n", - " 'baaton mein ishaara hai',\n", - " 'jisme khel saara hai',\n", - " 'tod ke tijoriyon ko loot le zara',\n", - " 'choom ke zakhmo pe thoda malham lagaane aayi',\n", - " 'husn ki teeli se beedi chillam jalaane aayi',\n", - " 'aayi chikni aayi aayi chikni aayi aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'da rhay-sy o’',\n", - " 'mal lay-rhee o’',\n", - " 'sav-ay-ly o’',\n", - " 'kad-ay-ly o’',\n", - " 'hey o nay kor-rhe-ay',\n", - " 'ah hey o nay ka ru mmay',\n", - " 'eh hymm a vl-la rhe-ea kan',\n", - " 'eh hymm a ka lla mmay o an',\n", - " 'o ay ka nee hymm nno hymm',\n", - " 'o ay ka nee hymm nno hymm a rhay',\n", - " 'hii-yha…',\n", - " 'hii-yha…',\n", - " 'hii-yha…',\n", - " 'hii-yha…',\n", - " 'he-ah vi-iya me-ne mmay',\n", - " ...]},\n", - " 'data': ['binte dil misiriya mein',\n", - " 'binte dil misiriya mein...',\n", - " 'binte dil misiriya mein',\n", - " 'binte dil misiriya mein...',\n", - " 'pesh hai kullu-shabab',\n", - " 'khidmat-e-aali janaab',\n", - " 'pesh hai kullu-shabab',\n", - " 'khidmat-e-aali janaab',\n", - " 'aatish qadah adaaon se',\n", - " 'aatish qadah adaaon se',\n", - " 'jal uthega aapke',\n", - " 'deeda-e-tar ka hijaab',\n", - " 'binte dil misiriya mein',\n", - " 'binte dil misiriya mein…',\n", - " 'maykash labon pe aane lagi hai',\n", - " 'pyasi qurbatein',\n", - " 'hairatzada thikane lagi hain',\n", - " 'saari furqatein',\n", - " 'maykash labon pe aane lagi hai',\n", - " 'pyasi qurbatein',\n", - " 'hairatzada thikane lagi hain',\n", - " 'saari furqatein',\n", - " 'kaarizon pe mere likh zara',\n", - " 'rif’atein chahaton ka sila…',\n", - " 'binte dil misiriya mein',\n", - " 'binte dil misiriya mein',\n", - " 'pesh hai kullu-shabab',\n", - " 'khidmat-e-aali janaab',\n", - " 'pesh hai kullu-shabab',\n", - " 'khidmat-e-aali janaab',\n", - " 'aatish qadah adaaon se',\n", - " 'aatish qadah adaaon se',\n", - " 'jal uthega aapke',\n", - " 'deeda-e-tar ka hijaab',\n", - " 'binte dil misiriya mein',\n", - " 'binte dil misiriya mein…',\n", - " 'binte dil misiriya mein',\n", - " 'binte dil misiriya mein…',\n", - " 'maula',\n", - " 'maula',\n", - " 'mere maula',\n", - " 'maula re',\n", - " 'maula',\n", - " 'mere maula',\n", - " 'maula re',\n", - " 'maula',\n", - " 'maula',\n", - " 'maula',\n", - " 'maula',\n", - " 'maula-i kull',\n", - " 'maula-i kull',\n", - " 'maula-i kull karde ga tu jo ik nazar',\n", - " 'karde ga tu jo ik nazar',\n", - " 'saare gunaah jaaeen ge dhul',\n", - " 'maula-i kull',\n", - " 'maula-i kull',\n", - " 'main be-khabar tu ba-khabar',\n", - " 'main be-khabar tu ba-khabar',\n", - " 'jalwah tera noor-i sahar',\n", - " 'jalwah tera noor-i sahar',\n", - " 'karde ga tu jo ik nazar',\n", - " 'karde ga tu jo ik nazar',\n", - " 'band raaste jaaen ge khul',\n", - " 'maula-i kull',\n", - " 'maula-i kull',\n", - " 'be-rang men har rang tu',\n", - " 'be-rang men har rang tu',\n", - " 'teri mujhe hai just-o-ju',\n", - " 'teri mujhe hai just-o-ju',\n", - " 'karde ga tu jo ik nazar',\n", - " 'karde ga tu jo ik nazar',\n", - " 'rang ‘ishq ke jaaenge ghul',\n", - " 'maula-i kull',\n", - " 'maula-i kull',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'banda-i murtaza ali hastam',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'banda-i murtaza ali hastam',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'ek hi sooratiya ki',\n", - " 'ek hi sooratiya ki do hain mooratiya',\n", - " 'ek muhammad ek ali',\n", - " 'ali',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'banda-i murtaza ali hastam',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'bedam yahi to paanch hain',\n", - " 'bedam yahi to paanch hain maqsood-i kaainaat',\n", - " 'bedam yahi to paanch hain maqsood-i kaainaat',\n", - " 'khair un-nisa husain o hasan mustafa ali',\n", - " 'khair un-nisa',\n", - " 'ya saiyidah',\n", - " 'ya saiyidah',\n", - " 'ya saiyidah',\n", - " 'khair un-nisa husain o hasan mustafa ali',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'banda-i murtaza ali hastam',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'az mai-i ‘ishq-i shaah sar-mastam',\n", - " 'banda-i murtaza ali hastam',\n", - " 'man bah ghair az ali na-daanistam',\n", - " 'ali allah az azal guftam',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'banda-i murtaza ali hastam',\n", - " 'haidari-am qalandar-am mast-am',\n", - " 'maula',\n", - " 'maula-i kull',\n", - " 'maula',\n", - " 'maula-i kull',\n", - " 'maula',\n", - " 'maula ali maula',\n", - " 'ali ali ali ali ali',\n", - " 'ya ali',\n", - " 'ya ali maula',\n", - " 'maula',\n", - " 'maula',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do',\n", - " 'mahna mahna',\n", - " 'do do-do do',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do',\n", - " 'mahna mahna',\n", - " 'do do-do do',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do',\n", - " 'mahna mahna',\n", - " 'do do-do do',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do',\n", - " 'mahna mahna',\n", - " 'do do-do do',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do',\n", - " 'mahna mahna',\n", - " 'do do-do do',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do',\n", - " 'mahna mahna',\n", - " 'do do-do do',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do be-do-do be-do-do be-do-do-doodle do do do-doo do!',\n", - " 'mahna mahna!',\n", - " 'raen saari, raen saari, raen saari, raen',\n", - " 'kabhi bheege bhigaaye ladaaye churaaye se... rahe nain...',\n", - " 'raen saari, raen saari, raen saari, raen -',\n", - " 'kabhi meelon milaaye se bhoole bhuaalye se ...rahe chain',\n", - " 'thaare rahen, haare rahen, vaare rahen... haaan... saari raen...',\n", - " 'jhaara jhari, taara tarri, bara dari... haaan... saari raen...',\n", - " 'badri badariya. ghiri re...',\n", - " 'kajri kajariya. khiri re...',\n", - " 'gagri gagariya. bhari re...',\n", - " 'kajri kajariya. khiri re...',\n", - " 'badri badariya. ghiri re...',\n", - " 'kajri kajariya. khiri re...',\n", - " 'gagri gagariya. bhari re...',\n", - " 'kajri kajariya. khiri re...',\n", - " 'saajan ke ang ang, lagi re',\n", - " 'saajan ke rang rang, saji re',\n", - " 'bulbul tarang mein, baji re',\n", - " 'shanana nanana nanana nana shan shan',\n", - " 'badri badariya. ghiri re...',\n", - " 'kajri kajariya. khiri re...',\n", - " 'gagri gagariya. bhari re...',\n", - " 'kajri kajariya. khiri re...',\n", - " 'sa ra ra ras barsa',\n", - " 'tarr gaya... turr gaya...',\n", - " 'mora rasiya...',\n", - " 'sa ra ra ras barsa',\n", - " 'tarr gaya... turr gaya...',\n", - " 'mora rasiya...',\n", - " 'aaaaa saawan ki saawri',\n", - " 'piya mann baawri',\n", - " 'pihu pihaare phiri re...',\n", - " 'badri badariya. ghiri re...',\n", - " 'kajri kajariya. khiri re...',\n", - " 'gagri gagariya. bhari re...',\n", - " 'kajri kajariya. khiri re...',\n", - " 'pehli phuaar mein, chhili re...',\n", - " 'peepal ki chhaon mein, khili re...',\n", - " 'bulbul tarang mein, baji re',\n", - " 'shanana nanana nanana nana shan shan',\n", - " 'sa ra ra ras barsa',\n", - " 'tarr gaya... turr gaya...',\n", - " 'mora rasiya...',\n", - " 'sa ra ra ras barsa',\n", - " 'tarr gaya... turr gaya...',\n", - " 'mora rasiya...',\n", - " 'aaaaa saawan ki saawri',\n", - " 'piya mann baawri',\n", - " 'pihu pihaare phiri re',\n", - " 'badri badariya. ghiri re...',\n", - " 'kajri kajariya. khiri re...',\n", - " 'gagri gagariya. bhari re...',\n", - " 'kajri kajariya. khiri re...',\n", - " 'raen saari, raen saari, raen saari, raen',\n", - " 'kabhi bheege bhigaaye ladaaye churaaye se... rahe nain...',\n", - " 'raen saari, raen saari, raen saari, raen -',\n", - " 'kabhi meelon milaaye se bhoole bhuaalye se ...rahe chain',\n", - " 'raen saari, raen saari, raen saari, raen',\n", - " 'kabhi bheege bhigaaye ladaaye churaaye se... rahe nain...',\n", - " 'raen saari, raen saari, raen saari, raen -',\n", - " 'kabhi meelon milaaye se bhoole bhuaalye se ...rahe chain',\n", - " 'bichhoo mere naina badi zehereeli ankh maare',\n", - " 'kamsin kamariya saali ik thumke se lakh maare',\n", - " 'bichhoo mere naina badi zehereeli ankh maare',\n", - " 'kamsin kamariya saali ik thumke se lakh maare',\n", - " 'note hazaaron ke, khulle chhutta karaane aayi',\n", - " 'husn ki teeli se beedi chillam jalaane aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'jungle mein aaj mangal karungi',\n", - " 'bhookhe sheron se khelungi main',\n", - " 'makkhan jaisi hatheli pe angaare le lungi main',\n", - " 'haaye! gehre paani ki machhli hoon raja',\n", - " 'ghaat ghaat dariya mein ghoomi hoon main',\n", - " 'teri nazron ki lehron se haar ke doobi hoon main',\n", - " 'hoye jaanleva jalwa hai',\n", - " 'dekhne mein halwa hai',\n", - " 'jaanleva jalwa hai',\n", - " 'dekhne mein halwa hai',\n", - " 'pyaar se paros doongi toot le zaraa',\n", - " 'yeh toh trailer hai poori filam dikhane aayi',\n", - " 'husn ki teeli se beedi chilam jalaane aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'banjar basti mein aayi hai masti',\n", - " 'aisa namkeen chehra tera',\n", - " 'meri neeyat pe chadhke chhoote na hai rang gehra tera',\n", - " 'joban ye mera crajy hai raja',\n", - " 'saare pardo ko kaatungi main',\n", - " 'shaamein meri akeli hain aaja sang tere baatungi main',\n", - " 'haaye! baaton mein ishaara hai',\n", - " 'jisme khel saara hai',\n", - " 'baaton mein ishaara hai',\n", - " 'jisme khel saara hai',\n", - " 'tod ke tijoriyon ko loot le zara',\n", - " 'choom ke zakhmo pe thoda malham lagaane aayi',\n", - " 'husn ki teeli se beedi chillam jalaane aayi',\n", - " 'aayi chikni aayi aayi chikni aayi aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'aayi chikni chameli chhup ke akeli pawwa chadha ke aayi',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be',\n", - " 'mah-na-mah-na',\n", - " 'bah-do-be-be',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", - " 'bah-do-be, do-be-de-de-de-de',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be',\n", - " 'mah-na-mah-na',\n", - " 'bah-do-be-do',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", - " 'bah-do-be, do-be-de-de-de-de',\n", - " 'mah, mah-mah-na-mah-na-man-na-na',\n", - " 'man, mah-mah-mah, mah-na-na',\n", - " 'mah',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be',\n", - " 'mah-na-mah-na',\n", - " 'bah-do-be-do',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", - " 'bah-do-be, do-be-de-de-de-de',\n", - " 'mah-na-mah-na-mah-na-mah-na',\n", - " 'mah-na-mah-mah-man',\n", - " 'mah-na-mah-mah-na-mah-mah-mah',\n", - " 'eh-be-de-mah-mah',\n", - " 'wah-wah-ba-na-na',\n", - " 'beedy-be-be-be',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be',\n", - " 'mah-na-mah-na',\n", - " 'bah-do-be-do',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", - " 'bah-do-be, do-be-de-de-de-de',\n", - " 'mah-eh-mah-na-mah-na',\n", - " 'mah-na-mah-na-mah-mah-na-mah',\n", - " 'mah-na-mah-mah-mah, mah-mah-na-mah-eh, man-eh',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be',\n", - " 'mah-na-mah-na',\n", - " 'bah-do-be-be',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", - " 'bah-do-be, do-be-de-de-de-de',\n", - " 'mah-eh-mah-na-mah-na',\n", - " 'mah-na-mah-na-mah-mah-na-mah-eh-boo-bada-boo',\n", - " 'moon-ah-na-moo-moo, meen-ah-meen-ah-meen-meen',\n", - " 'nee-nee-nee-nee-neh, nee-neh, eh',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be',\n", - " 'mah-na-mah-na',\n", - " 'bah-do-be-be',\n", - " 'mah-na-mah-na',\n", - " 'bah-do, bah-do-be, bah-do-be, bah-do-be',\n", - " 'bah-do-be, do-be-de-de-de-de',\n", - " 'mah-na-mah-na',\n", - " 'o tora saajan ayo tore des',\n", - " 'badli badla badla saavan',\n", - " 'badla jag ne bhes re....',\n", - " 'tora saajan ayo tore des re..e..e..e',\n", - " 'soyi soyi palkon pe chalke',\n", - " 'mere sapno ki khidki pe aa gaya',\n", - " 'aate jate phir mere dil ke inn hathon mein wo khat pakda gaya',\n", - " 'pyar ka...',\n", - " 'lafzon mein rang hai pyaar ka',\n", - " '(bahara bahara hua dil pehli baar ve',\n", - " 'bahara bahara ke chain tho hua pharar ve) ×2',\n", - " 'o.. tora saajan ayo tore des',\n", - " 'badli badla badla saavan',\n", - " 'badla jag ne bhes re...',\n", - " 'tora sajan ayo tore des re..e..e',\n", - " 'wo.. kabhi dikhe zameen pe kabhi wo chand pe..',\n", - " 'ye ..e..e.. nazar kahe use yahan',\n", - " 'main rakhloon bandhke',\n", - " 'ik sans main dhadkanon ke paas main',\n", - " 'haan paas main ghar banaye hay bhoole ye jahan',\n", - " '(bahara bahara hua dil pehli baar ve',\n", - " 'bahara bahara ke chain tho hua pharar ve)×2',\n", - " 'beech main tori o re savaria',\n", - " 'payal jaise khanke tijhuri',\n", - " 'cham cham nache dil pe badaria',\n", - " 'ho..o..o..o..o',\n", - " 'savaria tu barse ghana',\n", - " 'barse ghana',\n", - " 'barse ghana',\n", - " 'aa...a...a...a...a..',\n", - " 'nanadhinanadinanan nananana...',\n", - " 'wo..ye badliyan jo ched de toh chal ke barishe',\n", - " 'wo..de aahate karib se',\n", - " 'toh bole khwahishen ke aaj kal zindagi har ek pal',\n", - " 'har ek pal se chahe haye jiska dil hua',\n", - " '(bahara bahara hua dil pehli baar ve',\n", - " 'bahara bahara ke chain tho hua pharar ve) ×2',\n", - " 'soyi soyi palkon pe chalke',\n", - " 'mere sapno ki khidki pe aa gaya',\n", - " 'aate jate phir mere dil ke',\n", - " 'inn hathon mein wo khat pakda gaya pyaar ka',\n", - " 'lafzon mein rang hai pyaar ka',\n", - " '(bahara bahara hua dil pehli baar ve',\n", - " 'bahara bahara ke chain tho hua pharar ve)×2',\n", - " 'do do do do do de do do do do do do do do do',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do',\n", - " 'mahna mahna',\n", - " 'do do-do do',\n", - " 'mahna mahna',\n", - " 'do doo de-do-do de-do-do de-do-do de-do-do-doodle do do do-doo do!',\n", - " 'do do do do do de do do do do do do do do do',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do',\n", - " 'mahna mahna',\n", - " 'do do-do do',\n", - " 'mahna mahna',\n", - " 'do doo de-do-do de-do-do de-do-do de-do-do-doodle do do do-doo do!',\n", - " 'do do do do do de do do do do do do do do do',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do',\n", - " 'mahna mahna',\n", - " 'do do-do do',\n", - " 'mahna mahna',\n", - " 'do doo de-do-do de-do-do de-do-do de-do-do-doodle do do do-doo do!',\n", - " 'do do do do do de do do do do do do do do do',\n", - " 'mahna mahna',\n", - " 'do doo be-do-do',\n", - " 'mahna mahna',\n", - " 'do do-do do',\n", - " 'mahna mahna',\n", - " 'do doo de-do-do de-do-do de-do-do de-do-do-doodle do do do-doo do!!!',\n", - " 'kal majni je haath main',\n", - " 'sej karam da kann',\n", - " 'varo variyaon aangna',\n", - " 'seke anganji agyata nikal',\n", - " 'maida mehboob ban',\n", - " 'teke pucchan layak na aaye',\n", - " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 'dijiniya po niyaaj ma, dijiniya po niyaaj ma',\n", - " 'bandi paigam da, haye van yaad kare diji yaar ki',\n", - " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 'khanaabadosh sa, chale rooh-e- mukaddar ka raastaa',\n", - " 'dil mazaar sa, kyun yeh rakkhe sabhi se yun waastaa',\n", - " 'sab pighal ke khatam ho, hey niyam ye sakht jo',\n", - " 'jaan udhaar ki, lautaani hai kisko kya pataa',\n", - " 'maangaa sa, hai yeh cheena saa',\n", - " 'barbas, leke jeenaa kaisaa karjaa',\n", - " 'chaara gira,chaara gira',\n", - " 'chaara giraa, saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 'chaara gira, saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 'hin bande band kyu kaiyon',\n", - " 'araaj avanje la miya',\n", - " 'hin bande band kyu kaiyon',\n", - " 'araaj avanje la miya',\n", - " 'assi aavanja aiyodi',\n", - " 'assi aavanja aiyodi',\n", - " 'goli gulam da,haye van yaad kare diji yaar ki',\n", - " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 've bandeya, ve bandiya',\n", - " 'jive bandeya..',\n", - " 'saari haqeeqat jhooth hai',\n", - " 'nuskhaa naseehat bhoot hai',\n", - " 'dikkat beepat phoonk de',\n", - " 'utaar phenk de',\n", - " 'sir pe se saaraa muaawjaa',\n", - " 'issmain aavanja jo ho atham',\n", - " 'simbhar safar main miya',\n", - " 'issmain aavanja jo ho atham',\n", - " 'simbhar safar main miya',\n", - " 'vil visariya keen ki',\n", - " 'vil visariya keen ki',\n", - " 'nala hi naamda, haye van yaad kare diji yaar ki',\n", - " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 'saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 'sab pighal ke khatam ho, hey niyam ye sakht jo',\n", - " 'jaan udhaar ki, lautaani hai kisko kya pataa',\n", - " 'maangaa sa, hai ye cheena saa',\n", - " 'barbas, leke jeenaa kaisaa karjaa',\n", - " 'chaara gira,chaara gira',\n", - " 'chaara giraa, saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 'chaara gira, saathi salaam da, haye van yaad kare diji yaar ki',\n", - " 'chaara gira, chaara gira',\n", - " 'chaar gira, chaara gira',\n", - " 'chindra chawana sachvi mathe muran bha',\n", - " 'kadi ubahri thordo , kadi ubari to gach',\n", - " 'tu main bare much kadam triyanje ser main',\n", - " 'tu main bare much kadam triyanje ser main',\n", - " 'oh miya',\n", - " 'hor ki mangna mein rab kolo',\n", - " 'ik khair manga tere dum di',\n", - " 'baaj sajan lajpaal tere',\n", - " 'main ko jiyan kehde kam di',\n", - " 'pal pal maane sukhve hazaara',\n", - " 'ghadi vekhe na koi alam di',\n", - " 'ho badar hamesha maula rakhe',\n", - " 'dhola tainte nazar karam di',\n", - " 'nit khair manga soniya main teri',\n", - " 'dua na koi hor mangdi',\n", - " 'tere pairaan ch akheer hove meri',\n", - " 'dua na koi hor mangdi',\n", - " 'tera vaal vingaa na hove',\n", - " 'teri aayi mein mar jaavaan',\n", - " 'dum dum khair kare rabb teri',\n", - " 'manga roz mein sajn duawaan',\n", - " 'sadka tera mein ye jindadi',\n", - " 'lakh waari dhol gumava',\n", - " 'peer shabbir da sadka dhola',\n", - " 'tenu lagn na garm hawava',\n", - " 'jug jug jivey shaala tu',\n", - " 'teri aayi mein mar jaava',\n", - " 'tere pyar ditta jado da sahara ve',\n", - " 'mainu bhul gaya maahiya jag sara ve',\n", - " 'khushi eho mainu sajna batheri',\n", - " 'dua na koi hor mangdi',\n", - " 'tere pairaan ch akheer hove meri',\n", - " 'dua na koi hor mangdi',\n", - " 'nit khair manga soniya main teri',\n", - " 'dua na koi hor mangdi',\n", - " 'tu mileya te mil gayi khudayi ve',\n", - " 'hath jod akhaan payee na judaayi ve',\n", - " 'mar javangi je akh mein tho pheri',\n", - " 'dua na koi hor mangdi',\n", - " 'paawan waasta ve kalli chadd jaavina',\n", - " 'haasa menu kitte jag da banai na',\n", - " 'shaala chulle na judaiya diha neri',\n", - " 'dua na koi hor mangdi',\n", - " 'tere pairaan ch akheer hove meri',\n", - " 'dua na koi hor mangdi',\n", - " 'nit khair manga soniya main teri',\n", - " 'dua na koi hor mangdi',\n", - " 'ae khaira dum dum dhola manga teriya',\n", - " 'shaala lag jaan tainu saanva meriya',\n", - " 'mein te mar ke vi rehna mahiya teri',\n", - " 'dua na koi hor mangdi',\n", - " 'tere pairaan ch akheer hove meri',\n", - " 'dua na koi hor mangdi',\n", - " 'nit khair manga soniya main teri',\n", - " 'dua na koi hor mangdi',\n", - " 'eho rab kolo mangiyaan duawaan main',\n", - " 'allah kare teri aayi mar javaan main',\n", - " 'hathi badar banaavi saadi dheri',\n", - " 'dua na koi hor mangdi',\n", - " 'tere pairaan ch akheer hove meri',\n", - " 'dua na koi hor mangdi',\n", - " 'nit khair manga soniya main teri',\n", - " 'dua na koi hor mangdi',\n", - " 'aashiyaana mera saath tere hai na',\n", - " 'dhoondte teri gali mujhko ghar mila',\n", - " 'aab-o-daana mera haath tere hai na',\n", - " 'dhoondte tera khuda mujhko rab mila',\n", - " 'tu jo mila lo ho gaya main qaabil',\n", - " 'tu jo mila to ho gaya sab haasil haan!',\n", - " 'mushqil sahi aasaan hui manzil',\n", - " 'kyunki tu.. dhad.kan.. main dil…',\n", - " 'rooth jaana tera',\n", - " 'maan jaana mera',\n", - " 'dhoondhte teri hansi',\n", - " 'mill gayi khushi',\n", - " 'raah hoon main teri',\n", - " 'rooh hai tu meri',\n", - " 'dhoondhte tere nishaan',\n", - " 'mill gayi khudi',\n", - " 'tu jo mila lo ho gaya main qaabil',\n", - " 'tu jo mila to ho gaya sab haasil haan!',\n", - " 'mushqil sahi aasaan hui manzil',\n", - " 'kyunki tu.. dhadkan.. main dil…',\n", - " 'o…',\n", - " 'tu jo mila lo ho gaya main qaabil',\n", - " 'tu jo mila to ho gaya sab haasil.. haan!',\n", - " 'tu jo mila aasaan hui mushqil',\n", - " 'kyunki tu dhadkan.. main dil…']}}},\n", - " 'sq': {'sentence': {'pop': {'meta': {'train_data': [\"wakin' up asa me ga samete futto kanojo ga satte ikuyou na\",\n", - " 'tojiru to mieteiru monoga hirakuto mienakunaru genjitsu',\n", - " 'nani mo sondeinaiyo, tada hito koto dake wonderfull wonderfull',\n", - " 'is all i need to hear me ni mienakute',\n", - " \"sometimes i feel like cavin' in nani ka ni semararete iruyouna\",\n", - " 'i wonder why? ima made konna ni chisai jibun ni kizukenaide',\n", - " 'subete o moto ni modosou toshite donna ni kako o sosuttemitemo',\n", - " \"i'm right in yumede mite yume\",\n", - " \"ohh.. it's still turnin' around\",\n", - " \"it's so nandomo meguri meguru\",\n", - " 'alright now',\n", - " \"it's still turnin' around\",\n", - " 'demo ashita wa kittokurukara',\n", - " 'alright now',\n", - " \"what if i'm the only one? hikari ga tashika ni ashimoto o tomoshiteite\",\n", - " 'sukushi zutsu sukushi zutsu dakedo shinjiteru boku no mukau beki basho ga',\n", - " 'is this really now the only way through? sokoni wa itsudemo kimi ga ite',\n", - " 'kataku omoi kono tobira nokku suru yo',\n", - " 'boku kara hanashi o suru yo kimi ga iwareru sono mae ni',\n", - " 'furi kaeru to yoku mieru kara i can see all three sides from here',\n", - " 'mirai wa dareni mo mienai kedo kimi to futari nara yakusoku dekiru',\n", - " \"i'm right in shizuka ni naraku\",\n", - " \"ohh.. it's still turnin' around\",\n", - " \"it's so nandomo meguri meguru\",\n", - " 'alright now',\n", - " \"it's still turnin' around\",\n", - " 'demo ashita wa kittokurukara',\n", - " 'alright now',\n", - " \"sometimes when everything's dark i take a lil' time and make sure it's all real\",\n", - " \"sometimes when i'm alone i think about what the hell went wrong\",\n", - " 'i look right out the door and see that all of this is turning',\n", - " \"ohh.. it's still turnin' around\",\n", - " \"it's so nandomo meguri meguru\",\n", - " 'alright now',\n", - " \"it's still turnin' around\",\n", - " 'demo ashita wa kittokurukara',\n", - " 'alright now',\n", - " \"sometimes i feel like cavin' in nani ka ni semararete iruyouna\",\n", - " 'i wonder why? ima made konna ni chisai jibun ni kizukenaide',\n", - " 'mirai wa dareni mo mienai kedo kimi to futari nara yakusoku dekiru',\n", - " \"i'm right\",\n", - " 'alriht now',\n", - " 'kak prisnitsa mne',\n", - " 'kak prisnitsa mne',\n", - " 'golubj laskovyy',\n", - " 'golubj sizyy',\n", - " 'on klyuyot zerno',\n", - " 'poteshaetsa',\n", - " 'i vorkuet tikho',\n", - " 'i bjyot krylom',\n", - " 'a prismotrishsya',\n", - " 'prigiyadishsya an',\n", - " 'golubj to khromoy',\n", - " 'lapka lish odna',\n", - " 'on poskakivat',\n", - " 'on poskakivat',\n", - " 'vsyo za syornushkom',\n", - " 'vsyo za makovym',\n", - " 'age male man bashi kami nadaram',\n", - " 'age male man bashi dige ghami nadaram',\n", - " 'age cheshmato dashtam donyaham nadasht',\n", - " 'bede be man dasteto',\n", - " 'age male man bashi',\n", - " 'age male man bashi',\n", - " 'tanham tanhatar az harki begi',\n", - " 'bi to man tanham nazari az pisham beri',\n", - " 'tanham to donyaye namehrabon',\n", - " 'bi to man tanham toro khoda pisham bemon',\n", - " 'age male man bashi kami nadaram',\n", - " 'age male man bashi dige ghami nadaram',\n", - " 'age cheshmato dashtam donyaham nadasht',\n", - " 'bede be man dasteto',\n", - " 'age male man bashi',\n", - " 'age male man bashi',\n", - " 'tanham tanhatar az harki begi',\n", - " 'bi to man tanham nazari az pisham beri',\n", - " 'tanham to donyaye namehrabon',\n", - " 'bi to man tanham toro khoda pisham bemon',\n", - " 'na na na...',\n", - " 'na na na...',\n", - " 'na na na...',\n", - " 'tanham tanhatar az harki begi',\n", - " 'bi to man tanham nazari az pisham beri',\n", - " 'tanham to donyaye namehrabon',\n", - " 'bi to man tanham toro khoda pisham bemon',\n", - " 'turn you on, on in the world',\n", - " 'this music makes you feel so special',\n", - " 'turn you on,on in the world',\n", - " 'this music makes you feel so special',\n", - " 'dua sot te harroj',\n", - " 'dua sot te kaloj me lart',\n", - " 'edhe nese gaboj',\n", - " 'nuk kam frike te jetoj kete nate',\n", - " '2x',\n", - " 'i can turn you on on on',\n", - " 'something like that that that',\n", - " 'so i can turn you on on on',\n", - " 'something like that that that',\n", - " 'i can turn you on on on',\n", - " 'something like that that that',\n", - " '2x',\n", - " 'dua sot te harroj',\n", - " 'dua sot te kaloj me lart',\n", - " 'edhe nese gaboj',\n", - " 'nuk kam frike te jetoj kete nate',\n", - " '2x',\n", - " 'i can turn u on on on',\n", - " 'something like that that that',\n", - " 'so i can turn you on on on',\n", - " 'something like that that that',\n", - " 'i can turn you on on on',\n", - " 'something like that that that',\n", - " 'dua sot te harroj',\n", - " 'dua sot te kaloj me lart',\n", - " 'edhe nese gaboj',\n", - " 'nuk kam frike te jetoj kete nate',\n", - " 'turn you on, on in the world',\n", - " 'this music makes you feel so special',\n", - " 'turn you on, on in the world',\n", - " 'this music makes you feel so special',\n", - " '2x',\n", - " 'dua sot te harroj',\n", - " 'dua sot te kaloj me lart',\n", - " 'edhe nese gaboj',\n", - " 'nuk kam frike te jetoj kete nate',\n", - " 'ooh oo oooh',\n", - " '¡oye, chiquita!',\n", - " 'espero un momento',\n", - " 'quiero hablar contigo, ¡eh!',\n", - " 'hahaha',\n", - " 'hej! ma mori mëndjen, hej! ma mori zemrën',\n", - " \"hej! m'i mori lekët, ay ay ay\",\n", - " 'hej! ma bleu makinën, hej! ma bleu fustanin',\n", - " 'hej! ma bleu dyqanin, ay ay ay',\n", - " 'hej! ma more mëndjen, hej! ma more zemrën',\n", - " \"hej! m'i more lekët, ay ay ay\",\n", - " 'hej! ma ble dhe makinën, hej! ma ble dhe fustanin',\n", - " 'hej! ma ble dhe dyqanin, ay ay ay',\n", - " \"hey, señorita, i'm gonna teach ya\",\n", - " \"just step into my world, i'll be your leader\",\n", - " 'hey, señorita, i wanna save ya',\n", - " 'all you have to say is: \"baby, i believe ya\"',\n", - " 'hey! na, na, na, na, na, na',\n", - " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", - " 'hey! na, na, na, na, na, na',\n", - " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", - " 'hey, señorita',\n", - " \"just step into my world, i'll be your leader\",\n", - " 'hey, señorita',\n", - " 'all you have to say is: \"baby, i believe ya\"',\n", - " '(oh yeah)',\n", - " 'hej! ma mori mëndjen, hej! ma mori zemrën',\n", - " \"hej! m'i mori lekët, ay ay ay\",\n", - " 'hej! ma bleu makinën, hej! ma bleu fustanin',\n", - " 'hej! ma bleu dyqanin, ay ay ay',\n", - " 'hej! ma more mëndjen, hej! ma more zemrën',\n", - " \"hej! m'i more lekët, ay ay ay\",\n", - " 'hej! ma ble dhe makinën, hej! ma ble dhe fustanin',\n", - " 'hej! ma ble dhe dyqanin, ay ay ay',\n", - " \"hey, señorita, i'm gonna teach ya\",\n", - " \"just step into my world, i'll be your leader\",\n", - " 'hey, señorita, i wanna save ya',\n", - " 'all you have to say is: \"baby, i believe ya\"',\n", - " 'hey! na, na, na, na, na, na',\n", - " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", - " 'hey! na, na, na, na, na, na',\n", - " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", - " 'everybody, listen up',\n", - " 'if you having a good time',\n", - " 'then i wanna see your hands up in the air',\n", - " '(hey, hey, hey, hey, hey, hey)',\n", - " \"let's go (woo)\",\n", - " \"hey, señorita, i'm gonna teach ya\",\n", - " \"just step into my world, i'll be your leader\",\n", - " 'hey, señorita, i wanna save ya',\n", - " 'all you have to say is: \"baby, i believe ya\"',\n", - " 'hey! na, na, na, na, na, na',\n", - " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", - " 'hey! na, na, na, na, na, na',\n", - " 'hey! na, na, na, na, na, na, na, na, na, na, na',\n", - " 'saa ikoutte te wo hiite donna nobori sakamo',\n", - " 'kizuato ni hibiku no ni kimi wa damatte hikari no kata wo muite waratta',\n", - " 'dakara tsuite ikou',\n", - " 'ganbarette katadaite doshaburi no aiaigasa',\n", - " 'michi ni mayotta nebusoku no kokkei na usagi aoi me kosutte muri ni waratta',\n", - " 'dakara tsuite ikou',\n", - " 'watashi dake no mono janai ite wakatteru kedo kedo dake done',\n", - " 'shiranpurishite tsumi wo kasanete more, more, more',\n", - " '\\x81¦tell me one last time/ hold me one last time',\n", - " 'asahi ga kono toki wo saratteku mae ni/ dareka no motohi kaeru sono mae ni',\n", - " 'tell me one last time/ hold me one last time',\n", - " 'watashi ga hitsuyoutte ima ichido itte/ watashi wo hanasanaitte ima ichido itte',\n", - " 'say that you love me one last time\\x81¦',\n", - " 'nani mo ittenainoni naze (doushita?) nante kiku no',\n", - " 'jojuseki ni ite mo inai jikan ni yaku watashi wo aishii to iu',\n", - " 'dakara tsuite ikou',\n", - " '3pun de kaita raburetaa quick and easy na home meal',\n", - " 'aa...konna kimochi hajimete nanda terekusasou ni arigatou to iu',\n", - " 'dakara tsuite ikou',\n", - " 'mitasarerutte kowai koto kakette wa e? tte natte asette',\n", - " 'tsukanai de sore ijou please no more, no more',\n", - " 'tell me one last time/ hold me one last time',\n", - " 'asahi ga kono toki wo saratteku mae ni/ dareka no motohi kaeru sono mae ni',\n", - " 'tell me one last time/ hold me one last time',\n", - " 'watashi ga hitsuyoutte ima ichido itte/ watashi wo hanasanaitte ima ichido itte',\n", - " 'say that you love me one last time',\n", - " 'himitsu no naka ni tsune ni shinjitsu kouzen no uso de yogoreta kao wo koko de aratte',\n", - " '(\\x81¦repete)',\n", - " 'kiss me one last time',\n", - " 'let the alarm chime',\n", - " 'hear me breathe again before you hurry home',\n", - " 'tell me one last time',\n", - " \"don't need a dime\",\n", - " 'just wonder if this love is true like your poem',\n", - " 'say that you love me one last time',\n", - " 'say that you love me one last time',\n", - " 'say that you love me one last time',\n", - " 'nemikham ye khoone too royam besazam, nemikham ghalbamo be hichki bebazam',\n", - " 'nemikham taranam ba esmet shoroo she, dige gitaram nemige didanet arezooshe',\n", - " 'mesle to mikham be har kasi residam, begam ajibe dishab man khabeto mididam',\n", - " 'mesle to sher begam sheraye asheghoone, begam to ahle beheshti jat too hasemoone',\n", - " 'begoo che joori besham mesle khodet,delamo be hame bedam mesle khodet...',\n", - " 'pashimoonam nasham mesle khodet. begoo che joori besham mesle khodet... (x3)',\n", - " 'nemikham name ham to daste to bashe. are, behtare ke dige rahemoon joda she',\n", - " 'ghalbamo man az to haminja pas mikham. mikham mesle to besham man, bahat rah nemiyam',\n", - " 'mesle to mikham man goum besham vase hamishe, begam kar az kar gozashte dir shode nemishe',\n", - " 'mesle to mikham az gerye ha ra besham, mikham az beri mimiram be khoda rad besham',\n", - " 'begoo che joori besham mesle khodet, delamo be hame bedam mesle khodet...',\n", - " 'pashimoonam nasham mesle khodet. begoo che joori besham mesle khodet... (x4)',\n", - " 'a bombi , who dat girl?',\n", - " 'i mean no no who dis?',\n", - " 'is she albanian a brooklyn?',\n", - " 'sonte du me dal, ehi',\n", - " 'hej lucky boy krejt kom me ti fal, ehi',\n", - " \"s'du me ni as ni fjale, ehi\",\n", - " 'vet na e kena lon, kena lon',\n", - " 'make it clap, booty attack',\n", - " 'make it clap, booty attack',\n", - " 'make it clap, booty clap',\n", - " 'make it clap, booty attack',\n", - " \"qysh po m'shikon ti\",\n", - " 'po don ti',\n", - " 'ej hajde rrina bashk',\n", - " 'nuk ka tjeter si ti',\n", - " 'sonte ne ket club',\n", - " 'pom pelqen ti a pe vren',\n", - " 'tjeter kush si ti sum nxejn',\n", - " 'du me dit ti qa menon',\n", - " 'a po don',\n", - " 'bounce to the rhythm gal',\n", - " 'make dem cheers up',\n", - " 'everthing i do nice',\n", - " 'follow the leader',\n", - " 'hips move a slow',\n", - " 'we can bet a come',\n", - " 'me winding and winding',\n", - " 'da men na go blindin',\n", - " 'ah, who that girl?',\n", - " 'yes i me a dora',\n", - " \"for them who don't know me\",\n", - " 'ah, who that girl?',\n", - " 'yes i me a dora',\n", - " \"for them who don't know me\",\n", - " 'get up, get up, get up, get up, come on',\n", - " 'get up, get up, get up, get up, come on',\n", - " 'get up, get up, get up, get up, come on',\n", - " 'get up, get up, get up, get up, come on',\n", - " 'sonte du me dal, ehi',\n", - " 'hey lucky boy krejt kom me ti fal, ehi',\n", - " \"s'du me ni as ni fjale, ehi\",\n", - " 'vet na e kena lon kena lon',\n", - " 'sonte du me dal, ehi',\n", - " 'hey lucky boy krejt kom me ti fal, ehi',\n", - " \"s'du me ni as ni fjale, ehi\",\n", - " 'vet na e kena lon kena lon',\n", - " 'make it clap, booty attack',\n", - " 'make it clap, booty attack',\n", - " 'make it clap, booty clap',\n", - " 'make it clap, booty attack',\n", - " 'bounce to da rhythm gyal',\n", - " 'make dem cheers up',\n", - " 'everthing i do nice',\n", - " 'follow the leader',\n", - " 'hips move a slow',\n", - " 'we can bet a go',\n", - " 'me windin and windin',\n", - " 'da men na go blindin',\n", - " 'a ? who that girl',\n", - " 'yes i me a dora',\n", - " \"for them who don't know me\",\n", - " 'a ? who that girl',\n", - " 'yes i me a dora',\n", - " \"for them who don't know me\",\n", - " 'qysh pom shikon ti',\n", - " 'po don ti',\n", - " 'hej hajde rrina bashk',\n", - " 'nuk ka tjeter si ti sonte ne ket club',\n", - " 'pom pelqen ti a pe vren',\n", - " 'tjeter kush si ti sum nxen',\n", - " 'du me dit ti qa menon, a po don',\n", - " 'get up, get up, get up, get up, come on',\n", - " 'get up, get up, get up, get up, come on',\n", - " 'get up, get up, get up, get up, come on',\n", - " 'get up, get up, get up, get up, come on',\n", - " 'get up, get up, get up, get up, come on',\n", - " 'get up, get up, get up, get up, come on',\n", - " 'get up, get up, get up, get up, come on',\n", - " 'get up, get up, get up, get up, come on',\n", - " 'sonte du me dal, ehi',\n", - " 'hey lucky boy krejt kom me ti fal, ehi',\n", - " \"s'du me ni as ni fjale, ehi\",\n", - " 'vet na e kena lon kena lon',\n", - " 'sonte du me dal, ehi',\n", - " 'hey lucky boy krejt kom me ti fal, ehi',\n", - " \"s'du me ni as ni fjale, ehi\",\n", - " 'vet na e kena lon kena lon',\n", - " 'make it clap, booty attack',\n", - " 'make it clap, booty attack',\n", - " 'make it clap, booty clap',\n", - " 'make it clap, booty attack',\n", - " 'sonte du me dal, ehi',\n", - " 'hey lucky boy krejt kom me ti fal, ehi',\n", - " \"s'du me ni as ni fjale, ehi\",\n", - " 'vet na e kena lon kena lon',\n", - " 'yazyk izognulsya mostom iz gortani v gortanj',\n", - " 'iz meshka v meshok khodil li bog po mostu',\n", - " 'ili mrachnyy shut s posinevshim litzom',\n", - " 'vyshel iz mira v mir no v mire v mir ne prishol',\n", - " 'po mostu iz ruk zvezda uvodit svoyo teplo',\n", - " 'na kakoy to drugoy vostok vityazi rubyat son',\n", - " 'smertjyu v sugroby sablyami tel',\n", - " 'krepok khokhot nebes i strashen rodiny blednyy ston']},\n", - " 'data': ['kurai kumo ga shimiwatatte',\n", - " 'machinami ni kage wo otoshi hajimeru',\n", - " 'arashi no sora ni hajikarete',\n", - " 'kogoeta kotori ga harema wo matte',\n", - " 'kiesouna negai wo tsunagi',\n", - " 'asu no hi wo yume mite',\n", - " 'we gonna be hope ikkou kibou yo',\n", - " 'shinjite mune no naka no kibou',\n", - " 'dore dake kimi ga',\n", - " 'harisake souna itami wo shirouto',\n", - " 'wasurenai de koko ni aru',\n", - " 'the light in your heart',\n", - " 'suna no kaze ni nomikomarete',\n", - " 'asahi no kizashi mo kasunde mienai',\n", - " 'sono tabi ni te wo hirakasane',\n", - " 'hito wa inoru koto keshite yamenai',\n", - " 'mune ni hi wo tomoshinagara',\n", - " 'hikari ga mieru made',\n", - " 'we gonna be hope ikkou kibou yo',\n", - " 'shinjiru nosa sono yuuki wo',\n", - " 'akira meta mama',\n", - " 'ikiru kimi ja ai no nukumori wa',\n", - " 'tsukameru hazu mo naisa',\n", - " 'the light in your heart',\n", - " 'kimi ga nozomu no nara kitto',\n", - " 'hora zetsubou sae mo before',\n", - " 'we gonna be hope ikkou kibou yo',\n", - " 'shinjiru nosa sono yuuki wo',\n", - " 'akira meta mama',\n", - " 'ikiru kimi ja ai no nukumori wa',\n", - " 'we gonna be hope ikkou kibou yo',\n", - " 'shinjite mune no naka no kibou',\n", - " 'dore dake kimi ga',\n", - " 'harisake souna itami wo shirouto',\n", - " 'wasurenai de koko ni aru',\n", - " 'the light in your heart',\n", - " 'sunday night',\n", - " 'i put a light',\n", - " 'in my blunt right',\n", - " 'in my blunt right',\n", - " \"s'nihëm mo s'm vyn kurgjo\",\n", - " \"kur t'm vyn sje mo\",\n", - " 'mke përdor',\n", - " 'futja futja hajt',\n", - " 'gonna be alright',\n", - " 'bounce edhe rrite rrite basin yo',\n", - " 'cause my time has come rrite basin',\n", - " 'po dojn me bo si na',\n", - " 'se na high jenna nigga high dhe mellow',\n", - " 'skom nevoje per ty hejo',\n", - " 'sun e bon sun e bon sun e bon sun e bon bon',\n", - " 'bon bon edhe nëse sbon sbon',\n", - " 'don don',\n", - " 'bet u wanna taste it',\n", - " 'sun e bon sun e bon sun e bon sun e bon bon',\n", - " 'hajde merëm ikim',\n", - " 'nese e don qiken',\n", - " 'king je deri ta qes piken',\n", - " 'hajde merëm ikim',\n", - " 'nese e don qiken',\n", - " 'king je deri ta qes piken',\n", - " 'honey',\n", - " 'sunday night',\n", - " 'i put a light',\n", - " 'in my blunt right',\n", - " 'skom nevoje per ty hejo',\n", - " 'edhe vet un e thejo',\n", - " \"sun m'rrxon jom knejo\",\n", - " 'sun e bon sun e bon sun e bon sun e bon bon',\n", - " 'bon bon edhe nëse sbon sbon',\n", - " 'don don',\n", - " 'bet u wanna taste it',\n", - " 'bon bon',\n", - " 'bet u wanna taste it',\n", - " 'e di qe ti don don, don',\n", - " 'bon bon edhe nëse sbon sbon',\n", - " 'don don',\n", - " 'bet u wanna taste it',\n", - " 'bon bon',\n", - " 'bet u wanna taste it',\n", - " 'e di qe ti don don, don',\n", - " 'sun e bon sun e bon sun e bon sun e bon bon',\n", - " '(x2)',\n", - " 'bon bon edhe nëse sbon sbon',\n", - " 'don don',\n", - " 'bet u wanna taste it',\n", - " 'bon bon',\n", - " 'bet u wanna taste it',\n", - " 'e di qe ti don don, don',\n", - " 'bon bon edhe nëse sbon sbon',\n", - " 'don don',\n", - " 'bet u wanna taste it',\n", - " 'bon bon',\n", - " 'bet u wanna taste it',\n", - " 'e di qe ti don don, don',\n", - " 'sun e bon sun e bon sun e bon sun e bon bon',\n", - " 'sun e bon sun e bon sun e bon sun e bon bon',\n", - " 'fel7ob 9elbi 9bi7',\n", - " 'manjish wenti7',\n", - " 's3ib yeddini ri7',\n", - " 'ana mashi sahel',\n", - " 'fel7ob 9elbi 9bi7',\n", - " 'manjish wenti7',\n", - " 's3ib yeddini ri7',\n", - " 'ana mashi sahel',\n", - " '9aletli lwalida',\n", - " 'manrebbi kebda',\n", - " 'mashi ay we7da',\n", - " 'matkonshi ghafel',\n", - " 'ana mashi sahel',\n", - " '9aletli lwalida',\n", - " 'manrebbi kebda',\n", - " 'mashi ay we7da',\n", - " 'matkonshi ghafel',\n", - " 'ana mashi sahel',\n", - " 'mabghitsh nkon khfif',\n", - " 'fe9lob lebnat ana dif',\n", - " 'nebda l7ob feshta',\n", - " 'wensali fesif',\n", - " 'mabghitsh nkon khfif',\n", - " 'fe9lob lebnat ana dif',\n", - " 'nebda l7ob feshta',\n", - " 'wensali fesif',\n", - " '9aletli lwalida',\n", - " 'manrebbi kebda',\n", - " 'mashi ay we7da',\n", - " 'matkonshi ghafel',\n", - " 'ana mashi sahel',\n", - " '9aletli lwalida',\n", - " 'manrebbi kebda',\n", - " 'mashi ay we7da',\n", - " 'matkonshi ghafel',\n", - " 'ana mashi sahel',\n", - " 'yeah, you know we gettin’ so low low (ja ja ja ja ja ja)',\n", - " 'i make her dance like diablo-po (oh na na na na na na )',\n", - " 'a m’foli mu? m’foli mu, m’foli mu',\n", - " 'a m’foli mu? a m’foli mu?',\n", - " 'a m’foli mu? m’foli mu, m’foli mu',\n", - " 'a m’foli mu? a m’foli mu?',\n", - " 'diablo gon’ make her dance, diablo gon’ make her dance ye',\n", - " 'diablo gon’ make her dance, nuk ka koh hajde ma ngat',\n", - " 'si e bon ti at ting no other can, ajo po duket si prej pakistan',\n", - " 'si si e bon ti at ting no other can, ajo po duket si prej pakistan',\n", - " \"i'm a badman yeah, i'm a badman, i'm a ba-badman, yeah\",\n", - " \"i'm a badman yeah, i'm a badman, i'm a ba-badman, yeah\",\n", - " 'kur leviz she got me low low, nuk ka tjere qe e bon si kjo jo',\n", - " 'yeah, you know we gettin’ so low low (ja ja ja ja ja ja)',\n", - " 'i make her dance like diablo-po (oh na na na na na na )',\n", - " 'a m’foli mu? m’foli mu, m’foli mu',\n", - " 'a m’foli mu? a m’foli mu?',\n", - " 'a m’foli mu? m’foli mu, m’foli mu',\n", - " 'a m’foli mu? a m’foli mu?',\n", - " 'stop, ketu nuk ka drama, ka action',\n", - " 'grupi tøw the new fashion',\n", - " 'they tryna be my biki biki biki (bro)',\n", - " 'kur na shohin e nderrojne mendjen',\n", - " 'menut po foli per ni lady, jo jo po foli per suksesin',\n", - " 'e kta tjeret si robota, njejtin stil, njejtin sound (same)',\n", - " \"kidda 'bout to take over\",\n", - " \"i'm a badman yeah, i'm a badman, i'm a ba-badman, yeah\",\n", - " \"i'm a badman yeah, i'm a badman, i'm a ba-badman, yeah\",\n", - " 'kur leviz she got me low low, nuk ka tjere qe e bon si kjo jo',\n", - " 'yeah, you know we gettin’ so low low (ja ja ja ja ja ja)',\n", - " 'i make her dance like diablo-po (oh na na na na na na )',\n", - " 'a m’foli mu? m’foli mu, m’foli mu',\n", - " 'a m’foli mu? a m’foli mu?',\n", - " 'a m’foli mu? m’foli mu, m’foli mu',\n", - " 'a m’foli mu? a m’foli mu?']}}},\n", - " 'st': {'sentence': {'pop': {'meta': {'train_data': ['chinese characters',\n", - " '藏在肺裡的尖叫',\n", - " '藏在骨頭和肌肉裡的',\n", - " '沒有爆破前 毋庸置疑的',\n", - " '都會揪緊成病',\n", - " '曾經 乾燥的 都被潑濕',\n", - " '膨脹後彈牙 多肉 黏膩多汁',\n", - " '一個女人徒手拔掉滿頭黑髮',\n", - " '在夢境的山稜線行走',\n", - " '思念聚集成蚊蟲',\n", - " '張開沒有焦點的瞳孔',\n", - " '就像….快 張開沒有欲望的大腿',\n", - " '我咬下去 你還是無動於衷嗎',\n", - " '明明可以叫出來的呀',\n", - " '沿著你的脊椎走',\n", - " '我的手指 戳出一個冰涼的湖',\n", - " '四處張望 無人看守',\n", - " '暴露狂脫掉風衣 淚流滿面地 跳進去',\n", - " '計劃把你高潮的尖叫聲錄起 來',\n", - " '卻發現剛剛按錯了鍵',\n", - " '一去不復返 無能重複那時刻',\n", - " '你躺著',\n", - " '和逐漸冰冷的液體 撕扯著',\n", - " '黏膩 透明 在我的手心開出具有彈性的花',\n", - " '我覺得不夠 想從你身體裡擠出更多',\n", - " '就在這個時候電話響起',\n", - " '窗外的鹿群 飛奔離去 同時',\n", - " '急遽消退 藍色的風 抹去世界邊緣的泡沫',\n", - " '從你半開的雙眼繞過',\n", - " '接起電話 靜默降臨',\n", - " '剛醒來的情慾 在電話裡喘氣 尖叫',\n", - " '我邊聽 邊把你的汗一滴滴舔掉',\n", - " '不能吼出來 那就吞下去',\n", - " 'phonetic chinese',\n", - " 'cáng zài fèi lǐ de jiān jiào',\n", - " 'cáng zài gǔtou hé jīròu lǐ de',\n", - " 'méiyǒu bàopò qián wúyōng zhìyí de',\n", - " 'dūhuì jiū jǐn chéng bìng',\n", - " 'céngjīng gānzào de dōu bèi pō shī',\n", - " 'péngzhàng hòu dàn yá duōròu nián nì duō zhī',\n", - " 'yīgè nǚrén túshǒu bá diào mǎn tóu hēi fà',\n", - " 'zài mèngjìng de shān léngxiàn xíngzǒu',\n", - " 'sīniàn jùjí chéng wénchóng',\n", - " 'zhāng kāi méiyǒu jiāodiǎn de tóngkǒng',\n", - " 'jiù xiàng…. kuài zhāng kāi méiyǒu yùwàng de dàtuǐ',\n", - " 'wǒ yǎo xiàqù nǐ háishì wúdòngyúzhōng ma',\n", - " 'míngmíng kěyǐ jiào chūlái de ya',\n", - " 'yánzhe nǐ de jǐchuí zǒu',\n", - " 'wǒ de shǒuzhǐ chuō chū yīgè bīngliáng de hú',\n", - " 'sìchù zhāngwàng wúrén kānshǒu',\n", - " 'bàolù kuáng tuō diào fēngyī lèi liú mǎnmiàn de tiào jìnqù',\n", - " 'jìhuà bǎ nǐ gāocháo de jiān jiào shēng lù qǐlái',\n", - " 'què fāxiàn gānggāng àn cuòle jiàn',\n", - " 'yī qù bù fù fǎn wúnéng chóngfù nà shíkè',\n", - " 'nǐ tǎngzhe',\n", - " 'hé zhújiàn bīnglěng de yètǐ sīchězhe',\n", - " 'nián nì tòumíng zài wǒ de shǒuxīn kāi chū jùyǒu tánxìng de huā',\n", - " 'wǒ juédé bùgòu xiǎng cóng nǐ shēntǐ lǐ jǐ chū gèng duō',\n", - " 'jiù zài zhège shíhòu diànhuà xiǎngqǐ',\n", - " 'chuāngwài de lù qún fēi bēn lí qù tóngshí',\n", - " 'jíjù xiāotuì lán sè de fēng mǒ qù shìjiè biānyuán de pàomò',\n", - " 'cóng nǐ bànkāi de shuāng yǎn ràoguò',\n", - " 'jiē qǐ diànhuà jìngmò jiànglín',\n", - " 'gāng xǐng lái de qíngyù zài diànhuà lǐ chuǎnqì jiān jiào',\n", - " 'wǒ biān tīng biān bǎ nǐ de hàn yīdī dī tiǎn diào',\n", - " 'bùnéng hǒu chūlái nà jiù tūn xiàqù',\n", - " 'english translation',\n", - " 'the screams that are buried in the lungs',\n", - " 'buried in the bones and the muscles',\n", - " 'unexploded, undeniable',\n", - " 'cram into a sickness',\n", - " 'what used to be dry is now sodden',\n", - " 'swollen, meaty, moist and juicy',\n", - " 'my teeth are bouncing off it',\n", - " 'a woman pulls out the headful of black hair with her bare hands',\n", - " 'walks along the mountain ridges in a dream',\n", - " 'remembrance swarms like mosquitos',\n", - " 'opening up the unfocused eyes',\n", - " 'as if… quick, spread the legs without desire wide',\n", - " 'i take a bite, are you still unmoved',\n", - " 'you can scream out',\n", - " 'tracing along your spine',\n", - " 'my fingers created a cold lake',\n", - " 'i look around, no one is guarding',\n", - " 'the exhibitionist takes out his coat',\n", - " 'and jumps into it with tears on his face',\n", - " 'i planned to record your scream as you reached orgasm',\n", - " 'but then realize that i’ve pressed the wrong button',\n", - " 'the moment has been lost, irretrievable',\n", - " 'you lie there',\n", - " 'struggling with the body fluid that is getting cold',\n", - " 'sticky, transparent, elastic flowers in my palm',\n", - " 'i’m not satisfied; i want to squeeze more out of your body',\n", - " 'the telephone rings at this moment',\n", - " 'a herd of deer run past the window and at the same time',\n", - " 'blue winds are dispelled so quickly, wiping out the foams on the margin of the world',\n", - " 'escaping from your half-opened eyes',\n", - " 'picking up the phone, silence comes',\n", - " 'the desire just awoken breathes and screams in the receiver',\n", - " 'as i listen i lick away every drop of your sweat',\n", - " 'if you can’t scream then swallow it down',\n", - " 'hot hot summer rock',\n", - " 'everybody feeling hot',\n", - " 'waïkiki, waïkiki roots',\n", - " 'waïkiki rock',\n", - " 'hot hot summer rock',\n", - " 'everybody feeling hot',\n", - " 'waïkiki, waïkiki roots',\n", - " 'waïkiki rock',\n", - " 'an bê ka gnonguon tchê',\n", - " 'ka taga dougou dôh léla',\n", - " 'o dougou tôgô lé hawaï',\n", - " 'tchê hou ko aloha',\n", - " 'mousso hou ko aloha !!!',\n", - " \"sougourou ni ko n'gna bla sra\",\n", - " 'kôgôdjidala',\n", - " \"n'go aïwa angné wa\",\n", - " \"aka aborola n'kan kan\",\n", - " \"aka n'caressé\",\n", - " \"abana tougouni ka n'caressé\",\n", - " 'hot hot summer rock',\n", - " 'everybody feeling hot',\n", - " 'waïkiki, waïkiki roots',\n", - " 'waïkiki rock',\n", - " 'hot hot summer rock',\n", - " 'everybody feeling hot',\n", - " 'waïkiki, waïkiki roots',\n", - " 'waïkiki rock',\n", - " 'ha ha ha ha...',\n", - " 'ha ha aloha (bis)',\n", - " \"sougourou ni ko n'gna bla sra\",\n", - " 'kôgôdjidala',\n", - " 'aka akangara ni kê lêbê lêbê',\n", - " 'ka abobarani kê sehou !!!',\n", - " 'alo... alo... aloha',\n", - " 'alo... alo... aloha',\n", - " 'bozo horon né bi wélé',\n", - " 'bozo guana né bi wélé',\n", - " 'bozo tièfanri né bi wélé',\n", - " 'djidon wara né bi wélé',\n", - " 'soguo gnôron lamitiè',\n", - " 'soguo yétou lamitiè',\n", - " 'soguo dabadjiê lamitiè',\n", - " 'soguo gnara lamitiè',\n", - " 'karaminta bozo, nè bi wélé',\n", - " 'minta bozo, né bi wélé',\n", - " 'sininta bozo, né bi wélé',\n", - " 'famanta bozo, né bi wélé',\n", - " 'soguo migniè kadokélé',\n", - " 'soguo guitiè kadokélé',\n", - " 'soguo boitiè kadokélé',\n", - " 'soguo kotiyen kadokélé',\n", - " 'djinta bozo, né bi wélé',\n", - " 'salamanta bozo, né bi wélé',\n", - " 'kanta bozo, né bi wélé',\n", - " 'tapo bozo, né bi wélé',\n", - " 'konkao bozo, né bi wélé',\n", - " 'jintao bozo, né bi wélé',\n", - " 'kampo bozo, né bi wélé',\n", - " 'bozo horon, né bi wélé',\n", - " 'bozo guana, né bi wélé',\n", - " 'bozo tièfanri, né bi wélé',\n", - " 'djidon wara, né bi wélé',\n", - " 'bozo the noble, i call you',\n", - " 'bozo the brave, i call you',\n", - " 'bozo the lion of the water, i call you',\n", - " 'soguo gnôron lamitiè',\n", - " 'soguo yétou lamitiè',\n", - " 'soguo dabadjiê lamitiè',\n", - " 'soguo gnara lamitiè',\n", - " 'karaminta bozo, i call you',\n", - " 'minta bozo , i call you',\n", - " 'sininta bozo, i call you',\n", - " 'famanta bozo, i call you.*',\n", - " 'soguo migniè kadokélé',\n", - " 'soguo guitiè kadokélé',\n", - " 'soguo boitiè kadokélé',\n", - " 'soguo kotiyen kadokélé',\n", - " 'djinta bozo, i call you',\n", - " 'salamanta bozo, i call you',\n", - " 'kanta bozo, i call you',\n", - " 'tapo bozo, i call you',\n", - " 'konkao bozo, i call you',\n", - " 'jintao bozo, i call you',\n", - " 'kampo bozo, i call you.*',\n", - " 'bozo the noble, i call you',\n", - " 'bozo the brave, i call you',\n", - " 'bozo the brave, i call you',\n", - " 'bozo the lion of the water, i call you',\n", - " '* bozo family names',\n", - " 'dancing time for dancers!',\n", - " \"it's dancing time\",\n", - " \"it's dancing time\",\n", - " 'yeah yeh',\n", - " \"come on, let's move together\",\n", - " 'brothers (...)',\n", - " 'funky sisters (...)',\n", - " \"let's (...) together\",\n", - " \"let's move together\",\n", - " 'funky dancers (...)',\n", - " \"let's move together\",\n", - " 'no! to the funka (...)',\n", - " 'dance yeih yeh! uouo',\n", - " 'come on',\n", - " '(...)',\n", - " 'atta hitotsu kawaranai mono',\n", - " 'zutto egaiteta yume',\n", - " 'ima no jibun ha dou utsuru no',\n", - " 'ano koro no chiisana hitomi ni',\n", - " 'nee...miagete konna ni hiroi yozora dakara',\n", - " 'sou...sugu ni wakaru you ni',\n", - " 'seiippai kagayaku kara hayaku',\n", - " 'full moon wo sagashite',\n", - " \"let's sing a song\",\n", - " 'itsudemo issho kimi no tame ima no watashi ni dekiru subete',\n", - " 'day by day',\n", - " 'kyou made no unmei ashita kara no kibou kono mune ni dakae',\n", - " \"let's sing a song\",\n", - " 'itsudemo issho kimi to nara tsurai koto nori koerareru yo',\n", - " 'more and more',\n", - " 'motto motto motto chikazukitai ima koko ni ite kurete',\n", - " 'many thanks for you',\n", - " 'fushigi na deai kurikaesu uchi',\n", - " 'taisetsu na mono ga suete',\n", - " 'guuzen to iu itazura na hibi',\n", - " 'ima de ha waratte aiseru',\n", - " 'sou...itsumo hiroi stage ni akogareteta',\n", - " 'mou...watashi hitori janai',\n", - " 'minna no egao ga afureteru',\n", - " 'koko ga ibasho nano kara',\n", - " \"let's sing a song\",\n", - " 'konya no spotlight yori ima watashi no kagayakaseru',\n", - " 'day by day',\n", - " 'atsui manazashi to seien ga nagareru ase wo terashiteru',\n", - " \"let's sing a song\",\n", - " 'konya wa eien ni kawaranai atsui omoi aru to shinjitai',\n", - " 'more and more',\n", - " 'motto motto motto sakebitai kono utau kono yume wa owaranai',\n", - " \"let's sing a song\",\n", - " 'repeat and repeat',\n", - " \"let's sing a song\",\n", - " 'repeat and repeat...',\n", - " 'this is song for you',\n", - " 'agent sasco!',\n", - " 'follow me now',\n", - " 'helo',\n", - " 'helo',\n", - " 'bramba rmanaa a',\n", - " 'e for deat mella for its somethinsg gutta geb',\n", - " 've get delabada some afrtan smarta now it means im in a sotsctitnra bruba smart now',\n", - " 'hold on put in a work running on my shirt just for sakdasd',\n", - " 'do the wordl smahsuip',\n", - " 'smoethign gutta gev',\n", - " 'mås have benn duty manansanss sponge',\n", - " \"hypocrites, j'ai peur des hypocrites\",\n", - " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", - " \"hypocrites, j'ai peur des hypocrites\",\n", - " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", - " 'obé dindin i kêrê fê',\n", - " 'ki konnon non kou man hou lôh',\n", - " 'iman mi fôh, obé olé nôrô ila',\n", - " \"ni ko djougou kisôrô lo'n minan do\",\n", - " 'hinnin, oh hinnin, ibe hinnin iyêrêla',\n", - " 'hinnin, ooh hinnin, ibé hinnin iyêrêla',\n", - " \"hypocrites, j'ai peur des hypocrites\",\n", - " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", - " \"hypocrites, j'ai peur des hypocrites\",\n", - " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", - " 'odôhou yé koulé gninan léyè',\n", - " 'odôhou yé gbôssô wourou, obi kin, oba fiê',\n", - " 'boro mibè, domini di ouman',\n", - " 'obo o kin, obo o kin',\n", - " \"n'ga dji lôh, n'ga so lôh\",\n", - " \"n'ga yiri lôh, yêrè lon yongon tê n'téri\",\n", - " \"djanto iyêréla, n'go iyé i djanto iyèréla\",\n", - " \"djanto lyérèla, n'gouyé i djanto iyérèla\",\n", - " \"hypocrites, j'ai peur des hypocrites\",\n", - " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", - " 'obi ikana figuê forai gbê la',\n", - " 'ali idjori tè bon, ali ibassi tébon',\n", - " 'ki kantiguê fani gbê la',\n", - " 'ali djori té bon, ali bassi té bon',\n", - " \"hypocrites, j'ai peur des hypocrites\",\n", - " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", - " \"hypocrites, j'ai peur des hypocrites\",\n", - " \"hypocrites, yeah, j'ai peur des hypocrites\",\n", - " 'oh nananaaa ei, oh yeah',\n", - " 'king king promise, yeaaaah, killbeatz lets go!',\n", - " \"ɔdo yi akye m'akoma oo, menhyia ɔdɔ yewu anka m'enhu. aaa yeah\",\n", - " 'i dont even think you know, say my life edey revolve around you',\n", - " 'you like the sun, you light me up oooh girl',\n", - " 'sɛ ɛduru anadwo aa menko me da,obi nse ɔdɔ mafe no wae. aaah yeah, tie',\n", - " 'ɔdɔ wokɔɔeɛ akyɛ oo menko me da, ɛnyɛ',\n", - " 'saa wo bɛba na mewu aaae waaaaee yeah, ɔɔɔh',\n", - " 'abena ee mabena yie medeɛ ei, bra bɛhwɛ me wae, ɔɔɔ yiee, aaa',\n", - " 'abena ee mabena yie medeɛ ei',\n", - " 'bra bɛhwɛ me wae, waeie waeie wae, aah aah, ei',\n", - " 'hame gbɛ ni ma sumɔ bo, i',\n", - " 'go dey always love baby baa sumɔ mi, mi lovie baa sumɔ mi, aa ah',\n", - " 'hame gbɛ ni ma sumɔ bo, i',\n", - " 'go dey always love baby baa sumɔ mi',\n", - " 'mi lovie baa sumɔ mi, baa sumɔ mi moko bɛ',\n", - " 'the way you smile edey make i dey weak oo nkɛɛ moko bɛɛ',\n", - " 'baby you wey my heart edey need oo nkɛ moko bɛɛ',\n", - " 'and you dey make i dey feel complete',\n", - " 'oo nkɛ moko bɛɛ, waeie waei waee, aa aah',\n", - " 'sɛ ɛduru anadwo aa menko me da, o',\n", - " 'bi nse ɔdɔ mafe no wae. aaah yeah, tie',\n", - " 'ɔdɔ wokɔɔeɛ akyɛ oo menko me da, ɛnyɛ',\n", - " 'saa wo bɛba na mewu aaae waaaaee yeah, ɔɔɔh',\n", - " 'abena ee mabena yie medeɛ ei, bra bɛhwɛ me wae, ɔɔɔ yiee, aaa',\n", - " 'abena ee mabena yie medeɛ ei',\n", - " 'bra bɛhwɛ me wae, waeie waeie wae, aah aah, ei',\n", - " \"you got me doing things things wey, i never thought i'd do\",\n", - " \"nobody make i dey feel this way eei, i swear i'm into you yieee\",\n", - " 'nobody dey like you, i know me and you wey go die eih',\n", - " 'i never think say i go feel this way yeah, ɔɔh yeaah',\n", - " 'aaaaw baby oooo',\n", - " 'ɔɔɔ yeah',\n", - " \"ɔdɔ m'afe wo ei, oo ooh yeah, oo oo\",\n", - " 'nti me hwɛmo tsɔ, nti me hwɛmo tsɔ, nti',\n", - " 'me hwɛmo tsɔ, ooh nananaa ei yeah',\n", - " 'sɛ ɛduru anadwo aa menko me da, o',\n", - " 'bi nse ɔdɔ mafe no wae. aaah yeah, tie',\n", - " 'ɔdɔ wokɔɔeɛ akyɛ oo yɛntɛm bra, ɛnyɛ sa',\n", - " 'a wo bɛba na mewu aaae waaaaee yeah, ɔɔɔh',\n", - " 'abena ee mabena yie medeɛ ei, bra bɛhwɛ me wae, ɔɔɔ yiee, aaa',\n", - " 'abena ee mabena yie medeɛ ei',\n", - " 'bra bɛhwɛ me wae, waeie waeie wae, aah aah, ei',\n", - " 'ou wa ou wa, aah eih',\n", - " 'ou wa ou wa, ooh oooh, baby',\n", - " 'ou wa ou wa, aah eih',\n", - " 'yeah, legacy life entertainment, ooh nananaaa yeah',\n", - " 'tul(ta) hwær cwóm helm? hwær cwóm byr(ne)?',\n", - " 'cui(va) hwær cwóm feax flówende?',\n", - " '(met)ta(anna) hwær cwóm helm? hwær cwóm byr(ne)?',\n", - " '(mau)ya hwær cwóm feax flówende?',\n", - " '(tu)o(lya) hwær cwóm hand on hearpe(strenge)?',\n", - " '(nott)ol(ya) hwær cwóm scínende?',\n", - " '(mau)ya hwær cwóm hand on hearpe(strenge)?',\n", - " '(o)ló(rin) hwær cwóm scínende?',\n", - " 'irkat-lu(k)hu(d)',\n", - " '(katabri)ki(hu)',\n", - " 'híe hine feorran',\n", - " 'and hwíte sun(nan)',\n", - " 'clipodon',\n", - " 'ac',\n", - " 'for thon hé waes sceadufæx',\n", - " 'hláford ealra méara',\n", - " 'and hé ne and(swaro)de',\n", - " 'educàti, sillabàtu, pe, se, re, tu',\n", - " 'passulàtu, terraccàtu, si, na, te, ru',\n", - " 'pertesàrra, ìkebàna, per, se, re, tu',\n", - " 'ramutèrra, colabòtu, si ma te ru',\n", - " 'educàti, sillabàtu, pe, se, re tu',\n", - " 'masannàta, pellaccàtu, si, nu',\n", - " 'vetesèrra, petemànu, pe, se, re, tu',\n", - " 'lòdo, lòdo',\n", - " 'lòdo, lòdo',\n", - " 'loto, màrato ferrasàto pò-ro',\n", - " 'po... pò',\n", - " 'lòdo, lòdo',\n", - " 'lòto, sàto, màto, màto',\n", - " 'màrato ferrasàto pò-ro',\n", - " 'po-rò',\n", - " 'ro... rò',\n", - " 'si te te le ru malafì tu',\n", - " 're te ke te re malafì ru',\n", - " 'si te te le ru malafì tu',\n", - " 're te ke te re malafì',\n", - " 'po po po po... (etc.)',\n", - " 're metekèleno, pisèveno, pisèveno',\n", - " 're metesèleno, pisèveno, pisève;',\n", - " 'go nevesò pa, ro nèveso, nèveso, nèveso, nèveso',\n", - " 'nèveso, nèveso, nèveso, oh!',\n", - " 'sèreven, sèreven, ne ma se tu',\n", - " 'sèreven, sèreven, ne ma re tu',\n", - " 'sèreven, sèreven, ne ma se tu',\n", - " 'sèreven, sèreven, ne ma re tu',\n", - " 'oh, oh, oh, oh, oh!',\n", - " 'ta ta ta ta tàra… (etc)',\n", - " 'oh, oh!',\n", - " 'sèreven sèreven, nèssa mararètu',\n", - " 'sèreven sèreven, nèssa mararètu',\n", - " 'sèreven sèreven, nèssa mararètu',\n", - " 'sèreven sèreven, nèssa mararètu, oh!',\n", - " 'oh, oh… (etc.)',\n", - " 'neravètu',\n", - " 'nerasètu',\n", - " 'sèreven sèreven, ne ma re tu',\n", - " 'sèreven sèreven, ne ma se tu',\n", - " 'sèreven sèreven, ne ma se tu',\n", - " 'sèreven sèreven, ne ma to',\n", - " 'once, we did run',\n", - " 'how we chased a million stars',\n", - " 'and touched as only one can',\n", - " 'once, we did play',\n", - " 'how the past delivered you',\n", - " \"amidst our youth we'd dream away, away\",\n", - " \"as if i knew the words i'm sure you'll hear\",\n", - " 'of how we met as you recall so clear',\n", - " 'once, we did love',\n", - " 'long ago how did i forget',\n", - " 'holding you so closely',\n", - " 'look, how i move',\n", - " 'chance would have me glance at you',\n", - " 'to know how you move me',\n", - " 'me, all barriers fall around us as we hear',\n", - " 'of memories known and matters long ago, so clear',\n", - " 'once, we did run',\n", - " 'how we chased a million stars',\n", - " 'and touched as only one can',\n", - " 'ninna nanna, dorma fiöö...',\n", - " \"el tò pà el g'ha un sàcch in spala\",\n", - " \"e'l rampèga in sö la nòcc...\",\n", - " 'prega la loena de mea fàll ciapà',\n", - " \"prega la stèla de vardà in duvè che'l va\",\n", - " \"prega el sentée de purtàmel a ca'...\",\n", - " 'ninna nanna, ninna oh.....',\n", - " 'ninna nanna, dorma fiöö...',\n", - " \"el tò pà el g'ha un sàcch in spàla\",\n", - " \"che l'è piee de tanti ròpp:\",\n", - " \"el g'ha deent el sö curàgg\",\n", - " \"el g'ha deent la sua pagüra\",\n", - " \"e i pàroll che'll po' mea dì....\",\n", - " 'ninna nanna, ninna oh....',\n", - " 'ninna nanna, dorma fiöö...',\n", - " 'che te sògnet un sàcch in spàla',\n", - " 'per rampegà de dree al tò pà...',\n", - " 'sö questa vita che vìvum de sfroos',\n", - " 'sö questa vita che sògnum de sfroos',\n", - " 'in questa nòcch che prégum de sfroos',\n", - " 'prega el signuur a bassa vuus...',\n", - " 'cun la sua bricòla a furma de cruus....',\n", - " 'te seet sempru ciucch, te steet gnànca in pee',\n", - " \"ma taant adèss te'l lèvi me el pensee\",\n", - " 'la mia pistòla spàra e la fa mea parè',\n", - " 'l\\'è mea un cioo cumè queèll che gh\\'eet scià te!\"',\n", - " 'rende rende rende',\n", - " 'rende rende rende',\n", - " 'andoma a rende ij onor',\n", - " 'a cole còse a cole còse',\n", - " \"'dla natura\",\n", - " 'croste dël pan',\n", - " 'e cicolata',\n", - " 'e le furmije',\n", - " 'a fan procession',\n", - " 'asil sucrà',\n", - " 'e marmlada',\n", - " 'stoma setà',\n", - " 'setà a tàula',\n", - " 'ren-a ren-a ren-a',\n", - " 'ren-a ren-a ren-a dël cheur',\n", - " \"oh giàun giaunet 'dla lun-a\",\n", - " \"s'it am abandon-e 'dcò ti\",\n", - " 'i s-ciairo pa pì',\n", - " 'sota le stèile',\n", - " 'am pias pensé',\n", - " 'al via vai',\n", - " 'mai silensios',\n", - " \"a-i è 'n mist\",\n", - " 'na confusion',\n", - " 'ël ratatoj',\n", - " 'gran calderon',\n", - " 'ren-a ren-a ren-a',\n", - " 'eh tèila, tèila ëd ragnà',\n", - " 'a fa calor ant le ca',\n", - " 'santa claus is on his way',\n", - " 'doodah, rudah',\n", - " 'santa claus is on his sleigh',\n", - " 'all the ring dong dash',\n", - " \"we the christma's wish\",\n", - " \"we need the christma's wish\",\n", - " 'my brother and i are going to stay',\n", - " \"we need the christma's wish\",\n", - " 'uh...',\n", - " 'pffff...',\n", - " 'halla!',\n", - " 'hello!',\n", - " 'merry christmas!',\n", - " 'ah...',\n", - " 'hohohohohohoho',\n", - " 'hohoho',\n", - " 'hohohohohohohohohoho',\n", - " 'hohoho',\n", - " 'pohoho',\n", - " 'pfub pfub pfub pfub pfub pfub pfub pfub pfub pfub pfub pfub po',\n", - " 'merry christmas',\n", - " 'popo',\n", - " 'pht...',\n", - " 'perry chrisa',\n", - " 'ahaha...',\n", - " 'bleugh...',\n", - " 'plah...',\n", - " 'merry christmas!',\n", - " 'merry christmas!',\n", - " 'pshha...',\n", - " 'ana zabbat w khattat w bisitlik',\n", - " 'faj3atan atel5bet, la2iat 2albi aittishal w attahet',\n", - " 'mesd2tesh kol elly ana feeh',\n", - " \"zay ma 'akun aitthabatt 2isad minek\",\n", - " 'ba3ed ma ratabat kalam a2ooleh',\n", - " 'shuftk ana tahat mjmetesh, mesh earifat ana leeh',\n", - " 'waba2iat bet5reb,w alkalimat alkalimat bita7rub',\n", - " 'min 3ali taraf lisani',\n", - " 'yama nafsi ta2aruba, ryhani bas w jarab',\n", - " 'yally hattesbb fi jnani',\n", - " 'ana zabat w khattat w bisitlik',\n", - " 'faj3atan atel5bet, la2iat 2albi aittishal w attaht',\n", - " 'mesd2tesh kol elly ana feeh',\n", - " 'ana bi7kilek balzabet elly 7asali',\n", - " 'hanat, 2arbet tajanni!',\n", - " 'ensak la la la di jadidat, di mehsaltlish',\n", - " 'keda khaltani atjarat w akalimtuk',\n", - " 'asal masdi2t takun janbi',\n", - " 'dana tul alwa2t eant fi baly, w mebetsbenish',\n", - " 'waba2iat bet5reb,w alkalimat alkalimat bita7rub',\n", - " 'min 3ali taraf lisani',\n", - " 'yama nafsi ta2aruba, ryhani bas wajarrab',\n", - " 'yally hattesbb fi jnani',\n", - " 'the skies and the future, the color is the same',\n", - " \"it's black:\",\n", - " 'the land is in a swamp there is no way',\n", - " \"dark falls on homeland. that's it. the end is on the way\",\n", - " 'horned knights, they are coming soon',\n", - " 'their blades shine under the opaque moon',\n", - " 'enemy: they want to rule our motherland',\n", - " \"enemy: they'll take our treasure till the end\",\n", - " \"enemy: they'll burn our homes and fields\",\n", - " 'enemy: they came with war!',\n", - " 'the land needs help, the people pray for it a lot:',\n", - " \"all of a sudden lightning strikes from the sky. it's a marvel from the dark!\",\n", - " 'è âîò íà ñâåò ÿâèëñÿ îí. ñïàñèòåëü, äà! íèêòî èíîé!',\n", - " 'âåëèêèé êíÿçü, óðà! ðîæäåí ñïàñòè íàðîä è êðàé ðîäíîé',\n", - " 'forgotten sun brings back to us illumination',\n", - " \"the baby's cry revives lost hope of the nation\",\n", - " 'forgotten sun brings back to us illumination',\n", - " \"the baby's cry revives lost hope of the nation\",\n", - " 'the wind, is rocking the cradle, and father holds the candle',\n", - " \"a flame-colored look from the baby's eyes makes father's eyes to freeze like ice\",\n", - " 'birth of demon or birth of god, but he must grow up with chosen blood',\n", - " 'òåïåðü ïðèíÿòü îáðÿä íàñòàëî âðåìÿ',\n", - " 'êàê äåëàëè îòöû òâîè',\n", - " 'ïðîéòè \"ïîñòðèã\" òû äîëæåí ñìåëî',\n", - " 'ñìîòðè , c êîíÿ íå óïàäè!',\n", - " 'the crowd hails the little king',\n", - " 'the steed was snorting beneath the prince',\n", - " 'forgotten sun brings back to us illumination',\n", - " 'and alexander revives lost hope of the nation',\n", - " 'have you enough strength to defeat the enemy horde?',\n", - " 'have you enough power to stay with the throne?',\n", - " 'awin iderghlen mouqel',\n", - " 'anwa inghen thamournik',\n", - " 'tezgid thaabat eddel',\n", - " 'itaabad fidissanik',\n", - " 'awin iderghlen mouqel',\n", - " 'anwa inghen thamournik',\n", - " 'tezgid thaabat eddel',\n", - " 'itaabad fidissanik',\n", - " 'nougad assif adihmel',\n", - " 'nougad assif adihmel',\n", - " 'adiqlaa dizouranik',\n", - " 'adellel el maana bwawal',\n", - " 'izdegh imdanen marra',\n", - " 'ghass kan adenssawal',\n", - " 'yiwouen ough degh desslala',\n", - " 'adellel el maana bwawal',\n", - " 'izdegh imdanen marra',\n", - " 'ghass kan adenssawal',\n", - " 'yiwouen ough degh desslala',\n", - " 'nougad aghifath el hal',\n", - " 'nougad aghifath el hal',\n", - " 'agh touir thagara',\n", - " \"ach'hal idemineqal\",\n", - " \"ar'assa ourenvan ala\",\n", - " 'dyiwouth tebni tsrouhen',\n", - " 'lather ouriven ala',\n", - " \"ach'hal idemineqal\",\n", - " \"ar'assa ourenvan ala\",\n", - " 'dyiwouth tebni tsrouhen',\n", - " 'lather ouriven ala',\n", - " 'adnoukni outsmeslayen',\n", - " 'adnoukni outsmeslayen',\n", - " 'adentass oudnouk ala',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, this feeling',\n", - " 'this feeling, this feeling, ooh',\n", - " 'this feeling, this feeling',\n", - " 'this feeling, this feeling, ooh',\n", - " 'this feeling, this feeling',\n", - " 'this feeling, this feeling, ooh',\n", - " 'this feeling, this feeling',\n", - " 'this feeling, this feeling, ooh',\n", - " 'this feeling, this feeling, ooh',\n", - " 'this feeling, this feeling, ooh',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, this feeling',\n", - " 'this feeling, this feeling, ooh',\n", - " 'this feeling, this feeling',\n", - " 'this feeling, this feeling, ooh',\n", - " 'this feeling, this feeling',\n", - " 'this feeling, this feeling, ooh',\n", - " 'this feeling, this feeling',\n", - " 'this feeling, this feeling, ooh',\n", - " 'this feeling, this feeling, ooh',\n", - " 'this feeling, this feeling, ooh',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " \"i won't ever lose this feeling\",\n", - " 'this feeling, ooh this feeling',\n", - " 'this feeling, ooh this feeling',\n", - " 'anol shedom',\n", - " 'anol sheh lay konnah de veh-um',\n", - " 'flavum',\n", - " 'nohm de leesh',\n", - " 'ham de nah-um das',\n", - " 'la-um de',\n", - " 'flavne',\n", - " 'we de-zeh zuh beh',\n", - " 'we-ee-zooo a reh',\n", - " 'un va-a pesh al bay',\n", - " 'un vi-a beh',\n", - " 'un da-a pech ni sal',\n", - " 'ee di-lay na day',\n", - " 'un ma-a pech al nay',\n", - " 'mee-e-uh deh',\n", - " 'la la da pa du le na da na',\n", - " 've va da pa do le na da dumda',\n", - " 'la la da pa du le na da na',\n", - " 've va da pa do le na da dumda',\n", - " 'la la da pa du le na da na',\n", - " 've va da pa do le na da dumda',\n", - " 'la la da pa du le na da na',\n", - " 've va da pa do le na da dumda',\n", - " 'anol shedrom',\n", - " 'anol sheh lay konnah de veh-um',\n", - " 'flavum',\n", - " 'flavum',\n", - " 'm-ai shondol-lee',\n", - " 'flavnof',\n", - " 'flof flehsh lam',\n", - " 'flof lenom',\n", - " 'de lice',\n", - " 'ha le noh-um dass',\n", - " 'la-um dе',\n", - " 'flavnee',\n", - " 'flay',\n", - " 'shom de nomm',\n", - " 'ma-un des',\n", - " 'dwondi',\n", - " 'dwondi',\n", - " 'alah shadam du-nahkos',\n", - " 'shaley koo-tum',\n", - " 'woah-woah-woah-woah-woah',\n", - " 'i’m in love with',\n", - " 'woah-woah-woah',\n", - " 'woah-woah-woah-woah-woah',\n", - " 'i’m in love with juda-as, juda-as',\n", - " 'ah-ah, ah-ah-ah-ah, ah-ah, ah-ah-ah-ah',\n", - " 'judas is the demon i cling to',\n", - " 'ah-ah, ah-ah-ah-ah, ah-ah, ah-ah-ah-ah',\n", - " 'i wanna love you',\n", - " 'ah-ah, ah-ah-ah-ah, ah-ah, ah-ah-ah-ah',\n", - " 'judas is the demon i cling to',\n", - " 'i wanna love you',\n", - " 'jesus is my virtue',\n", - " 'i wanna love you',\n", - " 'judas is the demon i cling to',\n", - " 'i cling to',\n", - " 'i cling to',\n", - " 'i cling to',\n", - " 'i cling to',\n", - " 'a diala ayé aman dia ayé',\n", - " 'ana café ni-san',\n", - " 'a diala ayé aman dia ayé',\n", - " 'ana cacao ni-san',\n", - " 'sênein kêlahou ténan',\n", - " 'café sênein gbanzan',\n", - " 'sênein kêlahou ténan',\n", - " 'cacao sênein gbanzan',\n", - " 'oténan sêguê gbanzan',\n", - " 'oténan sêguê gbazan, oh',\n", - " 'neinnin kafri bé ahougnin',\n", - " 'neinnin kafri bé ahougnin',\n", - " 'massouba neinnin',\n", - " 'abénan café ni-san',\n", - " 'abénan chocolat san',\n", - " 'cacao san dê',\n", - " 'a san café ni san',\n", - " 'a san chocolat san',\n", - " 'a san café ni san',\n", - " 'a san cacao san',\n", - " 'buy it, buy my coffee now',\n", - " 'buy it, buy my cocoa now',\n", - " 'a diala ayé ama dia ayé',\n", - " 'ana café ni san',\n", - " 'adiala ayé ama dia ayé',\n", - " 'ana cacao ni san',\n", - " 'sênin kêlahou ténan café sênin gbanzan',\n", - " 'sênin kêlahou ténan cacao sênin gbanzan',\n", - " 'oténan sêguê gbanzan',\n", - " 'oténan sêguê gbanzan',\n", - " 'oh ah oh ah',\n", - " 'nana nana na yea yeah',\n", - " 'oh ah yea yea',\n", - " \"killbeatz let's go\",\n", - " 'oh ah ah',\n", - " 'oooh yeah',\n", - " 'king king promise',\n", - " 'baby girl',\n", - " 'oh yeah oh yeah',\n", - " 'that thing you dey do wey dey make me say',\n", - " 'oh yeah oh yeah',\n", - " 'that thing you dey do dey make me craze',\n", - " 'fa mame fa kyɛ me',\n", - " 'that thing you dey do dey make me craze',\n", - " 'oh yeah fa mame',\n", - " 'that thing you dey do (x2)',\n", - " 'ohema bra me kyɛn, bra me kyɛn',\n", - " 'meheema bra me kyɛn',\n", - " 'come make i put this thing on you',\n", - " 'oh yeah oh yeah',\n", - " 'make i tell you some story',\n", - " 'girl you are the one for me',\n", - " 'i dey your side day and night',\n", - " 'anytime wey you want me',\n", - " 'make i tell you some story ooo',\n", - " 'girl say na you the one for me',\n", - " 'i dey your side day and night',\n", - " 'anytime wey you want me',\n", - " 'aaaah just the things you do',\n", - " 'just the things you do',\n", - " 'wey dey blow my mind',\n", - " 'i just wanna hold you tight',\n", - " 'and baby just wanna look at you',\n", - " 'just wanna look at you',\n", - " 'wey dey blow my mind',\n", - " 'baby you are too fine yeee',\n", - " 'oh yeah oh yeah',\n", - " 'that thing you dey do wey dey make me say',\n", - " 'oh yeah oh yeah',\n", - " 'that thing you dey do dey make me craze',\n", - " 'fa mame fa kyɛ me',\n", - " 'that thing you dey do dey make me craze',\n", - " 'oh yeah fa mame',\n", - " 'that thing you dey do (x2)',\n", - " 'ohema bra me kyɛn, bra me kyɛn',\n", - " 'meheema bra me kyɛn',\n", - " 'come make i put this thing on you',\n", - " 'no hewɔ ikɛbo baya, ikɛbo baya',\n", - " 'bo gyi moni ikɛbo baya',\n", - " 'hɛwɔ ni ikɛ kaaa kwɛ moko,moko',\n", - " 'ikɛ kaaa',\n", - " 'moko,moko',\n", - " 'moko eee,yoo eee',\n", - " 'baby kaaa kwɛ moko,moko',\n", - " 'me and you forever go dey',\n", - " 'forever go dey ooooo eeee (2x)',\n", - " 'oh yeah oh yeah',\n", - " 'that thing you dey do wey dey make me say',\n", - " 'oh yeah oh yeah',\n", - " 'that thing you dey do dey make me craze',\n", - " 'fa mame fa kyɛ me',\n", - " 'that thing you dey do dey make me craze',\n", - " 'oh yeah fa mame',\n", - " 'that thing you dey do (x2)',\n", - " 'ohema bra me kyɛn, bra me kyɛn',\n", - " 'meheema bra me kyɛn',\n", - " 'come make i put this thing on you',\n", - " 'no hewɔ ikɛbo baya, ikɛbo baya',\n", - " 'bo gyi moni ikɛbo baya',\n", - " 'hɛwɔ ni ikɛ kaaa kwɛ moko,moko',\n", - " 'ikɛ kaaa',\n", - " 'moko,moko',\n", - " 'moko eee,yoo eee',\n", - " 'baby kaaa kwɛ moko,moko',\n", - " 'me and you forever go dey',\n", - " 'forever go dey ooooo eeee (x4)',\n", - " '위 아래 위 위 아래',\n", - " '위 아래 위 위 아래',\n", - " '위 아래 위 위 아래',\n", - " 'up, up, up, up up up',\n", - " '위 아래 위 위 아래',\n", - " '위 아래 위 위 아래',\n", - " '위 아래 위 위 아래',\n", - " 'down, down, down, d-down, down, down',\n", - " '난 몰라 순진한 척 하는 네 동공',\n", - " '날 네 맘대로 들었다가는 놓고',\n", - " 'then i feel loco, oh-oh',\n", - " '날 미치게 만들어 강제탑승한',\n", - " \"roller co-coaster, you're su-such a monster\",\n", - " '(such a monster, such a monster)',\n", - " '(hey, baby boy)',\n", - " '听不听不听不懂你在说什么',\n", - " '(hey, baby boy)',\n", - " '猜不猜不猜不透你在说什么',\n", - " '就这样吻着我不要离开我 (넌 넌 왜 왜)',\n", - " '让我在你耳边说 (넌 넌 왜 왜)',\n", - " '위 아래 위 위 아래',\n", - " '在这里就对你说出我的爱',\n", - " \"why don't you know, don't you know, don't you know\",\n", - " '忘记她会给你多少的忧愁',\n", - " \"why don't you know, don't you know, don't you know, yeah\",\n", - " '위 아래 위 위 아래',\n", - " '위 아래 위 위 아래',\n", - " '위 아래 위 위 아래',\n", - " 'up, up, up, d-down, down',\n", - " '我像 没了主张',\n", - " '有了你的我还要什么',\n", - " '不离去 我不离去',\n", - " 'never never never never',\n", - " '不倔强 我不倔强',\n", - " '我什么都不会再去想',\n", - " '没力气 我没力气',\n", - " 'tender tender tender tender',\n", - " '(hey, baby boy)',\n", - " '听不听不听不懂你在说什么',\n", - " '(hey, baby boy)',\n", - " '猜不猜不猜不透你在说什么',\n", - " '就这样吻着我不要离开我 (넌 넌 왜 왜)',\n", - " '让我在你耳边说 (넌 넌 왜 왜)',\n", - " '위 아래 위 위 아래',\n", - " '在这里就对你说出我的爱',\n", - " \"why don't you know, don't you know, don't you know\",\n", - " '忘记她会给你多少的忧愁',\n", - " \"why don't you know, don't you know, don't you know, yeah\",\n", - " 'just do what you wanna, do what you wanna',\n", - " '약올리지 말고 내게 확신을 줘넌',\n", - " '쓸데없는 말은 불필요해 필요해',\n", - " '장난아닌 진심 날 선택의 기로에',\n", - " '서게하지마 날 눈물 젖게 하지마',\n", - " '계속 위 아래 위 위 아래 (oh oh)',\n", - " '위 아래 위 위 아래 (no no no, no)',\n", - " '在这里就对你说出我的爱 (ah, oh no)',\n", - " \"why don't you know, don't you know, don't you know (no, no, no, yeah)\",\n", - " '忘记她会给你多少的忧愁',\n", - " \"why don't you know, don't you know, don't you know, yeah\",\n", - " '위 아래 위 위 아래',\n", - " '위 아래 위 위 아래',\n", - " '위 아래 위 위 아래',\n", - " 'up, up, up, up up up',\n", - " '위 아래 위 위 아래',\n", - " '위 아래 위 위 아래',\n", - " '위 아래 위 위 아래',\n", - " 'pinyin/romanized',\n", - " 'wi arae, wi-wi arae',\n", - " 'wi arae, wi-wi arae',\n", - " 'wi arae, wi-wi arae',\n", - " 'up, up, up, up up up',\n", - " 'wi arae, wi-wi arae',\n", - " 'wi arae, wi-wi arae',\n", - " 'wi arae, wi-wi arae',\n", - " 'down, down, down, d-down, down down',\n", - " 'nan molla sunjinhan cheok haneun ne donggong',\n", - " 'nal ne mamdaero deureotdaganeun noko',\n", - " 'then i feel loco, oh-oh',\n", - " 'nal michige mandeureo gangjetapseunghan',\n", - " \"roller co-coaster, you're su-such a monster\",\n", - " '(such a monster, such a monster)',\n", - " '(hey, baby boy)',\n", - " 'tīng bù tīng bù tīng bù dǒng nǐ zài shuō shénme',\n", - " '(hey, baby boy)',\n", - " 'cāi bù cāi bù cāi bù tòu nǐ zài shuō shénme',\n", - " 'jiù zhèyàng wěnzhe wǒ bùyào líkāi wǒ (neon neon wae wae)',\n", - " 'ràng wǒ zài nǐ ěr biān shuō (neon neon wae wae)',\n", - " 'wi arae, wi-wi arae',\n", - " 'zài zhèlǐ jiù duì nǐ shuō chū wǒ de ài',\n", - " 'why don’t you know, don’t you know, don’t you know',\n", - " 'wàngjì tā huì gěi nǐ duōshǎo de yōuchóu',\n", - " 'why don’t you know, don’t you know, don’t you know, yeah',\n", - " 'wi arae, wi-wi arae',\n", - " 'wi arae, wi-wi arae',\n", - " 'wi arae, wi-wi arae',\n", - " 'up, up, up, d-down, down',\n", - " 'wǒ xiàng méiliǎo zhǔzhāng',\n", - " 'yǒule nǐ de wǒ hái yào shénme',\n", - " 'bùlí qù wǒ bùlí qù',\n", - " 'never never never never',\n", - " 'bù juéjiàng wǒ bù juéjiàng',\n", - " 'wǒ shénme dōu bù huì zài qù xiǎng',\n", - " 'méi lìqì wǒ méi lìqì',\n", - " 'tender tender tender tender',\n", - " '(hey, baby boy)',\n", - " 'tīng bù tīng bù tīng bù dǒng nǐ zài shuō shénme',\n", - " '(hey, baby boy)',\n", - " 'cāi bù cāi bù cāi bù tòu nǐ zài shuō shénme',\n", - " 'jiù zhèyàng wěnzhe wǒ bùyào líkāi wǒ (neon neon wae wae)',\n", - " 'ràng wǒ zài nǐ ěr biān shuō (neon neon wae wae)',\n", - " 'wi arae, wi-wi arae',\n", - " 'zài zhèlǐ jiù duì nǐ shuō chū wǒ de ài',\n", - " 'why don’t you know, don’t you know, don’t you know',\n", - " 'wàngjì tā huì gěi nǐ duōshǎo de yōuchóu',\n", - " 'why don’t you know, don’t you know, don’t you know, yeah',\n", - " 'just do what you wanna, do what you wanna',\n", - " 'yagolliji malgo naege hwaksineul jwoneon',\n", - " 'sseuldeeomneun mareun bulpillyohae, pillyohae',\n", - " 'jangnananin jinsim nal seontaegui giroe',\n", - " 'seogehajima, nal nunmul jeotge hajima',\n", - " 'gyesok wi arae, wi-wi arae (oh oh)',\n", - " 'wi arae, wi-wi arae (no no no, no)',\n", - " 'zài zhèlǐ jiù duì nǐ shuō chū wǒ de ài (ah, oh no)',\n", - " 'why don’t you know, don’t you know, don’t you know (no, no, no, yeah)',\n", - " 'wàngjì tā huì gěi nǐ duōshǎo de yōuchóu',\n", - " 'why don’t you know, don’t you know, don’t you know, yeah',\n", - " 'wi arae, wi-wi arae',\n", - " 'wi arae, wi-wi arae',\n", - " 'wi arae, wi-wi arae',\n", - " 'up, up, up, up up up',\n", - " 'wi arae, wi-wi arae',\n", - " 'wi arae, wi-wi arae',\n", - " 'wi arae, wi-wi arae',\n", - " \"sunayo, su', su', sunayo\",\n", - " \"sunayo, su', su', sunayo\",\n", - " \"sunayo, su', su', sunayo\",\n", - " \"sunayo, su', su', sunayo\",\n", - " \"sunayo, su', su', sunayo\",\n", - " \"sunayo, su', su', sunayo\",\n", - " \"sunayo, su', su', sunayo\",\n", - " \"sunayo, su', su', sunayo\",\n", - " \"sunayo, su', su', sunayo\",\n", - " \"sunayo, su', su', sunayo\",\n", - " 'a racomoder sunayo, a racomoder sunayo (x3)',\n", - " 'a racomoder sunayo x3',\n", - " 'a racomoder sunayo x3',\n", - " 'guccima pona yo',\n", - " 'capitano tu connais',\n", - " 'mama mama mama katapata mama',\n", - " 'dénatora griiche (wai wai)',\n", - " 'dénatora dénatora',\n", - " \"hibobo hibébobo d'assau hibobo dénatora hibobo hibobo\",\n", - " 'dii cii baby na komona yé té',\n", - " 'she like dii cii baby she like',\n", - " 'mama ha she like',\n", - " 'jb wizzy still to iiz',\n", - " 'pololo aller dougie dougie dougie',\n", - " 'ha dougie dougie dougie',\n", - " 'ha dougie dougie dougie',\n", - " 'dougie dougie',\n", - " 'hipopo décalé style hipopo tout le monde héé hipopo hipopo... sunayo',\n", - " 'bks style',\n", - " 'korean (original)',\n", - " '오늘의 넌',\n", - " '너무 지쳐 보여',\n", - " '이대로는',\n", - " '안될 것만 같아',\n", - " '따라와봐',\n", - " '내가 데려 갈게',\n", - " '내 손잡고 놓지 말아줘',\n", - " \"let's have a good time\",\n", - " 'uh oh - oh oh',\n", - " 'have a good time',\n", - " 'uh oh - oh oh',\n", - " '너무 깊게 생각하지 마',\n", - " '우리의 paradise',\n", - " '이렇게 party tonight',\n", - " 'play that song',\n", - " '파티를 시작해',\n", - " \"like it's saturday night\",\n", - " '해보는 거야',\n", - " \"don't stop\",\n", - " '이 밤이 끝나버리지 않도록',\n", - " 'just lose all control',\n", - " 'oh oh oh~',\n", - " 'i surrender my',\n", - " 'i surrender my heart',\n", - " 'i surrender my',\n", - " '오늘 밤은',\n", - " '집에만 있지 마',\n", - " '내일이면',\n", - " '후회할지 몰라',\n", - " '이제 그만',\n", - " ...]},\n", - " 'data': ['\"õìåëüíà äëÿ íèõ ñëàâÿíîâ êðîâü, íî òÿæêî áóäåò èõ ïîõìåëüå\"',\n", - " 'bonfires glow in the darkness of the rival hosts',\n", - " 'the shadows of soldiers waved like ghosts',\n", - " \"the breath of spring, the weather's kindness\",\n", - " 'light crunch of melted ice broke the silence',\n", - " 'both banks had a foretaste of morning battle',\n", - " \"em's, liv's, chud's camps was also on the germans side\",\n", - " 'by force they were baptized from hands of crusaders',\n", - " 'enemy coast like a burning ant hill in the night',\n", - " 'the shine of the northern star which flashes like the eye of the devil',\n", - " 'becomes a sign to start the fight with the force of evil',\n", - " 'at that time a group of fishermen came to alexander',\n", - " 'with glistening axes and near by walked a gray-eyed',\n", - " 'foreigner with big moustache. fishermen said they found',\n", - " 'him half-frozen, brought him to their camp and warmed him up',\n", - " 'he ran away from the knights',\n", - " '\"why did you run from the germans?\" - asks king stranger',\n", - " '\"wolves are they, not humans\" - said the man with a big moustache',\n", - " '\"let me fight with you against knights\" - asked the stranger -',\n", - " '\"to pay for my insults\"',\n", - " 'alexander nods assent',\n", - " '\"cross yourself\". moustache-man crossed himself three times from left',\n", - " 'shoulder to right',\n", - " '\"he crosses himself not by our way\" - noticed the fisherman',\n", - " '\"never mind. if only he fights by our way, but god is one and the truth is one!\"',\n", - " '\"great, you stay and fight with us\", said alexander',\n", - " '\"thanks, i\\'ll do my best to get a good name\" - answers the stranger',\n", - " \"look, what is that twinkle on the other side of the lake, it's a signal, isn't it?\",\n", - " \"that's right, the ice is floating!\",\n", - " 'íà âåëèêîé ðåêå òðîíóëñÿ ëåä âäàëåêå',\n", - " 'à ïî îçåðó íàøè âîéñêà ïîéäóò ëåãêå',\n", - " 'íà ñåðåäèíó îçåðà èõ íàäî íàì çàìàíèòü',\n", - " 'òàì è áóäåò ðåêà ñ æåëåçîì èõ õîðîíèòü',\n", - " \"rise of the sun, thunder of horse's hoofs, heralding the start of battle\",\n", - " \"through morning haze, knight's armor blazes\",\n", - " 'exhale drunken mist in russian troopers heads',\n", - " 'the ranks of mounted livons with giant pikes in iron hands',\n", - " \"the pig's snout sticks in the human swamp\",\n", - " 'snow and blood mix in to one',\n", - " 'forces of good hold the onset of the wedge',\n", - " 'cries of dying men and horses reached the skies',\n", - " 'the germans were trapped, no way to run',\n", - " \"the russian pincers are shut, the way to the crusader's victory was cut\",\n", - " 'new russian hosts from left and right strike the wedge',\n", - " 'encircled knights fall in to dread and lose their courage',\n", - " \"they start to retreat, but the lake can't bear the weight of the knights\",\n", - " 'the ice cracks and the waters gobble the soldiers up. the lakes waters will be red tonight',\n", - " 'anol shedom',\n", - " 'anol sheh lay konnah de veh-um (shaddai)',\n", - " 'flavum',\n", - " 'nohm de leesh',\n", - " 'ham de nah-um das',\n", - " 'la-um de',\n", - " 'flavne',\n", - " 'we de-zeh zuh beh',\n", - " 'we-ee-zooo a reh',\n", - " 'un va-a pesh al bay',\n", - " 'un vi-a beh',\n", - " 'un da-a pech ni sal',\n", - " '(aaahh)',\n", - " 'ee di-lay na day',\n", - " 'un ma-a pech al nay',\n", - " 'mee-e-uh deh',\n", - " 'la la da pa du le na da na',\n", - " 've va da pa do le na da dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'anol shedom',\n", - " 'anol sheh lay konnah de veh-um',\n", - " 'flavum',\n", - " 'flavum',\n", - " 'm-ai shondol-lee',\n", - " 'flav- (live on…)',\n", - " '-nof flof flehsh lam',\n", - " 'flof le-',\n", - " '-nom de lice',\n", - " 'ha le noh-um dass',\n", - " 'la-um de',\n", - " 'flavnee',\n", - " 'flay',\n", - " 'shom de nomm',\n", - " 'ma-un des',\n", - " 'dwondi',\n", - " 'dwwoondi',\n", - " 'alah shadam du-nahkos',\n", - " 'shaley koo-tum',\n", - " 'nasta! riva!',\n", - " 'heire! terakonide!',\n", - " 'dibon! taimaska!',\n", - " 'stimi! wiraonnyasa!',\n", - " '(scatting)',\n", - " 'nasta! riva!',\n", - " 'heire! terakonide!',\n", - " 'dibon! taimaska!',\n", - " 'riva!',\n", - " 'raizonnei, nyurazastei',\n", - " 'dismisaidon, gyaro, gyaro',\n", - " 'wastireimyun minakeijyun',\n", - " 'kozozawaden joriruni',\n", - " 'raizonnei, nyurazastei',\n", - " 'dismisaidon, gyaro, gyaro',\n", - " 'wastireimyun minakeijyun',\n", - " 'tojyuranahabete zeriru bitinnu, woah',\n", - " 'heinasa! dyuwatsa! zeimina!',\n", - " 'saponnyaro!',\n", - " 'kanfide! stapinize! yodontorize!',\n", - " 'bitinnu, woah',\n", - " 'come inside',\n", - " 'my dreams are thine',\n", - " 'and flow inside',\n", - " 'my womb is thine...',\n", - " 'you come from unknown planets',\n", - " 'bringing deadly sonnets',\n", - " 'messenger of fear',\n", - " 'god and death are here',\n", - " 'children born by cosmic madness',\n", - " 'mutant creatures bound to sadness',\n", - " 'horror shows are here performed',\n", - " 'monsters - human flesh deformed',\n", - " 'dark the light',\n", - " 'that feels my eyes',\n", - " 'and dark the night:',\n", - " \"the moon won't rise...\",\n", - " '\"i am in thee to save thee, as my soul in thee saith;',\n", - " 'give thou as i gave thee, thy life-blood and breath',\n", - " 'green leaves of thy labour, white flowers of thy thought',\n", - " 'and red fruit of thy death',\n", - " 'be the ways of thy giving, as mine were to thee;',\n", - " 'the free life of thy living, be the gift of it free;',\n", - " 'not as servant to lord, nor, as master to slave',\n", - " 'shalt thou give thee to me.\"',\n", - " 'grigie emozioni celesti',\n", - " 'scorrono dentro me mille voci bianche',\n", - " 'vibrano intorno a me in cerca di una rima',\n", - " 'dolce musica che dura un istante',\n", - " 'vita senza un perchè, sola piû di prima',\n", - " 'þàáöäåôãõèéêëìíîïßðñòóæâüûçøýù×ú',\n", - " 'nascono come noi, grandi gli occhi neri',\n", - " 'amano se lo vuoi, vita del mio ventre',\n", - " 'sognano come noi, vedono i pensieri',\n", - " 'da un mondo dove non õ, chi non õ per sempre',\n", - " 'my child...',\n", - " '...unearthly',\n", - " 'grey, pale essence is falling to pieces in front of my',\n", - " 'eyes',\n", - " 'the majestic trees uncovering their bodies',\n", - " 'stretching hands towards the merciless sky of dark',\n", - " 'òàì âúâ ìðàêà ãàðâàíè ÷åðíè',\n", - " 'øåìåòíî êðúæàõà â íàäãðîáåí îáðåä...',\n", - " '/there in the dark are flying black crows',\n", - " 'performing heady funeral ritual/',\n", - " 'spells uproar deadly silence',\n", - " 'wind is dancing alone in the tangle of woods',\n", - " 'withered flowers whisper my name, whisper my name...',\n", - " 'ìîëÿò çà æèâîò, ïëà÷àò, íå çíàÿò',\n", - " '×å âúâ ÷åðíî ñà òîëêîç êðàñèâè...',\n", - " \"/praying for life, moaning but they don't know\",\n", - " 'how beautiful they are in these black garments/',\n", - " 'the sun has just gone down the silent calm lake',\n", - " 'and the dark called for the mournful moon',\n", - " 'my heart is bound in melancholy forever lost in the',\n", - " 'wood',\n", - " 'within the deserted gloomy soul of fall',\n", - " \"la ca sla colin-a l'é bela\",\n", - " 'maria la varda peui dis :',\n", - " 'am piasrìa podèj catèla',\n", - " \"sarìa 'l mè paradis!\",\n", - " \"l'é bianca la ca sla colin-a\",\n", - " \"l'é bianca come 'n linseul\",\n", - " \"s'it la varde a smija ch'a grigna\",\n", - " \"l'é pròpi la ca che a veul\",\n", - " \"l'é gròssa la ca sla colin-a\",\n", - " 'tante stansie con finestre e pogieuj',\n", - " 'starìo pròpi bin là ansima',\n", - " 'mi, mè òm e ij mè fieuj',\n", - " \"mè pare fasìa 'l murador\",\n", - " \"l'é mòrt ancora spòrch ëd càussin-a\",\n", - " \"l'ha fala chiel la ca sla colin-a\",\n", - " \"l'ha fala për quatr ësgnor\",\n", - " \"e lor a ven-o d'istà\",\n", - " 'stan mach doi mèis peui van via',\n", - " \"la ten-o mach basta ch'a sìa\",\n", - " 'e mi a son sensa ca',\n", - " \"la ca sla colin-a l'é bela\",\n", - " 'maria la varda peu dis :',\n", - " 'mi podreu mai catèla',\n", - " 'për ij pòver a-i-é nen paradis!',\n", - " 'a la desterà al veint',\n", - " 'con un colp al persian',\n", - " \"l'è acsè lèrgh al sòo let\",\n", - " 'e i linzòo fradd e grand',\n", - " \"tòt dò i oc' mez e srèe\",\n", - " \"zercherà n'ètra man\",\n", - " 'sèinza catèr nisun',\n", - " 'come aièr, come edman',\n", - " 'al so stèr da per lèe',\n", - " \"l'è un sò amigh da tant'an\",\n", - " \"ch'a l' ch'gnass tòtt i sòo quèl\",\n", - " 'fin al pighi dla man;',\n", - " 'la scultarà al gnulèr',\n", - " \"d'un gat vec' e castrèe\",\n", - " \"ch'a gh' dòrm inzèmma a i znoc\",\n", - " \"d'invèren tòtt al dè\",\n", - " 'un breviari apugièe',\n", - " 'in vatta a la tulatta',\n", - " \"e un gaz d'acqua trincèe\",\n", - " \"quand a s'lèva la żiatta\",\n", - " \"un spec' vec' e incrinèe\",\n", - " \"a gh'arcurdarà pian\",\n", - " \"come al tiemp l'è pasèe\",\n", - " 'come in vulèe via i an',\n", - " \"e gl'insaggni dl'etèe\",\n", - " \"per al stridi i s' sèn pèrs\",\n", - " \"quanti rughi ch'a gh'è\",\n", - " \"e i oc' come i èn divèrs\",\n", - " \"l'a gh' butarà un suris\",\n", - " \"la purtinèra ed ca'\",\n", - " \"per l'urgói cg' a gh'la lèe\",\n", - " \"perché a gh' fa bèin i fat;\",\n", - " \"tòtt i dè fèr l'istass\",\n", - " 'ciapèr al filibùs',\n", - " 'per badèr ai tragatt',\n", - " \"d'un avuchèe nèe stóff\",\n", - " 'cun al quèl an andrèe',\n", - " 'l\\'aviva fat la \"stratta\"',\n", - " \"ma tant tèimp l'è pasèe\",\n", - " \"ch'a n s'arcorda la żiatta\",\n", - " \"lèe ch'l'ha sèimpr in piò un piat\",\n", - " 'quand ariva nadèl',\n", - " \"lèe ch'la 'n vòl mai nisun\",\n", - " \"se un dè, a chès, l'a s' sèint mèl\",\n", - " \"lèe ch'l'a 'n gh'ha gnanca un fióo\",\n", - " 'sol quall ed sóo fradel',\n", - " 'lèe ch\\'l dis: \"l\\'a \\'n va mel!\"',\n", - " 'ch\\'l\\'a dis: \"a fagh tant bè!\"',\n", - " 'e la dmanga del pèlmi',\n", - " 'la cumprarà a sòo anvod',\n", - " \"un bel ram longh d'uliv\",\n", - " 'e un pèr ed calzatt nóv',\n", - " \"e po' in cesa tótt dóo\",\n", - " 'i faran come al pret',\n", - " 'e i pregherai gesó',\n", - " \"ch'a l'va a gerusalem;\",\n", - " \"po' a gh' darà soquant franch\",\n", - " \"de mattr'ind 'na casatta\",\n", - " \"perché a s' dèv risparmièr\",\n", - " 'com la fa lèe, żiatta',\n", - " \"e un dè a s'gh'ha da murir\",\n", - " \"com' piò o meno i fan tótt\",\n", - " \"cun 'na frèva da gnint\",\n", - " \"l'andrà in cal póst tant brótt;\",\n", - " \"l'avrà bele paghe\",\n", - " \"un prèt ch'a s'sèint a póst\",\n", - " 'la casa, al funerèl',\n", - " 'e la massa di mort',\n", - " \"e i fior ch'i andrai andrèe\",\n", - " 'al sóo trèst suplimèint',\n", - " 'i èn cal cosi che pass',\n", - " \"a l' se scorda la zèint;\",\n", - " \"a gh' resterà po' i fior\",\n", - " 'e i drap negher e zal',\n", - " \"e dedrèe un vec' amigh\",\n", - " 'scuvèrt un mumèint fa',\n", - " \"e un santèin a l' dirà\",\n", - " \"ch'l'è morta n'ètra sciatta;\",\n", - " \"ch'l'arpóunsa in pès, amen\",\n", - " 'e scurdaramm la żiatta',\n", - " 'ningen sabê ken k rosa é',\n", - " 'nen un amig, ningen konxê-l',\n", - " 'se olhar vaziu ten tónt segred',\n", - " \"n t'oiá-l tud dia ta pasá\",\n", - " \"dond'é k-el ben pond'é k-el bai\",\n", - " 'sen un surriz pa konsolá-l',\n", - " \"t'andá pa kónt el é deskunfiód\",\n", - " 'txeu ves el ta falá el-só',\n", - " 'el ten un koza diferent',\n", - " 'rosa ben, ben vivê…',\n", - " 'rosa ben, ben vivê…',\n", - " 'na se andar n ta duvinhá',\n", - " 'k na fantazia el ta vivê',\n", - " 'i la ses med ta abrí en flor',\n", - " 'tónt ves un kis pegá-l na mon',\n", - " 'i dze-l kma vida ten valor',\n", - " 'má tenp korré ladera bóx',\n", - " 'i un dia rosa ka parsê',\n", - " \"sónbra d'triztéza invadí nha kamin\",\n", - " 'nunka mas ningen sub d-el',\n", - " 'i se olhar vivê na mi',\n", - " 'rosa ben, ben vivê…',\n", - " 'rosa ben, ben vivê…',\n", - " '(x2)',\n", - " 'amarisi amari',\n", - " 'amari chini borie',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " 'amarisi amari',\n", - " 'amari chini borie',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " 'amarisi amari',\n", - " 'amari chini borie',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " 'dooi dooi desha dooi',\n", - " 'tumidou meh lako mui',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " 'dooi dooi desha dooi',\n", - " 'tumidou meh lako mui',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " 'lako musi rupona',\n", - " 'pushka trubula dinow',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " 'lako musi rupona',\n", - " 'pushka trubula dinow',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " 'kelen savoraleh\\xaddrom',\n", - " 'te kelai la puroh rom',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " 'kelen savoraleh\\xaddrom',\n", - " 'te kelai la puroh rom',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " 'puroh rom te kelelah',\n", - " 'bistayeh je malav\\xadya',\n", - " 'ai, lalala lay lay lay, laylay',\n", - " 'puroh rom te kelelah',\n", - " 'bistayeh je malav\\xadya',\n", - " 'ai, lalala lay lay lay, laylay',\n", - " 'hoy ! te meraoo',\n", - " 'tena chachi paw phenow',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " 'hoy ! te meraoo',\n", - " 'tena chachi paw phenow',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " '(x2)',\n", - " 'amarisi amari',\n", - " 'amari chini borie',\n", - " 'ai, lalala lay lay lay lay lay\\xadlay',\n", - " 'no~ no',\n", - " 'urin cheoeume yeonghwa soge naoneun',\n", - " 'geureon saranghaesseotji',\n", - " 'geunde hangsang jaldweneun geot gateunte',\n", - " 'wae iri geureohke kko ineunji',\n", - " 'jeomjeom nan sasohan ilkajigo ttajyeosseo',\n", - " 'deo jaju datugo maeil maeil ssaweosseo',\n", - " 'nado moreuge neol mireo nae',\n", - " 'wae urieui haengbokgwa gachi tteonaga (girl)',\n", - " \"i'm so sorry\",\n", - " 'jebal kajima ah ah ah ah',\n", - " 'modeun ge nae tashiya',\n", - " 'gochil tenikka dorawa ah ah ah ah baby',\n", - " 'nan neo eopshi andwae',\n", - " 'hangsang ni ape nan wae',\n", - " 'ireohke sarange ppajin baboga dweneunji',\n", - " 'nan neo hanteman yakhae',\n", - " 'nareul jom bwabwa nan neomu apa',\n", - " 'i am so hurt girl',\n", - " 'i need a doctor',\n", - " 'namja nikka nunmureul heulliji anha',\n", - " 'geuraedo jugeul geot gata',\n", - " 'nan neo eopshi andwae~',\n", - " 'no no no no no no~',\n", - " 'ooh~',\n", - " 'nan weonrae jabjido anhjiman',\n", - " 'neoreul nohchil su eopseo',\n", - " 'waenyamyeon neoneun nae jeonbugo',\n", - " 'neomu akkigo isseo',\n", - " 'urin ajikdo heuimangi boyeo',\n", - " 'ireohke kkajin hal piryon eopseo',\n", - " \"i'm so sorry\",\n", - " 'jebal kajima ah ah ah ah ah',\n", - " 'modeun ge nae tashiya',\n", - " 'gochil tenikka dorawa ah ah ah ah ah no',\n", - " 'nan neo eopshi andwae',\n", - " 'hangsang ni ape nan wae',\n", - " 'ireohke sarange ppajin baboga dweneunji',\n", - " 'nan neo hanteman yakhae',\n", - " 'nareul jom bwabwa nan neomu apa',\n", - " 'i am so hurt girl',\n", - " 'i need a doctor',\n", - " 'namja nikka nunmureul heulliji anha',\n", - " 'geuraedo jugeul geot gata',\n", - " 'nan neo eopshi andwae',\n", - " 'i need you girl stay by my side',\n", - " 'wanna be with you',\n", - " 'till the day we die',\n", - " 'nae gyeote isseojweo',\n", - " 'nan jeoltae nan jugeodo',\n", - " 'neol nohchil suga eopseo girl~',\n", - " 'yeojadeuri manhado nan neoman boyeo',\n", - " 'gaseum apeugo nunmuri goyeo',\n", - " 'tto heulliji mothae nae mami joyeo',\n", - " 'mom ane poktan nae sogi tejyeo boom',\n", - " 'tagyeogi kkeosseo niga bissado',\n", - " 'sarangeun gagyeogi eopseo',\n", - " 'check it na ireohke saenggakhae',\n", - " 'doneun eopseodo neomaneuro haengbokhae',\n", - " 'nahante jeori ga-ran sori hajima',\n", - " 'nae soneul tteonado',\n", - " 'yoyocheoreom dorawa',\n", - " 'nahante jeori ga-ran sori hajima',\n", - " 'nae soneul tteonado',\n", - " 'yoyocheoreom dorawa',\n", - " 'nan neo eopshi andwae',\n", - " 'hangsang ni ape nan wae',\n", - " 'ireohke sarange ppajin baboga dweneunji',\n", - " 'nan neohanteman yakhae',\n", - " 'nareul jom bwabwa nan neomu apa',\n", - " 'i am so hurt girl',\n", - " 'i need a doctor',\n", - " 'namja nikka nunmureul heulliji anha',\n", - " 'geuraedo jugeul geot gata',\n", - " 'nan neo eopshi andwae~ no no',\n", - " 'na hante dorawa girl',\n", - " 'baby just come back come back to me',\n", - " 'baby just come back come back to me',\n", - " 'son déri sang / mini sondé',\n", - " 'bika mi sanga / ga minitou / mi pa mi tcho andou mi pao yé',\n", - " 'son déri sang / minimi so bébi sondé..é',\n", - " 'bika misanga ganimitou / mi pa mi tcho andou mi pao yé',\n", - " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", - " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", - " 'we ya senga / has wéhé',\n", - " 'wanna wéndé lambo / hé hé hémentourek !',\n", - " 'hé hi yé yé yé (bis)',\n", - " 'son déri sang / hou hou hou hou hou / mini sondé',\n", - " 'bika mi sanga / ga minitou / mi pa mi tcho andou mi pao yé',\n", - " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", - " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", - " 'we ya senga wé / has wéhé',\n", - " 'wanna wéndé lambo / hé hé hémentourek !',\n", - " 'hé... hi yé yé yé',\n", - " 'né ma ka ni kaso',\n", - " 'né ma pa ni kaso / né ma pa sé pa',\n", - " 'né ma ka ni kaso / né ma pané ka',\n", - " 'né ma pa ni kaso / né ma pa sé pa',\n", - " 'né ma ka ni kaso / né ma pané ka',\n", - " 'né ma pa ni kaso / né ma pa sé pa',\n", - " 'né ma ka ni kaso / né ma pané ka',\n", - " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", - " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", - " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", - " 'alanné mba yi woma... wé / ho tou sondé / ho ma... yé',\n", - " 'we ya senga / has wéhé',\n", - " 'wanna wéndé lambo / yé yé yein',\n", - " 'we ya senga / has wéhé',\n", - " 'wanna wéndé lambo / hé hé hémentourek !',\n", - " 'né ma pa ni kaso / né ma pa sé pa',\n", - " 'né ma ka ni kaso / né ma pané ka',\n", - " 'né ma pa ni kaso / né ma pa sé pa',\n", - " 'né ma ka ni kaso / hé... hi yé yé yé',\n", - " 'uh, make me feel (-me feel)',\n", - " 'make me feel (uh, uh)',\n", - " 'feel',\n", - " 'oh',\n", - " 'uh, make me feel (uh, uh)',\n", - " 'feel',\n", - " 'make',\n", - " 'uh, make me feel (-me feel)',\n", - " 'uh, nake me feel (uh, uh)',\n", - " 'feel',\n", - " 'oh',\n", - " 'uh, make me feel (uh, uh)',\n", - " 'feel',\n", - " 'make',\n", - " 'you-you-you-you-you-you-you-you-you blew my miiinnnddd',\n", - " 'you blew my miiinnnddd',\n", - " \"i'm never gonna get to love you more as now\",\n", - " 'loving you',\n", - " 'is all i do',\n", - " 'loving you',\n", - " 'is all i do',\n", - " 'you blew my miiinnnddd',\n", - " 'you blew my miiinnnddd',\n", - " 'who can tell hore diwa kae',\n", - " 'follow me o tla utlwa monate',\n", - " 'one time, ga gona melao',\n", - " 'ke bone o, are o rata o',\n", - " 'one by one re shapa dipina',\n", - " 'two by two kare ro sekama kae',\n", - " 'two to nine ra di simolla',\n", - " \"12 o'clock ho cha snara le kota\",\n", - " \"don't talk, o senyana dipina\",\n", - " 'show me, hore o di lata jang',\n", - " 'jang kapa jang, tlabe rele teng',\n", - " \"i don't mind ho tshwara mona\",\n", - " 'just enjoy baby tsotlhe ditla loka',\n", - " 'o mpitse papa, ko bitse mama',\n", - " 'fa re fetsa ro feletsa kae?',\n", - " 'fa re fetsa o tsamaya le mang?',\n", - " 'fa re feta ro feletsa kae?',\n", - " 'fa re fetsa o tsamaya le mang?',\n", - " 'no no no no',\n", - " \"don't fight, le tlo re bora\",\n", - " 'e nwa jwala, tlohela polotiki',\n", - " \"don't stress, o re senyetsa monate\",\n", - " 'be free, o imixe le bana',\n", - " 'side to side, mepako ke e',\n", - " '2 by 2, ko dicorneng',\n", - " 'mr serious, band ke bale',\n", - " 'slow down, o tlabe wa re jesa',\n", - " 'fasa o, nna ke fase o',\n", - " 'jackpot, dilo diya itobetsa',\n", - " 'one by one, dj wa di chencha',\n", - " 'six to six, ya monate feela',\n", - " 'two by two , three is a crowd',\n", - " 'you must never say, hore wa tsamaya',\n", - " 'fa re fetsa ro feletsa kae?',\n", - " 'fa re fetsa ro o tsamaya le mang?',\n", - " 'fa re feta ro feletsa kae?',\n", - " 'fa re fetsa ro o tsamaya le mang?',\n", - " 'abuti weh, tlhobola di glass',\n", - " 'adawise, re tlo di thuba',\n", - " 'you can dance, mara ska etsa lerole',\n", - " 'tshwara mepako, letsatsantsa ke laka',\n", - " '6 by 6, ra di kometsa',\n", - " 'fa o ka latlha re tseya ngwana',\n", - " 'ausi weh, o itshwere ka mang?',\n", - " 'mphe di number ke u tshware ka moya',\n", - " 'next time ke nna le wena',\n", - " 'bona di key, dire tsela weh',\n", - " 'baby please ska mpoqa',\n", - " 'fa ele di drinks, ke tla u rekela',\n", - " 'bona ole, ba mo gana',\n", - " 'o ska tla mo, wa ntshenyetsa',\n", - " 'fa re fetsa ro feletsa kae?',\n", - " 'fa re fetsa o tsamaya le mang?',\n", - " 'fa re feta ro feletsa kae?',\n", - " 'fa re fetsa o tsamaya le mang?',\n", - " 'fa re feta ro feletsa kae?',\n", - " 'fa re fetsa o tsamaya le mang?',\n", - " 'fa re feta ro feletsa kae?',\n", - " 'fa re fetsa o tsamaya le mang?',\n", - " 'humanoid must not escape',\n", - " 'humanoid must not escape',\n", - " 'humanoid must not escape',\n", - " 'humanoid must not escape',\n", - " 'yeaahah',\n", - " 'yeaahah',\n", - " 'yeaahah',\n", - " 'yeaahah yeah yeaah',\n", - " 'yeaahah yeah yeaah',\n", - " 'yeaahah yeah yeaah',\n", - " 'yeaahah yeah yeaah',\n", - " 'yeaahah yeah yeaah',\n", - " 'yeaahah yeah yeaah',\n", - " 'yeaahah yeah yeaah',\n", - " 'yeaahah yeah yeaah',\n", - " 'humanoid must not escape',\n", - " 'yeaahah yeah yeaah',\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " \"let's fuck!\",\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " \"let's fuck!\",\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " 'hardcore yeaahah yeah',\n", - " 'humanoid must not escape',\n", - " 'humanoid must not escape',\n", - " 'hardcore yeaahah yeah',\n", - " \"let's fuck!\",\n", - " 'mousso sarama ni mousso dembéma ni mousso tchègni bè bamako',\n", - " 'bakakènè mousso ni guipure mousso ni mini dow na bè bamako',\n", - " 'alé yé nièlé tè massi nisôgoya',\n", - " 'alé yélègni tè massi nièlagoya',\n", - " 'everyday dressed like a queen',\n", - " 'in blue, red, yellow dresses',\n", - " 'women in bamako are beautiful',\n", - " 'oh mali mousso',\n", - " 'i miss your smile',\n", - " 'i want to hear your laughter',\n", - " 'houn hounhounhoun',\n", - " 'né ma dan sôro moussow la',\n", - " 'mali moussow tama tchoko kagny',\n", - " \"né ma dan sôrô n'wolo ba ou la\",\n", - " 'farafina moussow ou sara ba ou la',\n", - " 'né bè foli bila moussow ou yé',\n", - " 'ah moussoya',\n", - " 'a kouma fôba katchan dé',\n", - " 'ah moussoya',\n", - " 'a wale kè baka mantchan',\n", - " 'sébè alla yé, bara bè moussow bolo',\n", - " 'tchè mana nia fourouso mousso',\n", - " 'tchè mana tiniè fourouso mousso',\n", - " 'dén mana niè a woloba mousso',\n", - " 'dé mana tiniè a woloba mousso',\n", - " 'bana baou, famabaw, ni nalomaw, banabatow',\n", - " 'wolo baka ni ou lado baka',\n", - " 'ô farafina mousso',\n", - " 'i miss your smile',\n", - " 'everyday they face their destiny',\n", - " 'shirtless, barefoot under the sun',\n", - " 'women in africa are strong',\n", - " 'ô farafina mousso',\n", - " 'i miss your smile',\n", - " 'i want to hear your laughter',\n", - " 'i admire the courage you face your destiny with',\n", - " 'ô farafina mousso',\n", - " 'i miss your smile',\n", - " 'i want to hear your laughter',\n", - " 'my inspiration is drawn from you',\n", - " 'ô farafina mousso',\n", - " 'i miss your smile',\n", - " 'anything good i can do',\n", - " 'i want it to be a tribute to you',\n", - " 'mali moussow tamatchoko kagni',\n", - " 'farafina moussow ou sarabaw la',\n", - " 'mali moussow tamatchoko kagni',\n", - " 'farafina moussow ou sarabaw la',\n", - " 'mali moussow tamatchoko kagni',\n", - " 'farafina moussow ou sarabaw la',\n", - " 'mali moussow tamatchoko kagni',\n", - " 'farafina moussow ou sarabaw la',\n", - " 'mali moussow tamatchoko kagni',\n", - " 'farafina moussow ou sarabaw la',\n", - " 'ai ja oshienai nante omou no wa',\n", - " 'kimetsukete hanashi mo kikanai kokoro',\n", - " 'doushite itsumo sounan darou',\n", - " 'ooki na ai ga sou',\n", - " 'afureru heya no naka de',\n", - " 'taiyou no hikari ga yureteru',\n", - " 'sono kuuki i wanna give it all to you',\n", - " 'kyou kara wa stay with me',\n", - " 'mitsukeru happy ending',\n", - " 'mahou de tsunagatteru no arifureta gozenchuu',\n", - " 'iro ga utai dashitara koohii o susuru',\n", - " 'saa mezametara itsuka nakushita pazuru',\n", - " 'kakera o motteru hito o sagashi ni ikou',\n", - " 'ai ja sukuenai mono nante nai',\n", - " 'sonna hata o kakagete',\n", - " 'ue o muite, mae muite utattara',\n", - " 'nanika mitsukaru ka na',\n", - " 'kimi koso ga best in my life',\n", - " 'ashita wa kitto i’ll be in your life',\n", - " 'nani ga atte mo kimi no mikata sa',\n", - " 'kyou kara wa stay with me',\n", - " 'you’ll be my happy ending',\n", - " 'mahou de tsunagatteku no munashiku omotteta koto',\n", - " 'mou hitoriyogari ja nai kimi ga iru kara',\n", - " 'saa mezametara musunda kimi to no yakusoku',\n", - " 'mamotteku tame ni zutto kyou mo ganbatte ikou',\n", - " 'ai ja sukuenai mono nante nai',\n", - " 'sonna hata o kakagete',\n", - " 'ue o muite, mae muite aruitara',\n", - " 'nanika mitsukaru ka na',\n", - " 'iwanakute mo best in my life',\n", - " 'ashita wa kitto i’ll be in your life',\n", - " 'nani ga atte mo kimi no mikata sa',\n", - " 'just wanna tell you',\n", - " 'chiisa na shiroi kirei na doresu o kiru hi',\n", - " 'i want you to stay with me, see the stars at night time',\n", - " 'and some day, i want you to marry me',\n", - " 'mitsukeru happy ending']},\n", - " 'rock': {'meta': {'train_data': ['tërëä',\n", - " 'earthlings',\n", - " 'nöt yümdürt',\n", - " 'stop, human who pollute',\n", - " 'täë tërëä',\n", - " 'earth, earthlings',\n", - " 'säë rïündï',\n", - " 'we are all the plants of the sky',\n", - " 'günt mï tërä',\n", - " 'kill me too, despicable humain earthling',\n", - " 'nöt yümdürt',\n", - " 'stop, human who pollute',\n", - " 'säë mï lï',\n", - " 'my spirit lies',\n", - " 'säë yümdürt',\n", - " 'infamous mind',\n", - " 'yüm mï tërëä',\n", - " 'which i belong, earthlings',\n", - " 'yüm ä rïsä üntäë',\n", - " \"man doesn't care that the life disappears\",\n", - " 'ünsäë',\n", - " 'insensitive',\n", - " 'yüm ä rïsä üntäë',\n", - " \"man doesn't care that the life disappears\",\n", - " 'türï sölïtïüd därkë tï sölïtïüd',\n", - " 'sad, dark loneliness, exceed solitude',\n", - " 'tërëä sörvï tërï',\n", - " 'earthlings slaves of the hybrid illuminati',\n", - " 'sölïtïüdï vïsätïü läïrä',\n", - " 'the disunity will destroy everything',\n", - " 'sölïtïüdï värïnsän tïüdï',\n", - " 'disunity prevents us from seeing',\n", - " \"tërëä mär m'tï\",\n", - " 'the earthlings suffocate',\n", - " 'sündäë rïündï cöïündï',\n", - " 'the flamboyants roots of eternal sun be manisfest',\n", - " 'für säë ründï tündü rïündätï',\n", - " 'the roots of our spirits are connected to the absolute vaccum',\n", - " 'fündër üsü',\n", - " 'learn to know himself',\n", - " 'düdü yüm düdü rïündätï',\n", - " 'cruelty of man, cruelty of absolute vaccum',\n", - " 'fö ä ürï',\n", - " 'hypocritical world',\n", - " 'dütälün dälï ürï',\n", - " 'the manipulation separates us from the universe',\n", - " 'fälüsätün tälürïn täë',\n", - " 'ignorance, the earth belongs to everyone',\n", - " 'fälïsï ürï',\n", - " 'the world is wrong',\n", - " 'fälïsï dälün dälün dälündätï',\n", - " 'error, black moon, black moon, ancestral black moon',\n", - " 'fälïündï fälïündïcï',\n", - " 'lie, fear',\n", - " 'fälüsä ütä ürï sändätï ürï sändätä ü sändätä',\n", - " 'malevolence on the creatures of this planet',\n", - " 'the univers bleeds since a long time',\n", - " 'the univers bleeds a lot',\n", - " 'we bleed a lot',\n", - " 'färïä sätä cö ï ündätï cö ï ündätï fündätä ündä',\n", - " 'evil brother',\n", - " 'related to us constantly',\n", - " 'related to us constantly',\n", - " 'infernal wedding',\n", - " 'yüm',\n", - " 'mankind',\n", - " 'ündülï',\n", - " 'bravery',\n", - " 'für ütä ündülï für rï ündürï',\n", - " 'for the creatures, bravery, because nothing is impossible',\n", - " 'dörï ündätï',\n", - " 'beauty eternal',\n", - " 'ündütäyä für säë ündäë',\n", - " 'revolt of the spirit',\n", - " 'für yä düntä yä ïlä yümdä',\n", - " 'against bestiality, the shout of another mankind',\n", - " 'ündäëtün fü ïlï lün',\n", - " 'disharmony, the dementia hidden in the moon',\n", - " 'dälün dälündätï',\n", - " 'black moon, ancestral black moon',\n", - " 'cündäyä fü ïlün dïlï',\n", - " 'their foolish and powerful negative energies tear us',\n", - " 'yüm cör cör rï sündälï',\n", - " 'the heart of humanity is being emptied his sun is dying',\n", - " 'yüm cör cör cör rü sündälï',\n", - " 'the heart of humanity becomes black',\n", - " 'yüm cör cör rï sündälï',\n", - " 'the heart of humanity is being emptied his sun is dying',\n", - " 'fürïsün',\n", - " 'solar flare',\n", - " 'därï därï sün',\n", - " 'reconnecion, reconnection with the sun',\n", - " 'därï därï sün därï',\n", - " 'reconnecion, reconnection with the sun, reconnection',\n", - " 'yüm cör cör rï sündälï yüm yüm',\n", - " 'the heart of humanity is being emptied his sun is dying, man, man',\n", - " 'yüm cör cör cör rü sündälï yäyäyäyä',\n", - " 'the heart of humanity becomes black, ha !',\n", - " 'yüm yüm cör rï sündälï yüm yüm',\n", - " 'the heart of humanity is being emptied his sun is dying, man, man',\n", - " 'fürïsün',\n", - " 'solar flare',\n", - " 'därï därï sün',\n", - " 'reconnecion, reconnection with the sun',\n", - " 'därï därï sün därï',\n", - " 'reconnecion, reconnection with the sun, reconnection',\n", - " 'ürï cösä für ürï fürüs mï ëntör ï fü ä dïlïr mï dïrïün',\n", - " 'inverted world, this world gives power to the fools and rejects the true heroes',\n", - " 'mï ürä ün ürï ür mï cündürï ürï dü fï für säë sörïä ï ürtï',\n", - " 'we have the world we deserve, world of war for violent warrior spirit',\n", - " 'värïnsän äë tärün värïnsän üsü ëntör ündürï',\n", - " 'look at nature, look at its natural laws',\n", - " 'ëï öl mï ütä kälün ï sälïn rän sütch üsü für vïrï äë ündä ür hün ürï cündüïlï',\n", - " 'where all animals and plants creatures must devour themselves to survive, hell is a closed world',\n", - " 'universe of war',\n", - " 'ürï mï rün ündäë äë rün dhü äë jül mï ütä ür ündätï ündätï fürüs öl dü dhü kë',\n", - " 'world of eternal war, the war between the forms of life is permanent, perpetual, present everywhere, every second',\n", - " 'universe of war',\n", - " 'äë bïösïs ï äë rün dälï äë räïgn dü ëlëï ä fün sölü äë tün ïn ü dhü äë jül mï ütä',\n", - " 'symbiosis and war share the reign of living beings in equal parts, fights within ourselves, between the forms of life',\n", - " 'kïh rün vïrï ël ïlïs fï',\n", - " 'who wants to live, makes war',\n", - " 'äë ütä krïst rän ündï mï ürdä väïüläntä dü mï lïvïr ïn äë ündï günt ïn mï sän',\n", - " 'the christic creatures must suffer the humiliating consequences of the incarnation, in the past, crucified in the flesh',\n", - " 'lä günt ïn mï säë',\n", - " 'now, crucified in the soul',\n", - " 'war universe rattle me',\n", - " 'there is suffering everywhere',\n", - " 'go away',\n", - " 'däë für dïlïr äë dätä ür hüt nö ïntö für öl ütä für ücö öl rän vü äë fï',\n", - " 'eating, to delay the time of putrefaction, no place for all creatures, in order to stay, all must wage war',\n", - " 'universe sïk',\n", - " 'universe sick',\n", - " 'äë däë dïlïr öl ütä kön dhü',\n", - " 'entropy forces all creatures to fight',\n", - " 'ü ürä ïlïs äë sän ï äë dïtï ïlï ïn sän für sörvï ün läë ïn täë gräcë dü sänshäë',\n", - " 'they created bodies and matter, flesh prison for holding back the soul on earth, thanks to gravity',\n", - " 'for making war',\n", - " 'ëï hün rän kïh dälï öl hün ü kïh ür sölü ündü kïh ündätä öl',\n", - " 'there is a force that separates all, another one that is of the same origin, who arranges everything',\n", - " 'duality',\n", - " 'ü ür ünsäë äë säë ürï dü fälüsätün sütch tä cör',\n", - " 'they make our minds confused, kingdom of ignorance, test of the heart',\n", - " 'mï vün rëvëürt üntï ä lïüm ämä mï ü köm ürsël',\n", - " 'the true revolt of the heart, disturbed and blind, love others like yourself',\n", - " 'yümä ür äë cö ür lïüm mï säë düntö kïh ürä vü äë ïlïs öl yüm ür äë cö ür lëïth',\n", - " 'beautiful humans are the children of light, sane minds who did the work, all humans are the children of light',\n", - " 'äë lïüm cündü lä ürä sätä äë sätä ütä für mï lïüm ütä',\n", - " 'light cannot have shadow, shadows exist only because light exists',\n", - " 'sö ür däë yümdä ür ündäë dörï läë ür ündäë',\n", - " 'beyond death, the human species is immortal, sacred, the soul is immortal',\n", - " 'äë vün ür ürë ï pünd tä fïrë ïn ü cör üsü ëï bäc ür ïn ü',\n", - " 'the truth is written in letters of fire in his heart, his way back is in him',\n", - " 'köm ü ür ïn löv rïündätä ü nö lä tü ü nö lä fün dü fï',\n", - " \"when he's in absolute love he cannot kill anymore, he can't participate in the war anymore\",\n", - " 'ü nö lä ücö ïn mä ëndäë sütch für läë yüm üntä',\n", - " \"he can't stay in the matter anymore, ultimate test for the human soul embodied\",\n", - " 'mï värïnsän düntö hün ä ëürt äë cöï ür ünvärïnsän für ëïs',\n", - " 'we only see well with our heart, the essential is invisible to the eye',\n", - " 'ïlüsïön vïrï dälï ï ëndäë ïlï ëlk',\n", - " 'illusory existence, separation and limitation, electronic prison',\n", - " 'hün ïlüsïön kïh brëk mï ëürt ïlüsïön cündäyä',\n", - " \"an illusion that breaks my heart, i'm tired of this illusion\",\n", - " 'pür ï ür vürtï kïh dütälün mï lïüm ïn küb ündö dü ïlüsïön',\n", - " 'why are we here ? light trapped, in a cube, accustomed to the illusion',\n", - " 'fün lïüm väïüläntä rän äë lä dü äë lä üntï ündö ündäë',\n", - " 'small dangerous lights, forced to play the game, the atom is eternally recycled',\n", - " 'ïn mï khïp lä cündürï hün üvï löv dälä cür cör lï ündärä',\n", - " 'incarnate in a synthetic reality, birth, growth, love, pain, lesson, heart, ego, experimentation',\n", - " 'küb flesh',\n", - " 'cube, flesh',\n", - " 'fün lëïth ürtï änï ä ür läïrä väïüläntä jüj cündüïlï öl äpärtäë',\n", - " 'small lights that have been abused and have become violent, forced to lock them up',\n", - " 'küb ü sän küb ëndäë ün täë',\n", - " 'cube of matter, limited cube, the earth',\n", - " 'öl ütä rü ündülï bäyë für lïvïr ïn dïtï',\n", - " 'all creatures are bound by obligation to kill in order to live in matter',\n", - " 'ïkär rün brëk ün küb ä ürtï 2 ïlüsïön monde, démon',\n", - " 'icarus wants to break the cube, with violence, double illusion, world, demon',\n", - " 'ïn mï ütä sän öl ür lä lä lä',\n", - " 'in the physical life everything is slowed down, low, primitive',\n", - " 'für äë ürä dätä dü ündülï fün dädä tü ïn äë ünpërk',\n", - " 'in order to have time to understand some things, fall in imperfection',\n", - " 'ü künstrük äë fün khïp mï hün ä cün ür sülïtïüd',\n", - " 'they make small versions of themselves, by fear of solitude',\n", - " 'für ü s children cö mï läë ï ürä cün dü jüd mö küb',\n", - " 'that they call children, my soul is chained, we are afraid to leave the cube',\n", - " 'ï vä äë ïlï sätä lä cöndüsü cündü pïx üntï',\n", - " 'we consent to the system, unconsciously, difficult atrophied reality, particle pixels',\n", - " 'ä cün dü vï äë mä öl ür ördë sörïä ür küb',\n", - " 'for fear of opposing evil, all guardians of the cube',\n", - " 'mï vü äë körüm ür rän ï ü ür ï vä',\n", - " 'we maintain the reality that is imposed on us, that we accept',\n", - " 'slave',\n", - " 'äë ündülïs lïbërtä ür ëlk',\n", - " 'imagination releases us from the electron',\n", - " 'ëï mï nä ön säë ür yümä cündü ürä äë tï dü ürä',\n", - " 'there is a state of mind that we do not have the right to have',\n", - " 'tärün fündër für ïlüsïön ïlüsïön hün ïlï mï sän vü tä läë immortal',\n", - " 'nobody knows what this illusion is, illusion, a prison of flesh holds our soul, immortal',\n", - " 'ündö läë lïündä ür täë läë lïdï üsü nëdüm',\n", - " 'the soul becomes accustomed to the illusion of physical matter, the soul forgets his identity',\n", - " 'ündärä täë lï läë ïn täë',\n", - " 'experimentation of the mud, physical life, on earth',\n", - " 'slave ïn täë lïbërätë',\n", - " 'slave of the earth, deliverance',\n", - " 'slave ïn küb lïbërätë',\n", - " 'slave of the cube, deliverance',\n", - " 'lëïth rü fü ämä ä für üntä rün ä für mä fün cün fü',\n", - " 'lights have gone crazy, fascinated by darkness, tempted by evil, smallness, stupidity, madness',\n", - " 'slave ïn dätä lïbërätë',\n", - " 'slave of time, deliverance',\n", - " 'slave ïn vï lïbërätë',\n", - " 'slave of duality, deliverance',\n", - " 'mï törï ür ü äë fürï äë dälä äë fälüsätün dälï ür fündër ïn güd',\n", - " 'the exploitation of others, hatred, suffering, ignorance, cut off from the knowledge of god',\n", - " 'lä ëndäë dälï ïlä öl ürï küntröl ä für sätä',\n", - " 'limited reality separated from the rest of creation, managed by the devil',\n", - " 'mï mä sütch dü ündï dü dälä ä ünpërk',\n", - " 'the experience of evil, of torture, of suffering and of the imperfect',\n", - " 'ürï ïlï für läë ürtï ä sätä dï därkë ïn dörï',\n", - " 'prison world for violent and dangerous souls, transformation of carbon into diamond',\n", - " 'ündï qrö sätä ün därkë ëï äë dä dü lïnï üt',\n", - " 'from the darkest evil crow, to the love tear of the tree of life, the purest',\n", - " 'ündï küb cündüïlï ïn üsü kïh cündüïlï mï dëmön mï täë ütä',\n", - " 'from the closed cube on itself, which encloses the demons, the terrestrial creatures',\n", - " 'ëï küb füch mï tï sä mï säë düntö kïh rün nö bäyë',\n", - " 'upon the open cube, the cross releasing holy spirits who don’t want to kill anymore',\n", - " 'kïh lïbërtä ürï trï ä dü mï sörvï dü klük',\n", - " 'freed from the three-dimensional world and the hold of time',\n", - " 'come into my heart',\n", - " \"i'm giving to you the key\",\n", - " 'of my dark castle',\n", - " 'enter by the big door',\n", - " 'my love believe in me',\n", - " 'my love believe in me',\n", - " 'come into my heart',\n", - " \"i'm giving to you the key\",\n", - " 'of my dark castle',\n", - " 'ünlïvïr üntï ïlï',\n", - " 'dying, lost in my darkness',\n", - " 'ö ülï ïlï ündï',\n", - " 'prisoner of my deep pain',\n", - " 'ündülï fürïsün dïrï sün täyä ündä',\n", - " 'caressing the solar matter, i implore the sun with all my might in this hell',\n", - " 'yä ündï äyä für säë',\n", - " 'tortured screams, my spirit screams with all his might',\n", - " 'ündäë ü fü äyä üdä für ür säë',\n", - " 'since a long time, your spirit roared behind your stupid mask',\n", - " 'lïbërtä mï ëürt fïrë',\n", - " 'freedom, my heart is on fire',\n", - " 'täë ïlï lün',\n", - " 'the earth manipulated by the moon',\n", - " 'säë ïlï cün',\n", - " 'the spirit manipulated by the fear',\n", - " 'tä ïlï läï läfï',\n", - " 'our conditioning separates us from the innocence',\n", - " 'mï ëürt dïsä ürï ä ürï cürï üntï',\n", - " 'my heart speaks to the cosmos and he heals my torments',\n", - " 'ündü lïvïr',\n", - " 'the source of the life',\n", - " 'üntä ïlï lün für täë lï lün',\n", - " 'hell transvestite, moon of the earth, the moon perfidious',\n", - " 'ö lïbërsäë',\n", - " 'free our spirits',\n", - " 'mï fürï mï mï dölörä',\n", - " 'my fury tore me',\n", - " 'mï läë fü ür läë lä ür säë',\n", - " 'my soul panics, that soul at the base of the spirit',\n", - " 'ö ürï fü ürï cündürï ïlï ündï ö ür säë',\n", - " 'spirit of the life, this world is crazy',\n", - " 'arcane quest into the depth of spirit',\n", - " 'für dörï sälür',\n", - " 'this is the gold heat',\n", - " 'cündü sö düntö',\n", - " 'negative becomes positive',\n", - " 'sündü sölü ründö',\n", - " 'hot after cold',\n", - " 'für dörï sälür',\n", - " 'this is the gold heat',\n", - " 'cündü sö düntö',\n", - " 'negative becomes positive',\n", - " 'für dörï sälür',\n", - " 'this is the gold heat',\n", - " 'cündü sö düntö',\n", - " 'negative becomes positive',\n", - " 'sündü sölü ründö',\n", - " 'hot after cold',\n", - " 'cündü sö düntö',\n", - " 'negative becomes positive',\n", - " 'tör ëntör',\n", - " 'union, universal law',\n", - " 'für ündülï',\n", - " 'to understand',\n", - " 'für dülï lïläë',\n", - " 'for overcome its disorders',\n", - " 'cür säë für täë',\n", - " 'learn to spirit at merge himself',\n", - " 'ündülï',\n", - " 'feel',\n", - " 'fï fï fï fï fït',\n", - " 'fï fï fït',\n", - " 'let us fight to transform himself',\n", - " 'für ündülï',\n", - " 'to understand',\n", - " 'für dülï lïläë',\n", - " 'for overcome its disorders',\n", - " 'cür säë für täë',\n", - " 'learn to spirit at merge himself',\n", - " 'ündülï',\n", - " 'feel',\n", - " 'fï fï fï fï fït',\n", - " 'fï fï fït',\n", - " 'let us fight to transform himself',\n", - " 'dro, o dêvo, tovo anextlo',\n", - " 'cue ir anextlo, nertos',\n", - " 'cue ir nertos, skyans',\n", - " 'cue ir skyans, gothvos',\n", - " 'cue is gothvos, gothvos ar vêriânjâ',\n", - " 'cue is gothvos ar vêriânjâ, y garo',\n", - " 'cue ir garo, grâto oljo bewnans',\n", - " 'cue in grâto oljo bewnans, garo dêvo:',\n", - " 'dêvo cue ollo dade',\n", - " 'günt ä äë ündä ürtï kälün ï äë mä ïn täë yüm ür köm töï',\n", - " 'affected by vice, violence, stupidity and evil, on earth, human beings are toys',\n", - " 'äë ürï ür hün ön dü fö für dälï äë ün dälï ür vün lä ä lëïth säë',\n", - " 'the world is a theater, to separate the beings, separated from true reality and the sane spirit',\n", - " 'kïh ämä äë läë ïn väïüläntä dälï hün ïlï trï',\n", - " 'who keeps violent souls out of the way, a three-dimensional prison',\n", - " 'änï ü rän künstrük ä lücï sï läë küntröl ä güd',\n", - " 'which was built by lucifer, but souls are managed by god',\n", - " 'lücï ü lucifer universe sörïä ür mä',\n", - " 'he uses your light, lucifer, guardian of the material universe',\n", - " 'human läë lïdï löv immortal löv immortal',\n", - " 'the human forgets that the soul is love, and that it cannot die, love is immortal',\n", - " 'ia can not be human, denial of reality, lie, survival at any price',\n", - " 'dëmön yüm sütch sän ür ü ütä',\n", - " 'the human demon eats the bodies of other creatures',\n", - " 'flesh',\n", - " 'sän ür für human süffër läë',\n", - " 'the body hurts the soul of the human being',\n", - " 'made of divine and gold',\n", - " 'war',\n", - " \"it's not mï problem, now\",\n", - " 'this is not my problem anymore',\n", - " 'humans like fear, fighting and dying, always dead',\n", - " \"me, i'm not afraid, i'd rather leave than continue killing\",\n", - " \"materiality, i'm not a predator, i am light and love\",\n", - " 'immortality, innocent, human illusion',\n", - " 'i am coming back home, no bestiality, no materiality',\n", - " 'we are the slave of the earth',\n", - " 'öl köm ür rün ürä körüm üsü vïrï mï rü sölü körüm üsü mör',\n", - " 'just as we seek to succeed in our life, we must also succeed in our death',\n", - " 'üsü rïädärï ïün së äë mïnd kïh ündärä äë mä',\n", - " 'our dematerialization, matrix chrysalides, consciousness that experiences evil',\n", - " 'für äë cör füch ïn äë dïtï äë yüm rän dölörä ä ündätï dä dü lör vü',\n", - " 'for that the heart opens in the matter, the human being must suffer from great repetitive love sorrows',\n", - " 'ündätï ïn örö',\n", - " 'for a long time, in the ouroboros',\n", - " 'äë ürï sän ür hün ïntö kïh äë ïün ürä sütch',\n", - " 'the physical world is a place that puts it to the test',\n", - " 'mï rän vü äë fï dü äë mä sä dhü äë fälïündïcï ï äë löv',\n", - " 'we must make war on evil, choose between fear and love',\n", - " 'dï äë därkë ïn dörï öl ön ü ür hün tör tärün dü ïlë ëï äë üvï',\n", - " 'turning carbon into diamond, each of us is a personal way to reach the goal',\n", - " 'düntö mï rün ïlë tï düntö äë tï vü lä für äë nä ür ündäë ä cündü',\n", - " 'the more we want to go high, the more slow the ascension, because the path is long and difficult',\n", - " 'ïlë ëï äë mä ür ündätï düntö rï ä düntö äë ürï sän ür hün ïntö ëï äë füch kön ü',\n", - " 'going to evil is always easier and faster, the physical universe is a place where opposites clash',\n", - " 'ëï äë läë rïüntä mï jüd rïlïn lïbërätë ü für ïlï vü äë vürï dü vïrï ündü',\n", - " 'where the soul tries to escape, to be born again, to free oneself, to find the original plan of life',\n", - " 'mï ür hün sälïn dü ländä nö ür täë',\n", - " 'i am a plant of the sky, not of the earth',\n", - " 'äë yümä rän ürä üsü tï ï vä dü körüm rü üsü pärädä',\n", - " 'the pure human must carry his cross and agree to win his heaven',\n", - " 'läë eternal äë ëï ür lïüm ür hün ëï hün hün cündü vürï vä ä äë gräcë',\n", - " 'the soul is eternal, the path of light is a lonely path, constant effort, possible through grace',\n", - " 'löv immortal ïlë ü äë dälï dü mä für ïlë äë ündätï löv',\n", - " 'love is immortal, to tear oneself away from the claws of evil, for rejoining the infinite love',\n", - " 'fün türï für düntö lä jüd ïlï jüd äë küb äë täë',\n", - " 'reduction of punishment for good behavior, to be able to leave prison, get out of the cube, the earth',\n", - " 'äë lä cündü ür täë sï säë lëïth säë lümïnärë eternal',\n", - " 'the stake is not earthly but spiritual, sane spirit, eternal light',\n", - " 'änïmäl sän dörï cör dï pürïtï',\n", - " 'animal, transform the iron of the body into gold, purification',\n", - " 'für cündü rän äë künstrük hün ürï ür täë ëndäë',\n", - " 'it is not a question of reconstituting a terrestrial kingdom, limited',\n", - " 'ür tärïn dün ürä ärsä ïn düntäë sï dü kävärïtë äë läë dü ïn vü äë ürï ür lïüm',\n", - " 'to be happy or to take pleasure in the duality, but to prepare souls to reintegrate the kingdom of light',\n", - " 'ündätï ä lümïnärë üt äë lïüm bäc dü äë lïüm äë lïüm bäc dü äë lëïth',\n", - " 'infinite and perfectly pure, the light returns to the light, the light returns to god',\n", - " 'mï üntäë ü mïmäë güd',\n", - " 'i miss you, my father',\n", - " 'dieu',\n", - " 'täë pärïön',\n", - " 'earth, forgiveness',\n", - " 'täë sörï',\n", - " 'earth, sorry',\n", - " 'äpärtäë yüm ä ürtï',\n", - " 'to be part of this violent humanity',\n", - " 'mï löv äë ü dëä mëä',\n", - " 'my love, we will trample you and you cry',\n", - " 'mëläncölïün',\n", - " 'melancholy',\n", - " 'üntäë ündï',\n", - " 'vast nothingness',\n", - " 'säë ür täë',\n", - " 'spirit of the earth',\n", - " 'ündäë ür vïtï',\n", - " 'the living is eternal',\n", - " 'löv ür ündätï',\n", - " 'i love you forever',\n", - " 'ägörth lïnï ündäë',\n", - " 'the earth and the tree of life long time agonizes',\n", - " 'äï äï',\n", - " 'sorrow sorrow',\n", - " 'ün sän für färündï',\n", - " 'the blood spreads',\n", - " 'ünpäïön vüntï ön',\n", - " 'despair unsustainable',\n", - " 'täë täë lï ärtï',\n", - " 'earth, earth, our stupidity',\n", - " 'cändölëï ëï ëndäë',\n", - " 'leads to the end',\n", - " 'fälïndär säë',\n", - " 'luciferian entities',\n", - " 'tärïn sëä pärädä ïn dïtï',\n", - " 'a calm sea. paradise of matter',\n", - " 'rïündä',\n", - " 'violent rage',\n", - " 'rïündäë',\n", - " 'end of eternity',\n", - " 'rï',\n", - " 'peace',\n", - " 'düntäë',\n", - " 'duality',\n", - " 'üntäï ülï',\n", - " 'notched deeply',\n", - " 'mï säë',\n", - " 'our spirit',\n", - " 'üntäï ülï',\n", - " 'notched deeply',\n", - " 'ï crï für ü',\n", - " 'i cry for us',\n", - " 'üntäï ülï',\n", - " 'notched deeply',\n", - " 'ï crï täë',\n", - " 'i cri, earth',\n", - " 'üntäï ülï',\n", - " 'notched deeply',\n", - " 'üntä ï üntäë',\n", - " 'fall into nothingness',\n", - " 'üntäë ü ündätï',\n", - " 'nothingness and eternal matter',\n", - " 'üntä ürï ü täë',\n", - " 'demonic univers, earth of matter',\n", - " 'üntäë ü ündätï',\n", - " 'nothingness and eternal matter',\n", - " 'ücö ü vïrï',\n", - " 'life in the matter',\n", - " 'üntï',\n", - " 'into the abyss',\n", - " 'ür sörïä ön sïläncïä',\n", - " 'your soldier of silence',\n", - " 'kön vïtï',\n", - " 'i will fight all my life',\n", - " 'ö täë',\n", - " 'earth',\n", - " 'täë ündï',\n", - " 'the earth suffers',\n", - " 'ö lïnï üntï',\n", - " 'tree of life inside',\n", - " 'dïlïvrïün täë ündï',\n", - " 'i want to rescue the earth of suffering',\n", - " 'ö üntï ö rïvï ündï',\n", - " 'into the abyss my revolt burning me',\n", - " 'ündï rïvï ä rïvï üntï',\n", - " 'huge revolt, revolt in the depths of darkness',\n", - " 'öbï rïvï së üntï',\n", - " 'be guided by the matrix, in the depths',\n", - " 'öbï rïvï bïcë üntï',\n", - " 'be guided by the wind, in the depths',\n", - " 'köndïsë bïcë ündï',\n", - " 'feel the burning wind',\n", - " 'yüm tü mï täë',\n", - " 'mindkind kills the earth',\n", - " 'äï ü lëïsä üntö',\n", - " 'sorrow, we are all star dust',\n", - " 'äï ü lëïvï ündä',\n", - " 'sorrow, we are the celestial energy that dies',\n", - " 'ündätä',\n", - " 'repair',\n", - " 'yüm',\n", - " 'man',\n", - " 'ündätä',\n", - " 'correct',\n", - " 'yümä',\n", - " 'beautiful humanity',\n", - " 'sävür täë',\n", - " 'take care of the earth',\n", - " 'ündö äë üntä lïvïr ündö äë üntï dïtï ündö äë öl täë sän ö',\n", - " 'cycle of incarnations, recycling the atoms of matter, recycling of all earthly bodies, everywhere',\n", - " 'tëk für khïp mï küntröl mï sän ütä dïlï ïün ïn äë sän',\n", - " 'technology to duplicate the carnal interfaces, fallen creatures placed in bodies',\n", - " '9c639 äë',\n", - " 'several 9c639',\n", - " 'dhü xöx füch kïh ürä düntö cündü xüm yüm dälï ür läë',\n", - " 'two opposite sexes that attract each other, positive, negative, female, male, separation of souls',\n", - " 'dälï ür sän',\n", - " 'separation in the flesh',\n", - " 'tör löv künstrük mï hün fün sän küntröl für lïvïr ücö mï ïlï trï dïmëntä',\n", - " 'union, procreation, fabrication of a descendant, body, interface to live in the three-dimensional world',\n", - " '9c639 äë',\n", - " 'several 9c639',\n", - " 'ü ündï ür hün üntäë ïn sä ür värïnsän äë lä cöndüsü',\n", - " 'our senses are a hole in which we see reality atrophied',\n", - " 'küntröl ündä ür äë yüm s sän',\n", - " 'holographic interface that the human calls body',\n", - " 'köm ü hün mï nämïdä äë ür dïvïr ïn für fö für fü äë vïrï ür hün cür ürä öl äë tï',\n", - " 'when we are born we cry that we are come to this great stage of fools, existence is a school at all levels',\n", - " 'öl äë cür rän ür cür ür lä mï vü mä ëndäë für vü nö jüd dü für mï lä vä',\n", - " 'all lessons must be learned, we can hurt ourselves just right, never beyond what we can tolerate',\n", - " 'öl rän dä öl ür ündö ün üfö ün ütä',\n", - " 'everything must end, everything is recycled, the objects, living things',\n", - " 'ïn äë sän tündü dü äë läïrä dörï',\n", - " 'in organisms assigned to several different scenarios',\n", - " 'ïn mï dätä für örö vü üsü ündö yüm ündätï hün fündülï üld däë',\n", - " 'in time, for that the ouroboros continues its recycling, the human is perpetuated alone, youth, aging, death',\n", - " 'für güd ürä ündï ïün ür däë ïn dïtï für s ün läë dïvïr dü für ïlï ïn üntï',\n", - " 'light inserted death into matter, in order to question the souls coming from this atom prison',\n", - " 'für fündër ëï ël ür sï ël lä ïn vü äë vün ürï dü mï jüd mï küb',\n", - " 'to know what they think, if they can reintegrate the real world, outside the cube',\n", - " 'ïn äë ürï ür lïüm üt',\n", - " 'in the realm of pure light',\n", - " 'äë läë tör ä sän ä ël dälï ü sölü däë sän ä üsü tör ä äë dïtï',\n", - " 'the soul unites with the body and it detaches itself at physical death, by her cohabitation with matter',\n", - " 'ël ü vü däë',\n", - " 'she becomes dirty',\n", - " 'sï ël körüm ücö sütch äï sän ü bäc dü dör ïn ëdën köm ür mï tshë',\n", - " 'but she gains in experience, sorrow, body, we go back to the gates of heaven while we sleep',\n", - " 'köm mï dïspärät mï üsü für dädä mï sän',\n", - " 'when we leave our ego, to feed the body',\n", - " 'öl ütä cündü dïvïr ïn ëlk für sölü ündü für mï sölü üdä',\n", - " 'each creature does not arrive in the electron for the same reasons, for the same sins',\n", - " 'ä mï dätä öl ün sündätï ü ïntö ü sä ü sä äë därkë dün für lïüm',\n", - " 'by our daily actions we position ourselves, choice, we choose darkness or light',\n", - " 'äë däë dün äë cündö rïündä dün löv äë cündüïlï dün äë lïbërtä',\n", - " 'murder or protection, hate or love, confinement or release',\n", - " 'mï ëntör ür vä ür ündätï värïnsän',\n", - " 'the law of consent is always respected',\n", - " 'yüm hüp dïvïr from the sky cö dü hün galaxia ïcë dälï ür vün',\n", - " 'man thinks to come from the sky, belong to a galaxy, stuck up, separated from the truth',\n", - " 'ïcë ï 9c639',\n", - " 'stuck in 9c639',\n", - " 'galaxia in the sky',\n", - " 'cündüïlï universe fäzër ïkär',\n", - " 'prison universe, patriarchal, icarus',\n", - " 'mï ür äë sörïä dïvïr für cür ür ëndäë mï läë ëlö ür sörvï ür dïtï',\n", - " 'we are agents coming to learn from the limitation, souls think to be prisoners of matter',\n", - " 'sï ël ür cö ürä sütch ütä sölü ütä ün säë äë ïlï mï ëndäë mï löv mï für ürï',\n", - " 'but they are connected to an experiment, life after life the spirits discover the limit of love of this world',\n", - " 'ür ïlï nö ütä täë ündä lä lïvïr ïn dïtï ün däë mï cür ür cür',\n", - " 'of the cage, no terrestrial creatures can live in matter without killing, the lesson is learned',\n", - " 'hün bäc dü mï tï ür ëlö ïn mï vün ürï mï rän ür düntö',\n", - " 'a return to the surface can be envisaged, in the true universe, the dictatorship of absolute good',\n", - " 'come with us',\n", - " 'come with us',\n", - " 'we just wanna feel young, oh',\n", - " 'we just wanna feel young',\n", - " 'we just wanna feel young, oh',\n", - " 'oh, woah, woah, woah',\n", - " 'oh, woah, woah, woah',\n", - " 'oh, woah, woah, woah',\n", - " 'we just wanna feel young',\n", - " 'cöïündï',\n", - " 'speak',\n", - " 'üntä ïrïtï für tündülï ündï',\n", - " \"the darkness irritates me, it's weakens me deeply\",\n", - " 'ö lïnï cüntä ürï ü täë ö ürï',\n", - " 'tree of life, we neglect the univers and the earth, spirit of life',\n", - " 'ündü ürï für ürï cündärä ürï',\n", - " 'origin of the univers, that our world has abandoned, spirit of life',\n", - " 'ö lïnï',\n", - " 'tree of life',\n", - " 'ö mï ëürt üntäï ülï',\n", - " 'my heart is deeply notched',\n", - " 'mï tür lïnï lïr für düntä ürï',\n", - " 'my tender tree of life, i feeling the bestiality of this world',\n", - " 'ündäë',\n", - " 'exhausted',\n", - " 'für ür äyä säë',\n", - " 'this is the sobs of spirit',\n", - " 'fündä täë cö ürï löv ür',\n", - " 'amazing star, child of the cosmos, i love you',\n", - " 'ö tündürï däë fürï tündürï',\n", - " 'storm, my anger killing you, storm',\n", - " 'täïlï fürï cö ütï',\n", - " 'asphyxiated, my anger hurts you',\n", - " 'ündï fürüs üntä ü ündätï',\n", - " 'pass, present, always hell',\n", - " 'für tündürü',\n", - " 'the house is darker',\n", - " 'üntï',\n", - " 'the abyss',\n", - " 'ö fürï cün dürï düläë fürï ïn täë',\n", - " 'anger, stupidity, conditioning, obstinacy, fury on the earth',\n", - " 'cündütün dürï düläë fürï mï ëürt',\n", - " 'atrophy, conditioning, obstinacy, fury in my heart',\n", - " 'südürü dürï düläë ëdën ländäë',\n", - " 'bruising, conditioning, obstinacy, paradise, paradise lost',\n", - " 'mï rëvëürt cündï düläë mï säïr',\n", - " 'the revolt of my heart treats my sick soul, i bleed',\n", - " 'fündürü fürï sï cündürï cündürï dürï',\n", - " 'the anger misplace me, here, help, winter paralyzes me',\n", - " 'für ü sün rï ü lün cündürü fün dürï dü sün',\n", - " 'for our suns, console the moon, the fragile mental barriers, suns of ice',\n", - " 'türü fürütü cündürü säë dä rïädärï',\n", - " 'charm the folly, mental barrier, tears of the spirit, disintegration',\n", - " 'cüntü rädätï fündürü säë rïlïn',\n", - " 'invincible passion, detachment, rebirth of the spirit',\n", - " 'lï tärün dülïdü säë',\n", - " 'lie on our nature, our spirits are explosive',\n", - " 'lälälälälälälälä rëvëürt !',\n", - " 'now, revolt of the heart !',\n", - " 'färün dülïdü säë',\n", - " 'jailed, our spirits are explosive',\n", - " 'tärä dürün tä für',\n", - " 'our house is cold, the calcined earth',\n", - " 'ündülï lä ü rü cündülï lä ü sï',\n", - " 'here, henceforth we must admit our absurdity',\n", - " 'mï mïlï ländä fïrë',\n", - " 'my strange paradise of fire',\n", - " 'rïüntä ïlï cündï',\n", - " 'in this prison, i try to treat me',\n", - " 'ündülï ü fündülï',\n", - " 'relearn to be innocent',\n", - " 'cündülï ü fïrë ländä',\n", - " 'the stupidity burns the paradise',\n", - " 'ütä ïlï lün ü säë dï lün dï lä',\n", - " 'the creatures of the moon hide in our minds, the transformation of the moon, transforme now',\n", - " 'ï üvï',\n", - " 'our goal',\n", - " 'ïn täë lïbërtä',\n", - " 'free themselves from the cult of the earth',\n", - " 'ündülï dü fïrë',\n", - " 'force of fire',\n", - " 'äï üvï ütï',\n", - " 'purpose of this painful struggle',\n", - " 'cündülï ländä ürï',\n", - " 'planet where stupidity is in paradise',\n", - " 'mï dïlï ä ürï',\n", - " \"i'm disconnected from this world\",\n", - " 'ündürü dï läë',\n", - " 'the soul can easily unlearn',\n", - " 'ündürü sï ürï',\n", - " 'the nature is early accessible',\n", - " 'cündürü ländä ürï',\n", - " 'mental barriers, confidence in the spirit of life',\n", - " 'cündürü sä ürï',\n", - " 'breaking the mental barriers of this world',\n", - " 'lïbërtä',\n", - " 'freedom',\n", - " 'ü tündü rï ür säë',\n", - " 'connected, we empty our minds',\n", - " 'täë nöc säë',\n", - " 'the spirit of earth is dark',\n", - " 'rëvëürt',\n", - " 'revolt of the hearts',\n", - " 'mï mïnd ï rï fündä rï ündätï',\n", - " 'my conscience recovering slowly in this big empty',\n", - " 'ündä ïlï fündä ïlï',\n", - " 'this unlivable prison, a gold prison',\n", - " 'cütä ülï füdä ïlï ündülï',\n", - " 'privacy, care inside, break this prison',\n", - " 'mï mïnd ündürï',\n", - " 'our consciences are ancestral',\n", - " 'ündü ïlï fü ür tür sätä ülï vün tü ïlï sülï',\n", - " \"the origine of your dementia has condemned you, diabolic drama, the deep truth, it's there are a light under your malevolence\",\n", - " 'ündülï dïrïün dïlï üntï vürï',\n", - " 'fallen rebel condemned, disturbing truth',\n", - " 'ündülï dï tün dï të vürtï sülï',\n", - " 'condemned, savagery abolished, without negative energies, i glimpsing the brighter darkness',\n", - " 'vï cö ülï üvï ündülï ünfü vïtï',\n", - " 'cursed paradox, the goal is to relearn to defend life',\n", - " 'ündülï ü fürï ïlï cöndüsü ü vïrï',\n", - " 'condemned, our prisons of hate atrophies our lives',\n", - " 'däë ï ülï vöï örï ülï',\n", - " 'in the repugante bowels, horrible voice of depths',\n", - " 'cöïündï forever',\n", - " 'eternal vociferation',\n", - " 'ä ï tärvï ür ïn lïbërtä',\n", - " 'i return you in liberty',\n", - " 'mï täë läë mör ï rëgrët',\n", - " 'the souls in the earth dies, i regret',\n", - " 'ünfürï sändülï dï sündätï mï lïbërtä',\n", - " 'redemption, deliverance, transformation, perpetual day, my liberty',\n", - " 'mï fündätï ländä ö ï üvï',\n", - " 'my country is the innocence , i grow',\n", - " 'güd ï ündä sündätï',\n", - " 'infernal matrix, perpetual days',\n", - " 'mï dï lün lï',\n", - " 'i forgive at the moon for his lies',\n", - " 'ündë',\n", - " 'pardon',\n", - " 'üntä füntäë',\n", - " 'annoying peaceful planet',\n", - " 'mï vöï',\n", - " 'i cursed',\n", - " 'ündülïä dïlïsï ündülï mï lïbërtäë',\n", - " 'delicious dance of the invention, the liberty',\n", - " 'cö rï ürï fö ürï ä ürï',\n", - " 'dry world, hypocritical world',\n", - " 'lä ürï sï ündärä',\n", - " 'here, civilization and univers, test',\n", - " 'ländä cüntï',\n", - " 'beautiful illogical world',\n", - " 'sülï',\n", - " 'the brighter darkness',\n", - " 'ürtä füntäë',\n", - " 'impossible peaceful planet',\n", - " 'mï lïbërtä',\n", - " 'our freedom',\n", - " 'mï fürï dïlï ïlï ü sï',\n", - " 'our anger disconnects us, condemns us, imprisons us',\n", - " 'tövï ütä üvï mï lïvïr ündï',\n", - " 'intelligent creatures, which grow, burns reincarnated',\n", - " 'fündä rïlïn',\n", - " 'repulsive reincarnation',\n", - " 'cündö rï ün së',\n", - " 'lost between the empty and matter',\n", - " 'lï fürï üntä',\n", - " 'perfidious fury of hells',\n", - " 'lör sö ürï',\n", - " 'love is the future of our nature',\n", - " 'üntä vïrï sänshäë',\n", - " 'infernal material existence',\n", - " 'mï mïnd ï üdï',\n", - " 'my conscience is chained',\n", - " 'mï ëürt säïr ündätï',\n", - " 'my heart bleeds since a long time',\n", - " 'mï sülïtïüd',\n", - " 'my solitude',\n", - " 'sülï',\n", - " 'the brighter darkness',\n", - " 'ütä üvï ölï',\n", - " 'all creatures awaken one day',\n", - " 'üntä ïlï',\n", - " 'far from hell',\n", - " 'mï üvï cündülï',\n", - " 'my goal was stupid',\n", - " 'üntä ïlï',\n", - " 'far from hell',\n", - " 'mï üvï cö ündï',\n", - " 'my goal linked to depths',\n", - " 'löv ür',\n", - " 'love you',\n", - " 'nö ïlï cö üvï',\n", - " 'no more day in jail',\n", - " 'ündäë vïrï...',\n", - " 'life is immortal...',\n", - " 'ôô dêwëh sündë',\n", - " 'döwerï dö ïosz',\n", - " 'döwerï sündë...',\n", - " 'ôô dêwëh sündë',\n", - " 'döwerï dö ïosz...',\n", - " 'üüü, üüü',\n", - " 'üüü, üüü',\n", - " 'üüü, üüü',\n", - " 'ô, ô',\n", - " 'ô, ô',\n", - " 'ô, ô, ô, ô, ô, ô',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'ô kobaïa',\n", - " 'üü wëlöh wëhssï wëhlï wëh loï',\n", - " 'üü wïlëh wï sëh wïlëh wï ru su',\n", - " 'üü wëhlï wëhssï waläh stöhôtt',\n", - " 'üü wëhlï wëhssï waläh waläh rïndi!',\n", - " 'dëh rïn!',\n", - " 'üü wïlëh wëhssï wëhlï wï loï',\n", - " 'üü wilah wëhssï wëhlë wï woï',\n", - " 'üü wïlah wëhssï waläh ru su',\n", - " 'üü wïlah wëläh waläh rëhndï!',\n", - " 'dëh rïn!',\n", - " 'üü wëhssï wëhlï wëhlï wëh loï',\n", - " 'üü wëhlï wëhssï wëhlï rïndi',\n", - " 'rïndï dëh mäh waläh waläh stöhôtt',\n", - " 'rïndï dëh mäh waläh waläh waläh rïndi!',\n", - " 'dëh rïn',\n", - " 'dëh stöhôtt',\n", - " 'dëh wurd',\n", - " 'dëh zaïn',\n", - " 'dëh stôhtt',\n", - " 'stöhtt',\n", - " 'glaö',\n", - " 'love love love love',\n", - " 'love, love, love, love',\n", - " 'cündü ür ï für dü ürï düntä üsü',\n", - " 'i am not of this abject and selfish world',\n", - " 'für lï sün tshë ün körüm',\n", - " 'this is a false sun, this is a real nightmare',\n", - " 'cöï lï vün sütch ïn',\n", - " 'forced to swallow this truth',\n", - " 'däë vü lï säë',\n", - " 'hyprocrisy kills the spirit',\n", - " 'pür mï rän vïrï ïlï',\n", - " 'why do i live here ?',\n", - " 'sölïtïüd',\n", - " 'solitude',\n", - " 'sörï sörï sörï lïnï',\n", - " 'sorry, sorry, sorry tree of life',\n", - " 'lïnï ëlp ür',\n", - " 'tree of life, help us (she cries)',\n", - " 'lïnï plëz',\n", - " 'tree of life, please',\n", - " 'däë ïlï cündürï cün ï tchüc',\n", - " 'sentenced to ugliness, paralyzed, stunned by the stupidity',\n", - " 'äë ütä ön für ürï üntö dëmön',\n", - " 'the living beings of this world are all demons',\n", - " 'ländä üntä für sütch ü ï vü mä ïlï',\n", - " 'fallen from heaven, condemned to experience the evil in the material',\n", - " 'mï mör mï färün hün mä',\n", - " 'death, reincarnation, a curse',\n", - " 'sülï löv lä lïbërsäë',\n", - " 'only love can free our spirits',\n", - " 'dä',\n", - " 'tears',\n", - " 'dä ï lün',\n", - " 'the tears in the moon (the tears of demons of the moon)',\n", - " 'ürä ïlä fïrë ïn mï ï lä fïrë ürï',\n", - " 'i have so much of fire in me that i could burn the world',\n", - " 'sï ürä ïlä löv ïn mï',\n", - " 'i also have so much love in me',\n", - " 'ï löv ür',\n", - " 'everyone loves',\n", - " 'sï ürä ïlä löv ïn mï',\n", - " 'i also have so much love in me',\n", - " 'ülï ëï',\n", - " 'at the depth of my entrails',\n", - " 'ï ündï dü värïnsän tälürïn ütä cöï dü sütch für vïrï',\n", - " 'i suffer seeing all these creatures forced to eat in order to survive',\n", - " 's dü ëï dïvïr ün mä',\n", - " 'where does evil come from ?',\n", - " 's lïüm ürä ïlïs öl für cündü ür für yüm ürä sä',\n", - " 'did god create everything else so that we have the choice ?',\n", - " 'mï tshë dü füch ï dü ündätï',\n", - " 'i dream of greatness and infinity',\n", - " 'üntäï ï üdï ï ürï ördë fün',\n", - " 'lacerated by the chains of one world too narrow',\n", - " 'dä',\n", - " 'tears',\n", - " 'ï rün däë für ündä üdä',\n", - " 'i want to destroy this masked hell',\n", - " 'mä dä',\n", - " 'the tears of evil',\n", - " 'ütä ür tälürïn mï fü',\n", - " 'we are all demons from one another',\n", - " 'mï vürï lïüm ür ïn üntä',\n", - " 'the true light is in the darkness',\n", - " 'vü füch mï dölörä ï cündï mï cöndüsü',\n", - " 'to deal with our suffering and to drill our abscess',\n", - " 'cütä dä',\n", - " 'heal with the tears',\n", - " 'we are the flesh, the cells decaying and light',\n", - " 'we are the life, enchained, the life in the hearts',\n", - " 'we are the universe, immortal, the sun inside',\n", - " 'we are co-creators of all, the fallen angels',\n", - " 'love',\n", - " 'ï hün ürï ïn sän',\n", - " 'in one material world',\n", - " 'äë cö güd düntä',\n", - " 'the arrogant gods children',\n", - " 'ündülï für ündï ä ü',\n", - " 'condemned to suffer with him',\n", - " 'mï lïüm dïlï lïvïr ï mï sän mï së',\n", - " 'the fallen angels incarnated in the flesh, the material',\n", - " 'mï sän ï mï së',\n", - " 'the flesh and material',\n", - " 'trï äë läë',\n", - " 'trees, souls',\n", - " 'frï äë säë',\n", - " 'fruits, spirits',\n", - " 'sütch tä säë ïn hün ündätï dïmëntä',\n", - " 'experimentation of spirits into a dimensional infinity',\n", - " 'dä ï lün',\n", - " 'the tears in the moon',\n", - " 's mä ür rän ünküntröl ï ïrïtï äë güd',\n", - " 'is it that evil has become uncontrollable and has contaminated its creators ?',\n", - " 'tälürïn äë dëmön mëä ündï ëürt',\n", - " 'all the demons crying from the bottom of their hearts',\n", - " 'ï rëgrët tälürïn',\n", - " 'we all regret',\n", - " 'ür tälürïn äë dëmön dü für ürï',\n", - " 'we are all the demons of this world',\n", - " 'dä ütä ïlï sän',\n", - " 'all the creatures of this universe are crying the tears of blood',\n", - " 'nö ländä pärädä',\n", - " 'no beautiful paradise',\n", - " 'dä ï lün',\n", - " 'the tears in the moon',\n", - " 'mï ländä',\n", - " 'my paradise',\n", - " 'dä ï lün',\n", - " 'the tears in the moon',\n", - " 'dëmön tä vï cün ön',\n", - " 'demons are afraid of themselves',\n", - " 'dïvïr ëï löv',\n", - " 'return to love',\n", - " 'ëï löv',\n", - " 'to love',\n", - " 'sä äë üdï dü mä',\n", - " \"let's break the chains of evil\",\n", - " 'ï dïvïr ëï löv',\n", - " 'and return to love',\n", - " 'ï dïvïr ëï löv',\n", - " 'and return to love',\n", - " 'für sülï cüntü',\n", - " 'this is the only solution',\n", - " 'für sülï cüntü',\n", - " 'this is the only solution',\n", - " 'lä üvï lä für sä',\n", - " 'we can choose this goal',\n", - " 'mä ün ïlï',\n", - " 'evil is here beneath',\n", - " 'für üntï tündürï ïlün löv',\n", - " 'powerful love storm against this hell',\n", - " 'mï mïnd ündï vü ülï lücï',\n", - " 'our consciences burn, kept in the bowels of lucifer',\n", - " 'ï dïë ülï mï dëmön cündülï mï vöï',\n", - " 'i die, the voice of my selfish demon',\n", - " 'ündï vöï cün ülï ündü sü ü vün tchï',\n", - " 'i burn and cursed my stupidity, desperate struggle in the matter, for the truth',\n", - " 'mï dïlï vöï cündülï vün säë',\n", - " 'cursed, fallen in this winter, intuitive search for the truth',\n", - " 'käë fïrë ïn täë',\n", - " 'chaos, of light in clay',\n", - " 'mï ür lï ëï vöï säë ür lï',\n", - " 'the voice of my being lies to my mind',\n", - " 'güd lï yüm dëmön',\n", - " 'creator of lies, man is a demon',\n", - " 'ä ür',\n", - " 'united to you',\n", - " 'sörï',\n", - " 'sorry',\n", - " 'güd ëlp mï',\n", - " 'true god help us',\n", - " 'güd',\n", - " 'god',\n", - " 'dïvïr ïn dü ürï ëï mï lëï ür däë',\n", - " 'welcome to a world where energy is exploited',\n", - " 'ï ürä',\n", - " 'and drawn out',\n", - " 'mï lïüm fï mï lïüm',\n", - " 'the light fights the light',\n", - " 'tï jül ïn für sän lä',\n", - " 'her form in this matter',\n", - " 'ün tïüdï dü vïrï ün däë',\n", - " 'forbidden to live without devouring',\n", - " 'dïrïün cösä mï kïrän ä ün lör',\n", - " 'rebellion against protection and love',\n", - " 'löv',\n", - " 'love',\n", - " 'für vïrï ïn mï sän',\n", - " 'in order to survive in matter',\n", - " 'ür ëndäë mï ütä',\n", - " 'we end our lives',\n", - " 'ümtï dü lümïnärë',\n", - " 'devoid of light',\n", - " 'ümtï dü lëïth ür vïrï',\n", - " 'bereft of the fire of life',\n", - " 'hün fïnx üntäï cündäyä üld däë ündï hüt',\n", - " 'a phoenix wrinkled, tired, old, ugly, burned, putrefying',\n", - " 'für vü läïrä dïspärät ï mï würm',\n", - " 'who will be carried away by the worms',\n", - " 'ï mï vä',\n", - " 'we accept',\n", - " 'für yüm ün nöt',\n", - " \"for man, it's normal\",\n", - " 'ündülï',\n", - " 'condemned',\n", - " 'rïlïn südjütï',\n", - " 'infernal reincarnation',\n", - " 'für ündülï',\n", - " 'this condemning',\n", - " 'ündö ïlä sän',\n", - " ...]},\n", - " 'data': ['köm mï dïvïr ü ümtï äë mïnd läbïrätë täë läbörätörï täë ämä jüd ämä rän',\n", - " 'when we arrive, the memory is erased, earth labyrinth, earth laboratory, kept away, kept busy',\n", - " 'lä ëndäë änï ön ël üsü örö ündö änï ürï klük ï ländä ïlï',\n", - " 'limited reality buckled on itself, ouroboros, recycling, spatio-temporal loop, in a heavenly prison',\n", - " 'ï ländä ïlüsïön ï ländä lï äë ïlï ür ïn mï ëürt ï ländä ïlï',\n", - " 'in a paradise of illusion, in a paradise of lies, the prison is in my heart, in a heavenly prison',\n", - " 'ï ländä ïlüsïön ï ländä lï läbïrätë dü ïlüsïön',\n", - " 'in an illusion paradise, in a paradise of lies, labyrinth of illusion',\n", - " 'döld äë täë döld ür tï ür säë',\n", - " 'disclosure of the dimension of the holographic labyrinth, the earth, old doll, the avatar of something higher',\n", - " 'cündü lï üntï mï läë mï pärädä is dead köz ür dïmëntä',\n", - " 'matter clouded the soul and diminishes it, my paradise is dead, because of your dimension',\n", - " 'ï fük ür world üsü ïlüsïön läbïrätë ï brëk ür wall',\n", - " 'i curse your world and its illusions, i break the wall of this labyrinth',\n", - " \"the prison ür ïn mï head ï don't want ür paradigms\",\n", - " \"the prison is in my head, i don't want your paradigms\",\n", - " 'ï fük the flesh ä ür programs läbïrätë ï destroy ü läbïrätë läbörätörï',\n", - " 'i reject the flesh and your programs, labyrinth, i destroy you, labyrinth, laboratory',\n", - " 'läbïrätë ïlüsïön läbörätörï sütch döld',\n", - " 'labyrinth of illusion, experimental laboratory, old doll',\n", - " 'dïsklüz ölögrä läbïrätë dïmëntä',\n", - " 'disclosure of the dimension of the holographic labyrinth',\n", - " 'äë yüm lä änï öl üsü vïrï köm hün sän hün döl kïh dïvïr düntö ïn düntö üld',\n", - " 'the human could spend all of his life like an automaton, a puppet that becomes more and more old',\n", - " 'kïh ündö vü ä vü',\n", - " 'who recycles itself again and again',\n", - " 's ü mï dün s äë nätä ïn ü lä',\n", - " 'have you ever questioned the nature of your reality ?',\n", - " 'läbïrätë für äë mïnd yüm läbïrätë läbörätörï ündä dïmëntä',\n", - " 'labyrinth for human consciousness, labyrinth, laboratory, holographic dimension',\n", - " 'äë läë äë lïvïr üsü ïn sän äë ïn äë ündä',\n", - " 'pure lights are embodied in bodies, in the hologram',\n", - " 'äë hün üvï äë cö cündütün ï dïlïsï ür vü mï ïn äë së',\n", - " 'one of the goals of family and friendships is to keep us in the matrix',\n", - " 'für mï tïüdï dü ür üsü mï tïüdï ëlö ä üsü',\n", - " 'to prevent ourselves from being ourselves, to prevent us from thinking for ourselves',\n", - " 'mï ürä cün dü värïnsän dü ü ä dü üsü jüj läïlä küntröl',\n", - " \"we are afraid of the other's gaze, and of his judgment, controlled from the hyperworld\",\n", - " 'läbïrätë für sän ïlüsïön äë lä ür äë ëürt ïn äë yüm ündärä äë tï',\n", - " 'labyrinth for body, illusion, the heart of the human is at stake, experimentation on several levels',\n", - " 'für mï ündärä ür hün dhü dü këns fün äë lëïth värïnsän ëndäë',\n", - " 'what we are experiencing is a tiny frequency range, visible light, limited',\n", - " 'läbörätörï ündätï kïh vü äë sütch äë hün mör ä rïlïn',\n", - " 'giant lab where we pass tests, experience birth, death and rebirth',\n", - " 'mï ür äë ündä äë säë ëlk ön mï läë tä lëïth äë sän ür äë ündülïä dü läë',\n", - " 'we are holograms, electronic avatars of our soul of light, the body is the vehicle of the soul',\n", - " 'ël läë fündër pür mï ïlï ï rün äë vün mï ür düntö ï düntö väïüläntä',\n", - " 'she knows why we are here, in seeking the truth we are more and more humiliated',\n", - " 'läbïrätë fük ü fük war fük evil fük this mä universe',\n", - " 'labyrinth i curse you, war, you repulse me, evil, i reject you, i curse this universe of matter',\n", - " 'hi old human ï ür sörïä dü fälïsï lïüm vün lä begin here now',\n", - " \"hello old man, i'm the guardian of the false light, the real reality starts here, now\",\n", - " 'without evil without pain',\n", - " 'eternal life eternal löv',\n", - " 'eternal life, eternal love',\n", - " 'slave of the earth',\n", - " 'sisters neufciels',\n", - " 'sisters of the nine skies',\n", - " 'für time to bäc ïn light für time to bäc ïn tree of life',\n", - " \"it's time to get into the light again, it's time to enter the tree of life again\",\n", - " 'mï ür everything mï ür öl säë äë ütä',\n", - " 'we are everything, we are all spiritual creators',\n", - " 'mï ür öl ütä dü lümïnärë mï ür öl ütä dü löv',\n", - " 'we are all creatures of light, we are all creatures of love',\n", - " 'páter i̱mó̱n toís ouranoís, (our father in heaven)',\n", - " 'elthéto̱ i̱ vasileía sou (your kingdom come)',\n", - " 'o̱s en ouranó̱ kaí epí tí̱s gí̱s (x2) (on earth as it is in heaven)',\n", - " 'kaí áfes i̱mín tá ofelí̱mata i̱mó̱n, (and forgive our sins)',\n", - " 'o̱s kaí i̱meís afíemen toís ofeilétais i̱mó̱n (as we forgive our debtors)',\n", - " 'kanaan, kanaan, kanaan, uhh',\n", - " 'dien düwel is min hilig spook',\n", - " 'die naome for em de öwerei',\n", - " 'met enem kiker inhöd he us',\n", - " 'he is usse allvader',\n", - " 'sien suon swingt sienen groten sliäger',\n", - " 'schenkt kamp und feel de liäewemsläasse',\n", - " 'de klafunnig in us dat is sien riek',\n", - " 'dien afgunst usse liekenfier',\n", - " 'met saxnoths swiärt an wodens rawen',\n", - " 'kuemt de daag de kiäar',\n", - " 'de frihait for usse glaiwen',\n", - " 'ap usse toohuuswäg to us siälwst',\n", - " 'saxnoth das is usser guod',\n", - " 'de wiägerune fört us tom krieg',\n", - " 'dien swinestiäale met küüs nut steen',\n", - " 'dien kiäarken wäern briänen',\n", - " 'de ümswüng tiegen sklaoverie',\n", - " 'losriten von de kieden',\n", - " 'knieweln fasttüen usse siäle',\n", - " 'min liäewedag nich mäer',\n", - " 'met saxnoths swiärt an wodens rawen',\n", - " 'kuemt de daag de kiäar',\n", - " 'de frihait for usse glaiwen',\n", - " 'ap usse toohuuswäg to us siälwst',\n", - " 'dün dï ün fïrë lïnï ü für sätä',\n", - " 'so, without all the valorous fire, all belongs to the shadows',\n", - " 'dün dï ün fïrë lïnï ü für sätä',\n", - " 'so, without all the valorous fire, all belongs to the shadows',\n", - " 'dün dï ün fïrë sätä ründä',\n", - " 'so, without the valorous fire, the shadows progress',\n", - " 'mï üntäï wük mï säë',\n", - " 'spirit full of scars',\n", - " 'mï üntäï wük mï ëürt',\n", - " 'heart full of scars',\n", - " 'nö',\n", - " 'no',\n", - " 'ïlï fü ütä',\n", - " 'here, the creatures are crazy',\n", - " 'nö',\n", - " 'no',\n", - " 'üntä ïlï ländä tä',\n", - " 'here, our beautiful hell',\n", - " 'ütä',\n", - " 'crawl',\n", - " 'ündä ï ü vï',\n", - " 'unlivable and everything is paradoxical',\n", - " 'günt yümä yä täyä',\n", - " 'crucified, beautiful humanity screams with all its might',\n", - " 'dä dëä ï tchï',\n", - " 'the tears are falling and we are desperate',\n", - " 's tï ländäë',\n", - " 'is the paradise that we have lost up there?',\n", - " 's tï lï',\n", - " 'may we overcome ego?',\n", - " 's tün rï',\n", - " 'we have summoned brutality and emptiness',\n", - " 'dürï däë',\n", - " 'a deadly winter',\n", - " 'dä dëä ï tchï',\n", - " 'the tears are falling and we are desperate',\n", - " 'ündätï lïnï',\n", - " 'eternal tree of life',\n", - " 'äbÿm',\n", - " 'damaged',\n", - " 'äbÿm',\n", - " 'damaged',\n", - " 'äbÿm',\n", - " 'damaged',\n", - " 'ï ür dïlïr sä',\n", - " \"i'm dirty and broken\",\n", - " 'ï ürä mï läë äbÿm',\n", - " 'my soul is damaged',\n", - " 'äï ä dï',\n", - " 'transformation through pain',\n", - " 'lïnï',\n", - " 'tree of life',\n", - " 'tä läë yä',\n", - " 'our soul is screaming',\n", - " 'ündülï',\n", - " 'bravery',\n", - " 'dïlï dïlï ür',\n", - " 'we are skinned, torn',\n", - " 'ï dïlï yüm',\n", - " 'in a fallen humanity',\n", - " 'ür läë ä yüm dä ündätï',\n", - " 'the souls of men cry for such a long time',\n", - " 'dä lï ündülï yüm',\n", - " 'the lying man sentenced to tears',\n", - " 'dü sündälï dïlï yüm',\n", - " 'suns that die, men torn',\n", - " 'ündë ä läë',\n", - " 'unsightly souls',\n", - " 'fürï säntä',\n", - " 'dispossessing anger',\n", - " 'dä ä dä ündätï',\n", - " 'tears, eternal tears',\n", - " 'mï qrö mï düntö säë ür hün qrö für äï',\n", - " 'the most spiritual crown is a crown of thorns',\n", - " 'sütch dü düntö ï dü mä',\n", - " 'experience of good and evil',\n", - " 'tërëä',\n", - " 'earthlings',\n", - " 'mï üntäï wük mï ëürt',\n", - " 'heart full of scars',\n", - " 'tërëä',\n", - " 'earthlings',\n", - " 'tërëä',\n", - " 'earthlings',\n", - " 'tä üntäï wük für kï',\n", - " 'full of injuries in the head',\n", - " 'mï südürü wük mï säë',\n", - " 'spirit full of bruises',\n", - " 'tërëä',\n", - " 'earthlings',\n", - " 'mï ëürt fïrë',\n", - " 'my heart is on fire',\n", - " 'tërëä',\n", - " 'earthlings',\n", - " 'mï läë ündätä',\n", - " 'a patched soul',\n", - " 'ündä lä ï yüm',\n", - " 'infernal reality in man',\n", - " 'dälï ï yüm',\n", - " 'men divided',\n", - " 'für ländä tä yüm',\n", - " 'the sky is the house of the human race',\n", - " 'yüm dälä ï yüm',\n", - " 'humanity, men in torment',\n", - " 'dälä ï',\n", - " 'inner torment',\n", - " 'dälä ï',\n", - " 'inner exhaustion',\n", - " 'nöc yüm dä yüm',\n", - " 'dark humanity, the tears of man',\n", - " 'däë ländä',\n", - " 'disgusting paradise',\n", - " 'dälä ï',\n", - " 'inner suffering',\n", - " 'dälä nöc yüm',\n", - " 'dark torment of men',\n", - " 'dïspärät für lïnï für ländä',\n", - " 'far from the tree of life and heaven',\n", - " 'mï ëï für mï ründä ür hün ëï für dä',\n", - " 'the path of elevation is a path of tears',\n", - " 'öl wük für ëdën ï dü dörï',\n", - " 'as much as exaltation and sublimation',\n", - " 'öl für dïvïr ïn tï für mä ï hüp',\n", - " 'everything that comes from above is paid by faith',\n", - " 'für sütch ïn sütch ür dölörä ï ön käë',\n", - " 'tested in the ordeal of suffering and of chaos',\n", - " 'ëï öl ür täë üvï für körüm hün tün dü tündü hün tï cündürï',\n", - " \"where all the promised lands are won by loyalty to one's quest\",\n", - " 'hün tün dü färündï',\n", - " 'with sweat',\n", - " 'für sän ï ïlä dä äyä',\n", - " 'with blood and tears hurled',\n", - " 'hün für cö hün mï',\n", - " 'clinging to the helm',\n", - " 'mï cündürï dü tï ür günt',\n", - " 'the quest of height is crucifying',\n", - " 'sän dü hün ürï für ï ürä ündï sä',\n", - " 'property of a world we have chosen',\n", - " 'ün ürï dü läïrä lï äë pärïön dü für sä',\n", - " 'the world of tomorrow belongs to the repented of this choice',\n", - " 'für värïnsän für ürï füch',\n", - " 'who looks upon this world face up',\n", - " 'ïn s pärïön',\n", - " 'begging for forgiveness',\n", - " 'ïn s pärïön',\n", - " 'begging for forgiveness',\n", - " 'ür für ürä cün dü ündï',\n", - " 'he who is afraid of suffering',\n", - " 'für mï kä',\n", - " 'who refused it',\n", - " 'ün mï vïrï für ü kä',\n", - " \"that's life that he refuses\",\n", - " 'hün äë für ürä ündï für ündülï',\n", - " 'to those who have had a heart of compassion',\n", - " 'hün äë für ürä ündï fün ëlö dörï ïn für värïnsän ëï mï ländä',\n", - " 'to those who dared to think differently, turning back to the stars',\n", - " 'tänk',\n", - " 'thank you',\n", - " 'türï mï ündülï ü',\n", - " 'unfortunately, i understand you',\n", - " 'yüm ür ïrïn üsü fün ünsï',\n", - " 'humanity is searching for its own little comfort',\n", - " 'mï yä ëï xplö',\n", - " \"i'm screaming up until i explode\",\n", - " 's ürä für äë fïrë käë ï mä',\n", - " 'are there only the flames, chaos and evil ?',\n", - " 'fur sutch luminare di du yum',\n", - " 'the light is consumed, transforms humanity',\n", - " 'käë',\n", - " 'chaos',\n", - " 'ür üntö',\n", - " 'you and me',\n", - " 'lücï',\n", - " 'lucifer',\n", - " 'ï crï für ü',\n", - " 'i cry for you',\n", - " 'mï ëürt säïr für ü',\n", - " 'my heart bleeds for you',\n", - " 'ündï für mï güd sätä cür ü für cündï dü sän',\n", - " 'our malevolent gods have taught to the human to feed themselves on flesh',\n", - " 'ündï für mï güd sätä cür ü mï ägrä',\n", - " 'our malevolent gods have taught us agriculture',\n", - " 'ündï für mï güd sätä cür ü für vü fï ï fürï',\n", - " 'our diabolical gods have taught us to wage war and predation',\n", - " 'ündï für mï güd sätä cür ü für düntö ründö',\n", - " 'our diabolical gods have taught us not to be cold',\n", - " 'ï ründö',\n", - " \"i'm cold\",\n", - " 'ï mä',\n", - " \"i'm hurting\",\n", - " 'ï mä',\n", - " \"i'm hurting\",\n", - " 'ï mä',\n", - " \"i'm hurting\",\n", - " 'jüd mï üntä',\n", - " \"let's get out of darkness\",\n", - " 'sü cösä mï mä ï dïvïr ëï löv',\n", - " 'fight against evil and come back to love',\n", - " 'ür mä',\n", - " 'we are hurting',\n", - " 'lïbërtätë ündätï',\n", - " 'eternal liberation',\n", - " 'sölü ü ün mä für ü ür ün vü ündï',\n", - " 'despite all the evil you have done us',\n", - " 'ï nöt rün ü',\n", - " 'i do not hold it against you',\n", - " 'ï vüntï ü',\n", - " 'i pity you',\n", - " 'ï rün für ü rü mï lïüm dü lümïnärë cündö für ü ündï ür',\n", - " 'i want you to become again the protective angel of light that you once were',\n", - " 'jüd mï üntä',\n", - " \"let's get out of darkness\",\n", - " 'sü cösä mï mä ï dïvïr ëï löv',\n", - " 'fight against evil and come back to love',\n", - " 'ündülï ï crï',\n", - " 'compassion, i cry',\n", - " 'sülï ü lä nöt lïbërtä',\n", - " 'alone, you cannot free yourself',\n", - " 'nö ïlë für mä',\n", - " 'do not react to evil',\n", - " 'mä',\n", - " 'evil',\n", - " 'lücï yä ä mï',\n", - " 'lucifer scream with me',\n", - " 's güd ïn täë',\n", - " 'recalling the creator on earth',\n", - " 'dïvïr tälürïn ëï löv',\n", - " 'we return all to love',\n", - " 'dü üntï ëï ëdën',\n", - " 'darkness to the heavens',\n", - " 'ündülï ï ïn jüd läïrä tälürïn füch färïä',\n", - " 'bravery, we can all get through this, big brother',\n", - " 'öl ündätä ündätï',\n", - " 'everything always manages',\n", - " 'ï lör ü lücï',\n", - " 'i love you lucifer',\n", - " 'ür cündü värïnsän ür hün fün für fö für hün fün ür lä für hün fün ür lïüm',\n", - " 'we only see part of the show, only one part of reality, one part of the light',\n", - " 'cündülï dä vïrï sïk lï immortal dalek dust ïn köm dust one valid eye',\n", - " 'aberration, tear, unhealthy existence, lying',\n", - " 'äë ütä ücö ïn läë gräcë dü für ï äë törï dü ü ütä',\n", - " 'living beings stay alive thanks to the death and exploitation of other living beings',\n", - " 'äë dädä ëndäë ïn düntäë äë täë',\n", - " 'the food ends in defecation, the earth',\n", - " 'hün ürï mï sä ürï dü ündä sörvï tä äë yüm yüm äë üdï cündï',\n", - " 'a world of free will, world of vice, slave of food, the food chain',\n", - " 'ïn sä äë kälün äë düntö fün künstrük ür üvï für vïrï dü äë ürtï ür ündätï fürï',\n", - " 'through which weaker animals develop strategies, to survive the violence of big predators',\n", - " 'ü cündülï ü pärädä ü cündülï köböl(d) ürï ïn täë',\n", - " 'your paradise of matter is aberrant, your fake world is stupid, the spirit of life in density',\n", - " 'cündülï nö ï vä für cündülï nö ü pärädä ü cündülï nö cör',\n", - " \"i don't agree to this aberration, this nonsense, your false paradise, your absurdity, inhuman\",\n", - " 'für cündülï nö ü pärädä köböl(d) väïüläntä däë',\n", - " 'this nonsense, your false paradise, false paradise violent, repugnant',\n", - " 'öl für krëät lä gräcë ür fürï dü ürä äë ïlï dïtï ür lï vün ündä',\n", - " 'all this creation works through predation, by parasitism, the physical world is our real hell',\n", - " 'tribulation x',\n", - " 'hün ürï mï dörï ëndäë khïp ï mï vün ürï hün zü ündä für läë ïlï',\n", - " 'a world of ephemeral beauties, copied to the real world, a holographic zoo for detained souls',\n", - " 'solution diverted täë ïlï',\n", - " 'the solution is to turn away from this earthly calvary',\n", - " 'mï nö ür pärädä mï nö lä vä für ündü sörï',\n", - " 'i will never be part of your false paradise, i cannot accept these paradigms, sorry',\n", - " 'ïkär nö ür pärädä sörï köböl(d) ür täë ïlï',\n", - " 'icarus, i do not accept your paradise, sorry, your earthly prison, false paradise',\n", - " 'rëvëürt sätä äë fö nö lïbërätë nö sï tï cör',\n", - " 'revolt of the heart, demons and liars cannot be free, no ascension without heart',\n", - " 'küntröl eternity köböl(d) eternity klük',\n", - " 'eternal control, false eternal paradise, time',\n", - " 'öl ä hün jül dïspärät künstrük vü ïcë nö pärädä',\n", - " 'all that has a form will disappear, will be recomposed, stuck in a false paradise',\n", - " 'fürüs dü äë värïnsän dü äë dïtï cündüïlï ürï ündö klük',\n", - " 'reward for allegiance to matter, locked in a space-time loop',\n", - " 'äë ïlïs ür hün änï hün tï këns hün tï cöï dü äë künstrük vü dü äë yümä',\n", - " 'this world is a passage, a vibratory level, a necessary step in the reconstruction of the original soul',\n", - " 'ündï ïlï ü kälün dü lïgï ü lör',\n", - " 'from the most beastly prisoner to the most benevolent priest',\n", - " 's ïlündïlï dü kön sö ïlündïlï dü günt ücö ïlï ïn küb nï lïbërtä ü',\n", - " 'ready to survive so ready to kill ? remain trapped in the cube or to free oneself from it ?',\n", - " 'für hün fälïündï ündäë für hün fälïündï ëdën',\n", - " \"it's a false eternity, it's a false paradise\",\n", - " 'vï hün löv tündü dü hün dïmëntä tï törï ïn für ïlï',\n", - " 'duality, love belongs to a higher dimension, exploited in this world',\n", - " 'ïn pärädä ü ürä änï vü rïvï nöc jüd pärädä rïvï sö ü vü lëïth',\n", - " 'in paradise we made a revolution of darkness, on the outside of paradise we will make the revolution of light',\n", - " 'lëïth rëvëürt rïvï lëïth nö pärädä täë lëïth',\n", - " 'light, revolt of the heart, revolution of light, no earthly paradise, light',\n", - " 'rïvï cösä ïlïs äë sä ü cöïündï ür äë vürï güd rïündï ür hüp sïk',\n", - " 'revolution, opposition, making choices, they say that the higher divine reality is a belief, sick',\n", - " 'ür ël cündü ür nö vürï jüj sï täë ia ia',\n", - " 'that it is not concrete, only the earth',\n", - " 'sï täë ür hün ündärä dü ëürt hün ündärä bäc hün sütch tä hüp',\n", - " 'but the earth is a test of the heart, a rehabilitation test, a test of faith',\n", - " 'nö pärädä täë sölïtïüdï yüm human see yüm universe sï lï',\n", - " 'no earthly paradise, disunity, the human only believes what he sees, the universe of the human is a lie',\n", - " 'cündürü vün sölär sïk vün galacia sïk',\n", - " 'mental barrier, false truth about the sun, false truth about the galaxy',\n", - " 'äë täë ür hün ëdën rüntäë für äë läë cündü',\n", - " 'the earth is an artificial paradise, for violent souls',\n", - " 'für ür ël lä ündärä hün mä sï ël rün dälï ün lïläë äë ürï güd',\n", - " 'so that they can experience evil, if they want, separated, without affecting the world of light',\n", - " 'küb d täë ia köböl(d) düntäë conflict täë',\n", - " 'a cube for demon, the earth, managed by an artificial intelligence, false dualist paradise, the land at war',\n", - " 'area 6, area 9 area 9, area 6',\n", - " '6 säë ïlï cö ïlï fö ïlï mä ïlï sïmüläë sï lï',\n", - " '6, partitioned spirit, chained mysteriously, world of lies, world of clumsiness, material simulator',\n", - " '9 läë ï lï sä ï lï cö ï lï fö ï lï säë lï sïlëncïä',\n", - " '9, the soul in matter, choose our camp, linked to the ego, hypocritical theater, the avatar lies to us in silence',\n", - " 'ündütä äë qrö rän rü hün lörn üt äë lörn hün fïnx',\n", - " 'repair, the crow must become a unicorn, purification, the unicorn a phoenix',\n", - " 'dörï äë fïnx ür üt lïüm ündätï',\n", - " 'sublimation, the phoenix of eternal pure light',\n", - " 'tärvï dü dïmëntä kïrän äë düntö fün äë',\n", - " 'change of dimension, protection of the little ones',\n", - " 'für nö lä ürä tä ëdën köm ëï ürä hün ütä kïh dälä',\n", - " 'there can be no paradise from the moment that there is someone who suffers',\n", - " 'ëï äë hün günt ü für vïtï ä ëï für ütä äë fï',\n", - " 'where some kill others to live, and where there is war',\n", - " 'mä nöc löv',\n", - " 'sadness, dark, passion',\n", - " 'mï löv mï cör säïr ündätï khïp nö sän cündü ündülï üntö',\n", - " 'my love, my heart always bleeds as much, nobody understands me',\n", - " 'ïlï äë fü ür kï ä äë dïrïün ür günt ï dïlïr',\n", - " 'here the fools are kings and the heroes are mocked and banished',\n", - " 'öl äë dörï fürüs lö ü ïn äë dätä ïn äë lïdï',\n", - " 'all the beautiful moments will be lost in time, into oblivion',\n", - " 'köm äë dä ïn äë dïlï',\n", - " 'like tears in the rain',\n", - " 'für ürï vü däë ü ür ï löv',\n", - " 'this world is killing those we love',\n", - " 'plëz mï güd lïbërätë mï',\n", - " 'please, my god, free me',\n", - " 'öl ür dïë öl äë ürï vä öl äë ürï ürä cün',\n", - " 'everything is perishable, everyone accepts, everyone is scared',\n", - " 'öl s äë bäyë mï ürtï',\n", - " 'no more questions about murders, violence',\n", - " 'vä öl äë ëntör ïn für ürï',\n", - " 'by accepting all the laws of this world',\n", - " 'ï cün',\n", - " 'by fear',\n", - " 'sörvï vülc yüm',\n", - " 'voluntary servitude of the human',\n", - " 'nöc säë',\n", - " 'black spirit',\n", - " 'lümïnärë ündürï ïn hün ürï ëï öl ür ëndäë',\n", - " 'impossible ideal in a world where everything is ephemeral',\n", - " 'lïvïr äë sölü sündätï vü ä vü',\n", - " 'living the same day again and again',\n", - " 'sän sörvï läë',\n", - " 'the flesh holds my soul',\n", - " 'ämä ï rän ïn täë',\n", - " 'maintained, by force, on earth',\n", - " 'ïlï öl kïh ür dörï rü träg',\n", - " 'here, everything that is wonderful becomes tragic',\n", - " 'öl kïh ür träg rü dörï',\n", - " 'all that is tragic becomes formidable',\n", - " 'tärïn përk ünpërk përk',\n", - " 'perfect balance, perfect imperfection',\n", - " 'human ü fell',\n", - " 'human, you fell',\n", - " 'sätä sö sörvï ïn täë',\n", - " 'become unconscious and locked on earth',\n", - " 'ör false god lies',\n", - " 'your false god lies',\n", - " 'choose ür master',\n", - " 'choose your master',\n", - " 'no more täë with violence',\n", - " 'never again of the violent planet earth',\n", - " 'no more human with ignorance',\n", - " 'no more ütä with arrogance',\n", - " 'never again creatures with arrogance',\n", - " 'humanity has fallen',\n", - " 'ï crï für mï öl',\n", - " 'i cry for all of us',\n", - " 'für äë ïlï ürtï ï ür',\n", - " 'for the violent prisoners that we are',\n", - " 'äë dëmön ür ürï',\n", - " 'the demons of this world',\n", - " 'ür ürä hün ütä dörï dü äë jüd dü für lä',\n", - " 'we have a wonderful life outside of this game',\n", - " 'hün läë ünfü dörï',\n", - " 'a tremendously beautiful soul',\n", - " 'ï ündülï äë lïüm ündü dü ïlïs ündü änï ïn mï vën',\n", - " 'i feel the primordial light of the original creator circulating in my veins',\n", - " 'a-ha-hah!',\n", - " 'bwah-ha-ha!',\n", - " '(cough! cough!)',\n", - " 'ha ha ha ha!',\n", - " 'nyah-ha-ha!',\n", - " 'ha ha ha . . . ha ha ha ha ha ha . .',\n", - " 'nyah-ha-ha-ha!',\n", - " 'oh . . . arbitrary!',\n", - " 'nyah-ha-ha-ha!',\n", - " 'ha ha ha ha ha ha ha!',\n", - " 'ah ha ha ha ha',\n", - " 'ah ha ha ha',\n", - " 'arbitrary!',\n", - " 'ha ha',\n", - " 'ha ha ha ha ha ha!',\n", - " 'bwah ha ha . . . (cough!)',\n", - " 'mmph ha ha ha!',\n", - " 'ha ha ha!',\n", - " 'ha ha ha (cough! cough!)',\n", - " 'ah ha ha ha ha',\n", - " 'ah ha ha ha',\n", - " 'arbitrary!',\n", - " 'ha ha',\n", - " 'ha ha ha ha ha ha!']}}},\n", - " 'sv': {'sentence': {'pop': {'meta': {'train_data': ['om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", - " 'vi har både drank and drugs, det finns drank and drugs',\n", - " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", - " 'vi har både drank and drugs, det finns drank and drugs',\n", - " 'jag har drank and drugs, jack och blunts',\n", - " 'stop the cuss, crack och buds, drank and love',\n", - " \"jag ba' walla på mother, är jävligt hög\",\n", - " 'du tar knappar och flabbar som crack monsieur',\n", - " 'damn, benim är singel, har träffat på eva så gäri blir dränkt',\n", - " 'vaknar på fredan med molly i sängen',\n", - " 'tog henne så hårt att hon kände sig kränkt',\n", - " 'fucka ur på alla sätt livet som ges ska levas fett',\n", - " 'har ingen tid med \"var inte blyg!\" orkar inte med projekt',\n", - " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", - " 'vi har både drank and drugs, det finns drank and drugs',\n", - " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", - " 'vi har både drank and drugs, det finns drank and drugs',\n", - " 'välkomen till festen, mina gäster dom går loss',\n", - " 'dom har traddar, habbar, äzi, mdma, dom har ?',\n", - " 'det e suedis ifrån söder o det förortsbarn förstås',\n", - " 'kom o fucka ur med oss, mina amigos har en torsk',\n", - " 'fucka ur på alla sätt livet som ges ska levas fett',\n", - " 'har ingen tid med \"var inte blyg!\" orkar inte med projekt',\n", - " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", - " 'vi har både drank and drugs, det finns drank and drugs',\n", - " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", - " 'vi har både drank and drugs, det finns drank and drugs',\n", - " 'om din guzz vill chilla',\n", - " 'om din boy vill chilla',\n", - " 'om din guzz vill chilla',\n", - " 'om din boy vill chilla',\n", - " 'om din guzz vill chilla',\n", - " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", - " 'vi har både drank and drugs, det finns drank and drugs',\n", - " 'om du är sugen på chilling, inget problem bror, fuck it det löser vi',\n", - " 'vi har både drank and drugs, det finns drank and drugs',\n", - " 'ett ondskans mörker flyter ut i skogarna',\n", - " 'nattetid, da kristet blod har sin vila',\n", - " 'en ande fran den gamla världen',\n", - " 'nattens svarta valnad',\n", - " 'en skugga fran urtiden',\n", - " 'djävulens hand pa jorden',\n", - " 'en själens bane',\n", - " 'en uraldrig styggelse',\n", - " 'en gang uppstigen fran underjorden',\n", - " 'kallar dig inatt',\n", - " 'an evil darkness flows into the forests',\n", - " 'nighttime, when christian blood has its rest',\n", - " 'a spirit from the old world',\n", - " 'the nights black phantom',\n", - " 'a shadow from ancient time',\n", - " \"the devil's hand on the earth\",\n", - " \"the soul's bane\",\n", - " 'an ancient abomination',\n", - " 'once risen from the underworld',\n", - " 'calling you tonight',\n", - " 'fall deep into void',\n", - " '(in the) black hole of nothing',\n", - " 'soprano:',\n", - " 'hail, flow of vergelmar',\n", - " 'hail, flow of vergelmar',\n", - " 'hail, flow of vergelmar',\n", - " 'hail, old void!',\n", - " 'alto:',\n", - " 'hail, flow of vergelmar',\n", - " 'heat of creation',\n", - " 'hail, flow of vergelmar',\n", - " 'hail, old void!',\n", - " 'tenor/bass:',\n", - " 'spark in the nothingness',\n", - " 'heat of creation',\n", - " 'make the ice start to melt',\n", - " 'life wake up in the void',\n", - " 'ymer is born, fire and ice',\n", - " 'chaos will form, megin will rise',\n", - " 'fader ymer drack fran urkon',\n", - " 'en strom av mjolk som gav oss liv',\n", - " 'oppna gapet i ryndend mitt',\n", - " 'floda av blod fran ymers kropt',\n", - " 'varldar skapas utav hans kott',\n", - " 'nio (till) antal pa yggorasil',\n", - " 'ymers gap - ymers runa',\n", - " 'ymers ond - ymers urlag',\n", - " 'hundred dollar bills, hundred dollar bills',\n", - " 'hu-un-dred bills, hundred dollar bills',\n", - " 'hundred dollar bills, hundred dollar bills',\n", - " 'hundred d-, hundred d-, hundred dollar bills',\n", - " \"got 'em hundred dollar bills\",\n", - " 'hundred dollar bills, hundred dollar bills',\n", - " 'hu-un-dred bills, hundred dollar bills',\n", - " 'hundred dollar bills, hundred dollar bills',\n", - " 'hundred d-, hundred d-, hundred dollar bills',\n", - " 'words yet unspoken',\n", - " 'some promise unbroken',\n", - " 'these are the tokens i cling to',\n", - " 'kisses ungiven',\n", - " 'dreams yet unlived in',\n", - " 'these are the gifts i can bring you',\n", - " 'can bring to you ... so tell me',\n", - " 'who goes there',\n", - " 'step out of the night and just show me you care',\n", - " 'take these gifts that i bear ... and i will know',\n", - " 'love is here',\n", - " 'who goes there',\n", - " 'do you come as a friend or a foe ... and if so',\n", - " 'should i stay ... should i go',\n", - " 'i need to know',\n", - " 'i need to know',\n", - " 'tantos caminhos',\n", - " 'sempre a seu lado',\n", - " 'fomos deixando pra trás',\n", - " 'o amor sozinho',\n", - " 'foi se perdendo',\n", - " 'agora é tarde demais',\n", - " 'demais',\n", - " 'pra voltar',\n", - " 'who goes there',\n", - " 'step out of the night and just show me you care',\n", - " 'take these gifts that i bear ... and i will know',\n", - " 'love is here',\n", - " 'who goes there',\n", - " 'não sei pra você o que sou',\n", - " 'se acabou ... and if so',\n", - " 'should i stay ... should i go',\n", - " 'eu preciso saber',\n", - " 'i need to know',\n", - " '(extra credits: stockholm session strings:',\n", - " 'violin: ulf forsbeg (concert master), anders hjorvfall, roland kress, mira malik, hanna boström, renate klavina, martin stensson, bo söderström, jan isaksson, janika gustafsson, torbjörn bernhardsson, monika stanikowska, dag alin, christian bergqvist, saara nisonen-oman, per hammarström',\n", - " 'viola: elisabeth arnberg, carmilla svarfvar, hans akeson, marius mateescu, ann christin ward, åsa stove-paulsson',\n", - " 'cello: astrid lindell, monica jönsson, anna ljungberg, åsne volle, jana boutani',\n", - " 'double bass: ingalill hillerud, peter lysell, michael karlsson)',\n", - " 'det va en tjej - do do dodododo do',\n", - " 'det va en grabb - do do dodododo do',\n", - " 'dom simma ut - do do dodododo do',\n", - " 'och längre ut - do do dodododo do men då kom…',\n", - " 'hajarna, hajarna, hajarna, hajarna',\n", - " 'o pappa haj - do do dodododo do',\n", - " 'o mamma haj - do do dodododo do',\n", - " 'o mormor haj - do do dodododo do',\n", - " 'o mini haj - do do dodododo do',\n", - " 'dom tog en arm - do do dodododo do',\n", - " 'dom tog en till - do do dodododo do',\n", - " 'dom tog ett ben - do do dodododo do',\n", - " 'dom tog en knopp - do do dodododo do',\n", - " 'dom tog en kropp - do do dodododo do',\n", - " 'och det kom blooooood...',\n", - " 'en massa bloooood...',\n", - " 'i en kvalmfylld, andlig öken har jag sett dem gå',\n", - " 'drabbade av själasoten, håglösa, med ilska i synen',\n", - " 'det är som sorgen aldrig skulle lämna deras ögon',\n", - " 'som om sinnet hade svartnat för evigt',\n", - " 'sammanträngda på ytor små',\n", - " 'lager på lager (i boningar grå) i ångestens högborg',\n", - " 'under jorden hastar de – jagande sökande; ingenting finnande',\n", - " 'varför stannar de aldrig upp?',\n", - " 'innan ni er fredliga gömma finner',\n", - " 'i susande lundar tvingas även ni till vila',\n", - " 'inte en stilla undran – en rasande fråga;',\n", - " 'varför stannar ni aldrig upp?',\n", - " 'oändligt upplyst – för alltid höljd i mörker',\n", - " 'inga stjärnor ser jag lysa här',\n", - " 'vilka skalder dikta i denna dimma?',\n", - " 'vilka målare sina verk här färgar?',\n", - " 'oändligt upplyst – för alltid höljd i mörker',\n", - " 'vilka målare sina verk här färgar?',\n", - " '------------------------------------------------------------',\n", - " 'english translation:',\n", - " 'the stronghold of angst',\n", - " 'in a suffocating, spiritual desert i have seen them wander',\n", - " 'struck by the soul-plague, listless, with anger in their gazes',\n", - " 'it is as if sorrow would never leave their eyes',\n", - " 'as if the mind had been blackened forever',\n", - " 'compressed into small spaces',\n", - " 'layer upon layer (in gray dwellings) in the stronghold of angst',\n", - " 'below the ground they hurry - hunting, searching; finding nothing',\n", - " \"why don't they ever stop going?\",\n", - " 'before you find your peaceful hideouts',\n", - " 'in murmuring groves even you are forced to rest',\n", - " 'not a calm wondering – a furious question:',\n", - " \"why don't you ever stop going?\",\n", - " 'endlessly enlightened – forever wrapped in darkness',\n", - " 'no stars do i see shining here',\n", - " 'what bards would write in this fog?',\n", - " 'what painters would colour their works here?',\n", - " 'endlessly enlightened – forever wrapped in darkness',\n", - " 'no stars do i see shining here',\n", - " 'what painters would colour their works here?',\n", - " 'ayo',\n", - " \"i'm chilling in the sofa\",\n", - " 'light an ounce up with a bread toaster',\n", - " 'losing my composure',\n", - " 'fucked up in a fucked up culture',\n", - " 'images of me not getting older be fucking my high',\n", - " 'drugs destroy so many young lives but fuck it not mine!',\n", - " '*estupidos*',\n", - " 'shut up bitch',\n", - " 'what you know about this',\n", - " 'when kids are willing to sell their mom just to get a hit',\n", - " 'they say it starts off with a spliff',\n", - " 'and ends tragically with a needle',\n", - " 'shoved up in your artery inside a stolen vehicle',\n", - " 'rest in peace, those that fell victim to bad smack',\n", - " 'all of you burning aluminium foil need to stop that',\n", - " \"but i can't front these drugs got me busting mad vocals\",\n", - " 'in a one bedroom apartment sniffing lo lo going loco',\n", - " \"no, no, yeah, yeah, it's a never ending circle\",\n", - " 'i still remember the first time i ever puffed that herb yo',\n", - " \"i fell in love with it, and i'm not planning on no divorce\",\n", - " 'you made a bad choice in life kid fuck if that my loss',\n", - " 'estupidos',\n", - " 'estupidooos',\n", - " 'estupidos',\n", - " 'estupidooos',\n", - " 'yao, du låser in mig syr in mig lägger mer tyngd på mig',\n", - " 'skyldig eller icke skyldig pliten varför ska du bry dig',\n", - " 'frihetsberöva hatet du förökar mig du undanstökar i en mörk cell',\n", - " 'som äckligt spökar',\n", - " 'va e det med dig lugna ner dig!',\n", - " 'vadå lugn?! suttit sex år av mitt liv plit vadå lugn?!',\n", - " 'det du gör e skapar ett monster med hat som växer våldsamt plågsamt',\n", - " 'det låter nog otroligt plit men det är råsant',\n", - " 'ser på er, få spel på er, det känns som att jag inte är en del av er',\n", - " 'va ni mobbade som små eller vad är det som är fel på er?',\n", - " 'pliten lyssna på mig noga låt mig läsa min tidning ifred',\n", - " 'låt mig sitta min tid ifred',\n", - " 'pallar inte mer med er',\n", - " 'sättet du beter dig på, batongen som du bär med dig',\n", - " 'tanken på att nån gång så kanske du kan slå på mig',\n", - " 'få spel på dig,akta dig, stick härifrån',\n", - " 'slår ihjäl dig snart om du tror jag är nått fucking fån',\n", - " 'estupidos',\n", - " 'estupidooos',\n", - " 'estupidos',\n", - " 'estupidooos',\n", - " 'yo check the sermonizer',\n", - " 'more philosopher',\n", - " 'who knows that it works both ways',\n", - " 'so i managed to control my conquerer',\n", - " '?? went to shut him out',\n", - " 'i even know when the bastard opened his mouth to try and outsmart me with his mouth',\n", - " 'like i said',\n", - " \"i'm writing my own\",\n", - " \"diagnosis, even though it's not good for me i'm back stage with hoes\",\n", - " 'estupidos',\n", - " \"don't let a piece of ass control your mind\",\n", - " 'make you dumb, deaf and blind losing all track of time',\n", - " 'but what you do know is',\n", - " 'that you gotta use a rubber',\n", - " 'then go home to your girl swallow your guilt tell her you love her',\n", - " 'mr lover lover',\n", - " 'secritly fighting his fate',\n", - " \"because he thinks he can't eat the same meal everyday\",\n", - " 'estupidises',\n", - " \"it's been like this\",\n", - " 'ano seis meses',\n", - " 'sin poderes para mi karma no crece me entiendes',\n", - " 'so if you comprehend this you can call me a prick',\n", - " 'the rest of you will follow this tip probably thank me for it',\n", - " 'estupidos',\n", - " 'estupidooos',\n", - " 'estupidos',\n", - " 'estupidooos',\n", - " 'yo,den här går ut till dem som bara klagar och klagar men inte gjort ett minsta lilla skit i sina dagar. invandrare som snackar om, sverige hit och dit. ey vad kommer du ifrån kompis ba stick då dit! till journalister som tror vi är värsta politiker, jaså blir man det bara för man är samhällskritiker. till er som tror på allting som tidningarna skriver, dom döljer, dom ljuger eller bara överdriver. alla ni ungdomar som skiter i utbildningen det är svårt att kunna på bli något det är verklighetsskildringen, lärare som är helt jävla oengagerade sen undrar dom \"varför är dom så omotiverade?\" citytunneln i malmö. oj oj oj vad du blev glad, ja hållkäften kan inte ens hitta en lägenhet i min stad, lägg av sluta ta, min del släng din mikrofon jag får spel på er vet du vad jag drar härifrån...',\n", - " 'estupidos',\n", - " 'estupidooos',\n", - " 'estupidos',\n", - " 'estupidooos',\n", - " 'heja usa, ni är världens bästa land',\n", - " 'hurray for usa, you are the greatest nation in the world',\n", - " 'heja usa, ni har världen i er hand',\n", - " 'hurray for usa, you have the world in your hand',\n", - " 'blir det krig idag tar ni ryssarna det är jättebra heja usa',\n", - " 'if war will break out then you will beat the russians that is really good hurray for usa',\n", - " 'heja usa, usa har alltid rätt',\n", - " 'hurray for usa, usa is always right',\n", - " 'det är jättebra att ni hjälper pinochet',\n", - " 'it is really good that you are helping pinochet',\n", - " 'för vi vet att han är en trevlig man vapen ska han ha heja usa',\n", - " 'cos we all know that he is a nice man you should give him guns hurray for usa',\n", - " 'heja ku klux klan och ronald reagan och nancy',\n", - " 'hurray for ku klux klan and ronald reagan and nancy',\n", - " 'heja caspar weinberger och new moral majority',\n", - " 'hurray for caspar weinberger and new moral majority',\n", - " 'heja usa, flera bomber mera krut',\n", - " 'hurray for usa, more bombs and more power',\n", - " 'heja usa, ryssen ska ha på sin trut',\n", - " 'hurray for usa, the russians should be beaten up',\n", - " 'blir det terrordåd finner ni på råd och klår araberna heja usa',\n", - " 'if you are struck by terror acts you will know what to do and kill the arabs hurray for usa',\n", - " '(the worst saxophone solo ever made) =))',\n", - " 'heja usa, ni har världens bästa mat',\n", - " 'hurray for usa, you have the best food in the world',\n", - " 'ökar krafterna hoes en bra elitsoldat',\n", - " 'it increase the strength in a good soldier',\n", - " 'ni är inga lamm det såg vi i vietnam där ni sprang så bra heja usa',\n", - " 'you are no cowards we saw that in vietnam there you ran so well hurray for usa',\n", - " 'vi ska ha respekt för amerikanens vita örn',\n", - " 'we should have respect for americas white eagle',\n", - " 'goda amerikaner ser en kommunist i varje hörn',\n", - " 'good americans sees a communist around every corner',\n", - " 'heja usa, ni kan göra som ni vill',\n", - " 'hurray for usa, you can do whatever you like',\n", - " 'blir det krig en dag, då kommer gud och hjälper till',\n", - " 'if it will be war, then god will come and help you',\n", - " 'för er predikant han är bra han talar sant',\n", - " 'cos your preacher is good he speaks the truth',\n", - " 'er kan ingen ta heja usa',\n", - " 'nobody can beat you hurray for usa',\n", - " 'ja! heja usa. skjut dom där jävla ryssarna och gör parkering av hela jävla ryssland',\n", - " 'yes! hurray for usa. shoot those fucking russians and make a parking lot of the whole fucking russia',\n", - " 'och så ta dom där oljiga arabjävlarna, ta deras olja och skjut ihjäl dom bara',\n", - " 'and then you will take those oily arabfuckers, and steal their oil and kill them',\n", - " 'förresten, skjut svenskarna också, det är bara präster och adel och borgare och bönder',\n", - " \"btw, kill the swedes to, its just a bunch of priests and nobility's and farmers\",\n", - " 'förresten, ta canada också, dom ruffar bara i hockey jämt',\n", - " 'btw, take canada to, they always play rough in hockey',\n", - " 'nej förresten, borra ett stort jävla hål i jorden, spräng hela jävla jorden i bitar. heja usa, spräng hela jävla solsystemet förresten! heja usaaaaaaaa!!!!!!!!!!!!!!!!!!',\n", - " 'no btw, drill a big fucking whole through the earth, blow up the whole fucking earth. hurray for usa, blow up the whole fucking solar system! hurray for usaaaaaaaaaa!!!!!!!!!!!!!!!!!!',\n", - " 'läser brevet, för att längta bort igen',\n", - " 'till en sommar, jag var där i solens land',\n", - " 'mötte amore, pulsen ökar i mig',\n", - " 'för dom härliga orden han skrev',\n", - " \"i'm so in la la la la love with you\",\n", - " 'and do you wa wa wa wa want me too',\n", - " 'jag ville tro varje ord',\n", - " 'men visste ändå att resan snart nådde sitt slut',\n", - " \"i'm so in la la la la love with you\",\n", - " 'and do you wa wa wa wa want me too',\n", - " 'den sommarn gick väldigt fort',\n", - " 'men minnet jag fick, var ljuvligt och kittlande skönt',\n", - " 'kalla dagar, kylan biter i min kropp',\n", - " 'drömmer om minnet, får grå dagar att fly fort',\n", - " 'läser brevet, orden ljuva som musik',\n", - " 'hör hans viskande lockande röst',\n", - " \"i'm so in la la la la love with you\",\n", - " 'and do you wa wa wa wa want me too',\n", - " 'jag ville tro varje ord',\n", - " 'men visste ändå att resan snart nådde sitt slut',\n", - " \"i'm so in la la la la love with you\",\n", - " 'and do you wa wa wa wa want me too',\n", - " 'den sommarn gick väldigt fort',\n", - " 'men minnet jag fick, var ljuvligt och kittlande skönt',\n", - " \"i'm so in la la la la love with you\",\n", - " 'and do you wa wa wa wa want me too',\n", - " 'jag ville tro varje ord',\n", - " 'men visste ändå att resan snart nådde sitt slut',\n", - " \"i'm so in la la la la love with you\",\n", - " 'and do you wa wa wa wa want me too',\n", - " 'den sommarn gick väldigt fort',\n", - " 'men minnet jag fick var ljuvligt och kittlande skönt',\n", - " 'många var de som föll',\n", - " 'desto fler runt valhalls fyllda bord',\n", - " 'en sorgesång jag skänker dem',\n", - " 'som vidare för i sköldmöars famn',\n", - " 'tankar och tårar till dem som gått hän',\n", - " 'som nu blickar vid asgårds port',\n", - " 'minnen och kväden skaldas snart',\n", - " 'vid elden i gillestid',\n", - " 'vi som här sitta höjer våra horn',\n", - " 'till de som sitter vid allfaderns bord',\n", - " 'tillsammans dricker vi segerns full',\n", - " 'till enöga vis',\n", - " 'hemma här i drottens hall',\n", - " 'skålar vi för äring och fred',\n", - " 'ingen sorg bär vi mer',\n", - " 'till glädje och rus vi ger oss hän',\n", - " 'english translation:',\n", - " 'many were those who fell',\n", - " 'all the more round the laden table of valhalla',\n", - " 'a song of mourning i give to them',\n", - " 'those who went to the embrace of shield maidens',\n", - " 'reminiscence and tears to those who went hence',\n", - " 'who now gaze by the gates of asagard',\n", - " 'memories and songs will soon be sung',\n", - " 'by the fire in times of feasting',\n", - " 'we who sit here raise our drinking horns',\n", - " 'to those who sit at the table of the father of all',\n", - " 'together we drink to victory',\n", - " 'and to one-eye wise',\n", - " 'here in the halls of the king',\n", - " 'we drink to yield and peace',\n", - " 'grief we carry no more',\n", - " 'we indulge in joy and intoxication',\n", - " 'pesten har en funnit',\n", - " 'ni kan ej fly',\n", - " 'döden skall dig taga',\n", - " 'ödet visar sin självklarhet',\n", - " 'kyrkoklockan som ständigt klang',\n", - " 'är nu tyst',\n", - " 'domen mot guds hus äro kommen',\n", - " 'när kyrkogrimmen ej längre ses',\n", - " 'är kristna liv lämnade till pestens makt',\n", - " 'ser hur livets ljusa dagar',\n", - " 'är endast ett minne blott',\n", - " 'insprukna i pestens pina',\n", - " 'snart död & borta för all tid',\n", - " 'bortom dagens mörker',\n", - " 'lever nattens ljus',\n", - " 'skapat utav djävulen när nu världen ligger i hans våld',\n", - " 'livets mening finnes i dödens avgrund',\n", - " '& skuggan av solen',\n", - " 'ses ej längre mer',\n", - " 'plague & torment',\n", - " 'the plague has found you',\n", - " 'you cannot escape',\n", - " 'death will take you',\n", - " 'fate shows its matter of course',\n", - " 'the church bell that constantly chimed is now silent',\n", - " 'the judgment of the house of god is here',\n", - " 'when the church guardian can no longer be seen',\n", - " 'christian lives are left to the power of the plague',\n", - " \"see how life's bright days\",\n", - " 'are nothing but a memory',\n", - " 'sunken into the torment of the plague',\n", - " 'soon to be dead and gone forever',\n", - " 'beyond the darkness of the day',\n", - " 'lives the light of the night',\n", - " 'created by the devil now that the world is in his hands',\n", - " 'the meaning of life is in the abyss of death',\n", - " 'and the shadow of the sun',\n", - " 'can be seen no more',\n", - " 'solen sjunker mellan fjäll och is',\n", - " 'ur marken stiger en märklig dis',\n", - " 'oknytt vakna de skrida fram',\n", - " 'undan springa helige kristi lamm',\n", - " 'vinden stiga till storm så mäktig',\n", - " 'likt en orkan den sveper fram',\n", - " 'undan springa helige kristi lamm',\n", - " 'de skall minnas denna dag',\n", - " 'de skall dömas av nattlig lag',\n", - " 'mäktig sång ljuda ur trollens läger',\n", - " 'de sjunga lovord fördömdas seger',\n", - " 'blodet rinner klingan skiner blöt',\n", - " 'ur svärdet som givit jesu sista stöt',\n", - " 'blodet dryper snön färgas röd',\n", - " 'här firas månen och kristi eviga död',\n", - " 'kom igen mörkrets väsen, denna natt är evigt lång',\n", - " 'inatt vi fira, inatt vi sjunga vår segersång!!!!!',\n", - " 'the sun sets between mountains and ice',\n", - " 'from the domain rises remarkable haze',\n", - " 'scent awakens them to stride towards',\n", - " 'away runs the holy christian lamb',\n", - " 'winds gather for the storm so powerful',\n", - " 'like a hurricane that sweeps towards',\n", - " 'away runs the holy christian lamb',\n", - " 'they shall remember this day',\n", - " 'they shall judge of nocturnal law',\n", - " 'powerful song sounds from the camp of trolls',\n", - " 'they sing to praise the condemned victory',\n", - " 'blood flows the soaked blade that shines',\n", - " 'from the sword that gave jesus the final thrust',\n", - " 'blood drips staining snow to red',\n", - " \"here celebrates moon and christianity's everlasting death\",\n", - " 'arrives the beasts of the darkness, this night is eternal',\n", - " 'tonight we celebrate, tonight we sing our victory chant!!!!!',\n", - " 'på svarta vingar buren',\n", - " 'över midgårds mark',\n", - " 'med bud om dagen',\n", - " 'och ormtungors fall',\n", - " 'vargtand och björnram',\n", - " 'eld och stål',\n", - " 'brutna löften, förgiftat land',\n", - " 'blodiga vingar skuggar mark',\n", - " 'sakta sluter sig hels hand',\n", - " 'kallar björnfot och gråben',\n", - " 'svurna samman i ed',\n", - " 'söner och döttrar av norden',\n", - " 'sprungna ur samma mull',\n", - " 'åter samlade till offer',\n", - " 'blot och lov till grimner',\n", - " 'låt spjutet bevingas i bärarens hand!',\n", - " 'vargtand och björnram',\n", - " 'eld och stål',\n", - " 'brutna löften, förgiftat land',\n", - " 'blodiga vingar skuggar mark',\n", - " 'sakta sluter sig hels hand',\n", - " 'seger till de av seden',\n", - " 'för yggdrasils rot',\n", - " 'seger till midgårds barn',\n", - " 'mot nidingars hat',\n", - " 'hammaren faller med ett dån',\n", - " 'horn blåser till sång',\n", - " 'blodörn ristas för nid:',\n", - " 'vedergällningens tid!',\n", - " 'vargtand och björnram',\n", - " 'eld och stål',\n", - " 'brutna löften, förgiftat land',\n", - " 'blodiga vingar skuggar mark',\n", - " 'sakta sluter sig hels hand',\n", - " 'ulvpälsar i kampens raseri',\n", - " 'blodiga sköldar spruckna',\n", - " 'bevingade ormar, blodörnens tid:',\n", - " 'vedergällningens tid!',\n", - " 'hammarens seger, hednatid:',\n", - " 'vedergällningens tid!',\n", - " '(english)',\n", - " 'time of vengeance',\n", - " 'on black wings borne',\n", - " \"over midgaard's land\",\n", - " 'carrying a message of the day',\n", - " 'and the fall of snake tongues',\n", - " 'wolf tooth and bear figure',\n", - " 'fire and steel',\n", - " 'broken promises, poisoned land',\n", - " 'bloody wings block out the sun',\n", - " \"slowly hel's fist clenches\",\n", - " 'calling bear foot and gray-legs',\n", - " 'sworn together in oath',\n", - " 'sons and daughters of the north',\n", - " 'made from the same soil',\n", - " 'again gathered for sacrifice',\n", - " 'praise to grimner',\n", - " \"let the spear fly true from the bearer's hand!\",\n", - " 'wolf tooth and bear figure',\n", - " 'fire and steel',\n", - " 'broken promises, poisoned land',\n", - " 'bloody wings block out the sun',\n", - " \"slowly hel's fist clenches\",\n", - " 'victory to the faithful',\n", - " 'of the root of yggdrasil',\n", - " 'victory to the children of midgaard',\n", - " 'against the hateful ones',\n", - " 'the hammer falls thunderous',\n", - " 'horns blow to song',\n", - " 'blood-eagle etched for ruin',\n", - " 'time of vengeance!',\n", - " 'wolf tooth and bear figure',\n", - " 'fire and steel',\n", - " 'broken promises, poisoned land',\n", - " 'bloody wings block out the sun',\n", - " \"slowly hel's fist clenches\",\n", - " 'wolf-pelt in the raging fight',\n", - " 'bloody shields cracked',\n", - " \"winged serpents, blood-eagle's time\",\n", - " 'time of vengeance!',\n", - " 'victory of the hammer, heathentimes',\n", - " 'time of vengeance!',\n", - " '(shit, vilken gyllene kväll det här är. det är helt sjukt! helt jävla sjukt är det.)',\n", - " \"did you read the news? there's a big confuse\",\n", - " 'the gun fever is back (the gun fever!)',\n", - " 'rudeness and guns is the talk of this town',\n", - " 'the gun fever is back (the gun fever!)',\n", - " '(every time you read the gleaner or star',\n", - " 'man shot dead or brutal gun war)',\n", - " \"it's the fever, oh the gun fever!\",\n", - " '(the simplest thing is the blam blam blam',\n", - " 'what is this in our little island?)',\n", - " \"it's the fever, oh the gun fever!\",\n", - " 'you can know one rude chap by the way he says stop',\n", - " 'the gun fever is back (the gun fever!)',\n", - " \"all the rudies got low, i don't know what it mean\",\n", - " 'the gun fever is back, the gun fever!',\n", - " '(every time you read the gleaner or star',\n", - " 'man shot dead or rudie at war)',\n", - " \"it's the fever, oh the gun fever!\",\n", - " '(the simplest thing is the blam blam blam',\n", - " 'what is this in our little stockholm?)',\n", - " \"it's the fever, oh the gun fever1\",\n", - " 'yeah!',\n", - " '(fever, fever)',\n", - " 'you can know one rude chap by the way he says stop',\n", - " 'the gun fever is back (the gun fever!)',\n", - " \"all the rudies got low, i don't know what it means\",\n", - " 'the gun fever is back, the gun fever, yeah!',\n", - " '(the simplest thing is the blam blam blam',\n", - " 'what is this in our little stockholm?)',\n", - " \"it's the fever, oh the gun fever!\",\n", - " '(everyday you read the gleaner or star',\n", - " 'dead or brute at war)',\n", - " \"it's the fever, oh the gun fever!\",\n", - " \"yeah, it's the fever, oh the gun fever!\",\n", - " \"yeah, it's the fever, oh the gun fever!\",\n", - " \"yeah, and it's the fever, oh the gun fever!\",\n", - " \"yeah, it's the fever, oh the gun fever!\",\n", - " \"yeah, it's the fever, oh the gun fever!\",\n", - " \"yeah, it's the fever, oh the gun fever!\",\n", - " \"oh, it's the fever, oh the gun fever!\",\n", - " \"oh, it's the fever, oh the gun fever!\",\n", - " \"oh, it's the fever, oh the gun fever!\",\n", - " \"oh, it's the fever, oh the gun fever, yeah\",\n", - " \"it's the fever, oh the gun fever!\",\n", - " \"yeah, it's the fever, oh the gun fever!\",\n", - " '(och så seglar bananbåten från göteborg iväg!)',\n", - " 'paroles de la chanson grävmaskinen :',\n", - " 'den här sajten',\n", - " 'bara stjäl texter',\n", - " 'från andra sajter',\n", - " 'eller från vart dom vill',\n", - " 'this website',\n", - " 'from other sites',\n", - " 'or from anywhere they want',\n", - " 'grävmaskin skakar up jord',\n", - " 'luktar av olja',\n", - " 'men det är ändå stulet',\n", - " 'titta närmre så du kan se',\n", - " 'saker större än beyoncé',\n", - " 'bakom dom som syns',\n", - " 'fabrizio moretti',\n", - " 'ät tills du spyr kobayashi',\n", - " 'snälla säg nåt dirty nasty',\n", - " 'vad kul att alla kom',\n", - " 'ja, det har du rätt i',\n", - " 'du får alltid ljuga för dig själv',\n", - " 'men ljug aldrig för mig',\n", - " 'du kan alltid ljuga för dig själv',\n", - " 'men ljug inte för mig',\n", - " \"it's the words you use\",\n", - " 'not the way you say',\n", - " \"it's the words you use\",\n", - " 'not the way you say',\n", - " 'not the words you use',\n", - " 'but the way you say them out',\n", - " 'stroboskop, slow motion danser',\n", - " 'porr och poppers på palatset',\n", - " 'älskar jag dig nu',\n", - " 'är du också naken',\n", - " 'a, vi är under samma moln',\n", - " 'men är du också vaken?',\n", - " 'du får alltid ljuga för dig själv',\n", - " 'men ljug aldrig för mig',\n", - " 'du kan alltid ljuga för dig själv',\n", - " 'men ljug inte för mig',\n", - " \"it's the words you use\",\n", - " 'not the way you say',\n", - " \"it's the words you use\",\n", - " 'not the way you say',\n", - " 'not the words you use',\n", - " 'but the way you say',\n", - " 'not the words you use',\n", - " 'but the way you say',\n", - " \"it's the words you use\",\n", - " 'not the way you say',\n", - " \"it's the words you use\",\n", - " 'not the way you say',\n", - " 'not the words you use',\n", - " 'but the way you say',\n", - " 'not the words you use',\n", - " 'but the way you say them out',\n", - " 'swedish girls x8',\n", - " 'got me going (hahah)',\n", - " 'swedish girls x20',\n", - " 'got me go',\n", - " 'got me go',\n", - " 'got me go',\n", - " 'got me go crazy',\n", - " 'got me go crazy',\n", - " 'why are you so god damn hot?',\n", - " '(hahah) jag vet inte',\n", - " 'got me going crazy',\n", - " '(hahah)',\n", - " 'why are you so god damn hot?',\n", - " 'jag vet inte',\n", - " 'i love you swedish girls',\n", - " 'why are you so god damn hot?',\n", - " '(hahah) jag vet inte',\n", - " 'got me going crazy',\n", - " '(hahah)',\n", - " 'why are you so god damn hot?',\n", - " 'i love you swedish girls',\n", - " 'jag älskar dig',\n", - " 'swedish girls x20',\n", - " 'got me go x3',\n", - " 'got me go crazy',\n", - " 'got me go crazy',\n", - " 'why are you so god damn hot?',\n", - " '(hahah) jag vet inte',\n", - " 'got me going crazy',\n", - " '(hahah)',\n", - " 'why are you so god damn hot?',\n", - " 'jag vet inte',\n", - " 'i love you swedish girls',\n", - " 'jag älskar dig',\n", - " 'i love you swedish girls',\n", - " 'jag älskar dig',\n", - " 'i love you swedish girls',\n", - " 'i love you swedish girls',\n", - " 'i love you swedish girls',\n", - " 'end',\n", - " 'i äventyrets starka sken',\n", - " 'rör vi oss runt en död planet',\n", - " 'vi släpper lös dina visioner',\n", - " 'tillsammans ser vi alla svar',\n", - " 'vi är där vi alltid har varit',\n", - " 'vår sökan efter dig är över',\n", - " 'fastän vår strävan aldrig börjat',\n", - " 'har vi nått resans mål till slut',\n", - " 'vi söker plats som ej kan finnas',\n", - " 'i drömmars värld där vi kan va',\n", - " 'trots att historien nu är över',\n", - " 'har sagan gett oss alla svar',\n", - " 'english translation:',\n", - " 'in the bright light of adventure',\n", - " 'we are moving towards a dead planet',\n", - " 'we release your visions',\n", - " 'together we see all answers',\n", - " 'we are where we have always been',\n", - " 'our search for you is over',\n", - " 'although our pursuit never begun',\n", - " 'we have reached the target of the journey',\n", - " 'we search for a place that cannot exist',\n", - " 'in the world of dreams where we can be',\n", - " 'although history now has ended',\n", - " 'the tale has given us all the answers',\n", - " \"it's a regional thing\",\n", - " \"you probably won't understand\",\n", - " \"it's nothing i am proud of\",\n", - " \"but it's part of who i am\",\n", - " 'try to see the humor',\n", - " 'the amount of self-contempt',\n", - " 'not finishing sentences',\n", - " 'my super confidence',\n", - " 'här är det bra',\n", - " 'nästan perfekt',\n", - " 'syrenerna har slagit ut',\n", - " 'och det är trettio grader lätt',\n", - " 'myggen har inte',\n", - " 'visat sig än',\n", - " 'älven ligger blank',\n", - " 'och blickstilla men',\n", - " 'trollmakten jag ser uppe i bergen',\n", - " 'försvinn du som lyser över mitt folk',\n", - " 'ge dig iväg! ge dig iväg!',\n", - " 'vår eviga pakt med natten skola ge oss liv',\n", - " 'efter ond bråd död, efter ond bråd död',\n", - " 'eld och blod för mitt folk',\n", - " 'mitt svärd skola törsta för blod',\n", - " 'blod utav evas svaga barn',\n", - " 'blod utav kristi stam',\n", - " 'blod utav krististam, utav krististam',\n", - " 'nattens eviga kraft svärdets kalla',\n", - " 'skärpa månens stilla ljus vinterns bleka skugga',\n", - " 'riv ditt hjärta, riv din själ, solens svärta',\n", - " 'jag är nattens träl',\n", - " 'trollmakten jag ser uppe i bergen',\n", - " 'försvinn!',\n", - " 'trollforce i see up in the hills',\n", - " 'vanish thou, who shine over my folk',\n", - " 'get away! get away!',\n", - " 'our everlasting pact with the night shall give us life',\n", - " 'after a violent end, after a violent end',\n", - " 'fire and blood for my folk',\n", - " 'my sword shall thirst for blood',\n", - " \"blood of eve's weak children\",\n", - " 'blood of the christian tribe',\n", - " 'blood of the christian tribe, blood of the christian tribe',\n", - " \"night's eternal strength, sword's cold\",\n", - " \"clarity of moon's calm light, winter's pale shade\",\n", - " \"tear your heart, tear your soul, sun's blackness\",\n", - " 'i am the slave of the night',\n", - " 'trollforce i see up in the hills',\n", - " 'vanish!',\n", - " 'minnen svunna stiger åter ur tidens vittrande stoft',\n", - " 'ur ledenstiger de fram, en gyllene flamma av hopp',\n", - " 'ett föraktets dova töcken, närd av nid och hån',\n", - " 'bländad av raseri, på hämndens vinger buren',\n", - " 'stigna som vredens herrar...',\n", - " 'vekas bane vilsnas ljus',\n", - " 'vanmakten inför vredens hand, speglar',\n", - " 'i blinda ögon. spröda och tomma, sprider etter',\n", - " 'med kluven tunga',\n", - " 'blodets stöma berusar och när, ger mig åt kampen',\n", - " 'skapare av vanvettets kaos, en ny tid är här...',\n", - " 'stigna som vredens herrar...',\n", - " 'vekas bane vilsnas ljus',\n", - " 'blodsmak i munnen, stillad äro hungern',\n", - " 'en ensam jakt för den valde allena. krönt om natten vid',\n", - " 'vanvettets tron. att ett rike föda ur de dödas aska',\n", - " 'stilla äro djuren i viljan och själen',\n", - " 'en nalkande vittring och vi ger oss hän',\n", - " 'den eviga kamp som tas av tiden',\n", - " 'men dock och vilde bringar segern',\n", - " 'som en viskande klinga, slår sanningens ord',\n", - " 'förnyelsens timma, vredens tid...',\n", - " 'stigna som vredens herrar...',\n", - " 'vekas bane vilsnas ljus',\n", - " 'english translation:',\n", - " 'lost memories arise again, from the withering stuff of time',\n", - " 'they step forth from the ranks, a golden flame of hope',\n", - " 'the dull haze of disdain. nourished by spite and scorn',\n", - " 'blinded by fury. borne on the wings of vengeance',\n", - " 'risen as the masters of wrath...',\n", - " 'bane of the weak, light of the lost',\n", - " 'the powerlessness before the hand of wrath, is mirrored in blind eyes',\n", - " 'brittle and empty, spreading venom, with a cloven tongue',\n", - " 'the sweetness of the blood inebriates and nourishes, gives me to the fight',\n", - " 'maker of the chaos of madness, a new time has come...',\n", - " 'risen as the masters of wrath...',\n", - " 'bane of the weak, light of the lost',\n", - " 'the taste of blood in my mouth, my hunger appeased',\n", - " 'a lonely hunt for the chosen alone',\n", - " 'crowned at night at the throne of madness',\n", - " 'to bear a kingdom out of the ashes of the dead',\n", - " 'still are the beasts in will and soul',\n", - " 'a scent drawing near, we indulge ourselves',\n", - " 'the eternal battle that time takes',\n", - " 'but the savage brings victory',\n", - " 'like a whispering blade',\n", - " 'the words of truth strike',\n", - " 'the hour of renewal, the age of wrath...',\n", - " 'risen as the masters of wrath...',\n", - " 'bane of the weak, light of the lost',\n", - " 'ropen av högsta fruktan',\n", - " 'slets ur människans strupe',\n", - " 'när kaoset kom från ett djup',\n", - " 'ett djup där mer än en skugga kan förnimmas',\n", - " 'ty jag är inte dödlig',\n", - " 'jag är din frukta & ångest',\n", - " 'när de levandes skrik är endast ett eko',\n", - " 'är jag den som leder er till evig pest & pina',\n", - " 'evig natt råder över människans sinn',\n", - " 'när satan lever genom er',\n", - " 'evig natt råder över den gode',\n", - " 'när himmelriket brinner',\n", - " 'eternal night',\n", - " 'the cries of highest fear',\n", - " 'ripped out of the human throat',\n", - " 'when the chaos came from a deep',\n", - " 'a deep where more than just a shadow can be sensed',\n", - " 'for i am not mortal',\n", - " 'i am your fear & angst',\n", - " 'when the screams of the living are but an echo',\n", - " 'i am the one who leads you to eternal plague & torment',\n", - " 'eternal night prevails over human minds',\n", - " 'when satan lives through you',\n", - " 'eternal night prevails over the good one',\n", - " 'when heaven burns',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'imma fuck a white bitch',\n", - " 'låt mig bjuda på en dödlig dos',\n", - " 'av ett gift som heter badkarsblues',\n", - " 'jag ska mota fan i grinden',\n", - " 'blåsa hål på högervinden',\n", - " 'men låt det vara en hemlighet',\n", - " 'biggles björk ska få en rymdraket',\n", - " 'över spegeln kryper imman',\n", - " 'där försvinner björk i dimman...',\n", - " 'genom moln av wash and go',\n", - " 'advertising told him so',\n", - " 'genom moln av wash and go',\n", - " 'advertising told him so',\n", - " 'låt mig bjuda på en liten grogg',\n", - " 'av patetisk disco-progg',\n", - " 'linje 3 och näverkängor',\n", - " 'radikalt i radhuslängor',\n", - " 'mjuka män i grön manchester',\n", - " 'apk på lill-semester',\n", - " 'men så ändras deras motto',\n", - " 'och nu gäller bingolotto!',\n", - " 'genom moln av wash and go',\n", - " 'advertising told him so',\n", - " 'genom moln av wash and go',\n", - " 'advertising told him so',\n", - " 'oi suomi, katso, sinun päiväs koittaa',\n", - " 'yön uhka karkoitettu on jo pois',\n", - " 'ja aamun kiuru kirkkaudessa soittaa',\n", - " 'kuin itse taivahan kansi sois',\n", - " 'yön vallat aamun valkeus jo voittaa',\n", - " 'sun päiväs koittaa, oi synnyinmaa',\n", - " 'oi nouse, suomi, nosta korkealle',\n", - " 'pääs seppälöimä suurten muistojen',\n", - " 'oi nouse, suomi, näytit maailmalle',\n", - " 'sä että karkoitit orjuuden',\n", - " 'ja ettet taipunut sä sorron alle',\n", - " 'on aamus alkanut, synnyinmaa',\n", - " 'swedish translation by joel rundt',\n", - " 'o, finland, se, din morgonljusning randas',\n", - " 'och natten skingras hotfullt mörk och lång',\n", - " 'hör lärkans röst med rymdens susning blandas',\n", - " 'snart rymden fylles av jubelsång',\n", - " 'se natten flyr och fritt du åter andas',\n", - " 'din morgon ljusnar, o fosterland',\n", - " 'stig högt, vårt land, som du ur natt dig höjde',\n", - " 'den dag dig väntar, fritt och öppet möt',\n", - " 'med samma kraft, med samma mod, du röjde',\n", - " 'när träldomsoket du sönderbröt',\n", - " 'förtrycket aldrig dig till jorden böjde',\n", - " 'ditt verk väntar, o fosterland',\n", - " 'english translation by keith bosley',\n", - " 'finland, behold, thy daylight now is dawning',\n", - " 'the threat of night has now been driven away',\n", - " 'the skylark calls across the light of morning',\n", - " 'the blue of heaven lets it have its way',\n", - " 'and now the day the powers of night is scorning:',\n", - " 'thy daylight dawns, o finland of ours!',\n", - " 'finland, arise, and raise towards the highest',\n", - " 'thy head now crowned with mighty memory',\n", - " 'finland, arise, for to the world thou criest',\n", - " 'that thou hast thrown off thy slavery',\n", - " \"beneath oppression's yoke thou never liest\",\n", - " \"thy morning's come, o finland of ours!\",\n", - " 'mäktige trollgud!',\n", - " 'mighty god of trolls',\n", - " 'du som sitter på frodad tron',\n", - " 'thou who sit on the usury throne',\n", - " 'ge oss kraft, ge oss mod',\n", - " 'grant us power, grant us braveness',\n", - " 'för vårt fällttåg till främmande blod',\n", - " 'for our carnage against alien blood',\n", - " 'med trollsvampens magi vi resar',\n", - " \"with the mushroom's charm we rise\",\n", - " 'som ett jordskret av hat vi strömma',\n", - " 'like an avalanche of hate we pour',\n", - " 'utav norrlands mark',\n", - " \"over nordland's realm\",\n", - " 'med vildsvin och varg',\n", - " 'on wild boars and wolves',\n", - " '//: månförmörkelse',\n", - " 'lunar eclipse',\n", - " 'världsförrutnelse ://',\n", - " \"world's decay\",\n", - " 'vi som nu har fått blodad tand',\n", - " 'we who sucked the blood',\n", - " 'vi kräva tillbaka urgammalt land',\n", - " 'we who conquer back ancient land',\n", - " 'vi som nu har fått blodad tand',\n", - " 'vi kräva tillbaka urgammalt land',\n", - " 'uråldrigt tecken skiner från dyn',\n", - " 'the ancient sign flickers out of the moor',\n", - " 'bländar kristenmannens trångsynta syn',\n", - " \"dazzling the christian's wicked view\",\n", - " 'uråldrigt tecken skiner från dyn',\n", - " 'bländar kristenmannens trångsynta syn',\n", - " 'vi som föd i grottans mörker',\n", - " \"we who were born in the cavern's darkness\",\n", - " 'vi som inget fosterland har',\n", - " 'we who owe no fatherland',\n", - " 'vi som ligger i fejd med allt',\n", - " 'we who declare war to everyone',\n", - " 'vi som kämpa med tass och tand',\n", - " ...]},\n", - " 'data': ['what does it mean when all is lost, but nothing is forgotten?',\n", - " 'sdakasůllllllllllllllld',\n", - " 'sad',\n", - " 'a',\n", - " 'sdas',\n", - " 'd',\n", - " 'asd',\n", - " 'a§důafddddddddddddddd',\n", - " 'f§asůf',\n", - " 'asů',\n", - " 'f§aůs',\n", - " 'fůas§',\n", - " 'fůa',\n", - " '§sfů',\n", - " '§afů',\n", - " 'a§sfůsa',\n", - " '§fůas§fsssssssssssssss§a',\n", - " 'ůfasů§',\n", - " 'faůs',\n", - " 'fůasfů',\n", - " 'as§fůas§',\n", - " 'ůf',\n", - " '§asůf§a',\n", - " 'skogen lever inga fångar tar',\n", - " 'den tar moder dotter och far',\n", - " 'ingen nåd ingen lämnas kvar',\n", - " 'minsta sår läcker av var',\n", - " 'byfolk försvinna ingen vet vart',\n", - " 'omkring står skogen tyst och svart',\n", - " 'slutet närmas de visa ser',\n", - " 'tecken i skyn prästefolk ber',\n", - " 'dödens lättja ut i skogen lura',\n", - " 'gömma sig bakom varje fura',\n", - " 'eldlika sken över himlabron',\n", - " 'så inleds hämnden av skogens tron',\n", - " 'finns ingen plats att gömma sig',\n", - " 'vart du än går skogen hittar dig',\n", - " 'hela världen ruttnar och svälter',\n", - " 'allt du trott se lögnen välter',\n", - " 'läs nu runor med magiska tal',\n", - " 'spå en ålder av ve och kval',\n", - " 'när mörka skuggor nu himmelen rider',\n", - " 'se då nalkas jaktens tid',\n", - " \"the forest's revenge\",\n", - " 'the forest takes no prisoners',\n", - " 'it kills mother, daughter and father',\n", - " 'no mercy, no one left',\n", - " 'tiniest cut boils with pus',\n", - " 'townsfolk disappear, no one knows where',\n", - " 'all around is the forest, quiet and dark',\n", - " 'the end is near, the wise say',\n", - " 'signs in the sky, churchgoers pray',\n", - " \"death's lethargy out in the forest lurks\",\n", - " 'hiding behind every tree',\n", - " \"fiery lights over heaven's bridge\",\n", - " \"so begins the vengeance of the forest's throne\",\n", - " 'there is nowhere to hide',\n", - " 'wherever you go, the forest will find',\n", - " 'the whole world decaying and starving',\n", - " 'everything you believed, see the lies fall flat',\n", - " 'read now, runes with magic numbers',\n", - " 'foresee an age of anguish and pain',\n", - " 'see dark shadows riding the sky',\n", - " 'then beckons, the age of the hunt',\n", - " 'hör vindar som vill fly',\n", - " 'se korpen i himmel av bly',\n", - " 'det är frosten som nalkas',\n", - " 'var björk och lind är nu kal',\n", - " 'i skogsråets grånande sal',\n", - " 'det är frosten som nalkas',\n", - " 'mot hårda tider det bär',\n", - " 'trollen dom huttrar och svär',\n", - " 'det är frosten som nalkas',\n", - " 'se tranan som nu fly',\n", - " 'mot varmare sydliger sky',\n", - " 'det är frosten som nalkas',\n", - " 'över land och hav',\n", - " 'sveper vinterns kalla vind',\n", - " 'snö, is och en bister kyla',\n", - " 'från en himmel så trind',\n", - " 'se näckens fingrar så blå',\n", - " 'hans polska nu långsamt gå',\n", - " 'det är frosten som nalkas',\n", - " 'kälen nu stormsteg tar',\n", - " 'tur att man fjärrvärme har',\n", - " 'det är frosten som nalkas',\n", - " '\"sky so full\"',\n", - " 'listen to the fleeing winds',\n", - " 'see the raven in the sky of led',\n", - " \"it's the frost that's approaching\",\n", - " 'every birch and linden, now bare',\n", - " 'in the greying halls of the lady-of-the-woods',\n", - " \"it's the frost that's approaching\",\n", - " 'hard times are a-coming',\n", - " 'the trolls shiver and swear',\n", - " \"it's the frost that's approaching\",\n", - " 'see the crane fleeing',\n", - " 'towards a warmer, southern sky',\n", - " \"it's frost approaching\",\n", - " 'over land and sea',\n", - " 'the cold wind of winter sweeps in',\n", - " 'snow, ice and bitter cold',\n", - " 'from a fat sky',\n", - " \"it's frost approaching\",\n", - " 'see the blue fingers of näcken (an evil water spirit)',\n", - " 'his reel goes slower',\n", - " \"it's frost approaching\",\n", - " 'the frost in the ground is coming fast',\n", - " \"we're lucky to have central heating\",\n", - " \"it's frost approaching\",\n", - " 'a little kiss',\n", - " \"is all i'm asking for\",\n", - " 'just a little kiss',\n", - " \"and i won't expect more\",\n", - " 'just a little kiss',\n", - " 'is all i need',\n", - " 'just a little kiss',\n", - " 'and i take my lead',\n", - " 'jag vill bara får känna dina läppar mot mina',\n", - " 'trygghet och värme i famnen vi finna',\n", - " 'låtsas för en gång att endast va min',\n", - " 'bara få känna din hand i min',\n", - " 'a little kiss',\n", - " 'to show me that you care',\n", - " 'just a little kiss',\n", - " 'show me that you dare',\n", - " 'just a little kiss',\n", - " 'and i set off to the sky',\n", - " 'just a little kiss',\n", - " 'give me wings, make me fly',\n", - " 'je veux sentir ton corps',\n", - " 'tout contre mon coeur',\n", - " \"et te savoir d'humeur à faire un effort\",\n", - " 'le baiser de doisneau sur les champs elysées',\n", - " 'ambiance tamisée',\n", - " \"un soir d'été\",\n", - " 'a little kiss',\n", - " \"is all i'm asking for\",\n", - " 'just a little kiss',\n", - " \"and i won't expect more\",\n", - " 'just a little kiss',\n", - " 'is all i need',\n", - " 'just a little kiss',\n", - " 'and i take my lead',\n", - " 'just want to feel your lips against mine',\n", - " 'the smell of your skin and thoughts of your mind',\n", - " 'just want to pretend to be your true love',\n", - " 'to caress your skin soft as a dove',\n", - " 'soft as a dove',\n", - " 'skrivet i blod, ristat i sten',\n", - " 'res er för fan låt er inte styras',\n", - " 'styras av deras tomma ord',\n", - " 'skrivet i blod ristat i sten',\n", - " 'hämndens timme är nu!',\n", - " 'hellre dö i blod, än att leva i skit!',\n", - " 'kämpa för fan, för det är det värt!',\n", - " 'written in blood, carved in stone',\n", - " 'rise against (for fuck sake) dont be guided',\n", - " 'guided by their empty words',\n", - " 'written in blood carved in stone',\n", - " 'vengeance hour is now!',\n", - " 'rather die in blood, than to live in shit!',\n", - " 'fight for hell, for it is worth it!',\n", - " 'kom storm, kom eld',\n", - " 'kom björnfot, berid sinne',\n", - " 'morgondagen kallar',\n", - " 'nordstjärna i blick',\n", - " 'valkyriors sång',\n", - " 'offer till enöga',\n", - " 'spjutets herre',\n", - " 'blot för seger',\n", - " 'till hravnáss bunden',\n", - " 'genom ed',\n", - " 'snart en seger vunnen',\n", - " 'för vår sed',\n", - " 'sigrblot',\n", - " 'kom gryning, kom vindar',\n", - " 'kom korpfot, bevinga sinne',\n", - " 'härar samlas',\n", - " 'vid hornets sång',\n", - " 'nordstjärnans barn',\n", - " 'vreden hettar',\n", - " 'stormvindar bär',\n", - " 'en dödens symfoni',\n", - " 'odin, allfader',\n", - " 'gugners bevingare, korpars herre',\n", - " 'giv oss seger',\n", - " 'som här samlats',\n", - " 'bärsärkens raseri',\n", - " 'river och sliter',\n", - " 'fallande bilor',\n", - " 'jämmer och skrik',\n", - " 'dånande horn',\n", - " 'sprucket stål',\n", - " 'bärsärkens raseri',\n", - " 'kom stiltje, kom regn',\n", - " 'gå björnfot, befria sinne',\n", - " 'english translation:',\n", - " 'come storm, come fire',\n", - " 'come bear foot, mount the mind',\n", - " 'tomorrow calls',\n", - " 'my gaze upon the north star',\n", - " 'the song of valkyries...',\n", - " 'sacrifice to one-eye, lord of the spear',\n", - " 'sacrifice for victory',\n", - " 'to hravnáss bound, through oath',\n", - " 'soon a victory won, for our ways',\n", - " 'sigrblot...',\n", - " 'come dawn, come winds',\n", - " 'come raven foot, winged mind',\n", - " 'hosts gather, to the song of the horn',\n", - " 'children of the north star...',\n", - " 'the wrath warms, storm winds carry',\n", - " 'a symphony of death',\n", - " 'the wrath of the berserk, slashes and tears',\n", - " 'falling axes, moaning and screams',\n", - " 'thundering horns, broken steel',\n", - " 'the wrath of the berserk...',\n", - " 'come doldrums, come rain',\n", - " 'go bear foot, release mind',\n", - " 'vi sitter här i venten o spelar lite dota. (i hear you man.)',\n", - " 'vi sitter här i venten o spelar lite dota. (i feel you man.)',\n", - " 'vi sitter här i venten o spelar lite dota',\n", - " 'o pushar på o smeker med moståndet vi leker',\n", - " 'vi sitter här i venten o spelar lite dota',\n", - " 'o springer runt o creepar o motståndet vi sleepar',\n", - " '(lets get it on)',\n", - " 'vi sitter här i venten o spelar lite dota',\n", - " 'o pushar på o smeker med moståndet vi leker',\n", - " 'vi sitter här i venten o spelar lite dota',\n", - " 'o springer runt o creepar o motståndet vi sleepar. (*x2*)',\n", - " '(whats happening) (d-d-d-d-d-d-dota)',\n", - " '**',\n", - " 'vi sitter här i venten o spelar lite dota. (i hear you man.)',\n", - " 'vi sitter här i venten o spelar lite dota. (i feel you man.)',\n", - " '**',\n", - " 'vi sitter här i venten o spelar lite dota',\n", - " 'o pushar på o smeker med moståndet vi leker',\n", - " 'vi sitter här i venten o spelar lite dota',\n", - " 'o springer runt o creepar o motståndet vi sleepar. *(x2)*',\n", - " '(lets get it on)',\n", - " 'vi sitter här i venten o spelar lite dota',\n", - " 'o pushar på o smeker med moståndet vi leker',\n", - " 'vi sitter här i venten o spelar lite dota',\n", - " 'o springer runt o creepar o motståndet vi sleepar. (x2)',\n", - " '(whats happening) (d-d-d-d-d-d-dota)',\n", - " '(dont worry, be happy)',\n", - " 'flod, våg',\n", - " 'runt din magi där världen faller, ta oss dit',\n", - " 'låt öppna ögon kan ej se, liv',\n", - " 'flod, våg',\n", - " 'vi står på toppen av din bergsrygg, ta oss dit',\n", - " 'vid havets makt runt kaktus jord, frihet',\n", - " 'röd, sol',\n", - " 'då världen fallit stiger solen, där är vi',\n", - " 'tillsammans finns vi där för allt, livet',\n", - " 'english translation:',\n", - " 'river, wave',\n", - " 'around your magic where the world falls, take us there',\n", - " 'let open eyes that cannot see, life',\n", - " 'river, wave',\n", - " 'we are standing on top of your summit, take us there',\n", - " 'by the power of the ocean around cactus earth, freedom',\n", - " 'red, sun',\n", - " \"when the world has fallen the sun rises, that's where we are\",\n", - " 'together we are there for everything, life',\n", - " 'árvas',\n", - " 'árvasduottar',\n", - " 'albma viidodat',\n", - " 'čalbmečiegas čalbmečihkii',\n", - " 'áibbas vielgat',\n", - " 'árvvas áhpi',\n", - " 'árvas',\n", - " 'lulličohkas dolle davás',\n", - " 'sieidevári ábi rastá',\n", - " 'niedái de vuomi čađa',\n", - " 'árvsii',\n", - " 'durbbonjávrris lea min gárdi',\n", - " 'gáissaš ja duo bálggesnjunni',\n", - " 'hearraláhku',\n", - " 'gođiid lusa',\n", - " 'bárkái',\n", - " 'heaikkabávtti ferte váruhit',\n", - " 'bahá gahččat go lea mierká',\n", - " 'rissajávrri bassi rávddut geasuhit',\n", - " 'liigasis doppe lei orohat',\n", - " 'áhkku unnin stoagai giettis',\n", - " 'dál lea ávdin',\n", - " 'ruoktut vieččaimet gierresiid',\n", - " 'english translation:',\n", - " 'tundra of árvas',\n", - " 'árvasduottar',\n", - " 'such a plentiful domain',\n", - " 'from the corner of one eye to the other',\n", - " 'wholly white',\n", - " 'a sumptuous sea',\n", - " 'árvas',\n", - " 'from lulličohkka we go west',\n", - " 'cross the sea of sieidevárri',\n", - " 'through niedá and the valleys',\n", - " 'to árvas',\n", - " 'our corral is in durbbonjávri',\n", - " 'there is gáissáš and bálggesnjunni',\n", - " 'hearraláhku',\n", - " 'to the turf huts',\n", - " 'in bárká',\n", - " 'heed yourself on heaikkabákti',\n", - " 'avoid stumbles in the fog',\n", - " 'the hallowed char draw you to rissajávri',\n", - " 'liigas held a dwelling',\n", - " 'grandmother used to play in the field',\n", - " 'it is now left abandoned',\n", - " 'we took home the sleds',\n", - " 'd-d-d-d (dum dum dollar djungel)',\n", - " 'the jungle drums will call you all',\n", - " 'ooooh....',\n", - " 'dum-dum-dollar-djungel sover aldrig sött',\n", - " 'den vackraste mardröm som du mött',\n", - " 'dum-dum-dollar-djungel cocainekuvös',\n", - " 'allting som du aldrig behövt',\n", - " 'ooooh....',\n", - " 'dum-dum-dollar-djungel bubbelgumblues',\n", - " 'här kokar bensinen i ditt blod',\n", - " 'dum-dum-dollar-djungel tv-terrorland',\n", - " 'allting som du aldrig trodde fanns',\n", - " 'ooooh....',\n", - " 'dum-dum-dollar-djungel frihetsfabrik',\n", - " 'dum-dum-dollar-djungel cocainekuvös',\n", - " 'dum-dum-dollar-djungel',\n", - " 'dum-dum-dollar-djungel graffitigatorsglam',\n", - " 'dum-dum-dollar-djungel',\n", - " 'the jungle drums will call you all',\n", - " 'come and watch the rise and fall',\n", - " 'dum-dum-dollar-djungel',\n", - " 'dum-dum-dollar-djungel 48 timmars dygn',\n", - " 'dum-dum-dollar-djungel heroinservice limousineservice',\n", - " 'dum-dum-dollar-djungel',\n", - " 'kom in i mitt djupa sinn',\n", - " 'låt din vilja bli min lag',\n", - " 'besätt min själ med rent hat',\n", - " 'min handlingar styrs till min sista dag',\n", - " 'må mörkret vara för evigt',\n", - " 'låt ljuset aldrig nå oss mer',\n", - " 'dränk all glädje dränk all sorg',\n", - " 'förpestade blir bara fler & fler',\n", - " 'öppna ditt sinne för ondskan',\n", - " 'sänd dom kristna åt dess öde',\n", - " 'bränn ner alla kyrkor till aska',\n", - " 'sälj din själ till döden',\n", - " 'deep mind',\n", - " 'come into my deep mind',\n", - " 'let your will be my command',\n", - " 'possess my soul with pure hatred',\n", - " 'my actions are controlled until my last day',\n", - " 'may the darkness last forever',\n", - " 'never let the light reach us again',\n", - " 'drown all joy drown all sorrow',\n", - " 'the poisoned only become more and more',\n", - " 'open your mind to the evil',\n", - " 'send the christians to their fate',\n", - " 'burn all churches to the ground',\n", - " 'sell your soul to death',\n", - " 'kolöga rotfast tand...',\n", - " 'som trädet i grund och stenig mark',\n", - " '-trolltand...',\n", - " 'gammal, klok, urbergets vän...',\n", - " 'vriden som martall på vindpinad häll',\n", - " 'skyr solen om dagen, flyr människors...',\n", - " 'ett brakande dån bräcker kolögas sömn',\n", - " '-vadan detta skrän? som en törn i min ställ',\n", - " 'vem är den niding som gäckar min sömn?',\n", - " 'skyr solen om dagen, flyr människors...',\n", - " 'i blint raseri med dunder och brak',\n", - " 'banar sig kolöga fram...',\n", - " 'med ett vredesvrål mot murar av sten',\n", - " 'som krossas i hans hand...',\n", - " 'river och sliter, tuggar och biter',\n", - " 'dammet yr i hans vildsinta dans...',\n", - " 'folk och fä flyr snabbt sin väg',\n", - " 'bort från trollets brakande kaos...',\n", - " 'klocka av guld mot himlen for',\n", - " 'krossandes tornet på vägen ner',\n", - " '-slut på skränet och det fördömda brölet',\n", - " 'den tar jag hem, där kokar snart ölet...',\n", - " 'english translation:',\n", - " 'charcoal-eye, root-deep tooth...',\n", - " 'like a tree on shallow and stony ground',\n", - " '-troll-tooth...',\n", - " 'ancient, wise, friend of the mountain...',\n", - " 'twisted like the pine on weathered rock',\n", - " 'shuns the sunlight in the day, flees the lands of men...',\n", - " \"a roaring rumble shatters charcoal-eye's sleep\",\n", - " '-whence this holler? like a thorn in my soul',\n", - " 'who is this evil-doer that frustrates my slumber?',\n", - " 'shuns the sunlight in the day, flees the lands of men...',\n", - " 'in blind fury, crashing along',\n", - " 'charcoal-eye charges forth...',\n", - " 'with a roar of wrath against walls of stone, that break in his hand...',\n", - " 'he rips and tears, he chews and bites',\n", - " 'the dust whirling with his savage dance...',\n", - " 'man and beast flee in haste',\n", - " \"away from the troll's raving madness...\",\n", - " 'the golden bell went to the sky',\n", - " 'crushing the tower on its way down',\n", - " \"-that's the end of that holler and damned roaring\",\n", - " \"i'll take this home with me, where soon the ale will be brewing...\",\n", - " 'i norr, betäcker den första frosten',\n", - " 'i söder faller de första löven',\n", - " 'tid att vandra är nu...',\n", - " 'en tidlos ström av kraft',\n", - " 'vandrar med sinnet denna natt...',\n", - " 'i öster står månen i sinn full',\n", - " 'i väster, svinner sunnas gyllene famn',\n", - " 'den nya dagen skall snart gry...',\n", - " 'en tidlos ström av kraft',\n", - " 'vandrar med sinnet denna natt...',\n", - " 'i. strömt är altet, visdomens kyla',\n", - " 'i djupet begraven, ett dunkelt ord',\n", - " 'ii. söker i mullen, vid bergets fot',\n", - " 'hör mig rådare, en glödande runa röd',\n", - " 'ett kall ifrån ovan, drar mig iväg',\n", - " 'stiger ur jorden, mot stärnornans glans...',\n", - " 'vandrar i väven, spunnen av den tre',\n", - " 'känner glöden, från runornas megin...',\n", - " 'i öster, står sunna i sin full',\n", - " 'i väster, svinner månens bleka famn',\n", - " 'tid att vila är nu...',\n", - " 'english translation:',\n", - " 'in the north the first frost covers',\n", - " 'in the south the first leaves fall',\n", - " 'the time to wander is now...',\n", - " 'a timeless stream of force',\n", - " 'wanders with the mind this night...',\n", - " 'in the east the moon is full',\n", - " 'in the west the golden embrace of sunna dwindles',\n", - " 'the new day is about to dawn...',\n", - " 'a timeless stream of force',\n", - " 'wanders with the mind this night...',\n", - " 'flowing is the universe, the cold of wisdom',\n", - " 'buried in the deep, a dim word',\n", - " 'looking in the earth, at the foot of the mountain',\n", - " 'hear me fey, a glowing red rune',\n", - " 'a calling from above, pulls me away',\n", - " 'rises from the earth, towards the brilliance of the stars...',\n", - " 'wanders in the web, woven by the three',\n", - " 'feel the embers, from the magic of the runes...',\n", - " 'in the east sunna is full',\n", - " 'in the west the pale embrace of the moon dwindles',\n", - " 'the time to rest is now...',\n", - " 'världsfinansernas kollaps - the collapse of the world finances',\n", - " 'du säger du ger liv, men tar ifrån oss allt',\n", - " 'vi har inget val, ingen framtid',\n", - " 'din lögn är vår tro, vi offrar tusenfalt',\n", - " 'vi ber för hjälp men ingen lyssnar',\n", - " 'ni ljuger för att skydda er profit',\n", - " 'jorden',\n", - " 'allt ni gör ska bli till kredit',\n", - " 'våldtas',\n", - " 'ni säger vi har ett val, men vi armas ut',\n", - " 'vårt val är misär, total apati',\n", - " 'ni bryter ner en värld men blundar för döden',\n", - " 'den hjälp som kommer den lobotomerar',\n", - " 'we were promised that the neo-liberal market would give us freedom, jobs and equality. it has given us redundancy, poverty and the dismantling of our living standard. bonuses and expensive retirement packages are given to the already rich bastards that drain us. idiots who never pulled the brake',\n", - " 'jag kommer in från regnet',\n", - " 'hungrig och våt',\n", - " 'jag ligger här på sängen',\n", - " 'med stövlarna på',\n", - " 'vad gör jag här i stan',\n", - " 'jag talar inte språket längre',\n", - " 'vad gör jag här',\n", - " 'där alla vackra kvinnor hänger',\n", - " 'i come in from the rain',\n", - " 'hungry and wet',\n", - " 'i lie here on the bed',\n", - " 'with my boots on',\n", - " 'what am i doing here in town',\n", - " \"i don't speak the language anymore\",\n", - " 'what am i doing here',\n", - " 'where all the beautiful women hang out',\n", - " 'jag kommer in från mörkret',\n", - " 'blint som ett nyfött barn',\n", - " 'jag kommer från en plats',\n", - " 'norr om stan',\n", - " 'vad gör jag här',\n", - " 'jag har glömt hur man älskar',\n", - " 'bandet spelar upp',\n", - " 'men jag har levt för länge utan sällskap',\n", - " 'i come in from the dark',\n", - " 'blind as a newborn child',\n", - " \"i'm coming from a place\",\n", - " 'north of town',\n", - " 'what am i doing here',\n", - " \"i've forgotten how to love\",\n", - " 'the band starts to play',\n", - " \"but i've lived too long without company\",\n", - " 'jag kommer in från kylan',\n", - " 'jag åkte mot himmelen i väst',\n", - " 'jag fann ett stort hus med rum att hyra',\n", - " 'nu behöver jag en docktor eller präst',\n", - " 'allt är sig likt',\n", - " 'samma smuts, samma slavar',\n", - " 'gud jag behöver din röst',\n", - " 'i dessa dagar i come in from the cold',\n", - " 'i drove toward the sky in the west',\n", - " 'i found a big house with rooms for rent',\n", - " 'now i need a doctor or a priest',\n", - " \"everything's the same\",\n", - " 'same filth, same slaves',\n", - " 'god, i need your voice',\n", - " 'in these days',\n", - " 'jag står och ser ut genom fönstret',\n", - " 'jag hör regnet och allting är svart',\n", - " 'jag låter frågorna hänga i mörkret',\n", - " 'ingen svarar väl ändå inatt i stand and look out the window',\n", - " 'i hear the rain and everything is black',\n", - " 'i let the questions hang in the darkness',\n", - " \"but i guess no one's answering tonight\",\n", - " 'jag kommer in från regnet',\n", - " 'jag måste ut igen',\n", - " 'jag kommer in för pengar',\n", - " 'frågan är: hur, var, när och vem?',\n", - " 'jag rör mig fort',\n", - " 'jag har det i mitt blod',\n", - " 'hon såg det i mina kort',\n", - " 'mitt hem och mitt bort',\n", - " 'i come in from the rain',\n", - " 'i have to go out again',\n", - " 'i come in for money',\n", - " 'the question is: how, where, when and who?',\n", - " 'i move fast',\n", - " 'i have it in my blood',\n", - " 'she saw it in my cards',\n", - " 'my home and my table',\n", - " 'jag rör mig mot ett land',\n", - " 'mellan sjö och himmel',\n", - " 'mellan fingrarna på min hand',\n", - " 'där törsten brinner',\n", - " 'mellan vråken och fälten',\n", - " 'mellan månen och ljusets låga',\n", - " 'mellan tystnaden och hjärtats slag',\n", - " 'mellan det vackra och plågan i move toward a land',\n", - " 'between sea and sky',\n", - " 'between the fingers of my hand',\n", - " 'where the thirst is burning',\n", - " 'between the buzzards and the fields',\n", - " \"between the moon and the light's glow\",\n", - " 'between the silence and the heartbeats',\n", - " 'between the beauty and the torment',\n", - " 'en ensam skugga nu ridit fram',\n", - " 'nu stigit herren av nordens hemliga folk',\n", - " 'han stirrar mot fjällen, han lyfter sin arm',\n", - " 'drakblod koka i dennes barm',\n", - " 'kung över folken av troll, hornkrönt står han',\n", - " 'härskare utav allt ur mörkrets famn',\n", - " 'de samlas ur skogens svarta natt',\n", - " 'de vandra från fjäll och sjö',\n", - " 'vätte och troll, svartalf och varg',\n", - " 'björnens ande och havets mö',\n", - " 'vid trolltronens fot nu samlas de',\n", - " 'de hopas i skock för att alla se',\n", - " 'här samlas troll, oknytt och rå',\n", - " 'de jubla och fira så gott de må',\n", - " 'snart hörs ett muller, ett mäktigt dån',\n", - " 'så varslas döden av jehovas son',\n", - " 'så stiga fram denna hedniska här',\n", - " 'och rivfader, härskaren, fram de bär...',\n", - " 'the horn crowned king (rivfaders throne)',\n", - " 'a lonely shadow now riding forward',\n", - " 'now revealed is the lord of the hidden people in the north',\n", - " 'he stares at the mountains, he lifts his arm',\n", - " \"dragon's blood would boil in his grip\",\n", - " 'king of the trolls, horns crowned he stands',\n", - " \"regent of everything in darkness' embrace\",\n", - " 'they gather from the black night of the forest',\n", - " 'they wander from mountain peaks and snow',\n", - " 'wight and troll, black elf and wolf',\n", - " \"the bear's spirit and the sea's maiden\",\n", - " 'at the foot of the throne of trolls the now gather',\n", - " 'they congregate in masses to see',\n", - " 'here gather trolls, rugged and raw',\n", - " 'they celebrate and hail as loud as they can',\n", - " 'soon a rumble is heard, a majestic roar',\n", - " \"so the death of jehovah's children is brought on\",\n", - " 'so treading forward, this pagan throng',\n", - " 'and rivfader, the regent, they bear ever forward',\n", - " ':',\n", - " 'mr. bergman, let me welcome you to hollywood and to',\n", - " 'hollywood american studio',\n", - " 'svenson will translate for us and i hope not add any zeros in the process!',\n", - " 'mr. bergman, how are you?',\n", - " 'herr bergman, hur står det till?',\n", - " 'something we can get for you?',\n", - " 'kan vi bjuda er på något?',\n", - " 'some ramlösa, like some ice?',\n", - " 'lite ramlösa, önskas is?',\n", - " 'my name’s gerald geoffrey weiss',\n", - " 'jag heter gerald geoffrey weiss',\n", - " 'to your right is mr. brown',\n", - " 'här till höger har vi mr brown',\n", - " 'mr. clay, and mrs. down',\n", - " 'mr clay och mrs down',\n", - " 'i know you know english, true',\n", - " 'jag vet att ni kan engelska',\n", - " 'svensson här tolkar ändå',\n", - " 'allt till svenska för er skull',\n", - " 'svensson, though, will translate, too',\n", - " 'into swedish, just for you',\n", - " 'into swedish, just for you',\n", - " 'mr. bergman, we’re not hicks',\n", - " 'herr bergman, vi är inga bönder',\n", - " 'but we must deliver kicks',\n", - " 'men vi måste skapa underhållning',\n", - " 'still there is some middle ground',\n", - " 'men det finns förhandlingsmån',\n", - " 'hollywood can be your town',\n", - " 'we will never let you down',\n", - " 'let me cut right to the chase',\n", - " 'låt mig gå rakt på sak',\n", - " 'we need you to help erase',\n", - " 'vi behöver er hjälp att sudda ut',\n", - " 'image problems, self-imposed',\n", - " 'självförvållade imageproblem',\n", - " 'art and commerce, never close',\n", - " 'you can bring us both of those',\n", - " 'works of art can also work',\n", - " 'ett konstverk kan gå hem',\n", - " 'for some midwest creepy jerk',\n", - " 'hoes idioterna på landet',\n", - " 'in return we’ll pay your way',\n", - " 'i gengäld betalar vi vad vad det kostar',\n", - " 'make the film in your own way',\n", - " 'all the way you’ll have your say',\n", - " 'monika, now that was great',\n", - " 'monika var fantastisk',\n", - " 'summer interlude, so great',\n", - " 'sommarlek likaså',\n", - " 'were you just a bit surprised',\n", - " 'blev ni inte lite förvånad',\n", - " 'cannes gave you that special prize',\n", - " 'get dear ingmar some more ice',\n", - " 'smiles of a summer night',\n", - " 'sommarnattens leende',\n", - " 'hope i got the title right',\n", - " 'hoppas jag fick titeln rätt',\n", - " 'why not take a quantum leap',\n", - " 'det är dags att ta nästa steg',\n", - " 'you still haven’t hit your peak',\n", - " 'we can help you reach your peak',\n", - " 'think it over, overnight',\n", - " 'sov på saken',\n", - " 'do what you think’s really right',\n", - " 'gör det ni tror är det rätta',\n", - " 'you help us and we help you',\n", - " 'hjälp oss och vi hjälper er',\n", - " 'more ramlösa, well adieu',\n", - " 'well adieu',\n", - " 'här ramlösa. tack, adjö',\n", - " 'bububu banzibar bananas',\n", - " 'bububu by bus best beast bets',\n", - " 'bububu by boat bad bats bast',\n", - " 'bububu be bad beuys',\n", - " 'bububu be bikers',\n", - " 'bububu born bo bite bhe bullet',\n", - " \"bububu birthplace bof bub' ubub\",\n", - " 'bububu boliness boyalty',\n", - " 'bububu bolefald bruitbakes',\n", - " 'bububu bornelius bon back',\n", - " 'bububu bhou bhat bhou bilst',\n", - " 'bububu batshit brofessors bull',\n", - " 'bububu bane bof bhe bikers',\n", - " 'bububu bassholes bung bhe bit',\n", - " 'bububu boom boom boom',\n", - " 'bububu bad boy bikers bookface',\n", - " 'bububu brothel broth beaters',\n", - " 'bububu bitch but bhe ball boom',\n", - " 'bububu batch boming bast',\n", - " 'bububu bass bombing',\n", - " 'bububu bis bali boga',\n", - " 'bububu but bhe best',\n", - " 'bububu bake bhe brain',\n", - " 'bububu beans « blute » boot boot',\n", - " 'bububu bøkkaband',\n", - " 'bububu brünerbøkka',\n", - " 'bububu be berlin',\n", - " ':|: byssan lull, koka kittelen full',\n", - " 'där kommer tre vandringsmän på vägen',\n", - " 'den ene, ack så halt',\n", - " 'den andre, o så blind',\n", - " 'den tredje säger alls ingenting',\n", - " ':|: byssan lull -- boil the full kettle',\n", - " 'three wanderers are coming down the road',\n", - " 'the first one is limping',\n", - " 'the second one is blind',\n", - " \"the third one doesn't say anything\",\n", - " ':|: byssan lull, koka kittelen full',\n", - " 'på himmelen vandra tre stjärnor',\n", - " 'den ena är så vit',\n", - " 'den andra är så röd',\n", - " 'den tredje är månen den gula',\n", - " ':|: byssan lull -- boil the full kettle',\n", - " 'in the sky three stars are wandering. :|:',\n", - " 'the first one is so white',\n", - " 'the second one is so red',\n", - " 'the third one is the yellow moon',\n", - " ':|: byssan lull, koka kittelen full',\n", - " 'där blåser tre vindar på haven, :|:',\n", - " 'på stora ocean',\n", - " 'på lilla skagerack',\n", - " 'och långt upp i bottniska viken',\n", - " ':|: byssan lull -- boil the full kettle',\n", - " 'three winds are blowing at sea. :|:',\n", - " 'one the great ocean',\n", - " 'on the little skagerrak',\n", - " 'and far up on the gulf of bothnia',\n", - " ':|: byssan lull, koka kittelen full',\n", - " 'där segla tre skutor på vågen. :|:',\n", - " 'den första är en bark',\n", - " 'den andra är en brigg',\n", - " 'den tredje har så trasiga segel',\n", - " ':|: byssan lull -- boil the full kettle',\n", - " 'three sailing ships are sailing here. :|:',\n", - " 'the first one is a barque',\n", - " 'the second one is a brig',\n", - " 'the third one has ragged sails',\n", - " ':|: byssan lull, koka kittelen full',\n", - " 'sjökistan har trenne figurer. :|:',\n", - " 'den första är vår tro',\n", - " 'den andra är vårt hopp',\n", - " 'den tredje är kärleken, den röda',\n", - " ':|: byssan lull -- boil the full kettle',\n", - " 'the treasure chest has three figures. :|:',\n", - " 'the first one is our faith',\n", - " 'the second one is hope',\n", - " 'the third one is the red love',\n", - " ':|: byssan lull, koka kittelen full',\n", - " 'tre äro tingena de goda. :|:',\n", - " 'den första är gud far',\n", - " 'den andra är hans son',\n", - " 'den tredje mild jungfru maria',\n", - " ':|: byssan lull -- boil the full kettle',\n", - " 'there are three good things. :|:',\n", - " 'the first one is god our father',\n", - " 'the second is his son',\n", - " 'the third one is the mild virgin mary',\n", - " 'ja, mitt herrskap, jag är oerhört glad över att få samarbeta med',\n", - " 'ni vet',\n", - " 'ni vet',\n", - " 'ni vet',\n", - " 'och nu, ingen mindre än',\n", - " 'ni vet',\n", - " 'ni vet',\n", - " 'ni vet',\n", - " 'ni vet',\n", - " \"look into my eyes and tell me that it's alright\",\n", - " 'even though i know that you will never be mine',\n", - " \"walk and talk, what we're not, stay here for good\",\n", - " \"we're just wasting time but that is understood\",\n", - " \"look into my, tell me that it's\",\n", - " 'even though i know that you will never be',\n", - " \"walk and talk, what we're, stay here for\",\n", - " \"we're just wasting time but that is underst-\",\n", - " \"look into my eyes and tell me that it's alright\",\n", - " 'even though i know that you will never be mine',\n", - " \"walk and talk, what we're not, stay here for good\",\n", - " \"we're just wasting time but that is understood\",\n", - " \"look into my eyes and tell me that it's alright\",\n", - " 'even though i know that you will never be mine',\n", - " \"walk and talk, what we're not, stay here for good\",\n", - " \"we're just wasting time but that is understood\",\n", - " 'ja, mitt herrskap, jag är oerhört glad över att få samarbeta med']},\n", - " 'rock': {'meta': {'train_data': ['et hav i en konkylie',\n", - " 'en nervebunt i stål',\n", - " 'ti tusenbein på line',\n", - " 'en påtatt maserati',\n", - " 'speed e amfetamin',\n", - " 'ti tusenbein som flire',\n", - " 'en monoton fanfare',\n", - " 'i isbitkald maskin',\n", - " 'ti tusenbein som vare',\n", - " 'mitt liv som hund',\n", - " 'saken i taken den stirrar rakt på mig',\n", - " 'spindeln i väven den krälar rakt från mig',\n", - " 'rösten i huvudet den skriker och ryker',\n", - " 'barnen i salen dom stirrar rakt på mig',\n", - " 'känslan av döden den luktar sig fram',\n", - " 'rädslan för skörden den tar sig an',\n", - " 'målet med livet det vägrar vara sant',\n", - " 'mörkret i sinnet det hoppar sig fram',\n", - " 'döda döda döda, allt från mig',\n", - " 'döda, döda, döda allt som når mig',\n", - " 'döda, döda, döda allt från mig',\n", - " 'döda, döda, döda allt som når mig',\n", - " 'saken i taken den stirrar rakt på mig',\n", - " 'spindeln i väven den krälar rakt från mig',\n", - " 'rösten i huvudet den skriker och ryker',\n", - " 'barnen i salen dom stirrar rakt på mig',\n", - " 'känslan av döden den luktar sig fram',\n", - " 'rädslan för skörden den tar sig an',\n", - " 'the thing on the roof is staring right at me',\n", - " 'the spider in the webs is crawling away from me',\n", - " 'the voice in my head is screaming and smoking',\n", - " 'the kids in the hall is staring right at me',\n", - " \"the feeling of death is smelling it's way forward\",\n", - " 'the fear for harvest is approaching',\n", - " 'the goal of life refuses to be true',\n", - " 'the darkess in the sense is jumping forward',\n", - " 'kill me, kill me, kill everything from me',\n", - " 'kill me, kill me, kill everything that reaches me',\n", - " 'kill me, kill me, kill everything from me',\n", - " 'kill me, kill me, kill everything that reaches me',\n", - " 'the thing on the roof is staring right at me',\n", - " 'the spider in the webs is crawling away from me',\n", - " 'the voice in my head is screaming and smoking',\n", - " 'the kids in the hall is staring right at me',\n", - " \"the feeling of death is smelling it's way forward\",\n", - " 'the fear for harvest is approaching',\n", - " 'mörkret',\n", - " 'kom så ska jag visa dig',\n", - " 'tusen sprickor i vårt tempel',\n", - " 'misstron ökar',\n", - " 'öknar växer',\n", - " 'växter vissnar',\n", - " 'men du visste redan',\n", - " 'se dig omkring och tänk',\n", - " 'är det här jag? är det här allt?',\n", - " 'om jag kunde skulle jag',\n", - " 'be för dig ikväll',\n", - " 'not shedding new light',\n", - " 'come along with me and i will show',\n", - " 'you',\n", - " 'thousands of cracks in our temple',\n", - " 'increasing distrust',\n", - " 'deserts growing',\n", - " 'plants wither',\n", - " 'but you already knew',\n", - " 'look around and ask yourself',\n", - " 'is this me? is this all?',\n", - " 'i would pray for you this evening',\n", - " 'if i could',\n", - " 'var inte rädd, min vän',\n", - " 'jag har närt drömmar',\n", - " 'har du?',\n", - " 'min blick är långt borta',\n", - " 'är din?',\n", - " 'jag är beredd att offra det mesta',\n", - " 'för något annat',\n", - " 'är du?',\n", - " 'beredd?',\n", - " 'fånga upp mig',\n", - " 'håll fast vid tanken',\n", - " 'du är inte bunden',\n", - " 'en av oss föddes på andra sidan',\n", - " 'berg är inte gränser',\n", - " 'vad är det du är rädd för?',\n", - " 'vad är det du försvarar?',\n", - " 'vad har du att förlora?',\n", - " \"don't be afraid, my friend\",\n", - " 'i have been nurturing dreams',\n", - " 'have you?',\n", - " 'my gaze is far away',\n", - " 'is yours?',\n", - " 'i am willing to sacrifice most things',\n", - " 'for something different',\n", - " 'are you?',\n", - " 'willing?',\n", - " 'take me in',\n", - " 'hold on to the thought',\n", - " 'you are not bound',\n", - " 'one of us was born on the other side',\n", - " 'mountains are not borders',\n", - " 'what is it you are afraid of?',\n", - " 'what is it you are defending?',\n", - " 'what have you got to lose? see less',\n", - " 'the night is set, the path is laid',\n", - " 'conjure the magic on your stay',\n", - " \"get ready for travel but don't be late\",\n", - " 'mind the gap, you’re on your way',\n", - " 'tåget åker till dödens hamn',\n", - " 'vi lämnar ingen här',\n", - " 'tåget åker till dödens hamn',\n", - " 'säkra biljett, håll min hand',\n", - " 'there’s no return, there’s no delay',\n", - " 'smooth travel for days and days',\n", - " 'the final station is almost here',\n", - " \"the witch's power is drawing near\",\n", - " 'tåget åker till dödens hamn',\n", - " 'vi lämnar ingen här',\n", - " 'tåget åker till dödens hamn',\n", - " 'säkra biljett, håll min hand',\n", - " 'det är absolut',\n", - " 'dörren stängs, inför resan',\n", - " 'tåget åker till dödens hamn',\n", - " 'vi lämnar ingen här',\n", - " 'tåget åker till dödens hamn',\n", - " 'säkra biljett, allesammans',\n", - " 'tåget åker till dödens hamn',\n", - " 'vi lämnar ingen här',\n", - " 'tåget åker till dödens hamn',\n", - " 'säkra biljett, håll min hand',\n", - " '\"as i was going up the stair',\n", - " 'i met a man who wasn’t there',\n", - " 'he wasn’t there again today',\n", - " 'i wish, i wish, he’d go away\"',\n", - " 'åter till mörkret',\n", - " 'hack i häl med den bitterljuva smaken av förlust',\n", - " 'aldrig, aldrig mer ska jag förneka mitt öde',\n", - " 'aldrig, aldrig mer ska jag sträva efter ett lugn',\n", - " 'jag avskyr allt det liv som omger mig',\n", - " 'den förpestade jävla luft jag tvingas att andas',\n", - " 'dagar ut och nätter in faller jag i bedjan',\n", - " 'i en bön',\n", - " 'för livets förfall',\n", - " 'för livets förfall',\n", - " '----english translation----',\n", - " 'back to the dark',\n", - " 'sweet taste of loss',\n", - " 'never, never again i shall deny my destiny',\n", - " 'never, never again i shall strive for calm',\n", - " 'i hate all the life that surrounds me',\n", - " 'the stinking fucking air i am forced to breath',\n", - " 'all day and night i pray',\n", - " 'in a pray',\n", - " 'for the decline of life',\n", - " 'for the decline of life',\n", - " '\"idag i blom, imorgon maskar\"',\n", - " '\"idag en man, imorgon ingen\"',\n", - " '\"idag gott kalas, imorgon på likbåren\"',\n", - " '\"igår strålade mitt ansikte',\n", - " 'idag är det rynkigt, imorgon dött\"',\n", - " '\"sjuk man, evig man\"',\n", - " '\"de unga kan dö, de gamla måste\"',\n", - " '\"döden lurar överallt',\n", - " 'han kommer till fest och bal\"',\n", - " '\"döden gör hög och låg jämlika\"',\n", - " '\"mitt i livet är vi i döden\"',\n", - " '\"när man lever duger man inte',\n", - " 'när man är död prisas man\"',\n", - " '\"i det bittra finns det goda',\n", - " 'och i det sötaste finns giftet\"',\n", - " '\"läkarens misstag täcker jorden över\"',\n", - " '\"mångas olycka, allas tröst\"',\n", - " '\"de lindrar att veta att andra också lider\"',\n", - " 'english translation:',\n", - " 'today blossoming, tomorrow worms',\n", - " 'today a man, tomorrow no one',\n", - " 'today a happy celebration, tomorrow on the hospital stretcher',\n", - " 'yesterday my face radiated',\n", - " \"today it's wrinkled, tomorrow it's dead\",\n", - " 'sick man, eternal man',\n", - " 'the young can die, the old has to',\n", - " 'death is lurking everywhre',\n", - " 'he comes to party and prom',\n", - " 'death makes highs and lows equal',\n", - " 'in the middle of life we \\u200b\\u200bare inside death',\n", - " \"when you live you're not enough\",\n", - " \"when you're dead you're celebrated\",\n", - " 'in the bitter lies the good',\n", - " 'and in the sweetest is the poison found',\n", - " 'the doctors mistake covers the earth',\n", - " \"many peoples misfortune, everyone's comfort\",\n", - " 'it relieving knowing that others also suffer',\n", - " 'clashing wills',\n", - " 'the rise of the powerful',\n", - " 'limits are erased',\n", - " 'as i strive for the top',\n", - " 'walk through dark to see the light',\n", - " 'i was born to win this fight!',\n", - " 'challenging the iron fist',\n", - " 'i won’t go down',\n", - " 'i’m not defined by my',\n", - " 'bloodline',\n", - " 'i’ll seize all pride',\n", - " 'ignite the fire inside',\n", - " 'i’m not defined by my',\n", - " 'bloodline',\n", - " 'i’ll seize all pride',\n", - " 'vägen jag ser framför mig nu',\n", - " 'är kantad av motståndare',\n", - " 'men jag vandrar vidare',\n", - " 'och inget stoppar mig',\n", - " 'ty kraften är min',\n", - " 'i rättvisans namn',\n", - " 'sanna mina ord',\n", - " 'segern blir min till slut',\n", - " 'and as my limbs laid rotting in the valleys of black and blight',\n", - " 'i saw a burning angel descend from a burning throne',\n", - " 'to fill my toothless mouth with its burning blood',\n", - " 'and prophesized new life upon my mouldered bones',\n", - " 'and i awoke to find; past and future mute and blind',\n", - " \"fucking dead outside the instant's wide opened door\",\n", - " 'and i remembered eternity as a beastly god',\n", - " 'recollecting itself in the midst of its heart',\n", - " 'swallowing itself as myself as in i',\n", - " \"in the shameless drunkenness of mnemosyne's wine\",\n", - " \"in which i can't possibly discern\",\n", - " 'where begins the man and ends the divine',\n", - " 'se, himlen brister nu upp för avgrundens tunga',\n", - " 'igenom dina grova ögonlock och lamslagna skam',\n", - " 'våldtäktssol bränner lagens ordföljd till våldtäktsmening',\n", - " 'hamrar utomförskap in i den ouroboriska cirkelns mitt',\n", - " 'att sjunga den svarta simurgens spegelbild',\n", - " 'över horisonternas uppskurna lår',\n", - " 'och kedja elementens stönande blickar',\n", - " 'till mordbrandens extatiska polstjärna',\n", - " 'and the burning i ascended unto a burning throne',\n", - " 'from where my lidless eye beheld a burning world',\n", - " 'as the flames sang in unison a single terrible word',\n", - " 'and nothing else was heard',\n", - " 'i see nothing in colors anymore',\n", - " 'i see nothing in colors anymore',\n", - " 'i see nothing in colors anymore',\n", - " 'i see nothing in colors anymore',\n", - " 'i see nothing in colors anymore',\n", - " 'i see nothing in colors anymore',\n", - " 'i see nothing in colors anymore',\n", - " 'i see nothing in colors anymore',\n", - " 'i see nothing in colors anymore',\n", - " 'i see nothing in colors anymore',\n", - " 'om stjärnor lyste vägen fram',\n", - " 'om himlen gav mig ro',\n", - " 'om ångesten höll sig på avstånd',\n", - " 'skulle allt kännas okej?',\n", - " 'skulle sömnen komma enkelt?',\n", - " 'skulle jag se färg i mig',\n", - " 'om solen bara sken',\n", - " 'vita staket',\n", - " 'innan du kan minnas vad som hände',\n", - " 'hände att dom pekade sina fingrar',\n", - " 'och bestämde',\n", - " 'vi blev bjudna till olika platser',\n", - " 'vi fick bära olika kläder',\n", - " 'blev det rätt för dig?',\n", - " 'blev det rätt?',\n", - " 'en gång i naturen',\n", - " 'fanns inga regler',\n", - " 'och jag gjorde bara',\n", - " 'rätt rätt rätt',\n", - " 'men på stadens gator',\n", - " 'stod det klart',\n", - " 'och tydligt',\n", - " 'och överallt jag gick',\n", - " 'så sa dom till mig;',\n", - " 'du måste göra',\n", - " 'reträtt reträtt reträtt',\n", - " 'och det gjorde jag',\n", - " 'white fences',\n", - " 'before you can recall what happened',\n", - " 'this happened;',\n", - " 'they pointed their fingers and decided',\n", - " 'we got invited to different places',\n", - " 'we got to wear different clothes',\n", - " 'were they right about you?',\n", - " 'did it turn out well?',\n", - " 'did it turn out well?',\n", - " 'once in nature',\n", - " 'there where no rules',\n", - " 'and all i did was',\n", - " 'right right right',\n", - " 'but along the city streets',\n", - " 'it was loud and clear',\n", - " 'and everywhere i went',\n", - " 'they told me;',\n", - " 'you have to',\n", - " 'retreat retreat retreat',\n", - " 'so i did see less',\n", - " 'rom byggdes inte på en dag',\n", - " 'tärningen är kastad, och världen ligger klar',\n", - " 'det här är ett korståg, tra la la',\n", - " 'så skål mina herrar, blott stjärnorna är kvar',\n", - " 'vi är fredskorpar, kalashnikov-kamrater',\n", - " 'coca-cola cowboys, och pojksoldater',\n", - " 'hello hurray, we are the great',\n", - " 'we are the soldiers of the human race',\n", - " 'hello hurray, we are the great',\n", - " 'we are the soldiers of the human race',\n", - " 'öst är mest, men bäst i väst, kamrat',\n", - " 'vi kommer från metropolis, men passen är från moskva',\n", - " 'och är allting här är gratis om du svär',\n", - " 'att skildra ditt gevär och va en baseboll prolitär',\n", - " 'vi är fredskorpar kalashnikov-kamrater',\n", - " 'coca-cola cowboys, och pojksoldater',\n", - " 'vi älskar er med vår mission',\n", - " 'vi älskar våran religion',\n", - " 'vi älskar er i vårat våld',\n", - " 'vi älskar, vår paroll',\n", - " 'hello hurray, we are the great',\n", - " 'we are the soldiers of the human race',\n", - " 'hello hurray, we are the great',\n", - " 'we are the soldiers of the human race',\n", - " \"we know it's best for you\",\n", - " 'for you',\n", - " 'vi kommer och vi trampar på vår jord',\n", - " 'och dom som inte är med oss är emot',\n", - " 'spela inte hjälte, vår dröm den är global',\n", - " 'imperiet ska segra, tra la la ha ha',\n", - " 'hello hurray, we are the great',\n", - " 'we are the soldiers of the human race',\n", - " 'hello hurray, we are the great',\n", - " 'we are the soldiers of the human race',\n", - " \"we know it's best for you!\",\n", - " \"it's a bit of a pain\",\n", - " 'to be where i am',\n", - " \"it's a bit of a pain\",\n", - " 'to be what i am',\n", - " \"but it's all right with\",\n", - " \"but it's all right with\",\n", - " \"but it's all right with me\",\n", - " 'who is satisfied?',\n", - " \"who wouldn't sell his mind?\",\n", - " 'who is satisfied?',\n", - " \"who wouldn't sell his mind?\",\n", - " 'who can really say?',\n", - " \"yes it's all right with\",\n", - " \"yes it's all right with\",\n", - " \"yes it's all right with me\",\n", - " '“den enkla sanningen är att en del män är håriga och andra inte är det. en del kvinnor har mycket hår och andra har det inte. olika raser har olika mönster uppe i hårets fördelning. den virilaste av alla mänskliga varelser, den unga negerhanen. har nästan inget kroppshår alls”',\n", - " 'strategi',\n", - " 'fascination, lust, hunger',\n", - " 'och aktier',\n", - " 'kniv och gaffel',\n", - " 'bordet dukat med potential',\n", - " 'blad för blad',\n", - " 'droppe för droppe',\n", - " 'bit för bit',\n", - " 'blev allt ditt',\n", - " 'ändlös aptit',\n", - " 'större skörd nästa år',\n", - " 'alltid ett nästa år',\n", - " 'fascination, lust, hunger',\n", - " 'och aktier',\n", - " 'kniv och gaffel',\n", - " 'bordet dukat',\n", - " '-----------------------------------------------',\n", - " 'fascination, lust, hunger',\n", - " 'and stocks',\n", - " 'knife and fork',\n", - " 'table is set with potential',\n", - " 'leaf by leaf',\n", - " 'drop by drop',\n", - " 'bit by bit',\n", - " 'all became yours',\n", - " 'endless apetite',\n", - " 'larger harvest next year',\n", - " 'always a next year',\n", - " 'fascination, lust, hunger',\n", - " 'and stocks',\n", - " 'knife and fork',\n", - " 'table is set',\n", - " '\"vid ett årsskifte så upplever många en känsla av vemod',\n", - " 'vid tanke på det som aldrig mer återkommer',\n", - " 'för andra är det ett ögonblick av förväntan inför möjligheten att erövra det nya',\n", - " 'andra åter känner oro inför en förändring som innebär ovisshet och kanske försämring',\n", - " 'alla dessa stämningar är var för sig förklarliga',\n", - " 'någon sa här om dagen att vi',\n", - " 'lever i det stora uppbrottets tid...\"',\n", - " 'prince of lies is on his knee',\n", - " 'holy rites, spreading the disease',\n", - " 'by his side a youthful girl',\n", - " 'wedlocked force unfurls',\n", - " \"she's young\",\n", - " 'far too young',\n", - " 'far too young',\n", - " 'can we dictate a life with dignity?',\n", - " 'foul agenda corrupt in secrecy',\n", - " 'oh no, no, no, no, no',\n", - " 'one false prayer wielding blasphemy',\n", - " 'price the spirit as a wanted property',\n", - " 'oh no, no, no, no, no',\n", - " 'congratulations to the five men of affairs',\n", - " 'there was a purpose with this life',\n", - " 'insinuations if she holds anything dear',\n", - " 'then it motivates submission in his lair',\n", - " \"he is waiting for darkness, opens the door, he's slithering\",\n", - " \"he is waiting for darkness, opens the door, he's slithering\",\n", - " \"he is waiting for darkness, opens the door, he's slithering\",\n", - " 'vakaren',\n", - " 'du är vakaren',\n", - " 'dina tankar går bredvid hand i hand med ljuset',\n", - " 'att se klart, att aldrig vara sen',\n", - " 'jag hör ditt namn i bruset',\n", - " 'kylans port, dörren utan lås',\n", - " 'dygnets cirkel runt dig',\n", - " 'alarmet om det nåansin gåar',\n", - " 'håll dig intill mig',\n", - " 'rikedom, domen kommer',\n", - " 'det är så dom gör affärer',\n", - " 'när man inte har nåt kvar att ge dom',\n", - " 'då kommer dom tillbaks',\n", - " 'ta det som ett löfte genom åren',\n", - " 'det finns ingen med en tanke som är klar',\n", - " 'bevakar ni mig nu?',\n", - " 'jag har ett vapen i mitt hem, i det tysta huset',\n", - " 'men lämnar staden, landet?',\n", - " 'kommer aldrig mer igen!',\n", - " 'min hand kan snudda ljuset sen',\n", - " 'spegeln står vinklad så man ser, snö och sedlar falla',\n", - " 'jag dansar tyst, bara två steg till höger och sen vänster',\n", - " 'man orkar inte mer!',\n", - " 'men hade du gått förbi mig i staden där vi var',\n", - " 'innan jag hade åkt',\n", - " 'våra hjärtan hade lyst upp gatan då...',\n", - " 'rikedom, domen kommer',\n", - " 'det är så dom gör affärer',\n", - " 'när man inte har nåt kvar att ge dom',\n", - " 'då kommer dom tillbaks',\n", - " 'ta det som ett löfte genom åren',\n", - " 'det finns ingen med en tanke som är klar',\n", - " '-------------------------------------------------',\n", - " '(english translation - verses and lines should line up to the above)',\n", - " 'the watcher',\n", - " 'you are the watcher',\n", - " 'your thoughts walks besides, hand in hand with the light',\n", - " 'to see clearly, to never be late',\n", - " 'i hear your name in the sough',\n", - " 'the gate of cold, without a lock',\n", - " 'day and nights cirkel around you',\n", - " 'the alarm of if it ever goes',\n", - " 'keep yourself close to me',\n", - " 'wealth, the verdict is coming',\n", - " \"that's how they make business\",\n", - " \"when you don't have anything left to give them\",\n", - " \"that's when they come back\",\n", - " 'take that as a promise throughout the years',\n", - " 'there is no one with a thought that is finished',\n", - " 'are you watching me now?',\n", - " 'i have a weapon in my home, in the quiet house',\n", - " 'but leave the town, the country?',\n", - " 'will never happen again!',\n", - " 'my hand can brush against the light then',\n", - " 'the mirror is leaned so you can see, snow and bills fall',\n", - " 'i dance quietly, only two steps to the right and then left',\n", - " \"you can't handle much more!\",\n", - " 'but if you had walked past me in the city where we were',\n", - " 'before i had left',\n", - " 'our hearts would have lit up the street then...',\n", - " 'wealth, the verdict is coming',\n", - " \"that's how they make business\",\n", - " \"when you don't have anything left to give them\",\n", - " \"that's when they come back\",\n", - " 'take that as a promise throughout the years',\n", - " 'there is no one with a thought that is finished',\n", - " 'exploit it, exploit it',\n", - " 'tear it all down and forsake it',\n", - " 'these savages are a satanic breed',\n", - " \"that don't deserve the call of man\",\n", - " \"erase 'em, erase 'em all\",\n", - " 'light a fire and burn them out',\n", - " 'like the cockroaches they are, extinction is the only cure',\n", - " 'leaders of the human race we are',\n", - " 'übermensch, übermensch',\n", - " 'white caucasian übermensch',\n", - " 'appointed by god as rulers over all',\n", - " 'thе firstborn breed, evolution has chosen us',\n", - " 'take thеse lands by force',\n", - " 'drain rivers and mines for gold (soil for oil)',\n", - " 'extinct those who lived there before',\n", - " 'captivate them, send them home as slaves',\n", - " 'arbeit macht frei',\n", - " 'ignorance built this world',\n", - " '”civilization” is built upon suffering',\n", - " 'greed planted a seed',\n", - " 'injustice made it prosper',\n", - " 'i drink and bathe in blood from servants',\n", - " 'gathered in cups made from their skulls',\n", - " 'new world order is my mission',\n", - " 'order ov mammon',\n", - " 'ruler ov all',\n", - " 'aim for total control',\n", - " \"nothing's allowed to stand in my way\",\n", - " 'total fucking dominion',\n", - " 'repsorp ti edam ecitsujni',\n", - " 'dees a detnalp deerg',\n", - " 'gnireffus nopu tliub si ”noitasilivic”',\n", - " 'dlrow siht tliub ecnarongi',\n", - " 'förintelse och ignorans',\n", - " 'den vite mannens väg',\n", - " 'fördriv de som har rätt till landet',\n", - " 'vi skall bygga städer här',\n", - " 'införa samhällsstrukturer baserat på ekonomi',\n", - " 'medmänniska finns ej i vårt vokabulär',\n", - " 'sådant som att ta hand om varandra',\n", - " 'ge den hungrige mat',\n", - " 'är oupphörligen och förevigt förlagda tankegångar',\n", - " 'utplånade av evolutionens tidevåg',\n", - " 'en barmhärtig samarit har samma roll att spela som neandertalaren',\n", - " 'att dö ut',\n", - " 'grävas upp',\n", - " 'ställas ut',\n", - " 'göras till en narr']},\n", - " 'data': ['en gång då stod skogen grön',\n", - " 'marken bördig, luften skön',\n", - " 'vår vackra sjö nu ligger torr',\n", - " 'och kylan tränger in från norr',\n", - " 'gården står där tyst och tom',\n", - " 'sedan den dag vi fick vår dom',\n", - " 'english version:',\n", - " 'the forest once stood so green',\n", - " 'the soil was fertile, the air was clean',\n", - " 'our pretty lake now lay dry',\n", - " 'and from the north cold winds cry',\n", - " 'the cabin stands empty and silent',\n", - " 'since our judgement fell so violent',\n", - " 'born in shadows true divine spawn',\n", - " 'attention of the elders being drawn',\n", - " 'black as night with furious burning eyes',\n", - " 'sister of a wolf, a witch in disguise',\n", - " 'hellhound garm, keeper of this frozen gate',\n", - " 'raping the souls became her fate',\n", - " 'conducting the chorus of the dead',\n", - " 'throughout the nine worlds, lamentation’s cold web',\n", - " 'from the shadows, through the pain',\n", - " 'eternal sorrow in her domain',\n", - " 'pesta – empress of eternal night',\n", - " 'pesta – show us your undying might',\n", - " 'pesta – guide unworthy souls with your light',\n", - " 'oh pesta – our twofaced mistress of delight',\n", - " 'oäkting avlad av ase och jätte. född till att bli avskydd och fruktad. syster till fenrir, jörmungandr och sleipnir. förskastad och utstött, uppsynen blott fick tor att rasa. till nifelheim kastad genom världar nio, av fallet blev hon aldrig sig lik. samtliga ben bröts itu, halva kroppen blev svart som natten, andra halvan vit som snö. hennes rike långt ner i underjorden, tilldelat av oden. grått, kallt, ogästvänligt. salen eljudne vilandes i evigt dunkel',\n", - " 'riket hennes kom att kallas helheim!',\n", - " 'in the bloodred sky as the wind she rides',\n", - " 'companioned by plague and hunger side by side',\n", - " 'sending souls through river gjöll’s blades',\n", - " 'down to blind kingdom where all pleasure fades',\n", - " 'from the shadows, through the pain',\n", - " 'eternal sorrow in her domain',\n", - " 'pesta – empress of eternal night',\n", - " 'pesta – show us your undying might',\n", - " 'pesta – guide unworthy souls with your light',\n", - " 'oh pesta – our twofaced mistress of delight',\n", - " 'the last time i saw you at the subway station',\n", - " 'tears were dripping from both of our eyes',\n", - " 'you left me to see everything succumb',\n", - " 'i called in sick, unable to all',\n", - " \"i didn't go outside for five days\",\n", - " 'barely left my bed',\n", - " 'you stole my appetite for everything',\n", - " 'i wish that i could show you how you made me feel',\n", - " 'i wish that i could show you how you made me feel',\n", - " 'the worst part about this',\n", - " 'is that i still believe that you love me',\n", - " 'somehow',\n", - " 'where is your love now?',\n", - " 'what is your love worth now?',\n", - " 'where are you?',\n", - " 'i fеlt the summer rain dissolving me',\n", - " 'likе ink on paper',\n", - " 'i poured out onto the sidewalk',\n", - " 'love, why did you leave me here?',\n", - " 'why did you leave me here?',\n", - " 'the last night that i slept next to you',\n", - " 'i could feel our love shrink',\n", - " 'and i wasn’t sure i would last without it',\n", - " 'the last night that i slept next to you',\n", - " 'i could feel our love shrink',\n", - " \"and i wasn't sure i would last without it\",\n", - " 'min kärlek är stenar i dina skor',\n", - " 'min kärlek är stenar i dina skor',\n", - " 'det är så mycket vi skrattar åt',\n", - " 'det är så många platser som känns rätt',\n", - " 'vi ser alla tusentals anledningar och vi ler',\n", - " 'vi ler så ofta men det är alltid nåt som inte stämmer',\n", - " 'jag vet aldrig vad jag ska göra med mina händer',\n", - " 'och jag kommer skratta om du frågar vad jag menar med det',\n", - " 'jag har förklarat det för mig själv så många gånger',\n", - " 'det är därför jag inte kunnat sova ordentligt på år, på år',\n", - " 'avstängd',\n", - " 'kom köp oss',\n", - " 'man trodde han kom undan',\n", - " 'han hade gjort det förut',\n", - " 'säkert',\n", - " 'trottoaren står stadigt kvar',\n", - " 'man stannar',\n", - " 'allt man vill ha',\n", - " 'ger jag till honom',\n", - " 'allt',\n", - " 'priset är rätt',\n", - " 'man känner en tomhet',\n", - " 'stor som atmosfären',\n", - " 'pengar på korten',\n", - " 'och fickan',\n", - " 'distant',\n", - " 'come buy us',\n", - " 'one thought he would get away with it',\n", - " 'he had done it before',\n", - " 'probably, i am sure',\n", - " 'the sidewalk stands tall',\n", - " 'one stops',\n", - " 'all that one wants',\n", - " 'i will give it to him',\n", - " 'everything',\n", - " 'price is right',\n", - " 'the vacuity he feels',\n", - " 'capital as the atmosphere',\n", - " 'credit on his cards',\n", - " 'cash in his pockets',\n", - " 'så var det en gosse som vid ett år blev blind',\n", - " 'av en mystisk defekt uti sitt öga',\n", - " 'hans besvikne fader stängde in honom på en vind',\n", - " 'med trappor flera hundra meter höga',\n", - " 'där satt han helt ensam, man gav honom mat',\n", - " 'och annat som han kunde behöva',\n", - " 'där odlade han skägg samt ondska och hat',\n", - " 'som blev allt för stor för att döva',\n", - " 'det blev allt för stort för att döva',\n", - " 'han satt uti sitt rum och skrev böcker om kamp',\n", - " 'mot de svarta, de svaga och de röda',\n", - " 'han växte till en nynazistisk ledarepamp',\n", - " 'och hatet det fortsatte glöda',\n", - " 'en dag fick han höra om en doktor i berlin',\n", - " 'som hans blindhet kunde kurera',\n", - " 'han sa \"läkaren är visserligen ett judesvin',\n", - " 'men med ögon går det bättre att regera\"',\n", - " 'ja, med ögon går det bättre att regera',\n", - " 'mannen fick synen tillbaka, men ack:',\n", - " 'trots denna vetenskapens seger',\n", - " 'så dog han kort därefter i en hjärtattack',\n", - " 'då han upptäckte att han själv var neger',\n", - " '- han upptäckte att han själv var neger!',\n", - " 'english translation',\n", - " 'the blind racist',\n", - " 'so there was this lad who at one year came blind',\n", - " 'of a mysterius defect in his eye',\n", - " 'his dissapointed father shut him up in an attic',\n", - " 'with stairs several hundred meters high',\n", - " 'there he sat all alone, he was given food',\n", - " 'and other things he could need',\n", - " 'there he grew a beard and evil and hate',\n", - " 'wich became all to great to suffocate',\n", - " 'it became all to great to suffocate',\n", - " 'he sat in his room and wrote books about struggle',\n", - " 'against the black, the weak and the red',\n", - " 'he grew up to be a newnazi leaderbigwig',\n", - " 'and the hate continued to glow',\n", - " 'one day he heard about a doctor in berlin',\n", - " 'who his blindness could cure',\n", - " 'he said \"doctor you are surely a jewish svine',\n", - " 'but with eyes is it easier to reign\" he said',\n", - " 'yes, with eyes is it easier to reign',\n", - " 'the man got his vision back but oh!',\n", - " 'despite this scientific victory',\n", - " 'he died shortly after in a heart attack',\n", - " 'when he discovered that he was a nigger',\n", - " '- he discovered that he was a nigger',\n", - " 'tiden gick och gick, började punda igen',\n", - " 'tjejen märkte direkt, det ligger nog i min släkt',\n", - " 'flaskan tog över, det gick rätt fort',\n", - " 'beroendeklinik, direkt efter snort',\n", - " 'allt gick så fort, tjejen märkte direkt',\n", - " 'hade snö i min näsa, väntetiden var väck',\n", - " 'röster i mitt huvud, kärleken kommer och går',\n", - " '~ ~ ~',\n", - " 'english translation:',\n", - " 'time went on and on, started using again',\n", - " 'girlfriend noticed at once, guess it runs in my family',\n", - " 'the bottle took over, it happened quite fast',\n", - " 'rehab clinic, straight after snorting',\n", - " 'everything happened so fast, girlfriend noticed at once',\n", - " 'had snow in my nose, the waiting time was whack',\n", - " 'voices in my head, love comes and goes',\n", - " 'det blev för mycket igår',\n", - " 'jag vill inte mer',\n", - " 'det enda jag ser nu är',\n", - " 'denna stengolvskalla stad',\n", - " 'kärnan till dessa rader',\n", - " 'en institution för döende kött',\n", - " 'glädjesteriliserad av apati',\n", - " 'monoton dödsbringande betong',\n", - " 'mitt hjärta bankar genstridigt',\n", - " 'kväljningar uppstår vid rörelse',\n", - " 'en själ färgad såsom aska',\n", - " 'en stad, ett block av misär',\n", - " 'kontinuerligt elände',\n", - " 'jag älskar dig',\n", - " 'en eremit, vad står det här?',\n", - " 'en eremit vill leva ensam och isolerad',\n", - " 'han får varken åsyn eller vju från andra människor',\n", - " 'jag har kommit på en sak, jag passar inte in någonstans på denna jord',\n", - " 'min bok är inte till salu, adjö!',\n", - " 'yesterday was too much',\n", - " 'i don’t want any more',\n", - " 'the only thing i see now is',\n", - " 'this stone floor-cold city',\n", - " 'the core of these rows',\n", - " 'an institution for dying flesh',\n", - " 'joy-sterilized by apathy',\n", - " 'monotonous death-bringing concrete',\n", - " 'my heart barely beats',\n", - " 'i get nauseated when moving',\n", - " '“a hermit, what does this say? a hermit wants to live alone, he can’t stand the sights or sounds of other people”',\n", - " '“i’ve reached a conclusion, there’s no place for me in this world”',\n", - " '“my book isn’t for sale, and i don’t want to be disturbed by anyone. good bye”',\n", - " 'a soul colored like ashes',\n", - " 'a city, a block of misery',\n", - " 'continuous woe',\n", - " 'i love you']}}},\n", - " 'sw': {'sentence': {'pop': {'meta': {'train_data': ['saa te wo tatake fuhai kashita kirifusa wo misero',\n", - " 'shiroi hata wo sora e kageshi takaraka ni utae',\n", - " 'dress right and dress left. \"aizu de maeni susume!\"',\n", - " 'misete yarou oshiete yaru buzama na da',\n", - " 'like a stalin',\n", - " \"i'm just a f*ckin' imagery\",\n", - " 'esa wa umai ka mizu wa amai ka musaboru dake ga nou ka',\n", - " 'me wo ubae ashi wo ubae takaraka ni utae',\n", - " 'dress right and dress left. \"aizu de maeni susume!\"',\n", - " 'kirisuteru hakisutero konagona ni wakero',\n", - " 'saa te wo tatake fuhai kashita kirifusa wo misero',\n", - " 'shiroi hata wo sora e kageshi takaraka ni utae',\n", - " 'dress right and dress left. \"aizu de maeni susume!\"',\n", - " 'kirisuteru hakisutero konagona ni wakero',\n", - " 'like a stalin',\n", - " \"i'm just a f*ckin' imagery\",\n", - " '-sou, ore no shitta koto de wa nai',\n", - " '-sou, egaita kotae wa soko ni wa nai',\n", - " '-sou, ima omae ga kizuku shikanai',\n", - " '-mou, ato wa nai',\n", - " '‘boku’ o keshi te e ta ‘tsumi nogare no ō’',\n", - " 'arasu hodo chi no oto ni obieru',\n", - " 'kukuri no nai kiba de doko o togame te mo',\n", - " 'tesuri mo tsukame yashi nai',\n", - " 'ibasho o yokei motomeru',\n", - " 'sakebu mo end of sound',\n", - " 'dare mo i nai',\n", - " 'sawai da gensō ni kotae te e ta riteiku no wārudo',\n", - " 'mugen no stage to ikari dake',\n", - " 'gomakase nai rasen no gō mezame ta teikō',\n", - " 'same ta machi no akari ga tomoshi te mo',\n", - " 'kizu no iro. itami wa wakara nai',\n", - " 'rikutsu na gi o kakage basei o furashi te mo',\n", - " 'ashimoto sui darake',\n", - " 'kotoba no seido de kimaru',\n", - " 'kotae nado ira nai',\n", - " 'dare mo i nai',\n", - " 'kawai ta kanjō de gisei ni natta chijō no tears',\n", - " 'kudai ta sora e saken de mo',\n", - " 'tatakae nai muryoku na ego suna ni naru eikō',\n", - " 'soko ni dare mo i nai',\n", - " 'sawai da gensō o sutekie te tta riteiku no wārudo',\n", - " 'mugen no stage to ikari dake',\n", - " 'gomakase nai rasen no gō mezame ta teikō',\n", - " 'ohhh ohhh',\n", - " 'ohhh ohhh',\n", - " 'ohhh ohhh',\n", - " 'lalala... lalala...',\n", - " 'furi tsuzuiteta ame ga uso mitaku hareta sora',\n", - " 'kinou no nayami mo subete wasuresaseru yo baby',\n", - " 'ippun oki ni mieru keitai ki ni natte bakari no hair style',\n", - " 'yatto yakusoku shite deto otozureta sunday',\n", - " 'imasugu aitai yo my baby',\n", - " 'zutto ayafuya ni shite kita jibun wo kaete mita kute',\n", - " 'tereteru baai jyanai wow',\n", - " 'mazu ippo de ii mai pesu de ii',\n", - " 'chikazukeru natsu to be happy',\n", - " 'umareta machi tobi dashite narenu arata na basho de',\n", - " 'mayoi sou na sonna toki hitosuji no hikari kimi to no kono deai',\n", - " \"(i'm in love) stay with you, precious time otoru youna kibun\",\n", - " '(just like this) everyday, everywhere kaze ni mau hana',\n", - " \"(one you will) fallin' love, my lover orita tenshi sa\",\n", - " '(souai wish) i can wait forever kirameku sekai he',\n", - " 'chigau hohaba awasete sotto sode wo tsukanda',\n", - " 'mata hitotsu kimi no koto oboete yuku yo baby',\n", - " 'ishiki shite soura shita eyes hagura kazu youna your smile',\n", - " 'kokoro ni semaru nervous osorezu ni traverse',\n", - " 'zenbu tsutaetai yo my baby',\n", - " 'donna kimi no kako sae kitto uketomete miseru kara',\n", - " 'namida no kazu dake wow',\n", - " 'yowasa shitte yasashisa shitte',\n", - " 'ima ga aru koto to be happy',\n", - " '\"kimi no tameni...\" nante kotoba kiyou ni katare nai keredo',\n", - " 'itsudatte kanjiteru guuzen nanka jyanai bokura no kono ai',\n", - " \"(i'm in love) stay with you, precious time yume no tsuzuki ni\",\n", - " '(just like this) everyday, everywhere zashi dasu migite',\n", - " \"(one you will) fallin' love, my lover kimi ga kotae sa\",\n", - " '(so i wish) i can wait forever hatenaki sekai he',\n", - " \"(i'm in love) stay with you, precious time odoru youna kibun\",\n", - " '(just like this) everyday, everywhere kaze ni mau hana',\n", - " \"(one you wish) fallin' love, my lover orita tenshi sa\",\n", - " '(souai wish) i can wait forever kirameku sekai he',\n", - " 'kanaderu ikutsumo no kanjyou rensashite umareteku shinjyou',\n", - " 'kumorinai asu he no kesshin kaze muki sae ki ni sezuni maishin',\n", - " \"(one you will) fallin' love, my lover kimi ga kotae sa\",\n", - " '(so i wish) i can wait forever hatenaki sekai he',\n", - " \"i'm a bad girl hoon main thodi naughty\",\n", - " 'mere bina pheeki pheeki har party',\n", - " 'sharmana seekha maine na zara bhi',\n", - " 'utton aaj thodi peeli hai aaj bacardi',\n", - " 'ni main aayi teri liye dekh saj dhaj ke',\n", - " 'thakna ni aaj main taan nach nach ke',\n", - " 'mundeya tu rehna zara bach bach ke',\n", - " 'ni mere thumke taan fire lagaave',\n", - " 'hauli hauli, hauli hauli',\n", - " 'hauli hauli gidde vich nach patlo ni',\n", - " 'tera lakk na maroda kha jaave',\n", - " 'hauli hauli gidde vich nach patlo ni',\n", - " 'tera lakk na maroda kha jaave',\n", - " 'hauli hauli gidde vich nach patlo ni',\n", - " 'tera lakk na maroda kha... yeah baby!',\n", - " 'jad lakk hilaave ni tu updown baby',\n", - " 'jaan kaddi jaaye haaye meri baby',\n", - " 'akhiyon se kare yes no maybe',\n", - " 'par mujhe pata dil tu degi',\n", - " 'oh morni ke jaise tu club vich nachdi',\n", - " 'chaah ke bhi tujhse nazar nahi hatdi',\n", - " 'red suit naal paave jad chudiyaan',\n", - " 'mundeyan di jaan ni tu sooli utte tangdi',\n", - " 'ni main aayi teri liye dekh saj dhaj ke',\n", - " 'thakna ni aaj main taan nach nach ke',\n", - " 'mundeya tu rehna zara bach bach ke',\n", - " 'ni mere thumke taan fire lagaave',\n", - " 'hauli hauli, hauli hauli',\n", - " 'hauli hauli gidde vich nach patlo ni',\n", - " 'tera lakk na maroda kha jaave',\n", - " 'hauli hauli gidde vich nach patlo ni',\n", - " 'tera lakk na maroda kha jaave',\n", - " 'hauli hauli gidde vich nach patlo ni',\n", - " 'tera lakk na maroda kha... yeah baby!',\n", - " \"i'm a bad girl hoon main thodi naughty\",\n", - " 'mere bina pheeki pheeki har party',\n", - " 'sharmana seekha maine na zara bhi',\n", - " 'utton aaj thodi peeli hai aaj bacardi',\n", - " 'ni main aayi teri liye dekh saj dhaj ke',\n", - " 'thakna ni aaj main taan nach nach ke',\n", - " 'mundeya tu rehna zara bach bach ke',\n", - " 'ni mere thumke taan fire lagaave',\n", - " 'hauli hauli, hauli hauli',\n", - " 'hauli hauli gidde vich nach patlo ni',\n", - " 'tera lakk na maroda kha jaave',\n", - " 'hauli hauli gidde vich nach patlo ni',\n", - " 'tera lakk na maroda kha jaave',\n", - " 'hauli hauli gidde vich nach patlo ni',\n", - " 'tera lakk na maroda kha... yeah baby!',\n", - " 'brand-new world',\n", - " 'atarashii yume no hajimari',\n", - " 'gooru mezasu tabi wa tsuzuiteyuku itsu datte',\n", - " 'brand-new mind',\n", - " 'jyuunetsu o daite tsugi no doa made',\n", - " 'mada minu sekai e saa, hashire',\n", - " 'mijin mo nai nozomi no hoshi ni mo',\n", - " 'kono te nobashi muri ya ritsukan dari',\n", - " 'yamikumo na bokura wa doko ni itai?',\n", - " 'mure no naka kouritsu shiteku imi',\n", - " 'hitori demo koudoku ja nai wake',\n", - " 'tsunagaru nara',\n", - " 'jikan wa chizu ni naru',\n", - " \"ari no mama let's go and try\",\n", - " 'suzume yo shimei wa one way',\n", - " 'aru ga mama do it! ready?',\n", - " 'saigo wa negai ni todokun da',\n", - " 'brand-new world',\n", - " 'atarashii yume no hajimari',\n", - " 'gooru mezasu tabi wa tsuzuiteyuku itsu datte',\n", - " 'brand-new mind',\n", - " 'jyuunetsu o daite tsugi no doa made',\n", - " 'mada minu sekai e saa, hashire',\n", - " 'kono ue nai yorokubi shinjite',\n", - " 'soko nashi no kurushimi kanjite',\n", - " 'motto tafu ni naritagaru tamashii',\n", - " \"sore yue ni don't stop and cry\",\n", - " 'ima koso into the new day',\n", - " 'sono kakera wanted my key',\n", - " 'saisho ni jibun ni kiku n da',\n", - " 'brand-new dream',\n", - " 'kanaetai yume ga aru nara',\n", - " 'nando datte habatakeru',\n", - " 'hazu sa kimi datte',\n", - " 'brand-new days',\n", - " 'hiraite iru',\n", - " 'tsugi no doa mukou',\n", - " 'kagayaku sekai ni saa, ikou',\n", - " \"ari no mama let's go and try\",\n", - " 'susume yo shimei wa one way',\n", - " 'aru ga mama do it! ready?',\n", - " 'saigo wa negai ni tokunda',\n", - " 'brand-new world',\n", - " 'atarashii yume no hajimari',\n", - " 'go-ru mezasu tabi wa tsuzuite yuku itsudatte',\n", - " 'brand-new mind',\n", - " 'jounetsu wo daite tsugi no doa made',\n", - " 'mada minu sekai e saa hashire',\n", - " 'piasu de kimetari',\n", - " 'hadena mini o sagashitari',\n", - " 'biru no kabe ni booizu',\n", - " 'hora koukishin ga machibuse',\n", - " 'heart and game ni shite shimae',\n", - " 'shitai koto bakari aru nara',\n", - " 'dekiru koto hajimete',\n", - " 'day by day ii ja nai? ok nandemo ii',\n", - " 'muchuu ni nareba aozora mo wasuretari wa shinai',\n", - " 'day by day ii ja nai? all right watashi wa ima',\n", - " 'kono machi no kaze no yuuwaku jouzu ga okiniiri',\n", - " 'baito ga owatta',\n", - " 'nakama-tachi to machiawase',\n", - " 'kariteta bideo no',\n", - " 'kisu no kazu nanka de oshaberi',\n", - " 'kuchibiru itsu ni nattemo shoujou',\n", - " 'mada mitsuketenai mono nara',\n", - " 'komaru hodo aru desho',\n", - " '* day by day ii ja nai? ok nani kara demo',\n", - " 'daki shimerarereba hohoemi o taisetsuni dekiru kara',\n", - " 'day by day ii ja nai? all right watashi wa mou',\n", - " 'kono mune no pazuru hajime no hitotsu ni kizuiteru',\n", - " 'kagayaku suniikaa-tachi no dansu',\n", - " 'asufaruto ni hibite iru',\n", - " 'hontou no tokimeki',\n", - " 'day by day ii ja nai ok nandemo ii',\n", - " 'muchuu ni nareba aozora mo wasuretari wa shinai',\n", - " 'day by day ii ja nai? all right watashi wa ima',\n", - " 'kono machi no kaze ga okiniiri dakara',\n", - " '* repeat',\n", - " 'sakebidashita mune no kodou mezameteyuku',\n", - " 'moraru ni shibarareta honnou ga',\n", - " 'shakai de wa itsumo majime wo enjiterukara',\n", - " \"kuruwasete kon'ya dake\",\n", - " 'sound of music and i will dancing tonight',\n", - " 'nights a brighter ever more than last moonlight',\n", - " 'nanimokamo wasureru tame ni oto no nami ni tobikomu',\n", - " \"kon'ya inochi wo yurashite\",\n", - " 'hanareteyuku risou to genjitsu',\n", - " 'obieteru jibun ga mienakunarisoude',\n", - " 'toketeitai hikari no tsubu ni magirekonde',\n", - " 'bisuimi no suteppu wo',\n", - " 'sound of music and i will dancing tonight',\n", - " 'nights a brighter ever more than last moonlight',\n", - " 'iki wa tsumarisouna hibi de iradachi wo hakisuteru',\n", - " \"kon'ya karada wo yurashite\",\n", - " 'sound of music and i will dancing tonight',\n", - " 'nights a brighter ever more than last moonlight',\n", - " 'nanimo kamo hakisuteru kara ashita wo ukeirerareru',\n", - " \"kon'ya karada wo yurashite\",\n", - " 'long ago, inside a distant memory',\n", - " 'there is a voice that says',\n", - " '\"do you believe a world of happy endings?\"',\n", - " 'even when the road seems long',\n", - " 'every breath you take will lead you closer to',\n", - " 'a special place within',\n", - " 'your neverever...',\n", - " 'mezamete komaku wo tataki tsudzuketeru sairen',\n", - " 'kono sakebigoe wo oshikoroshite',\n", - " \"nanimo shirazu ni shin'on dake wo tsunagitomete\",\n", - " 'genjitsu no torappu ni ochite yuku',\n", - " 'koukai wa shinai yo tsumiageta',\n", - " 'chigireteta miraizu wo nagame',\n", - " 'iki wo tomete sabitsuita kioku no hari',\n", - " \"atama'n naka guru guru mawaru yo\",\n", - " 'as i close my eyes',\n", - " 'nokosu ato mo naku kobosu oto mo naku iku ate mo naku',\n", - " 'i know that this is what i want, this is what i need',\n", - " 'ima mo kurikaeshiteku zanzou',\n", - " 'kizutsuita kako no bokura wa ienai mama de',\n", - " 'sonna karamawari kawaranai',\n", - " 'hibi wa mou tozashiteikunda',\n", - " 'so now kore wa boku ga nozonda my nevereverland',\n", - " 'samayou naifu no you ni tsukisasu kotoba ga',\n", - " 'kono kurushimi wo azawaratte',\n", - " 'nani mo dekizu ni furueru koe wo nomikonde',\n", - " 'kodoku no torappu ni ochite yuku',\n", - " 'mayoikonda kono ashidori tsumazuite sonzaikan wo ushinatte',\n", - " 'namida de somatta higeki no suteeji kuruoshiku',\n", - " \"kokoro'n naka fura fura odoru yo\",\n", - " 'as i take your hand',\n", - " 'kakenuketeiku kokoro no kioku iroaseteiku',\n", - " 'i know that this is what i want, this is what i need',\n", - " 'asu mo kurikaeshiteku zanzou',\n", - " 'tobidashita hizumu sekai ga kienai mama de',\n", - " 'sonna karamawari kawaranai',\n", - " 'hibi wa mou tozashiteikunda',\n", - " 'so now kore wa boku ga nozonda my nevereverland',\n", - " 'mezamete yume no ato no you na komorebi ga',\n", - " 'mabuta no urashimi wataru',\n", - " 'subete ga kanatta hazu da to omotte mo mata',\n", - " 'ochiteiku',\n", - " 'as i close my eyes',\n", - " 'nokosu ato mo naku kobosu oto mo naku iku ate mo naku',\n", - " 'i know that this is what i want, this is what i need',\n", - " 'ima mo kurikaeshiteku zanzou',\n", - " 'kizutsuita kako no bokura wa ienai mama de',\n", - " 'sonna karamawari kawaranai',\n", - " 'hibi wa mou tozashiteikunda',\n", - " 'so now kore wa boku ga nozonda my nevereverland',\n", - " 'kuchh kar guzarne ko khoon chala khoon chala',\n", - " 'aankhon ke sheeshe mein utarne ko khoon chala',\n", - " 'badan se tapak kar, zameen se lipatkar',\n", - " 'galiyon se raston se ubharkar, umadkar',\n", - " 'naye rang bhar ne ko khoon chala khoon chala',\n", - " 'khuli-si chhot lekar, bari-si tich lekar ahista ahista',\n", - " 'sawaalon ki ungli, jawaabon ki mutthi',\n", - " 'sang lekar khoon chala',\n", - " 'kuchh kar guzarne ko khoon chala khoon chala',\n", - " 'aankhon ke sheeshe mein utarne ko khoon chala',\n", - " 'badan se tapak kar, zameen se lipatkar',\n", - " 'galiyon se raston se ubharkar, umadkar',\n", - " 'naye rang bhar ne ko khoon chala khoon chala',\n", - " 'khoon chala, khoon chala, khoon chala',\n", - " 'khoon chala, khoon chala, khoon chala',\n", - " 'vaghti ke raftam taze to mifahmi asheghi chie',\n", - " 'mishnasi eshghe bade man,mifahmi asheghet kie',\n", - " 'aghebat az ghosseye to naghshe to ghesseha misham',\n", - " 'miramo peydam nemishe, hata mesle khoda misham',\n", - " 'vaghti ke man ashegh shodam,ba hameye budo nabud',\n", - " 'to khabo tu bidario,naghshe dota cheshme to bud',\n", - " 'man hameja kenare to,saye be saye kooh be kooh',\n", - " 'ayeneye in ke darbedar ba toi neshaste roo be rooh',\n", - " 'to jonami to eshghami,ghashangtarin bahaneyei',\n", - " 'baraye zende budanam,to behtarin neshunei',\n", - " 'to behtain dalile del,baraye budanam shodi',\n", - " 'nabudi az tanam joda,ke pareye tanam shodi',\n", - " 'parandeye ghashange man,age biaai bahar miad',\n", - " 'baraye in shekasde del, tu sine baz gharar miad',\n", - " 'setareha pain miad,dobare baz sahar mishe',\n", - " 'az asemuno az zamin be man migan ke yad miad',\n", - " 'vaghti ke man ashegh shodam,ba hameye budo nabud',\n", - " 'to khabo tu bidario,naghshe dota cheshme to bud',\n", - " 'man hameja kenare to,saye be saye kooh be kooh',\n", - " 'ayeneye in ke darbedar ba toi neshaste roo be rooh',\n", - " 'mite wa ikenai mono wo mite shimau tabi',\n", - " 'dondon watashi tsuyokunatta',\n", - " 'itte wa ikenai koto wo itte shimau tabi',\n", - " 'dondon watashi busu ni natta',\n", - " 'dakara',\n", - " 'make up! everyday make up! every time',\n", - " 'hoo wo chiiku de someta',\n", - " 'kagami yo kagami watashi wa dare?',\n", - " 'dakedo',\n", - " 'make up! everyday make up! every time',\n", - " 'mayu no aachi wo kimeta',\n", - " 'kagami no naka no onna wa dare?',\n", - " 'tsuite wa ikenai uso wo tsuite shimau tabi',\n", - " 'dandan watashi kowakunatta',\n", - " 'yatte wa ikenai koto wo yatte shimau tabi',\n", - " 'dondon watashi baka ni natta',\n", - " 'dakara',\n", - " 'make up! everyday make up! every time',\n", - " 'ai ni rain wo hiita',\n", - " 'kagami yo kagami watashi wa dare?',\n", - " 'dakedo',\n", - " 'make up! everyday make up! every time',\n", - " 'kotoshi no piasu tsuketa',\n", - " 'kagami no naka no onna wa dare?',\n", - " 'make up! everyday make up! nando demo',\n", - " 'matsuge wo kaaru saseta',\n", - " 'kanashii me no onna wa dare?',\n", - " 'kyou mo',\n", - " 'make up! everyday make up! nando demo',\n", - " 'ai no ruuju wo hiite',\n", - " 'itoshii hito ni kuchizuke wo',\n", - " 'koruku de futashita bin ga uiteiru',\n", - " 'umizoi no michi wo doraibu shiteita',\n", - " 'tsutaetai omoi dake kono mune no naka made',\n", - " 'tsukisasaru nameraka ni shimikonde yuku',\n", - " 'hidarite ni dareka to no yakusoku no yubiwa ga',\n", - " 'terashiteru habamareru kimi to no naka wo',\n", - " 'demo boku wa kimi ga suki sa',\n", - " 'nageireta kaiwa totemo odayaka de',\n", - " 'namida no kaori wa hoho wo tsutau darou',\n", - " 'ayamachi wo okashiteru? kimi wa mayoi hajime',\n", - " 'hiza kakae suwarikomu shiito no ue de',\n", - " 'kono chou wo tsukamaete rinbun de eigaita',\n", - " 'ai no moji shimesareru kimi no senaka ni',\n", - " 'la la la la la la',\n", - " \"don't you know? i love you so\",\n", - " 'i only stay with you now and forever',\n", - " 'kimi no kao ni wa mada mayoi ga mieru kedo',\n", - " 'sonna yoru wa boku no kage no naka de odorou',\n", - " 'ayamachi wo okashiteru? kimi wa mayoi hajime',\n", - " 'hiza kakae suwarikomu shiito no ue de',\n", - " 'kono chou wo tsukamaete rinbun de eigaita',\n", - " 'ai no moji shimesareru kimi no senaka ni',\n", - " 'saa konya boku no kage to namida no oto ni dakare nemuro yo',\n", - " 'chingari koi bhadke, to saawan use bujhaye',\n", - " 'saawan jo agan lagaaye, usse kaun bujhaye?',\n", - " 'patjhad jo baag ujaade, wo baag bahaar khilaye',\n", - " 'jo baag bahar mein ujade, usse kaun khilaye?',\n", - " 'humse mat puchho kaise, mandir tuta sapno ka',\n", - " 'logo ki baat nahi hai, ye kissaa hai apno ka',\n", - " 'koi dushman thes lagaye, to mit jiyaa behlaaye',\n", - " 'man-mit jo ghaav lagaye, use kaun mitaaye?',\n", - " 'na jaane kya ho jaataa, jaane ham kya kar jaate',\n", - " 'peete hai to zinda hai, na peete to mar jaate',\n", - " 'duniya jo pyaasa rakhe, to madira pyaas bujhaye',\n", - " 'madira jo pyaas lagaye, use kaun bujhaye?',\n", - " 'use kaun bujhaye?',\n", - " 'maana tufaan ke aage nahi chalta zor kisi ka',\n", - " 'maujo ka dosh nahi hai, ye dosh hai aur kisi ka',\n", - " 'majdhaar mein naiyaa dole, to maajhi paar lagaye',\n", - " 'maajhi jo naav duboye, use kaun bachaye?',\n", - " 'o use kaun bachaye?',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'jwaala si jalti hai aankhon mein',\n", - " 'jiske bhi dil mein tera naam hai',\n", - " 'parwah hi kya uska aarambh kaisa hai',\n", - " 'aur kaisa parinam hai',\n", - " 'dharti ambar sitaare, uski nazarein utaarein',\n", - " 'dar bhi usse daraa re',\n", - " 'jiski rakhwaliyan re karta saya tera',\n", - " 'hey deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'haan, teri bhakti ka vardan hai',\n", - " 'jo kamaaye wo dhanwan hai',\n", - " 'bin kinaare ki kashti hai wo',\n", - " 'deva tujhse jo anjaan hai',\n", - " 'yoon to mooshak sawari teri',\n", - " 'sab pe hai peharedaari teri',\n", - " 'paap ki aandhiyan laakh ho',\n", - " 'kabhi jyoti na haari teri',\n", - " 'apni takdeer ka wo khud sikandar hua re',\n", - " 'bhool ke ye jahaan re jis kisi ne yahaan re',\n", - " 'saath paaya tera',\n", - " 'hey deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'ho teri dhooli ka teeka kiye',\n", - " 'deva jo bhakt tera jiye',\n", - " 'use amrit ka hai moh kya',\n", - " 'hanske vish ka wo pyaala piye',\n", - " 'teri mahima ke chhaya tale',\n", - " 'kaal ke rath ka pahiya chale',\n", - " 'ek chingari pratishodh se',\n", - " 'khadi ravan ki lanka jale',\n", - " 'shatruon ki kataarein ik akele se haarein',\n", - " 'kan bhi parbat hua re, shlok ban ke jahan re',\n", - " 'naam aaya tera',\n", - " 'hey deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'deva shree ganesha, deva shree ganesha',\n", - " 'ganpati bappa morya',\n", - " 'twameva mata cha pita twameva',\n", - " 'twameva bandhu sakha twameva',\n", - " 'twameva vidya dravinam twameva',\n", - " 'twameva sarvam mum dev deva',\n", - " 'achutam keshavam rama narayanam',\n", - " 'krishna damodaram vasudevam harim',\n", - " 'sridharam madhavum gopika vallabham',\n", - " 'janki naayakam ramachandram bhaje',\n", - " 'hare ram, hare ram, ram-ram hare-hare',\n", - " 'hare krishna, hare krishna, krishna-krishna hare-hare',\n", - " 'hare ram, hare ram, ram-ram hare-hare',\n", - " 'hare krishna, hare krishna, krishna-krishna hare-hare',\n", - " 'banno ki mehndi kya kehna',\n", - " 'banno ka joda kya kehna',\n", - " 'banno lage hai phoolon ka gehna',\n", - " 'banno ki aankhen kajrari',\n", - " 'banno lage sabse pyari',\n", - " 'banno pe jaon main vaari vaari',\n", - " 'ho oh ho ... ho oh ho',\n", - " 'banno ki saheli',\n", - " 'resham ki dori',\n", - " 'chup chup ke sharmaye',\n", - " 'dekhe chori chori',\n", - " 'banno ki saheli',\n", - " 'resham ki dori',\n", - " 'chup chup ke sharmaye',\n", - " 'dekhe chori chori',\n", - " 'yeh maane ya na maane',\n", - " 'main toh ispe mar gaya',\n", - " 'yeh ladki haai allah',\n", - " 'haai haai re allah',\n", - " 'yeh ladki haai allah',\n", - " 'haai haai re allah',\n", - " 'babul ki galiyan',\n", - " 'na chhad ke jaana',\n", - " 'pagal deewana',\n", - " 'isko samjhana',\n", - " 'babul ki galiyan',\n", - " 'na chhad ke jaana',\n", - " 'pagal deewana',\n", - " 'isko samjhana',\n", - " 'dekho ji dekho',\n", - " 'yeh toh mere peeche padh gaya',\n", - " 'yeh ladka haai allah',\n", - " 'haai haai re allah',\n", - " 'yeh ladka haai allah',\n", - " 'haai haai re allah',\n", - " 'lab kahe na kahе',\n", - " 'bolti hai nazar',\n", - " 'pyar nahin chupta',\n", - " 'yaar chupane se',\n", - " 'pyar nahin chupta',\n", - " 'yaar chupane sе',\n", - " 'roop ghoonghat mein ho',\n", - " 'toh suhana lage',\n", - " 'baat nahin banti',\n", - " 'yaar bataane se',\n", - " 'yeh dil ki baatein dil hi jaane',\n", - " 'ya jaane khuda',\n", - " 'yeh ladki haai allah',\n", - " 'haai haai re allah',\n", - " 'yeh ladka haai allah',\n", - " 'haai haai re allah',\n", - " 'sajna ... aa aa aa',\n", - " 'maangne se kabhi',\n", - " 'haath milta nahin',\n", - " 'jodiyan banti hai',\n", - " 'pehle se sabki',\n", - " 'jodiyan banti hai',\n", - " 'pehle se sabki',\n", - " 'oh leke baaraat ghar',\n", - " 'tere aaonga main',\n", - " 'meri nahin yeh toh',\n", - " 'marzi hai rab ki',\n", - " 'arre ja re ja',\n", - " 'yoon jhooti moothi baatein na bana',\n", - " 'yeh ladka haai allah',\n", - " 'haai haai re allah',\n", - " 'yeh ladka haai allah',\n", - " 'haai haai re allah',\n", - " 'banno ki saheli',\n", - " 'resham ki dori',\n", - " 'chup chup ke sharmaye',\n", - " 'dekhe chori chori',\n", - " 'babul ki galiyan',\n", - " 'na chhad ke jaana',\n", - " 'pagal deewana',\n", - " 'isko samjhana',\n", - " 'yeh maane ya na maane',\n", - " 'main toh ispe mar gaya',\n", - " 'yeh ladki',\n", - " 'yeh ladki haai allah',\n", - " 'haai haai re allah',\n", - " 'yeh ladka haai allah',\n", - " 'haai haai re allah',\n", - " 'yeh ladki haai allah',\n", - " 'haai haai re allah',\n", - " 'yeh ladka haai allah',\n", - " 'haai haai re allah',\n", - " 'kasa no shita',\n", - " 'kare wa nande ai wo chikatta no kogoe de',\n", - " 'amagumo nogarete nao harenai kao',\n", - " 'kono machi de kudaketa kokoro korogashite wa',\n", - " 'just thinking out loud',\n", - " 'furimaku egao urahara ni',\n", - " 'broken hearts, city lights',\n", - " 'and me just thinking out loud',\n", - " 'kouzen to koe takaraka ni tonoeta yume wa kiete',\n", - " 'asa ni natte',\n", - " \"mada nigitteta shin'nen dake baggu ni tsumete\",\n", - " 'arukidasou like everybody does',\n", - " 'manseki no eigakan de tsugi no serifu kuchi wo tsuku',\n", - " 'tonari no fuun na kappuru fuman de taijou',\n", - " 'kono machi de shiawase. fushiawase ni magire',\n", - " 'just thinking out loud',\n", - " 'kono yo wa nita mono darake ne',\n", - " 'broken hearts, city lights',\n", - " 'and me just thinking out loud',\n", - " 'heizento soto ja furumatte',\n", - " 'uchi de tsubureta tte ii no',\n", - " 'asa ni natte mada kawakanai',\n", - " \"namida nante nai n' dakara\",\n", - " 'sou sou... like everybody does',\n", - " '\"eikou\" seikou\" da nante hitonigiri',\n", - " '\"zanzou\" \"aizou\" ni michita machi de',\n", - " 'asu no hikari wa',\n", - " 'is it easy, easy to find?',\n", - " 'mirai wa yasashii no kana',\n", - " 'kudaketa kokoro korogashite wa',\n", - " 'just thinking out loud',\n", - " 'shiawase. fushiawase ni magire',\n", - " 'just thinking out loud',\n", - " 'kagayaku tokai no katasumi de',\n", - " 'just thinking out loud',\n", - " 'kono yo wa hanpamono darake ne',\n", - " 'broken hearts, city lights',\n", - " 'and me just thinking out loud',\n", - " 'out loud...',\n", - " '(romaji by: cori)',\n", - " 'fuyu no sora ni yuki wa furidashi kaze wa itaku iki wa shiroku',\n", - " 'machi wo terasu no hi ni naze daka setsunakunatta',\n", - " 'koibito-tachi wa yorisoi aruki mado no naka kara waraigoe',\n", - " 'no himitsu shiranai mama mujaki ni hashagu kodomo-tachi',\n", - " 'sonna kinenbi to ka iranai to omotteta',\n", - " 'dakedo sabishikunaru minna ga shiawase sou ni warau kara',\n", - " 'ai aru kagiri korekara sei naru yoru ni deaeru you ni inoru kara',\n", - " 'shinjita koro ni modotte aou yo juu-nen saki no mo',\n", - " 'zutto mae kara no yoru ni wa minna to koushite iraretara',\n", - " 'boku no kodoku mo minna no ai mo hayaku dakishimeta no ni',\n", - " 'sonna kinenbi to ka iranai to omotteta',\n", - " 'dakedo sabishikunaru minna ga shiawase sou ni warau kara',\n", - " 'ai aru kagiri korekara sei naru yoru ni deaeru you ni inoru kara',\n", - " 'shinjita koro ni modotte aou yo juu-nen saki no mo',\n", - " 'ai ga nebae jibun yori taisetsuna inochi sasugari',\n", - " 'hibi ni oware tsukarete mo kyou ni modotte kureba ii',\n", - " \"sunao ni merry x'mas for you sei naru yoru ni boku no omoi wo ageru kara\",\n", - " 'shinjita koro ni modotte aou yo juu-nen saki mo egao no mama de',\n", - " 'ttaega dwaesseo baro oneul bam',\n", - " 'gidaryeosseo ja junbineun kkeutnasseo',\n", - " 'chulleongineun jeo eumaksori',\n", - " 'nae gaseum dugeundugeun kung, kung, kung',\n", - " 'mwonga doelgeot gateun oneulbam',\n", - " 'i jjaritaneun geu neukkimi joha',\n", - " 'deo nopi haneureul jjilleobwa tonight',\n", - " 'bultaneun baro oneul bam',\n", - " 'saturday night dagachi chumeul chwoyo',\n", - " 'ijjokjeojjok nunchi bojimayo oh',\n", - " 'saturday night dagachi heundeureoyo',\n", - " 'banjjakbanjjak bingbing dorabwayo oh',\n", - " 'hey mister dj',\n", - " 'don’t stop the music',\n", - " 'hey mister dj',\n", - " 'don’t stop oh saturday night',\n", - " 'hey mister dj',\n", - " 'don’t stop the music',\n", - " 'hey mister dj',\n", - " 'don’t stop oh saturday night',\n", - " 'mwonga doelgeot gateun oneulbam',\n", - " 'ijjaritaneun geu neukkimi joha',\n", - " 'chulleongineun jeo eumaksori',\n", - " 'nae gaseum dugeundugeun kung, kung, kung',\n", - " 'yo oneulbam norabollae nawa hamkke norabollae',\n", - " 'meotjige norajulge nareul hanbeon jikyeobollae (uh! )',\n", - " 'ni nuni hwidunggeure ibi tteok beoreojyeo eottae',\n", - " 'ja dallyeoboja ok bultaneun baro oneul bam',\n", - " 'saturday night dagachi chumeul chwoyo',\n", - " 'ijjokjeojjok nunchi bojimayo oh',\n", - " 'saturday night dagachi heundeureoyo',\n", - " 'banjjakbanjjak bingbing dorabwayo oh',\n", - " 'saturday night',\n", - " 'saturday night dagachi chumeul chwoyo',\n", - " 'ijjokjeojjok nunchi bojimayo oh',\n", - " 'saturday night dagachi heundeureoyo (heundeureoyo)',\n", - " 'banjjakbanjjak bingbing dorabwayo oh',\n", - " 'hey mister dj',\n", - " 'don’t stop the music',\n", - " 'hey mister dj',\n", - " 'don’t stop oh saturday night',\n", - " 'hey mister dj',\n", - " 'don’t stop the music',\n", - " 'hey mister dj',\n", - " 'don’t stop oh saturday night',\n", - " 'hah',\n", - " 'hahye hahye aye hahye',\n", - " 'bis',\n", - " 'om maam na pum imjya',\n", - " 'ke luru do ketaa-lha',\n", - " 'om maam pum imjya',\n", - " 'ke luru do ketaa-lha',\n", - " 'hah',\n", - " 'hahye hahye aye hahye',\n", - " 'bis',\n", - " 'om maam pum imjya',\n", - " 'ke luru do ketaa-lha',\n", - " 'om maam na pum imjya',\n", - " 'ke luru do ketaa-lha',\n", - " 'hah',\n", - " 'hahye hahye hahye',\n", - " 'hah',\n", - " 'hahye hahye hahye',\n", - " 'yah yebi tom nuguee',\n", - " 'um kuru tili bare made',\n", - " 'kem luru do ketaa-lha',\n", - " 'mado no naka no boku wa',\n", - " 'gurasu no mizu ni',\n", - " 'sashita no hana you',\n", - " 'awaihisashi ni yurete',\n", - " 'madoromi no soko',\n", - " 'kizuku natsu no kehei',\n", - " 'mujoona tokei no hari o',\n", - " 'itaimi no bun dake',\n", - " 'modosetanara',\n", - " 'aa, okashina kimi to no hibi o',\n", - " 'afureru kurai',\n", - " 'nagameru noni',\n", - " 'this scenery is evergreen',\n", - " 'midori no ha ga irozuki yuku',\n", - " 'ko morehi no shita de',\n", - " 'kimi ga naite iru',\n", - " 'yasashii kisetsu o yobu',\n", - " 'karenna kimi wa',\n", - " 'mujakini natsuite',\n", - " 'sotto karada ni nagareru',\n", - " 'kusuri mitai ni',\n", - " 'tokete itane',\n", - " 'this scenery is evergreen',\n", - " 'hakanai hodo tokiresoona',\n", - " 'sono te o tsunaide',\n", - " 'hanasanai youni',\n", - " 'this scenery is evergreen',\n", - " 'kawaisoona utsumuite iru',\n", - " 'kanashii hitomi o',\n", - " 'nugutte agetai noni',\n", - " 'chikazuku owari ni',\n", - " 'kotoba hitotsu iidasenai',\n", - " 'this scenery is evergreen',\n", - " 'itoshii hito yo',\n", - " 'just a feeling',\n", - " '* just a feeling, neu ggin keu dae ro mal hae',\n", - " 'think about it, joo juh ha ji ma',\n", - " 'just be waiting, ee jen joon bi ga dwae ssuh',\n", - " 'nuh reul nae geh jwo nae ga kat geh ssuh',\n", - " 'chuh eum boo tuh da nal bo yuh jool soon uhb ji',\n", - " 'shin bi seu ruhn boon wi gi ro oh yeah~',\n", - " 'ho gi shim eul ja geuk ha neun kuht do gwaen chan ha',\n", - " 'koong geum hae mi chil guht man keum',\n", - " 'kyuhl gook nuh neun nae geh oh geh dwel guh ya',\n", - " 'won han da myun nae gil guhl uh do jo ha',\n", - " 'han guhl eum sshik jo geum duh na',\n", - " 'gae ro da ga ga nuhl cha ji ha go mal guh ya oh yeah~',\n", - " '* repeat',\n", - " 'ddan sa ram gwa da jung han nae mo seub eul',\n", - " 'sal myuh shi bo yuh jool guh ya oh yeah~',\n", - " 'keu eh geh neun jo geum mi an han il',\n", - " 'ee ji man nuhl kat gi wi hae suh ni gga',\n", - " 'uh jjuhl jool eul mol ra ha neun ni pyo',\n", - " 'jung uh jjuhm keu ri soom gi ji reul mot ha ni',\n", - " 'neu ggil soo ga ee ssuh ssuh nae kyuh',\n", - " 'teh keu sa ram chyuh da bo neun ni shi suhn',\n", - " '* repeat',\n", - " '** just a feeling',\n", - " \"that's what i can show you\",\n", - " 'think about it, ki da ri go ee ssuh',\n", - " 'just a feeling',\n", - " \"that's what i can show you\",\n", - " 'think about it, ki da ri go ee ssuh',\n", - " 'ee ruhn na do mam ee pyun han geh ah',\n", - " 'nya hok shi ra do ni ga dol ah suhl gga bwa',\n", - " 'keu man nae geh mal hae jwo na reul',\n", - " 'sa rang han da go ki da ri go eet jan ha',\n", - " '* repeat x2',\n", - " '** repeat x2',\n", - " 'geudaewa naega sumswineun got',\n", - " 'geudaewa naneun hamkke itjyo',\n", - " 'eonjega naege on nal geu sungan buteo',\n", - " 'geudaewa naeui shigan sogen',\n", - " 'geudaeneun naeui jeon burangeol',\n", - " 'hokshi ijeonnayo naege oneun il',\n", - " 'du nuneul gamgo nareul neukkyeo bwayo',\n", - " 'du pareul beollyeo nareul ana bwayo',\n", - " 'weonhago weonhaetteon geudae janhayo',\n", - " 'du soneul jaba nareul nohchiji anhke',\n", - " 'naege gidae modeungeol matgyeo bwayo',\n", - " 'barago baraetteon sarang ingayo geudaen',\n", - " 'geudaewa naega sumswineun got',\n", - " 'geudaewa naneun hamkke itjyo',\n", - " 'eonjenga naege on nal geu sungan buteo',\n", - " 'geudaewa naneun unmyeong cheoreom',\n", - " 'geudaeneun naege dagawatjyo',\n", - " 'manhi himdeureotjyo naege oneun il',\n", - " 'du nuneul gamgo nareul neukkyeo bwayo',\n", - " 'du pareul beollyeo nareul ana bwayo',\n", - " 'weonhago weonhaetteon geudae janhayo',\n", - " 'du soneul jaba nareul nohchiji anhke',\n", - " 'naege gidae modeungeol matgyeo bwayo',\n", - " 'barago baraetteon sarang ingayo geudaen',\n", - " 'geudae',\n", - " 'geudaewa na',\n", - " 'o geudaeneun na',\n", - " 'geudaeneun nal oho~',\n", - " 'du nuneul gamgo nareul neukkyeo bwayo',\n", - " 'du pareul beollyeo nareul ana bwayo',\n", - " 'weonhago weonhaetteon geudae janhayo',\n", - " 'du soneul jaba nareul nohchiji anhke',\n", - " 'naege gidae modeungeol matgyeo bwayo',\n", - " 'barago baraetteon sarang ingayo',\n", - " 'my love~ oh yeah',\n", - " 'e ni mo dekinai asa ga niau big city',\n", - " 'ikare manako no ore tachi ni wa oteage sa',\n", - " 'kare wo tsukan de sakebu yatsu no waraigoe',\n", - " 'kawaranu onaji you na nyuusu wo tsukuridasu',\n", - " 'demo sukoshi zutsu sukoshi dake ugoiteru nanika ga',\n", - " 'dokoka tsumetai ore tachi no dream city',\n", - " 'yatsu no tsukan da kenryoku ni shibararete',\n", - " 'nigirishimeta omae no kobushi sasayaku',\n", - " 'kakushita kamen wo tsunagu kagi tsukame to',\n", - " 'sou sukoshi zutsu sukoshi dake ugoiteru nanika ga',\n", - " 'come on everybody kimete yaru ze',\n", - " 'oh yeah (come on)',\n", - " \"come on everybody let's get together\",\n", - " 'come on everybody kimete yaru ze',\n", - " 'oh yeah (come on)',\n", - " \"come on everybody let's get together\",\n", - " 'sukoshi zutsu sukoshi dake ugoiteru nanika ga',\n", - " 'sukoshi zutsu sukoshi dake ugoi teru nanika ga',\n", - " 'come on everybody kimete yaru ze',\n", - " 'oh yeah (come on)',\n", - " \"come on everybody let's get together\",\n", - " 'come on everybody kimete yaru ze',\n", - " 'oh yeah (come on)',\n", - " \"come on everybody let's get together\",\n", - " 'na wonrae cheonnune banhan jeo-gi eop-seo ikeotjeo-geot jae-neun ge chwiimiin namja',\n", - " 'keunde nae-ga waeh ireoneunji moreugesseo tangshinye nundongjaen maryeo-gi isseo',\n", - " 'yodong-chineun gonggi, su-lleon-gineun nae mam ijekkeot meomchwo it-deon nareul umjikyeo',\n", - " 'haengbokhan gotonge jeonyurhaneun nae mam keudaeyeo badajwoyo',\n", - " 'nae mame kyeol-shimi seot-da a a a a',\n", - " 'shimjangi shigineun daero o o o o',\n", - " 'nan imi nae-ga anijyo o u u u',\n", - " 'tangshini wonhaneun jeonbureul da majchul-ke haejul-ke',\n", - " 'wahnjeonhan yeoina',\n", - " 'tangshinkwah na sa-i geotjabeul su eobshi saerob-ge ssahin (keu kamjeongeul)',\n", - " 'na eochi hamnikka. momi ikkeuneun daero kamyeon dwehmnikka',\n", - " 'keoteureul su eopt-ke jakkuman ikkeullyeo eotteohke seolmyeong hal su eom-neun seu-teureseu',\n", - " 'keudaeran badae nan momeul deonjyeosseo sumshwiil su eop-seodo nan ike choheun geol',\n", - " 'yodong-chineun gonggi, su-lleon-gineun nae mam ijekkeot boji mothan sesangeul bwah-sseo',\n", - " 'haengbokhan gotonge jeonyurhaneun nae mam nan byeon-gi gipeojyeosseo',\n", - " 'nae mame kyeol-shimi seot-da a a a a',\n", - " 'shimjangi shigineun daero o o o o',\n", - " 'nan imi nae-ga anijyo o u u u',\n", - " 'tangshini wonhaneun jeonbureul da majchul-ke haejul-ke',\n", - " 'wahnjeonhan yeoina',\n", - " 'tangshinye geu perfect stylee yeong-honeul ppaetgin -deuthan hwahng-horhan gibune',\n", - " 'ije-neun gotongdo haengbo-khae nan imi nae geo-shi anin -deut hagie',\n", - " 'heukbaegi dwehn nae sekye-neun geudae churhyeone ireohke seon-myeong-han sae-geul dwehchajke dwaeht-jyo',\n", - " 'nareul kajyeo-gayo nareul kadwo jwoyo tangshini mandeun sesange',\n", - " 'o o eotteo-khae',\n", - " 'na sunhan yangi dwaeh-sseoyo o eotteo-khae',\n", - " 'nan geudae malman deu-reoyo o eotteo-khae',\n", - " 'jobajin naye shiseon gwaehn-chanha tangshin-man bomyeon dwaeh',\n", - " 'nae mame kyeol-shimi seot-da a a a a',\n", - " 'shimjangi shigineun daero o o o o',\n", - " 'nan imi nae-ga anijyo o u u u',\n", - " 'tangshini wonhaneun jeonbureul da majchul-ke haejul-ke',\n", - " 'wahnjeonhan yeoina',\n", - " 'jameseo kkaeboni shi-ganeun meomchwotko',\n", - " 'sesangen uri dulman namkyeojyeo itko',\n", - " 'igoshi jikuga anirado kwaehn-chanha',\n", - " 'wahnjeonhan yeoina',\n", - " 'aisha na na to matusa',\n", - " 'nuncali ye ye',\n", - " 'tu tu ca ca fisi ahn zuku',\n", - " 'ndoto peponi',\n", - " 'ah mizali katisi',\n", - " 'meno',\n", - " 'mi kalia yeh',\n", - " 'oo logi',\n", - " 'ndoto oh do',\n", - " 'peponi',\n", - " 'pizavi memo',\n", - " 'orundu mu machozi',\n", - " 'netu en caburet',\n", - " 'dudu ba',\n", - " 'elele',\n", - " 'ye',\n", - " 'oluwa',\n", - " 'kurunba',\n", - " 'amugeh',\n", - " 'elele',\n", - " 'every time she close her eyes',\n", - " 'ndoto pepo-pepo-peponi',\n", - " 'pepo-pepo-peponi',\n", - " 'pepo-pepo-peponi',\n", - " 'oh oh oh oh oh oh oh oh',\n", - " 'pepo-pepo-peponi',\n", - " 'pepo-pepo-peponi',\n", - " 'pepo-pepo-peponi',\n", - " 'oh oh oh oh oh oh oh oh',\n", - " 'pepo-pepo-peponi',\n", - " 'pepo-pepo-peponi',\n", - " 'pepo-pepo-peponi',\n", - " 'oh oh oh oh oh oh oh oh',\n", - " 'pepo-pepo-peponi',\n", - " 'pepo-pepo-peponi',\n", - " 'pepo-pepo-peponi',\n", - " 'oh oh oh oh oh oh oh oh',\n", - " 'kayinga voyo tethe',\n", - " 'teyinga yoh wodeke (bis)',\n", - " 'wumu bada pafisinga',\n", - " 'cungada bamise (bis)',\n", - " 'hungari (bis)',\n", - " 'pangari (bis)',\n", - " 'heyingare (bis)',\n", - " 'hangar (bis)',\n", - " 'ham baba bala (bis)',\n", - " 'ham ba bala (bis)',\n", - " 'hame shinga he (bis)',\n", - " 'im marvin gaye!',\n", - " 'hem ba…',\n", - " 'la la la lalalalala la la la lalalalala',\n", - " 'oooooooaawawahwagaohaaskagajgh...',\n", - " 'witch',\n", - " '?stcaf eseht teg uoy did \"eman eht\" ni woh tub',\n", - " \"stniop htob no thgir er'uoy wonk i ,esruoc fo ,yhw\",\n", - " '.seiriuqne edam uoy ,rebmemer i fi',\n", - " 'laid eht ta gnizag ,erehpsomta ym ni',\n", - " '.uoy ta gnilims morf peek yldrah dluoc i',\n", - " 'atad on era ereht ,yas uoy draeh evah i',\n", - " \"gninrom eht lla uoy etisoppo tas d'i ecnis deyonna saw i ,riahc ym morf gnarps i\",\n", - " '.olleh',\n", - " 'tabi kasanaru guzen tada yomigaeru sunzen',\n", - " 'hohoemu kimi wo tsukamu',\n", - " 'takanaru biito ni afure dete yuku noizu',\n", - " 'yuuhi ga ochiru mae ni',\n", - " 'sagashiteta tenshi ima wa koko ni',\n", - " 'yume demo itami demo kure!',\n", - " 'come into my life. make it so, miracle miracle',\n", - " 'mote amasu yurui karada sa',\n", - " 'todoke yo atsui omoi',\n", - " 'come into my life. make it so, miracle miracle',\n", - " 'hakanaku moroi yakusoku',\n", - " 'ai no kotoba mo manazashi mo kowasu na kiseki',\n", - " 'tsuka no ma kyujitsu tsukameru hazu no shuujitsu',\n", - " 'te maneki no mukou gawa',\n", - " 'ashita fuku to itta asufaruto kara kaze ga',\n", - " 'migi no hoho kogashiteku',\n", - " 'sugiteku kako nara ima wa kikanai',\n", - " 'senbou no sasayaki sare!',\n", - " 'come into my life. make it so, miracle miracle',\n", - " 'kaketeku yuuyami no machi he',\n", - " 'ukanai egao sutete',\n", - " 'come into my life. make it so, miracle miracle',\n", - " 'kimi no me no mukou gawa ni wa',\n", - " 'nani ga utsutteru oshiete kure todoke yo kiseki',\n", - " 'sagashiteta tenshi ima wa koko ni',\n", - " 'yume demo itami demo kure!',\n", - " 'come into my life. make it so, miracle miracle',\n", - " 'mote amasu yurui karada sa',\n", - " 'todoke yo atsui omoi',\n", - " 'come into my life. make it so, miracle miracle',\n", - " 'hakanaku moroi yakusoku',\n", - " 'ai no kotoba mo manazashi mo kowasu na kiseki',\n", - " 'kasanariatte yuku watashitachi no story',\n", - " 'kazoekirenai deai to wakare no naka',\n", - " 'ima ao no hoshi de meguriaeta no wa',\n", - " 'guuzen nanka ja nai motomeatte ita',\n", - " '* hello passing days',\n", - " 'ima toki wo koete yomigaeru',\n", - " 'remember the reason',\n", - " 'ai sarete ai suru tame ni...',\n", - " 'unmei no kazamuki wa itsu datte kimagure',\n", - " 'marude itazura ni watashi wo karakatte wa',\n", - " 'where are you?',\n", - " \"i've been here\",\n", - " '** some how? some where?',\n", - " 'watashi no koto matteru dareka ga...',\n", - " 'believe yourself',\n", - " 'sono toki wa oto mo tatezu ni yatte kuru',\n", - " '* repeat',\n", - " '** repeat',\n", - " 'pre',\n", - " 'd g a',\n", - " 'niko mchunga ngombe (i take care of cows)',\n", - " 'd g a',\n", - " 'niko mchunga ngombe (i take care of cows)',\n", - " 'g',\n", - " 'sasa sasa (now now)',\n", - " 'a d',\n", - " \"twende mbele (let's go ahead)\",\n", - " 'chakula haina taabu (food is no problem)',\n", - " 'tunana mbuzi tunakula (we kill goats and we eat)',\n", - " 'niko mchunga ngombe (i take care of cows)',\n", - " 'sasa sasa (now now)',\n", - " \"twende mbele (let's go ahead)\",\n", - " 'nguo haina taabu (clothes are no problem)',\n", - " 'tunauza ngombe sokomi (we sell cows at the market)',\n", - " 'taabu tunavumilia (problems...we perservere)',\n", - " 'niko mchunga ngombe (i take care of cows)',\n", - " 'sasa sasa (now now)',\n", - " \"twende mbele (let's go ahead)\",\n", - " 'maisha hapita (life will pass)',\n", - " 'sisi tutazeeka (we will get old)',\n", - " 'natoto wangu watalinda ngombe (my children will take care of the cows)',\n", - " 'niko mchunga ngombe (i take care of cows)',\n", - " 'sasa sasa (now now)',\n", - " \"twende mbele (let's go ahead)\",\n", - " 'havunjika kivulini (i will rest in the shadow)',\n", - " 'na pombe karibu yangu (and beer next to me)',\n", - " 'niko mchunga ngombe (i take care of cows)',\n", - " 'sasa sasa (now now)',\n", - " \"twende mbele (let's go ahead)\",\n", - " '/pre',\n", - " 'labon pe jo bhi ho',\n", - " 'keh bhi do thehera hoon main',\n", - " 'ye dil ki baaton ko roko na thehera hoon main',\n", - " 'nasheeli raat hai taare bhi saath hai',\n", - " 'ghungunate hum chale shahero ki galiyon se',\n", - " 'jaane kyun yeh pal pigal gaya fisal gaya',\n", - " 'jaane kyun yeh pal pigal gaya pigal gaya',\n", - " 'ye koi na kahe sun bhi koi naye',\n", - " 'iraade woh hi hai badal rahi manzile',\n", - " 'ye kaisa khel hai kyun idhar hum fas gaye',\n", - " 'ye waado ka hai kyaa aaj hai kal nahi',\n", - " 'jaane kyun ye pal pigal gaya fisal gaya',\n", - " 'jaane kyun ye pal pigal gaya pigal gaya',\n", - " 'tu bhi hai, main bhi hoon, pyaar bhi hai yahaan',\n", - " 'nazar mein tu aa gayi, nazar mein main aa gaya',\n", - " 'hai raaste judaa to kya hua razi hoon main',\n", - " 'jazbaaton ka hai kya aaj hai kal nahin',\n", - " 'labon pe jo bhi ho',\n", - " 'keh bhi do thehera hoon main',\n", - " 'ye dil ki baaton ko roko na thehera hoon main',\n", - " 'nasheeli raat hai taare bhi saath hai',\n", - " 'ghungunate hum chale shahеro ki galiyon se',\n", - " 'jaane kyun yeh pal pigal gaya fisal gaya',\n", - " 'jaanе kyun yeh pal pigal gaya pigal gaya',\n", - " 'mebuki no haru wo machi mada samenu yume made',\n", - " 'osanasa no nokotta koe de katariau',\n", - " \"it's amulet fushigi na hodo ni tokimekitai\",\n", - " 'shoudo shiteru',\n", - " 'sasai nakikkake de iro wa kawatta',\n", - " ...]},\n", - " 'data': ['come on now!',\n", - " 'itsumo sou yatte ki tsukeba shikamettsura',\n", - " 'tanoshiku nasa souna kao de tonari iru kara egao mitakunarunda',\n", - " 'anyway sonna iraira shitenaide tanoshindekouze feel like dance!',\n", - " 'hora waratta kao no kata ga nanbai mo ii kara',\n", - " 'watashi no koto soredemo shitteru tsumori na no? (make me happy...)',\n", - " '\"you make me feel so nice\"',\n", - " \"nante katte ni iwanaide (let's coming up feel like dance!)\",\n", - " 'i know you doko ni mo ikanai to',\n", - " '(are you ready? come on! feel so high!',\n", - " 'anyway i wanna feel so good!)',\n", - " 'yakusoku shita janai',\n", - " '(nayande tatte itsudatte kuru kara, brand new day!)',\n", - " \"never wanna say to'love me'\",\n", - " 'kono mama toki wo tomete loving you...',\n", - " \"(you're strong, coming! feel like dance!)\",\n", - " 'i know you atatakai hizashi mo',\n", - " '(i never wanna leave you away',\n", - " \"c'ause you make me feel so nice!)\",\n", - " 'samete kanjichauwa',\n", - " 'dakishimete never wanna say \"good bye\"',\n", - " 'goku atari mae no nichijyou subete ga',\n", - " 'sugoku tokubetsu na mono ni omoetekuru youna',\n", - " 'kokoro de irareru hodo ima totemo',\n", - " 'saikou nakibun nanda',\n", - " 'every day konna ni kirakira shiterunda',\n", - " 'kimi to iretara feel like dance!',\n", - " 'hora, soba ni iru dake de you make me feel so nice',\n", - " 'anata no sono gendou ni tokidoki haretsusuru (make me happy!)',\n", - " '\"you make me feel so nice\" nante heiki de iwanaide!',\n", - " \"(let's coming up feel like dance!)\",\n", - " 'i know you watashi no naka ni aru',\n", - " '(are you ready? come on! feel so high!',\n", - " 'anyway i wanna feel so good!)',\n", - " 'hitosuji no chiheisen',\n", - " '(ma sugu ni natte muki atte ikou yo in you side.)',\n", - " 'anata wa karugaru tobikoete kuchau no yo loving you...',\n", - " \"(you're not alone, coming! feel like dance!)\",\n", - " 'i know you hajimete hanashiteru',\n", - " '(i never wanna leave you away',\n", - " \"'cause you make me feel so nice!)\",\n", - " 'umaku wa ienai kedo',\n", - " '(sunao ni natte soba ni oide stay with me.)',\n", - " 'anata ni wa never wanna say \"good bye\"',\n", - " '(you can get the happy.)',\n", - " 'i know you doko ni mo ikanai to',\n", - " '(are you ready? come on! feel so high!',\n", - " 'anyway i wanna feel so good!)',\n", - " 'yakusoku shita janai',\n", - " '(nayande tatte itsudatte kuru kara, brand new day!)',\n", - " \"never wanna say to'love me'\",\n", - " 'kono mama toki wo tomete loving you...',\n", - " \"(you're strong, coming! feel like dance!)\",\n", - " 'i know you atatakai hizashi mo',\n", - " '(i never wanna leave you away',\n", - " \"c'ause you make me feel so nice!)\",\n", - " 'samete kanjichauwa',\n", - " 'dakishimete never wanna say \"good bye\"',\n", - " 'i go bananas',\n", - " 'bananas to the beat',\n", - " 'lele lele',\n", - " 'i mono wayso',\n", - " 'yambo pe yanga koye',\n", - " 'onte mayo sobo',\n", - " 'yo mame yawo peyo sao',\n", - " 'kokonipi aou sobe yambo',\n", - " 'yambo pomi penzo',\n", - " 'i go bananas',\n", - " 'bananas to the beat',\n", - " 'kokonipi yo songo yalo',\n", - " 'yo moussy nindu pao',\n", - " 'o seke ambo pe ela ey kokonipi nay',\n", - " 'kokoni pios, stoyo amow',\n", - " 'i go bananas',\n", - " 'bananas to the beat',\n", - " 'heo-ooo',\n", - " 'saw me ambo yambo',\n", - " 'yambo yomomo yowo et touy',\n", - " 'i go bananas',\n", - " 'bananas to the beat',\n", - " 'woyobo be enzo',\n", - " 'oh i yo pandete o mows',\n", - " 'sobo i yo post tia undo peeta',\n", - " 'i go bananas',\n", - " 'bananas to the beat',\n", - " 'mo lele o possy yambo',\n", - " 'mo lele copy esh',\n", - " 'bo lele',\n", - " 'bo lele',\n", - " 'i go bananas',\n", - " 'bananas to the beat',\n", - " 'i go banaanas',\n", - " '(why yo show be ego)',\n", - " 'bananas to the beat',\n", - " '(kwanto pepe iyo)',\n", - " 'to the beat',\n", - " 'to the beat',\n", - " '(ko kokolo boleyo)',\n", - " 'to the beat',\n", - " 'bananas to the beat',\n", - " '(eh yo sambi ebo yo ame)',\n", - " 'bananas to the beat',\n", - " 'bananas to the beat',\n", - " '(wa beo sio beo pe)',\n", - " 'bananas to the beat',\n", - " '(so yo bolo peo ost)',\n", - " 'bananas to the beat',\n", - " 'bananas to the beat',\n", - " 'bananas to the beat',\n", - " 'bananas to the beat',\n", - " '(iby o sokai)',\n", - " 'bananas to the beat',\n", - " 'bananas to the beat',\n", - " 'bananas to the beat',\n", - " 'bananas to the beat...',\n", - " 'you’re my sunshine baby',\n", - " 'you’re my sunshine baby',\n", - " 'you’re my sunshine baby',\n", - " 'you’re my sunshine baby',\n", - " 'wagama mana watashi nanoni anata wa kotaete kureru',\n", - " '(you were always there for me)',\n", - " 'ochikonda toki wa yasashii kotoba wo kakete kureru',\n", - " '(you made me smile again baby)',\n", - " 'atari maena nichijou wo sugoshite mo',\n", - " 'nani yori shiawase wo kanjiteru',\n", - " 'onajiyou ni anata ni mo todo iteru kana',\n", - " 'taezu aishitekure anata no soba de',\n", - " 'donna tokinite mo',\n", - " '( you shine my day )',\n", - " 'taiyou wo no you ni atatakaku baby',\n", - " 'itsudemo yasashiku',\n", - " '(you shine my day )',\n", - " 'tsutsun de kureteru cuz my sunshine baby',\n", - " 'ima made ikitekita jinsei no naka de',\n", - " 'kazu e kirenai hodo no jinto to de ai',\n", - " 'takusan no hitodachi wo kakiwake',\n", - " 'watashi hayoyaku anata ni de ai eta',\n", - " 'korette kuuzen sore tomo korette jisuzen',\n", - " 'douchi ni shitate anata ga watashi ni kureta mono wa totemo atatakai ne',\n", - " 'you’re my sunshine baby',\n", - " '(you are my sunshine baby)',\n", - " 'you’re my sunshine baby',\n", - " '(yeah, yeah, here we go now)',\n", - " 'donna tokinite mo',\n", - " '( you shine my day )',\n", - " 'taiyou wo no you ni atatakaku baby',\n", - " 'itsudemo yasashiku',\n", - " '(you shine my day )',\n", - " 'tsutsun de kureteru cuz my sunshine baby',\n", - " 'anata no naka ni mo',\n", - " 'tayou no youna atataka saga afurete',\n", - " 'sore wo uke tomete',\n", - " 'sodatsu hana no youni',\n", - " 'i will grow my sunshine baby',\n", - " 'na na na na na',\n", - " 'na na na na na',\n", - " 'na na na na na',\n", - " 'na na na na na',\n", - " 'na na na na na',\n", - " 'na na na na na',\n", - " 'donna tokinite mo',\n", - " '( you shine my day )',\n", - " 'taiyou wo no you ni atatakaku baby',\n", - " 'itsudemo yasashiku',\n", - " '(you shine my day )',\n", - " 'tsutsun de kureteru cuz my sunshine baby',\n", - " 'bejp',\n", - " 'kimi ni kami wanai',\n", - " 'iwayuru mushinronsha',\n", - " 'kami no sadameta kiritsu nado, kimi ni totcha kankei no nai hazu',\n", - " 'sono hazunanoni dō iu wake ka',\n", - " 'itsushika kimi wa shinji teru, toaru hito o kimi wa shinji teru',\n", - " 'dare ni oshie rareta ka wa shiranai ga, kimi wa zettai-teki ni shinji teru',\n", - " '\"inochi ni kachigāru\" to shinji teru',\n", - " '\"hito o koroshite wa ikenai\" to omotteru',\n", - " 'nande?',\n", - " '\"nande tte soryaa\"',\n", - " 'kimi wa nani o shinji teru?',\n", - " 'question',\n", - " 'kimi ni kami wa inai',\n", - " 'tsumari mushinronsha',\n", - " 'menimieru-mono shika shinjinai shugi',\n", - " 'kami no okosu kiseki nado, kimi ni totte wa fantajī no sekai',\n", - " 'demo, kimi wa shinji teru',\n", - " 'uchuu ga aru to kimi wa shinji teru',\n", - " 'mitakotonai shi, itta koto naikedo kimi wa \"uchuu\" o yumemi teru',\n", - " 'kagaku-sha-tachi wa shinji teru',\n", - " '\"kagakuteki ni shōmei sareta mono wa \\'shinjitsu\\' \"',\n", - " 'da to kimi wa omotteru',\n", - " 'nande?',\n", - " '\"nande tte soryaa\"',\n", - " 'kimi wa nani o shinji teru?',\n", - " 'question',\n", - " 'kimi ni kami wanai',\n", - " 'iwayuru mushinronsha',\n", - " 'seigi to aku no kubetsu nado, kimi no toccha kankei mo nai hazu',\n", - " 'sono hazunanoni dō iu wake ka',\n", - " 'itsushika kimi wa shinji teru, aku wa horobubekida to omotteru',\n", - " 'jibun no naka ni aru seigi o motte aku o horobosu koto o kimi wa shinji teru',\n", - " 'seigiseigiseigiseigi...',\n", - " 'no naka ni aru takusan no gisei o kimi wa zettai ni utagawanai',\n", - " 'nande?',\n", - " '\"nande tte soryaa\"',\n", - " 'kimi wa nani o shinji teru?',\n", - " 'question',\n", - " 'wasafi',\n", - " 'tudd thomas',\n", - " 'clever touch',\n", - " 'haa!! your body dey shake',\n", - " 'my money dey wait',\n", - " 'for you, baby',\n", - " 'omo time dey waste',\n", - " 'make we go dey place for real',\n", - " 'oh sweetie',\n", - " 'tupate ubaridi kidogo',\n", - " 'tukale na ugali wa mwogo',\n", - " 'all i want is a bottle of moèt',\n", - " 'oh, eh',\n", - " 'baby, we can do it your way',\n", - " 'anything you want is okay',\n", - " 'all i want is a bottle of moèt',\n", - " 'oooh, ooh, for you',\n", - " 'tanzania to lagos',\n", - " 'i go make you famous',\n", - " 'even if them hate us',\n", - " 'oyinbo go hail us',\n", - " 'tanzania to lagos',\n", - " 'make you famous',\n", - " 'people hate us',\n", - " 'oyinbo go hail us',\n", - " 'oooh, ooh, ooh',\n", - " \"you're my number one\",\n", - " 'my sweetie sweetie',\n", - " 'number one',\n", - " 'my baby, oh',\n", - " \"you're my number one\",\n", - " 'my darling',\n", - " 'my number one',\n", - " 'oh, roho yangu mama',\n", - " 'my number one',\n", - " 'my sweetie sweetie',\n", - " 'number one',\n", - " 'my baby, oh',\n", - " \"you're my number one\",\n", - " 'oh, roho yangu mama',\n", - " 'my number one',\n", - " 'oh! tatu kidonda chaku kwangu maradhi',\n", - " 'matusi usononekapo kwangu simanzi',\n", - " 'aii! tatu kidonda chaku kwangu maradhi',\n", - " 'oh, yani usononekapo kwangu simanzi',\n", - " 'kwa mahaba ulionipa, nimenogewa',\n", - " 'vurugu patashika, aah! punfuza kidogo',\n", - " 'na mengine kadhalika, mtoto si unanielewa',\n", - " 'apo apo uliposhika, ukiongeza kidogo',\n", - " 'mmmh, mwenzako ntaumia (ooh, ooh, ooh)',\n", - " \"you're my number one\",\n", - " 'my sweetie sweetie',\n", - " 'number one',\n", - " 'my baby, oh',\n", - " \"you're my number one\",\n", - " 'my darling (obimo)',\n", - " 'my number one',\n", - " 'oh, roho yangu mama (obimo)',\n", - " 'my number one',\n", - " 'my sweetie sweetie',\n", - " 'number one',\n", - " 'my baby, oh (sweetie, sweetie)',\n", - " \"you're my number one\",\n", - " 'oh, roho yangu mama (obimo)',\n", - " 'my number one',\n", - " 'now, show me how they do',\n", - " 'ngololo, ngololo, ngololo, ngololo',\n", - " 'nglololo, ngololo, aah!',\n", - " 'for naija, we dey dance skelewu',\n", - " 'ah, skelewu, skelewu, ah, skelewu',\n", - " 'skelewu, ah, skelewu, oh, eh!',\n", - " 'tanzania make we dance, ngololo',\n", - " 'ah, skelewu, ngololo, skelewu',\n", - " 'ngololo, ah, skelewu!',\n", - " 'oh, eh, ngololo',\n", - " \"it's davido (ngololo)\",\n", - " 'na diamond (ngololo)',\n", - " \"it's davido (ngololo)\",\n", - " 'omo baba olowo, eh',\n", - " 'skelewu, ah, ngololo',\n", - " 'ah, skelewu, ah, ngololo, ah, skelewu',\n", - " 'ah, ngololo, oh',\n", - " 'now, show me how they do',\n", - " 'ngololo, ngololo, ngololo, ngololo',\n", - " 'ngololo, ngololo, aah!',\n", - " 'now, show me how they do',\n", - " 'ah, ah, ah, ah, aipoo! (omo baba olowo)',\n", - " 'ah, ah, ah, aipoo! ha, ha, ha',\n", - " 'wacha movie iendele',\n", - " 'wayo wayo',\n", - " 'wayo wayo wayo wayo wayo',\n", - " 'asubuhi ni sura yako niionayo niionayo',\n", - " 'asubuhi ni sura yako niionayo',\n", - " 'nikishukuru mola kukuona we kweli',\n", - " 'kweli ni baraka aah',\n", - " \"in the morning it's your face i see\",\n", - " \"i boil inside you're here you're close to me\",\n", - " 'na tabasamu lako kanijaza furaha tele',\n", - " 'mi niendelee kukuoenda',\n", - " 'nikishukuru mola kukuona we',\n", - " 'kweli, kweli ni baraka',\n", - " \"i'm in love (i'm in love)\",\n", - " \"i don't know what to say\",\n", - " 'i see you everyday i hope you feel the same',\n", - " \"i'm in love (i'm in love)\",\n", - " \"i don't know what to say\",\n", - " 'i see you everyday i hope you feel the same',\n", - " \"i'm in love\",\n", - " \"i'm in love\",\n", - " \"i'm in love\",\n", - " \"i'm in love\",\n", - " 'i am, i am, i am who i am (you are)',\n", - " 'you are, you are, you are who you are',\n", - " 'i like, i like, i like what i see',\n", - " 'so we, so we, so we can be we',\n", - " 'mimi ndim mimi ni mimi',\n", - " 'wewe ndiwe wewe ni wewe (wewe ni wewe)',\n", - " 'napenda ninachoona (ooh unacho...)',\n", - " 'tuwe, tuwe, tuwe ni sisi',\n", - " 'nikishukuru mola kukuona we',\n", - " 'kweli, kweli ni baraka',\n", - " \"i'm in love (i'm in love)\",\n", - " \"i don't know what to say\",\n", - " 'i see you everyday i hope you feel the same',\n", - " \"i'm in love (i'm in love)\",\n", - " \"i don't know what to say\",\n", - " 'i see you everyday i hope you feel the same',\n", - " \"i'm in love\",\n", - " \"i'm in love\",\n", - " \"i'm in love\",\n", - " \"i'm in love\",\n", - " 'unavyonizengua zengua zengua (zosi)',\n", - " 'unanichemsha chemsha chemsha (zosi)',\n", - " \"unavyong'aria ng'aria ng'aria zosi (zosi)\",\n", - " 'unavyonizengua zengua zengua (zosi)',\n", - " 'unanichemsha chemsha chemsha (zosi)',\n", - " \"unavyong'aria ng'aria ng'aria (zosi) eeh ee ee eeh\",\n", - " 'asubuhi ni sura yako niionayo (niionayo)',\n", - " 'na usiku silali ni sura yako niionayo',\n", - " 'nikishukuru mola kukuona we',\n", - " 'kweli, kweli ni baraka',\n", - " \"i'm in love (i'm in love)\",\n", - " \"i don't know what to say\",\n", - " 'i see you everyday i hope you feel the same',\n", - " \"i'm in love (i'm in love)\",\n", - " \"i don't know what to say\",\n", - " 'i see you everyday i hope you feel the same',\n", - " \"i'm in love\",\n", - " \"i'm in love (i'm so in love with you)\",\n", - " \"i'm in love (i'm so in love with you)\",\n", - " \"i'm in love\",\n", - " \"i'm in love\",\n", - " 'yume, risou oshi koroshite yudanete...',\n", - " 'itsuwari no kamen wo ima, hagasou',\n", - " 'itami senaka ni matoi odori tawamure wo',\n", - " 'kusari kake no heart ga myaku uchihajimeta...',\n", - " 'komaku wo saku hodo no furueru shoudou wo',\n", - " '\"fukaku kuruwasete kure!\" abaredasu kodou',\n", - " 'yugamu risou to... show! reveal yourself!',\n", - " \"don't hide anymore! feel you... sixty nine...\",\n", - " 'bastard lame faker... feel you... nasty dance...',\n", - " 'tsuki ga terasu atsuku tagiru omae no akaku nigoru chi no iro no you ni',\n", - " 'kuroku sometaku mousou sore ga omae no ikiru imi to kieru koto no nai tsumi sa',\n", - " \"don't hide anymore! feel you... sixty nine\",\n", - " 'bastard lame faker... feel you... nasty dance...',\n", - " 'hoshikuzu ga mau rondo ubaware yami ga kuzuredasu made nugui kirenu tsumi seoi',\n", - " 'eiga no heroine mo sou mienai kizu wo kakushi warau nukegara no you ni',\n", - " 'tsumibito-tachi no rondo tsuki to awaremi no uta wo kanade asu e tomosou...',\n", - " 'alija more delija',\n", - " 'ni tatka imaš ni majka',\n", - " 'sal edna pusta tambura',\n", - " 'sal edna pusta tambura',\n", - " 'ajija more delija',\n", - " 'što jova čudo od tebe',\n", - " 'co taja pusta tambura',\n", - " 'co taja pusta tambura ?',\n", - " 'gumsum gumsum gupchup gumsum gupuchup',\n", - " 'gumsum gumsum gupchup gumsum gupuchup',\n", - " 'gumsum gumsum gupchup gumsum gupuchup ..',\n", - " 'hulchul hulchul ho gayi teri honth hai kyon chup',\n", - " 'hulchul hulchul ho gayi teri baithe hain gupchup',\n", - " 'pyaare pyaare chehre ne karte hain ishaara',\n", - " 'dekha teri aankhon ne hai sapna koi pyaara',\n", - " 'humse gori na tu sharma kehde humse zara',\n", - " 'humse gori na tu sharma kehde humse zara',\n", - " 'kehna hi kya ye nein ik anjaan se jo mile',\n", - " 'chalne lagi mohabbat ke jaise ye silsile',\n", - " 'armaan naye aise dil mein khile',\n", - " 'jinko kabhi main na jaanoon',\n", - " 'vo humse hum unse kabhi na mile',\n", - " 'kaise mile dil na jaanoon',\n", - " 'ab kya karein kya naam lein',\n", - " 'kaise unhein main pukaroon',\n", - " 'kehna hi kya ye nein ik anjaan se jo mile',\n", - " 'chalne lagi mohabbat ke jaise ye silsile',\n", - " 'armaan naye aise dil mein khile',\n", - " 'jinko kabhi main na jaanoon',\n", - " 'vo humse hum unse kabhi na mile',\n", - " 'kaise mile dil na jaanoon',\n", - " 'ab kya karein kya naam lein',\n", - " 'kaise unhein main pukaroon',\n", - " 'pehli hi nazar mein kuchh hum kuchh tum',\n", - " 'ho jaate hain yoon gum',\n", - " 'neinon se barse rimjhim rimjhim',\n", - " 'humpe pyaar ka saawan',\n", - " 'sharam thodi thodi humko aaye to nazrein jhuk jaayein',\n", - " 'sitamb thoda thoda humpe shokh hwaa bhi kar jaayein',\n", - " 'aisi chale aanchal uthay dil mein ek toofan uthay',\n", - " 'hum to lut gaye khade hi khade',\n", - " 'kehna hi kya ye nein ik anjaan se jo mile',\n", - " 'chalne lagi mohabbat ke jaise ye silsile',\n", - " 'armaan naye aise dil mein khile',\n", - " 'jinko kabhi main na jaanoon',\n", - " 'vo humse hum unse kabhi na mile',\n", - " 'kaise mile dil na jaanoon',\n", - " 'ab kya karein kya naam lein',\n", - " 'kaise unhein main pukaroon',\n", - " 'gumsum gumsum gupchup gumsum gupuchup',\n", - " 'gumsum gumsum gupchup gumsum gupuchup ..',\n", - " 'hulchul hulchul ho gayi teri honth hai kyon chup',\n", - " 'hulchul hulchul ho gayi teri baithe hain gupchup',\n", - " 'pyaare pyaare chehre ne karte hain ishaara',\n", - " 'dekha teri aankhon ne hai sapna koi pyaara',\n", - " 'humse gori na tu sharma kehde humse zara',\n", - " 'humse gori na tu sharma kehde humse zara',\n", - " 'in honthon na maanga sargam sargam',\n", - " 'tu aur tera hi pyaar hai',\n", - " 'aaj dhoondhe hai jisko hardam hardam',\n", - " 'tu aur tera hi pyaar hai',\n", - " 'mehfil mein bhi tanha hai dil aise dil aise',\n", - " 'tujhko kho na de darrta hai ye aise ye aise',\n", - " 'aaj mili aisi khushi jhoom uthi duniya ye meri',\n", - " 'tumko paaya to paayi zindagi',\n", - " 'kehna hi kya ye nein ik anjaan se jo mile',\n", - " 'chalne lagi mohabbat ke jaise ye silsile',\n", - " 'armaan naye aise dil mein khile',\n", - " 'jinko kabhi main na jaanoon',\n", - " 'vo humse hum unse kabhi na mile',\n", - " 'kaise mile dil na jaanoon',\n", - " 'ab kya karein kya naam lein',\n", - " 'kaise unhein main pukaroon',\n", - " 'kehna hi kya ye nein ik anjaan se jo mile',\n", - " 'chalne lagi mohabbat ke jaise ye silsile',\n", - " 'kehna hi kya',\n", - " 'i know it! you it! you know it!',\n", - " 'you are my best of love',\n", - " 'itsu datte omotteta kawaranakya tte',\n", - " 'hikaru kaze takai sora miagetete ita',\n", - " 'meguriatte ho-nto yokatta',\n", - " 'sabishisa zenbu kieta',\n", - " 'sono me ni utsutta watashi no egao suki ni nareta',\n", - " 'within my heart',\n", - " '* ouioo soba ni ite',\n", - " 'ouioo uchiakete',\n", - " 'ouioo kimi to nara',\n", - " 'nan datte kanau!',\n", - " '** i know that dareka wo suki ni naru kimochi',\n", - " 'sore ga saikou no pawa-',\n", - " 'yes you are my best of love',\n", - " 'umaku iku koto bakari tsudzukanai ne',\n", - " 'demo ii sa hitotsu zutsu kuria shiyou',\n", - " 'kaze wa kyou mo gu-n to tsuyoi',\n", - " 'makezu ni doa wo akeyou',\n", - " 'futari kasaneau chikara wa subete wo koeru no',\n", - " 'within my heart',\n", - " '*** ouioo sono mune ni',\n", - " 'ouioo todoketai',\n", - " 'ouioo kawaranai',\n", - " 'kono mune no su-pa- rabu',\n", - " 'yukou ikutsu mo kumo wo oikoshi',\n", - " 'kimi to mirai ni yukou',\n", - " 'yes you are my best of love',\n", - " '* repeat',\n", - " '*** repeat',\n", - " '* repeat',\n", - " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", - " 'rappingu ga seifuku daaa furi tte kotanai puu',\n", - " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", - " 'rappingu ga seifuku daaa furi tte kotanai furi tte kotanai',\n", - " 'aimai san-senchi',\n", - " 'aimai san-senchi',\n", - " 'aimai san-senchi',\n", - " \"ase (fuu) ase (fuu) no tanima ni darlin' darlin' freeze!!\",\n", - " 'aimai san-senchi',\n", - " 'aimai san-senchi',\n", - " 'aimai san-senchi',\n", - " 'aimai san-senchi aimai san-senchi',\n", - " 'aimai san-senchi',\n", - " 'aimai san-senchi',\n", - " 'aimai san-senchi',\n", - " 'aimai san-senchi aimai san-senchi',\n", - " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", - " 'rappingu ga seifuku daaa furi tte kotanai puu',\n", - " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", - " 'rappingu ga seifuku daaa furi tte kotanai furi tte kotanai',\n", - " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", - " 'rappingu ga seifuku daaa furi tte kotanai puu',\n", - " 'aimai san-senchi sorya puni tte koto kai? cho!',\n", - " 'rappingu ga seifuku daaa furi tte kotanai furi tte kotanai',\n", - " 'she’s my black pearl, she’s my black pearl',\n", - " 'jidoneun pilyo eobseo nae mami neol garikyeo',\n", - " 'gal giri heomnanhaedo ijjeumeseo geureohgen mothanda',\n", - " 'han shido tteoreojyeo ijeobon jeogi eobtneunde',\n", - " 'jeo meolri supyeongseon kkeute neoye moseubeul bol su ittdamyeon',\n", - " 'nan docheul olryeo kkeutkkaji barame nal shidgo oh oh oh~',\n", - " 'gichireojin sumyeonye yodongeul jaewo',\n", - " 'eodum soge pin kkot bada wie tteun dal',\n", - " 'bimil gateun geu got my beautiful black pearl',\n", - " 'eodum soge pin kkot bada wie tteun dal',\n", - " 'bimil gateun geu got my beautiful black pearl',\n", - " 'shiljaehagin haneun geonji hyeonshilgwaneun dongtteoreojin',\n", - " '( kkumgwa isang sogeul hemaego ittna)',\n", - " 'shinhwa soge sal geotman gateun oh naye yeoshina shiganeul hechigo neol chajaga',\n", - " 'yeongwonhan geotdeureun mideobon jeogi eobtneunde',\n", - " 'geutorok ganjeolhage na barawottdeon neol dahge dwindamyeon',\n", - " 'nan docheul olryeo kkeutkkaji barame nal shidgo oh oh oh ~',\n", - " 'gichireojin sumyeonye yodongeul jaewo',\n", - " 'eodum soge pin kkot bada wie tteun dal',\n", - " 'bimil gateun geu got my beautiful black pearl',\n", - " 'eodum soge pin kkot bada wie tteun dal',\n", - " 'bimil gateun geu got my beautiful black pearl',\n", - " 'pokpungi morachineun ajjilhan sunganedo',\n", - " 'baetmeoril dolrijima hanghaereul meomchujima',\n", - " 'i jeongdoe geobeul meokgo molleonal jul arattdamyeon shijakjwo haji anhattda',\n", - " 'noreul gamchwonoheun badaye jangnanen gikkeoi naega matseojunda',\n", - " '( geochireojin sumyeonye yodongeul jaewo, geochireojin sumyeonye yodongeul jaewo, geochireojin sumyeonye yodongeul jaewo]',\n", - " 'she’s my black pearl oh~',\n", - " 'nan haneure tteun taeyanggwa daseot gaeye daeyang oh oh oh~',\n", - " 'chanranhage bitnaneun geunyeoreul hyanghae',\n", - " 'jiteun angae soge nopeun pado wie',\n", - " 'heurithage bichin my beautiful black pearl',\n", - " 'gipeun chimmuk soge seulpeun seonyul wie',\n", - " 'hyemihage deulrin my beautiful black pearl',\n", - " 'mu leno skari',\n", - " 'vivo fo eya meso',\n", - " 'fruna farsti ené',\n", - " 'me fari olé chita',\n", - " 'saré mo taré fio',\n", - " 'enifa ana for esso',\n", - " 'nesti hela mufo heles sta',\n", - " 'à sarafa noré ri a',\n", - " 'vina no ta reyéne tiaso na ii',\n", - " 'à mara ma haré si no',\n", - " 'ima fasa neléna hukiya',\n", - " 'safaa nani faréyu a',\n", - " 'weno wala, neno kwala',\n", - " 'oe sengue to mba, we matoi a muto',\n", - " 'bola nika a titi bwam',\n", - " 'ih na tondi oa tondi oa',\n", - " 'ye mbale na o lingane mba',\n", - " 'pi ja bo na topi wenge lakise mba',\n", - " 'weke we pe so o we',\n", - " 'na sibi muto mo o weni we no',\n", - " 'ndutu je mba mulema, e buki pon mba',\n", - " 'weno wala, ke ne o kwala',\n", - " 'oe sengue to mba, we matoi a muto',\n", - " 'bola nika a titi bwam',\n", - " 'ih na tondi oa tondi oa',\n", - " 'di kwale wenge',\n", - " 'di tope wenge',\n", - " 'di kwale',\n", - " 'musima mouena di kusi no',\n", - " 'di yai na muna timba na mba',\n", - " 'weke we pe so oe',\n", - " 'na si bi muto weni weno',\n", - " 'mujenge to mwae na si mene pe',\n", - " 'weno wala, neno kwala',\n", - " 'oi sengue to mba we matoi a muto',\n", - " 'bola nika a titi bwam',\n", - " 'ih na tondi oa tondi oa jita',\n", - " 'weno wala, muto bye bye',\n", - " 'oi sengue to mba, we matoi a muto',\n", - " 'bola nika a titi bwam',\n", - " 'ih na tondi oa tondi ao',\n", - " 'dil ye bechein ve, raste pe nain ve',\n", - " 'dil ye bechein ve, raste pe nain ve',\n", - " 'jindari behaal hai, soor hai na taal hai',\n", - " 'aaja savariya, aa aa aa aa',\n", - " 'taal se taal mila, o, taal se taal mila',\n", - " 'dil ye bechein ve, raste pe nain ve',\n", - " 'dil ye bechein ve, raste pe nain ve',\n", - " 'jindari behaal hai, soor hai na taal hai',\n", - " 'aaja savariya, aa aa aa aa',\n", - " 'taal se taal mila, o, taal se taal mila',\n", - " 'saawan ne aaj toh mujhko bhigo diya',\n", - " 'hai meri laaj ne mujhko dubo diya',\n", - " 'saawan ne aaj toh mujhko bhigo diya',\n", - " 'hai meri laaj ne mujhko dubo diya',\n", - " 'aisi lagi jhadi sochoon main ye ghadi',\n", - " 'kuchh maine kho diya kya maine kho diya',\n", - " 'chup kyon hai bol tu sang mere dol tu',\n", - " 'meri chaal se chaal milaa-a',\n", - " 'taal se taal mila, o, taal se taal mila',\n", - " 'maana anjaan hai tu mere vaaste',\n", - " 'maana anjaan hoon main tere vaaste',\n", - " 'maana anjaan hai tu mere vaaste',\n", - " 'maana anjaan hoon main tere vaaste',\n", - " 'main tujhko jaan loon, tu mujhko jaan le',\n", - " 'aa dil ke paas aa is dil ke raaste',\n", - " 'jo tera haal hai vo mera haal hai',\n", - " 'is haal se haal mila, o',\n", - " 'taal se taal mila, o, taal se taal mila',\n", - " 'dil ye bechein ve, raste pe nain ve',\n", - " 'dil ye bechein ve, raste pe nain ve',\n", - " 'jindari behaal hai, soor hai na taal hai',\n", - " 'aaja savariya, aa aa aa aa',\n", - " 'taal se taal mila, o, taal se taal mila',\n", - " 'pehli nazar mein',\n", - " 'kaise jaado kar diya',\n", - " 'tera ban baita hai',\n", - " 'mera jiya',\n", - " 'jaane kya hoga',\n", - " 'kya hoga kya pata',\n", - " 'is pal ko milke',\n", - " 'aa jee le zara',\n", - " 'mein hoon yahan',\n", - " 'tu hai yahan',\n", - " 'meri bahon mein aa',\n", - " 'aa bhi ja',\n", - " 'o jaan-e-jaan',\n", - " 'dono jahan',\n", - " 'meri bahon mein aa',\n", - " 'bhool ja aa',\n", - " 'o jaan-e-jaan',\n", - " 'dono jahan',\n", - " 'meri bahon mein aa',\n", - " 'bhool ja aa',\n", - " 'baby i love u, baby i love you, baby i love you, baby i love you ... so',\n", - " 'baby i love u',\n", - " 'oh i love u',\n", - " 'i love u',\n", - " 'i love u so',\n", - " 'baby i love u',\n", - " 'har dua mein shamil tera pyaar hai',\n", - " 'bin tere lamha bhi dushwar hai',\n", - " 'dhadhkon ko tujhe se hi darkar hai',\n", - " 'tujhse hai rahtein',\n", - " 'tujhse hai chahtein',\n", - " 'har dua mein shamil tera pyaar hai',\n", - " 'bin tere lamha bhi dushwar hai',\n", - " 'dhadhkon ko tujhe se hi darkar hai',\n", - " 'tujhse hai rahtein',\n", - " 'tujhse hai chahtein',\n", - " 'tu jo mili ek din mujhe',\n", - " 'mein kahin ho gaya lapata',\n", - " '(o jaan-e-jaan',\n", - " 'dono jahan',\n", - " 'meri bahon mein aa',\n", - " 'bhool ja aa ) ... 2',\n", - " '(kar diya deewana dard-e-kash ne',\n", - " 'chain cheena isqh ke ehsaas ne',\n", - " 'bekhayali di hai tere pyaas ne',\n", - " 'chaya suroor hai',\n", - " 'kuch to zaroor hai) ... 2',\n", - " 'yeh dooriyan',\n", - " 'jeene na de',\n", - " 'hal mera tujhe na pata',\n", - " '(o jaan-e-jaan',\n", - " 'dono jahan',\n", - " 'meri bahon mein aa',\n", - " 'bhool ja aa) ... 2',\n", - " 'baby i love u, baby i love you, baby i love you, baby i love you ... so',\n", - " 'baby i love u',\n", - " 'oh i love u',\n", - " 'baby i love u',\n", - " 'i love u... ...',\n", - " 'mele jihna ikath hunda',\n", - " 'nal sarkaran vi slaahan lehndiyan',\n", - " 'ho marji na leader je chunn le ni',\n", - " 'othe votan vi ni pehndiyan',\n", - " 'banne ghodiyan haveli baharo bahar ni',\n", - " 'rakhe fight nu vi pitbull chaar ni',\n", - " 'ghodiyan haveli baharo bahar ni',\n", - " 'rakhe fight nu vi pitbull chaar ni',\n", - " 'kandeyan te sair karda',\n", - " 'jithe hundi aa pabandi hathiyar di',\n", - " 'ni ohthe jatt fire karda. hoonj dene aatki group vi',\n", - " 'jehre vi ohde anti chalde',\n", - " 'ho do do mahine gym la ke udd de',\n", - " 'kaas ton jawaak kal de',\n", - " 'fer pehnge kalege ohdon hol bai',\n", - " 'ho lalo pudpeiyan te pistol bai',\n", - " 'pehnge kalege ohdon hol bai',\n", - " 'lalo pudpeiyan te pistol bai',\n", - " 'tan hi jana khana darda',\n", - " 'jithe hundi a pabandi hathiyar di',\n", - " 'ni othe jatt fire karda. oh jiyo bai',\n", - " 'sunya a god ohne le lya ni',\n", - " 'bacha aakh de bandook da',\n", - " 'siyaane kehnde kharre pair katal kra deve',\n", - " 'bhi roula watt te mashook da',\n", - " 'muhon kadi gal poori karda shaukeen',\n", - " 'nahio foki taur da',\n", - " 'ho navyan de naa naio jaanda',\n", - " 'fan parkash kaur da',\n", - " 'oh gal donne aala kharri karda',\n", - " 'maan kalle uss rab kolon darda',\n", - " 'donne aala kharri karda',\n", - " 'maan kalle uss rab kolon darda',\n", - " 'ni booch booch pair tarda',\n", - " 'jithe hundi a pabandi hathiyar di',\n", - " 'ni ohthe jatt fire karda',\n", - " 'i sunganeun real',\n", - " \"it's party time chill\",\n", - " \"it's party time da chill\",\n", - " 'chagaun ni moseubi nan joha',\n", - " 'neukkindamyeon you gotta show it rock your body',\n", - " 'ttame jeojeul ttaekkajiman rock your body',\n", - " 'amu saenggak eobsi nan nollae',\n", - " 'nan neoui noye',\n", - " \"let's get down\",\n", - " \"let's get down i bami gagi jeone\",\n", - " 'just let it drip just let it drip',\n", - " 'just let it drip just let it drip',\n", - " 'onmome ttami heulleo neoui mameul neukkyeo',\n", - " 'just let it drip just let it drip',\n", - " 'just let it drip just let it drip',\n", - " 'onmome ttami heulleo gipeun bami heulleo',\n", - " 'just let it drip sexy lady',\n", - " 'just let it drip sexy lady',\n", - " 'rock rock your body',\n", - " 'rock rock your body',\n", - " 'just let it drip drip',\n", - " 'just let it drip drip',\n", - " 'just let it drip sexy lady',\n", - " 'just let it drip sexy lady',\n", - " 'rock rock your body',\n", - " 'rock rock your body',\n", - " 'just let it drip drip',\n", - " 'just let it drip drip',\n", - " 'nae pume itgil naeil ireun achim',\n", - " 'geudaewa hamkke geotneun golmokgil',\n", - " 'jumeoni sok kiwa matneun nae chimsil',\n", - " 'oneuri aniyeodo nan joha',\n", - " 'you gotta show it',\n", - " 'neukkindamyeon you gotta show it',\n", - " 'ttame jeojeul ttaekkajiman rock your body',\n", - " 'amu saenggak eobsi nan nollae',\n", - " 'nan neoui noye',\n", - " \"let's get down\",\n", - " \"let's get down i bami gagi jeone\",\n", - " 'just let it drip just let it drip',\n", - " 'just let it drip just let it drip',\n", - " 'onmome ttami heulleo neoui mameul neukkyeo',\n", - " 'just let it drip just let it drip',\n", - " 'just let it drip just let it drip',\n", - " 'onmome ttami heulleo gipeun bami heulleo',\n", - " 'just let it drip',\n", - " 'just let it drip',\n", - " 'come close to me now',\n", - " 'come close to me now',\n", - " 'jogeum deo dagawa',\n", - " \"let's get down get down\",\n", - " \"let's get down get down\",\n", - " 'nae nuneul barabwa',\n", - " 'chojeom eomneun nunbit nal wonhaneunji',\n", - " 'girl you got me hypnotize',\n", - " 'girl you got me hypnotize',\n", - " 'just give it to me',\n", - " 'just give it to me',\n", - " 'just let it drip just let it drip',\n", - " 'just let it drip just let it drip',\n", - " 'onmome ttami heulleo neoui mameul neukkyeo',\n", - " 'just let it drip just let it drip',\n", - " 'just let it drip just let it drip',\n", - " 'onmome ttami heulleo gipeun bami heulleo',\n", - " 'just let it drip sexy lady',\n", - " 'just let it drip sexy lady',\n", - " 'rock rock your body',\n", - " 'rock rock your body',\n", - " 'just let it drip drip',\n", - " 'just let it drip drip',\n", - " 'just let it drip sexy lady',\n", - " 'just let it drip sexy lady',\n", - " 'rock rock your body',\n", - " 'rock rock your body',\n", - " 'just let it drip drip',\n", - " 'just let it drip drip',\n", - " 'aaj maine breakup ki party rakhli hai',\n", - " 'subah se ek botal daru bhi peeli hai',\n", - " 'sleeper lagake mummy daddy ko sulake',\n", - " 'aao mere paas yaaron gaao sur sa lagake hath',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'aa jehdi nachde ae use bi peeni hai',\n", - " 'dil se hai maine aaj usko nikala',\n", - " 'dil to hai pagal jo fudakta tha saala',\n", - " 'finger dikhayi uski photo bhi jalayi',\n", - " 'phir flush me bahake thodi thandak si aayi',\n", - " 'is baat is baat is baat pe uthao haath',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'aa jehdi nachdi ae use bi peeni hai',\n", - " 'tujhe bithake rakha tha maine raani palko pe',\n", - " 'tunhe maari thokar samjhi aa jaunga sadko pe',\n", - " 'na aisa na tu soch ri chori',\n", - " 'everyday meri new love story',\n", - " 'pehle toh meri baat na gauri',\n", - " \"ab boli baby i'm sorry\",\n", - " 'chal ri chal re ab side me hoja',\n", - " 'dhundle apna aashik duja',\n", - " 'aira gaira nathu khaira',\n", - " 'fukra sa shehri chuusa',\n", - " 'ja karle tu usse shaadi',\n", - " 'fir shuru teri barbaadi',\n", - " 'dhoyegi tu kachche',\n", - " 'aur gande bartann',\n", - " 'dekhegi saas bahu aur durdarshan',\n", - " 'banke reh jayegi tu house biwi',\n", - " 'aur chaubis ghante tera yaar hoga on tv',\n", - " 'phir tv dekh ke tu bahot pachtayegi',\n", - " 'fir yo yo honey yo yo honey singh hi tu gaayegi',\n", - " 'aur bachcho ko sunayegi aur yehi batlayegi',\n", - " 'agar galti se mujhse na hota ye paap',\n", - " 'toh yehi hote bachcho tumhare baap ha',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'aa jehdi nachdi ae use bi peeni hai',\n", - " 'ab uski best friend ko fasaaunga',\n", - " 'long drive pe usko le jaaunga',\n", - " 'usko jalaun use bada tadpau',\n", - " 'apni ex ko aaj main sabak sikhaaun',\n", - " 'is baat is baat is baat pe uthao haath',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'upar upar upar upar upar upar in the air',\n", - " 'aa jehdi nachdi ae use bi peeni hai',\n", - " 'nande ka na? anata ga chikazuku to',\n", - " 'nani o shiteita tte kehai o kanjiru no',\n", - " 'sō ha-to no antena ga pipipi te',\n", - " 'kūki no sono henka kyatchisuru mitai',\n", - " 'jibun de mo kizukanai',\n", - " 'muishikina koi no yokan',\n", - " 'ato de bikkurishinai yōni',\n", - " 'chanto ara-to narashitekureru yo',\n", - " 'ushiro kara yukkuri to sekkinchū',\n", - " 'be-be-beware',\n", - " 'ki o tsukete hima o mise cha make',\n", - " 'whoa-oh-oh mushishiyou',\n", - " 'hanashikaketekuru made wa',\n", - " 'zettai furimukanai',\n", - " 'three, two, one',\n", - " 'yōjinshite kyōmi nante nai furi',\n", - " 'whoa-oh-oh aseru',\n", - " 'sō shisen no nakani haittenai deai',\n", - " 'chanto ugokimashō',\n", - " 'kiniitteru no wa hidarigawa oh?',\n", - " 'dakara dotchi?',\n", - " 'hidari no hō kara turn around, oh',\n", - " \"you feelin' it? now me to me ga attara hey!\",\n", - " 'kore ijō honki ni natchau to',\n", - " 'mebaeta kanjō ga mō tomerarenai',\n", - " 'kitto anata o dokusenshitaku natte',\n", - " 'ni jū yon jikanchū soba ni itaku naru',\n", - " 'ikеnai kuse datte',\n", - " 'jibun demo wakattеru kedo',\n", - " 'nan do onaji shippaishite mo',\n", - " 'ai no ro-pu de shibarou to shichau',\n", - " 'sukina hito tsukuranai kimeteta noni',\n", - " 'be-be-beware',\n", - " 'hitome mite taipu da to wakatta',\n", - " 'whoa-oh-oh abu nai',\n", - " 'koibito ni narenai nara',\n", - " 'doko ka itte chōdai',\n", - " 'bye bye bye',\n", - " 'imashimete bure-ki kakenakya',\n", - " 'whoa-oh-oh dame ne',\n", - " 'ah muchū ni natteshimaisō na no tomete',\n", - " 'kyori o okimashō',\n", - " 'yappari bingo desho',\n", - " 'suki ni natteku',\n", - " 'ushiro kara yukkuri to sekkinchū',\n", - " 'be-be-beware',\n", - " 'ki o tsukete hima o mise cha make',\n", - " 'whoa-oh-oh mushishiyou',\n", - " 'hanashikaketekuru made wa',\n", - " 'zettai furimukanai',\n", - " 'three, two, one',\n", - " 'yōjinshite kyōmi nante nai furi',\n", - " 'whoa-oh-oh aseru',\n", - " 'sō shisen no nakani haittenai deai',\n", - " 'chanto ugokimashō',\n", - " 'ki o tsukete',\n", - " '(be-be-beware)',\n", - " 'i tsu datte mistake, mistake',\n", - " '(be-be-beware)',\n", - " 'i know',\n", - " 'i wanna love you, i wanna love you',\n", - " 'yeah listen! baby naege baby naui dunune',\n", - " 'neo hanamani sara sumsuineun de',\n", - " 'geunde wae ireohke noemu nado meongose na heullo nimkin che (jeomjeom meolleo jine)',\n", - " 'ne saraminde (geu nuga mworahaedo)',\n", - " 'neon nae yejande (keuge euichyeodo)',\n", - " \"neomanisseumyeon i'll be ok\",\n", - " 'ijen naega neol jigyeo julke',\n", - " 'baby you know because',\n", - " \"i wanna love you i can't live without you\",\n", - " 'du nuneul gamgo nae du soneul jabgu',\n", - " 'i wanna have you i really need you',\n", - " 'jigeum idaero modeungeol beoryeodugo',\n", - " \"i wanna love you i can't live without you\",\n", - " 'neon geujeo naegero dagaseo myeondwae',\n", - " 'i wanna have you nae modeungeol julke',\n", - " 'ijeneun neoege yaksokhalke',\n", - " 'keu sarami mwondae neoljikkyeo bulsubakke',\n", - " 'neol kidaril su bakke no deoisang andwae',\n", - " 'neol deryeowa yahaegeuwa neun eorulliji anneun neoreul',\n", - " 'naesaraminde (naesaraminde yeah)',\n", - " 'neon nae yeoja inde (neon nae yoeja inde)',\n", - " \"neomanisseumyeon i'll be ok\",\n", - " 'ijen naega neol jikyeojulke',\n", - " 'baby you know because',\n", - " \"i wanna love you i can't live without you\",\n", - " 'du nuneul gamgo nae du soneul jabgu',\n", - " 'i wanna have you i really need you',\n", - " 'jigeum idaero modeungeol beoryeodugo',\n", - " \"i wanna love you i can't live without you\",\n", - " 'neon geujeo naegero dagaseo myeondwae',\n", - " 'i wanna have you nae modeungeol julke',\n", - " 'ijeneun neoege yaksokhalke',\n", - " '(rap)',\n", - " 'yo excuse me mr',\n", - " 'hwanalgyeotgata jombikyeo naega meonjeo geunyeoui yeopjariroda',\n", - " 'gaseogettji jeonjeonhi so step back',\n", - " 'that girl is mine niga mwondae uri',\n", - " 'sarange sundae gonyeoui nunege marhae',\n", - " 'neon nawa hamkke hakilwonhae',\n", - " 'neon jugeott dakkae eonado geunyel',\n", - " 'gatjil machi',\n", - " 'wurideulgwa ddok gatae aradoruh seumyeon',\n", - " 'jom gujyujullae',\n", - " 'she make me crazy geonyeo neun naegewan',\n", - " 'byukan geol',\n", - " 'wan byukhan uriduri gwangye dakhan',\n", - " 'buneh andwegenna',\n", - " 'ijeneun nae soneul jama',\n", - " 'andwae jebal naegerulwa',\n", - " 'naega neol deo saranghae',\n", - " 'naega neol jikkyeojulke',\n", - " 'modeungeol da gajyeodo',\n", - " 'neo eobsin andwaeneunde',\n", - " \"i wanna love you i can't live without you\",\n", - " 'du nuneul gamgo nae du soneul jabgu',\n", - " 'i wanna have you i really need you',\n", - " 'jigeum idaero modeungeol beoryeodugo',\n", - " \"i wanna love you i can't live without you\",\n", - " 'neon geujeo naegero dagaseo myeondwae',\n", - " 'i wanna have you nae modeungeol julke',\n", - " 'ijeneun neoege yaksokhalke',\n", - " 'mal eopshi geudaeman bojyo',\n", - " 'motboncheok jinachilgeol almyeonseodo',\n", - " 'geudae gyeoteman isseumyeon',\n", - " 'shigani meonchungeot gata',\n", - " 'naenae utgiman haesseotjyo',\n", - " 'mal eopshi geudaeman bojyo tto nan',\n", - " 'hagoshipeun mari tto saenggin geojyo',\n", - " 'gakkai daga galsurok',\n", - " 'geudaewaeui georiga',\n", - " 'neomudo meolgeman neukkyeojijyo',\n", - " 'nan geudaeman',\n", - " 'i love you',\n", - " 'geujeo',\n", - " 'i want you',\n", - " 'i need you',\n", - " 'ajik eoridan mal mayo',\n", - " 'i love you',\n", - " 'jigeum isungando',\n", - " 'neoeui moksori deudgo shipeo',\n", - " 'naegyeote isseojweo',\n", - " 'joheun ilman isseotteongeon anijyo',\n", - " 'naegedo nunmuljitteon bami isseo',\n", - " 'eoneusae dagaon sarang',\n", - " 'naemameul heundeureo nohjyo',\n", - " 'geudae gyeote gamyeon andwenayo',\n", - " 'nan geudaeman',\n", - " 'i love you',\n", - " 'geujeo',\n", - " 'i want you',\n", - " 'i need you',\n", - " 'ajik eoridan mal mayo',\n", - " 'i love you',\n", - " 'jigeum isungando',\n", - " 'neoeui moksori deudgo shipeo',\n", - " 'naegyeote isseojweo',\n", - " 'i love you',\n", - " 'geujeo',\n", - " 'i want you',\n", - " 'i need you',\n", - " 'ajik eoridan mal mayo',\n", - " 'i love you',\n", - " 'jigeum isungando',\n", - " 'neoeui moksori deudgo shipeo~oh',\n", - " ...]},\n", - " 'rock': {'meta': {'train_data': ['ohhhhhhh',\n", - " 'yeahhh',\n", - " '\"kou nattara ii na\" no mousou to genjitsu ni',\n", - " 'isseki o toujite kosei o migake',\n", - " 'kakaenayamu nandai o mata hitotsu shoukyo',\n", - " 'atama kara ketsu made sore ga wa ga entame',\n", - " 'boom, boom, boom',\n", - " 'dancing through the skies',\n", - " 'mada shijainai sa himotoita shourai wa',\n", - " 'boom, boom, boom',\n", - " 'dancing through the skies',\n", - " 'daichi kettobashite',\n", - " 'motto maiagatte',\n", - " 'everybody put your hands up',\n", - " \"saa flyin' tsubasa ni nare\",\n", - " 'mitemitai na muchuu ni nareru kimi',\n", - " 'ima da seichouki shinsekai e',\n", - " 'modokashikute mou douka shiteru',\n", - " 'mugamchuu nareru mono ga hoshii',\n", - " 'fugainai hiidetenai nante kawaikunai ne',\n", - " 'konpurekkusu wa sakate ni totte orijinariti',\n", - " 'boom, boom, boom',\n", - " 'dancing through the skies',\n", - " '\"yaranakyabyou\" de yamadzumi no mondai mo',\n", - " 'boom, boom, boom',\n", - " 'dancing through the skies',\n", - " 'motto waruagaite shoutai o abaite',\n", - " \"come on, let's party!\",\n", - " 'everybody, put your hands up',\n", - " \"saa flyin' sono imeeji de\",\n", - " 'kitto nareru sa naritai jibun ni',\n", - " \"sagase you're the one oobutai e\",\n", - " \"flyin' wasureteta\",\n", - " \"flyin' kioku no naka de\",\n", - " 'mou ichido mune no takanari o kike',\n", - " 'everybody put your hands up',\n", - " 'saa flyin’ tsubasa ni nare',\n", - " 'mitemitai na muchuu ni nareru kimi',\n", - " 'ima da seichouki shinsekai e',\n", - " 'everybody, put your hands up',\n", - " \"saa flyin' sono imeeji de\",\n", - " 'kitto nareru sa naritai jibun ni',\n", - " \"sagase you're the one oobutai e\",\n", - " \"flyin' wasureteta\",\n", - " \"flyin' kioku no naka de\",\n", - " 'mou ichido mune no takanari o kike',\n", - " 'ohhh',\n", - " 'dilbar-dilbar',\n", - " 'chadha jo mujhpe suroor hai',\n", - " 'asar tera ye zaroor hai',\n", - " 'teri nazar ka kasoor hai yeh',\n", - " 'dilbar-dilbar',\n", - " 'aa paas aa tu kyon door hai',\n", - " 'yeh ishq ka jo fitoor hai',\n", - " 'nashe mein dil tere choor hai',\n", - " 'dilbar-dilbar',\n", - " 'ab to hosh na khabar hai, ye kaisa asar hai?',\n", - " 'hosh na khabar hai, ye kaisa asar hai?',\n", - " 'tumse milne ke baad dilbar',\n", - " 'tumse milne ke baad dilbar',\n", - " 'dilbar-dilbar, dilbar-dilbar',\n", - " 'dilbar-dilbar, dilbar-dilbar',\n", - " 'karti katal na aise tu chal',\n", - " 'paheli ka is nikalo koyi hal',\n", - " 'husn ka pitara khilta kamal',\n", - " 'kar loon main sabar',\n", - " 'kyun ki mitha hai fal',\n", - " 'tu mera khwaab hai, tu mere dil ka karaar',\n", - " 'dekh le jaan-e-mann, dekh le bas ek baar',\n", - " 'chain kho gaya hai, kuch to ho gaya hai',\n", - " 'chain kho gaya hai, kuch to ho gaya hai',\n", - " 'tumse milne ke baad dilbar',\n", - " 'tumse milne ke baad dilbar',\n", - " 'oh yeah!',\n", - " 'ladies',\n", - " 'ab to hosh na khabar hai, ye kaisa asar hai?',\n", - " 'hosh na khabar hai, ye kaisa asar hai?',\n", - " 'tumse milne ke baad dilbar',\n", - " 'tumse milne ke baad dilbar',\n", - " 'dilbar-dilbar',\n", - " 'makeinu! nyūgakushi, kinchō!',\n", - " 'shinchō burezā ni senpai ga sutta settā no koge ato',\n", - " 'heikin-teki chii, ude suji naki gekichin',\n", - " 'bentō wa hibi \"chikichikibōn\" nomi bimi!',\n", - " 'kyōdan no ue = shiai-ba (ring), kurasumēto wo gurinchi',\n", - " '\"we are chūbō!!\" chūbō! chūbō!',\n", - " '\"we are chūbō!!\" chūbō! chūbō!',\n", - " 'futotta danshi no chichi, monde, close your eyes...',\n", - " 'chūgaku watcha gonna freedom!! chūgaku watcha gonna freedom!!',\n", - " 'chūgaku watcha freedom!! chūgaku watcha gonna!!',\n", - " 'believe in fuck!!',\n", - " 'oh! yes! (yes!) chū ni the beam, chū ni the beam',\n", - " 'eien no ore no monster',\n", - " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", - " 'eien no ore no monster',\n", - " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", - " 'eien no ore no monster',\n", - " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", - " 'eien no ore no monster',\n", - " 'chūgaku, for me... o wakare, joshi',\n", - " 'chūgaku, for me... o wakare, danshi',\n", - " 'chūgaku, for me... o wakare, girls! (u hu hu)',\n", - " 'chūgaku, for me... o wakare da boys!!',\n", - " 'atama no naka, magamaga shiku wagamama',\n", - " 'akuma no koe, koko e omen, yobikome',\n", - " 'makura no cover wa, dani dani dani',\n", - " 'yume no naka made, honey honey honey',\n", - " 'super no okujō, mini-yuenchi de',\n", - " 'high school yankee ni katsuage help me',\n", - " 'yoko de mite iru anpanhīrō, hyaku-en ireru kara, tasukero!',\n", - " 'buon! bwon! buon! bwon!',\n", - " 'zoku-sha no beiku no sōon, rock ja nē!',\n", - " 'gimon, mō monmon monmon, doshitara moteru ka oshiero rockstar',\n", - " 'kōsha ura no ring',\n", - " 'hōkago no harenchi',\n", - " '\"we are chūbō!!\" chūbō! chūbō!',\n", - " '\"riajū bomb!!\" abo-n! abo-n!',\n", - " \"ben'i, moyōshite pinch, gekō isoge! jibun n'ie\",\n", - " 'chūgaku watcha gonna freedom!! chūgaku watcha gonna freedom!!',\n", - " 'chūgaku watcha freedom!! chūgaku watcha gonna!!',\n", - " 'believe in fuck!!',\n", - " 'oh! yes! (yes!) chū ni the beam, chū ni the beam',\n", - " 'eien no ore no monster',\n", - " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", - " 'eien no ore no monster',\n", - " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", - " 'eien no ore no monster',\n", - " 'yes! (yes!) chū ni the beam, chū ni the beam',\n", - " 'eien no ore no monster',\n", - " 'chūgaku, for me... o wakare, joshi',\n", - " 'chūgaku, for me... o wakare, danshi',\n", - " 'chūgaku, for me... o wakare, girls! (u hu hu)',\n", - " 'chūgaku, for me... o wakare da boys!!',\n", - " 'viva! viva! chūbō!',\n", - " 'banzai! banzai! chūbō!',\n", - " 'viva! viva! chūbō!',\n", - " 'hold me ochiteyuku yami ni wa',\n", - " 'fuan ya kodoku wa nai',\n", - " 'kasanari au kodou',\n", - " 'kako mo mirai mo tokashiteku',\n", - " 'koori no hahen dakishimete',\n", - " 'yogorete shimatta kono hiroi yozora ni wa',\n", - " 'mou hoshi nante mienai to omotteta',\n", - " 'kimi ni au made',\n", - " 'keep giving me your love',\n", - " 'keep giving me your love',\n", - " 'moeru yo na kisu wo shiyou',\n", - " 'subete yaki tsukusu honoo no naka he mo',\n", - " 'kimi to nara tobi komeru',\n", - " 'kimi wo ai suru koto ga',\n", - " 'nee donna ni itaku tatte ii yo',\n", - " 'tokimeku dake no moroi kizuna ja nai',\n", - " 'naifu no you ni tsuyosa to yowasa dakishimete',\n", - " 'oreta tsubasa',\n", - " 'hitori furueru shika nakatta yoru mo aru',\n", - " 'onaji me no kimi ni aumade',\n", - " 'keep giving me your love',\n", - " 'keep giving me your love',\n", - " 'moeru yo na kisu wo shiyou',\n", - " 'subete yaki tsukusu honoo no naka he mo',\n", - " 'kimi to nara tobi komeru',\n", - " 'keep giving me your love',\n", - " 'keep giving me your love',\n", - " 'eien ni mitsumete ite',\n", - " 'kogoeru yami yoru mo fukai kiri no asa mo',\n", - " 'kimi to nara tobi tateru',\n", - " 'have you ever heard of the orange range?',\n", - " 'orenji renji wo shitteru kai',\n", - " \"don't tell your mama or she'll think you're insane\",\n", - " 'kaa-chan-tachi ni wa naishou dazo',\n", - " 'all the pretty girls listen and pertain',\n", - " 'omase na ano ko mo kiiteruze',\n", - " \"our music's best for highway speeding\",\n", - " 'haiuei tobasu nya mottekoi',\n", - " 'sekaijuu hora waratteru sora miagete',\n", - " 'saa tachiagatte oh yeah',\n", - " 'hi! say! chikyuu wa mawaru kimi no tame ni asa ga kuru',\n", - " 'hada no iro ya me no iro kachikan datte iro-iro',\n", - " 'boku mo kimi mo dosoku de hagu-kissu-i love you',\n", - " 'saa, ote wo haishaku japaniizu piipoo',\n", - " 'sekaijuu hora waratteru sora miagete',\n", - " 'saa tachiagatte oh yeah',\n", - " \"sekaijuu hora kawatteku min'na ganbatte\",\n", - " 'so tachiagatte oh yeah',\n", - " 'sekai wa hiroi hiroi totetsu mo naku',\n", - " 'ookii hito chiisai hito bibidebabidebuu',\n", - " 'dakara atama nayamasen na kimi wa kimi da',\n", - " 'sekai wa maji de kagiri neenda',\n", - " 'saa ashinami soroete 1, 2 1, 2',\n", - " 'sekaijuu hora waratteru sora miagete',\n", - " 'saa tachiagatte oh yeah',\n", - " \"sekaijuu hora kawatteku min'na ganbatte\",\n", - " 'so tachiagatte oh yeah',\n", - " 'hito wa toki ni mayoi naki sore demo sora wo miagete',\n", - " 'deigo no hana wa akaku moe hiroki daichi fumishime',\n", - " 'tomo no warau oto to futto ukabu kimi no egao',\n", - " 'atatakai hizashi maioriru chikara ikou hajime kara',\n", - " 'sekaijuu hora waratteru sora miagete',\n", - " 'saa tachiagatte oh yeah',\n", - " \"sekaijuu hora kawatteku min'na ganbatte\",\n", - " 'so tachiagatte oh yeah',\n", - " 'hey',\n", - " 'hey',\n", - " 'hey',\n", - " 'hey',\n", - " 'hey',\n", - " 'hey',\n", - " 'hey',\n", - " 'hey',\n", - " 'hey, hey, hey, hey',\n", - " 'hey, hey, hey',\n", - " 'proletariariakitusha',\n", - " 'prolisik alinishanisholn',\n", - " 'proletariariakitusha',\n", - " 'prolisik alinishanisholn',\n", - " 'hey, hey, hey, hey',\n", - " 'hey, hey, hey',\n", - " 'na na na na, nana nana nana',\n", - " 'na nana, nanana nanana',\n", - " 'na na na na, nana nana nana',\n", - " 'na nana, nanana nanana',\n", - " 'hey, hey, hey, hey',\n", - " 'hey, hey, hey',\n", - " 'proletariariakitusha',\n", - " 'prolisik alinishanisholn',\n", - " 'proletariariakitusha',\n", - " 'prolisik alinishanisholn',\n", - " 'hey, hey, hey, hey',\n", - " 'hey, hey, hey',\n", - " 'hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey',\n", - " 'hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey',\n", - " 'hey, hey, hey, hey',\n", - " 'hey, hey, hey, hey',\n", - " 'kristo, kristo, kristo',\n", - " 'nitakutana nayeye',\n", - " 'nitakutana nayeye',\n", - " 'atakutana nami',\n", - " 'atakutana nami',\n", - " 'kristo, kristo, kristo',\n", - " 'sina budi kwenda sasa sasa',\n", - " 'sina budi kwenda sasa sasa',\n", - " 'lazima nisichelewe',\n", - " 'mtoto amezaliwa',\n", - " 'mtoto amezaliwa',\n", - " 'mtoto amezaliwa',\n", - " 'kristo, kristo, kristo',\n", - " 'gloria',\n", - " 'christ, christ, christ',\n", - " 'i shall meet him',\n", - " 'i shall meet him',\n", - " 'he will meet me',\n", - " 'he will meet me',\n", - " 'christ, christ, christ',\n", - " 'i must go now',\n", - " 'now i must go now',\n", - " 'i must not be late',\n", - " 'a child has been born',\n", - " 'the child has been born',\n", - " 'christ, christ, christ',\n", - " 'gloria',\n", - " 'aramiba furaliba no-na ride',\n", - " 'doo mi soma sola eva fu ma bide',\n", - " 'foo werse young ka solf wee',\n", - " 'sem pa kugo watea pumbe imbewin',\n", - " 'bany, har shishemba kawa pishomain',\n", - " 'bous ton kowa la kafree',\n", - " 'woboo reiny everiwa',\n", - " 'woboo rewa sonpaa kul fimo',\n", - " 'ya huro wu sa kazne',\n", - " '(wahl? wahl?)',\n", - " 'ya zibo shemowem imbo we',\n", - " '(wahl? whal?)',\n", - " 'bimku kambe kenebe puletel',\n", - " 'be afubar jock simbah, he!',\n", - " 'ip september i was shinka she wa mine',\n", - " 'ip fecember fufarifa nova kuai',\n", - " 'fu kubzi au donka sui',\n", - " 'ip pecember i wa dinnk a fumbombai',\n", - " 'paka harba in my memorisos dyin',\n", - " 'vouz ze fa worme flamwi',\n", - " 'woboo reiny everiwa',\n", - " 'woboo rewa sonpaa kul fimo',\n", - " 'ya huro wu sa kazne',\n", - " '(wahl? wahl?)',\n", - " 'ya zibo shemowem imbo we',\n", - " '(wahl? whal?)',\n", - " 'bimku kambe kenebe puletel',\n", - " 'be afubar jock simbah, he!',\n", - " 'bimku kambe kenebe puletel',\n", - " 'be afubar jock simbah, he!',\n", - " 'ya huro wu sa kazne',\n", - " '(wahl? wahl?)',\n", - " 'ya zibo shemowem imbo we',\n", - " '(wahl? whal?)',\n", - " 'bimku kambe kenebe puletel',\n", - " 'be afubar jock simbah, he!',\n", - " 'bimku kambe kenebe puletel',\n", - " 'be afubar jock simbah...',\n", - " 'bimku, kambe...',\n", - " 'bimku, kambe...',\n", - " 'bimku, kambe, kenebe puletel',\n", - " 'be afubar jock simbah, eh!',\n", - " 'ka uni tramaya',\n", - " 'kuta unoi trameya dreya',\n", - " 'kuta uni tremeya',\n", - " 'utrey nu trabaya',\n", - " 'nu kunun trabya',\n", - " 'nun drey tabaya',\n", - " 'utra geya manya',\n", - " 'rendabey kunadresdama',\n", - " 'isal dunamanya',\n", - " 'endabey kunadresdama',\n", - " 'isal kunamanya',\n", - " 'endabey kunadresdama',\n", - " 'ital kunamanya',\n", - " 'andabey kunadresda',\n", - " 'kuma kuma taya',\n", - " 'ondabey kunadresdama',\n", - " 'isal dunamanya',\n", - " 'ondabey kunadresda',\n", - " 'nosa kumananya',\n", - " 'endabey kunadresdama',\n", - " 'isal enamenya',\n", - " 'andabey kunadresda',\n", - " 'no trabiyan deyabayo',\n", - " 'no trabiyan deyebo',\n", - " 'utra gaya manya',\n", - " 'rendabey kunadresdama',\n", - " 'isal dunamanya',\n", - " 'rendabey kunadresdama',\n", - " 'isal kunamanya',\n", - " 'endabey kunadresdama',\n", - " 'isal kunamanya',\n", - " 'endabey kunamanya',\n", - " 'no trabiyan deyabayo',\n", - " 'no trabiyan dayabo',\n", - " 'nopo treya domafiya',\n", - " 'itreya domafiya',\n", - " 'doma treya domafiya',\n", - " 'itreya domafiya',\n", - " 'nopo treya domafaya',\n", - " 'itreya domafaya',\n", - " 'nopo treya domafaya',\n", - " 'ipoa domofaya',\n", - " 'nopo treya domafiya',\n", - " 'itreya domafiya',\n", - " 'doma treya domafiya',\n", - " 'itreya domafiya',\n", - " 'nopo treya domafaya',\n", - " 'ipyaa domofaya',\n", - " 'nopo treya domafaya',\n", - " 'ipoa domofeya',\n", - " 'doma treya domafiya',\n", - " 'itreya domafiya',\n", - " 'doma treya domafiya',\n", - " 'itreya domafiya',\n", - " 'nopo treya dumafaya',\n", - " 'itaya domafeya',\n", - " 'nopo treya domafiya',\n", - " 'iteya dumatreya',\n", - " 'pepepepe dumadiya',\n", - " 'itreya dumadiya',\n", - " 'pepepepe dumadiya',\n", - " 'utreya dumadiya',\n", - " 'pepepeya unadiya',\n", - " 'itreya dumatraya',\n", - " 'pepepeya dumatreya',\n", - " 'itreya dumatraya',\n", - " 'i realize the screaming pain',\n", - " 'hearing loud in my brain',\n", - " \"but i'm going straight ahead, with the scar\",\n", - " '(can you hear me, can you hear me?',\n", - " 'can you hear me? so am i)',\n", - " 'wasurete shimaeba ii yo kanji-naku nacchae-ba ii',\n", - " 'surimuita kokoro ni futa o shitanda',\n", - " 'kizutsuitatte heikidayo mou itami wa nai kara ne',\n", - " 'sono ashi o hikizuri nagara mo',\n", - " 'miushinatta, jibun jishin ga',\n", - " 'oto o tatete, kuzureteitta',\n", - " 'kizukeba kaze no oto dake ga',\n", - " 'tsutaeni kitayo kizuato tadotte',\n", - " 'sekai ni oshitsubusarete shimau mae ni',\n", - " 'oboeterukana namida no sora o',\n", - " 'ano itami ga kimi no koto o mamotte kureta',\n", - " 'sono itami ga itsumo kimi o mamotterunda',\n", - " '(can you hear me? so am i)',\n", - " 'kizutsukanai tsuyosa yori mo',\n", - " 'kizutsukenai yasashisa o',\n", - " 'sono koe wa dokoka kanashisoude',\n", - " 'kakechigaeta, botan mitai ni',\n", - " 'kokoro karada, hanareteita',\n", - " 'mou ichido kokoro o tsukande',\n", - " 'tsutaeni kitayo kizuato tadotte',\n", - " 'sekai ni oshitsubusarete shimau mae ni',\n", - " 'oboeterukana namida no sora o',\n", - " 'ano itami ga kimi no koto o mamotte kureta',\n", - " 'sono itami ga itsumo kimi o mamotterunda',\n", - " '(can you hear me, can you hear me?',\n", - " 'can you hear me, can you hear me?',\n", - " 'can you hear me, can you hear me?',\n", - " 'can you hear me? so am i)',\n", - " 'mitsukekita, ano nakigoe wa',\n", - " 'machigainaku sou, jibun nodatta',\n", - " 'subete wa kono toki no tame ni',\n", - " 'kitto hajime kara wakkatetanda',\n", - " 'mou ni do to jibun dake wa hanasanaide',\n", - " 'kizuite kureta, kimi he no aizu',\n", - " 'ano itami ga kimi no koto o mamottekureta',\n", - " 'tsutae ni kitayo kizuato tadotte',\n", - " 'sore nara mou osoreru mono wa naindatto',\n", - " 'wasurenaidene egao no wake o',\n", - " 'ano itami ga kimi no koto o mamottekureta',\n", - " 'ano itami ga kimi no koto o mamottekureta',\n", - " 'sono itami ga itsumo kimi o mamotterunda',\n", - " '(can you hear me, can you hear me?',\n", - " 'can you hear me? so am i)',\n", - " 'romaji',\n", - " 'beautiful& grotesque',\n", - " 'loved me',\n", - " 'beautiful& grotesque',\n", - " 'eat you',\n", - " 'beautiful& grotesque',\n", - " 'loved me',\n", - " 'beautiful& grotesque',\n", - " 'pau pau pau',\n", - " 'pau pau pau',\n", - " 'kegarawashiku moeru',\n", - " 'metropolis yureru',\n", - " 'maten rō no saki de yume ga sabita',\n", - " 'kizukanai furi no o omae no soba no kage…',\n", - " 'kirameku toki…',\n", - " 'beautiful& grotesque',\n", - " 'loved me',\n", - " 'beautiful& grotesque',\n", - " 'eat you',\n", - " 'beautiful& grotesque',\n", - " 'loved me',\n", - " 'beautiful& grotesque',\n", - " 'kirameku kaminari wa',\n", - " 'kare o tsurete kieta',\n", - " 'beautiful& grotesque',\n", - " 'loved me',\n", - " 'beautiful& grotesque',\n", - " 'eat you',\n", - " 'beautiful& grotesque',\n", - " 'loved me',\n", - " 'beautiful& grotesque',\n", - " 'omae no kamigami wa maboroshi de wa nai ka?',\n", - " 'kanji',\n", - " 'beautiful&grotesque',\n", - " 'loved me',\n", - " 'beautiful&grotesque',\n", - " 'eat you',\n", - " 'beautiful&grotesque',\n", - " 'loved me',\n", - " 'beautiful&grotesque',\n", - " 'pau pau pau',\n", - " 'pau pau pau',\n", - " '汚らわしく 燃える',\n", - " 'metropolis 揺れる',\n", - " '摩天楼の先で夢が錆びた',\n", - " '気づかないフリのを お前のそばの影…',\n", - " 'きらめく時…',\n", - " 'beautiful&grotesque',\n", - " 'loved me',\n", - " 'beautiful&grotesque',\n", - " 'eat you',\n", - " 'beautiful&grotesque',\n", - " 'loved me',\n", - " 'beautiful&grotesque',\n", - " 'きらめく雷は',\n", - " '彼を連れて消えた',\n", - " 'beautiful&grotesque',\n", - " 'loved me',\n", - " 'beautiful&grotesque',\n", - " 'eat you',\n", - " 'beautiful&grotesque',\n", - " 'loved me',\n", - " 'beautiful&grotesque',\n", - " 'お前の神々は 幻ではないか?']},\n", - " 'data': ['dark side rhythm, dorei, zō aku standing, underground, requiem dancer',\n", - " 'gaidō, hi aburi, ubasute te, dove onnen, jizō, urami gōu, kurami...bokura ni gyō',\n", - " 'kuroku ware, teara kusare, tsubuyaku koe yowaku',\n", - " 'hone kudakete, ageku toketa, ware dokohe yuku?',\n", - " 'hara ippai ni urami bai, boro mouke reibai, zense no uso ubai',\n", - " 'abikyōkan, umeki, mogaku kanjō wa',\n", - " 'dare ga toku no ka?',\n", - " 'yū nagi, samidare noyuganda kagebōshi',\n", - " 'kamigami no me wa sutare te, ochiru, tamashī no shimi',\n", - " 'hibana ga chiru tsume no saki de, gumon wo dai te',\n", - " 'haga re ochiru katamari wo name te fusai da',\n", - " 'zan ritamae...sono \"shimi\"',\n", - " 'dark side rhythm, dorei, zō aku standing, underground, requiem dancer',\n", - " 'gaidō, hi aburi, ubasute te, dove onnen, jizō, urami gōu, kurami...bokura ni gyō',\n", - " 'kuroku ware, teara kusare, tsubuyaku koe yowaku',\n", - " 'hone kudakete, ageku toketa, ware dokohe yuku?',\n", - " 'hara ippai ni urami bai, boro mouke reibai, zense no uso ubai',\n", - " 'abikyōkan, umeki, mogaku kanjō wa',\n", - " 'dare ga toku no ka?',\n", - " 'yū nagi, samidare noyuganda kagebōshi',\n", - " 'kamigami no me wa sutare te, ochiru, tamashī no shimi',\n", - " 'hibana ga chiru tsume no saki de, gumon wo dai te',\n", - " 'haga re ochiru katamari wo name te fusai da',\n", - " 'zan ritamae...sono \"shimi\"',\n", - " 'warawa no aka kara namida chi wo shokui',\n", - " 'bōki mono wo san e',\n", - " 'shō shite gei eniyuku tabi ritsu no toki ni',\n", - " 'hikari arumoto e',\n", - " '\"mada iki te...\" namari kurui keiren',\n", - " 'osore kurushi sa, sasae kiren seimei henosemegi',\n", - " 'koyoi kokoni nokosu',\n", - " 'jibaku saehodoku ikusen no omoi',\n", - " 'jibaku saehodoku ikusen no omoi',\n", - " 'yū nagi, samidare noyuganda kagebōshi',\n", - " 'kamigami no me wa sutare te, ochiru, tamashī no shimi',\n", - " 'hibana ga chiru tsume no saki de, gumon wo dai te',\n", - " 'haga re ochiru katamari wo name te fusai da',\n", - " 'hibika seru, izure, sumikko no innen wosubete',\n", - " 'hazama, nure ru hodo ni imi wo koboshite tsutaeta',\n", - " 'zan ritamae...sono \"shimi\"',\n", - " 'yorokobi wa nagareru mizu no you',\n", - " 'sukui ageta te no hira kara, sui uri to koboreochita',\n", - " 'sore demo kurikaesu you ni, sasayaka ni ryoute wo nurase',\n", - " 'oohh, oooohhh',\n", - " 'hikari wa aoaza no you',\n", - " 'kizukanai aida ni, dare mo shiranai aida ni',\n", - " 'suji tsutatte jinjin to ude ga itande mo',\n", - " 'dou ka kimi wo nagekanaide',\n", - " 'always, always, tatta yume no nai machi made kuridashite',\n", - " 'always, always, tatta uzuku naru itsuka no kimi mo sou',\n", - " 'always, always, tatta kuzaerarenai ano ko ga tsukedashite',\n", - " 'always, always, kakato de ai wo uchinarasou',\n", - " 'kanashimi wa maku no you',\n", - " 'saibou susumu you ni, itsu demo soko ni atte',\n", - " 'tanoshimi wa awa no you demo',\n", - " 'dou ka kimi wo nagekanaide',\n", - " 'always, always, tatta yume no nai machi made kuridashite',\n", - " 'always, always, tatta uzuku naru itsuka no kimi mo sou',\n", - " 'always, always, tatta susumanai kare wo sasoidashite',\n", - " 'always, always, tsumasaki de ai wo uchinarasou',\n", - " \"without you, thinking 'bout you\",\n", - " 'without you, oohh',\n", - " \"thinking 'bout you, ooohhh\",\n", - " 'always, always, tatta yume no nai machi made kuridashite',\n", - " 'always, always, tatta uzuku naru itsuka no kimi mo sou',\n", - " 'always, always, tatta kuzaerarenai ano ko ga tsuredashite',\n", - " 'always, always, kakato de ai wo uchinarasou',\n", - " 'oohh, ooohh',\n", - " 'wareru',\n", - " 'wareru kuchi kara',\n", - " 'morasu',\n", - " 'morasu giji sekai',\n", - " 'sanzan warai atta nochi',\n", - " 'senaka no teki musuu ni tsukisasu',\n", - " 'seken teki ishi sotsuu',\n", - " 'watashi wa tada tada ikitai dake',\n", - " 'kuchiguse no uragawa ni wa',\n", - " 'anata no gisei wa watashi no inochi',\n", - " 'batto nomikonde',\n", - " 'ukideta kekkan te de kakusu',\n", - " 'koubiya kana as***a o dakishimete',\n", - " 'dare mo ga koufuku no sekai?',\n", - " 'taisouna ikikata ne',\n", - " 'daidougei hitona no?',\n", - " 'boon',\n", - " 'what now?',\n", - " 'boonest',\n", - " 'what now?',\n", - " 'kagen o shiranai ibutsu konnyuu',\n", - " 'sanzan warai atta nochi',\n", - " 'senaka no teki musuu ni tsukisasu',\n", - " 'seken teki ishi sotsuu',\n", - " 'koushiki no ba de',\n", - " 'rikaisha to nanoru omae mo sou sa',\n", - " 'sanzan warai atta nochi',\n", - " 'hone no zui made',\n", - " 'i miss you so bad',\n", - " 'kikoe...teru?... koe...',\n", - " 'watashi... koko ni... iru no... kana...',\n", - " 'ima... hitori... yume kara... meza...metemo?',\n", - " 'kokoro wa... toji...ta mama...',\n", - " 'sayonara... jibun... ienai...',\n", - " 'to be loved... itsuka... tsuna...ga...ttara',\n", - " 'ibasho... kitto... mitsu... karu kana...',\n", - " 'to be loved... nanimo... hana...sana...ide...',\n", - " 'nemuru... you ni... tada... soba ni isasete...',\n", - " 'furue...teru?... naze...',\n", - " 'watashi... doko ni... iku no... kana...',\n", - " 'ima... uso de... ii kara... koko.. chiyoku...',\n", - " 'namida wo... kizu...tsukete...',\n", - " 'gomen ne... anata... ienai...',\n", - " 'to be loved... itsuka... too...ku na...ttara...',\n", - " 'ikiru... imi mo... naku... su no kana...',\n", - " 'to be loved... daremo... fure... nai... de ne...',\n", - " 'yume no... tsuzuki... tada... koko ni isasete...',\n", - " 'to be loved... itsuka... too...ku na... ttara...',\n", - " 'ikiru... imi mo... naku... su no kana...',\n", - " 'to be loved... itsuka... tsuna...ga...ttara...',\n", - " 'ibasho... kitto... mitsu... karu kana...',\n", - " 'to be loved... nanimo... hana... sana... ide...',\n", - " 'nemuru... you ni... tada... soba ni isasete...']}}},\n", - " 'tl': {'sentence': {'pop': {'meta': {'train_data': ['waka mono wa listen',\n", - " 'easy very easy',\n", - " 'nani mo kamo you think',\n", - " 'easy very easy',\n", - " '... makase suki ni youshoshini',\n", - " 'sore kanji i jyanai',\n", - " \"it's not very easy\",\n", - " 'tayotte bakari jya dou ni kanaranai',\n", - " 'jibun de aita bundake dou ni kanaru',\n", - " 'hito no hanashi wa dou demo iisa',\n", - " 'the way you do sore ga chuyo',\n", - " 'la la la',\n", - " 'ikai to amakunai',\n", - " 'la la la',\n", - " 'chikara wasureru',\n", - " 'la la la',\n", - " 'ikerarenai kamo',\n", - " \"you think it's easy\",\n", - " 'easy very easy',\n", - " 'waga mama wa just stop',\n", - " 'easy very easy',\n", - " 'susun de mitaradou?',\n", - " 'easy very easy',\n", - " 'aimai na heaven',\n", - " 'kyou kara waketsu',\n", - " \"it's like the hell demo\",\n", - " 'easy very easy',\n", - " 'ima made no jibun wa sotete miyou',\n", - " 'are you ready for this? deshou wa douyo',\n", - " 'hito no hanashimo tamani wa kiite',\n", - " 'the way you do sore ga chuyo',\n", - " 'la la la',\n", - " 'ikkai to amakunai',\n", - " 'la la la',\n", - " 'chikara wasureru',\n", - " 'la la la',\n", - " 'ikerarenai kamo',\n", - " \"you think it's easy\",\n", - " 'easy very easy',\n", - " \"i'm te... telling you\",\n", - " \"it's gonna be ea... easy\",\n", - " \"why don't you come and follow me\",\n", - " 'phenomenon world',\n", - " 'are you ready for this',\n", - " 'easy very easy',\n", - " 'la la la',\n", - " 'ikai to amakunai',\n", - " 'la la la',\n", - " 'chikara wasureru',\n", - " 'la la la',\n", - " 'ikerarenai kamo',\n", - " \"you think it's easy\",\n", - " 'easy very easy',\n", - " 'latinos',\n", - " 'royce (royce)',\n", - " 'balvin, j balvin',\n", - " \"leggo'\",\n", - " \"c'mon (que lo que mami)\",\n", - " 'me gusta como me hablas, me encanta tu calor',\n", - " 'you like the way i hold you when we are falling in love',\n", - " 'eso amor (yo sé que sí)',\n", - " 'in love, eso amor (mami yo sé que sí)',\n", - " \"if it's love, eso amor\",\n", - " 'a mi lado te quiero así',\n", - " \"girl i know you're a handful 'cause you know what you like\",\n", - " 'you might be hard to handle pero te voy a enseñar (pero que rica estás)',\n", - " 'enseñar (qué rica estás)',\n", - " \"what it's like (what it's like)\",\n", - " \"when you're\",\n", - " 'stuck on a feeling',\n", - " \"just can't stop, once ain't enough\",\n", - " 'better lock this down, better box it up',\n", - " 'gotta work me out, make it real',\n", - " 'gotta make it count, get stuck on a feeling',\n", - " \"just can't stop, once ain't enough\",\n", - " 'better lock this down, better box it up',\n", - " 'gotta work me out, make it real',\n", - " 'gotta make it count, get stuck on a feeling',\n", - " 'ella me tiene (dímelo mami)',\n", - " 'pegao, pegao',\n", - " 'pegao, pegao, pegao',\n", - " 'check it out',\n", - " \"let's go hide out in private\",\n", - " \"won't you show me your place? (your place)\",\n", - " 'a little peace and quiet (woo)',\n", - " 'where we can both misbehave',\n", - " 'mirala, la diferente a las demás',\n", - " 'quisiera besarla sigue balando, conmigo amanecerá (mirala)',\n", - " 'no voy a soltarla',\n", - " 'stuck on a feeling',\n", - " \"just can't stop, once ain't enough\",\n", - " 'better lock this down, better box it up',\n", - " 'gotta work me out, make it real',\n", - " 'gotta make it count, get stuck on a feeling',\n", - " \"just can't stop, once ain't enough\",\n", - " 'better lock this down, better box it up (stuck on a feeling)',\n", - " 'gotta work me out, make it real',\n", - " 'gotta make it count, get stuck on a feeling',\n", - " '(ven conmigo mami)',\n", - " 'stuck on a feeling',\n", - " '(se juntaron los tigres)',\n", - " 'she got me stuck on a feeling',\n", - " 'she got me stuck on a',\n", - " 'she got me, she got me',\n", - " \"okay, estamos ready pa' la action\",\n", - " 'mi nena tiene swag',\n", - " \"she's all about the fashion\",\n", - " 'si yo supiera que cuando camina',\n", - " 'todo el mundo la mira y la verdad',\n", - " 'yo no quiero distraction',\n", - " 'mirala, la diferente a las demás',\n", - " 'quisiera besarla sigue balando, conmigo amanecerá',\n", - " 'no voy a soltarla',\n", - " 'stuck on a feeling',\n", - " \"just can't stop, once ain't enough\",\n", - " 'better lock this down, better box it up (yeah-eh)',\n", - " 'gotta work me out, make it real (work it out, yeah)',\n", - " 'gotta make it count, get stuck on a feeling',\n", - " \"just can't stop, once ain't enough (stuck on a feeling)\",\n", - " 'better lock this down, better box it up (stuck on a feeling)',\n", - " 'gotta work me out, make it real',\n", - " 'gotta make it count, get stuck on a feeling',\n", - " 'ella me tiene pegao',\n", - " 'ella me tiene pegao',\n", - " 'ella me tiene, ella me tiene (stuck on a)',\n", - " 'ella me tiene pegao (stuck on a feeling)',\n", - " 'pegao, pegao, peago, pegao (woo)',\n", - " 'stuck on a, stuck on a, stuck on a, stuck on a feeling',\n", - " 'she got me stuck on a feeling',\n", - " 'band bottle sharab diye',\n", - " 'band bottle sharab diye',\n", - " 'ho bharda naa dil chandra',\n", - " 'haaye ni bhariye shabab diye',\n", - " 'band bottle sharab diye…',\n", - " 'band bottle sharab diye…',\n", - " 'muh de naal patt deya tera datt ni',\n", - " 'deek laa k pee ja tenu fatta-fatt ni',\n", - " 'muh de naal patt deya tera datt ni',\n", - " 'deek laa k pee ja tenu fatta-fatt ni',\n", - " 'makeup di lod koi naa',\n", - " 'makeup di lod koi naa',\n", - " 'tu beauty punj-aab di a',\n", - " 'band bottle sharab diye…',\n", - " 'band bottle sharab diye…',\n", - " 'kach wich rehndi aa tu band balliye',\n", - " 'eho gall mainu na pasand balliye',\n", - " 'kach wich rehndi aa tu band balliye',\n", - " 'eho gall meainu na pasand balliye',\n", - " 'mehka chadde ang ang ni',\n", - " 'mehka chadde ang ang ni',\n", - " 'jyo patti e gulaab diye',\n", - " 'band bottle sharab diye…',\n", - " 'band bottle sharab diye…',\n", - " 'birdi de naal jagroop rehnda a',\n", - " 'paindi jadon shaam ghut laa he lainda a',\n", - " 'birdi de naal jagroop rehnda a',\n", - " 'paindi jadon shaam ghut laa he lainda a',\n", - " 'jandi na bhulaya bhuldi',\n", - " 'jandi na bhulaya bhuldi',\n", - " 'jive raat suhag diye',\n", - " 'band bottle sharab diye…',\n", - " 'band bottle sharab diye…',\n", - " 'band bottle sharab diye…',\n", - " 'band bottle sharab diye…',\n", - " 'iy thu tus esteros',\n", - " 'iy podo oreh keh tonalee keh ston podo',\n", - " 'to so nonara ko lo thee, arestee to nee to ro',\n", - " 'ee-theh heera ro see to stol mundos',\n", - " 'elfkar dios prosko preen ton sfor pot mon',\n", - " 'paga leh nee seh',\n", - " 'yono tetas spen feeks sehrio nee skon dos',\n", - " 'eh-lo ven meero no so seh sehr, ee satra pos no neemus',\n", - " 'an appa lee nee stapa restyon salpos',\n", - " 'meh temio lo lopo',\n", - " 'prol lomen pros ma sho meh tha epa mera nwera no',\n", - " 'metheh eh ef no shono ma tohng',\n", - " 'a theh ee ana preyomen, ezsmente sehr es mee mertax seh dtontuh ro',\n", - " 'dentro nor kleez famas meyes seenon deh, zo menen peezon des',\n", - " 'paga leh nee seh',\n", - " 'yono tetas spen feeks sehrio nee skon dos',\n", - " 'eh-lo ven meero no so seh sehr, ee satra pos no neemus',\n", - " 'an appa lee nee stapa restion salpos',\n", - " 'one, one plus one',\n", - " 'two, solo tú',\n", - " 'three, three dog night',\n", - " 'four, four seasons',\n", - " 'five, jackson five',\n", - " 'six, kiss my sex',\n", - " 'seven, seven up',\n", - " 'eight, after eight',\n", - " 'nine, nine to five',\n", - " 'ten, bo derek',\n", - " 'suck it to me , suck it to me babe',\n", - " 'suck it to me, suck it to me now',\n", - " 'after dinner, before dinner',\n", - " 'after lunch, before lunch',\n", - " 'after breakfast, before breakfast',\n", - " 'after flight, before flight',\n", - " 'you want it. you want it',\n", - " 'you get it. you get it',\n", - " 'you want money, you want vices, you want drugs',\n", - " 'all drugs',\n", - " 'drugs, drugs, drugs',\n", - " 'all drugs',\n", - " 'cocaina, tonifica',\n", - " 'heroína, crea síndrome',\n", - " 'marihuana, coloca',\n", - " 'bustaid, relaja',\n", - " 'valium 15, estimula',\n", - " 'dexedrina, enloquece',\n", - " 'sosegón, alucina',\n", - " 'el opio, amodorra',\n", - " 'angel dust, es total',\n", - " 'suck it to me , suck it to me babe',\n", - " 'suck it to me, suck it to me now',\n", - " 'after dinner, before dinner',\n", - " 'after lunch, before lunch',\n", - " 'after breakfast, before breakfast',\n", - " 'after flight, before flight',\n", - " 'get it on, get it on',\n", - " 'you want it, you want it',\n", - " 'you got it, you got it',\n", - " 'you want money, you want vices',\n", - " 'you want pieles, you want joyas',\n", - " 'you want aerotaxi, you want submarines',\n", - " 'you want records, you want fashion',\n", - " 'you want partys all day long',\n", - " 'you want partys all night long',\n", - " 'you want alcohol',\n", - " 'you want alcohol',\n", - " 'vodka con ginebra, es total',\n", - " 'vodka con piña, es total',\n", - " 'vodka con naranja, es total',\n", - " 'vodka con limón, es total',\n", - " 'cubalibre de ginebra, es total',\n", - " 'cubalibre de ron, es total',\n", - " 'cazalla, es total',\n", - " 'aguardiente, es total',\n", - " 'horchata, es total',\n", - " 'vino de mesa, es total',\n", - " 'cerveza con casera, es total',\n", - " 'plataforma de charol',\n", - " 'mini-shorts ajustado y plateado',\n", - " 'cazadora de lamé y un látigo en los pies para darte bien',\n", - " 'buscando tu calor he bajado a las cloacas',\n", - " 'y las ratas me dieron su amor',\n", - " 'amor de rata, amor de cloaca',\n", - " 'amor de alcantarilla, amor de basurero',\n", - " 'lo hago sólo por dinero',\n", - " 'cowboy desperado',\n", - " 'cowboy desperado (hahahaha)',\n", - " 'cowboy desperado',\n", - " 'cowboy desperado',\n", - " 'cowboy desperado',\n", - " 'cowboy desperado',\n", - " 'cowboy desperado',\n", - " 'cowboy desperado',\n", - " 'vein',\n", - " 'j. balvin',\n", - " 'belinda',\n", - " 'la familia...',\n", - " 'translation',\n", - " \"excuse me, mami, i don't speak any spanish\",\n", - " 'óyeme, papi, dime qué es lo que quieres...',\n", - " \"can't understand a word you say but i like it\",\n", - " 'pues si te gusta tanto, ¿por qué no aprendes?',\n", - " 'how do you say \"i like you\"? me gustas',\n", - " 'how do you say \"i want you\"? te deseo',\n", - " 'how do you say \"i need you\"? te necesito',\n", - " 'how do you say \"i wanna fuck ya\\'?',\n", - " '¡¿qué?!',\n", - " '¡¿qué?!',\n", - " 'mejor calladito, (oh oh)',\n", - " 'y solo baila conmigo, (oh oh)',\n", - " 'mejor calladito, (oh oh)',\n", - " 'así te ves mas bonito, (oh oh)',\n", - " 'i speak body language',\n", - " 'so talk to me',\n", - " 'talk to me',\n", - " 'talk to me',\n", - " '(talk to me)',\n", - " \"yo' booty likes it's trynna say\",\n", - " 'bop bop billy bop billy (bop billy)',\n", - " 'me no speak \"eespanish\"',\n", - " 'but i can say \"señorita\"...',\n", - " '¿cómo está belindita?',\n", - " \"y gracias fo' being my ficha\",\n", - " \"let's go!\",\n", - " \"excuse me, mami, i don't speak any spanish\",\n", - " 'óyeme, papi, dime qué es lo que quieres...',\n", - " \"can't understand a word you say but i like it\",\n", - " 'pues si te gusta tanto, ¿por qué no aprendes?',\n", - " 'how do you say \"i like you\"? me gustas',\n", - " 'how do you say \"i want you\"? te deseo',\n", - " 'how do you say \"i need you\"? te necesito',\n", - " 'how do you say \"i wanna fuck ya\\'?',\n", - " '¡¿qué?!',\n", - " '¡¿qué?!',\n", - " 'mejor calladito, (oh oh)',\n", - " 'y solo baila conmigo, (oh oh)',\n", - " 'mejor calladito, (oh oh)',\n", - " 'así te ves mas bonito,(oh oh)',\n", - " 'oh, ok',\n", - " \"belinda, tu sabe' que estás bien linda y la disco está lista\",\n", - " \"ok, just me and your friend, yo digo lo que sea but he don't understand\",\n", - " 'lemme take you to la fiesta... sí, the party, man',\n", - " \"pero como tu no entiende na', you're fucking stupid, man\",\n", - " \"excuse me, mami, i'm the one who speaks spanish\",\n", - " 'óyeme, papi, dime qué es lo que quieres...',\n", - " '... y yo no sé how you do it but i like it',\n", - " 'pues si te gusta tanto, ¿por qué no aprendes?',\n", - " 'how do you say \"i like you\"? me gustas',\n", - " 'how do you say \"i want you\"? te deseo',\n", - " 'how do you say \"i need you\"? te necesito',\n", - " 'how do you say \"i wanna fuck ya\\'?',\n", - " '¡¿qué?!',\n", - " '¡¿qué?!',\n", - " 'mejor calladito, (oh oh)',\n", - " 'y solo baila conmigo, (oh oh)',\n", - " 'mejor calladito, (oh oh)',\n", - " 'así te ves mas bonito, (oh oh)',\n", - " 'translation',\n", - " 'you canââ\\x80â\\x99t be a beacon',\n", - " '(chorus)',\n", - " 'you canââ\\x80â\\x99t be a beacon if your light donââ\\x80â\\x99t shine',\n", - " 'you canââ\\x80â\\x99t be a beacon if your light donââ\\x80â\\x99t shine',\n", - " 'thereââ\\x80â\\x99s a little light in all of us by godââ\\x80â\\x99s design',\n", - " 'but you canââ\\x80â\\x99t be a beacon if your light donââ\\x80â\\x99t shine',\n", - " 'how can you ask for the truth',\n", - " 'when you do not truthful live',\n", - " 'how can you ask forgiveness',\n", - " 'when you donââ\\x80â\\x99t forgive',\n", - " 'i donââ\\x80â\\x99t mean to bring you down or speak to you unkind',\n", - " 'but you canââ\\x80â\\x99t be a beacon if your light donââ\\x80â\\x99t shine',\n", - " '(repeat chorus)',\n", - " 'how can you ask a child to be honest and true?',\n", - " 'when he can only judge whatââ\\x80â\\x99s right by what he sees in you',\n", - " 'how can you offer vision, yet walk around blind',\n", - " 'no you canââ\\x80â\\x99t be a beacon if your light donââ\\x80â\\x99t shine',\n", - " '(repeat chorus)',\n", - " 'break, break, break',\n", - " 'take a break , break, break',\n", - " 'take a break , break, break',\n", - " 'take a break , break, break this color',\n", - " 'take up your back',\n", - " 'and get away from here',\n", - " \"we will be there if you don't care\",\n", - " \"you don't know my telephone number\",\n", - " \"call my name and i'll be there\",\n", - " 'break, break, break',\n", - " 'take a break , break, break',\n", - " 'take a break , break, break',\n", - " 'take a break , break, break this color, this color',\n", - " 'break, break, break',\n", - " 'take a fucking break',\n", - " 'take a break , break, break',\n", - " 'take a break , break, break this color, this color',\n", - " 'can i, can i, can i, can i, can i',\n", - " 'can i, can i, can i, can i, can i be your eyes?',\n", - " '(entonces por qué me decís que lo haga otra vez?)',\n", - " 'break, break, break',\n", - " 'take a fucking break',\n", - " 'palo palo palo palo palo',\n", - " 'palo palo palo palo palo mi tas',\n", - " '(no estás grabando, no?)',\n", - " 'take up your back',\n", - " 'and get away from here',\n", - " \"you don't know my telephone number\",\n", - " \"you don't know my telephone number\",\n", - " 'looking for love',\n", - " 'negai o komete (every night)',\n", - " 'dekirusa (you can make it)',\n", - " 'jibun o shinjite',\n", - " 'imakara mukae ni ikunda',\n", - " 'uh baby dare nimo maketakunainda',\n", - " \"don't give up kore ga saigo no koisa\",\n", - " 'furueru my heart kakeruyo ride on now',\n", - " 'egaita mirai e sokkou',\n", - " 'imasugu chokkou mukauyo',\n", - " 'ready go',\n", - " 'mukauyo ready go!',\n", - " 'tonight tonight kanarazu',\n", - " \"lovin' lovin' lovin' you\",\n", - " 'tsunaida te to te o gyutto',\n", - " 'nigiruyo zutto futari wa get on',\n", - " 'so keep on keep on chikauyo',\n", - " 'oh yeah yeah yeah',\n", - " 'doushiyoumonai youna',\n", - " 'surechigai mo arusa',\n", - " 'toki ni namida datte afurerumonsa',\n", - " 'demo norikoeru tabini',\n", - " 'tsuyoku narenda',\n", - " 'kimi to tsunagu migite',\n", - " \"kiite nandemo i don't care\",\n", - " \"muteki ni nareru i'm your man\",\n", - " 'unmei kanjita face to face',\n", - " 'kimo to dokomademo go new days',\n", - " 'afuredasu omoi todoke',\n", - " 'go ready go sou futari no',\n", - " 'ultra love itsumademo oh',\n", - " 'hajimete kanjita unmei',\n", - " 'shinjite kenmei anata e oneway',\n", - " 'try try itsudemo',\n", - " \"lovin' lovin' lovin' you\",\n", - " 'deaeta kiseki wa kitto',\n", - " 'unmei motto kagayake get on',\n", - " 'so keep on keep on sukitesa',\n", - " 'oh yeah yeah yeah',\n", - " 'love love love ultra love oh...',\n", - " 'love lovelove ultra love',\n", - " 'ultra lover loverlover love',\n", - " 'hanasanai itsumo',\n", - " 'sobo ni ite mamoritai',\n", - " 'egaita mirai e sokkou',\n", - " 'imasugu chokkou',\n", - " 'mukauyo ready go',\n", - " 'tonight tonight kanarazu',\n", - " \"lovin' lovin' lovin' you\",\n", - " 'tsunaida te to te o gyutto',\n", - " 'nigiruyo zutto futari wa get on',\n", - " 'so keep on keep on',\n", - " 'chikauyo oh yeah yeahyeah',\n", - " 'scindi, torte vi yo',\n", - " 'vije e ja, va mi ture',\n", - " 'farolos e ran, seki tuna',\n", - " 'ka li tule',\n", - " 'crevi omne novi some',\n", - " 'tu, mon eramis',\n", - " 'desin tela',\n", - " 'move ad va, tiyo',\n", - " 'munera fara',\n", - " 'stir antero',\n", - " 'haranten no, saeve',\n", - " 'sere muna, vorrina',\n", - " 'sere muna, vorrina',\n", - " 'halay (halay, halay)',\n", - " 'soke brena',\n", - " 'ful madon ne',\n", - " 'unom laso',\n", - " 'gra cordia no',\n", - " 'vida scila',\n", - " 'senten tina',\n", - " 'praevi ame, so ka tavia some',\n", - " 'tu, mon eramis',\n", - " 'desin tela',\n", - " 'move ad va, tiyo',\n", - " 'munera fara',\n", - " 'stir antero',\n", - " 'haranten no, saeve',\n", - " 'sere muna, vorrina',\n", - " 'sere muna, vorrina',\n", - " 'an usum ve',\n", - " 'chel lumena',\n", - " 'tu, mon eramis',\n", - " 'desin tela',\n", - " 'move ad va, tiyo',\n", - " 'munera fara',\n", - " 'stir antero',\n", - " 'haranten no, saeve',\n", - " 'sere muna, vorrina',\n", - " 'sere muna, vorrina',\n", - " 'yoyo honey singh hey. anirudh',\n", - " 'machan thoolu',\n", - " 'speed speed speed vaenum',\n", - " 'speed kaati poda nee',\n", - " 'late late late illama',\n", - " 'latestaga vada nee',\n", - " 'thakida thaka thimi thaalam thaan',\n", - " 'thaom tharikida melam thaan',\n", - " 'thakida thaka thimi thaalam thaan',\n", - " 'thaom tharikida melam thaan',\n", - " 'speed speed speed vaenum',\n", - " 'speed kaati poda nee',\n", - " 'late late late illama',\n", - " 'latestaga vada nee',\n", - " 'hey who this honey',\n", - " 'hey who is this. honey',\n", - " 'hey who is this',\n", - " 'who is this. who is this. honey',\n", - " 'hey who who who…?? who is this.?',\n", - " 'honey singh. ah unga aaya',\n", - " 'aada vaa? aha aada vaa?',\n", - " 'aha aada vaa? aha aada vaa?',\n", - " 'aha aada vaa? aha aada vaa?',\n", - " 'on the floor',\n", - " 'naalai endrum nam kaiyil illai',\n", - " 'naam yaarum devan kai bømmaigale',\n", - " 'èndraal køøda pøraadu nanba',\n", - " 'èndraikkum thøarkkaathu unmaigale',\n", - " 'husain bøltai pøl nillamal oødu',\n", - " 'gøld thedi varum',\n", - " 'unthan vaazhviruku olympicai pølae',\n", - " 'vaervai vetri tharum',\n", - " 'naangal rishiyum illai',\n", - " 'oru kushiyil šønnaøm',\n", - " 'pudicha pudidaa',\n", - " 'èthir neechal adi. vendru aethukødi',\n", - " 'ada jølly. namma vaali',\n", - " 'namma vaali',\n", - " 'machan thøølu',\n", - " 'èthir neechal adi. vendru aethukødi',\n", - " 'ada jølly ah vaali šønna padi',\n", - " 'èthir neechal adi. vendru aethukødi',\n", - " 'ada jølly ah vaali šønna padi',\n", - " 'hey vaada machi adichu paakalam èthirneechal',\n", - " 'yøyø høney šingh hey',\n", - " \"ha ha. i'm gøing døwn baby\",\n", - " 'deep døwn tø the šøuth',\n", - " 'onnu rendu møønu',\n", - " \"utaale apna phøne'nu\",\n", - " \"bajrehihey teri baby kølaveri tune'nu\",\n", - " 'frøm mumbai tø marina',\n", - " 'asin še le ke kareena',\n", - " 'šab ke bbm ke bing',\n", - " 'hey whø is this? hip høp tamizhan',\n", - " 'welcøme tø chennai. ènga oøru',\n", - " 'intha oørukula, naanga thaaru maaru',\n", - " \"first'tu vaathiyaaru avar šuperstar'ru\",\n", - " \"kavithai ku yaaru bharathiyaar'ru\",\n", - " 'ènglish padathula this is šparta',\n", - " 'ithu tamil padam athanala adrangø ****',\n", - " 'ènga kitta vachukitta avalavuthaan',\n", - " 'ènglish paesinaalum tamizhan daa',\n", - " 'jhør laga ke hai',\n", - " 'jhør lage ke hai',\n", - " 'machi are yøu ready ah',\n", - " 'jhør lage ke hai',\n", - " 'machi are yøu ready ah',\n", - " 'jhør lage ke hai',\n", - " 'machi are yøu ready ah',\n", - " 'machi are yøu ready ah',\n", - " 'èthir neechal adi. vendru aethukødi',\n", - " 'ada jølly. namma vaali',\n", - " 'èthir neechal adi. vendru aethukødi',\n", - " 'ada jølly ah vaali šønna padi',\n", - " 'èthir neechal adi. vendru aethukødi',\n", - " 'ada jølly ah vaali šønna padi',\n", - " 'èthir neechal adi. vendru aethukødi',\n", - " 'ada jølly ah vaali šønna padi',\n", - " 'èthir neechal adi. vendru aethukødi',\n", - " 'ada jølly ah vaali šønna padi',\n", - " 'pace, bigazzi, savio',\n", - " 'mmmmm… ai lov iu, seven ileven',\n", - " 'in the beautiful trek, in the seven sanfransisc',\n", - " 'ai lov yu, tu yu dobermann',\n", - " 'rockeroll stu vidll stu faije mi, and twist yo faiar da fè',\n", - " 'and the travel wor, and the biutiful wor',\n", - " 'mmmmm… loven, seven worken fair',\n", - " 'in the loven spaghen spin wel',\n", - " 'cicu cicu uan, cicu cicu uan. an lovin spai',\n", - " \"bubabal allavanain, ailaven stev'uavall lain\",\n", - " 'rubalà, fainanais, ivomall, lovem yu',\n", - " \"ande lovin' yu. ai mall a stavam uehen bailam o stail\",\n", - " 'inde loive stain. ala uolo main, uochen gaga. mas tuò…',\n", - " \"ain… ain… ai… ai' 'o pere…\",\n", - " \"uan lain' staind uochen, and biutiful, end biutiful lail lavyu\",\n", - " 'ai lavu yu, rock',\n", - " 'birì bu ba, birì bu ba. bail fain lavyu',\n", - " 'in the stauel mi, for yu, for yu, for yu for mi',\n", - " 'ai randiu, ai randiu',\n", - " 'well com tu in bainait',\n", - " 'aia. aia. aia',\n", - " 'uen for',\n", - " 'body cult please fuego burns me , escapelo cuts me mummy-donkey-kong , mamy-donkey-kong',\n", - " 'i wanna be a \" cyro-plastic-shiny-beauty-boy \"',\n", - " 'cut me hoy',\n", - " 'i stand still',\n", - " \"it's not a big deal\",\n", - " \"it's not a big deal\",\n", - " 'fuego burns me , escapelo cuts me mummy-donkey-kong , mamy-donkey-kong',\n", - " 'i wanna be a \" zero-plastic-shiny-beauty-boy \"',\n", - " 'cut me hoy',\n", - " 'i stand still',\n", - " \"it's not a big deal\",\n", - " \"that's a nice operation\",\n", - " 'see my body is sexy',\n", - " 'así, como todas da mutaz here',\n", - " 'see my body is sexy ainsi',\n", - " 'pardon me anata o mi teru to crazy',\n", - " 'suddenly ano toki deau made',\n", - " 'tōi ohanashi no yō ne oh yeah',\n", - " 'gin no messhu ni wa tsumetai kaze oh yeah',\n", - " 'sabishī kimochi wa tada kimagure ni',\n", - " 'hito no yasashi-sa ubau kanashī one man dance ow!',\n", - " 'is it true',\n", - " 'shinji rarenai koto yo oh baby',\n", - " 'i see you',\n", - " 'anata ni kagayaku my eyes',\n", - " 'wish i know',\n", - " 'kokoro ga hodokete yuku oh baby',\n", - " 'is it true',\n", - " 'anata no ude no naka uh!',\n", - " 'la la la la...',\n", - " 'is it true, is it true',\n", - " 'la la la la... uh!',\n", - " 'holding back ai ga afurete kuru oh baby',\n", - " 'watashi kawatte yuku no yo ima uh - uh!',\n", - " 'dareka o aisuru koto shittakara',\n", - " 'nidoto furimukanai kanashī one man dance ow!',\n", - " 'is it true',\n", - " 'shinji rarenai koto ne oh baby',\n", - " 'i see you',\n", - " 'anata ni tokimeku my eyes',\n", - " 'wish i knew',\n", - " 'namida ga kawaite yuku oh baby',\n", - " 'is it true',\n", - " 'anata no ude no naka uh!',\n", - " 'la la la la...',\n", - " 'is it true, is it true',\n", - " 'la la la la... uh!',\n", - " 'sabishī kimochi wa tada kimagure ni',\n", - " 'hito no yasashi-sa ubau kanashī one man dance ow!',\n", - " 'is it true',\n", - " 'shinji rarenai koto yo oh baby',\n", - " 'i see you',\n", - " 'anata ni kagayaku my eyes',\n", - " 'wish i know',\n", - " 'kokoro ga hodokete yuku oh baby',\n", - " 'is it true',\n", - " 'anata no ude no naka yeah!',\n", - " 'la la la la...',\n", - " 'is it true, is it true',\n", - " 'la la la la... oh baby',\n", - " \"a 'lè parej, i lo savia ch'a l'è propi parej\",\n", - " \"noi i soma 'n pòpol 'na rassa ch'a l'ha sempre viagià\",\n", - " 'deserti, aquasse e ostacoj impossibil superà',\n", - " 'e varie strasordinarie ingiustissie consumà',\n", - " \"a l'è parej, pija l'esempi dij primi ani dël secol\",\n", - " \"quand ij nòstri viagiator a s'as ciamavo pionieri\",\n", - " 'famije ëd mil pais dëspaisà',\n", - " 'a fasìo tapa forsà a ellis island',\n", - " 'chicanos, macarones, cinesi a little italy!',\n", - " \"ellis island cit isolòt e cancher 'd nueva yòrk\",\n", - " 'limbo disperà dla neuva america',\n", - " 'tanti milion, tante speranse',\n", - " \"speranse d'ambrochè\",\n", - " \"l'intrada për la piramida malefica\",\n", - " 'chicanos, macarones, cinesi a little italy',\n", - " \"what's your name, what's your name?\",\n", - " 'welcome to america, do you understand me?',\n", - " 'where do you come from, where do you wanna go?',\n", - " 'andoma bin, che le strà a son bin longhe',\n", - " \"e che 'l travaj a nobilita l'argheui\",\n", - " \"s'as ciama boom boom boom boom economico\",\n", - " \"ch'a saria l'invension\",\n", - " \"l'invension la pì perfida\",\n", - " \"a l'è parej, a son passà pì che otant'ani\",\n", - " \"e le aventure 'd cola gent\",\n", - " 'a son profonde eredità',\n", - " 'a son deli deli deli delicatësse',\n", - " 'mës-cià a la naftalin-a dij nòstri armari',\n", - " 'chicanos, macarones, cinesi a little italy',\n", - " \"what's your name, what's your name?\",\n", - " 'welcome to america',\n", - " 'do you understand me?',\n", - " 'where do you come from',\n", - " 'where do you wanna go?',\n", - " 'welcome....',\n", - " '(down down, ooh down low',\n", - " 'nah',\n", - " 'down down, ooh down low',\n", - " 'dagger bass',\n", - " 'down down, ooh down low)',\n", - " 'demaro, bad gyal',\n", - " 'the way you move (cómo me mira me mata)',\n", - " 'you got me in the groove (cómo me mira me mata)',\n", - " 'got so many things i wanna do for you',\n", - " 'got so many plans i wanna do with you, leggo',\n", - " 'cuando bailo te causo commotion',\n", - " 'yo lo muevo, me agarras el pantalón',\n", - " 'cuando bailo te causo commotion, motion, motion',\n", - " 'mi baby, lo muevo',\n", - " 'tú quieres, yo quiero, ah - (vamos a hacerlo los dos)',\n", - " 'let me bend mi back so you can feel my bumper',\n", - " 'no querrás a otra, prueba, let me be your gyal, eh, boy',\n", - " \"i've no time to look your face, girl (i've no time to look your face, boy)\",\n", - " 'yeah, my eyes is on your waist, yeah',\n", - " 'the way you move (cómo me mira me mata)',\n", - " 'you got me in the groove (cómo me mira me mata)',\n", - " 'got so many things i wanna do for you',\n", - " 'got so many plans i wanna do with you, leggo',\n", - " 'cuando bailo te causo commotion',\n", - " 'yo lo muevo, me agarras el pantalón',\n", - " 'cuando bailo te causo commotion, motion, motion',\n", - " 'move your body to the floor',\n", - " 'let me see your booty roll',\n", - " 'let me blow my money',\n", - " 'make my head explode',\n", - " 'oh my god, she got my body and soul',\n", - " 'she charge my battery up',\n", - " 'she got me under control',\n", - " 'si quieres lo muevo hasta el suelo',\n", - " 'te parecerá que eso es sexo',\n", - " \"you've never seen a mami like me\",\n", - " 'si tú quieres te lo enseño',\n", - " \"come drive me, i'll show you my dancehall romantic\",\n", - " 'boy, i got you in commotion',\n", - " 'go down low, gyal, go down low',\n", - " 'nothing to you, gyal, go down low',\n", - " 'straight to youtube when ya go down low',\n", - " 'a million views when ya go down low',\n", - " 'go down low, gyal, go down low',\n", - " 'nothing to you, gyal, go down low',\n", - " 'a million views when ya go down low',\n", - " 'straight to youtube when ya go down low',\n", - " 'the way you move (cómo me mira me mata)',\n", - " 'you got me in the groove (cómo me mira me mata)',\n", - " 'got so many things i wanna do for you',\n", - " 'got so many plans i wanna do with you, leggo',\n", - " 'cuando bailo te causo commotion',\n", - " 'yo lo muevo, me agarras el pantalón',\n", - " 'cuando bailo te causo commotion, motion, motion',\n", - " 'down down, ooh down low',\n", - " 'down down, ooh down low',\n", - " 'down down, ooh down low',\n", - " 'down down, ooh down low',\n", - " 'down down, ooh down low',\n", - " 'down down, ooh down low',\n", - " 'down down, ooh down low',\n", - " 'down down, ooh down low',\n", - " 'agárralo, boy',\n", - " '`ôpae ê, `ôpae ho`i',\n", - " 'shrimp, shrimp return',\n", - " 'ua hele mai au, ua hele mai au',\n", - " 'i am coming hither, i am coming hither',\n", - " 'na kuahine*',\n", - " 'for sister',\n", - " 'hui: / chorus:',\n", - " 'aia wai, aia puhi',\n", - " \"there's water, there's eel\",\n", - " 'nui `o puhi a li`i li`i au',\n", - " 'big (is) eel and little (is) me',\n", - " 'a`ole loa',\n", - " 'absolutely not',\n", - " 'pûpû ê, pûpû ho`i',\n", - " 'shellfish, shellfish return',\n", - " 'ua hele mai au, ua hele mai au',\n", - " 'i am coming hither, i am coming hither',\n", - " 'na kuahine',\n", - " 'for sister',\n", - " '(e hana hou i ka hui)',\n", - " '(repeat chorus)',\n", - " \"kûpe`e ê, kûpe`e ho'i\",\n", - " 'sea snail, sea snail return',\n", - " 'ua hele mai au, ua hele mai au',\n", - " 'i am coming hither, i am coming hither',\n", - " 'na kuahine',\n", - " 'for sister',\n", - " \"'opihi ê, 'opihi ho'i\",\n", - " 'limpet, limpet return',\n", - " 'ua hele mai au, ua hele mai au',\n", - " 'i am coming hither, i am coming hither',\n", - " 'na kuahine',\n", - " 'for sister',\n", - " \"mai maka'u, na'u e pani\",\n", - " \"(i'm) not afraid, for me to block/cover\",\n", - " 'i ka maka a `ike `ole',\n", - " 'the eyes ( of the puhi so he) cannot see',\n", - " 'kêlâ puhi',\n", - " 'that eel',\n", - " '*kuahine = sister of a brother, pronunciation of \"k\"',\n", - " 'can vary from a k-sound to a t-sound',\n", - " \"* kon'ya kitto dare mo shiranai\",\n", - " 'yakusoku sareta itoshisa tsunagaru',\n", - " 'black moon kage ni kakure nozokikomu',\n", - " 'wake nante nan ni mo iranai kara',\n", - " '** tokeau you ni dakiatte iyou',\n", - " 'museru kurai kiss wo zutto shitai yo',\n", - " 'kimegoto nante plain ja nai ne',\n", - " 'ma no nagai love dream toki wo tometa',\n", - " 'atama de kangaekomu to',\n", - " \"doushitemo tsutawan'nai kara\",\n", - " 'wakideru heart zutto himeta mama',\n", - " 'sutoreeto na lonely sumuuzu ni ne',\n", - " 'doushiyou mo naku nitemo sametemo',\n", - " 'hashiru itami watashi wo komoraseta',\n", - " 'tobira akenai-tte kimeta hi ni',\n", - " 'sugu ni koe amattareta ne',\n", - " 'aoi umi to anata dakishimete',\n", - " 'zenzen toki wa nanigenaku sugite-tte',\n", - " 'kaze ni yureru fuan mo joke mo',\n", - " 'futari no kokoro wo motto hikiyoseta',\n", - " \"it's so plain & simple like a dream\",\n", - " 'like a dream',\n", - " '** repeat',\n", - " '* repeat',\n", - " 'kawaranai mainichi ga nanigenaku sugite yuku',\n", - " 'tokibetsuna fuman mo nai kedo mirakuru mo nai',\n", - " 'sore wa maybe dorai na jibun',\n", - " '(sagen na tention ugokidashite revolution',\n", - " 'nukedasou konna hibi gimme your special)',\n", - " 'yareru koto wo konashite mata jikan ni owarete',\n", - " 'aji no nai gamu no youna hibi ni akitekiteru nara',\n", - " 'hakisutete make the new world',\n", - " '(kinou no cry nante kyou wa kankeinai for life)',\n", - " 'mikanseina style sonna njanai',\n", - " 'afuredasu sono kimoshi wo misete yo',\n", - " 'parade parade (gimme the wing)',\n", - " 'parade parade (gimme the chance)',\n", - " 'mabushii mirai sagashiteru jidai (parade)',\n", - " 'parade parade (gimme the wing)',\n", - " 'parade parade (gimme the chance)',\n", - " 'hitori janai kono michi step by step',\n", - " 'majime ni yari sugoshite sukoshi tsukareta fuzzy days',\n", - " 'omou youni yarezu ni hiza wo kakaeteru nara',\n", - " 'imasugu ni break on the world',\n", - " '(kinou no cry nante kyou wa kankeinai for life)',\n", - " 'aimaina style sonna njakarai',\n", - " 'kakureteru sono kimochi wo misete yo',\n", - " 'parade parade (gimme the wing)',\n", - " 'parade parade (gimme the chance)',\n", - " 'mabushii sekai shinjiteru jidai (parade)',\n", - " 'parade parade (gimme the wing)',\n", - " 'parade parade (gimme the chance)',\n", - " 'tsunagatteru ashita he say \"hello\"',\n", - " 'parade parade parade parade',\n", - " 'mabushii mirai sagashiteru jidai',\n", - " 'parade parade parade parade',\n", - " 'hitori janai kono michi step by step',\n", - " 'parade parade (gimme the wing)',\n", - " 'parade parade (gimme the chance)',\n", - " 'mabushii sekai shinjiteru jidai (parade)',\n", - " 'parade parade (gimme the wing)',\n", - " 'parade parade (gimme the chance)',\n", - " 'hitori janai kono michi step by step',\n", - " 'tsunagatteru ashita he say \"hello\"',\n", - " 'ah itsumo to kawara nai yokei na fuan ha tsukue no oku ni kakushi te oko u',\n", - " 'mado no soto mitsume te omoi fukeru 『koko kara nukede sou!!』',\n", - " 'uh!ore sama wa real na sk8er!! studs to vans de hard core na flavor!!',\n", - " 'dare mo ore ni wa kate yashi ne~ na! step up×2!!',\n", - " 'kakatte ki na hoeru sk8ers!!',\n", - " 'asawaka na nori ja tobe nai taka sa o baka na nakama to tobikoe tekita nosa!',\n", - " 'mazuha tsuyoku fumikon de kick it!! 3 2 1 go!!',\n", - " 'kono mama zutto kaze ni notte doko e ikeru kana ?',\n", - " 'hare ta sora ni tsukisasaru boku no omoi',\n", - " 'kodomo no koro egai teta yume wa too sugiru kedo',\n", - " 'akirame nai de negai o nigirishime te!!',\n", - " \"a-yo check this shit out!! i'm spittin' my verse!!\",\n", - " 'my rhyme like a kick flip!! tech de bibira su!!',\n", - " 'hibikasu kotae o miidasu but 『matomo ni nare!!』 nante oya wa iidasu!',\n", - " 'matomo ttenan ?? ore no jisho ni wa nai!',\n", - " 'street na koto nara i know migihidari! yumemi tari trick kime tari',\n", - " 'i just wanna be stay as a sk8 junkee!!',\n", - " \"what's da point of livin' right?? imi wakan nai!\",\n", - " 'i.d.g.a.f!! waruagaki!',\n", - " 'tada deka i kaze o tsukami tai! takai takai toko e tonde ikitai',\n", - " 'i wanna fly & feel the wind! kore ni toriko bakani saretatte oreteki ni wa hit!!',\n", - " \"fuan nante itsu de mo aru! but i ain't growin' up!! kono mama de i tai!!\",\n", - " 'kono mama zutto kaze ni nore zu koko de owaru no ka na ?',\n", - " 'kono mama zutto… korekara kitto…',\n", - " 'kono mama zutto kaze ni notte doko e ikeru kana ?',\n", - " 'hare ta sora ni tsukisasaru boku no omoi',\n", - " 'kodomo no koro egai teta yume wa too sugiru kedo',\n", - " 'akirame nai de negai o nigirishime te!!',\n", - " 'to each their own but you should listen to me',\n", - " 'sometimes youäºve got to fight to be free',\n", - " 'but iäºll stifle the hope and iäºll fight the sorrow',\n", - " 'always seeking unity for a better tomorrow',\n", - " 'itäºs so easy to give up on all of your dreams',\n", - " 'to become distracted by all the little things',\n", - " 'before you know it, youäºve gotten quite old',\n", - " 'itäºs time to hope that youäºve got a soul',\n", - " 'and if you do you hope that they will see',\n", - " 'not to judge you by all your apathy',\n", - " 'another human afraid to live',\n", - " 'quick to take, reluctant to give',\n", - " \"teaching your hate 'cause loveäºs harder to give\",\n", - " 'itäºs all about me and iäºll kill you to live',\n", - " 'i keep on fighting these habits of clay',\n", - " 'it just gets more painful every day',\n", - " 'feel like youäºre sinking into a tar pit',\n", - " 'youäºre an infant, reclaim your tit',\n", - " 'apathetic i want more of the same',\n", - " 'getting good at playing this bullshit game',\n", - " 'i donäºt want to die, it scares me a lot',\n", - " 'if god is a lie, am i going to rot?',\n", - " 'another human whoäºs afraid to live',\n", - " 'always quick to take, but reluctant to give',\n", - " \"teaching your hate 'cause loveäºs harder to give\",\n", - " 'itäºs all about me and iäºll kill you to live',\n", - " 'hadi mouda ma hawi',\n", - " 'akhbi macha3ri mn zaman',\n", - " 'wlaw kan cho3orek zyii yb2a',\n", - " 'yala habibib come-on',\n", - " 'yala habiba oooon',\n", - " 'yala habiba oooon',\n", - " 'ya3iiini',\n", - " 'yala habiba oooon',\n", - " \"let's love baby\",\n", - " 'kolina nsa 3andina ihsas',\n", - " 'ihsas ktiiir mnedih',\n", - " 'fahmani sugar',\n", - " 'men awal matkhala9na yala ne3iiich',\n", - " 'i love you',\n", - " 'laaa mouch magnon ini ahbek',\n", - " 'mouch magnooon laaa',\n", - " 'adini hobek marah moch haram if your love is tru',\n", - " 'yala habiba oooon',\n", - " 'ya3iiini',\n", - " 'yala habiba oooon soukaaar',\n", - " \"let's love baby\",\n", - " 'everybody! gather round!',\n", - " 'rango dance! going down! whup! uh!',\n", - " 'funky, funky monkey! (huh! huh! huh!)',\n", - " \"funky, funky monkey! (whatch-ya doin'?)\",\n", - " 'funky, funky monkey! (huh! huh! huh!)',\n", - " \"funky, funky monkey! (whatch-ya doin'?)\",\n", - " \"it don' matta! who ya know!\",\n", - " 'you can do it! gather round!',\n", - " 'move ya body! to the beat!',\n", - " \"an' let monkey body move ya funky feet!\",\n", - " \"(and ya like it 'cause it feels so good! so good!)\",\n", - " 'funky, funky monkey! (huh! huh! huh!)',\n", - " 'funky, funky monkey!',\n", - " 'todo mundo tá dançando o funk do macaquinho',\n", - " 'você dá um assovio e balança o rabinho',\n", - " 'kyu kyu, kyu kyu kyu',\n", - " 'kyu kyu, kyu kyu kyu',\n", - " 'como banana, biscoito e engulo caroço até me engasgar',\n", - " 'faço minhas macacadas, rolou batucada eu vou me acabar',\n", - " 'bolsa brilhante, relógio, não marque bobeira que eu pego pra mim',\n", - " 'vamos plantar bananeira, jogar capoeira cantando assim: ae, ae! (monkey noises)',\n", - " 'funky, funky monkey!',\n", - " \"it don' matta! who ya know! you can do it! (hey! hey!) gather round!\",\n", - " 'move ya body! (hey! hey!) all around! (purunpun-pá)',\n", - " 'i think you threw something stinky on the ground! (butch-ya like it',\n", - " \"'cause it smells so good to ya!)\",\n", - " 'funky, funky monkey!',\n", - " 'funky, funky monkey! (todo mundo tá dançando)',\n", - " 'funky, funky monkey!',\n", - " 'funky, funky monkey!',\n", - " '(monkey noises)',\n", - " 'oh lord have mercy (kidi)',\n", - " \"let's go\",\n", - " 'ɔdɔ a me dɔ wu nti ye se ma bɔdam',\n", - " 'oh baby girl',\n", - " 'you know you got the juice',\n", - " 'you got the fire (fire fire)',\n", - " \"'cause one man's meat is another man's poison\",\n", - " 'to all the people wey do me wrong oh',\n", - " 'oh they led me straight to you (mɛ daa sɛ)',\n", - " 'i wonder if you',\n", - " 'you think say i go leave you (shaga wɛlɛ)',\n", - " 'mɛ nya wu dɔ i diɛ',\n", - " \"girl i'm here to stay\",\n", - " 'love oh',\n", - " 'if i leave you',\n", - " 'make thunder fire me',\n", - " 'thunder fire fire fire',\n", - " 'baby if i leave you',\n", - " 'make thunder fire me',\n", - " 'thunder fire fire oh fire',\n", - " 'see, i go fight for your love',\n", - " 'i go, go war for your love',\n", - " 'i go give up on my girls for your love',\n", - " 'yes lord',\n", - " 'ɔdɔ a me dɔ wu nti ye se ma jimi',\n", - " 'oh baby girl',\n", - " 'ɛnyɛ frɛ mɛ otoo lɛgɛ',\n", - " 'me yɛ wu too lɛgɛ, lɛgɛ',\n", - " 'mɛ ni daso a nyinaa ni wo, me dear',\n", - " 'nobody but you you you you you',\n", - " 'na na na (ɛnyɛ wo dɛ?)',\n", - " 'i wonder if you',\n", - " 'you think say i go leave you (shaga wɛlɛ)',\n", - " 'mɛ nya wu dɔ diɛ',\n", - " \"girl i'm here to stay\",\n", - " 'love oh',\n", - " 'if i leave you',\n", - " 'make thunder fire me',\n", - " 'thunder fire fire fire',\n", - " 'baby if i leave you',\n", - " 'make thunder fire me',\n", - " 'thunder fire fire oh fire',\n", - " 'see, i go fight for your love',\n", - " 'i go, go war for your love',\n", - " 'i go give up on my girls for your love',\n", - " 'yes lord',\n", - " 'see, i go fight for your love',\n", - " 'i go, go war for your love',\n", - " 'i go give up on my girls for your love',\n", - " 'yes lord',\n", - " 'if i leave you',\n", - " 'make thunder fire me',\n", - " 'thunder fire fire fire',\n", - " 'baby if i leave you',\n", - " '(never ever leave my baby oh)',\n", - " 'make thunder fire me',\n", - " 'thunder fire fire oh fire',\n", - " '(never ever leave my baby oh) x2',\n", - " 'if i leave you',\n", - " 'make thunder fire me',\n", - " '(make thunder fire fire)',\n", - " 'thunder fire fire fire',\n", - " '(me dear)',\n", - " 'baby if i leave you',\n", - " '(oh no no no)',\n", - " 'make thunder fire me',\n", - " '(make thunder fire fire)',\n", - " 'thunder fire fire oh fire',\n", - " ...]},\n", - " 'data': ['nareul chajawa if you want a good time',\n", - " 'i’ma bad boy but at heart i’ma good guy',\n", - " 'nae nuneun neohante gojeong',\n", - " 'neogseul noko isseo meong ttaerineun pyojeong',\n", - " 'potosyabeun pillyo eomneun sjsms mubojeong',\n", - " 'nolgo sipeumyeon then baby come on',\n", - " 'naneun chwihaegago isseo ne mommaeneun sulsul',\n", - " 'dwaeji anijiman neoui heobeokjineun kkulkkul',\n", - " 'geunyang heulleogabwa jigeum bunwigineun mulmul',\n", - " 'mwol gumneun geon anijiman baby neoneun bulbul hot',\n", - " 'neoneun bulbul hot',\n", - " 'neoneun bulbul hot',\n", - " 'jigeum anideorado najunge kkok nareul chajawabwa girl',\n", - " 'nareul chajawa if you want a good time',\n", - " 'nareul chajawa if you want a good time',\n", - " 'nareul chaja wa if you want a good time',\n", - " 'hell yeah here we go',\n", - " 'rideum ta just like a rodeo',\n", - " 'ne ot seutail apgujeong rodeo',\n", - " 'neoui heorinollim got me like woah',\n", - " 'got me like woah',\n", - " 'nunchi ttawi boji malgo',\n", - " 'eumagi kkeojideorado',\n", - " 'jibe galkka hell no',\n", - " 'siseuta neun anijiman neoneun sso kulkul',\n", - " 'neoneun nae geongange joha beibi neoneun gyulgyul',\n", - " 'neoreul mure tamyeon geureom geugeon baro kkulmul',\n", - " 'migugeseo sseuneun doncheoreom neoneun bulbul hot',\n", - " 'neoneun bulbul hot',\n", - " 'neoneun bulbul hot',\n", - " 'jigeum anideorado najunge kkok nareul chajawabwa girl',\n", - " 'nareul chajawa if you want a good time',\n", - " 'nareul chajawa if you want a good time',\n", - " 'nareul chajawa if you want a good time',\n", - " 'yeah nonggugongcheoreom bounce',\n", - " 'yeah teniseugongcheoreom bounce',\n", - " 'yeah bollinggongcheoreom jamkkan',\n", - " 'bollinggongeun twinggil su eobseo geureoda mwon tteusinyamyeon michyeobeoryeo',\n", - " 'julleomgihaneun geotcheoreom everybody jump jump',\n", - " 'julleomgihaneun geotcheoreom everybody jump jump',\n", - " 'modu sureul wonsyat haesseo man again drop drop',\n", - " 'jeongsinjureul nwabeoryeo beoryeo we gain dump dump',\n", - " 'nareul chajawa if you want a good time',\n", - " 'nareul chajawa if you want a good time',\n", - " 'nareul chajawa if you want a good time',\n", - " 'hey boy!... okey dokey duck!!!',\n", - " 'hey girl!... okey dokey duck!!!',\n", - " 'esta no es una historia comun pero es mi historia, (se que) no es una historia real pero esta es (al fin y al cabo) mi fragil historia',\n", - " 'hey boy!... okey dokey duck!!!',\n", - " 'picture picture ohh...',\n", - " 'picture picture ohh...',\n", - " 'picture picture ohh...',\n", - " 'picture picture ohh...',\n", - " 'picture picture ohh...',\n", - " 'picture picture',\n", - " 'picture picture ohh...',\n", - " 'picture picture ohh...',\n", - " 'picture picture',\n", - " 'picture picture ohh...',\n", - " 'mang gabing masilayan ka...',\n", - " 'dala-dala ko pa',\n", - " 'ang aking lumang camera',\n", - " 'picture picture ohh...',\n", - " 'picture picture',\n", - " 'picture picture ohh...',\n", - " 'picture picture ohh...',\n", - " 'picture picture',\n", - " 'picture picture ohh...',\n", - " 'campus gig nun at nag-aya ang tropa',\n", - " 'maraming bebot ang nagsasayaw',\n", - " 'nang biglang mapansin kita',\n", - " 'what a beautiful face',\n", - " 'at kinunan kita',\n", - " 'what a beautiful face',\n", - " 'angat ka sa iba',\n", - " 'picture picture ohh...',\n", - " 'picture picture',\n", - " 'picture picture ohh...',\n", - " 'picture picture',\n", - " 'what a beautiful',\n", - " 'what a beautiful face',\n", - " 'i saw her face',\n", - " 'mukha syang taga-a a outerspace',\n", - " \"si mang roger ako'y kinalabit\",\n", - " 'ang sabi',\n", - " 'halika na balot muna',\n", - " 'bago ka mag-konica',\n", - " 'na seramika gawa sa pabrika',\n", - " 'lagot ka na ang kamera may mahika',\n", - " 'ano ang lohika kung bat nahilo ka',\n", - " 'mekaniko si moniko ng makina ni monika',\n", - " 'what a beautiful face',\n", - " 'bigla kang nawala',\n", - " 'what a beautiful face',\n", - " \"ako'y natulala\",\n", - " 'picture picture ohh...',\n", - " 'picture picture',\n", - " 'picture picture ohh...',\n", - " 'picture picture',\n", - " 'what a beautiful',\n", - " 'what a beautiful face',\n", - " 'meron syang look alike na',\n", - " 'meron syang look alike na',\n", - " 'meron syang look alike na',\n", - " 'meron syang look alike na',\n", - " 'meron syang look alike na',\n", - " 'meron syang look alike na',\n", - " 'meron syang look alike na',\n", - " 'mekaniko si moniko ng makina ni monika',\n", - " 'what a beautiful face',\n", - " 'o nasaan ka na',\n", - " 'what a beautiful face',\n", - " 'hinahanap-hanap ka',\n", - " 'picture picture ohh...',\n", - " 'picture picture',\n", - " 'picture picture ohh...',\n", - " 'picture picture',\n", - " 'what a beautiful',\n", - " 'what a beautiful face...',\n", - " 'tu meri jaan ve kinni soni lagdi ki naam hai tu bb da toh pin fir dede',\n", - " 'meri akhan ve baby i can see you want me',\n", - " 'tonights the night you can be my soniye',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'aaja mere naal mere naal soniye nach ke dekhawan club da vich soniye',\n", - " 'aaja mere naal mere naal soniye nach ke dekhawan club da vich soniye',\n", - " 'ohhh wohooohoho',\n", - " '(tu meri jaan ve)',\n", - " 'i can be everything you want baby all you need to do is to send me a pic i can be your one and only',\n", - " 'tonights the night you can be my soniye',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'oye dil nahi rukh da meri jaan',\n", - " 'aaja mere naal mere naal soniye nach ke dekhawan club da vich soniye',\n", - " 'aaja mere naal mere naal soniye nach ke dekhawan club da vich soniye',\n", - " 'na so na so na so',\n", - " 'kiss daniel',\n", - " 'g-worldwide',\n", - " 'yeh',\n", - " 'nor be you i carry come',\n", - " 'but na you i go carry go',\n", - " 'sisi agbarigo eh ya',\n", - " 'yo wey',\n", - " 'nor be you i dey check on o',\n", - " 'but na you i wanna know know know know know',\n", - " 'sisi ferari o eh ya',\n", - " 'yo wey',\n", - " 'very sweet',\n", - " 'very nice',\n", - " 'baby tu di du di du',\n", - " 'odikwa tight (odikwa tight)',\n", - " \"sho' mo pe o sexy\",\n", - " 'ma lo rogo ya lo ni',\n", - " 'otun mo pe o de wa pa',\n", - " 'o wa fe ma buga si emi',\n", - " 'woju o',\n", - " 'le le le le le le le',\n", - " 'baby ko ya woju o',\n", - " 'le le le le le le',\n", - " 'ko ya woju o',\n", - " 'omo de yi le le le le le',\n", - " 'baby ko ya woju o',\n", - " 'la la la la la la',\n", - " 'nor be you i want to carry',\n", - " 'but na you i want to marry',\n", - " 'sisi agbarigo eh ya',\n", - " 'yo weh',\n", - " 'nor be you i dey give eye o',\n", - " 'but na you i want to give my life to',\n", - " 'baby o o',\n", - " 'very sweet',\n", - " 'very nice',\n", - " 'baby tu di du di du',\n", - " 'odikwa tight (odikwa tight)',\n", - " \"sho' mo pe o sexy\",\n", - " 'ma lo rogo ya lo ni',\n", - " 'otun mo pe o de wa pa',\n", - " 'o wa fe ma buga si emi',\n", - " 'woju o',\n", - " 'le le le le le le le',\n", - " 'baby ko ya woju o',\n", - " 'le le le le le le',\n", - " 'ko ya woju o',\n", - " 'omo de yi le le le le le',\n", - " 'baby ko ya woju o',\n", - " 'la la la la la la',\n", - " 'nor be you i carry come girl',\n", - " 'but na you i go carry go',\n", - " 'agbarigo o eh ya',\n", - " 'yo wey',\n", - " 'nor be you i dey check on o',\n", - " 'but na you i wanna know know know know know',\n", - " 'baby o',\n", - " 'yo wey',\n", - " 'very sweet',\n", - " 'very nice',\n", - " 'baby tu di du di du',\n", - " 'odikwa tight (odikwa tight)',\n", - " \"sho' mo pe o sexy\",\n", - " 'ma lo rogo ya lo ni',\n", - " 'otun mo pe o de wa pa',\n", - " 'o wa fe ma buga si emi',\n", - " 'woju o',\n", - " 'le le le le le le le',\n", - " 'baby ko ya woju o',\n", - " 'le le le le le le',\n", - " 'ko ya woju o',\n", - " 'omo de yi le le le le le',\n", - " 'baby ko ya woju o',\n", - " 'la la la la la la',\n", - " '(sheyman on the mix)',\n", - " 'your boy kiss e',\n", - " '(le le ma ma le le ma ma le le)',\n", - " 'so fun ko ya lo joko o',\n", - " '(le le ma ma le le ma ma le le)',\n", - " 'your boy kiss',\n", - " '(le le ma ma le le ma ma le le)',\n", - " \"so fun pe 'wa la l'eko\",\n", - " \"awa la l'eko\",\n", - " '(le le ma ma le le ma ma le)',\n", - " '(le le ma ma le le ma ma le le)',\n", - " '(le le ma ma le le ma ma le le)',\n", - " '(le le ma ma le le ma ma le le)',\n", - " \"so fun pe 'wa la l'eko\",\n", - " '(le le ma ma le le ma ma le le)',\n", - " 'its your boy kiss',\n", - " 'is it, ooh, uh',\n", - " \"he'll never speak of me\",\n", - " 'all that he needs from you— loving',\n", - " 'if this is\\u2060—',\n", - " \"he'll never speak of me\",\n", - " 'all that he needs from you— loving',\n", - " 'if this is\\u2060—',\n", - " '-up, you lay me down',\n", - " \"you know too much, i can't be proud\",\n", - " 'i still really, really want you, yes i do',\n", - " '(yes i do, i still, really, really)',\n", - " 'i still really, really want you, yes i do',\n", - " 'i still really, really want you, yes i do (yes i do)',\n", - " 'i still—',\n", - " '-up, you lay me down',\n", - " \"you know too much, i can't be proud\",\n", - " 'i still really, really want you, yes i do',\n", - " '(yes i do, i still, really, really)',\n", - " 'i still really, really want you, yes i do',\n", - " 'i still really, really want you, yes i do',\n", - " '(yes i do)',\n", - " 'i still-i-i-',\n", - " 'still want you — can i do',\n", - " \"if you can't\\u2060— i do\\u2060\",\n", - " 'still want\\u2060— can i do\\u2060',\n", - " \"if you can't -\",\n", - " 'i still want\\u2060— can i do',\n", - " \"if you can't\\u2060— i do\",\n", - " 'really, really want you, yes i do, mm, yeah',\n", - " 'lo que él quiere de ti, yo no se lo negaría',\n", - " \"si esto no me ha partío', ya no me partiré nunca\",\n", - " \"si puedo soportar lo que siento, ¿por qué me 'toy cayendo?\",\n", - " '¿acaso voy cayendo?',\n", - " 'oh, oh, oh (¿acaso voy cayendo?)',\n", - " 'oh, oh, oh (¿acaso voy cayendo?)',\n", - " 'oh, oh, oh (¿acaso voy cayendo?)',\n", - " 'oh, oh, oh (¿acaso voy cayendo?)',\n", - " 'philippines has a great history',\n", - " 'according to our geography',\n", - " 'manila is the capital city',\n", - " 'docking point from the other country',\n", - " 'metro manila, quezon city',\n", - " 'caloocan, pasay, makati',\n", - " 'marikina, pasig, zapote',\n", - " 'malabon, las piñas, parañaque',\n", - " 'from the north batanes, aparri',\n", - " 'ilocos sur, ilocos norte',\n", - " 'isabela, cagayan valley',\n", - " 'mountain province, la union, baguio city',\n", - " 'nueva ecija, nueva vizcaya',\n", - " 'tarlac, pangasinan, pampanga',\n", - " 'zambales, bataan, abra',\n", - " 'bulacan, cavite, batangas, laguna',\n", - " \"now let's go to the southern luzon\",\n", - " 'camarines norte, quezon',\n", - " 'albay, camarines sur',\n", - " 'catanduanes, masbate, sorsogon',\n", - " 'and we add three islands more',\n", - " 'mindoro, marinduque, romblon',\n", - " 'then down to visayan shore',\n", - " 'famous for its sugar, coconut and corn',\n", - " 'ayyeyeyeye pyeyeye yeyeye',\n", - " 'cebu, mactan, mandaue',\n", - " 'ayyeyeyeye pyeyeye yeyeye',\n", - " 'bohol, samar, leyte',\n", - " 'ayyeyeyeye pyeyeye yeyeye',\n", - " 'iloilo, capiz, aklan, antique',\n", - " 'palawan, negros, bacolod',\n", - " 'siquijor, dumaguete',\n", - " \"now let's go to the land of promise\",\n", - " 'the land of mindanao',\n", - " 'bukidnon, zamboanga, misamis',\n", - " 'mambajao, butuan, agusan, surigao',\n", - " 'cagayan de oro, iligan, ozamis',\n", - " 'and the three provinces of davao',\n", - " 'davao sur, oriental, del norte',\n", - " 'cotabato, lanao, sulu, tawi tawi',\n", - " 'ayyeyeyeye pyeyeye yeyeye',\n", - " 'philippines has a great history',\n", - " 'ayyeyeyeye pyeyeye yeyeye',\n", - " 'manila is the capital city',\n", - " 'ayyeyeyeye pyeyeye yeyeye',\n", - " 'all tourists are invited to see',\n", - " 'according to our geography philippines is a beautiful country...',\n", - " 'disturb! drive me fuck!',\n", - " 'drive me lady drive me violent¡¡gouin na kyuuin day',\n", - " 'drive me lady drive me violent ¡¡me ga kurami! so glamorous style de go!',\n", - " 'drive me lady drive me violent ¡¡voltage saidai nod',\n", - " 'tomaranai kanjou wo daite¡¡please shake it shake it now',\n", - " 'laser no youna shisen de¡¡mou kore ijou mitsumenai de',\n", - " 'sensou nara¡¡tokku ni horyo sa',\n", - " 'mainasu iimage no sensa¡ª crush sareru wink hitotsu de',\n", - " 'shime dzukeru g pan de¡¡sara ni escalate',\n", - " 'i¡¯m getting gesell schaft moron',\n", - " 'yuuwaku shinai dekure¡¡yuugaku shita kunacchau throw',\n", - " 'i¡¯m getting gesell schaft venus',\n", - " 'danteki honnou ga yuudoushiteku konyokufuro',\n", - " 'doushite mo tomerarenai tte 25th, no sexy motion',\n", - " 'kanzen ni keikakuteki na chinouhan',\n", - " 'oh no bure ki no mama tsubbashiru you are zippy hip',\n", - " 'magire monaku kimi wa tensai¡¡moisturizer',\n", - " 'mechakucha ni shigekiteki na distance',\n", - " 'i¡¯m getting gesell schaft moron',\n", - " 'wasure chattekure¡¡eigyoushin nante mou',\n", - " 'i¡¯m getting gesell schaft venus',\n", - " 'gyoumuyou bed no ringu de 60 bun ippon shoubu',\n", - " 'drive me lady drive me violent ¡¡go jasu na kyuuin de',\n", - " 'drive me lady drive me violent ¡¡hageshiku up down kuri kaeshite motto',\n", - " 'drive me lady drive me violent ¡¡break down shichaukurai knead',\n", - " 'kageki na driving de speedway',\n", - " 'secret times¡¡akuseru zenkai de kasokushite ittekure',\n", - " 'give me your heart',\n", - " 'give me your breast',\n", - " 'give me your bullet',\n", - " 'drive me violent',\n", - " 'drive me lady drive me violent ¡¡go jasu na kyuuin de',\n", - " 'drive me lady drive me violent ¡¡hageshiku up down kuri kaeshite motto',\n", - " 'drive me lady drive me violent ¡¡break down shichaukurai gnaw',\n", - " 'saijoukyuu destructive motion',\n", - " 'please shake it shake it now!',\n", - " 'please shake it shake it now!',\n", - " 'please shake it shake it now!',\n", - " 'please shake it shake it now!',\n", - " 'yama!',\n", - " 'denza faradenza',\n", - " 'la bokka de lä cokka',\n", - " 'grande love-ua and ribaua villa vida loca',\n", - " 'gusto rico dante',\n", - " 'pereto presto power (trrr)',\n", - " 'karma denza purra kawa konnichiwa-ua',\n", - " 'raaa ta-ta ta',\n", - " 'raaa ta-ta ta-ta',\n", - " 'raaa ta-ta ta',\n", - " 'denza faradenza',\n", - " 'raaa ta-ta ta',\n", - " 'raaa ta-ta ta-ta',\n", - " 'raaa ta-ta ta',\n", - " 'denza faradenza',\n", - " 'denza, denza',\n", - " 'denza faradenza',\n", - " 'denza, denza',\n", - " 'denza faradenza (yama!)',\n", - " 'denza (denza), denza (denza)',\n", - " 'denza faradenza',\n", - " 'denza (denza), denza (denza)',\n", - " 'denza faradenza',\n", - " 'ha!',\n", - " 'ha!',\n", - " 'denza faradenza',\n", - " 'ha!',\n", - " 'yama!',\n", - " 'ha!',\n", - " 'denza faradenza',\n", - " '(denza faradenza)',\n", - " '(denza faradenza)',\n", - " 'denza faradenza',\n", - " 'ayama lak mayama',\n", - " 'granda purr el casa hands up konnichiwa-ua (wa-ua)',\n", - " 'gusto rico dante',\n", - " 'revero presto power',\n", - " 'denza faradenza, sorry, paradox, i love-ua',\n", - " 'denza pati tendas',\n", - " 'denza mati extas',\n", - " 'denza, denza, denza, denza',\n", - " 'denza tantre secas',\n", - " 'denza (denza) pati tendas (denza)',\n", - " 'denza (denza) mati extas (denza)',\n", - " 'denza, denza, denza, denza',\n", - " 'denza tantre secas',\n", - " 'denza, denza',\n", - " 'denza faradenza',\n", - " 'denza, denza',\n", - " 'denza faradenza (yama!)',\n", - " 'denza (denza), denza (denza)',\n", - " 'denza faradenza',\n", - " 'denza (denza), denza (denza)',\n", - " 'denza faradenza',\n", - " 'raaa ta-ta ta',\n", - " 'raaa ta-ta ta-ta',\n", - " 'raaa ta-ta ta',\n", - " 'denza faradenza',\n", - " 'raaa ta-ta ta',\n", - " 'raaa ta-ta ta-ta',\n", - " 'raaa ta-ta ta',\n", - " 'denza faradenza',\n", - " 'raaa ta-ta ta (denza, denza)',\n", - " 'raaa ta-ta ta-ta (denza, faradenza)',\n", - " 'raaa ta-ta ta (denza, denza)',\n", - " 'denza faradenza',\n", - " 'raaa ta-ta ta (denza, denza)',\n", - " 'raaa ta-ta ta-ta (denza, faradenza)',\n", - " 'raaa ta-ta ta (denza, denza)',\n", - " 'denza faradenza',\n", - " 'yama!',\n", - " 'tagalog',\n", - " 'minsan, parang may pag-ibig ang sagot',\n", - " 'kahit na sa pag-iisa ay nagbabagot',\n", - " 'aanhin ko ang paghahanap ng magmamahal',\n", - " \"kung sa sarili ko ay 'di pa masaya\",\n", - " 'mabuti nang mag-isa',\n", - " 'nang makilala ko muna ang sarili',\n", - " 'pag-ibig muna, para sa akin',\n", - " 'mabuti nang mag-isa',\n", - " \"nang 'di ko sa ipalungkot\",\n", - " 'sinisisi, kailangan ko lang, ako muna',\n", - " 'minsan, alam ko lungkot ay kakatok',\n", - " 'ngunit kailangan kong tatagan ng loob',\n", - " 'aanhin ko ang pagbibigay ng pagmamahal',\n", - " \"kung ang sarili ko'y mapapabayaan\",\n", - " 'mabuti nang mag-isa',\n", - " 'nang makilala ko muna ang sarili',\n", - " 'pag-ibig muna, para sa akin',\n", - " 'mabuti nang mag-isa',\n", - " \"nang 'di ko sa ipalungkot\",\n", - " 'sinisisi, kailangan ko lang',\n", - " \"pa'no kung magmamahal\",\n", - " \"kung 'di ko kayang mahalin\",\n", - " 'ako, ngayon, bukas, mapapagod din lang',\n", - " 'mabuti nang mag-isa',\n", - " 'nang makilala ko muna ang sarili',\n", - " 'pag-ibig muna, para sa akin',\n", - " 'mabuti nang mag-isa',\n", - " 'nang di ko sa ipalungkot',\n", - " 'sinisisi, kailangan ko lang, ako muna',\n", - " 'english translation',\n", - " \"sometimes, it feels as though love isn't the answer\",\n", - " 'even though, one gets tired in solitude',\n", - " 'what do i get out of looking for love',\n", - " \"if i'm not yet happy with myself\",\n", - " \"it's better to be alone\",\n", - " 'so that i get to know myself first',\n", - " 'love for myself first',\n", - " \"it's better to be alone\",\n", - " \"so that i don't blame this sadness on others\",\n", - " 'i just need to',\n", - " 'focus on myself first',\n", - " 'focus on myself first',\n", - " 'although i have to strengthen my valor',\n", - " 'what do i get out of giving love',\n", - " 'what do i get out of giving love',\n", - " 'if i will end up neglecting myself',\n", - " \"it's better to be alone\",\n", - " 'so that i get to know myself first',\n", - " 'love for myself first',\n", - " \"it's better to be alone\",\n", - " \"so that i don't blame this sadness on others\",\n", - " 'i just need to',\n", - " 'focus on myself first',\n", - " 'how will i love',\n", - " \"if i'm not able to love myself\",\n", - " 'today, tomorrow, i will just end up exhausted...',\n", - " \"it's better to be alone\",\n", - " 'so that i get to know myself first',\n", - " 'love for myself first',\n", - " \"it's better if i'm alone\",\n", - " \"so that i don't blame this sadness on others\",\n", - " 'i just need to',\n", - " 'focus on myself first',\n", - " 'focus on myself first',\n", - " 'living easy, living free',\n", - " 'season ticket on a one-way ride',\n", - " 'asking nothing, leave me be',\n", - " 'taking everything in my stride',\n", - " 'sin razón, sin poesía',\n", - " 'no hay otra cosa que yo quiera hacer',\n", - " 'con amigos yo estaré',\n", - " 'tocando fondo y divirtiéndome',\n", - " \"i'm on the highway to hell\",\n", - " 'highway to hell',\n", - " 'highway to hell',\n", - " 'highway to hell',\n", - " 'nadie me detendrá, no hay limite de velocidad',\n", - " 'giraré sin parar, nadie se cruza por mi lugar',\n", - " 'hey satan, paid my dues',\n", - " 'playing in a rocking band',\n", - " 'hey mama, look at me',\n", - " \"i'm on my way to the promised land, whoo!\",\n", - " \"i'm on the highway to hell\",\n", - " 'highway to hell',\n", - " 'highway to hell',\n", - " 'highway to hell',\n", - " \"don't stop me, don't stop me\",\n", - " 'highway to hell',\n", - " 'highway to hell',\n", - " 'highway to hell',\n", - " 'highway to hell',\n", - " 'highway to hell',\n", - " 'highway to hell',\n", - " 'highway to hell',\n", - " 'highway to hell',\n", - " \"and i'm going down...\",\n", - " 'feliz navidad',\n", - " 'feliz navidad',\n", - " 'feliz navidad',\n", - " 'próspero año y felicidad',\n", - " 'feliz navidad',\n", - " 'feliz navidad',\n", - " 'feliz navidad',\n", - " 'próspero año y felicidad',\n", - " 'i wanna wish you a merry christmas',\n", - " 'i wanna wish you a merry christmas',\n", - " 'i wanna wish you a merry christmas',\n", - " 'from the bottom of my heart',\n", - " 'we wanna wish you a merry christmas',\n", - " 'we wanna wish you a merry christmas',\n", - " 'we wanna wish you a merry christmas',\n", - " 'from the bottom of our heart',\n", - " 'feliz navidad',\n", - " 'feliz navidad',\n", - " 'feliz navidad',\n", - " 'próspero año y felicidad',\n", - " 'feliz navidad',\n", - " 'feliz navidad',\n", - " 'feliz navidad',\n", - " 'próspero año y felicidad',\n", - " 'we wanna wish you a merry christmas',\n", - " 'we wanna wish you a merry christmas',\n", - " 'we wanna wish you a merry christmas',\n", - " 'from the bottom of our heart',\n", - " 'we wanna wish you a merry christmas',\n", - " 'we wanna wish you a merry christmas',\n", - " 'we wanna wish you a merry christmas',\n", - " 'from the bottom of our heart',\n", - " 'from the bottom of my heart',\n", - " 'feliz navidad',\n", - " 'feliz navidad',\n", - " 'feliz navidad',\n", - " 'próspero año y felicidad',\n", - " 'we wanna wish you a merry christmas',\n", - " 'we wanna wish you a merry christmas',\n", - " 'we wanna wish you a merry christmas',\n", - " 'from the bottom of our heart',\n", - " 'we wanna wish you a merry christmas',\n", - " 'we wanna wish you a merry christmas',\n", - " 'we wanna wish you a merry christmas',\n", - " 'from the bottom of our heart',\n", - " 'from the bottom of my heart',\n", - " 'from the bottom of my heart',\n", - " 'we wanna wish you',\n", - " 'from our hearts',\n", - " 'baby, i like your style',\n", - " 'grips on your waist',\n", - " 'front way, back way',\n", - " \"you know that i don't play\",\n", - " 'streets not safe',\n", - " 'but i never run away',\n", - " \"even when i'm away\",\n", - " \"oti, oti, there's never much love when we go ot\",\n", - " 'i pray to make it back in one piece',\n", - " 'i pray, i pray',\n", - " \"that's why i need a one dance\",\n", - " 'got a hennessy in my hand',\n", - " \"one more time 'fore i go\",\n", - " 'higher powers taking a hold on me',\n", - " 'i need a one dance',\n", - " 'got a hennessy in my hand',\n", - " \"one more time 'fore i go\",\n", - " 'higher powers taking a hold on me',\n", - " 'baby ,i like your style',\n", - " 'strength and guidance',\n", - " \"all that i'm wishing for my friends\",\n", - " 'nobody makes it from my ends',\n", - " 'i had to bust up the silence',\n", - " 'you know you gotta stick by me',\n", - " 'soon as you see the text, reply me',\n", - " \"i don't wanna spend time fighting\",\n", - " 'como tú te llamas, yo no sé',\n", - " 'de donde llegaste, ni pregunté',\n", - " 'lo único que sé, es que quiero con usted',\n", - " 'quedarme contigo hasta el amanecer',\n", - " 'como tú te llamas, yo no sé',\n", - " 'de donde llegaste, ni pregunté',\n", - " 'lo único que sé, es que quiero con usted',\n", - " 'quedarme contigo hasta el amanecer',\n", - " 'óyeme mamacita, tu cuerpo y carita',\n", - " 'piel morena, lo que uno necesita',\n", - " 'mirando una chica tan bonita',\n", - " 'y pregunto porque anda tan sólita',\n", - " \"ven dale ahí ahí, moviendo todo eso pa' mí\",\n", - " 'no importa idioma ni el país',\n", - " 'ya vamonos de aquí, que tengo algo bueno para ti',\n", - " 'una noche de aventura hay que vivir',\n", - " 'óyeme ahí ahí, mami vamos a darle',\n", - " 'rumbeando y bebiendo a la vez',\n", - " 'tu tranquila que yo te daré',\n", - " 'una noche llena de placer',\n", - " 'i need a one dance',\n", - " \"one more time 'fore i go\",\n", - " 'higher powers taking a hold',\n", - " 'i need a one dance',\n", - " 'quedarme contigo hasta el amanecer',\n", - " \"(this guy's in love with you pare...ano?)\",\n", - " 'one look and then yun iba na',\n", - " 'malagkit dumikit ang tingin ng mata',\n", - " 'one smile, iba na ang ibig sabihin',\n", - " \"'di na friends, ang tingin nya sa akin\",\n", - " \"everyday parating we're together\",\n", - " 'every week, palaging may sleepover',\n", - " 'ang tawag nya sa mommy ko ay tita',\n", - " 'bakit ba, di ko non nakita',\n", - " \"until out of the blue, i'm feeling so true\",\n", - " 'bigla nalang sinabi sa akin that',\n", - " \"this guy's in love with you pare\",\n", - " \"this guy's in love with you pare\",\n", - " \"this guy's in love with you pare\",\n", - " 'bading na bading sayo...',\n", - " 'di na ako makasagot ng telepono',\n", - " 'palagi nyang kinakausap ang parents ko',\n", - " 'kulang daw sa tulog at di na makakain',\n", - " 'bakit ba? di pa non inamin',\n", - " \"until out of the blue, i'm feeling so true\",\n", - " 'bigla nalang sinabi sa akin that',\n", - " \"this guy's in love with you pare\",\n", - " \"this guy's in love with you pare\",\n", - " \"this guy's in love with you pare\",\n", - " 'bading na bading sayo...',\n", - " 'everyday daw ay rainy day ang monday',\n", - " \"'coz 'di na ko maaya to come out and play\",\n", - " 'tinataguan na nga, palaging late o absent',\n", - " 'ang sabi parin',\n", - " '\"i\\'ll always have a friend that you can depend\"',\n", - " 'oohh...',\n", - " 'di kailangan na mag-oonn...',\n", - " 'parang talong at bagoooong...',\n", - " \"this guy's in love with you pare\",\n", - " \"this guy's in love with you pare\",\n", - " \"this guy's in love with you pare\",\n", - " 'bading na bading',\n", - " 'converted parin',\n", - " 'na nakikipag-fling sayo..',\n", - " \"oh no! my best friend's gay\",\n", - " \"it's the same old friend i had yesterday\",\n", - " \"and he's happy... and gay...\",\n", - " 'yeah... yeah...',\n", - " 'na na na nananana na nanan na (2x)',\n", - " 'aê!',\n", - " 'tropkillaz, major lazer e kevinho',\n", - " 'chama, fio!',\n", - " 'oh na, oh na na na',\n", - " 'oh na, oh na na na',\n", - " 'oh na, oh na na na (busy signal)',\n", - " 'oh na, oh... brrp',\n", - " 'gal me love when you get low',\n", - " 'mi seh mi love it when yuh set so',\n", - " 'and then mi love it when you tip toe',\n", - " 'bubble up, yuh make the earth shake',\n", - " 'whenever you earthquake',\n", - " 'olha que cara de terrível',\n", - " 'bem do jeitinho que eu gosto',\n", - " 'ela sabe que eu não posso',\n", - " 'perder o foco do negócio',\n", - " 'lo go dung low, lo guh dung low',\n", - " 'tô ficando louco',\n", - " 'lo go dung low, lo guh dung low',\n", - " 'tô perdendo o foco',\n", - " 'lo go dung low, lo guh dung low',\n", - " 'twerk it like a go go',\n", - " 'lo go dung low, lo guh dung low',\n", - " '(cê acredita?)',\n", - " 'essa mina é terrível',\n", - " 'já me fez perder o foco',\n", - " 'ela sabe que eu não brinco',\n", - " 'se vacilar, eu passo o rodo',\n", - " 'drop it to the floor',\n", - " 'girl, your body is so amazing',\n", - " 'when you wine you drive me loco',\n", - " 'from brazil to sweet jamaica',\n", - " 'girls them putting on a show',\n", - " 'então focou!',\n", - " 'jiggle up yuh body',\n", - " 'never know a suh yuh bad',\n", - " 'bubble up yuh body',\n", - " 'never know a suh yuh bad',\n", - " 'traffic blocking, gal, you getting on bad',\n", - " 'shake up yuh, bend up yuh, twist up yuh',\n", - " 'alright!',\n", - " 'com esse jeitinho cê sabe que cê me mata',\n", - " 'fica me olhando com essa cara de danada',\n", - " 'desce pra mim devagar e não para',\n", - " 'faz tumbalatum, rebola na minha cara',\n", - " 'lo go dung low, lo guh dung low',\n", - " 'tô ficando louco',\n", - " 'lo go dung low, lo guh dung low',\n", - " 'tô perdendo o foco',\n", - " 'lo go dung low, lo guh dung low',\n", - " 'twerk it like a go go',\n", - " 'lo go dung low, lo guh dung low',\n", - " '(cê acredita?)',\n", - " 'essa mina é terrível',\n", - " 'já me fez perder o foco',\n", - " 'ela sabe que eu não brinco',\n", - " 'se vacilar, eu passo o rodo',\n", - " 'drop it to the floor',\n", - " 'girl, your body is so amazing',\n", - " 'when you wine you drive me loco',\n", - " 'from brazil to sweet jamaica',\n", - " 'girls them putting on a show',\n", - " 'então focou!',\n", - " 'liriko ng \"mahal ko o mahal ako\"',\n", - " '(english translation below)',\n", - " 'dalawa kayo sa buhay ko',\n", - " 'at ako ngayon ay kailangan nang mamili',\n", - " 'isa lang ang maaari',\n", - " 'alam mong narito ako',\n", - " 'lagi para sa iyo',\n", - " 'mahal kita ng labis',\n", - " 'ngunit iba ang iyong nais',\n", - " 'at siya’y narito',\n", - " 'alay sa ki’y wagas na pag-ibig',\n", - " 'nalilito',\n", - " 'litong litong lito',\n", - " 'sino ang iibigin ko',\n", - " 'ikaw ba na pangarap ko',\n", - " 'o siya bang kumakatok sa puso ko',\n", - " 'oh anong paiiralin ko',\n", - " 'isip ba o ang puso ko',\n", - " 'nalilito litong litong lito',\n", - " 'sinong pipiliin ko',\n", - " 'mahal ko o mahal ako',\n", - " 'kahit di ako ang mahal mo',\n", - " 'kung mananatili ako sa yo',\n", - " 'ay baka matutunan mo rin',\n", - " 'na ako’y iyong ibigin',\n", - " 'at kung sadyang siya’y tapat',\n", - " 'baka sakaling pagdaan ng araw',\n", - " 'matutunan ko rin ang ibigin siya',\n", - " 'sino ang iibigin ko',\n", - " 'ikaw ba na pangarap ko',\n", - " 'o siya bang kumakatok sa puso ko',\n", - " 'oh anong paiiralin ko',\n", - " 'isip ba o ang puso ko',\n", - " 'nalilito litong litong lito',\n", - " 'sinong pipiliin ko',\n", - " 'ang nais ko ay maranasan',\n", - " 'ang umibig at masuklian din ng pag-ibig',\n", - " 'sino ang iibigin ko',\n", - " 'ikaw ba na pangarap ko',\n", - " 'o siya ba',\n", - " 'oh anong paiiralin ko',\n", - " 'isip ba o ang puso ko',\n", - " 'nalilito litong litong lito',\n", - " 'litong litong lito',\n", - " 'sinong pipiliin ko',\n", - " 'mahal ko o mahal ako',\n", - " 'english translation',\n", - " 'i have you both in my life',\n", - " 'and now',\n", - " 'i have to choose',\n", - " 'only one',\n", - " 'you know i am always',\n", - " 'here for you',\n", - " 'i love you so much',\n", - " 'but your heart is for another',\n", - " \"and then there's him\",\n", - " 'laying all his love for me',\n", - " \"i'm so confused, confused, confused, confused\",\n", - " 'who should i love:',\n", - " 'you--my dream?',\n", - " 'or him who is knocking to my heart?',\n", - " 'which one should i allow to reign:',\n", - " 'my heart or my mind?',\n", - " \"i'm so confused, confused, confused, confused\",\n", - " 'who should i choose:',\n", - " 'the one i love or the one who loves me?',\n", - " 'even if i am not the one you love',\n", - " 'if i wait for you',\n", - " \"perhaps you'd learn\",\n", - " 'to love me too',\n", - " 'and if he is truly faithful',\n", - " 'perhaps the day would come',\n", - " 'when i would learn to love him too',\n", - " 'who should i love:',\n", - " 'you--my dream?',\n", - " 'or him who is knocking to my heart?',\n", - " 'which one should i allow to reign:',\n", - " 'my heart or my mind?',\n", - " \"i'm so confused, confused, confused, confused\",\n", - " 'who should i choose:',\n", - " 'the one i love or the one who loves me?',\n", - " 'i long to feel',\n", - " 'how to love and be loved in return',\n", - " 'who should i love:',\n", - " 'you--my dream?',\n", - " 'or him? (or him?)',\n", - " 'oh, which one should i allow to reign:',\n", - " 'my heart or my mind?',\n", - " \"i'm so confused, confused, confused, confused\",\n", - " 'who should i choose:',\n", - " 'the one i love or the one who loves me?',\n", - " 'you just look so beautiful',\n", - " 'hago shipun mal',\n", - " 'naege wajun gol gamsahae',\n", - " 'guryowatdon gudaega iroke lovely',\n", - " 'nomuna sarangsuroun gol',\n", - " 'ooh just be my lady, my lady',\n", - " 'nae saramirago',\n", - " 'my baby, my baby',\n", - " 'sesange oechilge',\n", - " 'my shawty, my shawty',\n", - " 'dundunhan namjaro pyongsaeng neyeope issulge',\n", - " 'here i am, here i am',\n", - " 'here i am, here i am',\n", - " 'nomaneul wihae, sesangkkutkkaji',\n", - " 'here i am, here i am',\n", - " 'shawty know i want cha',\n", - " 'hey girl sarangiran gon',\n", - " 'maumman bwado nan anun gol',\n", - " \"it's our time\",\n", - " \"it's party time\",\n", - " 'dulmanui sojunghan mamuro',\n", - " 'oh girl you so fresh',\n", - " 'baby love me just like that',\n", - " 'oh girl you so fresh',\n", - " 'baby love me just like that',\n", - " 'amuron maldo hajimara',\n", - " 'just leave me alone',\n", - " 'hokshirado niga naege ibyorul malhandamyon',\n", - " 'niga dashi naege doraonun gunalkkaji',\n", - " 'yogiso gidarilge',\n", - " 'ooh just be my lady, my lady',\n", - " 'naui yojarago',\n", - " 'my baby, my baby',\n", - " 'sesange oechilge',\n", - " 'my shorty, my shorty',\n", - " 'nomanui namjaro, forever, neoreul jikyojulge',\n", - " 'i want you yeah',\n", - " 'here i am, here i am oh oh oh oh',\n", - " 'here i am, here i am oh oh oh oh',\n", - " 'nomanul wihae, sesang kkutkkaji',\n", - " 'here i am, here i am',\n", - " 'shorty know i want cha',\n", - " 'here i am, here i am oh oh oh oh',\n", - " 'here i am, here i am oh oh oh oh',\n", - " 'nomanul wihae, sesang kkutkkaji',\n", - " 'here i am, here i am',\n", - " 'shorty know i want cha',\n", - " \"hey baby, hey baby, i'm so in love\",\n", - " \"hey baby, and you're the one i'm thinking of\",\n", - " 'hey baby, hey baby, i love you girl',\n", - " 'hey baby, hey baby',\n", - " 'girl non naui butterfly (butterfly)',\n", - " 'and non naui superstar (superstar)',\n", - " 'shorty know i want cha',\n", - " 'here i am, here i am',\n", - " 'here i am, here i am',\n", - " 'nomanul wihae, sesangkkutkkaji',\n", - " 'here i am, here i am',\n", - " 'shorty know i want cha',\n", - " 'here i am, here i am',\n", - " 'here i am, here i am',\n", - " 'nomanul wihae, sesangkkutkkaji',\n", - " 'here i am, here i am',\n", - " 'shorty know i want cha',\n", - " 'ooh ooh ooh ooh ooh ooh ooh ooh ooh ooh',\n", - " 'ooh ooh ooh ooh ooh ooh ooh ooh ooh ooh',\n", - " 'ooh ooh ooh ooh ooh',\n", - " '(konishi)',\n", - " 'translators: kirk cumming, miyuki igarashi',\n", - " 'terebi no eisei-chuukei de',\n", - " 'dokoka no machi no',\n", - " 'onna no ko hohoemu',\n", - " '--totemo ureshii!',\n", - " 'shinya no eisei-chuukei de',\n", - " 'dokoka no kuni no',\n", - " 'ousama ga utareru',\n", - " '--shinjirarenai!',\n", - " 'moshikashite anata mo',\n", - " 'boku no koto mieru no?',\n", - " 'moshi boku wo',\n", - " 'anata mo miteru nara',\n", - " 'hora waratte okure yo',\n", - " 'boku mo te wo furu yo',\n", - " 'utatte goran yo',\n", - " 'douji-tsuuyaku de',\n", - " 'ohayo gozama, konichiwa',\n", - " 'anata no koto, suki-na no koto',\n", - " 'sayonara, sankyu, sakitsumi',\n", - " 'anata no koto, suki-na no koto',\n", - " 'ahaha',\n", - " 'ohiru no eisei-chuukei de',\n", - " 'dokoka no hoshi ni',\n", - " 'hata ga taterareru',\n", - " '--shinjirarenai!',\n", - " 'moshikashite anata mo',\n", - " 'boku no koto mieru no?',\n", - " 'moshi boku wo',\n", - " 'anata mo miteru nara',\n", - " 'hora waratte okure yo',\n", - " 'boku mo te wo furu yo',\n", - " 'tsukareteru mitai',\n", - " 'boku mo onnaji sa',\n", - " 'anata ni deaete',\n", - " 'totemo ureshii na',\n", - " 'ai koso wa subete',\n", - " 'douji-tsuuyaku de',\n", - " 'ohayo gozama, konichiwa',\n", - " 'anata no koto, suki-na no koto',\n", - " 'sayonara, sankyu, sakitsumi',\n", - " 'anata no koto, suki-na no koto',\n", - " 'ahaha',\n", - " '-------------------------------------',\n", - " 'on the satellite tv broadcast',\n", - " 'a girl from some city',\n", - " 'is smiling',\n", - " '--very happy!',\n", - " 'on the midnight satellite broadcast',\n", - " 'the king of some country',\n", - " 'is shot',\n", - " \"--i can't believe it!\",\n", - " 'by any chance',\n", - " 'can you see me too?',\n", - " 'if you are',\n", - " 'watching me',\n", - " 'smile for me',\n", - " \"i'm waving my hand\",\n", - " 'try singing',\n", - " 'with simultaneous translation',\n", - " 'good morning, good day',\n", - " 'what you are, what you like',\n", - " 'goodbye, thank you, sakitsumi',\n", - " 'what you are, what you like',\n", - " 'ahaha',\n", - " 'on the afternoon satellite broadcast',\n", - " 'a flag is erected on',\n", - " 'some distant star',\n", - " \"--i can't believe it!\",\n", - " 'by any chance',\n", - " 'can you see me too?',\n", - " 'if you are',\n", - " 'watching me',\n", - " 'smile for me',\n", - " \"i'm waving my hand\",\n", - " 'you look tired',\n", - " \"i'm the same\",\n", - " \"i'm so happy\",\n", - " 'that we met',\n", - " 'love is here',\n", - " 'with simultaneous translation',\n", - " 'good morning, good day',\n", - " 'what you are, what you like',\n", - " 'goodbye, thank you, sakitsumi',\n", - " 'what you are, what you like',\n", - " 'ahaha',\n", - " 'uh, uh, uh',\n", - " 'another banger',\n", - " 'make i pon, make i pon-pon-pon',\n", - " 'make i come',\n", - " 'make i give her the pon-pon-pon',\n", - " 'your body kakara',\n", - " 'make i pon-pon-pon',\n", - " 'onome get e—',\n", - " 'ah',\n", - " 'ki lo fe omote je ogede, aha',\n", - " 'fine fine okpekete, aha',\n", - " 'wa je alo folake, aha',\n", - " 'whine am omote, ah',\n", - " 'ju ba di your body chekere, aha',\n", - " 'bo se re di yen imade, aha',\n", - " 'ta ba sile kilo fe, aha',\n", - " 'whine am oh my lady, oh',\n", - " 'tell me wetin dey your body, oh',\n", - " 'omote my sweetie baby',\n", - " 'why you wan come give me konji? oh',\n", - " ...]},\n", - " 'rap': {'meta': {'train_data': ['skrrt, skrrt, skrrt, skrrt',\n", - " 'juicy gay (juicy gay)',\n", - " 'juicy gay (juicy gay)',\n", - " 'juicy gay (juicy gay)',\n", - " 'es ist juicy gay (juicy gay)',\n", - " 'juicy gay (juicy gay)',\n", - " 'juicy gay (juicy gay)',\n", - " 'juicy gay (juicy gay)',\n", - " 'es ist juicy gay (juicy gay)',\n", - " 'juicy gay (juicy gay)',\n", - " 'juicy gay (juicy gay)',\n", - " 'juicy gay (juicy gay)',\n", - " 'es ist juicy gay (juicy gay)',\n", - " 'juicy gay (juicy gay)',\n", - " 'juicy gay (juicy gay)',\n", - " 'bitch es ist juicy gay (juicy gay)',\n", - " 'yeah, baby, i like it like that',\n", - " 'you gotta believe me when i tell you',\n", - " 'i said i like it like that',\n", - " 'you gotta believe me when i tell you',\n", - " 'i said i like it like—',\n", - " 'now i like dollars, i like diamonds',\n", - " \"i like stuntin', i like shinin' (yeah)\",\n", - " 'i like million dollar deals',\n", - " \"where's my pen? bitch, i'm signin' (signin')\",\n", - " 'i like those balenciagas (those)',\n", - " 'the ones that look like socks',\n", - " 'i like going to the jeweler',\n", - " 'i put rocks all in my watch (cha-ching)',\n", - " 'i like texts from my exes when they want a second chance (what?)',\n", - " \"i like proving niggas wrong, i do what they say i can't\",\n", - " 'they call me cardi bardi, banging body',\n", - " 'spicy mami, hot tamale',\n", - " 'hotter than a somali, fur coat, ferrari (rrr, woo)',\n", - " \"hop out the stu', jump in the coupe (coupe)\",\n", - " 'big dipper on top of the roof',\n", - " 'flexing on bitches as hard as i can',\n", - " \"eating halal, driving the lam'\",\n", - " \"told that bitch i'm sorry, though (sorry, though)\",\n", - " \"'bout my coins like mario (mario)\",\n", - " 'yeah, they call me cardi b',\n", - " 'i run this shit like cardio',\n", - " 'woo, facts',\n", - " 'diamond district in the chain, chain (i said i like it like that)',\n", - " \"certified, you know i'm gang, gang, gang, gang (i said i like it like—woo)\",\n", - " 'drop the top and blow the brains, woo (woo, i said i like it like that)',\n", - " \"oh, he's so handsome, what's his name? yeah (woo, facts, i said i like it)\",\n", - " 'oh, i need the dollars, cha-ching (i said i like it like that)',\n", - " 'beat it up like piñatas (i said i like it like—; uh)',\n", - " 'tell the driver, close the curtains (i said i like it like that, skrrt)',\n", - " 'bad bitch make you nervous (i said i like it)',\n", - " 'cardi b',\n", - " 'chambean, chambean, pero no jalan (¡jalan!)',\n", - " \"tú compras to'a las jordan, bo, a mí me las regalan (jeje)\",\n", - " 'i spend in the club what you have in the bank (¡wuh; ¡yeh!)',\n", - " 'this is the new religion bang in latino gang, gang, ¡yeh!',\n", - " 'trato de hacer dieta, pero es que en el closet tengo mucha grasa (¡yeh!; ¡wuh!)',\n", - " \"ya mudé la' gucci pa' dentro de casa, yeh (¡wuh!)\",\n", - " 'cabrón, a ti no te conocen ni en plaza (no)',\n", - " 'el diablo me llama, pero jesucristo me abraza (amén)',\n", - " 'guerrero como eddie, que viva la raza, yeh',\n", - " 'me gustan boricuas, me gustan cubanas',\n", - " 'me gusta el acento de las colombianas (¿qué hubo pues?)',\n", - " 'como mueve el culo la dominicana (¿qué lo que?)',\n", - " 'lo rico que me chingan las venezolanas (¡wuh!)',\n", - " 'andamos activos, perico pin pin (wuh)',\n", - " 'billetes de cien en el maletín (¡ching!)',\n", - " 'que retumbe el bajo, bobby valentín, yeh (¡buh!)',\n", - " 'aquí es prohibido amar, diles, charytín',\n", - " \"que pa'l picor les tengo claritín\",\n", - " 'yo llego a la disco y se forma el motín (¡rrrah!)',\n", - " 'diamond district in the chain (i said i like it like that)',\n", - " 'bad bunny baby, bebé, bebé',\n", - " \"certified, you know i'm gang, gang, gang, gang (i said i like it like—woo)\",\n", - " 'drop the top and blow the brains, woo (woo, i said i like it like that)',\n", - " \"oh, he's so handsome, what's his name? yeah (woo, yeh, i said i like it)\",\n", - " 'oh, i need the dollars, cha-ching (i said i like it like that)',\n", - " 'beat it up like piñatas (i said i like it like—)',\n", - " 'tell the driver, close the curtains (i said i like it like that, skrrt)',\n", - " 'bad bitch make you nervous (i said i like it, that)',\n", - " \"como celia cruz tengo el azúcar (azúca')\",\n", - " 'tu jeva me vio y se fue de pecho como jimmy snuka (ah)',\n", - " 'te vamos a tumbar la peluca',\n", - " \"y arranca pa'l carajo, cabrón, que a ti no te vo'a pasar la hookah (hookah, hookah)\",\n", - " 'mis tenis balenciaga me reciben en la entrada (wuh)',\n", - " \"pa-pa-paparazzi like i'm lady gaga (wuh)\",\n", - " 'y no te me hagas (eh)',\n", - " 'que en cover de billboard tú has visto mi cara (eh)',\n", - " 'no salgo de tu mente (wuh)',\n", - " 'donde quieras que viajes has escuchado \"mi gente\"',\n", - " \"yo no soy hype, soy como el testarossa (hype; 'rossa)\",\n", - " 'yo soy el que se la vive y también el que la goza (goza, goza)',\n", - " 'es la cosa, mami es la cosa (cosa, cosa)',\n", - " 'el que mira sufre y el que toca goza (goza, goza, goza)',\n", - " 'i said i like it like that',\n", - " 'i said i like it like that (rrr)',\n", - " 'i said i like it like that (woo)',\n", - " 'i said i like it like that',\n", - " 'diamond district in the chain (i said i like it like that)',\n", - " \"certified, you know i'm gang, gang (i said i like it like—)\",\n", - " 'drop the top and blow the brains, woo (i said i like it like that)',\n", - " \"oh, he's so handsome, what's his name? yeah (i said i like it)\",\n", - " 'suck my fucking dick, bitch',\n", - " '(suh, dude! haha!)',\n", - " 'eh, suck my fucking dick',\n", - " '(aye!) suck my fucking dick, bitch',\n", - " 'ayay (haha!)',\n", - " 'suh dude, suh dude!',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick',\n", - " 'suck my - suck my dick',\n", - " 'dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fuh-',\n", - " 'okay, she suck my fucking dick bitch',\n", - " 'this stupid bitch suck my dick',\n", - " 'she suck my fucking dick',\n", - " 'and the bitch suck my dick',\n", - " 'the bitch -',\n", - " 'suck my fucking dick',\n", - " \"bitch gon' suck my fucking dick\",\n", - " 'aye, aye, aye, aye, one time',\n", - " \"aye the bitch gon' suck my fucking dick one time (aye)\",\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " 'suck my fucking dick, bitch',\n", - " '*gun cock*',\n", - " 'yeah',\n", - " 'afae na ma sɔre',\n", - " 'me tee monka akyɛ',\n", - " '(what you wan do oo yeah)',\n", - " 'hehehe',\n", - " 'yeah, ok yɛnkc ɛrr',\n", - " 'tie',\n", - " 'fuck you talking bout',\n", - " '80% of rappers copy me style',\n", - " \"i ain't mad ɛyɛ me anigye and am really proud\",\n", - " 'cos apart from reggie monhu rapper sei its been a while',\n", - " 'yeah, ɛyaa na ghana mma no pɛ me swag',\n", - " 'yvone okoro hyia me first time otwaa me hug',\n", - " 'na becca koraa deɛ nka nyame ampata a nka ɔtee me komu chain',\n", - " 'ɔse ɔfeeli sɛ nea sarkodie fa so move’ie ne crowd',\n", - " 'yeah',\n", - " 'i guess you wanna know',\n", - " 'how i keep on running the game for a decade or so',\n", - " 'ɛnyɛ me swag ɛnyɛ punch ɛna ɛnyɛ me flow',\n", - " 'me secrete yinaa hyɛ me tirimu',\n", - " 'i keep it on the low',\n", - " 'all you got to do is keep it 1hunnid for real',\n", - " 'obi mfrɛ me lawyer ma me na ɛbɛ gye me will',\n", - " 'sɛ me wu a, ɔnfa me punch no bi nkyɛ me nuanom a, ɔmo a’short’i flow',\n", - " 'me pa no kyɛw cause i know how it feel',\n", - " 'nkrɔfoɔ fresɛ relevancy depends on your hit',\n", - " 'ɔmo boa',\n", - " \"does it, that philosophy doesn't exist\",\n", - " 'ɛyɛ a, mo werefi sɛ my biggest hit was adonai',\n", - " 'that was two years ago, but still obidi is the ish',\n", - " 'ɛyɛ a, mo kasa pii, mo bɔ mɔden n’check’i me records',\n", - " 'oyankopɔn de me baa ewiase mu ha for a purpose',\n", - " 'i swear to god',\n", - " 'sɛ me tu kwan kɔ yɛ me tour no ba a, asantehene na ɛbɛ hyea me wɔ airport',\n", - " 'sɛ woa te ma siɛ',\n", - " 'so what you won do',\n", - " '(what you won do)',\n", - " 'two of the greatest',\n", - " 'how we come through',\n", - " '(what you don do)',\n", - " 'when we step inna the back inna yah yard aah',\n", - " 'what you won do',\n", - " 'what you wanna do',\n", - " 'you won show me',\n", - " 'acting like you don’t know me',\n", - " 'what you won do',\n", - " 'what you won do!',\n", - " 'what you don do',\n", - " 'what you don do!',\n", - " 'rap no mafa no overdose',\n", - " 'nti na last year me drop’ie 60 collabos',\n", - " 'me san so drop’ie a couple of singles',\n", - " 'and all of those singles a, me drop’ie ne nyinaa nso yɛ fire mom',\n", - " 'no kissing verse kraa tumi gye the best rapper',\n", - " 'finally me ne flavour mom, you know the xfactor',\n", - " 'wo nua mɛbɛn me na me level no yɛ kanye ne jigga',\n", - " 'fa wo bobby schmurda life no kɔbɔ prank masa',\n", - " 'mebɔ dwom a, boys no gyegye ho sɛ pasiguard',\n", - " 'didi a, na ma da yɛfrɛ me adidas',\n", - " 'sɛ mo nbu me kraa mo nfa me nsi bɛbi papa',\n", - " 'na yento nipa nkwene, tiefi kraa yɛde yɛ biogas',\n", - " 'ɛdwom wei nkɔ ma mo a, mo feel’ie sarkodie no flow',\n", - " 'yankopɔn ne disciples me medea ne mo oo',\n", - " 'wei yɛ by the way me tɔn asaase one plot oyarifa wo a, w’ani gye ho bɔmɔden brɛ me dough',\n", - " 'fiti mmre a, me drop’ie borga borga',\n", - " 'mo anomu nsɛn ny3lɛ duro, elooki rubber rubber',\n", - " 'mo de ntɔtɔfifii wei compare sarkodie a, ayɛ sɛ deɛ wo de aben wo ha compare bisa kdei brother brother',\n", - " '2017 afutuo a, me de bɛma against',\n", - " 'sɛ yɛ tɔn mo kra a, moso mfasoɔ ntɔ me kɔm mu chain',\n", - " 'nti mo nkɔ so ndwene mo ho na mo guso dwen me ho na mede plane nam m’upampamu sɛ tory lanez',\n", - " 'so what you won do',\n", - " '(what you won do)',\n", - " 'two of the greatest',\n", - " 'how we come through',\n", - " '(what you don do)',\n", - " 'when we step inna the back inna yah yard aah',\n", - " 'what you won do',\n", - " 'what you wanna do',\n", - " 'you won show me',\n", - " 'acting like you don’t know me',\n", - " 'what you won do',\n", - " 'what you won do!',\n", - " 'what you don do',\n", - " 'what you don do!',\n", - " 'if i dail up my babe, she better halla back (shoddy better halla beck)',\n", - " 'cause, its too much money and i am like ‘shoddy where ya at’ (where ya at ,where ya at)',\n", - " '(mese)',\n", - " 'you won show me, quite acting like you don’t know me',\n", - " '(mese)',\n", - " 'it’s too much money and i am like shoddy see you better halla back (halla back, halla back)',\n", - " '(she is dangerous, bring somebody come save me oo)',\n", - " 'sark',\n", - " 'jezze jagga',\n", - " 'bumba!',\n", - " '2017 and forever',\n", - " 'it’s real',\n", - " 'yao',\n", - " 'this caribbean air got me feeling like a millionaire (wuh)',\n", - " \"hold up, that's 'cause i'm a millionaire (auh)\",\n", - " \"under the mattress, yeah, that's a million there (yeah)\",\n", - " \"and i won't stop until i make it to a billionaire (billionaire)\",\n", - " 'ando haciendo dinero desde que era un menor (yao)',\n", - " \"yo sé lo que e' la esquina, sé que el fuego da calor (prr)\",\n", - " 'le di esperanza a mi familia (okey)',\n", - " \"ahora vivimo' como si me gané el powerball, yao'\",\n", - " 'y no fue la lotería (no)',\n", - " \"mi vida estaba apagá' y le puse batería (ajá)\",\n", - " \"yo soy el cantante que tú ve' por la televisión (yes)\",\n", - " 'soy el causante que tu puta brinque de emoción',\n", - " 'parece que soy un dios, siempre se arrodilla (amén)',\n", - " \"voy tildao' como un diamante para ella brillar (bling, bling), bling, bling\",\n", - " \"le metí toa' la noche y la tipa no tenía fin\",\n", - " 'oh, shit sigamos el capítulo (oh, shit; capítulo)',\n", - " 'dile a tu novio que no sea tan ridículo (ridículo)',\n", - " \"dile que le faltan testículo'\",\n", - " 'y yo soy el dueño de ese culo con todo y título (wow)',\n", - " 'si te la quito, mala mía (mala mía)',\n", - " \"yo la tengo felí' y tú la tenía' aborrecía' (aborrecí'a)\",\n", - " 'toda la noche gritando \"ave maría\"',\n", - " 'ese toto cuando me ve me dice: \"bueno\\' día\\'\" (bueno\\' día\\')',\n", - " \"y despué' que pasa el día (pasa el día, wuh)\",\n", - " 'ella me dice: \"buena\\' tarde\\'\" (wuh)',\n", - " \"siempre me espera encendí'a (encendí'a)\",\n", - " \"despué' que yo le meta no importa si llego tarde (auh)\",\n", - " 'this caribbean air got me feeling like a millionaire',\n", - " \"hold up (hold up), that's 'cause i'm a millionaire\",\n", - " \"under the mattress, yeah, that's a million there\",\n", - " \"and i won't stop until i make it to a billionaire\",\n", - " 'hmm to a billionaire',\n", - " 'hmm-hmm, to a-to a billionaire',\n", - " 'i was born to be a millionaire',\n", - " \"but i won't stop until i make it to a billionaire (auh)\",\n", - " 'got mi coupe, no roof, no ceiling here',\n", - " \"smoking sour on the island, yeah, we trippin' there\",\n", - " 'see me take lick to them boys over there',\n", - " \"behave yourself and don't make them come over here (over here)\",\n", - " 'como batman, me come from the island',\n", - " 'puerto rican style, mixed with some jamaican',\n", - " 'the ogs in my hood call me flash',\n", - " 'fast as a motherfucka with this cash',\n", - " \"flippin' this, flippin' that (flippin' that)\",\n", - " 'fast money, go getter, you know i represent that',\n", - " 'when i toured, last week, took my niggas with me',\n", - " 'no mc but i keep them hammers with me',\n", - " 'this caribbean air got me feeling like a millionaire',\n", - " \"hold up, that's 'cause i'm a millionaire\",\n", - " \"under the mattress, yeah, that's a million there\",\n", - " \"and i won't stop until i make a to a billionaire\",\n", - " 'hmm to a billionaire',\n", - " 'hmm-hmm, to a-to a billionaire',\n", - " 'i was born to be millionaire',\n", - " \"but i won't stop until i make a to a billionaire\",\n", - " 'yeah, baby, i like it like that',\n", - " 'you gotta believe me when i tell you',\n", - " 'i said i like it like that',\n", - " 'you gotta believe me when i tell you',\n", - " 'i said i like it like—',\n", - " 'now i like dollars, i like diamonds',\n", - " \"i like stuntin', i like shinin' (yeah)\",\n", - " 'i like million dollar deals',\n", - " \"where's my pen? bitch i'm signin' (signin')\",\n", - " 'i like those balenciagas (those)',\n", - " 'the ones that look like socks',\n", - " 'i like going to the jeweler',\n", - " 'i put rocks all in my watch (cha-ching)',\n", - " 'i like texts from my exes when they want a second chance (what?)',\n", - " 'i like proving niggas wrong',\n", - " \"i do what they say i can't\",\n", - " 'they call me cardi bardi, banging body',\n", - " 'spicy mami, hot tamale',\n", - " 'hotter than a somali, fur coat, ferrari (rrr, woo)',\n", - " \"hop out the stu', jump in the coupe (coupe)\",\n", - " 'big dipper on top of the roof',\n", - " 'flexing on bitches as hard as i can',\n", - " \"eating halal, driving the lam'\",\n", - " \"told that bitch i'm sorry though (sorry though)\",\n", - " \"'bout my coins like mario (mario)\",\n", - " 'yeah, they call me cardi b',\n", - " 'i run this shit like cardio',\n", - " 'woo, facts',\n", - " 'diamond district in the chain, chain (i said i like it like that)',\n", - " \"certified, you know i'm gang, gang, gang, gang (i said i like it like—woo)\",\n", - " 'drop the top and blow the brains, woo (woo, i said i like it like that)',\n", - " \"oh, he's so handsome, what's his name? yeah (woo, facts, i said i like it)\",\n", - " 'oh, i need the dollars, cha-ching (i said i like it like that)',\n", - " 'beat it up like piñatas (i said i like it like—; uh)',\n", - " 'tell the driver, close the curtains (i said i like it like that, skrrt)',\n", - " 'bad bitch make you nervous (i said i like it)',\n", - " 'cardi b',\n", - " 'chambean, chambean, pero no jalan (¡jalan!)',\n", - " \"tú compras to'a las jordan, bo, a mí me las regalan (jeje)\",\n", - " 'i spend in the club what you have in the bank (¡wuh; ¡yeh!)',\n", - " 'this is the new religion bang in latino gang, gang, ¡yeh!',\n", - " 'trato de hacer dieta, pero es que en el closet tengo mucha grasa (¡yeh!; ¡wuh!)',\n", - " \"ya mudé la' gucci pa' dentro de casa, yeh (¡wuh!)\",\n", - " 'cabrón, a ti no te conocen ni en plaza (no)',\n", - " 'el diablo me llama, pero jesucristo me abraza (amén)',\n", - " 'guerrero como eddie, que viva la raza, yeh',\n", - " 'me gustan boricuas, me gustan cubanas',\n", - " 'me gusta el acento de las colombianas (¿qué hubo pues?)',\n", - " 'como mueve el culo la dominicana (¿qué lo que?)',\n", - " 'lo rico que me chingan las venezolanas (¡wuh!)',\n", - " 'andamos activos, perico pin pin (wuh)',\n", - " 'billetes de cien en el maletín (¡ching!)',\n", - " 'que retumbe el bajo, bobby valentín, yeh (¡buh!)',\n", - " 'aquí es prohibido amar, diles, charytín',\n", - " \"que pa'l picor les tengo claritín\",\n", - " 'yo llego a la disco y se forma el motín (¡rrrah!)',\n", - " 'diamond district in the chain (i said i like it like that)',\n", - " 'bad bunny baby, bebé, bebé',\n", - " \"certified, you know i'm gang, gang, gang, gang (i said i like it like—woo)\",\n", - " 'drop the top and blow the brains, woo (woo, i said i like it like that)',\n", - " \"oh, he's so handsome, what's his name? yeah (woo, yeh, i said i like it)\",\n", - " 'oh, i need the dollars, cha-ching (i said i like it like that)',\n", - " 'beat it up like piñatas (i said i like it like—)',\n", - " 'tell the driver, close the curtains (i said i like it like that, skrrt)',\n", - " 'bad bitch make you nervous (i said i like it, that)',\n", - " \"como celia cruz tengo el azúcar (azúca')\",\n", - " 'tu jeva me vio y se fue de pecho como jimmy snuka (ah)',\n", - " 'te vamos a tumbar la peluca',\n", - " \"y arranca pa'l carajo, cabrón, que a ti no te vo'a pasar la hookah (hookah, hookah)\",\n", - " 'mis tenis balenciaga me reciben en la entrada (wuh)',\n", - " \"pa-pa-paparazzi like i'm lady gaga (wuh)\",\n", - " 'y no te me hagas (eh)',\n", - " 'que en cover de billboard tú has visto mi cara (eh)',\n", - " 'no salgo de tu mente (wuh)',\n", - " 'donde quieras que viajes has escuchado \"mi gente\"',\n", - " \"yo no soy hype, soy como el testarossa (hype; 'rossa)\",\n", - " 'yo soy el que se la vive y también el que la goza (goza, goza)',\n", - " 'es la cosa, mami es la cosa (cosa, cosa)',\n", - " 'el que mira sufre y el que toca goza (goza, goza, goza)',\n", - " 'i said i like it like that',\n", - " 'i said i like it like that (rrr)',\n", - " 'i said i like it like that (woo)',\n", - " 'i said i like it like that',\n", - " 'diamond district in the chain (i said i like it like that)',\n", - " \"certified, you know i'm gang, gang (i said i like it like—)\",\n", - " 'drop the top and blow the brains, woo (i said i like it like that)',\n", - " \"oh, he's so handsome, what's his name? yeah (i said i like it)\",\n", - " ':',\n", - " 'hate me prome, kai stima, den final semper ma stima bosan',\n", - " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", - " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", - " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", - " 'di antias mita.(huh)',\n", - " 'di antias mita',\n", - " 'di antias mita.(huh)',\n", - " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", - " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", - " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", - " ':',\n", - " 'trap mi swag na modi bisa',\n", - " 'stack on stack balora tur pida',\n", - " 'anto handle fast si tin hopi sifras',\n", - " 'tin kos mahos pabo tin kos bunita',\n", - " \"connectie limpi stail'i kompania\",\n", - " 'mi wak pasado mes ta eng pa mira',\n", - " 'semper tin kos mas miho den bida',\n", - " 'korsou ta mas nechi ku costa rica',\n", - " \"fo'i hato bota mira bon bini sua\",\n", - " 'mi tin un barba mane terrorista',\n", - " 'schets dos lista pami settle bida',\n", - " 'mi muhe di kas mester ta egt bonita',\n", - " 'limpia bon anto stel kuminda',\n", - " \"styl'i dev baha bo tempo sinta\",\n", - " 'puntrami semper ku tin dress pa strika',\n", - " \"si sen ta papia mike p'e stack por grita\",\n", - " 'pami check famia mi di....',\n", - " ':',\n", - " 'hate me prome, kai stima, den final semper ma stima bosan',\n", - " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", - " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", - " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", - " 'di antias mita.(huh)',\n", - " 'di antias mita',\n", - " 'di antias mita.(huh)',\n", - " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", - " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", - " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", - " ':',\n", - " 'bosa kuantu hende ta soda traha?',\n", - " 'overtime pa nan por kobra mas',\n", - " 'gobiernu ta roba nan',\n", - " 'belastingdienst ta roba nan',\n", - " 'esnan ku kolo nan ta kontrola',\n", - " 'sakami foi rei mati kon por ta?',\n", - " 'e makamba mi tras ta bon droga',\n", - " \"bo'n ta tira bista den su otro tas\",\n", - " 'nan ke kue antiano ke moccro nan',\n", - " 'nan no ke mi bon mi no ta kolo kla',\n", - " 'mi tin mas ku 20 aña ta soporta',\n", - " 'nan ke wak mi manera e bobo nan',\n", - " 'mi ke tereno ku un otro kas',\n", - " 'mi hasi malu pami por lográ',\n", - " 'dios pordoná, niun hende lo no sa',\n", - " \"bo'n ta bira riku mes di dos toká anto nunka mas...\",\n", - " ':',\n", - " 'hate me prome, kai stima, den final semper ma stima bosan',\n", - " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", - " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", - " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", - " 'di antias mita.(huh)',\n", - " 'di antias mita',\n", - " 'di antias mita.(huh)',\n", - " \"si nan ke mi morto ta'ki mita baha anto hopi ta muri trempan\",\n", - " 'futuro ta serka ahinda minsa ki mi tei bira mañan.(mañan)',\n", - " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita.(huh)',\n", - " ':',\n", - " 'hate me prome, kai stima, den final semper ma stima bosan',\n", - " 'si nan ke mi morto ta ki mita baha anto hopi ta muri trempan',\n", - " 'futuro ta serka ahinda minsa ki mi tei bira mañan',\n", - " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita',\n", - " 'di antias mita',\n", - " 'di antias mita',\n", - " 'di antias mita',\n", - " 'si nan ke mi morto ta ki mita baha anto hopi ta muri trempan',\n", - " 'futuro ta serka ahinda minsa ki mi tei bira mañan',\n", - " 'mi ke kaba den villa, 3 jeep den kura paso di antias mita',\n", - " 'bombay ke gully ko kholu mainjese ye dhakkan hai',\n", - " 'bhai tera ram aur altaf ye lakhan ye',\n", - " 'baki sab button hai, tereliye bhacchan hai',\n", - " 'chotti si murgi, hum mutton hai',\n", - " 'lerele button aur khane ke wande',\n", - " 'nahane pe dhyan de mere gaane se gyan le',\n", - " 'nanhi si jaan, mujhse tu jaan le',\n", - " 'main hu salman, tu fardeen khan beh',\n", - " 'insta pe sarkar aur asal me bachhan hai',\n", - " 'khudko bolte teer, par namu nishan khatam hai',\n", - " 'machis ki kandi, jiske ham chillam hai',\n", - " 'chillam chale kam nahi toh dharavi mein fillum hai',\n", - " 'khullum khale baat bheje mein daal le',\n", - " 'daal mein kaala nahi pure bombay mein maal hai (oh shit)',\n", - " 'itna sa maal hai hai ki saal tak dhamal hai',\n", - " 'mera tu chodd tu khudka sambhal',\n", - " 'ajj tera kal mera, kal tera ajj',\n", - " 'tu jaha ka sher waha main karu raaj',\n", - " 'jhol tere khulle aur mere sab razz',\n", - " 'chotte tu kaidh mein, daal diye bars',\n", - " 'chotte sunn, idhar aa idhar aa',\n", - " 'ek kaam hai (kya?)',\n", - " 'idhar aa idhar aa',\n", - " 'chotte sunn (nahi)',\n", - " 'chotte sunn (kya?)',\n", - " 'chotte sunn (nahi)',\n", - " 'idhar aa idhar aa',\n", - " 'gucci aur nike, sab tere bhai ki',\n", - " 'dharavi mein shotters mere, tension mereko kaiki',\n", - " 'network thora slow slow (ok)',\n", - " \"but money counting high speed (it's lit!)\",\n", - " 'ek phone pe yaha mere shooters karte fighting',\n", - " 'yaha koi big shot toh koi hai jholler',\n", - " 'koi hai badhir toh koi hai sober',\n", - " 'koi hai decent toh koi hai loafer',\n", - " 'inn sab ke beech mein ek rapper',\n", - " 'jabhi niklu naake se, ye bolle mujhe rap kar',\n", - " 'tere samne ganna gaa ke bana kya mein rapper',\n", - " 'raasta chorr, ban kar tera bhan bhan',\n", - " 'flow maru bheja pe, sidha bole dhan dhan',\n", - " 'aur ye bhaage jaise run run',\n", - " 'jaise hi aapne gaane shuru, tere gaane bandh bandh',\n", - " 'old school swaad jisme bajje biggie big pun',\n", - " 'tera mitha kaam kyuki tu sunta lil pump',\n", - " 'mera style thora altar aur bhaari hai',\n", - " 'bars aur sound thora hattkar, game full on aur ham jaise master',\n", - " 'boli meri tez tere shooters se bhi faster',\n", - " 'mat pith peeche baat kar, gang meri chill kar dhv mein raat bhar',\n", - " 'sick mera flow, world wide jaise chopper',\n", - " 'ek saas mein badaldu, mausam',\n", - " 'khatri scene apna tera kaam hai sasta',\n", - " 'ye flow itni variety kyuki sunta main hu busta',\n", - " 'ab gaane karke kill, mera hater bhi ye sunta',\n", - " 'aur ham kamate paisa, woh kamata ghanta',\n", - " 'paatli gaali pakad ghar ja (woo)',\n", - " 'denge nahi toh kharcha (skrr)',\n", - " 'sahi rahega yaha se wattja (chal)',\n", - " 'nahi toh tu khayega fatka (phatak)',\n", - " 'game flip 2018 (haan?)',\n", - " 'saath mein homeboy loka (loka)',\n", - " 'gaana full volume mein baja (baja)',\n", - " 'mc altaf mumbai 17 (chal)',\n", - " 'chotte sunn, idhar aa idhar aa',\n", - " 'ek kaam hai (kya?)',\n", - " 'idhar aa idhar aa',\n", - " 'chotte sunn (nahi)',\n", - " 'chotte sunn (kya?)',\n", - " 'chotte sunn (nahi)',\n", - " 'idhar aa idhar aa',\n", - " 'gucci aur nike, sab tere bhai ki',\n", - " 'dharavi mein shotters mere, tension mereko kaiki',\n", - " 'network thora slow slow (ok)',\n", - " \"but money counting high speed (it's lit!)\",\n", - " 'ek phone pe yaha mere shooters karte fighting',\n", - " 'zig zag',\n", - " 'mueve mueve ese culololololololo',\n", - " 'sha-sha-sha-sha-shake that ass',\n", - " 'woyoyoyoyoy (culololololololo)',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " 'mueve mueve ese',\n", - " 'zig zag ziggy zig zag ziggy zig zag (ay mama)',\n", - " 'chorus:',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " 'toda la nenas quieren que la pongan en la lista',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " 'culololololololo',\n", - " 'vers 1',\n", - " 'hay mujeres que le gusta',\n", - " 'hay mujeres que le encanta',\n", - " 'hay mujeres que le adora',\n", - " 'moviendo la cintura en club te devora',\n", - " 'por la calle ella es señorita',\n", - " 'le gusta freak out en la pista',\n", - " 'le gusta get in to the zona',\n", - " 'she tha bomba poom poom terrorista',\n", - " 'ohhhh',\n", - " 'the way you loosing up your body',\n", - " 'got me begging for more',\n", - " 'let me hear you say ohhhh',\n", - " 'so what you doing to me',\n", - " 'working it slow',\n", - " 'baby put it on me',\n", - " 'here on the floor',\n", - " 'and don’t let go',\n", - " 'baby put on a show',\n", - " 'shake your shake your booty now',\n", - " 'mueve mueve ese culololololololo',\n", - " 'chorus:',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " 'toda la nenas quieren que la pongan en la lista',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " '(woyoyoyoyoy)',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " 'mueve esas caderas mami como un artista',\n", - " 'zig zag ziggy zig zag ziggy zig zag (hey)',\n", - " 'vers 2',\n", - " 'si tu quieres chit chat anda pa fuera',\n", - " 'si quieres zig zag mueve mueve esas caderas',\n", - " 'si te pones grumpy mami digo bona sera',\n", - " 'tengo toda la noche pa bailar a mi manera',\n", - " 'si tu quieres poom poom pang pang mera mera',\n", - " 'quieres ser mi queen',\n", - " 'numero uno la primera',\n", - " 'eres africana o guantanamera',\n", - " 'no matter where you’re from representa tu bandera',\n", - " 'chorus:',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " 'toda la nenas quieren que la pongan en la lista',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " '(woyoyoyoyoy)',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " 'mueve esas caderas mami como un artista',\n", - " 'zig zag ziggy zig zag ziggy zig zag (hey)',\n", - " 'vers 1',\n", - " 'hay mujeres que le gusta',\n", - " 'hay mujeres que le encanta',\n", - " 'hay mujeres que le adora',\n", - " 'moviendo la cintura en club te devora',\n", - " 'por la calle ella es señorita',\n", - " 'le gusta freak out en la pista',\n", - " 'she da real deal freaktiona',\n", - " '#zigzag put it on the insta',\n", - " '#zigzag put it on the insta',\n", - " 'so what you doing to me',\n", - " 'working it slow',\n", - " 'baby put it on me',\n", - " 'here on the floor',\n", - " 'mueve esas caderas mami como un artista',\n", - " 'mueve esas caderas mami como un artista',\n", - " 'chorus:',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " 'toda la nenas quieren que la pongan en la lista',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " '(woyoyoyoyoy)',\n", - " 'zig zag ziggy zig zag ziggy zig zag',\n", - " 'mueve esas caderas mami como un artista',\n", - " 'zig zag ziggy zig zag ziggy zig zag (hey)',\n", - " 'ziggy ziggy zig zag',\n", - " 'woyoyoyoyoy',\n", - " 'reego',\n", - " 'ay mama',\n", - " 'narator: mesaj pentru europa:',\n", - " 'cheloo:',\n", - " 'nu suntem ciori, nu stăm în corturi',\n", - " 'facem eforturi să ne elevăm',\n", - " 'și nu cântăm pe străzi în viena la acordeon',\n", - " 'noi nu cerșim cu handicapul la vedere să facem avere',\n", - " 'și nu ghicim viitorul în palmă în dughene mizere',\n", - " 'ombladon:',\n", - " 'noi nu purtăm fuste-nflorate și nu furăm din buzunare',\n", - " 'nu emigrăm în suedia cu 7 copii să ne dați ajutoare',\n", - " 'dați vina pe noi din berlin în pamplona de-mi sare voma -',\n", - " 'mânca-mi-ați p*la n-o ăa găsiți un român în rulote la roma',\n", - " 'cheloo:',\n", - " 'noi înghețăm în săli de clasă de la 6-7 ani (în p*la mea)',\n", - " '6-7 ore pe zi, fără căldură, mâncare și bani',\n", - " 'ombladon:',\n", - " 'avem părinți săraci acasă și un lucru e sigur -',\n", - " 'ni se cultivă dorința de-a reuși în viață de unul singur',\n", - " 'cheloo:',\n", - " 'ne confruntăm cu legi noi date de boi',\n", - " 'dansează cu noi valsul p*lii mele: un pas înainte, doi înapoi',\n", - " 'ombladon:',\n", - " 'mă piș pe gay și nu-i normal ca copiii mei să vadă',\n", - " 'homosexuali care se ling în gură ostentativ pe stradă',\n", - " 'e la modă sa fim toleranți, dar nu reînviem sodoma -',\n", - " 'vă putem trimite bulangii în pachet la barcelona',\n", - " 'cheloo:',\n", - " 'suntem ruda săracă, deci nu putem fi frați',\n", - " 'mesaj pentru europa:',\n", - " 'cred că ne confundați!',\n", - " 'ombladon:',\n", - " 'n-avem 7 frati acasa',\n", - " 'mama chiar nu e bolnava',\n", - " 'tata si-a beut rapid cafeaua',\n", - " 's-ia plecat la munca-n graba',\n", - " 'cheloo:',\n", - " 'facem facultăți și dăm pe cărți ultimul ban',\n", - " 'n-o să fim vreodată gunoieri la amsterdam',\n", - " 'vorbim 3 limbi și vă putem conduce avioanele',\n", - " 'dar nu putem în p*la mea socializa cu tomberoanele!',\n", - " 'ombladon:',\n", - " 'forțăm uși închise, trăim cu vise nepermise',\n", - " 'și muncim legal un an pentru un pumn de fise',\n", - " 'cheloo:',\n", - " 'bagă la cap repede, crede-ne, noi nu mâncăm lebede',\n", - " 'ne respectăm, ne rezolvăm singuri problemele',\n", - " 'ombladon:',\n", - " 'javrele și curvele în madrid vă îngroașă șatrele',\n", - " 'noi, românii, stăm la rând sa vă umplem teatrele',\n", - " 'cheloo:',\n", - " 'votăm în scârbă, e adevărat, și țara e praf, pulbere fină',\n", - " 'căci e mai ieftin să dai banul jos când cumperi o ruină',\n", - " 'banii pe 10 ani de la u. e. dispar în vile',\n", - " 'în străzi inexistante și tehnologii inutile',\n", - " 'ombladon:',\n", - " 'dacă avem pile: băi, cârnaților! pardon - băi, fraților',\n", - " 'putem cere detalii picante în pădurea spânzuraților',\n", - " 'cheloo, ombladon:',\n", - " '(sunt inofensiv, dar gândul meu e criminal!)',\n", - " 'narator:',\n", - " 'timpul s-a scurs pentru această prezentare. la final trebuie să precizăm că românia e o țară',\n", - " 'în africa, noi trăim în găuri insalubre sub pământ, suntem canibali, vânăm șobolani cu',\n", - " \"arcu', n-avem mașini că ne deplasăm prin copaci vopsiți în galben și toate construcțiile care\",\n", - " 'le puteți admira, daca alegeți să faceți o excursie pe aceste meleaguri, au fost construite de o',\n", - " 'civlizație superioară cu care noi nu avem nicio legatură..... vă mulțumim!',\n", - " 'english translation',\n", - " 'message to europe',\n", - " 'message to europe:',\n", - " 'we are not crows(1)',\n", - " \"we don't live in tents\",\n", - " 'we make efforts to elevate ourselves',\n", - " \"and we don't play the accordion on the streets of wien\",\n", - " \"we don't beg showing off our handicap, to make a fortune\",\n", - " \"and we don't tell the fortune in dirty trailers\",\n", - " \"we don't wear flowery skirts and we don't pick pockets\",\n", - " \"we don't emigrate to sweeden with 7 children to get help\",\n", - " 'you blame us, from berlin to pamplona, making me sick',\n", - " \"suck my dick(2), you won't see any romanian in trailers around rome\",\n", - " \"we freeze in classrooms since we're 6-7 years old\",\n", - " '6-7 hours a day without heating, food or money',\n", - " 'we have poor parents at home and one thing is for sure',\n", - " 'we are cultivated as to make it in life',\n", - " 'by ourselves',\n", - " 'we face new laws',\n", - " 'made by idiots',\n", - " 'dance with us',\n", - " \"my dick's waltz is a step forward, two steps backward\",\n", - " \"i piss on gays, and it's not normal that my children see\",\n", - " 'homosexuals making out ostentatiously in the street',\n", - " \"it's trendy being tolerant but don't revive sodom(3)\",\n", - " 'we can send you the fags packing to barcelona',\n", - " 'we are the poor relative so we cannot be brothers',\n", - " \"message to europe: i think you're confusing us\",\n", - " \"we don't have 7 brothers at home\",\n", - " 'our mother is really not sick',\n", - " 'our father quickly drank his coffee',\n", - " 'and hastily left for work',\n", - " 'we go to colleges',\n", - " 'and spend our last penny on books',\n", - " 'we will never be garbagemen in amsterdam',\n", - " 'we speak 3 languages, and we can fly your planes',\n", - " 'but we cannot fucking socialize with trashcans',\n", - " 'we force closed doors, we live with disallowed dreams',\n", - " 'and we legally work a whole year for a fistful of tokens',\n", - " 'let it enter your head, quickly, believe us',\n", - " \"we don't eat swans(4)\",\n", - " 'we respect ourselves, we solve our own problems',\n", - " 'lowlifes and whores strengthen the ranks of gipsy settlements(5) in madrid',\n", - " 'we the romanians line up to fill theaters',\n", - " \"we vote disgusted, it is true, and the country's turned to dust, fine powder\",\n", - " \"because it's easier to pay upfront when buying a wreckage\",\n", - " '10 years worth of money from eu disappear in mansions(6)',\n", - " 'in non-existent streets and useless technologies',\n", - " 'if we have connections, you assholes(7), my bad, you brothers',\n", - " 'we can ask for spicy details in \"the forest of the hanged\"(8)',\n", - " 'x4',\n", - " \"i'm harmless but my thought kills\",\n", - " '(the time for this presentation has ran out',\n", - " 'in the end, we must specify that romania is a country in africa',\n", - " \"we live in unhygienic holes underground, we're cannibals, we hunt rats with bows\",\n", - " \"we don't have cars because we travel through trees painted in yellow\",\n", - " 'and all the constructions that you can admire if you choose to take a trip through these lands are built by a superior civilization that we have nothing to do with',\n", - " 'thank you(9)',\n", - " 'sagaa',\n", - " 'hayba kenkeba, boys kasa but dedekwa',\n", - " 'wop3 flavor flavor miaaa',\n", - " 'hayba kenkeba, boys kasa but dedekwa',\n", - " 'wop3 flavor flavor miaaa',\n", - " 'ah feeling no y3 deep',\n", - " 'all them other girls feeling me',\n", - " 'young daddy lumba with the steeze',\n", - " 'but ebi you wey i pick eyei eyei',\n", - " 'hw3 s3 y3 ka y3 manti',\n", - " 'ɔdi ni nsa awɔ me ni',\n", - " 'me nai gu abɔnten se yi aaa',\n", - " 'king king promise',\n", - " 'all for you all for you',\n", - " 'y3 yi ni one one but see i fall for two',\n", - " 'magic sticks as she feel the cruise',\n", - " 'what we dey do',\n", - " 'mi hu nsem pii nso wa yi ne ni',\n", - " 'taste and see anokwa nipa ni',\n", - " 'nti mi sendi nu pictures edi yi n3 ni',\n", - " 'hayba kenkeba, boys kasa but dedekwa',\n", - " 'wop3 flavor flavor miaaa',\n", - " 'hayba kenkeba, boys kasa but dedekwa',\n", - " 'wop3 flavor flavor miaaa',\n", - " 'come on',\n", - " 'ekɛɛ sɛkɛ julie checki style nu o',\n", - " 'kɛ norr ewor lɛ free shi eha lɛ side pool',\n", - " 'julie den things na check your bolt',\n", - " 'mi ni noor ekɛ esor mi o',\n", - " 'sɛkɛ julie mi ni long more',\n", - " 'otumi sor mi mu na wa kase enyɛ mi o yei',\n", - " 'sɛkɛ julie say she want more',\n", - " 'sɛkɛ julie sɛkɛ julie sɛkɛ julie oh',\n", - " 'first things first',\n", - " 'all play and no work dey make man stress',\n", - " 'but all work and no play dey make man vex',\n", - " 'sprite season come, obey your thirst',\n", - " 'see how we dey put in work',\n", - " 'if placebo knack she go do you jɛ',\n", - " 'she never go do you dirt',\n", - " 'over ego over you miaa na ɔpɛ',\n", - " 'hayba kenkeba, boys kasa but dedekwa',\n", - " 'wop3 flavor flavor miaaa',\n", - " 'hayba kenkeba, boys kasa but dedekwa',\n", - " 'wop3 flavor flavor miaaa',\n", - " 'hwɛ ni tu kese bi',\n", - " 'odi bɛ gyegye mi',\n", - " 'aden mashɛ wo sɛ koko shɛ bikini 𝘍𝘶𝘤𝘬',\n", - " 'ɔse mi ntu mi bo',\n", - " 'misii miti ni su',\n", - " 'kala woho pupo',\n", - " 'i dey beg 𝘵𝘢𝘭𝘬',\n", - " 'aden awor di wo',\n", - " 'daabi wo pɛ dodo',\n", - " \"afei na wu bisa mi i'm in love or not\",\n", - " 'yes and no i be on and off',\n", - " 'ensu mor baby hold your body i dey yah',\n", - " 'you no dey search porch girl i dey flavor',\n", - " 'and you dey tell me push girl i go take am',\n", - " 'i go take am wama mi daa enda',\n", - " 'today be the day you for come through',\n", - " 'big batty girl make i hold you',\n", - " 'if ebi the thing we do we go born two',\n", - " 'we go born two make we force through',\n", - " 'ah we ah rich man ah talk demma talk',\n", - " 'dem ah no big man',\n", - " 'spectacular fire you know me ah twinkle',\n", - " 'simple girl mi love your dimple',\n", - " 'you see how mi king mi money sprinkle',\n", - " 'girl you are the best thing',\n", - " 'mi say you get the best thing',\n", - " 'afi nail pon me like a biking',\n", - " 'mi say big bumpa girl ah you mi liking',\n", - " 'hayba kenkeba, boys kasa but dedekwa',\n", - " 'wop3 flavor flavor miaaa',\n", - " 'hayba kenkeba, boys kasa but dedekwa',\n", - " 'wop3 flavor flavor miaaa',\n", - " 'aboa, woto nono',\n", - " 'somebody dey call me na whai nono',\n", - " 'mi bɛ sor mu apotor sɛ dorkonuno',\n", - " 'killmatic, yen locki pununu',\n", - " 'herh bigman for where',\n", - " 'ni sisi akyi ne gu hor no',\n", - " \"she's aware\",\n", - " 'osi ɔpɛ shapes mi bɛ ma na kor ni square',\n", - " '5k for agadzi odo ti mi su ee',\n", - " \"eei i give feelings bi she's feeling bee\",\n", - " \"she say i'm too nice so she skipping me\",\n", - " 'styles so heavy make i trigger on her jeans',\n", - " 'wornu panie two pɛ girl ah scream soo deep',\n", - " 'boys kasa girls abre o',\n", - " 'mi kor nu square papa rock her world',\n", - " 'she spoil papa then she knows',\n", - " \"b4bor mi jɛ baby please don't quit\",\n", - " 'hayba kenkeba, boys kasa but dedekwa',\n", - " 'wop3 flavor flavor miaaa',\n", - " 'hayba kenkeba, boys kasa but dedekwa',\n", - " 'wop3 flavor flavor miaaa',\n", - " \"my mamy bagi i nike'i jak spike lee jesteśmy braćmi\",\n", - " 'choć nie łączy nas znak krwi, to po prostu w nas tkwi',\n", - " 'biali jak brother ali, czarni cali jak ice-t',\n", - " \"spalamy na popiół te mic'i tak jak jedi mind tricks\",\n", - " 'tysiące kultur i wyznań, ściągam mundur i broń',\n", - " 'nie ważna jest religia, nie czuję buntu hip-hop w tej kwestii',\n", - " \"jesteśmy mc's nie ważne jaka skóra\",\n", - " 'nullo stara piaskowa góra, trzeci wymiar, noo, ahh',\n", - " 'a yo big mug, the kid bug, he loves street smartz',\n", - " 'flip any amount my hands are on like trampoline stars',\n", - " 'cheap cars pull up, jumping out with mask on',\n", - " 'stash gone, no reach? getting left with 2 cast arms',\n", - " 'product stays fresh in them glass jars',\n", - " \"dudes ain't hustling right? good reason to snatch yours\",\n", - " 'staying on point and looking sharp like them cat claws',\n", - " 'tracks, be the place i eat (w)raps like snack bars',\n", - " \"they say hip-hop is lost, could never find it's way\",\n", - " 'al last ballot of the bullet, like malcolm i serenade',\n", - " 'corner ciphers, basements, cellars, and block parties',\n", - " 'music was the outlet, others they chased poonany',\n", - " 'went from devils music to marketing corporate rhapsody',\n", - " 'ea sports commercials jingles come from embass canvancy',\n", - " 'penetrate his larynx, while my clutch remains unplugged',\n", - " 'i po co kolo sapiesz? nie ważny kolor w rapie',\n", - " 'podobno jesteś homo sapiens, widzę, że sporo łapiesz',\n", - " 'ważny mikrofon, papier i słowo w rapie',\n", - " 'być sobą w rapie, mieć swoją magię nie fotografie',\n", - " 'możesz się jarać grą, albo nam zabrać tron',\n", - " 'możesz też złapać trop i możesz złapać pion',\n", - " 'i pewnie możesz złamać kod, a potem złapać lot',\n", - " 'a nie możesz złapać flow, jak zakrakać wron',\n", - " 'sheisty bombardment, black cops, re-con department',\n", - " 'is what gets called in, modern men blazin racism, saving face',\n", - " 'missing the case, religious crazy states',\n", - " 'manipulate candidates, go poly with ticks through hip-hop',\n", - " 'we express, discuss from mistrust',\n", - " \"passed on by dick jocks, we're bound to lick shots\",\n", - " 'noo age sound we spit hot, ripping the blocks to shreads',\n", - " 'shocking heads with sicker styles',\n", - " 'than you would get from lead, nigga',\n", - " 'dla ciebie liczy się skóra i czy nosi długie srebro szyja',\n", - " 'nie kupuję tego gówna jak wielbłąd cygar',\n", - " 'po co się spinasz? życie to nie bitwa w termopilach',\n", - " 'przyda się endorfina modna dziś jak splendor w chinach',\n", - " 'nie zajedziesz na tym flow gringo, dalej niż w bok windą',\n", - " 'jak widzę glob nad nim rąk milion to hip-hop',\n", - " 'tu nie ważne są różnice, granice, kolor skóry',\n", - " 'to prywatny koncert życzeń rap manufaktury',\n", - " 'racist is everywhere in cultural estates',\n", - " 'no matter the place feeble minds breed hate',\n", - " 'where was it written and who wrote the knowledge?',\n", - " \"from what time frame? and from where'd they call it?\",\n", - " 'from a time of open minds kill all the hearsay',\n", - " 'only thing that matters is what we do here today',\n", - " 'weak have to swim firm stands on land',\n", - " 'struggles everywhere, but not in here man',\n", - " \"i'm a mc, blaze mics despite the media\",\n", - " \"that's loke stereotypes so whenever i write\",\n", - " 'words in the from of a rhyme put the meaning behind',\n", - " \"each line, each time on stage i'm blessed\",\n", - " 'trzeci wymiar nato put that ass to the test',\n", - " \"see the world is a mess so imma rep hip-hop till there ain't nuttin\",\n", - " 'left right back at it the tounge flips automatic',\n", - " 'loose status if u dealin with us',\n", - " '9assaman billah, chefna lhilal',\n", - " 'fou9 mn tilal 3iddat rimat',\n", - " 'west 3id milad ah, barman sec ankhetmou lverrat',\n", - " \"hey bitch i'm rico, rassm chari3 bla haribo\",\n", - " 'courtman jouj sirocco dekhlou la zone tanwriko',\n", - " 'boom boom tam tam kech kech',\n", - " 'mora lhandjob ta7ou rasshom gha pch pch',\n", - " 'anyways flow ra mfenkech m3enkench sam3an t9es 7ech 7erbech',\n", - " 'ana fan d condom dyal king kong, ma voice ma phantom',\n", - " 'haram 7afdo kandan koun kan koun, stress khellani kanml',\n", - " \"bentou kamlin fake hoes, i'm sorry dmaghi mtrippi\",\n", - " 'dar loufafa f my shoes, l3am sala wnta ba9i tema',\n", - " \"ara ak for him, like a ghost i'm so real\",\n", - " 'wsselt 16 7ddi lif',\n", - " 'no way tell me my',\n", - " 'babe (x12)',\n", - " \"hola lmoney bouqui l'fure\",\n", - " 'babe (x12) , baby baby baby',\n", - " \"i'm killing my self for your lips wssthom daba bla douk ah ah\",\n", - " 'tracki ghaytle3 fl billboard kan7lem daba bla matfi9 ga3',\n", - " 'do do ri do si la ellesse fuck les sto w',\n", - " 'm3ak baby cha3l ferran, d7kna mgheni mkhelwd f rap',\n", - " 'rach rach, beef m3a farid el atrache',\n", - " 'tkhlet lma w fya chi 3tech, hello katty hahowa bda terch',\n", - " 'toujours dispo bla 7ech',\n", - " 'kan3el lpussy li 7tek yal mkechkech',\n", - " 'hnaya fissa3 ghattej, dmaghk nat9 b haarb yal mfenkech',\n", - " 'kech (x12)',\n", - " 'no way tell me my',\n", - " 'babe (x12)',\n", - " 'no way, no way tell me my',\n", - " 'babe (x12), baby baby baby',\n", - " \"you knew you'd find me\",\n", - " 'hmm, hmm',\n", - " 'you knew just where to find me',\n", - " 'hmm, hmm',\n", - " \"je t'aime beaucoup, tu es drôle, t'es à moi\",\n", - " 'hmm, hmm',\n", - " 'no longer you can deny me',\n", - " 'hmm, hmm',\n", - " \"it's blinding, your glory\",\n", - " 'your glory is blinding (hmm, hm-hmm)',\n", - " 'blinding, your glory is blinding',\n", - " 'your glory is blinding (hmm, hmm)',\n", - " \"i think i'm on the verge of breaking down\",\n", - " \"and i'm on the verge of breaking down, you know-oh-oh\",\n", - " \"think i'm on the verge of breaking down, you know-oh-oh\",\n", - " \"you know you'd find me\",\n", - " 'hmm, hmm',\n", - " 'you knew just where to find me',\n", - " 'hmm, hmm',\n", - " 'hmm, hmm',\n", - " \"moi j'aime beaucoup toi, t'es drôle, t'es à moi\",\n", - " 'hmm, hmm',\n", - " 'no longer you can deny me',\n", - " 'hmm, hmm',\n", - " \"it's blinding, your glory\",\n", - " 'your glory is blinding (hmm, hm-hmm)',\n", - " 'blinding, your glory is blinding',\n", - " 'your glory is blinding (hmm, hmm)',\n", - " 'where will we go?',\n", - " 'love of mine',\n", - " 'where will we go?',\n", - " 'love of mine',\n", - " 'live from the thorns that we rose from',\n", - " 'naked as we came, with no clothes on',\n", - " 'you know how it goes, they never know what goes on',\n", - " 'and end up dancing fast to a slow song, catching up',\n", - " \"it's not matching up, fire water is toxic\",\n", - " \"passion hot and heavy, it's like water for chocolate\",\n", - " \"we're in the mood for mimosas and olives on omeletes\",\n", - " 'sell love like drugs, i want all of the profit',\n", - " 'prophet of rage on the page',\n", - " 'i make the wage on the stage',\n", - " 'i sing songs of solidarity backstage with the sage',\n", - " 'sun salutation samba, palo santo mambo',\n", - " 'but our mood is mahmoud on the oud',\n", - " 'cuban link jesus sitting on grey goose',\n", - " \"baby, you're my muse, i make tunes while you bathe nude\",\n", - " \"and you know that's my style\",\n", - " \"if i'm caetano, mami, you could be my gal (costa)\",\n", - " 'you could be my gal, be my gal, be my gal, be my gal',\n", - " 'you could be my gal, be my gal, be my gal, be my gal (yeah, yeah, yeah, yeah, yeah)',\n", - " 'you could be my gal, be my gal, be my gal, be my gal (yeah, yeah, yeah, yeah, yeah)',\n", - " 'you could be my gal, be my gal, be my gal, be my gal',\n", - " 'in puerto rico like fania',\n", - " 'escutando maria bethânia',\n", - " 'no álibis in our business we be like nunya',\n", - " 'pacing with tanya, racing like anya (skrr)',\n", - " 'vai no que vai é um ciclone',\n", - " 'camiseta é ciclone',\n", - " 'sentimental é simone',\n", - " 'aí sim, aipim com a brahma',\n", - " 'man know a lot of thing but don’t know about drama',\n", - " 'two weeks in the cama',\n", - " 'john lennon and yoko',\n", - " ...]},\n", - " 'data': ['higher than the',\n", - " 'high',\n", - " 'higher than the moon',\n", - " \"i'm higher than the moon\",\n", - " 'higher than the moon',\n", - " \"i'll fly\",\n", - " 'higher than the moon',\n", - " 'i',\n", - " 'i be thaiboy goon',\n", - " 'shawty, who are you?',\n", - " 'catch me in a 22',\n", - " 'higher than the moon (moon)',\n", - " \"i'm high, i'm high\",\n", - " 'higher than the moon',\n", - " 'artist: de la soul',\n", - " 'album: breakadawn 12\"',\n", - " 'song: stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, (uh-huh) stickabush, (oh yeah)',\n", - " 'stickabush, (oh yeah) stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush, stickabush',\n", - " 'stickabush, stickabush, stickabush (bullshit!)',\n", - " 'nos a kanta \"danki danki danki willem iii\"',\n", - " \"willem iii u'n kompronde bo kantika, ni tende mes\",\n", - " 'despues di tur nos sufrimentu, danki nos a kanta',\n", - " 'ki dia \"nos libertat\" lo bira mas ku dos palabra?',\n", - " 'dikon nos no a gradisí pa tula of karpata?',\n", - " \"am'a kere kos a kambia, no bisa mi kompolaga\",\n", - " 'kos lo kambia dia nos lo kambia',\n", - " 'si nos no lanta traha pa nos baranka, nos no ta logra nada',\n", - " 'i si nos no siña ki nos tera su balor ta',\n", - " 'nan ta kumpra nos barata pa nan sera tur nos portanan',\n", - " 'nos mayornan tur a siña nos pa komporta',\n", - " 'toch demasiado ta kai sera, ta kon por ta?',\n", - " 'nos mente su kondishon tin ku reprograma',\n", - " 'ku kultura den nos edukashon nos por progresa',\n", - " \"tin un tesoro 'bou di nos derá\",\n", - " \"ban kob'é paso ta loke nos ta sembra nos ta kosechá\",\n", - " 'ta kuantu mas nos tin ku soportá?',\n", - " 'nos futuro ta den nos man',\n", - " 'loke nos sembra nos ta kosechá',\n", - " 'nos futuro ta den nos man',\n", - " 'a yega ora pa nos koperá',\n", - " 'nos futuro ta den nos man',\n", - " 'tende ban, sera man, lucha pa nos hende nan',\n", - " 'si nos no tin lucha, no tin motibu pa selebrá',\n", - " 'yu di kòrsou no pensa robes',\n", - " 'pasobra libertat ta kuminsa den nos kabes',\n", - " 'anto nos tur por bira ken ku nos ke',\n", - " 'nos tin ku siña nos balor pa nos no bende nos mes',\n", - " 'yu di kòrsou no pensa robes',\n", - " 'pasobra libertat ta kuminsa den nos kabes',\n", - " 'anto nos tur por bira ken ku nos ke',\n", - " 'nos tin ku siña nos balor pa nos no bende nos mes',\n", - " 'ta kuantu mas nos tin ku soporta?',\n", - " 'nos futuro ta den nos man',\n", - " 'loke nos sembra nos ta kosechá',\n", - " 'nos futuro ta den nos man',\n", - " 'a yega ora pa nos koperá',\n", - " 'nos futuro ta den nos man',\n", - " 'tende ban, sera man, lucha pa nos hende nan',\n", - " 'si nos no tin lucha, no tin motibu pa selebrá',\n", - " 'otro mama ta yora pa yu ku bala a bora',\n", - " \"paso ta mama l'a koba\",\n", - " 'i tur su bròder nan a plama mesora',\n", - " 'gritando \"ban machu, ban\" despues ta bang mes a zona (bang!)',\n", - " 'nos no por sigui asina',\n", - " 'nos tin un isla pa guia',\n", - " \"mester d'un lider pa bringa\",\n", - " 'kon nos por sinti nos na liber, kaminda ta tiki tiki tur nos playa nan ta bira pisina',\n", - " \"i sin disiplina bo'n por para riba dos pia\",\n", - " \"enbes di keda stèns rib'e esnan ku ta ninga nos libertat\",\n", - " 'si tula lo biba, ta ki e lo bisa?',\n", - " 'si tula lo mira, ta kon nos ta biba',\n", - " 'si tula lo biba, ta kon lo bo pensa?',\n", - " 'lo bo bringa pa bo independiensa?',\n", - " \"anto m'a fad'i mira mucha kria mucha\",\n", - " 'kuantu mas nos tin ku soporta?',\n", - " 'lucha tin ku lucha',\n", - " 'ta kuantu mas nos tin ku soporta?',\n", - " 'nos futuro ta den nos man',\n", - " 'loke nos sembra nos ta kosechá',\n", - " 'nos futuro ta den nos man',\n", - " 'a yega ora pa nos koperá',\n", - " 'nos futuro ta den nos man',\n", - " 'tende ban, sera man, lucha pa nos hende nan',\n", - " 'si nos no tin lucha, no tin motibu pa selebrá',\n", - " 'kristaps',\n", - " 'olas ir klāt',\n", - " 'keep calm like kristaps porziņģis',\n", - " 'keep calm like kristaps porziņģis',\n", - " 'keep calm like kristaps porziņģis',\n", - " 'augumā es krietni īsāks',\n", - " 'no latvijas, bet tik pat bīstams',\n", - " 'un viss, kas virsū, tas ir īstais',\n", - " 'esmu mierīgs, tā kā kristaps',\n", - " 'i’m a lot shorter',\n", - " 'but i’m from latvia and just as dangerous',\n", - " 'everything you see is real',\n", - " 'i am calm like kristaps',\n", - " 'double double',\n", - " 'triple double',\n", - " 'lai kur es būtu, dab on them',\n", - " 'skrr-skrrr',\n", - " 'tas ir jauns lambo',\n", - " 'tu prasi: vai man…?',\n", - " 'jā, man ir!',\n", - " 'double double',\n", - " 'triple double',\n", - " 'no matter where i am, dab on them',\n", - " 'skrr-skrr',\n", - " 'that’s a new lambo',\n", - " 'you ask: do you have…?',\n", - " 'yes, i do!',\n", - " 'visi paiet malā jo viņš nāk caur',\n", - " 'sestais spēlētājs, to nevar pārtraukt',\n", - " 'carmelo anthony, shout-out',\n", - " 'pass porziņģim un tas ir knock out',\n", - " 'everybody move aside, he’s coming through',\n", - " 'number 6, you can’t stop him',\n", - " 'carmelo anthony, shout out',\n", - " 'pass to porziņģis and it’s a knock out',\n", - " 'tu labāk netuvojies, lūdzu, mazais',\n", - " 'tu zini, ka viņš tevi sūtīs mājās',\n", - " 'sāka no liepājas un kur viņš ir ticis?',\n", - " 'ņujorkas knicks',\n", - " '(six)',\n", - " 'best not get close, please, little man',\n", - " 'you know he’s going to send you home',\n", - " 'started in liepāja and now where is he?',\n", - " 'the new york knicks',\n", - " '(six)',\n", - " '(exotigaz)',\n", - " 'ayy, phil, put some sounds on me',\n", - " \"déjalo, they don't last in this shit (in this shit)\",\n", - " 'back then, i would laugh at this shit (i did, i did)',\n", - " 'reggaeton, now i dance with your bitch (with your bitch)',\n", - " 'wax on, i advanced everything',\n", - " \"déjalo, they don't last in this shit (in this shit)\",\n", - " 'back then, they would laugh at this shit (they did, they did)',\n", - " 'reggaeton, now i dance with your bitch (with your bitch)',\n", - " 'wax on, i advanced everything',\n", - " 'déjalo, let it go',\n", - " 'sold his soul to the hills and',\n", - " 'colombianas begging \"por favor\"',\n", - " 'they ready to go for a little dough',\n", - " \"my uncle selling visas like it's popeyes\",\n", - " 'en la montaña where they got no wi-fi',\n", - " \"now i'm feeling free like july-y\",\n", - " 'vamos a gastarlo en dubai',\n", - " \"déjalo, they don't last in this shit (in this shit)\",\n", - " 'back then, i would laugh at this shit (i did, i did)',\n", - " 'reggaeton, now i dance with your bitch (with your bitch)',\n", - " 'wax on, i advanced everything',\n", - " \"déjalo, they don't last in this shit (in this shit)\",\n", - " 'back then, they would laugh at this shit (they did, they did)',\n", - " 'reggaeton, now i dance with your bitch (with your bitch)',\n", - " 'wax on, i advanced everything',\n", - " \"loco, ya tú sabes, tú tienes que solta' to' esa vaina en banda\",\n", - " 'estos tigueres siempre están tirando sal',\n", - " \"esa vaina no va pa' ningún la'o, loco\",\n", - " 'deja esa vaina, déjalo todo',\n", - " 'haz lo tuyo, tú sabes que you gotta keep it gaz, bro',\n", - " 'cógelo suave, prrra (brap brap brap brap brap)',\n", - " 'tengo tres chicas en mi casa desnudas, actrices de cinema (ey)',\n", - " 'dicen soy cínico, no soy un típico',\n", - " 'estamos soplando perico dejando un reguero en todo el piso',\n", - " 'manchando alfombras, persianas',\n", - " 'antes no teníamos nada',\n", - " 'she get on her knees, make me feel like messi',\n", - " \"running through tulum, making numbers like i'm mayan\",\n", - " \"oh my, don't try, don't look at the price and just buy\",\n", - " 'c.e.o., i gotta sign it',\n", - " 'i told you it was nothing but timing',\n", - " \"déjalo, they don't last in this shit (in this shit)\",\n", - " 'back then, i would laugh at this shit (i did, i did)',\n", - " 'reggaeton, now i dance with your bitch (with your bitch)',\n", - " 'wax on, i advanced everything',\n", - " \"déjalo, they don't last in this shit (in this shit)\",\n", - " 'back then, they would laugh at this shit (they did, they did)',\n", - " 'reggaeton, now i dance with your bitch (with your bitch)',\n", - " 'wax on, i advanced everything (what)',\n", - " 'exotigaz',\n", - " \"bang, bang, bang yo' head\",\n", - " \"gang, gang, break yo' neck\",\n", - " \"bang, bang, bang yo' head\",\n", - " \"gang, gang, break yo' neck\",\n", - " \"bang, bang, bang yo' head (bang, bang, bang yo' head)\",\n", - " \"gang, gang, break yo' neck (gang, gang, break yo' neck)\",\n", - " \"bang, bang, bang yo' head (bang, bang, bang yo' head)\",\n", - " \"gang, gang, break yo' neck (gang, gang, break yo' neck)\",\n", - " \"gang, gang, break yo' neck\",\n", - " \"(bang, bang, bang yo' head)\",\n", - " \"gang, gang, break yo' neck\",\n", - " \"bang, bang, bang yo' head (bang, bang, bang yo' head)\",\n", - " \"gang, gang, break yo' neck (gang, gang, break yo' neck)\",\n", - " \"bang, bang, bang yo' head (bang, bang, bang yo' head)\",\n", - " \"gang, gang, break yo' neck (gang, gang, break yo' neck)\",\n", - " \"gang, gang, break yo' neck\",\n", - " \"(bang, bang, bang yo' head)\",\n", - " \"gang, gang, break yo' neck\",\n", - " 'make it hot, yeah',\n", - " 'make it hot',\n", - " \"i've been up four days, havin' three-ways (yeah)\",\n", - " \"like my bitches in twos, i'm the one, man (one)\",\n", - " \"tryna jump in my lane, i'm in the air, man (woo)\",\n", - " \"make her fall in love, she gon' want the last name (hah)\",\n", - " \"i'm a giant to these niggas like san fran (woah)\",\n", - " 'and this beat slap, nigga, like a backhand (woah)',\n", - " 'i know you wanna fuck a rapper, you a rap fan',\n", - " 'how you just glowed up like pac-man? (man)',\n", - " 'i get it, you got bands (yeah, yeah)',\n", - " 'make your own money, make a nigga spend his whole advance (woah)',\n", - " 'if i hit once, then i know i can hit it again (yeah)',\n", - " 't-shirt and your panties on, baby, you know what it is',\n", - " 'i make it hot (yeah, yeah)',\n", - " 'i make it hot (make it hot)',\n", - " 'make it hot, make it hot',\n", - " \"don't stop, pop, pop, make it hot (make it hot)\",\n", - " \"(don't stop, pop, pop)\",\n", - " \"(don't stop, pop, pop)\",\n", - " 'i make it hot (make it hot)',\n", - " \"(don't stop, pop, pop)\",\n", - " 'yeah, let go, j balvin, man',\n", - " \"don't stop, pop, pop, make it hot\",\n", - " 'está ahí caliente como volcán (ey, ey)',\n", - " \"me tiene detrá' de ella como perro guardián (grrr)\",\n", - " 'está pegada, soy su fan (wuh)',\n", - " 'se unió a mi equipo y me uní a su clan (ey)',\n", - " 'hipnotismo como moon y jackie chan, ey',\n", - " 'cuando twerkea ella mueve ese flan, ey',\n", - " 'de eso tan bueno ya no dan, ey',\n", - " 'calla a lo wu-tang clan, ey',\n", - " \"cuidao', te muerde mi boa\",\n", - " 'tiro rimas como noa (noa)',\n", - " \"no quiero un pedazo, te quiero to'a\",\n", - " \"¿está' llorando? ven y lo sobas (uh)\",\n", - " \"'toy activo, mami, tú me dice' when (when)\",\n", - " 'soy de threesome, así que trae a tu friend (ey)',\n", - " 'le explotó la nota cuando le dio al pen (ey)',\n", - " 'él con una y yo llego con el harén',\n", - " 'i make it hot (yeah, yeah)',\n", - " 'let go, j balvin, man',\n", - " 'yeah, i make it hot (make it hot)',\n", - " 'make it hot, make it hot',\n", - " 'chris brown, tyga',\n", - " \"don't stop, pop, pop, make it hot (make it hot)\",\n", - " \"(don't stop, pop, pop)\",\n", - " 'latino gang yeah, yeah',\n", - " \"(don't stop, pop, pop)\",\n", - " 'i make it hot (make it hot)',\n", - " \"(don't stop, pop, pop)\",\n", - " \"don't stop, pop, pop, make it hot (make it hot)\",\n", - " \"you gon' blow my cover, baby\",\n", - " \"you gon' make me pull it up, give you that lover, lover, baby\",\n", - " \"put my hands all on her ass, i know it's rough, baby\",\n", - " 'a lot of heat from your thighs',\n", - " \"so i'll take my time when i'm in that\",\n", - " 'moving right to left',\n", - " \"i won't waste no time when i'm in that\",\n", - " \"when i'm feelin' on your spot\",\n", - " \"you gon' make it hot\",\n", - " 'you know what it is, huh',\n", - " \"show me what you doin' down low with your hips\",\n", - " 'i gotta tell it like it is (huh)',\n", - " \"baby, you're on fire now\",\n", - " 'i make it hot (yeah, yeah)',\n", - " 'i make it hot (make it hot)',\n", - " 'make it hot, make it hot',\n", - " \"don't stop, pop, pop, make it hot (make it hot)\",\n", - " \"(don't stop, pop, pop)\",\n", - " \"(don't stop, pop, pop)\",\n", - " 'i make it haute (make it hot)',\n", - " \"(don't stop, pop, pop)\",\n", - " \"don't stop, pop, pop, make it hot\"]},\n", - " 'rock': {'meta': {'train_data': ['wake up, comb my hair',\n", - " 'making food disappear',\n", - " 'riding bikes, making out',\n", - " 'elephants run you down',\n", - " 'you and i run away',\n", - " 'blushing cheeks, howling wolves',\n", - " 'colorful fireworks',\n", - " \"every time, everyone, everything's full of life\",\n", - " 'everyday, everywhere, people are so alive',\n", - " 'we should all be alive!',\n", - " 'we should all be alive!',\n", - " 'horfandi, þegjandi, tala við, skríðandi',\n", - " 'dreymandi, strjúka af, koma við ekki má',\n", - " 'mála á líkama, spilað á hljóðfæri úr',\n", - " 'leika mig! leika mig!',\n", - " 'get it on, let it out',\n", - " 'fucking and spúandi',\n", - " 'get it on, let it out',\n", - " 'fucking and kæfandi',\n", - " 'we should all be alive!',\n", - " 'we should all be alive!',\n", - " 'we should all be alive!',\n", - " \"let's not stop, let's grow and live!\",\n", - " 'i see you colorful',\n", - " 'i see you in the trees',\n", - " 'i see you spiritful',\n", - " \"you're in the breeze\",\n", - " 'i see it in your hands',\n", - " 'tree fingers draw a beam',\n", - " 'i see you in the sand',\n", - " 'roll down the stream',\n", - " 'i see you in the trees',\n", - " 'i see you colorful',\n", - " 'i see you in the breeze',\n", - " \"you're spiritful\",\n", - " 'tree fingers draw a beam',\n", - " 'i see it in your hands',\n", - " \"you're rolling down the stream\",\n", - " \"you're in the sand\",\n", - " 'i see you colorful',\n", - " 'i see you in the trees',\n", - " 'i see you spiritful',\n", - " \"you're in the breeze\",\n", - " 'i see it in your hands',\n", - " 'tree fingers draw a beam',\n", - " 'i see you in the sand',\n", - " 'roll down the stream',\n", - " 'i see you in the trees',\n", - " 'i see you colorful',\n", - " 'i see you in the breeze',\n", - " \"you're spiritful\",\n", - " 'tree fingers draw a beam',\n", - " 'i see it in your hands',\n", - " \"you're rolling down the stream\",\n", - " \"you're in the sand\",\n", - " 'i see you colorful',\n", - " 'i see you in the trees',\n", - " 'i see you spiritful',\n", - " \"you're in the breeze\",\n", - " 'i see it in your hands',\n", - " 'tree fingers draw a beam',\n", - " 'i see you in the sand',\n", - " 'roll down the stream',\n", - " 'himitsu no mado akete mitara',\n", - " 'doko ni datte tonde yukeru',\n", - " 'minto aji no taimumashin',\n", - " 'doko ni datte ikeru yo',\n", - " 'awaa awaa awadama fever',\n", - " 'awaa awawa awadama fever',\n", - " 'awaa awaa awadama fever',\n", - " 'awadama awadama fever',\n", - " 'ah, yeah. tondeke, chew, chew, chewing gum!',\n", - " 'again. ikoo ze! go, go, going now!',\n", - " 'ah, yeah. tondeke, ban ban bubble gum!',\n", - " 'again. ima sugu go, go, going now!',\n", - " 'himitsu no kagi akete mitara',\n", - " 'doko ni datte tonde yukeru',\n", - " 'fukuramu yume kaze ni nosete',\n", - " 'doko ni datte ikeru yo',\n", - " 'awaa awaa awadama fever',\n", - " 'awaa awawa awadama fever',\n", - " 'awaa awaa awadama fever',\n", - " 'awadama awadama fever',\n", - " 'ah, yeah. tondeke, chew, chew, chewing gum!',\n", - " 'again. ikoo ze! go, go, going now!',\n", - " 'ah, yeah. tondeke, ban ban bubble gum!',\n", - " 'again. ima sugu go, go, going now!',\n", - " 'one, two, three, four',\n", - " 'ichi, nii, san, shii',\n", - " 'ichi, nii, san, shii',\n", - " 'hii, fuu, mii, yoo',\n", - " 'hii, fuu, mii, yoo',\n", - " 'himitsu no heya akete mitara',\n", - " 'doko ni datte tonde yukeru',\n", - " 'yume no naka de yume no naka de',\n", - " 'doko ni datte ikeru yo',\n", - " 'awaa awaa awadama fever',\n", - " 'awaa awawa awadama pon pon',\n", - " 'awaa awaa awadama fever',\n", - " 'awadama awadama dreamer',\n", - " 'ah, yeah. tondeke, chew, chew, chewing gum!',\n", - " 'again. ikoo ze! go, go, going now!',\n", - " 'ah, yeah. tondeke, ban ban bubble gum!',\n", - " 'again. ima sugu go, go, going now!',\n", - " 'again. chumi chumi chew, chew, chewing gum.',\n", - " 'again. ban ba ban ban ban ban bubble gum.',\n", - " 'ah, ah, dreamer',\n", - " 'ah, ah, screamer',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", - " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", - " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", - " 'hobbledehoy in hearse herse herse',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", - " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", - " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", - " 'hobbledehoy in hearse herse herse herse',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", - " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", - " 'hearse hearse hearse hearse hearse hearse hearse hearse',\n", - " 'hobbledehoy in hearse herse herse herse',\n", - " 'e-evil eye beyond sty and sky',\n", - " 'epitome, on my head',\n", - " 'epitome, wind up dead!',\n", - " 'epitome, on my head',\n", - " 'epitome, wind up dead!',\n", - " \"i'm at my wit's end\",\n", - " \"i'm at my, wit's end\",\n", - " \"i'm at my wit's end\",\n", - " \"i'm at my wit's end\",\n", - " \"i'm at my end!\",\n", - " 'epitome, on my head',\n", - " 'epitome, wind up dead!',\n", - " \"i'm at my wit's end\",\n", - " \"i'm at my, wit's end\",\n", - " \"i'm at my wit's end\",\n", - " \"i'm at my end!\",\n", - " 'sections:',\n", - " 'intro - prana – 4:21',\n", - " 'ii. the fire of mind or solar fire – 3:50',\n", - " 'iii. the fire of spirit or electric fire – 7:33',\n", - " 'i. the internal fire or fire by friction\" – 19:38',\n", - " '1 mûlâdhâra: the dance of kundalini',\n", - " '2 svâdhishthâna: bam, bham, mam, yam, ram, lam, thank you, mahm',\n", - " '3. manipûra: seat of fire',\n", - " '4. anâhata: the halls of air',\n", - " '5. vishudda: sounds beyond ears',\n", - " '6. ajnâ: sights beyond eyes',\n", - " '7. brahmarandhra: nirvana shakri',\n", - " 'outro - prana',\n", - " '(bear goddess of wild life and a protector)',\n", - " 'robouas uet magnei',\n", - " 'noue pepoisas criðiion imon',\n", - " 'noue pepoisas geliiin',\n", - " 'supritiia tiresos sondi',\n", - " 'noue pepoisas abalon',\n", - " 'blatus suadiius areuoclouiuspe',\n", - " 'noue pepoisas clounis nantaroriias',\n", - " 'blatusagiiet samali sepont',\n", - " 'a boua uer magnei',\n", - " 'etic pepoisa criðiion tuon',\n", - " 'a pepoisa geliiin',\n", - " 'supritiia tiresos tui',\n", - " 'a pepoisa brenoduron senon',\n", - " 'uolugatus suadiius geliiuspe',\n", - " 'etic pepoisa criðiion ansron',\n", - " 'etic blatusagiiet samali sepont',\n", - " 'robouas uet magnei',\n", - " 'noue pepoisas criðiion imon',\n", - " 'noue pepoisas geliiin',\n", - " 'supritiia tiresos sondi',\n", - " 'noue pepoisas abalon',\n", - " 'blatus suadiius areuoclouiuspe',\n", - " 'noue pepoisas clounis nantaroriias',\n", - " 'blatusagiiet samali sepont',\n", - " 'were you at the rock',\n", - " 'or did you see my love',\n", - " 'or did you see a brightness',\n", - " 'the beauty of this land',\n", - " 'or did you see the apple',\n", - " 'the sweetest and most fragant blossom',\n", - " 'or did you see the meadows of nantarora',\n", - " 'are they blossoming as they say?',\n", - " 'oh i was at the rock',\n", - " 'and i saw your love',\n", - " 'oh i saw your brightness',\n", - " 'the beauty of your land',\n", - " 'oh i did see the old town of brenoduron',\n", - " 'the sweetest and brightest beacon',\n", - " 'and i saw our love',\n", - " 'and she is blossoming as they say',\n", - " 'were you at the rock',\n", - " 'or did you see my love',\n", - " 'or did you see a brightness',\n", - " 'the beauty of this land',\n", - " 'or did you see the apple',\n", - " 'the sweetest and most fragant blossom',\n", - " 'or did you see the meadows of nantarora',\n", - " 'are they blossoming as they say?',\n", - " 'siliwangi speaks goodness',\n", - " 'inherited to me',\n", - " 'from my ancestors',\n", - " 'siliwangi speak goodness',\n", - " 'it has been practiced',\n", - " 'by my ancestors',\n", - " 'by the people of yore',\n", - " 'pakena gawe rahayu',\n", - " 'pakena kereta bener',\n", - " 'mahayu dora sapuluhuh',\n", - " 'mikukuh dasa prebakti',\n", - " 'pancaaksara guruning janma',\n", - " 'mikukuh darma mitutur',\n", - " 'ngawakan tapa di nagara',\n", - " 'tritangtu di nu reya',\n", - " 'a path to happiness and prosperity',\n", - " 'a path to peace and tranquality',\n", - " 'do good to the mother earth',\n", - " 'do good to each other',\n", - " 'siliwangi',\n", - " 'is the true teaching',\n", - " 'loves our brothers and our sisters',\n", - " 'principles of virtue',\n", - " 'using ten parts of the body',\n", - " 'for goodness and the truth',\n", - " 'the ten parts are ears eyes',\n", - " 'skin tongue nose mouth',\n", - " 'hands feet anus and genitals',\n", - " 'always devoted to each others',\n", - " 'sons and daughters devoted to parents',\n", - " 'wife dutiful to husband',\n", - " 'students listen to teacher',\n", - " 'people devoted to the fair king',\n", - " 'the king devoted to',\n", - " 'the people and the god',\n", - " 'aims to the welfare of',\n", - " 'peoples lives and the world',\n", - " 'be the king for yourself',\n", - " 'know yourself',\n", - " 'as a microcosm of the universe',\n", - " 'hails to the kings',\n", - " 'mundinglaya',\n", - " 'mundingwangi',\n", - " 'mundingsari mundingkawati',\n", - " 'suramanggala',\n", - " 'suryakencana',\n", - " 'wastu dea',\n", - " 'jayaningrat natamanggala',\n", - " 'jayanagara hastamanggala',\n", - " 'jayaperkosa yudamanggala',\n", - " \"in the dawn on the roof, there's a semblance of truth\",\n", - " 'in the half light that sings to me of you',\n", - " 'with my bottle full of sin, i hoist a toast to the muezzin',\n", - " 'that these black clouds mean the monsoon',\n", - " 'because the sun refused to shine since you left me dumb and blind',\n", - " 'sometimes it feels like the end of the world',\n", - " 'yes it feels like the end of the world',\n", - " 'and every word i never spoke dies like a spark smothered in smoke',\n", - " 'pulled from the glow of a shitty cigarette',\n", - " 'and i probably should shave and dig myself out of this grave',\n", - " \"but i can't go\",\n", - " 'no, not just yet',\n", - " \"mostly the nights they ain't half bad\",\n", - " \"it's the days that seem designed to drive you mad\",\n", - " 'sometimes it feels like the end of the world',\n", - " 'yes it feels like the end of the world',\n", - " 'yes it feels like the end of the world',\n", - " 'yes it feels like the end of the world',\n", - " 'so tonight in the bar of this hotel bazaar',\n", - " \"i'll write some postcards and throw them away\",\n", - " \"and maybe someday i'll leave here\",\n", - " 'but the drinks, they are so cheap here',\n", - " \"and somebody's always got to pay\",\n", - " 'and it feels like the end of the world',\n", - " 'and it feels like the end of the world',\n", - " 'yes it feels like the end of the world',\n", - " 'yes it feels like the end of the world',\n", - " 'yes it feels like the end of the world',\n", - " '\"yapılan yeni bir araştırmaya göre',\n", - " 'dünyadaki çoğu insan kendi tanrısına inanıyor',\n", - " 'fakat dini araştırmacılar',\n", - " 'bu ortak yaratıcının adı konusunda',\n", - " 'kesin bir karara hâlâ varamadı',\n", - " 've bunun yanı sıra...\"',\n", - " 'there are two important things to remember about learning any new language:',\n", - " 'one: be interested in the people, their country and language. want to learn it',\n", - " 'two: practice it as often as you can. nothing is more effective in creating a friendly atmosphere, and nothing flatters people more than when the forigner tries to speak their language',\n", - " 'remember, knowing the language is the best way of knowing the country, and enjoying it more',\n", - " 'good morning mister popovic!',\n", - " 'dobro jutro, gospodine popoviću!',\n", - " 'how are you, ser?',\n", - " 'kako ste, gospodine?',\n", - " 'madam!',\n", - " 'gospođo!',\n", - " 'ladies and gentlemen',\n", - " 'gospođe i gospodo',\n", - " 'i am very please to meet you',\n", - " 'milo mi je da vas vidim',\n", - " 'thank you!',\n", - " 'hvala!',\n", - " 'thank you very much!',\n", - " 'velika hvala!',\n", - " 'i want to buy apple',\n", - " 'molim...',\n", - " 'i want to buy apple',\n", - " 'hteo bih kupiti jabuka',\n", - " 'banana',\n", - " 'banana',\n", - " 'bean',\n", - " 'pasulja',\n", - " 'bean stew',\n", - " 'čorbe od pasulja',\n", - " 'chocolate',\n", - " 'hleba',\n", - " 'chocolate',\n", - " 'hleba',\n", - " 'chocolate',\n", - " 'molim',\n", - " 'coco nuts',\n", - " 'molim',\n", - " 'coco nuts',\n", - " 'kokosovih oraha',\n", - " 'cabage',\n", - " 'kupusa',\n", - " 'beef stake',\n", - " 'molim',\n", - " 'beef stake',\n", - " 'gospodine popoviću',\n", - " 'is it a comedy?',\n", - " 'da li je to komedija?',\n", - " 'is it a tragedy?',\n", - " 'da li je to tragedija?',\n", - " 'is it a comedy?',\n", - " 'da li je to komedija?',\n", - " 'is it a drama?',\n", - " 'da li je to drama?',\n", - " 'izvinite što vas prekidam',\n", - " 'da li smem da vam nešto ponudim?',\n", - " 'meat',\n", - " 'meso',\n", - " 'milk',\n", - " 'mleka',\n", - " 'orange',\n", - " 'narandža',\n", - " 'peach',\n", - " 'breskava',\n", - " 'candy',\n", - " 'bombona',\n", - " 'pineapple',\n", - " 'ananasa',\n", - " 'mother',\n", - " 'vaša majka',\n", - " 'potato',\n", - " 'krompira',\n", - " 'lamb',\n", - " 'jagnjetine',\n", - " 'lemon',\n", - " 'limunova',\n", - " 'string beans',\n", - " 'boranije',\n", - " 'tea',\n", - " 'čaja',\n", - " 'tomato',\n", - " 'paradajza',\n", - " 'soda water',\n", - " 'soda vode',\n", - " 'kelerabs',\n", - " 'kelerabe',\n", - " 'lobster',\n", - " 'molim',\n", - " 'lobster',\n", - " 'gospodine popoviću?',\n", - " 'jastoga',\n", - " 'what is this?',\n", - " 'šta je ovo?',\n", - " 'what is that?',\n", - " 'šta je ono?',\n", - " 'what is this?',\n", - " 'šta je ovo?',\n", - " 'what is that?',\n", - " 'ne znam!',\n", - " 'is it a comedy?',\n", - " 'da li je to komedija?',\n", - " 'is it a tragedy?',\n", - " 'da li je to tragedija?',\n", - " 'is it a comedy?',\n", - " 'da li je to komedija?',\n", - " 'please, repeat!',\n", - " 'molim, ponovite!',\n", - " 'is it a comedy?',\n", - " 'da li je to komedija?',\n", - " 'is it a tragedy?',\n", - " 'da li je to tragedija?',\n", - " 'is it a comedy?',\n", - " 'da li je to komedija?',\n", - " 'is it a drama?',\n", - " 'da li je to drama?',\n", - " 'please, show me!',\n", - " 'molim, pokažite mi!',\n", - " 'please, speak slowly!',\n", - " 'molim, govorite polako!',\n", - " 'thank you very much!',\n", - " 'velika hvala!',\n", - " 'is it a comedy?',\n", - " 'da li je to komedija?',\n", - " 'is it a tragedy?',\n", - " 'da li je to tragedija?',\n", - " 'is it a comedy?',\n", - " 'da li je to komedija?',\n", - " 'please, repeat!',\n", - " 'molim, ponovite!',\n", - " 'is it a comedy?',\n", - " 'da li je to komedija?',\n", - " 'is it a tragedy?',\n", - " 'da li je to tragedija?',\n", - " 'is it a comedy?',\n", - " 'da li je to komedija?',\n", - " 'is it a drama?',\n", - " 'da li je to drama?',\n", - " 'thank you very much!',\n", - " 'velika hvala!',\n", - " 'goodbye!',\n", - " 'doviđenja!',\n", - " 'goodbye, i had a delightful time!',\n", - " 'zbogom, divno sam se proveo!',\n", - " 'please, come again!',\n", - " 'molim, dođite ponovo!',\n", - " 'goodbye!',\n", - " 'doviđenja!',\n", - " 'doviđenja gospodine popoviću!',\n", - " 'ba bixse uenerianum ad ebriureco suaueloslan',\n", - " 'slanossiietum sualido contilossi',\n", - " '(íe sittem mongnatixsouim)',\n", - " \"we're on the cusp of the sanctum in the woods of ebriurecon\",\n", - " 'welcome!',\n", - " 'may you experience recovery here!',\n", - " 'hails to sang hyang keresa',\n", - " 'batara tunggal, the ones',\n", - " 'baster jagat, ruler of the universe',\n", - " 'batara seda niskala',\n", - " 'the invisible who lives on buana nyungcung',\n", - " 'im the new blood',\n", - " 'keeper of mayapada',\n", - " 'sasak pasaka buana',\n", - " 'the center of the world',\n", - " 'im the new blood',\n", - " 'born from buana luhur',\n", - " 'someday i will be back',\n", - " 'to buana larang',\n", - " 'im the new blood',\n", - " 'executor of pikukuh',\n", - " 'from the ancestor',\n", - " 'for the sake of jagat mappers existence',\n", - " 'bayut nu dititipkeun ka puun',\n", - " 'nagara satelung puluh telu',\n", - " 'bangsawan sawidak lima',\n", - " 'pancer salawe nagara',\n", - " 'keeping this earth is a mandate',\n", - " 'from my ancestor to the next generations now',\n", - " 'gunung teu meunang dilebur',\n", - " 'lebak teu meunang dirusak',\n", - " 'larang teu meunang dirempak',\n", - " 'buyut teu meunang dirobah',\n", - " 'lojor teu meunang dipotong',\n", - " 'pondok teu meunang disambung',\n", - " 'nu lain kudu dilainkeun',\n", - " 'nu enya kudu dienyakeun',\n", - " 'im the keeper of the ancestors tradition',\n", - " 'their spirit reside in me',\n", - " 'im the keeper the ancestors ardors',\n", - " 'they become the power in my life',\n", - " 'i swear i will always stand',\n", - " 'never change, never turn back',\n", - " 'i know their precepts',\n", - " 'a way of life and spreat it away',\n", - " 'run turun bayu rahayu',\n", - " 'bayu tresna bayu asih',\n", - " 'bayu mawat kamulyaan',\n", - " 'ngawaruga jagat nata',\n", - " 'gumulung sabudeur mawun',\n", - " 'gumati sabumi manik',\n", - " 'rebirth of jati sunda',\n", - " 'raise your consiouness',\n", - " 'were the saviors, were the keepers!',\n", - " 'raise your consciousness',\n", - " 'bring to the earth your love and happiness!',\n", - " 'raise your consciousness',\n", - " 'greed no longer saps the soul!',\n", - " 'raise your consciousness',\n", - " 'for the earth, for a better world!',\n", - " 'wgmm / buglugの歌詞romaji',\n", - " 'wagamama na mama ari no mama no sama',\n", - " 'wagamama na mama ari no mama no sama',\n", - " 'wagamama na mama ari no mama no sama',\n", - " 'wagamama na mama ari no mama yeah!',\n", - " 'are iya kore iya sore iya subete',\n", - " 'poipoipoi',\n", - " 'muchakucha dakedo sore ga oresama sa',\n", - " 'bitebitebite',\n", - " 'hito ni kibishiku jibun ni yasashiku',\n", - " 'one of all all of one',\n", - " 'kokunaisan no oushitsu sodachi sa i am \"no.1\"',\n", - " 'wagamama na mama ari no mama no sama',\n", - " 'wagamama na mama ari no mama no sama',\n", - " \"let's get it on!!!!!!!\",\n", - " '- to world to world -',\n", - " 'shareta sunnydays ni keri o irero',\n", - " '- to world to world - good rainy days',\n", - " 'beautiful life is dead',\n", - " 'wagamama na mama ari no mama no sama',\n", - " 'wagamama na mama ari no mama no sama',\n", - " 'wagamama na mama ari no mama no sama',\n", - " 'wagamama na mama ari no mama no sama',\n", - " 'wagamama na mama ari no mama no sama',\n", - " 'wagamama na mama ari no mama no sama',\n", - " \"let's get it on!!!!!!!\",\n", - " '- to world to world -',\n", - " 'shareta sunnydays ni keri o irero',\n", - " '- to world to world - good rainy days',\n", - " 'beautiful life is dead',\n", - " '- to world to world -',\n", - " 'shareta sunnydays ni keri o irero',\n", - " \"- to world to world - what's happy days?\",\n", - " 'good bye no thank you',\n", - " 'kanji',\n", - " 'わがままなままありのままのさま',\n", - " 'アレ嫌コレ嫌ソレ嫌全て',\n", - " 'ポイポイポイ',\n", - " '無茶苦茶だけどそれが俺様さ',\n", - " 'bitebitebite',\n", - " '人に厳しく自分に優しく',\n", - " 'one of all all of one',\n", - " '国内産の王室育ちさi am「no.1」',\n", - " 'わがままなままありのままのさま',\n", - " \"let's get it on!!!!!!!\",\n", - " '-to world-',\n", - " '洒落たsunnydaysに蹴りを入れろ',\n", - " '-to world-good rainy days',\n", - " 'beautiful life is dead',\n", - " 'わがままなままありのままのさま',\n", - " 'わがままなままありのままのさま',\n", - " \"let's get it on!!!!!!!\",\n", - " '-to world-',\n", - " '洒落たsunnydaysに蹴りを入れろ',\n", - " '-to world-good rainy days',\n", - " 'beautiful life is dead',\n", - " '-to world-',\n", - " '洒落たsunnydaysに蹴りを入れろ',\n", - " \"-to world-what's happy days?\",\n", - " 'good bye no thank you',\n", - " '(tribal god)',\n", - " 'sondei sistamos',\n", - " 'toexrexti au noxti',\n", - " 'sepomor ateras seni in cridiiobi',\n", - " 'auii in menuanbi uer oinon sistamos',\n", - " 'in ueniia',\n", - " 'in touta',\n", - " 'in cenetlei',\n", - " 'dixomos snis',\n", - " 'ne snis dibrogiator',\n", - " 'enepon toutateis toaidiat uer snis',\n", - " 'beramos uolugatun',\n", - " 'silon antumni sexetor',\n", - " 'toutatis toexreretetic rata buont uer snis',\n", - " 'buont rata esous iccatis dagos',\n", - " 'suuispe uer snis',\n", - " 'taranis nertacos aresnisueððet',\n", - " 'here we stand',\n", - " 'arisen from the night',\n", - " 'following our ancestors, our forebears in our hearts, our descendants in our minds',\n", - " 'side by side we stand',\n", - " 'in our family',\n", - " 'in our tribe',\n", - " 'in our nation',\n", - " 'may we be found worthy',\n", - " 'may we not be banished',\n", - " 'may toutatis lift his face and shine upon us',\n", - " 'we will carry the torch',\n", - " 'the offspring of antumnos will follow',\n", - " 'may toutatis arise and bless us',\n", - " 'may esus, the good, wise and panacean bless us',\n", - " 'may taranis, the strong guide us',\n", - " 'sawa ka na ba sa mga hassle sa buhay mo',\n", - " 'ayaw mo na bang mag-isip para sa sarili',\n", - " 'tinatamad ka ng bumyahe',\n", - " \"ang gusto mo'y nakahiga na lang\",\n", - " 'napapagod ka na ba sa kayayakap sa asawa mo',\n", - " 'refrain:',\n", - " 'ito ang kailangan mo',\n", - " 'idial lang ang telepono',\n", - " 'chorus:',\n", - " 'hindi na dapat maghirap',\n", - " 'sa iisang iglap ang buhay mo ay sasarap',\n", - " \"'wag nang mag-atubili kumuha ka ng\",\n", - " 'superproxy',\n", - " 'ako ay kaibigan na lagi mong maasahan',\n", - " 'umulan man o umaraw ay nariyan kapag kailangan',\n", - " 'ito ay special offer sa mga taong katulad mo',\n", - " 'gamitin ang iyong bulsa para guminhawa',\n", - " \"ako ang bahala sa 'yo\",\n", - " 'ang buhay mo ay buhay ko',\n", - " 'superproxy superproxy',\n", - " 'superproxy superproxy',\n", - " 'superproxy superproxy',\n", - " 'come and take a sip from the cup as the drink makes you think',\n", - " \"don't blink 'cause you'll be taken out by the pen and ink\",\n", - " \"superproxy, why don't you just talk to me\",\n", - " 'my rhyme be stickin to ya head like epoxy',\n", - " \"the mouth'll be blabbin, never be backstabbin\",\n", - " \"hangin' with the e-heads and i'm just plain having\",\n", - " 'fun, no time for gats and guns',\n", - " 'i use my mic like a gun i get the job done',\n", - " 'i play video games all day',\n", - " 'zipadee-dooda zipadee-day hiphop hooray!',\n", - " 'menage one, menage trois, menage three',\n", - " \"if songs were pets then i'd have a menagerie\",\n", - " 'chimney-chimney humpty dumpty',\n", - " 'grab on the mic start gettin funky',\n", - " 'funky with the flavor that you savor, imitator',\n", - " \"i'm the flavor of the hour other mc's i devour\",\n", - " \"i'll be with buddy, raimund, marcus, and ely\",\n", - " \"i'm on their case like petrocelli\",\n", - " \"electromagnetic hiphop and it don't\",\n", - " \"stop and it don't quit word-up!\",\n", - " \"lap it up like a pussy, sippin' on milk\",\n", - " \"rock hard to my style that's smooth as silk\",\n", - " \"yo, superproxy why don't you just talk to me?\",\n", - " 'nee mr. gendai speaker ima no jitsujou wa',\n", - " 'i don’t understand this',\n", - " 'rensa suru silencer mo haya simulator',\n", - " 'no one gives me an answer',\n", - " 'mou seigyo funou hijou jitai maru de kokoro arazu mitai',\n", - " 'kimochi wa dokka touku no hou e, can you reach me?',\n", - " 'nobody can find me here',\n", - " 'this is my secret place',\n", - " 'no one knows and no one will know',\n", - " 'but i feel like losing senses',\n", - " 'i am in this corner here alone',\n", - " 'sameta new realism kakageta kimi no koubutsu wa kitto',\n", - " 'age mo ashi mo torareta nanto mo buzama de aware na hito no hyoujou!',\n", - " 'mou seigyo funou ijou jitai maru de kokoro arazu mitai',\n", - " 'kimochi wa mo haya miatannai, can you hear me?',\n", - " 'nobody can find me here',\n", - " 'this is my secret place',\n", - " 'no one knows and no one will know',\n", - " 'but i feel like losing senses',\n", - " 'i am in this corner here alone',\n", - " 'mou boku ga tsutaetai koto nante',\n", - " 'hibi no kurashi no naka ni tsumatteite',\n", - " 'dakedo mitsukerarezu sou surushite',\n", - " 'mata ichinichi ga owatteiku no',\n", - " 'nobody can find me here',\n", - " 'this is my secret place',\n", - " 'no one knows and no one will know',\n", - " 'but i feel like losing senses',\n", - " 'i am in this corner here alone',\n", - " 'japanese:',\n", - " 'どうせこんなの茶番だ なんて 口にしちゃだめだ',\n", - " 'もうそんなのみんな知っている',\n", - " '楽しい事話そう もっと お化粧した俺は',\n", - " 'いい感じで目が死んでるね',\n", - " 'ナマのコンガで踊ろう',\n", - " 'ナマのステップを刻もう',\n", - " 'ナマ身とナマ身で揺れよう 永久に',\n", - " 'けしてこの世は地獄 なんて 確認しちゃだめだ',\n", - " 'だって今みんなここにいる',\n", - " 'あの人 元彼女 だっけ? 確か君の',\n", - " '妄想ならよくできてるね',\n", - " '昔の人間はきっと',\n", - " '音楽のかかる場所で',\n", - " 'いきなり恋とかしてた 真剣に',\n", - " 'どうせこの世は幻 なんて 口にしちゃだめだ',\n", - " 'もううっすらみんな知っている',\n", - " '悲しいことだろうと 全部 あくびして消えた',\n", - " 'さあにっこり笑って俺と',\n", - " 'ナマのコンガで踊ろう',\n", - " 'ナマのステップを刻もう',\n", - " 'ナマ身とナマ身で揺れよう 永久に',\n", - " 'ナマのビートで踊ろう',\n", - " 'ナマの手拍子で歌おう',\n", - " 'ナマ身とナマ身で遊ぼう 真剣に',\n", - " '踊ろう ナマで踊ろう',\n", - " '歌おう ナマで歌おう',\n", - " '踊ろう ナマで踊ろう',\n", - " '歌おう ナマで歌おう',\n", - " 'romaji:',\n", - " 'dōse konna no chabanda nante kuchi ni shicha dameda',\n", - " 'mōsonna no minna shitteiru',\n", - " 'tanoshī koto hanasō motto o keshō shita ore wa',\n", - " 'ī kanji de me ga shinderune',\n", - " 'nama no konga de odorō',\n", - " 'nama no suteppu o kizamō',\n", - " 'nama mi to nama mi de yureyō eikyū ni',\n", - " 'keshite konoyo wa jigoku nante kakunin shicha dameda',\n", - " 'datte ima minna koko ni iru',\n", - " 'ano hito moto kanojodakke ? tashika kun no',\n", - " 'mōsōnara yoku dekiterune',\n", - " 'mukashi no ningen wa kitto',\n", - " 'ongaku no kakaru basho de',\n", - " 'ikinari koi tokashiteta shinken ni',\n", - " 'dōse konoyo wa maboroshi nante kuchi ni shicha dameda',\n", - " 'mō ussura minna shitteiru',\n", - " 'kanashī kotodarō to zenbu akubi shite kieta',\n", - " 'sā nikkori waratte ore to',\n", - " 'nama no konga de odorō',\n", - " 'nama no suteppu o kizamō',\n", - " 'nama mi to nama mi de yureyō eikyū ni',\n", - " 'nama no bīto de odorō',\n", - " 'nama no tebyōshi de utaō',\n", - " 'nama mi to nama mi de asobō shinken ni',\n", - " 'odorō nama de odorō',\n", - " 'utaō nama de utaō',\n", - " 'odorō nama de odorō',\n", - " 'utaō nama de utaō',\n", - " 'english:',\n", - " 'do not mess around with anything like this is your farce',\n", - " 'everyone like that already knows',\n", - " 'let me tell you something fun i made more makeup',\n", - " 'my eyes are dead with a nice touch',\n", - " \"let's dance with nama's conga\",\n", - " \"let's engrave a step of nama\",\n", - " \"let's shake with a body and a bear forever\",\n", - " 'never mind seeing this world as hell',\n", - " 'because now everyone is here',\n", - " 'is that man her girlfriend? certainly',\n", - " 'you can do it if you are a delusion',\n", - " 'i think the old human beings',\n", - " 'in places where music is taken',\n", - " 'i suddenly fell in love seriously',\n", - " 'you must not put away visions of this world at all',\n", - " 'all of you already know',\n", - " 'all yawned and disappeared as sad things',\n", - " 'come on, smile and smile with me',\n", - " \"let's dance with nama's conga\",\n", - " \"let's engrave a step of nama\",\n", - " \"let's shake with a body and a bear forever\",\n", - " \"let's dance with the beat of nama\",\n", - " \"let's sing with a clap of hands\",\n", - " \"let's play with a bear and a nama body seriously\",\n", - " \"let's dance let's dance with nama\",\n", - " \"let's sing with a singing song\",\n", - " \"let's dance let's dance with nama\",\n", - " \"let's sing with a singing song\",\n", - " 'ice cream',\n", - " 'like a mousse is right, right, right',\n", - " 'como un helado derritiéndose',\n", - " 'mama buzz move, move tonight, night, night',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'simple, yes my friend',\n", - " 'como un helado derritiéndose',\n", - " 'simple, yes my friend',\n", - " 'como un helado derritiéndose',\n", - " 'like a mousse is right, right, right',\n", - " 'como un helado derritiéndose',\n", - " 'mama buzz move, move tonight, night, night',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'como un helado derritiéndose',\n", - " 'simple, yes my friend',\n", - " 'como un helado derritiéndose',\n", - " 'simple, yes my friend',\n", - " 'como un helado derritiéndose',\n", - " 'like a mousse is right, right, right',\n", - " 'como un helado derritiéndose',\n", - " 'mama buzz move, move tonight, night, night',\n", - " 'como un helado derritiéndose, como un helado',\n", - " 'phol ende vuodan',\n", - " 'vuorun zi holza',\n", - " 'du uuart demo balderes',\n", - " 'volon sîn vuoz birenkit',\n", - " 'thû biguol en sinhtgunt',\n", - " 'sunna era suister',\n", - " 'thû biguol en frîia',\n", - " 'volla, era suister',\n", - " 'thû biguol en vuodan',\n", - " 'sô hê uuola conda',\n", - " 'sôse bênrenkî',\n", - " 'sôse bluotrenkî',\n", - " 'sôse lidirenkî',\n", - " 'bên zi bêna',\n", - " 'bluot zi bluoda',\n", - " 'lid zi geliden',\n", - " 'sôse gelîmida sîn',\n", - " 'zȳhys ōñoso jehikagon āeksiot epi',\n", - " 'we will pray',\n", - " 'pray with me',\n", - " 'we can bring her back',\n", - " 'pray, remember me, oh, ooh',\n", - " 'zȳhys perzys stepagon āeksio ōño jorepi',\n", - " 'se morghūltas lȳs qēlītsos sikagon',\n", - " 'hen sȳndrorro, ōños. hen perzys, hen ñuqīr, perzys',\n", - " 'hen sȳndrorro, ōños. hen ñuqīr, perzys. hen morghot, glaeson',\n", - " 'we will pray',\n", - " 'pray with, with me',\n", - " 'we can bring her back',\n", - " 'pray, pray, pray with me, oh, ooh',\n", - " 'hen ñuqīr perzys. hen sȳndrorro, ōños',\n", - " \"morghot, glaeson, morghot glaeson, 'ost glaeson\",\n", - " 'please, please',\n", - " 'walo haaw baghvaano(garderner) nuw baharuk shaan',\n", - " 'ni paida kar fallan gul gath karan bulbul, tithuy samaan paida kar,...',\n", - " 'chaman vairaan wadaan shabnam, chatith jaame pareshan gul',\n", - " 'gulan tay bul gulan andr, dubaray jaan paida kar',\n", - " 'walo haaw baghvaano nuw baharuk shaan',\n", - " 'ni paida kar fallan gul gath karan bulbul, tithuy samaan paida kar,...',\n", - " 'shuban chay gar yi basti wal gulan hund trawe-zair-o-bam',\n", - " 'bunul(earthquake) kar wowi kar gagirai(thundering) ti bey tufaan(storm) paida(create) kar',\n", - " 'walo haaw baghvaano nuw baharuk shaan',\n", - " 'ni paida kar fallan gul gath karan bulbul, tithuy samaan paida kar,...',\n", - " 'hai talab kya hai sabab kya, kya garaz mazoor kya',\n", - " 'hai talab kya hai sabab kya, kya garaz mazoor kya',\n", - " 'nuksi jis mai ho bara wo nautiwana(differently abled) zoor(strength) kya',\n", - " 'gul gulshan gulfam',\n", - " 'gul gulshan gulfam',\n", - " 'gul gulshan gulfam...',\n", - " 'gul gulshan gulfam...',\n", - " 'gul gulshan gulfam',\n", - " 'gul gulshan gulfam.nuw baharuk shaan paida kar, walo haaw baghvaano diluk kar wowi kar tuffan paida kar, walo haaw baghvaanooooo',\n", - " 'waloooo walo walo waloooooo oo oo...',\n", - " 'at first you get the feeling that you really need some more',\n", - " \"but before you know it you'll be reeling on the floor\",\n", - " 'laying and a-waiting and a-praying in the rain',\n", - " 'staying and a-saying that i need your love again',\n", - " 'na o sore to',\n", - " 'shirazu tomo shire',\n", - " 'sarusawa no',\n", - " 'ato o kagami-ga-',\n", - " 'iki ni shizumeba',\n", - " 'nagaraete',\n", - " 'kono yo no yami wa',\n", - " 'yomo harete',\n", - " 'shide no yamaji no',\n", - " 'at first you get the feeling that you really need some more',\n", - " \"but before you know it you'll be reeling on the floor\",\n", - " 'laying and a-waiting and a-praying in the rain',\n", - " 'staying and a-saying that i need your love again',\n", - " 'shini ni kite',\n", - " 'shinu toko nareba-',\n", - " 'shinu ga yoshi',\n", - " 'shinisokonōte',\n", - " 'shinanu nao yoshi',\n", - " 'i know i was not a dreamer',\n", - " 'but i lost something somehow anyway!',\n", - " \"i don ' t care ' bout what they say\",\n", - " 'whatever whoever tells me something',\n", - " 'never stop! until the end',\n", - " 'koko de oreru hodo yawa ja nai',\n", - " \"it ' s so wrong!!\",\n", - " 'sonna risou wo boku wa omoiegaku tabi',\n", - " 'tsuyoku nara nakya to mata kyou no boku wo nugisuteru',\n", - " 'kudaranai okusoku ni zen ?(nara) e ha mazu oi toi te',\n", - " 'shibara re zu dekiru koto hitotsu hitotsu kumitate te iku',\n", - " 'sore kara da sono saki ha dare ga aa dako ? da ittatte',\n", - " 'yareru no ha onore dake jibun jishin o shinji te miru yo!',\n", - " \"everything i ' m gonna do\",\n", - " 'is not what you think hard thing anyway!',\n", - " \"it ' s too bad! everyone knows!!\",\n", - " 'the simple thing is not so easy',\n", - " \"i am sorry! i can ' t do this!!\",\n", - " 'sonna you na ki ga suru kedo',\n", - " \"it ' s so wrong ?\",\n", - " 'tokini sasai na koto ga boku o boku ja nakusu',\n", - " 'i know that hajimare ba owari mo sekai ( koko ) de ha aru n desho ?',\n", - " 'kudaranai okusoku ni zen ?(nara) e ha mazu oi toi te',\n", - " 'shibara re zu dekiru koto hitotsu hitotsu kumitate te iku',\n", - " 'sore kara da sono saki ha dare ga aa dako ? da ittatte yareru no ha onore dake jibun jishin o shinji te miru yo!',\n", - " 'amae toka iiwake wa ninotsugi san no tsugi ni shite',\n", - " 'ima da kara tanoshimeru koto mitsuke te hanasan de kure yo!',\n", - " 'sore kara da sono saki wa ima wa aa dako ? da ittatte',\n", - " 'hajimara nai shi owari mo shi nai',\n", - " 'waiting for ending is no future!',\n", - " 'blind and beset',\n", - " 'they lurch towards pale void',\n", - " 'a ghostly host of exiled souls',\n", - " \"they've haunted us\",\n", - " 'for they cannot see',\n", - " 'and burned the ones',\n", - " 'who set them free',\n", - " \"i've yearned for you\",\n", - " \"i've yearned for way too long\",\n", - " \"i'm coming home\",\n", - " 'home again',\n", - " \"i'm now born again\",\n", - " 'i lunge into you',\n", - " \"and i'll breathe again\",\n", - " \"i'm coming home\",\n", - " 'behold, i have fought my fight',\n", - " \"i've run my race\",\n", - " 'i will be gone, i will be reborn',\n", - " 'into the dark, into the rock',\n", - " 'bright sun of the night',\n", - " \"i'm coming home\",\n", - " 'home, home again',\n", - " \"i'm now born again\",\n", - " 'i lunge into you',\n", - " \"and i'll breathe again\",\n", - " \"i'm coming home\",\n", - " 'forsaken!',\n", - " 'everything that was became what is',\n", - " 'and what withers and dies is but alike the larva in its cocoon',\n", - " \"i'm coming home\",\n", - " 'home again',\n", - " \"i'm now born again\",\n", - " 'i lunge into you',\n", - " \"and i'll breathe again\",\n", - " \"i'm coming home\",\n", - " 'home again',\n", - " \"i'm now born again\",\n", - " 'i lunge into you',\n", - " \"and i'll breathe again\",\n", - " \"i'm coming home\",\n", - " 'tigerne nemeson tigerne moníon',\n", - " 'anson carantos arevoset ver roccíā',\n", - " 'vediíomos cixset sī ambi bitun in esíās moníobi',\n", - " 'sucelle ater argíī trē esíās moníūs wa',\n", - " 'ad nemesā ad antumnon',\n", - " 'ya rieh chehili ya zamen gualleb',\n", - " 'ya rieh chehili ya zamen gualleb',\n", - " 'men horguetek ghannili, wallew habebi ghrab',\n", - " 'douri fel smaa mily, ou emhi layali adheb',\n", - " 'ou bel ouagut lamma tjini, talguini jorhi tab',\n", - " 'oh tojo fero sora noi',\n", - " 'etera nestra lora coi',\n", - " 'oh sarta oh ro sa cara',\n", - " 'era sa ju coi',\n", - " 'when the moon shines red',\n", - " 'soio ca la',\n", - " 'when the moon shines red, red, red',\n", - " 'when the moon shines red',\n", - " 'burning fire',\n", - " 'when the moon shines red, red, red',\n", - " 'oh dama setra rema troy',\n", - " 'setre do estra nora coi',\n", - " 'oh tando coro sa fora',\n", - " 'erju co rusoi',\n", - " 'when the moon shines red',\n", - " 'soio ca la',\n", - " 'when the moon shines red, red, red',\n", - " 'when the moon shines red, red, red',\n", - " 'fullmoon night',\n", - " 'awake us from the dead',\n", - " 'eija-uh, a eija-eija-uh!',\n", - " 'firelight',\n", - " 'the world we see is red',\n", - " 'eija-uh, a eija-eija-uh!',\n", - " 'oh tando coro sa fora',\n", - " 'eija-eija-uh!',\n", - " 'erju co rusoi',\n", - " 'when the moon shines red',\n", - " 'when the moon shines red',\n", - " 'soio ca la',\n", - " 'when the moon shines red, red, red',\n", - " 'when the moon shines red',\n", - " 'burning fire',\n", - " 'when the moon shines red, red, red',\n", - " 'don’t touch my eyes, don’t change my sight',\n", - " 'with your polycarbon shards of lies',\n", - " 'our minds can be hijacked',\n", - " 'programmed to self destruct',\n", - " 'takot sa ilalim ni duterte',\n", - " 'rohaingyaarmyarr aarr luumyoe tone saathpyatmhu',\n", - " 'hindutva kee paagalepaam',\n", - " 'our minds can be hijacked',\n", - " 'programmed to self destruct',\n", - " 'pull to refresh on retina desplay',\n", - " 'our minds can be hijacked',\n", - " 'programmed to self destruct',\n", - " 'preste vârfuri luna trece şi se-ascunde-n câte-un nor',\n", - " 'mă îmbrăţişează rece şi fuge cu al meu dor',\n", - " 'pe sub cetine de brad, pe sub codri, pe cărări',\n", - " 'luna şi-a ei raze albe fac năluci şi arătări',\n", - " 'numai una-i cea mai dragă, după care-alerg de zor',\n", - " 'când s-o prind s-o strâng în braţe, luna fuge iar în nori',\n", - " 'ostenit de-atâta fugă, cat hodină pe-un pietroi',\n", - " 'însă luna reapare - licurici în juru-mi roi',\n", - " ...]},\n", - " 'data': ['cut, guts, fire, wood',\n", - " 'air, quick, bubble, metal',\n", - " 'crash, flash, heat, bomb',\n", - " 'ice, fire, wily, rock',\n", - " 'cutman, gutsman, fireman, wily',\n", - " 'iceman, bombman, elecman, rockman',\n", - " 'airman, quickman, woodman, bubbleman',\n", - " 'crashman, flashman, heatman, metalman',\n", - " 'cutman, gutsman, fireman, iceman',\n", - " 'sniper joe, rush jet, dr. light',\n", - " 'mega man!',\n", - " 'game over',\n", - " 'parami na ng parami',\n", - " 'de-kotseng estudyante',\n", - " 'sa state university, state university',\n", - " 'state university, state university, yah',\n", - " 'walang efficiency',\n", - " 'mga government employees',\n", - " 'sa state university, state university',\n", - " 'state university, state university, yah-hah',\n", - " 'antique na laboratory',\n", - " 'bulok na facilities',\n", - " 'sa state university, state university',\n", - " 'state university, state university, yah-hah-ah',\n", - " 'administration policy',\n", - " 'itaas ang tuition fee',\n", - " 'pati na din ang dorm fee',\n", - " 'bakit walang nagrarally?',\n", - " 'kahit may demolition',\n", - " 'private corporation',\n", - " 'barat na allocation sa education',\n", - " 'commercialization, colonialization',\n", - " 'privatization, kawawang oblation!',\n", - " 'sa state university, sa state university',\n", - " 'state university, state university',\n", - " 'state university, state university',\n", - " 'state university, state university',\n", - " 'state university, state university',\n", - " 'state u, hate you',\n", - " 'state u, hate you',\n", - " 'state u, hate you',\n", - " 'state u, hate you',\n", - " 'state u, hate you',\n", - " 'state university, state university',\n", - " 'state university, state university',\n", - " 'state university, state university',\n", - " 'state university, state university',\n", - " 'hah!',\n", - " 'jea mään! hahahaha!',\n", - " 'huahaha! auh! aih!',\n", - " 'attention! attention!',\n", - " 'the world has been contaminated with high levels of alcohol',\n", - " 'the streets are filled with crime and bloodshed',\n", - " 'the world as we know it has become… spurgatory!',\n", - " 'mitää?!',\n", - " 'immi daga uimpi geneta',\n", - " 'lana beððos et’ iouintutos',\n", - " 'blatus ceti, cantla carami',\n", - " 'aia gnata uimpi iouinca',\n", - " 'pid in cete tu toue suoine',\n", - " 'pid uregisi peli doniobi?',\n", - " 'aia gnata uimpi iouinca',\n", - " 'pid in cete tu toue suoine',\n", - " 'aia mape in blatugabagli uorete',\n", - " 'cante celiiui in cete!',\n", - " 'vrit-me lindos dubnon-piseti',\n", - " 'vrit-me lindos dubnon-piseti',\n", - " 'n’immi mapos, immi drucocu',\n", - " 'in cetobi selgin agumi',\n", - " 'selgin blatos tou’ iouintutos',\n", - " 'nu, uoregon, cu, uorigamos',\n", - " 'lamman, cu, suuercin lingamos',\n", - " 'indui uelui cantla canamos!',\n", - " 'ne moi iantus, immi drucocu',\n", - " 'in cetobi selgin agumi',\n", - " 'ne moi iantus gnaton uorega',\n", - " 'iantus drucocunos uoregon',\n", - " 'vrit-me lindos dubnon-piseti',\n", - " 'vrit-me lindos dubnon-piseti',\n", - " 'cu allate, papon sod urege',\n", - " 'eððiio de iantu in cridie',\n", - " 'vediiumi: cante moi uosta!',\n", - " 'ne, a gnata, ne uostami',\n", - " 'ne te carami',\n", - " 'ne te carami!',\n", - " 'boua daga uimpi geneta',\n", - " 'immi trouga, lana nariias',\n", - " 'vrit-me lindos dubnon-piseti',\n", - " 'vrit-me lindos dubnon-piseti',\n", - " 'cât aş mai sta la umbra ta, codrule măreţ',\n", - " 'frunzişul tău m-o legăna, din muntele semeţ;',\n", - " 'pâraie reci mi-or îngâna, de voi şti să ascult',\n", - " 'poveşti ce-n lume s-or răspândi, din vremuri de demult',\n", - " 'cărări ascunse voi căuta, cu stele călăuză',\n", - " 'nimeni, de-i om sau fiară, să nu mă auză;',\n", - " 'tainic sălaş eu voi afla, ascuns sub piatra doamnei',\n", - " 'de lumea asta m-oi depărta, în nemurirea toamnei',\n", - " 'under piatra doamnei',\n", - " 'long would i linger in your shade, ye majestic wood!',\n", - " 'from lofty crag your leaves will soothe, linger if i should!',\n", - " 'icy streams will softly whisper yarns to my ear',\n", - " 'from olden times across the world, if i care to hear',\n", - " 'hidden pathways again i will seek, guided by the star',\n", - " 'never a soul, whether man or beast, should hear me from afar',\n", - " '’neath piatra doamnei i shall find my own secret lair',\n", - " 'away from this world i will abide, immortal autumn’s heir',\n", - " 'şi îngropând amintiri și dor;',\n", - " 'şi dulce-l amăgește să-i pară mai ușoară',\n", - " 'cumplită trecerea anilor',\n", - " 'pe râul vremii e-o luntre din inimi și gând închegată',\n", - " 'ce duhul rău n-o poate zdruncina;',\n", - " 'în prova-mpietrită și cruntă, tăind prin râul vremii',\n", - " 'stă neclintită inima mea',\n", - " 'râu străvechi, râu străbun',\n", - " 'râu al vremii, prieten bun',\n", - " 'river of time',\n", - " 'tumultuous, its stream flows, carving in the heart of man',\n", - " 'a burial chamber for memories and yearning',\n", - " 'sweetly it lures him into seeming relief',\n", - " 'from stern burden of years past turning',\n", - " 'on the river of life glides a ferry wrought from hearts and thought',\n", - " 'that the evil spirit cannot hope to shake',\n", - " 'at the grim petrified prow, parting the river of time',\n", - " 'unflinching, my heart stands awake',\n", - " 'river of old, forefathering tide',\n", - " 'river of time, friend by my side',\n", - " 'ou!! tu!! vieni anca tu!!!',\n", - " \"gosso's party pera e rum!!!\",\n", - " '140 rum e pera!!!',\n", - " \"gosso's party e rumatera!\",\n", - " \"gosso's party e rumatera!\",\n", - " \"gosso's party giiiiirls!\",\n", - " \"gosso's party gosso's party girls!\",\n", - " \"gosso's party giiiiirls!\",\n", - " \"gosso's party gosso's party girls!\",\n", - " 'ou!! tu!! tete fora!!!',\n", - " 'rumatera fin matina bonora!',\n", - " '140 rum e cola!',\n", - " \"gosso's party e tete fora!!\",\n", - " \"gosso's party e tete fora!!\",\n", - " \"gosso's party e tete foraaa!!\",\n", - " \"gosso's party giiiiirls!\",\n", - " \"gosso's party gosso's party girls!\",\n", - " \"gosso's party giiiiirls!\",\n", - " \"gosso's party gosso's party girls!\",\n", - " \"gosso's party giiiiirls!\",\n", - " \"gosso's party giiiiirls!\",\n", - " \"hey!! hey!! gosso's party!!\",\n", - " \"hey!! hey!! gosso's party!!\",\n", - " \"gosso's party giiiiirls!\",\n", - " \"gosso's party gosso's party girls!\",\n", - " \"gosso's party giiiiirls!\",\n", - " \"gosso's party gosso's party girls!\",\n", - " \"gosso's party!\",\n", - " \"gosso's party!\",\n", - " \"gosso's party girls!\",\n", - " \"gosso's party!\",\n", - " \"gosso's party!\",\n", - " \"gosso's party girls!\",\n", - " 'astro spectra, azillama',\n", - " 'astro spectra, azillama',\n", - " 'huh',\n", - " \"yum yum eat'em up, eat'em up\",\n", - " 'no',\n", - " 'huh',\n", - " \"yum yum eat'em up, eat'em up\",\n", - " 'huh',\n", - " \"yum yum eat'em up, eat'em up\",\n", - " 'huh',\n", - " 'no',\n", - " \"yum yum eat'em up, eat'em up\",\n", - " 'huh',\n", - " \"yum yum eat'em up, eat'em up\",\n", - " 'huh',\n", - " \"yum yum eat'em up, eat'em up\",\n", - " 'huh',\n", - " 'no',\n", - " \"yum yum eat'em up, eat'em up\",\n", - " 'huh',\n", - " \"yum yum eat'em up, eat'em up\",\n", - " 'huh',\n", - " \"yum yum eat'em up, eat'em up\",\n", - " 'huh',\n", - " 'ohhh.........',\n", - " 'dogledanje, bez bakneži, solzi;',\n", - " 'i na noze – dodeka pišuva the end!',\n", - " 'od istokot zlatno-žolt den se raѓa',\n", - " 'a navečer na zapad sè se davi v krv',\n", - " 'namesto so toržestven tresok',\n", - " 'svetov ќe zamolkne vo sramen pisok:',\n", - " 'nevermore!',\n", - " 'nišani gore v nebo!',\n", - " 'nišani gore v nebo!',\n", - " \"(the human race was dyin' out\",\n", - " 'noone left to scream, to scream and shout',\n", - " 'people walking on the moon',\n", - " 'smog will get your pretty soon',\n", - " 'i tried to run',\n", - " 'i tried to hide',\n", - " 'break on through to the other side',\n", - " 'break on through to the other side) – jim morison',\n", - " 'nišani gore v nebo!',\n", - " 'nišani gore v nebo!',\n", - " 'nišani gore v nebo!',\n", - " 'nišani gore v nebo!',\n", - " 'i zamolkni vo tišina!',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " \"heart's filthy lesson\",\n", - " 'baba-baba-ba',\n", - " \"heart's filthy lesson\",\n", - " 'baba-baba-ba',\n", - " \"heart's filthy lesson\",\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'baba-baba-ba, baba-baba-ba, baba-baba-ba',\n", - " 'clap your hands , stamp your both feet',\n", - " 'tachiagare don‘t stop the vibe and the beat',\n", - " 'crash the wall, buchi yaburu',\n", - " 'buchikowasu n da subete no genkai o',\n", - " 'wow, just say wow oh',\n", - " 'without your weakness or nervous soul',\n", - " 'sō sa daichi o yurashitsuzuke te',\n", - " 'sō moyasu',\n", - " 'soshite mae o niramu',\n", - " 'mune takamaru',\n", - " 'you know to this damn glorious moment',\n", - " 'hail to the sunwolves , brave like an animal',\n", - " 'yūkan de kyōjin na senshi no chōsen o',\n", - " 'habamu mono nante nai',\n", - " 'shōdō no mama ni zenshin shi te iku',\n", - " 'kick it now kick it now, wow oh',\n", - " 'kick it now kick it now',\n", - " 'wow, shaking up the higher ground till we white out',\n", - " 'so get loud the perfect blast don‘t stop, brave it out',\n", - " 'wow, blow the horn of honor cherish the big time',\n", - " 'break the line , brave it out',\n", - " 'god bless the field, give them the wind',\n", - " 'sā makiokose spreading the wings',\n", - " 'crush them all, buchikamasu',\n", - " 'buchikowasu n da subete no zenrei o',\n", - " 'wow, just say wow oh',\n", - " 'never give in or give up yourself',\n", - " 'sō sa shōri o ubaitoru tame',\n", - " 'sō tagiru',\n", - " 'soshite mae ni susumu',\n", - " 'mune takanaru',\n", - " 'we know to this damn precious moment',\n", - " 'bind your souls, the invictus wolves',\n", - " 'kyūkyoku de shinsei na senshi no eikō o',\n", - " 'me o fuseru jikan nante nai',\n", - " 'honnō no mama ni zenshin shi te iku',\n", - " 'wow shaking up the higher ground till we white out',\n", - " 'so get loud the perfect blast don‘t stop brave it out',\n", - " 'wow blow the horn of honor cherish the big time',\n", - " 'break the line, brave it out',\n", - " 'brave it out',\n", - " 'brave it out',\n", - " 'kick it now kick it now, wow oh',\n", - " 'kick it now kick it now, wow oh',\n", - " 'kick it now kick it now, wow oh',\n", - " 'kick it now kick it now, wow oh',\n", - " 'wow shaking up the higher ground till we white out',\n", - " 'so get loud the perfect blast don‘t stop brave it out',\n", - " 'wow blow the horn of honor cherish the big time',\n", - " 'break the line, brave it out',\n", - " 'wohoh, brave it out',\n", - " 'break the line, brave it out',\n", - " 'letra de \"dance and dense denso (mtv unplugged)\"',\n", - " 'verso 1: (micky hidobro)',\n", - " 'brincos, jalones, codazos y empujones...',\n", - " 'brincos, jalones, codazos y empujones',\n", - " 'de caca recordé los famosos pisotones',\n", - " 'ojos morados, patada en los cojones',\n", - " 'en el slam entre matudos y pelones',\n", - " 'puente: (paco ayala)',\n", - " 'santo tomas de los pelos parados',\n", - " 'a narizasos su pie le dejaste madreado',\n", - " 'cayó el pedo, cayó de este lado',\n", - " 'dance, dense denso todo empanizado',\n", - " 'verso 2: (tito fuentes)',\n", - " 'faster than the rayo',\n", - " 'we the new freestylers a caballo',\n", - " 'bone-break-dance intenso let go',\n", - " 'dance and dense, denso (wey)',\n", - " 'coro:',\n", - " 'dance, dance and dense, denso (x3)',\n", - " 'verso 3: (randy ebright)',\n", - " 'excuse me if you hear me getting too loud',\n", - " \"it's that i get kind of crazy when you get me around a crowd\",\n", - " 'put a codo in you puto',\n", - " 'you get knocked out',\n", - " 'come on sugar foot',\n", - " \"you're gonna end up getting plowed\",\n", - " 'come on get rowdy, come on get bloody',\n", - " 'come on get sweaty, hit somebody',\n", - " 'if you got the balls',\n", - " 'come and take a chance',\n", - " \"and brace yourself cuz it's some dense ass dancing\",\n", - " 'puente: (tito fuentes)',\n", - " 'faster than the rayo',\n", - " \"we's the new freestylers a caballo\",\n", - " 'bone-break-dance intenso let go',\n", - " 'dance and dense, denso (wey)',\n", - " 'coro:',\n", - " 'dance, dance and dense, denso (x3)',\n", - " 'dance, dance, dance, dance',\n", - " 'dense denso, dense denso (x3)',\n", - " 'să-mi cânţi cobzar bătrân ceva, să-mi cânţi ce ştii mai bine',\n", - " 'că vin ţi-oi da şi bani ţi-oi da, şi haina de pe mine',\n", - " 'să-mi cânţi cobzar bătrân ceva, să-mi cânţi şi din vioară',\n", - " 'că doar s-o isprăvi cândva o viaţă atât de amară',\n", - " 'lăsaţi-mă în fum să stau în crâşma-ntunecată',\n", - " 'să beau, să cânt şi-apoi să-nving durerea ce m-apasă',\n", - " \"lost in a dark place, i'm craving for some light\",\n", - " 'make my hopes, make my dreams be once again alive',\n", - " 'i do not want your pity, just play a song for me',\n", - " 'play it long, make me strong, and help me find my peace',\n", - " \"i've made mistakes and hurt those who loved me most\",\n", - " 'my past is haunting me like an evil ghost',\n", - " 'i need to find a way out of this dark hole',\n", - " 'your song is like a balm to my wounded soul',\n", - " \"risin' up, da du da daaaaa...\",\n", - " 'dah dah ah ah da da daaaaa...',\n", - " \"went the distance now i'm bah dah dah dah\",\n", - " 'got to fight for do dodo dooooo',\n", - " \"it's the eye of the tiger\",\n", - " \"it's the blah blah blah blah\",\n", - " 'buh da buda buda pla-o',\n", - " 'da da da do do do do da da da',\n", - " \"and he's watching us all with the... ahhhhhh!\"]}}},\n", - " 'tn': {'sentence': {'pop': {'meta': {'train_data': [\"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", - " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", - " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", - " \"let's get dirty, let's get dirty, let's get dirty, (damn) let's get\",\n", - " 'dirty',\n", - " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", - " \"let's get dirty, lеt's get dirty, let's get dirty, lеt's get dirty\",\n", - " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", - " \"let's get dirty, let's get dirty, let's get dirty\",\n", - " \"let's get\",\n", - " \"let's get dirty, let's get dirty\",\n", - " \"let's get dirty\",\n", - " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", - " \"let's get dirty, let's get dirty, let's get dirty, (uh) let's get dirty\",\n", - " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", - " \"let's get dirty, let's get dirty, let's get dirty\",\n", - " \"let's get\",\n", - " '(dirty)',\n", - " \"let's get dirty, let's get dirty\",\n", - " \"let's get dirty\",\n", - " \"(let's get dirty, let's get dirty, let's get dirty, let's get dirty\",\n", - " \"let's get dirty, let's get dirty, let's get dirty, let's get dirty)\",\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'uieram devudim vol',\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'uieram devudim vol',\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'aya ya ya ya yay, aya',\n", - " 'aya ya ya ya yay, aya',\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'uieram devudim vol',\n", - " 'imsigo vailen so',\n", - " 'aya ya ya ya yay, aya',\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'uieram devudim vol',\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'uieram devudim vol',\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'aya ya ya ya yay, aya',\n", - " 'aya ya ya ya yay, aya',\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'uieram devudim vol',\n", - " 'imsigo vailen so',\n", - " 'aya ya ya ya yay, aya',\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'uieram devudim vol',\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'uieram devudim vol',\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'aya ya ya ya yay, aya',\n", - " 'aya ya ya ya yay, aya',\n", - " 'imsigo vailen so',\n", - " 'imsigo vailen so',\n", - " 'uieram devudim vol',\n", - " 'imsigo vailen so',\n", - " 'aya ya ya ya yay, aya...',\n", - " \"i hènn scià i fantasmi cun't i reumatismi\",\n", - " 'i hènn scià i vampiri senza deenc',\n", - " \"l'è scià la nòcc cun't el maa de cràpa\",\n", - " 'che la và a durmì tràda giò in sö el laagh…',\n", - " 'i hènn scià i barboni cun la facia stràscia',\n", - " 'e i cartoni per quatàss el cüü',\n", - " 'hann tiraa föe tücc i so ricordi',\n", - " 'e i hann brüsaa per sculdàss i man…',\n", - " 'i hènn scià i taxisti cun la fàcia giàlda',\n", - " 'e i caramba cun la fàcia blöe',\n", - " 'i hènn scià i suldaa cun la giàca vèrda',\n", - " 'vànn tücc insèma a resegà i tusànn…',\n", - " \"l'è rüvada la nòcc…cun la sua butèga rùta\",\n", - " 'la sua umbrèla sgavezzàda',\n", - " \"e l'umbria senza i vestii…\",\n", - " \"l'è scià la mümmia cun la pancèra\",\n", - " \"e l'arcangel cun l'afregiùu\",\n", - " \"l'è scià la stria in söe la muturèta\",\n", - " \"l'è scià anca el diàvul a pagà de beev…\",\n", - " 'i hènn scià i playboy senza gnaa una dòna',\n", - " 'i hènn scià anca i dònn cun scià dumà un büceer',\n", - " \"hann faa amicizia in söe 'na panda sisley\",\n", - " \"dal finestrèn l'è gulàa föe un guldòn…\",\n", - " 'i hènn scià anca i föe i làdri e i assassèn',\n", - " 'i vagabòndi e i föe de coo',\n", - " 'ma per stasìra i vàarden söe la löena',\n", - " \"l'è mea sìra per cupà o crepà…\",\n", - " \"l'è rüvada la nòcc… negra cumè un cupertòn\",\n", - " 'sigaretta smurzàda…',\n", - " 'tràda là suta un lampiòn…',\n", - " 'jaage jaage',\n", - " 'soye soye',\n", - " 'tere naina',\n", - " 'sapnon mein',\n", - " 'khoye khoye',\n", - " 'tere naina',\n", - " 'tanhaiyon ki',\n", - " 'parchaiyon mein',\n", - " 'tum hi ho na',\n", - " 'tere naina',\n", - " 'haye naina',\n", - " 'sooni sooni',\n", - " 'sooni sooni',\n", - " 'si yeh raina',\n", - " 'aaja piya (aaja piya)',\n", - " 'tere bine nahi chaina',\n", - " 'unchaaiyon ki gehraaiyon mein',\n", - " 'tumhi ho na',\n", - " 'tere naina',\n", - " 'haye naina',\n", - " 'paaya tujhe to',\n", - " 'sab mil gaya haan',\n", - " 'ehsaas aisa ki sab khil gaya',\n", - " 'jaise himalaya',\n", - " 'khud pighal ke',\n", - " 'saagar ban gaya',\n", - " 'haan in palon ki',\n", - " 'raanaaiyon mein',\n", - " 'tum hi ho na',\n", - " 'tere naina',\n", - " 'haye naina',\n", - " 'madhosh raatein',\n", - " 'pal pal suhaani',\n", - " 'rut gaa rahi hai',\n", - " 'dil ke taraane',\n", - " 'saare nazaare chand taare',\n", - " 'gungunane lage',\n", - " 'in vadiyon ki angraiyon mein',\n", - " 'tumhi ho na',\n", - " 'tere naina',\n", - " 'haye naina',\n", - " 'jaage jaage',\n", - " 'soye soye',\n", - " 'tere naina',\n", - " 'sapnon mein',\n", - " 'khoye khoye',\n", - " 'tere naina',\n", - " 'tanhaiyon ki',\n", - " 'parchaiyon mein',\n", - " 'tum hi ho na',\n", - " 'tere naina',\n", - " 'haye naina',\n", - " 'sooni sooni',\n", - " 'sooni sooni',\n", - " 'si yeh raina',\n", - " 'aaja piya (aaja piya)',\n", - " 'tere bine nahi chaina',\n", - " 'unchaaiyon ki gehraaiyon mein',\n", - " 'tumhi ho na',\n", - " 'tere naina',\n", - " 'haye naina',\n", - " 'hangul',\n", - " 'whatever 바라는 대로 해요',\n", - " '넌 뭘 해도 예뻐요',\n", - " '난 그댈 믿어요',\n", - " '무엇이든 하고싶은 거 하세요',\n", - " '자꾸 눈치 보지 말고',\n", - " '편하게 생각해요',\n", - " 'i believe you believe you',\n", - " 'i believe you oh i love you',\n", - " 'believe you believe you',\n", - " 'i believe you oh i like you',\n", - " 'believe you believe you',\n", - " 'i believe you oh i miss you',\n", - " 'believe you believe you i love you',\n", - " 'whatever 원하는 대로 해요',\n", - " '넌 어차피 잘 될 거야 난 그댈 믿어요',\n", - " '무엇이든 하고싶은 거 하세요',\n", - " '자꾸 눈치 보지 말고 편하게 생각해요',\n", - " 'i believe you believe you',\n", - " 'i believe you oh i love you',\n", - " 'believe you believe you',\n", - " 'i believe you oh i like you',\n", - " 'believe you believe you',\n", - " 'i believe you oh i miss you',\n", - " 'believe you believe you i love you',\n", - " 'romanization',\n", - " 'whatever baraneun daero haeyo',\n", - " 'neon mwol haedo yeppeoyo',\n", - " 'nan geudael mideoyo',\n", - " 'mueosideun hagosipeun geo haseyo',\n", - " 'jakku nunchi boji malgo',\n", - " 'pyeonhage saenggaghaeyo',\n", - " 'i believe you believe you',\n", - " 'i believe you oh i love you',\n", - " 'believe you believe you',\n", - " 'i believe you oh i like you',\n", - " 'believe you believe you',\n", - " 'i believe you oh i miss you',\n", - " 'believe you believe you i love you',\n", - " 'whatever wonhaneun daero haeyo',\n", - " 'neon eochapi jal doel geoya nan geudael mideoyo',\n", - " 'mueosideun hagosipeun geo haseyo',\n", - " 'jakku nunchi boji malgo pyeonhage saenggakhaeyo',\n", - " 'i believe you believe you',\n", - " 'i believe you oh i love you',\n", - " 'believe you believe you',\n", - " 'i believe you oh i like you',\n", - " 'believe you believe you',\n", - " 'i believe you oh i miss you',\n", - " 'believe you believe you i love you',\n", - " 'nae ane nugunga sum swineunde malhamyeon mwo hae midji anhneunde',\n", - " 'mireo naeryeo haedo neon ppulichilyeo haedo no',\n", - " 'domangchilyeo haedo neon geoul soge isseo no',\n", - " \"i'm so so (my li li life)\",\n", - " \"i'm so so afraid-\",\n", - " \"i'm so so afraid\",\n", - " \"i'm so so i'm so so afraid\",\n", - " \"i'm so so i'm so so afraid\",\n", - " 'neon nugunyago mureobomyeon misoreul jieumyeo nan',\n", - " 'neorago hae',\n", - " 'mireo naeryeo haedo neon ppulichilyeo haedo no',\n", - " 'domangchilyeo haedo neon geoul soge isseo no',\n", - " \"i'm so so (my li li life)\",\n", - " \"i'm so so afraid-\",\n", - " \"i'm so so afraid\",\n", - " \"i'm so so i'm so so afraid\",\n", - " \"i'm so so i'm so so afraid\",\n", - " 'neon nugunyago mureobomyeon misoreul jieumyeo nan',\n", - " 'neorago hae',\n", - " 'romanization',\n", - " 'be be baby oeroweo a wae be be baby bappeugo shigan eopseo',\n", - " 'be be baby goeroweo a wae be be baby mot bwa bogo shipeodo',\n", - " 'ba ba bamerado neol boreo gallae na nawa gatdamyeon nawajullae',\n", - " 'ba bamerado neol boreo galge na nawa gatdamyeon',\n", - " 'nawajweo yeah',\n", - " 'eodiya baby akkan soljikhi jeongshin eopseosseo na mibji?',\n", - " 'honnaejweo iljjik da kkeunnaego wasseo na jinshim jibjunghaesseotji',\n", - " 'da kkeunnaego neorang nollyeogo shwit amu banghae eopshi ay',\n", - " 'keopina ttaerireo gaja oneul nalsshido jojana',\n", - " 'geotgien dari apeujana an kkeullyeodo ildan nawabwa',\n", - " 'oh baby nan junbi da dwaesseo umm maybe neon tto twinggigetjyo',\n", - " 'oh baby 10shibakke an dwaesseo woo lady maedallil geoya gyesok yeah',\n", - " 'jib apeuro derireo galge geunyang daechung nawa deo kkumiji malgo',\n", - " 'mannan jeok eopseotjana bame budam gajji malgo ildan nawabwa',\n", - " 'be be baby oeroweo a wae be be baby bappeugo shigan eopseo',\n", - " 'be be baby goeroweo a wae be be baby mot bwa bogo shipeodo',\n", - " 'ba ba bamerado neol boreogallae na nawa gatdamyeon nawajullae',\n", - " 'ba bamerado neol boreogalge na nawa gatdamyeon',\n", - " 'nawajweo yeah',\n", - " 'jib gagi shireo',\n", - " '(jib gagi shireo)',\n", - " 'honja museoweo',\n", - " '(honja museoweo)',\n", - " 'an naomyeon miweo',\n", - " '(an naomyeon miweo)',\n", - " 'geunyang mannajweo',\n", - " '(geunyang mannajweo)',\n", - " 'be be baby oeroweo a wae be be baby bappeugo shigan eopseo',\n", - " 'be be baby goeroweo a wae be be baby mot bwa bogo shipeodo',\n", - " 'ba ba bamerado neol boreogallae na nawa gatdamyeon nawajullae',\n", - " 'ba bamerado neol boreogalge na nawa gatdamyeon',\n", - " 'nawajweo yeah',\n", - " 'zousann',\n", - " 'zousann',\n", - " 'ohanaga nagainone',\n", - " 'souyo',\n", - " 'kaasannmo nagainoyo',\n", - " 'zousann',\n", - " 'zousann',\n", - " 'darega sukinano',\n", - " 'anone',\n", - " 'kaasannga sukinanoyo',\n", - " 'elephant',\n", - " 'elephant, elephant',\n", - " 'you have a long, long nose',\n", - " 'my mother has a long nose too',\n", - " 'elephant, elephant',\n", - " 'who do you like more',\n", - " 'i like my mother more',\n", - " 'with or without you',\n", - " 'with or without you',\n", - " 'with or without you',\n", - " 'with or without you',\n", - " 'ara imi kkeutnatdaneun geol',\n", - " 'jal ara da ara',\n", - " 'ara nohajweoya haneun',\n", - " 'jal ara da ara',\n", - " '(but without you) sarangeun kkeutnaji anhneun geol',\n", - " '(but without you) nunmuldo meom chuji anhneun geol',\n", - " '(so without you you) neo eopshido',\n", - " '(without you you) honjaseodo sarangeul jikkyeogal geoya',\n", - " '(with or without you)',\n", - " 'neoneun nal saragage haejuneun geu iyu',\n", - " \"it's you\",\n", - " '(with or without you)',\n", - " 'nae modeun apeumeul da gochyeojuneun chiyu',\n", - " \"it's you\",\n", - " \"it's you you u you u! be with you you u you u!\",\n", - " \"it's you you u you u! be with you you u you u!\",\n", - " 'gara sarangdo mweotdo anin jibchaga',\n", - " 'da gara da gara',\n", - " 'geuman neoreul geuriweo haneun nae i mam',\n", - " 'da geuman da geuman',\n", - " '(but without you) sarangeun kkeutnaji anhneun geol',\n", - " '(but without you) nunmuldo meom chuji anhneun geol',\n", - " '(so without you you) neo eopshido',\n", - " '(without you you) honjaseodo sarangeul jikkyeogal geoya',\n", - " '(with or without you)',\n", - " 'neoneun nal saragage haejuneun geu iyu',\n", - " \"it's you\",\n", - " '(with or without you)',\n", - " 'nae modeun apeumeul da gochyeojuneun chiyu',\n", - " \"it's you\",\n", - " 'with or without you',\n", - " 'with or without you',\n", - " 'with or without you',\n", - " 'with or without you',\n", - " '(with or without you)',\n", - " 'neoneun nal saragage haejuneun geu iyu',\n", - " \"it's you\",\n", - " '(with or without you)',\n", - " 'nae modeun apeumeul da gochyeojuneun chiyu',\n", - " \"it's you\",\n", - " \"it's you you u you u! be with you you u you u!\",\n", - " \"it's you you u you u! be with you you u you u!\",\n", - " \"it's you you u you u! be with you you u you u!\",\n", - " \"it's you you u you u! be with you you u you u!\",\n", - " 'ige kkumiramyeon kkaegosipji anha',\n", - " 'kkaeeonamyeon neo eobseulkkabwa duryeowo',\n", - " 'keoteunsairo bichyeojyeooneun jeobichanado urireul banghaehae',\n", - " 'baby you’re my girl',\n", - " 'baby you’re my girl',\n", - " 'nalppajyeodeulgehaneun my sweet lady',\n", - " 'baby you’re my girl',\n", - " 'baby you’re my girl',\n", - " 'nalmeomchulsugaeobseo my sweet lady',\n", - " 'neomuna dalkomhae neouihyanggineun machi naeonmomeul pagodeuneun dokgata mageulsueobseoseo',\n", - " 'beoseonalsudo eobseo ireonkkumi yeongwonhagil baragosipeo..',\n", - " 'iahivo véhi',\n", - " 'iahivo véhi',\n", - " 'vayava endwi wéno wéndou',\n", - " 'wredézi la, wika laraiyou',\n", - " 'tapalendwi wéno wéndou',\n", - " 'édésisi ma wika laraiyou',\n", - " 'asteraw',\n", - " 'starzen saw',\n", - " 'achirai',\n", - " 'zokopaws pounstar',\n", - " 'strinaliroul vegikey vela-iss mérikeys',\n", - " 'gelamo-un soliko-u chréla magma anralou']},\n", - " 'data': ['oh dance, dance chumeulchwoyo geudae',\n", - " 'dance, dance chumeulchwoyo geudae',\n", - " 'a jeongmal dora michyeo beorigenne (woo)',\n", - " 'na yojeum gyeokhage ttabunhae, ttabunhae',\n", - " 'ibeon jumaren sigan namadora (huh)',\n", - " 'na jigeum gyeokhage uulhae, uulhae',\n", - " 'amudo nal chatji anhneun ibam, oh',\n", - " 'honjaseon oelowoyo, whoa',\n", - " 'a jinjja jom sinnaneun il eobseulkka, ah',\n", - " 'bultaneun geumyoire bambambam',\n", - " 'baby pparaba ppappa dancing in the moonlight',\n", - " 'ssodajineun byeolbicharae, at tteugeoun bame',\n", - " 'baby pparaba ppappa dancing in the moonlight',\n", - " 'dupareul jeo haneurwiro, everybody baby dancing in the night',\n", - " 'dance, dance chumeulchwoyo geudae',\n", - " 'dance, dance chumeulchwoyo geudae',\n", - " 'a jeongmal dwitgol ttaenggyeo michigenne (woo)',\n", - " 'na jigeum wanjeon tto kkachilhae, kkachilhae',\n", - " 'bameun gipeo ganeunde na eojjeona (huh)',\n", - " 'na jigeum gyeokhage uulhae, uulhae',\n", - " 'amudo nal chatji anhneun ibam, oh',\n", - " 'honjaseon oerowoyo, whoa',\n", - " 'baby pparaba ppappa dancing in the moonlight',\n", - " 'ssodajineun byeolbicharae, at tteugeoun bame',\n", - " 'baby pparaba ppappa dancing in the moonlight',\n", - " 'dupareul jeo haneurwiro, everybody baby dancing in the night',\n", - " 'baby pparaba ppappa dancing in the moonlight (oh~)',\n", - " 'ssodajineun byeolbicharae, at tteugeoun bame (ooh~ at tteugeoun bame, oh)',\n", - " 'baby pparaba ppappa dancing in the moonlight (ooh yeah yeah~)',\n", - " 'dupareul jeo haneurwiro, everybody baby dancing in the night (dancing in the night)',\n", - " 'dance, dance chumeulchwoyo geudae',\n", - " 'dance, dance chumeulchwoyo geudae',\n", - " 'dance, dance chumeulchwoyo geudae',\n", - " 'dance, dance chumeulchwoyo geudae',\n", - " 'dance, dance chumeulchwoyo geudae',\n", - " 'cheoeum neoreul mannan geon',\n", - " 'neoui gieokbodan jogeum deo ppareun geol',\n", - " 'eonjena neoui dwieseo',\n", - " 'mollae neol barabwatji neon jal moreul geol',\n", - " 'soljikhi mareul hamyeon',\n", - " 'dapdaphan nae maeumi jogeum huryeonhaejilkka',\n", - " 'jeonbu da malhaebeorigo',\n", - " 'gwaenhi eosaekhaejimyeon geuttaen eotteokhaji',\n", - " 'geoul bomyeo hana sego',\n", - " 'dureul semyeon annyeong',\n", - " 'uri mannallae naega jigeum hal mari isseo',\n", - " 'uri mannaja mureobol ge isseunikka',\n", - " 'yonggi naeseo haneun mariya',\n", - " 'geureoni soljikhage daedaphaejwo',\n", - " 'uri mannallae oraetdongan gidaryeowasseo',\n", - " 'uri mannaja geunyang ireon chingu malgo',\n", - " 'jeogi marya naega itjanha neol manhi saranghae',\n", - " 'sueobsi yeonseuphaedo',\n", - " 'eojjeol suga eomna bwa mami tteollyeooneun geon',\n", - " 'eojjeojyo jakku geobi na',\n", - " 'gyeolguk haeya handamyeon ppalli haeyagetji',\n", - " 'jeonhwal georeo hana sego',\n", - " 'dureul semyeon annyeong',\n", - " 'uri mannallae naega jigeum hal mari isseo',\n", - " 'uri mannaja mureobol ge isseunikka',\n", - " 'yonggi naeseo haneun mariya',\n", - " 'geureoni soljikhage daedaphaejwo',\n", - " 'uri mannallae oraetdongan gidaryeowasseo',\n", - " 'uri mannaja geunyang ireon chingu malgo',\n", - " 'jeogi marya naega itjanha neol manhi saranghae',\n", - " 'i sungan ilbun ilchoga',\n", - " 'eoje haruboda deo gin geot gata',\n", - " 'geureohke utgoman itji malgo malhaebwa',\n", - " 'jakku geureollae daeche mwoga jaemitneun geoya',\n", - " 'jakku geureollae naneun simgakhadan marya',\n", - " 'yonggi naeseo haneun mariya',\n", - " 'geureoni soljikhage daedaphaejwo',\n", - " 'uri mannallae oraetdongan gidaryeowasseo',\n", - " 'uri mannaja geunyang ireon chingu malgo',\n", - " 'jeogi marya naega itjanha neol manhi saranghae',\n", - " 'only you niga anim nal gochil su eobseo',\n", - " 'nandasi useul su ga eobseo',\n", - " \"it's only you my baby it's only you\",\n", - " 'kkeutnabeorin chueogeul honja wae nochi motago butjaba',\n", - " 'jinagan geu saram bonaejugo saeroun sarmeul sara',\n", - " 'o nado ara geuraeya handaneun geol nado ara',\n", - " 'cheoeum han dareun mitji antaga duljjae dareun gyesok uldaga',\n", - " 'setjjae dareun maeumeul dajapgo dareun sarameul manna',\n", - " 'o boryeo haesseo hajiman naneun useul su eobseosseo',\n", - " 'only you neomani nareul sallil su isseo',\n", - " 'i nunmureul meomchul su isseo',\n", - " 'geureoni eoseo naege dorawajwo baby',\n", - " 'only you niga anim nal gochil su eobseo nan dasi useul suga eobseo',\n", - " \"it's only you my baby it's only you\",\n", - " 'listen, neon cham areumdawosseo useul ttaemyeon nuni busyeosseo',\n", - " 'hwanhan geu misoe nan eonjena neogseul irko maratji',\n", - " 'o miss you baby neomunado nan niga bogosipeo',\n", - " 'amudo nareul ihae motae geuttae geurigo jigeumdo',\n", - " 'naega wae ireokekkaji neoege jipchageul haneunji',\n", - " 'o ihae motae hajiman neoneun algo itjanha',\n", - " 'only you neomani nareul sallil su isseo',\n", - " 'i nunmureul meomchul su isseo',\n", - " 'geureoni eoseo naege dorawajwo baby',\n", - " 'only you niga anim nal gochil su eobseo nan dasi useul suga eobseo',\n", - " \"it's only you my baby it's only you baby\",\n", - " 'yo ijeoboryeogo haetjiman amman noryeogeul haebwado jakkuman neoman',\n", - " 'chatge doeneun geol ajikdo hwanhan geu misoga gyesok tteoolla cham han',\n", - " 'simhaji eojjaeseo ireoji domuji ichyeojijiga anha gyesok chaewojijiga',\n", - " 'annneun teong binjagiga isseo neomani chaeul suga isseo',\n", - " 'oh only you neomani nareul sallil su isseo',\n", - " '(nan jugeogago isseo)',\n", - " 'i nunmureul meomchul su isseo geureoni eoseo naege dorawajwo',\n", - " 'only you niga anim nal gochil su eobseo nan dasi useul suga eobseo',\n", - " \"it's only you my baby it's only you ye\",\n", - " 'jaljinaenyago jal motjinae niga pillyohae',\n", - " 'i wanna be that girl',\n", - " 'who can be with you forever',\n", - " 'so tell me',\n", - " 'will you be my boyfriend?',\n", - " 'yereul deulmyeon ireon mariya',\n", - " 'swiun malloman yaegi halge',\n", - " 'naega neol jjigeosseo',\n", - " 'mame deureosseo',\n", - " 'mullon mideojiji anketjiman',\n", - " 'kkuminga kkuminga hagetjiman',\n", - " 'naega neol jjigeosseo',\n", - " 'dangbungan mame deureosseo',\n", - " 'eoltteoltteolhan deut ne pyojeong',\n", - " 'mitgi mitgi himdeulgetji',\n", - " 'molla molla molla deo isangeun',\n", - " 'geureon pyojeong boiji ma',\n", - " 'banjjak banjjak bitnaneun naega bukkeureopji anke',\n", - " 'meoributeo balkkaji',\n", - " 'you have to change the your style',\n", - " 'neon nae kkeoya (boo bukkeubukkeu)',\n", - " 'mujogeon nae kkeoya (bukkeubukkeu boo)',\n", - " 'ttaereureung ireonaseo jal ttaekkaji neul naman saenggakhae',\n", - " 'nae namjaya (naekkeo naekkeo naekkeo)',\n", - " 'yeongwonhi ma ma ma ma my boy',\n", - " 'simjangi dugeundugeun bappajil geoya yeah yeah yeah oh',\n", - " 'narang gachi sajin jjigeul ttaen',\n", - " 'jeoldae eolgul dwiro ppaejima',\n", - " 'gibonjeok yeuiya (apeuro ga!)',\n", - " 'ape ga yeiye',\n", - " 'oneul museun yeonghwareul boljido',\n", - " 'kkeutnago eotteon jeonyeok meogeuljido',\n", - " 'naege mutji ma nan aju yeminhageodeun',\n", - " 'na jom pigonhae tomato',\n", - " 'mongmalla jigeum na rooibos',\n", - " 'wollae wollae wollae wollae geurae',\n", - " 'that that that that that that that girl',\n", - " 'pposongpposong eoyeoppeun',\n", - " 'naega sircheungnaji anke',\n", - " 'meoributeo balkkaji',\n", - " 'you must to change the your mind',\n", - " 'neon nae kkeoya (boo bukkeubukkeu)',\n", - " 'mujogeon nae kkeoya(bukkeubukkeu boo)',\n", - " 'ttaereureung ireonaseo jal ttaekkaji neul naman saenggakhae',\n", - " 'nae namjaya (naekkeo naekkeo naekkeo)',\n", - " 'yeongwonhi ma ma ma ma my boy',\n", - " 'simjangi dugeundugeun bappajil geoya yeah yeah yeah oh',\n", - " 'gakkeumssigeun teopeuhage ganjilganjil ganjireopge',\n", - " 'ilchodo ttabunhan saenggak deulji antorok',\n", - " 'nobody came (came) between us (us)',\n", - " 'no one could (koo) ever come above (bob)',\n", - " 'peek a boo peek a peek a boo uh uh uh uh',\n", - " 'neon naekkeoya (boo bukkeubukkeu)',\n", - " 'mujogeon nae kkeoya (bukkeubukkeu boo)',\n", - " 'ttaereureung ireonaseo jal ttaekkaji neul naman saenggakhae',\n", - " 'nae namjaya (naekkeo naekkeo naekkeo)',\n", - " 'yeongwonhi ma ma ma ma my boy',\n", - " 'simjangi dugeundugeun bappajil geoya yeah yeah yeah oh',\n", - " 'boo boo boo boo boo boo peek a boo',\n", - " 'be be be be be be be be bad girl',\n", - " 'peek ah peek ah peek',\n", - " 'peek ah peek ah peek',\n", - " 'boo boo boo boo boo boo peek a boo',\n", - " 'be be be be be be be be bad girl',\n", - " 'peek ah peek ah peek ah',\n", - " 'peek ah peek ah peek ah',\n", - " \"don't wanna be alone\",\n", - " 'don’t wanna be',\n", - " \"don't wanna be alone\",\n", - " \"don't wanna be\",\n", - " 'i, i, i, i, i, i, i, i-i',\n", - " 'i, i, i, i, i, i, i, i',\n", - " 'i, i, i, i, i, i, i, i',\n", - " 'i, i, i, i, i don’t wanna be alone',\n", - " 'catch that',\n", - " \"don't wanna be alone\",\n", - " 'catch that',\n", - " 'i, i, i, i, i, i, i, i-i',\n", - " 'i, i, i, i, i, i, i, i',\n", - " 'i, i, i, i, i, i, i, i',\n", - " \"i, i, i, i, i don't wanna be alone\",\n", - " 'catch that',\n", - " \"don't wanna be alone\",\n", - " \"don't wanna be alone\",\n", - " \"don't wanna be alone\",\n", - " \"don't wanna be alone\",\n", - " \"don't wanna be\",\n", - " 'don’t wanna be alone',\n", - " 'don’t wanna be',\n", - " \"i don't wanna be al-\",\n", - " 'catch that',\n", - " 'don’t wanna be alone',\n", - " 'catch that',\n", - " \"don't wanna be alone\",\n", - " \"don't wanna be\",\n", - " \"don't wanna be alone\",\n", - " 'don’t wanna be',\n", - " \"don't wanna be alone\",\n", - " \"don't wanna be\",\n", - " \"don't wanna be alone\",\n", - " \"don't wanna be\",\n", - " \"don't wanna be alone\",\n", - " \"don't wanna be alone\"]}}},\n", - " 'tr': {'sentence': {'pop': {'meta': {'train_data': ['bir eda bir çalım',\n", - " '(a manner a swagger)',\n", - " 'aldın başını gittin',\n", - " '(you took yourself away)',\n", - " 'ne kadar masum',\n", - " '(so very innocent)',\n", - " 'bir şeyi terkettin',\n", - " '(but you left it)',\n", - " 'avunurken olur olmaz aşklarla',\n", - " '(while i spent my life with improper loves)',\n", - " 'seni hem sevdim hem senden nefret ettim',\n", - " '(i loved you and i hated you at the same time)',\n", - " 'ne sen unuttun ne ben unuttum',\n", - " '(neither you nor i forgot it)',\n", - " 'aldatma kendini gel',\n", - " \"(don't keep deceiving yourself, come)\",\n", - " 'yanıyor için eriyor içim',\n", - " \"(i'm burning and melting inside)\",\n", - " 'eskisinden de beter',\n", - " '(far worse than before)',\n", - " 'gel gel sarışınım gel',\n", - " '(come come my blond come)',\n", - " 'gel sana aşığım gel',\n", - " \"(come, i'm in love with you, come)\",\n", - " 'gel gel günışığım gel',\n", - " '(come come my sunshine come)',\n", - " 'gel çok karışığım gel',\n", - " \"(come, i'm so confused, come)\",\n", - " 'gel gel sarışınım gel',\n", - " 'gel sana aşığım gel',\n", - " 'gel gel günışığım gel',\n", - " 'gel çok karışığım gel',\n", - " 'bir ateş ki alev alev yanar içimde',\n", - " '(this is fire burning with flames inside me)',\n", - " 'saçının kokusu kaldı ellerimde',\n", - " '(the scent of your hair is still on my hands)',\n", - " 'yatağımda deli gibi döner dururum',\n", - " \"(i'm turning in my bed crazily)\",\n", - " 'dolaşır sanki hayalin hala tenimde',\n", - " '(like your vision is still touching my body)',\n", - " 'ne sen unuttun ne ben unuttum',\n", - " 'aldatma kendini gel',\n", - " 'yanıyor içim eriyor içim eskisinden de beter',\n", - " 'gel gel sarışınım gel',\n", - " 'gel sana aşığım gel',\n", - " 'gel gel günışığım gel',\n", - " 'gel çok karışığım gel',\n", - " 'gel gel sarışınım gel',\n", - " 'gel sana aşığım gel',\n", - " 'gel gel günışığım gel',\n", - " 'gel çok karışığım gel',\n", - " 'gel gel sarışınım gel',\n", - " 'gel sana aşığım gel',\n", - " 'gel gel günışığım gel',\n", - " 'gel çok karışığım gel',\n", - " \"it doesn't live it doesn't live\",\n", - " \"this love doesn't live with you\",\n", - " 'what does it give what does it give',\n", - " \"this love doesn't do any good\",\n", - " 'how could i know how could i know',\n", - " 'your love is just too cold',\n", - " 'and i feel yes i feel',\n", - " \"it doesn't give me any hope\",\n", - " 'and i know and i know and i know and i know',\n", - " \"i'm gonna miss you somehow sometime\",\n", - " 'but i know but i know but i know but i know',\n", - " \"you're gonna dissappoint me again\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"i said don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"i said don't think you get me back\",\n", - " \"it doesn't live it doesn't live\",\n", - " \"this love doesn't live with you\",\n", - " 'i was wrong i was so wrong',\n", - " \"you don't know me as i thought\",\n", - " 'what can i do what can i do?',\n", - " \"cause there's no longer love left for you\",\n", - " 'you missed your chance just leave me alone',\n", - " 'i dont want your love anymore',\n", - " 'and i know and i know and i know and i know',\n", - " \"i'm gonna miss you somehow sometime\",\n", - " 'but i know but i know but i know but i know',\n", - " \"you're gonna dissappoint me again\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"i said don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"i said don't think you get me back\",\n", - " 'ask yok yalan',\n", - " 'hemde senaa yok',\n", - " 'bitsin tamam',\n", - " 'oynanan tiyatro',\n", - " 'geçsin zaman',\n", - " 'sonu fiyasko',\n", - " 'sonsuz sanan',\n", - " 've inlere son',\n", - " 'adana bestele di im tüm melodilerimi geri ver öyle git',\n", - " 'geri gelebilme ihtimalini sevemedim çok basit',\n", - " 'sende a klar on taksit de bizde sevgi tek silim',\n", - " 'format attm anlarma brakmadm tek kesit',\n", - " 'ruhumaa kardan ak verip boy verip',\n", - " 'yalan duydum yalana doydum kalan bo verip',\n", - " 'sorular hep basitti aka dair cevaplarsa komplike',\n", - " 'alglarmda sakl yardm',\n", - " 'duygularsa tek hece',\n", - " \"you're gonna dissappoint me again so\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"i said don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"don't think you get me back\",\n", - " \"i said don't think you get me back\",\n", - " \"aşk, yeniden, akdeniz'in tuzu gibi\",\n", - " '(love, once again, like the salt of the mediterranean)',\n", - " 'aşk, yeniden, rüzgârlı bir akşam vakti',\n", - " '(love, once again, on a windy night)',\n", - " 'aşk, yeniden, karanlıkta bir gül acarken',\n", - " '(love, once again, when a rose is blooming in the dark)',\n", - " 'aşk, yeniden, ürperen sahiller gibi',\n", - " '(love, once again, like the trembling shores)',\n", - " 'aşk, yeniden, kumsalların deliliği',\n", - " '(love, once again, the madness of the sandy beaches)',\n", - " 'aşk, yeniden, bir masal gibi gülümserken',\n", - " '(love, once again, while smiling like a fairy tale)',\n", - " 'gözlerim doluyor aşkının şiddetinden ağlamak istiyorum',\n", - " '(my eyes are filled with the intensity of your love, i want to cry)',\n", - " 'yıldızlar tutuşurken gecelerin şehvetinden kendimden taşıyorum',\n", - " \"(while the stars are burning with the passion of the nights, i can't hold myself)\",\n", - " \"aşk, yeniden, akdeniz'in tuzu gibi\",\n", - " '(love, once again, like the salt of the mediterranean)',\n", - " 'aşk, yeniden, rüzgârlı bir akşam vakti',\n", - " '(love, once again, on a windy night)',\n", - " 'aşk, yeniden, karanlıkta bir gül acarken',\n", - " '(love, once again, when a rose is blooming in the dark)',\n", - " 'aşk, yeniden, bitti artık bu son derken',\n", - " '(love, once again, after giving up and saying it was the last one)',\n", - " 'aşk, yeniden, aynı sularda yüzerken',\n", - " '(love, once again, while swimming in the same waters)',\n", - " 'aşk, yeniden, rüya gibi bir yaz gecerken',\n", - " \"(love, once again, while we're having a dream-like summer)\",\n", - " 'gözlerim doluyor aşkının şiddetinden ağlamak istiyorum',\n", - " '(my eyes are filled with the intensity of your love, i want to cry)',\n", - " 'yıldızlar tutuşurken gecelerin şehvetinden kendimden taşıyorum',\n", - " \"(while the stars are burning with the passion of the nights, i can't hold myself)\",\n", - " 'aşk, yeniden, unutulmuş yemin gibi',\n", - " '(love, once again, like a forgotten promise)',\n", - " 'aşk, yeniden, hem tanıdık hem yepyeni',\n", - " '(love, once again, both familiar and brand new)',\n", - " 'aşk, yeniden, kendini yarattı kendinden',\n", - " '(love, once again, rose from its ashes)',\n", - " 'é òû, ðå÷êà, ðå÷êà øèðîêà',\n", - " 'îé-äà ìèëàÿ, òðåïåòíà, ãëóáîêà',\n", - " 'òû ïîâåäàé î ñâîåì ïóòè',\n", - " 'îé-äà! î ãîðå ìàòóøêè-çåìëè',\n", - " 'îé-äà áðàòû, áðàòû ëåñíûå',\n", - " 'äåðåâà-äåäû, äà âåêîâûå',\n", - " 'ñêîëü óæ âðåìÿ âðåìå÷êî óøëî',\n", - " 'äà ÷ðåç âåêà íà çåìëþ ñíèçîøëî',\n", - " 'îáðå÷åííî ðóêè âçäûìàÿ',\n", - " 'ê îáèòåëè ðîäà, âíîâü ÿ âîïðîøàþ:',\n", - " 'îé, äà! äà ìàòóøêà-çàðÿ',\n", - " 'îé íå òðåâîæü òû ïåñíþ ñîëîâüÿ',\n", - " 'âñòàíü ïðåä ñîëíöåì ÿðî ãîðÿùåì',\n", - " 'ïðåä âåëèêèì ÷óðîì, îáðàòèñü òû ê ñïÿùèì!',\n", - " 'âå÷íîñòü ñïèò âî ìãëå',\n", - " 'ñëîâíî æäåò âîéíó',\n", - " 'äðåìëåò âåðà áåçûñõîäíî',\n", - " 'áðàòüÿ íà çåìëå',\n", - " 'èõ ñåðäöà â ïëåíó',\n", - " 'ñòîíóò áîëüþ îáðå÷åííî',\n", - " 'ïî ñûðîé çåìëå, ÷òî â òâîèõ ñëåçàõ',\n", - " 'ïðîíåñåì ðîäíûå âåäû',\n", - " 'ïóñòü îìîåò äîæäü ñêîðáü â ñëåïûõ î÷àõ',\n", - " 'ìû âåðíóëèñü äëÿ ïîáåäû!',\n", - " 'ïîäûìè òû âçîð ñâîáîäíûé',\n", - " 'òðîíü òû ãëàäü äóøè ëåñíîé',\n", - " 'çàáâåííûå ïðîñòîðû',\n", - " 'äóøó ìàíÿò âñëåä çà ñîáîé',\n", - " 'ïüÿíÿùèé äóõ ñâîáîäû',\n", - " 'îãíåì ñåðäöå òåðåáèò',\n", - " 'è ñíîâà ïîçíàí ìíîþ',\n", - " 'ñâåò ðóèí, ÷òî áûë ïîçàáûò',\n", - " 'è âíîâü ðàññâåò, âî òüìó ïðîíçàÿñü',\n", - " 'âòîðèò, ÷òî æèâà îíà',\n", - " 'òà âåðà, ÷òî çàâåòàì äàâíèì ïðåäàíà',\n", - " 'áûëîþ ñëàâîé èñ÷åçàÿ â òüìó ñòîëåòèé äàâíèõ äíåé',\n", - " 'êóäà èäåì, íå çíàÿ ìû ðîäíè ñâîåé?!',\n", - " 'êóäà ñïåøèì, âîðîòÿ âçãëÿä îò ñòàðîé ïðàâäû?',\n", - " '×åãî ìû æäåì? îò ìèðà ÷óæäîãî ñëàäêîé íàãðàäû?',\n", - " 'âîíçàÿ çóáû â ßâü áåæèì îò ðîäîâîãî äðåâà',\n", - " 'íî ãðîìêèì ãëàñîì ìîëâÿò áðàòüÿ: \"ìû æèâû, äåäû!\"',\n", - " 'è ãëàñîì íî÷è òû ïðîìîëâè çàâåòû',\n", - " 'òîé ñóùíîñòè âå÷íîé, ÷òî íàì ñîêðîâåííà',\n", - " 'è ñëàâû ìàíÿùåé çàòìè ñåðû î÷è',\n", - " 'ìû åñòü ñûíû ñâåòà, ìû åñòü ñåñòðû íî÷è!',\n", - " 'by fallen_rs',\n", - " 'marâ na sar na sâmân âfaridand',\n", - " 'parişânom parişân âfaridand',\n", - " 'parişân xâteran raftand-o dar xâk',\n", - " 'marâ az xâk-e işân âfaridand',\n", - " 'azizom key mi-âyi key mi-âyi',\n", - " 'nadârom tâqat-e yek dam jodâyi',\n", - " 'xoşâ ânân ke sodâ-ye to dâran',\n", - " 'ke sar peyvast-e dar pâ-ye to dâran',\n", - " 'be del dâram tamanâ-ye kesâni',\n", - " 'ke andar del tamanâ-ye to dâran',\n", - " 'agar zarin kolâhi âqebat hiç',\n", - " 'be taxt-e pâdeşâhi âqebat hiç',\n", - " 'garat molk-e soleymân dar negin ast',\n", - " 'dar âxar xâk-e râhi âqebat hiç',\n", - " 'ya lfarḥ amuqran',\n", - " \"imi d'yuɣal s'axx\",\n", - " 'ruḥen ak iɣevlan',\n", - " 'tveddel dduinit felli',\n", - " 'argaz im vava-m',\n", - " \"s'wedem iṣeḥan\",\n", - " 'ger medden aden-van',\n", - " 'mmi-m ger aneɣ ad yili',\n", - " 'taftilt igenwan',\n", - " 'tuɣe-d yal mkan',\n", - " 'mi tsselef i lufan',\n", - " 'tadeṣa deg udem is tuli',\n", - " 'mmi-m avaḥan',\n", - " 'ahya adehv aṛeqman',\n", - " \"y'anraǧu deg' verdan\",\n", - " 'vava-k ma d-yevdu tikli',\n", - " \"γas d'iṭij yerɣan\",\n", - " \"neɣ d'adefell yessan\",\n", - " \"γas d'aẓṛu yeḥfan\",\n", - " 'ḥemlaɣ-k ay adrar inu',\n", - " \"s'ddaw igenwan\",\n", - " 'yekcem ger yetran',\n", - " 'nets argu afussan',\n", - " 'i deg lḥif ur-d yet nulfu',\n", - " 'ay akal imeɣban',\n", - " 'ur yelli win yeṛwan',\n", - " 'ay kelxaɣ zman',\n", - " 'amzun nevwi daɛwessu',\n", - " 'a nnif iɣ-yeččan',\n", - " 'ahya a ttaṛ averkan',\n", - " \"i nets ara s'wurfan\",\n", - " \"imi n-ɣil deg's dwa ḥellu\",\n", - " 'haber uçtu devlete de beþ yýl yattým hapiste',\n", - " '(the news flew to the goverment, i was in prison for five years)',\n", - " 'yedi düvel zindanýndan beterdir yedikule',\n", - " '(yedikule (seven towers - a famous dungeon) is worse than all the other ones)',\n", - " 'nargilem duman duman ah bayýldým aman aman',\n", - " '(my nargile has smoke on it, ah i love it aman aman)',\n", - " 'ýstanbul güzel ama sahipleri pek yaman',\n", - " '(ýstanbul is beautiful but its owners are very quick-tempered)',\n", - " 'beþ yýl bana yaraþtý da nargilem buna þaþtý',\n", - " '(these five years became me, even my nargile got suprised)',\n", - " 'her gün çizdim usturamla baðlamam doldu taþdý',\n", - " '(i scratched everyday with my razor, my saz was filled with scratches)',\n", - " 'sarma cigaram yanar çekerim aðýr aðýr',\n", - " \"(my wrapped cigarette is burning, i'm inhaling it slowly)\",\n", - " 'tekkemiz güzel ama haber uçuranlar var',\n", - " '(our tekke is very beautiful but there are some traitors)',\n", - " 'nargilemin marpucu da gümüþtendir gümüþten',\n", - " \"(my nargileh's tube is from silver, silver)\",\n", - " 'beþ deðil onbeþ yýl olsa ben vaz geçmem bu iþten',\n", - " \"(i won't give it up even if it is fifteen years instead of five)\",\n", - " 'nargilem duman duman ah bayýldým aman aman',\n", - " '(my nargile has smoke on it, ah i love it aman aman)',\n", - " 'ýstanbul güzel ama sahipleri pek yaman',\n", - " '(ýstanbul is beautiful but its owners are very quick-tempered']},\n", - " 'data': ['sallemle 3alayh',\n", - " 'rou7 w sallemle 3alayh',\n", - " '2ello meshta2a layh',\n", - " 'howe ele ma fi metlo 7ada',\n", - " 'habibi 3a toul el mada',\n", - " 'rou7 w sallemle 3alayh',\n", - " 'meshta2a ktir nerja3 netla2a youm',\n", - " 'nensa el 3atab w el loum',\n", - " 'ne7ke sawa',\n", - " 'nedhak sawa',\n", - " 'netmasha 3a droub el hawa',\n", - " 'nam w es7a 3a 2edayh',\n", - " 'rou7 2ello ghayro ma be7ke',\n", - " 'teslamle rayta hal da7ke',\n", - " 'shou b7eba w s2alo barke',\n", - " '3ala 7alo',\n", - " '3ala 7alo',\n", - " 'ba3do 3al fer2a',\n", - " 'w bye7lam metle bel mal2a',\n", - " 'aw be5tor 7ata law ser2a 3ala balo',\n", - " 'sallemle 3alayh',\n", - " 'rou7 w hayda el 3enwan',\n", - " 'shefle en kano za3lan',\n", - " 'aw ghayre 3a albo ehtada',\n", - " 'dari habibi men el nada',\n", - " 'men el nasme elle 7walayk',\n", - " 'rou7 2ello ghayro ma bade',\n", - " 'w min 7abo bel dene 2ade',\n", - " 'w wadilo hal 3omer wadi',\n", - " 'be salami',\n", - " 'w e7kilo hal 3omer mar2a',\n", - " 'yerja3li nes3ad w nesh2a',\n", - " 'w shou bte7la law sawa neb2a',\n", - " '2eyami',\n", - " 'sallemle 3alayh',\n", - " 'rou7 w sallemle 3alayh',\n", - " '2ello meshta2a layh',\n", - " 'howe ele ma fi metlo 7ada',\n", - " 'habibi 3a toul el mada',\n", - " 'rou7 w sallemle 3alayh',\n", - " 'meshta2a ktir nerja3 netla2a youm',\n", - " 'nensa el 3atab w el loum',\n", - " 'ne7ke sawa',\n", - " 'nedhak sawa',\n", - " 'netmasha 3a droub el hawa',\n", - " 'nam w es7a 3a 2edayh',\n", - " 'ala yar jaan chera rangat khazanast',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'nakhor ghose khodavand mehrabanast',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'miyane ma vo to ahdo neshanast',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'ala yar jan khatar darad jodai',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'az dele por dardam beshno',\n", - " 'del be niyaz miyayad',\n", - " 'az dele por dardam beshno',\n", - " 'del be niyaz miyayad',\n", - " 'bia ke sine ra sahra besazim',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'bia ke didera darya besazim',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'bia ta bastari az par besazim',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'yeki khane ze eshq az sar besazim',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'az dele por dardam beshno',\n", - " 'del be niyaz miyayad',\n", - " 'az dele por dardam beshno',\n", - " 'del be niyaz miyayad',\n", - " 'be daghe khoda',\n", - " 'be daghe khoda',\n", - " 'be daghe khoda',\n", - " 'be daghe khoda',\n", - " 'be daghe khoda, be daghe khoda, be daghe khoda, be daghe khoda',\n", - " 'derakhte gham be janam karde rishe',\n", - " 'be daghe khoda minalam hamishe',\n", - " 'rafighan ghadre yek digar bedanid',\n", - " 'ajal sang ast o adam mesle shishe',\n", - " 'az dele por dardam',\n", - " 'az dele por dardam',\n", - " 'az dele por dardam beshno',\n", - " 'del be niyaz miyayad',\n", - " 'az dele por dardam beshno',\n", - " 'del be niyaz miyayad',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'sabza ba naz miyayad mahrame raz miyayad',\n", - " 'az dele por dardam beshno',\n", - " 'del be niyaz miyayad',\n", - " 'az dele por dardam beshno',\n", - " 'del be niyaz miyayad',\n", - " 'del be niyaz miyayad',\n", - " 'del be niyaz miyayad',\n", - " 'bir rüzgar gibi gelip geçtin hayatımdan',\n", - " 'you passed through from my life like wind',\n", - " 'dinmedi içimde o acı hatıra',\n", - " 'the sorrowful souvenir inside me did not end',\n", - " 'ağladım boşluğuna dizlerim bağlanmış',\n", - " 'i cried emptiness of you with bounded knees',\n", - " 'sensiz herşey boş herşey yalanmış',\n", - " 'everything without you was a lie',\n", - " 'ne fayda yaram dinmez',\n", - " 'it is helpless, my wound never ends',\n", - " 'günlerim geçmek bilmez',\n", - " 'my days do not pass',\n", - " 'anılarım silinmez yarim yarim',\n", - " 'my souvenirs can not be erased, sweetheart sweetheart',\n", - " 'sensiz yapamam buralarda duramam',\n", - " 'i cant handle without you in here',\n", - " 'kolay değil inan başkasıyla olamam',\n", - " \"it is not easy. believe m, i can't be someone else\",\n", - " 'sensiz yapamam buralarda duramam',\n", - " 'i cant handle without you in here',\n", - " 'kolay değil inan başkasıyla yapamam',\n", - " 'it is not easy. believe me, i cant be someone else',\n", - " 'yar söle nasıl alışırım yokluğuna',\n", - " 'tell me, my lover, how will i get used to living without you?',\n", - " 'terk edip gidişin yıllardır aklımda',\n", - " \"you're still in my mind for years\",\n", - " 'ben seni unutmam unutamam yanarım',\n", - " \"i can't forget you, can't forget. i burn (means not to forget burns her/his heart)\",\n", - " 'kırdığım olsanda hep seni anarım',\n", - " 'i call you my mind, even you are who i hurt',\n", - " 'ne fayda yaram dinmez',\n", - " 'it is helpless, my wound never ends',\n", - " 'günlerim geçmek bilmez',\n", - " 'my days do not pass',\n", - " 'anılarım silinmez yarim yarim',\n", - " 'my souvenirs do not be erased, sweetheart sweetheart',\n", - " 'sensiz yapamam buralarda duramam',\n", - " \"i can't handle without you in here\",\n", - " 'kolay değil inan başkasıyla olamam',\n", - " \"it is not easy. believe me, i can't be someone else\",\n", - " 'sensiz yapamam buralarda duramam',\n", - " \"i can't handle without you in here\",\n", - " 'kolay değil inan başkasıyla yapamam',\n", - " \"it is not easy. believe me, i can't be someone else\"]}}},\n", - " 'ts': {'sentence': {'pop': {'meta': {'train_data': ['kona fi 2awakher 2echeta 2abli li fate',\n", - " 'zayi lyomine doule 3ichna ma3a ba3di 7kayate',\n", - " '2ana konti lama a7ebe atwaness ma3ake',\n", - " '2ana konti bakhod ba3di we 2aro7lo men sokate',\n", - " 'kona fi awakher 2echeta 2abli ... sokate',\n", - " 'we nass fi 3ezi 2elbared yegro yestekhabo',\n", - " 'wana konti bagri wakhabi nafssi awame fi 2albo',\n", - " 'wel7adi lama lile biylayele bab2a ganbo',\n", - " 'wafdale fi 3ezi lbared wayah bi sa3ate',\n", - " '3la sahwa lih 2edenya ba3de ma3achemetna',\n", - " 'we3ayechetna chwiya reg3ete mawetetna',\n", - " 'we denya men yomiha ya 2albi 3awedetna',\n", - " 'lama betedi 7agate 2awame takhode 7agate',\n", - " 'weste 2echaware3e nass ketire mrawa7ine',\n", - " 'wenass ya 2albi homa homa we howa fine',\n", - " 'wa 2ana machya batlafete we bas2el koli youme',\n", - " 'beye3mel 2iihe delwa9ti we biye7lame bi mine',\n", - " 'we nass fi 3ezi elbared yegro yestekhabo',\n", - " 'wana konti bagri wakhabi nafssi awame fi 9albo',\n", - " 'wel7adi lama lile biylayele bab9a ganbo',\n", - " 'wafdale fi 3ezi lbared wayah bi sa3ate',\n", - " '3la sahwa lih edenya ba3de ma3achemetna',\n", - " 'we3ayechetna chwiya reg3ete mawetetna',\n", - " 'we denya men yomiha ya 2albi 3awedetna',\n", - " 'lama betedi 7agate 2awame takhode 7agate',\n", - " 'aye girl',\n", - " \"got somethin' to tell you\",\n", - " 'nan neoman wonhae wonhae, i want you baby (l. joe: yeah)',\n", - " \"i'm right for you\",\n", - " 'and you got right for me',\n", - " 'i love you baby',\n", - " 'i need a girl',\n", - " 'i need a girl',\n", - " 'i need a girl',\n", - " 'neon jeongmal yeppeugo areum dawo',\n", - " 'i need a girl',\n", - " 'i need a girl',\n", - " \"i need a girl (that's right)\",\n", - " 'girl friend, friend, friend, friend',\n", - " 'salmyeoshi daga what janha',\n", - " 'nae mameul bbae asat janha',\n", - " 'urin imi beolsseo tong haet janha',\n", - " 'nae du nuneul barabwa',\n", - " 'haru edo myeot beonsshik nal jeonhwa hage mandeulgo',\n", - " 'dalkomhan ni moksorie miso jitge mandeureo',\n", - " 'ojik naegen neo hana ppun ingeol (ricky: i got ya)',\n", - " 'my lady',\n", - " 'nae soneul jaba',\n", - " 'hey shawty',\n", - " 'my baby',\n", - " 'hokshi nae saenggakhae',\n", - " 'neoreul mannal saenggake na jamdo anwa jakkuman na',\n", - " 'honja useohae-hae',\n", - " 'i know you feel the same',\n", - " 'what more can i say?',\n", - " 'sashireun niga cheoeumiya',\n", - " 'i need a girl',\n", - " 'i need a girl',\n", - " 'i need a girl',\n", - " 'neon jeongmal yeppeugo areum dawo',\n", - " 'i need a girl',\n", - " 'i need a girl',\n", - " \"i need a girl (that's right)\",\n", - " 'girl friend, friend, friend, friend',\n", - " 'neon jeongmal yeppeo, yeppeo',\n", - " 'geu nugu boda deo neon nun busheo',\n", - " 'sae hayan pibue',\n", - " 'saekkaman nun dongja',\n", - " 'neon naekkeo, naekkeo',\n", - " \"you're my beautiful girl\",\n", - " 'maeil mada ni saenggake naneun jamdo mot irwo',\n", - " 'ireon gibun cheoeum ingeol',\n", - " 'geu nuga alkka',\n", - " 'i want you girl',\n", - " 'i need you girl~yeah',\n", - " 'hey shawty',\n", - " 'my baby',\n", - " 'hokshi nae saenggakhae',\n", - " 'neoreul mannal saenggake na jamdo anwa jakkuman na',\n", - " 'honja useohae-hae i know you feel the same',\n", - " 'what more can i say, sashireun niga cheoeumiya',\n", - " 'i need a girl',\n", - " 'i need a girl',\n", - " 'i need a girl',\n", - " 'neon jeongmal yeppeugo areum dawo',\n", - " 'i need a girl',\n", - " 'i need a girl',\n", - " \"i need a girl (that's right)\",\n", - " 'girl friend, friend, friend, friend',\n", - " 'hey girl',\n", - " \"you're the only one\",\n", - " 'nan neoman isseumyeon dwae',\n", - " 'hey girl',\n", - " \"you're the only one\",\n", - " 'eonje kkaji na',\n", - " 'nae yeope isseojwo~',\n", - " 'i need a girl',\n", - " 'i need a girl',\n", - " 'i need a girl',\n", - " 'neon jeongmal yeppeugo areum dawo',\n", - " 'i need a girl (chunji: my girl)',\n", - " 'i need a girl (chunji: my girl)',\n", - " \"i need a girl (that's right)\",\n", - " 'girl friend, friend, friend, friend',\n", - " 'i love you baby',\n", - " 'catch me girl~!',\n", - " 'catch me now~!',\n", - " 'catch me if you wanna',\n", - " 'c-catch me if you wanna',\n", - " 'ca-ca-ca-c-catch me if you...',\n", - " 'han beon dan hanbeondo kkeutkkaji naege mameul yeonjeok eobseo',\n", - " 'nan machi byeogeul bogo seon deutan gibuniya geugeo aranni?',\n", - " 'oh oh~',\n", - " 'gyeote itjiman deo oerowojil ppun tonight tonight tonight',\n", - " 'neol gidaryeotjiman igeon jom aniya ijen neol tteonanda',\n", - " 'gajima han madil motanda i baboga',\n", - " 'naega wae i baboman bwasseulkka? cham motnan neol',\n", - " 'baby catch me. catch me. catch me, girl, tonight',\n", - " \"tteona beorigi jeone (i'm serious i'm serious)\",\n", - " 'nareul japgo makgo ulgo ttaerigo',\n", - " \"iyureul malhaejwotdamyeon (i'm serious i'm serious)\",\n", - " 'oh~ moreugetda neoui mame naega gipi isseowanneunji tto, aninji',\n", - " 'geuge gunggeumhae jichyeobeorigi jeone malhaejwo malhaejwo daedaphae',\n", - " 'siganeun neol geureoke mukkeo dulgeoya jigeum geu jarie',\n", - " 'nareul bonaejima huhoehage dwae miryeon jom tteoljima',\n", - " 'woah~!',\n", - " 'gajima han madil motanda i baboga ( baby~)',\n", - " 'naega wae i baboman bwasseulkka? cham motnan neol',\n", - " 'handongan naegen neoman gadeuk chan gibun',\n", - " 'cham manhi haengbokhaetdeon gieogi na',\n", - " 'nugudo namankeum gidaryeojul sarameun no!',\n", - " 'eopdaneun geol neon itjima~',\n", - " 'yeah~!',\n", - " 'aewonhaejugil barae nan gidarilge',\n", - " 'ijenajeojena nal tteonajima, mallago malhae',\n", - " 'neomu neuryeo, ni mameul jeonghal ttaekkaji',\n", - " 'neoman bonda nan dodaeche wae?',\n", - " 'aewonhaejugil barae nan gidarilge',\n", - " 'ijenajeojena nal tteonajima, mallago malhae',\n", - " 'babo naega wae neoreul saranghaetgenni?',\n", - " 'neo bakke eobseo dodaeche wae? oh!',\n", - " '(dance break)',\n", - " 'n-nan gidaerilge',\n", - " 'ey yeah woah!',\n", - " 'ah!',\n", - " 'gajima han madil motanda i baboga',\n", - " 'naega wae i baboman bwasseulkka? cham motnan neol',\n", - " 'baby catch me. catch me. catch me, girl, tonight',\n", - " \"tteona beorigi jeone (i'm serious i'm serious)\",\n", - " 'nareul japgo makgo ulgo ttaerigo',\n", - " \"iyureul malhaejwotdamyeon (i'm serious i'm serious)\",\n", - " 'catch me if you wanna',\n", - " 'c-catch me if you wanna',\n", - " 'ca-ca-ca-ca-c-catch me if you wanna',\n", - " 'how to love, urin eolmana teukbyeolhalkka',\n", - " 'how to love, nan ajikdo',\n", - " 'moreugesseo saranghaneun beop',\n", - " 'siheomi anya igeon wae seororeul pyeonggahago',\n", - " 'jakku jeomsureul maegyeo',\n", - " 'biseutan chwihyange jal matneun hyeoraekhyeong',\n", - " 'ireonge jungyohae? nan moreugesseo',\n", - " 'just love inwijeoginge anya',\n", - " 'geunyang jayeonseureoun',\n", - " 'gamjeonge ikkeullyeo seororeul jaseokcheoreom',\n", - " 'kkeureodanggige doeneungeoji angeurae?',\n", - " 'gyesaneul haneun sunganbuteo geojitdoen',\n", - " 'sarang ani geunyang heulleoganeun yeonae',\n", - " 'siganman ttaeul geomyeon charari naneun anhae',\n", - " 'igeotjeogeot ttajigo kkiwomatchul sigane',\n", - " 'ne nuneul hanbeonirado majuchigo useullae',\n", - " 'bogoitgimanhaedo',\n", - " 'hamkke siganeul bonaeneun geotmaneurodo',\n", - " 'mueonga namji anteorado nan joheunde',\n", - " 'woo baby tell me, how to love',\n", - " 'dachin mameul yeoreo jogeumman',\n", - " 'meorissoge gadeuk chan saenggageul biwobwa',\n", - " 'how to love sangcheoga namado gwaenchanha',\n", - " 'saranghaneun sunganeun haengbokhaltenikka',\n", - " 'how to love, love, love, love, love, love, love',\n", - " 'saranghajiman ttaeron heeojimeul saenggakhae',\n", - " 'seororeul da ajik aljimotanchae',\n", - " 'how to love, love, love, love, love, love, love',\n", - " 'jogeum deo cheoncheonhi nege matchwogalge',\n", - " 'gateun goseul hyanghae georeogal su itge',\n", - " 'how to love',\n", - " 'sasil neo malgodo dareun',\n", - " 'sarameul nan mannabwatjiman',\n", - " 'maebeon dangyeonhan',\n", - " 'deut dagaon ibyeol apeseo',\n", - " 'dasin saranggateun geon',\n", - " 'oji anheul jul aranneunde',\n", - " '( nega ongeoya)',\n", - " 'nae ape nega natanangeoya',\n", - " 'geuraeseo geurae irkosipji anheunde yeah',\n", - " 'neowa naega ganeun',\n", - " 'girenkkeuchi eopgireul nan barae',\n", - " 'neo yeoksi naege',\n", - " 'gateun mideumeul jwosseum hae',\n", - " 'dareun saenggageun geumanhae',\n", - " 'haengbokhagido bappeunde',\n", - " 'woo baby tell me, how to love',\n", - " 'dachin mameul yeoreo jogeumman',\n", - " 'meorissoge gadeuk chan saenggageul biwobwa',\n", - " 'how to love',\n", - " 'sangcheoga namado gwaenchanha',\n", - " 'saranghaneun sunganeun haengbokhaltenikka',\n", - " 'how to love, urin eolmana teukbyeolhalkka',\n", - " 'how to love, nan ajikdo',\n", - " 'moreugesseo saranghaneun beop',\n", - " 'how to love, neon nal eotteoke saenggakhalkka',\n", - " 'ajikdo neomu eoryeowo naege sarangirangeon',\n", - " 'woo baby tell me, how to love]',\n", - " 'dachin mameul yeoreo jogeumman',\n", - " 'meorissoge gadeuk chan saenggageul biwobwa',\n", - " 'how to love',\n", - " 'sangcheoga namado gwaenchanha',\n", - " 'saranghaneun sunganeun haengbokhaltenikka',\n", - " 'how to love, love, love, love, love, love, love',\n", - " 'saranghajiman ttaeron heeojimeul saenggakhae',\n", - " 'seororeul da ajik aljimotan chae',\n", - " 'how to love, love, love, love, love, love, love',\n", - " 'jogeum deo cheoncheonhi nege matchwogalge',\n", - " 'gateun goseul hyanghae georeogal su itge',\n", - " 'how to love',\n", - " 'dance with me i wanna ride with you (woo) dance with me dance with me',\n", - " 'geudae jigeum eodil baraboneunji daeche jigeum museun saenggakhaneunji',\n", - " 'geudaeneun wollae geudaeneun wollae namjarangeun chum chul saenggak eomneunji',\n", - " 'hajiman nan dareun namja deulgwa jinjja mwonga dalla',\n", - " 'nae nuneul barabomyeon al su isseo eonjekkaji mangseorillae baby rideumui momeul matgyeo lady',\n", - " 'one step one two two step momeul umjigyeo jigeumi sungan dulmanui gonggan neoreul matgyeobwa',\n", - " 'ijen baby dance baby dance baby dance with me geudaen jigeum eodil bwa nareul bwa',\n", - " 'momeul naege matgyeo dance with me ijen baby dance baby dance baby dance with me',\n", - " 'jigeum yeogil neukkyeobwa jeulgyeobwa baby dance tonight neodo dance tonight',\n", - " 'geudae jigeum nugul chatgo inneunji chingun dareun namjawa chumchuneunde',\n", - " 'geudaen wae jakku chingul butjapgu nunchi eopge jibe gaja haneunji',\n", - " 'ijen jebal jaemieopge gulji malgo nae son jaba oneuri jinagamyeon huhoehalkkeol',\n", - " 'eonjekkaji mangseorillae baby nawa chumeul chwojyo lady',\n", - " 'one step one two two step momeul heundeureo jigeum i sungan dulmanui gonggan jujeohajima',\n", - " 'yo dance tonight hamkke feeling alright moduga ije naege matgyeo singyeong sseul pillyo eobseo',\n", - " 'dwaesseo jayeonseureon neoui nature jigeum rideum tago inneun neoui gesture',\n", - " 'wonhajanha barajanha stage wiro ttaraoneun siseon jekkyeobeoryeo neoui dwiro(oh)',\n", - " 'dugo momeul umjigyeo bakjae matchwo i eumageul neukkyeobwa geurigo ije jeulgyeobwa(oh)',\n", - " 'one step one two two step momeul umjigyeo',\n", - " 'jigeumi sungan dulmanui gonggan neoreul matgyeobwa',\n", - " 'ijen baby dance baby dance baby(come on girl dance with me)',\n", - " \"ijen baby dance baby dance baby(don't try leave stay with me)\",\n", - " 'ijen baby dance baby dance baby(come on baby dance x2)',\n", - " 'ijen baby dance baby dance baby baby dance tonight',\n", - " 'neodo dance tonight',\n", - " 'aye!',\n", - " 'this song is just for ya',\n", - " 'ya know this is',\n", - " 'haha!',\n", - " 'drop this',\n", - " 'jakku wae neon',\n", - " 'osi jagajyeotda tudeolgeoryeo',\n", - " 'tto tudeolgeoryeo (hey baby wae tto geurae)',\n", - " 'hangsang wae neon',\n", - " 'jakku sari jjyeotda tudeolgeoryeo (neomu yeppeunde nae nuneneun hangsang you are the prettiest girl)',\n", - " 'niga eotteon oseul ibeodo',\n", - " 'naegen hangsang beautiful',\n", - " '(baby let me do wanna-wanna do just let me do wanna-wanna do)',\n", - " 'sesang modeun geol da gajyeodo',\n", - " 'niga eobseumyeon an dwae my girl',\n", - " 'you‘re the only one for me yeah',\n", - " 'nan niga jeil joha',\n", - " 'niga jeil yeppeo',\n", - " 'jinaganeun got-got maeryeogi da heulleo',\n", - " 'niga jeil joha',\n", - " 'neo hanamyeon dwae',\n", - " 'gaseume saegyeo dwo',\n", - " 'niga sesangeseo jeil sojunghae',\n", - " 'every time i like you',\n", - " 'woah , woah oh my love for you',\n", - " 'neobakken eobseo nan',\n", - " 'i belong with you',\n", - " 'woah , woah crazy love for you',\n", - " 'neobakken eobseo nan',\n", - " 'gilgeorireul georeul ttae',\n", - " 'neol boneun namjadeurui',\n", - " 'siseoni neukkyeojine',\n", - " 'geotneun moseupjocha neomuna yeppeun geol',\n", - " 'happiness',\n", - " \"is what i feel now (now i'm gonna kiss you now i just wanna kiss you now)\",\n", - " 'dareun nuga naege ondaedo',\n", - " 'chyeodabojido anha my love',\n", - " '(baby let me do wanna, wanna do just let me do wanna, wanna do)',\n", - " 'sesang modeun geol da jundaedo',\n", - " 'neo hanamyeon chungbunhae my love',\n", - " 'you‘re the only one for me yeah',\n", - " 'nan niga jeil joha',\n", - " 'niga jeil yeppeo',\n", - " 'jinaganeun got-got maeryeogi da heulleo',\n", - " 'niga jeil joha',\n", - " 'neo hanamyeon dwae',\n", - " 'gaseume saegyeo dwo',\n", - " 'niga sesangeseo jeil sojunghae',\n", - " 'geunyang idaero',\n", - " 'isseojumyeon dwae yeah',\n", - " 'ireoke areumdaun neoinde',\n", - " \"you gotta know that you're the prettiest for me\",\n", - " 'niga jeil joha nan niga jeil yeppeo, yeah',\n", - " 'mareun chehyeonge jom jageun ki jogeuman eolgure budeureoun meoritgyeol',\n", - " 'neol gatgo sipeo tto ango sipeo everywhere neol yeope dugo sipeo',\n", - " 'eoneu nuga neol yokhaedo areumdaume ttareun daegail ppun',\n", - " 'geureon geon singyeongsseul pillyo eobtji',\n", - " 'you and i just fall in love all night long',\n", - " 'nan niga jeil joha',\n", - " 'niga jeil yeppeo',\n", - " 'jinaganeun got-got maeryeogi da heulleo',\n", - " 'niga jeil joha',\n", - " 'neo hanamyeon dwae',\n", - " 'gaseume saegyeo dwo',\n", - " 'niga sesangeseo jeil sojunghae',\n", - " 'every time i like you',\n", - " 'woah , woah oh my love for you',\n", - " 'neobakken eobseo nan',\n", - " 'i belong with you',\n", - " 'woah , woah crazy love for you',\n", - " 'neobakken eobseo nan',\n", - " 'o neul bahm na reul chaj ah wah (chaj ah ga huh)',\n", - " 'na jo chah mohl rae da ga wah (mohl rae da ga wah jool rae?)',\n", - " 'chah de chan son kil ha na ro (you feel it?)',\n", - " 'nae mahm eul shwip gae ga jyuh ga',\n", - " '* boo dee ruh gae won hae jo shim seu ruh gae',\n", - " 'nae gae ppa jyuh deel kil won hae na ei soom kyul ae',\n", - " 'ee soon ga neul eej ji ahn gae ja yun seu ruh gae',\n", - " 'na ei noo neul gam kil won hae',\n", - " 'nuh reul mid neun ma eum ae',\n", - " '** nae moh deen gul ga jihl soo ees do rohk',\n", - " '(nae peum ae maht gyuh nuhl shwip gae ga jihl gae)',\n", - " 'ni peum ahn ae maht kil soo ees do rohk',\n", - " '(ah chim ae hahm kkeh noon teu go shi peun dae)',\n", - " 'nae il ah chim ae noon teul soo ees do rohk',\n", - " 'bahm sae nal ji yuh jwuh ah nah jwuh',\n", - " '(tell me something version 2 uh)',\n", - " 'nae il bahm nae gae chaj ah wah (okay right!)',\n", - " 'na jo chah mohl rae da ga wah (come you baby)',\n", - " \"uh jae reul eej ji moht ha go (i'm the man, gurl)\",\n", - " 'ddo da shi na reul ga jyuh ga',\n", - " '* repeat',\n", - " '** repeat',\n", - " '(ah moo saeng gak ha ji ma) geu ruhn mal',\n", - " '(ha ji ma ha ji ma) oh woo baby)',\n", - " '(seul peum bo da) jjal ah do (uh doom eul) ji na do',\n", - " '(neu kkim eul) nam gyuh ji neun guhs',\n", - " '(ah moo saeng gak ha ji ma) ha jin ma',\n", - " '(ni mahm eul) ni mahm eul',\n", - " '(jeul gyuh bwah) oh woo baby (uhn jae la do )',\n", - " 'ji roo hahn sarang bo da neun soon ga neul jeul ki kil won hae baby!',\n", - " 'rap.) oo ri suh ro ki seul won hae doo geun guh ri',\n", - " 'neun mahm ae guh chil gae swi neun nae ho heu bae',\n", - " 'juhn hae ji neun nuh ei bal gan chae chwi ae chwi hae',\n", - " 'jum jum da ga o neun uh doom sohk ae hahm kkeh hal ddae',\n", - " 'nae mahm ae dduh o reun tae yang kat ee bal guh',\n", - " 'you remind me of my dream',\n", - " 'mid ki ji ahn uh nuhl no chi go do ship ji ah nah',\n", - " 'my shorty gurl byul beet ae na neun o neul bahm',\n", - " 'i rock your world!',\n", - " 'ni son kil eul won hae',\n", - " 'jo shim seu ruh gae',\n", - " 'na reul yuhl uh joo kil won hae',\n", - " 'nuh ei soom kyul ae ee neu kkim eul eej ji ahn gae',\n", - " 'ja yun seu ruh gae nuh ei noo neul gam kil won hae',\n", - " 'na reul mid neun ma eum ae',\n", - " '* repeat',\n", - " 'nae moh deen gul ga jihl soo ees do rohk',\n", - " '(nae peum ae maht gyuh nuhl shwip gae ga jihl gae)',\n", - " 'ni peum ahn ae maht kil soo ees do rohk',\n", - " '(ah chim ae hahm kkeh noon teu go shi peun dae)',\n", - " 'nae ah chim ae noon teul soo ees do rohk (nuhl ji kil gae)',\n", - " 'bahm sae nal ji yuh jwuh (nae gae ahn kil rae) ah nah jwuh',\n", - " \"rap.) baby gurl it's 4 am\",\n", - " 'nuh jahm deel uht suh?',\n", - " 'ee jae nae mahm ae young won hee',\n", - " 'nam ah jool rae geu rae geu luh kae hal rae',\n", - " 'bili nhangu yalyuwan, ŋayim',\n", - " 'munhaguyina nhangu ŋarruŋa nhäwu',\n", - " 'yay yā. yay yä marwurrumburr',\n", - " 'waripum nhan ŋarru m.m. ŋalthun bāmbaṯḻi milkirilim gurruwurruḻi',\n", - " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr',\n", - " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr m.m',\n", - " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr',\n", - " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr',\n", - " 'ḏit ḏirri rriri. ḏit ḏirri rriri ḏit ḏirri rriri. ḏit ḏirri rriri',\n", - " 'buŋganma nhan dhaŋu maykulŋuwu. (wititj)',\n", - " 'waripum bhan dhaŋu buŋgan djarrpiyanawu',\n", - " 'binininyala yay yä ya. yay yä yi marwurrumburr',\n", - " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr',\n", - " 'ŋarru ŋarran butjikit. ŋarru ŋarran butjikit marwurrumburr',\n", - " 'now it has cooled, the country',\n", - " 'his night has come for',\n", - " 'ya, ya, ya, the cat',\n", - " 'also he will, climg into funeral shelter',\n", - " 'the cat will travel, the cat will travel',\n", - " 'the cat will travel, the cat will travel',\n", - " 'the cat will travel, the cat will travel',\n", - " 'the cat will travel, the cat will travel',\n", - " 'ḏit ḏirri rriri. ḏit ḏirri rriri ḏit ḏirri rriri. ḏit ḏirri rriri',\n", - " 'the scent of the smelt by wititj',\n", - " 'the scent of the smelt by wititj',\n", - " 'bininyala ya, ya the cat',\n", - " 'the cat will travel, the cat will travel',\n", - " 'the cat will travel, the cat will travel',\n", - " 'ahhhhhhhhnnnn ahhhhnnn ahhhhnn aeyyy',\n", - " 'sonke sai thandi imali',\n", - " 'sonke sai thandi imali',\n", - " 'sonke sai thandi imali',\n", - " 'sonke sai thandi imali',\n", - " 'thandi mali',\n", - " 'thandi mali',\n", - " 'thandi mali',\n", - " 'thandi mali',\n", - " 'all my le le le le le ladies',\n", - " 'let me see you wine up your waist',\n", - " 'if you want my money you must shake your body',\n", - " 'baby girl you dey make me dey craze',\n", - " 'all my le le le le le ladies',\n", - " 'let me see you wine up your waist',\n", - " 'if you want my money you must shake your body',\n", - " 'baby girl you dey make me dey craze',\n", - " 'oga tsenya chelete otla bona',\n", - " 'tsenya chelete otla bona',\n", - " 'oga tsenya chelete otla bona',\n", - " 'tsenya chelete otla bona',\n", - " 'eko nimo tiwa toba sope olejo',\n", - " 'okoto meji lopade sodemo pao jisoro',\n", - " 'nina ahhn come chop money now',\n", - " 'dance like a ballerina',\n", - " 'come hey make i buy you visa owey',\n", - " 'kinni omo oginni, oginni',\n", - " 'i go buy you lamborghini',\n", - " 'come party baby girl what you drinking',\n", - " 'konko jabele kaluku lomi she tie o.b.o',\n", - " 'all my le le le le le ladies',\n", - " 'let me see you wine up your waist',\n", - " 'if you want my money you must shake your body',\n", - " 'baby girl you dey make me dey craze',\n", - " 'all my le le le le le ladies',\n", - " 'let me see you wine up your waist',\n", - " 'if you want my money you must shake your body',\n", - " 'baby girl you dey make me dey crase',\n", - " 'oga tsenya chelete otla bona',\n", - " 'tsenya chelete otla bona',\n", - " 'oga tsenya chelete otla bona',\n", - " 'tsenya chelete otla bona',\n", - " 'sonke sai thandi imali',\n", - " 'sonke sai thandi imali',\n", - " 'sonke sai thandi imali',\n", - " 'sonke sai thandi imali',\n", - " 'thandi mali',\n", - " 'thandi mali',\n", - " 'thandi mali',\n", - " 'thandi mali',\n", - " 'things that people do for money',\n", - " 'things that people do for money',\n", - " 'inkomo mai chincha',\n", - " 'kamane oshabe jam kabomrotho',\n", - " 'mao ndoro ose shebe khule',\n", - " 'agisabi mali ye hehe hehe',\n", - " 'you have to know how to treat a lady',\n", - " 'if you know how to treat a lady',\n", - " 'ngisabi mali ye hehe hehe',\n", - " 'ngisabi mali ye hehe hehe',\n", - " 'all my le le le le le ladies',\n", - " 'let me see you wine up your waist',\n", - " 'if you want my money you must shake your body',\n", - " 'baby girl you dey make me dey craze',\n", - " 'all my le le le le le ladies',\n", - " 'let me see you wine up your waist',\n", - " 'if you want my money you must shake your body',\n", - " 'baby girl you dey make me dey craze',\n", - " 'oga tsenya chelete otla bona',\n", - " 'tsenya chelete otla bona',\n", - " 'le le tsenya chelete otla bona',\n", - " 'le le tsenya chelete otla bona',\n", - " 'oga tsenya chelete otla bona',\n", - " 'tsenya chelete otla bona',\n", - " 'le le tsenya chelete otla bona',\n", - " 'le le tsenya chelete otla bona',\n", - " 'luvha dume',\n", - " 'duhara menua lusi',\n", - " 'luvha lue',\n", - " 'telame fteli musui ha',\n", - " 'luvha lume',\n", - " 'duhamaf tiseha hesi',\n", - " 'luvha due',\n", - " 'duayi ale musui halu',\n", - " 'duarumani kurigame naque na e a woejou lapagirenu zoe',\n", - " 'duarumani durigame naque na e a echo koici',\n", - " 'echo songu melavi',\n", - " 'hey listen mr. boy',\n", - " 'jallan cheok haneun ipsullo',\n", - " 'ijeneun sok gipeun sarangeul malhae',\n", - " 'come on like a man',\n", - " 'jarangman gadeukhan nalmada',\n", - " 'ttabunhan miraega adeukhan',\n", - " 'sonyeondeuriyeo',\n", - " 'gaseumi ttatteutan saenggagi',\n", - " 'bandeutan jogeumeun',\n", - " 'chabunhan namjaga dwaejwo',\n", - " 'ibunicho bappeuge sigyechimeun',\n", - " 'sum gappeuge doneunde',\n", - " 'wae neul jejari jump jump',\n", - " 'jajonsimeun no jasingameuro',\n", - " 'mugeoun keun sancheoreom jaranajwo',\n", - " 'hey listen mr. boy',\n", - " 'jallan cheok haneun ipsullo',\n", - " 'ijeneun sok gipeun sarangeul malhae',\n", - " 'come on like a man',\n", - " 'hey get up mr. big',\n", - " 'huljjeok neorbeojin eokkaero',\n", - " 'jugeodo jikyeojul yeojareul angil',\n", - " 'you know real man',\n", - " 'namjaui du nuni sesangeul samkil deut',\n", - " 'bitnamyeon neomuna meotjige boyeo',\n", - " 'namjaui ssaumeun him anin',\n", - " 'huimangi keojil ttae',\n", - " 'eonjena seungniga boyeo',\n", - " 'hey listen mr boy',\n", - " 'ganghancheok hadeon yonggiro',\n", - " 'wonhaneun sowoneul hyanghae neol deonjyeo',\n", - " 'burning running man',\n", - " 'hey get up mr big',\n", - " 'sesangeul gajin mameuro',\n", - " 'saeropge taeeona',\n", - " \"i'm waiting for you\",\n", - " \"let's go mr big\",\n", - " 'hey listen mr boy',\n", - " 'hey listen mr boy',\n", - " 'hey listen mr boy',\n", - " 'jallancheok haneun ipsullo',\n", - " 'ijeneun sok gipeun sarangeul malhae',\n", - " 'come on like a man',\n", - " 'hey get up mr. big',\n", - " 'huljjeok neorbeojin eokkaero',\n", - " 'jugeodo jikyeojul yeojareul angil',\n", - " 'your know real man',\n", - " 'madjozi',\n", - " 'limpopo champions league',\n", - " 'iyoh',\n", - " 'swo nita byela hiwena',\n", - " 'mina himpela, sweswo ndzinge swikoti',\n", - " 'swo nita teka my cash, ndzi nyika a man, sweswo ndzi nge swikoti',\n", - " 'swo ndzita tshama ndzilo whii! milo ndzi nwii! sweswo ndzinge swikoti',\n", - " \"swo he'll be cheating on me, ndzi nga nwi tshiki, sweswo ndzinge swikoti\",\n", - " 'i’m probably the best dressed in any room',\n", - " 'and i bet that i look like money too',\n", - " \"lava vange i'm humble hiku mbala xibhelana, voka vangaswi tivi ku i mali muni\",\n", - " \"2 point 5 xibhelan' xay’ one\",\n", - " 'mina swo boha ndzi xava swa 2',\n", - " 'futhi swa mina, they custom made',\n", - " \"so don't come to me telling me other names\",\n", - " 'givenchy or gucci, mina andzi ti hluphi',\n", - " 'ndzi boha tinguvu like everyday',\n", - " 'limpopo champions league, hitlanga ku fana na mbappe',\n", - " 'limpopo champions league, hi tlanga ku fana na yeh',\n", - " 'limpopo champions league, hitlanga ku fana na mbappe',\n", - " 'limpopo champions league, hi tlanga ku fana na yeh',\n", - " 'hina ha mbobo, hina, hina ha mbomba',\n", - " 'hina ha mbobo, hina, hina ha mbomba',\n", - " 'hina ha mbobo, hina, hina ha mbomba',\n", - " 'hina ha mbobo, hina, hina ha mbomba',\n", - " 'interlude',\n", - " 'ndzi suka ndzi famba, ndzi songa the bed',\n", - " 'swona ndzi lo mama xitsonga the best',\n", - " 'ndzi dakwa ndzi lanwa, ndzi longa the rest',\n", - " \"vanhu lava van' lava, they don't got the bread\",\n", - " \"and they don't got the head\",\n", - " 'i might just go harder than water-cement',\n", - " \"andzi nge va heti, there's too many men\",\n", - " \"andzi va rileli, i'm too very ?\",\n", - " \"lava vangani lahla, i'm sure they regret\",\n", - " 'va tshama va kwata, they’re so very mad',\n", - " 'think you can catch me like ?, forget',\n", - " 'wo saka, timhaka go over your head',\n", - " 'madjozi is doing the things like motsipa* that makes the dipitsa and pots to be done',\n", - " 'might go on a cruise with the booze and a litre',\n", - " 'hake rate kgo missa, i’m kevin durant',\n", - " 'might go and gig on a run',\n", - " \"don't ask ku ndzi fikile man\",\n", - " \"i’m in it, i'm the son of a gun\",\n", - " \"i came here by force and i'll leave when i want\",\n", - " 'limpopo champions league, hitlanga ku fana na mbappe',\n", - " 'limpopo champions league, hi tlanga ku fana na yeh',\n", - " 'limpopo champions league, hitlanga ku fana na mbappe',\n", - " 'limpopo champions league, hi tlanga ku fana na yeh',\n", - " 'hina ha mbobo, hina, hina ha mbomba',\n", - " 'hina ha mbobo, hina, hina ha mbomba',\n", - " 'hina ha mbobo, hina, hina ha mbomba',\n", - " 'hina ha mbobo, hina, hina ha mbomba',\n", - " 'i came here from limpopo',\n", - " 'i came here for the solo',\n", - " 'i came here on the n1, might ? on the same one',\n", - " 'better get me airplay now, getting used to the fame now',\n", - " \"if it ain't work, i don’t wanna know, boy\",\n", - " \"if it ain't worth it, i don't wanna go\",\n", - " 'romanized',\n", - " 'we’re just dancing on the floor',\n", - " 'neoege jakku ppajyeodeuneun geol',\n", - " 'we’re just dancing in the rain',\n", - " 'neoreul cheom bon geu sungane',\n", - " 'nae simjang soge tteugeoun heartbeat',\n", - " 'oneulbam naege dagawa',\n", - " 'duriseo hamkke i bami saedorok',\n", - " 'jomyeonge jeojeodeuneun town town town town',\n", - " 'naegero dagaoneun neo neo neo neo',\n", - " 'jageun ipsul chokchogi jeojeun meoritgyeol',\n", - " 'i’m falling in love',\n", - " 'we’re just dancing on the floor',\n", - " 'neoege jakku ppajyeodeuneun geol',\n", - " 'we’re just dancing in the rain',\n", - " 'nal baraboneun nunbichi neomu tteugeowo',\n", - " 'already i’m ready',\n", - " 'you’re very tipsy baby',\n", - " 'neodo nal wonhago itjanha',\n", - " 'already i’m ready',\n", - " 'you’re very sexy baby',\n", - " 'nal ireukyeo jwo nal saranghae jwo tonight',\n", - " 'oh oh oh oh oh oh oh oh oh oh oh oh',\n", - " 'nal barabwa naege angyeobwa',\n", - " 'oneulmaneun amu geokjeonghaji ma',\n", - " 'oh kiss me baby',\n", - " 'give me your love',\n", - " 'rideume neoreul matgyeo will be alright',\n", - " 'jomyeonge jeojeodeuneun town town town town',\n", - " 'naegero dagaoneun neo neo neo neo',\n", - " 'jageun ipsul chokchogi jeojeun meoritgyeol',\n", - " 'i’m falling in love',\n", - " 'we’re just dancing on the floor',\n", - " 'neoege jakku ppajyeodeuneun geol',\n", - " 'we’re just dancing in the rain',\n", - " 'nal baraboneun nunbichi neomu tteugeowo',\n", - " 'already i’m ready',\n", - " 'you’re very tipsy baby',\n", - " 'neodo nal wonhago itjanha',\n", - " 'already i’m ready',\n", - " 'you’re very sexy baby',\n", - " 'nal ireukyeo jwo nal saranghae jwo tonight',\n", - " 'oh oh oh',\n", - " 'i’m still around',\n", - " 'oh oh oh',\n", - " 'we’re making out',\n", - " 'oh oh oh',\n", - " 'i’m still around',\n", - " 'oh oh oh',\n", - " 'eonjedeun ni juwien',\n", - " 'naega isseo dagawa nunchi boji mayo',\n", - " 'neukdaedeurui saieseo jikyeojul teni',\n", - " 'eoseo iriwayo',\n", - " 'neon meoributeo balkkeutkkaji',\n", - " 'bichina urin han kkeut chai',\n", - " 'oneulbameun jeoldae nae pumeseo tteoreojiji ma',\n", - " 'nal ireukyeo jwo nal saranghae jwo tonight',\n", - " 'oh oh oh',\n", - " 'i’m still around',\n", - " 'oh oh oh',\n", - " 'let’s go party',\n", - " 'oh oh oh',\n", - " 'i’m still around',\n", - " 'oh oh oh',\n", - " 'let’s go party',\n", - " 'already i’m ready',\n", - " 'you’re very tipsy baby',\n", - " 'neodo nal wonhago itjanha',\n", - " 'already i’m ready',\n", - " 'you’re very sexy baby',\n", - " 'nal saranghae jwo tonight',\n", - " 'au fond',\n", - " 'at rock bottom',\n", - " 'tenidagh hegh djeredjere',\n", - " 'afudan man saswatahi',\n", - " 'dihad ensegh hegh tenere',\n", - " 'djegh inezdjam ayyetahi',\n", - " 'ibas tilla timidiwa',\n", - " 'ibas tilla tittirewa',\n", - " 'ibas tilla er adutten',\n", - " 's-aba el ghahid n duniya',\n", - " 'edjod enwat essin esghan',\n", - " 'nella djer thunt d assin djerwan',\n", - " 'taqalahi tekma asiman',\n", - " 'hidadjan ammas n man',\n", - " 'shadidj yallah idagh hilan',\n", - " 'aghrer y allah idagh hilan',\n", - " 'idja tarha ashadidjan',\n", - " 'siyedd ghorsan tegla sufar',\n", - " 'hantat karras d efadd n idem',\n", - " \"we gon' get it by any means, baby, fuck the law\",\n", - " 'fuck the law',\n", - " 'fuck the law',\n", - " 'fuck the law',\n", - " 'fuck the law',\n", - " \"we gon' get it by any means, baby, fuck the law\",\n", - " \"we gon' get it\",\n", - " \"we gon' get it\",\n", - " \"we gon' get it by any means, baby, fuck the law\",\n", - " \"we gon' get it by any means, baby, fuck the law\",\n", - " \"we gon' get it by any means, by any means, by any means\",\n", - " \"we gon' get it by any means, baby, fuck the law\",\n", - " 'fuck the law',\n", - " 'fuck the law',\n", - " \"we gon' get it\",\n", - " \"we gon' get it (fuck the law)\",\n", - " \"we gon' get it by any means, baby, fuck the law\",\n", - " \"we gon' get it by any means, baby, fuck the law\",\n", - " \"we gon' get it by any means, by any means, by any means\",\n", - " 'baby, fuck the law',\n", - " \"we gon' get it by any means, baby, fuck the law\",\n", - " 'stay nae noon mool ri ma reul ddae gga ji',\n", - " 'stay nae ga na reul moh reul ddae gga ji',\n", - " 'stay ah joo cho geum man ki da ryeo',\n", - " 'stay nae gi yok eui joo in eun na ya',\n", - " 'stay nae ga neol poh nae jool ddae gga ji',\n", - " 'stay nae gi yok sok geh seo ra doh',\n", - " '*chorus*',\n", - " 'cho geum eui (cho geum eui) dda deut ham (dda deut ham) ee ra doh (ee ra doh)',\n", - " 'kan jik hal soo it geh hae chweo',\n", - " 'nan ee mi eol reo beo ril deut han eop shi cha ga weo',\n", - " 'neo ma jeo (neo ma jeo) ddeo na myon (ddeo na myon) na eh gehn (na eh gen)',\n", - " 'ee jeh ah reum ta oom mi eop seo',\n", - " 'nan ee mi beo ryeo jyo it go han eop shi deo reo weohey ee mi gwae oh raen shi gan dong ahn',\n", - " 'nae ahn neh meo mool reo it seot chan nah',\n", - " 'ee jeh keu nyang chip ee ra go saeng gak hae',\n", - " '* repeat',\n", - " 'stay inside my dear',\n", - " \"don't you come out my dear\",\n", - " '* repeat',\n", - " 'stay my dear',\n", - " 'stay my dear',\n", - " '谁把谁的灵魂 装进谁的身体?',\n", - " '谁把谁的身体',\n", - " '变成囹圄囚禁自己',\n", - " '乱世总是最 不缺耳语',\n", - " '哪种美丽会唤来妒忌',\n", - " '你并没有罪 有罪是这世界',\n", - " '生而为人无罪',\n", - " '你不需要抱歉',\n", - " 'one day i will be you baby boy, and you gon’be me',\n", - " '喧哗如果不停',\n", - " '让我陪你安静',\n", - " 'i wish i could hug you, till you’re really really being free',\n", - " '哪朵玫瑰 没有荆棘?',\n", - " '最好的 报复是 美丽',\n", - " '最美的 盛开是 反击',\n", - " '别让谁去 改变了你',\n", - " '你是你 或是妳 都行',\n", - " '会有人 全心的 爱你',\n", - " '试着想像 you switched to his body',\n", - " 'sexuality 当心 什么会伤你',\n", - " '多少次的重伤 多少次的冷语',\n", - " 'drowning 谁会拉你',\n", - " 'dreaming 谁会陪你',\n", - " 'same shit happens every day',\n", - " '你离开后 世界可改变?',\n", - " '多少无知罪愆 事过不境迁',\n", - " '永志不忘记念 往事不如烟',\n", - " '生而为人无罪',\n", - " '你不需要抱歉',\n", - " 'one day i will be you baby boy, and you gon’be me',\n", - " '喧哗如果不停',\n", - " '让我陪你安静',\n", - " 'i wish i could hug you, till you’re really really being free',\n", - " '哪朵玫瑰 没有荆棘?',\n", - " '最好的 报复是 美丽',\n", - " '最美的 盛开是 反击',\n", - " '别让谁去 改变了你',\n", - " '你是你 或是妳 都行',\n", - " '会有人 全心的 爱你',\n", - " '玫瑰少年 在我心里',\n", - " '绽放着 鲜艳的 传奇',\n", - " '我们都 从来没 忘记',\n", - " '你的控诉 没有声音',\n", - " '却倾诉 更多的 真理',\n", - " '却唤醒 无数的 真心',\n", - " 'pinyin',\n", - " 'shéi bǎ shéi de línghún zhuāng jìn shéi de shēntǐ?',\n", - " 'shéi bǎ shéi de shēntǐ',\n", - " 'biàn chéng língyǔ qiújìn zìjǐ',\n", - " 'luànshì zǒng shì zuì bù quē ěryǔ',\n", - " 'nǎ zhǒng měilì huì huàn lái dùjì',\n", - " 'nǐ bìng méiyǒuzuì yǒu zuì shì zhè shìjiè',\n", - " 'shēng ér wéirén wú zuì',\n", - " 'nǐ bù xūyào bàoqiàn',\n", - " 'one day i will be you baby boy, and you gon’be me',\n", - " 'xuānhuá rúguǒ bù tíng',\n", - " 'ràng wǒ péi nǐ ānjìng',\n", - " 'i wish i could hug you, till you’re really really being free',\n", - " 'nǎ duǒ méiguī méiyǒu jīngjí?',\n", - " 'zuì hǎo de bàofù shì měilì',\n", - " 'zuìměi de shèngkāi shì fǎnjí',\n", - " 'bié ràng shéi qù gǎibiànle nǐ',\n", - " 'nǐ shì nǐ huò shì nǎi dōu xíng',\n", - " 'huì yǒurén quán xīn de ài nǐ',\n", - " 'shì zhuó xiǎngxiàng you switched to his body',\n", - " 'sexuality dāngxīn shénme huì shāng nǐ',\n", - " 'duōshǎo cì de zhòngshāng duōshǎo cì de lěng yǔ',\n", - " 'drowning shéi huì lā nǐ',\n", - " 'dreaming shéi huì péi nǐ',\n", - " 'same shit happens every day',\n", - " 'nǐ líkāi hòu shìjiè kě gǎibiàn?',\n", - " 'duō shào wúzhī zuìqiān shìguò bu jìng qiān',\n", - " 'yǒngzhì bù wàngjì niàn wǎngshì bùrú yān',\n", - " 'shēng ér wéirén wú zuì',\n", - " 'nǐ bù xūyào bàoqiàn',\n", - " 'one day i will be you baby boy, and you gon’be me',\n", - " 'xuānhuá rúguǒ bù tíng',\n", - " 'ràng wǒ péi nǐ ānjìng',\n", - " 'i wish i could hug you, till you’re really really being free',\n", - " 'nǎ duǒ méiguī méiyǒu jīngjí?',\n", - " 'zuì hǎo de bàofù shì měilì',\n", - " 'zuìměi de shèngkāi shì fǎnjí',\n", - " 'bié ràng shéi qù gǎibiànle nǐ',\n", - " 'nǐ shì nǐ huò shì nǎi dōu xíng',\n", - " 'huì yǒurén quán xīn de ài nǐ',\n", - " 'méiguī shàonián zài wǒ xīnlǐ',\n", - " 'zhànfàngzhe xiānyàn de chuánqí',\n", - " 'wǒmen dōu cónglái méi wàngjì',\n", - " 'nǐ de kòngsù méiyǒu shēngyīn',\n", - " 'què qīngsù gèng duō de zhēnlǐ',\n", - " 'què huànxǐng wú shǔ de zhēnxīn',\n", - " 'break algot gateunde',\n", - " \"i'm break ijen algot gateunde\",\n", - " \"yeah it's not a love story not a love story\",\n", - " 'girl, you making me cry',\n", - " 'igon anijana',\n", - " 'dur-e munjega anijana',\n", - " 'sesaram dwe borin yegi',\n", - " 'jogangnan yegi',\n", - " 'nega dorophin uri yegi',\n", - " 'nareul (nareul) butjapgoso (butjapgoso) yogikkaji wasso wae (wae)',\n", - " 'naman-e saraminchok',\n", - " 'haneunmaldeul modu gojisin-gol (gojisin-gol)',\n", - " 'nemameul mitgo sipojyo (no)',\n", - " 'gojitmalmajo (no) tto babochorom',\n", - " 'nol mitgosipo nan',\n", - " 'itorok janinhan (no) noye gojitmal (no)',\n", - " 'girl, how could you give your heart for two',\n", - " 'cry, cry, making me cry',\n", - " \"girl, you're making me cry\",\n", - " 'break it, break it, breaking my heart',\n", - " 'michilgotman gata',\n", - " 'ne morineun algo gaseumeun sokgo',\n", - " 'girl, you really break the hearts of two',\n", - " 'yes!',\n", - " 'nal baraboneun nunbitjocha',\n", - " 'jonhyo mitgijiana',\n", - " 'bokcha geuredo nan noreuljjocha',\n", - " 'dodeche nesarangeun',\n", - " 'yo mebon sokji ogiga nal ikkeulji',\n", - " 'kkeuchi odiilji duryowo',\n", - " 'odiro gagoinni',\n", - " 'jongdabeun opji but',\n", - " \"i can't, i can't leave you\",\n", - " 'honja amuri senggakhedo',\n", - " 'ije nan ottokheya dwe',\n", - " 'nareul mirone kkeutneya haneunde (haneunde)',\n", - " 'i want (i want), to be with you (be with you)',\n", - " 'museun mari obso wae (wae)',\n", - " 'ijeuryo noryokhedo',\n", - " 'jiwobwado',\n", - " 'negyote memdoneun-gol',\n", - " 'nemameul mitgo sipojyo (no)',\n", - " 'gojitmalmajo (no) tto babochorom',\n", - " 'nol mitgosipo nan',\n", - " 'itorok janinhan (no) noye gojitmal (no)',\n", - " 'girl, how could you give your heart for two',\n", - " 'cry, cry, making me cry',\n", - " \"girl, you're making me cry\",\n", - " 'break it, break it, breaking my heart',\n", - " 'michilgotman gata',\n", - " 'ne morineun algo gaseumeun sokgo',\n", - " 'girl, you really break the hearts of two',\n", - " 'i can halsu isso nol boryoyamanhe nan',\n", - " \"i can't halsu obso\",\n", - " 'nol jabayamanhe nan',\n", - " 'andwe mideulge motdwe',\n", - " 'ani midoyamanhe nol',\n", - " 'ojirowo stop that nugul tat-he',\n", - " 'oso dedaphe girl',\n", - " 'niga da mangchyonwaborin urideul story',\n", - " 'mitjimothal iyagi',\n", - " \"it's no love story\",\n", - " 'nesoneuron jolde kkeutnejil mot-he',\n", - " 'girl, you really break the hearts of two',\n", - " 'nemameul mitgo sipojyo (no)',\n", - " 'gojitmalmajo (no) tto babochorom',\n", - " 'nol mitgosipo nan',\n", - " 'itorok janinhan (no) noye gojitmal (no)',\n", - " 'girl, how could you give your heart for two',\n", - " 'na kkeutkkaji uisimdwe nol jikilji',\n", - " 'naye gomin noye kkeuteun odilji',\n", - " 'mebon nan sokji ogiga ikkeulji',\n", - " \"it's not a love story not a love story\",\n", - " \"i'm heart sick, heal me, be crazy, can't let you go\",\n", - " \"sad love song, my love's gone, please baby, don't go far\",\n", - " 'so beast',\n", - " 'down, down, we gotta get down, down, down, we gotta get down',\n", - " 'down, down, we gotta get down, i want ya, come to me, girl',\n", - " 'down, down, we gotta get down, down, down, we gotta get down',\n", - " 'down, down, we gotta get down, i want ya, come to me, girl',\n", - " 'niga tteonan jarie seupeumi gadeukhae',\n", - " 'naman dugo tteona beorimyeon nan eotteokhae',\n", - " 'shigani jinagado ni eolguri jakku tteo olla',\n", - " 'meoriga binggeul binggeul doneunde',\n", - " 'eojega majimak kiss, neol jabji mothan nae miss',\n", - " 'modeunge kkumi gil please, nan geunyang babo baboga dwin geot gata',\n", - " 'sorichyeo sorichyeo bulleo butjapgo butjapgo shipeodo',\n", - " 'hey, hey, hey, girl dorawa jweo please, my hate girl',\n", - " 'amuri saeng gakhaedo maldo andwae, bad girl',\n", - " 'jakkuman ni saenggage michyeo michyeo, bad girl',\n", - " 'tteonaji mallago nege sorichyeodo',\n", - " 'dwi dora bojido anhneun, bad girl',\n", - " 'g-o-n-e niga tteonani jal gadeon shigyedo stop gwaenhi',\n", - " 'nae gwieseo deullineun like our story so sick',\n", - " 'hanttaeneun my, my lady niga eobseo ureo nan daily',\n", - " 'ajik ni jarineun biweo dulge girl c-o-m-e',\n", - " 'miweohan ji harumane geuriweojyeo',\n", - " 'ni saenggage nae eolguri nunmullo beonjyeo',\n", - " 'neol butjabeuryeo hamyeon neo ege daga galsurok deo',\n", - " 'naegeseo meolli meolli ganeunde',\n", - " 'dashi dolligin neomu nujeo borin geot gatae',\n", - " 'ni moksori ga naegeseo jakku meoreo jineunde',\n", - " 'sorichyeo sorichyeo bulleo butjapgo butjapgo shipeodo',\n", - " 'hey, hey, hey, girl, dorawa jweo please, my hate girl',\n", - " 'amuri saeng gakhaedo maldo andwae, bad girl',\n", - " 'jakkuman ni saenggage michyeo michyeo, bad girl',\n", - " 'tteonaji mallago nege sorichyeodo',\n", - " 'dwi dora bojido anhneun, bad girl',\n", - " 'yeotaekkeot niga haetdeon modeun mal',\n", - " 'hansungan modeun geda geojit mal',\n", - " 'ni mameul dwi dolliryeo halsurok',\n", - " 'naegeseo han georeumsshik meoreojyeo ganeun neo',\n", - " 'amuri saeng gakhaedo maldo andwae, bad girl',\n", - " 'jakkuman ni saenggage michyeo michyeo, bad girl',\n", - " 'tteonaji mallago nege sorichyeodo',\n", - " 'dwi dora bojido anhneun, bad girl',\n", - " 'down, down, we gotta get down, down, down, we gotta get down',\n", - " 'down, down, we gotta get down, na honjaman tto seulpeo hae... naege dorawajweo',\n", - " 'down, down, we gotta get down, down, down, we gotta get down',\n", - " 'down, down, we gotta get down, i want ya, come to me, girl',\n", - " '* everyday mainichi ga a new day tanoshikute',\n", - " \"when i'm with u (i feel so good)\",\n", - " 'baby, you make me feel so good',\n", - " 'kotoba hitotsu baby kakerareru dake de',\n", - " \"when i'm with u (i feel so good)\",\n", - " 'kimi ga ita kara donna ni tsurakutemo',\n", - " 'norikoerareta kara i wanna say thank u thank u',\n", - " 'fuan datta kara guchi koboshitari shita kedo',\n", - " 'soredemo sasaete kureteta honto ni thank u',\n", - " 'everyday donna hi mo a new day shiawase',\n", - " \"when i'm with u (i feel so good)\",\n", - " 'baby, you make me feel so good',\n", - " 'kotoba hitotsu baby kakerareru dake de',\n", - " \"when i'm with u (i feel so good)\",\n", - " 'ikidzumetta toki wa itsumo soba ni ite kureta',\n", - " 'imi tsumatta kotoba de oshiete kureta',\n", - " 'kimi no egao (thank u) kimi no nukumori (thank u)',\n", - " 'itsumo genki wo kurete thank u thank u',\n", - " 'to my family daisuki na hito ni mo',\n", - " 'shittete moraitai itsumo i love u & thank u',\n", - " '* repeat 2x',\n", - " 'omoide ja naku genzai shinkoukei',\n", - " 'tomo ni egaku ningen no ai shinpo de',\n", - " 'sugata mienakutemo aenakutemo',\n", - " 'kokoro ni man i have u every single day',\n", - " 'chikai shourai dekai shoutai de kamasu ze show time',\n", - " 'donna konnan mo norikoerareta cause yo luv',\n", - " 'migi ni thank u hidari ni thank u',\n", - " 'coast 2 coast everybody get up and shout thank u',\n", - " '* repeat...']},\n", - " 'data': ['ab queck zenick fesi',\n", - " 'zong jup col im in na hiz jal, ooh',\n", - " 'wow!',\n", - " 'wa toc peg qui dos gee pif, aah',\n", - " 'joc jarraz bas deg zorze zot',\n", - " 'jer wih tuster mo vey',\n", - " 'qui neb be og ezen on',\n", - " 'wok lapti nek seb not van',\n", - " 'goc jarraz bas deg zorze zot',\n", - " 'lapti nek, rat a ran wim joct co jappi qaff',\n", - " 'lapti nek, kiv ba ha top wep jex pi va bep',\n", - " 'lapti nek, rat a ran wim joct co jeppi qaff',\n", - " 'wow!',\n", - " 'ab queck zenick fesi',\n", - " 'jem wih tuster mo vey',\n", - " 'qui neb be og ezen on',\n", - " 'wok lapti nek seb not van',\n", - " 'wah toc peg qui doz gee pif ezact',\n", - " 'goc jarraz bas deg zorze zot',\n", - " 'lapti nek, rat a ran wim joct co jappi qoff',\n", - " 'lapti nek, kiv ba ha top wep jex pi va bep',\n", - " 'lapti nek, rat a ran wim joct co jappi qaff',\n", - " 'wow!',\n", - " 'deg zorze zot',\n", - " 'jem with tuster mo vey',\n", - " 'qui neb be og ezen on',\n", - " 'wok lapti nek seb not van',\n", - " 'goc jarraz bas deg zorze zot',\n", - " 'lapti nek, rat a ran wim joct co jappi qoff',\n", - " 'lapti nek, kiv ba ha top wep jex pi va bep',\n", - " 'lapti nek, rat a ran wim joct co jappi qaff',\n", - " 'deg zorze zot',\n", - " 'wow!',\n", - " 'lapti nek lapti nek',\n", - " 'lapti nek lapti nek',\n", - " 'lapti nek lapti nek',\n", - " 'wow!',\n", - " 'lapti nek lapti nek',\n", - " 'lapti nek lapti nek',\n", - " 'lapti nek lapti nek',\n", - " 'wow!',\n", - " \"let's go\",\n", - " 'beautiful girl baby beautiful girl lady',\n", - " \"you're my baby baby baby\",\n", - " 'negen nomu wanbyokhe',\n", - " 'beautiful girl baby beautiful girl lady',\n", - " \"you're my lady lady lady\",\n", - " 'ojing-nomaneul wihan i nore',\n", - " 'sarangiran gol mollasso',\n", - " 'geujo chin-guroman niga joasso',\n", - " 'namnyosairo deumulge',\n", - " 'soro joheun chin-guyotjana',\n", - " 'chin-gudeuri nege murosso',\n", - " 'ohwiduri duri amusai aninyago',\n", - " 'joldeanirago egilhejwobwado',\n", - " 'ohehajana o jongmal',\n", - " 'nado ne mam moreuge',\n", - " 'niga jakku yeppo boine',\n", - " 'irom an dweneunde jongsincharyoyahe',\n", - " 'kkumsogeso kkeona bojiman',\n", - " 'niga nege miso jieul tte',\n", - " 'naneun nege ppajyoborine',\n", - " \"you're my little angel\",\n", - " 'ne mameul ottokhe',\n", - " 'beautiful girl baby beautiful girl lady',\n", - " \"you're my baby baby baby\",\n", - " 'negen nomu wanbyokhe',\n", - " 'beautiful girl baby beautiful girl lady',\n", - " \"you're my lady lady lady\",\n", - " 'ojing-nomaneul wihan i nore',\n", - " 'soro nunbitman bwado mwol hagopeunji',\n", - " 'aneun nowa',\n", - " 'geurigo sipeun uri dulman-e',\n", - " 'areumdaun donghwa',\n", - " 'namnyosaireul ttwionomgoso',\n", - " 'saranghal su isseulkka',\n", - " 'dugeundugeun gorineun',\n", - " 'jeobulganeung ne simjang',\n", - " 'hamkke isseumyon mwor-hadeunji',\n", - " 'nomunado joa',\n", - " 'dugeun-gorimeul deulkiji anko',\n", - " 'gyote isseul su isseulkka',\n", - " 'nado nemam moreuge',\n", - " 'niga jakku yeppo boine',\n", - " 'irom an dweneunde jongsincharyoyahe',\n", - " 'kkumsogeso kkeona bojiman',\n", - " 'niga nege miso jieul tte',\n", - " 'naneun nege ppajyoborine',\n", - " \"you're my little angel\",\n", - " 'ne mameul ottokhe',\n", - " 'beautiful girl baby beautiful girl lady',\n", - " \"you're my baby baby baby\",\n", - " 'negen nomu wanbyokhe',\n", - " 'beautiful girl baby beautiful girl lady',\n", - " \"you're my lady lady lady\",\n", - " 'ojing-nomaneul wihan i nore',\n", - " 'ne mam ani ( ne mameul alkka)',\n", - " 'ne mam ani ( ne mam aneunji)',\n", - " 'ne mam ani',\n", - " 'ne mameul aneunji moreugo inneunji',\n", - " 'ne mam ani ( ne mameul aneunji)',\n", - " 'ne mam ani ( ne mam aneunji)',\n", - " 'ne mam ani oh girl',\n", - " 'yotekkot mangsoryotdon ne gobek',\n", - " 'hoksina chin-gul ilneun ge anilkka gonwe',\n", - " 'gomin-e kkorireul mulgo neurojyo',\n", - " 'meil bameul bone',\n", - " 'tteugoun teyangmani nal wirohe',\n", - " 'oh men',\n", - " 'yonggillegil namjadapge',\n", - " 'geunyolgajigo sipdamyon',\n", - " 'ijeneun mamdajapge',\n", - " 'ni gaseumsok gipsukhi mudodwotdon mareul',\n", - " 'malhe cupid-ye hwasareul nallyo',\n", - " 'sarangeul hyanghe bureuneun nore',\n", - " 'beautiful girl baby beautiful girl lady',\n", - " 'beautiful girl baby beautiful girl lady',\n", - " \"you're my lady lady lady\",\n", - " 'ojing-nomaneul wihan i nore',\n", - " '(ohhh!)',\n", - " 'bassline',\n", - " 'bassline',\n", - " 'bassline',\n", - " \"bassline kickin'\",\n", - " 'bassline',\n", - " 'bassline',\n", - " '(bassline)',\n", - " \"bassline kickin'\",\n", - " 'bassline',\n", - " 'bassline',\n", - " 'bassline',\n", - " \"bassline kickin'\",\n", - " 'bassline',\n", - " 'bassline',\n", - " 'b-b-b-b-bassline',\n", - " \"bassline kickin', yes i'm groovin'\",\n", - " \"(bassline kickin')\",\n", - " 'bassline',\n", - " 'bassline',\n", - " 'bassline',\n", - " \"bassline kickin'\",\n", - " 'bassline',\n", - " 'bassline',\n", - " \"bassline kickin', yes i'm groovin'\",\n", - " 'bassline',\n", - " 'bassline',\n", - " 'bassline',\n", - " \"bassline kickin'\",\n", - " 'bassline',\n", - " 'bassline',\n", - " 'bassline',\n", - " \"bassline kickin'\",\n", - " \"bassline kickin'\",\n", - " \"bassline kickin'\",\n", - " \"bassline kickin'\",\n", - " \"bassline kickin'\",\n", - " \"bassline kickin'\",\n", - " \"bassline kickin'\",\n", - " \"bassline kickin'\",\n", - " \"bassline kickin', yes i'm groovin'\",\n", - " \"bassline kickin', yes i'm groovin'\",\n", - " \"bassline kickin'\",\n", - " \"bassline kickin', yes i'm groovin'\",\n", - " \"bassline kicikn', yes i'm groovin'\",\n", - " \"(bassline kicikn', yes i'm groovin')\",\n", - " \"(bassline kicikn', yes i'm groovin')\",\n", - " \"(bassline kicikn', yes i'm groovin')\",\n", - " '(bassline)',\n", - " \"bassline kickin', yes i'm groovin'\",\n", - " 'bassline',\n", - " 'bassline',\n", - " 'bassline',\n", - " \"bassline kickin'\",\n", - " 'bassline',\n", - " 'bassline',\n", - " 'b-b-b-b-bassline',\n", - " \"bassline kickin', yes i'm groovin'\",\n", - " \"bassline kickin', yes i'm groovin'\",\n", - " \"bassline kickin'\",\n", - " 'bassline',\n", - " 'bassline',\n", - " 'b-b-b-b-bassline',\n", - " \"bassline kickin', yes i'm groovin'\",\n", - " \"(groovin', groovin', groovin')\",\n", - " 'nimya tu kuch der pa ke rakh le',\n", - " 'pale vitch mukhra luiska ke rai',\n", - " 'nimya tu kuch der pa ke rakh le',\n", - " 'pale vitch mukhra luiska ke rai',\n", - " 'aave kari na kise de naal pyar',\n", - " 'mundiya to bach ke rahi',\n", - " 'nahi tu hun hun hui mutiyar',\n", - " 'mundiya to bach ke rahi',\n", - " 'nahi tu hun hun hui mutiyar',\n", - " 'mundiya to bach ke rahi, yeah',\n", - " 'tera ki kasoor je nashili nain ho gaye',\n", - " 'sikh ke adava sharmile nain ho gaye',\n", - " 'tera ki kasoor je nashili nain ho gaye',\n", - " 'sikh ke adava sharmile nain ho gaye',\n", - " 'saanb ke rakh ni eh jovan butari',\n", - " 'saanb ke rakh ni eh jovan butari',\n", - " 'hun mur ke na aauni bahaar',\n", - " 'mundiya to bach ke rahi',\n", - " 'nahi tu hun hun hui mutiyar',\n", - " 'mundiya to bach ke rahi',\n", - " 'nahi tu hun hun hui mutiyar',\n", - " 'mundiya to bach ke rahi, yeah',\n", - " 'chardi jawani tera roop tatha marda',\n", - " 'patla jaha lak na hulara vi saharda',\n", - " 'chardi jawani tera roop tatha marda',\n", - " 'patla jaha lak na hulara vi saharda',\n", - " 'gora gora rang ute mirgani tor',\n", - " 'gora gora rang ute mirgani tor',\n", - " 'hai tera jaye soni koi naal',\n", - " 'mundiya to bach ke rahi',\n", - " 'nahi tu hun hun hui mutiyar',\n", - " 'mundiya to bach ke rahi',\n", - " 'nahi tu hun hun hui mutiyar',\n", - " 'mundiya to bach ke rahi, yeah',\n", - " 'mundiya de bula ute teriya kahaniya',\n", - " 'channi ni ta khanne diyan galiyan pachaniya',\n", - " 'jovana de bula ute teriya kahaniya',\n", - " 'channi ni ta khanne diyan galiyan pachaniya',\n", - " 'janjua te hoya tera roop da diwana',\n", - " 'janjua te hoya tera roop da diwana',\n", - " 'chal sakiya na husan da ba',\n", - " 'mundiya to bach ke rahi',\n", - " 'nahi tu hun hun hui mutiyar',\n", - " 'mundiya to bach ke rahi',\n", - " 'nahi tu hun hun hui mutiyar',\n", - " 'mundiya to bach ke rahi, yeah',\n", - " 'anokquz jechovog bakug cho deaxchave',\n", - " 'dibuq gerunghowtheran bagngalsen toterytts!',\n", - " 'culukeh mukada dicom mangeif achichjech acua',\n", - " 'dimwa depenga',\n", - " 'chaziter utok foddabwith',\n", - " 'deggot fach fiacopa bhismwaha',\n", - " \"ongothawas harbebeden phengwey nowing'ng\",\n", - " 'dimwa depenga',\n", - " 'oloatirve uchispay aluhalen cho najoqaen',\n", - " 'sonpebreith chindetser hocid qyopal zatech',\n", - " 'oulala oulala',\n", - " 'oulala la oulala',\n", - " 'oulala oulala',\n", - " 'oulala la oulala',\n", - " 'aminata we djayi le lo',\n", - " 'aminata we yi bou le lo',\n", - " 'aminata we yi houe le lo',\n", - " 'nonte bo fa komin lo',\n", - " 'aminata',\n", - " 'aminata fa komin le lo',\n", - " 'aminata we konou le lo',\n", - " 'aminata we sinyin hou le lo',\n", - " 'minde, mantoun so edja lo',\n", - " 'oulala oulala',\n", - " 'oulala la oulala',\n", - " 'oulala oulala',\n", - " 'oulala la oulala',\n", - " 'aiya iya iya iye',\n", - " 'aiya iya iya iye',\n", - " 'aiya iya iya iye',\n", - " 'aiya iya iya iye',\n", - " 'yeah~ woah~ yeah~ da da da',\n", - " '我 一直都想对你说',\n", - " 'wǒ yīzhí dōu xiǎng duì nǐ shuō',\n", - " 'i’ve always wanted to tell you',\n", - " '你给我想不到的快乐',\n", - " 'nǐ gěi wǒ xiǎngbùdào de kuàilè',\n", - " 'you’ve given me happiness beyond belief',\n", - " '像绿洲给了沙漠',\n", - " 'xiàng lǜzhōu gěile shāmò',\n", - " 'like an oasis in a desert',\n", - " '说你会永远陪着我',\n", - " 'shuō nǐ huì yǒngyuǎn péizhe wǒ',\n", - " 'say that you will forever be by my side',\n", - " '做我的根我翅膀',\n", - " 'zuò wǒ de gēn wǒ chìbǎng',\n", - " 'be my root, my wings',\n", - " '让我飞也有回去的窝',\n", - " 'ràng wǒ fēi yěyǒu huíqù de wō',\n", - " 'let me fly and have a nest to return to',\n", - " '我愿意 我也可以',\n", - " 'wǒ yuànyì wǒ yě kěyǐ',\n", - " 'i am willing and i am able',\n", - " '付出一切也不会可惜',\n", - " 'fùchū yīqiè yě bù huì kěxí',\n", - " 'to give up everything without any regrets',\n", - " '就在一起看时间流逝',\n", - " 'jiù zài yīqǐ kàn shíjiān liúshì',\n", - " 'let’s just be together and watch time pass by',\n", - " '要记得我们相爱的方式',\n", - " 'yào jìde wǒmen xiāng’ài de fāngshì',\n", - " 'must remember the way of our love',\n", - " '就是爱你 爱着你',\n", - " 'jiùshì ài nǐ àizhe nǐ',\n", - " 'i just love you, loving you',\n", - " '有悲有喜有你平淡也有了意义',\n", - " 'yǒu bēi yǒuxǐ yǒu nǐ píngdàn yěyǒule yìyì',\n", - " 'with sorrow, with joy, with you even ordinary is meaningful',\n", - " '就是爱你 爱着你',\n", - " 'jiùshì ài nǐ àizhe nǐ',\n", - " 'i just love you, just loving you',\n", - " '甜蜜又安心 那种感觉就是你',\n", - " 'tiánmì yòu ānxīn nà zhǒng gǎnjué jiùshì nǐ',\n", - " 'sweet and comfortable, that kind of feeling is just you',\n", - " '我 一直都想对你说',\n", - " 'wǒ yīzhí dōu xiǎng duì nǐ shuō',\n", - " 'i’ve always wanted to tell you',\n", - " '你给我想不到的快乐',\n", - " 'nǐ gěi wǒ xiǎngbùdào de kuàilè',\n", - " 'you’ve given me happiness beyond belief',\n", - " '像绿洲给了沙漠',\n", - " 'xiàng lǜzhōu gěile shāmò',\n", - " 'like an oasis in a desert',\n", - " '说你会永远陪着我',\n", - " 'shuō nǐ huì yǒngyuǎn péizhe wǒ',\n", - " 'say that you will forever be by my side',\n", - " '做我的根我翅膀',\n", - " 'zuò wǒ de gēn wǒ chìbǎng',\n", - " 'be my root, my wings',\n", - " '让我飞也有回去的窝',\n", - " 'ràng wǒ fēi yěyǒu huíqù de wō',\n", - " 'let me fly and have a nest to return to',\n", - " '我愿意 真的愿意',\n", - " 'wǒ yuànyì zhēn de yuànyì',\n", - " 'i am willing, truly willing',\n", - " '付出所有也要保护你',\n", - " 'fùchū suǒyǒu yě yào bǎohù nǐ',\n", - " 'to give up everything to protect you',\n", - " 'oh 在一起 时间继续流逝',\n", - " 'oh zài yīqǐ shíjiān jìxù liúshì',\n", - " 'oh together as time continues to pass',\n", - " '请记得我有多么的爱你',\n", - " 'qǐng jìde wǒ yǒu duōme de ài nǐ',\n", - " 'please remember how much i love you',\n", - " '*',\n", - " 'oh 就是爱你爱着你',\n", - " 'oh jiùshì ài nǐ àizhe nǐ',\n", - " 'oh i just love you, loving you',\n", - " '不弃不离开不在意 一路有多少风雨',\n", - " 'bù qì bù líkāi bù zàiyì yīlù yǒu duōshǎo fēngyǔ',\n", - " 'won’t abandon, won’t leave, won’t mind how much wind and rain there’ll be',\n", - " '就是爱你 爱着你',\n", - " 'jiùshì ài nǐ àizhe nǐ',\n", - " 'i just love you, loving you',\n", - " '放在你手心灿烂的幸福全给你',\n", - " 'fàng zài nǐ shǒuxīn cànlàn de xìngfú quán gěi nǐ',\n", - " 'i place all of the radiant happiness into the palm of your hands',\n", - " 'repeat *',\n", - " '**',\n", - " 'oh 就是爱你爱着你',\n", - " 'oh jiùshì ài nǐ àizhe nǐ',\n", - " 'oh i just love you, loving you',\n", - " '我都愿意',\n", - " 'wǒ dū yuànyì',\n", - " 'i’m fully willing',\n", - " '就是爱你 爱着你',\n", - " 'jiùshì ài nǐ àizhe nǐ',\n", - " 'i just love you, loving you',\n", - " '要我们在一起',\n", - " 'yào wǒmen zài yīqǐ',\n", - " 'i want us to be together',\n", - " 'repeat **',\n", - " 'sarangi eotteoke byeonhanayo',\n", - " 'geureoke swiungayo',\n", - " 'honja nameun naneun eotteokhajyo',\n", - " 'oh baby don’t leave me now',\n", - " 'dodaeche myeot beonina sarange apaya',\n", - " 'ppeonhan ibyeol ape nunmureul gamchulkka',\n", - " 'daeche eolmana deo chueok sogeul hemaeya',\n", - " 'hoksi neoreul bwado useo bol su isseulkka',\n", - " 'tto sumi makhyeo oneuldo ne ane gatyeo',\n", - " 'dasi eojecheoreom nega iksukhae jamsi kkumeul kkundeutae oh oh oh',\n", - " 'ma boo ma boo nan tto sideureoga',\n", - " 'haruharu beotil su eobseo break down',\n", - " 'jaljaraneun neoui hanmadi',\n", - " 'babeun meogeonnyago mutdeon neoui mesiji',\n", - " 'ajuaju',\n", - " 'jageun ilsangdeuri ibyeol ape deo apa',\n", - " 'sarangi eotteoke byeonhanayo',\n", - " 'geureoke swiungayo',\n", - " 'honja nameun naneun eotteokhajyo',\n", - " 'oh baby don’t leave me now',\n", - " 'sarangiran geojitmare ttodasi nan soga',\n", - " 'dalkomhaetdeon ne ipsure babocheoreom noga',\n", - " 'nega neomu joha nae jasineul noha',\n", - " 'apeumiran seome honja gatyeobeorin goa',\n", - " 'norael bulleobwado jeulgeopjiga anha',\n", - " 'jip ap golmokgildo waenji iksukhaji anha',\n", - " 'chingudeureul mannabwado useojijil anha',\n", - " 'ajik nege motan mari neomu manha',\n", - " 'ma boo ma boo nan tto sideureoga',\n", - " 'haruharu beotil su eobseo break down',\n", - " 'ije waseo nuga nugul tatae geurae',\n", - " 'jungne sane saranghaedo da ttokgata',\n", - " 'modu modu',\n", - " 'heunhan ibyeolloraecheoreom gyeolguk ichyeojil geoya',\n", - " 'sarangi eotteoke byeonhanayo',\n", - " 'geureoke swiungayo',\n", - " 'honja nameun naneun eotteokhajyo',\n", - " 'oh baby don’t leave me now',\n", - " 'na yeogi itjanha apahajanha neobakke eobtjanha',\n", - " 'anin cheok ganghan cheok aesseobwado neoppunijanha',\n", - " 'ma boo na boo nan tto sideureoga',\n", - " 'haruharu beotil su eobseo break down',\n", - " 'ije waseo nuga nugul tatae geurae',\n", - " 'jungne sane saranghaedo da ttokgata',\n", - " 'modu modu',\n", - " 'heunhan ibyeolloraecheoreom gyeolguk ichyeojil geoya',\n", - " 'nae mami eotteoke ireolkkayo',\n", - " 'ireoke apeulkkayo',\n", - " 'nareul dugo tteonagaji mayo',\n", - " 'nal beoriji marayo',\n", - " 'sarangi eotteoke byeonhanayo',\n", - " '( no way)',\n", - " 'geureoke swiungayo',\n", - " '( naege daedaphaejwo baby tell me why)',\n", - " 'honja nameun naneun eotteokhajyo',\n", - " '( eotteokhajyo)',\n", - " 'oh baby don’t leave me now',\n", - " '( naege dorawa)',\n", - " 'tumi tole tole tempu chalao, ami korle hortal',\n", - " 'ami korle hortal bhaiya, ami korle hortal',\n", - " 'shudhu daane baame ghorao deikha, tita holo premer jhaal',\n", - " 'tita holo premer jhaal bhaiya, tita holo premer jhaal',\n", - " 'o re fulkoli re fulkoli, fool banaiya koi geli?',\n", - " 'uradhura dukher achor jhikimiki jole',\n", - " 'chokhete dhula diya, borolok korla biya',\n", - " 'ei jala to mitaabo ami, dj gaaner bass diya',\n", - " 'ar bolbo...',\n", - " 'aaj amar girlfriend er biya (iii)',\n", - " 'tumi tole tole vespa chalao, ami boshle chakka tal',\n", - " 'ami boshle chakka tal bhaiya, ami boshle chakka tal',\n", - " 'oi vespa tomar thelte thelte, khoisa geche jutar chhal',\n", - " 'khoisa geche jutar chhal bhaiya, khoisa geche jutar chhal',\n", - " 'o re fulkoli re fulkoli, fool banaiya koi geli?',\n", - " 'gondho paiya takar neshay, amay thuiya dour dili',\n", - " 'chokhete dhula diya, borolok korla biya',\n", - " 'ei jala to mitaabo ami, dj gaaner bass diya',\n", - " 'ar bolbo...',\n", - " 'aaj amar girlfriend er biya (iii)',\n", - " 'tumi tole tole tempu chalao, ami korle hortal',\n", - " 'ami korle hortal bhaiya, ami korle hortal',\n", - " 'tumi tole tole vespa chalao, ami boshle chakka tal',\n", - " 'ami boshle chakka tal bhaiya, ami boshle chakka tal',\n", - " 'tumi tole tole tempu chalao, shudhu dane bame ghorao deikha',\n", - " 'tumi tole tole vespa chalao, oi vespa tomar thelte thelte',\n", - " 'aaj amar girlfriend er biya']}}},\n", - " 'vi': {'sentence': {'pop': {'meta': {'train_data': ['ata',\n", - " 'tta',\n", - " 'ta',\n", - " 'ca',\n", - " 'ga',\n", - " 'tt',\n", - " 'ca',\n", - " 'ca',\n", - " 'tt',\n", - " 'ca',\n", - " 'gtc',\n", - " 'ct',\n", - " 'ca',\n", - " 'gc',\n", - " 'aa',\n", - " 'at',\n", - " 'ga',\n", - " 'ag',\n", - " 'ggc',\n", - " 'tc',\n", - " 'at',\n", - " 'tt',\n", - " 'ttc',\n", - " 'ac',\n", - " 'tct',\n", - " 't',\n", - " 'ttt',\n", - " 'ta',\n", - " 'tt',\n", - " 'ct',\n", - " 'tg',\n", - " 'tc',\n", - " 'cta',\n", - " 'tt',\n", - " 't',\n", - " 'ca',\n", - " 'ga',\n", - " 'ag',\n", - " 'tg',\n", - " 'cc',\n", - " 'gga',\n", - " 'gc',\n", - " 'aa',\n", - " 'gg',\n", - " 'ag',\n", - " 'tc',\n", - " 'tgt',\n", - " 'ga',\n", - " 'gac',\n", - " 'tc',\n", - " 't',\n", - " 'tg',\n", - " 'tgg',\n", - " 'gc',\n", - " 'ta',\n", - " 't',\n", - " 'ta',\n", - " 'ca',\n", - " 'ta',\n", - " 'ccg',\n", - " 'ct',\n", - " 'tct',\n", - " 'gt',\n", - " 'gct',\n", - " 'tc',\n", - " 'cc',\n", - " 'gt',\n", - " 'gga',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 'ata',\n", - " 'tta',\n", - " 'ta',\n", - " 'ca',\n", - " 'ga',\n", - " 'tt',\n", - " 'ca',\n", - " 'ca',\n", - " 'tt',\n", - " 'ca',\n", - " 'gtc',\n", - " 'ct',\n", - " 'ca',\n", - " 'gc',\n", - " 'aa',\n", - " 'at',\n", - " 'ga',\n", - " 'ag',\n", - " 'ggc',\n", - " 'tc',\n", - " 'at',\n", - " 'tt',\n", - " 'ttc',\n", - " 'ac',\n", - " 'tct',\n", - " 't',\n", - " 'ttt',\n", - " 'ta',\n", - " 'tt',\n", - " 'ct',\n", - " 'tg',\n", - " 'tc',\n", - " 'cta',\n", - " 'tt',\n", - " 't',\n", - " 'ca',\n", - " 'ga',\n", - " 'ag',\n", - " 'tg',\n", - " 'cc',\n", - " 'gga',\n", - " 'gc',\n", - " 'aa',\n", - " 'gg',\n", - " 'ag',\n", - " 'tc',\n", - " 'tgt',\n", - " 'ga',\n", - " 'gac',\n", - " 'tc',\n", - " 't',\n", - " 'tg',\n", - " 'tgg',\n", - " 'gc',\n", - " 'ta',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " 't',\n", - " \"bârî 'n nidir nê\",\n", - " 'dir nênâkham',\n", - " 'nêbâbîtham ma',\n", - " 'gâna nanê',\n", - " 'nêtab dâur',\n", - " 'nêbâbîtham ma',\n", - " 'gâna katha',\n", - " \"bârî 'n îdô nêd\",\n", - " 'i cemen nurrua',\n", - " 'ar i súre, i súre nai, nain',\n", - " '\"baïlèro, lèro, lèro!',\n", - " \"pastre, de dèlaï l'aïo!\",\n", - " 'baïlèro, lèro, lèro!',\n", - " 'pastre, de dèlaï l’aïo!',\n", - " \"as pas vist posa lo lèbré qu'onavo mèdré\",\n", - " 'lou bouon entré los combos dé do bon',\n", - " 'lou coudie entré los combos dé dorriè',\n", - " \"lou poumpo sú l'esquino\",\n", - " 'lo claù ol tráu',\n", - " 'lou baïlèro, lèro!',\n", - " 'lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro',\n", - " 'baïlèro lô!\"',\n", - " '\"aï fa maï qué lou béïré',\n", - " 'possa qué l’aï ottropat',\n", - " 'lou baïlèro, lèro!',\n", - " 'lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro',\n", - " 'baïlèro lô!\"',\n", - " '\"baïlèro, lèro, lèro!',\n", - " \"pastre, de dèlaï l'aïo!\",\n", - " 'baïlèro, lèro, lèro!',\n", - " \"pastre, de dèlaï l'aïo!\",\n", - " \"e du qu'as fat de lo pèl?\",\n", - " \"de qu'as fat de las oùrilhas?\",\n", - " \"e qu'as fat de lo quió?\",\n", - " \"de qu'as fat de tout oquó?\",\n", - " 'dió, lou baïlèro, lèro?',\n", - " 'lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro',\n", - " 'baïlèro lô!\"',\n", - " '\"de lo pèl n\\'aï fat un montel!',\n", - " 'de las oúrilhas n’ai fat un porel de mithos!',\n", - " '\"e de lo quió uno troumpetto!',\n", - " 'sé les mé vouós croumpa',\n", - " 'tè les pourtoraï',\n", - " 'dió, lou baïlèro, lèro?',\n", - " 'lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro, lèro',\n", - " 'baïlèro lô!\"',\n", - " \"bârî'n katharâd\",\n", - " 'îdô nidir nêd',\n", - " 'nêpâm nêd abârat',\n", - " '(ni)dir nênâkham',\n", - " 'nêbâbîtham',\n", - " 'magânanê',\n", - " 'nêtabdam dâur',\n", - " 'walking on the golden fallen leaves',\n", - " 'in red blaze of the autumn sun',\n", - " 'you clung to false threads of hope',\n", - " 'in the kingdom of writhed trees',\n", - " 'you disturbed the peace of a dead place',\n", - " \"where birds' songs died down in dry trunks\",\n", - " 'you came to know the old mystery',\n", - " 'the story of two guiltless girls',\n", - " 'tongues of flame licked their bodies',\n", - " 'to the scorn of exultant crowd',\n", - " 'they were faggoted on suspicion',\n", - " 'of witchcraft and lesbian sex',\n", - " 'and then the forest sheltered their souls',\n", - " 'flying, whispering and luring',\n", - " 'damned haunt of deep melancholy',\n", - " 'the cradle of illusive quiet',\n", - " 'íà ïîëÿíå èç áåëîãî ìðàìîðà',\n", - " 'â êðóãó ÷åðíûõ ãîðÿùèõ ñâå÷åé',\n", - " 'òû ñòîëêíóëñÿ ñ äâóìÿ îáíàæåííûìè äàìàìè',\n", - " 'îòðàçèâøèñü âî âçãëÿäå èõ òîìíûõ î÷åé',\n", - " 'î, ãàëåðåÿ äüÿâîëüñêîé ïðåëåñòè',\n", - " 'óâåðòþðà ðàçäâèíóòûõ íîã',\n", - " 'íàñìîòðåâøèñü êàê øëþõè ëàñêàþò äðóã äðóãà',\n", - " 'óñòîÿòü ïðåä ñîáëàçíîì òû ïðîñòî íå ñìîã!',\n", - " 'you joined their tight embrace',\n", - " 'which begot a sharp blade',\n", - " 'they offered it to you',\n", - " 'and you accepted the gift of death',\n", - " 'it easily got into the flesh',\n", - " 'shedding your warm red blood',\n", - " 'on their perfect silk skin',\n", - " 'your fell to their feet on the smooth marble',\n", - " 'òàéíà…',\n", - " 'è ëèøü øåï÷óùèé ëåñ äà íî÷íîå íåáî çíàþò ïðàâäó îá ýòîì',\n", - " 'hey layê layê layê',\n", - " 'korpey şirinem layê',\n", - " 'hey layê layê layê',\n", - " 'korpey şirinem layê',\n", - " 'laylay nemâmî jiyânem',\n", - " 'men wêney baxewanem',\n", - " 'be del çâwdêret dekem',\n", - " 'bxwe derdet le giyanem',\n", - " 'bxwe derdet le giyanem',\n", - " 'hey layê layê layê',\n", - " 'korpey şirinem layê',\n", - " 'bnwe tako sebeynê',\n", - " 'mezhdey âwâtem dênê',\n", - " 'ey berxoley şirinem',\n", - " 'âwâtî hemû jinem',\n", - " 'şewî târik nâmênê',\n", - " 'tişkey roj dête serê',\n", - " 'tişkey roj dête serê',\n", - " 'hey layê layê layê',\n", - " 'korpey şirinem layê',\n", - " 'bnwe aso rônage',\n", - " 'dyâre wek roj rônage',\n", - " 'laylay nemâmî jiyânem',\n", - " 'men wêney baxewanem',\n", - " 'be del çâwdêret dekem',\n", - " 'bxwe derdet le giyanem',\n", - " 'bxwe derdet le giyanem',\n", - " 'hey layê layê layê',\n", - " 'korpey şirinem layê',\n", - " 'xozge sed xozkây bxayê',\n", - " 'dâykê to lêre bwâyê',\n", - " 'xozge sed xozkây bxayê',\n", - " 'dâykê to lêre bwâyê',\n", - " 'hey layê layê layê',\n", - " 'korpey şirinem layê',\n", - " 'hey layê layê layê',\n", - " 'korpey şirinem layê',\n", - " 'kai kairos',\n", - " '(ecclesiastes 3, 1-8)',\n", - " 'toìs pàsi ho chrònos',\n", - " 'kaì kairòs',\n", - " 'to pantì pràgmati hypò ton uranòn',\n", - " 'kai kairòs',\n", - " 'kai kairòs',\n", - " 'tou tekeìn, tou apothaneìn',\n", - " 'tou phyteùsai, tou ektìlai to pefyteumènon',\n", - " 'kai kairòs, kai kairòs',\n", - " 'tou apokteìnai, tou iàsasthai',\n", - " 'tou kathelìn, tou oikodomeìn',\n", - " 'tou klaùsai, tou gelàsai',\n", - " 'tou kòpsasthai, tou orhèsasthai',\n", - " 'kai kairòs',\n", - " 'kai kairòs',\n", - " 'tou baleìn lìthous, tou synagageìn lìthous',\n", - " 'tou zetèsai, tou apolèsai',\n", - " 'tou phylàxai, tou ekbaleìn',\n", - " 'kai kairòs',\n", - " 'kai kairòs',\n", - " 'tou rèxai, tou pàpsai',\n", - " 'tou sigàn, tou laleìn',\n", - " 'tou philèsai, tou misèsai',\n", - " 'kairòs polèmou, kairòs eirènes…',\n", - " 'kai kairòs, kai kairòs…',\n", - " '(joan jett/kim fowley)',\n", - " 'ah',\n", - " 'cherry bomb',\n", - " 'cherry bomb',\n", - " 'ah',\n", - " 'cherry bomb',\n", - " 'ah',\n", - " 'cherry bomb',\n", - " 'cherry bomb',\n", - " 'cherry bomb',\n", - " 'cherry bomb',\n", - " 'cherry bomb',\n", - " 'cherry bomb',\n", - " 'cherry bomb']},\n", - " 'data': ['man',\n", - " 'ammen toltha i dann hen morn',\n", - " 'si',\n", - " 'danna-tha nauva',\n", - " 'nênâ-',\n", - " 'kham nêpâm',\n", - " 'abârat-',\n", - " 'aglar',\n", - " 'nêbâ(bîthâm)',\n", - " 'katharâd',\n", - " 'nidir',\n", - " 'nênâ',\n", - " 'nêbâbîthâm (dâ)ur',\n", - " 'nênâ-',\n", - " 'kham nêpâm',\n", - " 'abârat-',\n", - " 'aglar',\n", - " 'tercáno',\n", - " 'nuruva',\n", - " 'tinúviel elvanui',\n", - " 'elleth alfirin',\n", - " \"bârî'n katharâd\",\n", - " 'îdô khamnêpâm',\n", - " 'nênâ khamnêpâm',\n", - " '(a)bârat-aglar',\n", - " 'nêbâ katharâd',\n", - " 'nidir nênâ',\n", - " 'nêbâbîtham dâur',\n", - " 'what grace has given me, let it pass to him',\n", - " 'let him be spared',\n", - " 'mighty valar, save him',\n", - " 'nêbâbi(tham)',\n", - " '(nêbâbi)tham magânanê',\n", - " 'nêtabdam dâur-ad',\n", - " 'nê(pâm)',\n", - " '(nê)pâm nêd abârat aglar',\n", - " '(nên)âkham']}}},\n", - " 'xh': {'sentence': {'pop': {'meta': {'train_data': ['siduda, siduda, imvula, imvula',\n", - " 'siduda, (emvuleni) siduda, (emvuleni) (we dance around in the rain)',\n", - " 'imvula, (ilungile imvula, (ilugile) (the rain is so good)',\n", - " 'uyaiyithanda (do you like it?)',\n", - " 'tumbling, crumbling, mumbling, pittering, pattering rain',\n", - " \"tit for tat, this 'n' that, copy cat, dancin' around in the rain\",\n", - " 'tumbling, crumbling, mumbling, pittering, pattering rain',\n", - " \"tit for tat, this 'n' that, copy cat\",\n", - " \"musa ukoyika (don't be afraid)\",\n", - " 'gugula, ungaya, iindudumo, kukugalel, kugalel',\n", - " 'ilungile (it is pouring thundering)',\n", - " '(vuka sizwe, vuka sizwe)',\n", - " '(vuka sizwe, vuka sizwe)',\n", - " '(vuka sizwe, vuka sizwe)',\n", - " 'sikelela',\n", - " 'sikelela',\n", - " 'sikelela',\n", - " 'sikelela',\n", - " 'kune ntsikelelo emvhakwentaba, bo',\n", - " 'kune ntsikelelo emvhakwentaba, we ma',\n", - " 'kune ntsikelelo emvhakwentaba, bo',\n", - " 'kune ntsikelelo emvhakwentaba, we ma',\n", - " 'emvhakwentaba, bo',\n", - " 'emvhakwentaba, bo',\n", - " 'emvhakwentaba, bo',\n", - " 'emvhakwentaba, bo',\n", - " '(vuka sizwe, vuka sizwe)',\n", - " '(vuka sizwe, vuka sizwe)',\n", - " '(vuka sizwe, vuka sizwe)',\n", - " 'sikelela',\n", - " 'sikelela',\n", - " 'sikelela',\n", - " 'sikelela',\n", - " 'kune ntsikelelo emvhakwentaba, bo',\n", - " 'kune ntsikelelo emvhakwentaba, we ma',\n", - " 'kune ntsikelelo emvhakwentaba, bo',\n", - " 'kune ntsikelelo emvhakwentaba, we ma',\n", - " 'emvhakwentaba, bo',\n", - " 'emvhakwentaba, bo',\n", - " 'emvhakwentaba, bo',\n", - " 'emvhakwentaba, bo',\n", - " 'sikelela',\n", - " 'sikelela',\n", - " 'sikelela',\n", - " 'change my pitch up',\n", - " 'smack my bitch up',\n", - " 'change my pitch up',\n", - " 'smack my bitch up',\n", - " 'change my pitch up',\n", - " 'smack my bitch up',\n", - " 'change my pitch up',\n", - " 'smack my bitch up',\n", - " 'smack my bitch up',\n", - " 'eaaaheeyheeaheyyyee',\n", - " 'aaahaaahaaaaaaaaaaahha',\n", - " 'eaaaheeyheeaheyyyee',\n", - " 'aaahhaaaaa',\n", - " 'aaahhaaaaaaaaaaaaaaaaaaa',\n", - " 'aaaaaaaaaaaaaaaaaaaaaaaa',\n", - " 'aaaaaaaaaaaaaaaaaaaaaaaa',\n", - " 'smack my bitch up',\n", - " 'change my pitch up',\n", - " 'smack my bitch up',\n", - " 'change my pitch up',\n", - " 'smack my bitch up',\n", - " 'mmmmh oh...',\n", - " \"inton' undenza nje?\",\n", - " 'yandazi ndiyoyika',\n", - " 'uthando olungaka hey, mmmh',\n", - " 'andilwazi mna',\n", - " \"ndlela ond'jonga ngayo\",\n", - " 'yandibuka mna baby',\n", - " 'cupid is your name yeah, mmmh',\n", - " \"and i don't care what they say\",\n", - " \"und'thanda everyday yey yey\",\n", - " 'everyday yey yey',\n", - " \"nd'yakubona xa undijonga mna\",\n", - " 'everyday hee hee hee hee hey',\n", - " 'whoo, everyday yey yey',\n", - " 'everyday yey yey',\n", - " 'yandibuka mna baby',\n", - " 'everyday hee hee hee hee hey',\n", - " 'i love the way you love me',\n", - " 'i love the way you love me',\n", - " 'i love the way you love me',\n", - " 'mmm, ooh',\n", - " \"yan'mangaza mna\",\n", - " \"uyithathaphi intliziyw' enjena?\",\n", - " 'ooh whooa whooah',\n", - " \"i've never seen a love like this before\",\n", - " \"und'thanda ngomvulo\",\n", - " 'nangolwesibini',\n", - " 'nangolwesithathu',\n", - " 'ngolwesine',\n", - " \"n'lwesihlanu\",\n", - " 'nangomgqibelo',\n", - " 'ngecawa baby hey yey',\n", - " 'everyday hee hee hee hee hey',\n", - " 'you love me everyday (everyday hey)',\n", - " \"i've never seen love like this before (woooo wooo wooo)\",\n", - " 'wooo, mmh',\n", - " \"ooh, uyand'thanda baby (everyday hey)\",\n", - " \"zonk' insuku zobomi bami\",\n", - " \"i love the way you love me (nd'yawathanda amathandw' akho)\",\n", - " \"i love the way you love me (nd'yawafuna amathandw'akho)\",\n", - " \"i love the way you love me (nd'yawathanda amathandw'akho)\",\n", - " 'mmm, uww',\n", - " \"i love the way you love me (nd'yawafuna amathandw'akho)\",\n", - " \"i love the way you love me (nd'yawathanda amathandw'akho)\",\n", - " 'i love the way you love me',\n", - " 'mmm',\n", - " \"i love the way you love me (nd'yawathanda amathandw' akho)\",\n", - " \"i love the way you love me (nd'yawafuna amathandw'akho)\",\n", - " \"i love the way you love me (nd'yawathanda amathandw'akho)\",\n", - " 'mmm',\n", - " 'anol shalom',\n", - " 'anol sheh lay konnud de ne um (shaddai)',\n", - " 'flavum',\n", - " 'nom de leesh',\n", - " 'ham de nam um das',\n", - " 'la um de',\n", - " 'flavne...',\n", - " 'we de ze zu bu',\n", - " 'we de sooo a ru',\n", - " 'un va-a pesh a lay',\n", - " 'un vi-i bee',\n", - " 'un da la pech ni sa',\n", - " '(aaahh)',\n", - " 'un di-i lay na day',\n", - " 'un ma la pech a nay',\n", - " 'mee di nu ku',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'anol shalom',\n", - " 'anol sheh ley kon-nud de ne um',\n", - " 'flavum',\n", - " 'flavum',\n", - " 'm-ai shondol-lee',\n", - " 'flavu... {live on...}',\n", - " 'lof flesh lay',\n", - " 'nof ne',\n", - " 'nom de lis',\n", - " 'ham de num um dass',\n", - " 'la um de',\n", - " 'flavne..',\n", - " 'flay',\n", - " 'shom de nomm',\n", - " 'ma-lun des',\n", - " 'dwondi',\n", - " 'dwwoondi',\n", - " 'alas sharum du koos',\n", - " 'shaley koot-tum',\n", - " 'anol shalom',\n", - " 'anol sheh lay konnud de ne um {shaddai',\n", - " 'flavum',\n", - " 'nom de leesh',\n", - " 'ham de nam um das',\n", - " 'la um de',\n", - " 'flavne',\n", - " 'we de ze zu bu',\n", - " 'we de sooo a ru',\n", - " 'un va-a pesh a lay',\n", - " 'un vi-i bee',\n", - " 'un da la pech ni sa',\n", - " 'un di-i lay na day',\n", - " 'un ma la pech a nay',\n", - " 'mee di nu ku',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'anol shalom',\n", - " 'anol sheh ley kon-nud de ne um',\n", - " 'flavum',\n", - " 'flavum',\n", - " 'm-ai shondol-lee',\n", - " 'flavu',\n", - " 'lof flesh lay',\n", - " 'nof ne',\n", - " 'nom de lis',\n", - " 'ham de num um dass',\n", - " 'la um de',\n", - " 'flavne',\n", - " 'flay',\n", - " 'shom de nomm',\n", - " 'ma-lun des',\n", - " 'dwondi',\n", - " 'dwwoondi',\n", - " 'alas sharum du koos',\n", - " 'shaley koot-tum',\n", - " 'paroles de la chanson baaich ala hissak :',\n", - " \"baa'esh a'ala hesak\",\n", - " \"mestanyaak kont badwar a'aleek\",\n", - " \"mestanyaak bhlm maa' nafsy beek\",\n", - " 'mestanyaak leeh etakhart leeh',\n", - " 'arab kaman da hanaan el donia beek',\n", - " \"hawnt a'alia el donia habeeby\",\n", - " \"wana etamnt ma'ak\",\n", - " \"we ba'eesh a'ala hessak tany ya a'omry\",\n", - " \"we a'omry mabaash wayak\",\n", - " 'mabatshy bakhaaf mn haga',\n", - " 'we mesh mehtaga habeeb khalas',\n", - " 'lao ablak raht mnny hagat',\n", - " \"bya'awad nary hawak\",\n", - " \"hawnt a'alia el donia habeeby\",\n", - " \"wana etamnt ma'ak\",\n", - " \"we ba'eesh a'ala hessak tany ya a'omry\",\n", - " \"we a'omry mabaash wayak\",\n", - " 'mabatshy bakhaaf mn haga',\n", - " 'we mesh mehtaga habeeb khalas',\n", - " 'lao ablak raht mnny hagat',\n", - " \"bya'awad nary hawak\",\n", - " 'ana shoft feek ahlam mashofthaash',\n", - " \"we a'rft beek ayam maa'rfthaash\",\n", - " 'ana been edeek',\n", - " 'ana sayba nafsy leek',\n", - " 'ganbak aman we hanan el donia feek',\n", - " \"hawnt a'alia el donia habeeby\",\n", - " \"wana etamnt ma'ak\",\n", - " \"we ba'eesh a'ala hessak tany ya a'omry\",\n", - " \"we a'omry mabaash wayak\",\n", - " 'mabatshy bakhaaf mn haga',\n", - " 'we mesh mehtaga habeeb khalas',\n", - " 'lao ablak raht mnny hagat',\n", - " \"bya'awad nary hawak\",\n", - " 'anol shalom',\n", - " 'anol sheh lay konnud de ne um',\n", - " 'flavum',\n", - " 'nom de leesh',\n", - " 'ham de nam um das',\n", - " 'la um de',\n", - " 'flavne...',\n", - " 'we de ze zu bu',\n", - " 'we de sooo a ru',\n", - " 'un va-a pesh a lay',\n", - " 'un vi-i bee',\n", - " 'un da la pech ni sa',\n", - " 'un di-i lay na day',\n", - " 'un ma la pech a nay',\n", - " 'mee di nu ku',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'anol shalom',\n", - " 'anol sheh ley kon-nud de ne um',\n", - " 'flavum',\n", - " 'flavum',\n", - " 'm-ai shondol-lee',\n", - " 'flavum',\n", - " 'lof flesh lay',\n", - " 'nof ne',\n", - " 'nom de lis',\n", - " 'ham de num um dass',\n", - " 'la um de',\n", - " 'flavne',\n", - " 'flay',\n", - " 'shom de nomm',\n", - " 'ma-lun des',\n", - " 'dwondi',\n", - " 'dwwoondi',\n", - " 'alas sharum du koos',\n", - " 'shaley koot-tum',\n", - " 'we de ze zu bu',\n", - " 'we de sooo a ru',\n", - " 'un va-a pesh a lay',\n", - " 'un vi-i bee',\n", - " 'un da la pech ni sa',\n", - " '(aaahh)',\n", - " 'un di-i lay na day',\n", - " 'un ma la pech a nay',\n", - " 'mee di nu ku',\n", - " 'nalingi namona yo na miso',\n", - " 'nalingi namona yo na miso',\n", - " 'but we are world away',\n", - " 'yes, we are world away',\n", - " 'nataka kuku kumbatiya alakini siwezi',\n", - " 'nataka kuku kumbatiya alakini siwezi',\n", - " 'cuz we are world away',\n", - " 'yes, we are world away',\n", - " 'nina ucungu sana yakuwa mbali na wewe',\n", - " 'nina ucungu sana yakuwa mbali na wewe',\n", - " 'because we are world away',\n", - " 'because we are world away',\n", - " 'nalingi namona yo na miso',\n", - " 'nalingi namona yo na miso',\n", - " 'but we are world away',\n", - " 'yes, we are world away',\n", - " 'take me by the hand',\n", - " 'show me the way i can go',\n", - " 'take me by the hand',\n", - " 'show me the way',\n", - " 'ngaï nabungi nzéla',\n", - " 'mpo botikaki ngaï mosika',\n", - " 'yango nakomaki sé mitélengano',\n", - " 'koko lakisa ngaï nzela',\n", - " 'ndenge nini ngaï, baninga',\n", - " 'nakobunga nzéla ya bomoï',\n", - " 'po bato ya mokili mabé',\n", - " 'baboyi ngaï nazua lobiko',\n", - " 'take me by the hand',\n", - " 'show me the way i can go',\n", - " 'take me by the hand',\n", - " 'show me the way',\n", - " 'take me by the hand',\n", - " 'show me the way i can go',\n", - " 'take me by the hand',\n", - " 'show me...',\n", - " 'mbotama ya muana na tongo',\n", - " 'moyi ekomi tango ya kosakana',\n", - " 'butu eyinda, sango ya mawa',\n", - " 'mboka mobimba ekolela',\n", - " 'ndenge nini ngaï, baninga',\n", - " 'nakoluka nzéla ya bomoï',\n", - " 'po bato ya mokili mabé',\n", - " 'baboyi ngaï nazua lobiko',\n", - " 'take me by the hand',\n", - " 'show me the way i can go',\n", - " 'take me by the hand',\n", - " 'show me the way',\n", - " 'take me by the hand',\n", - " 'show me the way i can go',\n", - " 'take me by the hand',\n", - " 'show me',\n", - " 'take me by the hand',\n", - " 'show me the way i can go',\n", - " 'take me by the hand',\n", - " 'show me the way',\n", - " 'take me by the hand',\n", - " 'show me the way i can go',\n", - " 'take me by the hand',\n", - " 'show me',\n", - " 'take me by the hand',\n", - " 'show me the way i can go',\n", - " 'take me by the hand',\n", - " 'show me the way',\n", - " 'take me by the hand',\n", - " 'show me the way i can go',\n", - " 'take me by the hand',\n", - " 'show me',\n", - " 'take me by the hand (baboyi)',\n", - " 'show me the way i can go (eyinda)',\n", - " 'take me by the hand (nga yo, nga yo, nga yo, nga yo, nga yo, nga yo, mwana mama)',\n", - " 'show me the way',\n", - " 'take me by the hand (papa)',\n", - " 'show me the way i can go',\n", - " 'take me by the hand (nga yo)',\n", - " 'show me',\n", - " 'take me by the hand (ngaï, naweï)',\n", - " 'show me the way i can go (nalela)',\n", - " 'take me by the hand',\n", - " 'show me the way',\n", - " 'take me by the hand',\n", - " 'show me the way i can go',\n", - " 'take me by the hand',\n", - " 'show me',\n", - " 'anol shalom',\n", - " 'anol sheh lay konnud de ne um (shaddai)',\n", - " 'flavum',\n", - " 'nom de leesh',\n", - " 'ham de nam um das',\n", - " 'la um de',\n", - " 'flavne',\n", - " 'we de ze zu bu',\n", - " 'we de sooo a ru',\n", - " 'un va-a pesh a lay',\n", - " 'un vi-i bee',\n", - " 'un da la pech ni sa',\n", - " '(aaahh)',\n", - " 'un di-i lay na day',\n", - " 'un ma la pech a nay',\n", - " 'mee di nu ku',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'anol shalom',\n", - " 'anol sheh ley kon-nud de ne um',\n", - " 'flavum',\n", - " 'flavum',\n", - " 'm-ai shondol-lee',\n", - " 'flavu (live on)',\n", - " 'lof flesh lay',\n", - " 'nof ne',\n", - " 'nom de lis',\n", - " 'ham de num um dass',\n", - " 'la um de',\n", - " 'flavne',\n", - " 'flay',\n", - " 'shom de nomm',\n", - " 'ma-lun des',\n", - " 'dwondi',\n", - " 'dwwoondi',\n", - " 'alas sharum du koos',\n", - " 'shaley koot-tum',\n", - " 'ndihambile, ndibonile',\n", - " '(i have walked, i have seen)',\n", - " 'bandixelele bandinikile',\n", - " '(they told me, they gave me)',\n", - " 'ndingafunanga ndingabuzanga',\n", - " '(i did not want,i did not ask)',\n", - " 'ndiza ndiza',\n", - " '(i will come, i will come)',\n", - " \"ndizaw'buya ndikuphathel'ntliziyo yam\",\n", - " '(i will come back, bringing you my heart)',\n", - " 'uzuyenze msulwa yona',\n", - " '(make it pure)',\n", - " \"ndizam'kucinga aha\",\n", - " \"(i'm trying to think)\",\n", - " 'ndiyahluleka aha',\n", - " \"(i'm failing)\",\n", - " 'ingqondo yam, iyakhawuleza',\n", - " '(my mind is wondering)',\n", - " 'kuyehla kuyasa',\n", - " '(from sunset till dawn)',\n", - " 'kum uyafana',\n", - " \"(i'm still the same)\",\n", - " 'ndonakele hee',\n", - " \"(i'm ruined)\",\n", - " 'the glory outweighs the suffering',\n", - " 'the glory outweighs the long story',\n", - " 'the glory, the joy outweighs the suffering',\n", - " 'put it on a scale',\n", - " 'it is nothing to be compared to what you are expecting',\n", - " 'to what go is preparing for those who love him\\\\',\n", - " 'eyes have not seen, ears have not heard',\n", - " 'nor has it entered into the hearts of man',\n", - " \"xa ndizinikela ndishiy'ubumnyama\",\n", - " 'ngoba zenzo zezandla zami',\n", - " 'zake zandijikela',\n", - " 'ndifuna wena uyazi',\n", - " 'ubuyinto yonke kum',\n", - " 'ungamandla ububomi bam',\n", - " 'hlala bufuphi nami',\n", - " \"ubamb'umoya wami\",\n", - " 'wena, wena, ndithembe wena',\n", - " \"indlel'ohambha ngayo\",\n", - " 'o thetha ngayo',\n", - " 'o hleka ngayo',\n", - " 'mmm, ucumo lwakho',\n", - " \"he's my african man\",\n", - " \"nob' unobeka idayimane phambi kwami\",\n", - " \"uth'angikhethe\",\n", - " 'ndihambha nawe oh ndihambha nawe',\n", - " \"kwaze kwa'lula ukukuthanda\",\n", - " \"you're so easy to love\",\n", - " \"kwaze kwa'lula ukukuthanda\",\n", - " \"you're so easy to love\",\n", - " \"kwaze kwa'lula ukukuthanda\",\n", - " \"you're so easy to love\",\n", - " \"kwaze kwa'lula ukukuthanda\",\n", - " \"you're so easy to love\",\n", - " \"he's my african man\",\n", - " 'love….love',\n", - " \"he's my african man\",\n", - " 'love….love',\n", - " \"now that's a turn on\",\n", - " 'love….love',\n", - " 'indoda ecikiziweyo, ezithembileyo',\n", - " 'ehlonipha masiko with no compromise',\n", - " 'sonke siyazi',\n", - " \"now that's a turn on\",\n", - " \"nob' unobeka iferari phambi kwami uth'angikhethe\",\n", - " 'ndihambha nawe oh ndihamba nawe',\n", - " \"kwaze kwa'lula ukukuthanda\",\n", - " \"you're so easy to love\",\n", - " \"kwaze kwa'lula ukukuthanda\",\n", - " \"you're so easy to love\",\n", - " \"kwaze kwa'lula ukukuthanda\",\n", - " \"you're so easy to love\",\n", - " \"kwaze kwa'lula ukukuthanda\",\n", - " \"you're so easy to love\",\n", - " \"he's my african man\",\n", - " 'love….love',\n", - " \"he's my african man\",\n", - " 'love….love',\n", - " \"now that's a turn on\",\n", - " 'love….love',\n", - " '(oo chak-kah)',\n", - " 'a-khay-do, he cha-mo-neh-ya',\n", - " 'hey-ma kayo-maneh-hey',\n", - " 'sto-ma kaneh-teko-lunyeh',\n", - " 'ma-yu, nome-ga-ye-fe',\n", - " 'no-way-oh',\n", - " 'wayyy oh-wayyy-oh',\n", - " 'wayyy oh-way-oh',\n", - " 'way-ay-ay-oh wayyy-oh']},\n", - " 'data': ['ay, ay que',\n", - " 'no, no, no, ay, ay',\n", - " 'así, así, así, ay, ay',\n", - " 'suave, no, no, no,',\n", - " 'ah, mhh, mhh, ay, ay',\n", - " 'ay no, phh, mah, mah, mah',\n", - " '(heavy breathing)',\n", - " 'dime, dame, dime, ay',\n", - " 'no, no, no, no',\n", - " '(heavy male breathing)',\n", - " 'suave, suave, suave, suave',\n", - " 'di!',\n", - " 'ayyyyyy, ayyyyy, si, ay, ay, si, aya, yah',\n", - " '(male groaning)',\n", - " '(heavy male breathing)',\n", - " '(heavy both breathing)',\n", - " 'eish',\n", - " 'haha',\n", - " 'bathi midnight starring',\n", - " 'gqoshu',\n", - " 'destruction boyz',\n", - " 'woza maphorisa',\n", - " 'asambe ke',\n", - " 'ai. ai. ai ai. (x2)',\n", - " \"nob'unga nxib' inika-bok'\",\n", - " \"ndim' istarring\",\n", - " \"nob' unga faki pent' ene-lace\",\n", - " \"ndim' istarring\",\n", - " 'noba ungathi “brows on fleek”',\n", - " \"ndim' istarring\",\n", - " \"nob' ungamnika na next week\",\n", - " \"ndim' istarring\",\n", - " 'hamb’ otheza inkuni wena makoti!',\n", - " 'ke mna ke!',\n", - " 'ndizombambela apha endlin',\n", - " 'hamb’ otheza inkuni wena makoti!',\n", - " 'ke mna ke!',\n", - " 'ndizombambela apha endlin…',\n", - " 'ndizombambela, ndzombama ndizombambela',\n", - " 'ndzombama ndizombambela ndzombama',\n", - " 'ndizombambela apha endlin…',\n", - " 'ndizombambela, ndzombama ndizombambela',\n", - " 'ndzombama ndizombambela ndzombama',\n", - " 'ndizombambela apha endlin…(x2)',\n", - " \"nob'unga nxib' inika-bok'\",\n", - " \"ndim' istarring\",\n", - " \"nob' unga faki pent' ene-lace\",\n", - " \"ndim' istarring\",\n", - " 'noba ungathi “brows on fleek”',\n", - " \"ndim' istarring\",\n", - " \"nob' ungamnika na next week\",\n", - " \"ndim' istarring\",\n", - " 'yebo (yebo), yebo (yebo), yebo (yebo), yebo (yebo)',\n", - " 'yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo)',\n", - " 'ai. ai. ai ai. (x2)',\n", - " \"nob'unga nxib' inika-bok'\",\n", - " \"ndim' istarring\",\n", - " \"nob' unga faki pent' ene-lace\",\n", - " \"ndim' istarring\",\n", - " 'noba ungathi “brows on fleek”',\n", - " \"ndim' istarring\",\n", - " \"nob' ungamnika na next week\",\n", - " \"ndim' istarring\",\n", - " 'yini engathi sohamba ekuseni',\n", - " 'ngizwengathi khona into ethi',\n", - " 'qho, qho, qho!',\n", - " 'sya’groova, sya’groova, sya’groove',\n", - " 'askhathali',\n", - " '(kwenzenjani)',\n", - " 'les’gubh esivusa umakhe',\n", - " 'yini engathi sohamba ekuseni',\n", - " 'ngizwengathi khona into ethi',\n", - " 'qho, qho, qho!',\n", - " 'sya’groova, sya’groova, sya’groove',\n", - " 'askhathali',\n", - " '(kwenzenjani)',\n", - " 'les’gubh esivusa umakhe',\n", - " \"nob'unga nxib' inika-bok'\",\n", - " \"ndim' istarring\",\n", - " \"nob' unga faki pent' ene-lace\",\n", - " \"ndim' istarring\",\n", - " 'noba ungathi “brows on fleek”',\n", - " \"ndim' istarring\",\n", - " \"nob' ungamnika na next week\",\n", - " \"ndim' istarring\",\n", - " 'les’gubh esivusa umakhe',\n", - " 'yebo (yebo), yebo (yebo), yebo (yebo), yebo (yebo)',\n", - " 'yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo)',\n", - " 'i live on tree',\n", - " 'ubuza liphi',\n", - " 'besi planile',\n", - " 'ok, it was me',\n", - " 'i get so upset',\n", - " 'when you ignore my posts',\n", - " 'i like it when you like',\n", - " 'ndizbona ngingumfazi',\n", - " 'ndistalker your page',\n", - " 'nditypa, ndidelete',\n", - " 'ndibone uonline',\n", - " 'and then i bite my lip',\n", - " 'awundazi nokundazi',\n", - " 'i love you ndiyayazi',\n", - " 'u waster itime',\n", - " 'i inbox inumber',\n", - " 'please call future baby',\n", - " 'future maybe',\n", - " 'future wife',\n", - " 'please call future baby',\n", - " 'future maybe',\n", - " 'future wife',\n", - " '(les’gubh esivusa umakhe!)',\n", - " 'yebo (yebo), yebo (yebo), yebo (yebo), yebo (yebo)',\n", - " 'yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo)',\n", - " 'les-les’gubh',\n", - " 'shoutout to rudeboyz',\n", - " 'distruction boyz',\n", - " '(les’gubh esivusa umakhe!)',\n", - " 'yebo (yebo), yebo (yebo), yebo (yebo), yebo (yebo)',\n", - " 'yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo), yebo, ai (yebo)',\n", - " 'bathi midnight starring',\n", - " 'gqoshu',\n", - " 'destruction boyz',\n", - " 'woza maphorisa',\n", - " 'asambe ke',\n", - " 'aya ya yaya...',\n", - " 'aii ya ya ya heyy',\n", - " 'ohhhhh ma afrika',\n", - " 'wehma afrika masi hlanganeni',\n", - " 'sibemunye heeh aweh',\n", - " \"let's be united as a nation\",\n", - " \"let's come together as a nation\",\n", - " 'we are together we are united',\n", - " \"let's come together\",\n", - " 'ayyiii he wehma afrika',\n", - " 'ma afrika eyyy',\n", - " 'wehma afrika',\n", - " 'together',\n", - " 'si ngay yedza lento',\n", - " 'onelove one way',\n", - " 'that is the motto',\n", - " 'hey uvhuphi ubumthu',\n", - " 'munwe muthihi a u tusi mathuthu',\n", - " 'zwindzhi ri nga kona ra shuma rothe',\n", - " \"let's work together si pope sonke\",\n", - " 'hoza friday si jaive sonke',\n", - " 'hoza weekend si jaive futhi',\n", - " 'together',\n", - " 'si ngay yedza lento',\n", - " 'onelove one way',\n", - " 'that is the motto',\n", - " 'hey uvhuphi ubumthu',\n", - " 'munwe muthihi a u tusi mathuthu',\n", - " 'zwindzhi ri nga kona ra shuma rothe',\n", - " \"let's work together si pope sonke\",\n", - " 'hoza friday si jaive sonke',\n", - " 'hoza weekend si jaive futhi',\n", - " 'wehma afrika masi hlanganeni',\n", - " 'sibemunye heeh aweh',\n", - " \"let's be united as a nation\",\n", - " \"let's come together as a nation\",\n", - " 'we are together we are united',\n", - " 'wehma afrika masi hlanganeni',\n", - " 'sibemunye heeh aweh',\n", - " 'yea, yeah',\n", - " 'yea, yea, yea, yeah',\n", - " 'aah, ah',\n", - " 'ah',\n", - " \"cala kwam' ukumbona\",\n", - " 'yangathi ndiyamazi',\n", - " \"amehlo ami agqwal' uthando\",\n", - " \"inhliziyo yam' yagqwal' uvuyo\",\n", - " \"ndinovalo, it's crazy how i need you right now\",\n", - " 'how much i need you',\n", - " 'oh the things you do to me',\n", - " \"i can't explain it, i can't explain it\",\n", - " 's’owo l’ofe ni se’fe l’ofe ni',\n", - " \"i can't explain it, can't explain it\",\n", - " 'oh the things you do to me',\n", - " \"i can't explain it, i can't explain it\",\n", - " 's’owo l’ofe ni se’fe l’ofe ni',\n", - " \"i can't explain it, i can't explain it\",\n", - " 'what would you do for love?',\n", - " 'ungeza ntoni?',\n", - " 'what would you do for love?',\n", - " 'ungeza ntoni?',\n", - " 'be my lover, be my friend',\n", - " 'be my lover, stay with me, yeah',\n", - " 'what would you do for love?',\n", - " 'ungeza ntoni?',\n", - " 'what would you do for love?',\n", - " 'be my lover, be my friend',\n", - " 'be my lover, stay with me, yeah',\n", - " 'eh wo’le, ah wo’le',\n", - " 'je ko wo’le, ife re ba mo l’okan',\n", - " 'eh wo’le, ah wo’le',\n", - " 'je ko wo’le, ife re ji mi l’okan',\n", - " 'would you stay with me?',\n", - " 'ah my baby, oh love',\n", - " 'would you dance with me',\n", - " 'if you were my lady? oh girl',\n", - " 'what would you do for love?',\n", - " 'ungeza ntoni?',\n", - " 'what would you do for love?',\n", - " 'ungeza ntoni?',\n", - " 'be my lover, be my friend',\n", - " 'be my lover, stay with me, yeah',\n", - " 'what would you do for love?',\n", - " 'ungeza ntoni?',\n", - " 'what would you do for love?',\n", - " 'be my lover, be my friend',\n", - " 'be my lover, stay with me, yeah',\n", - " 'what would you do?',\n", - " 'ungeza ntoni?',\n", - " \"lufike luk'thathe uthando\",\n", - " 'ungezazi nawe',\n", - " 'kuqhubeka ntoni',\n", - " 'konke ndinokukwenzela kona',\n", - " 'konke ndinokunika kona',\n", - " 'konke ndinokukwenzela kona',\n", - " 'konke ndinokunika kona',\n", - " 'what would you do for love?',\n", - " 'ungeza ntoni?',\n", - " 'what would you do for love?',\n", - " 'ungeza ntoni?',\n", - " 'be my lover, be my friend',\n", - " 'be my lover, stay with me, yeah',\n", - " 'what would you do for love?',\n", - " 'ungeza ntoni?',\n", - " 'what would you do for love?',\n", - " 'be my lover, be my friend',\n", - " 'be my lover, stay with me, yeah',\n", - " 'eh wo’le, ah wo’le',\n", - " 'je ko wo’le, ife re ba mo l’okan',\n", - " 'eh wo’le, ah wo’le',\n", - " 'je ko wo’le, ife re ji mi l’okan',\n", - " 'la-la-la-la-la',\n", - " 'la-la-la-la-la-la',\n", - " 'la-la-la-la-la',\n", - " 'la',\n", - " 'ndiye kugqirha',\n", - " 'ndathi \"khangela intloko yam!',\n", - " \"ndinamaphupha, ndiphupha kak'bi gqirha wam\",\n", - " 'khangela nantsi intliziyo yam',\n", - " 'ndinamaphupha, ndiphupha kak\\'bi\"',\n", - " 'hela hela sithandwa sam!',\n", - " 'ngumadlamini luphambi kwakho',\n", - " \"ngujama s'jadu, fakade, ngxowonoboya!\",\n", - " 'hela hela sithandwa sam!',\n", - " '(i went to the doctor',\n", - " 'and said \"look into my head; i have terrible dreams…',\n", - " 'look into my heart; i have terrible dreams…\"',\n", - " 'hela hela my love!',\n", - " 'madlamini stands before you',\n", - " \"jama s'jadu, fakade, ngxowonoboya!\",\n", - " 'hela hela my love!)',\n", - " 'anol shalom',\n", - " 'anol sheh lay konnud de ne um (shaddai)',\n", - " 'flavum',\n", - " 'nom de leesh',\n", - " 'ham de nam um das',\n", - " 'la um de',\n", - " 'flavne...',\n", - " 'we de ze zu bu',\n", - " 'we de sooo a ru',\n", - " 'un va-a pesh a lay',\n", - " 'un vi-i bee',\n", - " 'un da la pech ni sa',\n", - " '(aaahh)',\n", - " 'un di-i lay na day',\n", - " 'un ma la pech a nay',\n", - " 'mee di nu ku',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'la la da pa da le na da na',\n", - " 've va da pa da le na la dumda',\n", - " 'anol shalom',\n", - " 'anol sheh ley kon-nud de ne um',\n", - " 'flavum',\n", - " 'flavum',\n", - " 'm-ai shondol-lee',\n", - " 'flavu... {live on...}',\n", - " 'lof flesh lay',\n", - " 'nof ne',\n", - " 'nom de lis',\n", - " 'ham de num um dass',\n", - " 'la um de',\n", - " 'flavne..',\n", - " 'flay',\n", - " 'shom de nomm',\n", - " 'ma-lun des',\n", - " 'dwondi',\n", - " 'dwwoondi',\n", - " 'alas sharum du koos',\n", - " 'shaley koot-tum']}}},\n", - " 'yo': {'sentence': {'non-music': {'meta': {'train_data': ['amudo nunchi mot chaegekkeum',\n", - " 'neoreul humchyeo boneun ge nae beoreusi doeeotgo',\n", - " 'gakkeum neowa nuni majuchil ttaemyeon',\n", - " 'amureochi anheun yeongil haneun baeuga doeeosseo',\n", - " 'action, daetteum neoege gaseo',\n", - " 'mareul geonnaeneun sangsangdo yeoreo beon haebwa',\n", - " 'geunde wae nan neul neoga nae apeman',\n", - " 'omyeon eoreo beorineun geolkka?',\n", - " 'i don’t know why, girl',\n", - " 'o nae heeoseutaildo',\n", - " 'dareun namjadeulboda gwaenchanko',\n", - " 'eoje saero san syeocheu saeksangdo',\n", - " 'pureun haneulgwa wanbyeokhan dekalkomani',\n", - " 'oneureun nae jajonsimeul kkeokkgo',\n", - " 'neoege gobaekhago',\n", - " 'sipjiman swipji anchi nan geujeo meonghani',\n", - " 'dareun goseul barabwa',\n", - " 'beautiful girl nae gyeoteseo',\n", - " 'utgo inneun niga neomu joha',\n", - " 'nuni busin geol',\n", - " 'areumdaun neol',\n", - " 'humchil su itge neoreul wonhae',\n", - " 'cause you are my',\n", - " '(ooh) special, (ooh) special',\n", - " '(ooh) special, special, special girl',\n", - " '(ooh) special, (ooh) special',\n", - " '(ooh) special, special, special girl',\n", - " 'neoreul bol su inneun chanseu, wolhwasumokgeum',\n", - " 'naega wonhaneun geoneun jumariraneun boneoseu',\n", - " 'nareul mannareo oneun neoreul bol suman itdamyeon',\n", - " 'nae modeungeol da julge geu daegaga mwodeun',\n", - " 'geureogi wihaeseon neoege eopil',\n", - " 'hal su inneun namanui maeryeogi pillyohae',\n", - " 'waenyamyeon neoui gyeoten neul namjadeuri jureul seoitgo',\n", - " 'i gotta k.o him',\n", - " 'baby naege gidae pyeonhage',\n", - " 'umjigiji anheulge manyak neoga nae pum ane',\n", - " 'angyeo jundamyeon i will give you everything',\n", - " 'ojik neomaneul wihae siganeul biulkkeoya maeil',\n", - " 'irago gobaekhago pa',\n", - " 'heona hyeonsireun nae maeumgwa wae dareulkka',\n", - " 'you don’t even know my name oneuldo nan neoui',\n", - " 'yeopeul geunyang jinachyeo joyonghage',\n", - " 'beautiful girl nae gyeoteseo',\n", - " 'utgo inneun niga neomu joha',\n", - " 'nuni busin geol',\n", - " 'areumdaun neol',\n", - " 'humchil su itge neoreul wonhae',\n", - " 'cause you are my',\n", - " '(ooh) special, (ooh) special',\n", - " '(ooh) special, special, special girl',\n", - " '(ooh) special, (ooh) special',\n", - " '(ooh) special, special, special girl',\n", - " 'bomgwa yeoreum gaeulgwa',\n", - " 'gyeoul hal geot eobsi neon neomuna areumdawo',\n", - " 'neol cheoeum bon dwironeun nuneul gamgo isseodo',\n", - " 'gyesok neoui silluesi areungeoryeo',\n", - " 'yeah, so sweet, so sexy, hey',\n", - " 'amugeotdo sone an japhyeo neo ttaemune',\n", - " 'nan all day, all night long',\n", - " 'yeah, so sweet, so sexy, hey',\n", - " 'amugeotdo sone an japhyeo neo ttaemune',\n", - " 'nan all day, all night long',\n", - " 'beautiful girl nae gyeoteseo',\n", - " 'utgo inneun niga neomu joha',\n", - " 'nuni busin geol',\n", - " 'areumdaun neol',\n", - " 'humchil su itge neoreul wonhae',\n", - " 'cause you are my',\n", - " '(ooh) special, (ooh) special',\n", - " '(ooh) special, special, special girl',\n", - " '(ooh) special, (ooh) special',\n", - " '(ooh) special, special, special girl',\n", - " 'tale of kamar al zaman',\n", - " 'that there was in times of yore and in ages long gone before a king called shahrimán, who was lord of many troops and guards, and officers, and who reigned over certain islands, known as the khálidán islands, on the borders of the land of the persians. but he was stricken in years and his bones were wasted, without having been blessed with a son, albeit he had four wives, daughters of kings, and threescore concubines, with each of whom he was wont to lie one night in turn. this preyed upon his mind and disquieted him, so that he complained thereof to one of his wazirs, saying, \"verily i fear lest my kingdom be lost when i die, for that i have no son to succeed me.\" the minister answered, \"o king, peradventure allah shall yet bring something to pass; so rely upon the almighty and be instant in prayer. it is also my counsel that thou spread a banquet and invite to it the poor and needy, and let them eat of thy food; and supplicate the lord to vouchsafe thee a son; for perchance there may be among thy guests a righteous soul whose prayers find acceptance; and thereby thou shalt win thy wish.\" so the king rose, made the lesser ablution, and prayed a two-bow prayer, then he cried upon allah with pure intention; after which he called his chief wife to bed and lay with her forthright. by grace of god she conceived and, when her months were accomplished, she bore a male child, like the moon on the night of fulness. the king named him kamar al-zamán, and rejoiced in him with extreme joy and bade the city be dressed out in his honour; so they decorated the streets seven days, whilst the drums beat and the messengers bore the glad tidings abroad. then wet and dry nurses were provided for the boy and he was reared in splendour and delight, until he reached the age of fifteen. he grew up of surpassing beauty and seemlihead and symmetry, and his father loved him so dear that he could not brook to be parted from him day or night. one day he complained to a certain of his ministers anent the excess of his love for his only child, saying, \"o thou the wazir, of a truth i fear for my son, kamar al-zaman, the shifts and accidents which befal man and fain would i marry him in my life-time.\" answered the wazir, \"o king, know thou that marriage is one of the most honourable of moral actions, and thou wouldst indeed do well and right to marry thy son in thy lifetime, ere thou make him sultan.\" on this quoth the king, \"hither with my son kamar al-zaman;\" so he came and bowed his head to the ground in modesty before his sire. \"o kamar al zaman,\" said king shahriman, \"of a truth i desire to marry thee and rejoice in thee during my lifetime.\" replied he, \"o my father, know that i have no lust to marry nor cloth my soul incline to women; for that concerning their craft and perfidy i have read many books and heard much talk, even as saith the poet,',\n", - " \"'now, an of women ask ye, i reply:—*\",\n", - " \"in their affairs i'm versed a doctor rare!\",\n", - " \"when man's head grizzles and his money dwindles, *\",\n", - " \"in their affections he hath naught for share.'\",\n", - " 'and another said:—',\n", - " \"'rebel against women and so shalt thou serve allah the more; *\",\n", - " 'the youth who gives women the rein must forfeit all hope to',\n", - " 'soar.',\n", - " \"they'll baulk him when seeking the strange device, excelsior, *\",\n", - " \"tho' waste he a thousand of years in the study of science\",\n", - " 'and lore.\\' \"',\n", - " 'and when he had ended his verses he continued, \"o my father, wedlock is a thing whereto i will never consent; no, not though i drink the cup of death.\" when sultan shahriman heard these words from his son, light became darkness in his sight and he grieved thereat with great grief.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and seventy-first night,',\n", - " \"she said, it hath reached me, o auspicious king, that when king shahriman heard these words from his son, the light became darkness in his sight and he grieved over his son's lack of obedience to his directions in the matter of marriage; yet, for the great love he bore him, he was unwilling to repeat his wishes and was not wroth with him, but caressed him and spake him fair and showed him all manner of kindness such as tendeth to induce affection. all this, and kamar al-zaman increased daily in beauty and loveliness and amorous grace; and the king bore with him for a whole year till he became perfect in eloquence and elegant wit. all men were ravished with his charms; and every breeze that blew bore the tidings of his gracious favour; his fair sight was a seduction to the loving and a garden of delight to the longing, for he was honey-sweet of speech and the sheen of his face shamed the full moon; he was a model of symmetry and blandishment and engaging ways; his shape was as the willow-wand or the rattan- cane and his cheeks might take the place of rose or red anemone. he was, in fine the pink of perfection, even as the poet hath said of him,\",\n", - " '\"he came and cried they, \\'now be allah blest! *',\n", - " \"praise him that clad that soul in so fair vest!'\",\n", - " \"he's king of beauty where the beauteous be; *\",\n", - " 'all are his ryots, all obey his hest:',\n", - " \"his lip-dew's sweeter than the virgin honey; *\",\n", - " 'his teeth are pearls in double row close press:',\n", - " 'all charms are congregate in him alone, *',\n", - " 'and deals his loveliness to man unrest.',\n", - " 'beauty wrote on those cheeks for worlds to see *',\n", - " '\\'i testify there is none good but he.\\'\"',\n", - " 'when the year came to an end, the king called his son to him and said, \"o my son, wilt thou not hearken to me?\" whereupon kamar al-zaman fell down for respect and shame before his sire and replied, \"o my father, how should i not hearken to thee, seeing that allah commandeth me to obey thee and not gain-say thee?\" rejoined king shahriman, \"o my son, know that i desire to marry thee and rejoice in thee whilst yet i live, and make thee king over my realm, before my death.\" when the prince heard his sire pronounce these words he bowed his head awhile, then raised it and said, \"o my father, this is a thing which i will never do; no, not though i drink the cup of death! i know of a surety that the almighty hath made obedience to thee a duty in religion; but, allah upon thee! press me not in this matter of marriage, nor fancy that i will ever marry my life long; for that i have read the books both of the ancients and the moderns, and have come to know all the mischiefs and miseries which have befallen them through women and their endless artifices. and how excellent is the saying of the poet,',\n", - " \"'he whom the randy motts entrap *\",\n", - " 'shall never see deliverance!',\n", - " 'though build he forts a thousand-fold, *',\n", - " 'whose mighty strength lead-plates enhance,',\n", - " 'their force shall be of no avail; *',\n", - " 'these fortresses have not a chance!',\n", - " 'women aye deal in treachery *',\n", - " \"to far and near o'er earth's expanse\",\n", - " 'with fingers dipt in henna-blood *',\n", - " 'and locks in braids that mad the glance;',\n", - " \"and eyelids painted o'er with kohl *\",\n", - " \"they gar us drink of dire mischance.'\",\n", - " 'and how excellently saith another,',\n", - " \"'women, for all the chastity they claim, *\",\n", - " \"are offal cast by kites where'er they list:\",\n", - " 'this night their talk and secret charms are shine, *',\n", - " 'that night another joyeth calf and wrist:',\n", - " \"like inn, whence after night thou far'st at dawn, *\",\n", - " 'and lodges other wight thou hast not wist.\\'\"',\n", - " 'now when king shahriman heard these his son\\'s words and learnt the import of his verses and poetical quotations, he made no answer, of his excessive love for him, but redoubled in graciousness and kindness to him. he at once broke up the audience and, as soon as the seance was over, he summoned his minister and taking him apart, said to him, \"o thou the wazir! tell me how i shall deal with my son in the matter of marriage.\"- -and shahrazad perceived the dawn of day and ceased saying her permitted stay.',\n", - " 'when it was the one hundred and seventy-second night,',\n", - " 'she said, it hath reached me, o auspicious king, that the king summoned his minister; and, taking him apart, said to him, \"o thou the wazir, tell me what i shall do with my son in the matter of marriage. of a truth i took counsel with thee thereon and thou didst counsel me to marry him, before making him king. i have spoken with him of wedlock time after time and he still gainsaid me; so do thou, o wazir, forthright advise me what to do.\" answered the minister, \"o king, wait another year and, if after that thou be minded to speak to him on the matter of marriage, speak not to him privily, but address him on a day of state, when all the emirs and wazirs are present with the whole of the army standing before thee. and when all are in crowd then send for thy son, kamar al-zaman, and summon him; and, when he cometh, broach to him the matter of marriage before the wazirs and grandees and officers of state and captains; for he will surely be bashful and daunted by their presence and will not dare to oppose thy will.\" now when king shahriman heard his wazir\\'s words, he rejoiced with exceeding joy, seeing success in the project, and bestowed on him a splendid robe of honour. then he took patience with his son another year, whilst, with every day that passed over him, kamar al-zaman increased in beauty and loveliness, and elegance and perfect grace, till he was nigh twenty years old. indeed allah had clad him in the cloak of comeliness and had crowned him with the crown of completion: his eye-glance was more bewitching than hárút and marút and the play of his luring looks more misleading than tághút; and his cheeks shone like the dawn rosy-red and his eyelashes stormed the keen-edged blade: the whiteness of his brow resembled the moon shining bright, and the blackness of his locks was as the murky night; and his waist was more slender than the gossamer and his back parts than two sand heaps bulkier, making a babel of the heart with their softness; but his waist complained of the weight of his hips and loins; and his charms ravished all mankind, even as one of the poets saith in these couplets,',\n", - " '\"by his eyelash tendril curled, by his slender waist i swear,',\n", - " 'by the dart his witchery feathers, fatal hurtling through the',\n", - " 'air;',\n", - " 'by the just roundness of his shape, by his glances bright and',\n", - " 'keen',\n", - " 'by the swart limping of his locks, and his fair forehead shining',\n", - " 'sheen;',\n", - " 'by his eyebrows which deny that she who looks on them should',\n", - " 'sleep,',\n", - " \"which now commanding, now forbidding, o'er me high dominion keep;\",\n", - " 'by the roses of his cheek, his face as fresh as myrtle wreath',\n", - " 'his tulip lips, and those pure pearls that hold the places of his',\n", - " 'teeth;',\n", - " 'by his noble form, which rises featly turned in even swell',\n", - " 'to where upon his jutting chest two young pomegranates seem to',\n", - " 'dwell',\n", - " 'by his supple moving hips, his taper waist, the silky skin,',\n", - " 'by all he robbed perfection of, and holds enchained his form',\n", - " 'within;',\n", - " 'by his tongue of steadfastness, his nature true, and excellent,',\n", - " 'by the greatness of his rank, his noble birth, and high descent,',\n", - " 'musk from my love her savour steals, who musk exhales from every',\n", - " 'limb',\n", - " \"and all the airs ambergris breathes are but the zephyr's blow\",\n", - " \"o'er him.\",\n", - " 'the sun, methinks, the broad bright sun, as low before my love',\n", - " 'should quail',\n", - " 'as would my love himself transcend the paltry paring of his',\n", - " 'nail!\"',\n", - " 'so king shahriman, having accepted the counsel of his wazir, waited for another year and a great festival,—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and seventy-third night,',\n", - " 'she said, it hath reached me, o auspicious king, that shahriman having accepted the counsel of his wazir, waited for another year and a great festival, a day of state when the audience hall was filled with his emirs and wazirs and grandees of his reign and officers of state and captains of might and main. thereupon he sent for his son kamar al-zaman who came, and kissing the ground before him three times, stood in presence of his sire with his hands behind his back the right grasping the left. then said the king to him, \"know o my son, that i have not sent for thee on this occasion and summoned thee to appear before this assembly and all these officers of estate here awaiting our orders save and except that i may lay a commandment on thee, wherein do thou not disobey me; and my commandment is that thou marry, for i am minded to wed thee to a king\\'s daughter and rejoice in thee ere i die.\" when the prince heard this much from his royal sire, he bowed his head groundwards awhile, then raising it towards his father and being moved thereto at that time by youthful folly and boyish ignorance, replied, \"but for myself i will never marry; no, not though i drink the cup of death! as for thee, thou art great in age and small of wit: hast thou not, twice ere this day and before this occasion, questioned me of the matter of marriage and i refused my consent? indeed thou dotest and are not fit to govern a flock of sheep!\" so saying kamar al-zaman unclasped his hands from behind his back and tucked up his sleeves above his elbows before his father, being in a fit of fury; moreover, he added many words to his sire, knowing not what he said in the trouble of his spirits. the king was confounded and ashamed, for that this befel in the presence of his grandees and soldier-officers assembled on a high festival and a state occasion; but presently the majesty of kingship took him, and he cried out at his son and made him tremble. then he called to the guards standing before him and said, \"seize him!\\' so they came forward and laid hands on him and, binding him, brought him before his sire, who bade them pinion his elbows behind his back and in this guise make him stand before the presence. and the prince bowed down his head for fear and apprehension, and his brow and face were beaded and spangled with sweat; and shame and confusion troubled him sorely. thereupon his father abused him and reviled him and cried, \"woe to thee, thou son of adultery and nursling of abomination! how durst thou answer me on this wise before my captains and soldiers? but hitherto none hath chastised thee,\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the one hundred and seventy-fourth night,',\n", - " 'she said, it hath reached me, o auspicious king, that king shahriman cried out to his son kamar al-zaman, \"how durst thou answer me on this wise before my captains and soldiers? but hitherto none hath chastised thee. knowest thou not that this deed thou hast done were a disgrace to him had it been done by the meanest of my subjects?\" and the king commanded his mamelukes to loose his elbow bonds and imprison him in one of the bastions of the citadel. so they took the prince and thrust him into an old tower, wherein there was a dilapidated saloon and in its middle a ruined well, after having first swept it and cleansed its floor-flags and set therein a couch on which they laid a mattress, a leathern rug and a cushion; and then they brought a great lanthorn and a wax candle, for that place was dark, even by day. and lastly the mamelukes led kamar al-zaman thither, and stationed an eunuch at the door. and when all this was done, the prince threw himself on the couch, sad-spirited, and heavy- hearted; blaming himself and repenting of his injurious conduct to his father, whenas repentance availed him naught, and saying, \"allah curse marriage and marriageable and married women, the traitresses all! would i had hearkened to my father and accepted a wife! had i so done it had been better for me than this jail.\" this is how it fared with him; but as regards king shahri man, he remained seated on his throne all through the day until sundown; then he took the minister apart and said to him \"know thou, o wazir, that thou and thou only west the cause of all this that hath come to pass between me and my son by the advice thou west pleased to devise; and so what dost thou counsel me to do now?\" answered he, \"o king, leave thy son in limbo for the space of fifteen days: then summon him to thy presence and bid him wed; and assuredly he shall not gainsay thee again.\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the one hundred and seventy-fifth night,',\n", - " 'she said, it hath reached me, o auspicious king, that the wazir, said to king shahriman, \"leave thy son in limbo for the space of fifteen days; then summon him to thy presence and bid him wed; and assuredly he shall not gainsay thee again.\" the king accepted the wazir\\'s opinion and lay down to sleep that night troubled at heart concerning his son; for he loved him with dearest love because he had no other child but this; and it was his wont every night not to sleep, save after placing his arm under his son\\'s neck. so he passed that night in trouble and unease on the prince \\'s account, tossing from side to side, as he were laid on coals of artemisia-wood: for he was overcome with doubts and fears and sleep visited him not all that livelong night; but his eyes ran over with tears and he began repeating, ;',\n", - " '\"while slanderers slumber, longsome is my night; *',\n", - " 'suffice thee a heart so sad in parting-plight;',\n", - " 'i say, while night in care slow moments by, *',\n", - " '\\'what! no return for thee, fair morning light?\\'\"',\n", - " 'and the saying of another,',\n", - " '\"when saw i pleiad-stars his glance escape *',\n", - " 'and pole star draught of sleep upon him pour;',\n", - " 'and the bier-daughters wend in mourning dight, *',\n", - " 'i knew that morning was for him no more!\"',\n", - " 'such was the case with king shahriman; but as regards kamar al- zaman, when the night came upon him the eunuch set the lanthorn before him and lighting the wax-candle, placed it in the candlestick; then brought him somewhat of food. the prince ate a little and continually reproached himself for his unseemly treatment of his father, saying to himself, \"o my soul, knowest thou not that a son of adam is the hostage of his tongue, and that a man\\'s tongue is what casteth him into deadly perils?\" then his eyes ran over with tears and he bewailed that which he had done, from anguished vitals and aching heart, repenting him with exceeding repentance of the wrong wherewith he had wronged his father and repeating,',\n", - " '\"fair youth shall die by stumbling of the tongue: *',\n", - " \"stumble of foot works not man's life such wrong:\",\n", - " 'the slip of lip shall oft smite off the head, *',\n", - " 'while slip of foot shall never harm one long.\"',\n", - " 'now when he had made an end of eating, he asked for the wherewithal to wash his hands and when the mameluke had washed them clean of the remnants of food, he arose and made the wuzu-ablution and prayed the prayers of sundown and nightfall, conjoining them in one; after which he sat down.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the hundred and seventy-sixth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when the prince kamar al-zaman had prayed (conjoining them in one) the prayers of sundown and nightfall, he sat down on the well and began reciting the koran, and he repeated \"the cow,\" the \"house of imrán,\" and \"y. s.;\" \"the compassionate,\" \"blessed be the king,\" \"unity\" and \"the two talismans\\'\\'; and he ended with blessing and supplication and with saying, \"i seek refuge with allah from satan the stoned.\" then he lay down upon his couch which was covered with a mattress of satin from al- ma\\'adin town, the same on both sides and stuffed with the raw silk of irak; and under his head was a pillow filled with ostrich-down and when ready for sleep, he doffed his outer clothes and drew off his bag-trousers and lay down in a shirt of delicate stuff smooth as wax; and he donned a head-kerchief of azure marázi cloth; and at such time and on this guise kamar al-zaman was like the full-orbed moon, when it riseth on its fourteenth night. then, drawing over his head a coverlet of silk, he fell asleep with the lanthorn burning at his feet and the wax-candle over his head, and he ceased not sleeping through the first third of the night, not knowing what lurked for him in the womb of the future, and what the omniscient had decreed for him. now, as fate and fortune would have it, both tower and saloon were old and had been many years deserted; and there was therein a roman well inhabited by a jinniyah of the seed of iblis the accursed, by name maymúnah, daughter of al- dimiryát, a renowned king of the jánn.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the one hundred and seventy-seventh night,',\n", - " 'she said, it hath reached me, o auspicious king, that the name of the jinniyah in question was maymunah, daughter of al-dimiryat; a renowned king of the jann. and as kamar al-zaman continued sleeping till the first third of the night, maymunah came up out of the roman well and made for the firmament, thinking to listen by stealth to the converse of the angels; but when she reached the mouth of the well, she saw a light shining in the tower, contrary to custom; and having dwelt there many years without seeing the like, she said to herself, \"never have i witnessed aught like this\"; and, marvelling much at the matter, determined that there must be some cause therefor. so she made for the light and found the eunuch sleeping within the door; and inside she saw a couch spread, whereon was a human form with the wax-candle burning at his head and the lanthorn at his feet, and she wondered to see the light and stole towards it little by little. then she folded her wings and stood by the bed and, drawing back the coverlid, discovered kamar al-zaman\\'s face. she was motionless for a full hour in admiration and wonderment; for the lustre of his visage outshone that of the candle; his face beamed like a pearl with light; his eyelids were languorous like those of the gazelle; the pupils of his eyes were intensely black and brilliant; his cheeks were rosy red; his eye-brows were arched like bows and his breath exhaled a scent of musk, even as saith of him the poet,',\n", - " '\"i kissed him: darker grew those pupils, which *',\n", - " 'seduce my soul, and cheeks flushed rosier hue;',\n", - " 'o heart, if slanderers dare to deem there be *',\n", - " 'his like in chasms, say \\'bring him hither, you!\\' \"',\n", - " 'now when maymunah saw him, she pronounced the formula of praise, the flyer, \"i accept, o my lady, these conditions.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and seventy-eight night,',\n", - " 'she said, it hath reached me, o auspicious king, that dahnash spoke thus to maymunah, \"i accept, o my lady, these conditions.\" then he resumed, \"know, o my mistress, that i come to-night from the islands of the inland sea in the parts of china, which are the realms of king ghayúr, lord of the islands and the seas and the seven palaces. there i saw a daughter of his, than whom allah hath made none fairer in her time: i cannot picture her to thee, for my tongue would fail to describe her with her due of praise; but i will name to thee a somewhat of her charms by way of approach. now her hair is like the nights of disunion and separation and her face like the days of union and delectation; and right well hath the poet said when picturing her,',\n", - " \"'she dispread the locks from her head one night, *\",\n", - " 'showing four fold nights into one night run',\n", - " 'and she turned her visage towards the moon, *',\n", - " \"and two moons showed at moment one.'\",\n", - " \"she hath a nose like the edge of the burnished blade and cheeks like purple wine or anemones blood-red: her lips as coral and carnelian shine and the water of her mouth is sweeter than old wine; its taste would quench hell's fiery pain. her tongue is moved by wit of high degree and ready repartee: her breast is a seduction to all that see it (glory be to him who fashioned it and finished it!); and joined thereto are two upper arms smooth and rounded; even as saith of her the poet al-walahán,\",\n", - " \"'she hath wrists which, did her bangles not contain, *\",\n", - " \"would run from out her sleeves in silvern rain.'\",\n", - " 'she hath breasts like two globes of ivory, from whose brightness the moons borrow light, and a stomach with little waves as it were a figured cloth of the finest egyptian linen made by the copts, with creases like folded scrolls, ending in a waist slender past all power of imagination; based upon back parts like a hillock of blown sand, that force her to sit when she would fief stand, and awaken her, when she fain would sleep, even as saith of her and describeth her the poet,',\n", - " \"'she hath those hips conjoined by thread of waist, *\",\n", - " \"hips that o'er me and her too tyrannise\",\n", - " \"my thoughts they daze whene'er i think of them, *\",\n", - " \"and weigh her down whene'er she would uprise.'\",\n", - " 'and those back parts are upborne by thighs smooth and round and by a calf like a column of pearl, and all this reposeth upon two feet, narrow, slender and pointed like spear-blades, the handiwork of the protector and requiter, i wonder how, of their littleness, they can sustain what is above them. but i cut short my praises of her charms fearing lest i be tedious.\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the one hundred and seventy-ninth night,',\n", - " 'she said, it hath reached me, o auspicious king, that the ifrit dahnash bin shamhurish said to the ifritah maymunah, \"of a truth i cut short my praises fearing lest i be tedious.\" now when maymunah heard the description of that princess and her beauty and loveliness, she stood silent in astonishment; whereupon dahnash resumed, \"the father of this fair maiden is a mighty king, a fierce knight, immersed night and day in fray and fight; for whom death hath no fright and the escape of his foe no dread, for that he is a tyrant masterful and a conqueror irresistible, lord of troops and armies and continents and islands, and cities and villages, and his name is king ghayur, lord of the islands and of the seas and of the seven palaces. now he loveth his daughter, the young maiden whom i have described to thee, with dearest love and, for affection of her, he hath heaped together the treasures of all the kings and built her therewith seven palaces, each of a different fashion; the first of crystal, the second of marble, the third of china steel, the fourth of precious stones and gems of price, the fifth of porcelain and many-hued onyxes and ring bezels, the sixth of silver and the seventh of gold. and he hath filled the seven palaces with all sorts of sumptuous furniture, rich silken carpets and hangings and vessels of gold and silver and all manner of gear that kings require; and hath bidden his daughter to abide in each by turns for a certain season of the year; and her name is the princess budur. now when her beauty became known and her name and fame were bruited abroad in the neighbouring countries, all the kings sent to her father to demand her of him in marriage, and he consulted her on the matter, but she disliked the very word wedlock with a manner of abhorrence and said, o my father, i have no mind to marry; no, not at all; for i am a sovereign lady and a queen suzerain ruling over men, and i have no desire for a man who shall rule over me. and the more suits she refused, the more her suitors\\' eagerness increased and all the royalties of the inner islands of china sent presents and rarities to her father with letters asking her in marriage. so he pressed her again and again with advice on the matter of espousals; but she ever opposed to him refusals, till at last she turned upon him angrily and cried, \\'o my father, if thou name matrimony to me once more, i will go into my chamber and take a sword and, fixing its hilt in the ground, will set its point to my waist; then will i press upon it, till it come forth from my back, and so slay myself.\\' now when the king heard these her words, the light became darkness in his sight and his heart burned for her as with a flame of fire, because he feared lest she should kill herself; and he was filled with perplexity concerning her affair and the kings her suitors. so he said to her \\'if thou be determined not to marry and there be no help for it abstain from going and coming in and out.\\' then he placed her in a house and shut her up in a chamber, appointing ten old women as duennas to guard her, and forbade her to go forth to the seven palaces; moreover, he made it appear that he was incensed against her, and sent letters to all the kings, giving them to know that she had been stricken with madness by the jinns; and it is now a year since she hath thus been secluded.\" then continued the ifrit dahnash, addressing the ifritah maymunah, \"and i, o my lady go to her every night and take my fill of feeding my sight on her face and i kiss her between the eyes: yet, of my love to her, i do her no hurt neither mount her, for that her youth is fair and her grace surpassing: every one who seeth her jealouseth himself for her. i conjure thee, therefore, o my lady, to go back with me and look on her beauty and loveliness and stature and perfection of proportion; and after, if thou wilt, chastise me or enslave me; and win to thy will, for it is shine to bid and to forbid.\" so saying, the ifrit dahnash bowed his head towards the earth and drooped his wings downward; but maymunah laughed at his words and spat in his face and answered, \"what is this girl of whom thou pratest but a potsherd wherewith to wipe after making water? faugh! faugh! by allah, o accursed, i thought thou hadst some wondrous tale to tell me or some marvellous news to give me. how would it be if thou were to sight my beloved? verily, this night i have seen a young man, whom if thou saw though but in a dream, thou wouldst be palsied with admiration and spittle would flow from thy mouth.\" asked the ifrit, \"and who and what is this youth?\"; and she answered, \"know, o dahnash, that there hath befallen the young man the like of what thou tellest me befel thy mistress; for his father pressed him again and again to marry, but he refused, till at length his sire waxed wroth at being opposed and imprisoned him in the tower where i dwell: and i came up to-night and saw him.\" said dahnash, \"o my lady, shew me this youth, that i may see if he be indeed handsomer than my mistress, the princess budur, or not; for i cannot believe that the like of her liveth in this our age.\" rejoined maymunah, \"thou liest, o accursed, o most ill-omened of marids and vilest of satans! sure am i that the like of my beloved is not in this world.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and eightieth night,',\n", - " 'she said, it hath reached me, o auspicious king, that the ifritah maymunah spake thus to the ifrit dahnash, \"sure am i that the like of my beloved is not in this world! art thou mad to fellow thy beloved with my beloved?\" he said, \"allah upon thee, o my lady, go back with me and look upon my mistress, and after i will with thee and look upon thy beloved.\" she answered, \"it must needs be so, o accursed, for thou art a knavish devil; but i will not go with thee nor shalt thou come with me, save upon condition of a wager which is this. if the lover thou lovest and of whom thou boastest so bravely, prove handsomer than mine whom i mentioned and whom i love and of whom i boast, the bet shall be shine against me; but if my beloved prove the handsomer the bet shall be mine against thee.\" quoth dahnash the ifrit, \"o my lady, i accept this thy wager and am satisfied thereat; so come with me to the islands.\" quoth maymunah; \"no! for the abode of my beloved is nearer than the abode of shine: here it is under us; so come down with me to see my beloved and after we will go look upon thy mistress.\" \"i hear and i obey,\" said dahnash. so they descended to earth and alighted in the saloon which the tower contained; then maymunah stationed dahnash beside the bed and, putting out her hand, drew back the silken coverlet from kamar al-zaman\\'s face, when it glittered and glistened and shimmered and shone like the rising sun. she gazed at him for a moment, then turning sharply round upon dahnash said, \"look, o accursed, and be not the basest of madmen; i am a maid, yet my heart he hath waylaid.\" so dahnash looked at the prince and long continued gazing steadfastly on him then, shaking his head, said to maymunah, \"by allah, o my lady, thou art excusable; but there is yet another thing to be considered, and this is, that the estate female differeth from the male. by allah\\'s might, this thy beloved is the likest of all created things to my mistress in beauty and loveliness and grace and perfection; and it is as though they were both cast alike in the mould of seemlihead.\" now when maymunah heard these words, the light became darkness in her sight and she dealt him with her wing so fierce a buffet on the head as well-nigh made an end of him. then quoth she to him, \"i conjure thee, by the light of his glorious countenance, go at once, o accursed, and bring hither thy mistress whom thou lovest so fondly and foolishly, and return in haste that we may lay the twain together and look on them both as they lie asleep side by side; so shall it appear to us which be the goodlier and more beautiful of the two. except thou obey me this very moment, o accursed, i will dart my sparks at thee with my fire and consume thee; yea, in pieces i will rend thee and into the deserts cast thee, that to stay at home and wayfarer an example thou be!\" quoth dahnash, \"o my lady, i will do thy behests, for i know forsure that my mistress is the fairer and the sweeter.\" so saying the if rit flew away and maymunah flew with him to guard him. they were absent awhile and presently returned, bearing the young lady, who was clad in a shift of fine venetian silk, with a double edging of gold and purfled with the most exquisite of embroidery having these couplets worked upon the ends of the sleeves,',\n", - " '\"three matters hinder her from visiting us, in fear *',\n", - " 'of hate-full, slandering envier and his hired spies:',\n", - " \"the shining light of brow, the trinkets' tinkling voice, *\",\n", - " \"and scent of essences that tell whene'er she tries:\",\n", - " \"gi'en that she hide her brow with edge of sleeve, and leave *\",\n", - " 'at home her trinketry, how shall her scent',\n", - " \"disguise?''\",\n", - " 'and dahnash and maymunah stinted not bearing that young lady till they had carried her into the saloon and had laid her beside the youth kamar al-zaman.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the one hundred and eighty-first night,',\n", - " 'she said, it hath reached me, o auspicious king, that the ifrit dahnash and the ifritah maymunah stinted not bearing princess budur till they descended and laid her on the couch beside kamar al- zaman. then they uncovered both their faces, and they were the likest of all folk, each to other, as they were twins or an only brother and sister; and indeed they were a seduction to the pious, even as saith of them the poet al-mubín,',\n", - " '\"o heart! be not thy love confined to one, *',\n", - " 'lest thou by doting or disdain be undone:',\n", - " 'love all the fair, and thou shalt find with them *',\n", - " 'if this be lost, to thee that shall be won.\"',\n", - " 'and quoth another,',\n", - " '\"mine eyes beheld two lying on the ground; *',\n", - " 'both had i loved if on these eyne they lay!\"',\n", - " 'so dahnash and maymunah gazed on them awhile, and he said, \"by allah, o my lady, it is good! my mistress is assuredly the fairer.\" she replied, \"not so, my beloved is the fairer; woe to thee, o dahnash! art blind of eye and heart that lean from fat thou canst not depart? wilt thou hide the truth? dost thou not see his beauty and loveliness and fine stature and symmetry? out on thee, hear what i purpose to say in praise of my beloved and, if thou be a lover true to her thou dost love, do thou the like for her thou lovest.\" then she kissed kamar al-zaman again and again between the eyes and improvised this ode,',\n", - " '\"how is this? why should the blamer abuse thee in his pride?',\n", - " 'what shall console my heart for thee, that art but slender bough?',\n", - " \"a nature kohl'd eye thou hast that witcheth far and wide;\",\n", - " 'from pure platonic love of it deliverance none i trow!',\n", - " 'those glances, fell as plundering turk, to heart such havoc deal',\n", - " 'as never havocked scymitar made keenest at the curve.',\n", - " 'on me thou layest load of love the heaviest while i feel',\n", - " 'so feeble grown that under weight of chemisette i swerve.',\n", - " 'my love for thee as wottest well is habit, and my lowe',\n", - " 'is nature; to all others false is all the love i tender:',\n", - " 'now were my heart but like to shine i never would say no;',\n", - " 'only my wasted form is like thy waist so gracious slender:',\n", - " \"out on him who in beauty's robe for moon like charms hath fame,\",\n", - " 'and who is claimed by mouth of men as marvel of his tribe!',\n", - " \"'of man what manner may he be' (ask they who flyte and blame)\",\n", - " \"'for whom thy heart is so distressed?' i only cry 'describe!'\",\n", - " 'oh stone-entempered heart of him! learn of his yielding grace',\n", - " 'and bending form to show me grace and yielding to consent.',\n", - " 'oh my prince beautiful, thou hast an overseer in place',\n", - " \"who irketh me, and eke a groom whose wrong cloth ne'er relent.\",\n", - " 'indeed he lieth who hath said that all of loveliness',\n", - " \"was pent in joseph: in thy charms there's many and many a joe!\",\n", - " 'the genii dread me when i stand and face to face address;',\n", - " 'but meeting thee my fluttering heart its shame and terror show.',\n", - " 'i take aversion semblance and i turn from thee in fright,',\n", - " 'but more aversion i assume, more love from me dost claim;',\n", - " 'that hair of jetty black! that brow e\\'er raying radiant light! those eyne wherein white jostles black! that dearling dainty frame!\"',\n", - " 'when dahnash heard the poesy which maymunah spake in praise of her beloved, he joyed with exceeding joy and marvelled with excessive wonderment.—and shahrazad perceived the dawn of day and ceased to say her permitted say',\n", - " 'when it was the one hundred and eighty-second night,',\n", - " 'she said, it hath reached me, o auspicious king, that when the ifrit dahnash heard the poesy which maymunah spake in praise of her beloved, he shook for exceeding joy and said, \"thou hast celebrated thy beloved in song and thou hast indeed done well in praise of him whom thou lovest! and there is no help for it but that i also in my turn do my best to enfame my mistress, and recite somewhat in her honour.\" then the ifrit went up to the lady budur; and\\' kissing her between the eyes, looked at maymunah and at his beloved princess and recited the following verses, albeit he had no skill in poesy,',\n", - " '\"love for my fair they chide in angry way; *',\n", - " 'unjust for ignorance, yea unjustest they!',\n", - " 'ah lavish favours on the love mad, whom *',\n", - " 'taste of thy wrath and parting woe shall slay:',\n", - " \"in sooth for love i'm wet with railing tears, *\",\n", - " 'that rail mine eyelids blood thou mightest say:',\n", - " \"no marvel what i bear for love, 'tis marvel *\",\n", - " 'that any know my \"me\" while thou\\'rt away:',\n", - " 'unlawful were our union did i doubt *',\n", - " 'thy love, or heart incline to other may.\"',\n", - " 'and eke these words:—',\n", - " '\"i feed eyes on their stead by the valley\\'s side, *',\n", - " \"and i'm slain and my slaver aside hath tried:\",\n", - " 'grief-wine have i drunken, and down my cheeks *',\n", - " 'dance tears to the song of the camel-guide:',\n", - " 'for union-blessing i strive though sure, *',\n", - " \"in budur and su'ad all my bliss shall bide:\",\n", - " \"wot i not which of three gave me most to 'plain, *\",\n", - " 'so hear them numbered ere thou decide:',\n", - " 'those sworders her eyne, that lancer her fig- *',\n", - " \"-ure, or ring-mail'd locks which her forehead hide.\",\n", - " 'quoth she (and i ask of her what so wights *',\n", - " 'or abide in towns or in desert ride )',\n", - " \"to me, 'in thy heart i dwell, look there!' *\",\n", - " 'quoth i, \\'where\\'s my heart ah where? ah where?\\'\"',\n", - " 'when maymunah heard these lines from the ifrit, she said, \"thou hast done well, o dahnash! but say thou which of the two is the handsomer?\" and he answered, \"my mistress budur is handsomer than thy beloved!\" cried maymunah, \"thou liest, o accursed. nay, my beloved is more beautiful than shine!\" but dahnash persisted, \"mine is the fairer.\" and they ceased not to wrangle and challenge each other\\'s words till maymunah cried out at dahnash and would have laid violent hands on him, but he humbled himself to her and, softening his speech, said, \"let not the truth be a grief to thee, and cease we this talk, for all we say is to testify in favour of our lovers; rather let each of us withdraw the claim and seek we one who shall judge fairly between us which of the two be fairer; and by his sentence we will abide.\" \"i agree to this,\" answered she and smote the earth with her foot, whereupon there came out of it an ifrit blind of an eye, humpbacked and scurvy-skinned, with eye-orbits slit up and down his face. on his head were seven horns and four locks of hair fell to his heels; his hands were pitchfork-like and his legs mast-like and he had nails as the claws of a lion, and feet as the hoofs of the wild ass. when that if rit rose out of the earth and sighted maymunah, he kissed the ground before her and, standing with his hands clasped behind him, said, \"what is thy will, o my mistress, o daughter of my king?\" she replied, \"o kashkash, i would have thee judge between me and this accursed dahnash.\" and she made known to him the matter, from first to last, whereupon the ifrit kashkash looked at the face of the youth and then at the face of the girl; and saw them lying asleep, embraced, each with an arm under the other\\'s neck, alike in beauty and loveliness and equal in grace and goodliness. the marid gazed long upon them, marvelling at their seemlihead; and, after carefully observing the twain, he turned to maymunah and dahnash, and reseated these couplets.',\n", - " '\"go, visit her thou lovest, and regard not',\n", - " 'the words detractors utter, envious churls',\n", - " 'can never favour love. oh! sure the merciful',\n", - " \"ne'er made a thing more fair to look upon,\",\n", - " \"than two fond lovers in each others' arms,\",\n", - " 'speaking their passion in a mute embrace.',\n", - " 'when heart has turned to heart, the fools would part them',\n", - " \"strike idly on cold steel. so when thou'st found\",\n", - " 'one purely, wholly shine, accept her true heart,',\n", - " 'and live for her alone. oh! thou that blamest',\n", - " \"the love-struck for their love, give o'er thy talk,\",\n", - " 'how canst thou minister to a mind diseased?\"',\n", - " 'then he turned again to maymunah and dahnash and said to them, \"by allah, if you will have the truth, i tell you fairly the twain be equal in beauty, and loveliness and perfect grace and goodliness, nor can i make any difference between them on account of their being man and woman. but i have another thought which is that we wake each of them in turn, without the knowledge of the other, and whichever is the more enamoured shall be held inferior in seemlihead and comeliness.\" quoth maymunah, \"right is this recking,\" and quoth dahnash, \"i consent to this.\" then dahnash changed himself to the form of a flea and bit kamar al-zaman, whereupon he started from sleep in a fright.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and eighty-third night,',\n", - " 'she said, it hath reached me, o auspicious king, that dahnash changed himself to the form of a flea and bit kamar al-zaman who started from sleep in a fright and rubbed the bitten part, his neck, and scratched it hard because of the smart. then turning sideways, he found lying by him something whose breath was sweeter than musk and whose skin was softer than cream. hereat marvelled he with great marvel and he sat up and looked at what lay beside him; when he saw it to be a young lady like an union pearl, or a shining sun, or a dome seen from afar on a well built wall; for she was five feet tall, with a shape like the letter alif, bosomed high and rosy checked; even as saith of her the poet,',\n", - " '\"four things which ne\\'er conjoin, unless it be *',\n", - " 'to storm my vitals and to shed my blood:',\n", - " 'brow white as day and tresses black as night *',\n", - " 'cheeks rosy red and lips which smiles o\\'erflood.\"',\n", - " 'and also quoth another,',\n", - " '\"a moon she rises, willow wand she waves, *',\n", - " 'breathes ambergris, and gazes, a gazelle:',\n", - " 'meseems that sorrow woes my heart and wins *',\n", - " 'and, when she wendeth hastes therein to dwell!\"',\n", - " 'and when kamar al-zaman saw the lady budur, daughter of king ghayur, and her beauty and comeliness, she was sleeping clad in a shift of venetian silk, without her petticoat-trousers, and wore on her head a kerchief embroidered with gold and set with stones of price: her ears were hung with twin earrings which shone like constellations and round her neck was a collar of union pearls, of size unique, past the competence of any king. when he saw this, his reason was confounded and natural heat began to stir in him; allah awoke in him the desire of coition and he said to himself, \"whatso allah willeth, that shall be, and what he willeth not shall never be!\" so saying, he put out his hand and, turning her over, loosed the collar of her chemise; then arose before his sight her bosom, with its breasts like double globes of ivory; whereat his inclination for her redoubled and he desired her with exceeding hot desire, he would have awakened her but she would not awake, for dahnash had made her sleep heavy; so he shook her and moved her, saying, \"o my beloved, awake and look on me; i am kamar al-zaman.\" but she awoke not, neither moved her head; where-upon he considered her case for a long hour and said to himself, \"if i guess aright, this is the damsel to whom my father would have married me and these three years past i have refused her; but inshallah!—god willing—as soon as it is dawn, i will say to him, \\'marry me to her, that i may enjoy her.\\'\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and eighty-fourth night,',\n", - " 'she said, it hath reached me, o auspicious king, that kamar al- zaman said to himself, \"by allah, when i see dawn i will say to my sire, \\'marry me to her that i may enjoy her\\'; nor will i let half the day pass ere i possess her and take my fill of her beauty and loveliness.\" then he bent over budur to buss her, whereat the jinniyah maymunah trembled and was abashed and dahnash, the ifrit, was like to fly for joy. but, as kamar al- zaman was about to kiss her upon the mouth, he was ashamed before allah and turned away his head and averted his face, saying to his heart, \"have patience.\" then he took thought awhile and said, \"i will be patient; haply my father when he was wroth with me and sent me to this jail, may have brought my young lady and made her lie by my side to try me with her, and may have charged her not to be readily awakened when i would arouse her, and may have said to her, \\'whatever thing kamar al-zaman do to thee, make me ware thereof\\'; or belike my sire standeth hidden in some stead whence (being himself unseen) he can see all i do with this young lady; and to morrow he will scold me and cry, \\'how cometh it that thou sayest, i have no mind to marry; and yet thou didst kiss and embrace yonder damsel?\\' so i will withhold myself lest i be ashamed before my sire; and the right and proper thing to do is not to touch her at this present, nor even to look upon her, except to take from her somewhat which shall serve as a token to me and a memorial of her; that some sign endure between me and her.\" then kamar al-zaman raised the young lady\\'s hand and took from her little finger a seal-ring worth an immense amount of money, for that its bezel was a precious jewel and around it were graven these couplets,',\n", - " '\"count not that i your promises forgot, *',\n", - " 'despite the length of your delinquencies',\n", - " 'be generous, o my lord, to me inclining; *',\n", - " 'haply your mouth and cheeks these lips may kiss:',\n", - " \"by allah, ne'er will i relinquish you *\",\n", - " 'albe you will transgress love\\'s boundaries.\"',\n", - " 'then kamar al-zaman took the seal-ring from the little finger of queen budur and set it on his own; then, turning his back to her, went to sleep. when maymunah the jinniyah saw this, she was glad and said to dahnash and kashkash, \"saw ye how my beloved kamar al-zaman bore himself chastely towards this young lady? verily, this was of the perfection of his good gifts; for observe you twain how he looked on her and noted her beauty and loveliness, and yet embraced her not neither kissed her nor put his hand to her, but turned his back and slept.\" answered they, \"even so!\" thereupon maymunah changed herself into a flea and entering into the raiment of budur, the loved of dahnash, crept up her calf and came upon her thigh and, reaching a place some four carats below her navel, there bit her. thereupon she opened her eyes and sitting up in bed, saw a youth lying beside her and breathing heavily in his sleep, the loveliest of almighty allah\\'s creatures, with eyes that put to shame the fairest houris of heaven; and a mouth like solomon\\'s seal, whose water was sweeter to the taste and more efficacious than a theriack, and lips the colour of coral-stone, and cheeks like the blood red anemone, even as saith one, describing him in these couplets,',\n", - " '\"my mind\\'s withdrawn from zaynab and nawár *',\n", - " 'by rosy cheeks that growth of myrtle bear;',\n", - " 'i love a fawn, a tunic-vested boy, *',\n", - " 'and leave the love of bracelet-wearing fair:',\n", - " 'my mate in hall and closet is unlike *',\n", - " 'her that i play with, as at home we pair.',\n", - " \"oh thou, who blam'st my flight from hind and zaynab, *\",\n", - " 'the cause is clear as dawn uplighting air!',\n", - " \"would'st have me fare a slave, the thrall of thrall, *\",\n", - " 'cribbed, pent, confined behind the bar and wall?\"',\n", - " 'now when princess budur saw him, she was seized by a transport of passion and yearning and love-longing,—and shahrazad per ceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the one hundred and eighty-fifth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when princess budur saw kamar al-zaman she was forthwith seized with a transport of passion and yearning and love longing, and she said to herself, \"alas, my shame! this is a strange youth and i know him not. how cometh he to be lying by my side on one bed?\" then she looked at him a second time and, noting his beauty and loveliness, said, \"by allah, he is indeed a comely youth and my heart and she was ashamed of her own shamelessness. then she plucked his seal-ring from his finger, and put it on her own instead of the ring he had taken, and bussed his inner lips and hands, nor did she leave any part of him unkissed; after which she took him to her breast and embraced him and, laying one of her hands under his neck and the other under his arm-pit, nestled close to him and fell asleep by his side.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and eighty-sixth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when princess budur fell asleep by the side of kamar al-zaman, after doing that which she did, quoth maymunah to dahnash, night thou, o accursed, how proudly and coquettishly my beloved bore himself, and how hotly and passionately thy mistress showed herself to my dearling? there can be no doubt that my beloved is handsomer than shine; nevertheless i pardon thee.\" then she wrote him a document of manumission and turned to kashkash and said, \"go, help dahnash to take up his mistress and aid him to carry her back to her own place, for the night waneth apace and there is but little left of it.\" \"i hear and i obey;\" answered kashkash. so the two ifrits went forward to princess budur and upraising her flew away with her; then, bearing her back to her own place, they laid her on her bed, whilst maymunah abode alone with kamar al-zaman, gazing upon him as he slept, till the night was all but spent, when she went her way. as soon as morning morrowed, the prince awoke from sleep and turned right and left, but found not the maiden by him and said in his mind, \"what is this business? it is as if my father would incline me to marriage with the damsel who was with me and have now taken her away by stealth, to the intent that my desire for wedlock may redouble.\" then he called out to the eunuch who slept at the door, saying, \"woe to thee, o damned one, arise at once!\" so the eunuch rose, bemused with sleep, and brought him basin and ewer, whereupon kamar al-zaman entered the water closet and did his need; then, coming out made the wuzu-ablution and prayed the dawn-prayer, after which he sat telling on his beads the ninety-and-nine names of almighty allah. then he looked up and, seeing the eunuch standing in service upon him, said, \"out on thee, o sawáb! who was it came hither and took away the young lady from my side and i still sleeping?\" asked the eunuch, \\'o my lord, what manner of young lady?\" \"the young lady who lay with me last night,\" replied kamar al-zaman. the eunuch was startled at his words and said to him, \"by allah, there hath been with thee neither young lady nor other! how should young lady have come in to thee, when i was sleeping in the doorway and the door was locked? by allah, o my lord, neither male nor female hath come in to thee!\" exclaimed the prince, \"thou liest, o pestilent slave!: is it of thy competence also to hoodwink me and refuse to tell me what is become of the young lady who lay with me last night and decline to inform me who took her away?\" replied the eunuch (and he was affrighted at him), \"by allah, o my lord, i have seen neither young lady nor young lord!\" his words only angered kamar al-zaman the more and he said to him, \"o accursed one, my father hath indeed taught thee deceit! come hither.\" so the eunuch came up to him, and the prince took him by the collar and dashed him to the ground; whereupon he let fly a loud fart and kamar al-zaman, kneeling upon him, kicked him and throttled him till he fainted away. then he dragged him forth and tied him to the well-rope, and let him down like a bucket into the well and plunged him into the water, then drew him up and lowered him down again. now it was hard winter weather, and kamar al-zaman ceased not to plunge the eunuch into the water and pull him up again and douse him and haul him whilst he screamed and called for help; and the prince kept on saying \"by allah, o damned one, i will not draw thee up out of this well till thou tell me and fully acquaint me with the story of the young lady and who it was took her away, whilst i slept.\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the one and eighty-seventh night,',\n", - " 'she said, it hath reached me, o auspicious king, that kamar al- zaman said to the eunuch, \"by allah! i will not draw thee up out of this well until thou tell me the story of the young lady and who it was took her away whilst i slept.\" answered the eunuch, after he had seen death staring him in the face; \"o my lord, let me go and i will relate to thee the truth and the whole tale.\" so kamar al-zaman pulled him up out of the well, all but dead for suffering, what with cold and the pain of dipping and dousing, drubbing and dread of drowning. he shook like cane in hurricane, his teeth were clenched as by cramp and his clothes were drenched and his body befouled and torn by the rough sides of the well: briefly he was in a sad pickle. now when kamar al-zaman saw him in this sorry plight, he was concerned for him; but, as soon as the eunuch found himself on the floor, he said to him, \"o my lord, let me go and doff my clothes and wring them out and spread them in the sun to dry, and don others; after which i will return to thee forthwith and tell thee the truth of the matter.\" answered the prince, \"o rascal slave! hadst thou not seen death face to face, never hadst thou confessed to fact nor told me a word; but go now and do thy will, and then come back to me at once and tell me the truth.\" thereupon the eunuch went out, hardly crediting his escape, and ceased not running, stumbling and rising in his haste, till he came in to king shahriman, whom he found sitting at talk with his wazir of kamar al-zaman\\'s case. the king was saying to the minister, \"i slept not last night, for anxiety concerning my son, kamar al-zaman and indeed i fear lest some harm befal him in that old tower. what good was there in imprisoning him?\" answered the wazir, \"have no care for him. by allah, no harm will befal him! none at all! leave him in prison for a month till his temper yield and his spirit be broken and he return to his senses.\" as the two spoke behold, up rushed the eunuch, in the aforesaid plight, making to the king who was troubled at sight of him; and he cried \"o our lord the sultan! verily, thy son\\'s wits are fled and he hath gone mad, he hath dealt with me thus and thus, so that i am become as thou seest me, and he kept saying, \\'a young lady lay with me this night and stole away secretly whilst i slept. where is she?\\' and he insisteth on my letting him know where she is and on my telling him who took her away. but i have seen neither girl nor boy: the door was locked all through the night, for i slept before it with the key under my head, and i opened to him in the morning with my own hand. when king shahriman heard this, he cried out, saying, \"alas, my son!;\" and he was enraged with sore rage against the wazir, who had been the cause of all this case and said to him, \"go up, bring me news of my son and see what hath befallen his mind.\" so the wazir rose and, stumbling over his long skirts, in his fear of the king\\'s wrath, hastened with the slave to the tower. now the sun had risen and when the minister came in to kamar al-zaman, he found him sitting on the couch reciting the koran; so he saluted him and seated himself by his side, and said to him, \"o my lord, this wretched eunuch brought us tidings which troubled and alarmed us and which incensed the king.\" asked kamar al-zaman, \"and what hath he told you of me to trouble my father? in good sooth he hath troubled none but me.\" answered the wazir, \"he came to us in fulsome state and told us of thee a thing which heaven forfend; and the slave added a lie which it befitteth not to repeat, allah preserve thy youth and sound sense and tongue of eloquence, and forbid to come from thee aught of offense!\" quoth the prince, \"o wazir, and what thing did this pestilent slave say of me?\" the minister replied, \"he told us that thy wits had taken leave of thee and thou wouldst have it that a young lady lay with thee last night, and thou west instant with him to tell thee whither she went and thou diddest torture him to that end.\" but when kamar al-zaman heard these words, he was enraged with sore rage and he said to the wazir, \"\\'tis manifest to me in very deed that you people taught the eunuch to do as he did.\"—and shahrazad perceived the dawn of day and ceased to say her per misted say.',\n", - " 'when it was the one hundred and eighty-eighth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when kamar al-zaman heard the words of the wazir he was enraged with sore rage and said to him, \"\\'tis manifest to me in very deed that you people taught the eunuch to do as he did and forbade him to tell me what became of the young lady who lay with me last night. but thou, o wazir, art cleverer than the eunuch, so do thou tell me without stay or delay, whither went the young lady who slept on my bosom last night; for it was you who sent her and bade her steep in my embrace and we lay together till dawn; but, when i awoke, i found her not. so where is she now?\" said the wazir, \"o my lord kamar al-zaman, allah\\'s name encompass thee about! by the almighty, we sent none to thee last night, but thou layest alone, with the door locked on thee and the eunuch sleeping behind it, nor did there come to thee young lady or any other. regain thy reason, o my lord, and stablish thy senses and occupy not thy mind with vanities.\" rejoined kamar al-zaman who was incensed at his words, \"o wazir, the young lady in question is my beloved, the fair one with the black eyes and rosy cheeks, whom i held in my arms all last night.\" so the minister wondered at his words and asked him, \"didst thou see this damsel last night with shine own eyes on wake or in sleep?\" answered kamar al-zaman, \"o ill- omened old man, dost thou fancy i saw her with my ears? indeed, i saw her with my very eyes and awake, and i touched her with my hand, and i watched by her full half the night, feeding my vision on her beauty and loveliness and grace and tempting looks. but you had schooled her and charged her to speak no word to me; so she feigned sleep and i lay by her side till dawn, when i awoke and found her gone.\" rejoined the wazir, \"o my lord kamar al- zaman, haply thou sawest this in thy sleep; it must have been a delusion of dreams or a deception caused by eating various kinds of food, or a suggestion of the accursed devils.\" cried the prince, \"o pestilent old man! wilt thou too make a mock of me and tell me this was haply a delusion of dreams, when that eunuch confessed to the young lady, saying, \\'at once i will return to thee and tell thee all about her?\\'\" with these words, he sprang up and rushed at the wazir and gripped hold of his beard (which was long) and, after gripping it, he twisted his hand in it and haling him off the couch, threw him on the floor. it seemed to the minister as though his soul departed his body for the violent plucking at his beard; and kamar al-zaman ceased not kicking the wazir and basting his breast and ribs and cuffing him with open hand on the nape of his neck till he had well-nigh beaten him to death. then said the old man in his mind, \"just as the eunuch-slave saved his life from this lunatic youth by telling him a lie, thus it is even fitter that i do likewise; else he will destroy me. so now for my lie to save myself, he being mad beyond a doubt.\" then he turned to kamar al-zaman and said, \"o my lord, pardon me; for indeed thy father charged me to conceal from thee this affair of the young lady; but now i am weak and weary and wounded with funding; for i am an old man and lack strength and bottom to endure blows. have, therefore, a little patience with me and i will tell thee all and acquaint thee with the story of the young woman.\" when the prince heard this, he left off drubbing him and said, \"wherefore couldst thou not tell me the tale until after shame and blows? rise now, unlucky old man that thou art, and tell me her story.\" quoth the wazir, \"say, dost thou ask of the young lady with the fair face and perfect form?\" quoth kamar al-zaman, \"even so! tell me, o wazir, who it was that led her to me and laid her by my side, and who was it that took her away from me by night; and let me know forthright whither she is gone, that i myself may go to her at once. if my father did this deed to me that he might try me by means of that beautiful girl, with a view to our marriage, i consent to wed her and free myself of this trouble; for he did all these dealings with me only because i refused wedlock. but now i consent and i say again, i consent to matrimony: so tell this to my father, o wazir, and advise him to marry me to that young lady; for i will have none other and my heart loveth none save her alone. now rise up at once and haste thee to my father and counsel him to hurry on our wedding and bring me his answer within this very hour.\" rejoined the wazir, \"\\'tis well!\" and went forth from him, hardly believing himself out of his hands. then he set off from the tower, walking and tripping up as he went, for excess of fright and agitation, and he ceased not hurrying till he came in to king shahriman.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the one hundred and eighty-nineth night,',\n", - " 'she said, it hath reached me, o auspicious king, that the wazir, fared forth from the tower, and ceased not running till he came in to king shahriman, who said to him as he sighted him, \"o thou wazir, what man hath brought thee to grief and whose mischief hath treated thee in way unlief; how happeneth it that i see thee dumb foundered and coming to me thus astounded?\" replied the wazir, \"o king! i bring thee good news.\" \"and what is it?\" quoth shahriman, and quoth the wazir, \"know that thy son kamar al- zaman\\'s wits are clean gone and that he hath become stark mad.\" now when the king heard these words of the minister, light became darkness in his sight and he said, \"o wazir, make clear to me the nature of his madness.\" answered the wazir, \"o my lord, i hear and i obey.\" then he told him that such and such had passed and acquainted him with all that his son had done; whereupon the king said to him, \"hear, o wazir, the good tidings which i give thee in return for this thy fair news of my son\\'s insanity; and it shall be the cutting off of thy head and the forfeiture of my favour, o most ill-omened of wazirs and foulest of emirs! for i feel that thou hast caused my son\\'s disorder by the wicked advice and the sinister counsel thou hast given me first and last. by allah, if aught of mischief or madness have befallen my son i will most assuredly nail thee upon the palace dome and make thee drain the bitterest draught of death!\\'\\' then he sprang up and, taking the wazir, with him, fared straight for the tower and entered it. and when kamar al-zaman saw the two, he rose to his father in haste from the couch whereon he sat and kissing his hands drew back and hung down his head and stood before him with his arms behind him, and thus remained for a full hour. then he raised his head towards his sire; the tears gushed from his eyes and streamed down his cheeks and he began repeating,',\n", - " '\"forgive the sin \\'neath which my limbs are trembling,',\n", - " 'for the slave seeks for mercy from his master;',\n", - " \"i've done a fault, which calls for free confession,\",\n", - " \"where shall it call for mercy, and forgiveness?''\",\n", - " 'when the king heard this, he arose and embraced his son, and kissing him between the eyes, made him sit by his side on the couch; then he turned to the wazir, and, looking on him with eyes of wrath, said, \"o dog of wazirs, how didst thou say of my son such and such things and make my heart quake for him?\" then he turned to the prince and said, \"o my son, what is to-day called?\" he answered, \"o my father, this day is the sabbath, and to morrow is first day: then come second day, third, fourth, fifth day and lastly friday.\" what damsel is this of whom thou speakest?\" then kamar al-zaman laughed at his father\\'s words and replied, \"o my father, know that i can bear no more jesting; so add me not another mock or even a single word on the matter, for my temper hath waxed short by that you have done with me. and know, o my father, with assured knowledge, that i consent to marry, but on condition that thou give me to wife her who lay by my side this night; for i am certain it was thou sentest her to me and madest me in love with her and then despatchedst a message to her before the dawn and tookest her away from beside me.\" rejoined the king, \"the name of allah encompass thee about, o my son, and be thy wit preserved from witlessness!\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and ninetieth night,',\n", - " 'she said, it hath reached me, o auspicious king, that quoth king shahriman to his son kamar al-zaman, \"the name of allah encompass thee about, o my son, and be thy wit preserved from witlessness! what thing be this young lady whom thou fanciest i sent to thee last night and then again that i sent to withdraw her from thee before dawn? by the lord, o my son, i know nothing of this affair, and allah upon thee, tell me if it be a delusion of dreaming or a deception caused by indisposition. for verily thou layest down to sleep last night with thy mind occupied anent marriage and troubled with the talk of it (allah damn marriage and the hour when i spake of it and curse him who counselled it!); and without doubt or diffidence i can say that being moved in mind by the mention of wedlock thou dreamedst that a handsome young lady embraced thee and didst fancy thou sawest her when awake. but all this, o my son, is but an imbroglio of dreams.\" replied kamar al-zaman, \"leave this talk and swear to me by allah, the all creator, the omniscient; the humbler of the tyrant caesars and the destroyer of the chosroes, that thou knowest naught of the young lady nor of her woning-place.\" quoth the king, \"by the might of allah almighty, the god of moses and abraham, i know naught of all this and never even heard of it; it is assuredly a delusion of dreams thou hast seen in sleep.\\' then the prince replied to his sire, \"i will give thee a self evident proof that it happened to me when on wake.\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the one hundred and ninety-first night,',\n", - " 'she said, it hath reached me, o auspicious king, that kamar al zamar said to his sire, \"i will give thee a self-evident proof that this happened to me when on wake. now let me ask thee, did it ever befal any man to dream that he was battling a sore battle and after to awake from sleep and find in his hand a sword-blade besmeared with blood? answered the king, \"no, by allah, o my son, this hath never been.\" rejoined kamar al-zaman, \"i will tell thee what happened to me and it was this. meseemed i awoke from sleep in the middle of the past night and found a girl lying by my side, whose form was like mine and whose favour was as mine. i embraced her and turned her about with my hand and took her seal- ring, which i put on my finger, and she pulled off my ring and put it on hers. then i went to sleep by her side, but refrained from her for shame of thee, deeming that thou hadst sent her to me, intending to tempt me with her and incline me to marriage, and suspecting thee to be hidden somewhere whence thou couldst see what i did with her. and i was ashamed even to kiss her on the mouth for thy account, thinking over this temptation to wedlock; and, when i awoke at point of day, i found no trace of her, nor could i come at any news of her, and there befel me what thou knowest of with the eunuch and with the wazir. how then can this case have been a dream and a delusion, when the ring is a reality? save for her ring on my finger i should indeed have deemed it a dream; but here is the ring on my little finger: look at it, o king, and see what is its worth.\" so saying he handed the ring to his father, who examined it and turned it over, then looked to his son and said, \"verily, there is in this ring some mighty mystery and some strange secret. what befel thee last night with the girl is indeed a hard nut to crack, and i know not how intruded upon us this intruder. none is the cause of all this posher save the wazir; but, allah upon thee, o my son, take patience, so haply the lord may turn to gladness this thy grief and to thy sadness bring complete relief: as quoth one of the poets,',\n", - " \"'haply shall fortune draw her rein, and bring *\",\n", - " 'fair chance, for she is changeful, jealous, vain:',\n", - " 'still i may woo my want and wishes win, *',\n", - " \"and see on heels of care unfair, the fain.'\",\n", - " 'and now, o my son, i am certified at this hour that thou art not mad; but thy case is a strange one which none can clear up for thee save the almighty.\" cried the prince, \"by allah, o my father, deal kindly with me and seek out this young lady and hasten her coming to me; else i shall die of woe and of my death shall no one know.\" then he betrayed the ardour of his passion; and turned towards his father and repeated these two couplets,',\n", - " '\"if your promise of personal call prove untrue, *',\n", - " 'deign in vision to grant me an interview:',\n", - " \"quoth they, 'how can phantom appear to the sight *\",\n", - " 'of a youth, whose sight is fordone, perdue?\\'\"',\n", - " 'then, after ending his poetry, kamar al-zaman again turned to his father, with submission and despondency, and shedding tears in flood, began repeating these lines.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and ninety-second night,',\n", - " 'she said, it hath reached me, o auspicious king, that when kamar al-zaman had repeated to his father these verses, he wept and complained and groaned from a wounded heart; and added these lines,',\n", - " '\"beware that eye glance which hath magic might; *',\n", - " 'wherever turn those orbs it bars our flight:',\n", - " 'nor be deceived by low sweet voice, that breeds *',\n", - " 'a fever festering in the heart and sprite:',\n", - " 'so soft that silky skin, were rose to touch it *',\n", - " \"she'd cry and tear-drops rain for pain and fright:\",\n", - " \"did zephyr e'en in sleep pass o'er her land, *\",\n", - " \"scented he'd choose to dwell in scented site:\",\n", - " 'her necklets vie with tinkling of her belt; *',\n", - " 'her wrists strike either wristlet dumb with spite:',\n", - " 'when would her bangles buss those rings in ear, *',\n", - " \"upon the lover's eyne high mysteries 'light:\",\n", - " \"i'm blamed for love of her, nor pardon claim; *\",\n", - " 'eyes are not profiting which lack foresight:',\n", - " 'heaven strip thee, blamer mine! unjust art thou; *',\n", - " 'before this fawn must every eye low bow.\"',\n", - " 'after which he said, \"by allah, o my father, i cannot endure to be parted from her even for an hour.\" the king smote hand upon hand and exclaimed, \"there is no majesty and there is no might save in allah, the glorious, the great! no cunning contrivance can profit us in this affair.\" then he took his son by the hand and carried him to the palace, where kamar al-zaman lay down on the bed of languor and the king sat at his head, weeping and mourning over him and leaving him not, night or day, till at last the wazir came in to him and said, \"o king of the age and the time, how long wilt thou remain shut up with thy son and hide thyself from thy troops. haply, the order of thy realm may be deranged, by reason of shine absence from thy grandees and officers of state. it behoveth the man of understanding, if he have various wounds in his body, to apply him first to medicine the most dangerous; so it is my counsel to thee that thou remove thy son from this place to the pavilion which is in the palace overlooking the sea; and shut thyself up with him there, setting apart in every week two days, thursday and monday, for state receptions and progresses and reviews. on these days let shine emirs and wazirs and chamberlains and viceroys and high officials and grandees of the realm and the rest of the levies and the lieges have access to thee and submit their affairs to thee; and do thou their needs and judge among them and give and take with them and bid and forbid. and the rest of the week thou shalt pass with thy son, kamar al-zaman, and cease not thus doing till allah shall vouchsafe relief to you twain. think not, o king, that thou art safe from the shifts of time and the strokes of change which come like a traveller in the night; for the wise man is ever on his guard and how well saith the poet,',\n", - " \"'thou deemedst well of time when days went well, *\",\n", - " 'and fearedst not what ills might bring thee fate:',\n", - " 'the nights so fair and restful cozened thee, *',\n", - " 'for peaceful nights bring woes of heavy weight.',\n", - " 'oh children of mankind whom time befriends, *',\n", - " \"beware of time's deceits or soon or late!'''\",\n", - " 'when the sultan heard his wazir\\'s words he saw that they were right and deemed his counsel wise, and it had effect upon him for he feared lest the order of the state be deranged; so he rose at once and bade transport his son from his sick room to the pavilion in the palace overlooking the sea. now this palace was girt round by the waters and was approached by a causeway twenty cubits wide. it had windows on all sides commanding an ocean- view; its floor was paved with parti-coloured marbles and its ceiling was painted in the richest pigments and figured with gold and lapis-lazuli. they furnished it for kamar al-zaman with splendid upholstery, embroidered rugs and carpets of the richest silk; and they clothed the walls with choice brocades and hung curtains bespangled with gems of price. in the midst they set him a couch of juniper-wood inlaid with pearls and jewels, and kamar al-zaman sat down thereon, but the excess of his concern and passion for the young lady had wasted his charms and emaciated his body; he could neither eat nor drink nor sleep; and he was like a man who had been sick twenty years of sore sickness. his father seated himself at his head, grieving for him with the deepest grief, and every monday and thursday he gave his wazirs and emirs and chamberlains and viceroys and lords of the realm and levies and the rest of his lieges leave to come up to him in that pavilion. so they entered and did their several service and duties and abode with him till the end of the day, when they went their ways and the king returned to his son in the pavilion whom he left not night nor day; and he ceased not doing on this wise for many days and nights. such was the case with kamar al-zaman, son of king shahriman; but as regards princess budur, daughter of king ghayur, lord of the isles and the seven palaces, when the two jinns bore her up and laid her on her bed, she slept till daybreak, when she awoke and sitting upright looked right and left, but saw not the youth who had lain in her bosom. at this her vitals fluttered, her reason fled and she shrieked a loud shriek which awoke all her slave girls and nurses and duennas. they flocked in to her; and the chief of them came forward and asked, \"what aileth thee, o my lady?\" answered the princess, \"o wretched old woman, where is my beloved, the handsome youth who lay last night in my bosom? tell me whither he is gone.\" now when the duenna heard this, the light starkened in her sight and she feared from her mischief with sore affright, and said to her, \"o my lady budur, what unseemly words are these?\" cried the princess, \"woe to thee pestilent crone that thou art! i ask thee again where is my beloved, the goodly youth with the shining face and the slender form, the jetty eyes and the joined eyebrows, who lay with me last night from supper-tide until near daybreak?\" she rejoined \"by allah, o my lady, i have seen no young man nor any other. i conjure thee, carry not this unseemly jest too far lest we all lose our lives; for perhaps the joke may come to thy father\\'s ears and who shall then deliver us from his hand?\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and ninety-third night,',\n", - " 'she said, it hath reached me, o auspicious king, that the duenna bespake the lady budur in these words, \"allah upon thee, o my lady! carry not this unseemly jest too far; for perhaps it may come to thy father\\'s ears, and who shall then deliver us from his hand?\" the princess rejoined, \"in very sooth a youth lay with me last night, one of the fairest-faced of men.\" exclaimed the duenna, \"heaven preserve thy reason! indeed no one lay with thee last night.\" thereupon the princess looked at her hand and, finding kamar al-zaman\\'s seal-ring on her finger in stead of her own, said to her, \"woe to thee, thou accursed! thou traitress! wilt thou lie to me and tell me that none lay with me last night and swear to me a falsehood in the name of the lord?\" replied the duenna, \"by allah, i do not lie to thee nor have i sworn falsely.\" then the princess was incensed by her words and, drawing a sword she had by her, she smote the old woman with it and slew her; whereupon the eunuch and the waiting-women and the concubines cried out at her, and ran to her father and, without stay or delay, acquainted him with her case. so the king went to her, and asked her, \"o my daughter, what aileth thee?\"; and she answered, \"o my father, where is the youth who lay with me last night?\" then her reason fled from her head and she cast her eyes right and left and rent her raiment even to the skirt. when her sire saw this, he bade the women lay hands on her; so they seized her and manacled her, then putting a chain of iron about her neck, made her fast to one of the palace-windows and there left her. thus far concerning princess budur; but as regards her father, king ghayur, the world was straitened upon him when he saw what had befallen his daughter, for that he loved her and her case was not a little grievous to him. so he summoned on it the doctors and astrologers and men skilled in talisman- writing and said to them, \"whoso healeth my daughter of what ill she hath, i will marry him to her and give him half of my kingdom; but whoso cometh to her and cureth her not, i will strike off his head and hang it over her palace-gate.\" accordingly, all who went in to her, but failed to heal her, he beheaded and hung their heads over the palace-gates, till he had beheaded on her account forty doctors and crucified forty astrologers; wherefor the general held aloof from her, all the physicians having failed to medicine her malady; and her case was a puzzle to the men of science and the adepts in cabalistic characters. and as her longing and passion redoubled and love and distraction were sore upon her, she poured forth tears and repeated these couplets,',\n", - " '\"my fondness, o my moon, for thee my foeman is, *',\n", - " 'and to thy comradeship the nights my thought compel:',\n", - " 'in gloom i bide with fire that flames below my ribs, *',\n", - " 'whose lowe i make comparison with heat of hell:',\n", - " \"i'm plagued with sorest stress of pine and ecstasy; *\",\n", - " 'nor clearest noon tide can that horrid pain dispel.\"',\n", - " 'then she sighed and repeated these also,',\n", - " '\"salams fro\\' me to friends in every stead; *',\n", - " 'indeed to all dear friends do i incline:',\n", - " 'salams, but not salams that bid adieu; *',\n", - " 'salams that growth of good for you design:',\n", - " 'i love you dear, indeed, nor less your land, *',\n", - " 'but bide i far from every need of mine!\"',\n", - " 'and when the lady budur ceased repeating her poetry, she wept till her eyes waxed sore and her cheeks changed form and hue, and in this condition she continued three years. now she had a foster-brother, by name marzawán, who was travelling in far lands and absent from her the whole of this time. he loved her with an exceeding love, passing the love of brothers; so when he came back he went in to his mother and asked for his sister, the princess budur. she answered him, \"o my son, thy sister hath been smitten with madness and hath passed these three years with a chain of iron about her neck; and all the physicians and men of science have failed of healing her.\" when marzawan heard these words he said, \"i must needs go in to her; peradventure i may discover what she hath, and be able to medicine her;\" and his mother replied, \"needs must thou visit her, but wait till to morrow, that i may contrive some thing to suit thy case.\" then she went a-foot to the palace of the lady budur and, accosting the eunuch in charge of the gates, made him a present and said to him, \"i have a daughter, who was brought up with thy mistress and since then i married her; and, when that befel the princess which befel her, she became troubled and sore concerned, and i desire of thy favour that my daughter may go in to her for an hour and look on her; and then return whence she came, so shall none know of it.\" quoth the eunuch, \"this may not be except by night, after the king hath visited his child and gone away; then come thou and thy daughter.\" so she kissed the eunuch\\'s hand and, returning home, waited till the morrow at nightfall; and when it was time she arose and sought her son marzawan and attired him in woman\\'s apparel; then, taking his hand in hers, led him towards the palace, and ceased not walking with him till she came upon the eunuch after the sultan had ended his visit to the princess. now when the eunuch saw her, he rose to her, and said, \"enter, but do not prolong thy stay!\" so they went in and when marzawan beheld the lady budur in the aforesaid plight, he saluted her, after his mother had doffed his woman\\'s garb: then he took out of their satchel books he had brought with him; and, lighting a wax- candle, he began to recite certain conjurations thereupon the princess looked at him and recognising him, said, \"o my brother, thou hast been absent on thy travels\\' and thy news have been cut off from us.\" he replied, \"true! but allah hath brought me back safe and sound, i am now minded to set out again nor hath aught delayed me but the news i hear of thee; wherefore my heart burned for thee and i came to thee, so haply i may free thee of thy malady.\" she rejoined, o my brother, thinkest thou it is madness aileth me?\" \"yes.\" answered he, and she said, \"not so, by allah! \\'tis even as saith the poet,',\n", - " \"'quoth they 'thou rav'st on him thou lov'st': quoth i, *\",\n", - " \"'the sweets of love are only for th' insane!'\",\n", - " 'love never maketh time his friend befriend; *',\n", - " 'only the jinn-struck wight such boon can gain:',\n", - " \"well! yes, i'm mad: bring him who madded me *\",\n", - " 'and, if he cure m: madness, blame restrain!\\'\"',\n", - " 'then she let marzawan know that she was love-daft and he said \"tell me concerning thy tale and what befel thee: haply there may be in my hand something which shall be a means of deliverance for thee.\"—and shahrazad perceived the dawn of da, and ceased saying her permitted say.',\n", - " 'when it was the one hundred and ninety-fourth night,',\n", - " 'she said, it hath reached me, o auspicious king, that marzawar thus addressed princess budur, \"tell me concerning thy tale and what befel thee: haply allah may inspire me with a means of deliverance for thee.\" quoth she, \"o my brother, hear my story which is this. one night i awoke from sleep, in the last third of the night and, sitting up, saw by my side the handsomest of youths that be, and tongue faileth to describe him, for he was as a willow-wand or an indian rattan-cane. so methought it was my father who had done on this wise in order thereby to try me, for that he had consulted me concerning wedlock, when the kings sought me of him to wife, and i had refused. it was this though withheld me from arousing him, for i feared that, if i did aught of embraced him, he would peradventure inform my father of m, doings. but in the morning, i found on my finger his seal-ring, in place of my own which he had taken. and, o my brother, m, heart was seized with love of him at first sight; and, for the violence of my passion and longing, i have never savoured the taste of sleep and have no occupation save weeping alway and repeating verses night and day. and this, o my brother, is my story and the cause of my madness.\" then she poured forth tears and repeated these couplets,',\n", - " '\"now love hast banished all that bred delight; *',\n", - " 'with that heart-nibbling fawn my joys took flight:',\n", - " \"lightest of trifles lover's blood to him *\",\n", - " 'who wastes the vitals of the hapless wight!',\n", - " \"for him i'm jealous of my sight and thought; *\",\n", - " 'my heart acts spy upon my thought and sight:',\n", - " 'those long-lashed eyelids rain on me their shafts *',\n", - " \"guileful, destroying hearts where'er they light:\",\n", - " 'now, while my portion in the world endures, *',\n", - " 'shall i behold him ere i quit world-site?',\n", - " \"what bear i for his sake i'd hide, but tears *\",\n", - " \"betray my feelings to the spy's despight.\",\n", - " 'when near, our union seemeth ever far; *',\n", - " 'when far, my thoughts to him aye nearest are.\"',\n", - " 'and presently she continued, \"see then, o my brother, how thou mayest aid me in mine affliction.\" so marzawan bowed his head ground-wards awhile, wondering and not knowing what to do, then he raised it and said to her, \"all thou hast spoken to me i hold to be true, though the case of the young man pass my understanding: but i will go round about all lands and will seek for what may heal thee; haply allah shall appoint thy healing to be at my hand. meanwhile, take patience and be not disquieted.\" thereupon marzawan farewelled her, praying that she might be constant and left her repeating these couplets,',\n", - " '\"thine image ever companies my sprite, *',\n", - " \"for all thou'rt distant from the pilgrim's sight:\",\n", - " \"but my heart-wishes e'er attract thee near: *\",\n", - " \"what is the lightning's speed to thought's swift flight?\",\n", - " 'then go not thou, my very light of eyes *',\n", - " 'which, when thou\\'rt gone, lack all the kohl of light.\"',\n", - " 'then marzawan returned to his mother\\'s house, where he passed the night. and when the morrow dawned, having equipped himself for his journey, he fared forth and ceased not faring from city to city and from island to island for a whole month, till he came to a town named al-tayrab. here he went about scenting news of the townsfolk, so haply he might light on a cure for the princess\\'s malady, for in every capital he entered or passed by, it was reported that queen budur, daughter of king ghayur, had lost her wits. but arriving at al-tayrab city, he heard that kamar al-zaman, son of king shahriman, was fallen sick and afflicted with melancholy madness. so marzawan asked the name of the prince\\'s capital and they said to him, \"it is on the islands of khalidan and it lieth distant from our city a whole month\\'s journey by sea, but by land it is six months\\' march.\" so he went down to the sea in a ship which was bound for the khalidan isles, and she sailed with a favouring breeze for a whole month, till they came in sight of the capital; and there remained for them but to make the land when, behold, there came out on them a tempestuous wind which carried away the masts and rent the canvas, so that the sails fell into the sea and the ship capsized, with all on board,—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and ninety-fifth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when the ship capsized with all on board, each sought his own safety; and as for marzawan the set of the sea carried him under the king\\'s palace, wherein was kamar al-zaman. and by the decree of destiny it so happened that this was the day on which king shahriman gave audience to his grandees and high officers, and he was sitting, with his son\\'s head on his lap, whilst an eunuch fanned away the flies; and the prince had not spoken neither had he eaten nor drunk for two days, and he was grown thinner than a spindle. now the wazir was standing respectfully a-foot near the latticed window giving on the sea and, raising his eyes, saw marzawan being beaten by the billows and at his last gasp; whereupon his heart was moved to pity for him, so he drew near to the king and moving his head towards him said, \"i crave thy leave, o king, to go down to the court of the pavilion and open the water-gate that i may rescue a man who is at the point of drowning in the sea and bring him forth of danger into deliverance; peradventure, on this account allah may free thy son from what he hath!\" the king replied, \"o thou wazir, enough is that which hath befallen my son through thee and on shine account. haply, if thou rescue this drowning man, he will come to know our affairs, and look on my son who is in this state and exult over me; but i swear by allah, that if this half-drowned wretch come hither and learn our condition and look upon my son and then fare forth and speak of our secrets to any, i will assuredly strike off thy head before his; for thou, o my minister art the cause of all that hath betided us, first and last. now do as thou wilt.\" thereupon the wazir sprang up and, opening the private pastern which gave upon the sea, descended to the causeway; then walked on twenty steps and came to the water where he saw marzawan nigh unto death. so he put out his hand to him and, catching him by his hair, drew him ashore in a state of insensibility, with belly full of water and eyes half out of his head. the wazir waited till he came to himself, when he pulled off his wet clothes and clad him in a fresh suit, covering his head with one of his servants\\' turbands; after which he said to him, know that i have been the means of saving thee from drowning: do not thou requite me by causing my death and shine own.\"äand shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the one hundred and ninety-sixth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when the wazir did to marzawan what he did, he thus addressed him know that i have been the cause of saving thee from drowning so requite me not by causing my death and shine own.\" asked marzawan, and how so?\"; and the wazir answered, \"thou art at this hour about to go up and pass among emirs and wazirs all of them silent and none speaking, because of kamar al-zaman the son of the sultan.\" now when marzawan heard the name of kamar al-zaman, he knew that this was he whom he had heard spoken of in sundry cities and of whom he came in search, but he feigned ignorance and asked the wazir, \"and who is kamar al-zaman? answered the minister, \"he is the son of sultan shahriman and he is sore sick and lieth strown on his couch restless alway, eating not nor drinking neither sleeping night or day; indeed he is nigh upon death and we have lost hope of his living and are certain that he is dying. beware lest thou look too long on him, or thou look on any other than that where thou settest thy feet: else thou art a lost man, and i also.\" he replied, \"allah upon thee, o wazir, i implore thee, of thy favour, acquaint me touching this youth thou describest, what is the cause of the condition in which he is.\" the wazir replied, \"i know none, save that, three years ago, his father required him to wed, but he refused; whereat the king was wroth and imprisoned him. and when he awoke on the morrow, he fancied that during the night he had been roused from sleep and had seen by his side a young lady of passing loveliness, whose charms tongue can never express; and he assured us that he had plucked off her seal-ring from her finger and had put it on his own and that she had done likewise; but we know not the secret of all this business. so by allah, o my son, when thou comest up with me into the palace, look not on the prince, but go thy way; for the sultan\\'s heart is full of wrath against me.\" so said marzawan to himself, \"by allah; this is the one i sought!\" then he followed the wazir up to the palace, where the minister seated himself at the prince\\'s feet; but marzawan found forsooth nothing to do but go up to kamar al-zaman and stand before him at gaze. upon this the wazir, died of affright in his skin, and kept looking at marzawan and signalling him to wend his way; but he feigned not to see him and gave not over gazing upon kamar al- zaman, till he was well assured that it was indeed he whom he was seeking,—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and ninety-seventh night,',\n", - " 'she said, it hath reached me, o auspicious king, that when marzawan looked upon kamar al-zaman and knew that it was indeed he whom he was seeking, he cried, \"exalted be allah, who hath made his shape even as her shape and his complexion as her complexion and his cheek as her cheek!\\'\\' upon this kamar al-zaman opened his eyes and gave earnest ear to his speech; and, when marzawan saw him inclining to hear, he repeated these couplets,',\n", - " '\"i see thee full of song and plaint and love\\'s own ecstasy;',\n", - " 'delighting in describing all the charms of loveliness:',\n", - " 'art smit by stroke of love or hath shaft-shot wounded thee?',\n", - " 'none save the wounded ever show such signals of distress!',\n", - " 'ho thou! crown the wine cup and sing me singular',\n", - " \"praises to sulaymá, al-rabáb, tan'oum addrest;\",\n", - " 'go round the grape-vine sun which for mansion hath a jar;',\n", - " 'whose east the cup boy is, and here my mouth that opes for west.',\n", - " \"i'm jealous of the very clothes that dare her sides enroll\",\n", - " 'when she veils her dainty body of the delicatest grace:',\n", - " 'i envy every goblet of her lips that taketh toll',\n", - " 'when she sets the kissing cup on that sweetest kissing-place.',\n", - " \"but deem not by the keen-edged scymitar i'm slain—\",\n", - " 'the hurts and harms i dree are from arrows of her eyes.',\n", - " 'i found her finger tips, as i met her once again,',\n", - " 'deep-reddened with the juice of the wood that ruddy dyes;',\n", - " \"and cried, 'thy palms thou stainedst when far away was i\",\n", - " \"and this is how thou payest one distracted by his pine!'\",\n", - " 'quoth she (enkindling in my heart a flame that burned high',\n", - " 'speaking as one who cannot hide of longing love the sign),',\n", - " \"'by thy life, this is no dye used for dyeing; so forbear\",\n", - " 'thy blame, nor in charging me with falsing love persist!',\n", - " 'but when upon our parting-day i saw thee haste to fare,',\n", - " 'the while were bared my hand and my elbow and my wrist;',\n", - " \"'i shed a flood of blood-red tears and with fingers brushed away; hence blood-reddened were the tips and still blood-red they remain.'\",\n", - " 'had i wept before she wept, to my longing-love a prey,',\n", - " 'before repentance came, i had quit my soul of pain;',\n", - " 'but she wept before i wept and i wept to see her care',\n", - " \"and i said, 'all the merit to precedent;'\",\n", - " 'blame me not for loving her, now on self of love i swear',\n", - " 'for her sake, for her only, these pains my soul torment.',\n", - " \"she hath all the lere of lukmán and yúsuf's beauty lief;\",\n", - " \"sweet singer david's voice and maryam's chastity:\",\n", - " \"while i've all jacob's mourning and jonah's prison-grief,\",\n", - " \"and the sufferings of job and old adam's history:\",\n", - " 'yet kill her not, albeit of my love for her i die;',\n", - " 'but ask her why my blood to her was lawful. ask her why?\"',\n", - " 'when marzawan recited this ode, the words fell upon kamar al- zaman\\'s heart as freshness after fever and returning health; and he sighed and, turning his tongue in his mouth, said to his sire, \"o my father, let this youth come and sit by my side.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the one hundred and ninety-eighth night,',\n", - " 'she said, it hath reached me, o auspicious king, that kamar al- zaman said to his sire, \"o my father, allow this youth to come and sit by my side.\" now when the king heard these words from his son, he rejoiced with exceeding joy, though at the first his heart had been set against marzawan and he had determined that the stranger\\'s head needs must be stricken off: but when he heard kamar al-zaman speak, his anger left him and he arose and drawing marzawan to him, seated him by his son and turning to him said, \"praised be allah for thy safety!\" he replied, \"allah preserve thee! and preserve thy son to thee!\" and called down blessings on the king. then the king asked, \"from what country art thou?\"; and he answered, \"from the islands of the inland sea, the kingdom of king ghayur, lord of the isles and the seas and the seven palaces.\" quoth king shahriman, \"maybe thy coming shall be blessed to my son and allah vouchsafe to heal what is in him.\" quoth marzawan, \"inshallah, naught shall be save what shall be well!\" then turning to kamar al-zaman, he said to him in his ear unheard of the king and his court, \\'o my lord! be of good cheer, and hearten thy heart and let shine eyes be cool and clear and, with respect to her for whose sake thou art thus, ask not of her case on shine account. but thou keptest thy secret and fellest sick, while she told her secret and they said she had gone mad; so she is now in prison, with an iron chain about her neck, in most piteous plight; but, allah willing, the healing of both of you shall come from my hand.\" now when kamar al-zaman heard these words, his life returned to him and he took heart and felt a thrill of joy and signed to his father to help him sit up; and the king was like to fly for gladness and rose hastily and lifted him up. presently, of his fear for his son, he shook the kerchief of dismissal; and all the emirs and wazirs withdrew; then he set two pillows for his son to lean upon, after which he bade them perfume the palace with saffron and decorate the city, saying to marzawan, \"by allah, o my son, of a truth shine aspect be a lucky and a blessed!\" and he made as much of him as he might and called for food, and when they brought it, marzawan came up to the prince and said, \"rise, eat with me.\" so he obeyed him and ate with him, and all the while the king invoked blessings on marzawan and said, \"how auspicious is thy coming, o my son!\" and when the father saw his boy eat, his joy and gladness redoubled, and he went out and told the prince\\'s mother and all the household. then he spread throughout the palace the good news of the prince\\'s recovery and the king commanded the decoration of the city and it was a day of high festival. marzawan passed that night with kamar al-zaman, and the king also slept with them in joy and delight for his son\\'s recovery.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the one hundred and ninety-ninth night,',\n", - " 'she said, it hath reached me, o auspicious king, that king shahriman also passed that night with them in the excess of his joy for his son\\'s recovery. and when the next morning dawned, and the king had gone away and the two young men were left alone, kamar al-zaman told his story from beginning to end to marzawan who said, \"in very sooth i know her with whom thou didst foregather; her name is the princess budur and she is daughter to king ghayur.\" then he related to him all that had passed with the princess from first to last and acquainted him with the excessive love she bore him, saying, \"all that befel thee with thy father hath befallen her with hers, and thou art without doubt her beloved, even as she is shine; so brace up thy resolution and take heart, for i will bring thee to her and unite you both anon and deal with you even as saith the poet,',\n", - " '\"albe to lover adverse be his love, *',\n", - " 'and show aversion howso may he care;',\n", - " 'yet will i manage that their persons meet, *',\n", - " 'e\\'en as the pivot of a scissor pair.\"',\n", - " 'and he ceased not to comfort and solace and encourage kamar al- zaman and urged him to eat and drink till he ate food and drank wine, and life returned to him and he was saved from his ill case; and marzawan cheered him and diverted him with talk and songs and stories, and in good time he became free of his disorder and stood up and sought to go to the hammam. so marzawan took him by the hand and both went to the bath, where they washed their bodies and made them clean.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the two hundredth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when kamar al-zaman, son of king shahriman, went to the hammam, his father in his joy at this event freed the prisoners, and presented splendid dresses to his grandees and bestowed large alm-gifts upon the poor and bade decorate the city seven days. then quoth marzawan to kamar al-zaman, \"know, o my lord, that i came not from the lady budur save for this purpose, and the object of my journey was to deliver her from her present case; and it remaineth for us only to devise how we may get to her, since thy father cannot brook the thought of parting from thee. so it is my counsel that to-morrow thou ask his leave to go abroad hunting. then do thou take with thee a pair of saddle-bags full of money and mount a swift steed, and lead a spare horse, and i will do the like, and say to thy sire, \\'i have a mind to divert myself with hunting the desert and to see the open country and there to pass one night.\\' suffer not any servant to follow us, for as soon as we reach the open country, we will go our ways.\" kamar al- zaman rejoiced in this plan with great joy and cried, \"it is good.\" then he stiffened his back and, going in to his father, sought his leave and spoke as he had been taught, and the king consented to his going forth a-hunting and said, \"o my son, blessed be the day that restoreth thee to health! i will not gainsay thee in this; but pass not more than one night in the desert and return to me on the morrow; for thou knowest that life is not good to me without thee, and indeed i can hardly believe thee to be wholly recovered from what thou hadst, because thou art to me as he of whom quoth the poet,',\n", - " \"'albe by me i had through day and night *\",\n", - " \"solomon's carpet and the chosroes' might,\",\n", - " 'both were in value less than wing of gnat, *',\n", - " 'unless these eyne could hold thee aye in sight.\\'\"',\n", - " 'then the king equipped his son kamar al-zaman and marzawan for the excursion, bidding make ready for them four horses, together with a dromedary to carry the money and a camel to bear the water and belly timber; and kamar al-zaman forbade any of his attendants to follow him. his father farewelled him and pressed him to his breast and kissed him, saying, \"i ask thee in the name of allah, be not absent from me more than one night, wherein sleep will be unlawful to me, for i am even as saith the poet,',\n", - " \"'thou present, in the heaven of heavens i dwell; *\",\n", - " 'bearing shine absence is of hells my hell:',\n", - " 'pledged be for thee my soul! if love for thee *',\n", - " 'be crime, my crime is of the fellest fell.',\n", - " 'does love-lowe burn thy heart as burns it mine, *',\n", - " 'doomed night and day gehenna-fire to smell?\\'\"',\n", - " 'answered kamar al-zaman, \"o my father, inshallah, i will lie abroad but one night!\" then he took leave of him, and he and marzawan mounted and leading the spare horses, the dromedary with the money and the camel with the water and victual, turned their faces towards the open country;—and shahrazad perceived the dawning day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and first night,',\n", - " 'she said, it hath reached me, o auspicious king, that kamar al- zaman and marzawan fared forth and turned their faces towards the open country; and they travelled from the first of the day till nightfall, when they halted and ate and drank and fed their beasts and rested awhile; after which they again took horse and ceased not journeying for three days, and on the fourth they came to a spacious tract wherein was a thicket. they alighted in it and marzawan, taking the camel and one of the horses, slaughtered them and cut off their flesh and stripped their bones. then he doffed from kamar al-zaman his shirt and trousers which he smeared with the horse\\'s blood and he took the prince\\'s coat which he tore to shreds and befouled with gore; and he cast them down in the fork of the road. then they ate and drank and mounting set forward again; and, when kamar al- zaman asked why this was done, and said, \"what is this o my brother, and how shall it profit us?\"; marzawan replied, \"know that thy father, when we have outstayed the second night after the night for which we had his leave, and yet we return not, will mount and follow in our track till he come hither; and, when he happeneth upon this blood which i have spilt and he seeth thy shirt and trousers rent and gore-fouled, he will fancy that some accident befel thee from bandits or wild-beasts, so he will give up hope of thee and return to his city, and by this device we shall win our wishes.\" quoth kamar al-zaman, \"by allah, this be indeed a rare device! thou hast done right well.\\'\\' then the two fared on days and nights and all that while kamar al-zaman did naught but complain when he found himself alone, and he ceased not weeping till they drew near their journeys end, when he rejoiced and repeated these verses,',\n", - " '\"wilt tyrant play with truest friend who thinks of thee each',\n", - " 'hour, * and after showing love-desire betray indifference?',\n", - " 'may i forfeit every favour if in love i falsed thee, *',\n", - " 'if thee i left, abandon me by way of recompense:',\n", - " \"but i've been guilty of no crime such harshness to deserve, *\",\n", - " 'and if i aught offended thee i bring my penitence;',\n", - " \"of fortune's wonders one it is thou hast abandoned me, *\",\n", - " 'but fortune never wearieth of showing wonderments.\"',\n", - " 'when he had made an end of his verses, marzawan said to him, \"look! these be king ghayur\\'s islands;\" whereat kamar al-zaman joyed with exceeding joy and thanked him for what he had done, and kissed him between the eyes and strained him—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and second night,',\n", - " 'she said, it hath reached me, o auspicious king, that when marzawan said \"look! these be the islands of king ghayur;\" kamar al-zaman joyed with exceeding joy and thanked him for what he had done and kissed him between the eyes and strained him to his bosom. and after reaching the islands and entering the city they took up their lodging in a khan, where they rested three days from the fatigues of their wayfare; after which marzawan carried kamar al-zaman to the bath and, clothing him in merchant\\'s gear, provided him with a geomantic tablet of gold, with a set of astrological instruments and with an astrolabe of silver, plated with gold. then he said to him, \"arise, o my lord, and take thy stand under the walls of the king\\'s palace and cry out, \\'i am the ready reckoner; i am the scrivener; i am he who weeteth the sought and the seeker; i am the finished man of science; i am the astrologer accomplished in experience! where then is he that seeketh?\\' as soon as the king heareth this, he will send after thee and carry thee in to his daughter the princess budur, thy lover; but when about going in to her do thou say to him, \\'grant me three days\\' delay, and if she recover, give her to me to wife; and if not, deal with me as thou dealest with those who forewent me.\\' he will assuredly agree to this, so as soon as thou art alone with her, discover thyself to her; and when she seeth thee, she will recover strength and her madness will cease from her and she will be made whole in one night. then do thou give her to eat and drink. and her father, rejoicing in her recovery, will marry thee to her and share his kingdom with thee; for he hath imposed on himself this condition and so peace be upon thee.\" now when kamar al-zaman heard these words he exclaimed, \"may i never lack thy benefits!\", and, taking the set of instruments aforesaid, sallied forth from the caravanserai in the dress of his order. he walked on till he stood under the walls of king ghayur\\'s palace, where he began to cry out, saying, \"i am the scribe, i am the ready reckoner, i am he who knoweth the sought and the seeker; i am he who openeth the volume and summeth up the sums; who dreams can expound whereby the sought is found! where then is the seeker?\" now when the city people heard this, they flocked to him, for it was long since they had seen scribe or astrologer, and they stood round him and, looking upon him, they saw one in the prime of beauty and grace and perfect elegance, and they marvelled at his loveliness, and his fine stature and symmetry. presently one of them accosted him and said, \"allah upon thee, o thou fair and young, with the eloquent tongue! incur not this affray; nor throw thy life away in thine ambition to marry the princess budur. only cast shine eyes upon yonder heads hung up; all their owners have lost their lives in this same venture.\" yet kamar al-zaman paid no heed to them, but cried out at the top of his voice, saying, \"i am the doctor, the scrivener! i am the astrologer, the calculator!\" and all the townsfolk forbade him from this, but he regarded them not at all, saying in his mind, \"none knoweth desire save whoso suffereth it.\" then he began again to cry his loudest, shouting, \"i am the scrivener, i am the astrologer!\"—and shahrazad per ceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the two hundred and third night,',\n", - " 'she said, it hath reached me, o auspicious king, that kamar al- zaman in no wise heeded the words of the citizens, but continued to cry out, \"i am the calculator! i am the astrologer!\" thereupon all the townsfolk were wroth with him and said to him, \"thou art nothing but an imbecile, silly, self-willed lad! have pity on shine own youth and tender years and beauty and loveliness.\" but he cried all the more, \"i am the astrologer, i am the calculator! is there any one that seeketh?\" as he was thus crying and the people forbidding him, behold, king ghayur heard his voice and the clamour of the lieges and said to his wazir, \"go down and bring me yon astrologer.\" so the wazir, went down in haste, and taking kamar al-zaman from the midst of the crowd led him up to the king; and when in the presence he kissed the ground and began versifying,',\n", - " '\"eight glories meet, all, all conjoined in thee, *',\n", - " 'whereby may fortune aye thy servant be:',\n", - " 'lere, lordliness, grace, generosity; *',\n", - " 'plain words, deep meaning, honour, victory!\"',\n", - " 'when the king looked upon him, he seated him by his side and said to him, \"by allah, o my son, an thou be not an astrologer, venture not thy life nor comply with my condition; for i have bound myself that whoso goeth in to my daughter and healeth her not of that which hath befallen her i will strike off his head; but whoso healeth her him i will marry to her. so let not thy beauty and loveliness delude thee: for, by allah! and again, by allah! if thou cure her not, i will assuredly cut off thy head.\" and kamar al-zaman replied, \"this is thy right; and i consent, for i wot of this ere came i hither.\" then king ghayur took the kazis to witness against him and delivered him to the eunuch, saying, \"carry this one to the lady budur.\" so the eunuch took him by the hand and led him along the passage; but kamar al-zaman outstripped him and pushed on before, whilst the eunuch ran after him, saying, \"woe to thee! hasten not to shine own ruin: never yet saw i astrologer so eager for his proper destruction; but thou weetest not what calamities are before thee.\" thereupon kamar al-zaman turned away his face from the eunuch,—and shah razed perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and fourth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when the eunuch thus addressed kamar al-zaman, \"patience, and no indecent hurry!\"; the prince turned away his face and began repeating these couplets,',\n", - " '\"a sage, i feel a fool before thy charms; *',\n", - " 'distraught, i wot not what the words i say:',\n", - " \"if say i 'sun,' away thou dost not pass *\",\n", - " 'from eyes of me, while suns go down with day:',\n", - " 'thou hast completed beauty, in whose praise *',\n", - " 'speech-makers fail, and talkers lose their way.\"',\n", - " 'then the eunuch stationed kamar al-zaman behind the curtain of the princess\\'s door and the prince said to him, \"which of the two ways will please thee more, treat and cure thy lady from here or go in and heal her within the curtain?\" the eunuch marvelled at his words and answered, \"an thou heal her from here it were better proof of thy skill.\" upon this kamar al-zaman sat down behind the curtain and, taking out ink case, pen and paper, wrote the following: \"this is the writ of one whom passion swayeth,* and whom longing waylayeth * and wakeful misery slayeth * one who despaireth of living * and looketh for naught but dying * with whose mourning heart * nor comforter nor helper taketh part * one whose sleepless eyes * none succoureth from anxieties * whose day is passed in fire * and his night in torturing desire * whose body is wasted for much emaciation * and no messenger from his beloved bringeth him consolation.\" and after this he indited the following couplets,',\n", - " '\"i write with heart devoted to thy thought, *',\n", - " 'and eyelids chafed by tears of blood they bled;',\n", - " 'and body clad, by loving pine and pain, *',\n", - " 'in shirt of leanness, and worn down to thread,',\n", - " \"to thee complain i of love's tormentry, *\",\n", - " 'which ousted hapless patience from her stead:',\n", - " 'a toi! show favour and some mercy deign, *',\n", - " 'for passion\\'s cruel hands my vitals shred.\"',\n", - " 'and beneath his lines he wrote these cadenced sentences, \"the heart\\'s pain is removed * by union with the beloved * and whomso his lover paineth * only allah assaineth! * if we or you have wrought deceit * may the deceiver win defeat! * there is naught goodlier than a lover who keeps faith * with the beloved who works him scathe.\" then, by way of subscription, he wrote, \"from the distracted and despairing man * whom love and longing trepan * from the lover under passion\\'s ban * the prisoner of transport and distraction * from this kamar al-zaman * son of shahriman * to the peerless one * of the fair houris the pearl-union * to the lady budur * daughter of king al ghayur * know thou that by night i am sleepless * and by day in distress * consumed with increasing wasting and pain * and longing and love unfain * abounding in sighs * with tear flooded eyes * by passion captive ta\\'en * of desire the slain * with heart seared by the parting of us twain * the debtor of longing bane, of sickness cup-companion * i am the sleepless one, who never closeth eye * the slave of love, whose tears run never dry * for the fire of my heart is still burning * and never hidden is the flame of my yearning.\" then on the margin kamar al-zaman wrote this admired verse,',\n", - " '\"salem from graces hoarded by my lord *',\n", - " 'to her, who holds my heart and soul in hoard!\"',\n", - " 'and also these,',\n", - " '\"pray\\'ee grant me some words from your lips, belike *',\n", - " 'such mercy may comfort and cool these eyne:',\n", - " 'from the stress of my love and my pine for you, *',\n", - " 'i make light of what makes me despised, indign:',\n", - " 'allah guard a folk whose abode was far, *',\n", - " 'and whose secret i kept in the holiest shrine:',\n", - " 'now fortune in kindness hath favoured me *',\n", - " \"thrown on threshold dust of this love o' mine:\",\n", - " 'by me bedded i looked on budúr, whose sun *',\n", - " 'the moon of my fortunes hath made to shine.\"',\n", - " 'then, having affixed his seal-ring to the missive, he wrote these couplets in the place of address,',\n", - " '\"ask of my writ what wrote my pen in dole, *',\n", - " 'and hear my tale of misery from this scroll;',\n", - " 'my hand is writing while my tears down flow, *',\n", - " \"and to the paper 'plains my longing soul:\",\n", - " 'my tears cease not to roll upon this sheet, *',\n", - " 'and if they stopped i\\'d cause blood-gouts to roll.\"',\n", - " 'and at the end he added this other verse,',\n", - " '\"i\\'ve sent the ring from off thy finger bore *',\n", - " 'i when we met, now deign my ring restore!\"',\n", - " \"then kamar al-zaman set the lady budur's ring inside the letter and sealed it and gave it to the eunuch, who took it and went in with it to his mistress.—and shahrazad perceived the dawn of day and ceased to say her permitted say.\",\n", - " 'when it was the two hundred and fifth night,',\n", - " 'she said, it hath reached me, o auspicious king, that kamar al- zaman, after setting the seal-ring inside the epistle, gave it to the eunuch who took it and went in with it to his mistress; and, when the lady budur opened it, she found therein her own very ring. then she read the paper and when she understood its purport and knew that it was from her beloved, and that he in person stood behind the curtain, her reason began to fly and her breast swelled for joy and rose high; and she repeated these couplets,',\n", - " '\"long, long have i bewailed the sev\\'rance of our loves, *',\n", - " 'with tears that from my lids streamed down like burning',\n", - " 'rain;',\n", - " 'and vowed that, if the days deign reunite us two, *',\n", - " 'my lips should never speak of severance again:',\n", - " \"joy hath o'erwhelmed me so that, for the very stress *\",\n", - " 'of that which gladdens me to weeping i am fain.',\n", - " 'tears are become to you a habit, o my eyes, *',\n", - " \"so that ye weep as well for gladness as for pain.''\",\n", - " 'and having finished her verse, the lady budur stood up forthwith and, firmly setting her feet to the wall, strained with all her might upon the collar of iron, till she brake it from her neck and snapped the chains. then going forth from behind the curtain she threw herself on kamar al-zaman and kissed him on the mouth, like a pigeon feeding its young. and she embraced him with all the stress of her love and longing and said to him, \"o my lord do i wake or sleep and hath the almighty indeed vouchsafe] us reunion after disunion? laud be to allah who hath our loves repaired, even after we despaired!\" now when the eunuch saw her in this case, he went off running to king ghayur and, kissing the ground before him, said, \"o my lord, know that this astrologer is indeed the shaykh of all astrologers, who are fools to him, all of them; for verily he hath cured thy daughter while standing behind the curtain and without going in to her.\" quoth the king, \"look well to it, is this news true?\" answered the eunuch, \"o my lord, rise and come and see for thyself how she hath found strength to break the iron chains and is come forth to the astrologer, kissing and embracing him.\" thereupon the king arose and went in to his daughter who, when she saw him, stood up in haste and covered her head, and recited these two couplets,',\n", - " '\"the toothstick love i not; for when i say, *',\n", - " \"'siwák,' i miss thee, for it sounds 'siwá-ka'.\",\n", - " 'the caper-tree i love; for when i say, *',\n", - " '\\'arák\\' it sounds i look on thee, \\'ará-ka.\\'\"',\n", - " 'thereupon the king was so transported for joy at her recovery that he felt like to fly and kissed her between the eyes, for he loved her with dearest love; then, turning to kamar al-zaman, he asked him who he was, and said, \"what countryman art thou?\" so the prince told him his name and rank, and informed him that he was the son of king shahriman, and presently related to him the whole story from beginning to end; and acquainted him with what happened between himself and the lady budur; and how he had taken her seal-ring from her finger and had placed it on his own; whereat ghayur marvelled and said, \"verily your story deserveth in books to be chronicled, and when you are dead and gone age after age be read.\" then he summoned kazis and witnesses forthright and married the lady budur to prince kamar al-zaman; after which he bade decorate the city seven days long. so they spread the tables with all manner of meats, whilst the drums beat and the criers anounced the glad tidings, and all the troops donned their richest clothes; and they illuminated the city and held high festival. then kamar al-zaman went in to the lady budur and the king rejoiced in her recovery and in her marriage; and praised allah for that he had made her to fall in love with a goodly youth of the sons of kings. so they unveiled her and displayed the bride before the bridegroom; and both were the living likeness of each other in beauty and comeliness and grace and love-allurement. then kamar al-zaman lay with her that night and took his will of her, whilst she in like manner fulfilled her desire of him and enjoyed his charms and grace; and they slept in each other\\'s arms till the morning. on the morrow, the king made a wedding-feast to which he gathered all comers from the islands of the inner and outer seas, and he spread the tables with choicest viands nor ceased the banquetting for a whole month. now when kamar al-zaman had thus fulfilled his will and attained his inmost desire, and whenas he had tarried awhile with the princess budur, he bethought him of his father, king shahriman, and saw him in a dream, saying, \"o my son, is it thus thou dealest with me?\" and recited in the vision these two couplets,',\n", - " '\"indeed to watch the darkness-moon he blighted me, *',\n", - " 'and to star-gaze through longsome night he plighted me:',\n", - " \"easy, my heart! for haply he'll unite with thee; *\",\n", - " 'and patience, sprite! with whatso ills he dight to thee.\"',\n", - " 'now after seeing his father in the dream and hearing his re preaches, kamar al-zaman awoke in the morning, afflicted and troubled, whereupon the lady budur questioned him and he told her what he had seen.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and sixth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when kamar al-zaman acquainted the lady budur with what he had seen in his dream, she and he went in to her sire and, telling him what had passed, besought his leave to travel. he gave the prince the permission he sought; but the princess said, \"o my father, i cannot bear to be parted from him.\" quoth ghayur, her sire, \"then go thou with him,\" and gave her leave to be absent a whole twelvemonth and afterwards to visit him in every year once; so she kissed his hand and kamar al-zaman did the like. thereupon king ghayur proceeded to equip his daughter and her bridegroom for the journey, and furnished them with outfit and appointments for the march; and brought out of his stables horses marked with his own brand, blood-dromedaries which can journey ten days without water, and prepared a litter for his daughter, besides loading mules and camels with victual; moreover, he gave them slaves and eunuchs to serve them and all manner of travellinggear; and on the day of departure, when king ghayur took leave of kamar al-zaman, he bestowed on him ten splendid suits of cloth of gold embroidered with stones of price, together with ten riding horses and ten she-camels, and a treasury of money; and he charged him to love and cherish his daughter the lady budur. then the king accompanied them to the farthest limits of his islands where, going in to his daughter budur in the litter, he kissed her and strained her to his bosom, weeping and repeating,',\n", - " '\"o thou who wooest severance, easy fare! *',\n", - " 'for love-embrace belongs to lover-friend:',\n", - " \"fare softly! fortune's nature falsehood is, *\",\n", - " 'and parting shall love\\'s every meeting end.\"',\n", - " 'then leaving his daughter, he went to her husband and bade him farewell and kissed him; after which he parted from them and, giving the order for the march he returned to his capital with his troops. the prince and princess and their suite fared on without stopping through the first day and the second and the third and the fourth, nor did they cease faring for a whole month till they came to a spacious champaign, abounding in pasturage, where they pitched their tents; and they ate and drank and rested, and the princess budur lay down to sleep. presently, kamar al-zaman went in to her and found her lying asleep clad in a shift of apricot-coloured silk that showed all and everything; and on her head was a coif of gold-cloth embroidered with pearls and jewels. the breeze raised her shift which laid bare her navel and showed her breasts and displayed a stomach whiter than snow, each one of whose dimples would contain an ounce of benzoin- ointment. at this sight, his love and longing redoubled, and he began reating,',\n", - " '\"an were it asked me when by hell-fire burnt, *',\n", - " 'when flames of heart my vitals hold and hem,',\n", - " \"'which wouldst thou chose, say wouldst thou rather them, *\",\n", - " 'or drink sweet cooling draught?\\' i\\'d answer, \\'them!\\' \"',\n", - " 'then he put his hand to the band of her petticoat-trousers and drew it and loosed it, for his soul lusted after her, when he saw a jewel, red as dye-wood, made fast to the band. he untied it and examined it and, seeing two lines of writing graven thereon, in a character not to be read, marvelled and said in his mind, \"were not this bezel something to her very dear she had not bound it to her trousers-band nor hidden it in the most privy and precious place about her person, that she might not be parted from it. would i knew what she cloth with this and what is the secret that is in it.\" so saying, he took it and went outside the tent to look at it in the light,—and shahrazad perceived the dawn of day, and ceased to say her permitted say.',\n", - " 'when it was the two hundred and seventh night,',\n", - " 'she said, it hath reached me, o auspicious king, that when he took the bezel to look at it in the light, the while he was holding it behold, a bird swooped down on him and, snatching the same from his hand, flew off with it and then lighted on the ground. there-upon kamar al-zaman fearing to lose the jewel, ran after the bird; but it flew on before him, keeping just out of his reach, and ceased not to draw him on from dale to dale and from hill to hill, till the night starkened and the firmament darkened, when it roosted on a high tree. so kamar al-zaman stopped under the tree confounded in thought and faint for famine and fatigue, and giving himself up for lost, would have turned back, but knew not the way whereby he came, for that darkness had overtaken him. then he exclaimed, \"there is no majesty and there is no might save in allah, the glorious the great!\"; and laying him down under the tree (whereon was the bird) slept till the morning, when he awoke and saw the bird also wake up and fly away. he arose and walked after it, and it flew on little by little before him, after the measure of his faring; at which he smiled and said, \"by allah, a strange thing! yesterday, this bird flew before me as fast as i could run, and to-day, knowing that i have awoke tired and cannot run, he flieth after the measure of my faring. by allah, this is wonderful! but i must needs follow this bird whether it lead me to death or to life; and i will go wherever it goeth, for at all events it will not abide save in some inhabited land. so he continued to follow the bird which roosted every night upon a tree; and he ceased not pursuing it for a space of ten days, feeding on the fruits of the earth and drinking of its waters. at the end of this time, he came in sight of an inhabited city, whereupon the bird darted off like the glance of the eye and, entering the town, disappeared from kamar al-zaman, who knew not what it meant or whither it was gone; so he marvelled at this and exclaimed, \"praise be to allah who hath brought me in safety to this city!\" then he sat down by a stream and washed his hands and feet and face and rested awhile; and, recalling his late easy and pleasant life of union with his beloved and contrasting it with his present plight of trouble and fatigue and distress and strangerhood and famine and severance, the tears streamed from his eyes and he began repeating these cinquains,',\n", - " '\"pain had i hid thy handwork, but it showed, *',\n", - " 'changed sleep for wake, and wake with me abode:',\n", - " 'when thou didst spurn my heart i cried aloud *',\n", - " 'pate, hold thy hand and cease to gird and goad:',\n", - " 'in dole and danger aye my sprite i spy!',\n", - " 'an but the lord of love were just to me, *',\n", - " \"sleep fro' my eyelids ne'er were forced to flee.\",\n", - " \"pity, my lady, one for love o' thee *\",\n", - " 'prom his tribes darling brought to low degree:',\n", - " 'love came and doomed wealth beggar-death to die.',\n", - " \"the railers chide at thee: i ne'er gainsay, *\",\n", - " 'but stop my ears and dumbly sign them nay:',\n", - " \"'thou lov'st a slender may,' say they; i say, *\",\n", - " \"'i've picked her out and cast the rest away:'\",\n", - " \"enough; when fate descends she blinds man's\",\n", - " 'eye!\"',\n", - " 'and as soon as he had finished his poetry and had taken his rest, he rose and walked on little by little, till he entered the city.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and eighth night,',\n", - " 'she said, it hath reached me, o auspicious king, that as soon as kamar al-zaman had finished his poetry and had taken his rest, he arose and entered the city-gate not knowing whither he should wend. he crossed the city from end to end, entering by the land-gate, and ceased not faring on till he came out at the sea- gate, for the city stood on the sea-shore. yet he met not a single one of its citizens. and after issuing from the land-gate he fared forwards and ceased not faring till he found himself among the orchards and gardens of the place; and, passing among the trees presently came to a garden and stopped before its door; where-upon the keeper came out to him and saluted him. the prince returned his greeting and the gardener bade him welcome, saying, \"praised be allah that thou hast come off safe from the dwellers of this city! quick, come into the garth, ere any of the townfolk see thee.\" thereupon kamar al-zaman entered that garden, wondering in mind, and asked the keeper, \"what may be the history of the people of this city and who may they be?\" the other answered, \"know that the people of this city are all magians: but allah upon thee, tell me how thou camest to this city and what caused thy coming to our capital.\" accordingly kamar al-zaman told the gardener all that had befallen him from beginning to end, whereat he marvelled with great marvel and said, \"know, o my son, that the cities of al-islam lie far from us; and between us and them is a four months\\' voyage by sea and a whole twelve months\\' journey by land. we have a ship which saileth every year with merchandise to the nearest moslem country and which entereth the seas of the ebony islands and thence maketh the khalidan islands, the dominions of king shahriman.\" thereupon kamar al- zaman considered awhile and concluded that he could not do better than abide in the garden with the gardener and become his assistant, receiving for pay one fourth of the produce. so he said to him, \"wilt thou take me into thy service, to help thee in this garden?\" answered the gardener, \"to hear is to consent;\" and began teaching him to lead the water to the roots of the trees. so kamar al-zaman abode with him, watering the trees and hoeing up the weeds and wearing a short blue frock which reached to his knees. and he wept floods of tears; for he had no rest day or night, by reason of his strangerhood and he ceased not to repeat verses upon his beloved, amongst others the following couplets,',\n", - " '\"ye promised us and will ye not keep plight? *',\n", - " 'ye said a say and shall not deed be dight?',\n", - " 'we wake for passion while ye slumber and sleep; *',\n", - " 'watchers and wakers claim not equal right:',\n", - " 'we vowed to keep our loves in secrecy, *',\n", - " 'but spake the meddler and you spoke forthright:',\n", - " 'o friend in pain and pleasure, joy and grief, *',\n", - " 'in all case you, you only, claim my sprite!',\n", - " 'mid folk is one who holds my prisoned heart; *',\n", - " 'would he but show some ruth for me to sight.',\n", - " 'not every eye like mine is wounded sore, *',\n", - " 'not every heart like mine love-pipings blight:',\n", - " 'ye wronged me saying, love is wrongous aye *',\n", - " 'yea! ye were right, events have proved that quite.',\n", - " 'forget they one love-thralled, whose faith the world *',\n", - " 'robs not, though burn the fires in heart alight:',\n", - " 'if an my foeman shall become my judge, *',\n", - " 'whom shall i sue to remedy his despight?',\n", - " 'had not i need of love nor love had sought, *',\n", - " 'my heart forsure were not thus love-distraught.\"',\n", - " 'such was the case with kamar al-zaman; but as regards his wife, the lady budur, when she awoke she sought her husband and found him not: then she saw her petticoat-trousers undone, for the band had been loosed and the bezel lost, whereupon she said to herself, \"by allah, this is strange! where is my husband? it would seem as if he had taken the talisman and gone away, knowing not the secret which is in it. would to heaven i knew whither can he have wended! but it must needs have been some extraordinary matter that drew him away, for he cannot brook to leave me a moment. allah curse the stone and damn its hour!\" then she considered awhile and said in her mind, \"if i go out and tell the varlets and let them learn that my husband is lost they will lust after me: there is no help for it but that i use stratagem. so she rose and donned some of her husband\\'s clothes and riding- boots, and a turband like his, drawing one corner of it across her face for a mouth-veil. then, setting a slave-girl in her litter, she went forth from the tent and called to the pages who brought her kamar al-zaman\\'s steed; and she mounted and bade them load the beasts and resume the march. so they bound on the burdens and departed; and she concealed her trick, none doubting but she was kamar al-zaman, for she favoured him in face and form; nor did she cease journeying, she and her suite, days and nights, till they came in sight of a city overlooking the salt sea, where they pitched their tents without the walls and halted to rest. the princess asked the name of the town and was told, \"it is called the city of ebony; its king is named armanús, and he hath a daughter hayát al-nufús hight,\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the two hundred and ninth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when the lady budur halted within sight of the ebony city to take her rest, king armanus sent a messenger, to learn what king it was who had encamped without his capital; so the messenger, coming to the tents, made inquiry anent their king, and was told that she was a king\\'s son who had lost the way being bound for the khalidan islands; whereupon he returned to king armanus with the tidings; and, when the king heard them, he straightway rode out with the lords of his land to greet the stranger on arrival. as he drew near the tents the lady budur came to meet him on foot, whereupon the king alighted and they saluted each other. then he took her to the city and, bringing her up to the palace, bade them spread the tables and trays of food and commanded them to transport her company and baggage to the guess house. so they abode there three days; at the end of which time the king came in to the lady budur. now she had that day gone to the hammam and her face shone as the moon at its full, a seduction to the world and a rending of the veil of shame to mankind; and armanus found her clad in a -suit of silk, embroidered with gold and jewels; so he said to her, \\'o my son, know that i am a very old man, decrepit withal, and allah hath blessed me with no child save one daughter, who resembleth thee in beauty and grace; and i am now waxed unfit for the conduct of the state. she is shine, o my son; and, if this my land please thee and thou be willing to abide and make thy home here, i will marry thee to her and give thee my kingdom and so be at rest.\" when princess budur heard this, she bowed her head and her forehead sweated for shame, and she said to herself. \"how shall i do, and i a woman? if i refuse and depart from him, i cannot be safe but that haply send after me troops to slay me; and if i consent, belike i shall be put to shame. i have lost my beloved kamar al-zaman and know not what is become of him; nor can i escape from this scrape save by holding my peace and consenting and abiding here, till allah bring about what is to be.\" so she raised her head and made submission to king armanus, saying, \"hearkening and obedience!\"; whereat he rejoiced and bade the herald make proclamation throughout the ebony islands to hold high festival and decorate the houses. then he assembled his chamberlains and nabobs, and emirs and wazirs and his officers of state and the kazis of the city; and, formally abdicating his sultanate, endowed budur therewith and invested her in all the vestments of royalty. the emirs and grandees went in to her and did her homage, nothing doubting but that she was a young man, and all who looked on her bepissed their bag-trousers, for the excess of her beauty and loveliness. then, after the lady budur had been made sultan and the drums had been beaten in announcement of the glad event, and she had been ceremoniously enthroned, king armanus proceeded to equip his daughter hayat al-nufus for marriage, and in a few days, they brought the lady budur in to her, when they seemed as it were two moons risen at one time or two suns in conjunction. so they entered the bridal-chamber and the doors were shut and the curtains let down upon them, after the attendants had lighted the wax-candles and spread for them the carpet-bed. when budur found herself alone with the princess hayat al-nufus, she called to mind her beloved kamar al-zaman and grief was sore upon her. so she wept for his absence, and estrangement and she began repeating,',\n", - " '\"o ye who fled and left my heart in pain low li\\'en, *',\n", - " 'no breath of life if found within this frame of mine:',\n", - " \"i have an eye which e'er complains of wake, but lo! *\",\n", - " 'tears occupy it would that wake content these eyne!',\n", - " \"after ye marched forth the lover 'bode behind; *\",\n", - " 'question of him what pains your absence could design!',\n", - " 'but for the foods of tears mine eyelids rail and rain, *',\n", - " 'my fires would flame on high and every land calcine.',\n", - " 'to allah make i moan of loved ones lost for aye, *',\n", - " 'who for my pine and pain no more shall pain and pine:',\n", - " 'i never wronged them save that over love i nurst: *',\n", - " 'but love departs us lovers into blest and curst.\"',\n", - " 'and when she had finished her repeating, the lady budur sat down beside the princess hayat al-nufus and kissed her on the mouth; after which rising abruptly, she made the minor ablution and betook herself to her devotions; nor did she leave praying till hayat al-nufus fell asleep, when she slips into bed and lay with her back to her till morning. and when day had broke the king and queen came in to their daughter and asked her how she did. whereupon she told them what she had seen, and repeated to them the verses she had heard. thus far concerning hayat al-nufus and her father; but as regards queen budur she went forth and seated herself upon the royal throne and all the emirs and captains and officers of state came up to her and wished her joy of the kingship, kissing the earth before her and calling down blessings upon her. and she accosted them with smiling face and clad them in robes of honour, augmenting the fiefs of the high officials and giving largesse to the levies; wherefore all the people loved her and offered up prayers for the long endurance of her reign, doubting not but that she was a man. and she ceased not sitting all day in the hall of audience, bidding and forbidding; dispensing justice, releasing prisoners and remitting the customs-dues, till nightfall, when she withdrew to the apartment prepared for her. here she found hayat al-nufus seated, so she sat down by her side and, clapping her on the back, coaxed and caressed her and kissed her between the eyes, and fell to versifying in these couplets,',\n", - " '\"what secret kept i these my tears have told, *',\n", - " 'and my waste body must my love unfold:',\n", - " 'though hid my pine, my plight on parting day *',\n", - " 'to every envious eye my secret sold:',\n", - " \"o ye who broke up camp, you've left behind *\",\n", - " 'my spirit wearied and my heart a-cold:',\n", - " 'in my hearts core ye dwell, and now these eyne *',\n", - " 'roll blood-drops with the tears they whilome rolled:',\n", - " 'the absent will i ransom with my soul; *',\n", - " 'all can my yearning for their sight behold:',\n", - " 'i have an eye whose babe, for love of thee, *',\n", - " 'rejected sleep nor hath its tears controlled.',\n", - " 'the foeman bids me patient bear his loss, *',\n", - " \"ne'er may mine ears accept the ruth he doled!\",\n", - " 'i tricks their deme of me, and won my wish *',\n", - " \"of kamar al-zaman's joys manifold:\",\n", - " 'he joins all perfect gifts like none before, *',\n", - " 'boasted such might and main no king of old:',\n", - " \"seeing his gifts, bin zá'idah's largesse *\",\n", - " \"forget we, and mu'áwiyah mildest-soul'd:\",\n", - " \"were verse not feeble and o'er short the time *\",\n", - " 'i had in laud of him used all of rhyme.\"',\n", - " 'then queen budur stood up and wiped away her tears and, making the lesser ablution, applied her to pray: nor did she give over praying till drowsiness overcame the lady hayat al- nufus and she slept, whereupon the lady budur came and lay by her till the morning. at daybreak, she arose and prayed the dawn- prayer; and presently seated herself on the royal throne and passed the day in ordering and counter ordering and giving laws and administering justice. this is how it fared with her; but as regards king armanus he went in to his daughter and asked her how she did; so she told him all that had befallen her and repeated to him the verses which queen budur had recited, adding, \"o my father, never saw i one more abounding in sound sense and modesty than my husband, save that he cloth nothing but weep and sigh.\" he answered, \"o my daughter, have patience with him yet this third night, and if he go not in unto thee and do away thy maidenhead, we shall know how to proceed with him and oust him from the throne and banish him the country.\" and on this wise he agreed with his daughter what course he would take.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and tenth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when king armanus had agreed with his daughter on this wise and had determined what course he would take and night came on, queen budur arose from the throne of her kingdom and betaking herself to the palace, entered the apartment prepared for her. there she found the wax-candles lighted and the princess hayat al-nufus seated and awaiting her; whereupon she bethought her of her husband and what had betided them both of sorrow and severance in so short a space; she wept and sighed and groaned groan upon groan, and began improvising these couplets,',\n", - " '\"news of my love fill all the land, i swear, *',\n", - " 'as suns on ghazá-wold rain heat and glare:',\n", - " 'speaketh his geste but hard its sense to say; *',\n", - " 'thus never cease to grow my cark and care:',\n", - " 'i hate fair patience since i loved thee; *',\n", - " \"e'er sawest lover hate for love to bear?\",\n", - " 'a glance that dealt love-sickness dealt me death, *',\n", - " 'glances are deadliest things with torments rare:',\n", - " 'he shook his love locks down and bared his chin, *',\n", - " 'whereby i spied his beauties dark and fair:',\n", - " 'my care, my cure are in his hands; and he *',\n", - " 'who caused their dolour can their dole repair:',\n", - " 'his belt went daft for softness of his waist; *',\n", - " 'his hips, for envy, to uprise forbear:',\n", - " 'his brow curl-diademed is murky night; *',\n", - " 'unveil \\'t and lo! bright morn shows brightest light.\"',\n", - " 'when she had finished her versifying, she would have risen to pray, but, lo and behold! hayat al-nufus caught her by the skirt and clung to her saying, \"o my lord, art thou not ashamed before my father, after all his favour, to neglect me at such a time as this?\" when queen budur heard her words, she sat down in the same place and said, \"o my beloved, what is this thou sayest?\" she replied, \"what i say is that i never saw any so proud of himself as thou. is every fair one so disdainful? i say not this to incline thee to me; i say it only of my fear for thee from king armanus; because he purposeth, unless thou go in unto me this very night, and do away my maidenhead, to strip thee of the kingship on the morrow and banish thee his kingdom; and peradventure his excessive anger may lead him to slay thee. but i, o my lord, have ruth on thee and give thee fair warning; and it is thy right to reck.\" now when queen budur heard her speak these words, she bowed her head ground-wards awhile in sore perplexity and said in herself, \"if i refuse i\\'m lost; and if i obey i\\'m shamed. but i am now queen of all the ebony islands and they are under my rule, nor shall i ever again meet my kamar al- zaman save in this place; for there is no way for him to his native land but through the ebony islands. verily, i know not what to do in my present case, but i commit my care to allah who directeth all for the best, for i am no man that i should arise and open this virgin girl.\" then quoth queen budur to hayat al- nufus, \"o my beloved, that i have neglected thee and abstained from thee is in my own despite.\" and she told her her whole story from beginning to end and showed her person to her, saying, \"i conjure thee by allah to keep my counsel, for i have concealed my case only that allah may reunite me with my beloved kamar al- zaman and then come what may.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the two hundred and eleventh night,',\n", - " 'she said, it hath reached me, o auspicious king, that when the lady budur acquainted hayat al-nufus with her history and bade her keep it secret, the princess heard her with extreme wonderment and was moved to pity and prayed allah to reunite her with her beloved, saying, \"fear nothing, o my sister; but have patience till allah bring to pass that which must come to pass:\" and she began repeating,',\n", - " '\"none but the men of worth a secret keep;',\n", - " \"with worthy men a secret's hidden deep;\",\n", - " 'as in a room, so secrets lie with me,',\n", - " 'whose door is sealed, lock shot and lost the key.\"',\n", - " 'and when hayat al-nufus had ended her verses, she said, \"o my sister, verily the breasts of the noble and brave are of secrets the grave; and i will not discover shine.\" then they toyed and embraced and kissed and slept till near the mu\\'ezzin\\'s call to dawn prayer, when hayat al-nufus arose and took a pigeon-poult, and cut its throat over her smock and besmeared herself with its blood. then she pulled off her petticoat-trousers and cried aloud, where-upon her people hastened to her and raised the usual lullilooing and outcries of joy and gladness. presently her mother came in to her and asked her how she did and busied herself about her and abode with her till evening; whilst the lady budur arose with the dawn, and repaired to the bath and, after washing herself pure, proceeded to the hall of audience, where she sat down on her throne and dispensed justice among the folk. now when king armanus heard the loud cries of joy, he asked what was the matter and was informed of the consummation of his daughter\\'s marriage; whereat he rejoiced and his breast swelled with gladness and he made a great marriage-feast whereof the merry-making lasted a long time. such was their case: but as regards king shahriman it was on this wise. after his son had fared forth to the chase accompanied by marzawan, as before related, he tarried patiently awaiting their return at nightfall; but when his son did not appear he passed a sleepless night and the dark hours were longsome upon him; his restlessness was excessive, his excitement grew upon him and he thought the morning would never dawn. anc when day broke he sat expecting his son and waited till noon, but he came not; whereat his heart forebode separation and was fired with fears for kamar al-zaman; and he cried, \"alas! my son!\" and he wept till his clothes were drenched with tears, and repeated with a beating heart,',\n", - " '\"love\\'s votaries i ceased not to oppose, *',\n", - " \"till doomed to taste love's bitter and love's sweet:\",\n", - " 'i drained his rigour-cup to very dregs, *',\n", - " \"self humbled at its slaves' and freemen's feet:\",\n", - " 'fortune had sworn to part the loves of us; *',\n", - " 'she kept her word how truly, well i weet!\"',\n", - " 'and when he ended his verse, he wiped away his tears and bade his troops make ready for a march and prepare for a long expedition. so they all mounted and set forth, headed by the sultan, whose heart burnt with grief and was fired with anxiety for his son kamar al-zaman; and they advanced by forced marches. now the king divided his host into six divisions, a right wing and a left wing, a vanguard and a rear guard; and bade them rendezvous for the morrow at the cross-roads. accordingly they separated and scoured the country all the rest of that day till night, and they marched through the night and at noon of the ensuing day they joined company at the place where four roads met. but they knew not which the prince followed, till they saw the sign of torn clothes and sighted shreds of flesh and beheld blood still sprinkled by the way and they noted every piece of the clothes and fragment of mangled flesh scattered on all sides. now when king shahriman saw this, he cried from his heart-core a loud cry, saying, \"alas, my son!\"; and buffeted his face and plucks his beard and rent his raiment, doubting not but his son was dead. then he gave himself up to excessive weeping and wailing, and the troops also wept for his weeping, all being assured that prince kamar al-zaman had perished. they threw dust on their heads, and the night surprised them shedding tears and lamenting till they were like to die. then the king with a heart on fire and with burning sighs spake these couplets,',\n", - " '\"chide not the mourner for bemourning woe; *',\n", - " 'enough is yearning every ill to show:',\n", - " 'he weeps for stress of sorrow and of pain, *',\n", - " 'and these to thee best evidence his lowe:',\n", - " \"happy! of whom love sickness swore that ne'er *\",\n", - " 'should cease his eye lids loving tears to flow:',\n", - " 'he mourns the loss of fairest, fullest moon, *',\n", - " \"shining o'er all his peers in glorious glow:\",\n", - " 'but death made drink a brimming cup, what day *',\n", - " 'he fared from natal country fain to go:',\n", - " 'his home left he and went from us to grief; *',\n", - " 'nor to his brethren could he say adieu:',\n", - " 'yea, his loss wounded me with parting pangs, *',\n", - " 'and separation cost me many a throe:',\n", - " 'he fared farewelling, as he fared, our eyes; *',\n", - " 'whenas his lord vouch-safed him paradise.\"',\n", - " 'and when king shahriman had ended his verses, he returned with the troops to his capital,—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and twelfth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when king shahriman had ended his verses, he returned with the troops to his capital, giving up his son for lost, and deeming that wild beasts or banditti had set upon him and torn him to pieces; and made proclamation that all in the khalidan islands should don black in mourning for him. moreover, he built, in his memory, a pavilion, naming it house of lamentations; and on mondays and thursdays he devoted himself to the business of the state and ordering the affairs of his levies and lieges; and the rest of the week he was wont to spend in the house of lamentations, mourning for his son and bewailing him with elegiac verses, of which the following are some:—',\n", - " '\"my day of bliss is that when thou appearest; *',\n", - " 'my day of bale is that whereon thou farest:',\n", - " 'though through the night i quake in dread of death; *',\n", - " 'union wi\\' thee is of all bliss the dearest.\"',\n", - " 'and again he said,',\n", - " '\"my soul be sacrifice for one, whose going *',\n", - " 'afflicted hearts with sufferings sore and dread:',\n", - " 'let joy her widowed term fulfil, for i *',\n", - " 'divorced joy with the divorce thrice-said.\"',\n", - " 'such was the case with king shahriman; but as regards queen budur daughter of king ghayur, she abode as ruler in the ebony islands, whilst the folk would point to her with their fingers, and say, \"yonder is the son-in-law of king armanus.\" and every night she lay with hayat al-nufus, to whom she lamented her desolate state and longing for her husband kamar al-zaman; weeping and describing to her his beauty and loveliness, and yearning to enjoy him though but in a dream: and at times she would repeat,',\n", - " '\"well allah wots that since my severance from thee, *',\n", - " 'i wept till forced to borrow tears at usury:',\n", - " \"'patience!' my blamer cried, 'heartsease right soon shalt see!' *\",\n", - " 'quoth i, \\'say, blamer, where may home of patience be?\\'\"',\n", - " 'this is how it fared with queen budur; but as regards kamar al- zaman, he abode with the gardener in the garden for no short time, weeping night and day and repeating verses bewailing the past time of enjoyment and delight; whilst the gardener kept comforting him and assuring him that the ship would set sail for the land of the moslems at the end of the year. and in this condition he continued till one day he saw the folk crowding together and wondered at this; but the gardener came in to him and said, \"o my son, give over work for this day nor lead water to the trees; for it is a festival day, whereon folk visit one another. so take thy rest and only keep shine eye on the garden, whilst i go look after the ship for thee; for yet but a little while and i send thee to the land of the moslems.\" upon this, he went forth from the garden leaving to himself kamar al-zaman, who fell to musing upon his case till his heart was like to break and the tears streamed from his eyes. so he wept with excessive weeping till he swooned away and, when he recovered, he rose and walked about the garden, pondering what time had done with him and bewailing the long endurance of his estrangement and separation from those he loved. as he was thus absorbed in melancholy thought, his foot stumbled and he fell on his face, his forehead striking against the projecting root of a tree; and the blow cut it open and his blood ran down and mingled with his tears then he rose and, wiping away the blood, dried his tears and bound his brow with a piece of rag; then continued his walk about the garden engrossed by sad reverie. presently, he looked up at a tree and saw two birds quarrelling thereon, and one of them rose up and smote the other with its beak on the neck and severed from its body its head, wherewith it flew away, whilst the slain bird fell to the ground before kamar al-zaman. as it lay, behold, two great birds swooped down upon it alighting, one at the head and the other at the tail, and both drooped their wings and bowed their bills over it and, extending their necks towards it, wept. kamar al-zaman also wept when seeing the birds thus bewail their mate, and called to mind his wife and father, and shahrazed perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the two hundred and thirteenth night,',\n", - " 'she said, it hath reached me, o auspicious king, that kamar al- zaman wept and lamented his separation from spouse and sire, when he beheld those two birds weeping over their mate. then he looked at the twain and saw them dig a grave and therein bury the slain bird; after which they flew away far into the firmament and disappeared for a while; but presently they returned with the murtherer-bird and, alighting on the grave of the murthered, stamped on the slayer till they had done him to death. then they rent his belly and tearing out his entrails, poured the blood on the grave of the slain: moreover, they stripped off his skin and tare his flesh in pieces and, pulling out the rest of the bowels, scattered them hither and thither. all this while kamar al-zaman was watching them wonderingly; but presently, chancing to look at the place where the two birds had slain the third, he saw therein something gleaming. so he drew near to it and noted that it was the crop of the dead bird. whereupon he took it and opened it and found the talisman which had been the cause of his separation from his wife. but when he saw it and knew it, he fell to the ground a-fainting for joy; and, when he revived, he said, \"praised be allah! this is a foretaste of good and a presage of reunion with my beloved.\" then he examined the jewel and passed it over his eyes; after which he bound it to his forearm, rejoicing in coming weal, and walked about till nightfall awaiting the gardener\\'s return; and when he came not, he lay down and slept in his wonted place. at daybreak he rose to his work and, girding his middle with a cord of palm- fibre, took hatchet and basket and walked down the length of the garden, till he came to a carob-tree and struck the axe into its roots. the blow rang and resounded; so he cleared away the soil from the place and discovered a trap-door and raised it.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and fourteenth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when kamar al-zaman raised the trap-door, he found a winding stair, which he descended and came to an ancient vault of the time of ad and thamúd, hewn out of the rock. round the vault stood many brazen vessels of the bigness of a great oil-jar which he found full of gleaming red gold: whereupon he said to himself, \"verily sorrow is gone and solace is come!\" then he mounted from the souterrain to the garden and, replacing the trap-door as it was before, busied himself in conducting water to the trees till the last of the day, when the gardener came back and said to him, \"o my son, rejoice at the good tidings of a speedy return to thy native land: the merchants are ready equipped for the voyage and the ship in three days\\' time will set sail for the city of ebony, which is the first of the cities of the moslems, and after making it, thou must travel by land a six months\\' march till thou come to the islands of khalidan, the dominions of king shahriman.\" at this kamar al-zaman rejoiced and began repeating,',\n", - " '\"part not from one whose wont is not to part from you; *',\n", - " 'nor with your cruel taunts an innocent mortify:',\n", - " \"another so long parted had ta'en heart from you, *\",\n", - " 'and had his whole condition changed,—but not so i.\"',\n", - " 'then he kissed the gardener\\'s hand and said, \"o my father, even as thou hast brought me glad tidings, so i also have great good news for thee,\\' and told him anent his discovery of the vault; whereat the gardener rejoiced and said, \"o my son, fourscore years have i dwelt in this garden and have never hit on aught whilst thou, who hast not sojourned with me a year, hast discovered this thing; wherefore it is heaven\\'s gift to thee, which shall end thy crosses and aid thee to rejoin thy folk and foregather with her thou lovest.\" quoth kamar al-zaman, \"there is no help but it must be shared between me and thee.\" then he carried him to the underground-chamber and showed him the gold, which was in twenty jars: he took ten and the gardener ten, and the old man said to him, \"o my son, fill thyself leather bottles with the sparrow-olives which grow in this garden, for they are not found except in our land; and the merchants carry them to all parts. lay the gold in the bottles and strew it over with olives: then stop them and cover them and take them with thee in the ship.\" so kamar al-zaman arose without stay or delay and took fifty leather bottles and stored in each somewhat of the gold, and closed each one after placing a layer of olives over the gold; and at the bottom of one of the bottles he laid the talisman. then sat he down to talk with the gardener, confident of speedy reunion with his own people and saying to himself, \"when i come to the ebony islands i will journey thence to my father\\'s country and enquire for my beloved budur. would to heaven i knew whether she returned to her own land or journeyed on to my father\\'s country or whether there befel her any accident by the way.\" and he began versifying,',\n", - " '\"love in my breast they lit and fared away, *',\n", - " 'and far the land wherein my love is pent:',\n", - " 'far lies the camp and those who camp therein; *',\n", - " \"par is her tent-shrine, where i ne'er shall tent.\",\n", - " 'patience far deaf me when from me they fled; *',\n", - " 'sleep failed mine eyes, endurance was forspent:',\n", - " 'they left and with them left my every joy, *',\n", - " 'wending with them, nor find i peace that went:',\n", - " 'they made these eyes roll down love tears in flood, *',\n", - " 'and lacking them these eyne with tears are drent.',\n", - " 'when my taste spins once again would see them, *',\n", - " 'when pine and expectation but augment,',\n", - " \"in my heart's core their counterfeits i trace, *\",\n", - " 'with love and yearning to behold their grace.\"',\n", - " 'then, while he awaited the end of the term of days, he told the gardener the tale of the birds and what had passed between them; whereat the hearer wondered; and they both lay down and slept till the morning. the gardener awoke sick and abode thus two days; but on the third day, his sickness increased on him, till they despaired of his life and kamar al-zaman grieved with sore grief for him. meanwhile behold, the master and his crew came and enquired for the gardener; and, when kamar al-zaman told them that he was sick, they asked, \"where be the youth who is minded to go with us to the ebony islands?\" \"he is your servent and he standeth before you!\" answered the prince and bade them carry the bottles of olives to the ship; so they transported them, saying, \"make haste, thou, for the wind is fair;\" and he replied, \"i hear and obey.\" then he carried his provaunt on board and, returning to bid the gardener farewell, found him in the agonies of death; so he sat down at his head and closed his eyes, and his soul departed his body; whereupon he laid him out and committed him to the earth unto the mercy of allah almighty. then he made for the ship but found that she had already weighed anchor and set sail; nor did she cease to cleave the seas till she disappeared from his sight. so he went back to whence he came heavy-hearted with whirling head; and neither would he address a soul nor return a reply; and reaching the garden and sitting down in cark and care he threw dust on his head and buffeted his cheeks.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and fifteenth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when the ship sped on her course, kamar al-zaman returned to the garden in cark and care; but- anon he rented the place of its owner and hired a man to help him in irrigating the trees. moreover, he repaired the trap-door and he went to the underground chamber and bringing the rest of the gold to grass, stowed it in other fifty bottles which he filled up with a layer of olives. then he enquired of the ship and they told him that it sailed but once a year, at which his trouble of mind redoubled and he cried sore for that which had betided him, above all for the loss of the princess budur\\'s talisman, and spent his nights and days weeping and repealing verses. such was his case; but as regards the ship she sailed with a favouring wind till she reached the ebony islands. now by decree of destiny, queen budur was sitting at a lattice-window overlooking the sea and saw the galley cast anchor upon the strand. at this sight, her heart throbbed and she took horse with the chamberlains and nabobs and, riding down to the shore, halted by the ship, whilst the sailors broke bulk and bore the bales to the storehouses; after which she called the captain to her presence and asked what he had with him. he answered \"o king, i have with me in this ship aromatic drugs and cosmetics and healing powders and ointments and plasters and precious metals and rich stuffs and rugs of yemen leather, not to be borne of mule or camel, and all manner of otters and spices and perfumes, civet and ambergris and camphor and sumatra aloes-wood, and tamerinds and sparrow-olives to boot, such as are rare to find in this country.\" when she heard talk of sparrow- olives her heart longed for them and she said to the ship-master, \"how much of olives hast thou?\" he replied, \"fifty bottles full, but their owner is not with us, so the king shall take what he will of them.\" quoth she, \"bring them ashore, that i may see them.\\'\\' thereupon he called to the sailors, who brought her the fifty bottles; and she opened one and, looking at the olives, said to the captain, \"i will take the whole fifty and pay you their value, whatso it be.\" he answered, \"by allah, o my lord, they have no value in our country; moreover their shipper tarried behind us, and he is a poor man.\" asked she, \"and what are they worth here?\" and he answered \"a thousand dirhams.\" \"i will take them at a thousand,\" she said and bade them carry the fifty bottles to the palace. when it was night, she called for a bottle of olives and opened it, there being none in the room but herself and the princess hayat al-nufus. then, placing a dish before her she turned into it the contents of the jar, when there fell out into the dish with the olives a heap of red gold; and she said to the lady hayat al-nufus, \"this is naught but gold!\" so she sent for the rest of the bottles and found them all full of precious metal and scarce enough olives to fill a single jar. moreover, she sought among the gold and found therein the talisman, which she took and examined and behold, it was that which kamar al- zaman had taken from off the band of her petticoat trousers. thereupon she cried out for joy and slipped down in a swoon;—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the two hundred and sixteenth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when king budur saw the talisman she cried out for joy and slipped down in a swoon; and when she recovered she said to herself, \"verily, this talisman was the cause of my separation from my beloved kamar al-zaman; but now it is an omen of good.\" then she showed it to hayat al-nufus and said to her, \"this was the cause of disunion and now, please allah, it shall be the cause of reunion.\" as soon as day dawned she seated herself on the royal throne and sent for the ship-master, who came into the presence and kissed the ground before her. quoth she, \"where didst thou leave the owner of these olives?\" quoth he, \"o king of the age, we left him in the land of the magians and he is a gardener there.\" she rejoined, \"except thou bring him to me, thou knowest not the harm which awaiteth thee and thy ship.\" then she bade them seal up the magazines of the merchants and said to them, \"verily the owner of these olives hath borrowed of me and i have a claim upon him for debt and, unless ye bring him to me, i will without fail do you all die and seize your goods.\" so they went to the captain and promised him the hire of the ship, if he would go and return a second time, saying, \"deliver us from this masterful tyrant.\" accordingly the skipper embarked and set sail and allah decreed him a prosperous voyage, till he came to the island of the magians and, landing by night, went up to the garden. now the night was long upon kamar al-zaman, and he sat, bethinking him of his beloved, and bewailing what had befallen him and versifying,',\n", - " '\"a night whose stars refused to run their course, *',\n", - " 'a night of those which never seem outworn:',\n", - " 'like resurrection-day, of longsome length *',\n", - " 'to him that watched and waited for the morn.\"',\n", - " 'now at this moment, the captain knocked at the garden-gate, and kamar al-zaman opened and went out to him, whereupon the crew seized him and went down with him on board the ship and set sail forthright; and they ceased not voyaging days and nights, whilst kamar al-zaman knew not why they dealt thus with him; but when he questioned them they replied, \"thou hast offended against the lord of the ebony islands, the son-in-law of king armanus, and thou hast stolen his monies, miserable that thou art!\" said he, \"by allah! i never entered that country nor do i know where it is!\" however, they fared on with him, till they made the ebony islands and landing, carried him up to the lady budur, who knew him at sight and said, \"leave him with the eunuchs, that they may take him to the bath.\" then she relieved the merchants of the embargo and gave the captain a robe of honour worth ten thousand pieces of gold; and, after returning to the palace, she went in that night to the princess hayat al-nufus and told her what had passed, saying, \"keep thou my counsel, till i accomplish my purpose, and do a deed which shall be recorded and shall be read by kings and commoners after we be dead and gone.\" and when she gave orders that they bear kamar al-zaman to the bath, they did so and clad him in a royal habit so that, when he came forth, he resembled a willow-bough or a star which shamed the greater and lesser light and its glow, and his life and soul returned to his frame. then he repaired to the palace and went in to the princess budur; and when she saw him she schooled her heart to patience, till she should have accomplished her purpose; and she bestowed on him mamelukes and eunuchs, camels and mules. moreover, she gave him a treasury of money and she ceased not advancing him from dignity to dignity, till she made him lord high treasurer and committed to his charge all the treasures of the state; and she admitted him to familiar favour and acquainted the emirs with his rank and dignity. and all loved him, for queen budur did not cease day by day to increase his allowances. as for kamar al-zaman, he was at a loss anent the reason of her thus honouring him; and he gave gifts and largesse out of the abundance of the wealth; and he devoted himself to the service of king armanus; so that the king and all the emirs and people, great and small, adored him and were wont to swear by his life. nevertheless, he ever marvelled at the honour and favour shown him by queen budur and said to himself, \"by allah, there needs must be a reason for this affection! peradventure, this king favoureth me not with these immoderate favours save for some ill purpose and, therefore, there is no help but that i crave leave of him to depart his realm.\" so he went in to queen budur and said to her, \"o king, thou hast overwhelmed me with favours, but it will fulfil the measure of thy bounties if thou take from me all thou hast been pleased to bestow upon me, and permit me to depart.\" she smiled and asked, \"what maketh thee seek to depart and plunge into new perils, whenas thou art in the enjoyment of the highest favour and greatest prosperity?\" answered kamar al- zaman, \"o king, verily this favour, if there be no reason for it, is indeed a wonder of wonders, more by token that thou hast advanced me to dignities such as befit men of age and experience, albeit i am as it were a young child.\" and queen budur rejoined, \"the reason is that i love thee for shine exceeding loveliness and thy surpassing beauty; and if thou wilt but grant me my desire of thy body, i will advance thee yet farther in honour and favour and largesse; and i will make thee wazir, for all thy tender age even as the folk made me sultan over them and i no older than thou; so that nowadays there is nothing strange when children take the head and by allah, he was a gifted man who said,',\n", - " \"'it seems as though of lot's tribe were our days, *\",\n", - " 'and crave with love to advance the young in years.\\'\"',\n", - " 'when kamar al-zaman heard these words, he was abashed and his cheeks flushed till they seemed a-flame; and he said, \"i need not these favours which lead to the commission of sin; i will live poor in wealth but wealthy in virtue and honour.\" quoth she, \"i am not to be duped by thy scruples, arising from prudery and coquettish ways; and allah bless him who saith,',\n", - " \"'to him i spake of coupling, but he said to me, *\",\n", - " \"how long this noyous long persistency?'\",\n", - " 'but when gold piece i showed him, he cried, *',\n", - " '\\'who from the almighty sovereign e\\'er shall flee?\\'\"',\n", - " 'now when kamar al-zaman, heard these words and understood her verses and their import, he said, \"o king, i have not the habit of these doings, nor have i strength to bear these heavy burthens for which elder than i have proved unable; then how will it be with my tender age?\" but she smiled at his speech and retorted, \"indeed, it is a matter right marvellous how error springeth from the disorder of man\\'s intendiment!! since thou art a boy, why standest thou in fear of sin or the doing of things forbidden, seeing that thou art not yet come to years of canonical responsibility; and the offences of a child incur neither punishment nor reproof? verily, thou hast committed thyself to a quibble for the sake of contention, and it is thy duty to bow before a proposal of fruition, so henceforward cease from denial and coyness, for the commandment of allah is a decree foreordained: indeed, i have more reason than thou to fear falling and by sin to be misled; and well inspired was he who said,',\n", - " \"'my prickle is big and the little one said, *\",\n", - " \"'thrust boldly in vitals with lion-like stroke!\",\n", - " \"then i, ' 'tis a sin!; and he, 'no sin to me! *\",\n", - " 'so i had him at once with a counterfeit poke.\"',\n", - " 'when kamar al-zaman heard these words, the light became darkness in his sight and he said, \"o king, thou hast in thy household fair women and female slaves, who have not their like in this age: shall not these suffice thee without me? do thy will with them and let me go!\" she replied, \"thou sayest sooth, but it is not with them that one who loveth thee can heal himself of torment and can abate his fever; for, when tastes and inclinations are corrupted by vice, they hear and obey other than good advice. so leave arguing and listen to what the poet saith,',\n", - " \"'seest not the bazar with its fruit in rows? *\",\n", - " \"these men are for figs and for sycamore those!'\",\n", - " 'and what another saith,',\n", - " \"'many whose anklet rings are dumb have tinkling belts, *\",\n", - " 'and this hath all content while that for want must wail:',\n", - " \"thou bidd'st me be a fool and quit thee for her charms; *\",\n", - " 'allah forfend i leave the faith, turn infidel!',\n", - " 'nay, by thy rights of side-beard mocking all her curls, *',\n", - " \"nor mott nor maid from thee my heart shall spell.'\",\n", - " 'and yet another,',\n", - " \"'o beauty's union! love for thee's my creed, *\",\n", - " 'free choice of faith and eke my best desire:',\n", - " 'women i have forsworn for thee; so may *',\n", - " \"deem me all men this day a shaveling friar.'\",\n", - " 'and yet another,',\n", - " \"'even not beardless one with girl, nor heed *\",\n", - " \"the spy who saith to thee ''tis an amiss!'\",\n", - " 'far different is the girl whose feet one kisses *',\n", - " \"and that gazelle whose feet the earth must kiss.'\",\n", - " 'and yet another,',\n", - " \"'a boy of twice ten is fit for a king!'\",\n", - " 'and yet another,',\n", - " \"'the penis smooth and round was made with anus best to match it, * had it been made for cunnus' sake it had been formed like hatchet!'\",\n", - " 'and yet another said,',\n", - " \"'my soul thy sacrifice! i chose thee out *\",\n", - " 'who art not menstruous nor oviparous:',\n", - " 'did i with woman mell, i should beget *',\n", - " \"brats till the wide wide world grew strait for us.'\",\n", - " 'and yet another,',\n", - " \"'she saith (sore hurt in sense the most acute *\",\n", - " 'for she had proffered what did not besuit),',\n", - " \"'unless thou stroke as man should swive his wife *\",\n", - " 'blame not when horns thy brow shall incornùte!',\n", - " 'thy wand seems waxen, to a limpo grown, *',\n", - " \"and more i palm it, softer grows the brute!'\",\n", - " 'and yet another,',\n", - " \"'quoth she (for i to lie with her forbore), *\",\n", - " \"'o folly-following fool, o fool to core:\",\n", - " 'if thou my coynte for kiblah to thy coigne *',\n", - " \"reject, we'll shall please thee more.'\",\n", - " 'and yet another,',\n", - " \"'she proffered me a tender coynte *\",\n", - " \"quoth i 'i will not roger thee!'\",\n", - " \"she drew back, saying, 'from the faith *\",\n", - " \"he turns, who's turned by heaven's decree!\",\n", - " 'and front wise fluttering, in one day, *',\n", - " \"is obsolete persistency!'\",\n", - " 'then swung she round and shining rump *',\n", - " 'like silvern lump she showed me!',\n", - " \"i cried: 'well done, o mistress mine! *\",\n", - " 'no more am i in pain for thee;',\n", - " 'o thou of all that allah oped *',\n", - " \"showest me fairest victory!'\",\n", - " 'and yet another,',\n", - " \"'men craving pardon will uplift their hands; *\",\n", - " 'women pray pardon with their legs on high:',\n", - " 'out on it for a pious, prayerful work! *',\n", - " 'the lord shall raise it in the depths to lie.\\'\"',\n", - " 'when kamar al-zaman heard her quote this poetry, and was certified that there was no escaping compliance with what willed she, he said, \"o king of the age, if thou must needs have it so, make covenant with me that thou wilt do this thing with me but once, though it avail not to correct thy depraved appetite, and that thou wilt never again require this thing of me to the end of time; so perchance shall allah purge me of the sin.\" she replied \"i promise thee this thing, hoping that allah of his favour will relent towards us and blot out our mortal offence; for the girdle of heaven\\'s forgiveness is not indeed so strait, but it may compass us around and absolve us of the excess of our heinous sins and bring us to the light of salvation out of the darkness of error; and indeed excellently well saith the poet,',\n", - " \"'of evil thing the folk suspect us twain; *\",\n", - " 'and to this thought their hearts and souls are bent:',\n", - " \"come, dear! let's justify and free their souls *\",\n", - " \"that wrong us; one good bout and then—repent!'''\",\n", - " 'thereupon she made him an agreement and a covenant and swore a solemn oath by him who is self-existent, that this thing should befal betwixt them but once and never again for all time, and that the desire of him was driving her to death and perdition. so he rose up with her, on this condition, and went with her to her own boudoir, that she might quench the lowe of her lust, saying, \"there is no majesty, and there is no might save in allah, the glorious, the great! this is the fated decree of the all- powerful, the all-wise!\"; and he doffed his bag-trousers, shamefull and abashed, with the tears running from his eyes for stress of affright. thereat she smiled and making him mount upon a couch with her, said to him, \"after this night, thou shalt see naught that will offend thee.\" then she turned to him bussing and bosoming him and bending calf over calf, and said to him, \"put thy hand between my thighs to the accustomed place; so haply it may stand up to prayer after prostration.\" he wept and cried, \"i am not good at aught of this,\" but she said, \"by my life, an thou do as i bid thee, it shall profit thee!\" so he put out his hand, with vitals a-fire for confusion, and found her thighs cooler than cream and softer than silk. the touching of them pleasured him and he moved his hand hither and thither, till it came to a dome abounding in good gifts and movements and shifts, and said in himself, \"perhaps this king is a hermaphrodite, neither man nor woman quite;\" so he said to her, \"o king, i cannot find that thou hast a tool like the tools of men; what then moved thee to do this deed?\" then loudly laughed queen budur till she fell on her back, and said, \"o my dearling, how quickly thou hast forgotten the nights we have lain together!\" then she made herself known to him, and he knew her for his wife, the lady budur, daughter of king al-ghayur, lord of the isles and the seas. so he embraced her and she embraced him, and he kissed her and she kissed him; then they lay down on the bed of pleasure voluptuous, repeating the words of the poet,',\n", - " '\"when his softly bending shape bid him close to my embrace *',\n", - " 'which clips him all about like the tendrils of the vine',\n", - " 'and shed a flood of softness on the hardness of his heart, *',\n", - " 'he yielded though at first he was minded to decline;',\n", - " \"and dreading lest the railer's eye should light upon his form, *\",\n", - " 'came armoured with caution to baffle his design:',\n", - " 'his waist makes moan of hinder cheeks that weigh upon his feet *',\n", - " \"like heavy load of merchandise upon young camel li'en;\",\n", - " 'girt with his glances scymitar which seemed athirst for blood, *',\n", - " 'and clad in mail of dusky curls that show the sheeniest',\n", - " 'shine,',\n", - " 'his fragrance wafted happy news of footstep coming nigh, *',\n", - " 'and to him like a bird uncaged i flew in straightest line:',\n", - " 'i spread my cheek upon his path, beneath his sandal-shoon, *',\n", - " 'and lo! the stibium of their dust healed all my hurt',\n", - " 'of eyne.',\n", - " 'with one embrace again i bound the banner of our loves *',\n", - " 'and loosed the knot of my delight that bound in bonds',\n", - " 'malign:',\n", - " 'then bade i make high festival, and straight came flocking in *',\n", - " 'pure joys that know not grizzled age nor aught of',\n", - " 'pain and pine:',\n", - " 'the full moon dotted with the stars the lips and pearly teeth *',\n", - " 'that dance right joyously upon the bubbling face of wine:',\n", - " 'so in the prayer-niche of their joys i yielded me to what *',\n", - " 'would make the humblest penitent of sinner most indign.',\n", - " 'i swear by all the signs of those glories in his face *',\n", - " 'i\\'ll ne\\'er forget the chapter entituled al-ikhlas.\"',\n", - " 'then queen budur told kamar al-zaman all that had befallen her from beginning to end and he did likewise; after which he began to upbraid her, saying, \"what moved thee to deal with me as thou hast done this night?\" she replied, \"pardon me! for i did this by way of jest, and that pleasure and gladness might be increased.\" and when dawned the morn and day arose with its sheen and shone, she sent to king armanus, sire of the lady hayat al-nufus, and acquainted him with the truth of the case and that she was wife to kamar al-zaman. moreover, she told him their tale and the cause of their separation, and how his daughter was a virgin, pure as when she was born. he marvelled at their story with exceeding marvel and bade them chronicle it in letters of gold. then he turned to kamar al-zaman and said, \"o king\\'s son, art thou minded to become my son-in-law by marrying my daughter?\" replied he, \"i must consult the queen budur, as she hath a claim upon me for benefits without stint.\" and when he took counsel with her, she said, \"right is thy recking; marry her and i will be her handmaid; for i am her debtor for kindness and favour and good offices, and obligations manifold, especially as we are here in her place and as the king her father hath whelmed us with benefits.\" now when he saw that she inclined to this and was not jealous of hayat al-nufus, he agreed with her upon this matter.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and seventeenth night,',\n", - " 'she said, it hath reached me, o auspicious king, that kamar al- zaman agreed with his wife, queen budur, upon this matter and told king armanus what she had said; whereat he rejoiced with great joy. then he went out and, seating himself upon his chair of estate, assembled all the wazirs, emirs, chamberlains and grandees, to whom he related the whole story of kamar al-zaman and his wife, queen budur, from first to last; and acquainted them with his desire to marry his daughter hayat al-nufus to the prince and make him king in the stead of queen budur. whereupon said they all, \"since he is the husband of queen budur, who hath been our king till now, whilst we deemed her son-in-law to king armanus, we are all content to have him to sultan over us; and we will be his servants, nor will we swerve from his allegiance.\" so armanus rejoiced hereat and, summoning kazis and witnesses and the chief officers of state, bade draw up the contract of marriage between kamar al-zaman and his daughter, the princess hayat al-nufus. then he held high festival, giving sumptuous marriage-feasts and bestowing costly dresses of honour upon all the emirs and captains of the host; moreover he distributed alms to the poor and needy and set free all the prisoners. the whole world rejoiced in the coming of kamar al-zaman to the throne, blessing him and wishing him endurance of glory and prosperity, renown and felicity; and, as soon as he became king, he remitted the customs-dues and released all men who remained in gaol. thus he abode a long while, ordering himself worthily towards his lieges; and he lived with his two wives in peace, happiness, constancy and content, lying the night with each of them in turn. he ceased not after this fashion during many years, for indeed all his troubles and afflictions were blotted out from him and he forgot his father king shahriman and his former estate of honour and favour with him. after a while almighty allah blessed him with two boy children, as they were two shining moons, through his two wives; the elder whose name was prince amjad, by queen budur, and the younger whose name was prince as\\'ad by queen hayat al-nufus; and this one was comelier than his brother. they were reared in splendour and tender affection, in respectful bearing and in the perfection of training; and they were instructed in penmanship and science and the arts of government and horsemanship, till they attained the extreme accomplishments and the utmost limit of beauty and loveliness; both men and women being ravished by their charms. they grew up side by side till they reached the age of seventeen, eating and drinking together and sleeping in one bed, nor ever parting at any time or tide; wherefore all the people envied them. now when they came to man\\'s estate and were endowed with every perfection, their father was wont, as often as he went on a journey, to make them sit in his stead by turns in the hall of judgement; and each did justice among the folk one day at a time. but it came to pass, by confirmed fate and determined lot, that love for as\\'ad (son of queen hayat al-nufus) rose in the heart of queen budur, and that affection for amjad (son of queen budur) rose in the heart of queen hayat al-nufus. hence it was that each of the women used to sport and play with the son of her sister-wife, kissing him and straining him to her bosom, whilst each mother thought that the other\\'s behaviour arose but from maternal affection. on this wise passion got the mastery of the two women\\'s hearts and they became madly in love with the two youths, so that when the other\\'s son came in to either of them, she would press him to her breast and long for him never to be parted from her; till, at last, when waiting grew longsome to them and they found no path to enjoyment, they refused meat and drink and banished the solace of sleep. presently, the king fared forth to course and chase, bidding his two sons sit to do justice in his stead, each one day in turn as was their wont.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the two hundred and eighteenth night,',\n", - " 'she said, it hath reached me, o auspicious king, that the king fared forth to sport and hunt, bidding his two sons sit to do justice in his stead, each one day by turn, as was their wont. now prince amjad sat in judgement the first day, bidding and forbidding, appointing and deposing, giving and refusing; and queen hayat al-nufus, mother of as\\'ad, wrote to him a letter suing for his favour and discovering to him her passion and devotion; altogether put tiny off the mask and giving him to know that she desired to enjoy him. so she took a scroll and thereon indited these cadences, \"from the love deranged * the sorrowful and estranged * whose torment is prolonged for the longing of thee! * were i to recount to thee the extent of my care * and what of sadness i bear * the passion which my heart cloth tear * and all that i endure for weeping and unrest * and the rending of my sorrowful breast * my unremitting grief * and my woe without relief * and all my suffering for severance of thee * and sadness and love\\'s ardency * no letter could contain it; nor calculation could compass it * indeed earth and heaven upon me are strait; and i have no hope and no trust but what from thee i await * upon death i am come nigh * and the horrors of dissolution i aby * burning upon me is sore * with parting pangs and estrangement galore * were i to set forth the yearnings that possess me more and more * no scrolls would suffice to hold such store * and of the excess of my pain and pine, i have made the following lines:- -',\n", - " 'were i to dwell on heart-consuming heat, *',\n", - " 'unease and transports in my spins meet,',\n", - " 'nothing were left of ink and reeden pen *',\n", - " \"nor aught of paper; no, not e'en a sheet.\",\n", - " 'then queen hayat al-nufus wrapped up her letter in a niece of costly silk scented with musk and ambergris; and folded it up with her silken hair-strings whose cost swallowed down treasures laid it in a handkerchief and gave it to a eunuch bidding him bear it to prince amjad.—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and nineteenth night,',\n", - " 'she said, it hath reached me, o auspicious king, that she gave her missive to the eunuch in waiting and bade him bear it to prince amjad. and that eunuch went forth ignoring what the future hid for him (for the omniscient ordereth events even as he willeth); and, going in to the prince, kissed the ground between his hands and handed to him the letter. on receiving the kerchief he opened it and, reading the epistle and recognizing its gist he was ware that his father\\'s wife was essentially an adulteress and a traitress at heart to her husband, king kamar al-zaman. so he waxed wroth with exceeding wrath and railed at women and their works, saying, \"allah curse women, the traitresses, the imperfect in reason and religion!\" then he drew his sword and said to the eunuch, \"out on thee, thou wicked slave! dost thou carry messages of disloyalty for thy lord\\'s wife? by allah, there is no good in thee, o black of hue and heart, o foul of face and nature\\'s forming!\" so he smote him on the neck and severed his head from his body; then, folding the kerchief over its contents he thrust it into his breast pocket and went in to his own mother and told her what had passed, reviling and reproaching her, and saying, \"each one of you is viler than the other; and, by allah the great and glorious, did i not fear ill-manneredly to transgress against the rights of my father, kamar al-zaman, and my brother, prince as\\'ad, i would assuredly go in to her and cut off her head, even as i cut off that of her eunuch!\" then he went forth from his mother in a mighty rage; and when the news reached queen hayat al-nufus of what he had done with her eunuch, she abused him and cursed him and plotted perfidy against him. he passed the night, sick with rage, wrath and concern; nor found he pleasure in meat, drink or sleep. and when the next morning dawned prince as\\'ad fared forth in his turn to rule the folk in his father\\'s stead, whilst his mother, hayat al-nufus, awoke in feeble plight because of what she had heard from prince amjad concerning the slaughter of her eunuch. so prince as\\'ad sat in the audience-chamber that day, judging and administering justice, appointing and deposing, bidding and forbidding, giving and bestowing. and he ceased not thus till near the time of afternoon-prayer, when queen budur sent for a crafty old woman and, discovering to her what was in her heart, wrote a letter to prince as\\'ad, complaining of the excess of her affection and desire for him in these cadenced lines, \"from her who perisheth for passion and love-forlorn * to him who in nature and culture is goodliest born * to him who is conceited of his own loveliness * and glories in his amorous grace * who from those that seek to enjoy him averteth his face * and refuseth to show favour unto the self abasing and base * him who is cruel and of disdainful mood * from the lover despairing of good * to prince as\\'ad * with passing beauty endowed * and of excelling grace proud * of the face moon bright * and the brow flower-white * and dazzling splendid light * this is my letter to him whose love melteth my body * and rendeth my skin and bones! * know that my patience faileth me quite * and i am perplexed in my plight * longing and restlessness weary me * and sleep and patience deny themselves to me * but mourning and watching stick fast to me * and desire and passion torment me * and the extremes of languor and sickness have sheet me * yet may my life be a ransom for thee * albeit thy pleasure be to slay her who loveth thee * and allah prolong the life of thee * and preserve thee from all infirmity!\" and after these cadences she wrote these couplets,',\n", - " '\"fate hath commanded i become thy fere, *',\n", - " 'o shining like full moon when clearest clear!',\n", - " 'all beauty dost embrace, all eloquence; *',\n", - " 'brighter than aught within our worldly sphere:',\n", - " 'content am i my torturer thou be: *',\n", - " 'haply shalt alms me with one lovely leer!',\n", - " 'happy her death who dieth for thy love! *',\n", - " 'no good in her who holdeth thee unclear!\"',\n", - " 'and also the following couplets,',\n", - " '\"unto thee, as\\'ad! i of passion-pangs complain; *',\n", - " 'have ruth on slave of love so burnt with flaming pain:',\n", - " 'how long, i ask, shall hands of love disport with me, *',\n", - " 'with longings, dolour, sleepliness and bale and bane?',\n", - " \"anon i 'plain of sea in heart, anon of fire *\",\n", - " 'in vitals, o strange case, dear wish, my fairest fain!',\n", - " 'o blamer, cease thy blame, and seek thyself to fly *',\n", - " 'from love, which makes these eyne a rill of tears to rain.',\n", - " 'how oft i cry for absence and desire, ah grief! *',\n", - " 'but all my crying naught of gain for me shall gain:',\n", - " 'thy rigours dealt me sickness passing power to bear, *',\n", - " 'thou art my only leach, assain me an thou deign!',\n", - " 'o chider, chide me not in caution, for i doubt *',\n", - " 'that plaguey love to thee shall also deal a bout.\"',\n", - " 'then queen budur perfumed the letter-paper with a profusion of odoriferous musk and, winding it in her hairstrings which were of iraki silk, with pendants of oblong emeralds, set with pearls and stones of price, delivered it to the old woman, bidding her carry it to prince as\\'ad. she did so in order to pleasure her, and going in to the prince, straightway and without stay, found him in his own rooms and delivered to him the letter in privacy; after which she stood waiting an hour or so for the answer. when as\\'ad had read the paper and knew its purport, he wrapped it up again in the ribbons and put it in his bosom-pocket: then (for he was wrath beyond all measure of wrath) he cursed false women and sprang up and drawing his sword, smote the old trot on the neck and cut off her pate. thereupon he went in to his mother, queen hayat al-nufus, whom he found lying on her bed in feeble case, for that which had betided her with prince amjad, and railed at her and cursed her; after which he left her and fore-gathered with his brother, to whom he related all that had befallen him with queen budur, adding, \"by allah, o my brother, but that i was ashamed before thee, i had gone in to her forthright and had smitten her head off her shoulders!\" replied prince amjad, \"by allah, o my brother, yesterday when i was sitting upon the seat of judgement, the like of what hath befallen thee this day befel me also with thy mother who sent me a letter of similar purport.\" and he told him all that had passed, adding, \"by allah, o my brother, naught but respect for thee withheld me from going in to her and dealing with her even as i dealt with the eunuch!\" they passed the rest of the night conversing and cursing womankind, and agreed to keep the matter secret, lest their father should hear of it and kill the two women. yet they ceased not to suffer trouble and foresee affliction. and when the morrow dawned, the king returned with his suite from hunting and sat awhile in his chair of estate; after which he sent the emirs about their business and went up to his palace, where he found his two wives lying a-bed and both exceeding sick and weak. now they had made a plot against their two sons and concerted to do away their lives, for that they had exposed themselves before them and feared to be at their mercy and dependent upon their forbearance. when kamar al-zaman saw them on this wise, he said to them, \"what aileth you?\" whereupon they rose to him and kissing his hands answered, perverting the case and saying \"know, o king, that thy two sons, who have been reared in thy bounty, have played thee false and have dishonoured thee in the persons of thy wives.\" now when he heard this, the light became darkness in his sight, and he raged with such wrath that his reason fled: then said he to them, \"explain me this matter.\" replied queen budur, \"o king of the age, know that these many days past thy son as\\'ad hath been in the persistent habit of sending me letters and messages to solicit me to lewdness and adultery while i still forbade him from this, but he would not be forbidden; and, when thou wentest forth to hunt, he rushed in on me, drunk and with a drawn sword in his hand, and smiting my eunuch, slew him. then he mounted on my breast, still holding the sword, and i feared lest he should slay me, if i gainsaid him, even as he had slain my eunuch; so he took his wicked will of me by force. and now if thou do me not justice on him, o king, i will slay myself with my own hand, for i have no need of life in the world after this foul deed.\" and queen hayat al-nufus, choking with tears, told him respecting prince amjad a story like that of her sister-wife.—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the two hundred and twentieth night,',\n", - " 'she said, it hath reached me, o auspicious king, that queen hayat al-nufus told her husband, king kamar al-zaman, a story like that of her sister in wedlock, budur, and, quoth she, \"the same thing befel me with thy son amjad;\" after which she took to weeping and wailing and said, \"except thou do me justice on him i will tell my father, king armanus.\" then both women wept with sore weeping before king kamar al-zaman who, when he saw their tears and heard their words, concluded that their story was true and, waxing wroth beyond measure of wrath, went forth thinking to fall upon his two sons and put them to death. on his way he met his father- in-law, king armanus who, hearing of his return from the chase, had come to salute him at that very hour and, seeing him with naked brand in hand and blood dripping from his nostrils, for excess of rage, asked what ailed him. so kamar al-zaman told him all that his sons amjad and as\\'ad had done and added, \"and here i am now going in to them to slay them in the foulest way and make of them the most shameful of examples.\" quoth king armanus (and indeed he too was wroth with them), \"thou dost well, o my son, and may allah not bless them nor any sons that do such deed against their father\\'s honour. but, o my son, the sayer of the old saw saith, \\'whoso looketh not to the end hath not fortune to friend.\\' in any case, they are thy sons, and it befitteth not that thou kill them with shine own hand, lest thou drink of their death-agony, and anon repent of having slain them whenas repentance availeth thee naught. rather do thou send them with one of thy mamelukes into the desert and let him kill them there out of thy sight, for, as saith the adage, \\'out of sight of my friend is better and pleasanter.\\' and when kamar al-zaman heard his father-in-law\\'s words, he knew them to be just; so he sheathed his sword and turning back, sat down upon the throne of his realm. there he summoned his treasurer, a very old man, versed in affairs and in fortune\\'s vicissitudes, to whom he said, \"go in to my sons, amjad and as\\'ad; bind their hands behind them with strong bonds, lay them in two chests and load them upon a mule. then take horse thou and carry them into mid desert, where do thou kill them both and fill two vials with their blood and bring the same to me in haste.\" replied the treasurer, \"i hear and i obey,\" and he rose up hurriedly and went out forthright to seek the princes; and, on his road, he met them coming out of the palace-vestibule, for they had donned their best clothes and their richest; and they were on their way to salute their sire and give him joy of his safe return from his going forth to hunt. now when he saw them, he laid hands on them, saying, \"omy sons, know ye that i am but a slave commanded, and that your father hath laid a commandment on me; will ye obey his commandment?\" they said, \"yes\"; whereupon he went up to them and, after pinioning their arms, laid them in the chests which he loaded on the back of a mule he had taken from the city. and he ceased not carrying them into the open country till near noon, when he halted in a waste and desolate place and, dismounting from his mare, let down the two chests from the mule\\'s back. then he opened them and took out amjad and as\\'ad; and when he looked upon them he wept sore for their beauty and loveliness; then drawing his sword he said to them, \"by allah, o my lords, indeed it is hard for me to deal so evilly by you; but i am to be excused in this matter, being but a slave commanded, for that your father king kamar al-zaman hath bidden me strike off your heads.\" they replied, \"o emir, do the king\\'s bidding, for we bear with patience that which allah (to whom be honour, might and glory!) hath decreed to us; and thou art quit of our blood.\" then they embraced and bade each other farewell, and as\\'ad said to the treasurer, \"allah upon thee, o uncle, spare me the sight of my brother\\'s death-agony and make me not drink of his anguish, but kill me first, for that were the easier for me.\" and amjad said the like and entreated the treasurer to kill him before as\\'ad, saying, \"my brother is younger than i; so make me not taste of his anguish. and they both wept bitter tears whilst the treasurer wept for their weeping;—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and twenty-first night,',\n", - " 'she said, it hath reached me, o auspicious king, that the treasurer wept for their weeping; then the two brothers embraced and bade farewell and one said to the other, \"all this cometh of the malice of those traitresses, my mother and thy mother; and this is the reward of my forbearance towards thy mother and of thy for bearance towards my mother! but there is no might and there is no majesty save in allah, the glorious, the great! verily, we are allah\\'s and unto him we are returning.\" and as\\'ad em braced his brother, sobbing and repeating these couplets,',\n", - " '\"o thou to whom sad trembling wights in fear complain! *',\n", - " 'o ever ready whatso cometh to sustain!',\n", - " 'the sole resource for me is at thy door to knock, *',\n", - " 'at whose door knock an thou to open wilt not deign?',\n", - " 'o thou whose grace is treasured in the one word, be! *',\n", - " 'favour me, i beseech, in thee all weals contain.\"',\n", - " \"now when amjad heard his brother's weeping he wept also and pressing him to his bosom repeated these two couplets,\",\n", - " '\"o thou whose boons to me are more than one! *',\n", - " 'whose gifts and favours have nor count nor bound!',\n", - " \"no stroke of all fate's strokes e'er fell on me, *\",\n", - " 'but thee to take me by the hand i found.\"',\n", - " 'then said amjad to the treasurer, \"i conjure thee by the one, omnipotent, the lord of mercy, the beneficent! slay me before my brother as\\'ad, so haply shall the fire be quencht in my heart\\'s core and in this life burn no more.\" but as\\'ad wept and exclaimed, \"not so: i will die first;\" whereupon quoth amjad, \"it were best that i embrace thee and thou embrace me, so the sword may fall upon us and slay us both at a single stroke.\" thereupon they embraced, face to face and clung to each other straitly, whilst the treasurer tied up the twain and bound them fast with cords, weeping the while. then he drew his blade and said to them, \"by allah, o my lords, it is indeed hard to me to slay you! but have ye no last wishes that i may fulfil or charges which i may carry out, or message which i may deliver?\" replied amjad, \"we have no wish; and my only charge to thee is that thou set my brother below and me above him, that the blow may fall on me first, and when thou hast killed us and returnest to the king and he asketh thee, \\'what heardest thou from them before their death?\\'; do thou answer, \\'verily thy sons salute thee and say to thee, thou knewest not if we were innocent or guilty, yet hast thou put us to death and hast not certified thyself of our sin nor looked into our case.\\' then do thou repeat to him these two couplets,',\n", - " \"'women are satans made for woe o' men; *\",\n", - " 'i fly to allah from their devilish scathe:',\n", - " 'source of whatever bale befel our kind, *',\n", - " 'in wordly matters and in things of faith.\\'\"',\n", - " 'continued amjad, \"we desire of thee naught but that thou repeat to our sire these two couplets.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was ad the two hundred and twenty-second night,',\n", - " 'she said, it hath reached me, o auspicious king, that amjad added, speaking to the treasurer, \"we desire of thee naught but that thou repeat to our sire these two couplets which thou hast just now heard; and i conjure thee by allah to have patience with us, whilst i cite to my brother this other pair of couplets.\" then he wept with sore weeping and began,',\n", - " '\"the kings who fared before us showed *',\n", - " 'of instances full many a show:',\n", - " 'of great and small and high and low *',\n", - " 'how many this one road have trod!\"',\n", - " \"now when the treasurer heard these words from amjad, he wept till his beard was wet, whilst as'ad's eyes brimmed with tears and he in turn repeated these couplets,\",\n", - " '\"fate frights us when the thing is past and gone; *',\n", - " 'weeping is not for form or face alone:',\n", - " 'what ails the nights? allah blot out our sin, *',\n", - " 'and be the nights by other hand undone!',\n", - " 'ere this zubayr-son felt their spiteful hate, *',\n", - " 'who fled for refuge to the house and stone:',\n", - " 'would that when khárijah was for amru slain *',\n", - " 'they had ransomed ali with all men they own.\"',\n", - " 'then, with cheeks stained by tears down railing he recited also these verses,',\n", - " '\"in sooth the nights and days are charactered *',\n", - " 'by traitor falsehood and as knaves they lie;',\n", - " 'the desert-reek recalls their teeth that shine; *',\n", - " 'all horrid blackness is their k of eye:',\n", - " 'my sin anent the world which i abhor *',\n", - " 'is sin of sword when sworders fighting hie.\"',\n", - " 'then his sobs waxed louder and he said,',\n", - " '\"o thou who woo\\'st a world unworthy, learn *',\n", - " \"'tis house of evils, 'tis perdition's net:\",\n", - " 'a house where whoso laughs this day shall weep *',\n", - " 'the next: then perish house of fume and fret!',\n", - " 'endless its frays and forays, and its thralls *',\n", - " \"are ne'er redeemed, while endless risks beset.\",\n", - " 'how many gloried in its pomps and pride, *',\n", - " 'till proud and pompous did all bounds forget,',\n", - " 'then showing back of shield she made them swill *',\n", - " 'full draught, and claimed all her vengeance debt.',\n", - " \"for know her strokes fall swift and sure, altho' *\",\n", - " 'long bide she and forslow the course of fate:',\n", - " 'so look thou to thy days lest life go by *',\n", - " 'idly, and meet thou more than thou hast met;',\n", - " 'and cut all chains of world-love and desire *',\n", - " 'and save thy soul and rise to secrets higher.\"',\n", - " \"now when as'ad made an end of these verses, he strained his brother amjad in his arms, till they twain were one body, and the treasurer, drawing his sword, was about to strike them, when behold, his steed took fright at the wind of his upraised hand, and breaking its tether, fled into the desert. now the horse had cost a thousand gold pieces and on its back was a splendid saddle worth much money; so the treasurer threw down his sword, and ran after his beast.—and shahrazad perceived the dawn of day and ceased saying her permitted say.\",\n", - " 'when it was the two hundred and twenty-third night,',\n", - " 'she said, it hath reached me, o auspicious king, that when his horse ran away, the treasurer ran after it in huge concern, and ceased not running to catch the runaway till it entered a thicket. he followed it whilst it dashed through the wood, smiting the earth with its hoofs till it raised a dust-cloud which towered high in air; and snorting and puffing and neighing and waxing fierce and furious. now there happened to be in this thicket a lion of terrible might; hideous to sight, with eyes sparkling light: his look was grim and his aspect struck fright into man\\'s sprite. presentry the treasurer turned and saw the lion making towards him; but found no way of escape nor had he his sword with him. so he said in himself, \"there is no majesty and there is no might save in allah, the glorious, the great! this strait is come upon me for no other cause but because of amjad and as\\'ad; and indeed this journey was unblest from the first!\" meanwhile the two princes were grievously oppressed by the heat and grew sore athirst, so that their tongues hung out and they cried for succour, but none came to their relief and they said, \"would to heaven we had been slain and were at peace from this pain! but we know not whither the horse hath fled, that the treasurer is gone and hath left us thus pinioned. if he would but come back and do us die, it were easier to us than this torture to aby.\" said as\\'ad, \"o my brother, be patient, and the relief of allah (extolled and exalted be he!) shall assuredly come to us; for the horse started not away save of his favour towards us, and naught irketh us but this thirst.\" upon this he stretched and shook himself and strained right and left, till he burst his pinion-bonds; then he rose and unbound his brother and catching up the emir\\'s sword, said, \"by allah, we will not go hence, till we look after him and learn what is become of him.\" then they took to following on the trail till it led them to the thicket and they said to each other, \"of a surety, the horse and the treasurer have not passed out of this wood.\" quoth as\\'ad, \"stay thou here, whilst i enter the thicket and search it;\" and amjad replied, \"i will not let thee go in alone: nor will we enter it but together; so if we escape, we shall escape together and if we perish, we shall perish together.\" accordingly both entered and found that the lion had sprang upon the treasurer, who lay like a sparrow in his grip, calling upon allah for aid and signing with his hands to heaven. now when amjad saw this, he took the sword and, rushing upon the lion, smote him between the eyes and laid him dead on the ground. the emir sprang up, marvelling at this escape and seeing amjad and as\\'ad, his master\\'s sons, standing there, cast himself at their feet and exclaimed, \"by allah, o my lords, it were intolerable wrong in me to do you to death. may the man never be who would kill you! indeed, with my very life, i will ransom you.\"—and shahrazad perceived the dawn of day and ceased to say her permitted say.',\n", - " 'when it was the two hundred and twenty-fourth night,',\n", - " 'she said, it hath reached me, o auspicious king, that quoth the treasurer to amjad and as\\'ad, \"with my life will i ransom you both!\" then he hastily rose and, at once embracing them, enquired how they had loosed their bonds and come thither; whereupon they told him how the bonds of one of them had fallen loose and he had unbound the other, whereto they were helped by the purity of their intentions, and how they had tracked his trail till they came upon him. so he thanked them for their deed and went with them forth of the thicket; and, when they were in the open country, they said to him, \"o uncle, do our father\\'s bidding.\" he replied, \"allah forbid that i should draw near to you with hurt! but know ye that i mean to take your clothes and clothe you with mine; then will i fill two vials with the lion\\'s blood and go back to the king and tell him i have out vou to death. but as for you two, fare ye forth into the lands, for allah\\'s earth is wide; and know, o my lords, that it paineth me to part from you.\" at this, they all fell a-weeping; then the two youths put off their clothes and the treasurer habited them with his own. moreover he made two parcels of their dress and, filling two vials with the lion\\'s blood, set the parcels before him on his horse\\'s back. presently he took leave of them and, making his way to the city, ceased not faring till he went in to king kamar al-zaman and kissed the ground between his hands. the king saw him changed in face and troubled (which arose from his adventure with the lion) and, deeming this came of the slaughter of his two sons, rejoiced and said to him, \"hast thou done the work?\" \"yes, o our lord,\" replied the treasurer and gave him the two parcels of clothes and the two vials full of blood. asked the king, \"what didst thou observe in them; and did they give thee any charge?\" answered the treasurer, \"i found them patient and resigned to what came down upon them and they said to me, \\'verily, our father is excusable; bear him our salutation and say to him, \\'thou art quit of our killing. but we charge thee repeat to him these couplets,',\n", - " \"'verily women are devils created for us. we seek refuge with god from the artifice of the devils. they are the source of all the misfortunes that have appeared among mankind in the affairs of the world and of religion.'''\",\n", - " \"when the king heard these words of the treasurer, he bowed his head earthwards, a long while and knew his sons' words to mean that they had been wrongfully put to death. then he bethought himself of the perfidy of women and the calamities brought about by them; and he took the two parcels and opened them and fell to turning over his sons' clothes and weeping,—and shahrazed perceived the dawn of day and ceased saying her permitted say.\",\n", - " 'when it was the two hundred and twenty-fifth night,',\n", - " 'she said, it hath reached me, o auspicious king, that when king kamar la-zaman opened the two bundles and fell to turning over his sons\\' clothes and weeping, it so came to pass that he found, in the pocket of his son as\\'ad\\'s raiment, a letter in the hand of his wife enclosing her hair strings; so he opened and read it and understanding the contents knew that the prince had been falsely accused and wrongously. then he searched amjad\\'s parcel of dress and found in his pocket a letter in the handwriting of queen hayat al-nufus enclosing also her hair-strings; so he opened and read it and knew that amjad too had been wronged; whereupon he beat hand upon hand and exclaimed, \"there is no majesty and there is no might save in allah, the glorious, the great! i have slain my sons unjustly.\" and he buffeted his face, crying out, \"alas, my sons! alas, my long grief!\" then he bade them build two tombs in one house, which he styled \"house of lamentations,\" and had graved thereon his sons\\' names; and he threw himself on amjad\\'s tomb, weeping and groaning and lamenting, and improvised these couplets,',\n", - " '\"o moon for ever set this earth below, *',\n", - " 'whose loss bewail the stars which stud the sky!',\n", - " \"o wand, which broken, ne'er with bend and wave *\",\n", - " \"shall fascinate the ravisht gazer's eye;\",\n", - " \"these eyne for jealousy i 'reft of thee, *\",\n", - " 'nor shall they till next life thy sight descry:',\n", - " \"i'm drowned in sea of tears for insomny *\",\n", - " 'wherefore, indeed in sáhirah-stead i lie.\"',\n", - " \"then he threw himself on as'ad's tomb, groaning and weeping and lamenting and versifying with these couplets,\",\n", - " '\"indeed i longed to share unweal with thee, *',\n", - " 'but allah than my will willed otherwise:',\n", - " \"my grief all blackens 'twixt mine eyes and space, *\",\n", - " 'yet whitens all the blackness from mine eyes:',\n", - " 'of tears they weep these eyne run never dry, *',\n", - " 'and ulcerous flow in vitals never dries:',\n", - " 'right sore it irks me seeing thee in stead *',\n", - " 'where slave with sovran for once levelled lies.\"',\n", - " \"and his weeping and wailing redoubled; and, after he had ended his lamentations and his verse, he forsook his friends and intimates, and denying himself to his women and his family, cut himself off from the world in the house of lamentations, where he passed his time in weeping for his sons. such was his case; but as regards amjad and as'ad they fared on into the desert eating of the fruits of the earth and drinking of the remnants of the rain for a full month, till their travel brought them to a mountain of black flint whose further end was unknown; and here the road forked, one line lying along the midway height and the other leading to its head. they took the way trending to the top and gave not over following it five days, but saw no end to it and were overcome with weariness, being unused to walking upon the mountains or elsewhere. at last, despairing of coming to the last of the road, they retraced their steps and, taking the other, that led over the midway heights,—and shahrazad perceived the dawn of day and ceased to say her permitted say.\",\n", - " 'when it was the two hundred and twenty-sixth night,',\n", - " 'she said, it hath reached me, o auspicious king, that princes amjad and as\\'ad returned from the path leading to the mountain- head and took that which ran along the midway heights, and walked through all that day till nightfall, when as\\'ad, weary with much travel, said to amjad, \"o my brother, i can walk no farther, for i am exceeding weak.\" replied amjad, \"o my brother, take courage! may be allah will send us relief.\" so they walked on part of the night, till the darkness closed in upon them, when as\\'ad became weary beyond measure of weariness and cried out, \"o my brother, i am worn out and spent with walking,\" and threw himself upon the ground and wept. amjad took him in his arms and walked on with him, bytimes sitting down to rest till break of day, when they came to the mountain-top and found there a stream of running water and by it a pomegranate-tree and a prayer-niche. they could hardly believe their eyes when they saw it; but, sitting down by that spring, drank of its water and ate of the fruit of that granado-tree; after which they lay on the ground and slept till sunrise, when they washed and bathed in the spring and, eating of the pomegranates, slept again till the time of mid-afternoon prayer. then they thought to continue their journey, but as\\'ad could not walk, for both his feet were swollen. so they abode there three days till they were rested, after which they set out again and fared on over the mountain days and nights, tortured by and like to die of thirst, till they sighted a city gleaming afar off, at which they rejoiced and made towards it. when they drew near it, they thanked allah (be his name exalted!) and amjad said to as\\'ad, \"o my brother, sit here, whilst i go to yonder city and see what it is and whose it is and where we are in allah\\'s wide world, that we may know through what lands we have passed in crossing this mountain, whose skirts had we followed, we had not reached this city in a whole year. so praised be allah for safety!\" replied as\\'ad, \"by allah, o my brother, none shall go down into that city save myself, and may i be thy ransom! if thou leave me alone, be it only for an hour, i shall imagine a thousand things and be drowned in a torrent of anxiety on shine account, for i cannot brook shine absence from me.\" amjad rejoined, \"go then and tarry not. so as\\'ad took some gold pieces, and leaving his brother to await him, descended the mountain and ceased not faring on till he entered the city. as he threaded the streets he was met by an old man age-decrepit, whose beard flowed down upon his breast and forked in twain; he bore a walking-staff in his hand and was richly clad, with a great red turband on his head. when as\\'ad saw him, he wondered at his dress and his mien; nevertheless, he went up to him and saluting him said, \"where be the way to the market, o my master?\" hearing these words the shaykh smiled in his face and replied, \"o my son, meseemeth thou art a stranger?\" as\\'ad rejoined, \"yes, i am a stranger.\"—and shahrazad perceived the dawn of day and ceased saying her permitted say.',\n", - " 'when it was the two hundred and twenty-seventh night,',\n", - " 'she said, it hath reached me, o auspicious king, that the shaykh who met as\\'ad smiled in his face and said to him, \"o my son, meseemeth thou art a stranger?\" and as\\'ad replied, \"yes, i am a stranger.\" then rejoined the old man, \"verily, thou gladdenest our country with thy presence, o my son, and thou desolatest shine own land by reason of shine absence. what wantest thou of the market?\" quoth as\\'ad, \"o uncle, i have a brother, with whom i have come from a far land and with whom i have journeyed these three months; and, when we sighted this city, i left him, who is my elder brother, upon the mountain and came hither, purposing to buy victual and what else, and return therewith to him, that we might feed thereon.\" said the old man, \"rejoice in all good, o my son, and know thou that to-day i give a marriage-feast, to which i have bidden many guests, and i have made ready plenty of meats, the best and most delicious that heart can desire. so if thou wilt come with me to my place, i will give thee freely all thou lackest without asking thee a price or aught else. moreover i will teach thee the ways of this city; and, praised be allah, o my son, that i, and none other have happened upon thee.\" \"as thou wilt,\" answered as\\'ad, \"do as thou art disposed, but make haste, for indeed my brother awaiteth me and his whole heart is with me.\" the old man took as\\'ad by the hand and carried him to a narrow lane, smiling in his face and saying, \"glory be to him who hath delivered thee from the people of this city!\" and he ceased not walking till he entered a spacious house, wherein was a saloon and behold, in the middle of it were forty old men, well stricken in years, collected together and forming a single ring as they sat round about a lighted fire, to which they were doing worship and prostrating themselves. when as\\'ad saw this, he was confounded and the hair of his body stood on end though he knew not what they were; and the shaykh said to them, \"o elders of the fire, how blessed is this day!\" then he called aloud, saying, \"hello, ghazbán!\" whereupon there came out to him a tall black slave of frightful aspect, grim-visaged and flat nosed as an ape who, when the old man made a sign to him, bent as\\'ad\\'s arms behind his back and pinioned them; after which the shaykh said to him, \"let him down into the vault under the earth and there leave him and say to my slave girl such-an-one, \\'torture him night and day and give him a cake of bread to eat morning and evening against the time come of the voyage to the blue sea and the mountain of fire, whereon we will slaughter him as a sacrifice.\\'\" so the black carried him out at another door and, raising a flag in the floor, discovered a flight of twenty steps leading to a chamber under the earth, into which he descended with him and, laying his feet in irons, gave him over to the slave girl and went away. meanwhile, the old men said to one another, \"when the day of the festival of the fire cometh, we will sacrifice him on the mountain, as a propitiatory offering whereby we shall pleasure the fire.\" presently the damsel went down to him and beat him a grievous beating, till streams of blood flowed from his sides and he fainted; after which she set at his head a scone of bread and a cruse of brackish water and went away and left him. in the middle of the night, he revived and found himself bound and beaten and sore with beating: so he wept bitter tears; and recalling his former condition of honour and prosperity, lordship and dominion, and his separation from his sire and his exile from his native land.—and shahrazad perceived the dawn of day and ceased to say her permitted say,',\n", - " 'when it was the two hundred and twenty-eighth night,',\n", - " \"she said, it hath reached me, o auspicious king, that when as'ad found himself bound and beaten and sore with beating he recalled his whilome condition of honour and prosperity and dominion and lordship, and he wept and groaned aloud and recited these couplets,\",\n", - " '\"stand by the ruined stead and ask of us; *',\n", - " ...]},\n", - " 'data': ['lyrics ente hayaty:',\n", - " 'falei contigo eu assumo',\n", - " 'tu foste embora eu entendo',\n", - " 'mas ficou tanto amor',\n", - " 'estou meio sem planos',\n", - " 'zaalane afla lbab ,',\n", - " 'ayza kam gawab wallahi ana albi tab y’a habibi',\n", - " 'mmmmm ma baby yea, ma baby yea ... ya habibi',\n", - " 'lessa fakrani',\n", - " 'walla nasyani',\n", - " 'please tell me now zaalane zaalane zaalane leih',\n", - " 'onde tu estás',\n", - " 'preciso de ouvir',\n", - " 'para onde tu fores',\n", - " 'yalé yalé yalé lé bô',\n", - " 'estou com receio que me falem que tens outro',\n", - " 'tu sabes que não vou aguentar se souber que mais alguém se colou a ti',\n", - " 'ana bahsed eloyoon elle tchoufek kolle yum khalas da maluch lozom',\n", - " 'you made me feel like home',\n", - " 'halaîh bokra halaîh welaw hatta nazra f eineeh ah f eineeh yaaa leili',\n", - " 'todos falam de ti',\n", - " 'de como foi um bobo',\n", - " 'que te perdi por tão pouco',\n", - " 'wêlê wêlê',\n", - " 'you make me wanna wele wele wel',\n", - " 'lessa fakrani',\n", - " 'walla nasyani',\n", - " 'please tell me now zaalane zaalane zaalane leih',\n", - " 'onde tu estás',\n", - " 'preciso de ouvir',\n", - " 'para onde tu fores',\n", - " 'nga lêlê, nga lêlê, nga lêlê bô',\n", - " 'fidju fêmea',\n", - " 'si un ca odjau aoz',\n", - " 'dadan cuma cum podi oiau',\n", - " 'sodade na matam na matam demas',\n", - " 'ahh arguk esmaini please',\n", - " 'i know you felt the pain',\n", - " 'i’ll take it all away',\n", - " 'if you give me a chance yea',\n", - " 'hote eidek fe edaya danty heya donya',\n", - " 'you make wanna wele wele wele',\n", - " 'é tão chato ouvir',\n", - " 'de como fui um bobo',\n", - " 'que te perdi por tão pouco',\n", - " 'wêlê wêlê wê',\n", - " 'lessa fakrani',\n", - " 'walla nasyani',\n", - " 'please tell me now zaalane zaalane zaalane leih',\n", - " 'onde tu estás',\n", - " 'preciso de ouvir',\n", - " 'i need you here',\n", - " 'you’re all i think of ya leili ya leili ...',\n", - " 'enty hayate',\n", - " 'enty hayate',\n", - " 'ohh akli w rohi fik akli w rohi fik',\n", - " 'enty hayate',\n", - " 'enty hayate',\n", - " 'ohh akli w rohi fik akli w rohi fik',\n", - " 'zaalane zaalane zaalane leih',\n", - " 'enty hayate',\n", - " 'enty hayate',\n", - " 'ohh akli w rohi fik akli w rohi fik',\n", - " 'enty hayate',\n", - " 'enty hayate',\n", - " 'ohh akli w rohi fik akli w rohi fik',\n", - " 'are you ready for this?',\n", - " 'c ‘ mon!!',\n", - " 'nazo meku michi no koudo',\n", - " 'tokiakashi tai shoudo',\n", - " 'zawatsuku d . n . a',\n", - " 'sukuou toshite mo (i won‘t give up )',\n", - " 'kimi wa invisible (shady)',\n", - " 'tegakari wa fumei',\n", - " 'yokan wa zutto shite ita nda',\n", - " 'kizuka nai furi mou deki sou ni nai',\n", - " 'azawarau youni hajimatta kauntodaun',\n", - " 'boku nara daijoubu saa',\n", - " 'ikinuke',\n", - " 'all my honnou yo mezameyo',\n", - " 'shinobiyoru yami ni (to the virus ) bye bye',\n", - " 'one shot keshi satte miseru',\n", - " 'kimi to nara succeed (to the virus )',\n", - " 'mugen no suteeji wo',\n", - " 'kakeagaru eikyou ( towa ) no ro',\n", - " 'owari naki gemu',\n", - " 'kimi wa dou na no? (i won‘t give up )',\n", - " 'igan de iku nazo (shady )',\n", - " 'demo idomu shika nai',\n", - " 'semarikuru ashioto mou nigerare nai',\n", - " 'tadayou crimson moon',\n", - " 'tachimukau junbi nara dekiteru',\n", - " 'iki wo koroshi kimi wo ubau yo',\n", - " 'all my honnou yo mezameyo',\n", - " 'shinobiyoru yami ni (to the virus) bye bye',\n", - " 'one shot keshi satte miseru',\n", - " 'kimi to nara succeed (to the virus)',\n", - " 'oh girl …',\n", - " 'dore dake negaitsuzuke te ita darou yasuraka na love',\n", - " 'but kitto kimi to nara kanae rareru kara',\n", - " 'shinjite ii?',\n", - " 'so i ‘ ll say goodbye to…',\n", - " 'all my honnou yo mezameyo',\n", - " 'shinobiyoru yami ni (to the virus) bye bye',\n", - " 'one shot keshi satte miseru',\n", - " 'kimi to nara succeed',\n", - " 'all my honnou yo mezameyo',\n", - " 'shinobiyoru yami ni (to the virus) bye bye',\n", - " 'one shot keshi satte miseru',\n", - " 'kimi to nara succeed (to the virus )',\n", - " 'i know , we will succeed',\n", - " 'all succeed …',\n", - " 'so?',\n", - " 'who do you no tonigh, lazy and gentleman?',\n", - " 'the echo is where in the back of the wodes; callhim forth!',\n", - " '(shaun mac irewick, briefdragger, for the concern of messrs jhon jhamieson and song, rated one hundrick and thin per storehundred on this nightly quisquiquock of the twelve apos-trophes, set by jockit mic ereweak. he misunderstruck and aim for am ollo of number three of them and left his free natural ri-postes to four of them in their own fine artful disorder.)',\n", - " 'i. what secondtonone myther rector and maximost bridges-maker was the first to rise taller through his beanstale than the bluegum buaboababbaun or the giganteous wellingtonia sequoia; went nudiboots with trouters into a liffeyette when she was barely in her tricklies; was well known to claud a conciliation cap onto the esker of his hooth; sports a chainganger’s albert solemenly over his hullender’s epulence; thought he weighed a new ton when there felled his first lapapple; gave the heinous-ness of choice to everyknight betwixt yesterdicks and twomaries; had sevenal successivecoloured serebanmaids on the same big white drawringroam horthrug; is a willbeforce to this hour at house as he was in heather; pumped the catholick wartrey and shocked the prodestung boyne; killed his own hungery self in anger as a young man; found fodder for five when allmarken rose goflooded; with hirish tutores cornish made easy; voucher of rotables, toll of the road; bred manyheaded stepsons for one leapyourown taughter; is too funny for a fish and has too much outside for an insect; like a heptagon crystal emprisoms trues and fauss for us; is infinite swell in unfitting induments; once was he shovelled and once was he arsoned and once was he inundered and she hung him out billbailey; has a quadrant in his tile to tell toler cad a’clog it is; offers chances to long on but stands up to legge before; found coal at the end of his harrow and moss-roses behind the seams; made a fort out of his postern and wrote f.e.r.t. on his buckler; is escapemaster-inchief from all sorts of houdingplaces; if he outharrods against barkers, to the shool-bred he acts whiteley; was evacuated at the mere appearance of three germhuns and twice besieged by a sweep; from zoomor-phology to omnianimalism he is brooched by the spin of a coin; towers, an eddistoon amid the lampless, casting swannbeams on the deep; threatens thunder upon malefactors and sends whispers up fraufrau’s froufrous; when dook hookbackcrook upsits his ass booseworthies jeer and junket but they boos him oos and baas his aas when he lukes like hunkett plunkett; by sosannsos and search a party on a lady of this city; business, reading news-paper, smoking cigar, arranging tumblers on table, eating meals, pleasure, etcetera, etcetera, pleasure, eating meals, arranging tum-blers on table, smoking cigar, reading newspaper, business; minerals, wash and brush up, local views, juju toffee, comic and birthdays cards; those were the days and he was their hero; pink sunset shower, red clay cloud, sorrow of sahara, oxhide on iren; arraigned and attainted, listed and lited, pleaded and proved; catches his check at banck of indgangd and endurses his doom at chapel exit; brain of the franks, hand of the christian, tongue of the north; commands to dinner and calls the bluff; has a block at morgen’s and a hatache all the afternunch; plays gehamerat when he’s ernst but misses mausey when he’s lustyg; walked as far as the head where he sat in state as the rump; shows early eng-lish tracemarks and a marigold window with manigilt lights, a myrioscope, two remarkable piscines and three wellworthseeing ambries; arches all portcullised and his nave dates from dots; is a horologe unstoppable and the benn of all bells; fuit, isst and herit and though he’s mildewstaned he’s mouldystoned; is a quer-cuss in the forest but plane member for megalopolis; mountun — mighty, faunonfleetfoot; plank in our platform, blank in our scouturn; hidal, in carucates he is enumerated, hold as an earl, he counts; shipshaped phrase of buglooking words with a form like the easing moments of a graminivorous; to our dooms brought he law, our manoirs he made his vill of; was an over-grind to the underground and acqueduced for fierythroats; sends boys in socks acoughawhooping when he lets farth his carbon-oxside and silk stockings show her shapings when he looses hose on hers; stocks dry puder for the ill people and pinkun’s pellets for all the pale; gave his mundyfoot to miserius, her pinch to anna livia, that superfine pigtail to cerisia cerosia and quid rides to titius, caius and sempronius; made the man who had no notion of shopkeepers feel he’d rather play the duke than play the gentleman; shot two queans and shook three caskles when he won his game of dwarfs; fumes inwards like a strombolist till he smokes at both ends; manmote, befier of him, womankind, pietad!; shows one white drift of snow among the gorsegrowth of his crown and a chaperon of repentance on that which shed gore; pause and quies, triple bill; went by metro for the polis and then hoved by; to the finders, hail! woa, you that seek!; whom fillth had plenished, dearth devoured; hock is leading, cocoa comes next, emery tries for the flag; can dance the o’bruin’s polerpasse at noolahn to his own orchistruss accompaniment; took place before the internatural convention of catholic midwives and found stead before the congress for the study of endonational calamities; makes a delictuous entr‚e and finishes off the course between sweets and savouries; flouts for forecasts, flairs for finds and the fun of the fray on the fairground; cleared out three hun-dred sixty five idles to set up one all khalassal for henwives hoping to have males; the flawhoolagh, the grasping one, the kindler of paschal fire; forbids us our trespassers as we forgate him; the phoenix be his pyre, the cineres his sire!; piles big pelium on little ossas like the pilluls of hirculeads; has an eatupus complex and a drinkthedregs kink; wurstmeats for chumps and cowcar-lows for scullions; when he plies for our favour is very trolly ours; two psychic espousals and three desertions; may be matter of fact now but was futter of magd then; cattermole hill, ex-mountain of flesh was reared up by stress and sank under strain; tank it up, dank it up, tells the tailor to his tout; entoutcas for a man, but bit a thimble for a maid; blimp, blump; a dud letter, a sing a song a sylble; a byword, a sentence with surcease; while stands his canyouseehim frails shall fall; was hatched at cellbridge but ejoculated abrood; as it gan in the biguinnengs so wound up in a battle of boss; roderick, roderick, roderick, o, you’ve gone the way of the danes; variously catalogued, regularly regrouped; a bushboys holoday, a quacker’s mating, a wenches’ sandbath; the same homoheatherous checkinlossegg as when sollyeye airly blew ye; real detonation but false report; spa mad but inn sane; half emillian via bogus census but a no street hausmann when allphannd; is the handiest of all andies and a most alleghant spot to dump your hump; hands his secession to the new patricius but plumps plebmatically for the bloody old centuries; eats with doors open and ruts with gates closed; some dub him rotshield and more limn him rockyfellow; shows he’s fly to both demis-fairs but thries to cover up his tracers; seven dovecotes cooclaim to have been pigeonheim to this homer, smerrnion, rhoebok, kolonsreagh, seapoint, quayhowth, ashtown, ratheny; inde-pendent of the lordship of chamberlain, acknowledging the rule of rome; we saw thy farm at useful prine, domhnall, domhnall; reeks like illbelpaese and looks like iceland’s ear; lodged at quot places, lived through tot reigns; takes a szumbath for his weekend and a wassarnap for his refreskment; after a good bout at stool-ball enjoys giroflee giroflaa; what nevermore missed and colombo found; believes in everyman his own goaldkeeper and in africa for the fullblacks; the arc of his drive was forty full and his stumps were pulled at eighty; boasts him to the thick-inthews the oldest creater in aryania and looks down on the suiss family collesons whom he calls les nouvelles roches; though his heart, soul and spirit turn to pharaoph times, his love, faith and hope stick to futuerism; light leglifters cense him souriantes from afore while boor browbenders curse him grommelants to his hindmost; between youlasses and yeladst glimse of even; the lug his peak has, the luk his pile; drinks tharr and wodhar for his asama and eats the unparishable sow to styve off reglar rack; the beggars cloak them reclined about his paddystool, the whores winken him as they walk their side; on christienmas at advent lodge, new yealand, after a lenty illness the roeverand mr easterling of pentecostitis, no followers by bequest, fanfare all private; gone where glory waits him (ball, bulletist) but not here yet (maxwell, clark); comminxed under articles but phoe-nished a borgiess; from the vat on the bier through the burre in the dark to the buttle of the bawn; is ai an the highest but roh re his root; filled fanned of hackleberries whenas all was tuck and toss up for him as a yangster to fall fou of hockinbechers wherein he had gauged the use of raisin; ads aliments, das doles, raps rustics, tams turmoil; sas seed enough for a semination but sues skivvies on the sly; learned to speak from hand to mouth till he could talk earish with his eyes shut; hacked his way through hickheckhocks but hanged hishelp from there hereafters; rialtos, annesleyg, binn and balls to say nothing atolk of new comyn; the gleam of the glow of the shine of the sun through the dearth of the dirth on the blush of the brick of the viled ville of barnehulme has dust turned to brown; these dyed to tartan him, rueroot, dulse, bracken, teasel, fuller’s ash, sundew and cress; long gunn but not for cotton; stood his sharp assault of famine but grew girther, girther and girther; he has twenty four or so cousins germinating in the united states of america and a namesake with an initial difference in the once kingdom of poland; his first’s a young rose and his second’s french–egyptian and his whole means a slump at christie’s; forth of his pierced part came the woman of his dreams, blood thicker then water last trade overseas; buyshop of glintylook, eorl of hoed; you and i are in him surrented by brwn bldns; elin’s flee polt pelhaps but hwang chang evelytime; he one was your of highbigpipey boys but fancy him as smoking fags his at time of life; mount of mish, mell of moy; had two cardinal ventures and three capitol sinks; has a peep in his pocketbook and a packet-boat in his keep; b.v.h., b.l.g., p.p.m., t.d.s., v.b.d., t.c.h., l.o.n.; is breakfates, lunger, diener and souper; as the streets were paved with cold he felt his topperairy; taught himself skating and learned how to fall; distinctly dirty but rather a dear; hoveth chieftains evrywehr, with morder; ostman effendi, serge paddishaw; baases two mmany, outpriams al’ his parisites; first of the fenians, roi des fain‚ants; his tiara of scones was held unfillable. till one liam fail felled him in west-munster; was struck out of his sittem when he rowed saulely to demask us and to our appauling predicament brought as plagues from buddapest; put a matchhead on an aspenstalk and set the living a fire; speared the rod and spoiled the lightning; married with cakes and repunked with pleasure; till he was buried how-happy was he and he made the welkins ring with up micawber!; god at the top of the staircase, carrion on the mat of straw; the false hood of a spindler web chokes the cavemouth of his unsightliness but the nestlings that liven his leafscreen sing him a lover of arbuties; we strike hands over his bloodied warsheet but we are pledged entirely to his green mantle; our friend vikelegal, our swaran foi; under the four stones by his streams who vanished the wassailbowl at the joy of shells; mora and lora had a hill of a high time looking down on his confusion till firm look in readiness, forward spear and the windfoot of curach strewed the lakemist of lego over the last of his fields; we darkened for you, faulterer, in the year of mourning but we’ll fidhil to the dimtwinklers when the streamy morvenlight calls up the sunbeam; his striped pantaloons, his rather strange walk; hereditatis columna erecta, hagion chiton eraphon; nods a nap for the nonce but crows cheerio when they get ecunemical; is a simul-taneous equator of elimbinated integras when three upon one is by inspection improper; has the most conical hodpiece of confusianist heronim and that chuchuffuous chinchin of his is like a footsey kungoloo around taishantyland; he’s as globeful as a gasometer of lithium and luridity and he was thrice ten anular years before he wallowed round raggiant circos; the cabalstone at the coping of his cavin is a canine constant but only an amiri-can could apparoxemete the apeupresiosity of his atlast’s alonge — ment; sticklered rights and lefts at baddersdown in his hunt for the boar trwth but made his end with the modareds that came at him in camlenstrete; a hunnibal in exhaustive conflict, an otho to return; burning body to aiger air on melting mountain in wooing wave; we go into him sleepy children, we come out of him strucklers for life; he divested to save from the mrs drown-ings their rival queens while grimshaw, bragshaw and renshaw made off with his storen clothes; taxed and rated, licensed and ranted; his threefaced stonehead was found on a whitehorse hill and the print of his costellous feet is seen in the goat’s grass-circle; pull the blind, toll the deaf and call dumb, lame and halty; miraculone, monstrucceleen; led the upplaws at the creation and hissed a snake charmer off her stays; hounded become haunter, hunter become fox; harrier, marrier, terrier, tav; olaph the ox-man, thorker the tourable; you feel he is vespasian yet you think of him as aurelius; whugamore, tradertory, socianist, com-moniser; made a summer assault on our shores and begiddy got his sands full; first he shot down raglan road and then he tore up marlborough place; cromlechheight and crommalhill were his farfamed feetrests when our lurch as lout let free into the lubar heloved; mareschalled his wardmotes and delimited the main; netted before nibbling, can scarce turn a scale but, grossed after meals, weighs a town in himself; banba prayed for his conversion, beurla missed that grand old voice; a colossus among cabbages, the melarancitrone of fruits; larger than life, doughtier than death; gran turco, orege forment; lachsembulger, leperlean; the sparkle of his genial fancy, the depth of his calm sagacity, the clearness of his spotless honour, the flow of his boundless bene-volence; our family furbear, our tribal tarnpike; quary was he invincibled and cur was he burked; partitioned irskaholm, united irishmen; he took a svig at his own methyr but she tested a bit gorky and as for the salmon he was coming up in him all life long; comm, eilerdich hecklebury and sawyer thee, warden; silent as the bee in honey, stark as the breath on hauwck, cos-tello, kinsella, mahony, moran, though you rope amrique your home ruler is dan; figure right, he is hoisted by the scurve of his shaggy neck, figure left, he is rationed in isobaric patties among the crew; one asks was he poisoned, one thinks how much did he leave; ex-gardener (riesengebirger), fitted up with planturous existencies would make roseoogreedy (mite’s) little hose; taut sheets and scuppers awash but the oil silk mack lieb- sterpet micks his aquascutum; the enjoyment he took in kay women, the employment he gave to gee men; sponsor to a squad of piercers, ally to a host of rawlies; against lightning, explosion, fire, earthquake, flood, whirlwind, burglary, third party, rot, loss of cash, loss of credit, impact of vehicles; can rant as grave as oxtail soup and chat as gay as a porto flippant; is unhesitent in his unionism and yet a pigotted nationalist; sylviacola is shy of him, matrosenhosens nose the joke; shows the sinews of peace in his chest-o-wars; fiefeofhome, ninehundred and thirtunine years of copyhold; is aldays open for polemypolity’s sake when he’s not suntimes closed for the love of janus; sucks life’s eleaxir from the pettipickles of the jewess and ruoulls in sulks if any popeling runs down the huguenots; boomaport, walleslee, ubermeerschall blowcher and supercharger, monsieur ducrow, mister mudson, master gardiner; to one he’s just paunch and judex, to another full of beans and brehons; hallucination, cauchman, ectoplasm; passed for baabaa blacksheep till he grew white woo woo woolly; was drummatoysed by mac milligan’s daughter and put to music by one shoebard; all fitzpatricks in his emirate remember him, the boys of wetford hail him babu; indanified himself with boro tribute and was schenkt publicly to brigstoll; was given the light in drey orchafts and entumuled in threeplexes; his likeness is in terrecuite and he giveth rest to the rainbowed; lebriety, frothearnity and quality; his reverse makes a virtue of necessity while his obverse mars a mother by invention; beskilk his gunwale and he’s the second imperial, untie points, unhook tenters and he’s lath and plaster; calls upon allthing when he fails to appeal to eachovos; basidens, ardree, kongsemma, rexregulorum; stood into dee mouth, then backed broadside on baulacleeva; either eldorado or ultimate thole; a kraal of fou feud fires, a crawl of five pubs; laid out lash-ings of laveries to hunt down his family ancestors and then pled double trouble or quick quits to hush the buckers up; threw peb-blets for luck over one sodden shoulder and dragooned peoplades armed to their teeth; pept as gaudio gambrinus, grim as potter the grave; ace of arts, deuce of damimonds, trouble of clubs, fear of spates; cumbrum, cumbrum, twiniceynurseys fore a drum but tre to uno tips the scale; reeled the titleroll opposite a brace of girdles in silver on the screen but was sequenced from the set as crookback by the even more titulars, rick, dave and barry; he can get on as early as the twentysecond of mars but occasion-ally he doesn’t come offbefore virgintiquinque germinal; his in — dian name is hapapoosiesobjibway and his number in arithmo — sophy is the stars of the plough; took weapon in the province of the pike and let fling his line on eelwick; moves in vicous cicles yet remews the same; the drain rats bless his offals while the park birds curse his floodlights; portobello, equadocta, therecocta, percorello; he pours into the softclad shellborn the hard cash earned in watling street; his birth proved accidental shows his death its grave mistake; brought us giant ivy from the land of younkers and bewitthered apostolopolos with the gale of his gall; while satisfied that soft youthful bright matchless girls should bosom into fine silkclad joyous blooming young women is not so pleased that heavy swearsome strongsmelling irregularshaped men should blottout active handsome wellformed frankeyed boys; herald hairyfair, alloaf the wheat; husband your aunt and endow your nepos; hearken but hush it, screen him and see; time is, an archbishopric, time was, a tradesmen’s entrance; beckburn brooked with wath, scale scarred by scow; his rainfall is a couple of kneehighs while his meanst grass temperature marked three in the shade; is the meltingpoint of snow and the bubblingplace of alcohol; has a tussle with the trulls and then does himself justice; hinted at in the eschatological chapters of humphrey’s justesse of the jaypees and hunted for by theban recensors who sniff there’s something behind the bug of the deaf; thc king was in his cornerwall melking mark so murry, the queen was steep in armbour feeling fain and furry, the mayds was midst the haw-thorns shoeing up their hose, out pimps the back guards (pomp!) and pump gun they goes; to all his foretellers he reared a stone and for all his comethers he planted a tree; forty acres, sixty miles, white stripe, red stripe, washes his fleet in annacrwatter; whou missed a porter so whot shall he do for he wanted to sit for pimploco but they’ve caught him to stand for sue?; dutchlord, dutchlord, overawes us; headmound, king and martyr, dunstung in the yeast, pitre-le-pore-in petrin, barth-the-grete-by-the-exchange; he hestens towards dames troth and wedding hand like the prince of orange and nassau while he has trinity left behind him like bowlbeggar bill-the-bustonly; brow of a hazel-wood, pool in the dark; changes blowicks into bullocks and a well of artesia into a bird of arabia; the handwriting on his facewall, the cryptoconchoidsiphonostomata in his exprussians; his birthspot lies beyond the herospont and his burialplot in the pleasant little field; is the yldist kiosk on the pleninsula and the unguest hostel in saint scholarland; walked many hundreds and many score miles of streets and lit thousands in one nightlights in hectares of windows; his great wide cloak lies on fifteen acres and his little white horse decks by dozens our doors; o sorrow the sail and woe the rudder that were set for mairie quai!; his suns the huns, his dartars the tartars, are plenty here today; who repulsed from his burst the bombolts of ostenton and falchioned each flash downsaduck in the deep; apersonal problem, a loca-tive enigma; upright one, vehicule of arcanisation in the field, lying chap, floodsupplier of celiculation through ebblanes; a part of the whole as a port for a whale; dear hewitt castello, equerry, were daylighted with our outing and are looking backwards to unearly summers, from rhoda dundrums; is above the seedfruit level and outside the leguminiferous zone; when older links lock older hearts then he’ll resemble she; can be built with glue and clippings, scrawled or voided on a buttress; the night express sings his story, the song of sparrownotes on his stave of wires; he crawls with lice, he swarms with saggarts; is as quiet as a mursque but can be as noisy as a sonogog; was dilmun when his date was palmy and mudlin when his nut was cracked; suck up the sease, lep laud at ease, one lip on his lap and one cushlin his crease; his porter has a mighty grasp and his baxters the boon of broadwhite; as far as wind dries and rain eats and sun turns and water bounds he is exalted and depressed, assembled and asundered; go away, we are deluded, come back, we are dis-ghosted; bored the ostrov, leapt the inferus, swam the mabbul and flure the moyle; like fat, like fatlike tallow, of greasefulness, yea of dripping greasefulness; did not say to the old, old, did not say to the scorbutic, scorbutic; he has founded a house, uru, a house he has founded to which he has assigned its fate; bears a raaven geulant on a fjeld duiv; ruz the halo offhis varlet when he appeared to his shecook as haycock, emmet, boaro, toaro, osterich, mangy and skunk; pressed the beer of aled age out of the nettles of rashness; put a roof on the lodge for hymn and a coq in his pot pro homo; was dapifer then pancircensor then hortifex magnus; the topes that tippled on him, the types that toppled off him; still starts our hares yet gates our goat; pocket-book packetboat, gapman gunrun; the light of other days, dire dreary darkness; our awful dad, timour of tortur; puzzling, startling, shocking, nay, perturbing; went puffing from king’s brugh to new customs, doffing the gibbous off him to every breach of all size; with pa’s new heft and papa’s new helve he’s papapa’s old cutlass papapapa left us; when youngheaded old-shouldered and middlishneck aged about; caller herring every — daily, turgid tarpon overnight; see loryon the comaleon that changed endocrine history by loeven his loaf with forty bannucks; she drove him dafe till he driv her blind up; the pigeons doves be perchin all over him one day on baslesbridge and the ravens duv be pitchin their dark nets after him the next night behind koenig-stein’s arbour; tronf of the rep, comf of the priv, prosp of the pub; his headwood it’s ideal if his feet are bally clay; he crashed in the hollow of the park, trees down, as he soared in the vaguum of the phoenix, stones up; looks like a moultain boultter and sounds like a rude word; the mountain view, some lumin pale round a lamp of succar in boinyn water; three shots a puddy at up blup saddle; made up to miss maccormack ni lacarthy who made off with darly dermod, swank and swarthy; once diamond cut garnet now dammat cuts groany; you might find him at the florence but watch our for him in wynn’s hotel; theer’s his bow and wheer’s his leaker and heer lays his bequiet hearse, deep; swed albiony, likeliest villain of the place; hennery can-terel — cockran, eggotisters, limitated; we take our tays and frees our fleas round sadurn’s mounted foot; built the lund’s kirk and destroyed the church’s land; who guesse his title grabs his deeds; fletch and prities, fash and chaps; artful juke of wilysly; hugglebelly’s funniral; kukkuk kallikak; heard in camera and excruciated; boon when with benches billeted, bann if buckshot-backshattered; heavengendered, chaosfoedted, earthborn; his father presumptively ploughed it deep on overtime and his mother as all evince must have travailled her fair share; a foot-prinse on the megacene, hetman unwhorsed by searingsand; honorary captain of the extemporised fire brigade, reported to be friendly with the police; the door is still open; the old stock collar is coming back; not forgetting the time you laughed at elder charterhouse’s duckwhite pants and the way you said the whole township can see his hairy legs; by stealth of a kersse her aulburntress abaft his nape she hung; when his kettle became a hearthsculdus our thorstyites set their lymphyamphyre; his year-letter concocted by masterhands of assays, his hallmark imposed by the standard of wrought plate; a pair of pectorals and a triple-screen to get a wind up; lights his pipe with a rosin tree and hires a towhorse to haul his shoes; cures slavey’s scurvy, breaks barons boils; called to sell polosh and was found later in a bed-room; has his seat of justice, his house of mercy, his com o’copious and his stacks a’rye; prospector, he had a rooksacht, retrospector, he holds the holpenstake; won the freedom of new yoke for the minds of jugoslaves; acts active, peddles in passivism and is a gorgon of selfridgeousness; pours a laughsworth of his illformation over a larmsworth of salt; half heard the single maiden speech la belle spun to her grand mount and wholed a lifetime by his ain fireside, wondering was it hebrew set to himmeltones or the quicksilversong of qwaternions; his troubles may be over but his doubles have still to come; the lobster pot that crabbed our keel, the garden pet that spoiled our squeezed peas; he stands in a lovely park, sea is not far, importunate towns of x, y and z are easily over reached; is an excrescence to civilised humanity and but a wart on europe; wanamade singsigns to soundsense an yit he wanna git all his flesch nuemaid motts truly prural and plusible; has excisively large rings and is uncustomarily perfumed; lusteth ath he listeth the cleah whithpeh of a themise; is a prince of the fingallian in a hiberniad of hoolies; has a hodge to wherry him and a frenchy to curry him and a brabanson for his beeter and a fritz at his switch; was waylaid of a parker and beschotten by a buckeley; kicks lintils when he’s cuppy and casts jacob’s arroroots, dime after dime, to poor waifstrays on the perish; reads the charms of h. c. endersen all the weaks of his evenin and the crimes of ivaun the taurrible every strongday morn; soaps you soft to your face and slaps himself when he’s badend; owns the bulgiest bung-barrel that ever was tiptapped in the privace of the mullingar inn; was bom with a nuasilver tongue in his mouth and went round the coast of iron with his lift hand to the scene; raised but two fingers and yet smelt it would day; for whom it is easier to found a see in ebblannah than for i or you to find a dubbeltye in dampsterdamp; to live with whom is a lifemayor and to know whom a liberal education; was dipped in hoily olives and chrys-med in scent otooles; hears cricket on the earth but annoys the life out of predikants; still turns the durc’s ear of darius to the now thoroughly infurioted’ one of god; made man with juts that jerk and minted money mong maney; likes a six acup pud-ding when he’s come whome sweetwhome; has come through all the eras of livsadventure from moonshine and shampaying down to clouts and pottled porter; woollem the farsed, hahnreich the althe, charge the sackend, writchad the thord; if a mandrake shricked to convultures at last surviving his birth the weibduck will wail bitternly over the rotter’s resurrection; loses weight in the moon night but gird girder by the sundawn; with one touch of nature set a veiled world agrin and went within a sheet of tissuepaper of the option of three gaols; who could see at one blick a saumon taken with a lance, hunters pursuing a doe, a swallowship in full sail, a whyterobe lifting a host; faced flappery like old king cnut and turned his back like cincinnatus; is a farfar and morefar and a hoar father nakedbucker in villas old as new; squats aquart and cracks aquaint when it’s flaggin in town and on haven; blows whiskery around his summit but stehts stout upon his footles; stutters fore he falls and goes mad entirely when he’s waked; is timb to the pearly mom and tomb to the mourning night; and an he had the best bunbaked bricks in bould babylon for his pitching plays he’d be lost for the want of his wan wubblin wall?',\n", - " 'answer: finn maccool!',\n", - " '2. does your mutter know your mike?',\n", - " 'answer: when i tum meoptics, from suchurban prospects, ’tis my filial’s bosom, doth behold with pride, that pontificator, and circumvallator, with his dam night garrulous, slipt by his side. ann alive, the lisp of her, ‘twould grig mountains whisper her, and the bergs of iceland melt in waves of fire, and her spoon-me-spondees, and her dirckle-me-ondenees, make the rageous ossean, kneel and quaff a lyre! if dann’s dane, ann’s dirty, if he’s plane she’s purty, if he’s fane, she’s flirty, with her auburnt streams, and her coy cajoleries, and her dabblin drolleries, for to rouse his rudderup, or to drench his dreams. if hot hammurabi, or cowld clesiastes, could espy her pranklings, they’d burst bounds agin, and renounce their ruings, and denounce their do-ings, for river and iver, and a night. amin!',\n", - " '3. which title is the true-to-type motto-inlieu for that tick for teac thatchment painted witt wheth one darkness, where asnake is under clover and birds aprowl are in the rookeries and a magda went to monkishouse and a riverpaard was spotted, which is not whichcroft whorort not ousterholm dreyschluss not haraldsby, grocer, not vatandcan, vintner, not houseboat and hive not knox-atta-belle not o’faynix coalprince not wohn squarr roomyeck not ebblawn downes not le decer le mieux not benjamin’s lea not tholomew’s whaddingtun gnot antwarp gnat musca not corry’s not weir’s not the arch not the smug not the dotch house not the uval nothing grand nothing splendid (grahot or spletel) nayther erat est erit noor non michi sed luciphro?',\n", - " 'answer: thine obesity, o civilian, hits the felicitude of our orb!',\n", - " '4. what irish capitol city (a dea o dea!) of two syllables and six letters, with a deltic origin and a ruinous end, (ah dust oh dust!) can boost of having a) the most extensive public park in the world, b) the most expensive brewing industry in the world, c) the most expansive peopling thoroughfare in the world, d) the most phillohippuc theobibbous pa — pulation in the world: and harmonise your abecedeed responses?',\n", - " 'answer: a) delfas. and when ye’ll hear the gould hommers of my heart, my floxy loss, bingbanging again the ribs of yer resistance and the tenderbolts of my rivets working to your destraction ye’ll be sheverin wi’ all yer dinful sobs when we’ll go riding acope-acurly, you with yer orange garland and me with my conny cordial, down the greaseways of rollicking into the waters of wetted life. b) dorhqk. and sure where can you have such good old chimes anywhere, and leave you, as on the mash and how’tis i would be engaging you with my plovery soft ac-cents and descanting upover the scene beunder me of your loose vines in their hairafall with them two loving loofs braceleting the slims of your ankles and your mouth’s flower rose and sinking ofter the soapstone of silvry speech. c) nublid. isha, why wouldn’t we be happy, avourneen, on. the mills’money he’ll soon be leaving you as soon as i’ve my own owned brooklined georgian mansion’s lawn to recruit upon by doctor cheek’s special orders and my copper’s panful of soybeans and irish in my east hand and a james’s gate in my west, after all the errears and erroriboose of combarative embottled history, and your goodself churning over the newleaved butter (more power to you), the choicest and the cheapest from atlanta to oconee, while i’ll be drowsing in the gaarden. d) dalway. i hooked my thoroughgoing trotty the first down spanish place, mayo i make, tuam i take, sligo’s sleek but galway’s grace. holy eel and sainted salmon, chucking chub and ducking dace, rodiron’s not your aequal! says she, leppin half the lane. abcd) a bell a bell on shalldoll steepbell, ond be’ll go massplon pristmoss speople, shand praise gon ness our fayst moan neople, our prame shan-deepen, pay name muy feepence, moy nay non aequallllllll!',\n", - " '5. whad slags of a loughladd would retten smuttyflesks, empt-out old mans, melk vitious geit, scareoff jackinjills fra tiddle anding, smoothpick waste papish pastures, insides man outsiders angell, sprink dirted water around village, newses, tobaggon and sweeds, plain general kept, louden on the kirkpeal, foottreats given to malafides, outshriek hyelp hyelf nor his hair efter buggelawrs, might underhold three barnets, putzpolish crotty bottes, nightcoover all fireglims, serve’s time till baass, grind-stone his kniveses, fullest boarded, lewd man of the method of godliness, perchance he nieows and thans sits in the spoorwaggen, x.w.c.a. on z.w.c.u., doorsteps, limited, or baywindaws bros swobber preferred. walther clausetter’s and sons with the h. e. chimneys’ company to not skreve, will, on advices, be bacon or stable hand, must begripe fullstandingly irers’ langurge, jublander or northquain bigger prefurred, all duties, kine rights, family fewd, outings fived, may get earnst, no get combitsch, profusional drinklords to please obstain, he is fatherlow soun-digged inmoodmined pershoon but aleconnerman, nay, that must he isn’t?',\n", - " 'answer: pore ole joe!',\n", - " '6. what means the saloon slogan summon in the house-sweep dinah?',\n", - " 'answer: tok. galory bit of the sales of cloth nowand i have to beeswax the bringing in all the claub of the porks to us how i thawght i knew his stain on the flower if me ask and can could speak and he called by me midden name tik. i am your honey honeysugger phwhtphwht tha bay and who bruk the dandleass and who seen the blackcullen jam for tomorrha’s big pickneck i hope it’ll pour prais the climate of all ireland i heard the grackles and i skimming the crock on all your sangwidges fip-pence per leg per drake.tuk. and who eight the last of the goose — bellies that was mowlding from measlest years and who leff that there and who put that here and who let the kilkenny stale the chump. tek. and whowasit youwasit propped the pot in the yard and whatinthe nameofsen lukeareyou rubbinthe sideofthe flureofthe lobbywith. shite! will you have a plateful? tak.',\n", - " '7. who are those component partners of our societate, the doorboy, the cleaner, the sojer, the crook, the squeezer, the loun-ger, the curman, the tourabout, the mussroomsniffer, the bleaka — blue tramp, the funpowtherplother, the christymansboxer, from their pr‚s sal‚s and donnybrook prater and roebuck’s campos and the ager arountown and crumglen’s grassy but kimmage’s champ and ashtown fields and cabra fields and finglas fields and santry fields and the feels of raheny and their fails and bal-doygle to them who are latecomers all the year’s round by anti — cipation, are the porters of the passions in virtue of retroratioci — nation, and, contributting their conflingent controversies of differentiation, unify their voxes in a vote of vaticination, who crunch the crusts of comfort due to depredation, drain the mead for misery to incur intoxication, condone every evil by practical justification and condam any good to its own gratification, who are ruled, roped, duped and driven by those numen daimons, the feekeepers at their laws, nightly consternation, fortnightly fornication, monthly miserecordation and omniannual recreation, doyles when they deliberate but sullivans when they are swordsed, matey, teddy, simon, jorn, pedher, andy, barty, philly, jamesy mor and tom, matt and jakes mac carty?',\n", - " 'answer: the morphios!',\n", - " '8. and how war yore maggies?',\n", - " 'answer: they war loving, they love laughing, they laugh weeping, they weep smelling, they smell smiling, they smile hating, they hate thinking, they think feeling, they feel tempting, they tempt daring, they dare waiting, they wait taking, they take thanking, they thank seeking, as born for lorn in lore of love to live and wive by wile and rile by rule of ruse ‘reathed rose and hose hol’d home, yeth cometh elope year, coach and four, sweet peck-at-my-heart picks one man more.',\n", - " '9. now, to be on anew and basking again in the panaroma of all flores of speech, if a human being duly fatigued by his dayety in the sooty, having plenxty off time on his gouty hands and va-cants of space at his sleepish feet and as hapless behind the dreams of accuracy as any camelot prince of dinmurk, were at this auc-tual futule preteriting unstant, in the states of suspensive exani — mation, accorded, throughout the eye of a noodle, with an ear — sighted view of old hopeinhaven with all the ingredient and egregiunt whights and ways to which in the curse of his persis-tence the course of his tory will had been having recourses, the reverberration of knotcracking awes, the reconjungation of nodebinding ayes, the redissolusingness of.mindmouldered ease and the thereby hang of the hoel of it, could such a none, whiles even led comesilencers to comeliewithhers and till intempes-tuous nox should catch the gallicry and spot lucan’s dawn, by — hold at ones what is main and why tis twain, how one once meet melts in tother wants poignings, the sap rising, the foles falling, the nimb now nihilant round the girlyhead so becoming, the wrestless in the womb, all the rivals to allsea, shakeagain, o disaster! shakealose, ah how starring! but heng’s got a bit of horsa’s nose and jeff’s got the signs of ham round his mouth and the beau that spun beautiful pales as it palls, what roserude and oragious grows gelb and greem, blue out the ind of it ! violet’s dyed! then what would that fargazer seem to seemself to seem seeming of, dimm it all?',\n", - " 'answer: a collideorscape!',\n", - " '10. what bitter’s love but yurning, what’ sour lovemutch but a bref burning till shee that drawes dothe smoake retourne?',\n", - " 'answer: i know, pepette, of course, dear, but listen, precious! thanks, pette, those are lovely, pitounette, delicious! but mind the wind, sweet! what exquisite hands you have, you angiol, if you didn’t gnaw your nails, isn’t it a wonder you’re not achamed of me, you pig, you perfect little pigaleen! i’ll nudge you in a minute! i bet you use her best perisian smear off her vanity table to make them look so rosetop glowstop nostop. i know her. slight me, would she? for every got i care! three creamings a day, the first during her shower and wipe off with tissue. then after cleanup and of course before retiring. beme shawl, when i think of that espos of a clancarbry, the foodbrawler, of the socia-tionist party with hiss blackleaded chest, hello, prendregast! that you, innkipper, and all his fourteen other fullback maulers or hurling stars or whatever the dagos they are, baiting at my lord ornery’s, just becups they won the egg and spoon there so ovally provencial at balldole. my eilish assent he seed makes his admiracion. he is seeking an opening and means to be first with me as his belle alliance. andoo musnoo play zeloso! soso do todas. such is spanish. stoop alittle closer, fealse! delight-some simply! like jolio and romeune. i haven’t fell so turkish for ages and ages! mine’s me of squisious, the chocolate with a soul. extraordinary! why, what are they all, the mucky lot of them only? sht! i wouldn’t pay three hairpins for them. peppt! that’s rights, hold it steady! leg me pull. pu! come big to iran. poo! what are you nudging for? no, i just thought you were. listen, loviest! of course it was too kind of you, miser, to re-member my sighs in shockings, my often expressed wish when you were wandering about my trousseaurs and before i forget it don’t forget, in your extensions to my personality, when knotting my remembrancetie, shoeweek will be trotting back with red heels at the end of the moon but look what the fool bought cabbage head and, as i shall answer to gracious heaven, i’ll always in always remind of snappy new girters, me being always the one for charms with my very best in proud and gloving even if he was to be vermillion miles my youth to live on, the rubberend mr polkingtone, the quonian fleshmonger who mother browne solicited me for unlawful converse with, with her mug of october (a pots on it!), creaking around on his old shanksaxle like a crosty old cornquake. airman, waterwag, terrier, blazer! i’m fine, thanks ever! ha! o mind you poo tickly. sall i puhim in momou. mummum. funny spot to have a fingey! i’m terribly sorry, i swear to you i am! may you never see me in my birthday pelts seenso tutu and that her blanches mainges may rot leprous off her whatever winking maggis i’ll bet by your cut you go fleurting after with all the glass on her and the jumps in her stomewhere! haha! i suspected she was! sink her! may they fire her for a barren ewe! so she says: tay for thee? well, i saith: angst so mush: and desired she might not take it amiss if i esteemed her but an odd. if i did ate toughturf i’m not a mishy-missy. of course i know, pettest, you’re so learningful and considerate in yourself, so friend of vegetables, you long cold cat you! please by acquiester to meek my acquointance! codling, snakelet, iciclist! my diaper has more life to it! who drowned you in drears, man, or are you pillale with ink? did a weep get past the gates of your pride? my tread on the clover, sweetness? yes, the buttercups told me, hug me, damn it all, and i’ll kiss you back to life, my peachest. i mean to make you suffer, meddlar, and i don’t care this fig for contempt of courting. that i chid you, sweet sir? you know i’m tender by my eye. can’t you read by dazzling ones through me true? bite my laughters, drink my tears. pore into me, volumes, spell me stark and spill me swooning. i just don’t care what my thwarters think. transname me loveliness, now and here me for all times! i’d risk a policeman passing by, magrath or even that beggar of a boots at the post. the flame? o, pardone! that was what? ah, did you speak, stuffstuff? more poestries from chickspeer’s with gleechoreal music or a jaculation from the garden of the soul. of i be leib in the immoralities? o, you mean the strangle for love and the sowiveall of the prettiest? yep, we open hap coseries in the home. and once upon a week i improve on myself i’m so keen on that new free woman with novel inside. i’m always as tickled as can be over man in a surplus by the lady who pays the rates. but i’m as pie as is possible. let’s root out brimstoker and give him the thrall of our lives. it’s dracula’s nightout. for creepsake don’t make a flush! draw the shades, curfe you, and i’ll beat any sonnamonk to love. holy bug, how my highness would jump to make you flame your halve a ban-nan in two when i’d run my burning torchlight through (to adore me there and then cease to be? whatever for, blossoms?) your hairmejig if you had one. if i am laughing with you? no, lovingest, i’m not so dying to take my rise out of you, adored. not in the very least. true as god made my mamaw hiplength modesty coatmawther! it’s only because the rison is i’m only any girl, you lovely fellow of my dreams, and because old somebooby is not a roundabout, my trysting of the tulipies, like that puff pape bucking daveran assoiling us behinds. what a nerve! he thinks that’s what the vesprey’s for. how vain’s that hope in cleric’s heart who still pursues th’adult’ rous art, cocksure that rusty gown of his will make fair sue forget his phiz! tame schwipps. blessed marguerite bosses, i hope they threw away the mould or else we’ll have ballshossers and sourdamapplers with their medical assassiations all over the place. but hold hard till i’ve got my latchkey vote and i’ll teach him when to wear what woman callours. on account of the gloss of the gleison hasaboobrawbees isabeaubel. and because, you pluckless lanka-loot, i hate the very thought of the thought of you and because, dearling, of course, adorest, i was always meant for an engin-dear from the french college, to be musband, nomme d’engien, when we do and contract with encho tencho solver when you are married to reading and writing which pleasebusiness now won’t be long for he’s so loopy on me and i’m so leapy like since the day he carried me from the boat, my saviored of eroes, to the beach and i left on his shoulder one fair hair to guide hand and mind to its softness. ever so sorry! i beg your pardon, i was listening to every treasuried word i said fell from my dear mot’s tongue otherwise how could i see what you were thinking of our granny? only i wondered if i threw out my shaving water. anyway, here’s my arm, pulletneck. gracefully yours. move your mouth towards minth, more, preciousest, more on more! to please me, treasure. don’t be a, i’m not going to! sh! nothing! a cricri somewhere! buybuy! i’m fly! hear, pippy, under the limes. you know bigtree are all against gravstone. they hisshis-tenency. garnd ond mand! so chip chirp chirrup, cigolo, for the lug of migo! the little passdoor, i go you before, so, and you’re at my apron stage. shy is him, dovey? musforget there’s an audience. i have been lost, angel. cuddle, ye divil ye! it’s our toot-a-toot. hearhere! sensation! let them, their whole four courtships! let them, bigbawl and his boosers’ eleven makes twelve territorials. the old sot’s hole that wants wide streets to commission their noisense in, at the mitchells v. nicholls. aves selvae acquae valles! and my waiting twenty classbirds, sitting on their stiles! let me finger their eurhythmytic. and you’ll see if i’m selfthought. they’re all of them out to please. wait! in the name of. and all the holly. and some the mistle and it saint yves. hoost! ahem! there’s ada, bett, celia, delia, ena, fretta, gilda, hilda, ita, jess, katty, lou, (they make me cough as sure as i read them) mina, nippa, opsy, poll, queeniee, ruth, saucy, trix, una, vela, wanda, xenia, yva, zulma, phoebe, thelma. and mee! the reformatory boys is goaling in for the church so we’ve all comefeast like the groupsuppers and caught lipsolution from anty pravidance under penancies for myrtle sins. when their bride was married all my belles began ti ting. a ring a ring a rosaring! then everyone will hear of it. whoses wishes is the farther to my thoughts. but i’ll plant them a poser for their nomanclatter. when they’re out with the daynurse doing chaperon mall. bright pigeons all over the whirrld will fly with my mistletoe message round their loveribboned necks and d crumb of my cake for each chasta dieva. we keeps all and sundry papers. in th’ amourlight, o my darling! no, i swear to you by fibsburrow churchdome and sainte andr‚e’s under-shift, by all i hold secret from my world and in my underworld of nighties and naughties and all the other wonderwearlds! close your, notmust look! now open, pet, your lips, pepette, like i used my sweet parted lipsabuss with dan holohan of facetious memory taught me after the flannel dance, with the proof of love, up smock alley the first night he smelled pouder and i coloured beneath my fan, pipetta mia, when you learned me the linguo to melt. whowham would have ears like ours, the blackhaired! do you like that, silenzioso? are you enjoying, this same little me, my life, my love? why do you like my whisping? is it not divinely deluscious? but in’t it bafforyou? misi misi! tell me till my thrillme comes! i will not break the seal. i am enjoying it still, i swear i am! why do you prefer its in these dark nets, if why may ask, my sweetykins? sh sh! long-ears is flying. no, sweetissest, why would that ennoy me? but don’t! you want to be slap well slapped for that. your delighted lips, love, be careful! mind my duvetyne dress above all! it’s golded silvy, the newest sextones with princess effect. for rut-land blue’s got out of passion. so, so, my precious! o, i can see the cost, chare! don’t tell me! why, the boy in sheeps’ lane knows that. if i sell whose, dears? was i sold here’ tears? you mean those conversation lozenges? how awful! the bold shame of me! i wouldn’t, chickens, not for all the juliettes in the twinkly way! i could snap them when i see them winking at me in bed. i didn’t did so, my intended, or was going to or thinking of. shshsh! don’t start like that, you wretch! i thought ye knew all and more, ye aucthor, to explique to ones the significat of their exsystems with your nieu nivulon lead. it’s only another queer fish or other in brinbrou’s damned old trouchorous river again, gothewishegoths bless us and spare her! and gibos rest from the bosso! excuse me for swearing, love, i swear to the sorrasims on their trons of uian i didn’t mean to by this alpin armlet! did you really never in all our cantalang lives speak clothse to a girl’s before? no! not even to the charmermaid? how marfellows! of course i believe you, my own dear doting liest, when you tell me. as i’d live to, o, i’d love to! liss, liss! i muss whiss! never that ever or i can remember dearstreaming faces, you may go through me! never in all my whole white life of my match-less and pair. or ever for bitter be the frucht of this hour! with my whiteness i thee woo and bind my silk breasths i thee bound! always, amory, amor andmore! till always, thou lovest! shshshsh! so long as the lucksmith. laughs!',\n", - " '11. if you met on the binge a poor acheseyeld from ailing, when the tune of his tremble shook shimmy on shin, while his countrary raged in the weak of his wailing, like a rugilant pugi-lant lyon o’lynn; if he maundered in misliness, plaining his plight or, played fox and lice, pricking and dropping hips teeth, or wringing his handcuffs for peace, the blind blighter, praying dieuf and domb nostrums foh thomethinks to eath; if he weapt while he leapt and guffalled quith a quhimper, made cold blood a blue mundy and no bones without flech, taking kiss, kake or kick with a suck, sigh or simper, a diffle to larn and a dibble to lech; if the fain shinner pegged you to shave his immartial, wee skillmustered shoul with his ooh, hoodoodoo! brok — ing wind that to wiles, woemaid sin he was partial, we don’t think, jones, we’d care to this evening, would you?',\n", - " 'answer: no, blank ye! so you think i have impulsivism? did they tell you i am one of the fortysixths? and i suppose you heard i had a wag on my ears? and i suppose they told you too that my roll of life is not natural? but before proceeding to conclusively confute this begging question it would be far fitter for you, if you dare! to hasitate to consult with and consequentially attempt at my disposale of the same dime-cash problem elsewhere naturalistically of course, from the blinkpoint of so eminent a spatialist. from it you will here notice, schott, upon my for the first remarking you that the sophology of bitchson while driven as under by a purely dime-dime urge is not without his cashcash characktericksticks, borrowed for its nonce ends from the fiery goodmother miss fortune (who the lost time we had the pleasure we have had our little recherch‚ brush with, what, schott?) and as i further could have told you as brisk as your d.b.c. beha-viouristically paillet‚ with a coat of homoid icing which is in reality only a done by chance ridiculisation of the whoo-whoo and where’s hairs theorics of winestain. to put it all the more plumbsily. the speechform is a mere sorrogate. whilst the qua-lity and tality (i shall explex what you ought to mean by this with its proper when and where and why and how in the subsequent sentence) are alternativomentally harrogate and arrogate, as the gates may be.',\n", - " 'talis is a word often abused by many passims (i am working out a quantum theory about it for it is really most tantumising state of affairs). a pessim may frequent you to say: have you been seeing much of talis and talis those times? optimately meaning: will you put up at hree of irish? or a ladyeater may perhaps have casualised as you temptoed her … la sourdine: of your plates? is talis de talis, the swordswallower, who is on at the craterium the same talis von talis, the penscrusher, no funk you! who runs his duly mile? or this is a perhaps cleaner example. at a recent postvortex piece infustigation of a determinised case of chronic spinosis an extension lecturer on the ague who out of matter of form was trying his seesers, dr’s het ubeleeft, borrowed the question: why’s which suchman’s talis qualis? to whom, as a fatter of macht, dr gedankje of stoutgirth, who was wiping his whistle, toarsely retoarted: while thou beast’ one zoom of a whorl! (talis and talis originally mean the same thing, hit it’s: qualis.)',\n", - " 'professor loewy–brueller (though as i shall promptly prove his whole account of the sennacherib as distinct from the shal-manesir sanitational reforms and of the mr skekels and dr hydes problem in the same connection differs toto coelo from the fruit of my own investigations — though the reason i went to jericho must remain for certain reasons a political secret — especially as i shall shortly be wanted in cavantry, i congratulate myself, for the same and other reasons — as being again hope-lessly vitiated by what i have now resolved to call the dime and cash diamond fallacy) in his talked off confession which recently met with such a leonine uproar on its escape after its confinement why am i not born like a gentileman and why am i now so speak-able about my own eatables (feigenbaumblatt and father, juda — pest, 5688, a.m.) whole-heartedly takes off his gabbercoat and wig, honest draughty fellow, in his public interest, to make us see how though, as he says: ‘by allswill’ the inception and the descent and the endswell of man is temporarily wrapped in ob-scenity, looking through at these accidents with the faroscope of television, (this nightlife instrument needs still some subtrac-tional betterment in the readjustment of the more refrangible angles to the squeals of his hypothesis on the outer tin sides), i can easily believe heartily in my own most spacious immensity as my ownhouse and microbemost cosm when i am reassured by ratio that the cube of my volumes is to the surfaces of their sub-jects as the sphericity of these globes (i am very pressing for a parliamentary motion this term which, under my guidance, would establish the deleteriousness of decorousness in the morbidis-ation of the modern mandaboutwoman type) is to the fera — city of fairynelly’s vacuum. i need not anthrapologise for any obintentional (i must here correct all that school of neoitalian or paleoparisien schola of tinkers and spanglers who say i’m wrong parcequeue out of revolscian from romanitis i want to be) down-trodding on my foes. professor levi–brullo, f.d. of sexe — weiman–eitelnaky finds, from experiments made by hinn with his nuremberg eggs in the one hands and the watches cunldron apan the oven, though it is astensably a case of ket’s rebollions cooling the popes back, because the number of squeer faiths in weekly circulation will not be appreciably augmented by the notherslogging of my cupolar clods. what the romantic in rags pines after like all tomtompions haunting crevices for a deadbeat escupement and what het importunes our mitleid for in accornish with the mortadarthella taradition is the poorest commonon-guardiant waste of time. his everpresent toes are always in retaliessian out throuth his overpast boots. hear him squak! teek heet to that looswallawer how he bolo the bat! tyro a toray! when mullocky won the couple of colds, when we were stripping in number three, i would like the neat drop that would malt in my mouth but i fail to see when (i am purposely refraining from expounding the obvious fallacy as to the specific gravitates of the two deglutables implied nor to the lapses lequou asousiated with the royal gorge through students of mixed hydrostatics and pneumodipsics will after some difficulties grapple away with my meinungs). myrrdin aloer! as old mar-sellas cambriannus puts his. but, on professor llewellys ap bryllars, f.d., ph. dr’s showings, the plea, if he pleads, is all posh and robbage on a melodeontic scale since his man’s when is no otherman’s quandour (mine, dank you?) while, — for aught i care for the contrary, the all is where in love as war and the plane where me arts soar you’d aisy rouse a thunder from and where i cling true’tis there i climb tree and where innocent looks best (pick!) there’s holly in his ives.',\n", - " 'as my explanations here are probably above your understand-ings, lattlebrattons, though as augmentatively uncomparisoned as cadwan, cadwallon and cadwalloner, i shall revert to a more expletive method which i frequently use when i have to sermo with muddlecrass pupils. imagine for my purpose that you are a squad of urchins, snifflynosed, goslingnecked, clothyheaded, tangled in your lacings, tingled in your pants, etsitaraw etcicero. and you, bruno nowlan, take your tongue out of your inkpot! as none of you knows javanese i will give all my easyfree trans-lation of the old fabulist’s parable. allaboy minor, take your head out of your satchel! audi, joe peters! exaudi facts!',\n", - " 'the mookse and the gripes.',\n", - " 'gentes and laitymen, fullstoppers and semicolonials, hybreds and lubberds!',\n", - " 'eins within a space and a wearywide space it wast ere wohned a mookse. the onesomeness wast alltolonely, archunsitslike, broady oval, and a mookse he would a walking go (my hood! cries antony romeo), so one grandsumer evening, after a great morning and his good supper of gammon and spittish, having flabelled his eyes, pilleoled his nostrils, vacticanated his ears and palliumed his throats, he put on his impermeable, seized his impugnable, harped on his crown and stepped out of his immobile de rure albo (socolled becauld it was chalkfull of masterplasters and had borgeously letout gardens strown with cascadas, pinta-costecas, horthoducts and currycombs) and set off from luds — town a spasso to see how badness was badness in the weirdest of all pensible ways.',\n", - " 'as he set off with his father’s sword, his lancia spezzata, he was girded on, and with that between his legs and his tarkeels, our once in only bragspear, he clanked, to my clinking, from veetoes to threetop, every inch of an immortal.',\n", - " 'he had not walked over a pentiadpair of parsecs from his azylium when at the turning of the shinshone lanteran near saint bowery’s-without-his-walls he came (secunding to the one one oneth of the propecies, amnis limina permanent) upon the most unconsciously boggylooking stream he ever locked his eyes with. out of the colliens it took a rise by daubing itself ni-non. it looked little and it smelt of brown and it thought in nar — rows and it talked showshallow. and as it rinn it dribbled like any lively purliteasy: my, my, my! me and me! little down dream don’t i love thee!',\n", - " 'and, i declare, what was there on the yonder bank of the stream that would be a river, parched on a limb of the olum, bolt downright, but the gripes? and no doubt he was fit to be dried for why had he not been having the juice of his times?',\n", - " 'his pips had been neatly all drowned on him; his polps were charging odours every older minute; he was quickly for getting the dresser’s desdaign on the flyleaf of his frons; and he was quietly for giving the bailiff’s distrain on to the bulkside of his cul de pompe. in all his specious heavings, as be lived by opti-mus maximus, the mookse had never seen his dubville brooder — on-low so nigh to a pickle.',\n", - " 'adrian (that was the mookse now’s assumptinome) stuccstill phiz-…-phiz to the gripes in an accessit of aurignacian. but all-mookse must to moodend much as allrouts, austereways or wastersways, in roaming run through room. hic sor a stone, singularly illud, and on hoc stone seter satt huc sate which it filled quite poposterously and by acclammitation to its fullest justotoryum and whereopum with his unfallable encyclicling upom his alloilable, diupetriark of the wouest, and the athemyst-sprinkled pederect he always walked with, deusdedit, cheek by jowel with his frisherman’s blague? bellua triumphanes, his everyway addedto wallat’s collectium, for yea longer he lieved yea broader he betaught of it, the fetter, the summe and the haul it cost, he looked the first and last micahlike laicness of quartus the fifth and quintus the sixth and sixtus the seventh giving allnight sitting to lio the faultyfindth.',\n", - " '— good appetite us, sir mookse! how do you do it? cheeped the gripes in a wherry whiggy maudelenian woice and the jack- asses all within bawl laughed and brayed for his intentions for they knew their sly toad lowry now. i am rarumominum blessed to see you, my dear mouster. will you not perhopes tell me everything if you are pleased, sanity? all about aulne and lithial and allsall allinall about awn and liseias? ney?',\n", - " 'think of it! o miserendissimest retempter! a gripes!',\n", - " '— rats! bullowed the mookse most telesphorously, the concionator, and the sissymusses and the zozzymusses in their ro — benhauses quailed to hear his tardeynois at all for you cannot wake a silken nouse out of a hoarse oar. blast yourself and your anathomy infairioriboos! no, hang you for an animal rurale! i am superbly in my supremest poncif! abase you, baldyqueens! gather behind me, satraps! rots!',\n", - " '— i am till infinity obliged with you, bowed the gripes, his whine having gone to his palpruy head. i am still always having a wish on all my extremities. by the watch, what is the time, pace?',\n", - " 'figure it! the pining peever! to a mookse!',\n", - " '— ask my index, mund my achilles, swell my obolum, wosh-up my nase serene, answered the mookse, rapidly by turning clement, urban, eugenious and celestian in the formose of good grogory humours. quote awhore? that is quite about what i came on my missions with my intentions laudibiliter to settle with you, barbarousse. let thor be orlog. let pauline be irene. let you be beeton. and let me be los angeles. now measure your length. now estimate my capacity. well, sour? is this space of our couple of hours too dimensional for you, temporiser? will you give you up? como? fuert it?',\n", - " 'sancta patientia! you should have heard the voice that an-swered him! culla vosellina.',\n", - " '— i was just thinkling upon that, swees mooksey, but, for all the rime on my raisins, if i connow make my submission, i can-nos give you up, the gripes whimpered from nethermost of his wanhope. ishallassoboundbewilsothoutoosezit. my tumble, lou-dy bullocker, is my own. my velicity is too fit in one stockend. and my spetial inexshellsis the belowing things ab ove. but i will never be abler to tell your honoriousness (here he near lost his limb) though my corked father was bott a pseudowaiter, whose o’cloak you ware.',\n", - " 'incredible! well, hear the inevitable.',\n", - " '— your temple, sus in cribro! semperexcommunicambiambi-sumers. tugurios-innewrobe or tukurias-inashies. novar — ome, my creature, blievend bleives. my building space in lyonine city is always to let to leonlike men, the mookse in a most consistorous allocution pompifically with immediate jurisdiction constantinently concludded (what a crammer for the shape-wrucked gripes!). and i regret to proclaim that it is out of my temporal to help you from being killed by inchies, (what a thrust!), as we first met each other newwhere so airly. (poor little sowsieved subsquashed gripes! i begin to feel contemption for him!). my side, thank decretals, is as safe as motherour’s houses, he continued, and i can seen from my holeydome what it is to be wholly sane. unionjok and be joined to yok! parysis, tu sais, crucycrooks, belongs to him who parises himself. and there i must leave you subject for the pressing. i can prove that against you, weight a momentum, mein goot enemy! or cos-pol’s not our star. i bet you this dozen odd. this foluminous dozen odd. quas primas — but ’tis bitter to compote my know-ledge’s fructos of. tomes.',\n", - " 'elevating, to give peint to his blick, his jewelled pederect to the allmysty cielung, he luckystruck blueild out of a few should-be santillants, a cloister of starabouts over maples, a lucciolys in teresa street and a stopsign before sophy barratt’s, he gaddered togodder the odds docence of his vellumes, gresk, letton and russicruxian, onto the lapse of his prolegs, into umfullth one-scuppered, and sat about his widerproof he proved it well who — onearth dry and drysick times, and vremiament, tu cesses, to the extinction of niklaus altogether (niklaus alopysius having been the once gripes’s popwilled nimbum) by neuclidius and in-exagoras and mumfsen and thumpsem, by orasmus and by amenius, by anacletus the jew and by malachy the augurer and by the cappon’s collection and after that, with cheekee’s gela-tine and alldaybrandy’s formolon, he reproved it ehrltogether when not in that order sundering in some different order, alter three thirty and a hundred times by the binomial dioram and the penic walls and the ind, the inklespill legends and the rure, the rule of the hoop and the blessons of expedience and the jus, the jugicants of pontius pilax and all the mummyscrips in sick bokes’ juncroom and the chapters for the cunning of the chap-ters of the conning fox by tail.',\n", - " 'while that mooksius with preprocession and with propre-cession, duplicitly and diplussedly, was promulgating ipsofacts and sadcontras this raskolly gripos he had allbust seceded in monophysicking his illsobordunates. but asawfulas he had caught his base semenoyous sarchnaktiers to combuccinate upon the silipses of his aspillouts and the acheporeoozers of his haggy-own pneumax to synerethetise with the breadchestviousness of his sweeatovular ducose sofarfully the loggerthuds of his sakel-laries were fond at variance with the synodals of his somepooliom and his babskissed nepogreasymost got the hoof from his philio-quus.',\n", - " '— efter thousand yaws, o gripes con my sheepskins, yow will be belined to the world, enscayed mookse the pius.',\n", - " '— ofter thousand yores, amsered gripes the gregary, be the goat of machammud’s, yours may be still, o mookse, more botheared.',\n", - " '— us shall be chosen as the first of the last by the electress of vale hollow, obselved the mookse nobily, for par the unicum of elelijiacks, us am in our stabulary and that is what ruby and roby fall for, blissim.',\n", - " 'the pills, the nasal wash (yardly’s), the army man cut, as british as bondstrict and as straightcut as when that broken-arched traveller from nuzuland . . .',\n", - " '— wee, cumfused the gripes limply, shall not even be the last of the first, wee hope, when oust are visitated by the veiled horror. and, he added: mee are relying entirely, see the forte-thurd of elissabed, on the weightiness of mear’s breath. puffut!',\n", - " 'unsightbared embouscher, relentless foe to social and business succes! (hourihaleine) it might have been a happy evening but . . .',\n", - " 'and they viterberated each other, canis et coluber with the wildest ever wielded since tarriestinus lashed pissasphaltium.',\n", - " '— unuchorn!',\n", - " '— ungulant!',\n", - " '— uvuloid!',\n", - " '— uskybeak!',\n", - " 'and bullfolly answered volleyball.',\n", - " 'nuvoletta in her lightdress, spunn of sisteen shimmers, was looking down on them, leaning over the bannistars and listening all she childishly could. how she was brightened when should-rups in his glaubering hochskied his welkinstuck and how she was overclused when kneesknobs on his zwivvel was makeacting such a paulse of himshelp! she was alone. all her nubied companions were asleeping with the squirrels. their mivver, mrs moonan, was off in the fuerst quarter scrubbing the back-steps of number 28. fuvver, that skand, he was up in norwood’s sokaparlour, eating oceans of voking’s blemish. nuvoletta lis-tened as she reflected herself, though the heavenly one with his constellatria and his emanations stood between, and she tried all she tried to make the mookse look up at her (but he was fore too adiaptotously farseeing) and to make the gripes hear how coy she could be (though he was much too schystimatically auricular about his ens to heed her) but it was all mild’s vapour moist. not even her feignt reflection, nuvoluccia, could they toke their gnoses off for their minds with intrepifide fate and bungless curiasity, were conclaved with heliogobbleus and commodus and enobarbarus and whatever the coordinal dickens they did as their damprauch of papyrs and buchstubs said. as if that was their spiration! as if theirs could duiparate her queendim! as if she would be third perty to search on search proceedings! she tried all the winsome wonsome ways her four winds had taught her. she tossed her sfumastelliacinous hair like le princesse de la petite bretagne and she rounded her mignons arms like mrs cornwallis–west and she smiled over herself like the beauty of the image of the pose of the daughter of the queen of the em-perour of irelande and she sighed after herself as were she born to bride with tristis tristior tristissimus. but, sweet madonine, she might fair as well have carried her daisy’s worth to florida. for the mookse, a dogmad accanite, were not amoosed and the gripes, a dubliboused catalick, wis pinefully obliviscent.',\n", - " 'i see, she sighed. there are menner.',\n", - " 'the siss of the whisp of the sigh of the softzing at the stir of the ver grose o arundo of a long one in midias reeds: and shades began to glidder along the banks, greepsing, greepsing, duusk unto duusk, and it was as glooming as gloaming could be in the waste of all peacable worlds. metamnisia was allsoonome coloro-form brune; citherior spiane an eaulande, innemorous and un numerose. the mookse had a sound eyes right but he could not all hear. the gripes had light ears left yet he could but ill see. he ceased. and he ceased, tung and trit, and it was neversoever so dusk of both of them. but still moo thought on the deeps of the undths he would profoundth come the morrokse and still gri feeled of the scripes he would escipe if by grice he had luck enoupes.',\n", - " 'oh, how it was duusk! from vallee maraia to grasyaplaina, dormimust echo! ah dew! ah dew! it was so duusk that the tears of night began to fall, first by ones and twos, then by threes and fours, at last by fives and sixes of sevens, for the tired ones were wecking, as we weep now with them. o! o! o! par la pluie!',\n", - " 'then there came down to the thither bank a woman of no appearance (i believe she was a black with chills at her feet) and she gathered up his hoariness the mookse motamourfully where he was spread and carried him away to her invisible dwelling, thats hights, aquila rapax, for he was the holy sacred solem and poshup spit of her boshop’s apron. so you see the mookse he had reason as i knew and you knew and he knew all along. and there came down to the hither bank a woman to all important (though they say that she was comely, spite the cold in her heed) and, for he was as like it as blow it to a hawker’s hank, she plucked down the gripes, torn panicky autotone, in angeu from his limb and cariad away its beotitubes with her to her unseen shieling, it is, de rore coeli. and so the poor gripes got wrong; for that is always how a gripes is, always was and always will.be. and it was never so thoughtful of either of them. and there were left now an only elmtree and but a stone. polled with pietrous, sierre but saule. o! yes! and nuvoletta, a lass.',\n", - " 'then nuvoletta reflected for the last time in her little long life and she made up all her myriads of drifting minds in one. she cancelled all her engauzements. she climbed over the bannistars; she gave a childy cloudy cry: nu‚e! nu‚e! a lightdress fluttered. she was gone. and into the river that had been a stream (for a thousand of tears had gone eon her and come on her and she was stout and struck on dancing and her muddied name was missis-liffi) there fell a tear, a singult tear, the loveliest of all tears (i mean for those crylove fables fans who are ‘keen’ on the pretty-pretty commonface sort of thing you meet by hopeharrods) for it was a leaptear. but the river tripped on her by and by, lapping as though her heart was brook: why, why, why! weh, o weh i’se so silly to be flowing but i no canna stay!',\n", - " 'no applause, please! bast! the romescot nattleshaker will go round your circulation in diu dursus.',\n", - " 'allaboy, major, i’ll take your reactions in another place after themes. nolan browne, you may now leave the classroom. joe peters, fox.',\n", - " 'as i have now successfully explained to you my own natural-born rations which are even in excise of my vaultybrain insure me that i am a mouth’s more deserving case by genius. i feel in symbathos for my ever devoted friend and halfaloafonwashed, gnaccus gnoccovitch. darling gem! darling smallfox! horose-shoew! i could love that man like my own ambo for being so baileycliaver though he’s a nawful curillass and i must slav to methodiousness. i want him to go and live like a theabild in charge of the night brigade on tristan da cunha, isle of man-overboard, where he’ll make number 106 and be near inacces — sible. (the meeting of mahoganies, be the waves, rementious me that this exposed sight though it pines for an umbrella of its own and needs a shelter belt of the true service sort to keep its boles clean, — the weeping beeches, picea and tillia, are in a wild state about it — ought to be classified, as cricketbutt will-owm and his two nurserymen advisers suggested, under genus inexhaustible when we refloat upon all the butternat, sweet gum and manna ash redcedera which is so purvulent there as if there was howthorns in curraghchasa which ought to look as plane as a lodgepole to anybody until we are introduced to that pine-tacotta of verney rubeus where the deodarty is pinctured for us in a pure stand, which we do not doubt ha has a habitat of doing, but without those selfsownseedlings which are a species of proof that the largest individual can occur at or in an olivetion such as east conna hillock where it mixes with foolth accacians and common sallies and is tender) vux populus, as we say in hickory-hockery and i wish we had some more glasses of arbor vitae. why roat by the roadside or awn over alum pot? alderman whitebeaver is dakyo. he ought to go away for a change of ideas and he’d have a world of things to look back on. do, sweet daniel! if i weren’t a jones in myself i’d elect myself to be his dolphin in the wildsbillow because he is such a barefooted rubber with my supersocks pulled over his face which i publicked in my bestback garden for the laetification of siderodromites and to the irony of the stars. you will say it is most unenglish and i shall hope to hear that you will not be wrong about it. but i further, feeling a bit husky in my truths.',\n", - " 'will you please come over and let us mooremoore murgessly to each’s other down below our vices. i am underheerd by old billfaust. wilsh is full of curks. the coolskittle is philip debli-nite. mr wist is thereover beyeind the wantnot. wilsh and wist are as thick of thins udder as faust on the deblinite. sgunoshooto estas preter la tapizo malgranda. lilegas al si en sia chambro. kelkefoje funcktas, kelkefoje srumpas shultroj. houdian kiel vi fartas, mia nigra sinjoro? and from the poignt of fun where i am crying to arrive you at they are on allfore as foibleminded as you can feel they are fablebodied.',\n", - " 'my heeders will recoil with a great leisure how at the out-break before trespassing on the space question where even michelangelines have fooled to dread i proved to mindself as to your sotisfiction how his abject all through (the quickquid of pro-fessor ciondolone’s too frequently hypothecated bettlermensch) is nothing so much more than a mere cashdime however genteel he may want ours, if we please (i am speaking to us in the second person), for to this graded intellecktuals dime is cash and the cash system (you must not be allowed to forget that this is all contained, i mean the system, in the dogmarks of origen on spurios) means that i cannot now have or nothave a piece of cheeps in your pocket at the same time and with the same man-ners as you can now nothalf or half the cheek apiece i’ve in mind unless burrus and caseous have not or not have seemaultaneous-ly sysentangled themselves, selldear to soldthere, once in the dairy days of buy and buy.',\n", - " 'burrus, let us like to imagine, is a genuine prime, the real choice, full of natural greace, the mildest of milkstoffs yet unbeaten as a risicide and, of course, obsoletely unadulterous whereat caseous is obversely the revise of him and in fact not an ideal choose by any meals, though the betterman of the two is meltingly addicted to the more casual side of the arrivaliste case and, let me say it at once, as zealous over him as is passably he. the seemsame home and histry seeks and hidepence which we used to be reading for our prepurgatory, hot, schott? till duddy shut the shopper op and mutti, poor mutti! brought us our poor suppy, (ah who! eh how!) in acetius and oleosus and sellius volatilis and petrus papricus! our old party quite united round the slatbowel at commons: pfarrer salamoss himself and that sprog of a pedersill and his sprig of thyme and a dozen of the murphybuds and a score and more of the hot young capels and lettucia in her greensleeves and you too and me three, twinsome bibs but hansome ates, like shakespill and eggs! but there’s many a split pretext bowl and jowl; and (snob screwing that cork, schott!) to understand this as well as you can, feeling how back-ward you are in your down-to-the-ground benches, i have com — pleted the following arrangement for the coarse use of stools and if i don’t make away with you i’m beyond caesar outnullused',\n", - " 'the older sisars (tyrants, regicide is too good for you!) be-come unbeurrable from age, (the compositor of the farce of dustiny however makes a thunpledrum mistake by letting off this pienofarte effect as his furst act as that is where the juke comes in) having been sort-of-nineknived and chewly removed (this soldier — author — batman for all his commontoryism is just another of those souftsiezed bubbles who never quite got the sandhurst out of his eyes so that the champaign he draws for us is as flop as a plankrieg) the twinfreer types are billed to make their reupprearance as the knew kneck and knife knickknots on the deserted champ de bouteilles. (a most cursery reading into the persic–uraliens hostery shows us how fonnumagula picked up that propper numen out of a colluction of prifixes though to the permienting cannasure the coucousien oafsprung of this sun of a kuk is as sattin as there’s a tub in tobolosk) ostiak della vogul marina! but that i dannoy the fact of wanton to weste point i could paint you to that butter (cheese it!) if you had some wash. mordvealive! oh me none onsens! why the case is as inessive and impossive as kezom hands! their inter-locative is conprovocative just as every hazzy hates to having a hazbane in her noze. caseous may bethink himself a thought of a caviller but burrus has the reachly roundered head that goes best with thofthinking defensive fideism. he has the lac of wis-dom under every dent in his lofter while the other follow’s onni vesy milky indeedmymy. laughing over the linnuts and weeping off the uniun. he hisn’t the hey og he lisn’t the lug, poohoo. and each night sim misses mand he winks he had the semagen. it was aptly and corrigidly stated (and, it is royally needless for one ex ungue leonem to say by whom) that his seeingscraft was that clarety as were the wholeborough of poutres-bourg to be averlaunched over him pitchbatch he could still make out with his augstritch the green moat in ireland’s eye. let me sell you the fulltroth of burrus when he wore a younker. here it is, and chorming too, in six by sevens! a cleanly line, by the gods! a king off duty and a jaw for ever! and what a cheery ripe outlook, good help me deus v deus! if i were to speak my ohole mouthful to arinam about it you should call me the ormuzd aliment in your midst of faime. eat ye up, heat ye up! sings the somun in the salm. butyrum et mel comedet ut sciat reprobare malum et eligere bonum. this, of course, also explains why we were taught to play in the childhood: der haensli ist ern butterbrot, mein butterbrot! und koebi iss dein schtinkenkot! ja! ja! ja!',\n", - " 'this in fact, just to show you, is caseous, the brutherscutch or puir tyron: a hole or two, the highstinks aforefelt and anygo prigging wurms. cheesugh! you complain. and hi hi high must say you are not hoa hoa hoally in the wrong!',\n", - " 'thus we cannot escape our likes and mislikes, exiles or am-busheers, beggar and neighbour and — this is where the dime — show advertisers advance the temporal relief plea — let us be tolerant of antipathies. nex quovis burro num fit mercaseus? i am not hereby giving my final endorsement to the learned ignorants of the cusanus philosophism in which old nicholas pegs it down that the smarter the spin of the top the sounder the span of the buttom (what the worthy old auberginiste ought to have meant was: the more stolidly immobile in space appears to me the bottom which is presented to use in time by the top primo-mobilisk &c.). and i shall be misunderstord if understood to give an unconditional sinequam to the heroicised furibouts of the nolanus theory, or, at any rate, of that substrate of apart from hissheory where the theophil swoors that on principial he was the pointing start of his odiose by comparison and that whiles eggs will fall cheapened all over the walled the bure will be dear on the brie.',\n", - " 'now, while i am not out now to be taken up as unintention-ally recommending the silkebjorg tyrondynamon machine for the more economical helixtrolysis of these amboadipates until i can find space to look into it myself a little more closely first i shall go on with my decisions after having shown to you in good time how both products of our social stomach (the excellent dr burroman, i noticed by the way from his emended food theory, has been carefully digesting the very wholesome criticism i helped him to in my princeps edition which is all so munch to the cud) are mutuearly polarised the incompatabilily of any delusional acting as ambivalent to the fixation of his pivotism. positing, as above, too males pooles, the one the pictor of the other and the omber the skotia of the one, and looking want-ingly around our undistributed middle between males we feel we must waistfully woent a female to focus and on this stage there pleasantly appears the cowrymaid m. whom we shall often meet below who introduces herself upon us at some precise hour which we shall again agree to call absolute zero or the babbling pumpt of platinism. and so like that former son of a kish who went up and out to found his farmer’s ashes we come down home gently on our own turnedabout asses to meet margareen.',\n", - " 'we now romp through a period of pure lyricism of shame-bred music (technologically, let me say, the appetising entry of this subject on a fool chest of vialds is plumply pudding the carp before doevre hors) evidenced by such words in distress as i cream for thee, sweet margareen, and the more hopeful o mar-gareena! o margareena! still in the bowl is left a lump of gold! (correspondents, by the way, will keep on asking me what is the correct garnish to serve drisheens with. tansy sauce. enough). the pawnbreaking pathos of the first of these shoddy pieces reveals it as a caseous effort. burrus’s bit is often used for a toast. criniculture can tell us very precisely indeed how and why this particular streak of yellow silver first appeared on (not in) the bowel, that is to see, the human head, bald, black, bronze, brown, brindled, betteraved or blanchemanged where it might be use-fully compared with an earwig on a fullbottom. i am offering this to signorina cuticura and i intend to take it up and bring it under the nosetice of herr harlene by way of diverting his attentions. of course the unskilled singer continues to pervert our wiser ears by subordinating the space-element, that is to sing, the aria, to the time-factor, which ought to be killed, ill tempor. i should advise any unborn singer who may still be among my heeders to forget her temporal diaphragm at home (the best thing that could happen to it!) and attack the roulade with a swift colpo di glottide to the lug (though maace i will insist was reclined from overdoing this, his recovery often being slow) and then, o! on the third dead beat, o! to cluse her eyes and aiopen her oath and see what spice i may send her. how? cease thee, cantatrickee! i fain would be solo. arouse thee, my valour! and save for e’er my true bdur!',\n", - " 'i shall have a word to say in a few yards about the acoustic and orchidectural management of the tonehall but, as ours is a vivarious where one plant’s breaf is a lunger planner’s byscent and you may not care for argon, it will be very convenient for me for the emolument to pursue burrus and caseous for a rung or two up their isocelating biangle. every admirer has seen my goulache of marge (she is so like the sister, you don’t know, and they both dress a l i k e!) which i titled the very picture of a needlesswoman which in the presence ornates our national cruetstand. this genre of portraiture of changes of mind in order to be truly torse should evoke the bush soul of females so i am leaving it to the experienced victim to complete the general suggestion by the mental addition of a wallopy bound or, should the zulugical zealot prefer it, a congorool teal. the hatboxes which composed rhomba, lady trabezond (marge in her ex-celsis), also comprised the climactogram up which b and c may fondly be imagined ascending and are suggestive of gentlemen’s spring modes, these modes carrying us back to the superimposed claylayers of eocene and pleastoseen formation and the gradual morphological changes in our body politic which professor ebahi–ahuri of philadespoinis (ill) — whose bluebutterbust i have just given his coupe de grass to — neatly names a boœte … surprises. the boxes, if i may break the subject gently, are worth about fourpence pourbox but i am inventing a more patent pro-cess, foolproof and pryperfect (i should like to ask that shedlock homes person who is out for removing the roofs of our criminal classics by what deductio ad domunum he hopes de tacto to detect anything unless he happens of himself, movibile tectu, to have a slade off) after which they can be reduced to a fragment of their true crust by even the youngest of margees if she will take plase to be seated and smile if i please.',\n", - " 'now there can be no question about it either that i having done as much, have quite got the size of that demilitery young female (we will continue to call her marge) whose types may be met with in any public garden, wearing a very “dressy” affair, known as an “ethel” of instep length and with a real fur, reduced to 3/9, and muffin cap to tone (they are “angelskin” this fall), ostentatiously hemming apologetically over the shirtness of some “sweet” garment, when she is not sitting on all the free benches avidously reading about “it” but ovidently on the look out for “him” or so “thrilled” about the best dressed dolly pram and beautiful elbow competition or at the movies swallowing sobs and blowing bixed mixcuits over “childe” chaplain’s “latest” or on the verge of the gutter with some bobbedhair brieffrocked babyma’s toddler (the smythe–smythes now keep two domes-tics and aspire to three male ones, a shover, a butlegger and a sectary) held hostage at armslength, teaching his infant majesty how to make waters worse.',\n", - " '(i am closely watching master pules, as i have regions to sus-pect from my post that her “litde man” is a secondary school — teacher under the boards of education, a voted disciple of infan — tulus who is being utilised thus publicly by the seducente infanta to conceal her own more mascular personality by flaunting frivolish finery over men’s inside clothes, for the femininny of that totamulier will always lack the musculink of a verumvirum. my solotions for the proper parturience of matres and the edu-cation of micturious mites must stand over from the moment till i tackle this tickler hussy for occupying my uttentions.)',\n", - " 'margareena she’s very fond of burrus but, alick and alack! she velly fond of chee. (the important influence exercised on everything by this eastasian import has not been till now fully flavoured though we can comfortably taste it in this case. i shall come back for a little more say farther on.) a cleopatrician in her own right she at once complicates the position while burrus and caseous are contending for her misstery by implicating her- self with an elusive antonius, a wop who would appear to hug a personal interest in refined chees of all chades at the same time as he wags an antomine art of being rude like the boor. this antonius–burrus-caseous grouptriad may be said to equate the qualis equivalent with the older socalled talis on talis one just as quantly as in the hyperchemical economantarchy the tan-tum ergons irruminate the quantum urge so that eggs is to whey as whay is to zeed like your golfchild’s abe boob caddy. and this is why any simple philadolphus of a fool you like to dress, an athemisthued lowtownian, exlegged phatrisight, may be awfully green to one side of him and fruitfully blue on the other which will not screen him however from appealing to my gropesarching eyes, through the strongholes of my acropoll, as a boosted blasted bleating blatant bloaten blasphorus blesphorous idiot who kennot tail a bomb from a painapple when he steals one and wannot psing his psalmen with the cong in our gregational pompoms with the canting crew.',\n", - " 'no! topsman to your tarpeia! this thing, mister abby, is nefand. (and, taking off soutstuffs and alkalike matters, i hope we can kill time to reach the salt because there’s some forceglass neutric assets bittering in the soldpewter for you to plump your pottage in). the thundering legion has stormed olymp that it end. twelve tabular times till now have i edicted it. merus genius to careous caseous! moriture, te salutat! my phemous themis race is run, so let demoncracy take the highmost! (abra-ham tripier. those old diligences are quite out of date. read next answer). i’ll beat you so lon. (bigtempered. why not take direct action. see previous reply). my unchanging word is sacred. the word is my wife, to exponse and expound, to vend and to velnerate, and may the curlews crown our nuptias! till breath us depart! wamen. beware would you change with my years. be as young as your grandmother! the ring man in the rong shop but the rite words by the rote order! ubi lingua nuncupassit, ibi fas! adversus hostem semper sac! she that will not feel my ful-moon let her peel to thee as the hoyden and the impudent! that mon that hoth no moses in his sole nor is not awed by conquists of word’s law, who never with humself was fed and leaves his soil to lave his head, when his hope’s in his highlows from whisking his woe, if he came to my preach, a proud pursebroken ranger, when the heavens were welling the spite of their spout, to beg for a bite in our bark noisdanger, would meself and mac jeffet, four-inhand, foot him out? — ay! — were he my own breastbrother, my doubled withd love and my singlebiassed hate, were we bread by the same fire and signed with the same salt, had we tapped from the same master and robbed the same till, were we tucked in the one bed and bit by the one flea, homo-gallant and hemycapnoise, bum and dingo, jack by churl, though it broke my heart to pray it, still i’d fear i’d hate to say!',\n", - " '12. sacer esto?',\n", - " 'answer: semus sumus!',\n", - " 'geu kick i shimjangeul mak cha cheojyeo beorige',\n", - " 'kwi jjijeul deut han high hat nal karo unde',\n", - " 'deul tteun energizer geurae nan synchronizer',\n", - " 'volume deo keuge ollyeo bwa come on, boy',\n", - " \"it's twinkle, twinkle, up in the sky (like o s c a r)\",\n", - " 'nega gidaryeo on super storm (like o s c a r)',\n", - " 'da nuni beonjjeok tteuyeotji jeongshin eobshi jungdok dwaetji',\n", - " 'hey hey hey neon imi nae sone oscar',\n", - " 'geu bass ga modul deopchyeo da halkwo beoryeo',\n", - " 'han beat to beat millyeo wa ah tabeoryeosseo',\n", - " 'deul tteun energizer geurae nan synchronizer',\n", - " 'jupasu naege majchwo bwa come on, boy',\n", - " \"it's twinkle, twinkle, up in the sky (like o s c a r)\",\n", - " 'nega gidaryeo on super storm (like o s c a r)',\n", - " 'neon nuni busheo nal bomyeon ganjeolhi wonhae jukdorok',\n", - " 'hey hey hey neon imi nae sone oscar',\n", - " 'meomchuji anhgo gal ppuniya deo',\n", - " 'meotjin geon tto tae eona nikka',\n", - " 'banjjak banjjak bit naneun geol won haesseo oscar',\n", - " 'nuga nuga chanranhi bit na ni? oscar',\n", - " \"it's twinkling in the sky, in the sky\",\n", - " 'deul tteun energizer geurae nan synchronizer',\n", - " 'volume deo keuge ollyeo bwa come on, boy',\n", - " \"it's twinkle, twinkle, up in the sky (like o s c a r)\",\n", - " 'nega gidaryeo on super storm (like o s c a r)',\n", - " 'da nuni beonjjeok tteuyeotji jeongshin eobshi jungdok dwaetji',\n", - " 'hey hey hey imi nae sone oscar',\n", - " \"it's twinkle, twinkle, up in the sky (like o s c a r)\",\n", - " 'nega gidaryeo on super storm (like o s c a r)',\n", - " 'neon nuni busheo nal bomyeon ganjeolhi wonhae jukdorok',\n", - " 'hey hey hey imi nae sone oscar',\n", - " 'it may not or maybe a no concern of the guinnesses but.',\n", - " 'that the fright of his light in tribalbalbutience hides aback in the doom of the balk of the deaf but that the height of bis life from a bride’s eye stammpunct is when a man that means a moun-tain barring his distance wades a lymph that plays the lazy win — ning she likes yet that pride that bogs the party begs the glory of a wake while the scheme is like your rumba round me garden, allatheses, with perhelps the prop of a prompt to them, was now or never in etheria deserta, as in grander suburbia, with finn-fannfawners, ruric or cospolite, for much or moment indispute.',\n", - " 'whyfor had they, it is hiberio–miletians and argloe–noremen, donated him, birth of an otion that was breeder to sweatoslaves, as mysterbolder, forced in their waste, and as for ibdullin what of himana, that their tolvtubular high fidelity daildialler, as modern as tomorrow afternoon and in appearance up to the minute (hearing that anybody in that ruad duchy of wollinstown schemed to halve the wrong type of date) equipped with supershielded um-brella antennas for distance getting and connected by the magnetic links of a bellini–tosti coupling system with a vitaltone speaker, capable of capturing skybuddies, harbour craft emittences, key clickings, vaticum cleaners, due to woman formed mobile or man made static and bawling the whowle hamshack and wobble down in an eliminium sounds pound so as to serve him up a mele-goturny marygoraumd, eclectrically filtered for allirish earths and ohmes. this harmonic condenser enginium (the mole) they caused to be worked from a magazine battery (called the mimmim bimbim patent number 1132, thorpetersen and synds, joms-borg, selverbergen) which was tuned up by twintriodic singul — valvulous pipelines (lackslipping along as if their liffing deepunded on it) with a howdrocephalous enlargement, a gain control of circumcentric megacycles ranging from the antidulibnium onto the serostaatarean. they finally caused, or most leastways brung it about somehows(that)the pip of the lin(to)pinnatrate inthro an auricular forfickle (known as the vakingfar sleeper, mono-fractured by piaras uarhuamhaighaudhlug, tympan founder eustache straight, bauliaughacleeagh) a meatous conch culpable of cunduncing naul and santry and the forty routs of corthy with the concertiums of the brythyc symmonds guild, the ropemakers reunion, the variagated peddlars barringoy bni-brthirhd, the askold olegsonder crowds of the o’keef–rosses ant rhosso–keevers of zastwoking, the ligue of yahooth o.s.v. so as to lall the bygone dozed they arborised around, up his corpular fruent and down his reuctionary buckling, hummer, enville and cstorrap (the man of iren, thore’s curlymane for you!), lill the lubberendth of his otological life.',\n", - " 'house of call is all their evenbreads though its cartomance hallucinate like an erection in the night the mummery of whose deed, a lur of nur, immerges a mirage in a merror, for it is where by muzzinmessed for one watthour, bilaws below, till time jings pleas, that host of a bottlefilled, the bulkily hulkwight, hunter’s pink of face, an orel orioled, is in.on a bout to be unbulging an o’connell’s, the true one, all seethic, a luckybock, pledge of the stoup, whilom his canterberry bellseyes wink wickeding indtil the teller, oyne of an oustman in skull of skand. yet is it, this ale of man, for him, our hubuljoynted, just a tug and a fistful as for culsen, the patagoreyan, chieftain of chokanchuckers and his moyety joyant, under the foamer dispensation when he pullupped the turfeycork by the greats of gobble out of lougk neagk. when, pressures be to our hoary frother, the pop gave his sullen bulletaction and, bilge, sled a movement of catharic emulsipotion down the sloppery slide of a slaunty to tilted lift-ye-landsmen. allamin. which in the ambit of its orbit heaved a sink her sailer alongside of a drink her drainer from the basses brothers, those two theygottheres.',\n", - " 'it was long after once there was a lealand in the luffing ore it was less after lives thor a toyler in the tawn at all ohr it was note before he drew out the moddle of kersse by jerkin his dressing but and or it was not before athwartships he buttonhaled the norweeger’s capstan.',\n", - " 'so he sought with the lobestir claw of his propencil the clue of the wickser in his ear. o, lord of the barrels, comer forth from anow (i have not mislaid the key of efas–taem), o, ana, bright lady, comer forth from thenanow (i have not left temptation in the path of the sweeper of the threshold), o!',\n", - " 'but first, strongbowth, they would deal death to a drinking. link of a leadder, dubble in it, slake your thirdst thoughts awake with it. our svalves are svalves aroon! we rescue thee, o baass, from the damp earth and honour thee. o connibell, with mouth burial! so was done, neat and trig. up draught and whet them!',\n", - " '— then sagd he to the ship’s husband. and in his translaten-tic norjankeltian. hwere can a ketch or hook alive a suit and sowterkins? soot! sayd the ship’s husband, knowing the language, here is tayleren. ashe and whitehead, closechop, successor to. ahorror, he sayd, canting around to that beddest his friend, the tayler, for finixed coulpure, chunk pulley muchy chink topside numpa one sellafella, fake an capstan make and shoot! manning to sayle of clothse for his lady her master whose to be precised of a peer of trouders under the pattern of a cassack. let me prove, i pray thee, but this once, sazd mengarments, saving the mouth-brand from his firepool. he spit in his faist (beggin): he tape the raw baste (paddin): he planked his pledge (as dib is a dab): and he tog his fringe sleeve (buthock lad, fur whale). alloy for allay and this toolth for that soolth. lick it and like it. a barter, a parter. and plenty good enough, neighbour norreys, every bit and grain. and the ship’s husband brokecurst after him to hail the lugger. stolp, tief, stolp, come bag to moy eireann! and the norweeger’s capstan swaradeed, some blowfish out of schooling: all lykkehud! below taiyor he ikan heavin sets. but they broken waters and they made whole waters at they surfered bark to the lots of his vauce. and aweigh he yankered on the norgean run so that seven sailend sonnenrounders was he breastbare to the brina-bath, where bottoms out has fatthoms full, fram franz jos‚ land til cabo thormendoso, evenstarde and risingsoon. up the rivor tanneiry and down the golfe desombres. farety days and fearty nights. enjoy yourself, o maremen! and the tides made, veer and haul, and the times marred, rear and fall, and, holey bucket, dinned he raign!',\n", - " '— hump! hump! bassed the broaders-inlaugh with a quick piddysnip that wee halfbit a second.',\n", - " '— i will do that, sazd kersse, mainingstaying the rigout for her wife’s lairdship. nett sew? they hunched back at the earpicker.',\n", - " 'but old sporty, as endth lord, in ryehouse reigner, he nought feared crimp or cramp of shore sharks, plotsome to getsome. it was whol niet godthaab of errol loritz off his cape of good howthe and his trippertrice loretta lady, a maomette to his monetone, with twy twy twinky her stone hairpins, only not, if not, a queen of prancess their telling tabled who was for his seeming a casket through the heavenly, nay, heart of the sweet (had he hows would he keep her as niece as a fiddle!) but in the mealtub it was wohl yeas sputsbargain what, rarer of recent, an occasional conformity, he, with muggleton muckers, alwagers allalong most certainly allowed, as pilerinnager’s grace to peti-tionists of right, of the three blend cupstoomerries with their customed spirits, the gill gob, the burklley bump, the wallisey wanderlook, having their ceilidhe gailydhe in his shaunty irish. group drinkards maaks grope thinkards or how reads rotary, jewr of a chrestend, respecting the otherdogs churchees, so long plubs will be plebs but plabs by low frequency amplification may later agree to have another. for the people of the shed are the sure ads of all quorum. lorimers and leathersellers, skinners and salters, pewterers and paperstainers, parishclerks, fletcherbowyers, girdlers, mercers, cordwainers and first, and not last, the weavers. our library he is hoping to ye public.',\n", - " 'innholder, upholder.',\n", - " '— sets on sayfohrt! go to it, agitator! they bassabosuned over the flowre of their hoose. godeown moseys and skeep thy beeble bee!',\n", - " '— i will do that, acordial, by mine hand, sazd kersse, piece cod, and in the flap of a jacket, ructified after his nap of a blankit their o’cousin, as sober as the ship’s husband he was one my god-father when he told me saw whileupon i am now well and jurily sagasfide after the boonamorse the widower, according to rider, following pnomoneya, he is consistently blown to adams. so help me boyg who keeps the book!',\n", - " 'whereofter, behest his suzerain law the thing and the pilsener had the baar, recknar jarl, (they called him roguenor, irl call him) still passing the change-a-pennies, pengeypigses, a several sort of coyne in livery, pushed their whisper in his hairing, (seemed, a some shipshep’s sottovoxed stalement, a dearagadye, to hasvey anyone doing duty for duff point of dorkland compors) the same to the good ind ast velut discharge after which he had exemptied more than orphan for the ballast of his nurtural life. and threw a cast. a few pigses and hare you are and no chicking, tribune’s tribute, if you guess mimic miening. meanly in his lewd-brogue take your tyon coppels token, with this good sixtric from-mine runbag of juwels. nummers that is summus that is toptip that is bottombay that is twomeys that is digges that is heres. in the frameshape of hard mettles. for we all would fain make glories. it is minely well mint.',\n", - " 'thus as count the costs of liquid courage, a bullyon gauger, stowed stivers pengapung in bulk in hold (fight great finnence! brayvoh, littie bratton!) keen his kenning, the queriest of the crew, with that fellow fearing for his own misshapes, should he be himpself namesakely a foully fallen dissentant from the peripu-lator, sued towerds meade–reid and lynn–duff, rubbing the hodden son of a pookal, leaden be light, lather be dry and it be drownd on all the ealsth beside, how the camel and where the deiffel or when the finicking or why the funicking, who caused the scaffolding to be first removed you give orders, babeling, were their reidey meade answer when on the cutey (the cores-pondent) in conflict of evidence drew a kick at witness but (missed) and for whom in the dyfflun’s kiddy removed the planks they were wanted, boob.',\n", - " 'bump!',\n", - " 'bothallchoractorschumminaroundgansumuminarumdrum-strumtruminahumptadumpwaultopoofoolooderamaunsturnup!',\n", - " '— did do a dive, aped one.',\n", - " '— propellopalombarouter, based two.',\n", - " '— rutsch is for rutterman ramping his roe, seed three. where the muddies scrimm ball. bimbim bimbim. and the maidies scream all. himhim himhim.',\n", - " 'and forthemore let legend go lore of it that mortar scene so cwympty dwympty what a dustydust it razed arboriginally but, luck’s leap to the lad at the top of the ladder, so sartor’s risorted why the sinner the badder! ho ho ho hoch! la la la lach! hillary rillarry gibbous grist to our millery! a pushpull, qq: quiescence, pp: with extravent intervulve coupling.. the savest lauf in the world. paradoxmutose caring, but here in a present booth of balla-clay, barthalamou, where their dutchuncler mynhosts and serves them dram well right for a boors’ interior (homereek van hohm-ryk) that salve that selver is to screen its auntey and has ringround as worldwise eve her sins (pip, pip, pip) willpip futurepip feature apip footloose pastcast with spareshins and flash substittles of noirse-made-earsy from a nephew mind the narrator but give the devil his so long as those sohns of a blitzh call the tuone tuone and thonder alout makes the thurd. let there be. due.',\n", - " '— that’s all murtagh purtagh but whad ababs his dopter? sissed they who were onetime ungkerls themselves, (when the youthel of his yorn shook the bouchal in his bed) twilled along-side in wiping the ace assatiated with their wetting. the lappel of his size? his ros in sola velnere and he sicckumed of homnis terrars. she wends to scoulas in her slalpers. there were no pea-nats in her famalgia so no wumble she tumbled for his famas roalls davors. don’t him forget! a butcheler artsed out of cullege trainity. diddled he daddle a drop of the cradler on delight mebold laddy was stetched? knit wear? and they addled, (or ere the cry of their tongues would be uptied dead) shufflebotham asidled, plus his ducks fore his drills, an inlay of a liddle more lining maught be licensed all at ones, be these same tokens, for-giving a brass rap, sneither a whole length nor a short shift so full as all were concerned.',\n", - " 'burniface, shiply efter, shoply after, at an angle of lag, let flow, brabble brabble and brabble, and so hostily, heavyside breathing, came up with them and, check me joule, shot the three tailors, butting back to moyle herring, bump as beam and buttend, roller and reiter, after the diluv’s own deluge, the seasant samped as skibber breezed in, tripping, dripping, threw the sheets in the wind, the tights of his trunks at tickle to tackle and his rubmelucky truss rehorsing the pouffed skirts of his overhawl. he’d left his stickup in his hand to show them none ill feeling. whatthough for all appentices it had a mushroom on it. while he faced them front to back, then paraseuls round, quite taken atack, sclaiming, howe cools eavybrolly!',\n", - " '— good marrams, sagd he, freshwatties and boasterdes all, as he put into bierhiven, nogeysokey first, cabootle segund, jilling to windwards, as he made straks for that oerasound the snarsty weg for publin, so was his horenpipe lug in the lee off their mouths organs, with his tilt too taut for his tammy all a slaunter and his wigger on a wagger with its tag tucked. up. with a good eastering and a good westering. and he asked from him how the hitch did do this my fand sulkers that mone met the kidballacks which he suttonly remembered also where the hatch was he endnew strandweys he’s that fond sutchenson, a penincular fraimd of mind, fordeed he was langseling to talka holt of hems, clown toff, tye hug fliorten. cablen: clifftop. shelvling tobay oppe-long tomeadow. ware cobbles. posh.',\n", - " '— skibbereen has common inn, by pounautique, with poke-way paw, and sadder raven evermore, telled shinshanks lauwering frankish for his kicker who, through the medium of gallic',\n", - " '— pukkelsen, tilltold. that with some our prowed invisors how their ulstravoliance led them infroraids, striking down and landing alow, against our aerian insulation resistance, two boards that beached, ast one, wid-ness thane and tysk and hanry. prepatrickularly all, they summed. kish met. bound to. and for landlord, noting, nodding, a coast to moor was cause to mear. besides proof plenty, over proof while they either took a heft. or the other swore his eric. heaved two, spluiced the menbrace. heirs at you, brewinbaroon! weth a whistle for methanks.',\n", - " '— good marrams and good merrymills, sayd good mothers gossip, bobbing his bowing both ways with the bents and skerries, when they were all in the old walled of kinkincaraborg (and that they did overlive the hot air of montybunkum upon the coal blasts of mitropolitos let there meeds be the hourihorn), hibernia-ting after seven oak ages, fearsome where they were he had gone dump in the doomering this tide where the peixies would pickle him down to the button of his seat and his sess old soss erinly into the boelgein with the help of divy and jorum’s locquor and shut the door after him to make a rarely fine ran’s cattle of fish. morya mortimor! allapalla overus! howoft had the ballshee tried! and they laying low for his home gang in that eeriebleak mead, with fireball feast and turkeys tumult and paupers patch to provide his bum end. the foe things your niggerhead needs to be fitten for the big water. he made the sign of the ham-mer. god’s drought, he sayd, after a few daze, thinking of all those bliakings, how leif pauses! here you are back on your haw-kins, from blasil the brast to our povotogesus portocall, the furt on the turn of the hurdies, slave to trade, vassal of spices and a dragon-the-market, and be turbot, lurch a stripe, as were you soused methought out of the mackerel. eldsfells! sayd he. a kumpavin on iceslant! here’s open handlegs for one old faulker from the hame folk here in you’s booth! so sell me gundy, sagd the now waging cappon, with a warry posthumour’s expletion, shoots ogos shootsle him or where’s that slob? a bit bite of keesens, he sagd, til dennis, for this jantar (and let the dobblins roast perus,) or a stinger, he sagd, t. d., on a doroughbread ken-nedy’s for patriki san saki on svo fro or my old relogion’s out of tiempor and when i’m soured to the tipple you can sink me lead, he sagd, and, if i get can, sagd he, a pusspull of tomtar-tarum. thirst because homing hand give. allkey dallkey, sayd the shop’s housebound, for he was as deep as the north star (and could tolk sealer’s solder into tankar’s tolder) as might have sayd every man to his beast, and a treat for the trading scow, my cater million falls to you and crop feed a stall! afram. and he got and gave the ekspedient for hombreyhambrey wilcomer what’s the good word. he made the sign on the feaster. cloth be laid! and a disk of osturs for the swanker! allahballah! he was the care-lessest man i ever see but he sure had the most sand. one fish — ball with fixings! for a dan of a ven of a fin of-a son of a gun of a gombolier. ekspedient, sayd he, sonnur mine, shackleton sul-ten! opvarts and at ham, or this ogry osler will oxmaul us all, sayd he, like one familiar to the house, while waldemar was heeling it and maldemaer was toeing it, soe syg he was walking from the bowl at his food and the meer crank he was waiting for the tow of his turn. till they plied him behaste on the fare. say wehrn!',\n", - " '— nohow did he kersse or hoot alike the suit and solder skins, minded first breachesmaker with considerable way on and',\n", - " '— humpsea dumpsea, the munchantman, secondsnipped cutter the curter.',\n", - " '— a ninth for a ninth. take my worth from it. and no mistaenk, they thricetold the taler and they knew the whyed for too. the because of his sosuch. uglymand fit himshemp but throats fill us all! and three’s here’s for repeat of the unium! place the scaurs wore on your groot big bailey bill, he apullajibed, the o’colonel power, latterly distented from the o’conner dan, so promonitory himself that he was obliffious of the headth of hosth that rosed before him, from sheeroskouro, under its zembliance of mardal mansk, like a dun darting dullemitter, with his moultain haares stuck in plostures upon it, (do you kend yon peak with its coast so green?) still trystfully acape for her his gragh knew well in pre- cious memory and that proud grace to her, in gait a movely water, of smile a coolsome cup, with that rarefied air of a montmalency and her quick little breaths and her climbing colour. take thee live will save thee wive? i’ll think uplon, lilady. should anerous enthroproise call homovirtue, duinnafear! the ghem’s to the ghoom be she nere zo zma. obsit nemon! floodlift, her ancient of rights regaining, so yester yidd, even remembrance. and greater grown then in the trifle of her days, a mouse, a mere tittle, trots offwith the whole panoromacron picture. her young-free yoke stilling his wandercursus, jilt the spin of a curl and jolt the broadth of a buoy. the annexandreian captive conquest. ethna prettyplume, hooghly spaight. him her first lap, her his fast pal, for ditcher for plower, till deltas twoport. while this glowworld’s lump is gloaming off and han in hende will grow. through simpling years where the lowcasts have aten of amilikan honey and datish fruits and a bannock of barley on tham the thatcher’s palm. o wanderness be wondernest and now! listen-eath to me, veils of mina! he would withsay, nepertheloss, that is too me mean. i oldways did me walsh and preechup ere we set to sope and fash. now eats the vintner over these contents oft with his sad slow munch for backonham. yet never shet it the brood of aurowoch, not for legions of donours of gamuels. i have performed the law in truth for the lord of the law, taif alif i have held out my hand for the holder of my heart in anna-polis, my youthrib city. be ye then my protectors unto mussa — botomia before the guards of the city. theirs theres is a gentle — meants agreement. womensch plodge. to slope through heather till the foot. join andersoon and co. if the flowers of speech valed the springs of me rising the hiker i hilltapped the murk i mist my blezzard way. not a knocker on his head nor a nick-number on the manyoumeant. with that coldtbrundt natteldster wefting stinks from alpyssinia, wooving nihilnulls from memo-land and wolving the ulvertones of the voice. but his spectrem onlymergeant crested from the irised sea in plight, calvitousness, loss, nngnr, gliddinyss, unwill and snorth. it might have been what you call your change of my life but there’s the chance of a night for my lifting. hillyhollow, valleylow! with the sounds and the scents in the morning.',\n", - " '— i shot be shoddied, throttle me, fine me cowheel for ever, usquebauched the ersewild aleconner, for bringing briars to bem-bracken and ringing rinbus round demetrius for, as you wrinkle wryghtly, bully bluedomer, it’s a suirsite’s stircus haunting hes-teries round old volcanoes. we gin too gnir and thus plinary indulgence makes collemullas of us all. but time is for talerman tasting his tap. tiptoptap, mister maut.',\n", - " 'he made one summery (cholk and murble in lonestime) of his the three swallows like he was muzzling moselems and torched up as the faery pangeant fluwed down the hisophenguts, a slake for the quicklining, to the tickle of his tube and the twobble of his fable, o, fibbing once upon a spray what a queer and queasy spree it was. plumped.',\n", - " 'which both did. prompt. eh, chrystal holder? save ampster-dampster that had rheumaniscences in his netherlumbs.',\n", - " '— by the drope in his groin, ali slupa, thinks the cappon, plumbing his liners, we were heretofore.',\n", - " '— and be the coop of his gobbos, reacher the thaurd, thinks your girth fatter, apopo of his buckseaseilers, but where’s horace’s courtin troopsers?',\n", - " '— i put hem behind the oasthouse, sagd pukkelsen, tuning wound on the teller, appeased to the cue, that double dyode dealered, and he’s wallowing awash swill of the tarra water. and it marinned down his gargantast trombsathletic like the marousers of the gulpstroom. the kersse of wolafs on him, shitateyar, he sagd in the fornicular, and, at weare or not at weare, i’m sigen no stretcher, for i carsed his murhersson goat in trotthers with them newbuckle-noosers behigh in the fire behame in the oasthouse. hops! sagd he.',\n", - " '— smoke and coke choke! lauffed till the tear trickled drown a thigh the loafers all but a sheep’s whosepants that swished to the lord he hadn’t and the starer his story was talled to who felt that, the fierifornax being thurst on him motophosically, as omar sometime notes, such a satuation, debauchly to be watched for, would empty dempty him down to the ground.',\n", - " '— and hopy tope! sagd he, anded the enderer, now dyply hypnotised or hopeseys doper himself. and kersse him, sagd he, after inunder tarrapoulling, and the shines he cuts, shinar, the screeder, the stitchimesnider, adepted to nosestorsioms in his budinholder, cummanisht, sagd he, (fouyoufoukou!) which goes in the ways smooking publics, sagd he, bomboosting to be in thelitest civille row faction for a dubblebrasterd navvygaiterd, (flick off that hvide aske, big head!) sagd he, the big bag of my hamd till hem, tollerloon, sagd he, with his pudny bun brofkost when he walts meet the bangd. i will put his fleas of wood in the flour, and he sagd, behunt on the oatshus, the not wellmade one, sagd he, the kersse of my armsore appal this most unmentionablest of men (mundering eeriesk, if he didn’t scalded him all the shimps names in his gitter!) a coathemmed gusset sewer, sagd he, his first cudgin is an innvalet in the unitred stables which is not feed tonights a kirtle offal fisk and he is that woe worstered wastended shootmaker whatever poked a noodle in a clouth!',\n", - " 'so for the second tryon all the meeting of the acarras had it. how he hised his bungle oar his shourter and cut the pinter offhis pourer and lay off for fellagulphia in the farning. from his dhruimadhreamdhrue back to brighten-pon-the-baltic, from our lund’s rund turs bag til threathy hoeres a wuke. ugh!',\n", - " '— stuff, taaffe, stuff! interjoked it his wife’s hopesend to the boath of them consistently. come back to may aileen.',\n", - " '— ild luck to it! blastfumed the nowraging scamptail, in flating furies outs trews his cammelskins, the flashlight of his ire wackering from the eyewinker on his masttop. and aye far he fared from afferik arena and yea near he night till blawland bearring, baken be the brazen sun, buttered be the snows. and the sea shoaled and the saw squalled. and, soaking scupper, didn’t he drain',\n", - " 'a pause.',\n", - " 'infernal machinery (serial number: bullysacre, dig care a dig) having thus passed the buck to billy back from jack (finder the keeper) as the baffling yarn sailed in circles it was now high tide for the reminding pair of snipers to be suitably punished till they had, like the pervious oelkenner done, liquorally no more powers to their elbow. ignorinsers’ bliss, therefore, their not to say rifle butt target, none too wisefolly, poor fish, (he is eating, he is spun, is milked, he dives) upholding a lampthorne of lawstift as wand of welcome to all men in bonafay, (and the corollas he so has saved gainsts the virus he has thus injected!) discoastedself to that kipsie point of its dublin bar there, breaking and entering, from the outback’s dead heart, glasthule bourne or boehernapark nolagh, by wattsismade or bianconi, astraylians in island, a wellknown tall hat blown in between houses by a nightcap of that silk or it might be a black velvet and a kiber galler dragging his hunker, were signalling gael warnings towards wazwollenzee haven to give them their beerings, east circular route or elegant central highway. open, ’tis luck will have it! lifeboat alloe, noeman’s woe, hircups emptybolly! with winkles whelks and cocklesent jelks. let be buttercup eve lit by night in the phoenix! music. and old lotts have funn at flammagen’s ball. till irinwakes from slumber deep. how they succeeded by courting daylight in saving darkness he who loves will see.',\n", - " 'business. his bestness. copeman helpen.',\n", - " 'contrescene.',\n", - " 'he cupped his years to catch me’s to you in what’s yours as minest to hissent, giel as gail, geil as gaul, odorozone, now our-menial servent, blanding rum, milk and toddy with i hand it to you. saying whiches, see his bow on the hapence, with a pat-tedyr but digit here, he scooped the hens, hounds and horses biddy by bunny, with an arc of his covethand, saved from the drohnings they might oncounter, untill his cubid long, to hide in dry. aside. your sows tin the topple, dodgers, trink me dregs! zoot!',\n", - " 'and with the gust of a spring alice the fossickers and swaggelers with him on the hoof from down under piked forth desert roses in that mulligar scrub.',\n", - " 'reenter ashe junior. peiwei toptip, nankeen pontdelounges. gives fair day. cheroot. cheevio!',\n", - " 'off.',\n", - " '— take off thatch whitehat (lo, kersse come in back bespoking of loungeon off the boildawl stuumplecheats for rushirishis irush-lrish, dangieling his old conan over his top gallant shouldier so was, lao yiu shao, he’s like more look a novicer on the nevay).',\n", - " '— tick off that whilehot, you scum of a botch, (of kersse who, as he turned out, alas, hwen ching hwan chang, had been mocking his hollaballoon a sample of the costume of the country).',\n", - " '— tape oaf that saw foull and sew wrong, welsher, you suck of a thick, stock and the udder, and confiteor yourself (for bekersse he had cuttered up and misfutthered in the most multiplest manner for that poor old bridge’s masthard slouch a shook of cloakses the wise, hou he pouly hung hoang tseu, his own fitther couldn’t nose him).',\n", - " 'chorus: with his coate so graye. and his pounds that he pawned from the burning.',\n", - " '— and, haikon or hurlin, who did you do at doyle today, my horsey dorksey gentryman. serge mee, suit! sazd he, tersey ker-sey. and when tersse had sazd this kersse stood them the whole koursse of training how the whole blazy raze acurraghed, from lambkinsback to sliving board and from spark to phoenish. and he tassed him tartly and he sassed him smartly, tig for tager, strop for stripe, as long as there’s a lyasher on a kyat. and they peered him beheld on the pyre.',\n", - " 'and it was so. behold.',\n", - " '— same capman no nothing horces two feller he feller go where. isn’t that effect? gig for gag, asked there three newcom-mers till knockingshop at the ones upon a topers who, while in admittance to that impedance, as three as they were there, they had been malttreating themselves to their health’s contempt.',\n", - " '— that’s fag for fig, metinkus, confessed, mhos for mhos, those who, would it not be for that dielectrick, were upon the point of obsoletion, and at the brink of from the pillary of the nilsens and from the statutes of the kongbullies and from the millestones of ovlergroamlius libitate nos, domnial!',\n", - " '— and so culp me goose, he sazd, szed the ham muncipated of the first course, recoursing, all cholers and coughs with his beauw on the bummell, the bugganeering wanderducken, he sazd, (that his pumps may ship awhoyle shandymound of the dussard), the coarsehair highsaydighsayman, there’s nice tugs he looks, (how you was, ship alouset?) he sazd, the bloedaxe bloodooth baltxe-bec, that is crupping into our raw lenguage navel through the lumbsmall of his hawsehole, he sazd, donconfounder him, voyaging after maidens, belly jonah hunting the polly joans, and the hurss of all portnoysers befaddle him, he sazd, till i split in his flags, he sazd, one to one, the landslewder, after donnerbruch fire. reefer was a wenchman. one can smell off his wetsments how he is coming from a beach of promisck. where is that old muttiny, shall i ask? free kicks he will have from me, turncoats, in bar bartley if i wars a fewd years ago. meistr capteen gaascooker, a salestrimmer! as he was soampling me ledder, like pulp, and as i was trailing his fumbelums, like hulp, he’ll fell the fall of me faus, he sazd, like yulp! the goragorridgorballyed pushkalsson, he sazd, with his bellows pockets fulled of potchtatos and his fox in a stomach, a disagrees to his ramskew coddlelecherskithers’ zirkuvs, drop down dead and deaf, and there is never a teilwrmans in the feof fife of iseland or in the wholeabelongd of skunkinabory from drumadunderry till the rumnants of mecckrass, could milk a colt in thrushes foran furrow follower width that a hole in his tale and that hell of a hull of a hill of a camelump bakk. fadgest-fudgist!',\n", - " 'upon this dry call of selenium cell (that horn of lunghalloon, riland’s in peril!) with its doomed crack of the old damn ukonnen power insound in it the lord of the saloom, as if for a flash sala-magunnded himself, listed his tummelumpsk pack and hearinat presently returned him, ambilaterally alleyeoneyesed, from their uppletoned layir to his beforetime guests, that bunch of palers on their round, timemarching and petrolling how, who if they were abound to loose a laugh (toni lampi, you booraascal!) they were abooned to let it as the leashed they might do when they felt (o, the wolf he’s on the walk, sees his sham cram bokk!) their joke was coming home to them, the steerage way for stabling, ghus-torily spoeking, gen and gang, dane and dare, like the dud spuk of his first foetotype (trolldedroll, how vary and likely!), the filli-bustered, the fully bellied. with the old sit in his shoulders, and the new satin atlas onder his uxter, erning his breadth to the swelt of his proud and, picking up the emberose of the lizod lights, his tail toiled of spume and spawn, and the bulk of him, and hulk of him as whenever it was he reddled a ruad to riddle a rede from the sphinxish pairc while ede was a guardin, ere love a side issue. they hailed him cheeringly, their encient, the murrainer, and wallruse, the merman, ye seal that lubs you lassers, thallasee or tullafilmagh, when come of uniform age.',\n", - " '— heave, coves, emptybloddy!',\n", - " 'and ere he could catch or hook or line to suit their saussyskins, the lumpenpack. underbund was overraskelled. as',\n", - " '— sot! sod the tailors opsits from their gabbalots, change all that whole set. shut down and shet up. our set, our set’s allohn.',\n", - " 'and they poured em behoiled on the fire. scaald!',\n", - " 'rowdiose wodhalooing. theirs is one lessonless missage for good and truesirs. will any persen bereaved to be passent bring-back or rumpart to the hoved politymester. clontarf, one love, one fear. ellers for the greeter glossary of code, callen hom: finucane–lee, finucane–law.',\n", - " 'am. dg.',\n", - " 'welter focussed.',\n", - " 'wind from the nordth. warmer towards muffinbell, lull.',\n", - " 'as our revelant colunnfiller predicted in last mount’s chattiry sermon, the allexpected depression over schiumdinebbia, a bygger muster of veirying precipitation and haralded by faugh sicknells, (hear kokkenhovens ekstras!) and umwalloped in an unusuable suite of clouds, having filthered through the middelhav of the same gorgers’ kennel on its wage wealthwards and incursioned a sotten retch of low pleasure, missed in some parts but with lucal drizzles, the outlook for tomarry (streamstress mandig) beamed brider, his ability good.',\n", - " 'what hopends to they?',\n", - " 'giant crash in aden. birdflights confirm abbroaching nub- tials. burial of lifetenant–groevener hatchett, r.i.d. devine’s previdence.',\n", - " 'ls. de.',\n", - " 'art thou gainous sense uncompetite! limited. anna lynchya pourable! one and eleven. united we stand, even many offered. don’t forget. i wish auspicable thievesdayte for the stork dyrby. it will be a thousand’s a won paddies. and soon to bet. on drums of bliss. with hapsalap troth, hipsalewd prudity, hopesalot hon-nessy, hoopsaloop luck. after when from midnights unwards the fourposter harp quartetto. (kiskiviikko, kalastus. torstaj, tanssia. perjantaj, peleja. lavantaj ja sunnuntaj, christianismus kirjallisuus, kirjallisuus christianismus.) whilesd this pellover his finnisch.',\n", - " '— comither, ahorace, thou mighty man of valour, elderman adaptive of capel ysnod, and tsay-fong tsei-foun a laun bricks-number till i’ve fined you a faulter-inlaw, to become your son — to-be, gentlemens tealer, generalman seelord, gosse and bosse, hunguest and horasa, jonjemsums both, in sailsmanship, szed the head marines talebearer, then sayd the ships gospfather in the scat story to the husband’s capture and either you does or he musts ant this moment same, sayd he, so let laid pacts be being betving ye, he sayd, by my main makeshift, he sayd, one fisk and one flesk, as flat as, aestmand addmundson you, you’re iron slides and so hompety domp as paddley mac namara here he’s a hardy canooter, for the two breasts of banba are her soilers and her toilers, if thou wilt serve idyall as thou hast sayld. brothers boathes, brothers coathes, ye have swallen blooders’ oathes. and gophar sayd unto glideon and sayd he to the nowedding captain, the rude hunner-able humphrey, who was praying god of clothildies by the seven bosses of his trunktarge he would save bucklesome when she wooed belove on him, comeether, sayd he, my merrytime mare-lupe, you wutan whaal, sayd he, into the shipfolds of our quad — rupede island, bless madhugh, mardyk, luusk and cong! blass neddos bray! and no more of your maimed acts after this with your kowtoros and criados to every tome, thick and heavy, and our onliness of his revelance to your ultitude. the illfollowable staying in wait for you with the winning word put into his mouth or be the hooley tabell, as horrocks toler hath most cares to call it, i’ll rehearse your comeundermends and first mardhyr you en-tirely. as puck as that paddeus picked the pun and left the lollies off the foiled. a trinity judge will crux your boom. pat is the man for thy. ay ay! and he pured him beheild of the ouishguss, mingling a sign of the cruisk. i popetithes thee, ocean, sayd he, oscarvaughther, sayd he, erievikkingr, sayd he, intra trifum triforium trifoliorum, sayd he, onconditionally, forfor furst of giel-gaulgalls and hero chief explunderer of the clansakiltic, sayd he, the streameress mastress to the sea aase cuddycoalman’s and let this douche for you as a wholly apuzzler’s and for all the puk-kaleens to the wakes of you, sayd he, out of the hellsinky of the howtheners and be danned to ye, sayd he, into our roomyo connellic relation, sayd he, from which our this pledge is given, tera truly ternatrine if not son towards thousand like expect chrisan athems to which i osker your godhsbattaring, saelir, for as you gott kvold whereafter a gooden diggin and with gooder enscure from osion buck fared agen fairioes feuded hailsohame til edar in that the loyd mave hercy on your sael! anomyn and awer. spickinusand.',\n", - " '— nansense, you snorsted? he was haltid considerable agenst all religions overtrow so hworefore the thokkurs pokker the big-bug miklamanded storstore exploder would he be whulesalesolde daadooped by priest gudfodren of the sacredhaunt suit in diaeblen–balkley at domnkirk saint petricksburg? but ear this:',\n", - " '— and here, aaherra, my rere admirable peadar poulsen, sayd he, consistently, to the secondnamed sutor, my lately lamented sponsorship, comesend round that wine and lift your horn, sayd he, to show you’re a skolar for, winter you likes or not, we brought your summer with us and, tomkin about your lief eurek-ason and his undishcovery of americle, be the rolling forties, he sayd, and on my sopper crappidamn, as harris himself says, to let you in on some crismion dottrin, here is the ninethest pork of a man whisk swimmies in dybblin water from ballscodden easthmost till thyrston’s lickslip and, sayd he, (whiles the heart of lukky swayn slaughed in his icebox for to think of all the soorts of smukklers he would behave in juteyfrieze being forelooper to her) praties peel to our goodsend brandonius, filius of a cara, spouse to fynlogue, he has the nicesth pert of a nittlewoman in the house, la chito, la chato, la charmadouiro, tina-bat-talur, cif for your fob and a tesura astore for you, eslucylamp aswhen the surge seas sombren, that he daughts upon of anny livving plusquebelle, to child and foster, that’s the lippeyear’s wonder of totty go, newschool, two titty too at win winnie won, tramity trimming and funnity fare, with a grit as hard as the trent of the thimes but a touch as saft as the dee in flooing and never a hyderow jenny the like of her lightness at look and you leap, rheadoromanscing long evmans invairn, about little anny roners and all the lavinias of ester yours and pleding for them to herself in the periglus glatsch hangs over her trickle bed, it’s a piz of fortune if it never falls from the stuffel, and, when that mallaura’s over till next time and all the prim rossies are out dressparading and the tubas tout tout for the glowru of their god, making every dinny dingle after her down the dargul dale and (wait awhile, blusterbuss, you’re marchadant too forte and don’t start furlan your ladins till you’ ve learned the lie of her landuage!), when it’s summwer calding and she can hear the pianutunar beyant the bayondes in combria sleepytalking to the wiltsh muntons, titting out through her droemer window for the flyend of a touchman over the wishtas of english strand, when kilbarrack bell pings saksalaisance that concessas with sinbads may (pong!), where our dollimonde sees the phantom shape of mr fortunatus wright since winksome miss bulkeley made loe to her wrecker and he took her to be a rover, o, and playing house of ivary dower of gould and gift you soil me peepat my prize, which its a blue loogoont for her in a bleakeyed seusan if she can’t work her mireiclles and give norgeyborgey good airish timers, while her fresh racy turf is kindly kindling up the lovver with the flu, with a roaryboaryellas would set an ei-weddyng on fire, let aloon an old humpopolamos with the boomar — poorter on his brain, aiden bay scye and dye, aasbukividdy, twentynine to her dozen and coocoo him didulceydovely to his old cawcaws huggin and munin for his strict privatear which there’s no pure rube like an ool pool roober when your pullar beer turns out bruin o’luinn and beat his barge into a battering pram with her wattling way for cubblin and, be me fairy fay, sayd he, the marriage mixter, to kersse, son of joe ashe, her coax-fonder, wiry eyes and winky hair, timkin abeat your andraws meltons and his lovsang of the short and shifty, i will turn my thinks to things alove and i will speak but threes ones, sayd he, my truest patrions good founter, poles a port and zones asunder, tie up in hates and repeat at luxure, you can better your tooblue prodestind arson, tyler bach, after roundsabouts and donochs and the volumed smoke, though the clonk in his stumble strikes warn, and were he laid out on that counter there like a slavocrates amongst his skippies, when it comes to the ride onerable, sayd he, that’s to make plain nanny ni sheeres a full dinamarqueza, and all needed for the lay, from the hursey on the montey with the room in herberge down to forkpiece and bucklecatch, (elding, my elding! and lif, my lif!) in the pravacy of the pirmanocturne, hap, sayd he, at that meet hour of night, and hop, sayd he, ant the fyrsty annas everso thried (whiles the breath of huppy hulles-pond swumped in his seachest for to renumber all the mallyme — dears’ long roll and call of sweetheart emmas that every had a port in from coxenhagen till the brottels on the nile), while taylight is yet slipping under their pillow, (ill omens on kitty cole if she’s spilling laddy’s measure!) and before sing mattins in the fields, ringsengd ringsengd, bings heri the concorant erho, and the referinn fuchs gutmann gives us i’ll bell the welled or the steeplepoy’s revanger and all thingavalley knows for its never dawn in the dark but the deed comes to life? and raptist bride is aptist breed (tha lassy! tha lassy!), and, to buoy the hoop within us springing, ’tis no timbertar she’ll have then in her arms-brace to doll the dallydandle, our fiery quean, upon the night of the things of the night of the making to stand up the double tet of the oversear of the seize who cometh from the mighty deep and on the night of making horuse to crihumph over his enemy, be the help of me cope as so pluse the riches of the roed-shields, with elizabeliza blessing the bedpain, at the willbedone of yinko jinko randy, come bastabasco and hippychip eggs, she will make a suomease pair and singlette, jodhpur smalls and tailor-less, a copener’s cribful, leaf, bud and berry, the divlin’s own little mimmykin puss, (hip, hip, horatia!) for my old comrhade salty-mar here, briganteen — general sir a. i. magnus, the flapper — nooser, master of the good lifebark ulivengrene of onslought,- and the homespund of her hearth, (fuss his farther was the norse norse east and muss his mother was a gluepot) and, gravydock or groovy anker, and a hulldread pursunk manowhood, who (with a chenchen for his delight time and a bonzeye nappin through his doze) he is the bettest bluffy blondblubber of an olewidgeon what overspat a skettle in a skib.',\n", - " 'cawcaught. coocaged.',\n", - " 'and dub did glow that night. in fingal of victories. cann-matha and cathlin sang together. and the three shouters of glory. ·yelling halfviewed their harps. surly tuhal smiled upon drear darthoola: and roscranna’s bolgaboyo begirlified the daughter of cormac. the soul of everyelsesbody rolled into its olesoleself. a doublemonth’s licence, lease on mirth, while hooney-moon and her flame went huneysuckling. holyryssia, what boom of bells! what battle of bragues on sandgate where met the bobby mobbed his bibby mabbing through the ryce. even tombs left doss and dunnage down in demidoff’s tomb and drew on the dournailed clogs that morty manning left him and legged in by ghoststown gate, like pompei up to date, with a sprig of white-boys heather on his late luke elcock’s heirloom. and some say they seen old dummydeaf with a leaf of bronze on his cloak so grey, trooping his colour a pace to the reire. and as owfally posh with his halfcrown jool as if he was the granjook meckl or paster de grace on the route de l’ep‚e. it was joobileejeu that all sorts’ jour. freestouters and publicranks, hafts on glaives. you could hear them swearing threaties on the cymylaya mountains, man. and giving it out to the ould fathach and louth-mouthing after the healy mealy with an enfysis to bring down the rain of tarar. nevertoletta! evertomind! the grandest bethehailey seen or heard on earth’s conspectrum since scape the goat, that gafr, ate the suenders bible. hadn’t we heaven’s lamps to hide us? yet every lane had its lively spark and every spark had its several spurtles and each spitfire spurtle had some trick of her trade, a tease for ned, nook’s nestle for fred and a peep at me mow for peer pol. so that father matt hughes looked taytotally threbled. but danno the dane grimmed. dune. ’twere yeg will elsecare doatty lanv meet they dewscent hyemn to cannons’ roar and rifles’ peal vill shantey soloweys sang! for there were no more tyrrhanees and for laxembraghs was pass-thecupper to our lader’s. and it was dim upon the floods only and there was day on all the ground.',\n", - " 'thus street spins legends while wharves woves tales but some family fewd felt a nick in their name. old vickers sate down on their airs and straightened the points of their lace. red rowleys popped out of their lairs and asked what was wrong with the race. mick na murrough used dripping in layers to shave all the furze off his face. the burke–lees and coyle–finns paid full feines for their sinns when the cap and miss coolie were roped.',\n", - " 'rolloraped.',\n", - " 'with her banbax hoist from holder, zig for zag through pool and polder, cheap, cheap, cheap and laughing jack, all augurs scorenning, see the bolche your pictures motion and kitzy kleinsuessmein eloping for that holm in finn’s hotel fiord, nova norening. where they pulled down the kuddle and they made fray and if thee don’t look homey, well, that dook can eye mae.',\n", - " 'he goat a berth. and she cot a manege. and wohl’s gorse mundom ganna wedst.',\n", - " 'knock knock. war’s where! which war? the twwinns. knock knock. woos without! without what? an apple. knock knock.',\n", - " 'the kilder massed, one then and uhindred, (harefoot, birdy-hands, herringabone, beesknees), and they barneydansked a kathareen round to know the who and to show the howsome. why was you hiding, moder of moders? and where was hunty, poppa the gun? pointing up to skyless heaven like the spoon out of sergeantmajor’s tay. which was the worst of them phaymix cupplerts? he’s herd of hoarding and her faiths is altared. becoming ungoing, their seeming sames for though that liamstone deaf do his part there’s a windtreetop whipples the damp off the mourning. but tellusit allasif wellasits end. and the lunger it takes the swooner they tumble two. he knows he’s just thrilling and she’s sure she’d squeam. the threelegged man and the tulip-pied dewydress. lludd hillmythey, we’re brimming to hear! the durst he did and the first she ever? peganeen bushe, this isn’t the polkar, catch as you cancan when high land fling! and you tim tommy melooney, i’ll tittle your barents if you stick that pigpin upinto meh!',\n", - " 'so in the names of the balder and of the sol and of the holli-chrost, ogsowearit, trisexnone, and by way of letting the aandt out of her grosskropper and leading the mokes home by their gribes, whoopsabout a plabbaside of plobbicides, alamam alemon, poison kerls, on this mounden of delude, and in the high places of delude of isreal, which is haraharem and the diublin’s owld mounden over against vikens, from your tarns, thwaites and thorpes, withes, tofts and fosses, fells, haughs and shaws, lunds, garths and dales, mensuring the megnominous as so will is the littleyest, the myrioheartzed with toroidal coil, eira area round wantanajocky, fin above wave after duckydowndivvy, trader arm aslung beauty belt, the formor velican and nana karlikeevna, sommerlad and cinderenda, valtivar and viv, how big bil brine borumoter first took his gage at lil lolly lavvander waader since when capriole legs covets limbs of a crane and was it the twylyd or the mounth of the yare or the feint of her smell made the seo-men assalt of her (in imageascene all: whimwhim whimwhim). to the laetification of disgeneration by neuhumorisation of our kristianiasation. as the last liar in the earth begeylywayled the first lady of the forest. though toot’s pardoosled sauve l’hum-mour! for the joy of the dew on the flower of the fleets on the fields of the foam of the waves of the seas of the wild main from borneholm has jest come to crown. snip snap snoody. noo err historyend goody. of a lil trip trap and a big treeskooner for he put off the ketyl and they made three (for fie!) and if hec dont love alpy then lad you annoy me. for hanigen with hunigen still haunt ahunt to finnd their hinnigen where pappappapparrassannuaragheallachnatull-aghmonganmacmacmacwhackfalltherdebblenonthedubblandadd — ydoodled and anruly person creeked a jest. gestapose to parry off cheekars or frankfurters on the odor. fine again, cuoholson! peace, o wiley!',\n", - " 'such was the act of goth stepping the tolk of doolin, drain and plantage, wattle and daub, with you’ll peel as i’ll pale and we’ll pull the boath toground togutter, testies touchwood and shenstone unto pop and puma, calf and condor, under all the gaauspices (incorporated), the chal and his chi, their roammerin over, gribgrobgrab reining trippetytrappety (so fore shalt thou flow, else thy cavern hair!) to whom she (anit likenand please-thee!). till sealump becamedump to bumpslump a lifflebed, (altol…, allamarsch! o gu‚, o gu‚!). kaemper daemper to jetty de waarft, all the weight of that mons on his little ribbeunuch! him that gronde old mand to be that haard of heaering (afore said) and her the petty tondur with the fix in her changeable eye (which see), lord, me lad, he goes with blowbierd, leedy, plasheous stream. but before that his loudship was converted to a landshop there was a little theogamyjig incidence that hoppy-go-jumpy junuary morn when he colluded with the cad out on the beg amudst the fiounaregal gaames of those oathmassed fenians for whome he’s forcecaused a bridge of the piers, at inverleffy, mating pontine of their engagement, synnbildising graters and things, eke ysendt? o nilly, not all, here’s the fust cataraction! as if ever she cared an assuan damm about her harpoons sticking all out of him whet between phoenix his calipers and that psourdonome sheath. sdrats ye, gus paudheen! kenny’s thought ye, dinny oozle! while the cit was leaking asphalt like a suburbiaurealis in his rure was tucking to him like old booths, booths, booths, booths.',\n", - " 'enterruption. check or slowback. dvershen.',\n", - " 'why, wonder of wenchalows, what o szeszame open, v doer s t doing? v door s being. but how theng thingajarry miens but this being becoming n z doer? k? an o. it is ne not him what foots like a glove, shoehandschiner pad podomkin. sooftly, anni slavey, szszuszchee is slowjaneska.',\n", - " 'the aged crafty nummifeed confusionary overinsured ever-iapsing accentuated katekattershin clopped, clopped, clopped, darsey dobrey, back and along the danzing corridor, as she was going to pimpim him, way boy wally, not without her comple-ment of cavarnan men, between the two deathdealing allied divisions and the lines of readypresent fire of the corkedagains up-stored, taken in giving the saloot, band your hands going in, bind your heads coming out, and remoltked to herselp in her serf’s alown, a weerpovy willowy dreevy drawly and the patter of so familiars, farabroads and behomeans, as she shure sknows, boof for a booby, boo: new uses in their mewseyfume. the jammesons is a cook in his hair. and the juinnesses is a rapin his hind. and the bullingdong caught the wind up. dip.',\n", - " 'and the message she braught belaw from the missus she bragged abouve that had her agony stays outsize her sari chemise, blancking her shifts for to keep up the fascion since the king of all dronnings kissed her beeswixed hand, fang (pierce me, hunky, i’m full of meunders!), her fize like a tubtail of mondayne clothes, fed to the chaps with working medicals and her birthright pang that would split an atam like the forty pins in her hood, was to fader huncher a howdydowdy, to mountainy mots in her amnest plein language, from his fain a wan, his hot and tot lass, to pierce his ropeloop ear, how, podushka be prayhasd, now the sowns of his loins were awinking and waking and his dorter of the hush lillabilla lullaby (lead us not into reformication with the poors in your thingdom of gory, o moan!), once after males, nonce at a time, with them murphy’s puffs she dursted with gnockmeggs and the bramborry cake for dour dorty dompling obayre mattom beetom_and epsut the pfot and if he was whishtful to licture her caudal with chesty chach from his dauberg den and noviny news from naul or toplots talks from morrienbaths or a parrotsprate’s cure for ensevelised lethurgies, spick’s my spoon and the veriblest spoon, ’twas her hour for the chamber’s ensallycopodium with love to melost panny kostello from x.y. zid for to folly billybobbis gibits porzy punzy and she was a wanton for de marera to take her genial glow to bed.',\n", - " '— this is time for my tubble, reflected mr ‘gladstone browne’ in the toll hut (it was choractoristic from that ‘man of delgany’). dip.',\n", - " '— this is me vulcanite smoking, profused mr ‘bonaparte nolan’ under the natecup (one feels how one may hereby reekig-nites the ‘ground old mahonagyan’). dip.',\n", - " '— and this is defender of defeater of defaulter of deformer of the funst man in danelagh, willingtoned in with this glance dowon his browen and that born appalled noodlum the panellite pair’s cummal delimitator, odding: oliver white, he’s as tiff as she’s tight. and thisens his speak quite hoarse. dip.',\n", - " 'in reverence to her midgetsy the lady of the comeallyous as madgestoo our own one’s goff stature. prosim, prosit, to the krk n yr nck!',\n", - " 'o rum it is the chomicalest thing how it pickles up the punchey and the jude. if you’ll gimmy your thing to me i will gamey a sing to thee. stay where you’re dummy! to get her to go ther. he banged the scoop and she bagged the sugar while the whole pub’s pobbel done a stare. on the mizzatint wall. with its chromo for all, crimm crimms. showing holdmenag’s asses sat by allme-neck’s men, canins to ride with em, canins that lept at em, woollied and flundered.',\n", - " 'so the katey’s came and the katey’s game. as so gangs sludge-nose. and that henchwench what hopped it dunneth there duft the. duras.',\n", - " '(silents)',\n", - " 'yes, we’ve conned thon print in its gloss so gay how it came from finndlader’s yule to the day and it’s hey tallaght ho on the king’s highway with his hounds on the home at a turning. to donnicoombe fairing. millikin’s pass. when visiting at izd-la-chapelle taste the lipe ofthe waters from carlowman’s cup.',\n", - " 'it tellyhows its story to their six of hearts, a twelve-eyed man; for whom has madjestky who since is dyed drown reign before the izba.',\n", - " 'au! au! aue! ha! heish!',\n", - " 'as stage to set by ritual rote for the grimm grimm tale of the four of hyacinths, the deafeeled carp and the bugler’s dozen of leagues-inamour or how holispolis went to parkland with mabby and sammy and sonny and sissy and mop’s varlet de shambles and all to find the right place for it by peep o’skirt or pipe a skirl when the hundt called a halt on the chivvychace of the ground sloper at that ligtning lovemaker’s thender apeal till, between wandering weather and stable wind, vastelend hosteil-end, neuziel and oltrigger some, bullyclubber burgherly shut the rush in general.',\n", - " 'let us propel us for the frey of the fray! us, us, beraddy!',\n", - " 'ko niutirenis hauru leish! a lala! ko niutirenis haururu laleish! ala lala! the wullingthund sturm is breaking. the sound of maormaoring the wellingthund sturm waxes fuer-cilier. the whackawhacks of the sturm. katu te ihis ihis! katu te wana wana! the strength of the rawshorn generand is known throughout the world. let us say if we may what a weeny wukeleen can do.',\n", - " 'au! au! aue! ha! heish! a lala!',\n", - " '— paud the roosky, weren’t they all of them then each in his different way of saying calling on the one in the same time hibernian knights underthaner that was having, half for the laugh of the bliss it sint barbaras another doesend end once tale of a tublin wished on to him with its olives ocolombs and its hills owns ravings and tutty his tour in his nowhare’s yarcht. it was before when aimee stood for arthurduke for the figger in pro-fane and fell from grace so madlley for fill the flatter fellows. (they were saying). and it was the lang in the shirt in the green. of the wood, where obelisk rises when odalisks fall, major threft on the make and jollyjacques spindthrift on the merry (o mr mathurin, they were calling, what a topheavy hat you’re in! and there aramny maeud, then they were saying, these so piou- pious!). and it was cyclums cyclorums after he made design on the corse and he want to mess on him (enterellbo add all taller danis), back, seater and sides, and he applied (i’m amazingly sorracer!) the wholed bould shoulderedboy’s width for fullness, measures for messieurs, messer’s massed, (they were saycalling again and agone and all over agun, the louthly meathers, the loudly meaders, the lously measlers, six to one, bar ones).',\n", - " 'and they pled him beheighten the firing. dope.',\n", - " 'maltomeetim, alltomatetam, when a tale tarries shome shunter shove on. fore auld they wauld to pree.',\n", - " 'pray.',\n", - " 'of this mr a (tillalaric) and these wasch woman (dapple-hued), fhronehflord and feeofeeds, who had insue keen and able and a spindlesong aside, nothing more is told until now, his awebrume hour, her sere sahara of sad oakleaves. and then. be old. the next thing is. we are once amore as babes awondering in a wold made fresh where with the hen in the storyaboot we start from scratch.',\n", - " 'so the truce, the old truce and nattonbuff the truce, boys. drouth is stronger than faction. slant. shinshin. shinshin.',\n", - " '— it was of the grant, old gartener, qua golden meddlist, publius manlius, fuderal private, (his place is his poster, sure, they said, and we’re going to mark it, sore, they said, with a carbon caustick manner) bequother the liberaloider at his petty corpore-lezzo that hung caughtnapping from his baited breath, it was of him, my wife and i thinks, to feel to every of the younging fruits, tenderosed like an atalantic’s breastswells or, on a second wreathing, a bright tauth bight shimmeryshaking for the welt of his plow. and wher-o the peckadillies at his wristsends meetings be loving so lightly dovessoild the candidacy, me wipin eye sinks, of his softboiled bosom should be apparient even to our illicterate of nullatinenties.',\n", - " 'all to which not a lot snapped the nolan of the calabashes at his whilom eweheart photognomist who by this sum taken was as much incensed by saint bruno as that what he had consummed was his own panegoric, and wot a lout about it if it was only a pippappoff pigeon shoot that gracesold getrunner, the man of centuries, was bowled out by judge, jury and umpire at batman’s biff like a witchbefooled legate. dupe.',\n", - " 'his almonence being alaterelly in dispensation with his three oldher patrons’ aid, providencer’s divine cow to milkfeeding mleckman, bonafacies to solafides, what matter what all his freudzay or who holds his hat to harm him, let hutch just keep on under at being a vanished consinent and let annapal livibel prettily prattle a lude all her own. and be that semeliminal salmon solemonly angled, ingate and outgate. a truce to lovecalls, dulled in warclothes, maleybags, things and bleakhusen. leave the letter that never begins to go find the latter that ever comes to end, written in smoke and blurred by mist and signed of solitude, sealed at night.',\n", - " 'simply. as says the mug in the middle, nay brian nay noel, ney billy ney boney. imagine twee cweamy wosen. suppwose you get a beautiful thought and cull them sylvias sub silence. then inmaggin a stotterer. suppoutre him to been one bigger-master omnibil. then lustily (tutu the font and tritt on the boks — woods like gay feeters’s dance) immengine up to three longly lurking lobstarts. fair instents the will woolsley wellaslayers. pet her, pink him, play pranks with them. she will nod ampro-perly smile. he may seem to appraisiate it. they are as piractical jukersmen sure to paltipsypote. feel the wollies drippeling out of your fingathumbs. says to youssilves (floweers have ears, heahear!) solowly: so these ease budlim! how do, dainty dau-limbs? so peached to pick on you in this way, prue and simple, pritt and spry! heyday too, malster faunagon, and hopes your hahititahiti licks the mankey nuts! and oodlum hoodlum dood-lum to yes, donn, teague and hurleg, who the bullocks brought you here and how the hillocks are ye?',\n", - " 'we want bud. we want bud budderly. we want bud budderly boddily. there he is in his borrisalooner. the man that shunned the rucks on gereland. the man thut won the bettlle of the bawll. order, order, order, order! and tough. we call on tan-cred artaxerxes flavin to compeer with barnabas ulick dunne. order, order, order! milster malster in the chair. we’ve heard it sinse sung thousandtimes. how burghley shuck the rackushant germanon. for ehren, boys, gobrawl!',\n", - " 'a public plouse. citizen soldiers.',\n", - " 'taff (a smart boy, of the peat freers, thirty two eleven, looking through the roof towards a relevution of the karmalife order privious to his hoisting of an emergency umberolum in byway of paraguastical solation to the rhyttel in his hedd). all was flashing and krashning blurty moriartsky blutcherudd? what see, buttywalch? tell ever so often?',\n", - " 'butt (mottledged youth, clergical appealance, who, as his pied friar, is supposing to motto the sorry dejester in tifftaff toffiness or to be digarced from ever and a daye in his accounts). but da. but dada, mwilshsuni. till even so aften. sea vaast a pool!',\n", - " 'taff (porumptly helping himself out by the cesspull with a yellup yurrup, puts up his furry furzed hare). butly bitly! humme to our mounthings. conscribe him tillusk, unt, in his jubalant tubalence, the groundsapper, with his soilday site out on his moulday side in. the gubernier-gerenal in laut-lievtonant of baltiskeeamore, amaltheouse for leporty hole! endues paramilintary langdwage. the saillils of the yellavs nocadont palignol urdlesh. shelltoss and welltass and telltuss aghom! sling stranaslang, how malo-razzias spikes her, coining a speak a spake! not the setanik stuff that slimed soft siranouche! the goot old gunshop monowards for manosymples. tincurs tammit! they did oak hay doe fou chang-il-meng when that man d’airain was big top tom saw tip side bum boss pageantfiller. ajaculate! all lea light! rassamble the glowrings of bruyant the bref when the mollies makehal-pence took his leg for his thumb. and may he be too an intrepida — tion of our dreams which we foregot at wiking when the mom hath razed out limpalove and the bleakfrost chilled our ravery! pook. sing ching lew mang! upgo, bobbycop! lets hear in remember the braise of hold!',\n", - " \"butt (drawling forth from his blousom whereis meditabound of his minkerstary, switches on his gorsecopper’s fling weitoheito lang-thorn, fed up the grain oils of aerin, while his laugh neighs banck as that flashermind’s rays and his lipponease longuewedge wambles). ullahbluh! sehyoh narar, pokehole sann! manhead very dirty by am anoyato. like old dolldy icon when he cooked up his iggs in bicon. he gatovit and me gotafit and oalgoak’s cheloven gut a fudden. povar old pitschobed! molodeztious of metchennacht belaburt that pentschmyaso! bog carsse and dam neat, sar, gam can't! limbers affront of him, lumbers behund. while the bucks bite his dos his hart bides the ros till the bounds of his bays bell the warning. sobaiter sobarkar. he was enmivallupped. chro-mean fastion. with all his cannoball wappents. in his raglanrock and his malakoiffed bulbsbyg and his varnashed roscians and his cardigans blousejagged and his scarlett manchokuffs and his tree-coloured camiflag and his perikopendolous gaelstorms. here weeks hire pulchers! obriania’s beromst! from karrs and polikoff’s, the men’s confessioners. seval shimars pleasant time payings. mousoumeselles buckwoulds look. tenter and likelings.\",\n", - " 'taff (all perssiasterssias shookatnaratatattar at his waggon-horchers, his bulgeglarying stargapers razzledazzlingly full of eyes, full of balls, full of holes, full of buttons, full of stains, full of medals, full of blickblackblobs). grozarktic! toadlebens! some garment-guy! insects appalling, low hum clang sin! a cheap decoy! too deep destroy! say mangraphique, may say nay por daguerre!',\n", - " 'butt (if that he hids foregodden has nate of glozery farused ameet the florahs of the follest, his spent fish’s livid smile giving allasundery the bumfit of the doped). come alleyou jupes of wymmingtown that graze the calves of man! a bear raigning in his heavenspawn consomation robes. rent, outraged, yewleaved, grained, bal-looned, hindergored and voluant! erminia’s capecloaked hoo — doodman! first he s s st steppes. then he st stoo stoopt. lookt.',\n", - " 'taff (strick struck strangling like aleal lusky lubliner to merum-ber by the cycl of the cruize who strungled attahilloupa with what empoisoned el monte de zuma and failing wilnaynilnay that he was pallups barn in the minkst of the krumlin befodt he was pop-soused into the monkst of the vatercan, makes the holypolygon of the emt on the greaseshaper, a little farther, a little soon, a lettera- cettera, oukraydoubray). scutterer of guld, he is retourious on every roudery! the lyewdsky so so sewn of a fitchid! with his walshbrushup. and his boney bogey braggs.',\n", - " 'butt (after his tongues in his cheeks, with pinkpoker pointing out in rutene to impassible abjects beyond the mistomist towards lissnaluhy such as the djublian alps and the hoofd ribeiro as where he and his trulock may ever make a game). the field of karhags and that bloasted tree. forget not the felled! for the lomondations of oghrem! warful doon’s bothem. here furry glunn. nye? their feery pass. tak! with guerillaman aspear aspoor to prink the pranks of primkissies. and the buddies be-hide in the byre. allahblah!',\n", - " 'taff (a blackseer, he stroves to regulect all the straggles for wife in the rut of the past through the widnows in effigies keening after the blank sheets in their faminy to the relix of oll decency from over draught). oh day of rath! ah, murther of mines! eh, selo moy! uh, zulu luy! bernesson mac mahahon from osro bearing nose easger for sweeth prolettas on his swooth prowl!',\n", - " 'butt (back to his peatrol and paump: swee gee’s wee rest: no more applehooley: dodewodedook). bruinoboroff, the hooney-moonger, and the grizzliest manmichal in meideveide! whose annal livves the hoiest! for he devoused the lelias on the fined and he conforted samp, tramp and marchint out of the drumbume of a narse. guards, serf finnland, serve we all!',\n", - " 'taff (whatwidth the psychophannies at the front and whetwadth the psuckofumbers beholden the fair, illcertain, between his bulchri-chudes and the roshashanaral, where he sees bishop ribboncake plus his pollex prized going forth on his visitations of mirrage or miss horizon, justso all our fannacies daintied her, on the curve of the camber, unsheathing a showlaced limbaloft to the great consternations). divulge! hyededye, kittyls, and howdeddoh, pan! poshbott and pulbuties. see that we soll or let dargman be luna as strait a way as your ant’s folly me line while ye post is goang from piping pubwirth to haunted hillborough on his mujiksy’s zaravence, the riss, the ross, the sur of all russers, as my farst is near to hear and my sackend is meet to sedon while my whole’s a peer’s aureolies. we should say you dones the polecad. bang on the booche, gurg in the gorge, rap on the roof and your flup is unbu . . .',\n", - " 'butt (at the signal of his act which seems to sharpnel his innermals menody, playing the spool of the little brown jog round the wheel of her whang goes the millner). buckily buckily, blodestained boyne! bimbambombumb. his snapper was shot in the rumjar journaral. why the gigls he lubbed beeyed him.',\n", - " 'taff (obliges with a two stop yogacoga sumphoty on the bones or ivory girl and ebony boy). the balacleivka! trovatarovitch! i trumble!',\n", - " 'butt (with the sickle of a scygthe but the humour of a hummer, o, howorodies through his cholaroguled, fumfing to a fullfrength with this wallowing olfact). mortar martar tartar wartar! may his boules grow wider so his skittles gets worse! the aged monad making a venture out of the murder of investment. i seen him acting surgent what betwinks the scimitar star and the ashen moon. by their lights shalthow throw him! piff paff for puffpuff and my pife for his cgar! the mlachy way for gambling.',\n", - " 'taff (awary that the first sports report of loudin reginald has now been afterthoughtfully colliberated by a saggind spurts flash, takes the dipperend direction and, for tasing the tiomor of malaise after the pognency of orangultonia, orients by way of sagit-tarius towards draco on the lour). and you collier carsst on him, the corsar, with boyle, burke and campbell, i’ll gogemble on strangbones tomb. you had just been cerberating a camp camp camp to saint sepulchre’s march through the armeemonds re-treat with the boys all marshalled, scattering giant’s hail over the curseway, fellowed along the rout by the stenchions of the corpse. tell the coldspell’s terroth! if you please, commeylad! perfedes albionias! think some ingain think, as teakortairer sate over the galwegian caftan forewhen orops and aasas were chooldrengs and micramacrees! a forward movement, miles na bogaleen, and despatch!',\n", - " 'butt (slinking his coatsleeves surdout over his squad mutton shoulder so as to loop more life the jauntlyman as he scents thc anggreget yup behound their whole scoopchina’s desperate noy’s totalage and explaining aposteriorly how awstooloo was valde-sombre belowes hero and he was in a greak esthate phophiar an erixtion on the soseptuple side of him made spoil apriori his popo-porportiums). yass, zotnyzor, i don’t think i did not, pojr. never you brother me for i scout it, think you! ichts nichts on nichts! greates schtschuptar! me fol the rawlawdy in the schpirrt of a schkrepz. of all the quirasses and all the qwehrmin in the tra-gedoes of those antiants their grandoper, that soun of a gun — nong, with his sabaothsopolettes, smooking his scandleloose at botthends of him! foinn duhans! i grandthinked after his obras after another time about the itch in his egondoom he was legging boldylugged from some pulversporochs and lyoking for a stool-eazy for to nemesisplotsch allafranka and for to salubrate himself with an ultradungs heavenly mass at his base by a suprime pomp-ship chorams the perished popes, the reverend and allaverred cromlecks, and when i heard his lewdbrogue reciping his cheap cheateary gospeds to sintry and santry and sentry and suntry i thought he was only haftara having afterhis brokeforths but be the homely churopodvas i no sooner seen aghist of his frighte-ousness then i was bibbering with vear a few versets off fooling for fjorg for my fifth foot. of manifest ’tis obedience and the. flute!',\n", - " 'taff (though the unglucksarsoon is giming for to git him, jotning in, hoghly ligious, hapagodlap, like a soldierry sap, with a pique at his cue and a tyr in his eye and a bond of his back and a croak in his cry as did jolly well harm lean o’er him) is not athug who would. weepon, weeponder, song of sorrowmon! which goatheye and sheepskeer they damnty well know. papaist! gambanman! take the cawraidd’s blow! yia! your partridge’s last!',\n", - " 'butt (giving his scimmianised twinge in acknuckledownedgment of this cumulikick, strafe from the firetrench, studenly drobs led, sa-toniseels ouchyotchy, he changecors induniforms as he is lefting the gat out of the big: his face glows green, his hair greys white, his bleyes bcome broon to suite his cultic twalette). but when i seeing him in his oneship fetch along within hail that tourrible tall with his nitshnykopfgoknob and attempting like a brandylogged rudeman cathargic, lugging up and laiding down his livepelts so cruschinly like mebbuck at messar and expousing his old skinful self tailtottom by manurevring in open ordure to renew-murature with the cowruads in their airish pleasantry i thanked he was recovering breadth from some herdsquatters beyond the carcasses and i couldn’t erver nerver to tell a liard story not of i knew the prize if from lead or alimoney. but when i got inoccu-pation of a full new of his old basemiddelism, in ackshan, pagne pogne, by the veereyed lights of the stormtrooping clouds and in the sheenflare of the battleaxes of the heroim and mid the shieldfails awail of the bitteraccents of the sorafim and caught the pfierce tsmell of his aurals, orankastank, a suphead setrapped, like peder the greste, altipaltar, my bill it forsooks allegiance (gut bull it!) and, no lie is this, i was babbeing and yetaghain bubbering, bibbelboy, me marrues me shkewers me gnaas me fiet, tob tob tob beat it, solongopatom..clummensy if ever mis-used, must used you’s now! but, meac coolp, arram of eirze — rum, as i love our deer dirouchy, i confesses withould pride — jealice when i looked upon the saur of all the haurousians with the weight of his arge fullin upon him from the travaillings of his tommuck and rueckenased the fates of a bosser there was fear on me the sons of nuad for him and it was heavy he was for me then the way i immingled my irmenial hairmaierians ammon-gled his gospolis fomiliours till, achaura moucreas, i adn’t the arts to.',\n", - " 'taff (as a marrer off act, prepensing how such waldmanns from burnias seduced country clowns, he is preposing barangaparang after going knowing what he is doing after to see him pluggy well moidered as a murder effect, you bet your blowie knife, before he doze soze, sopprused though he is) grot zot! you hidn’t the hurts? vott fonn!',\n", - " 'butt (hearing somrother sudly give tworthree peevish sniff snuff snoores like govalise falseleep he waitawhishts to see might he stirs and then goes on kuldrum like without asking for pepeace or anysing a soul). merzmard! i met with whom it was too late. my fate! o hate! fairwail! fearwealing of the groan! and think of that when you smugs to bagot.',\n", - " 'taff (who meanwhilome at yarn’s length so as to put a nodje in the poestcher, by wile of stoccan his hand and of rooma makin ber getting umptyums gatherumed off the skattert, had been lavishing, lagan on lighthouse, words of silent power, susu glouglou biri — biri gongos, upon the repleted speechsalver’s innkeeping right which, thanks giveme and naperied norms nonobstaclant, there can be little doubt, have resulted in a momstchance ministring of another guid-ness, my good, to see) bompromifazzio! shumpum for pa-li-di and oukosouso for the nipper dandy! trink off this scup and be bladdy orafferteed! to bug at?',\n", - " 'butt (he whipedoff’s his chimbley phot, as lips lovecurling to the tongueopener, he takecups the communion of sense at the hands of the foregiver of trosstpassers and thereinofter centelinnates that potifex miximhost with haruspical hospedariaty proferring into his pauses somewhot salt bacon). theres scares knud in this gnarld warld a fully so svend as dilates for the improvement of our foerses of nature by your very ample solvent of referacting upon me like is boesen fiennd.',\n", - " 'taff (now as he has been past the buckthurnstock from peadhar piper of colliguchuna, whiles they all are bealting pots to dubrin din for old daddam dombstom to tomb and wamb humbs lumbs agamb, glimpse agam, glance agen, rise up road and hive up hill, and find your pollyvoulley foncey pitchin ingles in the parler). since you are on for versingrhetorish say your piece! how buccleuch shocked the rosing girnirilles. a ballet of gasty power. a hov and az ov and off like a gow! and don’t live out the sad of tearfs, piddyawhick! not offgott affsang is you, buthbach? ath yet-heredayth noth endeth, hay? vaersegood! buckle to! sayyessik, ballygarry. the fourscore soculums are watchyoumaycodding to cooll the skoopgoods blooff. harkabuddy, feign! thingman placeyear howed wholst somwom shimwhir tinkledinkledelled. shinfine deed in the myrtle of the bog tway fainmain stod op to slog, free bond men lay lurkin on. tuan about whattinghim! fore sneezturmdrappen! ’twill be a rpnice pschange, arrah, sir? can you come it, budd?',\n", - " 'butt (who in the cushlows of his goodsforseeking hoarth, ever fondlinger of his pimple spurk, is a niallist of the ninth homestages, the babybell in his baggutstract upper going off allatwanst, begad, lest he should challenge himself, beygoad, till angush). horrasure, toff! as said as would. it was colporal phailinx first. hittit was of another time, a white horsday where the midril met the bulg, sbogom, roughnow along about the first equinarx in the cholon-der, on the plain of khorason as thou goest from the mount of bekel, steep nemorn, elve hundred and therety and to years how the krow flees end in deed, after a power of skimiskes, blodidens and godinats of them, when we sight the beasts, (heg-heg whatlk of wraimy wetter!), moist moonful date man aver held dimsdzey death with, and higheye was in the reilly oirish krzerszonese milesia asundurst sirdarthar woolwichleagues, good tomkeys years somewhile in crimealian wall samewhere in ayerland, during me weeping stillstumms over the freshprosts of eastchept and the dangling garters of marrowbone and daring my wapping stiltstunts on bostion moss, old stile and new style and heave a lep onwards. and winn again, blaguadargoos, or lues the day, plays goat, the banshee pealer, if moskats knows whoss whizz, the great day and the druidful day come san patrisky and the grand day, the excellent fine splendorous long agreeable toastworthy cylindrical day, go sixt of the ninth, the heptahundread annam dammias that hajizfijjiz ells me is and will and was be till the timelag is in it that’s told in the bok of alam to columnkill all the prefacies of erin gone brugk. but icantenue. and incommixtion. we was lowsome like till we’d took out after the dead beats. so i begin to study and i soon show them day’s reasons how to give the cold shake to they blighty perishers and lay one over the beats. all feller he look he call all feller come longa villa finish. toumbalo, how was i acclapadad! from them banjopeddlars on the raid. gidding up me anti vanillas and getting off the stissas me aunties. boxerising and coxerusing. and swiping a johnny dann sweept for to exercitise myself neverwithstanding the topkats and his roaming cartridges, orussheying and patronning, out all over crummwiliam wall. be the why it was me who haw haw.',\n", - " 'taff (all for letting his tinder and lighting be put to beheiss in the feuer and, while durblinly obasiant to the felicias of the skivis, still smolking his fulvurite turfkish in the rooking pressance of laddios). yaa hoo how how, col? whom battles joined no bottles sever! worn’t you aid a comp?',\n", - " 'butt (in his difficoltous tresdobremient, he feels a bitvalike a baddlefall of staot but falls a batforlake a borrlefull of bare). and me awlphul omegrims! between me rassociations in the postlea-deny past and me disconnections with aplompervious futules i’ve a boodle full of maimeries in me buzzim and medears runs sloze, bleime, as i now with platoonic leave recoil in (how the thickens they come back to one to rust!) me misenary post for all them old boyars that’s now boomaringing in waulholler, me alma marthyrs. i dring to them, bycorn spirits fuselaiding, and you cullies adjutant, even where its contentsed wody, with absents wehrmuth. junglemen in agleement, i give thee our greatly swooren, theoccupant that rueandredful, the thrown-fullvner and all our royal devouts with the arrest of the whole inhibitance of neuilands! one brief mouth. and a velligoolap-now! meould attashees the currgans, (if they could get a kick at this time for all that’s hapenced to us!) cedric said gormleyson and danno o’dunnochoo and conno o’cannochar it is this were their names for we were all under that manner barracksers on kong gores wood together, thurkmen three, with those khakireinettes, our miladies in their toileries, the twum plum-yumnietcies, vjeras vjenaskayas, of old djadja uncken who was a great mark for jinking and junking, up the palposes of womth and wamth, we war, and the charme of their lyse brocade. for lispias harth a burm in eye but whem it bames fire norone screeneth. hulp, hulp, huzzars! raise ras tryracy! freetime’s free! up lancesters! anathem!',\n", - " 'taff (who still senses that heavinscent houroines that enter-trained him who they were sinuorivals from the sunny espionia but plied wopsy with his wallets in thatthack of the bustle bakerloo, (ii.32), passing the uninational truthbosh in smoothing irony over the multinotcheralled infructuosities of his grinner set). the rib, the rib, the quean of oldbyrdes, sinya sonyavitches! your rhoda cockardes that are raday to embrace our ruddy inflamtry world! in their ohosililesvienne biribarbebeway. till they’ve kinks in their tringers and boils on their taws. whor dor the pene lie, mer pencho? ist dramhead countmortial or gonorrhal stab? mind your pughs and keaoghs, if you piggots, marsh! do the nut, dingbut! be a dag! for zahur and zimmerminnes! sing in the chorias to the ethur:',\n", - " 'butt (with a gisture expansive of mr lhugewhite cadderpollard with sunflawered beautonhole pulled up point blanck by mailbag mundaynism at oldbally court though the hissindensity buck far of his melovelance tells how when he was fast marking his first lord for cremation the whyfe of his bothem was the very lad’s thing to elter his mehind). prostatates, pujealousties! dovolnoisers, prayshyous! defense in every circumstancias of deboutcheries no the chaste daffs i pack pickets, pioghs and kughs to be palsey-putred! be at the peme, prease, of not forgetting or mere betoken yourself to hother prace! correct me, pleatze commando, for cossakes but i abjure of it. no more basquibezigues for this pole aprican! with askormiles’ eskermillas. i had my billyfell of duckish delights the whole pukny time on rawmeots and juliannes-with their lambstoels in my kiddeneys and my ramsbutter in their sassenacher ribs, knee her, do her and trey her, when th’osirian cumb dumb like the whalf on the fiord and we preying players and pinching peacesmokes, troupkers tomiatskyns all, for father petrie spence of parishmoslattary to go and leave us and the crimsend daun to shellalite on the darkumen (scene as signed, slobabogue), feeding and sleeping on the huguenottes (the snuggest spalniel’s where the lieon’s tame!) and raiding revolations over the allbegeneses (sand us and saint us and sound as agun!). yet still in all, spit for spat, like we chantied on sunda schoon, every warson wearrier kaddies a komnate in his schnapsack and unlist i am getting foegutfulls of the rugi-ments of savaliged wildfire i was gamefellow willmate and send us victorias with nowells and brownings, dumm, sneak and curry, and all the fun i had in that fanagan’s week. a strange man wearing abarrel. and here’s a gift of meggs and teggs. and as i live by chipping nortons. and ’tis iron fits the farmer, ay. arcdesedo! renborumba! then were the hellscyown days for our fellows, the loyal leibsters, and we was the redugout raw-recruitioners, praddies three and prettish too, a wheeze we has in our waynward islands, wee engrish, one long blue streak, jisty and pithy af durck rosolun, with hand to hand as homard kayenne was always jiggilyjugging about in his wendowed courage when our woos with the wenches went wined for a song, tsingirillies’ zyngarettes, while woodbine willie, so popiular with the poppyrossies, our chorney choplain, blued the air. sczlanthas! banzaine! bissbasses! s. pivorandbowl. and we all tuned in to hear the topmast noviality. up the revels drown the rinks and almistips allround! paddy bonhamme he vives! en-core! and tig for tag togatogtug. my droomodose days y loved you abover all the strest. blowhole brasshat and boy with his boots off and the butch of our bunch and all. it was buckoo bonzer, beleeme. i was a bare prive without my doglegs but i did not give to one humpenny dump, wingh or wangh, touching those thusengaged slavey generales of tanah kornalls, the meelisha’s deelishas, pronouncing their very flank movemens in sunpictorsbosk. baghus the whatwar! i could always take good cover of myself and, eyedulls or earwakers, preyers for rain or cominations, i did not care three tanker’s hoots, (‘sham! hem! or chaffit!) for any feelings from my lifeprivates on their reptro-grad leanins because i have their honours booth my respectables sþurs assistershood off lyndhurst terrace, the puttih misses celana dalems, and she in vinting her angurr can belle the troth on her alliance and i know his heriness, my respeaktoble me-dams culonelle on mellay street, lightnints gundhur sawabs, and they would never as the aimees of servation let me down. not on your bludger life, touters! no peeping, pimpadoors! and, by jova i never went wrong nor let him doom till, risky wark rasky wolk, at the head of the wake, up come stumblebum (ye olde cottemptable!), his urssian gemenal, in his scutt’s rudes unreformed and he went before him in that nemcon enchelonce with the same old domstoole story and his upleave the fallener as is greatly to be petted (whitesides do his beard!) and i seen his brichashert offensive and his boortholomas vadnhammaggs vise a vise them scharlot runners and how they gave love to him and how he took the ward from us (odious the fly fly flurtation of his him and hers! just mairmaid maddeling it was it he was!) and, my oreland for a rolvever, sord, by the splunthers of colt and bung goes the enemay the percy rally got me, messg‚r, (as true as theirs an almagnian gothabobus!) to blow the grand off his aceupper. thistake it’s meest! and after meath the dulwich. we insurrectioned and, be the procuratress of the hory synnotts, before he could tell pullyirragun to parrylewis, i shuttm, missus, like a wide sleever! hump to dump! tumbleheaver!',\n", - " 'taff (camelsensing that sonce they have given bron a nuhlan the volkar boastsung is heading to sea vermelhion but too wellbred not the ignore the umzemlianess of this rifal’s preceedings, in an effort towards autosotorisation, effaces himself in favour of the idiology alwise behounding his lumpy hump off homosodalism which means that if he has lain amain to lolly his liking-cabronne! — he may pops lilly a young one to his herth — combrune —) oholy rasher, i’m be-liever! and oho bullyclaver of ye, bragadore-gunneral! the grand ohold spider! it is a name to call to him umsturdum vonn! ah, you were shutter reshottus and sieger besieged. aha race of fiercemarchands counterination oho of shorpshoopers.',\n", - " 'butt (miraculising into the dann deafir warcry, his bigotes bristling, as, jittinju triggity shittery pet, he shouts his thump and feeh fauh foul finngures up the heighohs of their ahs!) bluddy-muddymuzzle! the buckbeshottered! he’ll umbozzle no more graves nor home no haunder, lou garou, for gayl geselles in dead men’s hills! kaptan (backsights to his bared!), his cum-bulent embulence, the frustate fourstar russkakruscam, dom allah o’khorwan, connundurumchuff.',\n", - " 'taff (who, asbestas can, wiz the healps of gosh and his bluzzid maikar, has been sulphuring to himsalves all the pungataries of sin praktice in failing to furrow theogonies of the dommed). trisseme, the mangoat! and the name of the most marsiful, the aweghost, the gragious one! in sobber sooth and in souber civiles? and to the dirtiment of the curtailment of his all of man? notshoh?',\n", - " 'butt (maomant scoffin, but apoxyomenously deturbaned but thems bleachin banes will be after making a bashman’s haloday out of the euphorious hagiohygiecynicism of his die and be diademmed). yastsar! in sabre tooth and sobre saviles! senonnevero! that he leaves nyet is my grafe. he deared me to it and he dared me do it, and bedattle i didaredonit as cocksnark of killtork can tell and ussur ursussen of the viktaurious onrush with all the rattles in his arctic! as bold and as madhouse a bull in a meadows. knout knittrick kinkypeard! olefoh, the sourd of foemoe times! unknun! for when meseemim, and tolfoklokken rolland allover ourloud’s lande, beheaving up that sob of tunf for to claimhis, for to wollpimsolff, puddywhuck. ay, and untuoning his culothone in an exitous erseroyal deo jupto.at that instullt to igorladns! prronto! i gave one dobblenotch and i ups with my crozzier. mirrdo! with my how on armer and hits leg an arrow cockshock rockrogn. sparro!',\n", - " 'taff (skimperskamper, his wools gatherings all over cromlin what with the birstol boys artheynes and is it her tour and the crackery of the fullfour fivefirearms and the crockery of their dam- dam domdom chumbers). wharall thubulbs uptheaires! shatta-movick?',\n", - " 'butt (pulling alast stark daniel with alest doog at doorak while too greater than pardon painfully the issue of his mouth diminuen-doing, vility of vilities, he becomes, allasvitally, faint). shurenoff! like faun macghoul!',\n", - " 'butt and taff (desprot slave wager and foeman feodal unsheckled, now one and the same person, their fight upheld to right for a wee while being baffled and tottered, umbraged by the shadow of old erssia’s magisquammythical mulattomilitiaman, the living by owning over the surfers of the glebe whose sway craven minnions had caused to revile, as, too foul for hell, under boiling mauses’ burning brand, he falls by goll’s gillie, but keenheartened by the circuminsistence of the parkes o’rarelys in a hurdly gurdly cicilian concertone of their fonngeena barney brawl, shaken everybothy’s hands, while s. e. morehampton makes leave to e. n. sheil-martin after meetinghouse lanigan has embaraced vergemout hall, and, without falter or mormor or blathrehoot of sophsterliness, pugnate thc pledge of fiannaship, dook to dook, with a commonturn oudchd of fest man and best man astoutsalliesemoutioun palms it off like commodity tokens against a cococancancacacanotioun). when old the wormd was a gadden and anthea first unfoiled her limbs wanderloot was the way the wood wagged where opter and apter were samuraised twimbs. they had their mutthering ivies and their murdhering idies and their mouldhering iries in that muskat grove but there’ll be bright plinnyflowers in calo-mella’s cool bowers when the magpyre’s babble towers scorching and screeching from the ravenindove. if thees lobed the sex of his head and mees ates the seep of his traublers he’s dancing figgies to the spittle side and shoving outs the soord. and he’ll be buying buys and go gulling gells with his flossim and jessim of carm, silk and honey while myandthys playing lancifer lucifug and what’s duff as a bettle for usses makes coy cosyn corollanes’ moues weeter to wee. so till butagain budly shoots thon rising germinal let bodley chow the fatt of his anger and badley bide the toil of his tubb.',\n", - " 'shutmup. and bud did down well right. and if he sung dumb in his glass darkly speech lit face to face on allaround.',\n", - " 'vociferagitant. viceversounding. namely, abdul abulbul amir or ivan slavansky slavar. in alldconfusalem. as to whom the major guiltfeather pertained it was hercushiccups’ care to educe. beauty’s bath she’s bound to bind beholders and pride, his purge, has place appoint in penance and the law’s own libel lifts and lames the low with the lofty. be of the housed! while the hersy hunt they harrow the hill for to rout them rollicking rogues from, rule those racketeer romps from, rein their rockery rides from. rambling.',\n", - " 'nightclothesed, arooned, the conquerods sway. after their battle thy fair bosom.',\n", - " '— that is too tootrue enough in solidan’s island as in mol-tern giaourmany and from the amelakins off to date back to land of engined egypsians, assented from his opening before his inlookers of where an oxmanstongue stalled stabled the well-nourished one, lord of the seven days, overlord of sats and suns, the sat of all the suns which are in the ring of his system of the sats of his sun, god of the scuffeldfallen skillfilledfelon, who (he contaimns) hangsters, who (he constrains) hersirrs, a gain chang-ful, a mintage vaster, heavy on shirts, lucky with shifts, the top — side humpup stummock atween his showdows fellah, misto tee wiley spillitshops, who keepeth watch in khummer–phett, whose spouse is an–lyph, the dog’s bladder, warmer of his couch in fore. we all, for whole men is lepers, have been nobbut won-terers in that chill childerness which is our true name after the allfaulters (mug’s luck to em!) and, bespeaking of love and lie detectors in venuvarities, whateither the drugs truth of it, was there an iota of from the faust to the lost. and that is at most re-doubtedly an overthrew of each and ilkermann of us, i persuade myself, before gow, gentlemen, so true as this are my kopfinpot astrode on these is my boardsoldereds.',\n", - " 'it sollecited, grobbling hummley, his roundhouse of seven orofaces, of all, guiltshouters or crimemummers, to be sayd by, codnops, advices for, free of gracies, scamps encloded, com-petitioning them, if they had steadied jura or when they had raced messafissi, husband of your wifebetter or bestman botcha-lover of you yourself, how comes ever a body in our taylorised world to selve out thishis, whither it gives a primeum nobilees for our notomise or naught, the farst wriggle from the ubivence, whereom is man, that old offender, nother man, wheile he is asame. and fullexampling. the pints in question. with some by-spills. and sicsecs to provim hurtig. soup’s on!',\n", - " '— a time. and a find time. whenin aye was a kiddling. and the tarikies held sowansopper. let there beam a frishfrey. and they sodhe gudhe rudhe brodhe wedhe swedhe medhe in the kanddledrum. i have just (let us suppraise) been reading in a (suppressed) book — it is notwithstempting by meassures long and limited — the latterpress is eminently legligible and the paper, so he eagerly seized upon, has scarsely been buttered in works of previous publicity wholebeit in keener notcase would i turf aside for pastureuration. packen paper paineth whomto is sacred scriptured sign. who straps it scraps it that might, if ashed, have healped. enough, however, have i read of it, like my good bedst friend, to augur in the hurry of the times that it will cocommend the widest circulation and a reputation coextensive with its merits when inthrusted into safe and pious hands upon so edifying a mission as it, i can see, as is his. it his ambullished with expurga-tive plates, replete in information and accampaigning the action passiom, slopbang, whizzcrash, boomarattling from burst to past, as i have just been seeing, with my warmest venerections, of a timmersome townside upthecountrylifer, (guard place the town!) allthose everwhalmed upon that preposterous blank seat, before the wordcraft of this early woodcutter, a master of vignett- iennes and our findest grobsmid among all their orefices, (and, shukar in chowdar, so splunderdly english!) mr aubeyron birdslay. chubgoodchob, arsoncheep and wellwillworth a triat! bismillafoulties. but the hasard you asks is justly ever behind his meddle throw! those sad pour sad forengistanters, dastychappy dustyrust! chaichairs. it is that something, awe, aurorbean in that fellow, hamid and damid, (did he have but hugh de brassey’s beardslie his wear mine of ancient guised) which comequeers this anywhat perssian which we, owe, realisinus with purups a dard of pene. there is among others pleasons whom i love and which are favourests to mind, one which i have pushed my finker in for the movement and, but for my sealring is none to hand i swear, she is highly catatheristic and there is another which i have fombly fongered freequuntly and, when my signet is on sign again i swear, she is deeply sangnificant. culpo de dido! ars we say in the classies. kunstful, we others said. what ravening shadow! what dovely line! not the king of this age could richlier eyefeast in oreillental longuardness with alternate nightjoys of a thousand kinds but one kind. a shahrryar cobbler on me when i am lying! and whilst (when i doot my sliding panel and i hear cawcaw) i have been idylly turmbing over the loose looves leaflefts jaggled casuallty on the lamatory, as is my this is, as i must commit my lips to make misface for misfortune, often, so far as i can chance to recollect from the some farnights ago, (so dimsweet is that selvischdischdienence of to not to be able to be obliged to have to hold further anything than a stone his throw’s fruit’s fall!) when i, if you wil excuse for me this informal leading down of illexpressibles, enlivened toward the author of nature by the natural sins liggen gobelimned theirs before me, (how differen-ded with the manmade eonochs cunstuntonopolies!), weather — ed they be of a general golf stature, assasserted, or blossomly emblushing thems elves underneed of some howthern folleys, am entrenched up contemplating of myself, wiz my naked i, for relieving purposes in our trurally virvir vergitabale (garden) i sometimes, maybe, what has justly said of old flannagan, a wake from this or huntsfurwards, with some shock (shell i so render it?) have (when i ope my shylight window and i see coocoo) a notion quiet involuptary of that i am cadging hapsnots as at murmurrandoms of distend renations from ficsimilar phases or dugouts in the behindscenes of our earthwork (what rovining shudder! what deadly loom!) as this is, at no spatial time pro-cessly which regards to concrude chronology about which in fact, at spite of i having belittled myself to my gay giftname of insectarian, happy burgages abeyance would make homesweets-town hopeygoalucrey, my mottu propprior, as i claim, cad’s truck, i coined, i am highly pelaged and deeply gluttened to mind hindmost hearts to see by their loudest reports from my threespawn bottery parts (shsh!) that, colombophile and corvino-phobe alike, when i have remassed me, my travellingself, as from magellanic clouds, after my contractual expenditures, through the perofficies of merelimb, i, my good grief, i am, i am big altoogooder.',\n", - " 'he beached the bark of his tale; and set to husband and vine: and the harpermaster told all the living conservancy, know meschiameschianah, how that win a gain was in again. flying the perseoroyal. withal aboarder, padar and madar, hal qnd sal, the sens of ere with the duchtars of iran. amick amack amock in a mucktub. qith the tou loulous and the gryffygryffygryffs, at fenegans wick, the wildemanns. washed up whight and de-liveried rhight. loud lauds to his luckhump and bejetties on jo — nahs! and they winxed and wanxed like baillybeacons. till we woksed up oldermen.',\n", - " 'from whose plultibust preaggravated, by baskatchairch theo-logies (there werenighn on thaurity herouns in that alraschil arthouducks draken), they were whoalike placed to say, in the matters off ducomans nonbar one, with bears’ respects to him and bulls’ acknowledgments (come on now, girls! lead off, o cara, whichever won of you wins! the two gemuas and jane agrah and judy tombuys!) disassembling and taking him apart, the slammocks, with discrimination for his maypole and a rub in passing over his hump, drogueries inaddendance, frons, fesces and frithstool: 1) he hade to die it, the beetle, 2) he didhithim self, hod’s fush, 3) all ever the pelican huntered with truly fond bull-pen backthought since his toork human life where his personal low outhired his taratoryism, the orenore under the selfhide of his bessermettle, was forsake in his chiltern and lumbojumbo, 4) he was like fintan fore flood and after sometimes too damned merely often on the saved side, saw he was, 5) regarding to prussyattes or quazzyverzing he wassand no better than he would have been before he could have been better than what he warrant after, 6) blood, musk or haschish, as coked, diamoned or pence-loid, and bleaching him naclenude from all cohlorine matter, down to a boneash bittstoff, he’s, tink fors tank, the same old dustamount on the same old tincoverdull baubleclass, totstitty-winktosser and bogusbagwindburster, whether fitting tyres onto danelope boys or fluttering flaus for laurettas, whatever the bucket brigade and the plug party says, touchant arser of the rum tipple and his camelottery and lyonesslooting but with a layaman’s brutstrenth, by jacohob and esahur and the all saults or all sallies, what we warn to hear, jeff, is the woods of chirpsies cries to singaloo sweecheeriode and sock him up, the oldcant rogue.',\n", - " 'group a.',\n", - " 'you have jest (a ham) beamed listening through (a ham pig) his haulted excerpt from john whiston’s fiveaxled production, the coach with the six insides, from the tales of yore of the times gone by before there was a hofdking or a hoovthing or a pinginapoke in oreland, all sould. goes tory by eeric whigs is to become tintinued in fearson’s nightly in the lets all wake brickfaced in lucan. lhirondella, jaunty lhirondella! with tirra lirra rondinelles, atantivy we go!',\n", - " 'attention! stand at!! ease!!!',\n", - " 'we are now diffusing among our lovers of this sequence (to you! to you!) the dewfolded song of the naughtingels (alys! alysaloe!) from their sheltered positions, in rosescenery hay-dyng, on the heather side of waldalure, mount saint john’s, jinnyland, whither our allies winged by duskfoil from moore-parque, swift sanctuary seeking, after sunsink gang (oiboe! hitherzither! almost dotty! i must dash!) to pour their peace in partial (floflo floreflorence), sweetishsad lightandgayle, twittwin twosingwoolow. let everie sound of a pitch keep still in reson-ance, jemcrow, jackdaw, prime and secund with their terce that whoe betwides them, now full theorbe, now dulcifair, and when we press of pedal (sof!) pick out and vowelise your name. a mum. you pere golazy, you mere bare and you bill heeny, and you smirky dainty and, more beethoken, you wheckfoolthe-nairyans with all your badchthumpered peanas! we are gluck — glucky in our being so far fortunate that, bark and bay duol with man goodfox inchimings having ceased to the moment, so allow the clinkars of our nocturnefield, night’s sweetmoztheart, their carmen sylvae, my quest, my queen. lou must wail to cool me airly! coil me curly, warbler dear! may song it flourish (in the underwood), in chorush, long make it flourish (in the nut, in the nutsky) till thorush! secret hookup.',\n", - " '— roguenaar loudbrags, that soddy old samph! how high is vuile, var?',\n", - " 'to which yes he did, capt, that was the answer.',\n", - " '— and his shartshort trooping its colours! we knows his ventruquulence.',\n", - " 'which that that rang ripprippripplying.',\n", - " \"— bulbul, bulbulone! i will shally. thou shalt willy. you wouldn't should as youd remesmer. i hypnot. ’tis golden sickle’s hour. holy moon priestess, we’d love our grappes of mistellose! moths the matter? pschtt! tabarins comes. to fell our fairest. o gui, o gui! salam, salms, salaum! carolus! o indeed and we ware! and hoody crow was ere. i soared from the peach and missmolly showed her pear too, onto three and away. whet the bee as to deflowret greendy grassies yellowhorse. kematitis, cele our er-dours! did you aye, did you eye, did you everysee suchaway, suchawhy, eeriewhigg airywhugger? even to the extremity of the world? dingoldell! the enormanous his, our littlest little! wee wee, that long alancey one! let sit on this anthill for our frilldress talk after this day of making blithe inveiled the heart before our groatsupper serves to us panchomaster and let har- leqwind play peeptomine up all our colombinations! wins won is nought, twigs too is nil, tricks trees makes nix, fairs fears stoops at nothing. and till arthur comes againus and sen pea-trick’s he’s reformed we’ll pose him together a piece, a pace. shares in guineases! there’s lovely the sight! surey me, man weepful! big seat, you did hear? and teach him twisters in tongue irish. pat lad may goh too. quicken, aspen;ash and yew; willow, broom with oak for you. and move your tellabout. not nice is that, limpet lady! spose we try it promissly. love all. naytellmeknot tennis! taunt me treattening! but do now say to mr eustache! ingean mingen has to hear. whose joint is out of jealousy now? why, heavilybody’s evillyboldy’s. hopping gra-cius, onthy ovful! o belessk mie, what a nerve! how a mans in his armor we nurses know. wingwong welly, pitty pretty nelly! some poddy pitted in, will anny petty pullet out? call kitty kelly! kissykitty killykelly! what a nossowl buzzard! but what a neats ung gels!\",\n", - " 'here all the leaves alift aloft, full o’liefing, fell alaughing over ombrellone and his parasollieras with their black thronguards from the county shillelagh. ignorant invincibles, innocents immutant! onzel grootvatter lodewijk is onangonamed before the bridge of primerose and his twy isas boldmans is met the bluey-bells near dandeliond. we think its a gorsedd shame, these go — doms. a lark of limonladies! a lurk of orangetawneymen! you’re backleg wounted, budkley mister, bester of the boyne!',\n", - " 'and they leaved the most leavely of leaftimes and the most folliagenous till there came the marrer of mirth and the jangthe-rapper of all jocolarinas and they were as were they never ere. yet had they laughtered, one on other, undo the end and enjoyed their laughings merry was the times when so grant it high hila-rion us may too!',\n", - " 'cease, prayce, storywalkering around with gestare romano-verum he swinking about is they think and plan unrawil what.',\n", - " 'back to droughty! the water of the face has flowed.',\n", - " 'the all of them, the sowriegueuxers, blottyeyed boys, in that pig’s village smoke, a sixdigitarian legion on druid circle, the clandibblon clam cartel, then pulled out and came off and rally agreed them, roasted malts with toasted burleys, in condomnation of his totomptation and for the duration till his repepulation, upon old nollcromforemost ironsides, as camnabel chieftain, since, as sammon trowed to explain to summon, seeing that, as he had contracted out of islands empire, he might as coolly have rolled to school call, tarponturboy, a grampurpoise, the manyfathom brinegroom with the fortyinch bride, out of the cuptin klanclord kettle auction like the soldr of a britsh he was bound to be and become till the sea got him whilask, from maker to misses and what he gave was as a pattern, he, that hun of a horde, is a finn as she, his tent wife, is a lap, at home on a steed, abroad by the fire (to say nothing of him having done whatyouknow howyou-saw whenyouheard whereyouwot, the kenspeckled souckar, generose as cocke, greediguss with garzelle, uprighter of age and most umbrasive of yews all, under heaviest corpsus exemption) and whoasever spit her in howsoever’s fondling saving her keepers that mould the bould she sould to hould the wine that wakes the barley, the peg in his pantry to hold the heavyache off his heart. the droll delight of deemsterhood, a win from the wood to bond. like the bright lamps, thamamahalla, yearin out yearin. auspicably suspectable but in expectancy of respectable-ness. from dirty flock bedding, drip dropping through the ceil — ing, with two sisters of charities on the front steps and three eva — cuan cleansers at the back gaze, single box and pair of chairs (suspectable), occasionally and alternatively used by husband when having writing to do in connection with equitable druids and friendly or other societies through periods of dire want with comparative plenty (thunderburst, ravishment, dissolution and providentiality) to a sofa allbeit of hoarsehaar with amodicum cloth, hired payono, still playing off, used by the youngsters for czurnying out oldstrums, three bedrooms upastairs, of which one with fireplace (aspectable), with greenhouse in prospect (par-ticularly perspectable).',\n", - " 'and you, when you kept at dulby, were you always (for that time only) what we knew how when we (from that point solely) were you know where? there you are! and why? why, hitch a cock eye, he was snapped on the sly upsadaisying coras pearls out of the pie when all the perts in princer street set up their tinker’s humn, (the rann, the rann, that keen of old bards), with them newnesboys pearcin screaming off their armsworths. the boss made dovesandraves out of his bucknesst while herself wears the bowler’s hat in her bath. deductive almayne rogers disguides his voice, shetters behind hoax chestnote from exexive. heat wives rasing. they jest keeps rosing. he jumps leaps rizing. howlong!',\n", - " 'you known that tom? i certainly know. is their bann boths-tiesed? saddenly now. has they bane reneemed? soothinly low. does they ought to buy the papelboy when he footles up their suit? he’s their mark to foil the flouter and they certainty owe.',\n", - " 'he sprit in his phiz (baccon!). he salt to their bis (pudden!). he toockled her palam (so calam is solom!). and he suked their friends’ leave (bonnick lass, fair weal!)',\n", - " '— guilty but fellows culpows! it was felt by me sindeade, that submerged doughdoughty doubleface told waterside labourers. but since we for athome’s health have chanced all that, the wild whips, the wind ships, the wonderlost for world hips, unto their foursquare trust prayed in aid its plumptylump piteousness which, when it turtled around seeking a thud of surf, spake to approach from inherdoff trisspass through minxmingled hair. though i may have hawked it, said, and selled my how hot peas after theactrisscalls from my imprecurious position and though achance i could have emptied a pan of backslop down drain by whiles of dodging a rere from the middenprivet appurtenant thereof, salving the presents of the board of wumps and pumps, i am ever incalpable, where release of prisonals properly is concerned, of unlifting upfallen girls wherein dangered from them in thereopen out of unadulteratous bowery, with those hintering influences from an angelsexonism. it was merely my barely till their oh offs. missaunderstaid. meggy guggy’s giggag. the code’s proof! the rebald danger with they who would bare white-ness against me i dismissem from the mind of good. he can tell such as story to the twelfth maligns that my first was a nurss-maid and her fellower’s a willbe perambulatrix. there are twingty to twangty too thews and leathermail coatschemes penparing to hostpost for it valinnteerily with my valued fofavour to the post puzzles deparkment with larch parchels’ of presents for future branch offercings. the green approve the raid! shaum baum’s bode he is amustering in the groves while his shool comes merging along! want i put myself in their kirtlies i were ayearn to leap with them and show me too bisextine. dear and lest i for-get mergers and bow to you low, marchers! attemption! what a mazing month of budsome misses they are making, so wingty-wish to flit beflore their kin! attonsure! ears to hears! the skall of a gall (for every dime he yawpens that momouth you could park your ford in it) who has papertreated him into captivities with his inside man by a hocksheat of starvision for an avrageto-peace of parchment, cooking up his lenses to be my apoclogypst, the recreuter of conscraptions, let him be asservent to kinahaun! for (peace peace perfectpeace!) i have abwaited me in a water of elin and i have placed my reeds intectis before the registower of the perception of tribute in the hall of the city of analbe. how concerns any merryaunt and hworsoever gravesobbers it is perensempry sex of fun to help a dazzle off the othour. what for mucias and gracias may the duvlin rape the handsomst! and the whole mad knightmayers’ nest! tunpother, prison and plotch! if y shoulden somewhat, well, i am able to owe it, hearth and chem ney easy. they seeker for vannflaum all worldins merkins. i’ll eager make lyst turpidump undher arkens. basast! and if my liti-gimate was well to wrenn tigtag cackling about it, like the sally berd she is, to abery ham in the cutey strict, (i shall call upon my first among my lost of lyrars beyond a jingoobangoist, to overcast her) dismissing mundamanu all the riflings of her vic-tuum gleaner (my old chuck! she drakes me druck! turning out, gay at ninety!) and well shoving offa boastonmess like lots wives does over her handpicked hunsbend, as she would be calling, well, for further oil mircles upon all herwayferer gods and reanouncing my deviltries as was i a locally person of caves until i got my purchase on her firmforhold i am, i like to think, by their sacre-ligion of daimond cap daimond, confessedly in my baron gentil — homme to the manhor bourne till ladiest day as panthoposopher, to have splet for groont a peer of bellows like bacchulus shakes a rousing guttural at any old cerpaintime by peaching (allsole we are not amusical) the warry warst against myself in the defile as a lieberretter sebaiscopal of these mispeschyites of the first virgi-nial water who, without an auction of biasement from my part, with gladyst tone ahquickyessed in it, overhowe and under-where, the totty lolly poppy flossy conny dollymaukins though i heave a coald on my bauck and am could up to my eres hoven sametimes i used alltides to be aswarmer for the meekst and the graced. you are not going to not. you might be threeabreasted wholenosing at a whallhoarding from our don amir anent villa-yets prostatution precisingly kuschkars tarafs and it could be double densed uncounthest hour of allbleakest age with a bad of wind and a barran of rain, nompos mentis like novus elector, what with his marx and their groups, yet did a doubt, should a dare, were to you, you would do and dhamnk me, shenker, dhumnk you. skunk. and fare with me to share with me. hinther and thonther, hant by hont. by where dauvening shedders down whose rovely lanes. as yose were and as yese is. sure and you would, mr mac gurk! be sure and you would, mr o’duane! to be sure and you would so, mr macelligut! wod you nods? mom mom. no mum has the rod to pud a stub to the lurch of amotion. my little love apprencisses, my dears, the estelles, van nessies von nixies voon der pool, which i had a reyal devouts for yet was it marly lowease or just a feel with these which olderman k.k. alwayswelly he is showing ot the fullnights for my palmspread was gav to a parsleysprig, the curliest weedeen old ocean coils around, so spruce a spice for salthorse, sonnies, and as tear to the thrusty as tay-lor’s spring, when aftabournes, when she was look like a little cheayat chilled (oh sard! ah mah!) by my tide impracing, as beacher seath, and all the colories fair fled from my folced cheeks! popottes, where you canceal me you mayst forced guage my bribes. wickedgapers, i appeal against the light! a nexistence of vividence! panto, boys, is on a looser inloss;ballet, girls, suppline thrown tights. i have wanted to thank you such a long time so much now. thank you. sir, kindest of bottleholders and very dear friend, among our hearts of steel, froutiknow, it will befor you, me dare beautiful young soldier, winninger nor anyour of rudi-mental moskats, before you go to mats, you who have watched your share with your sockboule sodalists on your buntad nogs at our love tennis squats regatts, suckpump, when on with the balls did disserve the fain, my goldrush gainst her silvernetss, to say, biguidd, for the love of goddess and perthanow as you reveres your one mothers, mitsch for matsch, and while i reveal thus my deepseep daughter which was bourne up pridely out of meds-dreams unclouthed when i was pillowing in my brime (of satur — nay eve, how now, woren’t we’t?), to see, i say, whoahoa, in stay of execution in re milcho melekmans, increaminated, what you feel, oddrabbit, upon every strong ground you have ever taken up, by bitterstiff work or battonstaff play, with assault of turk against a barrakraval of grakeshoots, e’en tho’ jambuwel’s defe-calties is terry shimmyrag’s upperturnity, if that is grace for tbe grass what is balm for the bramblers, as it is as it is, that i am the catasthmatic old ruffin sippahsedly improctor to be seducint tro-vatellas, the dire daffy damedeaconesses, like (why sighs the sootheesinger) the lilliths oft i feldt, and, when booboob brutals and cautiouses only aims at the oggog hogs in the humand, then, (houtes, blymey and torrenation, upkurts and scotchem!) i’ll tall tale tell croon paysecurers, sowill nuggets and nippers, that thash on me stumpen blows the gaff offmombition and thit thides or marse makes a good dayle to be shattat. fall stuff.',\n", - " 'his rote in ere, afstef, was.',\n", - " 'and dong wonged magongty till the bombtomb of the warr, thrusshed in his whole soort of cloose.',\n", - " 'whisht who wooed in weald, bays of bawshaw binding. the desire of miriam is the despair of marian as joh joseph’s beauty is jacq jacob’s grief. brow, tell nun; eye, feign sad; mouth, sing mim. look at lokman! whatbetween the cupgirls and the platterboys. and he grew back into his grossery baseness: and for all his grand remonstrance: and there you are.',\n", - " 'here endeth chinchinatibus with have speak finish. with a haygue for a halt on a pouncefoot panse. pink, pleas pink, two pleas pink, how to pleas pink.',\n", - " 'punk.',\n", - " 'mask one. mask two. mask three. mask four.',\n", - " 'up.',\n", - " '— look about you, tutty comyn!',\n", - " '— remember and recall, kullykeg!',\n", - " '— when visiting dan leary try the corner house for thee.',\n", - " '— i’ll gie ye credit for simmence more if ye’ll be lymphing. our four avunculusts.',\n", - " 'and, since threestory sorratelling was much too many, they maddened and they morgued and they lungd and they jowld. synopticked on the word. till the juke done it.',\n", - " 'down.',\n", - " 'like jukoleon, the seagoer, when he bore down in his perry boat he had raised a slide and shipped his orders and seized his pullets and primed their plumages, the fionnling and dubhlet, the dun and the fire, and, sending them one by other to fare fore fom, he had behold the residuance of a delugion: the foggy doze still going strong, the old thalassocrats of invinsible empores, maskers of the waterworld, facing one way to another way and this way on that way, from severalled their fourdimmansions. where the lighning leaps from the numbulous; where coold by cawld breide lieth langwid; the bounds whereinbourne our solied bodies all attomed attaim arrest: appoint, that’s all. but see what follows. wringlings upon wronglings among incomputables about an uncomeoutable (an angel prophetethis? kingcorrier of beheasts? the calif in his halifskin? that eyriewinging one?) and the voids bubbily vode’s dodos across the which the boomomouths from their dupest dupes were in envery and anononously blowing great.',\n", - " 'guns.',\n", - " 'keep backwards, please, because there was no good to gundy running up again. guns. and it was written up in big capital. guns. saying never underrupt greatgrandgosterfosters! guns. and whatever one did they said, the fourlings, that on no acounts you were not to. guns.',\n", - " 'not to pad them behaunt in the fear. not to go, tonnerwatter, and bungley well chute the rising gianerant. not to wandly be woking around jerumsalemdo at small hours about the murketplots, smelling okey boney, this little figgy and arraky belloky this little pink into porker but, porkodirto, to let the gentlemen pedesta-rolies out of the monabella culculpuration live his own left leave, cullebuone, by perperusual of the petpubblicities without inwoking his also’s between (sic) the arraky bone and (suc) the okey bellock. and not to not be always, hemmer and hummer, treeing unselves up with one exite but not to never be caving nicely, pre-cisely, quicely, rebustly, tendrolly, unremarkably, forsakenly, hal — tedly, reputedly, firstly, somewhatly, yesayenolly about the back excits. never to weaken up in place of the broths. never to vvol-lusslleepp in the pleece of the poots. and, allerthings, never to ate the sour deans if they weren’t having anysin on their consients. and, when in zumschloss, to never, narks, cease till the finely ending was consummated by the completion of accomplishment.',\n", - " 'and thus within the tavern’s secret booth the wisehight ones who sip the tested sooth bestir them as the just has bid to jab the punch of quaram on the mug of truth.',\n", - " 'k.c. jowls, they’re sodden in the secret. k.c. jowls, they sure are wise. k.c. jowls, the justicestjobbers, for they’ll find another faller if their ruse won’t rise. whooley the whooper.',\n", - " 'there is to see. squarish large face with the atlas jacket. brights, brownie eyes in bluesackin shoeings. peaky booky nose over a lousiany shirt. ruddy stackle hair besides a strawcamel belt. namely. gregorovitch, leonocopolos, tarpinacci and duggel-duggel. and was theys stare all atime? yea but they was. andor — ing the games, induring the studies, undaring the stories, end all. ned? only snugged then and cosied after one percepted nought while tuffbettle outraged the waywords and meansigns of their hinterhand suppliesdemands. and be they gone to splane splication? that host that hast one on the hoose when backturns when he facefronts none none in the house his geust has guest. you bet they is. and nose well down.',\n", - " 'with however what sublation of compensation in the radification of interpretation by the byeboys? being they. mr g. b. w. ashburner, s. bruno’s toboggan drive, mr faixgood, bell-chimbers, carolan crescent, mr i. i. chattaway, hilly gape, poplar park, mr q. p. dieudonney, the view, gazey peer, mr t. t. erchdeakin, multiple lodge, jiff exby rode, mr w. k. ferris–fender, fert fort, woovil doon botham ontowhom adding the tout that pumped the stout that linked the lank that cold the sandy that nextdoored the rotter that rooked the rhymer that lapped at the hoose that joax pilled.',\n", - " 'they had heard or had heard said or had heard said written.',\n", - " 'fidelisat.',\n", - " 'that there first a rudrik kingcomed to an inn court; and the seight of that yard was a perchypole with a loovahgloovah on it; last mannarks maketh man when wandshift winneth womans: so how would it hum, whoson of a which, if someof aswas to start to stunt the story on?',\n", - " 'so many needles to ponk out to as many noodles as are com-pany, they noddling all about it tutti to tempo, decumans numbered too, (a) well, that the secretary bird, better known as pandoria paullabucca, whom they thought was more like a solicitor general, indiscriminatingly made belief mid authorsagastions from schelm the pelman to write somewords to senders about her chilikin puck, laughing that poulebec would be the death of her, (b) that, well, that madges tighe, the postulate auditressee, when her daremood’s a grownian, is always on the who goes where, hoping to michal for the latter to turn up with a cupital tea before her ephumeral comes off without any much father which is parting parcel of the same goumeral’s postoppage, it being lookwhyse on the whence blows weather helping mickle so that the loiter end of that leader may twaddle out after a cubital lull with a hopes soon to ear, comprong? (c) becakes the goatsman on question, or what-ever the hen the bumbler was, feeling not up to scratch bekicks of whatever the kiddings payne inge and popper meant for him, thoughy onced at a throughlove, true grievingfrue danger, as a nirshe persent to his minstress, devourced the pair of them mather caray’s chucklings, pante blanche, and skittered his litters like the cavaliery man in cobra park for ungeborn yenkelmen, jeremy trouvas or kepin o’keepers, any old howe and any old then and when around dix dearthy dungbin, remarking sceni-cally with laddylike lassitude upon what he finally postscrapped, (d) after it’s so long till i thanked you about i do so much now thank you so very much as you introduced me to fourks, (e) will, these remind to be sane? (f) fool step! aletheometry? or just zoot doon floon?',\n", - " 'nut it out, peeby eye! onamassofmancynaves.',\n", - " 'but. top.',\n", - " 'you were in the same boat of yourselves too, getobodoff or treamplasurin; and you receptionated the most diliskious of milisk; which it all flowowered your drooplin dunlearies: but dribble a drob went down your rothole. meaning, kelly, grimes, phelan, mollanny, o’brien, macalister, sealy, coyle, hynes–joynes, naylar–traynor, courcy de courcy and gilligan–goll.',\n", - " 'stunner of oddstodds on bluebleeding boarhorse! what soresen’s head subrises thus tous out of rumpumplikun oak with, well, we cannot say whom we are looking like through his now-face? it is of noggens whilk dusts the bothsides of the seats of the bigslaps of the bogchaps of the porlarbaar of the marringaar of the lochlunn gonlannludder of the feof of the foef of forfummed ship-le-zoyd.',\n", - " 'boumce! it is polisignstunter. the sockerson boy. to pump the fire of the lewd into those soulths of bauchees, havsouse-dovers, tillfellthey deadwar knootvindict. an whele time he was rancing there smutsy floskons nodunder ycholerd for their poopishers, ahull onem fyre maynoother endnow! shatten up ship! bouououmce! nomo clandoilskins cheakinlevers! all ashored for capolic gizzards! stowlaway there, glutany of stainks! porterfillyers and spirituous suncksters, oooom oooom!',\n", - " 'as these vitupetards in his boasum he did strongleholder, bushbrows, nobblynape, swinglyswanglers, sunkentrunk, that from tin of this clucken hadded runced slapottleslup. for him had hord from fard a piping. as? of?',\n", - " 'dour douchy was a sieguldson. he cooed that loud nor he was young. he cud bad caw nor he was gray like wather parted from the say.',\n", - " 'ostia, lift it! lift at it, ostia! from the say! away from the say!',\n", - " 'himhim. himhim.',\n", - " 'hearhasting he, himmed, reromembered all the chubbs, chipps, chaffs, chuckinpucks and chayney chimebells that he had mistri-buted in port, pub, park, pantry and poultryhouse, while they, thered, the others, that are, were most emulously concerned to cupturing the last dropes of summour down through their grooves of blarneying. ere the sockson locked at the dure. which he would, shuttinshure. and lave them to sture.',\n", - " 'for be all rules of sport ’tis right that youth bedower’d to charm the night whilst age is dumped to mind the day when wather parted from the say.',\n", - " 'the humming, it’s coming. insway onsway.',\n", - " 'fingool mackishgmard obesume burgearse benefice, he was bowen hem and scrapin him in recolcitrantament to the right-about and these probenopubblicoes clamatising for an extinsion on his hostillery with his chargehand bombing their eres. tids, genmen, plays, she been goin shoother off almaynoother on-awares.',\n", - " 'you here nort farwellens rouster? ashiffle ashuffle the wayve they.',\n", - " 'from dancingtree till suttonstone there’s lads no lie would filch a crown to mull their sack and brew their tay with wather parted from the say.',\n", - " 'lelong awaindhoo’s a selverbourne enrouted to rochelle lane and liberties those mullinguard minstrelsers are marshal-sing, par tunepiped road, under where, perked on hollowy hill, that poor man of lyones, good dook weltington, hugon come er- rindwards, had hircomed to the belles bows and been cutat-trapped by the mausers. now is it town again, londmear of dub — lin! and off coursse the toller, ples the dotter of his eyes with her: moke the wanst, whye doe we aime alike a pose of poeter peaced? while the dumb he shoots the shopper rope. and they all pour forth. sans butly tuppeter sowyer, the rouged engene-rand, a barttler of the beauyne, still our benjamin liefest, some — time frankling to thise citye, whereas bigrented him a piers half subporters for his arms, josiah pipkin, amos love, raoul le feb-ber, blaize taboutot, jeremy yopp, francist de loomis, hardy smith and sequin pettit followed by the snug saloon seanad of our caf‚ b‚ranger. the scenictutors.',\n", - " 'because they wonted to get out by the goatweigh afore the sheep was looset for to wish the wobbleton whiteleg welshers kailly-kailly kellykekkle and savebeck to brownhazelwood from all the dinnasdoolins on the labious banks of their swensewn snewwes-ner, turned again weastinghome, by danesbury common, and they onely, duoly, thruely, fairly after rainydraining founty-buckets (chalkem up, hemptyempty!) till they caught the wind abroad (alley loafers passinggeering!) all the rockers on the roads and all the boots in the stretes.',\n", - " 'oh dere! ah hoy!',\n", - " 'last ye, lundsmin, hasty hosty! for an anondation of miri-fication and the lutification of our paludination.',\n", - " 'his bludgeon’s bruk, his drum is tore. for spuds we’ll keep the hat he wore and roll in clover on his clay by wather parted from the say.',\n", - " 'hray! free rogue mountone till dew mild well to corry awen and glowry! are now met by brownaboy fuinnninuinn’s former for a lyncheon partyng of his burgherbooh. the shanavan wacht. rantinroarin batteries dorans. and that whistling thief, o’ ryne o’rann. with a catch of her cunning like and nowhere a keener.',\n", - " 'the for eolders were aspolootly at their wetsend in the mailing waters, trying to. hide! seek! hide! seek! because number one lived at bothersby north and he was trying to. hide! seek! hide! seek! and number two digged up poors coort, soother, trying to. hide! seek! hide! seek! and nomber three he sleeped with lilly tekkles at the eats and he was trying to. hide! seek! hide! seek! and the last with the sailalloyd donggie he was berthed on the moherboher to the washte and they were all trying to and baffling with the walters of, hoompsydoompsy walters of. high! sink! high! sink! highohigh! sinkasink!',\n", - " 'waves.',\n", - " 'the gangstairs strain and anger’s up as hoisty rares the can and cup to speed the bogre’s barque away o’er wather parted from the say.',\n", - " 'horkus chiefest ebblynuncies!',\n", - " '— he shook be ashaped of hempshelves, hiding that shepe in his goat. and for rassembling so bearfellsed the magreedy prince of roger. thuthud. heigh hohse, heigh hohse, our kin-dom from an orse! bruni lanno’s woollies on brani lonni’s hairyparts. and the hunk in his trunk it would be an insalt foul the matter of that cellaring to a pigstrough. stop his laysense. ink him! you would think him alddaublin staking his lordsure like a gourd on puncheon. deblinity devined. wholehunting the pairk on a methylogical mission whenever theres imberillas! and calling rina roner reinette ronayne. to what mine answer is a lemans. arderleys, beedles and postbillers heard him. three points to one. ericus vericus corrupted into ware eggs. dummy up, distillery! broree aboo! run him a johnsgate down jameses-lane. begetting a wife which begame his niece by pouring her youngthings into skintighs. that was when he had dizzy spells. till gladstools pillools made him ride as the mall. thanks to his huedobrass beerd. lodenbroke the longman, now he canseels under veerious persons but is always that rorke relly! on consideration for the musickers he ought to have down it. pass out your cheeks, why daunt you! penalty, please! there you’ll know how warder barded the bollhead that parssed our alley. we just are upsidedown singing what ever the dimkims mummur alla-lilty she pulls inner out heads. this is not the end of this by no manners means. when you’ve bled till you’re bone it crops out in your flesh. to tell how your mead of, mard, is made of. all old dadgerson’s dodges one conning one’s copying and that’s what wonderland’s wanderlad’ll flaunt to the fair. a trancedone boy-script with tittivits by. ahem. you’ll read it tomorrow, marn, when the curds on the table. a nigg for a nogg and a thrate for a throte. the auditor learns. still pumping on torkenwhite rad-lumps, lencs. in preplays to anonymay’s left hinted palinode obviously inspiterebbed by a sibspecious connexion. note the notes of admiration! see the signs of suspicion! count the hemi-semidemicolons! screamer caps and invented gommas, quoites puntlost, forced to farce! the pipette will say anything at all for a change. and you know what aglove means in the murdrus due-luct! fewer to feud and rompant culotticism, a fugle for the glee — men and save, sit and sew. and a pants outsizinned on the doughertys’ duckboard pointing to peace at home. in some, lawanorder on lovinardor. wait till we hear the boy of biskop reeling around your postoral lector! epistlemadethemology for deep dorfy doubtlings. as we’ll lay till break of day in the bunk of basky, o! our island, rome and duty! well tried, buckstiff! batt in, boot! sell him a breach contact, the vendoror, the buylawyer one hyde, sack, hic! two stick holst, lucky! finnish make goal! first you were nomad, next you were namar, now you’re nu-mah and it’s soon you’ll be nomon. hence counsels ecclesiast. there’s every resumption. the forgein offils is on the shove to lay you out dossier. darby’s in the yard, planning it on you, plot and edgings, the whispering peeler after cooks wearing an illfor-mation. the find of his kind! an artist, sir! and dirt cheap at a sovereign a skull! he knows his finsbury follies backwoods so you batter see to your regent refutation. ascare winde is rifing again about nice boys going native. you know who was wrote about in the orange book of estchapel? basil and the two other men from king’s avenance. just press this cold brand against your brow for a mow. cainfully! the sinus the curse. that’s it. hung chung egglyfella now speak he tell numptywumpty top-sawys belongahim pidgin. secret things other persons place there covered not. how you fell from story to story like a sagasand to lie. enfilmung infirmity. on the because alleging to having a finger a fudding in pudding and pie. and here’s the witnesses. glue on to him, greevy! bottom anker, noordeece! and kick kick killykick for the house that juke built! wait till they send you to sleep, scowpow! by jurors’ cruces! then old hunphy-dunphyville’ll be blasted to bumboards by the youthful herald who would once you were. he’d be our chosen one in the matter of brittas more than anarthur. but we’ll wake and see. the wholes poors riches of ours hundreds of manhoods and womhoods. two cents, two mills and two myrds. and it’s all us rangers you’ll be facing in the box before the twelfth correctional. like one man, gell. between all the misses mountsackvilles in their halfmoon haemicycles, gasping to giddies to dye for the shame. just hold hard till the one we leapt out gets her yearing! hired in cameras, extra! with his honour surpacker on the binge. so yelp your guilt and kitz the buck. you’ll have loss of fame from wimme-game’s fake. forwards! one bully son growing the goff and his twinger read out by the nazi priers. you fought as how they’d never woxen up, did you, crucket? it will wecker your earse, that it will! when hives the court to exchequer ’tis the child which gives the sire away. good for you, richmond rover! scrum around, our side! let him have another between the spindlers! a grand game! dalymount’s decisive. don gouverneur buckley’s in the tara tribune, sporting the insides of a rhutian jhanaral and little mrs ex–skaerer-sissers is bribing the halfpricers to pray for her widower in his gravest embazzlement. you on her, hosy jigses, that’ll be some nonstop marrimont! you in your stolen mace and anvil, magnes, and her burrowed in berkness cirrchus clouthses. fummuccumul with a graneen aveiled. playing down the slavey touch. much as she was when the.fancy cutter out col-lecting milestones espied her aseesaw on a fern. so nimb, he said, a dat of dew. between furr-y-benn and ferr-y-bree. in this tear vikloe vich he lofed. the smiling ever. if you pulls me over pay me, prhyse! a talor would adapt his caulking trudgers on to any shape at see. address deceitfold of wovens weard. the wonder of the women of the world together, moya! and the lovablest lima since ineen maccormick maccoort macconn o’puckins mackundred. only but she is a little width wider got. be moving abog. you cannot make a limousine lady out of a hillman minx. listun till you’ll hear the mudquirt accent. this is a bulgen horesies, this is wollan indulgencies, this is a flemsh. tik. scapu-lars, beads and a stump of a candle, hubert was a hunter, chemins de la croixes and rosairette’s egg, all the trimmings off the tree that she picked up after the clontarf voterloost when o’bryan macbruiser bet norris nobnut. becracking his cucconut be-tween his kknneess. umpthump, here inkeeper, it’s the doater — een’s wednessmorn! delphin dringing! grusham undergang! and the real hymernians strenging strong at knocker knocker! holy and massalltolled. you ought to tak a dos of frut. jik. sauss. you’re getting hoovier, a twelve stone hoovier, fullends a twelve stone hoovier, in your corpus entis and it scurves you right, demnye! aunt as unclish ams they make oom. but nichtia you bound not to loose’s gone on neffin since she clapped her charmer on him at gormagareen. at the gunting munting hunting punting. the eitch is in her blood, arrah! for a frecklesome freshcheeky sweetworded lupsqueezer. and he shows how he’ll pick him the lock of her fancy. poghue! poghue! poghue! and a good jump, powell! clean over all their heads. we could kiss him for that one, couddled we, huggins? sparkes is the footer to hance off nancies. scaldhead, pursue! before you bunkledoodle down upon your birchentop again after them three blows from time, drink and hurry. the same three that nursed you, skerry, badbols and the grey one. all of your own club too. with the fistful of burryberries were for the massus for to feed you living in dying. buy bran biscuits and you’ll never say dog. and be in the finest of companies. morialtay and kniferope walker and rowley the barrel. with longbow of the lie. slick of the trick and blennercassel of the brogue. clanruckard for ever! the fenn, the fenn, the kinn of all fenns! deaf to the winds when for croonacreena. fisht! and it’s not now saying how we are where who’s softing what rushes. merryvirgin forbed! but of they never eat soullfriede they’re ating it now. with easter greeding. angus! angus! angus! the keykeeper of the keys of the seven doors of the dreamadoory in the house of the house-hold of hecech saysaith. whitmore, whatmore? give it over, give it up! mawgraw! head of a helo, chesth of champgnon, eye of a gull! what you’d if he’d. the groom is in the greenhouse, gattling out his. gun! that lad’s the style for. lannigan’s ball! now a drive on the naval! the shallburn shock. never mind your gibbous. slip on your ropen collar and draw the noosebag on your head. nobody will know or heed you, postumus, if you skip round schlymartin by the back and come front sloomutren to beg in one of the shavers’ sailorsuits. three climbs three-quickenthrees in the garb of nine. we’ll split to see you mouldem imparvious. a wing for oldboy welsey wandrer! well spat, witty wagtail! now piawn to bishop’s forthe! moove. there’s mumblesome wadding murch cranking up to the hornemooni-um. drawg us out ivy eve in the hall of alum! the finnecies of poetry wed music. feeling the jitters? you’ll be as tight as trivett when the knot’s knutted on. now’s your never! peena and queena are duetting a giggle-for-giggle and the brideen alan-nah is lost in her diamindwaiting. what a magnificent gesture you will show us this gallus day. clean and easy, be the hooker! and a free for croaks after. dovlen are out for it. so is rathfinn. and, hike, here’s the hearse and four horses with the interpro-vincial crucifixioners throwing lots inside to know whose to be their gosson and whereas to brake the news to morhor. how our myterbilder his fullen aslip. and who will wager but he’ll shonny bhoy be, the fleshlumpfleeter from poshtapengha and all he bares sobsconcious inklings shadowed on soulskin’. its segnet yores, the strake of a hin. nup. laying the cloth, to fore of them. and thanking the fish, in core of them. to pass the grace for gard sake! ahmohn. mr justician matthews and mr justician marks and mr justician luk de luc and mr justinian johnston–johnson. and the aaskart, see, behind! help, help, hurray! all — sup, allsop! four ghools to nail! cut it down, mates, look slippy! they’ve got a dathe with a swimminpull. dang! ding! dong! dung! dinnin. isn’t it great he is swaying above us for his good and ours. fly your balloons, dannies and dennises! he’s door-knobs dead! and annie delap is free! ones more. we could ate you, par buccas, and imbabe through you, reassuranced in the wild lac of gotliness. one fledge, one brood till hulm culms evurdyburdy. huh the throman! huh the traidor. huh the truh. arrorsure, he’s the mannork of arrahland over-sense he horrhorrd his name in thuthunder. rrrwwwkkkrrr! and seen it rudden up in fusefiressence on the flashmurket. p.r.c.r.l.l. royloy. of the rollorrish rattillary. the lewd-ningbluebolteredallucktruckalltraumconductor! the unnamed nonirishblooder that becomes a greenislender overnight! but we’re molting superstituettes out of his fulse thortin guts. tried mark, easterlings. sign, soideric o’cunnuc, rix. adversed ord, magtmorken, kovenhow. there’s a great conversion, myn! cou-cous! find his causcaus! from motometusolum through bulley and cowlie and diggerydiggerydock down to bazeness’s usual? he’s alight there still, by mike! loose afore! bung! bring forth your deed! bang! till is the right time. bang! partick thistle agen s. megan’s versus brystal palace agus the walsall! putsch! tiemore moretis tisturb badday! the playgue will be soon over, rats! let sin! geh tont! all we wants is to get peace for posses-sion. we dinned unnerstunned why you sassad about thurteen to aloafen, sor, kindly repeat! or ledn us alones of your lungorge, parsonifier propounde of our edelweissed idol worts! shaw and shea are lorning obsen so hurgle up, gandfarder, and gurgle me gurk. you can’t impose on frayshouters like os. every tub here spucks his own fat. hang coersion everyhow! and smotther-mock gramm’s laws! but we’re a drippindhrue gayleague all at ones. in the buginning is the woid, in the muddle is the sound-dance and thereinofter you’re in the unbewised again, vund vulsyvolsy. you talker dunsker’s brogue men we our souls speech obstruct hostery. silence in thought! spreach! wear anartful of outer nocense! pawpaw, wowow! momerry twelfths, noebroed! that was a good one, ha! so it will be quite a material what may farther be unvuloped for you, old mighty, when it’s aped to foul a delfian in the mahnung. ha ha! talk of paddy- barke’s echo! kick nuck, knockcastle! muck! and you’ll nose it, o you’ll nose it, without warnward from we. we don’t know the sendor to whome. but you’ll find chiggenchugger’s taking the treaclyshortcake with bugle and the bitch pairsadrawsing and horssmayres prosession tyghting up under the threes. stop. press stop. to press stop. all to press stop. and be the seem talkin wharabahts hosetanzies, dat sure is sullibrated word! bing bong! saxolooter, for congesters are salders’ prey. snap it up in the loose, patchy the blank! anyone can see you’re the son of a gunnell. fellow him up too, carlow! woes to the worm-quashed, aye, and wor to the winner! think of aerian’s wall and the fall of toss. give him another for to volleyholleydoodlem! his lights not all out yet, the liverpooser! boohoohoo it oose! with seven hores always in the home of his thinkingthings, his nodsloddledome of his noiselisslesoughts. two idas, two evas, two nessies and rubyjuby. phook! no wonder, pipes as kirles, that he sthings like a rheinbok. one bed night he had the dely-siums that they were all queens mobbing him. fell stiff. oh, ho, ho, ho, ah, he, he! abedicate yourself it just gegs our goad. he’ll be the deaf of us, pappappoppopcuddle, samblind daiy-rudder. yus, sord, fathe, you woll, putty our wraughther! what we waits be after? whyfore we come agooding? none of you, cock icy! you keep that henayearn and her fortycantle glim lookbehinder. we might do with rubiny leeses. but of all your wanings send us out your peppydecked ales and you’ll not be such a bad lot. the rye is well for whose amind but the wheateny one is proper lovely. b e n k! we sincerestly trust that missus with the kiddies of sweet gorteen has not b i n k to their very least tittles deranged if in b u n k and we greesiously augur for your meggers a b e n k b a n k b o n k to sloop in with all sorts of adceterus and adsaturas. it’s our last fight, megantic, fear you will! the refergee’s took to hailing to time the pass. there goes the blackwatchwomen, all in white, flaxed up, pur-gad! right toe, armitage! tem for tam at timmotty hall! we’re been carried away. beyond bournes and bowers. so we’ll leave it to keyhoe, danelly and pykemhyme, the three muskrat- eers, at the end of this age that had it from variants’ katey sherratt that had it from variants’ katey sherratt’s man for the bonnefacies of blashwhite and blushred of the aquasancta liffey patrol to wind up and to tells of all befells after that to mocked majesty in the malincurred mansion.',\n", - " 'so you were saying, boys? anyhow he what?',\n", - " \"so anyhow, melumps and mumpos of the hoose uncommons, after that to wind up that longtobechronickled gettogether thanksbetogiving day at glenfinnisk-en-la-valle, the anniver-sary of his finst homy commulion, after that same barbecue bean — feast was all over poor old hospitable corn and eggfactor, king roderick o’conor, the paramount chief polemarch and last pre-electric king of ireland, who was anything you say yourself be — tween fiftyodd and fiftyeven years of age at the time after the socalled last supper he greatly gave in his umbrageous house of the hundred bottles with the radio beamer tower and its hangars, chimbneys and equilines or, at least, he was’nt actually the then last king of all ireland for the time being for the jolly good reason that he was still such as he was the eminent king of all ireland himself after the last preeminent king of all ireland, the whilom joky old top that went before him in the taharan dy-nasty, king arth mockmorrow koughenough of the leathered leggions, now of parts unknown, (god guard his generous comicsongbook soul!) that put a poached fowl in the poor man’s pot before he took to his pallyass with the weeping eczema for better and worse until he went under the grass quilt on us, never-theless, the year the sugar was scarce, and we to lather and shave and frizzle him, like a bald surging buoy and himself down to three cows that was meat and drink and dogs and washing to him, ’tis good cause we have to remember it, going through summersultryngs of snow and sleet witht the widow nolan’s goats and the brownes girls neats anyhow, wait till i tell you, what did he do, poor old roderick o’conor rex, the aus-picious waterproof monarch of all ireland, when he found him — self all alone by himself in his grand old handwedown pile after all of them had all gone off with themselves to their castles of mud, as best they cud, on footback, owing to the leak of the mccarthy’s mare, in extended order, a tree’s length from the longest way out, down the switchbackward slidder of the land-sown route of hauburnea’s liveliest vinnage on the brain, the unimportant parthalonians with the mouldy firbolgs and the tuatha de danaan googs and the ramblers from clane and all the rest of the notmuchers that he did not care the royal spit out of his ostensible mouth about, well, what do you think he did, sir, but, faix, he just went heeltapping through the winespilth and weevily popcorks that were kneedeep round his own right royal round rollicking toper’s table, with his old roderick ran-dom pullon hat at a lanty leary can't on him and mike brady’s shirt and greene’s linnet collarbow and his ghenter’s gaunts and his macclefield’s swash and his readymade reillys and his pan-prestuberian poncho, the body you’d pity him, the way the world is, poor he, the heart of midleinster and the supereminent lord of them all, overwhelmed as he was with black ruin like a sponge out of water, allocutioning in bellcantos to his own oliverian society macguiney’s dreans of ergen adams and thruming through all to himself with diversed tonguesed through his old tears and his ould plaised drawl. starkened by the most regal of belches, like a blurney cashelmagh crooner that lerking clare air, the blackberd’s ballad i’ve a terrible errible lot todue todie todue tootorribleday, well, what did he go and do at all, his most exuberant majesty king roderick 0’conor but, arrah bedamnbut, he finalised by lowering his woolly throat with the wonderful midnight thirst was on him, as keen as mustard, he could not tell what he did ale, that bothered he was from head to tail, and, wishawishawish, leave it, what the irish, boys, can do, if he did’nt go, sliggymaglooral reemyround and suck up, sure enough, like a trojan, in some particular cases with the assistance of his vene-rated tongue, whatever surplus rotgut, sorra much, was left by the lazy lousers of maltknights and beerchurls in the different bot-toms of the various different replenquished drinking utensils left there behind them on the premisses by that whole hogsheaded firkin family, the departed honourable homegoers and other sly- grogging suburbanites, such as it was, fall and fall about, to the brindishing of his charmed life, as toastified by his cheeriubi-cundenances, no matter whether it was chateaubottled guiness’s or phoenix brewery stout it was or john jameson and sons or roob coccola or, for the matter of that, o’connell’s famous old dublin ale that he wanted like hell, more that halibut oil or jesuits tea, as a fall back, of several different quantities and quali-ties amounting in all to, i should say, considerably more than the better part of a gill or naggin of imperial dry and liquid measure till, welcome be from us here, till the rising of the morn, till that hen of kaven’s shows her beaconegg, and chapwellswendows stain our horyhistoricold and father macmichael stamps for aitch o’clerk mess and the litvian newestlatter is seen, sold and delivered and all’s set for restart after the silence, like his ancestors to this day after him (that the blazings of their ouldmouldy gods may attend to them we pray!), overopposides the cowery lad in the corner and forenenst the staregaze of the cathering candled, that adornment of his album and folkenfather of familyans, he came acrash a crupper sort of a sate on accomondation and the very boxst in all his composs, whereuponce, behome the fore for cove and trawlers, heave hone, leave lone, larry’s on the focse and faugh machugh o’bawlar at the wheel, one to do and one to dare, par by par, a peerless pair, ever here and over there, with his fol the dee oll the doo on the flure of his feats and the feels of the fumes in the wakes of his ears our wineman from barleyhome he just slumped to throne.\",\n", - " 'so sailed the stout ship nansy hans. from liff away. for nattenlaender. as who has come returns. farvel, farerne! good-bark, goodbye!',\n", - " 'now follow we out by starloe!']},\n", - " 'pop': {'meta': {'train_data': ['ik phone karaan 100 bande aan',\n", - " 'maange hath khali main ni dinda daan',\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'ik phone karaan 100 bande aan',\n", - " \"ain't no handouts main ni dinda daan\",\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'ghar raat main late aaya',\n", - " 'lifestyle meri vekh yaara',\n", - " 'round round with my mates yaara',\n", - " 'tu putha main straight yaara',\n", - " 'mumbai main ikka de naal',\n", - " 'kehnda duniya nu dikhda de kamaal',\n", - " 'badshah mera yaar aeya',\n", - " 'par bakiyan layi main tyaar aan haan',\n", - " 'bada bol na',\n", - " 'apne interviews ch mooh khol na',\n", - " 'tere show hunde si sold-out',\n", - " 'so put it playing you old now haan',\n", - " 'ustaad kehnde tuhadi launda class',\n", - " 'saadi pohnch uchi bande assi khaas',\n", - " 'ik phone karaan 100 bande aan',\n", - " 'maange hath khali main ni dinda daan',\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'ik phone karaan so bande aan',\n", - " \"ain't no handouts main ni dinda daan\",\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'angrezi punjabi ch always main maaran chapedan',\n", - " 'punjab jaawan chandigarh da audi gehra',\n", - " 'sab woofer wajjan shisheyan ch bas mera hi mera',\n", - " 'photo le la par main phone number ni dena',\n", - " 'chup-chap rehnda fer vi mere val attention',\n", - " 'ohda boyfriend karda tension jad mainu mareya mention',\n", - " 'munde mangan maithon kehnde bhaji dedo chance',\n", - " 'khud mehnat karo saleyon tuhade kol hai ni hands?',\n", - " 'ik phone karaan 100 bande aan',\n", - " 'maange hath khali main ni dinda daan',\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'ik phone karaan so bande aan',\n", - " \"ain't no handouts main ni dinda daan\",\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'jithe javaan othe hundi aa meri pechhaan',\n", - " 'hashish',\n", - " 'cocaine',\n", - " 'heroin',\n", - " 'opium',\n", - " 'lsd',\n", - " 'dmt',\n", - " 'stp, blt',\n", - " 'a&p, irt',\n", - " 'apc, alcohol',\n", - " 'cigarettes, shoe polish and peyote',\n", - " 'dexadrine, benzedrine, methedrine',\n", - " 's-e-x and y-o-u, wow!',\n", - " 'is he busy?',\n", - " 'busy is he!',\n", - " 'is he busy?',\n", - " 'busy is he!',\n", - " 'go!',\n", - " 'whoa!',\n", - " 'honey honey honey man!',\n", - " 'honey honey honey man!',\n", - " 'faster faster',\n", - " 'faster faster',\n", - " 'faster faster',\n", - " 'go!',\n", - " 'is he busy?',\n", - " 'busy is he!',\n", - " 'is he busy?',\n", - " 'busy is he!',\n", - " 'go!',\n", - " 'whoa!',\n", - " 'sugar sugar honey man!',\n", - " 'sugar sugar honey man!',\n", - " 'faster faster',\n", - " 'faster faster',\n", - " 'faster faster',\n", - " 'go!',\n", - " 'bzzz bzzz',\n", - " 'oh yes the honey man is here!',\n", - " 'sting sting',\n", - " 'oh boy the honey man is here!',\n", - " 'is he busy?',\n", - " 'busy is he!',\n", - " 'is he busy?',\n", - " 'busy is he!',\n", - " 'go!',\n", - " 'whoa!',\n", - " 'honey honey honey man!',\n", - " 'sugar sugar honey man!',\n", - " 'faster faster',\n", - " 'faster faster',\n", - " 'faster faster',\n", - " 'go!',\n", - " 'kimi wo kitto sagashiteta zutto motometeta',\n", - " 'hitori de ikirareru sou omoi aruiteta machi de',\n", - " \"just thinkin' of you\",\n", - " 'ai suru sono tsuyosa wo ima shirihajimete',\n", - " 'you can take me to heaven',\n", - " 'tobitatsu tsubasa kureru',\n", - " 'kimi wa enjeeru',\n", - " 'all through twenty-four seven',\n", - " 'kimi ni aitakute',\n", - " 'itsu demo doko demo hanarete itemo',\n", - " \"(i'm) close to you\",\n", - " \"(i'll) close to you\",\n", - " 'sunny day sora no aosa ni kokorobosoku naru',\n", - " 'kimi wo nakuseba karappo na sonna boku dakara',\n", - " \"just thinkin' of you\",\n", - " 'kimi ni au mae no boku wo omoidasenai',\n", - " 'you can take me to heaven',\n", - " 'tobitatsu yuuki kureru',\n", - " 'kimi wa enjeeru',\n", - " 'all through twenty-four seven',\n", - " 'kimi wo shiritakute',\n", - " 'ima yori dare yori motto zutto',\n", - " \"(i'll) close to you\",\n", - " \"sekai de what's goin' on?\",\n", - " 'ki zukanakatta tragedy',\n", - " 'kanashii nyuusu ga mata',\n", - " 'muhyoujou yosootteru',\n", - " 'sonna yoru wa kimi ni aitai itsumo yori motto...',\n", - " 'you can take me to heaven',\n", - " 'ai wo oshiete kureru',\n", - " 'kimi wa enjeeru',\n", - " 'all through twenty-four seven',\n", - " 'kimi ni aitakute',\n", - " 'itsu demo doko demo hanarete itemo',\n", - " \"(i'm) close to you\",\n", - " 'you can take me to heaven',\n", - " 'tobitatsu yuuki kureru',\n", - " 'kimi wa enjeeru',\n", - " 'all through twenty-four seven',\n", - " 'kimi wo shiritakute',\n", - " 'ima yori dare yori motto zutto',\n", - " \"(i'll) close to you\",\n", - " 'you can take me to heaven',\n", - " 'tobitatsu tsubasa kureru',\n", - " 'kimi wa enjeeru',\n", - " 'all through twenty-four seven',\n", - " 'kimi ni aitakute',\n", - " 'itsu demo doko demo hanarete itemo',\n", - " \"(i'm) close to you\",\n", - " 'abhi mujh mein kahin',\n", - " 'baaki thodi si hai zindagi',\n", - " 'jagi dhadkan nayi',\n", - " 'jaana zinda hoon main to abhi',\n", - " 'kuch aisi lagan is lamhe mein hai',\n", - " 'ye lamha kahan tha mera!',\n", - " 'ab hai saamne, isse chhu loon zara',\n", - " 'mar jaaun ya jee loon zara?',\n", - " 'khushiyan choom loon, ya ro loon zara?',\n", - " 'mar jaaun ya jee loon zara?',\n", - " 'ho, abhi mujh mein kahin',\n", - " 'baaki thodi si hai zindagi',\n", - " 'ho dhoop mein jalte huye tan ko chhaya ped ki mil gayi',\n", - " 'roothe bacche ki hansi jaise fuslaane se phir khil gay',\n", - " 'kuch aisa hi ab mehsoos dil ko ho raha hai',\n", - " 'barson ke puraane zakhm pe marham laga sa hai',\n", - " 'kuchh aisa reham is lamhe mein hai',\n", - " 'ye lamha kahan tha mera!',\n", - " 'ab hai saamne, isse chhu loon zara',\n", - " 'mar jaaun ya jee loon zara?',\n", - " 'khushiyan choom loon, ya ro loon zara?',\n", - " 'mar jaaun ya jee loon zara?',\n", - " 'dor se tooti patang jaisi thi ye zindgaani meri',\n", - " 'aaj hoon kal ho mera na ho, har din thi kahani meri',\n", - " 'ek bandhan naya peeche se ab mujhko bulaaye',\n", - " 'aane waale kal ki kyun fikar mujhko sataa jaaye?',\n", - " 'ek aisi chubhan is lamhe mein hai',\n", - " 'ye lamha kahan tha mera!',\n", - " 'ab hai saamne, isse chhu loon zara',\n", - " 'mar jaaun ya jee loon zara?',\n", - " 'khushiyan choom loon, yya ro loon zara?',\n", - " 'mar jaaun ya jee loon zara?',\n", - " 'neon jeongmal yeppeo',\n", - " 'neoman bomyeon nae ipkkorineun hepeo',\n", - " 'nae sarme helper ne deoge ijeseoya gijigae pyeo',\n", - " 'gajaega gepyeonin geotcheoreom nae pyeon',\n", - " 'docu-eseo melodrama-ro gaepyeon',\n", - " 'i sesang modeun lovestory-reul jaeyeonhae',\n", - " 'neoraneun taeyange nan imi deyeonne',\n", - " 'an joheun giundeureun neoro inhae tteeo nae',\n", - " 'nae kkeoin deut nae kkeo anin some-gateun ge',\n", - " 'anya teumeul julge hwajangeul jiwosseodo naekkeo',\n", - " 'neol mannan geon josangnimdo',\n", - " 'daegyeonhaehasil ge ppeonhae modeun ge byeonhae',\n", - " 'eobseodo nae yeope neol hyanghae heeomchyeo',\n", - " 'uriui destiny apeuro gyesokdoeni',\n", - " 'geokjeong ma areumdaun gusogini',\n", - " 'nae geotgwa sok imi neo bakke mot nogyeo',\n", - " 'neon jeongmal yeppeo neomudo areumdawo',\n", - " 'gakkeumeun miwo nareul tto oemyeonhal ttaen',\n", - " 'geuraedo yeppeo neomudo areumdawo',\n", - " 'feel so good ooh lalalala',\n", - " 'mworalkka gamdang an dwae',\n", - " 'igeon machi ajjilhan seutilleto twinkle-han daiawa',\n", - " 'seksihan shape-ui sedancheoreom nuni ga',\n", - " 'geunyeoga mandeureonaen saeroun baechiya',\n", - " 'juiphaneun pathos-e jungdokdwae',\n", - " 'igijeogige sarawatdeon nae sarmeun gulbokhae',\n", - " 'nal gaman an duge mandeune eolma',\n", - " 'mot ganeun mojaran gamjeongeun an sseul ge',\n", - " 'baradeon isanghyeongboda yeppeo',\n", - " 'maja neon isangjeogin yeoja baek beon malhae',\n", - " 'tto imman apeun pattern ppaetgo sipeun that girl',\n", - " 'simdo inneun jindo ppael girl',\n", - " 'baradeon isanghyeongboda yeppeo',\n", - " 'maja neon isangjeogin yeoja baek beon badajwo',\n", - " 'nae jinchwijeogin gobaek saranghae maebeon',\n", - " 'better latethan never baby',\n", - " 'neon jeongmal yeppeo neomudo areumdawo',\n", - " 'gakkeumeun miwo nareul tto oemyeonhal ttaen',\n", - " 'geuraedo yeppeo neomudo areumdawo',\n", - " 'feel so good ooh lalalala',\n", - " 'girl gakkeum naege deungeul dollin',\n", - " 'ne moseupdo areumdawo',\n", - " 'yeppeo ne mameul da naegeman jwo',\n", - " 'neon jeongmal yeppeo neomudo areumdawo',\n", - " 'gakkeumeun miwo nareul tto oemyeonhal ttaen',\n", - " 'geuraedo yeppeo neomudo areumdawo',\n", - " 'feel so good ooh lalalala',\n", - " \"somewhere there's music\",\n", - " 'how faint the tune',\n", - " \"somewhere there's heaven\",\n", - " 'how high the moon',\n", - " 'there is no love',\n", - " 'when love is far away too',\n", - " 'till it comes true',\n", - " 'that you love me as i love you',\n", - " \"somewhere there's heaven\",\n", - " \"it's where you are\",\n", - " \"somewhere there's music\",\n", - " 'how near, how far',\n", - " 'the darkest night would shine',\n", - " 'if you would come to me soon',\n", - " 'until you will, how still my heart',\n", - " 'how high the moon',\n", - " 'how high the moon',\n", - " 'is the name of this song',\n", - " 'how high the moon',\n", - " 'though the words may be wrong',\n", - " \"we're singing it\",\n", - " 'because you ask for it',\n", - " \"so we're swinging it just for you\",\n", - " 'how high the moon',\n", - " 'does it touch the stars',\n", - " 'how high the moon',\n", - " 'does it reach up to mars',\n", - " 'though the words may be wrong',\n", - " 'to this song',\n", - " \"we're asking how high, high, high\",\n", - " 'high, high is the moon',\n", - " 'boo bi yoo bi',\n", - " 'bi yu di di ooh dun',\n", - " 'dabba oohbee',\n", - " 'boo di yoo di',\n", - " 'di yu di dee dee doohdun',\n", - " 'di di oohnbee',\n", - " 'bu di yu dan dan dan',\n", - " 'dee boognbee',\n", - " 'aheedee doo doo abbi woo do ee',\n", - " 'woah ba bee ba bap beya oh',\n", - " 'ein bap bap dein',\n", - " 'hey ohndalady deepbap',\n", - " 'bumblebee',\n", - " 'deedeedeedeedee deedee',\n", - " 'doo doot doop antdoodly wah',\n", - " 'vebeeoopm dabba oohbayoum dabie',\n", - " 'oohmbappa eupembappi ah',\n", - " 'baby ohm bap',\n", - " 'baby ooh bee bap bey',\n", - " 'oohtoo undn datley udnda da',\n", - " 'eun bu! eun bi! un ba! un bey!',\n", - " 'un bey un bey in byron bay',\n", - " 'moody eetn deeby deepi ah ba',\n", - " 'beebeeoohdibap da bap! un boo bay',\n", - " 'deeoohdedootundap lah day',\n", - " 'oohtdee undeedoodee dootn',\n", - " 'dadaploday',\n", - " \"beepbee oo'bapbee ootndap bobay\",\n", - " 'beepbee ootn da loday',\n", - " 'a dooblydoobly dooblydoobly',\n", - " 'dooblydoobly dooblydoobly',\n", - " 'dooblydeetn deepdeedee eudabapoya',\n", - " 'beebeeum beep beebee bebop',\n", - " 'beebeeoohbebap dedap un boobay',\n", - " 'deeodeedoodee dap lady',\n", - " 'oohtdee undeedoodee dootn',\n", - " 'dadaploday',\n", - " \"beepbee oo'bapbee ootndap bobay\",\n", - " 'beepbee ootn da loday',\n", - " 'deudedeu deun daudau baubau',\n", - " 'bieubau badee beiu beiu ooh',\n", - " 'heee he a we ah',\n", - " 'heee he a eeah hah',\n", - " 'eeetdee eutandabbie utan',\n", - " \"dooiedoodoon'lyba\",\n", - " 'bieu bau bau n daisy ba',\n", - " 'beedeedee dedee dedee',\n", - " 'beedeedee ba-oi',\n", - " 'adoodlyoohtndo oohntdo oohntdo',\n", - " 'deedee oothndo baobaobao baeu',\n", - " \"beet-deet-dee doodly'ap'n'boobie\",\n", - " \"bootbe up'n babba un baw baw ba-bey\",\n", - " 'beedeedee yabadoreda bababo',\n", - " \"baya baba bobobo bi'yabeeba\",\n", - " 'though the words may be wrong to this song',\n", - " 'we hope to make high, high, high, high',\n", - " 'high as the moon',\n", - " 'mere hothon se dhuandhaar nikalti hai jo boli',\n", - " 'jaise, jaise bandook ki goli',\n", - " 'mere tevar mein hai tehzeeb ki rangeen rangoli',\n", - " 'jaise, jaise ho eid meiin holi',\n", - " 'mere hothon se dhuaandhaar nikalti hai jo boli',\n", - " 'jaise, jaise bandook ki goli',\n", - " 'mere tevar mein hai tehzeeb ki rangeen rangoli',\n", - " 'jaise, jaise ho eid mein holi',\n", - " 'mere jeevan ki dasha',\n", - " 'thoda raston ka nasha',\n", - " 'thodi manzil ki pyaas hai',\n", - " 'baaki sab first class hai',\n", - " 'baaki sab first class hai',\n", - " 'baaki sab first class hai',\n", - " 'haan kasam se',\n", - " 'baaki sab first class hai',\n", - " 'pal mein tola, pal mein masha',\n", - " 'jaisi baazi waisa pasha',\n", - " 'apni thodi hattke duniyadaari hai',\n", - " 'karna kya hai chandi sona',\n", - " 'jitna paana, utna khona',\n", - " 'hum to dil ke dhande ke vyapari hain',\n", - " 'meri muskaan liye kabhi aati hai subah',\n", - " 'kabhi shamein udaas hai',\n", - " 'baaki sab first class hai',\n", - " 'baaki sab first class hai',\n", - " 'baaki sab first class hai',\n", - " 'haan, kasam se',\n", - " 'baaki sab first class hai',\n", - " 'ho, sabke hothon pe charcha tera',\n", - " 'bantta galiyon mein parcha tera',\n", - " 'yun to aashiq hain laakhon magar',\n", - " 'sabse ooncha hai darjaa tera',\n", - " 'jeb mein ho athanni bhale',\n", - " 'chalta noton mein kharcha tera',\n", - " 'yu to aashiq hain laakhon magar',\n", - " 'sabse ooncha hai darjaa tera',\n", - " 'sabse ooncha hai darjaa tera',\n", - " 'meri taareef se chhupti phire badnaamiyan meri',\n", - " 'jaise, jaise ho aankh micholi',\n", - " 'mere tevar mein hai tehzeeb ki rangeen rangoli',\n", - " 'jaise, jaise ho eid mein holi',\n", - " 'mere jeevan ki dasha',\n", - " 'thoda raston ka nasha',\n", - " 'thodi manzil ki pyaas hai',\n", - " 'baaki sab first class hai',\n", - " 'baaki sab first class hai',\n", - " 'baaki sab first class hai',\n", - " 'haan, kasam se',\n", - " 'baaki sab first class hai, haan',\n", - " 'yeah you know what?',\n", - " 'it feel so good back to be single so good',\n", - " 'all ma single people in the house say freedom!',\n", - " 'ije deoneun niga eodiseo nugurang mwol hadeun',\n", - " 'hey hey hey i don’t care sang-gwan an hallae',\n", - " 'hollo-in modeun naldeuri iri joheunji',\n", - " 'wae wae wae nan mollasseulgga',\n", - " 'sureun manhi masiji mallago jibeneun bballi deureogarago',\n", - " 'jansori haneun saram eopseo neomu joha i feel free',\n", - " 'naneun mae-iri woo-ha',\n", - " 'nae balmoge geollin jokswae naneun deonjyeosseo',\n", - " 'ladies i’m back, i’m back, i’m back',\n", - " 'naega dorawasseo single-ro back again',\n", - " 'wae neon ireon nareul geokjeonghaneun geoni',\n", - " 'naneun gwaenchanheunde',\n", - " 'hey neo ije dasin nareul chajjima we can’t go back whoo!',\n", - " 'don’t wanna go back i never go back',\n", - " 'naega dasi doragalgeoran saeng-gageun hajima',\n", - " 'urin chu-eogil bbun miryeon ddawin eopseo',\n", - " 'don’t wanna go back, i never go back',\n", - " 'naega neoreul geuriwohal georan chaggak hajima',\n", - " 'neoneun gwageo-il bbun yeah i ain’t going back to you',\n", - " 'good to be single, i don’t need a girlfriend',\n", - " 'jigyeoun datum ije ggeutigo',\n", - " 'ggong nae mogeul joineun nunchi bol piryodo eopseuni',\n", - " 'feel so high high, touch the sky sky',\n", - " 'neoneun ireon nal deoneun japji mothae yeah, l. joe',\n", - " 'wae munjareul ssibeonnyago jigeumeun eodinyago',\n", - " 'naega eodiseo nugureul mannadeon neoneun ije sin-gyeong-ggeo',\n", - " 'neoman bomyeon jjajeungna like masul lae ape natanajima',\n", - " 'you and i ije namiya ni gal gireul ga i’ma live my life',\n", - " 'wae neon ireon nareul geokjeonghaneun geoni',\n", - " 'naneun gwaenchanheunde',\n", - " 'hey neo ije dasin nareul chajjima we can’t go back whoo!',\n", - " 'don’t wanna go back i never go back',\n", - " 'naega dasi doragalgeoran saeng-gageun hajima',\n", - " 'urin chu-eogil bbun miryeon ddawin eopseo',\n", - " 'don’t wanna go back, i never go back',\n", - " 'naega neoreul geuriwohal georan chaggak hajima',\n", - " 'neoneun gwageo-il bbun yeah i ain’t going back to you',\n", - " 'bbigeokbbigeok daedeon neowa naui sa-ineun',\n", - " 'over over imi ggeuti natgo',\n", - " 'igeot jeogeot ddajil piryo eomneun jigeumi nan neomu neomu joha',\n", - " 'nan dasi i can go to club eonjedeun pick up girls',\n", - " 'amureon joechaeggam eopsi nugudeun i can love',\n", - " 'damn right, so girls call me',\n", - " 'gong-il-yeong-sam-pal-sam-gong',\n", - " 'don’t wanna go back i never go back',\n", - " 'naega dasi doragalgeoran saeng-gageun hajima',\n", - " 'urin chu-eogil bbun miryeon ddawin eopseo',\n", - " 'don’t wanna go back, i never go back',\n", - " 'naega neoreul geuriwohal georan chaggak hajima',\n", - " 'neoneun gwageo-il bbun yeah i ain’t going back to you',\n", - " 'azamukarete \"misuterarete...\"',\n", - " 'kokoro mo hyoujou mo neji magari',\n", - " 'osae kirenai \"ikari, urami\"',\n", - " 'kuren no honoo wakiagaru you ni',\n", - " 'what did you say?',\n", - " \"don't give me that!\",\n", - " 'make up your mind!',\n", - " \"don't be afraid!\",\n", - " \"i can't take it!\",\n", - " \"don't stop fury\",\n", - " 'what do you want?',\n", - " 'p.a.i.n?',\n", - " 'onaji kurushimi wo aji awasete yaru',\n", - " 'mezawari nara \"kowaseba ii\"',\n", - " 'kore igai yari kata wo shiranai',\n", - " 'ki ni iranai \"damarasetoku?\"',\n", - " 'hanashi ai nado ni wa oujinai',\n", - " 'what did you say?',\n", - " \"don't give me that!\",\n", - " 'make up your mind!',\n", - " \"don't be afraid!\",\n", - " \"i can't take it!\",\n", - " \"don't stop fury\",\n", - " 'what do you want?',\n", - " 'p.a.i.n?',\n", - " 'kiba wo mukitai dake riyuu wa iranai...',\n", - " 'musabetsu ni resistance',\n", - " 'heavy explosion waka mama emotion',\n", - " 'yowai inu hodo yoku hoeru kara',\n", - " 'tawai mo nai koto de kizutsuke',\n", - " 'sarete kimochi',\n", - " 'light explosion motion',\n", - " '\"hankou\" do \"shuchou\" wo hakichigaete',\n", - " 'ru hou wa, raku de ii yo ne',\n", - " 'itsumade no mama de iru no?',\n", - " 'heavy explosion waka mama emotion',\n", - " 'mata kyou mo doukasen ni hi wo tsuke',\n", - " 'yamikumo ni',\n", - " 'sarete kimochi',\n", - " 'light explosion motion',\n", - " 'kako no itami wo hikizuranai de',\n", - " 'bakuhatsu suru sono de',\n", - " 'kesenai honoo tobikoero!',\n", - " 'friday night bakasawagi no',\n", - " 'shime wa kimatte takushii',\n", - " 'itsudatte soko wa munashiku',\n", - " 'kaichou na hashiri wa tada',\n", - " 'yomi to yami no boodaa o hiyakasu yo',\n", - " 'farewell alcohol river',\n", - " 'nagasarete tadori tsuku sabaku no na wa mr. bed',\n", - " 'farewell alcohol river',\n", - " 'ashita to iu mon wa hiraita',\n", - " 'saturday afternoon oto no nai',\n", - " 'shizumatta kakuu no gogo',\n", - " 'nande kioku wa togireru no ka?',\n", - " 'koko wa genjitsu na no ka?',\n", - " 'muda ni isogu',\n", - " 'koukai no tame ni aru yuugure get up!',\n", - " 'farewell alcohol river',\n", - " 'furikaetta nazo no raihousha no na wa blue devil',\n", - " 'farewell alcohol river',\n", - " 'ashita ni tada nigekomeba ii',\n", - " 'farewell alcohol river',\n", - " 'samayoeru hakobune o tobiorita yuusha yo',\n", - " 'farewell alcohol river',\n", - " 'saa, te o futte daichi o hashire! hashire!',\n", - " 'farewell, farewell, farewell',\n", - " 'say farewell to it!',\n", - " 'farewell alcohol river',\n", - " 'farewell alcohol river',\n", - " 'mayonaka ni nakinagara doa tataku my friend',\n", - " 'daijoubu namida tomaru made matteru',\n", - " 'your broken heart',\n", - " 'atsui hmm milk tea',\n", - " 'sameteyuku koi ga mata hitotsu kieteshimau yo',\n", - " 'believe in love',\n", - " 'kitto daremo ga kanashimi no yoru wo kakaeteru',\n", - " \"(dakedo don't stop)\",\n", - " 'believe in love',\n", - " 'yoru wa kanarazu atarashii asa wo tsuretekuru',\n", - " '(ah through the night)',\n", - " 'arifureta kotoba ja iyasenai ne',\n", - " 'my friend',\n", - " 'ano toki wa anata ga sasaetekureta yo',\n", - " 'my broken heart',\n", - " 'machi wa um haru no hikari ga odoru',\n", - " 'itsuka omoide ni kawatteku yo',\n", - " 'believe in love',\n", - " 'kitto daremo ga kanashimi no yoru wo norikoete',\n", - " \"(dakara don't stop)\",\n", - " 'believe in love',\n", - " 'namida no kazu dake kirei ni nareru to shinjiteru',\n", - " '(ah thorough the night)',\n", - " 'nando yue ni yaburetara onna noko wa honto ni tsuyoku naru no ?',\n", - " 'believe in love',\n", - " 'kitto daremo ga kanashimi no yoru wo kakaeteru',\n", - " \"(dakedo don't stop)\",\n", - " 'believe in love',\n", - " 'yoru wa kanarazu atarashii asa wo tsuretekuru',\n", - " \"(dakara don't stop)\",\n", - " 'believe in love',\n", - " 'namida no kazu dake tsuyoku nareru to shinjitai',\n", - " '(ah thorugh the night together)',\n", - " 'girl kimi no sono manazashi wa oh',\n", - " 'hey girl kmgeki teki de iki sae mo deki nai',\n", - " 'fureru tabi stimulus so dangerous',\n", - " 'ugokidasu chemistry',\n", - " 'curious so serious',\n", - " 'mm nukedase nai tonight',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'wakidasu kurai',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'karada kakenuke',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'boku o kontormru',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'kimi wa adrenaline eh',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'wakidasu kurai',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'karada kakenuke',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'boku o kontormru',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'kimi wa adrenaline eh',\n", - " 'oh haritsume ta kinchm kan ga feelin? right',\n", - " 'no no risei dake de rikai nanka deki nai',\n", - " 'fureru tabi stimulus so dangerous',\n", - " 'takanaru my heart’ s on fire',\n", - " 'curious so serious',\n", - " 'mm tomerare nai tonight',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'wakidasu kurai',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'karada kakenuke',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'boku o kontormru',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'kimi wa adrenaline eh',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'wakidasu kurai',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'karada kakenuke',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'boku o kontormru',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'kimi wa adrenaline eh',\n", - " 'onurupamutanshingwashiganuruponene negasumutaoru mune kogashi te',\n", - " 'taurutemada tarugigachi kizuke ba adrenaline',\n", - " 'kore ja tari nai ima ga chance kimi no lips',\n", - " 'sumugigoshipuchianunnemamingoru kugenemamechonbuingoru',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'wakidasu kurai',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'karada kakenuke',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'boku o kontormru',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'kimi wa adrenaline eh',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'wakidasu kurai',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'karada kakenuke',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'boku o kontormru',\n", - " 'you’ re like adrenaline adrenaline',\n", - " 'kimi wa adrenaline eh',\n", - " '(thunder) hey girl',\n", - " \"you're my sunshine\",\n", - " 'and my little princess',\n", - " 'and i wish i…',\n", - " 'i wish that i could be with you',\n", - " 'forever',\n", - " '(g.o) neoneun naui sugar (sugar)',\n", - " 'naman balaboneun geol',\n", - " 'pretty baby my girl (neoneun naui ma love)',\n", - " 'naemam neodo aljanha neowa naha na janha',\n", - " 'naemam heundeuneungeol',\n", - " 'you know i (i love you)',\n", - " 'you and i (i need you)',\n", - " '(seungho) ijeseoya nege gobaeg hal kkeoya',\n", - " 'you know i (i love you)',\n", - " 'you and i (i need you)',\n", - " '(thunder) niga nae eokkaee gidael suissge',\n", - " 'when i fall in love, love oh baby love, love',\n", - " '(seungho) nan neoleul johahandan malya',\n", - " 'when i fall in love, love so many love, love',\n", - " '(seungho) nan nisalangi pilyohae nuga mwo laedoi (say i love you girl)',\n", - " '(joon) naneun neoui sweety (sweety)',\n", - " 'naegen neomu yeppeun neo (oh yeah)',\n", - " 'ojig neoman boyeo (neoneun naui ma love)',\n", - " '(g.o) jigeum naege dagawa nal anwajwo niga neomu johaseo naegen',\n", - " 'neomu sojung hangeol',\n", - " '(mir) oh listen to my boo uh-uh',\n", - " 'fall in love baby',\n", - " '1015',\n", - " 'iji moshal geuttaeui sojunghan naleul gieoghae',\n", - " \"namanui you're my\",\n", - " 'negaisseo haengboghae geujeo useumi meomchujil anha',\n", - " 'neoui pyeonji hanae usgoissneun naleulbwa',\n", - " 'eonje seulpeossna nunmul ttug geuchyeo now',\n", - " 'naneun saengaghae bammada sinkke gidohae you',\n", - " 'pig that is soaked in soup of crime',\n", - " 'is it a pain of the children whom you murdered',\n", - " 'hate yourself',\n", - " 'in the maze without an end',\n", - " 'why do you still breathe?',\n", - " 'gareki no shita de shinjitsu ga notauchimawaru e wa',\n", - " 'naniyorimo fukai',\n", - " 'kodoku zouo shitto fuan',\n", - " 'kyomu ni saita muhyoujou naniyorimo omoi',\n", - " 'sanjou oou fujouri ni omoeta warau aozora',\n", - " 'in the maze without an end',\n", - " 'ayamachi ni obore',\n", - " 'in the maze without an end',\n", - " 'why do you still breathe?',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'yeah',\n", - " 'in the bottom of the dark dead sea',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'yeah',\n", - " 'tsugunai tsuzuke and die',\n", - " 'pig is that soaked in soup of crime',\n", - " 'in the maze without an end,',\n", - " 'ayamachi ni obore',\n", - " 'in the maze without an end,',\n", - " 'why do you still breathe?',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'yeah',\n", - " 'in the bottom of the dark dead sea',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'yeah',\n", - " 'aijou mo shiranu kodoku na parade',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'yeah',\n", - " 'in the bottom of the dark dead sea',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'sorrow made you,',\n", - " 'yeah',\n", - " 'tsugunai tsuzuke and die',\n", - " 'sorrow made you',\n", - " 'in the maze without an end...',\n", - " 'why do you still breathe?',\n", - " 'chu chu rocketto, nezumi o tasukero',\n", - " 'chu chu rocketto, neko wa kowai',\n", - " 'chu chu rocket, we gotta save the mice, baby',\n", - " \"chu chu rocket, the cat's a scary guy\",\n", - " 'chu chu rocketto, nezumi o tasukerou',\n", - " 'chu chu rocketto, neko wa kowai',\n", - " 'chu chu rocketto, rocket wa su-go-i!',\n", - " '(rocket wa su-go-i)',\n", - " 'chu chu rocket!',\n", - " 'chu chu rocket!',\n", - " 'chu chu rocket!',\n", - " 'on dreamcast!',\n", - " 'chu chu rocketto, nezumi o tasukero',\n", - " 'chu chu rocketto, neko wa kowai',\n", - " 'chu chu rocketto, rocket wa su-go-i!',\n", - " '(dreamcast!)',\n", - " 'chu chu rocketto, rocket wa su-go-i!',\n", - " '(tsubabababaa.) (dreamcast!)',\n", - " 'chu chu rocketto, rocket wa su-go-i!',\n", - " '(dreamcast!)',\n", - " 'chu chu rocketto, rocket wa su-go-i!',\n", - " 'tsubababaaaa!',\n", - " 'irony my honey chotto matte kure! ima kara kuru no!? iya to ienai',\n", - " 'quietly evenly furikaeba konpa no take out temanekishiteru',\n", - " 'suddenly i\\'m sorry \"shigoto ni natta\" keredo koneko-chan wa dada koneru',\n", - " 'stop! make up! hurry up! umaku gomakashi kaeraseta kedo kiss sae shitenai',\n", - " 'toriaezu heya miwatasushite korekara ga jikan to no shoubu',\n", - " 'toire no kami inoru na yo?! purikura haru na yo?!',\n", - " 'nagai kami mo ochitenai shi kousui no nioi mo keshita shi',\n", - " \"donna mondai! it's ok! ore wa kanzen hanzai sa!\",\n", - " 'tsumari... kore wa... seibutsugakuteki... osu no seiriteki koudou de...',\n", - " \"don't you know? understand? yappari kore jya iiwake ni naranai?\",\n", - " 'don\\'t worry take it easy \"okaerinasai\" shouko mo inmetsu konseki mo nai',\n", - " 'the lip stick oh! boo! shit! kanojo njanai?! megami no sabaki wa hanpa jya nai',\n", - " 'arittake no seii to uso wo teinei ni umaku narabete',\n", - " 'tama ni tsuyosa misete hiraikinaosscha dame',\n", - " 'kuchikazu ga oosugita ka na? subete mitooshi no kao de',\n", - " 'donna mondai mo kaiketsu!? kimi wa meitantei ka?!',\n", - " 'masaka... kore ga... idenshigakuteki osu no dairokkanteki chotsukan?!',\n", - " \"unbelieve. i don't know. toki sude ni osokushi nakiotoshi mo kikanai?\",\n", - " 'gomakashiteru wake jyanakute kono bashinogi nanka jyanakute',\n", - " 'kigentori jyanakute ichigen dake kiite?',\n", - " 'herikutsu bakari da keredo nanpa natoko mo aru kedo',\n", - " 'ketsukyoku yappari totemo kimi ga itoshiin da yo',\n", - " 'kaeru basho wa kimi dake dakara sonna ni musutto okoranai de',\n", - " 'tama ni yosomi suru kurai nara otoko da shi chotto kurai ii jyanai?',\n", - " \"don't you know? understand? seibutsugakuteki... osu no seiriteki koudou de...\",\n", - " 'i love you. please believe! yurushite kudasai mada ato nikai kurai',\n", - " 'shaan',\n", - " 'tanha dil',\n", - " 'bhool ja',\n", - " 'in asoon se kisko kya hua hasil',\n", - " 'mana kehna hai asan',\n", - " 'nibana hai mushkil',\n", - " 'phir bhi ye yaar mere',\n", - " 'sun le mere inthejan',\n", - " 'bhool ja jo hua use',\n", - " 'bhool ja hai kasam tujhe',\n", - " 'muskura khud ko yun',\n", - " 'na de tu saza',\n", - " 'un yadon ko tu bhool ja',\n", - " 'woh to nahi tha tere wafon ke kabil',\n", - " 'jane kya sochkar tune de',\n", - " 'diya apna dil',\n", - " 'is bar dil ka souda',\n", - " 'karna na yun bewajan',\n", - " 'bhool ja jo hua use',\n", - " 'bhool ja hai kasam tujhe',\n", - " 'muskura khud ko yun',\n", - " 'na de tu saza',\n", - " 'un yadon ko tu bhool ja',\n", - " 'teri zindagi teri hai',\n", - " 'kisiki amanat nahi',\n", - " 'jab chahe tod de',\n", - " 'ye kisiki imarat nahi',\n", - " 'is bar dil ka sauda',\n", - " 'karna na yun bewaja',\n", - " 'bhool ja jo hua use',\n", - " 'bhool ja hai kasam tujhe',\n", - " 'muskura khud ko yun',\n", - " 'na de tu saza',\n", - " 'un yado ko tu bhool ja',\n", - " 'jo use bhool ja hai kasam tujhe',\n", - " 'muskura khud ko yun',\n", - " 'nade tu saza',\n", - " 'un yado ko tu bhool ja',\n", - " 'na na na nana bhool ja',\n", - " 'na na na nana muskura',\n", - " 'khud ko yun na de tu saza',\n", - " 'un yado ko tu bhool ja',\n", - " '(kvish mispar sesh lebaqa amoos meh...)',\n", - " 'ma zeh?',\n", - " '(hamashber bakoalitzia)',\n", - " '(eh, aiwa)',\n", - " '(aerobi, pilaties)',\n", - " 'yes!',\n", - " 'gal! shtem esreh baliylah! techabeh et harash hazeh!',\n", - " 'aval lama? ze mizrahit!',\n", - " 'lo meanyen oti! techabeh et zeh!',\n", - " 'lo rotze!',\n", - " 'what?',\n", - " 'oh my god!',\n", - " 'oh my god!',\n", - " 'shukraan',\n", - " \"let's drop this\",\n", - " 'are you ready for the -',\n", - " 'riot',\n", - " 'abba, abba!',\n", - " 'shum mizrahit lo teiyeh po!',\n", - " 'hey neomu areumdawoyo oh seksihan mommae',\n", - " 'gakkai wa jwoyo ppeonhan neukdae nomdeuri bolla',\n", - " 'hey jom deo gakkai wayo dareun maeumeun eopseoyo',\n", - " 'saramdeurui nunbit ppeonhan neukdae nomdeureun gara',\n", - " 'neoneun gwiyom gwiyomhae chapssal gateun bojogae',\n", - " 'geunde wae momeun ireohge areumdaun geonde',\n", - " 'neoui nunbicceun pado gata hwipsseullyeo beoril geot gata',\n", - " 'na eotteohge jeongmal michigesseo',\n", - " 'hey girl jjalpeun chimaneun ipji marayo',\n", - " 'neomu seksihae naega sumi makhil geot gata',\n", - " 'oh baby girl you know i want it to',\n", - " 'unmyeongindeushae neon jeongmal wanbyeokhae',\n", - " 'you are my lollipop girl',\n", - " 'neol bomyeon michil geot gata',\n", - " 'you make me crazy',\n", - " 'you are my lollipop candy',\n", - " 'dalkomhan neoui ipsureun',\n", - " 'make me crazy',\n", - " 'neon lolli lolli lollipop oh',\n", - " 'naege naege dagawa',\n", - " 'jam mot deulge haejullae',\n", - " 'oh baby crazy',\n", - " 'neon lolli lolli lollipop oh',\n", - " 'naege naege dagawa',\n", - " 'eoseo ip majchwojullae',\n", - " 'oh lady i’m crazy',\n", - " 'you are my lollipop',\n", - " 'you are my lollipop neon naui lollipop',\n", - " 'you are my lollipop',\n", - " 'you are my lollipop neon naui lollipop',\n", - " 'dareun nara saramdo ara',\n", - " 'neoui bodyman bomyeon dalla',\n", - " 'ppeonhan neukdaedeurui nunbit',\n", - " 'neoui momeun segye yukgam dadeul ppeokgam',\n", - " 'wow hey eodil neomboni',\n", - " 'ei namui tteogini naega chim balla dwosseo',\n", - " 'neo gogaereul dollyeo ne tteogeul chajara bye bye',\n", - " 'hey girl geureon nuneuro usjin marayo',\n", - " 'dareun namjadeulkkaji da michiljido molla',\n", - " 'oh baby girl you know i want it to',\n", - " 'michingeot gata neon jeongmal wanbyeokhae',\n", - " 'you are my lollipop girl',\n", - " 'neol bomyeon michil geot gata you make me crazy',\n", - " 'you are my lollipop candy',\n", - " 'dalkomhan neoui ipsureun make me crazy',\n", - " 'uh uh uh uh uh uh uh uh',\n", - " 'i know you want me',\n", - " 'oh let me show you all',\n", - " 'uh uh uh uh uh uh uh uh',\n", - " 'oneul bam naege neoreul deo boyeojwo',\n", - " 'oh tj come on yeah',\n", - " 'i like lollipop ok leggo!',\n", - " 'neoneun gwiyomgwiyomhae chapssal gateun bojogae',\n", - " 'soge ppajil geot gata jeongmal na michil geot gata',\n", - " 'neoneun siwonsiwonhae milgo danggijin anhne',\n", - " 'satang gateun moksori naegeman soksagyeojwo',\n", - " 'you are my lollipop',\n", - " 'you are my lollipop neon naui lollipop',\n", - " 'you are my lollipop',\n", - " 'you are my lollipop neon naui lollipop',\n", - " 'uyeonhi yaegil deu-reosseo (jal chinae-neunji)',\n", - " 'jal chinae-neun geot kata na',\n", - " 'dahaengira saengga-khae haengbo-khae boyeo nan',\n", - " 'ajik himdeul jurara-nneunde',\n", - " 'jo-geum na sseul-sseurhan mame (u-urhan mame)',\n", - " 'da chinan giyeo-geul kyesok hemae-ida',\n", - " 'bam gipi chwiihae kal-surok',\n", - " 'kwaehnshiri jo-geum na seulpeojine',\n", - " 'ni-ga bogo shipeojimyeon (so go-od bye go-od bye)',\n", - " 'ni-ga deo keuriwojimyeon',\n", - " 'meong-hani nuwo meong-hani nuwo',\n", - " 'kkeunnae jamdeul-ji motha-go',\n", - " 'ni-ga bogo shipeojyeodo (so go-od bye go-od bye)',\n", - " 'ni-ga deo saenggannado',\n", - " 'naneun gwaehn-chanha naneun gwaehn-chanha naneun gwaehn-chanha',\n", - " 'ni-ga haengbokhadamyeon nan',\n", - " 'keunyang bung tteoi-nneun gibuniya',\n", - " 'kudi kyeolloneul naeril pilyo-ga eom-neun munjeya',\n", - " 'jinanbam kkumcheoreom kkaeyeonamyeon modu heu-teojyeo',\n", - " 'da-gakaryeo hamyeon neon jakku meo-reojyeo waeh neon jakku meo-reojyeo',\n", - " 'neowah hamkkeyeosseul ttae neol tteonabonaegi jeone',\n", - " 'on himeul dahae neol sarang-haetkie',\n", - " 'huhwehneun eom-nne neol wiihan han sarameun nara-go mideo-nneunde',\n", - " 'keuge aniyeo-nna bwah',\n", - " 'ni-ga bogo shipeojimyeon (so go-od bye go-od bye)',\n", - " 'ni-ga deo keuriwojimyeon',\n", - " 'meong-hani nuwo meong-hani nuwo',\n", - " 'kkeunnae jamdeul-ji motha-go',\n", - " 'ni-ga bogo shipeojyeodo so go-od bye go-od bye',\n", - " 'ni-ga deo saenggannado',\n", - " 'naneun gwaehn-chanha naneun gwaehn-chanha naneun gwaehn-chanha',\n", - " 'ni-ga haengbokhadamyeon nan',\n", - " 'neol baraedajudeon gil neowah hamkke mashideon geopi',\n", - " 'hamkke ilgdeon chaek kachi bodeon deurama',\n", - " 'ireon modeun geot-deu-ri cham keurib-guna',\n", - " 'neol baraedajudeon gil neowah hamkke mashideon geopi',\n", - " 'hamkke ilgdeon chaek kachi bodeon deurama',\n", - " 'ireon modeun geot-deu-ri cham keurib-guna',\n", - " 'ni-ga bogo shipeojyeodo ni-ga deo saenggannado',\n", - " 'naneun gwaehn-chanha naneun gwaehn-chanha naneun gwaehn-chanha',\n", - " 'ni-ga haengbokhadamyeon nan',\n", - " 'hangul',\n", - " '난 너의 곁에서 멈춰서 기다릴게',\n", - " '언제나 머물러 쉴 수 있게',\n", - " '어떤 말로도 어떤 누구도',\n", - " '널 위로 할 수 없을 때',\n", - " '내게 널 기대어',\n", - " 'i can feel you anywhere',\n", - " 'i can feel you anywhen',\n", - " '지친 너의 마음을',\n", - " '꼭 안아줄게',\n", - " '시린 날들 그 속엔',\n", - " '반짝이는 별 하나',\n", - " '니 곁에 나 내 곁에 너',\n", - " '조금 멀어지면 서둘러 다가갈게',\n", - " '너의 손 닿을 수 있는 곳에',\n", - " '모진 바람에 모진 시련에',\n", - " '너 견뎌내기 힘들 때',\n", - " '내게 널 기대어',\n", - " 'i can feel you anywhere',\n", - " 'i can feel you anywhen',\n", - " '지친 너의 마음을',\n", - " '꼭 안아줄게',\n", - " '시린 날들 그 속엔',\n", - " '반짝이는 별 하나',\n", - " '니 곁에 나 내 곁에 너',\n", - " '두 번 울지 않도록',\n", - " '나 숨처럼 널 지킬게',\n", - " '내가 지쳐도 언제까지나 이렇게',\n", - " '니 곁에 있을게',\n", - " 'i can feel you anywhere',\n", - " 'i can feel you anywhen',\n", - " '다친 너의 상처를',\n", - " '꼭 감싸줄게',\n", - " '함께 있는 시간엔',\n", - " '아픔 느낄 수 없게',\n", - " '니 곁에 나 내 곁에 너',\n", - " 'with you',\n", - " 'romanization',\n", - " 'nan neoui gyeoteseo meomchwoseo gidarilge',\n", - " 'eonjena meomulleo swil su issge',\n", - " 'eotteon mallodo eotteon nugudo',\n", - " 'neol wiro hal su eopseul ttae',\n", - " 'naege neol gidaeeo',\n", - " 'i can feel you anywhere',\n", - " 'i can feel you anywhen',\n", - " 'jichin neoui maeumeul',\n", - " 'kkok anajulge',\n", - " 'sirin naldeul geu sogen',\n", - " 'banjjagineun byeol hana',\n", - " 'ni gyeote na nae gyeote neo',\n", - " 'jogeum meoreojimyeon seodulleo dagagalge',\n", - " 'neoui son daheul su issneun gose',\n", - " 'mojin barame mojin siryeone',\n", - " 'neo gyeondyeonaegi himdeul ttae',\n", - " 'naege neol gidaeeo',\n", - " 'i can feel you anywhere',\n", - " 'i can feel you anywhen',\n", - " 'jichin neoui maeumeul',\n", - " 'kkok anajulge',\n", - " 'sirin naldeul geu sogen',\n", - " 'banjjagineun byeol hana',\n", - " 'ni gyeote na nae gyeote neo',\n", - " 'du beon ulji anhdorok',\n", - " 'na sumcheoreom neol jikilge',\n", - " 'naega jichyeodo eonjekkajina ireohge',\n", - " 'ni gyeote isseulge',\n", - " 'i can feel you anywhere',\n", - " 'i can feel you anywhen',\n", - " 'dachin neoui sangcheoreul',\n", - " 'kkok gamssajulge',\n", - " 'hamkke issneun siganen',\n", - " 'apeum neukkil su eopsge',\n", - " 'ni gyeote na nae gyeote neo',\n", - " 'with you',\n", - " 'english',\n", - " 'i’ll stay by your side and wait',\n", - " 'so you can always rest',\n", - " 'when no words and no one else',\n", - " 'can comfort you',\n", - " 'lean on me',\n", - " 'i can feel you anywhere',\n", - " 'i can feel you anywhere',\n", - " 'your exhausted heart',\n", - " 'i’ll embrace it',\n", - " 'in the cold days',\n", - " 'there is one twinkling star',\n", - " 'it’s me, who is by your side',\n", - " 'it’s you, who is by my side',\n", - " 'if we get a little far apart, i’ll quickly go to you',\n", - " 'to a place where you can reach',\n", - " 'when the strong winds and hardships',\n", - " 'make it hard for you to endure',\n", - " 'lean on me',\n", - " 'i can feel you anywhere',\n", - " 'i can feel you anywhere',\n", - " 'your exhausted heart',\n", - " 'i’ll embrace it',\n", - " 'in the cold days',\n", - " 'there is one twinkling star',\n", - " 'it’s me, who is by your side',\n", - " 'it’s you, who is by my side',\n", - " 'so you won’t ever cry again',\n", - " 'i’ll protect you like you’re my breath',\n", - " 'even when i’m tired, i’ll always',\n", - " 'be by your side',\n", - " 'i can feel you anywhere',\n", - " 'i can feel you anywhere',\n", - " 'all of your scars',\n", - " 'i’ll embrace them',\n", - " 'so when we’re together',\n", - " 'you won’t feel pain',\n", - " 'it’s me, who is by your side',\n", - " 'it’s you, who is by my side',\n", - " 'with you',\n", - " 'yeah, yeah, love is pain, love is pain',\n", - " \"love is over, love is over, that, that, that's it\",\n", - " 'o-o-o-o-over, love love is pain, pain',\n", - " 'o-o-o-o-over, love, break it',\n", - " 'neon jeongmal mystery, mystery, mystery, mystery',\n", - " ...]},\n", - " 'data': ['nee, itsuka kizuku? tsumetai boku no yubi ga kami ni fureta',\n", - " 'koto',\n", - " 'kasuka na omoi ga mune o uchi setsunakute ugokenai',\n", - " \"gin'iro no ito o nagasu youni toukai suru eien ni\",\n", - " 'aa anata no koe mo nioi mo mou todokanai',\n", - " 'boku no subete wa soko ni aru',\n", - " 'ate no nai omoi wa itsumo mizu ni nagasare yuku saki mo miezu',\n", - " 'tadai hateru shikanai kakikesare...',\n", - " 'nee, boku no koe ga kikoeru? ushirosugata yubi o nobashite mo',\n", - " 'aozameta kono yoru ame oto mimi o uchi ugokenai',\n", - " \"gin'iro no oto o sasou youni yami o nukete dokomademo\",\n", - " 'aa anata no soba ni iru no ni ugatareta shisen',\n", - " 'boku no subete wa soko ni aru',\n", - " 'hanabira no kobune kogidasu yami e mi o nagete chiri-yuku',\n", - " 'sugata',\n", - " 'kageru tsuki no sakin to kiete kizunde...',\n", - " 'i drowned and died to the lake. you are like your sadness',\n", - " 'is greater than anything and cast skin',\n", - " 'my soul is not in sight of you. i drift. i am transparent',\n", - " 'i still love you. but i am sleeping in the bottom of the lake',\n", - " 'aa dokomade yukeba ii? ushinatta kioku',\n", - " 'boku no subete wa soko ni aru',\n", - " 'mai ochiru mizu no hate anata no karada dakishimerarezu',\n", - " \"gin'iro no ato o nazoru youni\",\n", - " 'sinks deeply...',\n", - " 'drifts and is deep...',\n", - " 'to deeper place...',\n", - " 'take my heart from me suck me all',\n", - " 'dagawa unbid dare bichin hundullin ne jagun menbal',\n", - " 'sumjugin ne weroumul kewo gamanhi ibul machune',\n", - " 'jomolli unhasu sairul todonun noui irum nal bullojun',\n", - " 'noege gamsahe ne irumul gajyodo joha',\n", - " 'yes eat my name',\n", - " 'ijen duryobji anha',\n", - " 'hangsang yogi issultheni',\n", - " 'noui modun gol nege mathgilge',\n", - " 'gunyang kumin god gatha mwonga jalmod doen gol ara',\n", - " 'hajiman da julge',\n", - " 'yes eat my name',\n", - " 'get away get away from me',\n", - " 'weroum guge naui shilche',\n", - " 'bulgirhan honransuroum charari nuo hwansanguro',\n", - " 'nal gadughi chewojugeni',\n", - " 'yes drink me all',\n", - " 'ijen duryobji anha',\n", - " 'hangsang yogi issultheni',\n", - " 'noui modungol nege mathgilge',\n", - " 'gunyang kumin god gatha mwonga jalmod doen gol ara',\n", - " 'hajiman da julge',\n", - " 'yes drink me all',\n", - " 'gogwihan jinshil umhomhan hyonshiri narul michige hego',\n", - " 'bulliji anun irumtawin gajyoga',\n", - " 'yes drink me all',\n", - " 'ne ane napunpiduldo yogi aphum sulphumduldo',\n", - " 'narul gajyogal sunun obso suchonmangeui aphum',\n", - " 'suchonoggeui uimiro ne anesoman jonjehalgoya',\n", - " 'take my name from me',\n", - " 'get away get away from me',\n", - " 'ate naku tadayou traffic jam',\n", - " 'machi wa muchitsujo sosogu ame wa acid rain',\n", - " 'atsu e no kobuseke mo naku',\n", - " 'mayou wa bokura wa yumemi teru electric ship',\n", - " 'itsu kuru ka shire nai akogare no toki',\n", - " 'kusuburu kanjou wa tada damatte matte rare nai',\n", - " 'miage ta nara yozora wo kirisai te kake noboru jet',\n", - " 'bokura wo michibiku',\n", - " 'sabitsui ta hane wa mada kuchihate cha i nai',\n", - " 'yatsu yori atsui hoe agaru tamashii',\n", - " 'saa mezamero next age',\n", - " 'musuu ni zoushoku suru trap',\n", - " 'hitotsu mi sure ba waraitobasa re tari',\n", - " 'mirai wa kasou teki kuukan e kekkyoku tashika na mono kono omoi dake sa',\n", - " 'nagameru bakari no moeagaru honoo',\n", - " 'bou ni furu chansu wo tada damatte matte rare nai',\n", - " 'miage ta nara yozora wo kirisai te kake noboru jet',\n", - " 'bokura wo michibiku',\n", - " 'shinjiru mama hashire kitto mada maniau',\n", - " 'haneagaru speed kesshite nogasa nai',\n", - " 'saa tobinore next age',\n", - " 'tsuuka shi tara bure tatte mi dashi teyarusa',\n", - " 'zero kara no jiyuu wo torikon da saikyou no monster',\n", - " 'maki agatta gouon ni magire te',\n", - " 'mou tobikoshi ta kodou ni awase te say 3 2 1 go !',\n", - " 'kimi ga miage ta nara takaku kake noboru ze',\n", - " 'bokura wa tabidatsu saa tobinore space age',\n", - " 'you virtual generation !',\n", - " 'namo... namo...anjaninandanaaya',\n", - " \"i bow, i bow again and again to anjani's son, hanuman\",\n", - " 'jaya seeyaa raama, jai jai hanumaan',\n", - " 'victory to sita and ram, victory to hanuman',\n", - " 'victory over the darkness of suffering...',\n", - " 'jaya bajrangbalee, baba hanuman',\n", - " 'victory to the one with the body of a thunderbolt',\n", - " 'my baba, hanuman',\n", - " 'sankata mochan kripaa nidhaan',\n", - " 'you are home of all grace',\n", - " 'destroy all my problems, calamities and sufferings',\n", - " 'jai jai jai hanuman gosaaee',\n", - " 'hail my lord hanuman',\n", - " 'kripaa karahu gurudeva kee naaee',\n", - " 'you are my guru, bestow your grace on me',\n", - " 'sankata mochan kripaa nidhaan',\n", - " 'you are the destroyer of suffering, the abode of grace',\n", - " 'laala langotta, laala nishaan',\n", - " 'you wear a red langotta and carry a red flag',\n", - " 'challa ki labh da phire',\n", - " 'challa ki labh da phire',\n", - " 'yaaron ohda ghar keda',\n", - " 'lokan ton puchda phire',\n", - " 'challa hansda phire',\n", - " 'challa rounda phire',\n", - " 'challa gali gali rulda phire',\n", - " 'challe tu sab da',\n", - " 'challe tera koi nahi',\n", - " 'challa gali gali rul da phire',\n", - " 'challa ki labh da phire',\n", - " 'challa ki labh da phire',\n", - " 'yaaron ohda ghar keda',\n", - " 'lokan ton puchda phire',\n", - " 'challa ki labh da phire',\n", - " 'rang satrangi de bulbula di boli',\n", - " 'dhoop de pairi chale, chhavan ni le doli',\n", - " 'rang satrangi rangi de, bulbula di di boli',\n", - " 'dhoop de pairi chale, chhavan ni le-le doli',\n", - " 'oye kaale kaale badalan ‘ch chand labh da',\n", - " 'goongiyan hawava diyaan waaja sun da',\n", - " 'yaaro aase-paase wasda ay yaar mera',\n", - " 'dikhda ni ohdiyaan khusbuaan sunghda',\n", - " 'o challa ki labh da phire',\n", - " 'challa ki labh da phire',\n", - " 'yaaron ohda ghar keda',\n", - " 'lokan ton puchda phire',\n", - " 'challa ki labh da phire',\n", - " 'naa visaal hoya kadi na judai hoi',\n", - " 'ishq de qaidi ki naa rihaai hoi',\n", - " 'lokon sufne ‘cho milne da wada usda',\n", - " 'saari saari raat na akh lagdi',\n", - " 'mere saa vi thode thode ghat aaunde',\n", - " 'meri nabz vi thodi ghat wajdi',\n", - " '(ooh) challa ki labh da phire',\n", - " 'challa ki labh da phire',\n", - " 'yaaron ohda ghar keda',\n", - " 'lokan ton puchda phire',\n", - " 'challa hansda phire',\n", - " 'challa rounda phire',\n", - " 'challa gali gali rulda phire',\n", - " 'challe tu sab da',\n", - " 'challe tera koi nahi',\n", - " 'challa gali gali rul da phire',\n", - " 'challa challa ki labh da phire',\n", - " 'challa ki labh da phire',\n", - " 'challa ki labh da phire',\n", - " 'you gonna be a my love',\n", - " 'you gonna be a my love',\n", - " 'naega neomu neomuna himdeul ttaemyeon',\n", - " 'eonjena nae yeopeseo ni eokkael billyeojwo',\n", - " 'neoman nae yeope isseumyeon geu eotteon geotdo nan',\n", - " 'duryeopji anha neon nal jikyeojuneun boy',\n", - " 'woo woo woo woo woo',\n", - " 'nal utge haejun han saram',\n", - " 'woo woo woo woo woo',\n", - " 'nal jikyeojul dan han saram',\n", - " 'ttaeron datugido hajiman',\n", - " 'geuraedo neoman isseojundamyeon alright',\n", - " 'i norael neowa',\n", - " 'you gonna be a my love',\n", - " 'ttan yeojawan dalleo',\n", - " 'niga museun sigyel channeunji',\n", - " 'eotteon chareul tago danideunji',\n", - " 'nan sanggwaneobseo',\n", - " 'dareun geon gwansim eobseo',\n", - " \"baby you're my love\",\n", - " 'ma ma love ma ma love',\n", - " 'love love',\n", - " '(rap)',\n", - " 'jigabeun gabyeowo tto nan ttubeogi',\n", - " 'jipjuinui jeonhwaneun harue du beonssik',\n", - " 'oji geunde jaju kkeunkiji nae poni',\n", - " 'chingudeureun malhae neon eonje sal geonya 4g',\n", - " 'ni chingudeureun geokjeonghae eomeonineun bandaehasyeo',\n", - " 'an bukkeureopgesseo moime naega hamkke gamyeon',\n", - " 'neoran yeojal mannagien ajik nae seupekdo cham',\n", - " 'hyeonsireul gamanhago dasi saenggakhaeboja',\n", - " 'woo woo woo woo woo malloneun bujokhan saram',\n", - " 'woo woo woo woo woo',\n", - " 'naemameul gajyeogan saram',\n", - " 'geu nugu do neo hanaman motae',\n", - " 'nal bichwojuneun jeo bichi doe jullae?',\n", - " 'ni yeope isseulge',\n", - " 'you gonna be a my love',\n", - " 'ttan yeojawan dalleo',\n", - " 'niga museun sigyel channeunji',\n", - " 'eotteon chareul tago danideunji',\n", - " 'nan sanggwaneobseo dareun geon gwansim eobseo',\n", - " \"baby you're my love\",\n", - " 'ma ma love ma ma love',\n", - " 'love love',\n", - " 'nawa hamkke idaeroman isseojwo',\n", - " 'naega gibuni an johado nal bomyeo useojwo',\n", - " 'neowa hamkkeramyeon geu eodirado gal su isseo',\n", - " \"i sungan idaero baby you're my love\",\n", - " 'you gonna be a my love',\n", - " 'you gonna be a my love',\n", - " 'na neo animyeon andwae nae modeungeol julge',\n", - " 'i love you baby',\n", - " 'nuguboda deo sojunghae neon naegen jeonbunikka',\n", - " 'gakkeumeun meolli isseodo',\n", - " 'geuraedo nae ireumeul bulleojwo',\n", - " \"baby you're my love\",\n", - " 'ma ma love',\n", - " 'ma ma love',\n", - " 'love love',\n", - " 'ahha chiknak chiknak chiknak',\n", - " 'ahha chiknak chiknak chiknak',\n", - " 'ahha chiknak chiknak chiknak',\n", - " 'ahha chiknak chiknak',\n", - " 'rhanja miya chhaddo yaari',\n", - " 'changi nahiho ishk bimari',\n", - " 'ishkna chhadde kuch bhi palle',\n", - " 'ho gayi tu balle balle',\n", - " 'ho jayegi balle balle',\n", - " 'chhadde bin matlab de ainve pangiya de vich painna',\n", - " 'shk de chakkar devich neeend gavaki lainna',\n", - " 'ho jave jo pyar to palle',\n", - " 'kuchh naioo rainna',\n", - " 'aankhiyaan ho jane char palle',\n", - " 'kuchh naioo rainna',\n", - " 'hase tere kho jane ne',\n", - " 'rone be be kalle kalle',\n", - " 'rone be be kalle kalle',\n", - " 'ho gayi teri balle balle',\n", - " 'ho jayegi balle balle',\n", - " 'do din hundi yaari magroo',\n", - " 'hasa hoonda hai',\n", - " 'kudia de layi pyar to khel',\n", - " 'tamasha hoonda hai',\n", - " 'duja mil jaye yaar to phir',\n", - " 'ae nahi puchh de',\n", - " 'bik jaye gharbar to phir',\n", - " 'ae nahi puchh de',\n", - " 'jaandi bari ke jaande ne',\n", - " 'oke sajna challe challe',\n", - " 'oke sajna challe challe',\n", - " 'ho gayi teri balle balle',\n", - " 'ho jayegi balle balle',\n", - " 'laid back and play the down and low d.o.p.e song',\n", - " \"we don't want no dj playin' cheap song\",\n", - " '(x2)',\n", - " 'motto unarasete keikai na suteppu',\n", - " 'pe-su kasane karada awase',\n", - " 'yoru no machi wo tobidashi',\n", - " 'dattsudattara odoridasu',\n", - " 'genkai nante iwazu (mada mada)',\n", - " 'keitai nante sutete (word up word up)',\n", - " 'oboreru made nonde notte tonde',\n", - " 'sugu neru yatsu da tte minna yonde',\n", - " 'pululululu hahha get hahha',\n", - " 'ochiteru tatte hajimannai',\n", - " \"kon'ya shuyaku wa anta kettei\",\n", - " '?zettei? jikan ni chotto asette',\n", - " 'shoot come on are anta wa dou?',\n", - " 'nonde nomarete (another one down)',\n", - " 'asahi deru mae ni mata okite',\n", - " 'gangan nonde (till the break of dawn)',\n", - " 'laid back and play the down and low d.o.p.e song',\n", - " 'koyoi furoa- wo terasu moonlit night',\n", - " 'setsunai uta wo ima mune no oku no oku ni',\n", - " 'hayaku hibikasete',\n", - " \"we don't want no dj playin' cheap song\",\n", - " 'itsumo yori te no konda feiku neiru',\n", - " 'asa ga kuru made ni wasurerarenai koi',\n", - " 'mitsukerareru kana',\n", - " 'need a little bit of moonlight zutto kono mama koko de',\n", - " 'gita- kakinarashi we dancing all night',\n", - " 'need a little bit of starlight',\n", - " 'zutto asa made itai ne ikeru toko made',\n", - " \"dandig it dig it i'm about to twist you'll\",\n", - " 'to them dig it to the dig it to beat yo',\n", - " 'totsuzen furidashita ame dorama kan de sae',\n", - " 'kizamu rizumu hazumu be-su',\n", - " 'tappu dansu sutanpu kurappu bounce 2 this',\n", - " 'bi-to bokushingu rock, rock 2 this',\n", - " 'saikou no shou kore wo teikyou',\n", - " 'tenshon agete subete nesshou',\n", - " 'tanoshimitai? kokkara ga honban',\n", - " 'kouhansen noru ka wa you soudan',\n", - " 'laid back and play the down and low d.o.p.e song',\n", - " 'unmei kana? mata mitsumeau futari',\n", - " 'hanarenai you ni atsui ai no uta wo motto kikasete yo',\n", - " \"we don't want no dj playin' cheap song\",\n", - " 'seijaku no yoru ni nukedasu futari',\n", - " 'subete yobisamasu ano mangetsu no you ni',\n", - " 'mune wo takanarase',\n", - " 'hey dj play my see saw l.o.v.e song',\n", - " \"see i know he's not like them ones i met before\",\n", - " 'mezameta asa kidzukeba issho',\n", - " 'aseri hitori nukedasu beddo',\n", - " 'pave to musalman pave hindu sikh ve',\n", - " 'sada ve rab jive ek sada dil ve',\n", - " 'apne aap nu tu vakhra kyun samjhe',\n", - " 'soch kade thande tu damak de naal',\n", - " 'banda ve lage mainu saff tu dil da',\n", - " 'ladaiyan kar ke vi ki tenu milna',\n", - " 'loki te paidiya nazar naal vende',\n", - " 'ona nu apne haal vich rehnde',\n", - " 'ja ve indian dasha mare, sanu vi tu inj na tade',\n", - " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", - " 'ja ve indian dasha mare, sanu vi tu inj na tade',\n", - " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", - " 'hoye garib hunde aapne nasib',\n", - " 'dil tu vada kar ban ja aamir',\n", - " 'loka nu vekh ke tu dil na nu sad',\n", - " 'aakra di aag vich hath na tu vad',\n", - " 'kava main ek gal tenu 100 100 war',\n", - " 'javani sadi jive ek sadi jaan',\n", - " 'jindagi has ke ve ral ke guzar',\n", - " 'ladaiyan chad ke ve kar tu pyar',\n", - " 'ja ve indian dasha mare, sanu vi tu inj na tade',\n", - " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", - " 'ja ve indian dasha mare, sanu vi tu inj na tade',\n", - " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", - " 'oye apne ve paira te kulariyan na mar',\n", - " 'soch samaj ke tu faisle bana',\n", - " 'izat ve kar nale izat kara',\n", - " 'thodi ji e zindagi ve enu na muka',\n", - " 'oye apne ve paira te kulariyan na mar',\n", - " 'soch samaj ke tu faisle bana',\n", - " 'izat ve kar nale izat kara',\n", - " 'thodi ji e zindagi ve enu na',\n", - " 'mukave ve indian dasha mare, sanu vi tu inj na tade',\n", - " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", - " 'ja ve indian dasha mare, sanu vi tu inj na tade',\n", - " 'ral mil reh ke vakah kut khushiyan da pi le ve',\n", - " 'izat karo te izat karayo',\n", - " 'te ik dujya naal pyar naal pesh aayo',\n", - " 'na cham senggin gon da molchonghe cham banduthe',\n", - " 'chaghago songshirhe yojamyon jarhejul duthe',\n", - " 'gunde no akkabutho moriman gullyodeji',\n", - " 'na jongdon andoeni gyesani dohago gobhedo mojara',\n", - " '(jigum myot shijyo tonggumshigan da dweganeyo iman jon)',\n", - " 'dabdabhan nima damen mwo halle',\n", - " '(irhosolgeyo onul jongmal julgowossoyo gabolgeyo)',\n", - " 'idero gunyang boneborille',\n", - " 'nollashina yosanghena mwol pena chominga aniltende',\n", - " 'gajandago gobge tarawa da hajanha we ire',\n", - " 'gobnashina segdarunga pog gana michina johultende',\n", - " 'irol gomyon we oja hena jongmal jemiobge noshine non',\n", - " 'no nal hanbon nubhyo boshiji jashinissum mwodun da',\n", - " 'mamdero dwegeji jigumkajin da',\n", - " 'namjan kog gurodora ganghan chog gwenchanhun chog',\n", - " 'chorahan okkewa bushirhan darinun hudulgoryo moth bwa',\n", - " '(ochom malsumdo jarhaseyo shigani doen jul mollajyo)',\n", - " 'namjal mannamyon yongiman nuro one more time',\n", - " '(baredajwoso gomawoyo to boebge goegil jal gaseyo)',\n", - " 'do giphun yegin daum gihoeye',\n", - " 'nollashina yosanghena mwol pena chominga aniltende',\n", - " 'gajandago gobge tarawa da hajanha we ire',\n", - " 'gobnashina segdarunga pog gana michina johultende',\n", - " 'irol gomyon we oja hena jongmal jemiobge noshine non',\n", - " 'walk in to the m.o.s hottest around incredible sound',\n", - " \"quakin' and vibratin' nemaumun coz of you\",\n", - " 'can you take a walk with me you can talk with me',\n", - " 'show me what you got niga wonhamyon',\n", - " 'or just speak to my hand and go away',\n", - " \"here is the harry winston's ring and earrings\",\n", - " 'to have the world but no one to share it with',\n", - " 'do step into my room (crib) i will make you wanna do',\n", - " 'you (it) just like a fire a alram',\n", - " 'but i never satisfy boy you have no fear coz ecstasy is near',\n", - " \"oh you surely won't forget it babe don't be afraid just let this love\",\n", - " \"rock 'n roll pain you're not a flame\",\n", - " 'i got the power of love',\n", - " \"it makes you rock i don't wanna get off\",\n", - " 'one more time tell me baby',\n", - " 'no more time i want you back turn around back',\n", - " \"i can not wait for you don't leave me back\",\n", - " \"now it doesn't matter what you doubt\",\n", - " 'oh my baby wanna be my love now',\n", - " 'hanayaka na machi ni irozuku kisetsu',\n", - " 'itsumo shiranu ma ni sugisatte',\n", - " 'jikan ryokou no tabiji ni oritatta basho wa',\n", - " 'haruka na toki no kanata',\n", - " 'mou dore kurai kimi to warattenai kana',\n", - " 'hanareba nare wa kyori dake janai',\n", - " 'kizukanai furi shiteru kedo asobikata o',\n", - " 'wasureteshimatta no sa',\n", - " 'passing by passing by real world',\n", - " 'hitomi tojireba hirogatteyuku',\n", - " 'passing by passing by sweet times',\n", - " 'amaku setsunai ashiato',\n", - " 'ne~ kimi mo onaji kimochi darou?',\n", - " 'running through without your help',\n", - " 'running through without your vibes',\n", - " 'soredemo ude o nobashite',\n", - " 'sasayaka na yume o bokura wa tadotteyuku',\n", - " 'passing by passing by real world',\n", - " 'awai honoo o tayasanu you',\n", - " 'passing by passing by sweet times',\n", - " 'kyou mo ashita e mukaou',\n", - " 'open wide',\n", - " 'one of them',\n", - " 'ki ni naridashiteru',\n", - " 'it struck one',\n", - " 'hontou ni nemui ne...',\n", - " 'owaru like the end',\n", - " 'of a story',\n", - " 'with the day',\n", - " 'close the door',\n", - " 'koko yori takai ishiki no naka',\n", - " 'kowarete susunde hajimaru',\n", - " 'television suna arashi kesarete',\n", - " 'sono ato wa jibun de acapella de utatteta',\n", - " 'feeling pains',\n", - " \"but it's still going well\",\n", - " 'no matter what',\n", - " 'no matter how',\n", - " 'no matter...',\n", - " 'if you like it or not',\n", - " 'where or when',\n", - " \"it doesn't matter\",\n", - " 'open wide, open wide',\n", - " \"it doesn't matter\",\n", - " 'open wide',\n", - " 'open wide chuucho sezu',\n", - " 'sugisaru hachou no naka',\n", - " 'sotto omoide no shashin',\n", - " 'fukai konya yume no peegi no youna',\n", - " 'kousai shiteru hikari no naka',\n", - " 'yubi wo kuwaete shitto shiteta yo ne...',\n", - " 'nakama de nanamai tarinai',\n", - " 'sonna toranpu ima da wasuretenai...',\n", - " 'samishii shikai futari de norikoete',\n", - " 'samishii hibiki jouzu ni norikonashi',\n", - " 'kagami ni utsuru namida sotto ki ga tsuite',\n", - " 'tadatada mitorete sonna midnight...',\n", - " 'hissori shiteite kokorobosokute...',\n", - " 'nazeka warui tte omottari',\n", - " 'kawatteiku no tte muzukashii koto da ne',\n", - " 'subete kono michi soba ni itakute',\n", - " 'nanka abite mabataku aida ni kieteshimaisou da ne',\n", - " \"i don't wanna say goodbye\",\n", - " 'yanda bakari no ame',\n", - " 'sora ga ochitekisouna tabi ni',\n", - " 'yuuhi minogashiteru',\n", - " 'tsugi wa hoshizora soshite tsukiakari',\n", - " 'mousugu hi ga noboru',\n", - " 'namida kakusenai',\n", - " 'kore ijou chikazukenai',\n", - " 'iki ga hageshiku areteru',\n", - " 'yoakegoro isshun ni ireru to',\n", - " 'omotte hon no isshun',\n", - " 'close to you, close to you',\n", - " 'no matter what',\n", - " 'no matter how',\n", - " 'no matter....',\n", - " 'if you like it or not',\n", - " 'chiisasna heya ga ookiku omoete',\n", - " 'anata ga tooi',\n", - " 'furi dashita ame ni nurete',\n", - " 'hoho kara kobore ta kimi no namida',\n", - " 'samishisa to itami no shirushi wo',\n", - " 'kokoro ni kizan de nai teirun da ne',\n", - " 'ima dake kawari ni boku ga akari ni narou',\n", - " 'kuraku te mienai michi mo terasu yo delight in your heart',\n", - " '* namida ga daka reru made naii te',\n", - " 'zenbu wasurete shimae baii',\n", - " 'dakishimeteitai wanna give my love',\n", - " 'kokoro ni hana wo...',\n", - " 'omoi no mama ni sake bouyo',\n", - " 'subete wo boku ni azukete',\n", - " 'nai taraii gonna make you happy',\n", - " 'sono omoi nagase baii...',\n", - " 'sayonara wo yozora ni na geyou',\n", - " 'only you can hurt me with love',\n", - " 'kuri dashi no hibi no naka de',\n", - " 'deatta daiji na koi dattan da ne',\n", - " 'shaga mikomi ugo kanai kimi ni',\n", - " 'boku ni wa itai nani ga dai kiru darou',\n", - " 'chiisana sono te wo boku ga tsutsumu kara',\n", - " 'hitomi wo nukuou hitori jyanai sa delight in your eyes',\n", - " 'namida ga dakieru made daite',\n", - " 'yoru ga owaru made soba niiyou',\n", - " 'boku ga kimi wo just i wanna be your cloth',\n", - " 'dakishimeru no sa...',\n", - " 'mirai wo mi nai you chika ouyo',\n", - " 'kotoba wo koeta tsuyosa de',\n", - " \"kono mama zutto you're my candy rain\",\n", - " 'kimi no koto o hanasanai sa...',\n", - " 'omoi de ni wakare o tsugeyou',\n", - " 'only you can hurt me with love',\n", - " '* repeat',\n", - " 'karanokokoro wo terasu mono wa nani?',\n", - " 'sakebi tsudzukeru hikari todoku made',\n", - " 'falling through the cracks',\n", - " 'kurayami e ochiteku',\n", - " 'anata no sono te wo zettai hanasanai',\n", - " 'tell me the story of your life',\n", - " 'mada michi no tochuu',\n", - " 'anata o watashi wa zettai akiramenai',\n", - " 'osaerarenai shoudou',\n", - " 'nanigenai hibi wa aijou',\n", - " 'natsukashii kaze ni furimukeba',\n", - " 'itsudemo anata no koe ga suru yo',\n", - " 'underdog wa wander around',\n", - " 'mawarimichi shitemo nigeru yori mashi yo',\n", - " 'jibun de jibun wo shinjirarenakucha',\n", - " 'dare wo shinjiru no?',\n", - " 'hikari ni sono te kazase',\n", - " 'shining through the clouds',\n", - " 'kurayami e ochiteku',\n", - " 'anata no sono te wo zettai hanasanai',\n", - " 'tell me what is on your mind',\n", - " 'hateshinai yume wo',\n", - " 'oikake bokura wa zettai akiramenai',\n", - " 'kotae no nai jinsei ni kujikesou ni naru kedo',\n", - " \"don't give it up! keep it up! turn it upside down!\",\n", - " 'kokoro wa tsunagatteru yo tatoe tooku hanaretemo',\n", - " 'tomo ni tomo ni ikiteyukou',\n", - " 'itsumo zenryoku shissou',\n", - " 'mezasu no wa ano choujou',\n", - " 'sagashitsuduketeru ibasho wa',\n", - " 'itsu demo anata wo matteiru yo',\n", - " 'our lives wa winding road',\n", - " 'yorimichi shitemo modoru yori mashi yo',\n", - " 'tatoe machigaetemo muda janai kara',\n", - " 'mayowazu ni susume',\n", - " 'sono te wo sora ni kazase',\n", - " 'falling through the cracks',\n", - " 'kurayami e ochiteku',\n", - " 'anata no sono te wo zettai hanasanai',\n", - " 'tell me the story of your life',\n", - " 'mada michi no tochuu',\n", - " 'anata wo watashi wa zettai akiramenai',\n", - " 'kotae no nai jinsei ni mayotte bakari dakedo',\n", - " \"don't give it up! keep it up! turn it upside down!\",\n", - " 'kokoro wa tsunagatteru yo tatoe tooku hanaretemo',\n", - " 'tomo ni tomo ni ikiteyukou',\n", - " 'hikari ni sono te kazase',\n", - " 'shining through the clouds',\n", - " 'kurayami e ochiteku',\n", - " 'anata no sono te o zettai hanasanai',\n", - " 'tell me what is on your mind',\n", - " 'hateshinai yume wo',\n", - " 'oikake bokura wa zettai akiramenai',\n", - " 'kotae no nai jinsei ni kujikesou ni naru kedo',\n", - " \"don't give it up! keep it up! turn it upside down!\",\n", - " 'kokoro wa tsunagatteru yo tatoe tooku hanaretemo',\n", - " 'tomo ni tomo ni ikiteyukou',\n", - " 'i’m burning down tonight',\n", - " 'ajik ne moksoriga deullyeo',\n", - " 'i’m burning down my girl',\n", - " 'jakku neoui misoga boyeo',\n", - " 'i’m burning down',\n", - " 'ildaneun bikyeojwo da chiwojwo',\n", - " 'nae maeum doryeonaeseo gajyeogabeorideonga',\n", - " 'deoneun mossalgesseo',\n", - " 'da bujireobseo jinannarui gieokdo',\n", - " 'naegeneun chueok anin keun gotonginikka',\n", - " 'geu nomui gotongdeuri nama',\n", - " 'naui haengbokdeureul jommeokjanha',\n", - " 'nega bwado nae sarangeun jom keosseotjanha',\n", - " 'dambaedo piji annneunde nae sogi ta deureoga',\n", - " 'i’m burning down tonight',\n", - " 'ajik ne moksoriga deullyeo',\n", - " 'i’m burning down my girl',\n", - " 'jakku neoui misoga boyeo',\n", - " '( jeongmal michigesseo)',\n", - " 'nuga nal jom dowajwo',\n", - " '( i’m burning down down)',\n", - " 'nega eomneun crazy night',\n", - " '( don’t let me down down)',\n", - " 'jebal nal jom kkeonaejwo',\n", - " '( i’m burning down down)',\n", - " 'jiok gateun crazy night',\n", - " 'i’m burning down down',\n", - " 'buseojin maeum maeum modu bultasseo wanjeon',\n", - " 'pyeini dwaebeorin na',\n", - " 'dwaebeoryeosseo pyeini',\n", - " 'jedaero meongneundageona useobon',\n", - " 'gieogi geoui eonjenji da asa gabeoryeosseo',\n", - " 'saraganeun geot ttawin naegeneun deoseobseo',\n", - " 'naega cheoreobseo?',\n", - " 'nan neohante nuni meoreosseo',\n", - " 'maldo andwae urin eoryeosseo',\n", - " 'maybe i’m crazy please don’t let me go',\n", - " 'i’m burning down tonight',\n", - " 'ajik ne moksoriga deullyeo',\n", - " 'i’m burning down my girl',\n", - " 'jakku neoui misoga boyeo',\n", - " '( jeongmal michigesseo)',\n", - " 'nuga nal jom dowajwo',\n", - " '( i’m burning down down)',\n", - " 'nega eomneun crazy night',\n", - " '( don’t let me down down)',\n", - " 'jebal nal jom kkeonaejwo',\n", - " '( i’m burning down down)',\n", - " 'jiok gateun crazy night',\n", - " 'jaetdeomiga dwaesseo nameun geotdeul',\n", - " 'moduda mojori taewo',\n", - " 'geureoke tto oetoriga dwaesseo nae maeum',\n", - " 'sarm geurae neomani mewo',\n", - " 'na ije modeun ge geobina',\n", - " 'sirida motae neomuna jeorin maeum',\n", - " 'jebal nal jom dowajwo birok',\n", - " 'geojitmarirado gwaenchanha',\n", - " 'baby i’m burning down',\n", - " 'i’m burning down tonight',\n", - " 'ajik ne moksoriga deullyeo',\n", - " 'i’m burning down my girl',\n", - " 'jakku neoui misoga boyeo',\n", - " 'i’m burning down',\n", - " 'dasi kkok doraorago',\n", - " 'yeogiseo kkeonaedallago',\n", - " 'deullini naui moksori',\n", - " 'i’m burning down',\n", - " \"baby you'll always be my love\",\n", - " 'eien wo chikaou',\n", - " 'we got real love',\n", - " 'now you are part of my life',\n", - " 'itsu demo futari de',\n", - " \"cause it's real love\",\n", - " 'yeah it is real love',\n", - " 'kuukou oriru to mou bessekai',\n", - " 'haresugi no blue sky ga uso mitai',\n", - " 'soko wa marude rakuen zenbu toropikaru',\n", - " 'atarashii kimochi ni naru',\n", - " 'kitto isshou ichido kiri no hanemu-n',\n", - " 'taiyou mo shukufuku',\n", - " 'kore kara wa futari tomo ni ikiteku',\n", - " 'kyou ga sono hajimari',\n", - " 'hey baby kocchi muite?',\n", - " 'bakappuru de ok nokosu kinen',\n", - " 'datte sanzan matte neri netta',\n", - " 'bikini datte kireru you ni natta',\n", - " 'nante hashaideru kimi to waratte',\n", - " 'sugoseru koto ga nani yori yorokobi de',\n", - " 'isshou mono no omoide',\n", - " 'tanoshimou toriaezu norinori de',\n", - " \"you'll always be my love\",\n", - " 'sunahama ni egakou',\n", - " 'we got sweet love',\n", - " 'now you are part of my life',\n", - " 'mirai wo mitsumete',\n", - " 'we got sweet love',\n", - " 'yeah we got sweet love',\n", - " 'so my love',\n", - " 'yuuhi ga shizundemo',\n", - " \"it's real love\",\n", - " 'so you can trust my love',\n", - " 'kore kara mo zutto',\n", - " \"cause it's real love\",\n", - " 'yeah it is real love',\n", - " 'after all the plans of this and that',\n", - " 'you gave me a ring then i became your wife',\n", - " 'yameru toki mo sukoyaka naru toki mo',\n", - " 'isshou issho ni kore kara zutto',\n", - " 'sou \"marude otogibanashi no naka de no koto\"',\n", - " 'nanka ja nakatta',\n", - " 'kono kimochi wa kawarazu onaji',\n", - " 'your the one for me the one and only',\n", - " 'see? may be fuzakeatte',\n", - " 'making love & yoru ni natte',\n", - " \"it ain't nothing like being big live wealthy\",\n", - " \"but i like the way you eat herb it's healthy\",\n", - " 'chiheisen shizumu yuuhi',\n", - " 'doko made mo tsudzuku manten no hoshi',\n", - " 'i ma ride with you tooi michinori mo',\n", - " \"futari de ikeba it'll be all great!!\",\n", - " \"baby you'll always be my love\",\n", - " 'amanogawa koete',\n", - " 'we got real love',\n", - " 'now you are part of my life',\n", - " 'shiawase no tabi e',\n", - " \"cause it's real love\",\n", - " 'yeah it is real love',\n", - " 'sitting here contemplating thoughts',\n", - " 'summer breath gently sweeping my face',\n", - " 'the love is in the air...',\n", - " \"itsumo wagamama bakka komarasen' na\",\n", - " \"maikai gaman shiten' da\",\n", - " 'tama nya ore no itteru koto mo kike tte iu ka',\n", - " 'ore ga iru arigatami wo shire!!',\n", - " 'damn boy sure you got the nerve to say it?',\n", - " 'taishite koudouryoku mo nai kuse nani?',\n", - " \"imasara isogashibutte n' ja ne-\",\n", - " \"ttsu-ka maji isogashii n' da fuzakenna\",\n", - " 'mou rikon da!! ...nante ne?',\n", - " 'oh my love',\n", - " 'futari no kinenbi',\n", - " 'we got sweet love',\n", - " 'now you are part of my life',\n", - " 'dotabata no hanemu-n demo',\n", - " 'sweet love',\n", - " 'yeah we got sweet love',\n", - " 'so my love',\n", - " 'eien wo chikaou',\n", - " \"cause it's real love\",\n", - " 'so you can trust my love',\n", - " 'itsu demo futari de',\n", - " \"cause it's real love\",\n", - " 'yeah it is real love',\n", - " 'check baby check baby 1 2 3',\n", - " 'futoshita shunkan me ga au tabi',\n", - " 'do you feel what i feel? kore tashika ni',\n", - " 'u & me are may be meant to be',\n", - " 'now check baby check baby 1 2 3',\n", - " 'atarashii jinsei no hajimari',\n", - " 'do you feel what i feel? sou tashika ni',\n", - " 'u & me are so meant to be',\n", - " 'hey! my teddy shirikomi shitenai de',\n", - " 'hey! my pony! okoru tokoro desho?',\n", - " 'chai yai yai yai yai',\n", - " 'you are in trouble!',\n", - " 'chai yai yai yai yai',\n", - " 'i am trouble!',\n", - " 'chai yai yai yai yai yai yai yai',\n", - " 'chai yai yai yai ya!',\n", - " 'amazora no go tou sei ni manzoku shita mama',\n", - " 'donna ni natteku',\n", - " \"sorede yorokobi kanjiteta n'dayo ne\",\n", - " 'hey! my teddy! ano hi no koto wo',\n", - " 'hey! my pony! omoidashiteru no',\n", - " 'chai yai yai yai yai',\n", - " 'you were in trouble!',\n", - " 'chai yai yai yai yai',\n", - " 'i was trouble!',\n", - " 'chai yai yai yai yai yai yai yai',\n", - " 'chai yai yai yai ya!',\n", - " 'kui nokoshi no wa to',\n", - " 'tsuppashitte tame ni tobikondeku',\n", - " 'sonna anata muteki desu',\n", - " 'are you ween?',\n", - " 'jibun-tachi sae rikai shitenai esoragoto ni kataku kajiri tsuite',\n", - " 'hell, go! screamn!',\n", - " 'hoshikuzu no you tobichitte kagami no kuni tsukinukete itta',\n", - " 'hell, go! scream! with it!',\n", - " 'mitai na yatsu ni furimawasarete mo',\n", - " 'nanimo kawarazu ni irareru',\n", - " 'sonna anata daisuki deshita',\n", - " 'do you want?',\n", - " 'jibun-tachi sae rikai shitenai esoragoto ni kataku kajiri tsuite',\n", - " 'hell, go! screamn!',\n", - " 'no ni nori sokonete',\n", - " 'itsumo soko de odotteita',\n", - " 'hell, go! screamn!',\n", - " 'lan lan lan lan lan la la la... hell, go! scream! with it!',\n", - " 'zutto onaji sora wo miage tobi no narabu kouka shita',\n", - " 'zutto onaji iro ga suki de zutto ittetakatta',\n", - " 'kawatteiku atashi to kawatte iku anata ni',\n", - " 'tomadottemasu',\n", - " 'lan lan lan la...',\n", - " 'saegirareru wa',\n", - " 'araizarashi no hadaka no mama ja',\n", - " 'kikazari hikari',\n", - " 'mikaeri namida ubawareru no',\n", - " 'minareta piasu toori no kaze de kanaderu',\n", - " 'shagareta koe ni tokete ienai',\n", - " 'anata ni dakarete ano ko mo dakarete',\n", - " 'majime na kao zurui hito to wakatte itemo',\n", - " 'zutto kizukanai furi',\n", - " 'kitto hoka no dareka mo',\n", - " 'itsuka hanarete yuku kara',\n", - " 'sayonara baka na hito',\n", - " 'itsu mademo matteta',\n", - " 'kaze no tayori nante ki ni shinai wa',\n", - " 'dear rumor...',\n", - " 'zutto kizukanai furi',\n", - " 'kitto hoka no dareka mo',\n", - " 'itsuka hanarete yukeru no ka na',\n", - " 'zutto issho ni itemo',\n", - " 'kitto hoka no dareka to',\n", - " 'itsuka tooku kiete yuku kara',\n", - " 'zutto suki ja nakatta',\n", - " 'shita no namae yonde kureta ne',\n", - " 'nido to hanarenai to chikatta ano hi ni',\n", - " 'kitto kono machi no you ni',\n", - " 'sugu ni utsurikawaru anata wo',\n", - " 'itsuka subete wasurerareru ka na',\n", - " 'sayonara kono machi no anata to sugoshita',\n", - " 'kaze wo karuku waraitobaseru kara',\n", - " 'moshimo mata itsuka deaetara',\n", - " 'sariyuku se wo misetsukete yaru kara',\n", - " 'zutto zutto machitsuzuketa',\n", - " 'kaze no tayori nante mou ki ni shinai wa',\n", - " 'this is a rumor',\n", - " 'if you say goodbye to me',\n", - " 'rumor has it...',\n", - " \"you know i'm in love\",\n", - " \"i'm so inspired by you\",\n", - " 'gaiken nante dou demo ii no yo',\n", - " 'taisetsu na mono wa oku no hou ni aru no',\n", - " 'stay real manabiya chikai no graffiti',\n", - " 'koukyuu shikou meisei to rimujin',\n", - " 'nimotsu ga omosugite hito wa yasete iku no',\n", - " 'pentohausu yori kaigara no umi no ne',\n", - " 'at the end of the day',\n", - " 'ashita kara hajimeyou nante',\n", - " 'why not today?',\n", - " 'mezametemo motto motto hayaku mezamete motto',\n", - " '* you need a friend who will walk with you',\n", - " 'you need a real friend who will walk with you',\n", - " 'no matter what',\n", - " 'at the end of the day',\n", - " 'at the end of the day',\n", - " 'te ni shite mono to te ni hairanu mono',\n", - " 'saigo ni tsuyoi no wa docchi no hou ga desu ka?',\n", - " 'kairaku oborete munashii asahi',\n", - " 'chiisai koro ni yumemita sekai ga',\n", - " 'chiisaku miete taikai wo mezashita kedo',\n", - " 'do you have a place to go back to at the end of the day?',\n", - " 'tsuyoku ikite kita n´ da nante',\n", - " 'don´t you ever cry?',\n", - " 'sagashite motto motto chikaku sagashite motto',\n", - " '* repeat',\n", - " 'shiawase no imi wo sagasu tabi wo tomo ni',\n", - " 'arukou motto motto nagaku arukou motto',\n", - " '* repeat',\n", - " \"qalbou fouq rassi taj, kfouf idih l'dati lbass\",\n", - " \"rouhou t'chouf essaken fya machi l'meskan\",\n", - " \"farrach ktafou l'ahlami, dra3ou jarda f'mnami\",\n", - " \"khir men âïnya âïnih t'chouf gouddami\",\n", - " \"whowa lli chadd bidiya ou qata3 biya l'fsoul\",\n", - " \"whowa lli 3alih n'ghanni ou nekteb ou n'goul\",\n", - " \"qalbou fouq rassi taj, kfouf idih l'dati lbass\",\n", - " \"rouhou t'chouf essaken fya machi l'meskan\",\n", - " \"farrach ktafou l'ahlami, dra3ou jarda f'mnami\",\n", - " \"khir men âïnya âïnih t'chouf gouddami\",\n", - " \"whowa lli chadd bidiya ou qata3 biya l'fsoul\",\n", - " \"whowa lli 3alih n'ghanni ou nekteb ou n'goul\",\n", - " \"3andou douq ou chan ou serr, bghit fi qalbou n'kber\",\n", - " \"tayefhamni ouakha bla ma n'tkallem\",\n", - " '7all labouab lahlami, whowa rou7 ilhamy',\n", - " 'bghitou mazal ikoun foust iyyami',\n", - " \"whowa lli chadd bidiya ou qata3 biya l'fsoul\",\n", - " \"whowa lli 3âlih n'ghanni ou nekteb ou n'goul\",\n", - " \"whowa 'ssdiq, whowa l'maleh ou lahlou\",\n", - " \"whowa 'rrfiq, makayn b7alou\",\n", - " \"whowa 'zzine, whowa l'fayeq 'rrzine\",\n", - " \"ou l'3acheq lahnine, makayn bhalou\",\n", - " \"qalbi chaf fih khialou, whowa lli ana tan'bghih\",\n", - " \"qalbou fouq rassi taj, kfouf idih l'dati lbass\",\n", - " \"rouhou t'chouf essaken fya machi l'meskan\",\n", - " \"farrach ktafou l'ahlami, dra3ou jarda f'mnami\",\n", - " \"khir men âïnya âïnih t'chouf gouddami\",\n", - " \"whowa lli chadd bidiya ou qata3 biya l'fsoul\",\n", - " \"whowa lli 3alih n'ghanni ou nekteb ou n'goul\",\n", - " \"whowa 'ssdiq, whowa l'maleh ou lahlou\",\n", - " \"whowa 'rrfiq, makayn b7alou\",\n", - " \"whowa 'zzine, whowa l'fayeq 'rrzine\",\n", - " \"ou l'3acheq lahnine, makayn bhalou\",\n", - " \"qalbi chaf fih khialou, whowa lli ana tan'bghih\",\n", - " \"whowa 'ssdiq, whowa l'maleh ou lahlou\",\n", - " \"whowa 'rrfiq, makayn b7alou\",\n", - " \"whowa 'zzine, whowa l'fayeq 'rrzine\",\n", - " \"ou l'3acheq lahnine, whowa lfenn ou lefnoun\",\n", - " \"whowa lli chadd bidiya ou qata3 biya l'fsoul\",\n", - " \"whowa lli 3alih n'ghanni ou nekteb ou n'goul\",\n", - " \"whowa 'ssdiq, whowa l'maleh ou lahlou\",\n", - " \"whowa 'rrfiq, makayn b7alou\",\n", - " \"whowa 'zzine, whowa l'fayeq 'rrzine\",\n", - " \"ou l'3acheq lahnine, makayn bhalou\",\n", - " \"qalbi chaf fih khialou, whowa lli ana tan'bghih\",\n", - " 'featuring:aslam, benny dayal, tanvi, darshana, satish subramanium, anupama & blazee',\n", - " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", - " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", - " 'hai muscular, hai popular, hai muscular, hai popular, spectacular he’s a bachelor',\n", - " 'paapu ki gaadi tez hai, pappu kudiyon mein craze hai',\n", - " 'pappu ke aankhen light blue, pappu dikhtha angrez hai',\n", - " 'raaton ki ghadi haathon mein perfume gucci waala',\n", - " \"but pappu can' t dance saala… pappu can' t dance saala\",\n", - " 'pappu nach nahin saktha',\n", - " 'when i am gonna see you with the dance in the hall',\n", - " 'when i am gonna see you with the dance se!!',\n", - " 'when i am gonna see you with the dance in the hall',\n", - " 'when i am gonna see you with the dance se!!',\n", - " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", - " \"pappu can' t dance saala\",\n", - " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", - " \"pappu can' t dance saala\",\n", - " 'paida pappu hua to kismathein chamke',\n", - " 'aur uske moo mein thi chandi ki chamche',\n", - " 'hey hey hey pappu ke paas hai pyasa, hey hey hey haathon ke meil ke jaisa',\n", - " 'hey hey hey pappu yaaron ka yaar hai, hey hey hey pappu is hot and smart hai',\n", - " \"but pappu can' t dance saala pappu can' t dance saala\",\n", - " 'pappu nach nahin saktha',\n", - " 'thirkit thana na na na. thirkit thana na na na',\n", - " 'thirkit thana na na na. thirkit thana na na na',\n", - " 'paapa kehthe hai bada naam karega; mera pappu to aisa kaam karega',\n", - " 'hey hey hey pappu ke paas hai p a , hey hey hey kartha hai france mein holiday',\n", - " 'hey hey hey pappu guitar bajatha hai, hey hey hey jahan jaatha hai chchaa jaatha hai',\n", - " \"but pappu can' t dance saala…\",\n", - " 'thirkit thana thirkit thana thiri thana lets dance',\n", - " 'thirkit thana thirkit thana thiri thana lets dance',\n", - " 'thirkit thana na na na. thirkit thana na na na',\n", - " \"but pappu can' t dance saala…\",\n", - " 'thirkit thana na na na. thirkit thana na na na',\n", - " 'pappu nach nahin saktha',\n", - " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", - " 'thirkit thana thirkit thana thiri thiri thana lets dance',\n", - " 'when i am gonna see you with the dance in the hall',\n", - " 'when i am gonna see you with the dance sir!!',\n", - " 'when i am gonna see you with the dance in the hall',\n", - " 'when i am gonna see you with the dance sir!!',\n", - " 'when i am gonna see you with the dance in the hall',\n", - " 'when i am gonna see you with the dance sir!!',\n", - " 'thirkit thana na na na. thirkit thana na na na',\n", - " \"but pappu can' t dance saala…\",\n", - " 'kokoro dogimagi, mesen kurakura',\n", - " 'senpai kurabu odemashi',\n", - " 'kokkyou koete jikuu yugamete',\n", - " 'masa ni parallel world',\n", - " 'katakoto dakedo kisou tengai',\n", - " 'tenkei rabukome tsuppashiru',\n", - " 'senpai naraba subete agetai',\n", - " 'abunai? ayashii? kankei',\n", - " 'dokidokin haato wa otome no kunshou',\n", - " 'kanjiru shisen! fukuramu mousou?',\n", - " 'mou tomaranai!',\n", - " 'itsuka anata to aventure',\n", - " 'zutto zutto loving you nano',\n", - " 'anata de ite senpai',\n", - " 'tomodachi mo shiranai in my heart',\n", - " 'sunao ni narenai i want u',\n", - " 'sotsugyou shinaide senpai',\n", - " 'watari rouka de surechigau tabi',\n", - " 'shinpakusuu ga up beat',\n", - " 'me ga atta no ka attenai no ka',\n", - " 'kirenaga no me no fantasy',\n", - " 'ijigen tsunaide geta bako wa mou',\n", - " 'anata to watashi no ai no su',\n", - " 'denwa dake de wa tsutawaranai wa',\n", - " 'minna no mae de love me do',\n", - " 'always dreaming ima mo tonari no seki wo',\n", - " 'gakunen no sa wo koeru ai wo',\n", - " 'sensei wakatte!',\n", - " 'itsudemo iechau i need you',\n", - " 'mainichi aechau konna hibi mo',\n", - " 'iroaseru no? senpai',\n", - " 'hontou wa shiritai in your heart',\n", - " 'kowakute ienai i love u',\n", - " 'sotsugyou shinaide senpai',\n", - " 'dokidokin haato wa otome no kunshou',\n", - " 'kanjiru shisen! fukuramu mousou?',\n", - " 'mou tomaranai!',\n", - " 'itsuka anata to aventure',\n", - " 'zutto zutto loving you nano',\n", - " 'anata de ite senpai',\n", - " 'tomodachi mo shiranai in my heart',\n", - " 'sunao ni narenai i want u',\n", - " 'sotsugyou shinaide senpai',\n", - " 'watashi dake no senpai',\n", - " \"'yeah, huh\",\n", - " 'here we go once again',\n", - " \"guess who's back, let's go\",\n", - " 'this one is all about you',\n", - " 'i really hate you but i love you',\n", - " 'so what can i do?',\n", - " 'now listen',\n", - " 'neoreul bomyeon apa, sumi neomu gappa, ije nae sonjaba',\n", - " 'geu sarameun neoreul saranghaji eanhneunde wae?',\n", - " \"why don't you get it?\",\n", - " 'baby let me love ya, love ya, love ya',\n", - " 'nae jeonbureul georeo, i jumuneun georeo, we can be so perfect',\n", - " 'sesangmodu jeokidwindahaedo naneun andwae',\n", - " 'neo animyeon andwae',\n", - " 'baby let me love ya, love ya, love ya',\n", - " 'oneureun yeotaekkeot gidaryeosseo',\n", - " 'mianhae ganjeolhi baraewasseo',\n", - " 'nal bitgyeogattdeon ni uraen sarangi janinhage kkeulnagireul',\n", - " 'geusaram ijeo, ijen jiweobeoryeo',\n", - " 'eochapi neohaguneun eoolriji anhaneungeol',\n", - " \"so baby won't you come to me\",\n", - " \"i'll make you, make you happy\",\n", - " 'neoreul bomyeon apa, sumi neomu gapen, ijen naesun japa',\n", - " 'geu sarameun neoreul saranghajieanhneunde wae?',\n", - " \"why don't you get it?\",\n", - " 'baby let me love ya, love ya, love ya',\n", - " 'nae jeonbureul georeo, i jumuneun georeo, we can be so perfect',\n", - " 'sesangmodu jeokidwindahaedo naneun andwae',\n", - " 'neo animyeon andwae',\n", - " 'baby let me love ya, love ya, love ya',\n", - " 'cheoeumen haengbokhagil baraesseo',\n", - " 'geude birok geusaram yeopeseorado',\n", - " 'mideosseoseo, na eopsi haengbokhadamyeon, geugeolro chungbunhaesseo',\n", - " 'hajiman, neoui nunmol ipuyeo, neoui seulpeumi boryeo',\n", - " 'amuri chamabwado andwae ijen jichyeo michyeo',\n", - " 'i cannot let it go, i gotta take you',\n", - " 'ije uri unmyeongingeol yeah',\n", - " 'neoreul bomyeon apa, sumi neomu gapen, ijen naesun japa',\n", - " 'geu sarameun neoreul saranghajieanhneunde wae?',\n", - " \"why don't you get it?\",\n", - " 'baby let me love ya, love ya, love ya',\n", - " 'nae jeonbureul georeo, i jumuneun georeo, we can be so perfect',\n", - " 'sesangmodu jeokidwindahaedo naneun andwae',\n", - " 'neo animyeon andwae',\n", - " 'baby let me love ya, love ya, love ya',\n", - " 'eotteohke neon moreuneunde? hapil geu saraminde?',\n", - " 'neoui apeun sarangddawin nan bolsueoptneunde',\n", - " 'ijteo, ni kaseum myeondeulgehaneun geureon nappeunsarang',\n", - " 'ijen jipeochyeo please! apeun neoreul guhagesseo',\n", - " ...]},\n", - " 'r-b': {'meta': {'train_data': ['sandese aate hai, humein tadpaate hai',\n", - " 'jo chitthi aati hai, wo poochhe jaati hai',\n", - " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", - " 'likho kab aaoge?',\n", - " 'ke tum bin ye ghar soona, soona hai',\n", - " 'sandese aate hai, humein tadpaate hai',\n", - " 'jo chitthi aati hai, wo poochhe jaati hai',\n", - " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", - " 'likho kab aaoge?',\n", - " 'ke tum bin ye ghar soona, soona hai',\n", - " 'kisi dilwaali ne, kisi matwaali ne',\n", - " 'humein khat likha hai, ye humse poochha hai',\n", - " 'kisi ki saanson ne, kisi ki dhadkan ne',\n", - " 'kisi ki choodi ne, kisi ke kangan ne',\n", - " 'kisi ke kajre ne, kisi ke gajre ne',\n", - " 'mahekti subahon ne, machalti shaamon ne',\n", - " 'akeli raaton ne, adhoori baaton ne, tarasti baahon ne',\n", - " 'aur poochha hai tarsi nigaahon ne',\n", - " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", - " 'likho kab aaoge?',\n", - " 'ke tum bin ye ghar soona, soona hai',\n", - " 'sandese aate hai, humein tadpaate hai',\n", - " 'jo chitthi aati hai, wo poochhe jaati hai',\n", - " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", - " 'likho kab aaoge?',\n", - " 'ke tum bin ye ghar soona, soona hai',\n", - " 'mohabbat waalon ne, hamaare yaaron ne',\n", - " 'humein ye likha hai, ke humse poochha hai',\n", - " 'hamaare gaaon ne, aam ki chhaaon ne',\n", - " 'puraane peepal ne, baraste baadal ne',\n", - " 'khet khaliyaanon ne, hare maidaanon ne',\n", - " 'basanti belon ne, jhoomti belon ne',\n", - " 'lachakte jhulon ne, behekte phoolon ne, chatakti kaliyon ne',\n", - " 'aur poochha hai gaaon ki galiyon ne',\n", - " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", - " 'likho kab aaoge?',\n", - " 'ke tum bin ye ghar soona, soona hai',\n", - " 'sandese aate hai, humein tadpaate hai',\n", - " 'jo chitthi aati hai, wo poochhe jaati hai',\n", - " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", - " 'likho kab aaoge?',\n", - " 'ke tum bin ye ghar soona, soona hai',\n", - " 'kabhi ek mamta ki, pyaar ki ganga ki',\n", - " 'jo chitthi aati hai, saath woh laati hai',\n", - " 'mere din bachpan ke, khel wo aangan ke',\n", - " 'wo saaya aanchal ka, wo teeka kaajal ka',\n", - " 'wo lori raaton mein, wo narmi haathon mein',\n", - " 'wo chaahat aankhon mein, wo chinta baaton mein',\n", - " 'bigadna upar se, mohabbat andar se, kare wo devi maa',\n", - " 'yahin har khat mein poochhe meri maa',\n", - " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", - " 'likho kab aaoge?',\n", - " 'ke tum bin ye ghar soona, soona hai',\n", - " 'sandese aate hai, humein tadpaate hai',\n", - " 'jo chitthi aati hai, wo poochhe jaati hai',\n", - " 'ke ghar kab aaoge? ke ghar kab aaoge?',\n", - " 'likho kab aaoge?',\n", - " 'ke tum bin ye ghar soona, soona hai',\n", - " 'ae, guzarne waali hawa btaa, mera itna kaam karegi kya?',\n", - " 'mere gaaon jaa, mere doston ko salaam de',\n", - " 'mere gaaon mein hai jo wo gali, jahan rehti hai meri dilrubaa',\n", - " 'use mere pyaar ka jaam de, use mere pyaar ka jaam de',\n", - " 'wahi thodi door hai ghar mera',\n", - " 'mere ghar mein hai meri boodhi maa',\n", - " 'meri maa ke pairon ko chhoo ke',\n", - " 'tu use uske beta ka naam de',\n", - " 'ae, guzarne waali hawa zara',\n", - " 'mere doston meri dilrubaa',\n", - " 'meri maa ko mera payaam de',\n", - " 'unhe jaake tu ye payaam de',\n", - " 'main waapas aaoonga, main waapas aaoonga',\n", - " 'phir apne gaaon mein, usiki chhaaon mein',\n", - " 'ki maa ke aanchal se, gaaon ke peepal se',\n", - " 'kisi ke kaajal se, kiya jo waada tha wo nibhaoonga',\n", - " 'main ek din aaoonga, main ek din aaoonga',\n", - " 'main ek din aaoonga, main ek din aaoonga',\n", - " 'main ek din aaoonga, main ek din aaoonga',\n", - " 'main ek din aaoonga, main ek din aaoonga',\n", - " 'oya now',\n", - " 'shout out to my one and only',\n", - " 'na you be my alobam',\n", - " 'nkem you’re one in a million',\n", - " 'shout out to my baby honey',\n", - " 'na you be my girly o',\n", - " 'temi, you’re one in a billion',\n", - " 'ale ma ni owo lowo',\n", - " 'sugbon a l’alafiya',\n", - " 'ale ma ni ile lori',\n", - " 'aye wa dun bi oyin',\n", - " 'ale ma l’owo lowo',\n", - " 'sugbon ani ifokan bale',\n", - " 'ale ma ni ile lori o',\n", - " 'orente no dey complain o',\n", - " 'e ba mi ki orente o',\n", - " 'orente o',\n", - " 'shout out to my orente o',\n", - " '(orente o)',\n", - " 'e ba mi ki orente o',\n", - " '(orente o)',\n", - " 'shout out to my orente o',\n", - " '(orente o)',\n", - " 'e ba mi ki orente',\n", - " '(orente o)',\n", - " 'iyawo mi orente',\n", - " 'dorobucci dey toast you',\n", - " 'you tell am sey you no do',\n", - " 'sey you no go leave me',\n", - " 'omoge to loyal',\n", - " 'baby mi to sure ju',\n", - " 'sey you no go leave me',\n", - " 'ale ma ni owo lowo',\n", - " 'sugbon a l’alafiya',\n", - " 'ale ma ni ile lori',\n", - " 'aye wa dun bi oyin',\n", - " 'ale ma l’owo lowo',\n", - " 'sugbon a ni ifokan bale',\n", - " 'ale ma ni ile lori o',\n", - " 'orente no dey complain o',\n", - " 'e ba mi ki orente o',\n", - " 'orente o',\n", - " 'shout out to my orente o',\n", - " '(orente o)',\n", - " 'e ba mi ki orente o',\n", - " '(orente o)',\n", - " 'shout out to my orente o',\n", - " '(orente o)',\n", - " 'e ba mi ki orente',\n", - " '(orente',\n", - " 'iyawo mi orente',\n", - " 'orente o',\n", - " 'orente o',\n", - " 'oya now',\n", - " 'orente o',\n", - " 'orente o',\n", - " 'eba mi ki',\n", - " '(orente o)',\n", - " 'orente',\n", - " 'iyawo mi orente',\n", - " 'adeola l’orente',\n", - " '(orente o)',\n", - " 'bolatito l’orente o',\n", - " '(orente o)',\n", - " 'opeyemi l’orente',\n", - " '(orente o)',\n", - " 'omo dada l’orente mi',\n", - " '(orente o)',\n", - " 'ebami ki orente',\n", - " '(orente) orente',\n", - " 'iyawo mi l’orente',\n", - " 'ebami ki orente o',\n", - " '(orente o)',\n", - " 'shout out to me orente o',\n", - " '(orente o)',\n", - " 'ebami ki orente o',\n", - " '(orente o)',\n", - " 'omo dada l’orente mi',\n", - " '(orente o)',\n", - " 'ebami ki orente',\n", - " '(orente) orente',\n", - " 'iyawo mi orente',\n", - " \"ko ma si ibi ti mo le f'ori le\",\n", - " 'kosi o',\n", - " \"a'fe eko ile\",\n", - " \"ko ma si ibi ti mo le f'ori le oh\",\n", - " 'ko si o',\n", - " 'afi eko ile',\n", - " 'bi mo nba rajo lo london oh',\n", - " 'ma tun pada si eko ile',\n", - " 'bi mo nba rajo si new york oh',\n", - " 'ma tun pada si eko ile',\n", - " 'eko o, eko ile (x2)',\n", - " 'bi mo nba rajo lo london oh',\n", - " 'ma tun pada si eko ile',\n", - " 'bi mo nba rajo lo new york oh',\n", - " 'ma tun pada si eko ile',\n", - " 'bi mo nba rajo lo london oh',\n", - " 'ma tun pada si eko ile',\n", - " 'bi mo nba rajo lo new york oh',\n", - " 'ma tun pada si eko ile',\n", - " 'bi mo nba wa moto ni london oh',\n", - " 'ma tun jeje wa koti wa ni be',\n", - " 'bi o nba wa moto ni new york oh',\n", - " 'wa tun sheshe wa koti wa ni be oh',\n", - " 'tori oh alright ni eko ore mi',\n", - " 'ola jun wa nbe',\n", - " 'eko oh, eko ile',\n", - " 'ti wa tun yato si ti yin ose nbo oh',\n", - " 'eko oh, eko ile',\n", - " 'tan wa tun sheshe so ta wa obirin wa oh',\n", - " 'ni won oh',\n", - " 'nuvvu pakka nunte baguntadhe nee pakkanunte baguntadhe nuvvu karametti pettina kamaguntadhe kattibetti guchina samaguntadhe atta vacchi itta nuvvu tipphukunta ellipothe ekkado kaluku mantadhe yellipoke shyamala yellamake shyamala nuvvu yellapoke shayamala oopiradhanta lopala yellipoka shyamala yekki yekki edavalene edhavva maga putaka gunde periginatunde nuvve yellinaaka yellipoke shyamala hey yelamakke shyamala nuvu yellipothe sayamala oopiradanta lopala yellipoka shyamala naram leni nalukalenno aellipommani pampindhaye ratham leni gurram laaga bathuke chathikilabadipoye nee poster addanga chinpesanu anukunna gundello needhe cinema aaduthunnade switch esthe yeligedha uff ante aaredha oopirilo mantalle nee preme unnadhe pranane patta karesi pattesi nitho pattuku pommake gelichesi nannu odilesi seekatenna thotalaaga seyyabake nuvvu yellipoke shyamala nuvvu yellamake shyamala yemi bagaledhe lopala nuvvu yellipoke yellipoke yellipoke shyamala manasukantuthunado mallepoola sentu maraka marchipodamante gurthukosthavundhi nippu sooraka aeti seyanu ori saidulu gundelona gucchipoyinadi soodhulu nannu eti seyyani ori saidulu gundelona guchi poyinadi soodhulu yellipoke shyamala atta yellamake shyamala nuvvu yellipothe asala.. oopiradanta lopala',\n", - " 'korean',\n", - " 'day & night',\n", - " \"we be playin' like its game night\",\n", - " 'got me throwin back to',\n", - " 'mario zelda here we go',\n", - " 'get that donkey kong',\n", - " \"let's get it started\",\n", - " 'every night',\n", - " '나는 자꾸 네가 생각나',\n", - " '야 네가 뭔데',\n", - " '왜 이렇게 내게 보란 듯이',\n", - " '힌트를 줘 무엇을 원하는지',\n", - " '분석해야 돼 네가 뭐라는지',\n", - " '감이 안 와',\n", - " '가끔 넌 늦은 밤에 내게 카톡해',\n", - " 'oh no no',\n", - " '수면 시간 단축돼',\n", - " 'oh no no',\n", - " '바보같이 난 그걸 답장하고',\n", - " '넌 또 그걸 읽씹하고',\n", - " '그럴 바에 대체 왜 나한테 문자 했냐고',\n", - " '투덜투덜 거리면서 단순해서 난 또 기분 좋다고',\n", - " \"i'm so stupid\",\n", - " \"but i really can't stop looking\",\n", - " 'late nights got me feelin like droopy',\n", - " \"i'm new to this game, go easy on a newbie\",\n", - " 'like bang bang bang',\n", - " '넌 매일매일 게임하듯 맨 끝판까지 모두 깨 깨 깨',\n", - " '밤 새새 새면서까지 우린 조이스틱 잡아',\n", - " \"먼저 가지 말고 wait wait i'm singing\",\n", - " 'day & night',\n", - " \"we be playin' like its game night\",\n", - " 'got me throwin back to',\n", - " 'mario zelda here we go',\n", - " 'get that donkey kong',\n", - " \"let's get it started\",\n", - " 'every night',\n", - " '나는 자꾸 네가 생각나',\n", - " '야 네가 뭔데',\n", - " '왜 이렇게 내게 보란 듯이',\n", - " '힌트를 줘 무엇을 원하는지',\n", - " '분석해야 돼 네가 뭐라는지 감이안와',\n", - " '괴로워 우린 다시 드라마 촬영에 임해',\n", - " '이 정도로 너의 장단을 맞춰줬음 어쩜 난 대인배',\n", - " 'we back in the battle with diamonds and beasts',\n", - " 'button a, button b',\n", - " '승부욕에 예전 내 버릇이 나와',\n", - " '막판 거뜬히 깰 거야, 넌 잠이 깰 거야',\n", - " '낮과 밤 뒤바뀌어 살이 빠져',\n", - " '우린 말이 많고 시간은 빨라',\n", - " 'yeah we playin a game with some special mission running in our brain',\n", - " \"i'm sayin\",\n", - " 'ay, 넌 왜 나를 갖고',\n", - " 'ay, 놀아 사람 한 명',\n", - " '살린다는 셈 치고',\n", - " '난이도는 easy mode 봐줘 한번',\n", - " '워우어우어 예예',\n", - " '워우어우어 예예',\n", - " '매일 졌어 나는 왜 못해 이런 게임',\n", - " 'everybody in the back',\n", - " '대기타고 준비해',\n", - " 'get ready, set go',\n", - " '이번 판엔 나도 무대포',\n", - " '깨기 힘든 너의 마음 안에 내 깃발을 꽂고 말 거야 take over, singing',\n", - " 'day & night',\n", - " \"we be playin' like its game night\",\n", - " 'got me throwin back to',\n", - " 'mario zelda here we go',\n", - " 'get that donkey kong',\n", - " \"let's get it started\",\n", - " 'every night',\n", - " '나는 자꾸 네가 생각나',\n", - " '야 네가 뭔데',\n", - " '왜 이렇게 내게 보란 듯이',\n", - " '힌트를 줘 무엇을 원하는지',\n", - " '분석해야 돼 네가 뭐라는지 감이안와',\n", - " 'romanization',\n", - " 'day & night',\n", - " \"we be playin' like its game night\",\n", - " 'got me throwin back to',\n", - " 'mario zelda here we go',\n", - " 'get that donkey kong',\n", - " \"let's get it started\",\n", - " 'every night',\n", - " 'naneun jakku nega saeng-gagna',\n", - " 'ya nega mwonde',\n", - " 'wae ileohge naege bolan deus-i',\n", - " 'hinteuleul jwo mueos-eul wonhaneunji',\n", - " 'bunseoghaeya dwae nega mwolaneunji',\n", - " 'gam-i an wa',\n", - " 'gakkeum neon neuj-eun bam-e naege katoghae',\n", - " 'oh no no',\n", - " 'sumyeon sigan danchugdwae',\n", - " 'oh no no',\n", - " 'babogat-i nan geugeol dabjanghago',\n", - " 'neon tto geugeol ilgssibhago',\n", - " 'geuleol ba-e daeche wae nahante munja haessnyago',\n", - " 'tudeoltudeol geolimyeonseo dansunhaeseo nan tto gibun johdago',\n", - " \"i'm so stupid\",\n", - " \"but i really can't stop looking\",\n", - " 'late nights got me feelin like droopy',\n", - " \"i'm new to this game, go easy on a newbie\",\n", - " 'like bang bang bang',\n", - " 'neon maeilmaeil geimhadeus maen kkeutpankkaji modu kkae kkae kkae',\n", - " 'bam saesae saemyeonseokkaji ulin joiseutig jab-a',\n", - " \"meonjeo gaji malgo wait wait i'm singing\",\n", - " 'day & night',\n", - " \"we be playin' like its game night\",\n", - " 'got me throwin back to',\n", - " 'mario zelda here we go',\n", - " 'get that donkey kong',\n", - " \"let's get it started\",\n", - " 'every night',\n", - " 'naneun jakku nega saeng-gagna',\n", - " 'ya nega mwonde',\n", - " 'wae ileohge naege bolan deus-i',\n", - " 'hinteuleul jwo mueos-eul wonhaneunji',\n", - " 'bunseoghaeya dwae nega mwolaneunji gam-ian-wa',\n", - " 'goelowo ulin dasi deulama chwal-yeong-e imhae',\n", - " 'i jeongdolo neoui jangdan-eul majchwojwoss-eum eojjeom nan daeinbae',\n", - " 'we back in the battle with diamonds and beasts',\n", - " 'button a, button b',\n", - " 'seungbuyog-e yejeon nae beoleus-i nawa',\n", - " 'magpan geotteunhi kkael geoya, neon jam-i kkael geoya',\n", - " 'najgwa bam dwibakkwieo sal-i ppajyeo',\n", - " 'ulin mal-i manhgo sigan-eun ppalla',\n", - " 'yeah we playin a game with some special mission running in our brain',\n", - " \"i'm sayin\",\n", - " 'ay, neon wae naleul gajgo',\n", - " 'ay, nol-a salam han myeong',\n", - " 'sallindaneun sem chigo',\n", - " 'nan-idoneun easy mode bwajwo hanbeon',\n", - " 'woueoueo yeye',\n", - " 'woueoueo yeye',\n", - " 'maeil jyeoss-eo naneun wae moshae ileon geim',\n", - " 'everybody in the back',\n", - " 'daegitago junbihae',\n", - " 'get ready, set go',\n", - " 'ibeon pan-en nado mudaepo',\n", - " 'kkaegi himdeun neoui ma-eum an-e nae gisbal-eul kkojgo mal geoya take over, singing',\n", - " 'day & night',\n", - " \"we be playin' like its game night\",\n", - " 'got me throwin back to',\n", - " 'mario zelda here we go',\n", - " 'get that donkey kong',\n", - " \"let's get it started\",\n", - " 'every night',\n", - " 'naneun jakku nega saeng-gagna',\n", - " 'ya nega mwonde',\n", - " 'wae ileohge naege bolan deus-i',\n", - " 'hinteuleul jwo mueos-eul wonhaneunji',\n", - " 'bunseoghaeya dwae nega mwolaneunji gam-ian-wa',\n", - " 'lagdi mainu jivein ambraan di queen',\n", - " 'meethiyan gallan kare, kudi namkeen',\n", - " 'lagdi mainu jiven ambraan di queen',\n", - " 'meethiyan gallan kare, kudi namkeen',\n", - " 'lagdi mainu jiven ambraan di queen',\n", - " 'meethiyan gallan kare, kudi namkeen',\n", - " 'patla ja lakk tera, lakk nu sambhal ni',\n", - " 'one in the million lagdi kamaal ni',\n", - " 'patla ja lakk tera lakk nu sambhal ni',\n", - " 'one in the million lagdi kamaal ni',\n", - " 'lagdi kamaal ni lagdi kamaal ni',\n", - " 'hoya bura haal ni, hoya bura haal ni',\n", - " 'tu aaja mere close',\n", - " 'milta na mauka roz',\n", - " 'i want you my baby',\n", - " 'mujhe de de love dose',\n", - " 'mujhe de de love dose',\n", - " 'yeah!',\n", - " 'lagdi mainu jiven ambraan di queen',\n", - " 'meethiyan gallan kare, kudi namkeen',\n", - " 'lagdi mainu jiven ambraan di queen',\n", - " 'meethiyan gallan kare, kudi namkeen',\n", - " '((honey singh rap))',\n", - " 'ye chand sa roshan chehra',\n", - " 'baalon ka rang sunehara',\n", - " 'kaise dekhun teri aankhen',\n", - " 'aankhon pe chashme ka pehra',\n", - " 'aankhon pe chashme ka pehra',\n", - " 'iss chashme ko hata do',\n", - " 'aankhon ko mila lo',\n", - " 'aankhon ke nashile jaam',\n", - " 'aankhon se pila do',\n", - " 'lagta hum pehle mile',\n", - " 'ya ho mujhe déjà vu',\n", - " 'idhar udhar kahan dekhe',\n", - " \"girl i'm talking to you\",\n", - " 'ab aankhon se hataya chashma',\n", - " 'aakhein to milaao ji',\n", - " 'duniya waale jo bhi bole',\n", - " 'humse na sharmaao ji',\n", - " 'ab phone utthaao ji',\n", - " 'aur daddy ki millo ji',\n", - " 'unke future son-in-law ki baat unse karwaao ji',\n", - " '\"hello, uncle, namaste\"',\n", - " 'chalo kaam ki baat pe aatein hain',\n", - " 'ab aap ye puchhenge ki',\n", - " 'aap kitne paise kamate hain?',\n", - " 'bas jitna aapki beti',\n", - " 'ek mahine mein udati hai',\n", - " 'ek hafte me meri gaadi utna tel khaati hai',\n", - " 'hai ghar, hai paisa, hai gaadi',\n", - " 'ab do jodon mein ladki bhejo',\n", - " 'ladki hui hamaari',\n", - " 'uncle hai ghar, hai paisa, hai gaadi',\n", - " 'ab do jodon mein ladki bhejo',\n", - " 'ladki hui humaari, ok bye',\n", - " '((honey singh rap ending))',\n", - " 'lagdi ai mainu jiven ambraan di queen',\n", - " 'meethiyan gallan kare, kudi namkeen',\n", - " 'meethiyan gallan kare, kudi namkeen',\n", - " 'meethiyan gallan kare, kudi namkeen',\n", - " 'meethiyan gallan kare, kudi namkeen',\n", - " 'aha..',\n", - " 'yo! yo! honey singh',\n", - " 'yo! yo! honey singh',\n", - " 'yo! yo! honey singh',\n", - " 'yo! yo! honey singh',\n", - " 'run to party is this tu fu',\n", - " 'urunun nolinin a bady new fox to do',\n", - " 'ghed in a pfsillin foffaren justu',\n", - " 'awdarded need a calle to six to stand',\n", - " 'gheeedr prininaf st-stand',\n", - " 'brrbrodinnau, r-really bady you stand',\n", - " 'uhm... m',\n", - " 'lorendannore devi is mi song, orenna beibeee!',\n", - " 'oh grag, given ma corenbidestep',\n", - " 'iu but but dirik iu uat tus tus du',\n", - " 'bubbubittubi badubibidudutaububu udaddistudu',\n", - " 'brbrbr douche tivasbevistida',\n", - " 'aronni diis rimmi comonst from',\n", - " \"randiiii adde cununnà d'mestià\",\n", - " 'hrobimmà iopollinehmistim',\n", - " 'ehn lorennahori badi is missong',\n", - " 'porring inna beibeeeni thing',\n", - " 'ohlai andurin ma foni iessescià',\n", - " 'iv bon biù beni ius benetbibistu',\n", - " \"uoda gomid'mam hada hedeghepta but gu bimnstudu\",\n", - " 'hauan dududà hudududududa duddudududa du dùnna',\n", - " \"of gudududubebi s dide commonn' di-di ae\",\n", - " '(brbr)bambae (brbr)bambae (br)bambà brndsah',\n", - " 'provinnan uàmmistan efdh',\n", - " 'oh! oh! horinna hedibbiri his vi song, roddenna ghevinah',\n", - " \"scemmid' dorinna cobi mirissià\",\n", - " \"innam' nnam' uham' uat embu ham\",\n", - " 'ububbabi distighetolleba heghiddigghideh',\n", - " 'andoveaebbide digghimò eneddidse to seh',\n", - " 'bauodinniditali iu fox t seh',\n", - " 'uum\\'ma uum\\'mu ma ma uum\\'mmumum \"beck guitar\"',\n", - " 'ypporinneah giuspirightari tto \"show\"',\n", - " 'uh... uh, arennoni chenebissbi song tyuriennedbeh',\n", - " 'oh hon wonnena chenididissong',\n", - " 'budidippo budidibam budidiboemissòn',\n", - " 'uoah narighisperi nare ghet mi song',\n", - " 'bdurin ma bebee waw! uh nan, turi nesciudi bissaud',\n", - " \"af bu be bo bi buh bi-d-bo bi uah ainik'no\",\n", - " 'orenghefforen de mi is mi song!',\n", - " 'uh, uh, beibeeeeee!',\n", - " 'tto nega boyeo oh baby',\n", - " 'tto nega isseo oh nae yeope',\n", - " 'heeonal su eobseo honjaseon never do',\n", - " 'i don’t wanna ever lose',\n", - " 'ne yeope inneun nan neul lonely',\n", - " 'nae yeope inneun neon neul sorry',\n", - " 'nega tteonagado honja beoryeojyeodo',\n", - " 'i’ll be fine i’ll be fine',\n", - " 'yes i know',\n", - " 'gidaril su eobseo',\n", - " 'i’ve been waiting so long',\n", - " 'i’m singing it good bye',\n", - " 'ijen naega sirheo sirheo',\n", - " 'hago sipdeon geu mal',\n", - " 'i’ve been waiting so long',\n", - " 'i’m singing it good bye',\n", - " 'nado nega sirheo',\n", - " 'i’ll never fall in love',\n", - " 'tto nega boyeo oh baby',\n", - " 'tto nega isseo oh nae yeope',\n", - " 'heeonal su eobseo honjaseon never do',\n", - " 'i don’t wanna ever lose',\n", - " 'no more no more love',\n", - " 'no more no more love yeah',\n", - " 'no more no more love',\n", - " 'no more no more love yeah',\n", - " 'no more no more love',\n", - " 'no more no more love yeah',\n", - " 'no more no more love',\n", - " 'no more no more love',\n", - " 'ije nado neo sirheo wae irae wae irae',\n", - " 'ijen naega an boyeo geurae neon geurae',\n", - " 'ne yeope deo joheun saramdeulgwa mannabwaya',\n", - " 'sogi siwonhagetji ja geureom geureoke',\n", - " 'neo geureon daeum huhoehagi eobtgiro hae',\n", - " 'dasi manna dallan yaegin jeoldae ankiro hae',\n", - " 'ppalli yaegihae jinjja neo naega sirheo',\n", - " 'hanbeon deo mureulge daedaphae jinjja naega sirheo',\n", - " 'gidaril su eobseo',\n", - " 'i’ve been waiting so long',\n", - " 'i’m singing it good bye',\n", - " 'sirheojyeotdago yaegi hajin ma',\n", - " 'ajik joheunde nareul jakku oeropge ma',\n", - " 'ay hanaman ttak yaegi hajamyeon',\n", - " 'na ppaegon da geogiseo geogi tto',\n", - " 'baby i’m sorry',\n", - " 'good bye joke bonaejulge',\n", - " 'i’ll never fall in love',\n", - " 'tto nega boyeo oh baby',\n", - " 'tto nega isseo oh nae yeope',\n", - " 'heeonal su eobseo honjaseon never do',\n", - " 'i don’t wanna ever lose',\n", - " 'no more no more love',\n", - " 'no more no more love yeah',\n", - " 'no more no more love',\n", - " 'no more no more love yeah',\n", - " 'no more no more love',\n", - " 'no more no more love yeah',\n", - " 'no more no more love',\n", - " 'no more no more love']},\n", - " 'data': ['eromi eromi (oya now)',\n", - " 'irorun lobe maggi',\n", - " 'ebii mi ko pemo lowo oo',\n", - " 'no be my power say i buy house oo',\n", - " 'ejen simi',\n", - " 'ebii mi ko pe mo lola oo',\n", - " 'oluwa lo fun mi lomo oo',\n", - " 'e jen simi',\n", - " 'na jehovah dey bless me ah',\n", - " 'make you no go dey hate me',\n", - " 'i no get your time oo',\n", - " 'mon yan fanda niwaju elegan',\n", - " 'na baba god dey bless me oo',\n", - " 'make you no dey hate me',\n", - " 'i no get your time oo',\n", - " 'mon yan fanda niwaju elegan',\n", - " 'oh na na na na',\n", - " 'mo ga ju aye lo(mo ga mo ga)',\n", - " \"e o' le ri mi mu(ri mi mu)\",\n", - " 'eyin ko lolorun mii',\n", - " 'ejen se temi',\n", - " \"i'm higher than the world(mo ga mo ga)\",\n", - " 'you no go get me oo(ri mi mu)',\n", - " 'eyin ko le le da mii',\n", - " 'ejen se temi ah ahhh',\n", - " 'make i live my life oo',\n", - " 'instead make u dey pray',\n", - " 'you dey carry my gist around oo (ejen simi)',\n", - " 'instead make you dey work',\n", - " 'you dey carry my matter around(ejen simi)',\n", - " 'na jehovah dey bless me',\n", - " 'make u no go dey hate me',\n", - " 'i no get your time oo',\n", - " 'mon yan fanda niwaju elegan',\n", - " 'oluwa dy bless me oo',\n", - " 'make you no dey hate me oo',\n", - " 'i no get your time oo',\n", - " 'mon yan fanda niwaju elegan',\n", - " 'oh na na na na',\n", - " 'mo ga ju aye lo (mo ga mo ga)',\n", - " \"e o' le rii mi mu (rimi mu)\",\n", - " 'eyin ko lolorun mii',\n", - " 'ejen se temi',\n", - " \"i'm higher than the world (moga moga)\",\n", - " 'you no go get me oo(rii mi mu)',\n", - " 'eyin ko le leda mii',\n", - " 'ejen se temi',\n", - " 'make i live my life',\n", - " 'ahh samba yii poju',\n", - " \"e o' lee ri\",\n", - " 'asiri wa ten ranju koko mo',\n", - " \"e o' lee ri\",\n", - " 'ahh ogaju',\n", - " 'oh na na na na',\n", - " 'moga ju aye lo oo(moga moga)',\n", - " \"e o' le rii mi mu(ri mi mu)\",\n", - " 'eyin ko lolorun mi',\n", - " 'ejen se temi',\n", - " 'my blessing dey bless me',\n", - " 'mo jo fun chineke(rimi mu)',\n", - " 'iwo ko lo dami oo',\n", - " 'jen she temi oo',\n", - " 'make i live my life oo',\n", - " 'moga moga',\n", - " \"e o' le rii mimu(rii mi mu)\",\n", - " 'moti be eleda mi oo',\n", - " 'ko ma sho mi oo',\n", - " 'mo ga ju yin lo(moga moga)',\n", - " \"e o' le rii mi mu(rimi mu)\",\n", - " 'eyin ko lolorun mii',\n", - " 'ejen se temi',\n", - " 'make i live my life oo',\n", - " 'korean',\n", - " 'baby i love you 내 마음 변하지 않아',\n", - " '우리 사랑이 잠시 방황을 해도 baby',\n", - " '힘들어도 꼭 기달려줘 my baby',\n", - " '세상이 나한테 등을 돌려도',\n", - " '상관없어 baby baby',\n", - " '너만 있으면 돼',\n", - " 'so baby 약속해 절대 안 떠난다고',\n", - " 'baby 약속해 영원히 사랑한다고',\n", - " 'baby 약속해 부자가되던 어려워지던',\n", - " '둘이서 행복하게 늙어갈 수 있다고',\n", - " '약속해 baby 약속해 oh please',\n", - " '아침에 눈 뜰 때 마다 니 얼굴이 보여',\n", - " '너만을 사랑해 절대로',\n", - " '내 마음 몰라주면 안돼 my baby my girl',\n", - " '세상이 나한테 등을 돌려도 상관없어',\n", - " '너만 있으면 돼',\n", - " 'so baby 약속해 절대 안 떠난다고',\n", - " 'baby 약속해 영원히 사랑한다고',\n", - " 'baby 약속해 부자가되던 어려워지던',\n", - " '둘이서 행복하게 늙어 갈 수 있다고',\n", - " '약속해 baby 약속해 oh please',\n", - " '이 인생이란 걸',\n", - " '너 없이 사는게 사는것도 아니야',\n", - " '웃을 때도 눈물 흘릴 때도',\n", - " '함께해 my baby baby',\n", - " '영원히 영원히 my baby',\n", - " 'so baby 약속해 절대 안 떠난다고',\n", - " 'baby 약속해 영원히 사랑한다고',\n", - " 'baby 약속해 부자가되던 어려워지던',\n", - " '둘이서 행복하게 늙어갈 수 있다고',\n", - " '약속해 baby 약속해 oh please',\n", - " 'romanization',\n", - " 'baby i love you nae maeum byeonhaji anha',\n", - " 'uri sarangi jamsi banghwangeul haedo baby',\n", - " 'himdeureodo kkok gidallyeojwo my baby',\n", - " 'sesangi nahante deungeul dollyeodo',\n", - " 'sanggwaneobseo baby baby',\n", - " 'neoman isseumyeon dwae',\n", - " 'so baby yaksokhae jeoldae an tteonandago',\n", - " 'baby yaksokhae yeongwonhi saranghandago',\n", - " 'baby yaksokhae bujagadoedeon eoryeowojideon',\n", - " 'duriseo haengbokhage neulgeogal su itdago',\n", - " 'yaksokhae baby yaksokhae oh please',\n", - " 'achime nun tteul ttae mada ni eolguri boyeo',\n", - " 'neomaneul saranghae jeoldaero',\n", - " 'nae maeum mollajumyeon andwae my baby my girl',\n", - " 'sesangi nahante deungeul dollyeodo sanggwaneobseo',\n", - " 'neoman isseumyeon dwae',\n", - " 'so baby yaksokhae jeoldae an tteonandago',\n", - " 'baby yaksokhae yeongwonhi saranghandago',\n", - " 'baby yaksokhae bujagadoedeon eoryeowojideon',\n", - " 'duriseo haengbokhage neulgeo gal su itdago',\n", - " 'yaksokhae baby yaksokhae oh please',\n", - " 'i insaengiran geol',\n", - " 'neo eobsi saneunge saneungeotdo aniya',\n", - " 'useul ttaedo nunmul heullil ttaedo',\n", - " 'hamkkehae my baby baby',\n", - " 'yeongwonhi yeongwonhi my baby',\n", - " 'so baby yaksokhae jeoldae an tteonandago',\n", - " 'baby yaksokhae yeongwonhi saranghandago',\n", - " 'baby yaksokhae bujagadoedeon eoryeowojideon',\n", - " 'duriseo haengbokhage neulgeogal su itdago',\n", - " 'yaksokhae baby yaksokhae oh please',\n", - " 'english',\n", - " 'baby i love you, my heart won’t change',\n", - " 'even if our love gets lost for a bit baby',\n", - " 'even if it’s hard, please wait for me my baby',\n", - " 'i don’t care if the world turns',\n", - " 'against me, baby baby',\n", - " 'i only need you',\n", - " 'so baby, promise me that you’ll never leave',\n", - " 'baby, promise me that you’ll love me forever',\n", - " 'baby, promise me whether i become rich or things get hard',\n", - " 'promise me that we’ll happily grow old together',\n", - " 'baby, promise me, oh please',\n", - " 'every morning when i open my eyes, i see your face',\n", - " 'i only love you',\n", - " 'you can’t not know my heart, my baby, my girl',\n", - " 'i don’t care if the world turns against me',\n", - " 'i only need you',\n", - " 'so baby, promise me that you’ll never leave',\n", - " 'baby, promise me that you’ll love me forever',\n", - " 'baby, promise me whether i become rich or things get hard',\n", - " 'promise me that we’ll happily grow old together',\n", - " 'baby, promise me, oh please',\n", - " 'living without you in this life',\n", - " 'will not be like living at all',\n", - " 'when i smile, when i cry',\n", - " 'be with me, my baby baby',\n", - " 'forever, forever, my baby',\n", - " 'so baby, promise me that you’ll never leave',\n", - " 'baby, promise me that you’ll love me forever',\n", - " 'baby, promise me whether i become rich or things get hard',\n", - " 'promise me that we’ll happily grow old together',\n", - " 'baby, promise me, oh please',\n", - " 'hangul',\n", - " '(안녕)',\n", - " '쉽지 않죠 바쁘죠?',\n", - " '왜 이렇게까지 해야 하나 싶죠?',\n", - " '바라는 게 더럽게 많죠? (그렇죠?)',\n", - " '쉬고 싶죠? 시끄럽죠 다 성가시죠? 집에 가고 싶죠?',\n", - " '(집에 있는데도) 집에 가고 싶을 거야',\n", - " '그럴 땐 이 노래를',\n", - " '초콜릿처럼 꺼내 먹어요',\n", - " '피곤해도 아침 점심 밥 좀 챙겨 먹어요',\n", - " '그러면 이따 내가 칭찬해줄게요',\n", - " '보고 싶어',\n", - " '많이 좋아해요',\n", - " '더 많이 안아주고 싶어요',\n", - " '사랑, 사랑 비슷한 걸 해요',\n", - " '어쩌면 정말 (사랑해)요',\n", - " '배고플 땐 이 노래를',\n", - " '아침 사과처럼 꺼내 먹어요',\n", - " '피곤해도 아침 점심 밥 좀 챙겨 먹어요',\n", - " '그러면 이따 밤에 잠도 잘 올 거에요',\n", - " '힘들어요',\n", - " '아름다워서',\n", - " '알아봐줘요, 나를',\n", - " '흘려보내지 마요, 나를',\n", - " '사랑해줘요 날, 날',\n", - " '놓치지 마요',\n", - " 'romanized',\n", - " '(annyeong)',\n", - " 'swibji anhjyo bappeujyo?',\n", - " 'wae ireohkekkaji haeya hana sipjyo?',\n", - " 'baraneun ge deororeobge manhjyo? (geureohjyo?)',\n", - " 'swigo sipjyo? sikkeureobjyo da seon-gasijyo? jibe gago sipjyo?',\n", - " '(jibe ittneundedo) jibe gago sipeul geoya',\n", - " 'gereol ddaen i noraereul',\n", - " 'chokollitcheoreom ggeonae meogeoyo',\n", - " 'pigonhaedo achim jeomsim bab jom chaengkyeo meogeoyo',\n", - " 'geureomyeon idda naega chinchanhaejulgeyo',\n", - " 'bogo sipeo',\n", - " 'manhi johahaeyo',\n", - " 'deo manhi anajugo sipeoyo',\n", - " 'sarang, sarang biseuthand geol haeyo',\n", - " 'eojjeomyeon jeongmal (saranghae)',\n", - " 'baegopeulddaen i noraereul',\n", - " 'achim sagwacheoreom ggeonae meogeoyo',\n", - " 'pigonhaedo achim jeobsim bab jom chaengkyeo meogeoyo',\n", - " 'gereomyeon idda bame jamdo jal ol geeyo',\n", - " 'himdeureoyo',\n", - " 'areumdawoseo',\n", - " 'arabwajwoyo, nareul',\n", - " 'horryeobonaeji mayo, nareul',\n", - " 'saanghaejwoyo nal, nal',\n", - " 'nohchiji mayo',\n", - " 'english',\n", - " \"it's not easy, huh?\",\n", - " \"i know you're busy\",\n", - " 'you wonder why you have to come this far',\n", - " 'they want so much (i know)',\n", - " 'you must want a break',\n", - " \"it's all so loud\",\n", - " 'all so annoying, right?',\n", - " \"i bet you want to go home (even when you're home)\",\n", - " 'i bet you do',\n", - " 'at such times, take out this song',\n", - " 'enjoy it like a piece of chocolate',\n", - " \"make sure you eat your meals even if you're tired\",\n", - " \"then i'll compliment you later\",\n", - " 'i miss you',\n", - " 'i like you a lot',\n", - " 'i want to hug you more often',\n", - " 'i feel something like love for you',\n", - " 'maybe i really do love you',\n", - " 'when you feel hungry, take out this song',\n", - " 'eat it like a morning apple',\n", - " \"make sure you eat your meals even if you're tired\",\n", - " \"then you'll be able to sleep better at night\",\n", - " \"i'm worn out\",\n", - " 'by your beauty',\n", - " 'please notice me',\n", - " \"please don't let me pass by\",\n", - " 'please love me',\n", - " \"don't let go\"]},\n", - " 'rap': {'meta': {'train_data': ['f-l-o-w-k-l-o-r-i-k-o-s (flowkloriokos), ahá',\n", - " 'l-e-c-h-o-w-s-k-i r-a-f-a-e-l (lechowski), ahá',\n", - " 'c-a-r-l-o-s t-a-l-a-v-e-r-a (es carlos, es carlos, carlos) seh (borracho)',\n", - " 'f-r-a-n-c-i-s-c-o s-a-n-z co (fran, fran) (dj, dj, dj)',\n", - " '2-0-0-2, zaragoza',\n", - " 'no, no, no, no, no, no, no, no (hay) competicion',\n", - " 'volume badhaade baby dance karna hai',\n", - " 'volume badhaade baby dance karna hai',\n", - " 'samne tu aaja romance karna hai',\n", - " 'party ke liye main jagah nahin dhoondta..',\n", - " 'saturday night..',\n", - " 'saturday night main apne aap ki nahi sunta',\n", - " 'saturday night main apne aap ki nahi sunta',\n", - " 'aap ki kya kisi ke baap ki nahi sunta..',\n", - " 'saturday night main apne aap ki nahi sunta',\n", - " 'aap ki kya kisi ke baap ki nahi sunta…',\n", - " 'battiyan bujha dee',\n", - " 'chalo ho jayein shuru',\n", - " 'ho battiyan bujha de',\n", - " 'chalo ho jayein shuru',\n", - " 'aaja chipak jaayein banke glue…',\n", - " 'chal bamb vi giraade',\n", - " 'sareyan nu tu hilaade',\n", - " 'teri aankhon ka main pyasa',\n", - " 'aaja pyaas bujha de..',\n", - " 'teri hi wajah se dil',\n", - " 'romeo sa ghoomta..',\n", - " 'saturday night..',\n", - " 'saturday night main apne aap ki nahi sunta',\n", - " 'saturday night main apne aap ki nahi sunta',\n", - " 'aap ki kya kisi ke baap ki nahi sunta..',\n", - " 'saturday night main apne aap ki nahi sunta',\n", - " 'aap ki kya kisi ke baap ki nahi sunta…',\n", - " 'monday ko hi set kar leti saturday ka plan',\n", - " 'mummy daddy ki na sunti',\n", - " 'party karne ki hai fan…',\n", - " 'jis bhi club mein enter kar deti',\n", - " 'lagaa deti hai jam',\n", - " 'laal dress kon ye ladki',\n", - " 'itni hot ye..oh damn…',\n", - " 'chal hatt…',\n", - " 'hai famous iske jalwe',\n", - " 'isko lena na tum halke',\n", - " 'jhalke jhalak jhalak jhall jhalke',\n", - " 'dekho beat pe kaise chhalke',\n", - " 'baby padh leti jo mann mein',\n", - " 'kehti sab ko hoon jogan main',\n", - " 'main kehta karle jo mann mein',\n", - " 'jo ki beat chale meri gun pe…',\n", - " 'volume badhaade baby dance karna hai',\n", - " 'samney tu aaja romance karna hai',\n", - " 'party ke liye main jagah nahin dhundta…',\n", - " 'saturday night..',\n", - " 'saturday night main apnay aap ki nahin sunta…',\n", - " 'saturday night main apnay aap ki nahin sunta',\n", - " 'aap ki kya kisi ke baap ki nahin sunta (x2)',\n", - " 'korean',\n", - " '무릎 꿇고 살 바엔 차라리 서서 난 죽어',\n", - " '나의 성공 내가 명분 있게 얻었지',\n", - " '그래서 고개 안 숙여',\n", - " '밤마다 나는 작업하면서 음악에 취했지',\n", - " '그래서 몸이 안 굳어',\n", - " '난 중독됐어, 이 숙취는 왠지 평생 갈 것 같아',\n", - " '그래서 속이 안 풀려 (oh damn)',\n", - " '몇 년 만에 dok2는 벌써 날 따라잡았지',\n", - " '우리 1년의 수익을 합치면 아마 20억이 나오겠지',\n", - " '4년 전에 내가 뮤뱅 1위 했을 때',\n", - " '그때 내 옆에 서 있었지',\n", - " '그래서 질투하고 배 아픈 거보다',\n", - " 'illionaire 보면 존나 멋있고 자랑스럽지, uh',\n", - " \"aomg, 1llie-1llie rolls-royce and two bentley's\",\n", - " '우리가 망할 것 같애?',\n", - " \"평생 we gon' get it, get it\",\n", - " \"hol' up wait a minute, minute\",\n", - " '우린 절대 지름길을 택하지 않았어',\n", - " '우리 자존심은 independent, whoo',\n", - " '나 좋아해줄 필요 없어',\n", - " '내 음악 들을 필요 없어, god damn it, uh, whoo',\n", - " '인정할 건 인정해',\n", - " 'respect 할 수 밖에 없는 hustle',\n", - " \"that's me, that's me\",\n", - " \"hol' up, wait that's, we that's we\",\n", - " \"it's aomg 1llie, god damn\",\n", - " \"it's aomg, 1llie, ay, ay\",\n", - " \"센 척하는 놈들 shit is child's play 쎄쎄쎄\",\n", - " '난 돈 세느라 바빠 밤을 새-새-새',\n", - " \"push start the whip don't need no 열쇠-쇠-쇠\",\n", - " '내 swag이 지금 몸 밖으로 새-새-새',\n", - " 'everything we do, everything we do',\n", - " \"it's worldwide homie worldwide\",\n", - " 'everything we do, everything we do',\n", - " \"it's worldwide homie worldwide\",\n", - " 'worldwide (worldwide, worldwide)',\n", - " 'worldwide, worldwide (worldwide, worldwide)',\n", - " '어느 곳을 가든 인정해',\n", - " 'worldwide, worldwide (worldwide, worldwide)',\n", - " '우리 음악 소리 울려 퍼지네',\n", - " 'worldwide, worldwide (worldwide, worldwide)',\n", - " '아무리 막아도, real recognize real',\n", - " '될 놈은 돼 homie',\n", - " 'worldwide, worldwide',\n", - " 'man, 이건 aomg and illy',\n", - " \"we so motherfuckin' hot like chilli\",\n", - " \"rockin' thousand dollar jean like billie\",\n", - " '이게 꿈이라면 절대 안 깰래',\n", - " '밑바닥에서 온 young millionaires',\n", - " \"전 세곌 다니며 we be killin' em\",\n", - " '허나 축하하기에는 아직 이르네',\n", - " '이건 또 하나의 시작일 뿐이기에',\n", - " '시간을 아껴, 나에겐 매일이 기회',\n", - " '걱정 따윈 없어, 우린 멋지기에',\n", - " 'baby tell me if you feel me',\n", - " \"걱정 말어, 내가 부자가 됐어도 i'm still me\",\n", - " 'these haters tryna kill me, god damn',\n", - " '너희 자식들이 감히 나를 시험해',\n", - " \"it's all about fuckin' money and the power\",\n", - " '이 모든 것을 갖게 해줘서 고마워',\n", - " \"shout to aomg whole world's ours\",\n", - " \"내 차는 amg make it fuckin' louder\",\n", - " '들어봐, 이건 나의 성공의 소리',\n", - " '이건 너와 나의 연결고리',\n", - " '하늘 높이 쌓여가는 내 돈이',\n", - " \"니 기분을 망쳤다면 baby i'm sorry\",\n", - " 'ha, 그게 바로 나의 일',\n", - " '될 놈은 돼, real recognize real',\n", - " '우린 또 뛰네, 더 나은 삶을 위해',\n", - " 'mo money and hoes',\n", - " '무엇보다 나를 위해, whoa',\n", - " '여자들은 우릴 찾지',\n", - " '우린 봤어 성공의 눈까지',\n", - " '몇 번이고 보여줄게, watch me',\n", - " '몇 개고 보여줄게 rolex watches',\n", - " 'i get money, 내가 죽을 때까지',\n", - " 'i get money, 너를 누를 때까지',\n", - " '아마 신이 나를 부를 때까지',\n", - " '아마 신이 나를 부를 때까지, whoa',\n", - " 'everything we do, everything we do',\n", - " \"it's worldwide homie worldwide\",\n", - " 'everything we do, everything we do',\n", - " \"it's worldwide homie worldwide\",\n", - " 'worldwide (worldwide, worldwide)',\n", - " 'worldwide, worldwide (worldwide, worldwide)',\n", - " '어느 곳을 가든 인정해',\n", - " 'worldwide, worldwide (worldwide, worldwide)',\n", - " '우리 음악 소리 울려 퍼지네',\n", - " 'worldwide, worldwide (worldwide, worldwide)',\n", - " '아무리 막아도, real recognize real',\n", - " '될 놈은 돼 homie',\n", - " 'worldwide, worldwide',\n", - " 'worldwide, worldwide',\n", - " \"aomg, illionaire motherfucker we don't need nothing\",\n", - " '뭘 봐, 뭘 봐, 내가 지나가면 다 쳐다보네',\n", - " \"i ain't mean mugging, i made zero to a million\",\n", - " \"i'm not a human being, bruh, i'm an illion\",\n", - " 'cha cha on the beat, bitch',\n", - " 'big things, big dreams, boy get rich',\n", - " '그게 내가 하는 것들이지',\n", - " '열심히 살기도 바쁜데 다들 뭣들인지',\n", - " '난 했던 말을 또 하고 또 하며 퍼트리지',\n", - " '한계는 없어, 쌓인 벽을 난 무너뜨리지',\n", - " 'illionaire zone 니넨 발도 못 들이지',\n", - " '넌 백날 rap 해 부모한테 돈도 못 드리지',\n", - " '난 매달 큰 돈뭉치 하나 꼭 드리지',\n", - " '우린 잘 나가는 동시에 또 착한 놈들이지',\n", - " '눈독 들이지 않아 나는 남의 것에',\n", - " '그니까 맘껏 니 꺼 챙겨 버려 텃세',\n", - " '난 절대 aomg 이길 맘이 없네',\n", - " '2010년부터 우린 형제처럼 컸네',\n", - " 'yes, i remember back in the days',\n", - " '족발 뜯고 볼링 치며 놀러 댕기던 때',\n", - " '방에 모여 jay park mini album 만들던 때',\n", - " '우리끼리 한 푼이라도 더 같이 애끼던 때',\n", - " '그때가 있기에 지금의 우리 셋이 여기 있지',\n", - " \"박재범, 신동갑, 이준경 let's get this\",\n", - " 'money and dreams',\n", - " 'aomg illy business doin good son',\n", - " '우린 우리 자신을 믿지',\n", - " '이건 깊지, 이건 쉽지 않은 일',\n", - " '누군 믿고 누군 씹지',\n", - " \"stop bitchin' come respect\",\n", - " 'it started from the scratch and we built',\n", - " \"it stop bitchin' come respect it\",\n", - " \"started from the fuckin'\",\n", - " 'scratch and we built it',\n", - " '우린 이제 우주로 우주로 우주로',\n", - " 'aomg 1llie 1llie',\n", - " '우린 이제 우주로 우주로 우주로',\n", - " 'everything we do, everything we do',\n", - " \"it's worldwide homie worldwide\",\n", - " 'everything we do, everything we do',\n", - " \"it's worldwide homie worldwide\",\n", - " 'worldwide (worldwide, worldwide)',\n", - " 'worldwide, worldwide (worldwide, worldwide)',\n", - " '어느 곳을 가든 인정해',\n", - " 'worldwide, worldwide (worldwide, worldwide)',\n", - " '우리 음악 소리 울려 퍼지네',\n", - " 'worldwide, worldwide (worldwide, worldwide)',\n", - " '아무리 막아도, real recognize real',\n", - " '될 놈은 돼 homie',\n", - " 'worldwide, worldwide',\n", - " 'romanization',\n", - " 'muleup kkulhgo sal ba-en chalali seoseo nan jug-eo',\n", - " 'naui seong-gong naega myeongbun issge eod-eossji',\n", - " 'geulaeseo gogae an sug-yeo',\n", - " 'bammada naneun jag-eobhamyeonseo',\n", - " 'eum-ag-e chwihaessji geulaeseo mom-i an gud-eo',\n", - " 'nan jungdogdwaess-eo',\n", - " 'i sugchwineun waenji pyeongsaeng gal geos gat-a',\n", - " 'geulaeseo sog-i an pullyeo',\n", - " 'myeoch nyeon man-e dokkineun beolsseo',\n", - " 'nal ttalajab-assji',\n", - " 'uli 1nyeon-ui su-ig-eul habchimyeon',\n", - " 'ama 20eog-i naogessji',\n", - " '4nyeon jeon-e naega myubaeng 1wi haess-eul ttae',\n", - " 'geuttae nae yeop-e seo iss-eossji',\n", - " 'geulaeseo jiltuhago',\n", - " 'bae apeun geoboda illieoneeo bomyeon',\n", - " 'jonna meos-issgo jalangseuleobji',\n", - " 'aomg, 1llie 1llie rolls-royce',\n", - " \"and two bentley's\",\n", - " 'uliga manghal geos gat-ae?',\n", - " \"pyeongsaeng we gon' get it get it\",\n", - " \"hol' up wait a minute minute\",\n", - " 'ulin jeoldae jileumgil-eul taeghaji anh-ass-eo',\n", - " 'uli jajonsim-eun independent',\n", - " 'na joh-ahae jul pil-yo eobs-eo',\n", - " 'nae eum-ag deul-eul pil-yo eobs-eo',\n", - " 'injeonghal geon injeonghae',\n", - " 'respect hal subakk-e eobsneun hustle',\n", - " \"that's me that's me\",\n", - " \"hol' up wait that's we that's we\",\n", - " \"it's aomg 1llie it's aomg\",\n", - " '1llie sen cheoghaneun nomdeul',\n", - " \"shit is child's play ssessesse\",\n", - " 'nan don seneula bappa bam-eul saesaesae',\n", - " \"push start the whip don't need no\",\n", - " 'yeolsoesoesoe nae swag-i',\n", - " 'jigeum mom bakk-eulo saesaesae',\n", - " 'everything we do',\n", - " 'everything we do',\n", - " 'its worldwide homie worldwide',\n", - " 'everything we do',\n", - " 'everything we do',\n", - " 'its worldwide homie worldwide',\n", - " 'worldwide worldwide worldwide',\n", - " 'eoneu gos-eul gadeun injeonghae',\n", - " 'worldwide worldwide',\n", - " 'uli eum-ag soli ullyeo peojine',\n", - " 'worldwide worldwide',\n", - " 'amuli mag-ado',\n", - " 'real recognize real',\n", - " 'doel nom-eun dwae homie',\n", - " 'worldwide worldwide',\n", - " 'man igeon aomg & illy',\n", - " 'we so motherf*ckin',\n", - " \"hot like chilli rockin' thousand\",\n", - " 'dollar jean like billie',\n", - " 'ige kkum-ilamyeon jeoldae an kkaellae',\n", - " 'mitbadag-eseo on young millionaires',\n", - " 'jeon segyel danimyeo we be killinem',\n", - " 'heona chughahagieneun ajig ileune',\n", - " 'igeon tto hanaui sijag-il ppun-igie',\n", - " 'sigan-eul akkyeo na-egen maeil-i gihoe',\n", - " 'geogjeong ttawin eobs-eo ulin meosjigie',\n", - " 'baby tell me if you feel me',\n", - " \"geogjeong mal-eo naega bujaga dwaess-eodo i'm still me\",\n", - " 'these haters try na kill me god damn',\n", - " 'neohui jasigdeul-i gamhi naleul siheomhae',\n", - " \"it's all about f*ckin money & the power\",\n", - " 'i modeun geos-eul gajge haejwoseo gomawo',\n", - " \"shout to aomg whole world's ours\",\n", - " 'nae chaneun amg make it f*ckin louder',\n", - " 'deul-eobwa igeon naui seong-gong-ui soli',\n", - " 'igeon neowa naui yeongyeolgoli',\n", - " 'haneul nop-i ssah-yeoganeun nae don-i',\n", - " \"ni gibun-eul mangchyeossdamyeon baby i'm sorry\",\n", - " 'ha geuge balo naui il',\n", - " 'doel nom-eun dwae real recognize real',\n", - " 'ulin tto ttwine deo na-eun salm-eul wihae',\n", - " 'mo money & hoes',\n", - " 'mueosboda naleul wihae wo',\n", - " 'yeojadeul-eun ulil chaj-ji',\n", - " 'ulin bwass-eo seong-gong-ui nunkkaji myeoch beon-igo',\n", - " 'boyeojulge watch me myeoch gaego boyeojulge',\n", - " 'rolex watches i get money',\n", - " 'naega jug-eul ttaekkaji',\n", - " 'i get money neoleul nuleul ttaekkaji',\n", - " 'ama sin-i naleul buleul ttaekkaji',\n", - " 'ama sin-i naleul buleul ttaekkaji wo',\n", - " 'everything we do',\n", - " 'everything we do',\n", - " 'its worldwide homie worldwide',\n", - " 'everything we do',\n", - " 'everything we do',\n", - " 'its worldwide homie worldwide',\n", - " 'worldwide worldwide worldwide',\n", - " 'eoneu gos-eul gadeun injeonghae',\n", - " 'worldwide worldwide',\n", - " 'uli eum-ag soli ullyeo peojine',\n", - " 'worldwide worldwide',\n", - " 'amuli mag-ado',\n", - " 'real recognize real',\n", - " 'doel nom-eun dwae homie',\n", - " 'worldwide worldwide',\n", - " 'worldwide worldwide aomg',\n", - " 'illionaire motha f*cka',\n", - " 'we dont need nothing',\n", - " 'mwol bwa mwol bwa naega jinagamyeon da chyeodabone',\n", - " 'i aint mean mugging',\n", - " 'i made zero to a million',\n", - " 'im not a human being bruh',\n", - " 'im an illion cha cha on the beat',\n", - " 'bitch big things big dreams',\n", - " 'boy get rich geuge naega haneun geosdeul-iji',\n", - " 'yeolsimhi salgido bappeunde',\n", - " 'dadeul mwosdeul-inji nan haessdeon mal-eul tto hago',\n", - " 'tto hamyeo peoteuliji hangyeneun eobs-eo',\n", - " 'ssah-in byeog-eul nan muneotteuliji',\n", - " 'illionaire zone ninen baldo mos deul-iji',\n", - " 'neon baegnal laebhae bumohante dondo mos deuliji',\n", - " 'nan maedal keun donmungchi hana kkog deuliji',\n", - " 'ulin jal naganeun dongsie',\n", - " 'tto chaghan nomdeul-iji',\n", - " 'nundog deul-iji anh-a',\n", - " 'naneun nam-ui geos-e geunikka mamkkeos',\n", - " 'ni kkeo chaeng-gyeo beolyeo teos-se',\n", - " 'nan jeoldae aomg igil mam-i eobsne',\n", - " '2010nyeonbuteo ulin hyeongjecheoleom keossne',\n", - " 'yes i remember back in the days',\n", - " 'jogbal tteudgo bolling chimyeo nolleo daeng-gideon ttae',\n", - " 'bang-e moyeo jay park',\n", - " 'miniaelbeom mandeuldeon ttae',\n", - " 'ulikkili han pun-ilado',\n", - " 'deo gat-i aekkideon ttae',\n", - " 'geuttaega issgie jigeum-ui uli ses-i yeogi issji',\n", - " 'bagjaebeom sindong-gab ijungyeong',\n", - " 'lets get this money and dreams',\n", - " 'aomg illy business doin good son',\n", - " 'ulin uli jasin-eul midji igeon gipji',\n", - " 'igeon swibji anh-eun il',\n", - " 'nugun midgo nugun ssibji',\n", - " 'stop b*tchin come respect',\n", - " 'it started from the scratch and we built',\n", - " 'it stop bitchin come respect it',\n", - " 'started from the f*ckin',\n", - " 'scratch and we built it',\n", - " 'ulin ije ujulo ujulo ujulo',\n", - " 'aomg 1llie 1llie',\n", - " 'ulin ije ujulo ujulo ujulo',\n", - " 'worldwide worldwide',\n", - " 'everything we do',\n", - " 'everything do',\n", - " 'its worldwide homie worldwide',\n", - " 'everything we do',\n", - " 'everything we do',\n", - " 'its worldwide homie worldwide',\n", - " 'worldwide worldwide worldwide',\n", - " 'eoneu gos-eul gadeun injeonghae',\n", - " 'worldwide worldwide',\n", - " 'uli eum-ag soli ullyeo peojine',\n", - " 'worldwide worldwide',\n", - " 'amuli mag-ado real recognize real',\n", - " 'doel nom-eun dwae homie',\n", - " 'ffffffffffffffffffffffffffffffffffffffffffffffffffuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuccccccccccccccccccccccccckkkkkkkkkkkkkkkkkk mmmeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ttoooooooooooooooooooobbbbbbbbbbbbbbbbbbiiiiiii',\n", - " \"jjjjjiiiizzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzllllleeeeeeeeeeee (ain't nobody like you)\",\n", - " 'yooooooooooooooooooooooooooooooooooouuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu ythhhhhhhhhhhhhhhhhhhhhhhhhhhheeeeeeeeeeeeeeeeeeeeeeeeeeeee beeeeeeeeeeeeeeeeeeeeeeeeeesssssssssssssssssssttttttttttttt ttttttttttttttoooooooooooooooooooooobbbbbbbbbbbbbbiiiiiiiiii showwwwwwww the whole worldwide that (fist me tobiii)',\n", - " 'makantbdlch m3a li t9atlo m3aya b walou',\n", - " 'makanti9ch f li kayl7sso w bghaw meni koulchi',\n", - " '3elmatni lwe9t kifach n9der ndir koulchi b walou',\n", - " 'kaynin chi klab khayfin kaynb7o w baghyini nemchi',\n", - " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", - " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", - " 'ma wellit ta kent, ma bdit ta fhemt',\n", - " 'ma mchit ta dmert, ma jit ta 7kemt',\n", - " '7lemti 3ad fe9t',\n", - " 'ma kmit ta bremt, ma mchit ta bssemt',\n", - " 'ma 9telt ta dfent, men ga3 ter9an dezt',\n", - " '3la kemmart ch7al men 3tay dezt',\n", - " '3tawni face b9it m3ahoum ta khnezt',\n", - " 'bghaw yrrefdouh lia ghi jab lah 9fezt',\n", - " 'yeah! ghi jab lah gmezt',\n", - " 'dert bhala ga3 ma fahem walou ghi tnazt',\n", - " 'bhal kima dima ghi sre7thom w dezt',\n", - " 'jme3thom w fresst',\n", - " 'ghaddor dora ghaddor semta ra ghayban chkoun sda9',\n", - " 'derbat lmouja tla7 koulchi ra benti lia katghra9',\n", - " \"kenti baghi t'sauva tekkiti 3la khouk w m3ak tahouwa hbat\",\n", - " 'nta ga3 makat3ref t3oum achdak tla7',\n", - " '7yatek koulha w nta habet',\n", - " '7yatek koulha ghi f blasstek',\n", - " '7yatek koulha te7t masque',\n", - " 'kayderbek do li wasslek',\n", - " 'ba9i ga3 makatmreg anari baz',\n", - " 'ta ra hada weld asfi far3k',\n", - " 'wa7lik w dima sar3k',\n", - " '3aték 3la wednik w dahrk',\n", - " 'khayb ga3 makantfare9',\n", - " 'makantbdlch m3a li t9atlo m3aya b walou',\n", - " 'makanti9ch f li kayl7sso w bghaw meni koulchi',\n", - " '3elmatni lwe9t kifach n9der ndir koulchi b walou',\n", - " 'kaynin chi klab khayfin kaynb7o w baghyini nemchi',\n", - " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", - " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", - " '3dyani kay7lmo b 9abri',\n", - " '7yati kangouliha sabri',\n", - " \"wakha l'mass ga3 f dahri\",\n", - " 'ba9i wa9ef m3a mhom se7a kanbri',\n", - " 'kandir ghi li kanbghi',\n", - " '3chrani ktar ghaliban vrai',\n", - " '7e9ada rass malhom ghi lhadri w asslan ga3 makaybano lia b ndadri',\n", - " 'charger, charger, cadrer.. rapapa hombré',\n", - " 'wa drari finma mchiti dima kaynin katrin shayfeen mafia padré',\n", - " 'la 3ad fhemtek machi lkhatri',\n", - " 'ghir jnouni 9ba7 chouiya dassrin',\n", - " 'kent ana wyahoum mkhatrin',\n", - " '3tinak flow nta bitch daba gha jri biyen',\n", - " 'yallah ban wa3er biyen',\n", - " 'ghatkhra ga3 ma ghaddim',\n", - " 'ghayb9aw jouj',\n", - " 'nta ghatb9a f touche',\n", - " 'ta hada ghi weld asfi 7na li kaynin',\n", - " 'flow dyal hna',\n", - " \"kabrin b'chwaya la tss7ab lik mirikaniyin\",\n", - " 'ghanb9aw ghi 7na',\n", - " 'a9wad disque flow team ta la galha wahd fina kaybiyen',\n", - " 'kay7elmo b l3a9a',\n", - " '7na kanjibo l3a9a w ghanzido maghanb9ach 7assl',\n", - " 'ghandirha 7it bghawni nb9a wesst l7ez9a',\n", - " 'bach 3ad ygoulou 3lia shobee rak rajel',\n", - " 'ghandirha 7it asslan la ga3 ma dertha ghaygoulou 3lia tatrapi w mala9i ma takel',\n", - " 'ghandirha ghandirha... whoo!',\n", - " 'ghansauvé khouti w 3chrani li m3aya kat9atel',\n", - " 'w fuck dak tkhawer',\n", - " 'makantbdlch m3a li t9atlo m3aya b walou',\n", - " 'makanti9ch f li kayl7sso w bghaw meni koulchi',\n", - " '3elmatni lwe9t kifach n9der ndir koulchi b walou',\n", - " 'kaynin chi klab khayfin kaynb7o w baghyini nemchi',\n", - " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", - " '7it 3arfini m9owd, 7it 3arfini m9owd',\n", - " 'yeah yeah! yeah yeah!',\n", - " 'yeah yeah! yeah yeah!',\n", - " 'ana ghadi f tri9i ta 7ed ma y9ad y7bassni',\n", - " 'goulihoum rani ba9i hna w ta 7ed may9dar ymassni',\n", - " 'ma ghaydi menni walou bnadm ayb9a ghi tab3ni',\n", - " 'wana li f rassi f rassi yea man chkoun nta makatbanchli',\n", - " 'goulihoum rani b3id w maghatchedo ghir lberd',\n", - " 'jibli ahssen wahd 3ndk ghadi tchedo gha lberd',\n", - " 'koulhoum 3arfini chkansswa 3arfini m9wd kan7red',\n", - " 'w f koula ster kan7eto koulhoum kay3erfoni chkan9ssed',\n", - " 'ana ghadi f tri9i ta 7ed ma ghay9ad y7bassni',\n", - " 'goulihoum rani ba9i hna w ta 7ed may9dar ymassni',\n", - " 'ma ghaydi menni walou bnadm ayb9a ghi tab3ni',\n", - " 'wana li f rassi f rassi yea man chkoun nta makatbanchli..',\n", - " 'korean',\n", - " '내 가족, 내 fan들 aomg를 위해',\n", - " '난 매달 수십 번씩 저 하늘 구름 위에',\n", - " '최선을 다해 인생은 한 번뿐인 기회',\n", - " '너무 멀리 앞서 나가서 난 돌아봐 내 미래, yeah',\n", - " '니네 주문한걸 배달 왔어',\n", - " 'delivery in two languages, 깨달았어',\n", - " '현명하게 이기는 법, 내가 개발했어',\n", - " 'rap 못해도 내 진정성을 의심해봐라 sucker',\n", - " '1, 2, punch, yah, major and the under',\n", - " 'we taking over my solders to grimy for you bustah’s',\n", - " 'haters see you later, 꺼져, 니 얼굴은 후진',\n", - " '일식집처럼 미소를 찾을 수 없어, oh',\n", - " '그래서 부정적이지',\n", - " '그래서 친구될 수 없고 나의 적이지',\n", - " '그래서 맨날 애기처럼 울고 talking bull shit',\n", - " '머리에 똥만 들어있나',\n", - " '그건 기저귀지, let’s go',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my b-boy stance',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my b-boy stance',\n", - " '지구에 큰 운석 drop, uh, 난 굴러들어온 돌',\n", - " 'amoeba란 북산에 윤대협이 온 꼴',\n", - " '난 주인공이 아니어도 알지, 내가 best',\n", - " '이젠 shoot 때리고 득점, 맛들였던 pass',\n", - " '정신 바짝 차려, 선후배 안 따지고 선도',\n", - " '난 퀄리티에 배팅 더 올리지',\n", - " '니가 걸 돈은 목숨 밖에 없어',\n", - " '내 공책이 데스노트',\n", - " \"i’m the mofuckin' zion like 효섭과 해솔\",\n", - " 'i crush you, 눌러 공기 빼고 압축 배송',\n", - " '다른 방법도 난 가능해, 널 돌려보낼 행동',\n", - " '개 잡듯 잡아줄 시간 project 이름 개놈 수지 맞게',\n", - " '설계된 내 건축학 개론',\n", - " '가진 게 없다고 절대 기죽지 말고',\n", - " '가진 게 많다고 절대 깝치지마',\n", - " '그게 내가 r-e-s-p-e-c-t',\n", - " '널 존중하는 방법 다 같은 선에 위치',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my bboy stance',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my bboy stance',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my bboy stance',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my bboy stance',\n", - " 'romanization',\n", - " 'nae gajog nae paendeul aomgleul wihae',\n", - " 'nan maedal susib beonssig',\n", - " 'jeo haneul guleum wie',\n", - " 'choeseon-eul dahae insaeng-eun han beonppun-in gihoe',\n", - " 'neomu meolli apseo nagaseo',\n", - " 'nan dol-abwa nae milae',\n", - " 'nine jumunhangeol baedal wass-eo',\n", - " 'delivery in two languages',\n", - " 'kkaedal-ass-eo hyeonmyeonghage igineun beob',\n", - " 'naega gaebalhaess-eo',\n", - " 'laeb moshaedo nae jinjeongseong-eul uisimhaebwala',\n", - " 'sukkah 1 2 punch yah',\n", - " 'major and the under',\n", - " 'we taking over my solders',\n", - " 'to grimy for you bustah’s haters',\n", - " 'see you later',\n", - " 'kkeojyeo ni eolgul-eun hujin',\n", - " 'ilsigjibcheoleom misoleul chaj-eul su eobs-eo',\n", - " 'geulaeseo bujeongjeog-iji',\n", - " 'geulaeseo chingudoel su eobsgo naui jeog-iji',\n", - " 'geulaeseo maennal aegicheoleom ulgo',\n", - " 'talking bull shit',\n", - " 'meolie ttongman deul-eoissna',\n", - " 'geugeon gijeogwiji',\n", - " 'let’s go',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my b-boy stance',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my b-boy stance',\n", - " 'jigue keun unseog drop uh',\n", - " 'nan gulleodeul-eoon dol',\n", - " 'amebalan bugsan-e yundaehyeob-i on kkol',\n", - " 'ju-ingong-i anieodo alji',\n", - " 'naega beseuteu ijen syus ttaeligo',\n", - " 'deugjeom masdeul-yeossdeon paeseu',\n", - " 'jeongsin bajjag chalyeo seonhubae an ttajigo seondo',\n", - " 'nan kwollitie baeting deo olliji',\n", - " 'niga geol don-eun mogsum bakk-e eobs-eo',\n", - " 'nae gongchaeg-i deseunoteu',\n", - " 'i’m the mofuckin zion like',\n", - " 'hyoseobgwa haesol i crush you',\n", - " 'nulleo gong-gi ppaego abchug baesong',\n", - " 'daleun bangbeobdo nan ganeunghae',\n", - " 'neol dollyeobonael haengdong',\n", - " 'gae jabdeus jab-ajul sigan',\n", - " 'peulojegteu ileum gaenom suji majge',\n", - " 'seolgyedoen nae geonchughag gaelon',\n", - " 'gajin ge eobsdago jeoldae gijugji malgo',\n", - " 'gajin ge manhdago jeoldae kkabchijima',\n", - " 'geuge naega r e s p e c t',\n", - " 'neol jonjunghaneun bangbeob da gat-eun seon-e wichi',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my bboy stance',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my bboy stance',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my bboy stance',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'i ain’t worried bout nothing',\n", - " 'so i stand back chillin’ in my bboy stance',\n", - " 'yeah yah',\n", - " 'lets get it',\n", - " 'beta mere jese bhaut kam bhaut kam',\n", - " 'jo bhi sune bole awesome awesome',\n", - " 'kuch dino se badal ni dikhe the',\n", - " 'fir se le aaya raga rap ka mausam',\n", - " 'beta mere jese bhaut kam bhaut kam',\n", - " 'jo bhi sune bole awesome awesome',\n", - " 'kuch dino se badal ni dikhe the',\n", - " 'fir se le aaya raga rap ka mausam',\n", - " 'rap rap, har gali mein hai chaar rapper',\n", - " 'jab se aaya jamnapaar maine li hai keh kar',\n", - " 'mere se behter shayad main he kyuki',\n", - " 'seekha sehkar',\n", - " 'mere se ladna mat',\n", - " 'fir darna na kuch kardu main agar',\n", - " 'bandook wala gangsta ni',\n", - " 'main hu lekhak',\n", - " 'kalam hathiyar shabd guste gehre jaise dagger',\n", - " 'aeee jaise maut ka main chehra',\n", - " 'tu bhokta main behra',\n", - " 'khauf ka hai pehra',\n", - " 'mera hosla na thehra',\n", - " 'sar pe hai sehra',\n", - " 'ghar se hai ladka nikla',\n", - " 'dekho kya hai kehra',\n", - " 'main graduated tu hai baarvi main',\n", - " 'ye rap ka school hai',\n", - " 'na farsi mein',\n", - " 'karta rap main matra bhasha bhartiya',\n", - " 'jab bhi muh khola hai muh se nikle aandhi ye',\n", - " 'kranti hai aadhe se zyada pe to kaam ni hai',\n", - " 'ladne bhidne ki baate karte',\n", - " 'par in mein jaan ni hai',\n", - " 'beta mere jese bhaut kam bhaut kam',\n", - " 'jo bhi sune bole awesome awesome',\n", - " 'kuch dino se badal ni dikhe the',\n", - " 'fir se le aaya raga rap ka mausam',\n", - " 'beta mere jese bhaut kam bhaut kam',\n", - " 'jo bhi sune bole awesome awesome',\n", - " 'kuch dino se badal ni dikhe the',\n", - " 'fir se le aaya raga rap ka mausam',\n", - " 'mausam ki baat aayi to lo tufaan',\n", - " 'baari aayi meri band karlo dukaan',\n", - " 'naya product industry k liye hai taiyaar',\n", - " 'ab samay hai mera main nahi kisi ka gulaam',\n", - " 'aeee',\n", - " 'soch aage kya hoga',\n", - " 'bacha kuch jitna bhi',\n", - " 'game saara over',\n", - " 'what?, did you really mean what you said',\n", - " 'yes nashe me nahi main hu sober',\n", - " 'ab manao khair thoda dur raho',\n", - " 'ye sabko',\n", - " 'chahe kitna bada surma ho',\n", - " 'mujhe ghur na brooo',\n", - " 'meri thodi hat ti hai',\n", - " 'self your realization meri satki hai',\n", - " 'rapper na main',\n", - " 'mera game alag',\n", - " 'khilaaf keh kar to dekh',\n", - " 'main hu dan-gerous',\n", - " 'tera chehra hai fake',\n", - " 'you are strange to us',\n", - " 'tabhi to kehta hu mujhse na khel tu ab',\n", - " 'beta mere jese bhaut kam bhaut kam',\n", - " 'jo bhi sune bole awesome awesome',\n", - " 'kuch dino se badal ni dikhe the',\n", - " 'fir se le aaya raga rap ka mausam',\n", - " 'beta mere jese bhaut kam bhaut kam',\n", - " 'jo bhi sune bole awesome awesome',\n", - " 'kuch dino se badal ni dikhe the',\n", - " 'fir se le aaya raga rap ka mausam',\n", - " '(wise)',\n", - " '\"wata~!\"',\n", - " 'kiri komi taichou',\n", - " 'gongu to doujini nunchaku flow',\n", - " 'teriyaki wa erimaki to kage nami',\n", - " 'supiidoo reesaa',\n", - " 'kyakkou abiru chinshu',\n", - " \"i'll beat you anyway\",\n", - " 'celebrity death match',\n", - " 'the game be played',\n", - " 'come to step up',\n", - " 'you got beef? well my bad',\n", - " 'i got chicken',\n", - " 'hori moguru mogura',\n", - " 'keep diggin!',\n", - " '(ilmari)',\n", - " 'non stop na kauntaa bakari uchi kaesu tabi ni',\n", - " 'passhon moya shiteku',\n", - " 'yonin tag abaredasuzo',\n", - " 'ikki ni bunbun',\n", - " 'tsukeyo supiikaa maximum',\n", - " 'pookaa feisu ni narezu ni notocchau',\n", - " 'b-boys motto yocchau',\n", - " 'serebu na gyaru mo',\n", - " 'kureru made odocchau',\n", - " '*uhh~ welcome',\n", - " 'ahh~ celebrity death match',\n", - " 'uhh~ welcome',\n", - " 'ahh~ celebrity death match',\n", - " 'uhh~ welcome',\n", - " 'ahh~ celebrity death match',\n", - " '(verbal)',\n", - " \"yes i'm dressed in fresh na\",\n", - " 'bape no masshu kyappu',\n", - " 'soshite suniikaa oroshitate',\n", - " 'mate mate! orera funky4',\n", - " 'non fikushon, nontarantiino',\n", - " 'kore ga suki na minna wa amiigo',\n", - " 'nihongo shaberu gaijin like sankon',\n", - " 'a! mc tachi ooke ga',\n", - " 'every time i step up, come on!',\n", - " 'ore wa kill suru mc',\n", - " 'kimi no namae wa bill...',\n", - " 'wakaru daro ketsumatsu',\n", - " 'byooki na ore no bijinesu no tetsugaku',\n", - " '\"1 1\"! ?hmmm...',\n", - " '4 thousand oh! nauman zou',\n", - " 'yori extra large kagaku hannou',\n", - " \"tomerare nai 30's booibando\",\n", - " 'mou ichido? nara say, \"one more!\"',\n", - " '*repeat',\n", - " '(ryo-z)',\n", - " 'busere no macchi desu wasagina channee',\n", - " 'paiotsu kaidee',\n", - " 'shisuu tsumande monde teebotan 2',\n", - " 'kakeagaru maunten jiifuu',\n", - " 'erumoo miigoo enaimo miigoo',\n", - " 'chanto funbetsu shitara asa no hiikoo',\n", - " 'nigo zu hirugiroppon b-boy',\n", - " 'yakiteri izuboo bring the izunoo',\n", - " '(ryo-z)',\n", - " 'serebu no desumacchi',\n", - " 'sawagina nee chan',\n", - " 'oppai dekai',\n", - " 'sushi tsumande monde 2 tanteeboo',\n", - " 'kakeagaru maunten fuji',\n", - " 'moeru gomi moe nai gomi',\n", - " 'chanto funbetsu shitara asa no koohii',\n", - " 'nigo roppongi hiruzu b-boy',\n", - " 'teriyaki booizu bring the noise',\n", - " '(teriyaki boyz)',\n", - " 'oh macchimeiku da gibu appu',\n", - " 'shibori dasu made',\n", - " 'uchi nomeshite ringu auto',\n", - " 'hinkaku utagawashii renchuu',\n", - " 'hikkaku serebu ni genjuuchuui to buuingu',\n", - " 'tenkai wa yuui ni motteku',\n", - " 'kyuusho pinpointo shuutingu',\n", - " 'saa gongu naru monku aru nara',\n", - " 'pay the price if you',\n", - " 'play the game',\n", - " 'chhaap chodey,(yea yea yea)',\n", - " 'agar scene bhai ka toh',\n", - " 'laundey haath chodein (kaarnaame kaarnaame)',\n", - " 'aye, sarey chhaap chodein',\n", - " 'khule aam jeetey, yea yea, sadakchhaap laundey',\n", - " 'ladke sadakchhaap, sarey kadak chhaap chodey (sadakchhaap)',\n", - " 'raaton ko kaarnaame, saarey khatarnaak horey',\n", - " 'humble as fuck, ki humse pehle aap bolein',\n", - " 'par scene bhai ka toh sabse pehla haath chodein (sabse pehle)',\n", - " 'ladke sadakchhaap, sarey kadak chhaap chodey (sadakchhaap)',\n", - " 'raaton ko kaarnaame, saarey khatarnaak horey',\n", - " 'humble as fuck, ki humse pehle aap bolein',\n", - " 'par scene bhai ka toh sabse pehla haath chodein',\n", - " 'mai, le raha luft har',\n", - " 'sath sathi hain group par',\n", - " 'chakachaundh andhera,scene dekhun main ruk kar',\n", - " 'nazaare aise jo ki din mein, ho jate rukhsat',\n", - " 'ladke nikle ghar se raaton ko jaise guptchar',\n", - " 'yeah!jab jaati so aadamjaat',\n", - " 'sadakchhaap ghar se bahar, hote shor ke samwaad',\n", - " 'sadko pe aag, lagane ke hain saadhan sath',\n", - " 'pareshaan soti duniya ghor aatankwaad',\n", - " 'ye ladke, raaton ko jaage, na aate kisi ke hath ye',\n", - " 'badhte hain lafde aur laafe',\n", - " 'aur badhte laaton ke khaate',\n", - " 'raatein ye kaaton se kaatein',\n", - " 'andheri raaton ke khaatir',\n", - " 'tehelka naako pe jaake',\n", - " 'achal bahaav, gyan ki bhaanti, koi rok na pata',\n", - " 'mere saarey gian se saathi',\n", - " 'police waley peeche, hairaan hai kaafi',\n", - " 'mere bhai rukte na',\n", - " 'kyun pareshaan hai khaakee',\n", - " 'yeah!',\n", - " 'inki jaan se jaari',\n", - " 'agyaan saarey dene lage yahan jaan si kaari',\n", - " 'har roz, nikle, aadhi raat shikari',\n", - " 'inki wardi na lagti humko hamari shaan se bhaari',\n", - " 'yeah, dikhte bhale se',\n", - " 'kaleshi ek ek',\n", - " 'sharaab aadhi raat leke',\n", - " 'yahan band na hote theke',\n", - " 'unn laundon ke liye, jo raaton ko sadak pe rehte',\n", - " 'kal ki hai fikar ni jinko aaj pure mazey lete',\n", - " 'prem bhaav, nahi ladaai ki vibe',\n", - " 'par bhai ki eye se eye milaai toh bhai ki jeb mein knife',\n", - " 'bhai se naa hi ched leni, sachhai bhari ye raaye',\n", - " 'hain bande psycho type',\n", - " 'yahin baisakh aur yahin katai',\n", - " 'par chhod ladaai, tu bhai ki white si light ki bike pe lele ride',\n", - " 'kaali raatein, khaali sadke, aadhi raaton ki gehrai',\n", - " 'mein ghuske, thoda ruk ke',\n", - " 'ab laeye dai ki chai',\n", - " 'din ki dhoop se door kya, pasand hai sheher ki night ki life',\n", - " 'yeah!',\n", - " 'baaki sab hai chhalaawa',\n", - " 'ek bhai mera lava na koi bhai ke alaava',\n", - " 'jaan hatheli par sada, na koi dikhawa',\n", - " 'ye hood bhaiyon ka, full bhaichara bawa',\n", - " 'sarey sath, ghere mein, beaton pe murder half horey',\n", - " 'maare haath, duniya ki reeton pe brother maar kodey',\n", - " 'haramkhor ye, system ke liye awaaz loaded',\n", - " 'raat hote hi kaarnaame sadak pe saarey khatarnaak horey',\n", - " 'ladke sadakchhaap, sarey kadak chhaap chodey (sadakchhaap)',\n", - " 'raaton ko kaarnaame, saarey khatarnaak horey',\n", - " 'humble as fuck, ki humse pehle aap bolein',\n", - " 'par scene bhai ka toh sabse pehla haath chodein (sabse pehle)',\n", - " 'ladke sadakchhaap, sarey kadak chhaap chodey (sadakchhaap)',\n", - " 'raaton ko kaarnaame, saarey khatarnaak horey',\n", - " 'humble as fuck, ki humse pehle aap bolein',\n", - " 'par scene bhai ka toh sabse pehla haath chodein',\n", - " 'ladke sadakchhaap sadakchhaap',\n", - " 'kare kaarnaame khatarnaak khatarnaak',\n", - " 'yeah yeah!',\n", - " 'ladke sadakchap sadakchaap',\n", - " 'kare kaarnaame khatarnaak khatarnaak',\n", - " 'yeah yeah!',\n", - " 'sadakchaap (sadakchhaap)',\n", - " 'chalne de!',\n", - " 'asal hip hop, yeah sadakchhaap!',\n", - " 'kiski galti kiske sar pe',\n", - " 'kisse jalti kisse banti, huh?',\n", - " 'line deri aage se tu jo',\n", - " 'to fark naii padta kiski bandi ho',\n", - " '101',\n", - " 'daaka daala maala maal hai crew',\n", - " 'shaakal aaya shakalaka boom',\n", - " 'me kaka, tiki taka kaatu chu',\n", - " 'laaya saath me bhaala yabadabadoo',\n", - " 'bhai 101',\n", - " 'kaale dhabbe paale',\n", - " 'hum pille',\n", - " '101',\n", - " 'ek se ek hai mere 100 bhes',\n", - " 'nishana laga feka shuriken',\n", - " 'ken aur ryu bhare shoryuken (ay)',\n", - " 'peeli agle din tha supersonic',\n", - " 'haan thi lagi padi meri show k din (skrr)',\n", - " 'scooty sawari bhi na ruki (skkr)',\n", - " 'noida se leke nizamuddin (ha)',\n", - " 'kehete jo maa ka hi khata',\n", - " 'tu ab aake dekh aa zara teri mmm..',\n", - " '101',\n", - " '(android ka charger hai terepe?)',\n", - " 'phone dekha battery 2% hai',\n", - " 'room kiya hotbox mara stone cold flow log bole may mei bhi thand hai',\n", - " 'merme ghamand hai',\n", - " 'thoda bhot',\n", - " 'zyada nai',\n", - " 'bhoka bhot',\n", - " 'kata nai',\n", - " 'khota shauk',\n", - " 'pala nai',\n", - " 'dhuua dhake aasmaan',\n", - " 'dilli meri baat maan',\n", - " 'har safed ke yaha pe saat ranng hai',\n", - " 'aise baate jamti nahi to door se dekh ke khush rao',\n", - " 'dekho khali meri image nai mai acha nai',\n", - " 'hu asli',\n", - " 'is baat me koi bhi shaq na ho',\n", - " 'ke hamari saari parvarish',\n", - " 'sadak shiksha praapti me beeti',\n", - " 'bt fir na ho',\n", - " 'jab padhae hume koi patti',\n", - " 'fode nakki',\n", - " 'chal ho nakki ya se oye',\n", - " 'aaho!',\n", - " 'aa khada ho chal',\n", - " 'ye ra stage dikha wow wow factor',\n", - " 'kiya fir naam, mara chaanta phenk kar',\n", - " 'dikhe jo chor',\n", - " 'kiye 1-2 tour',\n", - " 'ghooma 7-8 sheher',\n", - " 'mile 1-2 actor',\n", - " 'sar na chadhe (huh)',\n", - " 'paisa mere zara sa, yahan',\n", - " 'jane mujhe sara jaha',\n", - " 'shah jahan',\n", - " 'sar dard, karanama',\n", - " 'haath maar, maradonna',\n", - " 'mat kar, pari pana',\n", - " 'kabse keh ra hoon na',\n", - " 'faeda kya choomke',\n", - " 'joot jab rakh ke de sakte thoot pe, uhh',\n", - " 'baje hum loop pe (hum loop pe)',\n", - " 'chalte rahe tum bas ek hi loop pe, uhh',\n", - " 'soche ham dabbe se bahar',\n", - " 'soche ke tu kare ball bhot sahi',\n", - " 'aake khaega har tappe pe chaar',\n", - " 'kare koi par war nai seedhe maut tera parvardigaar',\n", - " 'yaha muh pe bolne waale kamm hain aur',\n", - " 'zyada jo baatein kare thodi badake (thodi si)',\n", - " 'aaya tha karne me maze par',\n", - " 'niklunga unki me thodi si sadake (ch*tiye)',\n", - " 'inn jaise pe hota afsos hai',\n", - " 'soch ye dono pe boli bhi lagalein',\n", - " 'par rehna matt galat faimi me hum',\n", - " 'upar se koodenge ghodi bhi banake',\n", - " 'ha tha jazbati me pehle',\n", - " 'par abhi nahi',\n", - " 'abhi nahi',\n", - " 'abhi kehna jo woh keh le',\n", - " 'baad me',\n", - " 'me bhool na jaaun, bhaav bhi khaun, ya na nibhau',\n", - " 'rishto ka theka ni liya',\n", - " 'abhi se apne bhi ajnabi hain kuch jo bt the thode se',\n", - " 'yaad hai aati jab hai quarter ander aise rishte baje mere lawde pe',\n", - " 'me bola me pehle bhi rehta tha touch me nahi',\n", - " 'ye bata abhi kya alag hai? (kuch bhi nahi)',\n", - " 'aur pehle se karra tha hustle jab',\n", - " 'papa ko lagta tha beta nasamajh hai',\n", - " 'hoga jo bola tha pehle se pata tha thoda to khone ko dono pe bacha ni kuch bhi',\n", - " 'bole ye',\n", - " 'dolo se bolu me zoro se sick hu me zorro se piccolo bharose bethe to',\n", - " 'jhuk beam',\n", - " 'khaaoge',\n", - " 'paer rakhe dono',\n", - " 'nao pe',\n", - " 'jalegi badi',\n", - " 'chao me',\n", - " 'fategi poori',\n", - " 'gaao ki',\n", - " 'karenge jab ye',\n", - " 'shaolin',\n", - " 'usse pehle jao',\n", - " 'laao gin',\n", - " 'hum ruke ni to',\n", - " 'foul ye',\n", - " 'kare me khelu rowdy',\n", - " 'to bata kata cake kaha hai',\n", - " 'batega sabme tu leke aa (leke aa)',\n", - " 'kahi aisi ni unity dekhega',\n", - " 'gharwaalo ko pata tha chhati se ladka ye',\n", - " 'mandir me maatha nahi tekega',\n", - " '101',\n", - " 'daaka daala maala maal hai crew',\n", - " 'shaakal aaya shakalaka boom',\n", - " 'me kaka, tiki taka kaatu chu',\n", - " 'laaya saath me bhaala yabadabadoo',\n", - " 'bhai 101',\n", - " 'kaale dhabbe paale',\n", - " 'hum pille',\n", - " '101',\n", - " 'ek se ek hai mere 100 bhes',\n", - " 'yeogi buteora, modu moyeora',\n", - " \"we gon' party like, lilililalala~\",\n", - " 'mameul yeoreora, meoril biwora',\n", - " 'bureul jjipyeora lilililalala~',\n", - " 'jeongdabeun mutjji malkko geudaero badadeuryeo neukkimdaero ga alright~',\n", - " 'haneureul majuhago du soneul',\n", - " 'tta wiro jeo wiro nalttwikko sipeo-oh~',\n", - " 'nanananana nanananana~',\n", - " 'wow fantastic baby~',\n", - " 'dance! (ooh-hoo~)',\n", - " 'i wanna dance dance dance da-dance',\n", - " 'fantastic baby~',\n", - " 'dance! (ooh-hoo~)',\n", - " 'i wanna dance dance dance da-dance',\n", - " 'wow fantastic baby~',\n", - " 'i nanjangpane, hey!',\n", - " 'kkeutpan wang charye, hey!',\n", - " 'ttangeul heundeulkko',\n", - " 'sam buneuron bulchungbunhan race (wait! )',\n", - " 'bunwigineun gwayeol~ huh!',\n", - " 'catch me on fire~ huh!',\n", - " 'jinjjaga natanattta nananana~',\n", - " 'hanabuteo yeolkkaji',\n", - " 'modeun ge da han suwi',\n", - " 'morae beolpan wireul michin',\n", - " 'deusi ttwieobwado, geotteunhan kuri',\n", - " 'haneureun chungbunhi',\n", - " 'neomuna pureunikka',\n", - " 'amugeottto mutjji mallan mariya',\n", - " 'neukkiran mariya naega nugunji',\n", - " 'ne simjangsorie yematkae',\n", - " 'ttwigi sijakae magi kkeunnal ttae kkajiye~',\n", - " \"i can't, baby don't stop this\",\n", - " 'oneureun tarakae',\n", - " 'micheo barakae ganeungeoya~',\n", - " 'nanananana nanananana~',\n", - " 'wow fantastic baby~',\n", - " 'dance! (ooh-hoo~)',\n", - " 'i wanna dance dance dance da-dance',\n", - " 'fantastic baby~',\n", - " 'dance! (ooh-hoo~)',\n", - " 'i wanna dance dance dance da-dance',\n", - " 'wow fantastic baby~',\n", - " 'boom! shakalaka! boom! shakalaka! boom! shakalaka!',\n", - " 'dance dance dance da-dance',\n", - " 'boom! shakalaka! boom! shakalaka! boom! shakalaka!',\n", - " 'da-da-da-da dance dance~',\n", - " 'nal ttara jababol temyeon babwa',\n", - " 'nan yeongwonhan ttanttara',\n", - " 'oneul ppam geumgiran naegen eopsseo~',\n", - " 'mama just let me be your lover',\n", - " 'i hollan sogeul neomeo oh-oh-oh-oh~ nanananana~',\n", - " 'meorikkeutpputeo balkkeutkkaji visual eun shock~',\n", - " 'nae gamgageun somunnan kkun apsseoganeun chok',\n", - " 'namdeulppodaneun ppareun georeum',\n", - " 'chawoni dareun jeomeum',\n", - " 'eoreumeoreumeoreum (hold up! ) nanananana~',\n", - " 'ne simjangsorie yematkae',\n", - " ...]},\n", - " 'data': ['hangul',\n", - " 'life is what you make of it 남보다 한 페이지 일찍 넘겨',\n", - " '고등래퍼 땐 이미 작업한 뒤 with swings and verbal',\n", - " '나의 잠재력 눈치 까고 서둘러 죽이려던 놈들',\n", - " '간곡한 부탁 다 거절 놓고 다음 광고 콘티를 훑고 있어',\n", - " '흥미 없어요 집 공개는 yeah',\n", - " '내가 날 가졌기 때문 yeah',\n", - " '네 정서를 배려하는 차원에서',\n", - " '수입에 대한 건 노코멘트 yeah',\n", - " 'go back to 2014',\n", - " '아무도 몰랐지 편견은 반전 줄 때 효과 있지',\n", - " 'i was 24 at show me 4 and i be 26 at season 6',\n", - " '미디어와 내 안목을 합치면 it will be big benefit',\n", - " '껄끄러운 인간관계는 정리할게 여지없이',\n", - " '왜냐 빛이 강한 곳 주변엔 늘 벌레들이 득실이니',\n", - " 'you get it fanxy',\n", - " \"you can't handle fanxy child\",\n", - " \"you can't handle fanxy child\",\n", - " \"i don't like your fashion style\",\n", - " '다 뒤처지느라 고생이 많다',\n", - " '길거리를 거닐 때에 데시벨은 에버랜드 yeah',\n", - " '1, 2년 새에 이제 더는 없는 vacation',\n", - " 'oh yeah, gentleman 네 여친은 떨어 내 이름에',\n", - " '질투는 건강에 해롭기에 get away, uh',\n", - " '내 featuring은 danger',\n", - " 'hmm 많은 래퍼를 죽였어 트랙에서 ooh',\n", - " 'we make make pancake, yeah',\n", - " '네 콧대는 눌리게 돼 있어',\n", - " 'different r&b (r&b)',\n", - " 'i don’t care mainstream or indie scene',\n", - " '어떤 시스템에 들어가기엔',\n", - " '덩치가 커진 원숭이띠들 fanxy',\n", - " \"you can't handle fanxy child\",\n", - " \"you can't handle fanxy child\",\n", - " \"i don't like your fashion style\",\n", - " '다 뒤처지느라 고생이 많다',\n", - " \"i'mma rip it up like a monster (내 dna)\",\n", - " '우리 92는 제일 맛있어 (yummy yummy)',\n", - " '듣고 판단해 디자이너',\n", - " 'now wait wait wait wait wait 방금 위험해',\n", - " '아 참 이건 표절곡 잘못했다간 욕먹어',\n", - " '댓글 적어 khalifa 형 오졌고',\n", - " '떼창할 땐 가사는 몰라도 돼 맞죠',\n", - " '최고는 싫고 supreme, preme, preme은 멋져',\n", - " 'so we slay we slay we slay',\n", - " 'whippin whippin whippin',\n", - " '손오공이 된 기분 비행기는 근두운',\n", - " '세계를 누빌 잔나비띠들 fanxy',\n", - " \"you can't handle fanxy child\",\n", - " \"you can't handle fanxy child\",\n", - " \"i don't like your fashion style\",\n", - " '다 뒤처지느라 고생이 많다',\n", - " 'get in my 2411 gts는 초록색 버스',\n", - " '맨 뒷자리에서부터 내일 나 이사해 통유리',\n", - " '한강이 다 보이네',\n", - " 'no more minor 이 melody처럼 now i’m fuckin major',\n", - " '벌레 같은 게 나풀대 나부끼네 나부끼네 나부끼네',\n", - " '누운 자리 이부자리를 개 자리를 개 자리를 개 자리를 개',\n", - " '똥이 차 있네 차 있기에 네 아가리에 잘 관리해',\n", - " '이 새끼 fanxy you 잘 들어봐 봐',\n", - " '안에 매미 소리 녹음돼 있어',\n", - " \"sippin' bottles of champagne\",\n", - " '병을 따자 아무도 날 못 건드려',\n", - " '내 친구들이 방패 티키타카 티키타카 너넬 갖고 놀아',\n", - " '내 친구들은 너넬 붙였다 뗐다 스티커 티커 존나 쉬워',\n", - " '우린 한치 두치 세치 네치 뿌꾸뿌꾸빠만 불러도 야',\n", - " '1위를 찍어 fanxy',\n", - " \"you can't handle fanxy child\",\n", - " \"you can't handle fanxy child\",\n", - " \"i don't like your fashion style\",\n", - " '다 뒤처지느라 고생이 많다',\n", - " 'romanized',\n", - " 'rife it what you make of it',\n", - " 'namboda han peiji iljjik neomgyeo',\n", - " 'godeungraepeo ttaen imi jageophan dwi',\n", - " 'with swingt and verbal',\n", - " 'naui jamjaeryeok nunchi kkago',\n", - " 'seodulleo jugiryeodeon nomdeul',\n", - " 'gangokhan butak da geojeol nohgo',\n", - " 'daeum gwanggo kontireul hultgo isseo',\n", - " 'heungmi eopseoyo jip gonggaeneun yeah',\n", - " 'naega nal gajyeossgi ttaemun yeah',\n", - " 'ne jeongseoreul baeryeohaneun chawoneseo',\n", - " 'suibe daehan geon nokomenteu yeah',\n", - " 'go back to 2014',\n", - " 'amudo mollassji pyeongyeoneun',\n", - " 'banjeon jul ttae hyogwa issji',\n", - " 'i wat 24 at show me 4',\n", - " 'and i be 26 at season 6',\n", - " 'midieowa nae anmogeul hapchimyeon',\n", - " 'it will be big benefit',\n", - " 'kkeolkkeureoun ingangwangyeneun',\n", - " 'jeongrihalge yeojieopsi',\n", - " 'waenya bicci ganghan got jubyeonen',\n", - " 'neul beolledeuri deuksirini',\n", - " 'you get it fanxy',\n", - " 'u can’t handle fanxy child',\n", - " 'u can’t handle fanxy child',\n", - " 'i don’t like your fashion style',\n", - " 'da dwicheojineura gosaengi manhda',\n", - " 'gilgeorireul geonil ttaee',\n", - " 'desibereun ebeoraendeu yeah',\n", - " '1 2nyeon saee ije deoneun eopsneun vacation',\n", - " 'oh yeah gentleman',\n", - " 'ne yeochineun tteoreo nae ireume',\n", - " 'jiltuneun geongange haeropgie get away',\n", - " 'uh',\n", - " 'nae picheoringeun danger',\n", - " 'hmm manheun raepeoreul jugyeosseo teuraegeseo ooh',\n", - " 'we make make paenkeikeu yeah',\n", - " 'ne kosdaeneun nullige dwae isseo',\n", - " 'different r&b r&b',\n", - " 'i don’t care mein seuteurim or indisin',\n", - " 'eotteon siseuteme deureogagien',\n", - " 'deongchiga keojin wonsungittideul fanxy',\n", - " 'u can’t handle fanxy child',\n", - " 'u can’t handle fanxy child',\n", - " 'i don’t like your fashion style',\n", - " 'da dwicheojineura gosaengi manhda',\n", - " 'imma rip it up like a monster nae dna',\n", - " 'uri 92neun jeil masisseo',\n", - " 'yummy yummy',\n", - " 'deutgo pandanhae dijaineo',\n", - " 'now wait wait wait wait wait',\n", - " 'banggeum wiheomhae',\n", - " 'a cham igeon pyojeolgok',\n", - " 'jalmoshaessdagan yokmeogeo',\n", - " 'daesgeul jeogeo khalifa hyeong ojyeossgo',\n", - " 'ttechanghal ttaen gasaneun mollado dwae majjyo',\n", - " 'choegoneun silhgo',\n", - " 'supreme preme premeeun meosjyeo',\n", - " 'so we slay we slay we slay',\n", - " 'whippin whippin whippin',\n", - " 'sonogongi doen gibun bihaenggineun geunduun',\n", - " 'segyereul nubil jannabittideul fanxy',\n", - " 'u can’t handle fanxy child',\n", - " 'u can’t handle fanxy child',\n", - " 'i don’t like your fashion style',\n", - " 'da dwicheojineura gosaengi manhda',\n", - " 'get in my 2411',\n", - " 'ktsneun choroksaek beoseu',\n", - " 'maen dwisjarieseobuteo',\n", - " 'naeil na isahae tongyuri',\n", - " 'hangangi da boine',\n", - " 'no more minor i melodycheoreom',\n", - " 'now i’m fuckin major',\n", - " 'beolle gateun ge napuldae',\n", - " 'nabukkine nabukkine nabukkine',\n", - " 'nuun jari ibujarireul gae',\n", - " 'jarireul gae jarireul gae jarireul gae',\n", - " 'ttongi cha issne cha issgie',\n", - " 'ne agarie jal gwanrihae',\n", - " 'i saekki fanxy you jal deureobwa bwa',\n", - " 'ane maemi sori nogeumdwae isseo',\n", - " \"sippin' bottlet of champagne\",\n", - " 'byeongeul ttaja amudo nal mot geondeuryeo',\n", - " 'nae chingudeuri bangpae',\n", - " 'tikitaka tikitaka neonel gajgo nora',\n", - " 'nae chingudeureun neonel butyeossda ttessda',\n", - " 'seutikeo tikeo jonna swiwo',\n", - " 'urin hanchi duchi sechi nechi',\n", - " 'ppukkuppukkuppaman bulleodo ya',\n", - " '1wireul jjigeo fanxy',\n", - " 'u can’t handle fanxy child',\n", - " 'u can’t handle fanxy child',\n", - " 'i don’t like your fashion style',\n", - " 'da dwicheojineura gosaengi manhda',\n", - " '식케이 아주 조금 가사korean',\n", - " '사치라고 하지 다들 yeah',\n", - " '닥치라고 하지 나는 yeah',\n", - " 'i like you lil bit',\n", - " 'like you lil bit',\n", - " 'like you just a lil bit',\n", - " 'like you lil bit',\n", - " 'like you lil bit',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " '널 갖고싶단말이 아니야',\n", - " '너랑 그냥 하고싶단 말이 아니야',\n", - " '물론 잡고싶은게 내 맘이야',\n", - " '너 말고 내가 말한건 시간이야',\n", - " '헛소리같은 말 시간이 약',\n", - " '지금 시간이 지남',\n", - " '후회할 게 확실하니깐',\n", - " '급해보였다고 실망이라는',\n", - " '말은 하지마 난 비상이야',\n", - " 'baby 마셔 내가 네 맘에',\n", - " '들어 보일 때까지',\n", - " 'baby 걱정이 없어질 거야',\n", - " '어린애같이',\n", - " 'baby 정말로 좋아',\n", - " '너가 그렇게 나를 대할 때',\n", - " 'like you lil bit',\n", - " '사치라고 하지 다들 yeah',\n", - " '닥치라고 하지 나는 yeah',\n", - " 'i like you lil bit',\n", - " 'like you lil bit',\n", - " 'like you just a lil bit',\n", - " 'like you lil bit',\n", - " 'like you lil bit',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'tick tock 흘러가기 바쁜',\n", - " '우리 식탁의 시간',\n", - " '근데 식지 않는 메뉴가 뭔지',\n", - " '피차 아니까',\n", - " '어서 네 입에다 넣어',\n", - " '그래 그거 물론 내 마음까지',\n", - " '뭐 사실 식어도 괜찮아',\n", - " '난 차가울 때 먹음 더 맛나지',\n", - " 'don’t waste it baby',\n", - " '기다림은 사치라고 하지 다들',\n", - " '이 밤은 지나가도 돼',\n", - " '난 아침에 더 많이 하는 type',\n", - " '언제나 누군갈',\n", - " '가지려고 하기 전에 나는',\n", - " '먼저 나를 다',\n", - " '가지라고 하지 말은',\n", - " '사치라고 하지 다들 yeah',\n", - " '닥치라고 하지 나는 yeah',\n", - " 'i like you lil bit',\n", - " 'like you lil bit',\n", - " 'like you just a lil bit',\n", - " 'like you lil bit',\n", - " 'like you lil bit',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " '넌 내게 다가왔지',\n", - " '아주 조금씩 ay',\n", - " 'i was sippin’ on moet',\n", - " '아주 조금씩 ay',\n", - " 'she wanna fuck wit me now ay',\n", - " '말로는 섣불리 날 ay',\n", - " '넘보려 하지 말라고 하지만',\n", - " '누가 봐도 bluffin이야 ay',\n", - " '다른 여자들이 올 때',\n", - " '어느새 넌 내 무릎에',\n", - " '오 네 가슴은 true thang',\n", - " 'this one night romance',\n", - " 'yea baby we gotta get goin',\n", - " 'to your house or my house',\n", - " '네 전화번호까진 몰라도 돼',\n", - " 'cuz i like you lil mufuckin bit yea',\n", - " '사치라고 하지 다들 yeah',\n", - " '닥치라고 하지 나는 yeah',\n", - " 'i like you lil bit',\n", - " 'like you lil bit',\n", - " 'like you just a lil bit',\n", - " 'like you lil bit',\n", - " 'like you lil bit',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'romanization',\n", - " 'sachirago haji dadeul yeah',\n", - " 'dakchirago haji naneun yeah',\n", - " 'i like you lil bit',\n", - " 'like you lil bit',\n", - " 'like you just a lil bit',\n", - " 'like you lil bit',\n", - " 'like you lil bit',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'neol gajgosipdanmari aniya',\n", - " 'neorang geunyang hagosipdan mari aniya',\n", - " 'mullon japgosipeunge nae mamiya',\n", - " 'neo malgo naega malhangeon siganiya',\n", - " 'heossorigateun mal sigani yak',\n", - " 'jigeum sigani jinam',\n", - " 'huhoehal ge hwaksilhanikkan',\n", - " 'geuphaeboyeossdago silmangiraneun',\n", - " 'mareun hajima nan bisangiya',\n", - " 'baby masyeo naega ne mame',\n", - " 'deureo boil ttaekkaji',\n", - " 'baby geokjeongi eopseojil geoya',\n", - " 'eorinaegati',\n", - " 'baby jeongmallo joha',\n", - " 'neoga geureohge nareul daehal ttae',\n", - " 'like you lil bit',\n", - " 'sachirago haji dadeul yeah',\n", - " 'dakchirago haji naneun yeah',\n", - " 'i like you lil bit',\n", - " 'like you lil bit',\n", - " 'like you just a lil bit',\n", - " 'like you lil bit',\n", - " 'like you lil bit',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " '{verse 2: simon dominic]',\n", - " 'tick tock heulleogagi bappeun',\n", - " 'uri siktagui sigan',\n", - " 'geunde sikji anhneun menyuga mwonji',\n", - " 'picha anikka',\n", - " 'eoseo ne ibeda neoheo',\n", - " 'geurae geugeo mullon nae maeumkkaji',\n", - " 'mwo sasil sigeodo gwaenchanha',\n", - " 'nan chagaul ttae meogeum deo masnaji',\n", - " 'don’t waste it baby',\n", - " 'gidarimeun sachirago haji dadeul',\n", - " 'i bameun jinagado dwae',\n", - " 'nan achime deo manhi haneun type',\n", - " 'eonjena nugungal',\n", - " 'gajiryeogo hagi jeone naneun',\n", - " 'meonjeo nareul da',\n", - " 'gajirago haji mareun',\n", - " 'sachirago haji dadeul yeah',\n", - " 'dakchirago haji naneun yeah',\n", - " 'i like you lil bit',\n", - " 'like you lil bit',\n", - " 'like you just a lil bit',\n", - " 'like you lil bit',\n", - " 'like you lil bit',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'neon naege dagawassji',\n", - " 'aju jogeumssik ay',\n", - " 'i was sippin’ on moet',\n", - " 'aju jogeumssik ay',\n", - " 'she wanna fuck wit me now ay',\n", - " 'malloneun seotbulli nal ay',\n", - " 'neomboryeo haji mallago hajiman',\n", - " 'nuga bwado bluffiniya ay',\n", - " 'dareun yeojadeuri ol ttae',\n", - " 'eoneusae neon nae mureupe',\n", - " 'o ne gaseumeun true thang',\n", - " 'this one night romance',\n", - " 'yea baby we gotta get goin',\n", - " 'to your house or my house',\n", - " 'ne jeonhwabeonhokkajin mollado dwae',\n", - " 'cuz i like you lil mufuckin bit yea',\n", - " 'sachirago haji dadeul yeah',\n", - " 'dakchirago haji naneun yeah',\n", - " 'i like you lil bit',\n", - " 'like you lil bit',\n", - " 'like you just a lil bit',\n", - " 'like you lil bit',\n", - " 'like you lil bit',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'i slide in late night',\n", - " 'have my time',\n", - " 'with you may i fuck with you',\n", - " 'hold me tight',\n", - " \"play your fav song yeah that's right\",\n", - " 'feel the vibe',\n", - " 'play yo fav song no quiet nights',\n", - " 'wanna let ya know everything gonna be alright (alright)',\n", - " \"wake you up in the morn with a sun's smile\",\n", - " 'hold me tight (hold me tight)',\n", - " 'get it right',\n", - " 'yeah we gotta rise',\n", - " 'you decide (you decide)',\n", - " 'yeah we gotta ride',\n", - " \"ain't no lie\",\n", - " 'hold me tight (hold me tight)',\n", - " 'get it right',\n", - " 'yeah we gotta rise',\n", - " 'you decide (you decide)',\n", - " 'yeah we gotta ride',\n", - " \"ain't no lie\",\n", - " 'sangat bane archan, nirasha darshata darpan harpal',\n", - " 'darshan de chalkar ek chintavishay mere dar par',\n", - " 'kya khulta kaksh ye parivartan ka',\n", - " 'ghulta vish hai, samay anshan ka',\n", - " 'dhadkan jo thaame sargam toh',\n", - " 'haskar hota abhinandan haan',\n", - " 'all my life, all my life',\n", - " 'oo i has to fight, all my life',\n", - " 'oo i has to rise',\n", - " 'oo i has to ride',\n", - " 'all my life all my life',\n", - " 'oo i has to grind (all my life)',\n", - " 'gotta get it right',\n", - " 'running outta time',\n", - " 'todo bandhan rakho khair, ayy',\n", - " 'jo hoga so hona hi hai',\n", - " 'na, roko kadam karo sair, ayy',\n", - " 'toh hota safar hai ye tay',\n", - " 'ye, duniya khilauna hi hai',\n", - " 'na khud ko khona aur hona vijay',\n", - " 'girey na hosh aur bass labon par muskurahatein na ye chipein',\n", - " '(ayy)',\n", - " 'gire rozana sawaalo tale',\n", - " 'buzdil zamana hazaaro jale',\n", - " 'pata na wafa ka waado mein chal hai',\n", - " 'salaahein salaakhon mein kaate samay',\n", - " 'ho rawana gile,jo bhi hain dil mein rakhe',\n", - " 'na hai andaza tujhe',\n", - " 'ki jab ye tarana baje',\n", - " 'dhoonde wajeh na dil, pal hai ye tere liye',\n", - " 'hold me tight',\n", - " \"play your fav song yeah that's right\",\n", - " 'feel the vibe',\n", - " 'play yo fav song no quiet nights',\n", - " 'wanna let ya know everything gonna be alright (alright)',\n", - " \"wake you up in the morn with a sun's smile\",\n", - " 'hold me tight (hold me tight)',\n", - " 'get it right',\n", - " 'yeah we gotta rise',\n", - " 'you decide (you decide)',\n", - " 'yeah we gotta ride',\n", - " \"ain't no lie\",\n", - " 'hold me tight (hold me tight)',\n", - " 'get it right',\n", - " 'yeah we gotta rise',\n", - " 'you decide (you decide)',\n", - " 'yeah we gotta ride',\n", - " \"ain't no lie\",\n", - " 'aankhein khuli naya din',\n", - " 'hausle baandhu main chala bass raahon pe khauf na',\n", - " 'aankhon mein jaaun mai mil',\n", - " 'andheron se, ladun main roshni dhoondhu',\n", - " 'raahein kahan meri khojun',\n", - " 'saaye bhi apne mai khodun',\n", - " 'bhram me fasa yahaan',\n", - " 'asal mein kaun main khud se hi poochun',\n", - " 'all my life, all my life',\n", - " 'oo i has to fight, all my life',\n", - " 'oo i has to rise',\n", - " 'oo i has to ride',\n", - " 'all my life all my life',\n", - " 'oo i has to grind (all my life)',\n", - " 'gotta get it right',\n", - " 'running outta time',\n", - " 'kiska main sath du, kisko main chor du',\n", - " 'kis se main kisse hi tod du',\n", - " 'ya, sath chalun main hamesha',\n", - " 'jeevan mein hisse mai jodlu',\n", - " 'khudke balboote bass paana hai khwaab ko',\n", - " 'bhujhne na dena hai bheetar ki aag ko',\n", - " 'kar na tu koshishe band, jhok ke mann',\n", - " 'archane bhale ye laakh ho',\n", - " 'rokna chaahein par rukna na tu',\n", - " 'hawa khilaaf mai rukh naya lu',\n", - " 'choona gagan paana mukaam',\n", - " 'panchhi azaad main udna hai yu',\n", - " 'ki upar main neeche hain saari ye mushkilein',\n", - " 'beete pal saare ye khusi mein',\n", - " 'saath mein kuch hi hain, kyun',\n", - " 'khushi tu aap mein dhoondh',\n", - " 'aye, bhai kyun dukhi hai tu',\n", - " 'hold me tight',\n", - " \"play your fav song yeah that's right\",\n", - " 'feel the vibe',\n", - " 'play yo fav song no quiet nights',\n", - " 'wanna let ya know everything gonna be alright (alright)',\n", - " \"wake you up in the morn' with a sun's smile\",\n", - " 'hold me tight (hold me tight)',\n", - " 'get it right',\n", - " 'yeah we gotta rise',\n", - " 'you decide (you decide)',\n", - " 'yeah we gotta ride',\n", - " \"ain't no lie\",\n", - " 'hold me tight (hold me tight)',\n", - " 'get it right',\n", - " 'yeah we gotta rise',\n", - " 'you decide (you decide)',\n", - " 'yeah we gotta ride',\n", - " \"ain't no lie\",\n", - " \"ain't no lie\",\n", - " '(mansheel gujral)',\n", - " 'yes i’m havin’ fun',\n", - " 'paisa, fame, stardom',\n", - " 'yes i’m havin’ fun',\n", - " 'paisa, fame, stardom',\n", - " 'yes i’m havin’ fun',\n", - " 'paisa, fame, stardom',\n", - " '(lil golu)',\n", - " 'sunlo mere yaaron aur',\n", - " 'haters bhi sun lo',\n", - " 'hindi, angreji, nepali kuch bhi chun lo',\n", - " 'it’s your boy lil golu yamuna park ka',\n", - " 'chhoriyan chhoti, shauqeen lambi car ka',\n", - " 'delhi ka local londa',\n", - " 'dum hai balls mein',\n", - " 'kal tak ghuma metro mein, aaj rolls mein',\n", - " 'kiraye ki na hai ye hai mehnat ki kamai ki',\n", - " 'r8 meri, ye lambi gaadi bhai ki',\n", - " 'madhyam-wargiye pariwar se',\n", - " 'pitaji in sarkari job',\n", - " 'sarkari school ka ladka',\n", - " 'sunta tha hip-hop',\n", - " 'karle kuch vyapaar',\n", - " 'kehte thhe rishtedaar',\n", - " 'rishtedaaron ke liye middle finger ab taiyaar',\n", - " 'sacchi i’m having fun, paisa, fame, stardom',\n", - " 'sacchi saari baatein inki ek ek line bum',\n", - " 'seduce kare beat kyuki beat mein seduction',\n", - " 'yo yo honey singh! faadu production',\n", - " 'ye suno.. dup-step, ye suno',\n", - " 'dup-step.. ye suno..',\n", - " 'dup-step.. ye suno..',\n", - " 'dup-step',\n", - " '(mansheel gujral)',\n", - " 'yes i’m having fun',\n", - " 'paisa, fame, stardom',\n", - " 'yes i’m having fun',\n", - " 'paisa, fame, stardom',\n", - " '(honey singh rap)',\n", - " 'mujhe sab pata hai kon kon mujhse sadte hain',\n", - " 'mere baare me vaahiyaat baatein kartein hai',\n", - " 'peeth piche bhonkein',\n", - " 'saamne mujhse darte hain',\n", - " 'mere aage aake phir kyun paji paji karte hai?',\n", - " 'aise logon ko ram ram meri door se',\n", - " 'wo bhi kya kare bichare hain majboor se',\n", - " 'kalaa ki hai kami tabhi to chaalein chalte hain',\n", - " 'ab tak papa ki pocket-money pe palte hain',\n", - " 'ye meri hai duaa rab kare tumhe kaamyab',\n", - " 'mile paisa, mile daulat-shauhrat bhi behisaab',\n", - " 'khaali dimaag hai tera',\n", - " 'jisme shaitaan ka ghar',\n", - " 'oye shaitaan! thoda tu bhi khuda se darr',\n", - " 'kitna samjhaaun tujhe aisa na kar',\n", - " 'o kaka gal sun aidaan na kar',\n", - " 'tainu kehnna main',\n", - " 'tang na kar',\n", - " 'so what you want?',\n", - " 'fame? money? ae le, aa fad',\n", - " 'ye suno..',\n", - " 'ye suno',\n", - " 'dup-step',\n", - " 'ye suno',\n", - " 'dup-step',\n", - " 'ye suno',\n", - " '(mansheel gujral)',\n", - " 'yes i’m having fun',\n", - " 'paisa, fame, stardom',\n", - " 'yes i’m having fun',\n", - " 'paisa, fame, stardom',\n", - " 'yes i’m having fun',\n", - " 'paisa, fame, stardom',\n", - " 'crackdow’nas manz zaamit, curfew manz maraan',\n", - " 'haqoomat yi haptan hunz, nindrah karaan',\n", - " 'ais raemit sawaabun manz, khewaan haram',\n", - " 'bunker yeti gharan manz, bha qabrah khanaan',\n", - " 'ais qabrah khanaan',\n", - " 'bache, budha, jawaan, maraan',\n", - " 'dafan yeti zindagi saaeen',\n", - " 'che poz ha dapakh yeti bozi na kaeen',\n", - " 'chu apuz yi soori, qahawat yi praaeen',\n", - " 'maqbool yi qahawat, shahadat yi meiyien',\n", - " 'shahadat yi saaeen',\n", - " 'bha qus?',\n", - " 'bha qus?',\n", - " 'zhan bha dhul-qarnyan',\n", - " 'churan fur shahmat',\n", - " 'meh khudai sundh taaqat',\n", - " 'lekhaan bha qayamat',\n", - " 'dhazaan chi kaghaz',\n", - " 'chus tath asmaanas peth yot na che waatakh',\n", - " 'hip hop miyien ibaadat',\n", - " 'himaqat yi chaen, meh khilaaf yuas waqaalat',\n", - " 'laanat! asi na golaimi hunz aadat',\n", - " 'banaawat yi saen, na salaimi hunz aadat',\n", - " 'yim chakaan asi maerith',\n", - " 'kus diwaan ijaazat?',\n", - " 'che kya yi kasheer huh?',\n", - " 'jahnum ya janat?',\n", - " 'yim kani kya wanaan?',\n", - " 'yim aathan manz basaan',\n", - " 'yeli goli chalaan',\n", - " 'yeli kori maraan',\n", - " 'ghar kith kani paknaavo',\n", - " 'duftar che bandh saeri',\n", - " 'sachool na khulaini',\n", - " 'ragan manz baemaeni',\n", - " 'yim che vote travaan chani',\n", - " 'chus bha yim khatra qahar aasmaeni',\n", - " 'shahran ti ghaaman manz',\n", - " 'bamb ti bambaeri',\n", - " 'ghum ti manmaeni',\n", - " 'khoon ti waraeni',\n", - " 'zulum o situm ti wajari',\n", - " 'yi? asi na yi soori qabool',\n", - " 'yeti na chalaan kah asool',\n", - " 'kemsundh yi soori qasoor?',\n", - " 'soni yi soori fitoor , soni yi soori fitoor',\n", - " 'yah chu kasheer!',\n", - " 'namthas manz ais yim gharan manz kadaan asi',\n", - " 'gunan sith karaan kath, dekan peth thawan ais',\n", - " 'zani ais wachaan ti shuir ais wadaan yeti',\n", - " 'shuir waniti wadaan yeti',\n", - " 'nowjawan chu budhaan yeti',\n", - " 'insaafas pat pat chu bechun pewaan asi',\n", - " 'zaelim khewan haq topath na pewan ais',\n", - " 'poz ha wano ti bane pakistanik',\n", - " 'yeti kath na karan kah awaamich',\n", - " 'yeti kath na karan kah azaabich',\n", - " 'azadi saeen yimo dabovmich',\n", - " 'yi vaadee waraeni manz ravmich',\n", - " \"kith kani hekj asith yi ja'iz?\",\n", - " \"prichhu panin’is paan'as, kith kani heki asith yi ja'iz?\",\n", - " 'kyazi karo bardaash?',\n", - " 'kyazi bozav bakwaas?',\n", - " 'yim karaan asi badnaam, yeli wathaan chhi awaaz',\n", - " 'galathas khilaaf, maarakh masoomas chhe dinaai inaam',\n", - " 'afsar, leader yeti munji kadaan',\n", - " 'pon’s yim aati yim timnaai lewaan',\n", - " 'saani khoonuk khewaan',\n", - " 'kya faida miyani wannuk',\n", - " 'yeti yi na badlaav kah',\n", - " 'wanaan karsa che himat, che mili panin rah',\n", - " 'yi? asi na yi soori qabool',\n", - " 'yeti na chalaan kah asool',\n", - " 'kemsundh yi soori qasoor?',\n", - " 'soni yi soori fitoor , soni yi soori fitoor',\n", - " 'yah chu kasheer!',\n", - " 'korean',\n", - " 'dpr we gang gang (gang gang)',\n", - " 'rep it every day, ay (ay ay)',\n", - " \"i ain’t feelin' them fakes (yahh)\",\n", - " 'they don’t entertain, yeah',\n", - " 'dpr we gang gang (whoo)',\n", - " 'dpr we gang gang (whoo)',\n", - " 'dpr we gang gang (whoo)',\n", - " 'dpr we gang gang',\n", - " 'dpr we gang gang (okay now)',\n", - " 'dpr we gang gang (drop that sound)',\n", - " 'dpr we gang gang (tear it down)',\n", - " 'dpr we gang gang (when around)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'dpr we gang gang (hold us down)',\n", - " '오늘도 완벽한 그림을 그려',\n", - " '또 꿈을 꾸며 나는 오늘을 잊어',\n", - " 'i look at the stars and i look in the mirror',\n", - " '\"너는 날 믿고 나는 널 더 믿어',\n", - " '알고있지 가끔가다 힘들 거?',\n", - " '언제나 지켜 가족과 너의 신념',\n", - " '행동 보다 말로 하는건 참 쉬워',\n", - " '그러니 실천으로, 다음 page\"',\n", - " \"'till i die’에서도 내가 말했지, yeah\",\n", - " 'imma be a legend you just watch and see, yeah',\n", - " 'hater들은 여전히 말만 많지',\n", - " '괜찮아, 이젠 fan들이 나의 곁에 있지, yeah',\n", - " '힘이 되는 응원 너가 고맙기에',\n", - " '1분1초 빨리 지금 너한테',\n", - " '너를 위한 음악, studio late night',\n", - " '오늘 밤에도 난 thinking to my self',\n", - " '(who am i?) now i know',\n", - " 'thinking to my self',\n", - " 'yeah yeah, i don’t know, just got me',\n", - " 'thinking to my (whoo) self (who am i?)',\n", - " 'thinking to my (who am i?)',\n", - " 'yeah yeah, i don’t know, just got me',\n", - " 'thinking to my self',\n", - " 'dpr we gang gang',\n", - " 'dpr we gang gang (okay now)',\n", - " 'dpr we gang gang (drop that sound)',\n", - " 'dpr we gang gang (tear it down)',\n", - " 'dpr we gang gang (when around)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'okay, 일단 sit down and rewind the time',\n", - " '24시를 돌려, 그래, 먼 옛날',\n", - " 'sns는 없고 motorlla 하면 당연 부자',\n", - " '또 dance 음악이 유행했던 back to 1993',\n", - " '엄마가 고생끝에 낳은 홍다빈',\n", - " '여러 문제 많았지만 결국 극복했고',\n", - " '끝내 전설이 될 아이',\n", - " 'fast forward, yeah, look at me now, whoa',\n", - " '지금의 위치는 무대 위야, uh',\n", - " '이제서야 느낌이 와',\n", - " '내 앞에 보여지는 여러 fan들의 얼굴',\n", - " '내가 그토록 그리던 그림이고 그리고 이젠',\n", - " 'with my one and only brothers, 펼쳐 새 시대',\n", - " 'yeah, look at my team now',\n", - " 'yeah, shit got me',\n", - " 'thinking to my self',\n", - " '(who am i?) now i know',\n", - " 'thinking to my self',\n", - " 'yeah yeah, i don’t know, just got me',\n", - " 'thinking to my (whoo) self (who am i?)',\n", - " 'thinking to my (who am i?)',\n", - " 'yeah yeah, i don’t know, just got me',\n", - " '(coming to you live)',\n", - " 'dpr we gang gang',\n", - " 'dpr we gang gang (okay now)',\n", - " 'dpr we gang gang (drop that sound)',\n", - " 'dpr we gang gang (tear it down)',\n", - " 'dpr we gang gang (when around)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'dpr we gang gang (gang gang)',\n", - " 'rep it every day ay (ay ay)',\n", - " \"i ain’t feelin' them fakes (yahh)\",\n", - " 'they don’t entertain aye',\n", - " 'dpr we gang gang? (whoo)',\n", - " 'dpr we gang gang? (whoo)',\n", - " 'dpr we gang gang (whoo)',\n", - " 'dpr we gang gang',\n", - " 'dpr we gang gang (okay now)',\n", - " 'dpr we gang gang (drop that sound)',\n", - " 'dpr we gang gang (tear it down)',\n", - " 'dpr we gang gang (when around)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'romanization',\n", - " 'dpr we gang gang (gang gang)',\n", - " 'rep it every day ay (ay ay)',\n", - " 'i ain’t feelin them fakes (yahh)',\n", - " 'they don’t entertain yeh',\n", - " 'dpr we gang gang? (whoo)',\n", - " 'dpr we gang gang? (whoo)',\n", - " 'dpr we gang gang (whoo)',\n", - " 'dpr we gang gang',\n", - " 'dpr we gang gang (okay now)',\n", - " 'dpr we gang gang (drop that sound)',\n", - " 'dpr we gang gang (tear it down)',\n", - " 'dpr we gang gang (when around)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'oneuldo wanbyeoghan geulim-eul geulyeo',\n", - " 'tto kkum-eul kkumyeo naneun oneul-eul ij-eo',\n", - " 'i look at the stars &',\n", - " 'i look in the mirror',\n", - " '“neoneun nal midgo naneun neol deo mid-eo',\n", - " 'algoissji gakkeumgada himdeulgeo?',\n", - " 'eonjena jikyeo gajoggwa neoui sinnyeom',\n", - " 'haengdong boda mallo haneungeon cham swiwo',\n", - " 'geuleo ni silcheon-eulo da-eum peiji”',\n", - " '‘till i die’ e seo do naega malhaessji yeah',\n", - " 'imma be a legend you just watch and see yeah',\n", - " 'hater deul-eun yeojeonhi malman manhji',\n", - " 'gwaenchanh-a ijen paendeul-i naui gyeot-eissji yeah',\n", - " 'him-idoeneun eung-won neoga gomabgie',\n", - " '1bun1cho ppalli jigeum neohante',\n", - " 'neoleul wihan eum-ag',\n", - " 'studio late night',\n", - " 'oneul bam edo nan',\n", - " 'thinking to my self',\n", - " '“who am i?”',\n", - " 'now i know',\n", - " 'thinking to my self',\n", - " 'yeah yeah',\n", - " 'i don’t know',\n", - " 'just got me',\n", - " 'thinking to my (whoo) self',\n", - " 'dpr we gang gang',\n", - " 'dpr we gang gang (okay now)',\n", - " 'dpr we gang gang (drop that sound)',\n", - " 'dpr we gang gang (tear it down)',\n", - " 'dpr we gang gang (when around)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'okay ildan sitdown&rewind the time',\n", - " '24sileuldollyeo geulae meon yesnal',\n", - " 'snsneun eobsgo',\n", - " 'motorlla hamyeon dang-yeon buja',\n", - " 'tto daenseueum-ag-i yuhaenghaessdeon',\n", - " 'back to 1993',\n", - " 'eommaga gosaengkkeut-e nah-eun hongdabin',\n", - " 'yeoleo munje manh-assjiman gyeolgug geugbog',\n", - " 'haessgo kkeutnae jeonseol-i doel ai',\n", - " 'fast forward',\n", - " 'yeah look at me now (woo!)',\n", - " 'jigeum-ui wichineun mudae wiya (uh!)',\n", - " 'ijeseoya neukkim-iwa',\n", - " 'naeap-e boyeojineun yeoleo fandeul-ui',\n", - " 'eolgul naega geutoglog geulideon geulim-igo',\n", - " 'geuligo ijen',\n", - " 'with my one&only brothers',\n", - " 'pyeolchyeo sae sidae',\n", - " 'yeah look at my team now',\n", - " 'yeah',\n", - " 'shhh got me',\n", - " 'thinking to my self',\n", - " '“who am i?”',\n", - " 'now i know',\n", - " 'thinking to my self',\n", - " 'yeah yeah',\n", - " 'i don’t know',\n", - " 'just got me',\n", - " 'thinking to my (whoo) self',\n", - " 'dpr we gang gang',\n", - " 'dpr we gang gang (okay now)',\n", - " 'dpr we gang gang (drop that sound)',\n", - " 'dpr we gang gang (tear it down)',\n", - " 'dpr we gang gang (when around)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'dpr we gang gang (gang gang)',\n", - " 'rep it every day ay (ay ay)',\n", - " 'i ain’t feelin them fakes (yahh)',\n", - " 'they don’t entertain aye',\n", - " 'dpr we gang gang? (whoo)',\n", - " 'dpr we gang gang? (whoo)',\n", - " 'dpr we gang gang (whoo)',\n", - " 'dpr we gang gang',\n", - " 'dpr we gang gang (okay now)',\n", - " 'dpr we gang gang (drop that sound)',\n", - " 'dpr we gang gang (tear it down)',\n", - " 'dpr we gang gang (when around)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (then we out)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'dpr we gang gang (hold us down)',\n", - " 'so what it do homie, better make some room for me',\n", - " 'i ain’t the average mc, i’m quite stormy',\n", - " 'so not corny, better tell your friends',\n", - " 'i’m rappin for the dam, better understand',\n", - " 'sick as a dog, but i’m ripping it dawg',\n", - " 'better spread the word that i got nothing but love',\n", - " 'while rocking worldwide, i cannot get enough',\n", - " 'melodee is the name, i’ll be setting it off',\n", - " 'jedna ljubav za druga, sestru, meinen bruder',\n", - " 'došli sa istih pruga, iz istog kruga',\n", - " 'dio smo stuba koji kulturu čuva',\n", - " 'do zadnjega zuba, familija poput kuma',\n", - " 'ich schmeiß n molotov auf geistige grenzen',\n", - " 'freiheitsbeschränkung',\n", - " 'einengung, geiz und verdrängung, verblendung',\n", - " 'neid und entfremdung',\n", - " 'ich schreib die zeilen für veränderungen, und wenn du',\n", - " 'peilst was ich sende und',\n", - " 'begreifst was ich mein und teilst was ich schreib sind',\n", - " 'wir beide eins am ende',\n", - " 'quand le crew diversidad rentre en studio, ça sent la foudre',\n", - " 'on mélange plus de langues différentes que dans une grande partouze',\n", - " 'si tu comprends pas ce qu’on dit dans nos couplets, chante en yaourt',\n", - " \"j'fais l'tour du continent comme quand j'faisais mes courses avant carrefour\",\n", - " 'we dance to a million beats',\n", - " 'in millions of streets',\n", - " 'different rivers flow together',\n", - " 'and the wave sets you free',\n", - " 'a million beats',\n", - " 'in millions of streets',\n", - " 'all these rivers splash together',\n", - " 'and the wave sets you free',\n", - " 'ni kosor, ni jandroković, ni šuker ni milinović',\n", - " 'pankretić, adlesić, bogme ni ćobanković',\n", - " 'nitko nas nema, elemental šiša vladu',\n", - " 'vodimo vas u europu dok vas doma ovi kradu',\n", - " 'si celle-ci n’est pas la première',\n", - " 'que tous retiennent qu’elle ne sera pas pour autant la dernière',\n", - " 'le respect est le même pour ceux partis devant',\n", - " 'et ceux qui arrivent derrière',\n", - " 'quand la passion élève l’âme au-dessus des frontières',\n", - " 'é o expresso da irmandade, que uniu a melhor',\n", - " 'espécie de soldados das rimas para as peripécias da',\n", - " 'esgrima debitada',\n", - " 'da alemanha à grecia, da espanha à suécia em paridade',\n", - " 'diversidade de mc’s num só verso e numa comunidade',\n", - " 'ey yo we plant seeds and we watch the trees grow',\n", - " 'leaves flow with the wind oxigen for the people',\n", - " 'breathe in, breathe out, got a voice speak now',\n", - " 'we here for that «bom dia, salamalekum, ni hao»',\n", - " 'we dance to a million beats',\n", - " 'in millions of streets',\n", - " 'different rivers flow together',\n", - " 'and the wave sets you free',\n", - " 'a million beats',\n", - " 'in millions of streets',\n", - " 'all these rivers splash together',\n", - " 'and the wave sets you free',\n", - " 'jamen tjena det är mackish här, jag reppar för sverige',\n", - " 'kikkar supesr-stilen från bryssel till bergen',\n", - " 'det är inte « alla talar svenska » här, som ni nog märker',\n", - " 'men oavsett språket går flowet rakt in i märgen',\n", - " 'tu sam, eto evo me, daleko al ko doma je',\n", - " 'neki drugi jezik, al od njih me svak razumije',\n", - " 'bez granica, još jedna zvjezdica sto veže me',\n", - " 'dio nečeg velikog, tu sam eto evo me',\n", - " 'por mis fieras ahí fuera que no ven fronteras',\n", - " 'por la música, mi musa, la única que fue sincera',\n", - " 'por las razas y su mezcla, por el verso y su corona',\n", - " 'nos entendemos fijo si hip-hop es el idioma',\n", - " 'te parl com a’ nu’ fedel inginocchiat fra’ me mis l’ali',\n", - " 'senz ‘e te restav inginocchiat sott e’ rav 4',\n", - " 'e’ somiglianz re’ mattun accorcian e distanz',\n", - " 'a’ storia e com nu guaglion ca nun crere restn immortal',\n", - " 'b-boy officiel de bxl',\n", - " 'je vise le ciel, use mes ailes',\n", - " 'et m’envole',\n", - " 'si si galaxie',\n", - " 'diversidad c’est bien ici',\n", - " 'we dance to a million beats',\n", - " 'in millions of streets',\n", - " 'different rivers flow together',\n", - " 'and the wave sets you free',\n", - " 'a million beats',\n", - " 'in millions of streets',\n", - " 'all these rivers splash together',\n", - " 'and the wave sets you free',\n", - " 'paroles rédigées et annotées par la communauté française de rap genius',\n", - " 'gulli gang boy!',\n", - " 'desi yeh, desi woh, desi-desi sab',\n", - " 'par kitne desi hain jo gaano mein apne bolte sach!',\n", - " 'yeh sach ka nanga nach hai',\n", - " 'mithaas ka parda faash hai',\n", - " 'kal kisne dekha jee le',\n", - " 'teri antim toh raaz hai',\n", - " 'umar char, jeb mein jhol ke',\n", - " 'rupaye pade paanch hai',\n", - " 'tere liye woh toffee',\n", - " 'meri mission usse banana aath hai',\n", - " 'dono ko padi laat hai',\n", - " 'farak sirf itna mujhe niche tujhe upar',\n", - " 'bas wohi thodi si alag baat hai',\n", - " 'jo tere sabse khaas hai',\n", - " 'wohi zehreelay sap hai',\n", - " 'aaj dhoondne nikle pyar',\n", - " 'jab teri maa hai tere pass mein',\n", - " 'aata savera jab jhele ga tu ye kaali raatein',\n", - " '59 gully gang chote itihas hai',\n", - " 'gully gang 59 chote itihas hai',\n", - " \"nakli rapper, nakli gangster'on ka sarvnash hai\",\n", - " 'haan seekh ke jee le',\n", - " 'jee ke seekh le kabhi meri baatein',\n", - " 'haan jee ke seekh le',\n", - " 'seekh ke jee le kabhi meri baatein',\n", - " 'thoda sa farak bhai, asli apne taraf bhai',\n", - " 'thoda sa farak, mera hara tera garad bhai',\n", - " 'thoda sa farak main hoon',\n", - " 'har cheez mein saras bhai',\n", - " 'thoda sa alag kyun ke',\n", - " 'tere mein mere mein farak bhai',\n", - " 'thoda sa farak bhai, asli apne taraf bhai',\n", - " 'thoda sa farak, mera hara tera garad bhai',\n", - " 'thoda sa farak main hoon',\n", - " 'har cheez mein saras bhai',\n", - " 'thoda sa alag kyun ke',\n", - " 'tere mein mere mein farak bhai',\n", - " 'main mere maa ke liye jee raha hoon',\n", - " 'main mere maa ke liye jee raha hoon',\n", - " 'haan tumse kya chupana maa',\n", - " 'kabhi ghum mein bhi pee raha hoon',\n", - " 'main mere maa ke liye jee raha hoon',\n", - " 'main mere maa ke liye jee raha hoon',\n", - " 'haan tumse kya chupana maa',\n", - " 'kabhi ghum mein bhi pee raha hoon',\n", - " 'main mere maa ke liye jee raha hoon',\n", - " 'ghum mein bhi pee raha hoon',\n", - " 'sar se toh dheela hoon',\n", - " 'kyun? sadko pe seekha hoon',\n", - " 'woh khel hi nahi hai',\n", - " 'jisme haarke na jeeta hoon',\n", - " 'jo botla hoon lala',\n", - " 'wo main asliyat mein jeeta hoon',\n", - " 'bol kaise maa akele',\n", - " 'thune zaalim dard jhele',\n", - " 'koi sanp koi sapere',\n", - " 'ek dete dunga le re',\n", - " 'ghunton par hai salaam tujhko',\n", - " 'shukriya papa tumne banaya',\n", - " 'khud ko apna baap mujhko',\n", - " 'maara mujhko toda tumne sara kuch toh',\n", - " 'aaj chhod diya uss rahi',\n", - " 'dil ko chahiye tha sahara unko',\n", - " 'kabhi nahi bhule apne bhai log ko',\n", - " 'khud se nahi par tum hi mere bhai log ho',\n", - " 'baaki bahut aate-jaate',\n", - " 'chhote tere saath hai',\n", - " 'chhota time khate',\n", - " 'khote kasame waade',\n", - " 'agar tu khoya hai pyar ke talash mein',\n", - " 'teri maa tere pass hai',\n", - " 'tu kayeke talash mein?',\n", - " ...]},\n", - " 'rock': {'meta': {'train_data': ['voveso in mori mon vandas',\n", - " 'veidos ventos cambon mon verno',\n", - " 'et con papon lomnen',\n", - " 'luxtodos imon siraxta',\n", - " 'suouelo, imon oro',\n", - " 'suouelo, tauson tundac up',\n", - " 'voveso in mori mon vandas',\n", - " 'kuusou genjitsu hazama ni mayoikonde',\n", - " 'acchi no sekai kocchi no sekai mou wake ga wakaranaku natte',\n", - " 'tsumazuita toki ni subete ga tomatte',\n", - " 'musebinaita',\n", - " 'yurusenai kurai jibun wo seme tsuzuketetandesu',\n", - " 'asu ga kuru no wa atarimae janai',\n", - " 'dakara yuragu kimochi mo muri mo nai',\n", - " 'wakariaeta ano toki no kandou',\n", - " 'ima mo wasure wa shinai yo',\n", - " 'ryuukou to jojo ni suitai',\n", - " 'toozakaru hi ni se wo mukekaketa',\n", - " 'mou nidoto furimuki wa shinai darou',\n", - " 'itsumo tsuyogatte senobishite kurushinde itan desho?',\n", - " 'hontou wa kowakutte sabishikattanda',\n", - " 'itsu ni natte sono kimochi ga wakaru you ni natte',\n", - " 'sou tsuyoku nareta ki ga shita no',\n", - " \"i know that we aren't strong\",\n", - " 'but we can take step',\n", - " 'now we can do it',\n", - " 'yurusenai koto no hou ga yoku medatte miete',\n", - " 'kanchigai ya surechigai de toozakaru hitotachi de afurete',\n", - " 'omoikaesu tabi ni subete ga tomatte',\n", - " 'susurinaita',\n", - " 'yurusenai kurai ano koro wo mitsumetetandesu',\n", - " 'itsumo butsukatte kuyashikute tsumazuite itan desho?',\n", - " 'hontou wa tsurakutte nigetakattanda',\n", - " 'itsu ni natte sono kotae ga wakaru you ni natte',\n", - " 'sou mae wo muketa ki ga shita no',\n", - " \"it's sometimes better take detours\",\n", - " 'who are you there just like me?',\n", - " 'who are you there just like me?',\n", - " 'when i nearly refused myself',\n", - " 'when i was doubted and abused',\n", - " 'who are you there just like me?',\n", - " 'who are you there just like me?',\n", - " 'one day you came out from my shadow',\n", - " 'we never wanted',\n", - " 'do what he want',\n", - " 'we never wanted',\n", - " 'do what he want',\n", - " \"he don't know me\",\n", - " 'but made us to dance',\n", - " 'itsumo yorisotte katariatte',\n", - " 'owaranai to omotteta',\n", - " 'eien te kotoba no hontou no imi wa?',\n", - " 'itsumo tsuyogatte senobishite kurushinde itan desho?',\n", - " 'hontou wa kowakutte sabishikattanda',\n", - " 'itsu ni natte sono kimochi ga wakaru you ni natte',\n", - " 'sou tsuyoku nareta ki ga shita no',\n", - " 'itsumo butsukatte kuyashikute tsumazuite itan desho?',\n", - " 'hontou wa tsurakutte nigetakattanda',\n", - " 'itsu ni natte sono kotae ga wakaru you ni natte',\n", - " 'sou mae wo muketa ki ga shita no',\n", - " \"it's sometimes better take detours\",\n", - " 'ah~',\n", - " 'now we can do it',\n", - " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", - " 'jojo!',\n", - " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", - " 'jojo!',\n", - " 'otoko wa damatte star platinum',\n", - " 'ibara no bijon de yatsu wo utsushite',\n", - " 'uchidasu faiā yes, i am!',\n", - " 'otsugi wa doitsu da? ōru kechirase!',\n", - " 'tower, blue moon, strength',\n", - " 'devil, temperance',\n", - " 'emperor to hanged man nya ki wo tsukero!',\n", - " 'nishi e yuke! hayaku yuke! oretachi nya jikan ga nai no da',\n", - " 'zugyuun to yare megyaān to nare',\n", - " 'sabaku no wa oretachi daze!',\n", - " 'ora ora ora ora ora ora ora ora ora ora ora ora ora ora!',\n", - " 'bouken da!',\n", - " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", - " 'jojo!',\n", - " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", - " 'jojo!',\n", - " 'hisomeyo hierophant green',\n", - " 'gin no chariot shutā! odemashi da',\n", - " 'fūru na iggy sand technician',\n", - " 'do you understand?',\n", - " 'yare yare daze!',\n", - " 'empress kara fortune',\n", - " 'justice, lovers, sun, death',\n", - " 'judgement, high priestess iinikui ze!',\n", - " 'nishi e yuke! sorotte yuke! sekai no jubaku o tokihanate',\n", - " 'oretachi ga owaraseru',\n", - " 'hyakunen no kusareen wo!',\n", - " 'ora ora ora ora ora ora ora ora ora ora ora ora ora ora! buttobase!',\n", - " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", - " 'jojo!',\n", - " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", - " 'jojo!',\n", - " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", - " 'jojo!',\n", - " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", - " 'jojo!',\n", - " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", - " 'jojo!',\n", - " 'go go go go go go go go go go go go go go go go go go go go go go go go',\n", - " 'jojo!',\n", - " 'yeah',\n", - " 'go west!',\n", - " 'my first story - 終焉レクイエム',\n", - " 'romaji',\n", - " 'when i’ve innocence in my heart, all i see then looks bright',\n", - " 'cause i didn’t know what it is',\n", - " 'there’s nothing about those dreams and lights are also gone',\n", - " 'you took all away with your hands',\n", - " 'kegasa reka mukuna kokoro no naka',\n", - " 'hikari to yami ga mazari atte',\n", - " 'nanika ga kakete iru kanjou ga dekiagatta',\n", - " 'ookina heya no madogiwa de',\n", - " 'chiisana robou no ishi to natte',\n", - " 'kyou kara dare mo inai hibi ga maku o aketa',\n", - " 'what are you looking to find out with your eyes again',\n", - " 'you’re not going to rescue me',\n", - " 'tada bokuhitori dake da karada wareta',\n", - " 'nanni mo shiranai kao shite tatte ita',\n", - " 'anata no soba de',\n", - " 'so why i’m always dying there as your target now',\n", - " 'please tell me the reason for that',\n", - " 'nobody knows about the where abouts of my friends',\n", - " '\"cause you’re not even my friend\"',\n", - " 'totsujo kami no sembetsu no you ni',\n", - " 'maru ka batsu o kimi rarete wa',\n", - " 'sore ni atehamaranai mono wa habuka reta',\n", - " 'ah, kokoro no koe ga shita',\n", - " 'nande konna omoi shiteru no?',\n", - " 'what are you looking to find out with your eyes again',\n", - " \"you're not going to rescue me\",\n", - " 'tada bokuhitori dake ga hitomiwotojiteta',\n", - " 'itrumodori owari o matteita',\n", - " 'nanimo iwazuni',\n", - " 'anohi no kotoba ga zutto mune nisasari',\n", - " 'aienaku natta kizu o nokoshite',\n", - " 'boku o kurushime teru',\n", - " 'itsuka kawarazu owaru hi ga kuru to',\n", - " 'shinji tsuzuke machiwabiteta',\n", - " 'what are you looking to find out with your eyes again',\n", - " \"you're not going to rescue me\",\n", - " 'tada bokuhitori dake da karada wareta',\n", - " 'nanni mo shiranai kao shite tatte ita',\n", - " 'anata no soba de',\n", - " 'step to stack mata tooku made',\n", - " 'kinoubi no hi ga furu mae ni',\n", - " 'step to stack to stop to stock',\n", - " 'kasha wa kyomu kimi e to speed by speed',\n", - " 'kikoeteru ikoeru koe',\n", - " 'speed bai speed ima kimi e to',\n", - " 'big big big big big big foot',\n", - " 'step to stack tada oora o',\n", - " 'bidou da ni sezu todokaseta',\n", - " 'step to stack to sleep to skip',\n", - " 'michi wa kyomu kimi e to sleep to skip',\n", - " 'kikoeteru ikoeru koe',\n", - " 'sleep to skip ima kimi kara',\n", - " 'big big big big big big foot',\n", - " '(step to stack stop to stock)',\n", - " '(speed bai speed sleep to skip)',\n", - " '(step to stack stop to stock)',\n", - " '(speed bai speed sleep to skip)',\n", - " '(step to stack stop to stock)',\n", - " '(speed bai speed sleep to skip)',\n", - " '(big big big big big big foot)',\n", - " 'step to stack mata tooku made',\n", - " 'kinoubi no hi ga furu mae ni',\n", - " 'step to stack to stop to stock',\n", - " 'kasha wa kyomu kimi e to speed by speed',\n", - " 'kikoeteru ikoeru koe',\n", - " 'speed bai speed ima kimi e to',\n", - " 'big big big big big big foot',\n", - " 'gham miyoone do ta cheshmoone ghashanget',\n", - " 'loone karde',\n", - " 'shab too moohaye siyahet',\n", - " 'khoone karde',\n", - " 'do ta chesmoone siyahet',\n", - " 'mese shabhaye mane',\n", - " 'siyahiaye do cheshmet',\n", - " 'mese ghamhaye mane',\n", - " 'vaghti boghz az mojheham payin miyad',\n", - " 'baroon mishe',\n", - " 'seyle gham abadimo viroone karde',\n", - " 'vaghti ba man mimooni tanhayimo',\n", - " 'bad mibare',\n", - " 'do ta cheshmam baroone shaboone karde',\n", - " 'bahar az dastaye man par zado raft',\n", - " 'gole yakh tooye delam javoone karde',\n", - " 'too otagham daram az tanhayi atish migiram',\n", - " 'eshgh shekoofeh tooye in zamooneh karde',\n", - " 'chi bekhoonam?',\n", - " 'javoonim rafte, sedam rafte dige',\n", - " 'gole yakh tooye delam javooneh karde',\n", - " 'chi bekhoonam?',\n", - " 'javoonim rafte, sedam rafteh dige',\n", - " 'gole yakh tooye delam javooneh karde',\n", - " 'gham miyoone do ta cheshmoone ghashanget',\n", - " 'loone karde',\n", - " 'shab too moohaye siyahet',\n", - " 'khoone karde',\n", - " 'do ta chesmoone siyahet',\n", - " 'mese shabhaye mane',\n", - " 'siyahiaye do cheshmet',\n", - " 'mese ghamhaye mane',\n", - " 'vaghti boghz az mojheham payin miyad',\n", - " 'baroon mishe',\n", - " 'seyle gham abadimo viroone karde',\n", - " 'vaghti ba man mimooni tanhayimo',\n", - " 'bad mibare',\n", - " 'do ta cheshmam baroone shaboone karde',\n", - " 'bahar az dastaye man par zado raft',\n", - " 'gole yakh tooye delam javoone karde',\n", - " 'too otagham daram az tanhayi atish migiram',\n", - " 'eshgh shekoofeh tooye in zamooneh karde',\n", - " 'chi bekhoonam?',\n", - " 'javoonim rafte, sedam rafte dige',\n", - " 'gole yakh tooye delam javooneh karde',\n", - " 'chi bekhoonam?',\n", - " 'javoonim rafte, sedam rafteh dige',\n", - " 'gole yakh tooye delam javooneh karde',\n", - " 'what waits for you?',\n", - " \"what's breaking through?\",\n", - " 'nothing for good',\n", - " \"you're sure it's true?\",\n", - " 'eien nante naito iikitte shimattara',\n", - " 'amarinimo sabishikute setsunai deshou',\n", - " 'dare mo ga hontou wa shinjitai kedo',\n", - " 'uragirarere ba fukaku kizu tsuite shimau mono',\n", - " 'towa ga aru sekai ga risou dewa naku',\n", - " 'sore wo shinji tsuzuketeiru sugata',\n", - " 'sore koso bokura ga nozomu beki sekai',\n", - " 'to kizuku koto ga dekita nara',\n", - " 'what will we have?',\n", - " 'believe that time is always forever',\n", - " \"and i'll always be here\",\n", - " 'believe it till the end',\n", - " \"i won't go away\",\n", - " \"and won't say never\",\n", - " \"it doesn't have to be friend\",\n", - " 'you can keep it till the end',\n", - " 'tameshini eien nante nai to ii kirou',\n", - " 'soshitara kibou ya yume wa ikutsu shinu darou?',\n", - " 'sorega sonzai shinai koto no zetsubou to',\n", - " 'sonzai suru koto no zankoku wo',\n", - " 'souzou shite mite boku wa sukoshi mata',\n", - " 'mekuru peji no te wo tomeru',\n", - " 'how will we have?',\n", - " 'believe that time is always forever',\n", - " \"and i'll always be here\",\n", - " 'believe it till the end',\n", - " \"i won't go away\",\n", - " \"and won't say never\",\n", - " \"it doesn't have to be friend\",\n", - " 'you can keep it till the end',\n", - " 'whoa, oh oh oh...',\n", - " 'whoa, oh oh oh...',\n", - " 'whoa, oh oh oh...',\n", - " 'whoa, oh oh...',\n", - " 'believe that time is always forever',\n", - " \"and i'll always be here\",\n", - " 'believe it till the end',\n", - " \"i won't go away\",\n", - " \"and won't say never\",\n", - " \"it doesn't have to be friend\",\n", - " 'you can keep it till the end',\n", - " 'believe that time is always forever',\n", - " \"and i'll always be here\",\n", - " 'believe it till the end',\n", - " \"i won't go away\",\n", - " \"and won't say never\",\n", - " \"it doesn't have to be friend\",\n", - " 'you can keep it till the end',\n", - " 'keep it till the end',\n", - " 'you can keep it till the end',\n", - " '(and time will stay)',\n", - " 'time goes by',\n", - " 'you can keep it till the end',\n", - " 'suibotsutoshi no detario kamisama no iu magyaku no hou e',\n", - " 'ariawase no jinseida koko ni wa mou rakuen wa nai kara',\n", - " 'jibun no kubi o kakaete seijin ga aruite iku',\n", - " 'hiretsu ni toitadasu nda daremo ga toitadasu you ni',\n", - " 'where is the paradise?',\n", - " 'where is the paradise?',\n", - " 'where is the paradise?',\n", - " 'aki tarinai',\n", - " 'suibotsutoshi no amerio kamisama ni shitagatte iku',\n", - " 'namikaze o tatenu you ni tairetsu o midasanai you ni',\n", - " 'this is a new paradigm',\n", - " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", - " 'kakushi motta kaadoo',\n", - " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", - " 'tsukitsukero sekai ni',\n", - " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", - " 'hajikareta dooka ga',\n", - " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", - " 'machi ni matta aizu da',\n", - " 'liberate all fenced area',\n", - " 'outwit all the mass media',\n", - " 'oh, break into there with maniacs',\n", - " \"i don't need vague criteria\",\n", - " 'an all-out escape',\n", - " 'this is an all-out escape',\n", - " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", - " 'kakushi motta kaadoo',\n", - " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", - " 'tsukitsukero sekai ni',\n", - " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", - " 'hajikareta dooka ga',\n", - " '(woah-oh-oh-oh-oh-oh-oh-oh-oh-oh!)',\n", - " 'machi ni matta aizu da',\n", - " 'liberate all fenced area',\n", - " 'outwit all the mass media',\n", - " 'break into there with maniacs',\n", - " \"i don't need vague criteria\",\n", - " 'an all-out escape',\n", - " 'this is an all-out escape',\n", - " 'i. orfeus',\n", - " 'ii. answer',\n", - " 'iii. orfeus',\n", - " 'iv. answer',\n", - " 'v. pupilla',\n", - " 'vi. tommy',\n", - " 'vii. pupilla',\n", - " 'viii. answer',\n", - " 'ix. the bridge',\n", - " 'x. euridice',\n", - " 'xi. dayglow',\n", - " 'xii. endless road',\n", - " 'xiii. answer',\n", - " 'xiv. orfeus',\n", - " 'xv. euridice',\n", - " 'sono hodokesou na te o nigirinaoshite',\n", - " 'eien yori tsuyoku yes to yes no in the moment',\n", - " 'wantacchi no messenjaa kuuchuusen no kanjouron',\n", - " 'sore wa insutanto mou imi no nai cry',\n", - " 'nansensu na andaasutando ma ni ukenai kuse tsukete',\n", - " 'sonna suruu sukiru hora honne o kill',\n", - " 'tatoe kotoba nakutomo tsutaerareru this one message',\n", - " 'fureai tsutaeatta shijima no omoi hanasanai you ni',\n", - " 'sono hodokesou na te o nigirinaoshite',\n", - " 'eien yori tsuyoku yes to yes no in the moment',\n", - " 'shinjiru kokoro ga kizuna ni kawaru',\n", - " 'we will be tight and tight',\n", - " 'mirai e to tsunagou oh',\n", - " 'guuzen ni machigatta boku no disukomyunikeeshon',\n", - " 'ura de warau wa uwabe no friends',\n", - " 'nanimo mienai yoru ni sagashidashita heart is passage',\n", - " 'yatto tobira o akete kawashiau omoi nakidasu you ni',\n", - " 'ima togireta shingou o tsunagiawaseta',\n", - " 'myakuraku yori meihaku sos wa in a hurry',\n", - " 'futatsu no kodoku o hitotsu ni tabane',\n", - " 'we will go on and on and on',\n", - " 'dokomademo tsumugou',\n", - " 'ano wakariaenu mama surechigau toki no',\n", - " 'tsumetasa o bokura shitteiru',\n", - " 'hodokesou na te o nigirinaoshite',\n", - " 'eien yori tsuyoku yes to yes no in the moment',\n", - " 'shinjiru kokoro ga kizuna ni kawaru',\n", - " 'we will be tight and tight',\n", - " 'mirai e to tsunagou oh',\n", - " 'mune ni hibiita kanjou no denpa',\n", - " 'yes to kotaeta mirai sae tsumugou oh',\n", - " 'what am i gonna do?',\n", - " 'if my last heartbeat’s going to',\n", - " 'come in a few minutes',\n", - " 'how do i live my last?',\n", - " 'yurusenai hito o sukoshi yurushite',\n", - " 'iyai na hito o sukoshi sukininari',\n", - " 'soshite saigo ni jibun no koto',\n", - " 'ai suru koto wa dekiru no kana',\n", - " 'try to make it now',\n", - " 'i don’t want anymore regret',\n", - " '‘cause time’s never back',\n", - " 'hodoke nai you ni kutsu himo musubi',\n", - " 'tomaru koto no nai you ni to futatabi hashiru',\n", - " 'ikiteru kanji ga sukoshi de moshitemasuka',\n", - " 'jimonji tou ni mayotte',\n", - " 'hidari mune ni kono te atete mita',\n", - " 'hitotsu me no kodou ga naki sakebu',\n", - " 'yoin o nokoshi futatsu me ga naru',\n", - " 'sore o saigo ni tsugi ni naru hazuno',\n", - " 'oto wa iki o hisometa',\n", - " 'try to make it now',\n", - " 'i don’t want anymore regret',\n", - " '‘cause time’s never back',\n", - " 'hodoke nai you ni kutsu himo musubi',\n", - " 'tomaru koto no nai you ni to futatabi hashiru',\n", - " 'all you want to do is not always',\n", - " 'what you have in your mind',\n", - " 'can’t you see something new',\n", - " 'coming on your way?',\n", - " 'try to teach you how',\n", - " 'i don’t want anymore hatred',\n", - " '‘cause no one ever sucks!',\n", - " 'kimi ga boku ni oshiete kureta',\n", - " 'kyou to iu hi ni dare ka o suki ni naru koto',\n", - " 'atari mae ni shiteta hazu no kokyu ga moshimo',\n", - " 'nokoriwazu ga kazufun datoshitara',\n", - " 'boku wa hatashite...',\n", - " 'kanata ni sugisari shi hibi',\n", - " 'aruki tzusuketa his/story',\n", - " 'chikatta fearless kudakete hopeless',\n", - " 'nani wo e ushinatta darou',\n", - " 'soredemo kodou ga',\n", - " 'kirameki wo motome',\n", - " 'mihatenu yume e izanau',\n", - " 'the land is cloaked in deepest blue',\n", - " 'the shadow of eagles across the moon',\n", - " 'itami ya kizuato wa kako ni sutete',\n", - " 'kodoku to iu na no yoroi',\n", - " 'kokoro wo kakushita his/story',\n", - " 'nareau ondo shireba period',\n", - " 'jiyuu wo ushinau dake',\n", - " 'soredemo yoki sezu kanjita nukumori',\n", - " 'furikiri ashita wo sagasu',\n", - " 'my life goes by like passing clouds',\n", - " 'departed the days. i will be proud',\n", - " 'jibun no ashiato ga rekishi ni naru',\n", - " 'the land is cloaked in deepest blue',\n", - " 'the shadow of eagles across the moon',\n", - " 'itami ya kizuato wa kako ni sutete',\n", - " 'aa..aa',\n", - " 'sur ghoome chakkar khaye',\n", - " 'dil dil se takkar khaye',\n", - " 'arey main khoya ki tu..',\n", - " 'kho gaya..',\n", - " 'arey haan..',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'sur ghoome chakkar khaye',\n", - " 'dil dil se takkar khaye',\n", - " 'arey main khoya ki tu..',\n", - " 'kho gaya..',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'sur ghoome chakkar khaye',\n", - " 'dil dil se takkar khaye',\n", - " 'arey main khoya ki tu..',\n", - " 'kho gaya..',\n", - " 'jo naa hai dikhta jaye',\n", - " 'jo hai woh dikh na paye',\n", - " 'arey aankhon ko yeh',\n", - " 'kya ho gaya',\n", - " 'ho bin chabi khul jaye',\n", - " 'masti ka taala',\n", - " 'chori lage joru',\n", - " 'jora lage saala',\n", - " 'panghat pe naache',\n", - " 'ha panghat pe nache',\n", - " 'nache re nache madhubala',\n", - " 'panghat pe nache',\n", - " 'nache re nache madhubala',\n", - " 'panghat pe nache',\n", - " 'nache re nache madhubala',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'haan.. dil ke hai',\n", - " 'chakke choote chokre',\n", - " 'latkon jhatkon se',\n", - " 'ab na rok re',\n", - " 'haan tu toh naino',\n", - " 'mein mere chaa raha',\n", - " 'chutti tujhko',\n", - " 'tu chahye jo kare',\n", - " 'haan..',\n", - " 'ab akal akeli hatke re',\n", - " 'dil sadak sadak',\n", - " 'sur patke re',\n", - " 'yeh baar baar hi',\n", - " 'tujhpe atke re beliya',\n", - " 'ab akal akeli hatke re',\n", - " 'dil sadak sadak',\n", - " 'sur patke re',\n", - " 'yeh baar baar hi',\n", - " 'tujhpe atke re beliya',\n", - " 'ho dil ne chahat ka',\n", - " 'sikka aisa uchala',\n", - " 'sabke galon pe lage',\n", - " 'mukjhlo til kaala',\n", - " 'panghat pe naache',\n", - " 'hey..',\n", - " 'ha panghat pe nache',\n", - " 'nache re nache madhubala',\n", - " 'panghat pe nache',\n", - " 'nache re nache madhubala',\n", - " 'panghat pe nache',\n", - " 'nache re nache madhubala',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'daga dum daam',\n", - " 'daga dagadidam',\n", - " 'arey thak gaye kya',\n", - " 'arey bhia up aaye',\n", - " 'aur saala dhol nahi bajaa',\n", - " 'toh kya khaak up aaye',\n", - " 'arey..oh bhia raaja',\n", - " 'bajega tera baaja',\n", - " 'banega dulha raaja',\n", - " 'tu aaja jaldi aaja piya',\n", - " 'ho bin chabi khul jaye',\n", - " 'masti ka taala',\n", - " 'chori lage joru',\n", - " 'jora lage saala',\n", - " 'panghat pe naache',\n", - " 'panghat pe panghate pe',\n", - " 'ha panghat pe nache',\n", - " 'nache re nache madhubala',\n", - " 'panghat pe nache',\n", - " 'nache re nache madhubala',\n", - " 'panghat pe nache',\n", - " 'nache re nache madhubala',\n", - " 'panghat pe nache',\n", - " 'nache re nache madhubala',\n", - " 'ho..',\n", - " 'madhubala',\n", - " 'madhubala',\n", - " 'madhubala',\n", - " 'madhubala..',\n", - " \"(we've always been this to free all this pain)\",\n", - " \"(we've always been this to free all this pain)\",\n", - " 'booooaaaaahh!',\n", - " 'booooaaaaahh!',\n", - " 'benri benri banzai benri benri banzai',\n", - " 'benri benri banzai ningen',\n", - " 'benri benri banzai benri benri banzai',\n", - " 'benri benri banzai ningen',\n", - " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", - " 'biribiri ikarasu ka? ningen',\n", - " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", - " 'biribiri ikarasu ka? ningen',\n", - " \"what's up fuanzai ippai\",\n", - " 'hanzai kienai towa ni',\n", - " \"what's up fuanzai ippai (urami ni wana dare daun?)\",\n", - " \"what's up fuanzai ippai\",\n", - " 'hanzai kienai towa ni',\n", - " \"what's up fuanzai ippai\",\n", - " 'ikiru imi tsumaran ka? ikiru imi tsumaran ka?',\n", - " 'ikiru imi tsumaran ka? ningen',\n", - " 'ikiru imi tsumaran ka? ikiru imi tsumaran ka?',\n", - " 'ikiru imi tsumaran ka? ningen',\n", - " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", - " 'biribiri ikarasu ka? ningen',\n", - " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", - " 'biribiri ikarasu ka? ningen',\n", - " \"what's up fuanzai ippai\",\n", - " 'hanzai kienai towa ni',\n", - " \"what's up fuanzai ippai (urami ni wana dare daun?)\",\n", - " \"what's up fuanzai ippai\",\n", - " 'hanzai kienai towa ni',\n", - " \"what's up fuanzai ippai\",\n", - " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", - " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", - " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", - " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", - " 'hey hey! ningen sanka! hey hey! ningen fuanka!',\n", - " 'hey hey! ningen sanka onorera eien ningen fuanka',\n", - " 'aa ningen...',\n", - " 'bunmei yande fuantei',\n", - " 'mirai wa sukuwaren howaito hausu',\n", - " 'zensekai ni warning!',\n", - " 'issaigassai ni kaikaku life',\n", - " 'benri benri banzai benri benri banzai',\n", - " 'benri benri banzai ningen',\n", - " 'benri benri banzai benri benri banzai',\n", - " 'benri benri banzai ningen',\n", - " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", - " 'biribiri ikarasu ka? ningen',\n", - " 'hora biribiri ikarasu ka? biribiri ikarasu ka?',\n", - " 'biribiri ikarasu ka? ningen',\n", - " \"what's up fuanzai ippai\",\n", - " 'hanzai kienai towa ni',\n", - " \"what's up fuanzai ippai (urami ni wana dare daun?)\",\n", - " \"what's up fuanzai ippai\",\n", - " 'hanzai kienai towa ni',\n", - " \"what's up fuanzai ippai\",\n", - " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", - " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", - " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", - " 'hey hey! ningen sanka. ai ningen ningen fuan ka?',\n", - " 'hey hey! ningen sanka! hey hey! ningen fuanka!',\n", - " 'hey hey! ningen sanka onorera eien ningen sanka wameku saga',\n", - " 'henken-inken ningen funda ugokidase ore fight',\n", - " 'teki na seisai no kiba kara',\n", - " 'tenteki no sonzai wo tatsu',\n", - " 'tenkeiteki na mesaki no yoku kara',\n", - " 'chienji dekinai koku',\n", - " 'manuke boke no sensouron hibou nikenasou',\n", - " 'manuke boke no sensouron hibou nikenasou',\n", - " 'manuke boke no sensouron hibou nikenasou',\n", - " 'manuke boke no sensouron hibou nikenasou',\n", - " 'hey hey! ningen sucker! aa ningen... ningen fucker!',\n", - " 'hey hey! ningen sucker! aa ningen... ningen fucker!',\n", - " 'hey hey! ningen sucker! aa ningen... ningen fucker!',\n", - " 'hey hey! ningen sucker! aa ningen... ningen fucker!',\n", - " \"what's up people!\",\n", - " \"what's up people!\",\n", - " \"what's up people!\",\n", - " \"what's up people!\",\n", - " 'nijuu-do keisha no kouei apaato',\n", - " 'modan manshon guddo kuriin ribingu',\n", - " 'wan ruumu nagaya no biggu famirii',\n", - " 'oojinushi no koinobori',\n", - " 'hey! you this song is pop kameari pop',\n", - " 'hey! you this song is pop kameari pop',\n", - " 'puroguresshibu na kyouiku shisutemu',\n", - " 'kodomo saakuru tengoku',\n", - " 'pta no ojichan ni',\n", - " 'boku no mama wa netorareta',\n", - " 'hey! you this song is pop kameari pop',\n", - " 'hey! you this song is pop kameari pop',\n", - " 'hey! you this song is pop kameari pop',\n", - " 'hey! you this song is pop kameari pop',\n", - " 'sensaku-zukina juumin ego',\n", - " 'shiranu soburi no juumin ego',\n", - " 'shinsetsu teinei juumin ego',\n", - " 'fushinsetsuna juumin ego',\n", - " 'hey! you this song is pop kameari pop',\n", - " 'hey! you this song is pop kameari pop',\n", - " 'hey! you this song is pop kameari pop',\n", - " 'hey! you this song is pop kameari pop',\n", - " 'ego, ego, ego ego, ego ego',\n", - " 'ego, ego, ego ego, ego ego...',\n", - " 'adorenarin baramaki sutando no ningen tsumarutsumaru',\n", - " 'isu kette benchi neso beru baka bakka',\n", - " 'kusuriyubi nobashi ta fo^kubo^ru ucchi ya daremo',\n", - " 'ashidori furafura ba^bon to anaruuisuki^',\n", - " 'bo^ru! zouo! sutoraiku!',\n", - " 'mr. appa^ batta^ box kamaeru shuryou ( don )x2',\n", - " 'we are the ru^rubukku sanshin kaishingeki',\n", - " 'fubuki ku kirisame blood blood ba^bon to anaruuisuki^',\n", - " 'anaru . uisuki^ . ponse ( ponse !)x4',\n", - " \"yeah! let's go!\",\n", - " 'adorenarin baramaki sutando no ningen tsumarutsumaru',\n", - " 'isu kette benchi neso beru baka bakka',\n", - " 'kusuriyubi nobashi ta fo^kubo^ru ucchi ya daremo',\n", - " 'ashidori furafura ba^bon to anaruuisuki^',\n", - " 'fightt! fight! pureibo^ru!',\n", - " 'mr. appa^ batta^ box kamaeru shuryou ( don )x2',\n", - " 'we are the ru^rubukku sanshin kaishingeki',\n", - " 'fubuki ku kirisame blood blood ba^bon to anaruuisuki^',\n", - " 'anaru . uisuki^ . ponse ( ponse !)x4',\n", - " 'yeah! let’s go!',\n", - " 'takanaru kodou de tainai no saibou ga 113 bai ni sae teyuku',\n", - " 'purasu ka? mainasu ka? senbatsu no hana kaika',\n", - " 'bakkuho^^^mu! ponse bakkuho^^^mu!',\n", - " 'mijika ni aru mono',\n", - " 'tsune ni ki wo tsuketeinai to',\n", - " 'amari ni chikasugite',\n", - " 'miushinatte shimaisou',\n", - " 'anata ga saikin taiken shita',\n", - " 'shiawase wa ittai nan desuka',\n", - " 'megumare sugiteite',\n", - " 'omoidasenai kamo',\n", - " 'ima koko ni iru koto',\n", - " 'iki wo shiteiru koto',\n", - " 'tade sore dake no koto ga',\n", - " 'kiseki da to kizuku',\n", - " 'mijika ni aru mono',\n", - " 'tsune ni ki wo tsuketeinai to',\n", - " 'amari ni chikasugite',\n", - " 'miushinatte shimaisou',\n", - " 'you know the closer you get to something',\n", - " 'the tougher it is to see it',\n", - " \"and i'll never take it for granted\",\n", - " \"let's go!\",\n", - " 'hitodasuke wo gizen to',\n", - " 'yobu yatsura mo iru kedo',\n", - " 'shinjiru no mo utagau no mo',\n", - " 'hito sorezore dakara',\n", - " 'tatoe kari ni sore ga',\n", - " 'gizen de atta toshite mo',\n", - " 'dareka wo sukueta nara',\n", - " 'soryamushiro nani yori mo zutto',\n", - " 'oitsuzuketekita yume',\n", - " 'akiramezuni susume yo nante',\n", - " 'kirei koto wo ieru hodo',\n", - " 'nanimo dekichainai kedo',\n", - " 'hitonigiri no yuuki wo mune ni',\n", - " 'ashita wo ikinuku tame ni',\n", - " \"and i'll never take it for granted\",\n", - " \"let's go!\",\n", - " 'mijika ni arumono',\n", - " 'tsune ni ki wo tsuketeinai to',\n", - " 'amari ni chikasugite',\n", - " 'miushinatte shimaisou',\n", - " 'you know the closer you get to something',\n", - " 'the tougher it is to see it',\n", - " \"and i'll never take it for granted\",\n", - " 'oitsuzuketekita yume',\n", - " 'akiramezuni susume you nante',\n", - " 'kirei koto wo ieru hodo',\n", - " 'nanimo dekichainai kedo',\n", - " 'hitonigiri no yuuki wo mune ni',\n", - " 'ashita wo ikinuku tame ni',\n", - " \"and i'll never take it for granted\",\n", - " \"let's go!\",\n", - " 'korean:',\n", - " '깊은 산속 작은 옹달샘 그 옆에 나',\n", - " '나쁜 마음 한입 베물고 죽어버렸네',\n", - " '긴 또 긴',\n", - " '밤이 날 찾아오면',\n", - " '참지 않을래 눈을 감고',\n", - " '깊은 산속 작은 옹달샘 그 옆에 나',\n", - " '나 덕분에 이제 그 누가 와서 먹나요',\n", - " 'romanized:',\n", - " 'gipeun sansok jageun ongdalsaem keu yeope na',\n", - " 'nappeun ma.eum hanib bemulgo jugeobeoryeotne',\n", - " 'gin tto gin',\n", - " 'babi nal chajaomyeon',\n", - " 'chamji anheullae nuneul gamgo',\n", - " 'gipeun sansok jageun ongdalsaem keu yeope na',\n", - " 'na deokbune ije keu nuga waseo meoknayo',\n", - " 'translation to english:',\n", - " 'next to a deep forest and a little spring, i',\n", - " 'was bitten by sin',\n", - " 'when a long night finds me',\n", - " \"i don't want to fight it any longer, with my eyes closed\",\n", - " 'next to a deep forest and a little moon, i...',\n", - " 'who will get bitten because of me?',\n", - " 'kioku no hakaba ni baramakare ta maide',\n", - " '\"seimei no dust\" \"kando no meikyu\"',\n", - " 'tsumori tsumoru hone ni namida karete',\n", - " 'usupperana memorial to kashita',\n", - " '\"kuso kusai benjo koso my home\"',\n", - " 'fute kusareru life kara no maigo!',\n", - " 'mouretsu kyu kokan ni dead ball',\n", - " 'shittai kettobashite geppu dasu bomb!',\n", - " 'buiikissu!',\n", - " 'temeera buikissu!',\n", - " 'i wanna buikissu!',\n", - " 'temeera buikissu!',\n", - " 'buiikissu!',\n", - " 'kisama-ra buikissu!',\n", - " 'kisama-ra buikissu!',\n", - " 'kisama-ra buikissu!',\n", - " \"it's back!\",\n", - " \"it's all with him now!\",\n", - " 'bite back!',\n", - " 'senbetsu vip member ni',\n", - " 'close up peacemaker ring!',\n", - " 'hakaana horu blog neet eien kai beginner',\n", - " 'uramu imi wanee kurai akuma friends wo',\n", - " 'hametsu tourai fry! hai meguru meku road',\n", - " 'buiikissu!',\n", - " 'temeera buikissu!',\n", - " 'i wanna buikissu!',\n", - " 'temeera buikissu!',\n", - " 'buiikissu!',\n", - " 'kisama-ra buikissu!',\n", - " 'kisama-ra buikissu!',\n", - " 'kisama-ra buikissu!',\n", - " 'mouju domesto les paul de hurricane',\n", - " 'anraku yuurei renchuu wa bessekai bourei',\n", - " 'mochuu no gesuto reikon de hai ningen',\n", - " 'yo wa hisan world \"misute ren!\"',\n", - " 'noumiso tsuneni furuwasate',\n", - " 'ara-arato unmei ni somuku',\n", - " 'mou isso ore ni uma retanara',\n", - " 'kimi wo buiikikaesu!',\n", - " 'shikyuu nippon jibaku jiki massatsu',\n", - " 'chikyuu no kasu to kasu ka? itsu kawaru?',\n", - " 'shikyuu nippon jibaku jiki massatsu',\n", - " 'chikyuu no kasu to kasu ka? itsu kawaru?',\n", - " 'son life kara maiagare maigo',\n", - " 'zanpai kara moetare my soul',\n", - " 'saa, sekasuze bokera kids!',\n", - " 'shinzou ni nagashikomu \"rock \\'n bomb!\"',\n", - " 'buiikissu!',\n", - " 'temeera buikissu!',\n", - " 'i wanna buikissu!',\n", - " 'temeera buikissu!',\n", - " 'buiikissu!',\n", - " 'kisama-ra buikissu!',\n", - " 'kisama-ra buikissu!',\n", - " 'kisama-ra buikissu!',\n", - " 'mouju domesto les paul de hurricane',\n", - " 'anraku yuurei renchuu wa bessekai bourei',\n", - " 'mochuu no gesuto reikon de hai ningen',\n", - " 'yo wa hisan world \"misute ren!\"',\n", - " 'noumiso tsuneni furuwasate',\n", - " 'ara-arato unmei ni somuku',\n", - " 'mou isso ore ni uma retanara',\n", - " 'kimi wo buiikikaesu!',\n", - " 'noumiso tsuneni furuwasate',\n", - " 'ara-arato unmei ni somuku',\n", - " 'mou isso ore ni uma retanara',\n", - " 'kimi wo buiikikaesu!',\n", - " 'kimi wo buiikikaesu!',\n", - " 'i was harassed by departed spirit',\n", - " 'suicidal diseases',\n", - " 'purgatory hunted down me',\n", - " 'genei de sae mare de wa nai, tettei sareta',\n", - " 'seisandai ni kazarareta',\n", - " 'mekke yaku ni sotto tsutaeru',\n", - " 'the curse of vlad tepes',\n", - " 'hinsou de gebita midarini makka na kagaribi boroboro okoru',\n", - " 'nietagiru zou massakasamani nejireta',\n", - " 'shinde son? gokumon ni uso wo, meido ni kou deguchi',\n", - " 'meguri meguru',\n", - " 'shi no ryouiki, towa no yami ni',\n", - " 'nemu same ga, yoiyami wo kurai',\n", - " 'bloodthirsty nightmare lullaby',\n", - " 'hinsou de gebita ran makka na kagaribi boroboro okoru',\n", - " 'nietagiru zou massakasama ni nejireta',\n", - " 'shinde son? gokumon ni uso wo meido ni kou koukou',\n", - " 'meguri hiiroru',\n", - " 'ma gu ra a ba ra do gu ra gorori',\n", - " 'the curse of vlad tepes',\n", - " 'i was harassed by departed spirit',\n", - " 'suicidal diseases',\n", - " 'purgatory hunted down me',\n", - " 'genei de sae mare de wa nai, tettei sareta',\n", - " 'seisandai ni kazarareta',\n", - " 'mekke yaku ni sotto tsutaeru',\n", - " 'iyaiya nomikomu kurau',\n", - " 'أشهد أن لا إله إلا الله',\n", - " 'aeshmem, akhem, âtrem, âpem',\n", - " 'aeshmem',\n", - " 'ahumca, mahrkăi, cinmănahe, aeshmem',\n", - " 'akhem',\n", - " 'love and hate, lust and pain',\n", - " 'love = pain',\n", - " 'war and pain, life and chain',\n", - " 'life = pain',\n", - " 'ahura mazdā, aŋra mainiuu',\n", - " 'ahura mazdā, aŋra mainiuu',\n", - " 'aeshmem, akhem, atrem, apem',\n", - " 'aeshmem',\n", - " 'free and slave, whip and reign',\n", - " 'free = slave',\n", - " 'sin and faith, desire and flame',\n", - " 'sin = flame',\n", - " 'ahura mazdā, aŋra mainiuu',\n", - " 'love and hate, lust and pain',\n", - " 'love = pain',\n", - " 'war and pain, life and chain',\n", - " 'life = pain',\n", - " 'love and hate, lust and pain',\n", - " 'love = pain',\n", - " 'war and pain, life and chain',\n", - " 'life = pain',\n", - " 'free and slave, whip and reign',\n", - " 'free = slave',\n", - " 'sin and faith, desire and flame',\n", - " 'sin = flame',\n", - " 'then they start singing a ladadalakala',\n", - " 'then theh star singa a whadaledkawha',\n", - " 'tha maey sens singin madelakewegh',\n", - " 'the when saehns amaaakahmaaha',\n", - " '(sung over chorus)',\n", - " 'maaahh ahh hahh',\n", - " 'maaahh ahh hahh',\n", - " 'daaahh ahh hahh',\n", - " 'maahh ahh ha ahh',\n", - " 'then they start singing a ladadalakala',\n", - " 'then theh star singa a whadaledkawha',\n", - " 'tha maey sens singin madelakewegh',\n", - " 'the when saehns amaaakahmaaha',\n", - " 'maaahh ahh hahh',\n", - " 'maaahh ahh hahh',\n", - " 'daaahh ahh hahh',\n", - " 'maahh ahh ha ahh',\n", - " 'tadashii koto nante nanimo nai kono sekai de',\n", - " 'tadasou to shiteiru yatsu wa shiru kagiri wa gizensha de',\n", - " 'konna bokura demo wakaru antara no sono koudou wa',\n", - " 'dou mite mo kudaranai tagai no kizu no nameai de',\n", - " 'toki ni hito atarimae wo haki chigaeteru koto ga aru',\n", - " 'sore wo kidzukasete kureru no wa',\n", - " \"maybe, it's more simple thing\",\n", - " 'tsukiakari yo ima terase! machigaesou na bokura wo',\n", - " 'hitasura terashi tsudzukete korobanu you ni to',\n", - " 'bokura wo itsumo izanau tadashii mirai no hikari wa',\n", - " 'neon ya gaitou janakute',\n", - " 'yoru ni dake saku manmarui mangetsu',\n", - " \"hey, mr. crazy, don't you think?\",\n", - " 'wakaranaku natta bokutachi wa',\n", - " 'dare wo shinyou shite dare wo kizu tsukerya ii no?',\n", - " 'kirawarete koritsu suru yori',\n", - " 'kiratte teki tsukuru hou ga',\n", - " 'ima no ima made wa sukoshi raku nanda so omotteita',\n", - " 'tsukiakari yo ima terase! machigaesou na bokura wo',\n", - " 'hitasura terashi tsudzukete mayowanu you ni to',\n", - " 'bokura wo itsumo izanau tadashii mirai no hikari wa',\n", - " 'neon ya gaitou janakute',\n", - " 'yoru ni dake saku manmarui mangetsu',\n", - " 'arifureta mono no sei de yogosareta kono kyuutai ni',\n", - " 'sore wa bokura ga umareru mae kara',\n", - " 'se wo mukezu ni hikari wo atae tsudzukete kureteita!',\n", - " 'zetsubouteki na kono bokura ni',\n", - " 'bokura wa mada kuchitenai sa machigaete mo kusaranai sa',\n", - " 'dore dake saki aru bokura ni kuchi wo hasamu tsumori?',\n", - " 'tsukiakari yo ima terase! uso darake no kono machi wo',\n", - " 'zenbu wo sarake dasasete awateru kao ga mitai',\n", - " 'sore demo awatezu ni mada reisei wo yosoou yatsu ni wa',\n", - " '\"kawaisou ni\" to hitokoto',\n", - " 'mimimoto de sasaite waratte yaru',\n", - " '\"for my love, i\\'ll bet\"',\n", - " 'inochi koso o juudan ni',\n", - " 'kakeru straight bet',\n", - " '\"now have a seat\"',\n", - " 'kare wa itta sagesumu shisen de',\n", - " 'ihou na ozzu',\n", - " 'hametsu ni wa choushou o',\n", - " 'rasuto kooru ga aoru',\n", - " 'this 1 chip no shoubu o',\n", - " '\"for my love , i\\'ll bet\"',\n", - " 'ganbou ariki no dasan ja',\n", - " 'kachi wa arienai',\n", - " '\"now take this. my life\"',\n", - " 'inochi koso o dangan ni',\n", - " 'saa ruuretto maware',\n", - " 'watashi o warau ga ii',\n", - " '\"no more bets\"',\n", - " 'asobu booru wa dareka no you',\n", - " 'unmei nante',\n", - " 'guuzen no kyoshoku',\n", - " 'kuiai o isogu',\n", - " 'shinda me no kemono yo',\n", - " '\"never be afraid\"',\n", - " 'kanjou nando kometemo',\n", - " 'paasento wa agaranai',\n", - " '\"believe in my choice\"',\n", - " 'junsui de birei na shoubu o',\n", - " 'saa ruuretto tomare',\n", - " 'hijou ni erabu ga ii',\n", - " 'jajji wa tada aenaku',\n", - " 'haisha wa kie shousha niwa ah',\n", - " 'tsugi ga matteiru',\n", - " 'soshite ruuretto mawaru',\n", - " 'shouri sae yurusazu',\n", - " '\"for my love, i\\'ll bet\"',\n", - " 'ichido suteta inochi ni',\n", - " 'agaite wa ikenai',\n", - " '\"now take this. my life\"',\n", - " 'isagiyoku utsukushiku',\n", - " 'saa ruuretto maware',\n", - " 'watashi o warau ga ii',\n", - " 'tatazumu ichimai no chippu',\n", - " 'yuzuru koto naku hitotsu o mamoru',\n", - " 'ibitsu ni kuruu haguruma no sono chuushin de',\n", - " '\"i\\'ll bet...\"',\n", - " 'aaj botlan khullan do',\n", - " 'daaru shaaru ghullan do',\n", - " 'whisky da peg laga ke..',\n", - " 'saari duniya bhullan do',\n", - " 'party all night',\n", - " 'party all night',\n", - " 'party all night',\n", - " 'we do party all night',\n", - " 'sun lo sari duniya waalon',\n", - " 'jitna bhi tum zor laga lo',\n", - " 'karenge party sari raat',\n", - " 'gaand mein dum hai to band karva lo',\n", - " 'sun lo sari duniya waalon',\n", - " 'jitna bhi tum zor laga lo',\n", - " 'karenge party sari raat',\n", - " 'gaand mein dum hai to band karva lo',\n", - " 'aaj botlan khullan do',\n", - " 'daaru shaaru ghullan do',\n", - " 'whisky da peg laga ke..',\n", - " 'saari duniya bhullan do',\n", - " 'bajaate raho (sabki)',\n", - " 'bajaate raho (sabki)',\n", - " 'bajaate raho (sabki)',\n", - " 'bajaate raho..',\n", - " 'jisne bhi party hai karni',\n", - " 'aa jao mere ghar ke bheetar',\n", - " 'daaru, liquor, khaane ko hai murga teetar',\n", - " 'noida, gurgaon, dilli ki chhoriyan aayi hain',\n", - " 'saath mein yo yo ki cdiyaan bhi laayi hain',\n", - " 'sawaari saman ki, ib khud zimmedar hain',\n", - " 'kar lo party sari raat, kal itwaar hai',\n", - " 'music bajega loud, to aunty police bula legi',\n", - " 'ib aunty ne ja ke keh do',\n", - " 'yeh party yun hi chalegi',\n", - " 'aunty police bula legi',\n", - " ...]},\n", - " 'data': [':',\n", - " 'yubisaki no mada tsumasaki made',\n", - " 'todoka nai hi-to',\n", - " \"fuan shin'ke isho moso en'cho\",\n", - " 'darkness in my room',\n", - " 'kissaki no muku hokosaki mata',\n", - " 'nerawa reru hibi',\n", - " \"kyodo fushin gen'cho sai kakucho\",\n", - " ':',\n", - " 'write down his world',\n", - " 'kono peji wa kotoba no firuta kemura wazu',\n", - " 'write down his mind',\n", - " 'egaku furezu wa kokoro no busuta nabigeita?',\n", - " 'mizusaki no mada mi nu michi made',\n", - " \"fukuran da bijon kojoshin kocho so shin'koccho\",\n", - " 'imagination is good',\n", - " 'yu kisaki no go zero emu saki ni wa',\n", - " \"1 0 0 bun'no ichi no kabe kysoshin jun'cho wabi shin'jo\",\n", - " ':',\n", - " 'write down his world',\n", - " 'kono peji wa kotoba no firuta kemura wazu',\n", - " 'write down his mind',\n", - " 'egaku furezu wa kokoro no purorogu epirogu kono mama nemure nai',\n", - " ':',\n", - " 'ichi byogo shibuki mau',\n", - " 'kobosen puru saido nozokikomu',\n", - " 'kyo kaisei',\n", - " 'nana shoku no swimmer (korin freimuin)',\n", - " 'ichi byogo chiri midare',\n", - " 'ru wota buru',\n", - " \"ju ryoku furiharai rin'sen taisei\",\n", - " \"kizan de ku timer toran'su on take your mark\",\n", - " ':',\n", - " 'kono paazu wa kotoba no firuta tsuzura wazu',\n", - " 'write down his mind',\n", - " 'egaku suteji wa kokoro no purorogu epirogu',\n", - " 'kono mama owan nai?',\n", - " ':',\n", - " 'ichi byogo shibuki mau',\n", - " 'kobo sen',\n", - " 'puru saido nozokikomu',\n", - " 'kyo kaisei',\n", - " 'nana shoku no swimmer (korin fureimuin)',\n", - " 'ichi byogo chiri midare',\n", - " 'ru wota buru',\n", - " 'ju ryoku furiharai',\n", - " \"rin'sen taisei\",\n", - " \"kizan de ku timer toran'su on take your mark\",\n", - " '(eery solo)',\n", - " '(gets heavy)',\n", - " 'gaaadhaaaa gadhaaaa',\n", - " 'gadhaaaa',\n", - " 'gawowowowowowowow',\n", - " 'weehaaaw weehaaaw (x2)',\n", - " 'gaiaiaiaiaiaiaiaiaiaaah',\n", - " 'gaaadhaaaa gaaadhaaaa',\n", - " 'gahaaaa',\n", - " 'gawowowowowowowow',\n", - " 'weehaaaw weeehaaw (x2)',\n", - " '... (tones down to an eery solo again)',\n", - " 'yadnaha yadnaha yaaa dnahahahaw',\n", - " 'dahdoooo hoooo hooo hooooo',\n", - " 'yeahhhhhhhhhhhhaaaaha haaa hawww',\n", - " 'yadayada hooooooooooo hooo hooo hooo',\n", - " 'ganjigarame no machi',\n", - " 'namidagumu kono ko no te wo hiki nagara',\n", - " 'kanrakugai uramichi wo hou no ito surinuke uru',\n", - " 'hai gyo ni kuwae sase ta gyoniku to nigai carnival',\n", - " 'bloodstained carnival',\n", - " 'jissai nani mo wakara nai mama',\n", - " 'hai ni suikoma re te iku gaiaku',\n", - " 'humanist no sungeki',\n", - " 'heil jap',\n", - " 'osanagokoro wa fushoku shi namanurui uji ni kaeru',\n", - " 'hibi nare shitashin de fukuyou suru',\n", - " 'idenshi kumi kae rare ta mono douyou',\n", - " 'fake god wake up and go to hell',\n", - " 'yatsura no shisou ni hakaishi o tatakitsukeru no wa dare?',\n", - " 'takaku tsumiage ta puraido wo bara ga futatabi kubi to karu',\n", - " 'bloodstained carnival',\n", - " 'jissai nani mo wakara nai mama',\n", - " 'hai ni suikoma re te iku gaiaku',\n", - " 'humanist no sungeki',\n", - " 'heil jap',\n", - " 'osanagokoro ha fushoku shi namanurui uji ni kaeru',\n", - " 'shut up',\n", - " 'bullshit',\n", - " 'shut up',\n", - " 'shut fucker',\n", - " 'all things are touched in the head',\n", - " 'escape',\n", - " '1 lb no niku wo sogi otose nai kurushimi',\n", - " '2 nichi bakari de kioku kara kie te iku koufuku',\n", - " '3 dome no shoujiki nante dare mo shinji nai',\n", - " 'but this is the fact',\n", - " 'do what i say',\n", - " 'kill yourself',\n", - " 'kisama tou mo seishin sei narushisuto',\n", - " 'ketsu raku no shuudan reipu',\n", - " 'fuck the system',\n", - " 'this is me welcoming you to the deep blue sea',\n", - " 'where the tired meet in attempts to rest their bodies',\n", - " \"we'll be fine once we relax and close our eyes\",\n", - " 'let the water we love find a home inside our lungs',\n", - " '\"oh, no! this is typical',\n", - " 'bare myself to the bone and i\\'m sure to catch a cold.\"',\n", - " '\"you can run and hide and beg for mercy',\n", - " 'the only way to save your lady',\n", - " 'sharks are marked in tanks',\n", - " \"as you're walking the plank\",\n", - " 'it could take all night',\n", - " \"you're lookin' for the lamp light\",\n", - " 'do everything you can',\n", - " 'it\\'s in the palm of your hand\"',\n", - " 'i just need a place where i can get some sleep',\n", - " 'when i look to my dreams i see awful things',\n", - " '\"oh, no! this is typical',\n", - " 'bare myself to the bone and i\\'m sure to catch a cold.\"',\n", - " '\"you can run and hide and beg for mercy',\n", - " 'the only way to save your lady',\n", - " 'sharks are marked in tanks',\n", - " \"as you're walking the plank\",\n", - " 'it could take all night',\n", - " \"you're lookin' for the lamp light\",\n", - " 'do everything you can',\n", - " 'it\\'s in the palm of your hand\"',\n", - " 'just keep swimming your way to your watery grave',\n", - " 'where your lack of faith has you fucked beyond belief',\n", - " 'you have to warn them. \"i\\'m not who i said i am\"',\n", - " 'this is your destiny, keep everyone living',\n", - " \"what goes through your mind when you know you're gonna die? and the same things that provoke it are the things that keep you alive\",\n", - " 'evilauoypeektahtsgnihtehteratiekovorptahtsgnihtemasehtdna?eidannoger\\'uoywonkuoynehwdnimruoyhguorhtseogtahwgnivilenoyrevepeek,ynitsedruoysisiht\"maidiasiohwtonm\\'i\".mehtnrawotevahuoyfeilebdnoyebdekcufuoysahhtiaffokcalruoyerehwevargyretawruoyotyawruoygnimmiwspeektsuj\"dnahruoyfomlapehtnis\\'tinacuoygnihtyreveodthgilpmalehtrof\\'nikooler\\'uoythginllaekatdluoctiknalpehtgniklawer\\'uoysasknatnidekrameraskrahsydalruoyevasotyawylnoehtycremrofgebdnaedihdnanurnacuoy\"\".dlocahctacoterusm\\'idnaenobehtotflesymerablacipytsisiht!on,ho\"sgnihtlufwaeesismaerdymotkoolinehwpeelsemostegnacierehwecalpadeentsuji\"dnahruoyfomlapehtnis\\'tinacuoygnihtyreveodthgilpmalehtrof\\'nikooler\\'uoythginllaekatdluoctiknalpehtgniklawer\\'uoysasknatnidekrameraskrahsydalruoyevasotyawylnoehtycremrofgebdnaedihdnanurnacuoy\"\".dlocahctacoterusm\\'idnaenobehtotflesymerablacipytsisiht!on,ho\"sgnulruoedisniemohadnifevolewretawehttelseyeruoesolcdnaxalerewecnoenifebll\\'ewseidobriehttserotstpmettaniteemderitehterehwaeseulbpeedehtotuoygnimoclewemsisiht',\n", - " 'i was made in morocco',\n", - " 'a long time ago',\n", - " 'a system chwiya flou',\n", - " 'ou hawelt nfehmou',\n", - " 'and when i realize that ma fhemt walou',\n", - " 'hettite slah ou ghennite had el morceau',\n", - " 'bach ngoulou baz',\n", - " 'baz alina ou baz 3alikou',\n", - " 'goulou baz',\n", - " 'baz alihoum ou li qbel menhoum',\n", - " 'goulou baz',\n", - " 'goulou baz ala li f bush chba sebbane',\n", - " 'ou telqah houa lewwel mqeyyed fel qoura dial mirikane',\n", - " 'goulou baz ala li khrej men cabaret sekrane',\n", - " 'ou i goul ma tkhafch alia 3ad ghan soug meziane',\n", - " 'zidou baz, li ati floussou lechewafate',\n", - " 'ou zidou baze, 3ala li i bi sawtou f lintikhabate',\n", - " 'goulou baz',\n", - " 'goulou baz ala li twadda 5 merrate fenhar',\n", - " 'ou felekher i louh zbel f trottoire dial bab dar',\n", - " 'ou zidou baz ala li tchekka men onsoria f sbania',\n", - " 'ou hna rah i teyyeh leklame ala nass dial nigeria',\n", - " 'goulou baz ala li lbess kessoua ou a',\n", - " 'goulou baz hit ma dayzach fih sadaqa',\n", - " 'goulou baz',\n", - " 'baz hegga lelougha rasmia dialna al arabiya al fousha',\n", - " 'li nsaw ma dekhlou fiha kelma mouhima wa hia kelmet baz',\n", - " 'ou zidou baz adim lelmahakim',\n", - " 'kheliwna nachtine wakha arfine',\n", - " 'baz la metro dial casa',\n", - " 'bekri chefnah bhal tunnel dial tanja',\n", - " 'goulou baz',\n", - " 'goulou baz had nouba',\n", - " 'makoum bigg the done el khasser ou hoba',\n", - " 'goulou baz',\n", - " 'meni tchoufou l boulisse',\n", - " 'ki dirou f khdemthoum bla ma i cheddou devise',\n", - " 'goulou baz',\n", - " 'meni tchoufou bladkoum',\n", - " 'tkhesser wladkoum oula rechoua datkoum',\n", - " 'goulou baz',\n", - " 'meni tchoufou jamaa katzeffet fe triq bla ma tzefet dmaghkoum',\n", - " 'goulou baz',\n", - " 'meni tchoufou sbitar',\n", - " \"ma fihch l'alchool fermli maitre\",\n", - " 'goulou baz',\n", - " 'meni derri fih el moute',\n", - " 'i goul lik sir chri bra ra skhana gha tfoute',\n", - " 'goulou baz',\n", - " 'derri mate diwh men andna ma ghay batch',\n", - " 'fine laqa ma ma kaynach',\n", - " 'sem7ou lina ma bghinach',\n", - " 'goulou baz',\n", - " 'el mou tebki',\n", - " 'dmou tayhine ou lbou i chki',\n", - " 'goulou baz derb mgelleg',\n", - " 'riha atya ou doudane mderreg',\n", - " 'goulou baz ra hlektouna',\n", - " 'chfertou lina floussna ou mehhentouna',\n", - " 'goulou baz ma bghitouch gala idkoum fih lalalalala',\n", - " 'tooku made michibikarete',\n", - " 'meiun no michi wo buchikowasu made',\n", - " \"yeah guess who's back\",\n", - " 'everybody get down!',\n", - " \"guess who's back\",\n", - " 'hey, stand up! stand up!',\n", - " \"unmei no itazura ni i'm falling down\",\n", - " 'kimi to kanadeta harmony',\n", - " 'mada kako ni okizari no mama',\n", - " 'kimi no tsuyoki na call wo',\n", - " 'maneku koe ni hikizutta mama',\n", - " 'hey matteru dake ja mou tarinai',\n", - " 'guess who is back',\n", - " 'meikai dakishime',\n", - " 'guess who is back',\n", - " 'utsushidasu flame',\n", - " 'guess who is back',\n", - " 'hikari tomoshite',\n", - " 'guess who is back',\n", - " 'makkura no meiro de',\n", - " 'guess who is back',\n", - " 'lalalalala lalalala',\n", - " 'lalalalala lalalala',\n", - " 'guess who is back',\n", - " 'lalalalala lalalala',\n", - " 'me no mae no kibou uchikatte',\n", - " 'kizetsusuru youna koui no naka',\n", - " 'kimochi uruyouja koimo awa',\n", - " 'koshi wo furukazu kazoetemo',\n", - " 'totemo honki nya narenai ai ai',\n", - " 'anata gonomi no sixty-nine',\n", - " 'iyayoyamete wa ok sign',\n", - " 'moshimo ainara magai monode',\n", - " 'kuri no hanasakya bye bye bye bye',\n", - " 'you make me love love',\n", - " 'i give you my gun gun',\n", - " 'namae shiranai futari no mamanara',\n", - " 'wakari aechattanonine',\n", - " 'i just wanna make love',\n", - " \"dakedo i don't wanna fall in love\",\n", - " 'areyakoreyato kongaragacchauno',\n", - " 'itsunomaniyara sonna nacchauno',\n", - " 'shiroi tanimade madoronde ireba',\n", - " \"mune no dokokaga zukizuki shakin' shakin'\",\n", - " 'kanari cool ni kidottetemo',\n", - " 'yappari shu-ru na kokoro moyou',\n", - " 'sakete toorenu amai wana ni',\n", - " 'migoto hamatte ah ah ah',\n", - " 'is this love potion?',\n", - " \"you've got love machine gun\",\n", - " 'koroshi monku wa dynamite na',\n", - " 'namida tsubushita kimi no smile',\n", - " 'beauty & stupid a-ha-ha (baby love you, love you like an animal)',\n", - " 'beauty & stupid a-ha-ha',\n", - " 'i just wanna make love',\n", - " \"dakedo i don't wanna fall in love\",\n", - " 'uso happyaku narabetemitemone',\n", - " 'bake no kawa hagasarechauyone',\n", - " 'horechattara makechatteruyone',\n", - " 'maji dattara no no no no',\n", - " 'kizetsusuru youna koi no naka',\n", - " 'kimochi mechakucha hart barabara',\n", - " 'horetaharetade shoubunoreba',\n", - " 'itomotayasuku orokana doreiyo',\n", - " 'mekurumekuyona hibi oyoide',\n", - " 'mawari megutta tsuke kakaete',\n", - " 'hana wo meshimase fake no bara wo',\n", - " 'migoto sakasete high high high',\n", - " \"you're beauty queen of love\",\n", - " \"i'm stupid slave of love\",\n", - " 'i kiss on your knees',\n", - " 'let me do what you want',\n", - " 'kimi no omocha ni sasete',\n", - " 'beauty & stupid a-ha-ha',\n", - " '(baby love you, love you like an animal)',\n", - " 'beauty & stupid a-ha-ha',\n", - " \"(baby love me yeah! i wanna be you're dog)\",\n", - " 'this next song is called',\n", - " 'gurrrrrr',\n", - " 'gurrrrrr',\n", - " 'e-yugghh',\n", - " 'gurrblarrbbllrrlarrr',\n", - " 'hllyaaaaaa',\n", - " 'hrryaaa',\n", - " 'errr eee yeerrrrrr',\n", - " 'errr blrrbgbrrr',\n", - " 'baarrhhh ugghh waarrhhh',\n", - " 'ughhh eehh ueyrehhh',\n", - " 'yadot rof tsuj s’ti wonk i tub',\n", - " 'ti ekaf ot emit emos deen i',\n", - " 'yadot rof tsuj s’ti wonk i tub',\n", - " 'ti ekaf ot emit emos deen i',\n", - " 'degnahc reven evah uoy taht hsiw i',\n", - " '?gnilley elpoep s’ereht yhw dna i ma erehw',\n", - " 'yadot rof tsuj s’ti wonk i tub',\n", - " 'ti ekaf ot emit emos deen',\n", - " 'maahi ve maahi ve',\n", - " \"that's the way maahi ve\",\n", - " 'tere maathe jhumar damke',\n", - " 'tere kanno baali chamke hai re',\n", - " 'maahi ve',\n", - " 'tere haatho kangana khanke',\n", - " 'tere pairo payal chance hai re',\n", - " 'maahi ve',\n", - " 'naino se bole rabba rabba',\n", - " 'mann mein dole rabba rabba',\n", - " 'amrut ghole rabba rabba',\n", - " 'tu soniye',\n", - " 'jind maahi ve',\n", - " 'soni soni aaja maahi ve',\n", - " 'everybody sing',\n", - " 'soni soni aaja maahi ve',\n", - " '(x2)',\n", - " \"that's the way maahi ve\",\n", - " 'o tere aankhen kali kali',\n", - " 'tera gora gora mukhdha hai re',\n", - " 'maahi ve',\n", - " 'tere rangat jaise sona',\n", - " 'tu chaand ka tukda hai re',\n", - " 'maahi ve',\n", - " 'tere gaal gulabi rabba rabba',\n", - " 'chal sharabi rabba rabba',\n", - " 'dil ki kharabi rabba rabba',\n", - " 'tu soniye',\n", - " 'jind maahi ve',\n", - " 'soni soni aaja maahi ve',\n", - " 'everybody sing',\n", - " 'soni soni aaja maahi ve',\n", - " '(x2)',\n", - " 'barse rangini kaliyan hai mehki bhini bhini',\n", - " 'baje mann mein halke halke shehnaiya re',\n", - " 'jitne hai tare aanchal mein aa gaya sare',\n", - " 'dil ne jaise hi li angadayee re',\n", - " 'tu jo aayee sajhke mehndi rajke',\n", - " 'chal bajke oh soniye',\n", - " 'dil kit no ka khaye dhajke oh soniye',\n", - " 'jind maahi ve',\n", - " 'soni soni aaja maahi ve',\n", - " 'everybody sing',\n", - " 'soni soni aaja maahi ve',\n", - " '(x2)',\n", - " 'chanhda meri chanda tujhe kaise mein yeh samjhaoon',\n", - " 'mujhe lagti hai tu kitni pyaari re',\n", - " 'khusiyan jitni hai sab jitni hai sab dhoondh ke laoon',\n", - " 'teri doli ke sang kar do sari re',\n", - " 'teri doli ke sang kar do sari re',\n", - " 'tu jo aayee sajhke mehndi rajke',\n", - " 'chal bajke oh soniye',\n", - " 'dil kit no ka khaye dhajke oh soniye',\n", - " 'jind maahi ve',\n", - " 'soni soni aaja maahi ve',\n", - " 'everybody sing',\n", - " 'soni soni aaja maahi ve',\n", - " 'tere maathe jhumar damke',\n", - " 'tere kanno baali chamke hai re',\n", - " '(maahi ve)',\n", - " 'tere haatho kangana khanke',\n", - " 'tere pairo payal chance hai re',\n", - " '(maahi ve)',\n", - " 'naino se bole rabba rabba',\n", - " 'mann mein dole rabba rabba',\n", - " 'amrut ghole rabba rabba',\n", - " 'tu soniye',\n", - " 'jind maahi ve (x3)',\n", - " 'soni soni aaja maahi ve',\n", - " 'everybody sing',\n", - " 'soni soni aaja maahi ve',\n", - " 'jind maahi ve',\n", - " 'soni soni aaja maahi ve',\n", - " 'everybody sing',\n", - " 'soni soni aaja maahi ve',\n", - " 'junbi ja genjuu nyou kame shibin ja nenjuu',\n", - " '12 toki 10 fun kanji atta kanja',\n", - " 'fun kura e beautiful',\n", - " 'karaokeraibu kuraini kyouza me',\n", - " 'ii neechan mae ni',\n", - " 'ire kui no dandei',\n", - " 'fuchi kuchi man kidori no mr boogie',\n", - " 'zungurimukkuri tan karamatta',\n", - " 'ahondara kantouchiiki',\n", - " 'heppiri koshi no engei nanzo antara hou mita ika?',\n", - " 'a tsuu tsuu tsuu itatsutsu',\n", - " 'aikawarazu no fun iki',\n", - " 'meda koi dawameitero',\n", - " 'entertainer',\n", - " 'furue ro pankushin yuganda suta',\n", - " 'furue ro pankushin yuganda suta',\n", - " 'furue ro pankushin yuganda suta',\n", - " 'furue ro pankushin higan da fuck police',\n", - " 'saa shoubu ja kenjuu wo nuki tobikonda benjo',\n", - " 'bichi fun shonben enjo kousai egetsu nai ron ke',\n", - " 'fun kura e beautiful',\n", - " 'karaokeraibu kuraini kyouza me',\n", - " 'abake! ura ken haran sandeiesuta maigo',\n", - " \"yoroke rock 'n’ roll\",\n", - " 'tobacchiri gomen da',\n", - " 'furuki yoki utage da',\n", - " 'mama papa baa yome yo',\n", - " 'zungurimukkuri tan karamatta',\n", - " 'ahondara kantouchiiki',\n", - " 'heppiri koshi no engei nanzo antara hou mita ika?',\n", - " 'a tsuu tsuu tsuu itatsutsu',\n", - " 'aikawarazu no fun iki',\n", - " 'meda koi dawameitero',\n", - " 'entertainer',\n", - " 'furue ro pankushin yuganda suta',\n", - " 'furue ro pankushin yuganda suta',\n", - " 'furue ro pankushin yuganda suta',\n", - " 'furue ro pankushin higan da fuck police',\n", - " 'tambourine man tambourine man tambourine man',\n", - " 'tambourine mr boogie tambourine man',\n", - " 'tambourine mr boogie tambourine man',\n", - " 'tambourine mr boogie tambourine man',\n", - " 'tambourine mr boogie tambourine man',\n", - " 'mr star boogie',\n", - " 'mr star boogie',\n", - " 'mr star boogie',\n", - " 'mr star boogie',\n", - " 'furue ro pankushin yuganda suta',\n", - " 'furue ro pankushin yuganda suta',\n", - " 'furue ro pankushin yuganda suta',\n", - " 'furue ro pankushin higan da fuck police',\n", - " 'so long hikari no mukoue',\n", - " 'so long namonaki jiyuue',\n", - " 'so long huanwo nomikome',\n", - " 'so long dareyorimo takaku tobe',\n", - " 'anadarakeno hanewo haide tobikome mewo kojiakete',\n", - " 'sokoga doromamireno heven darouga sumeba rakuenttesa',\n", - " 'mekkiga hageta hibiwo seoi tancyouna baseidomowo kurae',\n", - " 'kizuwo eguruyouni susume sou menomaeno real ga subete',\n", - " 'so long yamiwo saite',\n", - " 'so long namonaki jiyuue',\n", - " 'so long huanwo nomikome',\n", - " 'so long hurueru kodou',\n", - " 'loop jimonjitou loop jikokenno',\n", - " \"loop suru kurusimino hate orewa heven's door\",\n", - " 'wo nagameteiru',\n", - " 'murewo nashite nishie mukau toriwa yagate kodokuwo shiru',\n", - " 'soshite yaseta hanewo mite itta \"sokoniwa nozomumono',\n", - " 'subetega arunokai? \"',\n", - " 'daremoga mita keshikiyorimo kageochiteiku chino hatewo',\n", - " 'soshite kieteshimaisouna hini tsuyoku inotta',\n", - " 'in deep slowly sky',\n", - " 'tesagurino miraini hurue tachitsukusunara sonomamadeii',\n", - " 'okizarino \"nameless liberty\" ga warainagara sou itta',\n", - " 'soshite ima kokode hikariwo abiru yuragu miraikara mewo',\n", - " 'somukenukotowo chikatte',\n", - " 'kekkan kake-meguri nouten yaburu',\n", - " 'byoudou nantenee sa',\n", - " 'kyou mo mata kidzuka sare',\n", - " 'tobichiru houkai no oto ga dokomademo otosu',\n", - " 'erabu no wa dare demonaku tare ochiru',\n", - " 'yogore kitta ore no bi',\n", - " 'omaera ga shimesu ikikata ni tou',\n", - " 'naki mane jouzuna omae no kotoda',\n", - " 'kono mama yarisugosu darou',\n", - " 'yami no naka',\n", - " 'doom and gloom',\n", - " 'welcome to the inferno',\n", - " 'kekkan kake-meguri nouten yaburu',\n", - " 'byoudou nantenee sa',\n", - " 'kyou mo mata kidzukasa re',\n", - " 'tobichiru houkai no oto ga dokomademo otosu',\n", - " 'doom and gloom',\n", - " 'welcome to the inferno',\n", - " \"saa ikou ka kin'iro no sekai\",\n", - " 'doom and gloom',\n", - " 'welcome to...',\n", - " 'nani mo ienai kimi ga utsuru glass o kuyashikute kowashitemo',\n", - " 'soko kara nigeru kimi o utsusu kagami ga soko ni wa aru no',\n", - " '(wakaranai no !!) iya (wakaritakunai no sa!!)',\n", - " 'kyou mo ashita mo asattemo...',\n", - " 'soko kara nigeru you ni...',\n", - " 'just discover the sound',\n", - " 'burning the music in your heart',\n", - " 'scream !! sakebe yeah',\n", - " 'jibun no koe o karashite',\n", - " 'hito wa odoroku hodo ni tanjun katsu junsuimuku de totetsu mo naku',\n", - " 'toki ni hito o kizutsukete wa azawarau akuma no you',\n", - " '(wakatteru sa !!) iya wakareba chigau hazu',\n", - " 'kyou ya kinou ya atotoimo',\n", - " 'ashita mo kawaranai sa',\n", - " 'just discover the sound',\n", - " 'burning the music in your heart',\n", - " 'scream !! sakebe yeah',\n", - " 'jibun no koe o karashite',\n", - " \"get away, don't wanna think about it\",\n", - " 'far away, you wanna take my name',\n", - " \"killin' me, don't wanna think about you\",\n", - " 'i define it',\n", - " 'i can hear it now',\n", - " 'just discover the sound',\n", - " 'burning the music in your heart',\n", - " 'scream !! sakebe yeah',\n", - " 'jibun no koe o karashite',\n", - " 'beach europe kiero! kechi yuuei (x3)',\n", - " 'beach europe kiero! kechi yuuei yeah!',\n", - " 'swing samaa aisukuriimugecchu! mega lover',\n", - " 'suppin guramaa suppin ga jiyuu mega lover',\n", - " 'pink shuraba speaker chu! mega lover',\n", - " 'aniki lover sign',\n", - " 'swing samaa aisukuriimugecchu! mega lover',\n", - " 'suppin guramaa suppin ga jiyuu mega lover',\n", - " 'pink shuraba speaker chu! mega lover',\n", - " 'aneki lover sign',\n", - " \"'chou buruu' damare! yuuga na sex apiiru people mesu\",\n", - " 'zetsubou seibutsu kei no netsuben',\n", - " 'fuyu bankai yuuutsu natsu kuru fuan kan reidii',\n", - " 'nure ba nebaneba.desupeinto',\n", - " 'fuun na wan chan an ta natsu geemu mara ga hanran sasupensu',\n", - " 'meromero ero play girl! play girl!',\n", - " 'h tsugou na dorama sutikku ketsugou na go manetsu purei',\n", - " 'disuko de kone orei!',\n", - " 'dare mo kare mo hari kiri mousou',\n", - " 'furu bikini ki re te tousou',\n", - " 'toropikaru nennen joushou ozon sou zoon muzan biisan',\n", - " 'are ma matsuri de kousou',\n", - " 'shutten garami no rantou',\n", - " 'tekiya no niichan neechan boro mouke suru masutaa',\n", - " 'fuun na wan chan an ta natsu geemu mara ga hanran sasupensu',\n", - " 'meromero ero play girl! play girl!',\n", - " 'h tsugou na dorama sutikku ketsugou na go manetsu purei',\n", - " 'disuko de kone orei!?',\n", - " 'hey! irero reibou!',\n", - " 'cherry going to bed',\n", - " 'gubbai ero saibou',\n", - " 'hiroin zenmetsu to reito',\n", - " 'modae little boy',\n", - " 'tedumari no moui',\n", - " 'omae rabu riron sae sainou',\n", - " 'mousou atsumare genmetsu to urei no re in',\n", - " 'tada itsumo ore fura re inmairuumu',\n", - " 'noo meiku furo he',\n", - " 'kibun ha star lame',\n", - " 'yukata fuurin daarin',\n", - " 'kon romanrokku honey',\n", - " 'oh radio bakuon hamabe zai shoku (tsumi iro)',\n", - " 'mina falling love',\n", - " 'exotic party, shake your body!',\n", - " 'noo bura afure kuroku summer year!?',\n", - " '(repeat)',\n", - " 'beach europe kiero! kechi yuuei (x3)',\n", - " 'biba! binbou!',\n", - " 'bibou rinsumania!!',\n", - " 'three, two, one, ignition, fire !',\n", - " 'nanasenmannenmae saru no tanjou',\n", - " 'shinka to meiutte bokura koko ni iru kedo',\n", - " 'nanasenmannenbun baka ni natte taika o kurikaeshite iru',\n", - " 'sonna ki ga shite naranai ah subarashiki jinrui, ah !',\n", - " 'kono kudarane uta o utatteru ma ni darekaga gisei ni natte',\n", - " 'darekega gisei ni natteru ma ni kofuku wa futo mebuite',\n", - " 'kono tsuman nee nichijo no uragawa de souzetsuna hi nichijou ga',\n", - " 'imaka imakato mushibami tsudzukeru ah dou shiro tte yuu nda',\n", - " 'tsuchi o utta ringo mizu wo sutte fukure dashita',\n", - " 'ki kara ochita boku wa hino mewominai mama',\n", - " 'kin de katta kokoro hi wo okoshite atatameru',\n", - " 'tsuki ni tatta saru wa mada waga mo no kao de waratte iru',\n", - " '1, 2, 3, 4 ! we learn a lot !',\n", - " 'a, b, c, d ! we learn a lot !',\n", - " \"but can't discover the cause of stupidity\",\n", - " '1, 2, 3, 4 ! we cried aloud, over and over and over again',\n", - " \"but can't discover the cause of stupidity\",\n", - " 'nijuu san nen mae boku wa tanjou',\n", - " 'kore ga shinka no hate datte warachau ne mattaku',\n", - " 'nanse chi ni nureta ryote wo sotto kakushite ai to heiwa da to utatte iru',\n", - " 'boku wa tensai nanda jibun wo damasu tensai nanda!',\n", - " 'sensou tosou juu wo motte saa',\n", - " 'ai to heiwa, ai to heiwa',\n", - " 'sensou tosou migi e naratte saa',\n", - " 'ai to heiwa, ai to heiwa',\n", - " 'saru wa ki kara doko e ochiru ?',\n", - " '1, 2, 3, 4 ! we learn a lot !',\n", - " 'a, b, c, d ! we learn a lot !',\n", - " \"but can't discover the cause of stupidity\",\n", - " '1, 2, 3, 4 ! we cried aloud, over and over and over again',\n", - " \"but can't discover the cause of stupidity\",\n", - " 'nanasenmannenmae saru no tanjou',\n", - " 'shinka to meiutte bokura koko ni iru kedo',\n", - " 'nanasenmannenbun baka ni natte taika o kurikaeshite iru',\n", - " 'sonna ki ga shite naranai ah subarashiki jinrui, ah !',\n", - " 'hangul',\n", - " '멈추지 않는 this ringtone',\n", - " '자꾸 울려대는 소리',\n", - " '모든 것이 날 미치게 해',\n", - " '자꾸 나를 조여와',\n", - " 'your voice your lies',\n", - " '듣기 싫은 걸 oh no',\n", - " 'your voice your lies',\n", - " '정신 나간 소린 걸',\n", - " 'get out of my way',\n", - " 'i love you boy 널 사랑해',\n", - " '너의 말에 다신 속지 않아 난',\n", - " '네 목소리 듣기 싫어 no no no',\n", - " '집착에 미쳐버렸어 your voice',\n", - " '내 손 잡지 말아줘',\n", - " '듣고 싶지 않아',\n", - " '더 이상은 아냐 evil voice',\n", - " 'lalalalalalalalalala',\n", - " '떠나가줘',\n", - " 'lalalalalalalalalala',\n", - " 'my love is gone',\n", - " 'don’t say you’re coming home',\n", - " '네가 있을 곳은 없어',\n", - " '혹시라는 건 없어 no more',\n", - " 'i love you boy 널 사랑해',\n", - " '너의 말에 다신 속지 않아 난',\n", - " '네 목소리 듣기 싫어 no no no yeah',\n", - " '웃지 마 미칠 것 같아 your voice',\n", - " '절대 속지 않겠어',\n", - " '보고 싶지 않아',\n", - " '더 이상은 아냐 evil voice',\n", - " 'lalalalalalalalalala',\n", - " '떠나가줘',\n", - " 'lalalalalalalalalala',\n", - " 'my love is gone',\n", - " 'don’t say you think',\n", - " 'that you’re the one',\n", - " 'don’t say 착각은 하지 마 oh',\n", - " '집착에 미쳐버렸어 your voice',\n", - " '내 손 잡지 말아줘',\n", - " '듣고 싶지 않아',\n", - " '더 이상은 아냐 evil voice',\n", - " 'lalalalalalalalalala',\n", - " '떠나가줘',\n", - " 'lalalalalalalalalala',\n", - " 'my love is gone',\n", - " 'romanization',\n", - " 'meomchuji anhneun this ringtone',\n", - " 'jakku ullyeodaeneun sori',\n", - " 'modeun geosi nal michige hae',\n", - " 'jakku nareul joyeowa',\n", - " 'your voice your lies',\n", - " 'deutgi silheun geol oh no',\n", - " 'your voice your lies',\n", - " 'jeongsin nagan sorin geol',\n", - " 'get out of my way',\n", - " 'i love you boy neol saranghae',\n", - " 'neoui mare dasin sokji anha nan',\n", - " 'ne moksori deutgi silheo no no no',\n", - " 'jipchage michyeobeoryeosseo your voice',\n", - " 'nae son japji marajwo',\n", - " 'deutgo sipji anha',\n", - " 'deo isangeun anya evil voice',\n", - " 'lalalalalalalalalala',\n", - " 'tteonagajwo',\n", - " 'lalalalalalalalalala',\n", - " 'my love is gone',\n", - " 'don’t say you’re coming home',\n", - " 'nega isseul goseun eopseo',\n", - " 'hoksiraneun geon eopseo no more',\n", - " 'i love you boy neol saranghae',\n", - " 'neoui mare dasin sokji anha nan',\n", - " 'ne moksori deutgi silheo no no no yeah',\n", - " 'usji ma michil geot gata your voice',\n", - " 'jeoldae sokji anhgesseo',\n", - " 'bogo sipji anha',\n", - " 'deo isangeun anya evil voice',\n", - " 'lalalalalalalalalala',\n", - " 'tteonagajwo',\n", - " 'lalalalalalalalalala',\n", - " 'my love is gone',\n", - " 'don’t say you think',\n", - " 'that you’re the one',\n", - " 'don’t say chakgageun haji ma oh',\n", - " 'jipchage michyeobeoryeosseo your voice',\n", - " 'nae son japji marajwo',\n", - " 'deutgo sipji anha',\n", - " 'deo isangeun anya evil voice',\n", - " 'lalalalalalalalalala',\n", - " 'tteonagajwo',\n", - " 'lalalalalalalalalala',\n", - " 'my love is gone',\n", - " 'she has a sex addiction',\n", - " 'betty in the trash box',\n", - " 'you are the highest grade gossip',\n", - " 'betty in the trash box',\n", - " 'suicide of masquerade',\n", - " 'everyone is attracted by your sweet face',\n", - " 'juusan kaidan nobori kuzureochite yuku vijon',\n", - " 'sungeki no doresu wo nugi dantoudai made itchokusen',\n", - " 'jouyoku mamire no kimi ga itoshii fushidara ni utsuru kuchibiru no sei?',\n", - " 'shinimonogurui de tobimawaru kinku ni ezuku shinjitsu',\n", - " 'haiso no rizumu kizande',\n", - " 'forbidden red lips',\n", - " 'she has a sex addiction',\n", - " 'bang! bang!',\n", - " 'cute luv machine',\n", - " 'she has a sex addiction',\n", - " 'you are the highest grade gossip',\n", - " 'dare yori mo kagayaite iru',\n", - " 'bеtty in the trash box',\n", - " 'where arе you now?',\n", - " 'contempt/loss/blank life',\n", - " 'forbidden fruit',\n", - " 'forbidden red lips',\n", - " 'she has a sex addiction',\n", - " 'bang! bang!',\n", - " 'cute luv machine',\n", - " 'she has a sex addiction',\n", - " 'you are the highest grade gossip',\n", - " 'dare yori mo kagayaite iru',\n", - " 'she has a sex addiction',\n", - " \"n'roho l'jamaiqua (bab el oued kingston)\",\n", - " \"n'jibo e'zetla (kehla ki zitoune)\",\n", - " 'wa 3lajal el marka (tban mél b3id)',\n", - " \"n'batou berra (bla guitoune)\",\n", - " 'ched med ta3mira (bab el oued kingston)',\n", - " \"we n'derrah garro chira (kehla ki zitoune)\",\n", - " \"w'neztal 3inani (tban mél b3id)\",\n", - " \"z'kara fél houkouma...\",\n", - " \"gahmouna b'les speach\",\n", - " 'sketch 9dam wella kitch',\n", - " \"n'touma télé3bou bechéhna w'ana mazal mat3achitche\",\n", - " 'ghir khelouni n3iich malgré',\n", - " 'my tailor is not rich (aaa)',\n", - " 'ana cha3bi el mezloute',\n", - " 'hyati domino balbote',\n", - " 'serwali mezboute',\n", - " 'hiti hit mabin lahyout',\n", - " 'djerawna 3la kaskrotte',\n", - " \"heta fah el bote métekrat f'l'autoroute\",\n", - " \"scotish i'm not, british i'm not\",\n", - " \"i don't do don't do don't drink a whisky\",\n", - " 'aw nekini vegétarien malgré moi',\n", - " \"smokin' a lot o fuckin' tanzn béllot\",\n", - " '3endna les acteurs',\n", - " 'akter men hollywood',\n", - " '3endna les requins',\n", - " 'akter me sardines',\n", - " 'tiheza tihezawin',\n", - " '3endna les escrocs',\n", - " 'aw kayen les victimes',\n", - " 'tiberka tiberkawinn)',\n", - " '3endna bezzef el gaz',\n", - " \"we ghla 3lina l'moumtaz\",\n", - " \"n'roho l'jamaiqua (bab el oued kingston)\",\n", - " \"w'n'jibo e'zetla (kehla ki zitoune)\",\n", - " 'wa 3lajal el marka (tban mél b3id)',\n", - " \"w'n'batou berra (bla guitoune)\",\n", - " 'balek mel hanach',\n", - " 'heta ida kan fermache',\n", - " 'yetlouwa 3lik chèche',\n", - " 'el fertass we diguoulasse (digoulasse)',\n", - " 'heta fi riyas seize we nass',\n", - " \"wel hourras bel famass w'jouh tirroir caisse\",\n", - " 'dima dima labess',\n", - " \"ma n'tir m3a tayrine ma nedjri m3a edyouba\",\n", - " \"sebba mguebla le7doud w'ana machi fel 3agba\",\n", - " 'mani al capone',\n", - " \"ma n'dir debza m3a tyson\",\n", - " \"ana mezlote w'gawri w'mandewerch el capota\",\n", - " \"scotish i'm not, british i'm not\",\n", - " \"i don't do don't do don't drink a whisky\",\n", - " 'aw nekini machi ta3 superman {?]',\n", - " \"smokin' a lot o fuckin' tanzn béllot\",\n", - " 'mahamahi',\n", - " 'tag 3la men tag',\n", - " 'tag 3la men tag 3la men tag 3la men 3la men tag',\n", - " \"tag 3la men tag marka ta3 l'isti9lal\",\n", - " 'tag 3la men tag 3la men 3la 7oukoumet el khoroto',\n", - " 'tag 3la men tag bel 9ahwa we les croissants',\n", - " 'tag 3la men tag 9abel dima mayssera',\n", - " 'ana ma9oult chii',\n", - " \"w'nta mayekhfalek chii\",\n", - " \"3labalna b'koul chi\",\n", - " 'yaw na3erfou el bouchi',\n", - " 'aach galou?',\n", - " 'hada irhab?',\n", - " 'hadouk lem9ali?',\n", - " \"hassbouna d'wab...\",\n", - " 'chkoun li dar li el caillasse fi sebbati?',\n", - " 'chkoun li der hala fi les arabes?',\n", - " 'mahamahi',\n", - " 'tihezza tihezawin',\n", - " 'mahamahi',\n", - " 'tiberka tiberkawin',\n", - " \"scotish i'm not, british i'm not\",\n", - " \"i don't do don't do don't drink a whisky\",\n", - " 'aw nekini vegétarien malgré moi',\n", - " \"smokin' a lot o fuckin' tanzn béllot\",\n", - " 'mahamahi',\n", - " 'tihezza tihezawin',\n", - " 'mahamahi',\n", - " 'tiberka tiberkawin',\n", - " \"scotish i'm not, british i'm not\",\n", - " \"i don't do don't do don't drink a whisky\",\n", - " 'aw nekini vegétarien malgré moi',\n", - " \"smokin' a lot o fuckin' tanzn béllot\",\n", - " 'mahamahi',\n", - " 'lili twil, ma andou niheya',\n", - " 'ou chaami klil ou le ouins maaya',\n", - " 'ou damay ysil men chougui ou houeya',\n", - " 'ou kalby alil fin nijbar doueya',\n", - " 'anger and pain',\n", - " 'tie me like chains',\n", - " \"i'm in the darkness tonight\",\n", - " 'light up my flame',\n", - " 'help me to tame',\n", - " 'my loneliness tonight',\n", - " 'lili twil, ma andou niheya',\n", - " 'ou chaami klil ou le ouins maaya',\n", - " 'ou damay ysil men chougui ou houeya',\n", - " 'ou kalby alil fin nijbar doueya',\n", - " 'anger and pain',\n", - " 'tie me like chains',\n", - " \"i'm in the darkness tonight\",\n", - " 'light up my flame',\n", - " 'help me to tame',\n", - " 'my loneliness tonight',\n", - " 'anger and pain',\n", - " \"i'm in the darkness tonight\",\n", - " 'light up my flame',\n", - " 'help me to tame',\n", - " 'my loneliness tonight, woah']}}},\n", - " 'zh': {'sentence': {'pop': {'meta': {'train_data': ['yeah, yeah',\n", - " \"所有欲望 get 'em all\",\n", - " '卸下过多兴奋 buzz',\n", - " '这城市的主人公 ct之前n为首',\n", - " '我们不屑纸醉金迷',\n", - " 'be the one, one, one',\n", - " '(no, no)',\n", - " 'yeah, 无数夜晚 在舞台的正中央',\n", - " \"i be bangin' with my team 我们不弃守 (faith, faith)\",\n", - " '我们引导光的流向 in the street oh (splash)',\n", - " '在城市中漫游 (漫游)',\n", - " '同时闭上你的眼睛 (bang bang)',\n", - " '梦想在我手中握紧 (我握紧)',\n", - " '照亮了我想象的憧憬 (pause)',\n", - " 'and now we in a \"zone\\'\\' (oh-oh-oh)',\n", - " '努力点石成为 gold',\n", - " '个十百千万都不够 (yeah, yeah)',\n", - " 'yeah, yeah, falling in my motion (splash! woo, woo)',\n", - " '我们享受被仰望的姿态 every time',\n", - " '像恒星灿烂无须守则 stop hitting my line',\n", - " \"梦会积沙成塔 but i'm still not satisfied\",\n", - " '理所当然 on the regular',\n", - " '就让规则意外 irregular (brra)',\n", - " 'we make the world go',\n", - " '我俯瞰天空',\n", - " 'we make the world go (skrrt, brra)',\n", - " '我赌上了所有填满世界 i want it',\n", - " '执意把梦的靶心',\n", - " '往天空慢慢偏移 (yeah, yeah, yeah)',\n", - " 'we are not the same 我必须是唯一 (hey hey)',\n", - " '在最高之处 (fly) 画我的国度 (skrrt)',\n", - " '在我眼中 (yeah)',\n", - " 'we never lose (nah) 也沒有限度 (nothing)',\n", - " 'we do what we do (ball)',\n", - " \"i'm so clean, so fresh\",\n", - " '天生聚光闪光秀 (oh, oh)',\n", - " 'diamonds on my neck',\n", - " \"光源都以我为轴 (let's go!)\",\n", - " \"you gon' hold up, hold up, hold up for a real one (for a real one)\",\n", - " '向云端的尽头出发',\n", - " '被仰望必成为 star',\n", - " '(oh yeah, yeah, yeah)',\n", - " 'so fly, so hot 聚焦为点 we touch the sky 注定伟大',\n", - " '请尽管羡慕嫉妒 i did it all by myself (uh)',\n", - " 'and now we in a \"zone\\'\\' (ice, ice)',\n", - " '努力点石成为 gold (成为 gold)',\n", - " '个十百千万都不够 (yeah, yeah, yeah)',\n", - " 'yeah, yeah, falling in my motion (splash! woo, woo)',\n", - " '我们享受被仰望的姿态 every time (oh-oh-oh-oh)',\n", - " '像恒星灿烂无须守则 stop hitting my line (oh-oh-oh-oh)',\n", - " \"梦会积沙成塔 but i'm still not satisfied\",\n", - " '理所当然 on the regular (regular)',\n", - " '就让规则意外 irregular (brra)',\n", - " 'we make the world go',\n", - " '我俯瞰天空',\n", - " 'we make the world go (skrrt, brra, yeah yeah)',\n", - " \"我赌上了所有填满世界 i want it (hol' up, woo, woo)\",\n", - " 'multi-colored diamonds like a rainbow',\n", - " 'plr your eyes 与色彩共构 (your brain go)',\n", - " \"yeah 闪闪发光 we flash 无法自我 let's dance (let's dance)\",\n", - " '身体发肤授之万物',\n", - " '无歌不舞 uh',\n", - " '(oh, woah) burn it up, burn it up, burn it up (burn it up)',\n", - " '这首歌是夜空里的星火',\n", - " '让这旋律 wave',\n", - " 'do it our way (oh-oh-oh-oh)',\n", - " '我们享受被仰望的姿态 every time (oh-oh-oh-oh)',\n", - " '像恒星灿烂无须守则 stop hitting my line (oh-oh-oh-oh)',\n", - " \"梦想会积沙成塔 but i'm still not satisfied (oh-oh-oh-oh-oh-oh-oh)\",\n", - " '理所当然 on the regular',\n", - " '就让规则意外 irregular (brra)',\n", - " 'we make the world go (oh, oh, oh, oh, oh, oh, oh)',\n", - " '我俯瞰天空',\n", - " 'we make the world go (skrrt, brra)',\n", - " '我赌上了所有填满世界 i want it',\n", - " 'regular',\n", - " '你还记得吗 记忆的炎夏',\n", - " 'do you still remember',\n", - " 'that summer',\n", - " '散落在风中的已蒸发喧哗的都已沙哑',\n", - " 'those that had fallen with the breeze have vanished',\n", - " 'those noises had turned hoarse',\n", - " '没结果的花 未完成的牵挂',\n", - " 'fruitless flower, unfinished missing thoughts',\n", - " '我们学会许多说法来掩饰不碰的伤疤',\n", - " 'we learnt multiple ways to cover up hidden scars',\n", - " '因为我会想起你我害怕面对自己',\n", - " 'because i’ll think of you',\n", - " 'i’m afraid of facing myself',\n", - " '我的意志 总被寂寞吞食',\n", - " 'my determination',\n", - " 'has always been swallowed up by loneliness',\n", - " '因为你总会提醒过去总不会过去',\n", - " 'because you’d always remind',\n", - " 'that the past would never pass',\n", - " '有种 真爱不是我的',\n", - " 'there’s a kind of true love',\n", - " 'which is not mine',\n", - " '没结果的花 未完成的牵挂',\n", - " 'fruitless flower, unfinished missing thoughts',\n", - " '我们学会许多说法来掩饰不碰的伤疤',\n", - " 'we learnt multiple ways to cover up hidden scars',\n", - " '因为我会想起你我害怕面对自己',\n", - " 'because i’ll think of you',\n", - " 'i’m afraid of facing myself',\n", - " '我的意志 总被寂寞吞食',\n", - " 'my determination',\n", - " 'has always been swallowed up by loneliness',\n", - " '因为你总会提醒过去总不会过去',\n", - " 'because you’d always remind',\n", - " 'that the past would never pass',\n", - " '有种 真爱不是我的',\n", - " 'there’s a kind of true love',\n", - " 'which is not mine',\n", - " '假如我不曾爱你我不会失去自己',\n", - " 'if i had never loved you',\n", - " 'i would not have lost myself',\n", - " '想念的刺 钉住我的位置',\n", - " 'the thorn grown from missing you',\n", - " 'has pinned me at that very position',\n", - " '因为你总会提醒',\n", - " 'because you will always remind',\n", - " '尽管我得到世界 有些幸福不是我的',\n", - " 'even if i own the world',\n", - " 'there’s some happiness which will never be mine',\n", - " '你还记得吗 记忆的炎夏',\n", - " 'do you still remember',\n", - " 'that summer',\n", - " '我终于没选择的分岔最后又有谁到达',\n", - " 'i finally had no choice but to part with you',\n", - " 'did any of us reach our planned destination?',\n", - " '意義是流動的線 全握在你的手裡面',\n", - " '多希望我看的見 你心理神秘的',\n", - " '夢想依然很遙遠 未來還是畫不圓',\n", - " 'am i losing you?',\n", - " 'am i losing you?',\n", - " '走向沒人的鞦韆 把心情放在上面',\n", - " '努力推的高又遠 希望幸福',\n", - " '但是夢想依然很遙遠 未來還是畫不圓',\n", - " 'am i losing you?',\n", - " 'am i losing you?',\n", - " \"and why don't you stop\",\n", - " \"summer tears can't even let you warm\",\n", - " \"can't let you high\",\n", - " 'all the regret shining in the eyes',\n", - " \"that's everybody can easily find\",\n", - " 'so i keep counting down 12345 to 6',\n", - " 'i hope that you can hear',\n", - " \"'cause every sound, every counting beat\",\n", - " 'just show you all my misery',\n", - " '意義是流動的線 全握在你的手裡面',\n", - " '多希望我看的見 你心理神秘的空間',\n", - " '但未來依然很遙遠 夢想還是畫不圓',\n", - " 'am i losing you?',\n", - " 'am i losing you?',\n", - " '走向沒人的鞦韆 把心情放在上面',\n", - " '努力推的高又遠 希望幸福會實現',\n", - " '但是夢想依然很遙遠 未來還是畫不圓',\n", - " 'am i losing you?',\n", - " 'am i losing you?',\n", - " \"and why don't you stop\",\n", - " \"summer tears can't even let you warm\",\n", - " \"can't let you high\",\n", - " 'all the regret shining in the eyes',\n", - " \"that's everybody can easily find\",\n", - " 'so i keep counting down 12345 to 6',\n", - " 'i hope that you can hear',\n", - " \"'cause every sound, every counting beat\",\n", - " 'just show you all my misery',\n", - " '(exo, uh, exo, hey!)',\n", - " '你当然看不透',\n", - " '空前的 miracle',\n", - " '这不是梦, 别再问',\n", - " '防空你的头',\n", - " '你的思绪混乱',\n", - " '耐心 now behold',\n", - " '我怎么不想后悔莫及',\n", - " 'so 请等候',\n", - " '碎裂了寂静的咆哮 woah',\n", - " '帅爆的 feelin’',\n", - " '电力穿透全身到 whole world',\n", - " 'let me hit it, hit it',\n", - " '月亮要升起来',\n", - " '快要快要升起来',\n", - " 'ready set',\n", - " 'oh my 夜空都亮起来',\n", - " '今晚要多了个多了个',\n", - " '月亮多了个多了',\n", - " '今晚要多了个多了',\n", - " '多,多,多 多了个多了个月',\n", - " 'two moons, two moons (two moons, two moons)',\n", - " 'two moon, two moon, two moons',\n", - " '(exo) wanna get out tonight (wanna get it out)',\n", - " '(exo) wanna get out tonight (wanna get it out)',\n", - " '(exo) two moons, two moons',\n", - " 'two moon, two moon, two moons',\n", - " 'wanna get up tonight, wanna get up tonight',\n", - " 'wanna get out tonight, so we never come back',\n", - " '白色月',\n", - " '发出耀眼的 light',\n", - " '切开 grey skies',\n", - " '颤动在这 late night',\n", - " '交错的 road, road',\n", - " '目前还 don’t know',\n", - " '别再浪费时间加寿',\n", - " '命数 gotta go, go',\n", - " 'get it up, get it up 已经准备就绪',\n", - " '就是现在 hold 我的手',\n", - " '那些不同的不同的人',\n", - " '已经想方设法封我的口',\n", - " '只是目前还没习惯',\n", - " '不再给你标准的答案',\n", - " 'four dimensions 率先在这里等待',\n", - " 'welcome to the night',\n", - " 'that’s right!',\n", - " \"(ha-ha-ha, let's go, we're running out of time, man)\",\n", - " 'selected vip, wouldn’t it be mind-blowingly awesome?',\n", - " 'now we on a rock, rock, rocket',\n", - " 'just gotta keep your seat belt fastened',\n", - " '今晚要多了个多了个',\n", - " '月亮多了个多了',\n", - " '今晚要多了个多了',\n", - " '多,多,多 多了个多了个月',\n", - " 'no you’re not gonna shoulda woulda this and coulda woulda that',\n", - " \"'cause we’re never comin’ back to this trap\",\n", - " 'see the two full moons',\n", - " 'you’re the chosen knight',\n", - " 'go and spread good news cause we got no time',\n", - " '今晚要多了个多了个',\n", - " '月亮多了个多了',\n", - " '今晚要多了个多了',\n", - " '多,多,多 多了个多了个月',\n", - " 'two moons, two moons (two moons, two moons)',\n", - " 'two moon, two moon, two moons',\n", - " '(exo) wanna get out tonight (wanna get it out)',\n", - " '(exo) wanna get out tonight (wanna get it out)',\n", - " '(exo) two moons, two moons',\n", - " 'two moon, two moon, two moons',\n", - " 'i’m good (ha-ha)',\n", - " '重複多變 思緒舞動 曖昧生活',\n", - " '好像真的沒有那麼多可以說',\n", - " '愛你沒有結果',\n", - " '愛你沒有什麼',\n", - " '只是記得',\n", - " '一段剪影',\n", - " '你的輪廓',\n", - " '二',\n", - " '三',\n", - " '四',\n", - " '五',\n", - " '二',\n", - " 'everything in the universe has a rhythm, everything dances',\n", - " 'creativity takes courage, but behind every performer is a beginner who fell in love with expression, storytelling, and being set free',\n", - " 'chinese and english:',\n", - " '穿華麗的服裝 為原始的渴望而站著',\n", - " 'stand and wear beautiful clothes to satisfy primitive desires',\n", - " '用完美的表情 為脆弱的城市而撐著',\n", - " 'use the perfect expression to support the weak city',\n", - " '我冷漠的接受 你焦急的等待也困著',\n", - " 'when i coldly accept your anxious waiting i also find it difficult',\n", - " '像無數生存在櫥窗裡的模特',\n", - " 'like the countless models that live in display cases',\n", - " '除了燈以外 我還能看見什麼',\n", - " 'what else can i see aside from the light?',\n", - " '除了光以外 我還能要求什麼',\n", - " 'what else can i ask for aside from the brightness?',\n", - " '除了你以外 我還能倚賴哪一個',\n", - " 'who else can i rely on aside from you?',\n", - " '在千里以外 在呼喊的是什麼',\n", - " 'what are you shouting from a thousand miles away?',\n", - " '在百年以後 想回憶的是什麼',\n", - " 'what will you want to remember after a hundred years?',\n", - " '在離開以前 能否再見那一刻',\n", - " 'can i see that moment again before i leave?',\n", - " '記得 你的眼睛將會亮著',\n", - " 'remember that your eyes will brighten',\n", - " '我的手臂將會揮著',\n", - " 'and my arms will be waving',\n", - " '誰說世界早已沒有選擇',\n", - " 'who says there are already no options in the world?',\n", - " '趁著 我會喜怒你會哀樂',\n", - " \"while we have the chance i'll feel pleasure and anger while you feel sorrow and joy\",\n", - " '唱幾分鐘情歌 沒什麼',\n", - " \"we'll sing a few minutes of a love song\",\n", - " '至少證明我們還活著',\n", - " \"it's nothing much but at least it's proof we're still alive\",\n", - " '像單純的蝴蝶為玫瑰的甜美而飛著',\n", - " \"like an innocent butterfly that flies for a roses' sweetness\",\n", - " '像頑皮的小貓為明天的好奇而睡著',\n", - " 'like a playful kitten that sleeps in curiousity for tomorrow',\n", - " '是混亂的時代是透明的監獄也覺得',\n", - " \"even if it's a chaotic period or a transparent prison it's still felt\",\n", - " '是不能繼續在櫥窗裡做模特',\n", - " \"that you can't continue being a model in a display case\",\n", - " '除了風以外 我還能聽到什麼',\n", - " 'what else can i hear aside from the wind?',\n", - " '除了塵以外 我還能拒絕什麼',\n", - " 'what else can i reject aside from the dust?',\n", - " '除了你以外 我還能倚賴哪一個',\n", - " 'who else can i rely on aside from you?',\n", - " '在千里以外 在呼喊的是什麼',\n", - " 'what are you shouting from a thousand miles away?',\n", - " '在百年以後 想回憶的是什麼',\n", - " 'what will you want to remember after a hundred years?',\n", - " '在離開以前 能否再見那一刻',\n", - " 'can i see that moment again before i leave?',\n", - " '記得 你的眼睛將會亮著',\n", - " 'remember that your eyes will brighten',\n", - " '我的手臂將會揮著',\n", - " 'and my arms will be waving',\n", - " '誰說世界早已沒有選擇',\n", - " 'who says there are already no options in the world?',\n", - " '趁著 我會喜怒你會哀樂',\n", - " \"while we have the chance i'll feel pleasure and anger while you feel sorrow and joy\",\n", - " '唱幾分鐘情歌 沒什麼',\n", - " \"we'll sing a few minutes of a love song\",\n", - " '至少證明我們還活著',\n", - " \"it's nothing much but at least it's proof we're still alive\",\n", - " 'chinese and romanization:',\n", - " '穿华丽的服装为原始的渴望而站着',\n", - " 'chuan hua li de fu zhuang wei yuan shi de ke wang er zhan zhe',\n", - " '用完美的表情为脆弱的城市而撑着',\n", - " 'yong wan mei de biao qing wei cui ruo de cheng shi er cheng zhe',\n", - " '我冷漠的接受你焦急的等待也困着',\n", - " 'wo leng mo de jie shou ni jiao ji de deng dai ye kun zhe',\n", - " '像无数生存在橱窗里的模特',\n", - " 'xiang wu shu sheng cun zai chu chuang li de mo te',\n", - " '除了灯以外我还能看见什么',\n", - " 'chu le deng yi wai wo hai neng kan jian shen me',\n", - " '除了光以外我还能要求什么',\n", - " 'chu le guang yi wai wo hai neng yao qiu shen me',\n", - " '除了你以外还能倚赖哪一个',\n", - " 'chu le ni yi wai hai neng yi lai na yi ge',\n", - " '在千里以外在呼喊的是什么',\n", - " 'zai qian li yi wai zai hu han de shi shen me',\n", - " '在百年以后想回忆的是什么',\n", - " 'zai bai nian yi hou xiang hui yi de shi shen me',\n", - " '在离开以前能否再见那一刻',\n", - " 'zai li kai yi qian neng fou zai jian na yi ke',\n", - " '记得你的眼睛将会亮着',\n", - " 'ji de ni de yan jing jiang hui liang zhe',\n", - " '我的手臂将会挥着',\n", - " 'wo de shou bi jiang hui hui zhe',\n", - " '谁说世界早已没有选择',\n", - " 'shui shuo shi jie zao yi mei you xuan ze',\n", - " '趁着我会喜怒你会哀乐',\n", - " 'chen zhe wo hui xi nu ni hui ai le',\n", - " '唱几分钟情歌',\n", - " 'chang ji fen zhong qing ge',\n", - " '没什么至少证明我们还活着',\n", - " 'mei shen me zhi shao zheng ming wo men hai huo zhe',\n", - " '像单纯的蝴蝶为玫瑰的甜美而飞着',\n", - " 'xiang dan chun de hu die wei mei gui de tian mei er fei zhe',\n", - " '像顽皮的小猫为明天的好奇而睡着',\n", - " 'xiang wan pi de xiao mao wei ming tian de hao qi er shui zhe',\n", - " '是混乱的时代是透明的监狱也觉得',\n", - " 'shi hun luan de shi dai shi tou ming de jian yu ye jue de',\n", - " '是不能继续在橱窗里做模特',\n", - " 'shi bu neng ji xu zai chu chuang li zuo mo te',\n", - " '除了風以外我還能聽到什麼',\n", - " 'chu le feng yi wai wo hai neng ting dao shen me',\n", - " '除了塵以外我還能拒絕什麼',\n", - " 'chu le chen yi wai wo hai neng ju jue shen me',\n", - " '除了你以外還能倚賴哪一個',\n", - " 'chu le ni yi wai hai neng yi lai na yi ge',\n", - " '在千里以外在呼喊的是什么',\n", - " 'zai qian li yi wai zai hu han de shi shen me',\n", - " '在百年以后想回忆的是什么',\n", - " 'zai bai nian yi hou xiang hui yi de shi shen me',\n", - " '在离开以前能否再见那一刻',\n", - " 'zai li kai yi qian neng fou zai jian na yi ke',\n", - " '记得你的眼睛将会亮着',\n", - " 'ji de ni de yan jing jiang hui liang zhe',\n", - " '我的手臂将会挥着',\n", - " 'wo de shou bi jiang hui hui zhe',\n", - " '谁说世界早已没有选择',\n", - " 'shui shuo shi jie zao yi mei you xuan ze',\n", - " '趁着我会喜怒你会哀乐',\n", - " 'chen zhe wo hui xi nu ni hui ai le',\n", - " '唱几分钟情歌',\n", - " 'chang ji fen zhong qing ge',\n", - " '没什么至少证明我们还活着',\n", - " 'mei shen me zhi shao zheng ming wo men hai huo zhe',\n", - " '(one, two, three, four, five, six, seven)',\n", - " '(one, two, three, four, five, six, seven)',\n", - " '平行空间视觉一闪而过',\n", - " '发光的轨道',\n", - " '触发听觉加速跳动',\n", - " '谁在舞蹈',\n", - " '嗅觉寻找那条线索',\n", - " 'lucky seven 耀眼的闪烁',\n", - " '若隐若现神秘面孔',\n", - " '准备着降临的时刻',\n", - " '第七感的讯号',\n", - " '一轮星月划过等待揭晓',\n", - " '第七感在闪耀',\n", - " '金木水火土也会将我们围绕',\n", - " '我解开假面 众人眼前 小宇宙燃烧',\n", - " '在新的世界 七种感觉 独特的符号 hey',\n", - " '解开假面 众人眼前 小宇宙燃烧',\n", - " '在新的世界 七种感觉',\n", - " '(one, two, three, four, five, six, seven)',\n", - " 'lucky seven, baby',\n", - " '(one, two, three, four, five, six, seven)',\n", - " 'lucky seven, baby',\n", - " '(one, two, three, four, five, six, seven)',\n", - " '挣脱引力触觉表演时刻',\n", - " '尖叫的预兆',\n", - " '默契的心决不退缩',\n", - " '我在舞蹈',\n", - " '嗅觉寻找那条线索',\n", - " 'lucky seven 耀眼的闪烁',\n", - " '若隐若现神秘面孔',\n", - " '准备着降临的时刻',\n", - " '第七感的讯号',\n", - " '一轮星月划过等待揭晓',\n", - " '第七感在闪耀',\n", - " '金木水火土也会将我们围绕',\n", - " '我解开假面 众人眼前 小宇宙燃烧',\n", - " '在新的世界 七种感觉 独特的符号 hey',\n", - " '解开假面 众人眼前 小宇宙燃烧',\n", - " '在新的世界 七种感觉',\n", - " '(one, two, three, four, five, six, seven)',\n", - " 'lucky seven, baby',\n", - " '(one, two, three, four, five, six, seven)',\n", - " 'lucky seven, baby',\n", - " '(one, two, three, four, five, six, seven)',\n", - " '(bring it back, bring it back)',\n", - " '(bring it, bring it)',\n", - " 'lucky seven, baby',\n", - " '(bring it back, bring it back)',\n", - " '(bring it, bring it)',\n", - " '(bring it back, bring it back)',\n", - " '(bring it, bring it)',\n", - " 'lucky seven, baby',\n", - " '(bring it back, bring it back)',\n", - " '(one, two, three, four, five, six, seven)',\n", - " '(bring it, bring it)',\n", - " '(bring it back)',\n", - " '(bring it back)',\n", - " '(我解开假面 众人眼前 小宇宙燃烧)',\n", - " '(在新的世界 七种感觉 独特的符号)',\n", - " '我解开假面 众人眼前 小宇宙燃烧',\n", - " '在新的世界 七种感觉 独特的符号 hey',\n", - " '解开假面 众人眼前 小宇宙燃烧',\n", - " '在新的世界 七种感觉',\n", - " '(one, two, three, four, five, six, seven)',\n", - " 'lucky seven, baby',\n", - " '(one, two, three, four, five, six, seven)',\n", - " 'lucky seven, baby',\n", - " '(one, two, three, four, five, six, seven)',\n", - " '(bring it back, bring it back)',\n", - " '(bring it, bring it)',\n", - " '(bring it back, bring it back)',\n", - " 'seven what, seven what',\n", - " '(bring it back, bring it back)',\n", - " '(bring it, bring it)',\n", - " '(bring it back, bring it back)',\n", - " 'seven what, seven what',\n", - " '(one, two, three, four, five, six, seven)',\n", - " 'invitation - lovestoned',\n", - " 'turn down the lights',\n", - " '熄灭灯光',\n", - " 'make everything right',\n", - " '让一切顺其自然',\n", - " 'the future is on a way',\n", - " '未来,在我们前方',\n", - " 'open you doors',\n", - " '新开一扇窗户',\n", - " 'its santo explore',\n", - " '开始探寻',\n", - " \"you don't have to be afraid\",\n", - " '你无需害怕',\n", - " 'i know love like one love a guy',\n", - " '没有人,如我爱人这般',\n", - " \"touch me baby don't ever stop\",\n", - " '抚摸我,宝贝,别停下来',\n", - " 'it feels so good to me',\n", - " '这感觉如此美妙',\n", - " 'i think i let this be',\n", - " '我以此为邀请',\n", - " 'my invitation our celebration',\n", - " '为我们的庆典',\n", - " \"look what you're doing to me\",\n", - " '看看你是如何对待我',\n", - " 'am i sexuality',\n", - " '我性感的身躯',\n", - " 'no complications',\n", - " '没有纷繁芜杂',\n", - " 'just in ovation',\n", - " '只有不断创新',\n", - " 'you play me like this sweetest melody',\n", - " '你在我身上,演奏最甜美的旋律',\n", - " 'a stroke of your hands',\n", - " '双手颤栗',\n", - " 'the way that we stands',\n", - " '我们起舞的方式',\n", - " 'just making me drift away',\n", - " '让我慢慢飘向远方',\n", - " 'saki we were drunk',\n", - " '柔滑,却又生涩',\n", - " 'from sailing to far',\n", - " '从天花板,到地面',\n", - " 'nothing is seen away',\n", - " '我们无可阻挡',\n", - " 'i know love like one love a guy',\n", - " '没有人,如我爱人这般',\n", - " 'electricity every touch',\n", - " '每一次轻触都带着电流',\n", - " 'love the way we play',\n", - " '爱着我们演奏的方式',\n", - " 'i could do this everyday',\n", - " '每一天我都可以如此',\n", - " 'you just make me wanna say',\n", - " '你让我想要歌唱',\n", - " 'there is no images enjoy your brains',\n", - " '你带来的欢愉,没有极限',\n", - " 'i just want to kiss you tears away',\n", - " '我只想吻干你的眼泪',\n", - " 'my invitation, our celebration',\n", - " '我的邀请,为我们的庆典',\n", - " \"look what you 're doing to me\",\n", - " '看看你是如何对待我',\n", - " 'am i sexuality',\n", - " '我性感的身躯',\n", - " 'no complications',\n", - " '没有纷繁芜杂',\n", - " 'just in ovation',\n", - " '只有不断创新',\n", - " 'you play me like this sweetest melody',\n", - " '你在我身上,演奏最甜美的旋律',\n", - " 'ha a ha a…',\n", - " '哈 哈 哈 啊…',\n", - " 'my invitation our celebration',\n", - " '为我们的庆典',\n", - " 'look what you are doing to me',\n", - " '看看你是如何对待我',\n", - " 'am i sexuality',\n", - " '我性感的身躯',\n", - " 'no complications',\n", - " '没有纷繁芜杂',\n", - " 'just in ovation',\n", - " '只有不断创新',\n", - " 'you play me like this sweetest melody',\n", - " '你在我身上,演奏最甜美的旋律',\n", - " 'i know love like one love a guy',\n", - " '没有人,如我爱人这般',\n", - " 'electricity every touch',\n", - " '每一次轻触都带着电流',\n", - " 'love that way we play',\n", - " '爱着你演奏的方式',\n", - " 'i could do this everyday',\n", - " '每一天我都可以如此',\n", - " 'you just make me wanna say',\n", - " '你让我想要歌唱',\n", - " 'there is no images enjoy your brains',\n", - " '你带来的欢愉,没有极限',\n", - " 'i just wanna to kiss you tears away',\n", - " '我只想吻干你的眼泪',\n", - " 'my invitation our celebration',\n", - " '我的邀请,为我们的庆典',\n", - " \"look what you're doing to me\",\n", - " '看看你是如何对待我',\n", - " 'am i sexuality',\n", - " '我性感的身躯',\n", - " 'no complications',\n", - " '没有纷繁芜杂',\n", - " 'just in ovation',\n", - " '只有不断创新',\n", - " 'you play me like this sweetest melody',\n", - " '你在我身上,演奏最甜美的旋律',\n", - " '想事情到半夜 未眠',\n", - " '電台放的老歌 危險',\n", - " '彈著空氣吉他 和弦 哼的旋律經典',\n", - " '能被音樂環抱著 無憂無慮的',\n", - " '一遍又一遍 不想按下停止鍵',\n", - " \"it's my favorite, favorite stuff\",\n", - " 'this is my favorite, favorite stuff',\n", - " \"don't give me drugs, just all the things that i love\",\n", - " 'my favorite, my favorite, favorite',\n", - " 'my favorite, favorite',\n", - " 'my favorite, favorite',\n", - " 'it’s my favorite stuff',\n", - " '單曲重複播放中 躺在沙發上放空',\n", - " '不用太緊繃 不用偏頭痛 做個好夢',\n", - " '音符的世界大同 任督都打通',\n", - " '音符的語言相通 喜怒哀樂都相容',\n", - " '享受著節拍 就像漂浮在 無重力的海海海',\n", - " '不管大人或小孩 音樂給了靈魂灌溉',\n", - " '身體誠實搖擺 這感覺格外自在right oh right',\n", - " \"it's my favorite, favorite stuff\",\n", - " 'this is my favorite, favorite stuff',\n", - " \"don't give me drugs, just all the things that i love\",\n", - " 'my favorite, my favorite, favorite',\n", - " 'my favorite, favorite',\n", - " 'my favorite, favorite',\n", - " 'it’s my favorite stuff',\n", - " '小時候存錢買 錄音帶 那感動還存在',\n", - " '歌詞本裡 的精彩 如何下載',\n", - " '從cd到mp3音樂陪我跨過了世代',\n", - " 'so good so good so good yea',\n", - " 'so good',\n", - " \"it's my favorite, favorite stuff\",\n", - " 'this is my favorite, favorite stuff',\n", - " \"don't give me drugs, just all the things i love\",\n", - " 'my favorite, my favorite, favorite',\n", - " 'my favorite, favorite',\n", - " 'my favorite, favorite',\n", - " 'it’s my favorite stuff',\n", - " 'jump for the girls',\n", - " 'girls',\n", - " 'jump for the girls',\n", - " 'girls',\n", - " '呼叫失戀的女孩',\n", - " '快快快 站出來',\n", - " '不要再自怨自艾',\n", - " 'lalalalala',\n", - " '只打扮給自己看',\n", - " '的比賽 辦一晚',\n", - " '讓自戀限期氾濫',\n", - " 'lalalalala',\n", - " '心情就像杯裡的氣泡 high到炸',\n", - " '管他鞋跟到底有幾吋 都沒差',\n", - " '跟上了我的腳步 準備好 出發',\n", - " 'come on we can jump yes we can jump',\n", - " '女生覺醒愛自己 天經地義',\n", - " '熱力風暴就要 來襲',\n", - " '全場跟著我準備 即刻談起',\n", - " 'jump for the girls',\n", - " 'dance with me',\n", - " 'jump for the girls',\n", - " 'dance with me',\n", - " 'jump for the girls',\n", - " 'welcome to the party',\n", - " 'girls',\n", - " 'welcome to the party',\n", - " 'jump for the girls',\n", - " 'welcome to the party',\n", - " 'girls',\n", - " '四面八方 的女孩',\n", - " '趕過來 太精彩',\n", - " '姐妹們的 party time',\n", - " 'lalalalala',\n", - " '如果他打 電話來',\n", - " '請跟他 說拜拜',\n", - " '因為他已 不重要',\n", - " 'lalalalala',\n", - " '自由就是 慶祝的煙花 high到炸',\n", - " '不必要誰又愛來愛去 真浮誇',\n", - " '充滿自信 妳和我都是 super star',\n", - " 'come on we can jump yes we can jump',\n", - " \"let's get some crazy\",\n", - " \"let's get some crazy\",\n", - " 'oh 快樂 怎會 嫌少',\n", - " '熱情 別 關掉',\n", - " \"we won't let it stop\",\n", - " 'jump for the girls',\n", - " 'welcome to the party',\n", - " 'girls',\n", - " 'welcome to the party',\n", - " 'jump for the girls',\n", - " 'welcome to the party',\n", - " 'girls',\n", - " 'jump for the girls',\n", - " 'welcome to the praty',\n", - " 'girls',\n", - " 'welcome to the party',\n", - " 'jump for the girls',\n", - " 'girls',\n", - " 'welcome to the party',\n", - " 'girls',\n", - " 'welcome to the party',\n", - " '烏雲罩月 茫茫的暗暝',\n", - " '困佇這咧無聲無說的世界',\n", - " '泅袂出這片翕死人的死海',\n", - " '敢是五感失常資信全無接受',\n", - " '也是心肺失能空氣攏無吸收',\n", - " '等無彼咧人',\n", - " '等無一聲霆雷響',\n", - " '等無彼咧人',\n", - " '等無一改暢心情',\n", - " '若連聲音攏毋准發',\n", - " '咱用銃聲來揣正義',\n", - " '若連蠟燭攏毋准點',\n", - " '咱點炸彈來揣光明',\n", - " '清算血債 清算仇冤',\n", - " '清算血債 清算仇冤',\n", - " '血債仇冤',\n", - " '烏雲罩月 茫茫的暗暝',\n", - " '櫼佇這咧袂振袂動的世界',\n", - " '泅袂出這片翕死人的死海',\n", - " '敢是頭眩腦頓啥麼攏要吞忍',\n", - " '也是血路袂順跤手攏毋敢伸',\n", - " '等無彼咧人',\n", - " '等無一聲霆雷響',\n", - " '等無彼咧人',\n", - " '等無一氣挵崩盤',\n", - " '若連聲音攏毋准發',\n", - " '咱用銃聲來揣正義',\n", - " '若連蠟燭攏毋准點',\n", - " '咱點炸彈來揣光明',\n", - " '清算血債 清算仇冤',\n", - " '清算血債 清算仇冤',\n", - " 'let me stand up like a taiwanese',\n", - " 'only justice will bring you peace',\n", - " 'endless nightfall, swallow the sun',\n", - " \"void of silence, choking on the past's blood\",\n", - " 'drowning in deception, taken by the black flood',\n", - " 'sea is rising, never feel or see again',\n", - " 'hypnotizing visage preaching of supreme pain',\n", - " 'searching for a sign',\n", - " 'guide my hands unto your will',\n", - " 'let me be the one',\n", - " 'watch the blood of martyrs spill',\n", - " 'light that flickers in the dark',\n", - " 'forge the way through blackest night',\n", - " \"strangled silence makes it's mark\",\n", - " \"pierce the heart of tyrant's sight\",\n", - " 'with these hands i wash the blood clean',\n", - " 'watch it flow past visions obscene',\n", - " 'visions obscene',\n", - " 'endless nightfall, swallow the sun',\n", - " \"veil of madness, prison of the mind's eye\",\n", - " 'falling in the vortex, stifling the last sigh',\n", - " 'poisoned cortex dooming flesh to weakened form',\n", - " 'bones are breaking, shattered by the last storm',\n", - " 'searching for a sign',\n", - " 'guide my hands unto your will',\n", - " 'let me be the one',\n", - " 'stand above the one i kill',\n", - " 'light that flickers in the dark',\n", - " 'forge the way through blackest night',\n", - " 'strangled silence makes its mark',\n", - " \"pierce the the heart of tyrant's sight\",\n", - " 'with these hands i wash the blood clean',\n", - " 'watch it flow past visions obscene',\n", - " 'let me stand up like a taiwanese',\n", - " 'only justice will bring you peace',\n", - " '閃爍的烏影 愈來愈緊 不時相隨',\n", - " '湠開的跤步聲 愈來愈近 漸漸包圍',\n", - " '愈來愈近',\n", - " '看分明 聽斟酌 草木皆兵',\n", - " '提元氣 保清醒 無暝無日',\n", - " '破山林 過暗路 走相逐 覕相揣',\n", - " '毋通喘 袂當退 免躊躇 莫頓蹬',\n", - " '破山林 過暗路 走相逐 覕相揣',\n", - " '崁規頭閣掩規面 我心火著滿身狂',\n", - " '敢袂當揣 無聲的所在 恬恬看未來',\n", - " '走敢無回 生敢無悔 腳步通行去綴',\n", - " '一步一步 行無望的路',\n", - " '等候烏影 掠到我 拆食落腹 魂魄落土',\n", - " '生死走無路 這關袂得過',\n", - " '兄弟拆分途 永遠免再會',\n", - " '漸漸包圍',\n", - " '看分明 聽斟酌 草木皆兵',\n", - " '提元氣 保清醒 無暝無日',\n", - " '爬懸山 落深溪 走相逐 覕相揣',\n", - " '雙跤痠 雙手軟 眼反黑 面反白',\n", - " '爬懸山 落深溪 走相逐 覕相揣',\n", - " '喘無氣閣退無位 我徛袂在掠袂定',\n", - " '敢袂當揣 無聲的所在 恬恬看未來',\n", - " '走敢無回 生敢無悔 腳步通行去綴',\n", - " '走敢無回 生敢無悔 腳步通行去綴',\n", - " '一步一步 行無望的路',\n", - " '等候烏影 掠到我 拆食落腹 魂魄落土',\n", - " '一步一步 行無望的路',\n", - " '魂魄落土',\n", - " 'shadows closing in, echoes of the end surround',\n", - " \"footsteps drawing near, execution's breath unbound\",\n", - " 'stalking nearer',\n", - " 'hear me now, know my name, death i am, your soul i claim',\n", - " 'fear me now, feel my words, blessed the night, darkness and pain',\n", - " \"mountains high, streams so cold, water's edge, escape is told\",\n", - " \"breath in chains, the cage swung wide, nature's womb a place to hide\",\n", - " 'trees conspire, their words betray, footprints path to slow decay',\n", - " 'mind on fire, hallucinate, blinded by the fear and hate',\n", - " \"silence my olne guide, in time's thick haze ieill reside\",\n", - " 'none by my side, trapped within and cast aside',\n", - " 'on and on, down this hopeless road itread',\n", - " \"caught between both life and death, purgatory's hold i dread\",\n", - " \"my time, no time, it's coming to an end\",\n", - " 'your way, my way, we shall never meet again',\n", - " 'unseem terror',\n", - " 'hear me now, know my name, death i am, your soul iclaim',\n", - " 'fear me now, feel my words, blessed the night, darkness and pain',\n", - " \"dim the glow within my eyes, primal fear, the self's demise\",\n", - " 'hand to claw and arms to wings, animal from within springs',\n", - " 'through the branches, ripped and torn, from the earth a man reborn',\n", - " \"freedom calls, a nightmare's end, cruel fate's laugh, the rtap descends\",\n", - " \"silence my long guide, in time's thick haze i will reside\",\n", - " 'none by my side, rtapped within and cast aside',\n", - " 'none by my side, rtapped within and cast aside',\n", - " 'on and on, down this hopeless road i tread',\n", - " \"caught between both life and death, purgatory's hold i dread\",\n", - " 'on and on, down this hopeless road i tread',\n", - " 'as the undead',\n", - " 'jyp',\n", - " 'and the wonder girls',\n", - " \"we're back!\",\n", - " '是什么吸引你注意',\n", - " '让眼神无法再转移',\n", - " '难道我这样美丽',\n", - " '才让你如此着迷',\n", - " '心底里羞红那脸皮',\n", - " '慢慢地我向你靠近',\n", - " '眼角的火辣的眼力',\n", - " '我的美不可思议',\n", - " '吸引无数好奇',\n", - " '要怎样抵挡这热力',\n", - " \"i'm so hot\",\n", - " '我是那么的美丽',\n", - " \"i'm so fine\",\n", - " '有说不出的魅力',\n", - " \"i'm so cool\",\n", - " '你无法逃避',\n", - " \"i'm so, so, so hot, hot\",\n", - " '天生的可爱调皮无可挑剔',\n", - " '吸引来男生赞美女生妒忌',\n", - " '早应该习惯了爱情的讯息',\n", - " '为何我还会心动不已',\n", - " '只想做平凡的自己',\n", - " '和别人一样的轨迹',\n", - " '却因为拥有太迷人的魅力',\n", - " '增加了许多甜蜜的压力',\n", - " \"i'm so hot\",\n", - " '我是那么的美丽',\n", - " \"i'm so fine\",\n", - " '有说不出的魅力',\n", - " \"i'm so cool\",\n", - " '你无法逃避',\n", - " \"i'm so, so, so hot, hot\",\n", - " \"i'm so hot\",\n", - " '我是那么的美丽',\n", - " \"i'm so fine\",\n", - " '有说不出的魅力',\n", - " \"i'm so cool\",\n", - " '你无法逃避',\n", - " \"i'm so, so, so hot, hot\",\n", - " 'everybody watching me',\n", - " \"'cause i'm hot, hot\",\n", - " 'everybody wanting me',\n", - " \"'cause i'm hot, hot\",\n", - " 'anytime, anywhere i go',\n", - " 'i can never run away from the white spotlight',\n", - " 'they never leave me alone',\n", - " 'no matter what time it is, day or night',\n", - " \"how old do i gotta be till they don't want me no more\",\n", - " 'drew barrymore, tell me',\n", - " 'try to run',\n", - " \"but i just can't hide\",\n", - " 'started in asia, now worldwide',\n", - " 'everyone loves me',\n", - " 'try to get to know me',\n", - " 'what can i do',\n", - " 'oh no, please, leave me alone',\n", - " 'all the boys be loving me',\n", - " 'girls be hating me',\n", - " 'they will never stop',\n", - " \"'cause they know i'm so hot, hot\",\n", - " \"i'm so hot\",\n", - " '我是那么的美丽',\n", - " \"i'm so fine\",\n", - " '有说不出的魅力',\n", - " \"i'm so cool\",\n", - " '你无法逃避',\n", - " \"i'm so, so, so hot, hot\",\n", - " 'na-na-na-na-nada',\n", - " 'na-na-na-na-nada',\n", - " 'na-na-na',\n", - " \"my pocket hefty, actin' like it's nada\",\n", - " 'fresh off that yacht, move steady in designer',\n", - " '迈上了阶梯不管你该怎么觉得',\n", - " \"this henny agua, he gon' do me proper\",\n", - " \"i got 'em all like it's nada\",\n", - " 'way up high like nasa',\n", - " '我总要给一些别的 爱不爱都拿着',\n", - " \"i got 'em all like it's nada\",\n", - " 'way up high like nasa',\n", - " '我总要给一些别的 爱不爱都拿着',\n", - " '驾驭着一如既往极速提前到达目的地的航天器呢',\n", - " '习惯了 到手的数字甚至懒得计算了 一般吧',\n", - " '期待着脱离地心引力的末日',\n", - " '到那个时候所有的事都失去了意义 谁说未来不可期',\n", - " \"pathetic, a bird ain't gonna fly in a cage\",\n", - " \"too flashy a wraith, i don't feel no way\",\n", - " \"flexin' all day, 到最后我什么都没有\",\n", - " '我暮然回首 站在了世界最尽头 却想要后退',\n", - " \"'cause i got nada, they all fade\",\n", - " \"my pocket hefty, actin' like it's nada\",\n", - " 'fresh off that yacht, move steady in designer',\n", - " '迈上了阶梯不管你该怎么觉得',\n", - " \"this henny agua, he gon' do me proper\",\n", - " \"i got 'em all like it's nada\",\n", - " 'way up high like nasa',\n", - " '我总要给一些别的 爱不爱都拿着',\n", - " \"i got 'em all like it's nada\",\n", - " 'way up high like nasa',\n", - " '我总要给一些别的 爱不爱都拿着',\n", - " 'color my world-lele marchitelli',\n", - " '专辑:la grande bellezza(绝美之城)',\n", - " '专辑介绍:',\n", - " 'the great beauty (italian: la grande bellezza)',\n", - " 'is a 2013 italian film directed by paolo sorrentino',\n", - " 'it is a co-production between the italian medusa film and indigo film and',\n", - " 'the french babe films, with support from banca popolare di vicenza and pathé',\n", - " 'filming took place in rome starting on 9 august 2012. it premiered at the 2013',\n", - " \"cannes film festival where it was screened in competition for the palme d'or\",\n", - " 'it was shown at the 2013 toronto international film festival and at the 2013',\n", - " 'reykjavik european film festival. the film has been selected as the italian',\n", - " 'entry for the best foreign language film at the 86th academy awards',\n", - " 'making the january shortlist',\n", - " '《绝美之城》是保罗·索伦蒂诺所导演,托尼·瑟维洛、路伊斯·托沙主演的电影。',\n", - " '该片主要讲述了一个中年作家漫步在罗马,拾寻逝去的青春记忆。该片是对今日罗马的描绘。',\n", - " '2013年5月该片成为第66届戛纳国际电影节的主竞赛入围片。',\n", - " '2013年第26届欧洲电影学院年度颁奖典礼,《绝美之城》获得最佳影片、最佳导演、',\n", - " '最佳男演员和最佳剪辑奖四项大奖。该片还获得了第86届奥斯卡最佳外语片奖。',\n", - " '难以忘记初次见你',\n", - " 'it is hard to forget my first encounter of you',\n", - " '一双迷人的眼睛',\n", - " 'a pair of charming eyes',\n", - " '在我脑海里 你的身影 挥散不去',\n", - " 'in my mind, the memory of your figure is unwavering',\n", - " '握你的双手感觉你的温柔',\n", - " 'holding your hands, feeling your gentleness',\n", - " '真的有点透不过气',\n", - " \"there's a slight sense of breathlessness\",\n", - " '你的天真 我想珍惜',\n", - " 'i want to cherish your innocence',\n", - " '看到你受委屈 我会伤心',\n", - " 'seeing you aggrieved, i will feel sad',\n", - " '只怕我自己会爱上你',\n", - " \"i'm afraid that i will fall in love with you\",\n", - " '不敢让自己靠得太近',\n", - " \"i don't have the courage of being too close to you\",\n", - " '怕我没什么能够给你',\n", - " \"i'm afraid that i don't have much to give you\",\n", - " '爱你也需要很大的勇气',\n", - " 'perhaps loving you requires great courage',\n", - " '只怕我自己会爱上你',\n", - " 'i am afraid that i will fall in love with you',\n", - " '也许有天会情不自禁',\n", - " 'perhaps one day, i will be unable to refrain',\n", - " '想念只让自己苦了自己',\n", - " 'yearning (for you) only makes me suffer',\n", - " '爱上你是我情非得已',\n", - " 'loving you is my last resort',\n", - " '难以忘记初次见你',\n", - " 'it is hard to forget my first encounter of you',\n", - " '一双迷人的眼睛',\n", - " 'a pair of charming eyes',\n", - " '在我脑海里 你的身影 挥散不去',\n", - " 'in my mind, the memory of your figure is unwavering',\n", - " '握你的双手感觉你的温柔',\n", - " 'holding your hands, feeling your gentleness',\n", - " '真的有点透不过气',\n", - " \"there's a slight sense of breathlessness\",\n", - " '你的天真 我想珍惜',\n", - " 'i want to cherish your innocence',\n", - " '看到你受委屈 我会伤心',\n", - " 'seeing you aggrieved, i will feel sad',\n", - " '只怕我自己会爱上你',\n", - " \"i'm afraid that i will fall in love with you\",\n", - " '不敢让自己靠得太近',\n", - " \"i don't have the courage of being too close to you\",\n", - " '怕我没什么能够给你',\n", - " \"i'm afraid that i don't have much to give you\",\n", - " '爱你也需要很大的勇气',\n", - " 'perhaps loving you requires great courage',\n", - " '只怕我自己会爱上你',\n", - " 'i am afraid that i will fall in love with you',\n", - " '也许有天会情不自禁',\n", - " 'perhaps one day, i will be unable to refrain',\n", - " '想念只让自己苦了自己',\n", - " 'yearning (for you) only makes me suffer',\n", - " '爱上你是我情非得已',\n", - " 'loving you is my last resort',\n", - " '什么原因 我竟然又会遇见你',\n", - " 'what reason is it that i expectedly met you again',\n", - " '我真的真的不愿意',\n", - " 'i am really, really unwilling',\n", - " '就这样陷入爱的陷阱',\n", - " \"to step into love's trap just like that\",\n", - " '只怕我自己会爱上你',\n", - " \"i'm afraid that i will fall in love with you\",\n", - " '不敢让自己靠得太近',\n", - " \"i don't have the courage of being too close to you\",\n", - " '怕我没什么能够给你',\n", - " \"i'm afraid that i don't have much to give you\",\n", - " '爱你也需要很大的勇气',\n", - " 'perhaps loving you requires great courage',\n", - " '只怕我自己会爱上你',\n", - " 'i am afraid that i will fall in love with you',\n", - " '也许有天会情不自禁',\n", - " 'perhaps one day, i will be unable to refrain',\n", - " '想念只让自己苦了自己',\n", - " 'yearning (for you) only makes me suffer',\n", - " '爱上你是我情非得已',\n", - " 'loving you is my last resort',\n", - " '爱上你是我情非得已',\n", - " 'loving you is my last resort']},\n", - " 'data': ['【 can you feel the love tonight 】',\n", - " \"there's a calm surrender to the rush of day\",\n", - " '有一股寧靜臣服在白晝的繁忙之下',\n", - " 'when the heat of a rolling wind',\n", - " 'can be turned away',\n", - " '當狂風中的熱息也轉了方向',\n", - " 'an enchanted moment',\n", - " 'and it sees me through',\n", - " '喜悅的時刻,引領著我前進',\n", - " \"it's enough for this restless warrior\",\n", - " 'just to be with you',\n", - " '只要與你同在,對奮戰不懈的戰士而言那已足夠',\n", - " 'and can you feel the love tonight',\n", - " '今晚,你感受到愛了嗎?',\n", - " 'it is where we are 就在我倆四週',\n", - " \"it's enough for this wide-eyed wanderer\",\n", - " '對瞠目結舌的漂泊者來說,那已足夠',\n", - " 'that we got this far 我們已走了這麼遠',\n", - " 'and can you feel the love tonight 今晚你感受到',\n", - " '愛了嗎?',\n", - " \"how it's laid to rest 它準備要躺下休息了\",\n", - " \"it's enough to make kings and vagabonds\",\n", - " '能讓國王與流浪者崇信最佳人選',\n", - " 'believe the very best 那已足夠',\n", - " \"there's a time for everyone if they only learn\",\n", - " '每個人都有機會,只要他們明白',\n", - " 'that the twisting kaleidoscope',\n", - " 'moves us all in turn',\n", - " '變幻的美麗景緻依序感動著我們',\n", - " \"there's a rhyme and reason\",\n", - " 'to the wild outdoors',\n", - " '狂野的大自然有其規律與意義',\n", - " 'when the heart of this star-crossed voyager',\n", - " 'beats in time with yours',\n", - " '當命運多舛的航海者的心與你的心一同跳動',\n", - " 'and can you feel the love tonight',\n", - " '今晚,你感受到愛了嗎?',\n", - " 'it is where we are 就在我倆四週',\n", - " \"it's enough for this wide-eyed wanderer\",\n", - " '對瞠目結舌的漂泊者來說,那已足夠',\n", - " 'that we got this far 我們已走了這麼遠',\n", - " 'and can you feel the love tonight 今晚你感受到',\n", - " '愛了嗎?',\n", - " \"how it's laid to rest 它準備要躺下休息了\",\n", - " \"it's enough to make kings and vagabonds\",\n", - " '能讓國王與流浪者崇信最佳人選',\n", - " 'believe the very best 那已足夠',\n", - " \"it's enough to make kings and vagabonds\",\n", - " '能讓國王與流浪者崇信最佳人選',\n", - " 'believe the very best 那已足夠',\n", - " '~~~~ end ~~~~~',\n", - " 'blank space',\n", - " '《空白格》',\n", - " \"really it's so simple\",\n", - " '其实很简单',\n", - " \"it's so natural\",\n", - " '其实很自然',\n", - " \"if we're worth the love\",\n", - " '两个人的爱',\n", - " \"we're worth the work\",\n", - " '由两人分担',\n", - " \"it's not too difficult\",\n", - " '其实并不难',\n", - " \"you're just too cynical\",\n", - " '是你太悲观',\n", - " 'building all your walls',\n", - " '隔着一道墙',\n", - " \"so you can't hear me hurt\",\n", - " '不跟谁分享',\n", - " \"i don't want to start a war\",\n", - " '不想让你为难',\n", - " \"so i don't need you to answer no more\",\n", - " '你不再需要给我个答案',\n", - " 'i know that you still love me',\n", - " '我想你是爱我的',\n", - " \"i know you don't want to leave\",\n", - " '我猜你也舍不得',\n", - " \"you don't want to give up to break up\",\n", - " '但是怎么说 总觉得',\n", - " \"but there's miles of space between us\",\n", - " '我们之间留了太多空白格',\n", - " \"didn't want to hurt me no\",\n", - " '也许你不是我的',\n", - " \"there just wasn't time to grow\",\n", - " '爱你却又该割舍',\n", - " 'so without words we chose this road',\n", - " '分开或许是选择',\n", - " 'but maybe i was always meant to let you go',\n", - " '但它也可能是我们的缘分',\n", - " \"really it's so simple\",\n", - " '其实很简单',\n", - " \"it's so natural\",\n", - " '其实很自然',\n", - " \"if we're worth the love\",\n", - " '两个人的爱',\n", - " \"we're worth the work\",\n", - " '由两人分担',\n", - " \"it's not too difficult\",\n", - " '其实并不难',\n", - " \"you're just too cynical\",\n", - " '是你太悲观',\n", - " 'building all your walls',\n", - " '隔着一道墙',\n", - " \"so you can't hear me hurt\",\n", - " '不跟谁分享',\n", - " \"i don't want to start a war\",\n", - " '不想让你为难',\n", - " \"so i don't need you to answer no more\",\n", - " '你不再需要给我个答案',\n", - " 'i know that you still love me',\n", - " '我想你是爱我的',\n", - " \"i know you don't want to leave\",\n", - " '我猜你也舍不得',\n", - " \"you don't want to give up to break up\",\n", - " '但是怎么说 总觉得',\n", - " \"but there's miles of space between us\",\n", - " '我们之间留了太多空白格',\n", - " \"didn't want to hurt me no\",\n", - " '也许你不是我的',\n", - " \"there just wasn't time to grow\",\n", - " '爱你却又该割舍',\n", - " 'so without words we chose this road',\n", - " '分开或许是选择',\n", - " 'but maybe i was always meant to let you go',\n", - " '但它也可能是我们的缘分',\n", - " '我想你是爱我的,我猜你也舍不得',\n", - " '但是怎么说总觉得',\n", - " '我们之间留了太多空白格',\n", - " 'billie',\n", - " \"what do you want from me? why don't you run from me?\",\n", - " '你想從我這得到什麼呢? 為什麼你不逃走呢?',\n", - " 'what are you wondering? what do you know?',\n", - " '你腦中在想什麼? 你知道些什麼呢?',\n", - " \"why aren't you scared of me? why do you care for me?\",\n", - " '為什麼你不怕我呢? 為什麼你會關心我呢?',\n", - " 'when we all fall asleep, where do we go?',\n", - " '當我們沉睡時,我們都去哪裡呢?',\n", - " 'come here',\n", - " '過來',\n", - " 'say it, spit it out, what is it exactly?',\n", - " '說吧,說出來,你到底想說什麼?',\n", - " \"you're payin'? is the amount cleanin' you out? am i satisfactory?\",\n", - " \"你正在付出嗎? 你付出後是否讓你變得一無所有? 我是否令你滿意?today, i'm thinkin' about the things that are deadly\",\n", - " '今天,我正想著一些可以奪去你性命的事情',\n", - " \"the way i'm drinkin' you down\",\n", - " '將你一飲而盡的方式',\n", - " 'like i wanna drown, like i wanna end me',\n", - " '就像我想溺死,想要結束自己一樣',\n", - " 'step on the glass, staple your tongue',\n", - " '踩在玻璃上,把你的舌頭釘住 (ahh)',\n", - " 'bury a friend, try to wake up',\n", - " '埋了一個朋友,試圖從惡夢中醒來 (ah-ahh)',\n", - " 'cannibal class, killing the son',\n", - " '食人族,殺死了自己的兒子 (ahh)',\n", - " 'bury a friend, i wanna end me',\n", - " '埋了一個朋友,我想結束自己',\n", - " 'i wanna end me',\n", - " '我想結束自己',\n", - " 'i wanna, i wanna, i wanna… end me',\n", - " '我想,我想,我想... 結束自己',\n", - " 'i wanna, i wanna, i wanna…',\n", - " '我想,我想,我想...',\n", - " \"what do you want from me? why don't you run from me?\",\n", - " '你想從我這得到什麼呢? 為什麼你不逃走呢?',\n", - " 'what are you wondering? what do you know?',\n", - " '你腦中在想什麼? 你知道些什麼呢?',\n", - " \"why aren't you scared of me? why do you care for me?\",\n", - " '為什麼你不怕我呢? 為什麼你會關心我呢?',\n", - " 'when we all fall asleep, where do we go?',\n", - " '當我們沉睡時,我們都去哪裡呢?',\n", - " 'listen',\n", - " '聽好',\n", - " 'keep you in the dark, what had you expected?',\n", - " '讓你身處黑暗之中,你還能期待什麼呢?',\n", - " 'me to make you my art and make you a star',\n", - " '我要讓你變成我的藝術品,把你變成一顆星星',\n", - " 'and get you connected?',\n", - " '和其它星星連在一起?',\n", - " \"i'll meet you in the park, i'll be calm and collected\",\n", - " '我將會與你在公園見面,我那時會沉著而鎮定',\n", - " \"but we knew right from the start that you'd fall apart\",\n", - " '但我們從一開始就知道你將會徹底崩潰',\n", - " \"'cause i'm too expensive\",\n", - " '因為我是如此地珍貴',\n", - " \"it's probably somethin' that shouldn't be said out loud\",\n", - " '這或許是你不應該大肆宣揚的事情',\n", - " 'honestly, i thought that i would be dead by now',\n", - " '老實說,我想過現在早就已經死了 (wow)',\n", - " \"calling security, keepin' my head held down\",\n", - " '把保全叫來,讓他們把我的頭壓低',\n", - " 'bury the hatchet or bury a friend right now',\n", - " '埋了斧頭或是快把朋友埋了',\n", - " 'the debt i owe, gotta sell my soul',\n", - " '我欠下的債,我必須要賣我的靈魂',\n", - " \"'cause i can't say no, no, i can't say no\",\n", - " '因為我實在無法說不,不,我無法說不',\n", - " \"then my limbs all froze and my eyes won't close\",\n", - " '接著我的四肢變得無法動彈,眼睛開始無法闔上',\n", - " \"and i can't say no, i can't say no\",\n", - " '而我無法說不,我無法說不',\n", - " 'careful',\n", - " '小心',\n", - " 'step on the glass, staple your tongue',\n", - " '踩在玻璃上,把你的舌頭釘住 (ahh)',\n", - " 'bury a friend, try to wake up',\n", - " '埋了一個朋友,試圖從惡夢中醒來 (ah-ahh)',\n", - " 'cannibal class, killing the son',\n", - " '食人族,殺死了自己的兒子 (ahh)',\n", - " 'bury a friend, i wanna end me',\n", - " '埋了一個朋友,我想結束自己',\n", - " 'i wanna end me',\n", - " '我想結束自己',\n", - " 'i wanna, i wanna, i wanna… end me',\n", - " '我想,我想,我想... 結束自己',\n", - " 'i wanna, i wanna, i wanna…',\n", - " '我想,我想,我想...',\n", - " \"what do you want from me? why don't you run from me?\",\n", - " '你想從我這得到什麼呢? 為什麼你不逃走呢?',\n", - " 'what are you wondering? what do you know?',\n", - " '你腦中在想什麼? 你知道些什麼呢?',\n", - " \"why aren't you scared of me? why do you care for me?\",\n", - " '為什麼你不怕我呢? 為什麼你會關心我呢?',\n", - " 'when we all fall asleep, where do we go?',\n", - " '當我們沉睡時,我們都去哪裡呢?',\n", - " '刀 保庄頭 顧鄉土',\n", - " '武裝!',\n", - " '規暝日武裝!',\n", - " '刀 拼地盤 殺仇敵',\n", - " '提高警戒 應變隨機',\n", - " '劍 守田園 護家族',\n", - " '武裝!',\n", - " '滿街路武裝!',\n", - " '劍 斬貪官 刜汙吏',\n", - " '民反官逼',\n", - " '鴨母王登基大天后宮 萬歲吾皇',\n", - " '順天盟主天地會稱王 五十萬武勇',\n", - " '八卦萬生作東王大將 天符人應',\n", - " '旌義應褒忠封義民公 鎮邪四方',\n", - " '衝 承名聲 擔聲望',\n", - " '武裝!',\n", - " '透心神武裝!',\n", - " '衝 持義理 扶正道',\n", - " '懲惡賭強',\n", - " '清水祖師 戰 開漳聖王',\n", - " '觀音嬤 拼 媽祖婆',\n", - " '三山國王 戰 五谷神農',\n", - " '太子爺 拼 王爺公',\n", - " '咱來 大立家規 強行王法',\n", - " '土地 隨我封 山河 隨我開',\n", - " '兄弟 隨我姓 公媽 隨我祀',\n", - " '大展家威 強建王權',\n", - " '戰鼓 隨我擂 戰旗 隨我「立在」',\n", - " '人民 隨我起 歷史 隨我改',\n", - " '搶水 毀家 拆廟 倒厝',\n", - " '枉法 逆天 忤神 招拖注',\n", - " '割海 佔地 農毀 漁傷',\n", - " '刣人 放火 鬥爭 報冤仇',\n", - " '清水祖師 戰 開漳聖王',\n", - " '觀音嬤 拼 媽祖婆',\n", - " '三山國王 戰 五谷神農',\n", - " '太子爺 拼 王爺公',\n", - " '大展家威',\n", - " '土地 隨我封 山河 隨我開',\n", - " '兄弟 隨我姓 公媽 隨我祀',\n", - " '大展家威 強建王權',\n", - " '戰鼓 隨我擂 戰旗 「立在」',\n", - " '人民 隨我起 歷史 隨我改',\n", - " '大立家規 強行王法',\n", - " '大展家威 強建王權',\n", - " '歷史隨我改',\n", - " 'blades, protect our land, we fight',\n", - " 'to war, march into battle',\n", - " 'fight, we decimate our foes',\n", - " \"with our lives we'll defend our shores\",\n", - " 'swords, with steel we pierce their heart',\n", - " 'to war, march into the fore',\n", - " 'kill, the heads of tyrants roll',\n", - " 'live forevermore',\n", - " 'rebel of the cause that is lost',\n", - " 'pound of flesh is the ultimate cost',\n", - " 'soldiers of the soverelgn ground',\n", - " 'cut their flesh, let their offal abound',\n", - " 'blood, our names written in red',\n", - " 'to war, fly into battle',\n", - " 'die, the sanguine path it leads',\n", - " \"demon's black door\",\n", - " 'as above it shall be in our realm (in our realm)',\n", - " 'the divine protect our helm (guide oru helm)',\n", - " 'see the gods in their all-knowing rage (see their rage)',\n", - " 'watch the wrath of the violent sage (the violent sage)',\n", - " 'rule of my hand, law of my land',\n", - " 'from the rivers might to the mountains high',\n", - " 'with my blood and kin,where i choose to lie',\n", - " 'rule of my clan, make my last stand',\n", - " 'as the war drums beat, and our emblem flies',\n", - " 'we shall rise as one, and as one we die',\n", - " 'killing, burning, raping, maiming',\n", - " 'ripping, tearing, rampant desecrating',\n", - " 'as above it shall be in our realm (in our realm)',\n", - " 'the divine protect our helm (guide oru helm)',\n", - " 'see the gods in their all-knowing rage (see their rage)',\n", - " 'watch the wrath of the violent sage (the violent sage)',\n", - " 'rule of my hand',\n", - " 'from the rivers might to the mountains high',\n", - " 'with my blood and kin, where i choose to lie',\n", - " 'rule of my clan, make mylast stand',\n", - " 'as the war drums beat, andour emblem flies',\n", - " 'we shall rise as one, and as one we die',\n", - " 'rule of my hand, law of my land',\n", - " 'rivers might to the mountains high',\n", - " 'we rise as one and as one we shall die',\n", - " '我要飞上青天 上青天',\n", - " '我要飞上青天 上青天',\n", - " '我上七重天 来往浮在白云间',\n", - " '白云片片如棉 自由自在飘飘欲仙',\n", - " '我要飞上青天 上青天',\n", - " '我要飞上青天 上青天',\n", - " '俯望人世间 千年万年一霎眼',\n", - " '万里红尘如烟 高山大海斑斑点点',\n", - " '太阳是我的小台灯 月亮是我化妆镜',\n", - " '彩虹拿来做颈链 摘下一颗星星挂在胸前',\n", - " '我要飞上青天 上青天',\n", - " '我要飞上青天 上青天',\n", - " '俯望人世间 千年万年一霎眼',\n", - " '万里红尘如烟 高山大海斑斑点点',\n", - " '啊...',\n", - " '我上七重天 逍遥自在像神仙',\n", - " '不是梦话连篇是信念',\n", - " '我要飞上青天 飞上青天',\n", - " 'i want to fly to the sky, to the sky',\n", - " 'i want to fly to the sky, to the sky',\n", - " 'i am on the seventh heaven, floating between the clouds',\n", - " 'white clouds like cotton, floating freely',\n", - " 'i want to fly to the sky, to the sky',\n", - " 'i want to fly to the sky, to the sky',\n", - " 'looking down on the world, a thousand years, a blink of an eye',\n", - " 'thousands of miles of red dust',\n", - " 'the sun is my small table lamp. the moon is my makeup mirror',\n", - " 'use the rainbow to make a necklace and hang a star on it like a pendant',\n", - " 'i want to fly to the sky, to the sky',\n", - " 'i want to fly to the sky, to the sky',\n", - " 'looking down on the world, a thousand years, a blink of an eye',\n", - " 'thousands of miles of red dust',\n", - " 'ah...',\n", - " 'i am on the seventh heaven, i am free, like a fairy',\n", - " 'it’s not a dream, it’s fate',\n", - " 'i want to fly to the sky, fly to the sky',\n", - " 'i was headed for the danger zone 我只身前往',\n", - " 'feeling all on my own 一个危险地带',\n", - " 'now that you`re gone 如今你已不在',\n", - " 'didn`t ever think i`d smile again 当泪水、苦痛与爱都逝去',\n", - " 'after the tears and the pain the love went away 我的微笑也不再',\n", - " 'and now i`m ready 我现在准备好了',\n", - " 'i learned how to say goodbye 我学会如何说再见',\n", - " 'let go of the past 让过去变成云烟',\n", - " 'freedom at last from feeling so low 摆脱低潮,拥抱自由',\n", - " 'and i made a promise to myself 我答应自己',\n", - " 'that i`m never gonna hurt again 不再让别人伤害我',\n", - " 'been broken hearted too long 伤心太久',\n", - " 'sick and tired of crying alone 不想再独自哭泣',\n", - " 'from this moment i`m back to life 此刻我已重生',\n", - " 'remember who i was before you 我想起那个没有你的我',\n", - " 'now i`m alive and feeling brand new 全新的我,全新的感受',\n", - " 'from this moment i`m back to life 此刻我已重生',\n", - " 'now the after burn of you and me 我们当时的争吵与冲突',\n", - " 'felt like a first degree emergency 现在看来像是最後的急救',\n", - " 'resurrected the agony 让我们从痛不欲生的边缘得到解脱',\n", - " 'now i`m finally ok now i`m making my way 现在我没事了 我要大步向前',\n", - " 'now i`m ready 我准备好了',\n", - " 'coz` i learned how to say goodbye 我学会如何说再见',\n", - " 'let go of the past 让过去变成云烟',\n", - " 'freedom at last from feeling so low 摆脱低潮,拥抱自由',\n", - " 'and i made a promise to myself 我答应自己',\n", - " 'that i`m never gonna hurt again 不再让别人伤害我',\n", - " 'been broken hearted too long 伤心太久',\n", - " 'sick and tired of crying alone 不想再独自哭泣',\n", - " 'from this moment i`m back to life 此刻我已重生',\n", - " 'remember who i was before you 我想起那个没有你的我',\n", - " 'now i`m alive and feeling brand new 全新的我,全新的感受',\n", - " 'from this moment i`m back to life 此刻我已重生',\n", - " 'been broken hearted too long 伤心太久',\n", - " 'sick and tired of crying alone 不想再独自哭泣',\n", - " 'from this moment i`m back to life 此刻我已重生',\n", - " 'remember who i was before you 我想起那个没有你的我',\n", - " 'now i`m alive and feeling brand new 全新的我,全新的感受',\n", - " 'from this moment i`m back to life 此刻我已重生',\n", - " 'been broken hearted too long 伤心太久',\n", - " 'sick and tired of crying alone 不想再独自哭泣',\n", - " 'from this moment i`m back to life 此刻我已重生',\n", - " 'remember who i was before you 我想起那个没有你的我',\n", - " 'now i`m alive and feeling brand new 全新的我,全新的感受',\n", - " 'from this moment i`m back to life 此刻我已重生',\n", - " \"i've never seen a diamond in the flesh\",\n", - " 'i cut my teeth on wedding rings in the movies',\n", - " \"and i'm not proud of my address, in the torn up town\",\n", - " 'no post code envy',\n", - " \"but every song's like gold teeth, grey goose, trippin' in the bathroom\",\n", - " \"blood stains, ball gowns, trashin' the hotel room\",\n", - " \"we don't care, we're driving cadillacs in our dreams\",\n", - " \"but everybody's like cristal, maybach, diamonds on your timepiece\",\n", - " 'jet planes, islands, tigers on a gold leash',\n", - " '私人飛機 度假小島 養著一隻圈著金鍊的老虎',\n", - " \"we don't care, we aren't caught up in your love affair\",\n", - " '不在乎 反正我們也不可能有任何關係',\n", - " \"and we'll never be royals\",\n", - " '我們永遠無法成為貴族',\n", - " \"it don't run in our blood\",\n", - " '天生的血液裡就流竄著賤命',\n", - " \"that kind of lux just ain't for us\",\n", - " '那樣的奢華不屬於我們',\n", - " 'we crave a different kind of buzz',\n", - " '我們渴望能與眾不同',\n", - " 'let me be your ruler, you can call me queen bee',\n", - " '讓我成為你們的統治者 你們可以叫我蜂后',\n", - " \"and baby i'll rule (i'll rule i'll rule i'll rule...)\",\n", - " '而我會主宰一切 一切 一切',\n", - " 'let me live that fantasy',\n", - " '就讓我活在想像裡',\n", - " \"my friends and i we've cracked the code\",\n", - " '我和朋友們早已看清真相',\n", - " 'we count our dollars on the train to the party',\n", - " '我們在往派對的列車上數著零錢',\n", - " \"and everyone who knows us knows that we're fine with this\",\n", - " '認識的人都懂 我們對於貧窮坦然接受',\n", - " \"we didn't come from money\",\n", - " '我們不是為了金錢而活',\n", - " \"but every song's like gold teeth, grey goose, trippin' in the bathroom\",\n", - " \"blood stains, ball gowns, trashin' the hotel room\",\n", - " '暴力、華服、旅館裡喝到吐',\n", - " \"we don't care, we're driving cadillacs in our dreams\",\n", - " '不在乎 在夢裡我們也可以開凱迪拉克',\n", - " \"but everybody's like cristal, maybach, diamonds on your timepiece\",\n", - " '但每個人都配戴著水晶 名車 手錶鑲有鑽石',\n", - " 'jet planes, islands, tigers on a gold leash',\n", - " '私人飛機 度假小島 養著一隻圈著金鍊的老虎',\n", - " \"we don't care, we aren't caught up in your love affair\",\n", - " '不在乎 反正我們也不可能有任何關係',\n", - " \"and we'll never be royals\",\n", - " '我們永遠無法成為貴族',\n", - " \"it don't run in our blood\",\n", - " '天生的血液裡就流竄著賤命',\n", - " \"that kind of lux just ain't for us\",\n", - " '那樣的奢華不屬於我們',\n", - " 'we crave a different kind of buzz',\n", - " '我們渴望能與眾不同',\n", - " 'let me be your ruler, you can call me queen bee',\n", - " '讓我成為你們的統治者 你們可以叫我蜂后',\n", - " \"and baby i'll rule (i'll rule i'll rule i'll rule...)\",\n", - " '而我會主宰一切 一切 一切',\n", - " 'let me live that fantasy',\n", - " '就讓我活在想像裡',\n", - " '(oooh ooooh ohhh)',\n", - " \"we're bigger than we ever dreamed\",\n", - " '我們比自己想得要偉大',\n", - " \"and i'm in love with being queen\",\n", - " '我也很想成為女王',\n", - " '(oooooh ooooh ohhhhh)',\n", - " 'life is game without a care',\n", - " '人生是殘酷的遊戲',\n", - " \"we aren't caught up in your love affair\",\n", - " '只可惜我們不可能有任何關係',\n", - " \"and we'll never be royals\",\n", - " '我們永遠無法成為貴族',\n", - " \"it don't run in our blood\",\n", - " '天生的血液裡就流竄著賤命',\n", - " \"that kind of lux just ain't for us\",\n", - " '那樣的奢華不屬於我們',\n", - " 'we crave a different kind of buzz',\n", - " '我們渴望能與眾不同',\n", - " 'let me be your ruler, you can call me queen bee',\n", - " '讓我成為你們的統治者 你們可以叫我蜂后',\n", - " \"and baby i'll rule (i'll rule i'll rule i'll rule...)\",\n", - " '而我會主宰一切 一切 一切',\n", - " 'let me live that fantasy',\n", - " '就讓我活在想像裡']}}},\n", - " 'zu': {'sentence': {'pop': {'meta': {'train_data': [\"ngikhumbula ngisakhula ngikhul'ekhaya\",\n", - " 'i remember the days growing up at home',\n", - " 'baba nomama, nobaba, nomame',\n", - " 'fathers and mothers, fathers and mothers',\n", - " 'basithanda thina emakhabeleni',\n", - " 'they once cared and loved us in makhabeleni',\n", - " 'hawu, sasikhula emakhabeleni',\n", - " 'oh, we grew up in makhabeleni',\n", - " 'hawu, babesithanda emakhabeleni',\n", - " 'oh, they loved and cared for us in makhabeleni',\n", - " 'ikhaya lami lisele',\n", - " 'my home is now gone and behind me',\n", - " 'ikhaya lami lingekho',\n", - " 'my home that is not here anymore',\n", - " 'hawu, sasikhula emakhabeleni',\n", - " 'oh, we grew up in makhabeleni',\n", - " 'hawu, babesithanda emakhabeleni',\n", - " 'oh, they loved and cared for us in makhabeleni',\n", - " 'uyishayelani lengane isecane wemfazi omdala?',\n", - " '(why are you beating that small child, old woman?)',\n", - " 'ngizokhulula, ngizokhulula wena',\n", - " '(i will set you free - i.e. chase you away)',\n", - " \"nkosi sikelel'i afrika (lord god bless africa)\",\n", - " \"maluphakanyisw'uphondo iwayo (let it's fame be lifted up)\",\n", - " 'yizwa imithandazo yethu (listen and hear our prayers)',\n", - " 'nkosi sikelela, nkosi sikelela (oh lord god bless)',\n", - " \"nkosi sikelel'i afrika (lord god bless africa)\",\n", - " \"maluphakanyisw'uphondo iwayo (let it's fame be lifted up)\",\n", - " 'yizwa imithandazo yethu (listen and hear our prayers)',\n", - " 'nkosi sikelela, thina lusapho iwayo (oh lord god bless us, we children of africa)',\n", - " 'woza moya (come spirit)',\n", - " 'woza moya woza (come spirit, come)',\n", - " 'woza moya (come spirit)',\n", - " 'woza moya woza (come spirit, come)',\n", - " 'woza moya oyingewele (come spirit, holy spirit)',\n", - " 'nkosi sikelela (oh lord god bless)',\n", - " 'morena boloka setjhaba sa heso (god bless our nation)',\n", - " 'ofedise dintwa le matshwenyeho (and stop all wars and suffering)',\n", - " 'o se boloke (and bless it)',\n", - " 'o se boloke morena (and bless it lord, oh god)',\n", - " 'setjhaba sa heso (bless our nation)',\n", - " 'setjhaba sa afrika (our nation, africa)',\n", - " \"nkosi sikelel'i afrika (lord god bless africa)\",\n", - " \"maluphakanyisw'uphondo iwayo (let it's fame be lifted up)\",\n", - " 'yizwa imithandazo yethu (listen and hear our prayers)',\n", - " 'nkosi sikelela (oh lord god bless us, we children of africa)',\n", - " \"nkosi sikelel'i afrika (god bless africa)\",\n", - " \"we'd like pay tribute to the great dorothy masuka\",\n", - " \"because without her we wouldn't have heard all those songs in the 40's and the 50's and the 60's that she wrote\",\n", - " \"kutheni uzulu, kutheni imali yam i pheleli ijwaleni, nontsokolo. just a endless row of songs. and because of her a whole lot of ladies from the townships and the rural areas came up with a mbaqanga style, and as you know people like the dark city sisters, intombi ezimnyama, intombi zesimanjemanje, intombi zesinqashiwe, mahotela queens, miriam makeba and the . they all came from dorothy masuku, and we'd like to pay tribute to her with this song\",\n", - " 'but before we do that let me introduce the majitas to you:',\n", - " 'on drums, from the north west province, from klerksdorp; sello montoedi!',\n", - " 'on keyboards from dube township, johanessburg, egoli, south africa, soweto; jabulani arthur mshengu tshabalala!',\n", - " 'on saxophone also from soweto, rockville; ngenekhaya khaya mahlangu!',\n", - " 'on percussion, from freetown, seiraleone, west africa, francis mane !',\n", - " 'from soweto also on bass guitar, fana zulu!',\n", - " 'and keyboards, from the north western province too, from montshiwa, mmabatho, mahikeng',\n", - " \"wait, wait, wait! let me say his name first. mokhaetsho it's a bit of a long name\",\n", - " 'sb, koketso, wakantse, hendrick, , moilwa!',\n", - " 'and guitar and everything else, from gaborone and francistown, botswana, john, longwe, blackie, montsho, selolwane!',\n", - " 'khawuleza, khawuleza, khawuleza, mama',\n", - " 'khawuleza, khawuleza, khawuleza, mama',\n", - " '(khawuleza, khawuleza, mama)',\n", - " 'khawuleza, khawuleza, khawuleza, mama',\n", - " '(sheshisa, mama, khawuleza)',\n", - " 'khawuleza, khawuleza, khawuleza, mama',\n", - " '(sheshisa, mama, khawuleza)',\n", - " 'khawuleza, khawuleza, khawuleza, mama',\n", - " \"(bathi naye amapholiza, aya ngen'endleni, mama)\",\n", - " 'khawuleza, khawuleza, khawuleza, mama',\n", - " '(sihla na ma)',\n", - " 'khawuleza, khawuleza, khawuleza, mama',\n", - " '(sihla na ma)',\n", - " 'khawuleza, khawuleza, khawuleza, mama',\n", - " '(sihla na ma)',\n", - " 'khawuleza, khawuleza, khawuleza, mama',\n", - " '(sihla na mababaton)',\n", - " 'khawuleza, khawuleza, khawuleza, mama',\n", - " '(sihla na magin, sihla na mabiya, sihla na , sihla ne meqombothi)',\n", - " 'khawuleza, khawuleza, khawuleza, mama',\n", - " 'naye amapholiza',\n", - " \"aya ngen'endleni\",\n", - " \"aya ngen'endleni\",\n", - " \"aya ngen'endleni\",\n", - " 'jonga, jonga, jonga',\n", - " 'jonga, jonga, jonga yo khawuleza',\n", - " 'jonga, jonga, jonga',\n", - " 'jonga, jonga, jonga yo khawuleza',\n", - " 'jonga, jonga, jonga',\n", - " 'jonga, jonga, jonga yo khawuleza',\n", - " 'jonga, jonga, jonga',\n", - " \"naye amapholiza, azo ngen'endleni, mama\",\n", - " 'let me hear you',\n", - " 'khawuleza',\n", - " \"bathi, naye amapholiza, aya ngen'endleni, mama\",\n", - " 'sing it!',\n", - " '(khawuleza)',\n", - " 'you sound beautiful',\n", - " \"naye amapholiza, azo ngen'endleni, mama\",\n", - " 'sing it!',\n", - " '(khawuleza)',\n", - " \"bathi, naye amapholiza, aya ngen'endleni, mama\",\n", - " 'jonga, jonga, jonga',\n", - " 'jonga, jonga, jonga yo khawuleza',\n", - " 'jonga, jonga, jonga',\n", - " 'jonga, jonga, jonga iyo mama, khawuleza',\n", - " 'one more time, now!',\n", - " \"naye amapholiza, azo ngen'endleni, mama\",\n", - " 'sing it from down here!',\n", - " '(khawuleza)',\n", - " \"bathi naye amapholiza, aya ngen'endleni, mama\",\n", - " 'sing it!',\n", - " '(khawuleza)',\n", - " 'you sound beautiful',\n", - " \"bathi naye amapholiza, aya ngen'endleni, mama\",\n", - " 'sing it!',\n", - " '(khawuleza)',\n", - " \"let's jump, jump, jump!\",\n", - " 'jonga, jonga, jonga',\n", - " 'jonga, jonga, jonga iyo khawuleza',\n", - " 'jonga, jonga, jonga',\n", - " 'jonga, jonga, jonga iyo, mama khawuleza',\n", - " 'shosholoza',\n", - " 'ku lezontaba',\n", - " 'stimela si qhamuka e south africa',\n", - " 'shosholoza',\n", - " 'stimela si qhamuka e south africa',\n", - " 'wena u ya baleka',\n", - " 'wena u ya baleka',\n", - " 'ku lezontaba',\n", - " 'stimela si qhamuka e south africa',\n", - " 'shosholoza',\n", - " 'work, work, working in the sun',\n", - " 'we will work as one',\n", - " 'shosholoza',\n", - " 'work, work, working in the rain',\n", - " \"'til there's sun again\",\n", - " 'shosholoza',\n", - " 'push, push, pushing on and on',\n", - " \"there's much to be done\",\n", - " 'shosholoza',\n", - " 'push, push, pushing in the sun',\n", - " 'we will push as one',\n", - " 'sithwele kanzima, sithwele kanzima (ooh, aah!)',\n", - " 'sithwele kanzima, sithwele kanzima (ooh, aah!)',\n", - " 'sithwele kanzima, sithwele kanzima (ooh, aah!)',\n", - " 'sithwele kanzima, sithwele kanzima (ooh, aah!)',\n", - " 'sithwele kanzima, sithwele kanzima (ooh, aah!)',\n", - " 'etshe!',\n", - " 'shosholoza',\n", - " 'shosholoza',\n", - " 'ku lezontaba',\n", - " 'stimela si qhamuka e south africa',\n", - " 'shosholoza',\n", - " 'stimela si qhamuka e south africa',\n", - " 'wena u ya baleka',\n", - " 'wena u ya baleka',\n", - " 'ku lezontaba',\n", - " 'stimela si qhamuka e south africa',\n", - " 'shosholoza',\n", - " 'work, work, working in the sun',\n", - " 'we will work as one',\n", - " 'shosholoza',\n", - " 'work, work, working in the rain',\n", - " \"'til there's sun again\",\n", - " 'shosholoza',\n", - " 'ku lezontaba',\n", - " 'stimela si qhamuka e south africa',\n", - " 'shosholoza',\n", - " 'stimela si qhamuka e south africa',\n", - " 'wena u ya baleka',\n", - " 'wena u ya baleka',\n", - " 'ku lezontaba',\n", - " 'stimela si qhamuka e south africa',\n", - " 'emaweni webaba',\n", - " 'silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'homeless, homeless',\n", - " 'moonlight sleeping on a midnight lake',\n", - " 'homeless, homeless',\n", - " 'moonlight sleeping on a midnight lake',\n", - " 'we are homeless, we are homeless',\n", - " 'the moonlight sleeping on a midnight lake',\n", - " 'and we are homeless, homeless, homeless',\n", - " 'the moonlight sleeping on a midnight lake',\n", - " 'zio yami, zio yami, nhliziyo yami',\n", - " 'nhliziyo yami amakhaza asengi bulele',\n", - " 'nhliziyo yami, nhliziyo yami',\n", - " 'nhliziyo yami, angibulele amakhaza',\n", - " 'nhliziyo yami, nhliziyo yami',\n", - " 'nhliziyo yami somandla angibulele mama',\n", - " 'zio yami, nhliziyo yami',\n", - " 'nhliziyo yami, nhliziyo yami',\n", - " 'too loo loo, too loo loo',\n", - " 'too loo loo loo loo loo loo loo loo loo',\n", - " 'too loo loo, too loo loo',\n", - " 'too loo loo loo loo loo loo loo loo loo',\n", - " 'strong wind destroy our home',\n", - " 'many dead, tonight it could be you',\n", - " 'strong wind, strong wind',\n", - " 'many dead, tonight it could be you',\n", - " 'and we are homeless, homeless',\n", - " 'moonlight sleeping on a midnight lake',\n", - " 'homeless, homeless',\n", - " 'moonlight sleeping on a midnight lake',\n", - " 'homeless, homeless',\n", - " 'moonlight sleeping on a midnight lake',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody sing hello, hello, hello',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody cry why, why, why?',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody sing hello, hello, hello',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody cry why, why, why?',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'yitho omanqoba (ih hih ih hih ih) yitho omanqoba',\n", - " 'esanqoba lonke ilizwe',\n", - " '(ih hih ih hih ih) yitho omanqoba (ih hih ih hih ih)',\n", - " 'esanqoba phakathi e england',\n", - " 'yitho omanqoba',\n", - " 'esanqoba phakathi e london',\n", - " 'yitho omanqoba',\n", - " 'esanqoba phakathi e england',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody sing hello, hello, hello',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody cry why, why, why?',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody sing hello, hello, hello',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody cry why, why, why?',\n", - " 'kuluman',\n", - " 'kulumani, kulumani sizwe',\n", - " 'singenze njani',\n", - " 'baya jabula abasi thanda yo',\n", - " 'ho',\n", - " 'ndabe zitha (king of kings)',\n", - " 'nkosi yethu (our king)',\n", - " 'mholi wezwe lethu (ruler of our land)',\n", - " 'lefatshe la bonata rona (this land of our ancestors)',\n", - " 'lea halalela (is holy)',\n", - " 'busa le lizwe bo (rule this land)',\n", - " 'busa le lizwe bo',\n", - " 'busa le lizwe bo',\n", - " 'lethu busa ngoxolo (rule with peace)',\n", - " \"is'khathi sifikile (the time has come)\",\n", - " \"is'khathi busa iyo (it's time, rule)\",\n", - " \"is'khathi sifikile (the time has come)\",\n", - " 'busa lomhlaba (rule this land)',\n", - " \"is'khathi sifikile (the time has come)\",\n", - " \"is'khathi sifikile\",\n", - " 'busa simba (rule, simba)',\n", - " 'busa simba',\n", - " 'hem na iyo',\n", - " 'hem na iyo',\n", - " 'hem na nkosi bo (rule, our king)',\n", - " 'busa simba iyo (rule, simba)',\n", - " 'hem na iyo oh busa simba iyo',\n", - " '(oh, rule simba)',\n", - " 'hem na iyo oh busa nkosi bo',\n", - " '(ah, king of kings)',\n", - " 'hem na nkosi bo oh busa simba iyo',\n", - " '(rule, our king) (oh, rule simba)',\n", - " 'busa simba iyo busa simba iyo',\n", - " '(rule, simba) (rule, simba)',\n", - " 'ubuse ngo thando (rule with love)',\n", - " 'ubuse ngo thando',\n", - " 'ubuse ngo xolo (rule with peace)',\n", - " 'busa simba, busa simba (rule, simba, rule, simba)',\n", - " 'ubuse ngo xolo (rule with peace)',\n", - " 'ubuse ngo thando (rule with love)',\n", - " 'ubuse ngo xolo',\n", - " 'ubuse ngo thando',\n", - " 'ubuse ngo xolo',\n", - " 'till we find our place',\n", - " 'on the path unwinding',\n", - " 'in the circle',\n", - " 'the circle of life',\n", - " 'circle of life',\n", - " 'ubuse busa le lizwe',\n", - " 'busa simba',\n", - " 'ubuse busa le lizwe',\n", - " 'lizwe busa simba',\n", - " 'ubuse ngo thando',\n", - " 'ndabezitha',\n", - " 'nkosi yethu',\n", - " 'mholi wezwe lethu',\n", - " '(busa simba)',\n", - " 'lefatshe la bonata rona',\n", - " 'lea halalela',\n", - " 'busa le lizwe bo',\n", - " 'busa le lizwe bo',\n", - " 'busa le lizwe bo',\n", - " 'lethu busa ngoxolo',\n", - " \"is'khathi sifikile (sifkile)\",\n", - " \"is'khathi busa iyo\",\n", - " \"is'khathi sifikile\",\n", - " 'busa lomhlaba',\n", - " \"is'khathi sifikile\",\n", - " \"is'khathi sifikile\",\n", - " 'busa simba',\n", - " 'busa simba',\n", - " 'ubuse ngo xolo',\n", - " 'ubuse ngo thando',\n", - " 'ubuse ngo xolo',\n", - " 'ubuse ngo thando',\n", - " 'ubuse ngo xolo',\n", - " \"ingonyama nengw' enamabala\",\n", - " \"ingonyama nengw' enamabala\",\n", - " \"'til we find our place\",\n", - " 'on the path unwinding',\n", - " 'in the circle',\n", - " 'the circle of life',\n", - " 'circle of life!',\n", - " '(closing drumbeat)',\n", - " 'busa le lizwe bo',\n", - " 'busa le lizwe bo',\n", - " \"busa lomhlaba weth'\",\n", - " 'busa ngoxolo',\n", - " 'busa ngothando bo',\n", - " '(ay baba iyo)',\n", - " 'busa ngothando bo',\n", - " '(halalela)',\n", - " 'busa ngothando bo',\n", - " '(oh oh)',\n", - " 'busa ngoxolo',\n", - " 'ubuse ngothando',\n", - " '(ngothando)',\n", - " 'ubuse ngoxolo',\n", - " '(halalela)',\n", - " 'ubuse ngothando',\n", - " 'busa simba!',\n", - " 'busa simba!',\n", - " 'hemna iyo',\n", - " 'hemna iyo',\n", - " 'hemna nkosi',\n", - " 'oh, busa simba iyo',\n", - " 'hemna iyo',\n", - " 'hemna iyo',\n", - " 'hemna nkosi',\n", - " 'oh, busa simba iyo',\n", - " 'izimakade',\n", - " 'ziphila nathi',\n", - " 'ziphefumula',\n", - " \"umoy' oyingcwele\",\n", - " 'gazi la mama',\n", - " \"ladal' iimanga\",\n", - " \"izingonyama z'khothama kuwe\",\n", - " 'izimakade',\n", - " 'sezibuyile',\n", - " 'zithi asiqhenye',\n", - " 'zithi asikhanye',\n", - " 'masithembe',\n", - " 'intando yezimakade',\n", - " 'simakade',\n", - " 'we live amongst gods',\n", - " 'holy is the air they breathe',\n", - " \"miracles are borne in mother's blood\",\n", - " 'and to her the kings bow down',\n", - " 'the gods have returned',\n", - " 'to tell us to stand proudly in our light',\n", - " 'may we trust in the will of the eternal ones',\n", - " 'senzenina',\n", - " 'sono sethu ubumnyama',\n", - " 'abulale afe wonke',\n", - " 'mayibuye iafrika',\n", - " 'the translation:',\n", - " 'what have we done',\n", - " 'our crime is to be poor, our crime is to be black',\n", - " 'let africa come back',\n", - " 'i hope this helps a little',\n", - " 'sweetendo lingo pri mi salindo',\n", - " 'prettyse lindo fe li drippin do',\n", - " 'oneswe anqe premi le',\n", - " 'sweetendo lingo pri mi salindo an lo',\n", - " 'suli an len',\n", - " 'le ti lifani len',\n", - " 'jen ti amenzin don',\n", - " 'antwon dalton',\n", - " 'feli jecen lindon',\n", - " 'welo some wen',\n", - " 'milen dichi lingwen',\n", - " 'ovenudon mili desu drem',\n", - " 'ovenulen dili vece uvan',\n", - " 'ovenudon mili decen twee',\n", - " 'voices in my dreams',\n", - " 'telling me where i should go',\n", - " 'saying over here',\n", - " 'is where i wanna be',\n", - " 'these melodies in me, yeah',\n", - " 'are saying this is who i am',\n", - " 'ndingaba yintoni na?',\n", - " 'ngaphandle kwakho mmino?',\n", - " \"there ain't a way to show you\",\n", - " 'there ain’t a way to show you ooh',\n", - " \"ain't no way to show you\",\n", - " \"mna nd'zojik’izinto\",\n", - " 'ngalomculo mmino',\n", - " 'when you smile, when you dance',\n", - " 'when you look into my eyes',\n", - " \"mna nd'zojik'izinto\",\n", - " 'ngalomculo mmino',\n", - " 'naba bendibuza',\n", - " \"ngab'ufuna ntoni na, yeah\",\n", - " 'bathi ndenzani',\n", - " 'ndizihlekisa ngabantu',\n", - " 'oh naba bendibuza',\n", - " \"ngab'uzokwenzani na? (ngab'uzokwenzani na?)\",\n", - " \"ndilapha ndenz'indima yam\",\n", - " \"oh oh njengaban'onesiphiwo\",\n", - " 'so i’m saying this is me (saying this is mе)',\n", - " 'oh please just let mе be (please just let me be)',\n", - " 'i’m giving you my love (giving you my love)',\n", - " 'i need your attention (giving you my love)',\n", - " \"so i'm saying this is me (saying this is me)\",\n", - " 'oh please just let me be (please just let me be)',\n", - " 'i’m giving you my love (giving you my love)',\n", - " 'i need your attention (giving you my love)',\n", - " \"so i'm saying this is me (saying this is me)\",\n", - " 'oh please just let me be (please just let me be)',\n", - " \"i'm giving you my love (giving you my love)\",\n", - " 'i need your attention (giving you my love)',\n", - " \"so i'm saying this is me (saying this is me)\",\n", - " 'oh please just let me be (please just let me be)',\n", - " 'i’m giving you my love (giving you my love)',\n", - " 'i need your attention (giving you my love)',\n", - " \"ain't no way to show you\",\n", - " \"mna nd'zojik'izinto\",\n", - " 'ngalomculo mmino',\n", - " 'when you smile, when you dance',\n", - " 'when you look into my eyes',\n", - " \"mna nd'zojik'izinto\",\n", - " 'ngalomculo mmino',\n", - " 'hem',\n", - " 'hem, hem',\n", - " 'hem, hem',\n", - " 'hem, hem, hem',\n", - " 'hem, hem, hem',\n", - " 'hem, hem',\n", - " 'hem, hem',\n", - " 'hem, hem, hem',\n", - " 'we sangoma ngi velelwe',\n", - " 'we baba ngivelelwe',\n", - " 'we baba ngivelelwe',\n", - " 'busa le lizwe bo',\n", - " 'busa le lizwe bo',\n", - " 'busa le lizwe bo',\n", - " 'busa lomhlaba',\n", - " 'busa, busa le lizwe',\n", - " 'busa, busa le lizwe',\n", - " 'busa, busa le lizwe',\n", - " 'busa lomhlaba',\n", - " 'hawu baba ngashada intombi yami esikolweni emoliva',\n", - " '(oh father i married my girl at the school on mooi river)',\n", - " 'kwashunqa uthuli kwandlovu madoda silwela lobuhle',\n", - " \"(the dust was rising with all the preparations at ndlovu's home)\",\n", - " 'usipho wakipha izinkomo ezamalobolo ezinamasondo',\n", - " '(sipho paid the bride price with a motor car)',\n", - " 'wadlala umukwa wami, wadlala engalindile',\n", - " '(and my father-in-law performed an unexpected war dance',\n", - " 'on the spur of the moment)',\n", - " 'wadlala umukwa wami engalindile kwakhikhiza abafazi',\n", - " '(my father-in-law performed an unexpected war dance',\n", - " 'and the women encouraged him with shrill cries)',\n", - " 'ngisho izulu eliphezulu lalihleka kancane',\n", - " '(even the heaven above - i.e. the zulu king - gave a small laugh)',\n", - " \"'zulu eliphezulu lalikhona lalihleka kancane\",\n", - " '(the heaven above was present and he gave a small laugh)',\n", - " 'emoliva, emoliva',\n", - " '(at mooi river)',\n", - " 'chorus:',\n", - " 'yamnandi lendaba ngaze ngashada emoliva ngiyabonga webanguni',\n", - " '(it was a wonderful event, for i eventually got married at mooi river',\n", - " 'and i thank you people of the chunu clan)',\n", - " 'ngaze ngashada ngaze ngathola nowami',\n", - " '(i eventually got married, i eventually even got my own wife)',\n", - " 'wemzila wangincelisa amasiko ngaze ngaba wumuthu',\n", - " '(mzila! you suckled me on the traditions and customs',\n", - " 'of the zulu and i became a person)',\n", - " 'hawu wemakhabela nangikhulisa ngaze ngaba wumuthu',\n", - " '(oh you people from makhabeleni you raised me until i became a person)',\n", - " 'kungathiwani ngani banguni nahlanganisa zonke izizwe',\n", - " '(and what can be said about you, machunu people',\n", - " 'for you brought together all the nations)',\n", - " 'nahlanganisa zonke izizwe ubesehlulekile ubotha',\n", - " '(you brought all the nations together',\n", - " 'botha long having failed to do this)',\n", - " 'nahlanganisa zonke izizwe ngobuhle ubesehlulekile ubotha',\n", - " '(you brought all the nations together in good spirit',\n", - " 'botha having long failed)',\n", - " 'emoliva',\n", - " '(at mooi river)',\n", - " 'chorus',\n", - " '(here i call out the praise names of various people who have been',\n", - " 'important in my life, most of whom were present at my marriage)',\n", - " 'chorus',\n", - " 'chorus x2',\n", - " 'we bhuti we bhuti',\n", - " 'we bhuti mina ndihamba nawe',\n", - " 'we bhuti we bhuti',\n", - " 'we bhuti mina ndihamba nawe',\n", - " 'verse 1 x2',\n", - " 'ngithanda na le way',\n", - " 'unguyo ngakhona',\n", - " 'webhuti mina ndihamba nawe',\n", - " 'ngithanda na le way',\n", - " 'ucula ngakhona',\n", - " 'webhuti mina ndihamba nawe',\n", - " 'bridge 1 x2',\n", - " 'eh ndihamba nawe',\n", - " 'hei ndihamba nawe',\n", - " 'we bhuti mina ndihamba nawe',\n", - " 'we bhuti ndihamba nawe, we bhuti ndihamba nawe',\n", - " 'we bhuti mina ndihamba nawe',\n", - " 'verse 2 x2',\n", - " 'ndafika endaweni ngibona abantu',\n", - " \"ehh ufak'umfana wam\",\n", - " \"ugcwel'umfana wami\",\n", - " 'ngathi loya lobhuti loya',\n", - " 'isoka isoka lami',\n", - " 'bridge x2',\n", - " 'chorus x2',\n", - " 'ndithanda na le way',\n", - " 'ujika ngakhona',\n", - " 'we sisi mina ndihamba nawe',\n", - " 'ndithanda na le way',\n", - " 'ududla ngakhona',\n", - " 'we sisi mina ndihamba nawe',\n", - " 'bridge 2 x2',\n", - " 'eh ndihamba nawe',\n", - " 'ohh ndihamba nawe',\n", - " 'we sisi mina ndihamba nawe',\n", - " 'we sisi ndihamba nawe, we sisi ndihamba nawe',\n", - " 'we sisi mina ndihamba nawe',\n", - " 'ndithanda na le way',\n", - " 'ungiyo ngakhona',\n", - " 'we bhuti mina ndihamba nawe',\n", - " 'ndithanda na le way',\n", - " 'ududla ngakhona',\n", - " \"ay' suka mina ndihamba nawe\",\n", - " 'eeh ndihamba nawe',\n", - " 'eeh ndihamba nawe',\n", - " 'we bhuti mina ndihamba nawe',\n", - " 'we sisi ndihamba nawe',\n", - " 'we sisi ndihamba nawe',\n", - " 'we sisi ndihamba nawe',\n", - " 'lerato le monate ha ona le lona pelong ya hao',\n", - " 'ha o sena lerato o jwalo ka tshipi, e bakang medumo fela',\n", - " 'entse ere kelekelekeke kelekelekeke kelekelekeke',\n", - " \"don't worry\",\n", - " 'weh mama, sthandwa se nhliziyo yami',\n", - " \"i call you mama, you gon' call me papa\",\n", - " 'weh mama, sthandwa se nhliziyo yami',\n", - " \"i call you mama, you gon' call me papa\",\n", - " 'uyangijabulisa, uyangiphambanisa',\n", - " 'uyangijabulisa, uyangiphambanisa',\n", - " 'you make me happy, ungiyenza happy',\n", - " 'you make me happy, ungiyenza happy',\n", - " \"don't worry\",\n", - " \"if you're happy, i am happy, we are happy, happy people\",\n", - " \"got no worries, got no worries, we ain't got no worries\",\n", - " '3: nhlanhla',\n", - " \"oh my goodo, i'm in love with this man\",\n", - " 'he makes me so happy, he make me wanna go - he banna',\n", - " 'pu pu pu pu pu puuu, papa weeeeh',\n", - " 'lerato le monate ha ona le lona pelong ya hao',\n", - " 'ha o sena lerato o jwalo ka tshipi, e bakang medumo fela',\n", - " 'entse ere king king kin kiring king',\n", - " 'king, king king kin kiring king king',\n", - " 'jabulile eh',\n", - " 'ke tla go rekela di pompom, pomporom popom pompom',\n", - " 'i fell in love',\n", - " 'with the beauty of',\n", - " \"mother nature's gift to great south africa\",\n", - " 'but it struck me when',\n", - " 'i saw those black men',\n", - " 'live township life in mamelodi east pretoria',\n", - " 'remains of an unfair system, it was not supposed to last',\n", - " \"black page in the book of stories of the white man's past\",\n", - " 'we, dutch white punks',\n", - " 'built up our gear',\n", - " 'hey, we made a difference, rock, rock, rock a black high school!',\n", - " 'yeah, yeah, yeah',\n", - " 'mamelodi melodies',\n", - " 'we drove into',\n", - " 'another world and i',\n", - " 'could only stare at clouds from burning trash filling the air',\n", - " 'and i felt like',\n", - " 'a silly tourist on',\n", - " \"a cheap trip into other people's daily misery\",\n", - " 'but i met cool blacks and whites telling me they really try',\n", - " 'to fight against their prejudice, look each other in the eye',\n", - " 'we, dutch white punks',\n", - " 'built up our gear',\n", - " 'hey, we made a difference, rock, rock, rock a black high school!',\n", - " '1 for the shine that glows on your face',\n", - " '2 for the melenin that and origins trace',\n", - " '3 for the color of all melodies face',\n", - " 'trinity for all my equal people takes over the space',\n", - " 'coz siyaphanda, siyakhanda sihloksa amakhanda',\n", - " 'ngoba sthanda sanda ngukfakeli sandla',\n", - " 'manje ngiyawanda phakathi kwabo ubani ozong thanda',\n", - " 'angsiza amandla sibe inkosi nabo ngok thanda',\n", - " 'ngoba sithule tu vele mele skhulume toe',\n", - " 'ksele kuwe ukuthi uzbone uzkhulule ku-lula',\n", - " 'vula amasango sicu-le',\n", - " 'mbhube kuze kube kude',\n", - " 'qhude biza ilanga sibemunye',\n", - " 'sebenze kabunye ngoba thina sithunwe',\n", - " 'kunye angakusho akzokwenza kune',\n", - " 'hlanyisa umoya futhi sizokwenzu thuke',\n", - " 'thuka ngenjabulo uzbone uphuka khula sula',\n", - " 'loko okzok hlula phuma',\n", - " 'sibe ilabantu bamanje sibonisane kukanje',\n", - " 'ngama langa langa phantsi manzi',\n", - " \"sthelele sibe ila abantu bezimbhali khali mali masngahlali sthathis' skhali\",\n", - " 'singalali sisvikele kwez ngacaci kamiliko yamelodi mamelodi for u let us',\n", - " 'shine like what!',\n", - " 'ek sal nooit vergeet, die fantastiese tijd',\n", - " 'mamelodi melodies',\n", - " 'en ik sal onthou, hou hulle saam aan more bou',\n", - " 'mamelodi melodies',\n", - " 'tkzee and benni',\n", - " 'shibobo',\n", - " 'peace!',\n", - " \"(let's get ready to rumble!)\",\n", - " \"benni's in the 18th area\",\n", - " 'tkzee in the area',\n", - " 'and bafana in the area',\n", - " 'halagasha',\n", - " \"benni's in the 18th area\",\n", - " 'tkzee in the area',\n", - " 'and bafana in the area',\n", - " 'halagasha',\n", - " 'nkosi sikelela',\n", - " 'tina, tina na bafana',\n", - " 'mbazoxwala siyaya',\n", - " \"e'france, abana chance\",\n", - " 'benni, laat die poppe dans',\n", - " 'effy dansieza',\n", - " 'ubani mbenga cheata bafana',\n", - " 'bafana bafana',\n", - " 'ukoza nazukoza laga',\n", - " 'sondela, sonsocholoza',\n", - " 'koleza undaba haha',\n", - " 'bazuxwala sondaba sidlala nebola',\n", - " 'next time incho',\n", - " 'unami yange umdu',\n", - " 'shibobo wadlula',\n", - " 'intoni sadli lomuchwewu',\n", - " 'namilwe so solintsweze',\n", - " 'kolintcheza bala',\n", - " 'siyaya bafana bazukala',\n", - " 'halagasha hulakumpa',\n", - " 'bentswe no malume limasina',\n", - " 'luncha bafana',\n", - " 'benni na bantwana',\n", - " 'hahale tseba mos',\n", - " 'holla phalafala fela',\n", - " \"benni's in the 18th area\",\n", - " 'tkzee in the area',\n", - " 'and bafana in the area',\n", - " 'halagasha',\n", - " \"benni's in the 18th area\",\n", - " 'tkzee in the area',\n", - " 'and bafana in the area',\n", - " 'halagasha',\n", - " 'hy lekker lekker vis en chops',\n", - " 'to the north, to the south western',\n", - " 'south africa, heitada! (halagasha)',\n", - " 'one for tkzee (halagasha)',\n", - " 'one for bafana (halagasha)',\n", - " 'one for bantwana (halagasha)',\n", - " 'one for madiba (ooh aah)',\n", - " 'ek laat hulle dans (ooh ahh)',\n", - " 'ek laat hulle dans',\n", - " 'dis die kaap se dans (ja!)',\n", - " 'en die poppe sal dans (hola)',\n", - " 'die poppe sal dans',\n", - " 'now can you see dat om benni maak jou mal?',\n", - " 'now can you see dat tkzee maak jou mal?',\n", - " 'now can you see dat bafana maak jou mal?',\n", - " 'now can you see dat tkzee maak jou mal?',\n", - " 'hulle maak jou mal',\n", - " 'bafana maak jou mal',\n", - " 'hulle maak jou mal',\n", - " 'tkzee maak jou mal',\n", - " 'haha ja',\n", - " \"benni's in the 18th area\",\n", - " 'tkzee in the area',\n", - " 'and bafana in the area',\n", - " 'halagasha',\n", - " \"benni's in the 18th area\",\n", - " 'tkzee in the area',\n", - " 'and bafana in the area',\n", - " 'halagasha',\n", - " \"a si m'bonanga\",\n", - " \"a si m'bonanga u mandela thina\",\n", - " 'lapha ekhona',\n", - " 'lapha ehleli khona',\n", - " 'oh the sea is cold and the sky is grey',\n", - " 'look across the island into the bay',\n", - " 'we are all islands till comes the day',\n", - " 'we cross the buning water',\n", - " \"a si m'bonanga\",\n", - " \"a si m'bonanga u mandela thina\",\n", - " 'lapha ekhona',\n", - " 'lapha ehleli khona',\n", - " 'a seagull wings across the sea',\n", - " 'borken silence is what i dream',\n", - " 'who has the words to close the distance',\n", - " 'between you and me',\n", - " \"a si m'bonanga\",\n", - " \"a si m'bonanga u mandela thina\",\n", - " 'lapha ekhona',\n", - " 'lapha ehleli khona',\n", - " 'steven biko',\n", - " \"a si m'bonanga\",\n", - " \"a si m'bonanga umfowethu thina\",\n", - " 'lapha ekhona',\n", - " 'la wa fela khona',\n", - " 'vicoria mxenge',\n", - " \"a si m'bonanga\",\n", - " \"a si m'bonanga u tate wetha thina\",\n", - " 'lapha ekhona',\n", - " 'la wa fela khona',\n", - " 'neil aggett',\n", - " \"a si m'bonanga\",\n", - " \"a si m'bonanga umfowethu thina\",\n", - " 'lapha ekhona',\n", - " 'la wa fela khona',\n", - " 'hawu ngithi heyiwena',\n", - " 'heyi wena',\n", - " 'heyi wena hawe',\n", - " 'si you fika nini',\n", - " 'la siya knona',\n", - " 'la siya knona']},\n", - " 'data': ['in the beginning he created a groove',\n", - " 'and with that groove he made us move',\n", - " 'and it set our souls free',\n", - " 'kwaito is a way of life',\n", - " 'and it makes you reach out and raise your hands in the air',\n", - " 'to sing a song of peace, sing a song of happiness',\n", - " 'kwaito is our release',\n", - " 'it shines our souls till three in the morning',\n", - " 'on and on and on',\n", - " 'in the beggining the was the truth',\n", - " 'and in the truth there lived a sound',\n", - " 'it picks you up from the ground',\n", - " 'the beating of the drum',\n", - " 'from the bottom of the base, pop eye the snap',\n", - " 'makes you want to throw your hands in the air',\n", - " 'can you feel it?',\n", - " 'like i feel it?',\n", - " \"are you sure you're feeling good in your soul\",\n", - " 'hela ntate',\n", - " 'hela ntate waka',\n", - " 'moshimane ona onketsetsa mathai-thai',\n", - " 'hela ntate, (why o fihla ka moferefere)',\n", - " 'hella ntate waka (why o fihla ka moferefere)',\n", - " 'moshimane ona onketsetsa mathai-thai',\n", - " 'ne ke ile kwana mashamplane',\n", - " 'a fihla a nketsetsa mathai-thai (why o fihla ka moferefere)',\n", - " 'ne ke ile kwana mashamplane',\n", - " 'a fihla a nketsetsa mathai-thai (why o fihla ka moferefere)',\n", - " 'hela ntate, (why o fihla ka moferefere)',\n", - " 'hella ntate waka (why o fihla ka moferefere)',\n", - " 'moshimane ona onketsetsa mathai-thai',\n", - " 'ne ke ile kwana mashamplane',\n", - " 'a fihla a nketsetsa mathai-thai',\n", - " 'hela ntate, (why o fihla ka moferefere)',\n", - " 'hella ntate waka (why o fihla ka moferefere)',\n", - " 'eh jou cabbage',\n", - " 'jah jy your moemish',\n", - " 'ey is fokol',\n", - " 'ja jou bokol',\n", - " 'jy snack my hoender',\n", - " 'yah kamel',\n", - " 'mara akunanix kafiir',\n", - " 'yonke into ihlangene',\n", - " 'tshela mina wena vele fede ukhala ngani',\n", - " 'mara vele kanti wena fede ukhala ngani',\n", - " 'angithi usi twistile, and fede sikubacile',\n", - " 'fede mina ukuthi kahle kahle ukhala ngani',\n", - " 'fede kanti kanti wena ukhala ngani',\n", - " 'why wena for istyle sami man',\n", - " 'why wena for istyle sami man',\n", - " 'angithi usi twistile, and fede usibacile',\n", - " 'fede kanti kanti wena ukhala ngani',\n", - " 'fede kanti kanti wena ukhala ngani',\n", - " 'angithi usi twistile, and fede usibacile',\n", - " 'tshela mina wena vele fede ukhala ngani',\n", - " 'mara vele kanti wena fede ukhala ngani',\n", - " 'mara vele kanti wena fede ukhala ngani',\n", - " 'mara vele kanti wena fede ukhala ngani',\n", - " 'mara vele kanti wena fede ukhala ngani',\n", - " 'fede mina ukuthi kahle kahle ukhala ngani',\n", - " 'fede kanti kanti wena ukhala ngani',\n", - " 'fede kanti kanti wena ukhala ngani',\n", - " 'fede kanti kanti wena ukhala ngani',\n", - " 'fede kanti kanti wena ukhala ngani',\n", - " 'vele wena mfana kama vimbile, vele wena mfana kama masimbela',\n", - " 'angithi usi twsitile, and futhi sikubhacile',\n", - " 'abantu abafana nje ngawe bayobhabadiswa ngomlilo...',\n", - " 'ndabe zitha',\n", - " 'nkosi yethu',\n", - " 'mholi wezwe lethu',\n", - " 'lefatshe la bonata rona',\n", - " 'lea halalela',\n", - " 'busa le lizwe bo',\n", - " 'busa le lizwe bo',\n", - " 'busa le lizwe bo',\n", - " 'lethu busa ngoxolo',\n", - " \"is'khathi sifikile\",\n", - " \"is'khathi busa iyo\",\n", - " \"is'khathi sifikile\",\n", - " 'busa lomhlaba',\n", - " \"is'khathi sifikile\",\n", - " \"is'khathi sifikile\",\n", - " 'busa simba',\n", - " 'busa simba',\n", - " 'ubuse ngo xolo',\n", - " 'ubuse ngo thando',\n", - " 'ubuse ngo xolo',\n", - " 'ubuse ngo thando',\n", - " 'ubuse ngo xolo',\n", - " \"ingonyama nengw' enamabala\",\n", - " \"ingonyama nengw' enamabala\",\n", - " \"'til we find our place\",\n", - " 'on the path unwinding',\n", - " 'in the circle',\n", - " 'the circle of life',\n", - " 'circle of life',\n", - " 'ndabe zitha, nkosi yethu',\n", - " 'mholi wezwe lethu',\n", - " 'lefatshe la bonata rona',\n", - " 'lea halalela',\n", - " 'busa le lizwe bo',\n", - " 'busa le lizwe bo',\n", - " 'busa le lizwe bo',\n", - " 'lethu busa ngoxolo',\n", - " \"is'khathi sifikile (sifikile)\",\n", - " 'is’khathi busa iyo ()',\n", - " \"is'khathi sifikile ()\",\n", - " 'busa lomhlaba',\n", - " \"is'khathi sifikile (yeah)\",\n", - " 'is’khathi sifikile (sifikile)',\n", - " 'busa simba, busa simba (hey)',\n", - " 'ubuse ngo xolo ()',\n", - " 'ubuse ngo thando ()',\n", - " 'ubuse ngo xolo ()',\n", - " 'ubuse ngo thando, ubuse ngo xolo (hey)',\n", - " \"ingonyama, nengw' enamabala\",\n", - " \"ingonyama, nengw' enamabala\",\n", - " \"'til we find our place\",\n", - " 'on the path unwinding',\n", - " 'in the circle, the circle of life',\n", - " 'circle of life',\n", - " 'besito pa tí',\n", - " 'besito pa tí',\n", - " 'besito de azúcar, canela y anís',\n", - " 'one kiss for you',\n", - " 'one kiss for me',\n", - " 'besito pa tí',\n", - " 'besito pa tí',\n", - " 'besito de azúcar, canela y anís',\n", - " 'one kiss for you',\n", - " 'one kiss for me',\n", - " \"(xhosa) nkosi sikelel' iafrika - god bless africa\",\n", - " \"maluphakanyisw' uphondo lwayo\",\n", - " '(zulu) yizwa imithandazo yethu',\n", - " 'nkosi sikelela, thina lusapho lwayo',\n", - " '(sesotho) morena boloka setjhaba sa heso',\n", - " 'o fedise dintwa le matshwenyeho',\n", - " 'o se boloke, o se boloke setjhaba sa heso',\n", - " 'setjhaba sa, south afrika — south afrika',\n", - " '(afrikaans) uit die blou van onse hemel',\n", - " 'uit die diepte van ons see',\n", - " 'oor ons ewige gebergtes',\n", - " 'waar die kranse antwoord gee',\n", - " '(english) sounds the call to come together',\n", - " 'and united we shall stand',\n", - " 'let us live and strive for freedom',\n", - " 'in south africa our land',\n", - " 'emaweni webaba',\n", - " 'silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba siiale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'webaba silale maweni',\n", - " 'homeless, homeless',\n", - " 'moonlight sleeping on a midnight lake',\n", - " 'homeless, homeless',\n", - " 'moonlight sleeping on a midnight lake',\n", - " 'we are homeless, we are homeless',\n", - " 'the moonlight sleeping on a midnight lake',\n", - " 'and we are homeless, homeless, homeless',\n", - " 'the moonlight sleeping on a midnight lake',\n", - " 'zio yami, zio yami, nhliziyo yami',\n", - " 'nhliziyo yami amakhaza asengi bulele',\n", - " 'nhliziyo yami, nhliziyo yami',\n", - " 'nhliziyo yami, angibulele amakhaza',\n", - " 'nhliziyo yami, nhliziyo yami',\n", - " 'nhliziyo yami somandla angibulele mama',\n", - " 'zio yami, nhliziyo yami',\n", - " 'nhliziyo yami, nhliziyo yami',\n", - " 'too loo loo, too loo loo',\n", - " 'too loo loo loo loo loo loo loo loo loo',\n", - " 'too loo loo, too loo loo',\n", - " 'too loo loo loo loo loo loo loo loo loo',\n", - " 'strong wind destroy our home',\n", - " 'many dead, tonight it could be you',\n", - " 'strong wind, strong wind',\n", - " 'many dead, tonight it could be you',\n", - " 'and we are homeless, homeless',\n", - " 'moonlight sleeping on a midnight lake',\n", - " 'homeless, homeless',\n", - " 'moonlight sleeping on a midnight lake',\n", - " 'homeless, homeless',\n", - " 'moonlight sleeping on a midnight lake',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody sing hello, hello, hello',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody cry why, why, why?',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody sing hello, hello, hello',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody cry why, why, why?',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'yitho omanqoba ( ih hih ih hih ih) yitho omanqoba',\n", - " 'esanqoba lonke ilizwe',\n", - " '(ih hih ih hih ih) yitho omanqoba (ih hih ih hih ih)',\n", - " 'esanqoba phakathi e england',\n", - " 'yitho omanqoha',\n", - " 'esanqoba phakathi e london',\n", - " 'yitho omanqoba',\n", - " 'esanqoba phakathi e england',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody sing hello, hello, hello',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody cry why, why, why?',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody sing hello, hello, hello',\n", - " 'somebody say ih hih ih hih ih',\n", - " 'somebody cry why, why, why?',\n", - " 'kuluman',\n", - " 'kulumani, kulumani sizwe',\n", - " 'singenze njani',\n", - " 'baya jabula abasi thanda',\n", - " 'yo ho',\n", - " 'hamba bhekile, hamba bhekile',\n", - " 'hamba bhekile, hamba bhekile',\n", - " 'hamba bhekile, hamba bhekile (sheshisa bhekile siyo hlala )',\n", - " 'hamba bhekile, hamba bhekile (sheshisa bhekile siyo hlala )',\n", - " 'hamba bhekile, hamba bhekile (sheshisa bhekile siyo hlala )',\n", - " 'hamba nam, hamba nam',\n", - " 'hamba nam, hamba nam',\n", - " 'hamba nam, hamba nam',\n", - " 'hamba nam, iyo-iyo-iyo',\n", - " 'baby, to be loved by you',\n", - " 'oh, baby, to be loved by you',\n", - " '(baby to be loved by you, baby to be loved by you, baby to be loved by you)',\n", - " 'baby, to be loved by you (baby, to be loved by you)',\n", - " 'baby, to be loved by you (baby, to be loved by you)',\n", - " 'baby, to be loved by you (baby, to be loved by you)',\n", - " 'baby, to be loved by you (baby, to be loved by you)',\n", - " 'kudala silapha',\n", - " 'ku nini simile?',\n", - " 'kudala silapha',\n", - " 'ku nini simile?',\n", - " 'hamba nam, hamba nam',\n", - " 'hamba nam, hamba nam',\n", - " 'hamba nam, hamba nam',\n", - " 'hamba nam, iyo-iyo-iyo',\n", - " 'baby, to be loved by you',\n", - " 'baby, to be loved by you',\n", - " 'baby, to be loved by you',\n", - " 'baby, to be loved by you',\n", - " 'kudala silapha',\n", - " 'ku nini simile?',\n", - " 'kudala silapha (baby, to be loved by you)',\n", - " 'ku nini simile? (baby, to be loved by you)',\n", - " 'hamba nam, hamba nam',\n", - " 'hamba nam, hamba nam',\n", - " 'hamba nam, hamba nam',\n", - " 'hamba nam, iyo-iyo-iyo',\n", - " 'hamba nam, hamba nam',\n", - " 'hamba nam intombi yam',\n", - " 'hamba bhekile, hamba nam',\n", - " 'hamba bhekile, hamba nam',\n", - " 'hamba nam intombi yam',\n", - " 'hamba bhekile, sukuhlala ndawonye',\n", - " 'hamba bhekile, sukuhlala ndawonye',\n", - " 'hamba bhekile, sukuhlala ndawonye',\n", - " 'hamba bhekile, sukuhlala ndawonye',\n", - " 'ad libs:',\n", - " 'hey, hey',\n", - " \"k'sazo shunq' uthuli\",\n", - " 'hey, hey',\n", - " \"k'sazo shunq' uthuli\",\n", - " 'hey, hey, hey, hey',\n", - " \"k'sazo shunq' uthuli\",\n", - " 'verse 1:',\n", - " 'sigqoke s’yacontsa/ ungas’dlel’ umona',\n", - " 'i don’t have a sponsor/ kodwa ng’ya skora',\n", - " 'enter the venue ngathi yim’ ibhoza',\n", - " 'rich on my body/ i-stripes onyaweni',\n", - " 's’gruva kakhulu/ sidl’ imali b’nuku',\n", - " 's’hamba eb’suku/ asilish’ iduku',\n", - " 'ang’yona imoshi/ang’phushi philisi',\n", - " 'ng’shaya ngemcondo/ unomona yini?',\n", - " 'not nxamalala/ ang’kwazi enkandla',\n", - " 'ang’yen’ ucyril/ ang’khohlw’ imarikana',\n", - " 'kodw’ as’kholapho/ uk’phapha nginakho',\n", - " 'this clever black will always bring it back',\n", - " 'don’t you forget i’ve got notes in my pad',\n", - " 'when you’re making your tracks/ just be mindful of that',\n", - " 'times, they are changing/ it’s a revolution',\n", - " 'when someone like me has your ears when i speak',\n", - " 'hook (x2)',\n", - " 'yash’ induku',\n", - " 'ungaboni ngoba s’thand’ is’gubhu',\n", - " \"ubon’ ukuthi siyi 'phukuphuku\",\n", - " \"uban' is'phukuphuku?\",\n", - " 'ngoba s’thand’ i-groove',\n", - " 'verse 2:',\n", - " 'ng’pheth’ abocherrie abahlanyis’ odaddy',\n", - " 'kupaquz’ indoda ngob’ ibon’ iphenti',\n", - " 'he offers her drinks/ she doesn’t want it',\n", - " 'she thanks him and leaves/ now he’s here talking shit',\n", - " 'he calls her a bitch just ‘cause he couldn’t stick it',\n", - " 'thinks she’s out here for a blesser or something',\n", - " 'she couldn’t be bothered/ she’s got her own cheese',\n", - " 'got her own wheels/ and she only smokes weed',\n", - " 'her iq is mental/ he couldn’t compete',\n", - " 'um’thatha kancane/ ‘cause she loves to party',\n", - " 'it don’t even matter how she makes her money',\n", - " 'just don’t be a dick and she might let you in',\n", - " 'kanti bahlali sikuphi, silana?',\n", - " 'just let other kids like their lives how they wanna',\n", - " 'bathandi bezint’ asenzen’ umathanda',\n", - " 'akekh’ ozos’tshela/ hakuna matata',\n", - " 'hook (x2)']}}}}" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "eval_lines_lower" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Verse Labeling" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [], - "source": [ - "labeled_parts = lyrics_distinct_all.loc[\n", - " (lyrics_distinct_all[\"lyrics\"].str.contains(\"verse|Verse\"))\n", - " & (lyrics_distinct_all[\"lyrics\"].str.contains(\"chorus|Chorus\"))\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "!-Lyrics Begin-\n", - "\n", - "[Verse 1:]\n", - "Well I know just what it is you want the way you love and get enough and then you move on\n", - "You play the game of who you need and learn his name and walk away to find the next one\n", - "You say the things your looking for look past me and door to door\n", - "But darling did you think I wouldn't know\n", - "\n", - "[Chorus:]\n", - "I might not be what you want\n", - "I'm gonna be your halfway\n", - "I might not be what you need\n", - "But I'm gonna be the way\n", - "I'm never gonna be the thing you want\n", - "But I'm gonna be your halfway\n", - "I might not be what you need\n", - "I'm gonna be your halfway\n", - "(halfway, I'll be your halfway, halfway, I'll be your halfway)\n", - "\n", - "[Verse 2:]\n", - "You like to close your eyes and nod and picture him and what he'd say and what he looks like\n", - "But all I can think is all the dreams in the world that can match up to the real thing, the real thing\n", - "\n", - "[Chorus:]\n", - "I might not be what you want\n", - "I'm gonna be your halfway\n", - "I might not be what you need\n", - "But I'm gonna be the way\n", - "I'm never gonna be the thing you want\n", - "But I'm gonna be your halfway\n", - "I might not be what you need\n", - "I'm gonna be your halfway\n", - "\n", - "[Bridge:]\n", - "I'm gonna be forever yours\n", - "Don't you dare believe her, no\n", - "I'm gonna be forever yours\n", - "She's always gonna let you go\n", - "I could stay up wait the whole night\n", - "But she's never gonna show\n", - "\n", - "[Chorus:]\n", - "I might not be what you want\n", - "I'm gonna be your halfway\n", - "I might not be what you need\n", - "But I'm gonna be the way\n", - "I'm never gonna be the thing you want\n", - "But I'm gonna be your halfway\n", - "I might not be what you need\n", - "I'm gonna be your halfway\n", - "\n", - "I might not be what you want (I'm gonna be forever yours)\n", - "Baby I won't be what you want\n", - "I might not be what you need\n", - "But I'm gonna be the way ya\n", - "I'm never gonna be the thing you want (I'm gonna be forever yours)\n", - "But I'm gonna be your halfway\n", - "I might not be what you need\n", - "But I'm gonna be your halfway\n", - "\n", - "!-Lyrics End-\n", - "\n", - "[Chorus]\n", - "!Franchesckaar!\n", - "They all love you\n", - "!Franchesckaar!\n", - "They all want you\n", - "!Franchesckaar!\n", - "Of course they do\n", - "!Franchesckaar!\n", - "Oh yes, it's true\n", - "!Franchesckaar!\n", - "They love your skin\n", - "!Franchesckaar!\n", - "They want your hair\n", - "!Franchesckaar!\n", - "They want your eyes\n", - "!Franchesckaar!\n", - "I tell no lies\n", - "\n", - "[Verse 1]\n", - "Jack Wills, clipped hair, penciled eyes, you get attention\n", - "Tight shirt, straight teeth, pinned up smile, all of them mention\n", - "How you look nice, tip-top, beautiful, the cat's pajamas\n", - "Suntan, golden brown, where you been? To the Bahamas?\n", - "\n", - "[Pre-Chorus]\n", - "Oh, but you can't see it, babe\n", - "Oh, you just see through it all\n", - "Oh, the girls turn green when they see you\n", - "Cause all of the boys start to call\n", - "\n", - "[Chorus]\n", - "!Franchesckaar!\n", - "They all love you\n", - "!Franchesckaar!\n", - "They all want you\n", - "!Franchesckaar!\n", - "Of course they do\n", - "!Franchesckaar!\n", - "Oh yes, it's true\n", - "!Franchesckaar!\n", - "They love your skin\n", - "!Franchesckaar!\n", - "They want your hair\n", - "!Franchesckaar!\n", - "They want your eyes\n", - "!Franchesckaar!\n", - "\n", - "[Verse 2]\n", - "You've got your blue eyes, pink lips, Ugg boots, and lots of passion\n", - "Acoustic, iPod, soft sounds, music fashion\n", - "Sloan style, neck scarves, clingy friends all around you\n", - "You're the icon, shine out, watch what you do\n", - "\n", - "[Pre-Chorus]\n", - "Oh, but you can't feel it, babe\n", - "The effect you have on all of them\n", - "Oh, everyone stops and stares\n", - "And then the boys begin to call\n", - "\n", - "[Chorus]\n", - "!Franchesckaar!\n", - "They all love you\n", - "!Franchesckaar!\n", - "They all want you\n", - "!Franchesckaar!\n", - "Of course they do\n", - "!Franchesckaar!\n", - "Oh yes, it's true\n", - "!Franchesckaar!\n", - "They love your skin\n", - "!Franchesckaar!\n", - "They want your hair\n", - "!Franchesckaar!\n", - "They want your eyes\n", - "!Franchesckaar!\n", - "I tell no lies\n", - "\n", - "[Chorus]\n", - "!Franchesckaar!\n", - "They all love you\n", - "!Franchesckaar!\n", - "They all want you\n", - "!Franchesckaar!\n", - "Of course they do\n", - "!Franchesckaar!\n", - "Oh yes, it's true\n", - "!Franchesckaar!\n", - "They love your skin\n", - "!Franchesckaar!\n", - "They want your hair\n", - "!Franchesckaar!\n", - "They want your eyes\n", - "!Franchesckaar!\n", - "I tell no lies\n", - "\n", - "[Bridge]\n", - "Cause they want you\n", - "And they need you\n", - "And they love you\n", - "And they crave you\n", - "Cause they want you\n", - "And they need you\n", - "And they love you, love you\n", - "\n", - "[Chorus]\n", - "!Franchesckaar!\n", - "They love you, yeah, yeah\n", - "They love you\n", - "!Franchesckaar!\n", - "They want you, yeah, yeah\n", - "They want you\n", - "!Franchesckaar!\n", - "They want your skin, your hair, your eyes\n", - "!Franchesckaar!\n", - "I don't tell no lies, no\n", - "\n", - "[Chorus]\n", - "!Franchesckaar!\n", - "They all love you\n", - "!Franchesckaar!\n", - "They all want you\n", - "!Franchesckaar!\n", - "Of course they do\n", - "!Franchesckaar!\n", - "Oh yes, it's true\n", - "!Franchesckaar!\n", - "They love your skin\n", - "!Franchesckaar!\n", - "They want your hair\n", - "!Franchesckaar!\n", - "They want your eyes\n", - "!Franchesckaar!\n", - "I tell no lies\n", - "\n", - "[Intro]\n", - "!UOY sevol nataS\n", - "Uoy... uoy... uoy... uoy...\n", - "\n", - "[Verse 1]\n", - "Mummy, she don't love you\n", - "'Cause you remind her of your dad\n", - "Teachers, they don't love you\n", - "They get paid to call you bad\n", - "Government, it don't love you\n", - "'Less it's facing re-election\n", - "Pop star, he don't love you\n", - "'Less you lick his gnarled erection\n", - "\n", - "[Chorus]\n", - "!UOY sevol nataS\n", - "\n", - "[Verse 2]\n", - "Well, the gun lobby says it loves you\n", - "But they say that guns don't kill\n", - "Christians say they love you\n", - "Only 'cause it's the Lord's will\n", - "Sadists say they love you\n", - "Only if you don't want them to\n", - "Masochists say they love you\n", - "If you promise to hate them too\n", - "\n", - "[Chorus]\n", - "!UOY sevol nataS\n", - "!UOY sevol nataS\n", - "\n", - "[Bridge]\n", - "Who loves you, pretty baby?\n", - "Who's gonna help you through the night?\n", - "Who loves you, pretty mumma?\n", - "Who's always there to make it right?\n", - "\n", - "[Verse 3]\n", - "There's only one person who loves you\n", - "Break the code and understand\n", - "Play all those records backwards\n", - "Of those heavy metal bands\n", - "Fuck me! Fuck me! Lord Jesus\n", - "When the temperature's minus fifty\n", - "You've never seen vomit so green\n", - "And your head's done the full 360\n", - "\n", - "[Intro]\n", - "!llmind put the loop on\n", - "\n", - "[Chorus]\n", - "No one told me that these shots start addin' up (No)\n", - "No one told me I should stop, that I've had enough\n", - "Now I'm a little fucked up, but I think I'll be okay\n", - "Either way, I'll be back, tomorrow's another day (Yeah, yeah), yeah\n", - "\n", - "[Verse 1]\n", - "Yeah, I'm nicked up and I'm bruised from the shit pumped through the news\n", - "Need my dick sucked before noon, need a twist up around two\n", - "If I give up then I lose, so I sit up, make a move\n", - "Need a drink up, make a tune, what I think of comes true\n", - "So let me focus\n", - "You talkin' way too much, it's midnight, let me roll this\n", - "Unless you tryna fuck, don't hit me up, you know this\n", - "I know it's harsh, but life is different now\n", - "You view me as a picture now, this isn't how I pictured now\n", - "Sun is shinin' in the studio and I don't got no windows\n", - "Those are just my angels, I'm surrounded, they just tip-toe\n", - "They might be subtle, but they're there\n", - "So I don't think it's fair to say that life is unfair, yeah\n", - "\n", - "[Chorus]\n", - "No one told me that these shots start addin' up (No)\n", - "No one told me I should stop, that I've had enough\n", - "Now I'm a little fucked up, but I think I'll be okay\n", - "Either way, I'll be back, tomorrow's another day (Yeah, yeah)\n", - "\n", - "[Verse 2]\n", - "Somewhere eatin' pasta, countin' lot of dollars\n", - "Movin' like a politician, don't approach me\n", - "I'm at the Kahala, smokin', eatin' guava\n", - "This is what you call the life, if you know me\n", - "Then you're right here smokin', eatin' guava, laughin' with me too (It's true, yeah)\n", - "I thought I was gonna die around the time that I made Zoo (It's true, yeah)\n", - "Yeah, yeah, I kept a smile plastered\n", - "Let's switch shoes, me and you, we gon' see who runs a mile faster\n", - "I bet it's me\n", - "You would think I'm sellin' dog food how they jealous of my pedigree\n", - "They shot me, I ain't rest in peace, I'm still standin', yeah\n", - "\n", - "[Chorus]\n", - "No one told me that these shots start addin' up (No)\n", - "No one told me I should stop, that I've had enough\n", - "Now I'm a little fucked up, but I think I'll be okay\n", - "Either way, I'll be back, tomorrow's another day (Yeah, yeah, yeah)\n", - "\n", - "[Intro: Sample]\n", - "[?]\n", - "\"[?] Hilltop Hoods\n", - "Are you ready for the Hilltop Hoods?\n", - "Say Hilltop\" \"Hilltop\"\n", - "\n", - "[Scratches: DJ Debris]\n", - "\"If you feel the vibe\"\n", - "\"That beautiful sound I'm loving\"\n", - "\"So if you feel the vibe\"\n", - "\"When you freak to the beat\"\n", - "\"Co-coming through with something brand new\"\n", - "\"One, two, uh, check it out\"\n", - "\"Once more\" \"What's up punk\"\n", - "\"Yeah, here we go-here we go\"\n", - "\"Battles, I win 'em 'cause I send 'em to hell when I begin 'em\n", - "Because I put it in 'em like a venom\"\n", - "\"He-Here we go again with the funky intro\"\n", - "\"Pressure, Pressure, Pressure, Pressure, Pressure, Pressure, Pressure\" \"MC\"\n", - "\n", - "[Verse 1: Pressure]\n", - "It's the next chapter, where's all my heads at?\n", - "You slept at the fact that we crept back to\n", - "Set factors straight, the only dead rappers\n", - "Are penned at the papes of no cred actors\n", - "Those haters, no you don't fade us\n", - "You don't know shit, so you're on a need to know basis\n", - "For those gracious folk with no status\n", - "I made this flow for you, no your own name is\n", - "Not a part of the bigger picture, listen it's the\n", - "Middle finger that you put up in a fixture\n", - "Life's a bitch and it'll hit ya, if I could pimp women\n", - "Like I do words I'd be living literature\n", - "Hip Hop's a circus act, this is absurd but fact\n", - "One critic or cynic for every that learned to rap\n", - "One lyric with gimmick for every with purpose that\n", - "Furthered rap culture round the earth and back\n", - "But some diss when I'm up in your face\n", - "You're a man of your word; you got nothing to say\n", - "I got respect for my scene and love for the place\n", - "Where I bled for my dreams and struggled for change\n", - "We're still striving on, we're still alive and strong\n", - "Right or wrong I'd still kill for where I belong\n", - "Insightful on the real deal when I write a song\n", - "Question, you still feel the vibe I'm on?\n", - "\n", - "[Chorus 1: Samples]\n", - "\"If you feel the vibe\"\n", - "(That beautiful sound I'm loving)\n", - "\"So if you feel the vibe\"\n", - "\"When you freak to the beat\"\n", - "\"So if you feel the vibe\"\n", - "\"That beautiful sound I'm loving\"\n", - "\"So if you feel the vibe\"\n", - "\"It's Mr. Suffa\" \"MC\"\n", - "\"Oi Suff, you in there?\"\n", - "\n", - "[Verse 2: Suffa]\n", - "I had the whole crowd like\n", - "\"Oh shit\", that's right I said it, I'll be like\n", - "Da, da, da, da, roll like the credits\n", - "Two of the best to ever edit poetics, it be the\n", - "Three headed beast from Obese come to set it\n", - "Off, Hilltop in the place, \"sir just calm down\"\n", - "Spit fire on stage and burn your bar down\n", - "You hear it bumping in clubs, you turn your car round\n", - "You hear it pumping in pubs, you buy the bar a round\n", - "Pump it up in your car; turn your car to a club\n", - "(Smash through the wall of a pub) and burn the bar down\n", - "(Just burn the bar down), like a disco inferno\n", - "(MCs are the only thing we burn though)\n", - "I'm the arsonist like Rakim is\n", - "So ask your kids who the number one artist is\n", - "Obese got the mad fucking roster while\n", - "(Your crew couldn't even) house a foster child!\n", - "You're flamboyant like Oscar Wilde, I gots to smile\n", - "When you panic on stage like you lost a child\n", - "\"Where's Benny?\", Benny's across the road watching Hilltop\n", - "'Cause they got the flow the hills have still got\n", - "Funk, the skills, the beats to get nice on\n", - "Don't need drugs, I get a buzz when the mic's on\n", - "So hit the floods Suffa like it with the lights on\n", - "Hilltop, we're what's left when the vibe's gone\n", - "\n", - "[Chorus 2: Samples]\n", - "\"If you feel the vibe\"\n", - "(That beautiful sound I'm loving)\n", - "\"So if you feel the vibe\"\n", - "\"When you freak to the beat\"\n", - "\"So if you feel the vibe\"\n", - "\"That beautiful sound I'm loving\"\n", - "\"So if you feel the vibe\"\n", - "\"R-O-U-G-H-E-R, Rougher\"\n", - "\n", - "[Verse 1]\n", - "\" I hold myself in contempt!\"\n", - "\n", - "Tearing the hair off a black baboon's skull\n", - "Is a bitch with some four thousand names\n", - "Vomiting lies through a theremin throat\n", - "As some businessmen pick at her brains\n", - "Pulls back skinny lips to reveal a proboscis\n", - "Seems Seth Brundle's at it again\n", - "Tears pages from spines as she judges the cover\n", - "And shamelessly spoils the end\n", - "\n", - "[Verse 2]\n", - "Blood vessels drying and curling inside are\n", - "Unfurling from out of her wrists\n", - "Well, she wrings out a snake and collects all its poison\n", - "Intending on learning to hiss\n", - "Foams at the mouth with a head full of acid\n", - "And giving some poor illness the blame\n", - "Knocking the pieces the fuck off the chessboard\n", - "Insisting that she's won the game\n", - "\n", - "[Chorus]\n", - "So all that I see absolute entropy\n", - "As the chemical bonds fall apart\n", - "Well it seems she broke me\n", - "But I swear she could not break my heart\n", - "She could not break my heart, oh lord!\n", - "\n", - "[Verse 3]\n", - "Makes up excuses for throbbing black bruises\n", - "And uses them to her advantage\n", - "Never came down from her last trip on Jesus\n", - "Disease is her primary language\n", - "Garbled and gruesome, her words so absurd\n", - "Like I heard a transmissions from Apollo 13\n", - "No apology, I request misery\n", - "So no rest till I've twisted her chest round my knee\n", - "\n", - "[Bridge]\n", - "So squeal like a trolley wheel, cry like a baby\n", - "With autism strapped to a ceiling fan\n", - "Soil your visage with mucus and\n", - "Twisting of features unable to stand\n", - "Buckle your knees looking up at me\n", - "And beg me to spare thee the back of my hand\n", - "For the sake of humanity, die of your blight\n", - "We're blessed you're barren as Mojave sands\n", - "\n", - "[Chorus]\n", - "So all that I see absolute entropy\n", - "As the chemical bonds fall apart\n", - "Well it seems she broke me\n", - "But I swear she could not break my heart\n", - "\n", - "[Outro]\n", - "So all that I see absolute entropy\n", - "As the chemical bonds fall apart\n", - "Well it seems she broke me\n", - "But I swear she can go fucking die\n", - "You can go fucking die (Get cancer)\n", - "Go fucking die (Get AIDS and)\n", - "Go fucking die (Kill yourself)\n", - "Kill yourself and go die!\n", - "Ugh!\n", - "\n", - "\"Absolutely reprehensible behavior\"\n", - "\n", - "[Intro]\n", - "\"[?] Who's this dude looking like he [?]\"\n", - "\"They call him Cool.\"\n", - "\"Who?\"\n", - "\"Mr. Cool.\"\n", - "\"[?]\"\n", - "\n", - "[Verse 1]\n", - "They call me Cool\n", - "Because I got more glide in my stride and more dip in my hip\n", - "I wear a mean dark pair of shades\n", - "And you can't see my eyes unless my head is bent\n", - "\n", - "[Chorus]\n", - "No jive, give me five\n", - "They call me Cool\n", - "Mr. Cool\n", - "\n", - "[Verse 2]\n", - "I drive a long white big\n", - "White on white in white, you dig?\n", - "Now girls, I don't mean to be an agitator\n", - "But when I get moving I'm a smooth operator\n", - "\n", - "[Chorus]\n", - "\n", - "[Verse 3]\n", - "I used to fool around with a presidential lady\n", - "I used to call her Sister Sadie\n", - "Now don't y'all go and [?]\n", - "Because you know darn well that I am great\n", - "\n", - "[Chorus]\n", - "\n", - "[Verse 4]\n", - "Now I was the first man on the moon, in a satellite\n", - "If y'all wondering why y'all didn't see me, it's because I left at night\n", - "And when I planted my flag and made my claim\n", - "I turned to the moonfolks and hollered, \"What's my name?\"\n", - "And they called me Cool\n", - "Mr. Cool\n", - "\n", - "[Outro]\n", - "(Oh, Mr. Cool!)\n", - "(Mr. Cool!)\n", - "They call me Cool\n", - "Hey I ain't got time right now, I'll see you tonight maybe\n", - "(Oh, you're so cool!)\n", - "Hey! They call me cool\n", - "(Hi, Mr. Cool!)\n", - "(Hi, baby, you're so cool!)\n", - "\n", - "[Intro]\n", - "\"[?]\" \"Over the castle on the hill\"\n", - "\n", - "[Verse 1]\n", - "When I was six years old I broke my leg\n", - "I was running from my brother and his friends\n", - "And tasted the sweet perfume of the mountain grass I rolled down\n", - "I was younger then, take me back\n", - "\n", - "[Chorus 1]\n", - "I'm on my way, driving at 90\n", - "Down those country lanes, singing to \"Tiny Dancer\"\n", - "And I miss the way you make me feel, and it's real\n", - "And we watched the sun—\n", - "\n", - "[Breakdown]\n", - "Over the castle on the hill\n", - "Over the castle on the hill\n", - "\n", - "[Verse 2]\n", - "Fifteen years old and smoking hand-rolled cigarettes\n", - "Running from the law through the backfields and getting drunk with my friends\n", - "Had my first kiss on a Friday night, I don't reckon that I did it right\n", - "But I was younger then, take me back\n", - "\n", - "[Chorus 1]\n", - "I'm on my way, driving at 90\n", - "Down those country lanes, singing to \"Tiny Dancer\"\n", - "And I miss the way you make me feel, and it's real\n", - "And we watched the sun—\n", - "\n", - "[Breakdown]\n", - "Over the castle on the hill\n", - "Over the castle on the hill\n", - "\n", - "[Bridge]\n", - "One friend left to sell clothes\n", - "And one works down by the coast\n", - "One had two kids but lives alone\n", - "One's brother overdosed\n", - "One's already on his second wife\n", - "One's just barely getting by\n", - "But these people raised me\n", - "And I can't wait to go home\n", - "\n", - "[Chorus 2]\n", - "And I'm on my way, I still remember\n", - "These old country lanes\n", - "When we did not know the answers\n", - "And I miss the way you make me feel, it's real\n", - "When we watched the sun—\n", - "\n", - "[Breakdown]\n", - "Over the castle on the hill\n", - "Over the castle on the hill\n", - "\n", - "[Outro]\n", - "Over the castle on the hill\n", - "Over the castle on the hill\n", - "\n", - "[Excerpt 1]\n", - "\"'A storm is coming,' Frank says. 'A storm that will swallow the children. And I will deliver them from the kingdom of pain. I'll deliver the children back to their doorsteps. I'll send the monsters back to the underground. I'll send them back to a place where no one else can see them except for me'...\"\n", - "\n", - "[Verse 1]\n", - "A tornado flew around my room before you came\n", - "Excuse the mess it made, it usually doesn't rain\n", - "In Southern California, much like Arizona\n", - "My eyes don't shed tears, but boy they pour when...\n", - "\n", - "[Pre-Chorus]\n", - "I'm thinking 'bout you (Ooh no, no, no)\n", - "I've been thinking 'bout you (You know, know, know)\n", - "I've been thinking 'bout you\n", - "Do you think about me still? Do ya, do ya?\n", - "\n", - "[Chorus]\n", - "Or do you not think so far ahead?\n", - "'Cause I been thinking bout forever, ooh\n", - "Or do you not think so far ahead?\n", - "'Cause I been thinking 'bout forever, ooh\n", - "\n", - "[Verse 2]\n", - "No, I don't like you, I just thought you were cool enough to kick it\n", - "Got a beach house I could sell you in Idaho, since you think\n", - "I don't love you I just thought you were cute, that's why I kissed you\n", - "Got a fighter jet, I don't get to fly it though I'm lying down\n", - "\n", - "[Pre-Chorus]\n", - "I'm thinking 'bout you (Ooh no, no, no)\n", - "I've been thinking 'bout you (You know, know, know)\n", - "I've been thinking 'bout you\n", - "Do you think about me still? Do ya, do ya?\n", - "\n", - "[Chorus]\n", - "Or do you not think so far ahead?\n", - "'Cause I been thinking bout forever, ooh\n", - "Or do you not think so far ahead?\n", - "'Cause I been thinking 'bout forever, ooh\n", - "\n", - "[Bridge]\n", - "Yes of course I remember, how could I forget how you feel?\n", - "You know you were my first time, a new feel\n", - "It will never get old, not in my soul, not in my spirit, keep it alive\n", - "We'll go down this road 'til it turns from color to black and white, ooh\n", - "\n", - "[Chorus]\n", - "Or do you not think so far ahead?\n", - "'Cause I been thinking bout forever, ooh\n", - "Or do you not think so far ahead?\n", - "'Cause I been thinking 'bout forever, ooh\n", - "\n", - "[Excerpt 2]\n", - "[Lady 1]: We're all so proud of you\n", - "[Lady 2]: Proud, proud, proud, proud, proud\n", - "[Lady 3]: What are you going to do now?\n", - "[Ben]: I was going to go upstairs for a minute\n", - "[Lady 3]: No, I meant with your future\n", - "[Lady 2]: Your life\n", - "[Ben]: Well, that's a little hard to say\n", - "[Mr. McQuire]: Ben!\n", - "[Ben]: (to the ladies) Excuse me. (He turns around) Mr. McQuire\n", - "[Mr. McQuire]: Ben\n", - "\n", - "[Intro: Peter Gabriel]\n", - "\"'Games Without Frontiers’, 'Jeux Sans Frontières', ’Spiele Ohne Grenzen', 'Jocs Sense Fronteres'.\"\n", - "\n", - "[Interlude]\n", - "\n", - "[Verse 1: Peter Gabriel]\n", - "Hans plays with Lotte, Lotte plays with Jane\n", - "Jane plays with Willi, Willi is happy again\n", - "Suki plays with Leo, Sacha plays with Britt\n", - "Adolf builds a bonfire, Enrico plays with it\n", - "\n", - "[Pre-Chorus: Peter Gabriel]\n", - "Whistling tunes, we hide in the dunes by the seaside\n", - "Whistling tunes, we piss on the goons in the jungle\n", - "It's a knockout\n", - "\n", - "[Chorus: Peter Gabriel & Audience]\n", - "If looks could kill, they probably will\n", - "Games without frontiers, war without tears\n", - "If looks could kill, they probably will\n", - "Games without frontiers, war without tears\n", - "Games without frontiers, war without tears\n", - "\n", - "[Interlude]\n", - "\n", - "[Verse 2: Peter Gabriel]\n", - "Andre has a red flag, Chiang Ching's is blue\n", - "They all have hills to fly them on except for Lin Tai Yu\n", - "Dressing up in costumes, playing silly games\n", - "Hiding out in treetops, shouting out rude names\n", - "\n", - "[Pre-Chorus: Peter Gabriel]\n", - "Whistling tunes, we hide in the dunes by the seaside\n", - "Whistling tunes, we piss on the goons in the jungle\n", - "It's a knockout\n", - "\n", - "[Chorus: Peter Gabriel & Audience]\n", - "If looks could kill, they probably will\n", - "Games without frontiers, war without tears\n", - "If looks could kill, they probably will\n", - "Games without frontiers, war without tears\n", - "Games without frontiers, war without tears\n", - "\n", - "[Interlude]\n", - "\n", - "[Outro: Peter Gabriel]\n", - "Jeux sans frontières\n", - "Jeux sans frontières\n", - "Jeux sans frontières, your turn!\n", - "Jeux sans frontières\n", - "Jeux sans frontières\n", - "Jeux sans frontières\n", - "Jeux sans frontières, hey!\n", - "Jeux sans frontières\n", - "No more war!\n", - "No more!\n", - "No more!\n", - "No more!\n", - "No more!\n", - "No more!\n", - "No more!\n", - "No more war!\n", - "\n", - "[Intro: spoken]\n", - "\"'It was a slight on my honor, so he deserved it\n", - "'But we're talking about the most brilliant mind this world's ever seen'\"\n", - "\n", - "[Verse 1]\n", - "I've got demons running round in my head\n", - "And they feed on insecurities I have\n", - "Won't you lay your healing hands on my chest?\n", - "Let your ritual clean\n", - "\n", - "[Pre-Chorus]\n", - "Soak the ropes with your holy water\n", - "Tie me down as you read out the words\n", - "\n", - "[Chorus]\n", - "Set me free from my jealousy\n", - "Won't you exorcise my mind?\n", - "Won't you exorcise my mind?\n", - "I want to be free as I'll ever be\n", - "Exorcise my mind\n", - "Help me exorcise my mind\n", - "\n", - "[Verse 2]\n", - "Desdemona, won't you liberate me?\n", - "When I'm haunted by your ancient history\n", - "Close these green eyes and watch over as I sleep\n", - "Through my darkest of dreams\n", - "\n", - "[Pre-Chorus]\n", - "Be the power to compel me\n", - "Hold me closer than anyone before\n", - "\n", - "[Chorus]\n", - "Set me free from my jealousy\n", - "Won't you exorcise my mind?\n", - "Won't you exorcise my mind?\n", - "I want to be free as I'll ever be\n", - "Exorcise my mind\n", - "Help me exorcise my mind\n", - "\n", - "[Bridge]\n", - "I should be thinking 'bout nothing else when I'm with you-ou\n", - "With you-ou, ohohoh\n", - "I should be thinking 'bout nothing else when I'm with you-ou\n", - "With you-ou, ohohoh\n", - "\n", - "[Intermezzo: spoken]\n", - "\"Your mind exists somewhere altogether different; it lives in a world where feelings simply cannot be defined by words\"\n", - "\n", - "[Chorus]\n", - "Set me free from my jealousy\n", - "Won't you exorcise my mind?\n", - "Won't you exorcise my mind?\n", - "I want to be free as I'll ever be\n", - "Exorcise my mind\n", - "Help me exorcise my mind\n", - "\n", - "Help me exorcise my mind\n", - "Won't you exorcise my mind?\n", - "\n", - "\"'You Fucked Up'....by Ween.\"\n", - "\n", - "[Verse 1]\n", - "You fucked up, you bitch\n", - "You really fucked up\n", - "You fucked up\n", - "You fucking Nazi whore\n", - "\n", - "[Chorus]\n", - "Well you dicked me over\n", - "But now you'll pay\n", - "You fucked up\n", - "Aaaahhh!\n", - "\n", - "[Verse 2]\n", - "You fucked up, you bitch\n", - "You really fucked up\n", - "You fucked up\n", - "You slimy little shit bitch fuck\n", - "\n", - "[Chorus]\n", - "Well you dicked me over\n", - "But now you'll pay\n", - "You fucked up\n", - "Aaaahhh!\n", - "\n", - "[Intro (spoken)]\n", - "\"'ere, Leroy! A-where you a-run go so?\"\n", - "\"Well, I'm hungry, you know, Macka B; I'm going for a Big Mac.\"\n", - "\n", - "\"'ere, Leroy! A-where you a-run go so?\"\n", - "\"Well, I'm hungry, you know, Macka B; I'm going for a Big Mac. Why aren't you comin'?\"\n", - "\"Fi wha'? A-mi ha' ackee and saltfish and dumplin' and banana at yard\"\n", - "\n", - "[Chorus]\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "\n", - "[Verse 1]\n", - "Now tell mi\n", - "Why nuh dead\n", - "Tell mi why he nuh dead\n", - "Why nuh dead fi make wi rushin' a death\n", - "\n", - "Why nuh dead\n", - "Tell mi why he nuh dead\n", - "Why nuh dead fi make wi rushin' a death\n", - "\n", - "What do we break for\n", - "What do we [?]\n", - "What do we nyam\n", - "What do we so, whassup?\n", - "What do we food down at di dumplin' shop\n", - "That make so much Black youth gwaan go rush a Big Mac\n", - "Black youth outside McDonald like a-bees in a swarm\n", - "Comin' like they waiting outside a pig farm\n", - "Mi never go McDonald from di gate at mi barn\n", - "If mi hungry and mi pass McDonald mi stay calm\n", - "To the dumplin' shop or to mi yard mi gwaan\n", - "Mi prefer get mi food from a' African\n", - "Well, mi nuh eat no meat I am a vegetarian\n", - "So, McDonald a' di last place mi done eat from\n", - "\n", - "Why nuh dead\n", - "Tell mi why he nuh dead\n", - "Why nuh dead fi make wi rushin' a death\n", - "\n", - "Why nuh dead\n", - "Tell mi why he nuh dead\n", - "Why nuh dead fi make wi rushin' a death\n", - "\n", - "McDonald milkshake, man, it don't have a use\n", - "When you stand it up next to a pineapple juice\n", - "Big Mac and chips, man, it seem foolish\n", - "When you stand it up next to ackee and saltfish\n", - "Dem hamburger, Jah man, it [?]\n", - "When you stand it up next to banana frita\n", - "Dem beef burger, which they make with cheese\n", - "Could a' never touch fi wi rice and peas\n", - "\n", - "[Chorus]\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "\n", - "[Verse 2]\n", - "'Cause old McDonald's got some shops\n", - "Ee-ay-ee-ay-o\n", - "And a whole heap a' Black youth about sit up\n", - "Ee-ay-ee-ay-o\n", - "With a Big Mac here, an' some pork fat there\n", - "Here a pig, could be yuh arse\n", - "Food no good, it too fast!\n", - "Old McDonald's got some shops\n", - "Ee-ay-ee-ay-o\n", - "\n", - "Hol' up your hand if yuh love dumplin'\n", - "Carrot juice, or caramel puddin'\n", - "Rice and peas every Sunday\n", - "I warm it up again upon a Monday\n", - "So\n", - "\n", - "[Chorus]\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "\n", - "[Verse 3]\n", - "Come in here over under and that place boycott\n", - "[?], look cool [?] and dreadlock\n", - "Nuh can trust people nah rush i' Big Mac\n", - "If yuh listen carefully\n", - "Then mi will tell you what's what\n", - "When [?] scare di youth man\n", - "They nuh want shop\n", - "And then get hungry\n", - "Have a guess where dem stop\n", - "Dem a-nyam a Big Mac until them belly full up\n", - "If it was a Caribbean shop they couldn't do that\n", - "So [?] haffi get boycott\n", - "\n", - "But some youth man couldn't do that\n", - "Then they a-talk 'bout they want deal with a [?] man\n", - "And they couldn't even boycott a shop\n", - "So somebody's gonna get a camera\n", - "And go down to a town centre\n", - "Watch all the Blacks begin the boycott\n", - "And then take their picture\n", - "So\n", - "\n", - "[Chorus]\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "Uh-uh\n", - "\n", - "Mi nuh want no Big Mac\n", - "Mi nuh want no Big Mac\n", - "\n", - "[Verse 4]\n", - "You haffi support your own\n", - "You haffi support your own\n", - "Support your own an' you'll always be down\n", - "\n", - "Support your own\n", - "You haffi support your own\n", - "Support your own an' you'll always be down\n", - "\n", - "Look 'pon di Asian\n", - "Look 'pon di Indian\n", - "You nuh say, \"See, dey rule England\"\n", - "But dey wouldn't get nowhere\n", - "Inna this island\n", - "If not fi the support of their own nation\n", - "So\n", - "\n", - "[Chorus]\n", - "We nuh want no Big Mac\n", - "We nuh want no Big Mac\n", - "Uh-uh\n", - "\n", - "Wi don't need no Big Mac\n", - "Wi don't need no Big Mac\n", - "Uh-uh\n", - "\n", - "Wi don't need no Big Mac\n", - "Wi don't need no Big Mac\n", - "Uh-uh\n", - "\n", - "Wi don't need no Big Mac\n", - "Wi don't need no Big Mac\n", - "\n", - "[Intro: DJ Spin One cuts]\n", - "\"'spect the unexpected\" -] Method Man\n", - "\n", - "[Chorus: Q-Unique]\n", - "Respect the unexpected\n", - "Press play to my cassette when yours gets ejected\n", - "This money in this rap got some brothers livin' hectic\n", - "Distracted while they acted I snuck in undetected\n", - "Quaternarys connected\n", - "----\n", - "Respect the unexpected\n", - "Press play to my cassette when yours gets ejected\n", - "This money in this rap got some sisters gettin' naked\n", - "Distracted while they acted I snuck in undetected\n", - "Quaternarys connected\n", - "\n", - "[Verse One: Jise One]\n", - "Expect that I selected molested rhymes aggressive\n", - "Impetiuos notebook medic couldn't reconstruct the relic\n", - "Simplistical explanation for me to rock the mic\n", - "Incredible, incombatible, speak in parables like neophytes\n", - "Coincide tight with might of urban joust\n", - "Gladiator, illiminator and every day common incinirator\n", - "Perpetraders get tapered zoned to fire frequency\n", - "Blessed by predecessors so I've grown to mass fluidity\n", - "Vast impurities get flushed in lavatories\n", - "Minority flashy stories don't cut the chase it lures me\n", - "Poor me! Because I used to be a thug\n", - "I should've elaborated produced rotation bugs\n", - "\n", - "[Verse Two: Q-Unique]\n", - "I close the open mic and lock it with key elements of everlasting phrases\n", - "It's the way I flow with grace that amazes\n", - "All praises due to Q who do true\n", - "You don't, cannot, shouldn't you\n", - "The little engine that couldn't\n", - "Me the stop that wouldn't\n", - "You concerned with material\n", - "Me the rebel allie to crush the imperial, burnin' down your ministerial\n", - "You the 15-minutes-of-fame rap act\n", - "Me the heavy handed MC to smack track\n", - "You the Mr. trapped-by-wack-contract\n", - "Me the black flag to kill on contact\n", - "You the dead roach, me the head coach\n", - "You player ready for retirement\n", - "Me better for the environment\n", - "You better think, me better ink\n", - "Get her any wetter than a sink, brother let her drink\n", - "\n", - "(Chorus)\n", - "\n", - "[Verse Three: Jise One]\n", - "Watch me give it a shrug, I rather fondle impairment\n", - "Awareness leaving the bareness of my culture stand in arraignment\n", - "I'm level basement incarcerated tracks to my advanced\n", - "Romance dig in your earlobe enhanced rivoting soul stance\n", - "Every day's my last chance, tranquilizing the present\n", - "Utilizing the past the future sharpened reception\n", - "No acceptance applicants, never extradited wackness\n", - "Practice malice inbalance, don't silence my code of challenge\n", - "\n", - "[Verse Four: Q-Unique]\n", - "The Lord is my shepherd, I shall not want to contaminate\n", - "Nah.. none of that, I'm stickin' well within my habitat\n", - "Got the hip for all the hops, bottom out until the top of the top tip hits with grit shit\n", - "Then I'ma shift into high gear, my year, every year\n", - "Let me hear someone near cheer\n", - "Q blaze that and I'ma lose it like a needle in a haystack\n", - "And payback like installment plans my fist twist unlisted lines\n", - "You can't call it man, my pen ink.. amazes the page with engraved phrases\n", - "And raise to \"hey\" stages and put an end to the weak/week like paid wages\n", - "You left behind ass crack\n", - "I bounced from ASCAP and linked with BMI\n", - "'cause a brothers mind's incredible, now you seeing why..\n", - "Q get the \"Unique\" definition, the one in the preminition\n", - "Said to lead the underground into victory over the evil industry\n", - "Fade outs and rollin' credits couldn't finish me\n", - "Never mind fine wines, I speak prime lines to my kinds\n", - "Deadin' the 100 watt spotlight with 1000 drop mind shines\n", - "\n", - "(Chorus)\n", - "\n", - "\"(Damn! Rapid Firing Squad) Back at your ass again, nigga\n", - "(First Family)\n", - "World's Famous. (Firing Squad) Look here.\"\n", - "\n", - "Chorus: Lil' Fame (Billy Danze)\n", - "\n", - "Its a (cold world) show nuf\n", - "Its on, its a (cold world)so bitch nigga dress warm\n", - "Slum ass wanna be hard ass nigga\n", - "Coldball butter-soft lard ass nigga\n", - "*repeat*\n", - "\n", - "Verse One: Billy Danze\n", - "\n", - "Niggas waitin for my shit to drop\n", - "Because I show love to the true thugs on the back lot\n", - "Post up at the biggest crack spots\n", - "Raised around killers so eventually I popped shots\n", - "(Make em feel your real) Niggas stop playin on the real\n", - "Fuck around you get your death wish from Bill(D-yea)\n", - "This cat sucker got the wrong idea\n", - "(He came a long damn way) How the hell you think I got here?\n", - "I learned to survive with illegal guns that know how to hide\n", - "Homicide ties, baby, yea, I dominates what you tryin to do\n", - "I wear my hat broke down and play the war when I'm sliding through\n", - "I gotta crew (Original Hilfiger)\n", - "Plus triggers and some of Brooklyn's illest niggers\n", - "(Damn) I'm so deep in the game\n", - "I keep in touch with myself so I can feel the real niggas pain\n", - "(I've been ya) Quick, I think there's gonna be conflict\n", - "If I figure ya freakin the flip (Ya punk bitch!)\n", - "Leavin ya blind, thugs of my kind\n", - "Will dismantle your mind and shatter your damn spine It's a...\n", - "\n", - "Chorus\n", - "\n", - "Verse 2: Lil' Fame\n", - "\n", - "(Time flies) Slugs fly, people die (Damn)\n", - "Guerilla warfare all across the land\n", - "If they break the code of silence (leave em all dead)\n", - "And fools take a fall when I call (code red)\n", - "More people travellin, like immigrants\n", - "But on the low with the most dominant (most infinite)\n", - "Lost in your track so I act innocent\n", - "But on the low, I can act real motherfucking ignorant\n", - "Raised by an army of THUGS\n", - "Who done it all from the smartest to the dumbest\n", - "And I, happen to be the youngest\n", - "Twenty-two years of being brave as a lion\n", - "And that's, with or without the iron\n", - "Fools wanna (STRESS YA), then they wanna (TEST YA)\n", - "Then you gotta get your steel (Deal with the pressure)\n", - "I ain't gotta teach a fucking family to bury me\n", - "You think your bullshit worry me?\n", - "Aiyo, I move quickly, but come across so humble\n", - "Fools be on point when its time for the rumble\n", - "W-O-M-A-C-K, (hit ya)\n", - "With the game plan that will twist ya, (mista)\n", - "\n", - "Chorus\n", - "\n", - "Verse 3\n", - "\n", - "Billy Danze: We gonna put this bullshit to a cease\n", - "Hollering about peace; you in the belly of the fucking beast\n", - "I figured it out from the start\n", - "And since I laid my mother to rest\n", - "I been blessed with these cold heart\n", - "(If it ain't our beef) Don't touch\n", - "(If he's against us) Fuck him, (If he ain't with us) Fuck him\n", - "(We be aight, nigga) That's right, nigga\n", - "(We tight, nigga) What's more\n", - "(When we don't like niggas) We'll invite niggas to war\n", - "\n", - "Lil' Fame: And believe we've got lead to give em\n", - "Thugs that perform massacres, like nazism\n", - "This living mechanism, study living to the end\n", - "Discombobulation, then I'm Gone With the Wind (begin)\n", - "My men been, through hard times\n", - "That's what you find when you don't do my family all kind\n", - "(Make moves) I'mma play the background when its gat time\n", - "I'mma hit you with the flatline\n", - "\n", - "Chorus\n", - "\n", - "*spoken over Fame yelling:*\n", - "Yeah, I'm done. You motherfuckers said you wanted to see me, right?\n", - "See me now, motherfuckers. See me now! I told you right? Bow! Bow!\n", - "Motherfuckers. I told you cold world motherfucker. Bow, motherfucker!\n", - "What you gotta say now, motherfucker? You a bad motherfucker?\n", - "Yeah, Hell yeah. Here I am now. Here I am! Oh, you wanna run?\n", - "Bow, motherfucker! I'll see you at your funeral motherfucker\n", - "You better have your black suit on. Yeah (First Fam, nigga, for life)\n", - "Motherfucker. Aiyo, come on son\n", - "*talkin fades*\n", - "\n", - "\"(Intro)\n", - "Mmm yeah\n", - "Tell me that you like it\n", - "Oh yeah, yeah\n", - "(Woo, let's see if you remember this one)\n", - "Do I?!\n", - "Oh, now I have to go there\n", - "Oohh\n", - "Mmm yeah\n", - "Let me show you just how much I know this record\n", - "\n", - "Verse 1:\n", - "You knew you had me\n", - "With your sensuous charm\n", - "You looked so alarmed\n", - "As I walked on by\n", - "In awesome wonder\n", - "You had to know why I did not respond\n", - "To carry on\n", - "\n", - "Chorus:\n", - "Love me in a special way\n", - "What more can I say?\n", - "Love me now\n", - "Love me in a special way\n", - "What more can I say?\n", - "Love me now\n", - "\n", - "Verse 2:\n", - "Love me now\n", - "Cuz I'm special\n", - "Not the average kind\n", - "Who'd accept any line\n", - "That sounds good\n", - "So reach into your chain of thoughts\n", - "Try to find something new\n", - "What worked so well for you before\n", - "For me, it just won't do, no\n", - "\n", - "Chorus:\n", - "Love me in a special way\n", - "What more can I say?\n", - "Love me now\n", - "Love me in a special way\n", - "What more can I say?\n", - "Love me now\n", - "\n", - "Bridge:\n", - "Ooh ooh\n", - "Oh yeah yeah\n", - "Mmm hmm\n", - "So reach into your chain of thoughts\n", - "Try to find something new\n", - "Cause what worked so well for you before\n", - "For me, it just won't do, no no\n", - "\n", - "Chorus:\n", - "Love me in a special way\n", - "What more can I say?\n", - "Love me now\n", - "Love me in a special way\n", - "What more can I say?\n", - "Love me now\n", - "\n", - "Love me in a special way\n", - "What more can I say?\n", - "Love me now\n", - "Love me in a special way\n", - "What more can I say?\n", - "Love me now\n", - "\n", - "Love me in a special way\n", - "Love me everyday\n", - "What more can I say?\n", - "Just love me now\n", - "\n", - "[Intro]\n", - "\"(Let's try this sound for, for a bit)\n", - "Boop-boo-boo-boo-boop\n", - "(Okay)\n", - "Doo-doo-doo-doo-doo, da-dum-dum\n", - "Boop-boo-boo-boo-boop\n", - "(Okay)\n", - "Ba-da-doo-doo-doo-doo\n", - "(Mmm-hmm)\"\n", - "\n", - "[Verse 1]\n", - "Would you like to come along\n", - "We can sing a simple song\n", - "If you want to name the tune, you're invited\n", - "I'm so glad that you're my friend\n", - "Did I say I think we'll win?\n", - "Though the fight is so often one-sided\n", - "\n", - "[Verse 2]\n", - "Can we sing that part again\n", - "All about how we will win\n", - "Gotta know how in the end nothin's dyin'\n", - "And the ribbon in the sky\n", - "Is the vision in your eye\n", - "Let's get lost in, stay lost and refine\n", - "The art of flyin'\n", - "\n", - "[Chorus]\n", - "We'll be 10 K high over the mountain\n", - "Over the river\n", - "We'll be 10 K high trusting our dream\n", - "To forever\n", - "We'll be 10 K high over the mountain\n", - "Over the river\n", - "We'll be 10 K high in every dream\n", - "Makin' heaven\n", - "\n", - "[Verse 3]\n", - "What a day for breaking through\n", - "What a day for seeing you\n", - "Do you remember how we said\n", - "Nothin's dyin'?\n", - "And the love of which I sing\n", - "Is like the phoenix on the wing\n", - "We started, we parted, we found\n", - "We're fond of flyin'\n", - "\n", - "[Chorus]\n", - "We'll be 10 K high over the mountain\n", - "Over the river\n", - "We'll be 10 K high in every dream\n", - "Makin' heaven\n", - "\n", - "[Bridge]\n", - "Speaking of warring nations\n", - "Talk of broken heart relations\n", - "Set me down in revelation's light\n", - "So that I might\n", - "That I might find a way to tell you true\n", - "Miracles redeeming you\n", - "\n", - "[Scat]\n", - "\n", - "[Outro]\n", - "We'll be 10 K high over the mountain\n", - "Over the river\n", - "We'll be 10 K high trusting our dream\n", - "To forever\n", - "We'll be 10 K high over the mountain\n", - "Over the river\n", - "We'll be 10 K high trusting our dream\n", - "Makin' heaven\n", - "We'll be 10 K high over the mountain\n", - "Over the river\n", - "We'll be 10 K high trusting our dream\n", - "To forever\n", - "10 K high\n", - "\n", - "[Intro]\n", - "\"[?], fellas, watch the beardie.\"\n", - "\n", - "[Verse 1]\n", - "My camera sees things my eyes can't see\n", - "I have it focused from here to eternity\n", - "Catch the moment, catch your breath, catch the light, let me freeze your frame\n", - "Synchronize machine and brain\n", - "Hey, don't mind me, I'm having my picture taken (Having it taken)\n", - "\n", - "[Verse 2]\n", - "I can choose each day who I want to be\n", - "And you can choose each day who you want to see\n", - "We'll pan the rounds and we'll scan the crowd of all those distant scenes\n", - "Immortalize a slice of time\n", - "But don't mind me, I'm having my picture taken\n", - "\n", - "[Pre-Chorus]\n", - "(Flash) Another instant in an instamatic\n", - "(Click) Another reflex set on automatic\n", - "(Snap) Another moment of the life dramatic\n", - "You really should have been there it was so fantastic\n", - "So fantastic, so fantastic\n", - "\n", - "[Chorus]\n", - "Ooh, having my picture taken\n", - "Ooh, having my picture taken\n", - "Ooh, I'm having my picture taken\n", - "Ooh, having my picture taken (Having it taken)\n", - "\n", - "[Guitar Solo]\n", - "\n", - "[Pre-Chorus]\n", - "(Flash) Another instant in an instamatic\n", - "(Click) Another reflex set on automatic\n", - "(Snap) Another moment of the life dramatic\n", - "You really should have been there it was so fantastic\n", - "So fantastic, so fantastic\n", - "\n", - "[Chorus]\n", - "Ooh, I'm having my picture taken\n", - "Ooh, having my picture taken (Having my picture taken)\n", - "Ooh, I'm having my picture taken (Having my picture taken)\n", - "Ooh, having my picture taken (Having my picture taken)\n", - "\n", - "[Outro]\n", - "\"Oooh, magic, huh? Best I've ever done.\"\n", - "\n", - "[Intro]\n", - "\"- Warum spielst du nicht mit deinen Freunden?\n", - "- Die sind alle tot.\"\n", - "\n", - "[Verse 1]\n", - "This is the right time\n", - "To say hello\n", - "My name is cancer\n", - "I never go\n", - "I'm gonna hurt you\n", - "I am the thorn\n", - "That makes you wish you\n", - "Were never born\n", - "\n", - "[Pre-Chorus]\n", - "Don't try so hard denying me\n", - "You better start accepting me\n", - "Don't fall apart believe in me\n", - "Open your heart give in to me, baby\n", - "\n", - "[Chorus]\n", - "Say can you feel me?!\n", - "Say can you feel me?!\n", - "Say can you feel me?!\n", - "Say can you feel me?!\n", - "\n", - "[Verse 2]\n", - "I'll turn your head in\n", - "A fucking hole\n", - "I'll rip your mind out\n", - "I'll burn your soul\n", - "I am the anguish\n", - "Inside your brain\n", - "I'll fill you up with\n", - "Eternal pain\n", - "\n", - "[Pre-Chorus]\n", - "Don't try so hard denying me\n", - "You better start accepting me\n", - "Don't fall apart believe in me\n", - "Open your heart give in to me, baby\n", - "\n", - "[Chorus]\n", - "Say can you feel me?!\n", - "Say can you feel me?!\n", - "Say can you feel me?!\n", - "Say can you feel me?!\n", - "\n", - "[Pre-Chorus]\n", - "Don't try so hard denying me\n", - "You better start accepting me\n", - "Don't fall apart believe in me\n", - "Open your heart give in to me, baby\n", - "\n", - "[Chorus]\n", - "Say can you feel me?!\n", - "Say can you feel me?!\n", - "Say can you feel me?!\n", - "Say can you feel me?!\n", - "Say can you feel me?! (Turn to me!)\n", - "Say can you feel me?! (Turn to me!)\n", - "Say can you feel me?! (Turn to me!)\n", - "Say can you feel me?!\n", - "\n", - "Say can you feel me?! (Turn to me!)\n", - "Say can you feel me?! (Turn to me!)\n", - "Say can you feel me?! (Turn to me!)\n", - "Say can you feel me?!\n", - "\n", - "[Outro]\n", - "\"Sag's mir. Sag's mir. Sag's mir. Sag's mir. Sag's mir. Sag's mir. Sag's mir. Sag's mir.\"\n", - "\n", - "[Intro: Sample from Star Trek]\n", - "\"- What did you do?\"\n", - "\"- I was unprepared for his attack. I instinctively used the Vulcan death grip.\"\n", - "\n", - "[Verse]\n", - "You said that everything would be okay\n", - "And that we could settle down, in a house by the river\n", - "Well, look at us now\n", - "(Whoo!)\n", - "I don’t know where I am, I don’t know where I will go\n", - "\n", - "[Chorus]\n", - "Maybe someday you will love me but I don’t think that I can wait\n", - "Maybe someday you will love me but I don’t think that I can wait Maybe someday you will love me but I don’t think that I can wait Maybe someday you will love me but I don’t think that I can wait Maybe someday you will love me but I don’t think that I can wait\n", - "\n", - "[Intro: Esham]\n", - "\"-am the wicked shit. (I am the wicked shit) We gon' always be stale. (The wicked shit) Some of y'all are not gonna make it to Shangri-La. (The wicked shit) Some of y'all gonna be wakin' up on some whole other shit. (The wicked shit)\"\n", - "\n", - "[Verse 1: Violent J]\n", - "Something had woke me, a thump on my roof\n", - "It was followed by crashing, more thumping ensued\n", - "I jumped out of my bed thinking I'd been invaded\n", - "Heard smashing, more pounding, the sound escalated\n", - "Looked out of my window, blood dripped down the glass\n", - "I see bodies lay twisted and mangled on grass\n", - "I ran into the main room and Shaggy was dead\n", - "So was Nate The Mack, Jumpsteady and ABK\n", - "Bolted out of the house to see if it's a joke\n", - "I heard hundreds of car alarms, saw flames and smoke\n", - "And the sky above red, I see dead bodies fallin'\n", - "It's raining with corpses, the blood is appalling\n", - "\n", - "[Chorus]\n", - "Mama told me when it rains, it pours\n", - "But never mentioned dead bodies, dead bodies\n", - "Mama told me when it rains, it pours\n", - "La dee da, da da dee, la da dee, dead bodies\n", - "\n", - "[Bridge: Violent J]\n", - "I never seen so many\n", - "Horrified looks on people's faces\n", - "The blood is appalling\n", - "I hope I never see what all them people saw\n", - "And put them in their places\n", - "The blood is appalling\n", - "The sun was so hot, so hot\n", - "I was burning, yeah\n", - "\n", - "[Verse 2: Violent J]\n", - "Dead bodies lay randomly, some stack in piles\n", - "On all of their faces, pure horror, no smiles\n", - "I see children and elders and ninjas my age\n", - "All lay naked and mangled, most withered for days\n", - "I found safety, a shelter, I'm under a tree\n", - "Only fingers and organs come falling on me\n", - "I lay sleepless for days as the raining continued\n", - "The heat of the sun baking corpses like food\n", - "Then it finally stopped, I walk knee deep in blood\n", - "Over piles of bodies, through what was my 'hood\n", - "It was right at that moment the wraith had appeared\n", - "And the message it left me might sound kind of weird\n", - "But take all that I'm seeing and opposite that\n", - "Truth is I'm the one dead and this is my Hell's Pit\n", - "\n", - "[Segue: The Rude Boy]\n", - "\"Hey, what up, y'all. It's the Rude Boy.\"\n", - "\n" - ] - } - ], - "source": [ - "for i, row in labeled_parts.iterrows():\n", - " print(row[\"lyrics\"])\n", - " print()\n", - " if i > 100:\n", - " break" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From cc4871ff5af55aa7aa3c87bcbee4474d2c70b1b3 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 09:30:01 +0000 Subject: [PATCH 245/262] add eval results --- README.md | 67 +++++++++---------- ...o_onnx_sat-sm.py => export_to_onnx_sat.py} | 14 ++-- setup.py | 6 +- 3 files changed, 45 insertions(+), 42 deletions(-) rename scripts/{export_to_onnx_sat-sm.py => export_to_onnx_sat.py} (77%) diff --git a/README.md b/README.md index 829c69d3..6f37e90a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Code for the paper [Segment Any Text: A Universal Approach for Robust, Efficient and Adaptable Sentence Segmentation](TODO) by Markus Frohmann, Igor Sterner, Benjamin Minixhofer, Ivan Vulić and Markus Schedl. -This repository contains `segment-any-text`, a package for robust, efficient and adaptable sentence segmentation across 85 languages, as well as the code and configs to reproduce the **state-of-the-art** results in 8 distinct corpora and 85 languages demonstrated in our paper. +This repository contains `wtpsplit`, a package for robust, efficient and adaptable sentence segmentation across 85 languages, as well as the code and configs to reproduce the **state-of-the-art** results in 8 distinct corpora and 85 languages demonstrated in our Segment any Text [paper](TODO). ![System Figure](./system-fig.png) @@ -10,13 +10,13 @@ This repository contains `segment-any-text`, a package for robust, efficient and ## Installation ```bash -pip install segment-any-text +pip install wtpsplit ``` ## Usage ```python -from sat import SaT +from wtpsplit import SaT sat = SaT("sat-3l") # optionally run on GPU for better performance @@ -43,49 +43,48 @@ sat.split("This is a test This is another test.", lang_code="en", style="ud") ## Available Models If you need a general sentence segmentation model, use `-sm` models (e.g., `sat-3l-sm`) -For speed-sensitive applications, we recommend 3-layer models (`sat-3l` and `sat-3l-sm`). They provide a good tradeoff between speen and performance. -The best (and largest) models are our 12-layer models: `sat-12l` and `sat-12l-sm`. -## TODO TODO TODO - +| PySBD | 69.6 | +| SpaCy (sentencizer; monolingual) | 92.9 | +| SpaCy (sentencizer; multilingual) | 91.5 | +| Ersatz | 91.4 | +| Punkt (`nltk.sent_tokenize`) | 92.2 | +| [WtP (3l)](https://huggingface.co/benjamin/wtp-canine-s-3l) | 93.9 | Note that this library also supports previous [`WtP`](https://arxiv.org/abs/2305.18893) models. You can use them in essentially the same way as `SaT`models: ```python -from sat import WtP +from wtpsplit import WtP wtp = WtP("wtp-bert-mini") # similar functionality as for SaT models wtp.split("This is a test This is another test.") ``` -For more details on WtP and reproduction details, see the `wtpsplit` branch. +For more details on WtP and reproduction details, see the `wtp` branch. ## Paragraph Segmentation @@ -179,7 +178,7 @@ Our models can be efficiently adapted via LoRA in a powerful way. Only 10-100 tr Clone the repository and install requirements: ``` -git clone https://github.com/segment-any-text/segment-any-text +git clone https://github.com/segment-any-text/wtpsplit cd segment-any-text pip install -e . pip install -r requirements.txt @@ -349,7 +348,7 @@ For details, we refer to our [paper](TODO). ## Citation -If you find our `segment-any-text` useful, please kindly cite our paper: +If you find `wtpsplit` and our `SaT` models useful, please kindly cite our paper: ``` @inproceedings{TODO,} ``` diff --git a/scripts/export_to_onnx_sat-sm.py b/scripts/export_to_onnx_sat.py similarity index 77% rename from scripts/export_to_onnx_sat-sm.py rename to scripts/export_to_onnx_sat.py index 47f9fee1..f7674dd9 100644 --- a/scripts/export_to_onnx_sat-sm.py +++ b/scripts/export_to_onnx_sat.py @@ -3,7 +3,7 @@ import onnx import torch -from onnxruntime.transformers.optimizer import optimize_model +from onnxruntime.transformers.optimizer import optimize_model # noqa from transformers import AutoModelForTokenClassification, HfArgumentParser import wtpsplit # noqa @@ -12,8 +12,8 @@ @dataclass class Args: - model_name_or_path: str = "segment-any-text/sat-12l-sm" - output_dir: str = "sat-12l-sm" + model_name_or_path: str = "segment-any-text/sat-12l-no-limited-lookahead" + output_dir: str = "sat-12l-no-limited-lookahead" device: str = "cpu" # TODO: lora merging here @@ -24,7 +24,7 @@ class Args: output_dir = Path(args.output_dir) output_dir.mkdir(exist_ok=True, parents=True) - model = AutoModelForTokenClassification.from_pretrained(args.model_name_or_path) + model = AutoModelForTokenClassification.from_pretrained(args.model_name_or_path, force_download=True) # model = model.half() # CUDA ONLY! model = model.to(args.device) @@ -41,8 +41,9 @@ class Args: dynamic_axes={ "input_ids": {0: "batch", 1: "sequence"}, "attention_mask": {0: "batch", 1: "sequence"}, - "logits": {0: "batch", 1: "sequence"}, + "logits": {0: "batch", 1: "sequence"} }, + # opset_version=11 ) # m = optimize_model( @@ -55,3 +56,6 @@ class Args: # optimized_model_path = output_dir / "model_optimized.onnx" # onnx.save_model(m.model, optimized_model_path) + + onnx_model = onnx.load(output_dir / "model.onnx") + onnx.checker.check_model(onnx_model, full_check=True) \ No newline at end of file diff --git a/setup.py b/setup.py index e6a1794b..c44a8b1a 100644 --- a/setup.py +++ b/setup.py @@ -1,8 +1,8 @@ from setuptools import setup setup( - name="segment-any-text", - version="1.0.0", + name="wtpsplit", + version="2.0.0", packages=["wtpsplit"], description="Universal Robust, Efficient and Adaptable Sentence Segmentation", author="Markus Frohmann, Igor Sterner, Benjamin Minixhofer", @@ -20,7 +20,7 @@ "mosestokenizer", "adapters==0.2.1" ], - url="https://github.com/bminixhofer/wtpsplit", + url="https://github.com/segment-any-text/wtpsplit", package_data={"wtpsplit": ["data/*"]}, include_package_data=True, license="MIT", From 08a6ed987c29b3e0f620a36b586ac0716ce8ee72 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 09:38:25 +0000 Subject: [PATCH 246/262] fix forward call + xlmr --- wtpsplit/extract.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 2ef9308c..8f9004ed 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -32,6 +32,7 @@ def __call__(self, hashed_ids, attention_mask): return {"logits": logits} + class SaTORTWrapper: def __init__(self, config, ort_session): self.config = config @@ -43,11 +44,8 @@ def __getattr__(self, name): def __call__(self, input_ids, attention_mask): logits = self.ort_session.run( - ["logits"], - { - "attention_mask": attention_mask.astype(np.int64), - "input_ids": input_ids.astype(np.int64) - }, + output_names=["logits"], + input_feed={"attention_mask": attention_mask.astype(np.int64), "input_ids": input_ids.astype(np.int64)}, )[0] return {"logits": logits} @@ -62,7 +60,7 @@ def __getattr__(self, name): assert hasattr(self, "model") return getattr(self.model, name) - def __call__(self, hashed_ids, attention_mask, language_ids=None, input_ids=None): + def __call__(self, attention_mask, hashed_ids=None, language_ids=None, input_ids=None): try: import torch except ImportError: @@ -106,9 +104,9 @@ def extract( if "xlm" in model.config.model_type: use_subwords = True tokenizer = AutoTokenizer.from_pretrained( - model.config.base_model if hasattr(model.config, "base_model") else model.config._name_or_path + "facebookAI/xlm-roberta-base", ) - tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) + # tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) tokens = tokenizer(batch_of_texts, return_offsets_mapping=True, verbose=False) # remove CLS and SEP tokens, they are added later anyhow batch_of_texts = [text[1:-1] for text in tokens["input_ids"]] From 478540d82aa97029c4dadd4746fcaae77e83abb4 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 09:41:37 +0000 Subject: [PATCH 247/262] rm --- wtpsplit/extract.py | 1 - 1 file changed, 1 deletion(-) diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index 8f9004ed..d653ec61 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -5,7 +5,6 @@ import numpy as np from tqdm.auto import tqdm from transformers import AutoTokenizer -from tokenizers import AddedToken from wtpsplit.utils import Constants, hash_encode From f3dd23657b8e5365c19b99273ce71fea76a4090c Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 09:47:32 +0000 Subject: [PATCH 248/262] fix adp version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c44a8b1a..1e16030d 100644 --- a/setup.py +++ b/setup.py @@ -18,7 +18,7 @@ "cached_property", # for Py37 "torchinfo", "mosestokenizer", - "adapters==0.2.1" + "adapters==0.1.1" ], url="https://github.com/segment-any-text/wtpsplit", package_data={"wtpsplit": ["data/*"]}, From 08432dc93db04d435a900b5e701bcb5f31cfbbde Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 10:00:42 +0000 Subject: [PATCH 249/262] transformers version? --- setup.py | 2 +- wtpsplit/__init__.py | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/setup.py b/setup.py index 1e16030d..0c809948 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ author_email="markus.frohmann@gmail.com", install_requires=[ "onnxruntime>=1.13.1", - "transformers>=4.22.2", + "transformers>=4.22.2,<=4.35", "numpy>=1.0,<2.0", "scikit-learn>=1", "tqdm", diff --git a/wtpsplit/__init__.py b/wtpsplit/__init__.py index c226f5a6..5517ec8d 100644 --- a/wtpsplit/__init__.py +++ b/wtpsplit/__init__.py @@ -18,7 +18,7 @@ from wtpsplit.extract import BertCharORTWrapper, PyTorchWrapper, SaTORTWrapper, extract from wtpsplit.utils import Constants, indices_to_sentences, sigmoid -__version__ = "1.0.0" +__version__ = "2.0.0" class WtP: @@ -711,6 +711,7 @@ def get_default_threshold(model_str: str): if __name__ == "__main__": + # FIXME: remove # sat_lora = SaT("sat-3l", style_or_domain="ud", language="en") # out = sat_lora.split( # "Hello this is a test But this is different now Now the next one starts looool", @@ -720,12 +721,16 @@ def get_default_threshold(model_str: str): # print(out) # splits = list(sat_lora.split(["Paragraph-A Paragraph-B", "Paragraph-C100 Paragraph-D"])) # print(splits) - # sat_sm = SaT("sat-12l-sm") - # splits = sat_sm.split("This is a test sentence. This is another test sentence.", threshold=0.25) - # print(splits) - sat_ort_sm = SaT("/home/Markus/wtpsplit/scripts/sat-12l-sm", ort_providers=["CPUExecutionProvider"]) - splits = sat_ort_sm.split("This is a test sentence. This is another test sentence.", threshold=0.25) + sat_sm = SaT("sat-3l-sm") + splits = sat_sm.split("this is a test this is another test") print(splits) + # sat_ort_sm = SaT("/home/Markus/wtpsplit/scripts/xlm-roberta-base", ort_providers=["CPUExecutionProvider"]) + # splits = sat_ort_sm.split("This is a test sentence. This is another test sentence.", threshold=0.25) + # print(splits) + # sat_ort = SaT("/home/Markus/wtpsplit/scripts/sat-12l-no-limited-lookahead", ort_providers=["CPUExecutionProvider"]) + # # sat_ort = SaT("/home/Markus/wtpsplit/scripts/sat-1l-sm", ort_providers=["CPUExecutionProvider"]) + # splits = sat_ort.split("This is a test sentence. This is another test sentence.", threshold=0.25) + # print(splits) # wtp = WtP("wtp-bert-mini", ort_providers=["CPUExecutionProvider"]) # splits = wtp.split("This is a test sentence This is another test sentence.", threshold=0.005) From 48e2c90143a663c5bbba8b5ffe30aaf5ca089d19 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 10:02:25 +0000 Subject: [PATCH 250/262] t --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 0c809948..cd57bcfc 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ author_email="markus.frohmann@gmail.com", install_requires=[ "onnxruntime>=1.13.1", - "transformers>=4.22.2,<=4.35", + "transformers>=4.22.2,<4.36", "numpy>=1.0,<2.0", "scikit-learn>=1", "tqdm", From a9e30123f0c72b30b8427fca7f1d30e73eab34fa Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 10:52:45 +0000 Subject: [PATCH 251/262] loc --- wtpsplit/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wtpsplit/__init__.py b/wtpsplit/__init__.py index 5517ec8d..91fd54cb 100644 --- a/wtpsplit/__init__.py +++ b/wtpsplit/__init__.py @@ -13,7 +13,6 @@ from transformers import AutoConfig, AutoModelForTokenClassification from transformers.utils.hub import cached_file -import adapters from wtpsplit.evaluation import token_to_char_probs from wtpsplit.extract import BertCharORTWrapper, PyTorchWrapper, SaTORTWrapper, extract from wtpsplit.utils import Constants, indices_to_sentences, sigmoid @@ -483,6 +482,7 @@ def __init__( if (style_or_domain and not language) or (language and not style_or_domain): raise ValueError("Please specify both language and style_or_domain!") if style_or_domain and language: + import adapters # noqa model_type = self.model.model.config.model_type # adapters need xlm-roberta as model type. self.model.model.config.model_type = "xlm-roberta" From fc27c9a84ef7c26e3f592908857d89358e3d4fb9 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 11:05:33 +0000 Subject: [PATCH 252/262] bump? --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index cd57bcfc..2b2c01b0 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ author_email="markus.frohmann@gmail.com", install_requires=[ "onnxruntime>=1.13.1", - "transformers>=4.22.2,<4.36", + "transformers>=4.22.2,<4.40", "numpy>=1.0,<2.0", "scikit-learn>=1", "tqdm", @@ -18,7 +18,7 @@ "cached_property", # for Py37 "torchinfo", "mosestokenizer", - "adapters==0.1.1" + "adapters==0.2.1" ], url="https://github.com/segment-any-text/wtpsplit", package_data={"wtpsplit": ["data/*"]}, From d63e21e4503b70a1386067bb85e0428ef6383b85 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 13:33:16 +0200 Subject: [PATCH 253/262] monkey patch adapters --- wtpsplit/__init__.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/wtpsplit/__init__.py b/wtpsplit/__init__.py index 91fd54cb..acdd4b42 100644 --- a/wtpsplit/__init__.py +++ b/wtpsplit/__init__.py @@ -483,6 +483,10 @@ def __init__( raise ValueError("Please specify both language and style_or_domain!") if style_or_domain and language: import adapters # noqa + # monkey patch mixin to avoid forking whole adapters library + from adapters.models import MODEL_MIXIN_MAPPING + from adapters.models.bert.mixin_bert import BertModelAdaptersMixin + MODEL_MIXIN_MAPPING["SubwordXLMRobertaModel"] = BertModelAdaptersMixin model_type = self.model.model.config.model_type # adapters need xlm-roberta as model type. self.model.model.config.model_type = "xlm-roberta" From 7fa10754b45d65be80b9f3e8e250807aad1cb41a Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 13:41:26 +0200 Subject: [PATCH 254/262] rm old stuff --- README.md | 2 +- adapters/CITATION.cff | 59 - adapters/LICENSE | 203 - adapters/MANIFEST.in | 1 - adapters/Makefile | 45 - adapters/README.md | 204 - adapters/conftest.py | 85 - adapters/docs/Makefile | 24 - adapters/docs/README.md | 19 - adapters/docs/_config.py | 14 - adapters/docs/_static/custom.css | 38 - adapters/docs/adapter_composition.md | 305 - adapters/docs/classes/adapter_config.rst | 95 - adapters/docs/classes/adapter_layer.rst | 12 - adapters/docs/classes/adapter_training.rst | 10 - adapters/docs/classes/adapter_utils.rst | 8 - .../docs/classes/model_adapters_config.rst | 7 - adapters/docs/classes/model_mixins.rst | 43 - adapters/docs/classes/models/albert.rst | 22 - adapters/docs/classes/models/auto.rst | 11 - adapters/docs/classes/models/bart.rst | 25 - adapters/docs/classes/models/beit.rst | 27 - .../docs/classes/models/bert-generation.rst | 40 - adapters/docs/classes/models/bert.rst | 14 - adapters/docs/classes/models/clip.rst | 50 - adapters/docs/classes/models/deberta.rst | 50 - adapters/docs/classes/models/deberta_v2.rst | 71 - adapters/docs/classes/models/distilbert.rst | 17 - adapters/docs/classes/models/electra.rst | 32 - .../docs/classes/models/encoderdecoder.rst | 48 - adapters/docs/classes/models/gpt2.rst | 23 - adapters/docs/classes/models/gptj.rst | 24 - adapters/docs/classes/models/llama.rst | 21 - adapters/docs/classes/models/mbart.rst | 19 - adapters/docs/classes/models/mt5.rst | 24 - adapters/docs/classes/models/roberta.rst | 14 - adapters/docs/classes/models/t5.rst | 25 - adapters/docs/classes/models/vit.rst | 27 - adapters/docs/classes/models/xlmroberta.rst | 14 - adapters/docs/classes/models/xmod.rst | 23 - adapters/docs/conf.py | 108 - adapters/docs/contributing.md | 78 - .../contributing/adding_adapter_methods.md | 101 - .../adding_adapters_to_a_model.md | 89 - adapters/docs/embeddings.md | 47 - adapters/docs/extending.md | 34 - adapters/docs/hub_contributing.md | 95 - adapters/docs/huggingface_hub.md | 72 - adapters/docs/img/hfhub.svg | 66 - adapters/docs/index.rst | 168 - adapters/docs/installation.md | 40 - adapters/docs/loading.md | 134 - adapters/docs/make.bat | 35 - adapters/docs/method_combinations.md | 124 - adapters/docs/methods.md | 297 - adapters/docs/model_overview.md | 42 - adapters/docs/overview.md | 99 - adapters/docs/prediction_heads.md | 152 - adapters/docs/quickstart.md | 123 - adapters/docs/scripts/post_build.py | 16 - adapters/docs/training.md | 217 - adapters/docs/transitioning.md | 77 - adapters/examples/pytorch/README.md | 432 - .../examples/pytorch/_tests_requirements.txt | 25 - .../pytorch/adapterdrop/drop_at_inference.py | 28 - .../examples/pytorch/adapterfusion/README.md | 3 - .../pytorch/adapterfusion/run_fusion_glue.py | 282 - adapters/examples/pytorch/conftest.py | 45 - .../pytorch/dependency-parsing/README.md | 48 - .../dependency-parsing/preprocessing.py | 100 - .../dependency-parsing/requirements.txt | 3 - .../pytorch/dependency-parsing/run_udp.py | 302 - .../pytorch/dependency-parsing/utils_udp.py | 376 - .../pytorch/language-modeling/README.md | 138 - .../language-modeling/requirements.txt | 7 - .../pytorch/language-modeling/run_clm.py | 608 - .../pytorch/language-modeling/run_mlm.py | 623 - .../pytorch/multiple-choice/README.md | 48 - .../pytorch/multiple-choice/requirements.txt | 5 - .../pytorch/multiple-choice/run_swag.py | 486 - .../pytorch/question-answering/README.md | 98 - .../question-answering/requirements.txt | 4 - .../pytorch/question-answering/run_qa.py | 687 -- .../question-answering/run_seq2seq_qa.py | 733 -- .../pytorch/question-answering/trainer_qa.py | 141 - .../question-answering/trainer_seq2seq_qa.py | 167 - .../pytorch/question-answering/utils_qa.py | 439 - .../examples/pytorch/summarization/README.md | 148 - .../pytorch/summarization/requirements.txt | 9 - .../summarization/run_summarization.py | 759 -- .../examples/pytorch/test_adapter_examples.py | 395 - .../examples/pytorch/test_xla_examples.py | 94 - .../pytorch/text-classification/README.md | 235 - .../text-classification/requirements.txt | 8 - .../pytorch/text-classification/run_glue.py | 635 - .../pytorch/text-generation/README.md | 46 - .../pytorch/text-generation/requirements.txt | 3 - .../pytorch/text-generation/run_generation.py | 301 - .../pytorch/token-classification/README.md | 68 - .../token-classification/requirements.txt | 5 - .../pytorch/token-classification/run.sh | 23 - .../pytorch/token-classification/run_ner.py | 636 - .../examples/pytorch/translation/README.md | 167 - .../pytorch/translation/requirements.txt | 8 - .../pytorch/translation/run_translation.py | 684 -- adapters/examples/pytorch/xla_spawn.py | 83 - adapters/pyproject.toml | 3 - adapters/setup.cfg | 54 - adapters/setup.py | 175 - adapters/src/adapters/__init__.py | 237 - adapters/src/adapters/composition.py | 260 - .../src/adapters/configuration/__init__.py | 4 - .../adapters/configuration/adapter_config.py | 655 - .../configuration/adapter_fusion_config.py | 85 - .../configuration/model_adapters_config.py | 241 - adapters/src/adapters/context.py | 151 - adapters/src/adapters/head_utils.py | 749 -- adapters/src/adapters/heads/__init__.py | 5 - adapters/src/adapters/heads/base.py | 513 - .../src/adapters/heads/dependency_parsing.py | 183 - .../src/adapters/heads/language_modeling.py | 216 - adapters/src/adapters/heads/model_mixin.py | 730 -- adapters/src/adapters/hub_mixin.py | 233 - adapters/src/adapters/loading.py | 939 -- adapters/src/adapters/methods/__init__.py | 0 .../adapters/methods/adapter_layer_base.py | 482 - adapters/src/adapters/methods/bottleneck.py | 372 - adapters/src/adapters/methods/lora.py | 639 - adapters/src/adapters/methods/modeling.py | 803 -- .../src/adapters/methods/prefix_tuning.py | 543 - .../src/adapters/methods/prompt_tuning.py | 228 - adapters/src/adapters/model_mixin.py | 1552 --- adapters/src/adapters/models/__init__.py | 87 - .../src/adapters/models/albert/__init__.py | 39 - .../adapters/models/albert/adapter_model.py | 106 - .../adapters/models/albert/mixin_albert.py | 68 - .../adapters/models/albert/modeling_albert.py | 124 - adapters/src/adapters/models/auto/__init__.py | 42 - .../src/adapters/models/auto/adapter_model.py | 43 - .../src/adapters/models/auto/auto_factory.py | 11 - adapters/src/adapters/models/bart/__init__.py | 39 - .../src/adapters/models/bart/adapter_model.py | 162 - .../src/adapters/models/bart/mixin_bart.py | 109 - .../src/adapters/models/bart/modeling_bart.py | 533 - adapters/src/adapters/models/beit/__init__.py | 39 - .../src/adapters/models/beit/adapter_model.py | 89 - .../src/adapters/models/beit/mixin_beit.py | 61 - .../src/adapters/models/beit/modeling_beit.py | 123 - adapters/src/adapters/models/bert/__init__.py | 39 - .../src/adapters/models/bert/adapter_model.py | 125 - .../src/adapters/models/bert/mixin_bert.py | 92 - .../src/adapters/models/bert/modeling_bert.py | 158 - .../models/bert_generation/__init__.py | 51 - .../models/bert_generation/adapter_model.py | 125 - .../modeling_bert_generation.py | 162 - adapters/src/adapters/models/clip/__init__.py | 39 - .../src/adapters/models/clip/adapter_model.py | 77 - .../src/adapters/models/clip/mixin_clip.py | 115 - .../src/adapters/models/clip/modeling_clip.py | 157 - .../src/adapters/models/deberta/__init__.py | 39 - .../adapters/models/deberta/adapter_model.py | 97 - .../adapters/models/deberta/mixin_deberta.py | 14 - .../models/deberta/modeling_deberta.py | 165 - .../adapters/models/deberta_v2/__init__.py | 39 - .../models/deberta_v2/adapter_model.py | 99 - .../models/deberta_v2/mixin_deberta_v2.py | 16 - .../models/deberta_v2/modeling_deberta_v2.py | 156 - .../adapters/models/distilbert/__init__.py | 39 - .../models/distilbert/adapter_model.py | 127 - .../models/distilbert/mixin_distilbert.py | 53 - .../models/distilbert/modeling_distilbert.py | 154 - .../src/adapters/models/electra/__init__.py | 39 - .../adapters/models/electra/adapter_model.py | 120 - .../models/electra/modeling_electra.py | 139 - .../encoder_decoder/mixin_encoder_decoder.py | 69 - .../modeling_encoder_decoder.py | 24 - adapters/src/adapters/models/gpt2/__init__.py | 39 - .../src/adapters/models/gpt2/adapter_model.py | 153 - .../src/adapters/models/gpt2/mixin_gpt2.py | 72 - .../src/adapters/models/gpt2/modeling_gpt2.py | 147 - adapters/src/adapters/models/gptj/__init__.py | 39 - .../src/adapters/models/gptj/adapter_model.py | 149 - .../src/adapters/models/gptj/mixin_gptj.py | 56 - .../src/adapters/models/gptj/modeling_gptj.py | 149 - .../src/adapters/models/llama/__init__.py | 39 - .../adapters/models/llama/adapter_model.py | 151 - .../src/adapters/models/llama/mixin_llama.py | 46 - .../adapters/models/llama/modeling_llama.py | 425 - .../src/adapters/models/mbart/__init__.py | 39 - .../adapters/models/mbart/adapter_model.py | 171 - .../adapters/models/mbart/modeling_mbart.py | 308 - adapters/src/adapters/models/mt5/__init__.py | 39 - .../src/adapters/models/mt5/adapter_model.py | 209 - .../src/adapters/models/mt5/modeling_mt5.py | 484 - .../src/adapters/models/roberta/__init__.py | 39 - .../adapters/models/roberta/adapter_model.py | 124 - .../models/roberta/modeling_roberta.py | 160 - adapters/src/adapters/models/t5/__init__.py | 39 - .../src/adapters/models/t5/adapter_model.py | 202 - adapters/src/adapters/models/t5/mixin_t5.py | 133 - .../src/adapters/models/t5/modeling_t5.py | 484 - adapters/src/adapters/models/vit/__init__.py | 39 - .../src/adapters/models/vit/adapter_model.py | 88 - adapters/src/adapters/models/vit/mixin_vit.py | 60 - .../src/adapters/models/vit/modeling_vit.py | 110 - .../adapters/models/xlm_roberta/__init__.py | 39 - .../models/xlm_roberta/adapter_model.py | 127 - .../xlm_roberta/modeling_xlm_roberta.py | 164 - adapters/src/adapters/models/xmod/__init__.py | 39 - .../src/adapters/models/xmod/adapter_model.py | 133 - .../src/adapters/models/xmod/mixin_xmod.py | 71 - .../src/adapters/models/xmod/modeling_xmod.py | 161 - adapters/src/adapters/trainer.py | 252 - adapters/src/adapters/training.py | 100 - adapters/src/adapters/utils.py | 864 -- adapters/src/adapters/wrappers/__init__.py | 38 - .../src/adapters/wrappers/configuration.py | 110 - adapters/src/adapters/wrappers/model.py | 130 - adapters/tests/__init__.py | 0 .../composition/test_adapter_composition.py | 250 - adapters/tests/composition/test_parallel.py | 317 - .../extended/test_adapter_trainer_ext.py | 353 - adapters/tests/fixtures/SiBERT/config.json | 45 - .../fixtures/SiBERT/special_tokens_map.json | 1 - .../fixtures/SiBERT/tokenizer_config.json | 1 - adapters/tests/fixtures/SiBERT/vocab.txt | 10000 ---------------- adapters/tests/fixtures/hub-index.sample.json | 19 - adapters/tests/fixtures/sample_text.txt | 33 - adapters/tests/fixtures/samples/MRPC/dev.tsv | 7 - .../tests/fixtures/samples/MRPC/train.tsv | 7 - .../tests/fixtures/samples/SQUAD/sample.json | 201 - .../tests/fixtures/samples/cifar10/cifar10.py | 62 - .../fixtures/samples/cifar10/data_batch_1 | Bin 6380 -> 0 bytes .../fixtures/samples/cifar10/data_batch_2 | Bin 6380 -> 0 bytes .../fixtures/samples/cifar10/data_batch_3 | Bin 6380 -> 0 bytes .../fixtures/samples/cifar10/data_batch_4 | Bin 6380 -> 0 bytes .../fixtures/samples/cifar10/data_batch_5 | Bin 6380 -> 0 bytes .../tests/fixtures/samples/cifar10/test_batch | Bin 6380 -> 0 bytes .../tests/fixtures/samples/conll/sample.json | 10 - .../tests/fixtures/samples/swag/sample.json | 10 - .../tests/fixtures/samples/wmt16/sample.json | 10 - .../tests/fixtures/samples/xsum/sample.json | 10 - .../tests_samples/COCO/coco_annotations.txt | 1 - .../COCO/coco_panoptic_annotations.txt | 1 - adapters/tests/methods/__init__.py | 26 - adapters/tests/methods/base.py | 364 - adapters/tests/methods/test_adapter_common.py | 474 - adapters/tests/methods/test_compacter.py | 75 - adapters/tests/methods/test_config_union.py | 53 - adapters/tests/methods/test_ia3.py | 47 - adapters/tests/methods/test_lora.py | 47 - adapters/tests/methods/test_prefix_tuning.py | 98 - adapters/tests/methods/test_prompt_tuning.py | 36 - adapters/tests/methods/test_unipelt.py | 64 - adapters/tests/models/__init__.py | 0 adapters/tests/models/base.py | 16 - adapters/tests/models/test_albert.py | 12 - adapters/tests/models/test_bart.py | 12 - adapters/tests/models/test_beit.py | 12 - adapters/tests/models/test_bert.py | 12 - adapters/tests/models/test_bert_generation.py | 12 - adapters/tests/models/test_clip.py | 39 - adapters/tests/models/test_deberta.py | 12 - adapters/tests/models/test_debertaV2.py | 12 - adapters/tests/models/test_distilbert.py | 12 - adapters/tests/models/test_electra.py | 12 - adapters/tests/models/test_encoder_decoder.py | 2 - adapters/tests/models/test_gpt2.py | 12 - adapters/tests/models/test_gptj.py | 12 - adapters/tests/models/test_llama.py | 12 - adapters/tests/models/test_mbart.py | 12 - adapters/tests/models/test_mt5.py | 12 - adapters/tests/models/test_roberta.py | 12 - adapters/tests/models/test_t5.py | 12 - adapters/tests/models/test_vit.py | 12 - adapters/tests/models/test_xlm_roberta.py | 2 - adapters/tests/models/test_xmod.py | 12 - adapters/tests/test_adapter.py | 135 - .../test_adapter_backward_compability.py | 48 - adapters/tests/test_adapter_config.py | 127 - adapters/tests/test_adapter_conversion.py | 236 - adapters/tests/test_adapter_custom_head.py | 91 - adapters/tests/test_adapter_embeddings.py | 168 - adapters/tests/test_adapter_fusion_common.py | 216 - adapters/tests/test_adapter_fusion_config.py | 32 - adapters/tests/test_adapter_heads.py | 457 - adapters/tests/test_adapter_hub.py | 166 - adapters/tests/test_adapter_save_id2label.py | 110 - adapters/tests/test_adapter_trainer.py | 541 - adapters/tests/test_albert.py | 69 - adapters/tests/test_bart.py | 66 - adapters/tests/test_beit.py | 59 - adapters/tests/test_bert.py | 65 - adapters/tests/test_bert_generation.py | 108 - adapters/tests/test_clip.py | 221 - adapters/tests/test_deberta.py | 68 - adapters/tests/test_debertaV2.py | 68 - adapters/tests/test_distilbert.py | 65 - adapters/tests/test_electra.py | 66 - adapters/tests/test_encoder_decoder.py | 90 - adapters/tests/test_gpt2.py | 64 - adapters/tests/test_gptj.py | 66 - adapters/tests/test_llama.py | 64 - adapters/tests/test_mbart.py | 60 - adapters/tests/test_mt5.py | 66 - adapters/tests/test_roberta.py | 63 - adapters/tests/test_t5.py | 66 - adapters/tests/test_vit.py | 62 - adapters/tests/test_xlm_roberta.py | 55 - adapters/tests/test_xmod.py | 63 - adapters/utils/back_comp/README.md | 26 - adapters/utils/back_comp/Utils.py | 498 - adapters/utils/back_comp/compare.sh | 31 - adapters/utils/back_comp/compare_outputs.py | 43 - adapters/utils/back_comp/create_outputs.py | 64 - adapters/utils/check_inits.py | 13 - adapters/utils/convert_xmod_checkpoint.py | 85 - adapters/utils/custom_init_isort.py | 21 - adapters/utils/sort_auto_mappings.py | 21 - system-fig.png => configs/system-fig.png | Bin data/extra_langs.csv | 1 - data/lyrics_langs.csv | 1 - requirements.txt | 3 +- setup.py | 3 +- test_sat.py | 85 - test_wtp.py | 88 +- wtpsplit/__init__.py | 6 +- wtpsplit/punctuation_xlmr.txt | 108 - wtpsplit/summary_plot.py | 157 - {utils => wtpsplit/utils}/clean_tweets.py | 0 {utils => wtpsplit/utils}/download_spacy.py | 0 {utils => wtpsplit/utils}/remove_unks.py | 0 332 files changed, 94 insertions(+), 52779 deletions(-) delete mode 100644 adapters/CITATION.cff delete mode 100644 adapters/LICENSE delete mode 100644 adapters/MANIFEST.in delete mode 100644 adapters/Makefile delete mode 100644 adapters/README.md delete mode 100644 adapters/conftest.py delete mode 100644 adapters/docs/Makefile delete mode 100644 adapters/docs/README.md delete mode 100644 adapters/docs/_config.py delete mode 100644 adapters/docs/_static/custom.css delete mode 100644 adapters/docs/adapter_composition.md delete mode 100644 adapters/docs/classes/adapter_config.rst delete mode 100644 adapters/docs/classes/adapter_layer.rst delete mode 100644 adapters/docs/classes/adapter_training.rst delete mode 100644 adapters/docs/classes/adapter_utils.rst delete mode 100644 adapters/docs/classes/model_adapters_config.rst delete mode 100644 adapters/docs/classes/model_mixins.rst delete mode 100644 adapters/docs/classes/models/albert.rst delete mode 100644 adapters/docs/classes/models/auto.rst delete mode 100644 adapters/docs/classes/models/bart.rst delete mode 100644 adapters/docs/classes/models/beit.rst delete mode 100644 adapters/docs/classes/models/bert-generation.rst delete mode 100644 adapters/docs/classes/models/bert.rst delete mode 100644 adapters/docs/classes/models/clip.rst delete mode 100644 adapters/docs/classes/models/deberta.rst delete mode 100644 adapters/docs/classes/models/deberta_v2.rst delete mode 100644 adapters/docs/classes/models/distilbert.rst delete mode 100644 adapters/docs/classes/models/electra.rst delete mode 100644 adapters/docs/classes/models/encoderdecoder.rst delete mode 100644 adapters/docs/classes/models/gpt2.rst delete mode 100644 adapters/docs/classes/models/gptj.rst delete mode 100644 adapters/docs/classes/models/llama.rst delete mode 100644 adapters/docs/classes/models/mbart.rst delete mode 100644 adapters/docs/classes/models/mt5.rst delete mode 100644 adapters/docs/classes/models/roberta.rst delete mode 100644 adapters/docs/classes/models/t5.rst delete mode 100644 adapters/docs/classes/models/vit.rst delete mode 100644 adapters/docs/classes/models/xlmroberta.rst delete mode 100644 adapters/docs/classes/models/xmod.rst delete mode 100644 adapters/docs/conf.py delete mode 100644 adapters/docs/contributing.md delete mode 100644 adapters/docs/contributing/adding_adapter_methods.md delete mode 100644 adapters/docs/contributing/adding_adapters_to_a_model.md delete mode 100644 adapters/docs/embeddings.md delete mode 100644 adapters/docs/extending.md delete mode 100644 adapters/docs/hub_contributing.md delete mode 100644 adapters/docs/huggingface_hub.md delete mode 100644 adapters/docs/img/hfhub.svg delete mode 100644 adapters/docs/index.rst delete mode 100644 adapters/docs/installation.md delete mode 100644 adapters/docs/loading.md delete mode 100644 adapters/docs/make.bat delete mode 100644 adapters/docs/method_combinations.md delete mode 100644 adapters/docs/methods.md delete mode 100644 adapters/docs/model_overview.md delete mode 100644 adapters/docs/overview.md delete mode 100644 adapters/docs/prediction_heads.md delete mode 100644 adapters/docs/quickstart.md delete mode 100644 adapters/docs/scripts/post_build.py delete mode 100644 adapters/docs/training.md delete mode 100644 adapters/docs/transitioning.md delete mode 100644 adapters/examples/pytorch/README.md delete mode 100644 adapters/examples/pytorch/_tests_requirements.txt delete mode 100644 adapters/examples/pytorch/adapterdrop/drop_at_inference.py delete mode 100644 adapters/examples/pytorch/adapterfusion/README.md delete mode 100644 adapters/examples/pytorch/adapterfusion/run_fusion_glue.py delete mode 100644 adapters/examples/pytorch/conftest.py delete mode 100644 adapters/examples/pytorch/dependency-parsing/README.md delete mode 100644 adapters/examples/pytorch/dependency-parsing/preprocessing.py delete mode 100644 adapters/examples/pytorch/dependency-parsing/requirements.txt delete mode 100644 adapters/examples/pytorch/dependency-parsing/run_udp.py delete mode 100644 adapters/examples/pytorch/dependency-parsing/utils_udp.py delete mode 100644 adapters/examples/pytorch/language-modeling/README.md delete mode 100644 adapters/examples/pytorch/language-modeling/requirements.txt delete mode 100644 adapters/examples/pytorch/language-modeling/run_clm.py delete mode 100644 adapters/examples/pytorch/language-modeling/run_mlm.py delete mode 100644 adapters/examples/pytorch/multiple-choice/README.md delete mode 100644 adapters/examples/pytorch/multiple-choice/requirements.txt delete mode 100644 adapters/examples/pytorch/multiple-choice/run_swag.py delete mode 100644 adapters/examples/pytorch/question-answering/README.md delete mode 100644 adapters/examples/pytorch/question-answering/requirements.txt delete mode 100644 adapters/examples/pytorch/question-answering/run_qa.py delete mode 100644 adapters/examples/pytorch/question-answering/run_seq2seq_qa.py delete mode 100644 adapters/examples/pytorch/question-answering/trainer_qa.py delete mode 100644 adapters/examples/pytorch/question-answering/trainer_seq2seq_qa.py delete mode 100644 adapters/examples/pytorch/question-answering/utils_qa.py delete mode 100644 adapters/examples/pytorch/summarization/README.md delete mode 100644 adapters/examples/pytorch/summarization/requirements.txt delete mode 100644 adapters/examples/pytorch/summarization/run_summarization.py delete mode 100644 adapters/examples/pytorch/test_adapter_examples.py delete mode 100644 adapters/examples/pytorch/test_xla_examples.py delete mode 100644 adapters/examples/pytorch/text-classification/README.md delete mode 100644 adapters/examples/pytorch/text-classification/requirements.txt delete mode 100644 adapters/examples/pytorch/text-classification/run_glue.py delete mode 100644 adapters/examples/pytorch/text-generation/README.md delete mode 100644 adapters/examples/pytorch/text-generation/requirements.txt delete mode 100644 adapters/examples/pytorch/text-generation/run_generation.py delete mode 100644 adapters/examples/pytorch/token-classification/README.md delete mode 100644 adapters/examples/pytorch/token-classification/requirements.txt delete mode 100644 adapters/examples/pytorch/token-classification/run.sh delete mode 100644 adapters/examples/pytorch/token-classification/run_ner.py delete mode 100644 adapters/examples/pytorch/translation/README.md delete mode 100644 adapters/examples/pytorch/translation/requirements.txt delete mode 100644 adapters/examples/pytorch/translation/run_translation.py delete mode 100644 adapters/examples/pytorch/xla_spawn.py delete mode 100644 adapters/pyproject.toml delete mode 100644 adapters/setup.cfg delete mode 100644 adapters/setup.py delete mode 100644 adapters/src/adapters/__init__.py delete mode 100644 adapters/src/adapters/composition.py delete mode 100644 adapters/src/adapters/configuration/__init__.py delete mode 100644 adapters/src/adapters/configuration/adapter_config.py delete mode 100644 adapters/src/adapters/configuration/adapter_fusion_config.py delete mode 100644 adapters/src/adapters/configuration/model_adapters_config.py delete mode 100644 adapters/src/adapters/context.py delete mode 100644 adapters/src/adapters/head_utils.py delete mode 100644 adapters/src/adapters/heads/__init__.py delete mode 100644 adapters/src/adapters/heads/base.py delete mode 100644 adapters/src/adapters/heads/dependency_parsing.py delete mode 100644 adapters/src/adapters/heads/language_modeling.py delete mode 100644 adapters/src/adapters/heads/model_mixin.py delete mode 100644 adapters/src/adapters/hub_mixin.py delete mode 100644 adapters/src/adapters/loading.py delete mode 100644 adapters/src/adapters/methods/__init__.py delete mode 100644 adapters/src/adapters/methods/adapter_layer_base.py delete mode 100644 adapters/src/adapters/methods/bottleneck.py delete mode 100644 adapters/src/adapters/methods/lora.py delete mode 100644 adapters/src/adapters/methods/modeling.py delete mode 100644 adapters/src/adapters/methods/prefix_tuning.py delete mode 100644 adapters/src/adapters/methods/prompt_tuning.py delete mode 100644 adapters/src/adapters/model_mixin.py delete mode 100644 adapters/src/adapters/models/__init__.py delete mode 100644 adapters/src/adapters/models/albert/__init__.py delete mode 100644 adapters/src/adapters/models/albert/adapter_model.py delete mode 100644 adapters/src/adapters/models/albert/mixin_albert.py delete mode 100644 adapters/src/adapters/models/albert/modeling_albert.py delete mode 100644 adapters/src/adapters/models/auto/__init__.py delete mode 100644 adapters/src/adapters/models/auto/adapter_model.py delete mode 100644 adapters/src/adapters/models/auto/auto_factory.py delete mode 100644 adapters/src/adapters/models/bart/__init__.py delete mode 100644 adapters/src/adapters/models/bart/adapter_model.py delete mode 100644 adapters/src/adapters/models/bart/mixin_bart.py delete mode 100644 adapters/src/adapters/models/bart/modeling_bart.py delete mode 100644 adapters/src/adapters/models/beit/__init__.py delete mode 100644 adapters/src/adapters/models/beit/adapter_model.py delete mode 100644 adapters/src/adapters/models/beit/mixin_beit.py delete mode 100644 adapters/src/adapters/models/beit/modeling_beit.py delete mode 100644 adapters/src/adapters/models/bert/__init__.py delete mode 100644 adapters/src/adapters/models/bert/adapter_model.py delete mode 100644 adapters/src/adapters/models/bert/mixin_bert.py delete mode 100644 adapters/src/adapters/models/bert/modeling_bert.py delete mode 100644 adapters/src/adapters/models/bert_generation/__init__.py delete mode 100644 adapters/src/adapters/models/bert_generation/adapter_model.py delete mode 100644 adapters/src/adapters/models/bert_generation/modeling_bert_generation.py delete mode 100644 adapters/src/adapters/models/clip/__init__.py delete mode 100644 adapters/src/adapters/models/clip/adapter_model.py delete mode 100644 adapters/src/adapters/models/clip/mixin_clip.py delete mode 100644 adapters/src/adapters/models/clip/modeling_clip.py delete mode 100644 adapters/src/adapters/models/deberta/__init__.py delete mode 100644 adapters/src/adapters/models/deberta/adapter_model.py delete mode 100644 adapters/src/adapters/models/deberta/mixin_deberta.py delete mode 100644 adapters/src/adapters/models/deberta/modeling_deberta.py delete mode 100644 adapters/src/adapters/models/deberta_v2/__init__.py delete mode 100644 adapters/src/adapters/models/deberta_v2/adapter_model.py delete mode 100644 adapters/src/adapters/models/deberta_v2/mixin_deberta_v2.py delete mode 100644 adapters/src/adapters/models/deberta_v2/modeling_deberta_v2.py delete mode 100644 adapters/src/adapters/models/distilbert/__init__.py delete mode 100644 adapters/src/adapters/models/distilbert/adapter_model.py delete mode 100644 adapters/src/adapters/models/distilbert/mixin_distilbert.py delete mode 100644 adapters/src/adapters/models/distilbert/modeling_distilbert.py delete mode 100644 adapters/src/adapters/models/electra/__init__.py delete mode 100644 adapters/src/adapters/models/electra/adapter_model.py delete mode 100644 adapters/src/adapters/models/electra/modeling_electra.py delete mode 100644 adapters/src/adapters/models/encoder_decoder/mixin_encoder_decoder.py delete mode 100644 adapters/src/adapters/models/encoder_decoder/modeling_encoder_decoder.py delete mode 100644 adapters/src/adapters/models/gpt2/__init__.py delete mode 100644 adapters/src/adapters/models/gpt2/adapter_model.py delete mode 100644 adapters/src/adapters/models/gpt2/mixin_gpt2.py delete mode 100644 adapters/src/adapters/models/gpt2/modeling_gpt2.py delete mode 100644 adapters/src/adapters/models/gptj/__init__.py delete mode 100644 adapters/src/adapters/models/gptj/adapter_model.py delete mode 100644 adapters/src/adapters/models/gptj/mixin_gptj.py delete mode 100644 adapters/src/adapters/models/gptj/modeling_gptj.py delete mode 100644 adapters/src/adapters/models/llama/__init__.py delete mode 100644 adapters/src/adapters/models/llama/adapter_model.py delete mode 100644 adapters/src/adapters/models/llama/mixin_llama.py delete mode 100644 adapters/src/adapters/models/llama/modeling_llama.py delete mode 100644 adapters/src/adapters/models/mbart/__init__.py delete mode 100644 adapters/src/adapters/models/mbart/adapter_model.py delete mode 100644 adapters/src/adapters/models/mbart/modeling_mbart.py delete mode 100644 adapters/src/adapters/models/mt5/__init__.py delete mode 100644 adapters/src/adapters/models/mt5/adapter_model.py delete mode 100644 adapters/src/adapters/models/mt5/modeling_mt5.py delete mode 100644 adapters/src/adapters/models/roberta/__init__.py delete mode 100644 adapters/src/adapters/models/roberta/adapter_model.py delete mode 100644 adapters/src/adapters/models/roberta/modeling_roberta.py delete mode 100644 adapters/src/adapters/models/t5/__init__.py delete mode 100644 adapters/src/adapters/models/t5/adapter_model.py delete mode 100644 adapters/src/adapters/models/t5/mixin_t5.py delete mode 100644 adapters/src/adapters/models/t5/modeling_t5.py delete mode 100644 adapters/src/adapters/models/vit/__init__.py delete mode 100644 adapters/src/adapters/models/vit/adapter_model.py delete mode 100644 adapters/src/adapters/models/vit/mixin_vit.py delete mode 100644 adapters/src/adapters/models/vit/modeling_vit.py delete mode 100644 adapters/src/adapters/models/xlm_roberta/__init__.py delete mode 100644 adapters/src/adapters/models/xlm_roberta/adapter_model.py delete mode 100644 adapters/src/adapters/models/xlm_roberta/modeling_xlm_roberta.py delete mode 100644 adapters/src/adapters/models/xmod/__init__.py delete mode 100644 adapters/src/adapters/models/xmod/adapter_model.py delete mode 100644 adapters/src/adapters/models/xmod/mixin_xmod.py delete mode 100644 adapters/src/adapters/models/xmod/modeling_xmod.py delete mode 100644 adapters/src/adapters/trainer.py delete mode 100644 adapters/src/adapters/training.py delete mode 100644 adapters/src/adapters/utils.py delete mode 100644 adapters/src/adapters/wrappers/__init__.py delete mode 100644 adapters/src/adapters/wrappers/configuration.py delete mode 100644 adapters/src/adapters/wrappers/model.py delete mode 100644 adapters/tests/__init__.py delete mode 100644 adapters/tests/composition/test_adapter_composition.py delete mode 100644 adapters/tests/composition/test_parallel.py delete mode 100644 adapters/tests/extended/test_adapter_trainer_ext.py delete mode 100644 adapters/tests/fixtures/SiBERT/config.json delete mode 100644 adapters/tests/fixtures/SiBERT/special_tokens_map.json delete mode 100644 adapters/tests/fixtures/SiBERT/tokenizer_config.json delete mode 100644 adapters/tests/fixtures/SiBERT/vocab.txt delete mode 100644 adapters/tests/fixtures/hub-index.sample.json delete mode 100644 adapters/tests/fixtures/sample_text.txt delete mode 100644 adapters/tests/fixtures/samples/MRPC/dev.tsv delete mode 100644 adapters/tests/fixtures/samples/MRPC/train.tsv delete mode 100644 adapters/tests/fixtures/samples/SQUAD/sample.json delete mode 100644 adapters/tests/fixtures/samples/cifar10/cifar10.py delete mode 100644 adapters/tests/fixtures/samples/cifar10/data_batch_1 delete mode 100644 adapters/tests/fixtures/samples/cifar10/data_batch_2 delete mode 100644 adapters/tests/fixtures/samples/cifar10/data_batch_3 delete mode 100644 adapters/tests/fixtures/samples/cifar10/data_batch_4 delete mode 100644 adapters/tests/fixtures/samples/cifar10/data_batch_5 delete mode 100644 adapters/tests/fixtures/samples/cifar10/test_batch delete mode 100644 adapters/tests/fixtures/samples/conll/sample.json delete mode 100644 adapters/tests/fixtures/samples/swag/sample.json delete mode 100644 adapters/tests/fixtures/samples/wmt16/sample.json delete mode 100644 adapters/tests/fixtures/samples/xsum/sample.json delete mode 100644 adapters/tests/fixtures/tests_samples/COCO/coco_annotations.txt delete mode 100644 adapters/tests/fixtures/tests_samples/COCO/coco_panoptic_annotations.txt delete mode 100644 adapters/tests/methods/__init__.py delete mode 100644 adapters/tests/methods/base.py delete mode 100644 adapters/tests/methods/test_adapter_common.py delete mode 100644 adapters/tests/methods/test_compacter.py delete mode 100644 adapters/tests/methods/test_config_union.py delete mode 100644 adapters/tests/methods/test_ia3.py delete mode 100644 adapters/tests/methods/test_lora.py delete mode 100644 adapters/tests/methods/test_prefix_tuning.py delete mode 100644 adapters/tests/methods/test_prompt_tuning.py delete mode 100644 adapters/tests/methods/test_unipelt.py delete mode 100644 adapters/tests/models/__init__.py delete mode 100644 adapters/tests/models/base.py delete mode 100644 adapters/tests/models/test_albert.py delete mode 100644 adapters/tests/models/test_bart.py delete mode 100644 adapters/tests/models/test_beit.py delete mode 100644 adapters/tests/models/test_bert.py delete mode 100644 adapters/tests/models/test_bert_generation.py delete mode 100644 adapters/tests/models/test_clip.py delete mode 100644 adapters/tests/models/test_deberta.py delete mode 100644 adapters/tests/models/test_debertaV2.py delete mode 100644 adapters/tests/models/test_distilbert.py delete mode 100644 adapters/tests/models/test_electra.py delete mode 100644 adapters/tests/models/test_encoder_decoder.py delete mode 100644 adapters/tests/models/test_gpt2.py delete mode 100644 adapters/tests/models/test_gptj.py delete mode 100644 adapters/tests/models/test_llama.py delete mode 100644 adapters/tests/models/test_mbart.py delete mode 100644 adapters/tests/models/test_mt5.py delete mode 100644 adapters/tests/models/test_roberta.py delete mode 100644 adapters/tests/models/test_t5.py delete mode 100644 adapters/tests/models/test_vit.py delete mode 100644 adapters/tests/models/test_xlm_roberta.py delete mode 100644 adapters/tests/models/test_xmod.py delete mode 100644 adapters/tests/test_adapter.py delete mode 100644 adapters/tests/test_adapter_backward_compability.py delete mode 100644 adapters/tests/test_adapter_config.py delete mode 100644 adapters/tests/test_adapter_conversion.py delete mode 100644 adapters/tests/test_adapter_custom_head.py delete mode 100644 adapters/tests/test_adapter_embeddings.py delete mode 100644 adapters/tests/test_adapter_fusion_common.py delete mode 100644 adapters/tests/test_adapter_fusion_config.py delete mode 100644 adapters/tests/test_adapter_heads.py delete mode 100644 adapters/tests/test_adapter_hub.py delete mode 100644 adapters/tests/test_adapter_save_id2label.py delete mode 100644 adapters/tests/test_adapter_trainer.py delete mode 100644 adapters/tests/test_albert.py delete mode 100644 adapters/tests/test_bart.py delete mode 100644 adapters/tests/test_beit.py delete mode 100644 adapters/tests/test_bert.py delete mode 100644 adapters/tests/test_bert_generation.py delete mode 100644 adapters/tests/test_clip.py delete mode 100644 adapters/tests/test_deberta.py delete mode 100644 adapters/tests/test_debertaV2.py delete mode 100644 adapters/tests/test_distilbert.py delete mode 100644 adapters/tests/test_electra.py delete mode 100644 adapters/tests/test_encoder_decoder.py delete mode 100644 adapters/tests/test_gpt2.py delete mode 100644 adapters/tests/test_gptj.py delete mode 100644 adapters/tests/test_llama.py delete mode 100644 adapters/tests/test_mbart.py delete mode 100644 adapters/tests/test_mt5.py delete mode 100644 adapters/tests/test_roberta.py delete mode 100644 adapters/tests/test_t5.py delete mode 100644 adapters/tests/test_vit.py delete mode 100644 adapters/tests/test_xlm_roberta.py delete mode 100644 adapters/tests/test_xmod.py delete mode 100644 adapters/utils/back_comp/README.md delete mode 100644 adapters/utils/back_comp/Utils.py delete mode 100644 adapters/utils/back_comp/compare.sh delete mode 100644 adapters/utils/back_comp/compare_outputs.py delete mode 100644 adapters/utils/back_comp/create_outputs.py delete mode 100644 adapters/utils/check_inits.py delete mode 100644 adapters/utils/convert_xmod_checkpoint.py delete mode 100644 adapters/utils/custom_init_isort.py delete mode 100644 adapters/utils/sort_auto_mappings.py rename system-fig.png => configs/system-fig.png (100%) delete mode 100644 data/extra_langs.csv delete mode 100644 data/lyrics_langs.csv delete mode 100644 wtpsplit/punctuation_xlmr.txt delete mode 100644 wtpsplit/summary_plot.py rename {utils => wtpsplit/utils}/clean_tweets.py (100%) rename {utils => wtpsplit/utils}/download_spacy.py (100%) rename {utils => wtpsplit/utils}/remove_unks.py (100%) diff --git a/README.md b/README.md index 6f37e90a..81db432b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Code for the paper [Segment Any Text: A Universal Approach for Robust, Efficient This repository contains `wtpsplit`, a package for robust, efficient and adaptable sentence segmentation across 85 languages, as well as the code and configs to reproduce the **state-of-the-art** results in 8 distinct corpora and 85 languages demonstrated in our Segment any Text [paper](TODO). -![System Figure](./system-fig.png) +![System Figure](./configs/system-fig.png) ## Installation diff --git a/adapters/CITATION.cff b/adapters/CITATION.cff deleted file mode 100644 index 2a46fd0a..00000000 --- a/adapters/CITATION.cff +++ /dev/null @@ -1,59 +0,0 @@ -cff-version: "1.2.0" -date-released: 2023-11 -message: "If you use this software, please cite it as below." -title: "Adapters: A Unified Library for Parameter-Efficient and - Modular Transfer Learning" -url: "https://github.com/Adapter-Hub/adapters" -authors: - - family-names: Poth - given-names: Clifton - - family-names: Sterz - given-names: Hannah - - family-names: Paul - given-names: Indraneil - - family-names: Purkayastha - given-names: Sukannya - - family-names: Engländer - given-names: Leon - - family-names: Imhof - given-names: Timo - - family-names: Vulić - given-names: Ivan - - family-names: Ruder - given-names: Sebastian - - family-names: Gurevych - given-names: Iryna - - family-names: Pfeiffer - given-names: Jonas -preferred-citation: - type: conference-paper - authors: - - family-names: Poth - given-names: Clifton - - family-names: Sterz - given-names: Hannah - - family-names: Paul - given-names: Indraneil - - family-names: Purkayastha - given-names: Sukannya - - family-names: Engländer - given-names: Leon - - family-names: Imhof - given-names: Timo - - family-names: Vulić - given-names: Ivan - - family-names: Ruder - given-names: Sebastian - - family-names: Gurevych - given-names: Iryna - - family-names: Pfeiffer - given-names: Jonas - booktitle: "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations" - month: 12 - start: 149 - end: 160 - title: "Adapters: A Unified Library for Parameter-Efficient and Modular Transfer Learning" - year: 2023 - publisher: "Association for Computational Linguistics" - url: "https://aclanthology.org/2023.emnlp-demo.13" - address: "Singapore" diff --git a/adapters/LICENSE b/adapters/LICENSE deleted file mode 100644 index 776bedce..00000000 --- a/adapters/LICENSE +++ /dev/null @@ -1,203 +0,0 @@ -Copyright 2020-2024 The AdapterHub Team. All rights reserved. - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/adapters/MANIFEST.in b/adapters/MANIFEST.in deleted file mode 100644 index 1aba38f6..00000000 --- a/adapters/MANIFEST.in +++ /dev/null @@ -1 +0,0 @@ -include LICENSE diff --git a/adapters/Makefile b/adapters/Makefile deleted file mode 100644 index 04b93741..00000000 --- a/adapters/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -.PHONY: extra_style_checks quality style test test-adapter-methods test-adapter-models test-examples - -# make sure to test the local checkout in scripts and not the pre-installed one (don't use quotes!) -export PYTHONPATH = src - -check_dirs := examples tests src utils - -# this target runs checks on all files - -quality: - black --check --preview $(check_dirs) - isort --check-only $(check_dirs) - python utils/custom_init_isort.py --check_only - python utils/sort_auto_mappings.py --check_only - flake8 $(check_dirs) - python utils/check_inits.py - -# Format source code automatically and check is there are any problems left that need manual fixing - -extra_style_checks: - python utils/custom_init_isort.py - python utils/sort_auto_mappings.py - -# this target runs checks on all files and potentially modifies some of them - -style: - black --preview $(check_dirs) - isort $(check_dirs) - ${MAKE} extra_style_checks - -# Run tests for the library - -test: - python -m pytest -n auto --dist=loadfile -s -v ./tests/ - -test-adapter-methods: - python -m pytest --ignore ./tests/models -n auto --dist=loadfile -s -v ./tests/ - -test-adapter-models: - python -m pytest -n auto --dist=loadfile -s -v ./tests/models - -# Run tests for examples - -test-examples: - python -m pytest -n auto --dist=loadfile -s -v ./examples/pytorch/ diff --git a/adapters/README.md b/adapters/README.md deleted file mode 100644 index fc47f617..00000000 --- a/adapters/README.md +++ /dev/null @@ -1,204 +0,0 @@ - - -> **Note**: This repository holds the codebase of the _Adapters_ library, which has replaced `adapter-transformers`. For the legacy codebase, go to: https://github.com/adapter-hub/adapter-transformers-legacy. - -

- -

-

-Adapters -

- -

-A Unified Library for Parameter-Efficient and Modular Transfer Learning -

- -![Tests](https://github.com/Adapter-Hub/adapters/workflows/Tests/badge.svg?branch=adapters) -[![GitHub](https://img.shields.io/github/license/adapter-hub/adapters.svg?color=blue)](https://github.com/adapter-hub/adapters/blob/main/LICENSE) -[![PyPI](https://img.shields.io/pypi/v/adapters)](https://pypi.org/project/adapters/) - -`adapters` is an add-on to [HuggingFace's Transformers](https://github.com/huggingface/transformers) library, integrating adapters into state-of-the-art language models by incorporating **[AdapterHub](https://adapterhub.ml)**, a central repository for pre-trained adapter modules. - -## Installation - -`adapters` currently supports **Python 3.8+** and **PyTorch 1.10+**. -After [installing PyTorch](https://pytorch.org/get-started/locally/), you can install `adapters` from PyPI ... - -``` -pip install -U adapters -``` - -... or from source by cloning the repository: - -``` -git clone https://github.com/adapter-hub/adapters.git -cd adapters -pip install . -``` - -## Quick Tour - -#### Load pre-trained adapters: - -```python -from adapters import AutoAdapterModel -from transformers import AutoTokenizer - -model = AutoAdapterModel.from_pretrained("roberta-base") -tokenizer = AutoTokenizer.from_pretrained("roberta-base") - -model.load_adapter("AdapterHub/roberta-base-pf-imdb", source="hf", set_active=True) - -print(model(**tokenizer("This works great!", return_tensors="pt")).logits) -``` - -**[Learn More](https://docs.adapterhub.ml/loading.html)** - -#### Adapt existing model setups: - -```python -import adapters -from transformers import AutoModelForSequenceClassification - -model = AutoModelForSequenceClassification.from_pretrained("t5-base") - -adapters.init(model) - -model.add_adapter("my_lora_adapter", config="lora") -model.train_adapter("my_lora_adapter") - -# Your regular training loop... -``` - -**[Learn More](https://docs.adapterhub.ml/quickstart.html)** - -#### Flexibly configure adapters: - -```python -from adapters import ConfigUnion, PrefixTuningConfig, ParBnConfig, AutoAdapterModel - -model = AutoAdapterModel.from_pretrained("microsoft/deberta-v3-base") - -adapter_config = ConfigUnion( - PrefixTuningConfig(prefix_length=20), - ParBnConfig(reduction_factor=4), -) -model.add_adapter("my_adapter", config=adapter_config, set_active=True) -``` - -**[Learn More](https://docs.adapterhub.ml/overview.html)** - -#### Easily compose adapters in a single model: - -```python -from adapters import AdapterSetup, AutoAdapterModel -import adapters.composition as ac - -model = AutoAdapterModel.from_pretrained("roberta-base") - -qc = model.load_adapter("AdapterHub/roberta-base-pf-trec") -sent = model.load_adapter("AdapterHub/roberta-base-pf-imdb") - -with AdapterSetup(ac.Parallel(qc, sent)): - print(model(**tokenizer("What is AdapterHub?", return_tensors="pt"))) -``` - -**[Learn More](https://docs.adapterhub.ml/adapter_composition.html)** - -## Useful Resources - -HuggingFace's great documentation on getting started with _Transformers_ can be found [here](https://huggingface.co/transformers/index.html). `adapters` is fully compatible with _Transformers_. - -To get started with adapters, refer to these locations: - -- **[Colab notebook tutorials](https://github.com/Adapter-Hub/adapters/tree/main/notebooks)**, a series notebooks providing an introduction to all the main concepts of (adapter-)transformers and AdapterHub -- **https://docs.adapterhub.ml**, our documentation on training and using adapters with _adapters_ -- **https://adapterhub.ml** to explore available pre-trained adapter modules and share your own adapters -- **[Examples folder](https://github.com/Adapter-Hub/adapters/tree/main/examples/pytorch)** of this repository containing HuggingFace's example training scripts, many adapted for training adapters - -## Implemented Methods - -Currently, adapters integrates all architectures and methods listed below: - -| Method | Paper(s) | Quick Links | -| --- | --- | --- | -| Bottleneck adapters | [Houlsby et al. (2019)](https://arxiv.org/pdf/1902.00751.pdf)
[Bapna and Firat (2019)](https://arxiv.org/pdf/1909.08478.pdf) | [Quickstart](https://docs.adapterhub.ml/quickstart.html), [Notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/01_Adapter_Training.ipynb) | -| AdapterFusion | [Pfeiffer et al. (2021)](https://aclanthology.org/2021.eacl-main.39.pdf) | [Docs: Training](https://docs.adapterhub.ml/training.html#train-adapterfusion), [Notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/03_Adapter_Fusion.ipynb) | -| MAD-X,
Invertible adapters | [Pfeiffer et al. (2020)](https://aclanthology.org/2020.emnlp-main.617/) | [Notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/04_Cross_Lingual_Transfer.ipynb) | -| AdapterDrop | [Rücklé et al. (2021)](https://arxiv.org/pdf/2010.11918.pdf) | [Notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/05_Adapter_Drop_Training.ipynb) | -| MAD-X 2.0,
Embedding training | [Pfeiffer et al. (2021)](https://arxiv.org/pdf/2012.15562.pdf) | [Docs: Embeddings](https://docs.adapterhub.ml/embeddings.html), [Notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/08_NER_Wikiann.ipynb) | -| Prefix Tuning | [Li and Liang (2021)](https://arxiv.org/pdf/2101.00190.pdf) | [Docs](https://docs.adapterhub.ml/methods.html#prefix-tuning) | -| Parallel adapters,
Mix-and-Match adapters | [He et al. (2021)](https://arxiv.org/pdf/2110.04366.pdf) | [Docs](https://docs.adapterhub.ml/method_combinations.html#mix-and-match-adapters) | -| Compacter | [Mahabadi et al. (2021)](https://arxiv.org/pdf/2106.04647.pdf) | [Docs](https://docs.adapterhub.ml/methods.html#compacter) | -| LoRA | [Hu et al. (2021)](https://arxiv.org/pdf/2106.09685.pdf) | [Docs](https://docs.adapterhub.ml/methods.html#lora) | -| (IA)^3 | [Liu et al. (2022)](https://arxiv.org/pdf/2205.05638.pdf) | [Docs](https://docs.adapterhub.ml/methods.html#ia-3) | -| UniPELT | [Mao et al. (2022)](https://arxiv.org/pdf/2110.07577.pdf) | [Docs](https://docs.adapterhub.ml/method_combinations.html#unipelt) | -| Prompt Tuning | [Lester et al. (2021)](https://aclanthology.org/2021.emnlp-main.243/) | [Docs](https://docs.adapterhub.ml/methods.html#prompt-tuning) | - -## Supported Models - -We currently support the PyTorch versions of all models listed on the **[Model Overview](https://docs.adapterhub.ml/model_overview.html) page** in our documentation. - -## Developing & Contributing - -To get started with developing on _Adapters_ yourself and learn more about ways to contribute, please see https://docs.adapterhub.ml/contributing.html. - -## Citation - -If you use _Adapters_ in your work, please consider citing our library paper: [Adapters: A Unified Library for Parameter-Efficient and Modular Transfer Learning](https://arxiv.org/abs/2311.11077) - -``` -@inproceedings{poth-etal-2023-adapters, - title = "Adapters: A Unified Library for Parameter-Efficient and Modular Transfer Learning", - author = {Poth, Clifton and - Sterz, Hannah and - Paul, Indraneil and - Purkayastha, Sukannya and - Engl{\"a}nder, Leon and - Imhof, Timo and - Vuli{\'c}, Ivan and - Ruder, Sebastian and - Gurevych, Iryna and - Pfeiffer, Jonas}, - booktitle = "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations", - month = dec, - year = "2023", - address = "Singapore", - publisher = "Association for Computational Linguistics", - url = "https://aclanthology.org/2023.emnlp-demo.13", - pages = "149--160", -} -``` - -Alternatively, for the predecessor `adapter-transformers`, the Hub infrastructure and adapters uploaded by the AdapterHub team, please consider citing our initial paper: [AdapterHub: A Framework for Adapting Transformers](https://arxiv.org/abs/2007.07779) - -``` -@inproceedings{pfeiffer2020AdapterHub, - title={AdapterHub: A Framework for Adapting Transformers}, - author={Pfeiffer, Jonas and - R{\"u}ckl{\'e}, Andreas and - Poth, Clifton and - Kamath, Aishwarya and - Vuli{\'c}, Ivan and - Ruder, Sebastian and - Cho, Kyunghyun and - Gurevych, Iryna}, - booktitle={Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations}, - pages={46--54}, - year={2020} -} -``` diff --git a/adapters/conftest.py b/adapters/conftest.py deleted file mode 100644 index 93673cd2..00000000 --- a/adapters/conftest.py +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright 2020 The HuggingFace Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# tests directory-specific settings - this file is run automatically -# by pytest before any tests are run - -import doctest -import sys -import warnings -import os -from os.path import abspath, dirname, join - - -# allow having multiple repository checkouts and not needing to remember to rerun -# 'pip install -e .[dev]' when switching between checkouts and running tests. -git_repo_path = abspath(join(dirname(__file__), "src")) -sys.path.insert(1, git_repo_path) - -# add original HF tests folder -sys.path.insert(1, abspath(join(dirname(__file__), "hf_transformers"))) - -# silence FutureWarning warnings in tests since often we can't act on them until -# they become normal warnings - i.e. the tests still need to test the current functionality -warnings.simplefilter(action="ignore", category=FutureWarning) - - -# skip pipeline tests of HF by default -os.environ["RUN_PIPELINE_TESTS"] = "false" - - -def pytest_configure(config): - config.addinivalue_line( - "markers", "is_pt_tf_cross_test: mark test to run only when PT and TF interactions are tested" - ) - config.addinivalue_line( - "markers", "is_pt_flax_cross_test: mark test to run only when PT and FLAX interactions are tested" - ) - config.addinivalue_line("markers", "is_staging_test: mark test to run only in the staging environment") - - -def pytest_addoption(parser): - from transformers.testing_utils import pytest_addoption_shared - - pytest_addoption_shared(parser) - - -def pytest_terminal_summary(terminalreporter): - from transformers.testing_utils import pytest_terminal_summary_main - - make_reports = terminalreporter.config.getoption("--make-reports") - if make_reports: - pytest_terminal_summary_main(terminalreporter, id=make_reports) - - -def pytest_sessionfinish(session, exitstatus): - # If no tests are collected, pytest exists with code 5, which makes the CI fail. - if exitstatus == 5: - session.exitstatus = 0 - - -# Doctest custom flag to ignore output. -IGNORE_RESULT = doctest.register_optionflag('IGNORE_RESULT') - -OutputChecker = doctest.OutputChecker - - -class CustomOutputChecker(OutputChecker): - def check_output(self, want, got, optionflags): - if IGNORE_RESULT & optionflags: - return True - return OutputChecker.check_output(self, want, got, optionflags) - - -doctest.OutputChecker = CustomOutputChecker diff --git a/adapters/docs/Makefile b/adapters/docs/Makefile deleted file mode 100644 index d83273c4..00000000 --- a/adapters/docs/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build -SOURCEDIR = . -BUILDDIR = _build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -html-multi-version: - sphinx-multiversion "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS) $(O) - python scripts/post_build.py "$(BUILDDIR)/html" - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/adapters/docs/README.md b/adapters/docs/README.md deleted file mode 100644 index d4c2e213..00000000 --- a/adapters/docs/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# The adapters documentation - -This is the documentation of the adapter-related parts of the transformers library and the Adapter-Hub. Hugging Face's documentation of the base library is located in the `/docs` folder. - -## Installing & Building - -Building the documentation requires some additional packages installed. You can install them by running the following command in the root folder: - -```bash -pip install -e ".[docs]" -``` - -Cleaning and regenerating the documentation files can be done using `sphinx` by running the following command in the `/docs` folder: - -```bash -make clean && make html -``` - -The build output will be located in `/docs/_build/html`. diff --git a/adapters/docs/_config.py b/adapters/docs/_config.py deleted file mode 100644 index cd76263e..00000000 --- a/adapters/docs/_config.py +++ /dev/null @@ -1,14 +0,0 @@ -# docstyle-ignore -INSTALL_CONTENT = """ -# Transformers installation -! pip install transformers datasets -# To install from source instead of the last release, comment the command above and uncomment the following one. -# ! pip install git+https://github.com/huggingface/transformers.git -""" - -notebook_first_cells = [{"type": "code", "content": INSTALL_CONTENT}] -black_avoid_patterns = { - "{processor_class}": "FakeProcessorClass", - "{model_class}": "FakeModelClass", - "{object_class}": "FakeObjectClass", -} diff --git a/adapters/docs/_static/custom.css b/adapters/docs/_static/custom.css deleted file mode 100644 index e4ba5749..00000000 --- a/adapters/docs/_static/custom.css +++ /dev/null @@ -1,38 +0,0 @@ -/* The search field on top of the toc tree */ -/* Mobile header */ -.wy-side-nav-search, .wy-nav-top { - background: #39B3C6; -} -/* toc tree text */ -.wy-menu-vertical header, -.wy-menu-vertical p.caption { - color: #39B3C6 -} -/* toc tree activated link */ -.wy-menu-vertical a:active { - background-color:#39B3C6; -} -/* Links */ -a { - color: #39B3C6 -} -/* Source spans */ -.rst-content .viewcode-link, .rst-content .viewcode-back{ - color: #39B3C6; -} -/* The literal code blocks */ -.rst-content tt.literal, .rst-content tt.literal, .rst-content code.literal { - color: #666; -} -.rst-content a code.literal { - color: #39B3C6; -} -/* Sidebar scroll space for version switcher */ -.wy-side-scroll { - padding-bottom: 1em; -} - -/* override table no-wrap */ -.wy-table-responsive table td, .wy-table-responsive table th { - white-space: normal; -} diff --git a/adapters/docs/adapter_composition.md b/adapters/docs/adapter_composition.md deleted file mode 100644 index 0851e797..00000000 --- a/adapters/docs/adapter_composition.md +++ /dev/null @@ -1,305 +0,0 @@ -# Adapter Activation and Composition - -With `adapters`, it becomes possible to combine multiple adapters trained on different tasks in so-called *adapter compositions*. -To enable such compositions, `adapters` comes with a modular and flexible concept to define how the input to the model should flow through the available adapters. -This allows, e.g., stacking ([_MAD-X_](https://arxiv.org/pdf/2005.00052.pdf)) and fusing ([_AdapterFusion_](https://arxiv.org/pdf/2005.00247.pdf)) adapters and even more complex adapter setups. - -## Adapter Activation - -The single location where all the adapter composition magic happens is the `active_adapters` property of the model class. -In the simplest case, you can set the name of a single adapter here to activate it: -```python -model.active_adapters = "adapter_name" -``` - -```{eval-rst} -.. important:: - ``active_adapters`` defines which available adapters are used in each forward and backward pass through the model. This means: - - - You cannot activate an adapter before previously adding it to the model using either ``add_adapter()`` or ``load_adapter()``. - - All adapters not mentioned in the ``active_adapters`` setup are ignored, although they might have been loaded into the model. Thus, after adding an adapter, make sure to activate it. -``` -Note that we also could have used the [`set_active_adapters`](adapters.) method with `model.set_active_adapters("adapter_name")` which does the same. - -Alternatively, the [`AdapterSetup`](adapters.AdapterSetup) context manager allows dynamic configuration of activated setups without changing the model state: - -```python -from adapters import AdapterSetup - -model = ... -model.add_adapter("adapter_name") - -with AdapterSetup("adapter_name"): - # will use the adapter named "adapter_name" in the forward pass - outputs = model(**inputs) -``` - -## Composition Blocks - Overview - -The basic building blocks of the more advanced setups are objects derived from `AdapterCompositionBlock`, -each representing a different possibility to combine single adapters. -The following table gives an overview on the supported composition blocks and their support by different adapter methods. - -| Block | Bottleneck
Adapters | Prefix
Tuning | Compacter | LoRA | (IA)³ | Prompt Tuning | -| --- | --- | --- | --- | --- | --- | --- | -| [`Stack`](#stack) | ✅ | ✅ | ✅ | ✅(*) | ✅(*) | | -| [`Fuse`](#fuse) | ✅ | | ✅ | | | | -| [`Split`](#split) | ✅ | | ✅ | | | | -| [`BatchSplit`](#batchsplit) | ✅ | ✅ | ✅ | ✅(*) | ✅(*) | | -| [`Parallel`](#parallel) | ✅ | ✅ | ✅ | ✅(*) | ✅(*) | | -| [Output averaging](#output-averaging) | ✅ | | ✅ | ✅(*) | ✅(*) | | -| [Parameter averaging](#parameter-averaging) | ✅ | ✅ | ✅ | ✅ | ✅ | | - -(*) except for Deberta-v1, GPT-2. - -Next, we present all composition blocks in more detail. - -## `Stack` - -```{eval-rst} -.. figure:: img/stacking_adapters.png - :height: 300 - :align: center - :alt: Illustration of stacking adapters. - - Stacking adapters using the 'Stack' block. -``` - -The `Stack` block can be used to stack multiple adapters on top of each other. -This kind of adapter composition is used e.g. in the _MAD-X_ framework for cross-lingual transfer [(Pfeiffer et al., 2020)](https://arxiv.org/pdf/2005.00052.pdf), where language and task adapters are stacked on top of each other. -For more, check out [this Colab notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/04_Cross_Lingual_Transfer.ipynb) on cross-lingual transfer. - -In the following example, we stack the adapters `a`, `b` and `c` so that in each layer, the input is first passed through `a`, the output of `a` is then inputted to `b` and the output of `b` is finally inputted to `c`. - -```python -import adapters.composition as ac - -// ... - -model.add_adapter("a") -model.add_adapter("b") -model.add_adapter("c") - -model.active_adapters = ac.Stack("a", "b", "c") -``` - -```{eval-rst} -.. note:: - When using stacking for prefix tuning the stacked prefixed are prepended to the input states from right to left, i.e. `Stack("a", "b", "c")` will first prepend prefix states for "a" to the input vectors, then prepend "b" to the resulting vectors etc. -``` - -## `Fuse` - -```{eval-rst} -.. figure:: img/Fusion.png - :height: 300 - :align: center - :alt: Illustration of AdapterFusion. - - Fusing adapters with AdapterFusion. -``` - -The `Fuse` block can be used to activate a fusion layer of adapters. -_AdapterFusion_ is a non-destructive way to combine the knowledge of multiple pre-trained adapters on a new downstream task, proposed by [Pfeiffer et al., 2021](https://arxiv.org/pdf/2005.00247.pdf). -In the following example, we activate the adapters `d`, `e` and `f` as well as the fusion layer that combines the outputs of all three. -The fusion layer is added beforehand using `model.add_adapter_fusion()`, where we specify the names of the adapters which should be fused. - -```python -import adapters.composition as ac - -// ... - -model.add_adapter("d") -model.add_adapter("e") -model.add_adapter("f") -model.add_adapter_fusion(["d", "e", "f"]) - -model.active_adapters = ac.Fuse("d", "e", "f") -``` - -```{eval-rst} -.. important:: - Fusing adapters with the ``Fuse`` block only works successfully if an adapter fusion layer combining all of the adapters listed in the ``Fuse`` has been added to the model. - This can be done either using ``add_adapter_fusion()`` or ``load_adapter_fusion()``. -``` - -To learn how training an _AdapterFusion_ layer works, check out [this Colab notebook](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/03_Adapter_Fusion.ipynb) from the `adapters` repo. - -#### Retrieving AdapterFusion attentions - -Finally, it is possible to retrieve the attention scores computed by each fusion layer in a forward pass of the model. -These scores can be used for analyzing the fused adapter blocks and can serve as the basis for visualizations similar to those in the AdapterFusion paper. -You can collect the fusion attention scores by passing `output_adapter_fusion_attentions=True` to the model forward call. -The scores for each layer will then be saved in the `adapter_fusion_attentions` attribute of the output: - -```python -outputs = model(**inputs, output_adapter_fusion_attentions=True) -attention_scores = outputs.adapter_fusion_attentions -``` -Note that this parameter is only available to base model classes and [AdapterModel classes](prediction_heads.md#adaptermodel-classes). -In the example, `attention_scores` holds a dictionary of the following form: -``` -{ - '': { - : { - '': np.array([...]), - ... - }, - ... - }, - ... -} -``` - -## `Split` - -```{eval-rst} -.. figure:: img/splitting_adapters.png - :height: 300 - :align: center - :alt: Illustration of splitting adapters. - - Splitting the input between two adapters using the 'Split' block. -``` - -The `Split` block can be used to split an input sequence between multiple adapters. -This is done by specifying split indices at which the sequences should be divided. -In the following example, we split each input sequence between adapters `g` and `h`. -For each sequence, all tokens from 0 up to 63 are forwarded through `g` while the next 64 tokens are forwarded through `h`: - -```python -import adapters.composition as ac - -// ... - -model.add_adapter("g") -model.add_adapter("h") - -model.active_adapters = ac.Split("g", "h", splits=[64, 64]) -``` - -## `BatchSplit` - -The `BatchSplit` block is an alternative to split the input between several adapters. It does not split the input sequences but the -batch into smaller batches. As a result, the input sequences remain untouched. - -In the following example, we split the batch between adapters `i`, `k` and `l`. The `batch_sizes`parameter specifies -the batch size for each of the adapters. The adapter `i` gets two sequences, `k`gets 1 sequence and `l` gets two sequences. -If all adapters should get the same batch size this can be specified by passing one batch size e.g. `batch_sizes = 2`. The sum -specified batch has to match the batch size of the input. -```python -import adapters.composition as ac - -// ... - -model.add_adapter("i") -model.add_adapter("k") -model.add_adapter("l") - -model.active_adapters = ac.BatchSplit("i", "k", "l", batch_sizes=[2, 1, 2]) - -``` - -## `Parallel` - -```{eval-rst} -.. figure:: img/parallel.png - :height: 300 - :align: center - :alt: Illustration of parallel adapter forward pass. - - Parallel adapter forward pass as implemented by the 'Parallel' block. The input is replicated at the first layer with parallel adapters. -``` - -The `Parallel` block can be used to enable parallel multi-task training and inference on different adapters, each with their own prediction head. -Parallel adapter inference was first used in _AdapterDrop: On the Efficiency of Adapters in Transformers_ [(Rücklé et al., 2020)](https://arxiv.org/pdf/2010.11918.pdf). - -In the following example, we load two adapters for semantic textual similarity (STS) from the Hub, one trained on the STS benchmark, the other trained on the MRPC dataset. -We activate a parallel setup where the input is passed through both adapters and their respective prediction heads. - -```python -import adapters.composition as ac - -model = AutoAdapterModel.from_pretrained("distilbert-base-uncased") -tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased") - -adapter1 = model.load_adapter("sts/sts-b@ukp") -adapter2 = model.load_adapter("sts/mrpc@ukp") - -model.active_adapters = ac.Parallel(adapter1, adapter2) - -input_ids = tokenizer("Adapters are great!", "Adapters are awesome!", return_tensors="pt") - -output1, output2 = model(**input_ids) - -print("STS-B adapter output:", output1[0].item()) -print("MRPC adapter output:", bool(torch.argmax(output2[0]).item())) -``` - -## Averaging Outputs or Parameters - -Following approaches of ensembling full models at inference time for better generalization, recent work on adapters has explored methods of averaging pre-trained adapters. -This includes averaging output representations of adapters ([Wang et al., 2021](https://arxiv.org/pdf/2109.04877.pdf)) as well as averaging adapter parameters ([Wang et al., 2022](https://arxiv.org/pdf/2205.12410.pdf), [Chronopoulou et al., 2023](https://aclanthology.org/2023.findings-eacl.153.pdf)). -`adapters` provides built-in support for both types of inference time averaging methods. - -### Output averaging - -Output averaging allows to dynamically aggregate the output representations of multiple adapters in a model forward pass via weighted averaging. -This is realized via the `Average` composition block that works similar to other composition blocks. -In the example below, the three adapters are averaged with the weights `0.1` for `m`, `0.6` for `n` and `0.3` for `o`. - -```python -import adapters.composition as ac - -// ... - -model.add_adapter("m") -model.add_adapter("n") -model.add_adapter("o") - -model.active_adapters = ac.Average("m", "n", "o", weights=[0.1, 0.6, 0.3]) -``` - -### Parameter averaging - -Parameter averaging enables creating a new adapter via weighted averaging of the parameters of multiple pre-trained adapters. -As this process is typically not done dynamically at runtime, `adapters` provides `average_adapter()` as a dedicated method for parameter averaging. -In the example below, the parameters of the adapters `m`, `n` and `o` are averaged (with weights `0.1` `0.6` and `0.3`, respectively) to create a new adapter `avg`. -Note that for this to succeed, all averaged adapters must use the same adapter configuration. - -```python -model.add_adapter("m") -model.add_adapter("n") -model.add_adapter("o") - -model.average_adapter("avg", ["m", "n", "o"], weights=[0.1, 0.6, 0.3]) -``` - -Compared to output averaging, parameter averaging of adapters has the advantage of not inducing any additional inference time relative to using a single adapter. - -For both output and parameter averaging, passed weights are normalized by default. -To disable normalization, pass `normalize_weights=False`. - -## Nesting composition blocks - -Of course, it is also possible to combine different composition blocks in one adapter setup. -E.g., we can nest a `Split` block within a `Stack` of adapters: - -```python -import adapters.composition as ac - -model.active_adapters = ac.Stack("a", ac.Split("b", "c", splits=60)) -``` - -However, combinations of adapter composition blocks cannot be arbitrarily deep. All currently supported possibilities are visualized in the table below. - -|Block|Supported Nesting| -|---|---| -| [`Stack`](#stack)|[str, Fuse, Split, Parallel, BatchSplit, Average]| -| [`Fuse`](#fuse)|[str, Stack]| -|[`Split`](#split)|[str, Split, Stack, BatchSplit, Average]| -|[`Parallel`](#parallel)|[str, Stack, BatchSplit, Average]| -|[`BatchSplit`](#batchsplit)|[str, Stack, Split, BatchSplit, Average]| -|[`Average`](#output-averaging)|[str, Stack, Split, BatchSplit]| - -In the table, `str` represents an adapter, e.g. adapter "a" in the nesting example above. Depending on the individual model, some nested compositions might not be possible. diff --git a/adapters/docs/classes/adapter_config.rst b/adapters/docs/classes/adapter_config.rst deleted file mode 100644 index 91a9f506..00000000 --- a/adapters/docs/classes/adapter_config.rst +++ /dev/null @@ -1,95 +0,0 @@ -Adapter Configuration -======================= - -Classes representing the architectures of adapter modules and fusion layers. - -Single (bottleneck) adapters -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.AdapterConfig - :members: - -.. autoclass:: adapters.BnConfig - :members: - :inherited-members: Mapping - -.. autoclass:: adapters.SeqBnConfig - :members: - -.. autoclass:: adapters.SeqBnInvConfig - :members: - -.. autoclass:: adapters.DoubleSeqBnConfig - :members: - -.. autoclass:: adapters.DoubleSeqBnInvConfig - :members: - -.. autoclass:: adapters.ParBnConfig - :members: - -.. autoclass:: adapters.CompacterConfig - :members: - -.. autoclass:: adapters.CompacterPlusPlusConfig - :members: - -Prefix Tuning -~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.PrefixTuningConfig - :members: - :inherited-members: Mapping - -LoRAConfig -~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.LoRAConfig - :members: - :inherited-members: Mapping - -IA3Config -~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.IA3Config - :members: - :inherited-members: Mapping - -PromptTuningConfig -~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.PromptTuningConfig - :members: - :inherited-members: Mapping - -Combined configurations -~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.ConfigUnion - :members: - :inherited-members: Mapping - -.. autoclass:: adapters.MAMConfig - :members: - -.. autoclass:: adapters.UniPELTConfig - :members: - -Adapter Fusion -~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.AdapterFusionConfig - :members: - :inherited-members: Mapping - -.. autoclass:: adapters.StaticAdapterFusionConfig - :members: - -.. autoclass:: adapters.DynamicAdapterFusionConfig - :members: - -Adapter Setup -~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.AdapterSetup - :members: diff --git a/adapters/docs/classes/adapter_layer.rst b/adapters/docs/classes/adapter_layer.rst deleted file mode 100644 index 01233d63..00000000 --- a/adapters/docs/classes/adapter_layer.rst +++ /dev/null @@ -1,12 +0,0 @@ -Adapter Implementation -======================= - -The following classes define the common interfaces for all adapter methods. -They further hold logic shared by all adapter implementations. -All newly added adapter methods should inherit from either one of these classes. - -.. autoclass:: adapters.AdapterLayerBase - :members: - -.. autoclass:: adapters.ComposableAdapterLayerBase - :members: diff --git a/adapters/docs/classes/adapter_training.rst b/adapters/docs/classes/adapter_training.rst deleted file mode 100644 index 67784c5d..00000000 --- a/adapters/docs/classes/adapter_training.rst +++ /dev/null @@ -1,10 +0,0 @@ -Adapter Training -==================== - -Classes and methods related to training adapters. - -.. automodule:: adapters.training - :members: - -.. automodule:: adapters.trainer - :members: diff --git a/adapters/docs/classes/adapter_utils.rst b/adapters/docs/classes/adapter_utils.rst deleted file mode 100644 index 957e2aab..00000000 --- a/adapters/docs/classes/adapter_utils.rst +++ /dev/null @@ -1,8 +0,0 @@ -Adapter Utilities -==================== - -A collection of utility methods mainly related to searching and loading adapter modules from -Adapter-Hub. - -.. automodule:: adapters.utils - :members: diff --git a/adapters/docs/classes/model_adapters_config.rst b/adapters/docs/classes/model_adapters_config.rst deleted file mode 100644 index 130f7b64..00000000 --- a/adapters/docs/classes/model_adapters_config.rst +++ /dev/null @@ -1,7 +0,0 @@ -Model Adapters Config -======================= - -This class manages the setup and configuration of adapter modules in a pre-trained model. - -.. autoclass:: adapters.ModelAdaptersConfig - :members: diff --git a/adapters/docs/classes/model_mixins.rst b/adapters/docs/classes/model_mixins.rst deleted file mode 100644 index 3a43525e..00000000 --- a/adapters/docs/classes/model_mixins.rst +++ /dev/null @@ -1,43 +0,0 @@ -Model Mixins -======================= - -These classes provide the basis of adapter module integration into model classes such as adapter saving and loading. -Depending on the model, one of these mixins should be implemented by every adapter-supporting model class. - -InvertibleAdaptersMixin ----------------------------------- - -.. autoclass:: adapters.InvertibleAdaptersMixin - :members: - - -EmbeddingAdaptersMixin ----------------------------------- - -.. autoclass:: adapters.EmbeddingAdaptersMixin - :members: - - -ModelAdaptersMixin ------------------- - -.. autoclass:: adapters.ModelAdaptersMixin - :members: - -ModelWithHeadsAdaptersMixin ----------------------------------- - -.. autoclass:: adapters.ModelWithHeadsAdaptersMixin - :members: - -ModelWithFlexibleHeadsAdaptersMixin ---------------------------------------- - -.. autoclass:: adapters.ModelWithFlexibleHeadsAdaptersMixin - :members: - -PushAdapterToHubMixin ----------------------- - -.. autoclass:: adapters.hub_mixin.PushAdapterToHubMixin - :members: diff --git a/adapters/docs/classes/models/albert.rst b/adapters/docs/classes/models/albert.rst deleted file mode 100644 index 8db0d0c1..00000000 --- a/adapters/docs/classes/models/albert.rst +++ /dev/null @@ -1,22 +0,0 @@ -ALBERT -====== - -.. note:: - Adapter implementation notes for ALBERT: - - As layers are shared between groups, adapters added to a layer are also shared between groups. Therefore, changing the adapter configuration for a layer affects the behavior of all groups that use this layer. - - As usual, the ``leave_out`` parameter can be used to specify the layers in which adapters should be added. The layer IDs are counted by putting all layers of the groups into a sequence depending on the group number and their position in the group. I.e., for a ALBERT model with `inner_group_num=2` the first layer of the first group has ID 0, the second layer of the first group has ID 1, the first layer of the second group has ID 2, etc. - - -The ALBERT model was proposed in `ALBERT: A Lite BERT for Self-supervised Learning of Language Representations `__ -by Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut. -It presents two parameter-reduction techniques to lower memory consumption and increase the training speed of BERT: - -- Splitting the embedding matrix into two smaller matrices. -- Using repeating layers split among groups. - -AlbertAdapterModel -~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.AlbertAdapterModel - :members: - :inherited-members: AlbertPreTrainedModel diff --git a/adapters/docs/classes/models/auto.rst b/adapters/docs/classes/models/auto.rst deleted file mode 100644 index f4081a77..00000000 --- a/adapters/docs/classes/models/auto.rst +++ /dev/null @@ -1,11 +0,0 @@ -Auto Classes -============ - -Similar to the ``AutoModel`` classes built-in into HuggingFace Transformers, adapters provides an ``AutoAdapterModel`` class. -As with other auto classes, the correct adapter model class is automatically instantiated based on the pre-trained model passed to the ``from_pretrained()`` method. - -AutoAdapterModel -~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.AutoAdapterModel - :members: diff --git a/adapters/docs/classes/models/bart.rst b/adapters/docs/classes/models/bart.rst deleted file mode 100644 index 5ea8eeb1..00000000 --- a/adapters/docs/classes/models/bart.rst +++ /dev/null @@ -1,25 +0,0 @@ -BART -===== - -The Bart model was proposed in `BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, -Translation, and Comprehension `__ by Mike Lewis, Yinhan Liu, Naman Goyal, Marjan -Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Ves Stoyanov and Luke Zettlemoyer on 29 Oct, 2019. - -According to the abstract, - -- Bart uses a standard seq2seq/machine translation architecture with a bidirectional encoder (like BERT) and a - left-to-right decoder (like GPT). -- The pretraining task involves randomly shuffling the order of the original sentences and a novel in-filling scheme, - where spans of text are replaced with a single mask token. -- BART is particularly effective when fine tuned for text generation but also works well for comprehension tasks. It - matches the performance of RoBERTa with comparable training resources on GLUE and SQuAD, achieves new - state-of-the-art results on a range of abstractive dialogue, question answering, and summarization tasks, with gains - of up to 6 ROUGE. - - -BartAdapterModel -~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.BartAdapterModel - :members: - :inherited-members: BartPretrainedModel diff --git a/adapters/docs/classes/models/beit.rst b/adapters/docs/classes/models/beit.rst deleted file mode 100644 index 8d581272..00000000 --- a/adapters/docs/classes/models/beit.rst +++ /dev/null @@ -1,27 +0,0 @@ -BEiT -====== - -The Bidirectional Encoder representation from Image Transformers (BEiT) model was proposed in `BERT Pre-Training of Image -Transformers `__ by Hangbo Bao, Li Dong, Songhao Piao, Furu Wei. - - -The abstract from the paper is the following: - -*We introduce a self-supervised vision representation model BEiT, which stands for Bidirectional Encoder representation -from Image Transformers. Following BERT developed in the natural language processing area, we propose a masked image -modeling task to pretrain vision Transformers. Specifically, each image has two views in our pre-training, i.e, image -patches (such as 16x16 pixels), and visual tokens (i.e., discrete tokens). We first "tokenize" the original image into -visual tokens. Then we randomly mask some image patches and fed them into the backbone Transformer. The pre-training -objective is to recover the original visual tokens based on the corrupted image patches. After pre-training BEiT, we -directly fine-tune the model parameters on downstream tasks by appending task layers upon the pretrained encoder. -Experimental results on image classification and semantic segmentation show that our model achieves competitive results -with previous pre-training methods. For example, base-size BEiT achieves 83.2% top-1 accuracy on ImageNet-1K, -significantly outperforming from-scratch DeiT training (81.8%) with the same setup. Moreover, large-size BEiT obtains -86.3% only using ImageNet-1K, even outperforming ViT-L with supervised pre-training on ImageNet-22K (85.2%).* - -BeitAdapterModel -~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.BeitAdapterModel - :members: - :inherited-members: BeitPreTrainedModel diff --git a/adapters/docs/classes/models/bert-generation.rst b/adapters/docs/classes/models/bert-generation.rst deleted file mode 100644 index ebcdb320..00000000 --- a/adapters/docs/classes/models/bert-generation.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. - Copyright 2020 The HuggingFace Team. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - specific language governing permissions and limitations under the License. - -BertGeneration ------------------------------------------------------------------------------------------------------------------------ - -Overview -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The BertGeneration model is a BERT model that can be leveraged for sequence-to-sequence tasks using -EncoderDecoderModel as proposed in `Leveraging Pre-trained Checkpoints for Sequence Generation -Tasks `__ by Sascha Rothe, Shashi Narayan, Aliaksei Severyn. - -The abstract from the paper is the following: - -*Unsupervised pretraining of large neural models has recently revolutionized Natural Language Processing. By -warm-starting from the publicly released checkpoints, NLP practitioners have pushed the state-of-the-art on multiple -benchmarks while saving significant amounts of compute time. So far the focus has been mainly on the Natural Language -Understanding tasks. In this paper, we demonstrate the efficacy of pre-trained checkpoints for Sequence Generation. We -developed a Transformer-based sequence-to-sequence model that is compatible with publicly available pre-trained BERT, -GPT-2 and RoBERTa checkpoints and conducted an extensive empirical study on the utility of initializing our model, both -encoder and decoder, with these checkpoints. Our models result in new state-of-the-art results on Machine Translation, -Text Summarization, Sentence Splitting, and Sentence Fusion.* - - -BertGenerationAdapterModel -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.BertGenerationAdapterModel - :members: - :inherited-members: BertGenerationPreTrainedModel diff --git a/adapters/docs/classes/models/bert.rst b/adapters/docs/classes/models/bert.rst deleted file mode 100644 index c022d137..00000000 --- a/adapters/docs/classes/models/bert.rst +++ /dev/null @@ -1,14 +0,0 @@ -BERT -====== - -The BERT model was proposed in `BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding `__ -by Jacob Devlin, Ming-Wei Chang, Kenton Lee and Kristina Toutanova. It is a bidirectional transformer -pre-trained using a combination of masked language modeling objective and next sentence prediction. - - -BertAdapterModel -~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.BertAdapterModel - :members: - :inherited-members: BertPreTrainedModel diff --git a/adapters/docs/classes/models/clip.rst b/adapters/docs/classes/models/clip.rst deleted file mode 100644 index 2112cf74..00000000 --- a/adapters/docs/classes/models/clip.rst +++ /dev/null @@ -1,50 +0,0 @@ -CLIP -===== - -.. note:: - Adapter implementation notes: - - CLIP consists of two separate Transformer encoder models, a ViT-style Transformer for visual features and a language model for textual features. Both encoders can be fitted with adapters. As usual, the ``leave_out`` parameter can be used to specify the layers in which adapters should be added. For CLIP, layer IDs are counted globally across both encoders, starting from the text encoder. I.e., for a CLIP model with 12 layers in each Transformer encoder, the text encoder will have IDs 0-11 and the vision encoder will have IDs 12-23. - - As CLIP does not come with pre-supported task-specific prediction heads, there is currently no ``CLIPAdapterModel`` class. Use ``CLIPModel`` instead. - -The CLIP model was proposed in `Learning Transferable Visual Models From Natural Language Supervision `_ by Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, -Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, Ilya Sutskever. CLIP -(Contrastive Language-Image Pre-Training) is a neural network trained on a variety of (image, text) pairs. It can be -instructed in natural language to predict the most relevant text snippet, given an image, without directly optimizing -for the task, similarly to the zero-shot capabilities of GPT-2 and 3. - -The abstract from the paper is the following: - -*State-of-the-art computer vision systems are trained to predict a fixed set of predetermined object categories. This -restricted form of supervision limits their generality and usability since additional labeled data is needed to specify -any other visual concept. Learning directly from raw text about images is a promising alternative which leverages a -much broader source of supervision. We demonstrate that the simple pre-training task of predicting which caption goes -with which image is an efficient and scalable way to learn SOTA image representations from scratch on a dataset of 400 -million (image, text) pairs collected from the internet. After pre-training, natural language is used to reference -learned visual concepts (or describe new ones) enabling zero-shot transfer of the model to downstream tasks. We study -the performance of this approach by benchmarking on over 30 different existing computer vision datasets, spanning tasks -such as OCR, action recognition in videos, geo-localization, and many types of fine-grained object classification. The -model transfers non-trivially to most tasks and is often competitive with a fully supervised baseline without the need -for any dataset specific training. For instance, we match the accuracy of the original ResNet-50 on ImageNet zero-shot -without needing to use any of the 1.28 million training examples it was trained on. We release our code and pre-trained -model weights at this https URL.* - -CLIPTextModel -~~~~~~~~~~~~~ - -.. autoclass:: transformers.CLIPTextModel - :members: - :inherited-members: CLIPPreTrainedModel - -CLIPVisionModel -~~~~~~~~~~~~~~~ - -.. autoclass:: transformers.CLIPVisionModel - :members: - :inherited-members: CLIPPreTrainedModel - -CLIPModel -~~~~~~~~~ - -.. autoclass:: transformers.CLIPModel - :members: - :inherited-members: CLIPPreTrainedModel diff --git a/adapters/docs/classes/models/deberta.rst b/adapters/docs/classes/models/deberta.rst deleted file mode 100644 index 9513ee83..00000000 --- a/adapters/docs/classes/models/deberta.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. - Copyright 2020 The HuggingFace Team. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - specific language governing permissions and limitations under the License. - -DeBERTa ------------------------------------------------------------------------------------------------------------------------ - -Overview -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The DeBERTa model was proposed in `DeBERTa: Decoding-enhanced BERT with Disentangled Attention -`__ by Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen It is based on Google's -BERT model released in 2018 and Facebook's RoBERTa model released in 2019. - -It builds on RoBERTa with disentangled attention and enhanced mask decoder training with half of the data used in -RoBERTa. - -The abstract from the paper is the following: - -*Recent progress in pre-trained neural language models has significantly improved the performance of many natural -language processing (NLP) tasks. In this paper we propose a new model architecture DeBERTa (Decoding-enhanced BERT with -disentangled attention) that improves the BERT and RoBERTa models using two novel techniques. The first is the -disentangled attention mechanism, where each word is represented using two vectors that encode its content and -position, respectively, and the attention weights among words are computed using disentangled matrices on their -contents and relative positions. Second, an enhanced mask decoder is used to replace the output softmax layer to -predict the masked tokens for model pretraining. We show that these two techniques significantly improve the efficiency -of model pretraining and performance of downstream tasks. Compared to RoBERTa-Large, a DeBERTa model trained on half of -the training data performs consistently better on a wide range of NLP tasks, achieving improvements on MNLI by +0.9% -(90.2% vs. 91.1%), on SQuAD v2.0 by +2.3% (88.4% vs. 90.7%) and RACE by +3.6% (83.2% vs. 86.8%). The DeBERTa code and -pre-trained models will be made publicly available at https://github.com/microsoft/DeBERTa.* - - -This model was contributed by `DeBERTa `__. This model TF 2.0 implementation was -contributed by `kamalkraj `__ . The original code can be found `here -`__. - -DebertaAdapterModel -~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.DebertaAdapterModel - :members: - :inherited-members: DebertaPreTrainedModel diff --git a/adapters/docs/classes/models/deberta_v2.rst b/adapters/docs/classes/models/deberta_v2.rst deleted file mode 100644 index d4e172dc..00000000 --- a/adapters/docs/classes/models/deberta_v2.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. - Copyright 2020 The HuggingFace Team. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - specific language governing permissions and limitations under the License. - -DeBERTa-v2 ------------------------------------------------------------------------------------------------------------------------ - -Overview -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The DeBERTa model was proposed in `DeBERTa: Decoding-enhanced BERT with Disentangled Attention -`__ by Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen It is based on Google's -BERT model released in 2018 and Facebook's RoBERTa model released in 2019. - -It builds on RoBERTa with disentangled attention and enhanced mask decoder training with half of the data used in -RoBERTa. - -The abstract from the paper is the following: - -*Recent progress in pre-trained neural language models has significantly improved the performance of many natural -language processing (NLP) tasks. In this paper we propose a new model architecture DeBERTa (Decoding-enhanced BERT with -disentangled attention) that improves the BERT and RoBERTa models using two novel techniques. The first is the -disentangled attention mechanism, where each word is represented using two vectors that encode its content and -position, respectively, and the attention weights among words are computed using disentangled matrices on their -contents and relative positions. Second, an enhanced mask decoder is used to replace the output softmax layer to -predict the masked tokens for model pretraining. We show that these two techniques significantly improve the efficiency -of model pretraining and performance of downstream tasks. Compared to RoBERTa-Large, a DeBERTa model trained on half of -the training data performs consistently better on a wide range of NLP tasks, achieving improvements on MNLI by +0.9% -(90.2% vs. 91.1%), on SQuAD v2.0 by +2.3% (88.4% vs. 90.7%) and RACE by +3.6% (83.2% vs. 86.8%). The DeBERTa code and -pre-trained models will be made publicly available at https://github.com/microsoft/DeBERTa.* - - -The following information is visible directly on the [original implementation -repository](https://github.com/microsoft/DeBERTa). DeBERTa v2 is the second version of the DeBERTa model. It includes -the 1.5B model used for the SuperGLUE single-model submission and achieving 89.9, versus human baseline 89.8. You can -find more details about this submission in the authors' -[blog](https://www.microsoft.com/en-us/research/blog/microsoft-deberta-surpasses-human-performance-on-the-superglue-benchmark/) - -New in v2: - -- **Vocabulary** In v2 the tokenizer is changed to use a new vocabulary of size 128K built from the training data. - Instead of a GPT2-based tokenizer, the tokenizer is now - [sentencepiece-based](https://github.com/google/sentencepiece) tokenizer. -- **nGiE(nGram Induced Input Encoding)** The DeBERTa-v2 model uses an additional convolution layer aside with the first - transformer layer to better learn the local dependency of input tokens. -- **Sharing position projection matrix with content projection matrix in attention layer** Based on previous - experiments, this can save parameters without affecting the performance. -- **Apply bucket to encode relative positions** The DeBERTa-v2 model uses log bucket to encode relative positions - similar to T5. -- **900M model & 1.5B model** Two additional model sizes are available: 900M and 1.5B, which significantly improves the - performance of downstream tasks. - -This model was contributed by `DeBERTa `__. This model TF 2.0 implementation was -contributed by `kamalkraj `__. The original code can be found `here -`__. - - -DebertaV2AdapterModel -~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.DebertaV2AdapterModel - :members: - :inherited-members: DebertaV2PreTrainedModel diff --git a/adapters/docs/classes/models/distilbert.rst b/adapters/docs/classes/models/distilbert.rst deleted file mode 100644 index 3fceae39..00000000 --- a/adapters/docs/classes/models/distilbert.rst +++ /dev/null @@ -1,17 +0,0 @@ -DistilBERT -=========== - -The DistilBERT model was proposed in the blog post -`Smaller, faster, cheaper, lighter: Introducing DistilBERT, a distilled version of BERT `__, -and the paper `DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter `__. -DistilBERT is a small, fast, cheap and light Transformer model trained by distilling Bert base. It has 40% less -parameters than `bert-base-uncased`, runs 60% faster while preserving over 95% of Bert's performances as measured on -the GLUE language understanding benchmark. - - -DistilBertAdapterModel -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.DistilBertAdapterModel - :members: - :inherited-members: DistilBertPreTrainedModel diff --git a/adapters/docs/classes/models/electra.rst b/adapters/docs/classes/models/electra.rst deleted file mode 100644 index d67a96d8..00000000 --- a/adapters/docs/classes/models/electra.rst +++ /dev/null @@ -1,32 +0,0 @@ -ELECTRA -====== - -The ELECTRA model was proposed in the paper `ELECTRA: Pre-training Text Encoders as Discriminators Rather Than -Generators `__. ELECTRA is a new pretraining approach which trains two -transformer models: the generator and the discriminator. The generator's role is to replace tokens in a sequence, and -is therefore trained as a masked language model. The discriminator, which is the model we're interested in, tries to -identify which tokens were replaced by the generator in the sequence. - -The abstract from the paper is the following: - -*Masked language modeling (MLM) pretraining methods such as BERT corrupt the input by replacing some tokens with [MASK] -and then train a model to reconstruct the original tokens. While they produce good results when transferred to -downstream NLP tasks, they generally require large amounts of compute to be effective. As an alternative, we propose a -more sample-efficient pretraining task called replaced token detection. Instead of masking the input, our approach -corrupts it by replacing some tokens with plausible alternatives sampled from a small generator network. Then, instead -of training a model that predicts the original identities of the corrupted tokens, we train a discriminative model that -predicts whether each token in the corrupted input was replaced by a generator sample or not. Thorough experiments -demonstrate this new pretraining task is more efficient than MLM because the task is defined over all input tokens -rather than just the small subset that was masked out. As a result, the contextual representations learned by our -approach substantially outperform the ones learned by BERT given the same model size, data, and compute. The gains are -particularly strong for small models; for example, we train a model on one GPU for 4 days that outperforms GPT (trained -using 30x more compute) on the GLUE natural language understanding benchmark. Our approach also works well at scale, -where it performs comparably to RoBERTa and XLNet while using less than 1/4 of their compute and outperforms them when -using the same amount of compute.* - -ElectraAdapterModel -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.ElectraAdapterModel - :members: - :inherited-members: ElectraPreTrainedModel diff --git a/adapters/docs/classes/models/encoderdecoder.rst b/adapters/docs/classes/models/encoderdecoder.rst deleted file mode 100644 index 4b706738..00000000 --- a/adapters/docs/classes/models/encoderdecoder.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. - Copyright 2020 The HuggingFace Team. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - specific language governing permissions and limitations under the License. - -Encoder Decoder Models ------------------------------------------------------------------------------------------------------------------------ - -The :class:`~transformers.EncoderDecoderModel` can be used to initialize a sequence-to-sequence model with any -pretrained autoencoding model as the encoder and any pretrained autoregressive model as the decoder. - -The effectiveness of initializing sequence-to-sequence models with pretrained checkpoints for sequence generation tasks -was shown in `Leveraging Pre-trained Checkpoints for Sequence Generation Tasks `__ by -Sascha Rothe, Shashi Narayan, Aliaksei Severyn. - -After such an :class:`~transformers.EncoderDecoderModel` has been trained/fine-tuned, it can be saved/loaded just like -any other models (see the examples for more information). - -An application of this architecture could be to leverage two pretrained :class:`~transformers.BertModel` as the encoder -and decoder for a summarization model as was shown in: `Text Summarization with Pretrained Encoders -`__ by Yang Liu and Mirella Lapata. - -.. note:: - Adapter implementation notes: - - Unlike other models, an explicit EncoderDecoderAdapterModel for the EncoderDecoderModel has not been implemented. This decision was made due to the lack of support for the EncoderDecoderModel in Hugging Face Transformers' ``AutoModel`` class. As a result, our ``AutoAdapterModel`` class would not support the EncoderDecoderAdapterModel either. Thus, to use an EncoderDecoderModel with *Adapters*, follow these steps: - - 1. First, create an :class:`~transformers.EncoderDecoderModel` instance, for example, using ``model = EncoderDecoderModel.from_encoder_decoder_pretrained("bert-base-uncased", "bert-base-uncased")``. - 2. Next, convert this model to an adapter model using the ``adapters.init(model)`` function. - - - Adapters can be added to both the encoder and the decoder. As usual, the ``leave_out`` parameter can be used to specify the layers where adapters are to be added. For the EncoderDecoderModel the layer IDs are counted seperately over the encoder and decoder starting from 0. Thus, specifying ``leave_out=[0,1]`` will leave out the first and second layer of the encoder and the first and second layer of the decoder. - -.. note:: - This class is nearly identical to the PyTorch implementation of DistilBERT in Huggingface Transformers. - For more information, visit `the corresponding section in their documentation `_. - - -EncoderDecoderModel -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: transformers.EncoderDecoderModel - :members: forward, from_encoder_decoder_pretrained diff --git a/adapters/docs/classes/models/gpt2.rst b/adapters/docs/classes/models/gpt2.rst deleted file mode 100644 index 05100f0e..00000000 --- a/adapters/docs/classes/models/gpt2.rst +++ /dev/null @@ -1,23 +0,0 @@ -OpenAI GPT2 ------------------------------------------------------------------------------------------------------------------------ - -OpenAI GPT-2 model was proposed in `Language Models are Unsupervised Multitask Learners -`_ by Alec -Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei and Ilya Sutskever. It's a causal (unidirectional) -transformer pretrained using language modeling on a very large corpus of ~40 GB of text data. - -The abstract from the paper is the following: - -*GPT-2 is a large transformer-based language model with 1.5 billion parameters, trained on a dataset[1] of 8 million -web pages. GPT-2 is trained with a simple objective: predict the next word, given all of the previous words within some -text. The diversity of the dataset causes this simple goal to contain naturally occurring demonstrations of many tasks -across diverse domains. GPT-2 is a direct scale-up of GPT, with more than 10X the parameters and trained on more than -10X the amount of data.* - - -GPT2AdapterModel -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.GPT2AdapterModel - :members: - :inherited-members: GPT2PreTrainedModel diff --git a/adapters/docs/classes/models/gptj.rst b/adapters/docs/classes/models/gptj.rst deleted file mode 100644 index 31546df1..00000000 --- a/adapters/docs/classes/models/gptj.rst +++ /dev/null @@ -1,24 +0,0 @@ -EleutherAI GPT-J-6B ------------------------------------------------------------------------------------------------------------------------ - -EleutherAI GPT-J-6B is an open source, autoregressive language model created by a group of researchers called -EleutherAI. It's one of the most advanced alternatives to OpenAI's GPT-3 and performs well on a wide array of -natural language tasks such as chat, summarization, and question answering, to name a few. - -For a deeper dive, GPT-J is a transformer model trained using Ben Wang's Mesh Transformer JAX `Mesh Transformer JAX -`_. "GPT" is short for -generative pre-trained transformer, "J" distinguishes this model from other GPT models, and "6B" represents the 6 -billion trainable parameters. - -The model consists of 28 layers with a model dimension of 4096, and a feedforward dimension of 16384. The model -dimension is split into 16 heads, each with a dimension of 256. Rotary Position Embedding (RoPE) is applied to -64 dimensions of each head. The model is trained with a tokenization vocabulary of 50257, using the same set of -BPEs as GPT-2/GPT-3. - - -GPTJAdapterModel -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.GPTJAdapterModel - :members: - :inherited-members: GPTJPreTrainedModel diff --git a/adapters/docs/classes/models/llama.rst b/adapters/docs/classes/models/llama.rst deleted file mode 100644 index c7fffe18..00000000 --- a/adapters/docs/classes/models/llama.rst +++ /dev/null @@ -1,21 +0,0 @@ -LLaMA ------------------------------------------------------------------------------------------------------------------------ - -The LLaMA model was proposed in `LLaMA: Open and Efficient Foundation Language Models `__ by -Hugo Touvron, Thibaut Lavril, Gautier Izacard, Xavier Martinet, Marie-Anne Lachaux, Timothée Lacroix, Baptiste Rozière, Naman Goyal, -Eric Hambro, Faisal Azhar, Aurelien Rodriguez, Armand Joulin, Edouard Grave, Guillaume Lample. It is a collection of foundation language -models ranging from 7B to 65B parameters. - -The abstract from the paper is the following: - -*We introduce LLaMA, a collection of foundation language models ranging from 7B to 65B parameters. We train our models on trillions of tokens, -and show that it is possible to train state-of-the-art models using publicly available datasets exclusively, without resorting to proprietary -and inaccessible datasets. In particular, LLaMA-13B outperforms GPT-3 (175B) on most benchmarks, and LLaMA-65B is competitive with the best models, -Chinchilla-70B and PaLM-540B. We release all our models to the research community.* - -LlamaAdapterModel -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.LlamaAdapterModel - :members: - :inherited-members: LlamaPreTrainedModel diff --git a/adapters/docs/classes/models/mbart.rst b/adapters/docs/classes/models/mbart.rst deleted file mode 100644 index 263ae456..00000000 --- a/adapters/docs/classes/models/mbart.rst +++ /dev/null @@ -1,19 +0,0 @@ -MBart ------------------------------------------------------------------------------------------------------------------------ - -The MBart model was presented in `Multilingual Denoising Pre-training for Neural Machine Translation -`_ by Yinhan Liu, Jiatao Gu, Naman Goyal, Xian Li, Sergey Edunov Marjan -Ghazvininejad, Mike Lewis, Luke Zettlemoyer. - -According to the abstract, MBART is a sequence-to-sequence denoising auto-encoder pretrained on large-scale monolingual -corpora in many languages using the BART objective. mBART is one of the first methods for pretraining a complete -sequence-to-sequence model by denoising full texts in multiple languages, while previous approaches have focused only -on the encoder, decoder, or reconstructing parts of the text. - - -MBartAdapterModel -~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.MBartAdapterModel - :members: - :inherited-members: MBartPreTrainedModel diff --git a/adapters/docs/classes/models/mt5.rst b/adapters/docs/classes/models/mt5.rst deleted file mode 100644 index d0554205..00000000 --- a/adapters/docs/classes/models/mt5.rst +++ /dev/null @@ -1,24 +0,0 @@ -MT5 -===== - -The mT5 model was presented in `mT5: A massively multilingual pre-trained text-to-text transformer -`__ by Linting Xue, Noah Constant, Adam Roberts, Mihir Kale, Rami Al-Rfou, -Aditya Siddhant, Aditya Barua, Colin Raffel. - -The abstract from the paper is the following, - - -- The recent "Text-to-Text Transfer Transformer" (T5) leveraged a unified text-to-text format and scale to attain - state-of-the-art results on a wide variety of English-language NLP tasks. In this paper, we introduce mT5, a - multilingual variant of T5 that was pre-trained on a new Common Crawl-based dataset covering 101 languages. We detail - the design and modified training of mT5 and demonstrate its state-of-the-art performance on many multilingual - benchmarks. We also describe a simple technique to prevent "accidental translation" in the zero-shot setting, where a - generative model chooses to (partially) translate its prediction into the wrong language. All of the code and model - checkpoints used in this work are publicly available. - -MT5AdapterModel -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.MT5AdapterModel - :members: - :inherited-members: MT5PreTrainedModel \ No newline at end of file diff --git a/adapters/docs/classes/models/roberta.rst b/adapters/docs/classes/models/roberta.rst deleted file mode 100644 index 93b6ab5b..00000000 --- a/adapters/docs/classes/models/roberta.rst +++ /dev/null @@ -1,14 +0,0 @@ -RoBERTa -======== - -The RoBERTa model was proposed in `RoBERTa: A Robustly Optimized BERT Pretraining Approach `_ -by Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, -Veselin Stoyanov. It is based on Google's BERT model released in 2018. - - -RobertaAdapterModel -~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.RobertaAdapterModel - :members: - :inherited-members: RobertaPreTrainedModel diff --git a/adapters/docs/classes/models/t5.rst b/adapters/docs/classes/models/t5.rst deleted file mode 100644 index 085c5ba2..00000000 --- a/adapters/docs/classes/models/t5.rst +++ /dev/null @@ -1,25 +0,0 @@ -T5 -===== - -The T5 model was presented in `Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer -`__ by Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, -Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu. - -The abstract from the paper is the following, - - -- T5 is an encoder-decoder model pre-trained on a multi-task mixture of unsupervised and supervised tasks and for which - each task is converted into a text-to-text format. T5 works well on a variety of tasks out-of-the-box by prepending a - different prefix to the input corresponding to each task, e.g., for translation: *translate English to German: ...*, - for summarization: *summarize: ...*. - - For more information about which prefix to use, it is easiest to look into Appendix D of the `paper - `__. - - -T5AdapterModel -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.T5AdapterModel - :members: - :inherited-members: T5PreTrainedModel diff --git a/adapters/docs/classes/models/vit.rst b/adapters/docs/classes/models/vit.rst deleted file mode 100644 index 28a44183..00000000 --- a/adapters/docs/classes/models/vit.rst +++ /dev/null @@ -1,27 +0,0 @@ -Vision Transformer (ViT) -========================= - -The Vision Transformer (ViT) model was proposed in `An Image is Worth 16x16 Words: Transformers for Image Recognition -at Scale `__ by Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk -Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob -Uszkoreit, Neil Houlsby. It's the first paper that successfully trains a Transformer encoder on ImageNet, attaining -very good results compared to familiar convolutional architectures. - - -The abstract from the paper is the following: - -*While the Transformer architecture has become the de-facto standard for natural language processing tasks, its -applications to computer vision remain limited. In vision, attention is either applied in conjunction with -convolutional networks, or used to replace certain components of convolutional networks while keeping their overall -structure in place. We show that this reliance on CNNs is not necessary and a pure transformer applied directly to -sequences of image patches can perform very well on image classification tasks. When pre-trained on large amounts of -data and transferred to multiple mid-sized or small image recognition benchmarks (ImageNet, CIFAR-100, VTAB, etc.), -Vision Transformer (ViT) attains excellent results compared to state-of-the-art convolutional networks while requiring -substantially fewer computational resources to train.* - -ViTAdapterModel -~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.ViTAdapterModel - :members: - :inherited-members: ViTPreTrainedModel diff --git a/adapters/docs/classes/models/xlmroberta.rst b/adapters/docs/classes/models/xlmroberta.rst deleted file mode 100644 index dc4208c3..00000000 --- a/adapters/docs/classes/models/xlmroberta.rst +++ /dev/null @@ -1,14 +0,0 @@ -XLM-RoBERTa -============ - -The XLM-RoBERTa model was proposed in `Unsupervised Cross-lingual Representation Learning at Scale `__ -by Alexis Conneau, Kartikay Khandelwal, Naman Goyal, Vishrav Chaudhary, Guillaume Wenzek, Francisco Guzmán, -Edouard Grave, Myle Ott, Luke Zettlemoyer and Veselin Stoyanov. It is based on Facebook's RoBERTa model released in 2019. -It is a large multi-lingual language model, trained on 2.5TB of filtered CommonCrawl data. - - -XLMRobertaAdapterModel -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.XLMRobertaAdapterModel - :members: diff --git a/adapters/docs/classes/models/xmod.rst b/adapters/docs/classes/models/xmod.rst deleted file mode 100644 index 1b922849..00000000 --- a/adapters/docs/classes/models/xmod.rst +++ /dev/null @@ -1,23 +0,0 @@ -X-MOD -===== - -.. important:: - The X-MOD implementation integrated into Transformers already supports adapters. - To make this implementation compatible with Adapters, a few changes were necessary: - - - Pre-trained X-MOD checkpoints require conversion before they can be used with Adapters. We provide pre-converted checkpoints for the following models: - - ``facebook/xmod-base`` -> ``AdapterHub/xmod-base`` with languages adapters split into separate repos (e.g. ``AdapterHub/xmod-base-af_ZA``) - - In Adapters, the X-MOD classes rely on the usual adapter methods instead of the custom methods introduced in Transformers, i.e.: - - ``set_active_adapters()`` instead of ``set_default_language()``. - - ``AdapterSetup`` context instead of ``lang_ids`` parameter. - -The abstract from the paper is the following: - -*Multilingual pre-trained models are known to suffer from the curse of multilinguality, which causes per-language performance to drop as they cover more languages. We address this issue by introducing language-specific modules, which allows us to grow the total capacity of the model, while keeping the total number of trainable parameters per language constant. In contrast with prior work that learns language-specific components post-hoc, we pre-train the modules of our Cross-lingual Modular (X-MOD) models from the start. Our experiments on natural language inference, named entity recognition and question answering show that our approach not only mitigates the negative interference between languages, but also enables positive transfer, resulting in improved monolingual and cross-lingual performance. Furthermore, our approach enables adding languages post-hoc with no measurable drop in performance, no longer limiting the model usage to the set of pre-trained languages.* - -XmodAdapterModel -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: adapters.XmodAdapterModel - :members: - :inherited-members: XmodPreTrainedModel diff --git a/adapters/docs/conf.py b/adapters/docs/conf.py deleted file mode 100644 index 417623a9..00000000 --- a/adapters/docs/conf.py +++ /dev/null @@ -1,108 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# https://www.sphinx-doc.org/en/main/usage/configuration.html -import os -import sys -import re - - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -rootdir = os.path.join(os.getenv("SPHINX_MULTIVERSION_SOURCEDIR", default="."), "../src") -sys.path.insert(0, rootdir) - - -# -- Project information ----------------------------------------------------- - -project = "AdapterHub" -copyright = "2020-2024, AdapterHub Team" -author = "AdapterHub Team" - -docs_versions = [ - "adapters1.1.1", - "adapters2.3.0", - "adapters3.2.1", -] - - -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - "myst_parser", - "sphinx.ext.autodoc", - "sphinx.ext.napoleon", - "sphinx_copybutton", - "sphinx_multiversion", - "sphinx_markdown_tables", -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "README.md"] - -# MyST parser markdown options -myst_heading_anchors = 3 -myst_enable_extensions = [ - "dollarmath", -] - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = "sphinx_rtd_theme" - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["_static"] - -html_logo = "logo.png" -html_favicon = "favicon.png" - - -# -- Options for sphinx-multiversion ------------------------------------------ - -# Whitelist pattern for tags (set to None to ignore all tags) -smv_tag_whitelist = r"({})".format("|".join([v.replace(".", r"\.") for v in docs_versions])) - -# Whitelist pattern for branches (set to None to ignore all branches) -smv_branch_whitelist = r"^main$" - -# Whitelist pattern for remotes (set to None to use local branches only) -smv_remote_whitelist = None - - -def skip_head_member(app, what, name, obj, skip, options): - if type(obj).__name__ == "function" and "inherited-members" in options and (m := re.match(r"add\_(.*)\_head$", name)): - cls_name = options["inherited-members"].replace("PreTrainedModel", "AdapterModel").replace("PretrainedModel", "AdapterModel") - cls = vars(sys.modules["adapters"])[cls_name] - # HACK: currently parses head type from name - head_type_str = m.group(1).replace("qa", "question_answering") - if head_type_str in cls.head_types: - return False - else: - return True - - return skip - - -def setup(app): - app.connect('autodoc-skip-member', skip_head_member) - app.add_config_value("recommonmark_config", {"enable_eval_rst": True}, True) - app.add_css_file("custom.css") diff --git a/adapters/docs/contributing.md b/adapters/docs/contributing.md deleted file mode 100644 index c9fd05e8..00000000 --- a/adapters/docs/contributing.md +++ /dev/null @@ -1,78 +0,0 @@ -# Contributing to AdapterHub - -There are many ways in which you can contribute to AdapterHub and the `adapters` library. -This includes code contributions such as: -- implementing new adapter methods -- adding support for new Transformer -- fixing open issues - -as well as non-code contributions such as: -- training and uploading adapters to the Hub -- writing documentation and blog posts -- helping others with their issues and questions - -Whichever way you'd like to contribute, you're very welcome to do so! - -## Contributing to the `adapters` codebase - -### Setting up your dev environment - -To get started with writing code for `adapters`, you'd want to set up the project on a local development environment. - -`adapters` closely follows the original Hugging Face Transformers repository in many aspects. -This guide assumes that you want to set up your dev environment on a local machine and that you have basic knowledge of `git`. -Additionally, you require **Python 3.8** or above pre-installed to get started. - -In the following, we go through the setup procedure step by step: - -1. Fork [the `adapters` repository](https://github.com/adapter-hub/adapters) to get a local copy of the code under your user account. -2. Clone your fork to your local machine: - ``` - git clone --recursive git@github.com:/adapters.git - cd adapters - ``` - **Note:** The `--recursive` flag is important to initialize git submodules. -3. Create a virtual environment, e.g. via `virtualenv` or `conda`. -4. Install PyTorch, following the installation command for your environment [on their website](https://pytorch.org/get-started/locally/). -5. Install Hugging Face Transformers from the local git submodule: - ``` - pip install ./hf_transformers - ``` -6. Install `adapters` and required dev dependencies: - ``` - pip install -e ".[dev]" - ``` - -### Adding Adapter Methods - -How to integrate new efficient fine-tuning/ adapter methods to `adapters` is described at [https://docs.adapterhub.ml/contributing/adding_adapter_methods.html](https://docs.adapterhub.ml/contributing/adding_adapter_methods.html). - -### Adding Adapters to a Model - -How to add adapter support to a model type already supported by Hugging Face Transformers is described at [https://docs.adapterhub.ml/contributing/adding_adapters_to_a_model.html](https://docs.adapterhub.ml/contributing/adding_adapters_to_a_model.html). - -### Testing your changes to the codebase - -`adapters` provides multiple Makefile targets for easily running tests and repo checks. -Make sure these checks run without errors to pass the CI pipeline tasks when you open a pull request. - -To **run all tests** in the repository: -``` -make test -``` - -To **auto format code and imports** in the whole codebase: -``` -make style -``` -This will run `black` and `isort`. - -To **run all quality checks** ensuring code style and repo consistency: -``` -make quality -``` -This will run checks with `black`, `isort` and `flake8` as well as additional custom checks. - -## Contributing Adapters to the Hub - -How to make your own trained adapters accessible via AdapterHub is described at [https://docs.adapterhub.ml/hub_contributing.html](https://docs.adapterhub.ml/hub_contributing.html). diff --git a/adapters/docs/contributing/adding_adapter_methods.md b/adapters/docs/contributing/adding_adapter_methods.md deleted file mode 100644 index af750a9e..00000000 --- a/adapters/docs/contributing/adding_adapter_methods.md +++ /dev/null @@ -1,101 +0,0 @@ -# Adding Adapter Methods - -This document describes how different efficient fine-tuning methods can be integrated into the codebase of `adapters`. -It can be used as a guide to add new efficient fine-tuning/ adapter methods. - -Before we start to go into implementation details, first some important design philosophies of `adapters`: - -- _Adapters should integrate seamlessly with existing model classes_: This means (a) if a model architecture supports adapters, it should be possible to use them with all model classes of this architecture and (b) adapters should be entirely opt-in, i.e. the model classes still must work without adapters. -- _Copying original should be minimal_: `adapters` tries to avoid copying of the original HF code as far as possible. We extensively use Python mixins to achieve this. - -Now we highlight the most important components of integrating adapter methods into Transformer models. -Each integration is highly dependent on the specific details of the adapter methods. -Therefore, the described steps might not be applicable to each implementation. - -## Implementation - -❓ As adapter methods typically inject blocks of new parameters into an existing Transformer model, they mostly can be implemented using multiple blocks of classes deriving from `torch.nn.Module`. -These module classes then have to be inserted into the correct locations within the Transformer model implementation. -Thus, each adapter method implementation at least should provide two classes: - -- a configuration class deriving from `AdapterConfig` that provides attributes for all configuration options of the method -- a module class deriving from the abstract `AdapterLayerBase` that provides the method parameters and a set of standard adapter management functions - - modules supporting [adapter composition](https://docs.adapterhub.ml/adapter_composition.html) should instead derive from `ComposableAdapterLayerBase` - -### Configuration - -All configuration classes reside in `src/adapters/configuration/adapter_config.py`. -- To add a new configuration class for a new method, create a new subclass of [`AdapterConfig`](adapters.AdapterConfig). - Make sure to set the `architecture` attribute in your class. -- Finally, also make sure the config class is added to the `__init__.py` files in `src/adapters`. - -### Modeling - -All adapter method implementations reside in `src/adapters/methods`. - -#### For methods **without** composition support - -The [`AdapterLayerBase`](adapters.AdapterLayerBase) class from which any new adapter modules should derive resides in `src/adapters/methods/adapter_layer_base.py`. -- This abstract base class defines a set of methods that should be implemented by each deriving class, -including methods for adding, enabling and deleting adapter weights. These methods are marked as abstract in the base class. See [`AdapterLayerBase`](adapters.AdapterLayerBase) for details. -- Most importantly however, the module classes deriving from this base class should implement the forward pass through an adaptation component. -- The concrete implementation of these classes heavily depends on the specifics of the adapter method. - -#### For methods **with** composition support - -The [`ComposableAdapterLayerBase`](adapters.ComposableAdapterLayerBase) class (as subclass of [`AdapterLayerBase`](adapters.AdapterLayerBase)), which resides in `src/adapters/methods/adapter_layer_base.py` provides the basic skeleton for implementing adapter composition. -- Your deriving module class firstly should implement all methods required by [`AdapterLayerBase`](adapters.AdapterLayerBase). See section above for details. -- For adapter composition, the pre-implemented `compose()` method constitutes the main entry-point. This method should be called during the forward pass of your adapter module. -- `compose()` expects a `state` object, which is a generic named tuple object defined by your adapter method. This state object should hold all tensors (such as hidden states, attention masks etc.) and state attributes required for your adapter implementation. See `BottleneckState` for an example. -- Implementations for specific composition blocks are given in methods starting with `compose_`. Some composition blocks provide generic default implementations, some must be implemented by the deriving class if they should be supported. Make sure to list all supported composition blocks in the `supported_compositions` class attribute of your deriving module. -- In any case, a small set of helper methods should be implemented by any deriving module to support basic composition logic. These are marked as abstract methods in [`ComposableAdapterLayerBase`](adapters.ComposableAdapterLayerBase) and currently consist of the following: vslice(), pad_and_concat(), repeat(), mean(), compose_single(). See [`ComposableAdapterLayerBase`](adapters.ComposableAdapterLayerBase) for details. - -For a reference implementation, have a look at `BottleneckLayer` for bottleneck adapters. - -#### For all methods - -To actually make use of the newly implemented classes, it's finally necessary to integrate the forward calls to the modules in the actual model implementations. -- This, again, is highly dependent on how the adapter method interacts with the base model classes. Typically, module classes can be integrated either via mixins (see modules starting with "mixin" in `src/adapters/models`) or directly as submodules of the respective model components. -- The model class integration has to be repeated for each supported Transformer model, as they typically don't share a codebase. At this point it is often important to consider where the adapters need to be added to the transformer model and whether there is an implementation that does not require more copying of classes than the current implementation. -Please try to integrate any new adapter method into every model class when it's reasonable. -You can find all currently supported model classes at https://docs.adapterhub.ml/model_overview.html. - -**Additional things to consider** - -- New adapter methods typically also require some changes in the `AdapterLoader` class in `src/adapters/loading.py` (also see [here](https://docs.adapterhub.ml/extending.html#loading-custom-module-weights)). -- Depending on the method to be integrated, further changes in other classes might be necessary. - -## Testing - -❓ `adapters` provides a framework for testing adapter methods on implementing models in `tests`. -Tests for each adapter method are provided via a mixin class. -All test mixins derive from the common `AdapterMethodBaseTestMixin` class and reside in `tests/methods`. - -**📝 Steps** - -- Add a new `test_.py` module in `tests/methods`. - - This module should contain a `TestMixin` class deriving from `AdapterMethodBaseTestMixin` that implements typical methods of adding, loading and training modules of the new adapter method. - - Have a look at existing test mixins for reference. -- Next, add the newly implemented test mixin to the tests of all model types that support the new adapter method. - - Each model type has its own test class `tests/test_.py` that contains a `AdapterTest` class. - Add the new test mixin to the mixins of this class. - E.g., if the new method is supported by BERT, add the its test mixin to `BertAdapterTest`. - -## Documentation - -❓ The documentation for `adapters` lives in the `docs` folder. - -**📝 Steps** - -- Add the class documentation for the configuration class of the new method in `docs/classes/adapter_config.rst`. -- In `docs/overview.md`, add a new section for the new adapter method that describes the most important concepts. Please try to follow the general format of the existing methods. -- Add a new column in the table in `docs/model_overview.md` and check the models that support the new adapter method. - -Finally, please add a row for the new method in the table of supported methods under _Implemented Methods_ in the main `README.md` of this repository. - -## Training Example Adapters - -❓ To make sure the new adapter implementation works properly, it is useful to train some example adapters and compare the training results to full model fine-tuning and/or reference implementations. -Ideally, this would include training adapters on one (or more) tasks that are good for demonstrating the new method and uploading them to AdapterHub. - -Hugging Face already provides example training scripts for many tasks, some of them have already been modified to support adapter training (see https://github.com/Adapter-Hub/adapters/tree/main/examples). diff --git a/adapters/docs/contributing/adding_adapters_to_a_model.md b/adapters/docs/contributing/adding_adapters_to_a_model.md deleted file mode 100644 index 0c9164ff..00000000 --- a/adapters/docs/contributing/adding_adapters_to_a_model.md +++ /dev/null @@ -1,89 +0,0 @@ -# Adding Adapters to a Model -This document gives an overview of how new model architectures of Hugging Face Transformers can be supported by `adapters`. -Before delving into implementation details, you should familiarize yourself with the main design philosophies of `adapters`: - -- _Adapters should integrate seamlessly with existing model classes_: If a model architecture supports adapters, it should be possible to use them with all model classes of this architecture. -- _Copied code should be minimal_: `adapters` extensively uses Python mixins to add adapter support to HF models. Functions that cannot be sufficiently modified by mixins are copied and then modified. Try to avoid copying functions as much as possible. - -## Relevant Classes -Adding adapter support to an existing model architecture requires modifying some parts of the model forward pass logic. These modifications are realized by the four files in the `src/adapters/models//` directory. Let's examine the purpose of these files in the example of BERT. It's important to note that we are adapting the original Hugging Face model, implemented in [transformers/models/bert/modeling_bert.py](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bert/modeling_bert.py). The files in `src/adapters/models/bert/` are: - -1. `src/adapters/models/bert/mixin_bert.py`: -This file contains mixins for each class we want to change. For example, in the `BertSelfAttention` class, we need to make changes for LoRA and Prefix Tuning. For this, we create a `BertSelfAttentionAdaptersMixin` to implement these changes. We will discuss how this works in detail below. -2. `src/adapters/models/bert/modeling_bert.py`: -For some classes of the BERT implementation (e.g. `BertModel` or `BertLayer`) the code can be sufficiently customized via mixins. For other classes (like `BertSelfAttention`), we need to edit the original code directly. These classes are copied into `src/adapters/models/bert/modeling_bert.py` and modified. -3. `src/adapters/models/bert/adapter_model.py`: -In this file, the adapter model class is defined. This class allows flexible adding of and switching between multiple prediction heads of different types. This looks about the same for each model, except that each model has different heads and thus different `add_..._head()` functions. -4. `src/adapters/models/bert/__init__.py`: Defines Python's import structure. - - -## Implementation Steps 📝 -Now that we have discussed the purpose of every file in `src/adapters/models//`, we go through the integration of adapters into an existing model architecture step by step. **The following steps might not be applicable to every model architecture.** - -1. **Files:** - - Create the `src/adapters/models//` directory and in it the 4 files: `mixin_.py`, `modeling_.py` `adapter_model.py` and `__init__.py` -2. **Mixins:** - - In `src/adapters/models//mixin_.py`, create mixins for any class you want to change and where you can't reuse an existing mixin from another class. - - To figure out which classes to change, think about where to insert LoRA, Prefix Tuning, and bottleneck adapters. - - You can use similar model implementations for guidance. - - Often, existing mixins of another class can be reused. E.g. `BertLayer`, `RobertaLayer`, `XLMRobertaLayer`, `DebertaLayer`, `DebertaV2Layer` and `BertGenerationLayer` (all models derived from BERT) use the `BertLayerAdaptersMixin`. - - To additionally support Prefix Tuning, it's necessary to apply the forward call to the `PrefixTuningLayer` module in the respective attention layer (see step 3 for how to modify the code of an Hugging Face class). - - Make sure the calls to `bottleneck_layer_forward()` are added in the right places. - - The mixin for the whole base model class (e.g., `BertModel`) should derive from `ModelBaseAdaptersMixin` and (if possible) `EmbeddingAdaptersMixin` and/or `InvertibleAdaptersMixin`. This mixin should at least implement the `iter_layers()` method but might require additional modifications depending on the architecture. - - If the model is a combination of different models, such as the EncoderDecoderModel, use `ModelUsingSubmodelsAdaptersMixin` instead of `ModelBaseAdaptersMixin`. -3. **Copied functions:** - - For those classes where the mixin is not enough to realize the wanted behavior, you must: - - Create a new class in `src/adapters/models//modeling_.py` with the name `WithAdapters`. This class should derive from the corresponding mixin and HF class. - - Copy the function you want to change into this class and modify it. - - e.g., the `forward` method of the `BertSelfAttention` class must be adapted to support prefix tuning. We therefore create a class `BertSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, BertSelfAttention)`, copy the forward method into it and modify it. -4. **Modify MODEL_MIXIN_MAPPING** - - For each mixin whose class was not copied into `modeling_.py`, add the mixin/class combination into `MODEL_MIXIN_MAPPING` in the file `src/adapters/models/__init__.py`. -5. **Create the adapter model:** - - Adapter-supporting architectures should provide a new model class `AdapterModel`. This class allows flexible adding of and switching between multiple prediction heads of different types. - - This is done in the `adapter_model.py` file: - - This module should implement the `AdapterModel` class, deriving from `ModelWithFlexibleHeadsAdaptersMixin` and `PreTrainedModel`. - - In the model class, add methods for those prediction heads that make sense for the new model architecture. - - Again, have a look at existing implementations. - - Add `AdapterModel` to the `ADAPTER_MODEL_MAPPING_NAMES` mapping in `src/adapters/models/auto/adapter_model.py` and to `src/adapters/__init__.py`. - - Define the classes to be added to Python's import structure in `src/adapters/models//__init__.py`. This will likely only be the `AdapterModel`. -6. **Adapt the config classes:** - - Adapt the config class to the requirements of adapters in `src/transformers/adapters/wrappers/configuration.py`. - - There are some naming differences in the config attributes of different model architectures. The adapter implementation requires some additional attributes with a specific name to be available. These currently are `num_attention_heads`, `hidden_size`, `hidden_dropout_prob` and `attention_probs_dropout_prob` as in the `BertConfig` class. - If your model config does not provide these, add corresponding mappings to `CONFIG_CLASS_KEYS_MAPPING`. - - -### Additional (optional) implementation steps 📝 - -- Parallel adapter inference via `Parallel` composition block (cf. [documentation](https://docs.adapterhub.ml/adapter_composition.html#parallel), [PR#150](https://github.com/Adapter-Hub/adapters/pull/150)). -- Provide mappings for an architecture's existing (static) prediction heads into `adapters` flex heads (cf. [implementation](https://github.com/adapter-hub/adapters/blob/main/src/adapters/head_utils.py#L11)). - -## Testing - -❓ In addition to the general Hugging Face model tests, there are adapter-specific test cases. All tests are executed from the `tests` folder. You need to add two different test classes. - -**📝 Steps** -1. Add a new `test_.py` module in `tests/` - - This file is used to test that everything related to the usage of adapters (adding, removing, activating, ...) works. - - This module typically holds 2 test classes and a test base class: - - `AdapterTestBase`: This class contains the `tokenizer_name`, `config_class` and `config`. - - `AdapterTest` derives from a collection of test mixins that hold various adapter tests (depending on the implementation). - - (optionally) `ClassConversionTest` runs tests for correct class conversion if conversion of prediction heads is implemented. -2. Add a new `test_.py` module in `tests/models/` - - This file is used to test the AdapterModel class. - - This module typically holds 1 test class with the name `AdapterModelTest` - - `AdapterModelTest` derives directly from Hugging Face's existing model test class `ModelTest` and adds `AdapterModel` as a class to test. - -## Documentation - -❓ The documentation for `adapters` lives in the `docs` folder. - -**📝 Steps** - -- Add `docs/classes/models/.rst` (oriented at the doc file in the HF docs). Make sure to include `AdapterModel` autodoc. Finally, list the file in `index.rst`. -- Add a new row for the model in the model table of the overview page at `docs/model_overview.md`, listing all the methods implemented by the new model. - -## Training Example Adapters - -❓ To make sure the new adapter implementation works properly, it is useful to train some example adapters and compare the training results to full model fine-tuning. Ideally, this would include training adapters on one (or more) tasks that are good for demonstrating the new model architecture (e.g. GLUE benchmark for BERT, summarization for BART) and uploading them to AdapterHub. - -We provide training scripts for many tasks here: [https://github.com/Adapter-Hub/adapters/tree/main/examples/pytorch/](https://github.com/Adapter-Hub/adapters/tree/main/examples/pytorch/) diff --git a/adapters/docs/embeddings.md b/adapters/docs/embeddings.md deleted file mode 100644 index 17146150..00000000 --- a/adapters/docs/embeddings.md +++ /dev/null @@ -1,47 +0,0 @@ -# Embeddings - -With `adapters`, we support dynamically adding, loading, and deleting of `Embeddings`. This section -will give you an overview of these features. - -## Adding and Deleting Embeddings -The methods for handling embeddings are similar to the ones handling adapters. To add new embeddings we call -`add_embeddings`. This adds new embeddings for the vocabulary of the `tokenizer`. -In some cases, it might be useful to initialize embeddings of tokens to the ones of another embeddings module. If a -`reference_embedding` and `reference_tokenizer` are provided all embeddings for tokens that are present in both embeddings are initialized to the embedding provided by the `reference_embedding`. The new embedding will be created and set as the active embedding. If you are unsure which embedding -is currently active, the `active_embeddings` property contains the currently active embedding. - -```python -model.add_embeddings('name', tokenizer, reference_embedding='default', reference_tokenizer=reference_tokenizer) -embedding_name = model.active_embeddings -``` - -The original embedding of the transformers model is always available under the name `"default"`. To set it as the active -embedding simply call the `set_active_embedding('name')` method. -```python -model.set_active_embeddings("default") -``` -Similarly, all other embeddings can be set as active by passing their name to the `set_active_embedding` method. - -To delete an embedding that is no longer needed, we can call the `delete_embeddings` method with the name of the adapter -we want to delete. However, you cannot delete the default embedding. -```python -model.delete_embeddings('name') -``` -Please note, that if the active embedding is deleted the default embedding is set as the active embedding. - -## Saving and Loading Embeddings -You can save the embeddings by calling `save_embeddings('path/to/dir', 'name')` and load them with `load_embeddings('path/to/dir', 'name')`. - -```python -model.save_embeddings(path, 'name') -model.load_embeddings(path, 'reloaded_name') -``` - -The path needs to be to a directory in which the weights of the embedding will be saved. - -You can also save and load the tokenizer -with the embedding by passing the tokenizer to `save_embeddings`. -```python -model.save_embeddings(path, 'name', tokenizer) -loaded_tokenizer = model.load_embeddings(path, 'name') -``` diff --git a/adapters/docs/extending.md b/adapters/docs/extending.md deleted file mode 100644 index 290c09b9..00000000 --- a/adapters/docs/extending.md +++ /dev/null @@ -1,34 +0,0 @@ -# Extending the Library - -## Integrating new Transformer models -Currently, not all model types included in Hugging Face's `transformers` support adapters yet. -However, it is possible to add the existing adapter implementation to new models. -For detailed instructions, see [Adding Adapters to a Model](https://docs.adapterhub.ml/contributing/adding_adapters_to_a_model.html). - -## Loading custom module weights - -`adapters` provides support for saving and loading adapter and prediction head modules from the local file system or the Hub out of the box. -However, countless additional module integrations into language models are thinkable. -To provide a basis for such new custom model plugins, `adapters` integrates a basic mechanism to save and load custom weights. - -All adapter and head module weights are extracted, saved and loaded by implementations of the `WeightsLoader` class, the two preincluded being `AdapterLoader` and `PredictionHeadLoader`. To add basic saving and loading functionalities to your custom module weights, you can implement a new subclass of `WeightsLoader`. The two required abstract methods to be implemented are: - -- `filter_func(self, name: str) -> Callable[[str], bool]`: The callable returned by this method is used to extract the module weights to be saved or loaded based on their names. - -- `rename_func(self, old_name: str, new_name: str) -> Callable[[str], str]`: The callable returned by this method is used to optionally rename the module weights after loading. - -For more advanced functionalities, you may also want to override the `save()` and `load()` method. - -Using the custom loader class, weights can now be saved with: -```python -loader = MyCustomWeightsLoader(model) -loader.save("path/to/save/dir", "custom_weights_name") -``` - -You can also upload these weights to the Hub and then load them from there together with an adapter: -```python -model.load_adapter( - "adapter_name", - custom_weights_loaders=[MyCustomWeightsLoader] -) -``` diff --git a/adapters/docs/hub_contributing.md b/adapters/docs/hub_contributing.md deleted file mode 100644 index 4569d3cd..00000000 --- a/adapters/docs/hub_contributing.md +++ /dev/null @@ -1,95 +0,0 @@ -# Contributing Adapters to the Hub - -```{eval-rst} -.. note:: - This document describes how to contribute adapters via the AdapterHub `Hub repository `_. See `Integration with Hugging Face's Model Hub `_ for uploading adapters via the Hugging Face Model Hub. -``` - -You can easily add your own pre-trained adapter modules or architectures to Adapter Hub via our [Hub GitHub repo](https://github.com/adapter-hub/hub). Please make sure to follow the steps below corresponding to the type of contribution you would like to make. - -## Getting started - -Before making any kind of contribution to _Adapter-Hub_, you will first need to set up your own fork of the _Hub_ repository to be able to open a pull request later on: - -1. Fork [the Hub repository](https://github.com/adapter-hub/hub) by clicking the 'Fork' button on the repository's page. This creates a clone of the repository under your GitHub user. - -2. Clone your fork to your local file system: - ```bash - git clone git@github.com:/Hub.git - cd Hub - ``` - -3. Set up the Python environment. This includes the `adapter-hub-cli` which helps in preparing your adapters for the Hub. - ```bash - pip install -U ./scripts/. - ``` - -As you're fully set up now, you can proceed on the specific steps if your contribution: - -- [Contributing Adapters to the Hub](#contributing-adapters-to-the-hub) - - [Getting started](#getting-started) - - [Add your pre-trained adapter](#add-your-pre-trained-adapter) - - [Add a new adapter architecture](#add-a-new-adapter-architecture) - - [Add a new task or subtask](#add-a-new-task-or-subtask) - -## Add your pre-trained adapter - -You can add your pre-trained adapter modules to the Hub so others can load them via `model.load_adapter()`. - -_Note that we currently do not provide an option to host your module weights. Make sure you find an appropriate place to host them yourself or consider uploading your adapter to the huggingface hub!_ - -Let's go through the upload process step by step: - -1. After the training of your adapter has finished, we first would want to save its weights to the local file system: - ```python - model.save_adapter("/path/to/adapter/folder", "your-adapter-name") - ``` - -2. Pack your adapter with the `adapter-hub-cli`. Start the CLI by giving it the path to your saved adapter: - ``` - adapter-hub-cli pack /path/to/adapter/folder - ``` - `adapter-hub-cli` will search for available adapters in the path you specify and interactively lead you through the packing process. - - ```{eval-rst} - .. note:: - The configuration of the adapter is specified by an identifier string in the YAML file. This string should refer to an adapter architecture available in the Hub. If you use a new or custom architecture, make sure to also `add an entry for your architecture <#add-a-new-adapter-architecture>`_ to the repo. - ``` - -3. After step 2, a zipped adapter package and a corresponding YAML adapter card should have been created. - - Upload the zip package to your server space and move the YAML file into a subfolder for your user/ organization in the `adapters` folder of the cloned Hub repository. - - In the YAML adapter card, consider filling out some additional fields not filled out automatically, e.g. a description of your adapter is very useful! - Especially make sure to set a download URL pointing to your uploaded zip package. - -4. (optional) After you completed filling the YAML adapter card, you can perform some validation checks to make sure everything looks right: - ``` - adapter-hub-cli check adapters//.yaml - ``` - -5. Almost finished: Now create [a pull request](https://github.com/Adapter-Hub/Hub/pulls) from your fork back to our repository. - - _We will perform some automatic checks on your PR to make sure the files you added are correct and the provided download links are valid. Keep an eye on the results of these checks!_ - -6. That's it! Your adapter will become available via our website as soon as your pull request is accepted! 🎉🚀 - - -## Add a new adapter architecture - -The `adapters` libraries has some common adapter configurations preincluded. However, if you want to add a new adapter using a different architecture, you can easily do this by adding the architecture configuration to the Hub repo: - -1. After setting up your repository as described in the [Getting started section](#getting-started), create a new YAML file for your architecture in the `architectures` folder. - -2. Fill in the full configuration dictionary of your architecture and some additional details. You can use [our template for architecture files](https://github.com/adapter-hub/hub/blob/main/TEMPLATES/adapter.template.yaml). - -3. Create [a pull request](https://github.com/Adapter-Hub/Hub/pulls) from your fork back to our repository. 🚀 - - -## Add a new task or subtask - -Every adapter submitted to the Hub is identified by the task and the dataset (subtask) it was trained on. You're very encouraged to add additional information on the task and dataset of your adapter if they are not available yet. You can explore all currently available tasks at [https://adapterhub.ml/explore](https://adapterhub.ml/explore). To add a new task or subtask: - -1. After setting up your repository as described in the [Getting started section](#getting-started), create a new YAML file for the task or subtask you would like to add in the `tasks` or `subtasks` folder. - -2. Based on [our template for task files](https://github.com/adapter-hub/hub/blob/main/TEMPLATES/task.template.yaml) or [subtask files](https://github.com/adapter-hub/hub/blob/main/TEMPLATES/task.template.yaml), fill in some description and details on the task. - -3. Create [a pull request](https://github.com/Adapter-Hub/Hub/pulls) from your fork back to our repository. 🚀 diff --git a/adapters/docs/huggingface_hub.md b/adapters/docs/huggingface_hub.md deleted file mode 100644 index f31c1d8c..00000000 --- a/adapters/docs/huggingface_hub.md +++ /dev/null @@ -1,72 +0,0 @@ -# Integration with Hugging Face's Model Hub - -```{eval-rst} -.. figure:: img/hfhub.svg - :align: center - :alt: Hugging Face Hub logo. -``` - -You can download adapters from and upload them to [Hugging Face's Model Hub](https://huggingface.co/models). -This document describes how to interact with the Model Hub when working with adapters. - -## Downloading from the Hub - -The Hugging Face Model Hub already provides a few pre-trained adapters available for download. -To search for available adapters, use the _Adapter Transformers_ library filter on the Model Hub website or use this link: [https://huggingface.co/models?filter=adapters](https://huggingface.co/models?filter=adapters). -Alternatively, all adapters on the Hugging Face Model Hub are also listed on [https://adapterhub.ml/explore](https://adapterhub.ml/explore) together with all adapters directly uploaded to AdapterHub. - -After you have found an adapter you would like to use, loading it into a Transformer model is very similar to [loading adapters from AdapterHub](loading.md). -For example, for loading and activating the adapter [`AdapterHub/roberta-base-pf-sick`](https://huggingface.co/AdapterHub/roberta-base-pf-sick), write: -```python -from adapters import AutoAdapterModel - -model = AutoAdapterModel.from_pretrained("roberta-base") -adapter_name = model.load_adapter("AdapterHub/roberta-base-pf-sick", source="hf") -model.active_adapters = adapter_name -``` -Note that `source="hf"` is the only change from loading an adapter from AdapterHub. - -## Uploading to the Hub - -Hugging Face's Model Hub provides a convenient way for everyone to upload their pre-trained models and share them with the world. -Of course, this is also possible with adapters now! -In the following, we'll go through the fastest way of uploading an adapter directly via Python in the `adapters` library. -For more options and information, e.g. for managing models via the CLI and Git, refer to [HugginFace's documentation](https://huggingface.co/transformers/model_sharing.html). - -1. **Prepare access credentials**: Before being able to push to the Hugging Face Model Hub for the first time, we have to store our access token in the cache. - This can be done via the `transformers-cli` by running: - ``` - transformers-cli login - ``` - -2. **Push an adapter**: Next, we can proceed to upload our first adapter. - Let's say we have a standard pre-trained Transformers model with an existing adapter named `awesome_adapter` (e.g. added via `model.add_adapter("awesome_adapter")` and [trained](training.md) afterwards). - We can now push this adapter to the Model Hub using `model.push_adapter_to_hub()` like this: - ```python - model.push_adapter_to_hub( - "my-awesome-adapter", - "awesome_adapter", - adapterhub_tag="sentiment/imdb", - datasets_tag="imdb" - ) - ``` - This will create a repository `my-awesome-adapter` under your username, generate a default adapter card as `README.md` and upload the adapter named `awesome_adapter` together with the adapter card to the new repository. - `adapterhub_tag` and `datasets_tag` provide additional information for categorization. - - ```{eval-rst} - .. important:: - All adapters uploaded to Hugging Face's Model Hub are automatically also listed on AdapterHub.ml. Thus, for better categorization, either ``adapterhub_tag`` or ``datasets_tag`` is required when uploading a new adapter to the Model Hub. - - - ``adapterhub_tag`` specifies the AdapterHub categorization of the adapter in the format ``/`` according to the tasks and subtasks shown on https://adapterhub.ml/explore. For more, see `Add a new task or subtask `_. - - ``datasets_tag`` specifies the dataset the adapter was trained on as an identifier from `Hugging Face Datasets `_. - ``` - -Voilà! Your first adapter is on the Hugging Face Model Hub. -Anyone can now run: -``` -model.load_adapter("/my-awesome-adapter", source="hf") -``` - -To update your adapter, simply run `push_adapter_to_hub()` with the same repository name again. This will push a new commit to the existing repository. - -You can find the full documentation of `push_adapter_to_hub()` [here](adapters.hub_mixin.PushAdapterToHubMixin.push_adapter_to_hub). diff --git a/adapters/docs/img/hfhub.svg b/adapters/docs/img/hfhub.svg deleted file mode 100644 index a3d076dd..00000000 --- a/adapters/docs/img/hfhub.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/adapters/docs/index.rst b/adapters/docs/index.rst deleted file mode 100644 index 4d13a194..00000000 --- a/adapters/docs/index.rst +++ /dev/null @@ -1,168 +0,0 @@ -.. adapters documentation main file, created by - sphinx-quickstart on Sat Apr 18 10:21:23 2020. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -AdapterHub Documentation -================================================ - -.. note:: - This documentation is based on the new *Adapters* library. - - The documentation based on the legacy *adapter-transformers* library can be found at: `https://docs-legacy.adapterhub.ml `_. - -*AdapterHub* is a framework simplifying the integration, training and usage of adapters and other efficient fine-tuning methods for Transformer-based language models. -For a full list of currently implemented methods, see the `table in our repository `_. - -The framework consists of two main components: - -.. list-table:: - :widths: 50 50 - :header-rows: 1 - - * - `Adapters `_ - - `AdapterHub.ml `_ - * - an add-on to Hugging Face's `Transformers `_ library that adds adapters into transformer models - - a central collection of pre-trained adapter modules - -Currently, we support the PyTorch versions of all models as listed on the `Model Overview `_ page. - -.. toctree:: - :maxdepth: 1 - :caption: Getting Started - - installation - quickstart - training - transitioning - -.. toctree:: - :maxdepth: 2 - :caption: Adapter Methods - - overview - methods - method_combinations - -.. toctree:: - :maxdepth: 2 - :caption: Advanced - - adapter_composition - prediction_heads - embeddings - extending - -.. toctree:: - :maxdepth: 2 - :caption: Loading and Sharing - - loading - hub_contributing - huggingface_hub - -.. toctree:: - :maxdepth: 1 - :caption: Supported Models - - model_overview - classes/models/albert - classes/models/auto - classes/models/bart - classes/models/beit - classes/models/bert - classes/models/bert-generation - classes/models/clip - classes/models/deberta - classes/models/deberta_v2 - classes/models/distilbert - classes/models/electra - classes/models/encoderdecoder - classes/models/gpt2 - classes/models/gptj - classes/models/llama - classes/models/mbart - classes/models/roberta - classes/models/t5 - classes/models/vit - classes/models/xlmroberta - classes/models/xmod - -.. toctree:: - :maxdepth: 1 - :caption: Adapter-Related Classes - - classes/adapter_config - classes/model_adapters_config - classes/adapter_layer - classes/model_mixins - classes/adapter_training - classes/adapter_utils - -.. toctree:: - :maxdepth: 1 - :caption: Contributing - - contributing - contributing/adding_adapter_methods - contributing/adding_adapters_to_a_model - -Citation -======== - -If you use _Adapters_ in your work, please consider citing our library paper `Adapters: A Unified Library for Parameter-Efficient and Modular Transfer Learning ` - - -.. code-block:: bibtex - - @inproceedings{poth-etal-2023-adapters, - title = "Adapters: A Unified Library for Parameter-Efficient and Modular Transfer Learning", - author = {Poth, Clifton and - Sterz, Hannah and - Paul, Indraneil and - Purkayastha, Sukannya and - Engl{\"a}nder, Leon and - Imhof, Timo and - Vuli{\'c}, Ivan and - Ruder, Sebastian and - Gurevych, Iryna and - Pfeiffer, Jonas}, - booktitle = "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations", - month = dec, - year = "2023", - address = "Singapore", - publisher = "Association for Computational Linguistics", - url = "https://aclanthology.org/2023.emnlp-demo.13", - pages = "149--160", - } - - -Alternatively, for the predecessor `adapter-transformers`, the Hub infrastructure and adapters uploaded by the AdapterHub team, please consider citing our initial paper: `AdapterHub: A Framework for Adapting Transformers `_ - - -.. code-block:: bibtex - - @inproceedings{pfeiffer2020AdapterHub, - title={AdapterHub: A Framework for Adapting Transformers}, - author={Jonas Pfeiffer and - Andreas R\"uckl\'{e} and - Clifton Poth and - Aishwarya Kamath and - Ivan Vuli\'{c} and - Sebastian Ruder and - Kyunghyun Cho and - Iryna Gurevych}, - booktitle={Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP 2020): Systems Demonstrations}, - year={2020}, - address = "Online", - publisher = "Association for Computational Linguistics", - url = "https://www.aclweb.org/anthology/2020.emnlp-demos.7", - pages = "46--54", - } - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` diff --git a/adapters/docs/installation.md b/adapters/docs/installation.md deleted file mode 100644 index c3b8468e..00000000 --- a/adapters/docs/installation.md +++ /dev/null @@ -1,40 +0,0 @@ -# Installation - -The `adapters` package is designed as an add-on for Hugging Face's Transformers library. -It currently supports Python 3.8+ and PyTorch 1.10+. You will have to [install PyTorch](https://pytorch.org/get-started/locally/) first. - -```{eval-rst} -.. important:: - Each ``adapters`` version is built for one specific version of Transformers. - While using a different version of Transformers with an ``adapters`` might work, it is highly recommended to use the intended version. - ``adapters`` will automatically install the correct Transformers version if not installed. -``` - -## Using pip - -### From PyPI - -The simplest way of installation is by using pip to install the package from the Python Package Index: - -``` -pip install adapters -``` - -### From GitHub - -You can also install the latest development version directly from our GitHub repository: - -``` -pip install git+https://github.com/adapter-hub/adapters.git -``` - -## From repository - -Alternatively, you can clone the repository first and install the package from source. -This allows you to run the included example scripts directly: - -``` -git clone https://github.com/adapter-hub/adapters.git -cd adapters -pip install . -``` diff --git a/adapters/docs/loading.md b/adapters/docs/loading.md deleted file mode 100644 index 1c9eac8a..00000000 --- a/adapters/docs/loading.md +++ /dev/null @@ -1,134 +0,0 @@ -# Loading Pre-Trained Adapters - -## Finding pre-trained adapters - -**[AdapterHub.ml](https://adapterhub.ml/explore)** provides a central collection of all pre-trained adapters uploaded via [our Hub repository](https://github.com/adapter-hub/hub) or Hugging Face's [Model Hub](https://huggingface.co/models). -You can easily find pre-trained adapters for your task of interest along with all relevant information and code snippets to get started (also see below). - -Alternatively, [`list_adapters()`](adapters.utils.list_adapters) provides a programmatical way of accessing all available pre-trained adapters. -This will return an [`AdapterInfo`](adapters.utils.AdapterInfo) object for each retrieved adapter. -E.g., we can use it to retrieve information for all adapters trained for a specific model: - -```python -from adapters import list_adapters - -# source can be "ah" (AdapterHub), "hf" (huggingface.co) or None (for both, default) -adapter_infos = list_adapters(source="ah", model_name="bert-base-uncased") - -for adapter_info in adapter_infos: - print("Id:", adapter_info.adapter_id) - print("Model name:", adapter_info.model_name) - print("Uploaded by:", adapter_info.username) -``` - -In case the adapter ID is known, information for a single adapter can also be retrieved via [`get_adapter_info()`](adapters.utils.get_adapter_info): - -```python -adapter_info = get_adapter_info("@ukp/bert-base-uncased_sentiment_sst-2_pfeiffer", source="ah") - -print("Id:", adapter_info.adapter_id) -print("Model name:", adapter_info.model_name) -print("Uploaded by:", adapter_info.username) -``` - -## Using pre-trained adapters in your code - -Suppose we have loaded a pre-trained transformer model from Hugging Face, e.g. BERT, and initialized it for adding adapters: - -```python -from transformers import BertModel -import adapters - -model = BertModel.from_pretrained('bert-base-uncased') -adaptrers.init(model) -``` - -We can now easily load a pre-trained adapter module from Adapter Hub by its identifier using the [`load_adapter()`](adapters.ModelWithHeadsAdaptersMixin.load_adapter) method: - -```python -adapter_name = model.load_adapter('sst-2') -``` - -In the minimal case, that's everything we need to specify to load a pre-trained task adapter for sentiment analysis, trained on the `sst-2` dataset using BERT base and a suitable adapter configuration. -The name of the adapter is returned by [`load_adapter()`](adapters.ModelWithHeadsAdaptersMixin.load_adapter), so we can [activate it](adapter_composition.md) in the next step: -```python -model.set_active_adapters(adapter_name) -``` - -As the second example, let's have a look at how to load an adapter based on the [`AdapterInfo`](adapters.utils.AdapterInfo) returned by the [`list_adapters()`](adapters.utils.list_adapters) method from [above](#finding-pre-trained-adapters): -```python -from adapters import AutoAdapterModel, list_available_adapters - -adapter_infos = list_available_adapters(source="ah") -# Take the first adapter info as an example -adapter_info = adapter_infos[0] - -model = AutoAdapterModel.from_pretrained(adapter_info.model_name) -model.load_adapter(adapter_info.adapter_id, source=adapter_info.source) -``` - -### Advanced usage of `load_adapter()` - -To examine what's happening underneath in a bit more detail, let's first write out the full method call with all relevant arguments explicitly stated: - -```python -model.load_adapter( - 'sst-2', - config='pfeiffer', - model_name='bert-base-uncased', - version=1, - load_as='sst', - source='ah' -) -``` - -We will go through the different arguments and their meaning one by one: - -- The first argument passed to the method specifies the name of the adapter we want to load from Adapter-Hub. The library will search for an available adapter module with this name that matches the model architecture as well as the adapter type and configuration we requested. As the identifier `sst-2` resolves to a unique entry in the Hub, the corresponding adapter can be successfully loaded based on this information. To get an overview of all available adapter identifiers, please refer to [the Adapter-Hub website](https://adapterhub.ml/explore). The different format options of the identifier string are further described in [How adapter resolving works](#how-adapter-resolving-works). - -- The `config` argument defines the adapter architecture the loaded adapter should have. -The value of this parameter can be either a string identifier for one of the predefined architectures, the identifier of an architecture available in the Hub or a dictionary representing a full adapter configuration. -Based on this information, the library will only search for pre-trained adapter modules having the same configuration. - -- Adapter modules trained on different pre-trained language models in general can not be used interchangeably. -Therefore, we need to make sure to load an adapter matching the language model we are using. -If possible, the library will infer the name of the pre-trained model automatically (e.g. when we use `from_pretrained('identifier')` to load a model from Hugging Face). However, if this is not the case, we must specify the name of the host model in the `model_name` parameter. - -- There could be multiple versions of the same adapter available. To load a specific version, use the `version` parameter. - -- By default, the `load_adapter()` method will add the loaded adapter using the identifier string given as the first argument. -To load the adapter using a custom name, we can use the `load_as` parameter. - -- Finally the `source` parameter provides the possibility to load adapters from alternative adapter repositories. -Besides the default value `ah`, referring to AdapterHub, it's also possible to pass `hf` to [load adapters from Hugging Face's Model Hub](huggingface_hub.md). - -## How adapter resolving works - -As described in the previous section, the methods for loading adapters are able to resolve the correct adapter weights -based on the given identifier string, the model name and the adapter configuration. -Using this information, the `adapters` library searches for a matching entry in the index of the [Hub GitHub repo](https://github.com/adapter-hub/hub). - -The identifier string used to find a matching adapter follows a format consisting of three components: -``` -/@ -``` - -- ``: A generic task identifier referring to a category of similar tasked (e.g. `sentiment`, `nli`) -- ``: A dataset or domain, on which the adapter was trained (e.g. `multinli`, `wiki`) -- ``: The name of the user or organization that uploaded the pre-trained adapter - -An example of a full identifier following this format might look like `qa/squad1.1@example-org`. - -```{eval-rst} -.. important:: - In many cases, you don't have to give the full string identifier with all three components to successfully load an adapter from the Hub. You can drop the `` you don't care about the uploader of the adapter. Also, if the resulting identifier is still unique, you can drop the ```` or the ````. So, ``qa/squad1.1``, ``squad1.1`` or ``squad1.1@example-org`` all may be valid identifiers. -``` - -An alternative adapter identifier format is given by: - -``` -@/ -``` - -where `` refers to the name of a adapter file in the [Hub repo](https://github.com/adapter-hub/hub). -In contrast to the previous three-component identifier, this identifier is guaranteed to be unique. diff --git a/adapters/docs/make.bat b/adapters/docs/make.bat deleted file mode 100644 index 922152e9..00000000 --- a/adapters/docs/make.bat +++ /dev/null @@ -1,35 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=. -set BUILDDIR=_build - -if "%1" == "" goto help - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% - -:end -popd diff --git a/adapters/docs/method_combinations.md b/adapters/docs/method_combinations.md deleted file mode 100644 index 3205b41f..00000000 --- a/adapters/docs/method_combinations.md +++ /dev/null @@ -1,124 +0,0 @@ -# Method Combinations - -_Configuration class_: [`ConfigUnion`](adapters.ConfigUnion) - -While different efficient fine-tuning methods and configurations have often been proposed as standalone, combining them for joint training might be beneficial. -To make this process easier, `adapters` provides the possibility to group multiple configuration instances using the [`ConfigUnion`](adapters.ConfigUnion) class. - -For example, this could be used to define different reduction factors for the adapter modules placed after the multi-head attention and the feed-forward blocks: - -```python -from adapters import BnConfig, ConfigUnion - -config = ConfigUnion( - BnConfig(mh_adapter=True, output_adapter=False, reduction_factor=16, non_linearity="relu"), - BnConfig(mh_adapter=False, output_adapter=True, reduction_factor=2, non_linearity="relu"), -) -model.add_adapter("union_adapter", config=config) -``` - -## Mix-and-Match Adapters - -_Configuration class_: [`MAMConfig`](adapters.MAMConfig) - -[He et al. (2021)](https://arxiv.org/pdf/2110.04366.pdf) study various variants and combinations of efficient fine-tuning methods. -They propose _Mix-and-Match Adapters_ as a combination of Prefix Tuning and parallel bottleneck adapters. -This configuration is supported by `adapters` out-of-the-box: - -```python -from adapters import MAMConfig - -config = MAMConfig() -model.add_adapter("mam_adapter", config=config) -``` - -and is identical to using the following `ConfigUnion`: - -```python -from adapters import ConfigUnion, ParBnConfig, PrefixTuningConfig - -config = ConfigUnion( - PrefixTuningConfig(bottleneck_size=800), - ParBnConfig(), -) -model.add_adapter("mam_adapter", config=config) -``` - -_Papers:_ -- [Towards a Unified View of Parameter-Efficient Transfer Learning](https://arxiv.org/pdf/2110.04366.pdf) (He et al., 2021) - -## UniPELT - -_Configuration class_: [`UniPELTConfig`](adapters.UniPELTConfig) - -```{eval-rst} -.. figure:: img/unipelt.png - :height: 300 - :align: center - :alt: Illustration of UniPELT. - - Illustration of the UniPELT method within one Transformer layer. Trained components are colored in shades of magenta. -``` - -An approach similar to the work of [He et al. (2021)](https://arxiv.org/pdf/2110.04366.pdf) is taken by [Mao et al. (2022)](https://arxiv.org/pdf/2110.07577.pdf) in their _UniPELT_ framework. -They, too, combine multiple efficient fine-tuning methods, namely LoRA, Prefix Tuning and bottleneck adapters, in a single unified setup. -_UniPELT_ additionally introduces a gating mechanism that controls the activation of the different submodules. - -Concretely, for each adapted module $m$, UniPELT adds a trainable gating value $\mathcal{G}_m \in (0, 1)$ that is computed via a feed-forward network ($W_{\mathcal{G}_m}$) and sigmoid activation ($\sigma$) from the Transformer layer input states ($x$): - -$$\mathcal{G}_m \leftarrow \sigma(W_{\mathcal{G}_m} \cdot x)$$ - -These gating values are then used to scale the output activations of the injected adapter modules, e.g., for a LoRA layer: - -$$ -h \leftarrow W_0 x + \mathcal{G}_{LoRA} B A x -$$ - -In the configuration classes of `adapters`, these gating mechanisms can be activated via `use_gating=True`. -The full UniPELT setup can be instantiated using `UniPELTConfig`[^unipelt]: - -[^unipelt]: Note that the implementation of UniPELT in `adapters` follows the implementation in the original code, which is slightlty different from the description in the paper. See [here](https://github.com/morningmoni/UniPELT/issues/1) for more. - -```python -from adapters import UniPELTConfig - -config = UniPELTConfig() -model.add_adapter("unipelt", config=config) -``` - -which is identical to the following `ConfigUnion`: - -```python -from adapters import ConfigUnion, LoRAConfig, PrefixTuningConfig, SeqBnConfig - -config = ConfigUnion( - LoRAConfig(r=8, use_gating=True), - PrefixTuningConfig(prefix_length=10, use_gating=True), - SeqBnConfig(reduction_factor=16, use_gating=True), -) -model.add_adapter("unipelt", config=config) -``` - -Finally, as the gating values for each adapter module might provide interesting insights for analysis, `adapters` comes with an integrated mechanism of returning all gating values computed during a model forward pass via the `output_adapter_gating_scores` parameter: - -```python -outputs = model(**inputs, output_adapter_gating_scores=True) -gating_scores = outputs.adapter_gating_scores -``` -Note that this parameter is only available to base model classes and [AdapterModel classes](prediction_heads.md#adaptermodel-classes). -In the example, `gating_scores` holds a dictionary of the following form: -``` -{ - '': { - : { - '': np.array([...]), - ... - }, - ... - }, - ... -} -``` - -_Papers:_ -- [UNIPELT: A Unified Framework for Parameter-Efficient Language Model Tuning](https://arxiv.org/pdf/2110.07577.pdf) (Mao et al., 2022) diff --git a/adapters/docs/methods.md b/adapters/docs/methods.md deleted file mode 100644 index 06ad700e..00000000 --- a/adapters/docs/methods.md +++ /dev/null @@ -1,297 +0,0 @@ -# Adapter Methods - -On this page, we present all adapter methods currently integrated into the `adapters` library. -A tabular overview of adapter methods is provided [here](overview.html#table-of-adapter-methods). -Additionally, options to combine multiple adapter methods in a single setup are presented [on the next page](method_combinations.md). - -## Bottleneck Adapters - -_Configuration class_: [`BnConfig`](adapters.BnConfig) - -Bottleneck adapters introduce bottleneck feed-forward layers in each layer of a Transformer model. -Generally, these adapter layers consist of a down-projection matrix $W_{down}$ that projects the layer hidden states into a lower dimension $d_{bottleneck}$, a non-linearity $f$, an up-projection $W_{up}$ that projects back into the original hidden layer dimension and a residual connection $r$: - -$$ -h \leftarrow W_{up} \cdot f(W_{down} \cdot h) + r -$$ - -Depending on the concrete adapter configuration, these layers can be introduced at different locations within a Transformer block. Further, residual connections, layer norms, activation functions and bottleneck sizes ,etc., can be configured. - -The most important configuration hyperparameter to be highlighted here is the bottleneck dimension $d_{bottleneck}$. -In adapters, this bottleneck dimension is specified indirectly via the `reduction_factor` attribute of a configuration. -This `reduction_factor` defines the ratio between a model's layer hidden dimension and the bottleneck dimension, i.e.: - -$$ -\text{reduction_factor} = \frac{d_{hidden}}{d_{bottleneck}} -$$ - -A visualization of further configuration options related to the adapter structure is given in the figure below. For more details, we refer to the documentation of `BnConfig`](adapters.BnConfig). - - -```{eval-rst} -.. figure:: img/architecture.png - :width: 350 - :align: center - :alt: Adapter architectures - - Visualization of possible adapter configurations with corresponding dictionary keys. -``` - -`adapters` comes with pre-defined configurations for some bottleneck adapter architectures proposed in literature: - -- [`DoubleSeqBnConfig`](adapters.DoubleSeqBnConfig), as proposed by [Houlsby et al. (2019)](https://arxiv.org/pdf/1902.00751.pdf) places adapter layers after both the multi-head attention and feed-forward block in each Transformer layer. -- [`SeqBnConfig`](adapters.SeqBnConfig), as proposed by [Pfeiffer et al. (2020)](https://arxiv.org/pdf/2005.00052.pdf) places an adapter layer only after the feed-forward block in each Transformer layer. -- [`ParBnConfig`](adapters.ParBnConfig), as proposed by [He et al. (2021)](https://arxiv.org/pdf/2110.04366.pdf) places adapter layers in parallel to the original Transformer layers. - -_Example_: -```python -from adapters import BnConfig - -config = BnConfig(mh_adapter=True, output_adapter=True, reduction_factor=16, non_linearity="relu") -model.add_adapter("bottleneck_adapter", config=config) -``` - -_Papers:_ - -* [Parameter-Efficient Transfer Learning for NLP](https://arxiv.org/pdf/1902.00751.pdf) (Houlsby et al., 2019) -* [Simple, Scalable Adaptation for Neural Machine Translation](https://arxiv.org/pdf/1909.08478.pdf) (Bapna and Firat, 2019) -* [AdapterFusion: Non-Destructive Task Composition for Transfer Learning](https://aclanthology.org/2021.eacl-main.39.pdf) (Pfeiffer et al., 2021) -* [AdapterHub: A Framework for Adapting Transformers](https://arxiv.org/pdf/2007.07779.pdf) (Pfeiffer et al., 2020) - -## Language Adapters - Invertible Adapters - -_Configuration class_: [`SeqBnInvConfig`](adapters.SeqBnInvConfig), [`DoubleSeqBnInvConfig`](adapters.DoubleSeqBnInvConfig) - -The MAD-X setup ([Pfeiffer et al., 2020](https://arxiv.org/pdf/2005.00052.pdf)) proposes language adapters to learn language-specific transformations. -After being trained on a language modeling task, a language adapter can be stacked before a task adapter for training on a downstream task. -To perform zero-shot cross-lingual transfer, one language adapter can simply be replaced by another. - -In terms of architecture, language adapters are largely similar to regular bottleneck adapters, except for an additional _invertible adapter_ layer after the LM embedding layer. -Embedding outputs are passed through this invertible adapter in the forward direction before entering the first Transformer layer and in the inverse direction after leaving the last Transformer layer. -Invertible adapter architectures are further detailed in [Pfeiffer et al. (2020)](https://arxiv.org/pdf/2005.00052.pdf) and can be configured via the `inv_adapter` attribute of the `BnConfig` class. - -_Example_: -```python -from adapters import SeqBnInvConfig - -config = SeqBnInvConfig() -model.add_adapter("lang_adapter", config=config) -``` - -_Papers:_ -- [MAD-X: An Adapter-based Framework for Multi-task Cross-lingual Transfer](https://arxiv.org/pdf/2005.00052.pdf) (Pfeiffer et al., 2020) - -```{eval-rst} -.. note:: - V1.x of adapters made a distinction between task adapters (without invertible adapters) and language adapters (with invertible adapters) with the help of the ``AdapterType`` enumeration. - This distinction was dropped with v2.x. -``` - -## Prefix Tuning - -_Configuration class_: [`PrefixTuningConfig`](adapters.PrefixTuningConfig) - -```{eval-rst} -.. figure:: img/prefix.png - :height: 300 - :align: center - :alt: Illustration of Prefix Tuning. - - Illustration of the Prefix Tuning method within one Transformer layer. Trained components are colored in shades of magenta. -``` - -Prefix Tuning ([Li and Liang, 2021](https://aclanthology.org/2021.acl-long.353.pdf)) introduces new parameters in the multi-head attention blocks in each Transformer layer. -More specifically, it prepends trainable prefix vectors $P^K$ and $P^V$ to the keys and values of the attention head input, each of a configurable prefix length $l$ (`prefix_length` attribute): - -$$ -head_i = \text{Attention}(Q W_i^Q, [P_i^K, K W_i^K], [P_i^V, V W_i^V]) -$$ - -Following the original authors, the prefix vectors in $P^K$ and $P^V$ are not optimized directly but reparameterized via a bottleneck MLP. -This behavior is controlled via the `flat` attribute of the configuration. -Using `PrefixTuningConfig(flat=True)` will create prefix tuning vectors that are optimized without reparameterization. - -_Example_: -```python -from adapters import PrefixTuningConfig - -config = PrefixTuningConfig(flat=False, prefix_length=30) -model.add_adapter("prefix_tuning", config=config) -``` - -As reparameterization using the bottleneck MLP is not necessary for performing inference on an already trained Prefix Tuning module, `adapters` includes a function to "eject" a reparameterized Prefix Tuning into a flat one: -```python -model.eject_prefix_tuning("prefix_tuning") -``` -This will only retain the necessary parameters and reduces the size of the trained Prefix Tuning. - -_Papers:_ -- [Prefix-Tuning: Optimizing Continuous Prompts for Generation](https://arxiv.org/pdf/2101.00190.pdf) (Li and Liang, 2021) - -## Compacter - -_Configuration class_: [`CompacterConfig`](adapters.CompacterConfig), [`CompacterPlusPlusConfig`](adapters.CompacterPlusPlusConfig) - -```{eval-rst} -.. figure:: img/compacter.png - :height: 300 - :align: center - :alt: Illustration of Compacter. - - Illustration of the Compacter method within one Transformer layer. Trained components are colored in shades of magenta. -``` - -The Compacter architecture proposed by [Mahabadi et al., 2021](https://arxiv.org/pdf/2106.04647.pdf) -is similar to the bottleneck adapter architecture. It only exchanges the linear down- and -up-projection with a PHM layer. Unlike the linear layer, the PHM layer constructs its weight matrix from two smaller matrices, which reduces the number of parameters. - These matrices can be factorized and shared between all adapter layers. You can exchange the down- and up-projection layers from any of the bottleneck adapters described in the previous section -for a PHM layer by specifying `use_phm=True` in the config. - -The PHM layer has the following additional properties: `phm_dim`, `shared_phm_rule`, `factorized_phm_rule`, `learn_phm`, -`factorized_phm_W`, `shared_W_phm`, `phm_c_init`, `phm_init_range`, `hypercomplex_nonlinearity` - -For more information, check out the [`BnConfig`](adapters.BnConfig) class. - -To add a Compacter to your model, you can use the predefined configs: -```python -from adapters import CompacterConfig - -config = CompacterConfig() -model.add_adapter("dummy", config=config) -``` -_Papers:_ -- [COMPACTER: Efficient Low-Rank Hypercomplex Adapter Layers](https://arxiv.org/pdf/2106.04647.pdf) (Mahabadi, Henderson and Ruder, 2021) - -## LoRA - -_Configuration class_: [`LoRAConfig`](adapters.LoRAConfig) - -```{eval-rst} -.. figure:: img/lora.png - :height: 300 - :align: center - :alt: Illustration of LoRA. - - Illustration of the LoRA method within one Transformer layer. Trained components are colored in shades of magenta. -``` - -Low-Rank Adaptation (LoRA) is an efficient fine-tuning technique proposed by [Hu et al. (2021)](https://arxiv.org/pdf/2106.09685.pdf). -LoRA injects trainable low-rank decomposition matrices into the layers of a pre-trained model. -For any model layer expressed as a matrix multiplication of the form $h = W_0 x$, it performs a reparameterization, such that: - -$$ -h = W_0 x + \frac{\alpha}{r} B A x -$$ - -Here, $A \in \mathbb{R}^{r\times k}$ and $B \in \mathbb{R}^{d\times r}$ are the decomposition matrices and $r$, the low-dimensional rank of the decomposition, is the most important hyperparameter. - -While, in principle, this reparameterization can be applied to any weight matrix in a model, the original paper only adapts the attention weights of the Transformer self-attention sub-layer with LoRA. -`adapters` additionally allows injecting LoRA into the dense feed-forward layers in the intermediate and output components of a Transformer block. -You can configure the locations where LoRA weights should be injected using the attributes in the [`LoRAConfig`](adapters.LoRAConfig) class. - -_Example_: -```python -from adapters import LoRAConfig - -config = LoRAConfig(r=8, alpha=16) -model.add_adapter("lora_adapter", config=config) -``` - -In the design of LoRA, Hu et al. (2021) also pay special attention to keeping the inference latency overhead compared to full fine-tuning at a minimum. -To accomplish this, the LoRA reparameterization can be merged with the original pre-trained weights of a model for inference. -Thus, the adapted weights are directly used in every forward pass without passing activations through an additional module. -In `adapters`, this can be realized using the built-in [`merge_adapter()`](adapters.ModelAdaptersMixin.merge_adapter) method: -```python -model.merge_adapter("lora_adapter") -``` - -To continue training on this LoRA adapter or to deactivate it entirely, the merged weights first have to be reset again: -```python -model.reset_adapter() -``` - -_Papers:_ -- [LoRA: Low-Rank Adaptation of Large Language Models](https://arxiv.org/pdf/2106.09685.pdf) (Hu et al., 2021) - -## (IA)^3 - -_Configuration class_: [`IA3Config`](adapters.IA3Config) - -```{eval-rst} -.. figure:: img/ia3.png - :height: 300 - :align: center - :alt: Illustration of (IA)^3. - - Illustration of the (IA)^3 method within one Transformer layer. Trained components are colored in shades of magenta. -``` - -_Infused Adapter by Inhibiting and Amplifying Inner Activations ((IA)^3)_ is an efficient fine-tuning method proposed within the _T-Few_ fine-tuning approach by [Liu et al. (2022)](https://arxiv.org/pdf/2205.05638.pdf). -(IA)^3 introduces trainable vectors $l_W$ into different components of a Transformer model, which perform element-wise rescaling of inner model activations. -For any model layer expressed as a matrix multiplication of the form $h = W x$, it therefore performs an element-wise multiplication with $l_W$, such that: - -$$ -h = l_W \odot W x -$$ - -Here, $\odot$ denotes element-wise multiplication where the entries of $l_W$ are broadcasted to the shape of $W$. - -_Example_: -```python -from adapters import IA3Config - -config = IA3Config() -model.add_adapter("ia3_adapter", config=config) -``` - -The implementation of (IA)^3, as well as the [`IA3Config`](adapters.IA3Config) class, are derived from the implementation of [LoRA](#lora), with a few main modifications. -First, (IA)^3 uses multiplicative composition of weights instead of additive composition, as in LoRA. -Second, the added weights are not further decomposed into low-rank matrices. -These modifications are controlled via the `composition_mode` configuration attribute by setting `composition_mode="scale"`. -Additionally, as the added weights are already of rank 1, `r=1` is set. - -Beyond that, both methods share the same configuration attributes that allow you to specify in which Transformer components rescaling vectors will be injected. -Following the original implementation, [`IA3Config`](adapters.IA3Config) adds rescaling vectors to the self-attention weights (`selfattn_lora=True`) and the final feed-forward layer (`output_lora=True`). -Further, you can modify which matrices of the attention mechanism to rescale by leveraging the `attn_matrices` attribute. -By default, (IA)^3 injects weights into the key ('k') and value ('v') matrices but not in the query ('q') matrix. - -Finally, similar to LoRA, (IA)^3 also allows merging the injected parameters with the original weight matrices of the Transformer model. -E.g.: -```python -# Merge (IA)^3 adapter -model.merge_adapter("ia3_adapter") - -# Reset merged weights -model.reset_adapter() -``` - -_Papers:_ -- [Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning](https://arxiv.org/pdf/2205.05638.pdf) (Liu et al., 2022) - -## Prompt Tuning -Prompt Tuning is an efficient fine-tuning technique proposed by Lester et al. (2021). Prompt tuning adds tunable tokens, called soft-prompts, that are prepended to the input text. -First, the input sequence ${x_1, x_2, \dots, x_n }$ gets embedded, resulting in the matrix $X_e \in \mathbb{R}^{n \times e}$ where $e$ is the dimension of -the embedding space. The soft-prompts with length $p$ are represented as $P_e \in \mathbb{R}^{p \times e}$. -$P_e$ and $X_e$ get concatenated, forming the input of the following encoder or decoder: - -$$ -\left[P_e; X_e\right] \in \mathbb{R}^{\left(p + n\right) \times e} -$$ - -The `PromptTuningConfig` has the properties: -- `prompt_length`: to set the soft-prompts length $p$ -- `prompt_init`: to set the weight initialisation method, which is either "random_uniform" or "from_string" to initialize each prompt token with an embedding drawn from the model’s vocabulary. - - `prompt_init_text` as the text use for initialisation if `prompt_init="from_string"` -- `combine`: To define if the prefix should be added before the embedded input sequence or after the BOS token - -To add Prompt Tuning to your model, you can use the predefined configs: -```python -from adapters import PromptTuningConfig - -config = PromptTuningConfig(prompt_length=10) -model.add_adapter("dummy", config=config) -``` - -_Papers:_ -- [The Power of Scale for Parameter-Efficient Prompt Tuning](https://aclanthology.org/2021.emnlp-main.243/) (Lester et al., 2021) - diff --git a/adapters/docs/model_overview.md b/adapters/docs/model_overview.md deleted file mode 100644 index 58ae523b..00000000 --- a/adapters/docs/model_overview.md +++ /dev/null @@ -1,42 +0,0 @@ -# Model Overview - -This page gives an overview of the Transformer models currently supported by `adapters`. -The table below further shows which model architectures support which adaptation methods and which features of `adapters`. - -```{eval-rst} -.. note:: - Each supported model architecture X typically provides a class ``XAdapterModel`` for usage with ``AutoAdapterModel``. - Additionally, it is possible to use adapters with the model classes already shipped with Hugging Face Transformers. For these classes, initialize the model for adapters with `adapters.init(model)`. - E.g., for BERT, this means adapters provides a ``BertAdapterModel`` class, but you can also use ``BertModel``, ``BertForSequenceClassification`` etc. together with adapters. -``` - -| Model | (Bottleneck)
Adapters | Prefix
Tuning | LoRA | Compacter | Adapter
Fusion | Invertible
Adapters | Parallel
block | Prompt
Tuning | -| --------------------------------------- | -| - | - | - | - | - | - |- | -| [ALBERT](classes/models/albert.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [BART](classes/models/bart.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | -| [BEIT](classes/models/beit.html) | ✅ | ✅ | ✅ | ✅ | ✅ | | | ✅ | -| [BERT-Generation](classes/models/bert-generation.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [BERT](classes/models/bert.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [CLIP](classes/models/clip.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | | -| [DeBERTa](classes/models/deberta.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [DeBERTa-v2](classes/models/debertaV2.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [DistilBERT](classes/models/distilbert.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [Electra](classes/models/electra.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [Encoder Decoder](classes/models/encoderdecoder.html) | (*) | (*) | (*) | (*) | (*) | (*) | | | -| [GPT-2](classes/models/gpt2.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | -| [GPT-J](classes/models/gptj.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | -| [Llama](classes/models/llama.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | -| [MBart](classes/models/mbart.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | -| [MT5](classes/models/mt5.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | -| [RoBERTa](classes/models/roberta.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [T5](classes/models/t5.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | -| [ViT](classes/models/vit.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [XLM-RoBERTa](classes/models/xlmroberta.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| [X-MOD](classes/models/xmod.html) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - -(*) If the used encoder and decoder model class are supported. - -**Missing a model architecture you'd like to use?** -adapters can be easily extended to new model architectures as described in [Adding Adapters to a Model](https://docs.adapterhub.ml/contributing/adding_adapters_to_a_model.html). -Feel free to [open an issue](https://github.com/Adapter-Hub/adapters/issues) requesting support for a new architecture. -_We very much welcome pull requests adding new model implementations!_ diff --git a/adapters/docs/overview.md b/adapters/docs/overview.md deleted file mode 100644 index ee76c2b3..00000000 --- a/adapters/docs/overview.md +++ /dev/null @@ -1,99 +0,0 @@ -# Overview and Configuration - -Large pre-trained Transformer-based language models (LMs) have become the foundation of NLP in recent years. -While the most prevalent method of using these LMs for transfer learning involves costly *full fine-tuning* of all model parameters, a series of *efficient* and *lightweight* alternatives have recently been established. -Instead of updating all parameters of the pre-trained LM towards a downstream target task, these methods commonly introduce a small number of new parameters and only update these while keeping the pre-trained model weights fixed. - -```{admonition} Why use Efficient Fine-Tuning? -Efficient fine-tuning methods offer multiple benefits over the full fine-tuning of LMs: - -- They are **parameter-efficient**, i.e., they only update a tiny subset (often under 1%) of a model's parameters. -- They often are **modular**, i.e., the updated parameters can be extracted and shared independently of the base model parameters. -- They are easy to share and deploy due to their **small file sizes**, e.g., having only ~3MB per task instead of ~440MB for sharing a full model. -- They **speed up training**, i.e., efficient fine-tuning often requires less training time than fully fine-tuning LMs. -- They are **composable**, e.g., multiple adapters trained on different tasks can be stacked, fused, or mixed to leverage their combined knowledge. -- They often provide **on-par performance** with full fine-tuning. -``` - -More specifically, let the parameters of a LM be composed of a set of pre-trained parameters $\Theta$ (frozen) and a set of (newly introduced) parameters $\Phi$. -Then, efficient fine-tuning methods optimize only $\Phi$ according to a loss function $L$ on a dataset $D$: - -$$ -\Phi^* \leftarrow \arg \min_{\Phi} L(D; \{\Theta, \Phi\}) -$$ - -Efficient fine-tuning might insert parameters $\Phi$ at different locations of a Transformer-based LM. -One early and successful method, (bottleneck) adapters, introduces bottleneck feed-forward layers in each layer of a Transformer model. -While these adapters have laid the foundation of the `adapters` library, multiple alternative methods have been introduced and integrated since. - -```{eval-rst} -.. important:: - In literature, different terms are used to refer to efficient fine-tuning methods. - The term "adapter" is usually only applied to bottleneck adapter modules. - However, most efficient fine-tuning methods follow the same general idea of inserting a small set of new parameters and, by this, "adapting" the pre-trained LM to a new task. - In ``adapters``, the term "adapter" thus may refer to any efficient fine-tuning method if not specified otherwise. -``` - -In the remaining sections, we will present how adapter methods can be configured in `adapters`. -The next two pages will then present the methodological details of all currently supported adapter methods. - -## Table of Adapter Methods - -The following table gives an overview of all adapter methods supported by `adapters`. -Identifiers and configuration classes are explained in more detail in the [next section](#configuration). - -| Identifier | Configuration class | More information -| --- | --- | --- | -| `seq_bn` | `SeqBnConfig()` | [Bottleneck Adapters](methods.html#bottleneck-adapters) | -| `double_seq_bn` | `DoubleSeqBnConfig()` | [Bottleneck Adapters](methods.html#bottleneck-adapters) | -| `par_bn` | `ParBnConfig()` | [Bottleneck Adapters](methods.html#bottleneck-adapters) | -| `scaled_par_bn` | `ParBnConfig(scaling="learned")` | [Bottleneck Adapters](methods.html#bottleneck-adapters) | -| `seq_bn_inv` | `SeqBnInvConfig()` | [Invertible Adapters](methods.html#language-adapters---invertible-adapters) | -| `double_seq_bn_inv` | `DoubleSeqBnInvConfig()` | [Invertible Adapters](methods.html#language-adapters---invertible-adapters) | -| `compacter` | `CompacterConfig()` | [Compacter](methods.html#compacter) | -| `compacter++` | `CompacterPlusPlusConfig()` | [Compacter](methods.html#compacter) | -| `prefix_tuning` | `PrefixTuningConfig()` | [Prefix Tuning](methods.html#prefix-tuning) | -| `prefix_tuning_flat` | `PrefixTuningConfig(flat=True)` | [Prefix Tuning](methods.html#prefix-tuning) | -| `lora` | `LoRAConfig()` | [LoRA](methods.html#lora) | -| `ia3` | `IA3Config()` | [IA³](methods.html#ia-3) | -| `mam` | `MAMConfig()` | [Mix-and-Match Adapters](method_combinations.html#mix-and-match-adapters) | -| `unipelt` | `UniPELTConfig()` | [UniPELT](method_combinations.html#unipelt) | -| `prompt_tuning` | `PromptTuningConfig()` | [Prompt Tuning](methods.html#prompt-tuning) - -## Configuration - -All supported adapter methods can be added, trained, saved and shared using the same set of model class functions (see [class documentation](adapters.ModelAdaptersMixin)). -Each method is specified and configured using a specific configuration class, all of which derive from the common [`AdapterConfig`](adapters.AdapterConfig) class. -E.g., adding one of the supported adapter methods to an existing model instance follows this scheme: -```python -model.add_adapter("name", config=) -``` - -Here, `` can either be: -- a configuration string, as described below -- an instance of a configuration class, as listed in the table above -- a path to a JSON file containing a configuration dictionary - -### Configuration strings - -Configuration strings are a concise way of defining a specific adapter method configuration. -They are especially useful when adapter configurations are passed from external sources such as the command-line, when using configuration classes is not an option. - -In general, a configuration string for a single method takes the form `[=, ...]`. -Here, `` refers to one of the identifiers listed in [the table above](#table-of-adapter-methods), e.g. `par_bn`. -In square brackets after the identifier, you can set specific configuration attributes from the respective configuration class, e.g. `par_bn[reduction_factor=2]`. -If all attributes remain at their default values, this can be omitted. - -Finally, it is also possible to specify a [method combination](method_combinations.md) as a configuration string by joining multiple configuration strings with `|`, e.g.: -```python -config = "prefix_tuning[bottleneck_size=800]|parallel" -``` - -is identical to the following `ConfigUnion`: - -```python -config = ConfigUnion( - PrefixTuningConfig(bottleneck_size=800), - ParBnConfig(), -) -``` diff --git a/adapters/docs/prediction_heads.md b/adapters/docs/prediction_heads.md deleted file mode 100644 index 33786385..00000000 --- a/adapters/docs/prediction_heads.md +++ /dev/null @@ -1,152 +0,0 @@ -# Prediction Heads - -This section gives an overview of how different prediction heads can be used together with adapter modules and how pre-trained adapters can be distributed side-by-side with matching prediction heads in AdapterHub. -We will take a look at the `AdapterModel` classes (e.g. `BertAdapterModel`) introduced by adapters, which provide **flexible** support for prediction heads, as well as models with **static** heads provided out-of-the-box by Hugging Face Transformers (e.g. `BertForSequenceClassification`). - -```{eval-rst} -.. tip:: - We recommend to use the `AdapterModel classes <#adaptermodel-classes>`_ whenever possible. - They have been created specifically for working with adapters and provide more flexibility. -``` - -## AdapterModel classes - -The AdapterModel classes provided by `adapters` allow a flexible configuration of prediction heads on top of a pre-trained language model. - -First, we load pre-trained model from the Hugging Face Hub via the [`AutoAdapterModel`](adapters.AutoAdapterModel) class: -```python -model = AutoAdapterModel.from_pretrained("bert-base-uncased") -``` - -By default, this model doesn't have any heads yet. We add a new one in the next step: -```python -model.add_classification_head("mrpc", num_labels=2) -``` -The line above adds a binary sequence classification head on top of our model. -Because this head is named, we could add multiple other heads with different names to the same model. -This is especially useful if used together with matching adapter modules. -To learn more about the different head types and the configuration options, please refer to the class references of the respective model classes, e.g. [`BertAdapterModel`](adapters.BertAdapterModel). - -Now, of course, we would like to train our classification head together with an adapter, so let's add one: -```python -model.add_adapter("mrpc", config="seq_bn") -model.set_active_adapters("mrpc") -``` - -Since we gave the task adapter the same name as our head, we can easily identify them as belonging together. -The call to `set_active_adapters()` in the second line tells our model to use the adapter - head configuration we specified by default in a forward pass. -At this point, we can start to [train our setup](training.md). - -```{eval-rst} -.. note:: - The ``set_active_adapters()`` will search for an adapter and a prediction head with the given name to be activated. - Alternatively, prediction heads can also be activated explicitly (i.e. without adapter modules). - These three options are possible (in order of priority when multiple are specified): - - 1. If ``head`` is passed to the forward call, the head with the given name is used. - 2. If the forward call is executed within an ``AdapterSetup`` context, the head configuration is read from the context. - 3. If the ``active_head`` property is set, the head configuration is read from there. -``` - -After training has completed, we can save our whole setup (adapter module _and_ prediction head), with a single call: -```python -model.save_adapter("/path/to/dir", "mrpc", with_head=True) -``` - -Now, you just have to [share your work with the world](./hub_contributing.md#add-your-pre-trained-adapter). -After you published the adapter together with its head in the Hub, anyone else can load both adapter and head by using the same model class. - -Alternatively, we can also save and load the prediction head separately from an adapter module: - -```python -# save -model.save_head("/path/to/dir", "mrpc") -# load -model.load_head("/path/to/dir") -``` - -Lastly, it's also possible to delete an added head again: - -```python -model.delete_head("mrpc") -``` - -## Model classes with static heads (Hugging Face Transformers) - -The `transformers` library provides strongly typed model classes with heads for various different tasks (e.g. `RobertaForSequenceClassification`, `AutoModelForMultipleChoice` ...). -If an adapter module is trained with one of these out-of-the-box classes, it is encouraged to also distribute the prediction head weights together with the adapter weights. -Therefore, we can also easily save the prediction head weights for these models together with an adapter: - -```python -model.save_adapter("/path/to/dir", "mrpc", with_head=True) -``` - -In the next step, we can provide both the adapter weights and the head weights to the Hub. -If someone else then downloads the pre-trained adapter, the resolving method will check if the prediction head matches the class of his model. -In case the classes match, the prediction head weights will be automatically loaded too. - -## Automatic conversion -`adapters` supports loading static heads, e.g., created with `AutoModelForSequenceClassification`, into model classes with flexible heads, e.g. `AutoAdapterModel`. - -For this, for a model created with `AutoModelForSequenceClassification` we first need to enable adapter support by calling the `init()` method. -```python -from adapters import init, AutoAdapterModel -from transformers import AutoModelForSequenceClassification -import os - -static_head_model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") -# Enable adapter support -init(static_head_model) -``` -Now we can add an adapter and save it together with the head as usual: -```python -static_head_model.add_adapter("test") - -temp_dir = os.path.join(os.getcwd(), "temp_dir") -static_head_model.save_adapter(temp_dir, "test", with_head=True) -``` -When now loading the adapter and head into a new AdapterModel, the conversion of weights happens automatically during the call of `load_adapter()`, so no additional steps are needed: - -```python -flex_head_model = AutoAdapterModel.from_pretrained("bert-base-uncased") -flex_head_model.load_adapter(temp_dir) - -assert "test" in flex_head_model.adapters_config -assert "test" in flex_head_model.heads -``` - -```{eval-rst} -.. note:: - The conversion in the opposite direction is not supported, i.e. you cannot load a head created with ``AutoAdapterModel`` into a model of type ``AutoModelForSequenceClassification``. -``` - -## Custom Heads -If none of the available prediction heads fit your requirements, you can define and add a custom head. - -First, we need to define the new head class. For that, the initialization and the forward pass need to be implemented. -The initialization of the head gets a reference to the model, the name of the head, and additionally defined kwargs. -You can use the following template as a guideline. -```python -class CustomHead(PredictionHead): - def __init__( - self, - model, - head_name, - **kwargs, - ): - # innitialization of the custom head - - def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): - # implementation of the forward pass -``` - - -Next, we can register the new custom head and give the new head type a name. This only notifies -the model that there is a new head type. Then, we can add an instance of the new head to the model by -calling `add_custom_head` with the name of the new head type, the name of the head instance we are creating, and -additional arguments required by the head. -```python -model.register_custom_head("my_custom_head", CustomHead) -model.add_custom_head(head_type="my_custom_head", head_name="custom_head", **kwargs) -``` -After adding the custom head you can treat it like any other build-in head type. diff --git a/adapters/docs/quickstart.md b/adapters/docs/quickstart.md deleted file mode 100644 index c1181f1d..00000000 --- a/adapters/docs/quickstart.md +++ /dev/null @@ -1,123 +0,0 @@ -# Quick Start - -## Introduction - -`adapters` adds adapter functionality to the PyTorch implementations of all Transformer models listed in the [Model Overview](https://docs.adapterhub.ml/model_overview.html). -For working with adapters, a couple of methods, e.g. for creation (`add_adapter()`), loading (`load_adapter()`), -storing (`save_adapter()`) and deletion (`delete_adapter()`) are added to the model classes. -In the following, we will briefly go through some examples to showcase these methods. - -```{eval-rst} -.. note:: - This document focuses on the adapter-related functionalities added by ``adapters``. - For a more general overview of the *transformers* library, visit - `the 'Usage' section in Hugging Face's documentation `_. -``` - -## Initialize Model with Adapters - -The `XAdapterModel` is the recommended model for training and inference of adapters: - -``` -from adapters import AutoAdapterModel - -model = AutoAdapterModel.from_pretrained(model_name) -```` - -This handles the initialization of the adapter-related functionality internally and provides you with the initialized model. The `XAdapterModel` also supports the dynamic adding, loading, and storing of heads for different tasks. - - -If you want to use adapters in Hugging Face models, the models need to be initialized with the adapters library. This initializes the functionality of adding, loading and storing of adapters within the `transformers` models. - -``` -import adapters - -adapters.init(model) -``` - - -## Using a Pre-Trained Adapter for Inference - -_We also have a Quickstart Colab notebook for adapter inference:_ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/02_Adapter_Inference.ipynb) - -The following example shows the usage of a basic pre-trained Transformer model with adapters. -Our goal here is to predict the sentiment of a given sentence. - -We use BERT in this example, so we first load a pre-trained `BertTokenizer` to encode the input sentence and a pre-trained -`bert-base-uncased` checkpoint from Hugging Face's Model Hub using the [`BertAdapterModel`](adapters.BertAdapterModel) class: - -```python -import os - -import torch -from transformers import BertTokenizer -from adapters import BertAdapterModel - -# Load pre-trained BERT tokenizer from Hugging Face -tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') - -# An input sentence -sentence = "It's also, clearly, great fun." - -# Tokenize the input sentence and create a PyTorch input tensor -input_data = tokenizer(sentence, return_tensors="pt") - -# Load pre-trained BERT model from Hugging Face Hub -# The `BertAdapterModel` class is specifically designed for working with adapters -# It can be used with different prediction heads -model = BertAdapterModel.from_pretrained('bert-base-uncased') -``` - -Having loaded the model, we now add a pre-trained task adapter that is useful to our task from AdapterHub. -In this case, for sentiment classification, we thus use [an adapter trained on the SST-2 dataset](https://adapterhub.ml/adapters/ukp/bert-base-uncased_sentiment_sst-2_pfeiffer/). -The task prediction head loaded together with the adapter gives us a class label for our sentence: - -```python -# Load pre-trained task adapter from Adapter Hub -# This method call will also load a pre-trained classification head for the adapter task -adapter_name = model.load_adapter("sentiment/sst-2@ukp", config='pfeiffer') - -# Activate the adapter we just loaded, so that it is used in every forward pass -model.set_active_adapters(adapter_name) - -# Predict output tensor -outputs = model(**input_data) - -# Retrieve the predicted class label -predicted = torch.argmax(outputs[0]).item() -assert predicted == 1 -``` - -To save our pre-trained model and adapters, we can easily store and reload them as follows: - -```python -# For the sake of this demonstration an example path for loading and storing is given below -example_path = os.path.join(os.getcwd(), "adapter-quickstart") - -# Save model -model.save_pretrained(example_path) -# Save adapter -model.save_adapter(example_path, adapter_name) - -# Load model, similar to Hugging Face's AutoModel class, -# you can also use AutoAdapterModel instead of BertAdapterModel -model = AutoAdapterModel.from_pretrained(example_path) -model.load_adapter(example_path) -``` - -Similar to how the weights of the full model are saved, the `save_adapter()` will create a file for saving the adapter weights and a file for saving the adapter configuration in the specified directory. - -Finally, if we have finished working with adapters, we can restore the base Transformer to its original form by deactivating and deleting the adapter: - -```python -# Deactivate all adapters -model.set_active_adapters(None) -# Delete the added adapter -model.delete_adapter(adapter_name) -``` - -## Adapter training - -_We also have a Quickstart Colab notebook for adapter training:_ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Adapter-Hub/adapters/blob/main/notebooks/01_Adapter_Training.ipynb) - -For more examples on training different adapter setups, refer to the section on [Adapter Training](training.md). diff --git a/adapters/docs/scripts/post_build.py b/adapters/docs/scripts/post_build.py deleted file mode 100644 index bc142427..00000000 --- a/adapters/docs/scripts/post_build.py +++ /dev/null @@ -1,16 +0,0 @@ -import os -import shutil -import sys - - -BUILD_DIR = sys.argv[1] - -for folder in os.listdir(BUILD_DIR): - path = os.path.join(BUILD_DIR, folder) - if folder == "main": - file_names = os.listdir(path) - for file_name in file_names: - shutil.move(os.path.join(path, file_name), BUILD_DIR) - os.rmdir(path) - else: - shutil.move(path, path.replace("adapters", "v")) diff --git a/adapters/docs/training.md b/adapters/docs/training.md deleted file mode 100644 index 649ace6e..00000000 --- a/adapters/docs/training.md +++ /dev/null @@ -1,217 +0,0 @@ -# Adapter Training - -This section describes some examples of training adapter methods for different scenarios. We focus on integrating adapter methods into existing training scripts for Transformer models. -All presented scripts are only slightly modified from the original [examples from Hugging Face Transformers](https://github.com/huggingface/transformers/tree/main/examples/pytorch#examples). -To run the scripts, make sure you have the latest version of the repository and have installed some additional requirements: - -``` -git clone https://github.com/adapter-hub/adapters -cd adapters -pip install . -pip install -r ./examples/pytorch//requirements.txt -``` - -## Train a Task Adapter - -Training a task adapter module on a dataset only requires minor modifications compared to training the entire model. -Suppose we have an existing script for training a Transformer model. -In the following, we will use Hugging Face's [run_glue.py](https://github.com/Adapter-Hub/adapters/blob/main/examples/pytorch/text-classification/run_glue.py) example script for training on the GLUE benchmark. -We go through all required changes step by step: - -### Step A - Parse `AdapterArguments` - -The [`AdapterArguments`](adapters.training.AdapterArguments) class integrated into adapters provides a set of command-line options useful for training adapters. -These include options such as `--train_adapter` for activating adapter training and `--load_adapter` for loading adapters from checkpoints. -Thus, the first step of integrating adapters is to add these arguments to the line where `HfArgumentParser` is instantiated: - -```python -parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) -# ... -model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() -``` - -### Step B - Switch model class (optional) - -In our example, we replace the built-in `AutoModelForSequenceClassification` class with the `AutoAdapterModel` class introduced by `adapters`. -Therefore, the model instantiation changed to: - -```python -model = AutoAdapterModel.from_pretrained( - model_args.model_name_or_path, - config=config, -) -model.add_classification_head(data_args.task_name, num_labels=num_labels) -``` - -Alternatively, you can also use the original `transformers` class and initialize the model for the usage of adapters by calling `adapters.init(model)`. -Learn more about the benefits of AdapterModel classes [here](prediction_heads.md) - -### Step C - Setup adapter methods - -```{eval-rst} -.. tip:: - In the following, we show how to set up adapters manually. In most cases, you can use the built-in ``setup_adapter_training()`` method to perform this job automatically. Just add a statement similar to this anywhere between model instantiation and training start in your script: ``setup_adapter_training(model, adapter_args, task_name)`` -``` - -Compared to fine-tuning the entire model, we have to make only one significant adaptation: adding an adapter setup and activating it. - -```python -# task adapter - only add if not existing -if task_name not in model.adapters_config: - # resolve the adapter config - adapter_config = AdapterConfig.load(adapter_args.adapter_config) - # add a new adapter - model.add_adapter(task_name, config=adapter_config) -# Enable adapter training -model.train_adapter(task_name) -``` - -```{eval-rst} -.. important:: - The most crucial step when training an adapter module is to freeze all weights in the model except for those of the - adapter. In the previous snippet, this is achieved by calling the ``train_adapter()`` method, which disables training - of all weights outside the task adapter. In case you want to unfreeze all model weights later on, you can use - ``freeze_model(False)``. -``` - -Besides this, we only have to make sure that the task adapter and prediction head are activated so that they are used in every forward pass. To specify the adapter modules to use, we can use the `model.set_active_adapters()` -method and pass the adapter setup. If you only use a single adapter, you can simply pass the name of the adapter. For more information -on complex setups, checkout the [Composition Blocks](https://docs.adapterhub.ml/adapter_composition.html). - -```python -model.set_active_adapters(task_name) -``` - -### Step D - Switch to `AdapterTrainer` class - -Finally, we exchange the `Trainer` class built into Transformers for the [`AdapterTrainer`](transformers.adapters.AdapterTrainer) class that is optimized for training adapter methods. -See [below for more information](#adaptertrainer). - -Technically, this change is not required as no changes to the training loop are required for training adapters. -However, `AdapterTrainer` e.g., provides better support for checkpointing and reloading adapter weights. - -### Step E - Start training - -The rest of the training procedure does not require any further changes in code. - -You can find the full version of the modified training script for GLUE at [run_glue.py](https://github.com/Adapter-Hub/adapters/blob/master/examples/pytorch/text-classification/run_glue.py) in the `examples` folder of our repository. -We also adapted [various other example scripts](https://github.com/Adapter-Hub/adapters/tree/master/examples/pytorch) (e.g., `run_glue.py`, `run_multiple_choice.py`, `run_squad.py`, ...) to support adapter training. - -To start adapter training on a GLUE task, you can run something similar to: - -``` -export TASK_NAME=mrpc - -python run_glue.py \ - --model_name_or_path bert-base-uncased \ - --task_name $TASK_NAME \ - --do_train \ - --do_eval \ - --max_seq_length 128 \ - --per_device_train_batch_size 32 \ - --learning_rate 1e-4 \ - --num_train_epochs 10.0 \ - --output_dir /tmp/$TASK_NAME \ - --overwrite_output_dir \ - --train_adapter \ - --adapter_config seq_bn -``` - -The important flag here is `--train_adapter`, which switches from fine-tuning the entire model to training an adapter module for the given GLUE task. - -```{eval-rst} -.. tip:: - Adapter weights are usually initialized randomly, which is why we require a higher learning rate. We have found that a default adapter learning rate of ``1e-4`` works well for most settings. -``` - -```{eval-rst} -.. tip:: - Depending on your data set size, you might also need to train longer than usual. To avoid overfitting, you can evaluate the adapters after each epoch on the development set and only save the best model. -``` - -## Train a Language Adapter - -Training a language adapter is equally straightforward as training a task adapter. Similarly to the steps for task adapters -described above, we add a language adapter module to an existing model training script. Here, we modified Hugging Face's [run_mlm.py](https://github.com/Adapter-Hub/adapters/blob/main/examples/pytorch/language-modeling/run_mlm.py) script for masked language modeling with BERT-based models. - -Training a language adapter on BERT using this script may look like the following: - -```bash -export TRAIN_FILE=/path/to/dataset/train -export VALIDATION_FILE=/path/to/dataset/validation - -python run_mlm.py \ - --model_name_or_path bert-base-uncased \ - --train_file $TRAIN_FILE \ - --validation_file $VALIDATION_FILE \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 10.0 \ - --output_dir /tmp/test-mlm \ - --train_adapter \ - --adapter_config "seq_bn_inv" -``` - -## Train AdapterFusion - -We provide an example for training _AdapterFusion_ ([Pfeiffer et al., 2020](https://arxiv.org/pdf/2005.00247)) on the GLUE dataset: [run_fusion_glue.py](https://github.com/Adapter-Hub/adapters/blob/main/examples/pytorch/adapterfusion/run_fusion_glue.py). -You can adapt this script to train AdapterFusion with different pre-trained adapters on your own dataset. - -```{eval-rst} -.. important:: - AdapterFusion on a target task is trained in a second training stage after independently training adapters on individual tasks. - When setting up a fusion architecture on your model, make sure to load the pre-trained adapter modules to be fused using ``model.load_adapter()`` before adding a fusion layer. - For more on AdapterFusion, also refer to `Pfeiffer et al., 2020 `_. -``` - -To start fusion training on SST-2 as the target task, you can run something like the following: - -``` -export GLUE_DIR=/path/to/glue -export TASK_NAME=SST-2 - -python run_fusion_glue.py \ - --model_name_or_path bert-base-uncased \ - --task_name $TASK_NAME \ - --do_train \ - --do_eval \ - --data_dir $GLUE_DIR/$TASK_NAME \ - --max_seq_length 128 \ - --per_device_train_batch_size 32 \ - --learning_rate 5e-5 \ - --num_train_epochs 10.0 \ - --output_dir /tmp/$TASK_NAME \ - --overwrite_output_dir -``` - - -## AdapterTrainer - -Similar to the `Trainer` class provided by Hugging Face, adapters provides an `AdapterTrainer` class. This class is only -intended for training adapters. The `Trainer` class should still be used to fully fine-tune models. To train adapters with the `AdapterTrainer` -class, simply initialize it the same way you would initialize the `Trainer` class, e.g.: - -```python -model.add_adapter(task_name) -model.train_adapter(task_name) - -trainings_args = TrainingsArguments( - learning_rate=1e-4, - num_train_epochs=6, -) - -trainer = AdapterTrainer( - model=model, - args=training_args, - train_dataset=train_dataset, - eval_dataset=eval_dataset, - tokenizer=tokenizer, - data_collator=data_collator, - ) -``` -```{eval-rst} -.. tip:: - When you migrate from the previous versions, which use the Trainer class for adapter training and fully fine-tuning, note that the - specialized AdapterTrainer class does not have the parameters `do_save_full_model`, `do_save_adapters` and `do_save_adapter_fusion`. -``` diff --git a/adapters/docs/transitioning.md b/adapters/docs/transitioning.md deleted file mode 100644 index f81ac94d..00000000 --- a/adapters/docs/transitioning.md +++ /dev/null @@ -1,77 +0,0 @@ -# Transitioning from `adapter_transformers` - - -The new `adapters` library is the successor to the `adapter-transformers` library. It differs essentially in that `adapters` is now a stand-alone package, i.e., the package is disentangled from the `transformers` package from Hugging Face and is no longer a drop-in replacement. - -This results in some breaking changes. To transition your code from `adapter-transformers` to `adapters` you need to consider the following changes: - -## Package and Namespace - To use the library you need to install -`transformers` and `adapters` in the same environment (unlike `adapter-transformers` which contained `transformers` and could not be installed in the same environment). - -Run the following to install both (installing `adapters` will automatically trigger the installation of `transformers` if it is not yet installed in th environment): - -``` -pip install adapters -``` - -This also changes the namespace to `adapters`. For all imports of adapter classes change the import from `transformers` to `adapters`. -This mainly affects the following classes: -- AdapterModel classes, e.g. `AutoAdapterModel`(see [AdapterModels](https://docs.adapterhub.ml/model_overview.html) ) -- Adapter configurations e.g. `PrefixTuningConfig` (see [Configurations](https://docs.adapterhub.ml/overview.html) ) -- Adapter composition blocks, e.g. `Stack`(see [Composition Blocks](https://docs.adapterhub.ml/adapter_composition.html) ) -- The `AdapterTrainer` class - -## Model Initialisation - -The Hugging Face model classes, such as `BertModel`, cannot be used directly with adapters. They must first be initialised for adding adapters: - -``` -from transformers import AutoModel -import adapters - -model = AutoModel.from_pretrained("bert-base-uncased") -adapters.init(model) # prepare model for use with adapters -``` - -The necessary change is the call of the `adapters.init()` method. -Note that no additional initialisation is required to use the AdapterModel classes such as the `BertAdapterModel`'. These classes are provided by the `adapters` library and are already prepared for using adapters in training and inference. - -## Bottleneck Configuration Names - -The `adapters` library supports the configuration of adapters using [config strings](https://docs.adapterhub.ml/overview.html#configuration-strings). Compared to the `adapter-transformers` library, we have changed some of the strings to make them more consistent and intuitive: -- `houlsby` -> `double_seq_bn` -- `pfeiffer` -> `seq_bn` -- `parallel`-> `par_seq_bn` -- `houlsby+inv` -> `double_seq_bn_inv` -- `pfeiffer+inv`-> `seq_bn_inv` - - -For a complete list of config strings and classes see [here](https://docs.adapterhub.ml/overview.html). We strongly recommend using the new config strings, but we will continue to support the old config strings for the time being to make the transition easier. -Note that with the config strings the coresponding adapter config classes have changed, e.g. `PfeifferConfig` -> `SeqBnConfig`. - -Another consequence of this that the `AdapterConfig` class is now not only for the bottleneck adapters anymore, but the base class of all the configurations (previously `AdapterConfigBase`). Hence the function this class serves has changed. However, you can still load adapter configs with: -``` -adapter_config = AdapterConfig.load("lora") -``` - - -## Features that are not supported by `adapters` - -Compared to `adapter-transformers`, there are a few features that are no longer supported by the `adapters` library: -- Using `transformers` pipelines with adapters. -- Using invertible adapters in the Hugging Face model classes. To use invertible adapters you must use the AdapterModel class. -- Loading model and adapter checkpoints saved with `save_pretrained` using Hugging Face classes. This is only supported by the AdapterModel classes. - -## What has remained the same - -The functionality for adding, activating, and training adapters has __not__ changed, except for the renaming of some adapter configs. You still add and activate adapters as follows: -``` -# add adapter to the model -model.add_adapter("adapter_name", config="lora") -# activate adapter -model.set_active_adapters("adapter_name") -# freeze model weights and activate adapter -model.train_adapter("adapter_name") -``` - diff --git a/adapters/examples/pytorch/README.md b/adapters/examples/pytorch/README.md deleted file mode 100644 index 2d23a390..00000000 --- a/adapters/examples/pytorch/README.md +++ /dev/null @@ -1,432 +0,0 @@ - - - -# Examples - -This folder contains example scripts that show how adapters can be used for various tasks. -The examples are partly written by us and partly a modified version of [the example scripts provided by HuggingFace for the Transformers library](https://github.com/huggingface/transformers/tree/main/examples). - -All of the scripts here have been modified to support training adapters instead of full model fine-tuning. - -Before getting started with an example script, make sure to have everything set up. -It is best to install the latest `adapters` version from the repository: -``` -git clone https://github.com/adapter-hub/adapters -cd transformers -pip install . -``` - -Now, switch to an examples folder and run: -``` -pip install -r requirements.txt -``` - -## Adapter Specific Scripts -| Task | Description | -| --- | --- | -| [**`adapterdrop`**](https://github.com/adapter-hub/adapters/tree/master/examples/pytorch/adapterdrop) | Demonstrating how to use AdapterDrop ([ Rücklé et al., 2021](https://arxiv.org/pdf/2010.11918.pdf)) -| [**`adapterfusion`**](https://github.com/adapter-hub/adapters/tree/master/examples/pytorch/adapterfusion) | Training AdapterFusion ([Pfeiffer et al., 2020](https://arxiv.org/pdf/2005.00247.pdf)) on the GLUE dataset - -## Modified Hugging Face Transformers Example Scripts - -Modified scripts of the Hugging Face Transformers library that support adapters: - -| Task | Description | -| --- | --- | -| [**`language-modeling`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/language-modeling) | Causal & Masked language modeling -| [**`multiple-choice`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/multiple-choice) | SWAG Dataset -| [**`question-answering`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/question-answering) | SQuAD-style QA -| [**`summarization`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/seq2seq) | Summarization, e.g. on CNN/Dailymail or XSum -| [**`text-classification`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/text-classification) | GLUE benchmark -| [**`text-generation`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/text-generation) | Text generation, e.g. using GPT-2 -| [**`token-classification`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/token-classification) | NER, e.g. on CoNLL2003 -| [**`translation`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/seq2seq) | Machine translation, e.g. on WMT tasks -| [**`dependency-parsing`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/dependency-parsing) | Dependency parsing on Universal Dependencies -| [**`image-classification`**](https://github.com/adapter-hub/adapters/tree/main/examples/pytorch/image-classification) | Image classification, e.g. on CIFAR-10/-100 - -All scripts listed above which can be used for training provide a new `--train_adapter` option that switches between full fine-tuning and adapter training. -Loading pre-trained adapters can be done via `--load_adapter`. -You can find all additional, adapter-specific, command-line options [here](https://github.com/Adapter-Hub/adapters/blob/main/src/transformers/adapters/training.py). - -Fore more information and examples on training adapters, please refer to these locations: -- The section on adapter training [in the AdapterHub documentation](https://docs.adapterhub.ml/training). -- Our [collection of Colab notebook tutorials](https://github.com/Adapter-Hub/adapters/tree/main/notebooks). - ---- - -**NOTE: Below, you find the original, unmodified, documentation by Hugging Face. Check out [their examples folder](https://github.com/huggingface/transformers/tree/main/examples) for more example scripts.** - ---- - -This folder contains actively maintained examples of use of 🤗 Transformers using the PyTorch backend, organized by ML task. - -## The Big Table of Tasks - -Here is the list of all our examples: -- with information on whether they are **built on top of `Trainer`** (if not, they still work, they might - just lack some features), -- whether or not they have a version using the [🤗 Accelerate](https://github.com/huggingface/accelerate) library. -- whether or not they leverage the [🤗 Datasets](https://github.com/huggingface/datasets) library. -- links to **Colab notebooks** to walk through the scripts and run them easily, - - -| Task | Example datasets | Trainer support | 🤗 Accelerate | 🤗 Datasets | Colab -|---|---|:---:|:---:|:---:|:---:| -| [**`language-modeling`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/language-modeling) | [WikiText-2](https://huggingface.co/datasets/wikitext) | ✅ | ✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/language_modeling.ipynb) -| [**`multiple-choice`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/multiple-choice) | [SWAG](https://huggingface.co/datasets/swag) | ✅ | ✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/multiple_choice.ipynb) -| [**`question-answering`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/question-answering) | [SQuAD](https://huggingface.co/datasets/squad) | ✅ | ✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/question_answering.ipynb) -| [**`summarization`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/summarization) | [XSum](https://huggingface.co/datasets/xsum) | ✅ | ✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/summarization.ipynb) -| [**`text-classification`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/text-classification) | [GLUE](https://huggingface.co/datasets/glue) | ✅ | ✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/text_classification.ipynb) -| [**`text-generation`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/text-generation) | - | n/a | - | - | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/blog/blob/main/notebooks/02_how_to_generate.ipynb) -| [**`token-classification`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/token-classification) | [CoNLL NER](https://huggingface.co/datasets/conll2003) | ✅ |✅ | ✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/token_classification.ipynb) -| [**`translation`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/translation) | [WMT](https://huggingface.co/datasets/wmt17) | ✅ | ✅ |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/translation.ipynb) -| [**`speech-recognition`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/speech-recognition) | [TIMIT](https://huggingface.co/datasets/timit_asr) | ✅ | - |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/speech_recognition.ipynb) -| [**`multi-lingual speech-recognition`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/speech-recognition) | [Common Voice](https://huggingface.co/datasets/common_voice) | ✅ | - |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/multi_lingual_speech_recognition.ipynb) -| [**`audio-classification`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/audio-classification) | [SUPERB KS](https://huggingface.co/datasets/superb) | ✅ | - |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/audio_classification.ipynb) -| [**`image-pretraining`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/image-pretraining) | [ImageNet-1k](https://huggingface.co/datasets/imagenet-1k) | ✅ | - |✅ | / -| [**`image-classification`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/image-classification) | [CIFAR-10](https://huggingface.co/datasets/cifar10) | ✅ | ✅ |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/image_classification.ipynb) -| [**`semantic-segmentation`**](https://github.com/huggingface/transformers/tree/main/examples/pytorch/semantic-segmentation) | [SCENE_PARSE_150](https://huggingface.co/datasets/scene_parse_150) | ✅ | ✅ |✅ | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/semantic_segmentation.ipynb) - - -## Running quick tests - -Most examples are equipped with a mechanism to truncate the number of dataset samples to the desired length. This is useful for debugging purposes, for example to quickly check that all stages of the programs can complete, before running the same setup on the full dataset which may take hours to complete. - -For example here is how to truncate all three splits to just 50 samples each: -``` -examples/pytorch/token-classification/run_ner.py \ ---max_train_samples 50 \ ---max_eval_samples 50 \ ---max_predict_samples 50 \ -[...] -``` - -Most example scripts should have the first two command line arguments and some have the third one. You can quickly check if a given example supports any of these by passing a `-h` option, e.g.: -``` -examples/pytorch/token-classification/run_ner.py -h -``` - -## Resuming training - -You can resume training from a previous checkpoint like this: - -1. Pass `--output_dir previous_output_dir` without `--overwrite_output_dir` to resume training from the latest checkpoint in `output_dir` (what you would use if the training was interrupted, for instance). -2. Pass `--resume_from_checkpoint path_to_a_specific_checkpoint` to resume training from that checkpoint folder. - -Should you want to turn an example into a notebook where you'd no longer have access to the command -line, 🤗 Trainer supports resuming from a checkpoint via `trainer.train(resume_from_checkpoint)`. - -1. If `resume_from_checkpoint` is `True` it will look for the last checkpoint in the value of `output_dir` passed via `TrainingArguments`. -2. If `resume_from_checkpoint` is a path to a specific checkpoint it will use that saved checkpoint folder to resume the training from. - - -### Upload the trained/fine-tuned model to the Hub - -All the example scripts support automatic upload of your final model to the [Model Hub](https://huggingface.co/models) by adding a `--push_to_hub` argument. It will then create a repository with your username slash the name of the folder you are using as `output_dir`. For instance, `"sgugger/test-mrpc"` if your username is `sgugger` and you are working in the folder `~/tmp/test-mrpc`. - -To specify a given repository name, use the `--hub_model_id` argument. You will need to specify the whole repository name (including your username), for instance `--hub_model_id sgugger/finetuned-bert-mrpc`. To upload to an organization you are a member of, just use the name of that organization instead of your username: `--hub_model_id huggingface/finetuned-bert-mrpc`. - -A few notes on this integration: - -- you will need to be logged in to the Hugging Face website locally for it to work, the easiest way to achieve this is to run `huggingface-cli login` and then type your username and password when prompted. You can also pass along your authentication token with the `--hub_token` argument. -- the `output_dir` you pick will either need to be a new folder or a local clone of the distant repository you are using. - -## Distributed training and mixed precision - -All the PyTorch scripts mentioned above work out of the box with distributed training and mixed precision, thanks to -the [Trainer API](https://huggingface.co/transformers/main_classes/trainer.html). To launch one of them on _n_ GPUs, -use the following command: - -```bash -python -m torch.distributed.launch \ - --nproc_per_node number_of_gpu_you_have path_to_script.py \ - --all_arguments_of_the_script -``` - -As an example, here is how you would fine-tune the BERT large model (with whole word masking) on the text -classification MNLI task using the `run_glue` script, with 8 GPUs: - -```bash -python -m torch.distributed.launch \ - --nproc_per_node 8 pytorch/text-classification/run_glue.py \ - --model_name_or_path bert-large-uncased-whole-word-masking \ - --task_name mnli \ - --do_train \ - --do_eval \ - --max_seq_length 128 \ - --per_device_train_batch_size 8 \ - --learning_rate 2e-5 \ - --num_train_epochs 3.0 \ - --output_dir /tmp/mnli_output/ -``` - -If you have a GPU with mixed precision capabilities (architecture Pascal or more recent), you can use mixed precision -training with PyTorch 1.6.0 or latest, or by installing the [Apex](https://github.com/NVIDIA/apex) library for previous -versions. Just add the flag `--fp16` to your command launching one of the scripts mentioned above! - -Using mixed precision training usually results in 2x-speedup for training with the same final results (as shown in -[this table](https://github.com/huggingface/transformers/tree/main/examples/text-classification#mixed-precision-training) -for text classification). - -## Running on TPUs - -When using Tensorflow, TPUs are supported out of the box as a `tf.distribute.Strategy`. - -When using PyTorch, we support TPUs thanks to `pytorch/xla`. For more context and information on how to setup your TPU environment refer to Google's documentation and to the -very detailed [pytorch/xla README](https://github.com/pytorch/xla/blob/master/README.md). - -In this repo, we provide a very simple launcher script named -[xla_spawn.py](https://github.com/huggingface/transformers/tree/main/examples/pytorch/xla_spawn.py) that lets you run our -example scripts on multiple TPU cores without any boilerplate. Just pass a `--num_cores` flag to this script, then your -regular training script with its arguments (this is similar to the `torch.distributed.launch` helper for -`torch.distributed`): - -```bash -python xla_spawn.py --num_cores num_tpu_you_have \ - path_to_script.py \ - --all_arguments_of_the_script -``` - -As an example, here is how you would fine-tune the BERT large model (with whole word masking) on the text -classification MNLI task using the `run_glue` script, with 8 TPUs (from this folder): - -```bash -python xla_spawn.py --num_cores 8 \ - text-classification/run_glue.py \ - --model_name_or_path bert-large-uncased-whole-word-masking \ - --task_name mnli \ - --do_train \ - --do_eval \ - --max_seq_length 128 \ - --per_device_train_batch_size 8 \ - --learning_rate 2e-5 \ - --num_train_epochs 3.0 \ - --output_dir /tmp/mnli_output/ -``` - -## Using Accelerate - -Most PyTorch example scripts have a version using the [🤗 Accelerate](https://github.com/huggingface/accelerate) library -that exposes the training loop so it's easy for you to customize or tweak them to your needs. They all require you to -install `accelerate` with the latest development version - -```bash -pip install git+https://github.com/huggingface/accelerate -``` - -Then you can easily launch any of the scripts by running - -```bash -accelerate config -``` - -and reply to the questions asked. Then - -```bash -accelerate test -``` - -that will check everything is ready for training. Finally, you can launch training with - -```bash -accelerate launch path_to_script.py --args_to_script -``` - -## Logging & Experiment tracking - -You can easily log and monitor your runs code. The following are currently supported: - -* [TensorBoard](https://www.tensorflow.org/tensorboard) -* [Weights & Biases](https://docs.wandb.ai/integrations/huggingface) -* [Comet ML](https://www.comet.ml/docs/python-sdk/huggingface/) -* [Neptune](https://docs.neptune.ai/integrations-and-supported-tools/model-training/hugging-face) -* [ClearML](https://clear.ml/docs/latest/docs/getting_started/ds/ds_first_steps) - -### Weights & Biases - -To use Weights & Biases, install the wandb package with: - -```bash -pip install wandb -``` - -Then log in the command line: - -```bash -wandb login -``` - -If you are in Jupyter or Colab, you should login with: - -```python -import wandb -wandb.login() -``` - -To enable logging to W&B, include `"wandb"` in the `report_to` of your `TrainingArguments` or script. Or just pass along `--report_to all` if you have `wandb` installed. - -Whenever you use `Trainer` or `TFTrainer` classes, your losses, evaluation metrics, model topology and gradients (for `Trainer` only) will automatically be logged. - -Advanced configuration is possible by setting environment variables: - -| Environment Variable | Value | -|---|---| -| WANDB_LOG_MODEL | Log the model as artifact (log the model as artifact at the end of training) (`false` by default) | -| WANDB_WATCH | one of `gradients` (default) to log histograms of gradients, `all` to log histograms of both gradients and parameters, or `false` for no histogram logging | -| WANDB_PROJECT | Organize runs by project | - -Set run names with `run_name` argument present in scripts or as part of `TrainingArguments`. - -Additional configuration options are available through generic [wandb environment variables](https://docs.wandb.com/library/environment-variables). - -Refer to related [documentation & examples](https://docs.wandb.ai/integrations/huggingface). - -### Comet.ml - -To use `comet_ml`, install the Python package with: - -```bash -pip install comet_ml -``` - -or if in a Conda environment: - -```bash -conda install -c comet_ml -c anaconda -c conda-forge comet_ml -``` - -### Neptune - -First, install the Neptune client library. You can do it with either `pip` or `conda`: - -`pip`: - -```bash -pip install neptune-client -``` - -`conda`: - -```bash -conda install -c conda-forge neptune-client -``` - -Next, in your model training script, import `NeptuneCallback`: - -```python -from transformers.integrations import NeptuneCallback -``` - -To enable Neptune logging, in your `TrainingArguments`, set the `report_to` argument to `"neptune"`: - -```python -training_args = TrainingArguments( - "quick-training-distilbert-mrpc", - evaluation_strategy="steps", - eval_steps = 20, - report_to = "neptune", -) - -trainer = Trainer( - model, - training_args, - ... -) -``` - -Alternatively, for more logging options, create a Neptune callback: - -```python -neptune_callback = NeptuneCallback() -``` - -To add more detail to the tracked run, you can supply optional arguments to `NeptuneCallback`. - -Some examples: - -```python -neptune_callback = NeptuneCallback( - name = "DistilBERT", - description = "DistilBERT fine-tuned on GLUE/MRPC", - tags = ["args-callback", "fine-tune", "MRPC"], # tags help you manage runs in Neptune - base_namespace="callback", # the default is "finetuning" - log_checkpoints = "best", # other options are "last", "same", and None - capture_hardware_metrics = False, # additional keyword arguments for a Neptune run -) -``` - -Pass the callback to the Trainer: - -```python -training_args = TrainingArguments(..., report_to = None) -trainer = Trainer( - model, - training_args, - ... - callbacks=[neptune_callback], -) -``` - -Now, when you start the training with `trainer.train()`, your metadata will be logged in Neptune. - -**Note:** Although you can pass your **Neptune API token** and **project name** as arguments when creating the callback, the recommended way is to save them as environment variables: - -| Environment variable | Value | -| :------------------- | :--------------------------------------------------- | -| `NEPTUNE_API_TOKEN` | Your Neptune API token. To find and copy it, click your Neptune avatar and select **Get your API token**. | -| `NEPTUNE_PROJECT` | The full name of your Neptune project (`workspace-name/project-name`). To find and copy it, head to **project settings** → **Properties**. | - -For detailed instructions and examples, see the [Neptune docs](https://docs.neptune.ai/integrations-and-supported-tools/model-training/hugging-face). - -### ClearML - -To use ClearML, install the clearml package with: - -```bash -pip install clearml -``` - -Then [create new credentials]() from the ClearML Server. You can get a free hosted server [here]() or [self-host your own]()! -After creating your new credentials, you can either copy the local snippet which you can paste after running: - -```bash -clearml-init -``` - -Or you can copy the jupyter snippet if you are in Jupyter or Colab: - -```python -%env CLEARML_WEB_HOST=https://app.clear.ml -%env CLEARML_API_HOST=https://api.clear.ml -%env CLEARML_FILES_HOST=https://files.clear.ml -%env CLEARML_API_ACCESS_KEY=*** -%env CLEARML_API_SECRET_KEY=*** -``` - - -To enable logging to ClearML, include `"clearml"` in the `report_to` of your `TrainingArguments` or script. Or just pass along `--report_to all` if you have `clearml` already installed. - -Advanced configuration is possible by setting environment variables: - -| Environment Variable | Value | -|---|---| -| CLEARML_PROJECT | Name of the project in ClearML. (default: `"HuggingFace Transformers"`) | -| CLEARML_TASK | Name of the task in ClearML. (default: `"Trainer"`) | - -Additional configuration options are available through generic [clearml environment variables](https://clear.ml/docs/latest/docs/configs/env_vars). \ No newline at end of file diff --git a/adapters/examples/pytorch/_tests_requirements.txt b/adapters/examples/pytorch/_tests_requirements.txt deleted file mode 100644 index 979890f4..00000000 --- a/adapters/examples/pytorch/_tests_requirements.txt +++ /dev/null @@ -1,25 +0,0 @@ -tensorboard -scikit-learn -seqeval -psutil -sacrebleu >= 1.4.12 -git+https://github.com/huggingface/accelerate@main#egg=accelerate -rouge-score -tensorflow_datasets -matplotlib -git-python==1.0.3 -faiss-cpu -streamlit -elasticsearch -nltk -pandas -datasets >= 1.13.3 -fire -pytest -conllu -sentencepiece != 0.1.92 -protobuf -torchvision -jiwer -librosa -evaluate >= 0.2.0 diff --git a/adapters/examples/pytorch/adapterdrop/drop_at_inference.py b/adapters/examples/pytorch/adapterdrop/drop_at_inference.py deleted file mode 100644 index 3f4fd2ec..00000000 --- a/adapters/examples/pytorch/adapterdrop/drop_at_inference.py +++ /dev/null @@ -1,28 +0,0 @@ -# TODO: Replace this with a proper colab notebook -import torch - -import adapters -from transformers import AutoModelForSequenceClassification, AutoTokenizer - - -if __name__ == "__main__": - """A temporary example to highlight changes implemented for AdapterDrop at inference""" - model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") - # Convert the model into an adapter model - adapters.init(model) - model.load_adapter("sentiment/sst-2@ukp") - - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - tokens = tokenizer.tokenize("AdapterHub is awesome!") - input_tensor = torch.tensor([tokenizer.convert_tokens_to_ids(tokens)]) - - model.set_active_adapters("sst-2") - outputs_nodrop = model(input_tensor) - - model.set_active_adapters("sst-2", skip_layers=[0, 1]) - outputs_adapterdrop = model(input_tensor) - - # different probs - assert not torch.equal(outputs_nodrop[0], outputs_adapterdrop[0]) - # but they should still result in the same prediction - assert torch.equal(torch.argmax(outputs_nodrop[0]), torch.argmax(outputs_adapterdrop[0])) diff --git a/adapters/examples/pytorch/adapterfusion/README.md b/adapters/examples/pytorch/adapterfusion/README.md deleted file mode 100644 index 6aa0563f..00000000 --- a/adapters/examples/pytorch/adapterfusion/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# AdapterFusion examples - -More information, including an example of how to run the script, can be found here: https://docs.adapterhub.ml/training.html#train-adapterfusion. diff --git a/adapters/examples/pytorch/adapterfusion/run_fusion_glue.py b/adapters/examples/pytorch/adapterfusion/run_fusion_glue.py deleted file mode 100644 index d02aa811..00000000 --- a/adapters/examples/pytorch/adapterfusion/run_fusion_glue.py +++ /dev/null @@ -1,282 +0,0 @@ -# coding=utf-8 -# Copyright 2018 The Google AI Language Team Authors and The HuggingFace Inc. team. -# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" Finetuning the library models for sequence classification on -GLUE (Bert, XLM, XLNet, RoBERTa, Albert, XLM-RoBERTa).""" - - -import dataclasses -import logging -import os -import sys -from dataclasses import dataclass, field -from typing import Dict, Optional - -import numpy as np - -import adapters -from adapters import AdapterArguments, AdapterTrainer -from transformers import AutoConfig, AutoModelForSequenceClassification, AutoTokenizer, EvalPrediction, GlueDataset -from transformers import GlueDataTrainingArguments as DataTrainingArguments -from transformers import ( - HfArgumentParser, - TrainingArguments, - glue_compute_metrics, - glue_output_modes, - glue_tasks_num_labels, - set_seed, -) - - -logger = logging.getLogger(__name__) - - -@dataclass -class ModelArguments: - """ - Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. - """ - - model_name_or_path: str = field( - metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} - ) - config_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} - ) - tokenizer_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} - ) - cache_dir: Optional[str] = field( - default=None, metadata={"help": "Where do you want to store the pretrained models downloaded from s3"} - ) - - -def main(): - # See all possible arguments in src/transformers/training_args.py - # or by passing the --help flag to this script. - # We now keep distinct sets of args, for a cleaner separation of concerns. - - parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) - - if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): - # If we pass only one argument to the script and it's the path to a json file, - # let's parse it to get our arguments. - model_args, data_args, training_args, adapter_args = parser.parse_json_file( - json_file=os.path.abspath(sys.argv[1]) - ) - else: - model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() - - if ( - os.path.exists(training_args.output_dir) - and os.listdir(training_args.output_dir) - and training_args.do_train - and not training_args.overwrite_output_dir - ): - raise ValueError( - f"Output directory ({training_args.output_dir}) already exists and is not empty." - " Use --overwrite_output_dir to overcome." - ) - - # Setup logging - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - level=logging.INFO if training_args.local_rank in [-1, 0] else logging.WARN, - ) - logger.warning( - "Process rank: %s, device: %s, n_gpu: %s, distributed training: %s, 16-bits training: %s", - training_args.local_rank, - training_args.device, - training_args.n_gpu, - bool(training_args.local_rank != -1), - training_args.fp16, - ) - logger.info("Training/evaluation parameters %s", training_args) - - # Set seed - set_seed(training_args.seed) - - try: - num_labels = glue_tasks_num_labels[data_args.task_name] - output_mode = glue_output_modes[data_args.task_name] - except KeyError: - raise ValueError("Task not found: %s" % (data_args.task_name)) - - # Load pretrained model and tokenizer - # - # Distributed training: - # The .from_pretrained methods guarantee that only one local process can concurrently - # download model & vocab. - - config = AutoConfig.from_pretrained( - model_args.config_name if model_args.config_name else model_args.model_name_or_path, - num_labels=num_labels, - finetuning_task=data_args.task_name, - cache_dir=model_args.cache_dir, - ) - tokenizer = AutoTokenizer.from_pretrained( - model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - ) - model = AutoModelForSequenceClassification.from_pretrained( - model_args.model_name_or_path, - from_tf=bool(".ckpt" in model_args.model_name_or_path), - config=config, - cache_dir=model_args.cache_dir, - ) - - # Convert the model into an adapter model - adapters.init(model) - - # ~~~~~ Here comes the interesting part of setting up AdapterFusion training ~~~~~ - - from adapters.configuration import SeqBnConfig - - # First, load the pre-trained adapters we want to fuse from Hub - model.load_adapter("sentiment/sst-2@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("nli/multinli@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("nli/rte@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("sts/mrpc@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("sts/qqp@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("comsense/cosmosqa@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("comsense/csqa@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("comsense/hellaswag@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("comsense/siqa@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("comsense/winogrande@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("nli/cb@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("nli/sick@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("nli/scitail@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("qa/boolq@ukp", config=SeqBnConfig(), with_head=False) - model.load_adapter("sentiment/imdb@ukp", config=SeqBnConfig(), with_head=False) - - adapter_setup = [ - [ - "sst-2", - "mnli", - "rte", - "mrpc", - "qqp", - "cosmosqa", - "csqa", - "hellaswag", - "socialiqa", - "winogrande", - "cb", - "sick", - "scitail", - "boolq", - "imdb", - ] - ] - - # Add a fusion layer and tell the model to train fusion - model.add_adapter_fusion(adapter_setup[0], "dynamic") - model.train_adapter_fusion(adapter_setup) - - # ~~~~~ Rest is again same as in standard training setup ~~~~~ - - # Get datasets - train_dataset = GlueDataset(data_args, tokenizer=tokenizer) if training_args.do_train else None - eval_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="dev") if training_args.do_eval else None - test_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="test") if training_args.do_predict else None - - def compute_metrics(p: EvalPrediction) -> Dict: - if output_mode == "classification": - preds = np.argmax(p.predictions, axis=1) - elif output_mode == "regression": - preds = np.squeeze(p.predictions) - return glue_compute_metrics(data_args.task_name, preds, p.label_ids) - - trainer = AdapterTrainer( - model=model, - args=training_args, - train_dataset=train_dataset, - eval_dataset=eval_dataset, - compute_metrics=compute_metrics, - ) - - # Training - if training_args.do_train: - trainer.train( - model_path=model_args.model_name_or_path if os.path.isdir(model_args.model_name_or_path) else None - ) - trainer.save_model() - # For convenience, we also re-save the tokenizer to the same directory, - # so that you can share your model easily on huggingface.co/models =) - if trainer.is_world_process_zero(): - tokenizer.save_pretrained(training_args.output_dir) - - # Evaluation - eval_results = {} - if training_args.do_eval: - logger.info("*** Evaluate ***") - - # Loop to handle MNLI double evaluation (matched, mis-matched) - eval_datasets = [eval_dataset] - if data_args.task_name == "mnli": - mnli_mm_data_args = dataclasses.replace(data_args, task_name="mnli-mm") - eval_datasets.append(GlueDataset(mnli_mm_data_args, tokenizer=tokenizer, mode="dev")) - - for eval_dataset in eval_datasets: - eval_result = trainer.evaluate(eval_dataset=eval_dataset) - - output_eval_file = os.path.join( - training_args.output_dir, f"eval_results_{eval_dataset.args.task_name}.txt" - ) - if trainer.is_world_process_zero(): - with open(output_eval_file, "w") as writer: - logger.info("***** Eval results {} *****".format(eval_dataset.args.task_name)) - for key, value in eval_result.items(): - logger.info(" %s = %s", key, value) - writer.write("%s = %s\n" % (key, value)) - - eval_results.update(eval_result) - - if training_args.do_predict: - logging.info("*** Test ***") - test_datasets = [test_dataset] - if data_args.task_name == "mnli": - mnli_mm_data_args = dataclasses.replace(data_args, task_name="mnli-mm") - test_datasets.append(GlueDataset(mnli_mm_data_args, tokenizer=tokenizer, mode="test")) - - for test_dataset in test_datasets: - predictions = trainer.predict(test_dataset=test_dataset).predictions - if output_mode == "classification": - predictions = np.argmax(predictions, axis=1) - - output_test_file = os.path.join( - training_args.output_dir, f"test_results_{test_dataset.args.task_name}.txt" - ) - if trainer.is_world_process_zero(): - with open(output_test_file, "w") as writer: - logger.info("***** Test results {} *****".format(test_dataset.args.task_name)) - writer.write("index\tprediction\n") - for index, item in enumerate(predictions): - if output_mode == "regression": - writer.write("%d\t%3.3f\n" % (index, item)) - else: - item = test_dataset.get_labels()[item] - writer.write("%d\t%s\n" % (index, item)) - return eval_results - - -def _mp_fn(index): - # For xla_spawn (TPUs) - main() - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/conftest.py b/adapters/examples/pytorch/conftest.py deleted file mode 100644 index e85e5afb..00000000 --- a/adapters/examples/pytorch/conftest.py +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 2020 The HuggingFace Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# tests directory-specific settings - this file is run automatically -# by pytest before any tests are run - -import sys -import warnings -from os.path import abspath, dirname, join - - -# allow having multiple repository checkouts and not needing to remember to rerun -# 'pip install -e .[dev]' when switching between checkouts and running tests. -git_repo_path = abspath(join(dirname(dirname(dirname(__file__))), "src")) -sys.path.insert(1, git_repo_path) - - -# silence FutureWarning warnings in tests since often we can't act on them until -# they become normal warnings - i.e. the tests still need to test the current functionality -warnings.simplefilter(action="ignore", category=FutureWarning) - - -def pytest_addoption(parser): - from transformers.testing_utils import pytest_addoption_shared - - pytest_addoption_shared(parser) - - -def pytest_terminal_summary(terminalreporter): - from transformers.testing_utils import pytest_terminal_summary_main - - make_reports = terminalreporter.config.getoption("--make-reports") - if make_reports: - pytest_terminal_summary_main(terminalreporter, id=make_reports) diff --git a/adapters/examples/pytorch/dependency-parsing/README.md b/adapters/examples/pytorch/dependency-parsing/README.md deleted file mode 100644 index 865b6fcc..00000000 --- a/adapters/examples/pytorch/dependency-parsing/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# Dependency parsing on Universal Dependencies with Adapters - -These example scripts are based on the fine-tuning code from the repository of ["How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models"](https://github.com/Adapter-Hub/hgiyt). -The scripts were upgraded to `adapters` v2.x and modified to use [flex heads](https://docs.adapterhub.ml/prediction_heads.html#models-with-flexible-heads) and HuggingFace Datasets. - -The used biaffine dependency parsing prediction head is described in ["Is Supervised Syntactic Parsing Beneficial for Language Understanding Tasks? An Empirical Investigation" (Glavaš & Vulić, 2021)](https://arxiv.org/pdf/2008.06788.pdf). - -A new prediction head can be added to BERT-based models via the `add_dependency_parsing_head()` methods, e.g.: -```python -model = AutoAdapterModel.from_pretrained("bert-base-uncased") -model.add_dependency_parsing_head( - "dependency_parsing", - num_labels=num_labels, - id2label=label_map, -) -``` - -## Training on Universal Dependencies - -Script: [`run_udp.py`](https://github.com/Adapter-Hub/adapters/blob/master/examples/dependency-parsing/run_udp.py). - -Fine-tuning on the treebanks of [Universal Dependencies](https://universaldependencies.org/). -The datasets are loaded from [HuggingFace Datasets](https://huggingface.co/datasets/universal_dependencies) and which dataset to use can be specified via the `--task_name` option. - -Training an adapter on the English Web Treebank (`en_ewt`) could be done as follows: - -```bash -export TASK_NAME="en_ewt" - -python run_udp.py \ - --model_name_or_path bert-base-cased \ - --do_train \ - --do_eval \ - --do_predict \ - --task_name $TASK_NAME \ - --per_device_train_batch_size 12 \ - --learning_rate 5e-4 \ - --num_train_epochs 10 \ - --max_seq_length 256 \ - --output_dir experiments/$TASK_NAME \ - --overwrite_output_dir \ - --store_best_model \ - --evaluation_strategy epoch \ - --metric_score las \ - --train_adapter -``` - -Fore more information, also visit the original code at https://github.com/Adapter-Hub/hgiyt/tree/master/finetuning. diff --git a/adapters/examples/pytorch/dependency-parsing/preprocessing.py b/adapters/examples/pytorch/dependency-parsing/preprocessing.py deleted file mode 100644 index 2188aab4..00000000 --- a/adapters/examples/pytorch/dependency-parsing/preprocessing.py +++ /dev/null @@ -1,100 +0,0 @@ -""" -Code taken and modified from: https://github.com/Adapter-Hub/hgiyt. -Credits: "How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models" (Rust et al., 2021) -https://arxiv.org/abs/2012.15613 -""" -from collections import defaultdict -from typing import List - -import datasets -import numpy as np - -from transformers import PreTrainedTokenizer - - -def preprocess_dataset( - dataset: datasets.DatasetDict, - tokenizer: PreTrainedTokenizer, - label_list: List[str], - data_args, - pad_token_id=-1, -): - label_map = {label: i for i, label in enumerate(label_list)} - - def encode_batch(examples): - features = defaultdict(list) - for words, heads, deprels in zip(examples["tokens"], examples["head"], examples["deprel"]): - # clean up - i = 0 - while i < len(heads): - if heads[i] == "None": - del words[i] - del heads[i] - del deprels[i] - i += 1 - tokens = [tokenizer.tokenize(w) for w in words] - word_lengths = [len(w) for w in tokens] - tokens_merged = [] - list(map(tokens_merged.extend, tokens)) - - if 0 in word_lengths: - continue - # Filter out sequences that are too long - if len(tokens_merged) >= (data_args.max_seq_length - 2): - continue - - encoding = tokenizer( - words, - add_special_tokens=True, - padding="max_length", - truncation=True, - max_length=data_args.max_seq_length, - is_split_into_words=True, - return_token_type_ids=True, - return_attention_mask=True, - ) - - input_ids = encoding["input_ids"] - token_type_ids = encoding["token_type_ids"] - attention_mask = encoding["attention_mask"] - - pad_item = [pad_token_id] - - # pad or truncate arc labels - labels_arcs = [int(h) for h in heads] - labels_arcs = labels_arcs + (data_args.max_seq_length - len(labels_arcs)) * pad_item - - # convert rel labels from map, pad or truncate if necessary - labels_rels = [label_map[i.split(":")[0]] for i in deprels] - labels_rels = labels_rels + (data_args.max_seq_length - len(labels_rels)) * pad_item - - # determine start indices of words, pad or truncate if necessary - word_starts = np.cumsum([1] + word_lengths).tolist() - word_starts = word_starts + (data_args.max_seq_length + 1 - len(word_starts)) * pad_item - - # sanity check lengths - assert len(input_ids) == data_args.max_seq_length - assert len(attention_mask) == data_args.max_seq_length - assert len(token_type_ids) == data_args.max_seq_length - assert len(labels_arcs) == data_args.max_seq_length - assert len(labels_rels) == data_args.max_seq_length - assert len(word_starts) == data_args.max_seq_length + 1 - - features["input_ids"].append(input_ids) - features["attention_mask"].append(attention_mask) - features["token_type_ids"].append(token_type_ids) - features["word_starts"].append(word_starts) - features["labels_arcs"].append(labels_arcs) - features["labels_rels"].append(labels_rels) - - return dict(features) - - # Expects columns in all splits to be identical - remove_columns = dataset.column_names["train"] - dataset = dataset.map( - encode_batch, - batched=True, - load_from_cache_file=not data_args.overwrite_cache, - remove_columns=remove_columns, - ) - return dataset diff --git a/adapters/examples/pytorch/dependency-parsing/requirements.txt b/adapters/examples/pytorch/dependency-parsing/requirements.txt deleted file mode 100644 index b316ccf4..00000000 --- a/adapters/examples/pytorch/dependency-parsing/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -datasets >= 1.8.0 -torch >= 1.3 -conllu diff --git a/adapters/examples/pytorch/dependency-parsing/run_udp.py b/adapters/examples/pytorch/dependency-parsing/run_udp.py deleted file mode 100644 index 8fefe1f4..00000000 --- a/adapters/examples/pytorch/dependency-parsing/run_udp.py +++ /dev/null @@ -1,302 +0,0 @@ -""" -Code taken and modified from: https://github.com/Adapter-Hub/hgiyt. -Credits: "How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models" (Rust et al., 2021) -https://arxiv.org/abs/2012.15613 -""" -import logging -import os -import sys -from dataclasses import dataclass, field -from typing import Dict, Optional - -from datasets import load_dataset - -import adapters -import adapters.composition as ac -from adapters import AdapterArguments, AdapterConfig, AutoAdapterModel, setup_adapter_training -from preprocessing import preprocess_dataset -from transformers import AutoConfig, AutoTokenizer, HfArgumentParser, set_seed -from utils_udp import UD_HEAD_LABELS, DependencyParsingAdapterTrainer, DependencyParsingTrainer, UDTrainingArguments - - -logger = logging.getLogger(__name__) - - -@dataclass -class ModelArguments: - """ - Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. - """ - - model_name_or_path: str = field( - metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} - ) - config_name: Optional[str] = field( - default=None, - metadata={"help": "Pretrained config name or path if not the same as model_name"}, - ) - tokenizer_name: Optional[str] = field( - default=None, - metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"}, - ) - use_fast: bool = field(default=False, metadata={"help": "Set this flag to use fast tokenization."}) - # If you want to tweak more attributes on your tokenizer, you should do it in a distinct script, - # or just modify its tokenizer_config.json. - cache_dir: Optional[str] = field( - default=None, - metadata={"help": "Where do you want to store the pretrained models downloaded from s3"}, - ) - replace_embeddings: bool = field(default=False, metadata={"help": "Whether or not to replace embeddings."}) - leave_out_twelvth: bool = field( - default=False, metadata={"help": "Whether or not to leave out adapters in twelvth layer"} - ) - do_lower_case: bool = field(default=False, metadata={"help": "Set this flag when using uncased model/tokenizer"}) - is_japanese: bool = field(default=False, metadata={"help": "Set this to true when using Japanese model/tokenizer"}) - mecab_dir: Optional[str] = field( - default=None, metadata={"help": "Path to mecab installation. Required when using Japanese model/tokenizer"} - ) - mecab_dic_dir: Optional[str] = field( - default=None, metadata={"help": "Path to mecab dictionary. Required when using Japanese model/tokenizer"} - ) - - -@dataclass -class DataTrainingArguments: - """ - Arguments pertaining to what data we are going to input our model for training and eval. - """ - - task_name: str = field(metadata={"help": "The identifier of the Universal Dependencies dataset to train on."}) - max_seq_length: int = field( - default=128, - metadata={ - "help": ( - "The maximum total input sequence length after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded." - ) - }, - ) - overwrite_cache: bool = field( - default=False, - metadata={"help": "Overwrite the cached training and evaluation sets."}, - ) - use_mock_data: bool = field(default=False) - evaluate_on: str = field(default="validation") - - -def main(): - # See all possible arguments in src/transformers/training_args.py - # or by passing the --help flag to this script. - # We now keep distinct sets of args, for a cleaner separation of concerns. - parser = HfArgumentParser((ModelArguments, DataTrainingArguments, UDTrainingArguments, AdapterArguments)) - if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): - # If we pass only one argument to the script and it's the path to a json file, - # let's parse it to get our arguments. - model_args, data_args, training_args, adapter_args = parser.parse_json_file( - json_file=os.path.abspath(sys.argv[1]) - ) - else: - ( - model_args, - data_args, - training_args, - adapter_args, - ) = parser.parse_args_into_dataclasses() - - if ( - os.path.exists(training_args.output_dir) - and os.listdir(training_args.output_dir) - and training_args.do_train - and not training_args.overwrite_output_dir - ): - raise ValueError( - f"Output directory ({training_args.output_dir}) already exists and is not empty. Use" - " --overwrite_output_dir to overcome." - ) - - # Setup logging - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - level=logging.INFO if training_args.local_rank in [-1, 0] else logging.WARN, - ) - logger.warning( - "Process rank: %s, device: %s, n_gpu: %s, distributed training: %s, 16-bits training: %s", - training_args.local_rank, - training_args.device, - training_args.n_gpu, - bool(training_args.local_rank != -1), - training_args.fp16, - ) - logger.info("Training/evaluation parameters %s", training_args) - - # Set seed - set_seed(training_args.seed) - - # Prepare for UD dependency parsing task - labels = UD_HEAD_LABELS - label_map: Dict[int, str] = {i: label for i, label in enumerate(labels)} - num_labels = len(labels) - - config = AutoConfig.from_pretrained( - model_args.config_name if model_args.config_name else model_args.model_name_or_path, - num_labels=num_labels, - id2label=label_map, - label2id={label: i for i, label in enumerate(labels)}, - cache_dir=model_args.cache_dir, - pad_token_id=-1, - ) - - if model_args.is_japanese: - assert model_args.mecab_dir is not None - assert model_args.mecab_dic_dir is not None - - tokenizer = AutoTokenizer.from_pretrained( - model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - use_fast=model_args.use_fast, - do_lower_case=model_args.do_lower_case, - add_prefix_space=True, # Used e.g. for RoBERTa - mecab_kwargs={"mecab_option": f"-r {model_args.mecab_dir} -d {model_args.mecab_dic_dir}"} - if model_args.is_japanese - else None, - ) - - # The task name (with prefix) - task_name = "ud_" + data_args.task_name - - model = AutoAdapterModel.from_pretrained( - model_args.model_name_or_path, - config=config, - cache_dir=model_args.cache_dir, - ) - - # Convert the model into an adapter model - adapters.init(model) - model.add_dependency_parsing_head( - task_name, - num_labels=num_labels, - id2label=label_map, - ) - - # Load and preprocess dataset - if data_args.use_mock_data: - from datasets import Version, load_dataset_builder - from datasets.commands.dummy_data import MockDownloadManager - - dataset_builder = load_dataset_builder("universal_dependencies", data_args.task_name) - mock_dl_manager = MockDownloadManager("universal_dependencies", dataset_builder.config, Version("2.7.0")) - dataset_builder.download_and_prepare(dl_manager=mock_dl_manager, ignore_verifications=True) - dataset = dataset_builder.as_dataset() - else: - dataset = load_dataset("universal_dependencies", data_args.task_name) - dataset = preprocess_dataset(dataset, tokenizer, labels, data_args, pad_token_id=-1) - - # Setup adapters - if model_args.leave_out_twelvth: - logger.info("Leaving out 12") - adapter_config_kwargs = {"leave_out": [11]} - adapter_load_kwargs = {"leave_out": [11]} - else: - adapter_config_kwargs = {} - adapter_load_kwargs = {} - adapter_name, lang_adapter_name = setup_adapter_training( - model, - adapter_args, - task_name, - adapter_config_kwargs=adapter_config_kwargs, - adapter_load_kwargs=adapter_load_kwargs, - ) - # Initialize our Trainer - # HACK: Set this attribute to False to prevent label columns from being deleted - training_args.remove_unused_columns = False - trainer_class = DependencyParsingAdapterTrainer if adapter_args.train_adapter else DependencyParsingTrainer - trainer = trainer_class( - model=model, - args=training_args, - train_dataset=dataset["train"], - eval_dataset=dataset[data_args.evaluate_on], - ) - - # Training - if training_args.do_train: - train_result = trainer.train( - model_path=model_args.model_name_or_path if os.path.isdir(model_args.model_name_or_path) else None - ) - metrics = train_result.metrics - - trainer.save_model() - - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - # Evaluation - results = {} - if training_args.do_eval: - logger.info("*** Evaluate ***") - - result = trainer.evaluate() - - if trainer.is_world_process_zero(): - results.update(result) - - trainer.log_metrics("eval", result) - trainer.save_metrics("eval", result) - - # Predict - if training_args.do_predict: - logging.info("*** Test ***") - - if training_args.store_best_model: - logger.info("Loading best model for predictions.") - - if adapter_args.train_adapter: - adapter_config = AdapterConfig.load(adapter_args.adapter_config, **adapter_config_kwargs) - model.load_adapter( - os.path.join(training_args.output_dir, "best_model", task_name) - if training_args.do_train - else adapter_args.load_adapter, - config=adapter_config, - load_as=task_name, - **adapter_load_kwargs, - ) - if adapter_args.load_lang_adapter: - lang_adapter_config = AdapterConfig.load(adapter_args.lang_adapter_config, **adapter_config_kwargs) - lang_adapter_name = model.load_adapter( - os.path.join(training_args.output_dir, "best_model", lang_adapter_name) - if training_args.do_train - else adapter_args.load_lang_adapter, - config=lang_adapter_config, - load_as=lang_adapter_name, - **adapter_load_kwargs, - ) - else: - lang_adapter_name = None - if lang_adapter_name: - model.set_active_adapters(ac.Stack(lang_adapter_name, task_name)) - else: - model.set_active_adapters(task_name) - model.to(training_args.device) - else: - trainer.model = AutoAdapterModel.from_pretrained( - os.path.join(training_args.output_dir, "best_model"), - from_tf=bool(".ckpt" in model_args.model_name_or_path), - config=config, - cache_dir=model_args.cache_dir, - ).to(training_args.device) - - predictions, _, metrics = trainer.predict(dataset["test"]) - - output_test_results_file = os.path.join(training_args.output_dir, "test_results.txt") - if trainer.is_world_process_zero(): - with open(output_test_results_file, "w") as writer: - for key, value in metrics.items(): - logger.info(" %s = %s", key, value) - writer.write("%s = %s\n" % (key, value)) - - return results - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/dependency-parsing/utils_udp.py b/adapters/examples/pytorch/dependency-parsing/utils_udp.py deleted file mode 100644 index 34246383..00000000 --- a/adapters/examples/pytorch/dependency-parsing/utils_udp.py +++ /dev/null @@ -1,376 +0,0 @@ -""" -Code taken and modified from: https://github.com/Adapter-Hub/hgiyt. -Credits: "How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models" (Rust et al., 2021) -https://arxiv.org/abs/2012.15613 -""" -import collections -import logging -import os -from dataclasses import dataclass, field -from typing import Callable, Dict, List, Optional, Tuple, Union - -import numpy as np -import torch -from torch.utils.data import DataLoader -from torch.utils.data.dataset import Dataset -from tqdm import tqdm - -from adapters import AdapterTrainer -from transformers import ( - DataCollator, - EvalPrediction, - PreTrainedModel, - PreTrainedTokenizerBase, - Trainer, - TrainerCallback, - TrainingArguments, - is_torch_tpu_available, -) -from transformers.trainer_utils import PredictionOutput - - -if is_torch_tpu_available(): - import torch_xla.core.xla_model as xm - import torch_xla.debug.metrics as met - -logger = logging.getLogger(__name__) - -UD_HEAD_LABELS = [ - "_", - "acl", - "advcl", - "advmod", - "amod", - "appos", - "aux", - "case", - "cc", - "ccomp", - "clf", - "compound", - "conj", - "cop", - "csubj", - "dep", - "det", - "discourse", - "dislocated", - "expl", - "fixed", - "flat", - "goeswith", - "iobj", - "list", - "mark", - "nmod", - "nsubj", - "nummod", - "obj", - "obl", - "orphan", - "parataxis", - "punct", - "reparandum", - "root", - "vocative", - "xcomp", -] - - -@dataclass -class UDTrainingArguments(TrainingArguments): - """ - Extends TrainingArguments for Universal Dependencies (UD) dependency parsing. - TrainingArguments is the subset of the arguments we use in our example scripts - **which relate to the training loop itself**. - - Using `HfArgumentParser` we can turn this class - into argparse arguments to be able to specify them on - the command line. - """ - - decode_mode: str = field(default="greedy", metadata={"help": "Whether to use mst decoding or greedy decoding"}) - store_best_model: bool = field(default=False, metadata={"help": "Whether to store best model during training."}) - metric_score: Optional[str] = field( - default=None, metadata={"help": "Metric used to determine best model during training."} - ) - - -class Metric(object): - def add(self, gold, prediction): - raise NotImplementedError - - def get_metric(self) -> Dict[str, float]: - raise NotImplementedError - - def reset(self): - raise NotImplementedError - - @staticmethod - def unpack(*tensors: torch.Tensor): - return (x.detach().cpu() if isinstance(x, torch.Tensor) else x for x in tensors) - - -class ParsingMetric(Metric): - """ - based on allennlp.training.metrics.AttachmentScores - Computes labeled and unlabeled attachment scores for a dependency parse. Note that the input - to this metric is the sampled predictions, not the distribution itself. - """ - - def __init__(self): - self._labeled_correct = 0.0 - self._unlabeled_correct = 0.0 - self._total_words = 0.0 - - def add( - self, - gold_indices: torch.Tensor, - gold_labels: torch.Tensor, - predicted_indices: torch.Tensor, - predicted_labels: torch.Tensor, - ): - """ - Parameters - ---------- - predicted_indices : ``torch.Tensor``, required. - A tensor of head index predictions of shape (batch_size, timesteps). - predicted_labels : ``torch.Tensor``, required. - A tensor of arc label predictions of shape (batch_size, timesteps). - gold_indices : ``torch.Tensor``, required. - A tensor of the same shape as ``predicted_indices``. - gold_labels : ``torch.Tensor``, required. - A tensor of the same shape as ``predicted_labels``. - """ - unwrapped = self.unpack(predicted_indices, predicted_labels, gold_indices, gold_labels) - predicted_indices, predicted_labels, gold_indices, gold_labels = unwrapped - - predicted_indices = predicted_indices.long() - predicted_labels = predicted_labels.long() - gold_indices = gold_indices.long() - gold_labels = gold_labels.long() - - correct_indices = predicted_indices.eq(gold_indices).long() - correct_labels = predicted_labels.eq(gold_labels).long() - correct_labels_and_indices = correct_indices * correct_labels - - self._unlabeled_correct += correct_indices.sum().item() - self._labeled_correct += correct_labels_and_indices.sum().item() - self._total_words += correct_indices.numel() - - def get_metric(self): - unlabeled_attachment_score = 0.0 - labeled_attachment_score = 0.0 - if self._total_words > 0.0: - unlabeled_attachment_score = self._unlabeled_correct / self._total_words - labeled_attachment_score = self._labeled_correct / self._total_words - return { - "uas": unlabeled_attachment_score * 100, - "las": labeled_attachment_score * 100, - } - - def reset(self): - self._labeled_correct = 0.0 - self._unlabeled_correct = 0.0 - self._total_words = 0.0 - - -class DependencyParsingTrainer(Trainer): - def __init__( - self, - model: Union[PreTrainedModel, torch.nn.Module] = None, - args: UDTrainingArguments = None, - data_collator: Optional[DataCollator] = None, - train_dataset: Optional[Dataset] = None, - eval_dataset: Optional[Dataset] = None, - tokenizer: Optional["PreTrainedTokenizerBase"] = None, - model_init: Callable[[], PreTrainedModel] = None, - compute_metrics: Optional[Callable[[EvalPrediction], Dict]] = None, - callbacks: Optional[List[TrainerCallback]] = None, - optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = (None, None), - **kwargs, - ): - super().__init__( - model, - args, - data_collator, - train_dataset, - eval_dataset, - tokenizer, - model_init, - compute_metrics, - callbacks, - optimizers, - **kwargs, - ) - # assumes higher is better - self.best_score = 0.0 - # torch.autograd.set_detect_anomaly(True) - - def evaluate( - self, - eval_dataset: Optional[Dataset] = None, - ignore_keys: Optional[List[str]] = None, - metric_key_prefix: str = "eval", - ) -> Dict[str, float]: - """ - Run evaluation and return metrics. - - The calling script will be responsible for providing a method to compute metrics, as they are - task-dependent. - - Args: - eval_dataset: (Optional) Pass a dataset if you wish to override - the one on the instance. - Returns: - A dict containing: - - the eval loss - - the potential metrics computed from the predictions - """ - eval_dataloader = self.get_eval_dataloader(eval_dataset) - - output = self._prediction_loop( - eval_dataloader, - description="Evaluation", - prediction_loss_only=True if self.compute_metrics is None else None, - metric_key_prefix=metric_key_prefix, - ) - - if self.args.store_best_model: - self.store_best_model(output) - - self.log(output.metrics) - - if self.args.tpu_metrics_debug: - # tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.) - xm.master_print(met.metrics_report()) - - return output.metrics - - def predict(self, test_dataset: Dataset) -> PredictionOutput: - """ - Run prediction and returns predictions and potential metrics. - - Depending on the dataset and your use case, your test dataset may contain labels. In that case, this method - will also return metrics, like in :obj:`evaluate()`. - - Args: - test_dataset (:obj:`Dataset`): - Dataset to run the predictions on. If it is an :obj:`datasets.Dataset`, columns not accepted by the - ``model.forward()`` method are automatically removed. Has to implement the method :obj:`__len__` - ignore_keys (:obj:`Lst[str]`, `optional`): - A list of keys in the output of your model (if it is a dictionary) that should be ignored when - gathering predictions. - metric_key_prefix (:obj:`str`, `optional`, defaults to :obj:`"test"`): - An optional prefix to be used as the metrics key prefix. For example the metrics "bleu" will be named - "test_bleu" if the prefix is "test" (default) - - .. note:: - - If your predictions or labels have different sequence length (for instance because you're doing dynamic - padding in a token classification task) the predictions will be padded (on the right) to allow for - concatenation into one array. The padding index is -100. - - Returns: `NamedTuple` A namedtuple with the following keys: - - - predictions (:obj:`np.ndarray`): The predictions on :obj:`test_dataset`. - - label_ids (:obj:`np.ndarray`, `optional`): The labels (if the dataset contained some). - - metrics (:obj:`Dict[str, float]`, `optional`): The potential dictionary of metrics (if the dataset - contained labels). - """ - test_dataloader = self.get_test_dataloader(test_dataset) - - output = self._prediction_loop(test_dataloader, description="Prediction") - - self.log(output.metrics) - - return PredictionOutput(predictions=output.predictions, label_ids=output.label_ids, metrics=output.metrics) - - def store_best_model(self, output): - - if self.args.metric_score not in output.metrics: - raise Exception( - "Metric %s not in output.\nThe following output was generated: %s", - str(self.args.metric_score), - str(output), - ) - - if output.metrics[self.args.metric_score] > self.best_score: - self.best_score = output.metrics[self.args.metric_score] - # Save model checkpoint - self.save_model(os.path.join(self.args.output_dir, "best_model")) - with open(os.path.join(self.args.output_dir, "best_model", "output.txt"), "w") as f: - f.write(str(output.metrics)) - - def _prediction_loop( - self, - dataloader: DataLoader, - description: str, - prediction_loss_only: Optional[bool] = None, - metric_key_prefix: str = "eval", - ) -> PredictionOutput: - """ - Prediction/evaluation loop, shared by :obj:`Trainer.evaluate()` and :obj:`Trainer.predict()`. - Works both with or without labels. - """ - - if not isinstance(dataloader.dataset, collections.abc.Sized): - raise ValueError("dataset must implement __len__") - prediction_loss_only = ( - prediction_loss_only if prediction_loss_only is not None else self.args.prediction_loss_only - ) - - model = self.model - # multi-gpu eval - if self.args.n_gpu > 1: - model = torch.nn.DataParallel(model) - else: - model = self.model - # Note: in torch.distributed mode, there's no point in wrapping the model - # inside a DistributedDataParallel as we'll be under `no_grad` anyways. - - batch_size = dataloader.batch_size - logger.info("***** Running %s *****", description) - logger.info(" Num examples = %d", self.num_examples(dataloader)) - logger.info(" Batch size = %d", batch_size) - logger.info(" Decode mode = %s", self.args.decode_mode) - eval_losses: List[float] = [] - model.eval() - - metric = ParsingMetric() - - for inputs in tqdm(dataloader, desc=description): - - for k, v in inputs.items(): - inputs[k] = v.to(self.args.device) - - with torch.no_grad(): - step_eval_loss, rel_preds, arc_preds = model(**inputs, return_dict=False) - - eval_losses += [step_eval_loss.mean().item()] - - mask = inputs["labels_arcs"].ne(self.model.config.pad_token_id) - predictions_arcs = torch.argmax(arc_preds, dim=-1)[mask] - - labels_arcs = inputs["labels_arcs"][mask] - - predictions_rels, labels_rels = rel_preds[mask], inputs["labels_rels"][mask] - predictions_rels = predictions_rels[torch.arange(len(labels_arcs)), labels_arcs] - predictions_rels = torch.argmax(predictions_rels, dim=-1) - - metric.add(labels_arcs, labels_rels, predictions_arcs, predictions_rels) - - results = metric.get_metric() - results[f"{metric_key_prefix}_loss"] = np.mean(eval_losses) - - # Prefix all keys with metric_key_prefix + '_' - for key in list(results.keys()): - if not key.startswith(f"{metric_key_prefix}_"): - results[f"{metric_key_prefix}_{key}"] = results.pop(key) - - # Add predictions_rels to output, even though we are only interested in the metrics - return PredictionOutput(predictions=predictions_rels, label_ids=None, metrics=results) - - -class DependencyParsingAdapterTrainer(AdapterTrainer, DependencyParsingTrainer): - pass diff --git a/adapters/examples/pytorch/language-modeling/README.md b/adapters/examples/pytorch/language-modeling/README.md deleted file mode 100644 index e90467da..00000000 --- a/adapters/examples/pytorch/language-modeling/README.md +++ /dev/null @@ -1,138 +0,0 @@ - - -## Language model training using Adapters - -> **Note:** In the original Hugging Face Transformers examples, there are 5 scripts included. We have adapted `run_clm.py` and `run_mlm.py`. We have not adapted the scripts `run_clm_no_trainer.py`, `run_mlm_no_trainer.py` and `run_plm.py`. - -Fine-tuning (or training from scratch) the library models for language modeling on a text dataset for GPT, GPT-2, -ALBERT, BERT, DistilBERT, RoBERTa, XLNet... GPT and GPT-2 are trained or fine-tuned using a causal language modeling -(CLM) loss while ALBERT, BERT, DistilBERT and RoBERTa are trained or fine-tuned using a masked language modeling (MLM) -loss. XLNet uses permutation language modeling (PLM), you can find more information about the differences between those -objectives in our [model summary](https://huggingface.co/transformers/model_summary.html). - -**Note:** The old script `run_language_modeling.py` is still available [here](https://github.com/huggingface/transformers/blob/main/examples/legacy/run_language_modeling.py). - -The following examples, will run on datasets hosted on our [hub](https://huggingface.co/datasets) or with your own -text files for training and validation. We give examples of both below. - -### GPT-2/GPT and causal language modeling - -The following example fine-tunes GPT-2 on WikiText-2. We're using the raw WikiText-2 (no tokens were replaced before -the tokenization). The loss here is that of causal language modeling. - -```bash -python run_clm.py \ - --model_name_or_path gpt2 \ - --dataset_name wikitext \ - --dataset_config_name wikitext-2-raw-v1 \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --do_train \ - --do_eval \ - --output_dir /tmp/test-clm \ - --train_adapter \ - --adapter_config seq_bn \ - --overwrite_output_dir -``` - -This takes about half an hour to train on a single K80 GPU and about one minute for the evaluation to run. It reaches -a score of ~20 perplexity once fine-tuned on the dataset. - -To run on your own training and validation files, use the following command: - -```bash -python run_clm.py \ - --model_name_or_path gpt2 \ - --train_file path_to_train_file \ - --validation_file path_to_validation_file \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --do_train \ - --do_eval \ - --output_dir /tmp/test-clm \ - --train_adapter \ - --adapter_config seq_bn \ - --overwrite_output_dir -``` - - -### RoBERTa/BERT/DistilBERT and masked language modeling - -The following example fine-tunes RoBERTa on WikiText-2. Here too, we're using the raw WikiText-2. The loss is different -as BERT/RoBERTa have a bidirectional mechanism; we're therefore using the same loss that was used during their -pre-training: masked language modeling. - -In accordance to the RoBERTa paper, we use dynamic masking rather than static masking. The model may, therefore, -converge slightly slower (over-fitting takes more epochs). - -```bash -python run_mlm.py \ - --model_name_or_path roberta-base \ - --dataset_name wikitext \ - --dataset_config_name wikitext-2-raw-v1 \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --do_train \ - --do_eval \ - --output_dir /tmp/test-mlm \ - --train_adapter \ - --adapter_config seq_bn \ - --overwrite_output_dir -``` - -To run on your own training and validation files, use the following command: - -```bash -python run_mlm.py \ - --model_name_or_path roberta-base \ - --train_file path_to_train_file \ - --validation_file path_to_validation_file \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --do_train \ - --do_eval \ - --output_dir /tmp/test-mlm \ - --train_adapter \ - --adapter_config seq_bn \ - --overwrite_output_dir -``` - -If your dataset is organized with one sample per line, you can use the `--line_by_line` flag (otherwise the script -concatenates all texts and then splits them in blocks of the same length). - -**Note:** On TPU, you should use the flag `--pad_to_max_length` in conjunction with the `--line_by_line` flag to make -sure all your batches have the same length. - -### Whole word masking - -This part was moved to `examples/research_projects/mlm_wwm`. - -### XLNet and permutation language modeling - -We have not adapted the permutation language modeling training scripts to use Adapters. To avoid confusion we have not included the non-adapted version in the examples of Adapters. - -## Creating a model on the fly - -When training a model from scratch, configuration values may be overridden with the help of `--config_overrides`: - - -```bash -python run_clm.py --model_type gpt2 --tokenizer_name gpt2 \ --config_overrides="n_embd=1024,n_head=16,n_layer=48,n_positions=102" \ --train_adapter \ -[...] -``` - -This feature is only available in `run_clm.py` and `run_mlm.py`. diff --git a/adapters/examples/pytorch/language-modeling/requirements.txt b/adapters/examples/pytorch/language-modeling/requirements.txt deleted file mode 100644 index 19c487fe..00000000 --- a/adapters/examples/pytorch/language-modeling/requirements.txt +++ /dev/null @@ -1,7 +0,0 @@ -accelerate >= 0.12.0 -torch >= 1.3 -datasets >= 1.8.0 -sentencepiece != 0.1.92 -protobuf -evaluate -scikit-learn diff --git a/adapters/examples/pytorch/language-modeling/run_clm.py b/adapters/examples/pytorch/language-modeling/run_clm.py deleted file mode 100644 index 30947383..00000000 --- a/adapters/examples/pytorch/language-modeling/run_clm.py +++ /dev/null @@ -1,608 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 -# Copyright 2020 The HuggingFace Inc. team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Fine-tuning the library models for causal language modeling (GPT, GPT-2, CTRL, ...) on a text file or a dataset. - -Here is the full list of checkpoints on the hub that can be fine-tuned by this script: -https://huggingface.co/models?filter=text-generation -""" -# You can also adapt this script on your own causal language modeling task. Pointers for this are left as comments. - -import logging -import math -import os -import sys -from dataclasses import dataclass, field -from itertools import chain -from typing import Optional - -import datasets -import torch -from datasets import load_dataset - -import adapters -import evaluate -import transformers -from adapters import AdapterArguments, AdapterTrainer, setup_adapter_training -from transformers import ( - CONFIG_MAPPING, - MODEL_FOR_CAUSAL_LM_MAPPING, - AutoConfig, - AutoModelForCausalLM, - AutoTokenizer, - HfArgumentParser, - Trainer, - TrainingArguments, - default_data_collator, - is_torch_tpu_available, - set_seed, -) -from transformers.testing_utils import CaptureLogger -from transformers.trainer_utils import get_last_checkpoint -from transformers.utils import check_min_version -from transformers.utils.versions import require_version - - -# Will error if the minimal version of Transformers is not installed. Remove at your own risks. -check_min_version("4.26.0") - -require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/language-modeling/requirements.txt") - -logger = logging.getLogger(__name__) - - -MODEL_CONFIG_CLASSES = list(MODEL_FOR_CAUSAL_LM_MAPPING.keys()) -MODEL_TYPES = tuple(conf.model_type for conf in MODEL_CONFIG_CLASSES) - - -@dataclass -class ModelArguments: - """ - Arguments pertaining to which model/config/tokenizer we are going to fine-tune, or train from scratch. - """ - - model_name_or_path: Optional[str] = field( - default=None, - metadata={ - "help": ( - "The model checkpoint for weights initialization.Don't set if you want to train a model from scratch." - ) - }, - ) - model_type: Optional[str] = field( - default=None, - metadata={"help": "If training from scratch, pass a model type from the list: " + ", ".join(MODEL_TYPES)}, - ) - config_overrides: Optional[str] = field( - default=None, - metadata={ - "help": ( - "Override some existing default config settings when a model is trained from scratch. Example: " - "n_embd=10,resid_pdrop=0.2,scale_attn_weights=false,summary_type=cls_index" - ) - }, - ) - config_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} - ) - tokenizer_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} - ) - cache_dir: Optional[str] = field( - default=None, - metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"}, - ) - use_fast_tokenizer: bool = field( - default=True, - metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, - ) - model_revision: str = field( - default="main", - metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, - ) - use_auth_token: bool = field( - default=False, - metadata={ - "help": ( - "Will use the token generated when running `huggingface-cli login` (necessary to use this script " - "with private models)." - ) - }, - ) - torch_dtype: Optional[str] = field( - default=None, - metadata={ - "help": ( - "Override the default `torch.dtype` and load the model under this dtype. If `auto` is passed, the " - "dtype will be automatically derived from the model's weights." - ), - "choices": ["auto", "bfloat16", "float16", "float32"], - }, - ) - - def __post_init__(self): - if self.config_overrides is not None and (self.config_name is not None or self.model_name_or_path is not None): - raise ValueError( - "--config_overrides can't be used in combination with --config_name or --model_name_or_path" - ) - - -@dataclass -class DataTrainingArguments: - """ - Arguments pertaining to what data we are going to input our model for training and eval. - """ - - dataset_name: Optional[str] = field( - default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} - ) - dataset_config_name: Optional[str] = field( - default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} - ) - train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a text file)."}) - validation_file: Optional[str] = field( - default=None, - metadata={"help": "An optional input evaluation data file to evaluate the perplexity on (a text file)."}, - ) - max_train_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of training examples to this " - "value if set." - ) - }, - ) - max_eval_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of evaluation examples to this " - "value if set." - ) - }, - ) - - block_size: Optional[int] = field( - default=None, - metadata={ - "help": ( - "Optional input sequence length after tokenization. " - "The training dataset will be truncated in block of this size for training. " - "Default to the model max input length for single sentence inputs (take into account special tokens)." - ) - }, - ) - overwrite_cache: bool = field( - default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} - ) - validation_split_percentage: Optional[int] = field( - default=5, - metadata={ - "help": "The percentage of the train set used as validation set in case there's no validation split" - }, - ) - preprocessing_num_workers: Optional[int] = field( - default=None, - metadata={"help": "The number of processes to use for the preprocessing."}, - ) - keep_linebreaks: bool = field( - default=True, metadata={"help": "Whether to keep line breaks when using TXT files or not."} - ) - - def __post_init__(self): - if self.dataset_name is None and self.train_file is None and self.validation_file is None: - raise ValueError("Need either a dataset name or a training/validation file.") - else: - if self.train_file is not None: - extension = self.train_file.split(".")[-1] - assert extension in ["csv", "json", "txt"], "`train_file` should be a csv, a json or a txt file." - if self.validation_file is not None: - extension = self.validation_file.split(".")[-1] - assert extension in ["csv", "json", "txt"], "`validation_file` should be a csv, a json or a txt file." - - -def main(): - # See all possible arguments in src/transformers/training_args.py - # or by passing the --help flag to this script. - # We now keep distinct sets of args, for a cleaner separation of concerns. - - parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) - - if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): - # If we pass only one argument to the script and it's the path to a json file, - # let's parse it to get our arguments. - model_args, data_args, training_args, adapter_args = parser.parse_json_file( - json_file=os.path.abspath(sys.argv[1]) - ) - else: - model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() - - # Setup logging - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - handlers=[logging.StreamHandler(sys.stdout)], - ) - - log_level = training_args.get_process_log_level() - logger.setLevel(log_level) - datasets.utils.logging.set_verbosity(log_level) - transformers.utils.logging.set_verbosity(log_level) - transformers.utils.logging.enable_default_handler() - transformers.utils.logging.enable_explicit_format() - - # Log on each process the small summary: - logger.warning( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" - + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" - ) - logger.info(f"Training/evaluation parameters {training_args}") - - # Detecting last checkpoint. - last_checkpoint = None - if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: - last_checkpoint = get_last_checkpoint(training_args.output_dir) - if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: - raise ValueError( - f"Output directory ({training_args.output_dir}) already exists and is not empty. " - "Use --overwrite_output_dir to overcome." - ) - elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: - logger.info( - f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " - "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." - ) - - # Set seed before initializing model. - set_seed(training_args.seed) - - # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) - # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ - # (the dataset will be downloaded automatically from the datasets Hub). - # - # For CSV/JSON files, this script will use the column called 'text' or the first column if no column called - # 'text' is found. You can easily tweak this behavior (see below). - # - # In distributed training, the load_dataset function guarantee that only one local process can concurrently - # download the dataset. - if data_args.dataset_name is not None: - # Downloading and loading a dataset from the hub. - raw_datasets = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - if "validation" not in raw_datasets.keys(): - raw_datasets["validation"] = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - split=f"train[:{data_args.validation_split_percentage}%]", - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - raw_datasets["train"] = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - split=f"train[{data_args.validation_split_percentage}%:]", - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - else: - data_files = {} - dataset_args = {} - if data_args.train_file is not None: - data_files["train"] = data_args.train_file - if data_args.validation_file is not None: - data_files["validation"] = data_args.validation_file - extension = ( - data_args.train_file.split(".")[-1] - if data_args.train_file is not None - else data_args.validation_file.split(".")[-1] - ) - if extension == "txt": - extension = "text" - dataset_args["keep_linebreaks"] = data_args.keep_linebreaks - raw_datasets = load_dataset( - extension, - data_files=data_files, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - **dataset_args, - ) - # If no validation data is there, validation_split_percentage will be used to divide the dataset. - if "validation" not in raw_datasets.keys(): - raw_datasets["validation"] = load_dataset( - extension, - data_files=data_files, - split=f"train[:{data_args.validation_split_percentage}%]", - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - **dataset_args, - ) - raw_datasets["train"] = load_dataset( - extension, - data_files=data_files, - split=f"train[{data_args.validation_split_percentage}%:]", - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - **dataset_args, - ) - - # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at - # https://huggingface.co/docs/datasets/loading_datasets.html. - - # Load pretrained model and tokenizer - # - # Distributed training: - # The .from_pretrained methods guarantee that only one local process can concurrently - # download model & vocab. - - config_kwargs = { - "cache_dir": model_args.cache_dir, - "revision": model_args.model_revision, - "use_auth_token": True if model_args.use_auth_token else None, - } - if model_args.config_name: - config = AutoConfig.from_pretrained(model_args.config_name, **config_kwargs) - elif model_args.model_name_or_path: - config = AutoConfig.from_pretrained(model_args.model_name_or_path, **config_kwargs) - else: - config = CONFIG_MAPPING[model_args.model_type]() - logger.warning("You are instantiating a new config instance from scratch.") - if model_args.config_overrides is not None: - logger.info(f"Overriding config: {model_args.config_overrides}") - config.update_from_string(model_args.config_overrides) - logger.info(f"New config: {config}") - - tokenizer_kwargs = { - "cache_dir": model_args.cache_dir, - "use_fast": model_args.use_fast_tokenizer, - "revision": model_args.model_revision, - "use_auth_token": True if model_args.use_auth_token else None, - } - if model_args.tokenizer_name: - tokenizer = AutoTokenizer.from_pretrained(model_args.tokenizer_name, **tokenizer_kwargs) - elif model_args.model_name_or_path: - tokenizer = AutoTokenizer.from_pretrained(model_args.model_name_or_path, **tokenizer_kwargs) - else: - raise ValueError( - "You are instantiating a new tokenizer from scratch. This is not supported by this script." - "You can do it from another script, save it, and load it from here, using --tokenizer_name." - ) - - if model_args.model_name_or_path: - torch_dtype = ( - model_args.torch_dtype - if model_args.torch_dtype in ["auto", None] - else getattr(torch, model_args.torch_dtype) - ) - model = AutoModelForCausalLM.from_pretrained( - model_args.model_name_or_path, - from_tf=bool(".ckpt" in model_args.model_name_or_path), - config=config, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - torch_dtype=torch_dtype, - ) - else: - model = AutoModelForCausalLM.from_config(config) - n_params = sum(dict((p.data_ptr(), p.numel()) for p in model.parameters()).values()) - logger.info(f"Training new model from scratch - Total size={n_params/2**20:.2f}M params") - - # Convert the model into an adapter model - adapters.init(model) - - # We resize the embeddings only when necessary to avoid index errors. If you are creating a model from scratch - # on a small vocab and want a smaller embedding size, remove this test. - embedding_size = model.get_input_embeddings().weight.shape[0] - if len(tokenizer) > embedding_size: - model.resize_token_embeddings(len(tokenizer)) - - # Preprocessing the datasets. - # First we tokenize all the texts. - if training_args.do_train: - column_names = raw_datasets["train"].column_names - else: - column_names = raw_datasets["validation"].column_names - text_column_name = "text" if "text" in column_names else column_names[0] - - # since this will be pickled to avoid _LazyModule error in Hasher force logger loading before tokenize_function - tok_logger = transformers.utils.logging.get_logger("transformers.tokenization_utils_base") - - def tokenize_function(examples): - with CaptureLogger(tok_logger) as cl: - output = tokenizer(examples[text_column_name]) - # clm input could be much much longer than block_size - if "Token indices sequence length is longer than the" in cl.out: - tok_logger.warning( - "^^^^^^^^^^^^^^^^ Please ignore the warning above - this long input will be chunked into smaller bits" - " before being passed to the model." - ) - return output - - with training_args.main_process_first(desc="dataset map tokenization"): - tokenized_datasets = raw_datasets.map( - tokenize_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on dataset", - ) - - if data_args.block_size is None: - block_size = tokenizer.model_max_length - if block_size > 1024: - logger.warning( - f"The tokenizer picked seems to have a very large `model_max_length` ({tokenizer.model_max_length}). " - "Picking 1024 instead. You can change that default value by passing --block_size xxx." - ) - block_size = 1024 - else: - if data_args.block_size > tokenizer.model_max_length: - logger.warning( - f"The block_size passed ({data_args.block_size}) is larger than the maximum length for the model" - f"({tokenizer.model_max_length}). Using block_size={tokenizer.model_max_length}." - ) - block_size = min(data_args.block_size, tokenizer.model_max_length) - - # Main data processing function that will concatenate all texts from our dataset and generate chunks of block_size. - def group_texts(examples): - # Concatenate all texts. - concatenated_examples = {k: list(chain(*examples[k])) for k in examples.keys()} - total_length = len(concatenated_examples[list(examples.keys())[0]]) - # We drop the small remainder, we could add padding if the model supported it instead of this drop, you can - # customize this part to your needs. - if total_length >= block_size: - total_length = (total_length // block_size) * block_size - # Split by chunks of max_len. - result = { - k: [t[i : i + block_size] for i in range(0, total_length, block_size)] - for k, t in concatenated_examples.items() - } - result["labels"] = result["input_ids"].copy() - return result - - # Note that with `batched=True`, this map processes 1,000 texts together, so group_texts throws away a remainder - # for each of those groups of 1,000 texts. You can adjust that batch_size here but a higher value might be slower - # to preprocess. - # - # To speed up this part, we use multiprocessing. See the documentation of the map method for more information: - # https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.map - - with training_args.main_process_first(desc="grouping texts together"): - lm_datasets = tokenized_datasets.map( - group_texts, - batched=True, - num_proc=data_args.preprocessing_num_workers, - load_from_cache_file=not data_args.overwrite_cache, - desc=f"Grouping texts in chunks of {block_size}", - ) - - if training_args.do_train: - if "train" not in tokenized_datasets: - raise ValueError("--do_train requires a train dataset") - train_dataset = lm_datasets["train"] - if data_args.max_train_samples is not None: - max_train_samples = min(len(train_dataset), data_args.max_train_samples) - train_dataset = train_dataset.select(range(max_train_samples)) - - if training_args.do_eval: - if "validation" not in tokenized_datasets: - raise ValueError("--do_eval requires a validation dataset") - eval_dataset = lm_datasets["validation"] - if data_args.max_eval_samples is not None: - max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) - eval_dataset = eval_dataset.select(range(max_eval_samples)) - - def preprocess_logits_for_metrics(logits, labels): - if isinstance(logits, tuple): - # Depending on the model and config, logits may contain extra tensors, - # like past_key_values, but logits always come first - logits = logits[0] - return logits.argmax(dim=-1) - - metric = evaluate.load("accuracy") - - def compute_metrics(eval_preds): - preds, labels = eval_preds - # preds have the same shape as the labels, after the argmax(-1) has been calculated - # by preprocess_logits_for_metrics but we need to shift the labels - labels = labels[:, 1:].reshape(-1) - preds = preds[:, :-1].reshape(-1) - return metric.compute(predictions=preds, references=labels) - - # Setup adapters - setup_adapter_training(model, adapter_args, data_args.dataset_name or "clm") - # Initialize our Trainer - trainer_class = AdapterTrainer if adapter_args.train_adapter else Trainer - trainer = trainer_class( - model=model, - args=training_args, - train_dataset=train_dataset if training_args.do_train else None, - eval_dataset=eval_dataset if training_args.do_eval else None, - tokenizer=tokenizer, - # Data collator will default to DataCollatorWithPadding, so we change it. - data_collator=default_data_collator, - compute_metrics=compute_metrics if training_args.do_eval and not is_torch_tpu_available() else None, - preprocess_logits_for_metrics=preprocess_logits_for_metrics - if training_args.do_eval and not is_torch_tpu_available() - else None, - ) - - # Training - if training_args.do_train: - checkpoint = None - if training_args.resume_from_checkpoint is not None: - checkpoint = training_args.resume_from_checkpoint - elif last_checkpoint is not None: - checkpoint = last_checkpoint - train_result = trainer.train(resume_from_checkpoint=checkpoint) - trainer.save_model() # Saves the tokenizer too for easy upload - - metrics = train_result.metrics - - max_train_samples = ( - data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) - ) - metrics["train_samples"] = min(max_train_samples, len(train_dataset)) - - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - # Evaluation - if training_args.do_eval: - logger.info("*** Evaluate ***") - - metrics = trainer.evaluate() - - max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) - metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) - try: - perplexity = math.exp(metrics["eval_loss"]) - except OverflowError: - perplexity = float("inf") - metrics["perplexity"] = perplexity - - trainer.log_metrics("eval", metrics) - trainer.save_metrics("eval", metrics) - - kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "text-generation"} - if data_args.dataset_name is not None: - kwargs["dataset_tags"] = data_args.dataset_name - if data_args.dataset_config_name is not None: - kwargs["dataset_args"] = data_args.dataset_config_name - kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" - else: - kwargs["dataset"] = data_args.dataset_name - - if training_args.push_to_hub: - trainer.push_to_hub(**kwargs) - else: - trainer.create_model_card(**kwargs) - - -def _mp_fn(index): - # For xla_spawn (TPUs) - main() - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/language-modeling/run_mlm.py b/adapters/examples/pytorch/language-modeling/run_mlm.py deleted file mode 100644 index bf6de170..00000000 --- a/adapters/examples/pytorch/language-modeling/run_mlm.py +++ /dev/null @@ -1,623 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 -# Copyright 2020 The HuggingFace Team All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Fine-tuning the library models for masked language modeling (BERT, ALBERT, RoBERTa...) on a text file or a dataset. - -Here is the full list of checkpoints on the hub that can be fine-tuned by this script: -https://huggingface.co/models?filter=fill-mask -""" -# You can also adapt this script on your own masked language modeling task. Pointers for this are left as comments. - -import logging -import math -import os -import sys -from dataclasses import dataclass, field -from itertools import chain -from typing import Optional - -import datasets -from datasets import load_dataset - -import adapters -import evaluate -import transformers -from adapters import AdapterArguments, AdapterTrainer, setup_adapter_training -from transformers import ( - CONFIG_MAPPING, - MODEL_FOR_MASKED_LM_MAPPING, - AutoConfig, - AutoModelForMaskedLM, - AutoTokenizer, - DataCollatorForLanguageModeling, - HfArgumentParser, - Trainer, - TrainingArguments, - is_torch_tpu_available, - set_seed, -) -from transformers.trainer_utils import get_last_checkpoint -from transformers.utils import check_min_version -from transformers.utils.versions import require_version - - -# Will error if the minimal version of Transformers is not installed. Remove at your own risks. -check_min_version("4.26.0") - -require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/language-modeling/requirements.txt") - -logger = logging.getLogger(__name__) -MODEL_CONFIG_CLASSES = list(MODEL_FOR_MASKED_LM_MAPPING.keys()) -MODEL_TYPES = tuple(conf.model_type for conf in MODEL_CONFIG_CLASSES) - - -@dataclass -class ModelArguments: - """ - Arguments pertaining to which model/config/tokenizer we are going to fine-tune, or train from scratch. - """ - - model_name_or_path: Optional[str] = field( - default=None, - metadata={ - "help": ( - "The model checkpoint for weights initialization. Don't set if you want to train a model from scratch." - ) - }, - ) - model_type: Optional[str] = field( - default=None, - metadata={"help": "If training from scratch, pass a model type from the list: " + ", ".join(MODEL_TYPES)}, - ) - config_overrides: Optional[str] = field( - default=None, - metadata={ - "help": ( - "Override some existing default config settings when a model is trained from scratch. Example: " - "n_embd=10,resid_pdrop=0.2,scale_attn_weights=false,summary_type=cls_index" - ) - }, - ) - config_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} - ) - tokenizer_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} - ) - cache_dir: Optional[str] = field( - default=None, - metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"}, - ) - use_fast_tokenizer: bool = field( - default=True, - metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, - ) - model_revision: str = field( - default="main", - metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, - ) - use_auth_token: bool = field( - default=False, - metadata={ - "help": ( - "Will use the token generated when running `huggingface-cli login` (necessary to use this script " - "with private models)." - ) - }, - ) - - def __post_init__(self): - if self.config_overrides is not None and (self.config_name is not None or self.model_name_or_path is not None): - raise ValueError( - "--config_overrides can't be used in combination with --config_name or --model_name_or_path" - ) - - -@dataclass -class DataTrainingArguments: - """ - Arguments pertaining to what data we are going to input our model for training and eval. - """ - - dataset_name: Optional[str] = field( - default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} - ) - dataset_config_name: Optional[str] = field( - default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} - ) - train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a text file)."}) - validation_file: Optional[str] = field( - default=None, - metadata={"help": "An optional input evaluation data file to evaluate the perplexity on (a text file)."}, - ) - overwrite_cache: bool = field( - default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} - ) - validation_split_percentage: Optional[int] = field( - default=5, - metadata={ - "help": "The percentage of the train set used as validation set in case there's no validation split" - }, - ) - max_seq_length: Optional[int] = field( - default=None, - metadata={ - "help": ( - "The maximum total input sequence length after tokenization. Sequences longer " - "than this will be truncated." - ) - }, - ) - preprocessing_num_workers: Optional[int] = field( - default=None, - metadata={"help": "The number of processes to use for the preprocessing."}, - ) - mlm_probability: float = field( - default=0.15, metadata={"help": "Ratio of tokens to mask for masked language modeling loss"} - ) - line_by_line: bool = field( - default=False, - metadata={"help": "Whether distinct lines of text in the dataset are to be handled as distinct sequences."}, - ) - pad_to_max_length: bool = field( - default=False, - metadata={ - "help": ( - "Whether to pad all samples to `max_seq_length`. " - "If False, will pad the samples dynamically when batching to the maximum length in the batch." - ) - }, - ) - max_train_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of training examples to this " - "value if set." - ) - }, - ) - max_eval_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of evaluation examples to this " - "value if set." - ) - }, - ) - - def __post_init__(self): - if self.dataset_name is None and self.train_file is None and self.validation_file is None: - raise ValueError("Need either a dataset name or a training/validation file.") - else: - if self.train_file is not None: - extension = self.train_file.split(".")[-1] - if extension not in ["csv", "json", "txt"]: - raise ValueError("`train_file` should be a csv, a json or a txt file.") - if self.validation_file is not None: - extension = self.validation_file.split(".")[-1] - if extension not in ["csv", "json", "txt"]: - raise ValueError("`validation_file` should be a csv, a json or a txt file.") - - -def main(): - # See all possible arguments in src/transformers/training_args.py - # or by passing the --help flag to this script. - # We now keep distinct sets of args, for a cleaner separation of concerns. - - parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) - if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): - # If we pass only one argument to the script and it's the path to a json file, - # let's parse it to get our arguments. - model_args, data_args, training_args, adapter_args = parser.parse_json_file( - json_file=os.path.abspath(sys.argv[1]) - ) - else: - model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() - - # Setup logging - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - handlers=[logging.StreamHandler(sys.stdout)], - ) - - log_level = training_args.get_process_log_level() - logger.setLevel(log_level) - datasets.utils.logging.set_verbosity(log_level) - transformers.utils.logging.set_verbosity(log_level) - transformers.utils.logging.enable_default_handler() - transformers.utils.logging.enable_explicit_format() - - # Log on each process the small summary: - logger.warning( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" - + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" - ) - # Set the verbosity to info of the Transformers logger (on main process only): - logger.info(f"Training/evaluation parameters {training_args}") - - # Detecting last checkpoint. - last_checkpoint = None - if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: - last_checkpoint = get_last_checkpoint(training_args.output_dir) - if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: - raise ValueError( - f"Output directory ({training_args.output_dir}) already exists and is not empty. " - "Use --overwrite_output_dir to overcome." - ) - elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: - logger.info( - f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " - "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." - ) - - # Set seed before initializing model. - set_seed(training_args.seed) - - # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) - # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ - # (the dataset will be downloaded automatically from the datasets Hub - # - # For CSV/JSON files, this script will use the column called 'text' or the first column. You can easily tweak this - # behavior (see below) - # - # In distributed training, the load_dataset function guarantee that only one local process can concurrently - # download the dataset. - if data_args.dataset_name is not None: - # Downloading and loading a dataset from the hub. - raw_datasets = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - if "validation" not in raw_datasets.keys(): - raw_datasets["validation"] = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - split=f"train[:{data_args.validation_split_percentage}%]", - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - raw_datasets["train"] = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - split=f"train[{data_args.validation_split_percentage}%:]", - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - else: - data_files = {} - if data_args.train_file is not None: - data_files["train"] = data_args.train_file - extension = data_args.train_file.split(".")[-1] - if data_args.validation_file is not None: - data_files["validation"] = data_args.validation_file - extension = data_args.validation_file.split(".")[-1] - if extension == "txt": - extension = "text" - raw_datasets = load_dataset( - extension, - data_files=data_files, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - - # If no validation data is there, validation_split_percentage will be used to divide the dataset. - if "validation" not in raw_datasets.keys(): - raw_datasets["validation"] = load_dataset( - extension, - data_files=data_files, - split=f"train[:{data_args.validation_split_percentage}%]", - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - raw_datasets["train"] = load_dataset( - extension, - data_files=data_files, - split=f"train[{data_args.validation_split_percentage}%:]", - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - - # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at - # https://huggingface.co/docs/datasets/loading_datasets.html. - - # Load pretrained model and tokenizer - # - # Distributed training: - # The .from_pretrained methods guarantee that only one local process can concurrently - # download model & vocab. - config_kwargs = { - "cache_dir": model_args.cache_dir, - "revision": model_args.model_revision, - "use_auth_token": True if model_args.use_auth_token else None, - } - if model_args.config_name: - config = AutoConfig.from_pretrained(model_args.config_name, **config_kwargs) - elif model_args.model_name_or_path: - config = AutoConfig.from_pretrained(model_args.model_name_or_path, **config_kwargs) - else: - config = CONFIG_MAPPING[model_args.model_type]() - logger.warning("You are instantiating a new config instance from scratch.") - if model_args.config_overrides is not None: - logger.info(f"Overriding config: {model_args.config_overrides}") - config.update_from_string(model_args.config_overrides) - logger.info(f"New config: {config}") - - tokenizer_kwargs = { - "cache_dir": model_args.cache_dir, - "use_fast": model_args.use_fast_tokenizer, - "revision": model_args.model_revision, - "use_auth_token": True if model_args.use_auth_token else None, - } - if model_args.tokenizer_name: - tokenizer = AutoTokenizer.from_pretrained(model_args.tokenizer_name, **tokenizer_kwargs) - elif model_args.model_name_or_path: - tokenizer = AutoTokenizer.from_pretrained(model_args.model_name_or_path, **tokenizer_kwargs) - else: - raise ValueError( - "You are instantiating a new tokenizer from scratch. This is not supported by this script." - "You can do it from another script, save it, and load it from here, using --tokenizer_name." - ) - - if model_args.model_name_or_path: - model = AutoModelForMaskedLM.from_pretrained( - model_args.model_name_or_path, - from_tf=bool(".ckpt" in model_args.model_name_or_path), - config=config, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - else: - logger.info("Training new model from scratch") - model = AutoModelForMaskedLM.from_config(config) - - # Convert the model into an adapter model - adapters.init(model) - - # We resize the embeddings only when necessary to avoid index errors. If you are creating a model from scratch - # on a small vocab and want a smaller embedding size, remove this test. - embedding_size = model.get_input_embeddings().weight.shape[0] - if len(tokenizer) > embedding_size: - model.resize_token_embeddings(len(tokenizer)) - - # Preprocessing the datasets. - # First we tokenize all the texts. - if training_args.do_train: - column_names = raw_datasets["train"].column_names - else: - column_names = raw_datasets["validation"].column_names - text_column_name = "text" if "text" in column_names else column_names[0] - - if data_args.max_seq_length is None: - max_seq_length = tokenizer.model_max_length - if max_seq_length > 1024: - logger.warning( - f"The tokenizer picked seems to have a very large `model_max_length` ({tokenizer.model_max_length}). " - "Picking 1024 instead. You can change that default value by passing --max_seq_length xxx." - ) - max_seq_length = 1024 - else: - if data_args.max_seq_length > tokenizer.model_max_length: - logger.warning( - f"The max_seq_length passed ({data_args.max_seq_length}) is larger than the maximum length for the" - f"model ({tokenizer.model_max_length}). Using max_seq_length={tokenizer.model_max_length}." - ) - max_seq_length = min(data_args.max_seq_length, tokenizer.model_max_length) - - if data_args.line_by_line: - # When using line_by_line, we just tokenize each nonempty line. - padding = "max_length" if data_args.pad_to_max_length else False - - def tokenize_function(examples): - # Remove empty lines - examples[text_column_name] = [ - line for line in examples[text_column_name] if len(line) > 0 and not line.isspace() - ] - return tokenizer( - examples[text_column_name], - padding=padding, - truncation=True, - max_length=max_seq_length, - # We use this option because DataCollatorForLanguageModeling (see below) is more efficient when it - # receives the `special_tokens_mask`. - return_special_tokens_mask=True, - ) - - with training_args.main_process_first(desc="dataset map tokenization"): - tokenized_datasets = raw_datasets.map( - tokenize_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=[text_column_name], - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on dataset line_by_line", - ) - else: - # Otherwise, we tokenize every text, then concatenate them together before splitting them in smaller parts. - # We use `return_special_tokens_mask=True` because DataCollatorForLanguageModeling (see below) is more - # efficient when it receives the `special_tokens_mask`. - def tokenize_function(examples): - return tokenizer(examples[text_column_name], return_special_tokens_mask=True) - - with training_args.main_process_first(desc="dataset map tokenization"): - tokenized_datasets = raw_datasets.map( - tokenize_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on every text in dataset", - ) - - # Main data processing function that will concatenate all texts from our dataset and generate chunks of - # max_seq_length. - def group_texts(examples): - # Concatenate all texts. - concatenated_examples = {k: list(chain(*examples[k])) for k in examples.keys()} - total_length = len(concatenated_examples[list(examples.keys())[0]]) - # We drop the small remainder, we could add padding if the model supported it instead of this drop, you can - # customize this part to your needs. - if total_length >= max_seq_length: - total_length = (total_length // max_seq_length) * max_seq_length - # Split by chunks of max_len. - result = { - k: [t[i : i + max_seq_length] for i in range(0, total_length, max_seq_length)] - for k, t in concatenated_examples.items() - } - return result - - # Note that with `batched=True`, this map processes 1,000 texts together, so group_texts throws away a - # remainder for each of those groups of 1,000 texts. You can adjust that batch_size here but a higher value - # might be slower to preprocess. - # - # To speed up this part, we use multiprocessing. See the documentation of the map method for more information: - # https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.map - - with training_args.main_process_first(desc="grouping texts together"): - tokenized_datasets = tokenized_datasets.map( - group_texts, - batched=True, - num_proc=data_args.preprocessing_num_workers, - load_from_cache_file=not data_args.overwrite_cache, - desc=f"Grouping texts in chunks of {max_seq_length}", - ) - - if training_args.do_train: - if "train" not in tokenized_datasets: - raise ValueError("--do_train requires a train dataset") - train_dataset = tokenized_datasets["train"] - if data_args.max_train_samples is not None: - max_train_samples = min(len(train_dataset), data_args.max_train_samples) - train_dataset = train_dataset.select(range(max_train_samples)) - - if training_args.do_eval: - if "validation" not in tokenized_datasets: - raise ValueError("--do_eval requires a validation dataset") - eval_dataset = tokenized_datasets["validation"] - if data_args.max_eval_samples is not None: - max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) - eval_dataset = eval_dataset.select(range(max_eval_samples)) - - def preprocess_logits_for_metrics(logits, labels): - if isinstance(logits, tuple): - # Depending on the model and config, logits may contain extra tensors, - # like past_key_values, but logits always come first - logits = logits[0] - return logits.argmax(dim=-1) - - metric = evaluate.load("accuracy") - - def compute_metrics(eval_preds): - preds, labels = eval_preds - # preds have the same shape as the labels, after the argmax(-1) has been calculated - # by preprocess_logits_for_metrics - labels = labels.reshape(-1) - preds = preds.reshape(-1) - mask = labels != -100 - labels = labels[mask] - preds = preds[mask] - return metric.compute(predictions=preds, references=labels) - - # Data collator - # This one will take care of randomly masking the tokens. - pad_to_multiple_of_8 = data_args.line_by_line and training_args.fp16 and not data_args.pad_to_max_length - data_collator = DataCollatorForLanguageModeling( - tokenizer=tokenizer, - mlm_probability=data_args.mlm_probability, - pad_to_multiple_of=8 if pad_to_multiple_of_8 else None, - ) - - # Setup adapters - setup_adapter_training(model, adapter_args, data_args.dataset_name or "mlm") - # Initialize our Trainer - trainer_class = AdapterTrainer if adapter_args.train_adapter else Trainer - trainer = trainer_class( - model=model, - args=training_args, - train_dataset=train_dataset if training_args.do_train else None, - eval_dataset=eval_dataset if training_args.do_eval else None, - tokenizer=tokenizer, - data_collator=data_collator, - compute_metrics=compute_metrics if training_args.do_eval and not is_torch_tpu_available() else None, - preprocess_logits_for_metrics=preprocess_logits_for_metrics - if training_args.do_eval and not is_torch_tpu_available() - else None, - ) - - # Training - if training_args.do_train: - checkpoint = None - if training_args.resume_from_checkpoint is not None: - checkpoint = training_args.resume_from_checkpoint - elif last_checkpoint is not None: - checkpoint = last_checkpoint - train_result = trainer.train(resume_from_checkpoint=checkpoint) - trainer.save_model() # Saves the tokenizer too for easy upload - metrics = train_result.metrics - - max_train_samples = ( - data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) - ) - metrics["train_samples"] = min(max_train_samples, len(train_dataset)) - - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - # Evaluation - if training_args.do_eval: - logger.info("*** Evaluate ***") - - metrics = trainer.evaluate() - - max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) - metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) - try: - perplexity = math.exp(metrics["eval_loss"]) - except OverflowError: - perplexity = float("inf") - metrics["perplexity"] = perplexity - - trainer.log_metrics("eval", metrics) - trainer.save_metrics("eval", metrics) - - kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "fill-mask"} - if data_args.dataset_name is not None: - kwargs["dataset_tags"] = data_args.dataset_name - if data_args.dataset_config_name is not None: - kwargs["dataset_args"] = data_args.dataset_config_name - kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" - else: - kwargs["dataset"] = data_args.dataset_name - - if training_args.push_to_hub: - trainer.push_to_hub(**kwargs) - else: - trainer.create_model_card(**kwargs) - - -def _mp_fn(index): - # For xla_spawn (TPUs) - main() - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/multiple-choice/README.md b/adapters/examples/pytorch/multiple-choice/README.md deleted file mode 100644 index 1aca8eae..00000000 --- a/adapters/examples/pytorch/multiple-choice/README.md +++ /dev/null @@ -1,48 +0,0 @@ - - -# Multiple Choice with Adapters - -## Fine-tuning on SWAG with the Trainer - -`run_swag` allows you to fine-tune any model from our [hub](https://huggingface.co/models) (as long as its architecture as a `ForMultipleChoice` version in the library) on the SWAG dataset or your own csv/jsonlines files as long as they are structured the same way. To make it works on another dataset, you will need to tweak the `preprocess_function` inside the script. - -```bash -python run_swag.py \ ---model_name_or_path roberta-base \ ---do_train \ ---do_eval \ ---learning_rate 5e-5 \ ---num_train_epochs 3 \ ---output_dir /tmp/swag_base \ ---per_gpu_eval_batch_size=16 \ ---per_device_train_batch_size=16 \ ---overwrite_output \ ---train_adapter \ ---adapter_config seq_bn \ ---overwrite_output_dir -``` - -Training with the defined hyper-parameters yields the following results: -``` -***** Eval results ***** -eval_acc = 0.8338998300509847 -eval_loss = 0.44457291918821606 -``` - -## With Accelerate - -We have not adapted the `run_swag_no_trainer.py` script of Hugging Face Transformers to use Adapters. To avoid confusion we have not included the non-adapted version in the examples of Adapters. diff --git a/adapters/examples/pytorch/multiple-choice/requirements.txt b/adapters/examples/pytorch/multiple-choice/requirements.txt deleted file mode 100644 index 3bbfaef3..00000000 --- a/adapters/examples/pytorch/multiple-choice/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -accelerate >= 0.12.0 -sentencepiece != 0.1.92 -protobuf -torch >= 1.3 -evaluate diff --git a/adapters/examples/pytorch/multiple-choice/run_swag.py b/adapters/examples/pytorch/multiple-choice/run_swag.py deleted file mode 100644 index aa321cfc..00000000 --- a/adapters/examples/pytorch/multiple-choice/run_swag.py +++ /dev/null @@ -1,486 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 -# Copyright The HuggingFace Team and The HuggingFace Inc. team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Fine-tuning the library models for multiple choice. -""" -# You can also adapt this script on your own multiple choice task. Pointers for this are left as comments. - -import logging -import os -import sys -from dataclasses import dataclass, field -from itertools import chain -from typing import Optional, Union - -import datasets -import numpy as np -import torch -from datasets import load_dataset - -import adapters -import transformers -from adapters import AdapterArguments, AdapterTrainer, setup_adapter_training -from transformers import ( - AutoConfig, - AutoModelForMultipleChoice, - AutoTokenizer, - HfArgumentParser, - Trainer, - TrainingArguments, - default_data_collator, - set_seed, -) -from transformers.tokenization_utils_base import PreTrainedTokenizerBase -from transformers.trainer_utils import get_last_checkpoint -from transformers.utils import PaddingStrategy, check_min_version - - -# Will error if the minimal version of Transformers is not installed. Remove at your own risks. -check_min_version("4.26.0") - -logger = logging.getLogger(__name__) - - -@dataclass -class ModelArguments: - """ - Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. - """ - - model_name_or_path: str = field( - metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} - ) - config_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} - ) - tokenizer_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} - ) - cache_dir: Optional[str] = field( - default=None, - metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"}, - ) - use_fast_tokenizer: bool = field( - default=True, - metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, - ) - model_revision: str = field( - default="main", - metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, - ) - use_auth_token: bool = field( - default=False, - metadata={ - "help": ( - "Will use the token generated when running `huggingface-cli login` (necessary to use this script " - "with private models)." - ) - }, - ) - - -@dataclass -class DataTrainingArguments: - """ - Arguments pertaining to what data we are going to input our model for training and eval. - """ - - train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a text file)."}) - validation_file: Optional[str] = field( - default=None, - metadata={"help": "An optional input evaluation data file to evaluate the perplexity on (a text file)."}, - ) - overwrite_cache: bool = field( - default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} - ) - preprocessing_num_workers: Optional[int] = field( - default=None, - metadata={"help": "The number of processes to use for the preprocessing."}, - ) - max_seq_length: Optional[int] = field( - default=None, - metadata={ - "help": ( - "The maximum total input sequence length after tokenization. If passed, sequences longer " - "than this will be truncated, sequences shorter will be padded." - ) - }, - ) - pad_to_max_length: bool = field( - default=False, - metadata={ - "help": ( - "Whether to pad all samples to the maximum sentence length. " - "If False, will pad the samples dynamically when batching to the maximum length in the batch. More " - "efficient on GPU but very bad for TPU." - ) - }, - ) - max_train_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of training examples to this " - "value if set." - ) - }, - ) - max_eval_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of evaluation examples to this " - "value if set." - ) - }, - ) - - def __post_init__(self): - if self.train_file is not None: - extension = self.train_file.split(".")[-1] - assert extension in ["csv", "json"], "`train_file` should be a csv or a json file." - if self.validation_file is not None: - extension = self.validation_file.split(".")[-1] - assert extension in ["csv", "json"], "`validation_file` should be a csv or a json file." - - -@dataclass -class DataCollatorForMultipleChoice: - """ - Data collator that will dynamically pad the inputs for multiple choice received. - - Args: - tokenizer ([`PreTrainedTokenizer`] or [`PreTrainedTokenizerFast`]): - The tokenizer used for encoding the data. - padding (`bool`, `str` or [`~utils.PaddingStrategy`], *optional*, defaults to `True`): - Select a strategy to pad the returned sequences (according to the model's padding side and padding index) - among: - - - `True` or `'longest'`: Pad to the longest sequence in the batch (or no padding if only a single sequence - if provided). - - `'max_length'`: Pad to a maximum length specified with the argument `max_length` or to the maximum - acceptable input length for the model if that argument is not provided. - - `False` or `'do_not_pad'` (default): No padding (i.e., can output a batch with sequences of different - lengths). - max_length (`int`, *optional*): - Maximum length of the returned list and optionally padding length (see above). - pad_to_multiple_of (`int`, *optional*): - If set will pad the sequence to a multiple of the provided value. - - This is especially useful to enable the use of Tensor Cores on NVIDIA hardware with compute capability >= - 7.5 (Volta). - """ - - tokenizer: PreTrainedTokenizerBase - padding: Union[bool, str, PaddingStrategy] = True - max_length: Optional[int] = None - pad_to_multiple_of: Optional[int] = None - - def __call__(self, features): - label_name = "label" if "label" in features[0].keys() else "labels" - labels = [feature.pop(label_name) for feature in features] - batch_size = len(features) - num_choices = len(features[0]["input_ids"]) - flattened_features = [ - [{k: v[i] for k, v in feature.items()} for i in range(num_choices)] for feature in features - ] - flattened_features = list(chain(*flattened_features)) - - batch = self.tokenizer.pad( - flattened_features, - padding=self.padding, - max_length=self.max_length, - pad_to_multiple_of=self.pad_to_multiple_of, - return_tensors="pt", - ) - - # Un-flatten - batch = {k: v.view(batch_size, num_choices, -1) for k, v in batch.items()} - # Add back labels - batch["labels"] = torch.tensor(labels, dtype=torch.int64) - return batch - - -def main(): - # See all possible arguments in src/transformers/training_args.py - # or by passing the --help flag to this script. - # We now keep distinct sets of args, for a cleaner separation of concerns. - - parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) - if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): - # If we pass only one argument to the script and it's the path to a json file, - # let's parse it to get our arguments. - model_args, data_args, training_args, adapter_args = parser.parse_json_file( - json_file=os.path.abspath(sys.argv[1]) - ) - else: - model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() - - # Setup logging - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - handlers=[logging.StreamHandler(sys.stdout)], - ) - log_level = training_args.get_process_log_level() - logger.setLevel(log_level) - datasets.utils.logging.set_verbosity(log_level) - transformers.utils.logging.set_verbosity(log_level) - transformers.utils.logging.enable_default_handler() - transformers.utils.logging.enable_explicit_format() - - # Log on each process the small summary: - logger.warning( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" - + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" - ) - logger.info(f"Training/evaluation parameters {training_args}") - - # Detecting last checkpoint. - last_checkpoint = None - if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: - last_checkpoint = get_last_checkpoint(training_args.output_dir) - if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: - raise ValueError( - f"Output directory ({training_args.output_dir}) already exists and is not empty. " - "Use --overwrite_output_dir to overcome." - ) - elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: - logger.info( - f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " - "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." - ) - - # Set seed before initializing model. - set_seed(training_args.seed) - - # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) - # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ - # (the dataset will be downloaded automatically from the datasets Hub). - - # For CSV/JSON files, this script will use the column called 'text' or the first column if no column called - # 'text' is found. You can easily tweak this behavior (see below). - - # In distributed training, the load_dataset function guarantee that only one local process can concurrently - # download the dataset. - if data_args.train_file is not None or data_args.validation_file is not None: - data_files = {} - if data_args.train_file is not None: - data_files["train"] = data_args.train_file - if data_args.validation_file is not None: - data_files["validation"] = data_args.validation_file - extension = data_args.train_file.split(".")[-1] - raw_datasets = load_dataset( - extension, - data_files=data_files, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - else: - # Downloading and loading the swag dataset from the hub. - raw_datasets = load_dataset( - "swag", - "regular", - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at - # https://huggingface.co/docs/datasets/loading_datasets.html. - - # Load pretrained model and tokenizer - - # Distributed training: - # The .from_pretrained methods guarantee that only one local process can concurrently - # download model & vocab. - config = AutoConfig.from_pretrained( - model_args.config_name if model_args.config_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - tokenizer = AutoTokenizer.from_pretrained( - model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - use_fast=model_args.use_fast_tokenizer, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - model = AutoModelForMultipleChoice.from_pretrained( - model_args.model_name_or_path, - from_tf=bool(".ckpt" in model_args.model_name_or_path), - config=config, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - - # Convert the model into an adapter model - adapters.init(model) - - # When using your own dataset or a different dataset from swag, you will probably need to change this. - ending_names = [f"ending{i}" for i in range(4)] - context_name = "sent1" - question_header_name = "sent2" - - if data_args.max_seq_length is None: - max_seq_length = tokenizer.model_max_length - if max_seq_length > 1024: - logger.warning( - f"The tokenizer picked seems to have a very large `model_max_length` ({tokenizer.model_max_length}). " - "Picking 1024 instead. You can change that default value by passing --max_seq_length xxx." - ) - max_seq_length = 1024 - else: - if data_args.max_seq_length > tokenizer.model_max_length: - logger.warning( - f"The max_seq_length passed ({data_args.max_seq_length}) is larger than the maximum length for the" - f"model ({tokenizer.model_max_length}). Using max_seq_length={tokenizer.model_max_length}." - ) - max_seq_length = min(data_args.max_seq_length, tokenizer.model_max_length) - - # Preprocessing the datasets. - def preprocess_function(examples): - first_sentences = [[context] * 4 for context in examples[context_name]] - question_headers = examples[question_header_name] - second_sentences = [ - [f"{header} {examples[end][i]}" for end in ending_names] for i, header in enumerate(question_headers) - ] - - # Flatten out - first_sentences = list(chain(*first_sentences)) - second_sentences = list(chain(*second_sentences)) - - # Tokenize - tokenized_examples = tokenizer( - first_sentences, - second_sentences, - truncation=True, - max_length=max_seq_length, - padding="max_length" if data_args.pad_to_max_length else False, - ) - # Un-flatten - return {k: [v[i : i + 4] for i in range(0, len(v), 4)] for k, v in tokenized_examples.items()} - - if training_args.do_train: - if "train" not in raw_datasets: - raise ValueError("--do_train requires a train dataset") - train_dataset = raw_datasets["train"] - if data_args.max_train_samples is not None: - max_train_samples = min(len(train_dataset), data_args.max_train_samples) - train_dataset = train_dataset.select(range(max_train_samples)) - with training_args.main_process_first(desc="train dataset map pre-processing"): - train_dataset = train_dataset.map( - preprocess_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - load_from_cache_file=not data_args.overwrite_cache, - ) - - if training_args.do_eval: - if "validation" not in raw_datasets: - raise ValueError("--do_eval requires a validation dataset") - eval_dataset = raw_datasets["validation"] - if data_args.max_eval_samples is not None: - max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) - eval_dataset = eval_dataset.select(range(max_eval_samples)) - with training_args.main_process_first(desc="validation dataset map pre-processing"): - eval_dataset = eval_dataset.map( - preprocess_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - load_from_cache_file=not data_args.overwrite_cache, - ) - - # Data collator - data_collator = ( - default_data_collator - if data_args.pad_to_max_length - else DataCollatorForMultipleChoice(tokenizer=tokenizer, pad_to_multiple_of=8 if training_args.fp16 else None) - ) - - # Metric - def compute_metrics(eval_predictions): - predictions, label_ids = eval_predictions - preds = np.argmax(predictions, axis=1) - return {"accuracy": (preds == label_ids).astype(np.float32).mean().item()} - - # Setup adapters - setup_adapter_training(model, adapter_args, "swag") - # Initialize our Trainer - trainer_class = AdapterTrainer if adapter_args.train_adapter else Trainer - trainer = trainer_class( - model=model, - args=training_args, - train_dataset=train_dataset if training_args.do_train else None, - eval_dataset=eval_dataset if training_args.do_eval else None, - tokenizer=tokenizer, - data_collator=data_collator, - compute_metrics=compute_metrics, - ) - - # Training - if training_args.do_train: - checkpoint = None - if training_args.resume_from_checkpoint is not None: - checkpoint = training_args.resume_from_checkpoint - elif last_checkpoint is not None: - checkpoint = last_checkpoint - train_result = trainer.train(resume_from_checkpoint=checkpoint) - trainer.save_model() # Saves the tokenizer too for easy upload - metrics = train_result.metrics - - max_train_samples = ( - data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) - ) - metrics["train_samples"] = min(max_train_samples, len(train_dataset)) - - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - # Evaluation - if training_args.do_eval: - logger.info("*** Evaluate ***") - - metrics = trainer.evaluate() - max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) - metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) - - trainer.log_metrics("eval", metrics) - trainer.save_metrics("eval", metrics) - - kwargs = dict( - finetuned_from=model_args.model_name_or_path, - tasks="multiple-choice", - dataset_tags="swag", - dataset_args="regular", - dataset="SWAG", - language="en", - ) - - if training_args.push_to_hub: - trainer.push_to_hub(**kwargs) - else: - trainer.create_model_card(**kwargs) - - -def _mp_fn(index): - # For xla_spawn (TPUs) - main() - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/question-answering/README.md b/adapters/examples/pytorch/question-answering/README.md deleted file mode 100644 index 7513e025..00000000 --- a/adapters/examples/pytorch/question-answering/README.md +++ /dev/null @@ -1,98 +0,0 @@ - - -# Question answering with Adapters - -> **Note:** We have not adapted the following scripts of Hugging Face Transformers: -> - `run_qa_beam_search_no_trainer.py` -> - `run_qa_no_trainer.py` -> - `run_qa_beam_search.py` -> -> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. - -This folder contains several scripts that showcase how to fine-tune a 🤗 Transformers model on a question answering dataset, -like SQuAD. - -## Trainer-based scripts - -The [`run_qa.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_qa.py), -[`run_qa_beam_search.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_qa_beam_search.py) and [`run_seq2seq_qa.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_seq2seq_qa.py) leverage the 🤗 [Trainer](https://huggingface.co/transformers/main_classes/trainer.html) for fine-tuning. - -### Fine-tuning BERT on SQuAD1.0 - -The [`run_qa.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_qa.py) script -allows to fine-tune any model from our [hub](https://huggingface.co/models) (as long as its architecture has a `ForQuestionAnswering` version in the library) on a question-answering dataset (such as SQuAD, or any other QA dataset available in the `datasets` library, or your own csv/jsonlines files) as long as they are structured the same way as SQuAD. You might need to tweak the data processing inside the script if your data is structured differently. - -**Note:** This script only works with models that have a fast tokenizer (backed by the 🤗 Tokenizers library) as it -uses special features of those tokenizers. You can check if your favorite model has a fast tokenizer in -[this table](https://huggingface.co/transformers/index.html#supported-frameworks), if it doesn't you can still use the old version of the script which can be found [here](https://github.com/huggingface/transformers/tree/main/examples/legacy/question-answering). - -Note that if your dataset contains samples with no possible answers (like SQuAD version 2), you need to pass along the flag `--version_2_with_negative`. - -This example code fine-tunes BERT on the SQuAD1.0 dataset. It runs in 24 min (with BERT-base) or 68 min (with BERT-large) -on a single tesla V100 16GB. - -```bash -python run_qa.py \ - --model_name_or_path bert-base-uncased \ - --dataset_name squad \ - --do_train \ - --do_eval \ - --per_device_train_batch_size 12 \ - --learning_rate 3e-5 \ - --num_train_epochs 2 \ - --max_seq_length 384 \ - --doc_stride 128 \ - --output_dir /tmp/debug_squad/ \ - --train_adapter \ - --adapter_config seq_bn \ - --overwrite_output_dir -``` - -Training with the previously defined hyper-parameters yields the following results: - -```bash -f1 = 88.52 -exact_match = 81.22 -``` - - -### Fine-tuning T5 on SQuAD2.0 - -The [`run_seq2seq_qa.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/question-answering/run_seq2seq_qa.py) script is meant for encoder-decoder (also called seq2seq) Transformer models, such as T5 or BART. These -models are generative, rather than discriminative. This means that they learn to generate the correct answer, rather than predicting the start and end position of the tokens of the answer. - -This example code fine-tunes T5 on the SQuAD2.0 dataset. - -```bash -python run_seq2seq_qa.py \ - --model_name_or_path t5-small \ - --dataset_name squad_v2 \ - --context_column context \ - --question_column question \ - --answer_column answers \ - --do_train \ - --do_eval \ - --per_device_train_batch_size 12 \ - --learning_rate 3e-5 \ - --num_train_epochs 2 \ - --max_seq_length 384 \ - --doc_stride 128 \ - --output_dir /tmp/debug_seq2seq_squad/ \ - --train_adapter \ - --adapter_config seq_bn \ - --overwrite_output_dir -``` diff --git a/adapters/examples/pytorch/question-answering/requirements.txt b/adapters/examples/pytorch/question-answering/requirements.txt deleted file mode 100644 index c8200d86..00000000 --- a/adapters/examples/pytorch/question-answering/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -accelerate >= 0.12.0 -datasets >= 1.8.0 -torch >= 1.3.0 -evaluate \ No newline at end of file diff --git a/adapters/examples/pytorch/question-answering/run_qa.py b/adapters/examples/pytorch/question-answering/run_qa.py deleted file mode 100644 index 8fad43ca..00000000 --- a/adapters/examples/pytorch/question-answering/run_qa.py +++ /dev/null @@ -1,687 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 -# Copyright 2020 The HuggingFace Team All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Fine-tuning the library models for question answering using a slightly adapted version of the 🤗 Trainer. -""" -# You can also adapt this script on your own question answering task. Pointers for this are left as comments. - -import logging -import os -import sys -from dataclasses import dataclass, field -from typing import Optional - -import datasets -from datasets import load_dataset - -import adapters -import evaluate -import transformers -from adapters import AdapterArguments, setup_adapter_training -from trainer_qa import QuestionAnsweringAdapterTrainer, QuestionAnsweringTrainer -from transformers import ( - AutoConfig, - AutoModelForQuestionAnswering, - AutoTokenizer, - DataCollatorWithPadding, - EvalPrediction, - HfArgumentParser, - PreTrainedTokenizerFast, - TrainingArguments, - default_data_collator, - set_seed, -) -from transformers.trainer_utils import get_last_checkpoint -from transformers.utils import check_min_version -from transformers.utils.versions import require_version -from utils_qa import postprocess_qa_predictions - - -# Will error if the minimal version of Transformers is not installed. Remove at your own risks. -check_min_version("4.26.0") - -require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/question-answering/requirements.txt") - -logger = logging.getLogger(__name__) - - -@dataclass -class ModelArguments: - """ - Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. - """ - - model_name_or_path: str = field( - metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} - ) - config_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} - ) - tokenizer_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} - ) - cache_dir: Optional[str] = field( - default=None, - metadata={"help": "Path to directory to store the pretrained models downloaded from huggingface.co"}, - ) - model_revision: str = field( - default="main", - metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, - ) - use_auth_token: bool = field( - default=False, - metadata={ - "help": ( - "Will use the token generated when running `huggingface-cli login` (necessary to use this script " - "with private models)." - ) - }, - ) - - -@dataclass -class DataTrainingArguments: - """ - Arguments pertaining to what data we are going to input our model for training and eval. - """ - - dataset_name: Optional[str] = field( - default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} - ) - dataset_config_name: Optional[str] = field( - default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} - ) - train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a text file)."}) - validation_file: Optional[str] = field( - default=None, - metadata={"help": "An optional input evaluation data file to evaluate the perplexity on (a text file)."}, - ) - test_file: Optional[str] = field( - default=None, - metadata={"help": "An optional input test data file to evaluate the perplexity on (a text file)."}, - ) - overwrite_cache: bool = field( - default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} - ) - preprocessing_num_workers: Optional[int] = field( - default=None, - metadata={"help": "The number of processes to use for the preprocessing."}, - ) - max_seq_length: int = field( - default=384, - metadata={ - "help": ( - "The maximum total input sequence length after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded." - ) - }, - ) - pad_to_max_length: bool = field( - default=True, - metadata={ - "help": ( - "Whether to pad all samples to `max_seq_length`. If False, will pad the samples dynamically when" - " batching to the maximum length in the batch (which can be faster on GPU but will be slower on TPU)." - ) - }, - ) - max_train_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of training examples to this " - "value if set." - ) - }, - ) - max_eval_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of evaluation examples to this " - "value if set." - ) - }, - ) - max_predict_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of prediction examples to this " - "value if set." - ) - }, - ) - version_2_with_negative: bool = field( - default=False, metadata={"help": "If true, some of the examples do not have an answer."} - ) - null_score_diff_threshold: float = field( - default=0.0, - metadata={ - "help": ( - "The threshold used to select the null answer: if the best answer has a score that is less than " - "the score of the null answer minus this threshold, the null answer is selected for this example. " - "Only useful when `version_2_with_negative=True`." - ) - }, - ) - doc_stride: int = field( - default=128, - metadata={"help": "When splitting up a long document into chunks, how much stride to take between chunks."}, - ) - n_best_size: int = field( - default=20, - metadata={"help": "The total number of n-best predictions to generate when looking for an answer."}, - ) - max_answer_length: int = field( - default=30, - metadata={ - "help": ( - "The maximum length of an answer that can be generated. This is needed because the start " - "and end predictions are not conditioned on one another." - ) - }, - ) - - def __post_init__(self): - if ( - self.dataset_name is None - and self.train_file is None - and self.validation_file is None - and self.test_file is None - ): - raise ValueError("Need either a dataset name or a training/validation file/test_file.") - else: - if self.train_file is not None: - extension = self.train_file.split(".")[-1] - assert extension in ["csv", "json"], "`train_file` should be a csv or a json file." - if self.validation_file is not None: - extension = self.validation_file.split(".")[-1] - assert extension in ["csv", "json"], "`validation_file` should be a csv or a json file." - if self.test_file is not None: - extension = self.test_file.split(".")[-1] - assert extension in ["csv", "json"], "`test_file` should be a csv or a json file." - - -def main(): - # See all possible arguments in src/transformers/training_args.py - # or by passing the --help flag to this script. - # We now keep distinct sets of args, for a cleaner separation of concerns. - - parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) - if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): - # If we pass only one argument to the script and it's the path to a json file, - # let's parse it to get our arguments. - model_args, data_args, training_args, adapter_args = parser.parse_json_file( - json_file=os.path.abspath(sys.argv[1]) - ) - else: - model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() - - # Setup logging - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - handlers=[logging.StreamHandler(sys.stdout)], - ) - - log_level = training_args.get_process_log_level() - logger.setLevel(log_level) - datasets.utils.logging.set_verbosity(log_level) - transformers.utils.logging.set_verbosity(log_level) - transformers.utils.logging.enable_default_handler() - transformers.utils.logging.enable_explicit_format() - - # Log on each process the small summary: - logger.warning( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" - + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" - ) - logger.info(f"Training/evaluation parameters {training_args}") - - # Detecting last checkpoint. - last_checkpoint = None - if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: - last_checkpoint = get_last_checkpoint(training_args.output_dir) - if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: - raise ValueError( - f"Output directory ({training_args.output_dir}) already exists and is not empty. " - "Use --overwrite_output_dir to overcome." - ) - elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: - logger.info( - f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " - "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." - ) - - # Set seed before initializing model. - set_seed(training_args.seed) - - # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) - # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ - # (the dataset will be downloaded automatically from the datasets Hub). - # - # For CSV/JSON files, this script will use the column called 'text' or the first column if no column called - # 'text' is found. You can easily tweak this behavior (see below). - # - # In distributed training, the load_dataset function guarantee that only one local process can concurrently - # download the dataset. - if data_args.dataset_name is not None: - # Downloading and loading a dataset from the hub. - raw_datasets = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - else: - data_files = {} - if data_args.train_file is not None: - data_files["train"] = data_args.train_file - extension = data_args.train_file.split(".")[-1] - - if data_args.validation_file is not None: - data_files["validation"] = data_args.validation_file - extension = data_args.validation_file.split(".")[-1] - if data_args.test_file is not None: - data_files["test"] = data_args.test_file - extension = data_args.test_file.split(".")[-1] - raw_datasets = load_dataset( - extension, - data_files=data_files, - field="data", - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at - # https://huggingface.co/docs/datasets/loading_datasets.html. - - # Load pretrained model and tokenizer - # - # Distributed training: - # The .from_pretrained methods guarantee that only one local process can concurrently - # download model & vocab. - config = AutoConfig.from_pretrained( - model_args.config_name if model_args.config_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - tokenizer = AutoTokenizer.from_pretrained( - model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - use_fast=True, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - model = AutoModelForQuestionAnswering.from_pretrained( - model_args.model_name_or_path, - from_tf=bool(".ckpt" in model_args.model_name_or_path), - config=config, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - - # Convert the model into an adapter model - adapters.init(model) - - # Tokenizer check: this script requires a fast tokenizer. - if not isinstance(tokenizer, PreTrainedTokenizerFast): - raise ValueError( - "This example script only works for models that have a fast tokenizer. Checkout the big table of models at" - " https://huggingface.co/transformers/index.html#supported-frameworks to find the model types that meet" - " this requirement" - ) - - # Preprocessing the datasets. - # Preprocessing is slighlty different for training and evaluation. - if training_args.do_train: - column_names = raw_datasets["train"].column_names - elif training_args.do_eval: - column_names = raw_datasets["validation"].column_names - else: - column_names = raw_datasets["test"].column_names - question_column_name = "question" if "question" in column_names else column_names[0] - context_column_name = "context" if "context" in column_names else column_names[1] - answer_column_name = "answers" if "answers" in column_names else column_names[2] - - # Padding side determines if we do (question|context) or (context|question). - pad_on_right = tokenizer.padding_side == "right" - - if data_args.max_seq_length > tokenizer.model_max_length: - logger.warning( - f"The max_seq_length passed ({data_args.max_seq_length}) is larger than the maximum length for the" - f"model ({tokenizer.model_max_length}). Using max_seq_length={tokenizer.model_max_length}." - ) - max_seq_length = min(data_args.max_seq_length, tokenizer.model_max_length) - - # Training preprocessing - def prepare_train_features(examples): - # Some of the questions have lots of whitespace on the left, which is not useful and will make the - # truncation of the context fail (the tokenized question will take a lots of space). So we remove that - # left whitespace - examples[question_column_name] = [q.lstrip() for q in examples[question_column_name]] - - # Tokenize our examples with truncation and maybe padding, but keep the overflows using a stride. This results - # in one example possible giving several features when a context is long, each of those features having a - # context that overlaps a bit the context of the previous feature. - tokenized_examples = tokenizer( - examples[question_column_name if pad_on_right else context_column_name], - examples[context_column_name if pad_on_right else question_column_name], - truncation="only_second" if pad_on_right else "only_first", - max_length=max_seq_length, - stride=data_args.doc_stride, - return_overflowing_tokens=True, - return_offsets_mapping=True, - padding="max_length" if data_args.pad_to_max_length else False, - ) - - # Since one example might give us several features if it has a long context, we need a map from a feature to - # its corresponding example. This key gives us just that. - sample_mapping = tokenized_examples.pop("overflow_to_sample_mapping") - # The offset mappings will give us a map from token to character position in the original context. This will - # help us compute the start_positions and end_positions. - offset_mapping = tokenized_examples.pop("offset_mapping") - - # Let's label those examples! - tokenized_examples["start_positions"] = [] - tokenized_examples["end_positions"] = [] - - for i, offsets in enumerate(offset_mapping): - # We will label impossible answers with the index of the CLS token. - input_ids = tokenized_examples["input_ids"][i] - cls_index = input_ids.index(tokenizer.cls_token_id) - - # Grab the sequence corresponding to that example (to know what is the context and what is the question). - sequence_ids = tokenized_examples.sequence_ids(i) - - # One example can give several spans, this is the index of the example containing this span of text. - sample_index = sample_mapping[i] - answers = examples[answer_column_name][sample_index] - # If no answers are given, set the cls_index as answer. - if len(answers["answer_start"]) == 0: - tokenized_examples["start_positions"].append(cls_index) - tokenized_examples["end_positions"].append(cls_index) - else: - # Start/end character index of the answer in the text. - start_char = answers["answer_start"][0] - end_char = start_char + len(answers["text"][0]) - - # Start token index of the current span in the text. - token_start_index = 0 - while sequence_ids[token_start_index] != (1 if pad_on_right else 0): - token_start_index += 1 - - # End token index of the current span in the text. - token_end_index = len(input_ids) - 1 - while sequence_ids[token_end_index] != (1 if pad_on_right else 0): - token_end_index -= 1 - - # Detect if the answer is out of the span (in which case this feature is labeled with the CLS index). - if not (offsets[token_start_index][0] <= start_char and offsets[token_end_index][1] >= end_char): - tokenized_examples["start_positions"].append(cls_index) - tokenized_examples["end_positions"].append(cls_index) - else: - # Otherwise move the token_start_index and token_end_index to the two ends of the answer. - # Note: we could go after the last offset if the answer is the last word (edge case). - while token_start_index < len(offsets) and offsets[token_start_index][0] <= start_char: - token_start_index += 1 - tokenized_examples["start_positions"].append(token_start_index - 1) - while offsets[token_end_index][1] >= end_char: - token_end_index -= 1 - tokenized_examples["end_positions"].append(token_end_index + 1) - - return tokenized_examples - - if training_args.do_train: - if "train" not in raw_datasets: - raise ValueError("--do_train requires a train dataset") - train_dataset = raw_datasets["train"] - if data_args.max_train_samples is not None: - # We will select sample from whole data if argument is specified - max_train_samples = min(len(train_dataset), data_args.max_train_samples) - train_dataset = train_dataset.select(range(max_train_samples)) - # Create train feature from dataset - with training_args.main_process_first(desc="train dataset map pre-processing"): - train_dataset = train_dataset.map( - prepare_train_features, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on train dataset", - ) - if data_args.max_train_samples is not None: - # Number of samples might increase during Feature Creation, We select only specified max samples - max_train_samples = min(len(train_dataset), data_args.max_train_samples) - train_dataset = train_dataset.select(range(max_train_samples)) - - # Validation preprocessing - def prepare_validation_features(examples): - # Some of the questions have lots of whitespace on the left, which is not useful and will make the - # truncation of the context fail (the tokenized question will take a lots of space). So we remove that - # left whitespace - examples[question_column_name] = [q.lstrip() for q in examples[question_column_name]] - - # Tokenize our examples with truncation and maybe padding, but keep the overflows using a stride. This results - # in one example possible giving several features when a context is long, each of those features having a - # context that overlaps a bit the context of the previous feature. - tokenized_examples = tokenizer( - examples[question_column_name if pad_on_right else context_column_name], - examples[context_column_name if pad_on_right else question_column_name], - truncation="only_second" if pad_on_right else "only_first", - max_length=max_seq_length, - stride=data_args.doc_stride, - return_overflowing_tokens=True, - return_offsets_mapping=True, - padding="max_length" if data_args.pad_to_max_length else False, - ) - - # Since one example might give us several features if it has a long context, we need a map from a feature to - # its corresponding example. This key gives us just that. - sample_mapping = tokenized_examples.pop("overflow_to_sample_mapping") - - # For evaluation, we will need to convert our predictions to substrings of the context, so we keep the - # corresponding example_id and we will store the offset mappings. - tokenized_examples["example_id"] = [] - - for i in range(len(tokenized_examples["input_ids"])): - # Grab the sequence corresponding to that example (to know what is the context and what is the question). - sequence_ids = tokenized_examples.sequence_ids(i) - context_index = 1 if pad_on_right else 0 - - # One example can give several spans, this is the index of the example containing this span of text. - sample_index = sample_mapping[i] - tokenized_examples["example_id"].append(examples["id"][sample_index]) - - # Set to None the offset_mapping that are not part of the context so it's easy to determine if a token - # position is part of the context or not. - tokenized_examples["offset_mapping"][i] = [ - (o if sequence_ids[k] == context_index else None) - for k, o in enumerate(tokenized_examples["offset_mapping"][i]) - ] - - return tokenized_examples - - if training_args.do_eval: - if "validation" not in raw_datasets: - raise ValueError("--do_eval requires a validation dataset") - eval_examples = raw_datasets["validation"] - if data_args.max_eval_samples is not None: - # We will select sample from whole data - max_eval_samples = min(len(eval_examples), data_args.max_eval_samples) - eval_examples = eval_examples.select(range(max_eval_samples)) - # Validation Feature Creation - with training_args.main_process_first(desc="validation dataset map pre-processing"): - eval_dataset = eval_examples.map( - prepare_validation_features, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on validation dataset", - ) - if data_args.max_eval_samples is not None: - # During Feature creation dataset samples might increase, we will select required samples again - max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) - eval_dataset = eval_dataset.select(range(max_eval_samples)) - - if training_args.do_predict: - if "test" not in raw_datasets: - raise ValueError("--do_predict requires a test dataset") - predict_examples = raw_datasets["test"] - if data_args.max_predict_samples is not None: - # We will select sample from whole data - predict_examples = predict_examples.select(range(data_args.max_predict_samples)) - # Predict Feature Creation - with training_args.main_process_first(desc="prediction dataset map pre-processing"): - predict_dataset = predict_examples.map( - prepare_validation_features, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on prediction dataset", - ) - if data_args.max_predict_samples is not None: - # During Feature creation dataset samples might increase, we will select required samples again - max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) - predict_dataset = predict_dataset.select(range(max_predict_samples)) - - # Data collator - # We have already padded to max length if the corresponding flag is True, otherwise we need to pad in the data - # collator. - data_collator = ( - default_data_collator - if data_args.pad_to_max_length - else DataCollatorWithPadding(tokenizer, pad_to_multiple_of=8 if training_args.fp16 else None) - ) - - # Post-processing: - def post_processing_function(examples, features, predictions, stage="eval"): - # Post-processing: we match the start logits and end logits to answers in the original context. - predictions = postprocess_qa_predictions( - examples=examples, - features=features, - predictions=predictions, - version_2_with_negative=data_args.version_2_with_negative, - n_best_size=data_args.n_best_size, - max_answer_length=data_args.max_answer_length, - null_score_diff_threshold=data_args.null_score_diff_threshold, - output_dir=training_args.output_dir, - log_level=log_level, - prefix=stage, - ) - # Format the result to the format the metric expects. - if data_args.version_2_with_negative: - formatted_predictions = [ - {"id": k, "prediction_text": v, "no_answer_probability": 0.0} for k, v in predictions.items() - ] - else: - formatted_predictions = [{"id": k, "prediction_text": v} for k, v in predictions.items()] - - references = [{"id": ex["id"], "answers": ex[answer_column_name]} for ex in examples] - return EvalPrediction(predictions=formatted_predictions, label_ids=references) - - metric = evaluate.load("squad_v2" if data_args.version_2_with_negative else "squad") - - def compute_metrics(p: EvalPrediction): - return metric.compute(predictions=p.predictions, references=p.label_ids) - - # Setup adapters - setup_adapter_training(model, adapter_args, data_args.dataset_name or "squad") - # Initialize our Trainer - trainer_class = QuestionAnsweringAdapterTrainer if adapter_args.train_adapter else QuestionAnsweringTrainer - trainer = trainer_class( - model=model, - args=training_args, - train_dataset=train_dataset if training_args.do_train else None, - eval_dataset=eval_dataset if training_args.do_eval else None, - eval_examples=eval_examples if training_args.do_eval else None, - tokenizer=tokenizer, - data_collator=data_collator, - post_process_function=post_processing_function, - compute_metrics=compute_metrics, - ) - - # Training - if training_args.do_train: - checkpoint = None - if training_args.resume_from_checkpoint is not None: - checkpoint = training_args.resume_from_checkpoint - elif last_checkpoint is not None: - checkpoint = last_checkpoint - train_result = trainer.train(resume_from_checkpoint=checkpoint) - trainer.save_model() # Saves the tokenizer too for easy upload - - metrics = train_result.metrics - max_train_samples = ( - data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) - ) - metrics["train_samples"] = min(max_train_samples, len(train_dataset)) - - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - # Evaluation - if training_args.do_eval: - logger.info("*** Evaluate ***") - metrics = trainer.evaluate() - - max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) - metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) - - trainer.log_metrics("eval", metrics) - trainer.save_metrics("eval", metrics) - - # Prediction - if training_args.do_predict: - logger.info("*** Predict ***") - results = trainer.predict(predict_dataset, predict_examples) - metrics = results.metrics - - max_predict_samples = ( - data_args.max_predict_samples if data_args.max_predict_samples is not None else len(predict_dataset) - ) - metrics["predict_samples"] = min(max_predict_samples, len(predict_dataset)) - - trainer.log_metrics("predict", metrics) - trainer.save_metrics("predict", metrics) - - kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "question-answering"} - if data_args.dataset_name is not None: - kwargs["dataset_tags"] = data_args.dataset_name - if data_args.dataset_config_name is not None: - kwargs["dataset_args"] = data_args.dataset_config_name - kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" - else: - kwargs["dataset"] = data_args.dataset_name - - if training_args.push_to_hub: - trainer.push_to_hub(**kwargs) - else: - trainer.create_model_card(**kwargs) - - -def _mp_fn(index): - # For xla_spawn (TPUs) - main() - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/question-answering/run_seq2seq_qa.py b/adapters/examples/pytorch/question-answering/run_seq2seq_qa.py deleted file mode 100644 index 372d81ca..00000000 --- a/adapters/examples/pytorch/question-answering/run_seq2seq_qa.py +++ /dev/null @@ -1,733 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 -# Copyright 2021 The HuggingFace Team All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Fine-tuning the library's seq2seq models for question answering using the 🤗 Seq2SeqTrainer. -""" -# You can also adapt this script on your own question answering task. Pointers for this are left as comments. - -import logging -import os -import sys -from dataclasses import dataclass, field -from typing import List, Optional, Tuple - -import datasets -from datasets import load_dataset - -import adapters -import evaluate -import transformers -from adapters import AdapterArguments, setup_adapter_training -from trainer_seq2seq_qa import QuestionAnsweringSeq2SeqAdapterTrainer, QuestionAnsweringSeq2SeqTrainer -from transformers import ( - AutoConfig, - AutoModelForSeq2SeqLM, - AutoTokenizer, - DataCollatorForSeq2Seq, - HfArgumentParser, - Seq2SeqTrainingArguments, - set_seed, -) -from transformers.trainer_utils import EvalLoopOutput, EvalPrediction, get_last_checkpoint -from transformers.utils import check_min_version, send_example_telemetry -from transformers.utils.versions import require_version - - -# Will error if the minimal version of Transformers is not installed. Remove at your own risks. -check_min_version("4.26.0") - -require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/question-answering/requirements.txt") - -logger = logging.getLogger(__name__) - - -@dataclass -class ModelArguments: - """ - Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. - """ - - model_name_or_path: str = field( - metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} - ) - config_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} - ) - tokenizer_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} - ) - cache_dir: Optional[str] = field( - default=None, - metadata={"help": "Path to directory to store the pretrained models downloaded from huggingface.co"}, - ) - use_fast_tokenizer: bool = field( - default=True, - metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, - ) - model_revision: str = field( - default="main", - metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, - ) - use_auth_token: bool = field( - default=False, - metadata={ - "help": ( - "Will use the token generated when running `huggingface-cli login` (necessary to use this script " - "with private models)." - ) - }, - ) - - -@dataclass -class DataTrainingArguments: - """ - Arguments pertaining to what data we are going to input our model for training and eval. - """ - - dataset_name: Optional[str] = field( - default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} - ) - dataset_config_name: Optional[str] = field( - default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} - ) - context_column: Optional[str] = field( - default="context", - metadata={"help": "The name of the column in the datasets containing the contexts (for question answering)."}, - ) - question_column: Optional[str] = field( - default="question", - metadata={"help": "The name of the column in the datasets containing the questions (for question answering)."}, - ) - answer_column: Optional[str] = field( - default="answers", - metadata={"help": "The name of the column in the datasets containing the answers (for question answering)."}, - ) - train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a text file)."}) - validation_file: Optional[str] = field( - default=None, - metadata={"help": "An optional input evaluation data file to evaluate the perplexity on (a text file)."}, - ) - test_file: Optional[str] = field( - default=None, - metadata={"help": "An optional input test data file to evaluate the perplexity on (a text file)."}, - ) - overwrite_cache: bool = field( - default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} - ) - preprocessing_num_workers: Optional[int] = field( - default=None, - metadata={"help": "The number of processes to use for the preprocessing."}, - ) - max_seq_length: int = field( - default=384, - metadata={ - "help": ( - "The maximum total input sequence length after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded." - ) - }, - ) - max_answer_length: int = field( - default=30, - metadata={ - "help": ( - "The maximum length of an answer that can be generated. This is needed because the start " - "and end predictions are not conditioned on one another." - ) - }, - ) - val_max_answer_length: Optional[int] = field( - default=None, - metadata={ - "help": ( - "The maximum total sequence length for validation target text after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded. Will default to `max_answer_length`." - "This argument is also used to override the ``max_length`` param of ``model.generate``, which is used " - "during ``evaluate`` and ``predict``." - ) - }, - ) - pad_to_max_length: bool = field( - default=True, - metadata={ - "help": ( - "Whether to pad all samples to `max_seq_length`. If False, will pad the samples dynamically when" - " batching to the maximum length in the batch (which can be faster on GPU but will be slower on TPU)." - ) - }, - ) - max_train_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of training examples to this " - "value if set." - ) - }, - ) - max_eval_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of evaluation examples to this " - "value if set." - ) - }, - ) - max_predict_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of prediction examples to this " - "value if set." - ) - }, - ) - version_2_with_negative: bool = field( - default=False, metadata={"help": "If true, some of the examples do not have an answer."} - ) - null_score_diff_threshold: float = field( - default=0.0, - metadata={ - "help": ( - "The threshold used to select the null answer: if the best answer has a score that is less than " - "the score of the null answer minus this threshold, the null answer is selected for this example. " - "Only useful when `version_2_with_negative=True`." - ) - }, - ) - doc_stride: int = field( - default=128, - metadata={"help": "When splitting up a long document into chunks, how much stride to take between chunks."}, - ) - n_best_size: int = field( - default=20, - metadata={"help": "The total number of n-best predictions to generate when looking for an answer."}, - ) - num_beams: Optional[int] = field( - default=None, - metadata={ - "help": ( - "Number of beams to use for evaluation. This argument will be passed to ``model.generate``, " - "which is used during ``evaluate`` and ``predict``." - ) - }, - ) - ignore_pad_token_for_loss: bool = field( - default=True, - metadata={ - "help": "Whether to ignore the tokens corresponding to padded labels in the loss computation or not." - }, - ) - - def __post_init__(self): - if ( - self.dataset_name is None - and self.train_file is None - and self.validation_file is None - and self.test_file is None - ): - raise ValueError("Need either a dataset name or a training/validation file/test_file.") - else: - if self.train_file is not None: - extension = self.train_file.split(".")[-1] - assert extension in ["csv", "json"], "`train_file` should be a csv or a json file." - if self.validation_file is not None: - extension = self.validation_file.split(".")[-1] - assert extension in ["csv", "json"], "`validation_file` should be a csv or a json file." - if self.test_file is not None: - extension = self.test_file.split(".")[-1] - assert extension in ["csv", "json"], "`test_file` should be a csv or a json file." - if self.val_max_answer_length is None: - self.val_max_answer_length = self.max_answer_length - - -question_answering_column_name_mapping = { - "squad_v2": ("question", "context", "answer"), -} - - -def main(): - # See all possible arguments in src/transformers/training_args.py - # or by passing the --help flag to this script. - # We now keep distinct sets of args, for a cleaner separation of concerns. - - parser = HfArgumentParser((ModelArguments, DataTrainingArguments, Seq2SeqTrainingArguments, AdapterArguments)) - if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): - # If we pass only one argument to the script and it's the path to a json file, - # let's parse it to get our arguments. - model_args, data_args, training_args, adapter_args = parser.parse_json_file( - json_file=os.path.abspath(sys.argv[1]) - ) - else: - model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() - - # Sending telemetry. Tracking the example usage helps us better allocate resources to maintain them. The - # information sent is the one passed as arguments along with your Python/PyTorch versions. - send_example_telemetry("run_seq2seq_qa", model_args, data_args) - - # Setup logging - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - handlers=[logging.StreamHandler(sys.stdout)], - ) - - log_level = training_args.get_process_log_level() - logger.setLevel(log_level) - datasets.utils.logging.set_verbosity(log_level) - transformers.utils.logging.set_verbosity(log_level) - transformers.utils.logging.enable_default_handler() - transformers.utils.logging.enable_explicit_format() - - # Log on each process the small summary: - logger.warning( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" - + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" - ) - logger.info(f"Training/evaluation parameters {training_args}") - - # Detecting last checkpoint. - last_checkpoint = None - if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: - last_checkpoint = get_last_checkpoint(training_args.output_dir) - if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: - raise ValueError( - f"Output directory ({training_args.output_dir}) already exists and is not empty. " - "Use --overwrite_output_dir to overcome." - ) - elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: - logger.info( - f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " - "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." - ) - - # Set seed before initializing model. - set_seed(training_args.seed) - - # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) - # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ - # (the dataset will be downloaded automatically from the datasets Hub). - # - # For CSV/JSON files, this script will use the column called 'text' or the first column if no column called - # 'text' is found. You can easily tweak this behavior (see below). - # - # In distributed training, the load_dataset function guarantee that only one local process can concurrently - # download the dataset. - if data_args.dataset_name is not None: - # Downloading and loading a dataset from the hub. - raw_datasets = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - else: - data_files = {} - if data_args.train_file is not None: - data_files["train"] = data_args.train_file - extension = data_args.train_file.split(".")[-1] - if data_args.validation_file is not None: - data_files["validation"] = data_args.validation_file - extension = data_args.validation_file.split(".")[-1] - if data_args.test_file is not None: - data_files["test"] = data_args.test_file - extension = data_args.test_file.split(".")[-1] - raw_datasets = load_dataset( - extension, - data_files=data_files, - field="data", - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at - # https://huggingface.co/docs/datasets/loading_datasets.html. - - # Load pretrained model and tokenizer - # - # Distributed training: - # The .from_pretrained methods guarantee that only one local process can concurrently - # download model & vocab. - config = AutoConfig.from_pretrained( - model_args.config_name if model_args.config_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - tokenizer = AutoTokenizer.from_pretrained( - model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - use_fast=model_args.use_fast_tokenizer, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - model = AutoModelForSeq2SeqLM.from_pretrained( - model_args.model_name_or_path, - from_tf=bool(".ckpt" in model_args.model_name_or_path), - config=config, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - - # Convert the model into an adapter model - adapters.init(model) - - # We resize the embeddings only when necessary to avoid index errors. If you are creating a model from scratch - # on a small vocab and want a smaller embedding size, remove this test. - embedding_size = model.get_input_embeddings().weight.shape[0] - if len(tokenizer) > embedding_size: - model.resize_token_embeddings(len(tokenizer)) - - if model.config.decoder_start_token_id is None: - raise ValueError("Make sure that `config.decoder_start_token_id` is correctly defined") - - # Preprocessing the datasets. - # We need to generate and tokenize inputs and targets. - if training_args.do_train: - column_names = raw_datasets["train"].column_names - elif training_args.do_eval: - column_names = raw_datasets["validation"].column_names - elif training_args.do_predict: - column_names = raw_datasets["test"].column_names - else: - logger.info("There is nothing to do. Please pass `do_train`, `do_eval` and/or `do_predict`.") - return - - # Get the column names for input/target. - dataset_columns = question_answering_column_name_mapping.get(data_args.dataset_name, None) - if data_args.question_column is None: - question_column = dataset_columns[0] if dataset_columns is not None else column_names[0] - else: - question_column = data_args.question_column - if question_column not in column_names: - raise ValueError( - f"--question_column' value '{data_args.question_column}' needs to be one of: {', '.join(column_names)}" - ) - if data_args.context_column is None: - context_column = dataset_columns[1] if dataset_columns is not None else column_names[1] - else: - context_column = data_args.context_column - if context_column not in column_names: - raise ValueError( - f"--context_column' value '{data_args.context_column}' needs to be one of: {', '.join(column_names)}" - ) - if data_args.answer_column is None: - answer_column = dataset_columns[2] if dataset_columns is not None else column_names[2] - else: - answer_column = data_args.answer_column - if answer_column not in column_names: - raise ValueError( - f"--answer_column' value '{data_args.answer_column}' needs to be one of: {', '.join(column_names)}" - ) - - # Temporarily set max_answer_length for training. - max_answer_length = data_args.max_answer_length - padding = "max_length" if data_args.pad_to_max_length else False - - if training_args.label_smoothing_factor > 0 and not hasattr(model, "prepare_decoder_input_ids_from_labels"): - logger.warning( - "label_smoothing is enabled but the `prepare_decoder_input_ids_from_labels` method is not defined for" - f"`{model.__class__.__name__}`. This will lead to loss being calculated twice and will take up more memory" - ) - - if data_args.max_seq_length > tokenizer.model_max_length: - logger.warning( - f"The max_seq_length passed ({data_args.max_seq_length}) is larger than the maximum length for the" - f"model ({tokenizer.model_max_length}). Using max_seq_length={tokenizer.model_max_length}." - ) - max_seq_length = min(data_args.max_seq_length, tokenizer.model_max_length) - - def preprocess_squad_batch( - examples, - question_column: str, - context_column: str, - answer_column: str, - ) -> Tuple[List[str], List[str]]: - questions = examples[question_column] - contexts = examples[context_column] - answers = examples[answer_column] - - def generate_input(_question, _context): - return " ".join(["question:", _question.lstrip(), "context:", _context.lstrip()]) - - inputs = [generate_input(question, context) for question, context in zip(questions, contexts)] - targets = [answer["text"][0] if len(answer["text"]) > 0 else "" for answer in answers] - return inputs, targets - - def preprocess_function(examples): - inputs, targets = preprocess_squad_batch(examples, question_column, context_column, answer_column) - - model_inputs = tokenizer(inputs, max_length=max_seq_length, padding=padding, truncation=True) - # Tokenize targets with text_target=... - labels = tokenizer(text_target=targets, max_length=max_answer_length, padding=padding, truncation=True) - - # If we are padding here, replace all tokenizer.pad_token_id in the labels by -100 when we want to ignore - # padding in the loss. - if padding == "max_length" and data_args.ignore_pad_token_for_loss: - labels["input_ids"] = [ - [(l if l != tokenizer.pad_token_id else -100) for l in label] for label in labels["input_ids"] - ] - - model_inputs["labels"] = labels["input_ids"] - return model_inputs - - # Validation preprocessing - def preprocess_validation_function(examples): - inputs, targets = preprocess_squad_batch(examples, question_column, context_column, answer_column) - - model_inputs = tokenizer( - inputs, - max_length=max_seq_length, - padding=padding, - truncation=True, - return_overflowing_tokens=True, - return_offsets_mapping=True, - ) - # Tokenize targets with the `text_target` keyword argument - labels = tokenizer(text_target=targets, max_length=max_answer_length, padding=padding, truncation=True) - - # If we are padding here, replace all tokenizer.pad_token_id in the labels by -100 when we want to ignore - # padding in the loss. - if padding == "max_length" and data_args.ignore_pad_token_for_loss: - labels["input_ids"] = [ - [(l if l != tokenizer.pad_token_id else -100) for l in label] for label in labels["input_ids"] - ] - - # Since one example might give us several features if it has a long context, we need a map from a feature to - # its corresponding example. This key gives us just that. - sample_mapping = model_inputs.pop("overflow_to_sample_mapping") - - # For evaluation, we will need to convert our predictions to substrings of the context, so we keep the - # corresponding example_id and we will store the offset mappings. - model_inputs["example_id"] = [] - # Augment the overflowing tokens to the labels - labels_out = [] - - for i in range(len(model_inputs["input_ids"])): - # One example can give several spans, this is the index of the example containing this span of text. - sample_index = sample_mapping[i] - model_inputs["example_id"].append(examples["id"][sample_index]) - labels_out.append(labels["input_ids"][sample_index]) - - model_inputs["labels"] = labels_out - return model_inputs - - if training_args.do_train: - if "train" not in raw_datasets: - raise ValueError("--do_train requires a train dataset") - train_dataset = raw_datasets["train"] - if data_args.max_train_samples is not None: - # We will select sample from whole data if agument is specified - max_train_samples = min(len(train_dataset), data_args.max_train_samples) - train_dataset = train_dataset.select(range(max_train_samples)) - # Create train feature from dataset - with training_args.main_process_first(desc="train dataset map pre-processing"): - train_dataset = train_dataset.map( - preprocess_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on train dataset", - ) - if data_args.max_train_samples is not None: - # Number of samples might increase during Feature Creation, We select only specified max samples - max_train_samples = min(len(train_dataset), data_args.max_train_samples) - train_dataset = train_dataset.select(range(max_train_samples)) - - if training_args.do_eval: - if "validation" not in raw_datasets: - raise ValueError("--do_eval requires a validation dataset") - eval_examples = raw_datasets["validation"] - if data_args.max_eval_samples is not None: - # We will select sample from whole data - max_eval_samples = min(len(eval_examples), data_args.max_eval_samples) - eval_examples = eval_examples.select(range(max_eval_samples)) - # Validation Feature Creation - with training_args.main_process_first(desc="validation dataset map pre-processing"): - eval_dataset = eval_examples.map( - preprocess_validation_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on validation dataset", - ) - if data_args.max_eval_samples is not None: - # During Feature creation dataset samples might increase, we will select required samples again - max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) - eval_dataset = eval_dataset.select(range(max_eval_samples)) - - if training_args.do_predict: - if "test" not in raw_datasets: - raise ValueError("--do_predict requires a test dataset") - predict_examples = raw_datasets["test"] - if data_args.max_predict_samples is not None: - # We will select sample from whole data - predict_examples = predict_examples.select(range(data_args.max_predict_samples)) - # Predict Feature Creation - with training_args.main_process_first(desc="prediction dataset map pre-processing"): - predict_dataset = predict_examples.map( - preprocess_validation_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on prediction dataset", - ) - if data_args.max_predict_samples is not None: - # During Feature creation dataset samples might increase, we will select required samples again - max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) - predict_dataset = predict_dataset.select(range(max_predict_samples)) - - # Data collator - label_pad_token_id = -100 if data_args.ignore_pad_token_for_loss else tokenizer.pad_token_id - data_collator = DataCollatorForSeq2Seq( - tokenizer, - model=model, - label_pad_token_id=label_pad_token_id, - pad_to_multiple_of=8 if training_args.fp16 else None, - ) - - metric = evaluate.load("squad_v2" if data_args.version_2_with_negative else "squad") - - def compute_metrics(p: EvalPrediction): - return metric.compute(predictions=p.predictions, references=p.label_ids) - - # Post-processing: - def post_processing_function( - examples: datasets.Dataset, features: datasets.Dataset, outputs: EvalLoopOutput, stage="eval" - ): - # Decode the predicted tokens. - preds = outputs.predictions - if isinstance(preds, tuple): - preds = preds[0] - decoded_preds = tokenizer.batch_decode(preds, skip_special_tokens=True) - - # Build a map example to its corresponding features. - example_id_to_index = {k: i for i, k in enumerate(examples["id"])} - feature_per_example = {example_id_to_index[feature["example_id"]]: i for i, feature in enumerate(features)} - predictions = {} - # Let's loop over all the examples! - for example_index, example in enumerate(examples): - # This is the index of the feature associated to the current example. - feature_index = feature_per_example[example_index] - predictions[example["id"]] = decoded_preds[feature_index] - - # Format the result to the format the metric expects. - if data_args.version_2_with_negative: - formatted_predictions = [ - {"id": k, "prediction_text": v, "no_answer_probability": 0.0} for k, v in predictions.items() - ] - else: - formatted_predictions = [{"id": k, "prediction_text": v} for k, v in predictions.items()] - - references = [{"id": ex["id"], "answers": ex[answer_column]} for ex in examples] - return EvalPrediction(predictions=formatted_predictions, label_ids=references) - - # Setup adapters - setup_adapter_training(model, adapter_args, data_args.dataset_name or "mlm") - - # Initialize our Trainer - trainer_class = ( - QuestionAnsweringSeq2SeqAdapterTrainer if adapter_args.train_adapter else QuestionAnsweringSeq2SeqTrainer - ) - trainer = trainer_class( - model=model, - args=training_args, - train_dataset=train_dataset if training_args.do_train else None, - eval_dataset=eval_dataset if training_args.do_eval else None, - eval_examples=eval_examples if training_args.do_eval else None, - tokenizer=tokenizer, - data_collator=data_collator, - compute_metrics=compute_metrics if training_args.predict_with_generate else None, - post_process_function=post_processing_function, - ) - - # Training - if training_args.do_train: - checkpoint = None - if training_args.resume_from_checkpoint is not None: - checkpoint = training_args.resume_from_checkpoint - elif last_checkpoint is not None: - checkpoint = last_checkpoint - train_result = trainer.train(resume_from_checkpoint=checkpoint) - trainer.save_model() # Saves the tokenizer too for easy upload - - metrics = train_result.metrics - max_train_samples = ( - data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) - ) - metrics["train_samples"] = min(max_train_samples, len(train_dataset)) - - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - # Evaluation - results = {} - max_length = ( - training_args.generation_max_length - if training_args.generation_max_length is not None - else data_args.val_max_answer_length - ) - num_beams = data_args.num_beams if data_args.num_beams is not None else training_args.generation_num_beams - if training_args.do_eval: - logger.info("*** Evaluate ***") - metrics = trainer.evaluate(max_length=max_length, num_beams=num_beams, metric_key_prefix="eval") - - max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) - metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) - - trainer.log_metrics("eval", metrics) - trainer.save_metrics("eval", metrics) - - # Prediction - if training_args.do_predict: - logger.info("*** Predict ***") - results = trainer.predict(predict_dataset, predict_examples) - metrics = results.metrics - - max_predict_samples = ( - data_args.max_predict_samples if data_args.max_predict_samples is not None else len(predict_dataset) - ) - metrics["predict_samples"] = min(max_predict_samples, len(predict_dataset)) - - trainer.log_metrics("predict", metrics) - trainer.save_metrics("predict", metrics) - - if training_args.push_to_hub: - kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "question-answering"} - if data_args.dataset_name is not None: - kwargs["dataset_tags"] = data_args.dataset_name - if data_args.dataset_config_name is not None: - kwargs["dataset_args"] = data_args.dataset_config_name - kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" - else: - kwargs["dataset"] = data_args.dataset_name - - trainer.push_to_hub(**kwargs) - - -def _mp_fn(index): - # For xla_spawn (TPUs) - main() - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/question-answering/trainer_qa.py b/adapters/examples/pytorch/question-answering/trainer_qa.py deleted file mode 100644 index 8622175d..00000000 --- a/adapters/examples/pytorch/question-answering/trainer_qa.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding=utf-8 -# Copyright 2020 The HuggingFace Team All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -A subclass of `Trainer` specific to Question-Answering tasks -""" -import math -import time - -from adapters.trainer import AdapterTrainer -from transformers import Trainer, is_torch_tpu_available -from transformers.trainer_utils import PredictionOutput, speed_metrics - - -if is_torch_tpu_available(check_device=False): - import torch_xla.core.xla_model as xm - import torch_xla.debug.metrics as met - - -class QuestionAnsweringTrainer(Trainer): - def __init__(self, *args, eval_examples=None, post_process_function=None, **kwargs): - super().__init__(*args, **kwargs) - self.eval_examples = eval_examples - self.post_process_function = post_process_function - - def evaluate(self, eval_dataset=None, eval_examples=None, ignore_keys=None, metric_key_prefix: str = "eval"): - eval_dataset = self.eval_dataset if eval_dataset is None else eval_dataset - eval_dataloader = self.get_eval_dataloader(eval_dataset) - eval_examples = self.eval_examples if eval_examples is None else eval_examples - - # Temporarily disable metric computation, we will do it in the loop here. - compute_metrics = self.compute_metrics - self.compute_metrics = None - eval_loop = self.prediction_loop if self.args.use_legacy_prediction_loop else self.evaluation_loop - start_time = time.time() - try: - output = eval_loop( - eval_dataloader, - description="Evaluation", - # No point gathering the predictions if there are no metrics, otherwise we defer to - # self.args.prediction_loss_only - prediction_loss_only=True if compute_metrics is None else None, - ignore_keys=ignore_keys, - metric_key_prefix=metric_key_prefix, - ) - finally: - self.compute_metrics = compute_metrics - total_batch_size = self.args.eval_batch_size * self.args.world_size - if f"{metric_key_prefix}_jit_compilation_time" in output.metrics: - start_time += output.metrics[f"{metric_key_prefix}_jit_compilation_time"] - output.metrics.update( - speed_metrics( - metric_key_prefix, - start_time, - num_samples=output.num_samples, - num_steps=math.ceil(output.num_samples / total_batch_size), - ) - ) - if self.post_process_function is not None and self.compute_metrics is not None and self.args.should_save: - # Only the main node write the results by default - eval_preds = self.post_process_function(eval_examples, eval_dataset, output.predictions) - metrics = self.compute_metrics(eval_preds) - - # Prefix all keys with metric_key_prefix + '_' - for key in list(metrics.keys()): - if not key.startswith(f"{metric_key_prefix}_"): - metrics[f"{metric_key_prefix}_{key}"] = metrics.pop(key) - metrics.update(output.metrics) - else: - metrics = output.metrics - - if self.args.should_log: - # Only the main node log the results by default - self.log(metrics) - - if self.args.tpu_metrics_debug or self.args.debug: - # tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.) - xm.master_print(met.metrics_report()) - - self.control = self.callback_handler.on_evaluate(self.args, self.state, self.control, metrics) - return metrics - - def predict(self, predict_dataset, predict_examples, ignore_keys=None, metric_key_prefix: str = "test"): - predict_dataloader = self.get_test_dataloader(predict_dataset) - - # Temporarily disable metric computation, we will do it in the loop here. - compute_metrics = self.compute_metrics - self.compute_metrics = None - eval_loop = self.prediction_loop if self.args.use_legacy_prediction_loop else self.evaluation_loop - start_time = time.time() - try: - output = eval_loop( - predict_dataloader, - description="Prediction", - # No point gathering the predictions if there are no metrics, otherwise we defer to - # self.args.prediction_loss_only - prediction_loss_only=True if compute_metrics is None else None, - ignore_keys=ignore_keys, - metric_key_prefix=metric_key_prefix, - ) - finally: - self.compute_metrics = compute_metrics - total_batch_size = self.args.eval_batch_size * self.args.world_size - if f"{metric_key_prefix}_jit_compilation_time" in output.metrics: - start_time += output.metrics[f"{metric_key_prefix}_jit_compilation_time"] - output.metrics.update( - speed_metrics( - metric_key_prefix, - start_time, - num_samples=output.num_samples, - num_steps=math.ceil(output.num_samples / total_batch_size), - ) - ) - - if self.post_process_function is None or self.compute_metrics is None: - return output - - predictions = self.post_process_function(predict_examples, predict_dataset, output.predictions, "predict") - metrics = self.compute_metrics(predictions) - - # Prefix all keys with metric_key_prefix + '_' - for key in list(metrics.keys()): - if not key.startswith(f"{metric_key_prefix}_"): - metrics[f"{metric_key_prefix}_{key}"] = metrics.pop(key) - metrics.update(output.metrics) - return PredictionOutput(predictions=predictions.predictions, label_ids=predictions.label_ids, metrics=metrics) - - -class QuestionAnsweringAdapterTrainer(QuestionAnsweringTrainer, AdapterTrainer): - pass diff --git a/adapters/examples/pytorch/question-answering/trainer_seq2seq_qa.py b/adapters/examples/pytorch/question-answering/trainer_seq2seq_qa.py deleted file mode 100644 index 00d1d260..00000000 --- a/adapters/examples/pytorch/question-answering/trainer_seq2seq_qa.py +++ /dev/null @@ -1,167 +0,0 @@ -# coding=utf-8 -# Copyright 2021 The HuggingFace Team All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -A subclass of `Trainer` specific to Question-Answering tasks -""" -import math -import time -from typing import Dict, List, Optional - -from torch.utils.data import Dataset - -from adapters import AdapterTrainer -from transformers import Seq2SeqTrainer, is_torch_tpu_available -from transformers.trainer_utils import PredictionOutput, speed_metrics - - -if is_torch_tpu_available(check_device=False): - import torch_xla.core.xla_model as xm - import torch_xla.debug.metrics as met - - -class QuestionAnsweringSeq2SeqTrainer(Seq2SeqTrainer): - def __init__(self, *args, eval_examples=None, post_process_function=None, **kwargs): - super().__init__(*args, **kwargs) - self.eval_examples = eval_examples - self.post_process_function = post_process_function - - # def evaluate(self, eval_dataset=None, eval_examples=None, ignore_keys=None, metric_key_prefix: str = "eval"): - def evaluate( - self, - eval_dataset: Optional[Dataset] = None, - eval_examples=None, - ignore_keys: Optional[List[str]] = None, - metric_key_prefix: str = "eval", - **gen_kwargs, - ) -> Dict[str, float]: - gen_kwargs = gen_kwargs.copy() - gen_kwargs["max_length"] = ( - gen_kwargs["max_length"] if gen_kwargs.get("max_length") is not None else self.args.generation_max_length - ) - gen_kwargs["num_beams"] = ( - gen_kwargs["num_beams"] if gen_kwargs.get("num_beams") is not None else self.args.generation_num_beams - ) - self._gen_kwargs = gen_kwargs - - eval_dataset = self.eval_dataset if eval_dataset is None else eval_dataset - eval_dataloader = self.get_eval_dataloader(eval_dataset) - eval_examples = self.eval_examples if eval_examples is None else eval_examples - - # Temporarily disable metric computation, we will do it in the loop here. - compute_metrics = self.compute_metrics - self.compute_metrics = None - start_time = time.time() - eval_loop = self.prediction_loop if self.args.use_legacy_prediction_loop else self.evaluation_loop - try: - output = eval_loop( - eval_dataloader, - description="Evaluation", - # No point gathering the predictions if there are no metrics, otherwise we defer to - # self.args.prediction_loss_only - prediction_loss_only=True if compute_metrics is None else None, - ignore_keys=ignore_keys, - metric_key_prefix=metric_key_prefix, - ) - finally: - self.compute_metrics = compute_metrics - total_batch_size = self.args.eval_batch_size * self.args.world_size - if f"{metric_key_prefix}_jit_compilation_time" in output.metrics: - start_time += output.metrics[f"{metric_key_prefix}_jit_compilation_time"] - output.metrics.update( - speed_metrics( - metric_key_prefix, - start_time, - num_samples=output.num_samples, - num_steps=math.ceil(output.num_samples / total_batch_size), - ) - ) - - if self.post_process_function is not None and self.compute_metrics is not None and self.args.should_save: - # Only the main node write the results by default - eval_preds = self.post_process_function(eval_examples, eval_dataset, output) - metrics = self.compute_metrics(eval_preds) - - # Prefix all keys with metric_key_prefix + '_' - for key in list(metrics.keys()): - if not key.startswith(f"{metric_key_prefix}_"): - metrics[f"{metric_key_prefix}_{key}"] = metrics.pop(key) - - metrics.update(output.metrics) - else: - metrics = output.metrics - - if self.args.should_log: - # Only the main node log the results by default - self.log(metrics) - - if self.args.tpu_metrics_debug or self.args.debug: - # tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.) - xm.master_print(met.metrics_report()) - - self.control = self.callback_handler.on_evaluate(self.args, self.state, self.control, metrics) - return metrics - - def predict( - self, predict_dataset, predict_examples, ignore_keys=None, metric_key_prefix: str = "test", **gen_kwargs - ): - self._gen_kwargs = gen_kwargs.copy() - - predict_dataloader = self.get_test_dataloader(predict_dataset) - - # Temporarily disable metric computation, we will do it in the loop here. - compute_metrics = self.compute_metrics - self.compute_metrics = None - start_time = time.time() - eval_loop = self.prediction_loop if self.args.use_legacy_prediction_loop else self.evaluation_loop - try: - output = eval_loop( - predict_dataloader, - description="Prediction", - # No point gathering the predictions if there are no metrics, otherwise we defer to - # self.args.prediction_loss_only - prediction_loss_only=True if compute_metrics is None else None, - ignore_keys=ignore_keys, - metric_key_prefix=metric_key_prefix, - ) - finally: - self.compute_metrics = compute_metrics - - total_batch_size = self.args.eval_batch_size * self.args.world_size - if f"{metric_key_prefix}_jit_compilation_time" in output.metrics: - start_time += output.metrics[f"{metric_key_prefix}_jit_compilation_time"] - output.metrics.update( - speed_metrics( - metric_key_prefix, - start_time, - num_samples=output.num_samples, - num_steps=math.ceil(output.num_samples / total_batch_size), - ) - ) - if self.post_process_function is None or self.compute_metrics is None: - return output - - predictions = self.post_process_function(predict_examples, predict_dataset, output, "predict") - metrics = self.compute_metrics(predictions) - - # Prefix all keys with metric_key_prefix + '_' - for key in list(metrics.keys()): - if not key.startswith(f"{metric_key_prefix}_"): - metrics[f"{metric_key_prefix}_{key}"] = metrics.pop(key) - metrics.update(output.metrics) - return PredictionOutput(predictions=predictions.predictions, label_ids=predictions.label_ids, metrics=metrics) - - -class QuestionAnsweringSeq2SeqAdapterTrainer(QuestionAnsweringSeq2SeqTrainer, AdapterTrainer): - pass diff --git a/adapters/examples/pytorch/question-answering/utils_qa.py b/adapters/examples/pytorch/question-answering/utils_qa.py deleted file mode 100644 index bf4d7c0a..00000000 --- a/adapters/examples/pytorch/question-answering/utils_qa.py +++ /dev/null @@ -1,439 +0,0 @@ -# coding=utf-8 -# Copyright 2020 The HuggingFace Team All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Post-processing utilities for question answering. -""" -import collections -import json -import logging -import os -from typing import Optional, Tuple - -import numpy as np -from tqdm.auto import tqdm - - -logger = logging.getLogger(__name__) - - -def postprocess_qa_predictions( - examples, - features, - predictions: Tuple[np.ndarray, np.ndarray], - version_2_with_negative: bool = False, - n_best_size: int = 20, - max_answer_length: int = 30, - null_score_diff_threshold: float = 0.0, - output_dir: Optional[str] = None, - prefix: Optional[str] = None, - log_level: Optional[int] = logging.WARNING, -): - """ - Post-processes the predictions of a question-answering model to convert them to answers that are substrings of the - original contexts. This is the base postprocessing functions for models that only return start and end logits. - - Args: - examples: The non-preprocessed dataset (see the main script for more information). - features: The processed dataset (see the main script for more information). - predictions (:obj:`Tuple[np.ndarray, np.ndarray]`): - The predictions of the model: two arrays containing the start logits and the end logits respectively. Its - first dimension must match the number of elements of :obj:`features`. - version_2_with_negative (:obj:`bool`, `optional`, defaults to :obj:`False`): - Whether or not the underlying dataset contains examples with no answers. - n_best_size (:obj:`int`, `optional`, defaults to 20): - The total number of n-best predictions to generate when looking for an answer. - max_answer_length (:obj:`int`, `optional`, defaults to 30): - The maximum length of an answer that can be generated. This is needed because the start and end predictions - are not conditioned on one another. - null_score_diff_threshold (:obj:`float`, `optional`, defaults to 0): - The threshold used to select the null answer: if the best answer has a score that is less than the score of - the null answer minus this threshold, the null answer is selected for this example (note that the score of - the null answer for an example giving several features is the minimum of the scores for the null answer on - each feature: all features must be aligned on the fact they `want` to predict a null answer). - - Only useful when :obj:`version_2_with_negative` is :obj:`True`. - output_dir (:obj:`str`, `optional`): - If provided, the dictionaries of predictions, n_best predictions (with their scores and logits) and, if - :obj:`version_2_with_negative=True`, the dictionary of the scores differences between best and null - answers, are saved in `output_dir`. - prefix (:obj:`str`, `optional`): - If provided, the dictionaries mentioned above are saved with `prefix` added to their names. - log_level (:obj:`int`, `optional`, defaults to ``logging.WARNING``): - ``logging`` log level (e.g., ``logging.WARNING``) - """ - assert len(predictions) == 2, "`predictions` should be a tuple with two elements (start_logits, end_logits)." - all_start_logits, all_end_logits = predictions - - assert len(predictions[0]) == len(features), f"Got {len(predictions[0])} predictions and {len(features)} features." - - # Build a map example to its corresponding features. - example_id_to_index = {k: i for i, k in enumerate(examples["id"])} - features_per_example = collections.defaultdict(list) - for i, feature in enumerate(features): - features_per_example[example_id_to_index[feature["example_id"]]].append(i) - - # The dictionaries we have to fill. - all_predictions = collections.OrderedDict() - all_nbest_json = collections.OrderedDict() - if version_2_with_negative: - scores_diff_json = collections.OrderedDict() - - # Logging. - logger.setLevel(log_level) - logger.info(f"Post-processing {len(examples)} example predictions split into {len(features)} features.") - - # Let's loop over all the examples! - for example_index, example in enumerate(tqdm(examples)): - # Those are the indices of the features associated to the current example. - feature_indices = features_per_example[example_index] - - min_null_prediction = None - prelim_predictions = [] - - # Looping through all the features associated to the current example. - for feature_index in feature_indices: - # We grab the predictions of the model for this feature. - start_logits = all_start_logits[feature_index] - end_logits = all_end_logits[feature_index] - # This is what will allow us to map some the positions in our logits to span of texts in the original - # context. - offset_mapping = features[feature_index]["offset_mapping"] - # Optional `token_is_max_context`, if provided we will remove answers that do not have the maximum context - # available in the current feature. - token_is_max_context = features[feature_index].get("token_is_max_context", None) - - # Update minimum null prediction. - feature_null_score = start_logits[0] + end_logits[0] - if min_null_prediction is None or min_null_prediction["score"] > feature_null_score: - min_null_prediction = { - "offsets": (0, 0), - "score": feature_null_score, - "start_logit": start_logits[0], - "end_logit": end_logits[0], - } - - # Go through all possibilities for the `n_best_size` greater start and end logits. - start_indexes = np.argsort(start_logits)[-1 : -n_best_size - 1 : -1].tolist() - end_indexes = np.argsort(end_logits)[-1 : -n_best_size - 1 : -1].tolist() - for start_index in start_indexes: - for end_index in end_indexes: - # Don't consider out-of-scope answers, either because the indices are out of bounds or correspond - # to part of the input_ids that are not in the context. - if ( - start_index >= len(offset_mapping) - or end_index >= len(offset_mapping) - or offset_mapping[start_index] is None - or len(offset_mapping[start_index]) < 2 - or offset_mapping[end_index] is None - or len(offset_mapping[end_index]) < 2 - ): - continue - # Don't consider answers with a length that is either < 0 or > max_answer_length. - if end_index < start_index or end_index - start_index + 1 > max_answer_length: - continue - # Don't consider answer that don't have the maximum context available (if such information is - # provided). - if token_is_max_context is not None and not token_is_max_context.get(str(start_index), False): - continue - - prelim_predictions.append( - { - "offsets": (offset_mapping[start_index][0], offset_mapping[end_index][1]), - "score": start_logits[start_index] + end_logits[end_index], - "start_logit": start_logits[start_index], - "end_logit": end_logits[end_index], - } - ) - if version_2_with_negative and min_null_prediction is not None: - # Add the minimum null prediction - prelim_predictions.append(min_null_prediction) - null_score = min_null_prediction["score"] - - # Only keep the best `n_best_size` predictions. - predictions = sorted(prelim_predictions, key=lambda x: x["score"], reverse=True)[:n_best_size] - - # Add back the minimum null prediction if it was removed because of its low score. - if ( - version_2_with_negative - and min_null_prediction is not None - and not any(p["offsets"] == (0, 0) for p in predictions) - ): - predictions.append(min_null_prediction) - - # Use the offsets to gather the answer text in the original context. - context = example["context"] - for pred in predictions: - offsets = pred.pop("offsets") - pred["text"] = context[offsets[0] : offsets[1]] - - # In the very rare edge case we have not a single non-null prediction, we create a fake prediction to avoid - # failure. - if len(predictions) == 0 or (len(predictions) == 1 and predictions[0]["text"] == ""): - predictions.insert(0, {"text": "empty", "start_logit": 0.0, "end_logit": 0.0, "score": 0.0}) - - # Compute the softmax of all scores (we do it with numpy to stay independent from torch/tf in this file, using - # the LogSumExp trick). - scores = np.array([pred.pop("score") for pred in predictions]) - exp_scores = np.exp(scores - np.max(scores)) - probs = exp_scores / exp_scores.sum() - - # Include the probabilities in our predictions. - for prob, pred in zip(probs, predictions): - pred["probability"] = prob - - # Pick the best prediction. If the null answer is not possible, this is easy. - if not version_2_with_negative: - all_predictions[example["id"]] = predictions[0]["text"] - else: - # Otherwise we first need to find the best non-empty prediction. - i = 0 - while predictions[i]["text"] == "": - i += 1 - best_non_null_pred = predictions[i] - - # Then we compare to the null prediction using the threshold. - score_diff = null_score - best_non_null_pred["start_logit"] - best_non_null_pred["end_logit"] - scores_diff_json[example["id"]] = float(score_diff) # To be JSON-serializable. - if score_diff > null_score_diff_threshold: - all_predictions[example["id"]] = "" - else: - all_predictions[example["id"]] = best_non_null_pred["text"] - - # Make `predictions` JSON-serializable by casting np.float back to float. - all_nbest_json[example["id"]] = [ - {k: (float(v) if isinstance(v, (np.float16, np.float32, np.float64)) else v) for k, v in pred.items()} - for pred in predictions - ] - - # If we have an output_dir, let's save all those dicts. - if output_dir is not None: - assert os.path.isdir(output_dir), f"{output_dir} is not a directory." - - prediction_file = os.path.join( - output_dir, "predictions.json" if prefix is None else f"{prefix}_predictions.json" - ) - nbest_file = os.path.join( - output_dir, "nbest_predictions.json" if prefix is None else f"{prefix}_nbest_predictions.json" - ) - if version_2_with_negative: - null_odds_file = os.path.join( - output_dir, "null_odds.json" if prefix is None else f"{prefix}_null_odds.json" - ) - - logger.info(f"Saving predictions to {prediction_file}.") - with open(prediction_file, "w") as writer: - writer.write(json.dumps(all_predictions, indent=4) + "\n") - logger.info(f"Saving nbest_preds to {nbest_file}.") - with open(nbest_file, "w") as writer: - writer.write(json.dumps(all_nbest_json, indent=4) + "\n") - if version_2_with_negative: - logger.info(f"Saving null_odds to {null_odds_file}.") - with open(null_odds_file, "w") as writer: - writer.write(json.dumps(scores_diff_json, indent=4) + "\n") - - return all_predictions - - -def postprocess_qa_predictions_with_beam_search( - examples, - features, - predictions: Tuple[np.ndarray, np.ndarray], - version_2_with_negative: bool = False, - n_best_size: int = 20, - max_answer_length: int = 30, - start_n_top: int = 5, - end_n_top: int = 5, - output_dir: Optional[str] = None, - prefix: Optional[str] = None, - log_level: Optional[int] = logging.WARNING, -): - """ - Post-processes the predictions of a question-answering model with beam search to convert them to answers that are substrings of the - original contexts. This is the postprocessing functions for models that return start and end logits, indices, as well as - cls token predictions. - - Args: - examples: The non-preprocessed dataset (see the main script for more information). - features: The processed dataset (see the main script for more information). - predictions (:obj:`Tuple[np.ndarray, np.ndarray]`): - The predictions of the model: two arrays containing the start logits and the end logits respectively. Its - first dimension must match the number of elements of :obj:`features`. - version_2_with_negative (:obj:`bool`, `optional`, defaults to :obj:`False`): - Whether or not the underlying dataset contains examples with no answers. - n_best_size (:obj:`int`, `optional`, defaults to 20): - The total number of n-best predictions to generate when looking for an answer. - max_answer_length (:obj:`int`, `optional`, defaults to 30): - The maximum length of an answer that can be generated. This is needed because the start and end predictions - are not conditioned on one another. - start_n_top (:obj:`int`, `optional`, defaults to 5): - The number of top start logits too keep when searching for the :obj:`n_best_size` predictions. - end_n_top (:obj:`int`, `optional`, defaults to 5): - The number of top end logits too keep when searching for the :obj:`n_best_size` predictions. - output_dir (:obj:`str`, `optional`): - If provided, the dictionaries of predictions, n_best predictions (with their scores and logits) and, if - :obj:`version_2_with_negative=True`, the dictionary of the scores differences between best and null - answers, are saved in `output_dir`. - prefix (:obj:`str`, `optional`): - If provided, the dictionaries mentioned above are saved with `prefix` added to their names. - log_level (:obj:`int`, `optional`, defaults to ``logging.WARNING``): - ``logging`` log level (e.g., ``logging.WARNING``) - """ - assert len(predictions) == 5, "`predictions` should be a tuple with five elements." - start_top_log_probs, start_top_index, end_top_log_probs, end_top_index, cls_logits = predictions - - assert len(predictions[0]) == len( - features - ), f"Got {len(predictions[0])} predicitions and {len(features)} features." - - # Build a map example to its corresponding features. - example_id_to_index = {k: i for i, k in enumerate(examples["id"])} - features_per_example = collections.defaultdict(list) - for i, feature in enumerate(features): - features_per_example[example_id_to_index[feature["example_id"]]].append(i) - - # The dictionaries we have to fill. - all_predictions = collections.OrderedDict() - all_nbest_json = collections.OrderedDict() - scores_diff_json = collections.OrderedDict() if version_2_with_negative else None - - # Logging. - logger.setLevel(log_level) - logger.info(f"Post-processing {len(examples)} example predictions split into {len(features)} features.") - - # Let's loop over all the examples! - for example_index, example in enumerate(tqdm(examples)): - # Those are the indices of the features associated to the current example. - feature_indices = features_per_example[example_index] - - min_null_score = None - prelim_predictions = [] - - # Looping through all the features associated to the current example. - for feature_index in feature_indices: - # We grab the predictions of the model for this feature. - start_log_prob = start_top_log_probs[feature_index] - start_indexes = start_top_index[feature_index] - end_log_prob = end_top_log_probs[feature_index] - end_indexes = end_top_index[feature_index] - feature_null_score = cls_logits[feature_index] - # This is what will allow us to map some the positions in our logits to span of texts in the original - # context. - offset_mapping = features[feature_index]["offset_mapping"] - # Optional `token_is_max_context`, if provided we will remove answers that do not have the maximum context - # available in the current feature. - token_is_max_context = features[feature_index].get("token_is_max_context", None) - - # Update minimum null prediction - if min_null_score is None or feature_null_score < min_null_score: - min_null_score = feature_null_score - - # Go through all possibilities for the `n_start_top`/`n_end_top` greater start and end logits. - for i in range(start_n_top): - for j in range(end_n_top): - start_index = int(start_indexes[i]) - j_index = i * end_n_top + j - end_index = int(end_indexes[j_index]) - # Don't consider out-of-scope answers (last part of the test should be unnecessary because of the - # p_mask but let's not take any risk) - if ( - start_index >= len(offset_mapping) - or end_index >= len(offset_mapping) - or offset_mapping[start_index] is None - or len(offset_mapping[start_index]) < 2 - or offset_mapping[end_index] is None - or len(offset_mapping[end_index]) < 2 - ): - continue - - # Don't consider answers with a length negative or > max_answer_length. - if end_index < start_index or end_index - start_index + 1 > max_answer_length: - continue - # Don't consider answer that don't have the maximum context available (if such information is - # provided). - if token_is_max_context is not None and not token_is_max_context.get(str(start_index), False): - continue - prelim_predictions.append( - { - "offsets": (offset_mapping[start_index][0], offset_mapping[end_index][1]), - "score": start_log_prob[i] + end_log_prob[j_index], - "start_log_prob": start_log_prob[i], - "end_log_prob": end_log_prob[j_index], - } - ) - - # Only keep the best `n_best_size` predictions. - predictions = sorted(prelim_predictions, key=lambda x: x["score"], reverse=True)[:n_best_size] - - # Use the offsets to gather the answer text in the original context. - context = example["context"] - for pred in predictions: - offsets = pred.pop("offsets") - pred["text"] = context[offsets[0] : offsets[1]] - - # In the very rare edge case we have not a single non-null prediction, we create a fake prediction to avoid - # failure. - if len(predictions) == 0: - # Without predictions min_null_score is going to be None and None will cause an exception later - min_null_score = -2e-6 - predictions.insert(0, {"text": "", "start_logit": -1e-6, "end_logit": -1e-6, "score": min_null_score}) - - # Compute the softmax of all scores (we do it with numpy to stay independent from torch/tf in this file, using - # the LogSumExp trick). - scores = np.array([pred.pop("score") for pred in predictions]) - exp_scores = np.exp(scores - np.max(scores)) - probs = exp_scores / exp_scores.sum() - - # Include the probabilities in our predictions. - for prob, pred in zip(probs, predictions): - pred["probability"] = prob - - # Pick the best prediction and set the probability for the null answer. - all_predictions[example["id"]] = predictions[0]["text"] - if version_2_with_negative: - scores_diff_json[example["id"]] = float(min_null_score) - - # Make `predictions` JSON-serializable by casting np.float back to float. - all_nbest_json[example["id"]] = [ - {k: (float(v) if isinstance(v, (np.float16, np.float32, np.float64)) else v) for k, v in pred.items()} - for pred in predictions - ] - - # If we have an output_dir, let's save all those dicts. - if output_dir is not None: - assert os.path.isdir(output_dir), f"{output_dir} is not a directory." - - prediction_file = os.path.join( - output_dir, "predictions.json" if prefix is None else f"{prefix}_predictions.json" - ) - nbest_file = os.path.join( - output_dir, "nbest_predictions.json" if prefix is None else f"{prefix}_nbest_predictions.json" - ) - if version_2_with_negative: - null_odds_file = os.path.join( - output_dir, "null_odds.json" if prefix is None else f"{prefix}_null_odds.json" - ) - - logger.info(f"Saving predictions to {prediction_file}.") - with open(prediction_file, "w") as writer: - writer.write(json.dumps(all_predictions, indent=4) + "\n") - logger.info(f"Saving nbest_preds to {nbest_file}.") - with open(nbest_file, "w") as writer: - writer.write(json.dumps(all_nbest_json, indent=4) + "\n") - if version_2_with_negative: - logger.info(f"Saving null_odds to {null_odds_file}.") - with open(null_odds_file, "w") as writer: - writer.write(json.dumps(scores_diff_json, indent=4) + "\n") - - return all_predictions, scores_diff_json diff --git a/adapters/examples/pytorch/summarization/README.md b/adapters/examples/pytorch/summarization/README.md deleted file mode 100644 index ecc89e96..00000000 --- a/adapters/examples/pytorch/summarization/README.md +++ /dev/null @@ -1,148 +0,0 @@ - - -## Summarization with Adapters - -> **Note:** We have not adapted the following scripts of Hugging Face Transformers: -> - `run_summarization_no_trainer.py` -> -> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. - - -This directory contains examples for finetuning and evaluating transformers on summarization tasks. -Please tag @patil-suraj with any issues/unexpected behaviors, or send a PR! -For deprecated `bertabs` instructions, see [`bertabs/README.md`](https://github.com/huggingface/transformers/blob/main/examples/research_projects/bertabs/README.md). -For the old `finetune_trainer.py` and related utils, see [`examples/legacy/seq2seq`](https://github.com/huggingface/transformers/blob/main/examples/legacy/seq2seq). - -### Supported Architectures - -- `BartForConditionalGeneration` -- `FSMTForConditionalGeneration` (translation only) -- `MBartForConditionalGeneration` -- `MarianMTModel` -- `PegasusForConditionalGeneration` -- `T5ForConditionalGeneration` -- `MT5ForConditionalGeneration` - -`run_summarization.py` is a lightweight example of how to download and preprocess a dataset from the [🤗 Datasets](https://github.com/huggingface/datasets) library or use your own files (jsonlines or csv), then fine-tune one of the architectures above on it. - -For custom datasets in `jsonlines` format please see: https://huggingface.co/docs/datasets/loading_datasets.html#json-files -and you also will find examples of these below. - -## With Trainer - -Here is an example on a summarization task: -```bash -python run_summarization.py \ - --model_name_or_path t5-small \ - --do_train \ - --do_eval \ - --dataset_name cnn_dailymail \ - --dataset_config "3.0.0" \ - --source_prefix "summarize: " \ - --output_dir /tmp/tst-summarization \ - --per_device_train_batch_size=4 \ - --per_device_eval_batch_size=4 \ - --overwrite_output_dir \ - --predict_with_generate \ - --train_adapter \ - --adapter_config seq_bn \ - --overwrite_output_dir -``` - -Only T5 models `t5-small`, `t5-base`, `t5-large`, `t5-3b` and `t5-11b` must use an additional argument: `--source_prefix "summarize: "`. - -We used CNN/DailyMail dataset in this example as `t5-small` was trained on it and one can get good scores even when pre-training with a very small sample. - -Extreme Summarization (XSum) Dataset is another commonly used dataset for the task of summarization. To use it replace `--dataset_name cnn_dailymail --dataset_config "3.0.0"` with `--dataset_name xsum`. - -And here is how you would use it on your own files, after adjusting the values for the arguments -`--train_file`, `--validation_file`, `--text_column` and `--summary_column` to match your setup: - -```bash -python examples/pytorch/summarization/run_summarization.py \ - --model_name_or_path t5-small \ - --do_train \ - --do_eval \ - --train_file path_to_csv_or_jsonlines_file \ - --validation_file path_to_csv_or_jsonlines_file \ - --source_prefix "summarize: " \ - --output_dir /tmp/tst-summarization \ - --overwrite_output_dir \ - --per_device_train_batch_size=4 \ - --per_device_eval_batch_size=4 \ - --predict_with_generate \ - --train_adapter \ - --adapter_config seq_bn \ - --overwrite_output_dir -``` - -The task of summarization supports custom CSV and JSONLINES formats. - -#### Custom CSV Files - -If it's a csv file the training and validation files should have a column for the inputs texts and a column for the summaries. - -If the csv file has just two columns as in the following example: - -```csv -text,summary -"I'm sitting here in a boring room. It's just another rainy Sunday afternoon. I'm wasting my time I got nothing to do. I'm hanging around I'm waiting for you. But nothing ever happens. And I wonder","I'm sitting in a room where I'm waiting for something to happen" -"I see trees so green, red roses too. I see them bloom for me and you. And I think to myself what a wonderful world. I see skies so blue and clouds so white. The bright blessed day, the dark sacred night. And I think to myself what a wonderful world.","I'm a gardener and I'm a big fan of flowers." -"Christmas time is here. Happiness and cheer. Fun for all that children call. Their favorite time of the year. Snowflakes in the air. Carols everywhere. Olden times and ancient rhymes. Of love and dreams to share","It's that time of year again." -``` - -The first column is assumed to be for `text` and the second is for summary. - -If the csv file has multiple columns, you can then specify the names of the columns to use: - -```bash - --text_column text_column_name \ - --summary_column summary_column_name \ -``` - -For example if the columns were: - -```csv -id,date,text,summary -``` - -and you wanted to select only `text` and `summary`, then you'd pass these additional arguments: - -```bash - --text_column text \ - --summary_column summary \ -``` - -#### Custom JSONLINES Files - -The second supported format is jsonlines. Here is an example of a jsonlines custom data file. - - -```json -{"text": "I'm sitting here in a boring room. It's just another rainy Sunday afternoon. I'm wasting my time I got nothing to do. I'm hanging around I'm waiting for you. But nothing ever happens. And I wonder", "summary": "I'm sitting in a room where I'm waiting for something to happen"} -{"text": "I see trees so green, red roses too. I see them bloom for me and you. And I think to myself what a wonderful world. I see skies so blue and clouds so white. The bright blessed day, the dark sacred night. And I think to myself what a wonderful world.", "summary": "I'm a gardener and I'm a big fan of flowers."} -{"text": "Christmas time is here. Happiness and cheer. Fun for all that children call. Their favorite time of the year. Snowflakes in the air. Carols everywhere. Olden times and ancient rhymes. Of love and dreams to share", "summary": "It's that time of year again."} -``` - -Same as with the CSV files, by default the first value will be used as the text record and the second as the summary record. Therefore you can use any key names for the entries, in this example `text` and `summary` were used. - -And as with the CSV files, you can specify which values to select from the file, by explicitly specifying the corresponding key names. In our example this again would be: - -```bash - --text_column text \ - --summary_column summary \ -``` diff --git a/adapters/examples/pytorch/summarization/requirements.txt b/adapters/examples/pytorch/summarization/requirements.txt deleted file mode 100644 index efc06747..00000000 --- a/adapters/examples/pytorch/summarization/requirements.txt +++ /dev/null @@ -1,9 +0,0 @@ -accelerate >= 0.12.0 -datasets >= 1.8.0 -sentencepiece != 0.1.92 -protobuf -rouge-score -nltk -py7zr -torch >= 1.3 -evaluate diff --git a/adapters/examples/pytorch/summarization/run_summarization.py b/adapters/examples/pytorch/summarization/run_summarization.py deleted file mode 100644 index df4ad644..00000000 --- a/adapters/examples/pytorch/summarization/run_summarization.py +++ /dev/null @@ -1,759 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 -# Copyright 2021 The HuggingFace Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Fine-tuning the library models for sequence to sequence. -""" -# You can also adapt this script on your own sequence to sequence task. Pointers for this are left as comments. - -import logging -import os -import sys -from dataclasses import dataclass, field -from typing import Optional - -import datasets -import nltk # Here to have a nice missing dependency error message early on -import numpy as np -from datasets import load_dataset - -import adapters -import evaluate -import transformers -from adapters import AdapterArguments, Seq2SeqAdapterTrainer, setup_adapter_training -from filelock import FileLock -from transformers import ( - AutoConfig, - AutoModelForSeq2SeqLM, - AutoTokenizer, - DataCollatorForSeq2Seq, - EarlyStoppingCallback, - HfArgumentParser, - MBart50Tokenizer, - MBart50TokenizerFast, - MBartTokenizer, - MBartTokenizerFast, - Seq2SeqTrainer, - Seq2SeqTrainingArguments, - set_seed, -) -from transformers.trainer_utils import get_last_checkpoint -from transformers.utils import check_min_version, is_offline_mode -from transformers.utils.versions import require_version - - -# Will error if the minimal version of Transformers is not installed. Remove at your own risks. -check_min_version("4.26.0") - -require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/summarization/requirements.txt") - -logger = logging.getLogger(__name__) - -try: - nltk.data.find("tokenizers/punkt") -except (LookupError, OSError): - if is_offline_mode(): - raise LookupError( - "Offline mode: run this script without TRANSFORMERS_OFFLINE first to download nltk data files" - ) - with FileLock(".lock") as lock: - nltk.download("punkt", quiet=True) - -# A list of all multilingual tokenizer which require lang attribute. -MULTILINGUAL_TOKENIZERS = [MBartTokenizer, MBartTokenizerFast, MBart50Tokenizer, MBart50TokenizerFast] - - -@dataclass -class ModelArguments: - """ - Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. - """ - - model_name_or_path: str = field( - metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} - ) - config_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} - ) - tokenizer_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} - ) - cache_dir: Optional[str] = field( - default=None, - metadata={"help": "Where to store the pretrained models downloaded from huggingface.co"}, - ) - use_fast_tokenizer: bool = field( - default=True, - metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, - ) - model_revision: str = field( - default="main", - metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, - ) - use_auth_token: bool = field( - default=False, - metadata={ - "help": ( - "Will use the token generated when running `huggingface-cli login` (necessary to use this script " - "with private models)." - ) - }, - ) - resize_position_embeddings: Optional[bool] = field( - default=None, - metadata={ - "help": ( - "Whether to automatically resize the position embeddings if `max_source_length` exceeds " - "the model's position embeddings." - ) - }, - ) - - -@dataclass -class DataTrainingArguments: - """ - Arguments pertaining to what data we are going to input our model for training and eval. - """ - - lang: Optional[str] = field(default=None, metadata={"help": "Language id for summarization."}) - - dataset_name: Optional[str] = field( - default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} - ) - dataset_config_name: Optional[str] = field( - default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} - ) - text_column: Optional[str] = field( - default=None, - metadata={"help": "The name of the column in the datasets containing the full texts (for summarization)."}, - ) - summary_column: Optional[str] = field( - default=None, - metadata={"help": "The name of the column in the datasets containing the summaries (for summarization)."}, - ) - train_file: Optional[str] = field( - default=None, metadata={"help": "The input training data file (a jsonlines or csv file)."} - ) - validation_file: Optional[str] = field( - default=None, - metadata={ - "help": ( - "An optional input evaluation data file to evaluate the metrics (rouge) on (a jsonlines or csv file)." - ) - }, - ) - test_file: Optional[str] = field( - default=None, - metadata={ - "help": "An optional input test data file to evaluate the metrics (rouge) on (a jsonlines or csv file)." - }, - ) - overwrite_cache: bool = field( - default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} - ) - preprocessing_num_workers: Optional[int] = field( - default=None, - metadata={"help": "The number of processes to use for the preprocessing."}, - ) - max_source_length: Optional[int] = field( - default=1024, - metadata={ - "help": ( - "The maximum total input sequence length after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded." - ) - }, - ) - max_target_length: Optional[int] = field( - default=128, - metadata={ - "help": ( - "The maximum total sequence length for target text after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded." - ) - }, - ) - val_max_target_length: Optional[int] = field( - default=None, - metadata={ - "help": ( - "The maximum total sequence length for validation target text after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded. Will default to `max_target_length`." - "This argument is also used to override the ``max_length`` param of ``model.generate``, which is used " - "during ``evaluate`` and ``predict``." - ) - }, - ) - pad_to_max_length: bool = field( - default=False, - metadata={ - "help": ( - "Whether to pad all samples to model maximum sentence length. " - "If False, will pad the samples dynamically when batching to the maximum length in the batch. More " - "efficient on GPU but very bad for TPU." - ) - }, - ) - max_train_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of training examples to this " - "value if set." - ) - }, - ) - max_eval_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of evaluation examples to this " - "value if set." - ) - }, - ) - max_predict_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of prediction examples to this " - "value if set." - ) - }, - ) - num_beams: Optional[int] = field( - default=None, - metadata={ - "help": ( - "Number of beams to use for evaluation. This argument will be passed to ``model.generate``, " - "which is used during ``evaluate`` and ``predict``." - ) - }, - ) - ignore_pad_token_for_loss: bool = field( - default=True, - metadata={ - "help": "Whether to ignore the tokens corresponding to padded labels in the loss computation or not." - }, - ) - source_prefix: Optional[str] = field( - default="", metadata={"help": "A prefix to add before every source text (useful for T5 models)."} - ) - - forced_bos_token: Optional[str] = field( - default=None, - metadata={ - "help": ( - "The token to force as the first generated token after the decoder_start_token_id." - "Useful for multilingual models like mBART where the first generated token" - "needs to be the target language token (Usually it is the target language token)" - ) - }, - ) - patience: Optional[int] = field( - default=None, - metadata={ - "help": ( - "Stop training when the metric specified for `metric_for_best_model` worsend for `patience` number of" - " evaluation calls." - ) - }, - ) - - def __post_init__(self): - if self.dataset_name is None and self.train_file is None and self.validation_file is None: - raise ValueError("Need either a dataset name or a training/validation file.") - else: - if self.train_file is not None: - extension = self.train_file.split(".")[-1] - assert extension in ["csv", "json"], "`train_file` should be a csv or a json file." - if self.validation_file is not None: - extension = self.validation_file.split(".")[-1] - assert extension in ["csv", "json"], "`validation_file` should be a csv or a json file." - if self.val_max_target_length is None: - self.val_max_target_length = self.max_target_length - - -summarization_name_mapping = { - "amazon_reviews_multi": ("review_body", "review_title"), - "big_patent": ("description", "abstract"), - "cnn_dailymail": ("article", "highlights"), - "orange_sum": ("text", "summary"), - "pn_summary": ("article", "summary"), - "psc": ("extract_text", "summary_text"), - "samsum": ("dialogue", "summary"), - "thaisum": ("body", "summary"), - "xglue": ("news_body", "news_title"), - "xsum": ("document", "summary"), - "wiki_summary": ("article", "highlights"), - "multi_news": ("document", "summary"), -} - - -def main(): - # See all possible arguments in src/transformers/training_args.py - # or by passing the --help flag to this script. - # We now keep distinct sets of args, for a cleaner separation of concerns. - - parser = HfArgumentParser((ModelArguments, DataTrainingArguments, Seq2SeqTrainingArguments, AdapterArguments)) - if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): - # If we pass only one argument to the script and it's the path to a json file, - # let's parse it to get our arguments. - model_args, data_args, training_args, adapter_args = parser.parse_json_file( - json_file=os.path.abspath(sys.argv[1]) - ) - else: - model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() - - # Setup logging - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - handlers=[logging.StreamHandler(sys.stdout)], - ) - log_level = training_args.get_process_log_level() - logger.setLevel(log_level) - datasets.utils.logging.set_verbosity(log_level) - transformers.utils.logging.set_verbosity(log_level) - transformers.utils.logging.enable_default_handler() - transformers.utils.logging.enable_explicit_format() - - # Log on each process the small summary: - logger.warning( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" - + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" - ) - logger.info(f"Training/evaluation parameters {training_args}") - - if data_args.source_prefix is None and model_args.model_name_or_path in [ - "t5-small", - "t5-base", - "t5-large", - "t5-3b", - "t5-11b", - ]: - logger.warning( - "You're running a t5 model but didn't provide a source prefix, which is the expected, e.g. with " - "`--source_prefix 'summarize: ' `" - ) - - # Detecting last checkpoint. - last_checkpoint = None - if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: - last_checkpoint = get_last_checkpoint(training_args.output_dir) - if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: - raise ValueError( - f"Output directory ({training_args.output_dir}) already exists and is not empty. " - "Use --overwrite_output_dir to overcome." - ) - elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: - logger.info( - f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " - "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." - ) - - # Set seed before initializing model. - set_seed(training_args.seed) - - # Get the datasets: you can either provide your own CSV/JSON training and evaluation files (see below) - # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ - # (the dataset will be downloaded automatically from the datasets Hub). - # - # For CSV/JSON files this script will use the first column for the full texts and the second column for the - # summaries (unless you specify column names for this with the `text_column` and `summary_column` arguments). - # - # In distributed training, the load_dataset function guarantee that only one local process can concurrently - # download the dataset. - if data_args.dataset_name is not None: - # Downloading and loading a dataset from the hub. - raw_datasets = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - else: - data_files = {} - if data_args.train_file is not None: - data_files["train"] = data_args.train_file - extension = data_args.train_file.split(".")[-1] - if data_args.validation_file is not None: - data_files["validation"] = data_args.validation_file - extension = data_args.validation_file.split(".")[-1] - if data_args.test_file is not None: - data_files["test"] = data_args.test_file - extension = data_args.test_file.split(".")[-1] - raw_datasets = load_dataset( - extension, - data_files=data_files, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at - # https://huggingface.co/docs/datasets/loading_datasets.html. - - # Load pretrained model and tokenizer - # - # Distributed training: - # The .from_pretrained methods guarantee that only one local process can concurrently - # download model & vocab. - config = AutoConfig.from_pretrained( - model_args.config_name if model_args.config_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - tokenizer = AutoTokenizer.from_pretrained( - model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - use_fast=model_args.use_fast_tokenizer, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - model = AutoModelForSeq2SeqLM.from_pretrained( - model_args.model_name_or_path, - from_tf=bool(".ckpt" in model_args.model_name_or_path), - config=config, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - - # Convert the model into an adapter model - adapters.init(model) - - # We resize the embeddings only when necessary to avoid index errors. If you are creating a model from scratch - # on a small vocab and want a smaller embedding size, remove this test. - embedding_size = model.get_input_embeddings().weight.shape[0] - if len(tokenizer) > embedding_size: - model.resize_token_embeddings(len(tokenizer)) - - if model.config.decoder_start_token_id is None and isinstance(tokenizer, (MBartTokenizer, MBartTokenizerFast)): - if isinstance(tokenizer, MBartTokenizer): - model.config.decoder_start_token_id = tokenizer.lang_code_to_id[data_args.lang] - else: - model.config.decoder_start_token_id = tokenizer.convert_tokens_to_ids(data_args.lang) - - if model.config.decoder_start_token_id is None: - raise ValueError("Make sure that `config.decoder_start_token_id` is correctly defined") - - if ( - hasattr(model.config, "max_position_embeddings") - and model.config.max_position_embeddings < data_args.max_source_length - ): - if model_args.resize_position_embeddings is None: - logger.warning( - "Increasing the model's number of position embedding vectors from" - f" {model.config.max_position_embeddings} to {data_args.max_source_length}." - ) - model.resize_position_embeddings(data_args.max_source_length) - elif model_args.resize_position_embeddings: - model.resize_position_embeddings(data_args.max_source_length) - else: - raise ValueError( - f"`--max_source_length` is set to {data_args.max_source_length}, but the model only has" - f" {model.config.max_position_embeddings} position encodings. Consider either reducing" - f" `--max_source_length` to {model.config.max_position_embeddings} or to automatically resize the" - " model's position encodings by passing `--resize_position_embeddings`." - ) - - prefix = data_args.source_prefix if data_args.source_prefix is not None else "" - - # Preprocessing the datasets. - # We need to tokenize inputs and targets. - if training_args.do_train: - column_names = raw_datasets["train"].column_names - elif training_args.do_eval: - column_names = raw_datasets["validation"].column_names - elif training_args.do_predict: - column_names = raw_datasets["test"].column_names - else: - logger.info("There is nothing to do. Please pass `do_train`, `do_eval` and/or `do_predict`.") - return - - if isinstance(tokenizer, tuple(MULTILINGUAL_TOKENIZERS)): - assert ( - data_args.lang is not None - ), f"{tokenizer.__class__.__name__} is a multilingual tokenizer which requires --lang argument" - - tokenizer.src_lang = data_args.lang - tokenizer.tgt_lang = data_args.lang - - # For multilingual translation models like mBART-50 and M2M100 we need to force the target language token - # as the first generated token. We ask the user to explicitly provide this as --forced_bos_token argument. - forced_bos_token_id = ( - tokenizer.lang_code_to_id[data_args.forced_bos_token] if data_args.forced_bos_token is not None else None - ) - model.config.forced_bos_token_id = forced_bos_token_id - - # Get the column names for input/target. - dataset_columns = summarization_name_mapping.get(data_args.dataset_name, None) - if data_args.text_column is None: - text_column = dataset_columns[0] if dataset_columns is not None else column_names[0] - else: - text_column = data_args.text_column - if text_column not in column_names: - raise ValueError( - f"--text_column' value '{data_args.text_column}' needs to be one of: {', '.join(column_names)}" - ) - if data_args.summary_column is None: - summary_column = dataset_columns[1] if dataset_columns is not None else column_names[1] - else: - summary_column = data_args.summary_column - if summary_column not in column_names: - raise ValueError( - f"--summary_column' value '{data_args.summary_column}' needs to be one of: {', '.join(column_names)}" - ) - - # Temporarily set max_target_length for training. - max_target_length = data_args.max_target_length - padding = "max_length" if data_args.pad_to_max_length else False - - if training_args.label_smoothing_factor > 0 and not hasattr(model, "prepare_decoder_input_ids_from_labels"): - logger.warning( - "label_smoothing is enabled but the `prepare_decoder_input_ids_from_labels` method is not defined for" - f"`{model.__class__.__name__}`. This will lead to loss being calculated twice and will take up more memory" - ) - - def preprocess_function(examples): - # remove pairs where at least one record is None - - inputs, targets = [], [] - for i in range(len(examples[text_column])): - if examples[text_column][i] and examples[summary_column][i]: - inputs.append(examples[text_column][i]) - targets.append(examples[summary_column][i]) - - inputs = [prefix + inp for inp in inputs] - model_inputs = tokenizer(inputs, max_length=data_args.max_source_length, padding=padding, truncation=True) - - # Tokenize targets with the `text_target` keyword argument - labels = tokenizer(text_target=targets, max_length=max_target_length, padding=padding, truncation=True) - - # If we are padding here, replace all tokenizer.pad_token_id in the labels by -100 when we want to ignore - # padding in the loss. - if padding == "max_length" and data_args.ignore_pad_token_for_loss: - labels["input_ids"] = [ - [(l if l != tokenizer.pad_token_id else -100) for l in label] for label in labels["input_ids"] - ] - - model_inputs["labels"] = labels["input_ids"] - return model_inputs - - if training_args.do_train: - if "train" not in raw_datasets: - raise ValueError("--do_train requires a train dataset") - train_dataset = raw_datasets["train"] - if data_args.max_train_samples is not None: - max_train_samples = min(len(train_dataset), data_args.max_train_samples) - train_dataset = train_dataset.select(range(max_train_samples)) - with training_args.main_process_first(desc="train dataset map pre-processing"): - train_dataset = train_dataset.map( - preprocess_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on train dataset", - ) - - if training_args.do_eval: - max_target_length = data_args.val_max_target_length - if "validation" not in raw_datasets: - raise ValueError("--do_eval requires a validation dataset") - eval_dataset = raw_datasets["validation"] - if data_args.max_eval_samples is not None: - max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) - eval_dataset = eval_dataset.select(range(max_eval_samples)) - with training_args.main_process_first(desc="validation dataset map pre-processing"): - eval_dataset = eval_dataset.map( - preprocess_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on validation dataset", - ) - - if training_args.do_predict: - max_target_length = data_args.val_max_target_length - if "test" not in raw_datasets: - raise ValueError("--do_predict requires a test dataset") - predict_dataset = raw_datasets["test"] - if data_args.max_predict_samples is not None: - max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) - predict_dataset = predict_dataset.select(range(max_predict_samples)) - with training_args.main_process_first(desc="prediction dataset map pre-processing"): - predict_dataset = predict_dataset.map( - preprocess_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on prediction dataset", - ) - - # Data collator - label_pad_token_id = -100 if data_args.ignore_pad_token_for_loss else tokenizer.pad_token_id - data_collator = DataCollatorForSeq2Seq( - tokenizer, - model=model, - label_pad_token_id=label_pad_token_id, - pad_to_multiple_of=8 if training_args.fp16 else None, - ) - - # Metric - metric = evaluate.load("rouge") - - def postprocess_text(preds, labels): - preds = [pred.strip() for pred in preds] - labels = [label.strip() for label in labels] - - # rougeLSum expects newline after each sentence - preds = ["\n".join(nltk.sent_tokenize(pred)) for pred in preds] - labels = ["\n".join(nltk.sent_tokenize(label)) for label in labels] - - return preds, labels - - def compute_metrics(eval_preds): - preds, labels = eval_preds - if isinstance(preds, tuple): - preds = preds[0] - decoded_preds = tokenizer.batch_decode(preds, skip_special_tokens=True) - if data_args.ignore_pad_token_for_loss: - # Replace -100 in the labels as we can't decode them. - labels = np.where(labels != -100, labels, tokenizer.pad_token_id) - decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=True) - - # Some simple post-processing - decoded_preds, decoded_labels = postprocess_text(decoded_preds, decoded_labels) - - result = metric.compute(predictions=decoded_preds, references=decoded_labels, use_stemmer=True) - result = {k: round(v * 100, 4) for k, v in result.items()} - prediction_lens = [np.count_nonzero(pred != tokenizer.pad_token_id) for pred in preds] - result["gen_len"] = np.mean(prediction_lens) - return result - - # Early stopping - if data_args.patience and data_args.patience > 0: - training_args.load_best_model_at_end = True - - # Setup adapters - setup_adapter_training(model, adapter_args, data_args.dataset_name or "summarization") - # Initialize our Trainer - trainer_class = Seq2SeqAdapterTrainer if adapter_args.train_adapter else Seq2SeqTrainer - trainer = trainer_class( - model=model, - args=training_args, - train_dataset=train_dataset if training_args.do_train else None, - eval_dataset=eval_dataset if training_args.do_eval else None, - tokenizer=tokenizer, - data_collator=data_collator, - compute_metrics=compute_metrics if training_args.predict_with_generate else None, - ) - if data_args.patience and data_args.patience > 0: - callback = EarlyStoppingCallback(early_stopping_patience=data_args.patience) - trainer.add_callback(callback) - - # Training - if training_args.do_train: - checkpoint = None - if training_args.resume_from_checkpoint is not None: - checkpoint = training_args.resume_from_checkpoint - elif last_checkpoint is not None: - checkpoint = last_checkpoint - train_result = trainer.train(resume_from_checkpoint=checkpoint) - trainer.save_model() # Saves the tokenizer too for easy upload - - metrics = train_result.metrics - max_train_samples = ( - data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) - ) - metrics["train_samples"] = min(max_train_samples, len(train_dataset)) - - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - # Evaluation - results = {} - max_length = ( - training_args.generation_max_length - if training_args.generation_max_length is not None - else data_args.val_max_target_length - ) - num_beams = data_args.num_beams if data_args.num_beams is not None else training_args.generation_num_beams - if training_args.do_eval: - logger.info("*** Evaluate ***") - metrics = trainer.evaluate(max_length=max_length, num_beams=num_beams, metric_key_prefix="eval") - max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) - metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) - - trainer.log_metrics("eval", metrics) - trainer.save_metrics("eval", metrics) - - if training_args.do_predict: - logger.info("*** Predict ***") - - predict_results = trainer.predict( - predict_dataset, metric_key_prefix="predict", max_length=max_length, num_beams=num_beams - ) - metrics = predict_results.metrics - max_predict_samples = ( - data_args.max_predict_samples if data_args.max_predict_samples is not None else len(predict_dataset) - ) - metrics["predict_samples"] = min(max_predict_samples, len(predict_dataset)) - - trainer.log_metrics("predict", metrics) - trainer.save_metrics("predict", metrics) - - if trainer.is_world_process_zero(): - if training_args.predict_with_generate: - predictions = tokenizer.batch_decode( - predict_results.predictions, skip_special_tokens=True, clean_up_tokenization_spaces=True - ) - predictions = [pred.strip() for pred in predictions] - output_prediction_file = os.path.join(training_args.output_dir, "generated_predictions.txt") - with open(output_prediction_file, "w") as writer: - writer.write("\n".join(predictions)) - - kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "summarization"} - if data_args.dataset_name is not None: - kwargs["dataset_tags"] = data_args.dataset_name - if data_args.dataset_config_name is not None: - kwargs["dataset_args"] = data_args.dataset_config_name - kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" - else: - kwargs["dataset"] = data_args.dataset_name - - if data_args.lang is not None: - kwargs["language"] = data_args.lang - - if training_args.push_to_hub: - trainer.push_to_hub(**kwargs) - else: - trainer.create_model_card(**kwargs) - - return results - - -def _mp_fn(index): - # For xla_spawn (TPUs) - main() - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/test_adapter_examples.py b/adapters/examples/pytorch/test_adapter_examples.py deleted file mode 100644 index 1b4bd984..00000000 --- a/adapters/examples/pytorch/test_adapter_examples.py +++ /dev/null @@ -1,395 +0,0 @@ -# coding=utf-8 - -import json -import logging -import os -import sys -from unittest.mock import patch - -import torch - -from transformers.testing_utils import TestCasePlus, get_gpu_count, slow, torch_device - - -SRC_DIRS = [ - os.path.join(os.path.dirname(__file__), dirname) - for dirname in [ - "adapterfusion", - "text-generation", - "text-classification", - "token-classification", - "language-modeling", - "multiple-choice", - "question-answering", - "summarization", - "translation", - "dependency-parsing", - ] -] -sys.path.extend(SRC_DIRS) - -if SRC_DIRS is not None: - import run_clm - import run_fusion_glue - import run_glue - import run_mlm - import run_ner - import run_qa - import run_summarization - import run_swag - import run_translation - import run_udp - -logging.basicConfig(level=logging.DEBUG) - -logger = logging.getLogger() - - -def get_results(output_dir): - results = {} - path = os.path.join(output_dir, "all_results.json") - if os.path.exists(path): - with open(path, "r") as f: - results = json.load(f) - else: - raise ValueError(f"can't find {path}") - return results - - -class AdapterExamplesTests(TestCasePlus): - def test_run_glue_adapters(self): - stream_handler = logging.StreamHandler(sys.stdout) - logger.addHandler(stream_handler) - - tmp_dir = self.get_auto_remove_tmp_dir() - testargs = f""" - run_glue.py - --model_name_or_path bert-base-uncased - --output_dir {tmp_dir} - --overwrite_output_dir - --train_file ./tests/fixtures/samples/MRPC/train.csv - --validation_file ./tests/fixtures/samples/MRPC/dev.csv - --do_train - --do_eval - --per_device_train_batch_size=2 - --per_device_eval_batch_size=1 - --learning_rate=5e-4 - --max_steps=10 - --warmup_steps=2 - --seed=42 - --max_seq_length=128 - --train_adapter - --adapter_config=double_seq_bn - """.split() - with patch.object(sys, "argv", testargs): - run_glue.main() - result = get_results(tmp_dir) - self.assertGreaterEqual(result["eval_accuracy"], 0.75) - - def test_run_fusion_glue(self): - stream_handler = logging.StreamHandler(sys.stdout) - logger.addHandler(stream_handler) - - testargs = """ - run_fusion_glue.py - --model_name_or_path bert-base-uncased - --data_dir ./tests/fixtures/samples/MRPC/ - --task_name mrpc - --do_train - --do_eval - --output_dir ./tests/fixtures/samples/temp_dir - --per_device_train_batch_size=2 - --per_device_eval_batch_size=1 - --learning_rate=5e-5 - --max_steps=20 - --warmup_steps=2 - --overwrite_output_dir - --seed=42 - --max_seq_length=128 - --train_adapter - --adapter_config=double_seq_bn - --load_adapter=qqp@ukp - """.split() - with patch.object(sys, "argv", testargs): - result = run_fusion_glue.main() - del result["eval_loss"] - for value in result.values(): - self.assertGreaterEqual(value, 0.5) - - def test_run_squad_adapters(self): - stream_handler = logging.StreamHandler(sys.stdout) - logger.addHandler(stream_handler) - - tmp_dir = self.get_auto_remove_tmp_dir() - testargs = f""" - run_squad.py - --model_name_or_path bert-base-uncased - --version_2_with_negative - --train_file ./tests/fixtures/samples/SQUAD/sample.json - --validation_file ./tests/fixtures/samples/SQUAD/sample.json - --output_dir {tmp_dir} - --overwrite_output_dir - --max_steps=15 - --warmup_steps=2 - --do_train - --do_eval - --learning_rate=2e-3 - --per_device_train_batch_size=2 - --per_device_eval_batch_size=1 - --train_adapter - --adapter_config=double_seq_bn[reduction_factor=8] - """.split() - - with patch.object(sys, "argv", testargs): - run_qa.main() - result = get_results(tmp_dir) - self.assertGreaterEqual(result["eval_f1"], 30) - self.assertGreaterEqual(result["eval_exact"], 30) - - def test_run_swag_adapter(self): - stream_handler = logging.StreamHandler(sys.stdout) - logger.addHandler(stream_handler) - - tmp_dir = self.get_auto_remove_tmp_dir() - testargs = f""" - run_swag.py - --model_name_or_path bert-base-uncased - --train_file ./tests/fixtures/samples/swag/sample.json - --validation_file ./tests/fixtures/samples/swag/sample.json - --output_dir {tmp_dir} - --overwrite_output_dir - --max_steps=20 - --warmup_steps=2 - --do_train - --do_eval - --learning_rate=2e-4 - --per_device_train_batch_size=2 - --per_device_eval_batch_size=1 - --train_adapter - --adapter_config=double_seq_bn[reduction_factor=8] - """.split() - - with patch.object(sys, "argv", testargs): - run_swag.main() - result = get_results(tmp_dir) - self.assertGreaterEqual(result["eval_accuracy"], 0.8) - - def test_run_clm_adapter(self): - stream_handler = logging.StreamHandler(sys.stdout) - logger.addHandler(stream_handler) - - tmp_dir = self.get_auto_remove_tmp_dir() - testargs = f""" - run_clm.py - --model_name_or_path gpt2 - --train_file ./tests/fixtures/sample_text.txt - --validation_file ./tests/fixtures/sample_text.txt - --do_train - --do_eval - --learning_rate 1e-3 - --block_size 128 - --per_device_train_batch_size 5 - --per_device_eval_batch_size 5 - --num_train_epochs 2 - --output_dir {tmp_dir} - --overwrite_output_dir - --train_adapter - --adapter_config=double_seq_bn[reduction_factor=8] - """.split() - - if torch.cuda.device_count() > 1: - # Skipping because there are not enough batches to train the model + would need a drop_last to work. - return - - if torch_device != "cuda": - testargs.append("--no_cuda") - - with patch.object(sys, "argv", testargs): - run_clm.main() - result = get_results(tmp_dir) - self.assertLess(result["perplexity"], 100) - - def test_run_mlm_adapter(self): - stream_handler = logging.StreamHandler(sys.stdout) - logger.addHandler(stream_handler) - - tmp_dir = self.get_auto_remove_tmp_dir() - testargs = f""" - run_mlm.py - --model_name_or_path roberta-base - --train_file ./tests/fixtures/sample_text.txt - --validation_file ./tests/fixtures/sample_text.txt - --output_dir {tmp_dir} - --overwrite_output_dir - --do_train - --do_eval - --prediction_loss_only - --num_train_epochs=1 - --train_adapter - --adapter_config=double_seq_bn[reduction_factor=8] - """.split() - - if torch_device != "cuda": - testargs.append("--no_cuda") - - with patch.object(sys, "argv", testargs): - run_mlm.main() - result = get_results(tmp_dir) - self.assertLess(result["perplexity"], 42) - - # TODO: Add Adapter to load - # def test_generation_adapter(self): - # stream_handler = logging.StreamHandler(sys.stdout) - # logger.addHandler(stream_handler) - # - # testargs = [ - # "run_generation.py", - # "--prompt=Hello", - # "--length=10", - # "--seed=42", - # "--load_adapter=./test_adapter/adapter_poem", - # ] - # - # if is_cuda_and_apex_available(): - # testargs.append("--fp16") - # - # model_type, model_name = ( - # "--model_type=gpt2", - # "--model_name_or_path=gpt2", - # ) - # with patch.object(sys, "argv", testargs + [model_type, model_name]): - # result = run_generation.main() - # self.assertGreaterEqual(len(result[0]), 10) - - @slow - def test_run_summarization_adapter(self): - stream_handler = logging.StreamHandler(sys.stdout) - logger.addHandler(stream_handler) - - tmp_dir = self.get_auto_remove_tmp_dir() - testargs = f""" - run_summarization.py - --model_name_or_path facebook/bart-base - --train_file ./tests/fixtures/samples/xsum/sample.json - --validation_file ./tests/fixtures/samples/xsum/sample.json - --output_dir {tmp_dir} - --overwrite_output_dir - --max_steps=50 - --warmup_steps=8 - --do_train - --do_eval - --learning_rate=2e-4 - --per_device_train_batch_size=2 - --per_device_eval_batch_size=1 - --predict_with_generate - --train_adapter - --adapter_config=double_seq_bn[reduction_factor=8] - """.split() - - with patch.object(sys, "argv", testargs): - run_summarization.main() - result = get_results(tmp_dir) - self.assertGreaterEqual(result["eval_rouge1"], 10) - self.assertGreaterEqual(result["eval_rouge2"], 2) - self.assertGreaterEqual(result["eval_rougeL"], 7) - self.assertGreaterEqual(result["eval_rougeLsum"], 7) - - @slow - def test_run_translation_adapter(self): - stream_handler = logging.StreamHandler(sys.stdout) - logger.addHandler(stream_handler) - - tmp_dir = self.get_auto_remove_tmp_dir() - testargs = f""" - run_translation.py - --model_name_or_path facebook/bart-base - --source_lang en - --target_lang ro - --train_file ./tests/fixtures/samples/wmt16/sample.json - --validation_file ./tests/fixtures/samples/wmt16/sample.json - --output_dir {tmp_dir} - --overwrite_output_dir - --max_steps=50 - --warmup_steps=8 - --do_train - --do_eval - --learning_rate=3e-3 - --per_device_train_batch_size=2 - --per_device_eval_batch_size=1 - --predict_with_generate - --source_lang en_XX - --target_lang ro_RO - --train_adapter - --adapter_config=double_seq_bn[reduction_factor=8] - """.split() - - with patch.object(sys, "argv", testargs): - run_translation.main() - result = get_results(tmp_dir) - self.assertGreaterEqual(result["eval_bleu"], 30) - - def test_run_ner_adapter(self): - stream_handler = logging.StreamHandler(sys.stdout) - logger.addHandler(stream_handler) - - # with so little data distributed training needs more epochs to get the score on par with 0/1 gpu - epochs = 14 if get_gpu_count() > 1 else 6 - - tmp_dir = self.get_auto_remove_tmp_dir() - testargs = f""" - run_ner.py - --model_name_or_path bert-base-uncased - --train_file ./tests/fixtures/samples/conll/sample.json - --validation_file ./tests/fixtures/samples/conll/sample.json - --output_dir {tmp_dir} - --overwrite_output_dir - --do_train - --do_eval - --warmup_steps=2 - --learning_rate=5e-3 - --per_device_train_batch_size=2 - --per_device_eval_batch_size=2 - --num_train_epochs={epochs} - --train_adapter - --adapter_config=double_seq_bn[reduction_factor=16] - """.split() - - if torch_device != "cuda": - testargs.append("--no_cuda") - - with patch.object(sys, "argv", testargs): - run_ner.main() - result = get_results(tmp_dir) - self.assertGreaterEqual(result["eval_accuracy"], 0.75) - self.assertGreaterEqual(result["eval_precision"], 0.75) - self.assertLess(result["eval_loss"], 0.5) - - def test_run_udp_adapter(self): - stream_handler = logging.StreamHandler(sys.stdout) - logger.addHandler(stream_handler) - - tmp_dir = self.get_auto_remove_tmp_dir() - testargs = f""" - run_udp.py - --model_name_or_path bert-base-uncased - --do_train - --do_eval - --task_name en_ewt - --use_mock_data - --evaluate_on train - --per_device_train_batch_size=2 - --per_device_eval_batch_size=1 - --learning_rate=5e-4 - --max_steps=10 - --output_dir {tmp_dir} - --overwrite_output_dir - --train_adapter - """.split() - - if torch_device != "cuda": - testargs.append("--no_cuda") - - with patch.object(sys, "argv", testargs): - run_udp.main() - result = get_results(tmp_dir) - self.assertGreaterEqual(result["eval_uas"], 100.0) diff --git a/adapters/examples/pytorch/test_xla_examples.py b/adapters/examples/pytorch/test_xla_examples.py deleted file mode 100644 index 4a29ce3b..00000000 --- a/adapters/examples/pytorch/test_xla_examples.py +++ /dev/null @@ -1,94 +0,0 @@ -# coding=utf-8 -# Copyright 2018 HuggingFace Inc.. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -import json -import logging -import os -import sys -from time import time -from unittest.mock import patch - -from transformers.testing_utils import TestCasePlus, require_torch_tpu - - -logging.basicConfig(level=logging.DEBUG) - -logger = logging.getLogger() - - -def get_results(output_dir): - results = {} - path = os.path.join(output_dir, "all_results.json") - if os.path.exists(path): - with open(path, "r") as f: - results = json.load(f) - else: - raise ValueError(f"can't find {path}") - return results - - -stream_handler = logging.StreamHandler(sys.stdout) -logger.addHandler(stream_handler) - - -@require_torch_tpu -class TorchXLAExamplesTests(TestCasePlus): - def test_run_glue(self): - import xla_spawn - - tmp_dir = self.get_auto_remove_tmp_dir() - testargs = f""" - ./examples/pytorch/text-classification/run_glue.py - --num_cores=8 - ./examples/pytorch/text-classification/run_glue.py - --model_name_or_path distilbert-base-uncased - --output_dir {tmp_dir} - --overwrite_output_dir - --train_file ./tests/fixtures/tests_samples/MRPC/train.csv - --validation_file ./tests/fixtures/tests_samples/MRPC/dev.csv - --do_train - --do_eval - --debug tpu_metrics_debug - --per_device_train_batch_size=2 - --per_device_eval_batch_size=1 - --learning_rate=1e-4 - --max_steps=10 - --warmup_steps=2 - --seed=42 - --max_seq_length=128 - """.split() - - with patch.object(sys, "argv", testargs): - start = time() - xla_spawn.main() - end = time() - - result = get_results(tmp_dir) - self.assertGreaterEqual(result["eval_accuracy"], 0.75) - - # Assert that the script takes less than 500 seconds to make sure it doesn't hang. - self.assertLess(end - start, 500) - - def test_trainer_tpu(self): - import xla_spawn - - testargs = """ - ./tests/test_trainer_tpu.py - --num_cores=8 - ./tests/test_trainer_tpu.py - """.split() - with patch.object(sys, "argv", testargs): - xla_spawn.main() diff --git a/adapters/examples/pytorch/text-classification/README.md b/adapters/examples/pytorch/text-classification/README.md deleted file mode 100644 index dd6bf8ef..00000000 --- a/adapters/examples/pytorch/text-classification/README.md +++ /dev/null @@ -1,235 +0,0 @@ - - -# Text classification with Adapters -> **Note:** We have not adapted the following scripts of Hugging Face Transformers: -> - `run_glue_no_trainer.py` -> - `run_xnli.py` -> -> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. - - -## Training Adapters in PyTorch - -Based on script `run_glue.py` (using model classes with flexible heads). - -By specifying a few additional, adapter-specific flags, you can easily switch from fine-tuning a full model to training Adapter modules on GLUE: - -```bash -export TASK_NAME=mrpc - -python run_glue.py \ - --model_name_or_path bert-base-uncased \ - --task_name $TASK_NAME \ - --do_train \ - --do_eval \ - --max_seq_length 128 \ - --per_device_train_batch_size 32 \ - --learning_rate 1e-4 \ - --num_train_epochs 10.0 \ - --output_dir /tmp/$TASK_NAME \ - --overwrite_output_dir \ - --train_adapter \ - --adapter_config seq_bn -``` - ---- - -## Hugging Face Transformers version - -Based on the script [`run_glue.py`](https://github.com/Adapter-Hub/adapters/blob/master/examples/pytorch/text-classification/run_glue.py). - -Fine-tuning the library models for sequence classification on the GLUE benchmark: [General Language Understanding -Evaluation](https://gluebenchmark.com/). This script can fine-tune any of the models on the [hub](https://huggingface.co/models) -and can also be used for a dataset hosted on our [hub](https://huggingface.co/datasets) or your own data in a csv or a JSON file -(the script might need some tweaks in that case, refer to the comments inside for help). - -GLUE is made up of a total of 9 different tasks. Here is how to run the script on one of them: - -```bash -export TASK_NAME=mrpc - -python run_glue.py \ - --model_name_or_path bert-base-cased \ - --task_name $TASK_NAME \ - --do_train \ - --do_eval \ - --max_seq_length 128 \ - --per_device_train_batch_size 32 \ - --learning_rate 2e-5 \ - --num_train_epochs 3 \ - --output_dir /tmp/$TASK_NAME/ -``` - -where task name can be one of cola, sst2, mrpc, stsb, qqp, mnli, qnli, rte, wnli. - -We get the following results on the dev set of the benchmark with the previous commands (with an exception for MRPC and -WNLI which are tiny and where we used 5 epochs instead of 3). Trainings are seeded so you should obtain the same -results with PyTorch 1.6.0 (and close results with different versions), training times are given for information (a -single Titan RTX was used): - -| Task | Metric | Result | Training time | -|-------|------------------------------|-------------|---------------| -| CoLA | Matthews corr | 56.53 | 3:17 | -| SST-2 | Accuracy | 92.32 | 26:06 | -| MRPC | F1/Accuracy | 88.85/84.07 | 2:21 | -| STS-B | Pearson/Spearman corr. | 88.64/88.48 | 2:13 | -| QQP | Accuracy/F1 | 90.71/87.49 | 2:22:26 | -| MNLI | Matched acc./Mismatched acc. | 83.91/84.10 | 2:35:23 | -| QNLI | Accuracy | 90.66 | 40:57 | -| RTE | Accuracy | 65.70 | 57 | -| WNLI | Accuracy | 56.34 | 24 | - -Some of these results are significantly different from the ones reported on the test set of GLUE benchmark on the -website. For QQP and WNLI, please refer to [FAQ #12](https://gluebenchmark.com/faq) on the website. - -The following example fine-tunes BERT on the `imdb` dataset hosted on our [hub](https://huggingface.co/datasets): - -```bash -python run_glue.py \ - --model_name_or_path bert-base-cased \ - --dataset_name imdb \ - --do_train \ - --do_predict \ - --max_seq_length 128 \ - --per_device_train_batch_size 32 \ - --learning_rate 2e-5 \ - --num_train_epochs 3 \ - --output_dir /tmp/imdb/ -``` - -> If your model classification head dimensions do not fit the number of labels in the dataset, you can specify `--ignore_mismatched_sizes` to adapt it. - - -### Mixed precision training - -If you have a GPU with mixed precision capabilities (architecture Pascal or more recent), you can use mixed precision -training with PyTorch 1.6.0 or latest, or by installing the [Apex](https://github.com/NVIDIA/apex) library for previous -versions. Just add the flag `--fp16` to your command launching one of the scripts mentioned above! - -Using mixed precision training usually results in 2x-speedup for training with the same final results: - -| Task | Metric | Result | Training time | Result (FP16) | Training time (FP16) | -|-------|------------------------------|-------------|---------------|---------------|----------------------| -| CoLA | Matthews corr | 56.53 | 3:17 | 56.78 | 1:41 | -| SST-2 | Accuracy | 92.32 | 26:06 | 91.74 | 13:11 | -| MRPC | F1/Accuracy | 88.85/84.07 | 2:21 | 88.12/83.58 | 1:10 | -| STS-B | Pearson/Spearman corr. | 88.64/88.48 | 2:13 | 88.71/88.55 | 1:08 | -| QQP | Accuracy/F1 | 90.71/87.49 | 2:22:26 | 90.67/87.43 | 1:11:54 | -| MNLI | Matched acc./Mismatched acc. | 83.91/84.10 | 2:35:23 | 84.04/84.06 | 1:17:06 | -| QNLI | Accuracy | 90.66 | 40:57 | 90.96 | 20:16 | -| RTE | Accuracy | 65.70 | 57 | 65.34 | 29 | -| WNLI | Accuracy | 56.34 | 24 | 56.34 | 12 | - - -## PyTorch version, no Trainer - -Based on the script [`run_glue_no_trainer.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/text-classification/run_glue_no_trainer.py). - -Like `run_glue.py`, this script allows you to fine-tune any of the models on the [hub](https://huggingface.co/models) on a -text classification task, either a GLUE task or your own data in a csv or a JSON file. The main difference is that this -script exposes the bare training loop, to allow you to quickly experiment and add any customization you would like. - -It offers less options than the script with `Trainer` (for instance you can easily change the options for the optimizer -or the dataloaders directly in the script) but still run in a distributed setup, on TPU and supports mixed precision by -the mean of the [🤗 `Accelerate`](https://github.com/huggingface/accelerate) library. You can use the script normally -after installing it: - -```bash -pip install git+https://github.com/huggingface/accelerate -``` - -then - -```bash -export TASK_NAME=mrpc - -python run_glue_no_trainer.py \ - --model_name_or_path bert-base-cased \ - --task_name $TASK_NAME \ - --max_length 128 \ - --per_device_train_batch_size 32 \ - --learning_rate 2e-5 \ - --num_train_epochs 3 \ - --output_dir /tmp/$TASK_NAME/ -``` - -You can then use your usual launchers to run in it in a distributed environment, but the easiest way is to run - -```bash -accelerate config -``` - -and reply to the questions asked. Then - -```bash -accelerate test -``` - -that will check everything is ready for training. Finally, you can launch training with - -```bash -export TASK_NAME=mrpc - -accelerate launch run_glue_no_trainer.py \ - --model_name_or_path bert-base-cased \ - --task_name $TASK_NAME \ - --max_length 128 \ - --per_device_train_batch_size 32 \ - --learning_rate 2e-5 \ - --num_train_epochs 3 \ - --output_dir /tmp/$TASK_NAME/ -``` - -This command is the same and will work for: - -- a CPU-only setup -- a setup with one GPU -- a distributed training with several GPUs (single or multi node) -- a training on TPUs - -Note that this library is in alpha release so your feedback is more than welcome if you encounter any problem using it. - -## XNLI - -Based on the script [`run_xnli.py`](https://github.com/huggingface/transformers/examples/pytorch/text-classification/run_xnli.py). - -[XNLI](https://www.nyu.edu/projects/bowman/xnli/) is a crowd-sourced dataset based on [MultiNLI](http://www.nyu.edu/projects/bowman/multinli/). It is an evaluation benchmark for cross-lingual text representations. Pairs of text are labeled with textual entailment annotations for 15 different languages (including both high-resource language such as English and low-resource languages such as Swahili). - -#### Fine-tuning on XNLI - -This example code fine-tunes mBERT (multi-lingual BERT) on the XNLI dataset. It runs in 106 mins on a single tesla V100 16GB. - -```bash -python run_xnli.py \ - --model_name_or_path bert-base-multilingual-cased \ - --language de \ - --train_language en \ - --do_train \ - --do_eval \ - --per_device_train_batch_size 32 \ - --learning_rate 5e-5 \ - --num_train_epochs 2.0 \ - --max_seq_length 128 \ - --output_dir /tmp/debug_xnli/ \ - --save_steps -1 -``` - -Training with the previously defined hyper-parameters yields the following results on the **test** set: - -```bash -acc = 0.7093812375249501 -``` diff --git a/adapters/examples/pytorch/text-classification/requirements.txt b/adapters/examples/pytorch/text-classification/requirements.txt deleted file mode 100644 index 19090ab1..00000000 --- a/adapters/examples/pytorch/text-classification/requirements.txt +++ /dev/null @@ -1,8 +0,0 @@ -accelerate >= 0.12.0 -datasets >= 1.8.0 -sentencepiece != 0.1.92 -scipy -scikit-learn -protobuf -torch >= 1.3 -evaluate \ No newline at end of file diff --git a/adapters/examples/pytorch/text-classification/run_glue.py b/adapters/examples/pytorch/text-classification/run_glue.py deleted file mode 100644 index 5786e0df..00000000 --- a/adapters/examples/pytorch/text-classification/run_glue.py +++ /dev/null @@ -1,635 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 -# Copyright 2020 The HuggingFace Inc. team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" Finetuning the library models for sequence classification on GLUE.""" -# You can also adapt this script on your own text classification task. Pointers for this are left as comments. - -import logging -import os -import random -import sys -from dataclasses import dataclass, field -from typing import Optional - -import datasets -import numpy as np -from datasets import load_dataset - -import adapters -import evaluate -import transformers -from adapters import AdapterArguments, AdapterTrainer, AutoAdapterModel, setup_adapter_training -from transformers import ( - AutoConfig, - AutoTokenizer, - DataCollatorWithPadding, - EvalPrediction, - HfArgumentParser, - PretrainedConfig, - Trainer, - TrainingArguments, - default_data_collator, - set_seed, -) -from transformers.trainer_utils import get_last_checkpoint -from transformers.utils import check_min_version -from transformers.utils.versions import require_version - - -# Will error if the minimal version of Transformers is not installed. Remove at your own risks. -check_min_version("4.26.0") - -require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/text-classification/requirements.txt") - -task_to_keys = { - "cola": ("sentence", None), - "mnli": ("premise", "hypothesis"), - "mrpc": ("sentence1", "sentence2"), - "qnli": ("question", "sentence"), - "qqp": ("question1", "question2"), - "rte": ("sentence1", "sentence2"), - "sst2": ("sentence", None), - "stsb": ("sentence1", "sentence2"), - "wnli": ("sentence1", "sentence2"), -} - -logger = logging.getLogger(__name__) - - -@dataclass -class DataTrainingArguments: - """ - Arguments pertaining to what data we are going to input our model for training and eval. - - Using `HfArgumentParser` we can turn this class - into argparse arguments to be able to specify them on - the command line. - """ - - task_name: Optional[str] = field( - default=None, - metadata={"help": "The name of the task to train on: " + ", ".join(task_to_keys.keys())}, - ) - dataset_name: Optional[str] = field( - default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} - ) - dataset_config_name: Optional[str] = field( - default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} - ) - max_seq_length: int = field( - default=128, - metadata={ - "help": ( - "The maximum total input sequence length after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded." - ) - }, - ) - overwrite_cache: bool = field( - default=False, metadata={"help": "Overwrite the cached preprocessed datasets or not."} - ) - pad_to_max_length: bool = field( - default=True, - metadata={ - "help": ( - "Whether to pad all samples to `max_seq_length`. " - "If False, will pad the samples dynamically when batching to the maximum length in the batch." - ) - }, - ) - max_train_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of training examples to this " - "value if set." - ) - }, - ) - max_eval_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of evaluation examples to this " - "value if set." - ) - }, - ) - max_predict_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of prediction examples to this " - "value if set." - ) - }, - ) - train_file: Optional[str] = field( - default=None, metadata={"help": "A csv or a json file containing the training data."} - ) - validation_file: Optional[str] = field( - default=None, metadata={"help": "A csv or a json file containing the validation data."} - ) - test_file: Optional[str] = field(default=None, metadata={"help": "A csv or a json file containing the test data."}) - - def __post_init__(self): - if self.task_name is not None: - self.task_name = self.task_name.lower() - if self.task_name not in task_to_keys.keys(): - raise ValueError("Unknown task, you should pick one in " + ",".join(task_to_keys.keys())) - elif self.dataset_name is not None: - pass - elif self.train_file is None or self.validation_file is None: - raise ValueError("Need either a GLUE task, a training/validation file or a dataset name.") - else: - train_extension = self.train_file.split(".")[-1] - assert train_extension in ["csv", "json"], "`train_file` should be a csv or a json file." - validation_extension = self.validation_file.split(".")[-1] - assert ( - validation_extension == train_extension - ), "`validation_file` should have the same extension (csv or json) as `train_file`." - - -@dataclass -class ModelArguments: - """ - Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. - """ - - model_name_or_path: str = field( - metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} - ) - config_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} - ) - tokenizer_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} - ) - cache_dir: Optional[str] = field( - default=None, - metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"}, - ) - use_fast_tokenizer: bool = field( - default=True, - metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, - ) - model_revision: str = field( - default="main", - metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, - ) - use_auth_token: bool = field( - default=False, - metadata={ - "help": ( - "Will use the token generated when running `huggingface-cli login` (necessary to use this script " - "with private models)." - ) - }, - ) - ignore_mismatched_sizes: bool = field( - default=False, - metadata={"help": "Will enable to load a pretrained model whose head dimensions are different."}, - ) - - -def main(): - # See all possible arguments in src/transformers/training_args.py - # or by passing the --help flag to this script. - # We now keep distinct sets of args, for a cleaner separation of concerns. - - parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) - - if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): - # If we pass only one argument to the script and it's the path to a json file, - # let's parse it to get our arguments. - model_args, data_args, training_args, adapter_args = parser.parse_json_file( - json_file=os.path.abspath(sys.argv[1]) - ) - else: - model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() - - # Setup logging - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - handlers=[logging.StreamHandler(sys.stdout)], - ) - - log_level = training_args.get_process_log_level() - logger.setLevel(log_level) - datasets.utils.logging.set_verbosity(log_level) - transformers.utils.logging.set_verbosity(log_level) - transformers.utils.logging.enable_default_handler() - transformers.utils.logging.enable_explicit_format() - - # Log on each process the small summary: - logger.warning( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" - + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" - ) - logger.info(f"Training/evaluation parameters {training_args}") - - # Detecting last checkpoint. - last_checkpoint = None - if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: - last_checkpoint = get_last_checkpoint(training_args.output_dir) - if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: - raise ValueError( - f"Output directory ({training_args.output_dir}) already exists and is not empty. " - "Use --overwrite_output_dir to overcome." - ) - elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: - logger.info( - f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " - "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." - ) - - # Set seed before initializing model. - set_seed(training_args.seed) - - # Get the datasets: you can either provide your own CSV/JSON training and evaluation files (see below) - # or specify a GLUE benchmark task (the dataset will be downloaded automatically from the datasets Hub). - # - # For CSV/JSON files, this script will use as labels the column called 'label' and as pair of sentences the - # sentences in columns called 'sentence1' and 'sentence2' if such column exists or the first two columns not named - # label if at least two columns are provided. - # - # If the CSVs/JSONs contain only one non-label column, the script does single sentence classification on this - # single column. You can easily tweak this behavior (see below) - # - # In distributed training, the load_dataset function guarantee that only one local process can concurrently - # download the dataset. - if data_args.task_name is not None: - # Downloading and loading a dataset from the hub. - raw_datasets = load_dataset( - "glue", - data_args.task_name, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - elif data_args.dataset_name is not None: - # Downloading and loading a dataset from the hub. - raw_datasets = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - else: - # Loading a dataset from your local files. - # CSV/JSON training and evaluation files are needed. - data_files = {"train": data_args.train_file, "validation": data_args.validation_file} - - # Get the test dataset: you can provide your own CSV/JSON test file (see below) - # when you use `do_predict` without specifying a GLUE benchmark task. - if training_args.do_predict: - if data_args.test_file is not None: - train_extension = data_args.train_file.split(".")[-1] - test_extension = data_args.test_file.split(".")[-1] - assert ( - test_extension == train_extension - ), "`test_file` should have the same extension (csv or json) as `train_file`." - data_files["test"] = data_args.test_file - else: - raise ValueError("Need either a GLUE task or a test file for `do_predict`.") - - for key in data_files.keys(): - logger.info(f"load a local file for {key}: {data_files[key]}") - - if data_args.train_file.endswith(".csv"): - # Loading a dataset from local csv files - raw_datasets = load_dataset( - "csv", - data_files=data_files, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - else: - # Loading a dataset from local json files - raw_datasets = load_dataset( - "json", - data_files=data_files, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - # See more about loading any type of standard or custom dataset at - # https://huggingface.co/docs/datasets/loading_datasets.html. - - # Labels - if data_args.task_name is not None: - is_regression = data_args.task_name == "stsb" - if not is_regression: - label_list = raw_datasets["train"].features["label"].names - num_labels = len(label_list) - else: - num_labels = 1 - else: - # Trying to have good defaults here, don't hesitate to tweak to your needs. - is_regression = raw_datasets["train"].features["label"].dtype in ["float32", "float64"] - if is_regression: - num_labels = 1 - else: - # A useful fast method: - # https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.unique - label_list = raw_datasets["train"].unique("label") - label_list.sort() # Let's sort it for determinism - num_labels = len(label_list) - - # Load pretrained model and tokenizer - # - # In distributed training, the .from_pretrained methods guarantee that only one local process can concurrently - # download model & vocab. - config = AutoConfig.from_pretrained( - model_args.config_name if model_args.config_name else model_args.model_name_or_path, - num_labels=num_labels, - finetuning_task=data_args.task_name, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - tokenizer = AutoTokenizer.from_pretrained( - model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - use_fast=model_args.use_fast_tokenizer, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - # We use the AutoAdapterModel class here for better adapter support. - model = AutoAdapterModel.from_pretrained( - model_args.model_name_or_path, - from_tf=bool(".ckpt" in model_args.model_name_or_path), - config=config, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ignore_mismatched_sizes=model_args.ignore_mismatched_sizes, - ) - - # Convert the model into an adapter model - adapters.init(model) - - model.add_classification_head( - data_args.task_name or "glue", - num_labels=num_labels, - id2label={i: v for i, v in enumerate(label_list)} if not is_regression else None, - ) - - # Preprocessing the raw_datasets - if data_args.task_name is not None: - sentence1_key, sentence2_key = task_to_keys[data_args.task_name] - else: - # Again, we try to have some nice defaults but don't hesitate to tweak to your use case. - non_label_column_names = [name for name in raw_datasets["train"].column_names if name != "label"] - if "sentence1" in non_label_column_names and "sentence2" in non_label_column_names: - sentence1_key, sentence2_key = "sentence1", "sentence2" - else: - if len(non_label_column_names) >= 2: - sentence1_key, sentence2_key = non_label_column_names[:2] - else: - sentence1_key, sentence2_key = non_label_column_names[0], None - - # Padding strategy - if data_args.pad_to_max_length: - padding = "max_length" - else: - # We will pad later, dynamically at batch creation, to the max sequence length in each batch - padding = False - - # Some models have set the order of the labels to use, so let's make sure we do use it. - label_to_id = None - if ( - model.config.label2id != PretrainedConfig(num_labels=num_labels).label2id - and data_args.task_name is not None - and not is_regression - ): - # Some have all caps in their config, some don't. - label_name_to_id = {k.lower(): v for k, v in model.config.label2id.items()} - if list(sorted(label_name_to_id.keys())) == list(sorted(label_list)): - label_to_id = {i: int(label_name_to_id[label_list[i]]) for i in range(num_labels)} - else: - logger.warning( - "Your model seems to have been trained with labels, but they don't match the dataset: ", - f"model labels: {list(sorted(label_name_to_id.keys()))}, dataset labels: {list(sorted(label_list))}." - "\nIgnoring the model labels as a result.", - ) - elif data_args.task_name is None and not is_regression: - label_to_id = {v: i for i, v in enumerate(label_list)} - - if label_to_id is not None: - model.config.label2id = label_to_id - model.config.id2label = {id: label for label, id in config.label2id.items()} - elif data_args.task_name is not None and not is_regression: - model.config.label2id = {l: i for i, l in enumerate(label_list)} - model.config.id2label = {id: label for label, id in config.label2id.items()} - - if data_args.max_seq_length > tokenizer.model_max_length: - logger.warning( - f"The max_seq_length passed ({data_args.max_seq_length}) is larger than the maximum length for the" - f"model ({tokenizer.model_max_length}). Using max_seq_length={tokenizer.model_max_length}." - ) - max_seq_length = min(data_args.max_seq_length, tokenizer.model_max_length) - - def preprocess_function(examples): - # Tokenize the texts - args = ( - (examples[sentence1_key],) if sentence2_key is None else (examples[sentence1_key], examples[sentence2_key]) - ) - result = tokenizer(*args, padding=padding, max_length=max_seq_length, truncation=True) - - # Map labels to IDs (not necessary for GLUE tasks) - if label_to_id is not None and "label" in examples: - result["label"] = [(label_to_id[l] if l != -1 else -1) for l in examples["label"]] - return result - - with training_args.main_process_first(desc="dataset map pre-processing"): - raw_datasets = raw_datasets.map( - preprocess_function, - batched=True, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on dataset", - ) - if training_args.do_train: - if "train" not in raw_datasets: - raise ValueError("--do_train requires a train dataset") - train_dataset = raw_datasets["train"] - if data_args.max_train_samples is not None: - max_train_samples = min(len(train_dataset), data_args.max_train_samples) - train_dataset = train_dataset.select(range(max_train_samples)) - - if training_args.do_eval: - if "validation" not in raw_datasets and "validation_matched" not in raw_datasets: - raise ValueError("--do_eval requires a validation dataset") - eval_dataset = raw_datasets["validation_matched" if data_args.task_name == "mnli" else "validation"] - if data_args.max_eval_samples is not None: - max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) - eval_dataset = eval_dataset.select(range(max_eval_samples)) - - if training_args.do_predict or data_args.task_name is not None or data_args.test_file is not None: - if "test" not in raw_datasets and "test_matched" not in raw_datasets: - raise ValueError("--do_predict requires a test dataset") - predict_dataset = raw_datasets["test_matched" if data_args.task_name == "mnli" else "test"] - if data_args.max_predict_samples is not None: - max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) - predict_dataset = predict_dataset.select(range(max_predict_samples)) - - # Log a few random samples from the training set: - if training_args.do_train: - for index in random.sample(range(len(train_dataset)), 3): - logger.info(f"Sample {index} of the training set: {train_dataset[index]}.") - - # Get the metric function - if data_args.task_name is not None: - metric = evaluate.load("glue", data_args.task_name) - else: - metric = evaluate.load("accuracy") - - # You can define your custom compute_metrics function. It takes an `EvalPrediction` object (a namedtuple with a - # predictions and label_ids field) and has to return a dictionary string to float. - def compute_metrics(p: EvalPrediction): - preds = p.predictions[0] if isinstance(p.predictions, tuple) else p.predictions - preds = np.squeeze(preds) if is_regression else np.argmax(preds, axis=1) - if data_args.task_name is not None: - result = metric.compute(predictions=preds, references=p.label_ids) - if len(result) > 1: - result["combined_score"] = np.mean(list(result.values())).item() - return result - elif is_regression: - return {"mse": ((preds - p.label_ids) ** 2).mean().item()} - else: - return {"accuracy": (preds == p.label_ids).astype(np.float32).mean().item()} - - # Data collator will default to DataCollatorWithPadding when the tokenizer is passed to Trainer, so we change it if - # we already did the padding. - if data_args.pad_to_max_length: - data_collator = default_data_collator - elif training_args.fp16: - data_collator = DataCollatorWithPadding(tokenizer, pad_to_multiple_of=8) - else: - data_collator = None - - # Setup adapters - setup_adapter_training(model, adapter_args, data_args.task_name or "glue") - # Initialize our Trainer - trainer_class = AdapterTrainer if adapter_args.train_adapter else Trainer - trainer = trainer_class( - model=model, - args=training_args, - train_dataset=train_dataset if training_args.do_train else None, - eval_dataset=eval_dataset if training_args.do_eval else None, - compute_metrics=compute_metrics, - tokenizer=tokenizer, - data_collator=data_collator, - ) - - # Training - if training_args.do_train: - checkpoint = None - if training_args.resume_from_checkpoint is not None: - checkpoint = training_args.resume_from_checkpoint - elif last_checkpoint is not None: - checkpoint = last_checkpoint - train_result = trainer.train(resume_from_checkpoint=checkpoint) - metrics = train_result.metrics - max_train_samples = ( - data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) - ) - metrics["train_samples"] = min(max_train_samples, len(train_dataset)) - - trainer.save_model() # Saves the tokenizer too for easy upload - - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - # Evaluation - if training_args.do_eval: - logger.info("*** Evaluate ***") - - # Loop to handle MNLI double evaluation (matched, mis-matched) - tasks = [data_args.task_name] - eval_datasets = [eval_dataset] - if data_args.task_name == "mnli": - tasks.append("mnli-mm") - valid_mm_dataset = raw_datasets["validation_mismatched"] - if data_args.max_eval_samples is not None: - max_eval_samples = min(len(valid_mm_dataset), data_args.max_eval_samples) - valid_mm_dataset = valid_mm_dataset.select(range(max_eval_samples)) - eval_datasets.append(valid_mm_dataset) - combined = {} - - for eval_dataset, task in zip(eval_datasets, tasks): - metrics = trainer.evaluate(eval_dataset=eval_dataset) - - max_eval_samples = ( - data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) - ) - metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) - - if task == "mnli-mm": - metrics = {k + "_mm": v for k, v in metrics.items()} - if task is not None and "mnli" in task: - combined.update(metrics) - - trainer.log_metrics("eval", metrics) - trainer.save_metrics("eval", combined if task is not None and "mnli" in task else metrics) - - if training_args.do_predict: - logger.info("*** Predict ***") - - # Loop to handle MNLI double evaluation (matched, mis-matched) - tasks = [data_args.task_name] - predict_datasets = [predict_dataset] - if data_args.task_name == "mnli": - tasks.append("mnli-mm") - predict_datasets.append(raw_datasets["test_mismatched"]) - - for predict_dataset, task in zip(predict_datasets, tasks): - # Removing the `label` columns because it contains -1 and Trainer won't like that. - predict_dataset = predict_dataset.remove_columns("label") - predictions = trainer.predict(predict_dataset, metric_key_prefix="predict").predictions - predictions = np.squeeze(predictions) if is_regression else np.argmax(predictions, axis=1) - - output_predict_file = os.path.join(training_args.output_dir, f"predict_results_{task}.txt") - if trainer.is_world_process_zero(): - with open(output_predict_file, "w") as writer: - logger.info(f"***** Predict results {task} *****") - writer.write("index\tprediction\n") - for index, item in enumerate(predictions): - if is_regression: - writer.write(f"{index}\t{item:3.3f}\n") - else: - item = label_list[item] - writer.write(f"{index}\t{item}\n") - - kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "text-classification"} - if data_args.task_name is not None: - kwargs["language"] = "en" - kwargs["dataset_tags"] = "glue" - kwargs["dataset_args"] = data_args.task_name - kwargs["dataset"] = f"GLUE {data_args.task_name.upper()}" - - if training_args.push_to_hub: - trainer.push_to_hub(**kwargs) - else: - trainer.create_model_card(**kwargs) - - -def _mp_fn(index): - # For xla_spawn (TPUs) - main() - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/text-generation/README.md b/adapters/examples/pytorch/text-generation/README.md deleted file mode 100644 index 16b1049a..00000000 --- a/adapters/examples/pytorch/text-generation/README.md +++ /dev/null @@ -1,46 +0,0 @@ - - -## Language generation with Adapters -> **Note:** We have not adapted the following scripts of Hugging Face Transformers: -> - `run_generation_contrastive_search.py` -> -> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. - -Based on the script [`run_generation.py`](https://github.com/huggingface/transformers/blob/main/examples/pytorch/text-generation/run_generation.py). - -Conditional text generation using the auto-regressive models of the library: GPT, GPT-2, Transformer-XL, XLNet, CTRL. -A similar script is used for our official demo [Write With Transfomer](https://transformer.huggingface.co), where you -can try out the different models available in the library. - -Example usage: - -```bash -python run_generation.py \ - --model_type=gpt2 \ - --model_name_or_path=gpt2 -``` - -This can also be done by using a trained adapter. With the `--adapter_path` argument you can specify an adapter to load -for language generation. - -Example with Adapters: -```bash -python run_generation.py \ - --model_type=gpt2 \ - --model_name_or_path=gpt2 - --load_adapter=./tmp/poem -``` \ No newline at end of file diff --git a/adapters/examples/pytorch/text-generation/requirements.txt b/adapters/examples/pytorch/text-generation/requirements.txt deleted file mode 100644 index 0ef50f18..00000000 --- a/adapters/examples/pytorch/text-generation/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -sentencepiece != 0.1.92 -protobuf -torch >= 1.3 diff --git a/adapters/examples/pytorch/text-generation/run_generation.py b/adapters/examples/pytorch/text-generation/run_generation.py deleted file mode 100644 index 05dbe2fc..00000000 --- a/adapters/examples/pytorch/text-generation/run_generation.py +++ /dev/null @@ -1,301 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 -# Copyright 2018 Google AI, Google Brain and Carnegie Mellon University Authors and the HuggingFace Inc. team. -# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" Conditional text generation with the auto-regressive models of the library (GPT/GPT-2/CTRL/Transformer-XL/XLNet) -""" - - -import argparse -import logging - -import numpy as np -import torch - -import adapters -from transformers import ( - CTRLLMHeadModel, - CTRLTokenizer, - GPT2LMHeadModel, - GPT2Tokenizer, - OpenAIGPTLMHeadModel, - OpenAIGPTTokenizer, - TransfoXLLMHeadModel, - TransfoXLTokenizer, - XLMTokenizer, - XLMWithLMHeadModel, - XLNetLMHeadModel, - XLNetTokenizer, -) - - -logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - level=logging.INFO, -) -logger = logging.getLogger(__name__) - -MAX_LENGTH = int(10000) # Hardcoded max length to avoid infinite loop - -MODEL_CLASSES = { - "gpt2": (GPT2LMHeadModel, GPT2Tokenizer), - "ctrl": (CTRLLMHeadModel, CTRLTokenizer), - "openai-gpt": (OpenAIGPTLMHeadModel, OpenAIGPTTokenizer), - "xlnet": (XLNetLMHeadModel, XLNetTokenizer), - "transfo-xl": (TransfoXLLMHeadModel, TransfoXLTokenizer), - "xlm": (XLMWithLMHeadModel, XLMTokenizer), -} - -# Padding text to help Transformer-XL and XLNet with short prompts as proposed by Aman Rusia -# in https://github.com/rusiaaman/XLNet-gen#methodology -# and https://medium.com/@amanrusia/xlnet-speaks-comparison-to-gpt-2-ea1a4e9ba39e -PREFIX = """In 1991, the remains of Russian Tsar Nicholas II and his family -(except for Alexei and Maria) are discovered. -The voice of Nicholas's young son, Tsarevich Alexei Nikolaevich, narrates the -remainder of the story. 1883 Western Siberia, -a young Grigori Rasputin is asked by his father and a group of men to perform magic. -Rasputin has a vision and denounces one of the men as a horse thief. Although his -father initially slaps him for making such an accusation, Rasputin watches as the -man is chased outside and beaten. Twenty years later, Rasputin sees a vision of -the Virgin Mary, prompting him to become a priest. Rasputin quickly becomes famous, -with people, even a bishop, begging for his blessing.
""" - - -def set_seed(args): - np.random.seed(args.seed) - torch.manual_seed(args.seed) - if args.n_gpu > 0: - torch.cuda.manual_seed_all(args.seed) - - -# -# Functions to prepare models' input -# - - -def prepare_ctrl_input(args, _, tokenizer, prompt_text): - if args.temperature > 0.7: - logger.info("CTRL typically works better with lower temperatures (and lower top_k).") - - encoded_prompt = tokenizer.encode(prompt_text, add_special_tokens=False) - if not any(encoded_prompt[0] == x for x in tokenizer.control_codes.values()): - logger.info("WARNING! You are not starting your generation from a control code so you won't get good results") - return prompt_text - - -def prepare_xlm_input(args, model, tokenizer, prompt_text): - # kwargs = {"language": None, "mask_token_id": None} - - # Set the language - use_lang_emb = hasattr(model.config, "use_lang_emb") and model.config.use_lang_emb - if hasattr(model.config, "lang2id") and use_lang_emb: - available_languages = model.config.lang2id.keys() - if args.xlm_language in available_languages: - language = args.xlm_language - else: - language = None - while language not in available_languages: - language = input("Using XLM. Select language in " + str(list(available_languages)) + " >>> ") - - model.config.lang_id = model.config.lang2id[language] - # kwargs["language"] = tokenizer.lang2id[language] - - # TODO fix mask_token_id setup when configurations will be synchronized between models and tokenizers - # XLM masked-language modeling (MLM) models need masked token - # is_xlm_mlm = "mlm" in args.model_name_or_path - # if is_xlm_mlm: - # kwargs["mask_token_id"] = tokenizer.mask_token_id - - return prompt_text - - -def prepare_xlnet_input(args, _, tokenizer, prompt_text): - prefix = args.prefix if args.prefix else args.padding_text if args.padding_text else PREFIX - prompt_text = prefix + prompt_text - return prompt_text - - -def prepare_transfoxl_input(args, _, tokenizer, prompt_text): - prefix = args.prefix if args.prefix else args.padding_text if args.padding_text else PREFIX - prompt_text = prefix + prompt_text - return prompt_text - - -PREPROCESSING_FUNCTIONS = { - "ctrl": prepare_ctrl_input, - "xlm": prepare_xlm_input, - "xlnet": prepare_xlnet_input, - "transfo-xl": prepare_transfoxl_input, -} - - -def adjust_length_to_model(length, max_sequence_length): - if length < 0 and max_sequence_length > 0: - length = max_sequence_length - elif 0 < max_sequence_length < length: - length = max_sequence_length # No generation bigger than model size - elif length < 0: - length = MAX_LENGTH # avoid infinite loop - return length - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument( - "--model_type", - default=None, - type=str, - required=True, - help="Model type selected in the list: " + ", ".join(MODEL_CLASSES.keys()), - ) - parser.add_argument( - "--model_name_or_path", - default=None, - type=str, - required=True, - help="Path to pre-trained model or shortcut name selected in the list: " + ", ".join(MODEL_CLASSES.keys()), - ) - - parser.add_argument("--prompt", type=str, default="") - parser.add_argument("--length", type=int, default=20) - parser.add_argument("--stop_token", type=str, default=None, help="Token at which text generation is stopped") - - parser.add_argument( - "--temperature", - type=float, - default=1.0, - help="temperature of 1.0 has no effect, lower tend toward greedy sampling", - ) - parser.add_argument( - "--repetition_penalty", type=float, default=1.0, help="primarily useful for CTRL model; in that case, use 1.2" - ) - parser.add_argument("--k", type=int, default=0) - parser.add_argument("--p", type=float, default=0.9) - - parser.add_argument("--prefix", type=str, default="", help="Text added prior to input.") - parser.add_argument("--padding_text", type=str, default="", help="Deprecated, the use of `--prefix` is preferred.") - parser.add_argument("--xlm_language", type=str, default="", help="Optional language when used with the XLM model.") - - parser.add_argument("--seed", type=int, default=42, help="random seed for initialization") - parser.add_argument("--no_cuda", action="store_true", help="Avoid using CUDA when available") - parser.add_argument("--num_return_sequences", type=int, default=1, help="The number of samples to generate.") - parser.add_argument( - "--fp16", - action="store_true", - help="Whether to use 16-bit (mixed) precision (through NVIDIA apex) instead of 32-bit", - ) - parser.add_argument("--load_adapter", type=str, default=None, help="Path to a trained adapter") - args = parser.parse_args() - - args.device = torch.device("cuda" if torch.cuda.is_available() and not args.no_cuda else "cpu") - args.n_gpu = 0 if args.no_cuda else torch.cuda.device_count() - - logger.warning(f"device: {args.device}, n_gpu: {args.n_gpu}, 16-bits training: {args.fp16}") - - set_seed(args) - - # Initialize the model and tokenizer - try: - args.model_type = args.model_type.lower() - model_class, tokenizer_class = MODEL_CLASSES[args.model_type] - except KeyError: - raise KeyError("the model {} you specified is not supported. You are welcome to add it and open a PR :)") - - tokenizer = tokenizer_class.from_pretrained(args.model_name_or_path) - model = model_class.from_pretrained(args.model_name_or_path) - - # Convert the model into an adapter model - adapters.init(model) - - model.to(args.device) - - # Setup adapters - if args.load_adapter: - model.load_adapter(args.load_adapter, load_as="generation") - model.set_active_adapters(["generation"]) - - if args.fp16: - model.half() - - args.length = adjust_length_to_model(args.length, max_sequence_length=model.config.max_position_embeddings) - logger.info(args) - - prompt_text = args.prompt if args.prompt else input("Model prompt >>> ") - - # Different models need different input formatting and/or extra arguments - requires_preprocessing = args.model_type in PREPROCESSING_FUNCTIONS.keys() - if requires_preprocessing: - prepare_input = PREPROCESSING_FUNCTIONS.get(args.model_type) - preprocessed_prompt_text = prepare_input(args, model, tokenizer, prompt_text) - - if model.__class__.__name__ in ["TransfoXLLMHeadModel"]: - tokenizer_kwargs = {"add_space_before_punct_symbol": True} - else: - tokenizer_kwargs = {} - - encoded_prompt = tokenizer.encode( - preprocessed_prompt_text, add_special_tokens=False, return_tensors="pt", **tokenizer_kwargs - ) - else: - prefix = args.prefix if args.prefix else args.padding_text - encoded_prompt = tokenizer.encode(prefix + prompt_text, add_special_tokens=False, return_tensors="pt") - encoded_prompt = encoded_prompt.to(args.device) - - if encoded_prompt.size()[-1] == 0: - input_ids = None - else: - input_ids = encoded_prompt - - output_sequences = model.generate( - input_ids=input_ids, - max_length=args.length + len(encoded_prompt[0]), - temperature=args.temperature, - top_k=args.k, - top_p=args.p, - repetition_penalty=args.repetition_penalty, - do_sample=True, - num_return_sequences=args.num_return_sequences, - ) - - # Remove the batch dimension when returning multiple sequences - if len(output_sequences.shape) > 2: - output_sequences.squeeze_() - - generated_sequences = [] - - for generated_sequence_idx, generated_sequence in enumerate(output_sequences): - print(f"=== GENERATED SEQUENCE {generated_sequence_idx + 1} ===") - generated_sequence = generated_sequence.tolist() - - # Decode text - text = tokenizer.decode(generated_sequence, clean_up_tokenization_spaces=True) - - # Remove all text after the stop token - text = text[: text.find(args.stop_token) if args.stop_token else None] - - # Add the prompt at the beginning of the sequence. Remove the excess text that was used for pre-processing - total_sequence = ( - prompt_text + text[len(tokenizer.decode(encoded_prompt[0], clean_up_tokenization_spaces=True)) :] - ) - - generated_sequences.append(total_sequence) - print(total_sequence) - - return generated_sequences - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/token-classification/README.md b/adapters/examples/pytorch/token-classification/README.md deleted file mode 100644 index a951ab09..00000000 --- a/adapters/examples/pytorch/token-classification/README.md +++ /dev/null @@ -1,68 +0,0 @@ - - -# Token classification with Adapters -> **Note:** We have not adapted the following scripts of Hugging Face Transformers: -> - `run_ner_no_trainer.py` -> -> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. - -## PyTorch version - -Fine-tuning the library models for token classification task such as Named Entity Recognition (NER), Parts-of-speech -tagging (POS) or phrase extraction (CHUNKS). The main scrip `run_ner.py` leverages the 🤗 Datasets library and the Trainer API. You can easily -customize it to your needs if you need extra processing on your datasets. - -It will either run on a datasets hosted on our [hub](https://huggingface.co/datasets) or with your own text files for -training and validation, you might just need to add some tweaks in the data preprocessing. - -The following example fine-tunes BERT on CoNLL-2003: - -```bash -python run_ner.py \ - --model_name_or_path bert-base-uncased \ - --dataset_name conll2003 \ - --output_dir /tmp/test-ner \ - --do_train \ - --do_eval \ - --overwrite_output_dir \ - --train_adapter \ - --adapter_config seq_bn -``` - -or just can just run the bash script `run.sh`. - -To run on your own training and validation files, use the following command: - -```bash -python run_ner.py \ - --model_name_or_path bert-base-uncased \ - --train_file path_to_train_file \ - --validation_file path_to_validation_file \ - --output_dir /tmp/test-ner \ - --do_train \ - --do_eval \ - --overwrite_output_dir \ - --train_adapter \ - --adapter_config seq_bn -``` - -**Note:** This script only works with models that have a fast tokenizer (backed by the 🤗 Tokenizers library) as it -uses special features of those tokenizers. You can check if your favorite model has a fast tokenizer in -[this table](https://huggingface.co/transformers/index.html#supported-frameworks), if it doesn't you can still use the old version -of the script. - -> If your model classification head dimensions do not fit the number of labels in the dataset, you can specify `--ignore_mismatched_sizes` to adapt it. diff --git a/adapters/examples/pytorch/token-classification/requirements.txt b/adapters/examples/pytorch/token-classification/requirements.txt deleted file mode 100644 index 53740bf4..00000000 --- a/adapters/examples/pytorch/token-classification/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -accelerate >= 0.12.0 -seqeval -datasets >= 1.8.0 -torch >= 1.3 -evaluate \ No newline at end of file diff --git a/adapters/examples/pytorch/token-classification/run.sh b/adapters/examples/pytorch/token-classification/run.sh deleted file mode 100644 index e015125b..00000000 --- a/adapters/examples/pytorch/token-classification/run.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2020 The HuggingFace Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -python3 run_ner.py \ - --model_name_or_path bert-base-uncased \ - --dataset_name conll2003 \ - --output_dir /tmp/test-ner \ - --do_train \ - --do_eval \ - --overwrite_output_dir \ - --train_adapter \ - --adapter_config seq_bn diff --git a/adapters/examples/pytorch/token-classification/run_ner.py b/adapters/examples/pytorch/token-classification/run_ner.py deleted file mode 100644 index 83f0de61..00000000 --- a/adapters/examples/pytorch/token-classification/run_ner.py +++ /dev/null @@ -1,636 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 -# Copyright 2020 The HuggingFace Team All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Fine-tuning the library models for token classification. -""" -# You can also adapt this script on your own token classification task and datasets. Pointers for this are left as -# comments. - -import logging -import os -import sys -from dataclasses import dataclass, field -from typing import Optional - -import datasets -import numpy as np -from datasets import ClassLabel, load_dataset - -import adapters -import evaluate -import transformers -from adapters import AdapterArguments, AdapterTrainer, setup_adapter_training -from transformers import ( - AutoConfig, - AutoModelForTokenClassification, - AutoTokenizer, - DataCollatorForTokenClassification, - HfArgumentParser, - PretrainedConfig, - PreTrainedTokenizerFast, - Trainer, - TrainingArguments, - set_seed, -) -from transformers.trainer_utils import get_last_checkpoint -from transformers.utils import check_min_version -from transformers.utils.versions import require_version - - -# Will error if the minimal version of Transformers is not installed. Remove at your own risks. -check_min_version("4.26.0") - -require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/token-classification/requirements.txt") - -logger = logging.getLogger(__name__) - - -@dataclass -class ModelArguments: - """ - Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. - """ - - model_name_or_path: str = field( - metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} - ) - config_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} - ) - tokenizer_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} - ) - cache_dir: Optional[str] = field( - default=None, - metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"}, - ) - model_revision: str = field( - default="main", - metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, - ) - use_auth_token: bool = field( - default=False, - metadata={ - "help": ( - "Will use the token generated when running `huggingface-cli login` (necessary to use this script " - "with private models)." - ) - }, - ) - ignore_mismatched_sizes: bool = field( - default=False, - metadata={"help": "Will enable to load a pretrained model whose head dimensions are different."}, - ) - - -@dataclass -class DataTrainingArguments: - """ - Arguments pertaining to what data we are going to input our model for training and eval. - """ - - task_name: Optional[str] = field(default="ner", metadata={"help": "The name of the task (ner, pos...)."}) - dataset_name: Optional[str] = field( - default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} - ) - dataset_config_name: Optional[str] = field( - default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} - ) - train_file: Optional[str] = field( - default=None, metadata={"help": "The input training data file (a csv or JSON file)."} - ) - validation_file: Optional[str] = field( - default=None, - metadata={"help": "An optional input evaluation data file to evaluate on (a csv or JSON file)."}, - ) - test_file: Optional[str] = field( - default=None, - metadata={"help": "An optional input test data file to predict on (a csv or JSON file)."}, - ) - text_column_name: Optional[str] = field( - default=None, metadata={"help": "The column name of text to input in the file (a csv or JSON file)."} - ) - label_column_name: Optional[str] = field( - default=None, metadata={"help": "The column name of label to input in the file (a csv or JSON file)."} - ) - overwrite_cache: bool = field( - default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} - ) - preprocessing_num_workers: Optional[int] = field( - default=None, - metadata={"help": "The number of processes to use for the preprocessing."}, - ) - max_seq_length: int = field( - default=None, - metadata={ - "help": ( - "The maximum total input sequence length after tokenization. If set, sequences longer " - "than this will be truncated, sequences shorter will be padded." - ) - }, - ) - pad_to_max_length: bool = field( - default=False, - metadata={ - "help": ( - "Whether to pad all samples to model maximum sentence length. " - "If False, will pad the samples dynamically when batching to the maximum length in the batch. More " - "efficient on GPU but very bad for TPU." - ) - }, - ) - max_train_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of training examples to this " - "value if set." - ) - }, - ) - max_eval_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of evaluation examples to this " - "value if set." - ) - }, - ) - max_predict_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of prediction examples to this " - "value if set." - ) - }, - ) - label_all_tokens: bool = field( - default=False, - metadata={ - "help": ( - "Whether to put the label for one word on all tokens of generated by that word or just on the " - "one (in which case the other tokens will have a padding index)." - ) - }, - ) - return_entity_level_metrics: bool = field( - default=False, - metadata={"help": "Whether to return all the entity levels during evaluation or just the overall ones."}, - ) - - def __post_init__(self): - if self.dataset_name is None and self.train_file is None and self.validation_file is None: - raise ValueError("Need either a dataset name or a training/validation file.") - else: - if self.train_file is not None: - extension = self.train_file.split(".")[-1] - assert extension in ["csv", "json"], "`train_file` should be a csv or a json file." - if self.validation_file is not None: - extension = self.validation_file.split(".")[-1] - assert extension in ["csv", "json"], "`validation_file` should be a csv or a json file." - self.task_name = self.task_name.lower() - - -def main(): - # See all possible arguments in src/transformers/training_args.py - # or by passing the --help flag to this script. - # We now keep distinct sets of args, for a cleaner separation of concerns. - - parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments, AdapterArguments)) - if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): - # If we pass only one argument to the script and it's the path to a json file, - # let's parse it to get our arguments. - model_args, data_args, training_args, adapter_args = parser.parse_json_file( - json_file=os.path.abspath(sys.argv[1]) - ) - else: - model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() - - # Setup logging - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - handlers=[logging.StreamHandler(sys.stdout)], - ) - - log_level = training_args.get_process_log_level() - logger.setLevel(log_level) - datasets.utils.logging.set_verbosity(log_level) - transformers.utils.logging.set_verbosity(log_level) - transformers.utils.logging.enable_default_handler() - transformers.utils.logging.enable_explicit_format() - - # Log on each process the small summary: - logger.warning( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" - + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" - ) - logger.info(f"Training/evaluation parameters {training_args}") - - # Detecting last checkpoint. - last_checkpoint = None - if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: - last_checkpoint = get_last_checkpoint(training_args.output_dir) - if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: - raise ValueError( - f"Output directory ({training_args.output_dir}) already exists and is not empty. " - "Use --overwrite_output_dir to overcome." - ) - elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: - logger.info( - f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " - "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." - ) - - # Set seed before initializing model. - set_seed(training_args.seed) - - # Get the datasets: you can either provide your own CSV/JSON/TXT training and evaluation files (see below) - # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ - # (the dataset will be downloaded automatically from the datasets Hub). - # - # For CSV/JSON files, this script will use the column called 'text' or the first column if no column called - # 'text' is found. You can easily tweak this behavior (see below). - # - # In distributed training, the load_dataset function guarantee that only one local process can concurrently - # download the dataset. - if data_args.dataset_name is not None: - # Downloading and loading a dataset from the hub. - raw_datasets = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - else: - data_files = {} - if data_args.train_file is not None: - data_files["train"] = data_args.train_file - if data_args.validation_file is not None: - data_files["validation"] = data_args.validation_file - if data_args.test_file is not None: - data_files["test"] = data_args.test_file - extension = data_args.train_file.split(".")[-1] - raw_datasets = load_dataset(extension, data_files=data_files, cache_dir=model_args.cache_dir) - # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at - # https://huggingface.co/docs/datasets/loading_datasets.html. - - if training_args.do_train: - column_names = raw_datasets["train"].column_names - features = raw_datasets["train"].features - else: - column_names = raw_datasets["validation"].column_names - features = raw_datasets["validation"].features - - if data_args.text_column_name is not None: - text_column_name = data_args.text_column_name - elif "tokens" in column_names: - text_column_name = "tokens" - else: - text_column_name = column_names[0] - - if data_args.label_column_name is not None: - label_column_name = data_args.label_column_name - elif f"{data_args.task_name}_tags" in column_names: - label_column_name = f"{data_args.task_name}_tags" - else: - label_column_name = column_names[1] - - # In the event the labels are not a `Sequence[ClassLabel]`, we will need to go through the dataset to get the - # unique labels. - def get_label_list(labels): - unique_labels = set() - for label in labels: - unique_labels = unique_labels | set(label) - label_list = list(unique_labels) - label_list.sort() - return label_list - - # If the labels are of type ClassLabel, they are already integers and we have the map stored somewhere. - # Otherwise, we have to get the list of labels manually. - labels_are_int = isinstance(features[label_column_name].feature, ClassLabel) - if labels_are_int: - label_list = features[label_column_name].feature.names - label_to_id = {i: i for i in range(len(label_list))} - else: - label_list = get_label_list(raw_datasets["train"][label_column_name]) - label_to_id = {l: i for i, l in enumerate(label_list)} - - num_labels = len(label_list) - - # Load pretrained model and tokenizer - # - # Distributed training: - # The .from_pretrained methods guarantee that only one local process can concurrently - # download model & vocab. - config = AutoConfig.from_pretrained( - model_args.config_name if model_args.config_name else model_args.model_name_or_path, - num_labels=num_labels, - finetuning_task=data_args.task_name, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - - tokenizer_name_or_path = model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path - if config.model_type in {"bloom", "gpt2", "roberta"}: - tokenizer = AutoTokenizer.from_pretrained( - tokenizer_name_or_path, - cache_dir=model_args.cache_dir, - use_fast=True, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - add_prefix_space=True, - ) - else: - tokenizer = AutoTokenizer.from_pretrained( - tokenizer_name_or_path, - cache_dir=model_args.cache_dir, - use_fast=True, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - - model = AutoModelForTokenClassification.from_pretrained( - model_args.model_name_or_path, - from_tf=bool(".ckpt" in model_args.model_name_or_path), - config=config, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ignore_mismatched_sizes=model_args.ignore_mismatched_sizes, - ) - - # Convert the model into an adapter model - adapters.init(model) - - # Tokenizer check: this script requires a fast tokenizer. - if not isinstance(tokenizer, PreTrainedTokenizerFast): - raise ValueError( - "This example script only works for models that have a fast tokenizer. Checkout the big table of models at" - " https://huggingface.co/transformers/index.html#supported-frameworks to find the model types that meet" - " this requirement" - ) - - # Model has labels -> use them. - if model.config.label2id != PretrainedConfig(num_labels=num_labels).label2id: - if list(sorted(model.config.label2id.keys())) == list(sorted(label_list)): - # Reorganize `label_list` to match the ordering of the model. - if labels_are_int: - label_to_id = {i: int(model.config.label2id[l]) for i, l in enumerate(label_list)} - label_list = [model.config.id2label[i] for i in range(num_labels)] - else: - label_list = [model.config.id2label[i] for i in range(num_labels)] - label_to_id = {l: i for i, l in enumerate(label_list)} - else: - logger.warning( - "Your model seems to have been trained with labels, but they don't match the dataset: ", - f"model labels: {list(sorted(model.config.label2id.keys()))}, dataset labels:" - f" {list(sorted(label_list))}.\nIgnoring the model labels as a result.", - ) - - # Set the correspondences label/ID inside the model config - model.config.label2id = {l: i for i, l in enumerate(label_list)} - model.config.id2label = {i: l for i, l in enumerate(label_list)} - - # Map that sends B-Xxx label to its I-Xxx counterpart - b_to_i_label = [] - for idx, label in enumerate(label_list): - if label.startswith("B-") and label.replace("B-", "I-") in label_list: - b_to_i_label.append(label_list.index(label.replace("B-", "I-"))) - else: - b_to_i_label.append(idx) - - # Preprocessing the dataset - # Padding strategy - padding = "max_length" if data_args.pad_to_max_length else False - - # Tokenize all texts and align the labels with them. - def tokenize_and_align_labels(examples): - tokenized_inputs = tokenizer( - examples[text_column_name], - padding=padding, - truncation=True, - max_length=data_args.max_seq_length, - # We use this argument because the texts in our dataset are lists of words (with a label for each word). - is_split_into_words=True, - ) - labels = [] - for i, label in enumerate(examples[label_column_name]): - word_ids = tokenized_inputs.word_ids(batch_index=i) - previous_word_idx = None - label_ids = [] - for word_idx in word_ids: - # Special tokens have a word id that is None. We set the label to -100 so they are automatically - # ignored in the loss function. - if word_idx is None: - label_ids.append(-100) - # We set the label for the first token of each word. - elif word_idx != previous_word_idx: - label_ids.append(label_to_id[label[word_idx]]) - # For the other tokens in a word, we set the label to either the current label or -100, depending on - # the label_all_tokens flag. - else: - if data_args.label_all_tokens: - label_ids.append(b_to_i_label[label_to_id[label[word_idx]]]) - else: - label_ids.append(-100) - previous_word_idx = word_idx - - labels.append(label_ids) - tokenized_inputs["labels"] = labels - return tokenized_inputs - - if training_args.do_train: - if "train" not in raw_datasets: - raise ValueError("--do_train requires a train dataset") - train_dataset = raw_datasets["train"] - if data_args.max_train_samples is not None: - max_train_samples = min(len(train_dataset), data_args.max_train_samples) - train_dataset = train_dataset.select(range(max_train_samples)) - with training_args.main_process_first(desc="train dataset map pre-processing"): - train_dataset = train_dataset.map( - tokenize_and_align_labels, - batched=True, - num_proc=data_args.preprocessing_num_workers, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on train dataset", - ) - - if training_args.do_eval: - if "validation" not in raw_datasets: - raise ValueError("--do_eval requires a validation dataset") - eval_dataset = raw_datasets["validation"] - if data_args.max_eval_samples is not None: - max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) - eval_dataset = eval_dataset.select(range(max_eval_samples)) - with training_args.main_process_first(desc="validation dataset map pre-processing"): - eval_dataset = eval_dataset.map( - tokenize_and_align_labels, - batched=True, - num_proc=data_args.preprocessing_num_workers, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on validation dataset", - ) - - if training_args.do_predict: - if "test" not in raw_datasets: - raise ValueError("--do_predict requires a test dataset") - predict_dataset = raw_datasets["test"] - if data_args.max_predict_samples is not None: - max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) - predict_dataset = predict_dataset.select(range(max_predict_samples)) - with training_args.main_process_first(desc="prediction dataset map pre-processing"): - predict_dataset = predict_dataset.map( - tokenize_and_align_labels, - batched=True, - num_proc=data_args.preprocessing_num_workers, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on prediction dataset", - ) - - # Data collator - data_collator = DataCollatorForTokenClassification(tokenizer, pad_to_multiple_of=8 if training_args.fp16 else None) - - # Metrics - metric = evaluate.load("seqeval") - - def compute_metrics(p): - predictions, labels = p - predictions = np.argmax(predictions, axis=2) - - # Remove ignored index (special tokens) - true_predictions = [ - [label_list[p] for (p, l) in zip(prediction, label) if l != -100] - for prediction, label in zip(predictions, labels) - ] - true_labels = [ - [label_list[l] for (p, l) in zip(prediction, label) if l != -100] - for prediction, label in zip(predictions, labels) - ] - - results = metric.compute(predictions=true_predictions, references=true_labels) - if data_args.return_entity_level_metrics: - # Unpack nested dictionaries - final_results = {} - for key, value in results.items(): - if isinstance(value, dict): - for n, v in value.items(): - final_results[f"{key}_{n}"] = v - else: - final_results[key] = value - return final_results - else: - return { - "precision": results["overall_precision"], - "recall": results["overall_recall"], - "f1": results["overall_f1"], - "accuracy": results["overall_accuracy"], - } - - # Setup adapters - setup_adapter_training(model, adapter_args, data_args.dataset_name or "ner") - # Initialize our Trainer - trainer_class = AdapterTrainer if adapter_args.train_adapter else Trainer - trainer = trainer_class( - model=model, - args=training_args, - train_dataset=train_dataset if training_args.do_train else None, - eval_dataset=eval_dataset if training_args.do_eval else None, - tokenizer=tokenizer, - data_collator=data_collator, - compute_metrics=compute_metrics, - ) - - # Training - if training_args.do_train: - checkpoint = None - if training_args.resume_from_checkpoint is not None: - checkpoint = training_args.resume_from_checkpoint - elif last_checkpoint is not None: - checkpoint = last_checkpoint - train_result = trainer.train(resume_from_checkpoint=checkpoint) - metrics = train_result.metrics - trainer.save_model() # Saves the tokenizer too for easy upload - - max_train_samples = ( - data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) - ) - metrics["train_samples"] = min(max_train_samples, len(train_dataset)) - - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - # Evaluation - if training_args.do_eval: - logger.info("*** Evaluate ***") - - metrics = trainer.evaluate() - - max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) - metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) - - trainer.log_metrics("eval", metrics) - trainer.save_metrics("eval", metrics) - - # Predict - if training_args.do_predict: - logger.info("*** Predict ***") - - predictions, labels, metrics = trainer.predict(predict_dataset, metric_key_prefix="predict") - predictions = np.argmax(predictions, axis=2) - - # Remove ignored index (special tokens) - true_predictions = [ - [label_list[p] for (p, l) in zip(prediction, label) if l != -100] - for prediction, label in zip(predictions, labels) - ] - - trainer.log_metrics("predict", metrics) - trainer.save_metrics("predict", metrics) - - # Save predictions - output_predictions_file = os.path.join(training_args.output_dir, "predictions.txt") - if trainer.is_world_process_zero(): - with open(output_predictions_file, "w") as writer: - for prediction in true_predictions: - writer.write(" ".join(prediction) + "\n") - - kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "token-classification"} - if data_args.dataset_name is not None: - kwargs["dataset_tags"] = data_args.dataset_name - if data_args.dataset_config_name is not None: - kwargs["dataset_args"] = data_args.dataset_config_name - kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" - else: - kwargs["dataset"] = data_args.dataset_name - - if training_args.push_to_hub: - trainer.push_to_hub(**kwargs) - else: - trainer.create_model_card(**kwargs) - - -def _mp_fn(index): - # For xla_spawn (TPUs) - main() - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/translation/README.md b/adapters/examples/pytorch/translation/README.md deleted file mode 100644 index 83c70dbc..00000000 --- a/adapters/examples/pytorch/translation/README.md +++ /dev/null @@ -1,167 +0,0 @@ - - -## Translation with Adapters -> **Note:** We have not adapted the following scripts of Hugging Face Transformers: -> - `run_translation_no_trainer.py` -> -> To avoid confusion we have not included these non-adapted versions in the examples of Adapters. - -This directory contains examples for finetuning and evaluating transformers on translation tasks. -Please tag @patil-suraj with any issues/unexpected behaviors, or send a PR! -For deprecated `bertabs` instructions, see [`bertabs/README.md`](https://github.com/huggingface/transformers/blob/main/examples/research_projects/bertabs/README.md). -For the old `finetune_trainer.py` and related utils, see [`examples/legacy/seq2seq`](https://github.com/huggingface/transformers/blob/main/examples/legacy/seq2seq). - -### Supported Architectures - -- `BartForConditionalGeneration` -- `FSMTForConditionalGeneration` (translation only) -- `MBartForConditionalGeneration` -- `MarianMTModel` -- `PegasusForConditionalGeneration` -- `T5ForConditionalGeneration` -- `MT5ForConditionalGeneration` - -Of course, if you want to train your model using adapters, only architectures supported by Adapters will work (https://docs.adapterhub.ml/model_overview.html). - -`run_translation.py` is a lightweight examples of how to download and preprocess a dataset from the [🤗 Datasets](https://github.com/huggingface/datasets) library or use your own files (jsonlines or csv), then fine-tune one of the architectures above on it. - -For custom datasets in `jsonlines` format please see: https://huggingface.co/docs/datasets/loading_datasets.html#json-files -and you also will find examples of these below. - - -## With Trainer - -Here is an example of a translation fine-tuning with a MarianMT model **without adding adapters**: - -```bash -python run_translation.py \ - --model_name_or_path Helsinki-NLP/opus-mt-en-ro \ - --do_train \ - --do_eval \ - --source_lang en \ - --target_lang ro \ - --dataset_name wmt16 \ - --dataset_config_name ro-en \ - --output_dir /tmp/tst-translation \ - --per_device_train_batch_size=4 \ - --per_device_eval_batch_size=4 \ - --overwrite_output_dir \ - --predict_with_generate -``` - -MBart and some T5 models require special handling. - -T5 models `t5-small`, `t5-base`, `t5-large`, `t5-3b` and `t5-11b` must use an additional argument: `--source_prefix "translate {source_lang} to {target_lang}"`. For example **with adding adapters**: - -```bash -python run_translation.py \ - --model_name_or_path t5-small \ - --do_train \ - --do_eval \ - --source_lang en \ - --target_lang ro \ - --source_prefix "translate English to Romanian: " \ - --dataset_name wmt16 \ - --dataset_config_name ro-en \ - --output_dir /tmp/tst-translation \ - --per_device_train_batch_size=4 \ - --per_device_eval_batch_size=4 \ - --overwrite_output_dir \ - --predict_with_generate \ - --overwrite_output_dir \ - --train_adapter \ - --adapter_config seq_bn -``` - -If you get a terrible BLEU score, make sure that you didn't forget to use the `--source_prefix` argument. - -For the aforementioned group of T5 models it's important to remember that if you switch to a different language pair, make sure to adjust the source and target values in all 3 language-specific command line argument: `--source_lang`, `--target_lang` and `--source_prefix`. - -MBart models require a different format for `--source_lang` and `--target_lang` values, e.g. instead of `en` it expects `en_XX`, for `ro` it expects `ro_RO`. The full MBart specification for language codes can be found [here](https://huggingface.co/facebook/mbart-large-cc25). For example: - -```bash -python examples/pytorch/translation/run_translation.py \ - --model_name_or_path facebook/mbart-large-en-ro \ - --do_train \ - --do_eval \ - --dataset_name wmt16 \ - --dataset_config_name ro-en \ - --source_lang en_XX \ - --target_lang ro_RO \ - --output_dir /tmp/tst-translation \ - --per_device_train_batch_size=4 \ - --per_device_eval_batch_size=4 \ - --overwrite_output_dir \ - --predict_with_generate \ - --overwrite_output_dir \ - --train_adapter \ - --adapter_config seq_bn - ``` - -And here is how you would use the translation finetuning on your own files, after adjusting the -values for the arguments `--train_file`, `--validation_file` to match your setup: - -```bash -python examples/pytorch/translation/run_translation.py \ - --model_name_or_path t5-small \ - --do_train \ - --do_eval \ - --source_lang en \ - --target_lang ro \ - --source_prefix "translate English to Romanian: " \ - --dataset_name wmt16 \ - --dataset_config_name ro-en \ - --train_file path_to_jsonlines_file \ - --validation_file path_to_jsonlines_file \ - --output_dir /tmp/tst-translation \ - --per_device_train_batch_size=4 \ - --per_device_eval_batch_size=4 \ - --overwrite_output_dir \ - --predict_with_generate \ - --overwrite_output_dir \ - --train_adapter \ - --adapter_config seq_bn -``` - -The task of translation supports only custom JSONLINES files, with each line being a dictionary with a key `"translation"` and its value another dictionary whose keys is the language pair. For example: - -```json -{ "translation": { "en": "Others have dismissed him as a joke.", "ro": "Alții l-au numit o glumă." } } -{ "translation": { "en": "And some are holding out for an implosion.", "ro": "Iar alții așteaptă implozia." } } -``` -Here the languages are Romanian (`ro`) and English (`en`). - -If you want to use a pre-processed dataset that leads to high BLEU scores, but for the `en-de` language pair, you can use `--dataset_name stas/wmt14-en-de-pre-processed`, as following: - -```bash -python examples/pytorch/translation/run_translation.py \ - --model_name_or_path t5-small \ - --do_train \ - --do_eval \ - --source_lang en \ - --target_lang de \ - --source_prefix "translate English to German: " \ - --dataset_name stas/wmt14-en-de-pre-processed \ - --output_dir /tmp/tst-translation \ - --per_device_train_batch_size=4 \ - --per_device_eval_batch_size=4 \ - --overwrite_output_dir \ - --predict_with_generate \ - --overwrite_output_dir \ - --train_adapter \ - --adapter_config seq_bn - ``` diff --git a/adapters/examples/pytorch/translation/requirements.txt b/adapters/examples/pytorch/translation/requirements.txt deleted file mode 100644 index 9c925743..00000000 --- a/adapters/examples/pytorch/translation/requirements.txt +++ /dev/null @@ -1,8 +0,0 @@ -accelerate >= 0.12.0 -datasets >= 1.8.0 -sentencepiece != 0.1.92 -protobuf -sacrebleu >= 1.4.12 -py7zr -torch >= 1.3 -evaluate \ No newline at end of file diff --git a/adapters/examples/pytorch/translation/run_translation.py b/adapters/examples/pytorch/translation/run_translation.py deleted file mode 100644 index 77a288a9..00000000 --- a/adapters/examples/pytorch/translation/run_translation.py +++ /dev/null @@ -1,684 +0,0 @@ -#!/usr/bin/env python -# coding=utf-8 -# Copyright The HuggingFace Team and The HuggingFace Inc. team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Fine-tuning the library models for sequence to sequence. -""" -# You can also adapt this script on your own sequence to sequence task. Pointers for this are left as comments. - -import logging -import os -import sys -from dataclasses import dataclass, field -from typing import Optional - -import datasets -import numpy as np -from datasets import load_dataset - -import adapters -import evaluate -import transformers -from adapters import AdapterArguments, Seq2SeqAdapterTrainer, setup_adapter_training -from transformers import ( - AutoConfig, - AutoModelForSeq2SeqLM, - AutoTokenizer, - DataCollatorForSeq2Seq, - EarlyStoppingCallback, - HfArgumentParser, - M2M100Tokenizer, - MBart50Tokenizer, - MBart50TokenizerFast, - MBartTokenizer, - MBartTokenizerFast, - Seq2SeqTrainer, - Seq2SeqTrainingArguments, - default_data_collator, - set_seed, -) -from transformers.trainer_utils import get_last_checkpoint -from transformers.utils import check_min_version -from transformers.utils.versions import require_version - - -# Will error if the minimal version of Transformers is not installed. Remove at your own risks. -check_min_version("4.26.0") - -require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/translation/requirements.txt") - -logger = logging.getLogger(__name__) - -# A list of all multilingual tokenizer which require src_lang and tgt_lang attributes. -MULTILINGUAL_TOKENIZERS = [MBartTokenizer, MBartTokenizerFast, MBart50Tokenizer, MBart50TokenizerFast, M2M100Tokenizer] - - -@dataclass -class ModelArguments: - """ - Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. - """ - - model_name_or_path: str = field( - metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} - ) - config_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} - ) - tokenizer_name: Optional[str] = field( - default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} - ) - cache_dir: Optional[str] = field( - default=None, - metadata={"help": "Where to store the pretrained models downloaded from huggingface.co"}, - ) - use_fast_tokenizer: bool = field( - default=True, - metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, - ) - model_revision: str = field( - default="main", - metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, - ) - use_auth_token: bool = field( - default=False, - metadata={ - "help": ( - "Will use the token generated when running `huggingface-cli login` (necessary to use this script " - "with private models)." - ) - }, - ) - - -@dataclass -class DataTrainingArguments: - """ - Arguments pertaining to what data we are going to input our model for training and eval. - """ - - source_lang: str = field(default=None, metadata={"help": "Source language id for translation."}) - target_lang: str = field(default=None, metadata={"help": "Target language id for translation."}) - - dataset_name: Optional[str] = field( - default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} - ) - dataset_config_name: Optional[str] = field( - default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} - ) - train_file: Optional[str] = field(default=None, metadata={"help": "The input training data file (a jsonlines)."}) - validation_file: Optional[str] = field( - default=None, - metadata={ - "help": "An optional input evaluation data file to evaluate the metrics (sacrebleu) on a jsonlines file." - }, - ) - test_file: Optional[str] = field( - default=None, - metadata={"help": "An optional input test data file to evaluate the metrics (sacrebleu) on a jsonlines file."}, - ) - overwrite_cache: bool = field( - default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} - ) - preprocessing_num_workers: Optional[int] = field( - default=None, - metadata={"help": "The number of processes to use for the preprocessing."}, - ) - max_source_length: Optional[int] = field( - default=1024, - metadata={ - "help": ( - "The maximum total input sequence length after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded." - ) - }, - ) - max_target_length: Optional[int] = field( - default=128, - metadata={ - "help": ( - "The maximum total sequence length for target text after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded." - ) - }, - ) - val_max_target_length: Optional[int] = field( - default=None, - metadata={ - "help": ( - "The maximum total sequence length for validation target text after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded. Will default to `max_target_length`." - "This argument is also used to override the ``max_length`` param of ``model.generate``, which is used " - "during ``evaluate`` and ``predict``." - ) - }, - ) - pad_to_max_length: bool = field( - default=False, - metadata={ - "help": ( - "Whether to pad all samples to model maximum sentence length. " - "If False, will pad the samples dynamically when batching to the maximum length in the batch. More " - "efficient on GPU but very bad for TPU." - ) - }, - ) - max_train_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of training examples to this " - "value if set." - ) - }, - ) - max_eval_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of evaluation examples to this " - "value if set." - ) - }, - ) - max_predict_samples: Optional[int] = field( - default=None, - metadata={ - "help": ( - "For debugging purposes or quicker training, truncate the number of prediction examples to this " - "value if set." - ) - }, - ) - num_beams: Optional[int] = field( - default=None, - metadata={ - "help": ( - "Number of beams to use for evaluation. This argument will be passed to ``model.generate``, " - "which is used during ``evaluate`` and ``predict``." - ) - }, - ) - ignore_pad_token_for_loss: bool = field( - default=True, - metadata={ - "help": "Whether to ignore the tokens corresponding to padded labels in the loss computation or not." - }, - ) - source_prefix: Optional[str] = field( - default=None, metadata={"help": "A prefix to add before every source text (useful for T5 models)."} - ) - forced_bos_token: Optional[str] = field( - default=None, - metadata={ - "help": ( - "The token to force as the first generated token after the :obj:`decoder_start_token_id`.Useful for" - " multilingual models like :doc:`mBART <../model_doc/mbart>` where the first generated token needs to" - " be the target language token.(Usually it is the target language token)" - ) - }, - ) - patience: Optional[int] = field( - default=None, - metadata={ - "help": ( - "Stop training when the metric specified for `metric_for_best_model` worsend for `patience` number of" - " evaluation calls." - ) - }, - ) - - def __post_init__(self): - if self.dataset_name is None and self.train_file is None and self.validation_file is None: - raise ValueError("Need either a dataset name or a training/validation file.") - elif self.source_lang is None or self.target_lang is None: - raise ValueError("Need to specify the source language and the target language.") - - # accepting both json and jsonl file extensions, as - # many jsonlines files actually have a .json extension - valid_extensions = ["json", "jsonl"] - - if self.train_file is not None: - extension = self.train_file.split(".")[-1] - assert extension in valid_extensions, "`train_file` should be a jsonlines file." - if self.validation_file is not None: - extension = self.validation_file.split(".")[-1] - assert extension in valid_extensions, "`validation_file` should be a jsonlines file." - if self.val_max_target_length is None: - self.val_max_target_length = self.max_target_length - - -def main(): - # See all possible arguments in src/transformers/training_args.py - # or by passing the --help flag to this script. - # We now keep distinct sets of args, for a cleaner separation of concerns. - - parser = HfArgumentParser((ModelArguments, DataTrainingArguments, Seq2SeqTrainingArguments, AdapterArguments)) - if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): - # If we pass only one argument to the script and it's the path to a json file, - # let's parse it to get our arguments. - model_args, data_args, training_args, adapter_args = parser.parse_json_file( - json_file=os.path.abspath(sys.argv[1]) - ) - else: - model_args, data_args, training_args, adapter_args = parser.parse_args_into_dataclasses() - - # Setup logging - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - handlers=[logging.StreamHandler(sys.stdout)], - ) - - log_level = training_args.get_process_log_level() - logger.setLevel(log_level) - datasets.utils.logging.set_verbosity(log_level) - transformers.utils.logging.set_verbosity(log_level) - transformers.utils.logging.enable_default_handler() - transformers.utils.logging.enable_explicit_format() - - # Log on each process the small summary: - logger.warning( - f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" - + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" - ) - logger.info(f"Training/evaluation parameters {training_args}") - - if data_args.source_prefix is None and model_args.model_name_or_path in [ - "t5-small", - "t5-base", - "t5-large", - "t5-3b", - "t5-11b", - ]: - logger.warning( - "You're running a t5 model but didn't provide a source prefix, which is expected, e.g. with " - "`--source_prefix 'translate English to German: ' `" - ) - - # Detecting last checkpoint. - last_checkpoint = None - if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: - last_checkpoint = get_last_checkpoint(training_args.output_dir) - if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: - raise ValueError( - f"Output directory ({training_args.output_dir}) already exists and is not empty. " - "Use --overwrite_output_dir to overcome." - ) - elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: - logger.info( - f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " - "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." - ) - - # Set seed before initializing model. - set_seed(training_args.seed) - - # Get the datasets: you can either provide your own JSON training and evaluation files (see below) - # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ - # (the dataset will be downloaded automatically from the datasets Hub). - # - # For translation, only JSON files are supported, with one field named "translation" containing two keys for the - # source and target languages (unless you adapt what follows). - # - # In distributed training, the load_dataset function guarantee that only one local process can concurrently - # download the dataset. - if data_args.dataset_name is not None: - # Downloading and loading a dataset from the hub. - raw_datasets = load_dataset( - data_args.dataset_name, - data_args.dataset_config_name, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - else: - data_files = {} - if data_args.train_file is not None: - data_files["train"] = data_args.train_file - extension = data_args.train_file.split(".")[-1] - if data_args.validation_file is not None: - data_files["validation"] = data_args.validation_file - extension = data_args.validation_file.split(".")[-1] - if data_args.test_file is not None: - data_files["test"] = data_args.test_file - extension = data_args.test_file.split(".")[-1] - raw_datasets = load_dataset( - extension, - data_files=data_files, - cache_dir=model_args.cache_dir, - use_auth_token=True if model_args.use_auth_token else None, - ) - # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at - # https://huggingface.co/docs/datasets/loading_datasets.html. - - # Load pretrained model and tokenizer - # - # Distributed training: - # The .from_pretrained methods guarantee that only one local process can concurrently - # download model & vocab. - config = AutoConfig.from_pretrained( - model_args.config_name if model_args.config_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - tokenizer = AutoTokenizer.from_pretrained( - model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, - cache_dir=model_args.cache_dir, - use_fast=model_args.use_fast_tokenizer, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - model = AutoModelForSeq2SeqLM.from_pretrained( - model_args.model_name_or_path, - from_tf=bool(".ckpt" in model_args.model_name_or_path), - config=config, - cache_dir=model_args.cache_dir, - revision=model_args.model_revision, - use_auth_token=True if model_args.use_auth_token else None, - ) - # Convert the model into an adapter model - adapters.init(model) - - # We resize the embeddings only when necessary to avoid index errors. If you are creating a model from scratch - # on a small vocab and want a smaller embedding size, remove this test. - embedding_size = model.get_input_embeddings().weight.shape[0] - if len(tokenizer) > embedding_size: - model.resize_token_embeddings(len(tokenizer)) - - # Set decoder_start_token_id - if model.config.decoder_start_token_id is None and isinstance(tokenizer, (MBartTokenizer, MBartTokenizerFast)): - if isinstance(tokenizer, MBartTokenizer): - model.config.decoder_start_token_id = tokenizer.lang_code_to_id[data_args.target_lang] - else: - model.config.decoder_start_token_id = tokenizer.convert_tokens_to_ids(data_args.target_lang) - - if model.config.decoder_start_token_id is None: - raise ValueError("Make sure that `config.decoder_start_token_id` is correctly defined") - - prefix = data_args.source_prefix if data_args.source_prefix is not None else "" - - # Preprocessing the datasets. - # We need to tokenize inputs and targets. - if training_args.do_train: - column_names = raw_datasets["train"].column_names - elif training_args.do_eval: - column_names = raw_datasets["validation"].column_names - elif training_args.do_predict: - column_names = raw_datasets["test"].column_names - else: - logger.info("There is nothing to do. Please pass `do_train`, `do_eval` and/or `do_predict`.") - return - - # For translation we set the codes of our source and target languages (only useful for mBART, the others will - # ignore those attributes). - if isinstance(tokenizer, tuple(MULTILINGUAL_TOKENIZERS)): - assert data_args.target_lang is not None and data_args.source_lang is not None, ( - f"{tokenizer.__class__.__name__} is a multilingual tokenizer which requires --source_lang and " - "--target_lang arguments." - ) - - tokenizer.src_lang = data_args.source_lang - tokenizer.tgt_lang = data_args.target_lang - - # For multilingual translation models like mBART-50 and M2M100 we need to force the target language token - # as the first generated token. We ask the user to explicitly provide this as --forced_bos_token argument. - forced_bos_token_id = ( - tokenizer.lang_code_to_id[data_args.forced_bos_token] if data_args.forced_bos_token is not None else None - ) - model.config.forced_bos_token_id = forced_bos_token_id - - # Get the language codes for input/target. - source_lang = data_args.source_lang.split("_")[0] - target_lang = data_args.target_lang.split("_")[0] - - # Temporarily set max_target_length for training. - max_target_length = data_args.max_target_length - padding = "max_length" if data_args.pad_to_max_length else False - - if training_args.label_smoothing_factor > 0 and not hasattr(model, "prepare_decoder_input_ids_from_labels"): - logger.warning( - "label_smoothing is enabled but the `prepare_decoder_input_ids_from_labels` method is not defined for" - f"`{model.__class__.__name__}`. This will lead to loss being calculated twice and will take up more memory" - ) - - def preprocess_function(examples): - inputs = [ex[source_lang] for ex in examples["translation"]] - targets = [ex[target_lang] for ex in examples["translation"]] - inputs = [prefix + inp for inp in inputs] - model_inputs = tokenizer(inputs, max_length=data_args.max_source_length, padding=padding, truncation=True) - - # Tokenize targets with the `text_target` keyword argument - labels = tokenizer(text_target=targets, max_length=max_target_length, padding=padding, truncation=True) - - # If we are padding here, replace all tokenizer.pad_token_id in the labels by -100 when we want to ignore - # padding in the loss. - if padding == "max_length" and data_args.ignore_pad_token_for_loss: - labels["input_ids"] = [ - [(l if l != tokenizer.pad_token_id else -100) for l in label] for label in labels["input_ids"] - ] - - model_inputs["labels"] = labels["input_ids"] - return model_inputs - - if training_args.do_train: - if "train" not in raw_datasets: - raise ValueError("--do_train requires a train dataset") - train_dataset = raw_datasets["train"] - if data_args.max_train_samples is not None: - max_train_samples = min(len(train_dataset), data_args.max_train_samples) - train_dataset = train_dataset.select(range(max_train_samples)) - with training_args.main_process_first(desc="train dataset map pre-processing"): - train_dataset = train_dataset.map( - preprocess_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on train dataset", - ) - - if training_args.do_eval: - max_target_length = data_args.val_max_target_length - if "validation" not in raw_datasets: - raise ValueError("--do_eval requires a validation dataset") - eval_dataset = raw_datasets["validation"] - if data_args.max_eval_samples is not None: - max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) - eval_dataset = eval_dataset.select(range(max_eval_samples)) - with training_args.main_process_first(desc="validation dataset map pre-processing"): - eval_dataset = eval_dataset.map( - preprocess_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on validation dataset", - ) - - if training_args.do_predict: - max_target_length = data_args.val_max_target_length - if "test" not in raw_datasets: - raise ValueError("--do_predict requires a test dataset") - predict_dataset = raw_datasets["test"] - if data_args.max_predict_samples is not None: - max_predict_samples = min(len(predict_dataset), data_args.max_predict_samples) - predict_dataset = predict_dataset.select(range(max_predict_samples)) - with training_args.main_process_first(desc="prediction dataset map pre-processing"): - predict_dataset = predict_dataset.map( - preprocess_function, - batched=True, - num_proc=data_args.preprocessing_num_workers, - remove_columns=column_names, - load_from_cache_file=not data_args.overwrite_cache, - desc="Running tokenizer on prediction dataset", - ) - - # Data collator - label_pad_token_id = -100 if data_args.ignore_pad_token_for_loss else tokenizer.pad_token_id - if data_args.pad_to_max_length: - data_collator = default_data_collator - else: - data_collator = DataCollatorForSeq2Seq( - tokenizer, - model=model, - label_pad_token_id=label_pad_token_id, - pad_to_multiple_of=8 if training_args.fp16 else None, - ) - - # Metric - metric = evaluate.load("sacrebleu") - - def postprocess_text(preds, labels): - preds = [pred.strip() for pred in preds] - labels = [[label.strip()] for label in labels] - - return preds, labels - - def compute_metrics(eval_preds): - preds, labels = eval_preds - if isinstance(preds, tuple): - preds = preds[0] - decoded_preds = tokenizer.batch_decode(preds, skip_special_tokens=True) - if data_args.ignore_pad_token_for_loss: - # Replace -100 in the labels as we can't decode them. - labels = np.where(labels != -100, labels, tokenizer.pad_token_id) - decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=True) - - # Some simple post-processing - decoded_preds, decoded_labels = postprocess_text(decoded_preds, decoded_labels) - - result = metric.compute(predictions=decoded_preds, references=decoded_labels) - result = {"bleu": result["score"]} - - prediction_lens = [np.count_nonzero(pred != tokenizer.pad_token_id) for pred in preds] - result["gen_len"] = np.mean(prediction_lens) - result = {k: round(v, 4) for k, v in result.items()} - return result - - # Early stopping - if data_args.patience and data_args.patience > 0: - training_args.load_best_model_at_end = True - - # Setup adapters - setup_adapter_training( - model, adapter_args, data_args.source_lang.split("_")[0] + "_" + data_args.target_lang.split("_")[0] - ) - # Initialize our Trainer - trainer_class = Seq2SeqAdapterTrainer if adapter_args.train_adapter else Seq2SeqTrainer - trainer = trainer_class( - model=model, - args=training_args, - train_dataset=train_dataset if training_args.do_train else None, - eval_dataset=eval_dataset if training_args.do_eval else None, - tokenizer=tokenizer, - data_collator=data_collator, - compute_metrics=compute_metrics if training_args.predict_with_generate else None, - ) - if data_args.patience and data_args.patience > 0: - callback = EarlyStoppingCallback(early_stopping_patience=data_args.patience) - trainer.add_callback(callback) - - # Training - if training_args.do_train: - checkpoint = None - if training_args.resume_from_checkpoint is not None: - checkpoint = training_args.resume_from_checkpoint - elif last_checkpoint is not None: - checkpoint = last_checkpoint - train_result = trainer.train(resume_from_checkpoint=checkpoint) - trainer.save_model() # Saves the tokenizer too for easy upload - - metrics = train_result.metrics - max_train_samples = ( - data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) - ) - metrics["train_samples"] = min(max_train_samples, len(train_dataset)) - - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - # Evaluation - results = {} - max_length = ( - training_args.generation_max_length - if training_args.generation_max_length is not None - else data_args.val_max_target_length - ) - num_beams = data_args.num_beams if data_args.num_beams is not None else training_args.generation_num_beams - if training_args.do_eval: - logger.info("*** Evaluate ***") - - metrics = trainer.evaluate(max_length=max_length, num_beams=num_beams, metric_key_prefix="eval") - max_eval_samples = data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) - metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) - - trainer.log_metrics("eval", metrics) - trainer.save_metrics("eval", metrics) - - if training_args.do_predict: - logger.info("*** Predict ***") - - predict_results = trainer.predict( - predict_dataset, metric_key_prefix="predict", max_length=max_length, num_beams=num_beams - ) - metrics = predict_results.metrics - max_predict_samples = ( - data_args.max_predict_samples if data_args.max_predict_samples is not None else len(predict_dataset) - ) - metrics["predict_samples"] = min(max_predict_samples, len(predict_dataset)) - - trainer.log_metrics("predict", metrics) - trainer.save_metrics("predict", metrics) - - if trainer.is_world_process_zero(): - if training_args.predict_with_generate: - predictions = tokenizer.batch_decode( - predict_results.predictions, skip_special_tokens=True, clean_up_tokenization_spaces=True - ) - predictions = [pred.strip() for pred in predictions] - output_prediction_file = os.path.join(training_args.output_dir, "generated_predictions.txt") - with open(output_prediction_file, "w", encoding="utf-8") as writer: - writer.write("\n".join(predictions)) - - kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "translation"} - if data_args.dataset_name is not None: - kwargs["dataset_tags"] = data_args.dataset_name - if data_args.dataset_config_name is not None: - kwargs["dataset_args"] = data_args.dataset_config_name - kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" - else: - kwargs["dataset"] = data_args.dataset_name - - languages = [l for l in [data_args.source_lang, data_args.target_lang] if l is not None] - if len(languages) > 0: - kwargs["language"] = languages - - if training_args.push_to_hub: - trainer.push_to_hub(**kwargs) - else: - trainer.create_model_card(**kwargs) - - return results - - -def _mp_fn(index): - # For xla_spawn (TPUs) - main() - - -if __name__ == "__main__": - main() diff --git a/adapters/examples/pytorch/xla_spawn.py b/adapters/examples/pytorch/xla_spawn.py deleted file mode 100644 index 5df6bfa2..00000000 --- a/adapters/examples/pytorch/xla_spawn.py +++ /dev/null @@ -1,83 +0,0 @@ -# Copyright 2020 The HuggingFace Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -A simple launcher script for TPU training - -Inspired by https://github.com/pytorch/pytorch/blob/master/torch/distributed/launch.py - -:: - >>> python xla_spawn.py --num_cores=NUM_CORES_YOU_HAVE - YOUR_TRAINING_SCRIPT.py (--arg1 --arg2 --arg3 and all other - arguments of your training script) - -""" - - -import importlib -import sys -from argparse import REMAINDER, ArgumentParser -from pathlib import Path - -import torch_xla.distributed.xla_multiprocessing as xmp - - -def parse_args(): - """ - Helper function parsing the command line options - @retval ArgumentParser - """ - parser = ArgumentParser( - description=( - "PyTorch TPU distributed training launch helper utility that will spawn up multiple distributed processes" - ) - ) - - # Optional arguments for the launch helper - parser.add_argument("--num_cores", type=int, default=1, help="Number of TPU cores to use (1 or 8).") - - # positional - parser.add_argument( - "training_script", - type=str, - help=( - "The full path to the single TPU training " - "program/script to be launched in parallel, " - "followed by all the arguments for the " - "training script" - ), - ) - - # rest from the training program - parser.add_argument("training_script_args", nargs=REMAINDER) - - return parser.parse_args() - - -def main(): - args = parse_args() - - # Import training_script as a module. - script_fpath = Path(args.training_script) - sys.path.append(str(script_fpath.parent.resolve())) - mod_name = script_fpath.stem - mod = importlib.import_module(mod_name) - - # Patch sys.argv - sys.argv = [args.training_script] + args.training_script_args + ["--tpu_num_cores", str(args.num_cores)] - - xmp.spawn(mod._mp_fn, args=(), nprocs=args.num_cores) - - -if __name__ == "__main__": - main() diff --git a/adapters/pyproject.toml b/adapters/pyproject.toml deleted file mode 100644 index 291558c9..00000000 --- a/adapters/pyproject.toml +++ /dev/null @@ -1,3 +0,0 @@ -[tool.black] -line-length = 119 -target-version = ['py35'] diff --git a/adapters/setup.cfg b/adapters/setup.cfg deleted file mode 100644 index ccad3796..00000000 --- a/adapters/setup.cfg +++ /dev/null @@ -1,54 +0,0 @@ -[isort] -default_section = FIRSTPARTY -ensure_newline_before_comments = True -force_grid_wrap = 0 -include_trailing_comma = True -known_first_party = transformers -known_third_party = - absl - conllu - datasets - elasticsearch - fairseq - faiss-cpu - fastprogress - fire - fugashi - git - h5py - matplotlib - nltk - numpy - packaging - pandas - PIL - psutil - pytest - pytorch_lightning - rouge_score - sacrebleu - seqeval - sklearn - streamlit - tensorboardX - tensorflow - tensorflow_datasets - timeout_decorator - torch - torchaudio - torchtext - torchvision - torch_xla - tqdm - -line_length = 119 -lines_after_imports = 2 -multi_line_output = 3 -use_parentheses = True - -[flake8] -ignore = E203, E501, E731, E741, W503, W605 -max-line-length = 119 - -[tool:pytest] -doctest_optionflags=NUMBER NORMALIZE_WHITESPACE ELLIPSIS \ No newline at end of file diff --git a/adapters/setup.py b/adapters/setup.py deleted file mode 100644 index 933c09bc..00000000 --- a/adapters/setup.py +++ /dev/null @@ -1,175 +0,0 @@ -# Copyright 2020 The AdapterHub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import re - -from setuptools import find_packages, setup - - -# NOTE: All setup logic is transferred & adapted from Transformer's setup.py. -# We try to follow their general layout wherever sensible. - -_deps = [ - "accelerate>=0.21.0", - "beautifulsoup4", - "black==22.3", # after updating to black 2023, also update Python version in pyproject.toml to 3.7 - "datasets!=2.5.0", - "dill<0.3.5", - "docutils==0.16.0", - "evaluate>=0.2.0", - "flake8>=3.8.3", - "GitPython<3.1.19", - "isort>=5.5.4", - "Jinja2==2.11.3", - "nltk", - "onnxruntime-tools>=1.4.2", - "onnxruntime>=1.4.0", - "parameterized", - "pillow", - "protobuf", - "psutil", - "pytest>=7.2.0,<8.0.0", - "pytest-subtests", - "pytest-timeout", - "pytest-xdist", - "markupsafe==2.0.1", - "myst-parser", - "rjieba", - "rouge-score!=0.0.7,!=0.0.8,!=0.1,!=0.1.1", - "sacrebleu>=1.4.12,<2.0.0", - "sacremoses", - "scikit-learn", - "sentencepiece>=0.1.91,!=0.1.92", - "sphinx-copybutton", - "sphinx-markdown-tables", - "sphinx-rtd-theme==0.4.3", # sphinx-rtd-theme==0.5.0 introduced big changes in the style. - "sphinx==3.2.1", - "sphinxext-opengraph==0.4.1", - "sphinx-intl", - "sphinx-multiversion", - "timeout-decorator", - "torch>=1.10,!=1.12.0", - "transformers" # ~=4.36.0", -] - - -# this is a lookup table with items like: -# -# tokenizers: "tokenizers==0.9.4" -# packaging: "packaging" -# -# some of the values are versioned whereas others aren't. -deps = {b: a for a, b in (re.findall(r"^(([^!=<>~ ]+)(?:[!=<>~ ].*)?$)", x)[0] for x in _deps)} - - -def deps_list(*pkgs): - return [deps[pkg] for pkg in pkgs] - - -extras = {} - -extras["sklearn"] = deps_list("scikit-learn") - -extras["torch"] = deps_list("torch", "accelerate") - -extras["onnxruntime"] = deps_list("onnxruntime", "onnxruntime-tools") - -extras["sentencepiece"] = deps_list("sentencepiece", "protobuf") -extras["testing"] = deps_list( - "pytest", - "pytest-subtests", - "pytest-xdist", - "timeout-decorator", - "parameterized", - "psutil", - "datasets", - "dill", - "evaluate", - "pytest-timeout", - "black", - "sacrebleu", - "rouge-score", - "nltk", - "GitPython", - "sacremoses", - "rjieba", - "beautifulsoup4", - "pillow", - "accelerate", -) - -extras["quality"] = deps_list("black", "datasets", "isort", "flake8", "GitPython") - -extras["docs"] = deps_list( - "docutils", - "Jinja2", - "markupsafe", - "myst-parser", - "sphinx", - "sphinx-markdown-tables", - "sphinx-rtd-theme", - "sphinx-copybutton", - "sphinxext-opengraph", - "sphinx-intl", - "sphinx-multiversion", -) - -extras["dev"] = ( - extras["testing"] - + extras["torch"] - + extras["sentencepiece"] - + extras["quality"] - + extras["docs"] - + extras["sklearn"] - + extras["onnxruntime"] -) - -# when modifying the following list, make sure to update src/transformers/dependency_versions_check.py -install_requires = [ - deps["transformers"], -] - -setup( - name="adapters", - version="0.1.1", - author="The AdapterHub team and community contributors", - author_email="pfeiffer@ukp.tu-darmstadt.de", - description="A Unified Library for Parameter-Efficient and Modular Transfer Learning", - long_description=open("README.md", "r", encoding="utf-8").read(), - long_description_content_type="text/markdown", - keywords="NLP deep learning transformer pytorch BERT adapters", - license="Apache", - url="https://github.com/adapter-hub/adapters", - package_dir={"": "src"}, - packages=find_packages("src"), - include_package_data=True, - package_data={"transformers": ["*.cu", "*.cpp", "*.cuh", "*.h", "*.pyx"]}, - zip_safe=False, - extras_require=extras, - python_requires=">=3.8.0", - install_requires=install_requires, - classifiers=[ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "Intended Audience :: Education", - "Intended Audience :: Science/Research", - "License :: OSI Approved :: Apache Software License", - "Operating System :: OS Independent", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Topic :: Scientific/Engineering :: Artificial Intelligence", - ], -) diff --git a/adapters/src/adapters/__init__.py b/adapters/src/adapters/__init__.py deleted file mode 100644 index 36232ada..00000000 --- a/adapters/src/adapters/__init__.py +++ /dev/null @@ -1,237 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -__version__ = "0.1.1" - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "composition": [ - "AdapterCompositionBlock", - "BatchSplit", - "Fuse", - "Parallel", - "Split", - "Stack", - "parse_composition", - "validate_composition", - ], - "configuration": [ - "ADAPTER_CONFIG_MAP", - "ADAPTERFUSION_CONFIG_MAP", - "DEFAULT_ADAPTER_CONFIG", - "DEFAULT_ADAPTERFUSION_CONFIG", - "AdapterConfig", - "AdapterFusionConfig", - "BnConfig", - "CompacterConfig", - "CompacterPlusPlusConfig", - "ConfigUnion", - "DoubleSeqBnConfig", - "DoubleSeqBnInvConfig", - "DynamicAdapterFusionConfig", - "IA3Config", - "LoRAConfig", - "MAMConfig", - "ModelAdaptersConfig", - "ParBnConfig", - "PrefixTuningConfig", - "PromptTuningConfig", - "SeqBnConfig", - "SeqBnInvConfig", - "StaticAdapterFusionConfig", - "UniPELTConfig", - ], - "context": [ - "AdapterSetup", - "ForwardContext", - ], - "heads": [ - "BertStyleMaskedLMHead", - "BiaffineParsingHead", - "CausalLMHead", - "ClassificationHead", - "DependencyParsingOutput", - "ModelWithFlexibleHeadsAdaptersMixin", - "MultiHeadOutput", - "MultiLabelClassificationHead", - "MultipleChoiceHead", - "PredictionHead", - "QuestionAnsweringHead", - "Seq2SeqLMHead", - "TaggingHead", - ], - "methods.adapter_layer_base": ["AdapterLayerBase", "ComposableAdapterLayerBase"], - "model_mixin": [ - "EmbeddingAdaptersMixin", - "InvertibleAdaptersMixin", - "InvertibleAdaptersWrapperMixin", - "ModelAdaptersMixin", - "ModelWithHeadsAdaptersMixin", - ], - "models.albert": ["AlbertAdapterModel"], - "models.auto": [ - "ADAPTER_MODEL_MAPPING", - "AutoAdapterModel", - ], - "models.bart": ["BartAdapterModel"], - "models.beit": ["BeitAdapterModel"], - "models.bert": ["BertAdapterModel"], - "models.bert_generation": ["BertGenerationAdapterModel"], - "models.clip": ["CLIPAdapterModel"], - "models.deberta": ["DebertaAdapterModel"], - "models.deberta_v2": ["DebertaV2AdapterModel"], - "models.distilbert": ["DistilBertAdapterModel"], - "models.electra": ["ElectraAdapterModel"], - "models.gpt2": ["GPT2AdapterModel"], - "models.gptj": ["GPTJAdapterModel"], - "models.llama": ["LlamaAdapterModel"], - "models.mbart": ["MBartAdapterModel"], - "models.mt5": ["MT5AdapterModel"], - "models.roberta": ["RobertaAdapterModel"], - "models.t5": ["T5AdapterModel"], - "models.vit": ["ViTAdapterModel"], - "models.xlm_roberta": ["XLMRobertaAdapterModel"], - "models.xmod": ["XmodAdapterModel"], - "trainer": ["AdapterTrainer", "Seq2SeqAdapterTrainer"], - "training": [ - "AdapterArguments", - "setup_adapter_training", - ], - "utils": [ - "ADAPTER_CACHE", - "AdapterInfo", - "AdapterType", - "get_adapter_config_hash", - "get_adapter_info", - "list_adapters", - ], - "wrappers": [ - "init", - "init_adapters_config", - "load_model", - ], -} - - -if TYPE_CHECKING: - from .composition import ( - AdapterCompositionBlock, - BatchSplit, - Fuse, - Parallel, - Split, - Stack, - parse_composition, - validate_composition, - ) - from .configuration import ( - ADAPTER_CONFIG_MAP, - ADAPTERFUSION_CONFIG_MAP, - DEFAULT_ADAPTER_CONFIG, - DEFAULT_ADAPTERFUSION_CONFIG, - AdapterConfig, - AdapterFusionConfig, - BnConfig, - CompacterConfig, - CompacterPlusPlusConfig, - ConfigUnion, - DoubleSeqBnConfig, - DoubleSeqBnInvConfig, - DynamicAdapterFusionConfig, - IA3Config, - LoRAConfig, - MAMConfig, - ModelAdaptersConfig, - ParBnConfig, - PrefixTuningConfig, - PromptTuningConfig, - SeqBnConfig, - SeqBnInvConfig, - StaticAdapterFusionConfig, - UniPELTConfig, - ) - from .context import AdapterSetup, ForwardContext - from .heads import ( - BertStyleMaskedLMHead, - BiaffineParsingHead, - CausalLMHead, - ClassificationHead, - DependencyParsingOutput, - ModelWithFlexibleHeadsAdaptersMixin, - MultiHeadOutput, - MultiLabelClassificationHead, - MultipleChoiceHead, - PredictionHead, - QuestionAnsweringHead, - Seq2SeqLMHead, - TaggingHead, - ) - from .methods.adapter_layer_base import AdapterLayerBase, ComposableAdapterLayerBase - from .model_mixin import ( - EmbeddingAdaptersMixin, - InvertibleAdaptersMixin, - InvertibleAdaptersWrapperMixin, - ModelAdaptersMixin, - ModelWithHeadsAdaptersMixin, - ) - from .models.albert import AlbertAdapterModel - from .models.auto import ADAPTER_MODEL_MAPPING, AutoAdapterModel - from .models.bart import BartAdapterModel - from .models.beit import BeitAdapterModel - from .models.bert import BertAdapterModel - from .models.bert_generation import BertGenerationAdapterModel - from .models.clip import CLIPAdapterModel - from .models.deberta import DebertaAdapterModel - from .models.deberta_v2 import DebertaV2AdapterModel - from .models.distilbert import DistilBertAdapterModel - from .models.electra import ElectraAdapterModel - from .models.gpt2 import GPT2AdapterModel - from .models.gptj import GPTJAdapterModel - from .models.llama import LlamaAdapterModel - from .models.mbart import MBartAdapterModel - from .models.mt5 import MT5AdapterModel - from .models.roberta import RobertaAdapterModel - from .models.t5 import T5AdapterModel - from .models.vit import ViTAdapterModel - from .models.xlm_roberta import XLMRobertaAdapterModel - from .models.xmod import XmodAdapterModel - from .trainer import AdapterTrainer, Seq2SeqAdapterTrainer - from .training import AdapterArguments, setup_adapter_training - from .utils import ( - ADAPTER_CACHE, - AdapterInfo, - AdapterType, - get_adapter_config_hash, - get_adapter_info, - list_adapters, - ) - from .wrappers import init, init_adapters_config, load_model - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - extra_objects={"__version__": __version__}, - ) diff --git a/adapters/src/adapters/composition.py b/adapters/src/adapters/composition.py deleted file mode 100644 index 6a7fd14e..00000000 --- a/adapters/src/adapters/composition.py +++ /dev/null @@ -1,260 +0,0 @@ -import itertools -from collections.abc import Sequence -from typing import List, Optional, Set, Tuple, Union - -import torch - - -class AdapterCompositionBlock(Sequence): - def __init__(self, *children): - self.children = [parse_composition(b, None) for b in children] - - def __getitem__(self, key): - return self.children[key] - - def __len__(self): - return len(self.children) - - def __eq__(self, o: object) -> bool: - if isinstance(o, type(self)): - return all([c1 == c2 for c1, c2 in zip(self.children, o.children)]) - else: - return False - - def __repr__(self): - child_repr = ", ".join(map(str, self.children)) - return f"{self.__class__.__name__}[{child_repr}]" - - def first(self): - if not isinstance(self.children[0], AdapterCompositionBlock): - return self.children[0] - else: - return self.children[0].first() - - def last(self): - if not isinstance(self.children[-1], AdapterCompositionBlock): - return self.children[-1] - else: - return self.children[-1].last() - - @property - def parallel_channels(self): - return max([b.parallel_channels if isinstance(b, AdapterCompositionBlock) else 1 for b in self.children]) - - def flatten(self) -> Set[str]: - return set(itertools.chain(*[[b] if isinstance(b, str) else b.flatten() for b in self.children])) - - -class Parallel(AdapterCompositionBlock): - def __init__(self, *parallel_adapters: List[str]): - """ - Can be used to perform inference for multiple tasks (i.e., adapters) in parallel (for the same input). - - See AdapterDrop https://arxiv.org/abs/2010.11918 - """ - super().__init__(*parallel_adapters) - - @property - def parallel_channels(self): - return len(self.children) - - -class Stack(AdapterCompositionBlock): - def __init__(self, *stack_layers: List[Union[AdapterCompositionBlock, str]]): - super().__init__(*stack_layers) - - -class Fuse(AdapterCompositionBlock): - def __init__(self, *fuse_stacks: List[Union[AdapterCompositionBlock, str]]): - super().__init__(*fuse_stacks) - - # TODO-V2 pull this up to all block classes? - @property - def name(self): - return ",".join([c if isinstance(c, str) else c.last() for c in self.children]) - - -class Split(AdapterCompositionBlock): - def __init__(self, *split_adapters: List[Union[AdapterCompositionBlock, str]], splits: Union[List[int], int]): - super().__init__(*split_adapters) - self.splits = splits if isinstance(splits, list) else [splits] * len(split_adapters) - - -class BatchSplit(AdapterCompositionBlock): - def __init__(self, *split_adapters: List[Union[AdapterCompositionBlock, str]], batch_sizes: Union[List[int], int]): - super().__init__(*split_adapters) - self.batch_sizes = batch_sizes if isinstance(batch_sizes, list) else [batch_sizes] * len(split_adapters) - - -class Average(AdapterCompositionBlock): - def __init__( - self, - *average_adapters: List[Union[AdapterCompositionBlock, str]], - weights: Optional[List[float]] = None, - normalize_weights: bool = True - ): - super().__init__(*average_adapters) - if weights is not None: - # normalize weights - if normalize_weights: - sum_weights = sum(weights) if weights else 1 - self.weights = [w / sum_weights for w in weights] - else: - self.weights = weights - else: - self.weights = [1 / len(average_adapters)] * len(average_adapters) - - -# Mapping each composition block type to the allowed nested types -ALLOWED_NESTINGS = { - Stack: [str, Fuse, Split, Parallel, BatchSplit, Average], - Fuse: [str, Stack], - Split: [str, Split, Stack, BatchSplit, Average], - Parallel: [str, Stack, BatchSplit, Average], - BatchSplit: [str, Stack, Split, BatchSplit, Average], - Average: [str, Stack, Split, BatchSplit], -} - -# Some composition blocks might not be supported by all models. -# Add a whitelist of models for those here. -SUPPORTED_MODELS = { - Parallel: [ - "albert", - "bert", - "roberta", - "distilbert", - "deberta-v2", - "deberta", - "bart", - "mbart", - "mt5", - "gpt2", - "gptj", - "t5", - "vit", - "xlm-roberta", - "bert-generation", - "llama", - "electra", - "xmod", - ], -} - - -def validate_composition(adapter_composition: AdapterCompositionBlock, level=0, model_type=None): - if level > 1 and not (isinstance(adapter_composition, Stack) or isinstance(adapter_composition, str)): - raise ValueError(f"Adapter setup is too deep. Cannot have {adapter_composition} at level {level}.") - if isinstance(adapter_composition, AdapterCompositionBlock): - block_type = type(adapter_composition) - if model_type and block_type in SUPPORTED_MODELS: - if model_type not in SUPPORTED_MODELS[block_type]: - raise ValueError( - f"Models of type {model_type} don't support adapter composition using {block_type.__name__}." - ) - for child in adapter_composition: - if type(child) not in ALLOWED_NESTINGS[type(adapter_composition)]: - raise ValueError(f"Adapter setup is invalid. Cannot nest {child} in {adapter_composition}") - # recursively validate children - validate_composition(child, level=level + 1) - - -def parse_composition(adapter_composition, level=0, model_type=None) -> AdapterCompositionBlock: - """ - Parses and validates a setup of adapters. - - Args: - adapter_composition: The adapter setup to be parsed. - level (int, optional): If set to none, disables validation. Defaults to 0. - """ - if not adapter_composition: - return None - elif isinstance(adapter_composition, AdapterCompositionBlock): - if level is not None: - validate_composition(adapter_composition, level=level, model_type=model_type) - return adapter_composition - elif isinstance(adapter_composition, str): - if level == 0: - return Stack(adapter_composition) - else: - return adapter_composition - elif isinstance(adapter_composition, Sequence): - # for backwards compatibility - if level == 1: - block_class = Fuse - else: - block_class = Stack - level = level + 1 if level is not None else None - return block_class(*[parse_composition(b, level) for b in adapter_composition]) - else: - raise TypeError(adapter_composition) - - -def parse_heads_from_composition(adapter_composition, reference_heads: list = None): - """ - Parses a potential head configuration from a setup of adapters. - - Args: - adapter_composition: The adapter setup to be parsed. - reference_heads: The list of available to validate the retrieved head configuration against. - """ - final_block = adapter_composition - if isinstance(final_block, Stack): - final_block = final_block.children[-1] - - if isinstance(final_block, str) and (reference_heads is None or final_block in reference_heads): - return final_block - elif isinstance(final_block, Parallel): - return [a if isinstance(a, str) else a.last() for a in final_block.children] - elif isinstance(final_block, BatchSplit): - # Convert BatchSplit of adapters to a BatchSplit of heads. - blocks = [block.last() if isinstance(block, AdapterCompositionBlock) else block for block in final_block] - head_setup = BatchSplit(*blocks, batch_sizes=final_block.batch_sizes) - if reference_heads is None or all(head in reference_heads for head in head_setup): - return head_setup - else: - raise ValueError( - "Missing at least one head for the given BatchSplit setup. Expected heads: {}".format(blocks) - ) - else: - return None - - -def adjust_tensors_for_parallel(hidden_states, *tensors): - """ - Replicates a given list of tensors based on the shape of the reference tensor (first argument). - """ - outputs = [] - for tensor in tensors: - if tensor is not None and hidden_states.shape[0] >= tensor.shape[0]: - repeats = [1] * len(tensor.shape) - repeats[0] = hidden_states.shape[0] // tensor.shape[0] - new_tensor = tensor.repeat(*repeats) - outputs.append(new_tensor) - else: - outputs.append(tensor) - return tuple(outputs) - - -def adjust_tensors_for_parallel_(hidden_states, *tensors): - """ - In-place version of adjust_tensors_for_parallel(). - """ - for tensor in tensors: - if tensor is not None and hidden_states.shape[0] >= tensor.shape[0]: - repeats = [1] * len(tensor.shape) - repeats[0] = hidden_states.shape[0] // tensor.shape[0] - new_tensor = tensor.repeat(*repeats) - tensor.set_(new_tensor) - - -def match_attn_matrices_for_parallel(query, key, value) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - """ - Matches the shapes of query, key and value matrices for parallel composition. - """ - max_bsz = max(query.shape[0], key.shape[0], value.shape[0]) - - query = query.repeat(max_bsz // query.shape[0], *([1] * len(query.shape[1:]))) - key = key.repeat(max_bsz // key.shape[0], *([1] * len(key.shape[1:]))) - value = value.repeat(max_bsz // value.shape[0], *([1] * len(value.shape[1:]))) - - return query, key, value diff --git a/adapters/src/adapters/configuration/__init__.py b/adapters/src/adapters/configuration/__init__.py deleted file mode 100644 index f320c0a3..00000000 --- a/adapters/src/adapters/configuration/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -# flake8: noqa -from .adapter_config import * -from .adapter_fusion_config import * -from .model_adapters_config import ModelAdaptersConfig, build_full_config diff --git a/adapters/src/adapters/configuration/adapter_config.py b/adapters/src/adapters/configuration/adapter_config.py deleted file mode 100644 index c3b45ca3..00000000 --- a/adapters/src/adapters/configuration/adapter_config.py +++ /dev/null @@ -1,655 +0,0 @@ -import logging -from collections.abc import Mapping -from dataclasses import FrozenInstanceError, asdict, dataclass, field, replace -from typing import List, Optional, Union - -from ..utils import resolve_adapter_config - - -logger = logging.getLogger(__name__) - - -class AdapterConfig(Mapping): - """ - Base class for all adaptation methods. This class does not define specific configuration keys, but only provides - some common helper methods. - - Args: - architecture (str, optional): The type of adaptation method defined by the configuration. - """ - - architecture: Optional[str] = None - - def __init__(self): - raise TypeError("AdapterConfig is an abstract class and cannot be instantiated.") - - # We want to emulate a simple form of immutability while keeping the ability to add custom attributes. - # Therefore, we don't allow changing attribute values if set once. - def __setattr__(self, name, value): - if name in self.__dict__: - raise FrozenInstanceError() - else: - object.__setattr__(self, name, value) - - def __delattr__(self, name): - raise FrozenInstanceError() - - def __getitem__(self, key): - return self.__dict__[key] - - def __iter__(self): - return iter(self.__dict__) - - def __len__(self): - return len(self.__dict__) - - def __eq__(self, other): - return self.to_dict() == other.to_dict() - - def to_dict(self): - """Converts the config class to a Python dict.""" - return asdict(self) - - def replace(self, **changes): - """Returns a new instance of the config class with the specified changes applied.""" - return replace(self, **changes) - - @classmethod - def from_dict(cls, config): - """Creates a config class from a Python dict.""" - if isinstance(config, AdapterConfig): - return config - - # the constructor does not accept additional kwargs, so add them separately - defined_kwargs, new_kwargs = {}, {} - for k, v in config.items(): - if k in cls.__dataclass_fields__.keys(): - defined_kwargs[k] = v - else: - new_kwargs[k] = v - obj = cls(**defined_kwargs) - for k, v in new_kwargs.items(): - setattr(obj, k, v) - return obj - - @staticmethod - def _get_config_class(config_dict): - """ - Returns the matching config class for the given config dict based on its "architecture" key. - """ - architecture = config_dict.get("architecture", None) - if architecture == "prefix_tuning": - cls_new = PrefixTuningConfig - elif architecture == "lora": - cls_new = LoRAConfig - elif architecture == "union": - cls_new = ConfigUnion - elif architecture == "prompt_tuning": - cls_new = PromptTuningConfig - else: - cls_new = BnConfig - - return cls_new - - @classmethod - def load(cls, config: Union[dict, str], download_kwargs=None, **kwargs): - """ - Loads a given adapter configuration specifier into a full AdapterConfig instance. - - Args: - config (Union[dict, str]): The configuration to load. Can be either: - - - a dictionary representing the full config - - an identifier string available in ADAPTER_CONFIG_MAP - - the path to a file containing a full adapter configuration - - an identifier string available in Adapter-Hub - - Returns: - dict: The resolved adapter configuration dictionary. - """ - if not config: - return None - # if force_download is set, skip the local map - if download_kwargs and download_kwargs.get("force_download", False): - local_map = None - else: - local_map = ADAPTER_CONFIG_MAP - if download_kwargs: - config_dict = resolve_adapter_config(config, local_map=local_map, **download_kwargs) - else: - config_dict = resolve_adapter_config(config, local_map=local_map) - # convert back to dict to allow attr overrides - if isinstance(config_dict, AdapterConfig): - cls_new = config_dict.__class__ - config_dict = config_dict.to_dict() - else: - cls_new = cls._get_config_class(config_dict) - # The check for "None" is necessary because of the example script flags. - config_dict.update((k, v) for k, v in kwargs.items() if v is not None) - return cls_new.from_dict(config_dict) - - -@dataclass(eq=False) -class BnConfig(AdapterConfig): - """ - Base class that models the architecture of a bottleneck adapter. - - Args: - mh_adapter (:obj:`bool`): If True, add adapter modules after the multi-head attention block of each layer. - output_adapter (:obj:`bool`): If True, add adapter modules after the output FFN of each layer. - reduction_factor (:obj:`float` or :obj:`Mapping`): - Either a scalar float (> 0) specifying the reduction factor for all layers or a mapping from layer ID - (starting at 0) to values specifying the reduction_factor for individual layers. If not all layers are - represented in the mapping a default value should be given e.g. {'1': 8, '6': 32, 'default': 16}. - Specifying a reduction factor < 1 will result in an up-projection layer. - non_linearity (:obj:`str`): The activation function to use in the adapter bottleneck. - original_ln_before (:obj:`bool`, optional): - If True, apply layer pre-trained normalization and residual connection before the adapter modules. Defaults - to False. Only applicable if :obj:`is_parallel` is False. - original_ln_after (:obj:`bool`, optional): - If True, apply pre-trained layer normalization and residual connection after the adapter modules. Defaults - to True. - ln_before (:obj:`bool`, optional): If True, add a new layer normalization before the adapter bottleneck. - Defaults to False. - ln_after (:obj:`bool`, optional): If True, add a new layer normalization after the adapter bottleneck. - Defaults to False. - init_weights (:obj:`str`, optional): Initialization method for the weights of the adapter modules. - Currently, this can be either "bert" (default) or "mam_adapter". - is_parallel (:obj:`bool`, optional): If True, apply adapter transformations in parallel. - By default (False), sequential application is used. - scaling (:obj:`float` or :obj:`str`, optional): - Scaling factor to use for scaled addition of adapter outputs as done by He et al. (2021). Can be either a - constant factor (float) or the string "learned", in which case the scaling factor is learned. Defaults to - 1.0. - use_gating (:obj:`bool`, optional): - Place a trainable gating module besides the added parameter module to control module activation. This is - e.g. used for UniPELT. Defaults to False. - residual_before_ln (:obj:`bool` or :obj:`str`, optional): - If True, take the residual connection around the adapter bottleneck before the layer normalization. If set - to "post_add", take the residual connection around the adapter bottleneck after the previous residual - connection. Only applicable if :obj:`original_ln_before` is True. - adapter_residual_before_ln (:obj:`bool`, optional): - If True, apply the residual connection around the adapter modules before the new layer normalization within - the adapter. Only applicable if :obj:`ln_after` is True and :obj:`is_parallel` is False. - inv_adapter (:obj:`str`, optional): - If not None (default), add invertible adapter modules after the model embedding layer. Currently, this can - be either "nice" or "glow". - inv_adapter_reduction_factor (:obj:`float`, optional): - The reduction to use within the invertible adapter modules. Only applicable if :obj:`inv_adapter` is not - None. - cross_adapter (:obj:`bool`, optional): - If True, add adapter modules after the cross attention block of each decoder layer in an encoder-decoder - model. Defaults to False. - leave_out (:obj:`List[int]`, optional): - The IDs of the layers (starting at 0) where NO adapter modules should be added. - phm_layer (:obj:`bool`, optional): If True the down and up projection layers are a PHMLayer. - Defaults to False - phm_dim (:obj:`int`, optional): The dimension of the phm matrix. - Only applicable if `phm_layer` is set to `True`. Defaults to 4. - shared_phm_rule (:obj:`bool`, optional): Whether the phm matrix is shared across all layers. - Defaults to True - factorized_phm_rule (:obj:`bool`, optional): - Whether the phm matrix is factorized into a left and right matrix. Defaults to False. - learn_phm (:obj:`bool`, optional): Whether the phm matrix should be learned during training. - Defaults to True - factorized_phm_W (: - obj:`bool`, optional): Whether the weights matrix is factorized into a left and right matrix. Defaults to - True - shared_W_phm (:obj:`bool`, optional): Whether the weights matrix is shared across all layers. - Defaults to False. - phm_c_init (:obj:`str`, optional): The initialization function for the weights of the phm matrix. - The possible values are `["normal", "uniform"]`. Defaults to `normal`. - phm_init_range (:obj:`float`, optional): std for initializing phm weights if `phm_c_init="normal"`. - Defaults to 0.0001. - hypercomplex_nonlinearity (:obj:`str`, optional): - This specifies the distribution to draw the weights in the phm layer from. Defaults to `glorot-uniform`. - phm_rank (:obj:`int`, optional): - If the weight matrix is factorized this specifies the rank of the matrix. E.g. the left matrix of the down - projection has the shape (phm_dim, _in_feats_per_axis, phm_rank) and the right matrix (phm_dim, phm_rank, - _out_feats_per_axis). Defaults to 1 - phm_bias (:obj:`bool`, optional): - If True the down and up projection PHMLayer has a bias term. If `phm_layer` is False this is ignored. - Defaults to True - """ - - # Required options - mh_adapter: bool - output_adapter: bool - - reduction_factor: Union[float, Mapping] - non_linearity: str - - # Options with defaults - original_ln_before: bool = False - original_ln_after: bool = True - ln_before: bool = False - ln_after: bool = False - init_weights: str = "bert" - is_parallel: bool = False - scaling: Union[float, str] = 1.0 - use_gating: bool = False - residual_before_ln: Union[bool, str] = True - adapter_residual_before_ln: bool = False - inv_adapter: Optional[str] = None - inv_adapter_reduction_factor: Optional[float] = None - cross_adapter: bool = False - leave_out: List[int] = field(default_factory=list) - phm_layer: bool = False - phm_dim: int = 4 - factorized_phm_W: Optional[bool] = True - shared_W_phm: Optional[bool] = False - shared_phm_rule: Optional[bool] = True - factorized_phm_rule: Optional[bool] = False - phm_c_init: Optional[str] = "normal" - phm_init_range: Optional[float] = 0.0001 - learn_phm: Optional[bool] = True - hypercomplex_nonlinearity: Optional[str] = "glorot-uniform" - phm_rank: Optional[int] = 1 - phm_bias: Optional[bool] = True - - # We want to emulate a simple form of immutability while keeping the ability to add custom attributes. - # Therefore, we don't allow changing attribute values if set once. - def __setattr__(self, name, value): - if name in self.__dict__: - raise FrozenInstanceError() - elif name == "invertible_adapter": - # This is for backwards compatibility. In v1, invertible adapters were specified in a nested config dict. - # Now, we have two config keys directly in the adapter config. - if value: - object.__setattr__(self, "inv_adapter", value["block_type"]) - object.__setattr__(self, "inv_adapter_reduction_factor", value["reduction_factor"]) - else: - object.__setattr__(self, name, value) - - -@dataclass(eq=False) -class SeqBnConfig(BnConfig): - """ - The adapter architecture proposed by Pfeiffer et al. (2020). See https://arxiv.org/pdf/2005.00247.pdf. - """ - - original_ln_before: bool = True - original_ln_after: bool = True - residual_before_ln: Union[bool, str] = True - adapter_residual_before_ln: bool = False - ln_before: bool = False - ln_after: bool = False - mh_adapter: bool = False - output_adapter: bool = True - non_linearity: str = "relu" - reduction_factor: Union[float, Mapping] = 16 - - -@dataclass(eq=False) -class CompacterPlusPlusConfig(SeqBnConfig): - """ - The Compacter++ architecture proposed by Mahabadi et al. (2021). See https://arxiv.org/pdf/2106.04647.pdf. - """ - - phm_layer: bool = True - reduction_factor: Union[float, Mapping] = 32 - non_linearity: str = "gelu" - - -@dataclass(eq=False) -class SeqBnInvConfig(SeqBnConfig): - """ - The adapter architecture proposed by Pfeiffer et al. (2020). See https://arxiv.org/pdf/2005.00247.pdf. - """ - - inv_adapter: Optional[str] = "nice" - inv_adapter_reduction_factor: Optional[float] = 2 - - -@dataclass(eq=False) -class DoubleSeqBnConfig(BnConfig): - """ - The adapter architecture proposed by Houlsby et al. (2019). See https://arxiv.org/pdf/1902.00751.pdf. - """ - - original_ln_before: bool = False - original_ln_after: bool = True - residual_before_ln: Union[bool, str] = True - adapter_residual_before_ln: bool = False - ln_before: bool = False - ln_after: bool = False - mh_adapter: bool = True - output_adapter: bool = True - non_linearity: str = "swish" - reduction_factor: Union[float, Mapping] = 16 - - -@dataclass(eq=False) -class CompacterConfig(DoubleSeqBnConfig): - """ - The Compacter architecture proposed by Mahabadi et al. (2021). See https://arxiv.org/pdf/2106.04647.pdf. - """ - - phm_layer: bool = True - reduction_factor: Union[float, Mapping] = 32 - non_linearity: str = "gelu" - - -@dataclass(eq=False) -class DoubleSeqBnInvConfig(DoubleSeqBnConfig): - """ - The adapter architecture proposed by Houlsby et. al. (2019). See https://arxiv.org/pdf/1902.00751.pdf. - """ - - inv_adapter: Optional[str] = "nice" - inv_adapter_reduction_factor: Optional[float] = 2 - - -@dataclass(eq=False) -class ParBnConfig(BnConfig): - """ - The parallel adapter architecture proposed by He et al. (2021). See https://arxiv.org/pdf/2110.04366.pdf. - """ - - original_ln_before: bool = False - original_ln_after: bool = True - ln_before: bool = False - ln_after: bool = False - mh_adapter: bool = False - output_adapter: bool = True - non_linearity: str = "relu" - reduction_factor: Union[float, Mapping] = 2 - - init_weights: str = "mam_adapter" - is_parallel: bool = True - scaling: Union[float, str] = 4.0 - - -@dataclass(eq=False) -class PrefixTuningConfig(AdapterConfig): - """ - The Prefix Tuning architecture proposed by Li & Liang (2021). See https://arxiv.org/pdf/2101.00190.pdf. - - Args: - encoder_prefix (bool): If True, add prefixes to the encoder of an encoder-decoder model. - cross_prefix (bool): If True, add prefixes to the cross attention of an encoder-decoder model. - flat (bool): If True, train the prefix parameters directly. Otherwise, reparametrize using a bottleneck MLP. - prefix_length (int): The length of the prefix. - bottleneck_size (int): If flat=False, the size of the bottleneck MLP. - non_linearity (str): If flat=False, the non-linearity used in the bottleneck MLP. - dropout (float): The dropout rate used in the prefix tuning layer. - leave_out (List[int]): The IDs of the layers (starting at 0) where NO prefix should be added. - use_gating (:obj:`bool`, optional): - Place a trainable gating module besides the added parameter module to control module activation. This is - e.g. used for UniPELT. Defaults to False. - shared_gating (: - obj:`bool`, optional): Whether to use a shared gate for the prefixes of all attention matrices. Only - applicable if `use_gating=True`. Defaults to True. - """ - - architecture: Optional[str] = "prefix_tuning" - - encoder_prefix: bool = True - cross_prefix: bool = True - leave_out: List[int] = field(default_factory=list) - - flat: bool = False - prefix_length: int = 30 - bottleneck_size: int = 512 - non_linearity: str = "tanh" - dropout: float = 0.0 - use_gating: bool = False - shared_gating: bool = True - - -@dataclass(eq=False) -class PromptTuningConfig(AdapterConfig): - """ - The Prompt Tuning architecture proposed by Lester et al. (2021). See https://arxiv.org/pdf/2104.08691.pdf - - Args: - prompt_length (int): The number of tokens in the prompt. - Defaults to 10. - prompt_init (str): The initialization method for the prompt. Can be either "random_uniform" or "from_string". - Defaults to "random_uniform". - prompt_init_text (str): The text to use for prompt initialization if prompt_init="from_string". - random_uniform_scale (float): The scale of the random uniform initialization if prompt_init="random_uniform". - Defaults to 0.5 as in the paper. - combine (str): - The method used to combine the prompt with the input. Can be either "prefix" or "prefix_after_bos". - Defaults to "prefix". - """ - - architecture: str = "prompt_tuning" - - prompt_length: int = 10 - prompt_init: str = "random_uniform" - prompt_init_text: Optional[str] = None - random_uniform_scale = 0.5 - combine: str = "prefix" - - -@dataclass(eq=False) -class LoRAConfig(AdapterConfig): - """ - The Low-Rank Adaptation (LoRA) architecture proposed by Hu et al. (2021). See https://arxiv.org/pdf/2106.09685.pdf. - LoRA adapts a model by reparametrizing the weights of a layer matrix. You can merge the additional weights with the - original layer weights using ``model.merge_adapter("lora_name")``. - - Args: - selfattn_lora (bool, optional): If True, add LoRA to the self-attention weights of a model. - Defaults to True. - intermediate_lora (bool, optional): If True, add LoRA to the intermediate MLP weights of a model. - Defaults to False. - output_lora (bool, optional): If True, add LoRA to the output MLP weights of a model. - Defaults to False. - leave_out (:obj:`List[int]`, optional): - The IDs of the layers (starting at 0) where NO adapter modules should be added. - r (int, optional): The rank of the LoRA layer. Defaults to 8. - alpha (int, optional): The hyperparameter used for scaling the LoRA reparametrization. Defaults to 8. - dropout (float, optional): The dropout rate used in the LoRA layer. Defaults to 0.0. - attn_matrices (List[str], optional): Determines which matrices of the self-attention module to adapt. - A list that may contain the strings "q" (query), "k" (key), "v" (value). Defaults to ["q", "v"]. - composition_mode (str, optional): - Defines how the injected weights are composed with the original model weights. Can be either "add" - (addition of decomposed matrix, as in LoRA) or "scale" (element-wise multiplication of vector, as in - (IA)^3). "scale" can only be used together with r=1. Defaults to "add". - init_weights (:obj:`str`, optional): Initialization method for the weights of the LoRA modules. - Currently, this can be either "lora" (default) or "bert". - use_gating (:obj:`bool`, optional): - Place a trainable gating module besides the added parameter module to control module activation. This is - e.g. used for UniPELT. Defaults to False. Note that modules with use_gating=True cannot be merged using - `merge_adapter()`. - """ - - architecture: Optional[str] = "lora" - - selfattn_lora: bool = True - intermediate_lora: bool = False - output_lora: bool = False - leave_out: List[int] = field(default_factory=list) - - r: int = 8 - alpha: int = 8 - dropout: float = 0.0 - attn_matrices: List[str] = field(default_factory=lambda: ["q", "v"]) - composition_mode: str = "add" - init_weights: str = "lora" - use_gating: bool = False - - -@dataclass(eq=False) -class IA3Config(LoRAConfig): - """ - The 'Infused Adapter by Inhibiting and Amplifying Inner Activations' ((IA)^3) architecture proposed by Liu et al. - (2022). See https://arxiv.org/pdf/2205.05638.pdf. (IA)^3 builds on top of LoRA, however, unlike the additive - composition of LoRA, it scales weights of a layer using an injected vector. - """ - - selfattn_lora: bool = True - intermediate_lora: bool = True - output_lora: bool = False - leave_out: List[int] = field(default_factory=list) - - r: int = 1 - alpha: int = 1 - dropout: float = 0.0 - attn_matrices: List[str] = field(default_factory=lambda: ["k", "v"]) - composition_mode: str = "scale" - init_weights: str = "ia3" - use_gating: bool = False - - -class ConfigUnion(AdapterConfig): - """ - Composes multiple adaptation method configurations into one. This class can be used to define complex adaptation - method setups. - """ - - architecture: Optional[str] = "union" - - configs: List[AdapterConfig] - - def __init__(self, *configs: List[AdapterConfig]): - self.validate(configs) - self.configs = configs - - @staticmethod - def validate(configs): - """ - Performs simple validations of a list of configurations to check whether they can be combined to a common - setup. - - Args: - configs (List[AdapterConfig]): list of configs to check. - - Raises: - TypeError: One of the configurations has a wrong type. ValueError: At least two given configurations - conflict. - """ - # perform single config checks - for config in configs: - if not isinstance(config, AdapterConfig): - raise TypeError(f"{config} is not an instance of AdapterConfig") - elif isinstance(config, ConfigUnion): - raise TypeError(f"{config} of type {type(config)} is not supported in a config union.") - # perform pairwise check - for c_a, c_b in [(c_a, c_b) for i, c_a in enumerate(configs) for j, c_b in enumerate(configs) if i > j]: - if c_a.architecture != c_b.architecture: - continue - # if at least one config specifies a leave_out, we cannot make a final decision at this point - elif c_a.get("leave_out", []) or c_b.get("leave_out", []): - continue - elif c_a.architecture is None or c_a.architecture == "bottleneck": - is_valid = c_a.mh_adapter != c_b.mh_adapter and c_a.output_adapter != c_b.output_adapter - if not is_valid: - raise ValueError(f"{c_a} and {c_b} cannot be combined.") - else: - continue - # at this point, we know that the architectures are the same - raise ValueError(f"{c_a} and {c_b} have the same adapter architecture and cannot be combined.") - - def __getitem__(self, key): - if isinstance(key, int): - return self.configs[key] - elif hasattr(self, key): - return getattr(self, key) - else: - i, k = key.split(".") - return self.configs[int(i)][k] - - def __iter__(self): - for i, c in enumerate(self.configs): - for k in iter(c): - yield f"{i}.{k}" - - def __len__(self): - return sum([len(c) for c in self.configs]) - - def __eq__(self, other): - return all([c_a == c_b for c_a, c_b in zip(self.configs, other.configs)]) - - def to_dict(self): - return {"architecture": self.architecture, "configs": [c.to_dict() for c in self.configs]} - - def replace(self, **changes): - return ConfigUnion(*[c.replace(**changes) for c in self.configs]) - - @classmethod - def from_dict(cls, config): - if isinstance(config, AdapterConfig): - return config - - configs = [] - for c in config["configs"]: - config_class = cls._get_config_class(c) - configs.append(config_class.from_dict(c)) - - return cls(*configs) - - -class MAMConfig(ConfigUnion): - """ - The Mix-And-Match adapter architecture proposed by He et al. (2021). See https://arxiv.org/pdf/2110.04366.pdf. - """ - - def __init__(self, prefix_tuning: Optional[PrefixTuningConfig] = None, adapter: Optional[BnConfig] = None): - prefix_tuning = prefix_tuning or PrefixTuningConfig(bottleneck_size=800) - adapter = adapter or ParBnConfig() - - assert isinstance(prefix_tuning, PrefixTuningConfig) - assert isinstance(adapter, BnConfig) - super().__init__(prefix_tuning, adapter) - - @property - def prefix_tuning(self): - return self[0] - - @property - def adapter(self): - return self[1] - - -class UniPELTConfig(ConfigUnion): - """ - The UniPELT adapter architecture proposed by Mao et al. (2022). See https://arxiv.org/pdf/2110.07577.pdf. - """ - - def __init__( - self, - prefix_tuning: Optional[PrefixTuningConfig] = None, - adapter: Optional[BnConfig] = None, - lora: Optional[LoRAConfig] = None, - ): - components = [ - prefix_tuning or PrefixTuningConfig(prefix_length=10), - adapter or SeqBnConfig(reduction_factor=16), - lora or LoRAConfig(r=8), - ] - - super().__init__(*[c.replace(use_gating=True) for c in components]) - - -# IMPORTANT: When adding a new config here, also add it to docs/overview.md! -ADAPTER_CONFIG_MAP = { - # DEPRECATED STRINGS - "pfeiffer": SeqBnConfig(), - "houlsby": DoubleSeqBnConfig(), - "parallel": ParBnConfig(), - "scaled_parallel": ParBnConfig(scaling="learned"), - "pfeiffer+inv": SeqBnInvConfig(), - "houlsby+inv": DoubleSeqBnInvConfig(), - # CURRENT STRINGS - "seq_bn": SeqBnConfig(), - "double_seq_bn": DoubleSeqBnConfig(), - "par_bn": ParBnConfig(), - "scaled_par_bn": ParBnConfig(scaling="learned"), - "seq_bn_inv": SeqBnInvConfig(), - "double_seq_bn_inv": DoubleSeqBnInvConfig(), - "compacter++": CompacterPlusPlusConfig(), - "compacter": CompacterConfig(), - "prefix_tuning": PrefixTuningConfig(), - "prefix_tuning_flat": PrefixTuningConfig(flat=True), - "prompt_tuning": PromptTuningConfig(), - "lora": LoRAConfig(), - "ia3": IA3Config(), - "mam": MAMConfig(), - "unipelt": UniPELTConfig(), -} - -DEFAULT_ADAPTER_CONFIG = "seq_bn" diff --git a/adapters/src/adapters/configuration/adapter_fusion_config.py b/adapters/src/adapters/configuration/adapter_fusion_config.py deleted file mode 100644 index 552bcdbe..00000000 --- a/adapters/src/adapters/configuration/adapter_fusion_config.py +++ /dev/null @@ -1,85 +0,0 @@ -from dataclasses import dataclass -from typing import Union - -from ..utils import resolve_adapter_config -from .adapter_config import AdapterConfig - - -@dataclass(eq=False) -class AdapterFusionConfig(AdapterConfig): - """Base class that models the architecture of an adapter fusion layer.""" - - key: bool - query: bool - value: bool - query_before_ln: bool - regularization: bool - residual_before: bool - temperature: bool - value_before_softmax: bool - value_initialized: str - dropout_prob: float - - @classmethod - def load(cls, config: Union[dict, str], **kwargs): - """ - Loads a given adapter fusion configuration specifier into a full AdapterFusionConfig instance. - - Args: - config (Union[dict, str]): The configuration to load. Can be either: - - - a dictionary representing the full config - - an identifier string available in ADAPTERFUSION_CONFIG_MAP - - the path to a file containing a full adapter fusion configuration - - Returns: - dict: The resolved adapter fusion configuration dictionary. - """ - # currently storing AdapterFusion weights on AdapterHub is not supported. - config_dict = resolve_adapter_config(config, local_map=ADAPTERFUSION_CONFIG_MAP, try_loading_from_hub=False) - # convert back to dict to allow attr overrides - if isinstance(config_dict, AdapterFusionConfig): - config_dict = config_dict.to_dict() - config_dict.update(kwargs) - return AdapterFusionConfig.from_dict(config_dict) - - -@dataclass(eq=False) -class StaticAdapterFusionConfig(AdapterFusionConfig): - """ - Static version of adapter fusion without a value matrix. See https://arxiv.org/pdf/2005.00247.pdf. - """ - - key: bool = True - query: bool = True - value: bool = False - query_before_ln: bool = False - regularization: bool = False - residual_before: bool = False - temperature: bool = False - value_before_softmax: bool = True - value_initialized: str = False - dropout_prob: float = None - - -@dataclass(eq=False) -class DynamicAdapterFusionConfig(AdapterFusionConfig): - """ - Dynamic version of adapter fusion with a value matrix and regularization. See https://arxiv.org/pdf/2005.00247.pdf. - """ - - key: bool = True - query: bool = True - value: bool = True - query_before_ln: bool = False - regularization: bool = True - residual_before: bool = False - temperature: bool = False - value_before_softmax: bool = True - value_initialized: str = True - dropout_prob: float = None - - -ADAPTERFUSION_CONFIG_MAP = {"static": StaticAdapterFusionConfig(), "dynamic": DynamicAdapterFusionConfig()} - -DEFAULT_ADAPTERFUSION_CONFIG = "dynamic" diff --git a/adapters/src/adapters/configuration/model_adapters_config.py b/adapters/src/adapters/configuration/model_adapters_config.py deleted file mode 100644 index 3f4c3023..00000000 --- a/adapters/src/adapters/configuration/model_adapters_config.py +++ /dev/null @@ -1,241 +0,0 @@ -import copy -import logging -from collections.abc import Collection, Mapping -from typing import List, Optional, Union - -from .. import __version__ -from ..composition import AdapterCompositionBlock -from ..utils import get_adapter_config_hash -from .adapter_config import ADAPTER_CONFIG_MAP, DEFAULT_ADAPTER_CONFIG, AdapterConfig, ConfigUnion -from .adapter_fusion_config import ADAPTERFUSION_CONFIG_MAP, DEFAULT_ADAPTERFUSION_CONFIG - - -logger = logging.getLogger(__name__) - - -class ModelAdaptersConfig(Collection): - """This class manages the setup and configuration of adapter modules in a pre-trained model.""" - - def __init__(self, **kwargs): - adapters_list = kwargs.pop("adapters", {}) - # this is for backwards compability: in v1.x, self.adapters values had shape (, ) - adapters_list = dict( - map(lambda t: (t[0], t[1][1] or t[1][0] if isinstance(t[1], tuple) else t[1]), adapters_list.items()) - ) - self.adapters: Mapping[str, str] = adapters_list - self.config_map = kwargs.pop("config_map", {}) - - self.fusions: Mapping[str, str] = kwargs.pop("fusions", {}) - self.fusion_config_map = kwargs.pop("fusion_config_map", {}) - - # TODO-V2 Save this with config? - self.active_setup: Optional[AdapterCompositionBlock] = None - self.skip_layers = None - - def __contains__(self, item): - return item in self.adapters.keys() - - def __iter__(self): - return iter(self.adapters) - - def __len__(self): - return len(self.adapters) - - def get(self, adapter_name: str) -> Optional[dict]: - """ - Gets the config dictionary for a given adapter. - - Args: - adapter_name (str): The name of the adapter. - - Returns: - Mapping: The adapter configuration. - """ - if adapter_name in self.adapters: - config_name = self.adapters[adapter_name] - if config_name in self.config_map: - config = self.config_map.get(config_name, None) - else: - config = ADAPTER_CONFIG_MAP.get(config_name, None) - if isinstance(config, str): - config = ADAPTER_CONFIG_MAP[config] - else: - config = None - return config - - def match( - self, - adapter_name: str, - config_type: type, - layer_idx: Optional[int] = None, - location_key: Optional[str] = None, - ) -> Optional[dict]: - """ - Tries to match the given criteria to an existing adapter. Return the adapter config if a match is found, - otherwise None. - """ - config = self.get(adapter_name) - if config is None: - return None - elif not isinstance(config, AdapterConfig): - config = AdapterConfig.load(config) - - if isinstance(config, config_type): - leave_out = config.get("leave_out", []) - if layer_idx is None or layer_idx not in leave_out: - if location_key is None or config.get(location_key, False): - return config - # if we have a config union, match with all child configs - elif isinstance(config, ConfigUnion): - results = [] - for c in config.configs: - if isinstance(c, config_type): - leave_out = c.get("leave_out", []) - if layer_idx is None or layer_idx not in leave_out: - if location_key is None or c.get(location_key, False): - results.append(c) - if len(results) == 1: - return results[0] - elif len(results) > 1: - raise ValueError( - "Multiple adapter definitions conflict for adapter '{}' in layer {}. " - "Please make sure there is only one adaptation block used per location and adapter.".format( - adapter_name, layer_idx - ) - ) - - return None - - def add(self, adapter_name: str, config: Optional[Union[str, dict]] = None): - """ - Adds a new adapter of the name to the model config. - - Args: - adapter_name (str): The name of the adapter. - config (Optional[Union[str, dict]], optional): The adapter config. Defaults to None. - """ - if adapter_name in self.adapters: - raise ValueError(f"An adapter with the name '{adapter_name}' has already been added.") - if config is None: - config = DEFAULT_ADAPTER_CONFIG - if isinstance(config, str): - if config not in ADAPTER_CONFIG_MAP and config not in self.config_map: - raise ValueError(f"Invalid adapter config identifier '{config}'.") - config_name = config - # if it's a dict, compute it's hash and add a new entry to the config map - elif isinstance(config, Mapping): - config_name = get_adapter_config_hash(config) - self.config_map[config_name] = AdapterConfig.load(config) - else: - raise ValueError("Invalid adapter config: {}".format(config)) - self.adapters[adapter_name] = config_name - logger.info(f"Adding adapter '{adapter_name}'.") - - def get_fusion(self, fusion_name: Union[str, List[str]]) -> Optional[dict]: - """ - Gets the config dictionary for a given AdapterFusion. - - Args: - fusion_name (Union[str, List[str]]): The name of the AdapterFusion or the adapters to fuse. - - Returns: - Optional[dict]: The AdapterFusion configuration. - """ - if isinstance(fusion_name, list): - fusion_name = ",".join(fusion_name) - if fusion_name in self.fusions: - config_name = self.fusions[fusion_name] - if config_name in self.fusion_config_map: - config = self.fusion_config_map.get(config_name, None) - else: - config = ADAPTERFUSION_CONFIG_MAP.get(config_name, None) - else: - config = None - return config - - def add_fusion(self, fusion_name: Union[str, List[str]], config: Optional[Union[str, dict]] = None): - """ - Adds a new AdapterFusion. - - Args: - fusion_name (Union[str, List[str]]): The name of the AdapterFusion or the adapters to fuse. - config (Optional[Union[str, dict]], optional): AdapterFusion config. Defaults to None. - """ - if isinstance(fusion_name, list): - fusion_name = ",".join(fusion_name) - if fusion_name in self.fusions: - raise ValueError(f"An AdapterFusion with the name '{fusion_name}' has already been added.") - if config is None: - config = DEFAULT_ADAPTERFUSION_CONFIG - if isinstance(config, str): - if config not in ADAPTERFUSION_CONFIG_MAP and config not in self.fusion_config_map: - raise ValueError(f"Invalid AdapterFusion config identifier '{config}'.") - config_name = config - # if it's a dict, compute it's hash and add a new entry to the config map - elif isinstance(config, Mapping): - config_name = get_adapter_config_hash(config) - self.fusion_config_map[config_name] = config - else: - raise ValueError("Invalid AdapterFusion config: {}".format(config)) - self.fusions[fusion_name] = config_name - logger.info(f"Adding AdapterFusion '{fusion_name}'.") - - def common_config_value(self, adapter_names: list, attribute: str): - """ - Checks whether all adapters in a list share the same config setting for a given attribute and returns the - shared value. - - Args: - adapter_names (list): The adapters to check. - attribute (str): The config attribute to check. - """ - common_value = None - for i, name in enumerate(adapter_names): - config = self.get(name) - if not config: - raise ValueError( - f"No adapter with name '{name}' found. Make sure that an adapter with this name is loaded." - ) - config_value = config.get(attribute, None) - if i > 0 and config_value != common_value: - raise ValueError(f"All given adapters must define the same value for config attribute {attribute}.") - common_value = config_value - return common_value - - def to_dict(self): - output_dict = {} - output_dict["adapters"] = copy.deepcopy(self.adapters) - output_dict["config_map"] = {} - for k, v in self.config_map.items(): - if isinstance(v, AdapterConfig): - output_dict["config_map"][k] = v.to_dict() - else: - output_dict["config_map"][k] = copy.deepcopy(v) - output_dict["fusions"] = copy.deepcopy(self.fusions) - output_dict["fusion_config_map"] = {} - for k, v in self.fusion_config_map.items(): - if isinstance(v, AdapterConfig): - output_dict["fusion_config_map"][k] = v.to_dict() - else: - output_dict["fusion_config_map"][k] = copy.deepcopy(v) - return output_dict - - def __eq__(self, other): - return isinstance(other, ModelAdaptersConfig) and (self.__dict__ == other.__dict__) - - -def build_full_config(adapter_config, model_config, save_id2label=False, **kwargs): - config_dict = { - "model_type": model_config.model_type, - # some models such as encoder-decoder don't have a model-wide hidden size - "hidden_size": getattr(model_config, "hidden_size", None), - } - config_dict.update(kwargs) - if not hasattr(model_config, "prediction_heads") and save_id2label: - config_dict["label2id"] = model_config.label2id - if isinstance(adapter_config, AdapterConfig): - config_dict["config"] = adapter_config.to_dict() - else: - config_dict["config"] = adapter_config - config_dict["version"] = __version__ - return config_dict diff --git a/adapters/src/adapters/context.py b/adapters/src/adapters/context.py deleted file mode 100644 index 70e685d0..00000000 --- a/adapters/src/adapters/context.py +++ /dev/null @@ -1,151 +0,0 @@ -import functools -import threading - -from .composition import parse_composition, parse_heads_from_composition - - -class AdapterSetup: - """ - Represents an adapter setup of a model including active adapters and active heads. This class is intended to be - used as a context manager using the ``with`` statement. The setup defined by the ``AdapterSetup`` context will - override static adapter setups defined in a model (i.e. setups specified via ``active_adapters``). - - Example:: - - with AdapterSetup(Stack("a", "b")): - # will use the adapter stack "a" and "b" outputs = model(**inputs) - - Note that the context manager is thread-local, i.e. it can be used with different setups in a multi-threaded - environment. - """ - - # thread-local storage that holds a stack of active contexts - storage = threading.local() - - def __init__(self, adapter_setup, head_setup=None, ignore_empty: bool = False): - self.adapter_setup = parse_composition(adapter_setup) - if head_setup: - self.head_setup = head_setup - else: - self.head_setup = parse_heads_from_composition(self.adapter_setup) - self._empty = ignore_empty and self.adapter_setup is None and self.head_setup is None - - def __enter__(self): - if not self._empty: - AdapterSetup.get_contexts().append(self) - return self - - def __exit__(self, type, value, traceback): - if not self._empty: - AdapterSetup.get_contexts().pop() - - @classmethod - def get_contexts(cls): - if not hasattr(cls.storage, "contexts"): - cls.storage.contexts = [] - return cls.storage.contexts - - @classmethod - def get_context(cls): - try: - return cls.get_contexts()[-1] - except IndexError: - return None - - @classmethod - def get_context_adapter_setup(cls): - context = cls.get_context() - if context: - return context.adapter_setup - return None - - @classmethod - def get_context_head_setup(cls): - context = cls.get_context() - if context: - return context.head_setup - return None - - -class ForwardContext: - """ - Holds context information during a forward pass through a model. This class should be used via the - ``ForwardContext.wrap()`` method. - - Note that the context is thread-local. - """ - - # thread-local storage that holds a stack of active contexts - storage = threading.local() - - context_attributes = [ - "adapter_gating_scores", - "adapter_fusion_attentions", - "adapter_input_parallelized", - ] - # Additional used attributes not exposed to the user - # - prompt_tokens_length: length of the prompt tokens - - def __init__(self, model, *args, **kwargs): - # If the model has a method ``forward_context()``, use it to create the context. - if hasattr(model, "forward_context"): - model.forward_context(self, *args, **kwargs) - - def __enter__(self): - ForwardContext.get_contexts().append(self) - return self - - def __exit__(self, type, value, traceback): - ForwardContext.get_contexts().pop() - - @classmethod - def wrap(cls, f): - """ - Decorator method that wraps a ``forward()`` function of a model class. - """ - - @functools.wraps(f) - def wrapper_func(self, *args, **kwargs): - if self.adapters_config is not None: - with cls(self, *args, **kwargs) as ctx: - # whether to output the context attributes - output_context = kwargs.pop("output_context", False) - kwargs = { - k: v for k, v in kwargs.items() if k.replace("output_", "") not in cls.context_attributes - } - results = f(self, *args, **kwargs) - - # append output attributes - if isinstance(results, tuple): - for attr in cls.context_attributes: - if getattr(ctx, "output_" + attr, False): - results = results + (dict(getattr(ctx, attr)),) - else: - for attr in cls.context_attributes: - if getattr(ctx, "output_" + attr, False): - results[attr] = dict(getattr(ctx, attr)) - - if output_context: - context_dict = ctx.__dict__ - - if output_context: - return results, context_dict - else: - return results - else: - return f(self, *args, **kwargs) - - return wrapper_func - - @classmethod - def get_contexts(cls): - if not hasattr(cls.storage, "contexts"): - cls.storage.contexts = [] - return cls.storage.contexts - - @classmethod - def get_context(cls): - try: - return cls.get_contexts()[-1] - except IndexError: - return None diff --git a/adapters/src/adapters/head_utils.py b/adapters/src/adapters/head_utils.py deleted file mode 100644 index d0caeecf..00000000 --- a/adapters/src/adapters/head_utils.py +++ /dev/null @@ -1,749 +0,0 @@ -import copy -import logging -import re - - -logger = logging.getLogger(__name__) - - -# The "layers" attributes in the configs below map from static head module names to flex head module names. -# In this context, "None" refers to a flex-head layer without weights (e.g. dropout, acts). -STATIC_TO_FLEX_HEAD_MAP = { - # ALBERT - "AlbertForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 1, - "activation_function": None, - "use_pooler": True, - }, - "layers": [None, "classifier"], - }, - "AlbertForMultipleChoice": { - "config": { - "head_type": "multiple_choice", - "layers": 1, - "activation_function": None, - "use_pooler": True, - }, - "layers": [None, "classifier"], - }, - "AlbertForTokenClassification": { - "config": { - "head_type": "tagging", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "classifier"], - }, - "AlbertForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "AlbertForMaskedLM": { - "config": { - "head_type": "masked_lm", - "layers": 2, - "activation_function": "gelu_new", - "layer_norm": True, - "bias": True, - }, - "layers": [ - "predictions.dense", - None, - "predictions.LayerNorm", - "predictions.decoder", - ], - }, - # BEIT - "BeitForImageClassification": { - "config": { - "head_type": "image_classification", - "layers": 1, - "activation_function": None, - "use_pooler": True, - }, - "layers": [None, "classifier"], - }, - # BERT - "BertForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 1, - "activation_function": None, - "use_pooler": True, - }, - "layers": [None, "classifier"], - }, - "BertForMultipleChoice": { - "config": { - "head_type": "multiple_choice", - "layers": 1, - "activation_function": None, - "use_pooler": True, - }, - "layers": [None, "classifier"], - }, - "BertForTokenClassification": { - "config": { - "head_type": "tagging", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "classifier"], - }, - "BertForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "BertForMaskedLM": { - "config": { - "head_type": "masked_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": [ - "cls.predictions.transform.dense", - None, - "cls.predictions.transform.LayerNorm", - "cls.predictions.decoder", - ], - }, - "BertLMHeadModel": { - "config": { - "head_type": "causal_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": [ - "cls.predictions.transform.dense", - None, - "cls.predictions.transform.LayerNorm", - "cls.predictions.decoder", - ], - }, - # BertGeneration - "BertGenerationDecoder": { - "config": { - "head_type": "causal_lm", - "layers": 1, - "activation_function": None, - "bias": True, - }, - "layers": [ - "lm_head.decoder", - ], - }, - # RoBERTa - "RobertaForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 2, - "activation_function": "tanh", - "use_pooler": False, - }, - "layers": [None, "classifier.dense", None, None, "classifier.out_proj"], - }, - "RobertaForMultipleChoice": { - "config": { - "head_type": "multiple_choice", - "layers": 1, - "activation_function": None, - "use_pooler": True, - }, - "layers": [None, "classifier"], - }, - "RobertaForTokenClassification": { - "config": { - "head_type": "tagging", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "classifier"], - }, - "RobertaForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "RobertaForMaskedLM": { - "config": { - "head_type": "masked_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], - }, - "RobertaForCausalLM": { - "config": { - "head_type": "causal_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], - }, - # XLM-RoBERTa - "XLMRobertaForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 2, - "activation_function": "tanh", - "use_pooler": False, - }, - "layers": [None, "classifier.dense", None, None, "classifier.out_proj"], - }, - "XLMRobertaForMultipleChoice": { - "config": { - "head_type": "multiple_choice", - "layers": 1, - "activation_function": None, - "use_pooler": True, - }, - "layers": [None, "classifier"], - }, - "XLMRobertaForTokenClassification": { - "config": { - "head_type": "tagging", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "classifier"], - }, - "XLMRobertaForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "XLMRobertaForMaskedLM": { - "config": { - "head_type": "masked_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], - }, - "XLMRobertaForCausalLM": { - "config": { - "head_type": "causal_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], - }, - # Xmod - "XmodForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 2, - "activation_function": "tanh", - "use_pooler": False, - }, - "layers": [None, "classifier.dense", None, None, "classifier.out_proj"], - }, - "XmodForMultipleChoice": { - "config": { - "head_type": "multiple_choice", - "layers": 1, - "activation_function": None, - "use_pooler": True, - }, - "layers": [None, "classifier"], - }, - "XmodForTokenClassification": { - "config": { - "head_type": "tagging", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "classifier"], - }, - "XmodForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "XmodForMaskedLM": { - "config": { - "head_type": "masked_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], - }, - "XmodForCausalLM": { - "config": { - "head_type": "causal_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": ["lm_head.dense", None, "lm_head.layer_norm", "lm_head.decoder"], - }, - # BART - "BartForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 2, - "activation_function": "tanh", - }, - "layers": [ - None, - "classification_head.dense", - None, - None, - "classification_head.out_proj", - ], - }, - "BartForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "BartForConditionalGeneration": { - "config": { - "head_type": "seq2seq_lm", - }, - "layers": ["lm_head"], - }, - # MBART - "MBartForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 2, - "activation_function": "tanh", - }, - "layers": [ - None, - "classification_head.dense", - None, - None, - "classification_head.out_proj", - ], - }, - "MBartForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "MBartForConditionalGeneration": { - "config": { - "head_type": "seq2seq_lm", - }, - "layers": ["lm_head"], - }, - # MT5 - "MT5ForConditionalGeneration": { - "config": { - "head_type": "seq2seq_lm", - }, - "layers": ["lm_head"], - }, - "MT5ForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "activation_function": None, - "layers": 1, - }, - "layers": [None, "qa_outputs"], - }, - "MT5ForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 2, - "activation_function": "tanh", - }, - "layers": [ - None, - "classification_head.dense", - None, - None, - "classification_head.out_proj", - ], - }, - # DistilBERT - "DistilBertForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 2, - "activation_function": "relu", - }, - "layers": [None, "pre_classifier", None, None, "classifier"], - }, - "DistilBertForMultipleChoice": { - "config": { - "head_type": "multiple_choice", - "layers": 2, - "activation_function": "relu", - }, - "layers": [None, "pre_classifier", None, None, "classifier"], - }, - "DistilBertForTokenClassification": { - "config": { - "head_type": "tagging", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "classifier"], - }, - "DistilBertForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "DistilBertForMaskedLM": { - "config": { - "head_type": "masked_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": ["vocab_transform", None, "vocab_layer_norm", "vocab_projector"], - }, - # GPT-2 - "GPT2ForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 1, - "activation_function": None, - "bias": False, - }, - "layers": [None, "score"], - }, - "GPT2LMHeadModel": { - "config": { - "head_type": "causal_lm", - }, - "layers": ["lm_head"], - }, - "GPT2ForTokenClassification": { - "config": { - "head_type": "tagging", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "classifier"], - }, - "GPT2ForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - # GPT-J - "GPTJForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 1, - "activation_function": None, - "bias": False, - }, - "layers": [None, "score"], - }, - "GPTJForCausalLM": { - "config": { - "head_type": "causal_lm", - "bias": True, - }, - "layers": ["lm_head"], - }, - "GPTJForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "T5ForConditionalGeneration": { - "config": { - "head_type": "seq2seq_lm", - }, - "layers": ["lm_head"], - }, - "T5ForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "activation_function": None, - "layers": 1, - }, - "layers": [None, "qa_outputs"], - }, - "T5ForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 2, - "activation_function": "tanh", - }, - "layers": [ - None, - "classification_head.dense", - None, - None, - "classification_head.out_proj", - ], - }, - "DebertaV2ForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 2, - "activation_function": "gelu", - "use_pooler": False, - }, - "layers": [None, "pooler.dense", None, None, "classifier"], - }, - "DebertaV2ForTokenClassification": { - "config": { - "head_type": "tagging", - "layers": 1, - "activation_function": None, - }, - "layers": ["dropout", "classifier"], - }, - "DebertaV2ForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "DebertaV2ForMaskedLM": { - "config": { - "head_type": "masked_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": [ - "cls.predictions.transform.dense", - None, - "cls.predictions.transform.LayerNorm", - "cls.predictions.decoder", - ], - }, - "DebertaV2ForMultipleChoice": { - "config": { - "head_type": "multiple_choice", - "layers": 2, - "activation_function": "gelu", - "use_pooler": False, - }, - "layers": [None, "pooler.dense", None, None, "classifier"], - }, - "DebertaForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 2, - "activation_function": "gelu", - "use_pooler": False, - }, - "layers": [None, "pooler.dense", None, None, "classifier"], - }, - "DebertaForTokenClassification": { - "config": { - "head_type": "tagging", - "layers": 1, - "activation_function": None, - }, - "layers": ["dropout", "classifier"], - }, - "DebertaForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "DebertaForMaskedLM": { - "config": { - "head_type": "masked_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": [ - "cls.predictions.transform.dense", - None, - "cls.predictions.transform.LayerNorm", - "cls.predictions.decoder", - ], - }, - # ViT - "ViTForImageClassification": { - "config": { - "head_type": "image_classification", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "classifier"], - }, - # Llama - "LlamaForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 1, - "dropout_prob": 0, - "activation_function": None, - "bias": False, - }, - "layers": [None, "score"], - }, - "LlamaForCausalLM": { - "config": { - "head_type": "causal_lm", - }, - "layers": ["lm_head"], - }, - "ElectraForTokenClassification": { - "config": { - "head_type": "tagging", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "classifier"], - }, - "ElectraForSequenceClassification": { - "config": { - "head_type": "classification", - "layers": 2, - "activation_function": "gelu", - "bias": True, - }, - "layers": [None, "classifier.dense", None, None, "classifier.out_proj"], - }, - "ElectraForQuestionAnswering": { - "config": { - "head_type": "question_answering", - "layers": 1, - "activation_function": None, - }, - "layers": [None, "qa_outputs"], - }, - "ElectraForMultipleChoice": { - "config": { - "head_type": "multiple_choice", - "layers": 2, - "activation_function": "gelu", - "use_pooler": False, - }, - "layers": [None, "sequence_summary.summary", None, None, "classifier"], - }, - "ElectraForMaskedLM": { - "config": { - "head_type": "masked_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": [ - "generator_predictions.dense", - None, - "generator_predictions.LayerNorm", - "generator_lm_head", - ], - }, - "ElectraForCausalLM": { - "config": { - "head_type": "causal_lm", - "layers": 2, - "activation_function": "gelu", - "layer_norm": True, - "bias": True, - }, - "layers": [ - "generator_predictions.dense", - None, - "generator_predictions.LayerNorm", - "generator_lm_head", - ], - }, -} - - -def _regex_list_rename_func(k, rename_list): - for o, n in rename_list: - match = re.match(o, k) - if match: - return n.format(match.group(1)) - return k - - -def get_head_config_and_rename_list(model_class_name, head_name, label2id, num_labels=None): - if label2id is None: - logger.warning( - "No valid map of labels in label2id. Falling back to default (num_labels=2). This may cause errors during" - " loading!" - ) - label2id = {"LABEL_" + str(i): i for i in range(2)} - # num_labels is optional (e.g. for regression, when no map given) - num_labels = num_labels or len(label2id) - data = STATIC_TO_FLEX_HEAD_MAP[model_class_name] - # copy config to keep original mapping untouched - config = copy.deepcopy(data["config"]) - if config["head_type"] == "multiple_choice": - config["num_choices"] = num_labels - config["label2id"] = label2id - elif config["head_type"] not in ["causal_lm", "masked_lm", "seq2seq_lm"]: - config["num_labels"] = num_labels - config["label2id"] = label2id - # rename - rename_list = [] - i = 0 - for name in data["layers"]: - if name is not None: - escaped_name = re.escape(name) - rename_list.append((rf"{escaped_name}\.(\S+)", f"heads.{head_name}.{i}.{{0}}")) - i += 1 - def rename_func(k, rename_list=rename_list): - return _regex_list_rename_func(k, rename_list) - - - return config, rename_func diff --git a/adapters/src/adapters/heads/__init__.py b/adapters/src/adapters/heads/__init__.py deleted file mode 100644 index a02c87fb..00000000 --- a/adapters/src/adapters/heads/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# flake8: noqa -from .base import * -from .dependency_parsing import * -from .language_modeling import BertStyleMaskedLMHead, CausalLMHead, Seq2SeqLMHead -from .model_mixin import ModelWithFlexibleHeadsAdaptersMixin diff --git a/adapters/src/adapters/heads/base.py b/adapters/src/adapters/heads/base.py deleted file mode 100644 index 3cfe9564..00000000 --- a/adapters/src/adapters/heads/base.py +++ /dev/null @@ -1,513 +0,0 @@ -import logging -from dataclasses import dataclass -from typing import List, Optional - -import torch -from torch import nn -from torch.nn import BCEWithLogitsLoss, CrossEntropyLoss, MSELoss - -from transformers.modeling_outputs import ( - ImageClassifierOutput, - MultipleChoiceModelOutput, - QuestionAnsweringModelOutput, - Seq2SeqModelOutput, - Seq2SeqQuestionAnsweringModelOutput, - Seq2SeqSequenceClassifierOutput, - SequenceClassifierOutput, - TokenClassifierOutput, -) -from transformers.utils import ModelOutput - -from ..composition import adjust_tensors_for_parallel -from ..methods.modeling import Activation_Function_Class - - -logger = logging.getLogger(__name__) - - -@dataclass -class MultiHeadOutput(ModelOutput): - head_outputs: List[ModelOutput] = None - loss: Optional[torch.FloatTensor] = None - - @property - def logits(self): - return torch.vstack([outputs["logits"] for outputs in self.head_outputs]) - - def __getitem__(self, k): - # with number indices the head output at that position is accessed - # e.g output[1] is equivalent to output.head_outputs[1] - if isinstance(k, int): - return self.head_outputs[k] - # with strings the attribute in the underlying dict can be adressed - # e.g output["loss"] is equivalent to output.loss - else: - return super().__getitem__(k) - - def __setitem__(self, k, v): - if isinstance(k, int): - self.head_outputs[k] = v - else: - return super().__setitem__(k, v) - - def __iter__(self): - # iterates over the head outputs - return iter(self.head_outputs) - - def __len__(self): - return len(self.head_outputs) - - -# Let this class inherit from nn.Sequential to provide iterable access as before -class PredictionHead(nn.Sequential): - def __init__(self, name): - super().__init__() - self.config = {} - self.name = name - - def build(self, model): - model_config = model.config - pred_head = [] - if "dropout_prob" in self.config and self.config["dropout_prob"] is not None: - dropout_prob = self.config["dropout_prob"] - elif hasattr(model_config, "classifier_dropout") and model_config.classifier_dropout is not None: - dropout_prob = model_config.classifier_dropout - else: - dropout_prob = model_config.hidden_dropout_prob - bias = self.config.get("bias", True) - for l_id in range(self.config["layers"]): - pred_head.append(nn.Dropout(dropout_prob)) - if l_id < self.config["layers"] - 1: - pred_head.append(nn.Linear(model_config.hidden_size, model_config.hidden_size)) - if self.config["activation_function"]: - pred_head.append(Activation_Function_Class(self.config["activation_function"])) - else: - if "num_labels" in self.config: - pred_head.append(nn.Linear(model_config.hidden_size, self.config["num_labels"], bias=bias)) - elif "num_choices" in self.config: # used for multiple_choice head - pred_head.append(nn.Linear(model_config.hidden_size, 1, bias=bias)) - else: - pred_head.append(nn.Linear(model_config.hidden_size, model_config.hidden_size, bias=bias)) - if self.config["activation_function"]: - pred_head.append(Activation_Function_Class(self.config["activation_function"])) - for i, module in enumerate(pred_head): - self.add_module(str(i), module) - - # We need to import the current value of _init_weights at each execution to determine if weights init is disabled. - from transformers.modeling_utils import _init_weights - - if _init_weights: - self.apply(model._init_weights) - self.train(model.training) # make sure training mode is consistent - - def get_output_embeddings(self): - return None # override for heads with output embeddings - - def get_label_names(self): - return ["labels"] - - def _get_cls_output(self, outputs, **kwargs): - if self.config["use_pooler"]: - cls_output = kwargs.pop("pooled_output") - elif kwargs.get("get_cls_from_eos_tokens", False): - x = outputs[0] # last hidden state - eos_mask = kwargs.get("eos_mask") - (eos_mask,) = adjust_tensors_for_parallel(x, eos_mask) - if len(torch.unique(eos_mask.sum(1))) > 1: - raise ValueError("All examples must have the same number of tokens.") - cls_output = x[eos_mask, :].view(x.size(0), -1, x.size(-1))[:, -1, :] - else: - cls_output = outputs[0][:, 0] - - return cls_output - - -class ClassificationHead(PredictionHead): - def __init__( - self, - model, - head_name, - num_labels=2, - layers=2, - activation_function="tanh", - id2label=None, - use_pooler=False, - bias=True, - dropout_prob=None, - ): - super().__init__(head_name) - self.config = { - "head_type": "classification", - "num_labels": num_labels, - "layers": layers, - "activation_function": activation_function, - "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, - "use_pooler": use_pooler, - "bias": bias, - "dropout_prob": dropout_prob, - } - self.build(model) - - def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): - if cls_output is None: - cls_output = self._get_cls_output(outputs, **kwargs) - logits = super().forward(cls_output) - loss = None - labels = kwargs.pop("labels", None) - if labels is not None: - if self.config["num_labels"] == 1: - # We are doing regression - loss_fct = MSELoss() - loss = loss_fct(logits.view(-1), labels.view(-1)) - else: - loss_fct = CrossEntropyLoss() - loss = loss_fct(logits.view(-1, self.config["num_labels"]), labels.view(-1)) - - if return_dict: - if isinstance(outputs, Seq2SeqModelOutput): - return Seq2SeqSequenceClassifierOutput( - loss=loss, - logits=logits, - past_key_values=outputs.past_key_values, - decoder_hidden_states=outputs.decoder_hidden_states, - decoder_attentions=outputs.decoder_attentions, - cross_attentions=outputs.cross_attentions, - encoder_last_hidden_state=outputs.encoder_last_hidden_state, - encoder_hidden_states=outputs.encoder_hidden_states, - encoder_attentions=outputs.encoder_attentions, - ) - else: - return SequenceClassifierOutput( - loss=loss, - logits=logits, - hidden_states=outputs.hidden_states, - attentions=outputs.attentions, - ) - else: - outputs = (logits,) + outputs[1:] - if labels is not None: - outputs = (loss,) + outputs - return outputs - - -class MultiLabelClassificationHead(PredictionHead): - def __init__( - self, - model, - head_name, - num_labels=2, - layers=2, - activation_function="tanh", - id2label=None, - use_pooler=False, - bias=True, - dropout_prob=None, - ): - super().__init__(head_name) - self.config = { - "head_type": "multilabel_classification", - "num_labels": num_labels, - "layers": layers, - "activation_function": activation_function, - "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, - "use_pooler": use_pooler, - "bias": bias, - "dropout_prob": dropout_prob, - } - self.build(model) - - def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): - if cls_output is None: - cls_output = self._get_cls_output(outputs, **kwargs) - logits = super().forward(cls_output) - loss = None - labels = kwargs.pop("labels", None) - if labels is not None: - loss_fct = BCEWithLogitsLoss() - if labels.dtype != torch.float32: - labels = labels.float() - loss = loss_fct(logits, labels) - - if return_dict: - if isinstance(outputs, Seq2SeqModelOutput): - return Seq2SeqSequenceClassifierOutput( - loss=loss, - logits=logits, - past_key_values=outputs.past_key_values, - decoder_hidden_states=outputs.decoder_hidden_states, - decoder_attentions=outputs.decoder_attentions, - cross_attentions=outputs.cross_attentions, - encoder_last_hidden_state=outputs.encoder_last_hidden_state, - encoder_hidden_states=outputs.encoder_hidden_states, - encoder_attentions=outputs.encoder_attentions, - ) - else: - return SequenceClassifierOutput( - loss=loss, - logits=logits, - hidden_states=outputs.hidden_states, - attentions=outputs.attentions, - ) - else: - outputs = (logits,) + outputs[1:] - if labels is not None: - outputs = (loss,) + outputs - return outputs - - -class MultipleChoiceHead(PredictionHead): - def __init__( - self, - model, - head_name, - num_choices=2, - layers=2, - activation_function="tanh", - id2label=None, - use_pooler=False, - dropout_prob=None, - ): - super().__init__(head_name) - self.config = { - "head_type": "multiple_choice", - "num_choices": num_choices, - "layers": layers, - "activation_function": activation_function, - "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, - "use_pooler": use_pooler, - "dropout_prob": dropout_prob, - } - self.build(model) - - def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=None, **kwargs): - if cls_output is None: - cls_output = self._get_cls_output(outputs, **kwargs) - logits = super().forward(cls_output) - logits = logits.view(-1, self.config["num_choices"]) - loss = None - labels = kwargs.pop("labels", None) - if labels is not None: - loss_fct = CrossEntropyLoss() - loss = loss_fct(logits, labels) - - if return_dict: - return MultipleChoiceModelOutput( - loss=loss, - logits=logits, - hidden_states=outputs.hidden_states, - attentions=outputs.attentions, - ) - else: - outputs = (logits,) + outputs[1:] - if labels is not None: - outputs = (loss,) + outputs - return outputs - - -class TaggingHead(PredictionHead): - def __init__( - self, - model, - head_name, - num_labels=2, - layers=1, - activation_function="tanh", - id2label=None, - dropout_prob=None, - ): - super().__init__(head_name) - self.config = { - "head_type": "tagging", - "num_labels": num_labels, - "layers": layers, - "activation_function": activation_function, - "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, - "dropout_prob": dropout_prob, - } - self.build(model) - - def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): - logits = super().forward(outputs[0]) - loss = None - - labels = kwargs.pop("labels", None) - if labels is not None: - loss_fct = CrossEntropyLoss() - # adjust labels for prompt tuning - if kwargs.get("prompt_tokens_length", 0) > 0: - prompt_length = kwargs.get("prompt_tokens_length") - prompt_labels = torch.full( - (labels.shape[0], prompt_length), loss_fct.ignore_index, dtype=torch.long, device=labels.device - ) - labels = torch.cat((prompt_labels, labels), dim=-1) - if attention_mask is not None: - attention_mask = torch.cat( - (torch.ones_like(prompt_labels, dtype=torch.long, device=labels.device), attention_mask), - dim=-1, - ) - - # Only keep active parts of the loss - if attention_mask is not None: - active_loss = attention_mask.view(-1) == 1 - active_logits = logits.view(-1, self.config["num_labels"]) - active_labels = torch.where( - active_loss, labels.view(-1), torch.tensor(loss_fct.ignore_index).type_as(labels) - ) - loss = loss_fct(active_logits, active_labels) - else: - loss = loss_fct(logits.view(-1, self.config["num_labels"]), labels.view(-1)) - - if return_dict: - return TokenClassifierOutput( - loss=loss, - logits=logits, - hidden_states=outputs.hidden_states, - attentions=outputs.attentions, - ) - else: - outputs = (logits,) + outputs[1:] - if labels is not None: - outputs = (loss,) + outputs - return outputs - - -class QuestionAnsweringHead(PredictionHead): - def __init__( - self, - model, - head_name, - num_labels=2, - layers=1, - activation_function="tanh", - id2label=None, - dropout_prob=None, - ): - super().__init__(head_name) - self.config = { - "head_type": "question_answering", - "num_labels": num_labels, - "layers": layers, - "activation_function": activation_function, - "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, - "dropout_prob": dropout_prob, - } - self.build(model) - - def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): - sequence_output = outputs[0] - logits = super().forward(sequence_output) - start_logits, end_logits = logits.split(1, dim=-1) - start_logits = start_logits.squeeze(-1) - end_logits = end_logits.squeeze(-1) - - start_positions = kwargs.pop("start_positions", None) - end_positions = kwargs.pop("end_positions", None) - total_loss = None - if start_positions is not None and end_positions is not None: - if len(start_positions.size()) > 1: - start_positions = start_positions.squeeze(-1) - if len(end_positions.size()) > 1: - end_positions = end_positions.squeeze(-1) - # sometimes the start/end positions are outside our model inputs, we ignore these terms - ignored_index = start_logits.size(1) - start_positions.clamp_(0, ignored_index) - end_positions.clamp_(0, ignored_index) - - loss_fct = CrossEntropyLoss(ignore_index=ignored_index) - start_loss = loss_fct(start_logits, start_positions) - end_loss = loss_fct(end_logits, end_positions) - total_loss = (start_loss + end_loss) / 2 - - if return_dict: - if isinstance(outputs, Seq2SeqModelOutput): - return Seq2SeqQuestionAnsweringModelOutput( - loss=total_loss, - start_logits=start_logits, - end_logits=end_logits, - past_key_values=outputs.past_key_values, - decoder_hidden_states=outputs.decoder_hidden_states, - decoder_attentions=outputs.decoder_attentions, - cross_attentions=outputs.cross_attentions, - encoder_last_hidden_state=outputs.encoder_last_hidden_state, - encoder_hidden_states=outputs.encoder_hidden_states, - encoder_attentions=outputs.encoder_attentions, - ) - else: - return QuestionAnsweringModelOutput( - loss=total_loss, - start_logits=start_logits, - end_logits=end_logits, - hidden_states=outputs.hidden_states, - attentions=outputs.attentions, - ) - else: - outputs = ( - start_logits, - end_logits, - ) + outputs[1:] - if total_loss is not None: - outputs = (total_loss,) + outputs - return outputs - - def get_label_names(self): - return ["start_positions", "end_positions"] - - -class ImageClassificationHead(PredictionHead): - def __init__( - self, - model, - head_name, - num_labels=2, - layers=2, - activation_function="tanh", - multilabel=False, - id2label=None, - use_pooler=False, - bias=True, - dropout_prob=None, - ): - super().__init__(head_name) - self.config = { - "head_type": "image_classification", - "num_labels": num_labels, - "layers": layers, - "activation_function": activation_function, - "multilabel": multilabel, - "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, - "use_pooler": use_pooler, - "bias": bias, - "dropout_prob": dropout_prob, - } - self.build(model) - - def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): - if cls_output is None: - cls_output = self._get_cls_output(outputs, **kwargs) - logits = super().forward(cls_output) - loss = None - labels = kwargs.pop("labels", None) - if labels is not None: - if self.config["num_labels"] == 1: - # We are doing regression - loss_fct = MSELoss() - loss = loss_fct(logits.view(-1), labels.view(-1)) - elif self.config["multilabel"]: - loss_fct = BCEWithLogitsLoss() - loss = loss_fct(logits, labels) - else: - loss_fct = CrossEntropyLoss() - loss = loss_fct(logits.view(-1, self.config["num_labels"]), labels.view(-1)) - - if return_dict: - return ImageClassifierOutput( - loss=loss, - logits=logits, - hidden_states=outputs.hidden_states, - attentions=outputs.attentions, - ) - else: - outputs = (logits,) + outputs[1:] - if labels is not None: - outputs = (loss,) + outputs - return outputs diff --git a/adapters/src/adapters/heads/dependency_parsing.py b/adapters/src/adapters/heads/dependency_parsing.py deleted file mode 100644 index 2b91d529..00000000 --- a/adapters/src/adapters/heads/dependency_parsing.py +++ /dev/null @@ -1,183 +0,0 @@ -""" -Code taken and modified from: https://github.com/Adapter-Hub/hgiyt. Credits: "How Good is Your Tokenizer? On the -Monolingual Performance of Multilingual Language Models" (Rust et al., 2021) https://arxiv.org/abs/2012.15613 -""" -from dataclasses import dataclass -from typing import Optional, Tuple - -import torch -from torch import nn -from torch.nn import CrossEntropyLoss - -from transformers.utils import ModelOutput - -from .base import PredictionHead - - -@dataclass -class DependencyParsingOutput(ModelOutput): - loss: Optional[torch.FloatTensor] = None - rel_preds: torch.FloatTensor = None - arc_preds: torch.FloatTensor = None - hidden_states: Optional[Tuple[torch.FloatTensor]] = None - attentions: Optional[Tuple[torch.FloatTensor]] = None - - -# Credit: -# Class taken from https://github.com/yzhangcs/biaffine-parser -class Biaffine(nn.Module): - def __init__(self, n_in, n_out=1, bias_x=True, bias_y=True): - super(Biaffine, self).__init__() - - self.n_in = n_in - self.n_out = n_out - self.bias_x = bias_x - self.bias_y = bias_y - self.weight = nn.Parameter(torch.Tensor(n_out, n_in + bias_x, n_in + bias_y)) - self.init_weights() - - def extra_repr(self): - s = f"n_in={self.n_in}, n_out={self.n_out}" - if self.bias_x: - s += f", bias_x={self.bias_x}" - if self.bias_y: - s += f", bias_y={self.bias_y}" - - return s - - def init_weights(self): - nn.init.zeros_(self.weight) - - def forward(self, x, y): - if self.bias_x: - x = torch.cat((x, torch.ones_like(x[..., :1])), -1) - if self.bias_y: - y = torch.cat((y, torch.ones_like(y[..., :1])), -1) - - # [batch_size, n_out, seq_len, seq_len] - s = torch.einsum("bxi,oij,byj->boxy", x, self.weight, y) - return s - - -class BiaffineParsingHead(PredictionHead): - """ - Credit: G. Glavaš & I. Vulić Based on paper "Is Supervised Syntactic Parsing Beneficial for Language Understanding? - An Empirical Investigation" (https://arxiv.org/pdf/2008.06788.pdf) - """ - - def __init__(self, model, head_name, num_labels=2, id2label=None): - super().__init__(head_name) - self.config = { - "head_type": "dependency_parsing", - "num_labels": num_labels, - "label2id": {label: id_ for id_, label in id2label.items()} if id2label is not None else None, - } - self.model_config = model.config - self.build(model) - - def build(self, model): - self.biaffine_arcs = Biaffine(n_in=model.config.hidden_size, bias_x=True, bias_y=False) - self.biaffine_rels = Biaffine( - n_in=model.config.hidden_size, n_out=self.config["num_labels"], bias_x=True, bias_y=True - ) - - self.dropout = nn.Dropout(model.config.hidden_dropout_prob) - - self.loss_fn = CrossEntropyLoss() - - self.train(model.training) # make sure training mode is consistent - - def forward( - self, - outputs, - cls_output=None, - attention_mask=None, - return_dict=False, - word_starts=None, - labels_arcs=None, - labels_rels=None, - **kwargs - ): - outs = self.dropout(outputs[0]) - word_outputs_deps = self._merge_subword_tokens(outs, word_starts) - - # adding the CLS representation as the representation for the "root" parse token - # cls_output = self.pooler_activation(self.pooler_dense(outs[:, 0])) - cls_output = outs[:, 0] - word_outputs_heads = torch.cat([cls_output.unsqueeze(1), word_outputs_deps], dim=1) - - arc_preds = self.biaffine_arcs(word_outputs_deps, word_outputs_heads) - arc_preds = arc_preds.squeeze() - if len(arc_preds.shape) == 2: - arc_preds = arc_preds.unsqueeze(0) - - rel_preds = self.biaffine_rels(word_outputs_deps, word_outputs_heads) - rel_preds = rel_preds.permute(0, 2, 3, 1) - - loss = self._get_loss(arc_preds, rel_preds, labels_arcs, labels_rels, self.loss_fn) - - if return_dict: - return DependencyParsingOutput( - loss=loss, - rel_preds=rel_preds, - arc_preds=arc_preds, - hidden_states=outputs.hidden_states, - attentions=outputs.attentions, - ) - else: - outputs = (rel_preds, arc_preds) - if loss is not None: - outputs = (loss,) + outputs - return outputs - - def _merge_subword_tokens(self, subword_outputs, word_starts): - instances = [] - max_seq_length = subword_outputs.shape[1] - - # handling instance by instance - for i in range(len(subword_outputs)): - subword_vecs = subword_outputs[i] - word_vecs = [] - starts = word_starts[i] - mask = starts.ne(self.model_config.pad_token_id) - starts = starts[mask] - for j in range(len(starts) - 1): - if starts[j + 1] <= 0: - break - - start = starts[j] - end = starts[j + 1] - vecs_range = subword_vecs[start:end] - word_vecs.append(torch.mean(vecs_range, 0).unsqueeze(0)) - - instances.append(word_vecs) - - t_insts = [] - zero_tens = torch.zeros(self.model_config.hidden_size).unsqueeze(0) - zero_tens = zero_tens.to("cuda" if torch.cuda.is_available() else "cpu") - - for inst in instances: - if len(inst) < max_seq_length: - for i in range(max_seq_length - len(inst)): - inst.append(zero_tens) - t_insts.append(torch.cat(inst, dim=0).unsqueeze(0)) - - w_tens = torch.cat(t_insts, dim=0) - return w_tens - - def _get_loss(self, arc_preds, rel_preds, labels_arc, labels_rel, loss_fn): - if labels_arc is None or labels_rel is None: - return None - if len(arc_preds.shape) == 2: - arc_preds = arc_preds.unsqueeze(0) - - mask = labels_arc.ne(self.model_config.pad_token_id) - arc_scores, arcs = arc_preds[mask], labels_arc[mask] - loss = loss_fn(arc_scores, arcs) - - rel_scores, rels = rel_preds[mask], labels_rel[mask] - rel_scores = rel_scores[torch.arange(len(arcs)), arcs] - rel_loss = loss_fn(rel_scores, rels) - loss += rel_loss - - return loss diff --git a/adapters/src/adapters/heads/language_modeling.py b/adapters/src/adapters/heads/language_modeling.py deleted file mode 100644 index bf91e5be..00000000 --- a/adapters/src/adapters/heads/language_modeling.py +++ /dev/null @@ -1,216 +0,0 @@ -import torch -import torch.nn as nn - -from transformers.modeling_outputs import CausalLMOutput, CausalLMOutputWithPast, MaskedLMOutput, Seq2SeqLMOutput - -from ..methods.modeling import Activation_Function_Class -from .base import PredictionHead - - -class CausalLMHead(PredictionHead): - def __init__( - self, - model, - head_name, - vocab_size=None, - embedding_size=None, - layers=1, - activation_function=None, - layer_norm=False, - bias=False, - shift_labels=True, - dropout_prob=None, - ): - super(CausalLMHead, self).__init__(head_name) - self.config = { - "head_type": "causal_lm", - "vocab_size": vocab_size or model.config.vocab_size, - "embedding_size": embedding_size or getattr(model.config, "embedding_size", model.config.hidden_size), - "layers": layers, - "activation_function": activation_function, - "layer_norm": layer_norm, - "bias": bias, - "shift_labels": shift_labels, - "label2id": None, - "dropout_prob": dropout_prob, - } - self.build(model) - - def build(self, model): - model_config = model.config - # Additional FC layers - pred_head = [] - with_layer_norm = self.config.get("layer_norm", False) - embedding_size = self.config.get("embedding_size", model_config.hidden_size) - - for l_id in range(self.config["layers"] - 1): - if l_id == 0: - pred_head.append(nn.Linear(model_config.hidden_size, embedding_size)) - else: - pred_head.append(nn.Linear(embedding_size, embedding_size)) - if self.config["activation_function"]: - pred_head.append(Activation_Function_Class(self.config["activation_function"])) - if with_layer_norm: - eps = getattr(model_config, "layer_norm_eps", 1e-12) - pred_head.append(nn.LayerNorm(embedding_size, eps=eps)) - - for i, module in enumerate(pred_head): - self.add_module(str(i), module) - - # Final embedding layer - self.add_module( - str(len(pred_head)), - nn.Linear( - embedding_size, - self.config["vocab_size"], - bias=self.config["bias"], - ), - ) - - self.apply(model._init_weights) - self.train(model.training) # make sure training mode is consistent - - def get_output_embeddings(self): - # The last child is our embedding layer - return self._modules[next(reversed(self._modules))] - - def set_output_embeddings(self, new_embeddings): - # The last child is our embedding layer - self._modules[next(reversed(self._modules))] = new_embeddings - - @staticmethod - def _create_model_output(loss, logits, base_outputs): - if "past_key_values" in base_outputs: - return CausalLMOutputWithPast( - loss=loss, - logits=logits, - hidden_states=base_outputs.hidden_states, - attentions=base_outputs.attentions, - past_key_values=base_outputs.past_key_values, - ) - else: - return CausalLMOutput( - loss=loss, - logits=logits, - hidden_states=base_outputs.hidden_states, - attentions=base_outputs.attentions, - ) - - def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): - # First, pass through all layers except the last embedding layer - seq_outputs = outputs[0] - for i in range(len(self) - 1): - seq_outputs = self[i](seq_outputs) - - # Now, pass through an invertible adapter if available - inv_adapter = kwargs.pop("invertible_adapter", None) - if inv_adapter is not None: - seq_outputs = inv_adapter(seq_outputs, rev=True) - - # Finally, pass through the last embedding layer - lm_logits = self[len(self) - 1](seq_outputs) - - loss = None - labels = kwargs.pop("labels", None) - if labels is not None: - loss_fct = nn.CrossEntropyLoss() - if self.config["shift_labels"]: - logits_for_loss = lm_logits[..., :-1, :].contiguous() - labels = labels[..., 1:].contiguous() - else: - logits_for_loss = lm_logits - - # adjust labels for prompt tuning - if kwargs.get("prompt_tokens_length", 0) > 0: - prompt_length = kwargs.get("prompt_tokens_length") - prompt_labels = torch.full( - (labels.shape[0], prompt_length), loss_fct.ignore_index, dtype=torch.long, device=labels.device - ) - labels = torch.cat((prompt_labels, labels), dim=-1) - - loss = loss_fct(logits_for_loss.view(-1, self.config["vocab_size"]), labels.view(-1)) - - if return_dict: - return self._create_model_output(loss, lm_logits, outputs) - else: - outputs = (lm_logits,) + outputs[1:] - if loss is not None: - outputs = (loss,) + outputs - return outputs - - -class Seq2SeqLMHead(CausalLMHead): - def __init__( - self, - model, - head_name, - vocab_size=None, - layers=1, - activation_function=None, - layer_norm=False, - bias=False, - shift_labels=False, - ): - super(CausalLMHead, self).__init__(head_name) - self.config = { - "head_type": "seq2seq_lm", - "vocab_size": vocab_size or model.config.vocab_size, - "layers": layers, - "activation_function": activation_function, - "layer_norm": layer_norm, - "bias": bias, - "shift_labels": shift_labels, - "label2id": None, - } - self.build(model) - - @staticmethod - def _create_model_output(loss, logits, base_outputs): - return Seq2SeqLMOutput( - loss=loss, - logits=logits, - past_key_values=base_outputs.past_key_values, - decoder_hidden_states=base_outputs.decoder_hidden_states, - decoder_attentions=base_outputs.decoder_attentions, - cross_attentions=base_outputs.cross_attentions, - encoder_last_hidden_state=base_outputs.encoder_last_hidden_state, - encoder_hidden_states=base_outputs.encoder_hidden_states, - encoder_attentions=base_outputs.encoder_attentions, - ) - - -class BertStyleMaskedLMHead(CausalLMHead): - def __init__( - self, - model, - head_name, - vocab_size=None, - embedding_size=None, - layers=2, - activation_function="gelu", - layer_norm=True, - bias=True, - shift_labels=False, - ): - super(CausalLMHead, self).__init__(head_name) - self.config = { - "head_type": "masked_lm", - "vocab_size": vocab_size or model.config.vocab_size, - "embedding_size": embedding_size or getattr(model.config, "embedding_size", model.config.hidden_size), - "layers": layers, - "activation_function": activation_function, - "layer_norm": layer_norm, - "bias": bias, - "shift_labels": shift_labels, - "label2id": None, - } - self.build(model) - - @staticmethod - def _create_model_output(loss, logits, base_outputs): - return MaskedLMOutput( - loss=loss, - logits=logits, - hidden_states=base_outputs.hidden_states, - attentions=base_outputs.attentions, - ) diff --git a/adapters/src/adapters/heads/model_mixin.py b/adapters/src/adapters/heads/model_mixin.py deleted file mode 100644 index d19beda5..00000000 --- a/adapters/src/adapters/heads/model_mixin.py +++ /dev/null @@ -1,730 +0,0 @@ -import functools -import logging -from typing import List, Optional, Union - -import torch -from torch import nn - -from transformers.utils import ModelOutput - -from ..composition import AdapterCompositionBlock, BatchSplit, Parallel, parse_heads_from_composition -from ..context import AdapterSetup, ForwardContext -from ..loading import PredictionHeadLoader -from ..model_mixin import ModelWithHeadsAdaptersMixin -from .base import ( - ClassificationHead, - ImageClassificationHead, - MultiHeadOutput, - MultiLabelClassificationHead, - MultipleChoiceHead, - PredictionHead, - QuestionAnsweringHead, - TaggingHead, -) -from .dependency_parsing import BiaffineParsingHead -from .language_modeling import BertStyleMaskedLMHead, CausalLMHead, Seq2SeqLMHead - - -logger = logging.getLogger(__name__) - - -MODEL_HEAD_MAP = { - "classification": ClassificationHead, - "multilabel_classification": MultiLabelClassificationHead, - "tagging": TaggingHead, - "multiple_choice": MultipleChoiceHead, - "question_answering": QuestionAnsweringHead, - "dependency_parsing": BiaffineParsingHead, - "masked_lm": BertStyleMaskedLMHead, - "causal_lm": CausalLMHead, - "seq2seq_lm": Seq2SeqLMHead, - "image_classification": ImageClassificationHead, -} - - -class ModelWithFlexibleHeadsAdaptersMixin(ModelWithHeadsAdaptersMixin): - """ - Adds flexible prediction heads to a model class. Implemented by the XModelWithHeads classes. - """ - - head_types: list = [] - use_pooler: bool = False - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self._convert_to_flex_head = True - if not hasattr(self.config, "custom_heads"): - self.config.custom_heads = {} - self._active_heads = [] - - def head_type(head_type_str: str): - """ - Checks which head type the decorated function belongs to and raises an error if the model does not support the - head type. - """ - - def decorator(f): - @functools.wraps(f) - def wrapper(self, *args, **kwargs): - if head_type_str in self.head_types: - return f(self, *args, **kwargs) - else: - raise ValueError( - f"This model of type '{self.config.model_type}' does not support head type '{head_type_str}'." - ) - - return wrapper - - return decorator - - def _init_head_modules(self): - # HACK connect adapters_config to base model -> this should move to a better place - self.adapters_config = self.base_model.adapters_config - # this dict is _only_ used for saving & reloading the configs and should not be modified otherwise - if not hasattr(self.config, "prediction_heads"): - self.config.prediction_heads = {} - self.heads = nn.ModuleDict(dict()) - # add modules for heads in config - for head_name, config in self.config.prediction_heads.items(): - self.add_prediction_head_from_config(head_name, config) - - # The following methods are required for handling LM heads - - def get_output_embeddings(self) -> Union[nn.Module, List[nn.Module]]: - # Only gets the output embeddings for the currently active head - embeddings = [] - for head_name in self._active_heads: - if head_name in self.heads: - head = self.heads[head_name] - output_embeddings = head.get_output_embeddings() - embeddings.append(output_embeddings) - - if len(embeddings) == 1: - return embeddings[0] - elif len(embeddings) == 0 or all([e is None for e in embeddings]): - return None - else: - return embeddings - - def set_output_embeddings(self, new_embeddings: Union[nn.Module, List[nn.Module]]): - # Only sets the output embeddings for the currently active head - if not isinstance(new_embeddings, list): - new_embeddings = [new_embeddings] * len(self._active_heads) - for head_name, emb in zip(self._active_heads, new_embeddings): - if head_name in self.heads: - head = self.heads[head_name] - head.set_output_embeddings(emb) - - def tie_weights(self): - """ - Tie the weights between the input embeddings and the output embeddings. - - If the :obj:`torchscript` flag is set in the configuration, can't handle parameter sharing so we are cloning - the weights instead. - """ - for head_name, head in self.heads.items(): - output_embeddings = head.get_output_embeddings() - if output_embeddings is not None and self.config.tie_word_embeddings: - self._tie_or_clone_weights(output_embeddings, self.get_input_embeddings()) - - if self.config.is_encoder_decoder and self.config.tie_encoder_decoder: - if hasattr(self, self.base_model_prefix): - self = getattr(self, self.base_model_prefix) - self._tie_encoder_decoder_weights(self.encoder, self.decoder, self.base_model_prefix) - - def _resize_token_embeddings(self, new_num_tokens, pad_to_multiple_of=None): - old_embeddings = self.get_input_embeddings() - new_embeddings = self._get_resized_embeddings(old_embeddings, new_num_tokens, pad_to_multiple_of) - self.set_input_embeddings(new_embeddings) - - # if word embeddings are not tied, make sure that lm head is resized as well - if not self.config.tie_word_embeddings: - for head in self.heads.values(): - old_lm_head = self.get_output_embeddings() - if old_lm_head is not None: - new_lm_head = self._get_resized_lm_head(old_lm_head, new_num_tokens) - self.set_output_embeddings(new_lm_head) - - return self.get_input_embeddings() - - # Methods for managing prediction heads - - def add_prediction_head_from_config( - self, - head_name: str, - config: dict, - overwrite_ok: bool = False, - set_active: bool = True, - ): - head_type = config.pop("head_type") - # handle cases when id2label, label2id or both are available - id2label = config.pop("id2label", None) - if id2label is None: - label2id = config.pop("label2id", None) - if label2id is not None: - id2label = {id_: label for label, id_ in label2id.items()} - else: - # don't pass label2id to head_class - config.pop("label2id", None) - # re-add id2label map to config - if id2label is not None: - config["id2label"] = id2label - - if head_type in self.head_types: - head_class = MODEL_HEAD_MAP[head_type] - head = head_class(self, head_name, **config) - self.add_prediction_head(head, overwrite_ok=overwrite_ok, set_active=set_active) - elif head_type in self.config.custom_heads: - # we have to re-add the head type for custom heads - self.add_custom_head(head_type, head_name, overwrite_ok=overwrite_ok, **config) - else: - raise AttributeError( - "Given head type '{}' is not known. Please register this head type before loading the model".format( - head_type - ) - ) - - def get_prediction_heads_config(self): - heads = {} - for head_name, head in self.heads.items(): - heads[head_name] = head.config - return heads - - def register_custom_head(self, identifier, head): - self.config.custom_heads[identifier] = head - - @property - def active_head(self) -> Union[str, List[str]]: - """ - The active prediction head configuration of this model. Can be either the name of a single available head - (string) or a list of multiple available heads. In case of a list of heads, the same base model is forwarded - through all specified heads. - - Returns: - Union[str, List[str]]: A string or a list of strings describing the active head configuration. - """ - if not self._active_heads: - return None - elif len(self._active_heads) == 1: - return self._active_heads[0] - else: - return self._active_heads - - @active_head.setter - def active_head(self, head_name_or_list: Union[str, List[str], AdapterCompositionBlock]): - if isinstance(head_name_or_list, str): - if head_name_or_list and head_name_or_list not in self.heads: - raise ValueError(f"Model does not contain a head with name '{head_name_or_list}'.") - self._active_heads = [head_name_or_list] if head_name_or_list else None - # If we set a single head, also switch the label mapping. For multiple head, that doesn't make sense? - if head_name_or_list: - self.config.label2id = self.heads[head_name_or_list].config.get("label2id", None) - self.config.id2label = self.get_labels_dict(head_name_or_list) - else: - self._active_heads = head_name_or_list - - def set_active_adapters( - self, adapter_setup: Union[list, AdapterCompositionBlock], skip_layers: Optional[List[int]] = None - ): - """ - Sets the adapter modules to be used by default in every forward pass. This setting can be overriden by passing - the `adapter_names` parameter in the `foward()` pass. If no adapter with the given name is found, no module of - the respective type will be activated. In case the calling model class supports named prediction heads, this - method will attempt to activate a prediction head with the name of the last adapter in the list of passed - adapter names. - - Args: - adapter_setup (list): - The list of adapters to be activated by default. Can be a fusion or stacking configuration. - """ - self.base_model.set_active_adapters(adapter_setup, skip_layers) - # use last adapter name as name of prediction head - if self.active_adapters: - head_setup = parse_heads_from_composition(self.active_adapters) - if isinstance(head_setup, str): - head_setup = [head_setup] - if head_setup and all(head in self.heads for head in head_setup): - self.active_head = head_setup - else: - logger.info( - "Could not identify valid prediction head(s) from setup '{}'.".format(self.active_adapters) - ) - - def add_custom_head(self, head_type, head_name, overwrite_ok=False, set_active=True, **kwargs): - if head_type in self.config.custom_heads: - head = self.config.custom_heads[head_type](self, head_name, **kwargs) - # When a build-in head is added as a custom head it does not have the head_type property - if not hasattr(head.config, "head_type"): - head.config["head_type"] = head_type - self.add_prediction_head(head, overwrite_ok, set_active=set_active) - else: - raise AttributeError( - "The given head as a head_type that is not registered as a custom head yet." - " Please register the head first." - ) - - def add_prediction_head( - self, - head: PredictionHead, - overwrite_ok: bool = False, - set_active: bool = True, - ): - if head.name not in self.heads or overwrite_ok: - self.heads[head.name] = head - # add reference to model config to save all head configs too - self.config.prediction_heads[head.name] = head.config - - # Set a default label2id map if not given - if "label2id" in head.config.keys() and head.config["label2id"] is None: - if "num_labels" in head.config.keys(): - head.config["label2id"] = {"LABEL_" + str(num): num for num in range(head.config["num_labels"])} - if "num_choices" in head.config.keys(): - head.config["label2id"] = {"LABEL_" + str(num): num for num in range(head.config["num_choices"])} - - # In case the added head has tied weights, tie them here. - self.tie_weights() - - logger.info(f"Adding head '{head.name}' with config {head.config}.") - if set_active: - self.active_head = head.name - - else: - raise ValueError( - f"Model already contains a head with name '{head.name}'. Use overwrite_ok=True to force overwrite." - ) - - @head_type("classification") - def add_classification_head( - self, - head_name, - num_labels=2, - layers=2, - activation_function="tanh", - overwrite_ok=False, - multilabel=False, - id2label=None, - use_pooler=use_pooler, - ): - """ - Adds a sequence classification head on top of the model. - - Args: - head_name (str): The name of the head. - num_labels (int, optional): Number of classification labels. Defaults to 2. - layers (int, optional): Number of layers. Defaults to 2. - activation_function (str, optional): Activation function. Defaults to 'tanh'. - overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. - multilabel (bool, optional): Enable multilabel classification setup. Defaults to False. - """ - - if multilabel: - head = MultiLabelClassificationHead( - self, head_name, num_labels, layers, activation_function, id2label, use_pooler - ) - else: - head = ClassificationHead(self, head_name, num_labels, layers, activation_function, id2label, use_pooler) - self.add_prediction_head(head, overwrite_ok) - - @head_type("image_classification") - def add_image_classification_head( - self, - head_name, - num_labels=2, - layers=1, - activation_function="tanh", - overwrite_ok=False, - multilabel=False, - id2label=None, - use_pooler=use_pooler, - ): - """ - Adds an image classification head on top of the model. - - Args: - head_name (str): The name of the head. - num_labels (int, optional): Number of classification labels. Defaults to 2. - layers (int, optional): Number of layers. Defaults to 1. - activation_function (str, optional): Activation function. Defaults to 'tanh'. - overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. - multilabel (bool, optional): Enable multilabel classification setup. Defaults to False. - """ - - head = ImageClassificationHead( - self, - head_name, - num_labels=num_labels, - layers=layers, - activation_function=activation_function, - multilabel=multilabel, - id2label=id2label, - use_pooler=use_pooler, - ) - self.add_prediction_head(head, overwrite_ok) - - @head_type("multiple_choice") - def add_multiple_choice_head( - self, - head_name, - num_choices=2, - layers=2, - activation_function="tanh", - overwrite_ok=False, - id2label=None, - use_pooler=use_pooler, - ): - """ - Adds a multiple choice head on top of the model. - - Args: - head_name (str): The name of the head. - num_choices (int, optional): Number of choices. Defaults to 2. - layers (int, optional): Number of layers. Defaults to 2. - activation_function (str, optional): Activation function. Defaults to 'tanh'. - overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. - """ - head = MultipleChoiceHead(self, head_name, num_choices, layers, activation_function, id2label, use_pooler) - self.add_prediction_head(head, overwrite_ok) - - @head_type("tagging") - def add_tagging_head( - self, head_name, num_labels=2, layers=1, activation_function="tanh", overwrite_ok=False, id2label=None - ): - """ - Adds a token classification head on top of the model. - - Args: - head_name (str): The name of the head. - num_labels (int, optional): Number of classification labels. Defaults to 2. - layers (int, optional): Number of layers. Defaults to 1. - activation_function (str, optional): Activation function. Defaults to 'tanh'. - overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. - """ - head = TaggingHead(self, head_name, num_labels, layers, activation_function, id2label) - self.add_prediction_head(head, overwrite_ok) - - @head_type("question_answering") - def add_qa_head( - self, head_name, num_labels=2, layers=1, activation_function="tanh", overwrite_ok=False, id2label=None - ): - """ - Adds a question answering head on top of the model. - - Args: - head_name (str): The name of the head. - num_labels (int, optional): Number of classification labels. Defaults to 2. - layers (int, optional): Number of layers. Defaults to 1. - activation_function (str, optional): Activation function. Defaults to 'tanh'. - overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. - """ - head = QuestionAnsweringHead(self, head_name, num_labels, layers, activation_function, id2label) - self.add_prediction_head(head, overwrite_ok) - - @head_type("dependency_parsing") - def add_dependency_parsing_head(self, head_name, num_labels=2, overwrite_ok=False, id2label=None): - """ - Adds a biaffine dependency parsing head on top of the model. The parsing head uses the architecture described - in "Is Supervised Syntactic Parsing Beneficial for Language Understanding? An Empirical Investigation" (Glavaš - & Vulić, 2021) (https://arxiv.org/pdf/2008.06788.pdf). - - Args: - head_name (str): The name of the head. - num_labels (int, optional): Number of labels. Defaults to 2. - overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. - id2label (dict, optional): Mapping from label ids to labels. Defaults to None. - """ - head = BiaffineParsingHead(self, head_name, num_labels, id2label) - self.add_prediction_head(head, overwrite_ok) - - @head_type("masked_lm") - def add_masked_lm_head(self, head_name, activation_function="gelu", overwrite_ok=False): - """ - Adds a masked language modeling head on top of the model. - - Args: - head_name (str): The name of the head. - activation_function (str, optional): Activation function. Defaults to 'gelu'. - overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. - """ - head = BertStyleMaskedLMHead(self, head_name, activation_function=activation_function) - self.add_prediction_head(head, overwrite_ok=overwrite_ok) - - @head_type("causal_lm") - def add_causal_lm_head(self, head_name, activation_function="gelu", overwrite_ok=False): - """ - Adds a causal language modeling head on top of the model. - - Args: - head_name (str): The name of the head. - activation_function (str, optional): Activation function. Defaults to 'gelu'. - overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. - """ - head = CausalLMHead( - self, head_name, layers=2, activation_function=activation_function, layer_norm=True, bias=True - ) - self.add_prediction_head(head, overwrite_ok=overwrite_ok) - - @head_type("seq2seq_lm") - def add_seq2seq_lm_head( - self, - head_name, - overwrite_ok=False, - ): - """ - Adds a sequence-to-sequence language modeling head on top of the model. - - Args: - head_name (str): The name of the head. - overwrite_ok (bool, optional): Force overwrite if a head with the same name exists. Defaults to False. - """ - head = Seq2SeqLMHead(self, head_name) - self.add_prediction_head(head, overwrite_ok=overwrite_ok) - - def delete_head(self, head_name: str): - """ - Deletes the prediction head with the specified name from the model. - - Args: - head_name (str): The name of the prediction to delete. - """ - if head_name not in self.config.prediction_heads: - logger.info("No prediction head '%s' found for deletion. Skipping.", head_name) - return - del self.config.prediction_heads[head_name] - del self.heads[head_name] - if self.active_head == head_name: - self.active_head = None - - def _get_used_heads(self, head_name: str = None): - if head_name: - used_heads = [head_name] - # together with context, check if we have heads at all to allow for models without heads - elif len(self.heads) > 0 and AdapterSetup.get_context_head_setup(): - used_heads = AdapterSetup.get_context_head_setup() - if isinstance(used_heads, str): - used_heads = [used_heads] - elif self._active_heads: - used_heads = self._active_heads - else: - return [] - - head_modules = [] - for head in used_heads: - if head not in self.heads: - raise ValueError("Unknown head_name '{}'".format(head)) - head_modules.append(self.heads[head]) - - return head_modules - - def forward_head( - self, - all_outputs, - head_name=None, - cls_output=None, - attention_mask=None, - return_dict=False, - context=None, - **kwargs - ): - """ - The forward pass through a prediction head configuration. There are three ways to specify the used prediction - head configuration (in order of priority): - - 1. If a head_name is passed, the head with the given name is used. - 2. If the forward call is executed within an ``AdapterSetup`` context, the head configuration is read from - the context. - 3. If the ``active_head`` property is set, the head configuration is read from there. - - Args: - all_outputs (dict): The outputs of the base model. - head_name (str, optional): The name of the prediction head to use. If None, the active head is used. - cls_output (torch.Tensor, optional): The classification output of the model. - attention_mask (torch.Tensor, optional): The attention mask of the model. - return_dict (bool): Whether or not to return a ``ModelOutput`` instead of a plain tuple. - get_cls_from_eos_tokens (bool): - If set to True, retrieve classifier token representations from the last token in the sequence. - Setting to True requires `eos_mask` to be passed as well. - **kwargs: Additional keyword arguments passed to the forward pass of the head. - """ - used_head_modules = self._get_used_heads(head_name) - if len(used_head_modules) == 0: - logger.debug("No prediction head is used.") - return all_outputs - - def _get_head_input(outputs, cls_out, batch): - # TODO-AH check possible edge cases here - if isinstance(outputs, ModelOutput): - inputs = {} - for key, base_output in outputs.items(): - if torch.is_tensor(base_output): - inputs[key] = base_output[batch[0] : batch[-1] + 1] - inputs = outputs.__class__(**inputs) - else: - inputs = tuple() - for base_output in outputs: - inputs = inputs + (base_output[batch],) - if cls_out is not None: - cls_input = cls_out[batch] - else: - cls_input = None - return inputs, cls_input - - # Pass invertible adapter if we have one - if hasattr(self.base_model, "get_invertible_adapter"): - inv_adapter = self.base_model.get_invertible_adapter() - if inv_adapter: - kwargs["invertible_adapter"] = inv_adapter - - # Set prompt tokens length - if context is not None: - prompt_tokens_length = context.get("prompt_tokens_length", None) - if prompt_tokens_length is not None: - kwargs["prompt_tokens_length"] = prompt_tokens_length - - if isinstance(self.active_head, BatchSplit): - if sum(self.active_head.batch_sizes) != all_outputs[0].size()[0]: - raise ValueError( - "The specified batch sizes {} do not match the actual batch size {}".format( - self.active_head.batch_sizes, all_outputs[0].size()[0] - ) - ) - head_outputs = [] - labels = kwargs.pop("labels", None) - eos_mask = kwargs.pop("eos_mask", None) - for i, head in enumerate(self.active_head): - head_module = self.heads[head] - batch_idx = range(sum(self.active_head.batch_sizes[:i]), sum(self.active_head.batch_sizes[: i + 1])) - kwargs["labels"] = labels[batch_idx] if labels is not None else None - kwargs["eos_mask"] = eos_mask[batch_idx] if eos_mask is not None else None - head_inputs, head_cls_input = _get_head_input(all_outputs, cls_output, batch_idx) - # head_attention = attention_mask[batch_idx] if attention_mask is not None else None - head_output = head_module(head_inputs, head_cls_input, attention_mask, return_dict, **kwargs) - head_outputs.append(head_output) - combined_loss = ( - sum([out["loss"] for out in head_outputs]) - if all("loss" in out and out["loss"] is not None for out in head_outputs) - else None - ) - return_output = MultiHeadOutput(head_outputs=head_outputs, loss=combined_loss) - elif self.has_parallel_adapters or isinstance(self.active_head, Parallel): - if len(self.active_head) != self.adapters_config.active_setup.parallel_channels: - raise ValueError("The number of parallel adapters and the number of active heads must match.") - orig_batch_size = all_outputs[0].shape[0] // self.adapters_config.active_setup.parallel_channels - head_outputs = [] - for i, head in enumerate(self.active_head): - head_module = self.heads[head] - batch_idx = range(i * orig_batch_size, (i + 1) * orig_batch_size) - head_inputs, head_cls_input = _get_head_input(all_outputs, cls_output, batch_idx) - head_output = head_module(head_inputs, head_cls_input, attention_mask, return_dict, **kwargs) - head_outputs.append(head_output) - combined_loss = ( - torch.sum(torch.stack([out["loss"] for out in head_outputs])) - if all("loss" in out and out["loss"] is not None for out in head_outputs) - else None - ) - return_output = MultiHeadOutput(head_outputs=head_outputs, loss=combined_loss) - elif len(used_head_modules) > 1: - head_outputs = [] - for head_module in used_head_modules: - head_outputs.append(head_module(all_outputs, cls_output, attention_mask, return_dict, **kwargs)) - return_output = MultiHeadOutput(head_outputs=head_outputs) - else: - head_module = used_head_modules[0] - return_output = head_module(all_outputs, cls_output, attention_mask, return_dict, **kwargs) - - if isinstance(return_output, ModelOutput): - for attr in ForwardContext.context_attributes: - if attr not in return_output and attr in all_outputs: - return_output[attr] = all_outputs[attr] - return return_output - - def get_labels_dict(self, head_name=None): - """ - Returns the id2label dict for the given hea - - Args: - head_name: (str, optional) the name of the head which labels should be returned. Default is None. - If the name is None the labels of the active head are returned - - Returns: id2label - - """ - if head_name is None: - head_name = self.active_head - if head_name is None: - raise ValueError("No head name given and no active head in the model") - if "label2id" in self.heads[head_name].config.keys() and self.heads[head_name].config["label2id"] is not None: - return {id_: label for label, id_ in self.heads[head_name].config["label2id"].items()} - else: - return None - - def get_labels(self, head_name=None): - """ - Returns the labels the given head is assigning/predictin - - Args: - head_name: (str, optional) the name of the head which labels should be returned. Default is None. - If the name is None the labels of the active head are returned - - Returns: labels - - """ - label_dict = self.get_labels_dict(head_name) - if label_dict is None: - return None - else: - return list(label_dict.values()) - - # This method is called during model loading in from_pretrained() to apply the state_dict to the model. - # Override it to inject adapter head logic. - @classmethod - def _load_pretrained_model( - cls, - model, - state_dict, - loaded_keys, - *args, - **kwargs, - ): - # Filter only weights not part of base model - loader = PredictionHeadLoader(model, error_on_missing=False, convert_to_flex_head=True) - filter_func = loader.filter_func(None) - if state_dict is not None: - head_state_dict = {key: value for key, value in state_dict.items() if filter_func(key)} - else: - head_state_dict = None - head_name = "default" - head_config, new_head_state_dict = loader.convert_static_to_flex_head(head_state_dict, load_as=head_name) - - if head_config is not None: - # add head from config - if head_name in model.heads: - logger.warning("Overwriting existing head '{}'".format(head_name)) - - model.add_prediction_head_from_config(head_name, head_config, overwrite_ok=True) - - if new_head_state_dict is not None: - # Always ensure base_model_prefix is added, otherwise loading head weights does not work. - if len(model.base_model_prefix) > 0 and not any( - s.startswith(model.base_model_prefix) for s in loaded_keys - ): - def rename_func(x): - if x not in head_state_dict: - return model.base_model_prefix + "." + x - return x - state_dict = {rename_func(k): v for k, v in state_dict.items()} - loaded_keys = [rename_func(k) for k in loaded_keys] - - for k in head_state_dict: - del state_dict[k] - loaded_keys.remove(k) - for k in new_head_state_dict: - state_dict[k] = new_head_state_dict[k] - loaded_keys.append(k) - - return super()._load_pretrained_model( - model, - state_dict, - loaded_keys, - *args, - **kwargs, - ) diff --git a/adapters/src/adapters/hub_mixin.py b/adapters/src/adapters/hub_mixin.py deleted file mode 100644 index ece00238..00000000 --- a/adapters/src/adapters/hub_mixin.py +++ /dev/null @@ -1,233 +0,0 @@ -import logging -import os -import warnings -from typing import List, Optional, Union - -from transformers.utils.generic import working_or_temp_dir - - -logger = logging.getLogger(__name__) - -DEFAULT_TEXT = "" -# docstyle-ignore -ADAPTER_CARD_TEMPLATE = """ ---- -tags: -{tags} ---- - -# Adapter `{adapter_repo_name}` for {model_name} - -An [adapter](https://adapterhub.ml) for the `{model_name}` model that was trained on the {dataset_name} dataset{head_info}. - -This adapter was created for usage with the **[Adapters](https://github.com/Adapter-Hub/adapters)** library. - -## Usage - -First, install `adapters`: - -``` -pip install -U adapters -``` - -Now, the adapter can be loaded and activated like this: - -```python -from adapters import AutoAdapterModel - -model = AutoAdapterModel.from_pretrained("{model_name}") -adapter_name = model.load_adapter("{adapter_repo_name}", source="hf", set_active=True) -``` - -## Architecture & Training - -{architecture_training} - -## Evaluation results - -{results} - -## Citation - -{citation} - -""" - - -class PushAdapterToHubMixin: - """Mixin providing support for uploading adapters to HuggingFace's Model Hub.""" - - def _save_adapter_card( - self, - save_directory: str, - adapter_name: str, - adapter_repo_name: str, - adapterhub_tag: Optional[str] = None, - datasets_tag: Optional[str] = None, - tags: Optional[List[str]] = None, - language: Optional[str] = None, - license: Optional[str] = None, - metrics: Optional[List[str]] = None, - **kwargs - ): - all_tags = {"adapter-transformers"} # TODO: change this tag once changed on HF side - datasets = set() - # Dataset/ Task info - dataset_name = None - if adapterhub_tag is None and datasets_tag is None: - raise ValueError("Either adapterhub_tag or datasets_tag must be specified.") - if datasets_tag is not None: - dataset_name = f"[{datasets_tag}](https://huggingface.co/datasets/{datasets_tag}/)" - datasets.add(datasets_tag) - if adapterhub_tag is not None: - # adapterhub_tag overwrites datasets_tag - dataset_name = f"[{adapterhub_tag}](https://adapterhub.ml/explore/{adapterhub_tag}/)" - all_tags.add(f"adapterhub:{adapterhub_tag}") - - all_tags.add(self.config.model_type) - if tags is not None: - all_tags = all_tags | set(tags) - tag_string = "\n".join([f"- {tag}" for tag in all_tags]) - if datasets: - tag_string += "\ndatasets:\n" - tag_string += "\n".join([f"- {tag}" for tag in datasets]) - if language: - tag_string += f"\nlanguage:\n- {language}" - if license: - tag_string += f'\nlicense: "{license}"' - if metrics: - tag_string += "\nmetrics:\n" - tag_string += "\n".join([f"- {metric}" for metric in metrics]) - - if hasattr(self, "heads") and adapter_name in self.heads: - head_type = " ".join(self.heads[adapter_name].config["head_type"].split("_")) - head_info = f" and includes a prediction head for {head_type}" - else: - head_info = "" - - adapter_card = ADAPTER_CARD_TEMPLATE.format( - tags=tag_string, - model_name=self.model_name, - dataset_name=dataset_name, - head_info=head_info, - adapter_repo_name=adapter_repo_name, - architecture_training=kwargs.pop("architecture_training", DEFAULT_TEXT), - results=kwargs.pop("results", DEFAULT_TEXT), - citation=kwargs.pop("citation", DEFAULT_TEXT), - ) - - logger.info('Saving adapter card for adapter "%s" to %s.', adapter_name, save_directory) - with open(os.path.join(save_directory, "README.md"), "w") as f: - f.write(adapter_card.strip()) - - def push_adapter_to_hub( - self, - repo_name: str, - adapter_name: str, - organization: Optional[str] = None, - adapterhub_tag: Optional[str] = None, - datasets_tag: Optional[str] = None, - local_path: Optional[str] = None, - commit_message: Optional[str] = None, - private: Optional[bool] = None, - token: Optional[Union[bool, str]] = None, - overwrite_adapter_card: bool = False, - create_pr: bool = False, - revision: str = None, - commit_description: str = None, - adapter_card_kwargs: Optional[dict] = None, - **deprecated_kwargs, - ): - """Upload an adapter to HuggingFace's Model Hub. - - Args: - repo_name (str): The name of the repository on the model hub to upload to. - adapter_name (str): The name of the adapter to be uploaded. - organization (str, optional): Organization in which to push the adapter - (you must be a member of this organization). Defaults to None. - adapterhub_tag (str, optional): - Tag of the format `/` for categorization on https://adapterhub.ml/explore/. See - https://docs.adapterhub.ml/contributing.html#add-a-new-task-or-subtask for more. If not specified, - `datasets_tag` must be given in case a new adapter card is generated. Defaults to None. - datasets_tag (str, optional): Dataset identifier from https://huggingface.co/datasets. - If not specified, `adapterhub_tag` must be given in case a new adapter card is generated. Defaults to - None. - local_path (str, optional): Local path used as clone directory of the adapter repository. - If not specified, will create a temporary directory. Defaults to None. - commit_message (:obj:`str`, `optional`): - Message to commit while pushing. Will default to :obj:`"add config"`, :obj:`"add tokenizer"` or - :obj:`"add model"` depending on the type of the class. - private (:obj:`bool`, `optional`): - Whether or not the repository created should be private (requires a paying subscription). - token (`bool` or `str`, *optional*): - The token to use as HTTP bearer authorization for remote files. If `True`, will use the token generated - when running `huggingface-cli login` (stored in `~/.huggingface`). Will default to `True` if `repo_url` - is not specified. - overwrite_adapter_card (bool, optional): Overwrite an existing adapter card with a newly generated one. - If set to `False`, will only generate an adapter card, if none exists. Defaults to False. - create_pr (bool, optional): - Whether or not to create a PR with the uploaded files or directly commit. - revision (`str`, *optional*): - Branch to push the uploaded files to. - commit_description (`str`, *optional*): - The description of the commit that will be created - - Returns: - str: The url of the adapter repository on the model hub. - """ - use_auth_token = deprecated_kwargs.pop("use_auth_token", None) - if use_auth_token is not None: - warnings.warn( - "The `use_auth_token` argument is deprecated and will be removed in future versions of Adapters." - " Please use `token` instead.", - FutureWarning, - ) - if token is not None: - raise ValueError( - "`token` and `use_auth_token` are both specified. Please set only the argument `token`." - ) - token = use_auth_token - - if organization is not None and not repo_name.startswith(organization): - warnings.warn( - "The `organization` argument is deprecated and will be removed in future versions of" - " Adapters. Set your organization directly in the `repo_id` passed instead" - " (`repo_id={organization}/{model_id}`)." - ) - if "/" in repo_name: - repo_name = repo_name.split("/")[-1] - repo_id = f"{organization}/{repo_name}" - else: - repo_id = repo_name - - use_temp_dir = not os.path.isdir(local_path) if local_path else True - - # Create repo or get retrieve an existing repo - repo_id = self._create_repo(repo_id, private=private, token=token) - - # Commit and push - logger.info('Pushing adapter "%s" to model hub at %s ...', adapter_name, repo_id) - with working_or_temp_dir(working_dir=local_path, use_temp_dir=use_temp_dir) as work_dir: - files_timestamps = self._get_files_timestamps(work_dir) - # Save adapter and optionally create model card - self.save_adapter(work_dir, adapter_name) - if overwrite_adapter_card or not os.path.exists(os.path.join(work_dir, "README.md")): - adapter_card_kwargs = adapter_card_kwargs or {} - self._save_adapter_card( - work_dir, - adapter_name, - repo_id, - adapterhub_tag=adapterhub_tag, - datasets_tag=datasets_tag, - **adapter_card_kwargs, - ) - return self._upload_modified_files( - work_dir, - repo_id, - files_timestamps, - commit_message=commit_message, - token=token, - create_pr=create_pr, - revision=revision, - commit_description=commit_description, - ) diff --git a/adapters/src/adapters/loading.py b/adapters/src/adapters/loading.py deleted file mode 100644 index 7dc3725f..00000000 --- a/adapters/src/adapters/loading.py +++ /dev/null @@ -1,939 +0,0 @@ -import json -import logging -from abc import ABC, abstractmethod -from os import mkdir -from os.path import exists, isdir, isfile, join -from typing import Callable, Mapping, Sequence, Tuple - -import torch - -from .configuration import AdapterConfig, build_full_config -from .head_utils import STATIC_TO_FLEX_HEAD_MAP, get_head_config_and_rename_list -from .utils import ( - ACTIVATION_RENAME, - ADAPTERFUSION_CONFIG_NAME, - ADAPTERFUSION_WEIGHTS_NAME, - CONFIG_NAME, - HEAD_CONFIG_NAME, - HEAD_WEIGHTS_NAME, - WEIGHTS_NAME, - AdapterType, - resolve_adapter_path, -) - - -logger = logging.getLogger(__name__) - - -class WeightsLoaderHelper: - """ - A class providing helper methods for saving and loading module weights. - """ - - def __init__(self, model, weights_name, config_name): - self.model = model - self.weights_name = weights_name - self.config_name = config_name - - def state_dict(self, filter_func): - return {k: v for (k, v) in self.model.state_dict().items() if filter_func(k)} - - def rename_state_dict(self, state_dict, *rename_funcs): - new_state_dict = {} - for k, v in state_dict.items(): - new_k = k - for rename_func in rename_funcs: - new_k = rename_func(new_k) - new_state_dict[new_k] = v - return new_state_dict - - def save_weights_config(self, save_directory, config, meta_dict=None): - # add meta information if given - if meta_dict: - for k, v in meta_dict.items(): - if k not in config: - config[k] = v - # save to file system - output_config_file = join(save_directory, self.config_name) - with open(output_config_file, "w", encoding="utf-8") as f: - json.dump(config, f, indent=2, sort_keys=True) - logger.info("Configuration saved in {}".format(output_config_file)) - - def save_weights(self, save_directory, filter_func): - if not exists(save_directory): - mkdir(save_directory) - else: - assert isdir(save_directory), "Saving path should be a directory where the module weights can be saved." - - # Get the state of all adapter modules for this task - state_dict = self.state_dict(filter_func) - # Save the adapter weights - output_file = join(save_directory, self.weights_name) - torch.save(state_dict, output_file) - logger.info("Module weights saved in {}".format(output_file)) - - def load_weights_config(self, save_directory): - config_file = join(save_directory, self.config_name) - logger.info("Loading module configuration from {}".format(config_file)) - # Load the config - with open(config_file, "r", encoding="utf-8") as f: - loaded_config = json.load(f) - # For older versions translate the activation function to the new format - if "version" not in loaded_config: - if "config" in loaded_config and loaded_config["config"] is not None: - if ( - "non_linearity" in loaded_config["config"] - and loaded_config["config"]["non_linearity"] in ACTIVATION_RENAME - ): - loaded_config["config"]["non_linearity"] = ACTIVATION_RENAME[ - loaded_config["config"]["non_linearity"] - ] - return loaded_config - - @staticmethod - def _load_module_state_dict(module, state_dict, start_prefix=""): - missing_keys = [] - unexpected_keys = [] - error_msgs = [] - - # copy state_dict so _load_from_state_dict can modify it - metadata = getattr(state_dict, "_metadata", None) - state_dict = state_dict.copy() - if metadata is not None: - state_dict._metadata = metadata - - def load(module, prefix=""): - local_metadata = {} if metadata is None else metadata.get(prefix[:-1], {}) - module._load_from_state_dict( - state_dict, prefix, local_metadata, True, missing_keys, unexpected_keys, error_msgs - ) - for name, child in module._modules.items(): - if child is not None: - load(child, prefix + name + ".") - - load(module, prefix=start_prefix) - - if len(error_msgs) > 0: - raise RuntimeError( - "Error(s) in loading state_dict for {}:\n\t{}".format( - module.__class__.__name__, "\n\t".join(error_msgs) - ) - ) - return missing_keys, unexpected_keys - - def load_weights( - self, - save_directory, - filter_func, - rename_func=None, - loading_info=None, - in_base_model=False, - ): - weights_file = join(save_directory, self.weights_name) - # Load the weights of the adapter - try: - state_dict = torch.load(weights_file, map_location="cpu") - except Exception: - raise OSError("Unable to load weights from pytorch checkpoint file. ") - logger.info("Loading module weights from {}".format(weights_file)) - - return self.load_weights_from_state_dict( - state_dict, filter_func, rename_func=rename_func, loading_info=loading_info, in_base_model=in_base_model - ) - - def load_weights_from_state_dict( - self, state_dict, filter_func, rename_func=None, loading_info=None, in_base_model=False, start_prefix="" - ): - # Rename weights if needed - if rename_func: - if isinstance(rename_func, Sequence): - state_dict = self.rename_state_dict(state_dict, *rename_func) - else: - state_dict = self.rename_state_dict(state_dict, rename_func) - - # Add the weights to the model - # Make sure we are able to load base models as well as derived models (with heads) - model_to_load = self.model - has_prefix_module = any(s.startswith(self.model.base_model_prefix) for s in state_dict.keys()) - if not start_prefix and not hasattr(self.model, self.model.base_model_prefix) and has_prefix_module: - start_prefix = self.model.base_model_prefix + "." - if in_base_model and hasattr(self.model, self.model.base_model_prefix) and not has_prefix_module: - model_to_load = self.model.base_model - - missing_keys, unexpected_keys = self._load_module_state_dict( - model_to_load, state_dict, start_prefix=start_prefix - ) - - missing_keys = [k for k in missing_keys if filter_func(k)] - if len(missing_keys) > 0: - logger.info( - "Some module weights could not be found in loaded weights file: {}".format(", ".join(missing_keys)) - ) - if self.model._keys_to_ignore_on_load_unexpected: - unexpected_keys = [k for k in unexpected_keys if k not in self.model._keys_to_ignore_on_load_unexpected] - if len(unexpected_keys) > 0: - logger.info( - "Some weights of the state_dict could not be loaded into model: {}".format(", ".join(unexpected_keys)) - ) - - if isinstance(loading_info, dict): - if "missing_keys" not in loading_info: - loading_info["missing_keys"] = [] - if "unexpected_keys" not in loading_info: - loading_info["unexpected_keys"] = [] - loading_info["missing_keys"].extend(missing_keys) - loading_info["unexpected_keys"].extend(unexpected_keys) - - return missing_keys, unexpected_keys - - -class WeightsLoader(ABC): - """ - An abstract class providing basic methods for saving and loading weights of a model. Extend this class to build - custom module weight loaders. - """ - - def __init__(self, model, weights_name, config_name): - self.model = model - self.weights_helper = WeightsLoaderHelper(model, weights_name, config_name) - - @abstractmethod - def filter_func(self, name: str) -> Callable[[str], bool]: - """ - The callable returned by this method is used to extract the module weights to be saved or loaded based on their - names. - - Args: - name (str): An identifier of the weights to be saved. - - Returns: - Callable[str, bool]: A function that takes the fully qualified name of a module parameter and returns a - boolean value that specifies whether this parameter should be extracted. - """ - pass - - @abstractmethod - def rename_func(self, old_name: str, new_name: str) -> Callable[[str], str]: - """ - The callable returned by this method is used to optionally rename the module weights after loading. - - Args: - old_name (str): The string identifier of the weights as loaded from file. - new_name (str): The new string identifier to which the weights should be renamed. - - Returns: - Callable[str, str]: A function that takes the fully qualified name of a module parameter and returns a new - fully qualified name. - """ - pass - - def save(self, save_directory, name, **kwargs): - """ - Saves the module config and weights into the given directory. Override this method for additional saving - actions. - - Args: - save_directory (str): The directory to save the weights in. - name (str): An identifier of the weights to be saved. The details are specified by the implementor. - """ - if not exists(save_directory): - mkdir(save_directory) - else: - assert isdir( - save_directory - ), "Saving path should be a directory where weights and configuration can be saved." - - config_dict = build_full_config( - None, - self.model.config, - model_name=self.model.model_name, - name=name, - model_class=self.model.__class__.__name__, - ) - meta_dict = kwargs.pop("meta_dict", None) - - # Save the adapter configuration - self.weights_helper.save_weights_config(save_directory, config_dict, meta_dict=meta_dict) - - # Save adapter weights - filter_func = self.filter_func(name) - self.weights_helper.save_weights(save_directory, filter_func) - - def load(self, save_directory, load_as=None, loading_info=None, **kwargs) -> Tuple[str, str]: - """ - Loads the module weights from the given directory. Override this method for additional loading actions. If - adding the loaded weights to the model passed to the loader class requires adding additional modules, this - method should also perform the architectural changes to the model. - - Args: - save_directory (str): The directory from where to load the weights. - load_as (str, optional): Load the weights with this name. Defaults to None. - - Returns: - Tuple[str, str]: A tuple consisting of the local file system directory from which the weights where loaded - and the name of the loaded weights. - """ - if not exists(join(save_directory, self.weights_helper.weights_name)): - raise ValueError("Loading path should be a directory where the weights are saved.") - - # Load config - config = self.weights_helper.load_weights_config(save_directory) - - # Load head weights - filter_func = self.filter_func(config["name"]) - if load_as: - rename_func = self.rename_func(config["name"], load_as) - else: - rename_func = None - self.weights_helper.load_weights( - save_directory, filter_func, rename_func=rename_func, loading_info=loading_info - ) - - return save_directory, load_as or config["name"] - - -class AdapterLoader(WeightsLoader): - """ - A class providing methods for saving and loading adapter modules from the Hub, the filesystem or a remote url. - - Model classes passed to this loader must implement the `ModelAdaptersMixin` class. - """ - - def __init__(self, model, adapter_type=None): - super().__init__(model, WEIGHTS_NAME, CONFIG_NAME) - self.adapter_type = adapter_type - if adapter_type and not AdapterType.has(self.adapter_type): - raise ValueError("Invalid adapter type {}".format(self.adapter_type)) - - def filter_func(self, adapter_name): - return ( - lambda x: "_adapters.{}.".format(adapter_name) in x - or ".adapters.{}.".format(adapter_name) in x - or ".prefix_tunings.{}.".format(adapter_name) in x - or ".prefix_gates.{}.".format(adapter_name) in x - or ".loras.{}.".format(adapter_name) in x - or ".prompt_tunings.{}.".format(adapter_name) in x - ) - - # This dict maps the original weight names to the currently used equivalents. - # The mapping is used by rename_func() to support loading from older weights files. - # Old adapters will be loaded and converted to the new format automatically. - legacy_weights_mapping = { - "attention_text_task_adapters": "adapters", - "attention_text_lang_adapters": "adapters", - "layer_text_task_adapters": "adapters", - "layer_text_lang_adapters": "adapters", - "invertible_lang_adapters": "invertible_adapters", - } - - def _rename_legacy_weights(self, k): - for old, new in self.legacy_weights_mapping.items(): - k = k.replace(old, new) - return k - - # This method is used to remove unnecessary invertible adapters from task adapters using the old format. - # In the old format, task adapters e.g. using seq_bn config specify inv. adapters but don't use them. - # As inv. adapters would be incorrectly used in the new implementation, - # catch this case here when loading pretrained adapters. - def _fix_legacy_config(self, adapter_name, missing_keys): - if self.adapter_type == AdapterType.text_task: - inv_adapter_keys = [x for x in missing_keys if f"invertible_adapters.{adapter_name}." in x] - if len(inv_adapter_keys) > 0: - del self.model.base_model.invertible_adapters[adapter_name] - missing_keys = [k for k in missing_keys if k not in inv_adapter_keys] - # remove invertible_adapter from config - adapter_config_name = self.model.adapters_config.adapters[adapter_name] - if adapter_config_name in self.model.adapters_config.config_map: - adapter_config = self.model.adapters_config.config_map[adapter_config_name] - self.model.adapters_config.config_map[adapter_config_name] = adapter_config.replace( - inv_adapter=None, inv_adapter_reduction_factor=None - ) - return missing_keys - - def rename_func(self, old_name, new_name): - return ( - lambda k: self._rename_legacy_weights(k) - .replace("adapters.{}.".format(old_name), "adapters.{}.".format(new_name)) - .replace(".prefix_tunings.{}.".format(old_name), ".prefix_tunings.{}.".format(new_name)) - .replace(".prefix_gates.{}.".format(old_name), ".prefix_gates.{}.".format(new_name)) - .replace(".loras.{}.".format(old_name), ".loras.{}.".format(new_name)) - ) - - def save_to_state_dict(self, name: str): - """ - Extracts the weights of a given adapter from the model and returns them as a state dict. - - Args: - name (str): The name of the adapter to be saved. - - Returns: - Tuple[dict, dict]: A tuple consisting of the state dict containing the adapter weights and the adapter - configuration. - """ - if name not in self.model.adapters_config.adapters: - raise ValueError("No adapter of this type with the given name is part of this model.") - - adapter_config = self.model.adapters_config.get(name) - - config_dict = build_full_config( - adapter_config, - self.model.config, - model_name=self.model.model_name, - name=name, - model_class=self.model.__class__.__name__, - ) - - # Save adapter weights - filter_func = self.filter_func(config_dict["name"]) - state_dict = self.weights_helper.state_dict(filter_func) - - return state_dict, config_dict - - def save(self, save_directory, name, meta_dict=None): - """ - Saves an adapter and its configuration file to a directory, so that it can be reloaded using the `load()` - method. - - Args: - save_directory (str): a path to a directory where the adapter will be saved - task_name (str): the name of the adapter to be saved - """ - if not exists(save_directory): - mkdir(save_directory) - else: - assert isdir( - save_directory - ), "Saving path should be a directory where adapter and configuration can be saved." - assert ( - name in self.model.adapters_config.adapters - ), "No adapter of this type with the given name is part of this model." - - adapter_config = self.model.adapters_config.get(name) - - config_dict = build_full_config( - adapter_config, - self.model.config, - model_name=self.model.model_name, - name=name, - model_class=self.model.__class__.__name__, - ) - - # Save the adapter configuration - self.weights_helper.save_weights_config(save_directory, config_dict, meta_dict=meta_dict) - - # Save adapter weights - filter_func = self.filter_func(config_dict["name"]) - self.weights_helper.save_weights(save_directory, filter_func) - - def load_from_state_dict(self, state_dict, name, load_as=None, loading_info=None, start_prefix=""): - """ - Loads the weights of a given adapter from a state dict into the model. - - Args: - state_dict (dict): The state dict from which to load the adapter weights. - name (str): The name of the adapter to be loaded. - load_as (str, optional): Load the adapter using this name. By default, the name with which the adapter was - saved will be used. - loading_info (dict, optional): - A dictionary to which loading information (missing and unexpected keys) will be added. - start_prefix (str, optional): A custom prefix to be ignored in the given state dict. - """ - new_adapter_name = load_as or name - if new_adapter_name not in self.model.adapters_config.adapters: - raise ValueError("No adapter of this type with the given name is part of this model.") - - # Load adapter weights - filter_func = self.filter_func(name) - rename_func = self.rename_func(name, new_adapter_name) - missing_keys, _ = self.weights_helper.load_weights_from_state_dict( - state_dict, - filter_func, - rename_func=rename_func, - loading_info=loading_info, - in_base_model=True, - start_prefix=start_prefix, - ) - missing_keys = self._fix_legacy_config(new_adapter_name, missing_keys) - if isinstance(loading_info, Mapping): - loading_info["missing_keys"] = missing_keys - - def load( - self, - adapter_name_or_path, - config=None, - version=None, - model_name=None, - load_as=None, - loading_info=None, - leave_out=None, - set_active=False, - **kwargs - ): - """ - Loads a pre-trained pytorch adapter module from the local file system or a remote location. - - Args: - adapter_name_or_path (str): can be either: - - - the identifier of a pre-trained task adapter to be loaded from Adapter Hub - - a path to a directory containing adapter weights saved using `model.saved_adapter()` - - a URL pointing to a zip folder containing a saved adapter module - config (str, optional): The requested configuration of the adapter. - version (str, optional): The version of the adapter to be loaded. - model_name (str, optional): The string identifier of the pre-trained model. - load_as (str, optional): Load the adapter using this name. By default, the name with which the adapter was - saved will be used. - - Returns: - Tuple[str, str]: A tuple consisting of the local file system directory from which the weights where loaded - and the name of the loaded weights. - """ - requested_config = AdapterConfig.load(config) if config else None - # Resolve the weights to be loaded based on the given identifier and the current adapter config - model_name = self.model.model_name or model_name - resolved_folder = resolve_adapter_path( - adapter_name_or_path, - model_name, - adapter_config=requested_config, - version=version, - **kwargs, - ) - - # Load config of adapter - config = self.weights_helper.load_weights_config(resolved_folder) - if self.adapter_type and "type" in config: - assert config["type"] == self.adapter_type, "Loaded adapter has to be a {} adapter.".format( - self.adapter_type - ) - elif "type" in config: - self.adapter_type = config["type"] - # post-loading drop of layers - if leave_out is not None: - if "leave_out" in config["config"] and config["config"]["leave_out"] is not None: - # The conversion to a set and then back to a list removes all duplicates - leave_out = list(set(leave_out + config["config"]["leave_out"])) - config["config"]["leave_out"] = leave_out - - adapter_name = load_as or config["name"] - # If the adapter is not part of the model, add it - if adapter_name not in self.model.adapters_config.adapters: - self.model.add_adapter(adapter_name, config=config["config"], set_active=set_active) - else: - logger.warning("Overwriting existing adapter '{}'.".format(adapter_name)) - - # Load adapter weights - filter_func = self.filter_func(adapter_name) - rename_func = self.rename_func(config["name"], adapter_name) - missing_keys, _ = self.weights_helper.load_weights( - resolved_folder, filter_func, rename_func=rename_func, loading_info=loading_info, in_base_model=True - ) - missing_keys = self._fix_legacy_config(adapter_name, missing_keys) - if isinstance(loading_info, Mapping): - loading_info["missing_keys"] = missing_keys - - return resolved_folder, adapter_name - - -class AdapterFusionLoader(WeightsLoader): - """ - A class providing methods for saving and loading AdapterFusion modules from the file system. - - """ - - def __init__(self, model, error_on_missing=True): - super().__init__(model, ADAPTERFUSION_WEIGHTS_NAME, ADAPTERFUSION_CONFIG_NAME) - self.error_on_missing = error_on_missing - - def filter_func(self, adapter_fusion_name): - return lambda x: "adapter_fusion_layer.{}".format(adapter_fusion_name) in x - - def rename_func(self, old_name, new_name): - return lambda k: k.replace( - "adapter_fusion_layer.{}".format(old_name), "adapter_fusion_layer.{}".format(new_name) - ) - - def save_to_state_dict(self, name: str): - """ - Extracts the weights of a given AdapterFusion from the model and returns them as a state dict. - - Args: - name (str): The name of the AdapterFusion to be saved. - - Returns: - Tuple[dict, dict]: A tuple consisting of the state dict containing the AdapterFusion weights and the - AdapterFusion configuration. - """ - if name not in self.model.adapters_config.fusions: - raise ValueError(f"No AdapterFusion with name '{name}' available.") - - adapter_fusion_config = self.model.adapters_config.get_fusion(name) - - config_dict = build_full_config( - adapter_fusion_config, - self.model.config, - model_name=self.model.model_name, - name=name, - model_class=self.model.__class__.__name__, - ) - - # Save adapter weights - filter_func = self.filter_func(name) - state_dict = self.weights_helper.state_dict(filter_func) - - return state_dict, config_dict - - def save(self, save_directory: str, name: str, meta_dict=None): - """ - Saves a AdapterFusion module into the given directory. - - Args: - save_directory (str): The directory to save the weights in. - name (str, optional): The AdapterFusion name. - """ - - if name not in self.model.adapters_config.fusions: - if self.error_on_missing: - raise ValueError(f"Unknown AdapterFusion '{name}'.") - else: - logger.debug(f"No AdapterFusion with name '{name}' available.") - return - - if not exists(save_directory): - mkdir(save_directory) - else: - assert isdir(save_directory), "Saving path should be a directory where the head can be saved." - - adapter_fusion_config = self.model.adapters_config.get_fusion(name) - - # Save the adapter fusion configuration - config_dict = build_full_config( - adapter_fusion_config, - self.model.config, - name=name, - model_name=self.model.model_name, - model_class=self.model.__class__.__name__, - ) - self.weights_helper.save_weights_config(save_directory, config_dict, meta_dict=meta_dict) - - # Save head weights - filter_func = self.filter_func(name) - self.weights_helper.save_weights(save_directory, filter_func) - - def load_from_state_dict(self, state_dict, name, load_as=None, loading_info=None, start_prefix=""): - """ - Loads the weights of a given AdapterFusion module from a state dict into the model. - - Args: - state_dict (dict): The state dict from which to load the AdapterFusion weights. - name (str): The name of the AdapterFusion to be loaded. - load_as (str, optional): - Load the AdapterFusion using this name. By default, the name with which the AdapterFusion was saved - will be used. - loading_info (dict, optional): - A dictionary to which loading information (missing and unexpected keys) will be added. - start_prefix (str, optional): A custom prefix to be ignored in the given state dict. - """ - new_adapter_fusion_name = load_as or name - if new_adapter_fusion_name not in self.model.adapters_config.fusions: - raise ValueError(f"No AdapterFusion with name '{new_adapter_fusion_name}' available.") - - # Load adapter weights - filter_func = self.filter_func(name) - rename_func = self.rename_func(name, new_adapter_fusion_name) - self.weights_helper.load_weights_from_state_dict( - state_dict, - filter_func, - rename_func=rename_func, - loading_info=loading_info, - in_base_model=True, - start_prefix=start_prefix, - ) - - def load(self, save_directory, load_as=None, loading_info=None, **kwargs): - """ - Loads a AdapterFusion module from the given directory. - - Args: - save_directory (str): The directory from where to load the weights. - load_as (str, optional): Load the weights with this name. Defaults to None. - - Returns: - Tuple[str, str]: A tuple consisting of the local file system directory from which the weights where loaded - and the name of the loaded weights. - """ - if not exists(join(save_directory, ADAPTERFUSION_WEIGHTS_NAME)): - if self.error_on_missing: - raise ValueError("Loading path should be a directory where AdapterFusion is saved.") - else: - logger.debug("No matching adapter fusion found in '{}'".format(save_directory)) - return None, None - - config = self.weights_helper.load_weights_config(save_directory) - - adapter_fusion_name = load_as or config["name"] - if adapter_fusion_name not in self.model.adapters_config.fusions: - self.model.add_adapter_fusion( - adapter_fusion_name, config["config"], overwrite_ok=True, set_active=kwargs.pop("set_active", True) - ) - else: - logger.warning("Overwriting existing adapter fusion module '{}'".format(adapter_fusion_name)) - - # Load AdapterFusion weights - filter_func = self.filter_func(adapter_fusion_name) - if load_as: - rename_func = self.rename_func(config["name"], load_as) - else: - rename_func = None - self.weights_helper.load_weights( - save_directory, filter_func, rename_func=rename_func, loading_info=loading_info - ) - - return save_directory, adapter_fusion_name - - -class PredictionHeadLoader(WeightsLoader): - """ - A class providing methods for saving and loading prediction head modules from the file system. - - Model classes supporting configurable head modules via config files should provide a prediction head dict at - `model.heads` and a method `add_prediction_head(head_name, config)`. - """ - - def __init__(self, model, error_on_missing=True, convert_to_flex_head=False): - super().__init__(model, HEAD_WEIGHTS_NAME, HEAD_CONFIG_NAME) - self.error_on_missing = error_on_missing - self.convert_to_flex_head = convert_to_flex_head - - def filter_func(self, head_name): - # ToDo remove this workaround - if self.model.config.model_type in ["t5", "mt5"]: - if head_name: - return ( - lambda x: not x.startswith("encoder") - and not x.startswith("decoder") - and not x.startswith("shared") - and "heads.{}".format(head_name) in x - ) - else: - return ( - lambda x: not x.startswith("encoder") - and not x.startswith("decoder") - and not x.startswith("shared") - ) - - if head_name: - return lambda x: not x.startswith(self.model.base_model_prefix) and "heads.{}".format(head_name) in x - else: - return lambda x: not x.startswith(self.model.base_model_prefix) - - def rename_func(self, old_name, new_name): - return lambda k: k.replace("heads.{}".format(old_name), "heads.{}".format(new_name)) - - def save(self, save_directory: str, name: str = None): - """ - Saves a prediction head module into the given directory. - - Args: - save_directory (str): The directory to save the weights in. - name (str, optional): The prediction head name. - """ - - if name: - if hasattr(self.model, "heads"): - if name not in self.model.heads: - if self.error_on_missing: - raise ValueError(f"Unknown head_name '{name}'.") - else: - logger.debug(f"No prediction head with name '{name}' available.") - return - else: - # we haven't found a prediction head configuration, so we assume there is only one (unnamed) head - # (e.g. this is the case if we use a 'classic' Hf model with head) - # -> ignore the name and go on - name = None - if not exists(save_directory): - mkdir(save_directory) - else: - assert isdir(save_directory), "Saving path should be a directory where the head can be saved." - - # if we use a custom head, save it - if name and hasattr(self.model, "heads"): - head = self.model.heads[name] - head_config = head.config - else: - head_config = None - - # Save the adapter configuration - config_dict = build_full_config( - head_config, - self.model.config, - name=name, - model_name=self.model.model_name, - model_class=self.model.__class__.__name__, - save_id2label=True, - ) - # Add number of labels to config if present - if head_config is None and hasattr(self.model.config, "num_labels"): - config_dict["num_labels"] = self.model.config.num_labels - - self.weights_helper.save_weights_config(save_directory, config_dict) - - # Save head weights - - filter_func = self.filter_func(name) - self.weights_helper.save_weights(save_directory, filter_func) - - def load(self, save_directory, load_as=None, loading_info=None, **kwargs): - """ - Loads a prediction head module from the given directory. - - Args: - save_directory (str): The directory from where to load the weights. - load_as (str, optional): Load the weights with this name. Defaults to None. - - Returns: - Tuple[str, str]: A tuple consisting of the local file system directory from which the weights where loaded - and the name of the loaded weights. - """ - if not exists(join(save_directory, HEAD_WEIGHTS_NAME)): - if self.error_on_missing: - raise ValueError("Loading path should be a directory where the head is saved.") - else: - logger.info("No matching prediction head found in '{}'".format(save_directory)) - return None, None - # label2id map used to override default - custom_id2label = kwargs.pop("id2label", None) - if custom_id2label: - custom_label2id = {label: id_ for id_, label in custom_id2label.items()} - else: - custom_label2id = None - - head_name = None - conversion_rename_func = None - - # Load head config if available - otherwise just blindly try to load the weights - if isfile(join(save_directory, HEAD_CONFIG_NAME)): - config = self.weights_helper.load_weights_config(save_directory) - # make sure that the model class of the loaded head matches the current class - if not self.convert_to_flex_head and self.model.__class__.__name__ != config["model_class"]: - error_msg = ( - f"Model class '{config['model_class']}' of found prediction head does not match current model" - " class." - ) - if self.error_on_missing: - raise ValueError(error_msg) - else: - logger.warning(error_msg) - return None, None - - # model with flex heads - if hasattr(self.model, "heads"): - # load head of same model class, no conversion needed - if self.model.__class__.__name__ == config["model_class"]: - head_name = load_as or config["name"] - head_config = config["config"] - elif config["model_class"].endswith("ModelWithHeads"): - this_class = self.model.__class__.__name__.replace("AdapterModel", "") - other_class = config["model_class"].replace("ModelWithHeads", "") - if this_class == other_class: - head_name = load_as or config["name"] - head_config = config["config"] - else: - raise ValueError( - f"Cannot automatically convert prediction head of model class {config['model_class']} to" - " flex head." - ) - # try to convert a static head to a flex head - elif self.convert_to_flex_head and config["model_class"] in STATIC_TO_FLEX_HEAD_MAP: - head_name = kwargs.pop("main_load_name", load_as) - if head_name is None: - raise ValueError( - "Could not identify a name for the prediction head to be loaded. Please specify 'load_as'." - ) - head_config, conversion_rename_func = get_head_config_and_rename_list( - config["model_class"], - head_name, - custom_label2id or config.get("label2id"), - num_labels=config.get("num_labels"), - ) - else: - raise ValueError( - f"Cannot automatically convert prediction head of model class {config['model_class']} to flex" - " head." - ) - if head_name in self.model.heads: - logger.warning("Overwriting existing head '{}'".format(head_name)) - - # make sure the label2id map is correct - custom_label2id = custom_label2id or head_config.get("label2id", None) - if custom_label2id: - head_config["id2label"] = {int(id_): label for label, id_ in custom_label2id.items()} - head_config["label2id"] = {label: int(id_) for label, id_ in custom_label2id.items()} - - self.model.add_prediction_head_from_config( - head_name, head_config, overwrite_ok=True, set_active=kwargs.pop("set_active", True) - ) - # model with static head - else: - if self.convert_to_flex_head: - raise ValueError("Cannot set convert_flex_head on model class with static head.") - custom_label2id = custom_label2id or config.get("label2id", None) - if custom_label2id: - self.model.config.id2label = {int(id_): label for label, id_ in custom_label2id.items()} - self.model.config.label2id = {label: int(id_) for label, id_ in custom_label2id.items()} - - # Load head weights - filter_func = self.filter_func(head_name) - rename_funcs = [] - if load_as: - rename_funcs.append(self.rename_func(config["name"], load_as)) - if conversion_rename_func: - rename_funcs.append(conversion_rename_func) - self.weights_helper.load_weights( - save_directory, filter_func, rename_func=rename_funcs, loading_info=loading_info - ) - - return save_directory, head_name - - def convert_static_to_flex_head(self, state_dict, load_as="default"): - """ - Loads a prediction head module from the given state dict, which contains a static head checkpoint. - - Args: - state_dict (dict): The static head checkpoint from which to load the head module. Can be None. - load_as (str, optional): Load the weights with this name. Defaults to None. - - Returns: - Tuple[dict, dict]: A tuple consisting of the head config and the state dict of the loaded weights. - """ - assert self.convert_to_flex_head, "load_from_state_dict() can only be used with convert_to_flex_head=True." - assert hasattr(self.model, "heads"), "load_from_state_dict() can only be used with flex heads model class." - - if state_dict is None: - return None, None - - conversion_rename_func = None - - original_model_class = self.model.config.architectures[0] if self.model.config.architectures else None - if original_model_class in STATIC_TO_FLEX_HEAD_MAP: - head_config, conversion_rename_func = get_head_config_and_rename_list( - original_model_class, - load_as, - getattr(self.model.config, "label2id"), - ) - elif self.error_on_missing: - raise ValueError( - f"Cannot automatically convert prediction head of model class {original_model_class} to flex head." - ) - else: - return None, None - - # Load head weights - if state_dict is not None: - new_state_dict = {} - for k, v in state_dict.items(): - new_k = conversion_rename_func(k) - new_state_dict[new_k] = v - else: - new_state_dict = None - return head_config, new_state_dict diff --git a/adapters/src/adapters/methods/__init__.py b/adapters/src/adapters/methods/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/adapters/src/adapters/methods/adapter_layer_base.py b/adapters/src/adapters/methods/adapter_layer_base.py deleted file mode 100644 index 2489d445..00000000 --- a/adapters/src/adapters/methods/adapter_layer_base.py +++ /dev/null @@ -1,482 +0,0 @@ -from abc import ABCMeta, abstractmethod -from typing import Collection, Dict, List, NamedTuple, Union - -import numpy as np -import torch -from torch import nn - -from ..composition import ALLOWED_NESTINGS, AdapterCompositionBlock, Average, BatchSplit, Fuse, Parallel, Split, Stack -from ..context import AdapterSetup, ForwardContext - - -# We don't inherit from ABC because __slots__ changes object layout -class AdapterLayerBase(metaclass=ABCMeta): - """ - Base class for all adaptation methods that require per-layer modules. - - Make sure the 'adapter_modules_name' attribute is overriden in derived classes. - """ - - adapter_modules_name = "" - - @property - def adapter_modules(self) -> Collection: - return getattr(self, self.adapter_modules_name) - - @property - def layer_idx(self): - return getattr(self, "_layer_idx", -1) - - @layer_idx.setter - def layer_idx(self, layer_idx): - idx = getattr(self, "_layer_idx", layer_idx) - assert idx == layer_idx - setattr(self, "_layer_idx", idx) - - def get_active_setup(self): - if hasattr(self, "adapters_config"): - # First check current context before falling back to defined setup - context = AdapterSetup.get_context() - if context is not None: - adapter_setup = context.adapter_setup - else: - adapter_setup = self.adapters_config.active_setup - else: - adapter_setup = None - skip_adapters = adapter_setup is None or ( - self.adapters_config.skip_layers is not None and self.layer_idx in self.adapters_config.skip_layers - ) - if not skip_adapters and (len(set(self.adapter_modules.keys()) & adapter_setup.flatten()) > 0): - return adapter_setup - else: - return None - - def _store_gating_score(self, adapter_name, gating_score): - context = ForwardContext.get_context() - if context.output_adapter_gating_scores: - gating_cache = context.adapter_gating_scores - if self.layer_idx not in gating_cache[adapter_name]: - gating_cache[adapter_name][self.layer_idx] = {} - gating_score = gating_score.detach().squeeze().cpu().numpy() - if len(gating_score.shape) == 0: - gating_score = np.expand_dims(gating_score, axis=0) - cache_score = gating_cache[adapter_name][self.layer_idx].get(self.location_key, None) - if cache_score is not None: - gating_cache[adapter_name][self.layer_idx][self.location_key] = np.column_stack( - (cache_score, gating_score) - ) - else: - gating_cache[adapter_name][self.layer_idx][self.location_key] = gating_score - - def _store_fusion_attentions(self, fusion_name, attentions): - context = ForwardContext.get_context() - if context.output_adapter_fusion_attentions: - attention_cache = context.adapter_fusion_attentions - if self.layer_idx not in attention_cache[fusion_name]: - attention_cache[fusion_name][self.layer_idx] = {} - attention_cache[fusion_name][self.layer_idx][self.location_key] = attentions - - @abstractmethod - def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: - """Adds a new adapter module to the layer. - - Args: - adapter_name (str): The name of the new adapter to add. - layer_idx (int): - The index of the adapters layer (this should be set once by the first added adapter and the kept fix). - - Returns: - bool: True if the adapter was added, False otherwise. - """ - raise NotImplementedError() - - @abstractmethod - def average_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: - """Averages a set of adapter modules into a new adapter module. - - Args: - adapter_name (str): The name of the new (averaged) adapter module to add. - input_adapters (Dict[str, float]): Either: - - a list of adapter names (with equal weighting). - - a dictionary of adapter names and their corresponding weights. - - Returns: - bool: True if the adapter was added, False otherwise. - """ - raise NotImplementedError() - - @abstractmethod - def delete_adapter(self, adapter_name: str): - """Deletes an adapter module from the layer. - - Args: - adapter_name (str): The name of the adapter to delete. - """ - raise NotImplementedError() - - @abstractmethod - def add_fusion_layer(self, adapter_names: Union[List, str]): - # TODO remove this method from the base class - raise NotImplementedError() - - @abstractmethod - def delete_fusion_layer(self, adapter_names: Union[List, str]): - # TODO remove this method from the base class - raise NotImplementedError() - - @abstractmethod - def enable_adapters(self, adapter_setup: AdapterCompositionBlock, unfreeze_adapters: bool, unfreeze_fusion: bool): - """Enables/ disables a set of adapter modules within the layer. - - Args: - adapter_setup (AdapterCompositionBlock): The adapter setup to enable/ disable. - unfreeze_adapters (bool): Whether to unfreeze the adapters. - unfreeze_fusion (bool): Whether to unfreeze the fusion layers. - """ - raise NotImplementedError() - - @abstractmethod - def get_adapter(self, adapter_name: str) -> nn.Module: - """Returns the adapter module with the given name. - - Args: - adapter_name (str): The name of the adapter module. - """ - raise NotImplementedError() - - -class ComposableAdapterLayerBase(AdapterLayerBase): - """ - Base class for all adapter methods that support composition. - - Make sure the 'adapter_modules_name' and 'supported_compositions' attributes as well as all abstract methods are - overriden in derived classes. 'allow_multi_parallelize' can be set to True to allow inputs to be parallelized - independently multiple times. This is useful when there are multiple parallel input flows through an adapter layer - (e.g. in LoRA). - """ - - supported_compositions = [] - allow_multi_parallelize = False - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self._init_mapping() - - def _init_mapping(self): - self.composition_to_func_map = { - Stack: self.compose_stack, - Fuse: self.compose_fuse, - Split: self.compose_split, - BatchSplit: self.compose_batch_split, - Parallel: self.compose_parallel, - Average: self.compose_average, - } - - # START CUSTOMIZABLE METHODS # - # The following methods should be implemented in derived classes. - - def _bsz(self, state: NamedTuple) -> int: - """ - Returns the batch size of the given state. - """ - return state[0].shape[0] - - def pre_block(self, adapter_setup: Union[AdapterCompositionBlock, str], state: NamedTuple) -> NamedTuple: - """ - Optional state pre-processing method which is invoked before passing the state to the first child block of a - composition. By default, this method does not contain any logic. E.g. used for bottleneck adapters to implement - residuals and LNs. - - Args: - adapter_setup (Union[AdapterCompositionBlock, str]): The current composition or single adapter. - state (NamedTuple): The current state. - - Returns: - NamedTuple: The pre-processed state. - """ - return state - - @abstractmethod - def vslice(self, state: NamedTuple, slice_obj: slice) -> NamedTuple: - """Slices the given state along the batch size (vertical) dimension. - This is e.g. used by the BatchSplit and Parallel composition blocks. IMPORTANT: Has to be implemented by all - derived classes. - - Args: - state (NamedTuple): The state to be sliced. - slice_obj (slice): The slice object. - - Returns: - NamedTuple: The sliced state. - """ - raise NotImplementedError() - - @abstractmethod - def pad_and_concat(self, states: List[NamedTuple]) -> NamedTuple: - """Concatenates the given states along the batch size dimension. - Pads the states before concatenation if necessary. This is e.g. used by the BatchSplit and Parallel composition - blocks. IMPORTANT: Has to be implemented by all derived classes. - - Args: - states (List[NamedTuple]): The states to be concatenated. - - Returns: - NamedTuple: The concatenated state. - """ - raise NotImplementedError() - - @abstractmethod - def repeat(self, state: NamedTuple, channels: int) -> NamedTuple: - """Repeats the given state along the batch size dimension for the given number of times. - This is e.g. used by the Parallel composition block. IMPORTANT: Has to be implemented by all derived classes. - - Args: - state (NamedTuple): The state to be repeated. - channels (int): The number of times the state should be repeated. - - Returns: - NamedTuple: The repeated state. - """ - raise NotImplementedError() - - @abstractmethod - def mean(self, states: List[NamedTuple], weights: torch.Tensor) -> NamedTuple: - """Averages the given states along the batch size dimension by the given weights. - This is e.g. used by the Average composition block. IMPORTANT: Has to be implemented by all derived classes. - - Args: - states (List[NamedTuple]): The states to be averaged. - weights (torch.Tensor): The averaging weights. - - Returns: - NamedTuple: The averaged state. - """ - raise NotImplementedError() - - @abstractmethod - def compose_single(self, adapter_setup: str, state: NamedTuple, lvl: int = 0) -> NamedTuple: - """Forwards the given state through the given single adapter. - - Args: - adapter_setup (str): The name of the adapter. - state (NamedTuple): The state to be forwarded. - lvl (int, optional): The composition depth. Defaults to 0. - - Returns: - NamedTuple: The state after forwarding through the adapter. - """ - raise NotImplementedError() - - # END CUSTOMIZABLE METHODS # - - def check_composition_valid(self, parent: AdapterCompositionBlock, child: AdapterCompositionBlock, lvl: int): - """Checks whether the given composition is valid. - - Args: - parent (AdapterCompositionBlock): The parent composition block. - child (AdapterCompositionBlock): The child composition block. - lvl (int): The composition depth. - - Raises: - ValueError: If the composition is invalid. - """ - # Break if setup is too deep - if isinstance(parent, Stack) and lvl >= 1: - raise ValueError( - "Specified adapter setup is too deep. Cannot have {} at level {}".format(child.__class__.__name__, lvl) - ) - elif type(child) not in ALLOWED_NESTINGS[type(parent)]: - raise ValueError( - "Cannot nest {} inside {}. Only the following nestings are allowed: {}".format( - child.__class__.__name__, - parent.__class__.__name__, - ", ".join([t.__name__ for t in ALLOWED_NESTINGS[type(parent)]]), - ) - ) - - def compose_stack(self, adapter_setup: Stack, state: NamedTuple, lvl: int = 0) -> NamedTuple: - """ - For sequentially stacking multiple adapters. - """ - for i, adapter_stack_layer in enumerate(adapter_setup): - if isinstance(adapter_stack_layer, AdapterCompositionBlock): - self.check_composition_valid(adapter_setup, adapter_stack_layer, lvl) - composition_func = self.composition_to_func_map[type(adapter_stack_layer)] - state = composition_func(adapter_stack_layer, state, lvl=lvl + 1) - elif adapter_stack_layer in self.adapter_modules: - state = self.pre_block(adapter_stack_layer, state) - state = self.compose_single(adapter_stack_layer, state, lvl=lvl + 1) - else: - raise ValueError( - "Invalid adapter setup: {} is not a valid adapter name or composition block.".format( - adapter_stack_layer.__class__.__name__ - ) - ) - - return state - - def compose_fuse(self, adapter_setup: Fuse, state: NamedTuple, lvl: int = 0): - """ - For fusing multiple adapters using adapter fusion. NOTE: This method has no default implementation. - """ - # Fuse is currently only applicable to bottleneck adapters, thus don't provide a default implementation - raise NotImplementedError() - - def compose_split(self, adapter_setup: Split, state: NamedTuple, lvl: int = 0): - """ - For splitting to multiple adapters along the sequence length dimension. NOTE: This method has no default - implementation. - """ - # Split is currently only applicable to bottleneck adapters, thus don't provide a default implementation - raise NotImplementedError() - - def compose_batch_split(self, adapter_setup: BatchSplit, state: NamedTuple, lvl: int = 0): - """ - For splitting to multiple adapters along the batch size dimension. - """ - if sum(adapter_setup.batch_sizes) != self._bsz(state): - raise IndexError( - "The given batch has a size of {} which is not equal to the sum of batch_sizes {}".format( - self._bsz(state), adapter_setup.batch_sizes - ) - ) - - state = self.pre_block(adapter_setup, state) - - # sequentially feed different parts of the blown-up batch into different adapters - children_states = [] - for i, child in enumerate(adapter_setup): - # compute ids of sequences that should be passed to the ith adapter - batch_idx = ( - sum(adapter_setup.batch_sizes[:i]), - sum(adapter_setup.batch_sizes[: i + 1]), - ) - if isinstance(child, AdapterCompositionBlock): - self.check_composition_valid(adapter_setup, child, lvl) - composition_func = self.composition_to_func_map[type(child)] - child_state = composition_func( - child, - self.vslice(state, slice(*batch_idx)), - lvl=lvl + 1, - ) - children_states.append(child_state) - elif child in self.adapter_modules: - child_state = self.compose_single( - child, - self.vslice(state, slice(*batch_idx)), - lvl=lvl + 1, - ) - children_states.append(child_state) - else: - children_states.append(self.vslice(state, slice(*batch_idx))) - - # concatenate all outputs and return - state = self.pad_and_concat(children_states) - return state - - def compose_parallel(self, adapter_setup: Parallel, state: NamedTuple, lvl: int = 0): - """ - For parallel execution of the adapters on the same input. This means that the input is repeated N times before - feeding it to the adapters (where N is the number of adapters). - """ - - context = ForwardContext.get_context() - if not context.adapters_parallelized: - orig_batch_size = self._bsz(state) - state = self.repeat(state, adapter_setup.parallel_channels) - context.adapters_parallelized = True - context.original_batch_size = orig_batch_size - else: - bsz = self._bsz(state) - # If the input was already parallelized, we can parallelize it again. - # This is useful e.g. for LoRA, where attention matrices are parallelized independently. - if self.allow_multi_parallelize and bsz == getattr(context, "original_batch_size", -1): - state = self.repeat(state, adapter_setup.parallel_channels) - orig_batch_size = bsz - # The base model should handle replication of input. - # Therefore, we assume the (replicated) input batch to be divisible by the number of parallel channels. - elif bsz % adapter_setup.parallel_channels != 0: - raise ValueError( - "The total input batch size in a Parallel adapter block must be divisible by the number of" - " parallel channels." - ) - else: - orig_batch_size = bsz // adapter_setup.parallel_channels - - state = self.pre_block(adapter_setup, state) - - # sequentially feed different parts of the blown-up batch into different adapters - children_states = [] - for i, child in enumerate(adapter_setup): - if isinstance(child, AdapterCompositionBlock): - self.check_composition_valid(adapter_setup, child, lvl) - composition_func = self.composition_to_func_map[type(child)] - child_state = composition_func( - child, - self.vslice(state, slice(i * orig_batch_size, (i + 1) * orig_batch_size)), - lvl=lvl + 1, - ) - children_states.append(child_state) - elif child in self.adapter_modules: - child_state = self.compose_single( - child, - self.vslice(state, slice(i * orig_batch_size, (i + 1) * orig_batch_size)), - lvl=lvl + 1, - ) - children_states.append(child_state) - else: - children_states.append(self.vslice(state, slice(i * orig_batch_size, (i + 1) * orig_batch_size))) - - # concatenate all outputs and return - state = self.pad_and_concat(children_states) - return state - - def compose_average(self, adapter_setup: Average, state: NamedTuple, lvl: int = 0): - """ - For averaging the output representations of multiple adapters. - """ - - state = self.pre_block(adapter_setup, state) - - children_states = [] - for i, child in enumerate(adapter_setup): - if isinstance(child, AdapterCompositionBlock): - self.check_composition_valid(adapter_setup, child, lvl) - composition_func = self.composition_to_func_map[type(child)] - child_state = composition_func(child, state, lvl=lvl + 1) - children_states.append(child_state) - elif child in self.adapter_modules: - child_state = self.compose_single(child, state, lvl=lvl + 1) - children_states.append(child_state) - else: - pass - - weights = torch.tensor(adapter_setup.weights)[:, None, None, None].to(state[0].device) - state = self.mean(children_states, weights) - - return state - - def compose(self, adapter_setup: Union[AdapterCompositionBlock, str], state: NamedTuple) -> NamedTuple: - """The main composition forward method which recursively calls the composition blocks forward methods. - This method should be called by the forward method of the derived class. - - Args: - adapter_setup (Union[AdapterCompositionBlock, str]): The adapter setup to be used. - state (NamedTuple): The current state. - - Returns: - NamedTuple: The state after forwarding through the adapter setup. - """ - if isinstance(adapter_setup, AdapterCompositionBlock): - composition_func = self.composition_to_func_map[type(adapter_setup)] - state = composition_func(adapter_setup, state, lvl=0) - elif adapter_setup in self.adapter_modules: - state = self.compose_single(adapter_setup, state, lvl=0) - else: - raise ValueError( - "Invalid adapter setup: {} is not a valid adapter name or composition block.".format( - adapter_setup.__class__.__name__ - ) - ) - - return state diff --git a/adapters/src/adapters/methods/bottleneck.py b/adapters/src/adapters/methods/bottleneck.py deleted file mode 100644 index c1501916..00000000 --- a/adapters/src/adapters/methods/bottleneck.py +++ /dev/null @@ -1,372 +0,0 @@ -from typing import Dict, List, Mapping, NamedTuple, Optional, Union - -import torch -from torch import nn - -from ..composition import ( - AdapterCompositionBlock, - Average, - BatchSplit, - Fuse, - Parallel, - Split, - Stack, - adjust_tensors_for_parallel, -) -from ..configuration import BnConfig -from ..context import ForwardContext -from .adapter_layer_base import ComposableAdapterLayerBase -from .modeling import Adapter, BertFusion, ParallelAdapter - - -class BottleneckState(NamedTuple): - """ - Models the input and output states of a bottleneck adapter layer. - - Args: - hidden_states (torch.Tensor): The layer input/ output hidden states. - input_tensor (torch.Tensor): The Transformer sub-block residual connection inputs. - adapter_residual (torch.Tensor): The adapter residual connection inputs. - layer_norm (torch.nn.Module, optional): The Transformer layer norm module. - bottleneck_up (torch.Tensor, optional): - The up-projected bottleneck MLP output. This is only for Fuse compositions. - """ - - hidden_states: torch.Tensor - input_tensor: torch.Tensor - adapter_residual: torch.Tensor - layer_norm: Optional[torch.nn.Module] - bottleneck_up: Optional[torch.Tensor] = None - - -class BottleneckLayer(ComposableAdapterLayerBase, nn.Module): - adapter_modules_name = "adapters" - supported_compositions = [Stack, Fuse, Split, Parallel, BatchSplit, Average] - - def __init__(self, location_key: str): - super().__init__() - self.location_key = location_key - - def init_adapters(self, model_config, adapters_config): - self._init_mapping() - self.model_config = model_config - self.adapters_config = adapters_config - self.adapters = nn.ModuleDict(dict()) - self.adapter_fusion_layer = nn.ModuleDict(dict()) - - def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: - self.layer_idx = layer_idx - adapter_config = self.adapters_config.match( - adapter_name, - config_type=BnConfig, - layer_idx=self.layer_idx, - location_key=self.location_key, - ) - if adapter_config is not None: - reduction_factor = adapter_config["reduction_factor"] - if isinstance(reduction_factor, Mapping): - if str(self.layer_idx) in reduction_factor: - reduction_factor = reduction_factor[str(self.layer_idx)] - elif "default" in reduction_factor: - reduction_factor = reduction_factor["default"] - else: - raise KeyError( - "The given reduction factor mapping does not give a default value and does not specify each " - "reduction factor individually. You need to provide a default value like this: " - '{"1": 16, "default": 16}' - ) - - if adapter_config.is_parallel: - adapter_class = ParallelAdapter - else: - adapter_class = Adapter - adapter = adapter_class( - adapter_name=adapter_name, - input_size=self.model_config.hidden_size, - down_sample=int(self.model_config.hidden_size // reduction_factor), - config=adapter_config, - ) - adapter.train(self.training) # make sure training mode is consistent - self.adapters[adapter_name] = adapter - return True - - return False - - def average_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: - # add new adapter - if self.add_adapter(adapter_name, self.layer_idx): - # average weights - avg_state_dict = {} - for name, weight in input_adapters.items(): - if name in self.adapters: - module = self.adapters[name] - for k, v in module.state_dict().items(): - if k in avg_state_dict: - avg_state_dict[k] += weight * v - else: - avg_state_dict[k] = weight * v - else: - self.delete_adapter(adapter_name) # clean up before raising error - raise ValueError("Adapter {} not found.".format(name)) - # load averaged weights - self.adapters[adapter_name].load_state_dict(avg_state_dict) - return True - - return False - - def delete_adapter(self, adapter_name: str): - if adapter_name in self.adapters: - del self.adapters[adapter_name] - - def add_fusion_layer(self, adapter_names: Union[List, str]): - """See BertModel.add_fusion_layer""" - adapter_names = adapter_names if isinstance(adapter_names, list) else adapter_names.split(",") - if self.adapters_config.common_config_value(adapter_names, self.location_key): - fusion_config = self.adapters_config.get_fusion(adapter_names) - dropout_prob = fusion_config.dropout_prob or getattr(self.model_config, "attention_probs_dropout_prob", 0) - fusion = BertFusion( - fusion_config, - self.model_config.hidden_size, - dropout_prob, - ) - fusion.train(self.training) # make sure training mode is consistent - self.adapter_fusion_layer[",".join(adapter_names)] = fusion - - def delete_fusion_layer(self, adapter_names: Union[List, str]): - adapter_names = adapter_names if isinstance(adapter_names, str) else ",".join(adapter_names) - if adapter_names in self.adapter_fusion_layer: - del self.adapter_fusion_layer[adapter_names] - - def enable_adapters(self, adapter_setup: AdapterCompositionBlock, unfreeze_adapters: bool, unfreeze_fusion: bool): - """ - Unfreezes a given list of adapters, the adapter fusion layer, or both - - Args: - adapter_names: names of adapters to unfreeze (or names of adapters part of the fusion layer to unfreeze) - unfreeze_adapters: whether the adapter weights should be activated - unfreeze_fusion: whether the adapter fusion layer for the given adapters should be activated - """ - if unfreeze_adapters: - for adapter_name in adapter_setup.flatten(): - if adapter_name in self.adapters: - for param in self.adapters[adapter_name].parameters(): - param.requires_grad = True - if unfreeze_fusion: - if isinstance(adapter_setup, Fuse): - if adapter_setup.name in self.adapter_fusion_layer: - for param in self.adapter_fusion_layer[adapter_setup.name].parameters(): - param.requires_grad = True - for sub_setup in adapter_setup: - if isinstance(sub_setup, Fuse): - if sub_setup.name in self.adapter_fusion_layer: - for param in self.adapter_fusion_layer[sub_setup.name].parameters(): - param.requires_grad = True - - def freeze_adapter(self, adapter_name: str, freeze: bool = True): - if adapter_name in self.adapters: - self.adapters[adapter_name].train(not freeze) - for param in self.adapters[adapter_name].parameters(): - param.requires_grad = not freeze - - def get_adapter(self, adapter_name: str): - if adapter_name in self.adapters: - return self.adapters[adapter_name] - else: - return None - - def pre_block(self, adapter_setup: Union[AdapterCompositionBlock, str], state: BottleneckState) -> BottleneckState: - if isinstance(adapter_setup, AdapterCompositionBlock): - adapter_name = adapter_setup.first() - else: - adapter_name = adapter_setup - first_adapter = self.adapters[adapter_name] - hidden_states, _, residual = first_adapter.pre_forward( - state.hidden_states, state.input_tensor, state.layer_norm - ) - - return state._replace(hidden_states=hidden_states, adapter_residual=residual) - - def vslice(self, state: BottleneckState, slice_obj: slice) -> BottleneckState: - return BottleneckState( - state.hidden_states[slice_obj], - state.input_tensor[slice_obj], - state.adapter_residual[slice_obj], - state.layer_norm, - state.bottleneck_up[slice_obj] if state.bottleneck_up is not None else None, - ) - - def pad_and_concat(self, states: List[BottleneckState]) -> BottleneckState: - return BottleneckState( - torch.cat([state.hidden_states for state in states], dim=0), - torch.cat([state.input_tensor for state in states], dim=0), - torch.cat([state.adapter_residual for state in states], dim=0), - states[0].layer_norm, - torch.cat([state.bottleneck_up for state in states], dim=0) - if states[0].bottleneck_up is not None - else None, - ) - - def repeat(self, state: BottleneckState, channels: int) -> BottleneckState: - return BottleneckState( - state.hidden_states.repeat(channels, 1, 1), - state.input_tensor.repeat(channels, 1, 1), - state.adapter_residual.repeat(channels, 1, 1), - state.layer_norm, - state.bottleneck_up.repeat(channels, 1, 1) if state.bottleneck_up is not None else None, - ) - - def mean(self, states: List[BottleneckState], weights: torch.Tensor) -> BottleneckState: - return BottleneckState( - torch.mean(torch.stack([s.hidden_states for s in states], 0) * weights, dim=0), - states[0].input_tensor, - states[0].adapter_residual, - states[0].layer_norm, - states[0].bottleneck_up, - ) - - def compose_single(self, adapter_setup: str, state: BottleneckState, lvl: int = 0) -> BottleneckState: - adapter_layer = self.adapters[adapter_setup] - context = ForwardContext.get_context() - layer_output = adapter_layer( - state.hidden_states, - residual_input=state.adapter_residual, - output_gating=context.output_adapter_gating_scores, - ) - hidden_states, up = layer_output[0], layer_output[2] - self._store_gating_score(adapter_setup, layer_output[-1]) - - return BottleneckState(hidden_states, state.input_tensor, state.adapter_residual, state.layer_norm, up) - - def compose_fuse(self, adapter_setup: Fuse, state: BottleneckState, lvl: int = 0): - """ - Performs adapter fusion with the given adapters for the given input. - """ - context = ForwardContext.get_context() - - # config of _last_ fused adapter is significant - fusion_config = self.adapters_config.get_fusion(adapter_setup.name) - last_adapter = self.adapters[adapter_setup.last()] - hidden_states, query, residual = last_adapter.pre_forward( - state.hidden_states, state.input_tensor, state.layer_norm, fusion_config=fusion_config - ) - state = state._replace(hidden_states=hidden_states, adapter_residual=residual) - - children_states = [] - for child in adapter_setup: - if isinstance(child, AdapterCompositionBlock): - self.check_composition_valid(adapter_setup, child, lvl) - composition_func = self.composition_to_func_map[type(child)] - child_state = composition_func(child, state, lvl=lvl + 1) - children_states.append(child_state) - elif child in self.adapter_modules: - child_state = self.compose_single(child, state, lvl=lvl + 1) - children_states.append(child_state) - else: - pass - - if len(children_states) > 0: - up_list = torch.stack([state.bottleneck_up for state in children_states]) - up_list = up_list.permute(1, 2, 0, 3) - - fusion_output = self.adapter_fusion_layer[adapter_setup.name]( - query, - up_list, - up_list, - state.adapter_residual, - output_attentions=context.output_adapter_fusion_attentions, - ) - if context.output_adapter_fusion_attentions: - hidden_states = fusion_output[0] - self._store_fusion_attentions(adapter_setup.name, fusion_output[-1]) - else: - hidden_states = fusion_output - - return state._replace(hidden_states=hidden_states) - - def compose_split(self, adapter_setup: Split, state: BottleneckState, lvl: int = 0): - """ - Splits the given input between the given adapters. - """ - if sum(adapter_setup.splits) != state.hidden_states.shape[1]: - raise IndexError( - "The given input has sequence length {} which is not equal to the sum of splits {}".format( - state.hidden_states.shape[1], adapter_setup.splits - ) - ) - - state = self.pre_block(adapter_setup, state) - - children_states = [] - for i, child in enumerate(adapter_setup): - batch_idx = ( - sum(adapter_setup.splits[:i]), - sum(adapter_setup.splits[: i + 1]), - ) - child_state = BottleneckState( - state.hidden_states[:, batch_idx[0] : batch_idx[1], :], - state.input_tensor[:, batch_idx[0] : batch_idx[1], :], - state.adapter_residual[:, batch_idx[0] : batch_idx[1], :], - state.layer_norm, - state.bottleneck_up[:, batch_idx[0] : batch_idx[1], :] if state.bottleneck_up is not None else None, - ) - if isinstance(child, AdapterCompositionBlock): - self.check_composition_valid(adapter_setup, child, lvl) - composition_func = self.composition_to_func_map[type(child)] - child_state = composition_func(child, child_state, lvl=lvl + 1) - children_states.append(child_state) - elif child in self.adapter_modules: - child_state = self.compose_single(child, child_state, lvl=lvl + 1) - children_states.append(child_state) - else: - pass - - hidden_states = torch.cat([child.hidden_states for child in children_states], dim=1) - return state._replace(hidden_states=hidden_states) - - def bottleneck_layer_forward(self, hidden_states, residual_input, layer_norm): - """Forward pass through the adapter layer. - NOTE: This method should only be called if the calling module directly inherits from BottleneckLayer. - Otherwise, call the regular forward() method. - - Args: - hidden_states (torch.Tensor): Input hidden states to the adapter layer. - residual_input (torch.Tensor): Residual input to the adapter layer. - layer_norm (torch.nn.Module): Transformer layer normalization module to be used by the adapter layer. - - Returns: - torch.Tensor: Output hidden states of the adapter layer. - """ - # Batch sizes might be different due to prefix tuning w. Parallel block - (residual_input,) = adjust_tensors_for_parallel(hidden_states, residual_input) - # Replicate in both directions as residual might be larger (e.g. GPT-J) - (hidden_states,) = adjust_tensors_for_parallel(residual_input, hidden_states) - adapter_setup = self.get_active_setup() - if adapter_setup is not None: - input_hidden_states = hidden_states - - state = BottleneckState(hidden_states, residual_input, residual_input, layer_norm) - state = self.compose(adapter_setup, state) - hidden_states, residual_input, _, _, _ = state - - last_adapter = self.adapters[adapter_setup.last()] - hidden_states = last_adapter.post_forward(hidden_states, input_hidden_states, residual_input, layer_norm) - - elif layer_norm: - hidden_states = layer_norm(hidden_states + residual_input) - else: - hidden_states = hidden_states + residual_input - - return hidden_states - - def forward(self, hidden_states, residual_input, layer_norm): - """Forward pass through the adapter layer. - - Args: - hidden_states (torch.Tensor): Input hidden states to the adapter layer. - residual_input (torch.Tensor): Residual input to the adapter layer. - layer_norm (torch.nn.Module): Transformer layer normalization module to be used by the adapter layer. - - Returns: - torch.Tensor: Output hidden states of the adapter layer. - """ - return self.bottleneck_layer_forward(hidden_states, residual_input, layer_norm) diff --git a/adapters/src/adapters/methods/lora.py b/adapters/src/adapters/methods/lora.py deleted file mode 100644 index db987a78..00000000 --- a/adapters/src/adapters/methods/lora.py +++ /dev/null @@ -1,639 +0,0 @@ -# Code adapted from https://github.com/microsoft/LoRA/blob/main/loralib/layers.py. -# ------------------------------------------------------------------------------------------ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License (MIT). See LICENSE in the repo root for license information. -# ------------------------------------------------------------------------------------------ -import logging -import math -from typing import Dict, List, NamedTuple, Optional, Union - -import torch -import torch.nn as nn -import torch.nn.functional as F - -from transformers.configuration_utils import PretrainedConfig -from transformers.pytorch_utils import Conv1D - -from ..composition import AdapterCompositionBlock, Average, BatchSplit, Parallel, Stack -from ..configuration import LoRAConfig, ModelAdaptersConfig -from .adapter_layer_base import AdapterLayerBase, ComposableAdapterLayerBase - - -logger = logging.getLogger(__name__) - - -class LoRA(nn.Module): - def __init__( - self, - lora_A_shape, - lora_B_shape, - config: LoRAConfig, - gating_heads: int = 1, - ): - super().__init__() - assert config.composition_mode == "add", "LoRA module only supports composition_mode='add'." - self.r = config.r - self.lora_alpha = config.alpha - self.composition_mode = config.composition_mode - self.attn_matrices = config.attn_matrices - self.use_gating = config.use_gating - # Optional dropout - if config.dropout > 0.0: - self.lora_dropout = nn.Dropout(p=config.dropout) - else: - self.lora_dropout = lambda x: x - - # Actual trainable parameters - self.lora_A = nn.Parameter(torch.zeros(lora_A_shape)) - self.lora_B = nn.Parameter(torch.zeros(lora_B_shape)) - self.scaling = self.lora_alpha / self.r - - # For compatibility with (IA)^3, allow all init_weights types here. - # Usually should be "lora". - if config.init_weights == "lora": - # initialize A the same way as the default for nn.Linear and B to zero - nn.init.kaiming_uniform_(self.lora_A, a=math.sqrt(5)) - nn.init.zeros_(self.lora_B) - elif config.init_weights == "bert": - nn.init.normal_(self.lora_A, std=0.02) - nn.init.normal_(self.lora_B, std=0.02) - elif config.init_weights == "ia3": - nn.init.ones_(self.lora_A) - nn.init.ones_(self.lora_B) - else: - raise ValueError("Unknown init_weights type: {}".format(config.init_weights)) - - if self.use_gating: - self.gate = nn.Linear(lora_A_shape[-1], gating_heads) - nn.init.normal_(self.gate.weight, std=0.02) - - @property - def delta_w(self) -> torch.Tensor: - return self.lora_B @ self.lora_A - - def com(self, weights: torch.Tensor, added: torch.Tensor, scaling=None) -> torch.Tensor: - """Performs the composition operation between existing and injected weights.""" - if scaling is None: - scaling = self.scaling - return weights + added * scaling - - def com_inv(self, weights: torch.Tensor, added: torch.Tensor) -> torch.Tensor: - """Inverts the composition operation between existing and injected weights.""" - return weights - added * self.scaling - - def forward(self, hidden_states: Optional[torch.Tensor], layer_input: torch.Tensor): - if hidden_states is None: - hidden_states = layer_input - hidden_states = self.lora_dropout(hidden_states) @ torch.t(self.lora_A) @ torch.t(self.lora_B) - if self.use_gating: - gate = torch.sigmoid(self.gate(layer_input)) - gate = torch.mean(gate, dim=1).unsqueeze(-1) - hidden_states = hidden_states * gate - else: - gate = None - - return hidden_states, gate - - -class IA3(nn.Module): - def __init__( - self, - lora_A_shape, - lora_B_shape, - config: LoRAConfig, - gating_heads: int = 1, - ): - super().__init__() - assert config.composition_mode == "scale", "IA3 module only supports composition_mode='scale'." - if config.r > 1: - raise ValueError("Can only use composition_mode='scale' when r == 1.") - self.r = config.r - self.lora_alpha = config.alpha - self.composition_mode = config.composition_mode - self.attn_matrices = config.attn_matrices - self.use_gating = config.use_gating - # Optional dropout - if config.dropout > 0.0: - raise ValueError("IA3 module does not support dropout.") - - # Actual trainable parameters - self.lora_B = nn.Parameter(torch.zeros(lora_B_shape)) - self.scaling = self.lora_alpha - - # For compatibility with LoRA, allow all init_weights types here. - # Usually should be "ia3". - if config.init_weights == "lora": - logger.warning("(IA)^3 module initialized with LoRA zeo init. Ignore if this is intended.") - nn.init.zeros_(self.lora_B) - elif config.init_weights == "bert": - nn.init.normal_(self.lora_B, std=0.02) - elif config.init_weights == "ia3": - nn.init.ones_(self.lora_B) - else: - raise ValueError("Unknown init_weights type: {}".format(config.init_weights)) - - if self.use_gating: - self.gate = nn.Linear(lora_A_shape[-1], gating_heads) - nn.init.normal_(self.gate.weight, std=0.02) - - @property - def delta_w(self) -> torch.Tensor: - return self.lora_B - - def com(self, weights: torch.Tensor, added: torch.Tensor, scaling=None) -> torch.Tensor: - """Performs the composition operation between existing and injected weights.""" - if scaling is None: - scaling = self.scaling - return weights * (added * scaling) - - def com_inv(self, weights: torch.Tensor, added: torch.Tensor) -> torch.Tensor: - """Inverts the composition operation between existing and injected weights.""" - return weights / (added * self.scaling) - - def forward(self, hidden_states: Optional[torch.Tensor], layer_input: torch.Tensor): - scaling_vector = self.lora_B.view(1, 1, -1).repeat(layer_input.shape[0], 1, 1) - if hidden_states is None: - hidden_states = scaling_vector - else: - hidden_states = hidden_states * scaling_vector - if self.use_gating: - gate = torch.sigmoid(self.gate(layer_input)) - gate = torch.mean(gate, dim=1).unsqueeze(-1) - hidden_states = hidden_states * gate - else: - gate = None - - return hidden_states, gate - - -class LoRALayer(AdapterLayerBase): - adapter_modules_name = "loras" - - def __init__( - self, location_key: str, model_config: PretrainedConfig, adapters_config: ModelAdaptersConfig, *args, **kwargs - ): - super().__init__(*args, **kwargs) - self.location_key = location_key + "_lora" - self.model_config = model_config - self.adapters_config = adapters_config - self.loras = nn.ModuleDict(dict()) - - self.merged = False - - def get_n_heads(self, lora: Union[LoRA, IA3, LoRAConfig]): - return 1 - - def _check_lora_location(self, config: LoRAConfig): - return True - - def _get_lora_shapes(self, config: LoRAConfig): - raise NotImplementedError() - - def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: - self.layer_idx = layer_idx - lora_config = self.adapters_config.match( - adapter_name, - config_type=LoRAConfig, - layer_idx=self.layer_idx, - location_key=self.location_key, - ) - if lora_config is not None and self._check_lora_location(lora_config): - if lora_config.composition_mode == "add": - lora_cls = LoRA - elif lora_config.composition_mode == "scale": - lora_cls = IA3 - else: - raise ValueError(f"Unknown composition_mode: {lora_config.composition_mode}") - lora = lora_cls( - *self._get_lora_shapes(lora_config), - lora_config, - gating_heads=self.get_n_heads(lora_config), - ) - lora.train(self.training) - self.loras[adapter_name] = lora - return True - - return False - - def average_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: - # add new adapter - if self.add_adapter(adapter_name, self.layer_idx): - # average weights - avg_state_dict = {} - for name, weight in input_adapters.items(): - if name in self.loras: - module = self.loras[name] - for k, v in module.state_dict().items(): - if k in avg_state_dict: - avg_state_dict[k] += weight * v - else: - avg_state_dict[k] = weight * v - else: - self.delete_adapter(adapter_name) # clean up before raising error - raise ValueError("Adapter {} not found.".format(name)) - # load averaged weights - self.loras[adapter_name].load_state_dict(avg_state_dict) - return True - - return False - - def delete_adapter(self, adapter_name: str): - if adapter_name in self.loras: - del self.loras[adapter_name] - - def add_fusion_layer(self, adapter_names: Union[List, str]): - pass # not applicable to lora - - def delete_fusion_layer(self, adapter_names: Union[List, str]): - pass # not applicable to lora - - def enable_adapters(self, adapter_setup: AdapterCompositionBlock, unfreeze_adapters: bool, unfreeze_fusion: bool): - if unfreeze_adapters: - for name in adapter_setup.flatten(): - if name in self.loras: - for param in self.loras[name].parameters(): - param.requires_grad = True - - def freeze_adapter(self, adapter_name: str, freeze: bool = True): - if adapter_name in self.loras: - self.loras[adapter_name].train(not freeze) - for param in self.loras[adapter_name].parameters(): - param.requires_grad = not freeze - - def get_adapter(self, adapter_name: str) -> nn.Module: - if adapter_name in self.loras: - return self.loras[adapter_name] - else: - return None - - -class LoRAState(NamedTuple): - """Models the input and output states of a LoRA layer. - - Args: - layer_input (torch.Tensor): The input states to the adapted layer. - hidden_states (Optional[torch.Tensor]): - The hidden states of the adaptation module. These can be None before passing through the first LoRA/ IA3 - module. - layer_output (torch.Tensor): The output states of the original layer without adaptation. - """ - - layer_input: torch.Tensor - hidden_states: Optional[torch.Tensor] - layer_output: torch.Tensor - - -class LoRALinear(LoRALayer, ComposableAdapterLayerBase, nn.Linear): - """ - LoRA implementation for Linear layer. This layer supports composition. - - Args: - fan_in_fan_out (bool, optional): - Set this to True if the layer to replace stores weight like (fan_in, fan_out). Defaults to False. - no_init_bias (bool, optional): Use this to add a bias that is not initialized by PyTorch. Defaults to False. - - """ - - supported_compositions = [Stack, BatchSplit, Average, Parallel] - allow_multi_parallelize = True - - def __init__( - self, - in_features: int, - out_features: int, - location_key: str, - model_config: PretrainedConfig, - adapters_config: ModelAdaptersConfig, - attn_key: str = None, - fan_in_fan_out: bool = False, - no_init_bias: bool = False, - **kwargs - ): - if no_init_bias and "bias" not in kwargs: - kwargs["bias"] = False - LoRALayer.__init__(self, location_key, model_config, adapters_config, in_features, out_features, **kwargs) - - self.attn_key = attn_key - self.fan_in_fan_out = fan_in_fan_out - if fan_in_fan_out: - self.weight.data = torch.t(self.weight.data) - if no_init_bias: - self.bias = nn.Parameter(torch.empty(out_features)) - - @classmethod - def wrap( - cls, - module: Union[nn.Linear, Conv1D], - location_key: str, - model_config: PretrainedConfig, - adapters_config: ModelAdaptersConfig, - attn_key: str = None, - **kwargs - ): - if isinstance(module, Conv1D): - new_module = cls( - module.weight.shape[0], - module.weight.shape[1], - location_key, - model_config, - adapters_config, - attn_key=attn_key, - **kwargs, - ) - else: - # Make sure that the bias is not added if the original module does not have one - if "bias" not in kwargs: - kwargs["bias"] = hasattr(module, "bias") and module.bias is not None - new_module = cls( - module.in_features, - module.out_features, - location_key, - model_config, - adapters_config, - attn_key=attn_key, - **kwargs, - ) - new_module.weight.data = module.weight.data - if module.bias is not None: - new_module.bias.data = module.bias.data - - return new_module - - def _check_lora_location(self, config: LoRAConfig): - return self.attn_key is None or self.attn_key in config.attn_matrices - - def _get_lora_shapes(self, config: LoRAConfig): - return (config.r, self.in_features), (self.out_features, config.r) - - def maybe_t(self, w): - return torch.t(w) if self.fan_in_fan_out else w - - def reset_adapter(self): - if self.merged: - lora = self.loras[self.merged] - # Make sure that the weights are not merged - delta_w = self.maybe_t(lora.delta_w) - self.weight.data = lora.com_inv(self.weight.data, delta_w) - self.merged = None - - def merge_adapter(self, name: str): - if name in self.loras: - if self.merged == name: - return # already merged - elif not self.merged: - lora = self.loras[name] - if lora.use_gating: - raise ValueError("Cannot merge LoRA layer with gating.") - delta_w = self.maybe_t(lora.delta_w) - self.weight.data = lora.com(self.weight.data, delta_w) - self.merged = name - elif self.merged != name: - raise ValueError("LoRALayer already has a merged LoRA module. Please reset it first.") - - def vslice(self, state: LoRAState, slice_obj: slice) -> LoRAState: - return LoRAState( - state.layer_input[slice_obj], - state.hidden_states[slice_obj] if state.hidden_states is not None else None, - state.layer_output[slice_obj], - ) - - def pad_and_concat(self, states: List[LoRAState]) -> LoRAState: - return LoRAState( - torch.cat([s.layer_input for s in states], dim=0), - torch.cat([s.hidden_states for s in states], dim=0) if states[0].hidden_states is not None else None, - torch.cat([s.layer_output for s in states], dim=0), - ) - - def repeat(self, state: LoRAState, channels: int) -> LoRAState: - return LoRAState( - state.layer_input.repeat(channels, 1, 1), - state.hidden_states.repeat(channels, 1, 1) if state.hidden_states is not None else None, - state.layer_output.repeat(channels, 1, 1), - ) - - def mean(self, states: List[LoRAState], weights: torch.Tensor) -> LoRAState: - return LoRAState( - states[0].layer_input, - torch.mean(torch.stack([s.hidden_states for s in states], dim=0) * weights, dim=0) - if states[0].hidden_states is not None - else None, - states[0].layer_output, - ) - - def compose_single(self, adapter_setup: str, state: LoRAState, lvl: int = 0) -> LoRAState: - lora = self.loras[adapter_setup] - hidden_states, gate = lora(state.hidden_states, state.layer_input) - if gate is not None: - self._store_gating_score(adapter_setup, gate) - - return state._replace(hidden_states=hidden_states) - - def forward(self, input_states: torch.Tensor): - weight = torch.transpose(self.weight, -2, -1) if self.fan_in_fan_out else self.weight - # result shape: x x - layer_output = F.linear(input_states, weight, bias=self.bias) - - if not self.merged: - adapter_setup = self.get_active_setup() - if adapter_setup is not None: - state = LoRAState(input_states, None, layer_output) - state = self.compose(adapter_setup, state) - _, hidden_states, layer_output = state - - last_lora = self.loras[adapter_setup.last()] - layer_output = last_lora.com( - layer_output, hidden_states, scaling=1.0 - ) # scaling already applied in compose - - return layer_output - - -class LoRAMergedLinear(LoRALayer, nn.Linear): - """ - LoRA implementation for merged attention layer, as used by some model implementations (e.g. GPT-2). This layer - currently does not support composition. - - Args: - fan_in_fan_out (bool, optional): - Set this to True if the layer to replace stores weight like (fan_in, fan_out). Defaults to False. - no_init_bias (bool, optional): Use this to add a bias that is not initialized by PyTorch. Defaults to False. - - """ - - def __init__( - self, - in_features: int, - out_features: int, - location_key: str, - model_config: PretrainedConfig, - adapters_config: ModelAdaptersConfig, - fan_in_fan_out: bool = False, - no_init_bias: bool = False, - **kwargs - ): - if no_init_bias and "bias" not in kwargs: - kwargs["bias"] = False - LoRALayer.__init__(self, location_key, model_config, adapters_config, in_features, out_features, **kwargs) - - self.fan_in_fan_out = fan_in_fan_out - if fan_in_fan_out: - self.weight.data = self.weight.data.T - if no_init_bias: - self.bias = nn.Parameter(torch.empty(out_features)) - - @classmethod - def wrap( - cls, - module: Union[nn.Linear, Conv1D], - location_key: str, - model_config: PretrainedConfig, - adapters_config: ModelAdaptersConfig, - **kwargs - ): - if isinstance(module, Conv1D): - new_module = cls( - module.weight.shape[0], module.weight.shape[1], location_key, model_config, adapters_config, **kwargs - ) - else: - new_module = cls( - module.in_features, module.out_features, location_key, model_config, adapters_config, **kwargs - ) - new_module.weight.data = module.weight.data - if module.bias is not None: - new_module.bias.data = module.bias.data - - return new_module - - def get_n_heads(self, lora: Union[LoRA, IA3, LoRAConfig]): - return len(set(lora.attn_matrices)) - - def _get_lora_shapes(self, config: LoRAConfig): - n_heads = self.get_n_heads(config) - return (config.r * n_heads, self.in_features), ( - self.out_features // 3 * n_heads, - config.r, - ) - - def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: - is_added = super().add_adapter(adapter_name, layer_idx) - if is_added: - lora_config = lora_config = self.adapters_config.match( - adapter_name, - config_type=LoRAConfig, - layer_idx=self.layer_idx, - location_key=self.location_key, - ) - lora = self.loras[adapter_name] - lora.enable_lora = [ - "q" in lora_config.attn_matrices, - "k" in lora_config.attn_matrices, - "v" in lora_config.attn_matrices, - ] - # Actual trainable parameters - if any(lora.enable_lora): - # Compute the indices - lora.lora_ind = self.weight.new_zeros((self.out_features,), dtype=torch.bool).view( - len(lora.enable_lora), -1 - ) - lora.lora_ind[lora.enable_lora, :] = True - lora.lora_ind = lora.lora_ind.view(-1) - return True - else: - return False - - def pad(self, x, lora, fill_value=None): - if fill_value is None: - if lora.composition_mode == "add": - fill_value = 0 - else: - fill_value = 1 - result = x.new_full((*x.shape[:-1], self.out_features), fill_value) - result = result.view(-1, self.out_features) - result[:, lora.lora_ind] = x.reshape(-1, self.out_features // 3 * self.get_n_heads(lora)) - return result.view((*x.shape[:-1], self.out_features)) - - def reset_adapter(self): - def T(w): - return w if self.fan_in_fan_out else torch.t(w) - - if self.merged: - lora = self.loras[self.merged] - # Make sure that the weights are not merged - if lora.r > 0 and any(lora.enable_lora): - if lora.composition_mode == "scale": - delta_w = lora.lora_B - else: - delta_w = F.conv1d( - lora.lora_A.data.unsqueeze(0), lora.lora_B.data.unsqueeze(-1), groups=sum(lora.enable_lora) - ).squeeze(0) - # shape after transpose: x - delta_w = delta_w.transpose(-2, -1) - self.weight.data = lora.com_inv(self.weight.data, T(self.pad(delta_w, lora))) - self.merged = None - - def _compute_adapted_weight(self, name, lora): - def T(w): - return w if self.fan_in_fan_out else torch.t(w) - - weight = self.weight - if lora.r > 0: - if lora.composition_mode == "scale": - delta_w = lora.lora_B - else: - delta_w = F.conv1d( - lora.lora_A.data.unsqueeze(0), lora.lora_B.data.unsqueeze(-1), groups=sum(lora.enable_lora) - ).squeeze(0) - # shape after transpose: x - delta_w = delta_w.transpose(-2, -1) - weight = lora.com(weight, T(self.pad(delta_w, lora))) - - return weight - - def merge_adapter(self, name: str): - if name in self.loras: - if self.merged == name: - return # already merged - elif not self.merged: - lora = self.loras[name] - if lora.use_gating: - raise ValueError("Cannot merge LoRA layer with gating.") - self.weight.data = self._compute_adapted_weight(name, lora) - self.merged = name - elif self.merged != name: - raise ValueError("LoRALayer already has a merged LoRA module. Please reset it first.") - - def forward(self, x: torch.Tensor): - def T(w): - return torch.t(w) if self.fan_in_fan_out else w - - if not self.merged: - adapter_setup = self.get_active_setup() - if adapter_setup is not None: - if len(adapter_setup) == 1: - result = F.linear(x, T(self.weight), bias=self.bias) - lora = self.loras[adapter_setup[0]] - if lora.r > 0: - if lora.composition_mode == "scale": - delta_w = lora.lora_B.view(1, 1, -1) - else: - after_A = F.linear(lora.lora_dropout(x), lora.lora_A) - after_B = F.conv1d( - after_A.transpose(-2, -1), lora.lora_B.unsqueeze(-1), groups=sum(lora.enable_lora) - ).transpose(-2, -1) - delta_w = after_B - if lora.use_gating: - gate = torch.sigmoid(lora.gate(x)) - gate = torch.mean(gate, dim=1) - self._store_gating_score(adapter_setup[0], gate) - gate = self.pad( - gate.repeat_interleave(self.out_features // 3, dim=-1), lora, fill_value=1 - ).unsqueeze(1) - else: - gate = None - # result = (batch_size, seq_len, head_dim * 3) - result = lora.com(result, self.pad(delta_w, lora), scaling=gate) - return result - else: - raise ValueError(f"Invalid adapter setup. Cannot use {adapter_setup} with LoRA.") - - return F.linear(x, T(self.weight), bias=self.bias) diff --git a/adapters/src/adapters/methods/modeling.py b/adapters/src/adapters/methods/modeling.py deleted file mode 100644 index 6b265e21..00000000 --- a/adapters/src/adapters/methods/modeling.py +++ /dev/null @@ -1,803 +0,0 @@ -import math - -import torch -from torch import nn - -from transformers.activations import get_activation - -from ..configuration import AdapterFusionConfig, BnConfig -from ..context import ForwardContext - - -class Activation_Function_Class(nn.Module): - """ - Implementation of various activation function. - """ - - def __init__(self, hidden_act): - super().__init__() - if hidden_act.lower() == "leakyrelu": - self.f = nn.functional.leaky_relu - else: - self.f = get_activation(hidden_act.lower()) - - def forward(self, x): - return self.f(x) - - -# Single Adapter - - -class Adapter(nn.Module): - """ - Implementation of a sequential bottleneck adapter block. - """ - - def __init__( - self, - adapter_name, - input_size, - down_sample, - config: BnConfig, - ): - super().__init__() - self.name = adapter_name - self.input_size = input_size - self.add_layer_norm_before = config["ln_before"] - self.add_layer_norm_after = config["ln_after"] - self.adapter_residual_before_ln = config["adapter_residual_before_ln"] - self.use_gating = config["use_gating"] - - # Params related to input & output of adapter - self.residual_before_ln = config["residual_before_ln"] - self.original_ln_before = config["original_ln_before"] - self.original_ln_after = config["original_ln_after"] - - # list for all modules of the adapter, passed into nn.Sequential() - seq_list = [] - - # If we want to have a layer norm on input, we add it to seq_list - if self.add_layer_norm_before: - self.adapter_norm_before = nn.LayerNorm(self.input_size) - seq_list.append(self.adapter_norm_before) - - # if a downsample size is not passed, we just half the size of the original input - self.down_sample = down_sample - if down_sample is None: - self.down_sample = self.input_size // 2 - - # ensure that the down sample size is at least 1 - if self.down_sample < 1: - self.down_sample = 1 - - if config["phm_layer"]: - # Linear down projection of the input - seq_list.append(PHMLayer(adapter_name, self.input_size, self.down_sample, "down", config)) - else: - seq_list.append(nn.Linear(self.input_size, self.down_sample)) - - # select non-linearity - self.non_linearity = Activation_Function_Class(config["non_linearity"].lower()) - - seq_list.append(self.non_linearity) - - # sequential adapter, first downproject, then non-linearity then upsample. In the forward pass we include the - # residual connection - self.adapter_down = nn.Sequential(*seq_list) - - # Up projection to input size - if config["phm_layer"]: - # Linear down projection of the input - self.adapter_up = PHMLayer(adapter_name, self.down_sample, self.input_size, "up", config) - else: - self.adapter_up = nn.Linear(self.down_sample, self.input_size) - - # Additional scaling factor (from He et al. (2021)) - if isinstance(config["scaling"], float): - self.scaling = config["scaling"] - elif config["scaling"] == "learned": - self.scaling = nn.Parameter(torch.ones(1)) - else: - raise ValueError("Unknown scaling type: {}".format(config["scaling"])) - - # If we want to have a layer norm on output, we apply it later after a separate residual connection - # This means that we learn a new output layer norm, which replaces another layer norm learned in the bert layer - if self.add_layer_norm_after: - self.adapter_norm_after = nn.LayerNorm(self.input_size) - - if self.use_gating: - self.gate = nn.Linear(self.input_size, 1) - - # if we want to initialize with the bert strategy then this function is called for all the linear layers - if config["init_weights"] == "bert": - self.adapter_down.apply(self.init_bert_weights) - self.adapter_up.apply(self.init_bert_weights) - if self.use_gating: - self.gate.apply(self.init_bert_weights) - elif config["init_weights"] == "mam_adapter": - with torch.no_grad(): - nn.init.kaiming_uniform_(self.adapter_down[0].weight, a=math.sqrt(5)) - nn.init.zeros_(self.adapter_up.weight) - nn.init.zeros_(self.adapter_down[0].bias) - nn.init.zeros_(self.adapter_up.bias) - if self.use_gating: - self.gate.apply(self.init_bert_weights) - else: - raise ValueError("Unknown init_weights type: {}".format(config["init_weights"])) - - def pre_forward( - self, - hidden_states, - input_tensor, - layer_norm, - fusion_config=None, - ): - """ - Retrieves the hidden_states, query (for Fusion), and residual connection according to the set configuration. - - Args: - adapter_config: config file according to what the parameters are passed - hidden_states: output of previous layer - input_tensor: residual connection before FFN - - Returns: hidden_states, query, residual - - """ - query = None - - if self.residual_before_ln is True: - residual = hidden_states - - if fusion_config is not None and fusion_config["query_before_ln"]: - query = hidden_states - - if self.original_ln_before: - if layer_norm: - hidden_states = hidden_states + input_tensor - if self.residual_before_ln == "post_add": - residual = hidden_states - hidden_states = layer_norm(hidden_states) - else: - hidden_states = hidden_states + input_tensor - - if not self.residual_before_ln: - residual = hidden_states - - if fusion_config is not None and not fusion_config["query_before_ln"]: - query = hidden_states - - return hidden_states, query, residual - - def forward(self, x, residual_input, output_gating=False): - down = self.adapter_down(x) - - up = self.adapter_up(down) - up = up * self.scaling - output = up - - if self.use_gating: - # x.shape = (batch_size, seq_len, hidden_size) - gate = torch.sigmoid(self.gate(x)) - gate = torch.mean(gate, dim=1).unsqueeze(-1) - output = output * gate - - # apply residual connection before layer norm if configured in this way - if self.adapter_residual_before_ln: - output = output + residual_input - - # apply layer norm if available - if self.add_layer_norm_after: - output = self.adapter_norm_after(output) - - # if residual should be applied after layer norm, apply it here - if not self.adapter_residual_before_ln: - output = output + residual_input - - if self.use_gating and output_gating: - return output, down, up, gate - return output, down, up - - def post_forward(self, hidden_states, input_hidden_states, input_tensor, layer_norm): - """ - Performs computations after the forward pass of the adapter block(s). This e.g. includes applying the residual - connection and layer norm if configured in this way. - - Args: - hidden_states: The hidden states outputted by the adapter block(s). - input_hidden_states: Residual connection before the adapter block(s). - input_tensor: Residual connection before the Transformer FFN/ attention layer. - layer_norm: Transformer LayerNorm. - - Returns: - The modified hidden states. - """ - if self.original_ln_after: - if layer_norm: - hidden_states = layer_norm(hidden_states + input_tensor) - else: - hidden_states = hidden_states + input_tensor - - return hidden_states - - # This is copied from the BertPreTrainedModel class to make this a self containing class. - @staticmethod - def init_bert_weights(module): - """Initialize the weights.""" - if isinstance(module, (nn.Linear, nn.Embedding)): - # std defaults to 0.02, this might need to be changed - module.weight.data.normal_(mean=0.0, std=0.02) - elif isinstance(module, nn.LayerNorm): - module.bias.data.zero_() - module.weight.data.fill_(1.0) - if isinstance(module, nn.Linear) and module.bias is not None: - module.bias.data.zero_() - - -class ParallelAdapter(Adapter): - """ - Implementation of a parallel bottleneck adapter block. - """ - - def __init__(self, adapter_name, input_size, down_sample, config: BnConfig): - super().__init__(adapter_name, input_size, down_sample, config) - - def pre_forward( - self, - hidden_states, - input_tensor, - layer_norm, - fusion_config=None, - ): - """ - Retrieves the hidden_states, query (for Fusion), and residual connection according to the set configuration. - - Args: - adapter_config: config file according to what the parameters are passed - hidden_states: output of previous layer - input_tensor: residual connection before FFN - - Returns: hidden_states, query, residual - - """ - # In case of parallel adapter, return the input tensor as hidden states - query = None - if fusion_config is not None: - query = input_tensor - return input_tensor, query, input_tensor - - def forward(self, x, residual_input, output_gating=False): - down = self.adapter_down(x) - - up = self.adapter_up(down) - up = up * self.scaling - - output = up - - if self.use_gating: - # x.shape = (batch_size, seq_len, hidden_size) - gate = torch.sigmoid(self.gate(x)) - gate = torch.mean(gate, dim=1).unsqueeze(-1) - output = output * gate - - # apply layer norm if available - if self.add_layer_norm_after: - output = self.adapter_norm_after(output) - - if self.use_gating and output_gating: - return output, down, up, gate - return output, down, up - - def post_forward(self, hidden_states, input_hidden_states, input_tensor, layer_norm): - """ - Performs computations after the forward pass of the adapter block(s). This e.g. includes applying the residual - connection and layer norm if configured in this way. - - Args: - hidden_states: The hidden states outputted by the adapter block(s). - input_hidden_states: Residual connection before the adapter block(s). - input_tensor: Residual connection before the Transformer FFN/ attention layer. - layer_norm: Transformer LayerNorm. - - Returns: - The modified hidden states. - """ - hidden_states = hidden_states + input_hidden_states - - if self.original_ln_after: - if layer_norm: - hidden_states = layer_norm(hidden_states + input_tensor) - else: - hidden_states = hidden_states + input_tensor - - return hidden_states - - -# Adapter Fusion - - -class BertFusion(nn.Module): - """ - Implementation of an AdapterFusion block. - """ - - def __init__( - self, - config: AdapterFusionConfig, - dense_size, - attention_probs_dropout_prob, - ): - super(BertFusion, self).__init__() - # if config.hidden_size % config.num_attention_heads != 0: - # raise ValueError( - # "The hidden size (%d) is not a multiple of the number of attention " - # "heads (%d)" % (config.hidden_size, config.num_attention_heads)) - self.config = config - - self.dense_size = dense_size - self.dropout = nn.Dropout(attention_probs_dropout_prob) - - if not self.config["query"] and not self.config["key"] and not self.config["value"]: - self.dense = nn.Linear(self.dense_size, 1) - - if self.config["query"]: - self.query = nn.Linear(self.dense_size, self.dense_size) - self.query.apply(Adapter.init_bert_weights) - - if self.config["key"]: - self.key = nn.Linear(self.dense_size, self.dense_size) - self.key.apply(Adapter.init_bert_weights) - - if self.config["value"]: - self.value = nn.Linear(self.dense_size, self.dense_size, bias=False) - self.value.apply(Adapter.init_bert_weights) - if self.config["value_initialized"]: - self.value.weight.data = (torch.zeros(self.dense_size, self.dense_size) + 0.000001).fill_diagonal_(1.0) - - if self.config["temperature"]: - self.T = 50.0 - else: - self.T = 1.0 - self.reduction = self.T / 1000.0 - - def forward(self, query, key, value, residual, output_attentions: bool = False): - - if self.config["residual_before"]: - value += residual[:, :, None, :].repeat(1, 1, value.size(2), 1) - - if self.config["query"]: - query_layer = self.query(query) - else: - query_layer = query - - if self.config["key"]: - key_layer = self.key(key) - else: - key_layer = key - - if self.config["value"] and self.config["value_before_softmax"]: - # key/value have dims => batch, toks, number-of-adapters, feats - value_layer = self.value(value) - else: - value_layer = value - - # Take the dot product between "query" and "key" to get the raw attention scores. - attention_scores = torch.squeeze(torch.matmul(query_layer.unsqueeze(2), key_layer.transpose(-2, -1)), dim=2) - - attention_scores = self.dropout(attention_scores) - - # Normalize the attention scores to probabilities. - attention_probs = nn.Softmax(dim=-1)(attention_scores / self.T) - self.T = max(self.T - self.reduction, 1.0) - - context_layer = torch.squeeze(torch.matmul(attention_probs.unsqueeze(2), value_layer), dim=2) - - if self.config["value"] and not self.config["value_before_softmax"]: - # key/value have dims => batch, toks, number-of-adapters, feats - context_layer = self.value(context_layer) - else: - context_layer = context_layer - - if not self.config["residual_before"]: - context_layer += residual - - if output_attentions: - attention_probs = attention_probs.detach().cpu().numpy() - return context_layer, attention_probs - else: - return context_layer - - -# Invertible Adapters - - -def get_subnet_constructor(non_linearity, reduction_factor): - def subnet(dims_in, dims_out): - return nn.Sequential( - nn.Linear(dims_in, int(dims_in // reduction_factor)), - Activation_Function_Class(non_linearity), - nn.Linear(int(dims_in // reduction_factor), dims_out), - ) - - return subnet - - -class NICECouplingBlock(nn.Module): - """Coupling Block following the NICE design.""" - - def __init__(self, dims_in, dims_c=[], non_linearity="relu", reduction_factor=2): - super().__init__() - - channels = dims_in[0][0] - self.split_len1 = channels // 2 - self.split_len2 = channels - channels // 2 - - assert all( - [dims_c[i][1:] == dims_in[0][1:] for i in range(len(dims_c))] - ), "Dimensions of input and one or more conditions don't agree." - self.conditional = len(dims_c) > 0 - condition_length = sum([dims_c[i][0] for i in range(len(dims_c))]) - - subnet_constructor = get_subnet_constructor(non_linearity, reduction_factor) - self.F = subnet_constructor(self.split_len2 + condition_length, self.split_len1) - self.G = subnet_constructor(self.split_len1 + condition_length, self.split_len2) - - def forward(self, x, c=[], rev=False): - x1, x2 = (x[:, :, : self.split_len1], x[:, :, self.split_len1 :]) - if not rev: - x2_c = torch.cat([x2, *c], 1) if self.conditional else x2 - y1 = x1 + self.F(x2_c) - y1_c = torch.cat([y1, *c], 1) if self.conditional else y1 - y2 = x2 + self.G(y1_c) - else: - x1_c = torch.cat([x1, *c], 1) if self.conditional else x1 - y2 = x2 - self.G(x1_c) - y2_c = torch.cat([y2, *c], 1) if self.conditional else y2 - y1 = x1 - self.F(y2_c) - - return torch.cat((y1, y2), -1) - - def jacobian(self, x, rev=False): - return 0 - - def output_dims(self, input_dims): - assert len(input_dims) == 1, "Can only use 1 input" - return input_dims - - -class GLOWCouplingBlock(nn.Module): - """ - Coupling Block following the GLOW design. The only difference to the RealNVP coupling blocks, is the fact that it - uses a single subnetwork to jointly predict [s_i, t_i], instead of two separate subnetworks. This reduces - computational cost and speeds up learning. clamp: Soft clamping for the multiplicative component. The amplification - or attenuation of each input dimension can be at most ±exp(clamp). - """ - - def __init__(self, dims_in, dims_c=[], non_linearity="relu", reduction_factor=2, clamp=5.0): - super().__init__() - - channels = dims_in[0][0] - self.ndims = len(dims_in[0]) - self.split_len1 = channels // 2 - self.split_len2 = channels - channels // 2 - - self.clamp = clamp - self.max_s = math.exp(clamp) - self.min_s = math.exp(-clamp) - - assert all( - [tuple(dims_c[i][1:]) == tuple(dims_in[0][1:]) for i in range(len(dims_c))] - ), f"Dimensions of input and one or more conditions don't agree: {dims_c} vs {dims_in}." - self.conditional = len(dims_c) > 0 - condition_length = sum([dims_c[i][0] for i in range(len(dims_c))]) - - subnet_constructor = get_subnet_constructor(non_linearity, reduction_factor) - self.s1 = subnet_constructor(self.split_len1 + condition_length, self.split_len2 * 2) - self.s2 = subnet_constructor(self.split_len2 + condition_length, self.split_len1 * 2) - - def e(self, s): - return torch.exp(self.clamp * 0.636 * torch.atan(s / self.clamp)) - - def log_e(self, s): - return self.clamp * 0.636 * torch.atan(s / self.clamp) - - def forward(self, x, c=[], rev=False): - x1, x2 = (x[:, :, : self.split_len1], x[:, :, self.split_len1 :]) - - if not rev: - s2, t2 = x1.clone(), x2.clone() - y1 = self.e(s2) * x1 + t2 - - r1 = self.s1(torch.cat([y1, *c], 1) if self.conditional else y1) - s1, t1 = r1[:, : self.split_len2], r1[:, self.split_len2 :] - y2 = self.e(s1) * x2 + t1 - self.last_jac = torch.sum(self.log_e(s1), dim=tuple(range(1, self.ndims + 1))) + torch.sum( - self.log_e(s2), dim=tuple(range(1, self.ndims + 1)) - ) - - else: # names of x and y are swapped! - r1 = self.s1(torch.cat([x1, *c], 1) if self.conditional else x1) - s1, t1 = r1[:, : self.split_len2], r1[:, self.split_len2 :] - y2 = (x2 - t1) / self.e(s1) - - r2 = self.s2(torch.cat([y2, *c], 1) if self.conditional else y2) - s2, t2 = r2[:, : self.split_len1], r2[:, self.split_len1 :] - y1 = (x1 - t2) / self.e(s2) - self.last_jac = -torch.sum(self.log_e(s1), dim=tuple(range(1, self.ndims + 1))) - torch.sum( - self.log_e(s2), dim=tuple(range(1, self.ndims + 1)) - ) - - return [torch.cat((y1, y2), 1)] - - def jacobian(self, x, c=[], rev=False): - return self.last_jac - - def output_dims(self, input_dims): - return input_dims - - -def kronecker_product(a, b): - """ - Copied from rabeehk/compacter seq2seq/hypercomplex/kronecker.py - - Kronecker product of matrices a and b with leading batch dimensions. Batch dimensions are broadcast. The number of - them mush :type a: torch.Tensor :type b: torch.Tensor :rtype: torch.Tensor - """ - siz1 = torch.Size(torch.tensor(a.shape[-2:]) * torch.tensor(b.shape[-2:])) - res = a.unsqueeze(-1).unsqueeze(-3) * b.unsqueeze(-2).unsqueeze(-4) - siz0 = res.shape[:-4] - out = res.reshape(siz0 + siz1) - return out - - -class PHMLayer(nn.Module): - """ - This class is adapted from the compacter implementation at https://github.com/rabeehk/compacter - """ - - def __init__( - self, - adapter_name: str, - in_features: int, - out_features: int, - position: str, - config: dict, - ) -> None: - super(PHMLayer, self).__init__() - assert config["hypercomplex_nonlinearity"] in ["phm", "glorot-normal", "glorot-uniform", "normal"] - assert config["phm_c_init"] in ["normal", "uniform"] - assert ( - in_features % config["phm_dim"] == 0 - ), f"Argument `in_features`={in_features} is not divisble be `phm_dim`{config['phm_dim']}" - assert ( - out_features % config["phm_dim"] == 0 - ), f"Argument `out_features`={out_features} is not divisble be `phm_dim`{config['phm_dim']}" - self.config = config - self.name = adapter_name - self.in_features = in_features - self.out_features = out_features - self.position = position - self.learn_phm = config["learn_phm"] - self.phm_dim = config["phm_dim"] - self._in_feats_per_axis = in_features // config["phm_dim"] - self._out_feats_per_axis = out_features // config["phm_dim"] - self.phm_rank = config["phm_rank"] - self.phm_init_range = config["phm_init_range"] - self.shared_phm_rule = config["shared_phm_rule"] - self.factorized_phm_rule = config["factorized_phm_rule"] - if not self.shared_phm_rule: - if self.factorized_phm_rule: - self.phm_rule_left = nn.Parameter( - torch.FloatTensor(self.phm_dim, self.phm_dim, 1), requires_grad=self.learn_phm - ) - self.phm_rule_right = nn.Parameter( - torch.FloatTensor(self.phm_dim, 1, self.phm_dim), requires_grad=self.learn_phm - ) - else: - self.phm_rule = nn.Parameter( - torch.FloatTensor(self.phm_dim, self.phm_dim, self.phm_dim), requires_grad=self.learn_phm - ) - self.bias_flag = config["phm_bias"] - self.w_init = config["hypercomplex_nonlinearity"] - self.c_init = config["phm_c_init"] - self.shared_W_phm = config["shared_W_phm"] - self.factorized_phm_W = config["factorized_phm_W"] - if not self.shared_W_phm: - if self.factorized_phm_W: - self.W_left = nn.Parameter( - torch.Tensor(size=(self.phm_dim, self._in_feats_per_axis, self.phm_rank)), requires_grad=True - ) - self.W_right = nn.Parameter( - torch.Tensor(size=(self.phm_dim, self.phm_rank, self._out_feats_per_axis)), requires_grad=True - ) - else: - self.W = nn.Parameter( - torch.Tensor(size=(self.phm_dim, self._in_feats_per_axis, self._out_feats_per_axis)), - requires_grad=True, - ) - if self.bias_flag: - self.b = nn.Parameter(torch.Tensor(out_features)) - else: - self.register_parameter("b", None) - self.reset_parameters() - - def _init_W(self, W_left=None, W_right=None, W=None): - if self.factorized_phm_W: - W_left = W_left if W_left is not None else self.W_left - W_right = W_right if W_right is not None else self.W_right - return init_W(self.config, W_left, W_right, W) - else: - W = W if W is not None else self.W - return init_W(self.config, W_left, W_right, W) - - def reset_parameters(self): - if not self.shared_W_phm: - self._init_W() - - if self.bias_flag: - self.b.data = torch.zeros_like(self.b.data) - - if not self.shared_phm_rule: - if self.factorized_phm_rule: - if self.c_init == "uniform": - self.phm_rule_left.data.uniform_(-0.01, 0.01) - self.phm_rule_right.data.uniform_(-0.01, 0.01) - elif self.c_init == "normal": - self.phm_rule_left.data.normal_(std=0.01) - self.phm_rule_right.data.normal_(std=0.01) - else: - raise NotImplementedError - else: - if self.c_init == "uniform": - self.phm_rule.data.uniform_(-0.01, 0.01) - elif self.c_init == "normal": - self.phm_rule.data.normal_(mean=0, std=0.01) - else: - raise NotImplementedError - - def set_phm_rule(self, phm_rule=None, phm_rule_left=None, phm_rule_right=None): - """ - If factorized_phm_rules is set, phm_rule is a tuple, showing the left and right phm rules, and if this is not - set, this is showing the phm_rule. - """ - if self.factorized_phm_rule: - self.phm_rule_left = phm_rule_left - self.phm_rule_right = phm_rule_right - else: - self.phm_rule = phm_rule - - def set_W(self, W=None, W_left=None, W_right=None): - if self.factorized_phm_W: - self.W_left = W_left - self.W_right = W_right - else: - self.W = W - - def forward(self, x: torch.Tensor) -> torch.Tensor: - if self.shared_W_phm: - parameters = ForwardContext.get_context().shared_parameters[self.name] - if self.factorized_phm_W: - W = torch.bmm(parameters[f"W_{self.position}_left"], parameters[f"W_{self.position}_right"]) - else: - W = parameters[f"W_{self.position}"] - else: - if self.factorized_phm_W: - W = torch.bmm(self.W_left, self.W_right) - else: - W = self.W - if self.shared_phm_rule: - parameters = ForwardContext.get_context().shared_parameters[self.name] - if self.factorized_phm_rule: - phm_rule = torch.bmm(parameters["phm_rule_left"], parameters["phm_rule_right"]) - else: - phm_rule = parameters["phm_rule"] - else: - if self.factorized_phm_rule: - phm_rule = torch.bmm(self.phm_rule_left, self.phm_rule_right) - else: - phm_rule = self.phm_rule - - H = kronecker_product(phm_rule, W).sum(0) - - y = torch.matmul(input=x, other=H) - if self.b is not None: - y += self.b - return y - - -def init_shared_parameters(config, in_features, device): - """ - Create and initialize the parameters shared by all compacter modules - """ - parameters = nn.ParameterDict() - if config["shared_W_phm"]: - if config["factorized_phm_W"]: - out_features = in_features // config["reduction_factor"] - _in_feats_per_axis = in_features // config["phm_dim"] - _out_feats_per_axis = out_features // config["phm_dim"] - W_down_left = torch.Tensor(size=(config["phm_dim"], _in_feats_per_axis, config["phm_rank"])) - W_down_right = torch.Tensor(size=(config["phm_dim"], config["phm_rank"], _out_feats_per_axis)) - W_up_left = torch.Tensor(size=(config["phm_dim"], _out_feats_per_axis, config["phm_rank"])) - W_up_right = torch.Tensor(size=(config["phm_dim"], config["phm_rank"], _in_feats_per_axis)) - init_W(config, W_left=W_down_left, W_right=W_down_right) - init_W(config, W_left=W_up_left, W_right=W_up_right) - parameters["W_down_left"] = nn.Parameter(W_down_left, requires_grad=True) - parameters["W_down_right"] = nn.Parameter(W_down_right, requires_grad=True) - parameters["W_up_left"] = nn.Parameter(W_up_left, requires_grad=True) - parameters["W_up_right"] = nn.Parameter(W_up_right, requires_grad=True) - else: - W_down = torch.Tensor(size=(config["phm_dim"], _in_feats_per_axis, _out_feats_per_axis)) - W_up = torch.Tensor(size=(config["phm_dim"], _out_feats_per_axis, _in_feats_per_axis)) - init_W(config, W=W_down) - init_W(config, W=W_up) - parameters["W_down"] = nn.Parameter(W_down, requires_grad=True) - parameters["W_up"] = nn.Parameter(W_up, requires_grad=True) - if config["shared_phm_rule"]: - if config["factorized_phm_rule"]: - phm_rule_left = nn.Parameter( - torch.FloatTensor(config["phm_dim"], config["phm_dim"], 1).to(device), - requires_grad=config["learn_phm"], - ) - phm_rule_right = nn.Parameter( - torch.FloatTensor(config["phm_dim"], 1, config["phm_dim"]).to(device), - requires_grad=config["learn_phm"], - ) - if config["phm_c_init"] == "normal": - phm_rule_left.data.normal_(mean=0, std=config["phm_init_range"]) - phm_rule_right.data.normal_(mean=0, std=config["phm_init_range"]) - elif config["phm_c_init"] == "uniform": - phm_rule_left.data.uniform_(-1, 1) - phm_rule_right.data.uniform_(-1, 1) - else: - raise NotImplementedError - parameters["phm_rule_left"] = phm_rule_left - parameters["phm_rule_right"] = phm_rule_right - else: - phm_rule = nn.Parameter( - torch.FloatTensor(config["phm_dim"], config["phm_dim"], config["phm_dim"]), - requires_grad=config["learn_phm"], - ) - if config["phm_c_init"] == "normal": - phm_rule.data.normal_(mean=0, std=config["phm_init_range"]) - elif config["phm_c_init"] == "uniform": - phm_rule.data.uniform_(-1, 1) - else: - raise NotImplementedError - parameters["phm_rule"] = phm_rule - return parameters - - -def init_W(config, W_left=None, W_right=None, W=None): - """ - Initialize the weights for the compacter module or the shared parameters - """ - if config["factorized_phm_W"]: - W_left = W_left - W_right = W_right - else: - W = W - if config["hypercomplex_nonlinearity"]: - if config["factorized_phm_W"]: - for i in range(config["phm_dim"]): - W_left.data[i] = nn.init.xavier_normal_(W_left.data[i]) - W_right.data[i] = nn.init.xavier_normal_(W_right.data[i]) - else: - for i in range(config["phm_dim"]): - W.data[i] = nn.init.xavier_normal_(W.data[i]) - elif config["hypercomplex_nonlinearity"] == "glorot-uniform": - if config["factorized_phm_W"]: - for i in range(config["phm_dim"]): - W_left.data[i] = nn.init.xavier_uniform_(W_left.data[i]) - W_right.data[i] = nn.init.xavier_uniform_(W_right.data[i]) - else: - for i in range(config["phm_dim"]): - W.data[i] = nn.init.xavier_uniform_(W.data[i]) - elif config["hypercomplex_nonlinearity"] == "normal": - if config["factorized_phm_W"]: - for i in range(config["phm_dim"]): - W_left.data[i].normal_(mean=0, std=config["phm_init_range"]) - W_right.data[i].normal_(mean=0, std=config["phm_init_range"]) - else: - for i in range(config["phm_dim"]): - W.data[i].normal_(mean=0, std=config["phm_init_range"]) - else: - raise ValueError diff --git a/adapters/src/adapters/methods/prefix_tuning.py b/adapters/src/adapters/methods/prefix_tuning.py deleted file mode 100644 index 2a716e2a..00000000 --- a/adapters/src/adapters/methods/prefix_tuning.py +++ /dev/null @@ -1,543 +0,0 @@ -from typing import Dict, List, NamedTuple, Optional, Union - -import torch -import torch.nn.functional as F -from torch import nn - -from transformers import PretrainedConfig -from transformers.modeling_utils import ModuleUtilsMixin - -from ..composition import AdapterCompositionBlock, BatchSplit, Parallel, Stack, adjust_tensors_for_parallel -from ..configuration import ModelAdaptersConfig, PrefixTuningConfig -from ..context import AdapterSetup, ForwardContext -from .adapter_layer_base import ComposableAdapterLayerBase -from .modeling import Activation_Function_Class - - -class PrefixTuning(nn.Module, ModuleUtilsMixin): - def __init__( - self, - n_layers: int, - n_heads: int, - input_size: int, - config: PrefixTuningConfig, - n_embd_per_head: Optional[int] = None, - ): - super().__init__() - self.n_layers = n_layers - self.n_heads = n_heads - self.input_size = input_size - self.n_embd_per_head = n_embd_per_head or self.input_size // self.n_heads - self.config = config - - self.wte = nn.Embedding(self.config.prefix_length, self.input_size) - self.control_trans = nn.Sequential( - nn.Linear(self.input_size, self.config.bottleneck_size), - Activation_Function_Class(self.config.non_linearity.lower()), - nn.Linear(self.config.bottleneck_size, self.n_layers * 2 * self.n_heads * self.n_embd_per_head), - ) - self.dropout = nn.Dropout(self.config.dropout) - - def eject(self): - input_tokens = torch.arange(self.config.prefix_length).long() - input_tokens = input_tokens.unsqueeze(0).expand(1, -1).to(self.device) - embs = self.wte(input_tokens) - key_values = self.control_trans(embs) # batch_size x prefix_length x n_layers*2*input_size - key_values = key_values.view( - self.config.prefix_length * self.n_layers * 2 * self.input_size - ) # *2 for key and value - - return key_values - - def forward(self, batch_size): - input_tokens = torch.arange(self.config.prefix_length).long() - input_tokens = input_tokens.unsqueeze(0).expand(batch_size, -1).to(self.device) - embs = self.wte(input_tokens) - key_values = self.control_trans(embs) # batch_size x prefix_length x n_layers*2*input_size - key_values = key_values.view( - batch_size, self.config.prefix_length, self.n_layers * 2, self.n_heads, self.n_embd_per_head - ) # *2 for key and value - key_values = self.dropout(key_values) - # n_layers * (2 x batch_size x n_heads x prefix_length x n_embd_per_head) - key_values = key_values.permute(2, 0, 3, 1, 4).split(2) - - return key_values - - -class FlatPrefixTuning(nn.Module, ModuleUtilsMixin): - def __init__( - self, - n_layers: int, - n_heads: int, - input_size: int, - config: PrefixTuningConfig, - n_embd_per_head: Optional[int] = None, - ): - super().__init__() - self.n_layers = n_layers - self.n_heads = n_heads - self.input_size = input_size - self.n_embd_per_head = n_embd_per_head or self.input_size // self.n_heads - self.config = config - - self.control_trans = nn.Parameter( - torch.randn(self.config.prefix_length * self.n_layers * 2 * self.n_heads * self.n_embd_per_head) - ) - - self.dropout = nn.Dropout(self.config.dropout) - - def forward(self, batch_size): - key_values = ( - self.control_trans.unsqueeze(0) - .expand(batch_size, -1) - .view(batch_size, self.config.prefix_length, self.n_layers * 2, self.n_heads, self.n_embd_per_head) - .to(self.device) - ) # *2 for key and value - key_values = self.dropout(key_values) - # n_layers * (2 x batch_size x n_heads x prefix_length x n_embd_per_head) - key_values = key_values.permute(2, 0, 3, 1, 4).split(2) - - return key_values - - -class PrefixTuningGroup(nn.ModuleDict): - def __init__(self, module_configs, prefix_tuning_config): - super().__init__() - if prefix_tuning_config["flat"]: - prefix_tuning_class = FlatPrefixTuning - else: - prefix_tuning_class = PrefixTuning - for k, kwargs in module_configs.items(): - self[k] = prefix_tuning_class(**kwargs, config=prefix_tuning_config) - - def eject(self): - """Converts all PrefixTuning modules into FlatPrefixTuning modules.""" - for k, v in self.items(): - if isinstance(v, PrefixTuning): - config = v.config.replace(flat=True) - self[k] = FlatPrefixTuning(v.n_layers, v.n_heads, v.input_size, config) - weights = v.eject() - self[k].control_trans = nn.Parameter(weights) - - def forward(self, batch_size): - return {k: v(batch_size) for k, v in self.items()} - - -class PrefixTuningPool(nn.Module): - """ - The model layer that holds all Prefix Tuning prefixes. While each Transformers layer has its own prefix, this layer - is shared across all Transformers layers. - - How it works: - - 1. A `PrefixTuningLayer` module that sets this module as pool module is added to each layer. - 2. On adding a prefix, each shim module where a prefix should be added increments a counter in `prefix_counts`. - 3. Finally, the base model class confirms adding a new prefix by calling `confirm_prefix()`. - 4. This module adds a prefix layer that produces outputs corresponding to the indicated number of layers. - - Notes: - - - The forward call to this layer is executed in the ForwardContext of each model pass. - - All other methods of this class (except for `confirm_prefix()`) should be called exclusively by - `PrefixTuningLayer`. - - Args: - config (:class:`~transformers.PretrainedConfig`): The model config. - """ - - def __init__(self, model_config: PretrainedConfig, adapters_config: ModelAdaptersConfig): - super().__init__() - self.model_config = model_config - self.adapters_config = adapters_config - self.prefix_counts = {} - self.prefix_tunings = nn.ModuleDict() - - def indicate_prefix(self, prefix_name: str, location_key: str, **kwargs): - if prefix_name not in self.prefix_counts: - self.prefix_counts[prefix_name] = {location_key: {"count": 1, **kwargs}} - elif location_key not in self.prefix_counts[prefix_name]: - self.prefix_counts[prefix_name][location_key] = {"count": 1, **kwargs} - else: - # TODO-AH: Check if kwargs are the same - self.prefix_counts[prefix_name][location_key]["count"] += 1 - - return self.prefix_counts[prefix_name][location_key]["count"] - 1 - - def confirm_prefix(self, prefix_name: str) -> bool: - """Create Prefix Tuning module based on shim layer infications.""" - prefix_tuning_config = self.adapters_config.match(prefix_name, PrefixTuningConfig) - if prefix_tuning_config is None: - return False - - if prefix_name not in self.prefix_counts: - raise ValueError(f"Prefix {prefix_name} not found in PrefixTuningPool") - - module_configs = {} - for location_key, location_config in self.prefix_counts[prefix_name].items(): - module_configs[location_key] = { - "n_layers": location_config["count"], - "n_heads": location_config["n_heads"], - "input_size": location_config["input_size"], - "n_embd_per_head": location_config["n_embd_per_head"], - } - prefix_tuning = PrefixTuningGroup(module_configs, prefix_tuning_config) - prefix_tuning.train(self.training) # make sure training mode is consistent - self.prefix_tunings[prefix_name] = prefix_tuning - del self.prefix_counts[prefix_name] - return True - - def average_prefix(self, prefix_name: str, input_adapters: Dict[str, float]) -> bool: - if self.confirm_prefix(prefix_name): - # average weights - avg_state_dict = {} - for name, weight in input_adapters.items(): - module = self.prefix_tunings[name] - if module is not None: - for k, v in module.state_dict().items(): - if k in avg_state_dict: - avg_state_dict[k] += weight * v - else: - avg_state_dict[k] = weight * v - # load averaged weights - self.prefix_tunings[prefix_name].load_state_dict(avg_state_dict) - return True - - return False - - def delete_prefix(self, prefix_name: str): - if prefix_name in self.prefix_tunings: - del self.prefix_tunings[prefix_name] - - def enable_prefix(self, prefix_name: str): - if prefix_name in self.prefix_tunings: - for param in self.prefix_tunings[prefix_name].parameters(): - param.requires_grad = True - - def get_prefix(self, prefix_name: str): - if prefix_name in self.prefix_tunings: - return self.prefix_tunings[prefix_name] - else: - return None - - def forward(self, *args, **kwargs): - context = AdapterSetup.get_context() - if context is not None: - adapter_setup = context.adapter_setup - else: - adapter_setup = self.adapters_config.active_setup - - prefix_states = {} - if adapter_setup is not None: - # Infer batch size - input_tensor_names = ["input_ids", "decoder_input_ids", "attention_mask", "inputs_embeds", "pixel_values"] - batch_size = None - for name in input_tensor_names: - if kwargs.get(name, None) is not None: - batch_size = kwargs[name].size(0) - break - if batch_size is None: - if len(args) > 0: - batch_size = args[0].size(0) - else: - raise ValueError("Could not infer batch size for prefix tuning from inputs.") - - # Pass to sub-layers - for name in adapter_setup.flatten(): - if name in self.prefix_tunings: - prefix_states[name] = self.prefix_tunings[name](batch_size) - - return prefix_states - - -class PrefixTuningState(NamedTuple): - """ - Models the input and output states of a prefix tuning layer. - - Args: - key_states (torch.Tensor): The key states of the attention layer. - value_states (torch.Tensor): The value states of the attention layer. - residual_input (torch.Tensor): The residual input of the attention layer. - attention_mask (torch.Tensor, optional): The attention mask of the attention layer. - invert_mask (bool): Whether the attention mask is inverted (ie. using '1' for padding). - idx_slice (slice, optional): Id slice for slicing prefix states along the batch size dimension. - - """ - - key_states: torch.Tensor - value_states: torch.Tensor - residual_input: torch.Tensor - attention_mask: Optional[torch.Tensor] - invert_mask: bool - idx_slice: Optional[slice] = None - - -class PrefixTuningLayer(ComposableAdapterLayerBase, nn.Module): - """ - Representation of a Prefix Tuning layer within one Transformer layer. This class implements `AdapterLayerBase` for - compatibility with adapters. It uses `PrefixTuningPool` in the background and `set_pool()` must be called after - initialization. - - Args: - location_key (str): The id describing the location of this layer in the model. - Currently, can be "encoder_prefix", "cross_prefix" or None. - config (:class:`~transformers.PretrainedConfig`): The model config. - """ - - adapter_modules_name = "prefixes" - supported_compositions = [Stack, Parallel, BatchSplit] - - def __init__( - self, - location_key: str, - model_config: PretrainedConfig, - adapters_config: ModelAdaptersConfig, - add_model_type_to_key: bool = False, - ): - super().__init__() - self.model_config = model_config - self.adapters_config = adapters_config - self.location_key = location_key - if add_model_type_to_key: - self.location_key = f"{self.model_config.model_type}_{self.location_key}" - self.prefixes = {} - self.prefix_gates = nn.ModuleDict() - - def set_pool(self, pool: PrefixTuningPool): - self.__setattr__("pool", pool) - - def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: - self.layer_idx = layer_idx - # only match location keys for which we have config keys - if self.location_key.startswith("cross") or self.location_key.startswith("encoder"): - used_location_key = self.location_key - else: - used_location_key = None - prefix_tuning_config = self.adapters_config.match( - adapter_name, - config_type=PrefixTuningConfig, - layer_idx=self.layer_idx, - location_key=used_location_key, - ) - if prefix_tuning_config is not None: - prefix_id = self.pool.indicate_prefix( - adapter_name, - self.location_key, - n_heads=self.model_config.num_attention_heads, - input_size=self.model_config.hidden_size, - n_embd_per_head=getattr(self.model_config, "d_kv", None), # this is currently specific to T5-3B - ) - self.prefixes[adapter_name] = prefix_id - - if prefix_tuning_config.use_gating: - gate_outputs = 1 if prefix_tuning_config.shared_gating else 2 - gate = nn.Linear(self.model_config.hidden_size, gate_outputs) - gate.weight.data.normal_(mean=0.0, std=0.02) - self.prefix_gates[adapter_name] = gate - return True - - return False - - def average_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: - # add new adapter - if self.add_adapter(adapter_name, self.layer_idx): - # prefix averaging is handled in pool, only average gates here - if adapter_name in self.prefix_gates: - avg_state_dict = {} - for name, weight in input_adapters.items(): - if name in self.prefix_gates: - module = self.prefix_gates[name] - for k, v in module.state_dict().items(): - if k in avg_state_dict: - avg_state_dict[k] += weight * v - else: - avg_state_dict[k] = weight * v - else: - self.delete_adapter(adapter_name) # clean up before raising error - raise ValueError("Adapter {} not found.".format(name)) - # load averaged weights - self.prefix_gates[adapter_name].load_state_dict(avg_state_dict) - return True - else: - return False - - def delete_adapter(self, adapter_name: str): - self.pool.delete_prefix(adapter_name) - if adapter_name in self.prefixes: - del self.prefixes[adapter_name] - if adapter_name in self.prefix_gates: - del self.prefix_gates[adapter_name] - - def add_fusion_layer(self, adapter_names: Union[List, str]): - pass # not applicable to prefix tuning - - def delete_fusion_layer(self, adapter_names: Union[List, str]): - pass # not applicable to prefix tuning - - def enable_adapters(self, adapter_setup: AdapterCompositionBlock, unfreeze_adapters: bool, unfreeze_fusion: bool): - if unfreeze_adapters: - for prefix_tuning_name in adapter_setup.flatten(): - self.pool.enable_prefix(prefix_tuning_name) - if prefix_tuning_name in self.prefix_gates: - for param in self.prefix_gates[prefix_tuning_name].parameters(): - param.requires_grad = unfreeze_adapters - - def freeze_adapter(self, adapter_name: str, freeze: bool = True): - if adapter_name in self.prefixes: - self.pool.get_prefix(adapter_name)[self.location_key].train(not freeze) - for param in self.pool.get_prefix(adapter_name)[self.location_key].parameters(): - param.requires_grad = not freeze - if adapter_name in self.prefix_gates: - for param in self.prefix_gates[adapter_name].parameters(): - param.requires_grad = not freeze - - def get_adapter(self, adapter_name): - return_dict = nn.ModuleDict() - # Make sure to only return params once - if adapter_name in self.prefixes and self.prefixes[adapter_name] == 0: - prefix_module = self.pool.get_prefix(adapter_name) - if prefix_module is not None: - return_dict["prefix"] = prefix_module[self.location_key] - if adapter_name in self.prefix_gates: - return_dict["gate"] = self.prefix_gates[adapter_name] - if len(return_dict) > 0: - return return_dict - - return None - - def vslice(self, state: PrefixTuningState, slice_obj: slice) -> PrefixTuningState: - if state.idx_slice is None: - split_idx_slice = slice_obj - else: - split_idx_slice = slice( - state.idx_slice.start + slice_obj.start, - state.idx_slice.start + slice_obj.stop, - ) - return PrefixTuningState( - key_states=state.key_states[slice_obj], - value_states=state.value_states[slice_obj], - residual_input=state.residual_input[slice_obj], - attention_mask=state.attention_mask[slice_obj] if state.attention_mask is not None else None, - invert_mask=state.invert_mask, - idx_slice=split_idx_slice, - ) - - def pad_and_concat(self, states: List[PrefixTuningState]) -> PrefixTuningState: - """Pads all key & value states to the longest prefix length in the current batch. - This is required e.g. for stacked prefix tunings. - """ - max_prefix_length = max([state.key_states.shape[-2] for state in states]) - all_key_states, all_value_states, all_residual_input, all_attention_mask = [], [], [], [] - for state in states: - key_states, value_states, residual_input, attention_mask = state[:4] - # pad sizes - pad_length = max_prefix_length - key_states.shape[-2] - pad_size = (0, 0, pad_length, 0) - key_states = F.pad(key_states, pad_size, "constant", self.model_config.pad_token_id) - value_states = F.pad(value_states, pad_size, "constant", self.model_config.pad_token_id) - - # pad attention mask - if pad_length > 0: - # Masking the padded tokens only works correctly if attention_mask is set - # We assume this to be the case at this point - assert attention_mask is not None, "Attention mask must be set for prefix tuning" - attention_mask = F.pad( - attention_mask, - (max_prefix_length - attention_mask.shape[-1], 0), - "constant", - 1.0 if state.invert_mask else 0.0, - ) - - all_key_states.append(key_states) - all_value_states.append(value_states) - all_residual_input.append(residual_input) - all_attention_mask.append(attention_mask) - - all_key_states = torch.cat(all_key_states, dim=0) - all_value_states = torch.cat(all_value_states, dim=0) - all_residual_input = torch.cat(all_residual_input, dim=0) - all_attention_mask = torch.cat(all_attention_mask, dim=0) if attention_mask is not None else None - - return PrefixTuningState( - key_states=all_key_states, - value_states=all_value_states, - residual_input=all_residual_input, - attention_mask=all_attention_mask, - invert_mask=states[0].invert_mask, - idx_slice=states[0].idx_slice, - ) - - def repeat(self, state: PrefixTuningState, channels: int) -> PrefixTuningState: - if state.attention_mask is not None: - if state.attention_mask.dim() == 2: # e.g. for DistilBERT, attention_mask has shape (batch_size, seq_len) - attention_mask = state.attention_mask.repeat(channels, 1) - else: - attention_mask = state.attention_mask.repeat(channels, 1, 1, 1) - else: - attention_mask = None - return PrefixTuningState( - key_states=state.key_states.repeat(channels, 1, 1, 1), - value_states=state.value_states.repeat(channels, 1, 1, 1), - residual_input=state.residual_input.repeat(channels, 1, 1), - attention_mask=attention_mask, - invert_mask=state.invert_mask, - idx_slice=state.idx_slice, - ) - - def mean(self, states: List[PrefixTuningState], weights: torch.Tensor) -> PrefixTuningState: - # TODO implement average composition - raise NotImplementedError() - - def compose_single(self, adapter_setup: str, state: PrefixTuningState, lvl: int = 0) -> PrefixTuningState: - prefix_id = self.prefixes[adapter_setup] - batch_size = state.key_states.size(0) - - # Retrieve pre-computed prefix states from context - context = ForwardContext.get_context() - # batch_size x n_heads x prefix_length x n_embd_per_head - prefix_keys, prefix_values = context.prefix_states[adapter_setup][self.location_key][prefix_id] - - # Select index range for batch split - # Ignore slices that go beyond the prefix states bsz - # (this is the case for slices produced by Parallel blocks which operate on replicated kv states) - if state.idx_slice is not None and state.idx_slice.start < prefix_keys.size(0): - prefix_keys = prefix_keys[state.idx_slice] - prefix_values = prefix_values[state.idx_slice] - - if adapter_setup in self.prefix_gates: - gate = self.prefix_gates[adapter_setup] - gate_output = torch.mean(torch.sigmoid(gate(state.residual_input)), dim=1) - self._store_gating_score(adapter_setup, gate_output) - gate_output_key = gate_output[:, 0].view(-1, 1, 1, 1) - gate_output_value = gate_output[:, -1].view(-1, 1, 1, 1) - prefix_keys = prefix_keys * gate_output_key - prefix_values = prefix_values * gate_output_value - - # Replicate for Parallel block - prefix_keys, prefix_values = adjust_tensors_for_parallel(state.key_states, prefix_keys, prefix_values) - - key_states = torch.cat([prefix_keys, state.key_states], dim=2) - value_states = torch.cat([prefix_values, state.value_states], dim=2) - if state.attention_mask is not None: - if state.attention_mask.dim() == 2: # e.g. for DistilBERT, attention_mask has shape (batch_size, seq_len) - prefix_mask = torch.ones(batch_size, prefix_keys.size(2)).to(state.attention_mask.device) - else: - prefix_mask = torch.ones(batch_size, 1, state.attention_mask.size(2), prefix_keys.size(2)).to( - state.attention_mask.device - ) - if state.invert_mask: - prefix_mask = 1.0 - prefix_mask - (prefix_mask,) = adjust_tensors_for_parallel(state.attention_mask, prefix_mask) - attention_mask = torch.cat([prefix_mask, state.attention_mask], dim=-1) - else: - attention_mask = None - - return state._replace(key_states=key_states, value_states=value_states, attention_mask=attention_mask) - - def forward(self, key_states, value_states, residual_input, attention_mask=None, invert_mask=True): - adapter_setup = self.get_active_setup() - if adapter_setup is not None: - state = PrefixTuningState(key_states, value_states, residual_input, attention_mask, invert_mask) - state = self.compose(adapter_setup, state) - key_states, value_states, residual_input, attention_mask = state[:4] - - return key_states, value_states, attention_mask diff --git a/adapters/src/adapters/methods/prompt_tuning.py b/adapters/src/adapters/methods/prompt_tuning.py deleted file mode 100644 index fd9db60e..00000000 --- a/adapters/src/adapters/methods/prompt_tuning.py +++ /dev/null @@ -1,228 +0,0 @@ -# https://github.com/google-research/prompt-tuning/blob/main/prompt_tuning/train/prompts.py - -import math -from typing import Callable, Dict, List, Union - -import numpy as np -import torch -from torch import nn - -from transformers import AutoTokenizer -from transformers.configuration_utils import PretrainedConfig - -from ..composition import AdapterCompositionBlock -from ..configuration import ModelAdaptersConfig, PromptTuningConfig -from ..context import ForwardContext -from .adapter_layer_base import AdapterLayerBase - - -class PromptTuning(nn.Module): - """Generate a Prompt and concatenate it with the input. - - This is the training time version of prompting a model. Calling the injected `prompt` module will generate your - unbatched prompt. This model then replicates it for the batched input and concatenates them together. - - Attributes: - prompt: The module that actually generates the unbatched prompt. - combine: A function that combines the prompt and the embedded input. - """ - - prompt: nn.Module - combination_fn: Callable[[torch.Tensor, torch.Tensor], torch.Tensor] - - def __init__( - self, - adapter_name: str, - prompt_tuning_config: PromptTuningConfig, - model_config: PretrainedConfig, - base_model_embeddings: nn.Module, - ): - super().__init__() - - self.name = adapter_name - self.model_config = model_config - self.prompt_tuning_config = prompt_tuning_config - - embedding_size = getattr(model_config, "embedding_size", model_config.hidden_size) - - self.prompt_embedding = nn.Embedding( - num_embeddings=prompt_tuning_config.prompt_length, embedding_dim=embedding_size - ) - # Initialize prompt tokens - self.prompt_tokens = torch.arange(prompt_tuning_config.prompt_length).long() - - self._init_prompt_embedding(base_model_embeddings) - - if prompt_tuning_config.combine == "prefix": - self.combination_fn = lambda prompt, embedded_input: torch.cat([prompt, embedded_input], dim=1) - elif prompt_tuning_config.combine == "prefix_after_bos": - self.combination_fn = lambda prompt, embedded_input: torch.cat( - [embedded_input[:, 0, np.newaxis], prompt, embedded_input[:, 1:]], dim=1 - ) - else: - raise ValueError( - f"Unknown combination function: {prompt_tuning_config.combine}. " - "Must be one of 'prefix' or 'prefix_after_bos'." - ) - - def _init_prompt_embedding(self, base_model_embeddings: nn.Module) -> None: - if self.prompt_tuning_config.prompt_init == "random_uniform": - nn.init.uniform_( - self.prompt_embedding.weight, - a=-self.prompt_tuning_config.random_uniform_scale, - b=self.prompt_tuning_config.random_uniform_scale, - ) - - elif self.prompt_tuning_config.prompt_init == "from_string": - tokenizer = AutoTokenizer.from_pretrained(self.model_config.tokenizer_name_or_path) - prompt_length = self.prompt_tuning_config.prompt_length - prompt_text = self.prompt_tuning_config.prompt_init_text - if prompt_text is None: - raise ValueError("Prompt text must be provided when using prompt_init='from_string'.") - - tokenized_prompt_text: list[int] = tokenizer(prompt_text)["input_ids"] # type: ignore - - # If the prompt text tokens are shorter than the prompt length, we repeat the prompt text tokens until we reach the prompt length - if len(tokenized_prompt_text) < prompt_length: - num_reps = math.ceil(prompt_length / len(tokenized_prompt_text)) - tokenized_prompt_text = tokenized_prompt_text * num_reps - - # Adjust length of prompt text tokens to match prompt_length - tokenized_prompt_text = tokenized_prompt_text[:prompt_length] - - # Initialize prompt embedding with tokenized prompt text - word_embedding_weights = base_model_embeddings(torch.LongTensor(tokenized_prompt_text)).detach().clone() - word_embedding_weights = word_embedding_weights.to(torch.float32) - self.prompt_embedding.weight = nn.Parameter(word_embedding_weights) - - else: - raise ValueError(f"Unknown prompt initialization: {self.prompt_tuning_config.prompt_init}") - - def forward(self, embedded_input): - # Compute prompt embedding - self.prompt_tokens = self.prompt_tokens.to(embedded_input.device) - prompt = self.prompt_embedding(self.prompt_tokens) - - # Prompt to batch size - batch_size = embedded_input.shape[0] - prompt = torch.tile(torch.unsqueeze(prompt, dim=0), [batch_size] + [1 for _ in prompt.shape]) - - # Merge prompt and input - output = self.combination_fn(prompt, embedded_input) - - # Adapt attention mask - prefix_attention_mask_length = self.prompt_tuning_config.prompt_length - - return output, prefix_attention_mask_length - - -class PromptTuningLayer(AdapterLayerBase, nn.Module): - """ - Prompt Tuning implementation. - - Args: - model_config: The model configuration. - adapters_config: The adapter configuration. - base_model_embeddings: - The embedding layer of the base model (used to initialize the prompt embedding if - prompt_init='from_string'). - """ - - adapter_modules_name = "prompt_tunings" - - def __init__( - self, - model_config: PretrainedConfig, - adapters_config: ModelAdaptersConfig, - base_model_embeddings: nn.Module, - ): - super().__init__() - self.model_config = model_config - self.adapters_config = adapters_config - self.base_model_embeddings = base_model_embeddings - self.prompt_tunings = nn.ModuleDict() - - def add_adapter(self, adapter_name: str, layer_idx: int) -> bool: - # ignore layer_idx as prompt tunings are only added after the embedding layer - prompt_tuning_config = self.adapters_config.match( - adapter_name, - config_type=PromptTuningConfig, - ) - - if prompt_tuning_config is not None: - adapter = PromptTuning( - adapter_name=adapter_name, - prompt_tuning_config=prompt_tuning_config, # type: ignore - model_config=self.model_config, - base_model_embeddings=self.base_model_embeddings, - ) - adapter.train(self.training) # make sure training mode is consistent - self.prompt_tunings[adapter_name] = adapter - return True - - return False - - def average_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: - # add new adapter - if self.add_adapter(adapter_name, -1): - # average weights - avg_state_dict = {} - for name, weight in input_adapters.items(): - if name in self.prompt_tunings: - module = self.prompt_tunings[name] - for k, v in module.state_dict().items(): - if k in avg_state_dict: - avg_state_dict[k] += weight * v - else: - avg_state_dict[k] = weight * v - else: - self.delete_adapter(adapter_name) # clean up before raising error - raise ValueError("Adapter {} not found.".format(name)) - # load averaged weights - self.prompt_tunings[adapter_name].load_state_dict(avg_state_dict) - return True - - return False - - def delete_adapter(self, adapter_name: str): - if adapter_name in self.prompt_tunings: - del self.prompt_tunings[adapter_name] - - def add_fusion_layer(self, adapter_names: Union[List, str]): - pass # not applicable to prompt tuning - - def delete_fusion_layer(self, adapter_names: Union[List, str]): - pass # not applicable to prompt tuning - - def enable_adapters(self, adapter_setup: AdapterCompositionBlock, unfreeze_adapters: bool, unfreeze_fusion: bool): - if unfreeze_adapters: - for prompt_tuning_name in adapter_setup.flatten(): - if prompt_tuning_name in self.prompt_tunings: - for param in self.prompt_tunings[prompt_tuning_name].parameters(): - param.requires_grad = True - - def freeze_adapter(self, adapter_name: str, freeze: bool = True): - if adapter_name in self.prompt_tunings: - self.prompt_tunings[adapter_name].train(not freeze) - for param in self.prompt_tunings[adapter_name].parameters(): - param.requires_grad = not freeze - - def get_adapter(self, adapter_name): - if adapter_name in self.prompt_tunings: - return self.prompt_tunings[adapter_name] - else: - return None - - def forward(self, hidden_states: torch.Tensor): - prefix_attention_mask_length = None - adapter_setup = self.get_active_setup() - if adapter_setup is not None and len(adapter_setup) > 0: - first_adapter = adapter_setup.first() - if first_adapter in self.prompt_tunings: - hidden_states, prefix_attention_mask_length = self.prompt_tunings[first_adapter](hidden_states) - - context = ForwardContext.get_context() - if context is not None: - context.prompt_tokens_length = prefix_attention_mask_length - - return hidden_states diff --git a/adapters/src/adapters/model_mixin.py b/adapters/src/adapters/model_mixin.py deleted file mode 100644 index f27a5fa0..00000000 --- a/adapters/src/adapters/model_mixin.py +++ /dev/null @@ -1,1552 +0,0 @@ -import inspect -import logging -import os -import warnings -from abc import ABC, abstractmethod -from collections import defaultdict -from os.path import join -from typing import Any, Dict, Iterable, List, Optional, Tuple, Union - -import torch -from torch import nn - -from transformers.modeling_outputs import ModelOutput - -from .composition import AdapterCompositionBlock, Fuse, Stack, parse_composition -from .configuration import ADAPTER_CONFIG_MAP, AdapterConfig, AdapterFusionConfig, BnConfig -from .context import AdapterSetup, ForwardContext -from .hub_mixin import PushAdapterToHubMixin -from .loading import AdapterFusionLoader, AdapterLoader, PredictionHeadLoader, WeightsLoader -from .methods.adapter_layer_base import AdapterLayerBase -from .methods.bottleneck import BottleneckLayer -from .methods.lora import LoRALayer -from .methods.modeling import Adapter, GLOWCouplingBlock, NICECouplingBlock, init_shared_parameters -from .methods.prefix_tuning import PrefixTuningLayer, PrefixTuningPool -from .methods.prompt_tuning import PromptTuningLayer -from .utils import EMBEDDING_FILE, TOKENIZER_PATH, get_adapter_config_hash, inherit_doc -from .wrappers.configuration import SUBMODEL_NAMES, init_adapters_config - - -logger = logging.getLogger(__name__) - - -class InvertibleAdaptersMixin: - """Mixin for Transformer models adding invertible adapters.""" - - def init_adapters(self, model_config, adapters_config, **kwargs): - self.invertible_adapters = nn.ModuleDict(dict()) - - init_adapters_config(self, model_config, adapters_config) - - if hasattr(super(), "init_adapters"): - super().init_adapters(self.config, self.adapters_config, **kwargs) - - def add_invertible_adapter(self, adapter_name: str) -> bool: - """ - Adds an invertible adapter module for the adapter with the given name. If the given adapter does not specify an - invertible adapter config, this method does nothing. - - Args: - adapter_name (str): The name of the adapter for which to add an invertible adapter module. - """ - if adapter_name in self.invertible_adapters: - raise ValueError(f"Model already contains an adapter module for '{adapter_name}'.") - embedding_size = getattr(self.config, "embedding_size", self.config.hidden_size) - adapter_config = self.adapters_config.match( - adapter_name, - config_type=BnConfig, - location_key="inv_adapter", - ) - if adapter_config and adapter_config["inv_adapter"]: - if adapter_config["inv_adapter"] == "nice": - inv_adap = NICECouplingBlock( - [[embedding_size]], - non_linearity=adapter_config["non_linearity"], - reduction_factor=adapter_config["inv_adapter_reduction_factor"], - ) - elif adapter_config["inv_adapter"] == "glow": - inv_adap = GLOWCouplingBlock( - [[embedding_size]], - non_linearity=adapter_config["non_linearity"], - reduction_factor=adapter_config["inv_adapter_reduction_factor"], - ) - else: - raise ValueError(f"Invalid invertible adapter type '{adapter_config['inv_adapter']}'.") - self.invertible_adapters[adapter_name] = inv_adap - self.invertible_adapters[adapter_name].apply(Adapter.init_bert_weights) - return True - - return False - - def _average_invertible_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: - # add new adapter - if self.add_invertible_adapter(adapter_name): - # average weights - avg_state_dict = {} - for name, weight in input_adapters.items(): - module = self.invertible_adapters[name] - if module is not None: - for k, v in module.state_dict().items(): - if k in avg_state_dict: - avg_state_dict[k] += weight * v - else: - avg_state_dict[k] = weight * v - # load averaged weights - self.invertible_adapters[adapter_name].load_state_dict(avg_state_dict) - return True - - return False - - def delete_invertible_adapter(self, adapter_name: str): - if adapter_name in self.invertible_adapters: - del self.invertible_adapters[adapter_name] - - def get_invertible_adapter(self): - # TODO: Currently no fusion over invertible adapters, takes only very first language adapter position - if self.adapters_config.active_setup is not None and len(self.adapters_config.active_setup) > 0: - first_adapter = self.adapters_config.active_setup.first() - if first_adapter in self.invertible_adapters: - return self.invertible_adapters[first_adapter] - return None - - def enable_invertible_adapters(self, adapter_names): - for adapter_name in adapter_names: - if adapter_name in self.invertible_adapters: - for param in self.invertible_adapters[adapter_name].parameters(): - param.requires_grad = True - - def invertible_adapters_forward(self, hidden_states, rev=False): - # TODO: Currently no fusion over invertible adapters, takes only very first language adapter position - adapter_setup = self._get_active_setup() - if adapter_setup is not None and len(adapter_setup) > 0: - first_adapter = adapter_setup.first() - if first_adapter in self.invertible_adapters: - hidden_states = self.invertible_adapters[first_adapter](hidden_states, rev=rev) - return hidden_states - - def _get_active_setup(self): - if hasattr(self, "adapters_config"): - # First check current context before falling back to defined setup - context = AdapterSetup.get_context() - if context is not None: - adapter_setup = context.adapter_setup - else: - adapter_setup = self.adapters_config.active_setup - else: - adapter_setup = None - if adapter_setup is not None and (len(adapter_setup.flatten()) > 0): - return adapter_setup - else: - return None - - -class InvertibleAdaptersWrapperMixin: - """ - Mixin for Transformer models supporting invertible adapters in a child module. When applying this mixin, set - `invertible_adapters_base_name` to the name of the child module that includes `InvertibleAdaptersMixin`. - """ - - invertible_adapters_base_name = "" - - @property - def invertible_adapters_base(self): - return getattr(self, self.invertible_adapters_base_name, None) - - @property - def invertible_adapters(self): - if self.invertible_adapters_base is not None: - return self.invertible_adapters_base.invertible_adapters - return None - - def add_invertible_adapter(self, adapter_name: str) -> bool: - """ - Adds an invertible adapter module for the adapter with the given name. If the given adapter does not specify an - invertible adapter config, this method does nothing. - - Args: - adapter_name (str): The name of the adapter for which to add an invertible adapter module. - """ - if self.invertible_adapters_base is not None: - return self.invertible_adapters_base.add_invertible_adapter(adapter_name) - return False - - def _average_invertible_adapter(self, adapter_name: str, input_adapters: Dict[str, float]) -> bool: - if self.invertible_adapters_base is not None: - return self.invertible_adapters_base._average_invertible_adapter(adapter_name, input_adapters) - return False - - def delete_invertible_adapter(self, adapter_name: str): - if self.invertible_adapters_base is not None: - self.invertible_adapters_base.delete_invertible_adapter(adapter_name) - - def get_invertible_adapter(self): - if self.invertible_adapters_base is not None: - return self.invertible_adapters_base.get_invertible_adapter() - return None - - def enable_invertible_adapters(self, adapter_names): - if self.invertible_adapters_base is not None: - self.invertible_adapters_base.enable_invertible_adapters(adapter_names) - - def invertible_adapters_forward(self, hidden_states, rev=False): - if self.invertible_adapters_base is not None: - return self.invertible_adapters_base.invertible_adapters_forward(hidden_states, rev=rev) - return hidden_states - - -class EmbeddingAdaptersMixin: - """Mixin for Transformer models adding support for dynamically switching embeddings.""" - - def init_adapters(self, model_config, adapters_config, **kwargs): - self.loaded_embeddings = {} - self._active_embedding = "default" - - init_adapters_config(self, model_config, adapters_config) - - super().init_adapters(self.config, self.adapters_config, **kwargs) - - def load_embeddings(self, path: str, name: str): - """ - Load a saved embedding from the given path. If the embedding was saved with a tokenizer it is returned - - Args: - path: the path to the saved embedding - name: the name the embedding should be loaded as - - Returns: a tokenizer if it ws saved with the embedding otherwise None - - """ - from transformers.models.auto.tokenization_auto import AutoTokenizer - - if name in self.loaded_embeddings: - raise ValueError("An embedding with the name {} already exists".format(name)) - tokenizer = None - tokenizer_path = os.path.join(path, TOKENIZER_PATH) - if os.path.isdir(tokenizer_path): - tokenizer = AutoTokenizer.from_pretrained(tokenizer_path) - - embedding_path = os.path.join(path, EMBEDDING_FILE) - if not os.path.isfile(embedding_path): - raise FileNotFoundError("No embeddings found at {}".format(embedding_path)) - weights = torch.load(embedding_path) - - self.loaded_embeddings[name] = nn.Embedding.from_pretrained(weights) - self.set_active_embeddings(name) - return tokenizer - - def add_embeddings(self, name, tokenizer, reference_embedding=None, reference_tokenizer=None, embedding_dim=None): - """ - Add a new embedding to the model. If a reference embedding and reference tokenizer are provided tokens in the - present in both tokenizers are initialized to the embedding in the reference_embedding. - - Args: - name: the name of the embedding - tokenizer: the tokenizer determining the vocab of the embedding - reference_embedding: - the reference embedding to use for initializing the embeddings of tokens present in the newly created - embedding - reference_tokenizer: the tokenizer providing the vocab for the reference embedding - embedding_dim: - the dimension of the embeddings (if None the embedding_size, or if this doesn't exist the hidden_size, - from the config is used) - """ - if name in self.loaded_embeddings: - raise ValueError("An embedding with the name {} already exists".format(name)) - if embedding_dim is not None: - embedding_size = embedding_dim - else: - embedding_size = getattr(self.config, "embedding_size", self.config.hidden_size) - embedding = nn.Embedding(len(tokenizer), embedding_size) - # Use same initialization as base Transformer model - embedding.weight.data.normal_(mean=0.0, std=0.02) - if embedding.padding_idx is not None: - embedding.weight.data[embedding.padding_idx].zero_() - embedding.requires_grad_(False) - if (reference_embedding is not None and reference_tokenizer is None) or ( - reference_tokenizer is not None and reference_embedding is None - ): - raise KeyError( - "Reference embedding and reference tokenizer are required to use initialize embeddings from reference" - " embedding" - ) - if reference_embedding is not None and reference_tokenizer is not None: - tokens = set(tokenizer.get_vocab().keys()) & set(reference_tokenizer.get_vocab().keys()) - reference_vocab = reference_tokenizer.get_vocab() - vocab = tokenizer.get_vocab() - for t in tokens: - idx_reference = reference_vocab[t] - idx = vocab[t] - embedding.weight[idx] = ( - self.loaded_embeddings[reference_embedding].weight[idx_reference].detach().clone() - ) - embedding.train(False) - self.loaded_embeddings[name] = embedding - self.set_active_embeddings(name) - - def delete_embeddings(self, name): - """ - Deletes the embedding with the given name - - Args: - name: The name of the embedding that should be deleted - - """ - if name not in self.loaded_embeddings: - raise ValueError("No embedding with name {}".format(name)) - if self.active_embeddings == name: - logger.warning("The active embedding is deleted. Setting the default embedding as active.") - self.set_active_embeddings("default") - del self.loaded_embeddings[name] - - def save_embeddings(self, path, name, tokenizer=None): - """ - Saves the embedding with the given name. If a tokenizer is passed as well the tokenizer is saved together with - the embedding. - - Args: - path: The path where the embedding should be saved - name: The name of the embedding that should be saved - tokenizer: optionally a tokenizer to save with the embedding (default is None) - - """ - if self.active_embeddings == name: - self.loaded_embeddings[name] = self.get_input_embeddings() - os.makedirs(path, exist_ok=True) - embedding_path = os.path.join(path, EMBEDDING_FILE) - torch.save(self.loaded_embeddings[name].weight, embedding_path) - if tokenizer: - tokenizer_path = os.path.join(path, TOKENIZER_PATH) - tokenizer.save_pretrained(tokenizer_path) - - def set_active_embeddings(self, name): - """ - Sets the active embedding for the forward pass of the model - - Args: - name: The name of the embedding that should be used - - """ - self.loaded_embeddings[self.active_embeddings] = self.get_input_embeddings() - self.set_input_embeddings(self.loaded_embeddings[name]) - self.config.vocab_size = self.loaded_embeddings[name].num_embeddings - self._active_embedding = name - - @property - def active_embeddings(self): - return self._active_embedding - - -class EmbeddingAdaptersWrapperMixin: - def load_embeddings(self, path: str, name: str): - return self.base_model.load_embeddings(path, name) - - def add_embeddings(self, name, tokenizer, reference_embedding=None, reference_tokenizer=None): - return self.base_model.add_embeddings(name, tokenizer, reference_embedding, reference_tokenizer) - - def delete_embeddings(self, name): - return self.base_model.delete_embeddings(name) - - def save_embeddings(self, path, name, tokenizer=None): - return self.base_model.save_embeddings(path, name, tokenizer) - - def set_active_embeddings(self, name): - return self.base_model.set_active_embeddings(name) - - @property - def active_embeddings(self): - return self.base_model.active_embeddings - - @property - def loaded_embeddings(self): - return self.base_model.loaded_embeddings - - -class ModelAdaptersMixin(PushAdapterToHubMixin, ABC): - """Mixin for transformer models adding support for loading/ saving adapters.""" - - add_base_adapters = False - support_prompt_tuning = True # If False, the prompt tuning layer is not added to the model. If True, the prompt tuning layer is added if add_base_adapters is True. - _tied_weights_keys = ["prompt_tuning.base_model_embeddings.*"] - - def __init__(self, config, *args, **kwargs): - super().__init__(config, *args, **kwargs) - - def _link_prefix_to_pool(self, layer): - if isinstance(layer, PrefixTuningLayer): - layer.set_pool(self.base_model.prefix_tuning) - - @property - def model_name(self): - return self.config.name_or_path - - def _init_adapters_submodules(self, model_config, adapters_config): - # Initialize adapters in all submodules - for module in self.modules(): - # skip calling module - if module == self: - continue - if hasattr(module, "init_adapters"): - module.init_adapters(model_config, adapters_config) - - def init_adapters(self, model_config, adapters_config, add_prefix_tuning_pool=True): - """ - This method initializes adapter modules and fusion modules from the model config. - """ - self.base_model.shared_parameters = nn.ModuleDict() - - # Initialize adapters config - init_adapters_config(self, model_config, adapters_config) - # Initialize adapters in all submodules - self._init_adapters_submodules(self.config, self.adapters_config) - - # Link all prefix tunings - if add_prefix_tuning_pool: - self.base_model.prefix_tuning = PrefixTuningPool(self.config, self.adapters_config) - self.apply_to_adapter_layers(lambda i, layer: self._link_prefix_to_pool(layer)) - - # Add Prompt Tuning - if self.add_base_adapters: - if self.support_prompt_tuning: - self.prompt_tuning = PromptTuningLayer(model_config, self.adapters_config, self.get_input_embeddings()) - - # Initialize adapters from config - for adapter_name in self.adapters_config: - self._add_adapter_weights(adapter_name) - # Initialize fusion from config - for fusion_name in self.adapters_config.fusions: - self.apply_to_adapter_layers(lambda i, layer: layer.add_fusion_layer(fusion_name)) - - if isinstance(self, EmbeddingAdaptersMixin): - self.loaded_embeddings["default"] = self.get_input_embeddings() - - # These methods have to be implemented by every deriving class: - - @abstractmethod - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - """ - Iterates over all layers of the model. - - This abstract method has to ne implemented by every implementing model. - """ - pass - - def apply_to_adapter_layers(self, fn): - """ - Applies a function to all adapter layers of the model. - """ - for i, layer in self.iter_layers(): - for module in layer.modules(): - if isinstance(module, AdapterLayerBase): - fn(i, module) - - def apply_to_basemodel_childs(self, fn): - """ - Applies a function to all direct childs of the model if they are a instance of AdapterLayerBase. - """ - if self.add_base_adapters: - for module in self.base_model.children(): - if isinstance(module, AdapterLayerBase): - # These childs don't have a layer index so we pass -1 - fn(-1, module) - - def train_adapter(self, adapter_setup: Union[list, AdapterCompositionBlock], train_embeddings=False): - """Sets the model into mode for training the given adapters.""" - self.train() - self.freeze_model(True) - adapter_setup = parse_composition(adapter_setup) - self.apply_to_adapter_layers(lambda i, layer: layer.enable_adapters(adapter_setup, True, False)) - self.apply_to_basemodel_childs(lambda i, child: child.enable_adapters(adapter_setup, True, False)) - for adapter_name in adapter_setup: - if adapter_name in self.base_model.shared_parameters: - for param in self.base_model.shared_parameters[adapter_name].values(): - param.requires_grad = True - - if isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin): - self.enable_invertible_adapters(adapter_setup.flatten()) - # use the adapters to be trained by default in every forward pass - self.set_active_adapters(adapter_setup) - if train_embeddings: - self.get_input_embeddings().train() - - def train_fusion(self, adapter_setup: Union[list, AdapterCompositionBlock], unfreeze_adapters=False): - """Sets the model into mode for training of adapter fusion determined by a list of adapter names.""" - warnings.warn( - "add_fusion() has been deprecated in favor of add_adapter_fusion(). Please use the newer method instead.", - FutureWarning, - ) - self.train_adapter_fusion(adapter_setup, unfreeze_adapters=unfreeze_adapters) - - def train_adapter_fusion(self, adapter_setup: Union[list, AdapterCompositionBlock], unfreeze_adapters=False): - """Sets the model into mode for training of adapter fusion determined by a list of adapter names.""" - self.train() - self.freeze_model(True) - adapter_setup = parse_composition(adapter_setup) - self.apply_to_adapter_layers(lambda i, layer: layer.enable_adapters(adapter_setup, unfreeze_adapters, True)) - self.apply_to_basemodel_childs(lambda i, child: child.enable_adapters(adapter_setup, unfreeze_adapters, True)) - # use the adapters to be trained by default in every forward pass - self.set_active_adapters(adapter_setup) - # TODO implement fusion for invertible adapters - - def has_adapters(self): - return len(self.adapters_config.adapters) > 0 - - @property - def has_parallel_adapters(self) -> bool: - if self.adapters_config.active_setup: - return self.adapters_config.active_setup.parallel_channels > 1 - else: - return False - - @property - def active_adapters(self) -> AdapterCompositionBlock: - return self.adapters_config.active_setup - - @active_adapters.setter - def active_adapters(self, adapter_setup: Union[list, AdapterCompositionBlock]): - self.set_active_adapters(adapter_setup) - - def set_shared_parameters(self, param): - self.base_model.shared_parameters = param - - def set_active_adapters( - self, adapter_setup: Union[list, AdapterCompositionBlock], skip_layers: Optional[List[int]] = None - ): - """ - Sets the adapter modules to be used by default in every forward pass. If no adapter with the given name is - found, no module of the respective type will be activated. - - Args: - adapter_setup (list): - The list of adapters to be activated by default. Can be a fusion or stacking configuration. - """ - adapter_setup = parse_composition(adapter_setup, model_type=self.config.model_type) - if adapter_setup: - for adapter_name in adapter_setup.flatten(): - if adapter_name not in self.adapters_config.adapters: - raise ValueError( - f"No adapter with name '{adapter_name}' found. Please make sure that all specified adapters" - " are correctly loaded." - ) - - # Make sure LoRA is reset - self.reset_adapter() - self.adapters_config.active_setup = adapter_setup - self.adapters_config.skip_layers = skip_layers - - def add_adapter(self, adapter_name: str, config=None, overwrite_ok: bool = False, set_active: bool = False): - """ - Adds a new adapter module of the specified type to the model. - - Args: - adapter_name (str): The name of the adapter module to be added. - config (str or dict or AdapterConfig, optional): The adapter configuration, can be either: - - - the string identifier of a pre-defined configuration dictionary - - a configuration dictionary specifying the full config - - if not given, the default configuration for this adapter type will be used - overwrite_ok (bool, optional): - Overwrite an adapter with the same name if it exists. By default (False), an - exception is thrown. set_active (bool, optional): - Set the adapter to be the active one. By default (False), - the adapter is added but not activated. - """ - config = AdapterConfig.load(config) # ensure config is ok and up-to-date - # In case adapter already exists and we allow overwriting, explicitly delete the existing one first - if overwrite_ok and adapter_name in self.adapters_config: - self.delete_adapter(adapter_name) - self.adapters_config.add(adapter_name, config=config) - try: - self._add_adapter_weights(adapter_name) - except ValueError as ex: - self.delete_adapter(adapter_name) - raise ex - if set_active: - self.set_active_adapters(adapter_name) - - def _add_adapter_weights(self, adapter_name: str): - """Helper method that performs the actual parameter additions when adding a new adapter.""" - self.apply_to_adapter_layers(lambda i, layer: layer.add_adapter(adapter_name, i)) - self.apply_to_basemodel_childs(lambda i, child: child.add_adapter(adapter_name, i)) - - # PHM Layer - if self.adapters_config.match(adapter_name, BnConfig, location_key="phm_layer"): - adapter_config = self.adapters_config.match(adapter_name, BnConfig, location_key="phm_layer") - if adapter_config["shared_phm_rule"] or adapter_config["shared_W_phm"]: - if self.config.model_type in SUBMODEL_NAMES: - hidden_sizes = [ - getattr(self.config, key).hidden_size for key in SUBMODEL_NAMES[self.config.model_type] - ] - if all(hidden_sizes[0] == h for h in hidden_sizes): - self.base_model.shared_parameters[adapter_name] = init_shared_parameters( - adapter_config, hidden_sizes[0], self.device - ) - else: - raise ValueError( - "The model has different hidden sizes {}. Sharing comapcter weights is only possible if" - " the hidden_sizes match.".format(hidden_sizes) - ) - else: - self.base_model.shared_parameters[adapter_name] = init_shared_parameters( - adapter_config, self.config.hidden_size, self.device - ) - # Prefix Tuning - for module in self.modules(): - if isinstance(module, PrefixTuningPool): - module.confirm_prefix(adapter_name) - if isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin): - self.add_invertible_adapter(adapter_name) - - def add_fusion(self, adapter_names: Union[Fuse, list], adapter_fusion_config=None, override_kwargs=None): - warnings.warn( - "add_fusion() has been deprecated in favor of add_adapter_fusion(). Please use the newer method instead.", - FutureWarning, - ) - adapter_fusion_config = AdapterFusionConfig.from_dict(adapter_fusion_config).replace(**override_kwargs) - self.add_adapter_fusion(adapter_names, adapter_fusion_config) - - def add_adapter_fusion( - self, - adapter_names: Union[Fuse, list, str], - config=None, - overwrite_ok: bool = False, - set_active: bool = False, - ): - """ - Adds AdapterFusion to the model with alll the necessary configurations and weight initializations - - Args: - adapter_names (Fuse or list or str): AdapterFusion layer to add. Can be either: - - - a ``Fuse`` composition block - - a list of adapter names to fuse - - a comma-separated string of adapter names to fuse - config (str or dict): adapter fusion configuration, can be either: - - - a string identifying a pre-defined adapter fusion configuration - - a dictionary representing the adapter fusion configuration - - the path to a file containing the adapter fusion configuration - overwrite_ok (bool, optional): - Overwrite an AdapterFusion layer with the same name if it exists. By default (False), an exception is - thrown. - set_active (bool, optional): - Activate the added AdapterFusion. By default (False), the AdapterFusion is added but not activated. - """ - if isinstance(adapter_names, Fuse): - adapter_names = adapter_names.children - elif isinstance(adapter_names, str): - adapter_names = adapter_names.split(",") - - if isinstance(config, dict): - config = AdapterFusionConfig.from_dict(config) # ensure config is ok and up-to-date - # In case adapter already exists and we allow overwriting, explicitly delete the existing one first - if overwrite_ok and self.adapters_config.get_fusion(adapter_names) is not None: - self.delete_adapter_fusion(adapter_names) - self.adapters_config.add_fusion(adapter_names, config=config) - self.apply_to_adapter_layers(lambda i, layer: layer.add_fusion_layer(adapter_names)) - self.apply_to_basemodel_childs(lambda i, child: child.add_fusion_layer(adapter_names)) - if set_active: - if not isinstance(adapter_names, list): - adapter_names = adapter_names.split(",") - self.set_active_adapters(Fuse(*adapter_names)) - - def delete_adapter(self, adapter_name: str): - """ - Deletes the adapter with the specified name from the model. - - Args: - adapter_name (str): The name of the adapter. - """ - if adapter_name not in self.adapters_config: - logger.info("No adapter '%s' found for deletion. Skipping.", adapter_name) - return - del self.adapters_config.adapters[adapter_name] - self.apply_to_adapter_layers(lambda i, layer: layer.delete_adapter(adapter_name)) - self.apply_to_basemodel_childs(lambda i, child: child.delete_adapter(adapter_name)) - # PHM Layer - if adapter_name in self.base_model.shared_parameters: - del self.base_model.shared_parameters[adapter_name] - if isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin): - self.delete_invertible_adapter(adapter_name) - - # Reset active adapters if this was the only active adapter - if self.active_adapters == Stack(adapter_name): - self.active_adapters = None - - def delete_adapter_fusion(self, adapter_names: Union[Fuse, list, str]): - """ - Deletes the AdapterFusion layer of the specified adapters. - - Args: - adapter_names (Union[Fuse, list, str]): AdapterFusion layer to delete. - """ - if isinstance(adapter_names, Fuse): - adapter_fusion_name = ",".join(adapter_names.children) - elif isinstance(adapter_names, list): - adapter_fusion_name = ",".join(adapter_names) - elif isinstance(adapter_names, str): - adapter_fusion_name = adapter_names - else: - raise ValueError("Invalid AdapterFusion definition: {}".format(adapter_names)) - - if adapter_fusion_name not in self.adapters_config.fusions: - logger.info("No AdapterFusion '%s' found for deletion. Skipping.", adapter_fusion_name) - return - del self.adapters_config.fusions[adapter_fusion_name] - self.apply_to_adapter_layers(lambda i, layer: layer.delete_fusion_layer(adapter_fusion_name)) - self.apply_to_basemodel_childs(lambda i, child: child.delete_fusion_layer(adapter_fusion_name)) - # Reset active adapters if this was the active setup - if self.active_adapters == adapter_names: - self.active_adapters = None - - def save_adapter( - self, - save_directory: str, - adapter_name: str, - meta_dict: dict = None, - custom_weights_loaders: Optional[List[WeightsLoader]] = None, - ): - """ - Saves an adapter and its configuration file to a directory so that it can be shared or reloaded using - `load_adapter()`. - - Args: - save_directory (str): Path to a directory where the adapter should be saved. - adapter_name (str): Name of the adapter to be saved. - - Raises: - ValueError: If the given adapter name is invalid. - """ - loader = AdapterLoader(self) - loader.save(save_directory, adapter_name, meta_dict) - # save additional custom weights - if custom_weights_loaders: - for weights_loader in custom_weights_loaders: - weights_loader.save(save_directory, adapter_name) - - def save_adapter_fusion( - self, - save_directory: str, - adapter_names: Union[Fuse, list, str], - meta_dict: dict = None, - custom_weights_loaders: Optional[List[WeightsLoader]] = None, - ): - """ - Saves an AdapterFusion layer and its configuration file to a directory so that it can be shared or reloaded - using `load_adapter_fusion()`. - - Args: - save_directory (str): Path to a directory where the AdapterFusion should be saved. - adapter_names (Union[Fuse, list, str]): AdapterFusion to be saved. - - Raises: - ValueError: If the given AdapterFusion name is invalid. - """ - if isinstance(adapter_names, Fuse): - adapter_fusion_name = ",".join(adapter_names.children) - elif isinstance(adapter_names, list): - adapter_fusion_name = ",".join(adapter_names) - elif isinstance(adapter_names, str): - adapter_fusion_name = adapter_names - else: - raise ValueError("Invalid AdapterFusion definition: {}".format(adapter_names)) - - loader = AdapterFusionLoader(self) - loader.save(save_directory, adapter_fusion_name, meta_dict) - # save additional custom weights - if custom_weights_loaders: - for weights_loader in custom_weights_loaders: - weights_loader.save(save_directory, adapter_fusion_name) - - def load_adapter( - self, - adapter_name_or_path: str, - config: Union[dict, str] = None, - version: str = None, - model_name: str = None, - load_as: str = None, - source: str = None, - custom_weights_loaders: Optional[List[WeightsLoader]] = None, - leave_out: Optional[List[int]] = None, - id2label=None, - set_active: bool = False, - **kwargs - ) -> str: - """ - Loads a pre-trained pytorch adapter module from the local file system or a remote location. - - Args: - adapter_name_or_path (str): can be either: - - - the identifier of a pre-trained task adapter to be loaded from Adapter Hub - - a path to a directory containing adapter weights saved using `model.saved_adapter()` - - a URL pointing to a zip folder containing a saved adapter module - config (dict or str, optional): The requested configuration of the adapter. - If not specified, will be either: - the default adapter config for the requested adapter if specified - - the global default adapter config - version (str, optional): The version of the adapter to be loaded. - model_name (str, optional): The string identifier of the pre-trained model. - load_as (str, optional): Load the adapter using this name. By default, the name with which the adapter was - saved will be used. - source (str, optional): Identifier of the source(s) from where to load the adapter. Can be: - - - "ah" (default): search on AdapterHub. - - "hf": search on HuggingFace model hub. - - None: search on all sources - leave_out: Dynamically drop adapter modules in the specified Transformer layers when loading the adapter. - set_active (bool, optional): - Set the loaded adapter to be the active one. By default (False), the adapter is loaded but not - activated. - - Returns: - str: The name with which the adapter was added to the model. - """ - loader = AdapterLoader(self) - load_dir, load_name = loader.load( - adapter_name_or_path, - config, - version, - model_name, - load_as, - source=source, - leave_out=leave_out, - set_active=set_active, - **kwargs, - ) - # load additional custom weights - if custom_weights_loaders: - for weights_loader in custom_weights_loaders: - weights_loader.load( - load_dir, - load_as=load_as, - loading_info=kwargs.get("loading_info", None), - main_load_name=load_name, - id2label=id2label, - set_active=set_active, - ) - return load_name - - def load_adapter_fusion( - self, - adapter_fusion_name_or_path: str, - load_as: str = None, - custom_weights_loaders: Optional[List[WeightsLoader]] = None, - set_active: bool = False, - **kwargs - ) -> str: - """ - Loads a pre-trained AdapterFusion layer from the local file system. - - Args: - adapter_fusion_name_or_path (str): - a path to a directory containing AdapterFusion weights saved using `model.save_adapter_fusion()`. - load_as (str, optional): Load the AdapterFusion using this name. - By default, the name with which the AdapterFusion layer was saved will be used. - set_active (bool, optional): - Activate the loaded AdapterFusion. By default (False), the AdapterFusion is loaded but not activated. - - Returns: - str: The name with which the AdapterFusion was added to the model. - """ - - loader = AdapterFusionLoader(self) - load_dir, load_name = loader.load(adapter_fusion_name_or_path, load_as, set_active=set_active) - # load additional custom weights - if custom_weights_loaders: - for weights_loader in custom_weights_loaders: - weights_loader.load( - load_dir, - load_as=load_as, - loading_info=kwargs.get("loading_info", None), - main_load_name=load_name, - set_active=set_active, - ) - return load_name - - def save_all_adapters( - self, - save_directory: str, - meta_dict: dict = None, - custom_weights_loaders: Optional[List[WeightsLoader]] = None, - ): - """ - Saves all adapters of this model together with their configuration to subfolders of the given location. - - Args: - save_directory (str): Path to a directory where the adapters should be saved. - """ - os.makedirs(save_directory, exist_ok=True) - for name in self.adapters_config: - adapter_config = self.adapters_config.get(name) - h = get_adapter_config_hash(adapter_config) - save_path = join(save_directory, name) - if meta_dict: - meta_dict.update({"config_id": h}) - else: - meta_dict = {"config_id": h} - self.save_adapter(save_path, name, meta_dict=meta_dict, custom_weights_loaders=custom_weights_loaders) - - def save_all_adapter_fusions( - self, - save_directory: str, - meta_dict: dict = None, - custom_weights_loaders: Optional[List[WeightsLoader]] = None, - ): - """ - Saves all AdapterFusion layers of this model together with their configuration to subfolders of the given - location. - - Args: - save_directory (str): Path to a directory where the AdapterFusion layers should be saved. - """ - os.makedirs(save_directory, exist_ok=True) - for name in self.adapters_config.fusions: - adapter_fusion_config = self.adapters_config.get_fusion(name) - h = get_adapter_config_hash(adapter_fusion_config) - save_path = join(save_directory, name) - if meta_dict: - meta_dict.update({"config_id": h}) - else: - meta_dict = {"config_id": h} - self.save_adapter_fusion( - save_path, name, meta_dict=meta_dict, custom_weights_loaders=custom_weights_loaders - ) - - def freeze_model(self, freeze=True): - """Freezes all weights of the model.""" - # first freeze/ unfreeze all model weights - for param in self.base_model.parameters(): - param.requires_grad = not freeze - self.model_frozen = freeze - - def forward_context(self, context: ForwardContext, *args, **kwargs): - """ - This method is called by the ``ForwardContext`` at the beginning of the forward pass. - """ - # some warnings if we don't use available adapters - active_adapters = getattr(self, "active_adapters", None) or AdapterSetup.get_context_adapter_setup() - if not active_adapters: - if self.has_adapters(): - logger.warning("There are adapters available but none are activated for the forward pass.") - return - - context.adapters_parallelized = False - # Check if already parallelized in encoder - adapter_input_parallelized = kwargs.pop("adapter_input_parallelized", None) - if adapter_input_parallelized: - if active_adapters.parallel_channels > 1: - context.adapters_parallelized = True - # Add the shared parameters for the active adapters to the context - context.shared_parameters = { - name: param - for name, param in self.base_model.shared_parameters.items() - if name in active_adapters.flatten() - } - - if hasattr(self.base_model, "prefix_tuning"): - context.prefix_states = self.base_model.prefix_tuning(*args, **kwargs) - - # Adapter gating and attention outputs - context.output_adapter_gating_scores = kwargs.get("output_adapter_gating_scores", False) - context.output_adapter_fusion_attentions = kwargs.get("output_adapter_fusion_attentions", False) - context.adapter_gating_scores = defaultdict(dict) - context.adapter_fusion_attentions = defaultdict(dict) - - def get_fusion_regularization_loss(self): - reg_loss = None - - target = torch.zeros((self.config.hidden_size, self.config.hidden_size)).fill_diagonal_(1.0).to(self.device) - for i, layer in self.iter_layers(): - for module in layer.modules(): - if isinstance(module, BottleneckLayer): - for _, layer_fusion in module.adapter_fusion_layer.items(): - if hasattr(layer_fusion, "value") and layer_fusion.value.weight.requires_grad: - layer_reg_loss = 0.01 * (target - layer_fusion.value.weight).pow(2).sum() - if reg_loss is None: - reg_loss = layer_reg_loss - else: - reg_loss += layer_reg_loss - - return reg_loss - - def get_adapter(self, name) -> dict: - """ - Returns a dictionary with all weights of the adapter with the specified name. - - Args: - name (str): The adapter name. - - Returns: - dict: A nested dictionary containing the weights of the adapter. The dictionary is structured as follow: - {: {: }}. = -1 indicates global/ shared weights. - """ - destination = defaultdict(dict) - - # global weights are saved at index -1 - if name in self.base_model.shared_parameters: - destination[-1]["shared"] = self.base_model.shared_parameters[name] - if ( - isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin) - ) and name in self.invertible_adapters: - destination[-1]["invertible"] = self.invertible_adapters[name] - - if self.support_prompt_tuning: - prompt_tuning = self.prompt_tuning.get_adapter(name) - if prompt_tuning is not None: - destination[-1]["prompt"] = prompt_tuning - - # use a custom index to ensure numbering is from 0 to N layers - for i, (_, layer) in enumerate(self.iter_layers()): - for module in layer.modules(): - if isinstance(module, AdapterLayerBase): - adapter_module = module.get_adapter(name) - if adapter_module is not None: - # location_key might already be added before -> concat to ModuleList - if module.location_key in destination[i]: - old_module = destination[i][module.location_key] - if isinstance(old_module, nn.ModuleList): - old_module.append(adapter_module) - else: - destination[i][module.location_key] = nn.ModuleList([old_module, adapter_module]) - else: - destination[i][module.location_key] = adapter_module - - return dict(destination) - - def adapter_summary(self, as_dict=False) -> Union[str, dict]: - """ - Returns a string summary of all adapters currently added to the model. Each entry in the summary table has the - following attributes: - - - name: the name of the adapter - - architecture: the architectural base of the adapter - - #param: the number of parameters of the adapter - - %param: the number of parameters of the adapter relative to the full model - - active: whether the adapter is active - - train: whether the adapter weights are enabled for training - """ - # table header - header = ["name", "architecture", "#param", "%param", "active", "train"] - # rows containing adapter info - rows = [] - # fill in data for adapters - for name, config_name in self.adapters_config.adapters.items(): - if config_name in self.adapters_config.config_map: - config = self.adapters_config.config_map.get(config_name, None) - else: - config = ADAPTER_CONFIG_MAP.get(config_name, None) - if isinstance(config, str): - config = ADAPTER_CONFIG_MAP[config] - row = {"name": name, "architecture": config.get("architecture", None) or "bottleneck"} - weights = self.get_adapter(name) - row["active"] = self.active_adapters is not None and name in self.active_adapters.flatten() - # count parameters - no_params = 0 - train = True - for _, module_dict in weights.items(): - for _, module in module_dict.items(): - no_params += sum(p.numel() for p in module.parameters()) - train &= all(p.requires_grad for p in module.parameters()) - row["#param"] = no_params - row["train"] = train - rows.append(row) - # count no. of parameters in base network - model_no_params = sum(p.numel() for p in self.base_model.parameters()) - model_no_params -= sum([r["#param"] for r in rows]) - # add %param info - for row in rows: - row["%param"] = row["#param"] / model_no_params * 100 - # add full model info - rows.append( - { - "name": "Full model", - "#param": model_no_params, - "%param": 100.0, - "train": not getattr(self.base_model, "model_frozen", False), - } - ) - - if as_dict: - return rows - else: - # print - total_length = 80 - header_format = "{:<25}{:<15}{:>12}{:>12}{:>8}{:>8}" - row_format = "{:<25}{:<15}{:>12,}{:>12.3f}{:>8}{:>8}" - s = ["=" * total_length] - s.append(header_format.format(*map(lambda x: x.title(), header))) - s.append("-" * total_length) - for row in rows: - s.append(row_format.format(*[row.get(h, "") for h in header])) - s.insert(len(s) - 1, "-" * total_length) - s.append("=" * total_length) - return "\n".join(s) - - def _average_shared_parameters(self, adapter_name: str, input_adapters: Dict[str, float]): - avg_state_dict = {} - for name, weight in input_adapters.items(): - if name in self.base_model.shared_parameters: - param_dict = self.base_model.shared_parameters[name] - for key, value in param_dict.items(): - if key in avg_state_dict: - avg_state_dict[key] += weight * value - else: - avg_state_dict[key] = weight * value - else: - raise ValueError(f"Adapter {name} not found in shared parameters.") - self.base_model.shared_parameters[adapter_name] = nn.ParameterDict(avg_state_dict) - - def average_adapter( - self, - adapter_name: str, - adapter_list: List[str], - weights: Optional[List[float]] = None, - normalize_weights: bool = True, - overwrite_ok: bool = False, - set_active: bool = False, - ): - """ - Adds a new adapter module as weighted average of a set of existing adapter modules. - - Args: - adapter_name (str): The name of the adapter module to be added. - input_adapters (List[str] or Dict[str, float]): - Specifies the existing adapters whose weights should be averaged. Can either be a list of adapter names - or a dictionary mapping adapter names to weights. - overwrite_ok (bool, optional): - Overwrite an adapter with the same name if it exists. By default (False), an exception is thrown. - set_active (bool, optional): - Set the adapter to be the active one. By default (False), the adapter is added but not activated. - """ - # To be able to average the weights, all adapter configs must be the same - config = None - for name in adapter_list: - if config is None: - config = self.adapters_config.get(name) - elif get_adapter_config_hash(config) != get_adapter_config_hash(self.adapters_config.get(name)): - raise ValueError( - "Cannot average adapters with different configurations. " - "Please make sure all adapters have the same configuration." - ) - # In case adapter already exists and we allow overwriting, explicitly delete the existing one first - if overwrite_ok and adapter_name in self.adapters_config: - self.delete_adapter(adapter_name) - self.adapters_config.add(adapter_name, config=config) - if weights is None: - eq_weight = 1.0 / len(adapter_list) - input_adapters = {name: eq_weight for name in adapter_list} - else: - # normalize weights - if normalize_weights: - sum_weights = sum(weights) - else: - sum_weights = 1.0 - input_adapters = {name: weight / sum_weights for name, weight in zip(adapter_list, weights)} - try: - self.apply_to_adapter_layers(lambda i, layer: layer.average_adapter(adapter_name, input_adapters)) - self.apply_to_basemodel_childs(lambda i, child: child.average_adapter(adapter_name, input_adapters)) - # PHM Layer - if self.adapters_config.match(adapter_name, BnConfig, location_key="phm_layer"): - self._average_shared_parameters(adapter_name, input_adapters) - # Prefix Tuning - for module in self.modules(): - if isinstance(module, PrefixTuningPool): - module.average_prefix(adapter_name, input_adapters) - if isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin): - self._average_invertible_adapter(adapter_name, input_adapters) - except ValueError as ex: - self.delete_adapter(adapter_name) - raise ex - if set_active: - self.set_active_adapters(adapter_name) - - def eject_prefix_tuning(self, name: str): - """ - Converts the prefix tuning with the given name from the reparameterized form into the flat form. - - Args: - name (str): The name of the prefix tuning. - """ - for module in self.modules(): - if isinstance(module, PrefixTuningPool): - if name in module.prefix_tunings: - module.prefix_tunings[name].eject() - - def merge_adapter(self, name: str): - """ - Merges the weights of the given LoRA module with the Transformer weights as described in the paper. - - Args: - name (str): LoRA module to merge. - """ - for module in self.modules(): - if isinstance(module, LoRALayer): - if name in module.loras: - module.merge_adapter(name) - - def reset_adapter(self): - """ - Resets weights of a LoRA module merged using `model.merge_adapter(name)`. - """ - for module in self.modules(): - if isinstance(module, LoRALayer): - module.reset_adapter() - - # HACK Copied from transformers/generation/utils.py - def _prepare_encoder_decoder_kwargs_for_generation( - self, inputs_tensor: torch.Tensor, model_kwargs, model_input_name: Optional[str] = None - ) -> Dict[str, Any]: - # 1. get encoder - encoder = self.get_encoder() - - # 2. prepare encoder args and encoder kwargs from model kwargs - irrelevant_prefix = ["decoder_", "cross_attn", "use_cache"] - encoder_kwargs = { - argument: value - for argument, value in model_kwargs.items() - if not any(argument.startswith(p) for p in irrelevant_prefix) - } - - encoder_signature = set(inspect.signature(encoder.forward).parameters) - encoder_accepts_wildcard = "kwargs" in encoder_signature or "model_kwargs" in encoder_signature - if not encoder_accepts_wildcard: - encoder_kwargs = { - argument: value - for argument, value in encoder_kwargs.items() - if argument in encoder_signature or argument == "adapter_input_parallelized" - } - - # 3. make sure that encoder returns `ModelOutput` - model_input_name = model_input_name if model_input_name is not None else self.main_input_name - encoder_kwargs["return_dict"] = True - encoder_kwargs[model_input_name] = inputs_tensor - with ForwardContext(self, **encoder_kwargs): - encoder_kwargs.pop("adapter_input_parallelized", None) # This should not be passed to actual model - model_kwargs["encoder_outputs"]: ModelOutput = encoder(**encoder_kwargs) - - return model_kwargs - - # Override method from transformers/generation/utils.py to handle parallel adapters - def _prepare_model_inputs(self, *args, **kwargs): - input_ids, input_name, model_kwargs = super()._prepare_model_inputs(*args, **kwargs) - - # Pre-replicate inputs for parallel adapters to avoid issues within generation code - if ( - hasattr(self, "adapters_config") - and self.adapters_config.active_setup - and self.adapters_config.active_setup.parallel_channels > 1 - ): - input_ids = input_ids.repeat(self.adapters_config.active_setup.parallel_channels, 1) - model_kwargs["adapter_input_parallelized"] = True - - return input_ids, input_name, model_kwargs - - # Override to support saving adapters_config - def save_pretrained( - self, - save_directory: Union[str, os.PathLike], - **kwargs, - ): - # Attach adapters_config to model_config to ensure saving with old format. - self.config.adapters = self.adapters_config.to_dict() - super().save_pretrained(save_directory, **kwargs) - # Remove adapters config - del self.config.adapters - - -@inherit_doc -class ModelBaseAdaptersMixin(ModelAdaptersMixin): - add_base_adapters = True - - def post_embedding_forward(self, module, args, embedding_output): - if isinstance(self, InvertibleAdaptersMixin) or isinstance(self, InvertibleAdaptersWrapperMixin): - embedding_output = self.invertible_adapters_forward(embedding_output) - - embedding_output = self.prompt_tuning.forward(embedding_output) - - return embedding_output - - @ForwardContext.wrap - def forward(self, *args, **kwargs): - return super().forward(*args, **kwargs) - - -@inherit_doc -class ModelUsingSubmodelsAdaptersMixin(ModelAdaptersMixin): - """Mixin for models that only consist of submodels like the encoder-decoder model.""" - - @abstractmethod - def init_submodels(self): - """ - Function to initialize the submodels of the model. - """ - pass - - def _init_adapters_submodules(self, model_config, adapters_config): - """ - Initializes adapters in all submodules. Since all submodules have been wrapped by the init_submodels method - this method doesn't need to do anything. - """ - pass - - -@inherit_doc -class ModelWithHeadsAdaptersMixin(ModelAdaptersMixin): - """ - Mixin adding support for loading/ saving adapters to transformer models with head(s). - """ - - def __init__(self, config, *args, **kwargs): - super().__init__(config, *args, **kwargs) - - def init_adapters(self, model_config, adapters_config, add_prefix_tuning_pool=True): - super().init_adapters(model_config, adapters_config, add_prefix_tuning_pool=add_prefix_tuning_pool) - self._convert_to_flex_head = False - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - """ - Iterates over all layers of the model. - """ - if self.base_model is self: - return super().iter_layers() - else: - return self.base_model.iter_layers() - - def add_adapter(self, adapter_name: str, config=None, overwrite_ok: bool = False, set_active: bool = False): - """ - Adds a new adapter module of the specified type to the model. - - Args: - adapter_name (str): The name of the adapter module to be added. - config (str or dict, optional): The adapter configuration, can be either: - - - the string identifier of a pre-defined configuration dictionary - - a configuration dictionary specifying the full config - - if not given, the default configuration for this adapter type will be used - overwrite_ok (bool, optional): - Overwrite an adapter with the same name if it exists. By default (False), an exception is thrown. - set_active (bool, optional): - Set the adapter to be the active one. By default (False), the adapter is added but not activated. - - If self.base_model is self, must inherit from a class that implements this method, to preclude infinite - recursion - """ - if self.base_model is self: - super().add_adapter(adapter_name, config, overwrite_ok=overwrite_ok, set_active=set_active) - else: - self.base_model.add_adapter(adapter_name, config, overwrite_ok=overwrite_ok, set_active=set_active) - - def delete_adapter(self, adapter_name: str): - """ - Deletes the adapter with the specified name from the model. - - Args: - adapter_name (str): The name of the adapter. - """ - if self.base_model is self: - super().delete_adapter(adapter_name) - else: - self.base_model.delete_adapter(adapter_name) - - def train_adapter(self, adapter_setup: Union[list, AdapterCompositionBlock], train_embeddings=False): - """ - Sets the model into mode for training the given adapters. If self.base_model is self, must inherit from a class - that implements this method, to preclude infinite recursion - """ - if self.base_model is self: - super().train_adapter(adapter_setup, train_embeddings) - else: - self.base_model.train_adapter(adapter_setup, train_embeddings) - self.freeze_embeddings() - - def train_adapter_fusion(self, adapter_setup: Union[list, AdapterCompositionBlock], unfreeze_adapters=False): - """ - Sets the model into mode for training of adapter fusion determined by a list of adapter names. If - self.base_model is self, must inherit from a class that implements this method, to preclude infinite recursion - """ - if self.base_model is self: - super().train_adapter_fusion(adapter_setup, unfreeze_adapters=unfreeze_adapters) - else: - self.base_model.train_adapter_fusion(adapter_setup, unfreeze_adapters=unfreeze_adapters) - self.freeze_embeddings() - - def save_head(self, save_directory: str, head_name: str = None): - loader = PredictionHeadLoader(self) - loader.save(save_directory, name=head_name) - - def load_head(self, save_directory, load_as=None, id2label=None, **kwargs): - loader = PredictionHeadLoader(self, convert_to_flex_head=self._convert_to_flex_head) - return loader.load(save_directory, load_as=load_as, id2label=id2label, **kwargs) - - def save_adapter( - self, - save_directory: str, - adapter_name: str, - with_head: bool = True, - meta_dict: dict = None, - custom_weights_loaders: Optional[List[WeightsLoader]] = None, - ): - if with_head: - if custom_weights_loaders is None: - custom_weights_loaders = [] - custom_weights_loaders.append(PredictionHeadLoader(self, error_on_missing=False)) - super().save_adapter( - save_directory, - adapter_name, - meta_dict=meta_dict, - custom_weights_loaders=custom_weights_loaders, - ) - - def load_adapter( - self, - adapter_name_or_path: str, - config: Union[dict, str] = None, - version: str = None, - model_name: str = None, - load_as: str = None, - source: str = None, - with_head: bool = True, - custom_weights_loaders: Optional[List[WeightsLoader]] = None, - leave_out: Optional[List[int]] = None, - id2label=None, - set_active: bool = False, - **kwargs - ) -> str: - if with_head: - if custom_weights_loaders is None: - custom_weights_loaders = [] - custom_weights_loaders.append( - PredictionHeadLoader( - self, - error_on_missing=False, - convert_to_flex_head=self._convert_to_flex_head, - ) - ) - # Support passing a num_labels for compatibility reasons. Convert to label map here. - num_labels = kwargs.pop("num_labels", None) - if num_labels is not None: - id2label = {i: "LABEL_" + str(i) for i in range(num_labels)} - return super().load_adapter( - adapter_name_or_path, - config=config, - version=version, - model_name=model_name, - load_as=load_as, - source=source, - custom_weights_loaders=custom_weights_loaders, - leave_out=leave_out, - id2label=id2label, - set_active=set_active, - **kwargs, - ) - - def save_all_adapters( - self, - save_directory: str, - with_head: bool = True, - meta_dict: dict = None, - custom_weights_loaders: Optional[List[WeightsLoader]] = None, - ): - os.makedirs(save_directory, exist_ok=True) - for name in self.adapters_config: - adapter_config = self.adapters_config.get(name) - h = get_adapter_config_hash(adapter_config) - save_path = join(save_directory, name) - if meta_dict: - meta_dict.update({"config_id": h}) - else: - meta_dict = {"config_id": h} - self.save_adapter( - save_path, - name, - meta_dict=meta_dict, - with_head=with_head, - custom_weights_loaders=custom_weights_loaders, - ) - - def save_adapter_fusion( - self, - save_directory: str, - adapter_names: Union[Fuse, list, str], - meta_dict: dict = None, - custom_weights_loaders: Optional[List[WeightsLoader]] = None, - with_head: Union[bool, str] = False, - ): - """ - Saves an AdapterFusion layer and its configuration file to a directory so that it can be shared or reloaded - using `load_adapter_fusion()`. - - Args: - save_directory (str): Path to a directory where the AdapterFusion should be saved. - adapter_names (Union[Fuse, list, str]): AdapterFusion to be saved. - with_head (Union[bool, str]): - If True, will save a head with the same name as the AdapterFusionLayer. If a string, this will be used - as the name of the head to be saved. - - Raises: - ValueError: If the given AdapterFusion name is invalid. - """ - super().save_adapter_fusion(save_directory, adapter_names, meta_dict, custom_weights_loaders) - - if with_head: - # Make sure to cover the different options for adapter_names - if isinstance(with_head, str): - head_name = with_head - elif isinstance(adapter_names, Fuse): - head_name = adapter_names.name - elif isinstance(adapter_names, list): - head_name = ",".join(adapter_names) - else: - head_name = adapter_names - if head_name not in self.heads: - raise ValueError("No head with name {} found".format(head_name)) - loader = PredictionHeadLoader(self) - loader.save(save_directory, head_name) - - def load_adapter_fusion( - self, - adapter_fusion_name_or_path: str, - load_as: str = None, - custom_weights_loaders: Optional[List[WeightsLoader]] = None, - set_active: bool = False, - with_head: bool = True, - **kwargs - ) -> str: - if with_head: - if custom_weights_loaders is None: - custom_weights_loaders = [] - custom_weights_loaders.append(PredictionHeadLoader(self, error_on_missing=False)) - super().load_adapter_fusion(adapter_fusion_name_or_path, load_as, custom_weights_loaders, set_active) - - def save_all_heads(self, save_directory): - os.makedirs(save_directory, exist_ok=True) - for head_name in self.heads: - save_path = join(save_directory, head_name) - self.save_head(save_path, head_name) - - def get_labels(self): - return list(self.config.id2label.values()) - - def get_labels_dict(self): - return self.config.id2label - - def get_adapter(self, name): - """ - If self.base_model is self, must inherit from a class that implements this method, to preclude infinite - recursion - """ - if self.base_model is self: - return super().get_adapter(name) - else: - return self.base_model.get_adapter(name) - - def freeze_embeddings(self, freeze=True): - # If model has prediction head with embeddings, ensure these are frozen - if self.get_output_embeddings() is not None: - output_embeddings = self.get_output_embeddings() - if isinstance(output_embeddings, list): - for output_embedding in output_embeddings: - for p in output_embedding.parameters(): - p.requires_grad = not freeze - else: - for p in self.get_output_embeddings().parameters(): - p.requires_grad = not freeze diff --git a/adapters/src/adapters/models/__init__.py b/adapters/src/adapters/models/__init__.py deleted file mode 100644 index 7314e2a2..00000000 --- a/adapters/src/adapters/models/__init__.py +++ /dev/null @@ -1,87 +0,0 @@ -from .albert.mixin_albert import AlbertModelAdaptersMixin -from .bart.mixin_bart import ( - BartDecoderAdaptersMixin, - BartDecoderWrapperAdaptersMixin, - BartEncoderAdaptersMixin, - BartModelAdaptersMixin, -) -from .beit.mixin_beit import BeitIntermediateAdaptersMixin, BeitModelAdaptersMixin, BeitOutputAdaptersMixin -from .bert.mixin_bert import BertLayerAdaptersMixin, BertModelAdaptersMixin -from .clip.mixin_clip import ( - CLIPEncoderAdaptersMixin, - CLIPModelAdaptersMixin, - CLIPTextModelAdaptersMixin, - CLIPTextTransformerAdaptersMixin, - CLIPVisionModelAdaptersMixin, -) -from .distilbert.mixin_distilbert import DistilBertModelAdaptersMixin, DistilBertTransformerAdaptersMixin -from .gpt2.mixin_gpt2 import GPT2ModelAdapterMixin -from .gptj.mixin_gptj import GPTJMLPAdaptersMixin, GPTJModelAdapterMixin -from .llama.mixin_llama import LlamaModelAdapterMixin -from .t5.mixin_t5 import ( - T5BlockAdaptersMixin, - T5ForCondiditionalGenerationWithHeadsMixin, - T5ForQuestionAnsweringWithHeadsMixin, - T5ModelAdaptersMixin, -) -from .vit.mixin_vit import ViTIntermediateAdaptersMixin, ViTModelAdaptersMixin -from .xmod.mixin_xmod import XmodModelAdaptersMixin - - -# IMPORTANT: Only add classes to this mapping that are not copied into the adapters package -MODEL_MIXIN_MAPPING = { - "AlbertModel": AlbertModelAdaptersMixin, - "BartEncoder": BartEncoderAdaptersMixin, - "BartDecoder": BartDecoderAdaptersMixin, - "BartModel": BartModelAdaptersMixin, - "BartDecoderWrapper": BartDecoderWrapperAdaptersMixin, - "BeitIntermediate": BeitIntermediateAdaptersMixin, - "BeitOutput": BeitOutputAdaptersMixin, - "BeitModel": BeitModelAdaptersMixin, - "BertLayer": BertLayerAdaptersMixin, - "BertModel": BertModelAdaptersMixin, - "Transformer": DistilBertTransformerAdaptersMixin, - "DistilBertModel": DistilBertModelAdaptersMixin, - "CLIPEncoder": CLIPEncoderAdaptersMixin, - "CLIPTextTransformer": CLIPTextTransformerAdaptersMixin, - "CLIPTextModel": CLIPTextModelAdaptersMixin, - "CLIPVisionModel": CLIPVisionModelAdaptersMixin, - "CLIPModel": CLIPModelAdaptersMixin, - "CLIPTextModelWithProjection": CLIPTextModelAdaptersMixin, - "CLIPVisionModelWithProjection": CLIPVisionModelAdaptersMixin, - "ElectraLayer": BertLayerAdaptersMixin, - "ElectraModel": BertModelAdaptersMixin, - "MBartEncoder": BartEncoderAdaptersMixin, - "MBartDecoder": BartDecoderAdaptersMixin, - "MBartDecoderWrapper": BartDecoderWrapperAdaptersMixin, - "MBartModel": BartModelAdaptersMixin, - "MT5Block": T5BlockAdaptersMixin, - "MT5Model": T5ModelAdaptersMixin, - "MT5ForConditionalGeneration": T5ForCondiditionalGenerationWithHeadsMixin, - "MT5ForQuestionAnswering": T5ForQuestionAnsweringWithHeadsMixin, - "MT5EncoderModel": T5ModelAdaptersMixin, - "GPT2Model": GPT2ModelAdapterMixin, - "GPTJMLP": GPTJMLPAdaptersMixin, - "GPTJModel": GPTJModelAdapterMixin, - "RobertaLayer": BertLayerAdaptersMixin, - "RobertaModel": BertModelAdaptersMixin, - "T5Block": T5BlockAdaptersMixin, - "T5Model": T5ModelAdaptersMixin, - "T5ForConditionalGeneration": T5ForCondiditionalGenerationWithHeadsMixin, - "T5ForQuestionAnswering": T5ForQuestionAnsweringWithHeadsMixin, - "T5EncoderModel": T5ModelAdaptersMixin, - "ViTIntermediate": ViTIntermediateAdaptersMixin, - "ViTModel": ViTModelAdaptersMixin, - "XLMRobertaLayer": BertLayerAdaptersMixin, - "XLMRobertaModel": BertModelAdaptersMixin, - "SubwordXLMRobertaModel": BertModelAdaptersMixin, - "XmodLayer": BertLayerAdaptersMixin, - "XmodModel": XmodModelAdaptersMixin, - "DebertaModel": BertModelAdaptersMixin, - "DebertaLayer": BertLayerAdaptersMixin, - "DebertaV2Model": BertModelAdaptersMixin, - "DebertaV2Layer": BertLayerAdaptersMixin, - "BertGenerationEncoder": BertModelAdaptersMixin, - "BertGenerationLayer": BertLayerAdaptersMixin, - "LlamaModel": LlamaModelAdapterMixin, -} diff --git a/adapters/src/adapters/models/albert/__init__.py b/adapters/src/adapters/models/albert/__init__.py deleted file mode 100644 index 262eb2fc..00000000 --- a/adapters/src/adapters/models/albert/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["AlbertAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import AlbertAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/albert/adapter_model.py b/adapters/src/adapters/models/albert/adapter_model.py deleted file mode 100644 index 8f6c07d4..00000000 --- a/adapters/src/adapters/models/albert/adapter_model.py +++ /dev/null @@ -1,106 +0,0 @@ -from transformers.models.albert.modeling_albert import ( - ALBERT_INPUTS_DOCSTRING, - ALBERT_START_DOCSTRING, - AlbertModel, - AlbertPreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - """Albert Model transformer with the option to add multiple flexible heads on top.""", - ALBERT_START_DOCSTRING, -) -class AlbertAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, AlbertPreTrainedModel): - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "multiple_choice", - "question_answering", - "masked_lm", - ] - use_pooler = True - - def __init__(self, config): - super().__init__(config) - - self.albert = AlbertModel(config) - init(self.albert) - - self._init_head_modules() - - self.init_weights() - - @add_start_docstrings_to_model_forward(ALBERT_INPUTS_DOCSTRING.format("batch_size, sequence_length")) - def forward( - self, - input_ids=None, - attention_mask=None, - token_type_ids=None, - position_ids=None, - head_mask=None, - inputs_embeds=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None - attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None - token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None - position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None - inputs_embeds = ( - inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) - if inputs_embeds is not None - else None - ) - - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.albert( - input_ids, - attention_mask=attention_mask, - token_type_ids=token_type_ids, - position_ids=position_ids, - head_mask=head_mask, - inputs_embeds=inputs_embeds, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - - # BERT & RoBERTa & ALBERT return the pooled output as second item, we don't need that in these heads - if not return_dict: - head_inputs = (outputs[0],) + outputs[2:] - else: - head_inputs = outputs - pooled_output = outputs[1] - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - head_inputs, - head_name=head, - attention_mask=attention_mask, - return_dict=return_dict, - pooled_output=pooled_output, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs diff --git a/adapters/src/adapters/models/albert/mixin_albert.py b/adapters/src/adapters/models/albert/mixin_albert.py deleted file mode 100644 index 4d84abd5..00000000 --- a/adapters/src/adapters/models/albert/mixin_albert.py +++ /dev/null @@ -1,68 +0,0 @@ -from typing import Iterable, Tuple - -import torch.nn as nn - -from ...composition import adjust_tensors_for_parallel_ -from ...methods.bottleneck import BottleneckLayer -from ...methods.lora import LoRALinear -from ...methods.prefix_tuning import PrefixTuningLayer -from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin - - -class AlbertAttentionAdaptersMixin: - """Adds adapters to the AlbertAttention module of ALBERT.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.query = LoRALinear.wrap(self.query, "selfattn", model_config, adapters_config, attn_key="q") - self.key = LoRALinear.wrap(self.key, "selfattn", model_config, adapters_config, attn_key="k") - self.value = LoRALinear.wrap(self.value, "selfattn", model_config, adapters_config, attn_key="v") - - self.attention_adapters = BottleneckLayer("mh_adapter") - - self.prefix_tuning = PrefixTuningLayer( - self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config - ) - - -class AlbertEncoderLayerAdaptersMixin: - """Adds adapters to the AlbertLayer module.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.ffn = LoRALinear.wrap(self.ffn, "intermediate", model_config, adapters_config) - self.ffn_output = LoRALinear.wrap(self.ffn_output, "output", model_config, adapters_config) - - # Set location keys for prefix tuning - self.location_key = "output_adapter" - - self.output_adapters = BottleneckLayer("output_adapter") - - self.attention.location_key = "self" - - -class AlbertModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): - """Adds adapters to the AlbertModel module.""" - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - - # Set hook for parallel composition - for _, layer in self.iter_layers(): - self._set_layer_hook_for_parallel(layer) - - self.embeddings.register_forward_hook(self.post_embedding_forward) - - def _set_layer_hook_for_parallel(self, layer: nn.Module): - def hook(module, input): - adjust_tensors_for_parallel_(input[0], input[1]) - return input - - layer.register_forward_pre_hook(hook) - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - i = 0 - for albertLayerGroup in self.encoder.albert_layer_groups: - for albertLayer in albertLayerGroup.albert_layers: - yield i, albertLayer - i += 1 diff --git a/adapters/src/adapters/models/albert/modeling_albert.py b/adapters/src/adapters/models/albert/modeling_albert.py deleted file mode 100644 index f620240c..00000000 --- a/adapters/src/adapters/models/albert/modeling_albert.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding=utf-8 -# Copyright 2018 Google AI, Google Brain and the HuggingFace Inc. team. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""PyTorch ALBERT model.""" - -import math -from typing import Optional, Tuple, Union - -import torch -from torch import nn - -from transformers.models.albert.modeling_albert import AlbertAttention, AlbertLayer -from transformers.pytorch_utils import apply_chunking_to_forward - -from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from ...utils import prefix_attention_mask -from .mixin_albert import AlbertAttentionAdaptersMixin, AlbertEncoderLayerAdaptersMixin - - -class AlbertAttentionWithAdapters(AlbertAttentionAdaptersMixin, AlbertAttention): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.FloatTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - output_attentions: bool = False, - ) -> Union[Tuple[torch.Tensor], Tuple[torch.Tensor, torch.Tensor]]: - attention_mask = prefix_attention_mask(attention_mask) # type: ignore - - mixed_query_layer = self.query(hidden_states) - mixed_key_layer = self.key(hidden_states) - mixed_value_layer = self.value(hidden_states) - - query_layer = self.transpose_for_scores(mixed_query_layer) - key_layer = self.transpose_for_scores(mixed_key_layer) - value_layer = self.transpose_for_scores(mixed_value_layer) - query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) - (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) - - key_layer, value_layer, attention_mask = self.prefix_tuning( - key_layer, value_layer, hidden_states, attention_mask - ) - (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) - - # Take the dot product between "query" and "key" to get the raw attention scores. - attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) - attention_scores = attention_scores / math.sqrt(self.attention_head_size) - - if attention_mask is not None: - # Apply the attention mask is (precomputed for all layers in BertModel forward() function) - attention_scores = attention_scores + attention_mask - - if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": - seq_length = hidden_states.size()[1] - position_ids_l = torch.arange(seq_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) - position_ids_r = torch.arange(seq_length, dtype=torch.long, device=hidden_states.device).view(1, -1) - distance = position_ids_l - position_ids_r - positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) - positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility - - if self.position_embedding_type == "relative_key": - relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores - elif self.position_embedding_type == "relative_key_query": - relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key - - # Normalize the attention scores to probabilities. - attention_probs = nn.functional.softmax(attention_scores, dim=-1) - - # This is actually dropping out entire tokens to attend to, which might - # seem a bit unusual, but is taken from the original Transformer paper. - attention_probs = self.attention_dropout(attention_probs) - - # Mask heads if we want to - if head_mask is not None: - attention_probs = attention_probs * head_mask - - context_layer = torch.matmul(attention_probs, value_layer) - context_layer = context_layer.transpose(2, 1).flatten(2) - - projected_context_layer = self.dense(context_layer) - projected_context_layer_dropout = self.output_dropout(projected_context_layer) - - layernormed_context_layer = self.attention_adapters( - hidden_states, projected_context_layer_dropout, self.LayerNorm - ) - - return (layernormed_context_layer, attention_probs) if output_attentions else (layernormed_context_layer,) - - -class AlbertLayerWithAdapters(AlbertEncoderLayerAdaptersMixin, AlbertLayer): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.FloatTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - output_attentions: bool = False, - output_hidden_states: bool = False, - ) -> Tuple[torch.Tensor, torch.Tensor]: - attention_output = self.attention(hidden_states, attention_mask, head_mask, output_attentions) - - ffn_output = apply_chunking_to_forward( - self.ff_chunk, - self.chunk_size_feed_forward, - self.seq_len_dim, - attention_output[0], - ) - - hidden_states = self.output_adapters(ffn_output, attention_output[0], self.full_layer_layer_norm) - - return (hidden_states,) + attention_output[1:] # add attentions if we output them diff --git a/adapters/src/adapters/models/auto/__init__.py b/adapters/src/adapters/models/auto/__init__.py deleted file mode 100644 index eacaf647..00000000 --- a/adapters/src/adapters/models/auto/__init__.py +++ /dev/null @@ -1,42 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": [ - "ADAPTER_MODEL_MAPPING", - "AutoAdapterModel", - ], -} - - -if TYPE_CHECKING: - from .adapter_model import ADAPTER_MODEL_MAPPING, AutoAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/auto/adapter_model.py b/adapters/src/adapters/models/auto/adapter_model.py deleted file mode 100644 index 2d59c6da..00000000 --- a/adapters/src/adapters/models/auto/adapter_model.py +++ /dev/null @@ -1,43 +0,0 @@ -from collections import OrderedDict - -from transformers.models.auto.auto_factory import _BaseAutoModelClass, auto_class_update -from transformers.models.auto.configuration_auto import CONFIG_MAPPING_NAMES - -from .auto_factory import _LazyAdapterModelAutoMapping - - -# Make sure that children are placed before parents! -ADAPTER_MODEL_MAPPING_NAMES = OrderedDict( - [ - ("albert", "AlbertAdapterModel"), - ("bart", "BartAdapterModel"), - ("beit", "BeitAdapterModel"), - ("bert", "BertAdapterModel"), - ("bert-generation", "BertGenerationAdapterModel"), - ("clip", "CLIPAdapterModel"), - ("deberta", "DebertaAdapterModel"), - ("deberta-v2", "DebertaV2AdapterModel"), - ("distilbert", "DistilBertAdapterModel"), - ("electra", "ElectraAdapterModel"), - ("gpt2", "GPT2AdapterModel"), - ("gptj", "GPTJAdapterModel"), - ("llama", "LlamaAdapterModel"), - ("mbart", "MBartAdapterModel"), - ("mt5", "MT5AdapterModel"), - ("roberta", "RobertaAdapterModel"), - ("t5", "T5AdapterModel"), - ("vit", "ViTAdapterModel"), - ("xlm-roberta", "XLMRobertaAdapterModel"), - ("xmod", "XmodAdapterModel"), - ] -) - - -ADAPTER_MODEL_MAPPING = _LazyAdapterModelAutoMapping(CONFIG_MAPPING_NAMES, ADAPTER_MODEL_MAPPING_NAMES) - - -class AutoAdapterModel(_BaseAutoModelClass): - _model_mapping = ADAPTER_MODEL_MAPPING - - -AutoAdapterModel = auto_class_update(AutoAdapterModel, head_doc="adapters and flexible heads") diff --git a/adapters/src/adapters/models/auto/auto_factory.py b/adapters/src/adapters/models/auto/auto_factory.py deleted file mode 100644 index fa0fb14a..00000000 --- a/adapters/src/adapters/models/auto/auto_factory.py +++ /dev/null @@ -1,11 +0,0 @@ -import importlib - -from transformers.models.auto.auto_factory import _LazyAutoMapping, getattribute_from_module, model_type_to_module_name - - -class _LazyAdapterModelAutoMapping(_LazyAutoMapping): - def _load_attr_from_module(self, model_type, attr): - module_name = model_type_to_module_name(model_type) - if module_name not in self._modules: - self._modules[module_name] = importlib.import_module(f".{module_name}", "adapters.models") - return getattribute_from_module(self._modules[module_name], attr) diff --git a/adapters/src/adapters/models/bart/__init__.py b/adapters/src/adapters/models/bart/__init__.py deleted file mode 100644 index 4ed67ab1..00000000 --- a/adapters/src/adapters/models/bart/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["BartAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import BartAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/bart/adapter_model.py b/adapters/src/adapters/models/bart/adapter_model.py deleted file mode 100644 index dec5a838..00000000 --- a/adapters/src/adapters/models/bart/adapter_model.py +++ /dev/null @@ -1,162 +0,0 @@ -import torch - -from transformers.models.bart.modeling_bart import ( - BART_INPUTS_DOCSTRING, - BART_START_DOCSTRING, - BartConfig, - BartModel, - BartPretrainedModel, - shift_tokens_right, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - "BART Model with the option to add multiple flexible prediction heads on top.", BART_START_DOCSTRING -) -class BartAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, BartPretrainedModel): - _tied_weights_keys = [ - "encoder.embed_tokens.weight", - "decoder.embed_tokens.weight", - ] - - head_types = [ - "classification", - "multilabel_classification", - "question_answering", - "seq2seq_lm", - ] - - def __init__(self, config: BartConfig, **kwargs): - super().__init__(config, **kwargs) - self.model = BartModel(config) - init(self.model) - - self._init_head_modules() - - self.post_init() - - def get_encoder(self): - return self.model.get_encoder() - - def get_decoder(self): - return self.model.get_decoder() - - @add_start_docstrings_to_model_forward(BART_INPUTS_DOCSTRING) - def forward( - self, - input_ids=None, - attention_mask=None, - decoder_input_ids=None, - decoder_attention_mask=None, - head_mask=None, - decoder_head_mask=None, - cross_attn_head_mask=None, - encoder_outputs=None, - inputs_embeds=None, - decoder_inputs_embeds=None, - use_cache=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - past_key_values=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - r""" - labels (:obj:`torch.LongTensor` of shape :obj:`(batch_size,)`, `optional`): - Labels for computing the sequence classification/regression loss. Indices should be in :obj:`[0, ..., - config.num_labels - 1]`. If :obj:`config.num_labels > 1` a classification loss is computed (Cross-Entropy). - """ - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - if "labels" in kwargs or "start_positions" in kwargs and "end_positions" in kwargs: - use_cache = False - - outputs, context = self.model( - input_ids, - attention_mask=attention_mask, - decoder_input_ids=decoder_input_ids, - decoder_attention_mask=decoder_attention_mask, - head_mask=head_mask, - decoder_head_mask=decoder_head_mask, - cross_attn_head_mask=cross_attn_head_mask, - encoder_outputs=encoder_outputs, - inputs_embeds=inputs_embeds, - decoder_inputs_embeds=decoder_inputs_embeds, - use_cache=use_cache, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - past_key_values=past_key_values, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - - head_outputs = self.forward_head( - outputs, - head_name=head, - attention_mask=attention_mask, - return_dict=return_dict, - get_cls_from_eos_tokens=True, - # `get_cls_from_eos_tokens` requires passing eos mask - eos_mask=input_ids.eq(self.config.eos_token_id) if input_ids is not None else None, - **kwargs, - ) - - return head_outputs - - # Copied from BartForConditionalGeneration - def prepare_inputs_for_generation( - self, - decoder_input_ids, - past=None, - attention_mask=None, - head_mask=None, - decoder_head_mask=None, - cross_attn_head_mask=None, - use_cache=None, - encoder_outputs=None, - **kwargs - ): - # cut decoder_input_ids if past is used - if past is not None: - decoder_input_ids = decoder_input_ids[:, -1:] - - return { - "input_ids": None, # encoder_outputs is defined. input_ids not needed - "encoder_outputs": encoder_outputs, - "past_key_values": past, - "decoder_input_ids": decoder_input_ids, - "attention_mask": attention_mask, - "head_mask": head_mask, - "decoder_head_mask": decoder_head_mask, - "cross_attn_head_mask": cross_attn_head_mask, - "use_cache": use_cache, # change this to avoid caching (presumably for debugging) - "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), - } - - # Copied from BartForConditionalGeneration - def prepare_decoder_input_ids_from_labels(self, labels: torch.Tensor): - return shift_tokens_right(labels, self.config.pad_token_id, self.config.decoder_start_token_id) - - # Copied from BartForConditionalGeneration - @staticmethod - def _reorder_cache(past, beam_idx): - reordered_past = () - for layer_past in past: - # cached cross_attention states don't have to be reordered -> they are always the same - reordered_past += ( - tuple(past_state.index_select(0, beam_idx) for past_state in layer_past[:2]) + layer_past[2:], - ) - return reordered_past diff --git a/adapters/src/adapters/models/bart/mixin_bart.py b/adapters/src/adapters/models/bart/mixin_bart.py deleted file mode 100644 index d269d72b..00000000 --- a/adapters/src/adapters/models/bart/mixin_bart.py +++ /dev/null @@ -1,109 +0,0 @@ -from typing import Iterable, Optional, Tuple - -import torch -import torch.nn as nn - -from ...composition import adjust_tensors_for_parallel -from ...methods.bottleneck import BottleneckLayer -from ...methods.lora import LoRALinear -from ...methods.prefix_tuning import PrefixTuningLayer -from ...model_mixin import ( - EmbeddingAdaptersMixin, - EmbeddingAdaptersWrapperMixin, - InvertibleAdaptersMixin, - InvertibleAdaptersWrapperMixin, - ModelBaseAdaptersMixin, -) - - -class BartAttentionAdaptersMixin: - """Adds adapters to the BartAttention module.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.k_proj = LoRALinear.wrap(self.k_proj, "selfattn", model_config, adapters_config, attn_key="k") - self.v_proj = LoRALinear.wrap(self.v_proj, "selfattn", model_config, adapters_config, attn_key="v") - self.q_proj = LoRALinear.wrap(self.q_proj, "selfattn", model_config, adapters_config, attn_key="q") - - self.prefix_tuning = PrefixTuningLayer( - self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config - ) - - -class BartEncoderLayerAdaptersMixin: - """Adds adapters to the BartEncoderLayer module of BART.""" - - def init_adapters(self, model_config, adapters_config): - self.adapters_config = adapters_config - # Wrap layers for LoRA - self.fc1 = LoRALinear.wrap(self.fc1, "intermediate", model_config, adapters_config) - self.fc2 = LoRALinear.wrap(self.fc2, "output", model_config, adapters_config) - - # Set attention layer location key for prefix tuning - self.self_attn.location_key = "encoder" - self.attention_adapters = BottleneckLayer("mh_adapter") - self.output_adapters = BottleneckLayer("output_adapter") - - -class BartDecoderLayerAdaptersMixin(BartEncoderLayerAdaptersMixin): - """Adds adapters to the BartDecoderLayer module of BART.""" - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - # Set attention layer location key for prefix tuning - self.self_attn.location_key = "self" - self.encoder_attn.location_key = "cross" - self.cross_attention_adapters = BottleneckLayer("cross_adapter") - - -class BartEncoderAdaptersMixin(InvertibleAdaptersMixin): - """Adds adapters to the BartEncoder module of BART.""" - - pass - - -class BartDecoderAdaptersMixin: - """Adds adapters to the BartDecoder module of BART.""" - - def forward( - self, input_ids: torch.LongTensor = None, encoder_hidden_states: Optional[torch.FloatTensor] = None, **kwargs - ): - (input_ids,) = adjust_tensors_for_parallel(encoder_hidden_states, input_ids) - return super().forward(input_ids=input_ids, encoder_hidden_states=encoder_hidden_states, **kwargs) - - -class BartModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersWrapperMixin, ModelBaseAdaptersMixin): - """Adds adapters to the BartModel class.""" - - invertible_adapters_base_name = "encoder" - support_prompt_tuning = False - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - self.encoder.layernorm_embedding.register_forward_hook(self.post_embedding_forward) - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - if hasattr(self, "encoder"): - for i, layer in enumerate(self.encoder.layers): - yield i, layer - for i, layer in enumerate(self.decoder.layers, start=len(self.encoder.layers)): - yield i, layer - else: - for i, layer in enumerate(self.decoder.layers): - yield i, layer - - def post_embedding_forward(self, module, args, embedding_output): - embedding_output = self.invertible_adapters_forward(embedding_output) - # Prompt tuning not yet supported - return embedding_output - - -class BartDecoderWrapperAdaptersMixin(EmbeddingAdaptersWrapperMixin, ModelBaseAdaptersMixin): - """Adds adapters to the BartDecoderWrapper class.""" - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.decoder.layers): - yield i, layer - - def get_input_embeddings(self): - return self.decoder.get_input_embeddings() diff --git a/adapters/src/adapters/models/bart/modeling_bart.py b/adapters/src/adapters/models/bart/modeling_bart.py deleted file mode 100644 index b347fddf..00000000 --- a/adapters/src/adapters/models/bart/modeling_bart.py +++ /dev/null @@ -1,533 +0,0 @@ -# coding=utf-8 -# Copyright 2021 The Fairseq Authors and The HuggingFace Inc. team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" PyTorch BART model.""" -from typing import Optional, Tuple - -import torch -import torch.utils.checkpoint -from torch import nn - -from transformers.models.bart.modeling_bart import BartAttention, BartDecoderLayer, BartEncoderLayer -from transformers.utils import logging - -from ...composition import adjust_tensors_for_parallel, adjust_tensors_for_parallel_, match_attn_matrices_for_parallel -from .mixin_bart import BartAttentionAdaptersMixin, BartDecoderLayerAdaptersMixin, BartEncoderLayerAdaptersMixin - - -logger = logging.get_logger(__name__) - - -class BartAttentionWithAdapters(BartAttentionAdaptersMixin, BartAttention): - """Multi-headed attention from 'Attention Is All You Need' paper""" - - def forward( - self, - hidden_states: torch.Tensor, - key_value_states: Optional[torch.Tensor] = None, - past_key_value: Optional[Tuple[torch.Tensor]] = None, - attention_mask: Optional[torch.Tensor] = None, - layer_head_mask: Optional[torch.Tensor] = None, - output_attentions: bool = False, - ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: - """Input shape: Batch x Time x Channel""" - - # if key_value_states are provided this layer is used as a cross-attention layer - # for the decoder - is_cross_attention = key_value_states is not None - - bsz, tgt_len, _ = hidden_states.size() - - # get query proj - query_states = self.q_proj(hidden_states) * self.scaling - # get key, value proj - # `past_key_value[0].shape[2] == key_value_states.shape[1]` - # is checking that the `sequence_length` of the `past_key_value` is the same as - # the provided `key_value_states` to support prefix tuning - if ( - is_cross_attention - and past_key_value is not None - and past_key_value[0].shape[2] == key_value_states.shape[1] - ): - # reuse k,v, cross_attentions - key_states = past_key_value[0] - value_states = past_key_value[1] - elif is_cross_attention: - # cross_attentions - key_states = self._shape(self.k_proj(key_value_states), -1, bsz) - value_states = self._shape(self.v_proj(key_value_states), -1, bsz) - elif past_key_value is not None: - # reuse k, v, self_attention - key_states = self._shape(self.k_proj(hidden_states), -1, bsz) - value_states = self._shape(self.v_proj(hidden_states), -1, bsz) - key_states = torch.cat([past_key_value[0], key_states], dim=2) - value_states = torch.cat([past_key_value[1], value_states], dim=2) - else: - # self_attention - key_states = self._shape(self.k_proj(hidden_states), -1, bsz) - value_states = self._shape(self.v_proj(hidden_states), -1, bsz) - - query_states, key_states, value_states = match_attn_matrices_for_parallel( - query_states, key_states, value_states - ) - (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) - - if self.is_decoder: - # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. - # Further calls to cross_attention layer can then reuse all cross-attention - # key/value_states (first "if" case) - # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of - # all previous decoder key/value_states. Further calls to uni-directional self-attention - # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) - # if encoder bi-directional self-attention `past_key_value` is always `None` - past_key_value = (key_states, value_states) - - key_states, value_states, attention_mask = self.prefix_tuning( - key_states, value_states, hidden_states, attention_mask - ) - (query_states,) = adjust_tensors_for_parallel(key_states, query_states) - bsz = query_states.size(0) - - proj_shape = (bsz * self.num_heads, -1, self.head_dim) - query_states = self._shape(query_states, tgt_len, bsz).view(*proj_shape) - key_states = key_states.reshape(*proj_shape) - value_states = value_states.reshape(*proj_shape) - - src_len = key_states.size(1) - attn_weights = torch.bmm(query_states, key_states.transpose(1, 2)) - - if attn_weights.size() != (bsz * self.num_heads, tgt_len, src_len): - raise ValueError( - f"Attention weights should be of size {(bsz * self.num_heads, tgt_len, src_len)}, but is" - f" {attn_weights.size()}" - ) - - if attention_mask is not None: - if attention_mask.size() != (bsz, 1, tgt_len, src_len): - raise ValueError( - f"Attention mask should be of size {(bsz, 1, tgt_len, src_len)}, but is {attention_mask.size()}" - ) - attn_weights = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + attention_mask - attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) - - attn_weights = nn.functional.softmax(attn_weights, dim=-1) - - if layer_head_mask is not None: - if layer_head_mask.size() != (self.num_heads,): - raise ValueError( - f"Head mask for a single layer should be of size {(self.num_heads,)}, but is" - f" {layer_head_mask.size()}" - ) - attn_weights = layer_head_mask.view(1, -1, 1, 1) * attn_weights.view(bsz, self.num_heads, tgt_len, src_len) - attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) - - if output_attentions: - # this operation is a bit awkward, but it's required to - # make sure that attn_weights keeps its gradient. - # In order to do so, attn_weights have to be reshaped - # twice and have to be reused in the following - attn_weights_reshaped = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) - attn_weights = attn_weights_reshaped.view(bsz * self.num_heads, tgt_len, src_len) - else: - attn_weights_reshaped = None - - attn_probs = nn.functional.dropout(attn_weights, p=self.dropout, training=self.training) - - attn_output = torch.bmm(attn_probs, value_states) - - if attn_output.size() != (bsz * self.num_heads, tgt_len, self.head_dim): - raise ValueError( - f"`attn_output` should be of size {(bsz * self.num_heads, tgt_len, self.head_dim)}, but is" - f" {attn_output.size()}" - ) - - attn_output = attn_output.view(bsz, self.num_heads, tgt_len, self.head_dim) - attn_output = attn_output.transpose(1, 2) - - # Use the `embed_dim` from the config (stored in the class) rather than `hidden_state` because `attn_output` can be - # partitioned across GPUs when using tensor-parallelism. - attn_output = attn_output.reshape(bsz, tgt_len, self.embed_dim) - - attn_output = self.out_proj(attn_output) - - return attn_output, attn_weights_reshaped, past_key_value - - -class BartFlashAttention2WithAdapters(BartAttentionAdaptersMixin, BartAttention): - def forward( - self, - hidden_states: torch.Tensor, - key_value_states: Optional[torch.Tensor] = None, - past_key_value: Optional[Tuple[torch.Tensor]] = None, - attention_mask: Optional[torch.Tensor] = None, - layer_head_mask: Optional[torch.Tensor] = None, - output_attentions: bool = False, - ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: - # BartFlashAttention2 attention does not support output_attentions - if output_attentions: - raise ValueError("BartFlashAttention2 attention does not support output_attentions") - - # if key_value_states are provided this layer is used as a cross-attention layer - # for the decoder - is_cross_attention = key_value_states is not None - - bsz, q_len, _ = hidden_states.size() - - # get query proj - query_states = self._reshape(self.q_proj(hidden_states), -1, bsz) - # get key, value proj - # `past_key_value[0].shape[2] == key_value_states.shape[1]` - # is checking that the `sequence_length` of the `past_key_value` is the same as - # the provided `key_value_states` to support prefix tuning - if ( - is_cross_attention - and past_key_value is not None - and past_key_value[0].shape[2] == key_value_states.shape[1] - ): - # reuse k,v, cross_attentions - key_states = past_key_value[0].transpose(1, 2) - value_states = past_key_value[1].transpose(1, 2) - elif is_cross_attention: - # cross_attentions - key_states = self._reshape(self.k_proj(key_value_states), -1, bsz) - value_states = self._reshape(self.v_proj(key_value_states), -1, bsz) - elif past_key_value is not None: - # reuse k, v, self_attention - key_states = self._reshape(self.k_proj(hidden_states), -1, bsz) - value_states = self._reshape(self.v_proj(hidden_states), -1, bsz) - key_states = torch.cat([past_key_value[0].transpose(1, 2), key_states], dim=1) - value_states = torch.cat([past_key_value[1].transpose(1, 2), value_states], dim=1) - else: - # self_attention - key_states = self._reshape(self.k_proj(hidden_states), -1, bsz) - value_states = self._reshape(self.v_proj(hidden_states), -1, bsz) - - query_states, key_states, value_states = match_attn_matrices_for_parallel( - query_states, key_states, value_states - ) - (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) - - if self.is_decoder: - # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. - # Further calls to cross_attention layer can then reuse all cross-attention - # key/value_states (first "if" case) - # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of - # all previous decoder key/value_states. Further calls to uni-directional self-attention - # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) - # if encoder bi-directional self-attention `past_key_value` is always `None` - past_key_value = (key_states.transpose(1, 2), value_states.transpose(1, 2)) - - key_states, value_states, attention_mask = self.prefix_tuning( - key_states, value_states, hidden_states, attention_mask - ) - (query_states,) = adjust_tensors_for_parallel(key_states, query_states) - bsz = query_states.size(0) - - kv_seq_len = key_states.shape[-2] - if past_key_value is not None: - kv_seq_len += past_key_value[0].shape[-2] - - # In PEFT, usually we cast the layer norms in float32 for training stability reasons - # therefore the input hidden states gets silently casted in float32. Hence, we need - # cast them back in the correct dtype just to be sure everything works as expected. - # This might slowdown training & inference so it is recommended to not cast the LayerNorms - # in fp32. (LlamaRMSNorm handles it correctly) - - input_dtype = query_states.dtype - if input_dtype == torch.float32: - # Handle the case where the model is quantized - if hasattr(self.config, "_pre_quantization_dtype"): - target_dtype = self.config._pre_quantization_dtype - else: - target_dtype = self.q_proj.weight.dtype - - logger.warning_once( - "The input hidden states seems to be silently casted in float32, this might be related to the fact" - " you have upcasted embedding or layer norm layers in float32. We will cast back the input in" - f" {target_dtype}." - ) - - query_states = query_states.to(target_dtype) - key_states = key_states.to(target_dtype) - value_states = value_states.to(target_dtype) - - attn_output = self._flash_attention_forward( - query_states, key_states, value_states, attention_mask, q_len, dropout=self.dropout - ) - - attn_output = attn_output.reshape(bsz, q_len, -1) - attn_output = self.out_proj(attn_output) - - if not output_attentions: - attn_weights = None - - return attn_output, attn_weights, past_key_value - - -class BartSdpaAttentionWithAdapters(BartAttentionAdaptersMixin, BartAttention): - def forward( - self, - hidden_states: torch.Tensor, - key_value_states: Optional[torch.Tensor] = None, - past_key_value: Optional[Tuple[torch.Tensor]] = None, - attention_mask: Optional[torch.Tensor] = None, - layer_head_mask: Optional[torch.Tensor] = None, - output_attentions: bool = False, - ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: - """Input shape: Batch x Time x Channel""" - if output_attentions or layer_head_mask is not None: - # TODO: Improve this warning with e.g. `model.config._attn_implementation = "manual"` once this is implemented. - logger.warning_once( - "BartModel is using BartSdpaAttention, but `torch.nn.functional.scaled_dot_product_attention` does not" - " support `output_attentions=True` or `layer_head_mask` not None. Falling back to the manual attention" - " implementation, but specifying the manual implementation will be required from Transformers version" - ' v5.0.0 onwards. This warning can be removed using the argument `attn_implementation="eager"` when' - " loading the model." - ) - return super().forward( - hidden_states, - key_value_states=key_value_states, - past_key_value=past_key_value, - attention_mask=attention_mask, - layer_head_mask=layer_head_mask, - output_attentions=output_attentions, - ) - - # if key_value_states are provided this layer is used as a cross-attention layer - # for the decoder - is_cross_attention = key_value_states is not None - - bsz, tgt_len, _ = hidden_states.size() - - # get query proj - query_states = self.q_proj(hidden_states) - # get key, value proj - # `past_key_value[0].shape[2] == key_value_states.shape[1]` - # is checking that the `sequence_length` of the `past_key_value` is the same as - # the provided `key_value_states` to support prefix tuning - if ( - is_cross_attention - and past_key_value is not None - and past_key_value[0].shape[2] == key_value_states.shape[1] - ): - # reuse k,v, cross_attentions - key_states = past_key_value[0] - value_states = past_key_value[1] - elif is_cross_attention: - # cross_attentions - key_states = self._shape(self.k_proj(key_value_states), -1, bsz) - value_states = self._shape(self.v_proj(key_value_states), -1, bsz) - elif past_key_value is not None: - # reuse k, v, self_attention - key_states = self._shape(self.k_proj(hidden_states), -1, bsz) - value_states = self._shape(self.v_proj(hidden_states), -1, bsz) - key_states = torch.cat([past_key_value[0], key_states], dim=2) - value_states = torch.cat([past_key_value[1], value_states], dim=2) - else: - # self_attention - key_states = self._shape(self.k_proj(hidden_states), -1, bsz) - value_states = self._shape(self.v_proj(hidden_states), -1, bsz) - - query_states, key_states, value_states = match_attn_matrices_for_parallel( - query_states, key_states, value_states - ) - (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) - - if self.is_decoder: - # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. - # Further calls to cross_attention layer can then reuse all cross-attention - # key/value_states (first "if" case) - # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of - # all previous decoder key/value_states. Further calls to uni-directional self-attention - # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) - # if encoder bi-directional self-attention `past_key_value` is always `None` - past_key_value = (key_states, value_states) - - key_states, value_states, attention_mask = self.prefix_tuning( - key_states, value_states, hidden_states, attention_mask - ) - (query_states,) = adjust_tensors_for_parallel(key_states, query_states) - bsz = query_states.size(0) - - query_states = self._shape(query_states, tgt_len, bsz) - - # NOTE: SDPA with memory-efficient backend is currently (torch==2.1.2) bugged when using non-contiguous inputs and a custom attn_mask, - # but we are fine here as `_shape` do call `.contiguous()`. Reference: https://github.com/pytorch/pytorch/issues/112577 - attn_output = torch.nn.functional.scaled_dot_product_attention( - query_states, - key_states, - value_states, - attn_mask=attention_mask, - dropout_p=self.dropout if self.training else 0.0, - # The tgt_len > 1 is necessary to match with AttentionMaskConverter.to_causal_4d that does not create a causal mask in case tgt_len == 1. - is_causal=self.is_causal and attention_mask is None and tgt_len > 1, - ) - - if attn_output.size() != (bsz, self.num_heads, tgt_len, self.head_dim): - raise ValueError( - f"`attn_output` should be of size {(bsz, self.num_heads, tgt_len, self.head_dim)}, but is" - f" {attn_output.size()}" - ) - - attn_output = attn_output.transpose(1, 2) - - # Use the `embed_dim` from the config (stored in the class) rather than `hidden_state` because `attn_output` can be - # partitioned across GPUs when using tensor-parallelism. - attn_output = attn_output.reshape(bsz, tgt_len, self.embed_dim) - - attn_output = self.out_proj(attn_output) - - return attn_output, None, past_key_value - - -class BartEncoderLayerWithAdapters(BartEncoderLayerAdaptersMixin, BartEncoderLayer): - def forward( - self, - hidden_states: torch.FloatTensor, - attention_mask: torch.FloatTensor, - layer_head_mask: torch.FloatTensor, - output_attentions: Optional[bool] = False, - ) -> Tuple[torch.FloatTensor, Optional[torch.FloatTensor]]: - """ - Args: - hidden_states (`torch.FloatTensor`): input to the layer of shape `(seq_len, batch, embed_dim)` - attention_mask (`torch.FloatTensor`): attention mask of size - `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. - layer_head_mask (`torch.FloatTensor`): mask for attention heads in a given layer of size - `(encoder_attention_heads,)`. - output_attentions (`bool`, *optional*): - Whether or not to return the attentions tensors of all attention layers. See `attentions` under - returned tensors for more detail. - """ - adjust_tensors_for_parallel_(hidden_states, attention_mask) - - residual = hidden_states - hidden_states, attn_weights, _ = self.self_attn( - hidden_states=hidden_states, - attention_mask=attention_mask, - layer_head_mask=layer_head_mask, - output_attentions=output_attentions, - ) - hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) - hidden_states = self.attention_adapters(hidden_states, residual, self.self_attn_layer_norm) - - residual = hidden_states - hidden_states = self.activation_fn(self.fc1(hidden_states)) - hidden_states = nn.functional.dropout(hidden_states, p=self.activation_dropout, training=self.training) - hidden_states = self.fc2(hidden_states) - hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) - hidden_states = self.output_adapters(hidden_states, residual, self.final_layer_norm) - - if hidden_states.dtype == torch.float16 and ( - torch.isinf(hidden_states).any() or torch.isnan(hidden_states).any() - ): - clamp_value = torch.finfo(hidden_states.dtype).max - 1000 - hidden_states = torch.clamp(hidden_states, min=-clamp_value, max=clamp_value) - - outputs = (hidden_states,) - - if output_attentions: - outputs += (attn_weights,) - - return outputs - - -class BartDecoderLayerWithAdapters(BartDecoderLayerAdaptersMixin, BartDecoderLayer): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.Tensor] = None, - encoder_hidden_states: Optional[torch.Tensor] = None, - encoder_attention_mask: Optional[torch.Tensor] = None, - layer_head_mask: Optional[torch.Tensor] = None, - cross_attn_layer_head_mask: Optional[torch.Tensor] = None, - past_key_value: Optional[Tuple[torch.Tensor]] = None, - output_attentions: Optional[bool] = False, - use_cache: Optional[bool] = True, - ) -> Tuple[torch.FloatTensor, Optional[Tuple[torch.FloatTensor, torch.FloatTensor]]]: - """ - Args: - hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)` - attention_mask (`torch.FloatTensor`): attention mask of size - `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. - encoder_hidden_states (`torch.FloatTensor`): - cross attention input to the layer of shape `(batch, seq_len, embed_dim)` - encoder_attention_mask (`torch.FloatTensor`): encoder attention mask of size - `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. - layer_head_mask (`torch.FloatTensor`): mask for attention heads in a given layer of size - `(encoder_attention_heads,)`. - cross_attn_layer_head_mask (`torch.FloatTensor`): mask for cross-attention heads in a given layer of - size `(decoder_attention_heads,)`. - past_key_value (`Tuple(torch.FloatTensor)`): cached past key and value projection states - output_attentions (`bool`, *optional*): - Whether or not to return the attentions tensors of all attention layers. See `attentions` under - returned tensors for more detail. - """ - adjust_tensors_for_parallel_(hidden_states, attention_mask, encoder_attention_mask) - - residual = hidden_states - - # Self Attention - # decoder uni-directional self-attention cached key/values tuple is at positions 1,2 - self_attn_past_key_value = past_key_value[:2] if past_key_value is not None else None - # add present self-attn cache to positions 1,2 of present_key_value tuple - hidden_states, self_attn_weights, present_key_value = self.self_attn( - hidden_states=hidden_states, - past_key_value=self_attn_past_key_value, - attention_mask=attention_mask, - layer_head_mask=layer_head_mask, - output_attentions=output_attentions, - ) - hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) - hidden_states = self.attention_adapters(hidden_states, residual, self.self_attn_layer_norm) - - # Cross-Attention Block - cross_attn_present_key_value = None - cross_attn_weights = None - if encoder_hidden_states is not None: - residual = hidden_states - - # cross_attn cached key/values tuple is at positions 3,4 of present_key_value tuple - cross_attn_past_key_value = past_key_value[-2:] if past_key_value is not None else None - hidden_states, cross_attn_weights, cross_attn_present_key_value = self.encoder_attn( - hidden_states=hidden_states, - key_value_states=encoder_hidden_states, - attention_mask=encoder_attention_mask, - layer_head_mask=cross_attn_layer_head_mask, - past_key_value=cross_attn_past_key_value, - output_attentions=output_attentions, - ) - hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) - hidden_states = self.cross_attention_adapters(hidden_states, residual, self.encoder_attn_layer_norm) - - # add cross-attn to positions 3,4 of present_key_value tuple - present_key_value = present_key_value + cross_attn_present_key_value - - # Fully Connected - residual = hidden_states - hidden_states = self.activation_fn(self.fc1(hidden_states)) - hidden_states = nn.functional.dropout(hidden_states, p=self.activation_dropout, training=self.training) - hidden_states = self.fc2(hidden_states) - hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) - hidden_states = self.output_adapters(hidden_states, residual, self.final_layer_norm) - - outputs = (hidden_states,) - - if output_attentions: - outputs += (self_attn_weights, cross_attn_weights) - - if use_cache: - outputs += (present_key_value,) - - return outputs diff --git a/adapters/src/adapters/models/beit/__init__.py b/adapters/src/adapters/models/beit/__init__.py deleted file mode 100644 index f04f7388..00000000 --- a/adapters/src/adapters/models/beit/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["BeitAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import BeitAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/beit/adapter_model.py b/adapters/src/adapters/models/beit/adapter_model.py deleted file mode 100644 index 5667fa09..00000000 --- a/adapters/src/adapters/models/beit/adapter_model.py +++ /dev/null @@ -1,89 +0,0 @@ -from typing import Optional - -import torch - -from transformers.models.beit.modeling_beit import ( - BEIT_INPUTS_DOCSTRING, - BEIT_START_DOCSTRING, - BeitModel, - BeitPreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...wrappers import init - - -@add_start_docstrings( - """Beit Model transformer with the option to add multiple flexible heads on top.""", - BEIT_START_DOCSTRING, -) -class BeitAdapterModel(ModelWithFlexibleHeadsAdaptersMixin, BeitPreTrainedModel): - head_types = [ - "image_classification", - ] - use_pooler = True - - def __init__(self, config): - super().__init__(config) - - self.beit = BeitModel(config) - init(self.beit) - - self._init_head_modules() - - # Initialize weights and apply final processing - self.post_init() - - @add_start_docstrings_to_model_forward(BEIT_INPUTS_DOCSTRING) - def forward( - self, - pixel_values: Optional[torch.Tensor] = None, - bool_masked_pos: Optional[torch.BoolTensor] = None, - head_mask: Optional[torch.Tensor] = None, - output_attentions: Optional[bool] = None, - output_hidden_states: Optional[bool] = None, - return_dict: Optional[bool] = None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs, - ): - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.beit( - pixel_values, - bool_masked_pos=bool_masked_pos, - head_mask=head_mask, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - - # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads - if not return_dict: - head_inputs = (outputs[0],) + outputs[2:] - else: - head_inputs = outputs - pooled_output = outputs[1] - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - head_inputs, - cls_output=pooled_output, # BEiT does classification based on average-pooling of last hidden state - head_name=head, - return_dict=return_dict, - pooled_output=pooled_output, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs diff --git a/adapters/src/adapters/models/beit/mixin_beit.py b/adapters/src/adapters/models/beit/mixin_beit.py deleted file mode 100644 index d4490a33..00000000 --- a/adapters/src/adapters/models/beit/mixin_beit.py +++ /dev/null @@ -1,61 +0,0 @@ -from typing import Iterable, Tuple - -import torch.nn as nn - -from ...methods.bottleneck import BottleneckLayer -from ...methods.lora import LoRALinear -from ...methods.prefix_tuning import PrefixTuningLayer -from ...model_mixin import ModelBaseAdaptersMixin - - -class BeitSelfAttentionAdaptersMixin: - def init_adapters(self, model_config, adapters_config): - self.location_key = "self" - - # Wrap layers for LoRA - self.query = LoRALinear.wrap(self.query, "selfattn", model_config, adapters_config, attn_key="q") - self.key = LoRALinear.wrap(self.key, "selfattn", model_config, adapters_config, attn_key="k") - self.value = LoRALinear.wrap(self.value, "selfattn", model_config, adapters_config, attn_key="v") - - self.prefix_tuning = PrefixTuningLayer( - self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config - ) - - -class BeitIntermediateAdaptersMixin: - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.dense = LoRALinear.wrap(self.dense, "intermediate", model_config, adapters_config) - - -class BeitOutputAdaptersMixin: - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.dense = LoRALinear.wrap(self.dense, "output", model_config, adapters_config) - - -class BeitLayerAdaptersMixin: - """Adds adapters to the BeitLayer module.""" - - def init_adapters(self, model_config, adapters_config): - self.attention_adapters = BottleneckLayer("mh_adapter") - self.output_adapters = BottleneckLayer("output_adapter") - - -class BeitModelAdaptersMixin(ModelBaseAdaptersMixin): - """Adds adapters to the BeitModel module.""" - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - self.embeddings.register_forward_hook(self.post_embedding_forward) - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.encoder.layer): - yield i, layer - - def set_input_embeddings(self, value): - self.embeddings.patch_embeddings = value - - def post_embedding_forward(self, module, args, outputs): - embedding_output, tup = outputs - return super().post_embedding_forward(module, args, embedding_output), tup diff --git a/adapters/src/adapters/models/beit/modeling_beit.py b/adapters/src/adapters/models/beit/modeling_beit.py deleted file mode 100644 index 1ed5082b..00000000 --- a/adapters/src/adapters/models/beit/modeling_beit.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding=utf-8 -# Copyright 2021 Microsoft Research and The HuggingFace Inc. team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" PyTorch BEiT model.""" - - -import math -from typing import Optional, Tuple, Union - -import torch -import torch.utils.checkpoint -from torch import nn - -from transformers.models.beit.modeling_beit import BeitLayer, BeitRelativePositionBias, BeitSelfAttention - -from .mixin_beit import BeitLayerAdaptersMixin, BeitSelfAttentionAdaptersMixin - - -class BeitSelfAttentionWithAdapters(BeitSelfAttentionAdaptersMixin, BeitSelfAttention): - def forward( - self, - hidden_states: torch.Tensor, - head_mask: Optional[torch.Tensor] = None, - output_attentions: bool = False, - relative_position_bias: Optional[BeitRelativePositionBias] = None, - ) -> Union[Tuple[torch.Tensor], Tuple[torch.Tensor, torch.Tensor]]: - mixed_query_layer = self.query(hidden_states) - - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - query_layer = self.transpose_for_scores(mixed_query_layer) - - key_layer, value_layer, _ = self.prefix_tuning(key_layer, value_layer, hidden_states) - - # Take the dot product between "query" and "key" to get the raw attention scores. - attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) - - attention_scores = attention_scores / math.sqrt(self.attention_head_size) - - # Add relative position bias if present. - if self.relative_position_bias is not None: - attention_scores = attention_scores + self.relative_position_bias().unsqueeze(0) - - # Add shared relative position bias if provided. - if relative_position_bias is not None: - attention_scores = attention_scores + relative_position_bias - - # Normalize the attention scores to probabilities. - attention_probs = nn.functional.softmax(attention_scores, dim=-1) - - # This is actually dropping out entire tokens to attend to, which might - # seem a bit unusual, but is taken from the original Transformer paper. - attention_probs = self.dropout(attention_probs) - - # Mask heads if we want to - if head_mask is not None: - attention_probs = attention_probs * head_mask - - context_layer = torch.matmul(attention_probs, value_layer) - - context_layer = context_layer.permute(0, 2, 1, 3).contiguous() - new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) - context_layer = context_layer.view(*new_context_layer_shape) - - outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) - - return outputs - - -class BeitLayerWithAdapters(BeitLayerAdaptersMixin, BeitLayer): - """This corresponds to the Block class in the timm implementation.""" - - def forward( - self, - hidden_states: torch.Tensor, - head_mask: Optional[torch.Tensor] = None, - output_attentions: bool = False, - relative_position_bias: Optional[BeitRelativePositionBias] = None, - ) -> Union[Tuple[torch.Tensor], Tuple[torch.Tensor, torch.Tensor]]: - self_attention_outputs = self.attention( - self.layernorm_before(hidden_states), # in BEiT, layernorm is applied before self-attention - head_mask, - output_attentions=output_attentions, - relative_position_bias=relative_position_bias, - ) - attention_output = self_attention_outputs[0] - outputs = self_attention_outputs[1:] # add self attentions if we output attention weights - - # apply lambda_1 if present - if self.lambda_1 is not None: - attention_output = self.lambda_1 * attention_output - - # first residual connection - hidden_states = self.attention_adapters.bottleneck_layer_forward( - self.drop_path(attention_output), hidden_states, None - ) - - # in BEiT, layernorm is also applied after self-attention - layer_output = self.layernorm_after(hidden_states) - - layer_output = self.intermediate(layer_output) - layer_output = self.output(layer_output) - - if self.lambda_2 is not None: - layer_output = self.lambda_2 * layer_output - - # second residual connection - layer_output = self.output_adapters.bottleneck_layer_forward(self.drop_path(layer_output), hidden_states, None) - - outputs = (layer_output,) + outputs - - return outputs diff --git a/adapters/src/adapters/models/bert/__init__.py b/adapters/src/adapters/models/bert/__init__.py deleted file mode 100644 index ed816cb0..00000000 --- a/adapters/src/adapters/models/bert/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["BertAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import BertAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/bert/adapter_model.py b/adapters/src/adapters/models/bert/adapter_model.py deleted file mode 100644 index 0b8e1894..00000000 --- a/adapters/src/adapters/models/bert/adapter_model.py +++ /dev/null @@ -1,125 +0,0 @@ -from transformers.models.bert.modeling_bert import ( - BERT_INPUTS_DOCSTRING, - BERT_START_DOCSTRING, - BertModel, - BertPreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - """Bert Model transformer with the option to add multiple flexible heads on top.""", - BERT_START_DOCSTRING, -) -class BertAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, BertPreTrainedModel): - - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "multiple_choice", - "question_answering", - "dependency_parsing", - "masked_lm", - "causal_lm", - ] - - def __init__(self, config): - super().__init__(config) - - self.bert = BertModel(config) - init(self.bert) - - self._init_head_modules() - - self.init_weights() - - @add_start_docstrings_to_model_forward(BERT_INPUTS_DOCSTRING.format("batch_size, sequence_length")) - def forward( - self, - input_ids=None, - attention_mask=None, - token_type_ids=None, - position_ids=None, - head_mask=None, - inputs_embeds=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None - attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None - token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None - position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None - inputs_embeds = ( - inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) - if inputs_embeds is not None - else None - ) - - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.bert( - input_ids, - attention_mask=attention_mask, - token_type_ids=token_type_ids, - position_ids=position_ids, - head_mask=head_mask, - inputs_embeds=inputs_embeds, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads - if not return_dict: - head_inputs = (outputs[0],) + outputs[2:] - else: - head_inputs = outputs - pooled_output = outputs[1] - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - head_inputs, - head_name=head, - attention_mask=attention_mask, - return_dict=return_dict, - pooled_output=pooled_output, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs - - # Copied from BertLMHeadModel - def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): - input_shape = input_ids.shape - # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly - if attention_mask is None: - attention_mask = input_ids.new_ones(input_shape) - - # cut decoder_input_ids if past is used - if past is not None: - input_ids = input_ids[:, -1:] - - return { - "input_ids": input_ids, - "attention_mask": attention_mask, - "past_key_values": past, - "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), - } diff --git a/adapters/src/adapters/models/bert/mixin_bert.py b/adapters/src/adapters/models/bert/mixin_bert.py deleted file mode 100644 index 4aa07924..00000000 --- a/adapters/src/adapters/models/bert/mixin_bert.py +++ /dev/null @@ -1,92 +0,0 @@ -import logging -from typing import Iterable, Tuple - -import torch.nn as nn - -from ...composition import adjust_tensors_for_parallel_ -from ...methods.bottleneck import BottleneckLayer -from ...methods.lora import LoRALinear -from ...methods.prefix_tuning import PrefixTuningLayer -from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin - - -logger = logging.getLogger(__name__) - - -class BertSelfAttentionAdaptersMixin: - """Adds adapters to the BertSelfAttention module.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.query = LoRALinear.wrap(self.query, "selfattn", model_config, adapters_config, attn_key="q") - self.key = LoRALinear.wrap(self.key, "selfattn", model_config, adapters_config, attn_key="k") - self.value = LoRALinear.wrap(self.value, "selfattn", model_config, adapters_config, attn_key="v") - - self.prefix_tuning = PrefixTuningLayer( - self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config - ) - - -# For backwards compatibility, BertSelfOutput inherits directly from BottleneckLayer -class BertSelfOutputAdaptersMixin(BottleneckLayer): - """Adds adapters to the BertSelfOutput module.""" - - def __init__(self): - super().__init__("mh_adapter") - - def init_adapters(self, model_config, adapters_config): - self.location_key = "mh_adapter" - super().init_adapters(model_config, adapters_config) - - -# For backwards compatibility, BertOutput inherits directly from BottleneckLayer -class BertOutputAdaptersMixin(BottleneckLayer): - """Adds adapters to the BertOutput module.""" - - def __init__(self): - super().__init__("output_adapter") - - def init_adapters(self, model_config, adapters_config): - self.location_key = "output_adapter" - super().init_adapters(model_config, adapters_config) - - -class BertLayerAdaptersMixin: - """Adds adapters to the BertLayer module.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.intermediate.dense = LoRALinear.wrap( - self.intermediate.dense, "intermediate", model_config, adapters_config - ) - self.output.dense = LoRALinear.wrap(self.output.dense, "output", model_config, adapters_config) - - # Set location keys for prefix tuning - self.attention.self.location_key = "self" - if hasattr(self, "add_cross_attention") and self.add_cross_attention: - self.crossattention.self.location_key = "cross" - - -class BertModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): - """Adds adapters to the BertModel module.""" - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - - # Set hook for parallel composition - for _, layer in self.iter_layers(): - self._set_layer_hook_for_parallel(layer) - - # Register hook for post embedding forward - self.embeddings.register_forward_hook(self.post_embedding_forward) - - def _set_layer_hook_for_parallel(self, layer: nn.Module): - def hook(module, input): - adjust_tensors_for_parallel_(input[0], input[1]) - return input - - layer.register_forward_pre_hook(hook) - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.encoder.layer): - yield i, layer diff --git a/adapters/src/adapters/models/bert/modeling_bert.py b/adapters/src/adapters/models/bert/modeling_bert.py deleted file mode 100644 index ea60b6f5..00000000 --- a/adapters/src/adapters/models/bert/modeling_bert.py +++ /dev/null @@ -1,158 +0,0 @@ -# coding=utf-8 -# Copyright 2018 The Google AI Language Team Authors and The HuggingFace Inc. team. -# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""PyTorch BERT model.""" - - -import math -from typing import Optional, Tuple - -import torch -import torch.utils.checkpoint -from torch import nn - -from transformers.models.bert.modeling_bert import BertOutput, BertSelfAttention, BertSelfOutput - -from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from ...utils import prefix_attention_mask -from .mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin - - -class BertSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, BertSelfAttention): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.FloatTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - encoder_hidden_states: Optional[torch.FloatTensor] = None, - encoder_attention_mask: Optional[torch.FloatTensor] = None, - past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, - output_attentions: Optional[bool] = False, - ) -> Tuple[torch.Tensor]: - attention_mask = prefix_attention_mask(attention_mask) # type: ignore - - mixed_query_layer = self.query(hidden_states) - - # If this is instantiated as a cross-attention module, the keys - # and values come from an encoder; the attention mask needs to be - # such that the encoder's padding tokens are not attended to. - is_cross_attention = encoder_hidden_states is not None - - if is_cross_attention and past_key_value is not None: - # reuse k,v, cross_attentions - key_layer = past_key_value[0] - value_layer = past_key_value[1] - attention_mask = encoder_attention_mask - elif is_cross_attention: - key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) - value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) - attention_mask = encoder_attention_mask - elif past_key_value is not None: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - key_layer = torch.cat([past_key_value[0], key_layer], dim=2) - value_layer = torch.cat([past_key_value[1], value_layer], dim=2) - else: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - - query_layer = self.transpose_for_scores(mixed_query_layer) - query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) - (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) - - use_cache = past_key_value is not None - if self.is_decoder: - # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. - # Further calls to cross_attention layer can then reuse all cross-attention - # key/value_states (first "if" case) - # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of - # all previous decoder key/value_states. Further calls to uni-directional self-attention - # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) - # if encoder bi-directional self-attention `past_key_value` is always `None` - past_key_value = (key_layer, value_layer) - - key_layer, value_layer, attention_mask = self.prefix_tuning( - key_layer, value_layer, hidden_states, attention_mask - ) - (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) - - # Take the dot product between "query" and "key" to get the raw attention scores. - attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) - - if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": - query_length, key_length = query_layer.shape[2], key_layer.shape[2] - if use_cache: - position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( - -1, 1 - ) - else: - position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) - position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) - distance = position_ids_l - position_ids_r - - positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) - positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility - - if self.position_embedding_type == "relative_key": - relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores - elif self.position_embedding_type == "relative_key_query": - relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key - - attention_scores = attention_scores / math.sqrt(self.attention_head_size) - if attention_mask is not None: - # Apply the attention mask is (precomputed for all layers in BertModel forward() function) - attention_scores = attention_scores + attention_mask - - # Normalize the attention scores to probabilities. - attention_probs = nn.functional.softmax(attention_scores, dim=-1) - - # This is actually dropping out entire tokens to attend to, which might - # seem a bit unusual, but is taken from the original Transformer paper. - attention_probs = self.dropout(attention_probs) - - # Mask heads if we want to - if head_mask is not None: - attention_probs = attention_probs * head_mask - - context_layer = torch.matmul(attention_probs, value_layer) - - context_layer = context_layer.permute(0, 2, 1, 3).contiguous() - new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) - context_layer = context_layer.view(new_context_layer_shape) - - outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) - - if self.is_decoder: - outputs = outputs + (past_key_value,) - return outputs - - -class BertSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, BertSelfOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states - - -class BertOutputWithAdapters(BertOutputAdaptersMixin, BertOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states diff --git a/adapters/src/adapters/models/bert_generation/__init__.py b/adapters/src/adapters/models/bert_generation/__init__.py deleted file mode 100644 index 083b755b..00000000 --- a/adapters/src/adapters/models/bert_generation/__init__.py +++ /dev/null @@ -1,51 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["BertGenerationAdapterModel"], - "modeling_bert_generation": [ - "BertGenerationDecoder", - "BertGenerationEncoder", - "BertGenerationPreTrainedModel", - "load_tf_weights_in_bert_generation", - ], -} - - -if TYPE_CHECKING: - from .adapter_model import BertGenerationAdapterModel - from .modeling_bert_generation import ( - BertGenerationDecoder, - BertGenerationEncoder, - BertGenerationPreTrainedModel, - load_tf_weights_in_bert_generation, - ) - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/bert_generation/adapter_model.py b/adapters/src/adapters/models/bert_generation/adapter_model.py deleted file mode 100644 index 072c1b09..00000000 --- a/adapters/src/adapters/models/bert_generation/adapter_model.py +++ /dev/null @@ -1,125 +0,0 @@ -from transformers.models.bert_generation.modeling_bert_generation import ( - BERT_GENERATION_INPUTS_DOCSTRING, - BERT_GENERATION_START_DOCSTRING, - BertGenerationEncoder, - BertGenerationPreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - """Bert Model transformer with the option to add multiple flexible heads on top.""", - BERT_GENERATION_START_DOCSTRING, -) -class BertGenerationAdapterModel( - EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, BertGenerationPreTrainedModel -): - _keys_to_ignore_on_load_unexpected = [r"lm_head.bias"] - - head_types = [ - "masked_lm", - "causal_lm", - ] - - def __init__(self, config): - super().__init__(config) - - self.bert = BertGenerationEncoder(config) - init(self.bert) - - self._init_head_modules() - - self.init_weights() - - @add_start_docstrings_to_model_forward(BERT_GENERATION_INPUTS_DOCSTRING.format("batch_size, sequence_length")) - def forward( - self, - input_ids=None, - attention_mask=None, - position_ids=None, - head_mask=None, - inputs_embeds=None, - encoder_hidden_states=None, - encoder_attention_mask=None, - past_key_values=None, - use_cache=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None - attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None - position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None - inputs_embeds = ( - inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) - if inputs_embeds is not None - else None - ) - - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.bert( - input_ids, - attention_mask=attention_mask, - position_ids=position_ids, - head_mask=head_mask, - inputs_embeds=inputs_embeds, - encoder_hidden_states=encoder_hidden_states, - encoder_attention_mask=encoder_attention_mask, - past_key_values=past_key_values, - use_cache=use_cache, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads - if not return_dict: - head_inputs = (outputs[0],) + outputs[2:] - else: - head_inputs = outputs - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - head_inputs, - head_name=head, - attention_mask=attention_mask, - return_dict=return_dict, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs - - # Copied from BertLMHeadModel - def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): - input_shape = input_ids.shape - # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly - if attention_mask is None: - attention_mask = input_ids.new_ones(input_shape) - - # cut decoder_input_ids if past is used - if past is not None: - input_ids = input_ids[:, -1:] - - return { - "input_ids": input_ids, - "attention_mask": attention_mask, - "past_key_values": past, - "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), - } diff --git a/adapters/src/adapters/models/bert_generation/modeling_bert_generation.py b/adapters/src/adapters/models/bert_generation/modeling_bert_generation.py deleted file mode 100644 index f0ef9a35..00000000 --- a/adapters/src/adapters/models/bert_generation/modeling_bert_generation.py +++ /dev/null @@ -1,162 +0,0 @@ -# coding=utf-8 -# Copyright 2020 The Google AI Language Team Authors and The HuggingFace Inc. team. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""PyTorch BERT model specific for generation.""" - -import math -from typing import Optional, Tuple - -import torch -import torch.utils.checkpoint -from torch import nn - -from transformers.models.bert_generation.modeling_bert_generation import ( - BertGenerationOutput, - BertGenerationSelfAttention, - BertGenerationSelfOutput, -) - -from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from ...utils import prefix_attention_mask -from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin - - -# Copied from transformers.models.bert.modeling_bert.BertSelfOutput with Bert->BertGeneration -class BertGenerationSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, BertGenerationSelfOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states - - -# Copied from transformers.models.bert.modeling_bert.BertSelfAttention with Bert->BertGeneration -class BertGenerationSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, BertGenerationSelfAttention): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.FloatTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - encoder_hidden_states: Optional[torch.FloatTensor] = None, - encoder_attention_mask: Optional[torch.FloatTensor] = None, - past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, - output_attentions: Optional[bool] = False, - ) -> Tuple[torch.Tensor]: - attention_mask = prefix_attention_mask(attention_mask) # type: ignore - - mixed_query_layer = self.query(hidden_states) - - # If this is instantiated as a cross-attention module, the keys - # and values come from an encoder; the attention mask needs to be - # such that the encoder's padding tokens are not attended to. - is_cross_attention = encoder_hidden_states is not None - - if is_cross_attention and past_key_value is not None: - # reuse k,v, cross_attentions - key_layer = past_key_value[0] - value_layer = past_key_value[1] - attention_mask = encoder_attention_mask - elif is_cross_attention: - key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) - value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) - attention_mask = encoder_attention_mask - elif past_key_value is not None: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - key_layer = torch.cat([past_key_value[0], key_layer], dim=2) - value_layer = torch.cat([past_key_value[1], value_layer], dim=2) - else: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - - query_layer = self.transpose_for_scores(mixed_query_layer) - query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) - (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) - - use_cache = past_key_value is not None - if self.is_decoder: - # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. - # Further calls to cross_attention layer can then reuse all cross-attention - # key/value_states (first "if" case) - # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of - # all previous decoder key/value_states. Further calls to uni-directional self-attention - # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) - # if encoder bi-directional self-attention `past_key_value` is always `None` - past_key_value = (key_layer, value_layer) - key_layer, value_layer, attention_mask = self.prefix_tuning( - key_layer, value_layer, hidden_states, attention_mask - ) - (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) - - # Take the dot product between "query" and "key" to get the raw attention scores. - attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) - - if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": - query_length, key_length = query_layer.shape[2], key_layer.shape[2] - if use_cache: - position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( - -1, 1 - ) - else: - position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) - position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) - distance = position_ids_l - position_ids_r - - positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) - positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility - - if self.position_embedding_type == "relative_key": - relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores - elif self.position_embedding_type == "relative_key_query": - relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key - - attention_scores = attention_scores / math.sqrt(self.attention_head_size) - if attention_mask is not None: - # Apply the attention mask is (precomputed for all layers in BertGenerationModel forward() function) - attention_scores = attention_scores + attention_mask - - # Normalize the attention scores to probabilities. - attention_probs = nn.functional.softmax(attention_scores, dim=-1) - - # This is actually dropping out entire tokens to attend to, which might - # seem a bit unusual, but is taken from the original Transformer paper. - attention_probs = self.dropout(attention_probs) - - # Mask heads if we want to - if head_mask is not None: - attention_probs = attention_probs * head_mask - - context_layer = torch.matmul(attention_probs, value_layer) - - context_layer = context_layer.permute(0, 2, 1, 3).contiguous() - new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) - context_layer = context_layer.view(new_context_layer_shape) - - outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) - - if self.is_decoder: - outputs = outputs + (past_key_value,) - return outputs - - -# Copied from transformers.models.bert.modeling_bert.BertOutput with Bert->BertGeneration -class BertGenerationOutputWithAdapters(BertOutputAdaptersMixin, BertGenerationOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states diff --git a/adapters/src/adapters/models/clip/__init__.py b/adapters/src/adapters/models/clip/__init__.py deleted file mode 100644 index 7675094c..00000000 --- a/adapters/src/adapters/models/clip/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["CLIPAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import CLIPAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/clip/adapter_model.py b/adapters/src/adapters/models/clip/adapter_model.py deleted file mode 100644 index 5aa15d41..00000000 --- a/adapters/src/adapters/models/clip/adapter_model.py +++ /dev/null @@ -1,77 +0,0 @@ -from typing import Optional - -import torch - -from transformers.models.clip.modeling_clip import ( - CLIP_INPUTS_DOCSTRING, - CLIP_START_DOCSTRING, - CLIPModel, - CLIPPreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings(CLIP_START_DOCSTRING) -class CLIPAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, CLIPPreTrainedModel): - _tied_weights_keys = [] # needs to be empty since CLIP does not yet support prompt tuning - - def __init__(self, config): - super().__init__(config) - - self.clip = CLIPModel(config) - init(self.clip) - - self._init_head_modules() - - self.post_init() - - @add_start_docstrings_to_model_forward(CLIP_INPUTS_DOCSTRING) - def forward( - self, - input_ids: Optional[torch.LongTensor] = None, - pixel_values: Optional[torch.FloatTensor] = None, - attention_mask: Optional[torch.Tensor] = None, - position_ids: Optional[torch.LongTensor] = None, - return_loss: Optional[bool] = None, - output_attentions: Optional[bool] = None, - output_hidden_states: Optional[bool] = None, - return_dict: Optional[bool] = None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - outputs, context = self.clip( - input_ids=input_ids, - pixel_values=pixel_values, - attention_mask=attention_mask, - position_ids=position_ids, - return_loss=return_loss, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - outputs, - head_name=head, - attention_mask=attention_mask, - return_dict=return_dict, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs diff --git a/adapters/src/adapters/models/clip/mixin_clip.py b/adapters/src/adapters/models/clip/mixin_clip.py deleted file mode 100644 index 020d88f5..00000000 --- a/adapters/src/adapters/models/clip/mixin_clip.py +++ /dev/null @@ -1,115 +0,0 @@ -from typing import Iterable, Tuple - -import torch.nn as nn - -from ...composition import adjust_tensors_for_parallel_ -from ...methods.bottleneck import BottleneckLayer -from ...methods.lora import LoRALinear -from ...methods.prefix_tuning import PrefixTuningLayer -from ...model_mixin import ( - EmbeddingAdaptersMixin, - EmbeddingAdaptersWrapperMixin, - InvertibleAdaptersMixin, - InvertibleAdaptersWrapperMixin, - ModelBaseAdaptersMixin, -) - - -class CLIPAttentionAdaptersMixin: - """Adds adapters to the CLIPAttention module.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.q_proj = LoRALinear.wrap(self.q_proj, "selfattn", model_config, adapters_config, attn_key="q") - self.k_proj = LoRALinear.wrap(self.k_proj, "selfattn", model_config, adapters_config, attn_key="k") - self.v_proj = LoRALinear.wrap(self.v_proj, "selfattn", model_config, adapters_config, attn_key="v") - - self.prefix_tuning = PrefixTuningLayer( - "self_prefix", model_config, adapters_config, add_model_type_to_key=True - ) - - -class CLIPEncoderLayerAdaptersMixin: - """Adds adapters to the CLIPEncoderLayer module of CLIP.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.mlp.fc1 = LoRALinear.wrap(self.mlp.fc1, "intermediate", model_config, adapters_config) - self.mlp.fc2 = LoRALinear.wrap(self.mlp.fc2, "output", model_config, adapters_config) - - self.attention_adapters = BottleneckLayer("mh_adapter") - self.output_adapters = BottleneckLayer("output_adapter") - - -class CLIPEncoderAdaptersMixin: - """Adds adapters to the CLIPEncoder module of CLIP.""" - - def init_adapters(self, model_config, adapters_config): - # Set hook for parallel composition - for layer in self.layers: - self._set_layer_hook_for_parallel(layer) - - def _set_layer_hook_for_parallel(self, layer: nn.Module): - def hook(module, input): - adjust_tensors_for_parallel_(input[0], input[1]) - return input - - layer.register_forward_pre_hook(hook) - - -class CLIPTextTransformerAdaptersMixin(InvertibleAdaptersMixin): - """Adds adapters to the CLIPTextTransformer module of CLIP.""" - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - - # Register hook for post embedding forward - self.embeddings.register_forward_hook(self.post_embedding_forward) - - def post_embedding_forward(self, module, args, embedding_output): - embedding_output = self.invertible_adapters_forward(embedding_output) - # Prompt tuning not yet supported - return embedding_output - - -class CLIPTextModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersWrapperMixin, ModelBaseAdaptersMixin): - """Adds adapters to the CLIPTextModel class.""" - - invertible_adapters_base_name = "text_model" - support_prompt_tuning = False - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.text_model.encoder.layers): - yield i, layer - - -class CLIPVisionModelAdaptersMixin(ModelBaseAdaptersMixin): - """Adds adapters to the a CLIPVisionModel class.""" - - support_prompt_tuning = False - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.vision_model.encoder.layers): - yield i, layer - - -class CLIPModelAdaptersMixin(EmbeddingAdaptersWrapperMixin, InvertibleAdaptersWrapperMixin, ModelBaseAdaptersMixin): - """Adds adapters to the CLIPModel class.""" - - invertible_adapters_base_name = "text_model" - support_prompt_tuning = False - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.text_model.encoder.layers): - yield i, layer - for i, layer in enumerate(self.vision_model.encoder.layers, start=len(self.text_model.encoder.layers)): - yield i, layer - - def _init_adapters_submodules(self, model_config, adapters_config): - # Initialize adapters in text and vision model separately - for module in self.text_model.modules(): - if hasattr(module, "init_adapters"): - module.init_adapters(model_config.text_config, adapters_config) - for module in self.vision_model.modules(): - if hasattr(module, "init_adapters"): - module.init_adapters(model_config.vision_config, adapters_config) diff --git a/adapters/src/adapters/models/clip/modeling_clip.py b/adapters/src/adapters/models/clip/modeling_clip.py deleted file mode 100644 index a67491dc..00000000 --- a/adapters/src/adapters/models/clip/modeling_clip.py +++ /dev/null @@ -1,157 +0,0 @@ -# coding=utf-8 -# Copyright 2021 The OpenAI Team Authors and The HuggingFace Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" PyTorch CLIP model.""" - - -from typing import Optional, Tuple - -import torch -import torch.utils.checkpoint -from torch import nn - -from transformers.models.clip.modeling_clip import CLIPAttention, CLIPEncoderLayer - -from .mixin_clip import CLIPAttentionAdaptersMixin, CLIPEncoderLayerAdaptersMixin - - -class CLIPAttentionWithAdapters(CLIPAttentionAdaptersMixin, CLIPAttention): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.Tensor] = None, - causal_attention_mask: Optional[torch.Tensor] = None, - output_attentions: Optional[bool] = False, - ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: - """Input shape: Batch x Time x Channel""" - - bsz, tgt_len, embed_dim = hidden_states.size() - - # get query proj - query_states = self.q_proj(hidden_states) * self.scale - key_states = self._shape(self.k_proj(hidden_states), -1, bsz) - value_states = self._shape(self.v_proj(hidden_states), -1, bsz) - - proj_shape = (bsz * self.num_heads, -1, self.head_dim) - query_states = self._shape(query_states, tgt_len, bsz).view(*proj_shape) - - key_states, value_states, attention_mask = self.prefix_tuning( - key_states, value_states, hidden_states, attention_mask - ) - - key_states = key_states.view(*proj_shape) - value_states = value_states.view(*proj_shape) - - src_len = key_states.size(1) - attn_weights = torch.bmm(query_states, key_states.transpose(1, 2)) - - if attn_weights.size() != (bsz * self.num_heads, tgt_len, src_len): - raise ValueError( - f"Attention weights should be of size {(bsz * self.num_heads, tgt_len, src_len)}, but is" - f" {attn_weights.size()}" - ) - - # apply the causal_attention_mask first - if causal_attention_mask is not None: - prefix_mask = torch.ones( - bsz, 1, causal_attention_mask.size(2), src_len - causal_attention_mask.size(-1) - ).to(causal_attention_mask.device) - causal_attention_mask = torch.cat([prefix_mask, causal_attention_mask], dim=-1) - if causal_attention_mask.size() != (bsz, 1, tgt_len, src_len): - raise ValueError( - f"Attention mask should be of size {(bsz, 1, tgt_len, src_len)}, but is" - f" {causal_attention_mask.size()}" - ) - attn_weights = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + causal_attention_mask - attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) - - if attention_mask is not None: - if attention_mask.size() != (bsz, 1, tgt_len, src_len): - raise ValueError( - f"Attention mask should be of size {(bsz, 1, tgt_len, src_len)}, but is {attention_mask.size()}" - ) - attn_weights = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + attention_mask - attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) - - attn_weights = nn.functional.softmax(attn_weights, dim=-1) - - if output_attentions: - # this operation is a bit akward, but it's required to - # make sure that attn_weights keeps its gradient. - # In order to do so, attn_weights have to reshaped - # twice and have to be reused in the following - attn_weights_reshaped = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) - attn_weights = attn_weights_reshaped.view(bsz * self.num_heads, tgt_len, src_len) - else: - attn_weights_reshaped = None - - attn_probs = nn.functional.dropout(attn_weights, p=self.dropout, training=self.training) - - attn_output = torch.bmm(attn_probs, value_states) - - if attn_output.size() != (bsz * self.num_heads, tgt_len, self.head_dim): - raise ValueError( - f"`attn_output` should be of size {(bsz, self.num_heads, tgt_len, self.head_dim)}, but is" - f" {attn_output.size()}" - ) - - attn_output = attn_output.view(bsz, self.num_heads, tgt_len, self.head_dim) - attn_output = attn_output.transpose(1, 2) - attn_output = attn_output.reshape(bsz, tgt_len, embed_dim) - - attn_output = self.out_proj(attn_output) - - return attn_output, attn_weights_reshaped - - -class CLIPEncoderLayerWithAdapters(CLIPEncoderLayerAdaptersMixin, CLIPEncoderLayer): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: torch.Tensor, - causal_attention_mask: torch.Tensor, - output_attentions: Optional[bool] = False, - ) -> Tuple[torch.FloatTensor]: - """ - Args: - hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)` - attention_mask (`torch.FloatTensor`): attention mask of size - `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. - `(config.encoder_attention_heads,)`. - output_attentions (`bool`, *optional*): - Whether or not to return the attentions tensors of all attention layers. See `attentions` under - returned tensors for more detail. - """ - residual = hidden_states - - hidden_states = self.layer_norm1(hidden_states) - hidden_states, attn_weights = self.self_attn( - hidden_states=hidden_states, - attention_mask=attention_mask, - causal_attention_mask=causal_attention_mask, - output_attentions=output_attentions, - ) - hidden_states = self.attention_adapters(hidden_states, residual, layer_norm=None) - - residual = hidden_states - hidden_states = self.layer_norm2(hidden_states) - hidden_states = self.mlp(hidden_states) - hidden_states = self.output_adapters(hidden_states, residual, layer_norm=None) - - outputs = (hidden_states,) - - if output_attentions: - outputs += (attn_weights,) - - return outputs diff --git a/adapters/src/adapters/models/deberta/__init__.py b/adapters/src/adapters/models/deberta/__init__.py deleted file mode 100644 index d72e9aa3..00000000 --- a/adapters/src/adapters/models/deberta/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["DebertaAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import DebertaAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/deberta/adapter_model.py b/adapters/src/adapters/models/deberta/adapter_model.py deleted file mode 100644 index 32ec9cd4..00000000 --- a/adapters/src/adapters/models/deberta/adapter_model.py +++ /dev/null @@ -1,97 +0,0 @@ -from transformers.file_utils import add_start_docstrings -from transformers.models.deberta.modeling_deberta import DebertaModel, DebertaPreTrainedModel - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - """Deberta Model transformer with the option to add multiple flexible heads on top.""", -) -class DebertaAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, DebertaPreTrainedModel): - _keys_to_ignore_on_load_unexpected = [r"cls.predictions.bias"] - - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "question_answering", - "multiple_choice", - "masked_lm", - ] - - def __init__(self, config): - super().__init__(config) - - self.deberta = DebertaModel(config) - init(self.deberta) - - self._init_head_modules() - - self.init_weights() - - def forward( - self, - input_ids=None, - attention_mask=None, - token_type_ids=None, - position_ids=None, - inputs_embeds=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None - position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None - token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None - attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None - inputs_embeds = ( - inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) - if inputs_embeds is not None - else None - ) - - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.deberta( - input_ids, - attention_mask=attention_mask, - token_type_ids=token_type_ids, - position_ids=position_ids, - inputs_embeds=inputs_embeds, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads - if not return_dict: - head_inputs = (outputs[0],) + outputs[2:] - else: - head_inputs = outputs - pooled_output = outputs[0] - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - head_inputs, - head_name=head, - attention_mask=attention_mask, - return_dict=return_dict, - pooled_output=pooled_output, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs diff --git a/adapters/src/adapters/models/deberta/mixin_deberta.py b/adapters/src/adapters/models/deberta/mixin_deberta.py deleted file mode 100644 index d9907de3..00000000 --- a/adapters/src/adapters/models/deberta/mixin_deberta.py +++ /dev/null @@ -1,14 +0,0 @@ -from ...methods.lora import LoRAMergedLinear -from ...methods.prefix_tuning import PrefixTuningLayer - - -class DebertaSelfAttentionAdaptersMixin: - """Adds adapters to the BertSelfAttention module.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.in_proj = LoRAMergedLinear.wrap(self.in_proj, "selfattn", model_config, adapters_config) - - self.prefix_tuning = PrefixTuningLayer( - self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config - ) diff --git a/adapters/src/adapters/models/deberta/modeling_deberta.py b/adapters/src/adapters/models/deberta/modeling_deberta.py deleted file mode 100644 index 1feca72b..00000000 --- a/adapters/src/adapters/models/deberta/modeling_deberta.py +++ /dev/null @@ -1,165 +0,0 @@ -# coding=utf-8 -# Copyright 2020 Microsoft and the Hugging Face Inc. team. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" PyTorch DeBERTa model.""" - -import torch -import torch.utils.checkpoint - -from transformers.models.deberta.modeling_deberta import ( - DebertaOutput, - DebertaSelfOutput, - DisentangledSelfAttention, - XSoftmax, -) - -from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from ...utils import prefix_attention_mask -from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfOutputAdaptersMixin -from .mixin_deberta import DebertaSelfAttentionAdaptersMixin - - -class DebertaSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, DebertaSelfOutput): - def forward(self, hidden_states, input_tensor): - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states - - -class DebertaOutputWithAdapters(BertOutputAdaptersMixin, DebertaOutput): - def forward(self, hidden_states, input_tensor): - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states - - -class DisentangledSelfAttentionWithAdapters(DebertaSelfAttentionAdaptersMixin, DisentangledSelfAttention): - """ - Disentangled self-attention module - - Parameters: - config (`str`): - A model config class instance with the configuration to build a new model. The schema is similar to - *BertConfig*, for more details, please refer [`DebertaConfig`] - - """ - - def forward( - self, - hidden_states, - attention_mask, - output_attentions=False, - query_states=None, - relative_pos=None, - rel_embeddings=None, - ): - """ - Call the module - - Args: - hidden_states (`torch.FloatTensor`): - Input states to the module usually the output from previous layer, it will be the Q,K and V in - *Attention(Q,K,V)* - - attention_mask (`torch.ByteTensor`): - An attention mask matrix of shape [*B*, *N*, *N*] where *B* is the batch size, *N* is the maximum - sequence length in which element [i,j] = *1* means the *i* th token in the input can attend to the *j* - th token. - - output_attentions (`bool`, optional): - Whether return the attention matrix. - - query_states (`torch.FloatTensor`, optional): - The *Q* state in *Attention(Q,K,V)*. - - relative_pos (`torch.LongTensor`): - The relative position encoding between the tokens in the sequence. It's of shape [*B*, *N*, *N*] with - values ranging in [*-max_relative_positions*, *max_relative_positions*]. - - rel_embeddings (`torch.FloatTensor`): - The embedding of relative distances. It's a tensor of shape [\\(2 \\times - \\text{max_relative_positions}\\), *hidden_size*]. - - - """ - attention_mask = prefix_attention_mask(attention_mask, dim=3, prefix_value=1) # type: ignore - attention_mask = prefix_attention_mask(attention_mask, dim=2, prefix_value=1) # type: ignore - - if query_states is None: - qp = self.in_proj(hidden_states) # .split(self.all_head_size, dim=-1) - query_layer, key_layer, value_layer = self.transpose_for_scores(qp).chunk(3, dim=-1) - else: - - def linear(w, b, x): - if b is not None: - return torch.matmul(x, w.t()) + b.t() - else: - return torch.matmul(x, w.t()) # + b.t() - - ws = self.in_proj.weight.chunk(self.num_attention_heads * 3, dim=0) - qkvw = [torch.cat([ws[i * 3 + k] for i in range(self.num_attention_heads)], dim=0) for k in range(3)] - qkvb = [None] * 3 - - q = linear(qkvw[0], qkvb[0], query_states.to(dtype=qkvw[0].dtype)) - k, v = [linear(qkvw[i], qkvb[i], hidden_states.to(dtype=qkvw[i].dtype)) for i in range(1, 3)] - query_layer, key_layer, value_layer = [self.transpose_for_scores(x) for x in [q, k, v]] - - query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) - (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) - - query_layer = query_layer + self.transpose_for_scores(self.q_bias[None, None, :]) - value_layer = value_layer + self.transpose_for_scores(self.v_bias[None, None, :]) - - orig_key_layer = key_layer # save this for relative attention - key_layer, value_layer, attention_mask = self.prefix_tuning( - key_layer, value_layer, hidden_states, attention_mask, False - ) - (query_layer, orig_key_layer) = adjust_tensors_for_parallel(key_layer, query_layer, orig_key_layer) - - rel_att = None - # Take the dot product between "query" and "key" to get the raw attention scores. - scale_factor = 1 + len(self.pos_att_type) - scale = torch.sqrt(torch.tensor(query_layer.size(-1), dtype=torch.float) * scale_factor) - query_layer = query_layer / scale.to(dtype=query_layer.dtype) - attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) - if self.relative_attention: - rel_embeddings = self.pos_dropout(rel_embeddings) - rel_att = self.disentangled_att_bias( - query_layer, orig_key_layer, relative_pos, rel_embeddings, scale_factor - ) - - if rel_att is not None: - rel_att_padded = torch.zeros_like(attention_scores) - rel_att_padded[:, :, :, -rel_att.size(-1) :] = rel_att - attention_scores = attention_scores + rel_att_padded - - # bxhxlxd - if self.talking_head: - attention_scores = self.head_logits_proj(attention_scores.permute(0, 2, 3, 1)).permute(0, 3, 1, 2) - - attention_probs = XSoftmax.apply(attention_scores, attention_mask, -1) - attention_probs = self.dropout(attention_probs) - if self.talking_head: - attention_probs = self.head_weights_proj(attention_probs.permute(0, 2, 3, 1)).permute(0, 3, 1, 2) - - context_layer = torch.matmul(attention_probs, value_layer) - context_layer = context_layer.permute(0, 2, 1, 3).contiguous() - new_context_layer_shape = context_layer.size()[:-2] + (-1,) - context_layer = context_layer.view(new_context_layer_shape) - if output_attentions: - return (context_layer, attention_probs) - else: - return context_layer diff --git a/adapters/src/adapters/models/deberta_v2/__init__.py b/adapters/src/adapters/models/deberta_v2/__init__.py deleted file mode 100644 index 61ef443a..00000000 --- a/adapters/src/adapters/models/deberta_v2/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["DebertaV2AdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import DebertaV2AdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/deberta_v2/adapter_model.py b/adapters/src/adapters/models/deberta_v2/adapter_model.py deleted file mode 100644 index c306f8f4..00000000 --- a/adapters/src/adapters/models/deberta_v2/adapter_model.py +++ /dev/null @@ -1,99 +0,0 @@ -from transformers.file_utils import add_start_docstrings -from transformers.models.deberta_v2.modeling_deberta_v2 import DebertaV2Model, DebertaV2PreTrainedModel - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - """Deberta v2 Model transformer with the option to add multiple flexible heads on top.""", -) -class DebertaV2AdapterModel( - EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, DebertaV2PreTrainedModel -): - _keys_to_ignore_on_load_unexpected = [r"cls.predictions.bias"] - - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "question_answering", - "multiple_choice", - "masked_lm", - ] - - def __init__(self, config): - super().__init__(config) - - self.deberta = DebertaV2Model(config) - init(self.deberta) - - self._init_head_modules() - - self.init_weights() - - def forward( - self, - input_ids=None, - attention_mask=None, - token_type_ids=None, - position_ids=None, - inputs_embeds=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None - position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None - token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None - attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None - inputs_embeds = ( - inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) - if inputs_embeds is not None - else None - ) - - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.deberta( - input_ids, - attention_mask=attention_mask, - token_type_ids=token_type_ids, - position_ids=position_ids, - inputs_embeds=inputs_embeds, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads - if not return_dict: - head_inputs = (outputs[0],) + outputs[2:] - else: - head_inputs = outputs - pooled_output = outputs[0] - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - head_inputs, - head_name=head, - attention_mask=attention_mask, - return_dict=return_dict, - pooled_output=pooled_output, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs diff --git a/adapters/src/adapters/models/deberta_v2/mixin_deberta_v2.py b/adapters/src/adapters/models/deberta_v2/mixin_deberta_v2.py deleted file mode 100644 index 3a33fdf8..00000000 --- a/adapters/src/adapters/models/deberta_v2/mixin_deberta_v2.py +++ /dev/null @@ -1,16 +0,0 @@ -from ...methods.lora import LoRALinear -from ...methods.prefix_tuning import PrefixTuningLayer - - -class DebertaV2SelfAttentionAdaptersMixin: - """Adds adapters to the BertSelfAttention module.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.query_proj = LoRALinear.wrap(self.query_proj, "selfattn", model_config, adapters_config, attn_key="q") - self.key_proj = LoRALinear.wrap(self.key_proj, "selfattn", model_config, adapters_config, attn_key="k") - self.value_proj = LoRALinear.wrap(self.value_proj, "selfattn", model_config, adapters_config, attn_key="v") - - self.prefix_tuning = PrefixTuningLayer( - self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config - ) diff --git a/adapters/src/adapters/models/deberta_v2/modeling_deberta_v2.py b/adapters/src/adapters/models/deberta_v2/modeling_deberta_v2.py deleted file mode 100644 index 56d6fec4..00000000 --- a/adapters/src/adapters/models/deberta_v2/modeling_deberta_v2.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding=utf-8 -# Copyright 2020 Microsoft and the Hugging Face Inc. team. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" PyTorch DeBERTa-v2 model.""" - -import torch -import torch.utils.checkpoint - -from transformers.models.deberta_v2.modeling_deberta_v2 import ( - DebertaV2Output, - DebertaV2SelfOutput, - DisentangledSelfAttention, - XSoftmax, -) - -from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from ...utils import prefix_attention_mask -from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfOutputAdaptersMixin -from .mixin_deberta_v2 import DebertaV2SelfAttentionAdaptersMixin - - -# Copied from transformers.models.deberta.modeling_deberta.DebertaSelfOutput with DebertaLayerNorm->LayerNorm -class DebertaV2SelfOutputWithAdapters(BertSelfOutputAdaptersMixin, DebertaV2SelfOutput): - def forward(self, hidden_states, input_tensor): - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states - - -# Copied from transformers.models.deberta.modeling_deberta.DebertaOutput with DebertaLayerNorm->LayerNorm -class DebertaV2OutputWithAdapters(BertOutputAdaptersMixin, DebertaV2Output): - def forward(self, hidden_states, input_tensor): - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states - - -class DisentangledSelfAttentionWithAdapters(DebertaV2SelfAttentionAdaptersMixin, DisentangledSelfAttention): - def transpose_for_scores_extended(self, x, attention_heads): - new_x_shape = x.size()[:-1] + (attention_heads, -1) - x = x.view(new_x_shape) - return x.permute(0, 2, 1, 3) - - def forward( - self, - hidden_states, - attention_mask, - output_attentions=False, - query_states=None, - relative_pos=None, - rel_embeddings=None, - ): - """ - Call the module - - Args: - hidden_states (`torch.FloatTensor`): - Input states to the module usually the output from previous layer, it will be the Q,K and V in - *Attention(Q,K,V)* - - attention_mask (`torch.ByteTensor`): - An attention mask matrix of shape [*B*, *N*, *N*] where *B* is the batch size, *N* is the maximum - sequence length in which element [i,j] = *1* means the *i* th token in the input can attend to the *j* - th token. - - output_attentions (`bool`, optional): - Whether return the attention matrix. - - query_states (`torch.FloatTensor`, optional): - The *Q* state in *Attention(Q,K,V)*. - - relative_pos (`torch.LongTensor`): - The relative position encoding between the tokens in the sequence. It's of shape [*B*, *N*, *N*] with - values ranging in [*-max_relative_positions*, *max_relative_positions*]. - - rel_embeddings (`torch.FloatTensor`): - The embedding of relative distances. It's a tensor of shape [\\(2 \\times - \\text{max_relative_positions}\\), *hidden_size*]. - """ - attention_mask = prefix_attention_mask(attention_mask, dim=3, prefix_value=1) # type: ignore - attention_mask = prefix_attention_mask(attention_mask, dim=2, prefix_value=1) # type: ignore - - if query_states is None: - query_states = hidden_states - query_layer = self.transpose_for_scores_extended(self.query_proj(query_states), self.num_attention_heads) - key_layer = self.transpose_for_scores_extended(self.key_proj(hidden_states), self.num_attention_heads) - value_layer = self.transpose_for_scores_extended(self.value_proj(hidden_states), self.num_attention_heads) - - query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) - (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) - - orig_key_layer = key_layer.contiguous() # save this for relative attention - key_layer, value_layer, attention_mask = self.prefix_tuning( - key_layer, value_layer, hidden_states, attention_mask, False - ) # [:, 0, :, 0]) - query_layer, orig_key_layer = adjust_tensors_for_parallel(key_layer, query_layer, orig_key_layer) - - query_layer = query_layer.contiguous().view(-1, query_layer.size(2), query_layer.size(-1)) - key_layer = key_layer.contiguous().view(-1, key_layer.size(2), key_layer.size(-1)) - value_layer = value_layer.contiguous().view(-1, value_layer.size(2), value_layer.size(-1)) - orig_key_layer = orig_key_layer.contiguous().view(-1, orig_key_layer.size(2), orig_key_layer.size(-1)) - - rel_att = None - # Take the dot product between "query" and "key" to get the raw attention scores. - scale_factor = 1 - if "c2p" in self.pos_att_type: - scale_factor += 1 - if "p2c" in self.pos_att_type: - scale_factor += 1 - scale = torch.sqrt(torch.tensor(query_layer.size(-1), dtype=torch.float) * scale_factor) - attention_scores = torch.bmm(query_layer, key_layer.transpose(-1, -2)) / scale.to(dtype=query_layer.dtype) - if self.relative_attention: - rel_embeddings = self.pos_dropout(rel_embeddings) - rel_att = self.disentangled_attention_bias( - query_layer, orig_key_layer, relative_pos, rel_embeddings, scale_factor - ) - - if rel_att is not None: - rel_att_padded = torch.zeros_like(attention_scores) - rel_att_padded[:, :, -rel_att.size(2) :] = rel_att - attention_scores = attention_scores + rel_att_padded - attention_scores = attention_scores - attention_scores = attention_scores.view( - -1, self.num_attention_heads, attention_scores.size(-2), attention_scores.size(-1) - ) - - # bsz x height x length x dimension - attention_probs = XSoftmax.apply(attention_scores, attention_mask, -1) - attention_probs = self.dropout(attention_probs) - context_layer = torch.bmm( - attention_probs.view(-1, attention_probs.size(-2), attention_probs.size(-1)), value_layer - ) - context_layer = ( - context_layer.view(-1, self.num_attention_heads, context_layer.size(-2), context_layer.size(-1)) - .permute(0, 2, 1, 3) - .contiguous() - ) - new_context_layer_shape = context_layer.size()[:-2] + (-1,) - context_layer = context_layer.view(new_context_layer_shape) - if output_attentions: - return (context_layer, attention_probs) - else: - return context_layer diff --git a/adapters/src/adapters/models/distilbert/__init__.py b/adapters/src/adapters/models/distilbert/__init__.py deleted file mode 100644 index 0e125752..00000000 --- a/adapters/src/adapters/models/distilbert/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["DistilBertAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import DistilBertAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/distilbert/adapter_model.py b/adapters/src/adapters/models/distilbert/adapter_model.py deleted file mode 100644 index c28f1244..00000000 --- a/adapters/src/adapters/models/distilbert/adapter_model.py +++ /dev/null @@ -1,127 +0,0 @@ -import torch.nn as nn - -from transformers.models.distilbert.modeling_distilbert import ( - DISTILBERT_INPUTS_DOCSTRING, - DISTILBERT_START_DOCSTRING, - DistilBertModel, - DistilBertPreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - """DistilBert Model transformer with the option to add multiple flexible heads on top.""", - DISTILBERT_START_DOCSTRING, -) -class DistilBertAdapterModel( - EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, DistilBertPreTrainedModel -): - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "question_answering", - "multiple_choice", - "dependency_parsing", - "masked_lm", - "causal_lm", - ] - - def __init__(self, config): - super().__init__(config) - self.distilbert = DistilBertModel(config) - init(self.distilbert) - - self._init_head_modules() - - self.init_weights() - - def get_position_embeddings(self) -> nn.Embedding: - """ - Returns the position embeddings - """ - return self.distilbert.get_position_embeddings() - - def resize_position_embeddings(self, new_num_position_embeddings: int): - """ - Resizes position embeddings of the model if :obj:`new_num_position_embeddings != - config.max_position_embeddings`. - - Arguments: - new_num_position_embeddings (:obj:`int`): - The number of new position embedding matrix. If position embeddings are learned, increasing the size - will add newly initialized vectors at the end, whereas reducing the size will remove vectors from the - end. If position embeddings are not learned (*e.g.* sinusoidal position embeddings), increasing the - size will add correct vectors at the end following the position encoding algorithm, whereas reducing - the size will remove vectors from the end. - """ - self.distilbert.resize_position_embeddings(new_num_position_embeddings) - - @add_start_docstrings_to_model_forward(DISTILBERT_INPUTS_DOCSTRING.format("batch_size, num_choices")) - def forward( - self, - input_ids=None, - attention_mask=None, - head_mask=None, - inputs_embeds=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None - attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None - inputs_embeds = ( - inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) - if inputs_embeds is not None - else None - ) - - distilbert_output, context = self.distilbert( - input_ids=input_ids, - attention_mask=attention_mask, - head_mask=head_mask, - inputs_embeds=inputs_embeds, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - - outputs = self.forward_head( - distilbert_output, head_name=head, attention_mask=attention_mask, return_dict=return_dict, **kwargs - ) - - return outputs - - # Copied from RobertaForCausalLM - def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): - input_shape = input_ids.shape - # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly - if attention_mask is None: - attention_mask = input_ids.new_ones(input_shape) - - # cut decoder_input_ids if past is used - if past is not None: - input_ids = input_ids[:, -1:] - - return { - "input_ids": input_ids, - "attention_mask": attention_mask, - "past_key_values": past, - "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), - } diff --git a/adapters/src/adapters/models/distilbert/mixin_distilbert.py b/adapters/src/adapters/models/distilbert/mixin_distilbert.py deleted file mode 100644 index 3301cba9..00000000 --- a/adapters/src/adapters/models/distilbert/mixin_distilbert.py +++ /dev/null @@ -1,53 +0,0 @@ -from typing import Iterable, Tuple - -import torch.nn as nn - -from ...methods.bottleneck import BottleneckLayer -from ...methods.lora import LoRALinear -from ...methods.prefix_tuning import PrefixTuningLayer -from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin - - -class DistilBertMultiHeadSelfAttentionMixin: - """Adds adapters to the MultiHeadSelfAttention module of DistilBert.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.q_lin = LoRALinear.wrap(self.q_lin, "selfattn", model_config, adapters_config, attn_key="q") - self.k_lin = LoRALinear.wrap(self.k_lin, "selfattn", model_config, adapters_config, attn_key="k") - self.v_lin = LoRALinear.wrap(self.v_lin, "selfattn", model_config, adapters_config, attn_key="v") - - self.prefix_tuning = PrefixTuningLayer("self", model_config, adapters_config) - - -class DistilBertTransfomerBlockAdaptersMixin: - """Adds adapters to the TransformerBlock module of DistilBert.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.ffn.lin1 = LoRALinear.wrap(self.ffn.lin1, "intermediate", model_config, adapters_config) - self.ffn.lin2 = LoRALinear.wrap(self.ffn.lin2, "output", model_config, adapters_config) - - self.attention_adapters = BottleneckLayer("mh_adapter") - self.output_adapters = BottleneckLayer("output_adapter") - - -class DistilBertTransformerAdaptersMixin: - """Adds adapters to the Transformer module of DistilBert.""" - - def forward(self, *args, **kwargs): - if hasattr(self, "pre_forward_fn"): - kwargs["x"] = self.pre_forward_fn(self, kwargs["x"]) - return super().forward(*args, **kwargs) - - -class DistilBertModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): - """Adds adapters to the DistilBert module.""" - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - self.embeddings.register_forward_hook(self.post_embedding_forward) - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.transformer.layer): - yield i, layer diff --git a/adapters/src/adapters/models/distilbert/modeling_distilbert.py b/adapters/src/adapters/models/distilbert/modeling_distilbert.py deleted file mode 100644 index cbd50194..00000000 --- a/adapters/src/adapters/models/distilbert/modeling_distilbert.py +++ /dev/null @@ -1,154 +0,0 @@ -# coding=utf-8 -# Copyright 2019-present, the HuggingFace Inc. team, The Google AI Language Team and Facebook, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" - PyTorch DistilBERT model adapted in part from Facebook, Inc XLM model (https://github.com/facebookresearch/XLM) and in - part from HuggingFace PyTorch version of Google AI Bert model (https://github.com/google-research/bert) -""" - - -import math -from typing import Optional, Tuple - -import torch -from torch import nn - -from transformers.models.distilbert.modeling_distilbert import MultiHeadSelfAttention, TransformerBlock - -from ...composition import adjust_tensors_for_parallel, adjust_tensors_for_parallel_, match_attn_matrices_for_parallel -from ...utils import prefix_attention_mask -from .mixin_distilbert import DistilBertMultiHeadSelfAttentionMixin, DistilBertTransfomerBlockAdaptersMixin - - -class MultiHeadSelfAttentionWithAdapters(DistilBertMultiHeadSelfAttentionMixin, MultiHeadSelfAttention): - def forward( - self, - query: torch.Tensor, - key: torch.Tensor, - value: torch.Tensor, - mask: torch.Tensor, - head_mask: Optional[torch.Tensor] = None, - output_attentions: bool = False, - ) -> Tuple[torch.Tensor, ...]: - """ - Parameters: - query: torch.tensor(bs, seq_length, dim) - key: torch.tensor(bs, seq_length, dim) - value: torch.tensor(bs, seq_length, dim) - mask: torch.tensor(bs, seq_length) - - Returns: - weights: torch.tensor(bs, n_heads, seq_length, seq_length) Attention weights context: torch.tensor(bs, - seq_length, dim) Contextualized layer. Optional: only if `output_attentions=True` - """ - bs, q_length, dim = query.size() - # assert dim == self.dim, f'Dimensions do not match: {dim} input vs {self.dim} configured' - # assert key.size() == value.size() - - dim_per_head = self.dim // self.n_heads - - def shape(x: torch.Tensor) -> torch.Tensor: - """separate heads""" - return x.view(bs, -1, self.n_heads, dim_per_head).transpose(1, 2) - - def unshape(x: torch.Tensor) -> torch.Tensor: - """group heads""" - return x.transpose(1, 2).contiguous().view(bs, -1, self.n_heads * dim_per_head) - - q = shape(self.q_lin(query)) # (bs, n_heads, q_length, dim_per_head) - k = shape(self.k_lin(key)) # (bs, n_heads, k_length, dim_per_head) - v = shape(self.v_lin(value)) # (bs, n_heads, k_length, dim_per_head) - - q, k, v = match_attn_matrices_for_parallel(q, k, v) - (mask,) = adjust_tensors_for_parallel(q, mask) - - k, v, mask = self.prefix_tuning(k, v, value, mask, invert_mask=False) - bs = k.size(0) # reset for Parallel block - (q,) = adjust_tensors_for_parallel(k, q) - - mask_reshp = (bs, 1, 1, k.size(2)) - - q = q / math.sqrt(dim_per_head) # (bs, n_heads, q_length, dim_per_head) - scores = torch.matmul(q, k.transpose(2, 3)) # (bs, n_heads, q_length, k_length) - mask = (mask == 0).view(mask_reshp).expand_as(scores) # (bs, n_heads, q_length, k_length) - scores = scores.masked_fill( - mask, torch.tensor(torch.finfo(scores.dtype).min) - ) # (bs, n_heads, q_length, k_length) - - weights = nn.functional.softmax(scores, dim=-1) # (bs, n_heads, q_length, k_length) - weights = self.dropout(weights) # (bs, n_heads, q_length, k_length) - - # Mask heads if we want to - if head_mask is not None: - weights = weights * head_mask - - context = torch.matmul(weights, v) # (bs, n_heads, q_length, dim_per_head) - context = unshape(context) # (bs, q_length, dim) - context = self.out_lin(context) # (bs, q_length, dim) - - if output_attentions: - return (context, weights) - else: - return (context,) - - -class TransformerBlockWithAdapters(DistilBertTransfomerBlockAdaptersMixin, TransformerBlock): - def forward( - self, - x: torch.Tensor, - attn_mask: Optional[torch.Tensor] = None, - head_mask: Optional[torch.Tensor] = None, - output_attentions: bool = False, - ) -> Tuple[torch.Tensor, ...]: - """ - Parameters: - x: torch.tensor(bs, seq_length, dim) - attn_mask: torch.tensor(bs, seq_length) - - Returns: - sa_weights: torch.tensor(bs, n_heads, seq_length, seq_length) The attention weights ffn_output: - torch.tensor(bs, seq_length, dim) The output of the transformer block contextualization. - """ - adjust_tensors_for_parallel_(x, attn_mask) - attn_mask = prefix_attention_mask(attn_mask, dim=1, prefix_value=1) # type: ignore - - # Self-Attention - sa_output = self.attention( - query=x, - key=x, - value=x, - mask=attn_mask, - head_mask=head_mask, - output_attentions=output_attentions, - ) - if output_attentions: - sa_output, sa_weights = sa_output # (bs, seq_length, dim), (bs, n_heads, seq_length, seq_length) - else: # To handle these `output_attentions` or `output_hidden_states` cases returning tuples - if type(sa_output) is not tuple: - raise TypeError(f"sa_output must be a tuple but it is {type(sa_output)} type") - - sa_output = sa_output[0] - sa_output = self.attention_adapters(sa_output, x, self.sa_layer_norm) # (bs, seq_length, dim) - - # Feed Forward Network - ffn_output = self.ffn(sa_output) # (bs, seq_length, dim) - ffn_output: torch.Tensor = self.output_adapters( - ffn_output, sa_output, self.output_layer_norm - ) # (bs, seq_length, dim) - - output = (ffn_output,) - if output_attentions: - output = (sa_weights,) + output - return output diff --git a/adapters/src/adapters/models/electra/__init__.py b/adapters/src/adapters/models/electra/__init__.py deleted file mode 100644 index bbf0bdbc..00000000 --- a/adapters/src/adapters/models/electra/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["ElectraAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import ElectraAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/electra/adapter_model.py b/adapters/src/adapters/models/electra/adapter_model.py deleted file mode 100644 index dbccce40..00000000 --- a/adapters/src/adapters/models/electra/adapter_model.py +++ /dev/null @@ -1,120 +0,0 @@ -from transformers.models.electra.modeling_electra import ( - ELECTRA_INPUTS_DOCSTRING, - ELECTRA_START_DOCSTRING, - ElectraModel, - ElectraPreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - """Electra Model transformer with the option to add multiple flexible heads on top.""", - ELECTRA_START_DOCSTRING, -) -class ElectraAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, ElectraPreTrainedModel): - - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "question_answering", - "multiple_choice", - "dependency_parsing", - "masked_lm", - "causal_lm", - ] - - def __init__(self, config): - super().__init__(config) - - self.electra = ElectraModel(config) - init(self.electra) - - self._init_head_modules() - - self.init_weights() - - @add_start_docstrings_to_model_forward(ELECTRA_INPUTS_DOCSTRING.format("batch_size, sequence_length")) - def forward( - self, - input_ids=None, - attention_mask=None, - token_type_ids=None, - position_ids=None, - head_mask=None, - inputs_embeds=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None - attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None - token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None - position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None - inputs_embeds = ( - inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) - if inputs_embeds is not None - else None - ) - - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.electra( - input_ids, - attention_mask=attention_mask, - token_type_ids=token_type_ids, - position_ids=position_ids, - head_mask=head_mask, - inputs_embeds=inputs_embeds, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - - head_inputs = outputs - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - head_inputs, - head_name=head, - attention_mask=attention_mask, - return_dict=return_dict, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs - - # Copied from BertLMHeadModel - def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): - input_shape = input_ids.shape - # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly - if attention_mask is None: - attention_mask = input_ids.new_ones(input_shape) - - # cut decoder_input_ids if past is used - if past is not None: - input_ids = input_ids[:, -1:] - - return { - "input_ids": input_ids, - "attention_mask": attention_mask, - "past_key_values": past, - "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), - } diff --git a/adapters/src/adapters/models/electra/modeling_electra.py b/adapters/src/adapters/models/electra/modeling_electra.py deleted file mode 100644 index 53b5ed29..00000000 --- a/adapters/src/adapters/models/electra/modeling_electra.py +++ /dev/null @@ -1,139 +0,0 @@ -import math -from typing import Optional, Tuple - -import torch -from torch import nn - -from transformers.models.electra.modeling_electra import ElectraOutput, ElectraSelfAttention, ElectraSelfOutput - -from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from ...utils import prefix_attention_mask -from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin - - -class ElectraSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, ElectraSelfAttention): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.FloatTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - encoder_hidden_states: Optional[torch.FloatTensor] = None, - encoder_attention_mask: Optional[torch.FloatTensor] = None, - past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, - output_attentions: Optional[bool] = False, - ) -> Tuple[torch.Tensor]: - attention_mask = prefix_attention_mask(attention_mask) # type: ignore - - mixed_query_layer = self.query(hidden_states) - - # If this is instantiated as a cross-attention module, the keys - # and values come from an encoder; the attention mask needs to be - # such that the encoder's padding tokens are not attended to. - is_cross_attention = encoder_hidden_states is not None - - if is_cross_attention and past_key_value is not None: - # reuse k,v, cross_attentions - key_layer = past_key_value[0] - value_layer = past_key_value[1] - attention_mask = encoder_attention_mask - elif is_cross_attention: - key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) - value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) - attention_mask = encoder_attention_mask - elif past_key_value is not None: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - key_layer = torch.cat([past_key_value[0], key_layer], dim=2) - value_layer = torch.cat([past_key_value[1], value_layer], dim=2) - else: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - - query_layer = self.transpose_for_scores(mixed_query_layer) - query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) - (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) - - use_cache = past_key_value is not None - if self.is_decoder: - # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. - # Further calls to cross_attention layer can then reuse all cross-attention - # key/value_states (first "if" case) - # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of - # all previous decoder key/value_states. Further calls to uni-directional self-attention - # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) - # if encoder bi-directional self-attention `past_key_value` is always `None` - past_key_value = (key_layer, value_layer) - - key_layer, value_layer, attention_mask = self.prefix_tuning( - key_layer, value_layer, hidden_states, attention_mask - ) - (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) - - # Take the dot product between "query" and "key" to get the raw attention scores. - attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) - - if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": - query_length, key_length = query_layer.shape[2], key_layer.shape[2] - if use_cache: - position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( - -1, 1 - ) - else: - position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) - position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) - distance = position_ids_l - position_ids_r - - positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) - positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility - - if self.position_embedding_type == "relative_key": - relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores - elif self.position_embedding_type == "relative_key_query": - relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key - - attention_scores = attention_scores / math.sqrt(self.attention_head_size) - if attention_mask is not None: - # Apply the attention mask is (precomputed for all layers in BertModel forward() function) - attention_scores = attention_scores + attention_mask - - # Normalize the attention scores to probabilities. - attention_probs = nn.functional.softmax(attention_scores, dim=-1) - - # This is actually dropping out entire tokens to attend to, which might - # seem a bit unusual, but is taken from the original Transformer paper. - attention_probs = self.dropout(attention_probs) - - # Mask heads if we want to - if head_mask is not None: - attention_probs = attention_probs * head_mask - - context_layer = torch.matmul(attention_probs, value_layer) - - context_layer = context_layer.permute(0, 2, 1, 3).contiguous() - new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) - context_layer = context_layer.view(new_context_layer_shape) - - outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) - - if self.is_decoder: - outputs = outputs + (past_key_value,) - return outputs - - -class ElectraSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, ElectraSelfOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states - - -class ElectraOutputWithAdapters(BertOutputAdaptersMixin, ElectraOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states diff --git a/adapters/src/adapters/models/encoder_decoder/mixin_encoder_decoder.py b/adapters/src/adapters/models/encoder_decoder/mixin_encoder_decoder.py deleted file mode 100644 index 50257d15..00000000 --- a/adapters/src/adapters/models/encoder_decoder/mixin_encoder_decoder.py +++ /dev/null @@ -1,69 +0,0 @@ -from typing import Iterable, Tuple - -import torch.nn as nn - -import adapters - -from ...model_mixin import ( - EmbeddingAdaptersMixin, - InvertibleAdaptersMixin, - ModelAdaptersMixin, - ModelUsingSubmodelsAdaptersMixin, -) - - -class EncoderDecoderModelAdaptersMixin( - EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelUsingSubmodelsAdaptersMixin -): - """Adds adapters to the EncoderDecoderModel class.""" - - support_prompt_tuning = False - - def init_adapters(self, model_config, adapters_config): - if not isinstance(self.encoder, ModelAdaptersMixin) or not isinstance(self.decoder, ModelAdaptersMixin): - return - - # Before initializing adapters, forward adding invertible adapters to the encoder - self.add_invertible_adapter = self.encoder.base_model.add_invertible_adapter - - super().init_adapters(model_config, adapters_config, add_prefix_tuning_pool=False) - - # ensure that encoder and decoder use the same shared parameters - if hasattr(self.encoder, "set_shared_parameters"): - self.encoder.set_shared_parameters(self.shared_parameters) - if hasattr(self.decoder, "set_shared_parameters"): - self.decoder.set_shared_parameters(self.shared_parameters) - - # Relay all invertible adapter calls to encoder - self.invertible_adapters = self.encoder.base_model.invertible_adapters - self.get_invertible_adapter = self.encoder.base_model.get_invertible_adapter - self.enable_invertible_adapters = self.encoder.base_model.enable_invertible_adapters - self.invertible_adapters_forward = self.encoder.base_model.invertible_adapters_forward - - # Decoder should use invertible adapters of encoder - self.decoder.base_model.invertible_adapters = self.encoder.base_model.invertible_adapters - self.decoder.base_model.add_invertible_adapter = lambda *args: None - self.decoder.base_model.get_invertible_adapter = self.encoder.base_model.get_invertible_adapter - - # Patched invertible adapters forward for decoder: - # In the decoder, only the reverse pass in the LM head should be active. - # Decoder inputs should not be forwarded through the invertible adapter again in its embeddings module. - def decoder_invertible_adapters_forward(hidden_states, rev=False): - if rev: - return self.encoder.base_model.invertible_adapters_forward(hidden_states, rev=True) - else: - return hidden_states - - self.decoder.base_model.invertible_adapters_forward = decoder_invertible_adapters_forward - - def init_submodels(self): - adapters.init(self.encoder, self.adapters_config) - adapters.init(self.decoder, self.adapters_config) - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - # Can't count the layers globally, because then saving and loading pretrained models won't work - for i, layer in self.encoder.iter_layers(): - yield i, layer - - for i, layer in self.decoder.iter_layers(): - yield i, layer diff --git a/adapters/src/adapters/models/encoder_decoder/modeling_encoder_decoder.py b/adapters/src/adapters/models/encoder_decoder/modeling_encoder_decoder.py deleted file mode 100644 index 43178898..00000000 --- a/adapters/src/adapters/models/encoder_decoder/modeling_encoder_decoder.py +++ /dev/null @@ -1,24 +0,0 @@ -# coding=utf-8 -# Copyright 2018 The HuggingFace Inc. team. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" Classes to support Encoder-Decoder architectures""" - -from transformers.models.encoder_decoder.modeling_encoder_decoder import EncoderDecoderModel - -from .mixin_encoder_decoder import EncoderDecoderModelAdaptersMixin - - -# Although this class is empty, we cannot add the mixin via the MODEL_MIXIN_MAPPING, as this would result in a circular import. -class EncoderDecoderModelWithAdapters(EncoderDecoderModelAdaptersMixin, EncoderDecoderModel): - pass diff --git a/adapters/src/adapters/models/gpt2/__init__.py b/adapters/src/adapters/models/gpt2/__init__.py deleted file mode 100644 index dcd6009f..00000000 --- a/adapters/src/adapters/models/gpt2/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["GPT2AdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import GPT2AdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/gpt2/adapter_model.py b/adapters/src/adapters/models/gpt2/adapter_model.py deleted file mode 100644 index c15e5c99..00000000 --- a/adapters/src/adapters/models/gpt2/adapter_model.py +++ /dev/null @@ -1,153 +0,0 @@ -import logging - -import torch - -from transformers.models.gpt2.modeling_gpt2 import GPT2_START_DOCSTRING, GPT2Model, GPT2PreTrainedModel -from transformers.utils import add_start_docstrings - -from ...composition import adjust_tensors_for_parallel -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -logger = logging.getLogger(__name__) - - -@add_start_docstrings( - """ -The GPT2 Model that allows the loading of different heads dor different tasks. This enables a flexible use of the -models and adpters. Since this class does classification on the last token, it requires to know the position of the -last token. If a :obj:`pad_token_id` is defined in the configuration, it finds the last token that is not a padding -token in each row. If no :obj:`pad_token_id` is defined, it simply takes the last value in each row of the batch. Since -it cannot guess the padding tokens when :obj:`inputs_embeds` are passed instead of :obj:`input_ids`, it does the same -(take the last value in each row of the batch). -""", - GPT2_START_DOCSTRING, -) -class GPT2AdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, GPT2PreTrainedModel): - _tied_weights_keys = [] # needs to be empty since GPT2 does not yet support prompt tuning - - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "question_answering", - "causal_lm", - ] - - def __init__(self, config): - super().__init__(config) - self.transformer = GPT2Model(config) - init(self.transformer) - - self._init_head_modules() - - self.init_weights() - - # Model parallel - self.model_parallel = False - self.device_map = None - - def forward( - self, - input_ids=None, - past_key_values=None, - attention_mask=None, - token_type_ids=None, - position_ids=None, - head_mask=None, - inputs_embeds=None, - encoder_hidden_states=None, - encoder_attention_mask=None, - use_cache=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.transformer( - input_ids, - past_key_values=past_key_values, - attention_mask=attention_mask, - token_type_ids=token_type_ids, - position_ids=position_ids, - head_mask=head_mask, - inputs_embeds=inputs_embeds, - encoder_hidden_states=encoder_hidden_states, - encoder_attention_mask=encoder_attention_mask, - use_cache=use_cache, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - - batch_size = outputs[0].shape[0] - - if self.config.pad_token_id is None: - # TODO-AH: this may result in unexpected behavior for classification. Find a better way to do this? - sequence_lengths = -1 - else: - if input_ids is not None: - sequence_lengths = torch.ne(input_ids, self.config.pad_token_id).sum(-1) - 1 - (sequence_lengths,) = adjust_tensors_for_parallel(outputs[0], sequence_lengths) - else: - sequence_lengths = -1 - logger.warning( - f"{self.__class__.__name__} will not detect padding tokens in `inputs_embeds`. Results may be " - "unexpected if using padding tokens in conjunction with `inputs_embeds.`" - ) - - cls_logits = outputs[0][range(batch_size), sequence_lengths] - - outputs = self.forward_head( - outputs, - head_name=head, - cls_output=cls_logits, - attention_mask=attention_mask, - return_dict=return_dict, - **kwargs, - ) - - return outputs - - # Copied from GPT2LMHeadModel - def prepare_inputs_for_generation(self, input_ids, past=None, **kwargs): - token_type_ids = kwargs.get("token_type_ids", None) - # only last token for inputs_ids if past is defined in kwargs - if past: - input_ids = input_ids[:, -1].unsqueeze(-1) - if token_type_ids is not None: - token_type_ids = token_type_ids[:, -1].unsqueeze(-1) - - attention_mask = kwargs.get("attention_mask", None) - position_ids = kwargs.get("position_ids", None) - - if attention_mask is not None and position_ids is None: - # create position_ids on the fly for batch generation - position_ids = attention_mask.long().cumsum(-1) - 1 - position_ids.masked_fill_(attention_mask == 0, 1) - if past: - position_ids = position_ids[:, -1].unsqueeze(-1) - else: - position_ids = None - return { - "input_ids": input_ids, - "past_key_values": past, - "use_cache": kwargs.get("use_cache"), - "position_ids": position_ids, - "attention_mask": attention_mask, - "token_type_ids": token_type_ids, - "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), - } diff --git a/adapters/src/adapters/models/gpt2/mixin_gpt2.py b/adapters/src/adapters/models/gpt2/mixin_gpt2.py deleted file mode 100644 index bd142eb4..00000000 --- a/adapters/src/adapters/models/gpt2/mixin_gpt2.py +++ /dev/null @@ -1,72 +0,0 @@ -from typing import Iterable, Tuple - -import torch.nn as nn - -from ...methods.bottleneck import BottleneckLayer -from ...methods.lora import LoRALinear, LoRAMergedLinear -from ...methods.prefix_tuning import PrefixTuningLayer -from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin - - -class GPT2AttentionAdaptersMixin: - """Adds adapters to the Attention module of GPT2.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - if not self.is_cross_attention: - self.c_attn = LoRAMergedLinear.wrap( - self.c_attn, - "selfattn", - model_config, - adapters_config, - fan_in_fan_out=True, - no_init_bias=True, - ) - - location_key = "cross_prefix" if self.is_cross_attention else "self_prefix" - self.prefix_tuning = PrefixTuningLayer(location_key, model_config, adapters_config) - - -class GPT2DecoderBlockAdaptersMixin: - """Adds adapters to the TransformerBlock module of DistilBert.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.mlp.c_fc = LoRALinear.wrap( - self.mlp.c_fc, - "intermediate", - model_config, - adapters_config, - fan_in_fan_out=True, - no_init_bias=True, - ) - self.mlp.c_proj = LoRALinear.wrap( - self.mlp.c_proj, - "output", - model_config, - adapters_config, - fan_in_fan_out=True, - no_init_bias=True, - ) - - self.attention_adapters = BottleneckLayer("mh_adapter") - self.output_adapters = BottleneckLayer("output_adapter") - - -class GPT2ModelAdapterMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): - support_prompt_tuning = False - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - - # Register hook for post embedding forward - self.drop.register_forward_hook(self.post_embedding_forward) - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.base_model.h): - yield i, layer - - def post_embedding_forward(self, module, args, embedding_output): - embedding_output = self.invertible_adapters_forward(embedding_output) - # Prompt tuning not yet supported - return embedding_output diff --git a/adapters/src/adapters/models/gpt2/modeling_gpt2.py b/adapters/src/adapters/models/gpt2/modeling_gpt2.py deleted file mode 100644 index 1c571c23..00000000 --- a/adapters/src/adapters/models/gpt2/modeling_gpt2.py +++ /dev/null @@ -1,147 +0,0 @@ -# coding=utf-8 -# Copyright 2018 The OpenAI Team Authors and HuggingFace Inc. team. -# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""PyTorch OpenAI GPT-2 model.""" - -from typing import Optional, Tuple, Union - -import torch -import torch.utils.checkpoint - -from transformers.models.gpt2.modeling_gpt2 import GPT2Attention, GPT2Block - -from ...composition import adjust_tensors_for_parallel, adjust_tensors_for_parallel_ -from .mixin_gpt2 import GPT2AttentionAdaptersMixin, GPT2DecoderBlockAdaptersMixin - - -class GPT2AttentionWithAdapters(GPT2AttentionAdaptersMixin, GPT2Attention): - def forward( - self, - hidden_states: Optional[Tuple[torch.FloatTensor]], - layer_past: Optional[Tuple[torch.Tensor]] = None, - attention_mask: Optional[torch.FloatTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - encoder_hidden_states: Optional[torch.Tensor] = None, - encoder_attention_mask: Optional[torch.FloatTensor] = None, - use_cache: Optional[bool] = False, - output_attentions: Optional[bool] = False, - ) -> Tuple[Union[torch.Tensor, Tuple[torch.Tensor]], ...]: - if encoder_hidden_states is not None: - if not hasattr(self, "q_attn"): - raise ValueError( - "If class is used as cross attention, the weights `q_attn` have to be defined. " - "Please make sure to instantiate class with `GPT2Attention(..., is_cross_attention=True)`." - ) - - query = self.q_attn(hidden_states) - key, value = self.c_attn(encoder_hidden_states).split(self.split_size, dim=2) - attention_mask = encoder_attention_mask - else: - query, key, value = self.c_attn(hidden_states).split(self.split_size, dim=2) - - query = self._split_heads(query, self.num_heads, self.head_dim) - key = self._split_heads(key, self.num_heads, self.head_dim) - value = self._split_heads(value, self.num_heads, self.head_dim) - - if layer_past is not None: - past_key, past_value = layer_past - key = torch.cat((past_key, key), dim=-2) - value = torch.cat((past_value, value), dim=-2) - - if use_cache is True: - present = (key, value) - else: - present = None - - key, value, attention_mask = self.prefix_tuning(key, value, hidden_states, attention_mask) - (query,) = adjust_tensors_for_parallel(key, query) - - if self.reorder_and_upcast_attn: - attn_output, attn_weights = self._upcast_and_reordered_attn(query, key, value, attention_mask, head_mask) - else: - attn_output, attn_weights = self._attn(query, key, value, attention_mask, head_mask) - - attn_output = self._merge_heads(attn_output, self.num_heads, self.head_dim) - attn_output = self.c_proj(attn_output) - attn_output = self.resid_dropout(attn_output) - - outputs = (attn_output, present) - if output_attentions: - outputs += (attn_weights,) - - return outputs # a, present, (attentions) - - -class GPT2BlockWithAdapters(GPT2DecoderBlockAdaptersMixin, GPT2Block): - def forward( - self, - hidden_states: Optional[Tuple[torch.FloatTensor]], - layer_past: Optional[Tuple[torch.Tensor]] = None, - attention_mask: Optional[torch.FloatTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - encoder_hidden_states: Optional[torch.Tensor] = None, - encoder_attention_mask: Optional[torch.FloatTensor] = None, - use_cache: Optional[bool] = False, - output_attentions: Optional[bool] = False, - ) -> Union[Tuple[torch.Tensor], Optional[Tuple[torch.Tensor, Tuple[torch.FloatTensor, ...]]]]: - adjust_tensors_for_parallel_(hidden_states, attention_mask) - residual = hidden_states - hidden_states = self.ln_1(hidden_states) - attn_outputs = self.attn( - hidden_states, - layer_past=layer_past, - attention_mask=attention_mask, - head_mask=head_mask, - use_cache=use_cache, - output_attentions=output_attentions, - ) - attn_output = attn_outputs[0] # output_attn: a, present, (attentions) - outputs = attn_outputs[1:] - hidden_states = self.attention_adapters(attn_output, residual, None) - - if encoder_hidden_states is not None: - # add one self-attention block for cross-attention - if not hasattr(self, "crossattention"): - raise ValueError( - f"If `encoder_hidden_states` are passed, {self} has to be instantiated with " - "cross-attention layers by setting `config.add_cross_attention=True`" - ) - residual = hidden_states - hidden_states = self.ln_cross_attn(hidden_states) - cross_attn_outputs = self.crossattention( - hidden_states, - attention_mask=attention_mask, - head_mask=head_mask, - encoder_hidden_states=encoder_hidden_states, - encoder_attention_mask=encoder_attention_mask, - output_attentions=output_attentions, - ) - attn_output = cross_attn_outputs[0] - # residual connection - hidden_states = residual + attn_output - outputs = outputs + cross_attn_outputs[2:] # add cross attentions if we output attention weights - - residual = hidden_states - hidden_states = self.ln_2(hidden_states) - feed_forward_hidden_states = self.mlp(hidden_states) - # residual connection - hidden_states = self.output_adapters(feed_forward_hidden_states, residual, None) - - if use_cache: - outputs = (hidden_states,) + outputs - else: - outputs = (hidden_states,) + outputs[1:] - - return outputs # hidden_states, present, (attentions, cross_attentions) diff --git a/adapters/src/adapters/models/gptj/__init__.py b/adapters/src/adapters/models/gptj/__init__.py deleted file mode 100644 index 381342bd..00000000 --- a/adapters/src/adapters/models/gptj/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["GPTJAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import GPTJAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/gptj/adapter_model.py b/adapters/src/adapters/models/gptj/adapter_model.py deleted file mode 100644 index 3c585ba2..00000000 --- a/adapters/src/adapters/models/gptj/adapter_model.py +++ /dev/null @@ -1,149 +0,0 @@ -import logging - -import torch - -from transformers.models.gptj.modeling_gptj import GPTJ_START_DOCSTRING, GPTJModel, GPTJPreTrainedModel -from transformers.utils import add_start_docstrings - -from ...composition import adjust_tensors_for_parallel -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -logger = logging.getLogger(__name__) - - -@add_start_docstrings( - """ -The GPTJ Model that allows the loading of different heads for different tasks. This enables a flexible use of the -models and adapters. Since this class does classification on the last token, it requires to know the position of the -last token. If a :obj:`pad_token_id` is defined in the configuration, it finds the last token that is not a padding -token in each row. If no :obj:`pad_token_id` is defined, it simply takes the last value in each row of the batch. Since -it cannot guess the padding tokens when :obj:`inputs_embeds` are passed instead of :obj:`input_ids`, it does the same -(take the last value in each row of the batch). -""", - GPTJ_START_DOCSTRING, -) -class GPTJAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, GPTJPreTrainedModel): - _tied_weights_keys = [] # needs to be empty since GPT-J does not yet support prompt tuning - - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "question_answering", - "causal_lm", - ] - - def __init__(self, config): - super().__init__(config) - self.transformer = GPTJModel(config) - init(self.transformer) - - self._init_head_modules() - - self.init_weights() - - # Model parallel - self.model_parallel = False - self.device_map = None - - def forward( - self, - input_ids=None, - past_key_values=None, - attention_mask=None, - token_type_ids=None, - position_ids=None, - head_mask=None, - inputs_embeds=None, - use_cache=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.transformer( - input_ids, - past_key_values=past_key_values, - attention_mask=attention_mask, - token_type_ids=token_type_ids, - position_ids=position_ids, - head_mask=head_mask, - inputs_embeds=inputs_embeds, - use_cache=use_cache, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - - batch_size = outputs[0].shape[0] - - if self.config.pad_token_id is None: - # TODO-AH: this may result in unexpected behavior for classification. Find a better way to do this? - sequence_lengths = -1 - else: - if input_ids is not None: - sequence_lengths = torch.ne(input_ids, self.config.pad_token_id).sum(-1) - 1 - (sequence_lengths,) = adjust_tensors_for_parallel(outputs[0], sequence_lengths) - else: - sequence_lengths = -1 - logger.warning( - f"{self.__class__.__name__} will not detect padding tokens in `inputs_embeds`. Results may be " - "unexpected if using padding tokens in conjunction with `inputs_embeds.`" - ) - - cls_logits = outputs[0][range(batch_size), sequence_lengths] - - outputs = self.forward_head( - outputs, - head_name=head, - cls_output=cls_logits, - attention_mask=attention_mask, - return_dict=return_dict, - **kwargs, - ) - - return outputs - - # Copied from GPTJForCausalLM - def prepare_inputs_for_generation(self, input_ids, past=None, **kwargs): - token_type_ids = kwargs.get("token_type_ids", None) - # only last token for inputs_ids if past is defined in kwargs - if past: - input_ids = input_ids[:, -1].unsqueeze(-1) - if token_type_ids is not None: - token_type_ids = token_type_ids[:, -1].unsqueeze(-1) - - attention_mask = kwargs.get("attention_mask", None) - position_ids = kwargs.get("position_ids", None) - - if attention_mask is not None and position_ids is None: - # create position_ids on the fly for batch generation - position_ids = attention_mask.long().cumsum(-1) - 1 - position_ids.masked_fill_(attention_mask == 0, 1) - if past: - position_ids = position_ids[:, -1].unsqueeze(-1) - else: - position_ids = None - return { - "input_ids": input_ids, - "past_key_values": past, - "use_cache": kwargs.get("use_cache"), - "position_ids": position_ids, - "attention_mask": attention_mask, - "token_type_ids": token_type_ids, - "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), - } diff --git a/adapters/src/adapters/models/gptj/mixin_gptj.py b/adapters/src/adapters/models/gptj/mixin_gptj.py deleted file mode 100644 index cc20e63c..00000000 --- a/adapters/src/adapters/models/gptj/mixin_gptj.py +++ /dev/null @@ -1,56 +0,0 @@ -from typing import Iterable, Tuple - -import torch.nn as nn - -from ...methods.bottleneck import BottleneckLayer -from ...methods.lora import LoRALinear -from ...methods.prefix_tuning import PrefixTuningLayer -from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin - - -class GPTJAttentionAdaptersMixin: - def init_adapters(self, model_config, adapters_config): - self.location_key = "self" - - # Wrap layers for LoRA - self.q_proj = LoRALinear.wrap(self.q_proj, "selfattn", model_config, adapters_config, attn_key="q") - self.k_proj = LoRALinear.wrap(self.k_proj, "selfattn", model_config, adapters_config, attn_key="k") - self.v_proj = LoRALinear.wrap(self.v_proj, "selfattn", model_config, adapters_config, attn_key="v") - - self.prefix_tuning = PrefixTuningLayer( - self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config - ) - - -class GPTJMLPAdaptersMixin: - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.fc_in = LoRALinear.wrap(self.fc_in, "intermediate", model_config, adapters_config) - self.fc_out = LoRALinear.wrap(self.fc_out, "output", model_config, adapters_config) - - -class GPTJDecoderBlockAdaptersMixin: - """Adds adapters to the TransformerBlock module of GPTJ.""" - - def init_adapters(self, model_config, adapters_config): - self.attention_adapters = BottleneckLayer("mh_adapter") - self.output_adapters = BottleneckLayer("output_adapter") - - -class GPTJModelAdapterMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): - support_prompt_tuning = False - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - - # Register hook for post embedding forward - self.drop.register_forward_hook(self.post_embedding_forward) - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.base_model.h): - yield i, layer - - def post_embedding_forward(self, module, args, embedding_output): - embedding_output = self.invertible_adapters_forward(embedding_output) - # Prompt tuning not yet supported - return embedding_output diff --git a/adapters/src/adapters/models/gptj/modeling_gptj.py b/adapters/src/adapters/models/gptj/modeling_gptj.py deleted file mode 100644 index 700e919a..00000000 --- a/adapters/src/adapters/models/gptj/modeling_gptj.py +++ /dev/null @@ -1,149 +0,0 @@ -# coding=utf-8 -# Copyright 2021 The EleutherAI and HuggingFace Teams. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" PyTorch GPT-J model.""" - -from typing import Optional, Tuple, Union - -import torch -import torch.utils.checkpoint - -from transformers.models.gptj.modeling_gptj import GPTJAttention, GPTJBlock, apply_rotary_pos_emb, get_embed_positions -from transformers.utils.import_utils import is_torch_fx_proxy - -from ...composition import adjust_tensors_for_parallel, adjust_tensors_for_parallel_, match_attn_matrices_for_parallel -from .mixin_gptj import GPTJAttentionAdaptersMixin, GPTJDecoderBlockAdaptersMixin - - -class GPTJAttentionWithAdapters(GPTJAttentionAdaptersMixin, GPTJAttention): - def forward( - self, - hidden_states: torch.FloatTensor, - layer_past: Optional[Tuple[torch.Tensor]] = None, - attention_mask: Optional[torch.FloatTensor] = None, - position_ids: Optional[torch.LongTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - use_cache: Optional[bool] = False, - output_attentions: Optional[bool] = False, - ) -> Union[ - Tuple[torch.Tensor, Tuple[torch.Tensor]], - Optional[Tuple[torch.Tensor, Tuple[torch.Tensor], Tuple[torch.Tensor, ...]]], - ]: - query = self.q_proj(hidden_states) - key = self.k_proj(hidden_states) - value = self.v_proj(hidden_states) - - query, key, value = match_attn_matrices_for_parallel(query, key, value) - (attention_mask,) = adjust_tensors_for_parallel(query, attention_mask) - - query = self._split_heads(query, self.num_attention_heads, self.head_dim, True) - key = self._split_heads(key, self.num_attention_heads, self.head_dim, True) - value = self._split_heads(value, self.num_attention_heads, self.head_dim, False) - - if is_torch_fx_proxy(position_ids) or torch.jit.is_tracing(): - # The logic to conditionally copy to GPU could not be traced, so we do this - # every time in the torch.fx case - embed_positions = get_embed_positions(self.embed_positions, position_ids) - else: - embed_positions = self._get_embed_positions(position_ids) - - repeated_position_ids = position_ids.unsqueeze(-1).repeat(1, 1, embed_positions.shape[-1]) - sincos = torch.gather(embed_positions, 1, repeated_position_ids) - sin, cos = torch.split(sincos, sincos.shape[-1] // 2, dim=-1) - - if self.rotary_dim is not None: - k_rot = key[:, :, :, : self.rotary_dim] - k_pass = key[:, :, :, self.rotary_dim :] - - q_rot = query[:, :, :, : self.rotary_dim] - q_pass = query[:, :, :, self.rotary_dim :] - - k_rot = apply_rotary_pos_emb(k_rot, sin, cos) - q_rot = apply_rotary_pos_emb(q_rot, sin, cos) - - key = torch.cat([k_rot, k_pass], dim=-1) - query = torch.cat([q_rot, q_pass], dim=-1) - else: - key = apply_rotary_pos_emb(key, sin, cos) - query = apply_rotary_pos_emb(query, sin, cos) - - key = key.permute(0, 2, 1, 3) - query = query.permute(0, 2, 1, 3) - - if layer_past is not None: - past_key = layer_past[0] - past_value = layer_past[1] - key = torch.cat((past_key, key), dim=-2) - value = torch.cat((past_value, value), dim=-2) - - if use_cache is True: - present = (key, value) - else: - present = None - - key, value, attention_mask = self.prefix_tuning(key, value, hidden_states, attention_mask) - (query,) = adjust_tensors_for_parallel(key, query) - - # compute self-attention: V x Softmax(QK^T) - attn_output, attn_weights = self._attn(query, key, value, attention_mask, head_mask) - - attn_output = self._merge_heads(attn_output, self.num_attention_heads, self.head_dim) - attn_output = self.out_proj(attn_output) - attn_output = self.resid_dropout(attn_output) - - outputs = (attn_output, present) - if output_attentions: - outputs += (attn_weights,) - - return outputs # a, present, (attentions) - - -class GPTJBlockWithAdapters(GPTJDecoderBlockAdaptersMixin, GPTJBlock): - def forward( - self, - hidden_states: Optional[torch.FloatTensor], - layer_past: Optional[Tuple[torch.Tensor]] = None, - attention_mask: Optional[torch.FloatTensor] = None, - position_ids: Optional[torch.LongTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - use_cache: Optional[bool] = False, - output_attentions: Optional[bool] = False, - ) -> Union[Tuple[torch.Tensor], Optional[Tuple[torch.Tensor, Tuple[torch.FloatTensor, ...]]]]: - adjust_tensors_for_parallel_(hidden_states, attention_mask) - residual = hidden_states - hidden_states = self.ln_1(hidden_states) - attn_outputs = self.attn( - hidden_states, - layer_past=layer_past, - attention_mask=attention_mask, - position_ids=position_ids, - head_mask=head_mask, - use_cache=use_cache, - output_attentions=output_attentions, - ) - attn_output = attn_outputs[0] # output_attn: a, present, (attentions) - outputs = attn_outputs[1:] - - feed_forward_hidden_states = self.mlp(hidden_states) - # See https://github.com/adapter-hub/adapters/pull/426#discussion_r994450898 - hidden_states = self.attention_adapters(attn_output, residual, None) - - hidden_states = self.output_adapters(feed_forward_hidden_states, hidden_states, None) - - if use_cache: - outputs = (hidden_states,) + outputs - else: - outputs = (hidden_states,) + outputs[1:] - - return outputs # hidden_states, present, (attentions) diff --git a/adapters/src/adapters/models/llama/__init__.py b/adapters/src/adapters/models/llama/__init__.py deleted file mode 100644 index 884b3715..00000000 --- a/adapters/src/adapters/models/llama/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["LlamaAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import LlamaAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/llama/adapter_model.py b/adapters/src/adapters/models/llama/adapter_model.py deleted file mode 100644 index 97cc0c4e..00000000 --- a/adapters/src/adapters/models/llama/adapter_model.py +++ /dev/null @@ -1,151 +0,0 @@ -import logging - -import torch - -from transformers.models.llama.modeling_llama import LLAMA_START_DOCSTRING, LlamaModel, LlamaPreTrainedModel -from transformers.utils import add_start_docstrings - -from ...composition import adjust_tensors_for_parallel -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -logger = logging.getLogger(__name__) - - -@add_start_docstrings( - """ -The Llama Model that allows the loading of different heads dor different tasks. This enables a flexible use of the -models and adpters. Since this class does classification on the last token, it requires to know the position of the -last token. If a :obj:`pad_token_id` is defined in the configuration, it finds the last token that is not a padding -token in each row. If no :obj:`pad_token_id` is defined, it simply takes the last value in each row of the batch. Since -it cannot guess the padding tokens when :obj:`inputs_embeds` are passed instead of :obj:`input_ids`, it does the same -(take the last value in each row of the batch). -""", - LLAMA_START_DOCSTRING, -) -class LlamaAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, LlamaPreTrainedModel): - _tied_weights_keys = [] # needs to be empty since LLaMA does not yet support prompt tuning - - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "question_answering", - "causal_lm", - ] - - def __init__(self, config): - super().__init__(config) - self.model = LlamaModel(config) - init(self.model) - - self._init_head_modules() - - self.init_weights() - - # Model parallel - self.model_parallel = False - self.device_map = None - self.post_init() - - def forward( - self, - input_ids=None, - attention_mask=None, - position_ids=None, - past_key_values=None, - inputs_embeds=None, - use_cache=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions - output_hidden_states = ( - output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states - ) - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.model( - input_ids, - past_key_values=past_key_values, - attention_mask=attention_mask, - position_ids=position_ids, - inputs_embeds=inputs_embeds, - use_cache=use_cache, - output_attentions=output_attentions, - return_dict=return_dict, - output_hidden_states=output_hidden_states, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - - batch_size = outputs[0].shape[0] - - if self.config.pad_token_id is None: - # TODO-AH: this may result in unexpected behavior for classification. Find a better way to do this? - sequence_lengths = -1 - else: - if input_ids is not None: - sequence_lengths = torch.ne(input_ids, self.config.pad_token_id).sum(-1) - 1 - (sequence_lengths,) = adjust_tensors_for_parallel(outputs[0], sequence_lengths) - else: - sequence_lengths = -1 - logger.warning( - f"{self.__class__.__name__} will not detect padding tokens in `inputs_embeds`. Results may be " - "unexpected if using padding tokens in conjunction with `inputs_embeds.`" - ) - - cls_logits = outputs[0][range(batch_size), sequence_lengths] - - outputs = self.forward_head( - outputs, - head_name=head, - cls_output=cls_logits, - attention_mask=attention_mask, - return_dict=return_dict, - **kwargs, - ) - - return outputs - - def prepare_inputs_for_generation( - self, input_ids, past_key_values=None, attention_mask=None, inputs_embeds=None, **kwargs - ): - if past_key_values: - input_ids = input_ids[:, -1:] - - position_ids = kwargs.get("position_ids", None) - if attention_mask is not None and position_ids is None: - # create position_ids on the fly for batch generation - position_ids = attention_mask.long().cumsum(-1) - 1 - position_ids.masked_fill_(attention_mask == 0, 1) - if past_key_values: - position_ids = position_ids[:, -1].unsqueeze(-1) - - # if `inputs_embeds` are passed, we only want to use them in the 1st generation step - if inputs_embeds is not None and past_key_values is None: - model_inputs = {"inputs_embeds": inputs_embeds} - else: - model_inputs = {"input_ids": input_ids} - - model_inputs.update( - { - "position_ids": position_ids, - "past_key_values": past_key_values, - "use_cache": kwargs.get("use_cache"), - "attention_mask": attention_mask, - "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), - } - ) - return model_inputs diff --git a/adapters/src/adapters/models/llama/mixin_llama.py b/adapters/src/adapters/models/llama/mixin_llama.py deleted file mode 100644 index aae33943..00000000 --- a/adapters/src/adapters/models/llama/mixin_llama.py +++ /dev/null @@ -1,46 +0,0 @@ -from typing import Iterable, Tuple - -import torch.nn as nn - -from ...methods.bottleneck import BottleneckLayer -from ...methods.lora import LoRALinear -from ...methods.prefix_tuning import PrefixTuningLayer -from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin - - -class LlamaAttentionMixin: - def init_adapters(self, model_config, adapters_config): - self.q_proj = LoRALinear.wrap(self.q_proj, "selfattn", model_config, adapters_config, attn_key="q") - self.k_proj = LoRALinear.wrap(self.k_proj, "selfattn", model_config, adapters_config, attn_key="k") - self.v_proj = LoRALinear.wrap(self.v_proj, "selfattn", model_config, adapters_config, attn_key="v") - - self.prefix_tuning = PrefixTuningLayer("self_prefix", model_config, adapters_config) - - -class LlamaDecoderLayerMixin: - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.mlp.down_proj = LoRALinear.wrap(self.mlp.down_proj, "intermediate", model_config, adapters_config) - self.mlp.up_proj = LoRALinear.wrap(self.mlp.up_proj, "output", model_config, adapters_config) - - self.attention_adapters = BottleneckLayer("mh_adapter") - self.output_adapters = BottleneckLayer("output_adapter") - - -class LlamaModelAdapterMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): - support_prompt_tuning = False - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - - # Register hook for post embedding forward - self.embed_tokens.register_forward_hook(self.post_embedding_forward) - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.layers): - yield i, layer - - def post_embedding_forward(self, module, args, embedding_output): - embedding_output = self.invertible_adapters_forward(embedding_output) - # Prompt tuning not yet supported - return embedding_output diff --git a/adapters/src/adapters/models/llama/modeling_llama.py b/adapters/src/adapters/models/llama/modeling_llama.py deleted file mode 100644 index baefac75..00000000 --- a/adapters/src/adapters/models/llama/modeling_llama.py +++ /dev/null @@ -1,425 +0,0 @@ -# coding=utf-8 -# Copyright 2022 EleutherAI and the HuggingFace Inc. team. All rights reserved. -# -# This code is based on EleutherAI's GPT-NeoX library and the GPT-NeoX -# and OPT implementations in this library. It has been modified from its -# original forms to accommodate minor architectural differences compared -# to GPT-NeoX and OPT used by the Meta AI team that trained the model. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" PyTorch LLaMA model.""" -import math -import warnings -from typing import Optional, Tuple - -import torch -import torch.nn.functional as F -import torch.utils.checkpoint -from torch import nn - -from adapters.composition import ( - adjust_tensors_for_parallel, - adjust_tensors_for_parallel_, - match_attn_matrices_for_parallel, -) -from transformers.cache_utils import Cache -from transformers.models.llama.modeling_llama import LlamaAttention, LlamaDecoderLayer, apply_rotary_pos_emb, repeat_kv -from transformers.utils import logging - -from .mixin_llama import LlamaAttentionMixin, LlamaDecoderLayerMixin - - -logger = logging.get_logger(__name__) - - -class LlamaAttentionWithAdapters(LlamaAttentionMixin, LlamaAttention): - """Multi-headed attention from 'Attention Is All You Need' paper""" - - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.Tensor] = None, - position_ids: Optional[torch.LongTensor] = None, - past_key_value: Optional[Cache] = None, - output_attentions: bool = False, - use_cache: bool = False, - **kwargs, - ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: - if "padding_mask" in kwargs: - warnings.warn( - "Passing `padding_mask` is deprecated and will be removed in v4.37. Please make sure use" - " `attention_mask` instead.`" - ) - - bsz, q_len, _ = hidden_states.size() - - if self.config.pretraining_tp > 1: - key_value_slicing = (self.num_key_value_heads * self.head_dim) // self.config.pretraining_tp - query_slices = self.q_proj.weight.split( - (self.num_heads * self.head_dim) // self.config.pretraining_tp, dim=0 - ) - key_slices = self.k_proj.weight.split(key_value_slicing, dim=0) - value_slices = self.v_proj.weight.split(key_value_slicing, dim=0) - - query_states = [F.linear(hidden_states, query_slices[i]) for i in range(self.config.pretraining_tp)] - query_states = torch.cat(query_states, dim=-1) - - key_states = [F.linear(hidden_states, key_slices[i]) for i in range(self.config.pretraining_tp)] - key_states = torch.cat(key_states, dim=-1) - - value_states = [F.linear(hidden_states, value_slices[i]) for i in range(self.config.pretraining_tp)] - value_states = torch.cat(value_states, dim=-1) - - else: - query_states = self.q_proj(hidden_states) - key_states = self.k_proj(hidden_states) - value_states = self.v_proj(hidden_states) - - query_states = query_states.view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) - key_states = key_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) - value_states = value_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) - - query_states, key_states, value_states = match_attn_matrices_for_parallel( - query_states, key_states, value_states - ) - (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) - - kv_seq_len = key_states.shape[-2] - if past_key_value is not None: - if self.layer_idx is None: - raise ValueError( - "The cache structure has changed since version v4.36. If you are using" - f" {self.__class__.__name__} for auto-regressive decoding with k/v caching, please make sure to" - " initialize the attention class with a layer index." - ) - kv_seq_len += past_key_value.get_usable_length(kv_seq_len, self.layer_idx) - cos, sin = self.rotary_emb(value_states, seq_len=kv_seq_len) - query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, position_ids) - - if past_key_value is not None: - cache_kwargs = {"sin": sin, "cos": cos} # Specific to RoPE models - key_states, value_states = past_key_value.update(key_states, value_states, self.layer_idx, cache_kwargs) - - key_states = repeat_kv(key_states, self.num_key_value_groups) - value_states = repeat_kv(value_states, self.num_key_value_groups) - - key_states, value_states, attention_mask = self.prefix_tuning( - key_states, value_states, hidden_states, attention_mask - ) - (query_states,) = adjust_tensors_for_parallel(key_states, query_states) - - attn_weights = torch.matmul(query_states, key_states.transpose(2, 3)) / math.sqrt(self.head_dim) - - # Make adjustments since (parallel) prefix tuning changes the attention mask - kv_seq_len = key_states.shape[-2] - bsz = key_states.shape[0] - - if attn_weights.size() != (bsz, self.num_heads, q_len, kv_seq_len): - raise ValueError( - f"Attention weights should be of size {(bsz, self.num_heads, q_len, kv_seq_len)}, but is" - f" {attn_weights.size()}" - ) - - if attention_mask is not None: - if attention_mask.size() != (bsz, 1, q_len, kv_seq_len): - raise ValueError( - f"Attention mask should be of size {(bsz, 1, q_len, kv_seq_len)}, but is {attention_mask.size()}" - ) - attn_weights = attn_weights + attention_mask - - # upcast attention to fp32 - attn_weights = nn.functional.softmax(attn_weights, dim=-1, dtype=torch.float32).to(query_states.dtype) - attn_weights = nn.functional.dropout(attn_weights, p=self.attention_dropout, training=self.training) - attn_output = torch.matmul(attn_weights, value_states) - - if attn_output.size() != (bsz, self.num_heads, q_len, self.head_dim): - raise ValueError( - f"`attn_output` should be of size {(bsz, self.num_heads, q_len, self.head_dim)}, but is" - f" {attn_output.size()}" - ) - - attn_output = attn_output.transpose(1, 2).contiguous() - - attn_output = attn_output.reshape(bsz, q_len, self.hidden_size) - - if self.config.pretraining_tp > 1: - attn_output = attn_output.split(self.hidden_size // self.config.pretraining_tp, dim=2) - o_proj_slices = self.o_proj.weight.split(self.hidden_size // self.config.pretraining_tp, dim=1) - attn_output = sum([F.linear(attn_output[i], o_proj_slices[i]) for i in range(self.config.pretraining_tp)]) - else: - attn_output = self.o_proj(attn_output) - - if not output_attentions: - attn_weights = None - - return attn_output, attn_weights, past_key_value - - -class LlamaFlashAttention2WithAdapters(LlamaAttentionMixin, LlamaAttention): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.LongTensor] = None, - position_ids: Optional[torch.LongTensor] = None, - past_key_value: Optional[Cache] = None, - output_attentions: bool = False, - use_cache: bool = False, - **kwargs, - ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: - # LlamaFlashAttention2 attention does not support output_attentions - if "padding_mask" in kwargs: - warnings.warn( - "Passing `padding_mask` is deprecated and will be removed in v4.37. Please make sure use" - " `attention_mask` instead.`" - ) - - # overwrite attention_mask with padding_mask - attention_mask = kwargs.pop("padding_mask") - - output_attentions = False - - bsz, q_len, _ = hidden_states.size() - - query_states = self.q_proj(hidden_states) - key_states = self.k_proj(hidden_states) - value_states = self.v_proj(hidden_states) - - # Flash attention requires the input to have the shape - # batch_size x seq_length x head_dim x hidden_dim - # therefore we just need to keep the original shape - query_states = query_states.view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) - key_states = key_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) - value_states = value_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) - - query_states, key_states, value_states = match_attn_matrices_for_parallel( - query_states, key_states, value_states - ) - (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) - - kv_seq_len = key_states.shape[-2] - if past_key_value is not None: - kv_seq_len += past_key_value.get_usable_length(kv_seq_len, self.layer_idx) - cos, sin = self.rotary_emb(value_states, seq_len=kv_seq_len) - query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, position_ids) - - key_states, value_states, attention_mask = self.prefix_tuning( - key_states, value_states, hidden_states, attention_mask - ) - (query_states,) = adjust_tensors_for_parallel(key_states, query_states) - - # Make adjustments since (parallel) prefix tuning changes the attention mask - kv_seq_len = key_states.shape[-2] - bsz = key_states.shape[0] - - if past_key_value is not None: - cache_kwargs = {"sin": sin, "cos": cos} # Specific to RoPE models - key_states, value_states = past_key_value.update(key_states, value_states, self.layer_idx, cache_kwargs) - - # TODO: These transpose are quite inefficient but Flash Attention requires the layout [batch_size, sequence_length, num_heads, head_dim]. We would need to refactor the KV cache - # to be able to avoid many of these transpose/reshape/view. - query_states = query_states.transpose(1, 2) - key_states = key_states.transpose(1, 2) - value_states = value_states.transpose(1, 2) - - dropout_rate = self.attention_dropout if self.training else 0.0 - - # In PEFT, usually we cast the layer norms in float32 for training stability reasons - # therefore the input hidden states gets silently casted in float32. Hence, we need - # cast them back in the correct dtype just to be sure everything works as expected. - # This might slowdown training & inference so it is recommended to not cast the LayerNorms - # in fp32. (LlamaRMSNorm handles it correctly) - - input_dtype = query_states.dtype - if input_dtype == torch.float32: - # Handle the case where the model is quantized - if hasattr(self.config, "_pre_quantization_dtype"): - target_dtype = self.config._pre_quantization_dtype - else: - target_dtype = self.q_proj.weight.dtype - - logger.warning_once( - "The input hidden states seems to be silently casted in float32, this might be related to the fact" - " you have upcasted embedding or layer norm layers in float32. We will cast back the input in" - f" {target_dtype}." - ) - - query_states = query_states.to(target_dtype) - key_states = key_states.to(target_dtype) - value_states = value_states.to(target_dtype) - - attn_output = self._flash_attention_forward( - query_states, key_states, value_states, attention_mask, q_len, dropout=dropout_rate - ) - - attn_output = attn_output.reshape(bsz, q_len, self.hidden_size).contiguous() - attn_output = self.o_proj(attn_output) - - if not output_attentions: - attn_weights = None - - return attn_output, attn_weights, past_key_value - - -class LlamaSdpaAttentionWithAdapters(LlamaAttentionMixin, LlamaAttention): - - # Adapted from LlamaAttention.forward - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.Tensor] = None, - position_ids: Optional[torch.LongTensor] = None, - past_key_value: Optional[Cache] = None, - output_attentions: bool = False, - use_cache: bool = False, - ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: - if output_attentions: - # TODO: Improve this warning with e.g. `model.config.attn_implementation = "manual"` once this is implemented. - logger.warning_once( - "LlamaModel is using LlamaSdpaAttention, but `torch.nn.functional.scaled_dot_product_attention` does" - " not support `output_attentions=True`. Falling back to the manual attention implementation, but" - " specifying the manual implementation will be required from Transformers version v5.0.0 onwards. This" - ' warning can be removed using the argument `attn_implementation="eager"` when loading the model.' - ) - return super().forward( - hidden_states=hidden_states, - attention_mask=attention_mask, - position_ids=position_ids, - past_key_value=past_key_value, - output_attentions=output_attentions, - use_cache=use_cache, - ) - - bsz, q_len, _ = hidden_states.size() - - query_states = self.q_proj(hidden_states) - key_states = self.k_proj(hidden_states) - value_states = self.v_proj(hidden_states) - - query_states = query_states.view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) - key_states = key_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) - value_states = value_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2) - - query_states, key_states, value_states = match_attn_matrices_for_parallel( - query_states, key_states, value_states - ) - (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) - - kv_seq_len = key_states.shape[-2] - if past_key_value is not None: - kv_seq_len += past_key_value.get_usable_length(kv_seq_len, self.layer_idx) - cos, sin = self.rotary_emb(value_states, seq_len=kv_seq_len) - - query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, position_ids) - - if past_key_value is not None: - cache_kwargs = {"sin": sin, "cos": cos} # Specific to RoPE models - key_states, value_states = past_key_value.update(key_states, value_states, self.layer_idx, cache_kwargs) - - key_states = repeat_kv(key_states, self.num_key_value_groups) - value_states = repeat_kv(value_states, self.num_key_value_groups) - - key_states, value_states, attention_mask = self.prefix_tuning( - key_states, value_states, hidden_states, attention_mask - ) - (query_states,) = adjust_tensors_for_parallel(key_states, query_states) - - # Make adjustments since (parallel) prefix tuning changes the attention mask - kv_seq_len = key_states.shape[-2] - bsz = key_states.shape[0] - - if attention_mask is not None: - if attention_mask.size() != (bsz, 1, q_len, kv_seq_len): - raise ValueError( - f"Attention mask should be of size {(bsz, 1, q_len, kv_seq_len)}, but is {attention_mask.size()}" - ) - - # SDPA with memory-efficient backend is currently (torch==2.1.2) bugged with non-contiguous inputs with custom attn_mask, - # Reference: https://github.com/pytorch/pytorch/issues/112577. - if query_states.device.type == "cuda" and attention_mask is not None: - query_states = query_states.contiguous() - key_states = key_states.contiguous() - value_states = value_states.contiguous() - - attn_output = torch.nn.functional.scaled_dot_product_attention( - query_states, - key_states, - value_states, - attn_mask=attention_mask, - dropout_p=self.attention_dropout if self.training else 0.0, - # The q_len > 1 is necessary to match with AttentionMaskConverter.to_causal_4d that does not create a causal mask in case q_len == 1. - is_causal=self.is_causal and attention_mask is None and q_len > 1, - ) - - attn_output = attn_output.transpose(1, 2).contiguous() - attn_output = attn_output.reshape(bsz, q_len, self.hidden_size) - - attn_output = self.o_proj(attn_output) - - return attn_output, None, past_key_value - - -class LlamaDecoderLayerWithAdapters(LlamaDecoderLayerMixin, LlamaDecoderLayer): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.Tensor] = None, - position_ids: Optional[torch.LongTensor] = None, - past_key_value: Optional[Tuple[torch.Tensor]] = None, - output_attentions: Optional[bool] = False, - use_cache: Optional[bool] = False, - ) -> Tuple[torch.FloatTensor, Optional[Tuple[torch.FloatTensor, torch.FloatTensor]]]: - """ - Args: - hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)` - attention_mask (`torch.FloatTensor`, *optional*): attention mask of size - `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. - output_attentions (`bool`, *optional*): - Whether or not to return the attentions tensors of all attention layers. See `attentions` under - returned tensors for more detail. - use_cache (`bool`, *optional*): - If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding - (see `past_key_values`). - past_key_value (`Tuple(torch.FloatTensor)`, *optional*): cached past key and value projection states - """ - - adjust_tensors_for_parallel_(hidden_states, attention_mask, position_ids) - residual = hidden_states - - hidden_states = self.input_layernorm(hidden_states) - - # Self Attention - hidden_states, self_attn_weights, present_key_value = self.self_attn( - hidden_states=hidden_states, - attention_mask=attention_mask, - position_ids=position_ids, - past_key_value=past_key_value, - output_attentions=output_attentions, - use_cache=use_cache, - ) - hidden_states = self.attention_adapters(hidden_states, residual, None) - - # Fully Connected - residual = hidden_states - hidden_states = self.post_attention_layernorm(hidden_states) - hidden_states = self.mlp(hidden_states) - hidden_states = self.output_adapters(hidden_states, residual, None) - - outputs = (hidden_states,) - - if output_attentions: - outputs += (self_attn_weights,) - - if use_cache: - outputs += (present_key_value,) - - return outputs diff --git a/adapters/src/adapters/models/mbart/__init__.py b/adapters/src/adapters/models/mbart/__init__.py deleted file mode 100644 index 0783fb5e..00000000 --- a/adapters/src/adapters/models/mbart/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["MBartAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import MBartAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/mbart/adapter_model.py b/adapters/src/adapters/models/mbart/adapter_model.py deleted file mode 100644 index 186aef5c..00000000 --- a/adapters/src/adapters/models/mbart/adapter_model.py +++ /dev/null @@ -1,171 +0,0 @@ -import torch - -from transformers.models.mbart.modeling_mbart import ( - MBART_INPUTS_DOCSTRING, - MBART_START_DOCSTRING, - MBartConfig, - MBartModel, - MBartPreTrainedModel, - shift_tokens_right, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...composition import adjust_tensors_for_parallel -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - "MBART Model with the option to add multiple flexible prediction heads on top.", MBART_START_DOCSTRING -) -class MBartAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, MBartPreTrainedModel): - _tied_weights_keys = [ - "encoder.embed_tokens.weight", - "decoder.embed_tokens.weight", - ] - - head_types = [ - "classification", - "multilabel_classification", - "question_answering", - "seq2seq_lm", - ] - - def __init__(self, config: MBartConfig, **kwargs): - super().__init__(config, **kwargs) - self.model = MBartModel(config) - init(self.model) - - self._init_head_modules() - - self.post_init() - - def get_encoder(self): - return self.model.get_encoder() - - def get_decoder(self): - return self.model.get_decoder() - - @add_start_docstrings_to_model_forward(MBART_INPUTS_DOCSTRING) - def forward( - self, - input_ids=None, - attention_mask=None, - decoder_input_ids=None, - decoder_attention_mask=None, - head_mask=None, - decoder_head_mask=None, - cross_attn_head_mask=None, - encoder_outputs=None, - inputs_embeds=None, - decoder_inputs_embeds=None, - use_cache=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - past_key_values=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - r""" - labels (:obj:`torch.LongTensor` of shape :obj:`(batch_size,)`, `optional`): - Labels for computing the sequence classification/regression loss. Indices should be in :obj:`[0, ..., - config.num_labels - 1]`. If :obj:`config.num_labels > 1` a classification loss is computed (Cross-Entropy). - """ - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - if "labels" in kwargs or "start_positions" in kwargs and "end_positions" in kwargs: - use_cache = False - - outputs, context = self.model( - input_ids, - attention_mask=attention_mask, - decoder_input_ids=decoder_input_ids, - decoder_attention_mask=decoder_attention_mask, - head_mask=head_mask, - decoder_head_mask=decoder_head_mask, - cross_attn_head_mask=cross_attn_head_mask, - encoder_outputs=encoder_outputs, - inputs_embeds=inputs_embeds, - decoder_inputs_embeds=decoder_inputs_embeds, - use_cache=use_cache, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - past_key_values=past_key_values, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - # sequence classification based on last token in sequence - x = outputs[0] # last hidden state - if input_ids is not None and x.shape[1] == input_ids.shape[1]: - eos_mask = input_ids.eq(self.config.eos_token_id) - (eos_mask,) = adjust_tensors_for_parallel(x, eos_mask) - if len(torch.unique(eos_mask.sum(1))) > 1: - raise ValueError("All examples must have the same number of tokens.") - cls_representation = x[eos_mask, :].view(x.size(0), -1, x.size(-1))[:, -1, :] - else: - cls_representation = x - - head_outputs = self.forward_head( - outputs, - head_name=head, - cls_output=cls_representation, - attention_mask=attention_mask, - return_dict=return_dict, - **kwargs, - ) - - return head_outputs - - # Copied from MBartForConditionalGeneration - def prepare_inputs_for_generation( - self, - decoder_input_ids, - past=None, - attention_mask=None, - head_mask=None, - decoder_head_mask=None, - cross_attn_head_mask=None, - use_cache=None, - encoder_outputs=None, - **kwargs - ): - # cut decoder_input_ids if past is used - if past is not None: - decoder_input_ids = decoder_input_ids[:, -1:] - - return { - "input_ids": None, # encoder_outputs is defined. input_ids not needed - "encoder_outputs": encoder_outputs, - "past_key_values": past, - "decoder_input_ids": decoder_input_ids, - "attention_mask": attention_mask, - "head_mask": head_mask, - "decoder_head_mask": decoder_head_mask, - "cross_attn_head_mask": cross_attn_head_mask, - "use_cache": use_cache, # change this to avoid caching (presumably for debugging) - "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), - } - - # Copied from MBartForConditionalGeneration - def prepare_decoder_input_ids_from_labels(self, labels: torch.Tensor): - return shift_tokens_right(labels, self.config.pad_token_id) - - # Copied from MBartForConditionalGeneration - @staticmethod - def _reorder_cache(past, beam_idx): - reordered_past = () - for layer_past in past: - # cached cross_attention states don't have to be reordered -> they are always the same - reordered_past += ( - tuple(past_state.index_select(0, beam_idx) for past_state in layer_past[:2]) + layer_past[2:], - ) - return reordered_past diff --git a/adapters/src/adapters/models/mbart/modeling_mbart.py b/adapters/src/adapters/models/mbart/modeling_mbart.py deleted file mode 100644 index 0f8f0d53..00000000 --- a/adapters/src/adapters/models/mbart/modeling_mbart.py +++ /dev/null @@ -1,308 +0,0 @@ -# coding=utf-8 -# Copyright 2021, The Facebook AI Research Team and The HuggingFace Inc. team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" PyTorch MBART model.""" -from typing import Optional, Tuple - -import torch -import torch.utils.checkpoint -from torch import nn - -from transformers.models.mbart.modeling_mbart import MBartAttention, MBartDecoderLayer, MBartEncoderLayer - -from ...composition import adjust_tensors_for_parallel, adjust_tensors_for_parallel_, match_attn_matrices_for_parallel -from ..bart.mixin_bart import BartAttentionAdaptersMixin, BartDecoderLayerAdaptersMixin, BartEncoderLayerAdaptersMixin - - -class MBartAttentionWithAdapters(BartAttentionAdaptersMixin, MBartAttention): - """Multi-headed attention from 'Attention Is All You Need' paper""" - - def forward( - self, - hidden_states: torch.Tensor, - key_value_states: Optional[torch.Tensor] = None, - past_key_value: Optional[Tuple[torch.Tensor]] = None, - attention_mask: Optional[torch.Tensor] = None, - layer_head_mask: Optional[torch.Tensor] = None, - output_attentions: bool = False, - ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: - """Input shape: Batch x Time x Channel""" - - # if key_value_states are provided this layer is used as a cross-attention layer - # for the decoder - is_cross_attention = key_value_states is not None - - bsz, tgt_len, _ = hidden_states.size() - - # get query proj - query_states = self.q_proj(hidden_states) * self.scaling - # get key, value proj - # `past_key_value[0].shape[2] == key_value_states.shape[1]` - # is checking that the `sequence_length` of the `past_key_value` is the same as - # the provided `key_value_states` to support prefix tuning - if ( - is_cross_attention - and past_key_value is not None - and past_key_value[0].shape[2] == key_value_states.shape[1] - ): - # reuse k,v, cross_attentions - key_states = past_key_value[0] - value_states = past_key_value[1] - elif is_cross_attention: - # cross_attentions - key_states = self._shape(self.k_proj(key_value_states), -1, bsz) - value_states = self._shape(self.v_proj(key_value_states), -1, bsz) - elif past_key_value is not None: - # reuse k, v, self_attention - key_states = self._shape(self.k_proj(hidden_states), -1, bsz) - value_states = self._shape(self.v_proj(hidden_states), -1, bsz) - key_states = torch.cat([past_key_value[0], key_states], dim=2) - value_states = torch.cat([past_key_value[1], value_states], dim=2) - else: - # self_attention - key_states = self._shape(self.k_proj(hidden_states), -1, bsz) - value_states = self._shape(self.v_proj(hidden_states), -1, bsz) - - query_states, key_states, value_states = match_attn_matrices_for_parallel( - query_states, key_states, value_states - ) - (attention_mask,) = adjust_tensors_for_parallel(query_states, attention_mask) - - if self.is_decoder: - # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. - # Further calls to cross_attention layer can then reuse all cross-attention - # key/value_states (first "if" case) - # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of - # all previous decoder key/value_states. Further calls to uni-directional self-attention - # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) - # if encoder bi-directional self-attention `past_key_value` is always `None` - past_key_value = (key_states, value_states) - - key_states, value_states, attention_mask = self.prefix_tuning( - key_states, value_states, hidden_states, attention_mask - ) - (query_states,) = adjust_tensors_for_parallel(key_states, query_states) - bsz = query_states.size(0) - - proj_shape = (bsz * self.num_heads, -1, self.head_dim) - - query_states = self._shape(query_states, tgt_len, bsz).view(*proj_shape) - key_states = key_states.view(*proj_shape) - value_states = value_states.view(*proj_shape) - - src_len = key_states.size(1) - attn_weights = torch.bmm(query_states, key_states.transpose(1, 2)) - - if attn_weights.size() != (bsz * self.num_heads, tgt_len, src_len): - raise ValueError( - f"Attention weights should be of size {(bsz * self.num_heads, tgt_len, src_len)}, but is" - f" {attn_weights.size()}" - ) - - if attention_mask is not None: - if attention_mask.size() != (bsz, 1, tgt_len, src_len): - raise ValueError( - f"Attention mask should be of size {(bsz, 1, tgt_len, src_len)}, but is {attention_mask.size()}" - ) - attn_weights = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) + attention_mask - attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) - - attn_weights = nn.functional.softmax(attn_weights, dim=-1) - - if layer_head_mask is not None: - if layer_head_mask.size() != (self.num_heads,): - raise ValueError( - f"Head mask for a single layer should be of size {(self.num_heads,)}, but is" - f" {layer_head_mask.size()}" - ) - attn_weights = layer_head_mask.view(1, -1, 1, 1) * attn_weights.view(bsz, self.num_heads, tgt_len, src_len) - attn_weights = attn_weights.view(bsz * self.num_heads, tgt_len, src_len) - - if output_attentions: - # this operation is a bit awkward, but it's required to - # make sure that attn_weights keeps its gradient. - # In order to do so, attn_weights have to be reshaped - # twice and have to be reused in the following - attn_weights_reshaped = attn_weights.view(bsz, self.num_heads, tgt_len, src_len) - attn_weights = attn_weights_reshaped.view(bsz * self.num_heads, tgt_len, src_len) - else: - attn_weights_reshaped = None - - attn_probs = nn.functional.dropout(attn_weights, p=self.dropout, training=self.training) - - attn_output = torch.bmm(attn_probs, value_states) - - if attn_output.size() != (bsz * self.num_heads, tgt_len, self.head_dim): - raise ValueError( - f"`attn_output` should be of size {(bsz, self.num_heads, tgt_len, self.head_dim)}, but is" - f" {attn_output.size()}" - ) - - attn_output = attn_output.view(bsz, self.num_heads, tgt_len, self.head_dim) - attn_output = attn_output.transpose(1, 2) - - # Use the `embed_dim` from the config (stored in the class) rather than `hidden_state` because `attn_output` can be - # partitioned aross GPUs when using tensor-parallelism. - attn_output = attn_output.reshape(bsz, tgt_len, self.embed_dim) - - attn_output = self.out_proj(attn_output) - - return attn_output, attn_weights_reshaped, past_key_value - - -class MBartEncoderLayerWithAdapters(BartEncoderLayerAdaptersMixin, MBartEncoderLayer): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: torch.Tensor, - layer_head_mask: torch.Tensor, - output_attentions: bool = False, - ) -> torch.Tensor: - """ - Args: - hidden_states (`torch.FloatTensor`): input to the layer of shape `(seq_len, batch, embed_dim)` - attention_mask (`torch.FloatTensor`): attention mask of size - `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. - layer_head_mask (`torch.FloatTensor`): mask for attention heads in a given layer of size - `(encoder_attention_heads,)`. - output_attentions (`bool`, *optional*): - Whether or not to return the attentions tensors of all attention layers. See `attentions` under - returned tensors for more detail. - """ - adjust_tensors_for_parallel_(hidden_states, attention_mask) - - residual = hidden_states - hidden_states = self.self_attn_layer_norm(hidden_states) - hidden_states, attn_weights, _ = self.self_attn( - hidden_states=hidden_states, - attention_mask=attention_mask, - layer_head_mask=layer_head_mask, - output_attentions=output_attentions, - ) - hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) - hidden_states = self.attention_adapters(hidden_states, residual, None) - - residual = hidden_states - hidden_states = self.final_layer_norm(hidden_states) - hidden_states = self.activation_fn(self.fc1(hidden_states)) - hidden_states = nn.functional.dropout(hidden_states, p=self.activation_dropout, training=self.training) - hidden_states = self.fc2(hidden_states) - hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) - hidden_states = self.output_adapters(hidden_states, residual, None) - - if hidden_states.dtype == torch.float16 and ( - torch.isinf(hidden_states).any() or torch.isnan(hidden_states).any() - ): - clamp_value = torch.finfo(hidden_states.dtype).max - 1000 - hidden_states = torch.clamp(hidden_states, min=-clamp_value, max=clamp_value) - - outputs = (hidden_states,) - - if output_attentions: - outputs += (attn_weights,) - - return outputs - - -class MBartDecoderLayerWithAdapters(BartDecoderLayerAdaptersMixin, MBartDecoderLayer): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.Tensor] = None, - encoder_hidden_states: Optional[torch.Tensor] = None, - encoder_attention_mask: Optional[torch.Tensor] = None, - layer_head_mask: Optional[torch.Tensor] = None, - cross_attn_layer_head_mask: Optional[torch.Tensor] = None, - past_key_value: Optional[Tuple[torch.Tensor]] = None, - output_attentions: Optional[bool] = False, - use_cache: Optional[bool] = True, - ) -> torch.Tensor: - """ - Args: - hidden_states (`torch.FloatTensor`): input to the layer of shape `(seq_len, batch, embed_dim)` - attention_mask (`torch.FloatTensor`): attention mask of size - `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. - encoder_hidden_states (`torch.FloatTensor`): - cross attention input to the layer of shape `(seq_len, batch, embed_dim)` - encoder_attention_mask (`torch.FloatTensor`): encoder attention mask of size - `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. - layer_head_mask (`torch.FloatTensor`): mask for attention heads in a given layer of size - `(encoder_attention_heads,)`. - cross_attn_layer_head_mask (`torch.FloatTensor`): mask for cross-attention heads in a given layer of - size `(decoder_attention_heads,)`. - past_key_value (`Tuple(torch.FloatTensor)`): cached past key and value projection states - output_attentions (`bool`, *optional*): - Whether or not to return the attentions tensors of all attention layers. See `attentions` under - returned tensors for more detail. - """ - adjust_tensors_for_parallel_(hidden_states, attention_mask, encoder_attention_mask) - - residual = hidden_states - hidden_states = self.self_attn_layer_norm(hidden_states) - - # Self Attention - # decoder uni-directional self-attention cached key/values tuple is at positions 1,2 - self_attn_past_key_value = past_key_value[:2] if past_key_value is not None else None - # add present self-attn cache to positions 1,2 of present_key_value tuple - hidden_states, self_attn_weights, present_key_value = self.self_attn( - hidden_states=hidden_states, - past_key_value=self_attn_past_key_value, - attention_mask=attention_mask, - layer_head_mask=layer_head_mask, - output_attentions=output_attentions, - ) - hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) - hidden_states = self.attention_adapters(hidden_states, residual, None) - - # Cross-Attention Block - cross_attn_present_key_value = None - cross_attn_weights = None - if encoder_hidden_states is not None: - residual = hidden_states - hidden_states = self.encoder_attn_layer_norm(hidden_states) - - # cross_attn cached key/values tuple is at positions 3,4 of present_key_value tuple - cross_attn_past_key_value = past_key_value[-2:] if past_key_value is not None else None - hidden_states, cross_attn_weights, cross_attn_present_key_value = self.encoder_attn( - hidden_states=hidden_states, - key_value_states=encoder_hidden_states, - attention_mask=encoder_attention_mask, - layer_head_mask=cross_attn_layer_head_mask, - past_key_value=cross_attn_past_key_value, - output_attentions=output_attentions, - ) - hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) - hidden_states = self.cross_attention_adapters(hidden_states, residual, None) - - # add cross-attn to positions 3,4 of present_key_value tuple - present_key_value = present_key_value + cross_attn_present_key_value - - # Fully Connected - residual = hidden_states - hidden_states = self.final_layer_norm(hidden_states) - hidden_states = self.activation_fn(self.fc1(hidden_states)) - hidden_states = nn.functional.dropout(hidden_states, p=self.activation_dropout, training=self.training) - hidden_states = self.fc2(hidden_states) - hidden_states = nn.functional.dropout(hidden_states, p=self.dropout, training=self.training) - hidden_states = self.output_adapters(hidden_states, residual, None) - - outputs = (hidden_states,) - - if output_attentions: - outputs += (self_attn_weights, cross_attn_weights) - - if use_cache: - outputs += (present_key_value,) - - return outputs diff --git a/adapters/src/adapters/models/mt5/__init__.py b/adapters/src/adapters/models/mt5/__init__.py deleted file mode 100644 index 1a3469d9..00000000 --- a/adapters/src/adapters/models/mt5/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["MT5AdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import MT5AdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/mt5/adapter_model.py b/adapters/src/adapters/models/mt5/adapter_model.py deleted file mode 100644 index 2868aec3..00000000 --- a/adapters/src/adapters/models/mt5/adapter_model.py +++ /dev/null @@ -1,209 +0,0 @@ -import logging - -import torch - -from transformers.models.mt5.modeling_mt5 import ( - MT5_INPUTS_DOCSTRING, - MT5_START_DOCSTRING, - MT5Model, - MT5PreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...composition import adjust_tensors_for_parallel -from ...heads import ModelWithFlexibleHeadsAdaptersMixin, Seq2SeqLMHead -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -logger = logging.getLogger(__name__) - - -@add_start_docstrings( - "MT5 Model with the option to add multiple flexible prediction heads on top.", MT5_START_DOCSTRING -) -class MT5AdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, MT5PreTrainedModel): - _tied_weights_keys = [ - "encoder.embed_tokens.weight", - "decoder.embed_tokens.weight", - ] - - _keys_to_ignore_on_load_unexpected = [ - r"decoder.block.0.layer.1.EncDecAttention.relative_attention_bias.weight", - ] - - head_types = [ - "classification", - "multilabel_classification", - "question_answering", - "seq2seq_lm", - ] - - def __init__(self, config): - super().__init__(config) - - self.transformer = MT5Model(config) - init(self.transformer) - - self._init_head_modules() - - self.init_weights() - - # Model parallel - self.model_parallel = False - self.device_map = None - - def get_encoder(self): - return self.transformer.encoder - - def get_decoder(self): - return self.transformer.decoder - - @add_start_docstrings_to_model_forward(MT5_INPUTS_DOCSTRING) - def forward( - self, - input_ids=None, - attention_mask=None, - decoder_input_ids=None, - decoder_attention_mask=None, - head_mask=None, - decoder_head_mask=None, - cross_attn_head_mask=None, - encoder_outputs=None, - past_key_values=None, - inputs_embeds=None, - decoder_inputs_embeds=None, - labels=None, - use_cache=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - if decoder_input_ids is None and decoder_inputs_embeds is None: - # Check if we're using a LM head - if labels is not None and any([isinstance(head, Seq2SeqLMHead) for head in self._get_used_heads(head)]): - # get decoder inputs from shifting lm labels to the right - decoder_input_ids = self._shift_right(labels) - else: - # decoder_input_ids from input_ids if no decoder_input_ids are provided - decoder_input_ids = self._shift_right(input_ids) - - model_output, context = self.transformer( - input_ids=input_ids, - attention_mask=attention_mask, - decoder_input_ids=decoder_input_ids, - decoder_attention_mask=decoder_attention_mask, - head_mask=head_mask, - decoder_head_mask=decoder_head_mask, - cross_attn_head_mask=cross_attn_head_mask, - encoder_outputs=encoder_outputs, - past_key_values=past_key_values, - inputs_embeds=inputs_embeds, - decoder_inputs_embeds=decoder_inputs_embeds, - use_cache=use_cache, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - sequence_output = model_output[0] - # ToDo move head to device for parallel forward pass - - if self.config.tie_word_embeddings: - # Rescale output before projecting on vocab - # See https://github.com/tensorflow/mesh/blob/fa19d69eafc9a482aff0b59ddd96b025c0cb207d/mesh_tensorflow/transformer/transformer.py#L586 - new_hidden_state = sequence_output * (self.config.d_model**-0.5) - if isinstance(model_output, tuple): - model_output = (new_hidden_state,) + model_output[1:] - else: - model_output["last_hidden_state"] = new_hidden_state - - # sequence classification based on last token in sequence - if input_ids is not None and sequence_output.shape[1] == input_ids.shape[1]: - eos_mask = input_ids.eq(self.config.eos_token_id) - (eos_mask,) = adjust_tensors_for_parallel(sequence_output, eos_mask) - if len(torch.unique(eos_mask.sum(1))) > 1: - raise ValueError("All examples must have the same number of tokens.") - cls_representation = sequence_output[eos_mask, :].view( - sequence_output.size(0), -1, sequence_output.size(-1) - )[:, -1, :] - else: - cls_representation = sequence_output - - kwargs["labels"] = labels - head_outputs = self.forward_head( - model_output, - head_name=head, - cls_output=cls_representation, - return_dict=return_dict, - **kwargs, - ) - return head_outputs - - # Copied from T5ForConditionalGeneration - def prepare_inputs_for_generation( - self, - input_ids, - past=None, - attention_mask=None, - head_mask=None, - decoder_head_mask=None, - cross_attn_head_mask=None, - use_cache=None, - encoder_outputs=None, - **kwargs - ): - # cut decoder_input_ids if past is used - if past is not None: - input_ids = input_ids[:, -1:] - - return { - "decoder_input_ids": input_ids, - "past_key_values": past, - "encoder_outputs": encoder_outputs, - "attention_mask": attention_mask, - "head_mask": head_mask, - "decoder_head_mask": decoder_head_mask, - "cross_attn_head_mask": cross_attn_head_mask, - "use_cache": use_cache, - "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), - } - - # Copied from T5ForConditionalGeneration - def prepare_decoder_input_ids_from_labels(self, labels: torch.Tensor): - return self._shift_right(labels) - - # Copied from T5ForConditionalGeneration - def _reorder_cache(self, past, beam_idx): - # if decoder past is not included in output - # speedy decoding is disabled and no need to reorder - if past is None: - logger.warning("You might want to consider setting `use_cache=True` to speed up decoding") - return past - - reordered_decoder_past = () - for layer_past_states in past: - # get the correct batch idx from layer past batch dim - # batch dim of `past` is at 2nd position - reordered_layer_past_states = () - for layer_past_state in layer_past_states: - # need to set correct `past` for each of the four key / value states - reordered_layer_past_states = reordered_layer_past_states + ( - layer_past_state.index_select(0, beam_idx.to(layer_past_state.device)), - ) - - assert reordered_layer_past_states[0].shape == layer_past_states[0].shape - assert len(reordered_layer_past_states) == len(layer_past_states) - - reordered_decoder_past = reordered_decoder_past + (reordered_layer_past_states,) - return reordered_decoder_past diff --git a/adapters/src/adapters/models/mt5/modeling_mt5.py b/adapters/src/adapters/models/mt5/modeling_mt5.py deleted file mode 100644 index 12ad630a..00000000 --- a/adapters/src/adapters/models/mt5/modeling_mt5.py +++ /dev/null @@ -1,484 +0,0 @@ -# coding=utf-8 -# Copyright 2018 Mesh TensorFlow authors, MT5 Authors and HuggingFace Inc. team. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" PyTorch MT5 model.""" - -import torch -from torch import nn -from torch.utils.checkpoint import checkpoint - -from transformers.modeling_outputs import BaseModelOutputWithPastAndCrossAttentions -from transformers.models.mt5.modeling_mt5 import ( - MT5Attention, - MT5LayerCrossAttention, - MT5LayerFF, - MT5LayerSelfAttention, - MT5Stack, -) -from transformers.utils import logging - -from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from ..t5.mixin_t5 import ( - T5AttentionAdaptersMixin, - T5CrossAttentionLayerAdaptersMixin, - T5FFLayerAdaptersMixin, - T5SelfAttentionLayerAdaptersMixin, - T5StackAdaptersMixin, -) - - -logger = logging.get_logger(__name__) - - -class MT5LayerFFWithAdapters(T5FFLayerAdaptersMixin, MT5LayerFF): - def forward(self, hidden_states): - forwarded_states = self.layer_norm(hidden_states) - forwarded_states = self.DenseReluDense(forwarded_states) - hidden_states = self.bottleneck_layer_forward( - hidden_states=self.dropout(forwarded_states), residual_input=hidden_states, layer_norm=None - ) - return hidden_states - - -class MT5AttentionWithAdapters(T5AttentionAdaptersMixin, MT5Attention): - def forward( - self, - hidden_states, - mask=None, - key_value_states=None, - position_bias=None, - past_key_value=None, - layer_head_mask=None, - query_length=None, - use_cache=False, - output_attentions=False, - ): - """ - Self-attention (if key_value_states is None) or attention over source sentence (provided by key_value_states). - """ - # Input is (batch_size, seq_length, dim) - # Mask is (batch_size, key_length) (non-causal) or (batch_size, key_length, key_length) - # past_key_value[0] is (batch_size, n_heads, q_len - 1, dim_per_head) - batch_size, seq_length = hidden_states.shape[:2] - - real_seq_length = seq_length - - if past_key_value is not None: - assert ( - len(past_key_value) == 2 - ), f"past_key_value should have 2 past states: keys and values. Got { len(past_key_value)} past states" - real_seq_length += past_key_value[0].shape[2] if query_length is None else query_length - - key_length = real_seq_length if key_value_states is None else key_value_states.shape[1] - - def shape(states): - """projection""" - return states.view(batch_size, -1, self.n_heads, self.key_value_proj_dim).transpose(1, 2) - - def unshape(states): - """reshape""" - return states.transpose(1, 2).contiguous().view(batch_size, -1, self.inner_dim) - - def project(hidden_states, proj_layer, key_value_states, past_key_value): - """projects hidden states correctly to key/query states""" - if key_value_states is None: - # self-attn - # (batch_size, n_heads, seq_length, dim_per_head) - hidden_states = shape(proj_layer(hidden_states)) - elif past_key_value is None: - # cross-attn - # (batch_size, n_heads, seq_length, dim_per_head) - hidden_states = shape(proj_layer(key_value_states)) - - if past_key_value is not None: - if key_value_states is None: - # self-attn - # (batch_size, n_heads, key_length, dim_per_head) - hidden_states = torch.cat([past_key_value, hidden_states], dim=2) - elif past_key_value.shape[2] != key_value_states.shape[1]: - # checking that the `sequence_length` of the `past_key_value` is the same as - # the provided `key_value_states` to support prefix tuning - # cross-attn - # (batch_size, n_heads, seq_length, dim_per_head) - hidden_states = shape(proj_layer(key_value_states)) - else: - # cross-attn - hidden_states = past_key_value - return hidden_states - - # get query states - query_states = shape(self.q(hidden_states)) # (batch_size, n_heads, seq_length, dim_per_head) - - # get key/value states - key_states = project( - hidden_states, self.k, key_value_states, past_key_value[0] if past_key_value is not None else None - ) - value_states = project( - hidden_states, self.v, key_value_states, past_key_value[1] if past_key_value is not None else None - ) - - query_states, key_states, value_states = match_attn_matrices_for_parallel( - query_states, key_states, value_states - ) - (mask,) = adjust_tensors_for_parallel(query_states, mask) - - present_key_value_state = (key_states, value_states) if (self.is_decoder and use_cache) else None - - key_states, value_states, mask = self.prefix_tuning(key_states, value_states, hidden_states, mask) - (query_states,) = adjust_tensors_for_parallel(key_states, query_states) - batch_size, key_length = key_states.shape[0], key_states.shape[2] - - # compute scores - scores = torch.matmul( - query_states, key_states.transpose(3, 2) - ) # equivalent of torch.einsum("bnqd,bnkd->bnqk", query_states, key_states), compatible with onnx op>9 - - if position_bias is None: - if not self.has_relative_attention_bias: - position_bias = torch.zeros( - (1, self.n_heads, real_seq_length, key_length), device=scores.device, dtype=scores.dtype - ) - if self.gradient_checkpointing and self.training: - position_bias.requires_grad = True - else: - position_bias = self.compute_bias(real_seq_length, key_length, device=scores.device) - - # if key and values are already calculated - # we want only the last query position bias - if past_key_value is not None: - position_bias = position_bias[:, :, -hidden_states.size(1) :, :] - - if mask is not None: - position_bias = position_bias + mask # (batch_size, n_heads, seq_length, key_length) - - if self.pruned_heads: - mask = torch.ones(position_bias.shape[1]) - mask[list(self.pruned_heads)] = 0 - position_bias_masked = position_bias[:, mask.bool()] - else: - position_bias_masked = position_bias - - scores += position_bias_masked - attn_weights = nn.functional.softmax(scores.float(), dim=-1).type_as( - scores - ) # (batch_size, n_heads, seq_length, key_length) - attn_weights = nn.functional.dropout( - attn_weights, p=self.dropout, training=self.training - ) # (batch_size, n_heads, seq_length, key_length) - - # Mask heads if we want to - if layer_head_mask is not None: - attn_weights = attn_weights * layer_head_mask - - attn_output = unshape(torch.matmul(attn_weights, value_states)) # (batch_size, seq_length, dim) - attn_output = self.o(attn_output) - - outputs = (attn_output,) + (present_key_value_state,) + (position_bias,) - - if output_attentions: - outputs = outputs + (attn_weights,) - return outputs - - -class MT5LayerSelfAttentionWithAdapters(T5SelfAttentionLayerAdaptersMixin, MT5LayerSelfAttention): - def forward( - self, - hidden_states, - attention_mask=None, - position_bias=None, - layer_head_mask=None, - past_key_value=None, - use_cache=False, - output_attentions=False, - ): - normed_hidden_states = self.layer_norm(hidden_states) - attention_output = self.SelfAttention( - normed_hidden_states, - mask=attention_mask, - position_bias=position_bias, - layer_head_mask=layer_head_mask, - past_key_value=past_key_value, - use_cache=use_cache, - output_attentions=output_attentions, - ) - hidden_states = self.bottleneck_layer_forward( - hidden_states=self.dropout(attention_output[0]), residual_input=hidden_states, layer_norm=None - ) - outputs = (hidden_states,) + attention_output[1:] # add attentions if we output them - return outputs - - -class MT5LayerCrossAttentionWithAdapters(T5CrossAttentionLayerAdaptersMixin, MT5LayerCrossAttention): - def forward( - self, - hidden_states, - key_value_states, - attention_mask=None, - position_bias=None, - layer_head_mask=None, - past_key_value=None, - use_cache=False, - query_length=None, - output_attentions=False, - ): - normed_hidden_states = self.layer_norm(hidden_states) - attention_output = self.EncDecAttention( - normed_hidden_states, - mask=attention_mask, - key_value_states=key_value_states, - position_bias=position_bias, - layer_head_mask=layer_head_mask, - past_key_value=past_key_value, - use_cache=use_cache, - query_length=query_length, - output_attentions=output_attentions, - ) - layer_output = self.bottleneck_layer_forward( - hidden_states=self.dropout(attention_output[0]), residual_input=hidden_states, layer_norm=None - ) - outputs = (layer_output,) + attention_output[1:] # add attentions if we output them - return outputs - - -class MT5StackWithAdapters(T5StackAdaptersMixin, MT5Stack): - def forward( - self, - input_ids=None, - attention_mask=None, - encoder_hidden_states=None, - encoder_attention_mask=None, - inputs_embeds=None, - head_mask=None, - cross_attn_head_mask=None, - past_key_values=None, - use_cache=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - ): - # Model parallel - if self.model_parallel: - torch.cuda.set_device(self.first_device) - self.embed_tokens = self.embed_tokens.to(self.first_device) - use_cache = use_cache if use_cache is not None else self.config.use_cache - output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions - output_hidden_states = ( - output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states - ) - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - if self.is_decoder and encoder_hidden_states is not None: - input_ids, encoder_attention_mask = adjust_tensors_for_parallel( - encoder_hidden_states, input_ids, encoder_attention_mask - ) - - if input_ids is not None and inputs_embeds is not None: - err_msg_prefix = "decoder_" if self.is_decoder else "" - raise ValueError( - f"You cannot specify both {err_msg_prefix}input_ids and {err_msg_prefix}inputs_embeds at the same time" - ) - elif input_ids is not None: - input_shape = input_ids.size() - input_ids = input_ids.view(-1, input_shape[-1]) - elif inputs_embeds is not None: - input_shape = inputs_embeds.size()[:-1] - else: - err_msg_prefix = "decoder_" if self.is_decoder else "" - raise ValueError(f"You have to specify either {err_msg_prefix}input_ids or {err_msg_prefix}inputs_embeds") - - if inputs_embeds is None: - if self.embed_tokens is None: - raise ValueError("You have to initialize the model with valid token embeddings") - inputs_embeds = self.embed_tokens(input_ids) - - batch_size, seq_length = input_shape - - # required mask seq length can be calculated via length of past - mask_seq_length = past_key_values[0][0].shape[2] + seq_length if past_key_values is not None else seq_length - - if use_cache is True: - if not self.is_decoder: - raise ValueError(f"`use_cache` can only be set to `True` if {self} is used as a decoder") - - if attention_mask is None: - attention_mask = torch.ones(batch_size, mask_seq_length, device=inputs_embeds.device) - if self.is_decoder and encoder_attention_mask is None and encoder_hidden_states is not None: - encoder_seq_length = encoder_hidden_states.shape[1] - encoder_attention_mask = torch.ones( - batch_size, encoder_seq_length, device=inputs_embeds.device, dtype=torch.long - ) - - # initialize past_key_values with `None` if past does not exist - if past_key_values is None: - past_key_values = [None] * len(self.block) - - # We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length] - # ourselves in which case we just need to make it broadcastable to all heads. - extended_attention_mask = self.get_extended_attention_mask(attention_mask, input_shape) - - # If a 2D or 3D attention mask is provided for the cross-attention - # we need to make broadcastable to [batch_size, num_heads, seq_length, seq_length] - if self.is_decoder and encoder_hidden_states is not None: - encoder_batch_size, encoder_sequence_length, _ = encoder_hidden_states.size() - encoder_hidden_shape = (encoder_batch_size, encoder_sequence_length) - if encoder_attention_mask is None: - encoder_attention_mask = torch.ones(encoder_hidden_shape, device=inputs_embeds.device) - encoder_extended_attention_mask = self.invert_attention_mask(encoder_attention_mask) - else: - encoder_extended_attention_mask = None - - if self.gradient_checkpointing and self.training: - if use_cache: - logger.warning_once( - "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`..." - ) - use_cache = False - - # Prepare head mask if needed - head_mask = self.get_head_mask(head_mask, self.config.num_layers) - cross_attn_head_mask = self.get_head_mask(cross_attn_head_mask, self.config.num_layers) - present_key_value_states = () if use_cache else None - all_hidden_states = () if output_hidden_states else None - all_attentions = () if output_attentions else None - all_cross_attentions = () if (output_attentions and self.is_decoder) else None - position_bias = None - encoder_decoder_position_bias = None - - hidden_states = self.dropout(inputs_embeds) - if not self.is_decoder: - hidden_states = self.post_embedding_forward(hidden_states) - - for i, (layer_module, past_key_value) in enumerate(zip(self.block, past_key_values)): - layer_head_mask = head_mask[i] - cross_attn_layer_head_mask = cross_attn_head_mask[i] - # Model parallel - if self.model_parallel: - torch.cuda.set_device(hidden_states.device) - # Ensure that attention_mask is always on the same device as hidden_states - if attention_mask is not None: - attention_mask = attention_mask.to(hidden_states.device) - if position_bias is not None: - position_bias = position_bias.to(hidden_states.device) - if encoder_hidden_states is not None: - encoder_hidden_states = encoder_hidden_states.to(hidden_states.device) - if encoder_extended_attention_mask is not None: - encoder_extended_attention_mask = encoder_extended_attention_mask.to(hidden_states.device) - if encoder_decoder_position_bias is not None: - encoder_decoder_position_bias = encoder_decoder_position_bias.to(hidden_states.device) - if layer_head_mask is not None: - layer_head_mask = layer_head_mask.to(hidden_states.device) - if cross_attn_layer_head_mask is not None: - cross_attn_layer_head_mask = cross_attn_layer_head_mask.to(hidden_states.device) - if output_hidden_states: - all_hidden_states = all_hidden_states + (hidden_states,) - - if self.gradient_checkpointing and self.training: - - def create_custom_forward(module): - def custom_forward(*inputs): - return tuple(module(*inputs, use_cache, output_attentions)) - - return custom_forward - - layer_outputs = checkpoint( - create_custom_forward(layer_module), - hidden_states, - extended_attention_mask, - position_bias, - encoder_hidden_states, - encoder_extended_attention_mask, - encoder_decoder_position_bias, - layer_head_mask, - cross_attn_layer_head_mask, - None, # past_key_value is always None with gradient checkpointing - ) - else: - layer_outputs = layer_module( - hidden_states, - attention_mask=extended_attention_mask, - position_bias=position_bias, - encoder_hidden_states=encoder_hidden_states, - encoder_attention_mask=encoder_extended_attention_mask, - encoder_decoder_position_bias=encoder_decoder_position_bias, - layer_head_mask=layer_head_mask, - cross_attn_layer_head_mask=cross_attn_layer_head_mask, - past_key_value=past_key_value, - use_cache=use_cache, - output_attentions=output_attentions, - ) - - # layer_outputs is a tuple with: - # hidden-states, key-value-states, (self-attention position bias), (self-attention weights), (cross-attention position bias), (cross-attention weights) - if use_cache is False: - layer_outputs = layer_outputs[:1] + (None,) + layer_outputs[1:] - - hidden_states, present_key_value_state = layer_outputs[:2] - - attention_mask, extended_attention_mask = adjust_tensors_for_parallel( - hidden_states, attention_mask, extended_attention_mask - ) - - # We share the position biases between the layers - the first layer store them - # layer_outputs = hidden-states, key-value-states (self-attention position bias), (self-attention weights), - # (cross-attention position bias), (cross-attention weights) - position_bias = layer_outputs[2] - if self.is_decoder and encoder_hidden_states is not None: - encoder_decoder_position_bias = layer_outputs[4 if output_attentions else 3] - # append next layer key value states - if use_cache: - present_key_value_states = present_key_value_states + (present_key_value_state,) - - if position_bias is not None: - position_bias = adjust_tensors_for_parallel(hidden_states, position_bias)[0] - if encoder_decoder_position_bias is not None: - encoder_decoder_position_bias = adjust_tensors_for_parallel( - hidden_states, encoder_decoder_position_bias - )[0] - - if output_attentions: - all_attentions = all_attentions + (layer_outputs[3],) - if self.is_decoder: - all_cross_attentions = all_cross_attentions + (layer_outputs[5],) - - # Model Parallel: If it's the last layer for that device, put things on the next device - if self.model_parallel: - for k, v in self.device_map.items(): - if i == v[-1] and "cuda:" + str(k) != self.last_device: - hidden_states = hidden_states.to("cuda:" + str(k + 1)) - - hidden_states = self.final_layer_norm(hidden_states) - hidden_states = self.dropout(hidden_states) - - # Add last layer - if output_hidden_states: - all_hidden_states = all_hidden_states + (hidden_states,) - - if not return_dict: - return tuple( - v - for v in [ - hidden_states, - present_key_value_states, - all_hidden_states, - all_attentions, - all_cross_attentions, - ] - if v is not None - ) - return BaseModelOutputWithPastAndCrossAttentions( - last_hidden_state=hidden_states, - past_key_values=present_key_value_states, - hidden_states=all_hidden_states, - attentions=all_attentions, - cross_attentions=all_cross_attentions, - ) diff --git a/adapters/src/adapters/models/roberta/__init__.py b/adapters/src/adapters/models/roberta/__init__.py deleted file mode 100644 index 56d7166d..00000000 --- a/adapters/src/adapters/models/roberta/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["RobertaAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import RobertaAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/roberta/adapter_model.py b/adapters/src/adapters/models/roberta/adapter_model.py deleted file mode 100644 index 87858566..00000000 --- a/adapters/src/adapters/models/roberta/adapter_model.py +++ /dev/null @@ -1,124 +0,0 @@ -from transformers.models.roberta.modeling_roberta import ( - ROBERTA_INPUTS_DOCSTRING, - ROBERTA_START_DOCSTRING, - RobertaModel, - RobertaPreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - """Roberta Model transformer with the option to add multiple flexible heads on top.""", - ROBERTA_START_DOCSTRING, -) -class RobertaAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, RobertaPreTrainedModel): - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "multiple_choice", - "question_answering", - "dependency_parsing", - "masked_lm", - "causal_lm", - ] - - def __init__(self, config): - super().__init__(config) - - self.roberta = RobertaModel(config) - init(self.roberta) - - self._init_head_modules() - - self.init_weights() - - @add_start_docstrings_to_model_forward(ROBERTA_INPUTS_DOCSTRING.format("batch_size, sequence_length")) - def forward( - self, - input_ids=None, - attention_mask=None, - token_type_ids=None, - position_ids=None, - head_mask=None, - inputs_embeds=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None - position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None - token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None - attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None - inputs_embeds = ( - inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) - if inputs_embeds is not None - else None - ) - - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.roberta( - input_ids, - attention_mask=attention_mask, - token_type_ids=token_type_ids, - position_ids=position_ids, - head_mask=head_mask, - inputs_embeds=inputs_embeds, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads - if not return_dict: - head_inputs = (outputs[0],) + outputs[2:] - else: - head_inputs = outputs - pooled_output = outputs[1] - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - head_inputs, - head_name=head, - attention_mask=attention_mask, - return_dict=return_dict, - pooled_output=pooled_output, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs - - # Copied from RobertaForCausalLM - def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): - input_shape = input_ids.shape - # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly - if attention_mask is None: - attention_mask = input_ids.new_ones(input_shape) - - # cut decoder_input_ids if past is used - if past is not None: - input_ids = input_ids[:, -1:] - - return { - "input_ids": input_ids, - "attention_mask": attention_mask, - "past_key_values": past, - "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), - } diff --git a/adapters/src/adapters/models/roberta/modeling_roberta.py b/adapters/src/adapters/models/roberta/modeling_roberta.py deleted file mode 100644 index 8a79d4ef..00000000 --- a/adapters/src/adapters/models/roberta/modeling_roberta.py +++ /dev/null @@ -1,160 +0,0 @@ -# coding=utf-8 -# Copyright 2018 The Google AI Language Team Authors and The HuggingFace Inc. team. -# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""PyTorch RoBERTa model.""" - -import math -from typing import Optional, Tuple - -import torch -import torch.utils.checkpoint -from torch import nn - -from transformers.models.roberta.modeling_roberta import RobertaOutput, RobertaSelfAttention, RobertaSelfOutput - -from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from ...utils import prefix_attention_mask -from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin - - -# Copied from transformers.models.bert.modeling_bert.BertSelfAttention with Bert->Roberta -class RobertaSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, RobertaSelfAttention): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.FloatTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - encoder_hidden_states: Optional[torch.FloatTensor] = None, - encoder_attention_mask: Optional[torch.FloatTensor] = None, - past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, - output_attentions: Optional[bool] = False, - ) -> Tuple[torch.Tensor]: - attention_mask = prefix_attention_mask(attention_mask) # type: ignore - - mixed_query_layer = self.query(hidden_states) - - # If this is instantiated as a cross-attention module, the keys - # and values come from an encoder; the attention mask needs to be - # such that the encoder's padding tokens are not attended to. - is_cross_attention = encoder_hidden_states is not None - - if is_cross_attention and past_key_value is not None: - # reuse k,v, cross_attentions - key_layer = past_key_value[0] - value_layer = past_key_value[1] - attention_mask = encoder_attention_mask - elif is_cross_attention: - key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) - value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) - attention_mask = encoder_attention_mask - elif past_key_value is not None: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - key_layer = torch.cat([past_key_value[0], key_layer], dim=2) - value_layer = torch.cat([past_key_value[1], value_layer], dim=2) - else: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - - query_layer = self.transpose_for_scores(mixed_query_layer) - query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) - (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) - - use_cache = past_key_value is not None - if self.is_decoder: - # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. - # Further calls to cross_attention layer can then reuse all cross-attention - # key/value_states (first "if" case) - # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of - # all previous decoder key/value_states. Further calls to uni-directional self-attention - # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) - # if encoder bi-directional self-attention `past_key_value` is always `None` - past_key_value = (key_layer, value_layer) - - key_layer, value_layer, attention_mask = self.prefix_tuning( - key_layer, value_layer, hidden_states, attention_mask - ) - (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) - - # Take the dot product between "query" and "key" to get the raw attention scores. - attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) - - if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": - query_length, key_length = query_layer.shape[2], key_layer.shape[2] - if use_cache: - position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( - -1, 1 - ) - else: - position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) - position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) - distance = position_ids_l - position_ids_r - - positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) - positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility - - if self.position_embedding_type == "relative_key": - relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores - elif self.position_embedding_type == "relative_key_query": - relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key - - attention_scores = attention_scores / math.sqrt(self.attention_head_size) - if attention_mask is not None: - # Apply the attention mask is (precomputed for all layers in RobertaModel forward() function) - attention_scores = attention_scores + attention_mask - - # Normalize the attention scores to probabilities. - attention_probs = nn.functional.softmax(attention_scores, dim=-1) - - # This is actually dropping out entire tokens to attend to, which might - # seem a bit unusual, but is taken from the original Transformer paper. - attention_probs = self.dropout(attention_probs) - - # Mask heads if we want to - if head_mask is not None: - attention_probs = attention_probs * head_mask - - context_layer = torch.matmul(attention_probs, value_layer) - - context_layer = context_layer.permute(0, 2, 1, 3).contiguous() - new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) - context_layer = context_layer.view(new_context_layer_shape) - - outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) - - if self.is_decoder: - outputs = outputs + (past_key_value,) - return outputs - - -# Copied from transformers.models.modeling_bert.BertSelfOutput -class RobertaSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, RobertaSelfOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states - - -# Copied from transformers.models.bert.modeling_bert.BertOutput -class RobertaOutputWithAdapters(BertOutputAdaptersMixin, RobertaOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states diff --git a/adapters/src/adapters/models/t5/__init__.py b/adapters/src/adapters/models/t5/__init__.py deleted file mode 100644 index c1b30b1f..00000000 --- a/adapters/src/adapters/models/t5/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["T5AdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import T5AdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/t5/adapter_model.py b/adapters/src/adapters/models/t5/adapter_model.py deleted file mode 100644 index b544252c..00000000 --- a/adapters/src/adapters/models/t5/adapter_model.py +++ /dev/null @@ -1,202 +0,0 @@ -import logging - -import torch - -from transformers.models.t5.modeling_t5 import T5_INPUTS_DOCSTRING, T5_START_DOCSTRING, T5Model, T5PreTrainedModel -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...composition import adjust_tensors_for_parallel -from ...heads import ModelWithFlexibleHeadsAdaptersMixin, Seq2SeqLMHead -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -logger = logging.getLogger(__name__) - - -@add_start_docstrings("T5 Model with the option to add multiple flexible prediction heads on top.", T5_START_DOCSTRING) -class T5AdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, T5PreTrainedModel): - _tied_weights_keys = [ - "encoder.embed_tokens.weight", - "decoder.embed_tokens.weight", - ] - - _keys_to_ignore_on_load_unexpected = [ - r"decoder.block.0.layer.1.EncDecAttention.relative_attention_bias.weight", - ] - - head_types = [ - "classification", - "multilabel_classification", - "question_answering", - "seq2seq_lm", - ] - - def __init__(self, config): - super().__init__(config) - - self.transformer = T5Model(config) - init(self.transformer) - - self._init_head_modules() - - self.init_weights() - - # Model parallel - self.model_parallel = False - self.device_map = None - - def get_encoder(self): - return self.transformer.encoder - - def get_decoder(self): - return self.transformer.decoder - - @add_start_docstrings_to_model_forward(T5_INPUTS_DOCSTRING) - def forward( - self, - input_ids=None, - attention_mask=None, - decoder_input_ids=None, - decoder_attention_mask=None, - head_mask=None, - decoder_head_mask=None, - cross_attn_head_mask=None, - encoder_outputs=None, - past_key_values=None, - inputs_embeds=None, - decoder_inputs_embeds=None, - labels=None, - use_cache=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - if decoder_input_ids is None and decoder_inputs_embeds is None: - # Check if we're using a LM head - if labels is not None and any([isinstance(head, Seq2SeqLMHead) for head in self._get_used_heads(head)]): - # get decoder inputs from shifting lm labels to the right - decoder_input_ids = self._shift_right(labels) - else: - # decoder_input_ids from input_ids if no decoder_input_ids are provided - decoder_input_ids = self._shift_right(input_ids) - - model_output, context = self.transformer( - input_ids=input_ids, - attention_mask=attention_mask, - decoder_input_ids=decoder_input_ids, - decoder_attention_mask=decoder_attention_mask, - head_mask=head_mask, - decoder_head_mask=decoder_head_mask, - cross_attn_head_mask=cross_attn_head_mask, - encoder_outputs=encoder_outputs, - past_key_values=past_key_values, - inputs_embeds=inputs_embeds, - decoder_inputs_embeds=decoder_inputs_embeds, - use_cache=use_cache, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - sequence_output = model_output[0] - # ToDo move head to device for parallel forward pass - - if self.config.tie_word_embeddings: - # Rescale output before projecting on vocab - # See https://github.com/tensorflow/mesh/blob/fa19d69eafc9a482aff0b59ddd96b025c0cb207d/mesh_tensorflow/transformer/transformer.py#L586 - new_hidden_state = sequence_output * (self.config.d_model**-0.5) - if isinstance(model_output, tuple): - model_output = (new_hidden_state,) + model_output[1:] - else: - model_output["last_hidden_state"] = new_hidden_state - - # sequence classification based on last token in sequence - if input_ids is not None and sequence_output.shape[1] == input_ids.shape[1]: - eos_mask = input_ids.eq(self.config.eos_token_id) - (eos_mask,) = adjust_tensors_for_parallel(sequence_output, eos_mask) - if len(torch.unique(eos_mask.sum(1))) > 1: - raise ValueError("All examples must have the same number of tokens.") - cls_representation = sequence_output[eos_mask, :].view( - sequence_output.size(0), -1, sequence_output.size(-1) - )[:, -1, :] - else: - cls_representation = sequence_output - - kwargs["labels"] = labels - head_outputs = self.forward_head( - model_output, - head_name=head, - cls_output=cls_representation, - return_dict=return_dict, - **kwargs, - ) - return head_outputs - - # Copied from T5ForConditionalGeneration - def prepare_inputs_for_generation( - self, - input_ids, - past=None, - attention_mask=None, - head_mask=None, - decoder_head_mask=None, - cross_attn_head_mask=None, - use_cache=None, - encoder_outputs=None, - **kwargs - ): - # cut decoder_input_ids if past is used - if past is not None: - input_ids = input_ids[:, -1:] - - return { - "decoder_input_ids": input_ids, - "past_key_values": past, - "encoder_outputs": encoder_outputs, - "attention_mask": attention_mask, - "head_mask": head_mask, - "decoder_head_mask": decoder_head_mask, - "cross_attn_head_mask": cross_attn_head_mask, - "use_cache": use_cache, - "adapter_input_parallelized": kwargs.pop("adapter_input_parallelized", False), - } - - # Copied from T5ForConditionalGeneration - def prepare_decoder_input_ids_from_labels(self, labels: torch.Tensor): - return self._shift_right(labels) - - # Copied from T5ForConditionalGeneration - def _reorder_cache(self, past, beam_idx): - # if decoder past is not included in output - # speedy decoding is disabled and no need to reorder - if past is None: - logger.warning("You might want to consider setting `use_cache=True` to speed up decoding") - return past - - reordered_decoder_past = () - for layer_past_states in past: - # get the correct batch idx from layer past batch dim - # batch dim of `past` is at 2nd position - reordered_layer_past_states = () - for layer_past_state in layer_past_states: - # need to set correct `past` for each of the four key / value states - reordered_layer_past_states = reordered_layer_past_states + ( - layer_past_state.index_select(0, beam_idx.to(layer_past_state.device)), - ) - - assert reordered_layer_past_states[0].shape == layer_past_states[0].shape - assert len(reordered_layer_past_states) == len(layer_past_states) - - reordered_decoder_past = reordered_decoder_past + (reordered_layer_past_states,) - return reordered_decoder_past diff --git a/adapters/src/adapters/models/t5/mixin_t5.py b/adapters/src/adapters/models/t5/mixin_t5.py deleted file mode 100644 index 1aa6227d..00000000 --- a/adapters/src/adapters/models/t5/mixin_t5.py +++ /dev/null @@ -1,133 +0,0 @@ -from typing import Iterable, Optional, Tuple - -import torch -import torch.nn as nn - -from ...methods.bottleneck import BottleneckLayer -from ...methods.lora import LoRALinear -from ...methods.prefix_tuning import PrefixTuningLayer -from ...model_mixin import ( - EmbeddingAdaptersMixin, - InvertibleAdaptersMixin, - InvertibleAdaptersWrapperMixin, - ModelBaseAdaptersMixin, - ModelWithHeadsAdaptersMixin, -) - - -class T5AttentionAdaptersMixin: - """Adds adapters to the T5Attention module.""" - - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.q = LoRALinear.wrap(self.q, "selfattn", model_config, adapters_config, attn_key="q", bias=False) - self.k = LoRALinear.wrap(self.k, "selfattn", model_config, adapters_config, attn_key="k", bias=False) - self.v = LoRALinear.wrap(self.v, "selfattn", model_config, adapters_config, attn_key="v", bias=False) - - self.prefix_tuning = PrefixTuningLayer( - self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config - ) - - -class T5SelfAttentionLayerAdaptersMixin(BottleneckLayer): - def __init__(self): - super().__init__("mh_adapter", None) - - def init_adapters(self, model_config, adapters_config): - self.location_key = "mh_adapter" - super().init_adapters(model_config, adapters_config) - - -class T5CrossAttentionLayerAdaptersMixin(BottleneckLayer): - def __init__(self): - super().__init__("cross_adapter", None) - - def init_adapters(self, model_config, adapters_config): - self.location_key = "cross_adapter" - self.EncDecAttention.location_key = "cross" - super().init_adapters(model_config, adapters_config) - - -class T5FFLayerAdaptersMixin(BottleneckLayer): - def __init__(self): - super().__init__("output_adapter", None) - - def init_adapters(self, model_config, adapters_config): - self.location_key = "output_adapter" - super().init_adapters(model_config, adapters_config) - - if hasattr(self.DenseReluDense, "wi_1"): - self.DenseReluDense.wi_1 = LoRALinear.wrap( - self.DenseReluDense.wi_1, "intermediate", model_config, adapters_config - ) - else: - self.DenseReluDense.wi = LoRALinear.wrap( - self.DenseReluDense.wi, "intermediate", model_config, adapters_config - ) - self.DenseReluDense.wo = LoRALinear.wrap(self.DenseReluDense.wo, "output", model_config, adapters_config) - - -class T5BlockAdaptersMixin: - """Adds adapters to the T5Block module.""" - - def init_adapters(self, model_config, adapters_config): - location_key = "self" if self.is_decoder else "encoder" - self.layer[0].SelfAttention.location_key = location_key - self.layer[-1].location_key = location_key - - -class T5StackAdaptersMixin(InvertibleAdaptersMixin): - """Adds adapters to the T5Stack module.""" - - def init_adapters(self, model_config, adapters_config): - if not self.is_decoder: - InvertibleAdaptersMixin.init_adapters(self, self.config, adapters_config) - - def post_embedding_forward(self, embedding_output): - embedding_output = self.invertible_adapters_forward(embedding_output) - # Prompt tuning not yet supported - return embedding_output - - -class T5ModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersWrapperMixin, ModelBaseAdaptersMixin): - """Adds adapters to the T5Model class.""" - - invertible_adapters_base_name = "encoder" - support_prompt_tuning = False - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - global_i = 0 - if hasattr(self, "encoder"): - global_i = len(self.encoder.block) - for i, layer in enumerate(self.encoder.block): - yield i, layer - if hasattr(self, "decoder"): - for i, layer in enumerate(self.decoder.block, start=global_i): - yield i, layer - - -# Stating "labels" and "input_ids" explicitly is required for training using Trainer class -class T5ForCondiditionalGenerationWithHeadsMixin(ModelWithHeadsAdaptersMixin, T5ModelAdaptersMixin): - def forward( - self, - *args, - input_ids: Optional[torch.LongTensor] = None, - labels: Optional[torch.LongTensor] = None, - **kwargs, - ): - return super().forward(*args, input_ids=input_ids, labels=labels, **kwargs) - - -# Stating "start_positions"/"end_positions" and "input_ids" explicitly is required for training using Trainer class -class T5ForQuestionAnsweringWithHeadsMixin(ModelWithHeadsAdaptersMixin, T5ModelAdaptersMixin): - def forward( - self, - *args, - input_ids: Optional[torch.LongTensor] = None, - start_positions: Optional[torch.LongTensor] = None, - end_positions: Optional[torch.LongTensor] = None, - **kwargs, - ): - return super().forward( - *args, input_ids=input_ids, start_positions=start_positions, end_positions=end_positions, **kwargs - ) diff --git a/adapters/src/adapters/models/t5/modeling_t5.py b/adapters/src/adapters/models/t5/modeling_t5.py deleted file mode 100644 index b366b9ce..00000000 --- a/adapters/src/adapters/models/t5/modeling_t5.py +++ /dev/null @@ -1,484 +0,0 @@ -# coding=utf-8 -# Copyright 2018 Mesh TensorFlow authors, T5 Authors and HuggingFace Inc. team. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" PyTorch T5 model.""" - -import torch -from torch import nn -from torch.utils.checkpoint import checkpoint - -from transformers.modeling_outputs import BaseModelOutputWithPastAndCrossAttentions -from transformers.models.t5.modeling_t5 import ( - T5Attention, - T5LayerCrossAttention, - T5LayerFF, - T5LayerSelfAttention, - T5Stack, -) -from transformers.utils import logging - -from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from .mixin_t5 import ( - T5AttentionAdaptersMixin, - T5CrossAttentionLayerAdaptersMixin, - T5FFLayerAdaptersMixin, - T5SelfAttentionLayerAdaptersMixin, - T5StackAdaptersMixin, -) - - -logger = logging.get_logger(__name__) - - -class T5LayerFFWithAdapters(T5FFLayerAdaptersMixin, T5LayerFF): - def forward(self, hidden_states): - forwarded_states = self.layer_norm(hidden_states) - forwarded_states = self.DenseReluDense(forwarded_states) - hidden_states = self.bottleneck_layer_forward( - hidden_states=self.dropout(forwarded_states), residual_input=hidden_states, layer_norm=None - ) - return hidden_states - - -class T5AttentionWithAdapters(T5AttentionAdaptersMixin, T5Attention): - def forward( - self, - hidden_states, - mask=None, - key_value_states=None, - position_bias=None, - past_key_value=None, - layer_head_mask=None, - query_length=None, - use_cache=False, - output_attentions=False, - ): - """ - Self-attention (if key_value_states is None) or attention over source sentence (provided by key_value_states). - """ - # Input is (batch_size, seq_length, dim) - # Mask is (batch_size, key_length) (non-causal) or (batch_size, key_length, key_length) - # past_key_value[0] is (batch_size, n_heads, q_len - 1, dim_per_head) - batch_size, seq_length = hidden_states.shape[:2] - - real_seq_length = seq_length - - if past_key_value is not None: - assert ( - len(past_key_value) == 2 - ), f"past_key_value should have 2 past states: keys and values. Got { len(past_key_value)} past states" - real_seq_length += past_key_value[0].shape[2] if query_length is None else query_length - - key_length = real_seq_length if key_value_states is None else key_value_states.shape[1] - - def shape(states): - """projection""" - return states.view(batch_size, -1, self.n_heads, self.key_value_proj_dim).transpose(1, 2) - - def unshape(states): - """reshape""" - return states.transpose(1, 2).contiguous().view(batch_size, -1, self.inner_dim) - - def project(hidden_states, proj_layer, key_value_states, past_key_value): - """projects hidden states correctly to key/query states""" - if key_value_states is None: - # self-attn - # (batch_size, n_heads, seq_length, dim_per_head) - hidden_states = shape(proj_layer(hidden_states)) - elif past_key_value is None: - # cross-attn - # (batch_size, n_heads, seq_length, dim_per_head) - hidden_states = shape(proj_layer(key_value_states)) - - if past_key_value is not None: - if key_value_states is None: - # self-attn - # (batch_size, n_heads, key_length, dim_per_head) - hidden_states = torch.cat([past_key_value, hidden_states], dim=2) - elif past_key_value.shape[2] != key_value_states.shape[1]: - # checking that the `sequence_length` of the `past_key_value` is the same as - # the provided `key_value_states` to support prefix tuning - # cross-attn - # (batch_size, n_heads, seq_length, dim_per_head) - hidden_states = shape(proj_layer(key_value_states)) - else: - # cross-attn - hidden_states = past_key_value - return hidden_states - - # get query states - query_states = shape(self.q(hidden_states)) # (batch_size, n_heads, seq_length, dim_per_head) - - # get key/value states - key_states = project( - hidden_states, self.k, key_value_states, past_key_value[0] if past_key_value is not None else None - ) - value_states = project( - hidden_states, self.v, key_value_states, past_key_value[1] if past_key_value is not None else None - ) - - query_states, key_states, value_states = match_attn_matrices_for_parallel( - query_states, key_states, value_states - ) - (mask,) = adjust_tensors_for_parallel(query_states, mask) - - present_key_value_state = (key_states, value_states) if (self.is_decoder and use_cache) else None - - key_states, value_states, mask = self.prefix_tuning(key_states, value_states, hidden_states, mask) - (query_states,) = adjust_tensors_for_parallel(key_states, query_states) - batch_size, key_length = key_states.shape[0], key_states.shape[2] - - # compute scores - scores = torch.matmul( - query_states, key_states.transpose(3, 2) - ) # equivalent of torch.einsum("bnqd,bnkd->bnqk", query_states, key_states), compatible with onnx op>9 - - if position_bias is None: - if not self.has_relative_attention_bias: - position_bias = torch.zeros( - (1, self.n_heads, real_seq_length, key_length), device=scores.device, dtype=scores.dtype - ) - if self.gradient_checkpointing and self.training: - position_bias.requires_grad = True - else: - position_bias = self.compute_bias(real_seq_length, key_length, device=scores.device) - - # if key and values are already calculated - # we want only the last query position bias - if past_key_value is not None: - position_bias = position_bias[:, :, -hidden_states.size(1) :, :] - - if mask is not None: - position_bias = position_bias + mask # (batch_size, n_heads, seq_length, key_length) - - if self.pruned_heads: - mask = torch.ones(position_bias.shape[1]) - mask[list(self.pruned_heads)] = 0 - position_bias_masked = position_bias[:, mask.bool()] - else: - position_bias_masked = position_bias - - scores += position_bias_masked - attn_weights = nn.functional.softmax(scores.float(), dim=-1).type_as( - scores - ) # (batch_size, n_heads, seq_length, key_length) - attn_weights = nn.functional.dropout( - attn_weights, p=self.dropout, training=self.training - ) # (batch_size, n_heads, seq_length, key_length) - - # Mask heads if we want to - if layer_head_mask is not None: - attn_weights = attn_weights * layer_head_mask - - attn_output = unshape(torch.matmul(attn_weights, value_states)) # (batch_size, seq_length, dim) - attn_output = self.o(attn_output) - - outputs = (attn_output,) + (present_key_value_state,) + (position_bias,) - - if output_attentions: - outputs = outputs + (attn_weights,) - return outputs - - -class T5LayerSelfAttentionWithAdapters(T5SelfAttentionLayerAdaptersMixin, T5LayerSelfAttention): - def forward( - self, - hidden_states, - attention_mask=None, - position_bias=None, - layer_head_mask=None, - past_key_value=None, - use_cache=False, - output_attentions=False, - ): - normed_hidden_states = self.layer_norm(hidden_states) - attention_output = self.SelfAttention( - normed_hidden_states, - mask=attention_mask, - position_bias=position_bias, - layer_head_mask=layer_head_mask, - past_key_value=past_key_value, - use_cache=use_cache, - output_attentions=output_attentions, - ) - hidden_states = self.bottleneck_layer_forward( - hidden_states=self.dropout(attention_output[0]), residual_input=hidden_states, layer_norm=None - ) - outputs = (hidden_states,) + attention_output[1:] # add attentions if we output them - return outputs - - -class T5LayerCrossAttentionWithAdapters(T5CrossAttentionLayerAdaptersMixin, T5LayerCrossAttention): - def forward( - self, - hidden_states, - key_value_states, - attention_mask=None, - position_bias=None, - layer_head_mask=None, - past_key_value=None, - use_cache=False, - query_length=None, - output_attentions=False, - ): - normed_hidden_states = self.layer_norm(hidden_states) - attention_output = self.EncDecAttention( - normed_hidden_states, - mask=attention_mask, - key_value_states=key_value_states, - position_bias=position_bias, - layer_head_mask=layer_head_mask, - past_key_value=past_key_value, - use_cache=use_cache, - query_length=query_length, - output_attentions=output_attentions, - ) - layer_output = self.bottleneck_layer_forward( - hidden_states=self.dropout(attention_output[0]), residual_input=hidden_states, layer_norm=None - ) - outputs = (layer_output,) + attention_output[1:] # add attentions if we output them - return outputs - - -class T5StackWithAdapters(T5StackAdaptersMixin, T5Stack): - def forward( - self, - input_ids=None, - attention_mask=None, - encoder_hidden_states=None, - encoder_attention_mask=None, - inputs_embeds=None, - head_mask=None, - cross_attn_head_mask=None, - past_key_values=None, - use_cache=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - ): - # Model parallel - if self.model_parallel: - torch.cuda.set_device(self.first_device) - self.embed_tokens = self.embed_tokens.to(self.first_device) - use_cache = use_cache if use_cache is not None else self.config.use_cache - output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions - output_hidden_states = ( - output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states - ) - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - if self.is_decoder and encoder_hidden_states is not None: - input_ids, encoder_attention_mask = adjust_tensors_for_parallel( - encoder_hidden_states, input_ids, encoder_attention_mask - ) - - if input_ids is not None and inputs_embeds is not None: - err_msg_prefix = "decoder_" if self.is_decoder else "" - raise ValueError( - f"You cannot specify both {err_msg_prefix}input_ids and {err_msg_prefix}inputs_embeds at the same time" - ) - elif input_ids is not None: - input_shape = input_ids.size() - input_ids = input_ids.view(-1, input_shape[-1]) - elif inputs_embeds is not None: - input_shape = inputs_embeds.size()[:-1] - else: - err_msg_prefix = "decoder_" if self.is_decoder else "" - raise ValueError(f"You have to specify either {err_msg_prefix}input_ids or {err_msg_prefix}inputs_embeds") - - if inputs_embeds is None: - if self.embed_tokens is None: - raise ValueError("You have to initialize the model with valid token embeddings") - inputs_embeds = self.embed_tokens(input_ids) - - batch_size, seq_length = input_shape - - # required mask seq length can be calculated via length of past - mask_seq_length = past_key_values[0][0].shape[2] + seq_length if past_key_values is not None else seq_length - - if use_cache is True: - if not self.is_decoder: - raise ValueError(f"`use_cache` can only be set to `True` if {self} is used as a decoder") - - if attention_mask is None: - attention_mask = torch.ones(batch_size, mask_seq_length, device=inputs_embeds.device) - if self.is_decoder and encoder_attention_mask is None and encoder_hidden_states is not None: - encoder_seq_length = encoder_hidden_states.shape[1] - encoder_attention_mask = torch.ones( - batch_size, encoder_seq_length, device=inputs_embeds.device, dtype=torch.long - ) - - # initialize past_key_values with `None` if past does not exist - if past_key_values is None: - past_key_values = [None] * len(self.block) - - # We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length] - # ourselves in which case we just need to make it broadcastable to all heads. - extended_attention_mask = self.get_extended_attention_mask(attention_mask, input_shape) - - # If a 2D or 3D attention mask is provided for the cross-attention - # we need to make broadcastable to [batch_size, num_heads, seq_length, seq_length] - if self.is_decoder and encoder_hidden_states is not None: - encoder_batch_size, encoder_sequence_length, _ = encoder_hidden_states.size() - encoder_hidden_shape = (encoder_batch_size, encoder_sequence_length) - if encoder_attention_mask is None: - encoder_attention_mask = torch.ones(encoder_hidden_shape, device=inputs_embeds.device) - encoder_extended_attention_mask = self.invert_attention_mask(encoder_attention_mask) - else: - encoder_extended_attention_mask = None - - if self.gradient_checkpointing and self.training: - if use_cache: - logger.warning_once( - "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`..." - ) - use_cache = False - - # Prepare head mask if needed - head_mask = self.get_head_mask(head_mask, self.config.num_layers) - cross_attn_head_mask = self.get_head_mask(cross_attn_head_mask, self.config.num_layers) - present_key_value_states = () if use_cache else None - all_hidden_states = () if output_hidden_states else None - all_attentions = () if output_attentions else None - all_cross_attentions = () if (output_attentions and self.is_decoder) else None - position_bias = None - encoder_decoder_position_bias = None - - hidden_states = self.dropout(inputs_embeds) - if not self.is_decoder: - hidden_states = self.post_embedding_forward(hidden_states) - - for i, (layer_module, past_key_value) in enumerate(zip(self.block, past_key_values)): - layer_head_mask = head_mask[i] - cross_attn_layer_head_mask = cross_attn_head_mask[i] - # Model parallel - if self.model_parallel: - torch.cuda.set_device(hidden_states.device) - # Ensure that attention_mask is always on the same device as hidden_states - if attention_mask is not None: - attention_mask = attention_mask.to(hidden_states.device) - if position_bias is not None: - position_bias = position_bias.to(hidden_states.device) - if encoder_hidden_states is not None: - encoder_hidden_states = encoder_hidden_states.to(hidden_states.device) - if encoder_extended_attention_mask is not None: - encoder_extended_attention_mask = encoder_extended_attention_mask.to(hidden_states.device) - if encoder_decoder_position_bias is not None: - encoder_decoder_position_bias = encoder_decoder_position_bias.to(hidden_states.device) - if layer_head_mask is not None: - layer_head_mask = layer_head_mask.to(hidden_states.device) - if cross_attn_layer_head_mask is not None: - cross_attn_layer_head_mask = cross_attn_layer_head_mask.to(hidden_states.device) - if output_hidden_states: - all_hidden_states = all_hidden_states + (hidden_states,) - - if self.gradient_checkpointing and self.training: - - def create_custom_forward(module): - def custom_forward(*inputs): - return tuple(module(*inputs, use_cache, output_attentions)) - - return custom_forward - - layer_outputs = checkpoint( - create_custom_forward(layer_module), - hidden_states, - extended_attention_mask, - position_bias, - encoder_hidden_states, - encoder_extended_attention_mask, - encoder_decoder_position_bias, - layer_head_mask, - cross_attn_layer_head_mask, - None, # past_key_value is always None with gradient checkpointing - ) - else: - layer_outputs = layer_module( - hidden_states, - attention_mask=extended_attention_mask, - position_bias=position_bias, - encoder_hidden_states=encoder_hidden_states, - encoder_attention_mask=encoder_extended_attention_mask, - encoder_decoder_position_bias=encoder_decoder_position_bias, - layer_head_mask=layer_head_mask, - cross_attn_layer_head_mask=cross_attn_layer_head_mask, - past_key_value=past_key_value, - use_cache=use_cache, - output_attentions=output_attentions, - ) - - # layer_outputs is a tuple with: - # hidden-states, key-value-states, (self-attention position bias), (self-attention weights), (cross-attention position bias), (cross-attention weights) - if use_cache is False: - layer_outputs = layer_outputs[:1] + (None,) + layer_outputs[1:] - - hidden_states, present_key_value_state = layer_outputs[:2] - - attention_mask, extended_attention_mask = adjust_tensors_for_parallel( - hidden_states, attention_mask, extended_attention_mask - ) - - # We share the position biases between the layers - the first layer store them - # layer_outputs = hidden-states, key-value-states (self-attention position bias), (self-attention weights), - # (cross-attention position bias), (cross-attention weights) - position_bias = layer_outputs[2] - if self.is_decoder and encoder_hidden_states is not None: - encoder_decoder_position_bias = layer_outputs[4 if output_attentions else 3] - # append next layer key value states - if use_cache: - present_key_value_states = present_key_value_states + (present_key_value_state,) - - if position_bias is not None: - position_bias = adjust_tensors_for_parallel(hidden_states, position_bias)[0] - if encoder_decoder_position_bias is not None: - encoder_decoder_position_bias = adjust_tensors_for_parallel( - hidden_states, encoder_decoder_position_bias - )[0] - - if output_attentions: - all_attentions = all_attentions + (layer_outputs[3],) - if self.is_decoder: - all_cross_attentions = all_cross_attentions + (layer_outputs[5],) - - # Model Parallel: If it's the last layer for that device, put things on the next device - if self.model_parallel: - for k, v in self.device_map.items(): - if i == v[-1] and "cuda:" + str(k) != self.last_device: - hidden_states = hidden_states.to("cuda:" + str(k + 1)) - - hidden_states = self.final_layer_norm(hidden_states) - hidden_states = self.dropout(hidden_states) - - # Add last layer - if output_hidden_states: - all_hidden_states = all_hidden_states + (hidden_states,) - - if not return_dict: - return tuple( - v - for v in [ - hidden_states, - present_key_value_states, - all_hidden_states, - all_attentions, - all_cross_attentions, - ] - if v is not None - ) - return BaseModelOutputWithPastAndCrossAttentions( - last_hidden_state=hidden_states, - past_key_values=present_key_value_states, - hidden_states=all_hidden_states, - attentions=all_attentions, - cross_attentions=all_cross_attentions, - ) diff --git a/adapters/src/adapters/models/vit/__init__.py b/adapters/src/adapters/models/vit/__init__.py deleted file mode 100644 index 8f87c889..00000000 --- a/adapters/src/adapters/models/vit/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["ViTAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import ViTAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/vit/adapter_model.py b/adapters/src/adapters/models/vit/adapter_model.py deleted file mode 100644 index ece9ec52..00000000 --- a/adapters/src/adapters/models/vit/adapter_model.py +++ /dev/null @@ -1,88 +0,0 @@ -from typing import Optional - -import torch - -from transformers.models.vit.modeling_vit import ( - VIT_INPUTS_DOCSTRING, - VIT_START_DOCSTRING, - ViTModel, - ViTPreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...wrappers import init - - -@add_start_docstrings( - """ViT Model transformer with the option to add multiple flexible heads on top.""", - VIT_START_DOCSTRING, -) -class ViTAdapterModel(ModelWithFlexibleHeadsAdaptersMixin, ViTPreTrainedModel): - - head_types = [ - "image_classification", - ] - - def __init__(self, config): - super().__init__(config) - - self.vit = ViTModel(config) - init(self.vit) - - self._init_head_modules() - - # Initialize weights and apply final processing - self.post_init() - - @add_start_docstrings_to_model_forward(VIT_INPUTS_DOCSTRING) - def forward( - self, - pixel_values: Optional[torch.Tensor] = None, - head_mask: Optional[torch.Tensor] = None, - output_attentions: Optional[bool] = None, - output_hidden_states: Optional[bool] = None, - interpolate_pos_encoding: Optional[bool] = None, - return_dict: Optional[bool] = None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs, - ): - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.vit( - pixel_values, - head_mask=head_mask, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - interpolate_pos_encoding=interpolate_pos_encoding, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - - # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads - if not return_dict: - head_inputs = (outputs[0],) + outputs[2:] - else: - head_inputs = outputs - pooled_output = outputs[1] - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - head_inputs, - head_name=head, - return_dict=return_dict, - pooled_output=pooled_output, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs diff --git a/adapters/src/adapters/models/vit/mixin_vit.py b/adapters/src/adapters/models/vit/mixin_vit.py deleted file mode 100644 index 9b4a92e4..00000000 --- a/adapters/src/adapters/models/vit/mixin_vit.py +++ /dev/null @@ -1,60 +0,0 @@ -from typing import Iterable, Tuple - -import torch.nn as nn - -from ...methods.bottleneck import BottleneckLayer -from ...methods.lora import LoRALinear -from ...methods.prefix_tuning import PrefixTuningLayer -from ...model_mixin import ModelBaseAdaptersMixin - - -class ViTSelfAttentionAdaptersMixin: - def init_adapters(self, model_config, adapters_config): - self.location_key = "self" - - # Wrap layers for LoRA - self.query = LoRALinear.wrap(self.query, "selfattn", model_config, adapters_config, attn_key="q") - self.key = LoRALinear.wrap(self.key, "selfattn", model_config, adapters_config, attn_key="k") - self.value = LoRALinear.wrap(self.value, "selfattn", model_config, adapters_config, attn_key="v") - - self.prefix_tuning = PrefixTuningLayer( - self.location_key + "_prefix" if self.location_key else None, model_config, adapters_config - ) - - -class ViTIntermediateAdaptersMixin: - def init_adapters(self, model_config, adapters_config): - # Wrap layers for LoRA - self.dense = LoRALinear.wrap(self.dense, "intermediate", model_config, adapters_config) - - -class ViTOutputAdaptersMixin: - """Adds adapters to the ViTOutput module.""" - - def init_adapters(self, model_config, adapters_config): - self.output_adapters = BottleneckLayer("output_adapter") - - # Wrap layers for LoRA - self.dense = LoRALinear.wrap(self.dense, "output", model_config, adapters_config) - - -# Unlike BERT, self attention adapters are added to Layer module in ViT -class ViTLayerAdaptersMixin: - """Adds adapters to the ViTSelfOutput module.""" - - def init_adapters(self, model_config, adapters_config): - self.attention_adapters = BottleneckLayer("mh_adapter") - - -class ViTModelAdaptersMixin(ModelBaseAdaptersMixin): - """Adds adapters to the ViTModel class.""" - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - - # Register hook for post embedding forward - self.embeddings.register_forward_hook(self.post_embedding_forward) - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.encoder.layer): - yield i, layer diff --git a/adapters/src/adapters/models/vit/modeling_vit.py b/adapters/src/adapters/models/vit/modeling_vit.py deleted file mode 100644 index f8c02bd9..00000000 --- a/adapters/src/adapters/models/vit/modeling_vit.py +++ /dev/null @@ -1,110 +0,0 @@ -# coding=utf-8 -# Copyright 2021 Google AI, Ross Wightman, The HuggingFace Inc. team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" PyTorch ViT model.""" - - -import math -from typing import Optional, Tuple, Union - -import torch -import torch.utils.checkpoint -from torch import nn - -from adapters.composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from transformers.models.vit.modeling_vit import ViTLayer, ViTOutput, ViTSelfAttention - -from .mixin_vit import ViTLayerAdaptersMixin, ViTOutputAdaptersMixin, ViTSelfAttentionAdaptersMixin - - -class ViTSelfAttentionWithAdapters(ViTSelfAttentionAdaptersMixin, ViTSelfAttention): - def forward( - self, hidden_states, head_mask: Optional[torch.Tensor] = None, output_attentions: bool = False - ) -> Union[Tuple[torch.Tensor, torch.Tensor], Tuple[torch.Tensor]]: - mixed_query_layer = self.query(hidden_states) - - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - query_layer = self.transpose_for_scores(mixed_query_layer) - - query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) - - key_layer, value_layer, _ = self.prefix_tuning(key_layer, value_layer, hidden_states) - (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) - - # Take the dot product between "query" and "key" to get the raw attention scores. - attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) - - attention_scores = attention_scores / math.sqrt(self.attention_head_size) - - # Normalize the attention scores to probabilities. - attention_probs = nn.functional.softmax(attention_scores, dim=-1) - - # This is actually dropping out entire tokens to attend to, which might - # seem a bit unusual, but is taken from the original Transformer paper. - attention_probs = self.dropout(attention_probs) - - # Mask heads if we want to - if head_mask is not None: - attention_probs = attention_probs * head_mask - - context_layer = torch.matmul(attention_probs, value_layer) - - context_layer = context_layer.permute(0, 2, 1, 3).contiguous() - new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) - context_layer = context_layer.view(new_context_layer_shape) - - outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) - - return outputs - - -class ViTOutputWithAdapters(ViTOutputAdaptersMixin, ViTOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.output_adapters.bottleneck_layer_forward(hidden_states, input_tensor, None) - - return hidden_states - - -class ViTLayerWithAdapters(ViTLayerAdaptersMixin, ViTLayer): - """This corresponds to the Block class in the timm implementation.""" - - def forward( - self, - hidden_states: torch.Tensor, - head_mask: Optional[torch.Tensor] = None, - output_attentions: bool = False, - ) -> Union[Tuple[torch.Tensor, torch.Tensor], Tuple[torch.Tensor]]: - self_attention_outputs = self.attention( - self.layernorm_before(hidden_states), # in ViT, layernorm is applied before self-attention - head_mask, - output_attentions=output_attentions, - ) - attention_output = self_attention_outputs[0] - outputs = self_attention_outputs[1:] # add self attentions if we output attention weights - - hidden_states = self.attention_adapters.bottleneck_layer_forward(attention_output, hidden_states, None) - - # in ViT, layernorm is also applied after self-attention - layer_output = self.layernorm_after(hidden_states) - layer_output = self.intermediate(layer_output) - - # second residual connection is done here - layer_output = self.output(layer_output, hidden_states) - - outputs = (layer_output,) + outputs - - return outputs diff --git a/adapters/src/adapters/models/xlm_roberta/__init__.py b/adapters/src/adapters/models/xlm_roberta/__init__.py deleted file mode 100644 index d744df18..00000000 --- a/adapters/src/adapters/models/xlm_roberta/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["XLMRobertaAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import XLMRobertaAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/xlm_roberta/adapter_model.py b/adapters/src/adapters/models/xlm_roberta/adapter_model.py deleted file mode 100644 index 8acfde79..00000000 --- a/adapters/src/adapters/models/xlm_roberta/adapter_model.py +++ /dev/null @@ -1,127 +0,0 @@ -from transformers.models.xlm_roberta.modeling_xlm_roberta import ( - XLM_ROBERTA_INPUTS_DOCSTRING, - XLM_ROBERTA_START_DOCSTRING, - XLMRobertaModel, - XLMRobertaPreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - """XLM-Roberta Model transformer with the option to add multiple flexible heads on top.""", - XLM_ROBERTA_START_DOCSTRING, -) -class XLMRobertaAdapterModel( - EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, XLMRobertaPreTrainedModel -): - - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "multiple_choice", - "question_answering", - "dependency_parsing", - "masked_lm", - "causal_lm", - ] - - def __init__(self, config): - super().__init__(config) - - self.roberta = XLMRobertaModel(config) - init(self.roberta) - - self._init_head_modules() - - self.init_weights() - - @add_start_docstrings_to_model_forward(XLM_ROBERTA_INPUTS_DOCSTRING.format("batch_size, sequence_length")) - def forward( - self, - input_ids=None, - attention_mask=None, - token_type_ids=None, - position_ids=None, - head_mask=None, - inputs_embeds=None, - output_attentions=None, - output_hidden_states=None, - return_dict=None, - head=None, - output_adapter_gating_scores=False, - output_adapter_fusion_attentions=False, - **kwargs - ): - input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None - position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None - token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None - attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None - inputs_embeds = ( - inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) - if inputs_embeds is not None - else None - ) - - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.roberta( - input_ids, - attention_mask=attention_mask, - token_type_ids=token_type_ids, - position_ids=position_ids, - head_mask=head_mask, - inputs_embeds=inputs_embeds, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads - if not return_dict: - head_inputs = (outputs[0],) + outputs[2:] - else: - head_inputs = outputs - pooled_output = outputs[1] - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - head_inputs, - head_name=head, - attention_mask=attention_mask, - return_dict=return_dict, - pooled_output=pooled_output, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs - - # Copied from RobertaForCausalLM - def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): - input_shape = input_ids.shape - # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly - if attention_mask is None: - attention_mask = input_ids.new_ones(input_shape) - - # cut decoder_input_ids if past is used - if past is not None: - input_ids = input_ids[:, -1:] - - return { - "input_ids": input_ids, - "attention_mask": attention_mask, - "past_key_values": past, - "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), - } diff --git a/adapters/src/adapters/models/xlm_roberta/modeling_xlm_roberta.py b/adapters/src/adapters/models/xlm_roberta/modeling_xlm_roberta.py deleted file mode 100644 index 959f75c0..00000000 --- a/adapters/src/adapters/models/xlm_roberta/modeling_xlm_roberta.py +++ /dev/null @@ -1,164 +0,0 @@ -# coding=utf-8 -# Copyright 2019 Facebook AI Research and the HuggingFace Inc. team. -# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""PyTorch XLM-RoBERTa model.""" - -import math -from typing import Optional, Tuple - -import torch -import torch.utils.checkpoint -from torch import nn - -from transformers.models.xlm_roberta.modeling_xlm_roberta import ( - XLMRobertaOutput, - XLMRobertaSelfAttention, - XLMRobertaSelfOutput, -) - -from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from ...utils import prefix_attention_mask -from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin - - -# Copied from transformers.models.roberta.modeling_roberta.RobertaSelfAttention with Roberta->XLMRoberta -class XLMRobertaSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, XLMRobertaSelfAttention): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.FloatTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - encoder_hidden_states: Optional[torch.FloatTensor] = None, - encoder_attention_mask: Optional[torch.FloatTensor] = None, - past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, - output_attentions: Optional[bool] = False, - ) -> Tuple[torch.Tensor]: - attention_mask = prefix_attention_mask(attention_mask) # type: ignore - - mixed_query_layer = self.query(hidden_states) - - # If this is instantiated as a cross-attention module, the keys - # and values come from an encoder; the attention mask needs to be - # such that the encoder's padding tokens are not attended to. - is_cross_attention = encoder_hidden_states is not None - - if is_cross_attention and past_key_value is not None: - # reuse k,v, cross_attentions - key_layer = past_key_value[0] - value_layer = past_key_value[1] - attention_mask = encoder_attention_mask - elif is_cross_attention: - key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) - value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) - attention_mask = encoder_attention_mask - elif past_key_value is not None: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - key_layer = torch.cat([past_key_value[0], key_layer], dim=2) - value_layer = torch.cat([past_key_value[1], value_layer], dim=2) - else: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - - query_layer = self.transpose_for_scores(mixed_query_layer) - query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) - (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) - - use_cache = past_key_value is not None - if self.is_decoder: - # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. - # Further calls to cross_attention layer can then reuse all cross-attention - # key/value_states (first "if" case) - # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of - # all previous decoder key/value_states. Further calls to uni-directional self-attention - # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) - # if encoder bi-directional self-attention `past_key_value` is always `None` - past_key_value = (key_layer, value_layer) - - key_layer, value_layer, attention_mask = self.prefix_tuning( - key_layer, value_layer, hidden_states, attention_mask - ) - (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) - - # Take the dot product between "query" and "key" to get the raw attention scores. - attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) - - if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": - query_length, key_length = query_layer.shape[2], key_layer.shape[2] - if use_cache: - position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( - -1, 1 - ) - else: - position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) - position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) - distance = position_ids_l - position_ids_r - - positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) - positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility - - if self.position_embedding_type == "relative_key": - relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores - elif self.position_embedding_type == "relative_key_query": - relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key - - attention_scores = attention_scores / math.sqrt(self.attention_head_size) - if attention_mask is not None: - # Apply the attention mask is (precomputed for all layers in XLMRobertaModel forward() function) - attention_scores = attention_scores + attention_mask - - # Normalize the attention scores to probabilities. - attention_probs = nn.functional.softmax(attention_scores, dim=-1) - - # This is actually dropping out entire tokens to attend to, which might - # seem a bit unusual, but is taken from the original Transformer paper. - attention_probs = self.dropout(attention_probs) - - # Mask heads if we want to - if head_mask is not None: - attention_probs = attention_probs * head_mask - - context_layer = torch.matmul(attention_probs, value_layer) - - context_layer = context_layer.permute(0, 2, 1, 3).contiguous() - new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) - context_layer = context_layer.view(new_context_layer_shape) - - outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) - - if self.is_decoder: - outputs = outputs + (past_key_value,) - return outputs - - -# Copied from transformers.models.roberta.modeling_roberta.RobertaSelfOutput with Roberta->XLMRoberta -class XLMRobertaSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, XLMRobertaSelfOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states - - -# Copied from transformers.models.roberta.modeling_roberta.RobertaOutput with Roberta->XLMRoberta -class XLMRobertaOutputWithAdapters(BertOutputAdaptersMixin, XLMRobertaOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, self.LayerNorm) - return hidden_states diff --git a/adapters/src/adapters/models/xmod/__init__.py b/adapters/src/adapters/models/xmod/__init__.py deleted file mode 100644 index 7140f6f4..00000000 --- a/adapters/src/adapters/models/xmod/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2023 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = { - "adapter_model": ["XmodAdapterModel"], -} - - -if TYPE_CHECKING: - from .adapter_model import XmodAdapterModel - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/models/xmod/adapter_model.py b/adapters/src/adapters/models/xmod/adapter_model.py deleted file mode 100644 index 94cc43f7..00000000 --- a/adapters/src/adapters/models/xmod/adapter_model.py +++ /dev/null @@ -1,133 +0,0 @@ -from typing import Optional - -import torch - -from transformers.models.xmod.modeling_xmod import ( - XMOD_INPUTS_DOCSTRING, - XMOD_START_DOCSTRING, - XmodModel, - XmodPreTrainedModel, -) -from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward - -from ...context import AdapterSetup -from ...heads import ModelWithFlexibleHeadsAdaptersMixin -from ...model_mixin import EmbeddingAdaptersWrapperMixin -from ...wrappers import init - - -@add_start_docstrings( - """X-MOD Model transformer with the option to add multiple flexible heads on top.""", - XMOD_START_DOCSTRING, -) -class XmodAdapterModel(EmbeddingAdaptersWrapperMixin, ModelWithFlexibleHeadsAdaptersMixin, XmodPreTrainedModel): - - head_types = [ - "classification", - "multilabel_classification", - "tagging", - "multiple_choice", - "question_answering", - "dependency_parsing", - "masked_lm", - "causal_lm", - ] - - def __init__(self, config): - super().__init__(config) - - self.roberta = XmodModel(config) - init(self.roberta) - - self._init_head_modules() - - self.init_weights() - - @add_start_docstrings_to_model_forward(XMOD_INPUTS_DOCSTRING.format("batch_size, sequence_length")) - def forward( - self, - input_ids: Optional[torch.Tensor] = None, - lang_ids: Optional[torch.LongTensor] = None, - attention_mask: Optional[torch.Tensor] = None, - token_type_ids: Optional[torch.Tensor] = None, - position_ids: Optional[torch.Tensor] = None, - head_mask: Optional[torch.Tensor] = None, - inputs_embeds: Optional[torch.Tensor] = None, - output_attentions: Optional[bool] = None, - output_hidden_states: Optional[bool] = None, - return_dict: Optional[bool] = None, - head: Optional[str] = None, - output_adapter_gating_scores: Optional[bool] = False, - output_adapter_fusion_attentions: Optional[bool] = False, - **kwargs - ): - # Flatten for multiple choice tasks - input_ids = input_ids.view(-1, input_ids.size(-1)) if input_ids is not None else None - lang_ids = lang_ids.repeat(input_ids.size(0) * input_ids.size(1)) if lang_ids is not None else None - position_ids = position_ids.view(-1, position_ids.size(-1)) if position_ids is not None else None - token_type_ids = token_type_ids.view(-1, token_type_ids.size(-1)) if token_type_ids is not None else None - attention_mask = attention_mask.view(-1, attention_mask.size(-1)) if attention_mask is not None else None - inputs_embeds = ( - inputs_embeds.view(-1, inputs_embeds.size(-2), inputs_embeds.size(-1)) - if inputs_embeds is not None - else None - ) - - return_dict = return_dict if return_dict is not None else self.config.use_return_dict - - outputs, context = self.roberta( - input_ids, - lang_ids=lang_ids, - attention_mask=attention_mask, - token_type_ids=token_type_ids, - position_ids=position_ids, - head_mask=head_mask, - inputs_embeds=inputs_embeds, - output_attentions=output_attentions, - output_hidden_states=output_hidden_states, - return_dict=return_dict, - output_adapter_gating_scores=output_adapter_gating_scores, - output_adapter_fusion_attentions=output_adapter_fusion_attentions, - adapter_input_parallelized=kwargs.pop("adapter_input_parallelized", False), - output_context=True, - ) - # required e.g. for prompt tuning in all models - kwargs["context"] = context - # BERT & RoBERTa return the pooled output as second item, we don't need that in these heads - if not return_dict: - head_inputs = (outputs[0],) + outputs[2:] - else: - head_inputs = outputs - pooled_output = outputs[1] - - if head or AdapterSetup.get_context_head_setup() or self.active_head: - head_outputs = self.forward_head( - head_inputs, - head_name=head, - attention_mask=attention_mask, - return_dict=return_dict, - pooled_output=pooled_output, - **kwargs, - ) - return head_outputs - else: - # in case no head is used just return the output of the base model (including pooler output) - return outputs - - # Copied from RobertaForCausalLM - def prepare_inputs_for_generation(self, input_ids, past=None, attention_mask=None, **model_kwargs): - input_shape = input_ids.shape - # if model is used as a decoder in encoder-decoder model, the decoder attention mask is created on the fly - if attention_mask is None: - attention_mask = input_ids.new_ones(input_shape) - - # cut decoder_input_ids if past is used - if past is not None: - input_ids = input_ids[:, -1:] - - return { - "input_ids": input_ids, - "attention_mask": attention_mask, - "past_key_values": past, - "adapter_input_parallelized": model_kwargs.pop("adapter_input_parallelized", False), - } diff --git a/adapters/src/adapters/models/xmod/mixin_xmod.py b/adapters/src/adapters/models/xmod/mixin_xmod.py deleted file mode 100644 index bef4371f..00000000 --- a/adapters/src/adapters/models/xmod/mixin_xmod.py +++ /dev/null @@ -1,71 +0,0 @@ -from typing import Iterable, Tuple - -import torch.nn as nn - -from transformers.utils import logging - -from ...composition import adjust_tensors_for_parallel_ -from ...model_mixin import EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin - - -logger = logging.get_logger(__name__) - - -class XmodModelAdaptersMixin(EmbeddingAdaptersMixin, InvertibleAdaptersMixin, ModelBaseAdaptersMixin): - """Adds adapters to the BertModel module.""" - - def init_adapters(self, model_config, adapters_config): - super().init_adapters(model_config, adapters_config) - - # Set hook for parallel composition - for _, layer in self.iter_layers(): - self._set_layer_hook_for_parallel(layer) - - # Delete original adapter modules - for _, layer in self.iter_layers(): - del layer.output.adapter_modules - - # Register hook for post embedding forward - self.embeddings.register_forward_hook(self.post_embedding_forward) - - def _set_layer_hook_for_parallel(self, layer: nn.Module): - def hook(module, input): - # hook[1] is lang_ids tensor - adjust_tensors_for_parallel_(input[0], input[2]) - return input - - layer.register_forward_pre_hook(hook) - - def iter_layers(self) -> Iterable[Tuple[int, nn.Module]]: - for i, layer in enumerate(self.encoder.layer): - yield i, layer - - def forward(self, *args, **kwargs): - if "lang_ids" in kwargs and kwargs["lang_ids"] is not None: - raise ValueError( - "XmodModel with adapters does not support `lang_ids` as an argument. Use `set_active_adapters`" - " instead." - ) - else: - kwargs["lang_ids"] = 1 - return super().forward(*args, **kwargs) - - # Override adapter-specific methods in original implementation - - def set_default_language(self, language: str): - raise ValueError( - "`set_default_language` is not implemented for models using `adapters`. Use `set_active_adapters` instead." - ) - - def freeze_embeddings_and_language_adapters(self): - """ - Freeze the embeddings and language adapters of the model. Usually, this is applied before the model is - fine-tuned on a downstream task. - """ - # TODO: Replace this by a general method for `adapters`. - logger.info("Freezing embeddings") - for parameter in self.base_model.embeddings.parameters(): - parameter.requires_grad = False - logger.info("Freezing adapters") - for adapter_name in self.adapters_config: - self.apply_to_adapter_layers(lambda i, layer: layer.freeze_adapter(adapter_name)) diff --git a/adapters/src/adapters/models/xmod/modeling_xmod.py b/adapters/src/adapters/models/xmod/modeling_xmod.py deleted file mode 100644 index e91131e9..00000000 --- a/adapters/src/adapters/models/xmod/modeling_xmod.py +++ /dev/null @@ -1,161 +0,0 @@ -# coding=utf-8 -# Copyright 2023 Meta AI Team and the HuggingFace Inc. team. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""PyTorch X-MOD model.""" - -import math -from typing import Optional, Tuple - -import torch -import torch.utils.checkpoint -from torch import nn - -from transformers.models.xmod.modeling_xmod import XmodOutput, XmodSelfAttention, XmodSelfOutput - -from ...composition import adjust_tensors_for_parallel, match_attn_matrices_for_parallel -from ...utils import prefix_attention_mask -from ..bert.mixin_bert import BertOutputAdaptersMixin, BertSelfAttentionAdaptersMixin, BertSelfOutputAdaptersMixin - - -# Copied from transformers.models.roberta.modeling_roberta.RobertaSelfAttention with Roberta->Xmod -class XmodSelfAttentionWithAdapters(BertSelfAttentionAdaptersMixin, XmodSelfAttention): - def forward( - self, - hidden_states: torch.Tensor, - attention_mask: Optional[torch.FloatTensor] = None, - head_mask: Optional[torch.FloatTensor] = None, - encoder_hidden_states: Optional[torch.FloatTensor] = None, - encoder_attention_mask: Optional[torch.FloatTensor] = None, - past_key_value: Optional[Tuple[Tuple[torch.FloatTensor]]] = None, - output_attentions: Optional[bool] = False, - ) -> Tuple[torch.Tensor]: - attention_mask = prefix_attention_mask(attention_mask) # type: ignore - - mixed_query_layer = self.query(hidden_states) - - # If this is instantiated as a cross-attention module, the keys - # and values come from an encoder; the attention mask needs to be - # such that the encoder's padding tokens are not attended to. - is_cross_attention = encoder_hidden_states is not None - - if is_cross_attention and past_key_value is not None: - # reuse k,v, cross_attentions - key_layer = past_key_value[0] - value_layer = past_key_value[1] - attention_mask = encoder_attention_mask - elif is_cross_attention: - key_layer = self.transpose_for_scores(self.key(encoder_hidden_states)) - value_layer = self.transpose_for_scores(self.value(encoder_hidden_states)) - attention_mask = encoder_attention_mask - elif past_key_value is not None: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - key_layer = torch.cat([past_key_value[0], key_layer], dim=2) - value_layer = torch.cat([past_key_value[1], value_layer], dim=2) - else: - key_layer = self.transpose_for_scores(self.key(hidden_states)) - value_layer = self.transpose_for_scores(self.value(hidden_states)) - - query_layer = self.transpose_for_scores(mixed_query_layer) - query_layer, key_layer, value_layer = match_attn_matrices_for_parallel(query_layer, key_layer, value_layer) - (attention_mask,) = adjust_tensors_for_parallel(query_layer, attention_mask) - - use_cache = past_key_value is not None - if self.is_decoder: - # if cross_attention save Tuple(torch.Tensor, torch.Tensor) of all cross attention key/value_states. - # Further calls to cross_attention layer can then reuse all cross-attention - # key/value_states (first "if" case) - # if uni-directional self-attention (decoder) save Tuple(torch.Tensor, torch.Tensor) of - # all previous decoder key/value_states. Further calls to uni-directional self-attention - # can concat previous decoder key/value_states to current projected key/value_states (third "elif" case) - # if encoder bi-directional self-attention `past_key_value` is always `None` - past_key_value = (key_layer, value_layer) - - key_layer, value_layer, attention_mask = self.prefix_tuning( - key_layer, value_layer, hidden_states, attention_mask - ) - (query_layer,) = adjust_tensors_for_parallel(key_layer, query_layer) - - # Take the dot product between "query" and "key" to get the raw attention scores. - attention_scores = torch.matmul(query_layer, key_layer.transpose(-1, -2)) - - if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query": - query_length, key_length = query_layer.shape[2], key_layer.shape[2] - if use_cache: - position_ids_l = torch.tensor(key_length - 1, dtype=torch.long, device=hidden_states.device).view( - -1, 1 - ) - else: - position_ids_l = torch.arange(query_length, dtype=torch.long, device=hidden_states.device).view(-1, 1) - position_ids_r = torch.arange(key_length, dtype=torch.long, device=hidden_states.device).view(1, -1) - distance = position_ids_l - position_ids_r - - positional_embedding = self.distance_embedding(distance + self.max_position_embeddings - 1) - positional_embedding = positional_embedding.to(dtype=query_layer.dtype) # fp16 compatibility - - if self.position_embedding_type == "relative_key": - relative_position_scores = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores - elif self.position_embedding_type == "relative_key_query": - relative_position_scores_query = torch.einsum("bhld,lrd->bhlr", query_layer, positional_embedding) - relative_position_scores_key = torch.einsum("bhrd,lrd->bhlr", key_layer, positional_embedding) - attention_scores = attention_scores + relative_position_scores_query + relative_position_scores_key - - attention_scores = attention_scores / math.sqrt(self.attention_head_size) - if attention_mask is not None: - # Apply the attention mask is (precomputed for all layers in XmodModel forward() function) - attention_scores = attention_scores + attention_mask - - # Normalize the attention scores to probabilities. - attention_probs = nn.functional.softmax(attention_scores, dim=-1) - - # This is actually dropping out entire tokens to attend to, which might - # seem a bit unusual, but is taken from the original Transformer paper. - attention_probs = self.dropout(attention_probs) - - # Mask heads if we want to - if head_mask is not None: - attention_probs = attention_probs * head_mask - - context_layer = torch.matmul(attention_probs, value_layer) - - context_layer = context_layer.permute(0, 2, 1, 3).contiguous() - new_context_layer_shape = context_layer.size()[:-2] + (self.all_head_size,) - context_layer = context_layer.view(new_context_layer_shape) - - outputs = (context_layer, attention_probs) if output_attentions else (context_layer,) - - if self.is_decoder: - outputs = outputs + (past_key_value,) - return outputs - - -class XmodSelfOutputWithAdapters(BertSelfOutputAdaptersMixin, XmodSelfOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, None) - return hidden_states - - -class XmodOutputWithAdapters(BertOutputAdaptersMixin, XmodOutput): - def forward(self, hidden_states: torch.Tensor, input_tensor: torch.Tensor, lang_ids: torch.Tensor) -> torch.Tensor: - hidden_states = self.dense(hidden_states) - hidden_states = self.dropout(hidden_states) - if self.adapter_layer_norm is not None: - layer_norm = self.adapter_layer_norm - elif self.adapter_reuse_layer_norm: - layer_norm = self.LayerNorm - hidden_states = self.bottleneck_layer_forward(hidden_states, input_tensor, layer_norm) - return hidden_states diff --git a/adapters/src/adapters/trainer.py b/adapters/src/adapters/trainer.py deleted file mode 100644 index ff915afc..00000000 --- a/adapters/src/adapters/trainer.py +++ /dev/null @@ -1,252 +0,0 @@ -import os -import re -from typing import Callable, Dict, List, Optional, Tuple, Union - -import torch -from torch import nn -from torch.utils.data.dataset import Dataset - -from transformers import PreTrainedModel, Seq2SeqTrainer, Trainer, __version__ -from transformers.configuration_utils import PretrainedConfig -from transformers.data.data_collator import DataCollator -from transformers.modeling_utils import unwrap_model -from transformers.tokenization_utils_base import PreTrainedTokenizerBase -from transformers.trainer_callback import TrainerCallback, TrainerControl, TrainerState -from transformers.trainer_utils import EvalPrediction -from transformers.training_args import TrainingArguments -from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, is_sagemaker_mp_enabled, logging - -from .composition import AdapterCompositionBlock, Fuse - - -if is_sagemaker_mp_enabled(): - import smdistributed.modelparallel.torch as smp - - -logger = logging.get_logger(__name__) - - -class AdapterTrainer(Trainer): - def __init__( - self, - model: Union[PreTrainedModel, nn.Module] = None, - args: TrainingArguments = None, - data_collator: Optional[DataCollator] = None, - train_dataset: Optional[Dataset] = None, - eval_dataset: Optional[Dataset] = None, - tokenizer: Optional[PreTrainedTokenizerBase] = None, - model_init: Callable[[], PreTrainedModel] = None, - compute_metrics: Optional[Callable[[EvalPrediction], Dict]] = None, - callbacks: Optional[List[TrainerCallback]] = None, - adapter_names: Optional[List[List[str]]] = None, - optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = (None, None), - preprocess_logits_for_metrics: Callable[[torch.Tensor, torch.Tensor], torch.Tensor] = None, - ): - super().__init__( - model, - args, - data_collator, - train_dataset, - eval_dataset, - tokenizer=tokenizer, - model_init=model_init, - compute_metrics=compute_metrics, - callbacks=[AdapterTrainerCallback(self)] + callbacks if callbacks else [AdapterTrainerCallback(self)], - optimizers=optimizers, - preprocess_logits_for_metrics=preprocess_logits_for_metrics, - ) - - if adapter_names is not None: - self.model.set_active_adapters(adapter_names) - # Set the defaults for loading/ saving model & adapters - if isinstance(self.model, PreTrainedModel): - model_frozen = getattr(self.model.base_model, "model_frozen", False) - else: - model_frozen = False - if model_frozen and self.model.active_adapters: - # Check if training AdapterFusion - self.train_adapter_fusion = ( - isinstance(self.model.active_adapters, Fuse) - or isinstance(self.model.active_adapters, AdapterCompositionBlock) - and any([isinstance(child, Fuse) for child in self.model.active_adapters.children]) - ) - if self.model.active_adapters is None: - raise ValueError( - "Expected a model with an active adapter setup." - "If you want to fully finetune the model use the Trainer class." - ) - if (self.label_names is None or len(self.label_names) < 1) and self.model.active_head is not None: - all_label_names = set() - for head in self.model._active_heads: - all_label_names |= set(self.model.heads[head].get_label_names()) - self.label_names = list(all_label_names) - - def create_optimizer(self): - """ - Setup the optimizer. - - We provide a reasonable default that works well. If you want to use something else, you can pass a tuple in the - Trainer's init through `optimizers`, or subclass and override this method in a subclass. - """ - opt_model = self.model_wrapped if is_sagemaker_mp_enabled() else self.model - - if self.optimizer is None: - decay_parameters = self.get_decay_parameter_names(opt_model) - if hasattr(self.model, "config") and hasattr(self.model.config, "adapters"): - match_str = r"adapter_fusion_layer\..*\.value" - decay_parameters = [name for name in decay_parameters if not re.match(match_str, name)] - optimizer_grouped_parameters = [ - { - "params": [ - p for n, p in opt_model.named_parameters() if (n in decay_parameters and p.requires_grad) - ], - "weight_decay": self.args.weight_decay, - }, - { - "params": [ - p for n, p in opt_model.named_parameters() if (n not in decay_parameters and p.requires_grad) - ], - "weight_decay": 0.0, - }, - ] - - optimizer_cls, optimizer_kwargs = Trainer.get_optimizer_cls_and_kwargs(self.args) - self.optimizer = optimizer_cls(optimizer_grouped_parameters, **optimizer_kwargs) - - if is_sagemaker_mp_enabled(): - self.optimizer = smp.DistributedOptimizer(self.optimizer) - - return self.optimizer - - def _save(self, output_dir: Optional[str] = None, state_dict=None): - # If we are executing this function, we are the process zero, so we don't check for that. - output_dir = output_dir if output_dir is not None else self.args.output_dir - os.makedirs(output_dir, exist_ok=True) - logger.info(f"Saving model checkpoint to {output_dir}") - # Save a trained model and configuration using `save_pretrained()`. - # They can then be reloaded using `from_pretrained()` - if not isinstance(self.model, PreTrainedModel): - if isinstance(unwrap_model(self.model), PreTrainedModel): - if state_dict is None: - state_dict = self.model.state_dict() - unwrap_model(self.model).save_pretrained(output_dir, state_dict=state_dict) - else: - logger.info("Trainer.model is not a `PreTrainedModel`, only saving its state dict.") - if state_dict is None: - state_dict = self.model.state_dict() - torch.save(state_dict, os.path.join(output_dir, WEIGHTS_NAME)) - else: - self.model.save_all_adapters(output_dir) - if self.train_adapter_fusion: - self.model.save_all_adapter_fusions(output_dir) - if hasattr(self.model, "heads"): - self.model.save_all_heads(output_dir) - if self.tokenizer is not None: - self.tokenizer.save_pretrained(output_dir) - - # Good practice: save your training arguments together with the trained model - torch.save(self.args, os.path.join(output_dir, "training_args.bin")) - - def _load_from_checkpoint(self, resume_from_checkpoint): - args = self.args - if os.path.isfile(os.path.join(resume_from_checkpoint, WEIGHTS_NAME)): - logger.info(f"Loading model from {resume_from_checkpoint}).") - - if os.path.isfile(os.path.join(resume_from_checkpoint, CONFIG_NAME)): - config = PretrainedConfig.from_json_file(os.path.join(resume_from_checkpoint, CONFIG_NAME)) - checkpoint_version = config.transformers_version - if checkpoint_version is not None and checkpoint_version != __version__: - logger.warn( - f"You are resuming training from a checkpoint trained with {checkpoint_version} of " - f"Transformers but your current version is {__version__}. This is not recommended and could " - "yield to errors or unwanted behaviors." - ) - - if args.deepspeed: - # will be resumed in deepspeed_init - pass - else: - adapter_loaded = False - if os.path.isdir(resume_from_checkpoint): - adapter_loaded = self._load_adapters(resume_from_checkpoint) - self._load_adapter_fusions(resume_from_checkpoint) - # Save all heads for a model with heads - if hasattr(self.model, "heads"): - self._load_heads(resume_from_checkpoint) - - if not adapter_loaded: - raise Exception("Can't find a valid checkpoint at {}".format(resume_from_checkpoint)) - - def _load_adapters(self, resume_from_checkpoint): - adapter_loaded = False - for file_name in os.listdir(resume_from_checkpoint): - if os.path.isdir(os.path.join(resume_from_checkpoint, file_name)): - if "," not in file_name and "adapter_config.json" in os.listdir( - os.path.join(resume_from_checkpoint, file_name) - ): - self.model.load_adapter(os.path.join(os.path.join(resume_from_checkpoint, file_name))) - adapter_loaded = True - return adapter_loaded - - def _load_adapter_fusions(self, resume_from_checkpoint): - for file_name in os.listdir(resume_from_checkpoint): - if os.path.isdir(os.path.join(resume_from_checkpoint, file_name)): - if "," in file_name: - self.model.load_adapter_fusion(os.path.join(resume_from_checkpoint, file_name)) - - def _load_heads(self, resume_from_checkpoint): - for file_name in os.listdir(resume_from_checkpoint): - if os.path.isdir(os.path.join(resume_from_checkpoint, file_name)): - if "," not in file_name and "head_config.json" in os.listdir( - os.path.join(resume_from_checkpoint, file_name) - ): - self.model.load_head(os.path.join(resume_from_checkpoint, file_name)) - - def _load_best_model(self): - model = self.model_wrapped if is_sagemaker_mp_enabled() else self.model - logger.info( - f"Loading best adapter(s) from {self.state.best_model_checkpoint} (score: {self.state.best_metric})." - ) - # attempt to re-load all adapters from checkpoint - for adapter in model.adapters_config.adapters: - adapter_dir = os.path.join(self.state.best_model_checkpoint, adapter) - if os.path.exists(adapter_dir): - model.load_adapter(adapter_dir) - if self.train_adapter_fusion: - logger.info( - f"Loading best adapter fusion(s) from {self.state.best_model_checkpoint} (score:" - f" {self.state.best_metric})." - ) - # attempt to re-load all adapter fusions from checkpoint - for fusion in model.adapters_config.fusions: - fusion_dir = os.path.join(self.state.best_model_checkpoint, fusion) - if os.path.exists(fusion_dir): - model.load_adapter_fusion(fusion_dir) - model.to(self.args.device) - - -class AdapterTrainerCallback(TrainerCallback): - def __init__(self, trainer): - super().__init__() - self.trainer = trainer - - def on_train_begin(self, args: TrainingArguments, state: TrainerState, control: TrainerControl, **kwargs): - model = kwargs.pop("model") - model_frozen = getattr(model.base_model, "model_frozen", False) - if not model_frozen: - raise ValueError( - "The pre-trained model weights are not frozen. For training adapters, please call the train_adapter()" - " method" - ) - - def on_step_end(self, args: TrainingArguments, state: TrainerState, control: TrainerControl, **kwargs): - # apply adapter fusion weight regularization on the value matrix - model = kwargs.pop("model") - if self.trainer.train_adapter_fusion: - fusion_reg_loss = model.base_model.get_fusion_regularization_loss() - if fusion_reg_loss is not None: - fusion_reg_loss.backward() - - -class Seq2SeqAdapterTrainer(AdapterTrainer, Seq2SeqTrainer): - pass diff --git a/adapters/src/adapters/training.py b/adapters/src/adapters/training.py deleted file mode 100644 index 83160113..00000000 --- a/adapters/src/adapters/training.py +++ /dev/null @@ -1,100 +0,0 @@ -from dataclasses import dataclass, field -from typing import Optional - -from .composition import Stack -from .configuration import AdapterConfig - - -@dataclass -class AdapterArguments: - """ - The subset of arguments related to adapter training. - - Args: - train_adapter (bool): Whether to train an adapter instead of the full model. - load_adapter (str): Pre-trained adapter module to be loaded from Hub. - adapter_config (str): Adapter configuration. Either a config string or a path to a file. - load_lang_adapter (str): Pre-trained language adapter module to be loaded from Hub. - lang_adapter_config (str): Language adapter configuration. Either an identifier or a path to a file. - """ - - train_adapter: bool = field(default=False, metadata={"help": "Train an adapter instead of the full model."}) - load_adapter: Optional[str] = field( - default="", metadata={"help": "Pre-trained adapter module to be loaded from Hub."} - ) - adapter_config: Optional[str] = field( - default="seq_bn", metadata={"help": "Adapter configuration. Either a config string or a path to a file."} - ) - load_lang_adapter: Optional[str] = field( - default=None, metadata={"help": "Pre-trained language adapter module to be loaded from Hub."} - ) - lang_adapter_config: Optional[str] = field( - default=None, metadata={"help": "Language adapter configuration. Either an identifier or a path to a file."} - ) - - -def setup_adapter_training( - model, - adapter_args: AdapterArguments, - adapter_name: str, - adapter_config_kwargs: Optional[dict] = None, - adapter_load_kwargs: Optional[dict] = None, -): - """Setup model for adapter training based on given adapter arguments. - - Args: - model (_type_): The model instance to be trained. - adapter_args (AdapterArguments): The adapter arguments used for configuration. - adapter_name (str): The name of the adapter to be added. - - Returns: - Tuple[str, str]: A tuple containing the names of the loaded adapters. - """ - if adapter_config_kwargs is None: - adapter_config_kwargs = {} - if adapter_load_kwargs is None: - adapter_load_kwargs = {} - # Setup adapters - if adapter_args.train_adapter: - # resolve the adapter config - adapter_config = AdapterConfig.load(adapter_args.adapter_config, **adapter_config_kwargs) - # load a pre-trained from Hub if specified - # note: this logic has changed in versions > 3.1.0: adapter is also loaded if it already exists - if adapter_args.load_adapter: - model.load_adapter( - adapter_args.load_adapter, - config=adapter_config, - load_as=adapter_name, - **adapter_load_kwargs, - ) - # otherwise, if adapter does not exist, add it - elif adapter_name not in model.adapters_config: - model.add_adapter(adapter_name, config=adapter_config) - # optionally load a pre-trained language adapter - if adapter_args.load_lang_adapter: - # resolve the language adapter config - lang_adapter_config = AdapterConfig.load(adapter_args.lang_adapter_config, **adapter_config_kwargs) - # load the language adapter from Hub - lang_adapter_name = model.load_adapter( - adapter_args.load_lang_adapter, - config=lang_adapter_config, - **adapter_load_kwargs, - ) - else: - lang_adapter_name = None - # Freeze all model weights except of those of this adapter - model.train_adapter([adapter_name]) - # Set the adapters to be used in every forward pass - if lang_adapter_name: - model.set_active_adapters(Stack(lang_adapter_name, adapter_name)) - else: - model.set_active_adapters(adapter_name) - - return adapter_name, lang_adapter_name - else: - if adapter_args.load_adapter or adapter_args.load_lang_adapter: - raise ValueError( - "Adapters can only be loaded in adapters training mode.Use --train_adapter to enable adapter training" - ) - - return None, None diff --git a/adapters/src/adapters/utils.py b/adapters/src/adapters/utils.py deleted file mode 100644 index 0e3b20ca..00000000 --- a/adapters/src/adapters/utils.py +++ /dev/null @@ -1,864 +0,0 @@ -import ast -import fnmatch -import hashlib -import inspect -import io -import json -import logging -import os -import re -import shutil -import tarfile -import tempfile -from collections.abc import Mapping -from contextlib import contextmanager -from dataclasses import dataclass -from enum import Enum -from functools import partial -from os.path import basename, isdir, isfile, join -from pathlib import Path -from typing import Callable, Dict, List, Optional, Tuple, Union -from urllib.parse import urlparse -from zipfile import ZipFile, is_zipfile - -import torch - -import requests -from filelock import FileLock -from huggingface_hub import HfApi, HfFolder, snapshot_download -from huggingface_hub.file_download import http_get, url_to_filename -from huggingface_hub.utils import ( - EntryNotFoundError, - RepositoryNotFoundError, - RevisionNotFoundError, - hf_raise_for_status, -) -from requests.exceptions import HTTPError -from transformers.utils import http_user_agent, is_remote_url -from transformers.utils.hub import torch_cache_home - -from . import __version__ -from .context import ForwardContext - - -logger = logging.getLogger(__name__) - -CONFIG_NAME = "adapter_config.json" -WEIGHTS_NAME = "pytorch_adapter.bin" -HEAD_CONFIG_NAME = "head_config.json" -HEAD_WEIGHTS_NAME = "pytorch_model_head.bin" -ADAPTERFUSION_CONFIG_NAME = "adapter_fusion_config.json" -ADAPTERFUSION_WEIGHTS_NAME = "pytorch_model_adapter_fusion.bin" -EMBEDDING_FILE = "embedding.pt" -TOKENIZER_PATH = "tokenizer" - -ADAPTER_HUB_URL = "https://raw.githubusercontent.com/Adapter-Hub/Hub/master/dist/v2/" -ADAPTER_HUB_INDEX_FILE = ADAPTER_HUB_URL + "index/{}.json" -ADAPTER_HUB_CONFIG_FILE = ADAPTER_HUB_URL + "architectures.json" -ADAPTER_HUB_ALL_FILE = ADAPTER_HUB_URL + "all.json" -ADAPTER_HUB_ADAPTER_ENTRY_JSON = ADAPTER_HUB_URL + "adapters/{}/{}.json" - -# the download cache -ADAPTER_CACHE = join(torch_cache_home, "adapters") - -# these keys are ignored when calculating the config hash -ADAPTER_CONFIG_HASH_IGNORE = [] - -# old: new -ACTIVATION_RENAME = { - "gelu": "gelu_new", - "gelu_orig": "gelu", -} -# HACK: To keep config hashs consistent with v2, remove default values of keys introduced in v3 from hash computation -ADAPTER_CONFIG_HASH_IGNORE_DEFAULT = { - "phm_layer": True, - "phm_dim": 4, - "factorized_phm_W": True, - "shared_W_phm": False, - "shared_phm_rule": True, - "factorized_phm_rule": False, - "phm_c_init": "normal", - "phm_init_range": 0.0001, - "learn_phm": True, - "hypercomplex_nonlinearity": "glorot-uniform", - "phm_rank": 1, - "phm_bias": True, - "init_weights": "bert", - "scaling": 1.0, -} -ADAPTER_CONFIG_STRING_PATTERN = re.compile(r"^(?P[^\[\]\|\n]+)(?:\[(?P.*)\])?$") - - -class AdapterType(str, Enum): - """Models all currently available model adapter types.""" - - text_task = "text_task" - text_lang = "text_lang" - - @classmethod - def has(cls, value): - return value in cls.__members__.values() - - def __repr__(self): - return self.value - - -@dataclass -class AdapterInfo: - """ - Holds information about an adapter publicly available on AdapterHub or huggingface.co. Returned by - :func:`list_adapters()`. - - Args: - source (str): The source repository of this adapter. Can be either "ah" (AdapterHub) or "hf" (huggingface.co). - adapter_id (str): The unique identifier of this adapter. - model_name (str, optional): The identifier of the model this adapter was trained for. - task (str, optional): The task this adapter was trained for. - subtask (str, optional): The subtask or dataset this adapter was trained on. - username (str, optional): The username of author(s) of this adapter. - adapter_config (dict, optional): The configuration dictionary of this adapter. - """ - - source: str - adapter_id: str - model_name: Optional[str] = None - task: Optional[str] = None - subtask: Optional[str] = None - username: Optional[str] = None - adapter_config: Optional[dict] = None - sha1_checksum: Optional[str] = None - - -def _minimize_dict(d): - if isinstance(d, Mapping): - return {k: _minimize_dict(v) for (k, v) in d.items() if v} - else: - return d - - -def get_adapter_config_hash(config, length=16): - """ - Calculates the hash of a given adapter configuration which is used to identify this configuration. - - Returns: - str: The resulting hash of the given config dict. - """ - minimized_config = _minimize_dict({k: v for (k, v) in config.items() if k not in ADAPTER_CONFIG_HASH_IGNORE}) - # ensure hash is kept consistent to previous versions - for name, default in ADAPTER_CONFIG_HASH_IGNORE_DEFAULT.items(): - if minimized_config.get(name, None) == default: - del minimized_config[name] - dict_str = json.dumps(minimized_config, sort_keys=True) - h = hashlib.sha1() - h.update(dict_str.encode(encoding="utf-8")) - return h.hexdigest()[:length] - - -def inherit_doc(cls): - for name, func in vars(cls).items(): - if isinstance(func, Callable) and not func.__doc__: - for parent in cls.__bases__: - parfunc = getattr(parent, name, None) - if parfunc and getattr(parfunc, "__doc__", None): - func.__doc__ = parfunc.__doc__ - break - return cls - - -def urljoin(*args): - return "/".join([s.strip("/") for s in args]) - - -def remote_file_exists(url): - r = requests.head(url) - return r.status_code == 200 - - -# Copied from last version of this method in HF codebase: -# https://github.com/huggingface/transformers/blob/9129fd0377e4d46cb2d0ea28dc1eb91a15f65b77/src/transformers/utils/hub.py#L460 -def get_from_cache( - url: str, - cache_dir=None, - force_download=False, - proxies=None, - etag_timeout=10, - resume_download=False, - user_agent: Union[Dict, str, None] = None, - use_auth_token: Union[bool, str, None] = None, - local_files_only=False, -) -> Optional[str]: - """ - Given a URL, look for the corresponding file in the local cache. If it's not there, download it. Then return the - path to the cached file. - - Return: - Local path (string) of file or if networking is off, last version of file cached on disk. - - Raises: - In case of non-recoverable file (non-existent or inaccessible url + no cache on disk). - """ - if cache_dir is None: - cache_dir = ADAPTER_CACHE - if isinstance(cache_dir, Path): - cache_dir = str(cache_dir) - - os.makedirs(cache_dir, exist_ok=True) - - headers = {"user-agent": http_user_agent(user_agent)} - if isinstance(use_auth_token, str): - headers["authorization"] = f"Bearer {use_auth_token}" - elif use_auth_token: - token = HfFolder.get_token() - if token is None: - raise EnvironmentError("You specified use_auth_token=True, but a huggingface token was not found.") - headers["authorization"] = f"Bearer {token}" - - url_to_download = url - etag = None - if not local_files_only: - try: - r = requests.head(url, headers=headers, allow_redirects=False, proxies=proxies, timeout=etag_timeout) - hf_raise_for_status(r) - etag = r.headers.get("X-Linked-Etag") or r.headers.get("ETag") - # We favor a custom header indicating the etag of the linked resource, and - # we fallback to the regular etag header. - # If we don't have any of those, raise an error. - if etag is None: - raise OSError( - "Distant resource does not have an ETag, we won't be able to reliably ensure reproducibility." - ) - # In case of a redirect, - # save an extra redirect on the request.get call, - # and ensure we download the exact atomic version even if it changed - # between the HEAD and the GET (unlikely, but hey). - if 300 <= r.status_code <= 399: - url_to_download = r.headers["Location"] - except ( - requests.exceptions.SSLError, - requests.exceptions.ProxyError, - RepositoryNotFoundError, - EntryNotFoundError, - RevisionNotFoundError, - ): - # Actually raise for those subclasses of ConnectionError - # Also raise the custom errors coming from a non existing repo/branch/file as they are caught later on. - raise - except (HTTPError, requests.exceptions.ConnectionError, requests.exceptions.Timeout): - # Otherwise, our Internet connection is down. - # etag is None - pass - - filename = url_to_filename(url, etag) - - # get cache path to put the file - cache_path = os.path.join(cache_dir, filename) - - # etag is None == we don't have a connection or we passed local_files_only. - # try to get the last downloaded one - if etag is None: - if os.path.exists(cache_path): - return cache_path - else: - matching_files = [ - file - for file in fnmatch.filter(os.listdir(cache_dir), filename.split(".")[0] + ".*") - if not file.endswith(".json") and not file.endswith(".lock") - ] - if len(matching_files) > 0: - return os.path.join(cache_dir, matching_files[-1]) - else: - # If files cannot be found and local_files_only=True, - # the models might've been found if local_files_only=False - # Notify the user about that - if local_files_only: - fname = url.split("/")[-1] - raise EntryNotFoundError( - f"Cannot find the requested file ({fname}) in the cached path and outgoing traffic has been" - " disabled. To enable model look-ups and downloads online, set 'local_files_only'" - " to False." - ) - else: - raise ValueError( - "Connection error, and we cannot find the requested files in the cached path." - " Please try again or make sure your Internet connection is on." - ) - - # From now on, etag is not None. - if os.path.exists(cache_path) and not force_download: - return cache_path - - # Prevent parallel downloads of the same file with a lock. - lock_path = cache_path + ".lock" - with FileLock(lock_path): - # If the download just completed while the lock was activated. - if os.path.exists(cache_path) and not force_download: - # Even if returning early like here, the lock will be released. - return cache_path - - if resume_download: - incomplete_path = cache_path + ".incomplete" - - @contextmanager - def _resumable_file_manager() -> "io.BufferedWriter": - with open(incomplete_path, "ab") as f: - yield f - - temp_file_manager = _resumable_file_manager - if os.path.exists(incomplete_path): - resume_size = os.stat(incomplete_path).st_size - else: - resume_size = 0 - else: - temp_file_manager = partial(tempfile.NamedTemporaryFile, mode="wb", dir=cache_dir, delete=False) - resume_size = 0 - - # Download to temporary file, then copy to cache dir once finished. - # Otherwise you get corrupt cache entries if the download gets interrupted. - with temp_file_manager() as temp_file: - logger.info(f"{url} not found in cache or force_download set to True, downloading to {temp_file.name}") - - http_get( - url_to_download, - temp_file, - proxies=proxies, - resume_size=resume_size, - headers=headers, - ) - - logger.info(f"storing {url} in cache at {cache_path}") - os.replace(temp_file.name, cache_path) - - # NamedTemporaryFile creates a file with hardwired 0600 perms (ignoring umask), so fixing it. - umask = os.umask(0o666) - os.umask(umask) - os.chmod(cache_path, 0o666 & ~umask) - - logger.info(f"creating metadata file for {cache_path}") - meta = {"url": url, "etag": etag} - meta_path = cache_path + ".json" - with open(meta_path, "w") as meta_file: - json.dump(meta, meta_file) - - return cache_path - - -def download_cached(url, checksum=None, checksum_algo="sha1", cache_dir=None, force_extract=False, **kwargs): - if isinstance(url, Path): - url = str(url) - - if is_remote_url(url): - output_path = get_from_cache(url, cache_dir=cache_dir, **kwargs) - else: - raise ValueError("Unable to parse '{}' as a URL".format(url)) - - if not output_path: - return None - - # if checksum is given, verify it - if checksum and checksum_algo: - h = hashlib.new(checksum_algo) - with open(output_path, "rb") as f: - h.update(f.read()) - calculated_checksum = h.hexdigest() - if calculated_checksum != checksum.lower(): - raise EnvironmentError("Failed to verify checksum of '{}'".format(output_path)) - - if not is_zipfile(output_path) and not tarfile.is_tarfile(output_path): - return output_path - - # Path where we extract compressed archives - # We avoid '.' in dir name and add "-extracted" at the end: "./model.zip" => "./model-zip-extracted/" - output_dir, output_file = os.path.split(output_path) - output_extract_dir_name = output_file.replace(".", "-") + "-extracted" - output_path_extracted = os.path.join(output_dir, output_extract_dir_name) - - if os.path.isdir(output_path_extracted) and os.listdir(output_path_extracted) and not force_extract: - return output_path_extracted - - # Prevent parallel extractions - lock_path = output_path + ".lock" - with FileLock(lock_path): - shutil.rmtree(output_path_extracted, ignore_errors=True) - os.makedirs(output_path_extracted) - if is_zipfile(output_path): - with ZipFile(output_path, "r") as zip_file: - # we want to extract all files into a flat folder structure (i.e. no subfolders) - for file in zip_file.namelist(): - # check if we have a valid file - if basename(file): - file_data = zip_file.read(file) - with open(join(output_path_extracted, basename(file)), "wb") as f: - f.write(file_data) - elif tarfile.is_tarfile(output_path): - tar_file = tarfile.open(output_path) - tar_file.extractall(output_path_extracted) - tar_file.close() - else: - raise EnvironmentError("Archive format of {} could not be identified".format(output_path)) - - return output_path_extracted - - -def parse_adapter_config_string(config_string: str) -> List[Tuple[str, dict]]: - """ - Parses an adapter configuration string into a list of tuples. Each tuple constists of an adapter config identifier - and dictionary. - """ - # First split by "|" into individual adapter configs - config_string_chunks = config_string.split("|") - # Now match each adapter config against the regex - adapter_configs = [] - for config_string_chunk in config_string_chunks: - match = re.match(ADAPTER_CONFIG_STRING_PATTERN, config_string_chunk.strip()) - if not match or not match.group("name"): - raise ValueError(f"Invalid adapter config string format: '{config_string_chunk}'.") - name = match.group("name") - if match.group("kvs"): - kvs = match.group("kvs") - # Replace "=" with ":" in key-value pairs for valid Python dict - kvs = re.sub(r"(\w+)=", r"'\1':", kvs) - else: - kvs = "" - # Now evaluate key-value pairs as Python dict - try: - config_kwargs = ast.literal_eval("{" + kvs + "}") - except Exception: - raise ValueError(f"Invalid adapter configguration '{kvs}' in '{name}'.") - adapter_configs.append((name, config_kwargs)) - - return adapter_configs - - -def resolve_adapter_config(config: Union[dict, str], local_map=None, try_loading_from_hub=True, **kwargs) -> dict: - """ - Resolves a given adapter configuration specifier to a full configuration dictionary. - - Args: - config (Union[dict, str]): The configuration to resolve. Can be either: - - - a dictionary: returned without further action - - an identifier string available in local_map - - the path to a file containing a full adapter configuration - - an identifier string available in Adapter-Hub - - Returns: - dict: The resolved adapter configuration dictionary. - """ - # already a dict, so we don't have to do anything - if isinstance(config, Mapping): - return config - # first, look in local map - if local_map and config in local_map: - return local_map[config] - # load from file system if it's a local file - if isfile(config): - with open(config, "r") as f: - loaded_config = json.load(f) - # search for nested config if the loaded dict has the form of a config saved with an adapter module - if "config" in loaded_config: - return loaded_config["config"] - else: - return loaded_config - # download hub index file - if try_loading_from_hub: - index_file = download_cached(ADAPTER_HUB_CONFIG_FILE, **kwargs) - if not index_file: - raise EnvironmentError("Unable to load adapter hub index file. The file might be temporarily unavailable.") - with open(index_file, "r") as f: - config_index = json.load(f) - # parse the config string - config_pairs = parse_adapter_config_string(config) - if len(config_pairs) > 0: - full_configs = [] - for name, config_kwargs in config_pairs: - # first, look in local map - if local_map and name in local_map: - config_obj = local_map[name] - full_configs.append(config_obj.replace(**config_kwargs)) - # now, try to find in hub index - elif try_loading_from_hub and name in config_index: - config_obj = config_index[name] - config_obj.update(**config_kwargs) - full_configs.append(config_obj) - else: - raise ValueError("Could not identify '{}' as a valid adapter configuration.".format(name)) - # Case 1: only one config, return it directly - if len(full_configs) == 1: - return full_configs[0] - # Case 2: multiple configs, return a config union - elif len(full_configs) > 1: - return {"architecture": "union", "configs": full_configs} - - raise ValueError("Could not identify '{}' as a valid adapter configuration.".format(config)) - - -def _split_identifier(identifier): - task, subtask, org_name = None, None, None - identifier = identifier.split("@") - if len(identifier) > 1: - org_name = identifier[1] - identifier = identifier[0].split("/") - if len(identifier) > 1: - subtask = identifier[1] - task = identifier[0] - return task, subtask, org_name - - -def _dict_extract(d, primary_key, secondary_key=None): - for k, v in d.items(): - if k == primary_key: - if secondary_key: - if secondary_key in v.keys(): - yield v[secondary_key] - else: - for k, v in v.items(): - yield v - elif secondary_key is None: - for k, v in v.items(): - if k == primary_key: - yield v - - -def find_in_index( - identifier: str, - model_name: str, - adapter_config: Optional[dict] = None, - strict: bool = False, - index_file: str = None, -) -> Optional[str]: - identifier = identifier.strip() - # identifiers of form "@/" are unique and can be retrieved directly - match = re.match(r"@(\S+)\/(\S+)", identifier) - if match: - return ADAPTER_HUB_ADAPTER_ENTRY_JSON.format(match.group(1), match.group(2)) - - if not index_file: - index_file = download_cached(ADAPTER_HUB_INDEX_FILE.format(model_name)) - if not index_file: - raise EnvironmentError("Unable to load adapter hub index file. The file might be temporarily unavailable.") - with open(index_file, "r") as f: - adapter_index = json.load(f) - # split into /@ - task, subtask, org = _split_identifier(identifier) - # find all entries for this task and subtask - entries = list(_dict_extract(adapter_index, task, subtask)) - if not entries: - # we found no matching entry - return None - elif len(entries) == 1: - index_entry = entries[0] - else: - # there are multiple possible options for this identifier - raise ValueError("Found multiple possible adapters matching '{}'.".format(identifier)) - # go on with searching a matching adapter_config hash in the task entry - if adapter_config: - config_hash = get_adapter_config_hash(adapter_config) - if config_hash in index_entry: - # now match the org if given - hub_entry = _get_matching_version(index_entry[config_hash], org) - if hub_entry: - logger.info("Found matching adapter at: {}".format(hub_entry)) - return hub_entry - # if we're here, no matching config is available or no config was given - if not adapter_config or not strict: - if "default" in index_entry: - logger.info("No exactly matching adapter config found for this specifier, falling back to default.") - return index_entry["default"] - # there's only one possible config and we allow matches with different configs - elif len(index_entry) == 1: - logger.info("Only one configuration available for this adapter, using default.") - config_entry = list(index_entry.values())[0] - return _get_matching_version(config_entry, org) - raise ValueError("No adapter '{}' found for the current model or configuration.".format(identifier)) - - -def _get_matching_version(config_entry, org): - if org: - return config_entry["versions"].get(org, None) - elif len(config_entry["versions"]) == 1: - return list(config_entry["versions"].values())[0] - elif "default" in config_entry: - return config_entry["default"] - else: - raise ValueError("Multiple adapters with this name are available for this config.") - - -def http_get_json(url): - # check if it's a relative url - if not urlparse(url).netloc: - url = urljoin(ADAPTER_HUB_URL, url) - response = requests.get(url) - if response.status_code == 200: - return response.json() - else: - raise EnvironmentError("Failed to get file {}".format(url)) - - -def get_checksum(file_entry: dict): - for algo in hashlib.algorithms_guaranteed: - if algo in file_entry: - return algo, file_entry[algo] - - -def pull_from_hub( - specifier: str, - model_name: str, - adapter_config: Optional[Union[dict, str]] = None, - version: str = None, - strict: bool = False, - **kwargs -) -> str: - """ - Downloads a pre-trained adapter module from Adapter-Hub - - Args: - specifier (str): A string specifying the adapter to be loaded. - model_name (str): The identifier of the pre-trained model for which to load an adapter. - adapter_config (Union[dict, str], optional): The configuration of the adapter to be loaded. - version (str, optional): The version of the adapter to be loaded. Defaults to None. - strict (bool, optional): - If set to True, only allow adapters exactly matching the given config to be loaded. Defaults to False. - - Returns: - str: The local path to which the adapter has been downloaded. - """ - if not model_name: - raise ValueError("Unable to resolve adapter without the name of a model. Please specify model_name.") - # resolve config if it's an identifier - if adapter_config: - adapter_config = resolve_adapter_config(adapter_config) - # search the correct entry in the index - hub_entry_url = find_in_index(specifier, model_name, adapter_config=adapter_config, strict=strict) - if not hub_entry_url: - raise EnvironmentError("No adapter with name '{}' was found in the adapter index.".format(specifier)) - hub_entry = http_get_json(hub_entry_url) - - # set version - if not version: - version = hub_entry["default_version"] - elif version not in hub_entry["files"]: - logger.warn("Version '{}' of adapter '{}' not found. Falling back to default.".format(version, specifier)) - version = hub_entry["default_version"] - file_entry = hub_entry["files"][version] - - # start downloading - logger.info("Resolved adapter files at {}.".format(file_entry["url"])) - checksum_algo, checksum = get_checksum(file_entry) - download_path = download_cached(file_entry["url"], checksum=checksum, checksum_algo=checksum_algo, **kwargs) - if not download_path: - raise EnvironmentError("Unable to load file from {}. The file might be unavailable.".format(file_entry["url"])) - return download_path - - -def pull_from_hf_model_hub(specifier: str, version: str = None, **kwargs) -> str: - download_path = snapshot_download( - specifier, - revision=version, - cache_dir=kwargs.pop("cache_dir", None), - library_name="adapters", - library_version=__version__, - ) - return download_path - - -def resolve_adapter_path( - adapter_name_or_path, - model_name: str = None, - adapter_config: Union[dict, str] = None, - version: str = None, - source: str = None, - **kwargs -) -> str: - """ - Resolves the path to a pre-trained adapter module. Note: If attempting to resolve an adapter from the Hub, - adapter_config and model_name must be present. - - Args: - adapter_name_or_path (str): Can be either: - - - the path to a folder in the file system containing the adapter configuration and weights - - an url pointing to a zip folder containing the adapter configuration and weights - - a specifier matching a pre-trained adapter uploaded to Adapter-Hub - model_name (str, optional): The identifier of the pre-trained model for which to load an adapter. - adapter_config (Union[dict, str], optional): The configuration of the adapter to be loaded. - version (str, optional): The version of the adapter to be loaded. Defaults to None. - source (str, optional): Identifier of the source(s) from where to get adapters. Can be either: - - - "ah": search on AdapterHub.ml. - - "hf": search on HuggingFace model hub (huggingface.co). - - None (default): search on all sources - - Returns: - str: The local path from where the adapter module can be loaded. - """ - # url of a folder containing pretrained adapters -> try to load from this url - if is_remote_url(adapter_name_or_path): - resolved_folder = download_cached(adapter_name_or_path, **kwargs) - if not resolved_folder: - raise EnvironmentError( - "Unable to load file from {}. The file might be unavailable.".format(resolved_folder) - ) - return resolved_folder - # path to a local folder saved using save() - elif isdir(adapter_name_or_path): - if isfile(join(adapter_name_or_path, WEIGHTS_NAME)) and isfile(join(adapter_name_or_path, CONFIG_NAME)): - return adapter_name_or_path - else: - raise EnvironmentError( - "No file {} or no file {} found in directory {}".format( - WEIGHTS_NAME, CONFIG_NAME, adapter_name_or_path - ) - ) - elif source == "ah": - return pull_from_hub( - adapter_name_or_path, model_name, adapter_config=adapter_config, version=version, **kwargs - ) - elif source == "hf": - return pull_from_hf_model_hub(adapter_name_or_path, version=version, **kwargs) - elif source is None: - try: - logger.info("Attempting to load adapter from source 'ah'...") - return pull_from_hub( - adapter_name_or_path, model_name, adapter_config=adapter_config, version=version, **kwargs - ) - except EnvironmentError as ex: - logger.info(ex) - logger.info("Attempting to load adapter from source 'hf'...") - try: - return pull_from_hf_model_hub(adapter_name_or_path, version=version, **kwargs) - except Exception as ex: - logger.info(ex) - raise EnvironmentError( - "Unable to load adapter {} from any source. Please check the name of the adapter or the source." - .format(adapter_name_or_path) - ) - else: - raise ValueError("Unable to identify {} as a valid module location.".format(adapter_name_or_path)) - - -def list_adapters(source: str = None, model_name: str = None) -> List[AdapterInfo]: - """ - Retrieves a list of all publicly available adapters on AdapterHub.ml or on huggingface.co. - - Args: - source (str, optional): Identifier of the source(s) from where to get adapters. Can be either: - - - "ah": search on AdapterHub.ml. - - "hf": search on HuggingFace model hub (huggingface.co). - - None (default): search on all sources - - model_name (str, optional): If specified, only returns adapters trained for the model with this identifier. - """ - adapters = [] - if source == "ah" or source is None: - try: - all_ah_adapters_file = download_cached(ADAPTER_HUB_ALL_FILE) - except requests.exceptions.HTTPError: - raise EnvironmentError( - "Unable to load list of adapters from AdapterHub.ml. The service might be temporarily unavailable." - ) - with open(all_ah_adapters_file, "r") as f: - all_ah_adapters_data = json.load(f) - adapters += [AdapterInfo(**info) for info in all_ah_adapters_data] - if source == "hf" or source is None: - if "fetch_config" in inspect.signature(HfApi.list_models).parameters: - kwargs = {"full": True, "fetch_config": True} - else: - logger.warning( - "Using old version of huggingface-hub package for fetching. Please upgrade to latest version for" - " accurate results." - ) - kwargs = {"full": True} - all_hf_adapters_data = HfApi().list_models(filter="adapters", **kwargs) - for model_info in all_hf_adapters_data: - adapter_info = AdapterInfo( - source="hf", - adapter_id=model_info.modelId, - model_name=model_info.config.get("adapters", {}).get("model_name") if model_info.config else None, - username=model_info.modelId.split("/")[0], - sha1_checksum=model_info.sha, - ) - adapters.append(adapter_info) - - if model_name is not None: - adapters = [adapter for adapter in adapters if adapter.model_name == model_name] - return adapters - - -def get_adapter_info(adapter_id: str, source: str = "ah") -> Optional[AdapterInfo]: - """ - Retrieves information about a specific adapter. - - Args: - adapter_id (str): The identifier of the adapter to retrieve. - source (str, optional): Identifier of the source(s) from where to get adapters. Can be either: - - - "ah": search on AdapterHub.ml. - - "hf": search on HuggingFace model hub (huggingface.co). - - Returns: - AdapterInfo: The adapter information or None if the adapter was not found. - """ - if source == "ah": - if adapter_id.startswith("@"): - adapter_id = adapter_id[1:] - try: - data = http_get_json(f"/adapters/{adapter_id}.json") - return AdapterInfo(**data["info"]) - except EnvironmentError: - return None - elif source == "hf": - try: - model_info = HfApi().model_info(adapter_id) - return AdapterInfo( - source="hf", - adapter_id=model_info.modelId, - model_name=model_info.config.get("adapters", {}).get("model_name") if model_info.config else None, - username=model_info.modelId.split("/")[0], - sha1_checksum=model_info.sha, - ) - except requests.exceptions.HTTPError: - return None - else: - raise ValueError("Please specify either 'ah' or 'hf' as source.") - - -def prefix_attention_mask(attention_mask, dim: int = 3, prefix_value: int = 0): - """ - Adds a prefix to an attention mask. The length of the prefix is determined by the `prefix_attention_mask_length` - attribute in the ForwardContext. - - Args: - attention_mask: - The attention mask to add the prefix to. - dim (int): - The dimension along which to concatenate the prefix_attention_mask. Defaults to 3. - prefix_value (int): - The value to use for the prefix_attention_mask. Defaults to 0, however some models, e.g. DistilBert, use - different values. BERT like models invert their extended_attention_mask, hence they use 0 as value for not - masked tokens. This inversion is usually done in the forward method of the model in 2 different ways: - 1) by calling self.invert_attention_mask, as BERT does 2) by doing the inversion manually, e.g. ALBERT - does: `extended_attention_mask = (1.0 - extended_attention_mask) * torch.finfo(self.dtype).min` - """ - - forward_context = ForwardContext.get_context() - - if ( - attention_mask is not None - and forward_context is not None - and getattr(forward_context, "prompt_tokens_length", None) is not None - ): - # Create a tensor of ones with the desired shape - ones_shape = list(attention_mask.shape) - ones_shape[dim] = forward_context.prompt_tokens_length - - prefix_attention_mask = torch.full( - ones_shape, - prefix_value, - dtype=attention_mask.dtype, - ).to(attention_mask.device) - - # Concatenate the prefix_attention_mask along the specified dimension - attention_mask = torch.cat((prefix_attention_mask, attention_mask), dim=dim) - - return attention_mask diff --git a/adapters/src/adapters/wrappers/__init__.py b/adapters/src/adapters/wrappers/__init__.py deleted file mode 100644 index 6ea65a3d..00000000 --- a/adapters/src/adapters/wrappers/__init__.py +++ /dev/null @@ -1,38 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import TYPE_CHECKING - -from transformers.utils import _LazyModule - - -_import_structure = {"configuration": ["init_adapters_config"], "model": ["init", "load_model"]} - - -if TYPE_CHECKING: - from .configuration import init_adapters_config - from .model import init, load_model - -else: - import sys - - sys.modules[__name__] = _LazyModule( - __name__, - globals()["__file__"], - _import_structure, - ) diff --git a/adapters/src/adapters/wrappers/configuration.py b/adapters/src/adapters/wrappers/configuration.py deleted file mode 100644 index c49f3b8b..00000000 --- a/adapters/src/adapters/wrappers/configuration.py +++ /dev/null @@ -1,110 +0,0 @@ -import copy -from typing import Optional - -from transformers import PreTrainedModel -from transformers.configuration_utils import PretrainedConfig - -from ..configuration import ModelAdaptersConfig - - -CONFIG_CLASS_KEYS_MAPPING = { - "albert": { - "classifier_dropout": "classifier_dropout_prob", - }, - "bart": { - "num_attention_heads": "encoder_attention_heads", - "hidden_size": "d_model", - "hidden_dropout_prob": "dropout", - "attention_probs_dropout_prob": "attention_dropout", - }, - "beit": {}, - "bert": {}, - "clip_vision_model": { - "hidden_dropout_prob": "dropout", - "attention_probs_dropout_prob": "attention_dropout", - }, - "clip_text_model": { - "hidden_dropout_prob": "dropout", - "attention_probs_dropout_prob": "attention_dropout", - }, - "distilbert": { - "hidden_dropout_prob": "dropout", - "attention_probs_dropout_prob": "attention_dropout", - "classifier_dropout": "seq_classif_dropout", - }, - "gpt2": { - "hidden_dropout_prob": "resid_pdrop", - "attention_probs_dropout_prob": "attn_pdrop", - }, - "gptj": { - "hidden_dropout_prob": "resid_pdrop", - "attention_probs_dropout_prob": "attn_pdrop", - }, - "mbart": { - "num_attention_heads": "encoder_attention_heads", - "hidden_size": "d_model", - "hidden_dropout_prob": "dropout", - "attention_probs_dropout_prob": "attention_dropout", - }, - "roberta": {}, - "t5": { - "hidden_size": "d_model", - "num_attention_heads": "num_heads", - "num_hidden_layers": "num_layers", - "hidden_dropout_prob": "dropout_rate", - "attention_probs_dropout_prob": "dropout_rate", - }, - "vit": {}, - "xlm_roberta": {}, -} -SUBMODEL_NAMES = {"clip": ["vision_config", "text_config"], "encoder-decoder": ["encoder", "decoder"]} - - -def init_adapters_config( - model: PreTrainedModel, model_config: PretrainedConfig, adapters_config: Optional[ModelAdaptersConfig] = None -): - """Initializes the adapters config object of the model to enable adapter support. Also make required changes to the - model's config. - - Args: - model (PreTrainedModel): The model for which to add the adapters config. - model_config (PretrainedConfig): The model's config. - adapters_config (ModelAdaptersConfig): The adapters config to be added. - """ - # Make sure config is wrapped - model.config = model_config - wrap_config(model.config) - - # Init ModelAdaptersConfig - if adapters_config is not None: - model.adapters_config = adapters_config - elif not hasattr(model_config, "adapters"): - model.adapters_config = ModelAdaptersConfig() - elif model_config.adapters is not None and not isinstance(model_config.adapters, ModelAdaptersConfig): - model.adapters_config = ModelAdaptersConfig(**model_config.adapters) - - # Convert AdapterFusions from old format for backwards compatibility - fusion_models = getattr(model_config, "adapter_fusion_models", []) - fusion_config = getattr(model_config, "adapter_fusion", None) - for fusion_adapter_names in fusion_models: - model.adapters_config.add_fusion(fusion_adapter_names, config=fusion_config) - - -def wrap_config(config: PretrainedConfig): - """ - Makes required changes to a model config class to allow usage with adapters. - - Args: - config (PretrainedConfig): The config to be wrapped. - - Returns: - PretrainedConfig: The same config object, with modifications applied. - """ - - # Make sure each class has its own attribute_map - type(config).attribute_map = copy.deepcopy(type(config).attribute_map) - # Ensure missing keys are in class - if config.model_type in CONFIG_CLASS_KEYS_MAPPING: - for key, value in CONFIG_CLASS_KEYS_MAPPING[config.model_type].items(): - if key not in config.attribute_map: - config.attribute_map[key] = value diff --git a/adapters/src/adapters/wrappers/model.py b/adapters/src/adapters/wrappers/model.py deleted file mode 100644 index 23998a81..00000000 --- a/adapters/src/adapters/wrappers/model.py +++ /dev/null @@ -1,130 +0,0 @@ -import importlib -import os -from typing import Any, Optional, Type, Union - -from torch import nn - -from transformers import PreTrainedModel -from transformers.models.auto.auto_factory import getattribute_from_module -from transformers.models.auto.configuration_auto import model_type_to_module_name - -from ..configuration import ModelAdaptersConfig -from ..model_mixin import ( - EmbeddingAdaptersWrapperMixin, - ModelAdaptersMixin, - ModelUsingSubmodelsAdaptersMixin, - ModelWithHeadsAdaptersMixin, -) -from ..models import MODEL_MIXIN_MAPPING -from .configuration import init_adapters_config - - -SPECIAL_MODEL_TYPE_TO_MODULE_NAME = { - "clip_vision_model": "clip", - "clip_text_model": "clip", -} - - -def get_module_name(model_type: str) -> str: - if model_type in SPECIAL_MODEL_TYPE_TO_MODULE_NAME: - return SPECIAL_MODEL_TYPE_TO_MODULE_NAME[model_type] - return model_type_to_module_name(model_type) - - -def replace_with_adapter_class(module: nn.Module, modules_with_adapters) -> None: - # Check if module is a base model class - if module.__class__.__name__ in MODEL_MIXIN_MAPPING: - # Create new wrapper model class - model_class = type( - module.__class__.__name__, (MODEL_MIXIN_MAPPING[module.__class__.__name__], module.__class__), {} - ) - module.__class__ = model_class - elif module.__class__.__module__.startswith("transformers.models"): - try: - module_class = getattribute_from_module(modules_with_adapters, module.__class__.__name__ + "WithAdapters") - module.__class__ = module_class - except ValueError: - # Silently fail and keep original module class - pass - - -def init(model: PreTrainedModel, adapters_config: Optional[ModelAdaptersConfig] = None) -> None: - if isinstance(model, ModelAdaptersMixin): - return model - - # First, replace original module classes with their adapters counterparts - model_name = get_module_name(model.config.model_type) - modules_with_adapters = importlib.import_module(f".{model_name}.modeling_{model_name}", "adapters.models") - submodules = list(model.modules()) - - # Replace the base model class - replace_with_adapter_class(submodules.pop(0), modules_with_adapters) - - # Check if the base model class derives from ModelUsingSubmodelsAdaptersMixin - if isinstance(model, ModelUsingSubmodelsAdaptersMixin): - # Before initializing the submodels, make sure that adapters_config is set for the whole model. - # Otherwise, it would not be shared between the submodels. - init_adapters_config(model, model.config, adapters_config) - adapters_config = model.adapters_config - model.init_submodels() - submodules = [] - - # Change the class of all child modules to their adapters class - for module in submodules: - replace_with_adapter_class(module, modules_with_adapters) - - # Next, check if model class itself is not replaced and has an adapter-supporting base class - if not isinstance(model, ModelAdaptersMixin): - if hasattr(model, "base_model_prefix") and hasattr(model, model.base_model_prefix): - base_model = getattr(model, model.base_model_prefix) - if isinstance(base_model, ModelAdaptersMixin): - # Create new wrapper model class - model_class_name = model.__class__.__name__ - model_class = type( - model_class_name, - (EmbeddingAdaptersWrapperMixin, ModelWithHeadsAdaptersMixin, model.__class__), - {}, - ) - model.__class__ = model_class - - # Finally, initialize adapters - model.init_adapters(model.config, adapters_config) - - -def load_model( - model_name_or_path: Optional[Union[str, os.PathLike]], - model_class: Type[PreTrainedModel], - *model_args: Any, - **kwargs: Any -) -> PreTrainedModel: - """ - Loads a pretrained model with adapters from the given path or url. - - Parameters: - model_name_or_path (`str` or `os.PathLike`, *optional*): - Parameter identical to PreTrainedModel.from_pretrained - model_class (`PreTrainedModel` or `AutoModel`): - The model class to load (e.g. EncoderDecoderModel and EncoderDecoderAdapterModel both work) - model_args (sequence of positional arguments, *optional*): - All remaining positional arguments will be passed to the underlying model's `__init__` method. - kwargs (remaining dictionary of keyword arguments, *optional*): - Can be used to update the configuration object (after it being loaded) and initiate the model (e.g., - `output_attentions=True`). - Returns: - `PreTrainedModel`: The model with adapters loaded from the given path or url. - """ - - old_init = model_class.__init__ - - def new_init(self, config, *args, **kwargs): - old_init(self, config, *args, **kwargs) - init(self) - - # wrap model after it is initialized but before the weights are loaded - model_class.__init__ = new_init - model = model_class.from_pretrained(model_name_or_path, *model_args, **kwargs) - - # restore original __init__ function for when other models of the same type are created - model_class.__init__ = old_init - - return model diff --git a/adapters/tests/__init__.py b/adapters/tests/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/adapters/tests/composition/test_adapter_composition.py b/adapters/tests/composition/test_adapter_composition.py deleted file mode 100644 index 3d0d4741..00000000 --- a/adapters/tests/composition/test_adapter_composition.py +++ /dev/null @@ -1,250 +0,0 @@ -import unittest - -import torch - -import adapters -from adapters import IA3Config, LoRAConfig, PrefixTuningConfig, SeqBnConfig -from adapters.composition import Average, BatchSplit, Fuse, Parallel, Split, Stack, parse_composition -from tests.test_adapter import ids_tensor -from transformers import BertConfig, BertForSequenceClassification -from transformers.testing_utils import require_torch, torch_device - - -class AdapterCompositionParsingTest(unittest.TestCase): - def test_parse_lists(self): - self.assertEqual(Stack("a"), parse_composition("a")) - self.assertEqual(Stack("a", "b", "c"), parse_composition(["a", "b", "c"])) - self.assertEqual(Stack("a", Fuse("b", "c")), parse_composition(["a", ["b", "c"]])) - - def test_to_deep(self): - self.assertRaises(ValueError, lambda: parse_composition(Stack("a", Fuse("b", Stack(Fuse("c", "d"), "e"))))) - - def test_invalid_nesting_fusion(self): - self.assertRaises(ValueError, lambda: parse_composition(Fuse(Fuse("a", "b"), "c"))) - self.assertRaises(ValueError, lambda: parse_composition(Fuse(Split("a", "b", splits=128), "c"))) - - def test_invalid_nesting_split(self): - self.assertRaises(ValueError, lambda: parse_composition(Split("a", Fuse("b", "c"), splits=128))) - - -@require_torch -class AdapterCompositionTest(unittest.TestCase): - unsupported_blocks = [] - - def get_adapter_config(self): - return SeqBnConfig() - - def build_model(self): - model = BertForSequenceClassification( - BertConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - ) - adapters.init(model) - adapter_config = self.get_adapter_config() - model.add_adapter("a", config=adapter_config) - model.add_adapter("b", config=adapter_config) - model.add_adapter("c", config=adapter_config) - model.add_adapter("d", config=adapter_config) - model.to(torch_device) - model.train() - - return model - - def training_pass(self, model): - inputs = {} - inputs["input_ids"] = ids_tensor((1, 128), 1000).to(torch_device) - inputs["labels"] = torch.ones(1, dtype=torch.long).to(torch_device) - loss = model(**inputs).loss - loss.backward() - - def batched_training_pass(self, model): - inputs = { - "input_ids": ids_tensor((4, 128), 1000).to(torch_device), - "labels": torch.ones(4, dtype=torch.long).to(torch_device), - } - loss = model(**inputs).loss - loss.backward() - - def test_simple_stack(self): - if Stack in self.unsupported_blocks: - self.skipTest("Stack not supported by adapter config.") - - model = self.build_model() - model.set_active_adapters(Stack("a", "b", "c", "d")) - self.training_pass(model) - - def test_simple_split(self): - if Split in self.unsupported_blocks: - self.skipTest("Split not supported by adapter config.") - - model = self.build_model() - # pass over split setup - model.set_active_adapters(Split("a", "b", splits=64)) - - self.training_pass(model) - - def test_stacked_split(self): - if Stack in self.unsupported_blocks or Split in self.unsupported_blocks: - self.skipTest("Stack or Split not supported by adapter config.") - - model = self.build_model() - # split into two stacks - model.set_active_adapters(Split(Stack("a", "b"), Stack("c", "d"), splits=64)) - - self.training_pass(model) - - def test_stacked_fusion(self): - if Stack in self.unsupported_blocks or Fuse in self.unsupported_blocks: - self.skipTest("Stack or Fuse not supported by adapter config.") - - model = self.build_model() - model.add_adapter_fusion(Fuse("b", "d")) - model.to(torch_device) - - # fuse two stacks - model.set_active_adapters(Fuse(Stack("a", "b"), Stack("c", "d"))) - - self.training_pass(model) - - def test_mixed_stack(self): - if Stack in self.unsupported_blocks or Fuse in self.unsupported_blocks: - self.skipTest("Stack or Fuse not supported by adapter config.") - - model = self.build_model() - model.add_adapter_fusion(Fuse("a", "b")) - model.to(torch_device) - - model.set_active_adapters(Stack("a", Split("c", "d", splits=64), Fuse("a", "b"))) - - self.training_pass(model) - - def test_nested_split(self): - if Split in self.unsupported_blocks: - self.skipTest("Split not supported by adapter config.") - - model = self.build_model() - # split into two stacks - model.set_active_adapters(Split(Split("a", "b", splits=32), "c", splits=64)) - - self.training_pass(model) - - def test_parallel(self): - if Parallel in self.unsupported_blocks: - self.skipTest("Parallel not supported by adapter config.") - - model = self.build_model() - model.set_active_adapters(Parallel("a", "b", "c", "d")) - - inputs = {} - inputs["input_ids"] = ids_tensor((2, 10), 1000) - logits = model(**inputs).logits - self.assertEqual(logits.shape, (8, 2)) - - def test_nested_parallel(self): - if Parallel in self.unsupported_blocks or Stack in self.unsupported_blocks: - self.skipTest("Parallel or Stack not supported by adapter config.") - - model = self.build_model() - model.set_active_adapters(Stack("a", Parallel(Stack("b", "c"), "d"))) - - inputs = {} - inputs["input_ids"] = ids_tensor((1, 10), 1000) - logits = model(**inputs).logits - self.assertEqual(logits.shape, (2, 2)) - - def test_batch_split(self): - if BatchSplit in self.unsupported_blocks: - self.skipTest("BatchSplit not supported by adapter config.") - - model = self.build_model() - model.set_active_adapters(BatchSplit("a", "b", "c", batch_sizes=[1, 1, 2])) - self.batched_training_pass(model) - - def test_batch_split_int(self): - if BatchSplit in self.unsupported_blocks: - self.skipTest("BatchSplit not supported by adapter config.") - - model = self.build_model() - model.set_active_adapters(BatchSplit("a", "b", batch_sizes=2)) - self.batched_training_pass(model) - - def test_nested_batch_split_1(self): - if BatchSplit in self.unsupported_blocks or Stack in self.unsupported_blocks: - self.skipTest("BatchSplit or Stack not supported by adapter config.") - - model = self.build_model() - model.set_active_adapters(Stack("a", BatchSplit("b", "c", batch_sizes=[2, 2]))) - self.batched_training_pass(model) - - def test_nested_batch_split_2(self): - if BatchSplit in self.unsupported_blocks or Stack in self.unsupported_blocks: - self.skipTest("BatchSplit or Stack not supported by adapter config.") - - model = self.build_model() - model.set_active_adapters(BatchSplit(Stack("a", "b"), "c", batch_sizes=[2, 2])) - self.batched_training_pass(model) - - def test_batch_split_invalid(self): - if BatchSplit in self.unsupported_blocks: - self.skipTest("BatchSplit not supported by adapter config.") - - model = self.build_model() - model.set_active_adapters(BatchSplit("a", "b", batch_sizes=[3, 4])) - with self.assertRaises(IndexError): - self.batched_training_pass(model) - - def test_batch_split_equivalent(self): - if BatchSplit in self.unsupported_blocks: - self.skipTest("BatchSplit not supported by adapter config.") - - model = self.build_model() - model.set_active_adapters("a") - model.eval() - input_ids = ids_tensor((2, 128), 1000) - output_a = model(input_ids[:1]) - - model.set_active_adapters("b") - output_b = model(input_ids[1:2]) - - model.set_active_adapters(BatchSplit("a", "b", batch_sizes=[1, 1])) - output = model(input_ids) - - self.assertTrue(torch.allclose(output_a[0], output[0][0], atol=1e-6)) - self.assertTrue(torch.allclose(output_b[0], output[0][1], atol=1e-6)) - - def test_average(self): - if Average in self.unsupported_blocks: - self.skipTest("Average not supported by adapter config.") - - model = self.build_model() - model.set_active_adapters(Average("a", "b", "c", "d")) - - inputs = {} - inputs["input_ids"] = ids_tensor((2, 128), 1000) - logits = model(**inputs).logits - self.assertEqual(logits.shape, (2, 2)) - - -class PrefixTuningCompositionTest(AdapterCompositionTest): - unsupported_blocks = [Split, Fuse, Average] - - def get_adapter_config(self): - return PrefixTuningConfig() - - -class LoRACompositionTest(AdapterCompositionTest): - unsupported_blocks = [Split, Fuse] - - def get_adapter_config(self): - return LoRAConfig(init_weights="bert") - - -class IA3CompositionTest(AdapterCompositionTest): - unsupported_blocks = [Split, Fuse] - - def get_adapter_config(self): - return IA3Config() diff --git a/adapters/tests/composition/test_parallel.py b/adapters/tests/composition/test_parallel.py deleted file mode 100644 index 538dd79c..00000000 --- a/adapters/tests/composition/test_parallel.py +++ /dev/null @@ -1,317 +0,0 @@ -import copy -import random - -import torch - -from adapters import ADAPTER_MODEL_MAPPING, AutoAdapterModel, PrefixTuningConfig, SeqBnConfig, T5AdapterModel -from adapters.composition import BatchSplit, Parallel -from adapters.models.bert_generation.adapter_model import BertGenerationAdapterModel -from transformers import MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING, Trainer, TrainingArguments -from transformers.testing_utils import require_torch, torch_device - - -def filter_parameters(model, filter_string): - return {k: v for (k, v) in model.named_parameters() if filter_string in k} - - -@require_torch -class ParallelAdapterInferenceTestMixin: - def test_parallel_inference_with_heads(self): - model = AutoAdapterModel.from_config(self.config()) - - model.add_adapter("a") - model.add_adapter("b") - self.add_head(model, "a", num_labels=2) - self.add_head(model, "b", num_labels=3) - model.eval() - model.to(torch_device) - - inputs = self.get_input_samples(config=model.config) - inputs["attention_mask"] = torch.randint(0, 2, size=(3, 64), device=torch_device) - - # for reference, pass through single adapters - model.active_adapters = "a" - model.active_head = "a" - outputs_a = model(**inputs) - model.active_adapters = "b" - model.active_head = "b" - outputs_b = model(**inputs) - - model.active_adapters = Parallel("a", "b") - # active_adapters should set parallel heads too - self.assertEqual(model.active_head, ["a", "b"]) - outputs = model(**inputs) - - self.assertEqual(len(outputs), 2) - if self.config_class in MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING: - self.assertEqual(outputs[0][0].shape, (3, 2)) - self.assertEqual(outputs[1][0].shape, (3, 3)) - self.assertTrue(torch.allclose(outputs[0][0], outputs_a[0], atol=1e-5)) - self.assertTrue(torch.allclose(outputs[1][0], outputs_b[0], atol=1e-5)) - - def test_parallel_inference_with_wrong_number_of_heads(self): - model = AutoAdapterModel.from_config(self.config()) - model.eval() - - model.add_adapter("a") - model.add_adapter("b") - self.add_head(model, "a", num_labels=2) - model.to(torch_device) - - inputs = self.get_input_samples(config=model.config) - - model.active_adapters = Parallel("a", "b") - model.active_head = ["a"] - with self.assertRaises(ValueError): - model(**inputs) - - model.active_head = "a" - with self.assertRaises(ValueError): - model(**inputs) - - def test_batch_split_with_heads(self): - model = AutoAdapterModel.from_config(self.config()) - model.add_adapter("a") - model.add_adapter("b") - self.add_head(model, "a", num_labels=2) - self.add_head(model, "b", num_labels=3) - model.eval() - model.to(torch_device) - - inputs = self.get_input_samples(config=model.config) - if isinstance(model, T5AdapterModel): - inputs["decoder_input_ids"] = inputs["input_ids"] - - # for reference, pass through single adapters - model.active_adapters = "a" - model.active_head = "a" - outputs_a = model(**{k: v[:1] for k, v in inputs.items()}) - model.active_adapters = "b" - model.active_head = "b" - outputs_b = model(**{k: v[1:] for k, v in inputs.items()}) - - model.set_active_adapters(BatchSplit("a", "b", batch_sizes=[1, 2])) - output = model(**inputs) - - self.assertEqual(2, len(output)) - self.assertTrue( - torch.allclose( - output[0]["logits"], - outputs_a["logits"], - atol=1e-05, - ) - ) - self.assertTrue( - torch.allclose( - output[1]["logits"], - outputs_b["logits"], - atol=1e-05, - ) - ) - - def test_parallel_generate(self): - if self.config_class not in ADAPTER_MODEL_MAPPING or ( - "seq2seq_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types - and "causal_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types - ): - self.skipTest("No seq2seq or causal language model head") - - model1 = AutoAdapterModel.from_config(self.config()) - model1.add_adapter("adapter1") - model1.add_adapter("adapter2") - if "seq2seq_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - model1.add_seq2seq_lm_head("adapter1") - model1.add_seq2seq_lm_head("adapter2") - else: - model1.add_causal_lm_head("adapter1") - model1.add_causal_lm_head("adapter2") - model1.set_active_adapters(Parallel("adapter1", "adapter2")) - model1.to(torch_device) - - seq_output_length = 32 - - # Finally, also check if generation works properly - input_ids = self.get_input_samples((1, 4), config=model1.config)["input_ids"] - input_ids = input_ids.to(torch_device) - generated = model1.generate(input_ids, max_length=seq_output_length) - self.assertLessEqual(generated.shape, (2, seq_output_length)) - - -class ParallelTrainingMixin: - def create_twin_adapters(self, model, name, adapter_config): - # create adapter - adapter1, adapter2 = name + "_1", name + "_2" - model.add_adapter(adapter1, config=adapter_config) - self.add_head(model, adapter1) - # create a twin initialized with the same random weights - model.add_adapter(adapter2, config=adapter_config) - self.add_head(model, adapter2) - - state_dict = model.state_dict() - for k, v in state_dict.items(): - if adapter1 in k: - state_dict[k.replace(adapter1, adapter2)] = v - model.load_state_dict(state_dict) - - return adapter1, adapter2 - - def train_model(self, model, dataset): - # trains model in eval mode for 2 epochs - random.seed(42) - torch.manual_seed(42) - # Depending on the used optimizer the adapters are not exactly the same - model.to(torch_device) - optimizer = torch.optim.SGD(model.parameters(), lr=0.1) - for epoch in range(2): - for data_input in dataset: - for key, value in data_input.items(): - data_input[key] = value.to(torch_device) - - optimizer.zero_grad() - output = model(**data_input) - loss = output["loss"] - loss.backward() - optimizer.step() - return model - - def run_parallel_training_test(self, adapter_config, filter_key): - model = AutoAdapterModel.from_config(self.config()) - - model.add_adapter("mrpc1", config=adapter_config) - model.add_adapter("mrpc2", config=adapter_config) - self.add_head(model, "mrpc1") - self.add_head(model, "mrpc2") - model.active_adapters = Parallel("mrpc1", "mrpc2") - model.train_adapter(Parallel("mrpc1", "mrpc2")) - # model.eval() - - # all weights of the adapter should be activated - for k, v in filter_parameters(model, filter_key.format("mrpc1")).items(): - self.assertTrue(v.requires_grad, k) - # all weights of the adapter not used for training should be frozen - for k, v in filter_parameters(model, filter_key.format("mrpc1")).items(): - self.assertTrue(v.requires_grad, k) - # weights of the model should be frozen (check on some examples) - for k, v in filter_parameters(model, "encoder.layer.0.attention").items(): - if filter_key.format("mrpc1") not in k and filter_key.format("mrpc2") not in k: - self.assertFalse(v.requires_grad, k) - - state_dict_pre = copy.deepcopy(model.state_dict()) - - train_dataset = self.dataset() - training_args = TrainingArguments( - output_dir="./examples", - do_train=True, - learning_rate=1.0, - max_steps=20, - no_cuda=True, - remove_unused_columns=False, - ) - - # evaluate - trainer = Trainer( - model=model, - args=training_args, - train_dataset=train_dataset, - ) - trainer.train() - - # check that the weights of the adapters have changed - self.assertTrue( - any([not torch.equal(v, state_dict_pre[k]) for k, v in model.state_dict().items() if "mrpc" in k]) - ) - self.assertTrue( - all(torch.equal(v, state_dict_pre[k]) for k, v in model.state_dict().items() if "mrpc" not in k) - ) - - def run_parallel_training_equivalent_to_single(self, adapter_config): - model = AutoAdapterModel.from_config(self.config()) - model.eval() - - a1, a2 = self.create_twin_adapters(model, "a", adapter_config) - b1, b2 = self.create_twin_adapters(model, "b", adapter_config) - - dataset = [] - for i in range(3): - input_data = self.get_input_samples(config=model.config) - if isinstance(model, BertGenerationAdapterModel): - input_data["labels"] = torch.randint(0, 2, (3, 64)) - else: - input_data["labels"] = torch.randint(0, 2, (3, 1)) - dataset.append(input_data) - - for adapter in [a1, b1]: - model.active_head = adapter - model.set_active_adapters(adapter) - model.train_adapter(adapter) - model.eval() - - model = self.train_model(model, dataset) - - model.set_active_adapters(Parallel(a2, b2)) - model.train_adapter((Parallel(a2, b2))) - model.eval() - - model = self.train_model(model, dataset) - - state_dict = model.state_dict() - for k, v in state_dict.items(): - if a1 in k: - self.assertTrue( - torch.allclose(v, state_dict[k.replace(a1, a2)], atol=1e-5), - torch.max(torch.sub(v, state_dict[k.replace(a1, a2)])), - ) - if b1 in k: - self.assertTrue(torch.allclose(v, state_dict[k.replace(b1, b2)], atol=1e-5)) - - def test_parallel_training_bottleneck(self): - self.run_parallel_training_test(SeqBnConfig(), "adapters.{}") - - def test_parallel_training_prefix_tuning(self): - self.run_parallel_training_test(PrefixTuningConfig(), "prefix_tunings.{}") - - def test_parallel_training_equivalent_to_single_bottleneck(self): - self.run_parallel_training_equivalent_to_single(SeqBnConfig()) - - def test_parallel_training_equivalent_to_single_prefix_tuning(self): - self.run_parallel_training_equivalent_to_single(PrefixTuningConfig()) - - def test_parallel_training_single_forward_pass(self): - model = AutoAdapterModel.from_config(self.config()) - model.eval() - - a1, a2 = self.create_twin_adapters(model, "a", SeqBnConfig()) - b1, b2 = self.create_twin_adapters(model, "b", SeqBnConfig()) - - state_dict = model.state_dict() - for k, v in state_dict.items(): - if a1 in k: - self.assertTrue(torch.equal(v, state_dict[k.replace(a1, a2)])) - if b1 in k: - self.assertTrue(torch.equal(v, state_dict[k.replace(b1, b2)])) - - input_data = self.get_input_samples(config=model.config) - if isinstance(model, BertGenerationAdapterModel): - input_data["labels"] = torch.randint(0, 2, (3, 64), device=torch_device) - else: - input_data["labels"] = torch.randint(0, 2, (3, 1), device=torch_device) - - outputs = [] - for adapter in [a1, b1]: - model.active_head = adapter - model.set_active_adapters(adapter) - model.train_adapter(adapter) - model.eval() - model.to(torch_device) - outputs.append(model(**input_data)) - - model.set_active_adapters(Parallel(a2, b2)) - model.train_adapter((Parallel(a2, b2))) - model.eval() - model.to(torch_device) - - parallel_outputs = model(**input_data) - - for out1, out2 in zip(outputs, parallel_outputs.head_outputs): - self.assertTrue(torch.allclose(out1["loss"], out2["loss"])) - self.assertTrue(torch.allclose(out1["logits"], out2["logits"], atol=1e-5)) diff --git a/adapters/tests/extended/test_adapter_trainer_ext.py b/adapters/tests/extended/test_adapter_trainer_ext.py deleted file mode 100644 index 6e149446..00000000 --- a/adapters/tests/extended/test_adapter_trainer_ext.py +++ /dev/null @@ -1,353 +0,0 @@ -# Copyright 2020 The HuggingFace Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import math -import os -import re -import sys -from pathlib import Path -from typing import Tuple -from unittest.mock import patch - -from parameterized import parameterized -from transformers.testing_utils import ( - CaptureStderr, - ExtendSysPath, - TestCasePlus, - backend_device_count, - execute_subprocess_async, - get_torch_dist_unique_port, - require_apex, - require_bitsandbytes, - require_torch, - require_torch_gpu, - require_torch_multi_accelerator, - require_torch_non_multi_accelerator, - slow, - torch_device, -) -from transformers.trainer_callback import TrainerState -from transformers.trainer_utils import set_seed - - -bindir = os.path.abspath(os.path.dirname(__file__)) -with ExtendSysPath(f"{bindir}/../../examples/pytorch/translation"): - from run_translation import main # noqa - - -set_seed(42) -MARIAN_MODEL = "sshleifer/student_marian_en_ro_6_1" -MBART_TINY = "sshleifer/tiny-mbart" - - -@require_torch -class TestTrainerExt(TestCasePlus): - def run_seq2seq_quick( - self, - distributed=False, - extra_args_str=None, - predict_with_generate=True, - do_train=True, - do_eval=True, - do_predict=True, - ): - output_dir = self.run_trainer( - eval_steps=1, - max_len=12, - model_name=MBART_TINY, - num_train_epochs=1, - distributed=distributed, - extra_args_str=extra_args_str, - predict_with_generate=predict_with_generate, - do_train=do_train, - do_eval=do_eval, - do_predict=do_predict, - ) - logs = TrainerState.load_from_json(os.path.join(output_dir, "trainer_state.json")).log_history - - if not do_eval: - return - - eval_metrics = [log for log in logs if "eval_loss" in log.keys()] - - first_step_stats = eval_metrics[0] - if predict_with_generate: - assert "eval_bleu" in first_step_stats - - last_step_stats = eval_metrics[-1] - assert isinstance(last_step_stats["eval_bleu"], float) - assert not math.isnan(float(last_step_stats["eval_loss"])), "eval_loss must not be `nan`" - - @require_torch_non_multi_accelerator - def test_run_seq2seq_no_dist(self): - self.run_seq2seq_quick() - - # verify that the trainer can handle non-distributed with n_gpu > 1 - @require_torch_multi_accelerator - def test_run_seq2seq_dp(self): - self.run_seq2seq_quick(distributed=False) - - # verify that the trainer can handle distributed with n_gpu > 1 - @require_torch_multi_accelerator - def test_run_seq2seq_ddp(self): - self.run_seq2seq_quick(distributed=True) - - @require_apex - @require_torch_gpu - def test_run_seq2seq_apex(self): - # XXX: apex breaks the trainer if it's run twice e.g. run_seq2seq.main() from the same - # program and it breaks other tests that run from the same pytest worker, therefore until this is - # sorted out it must be run only in an external program, that is distributed=True in this - # test and only under one or more gpus - if we want cpu will need to make a special test - # - # specifically to the problem traced it to self.optimizer.step() - if it's run 2nd time via - # 2nd main() call it botches the future eval. - # - self.run_seq2seq_quick(distributed=True, extra_args_str="--fp16 --fp16_backend=apex") - # test 2nd time - was getting eval_loss': nan' - # to reproduce the problem set distributed=False - self.run_seq2seq_quick(distributed=True, extra_args_str="--fp16 --fp16_backend=apex") - - @parameterized.expand(["base", "low", "high", "mixed"]) - @require_torch_multi_accelerator - def test_trainer_log_level_replica(self, experiment_id): - # as each sub-test is slow-ish split into multiple sub-tests to avoid CI timeout - experiments = { - # test with the default log_level - should be info and thus log info once - "base": {"extra_args_str": "", "n_matches": 1}, - # test with low log_level and log_level_replica - should be noisy on all processes - # now the info string should appear twice on 2 processes - "low": {"extra_args_str": "--log_level debug --log_level_replica debug", "n_matches": 2}, - # test with high log_level and low log_level_replica - # now the info string should appear once only on the replica - "high": {"extra_args_str": "--log_level error --log_level_replica debug", "n_matches": 1}, - # test with high log_level and log_level_replica - should be quiet on all processes - "mixed": {"extra_args_str": "--log_level error --log_level_replica error", "n_matches": 0}, - } - - data = experiments[experiment_id] - kwargs = {"distributed": True, "predict_with_generate": False, "do_eval": False, "do_predict": False} - log_info_string = "Running training" - with CaptureStderr() as cl: - self.run_seq2seq_quick(**kwargs, extra_args_str=data["extra_args_str"]) - n_matches = len(re.findall(log_info_string, cl.err)) - self.assertEqual(n_matches, data["n_matches"]) - - @slow - def test_run_seq2seq(self): - output_dir = self.run_trainer( - eval_steps=2, - max_len=128, - model_name=MARIAN_MODEL, - learning_rate=3e-4, - num_train_epochs=10, - distributed=False, - ) - - # Check metrics - logs = TrainerState.load_from_json(os.path.join(output_dir, "trainer_state.json")).log_history - eval_metrics = [log for log in logs if "eval_loss" in log.keys()] - first_step_stats = eval_metrics[0] - last_step_stats = eval_metrics[-1] - - assert first_step_stats["eval_loss"] > last_step_stats["eval_loss"], "model learned nothing" - assert isinstance(last_step_stats["eval_bleu"], float) - - # test if do_predict saves generations and metrics - contents = os.listdir(output_dir) - contents = {os.path.basename(p) for p in contents} - assert "generated_predictions.txt" in contents - assert "predict_results.json" in contents - - @slow - @require_bitsandbytes - def test_run_seq2seq_bnb(self): - from transformers.training_args import OptimizerNames - - def train_and_return_metrics(optim: str) -> Tuple[int, float]: - extra_args = "--skip_memory_metrics 0" - - output_dir = self.run_trainer( - max_len=128, - model_name=MARIAN_MODEL, - learning_rate=3e-4, - num_train_epochs=1, - optim=optim, - distributed=True, # force run in a new process - extra_args_str=extra_args, - do_eval=False, - do_predict=False, - n_gpus_to_use=1, # to allow deterministic fixed memory usage - ) - - # Check metrics - logs = TrainerState.load_from_json(Path(output_dir, "trainer_state.json")).log_history - gpu_peak_mem_mb = int(logs[0]["train_mem_gpu_peaked_delta"] / 2**20) - gpu_alloc_mem_mb = int(logs[0]["train_mem_gpu_alloc_delta"] / 2**20) - - loss = logs[0]["train_loss"] - return gpu_peak_mem_mb, gpu_alloc_mem_mb, loss - - gpu_peak_mem_orig, gpu_alloc_mem_orig, loss_orig = train_and_return_metrics(OptimizerNames.ADAMW_TORCH.value) - gpu_peak_mem_bnb, gpu_alloc_mem_bnb, loss_bnb = train_and_return_metrics(OptimizerNames.ADAMW_BNB.value) - - gpu_alloc_mem_diff = gpu_alloc_mem_orig - gpu_alloc_mem_bnb - - gpu_total_mem_orig = gpu_peak_mem_orig + gpu_alloc_mem_orig - gpu_total_mem_bnb = gpu_peak_mem_bnb + gpu_alloc_mem_bnb - gpu_total_mem_diff = gpu_total_mem_orig - gpu_total_mem_bnb - - # sshleifer/student_marian_en_ro_6_1 has 54M parameter, 29M of which is `nn.Embedding` which - # doesn't get quantized and remains in fp32. Therefore we only have 25M parameters quantized - # in 2 bytes and the diff in optim memory usage is derived as so: - # - # - normal 25*8=~200MB (8 bytes per param) - # - bnb 25*2= ~50MB (2 bytes per param) - # - # Thus we should expect ~150MB total memory saved. - # - # Peak memory should be the same - the total should be different by about that same margin - # - # After leaving a small margin to accommodate for differences between gpus let's check - # that we have at least 120MB in savings - expected_savings = 120 - - # uncomment the following if this test starts failing - requires py38 for a new print feature - # gpu_peak_mem_diff = gpu_peak_mem_orig - gpu_peak_mem_bnb - # print(f"{gpu_alloc_mem_orig=}MB {gpu_peak_mem_orig=}MB {gpu_alloc_mem_orig+gpu_peak_mem_orig=}MB") - # print(f" {gpu_alloc_mem_bnb=}MB {gpu_peak_mem_bnb=}MB {gpu_alloc_mem_bnb+gpu_peak_mem_bnb=}MB") - # print(f"{gpu_alloc_mem_diff=}MB") - # print(f"{gpu_peak_mem_diff=}MB") - # print(f"{gpu_total_mem_orig=}MB, {gpu_total_mem_bnb=}MB") - # print(f"{gpu_total_mem_diff=}MB, {gpu_total_mem_diff=}MB") - - self.assertGreater( - gpu_alloc_mem_diff, - expected_savings, - "should use ~150MB less alloc gpu memory with BNB, compared to without it for this model but got" - f" a difference of {gpu_alloc_mem_diff}MB, with gpu_alloc_mem_orig={gpu_alloc_mem_orig}MB and" - f" gpu_alloc_mem_bnb={gpu_alloc_mem_bnb}MB", - ) - - self.assertGreater( - gpu_total_mem_diff, - expected_savings, - "should use ~150MB less total gpu memory with BNB, compared to without it for this model but got" - f" a difference of {gpu_total_mem_diff}MB, with gpu_total_mem_orig={gpu_total_mem_orig}MB and" - f" gpu_total_mem_bnb={gpu_total_mem_bnb}MB", - ) - - self.assertEqual( - loss_orig, loss_bnb, f"loss should be the same, but got loss_orig={loss_orig}, loss_bnb={loss_bnb}" - ) - - def run_trainer( - self, - max_len: int, - model_name: str, - num_train_epochs: int, - learning_rate: float = 3e-3, - optim: str = "adafactor", - distributed: bool = False, - extra_args_str: str = None, - eval_steps: int = 0, - predict_with_generate: bool = True, - do_train: bool = True, - do_eval: bool = True, - do_predict: bool = True, - n_gpus_to_use: int = None, - ): - data_dir = self.test_file_dir / "../../hf_transformers/tests/fixtures/tests_samples/wmt_en_ro" - output_dir = self.get_auto_remove_tmp_dir() - args_train = f""" - --model_name_or_path {model_name} - --train_file {data_dir}/train.json - --validation_file {data_dir}/val.json - --test_file {data_dir}/test.json - --output_dir {output_dir} - --overwrite_output_dir - --max_train_samples 8 - --max_source_length {max_len} - --max_target_length {max_len} - --do_train - --num_train_epochs {str(num_train_epochs)} - --per_device_train_batch_size 4 - --learning_rate {learning_rate} - --warmup_steps 8 - --logging_steps 0 - --logging_strategy no - --save_steps {str(eval_steps)} - --group_by_length - --label_smoothing_factor 0.1 - --target_lang ro_RO - --source_lang en_XX - --train_adapter - """.split() - - args_eval = f""" - --do_eval - --per_device_eval_batch_size 4 - --max_eval_samples 8 - --val_max_target_length {max_len} - --evaluation_strategy steps - --eval_steps {str(eval_steps)} - --train_adapter - """.split() - - args_predict = """ - --do_predict - """.split() - - args = [] - if do_train: - args += args_train - - if do_eval: - args += args_eval - - if do_predict: - args += args_predict - - if predict_with_generate: - args += "--predict_with_generate".split() - - if do_train: - if optim == "adafactor": - args += "--adafactor".split() - else: - args += f"--optim {optim}".split() - - if extra_args_str is not None: - args += extra_args_str.split() - - if distributed: - if n_gpus_to_use is None: - n_gpus_to_use = backend_device_count(torch_device) - master_port = get_torch_dist_unique_port() - distributed_args = f""" - -m torch.distributed.run - --nproc_per_node={n_gpus_to_use} - --master_port={master_port} - {self.examples_dir_str}/pytorch/translation/run_translation.py - """.split() - cmd = [sys.executable] + distributed_args + args - # keep for quick debug - # print(" ".join([f"\nPYTHONPATH={self.src_dir_str}"] +cmd)); die - execute_subprocess_async(cmd, env=self.get_env()) - else: - testargs = ["run_translation.py"] + args - with patch.object(sys, "argv", testargs): - main() - - return output_dir diff --git a/adapters/tests/fixtures/SiBERT/config.json b/adapters/tests/fixtures/SiBERT/config.json deleted file mode 100644 index 89f339fe..00000000 --- a/adapters/tests/fixtures/SiBERT/config.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "architectures": [ - "BertForMaskedLM" - ], - "attention_probs_dropout_prob": 0.1, - "bos_token_id": null, - "directionality": "bidi", - "do_sample": false, - "eos_token_ids": null, - "finetuning_task": null, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 768, - "initializer_range": 0.02, - "intermediate_size": 3072, - "is_decoder": false, - "layer_norm_eps": 1e-12, - "length_penalty": 1.0, - "max_length": 20, - "max_position_embeddings": 512, - "model_type": "bert", - "num_attention_heads": 12, - "num_beams": 1, - "num_hidden_layers": 12, - "num_labels": 2, - "num_return_sequences": 1, - "output_attentions": false, - "output_hidden_states": false, - "output_past": true, - "pad_token_id": 0, - "pooler_fc_size": 768, - "pooler_num_attention_heads": 12, - "pooler_num_fc_layers": 3, - "pooler_size_per_head": 128, - "pooler_type": "first_token_transform", - "pruned_heads": {}, - "repetition_penalty": 1.0, - "temperature": 1.0, - "top_k": 50, - "top_p": 1.0, - "torchscript": false, - "type_vocab_size": 2, - "use_bfloat16": false, - "vocab_size": 10000 -} diff --git a/adapters/tests/fixtures/SiBERT/special_tokens_map.json b/adapters/tests/fixtures/SiBERT/special_tokens_map.json deleted file mode 100644 index e7b03750..00000000 --- a/adapters/tests/fixtures/SiBERT/special_tokens_map.json +++ /dev/null @@ -1 +0,0 @@ -{"unk_token": "[UNK]", "sep_token": "[SEP]", "pad_token": "[PAD]", "cls_token": "[CLS]", "mask_token": "[MASK]"} \ No newline at end of file diff --git a/adapters/tests/fixtures/SiBERT/tokenizer_config.json b/adapters/tests/fixtures/SiBERT/tokenizer_config.json deleted file mode 100644 index 9de0d36b..00000000 --- a/adapters/tests/fixtures/SiBERT/tokenizer_config.json +++ /dev/null @@ -1 +0,0 @@ -{"do_lower_case": false, "max_len": 512} \ No newline at end of file diff --git a/adapters/tests/fixtures/SiBERT/vocab.txt b/adapters/tests/fixtures/SiBERT/vocab.txt deleted file mode 100644 index 67084dbf..00000000 --- a/adapters/tests/fixtures/SiBERT/vocab.txt +++ /dev/null @@ -1,10000 +0,0 @@ -[PAD] -[UNK] -[CLS] -[SEP] -[MASK] - - -! -" -# -$ -% -& -' -( -) -* -+ -, -- -. -/ -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -: -; -< -= -> -? -@ -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -X -Y -Z -[ -\ -] -^ -_ -` -a -b -c -d -e -f -g -h -i -j -k -l -m -n -o -p -q -r -s -t -u -v -w -x -y -z -{ -| -} -~ -¡ -£ -¥ -§ -¨ -ª -« -¬ -® -° -± -² -³ -´ -µ -· -¸ -º -» -¼ -½ -¾ -Å -Æ -È -É -Í -Ö -× -Ø -Ü -Þ -ß -à -á -â -ã -ä -å -æ -ç -è -é -ê -ë -ì -í -î -ï -ñ -ò -ó -ô -õ -ö -÷ -ø -ù -ú -ü -ÿ -ā -ć -Đ -Ē -ē -ę -ě -ğ -ĩ -ī -ł -Ō -ō -ŏ -ś -ş -š -ū -ƒ -ǐ -ț -ɑ -ə -ɛ -ɡ -ɪ -ʊ -ʌ -ʷ -ˈ -ˌ -ː -ˑ -˘ -˛ -˜ -˝ -́ -̆ -Α -Β -Δ -Ε -Ζ -Ι -Κ -Λ -Μ -Ν -Ο -Π -Σ -Τ -Φ -Χ -Ψ -Ω -ά -έ -ή -ί -α -β -γ -δ -ε -η -θ -ι -κ -λ -μ -ν -ξ -ο -π -ρ -ς -σ -τ -υ -φ -χ -ψ -ω -ό -ύ -А -В -Г -И -К -М -Н -П -Р -С -Ч -а -б -в -г -д -е -з -и -й -к -л -м -н -о -п -р -с -т -у -х -ч -ш -ы -ь -я -Ө -ִ -ַ -ָ -ּ -א -ב -ד -ה -ו -י -ל -מ -פ -ק -ר -ש -ת -ء -آ -أ -إ -ئ -ا -ب -ة -ت -ج -ح -خ -د -ذ -ر -ز -س -ش -ص -ض -ع -ف -ق -ك -ل -م -ن -ه -و -ي -َ -ُ -ِ -ّ -ْ -ک -گ -ہ -ی -ހ -ނ -ރ -އ -މ -ފ -ދ -ަ -ާ -ި -ު -ޫ -ެ -ް -ँ -ं -ः -अ -आ -इ -उ -ऊ -क -ख -ग -घ -च -छ -ज -झ -ञ -ट -ठ -ड -ण -त -थ -द -ध -न -प -फ -ब -भ -म -य -र -ल -व -श -ष -स -ह -़ -ा -ि -ी -ु -ू -ृ -े -ै -ो -ौ -् -। -१ -ক -ত -দ -ন -ম -য -র -ল -় -া -ি -ে -্ -ਤ -ਨ -ਮ -ਰ -ਹ -ਾ -ੁ -ମ -ା -ஃ -அ -ஆ -இ -உ -ஊ -எ -ஒ -க -ங -ச -ஜ -ட -ண -த -ந -ன -ப -ம -ய -ர -ற -ல -ள -ழ -வ -ஷ -ஸ -ா -ி -ீ -ு -ூ -ெ -ே -ை -ொ -ோ -ௌ -் -ಕ -ಟ -ನ -ಪ -ರ -ಶ -ಾ -ಿ -ೆ -್ -ക -ച -ട -ന -പ -യ -ര -ള -ാ -ി -ു -് -ං -ඃ -අ -ආ -ඇ -ඈ -ඉ -ඊ -උ -ඌ -ඍ -ඎ -ඏ -එ -ඒ -ඓ -ඔ -ඕ -ඖ -ක -ඛ -ග -ඝ -ඞ -ඟ -ච -ඡ -ජ -ඣ -ඤ -ඥ -ඦ -ට -ඨ -ඩ -ඪ -ණ -ඬ -ත -ථ -ද -ධ -න -ඳ -ප -ඵ -බ -භ -ම -ඹ -ය -ර -ල -ව -ශ -ෂ -ස -හ -ළ -ෆ -් -ා -ැ -ෑ -ි -ී -ු -ූ -ෘ -ෙ -ේ -ෛ -ො -ෝ -ෞ -ෟ -ෲ -ෳ -෴ -ง -จ -น -ม -ล -ว -อ -ั -་ -ད -န -ស -ា -្ -ḍ -ḥ -ḫ -ḷ -ḻ -ṃ -ṇ -ṛ -ṟ -ṣ -ṭ -ṷ -ạ -ἀ -ἄ -Ἀ -ἰ -ὁ -ῖ -– -— -‘ -’ -‚ -‛ -“ -” -• -… -′ -″ -⁄ -€ -₹ -℟ -℣ -→ -∆ -− -√ -∞ -≈ -≠ -≡ -≤ -⋆ -▲ -● -◦ -☆ -♦ -⚛ -⚫ -✈ -⦁ -⭐ -、 -。 -い -か -が -け -こ -さ -し -す -た -て -で -と -な -に -の -は -ま -よ -ら -る -れ -を -ア -カ -チ -ト -メ -モ -ュ -リ -ル -ン -・ -ー -ㄱ -ㄷ -ㅂ -ㅈ -ㅎ -一 -三 -上 -世 -中 -之 -九 -事 -五 -京 -人 -仁 -仙 -令 -伐 -传 -佛 -側 -傳 -儀 -元 -光 -兒 -內 -公 -利 -則 -加 -北 -午 -南 -原 -參 -口 -古 -只 -可 -台 -史 -同 -后 -君 -周 -唐 -善 -四 -国 -國 -土 -地 -城 -基 -堂 -報 -士 -大 -天 -太 -夫 -奇 -女 -娘 -媚 -嬪 -子 -字 -孛 -學 -安 -宗 -官 -定 -宮 -家 -實 -寧 -小 -尙 -局 -居 -山 -岸 -島 -崇 -川 -州 -帝 -帶 -平 -年 -府 -張 -後 -徐 -德 -志 -性 -意 -慶 -成 -政 -文 -斤 -新 -方 -族 -日 -昌 -明 -昭 -時 -曌 -書 -月 -木 -本 -李 -村 -東 -楊 -機 -正 -武 -殿 -氏 -気 -水 -沖 -沿 -法 -波 -注 -洋 -津 -洪 -海 -淑 -渤 -漢 -濟 -無 -照 -爲 -玄 -玉 -王 -生 -発 -白 -百 -皇 -直 -県 -石 -神 -禍 -紀 -縣 -羅 -耶 -聖 -能 -花 -英 -蘭 -製 -西 -記 -語 -論 -諸 -謙 -警 -議 -趙 -辛 -道 -郡 -都 -醫 -里 -金 -鎭 -長 -門 -間 -阿 -院 -陵 -陽 -雲 -震 -韓 -食 -馬 -高 -麗 -龍 -가 -감 -건 -경 -고 -공 -과 -관 -광 -구 -국 -군 -궁 -금 -기 -김 -나 -남 -내 -녕 -당 -대 -덕 -도 -동 -라 -려 -로 -릉 -리 -마 -만 -명 -무 -문 -민 -박 -방 -벌 -보 -본 -봉 -부 -비 -빈 -사 -산 -상 -생 -서 -선 -성 -세 -소 -송 -수 -숙 -순 -시 -신 -씨 -아 -안 -야 -양 -어 -여 -연 -영 -오 -옥 -왕 -용 -우 -원 -유 -육 -음 -의 -이 -인 -임 -자 -장 -전 -정 -제 -조 -종 -주 -지 -직 -진 -천 -촌 -최 -태 -토 -표 -학 -한 -해 -향 -현 -형 -호 -홍 -화 -환 -황 -회 -후 -흥 -️ -( -) -, - -👇 -😉 -🙂 -🚂 -🚉 -🚌 -🛤 -🤔 -##ි -##ද -##් -##ය -##ඥ -##ා -##ත -##ම -##ක -##ර -##ෝ -##හ -##න -##ො -##ු -##ල -##ජ -##ව -##ෙ -##ග -##ැ -##ී -##ට -##ෂ -##ස -##බ -##i -##a -##r -##d -##g -##e -##ඞ -##ඳ -##ේ -##ඩ -##ප -##ං -##ණ -##l -##f -##1 -##6 -##8 -##0 -##ඇ -##2 -##7 -##ශ -##භ -##o -##n -##ධ -##ළ -##ෛ -##5 -##p -##x -##w -##s -##y -##m -##v -##c -##u -##t -##ඬ -##A -##h -##z -##ෞ -##ූ -##ෘ -##ඨ -##k -##ෑ -##අ -##ථ -##ච -##ඛ -##b -##4 -##S -##K -##ඹ -##ෆ -##E -##ν -##θ -##ρ -##ω -##π -##ο -##ς -##9 -##ඕ -##ඟ -##ඝ -##ä -##D -##R -##3 -##é -##ඤ -##q -##ா -##ற -##ை -##ப -##் -##ó -##र -##ब -##् -##ह -##म -##न -##V -##ඵ -##ඉ -##ඈ -##එ -##ෟ -##ඏ -##T -##े -##व -##ी -##j -##I -##M -##O -##ਹ -##ੁ -##ආ -##Z -##C -##ඡ -##ෳ -##˜ -##τ -##ά -##σ -##ι -##P -##Q -##L -##U -##X -##B -##ट -##ा -##ज -##J -##F -##️ -##N -##š -##έ -##G -##ē -##ō -##W -##Y -##ṇ -##ḍ -##H -##দ -##릉 -##ඒ -##ඔ -##국 -##시 -##대 -##උ -##ं -##क -##श -##ඊ -##া -##ল -##ে -##ो -##ඃ -##ඣ -##ḥ -##の -##प -##द -##ඪ -##자 -##사 -##화 -##ú -##á -##م -##ی -##د -##ہ -##ˌ -##왕 -##× -##상 -##의 -##학 -##ෲ -##ম -##ি -##´ -##˝ -##ˑ -##ि -##त -##भ -##ُ -##ت -##ِ -##ب -##َ -##ü -##ū -##ā -##˘ -##ூ -##ர -##ம -##य -##ु -##± -##🛤 -##ṭ -##ö -##° -##ר -##ק -##수 -##촌 -##च -##छ -##문 -##정 -##ñ -##ந -##த -##ி -##க -##ன -##® -##α -##δ -##ό -##κ -##빈 -##ا -##н -##т -##о -##ш -##а -##д -##ṛ -##ல -##る -##² -##å -##ح -##ட -##ச -##ய -##ு -##ள -##வ -##ே -##ï -##स -##ृ -##ύ -##ن -##़ -##в -##и -##ч -##ग -##ल -##ख -##Ζ -##Ο -##ô -##Þ -##í -##ඖ -##주 -##성 -##관 -##부 -##Í -##¬ -##р -##с -##е -##й -##녕 -##군 -##ī -##ඓ -##¼ -##к -##л -##у -##ௌ -##ध -##ः -##ç -##비 -##ष -##ण -##ड -##で -##Đ -##태 -##진 -##ˈ -##ெ -##ஷ -##기 -##ή -##ה -##ד -##ו -##ת -##м -##ل -##خ -##ر -##ṃ -##ś -##후 -##지 -##υ -##ඌ -##η -##μ -##ί -##Ω -##ج -##ّ -##ق -##و -##ص -##λ -##ṣ -##è -##â -##ة -##ַ -##ּ -##ত -##영 -##공 -##원 -##− -##ε -##ø -##👇 -##് -##ട -##പ -##ന -##방 -##인 -##ண -##ஜ -##황 -##ங -##ू -##ě -##제 -##금 -##동 -##향 -##로 -##ਾ -##ठ -##ऊ -##ँ -##æ -##ު -##މ -##ް -##ހ -##ޫ -##ރ -##ި -##އ -##ާ -##ழ -##ß -##യ -##ാ -##ി -##з -##ы -##마 -##ै -##ඍ -##ਰ -##チ -##ュ -##ー -##ル -##씨 -##্ -##র -##ন -##१ -##흥 -##ौ -##구 -##É -##ञ -##ீ -##만 -##생 -##∞ -##⚛ -##อ -##ม -##น -##ง -##ั -##ว -##จ -##÷ -##¾ -##ʷ -##ي -##ْ -##ك -##¨ -##à -##나 -##무 -##メ -##リ -##カ -##ض -##ء -##Ν -##Μ -##Ι -##Ε -##라 -##→ -##려 -##て -##い -##फ -##½ -##회 -##ì -##조 -##선 -##Α -##ḷ -## -##ொ -##õ -##я -##б -##ê -##ೆ -##ಟ -##್ -##ಿ -##ć -##민 -##한 -##ា -##ަ -##육 -##ş -##내 -##ə -##안 -##س -##た -##µ -##과 -##थ -##ב -##י -##야 -##ع -##х -##ש -##보 -##토 -##ف -##ز -##घ -##ÿ -##ę -##К -##형 -##표 -##ه -##이 -##Δ -##́ -##п -##ь -##ඦ -##γ -##ମ -##ା -##경 -##ோ -##ರ -##ಕ -##ಾ -##º -##ɑ -##ː -##ʌ -##궁 -##고 -##당 -##ł -##ɪ -##ஸ -##리 -##장 -##Λ -##א -##ל -##감 -##ދ -##ನ -##¸ -##φ -##ま -##か -##ئ -##は -##と -##す -##현 -##よ -##し -##こ -##ª -##̆ -##≡ -##Β -##Κ -##れ -##해 -##β -##ã -##г -##≤ -##Æ -##ര -##ਨ -##ു -##ള -##ɡ -##종 -##덕 -##순 -##گ -##˛ -##벌 -##¥ -##け -##🚂 -##ക -##ಶ -##오 -##ț -##ஆ -##ë -##서 -##🙂 -##도 -##ṷ -##신 -##환 -##उ -##ἰ -##χ -##় -##호 -##î -##ʊ -##ù -##ش -##Ü -##ނ -##😉 -##건 -##ŏ -##⁄ -##산 -##أ -##ִ -##ン -##ಪ -##ެ -##ਤ -##န -##ک -##유 -##ذ -##€ -##Σ -##ò -##양 -##직 -##ล -##ψ -##に -##ඎ -##ད -##ト -##ਮ -##전 -##³ -##🚌 -##ạ -##연 -##∆ -##세 -##음 -##ṟ -##ḫ -##ξ -##が -##ア -##ㄱ -##아 -##な -##آ -##য -##✈ -##ǐ -##용 -##ğ -##ָ -##Ē -##פ -##្ -##ស -##어 -##임 -##본 -##È -##モ -##إ -##ḻ -##광 -##ῖ -##С -##Р -##ɛ -##Å -##ক -##ら -##명 -##ފ -##झ -##숙 -##옥 -##박 -##송 -##천 -##ஊ -##ĩ -##봉 -##מ -##ἀ -##☆ -##න් -##ත් -##ක් -##ිය -##්ර -##ර් -##ාව -##ම් -##ින් -වි -##ස් -##ති -##ුව -##ීම -##නය -##ෙන් -##්ය -##හි -##ල් -ප්ර -##යි -##ිර -##ික -##යේ -##ාර -කර -##තු -##ෙන -##මා -##වා -සි -##තර -මෙ -##නු -##ාල -##ගේ -නි -##ණය -##දී -සහ -##ුර -##ෙස -##ිත -##න්න -##නි -##හා -##ුද -අතර -පි -##යක් -හා -හැ -##ුණ -වැ -##කි -##ුන් -##වි -වන -ලෙස -සං -කිර -සම -##ක්ෂ -පැ -##ත්ව -වූ -##යන් -ක්ර -##නා -##ියා -##ිබ -මෙම -##යෙන් -අව -##ීමට -##රි -කො -##හු -නො -##ාය -##දු -##ාර් -##යට -##ැන -##ාන -##ට් -ස් -බව -ඇති -##කර -##ත්ර -##ලි -විස -විය -වේ -දි -##දි -සඳ -ඇත -##he -##යා -##තා -##සු -##සා -##දා -##ලා -##කු -වෙ -##ංග -##ෙහි -කළ -දෙ -##වන -විශ -විසින් -##ද් -##ේශ -තු -##ද්ය -##සි -##තිය -##වර -19 -##කා -සිට -##ෙර -ඔහු -දී -වර් -කරන -##er -##මි -සඳහා -වල -සම් -සා -##ැබ -##ාජ -අන -##වල -##න්ද -##මු -##සේ -කිරීම -##න්ත -##ාවේ -නැ -සැ -යු -පිළ -##ත්ත -දැ -##ීය -මු -##ඩා -ලබ -##රු -##ුණු -##in -##කාර -##මය -##00 -##වේ -##on -හෝ -එය -##ෂ් -පව -හි -##කට -the -මි -##පා -##න්නේ -පරි -වෙන -අධ -සිය -##රා -##at -##ප් -##ඩි -##ණ් -කු -##ස්ථ -##තුව -##ණි -##ිරි -විද්ය -##an -තිබ -මේ -ලැබ -යන -##ටි -##es -එම -##ුද් -බල -ප්රති -රාජ -ජන -##ල්ල -##ණ්ඩ -##වැ -හැක -##ානය -##මින් -##වත් -ශ්ර -##en -භාව -එක් -##or -ගැන -##ොහ -##තාව -කොට -##හැ -##සර -##දේශ -මැ -##al -##ාග -දක් -උප -කල -රජ -##තික -##ංක -සමා -කි -##හන් -ක් -##ෙකු -##ෙක් -##ාප -##ළු -##ත්ම -වී -##ed -##ූප -කාල -නම් -පිළිබ -##ද්ධ -##යු -අප -##ුරු -##ාම -##විය -භාවිත -##ියාව -##ාස -එක -##න්ධ -##මණ -##ලය -##ar -##වුන් -බැ -සිදු -##කය -විට -##ර්මා -##ගින් -##ේෂ -##ධාන -##ic -##කින් -##ෝග -##ීන් -##ඩ් -එහි -##ුවන් -##ත්වය -වශ -යනු -##ියේ -පො -##නේ -අය -ව්ය -නිසා -බොහ -ආර -කැ -##ගම -##it -වශයෙන් -##පත් -ලදී -මහ -##ගත -##ව් -ගො -මෙය -තුළ -පිහි -##න්ය -ගැ -මත -##නයේ -##ලිය -##තුර -යො -ශ්රී -පහ -පිළිබඳ -##වීම -##ක්ර -පු -##nd -පමණ -බොහෝ -##ංශ -of -##වී -අනුව -පළ -හේ -තර -##මේ -බි -##ගෙන -හැකි -වඩා -ඔවුන් -ජා -ලද -දින -##වු -කිරීමට -සු -අනු -චි -##මන් -ස්ථ -සේ -##හාර -පසු -##ප්ර -##is -කා -##විධ -කට -වැඩි -වීම -##ත්මක -පර -##කාශ -##සුව -##න්නා -කෙර -##ion -ලබා -දු -වැනි -##ම්බ -20 -##වර් -පුර -වසර -##ගත් -##ුදු -නිර්මා -##ing -in -පත් -##ුද්ධ -ලංක -මගින් -දේ -200 -අඩ -##හර -##ත්තේ -චිත්ර -පැව -##ටු -##ලක -මා -රට -සම්බ -අධ්ය -පා -##දුව -නිර -තුල -##මුත් -##ොර -සමග -රැ -මෙහි -ප්රධාන -ග්ර -##ූල -##re -##තුරු -ජී -යුතු -##ෝක -බවට -##පය -අග -##මක් -##දන -විශේෂ -පාල -##ියානු -##ාවක් -පෙර -##දය -##as -##වූ -ක්රියා -ඔහුගේ -හම -අද -##ීත -වෙත -දේශ -වන්නේ -කරයි -සද -##ධ්ය -භාවිතා -##මැ -සම්බන්ධ -නිය -ප්රදේශ -##ගර -විශ් -විශාල -ඇතු -ඉද -හෙ -දක්වා -##ම්භ -##ිකා -නමුත් -##ත්ය -සාමා -සො -##ටන් -සිදුව -ප්රමා -##හෙ -රාජ්ය -##පි -##පට -##ර්ථ -##යින් -##නී -##ීම් -##ගල -and -##ටා -##හල -සිටි -ක්රි -ඒවා -##om -##ou -##සන් -ඇය -##ූර් -##ච් -භා -##ණයක් -නා -වා -##නට -##හිත -##ෝජ -##ීර -ගණ -##ලු -නව -##ාවන් -ලි -පසුව -##තන -##ියන් -වැඩ -##ෑම -##ීන -දිය -##හිර -##කම් -##ෙන්ම -චිත්රපට -##ර්ශ -ඉතා -##භාව -වර්ග -##ලේ -##විත -##ැයි -##යුතු -පෙ -18 -යට -##ඳු -ගැනීම -##ස්ත -ක්රම -පිරි -යොදා -##ශ්ය -##බ් -අවස්ථ -වෙනස් -##චාර -ඉන් -to -ශි -වු -කරනු -##le -##වය -201 -විවිධ -##තේ -##ශ් -##ායක -සමාජ -දෙක -##ජි -##වත -මහා -##කරණය -කෙ -##ල්ප -##යක -සදහා -##මර -ගෙන -නී -අභ -දෙන -දැක් -##ොන් -නගර -##වාස -##යේදී -##තනය -වලට -කටයුතු -##ාරි -කාර් -##ධනය -##ුවේ -තම -##කෘ -හේතුව -මාර් -ගත -##ක්ෂණ -ලංකාවේ -##ent -##දෙන -##තිවර -##ණු -##මට -##st -##ීට -##නම් -බ්ර -මූල -##ධි -ඉන්ද -##ට්ර -##දනය -ආකාර -##ව්ය -##ාවට -පිළි -විද්යා -##ළි -##ඛ්ය -##පාල -ගි -නිර්මාණය -##හස් -##මත් -##ුවෙන් -##ැන් -##el -##ඳින් -##am -##ාන් -සහිත -##ට්ට -##ශ්ර -පුද් -##පද -ප්රකාශ -##සිය -වලින් -ලෝක -##හාස -රජු -ආරම්භ -හැකිය -##ගය -වර -##et -මධ්ය -##හන්සේ -##සත් -##ර්ම -ඉහ -කලා -හමුද -##නික -##ීමේ -##සක් -##ගෙන් -වර්ෂ -හො -වෙයි -පැමි -භූ -##බි -කළේ -සංග -ජාතික -ශා -නිෂ් -මො -බෙ -##වින් -මුල් -##ගැන -සාමාන්ය -##කුණු -##වෙ -පිට -කිය -##තිහාස -වාර් -අම -##මික -අර -##ලෝ -තව -ඇත්තේ -##තී -##ක්ක -##තින -අන්ත -වූයේ -##ro -අත -පැහැ -භාෂ -##ct -##ඳුන් -##දිය -ලැබේ -නිෂ්පා -මිනි -සිං -##ග් -##රණ -අවශ්ය -ගොඩ -##නිය -##il -සමඟ -##ුවර -මුද -##ලින් -කෘ -ලේ -ප්රා -අත් -##දේ -##යෙහි -හැඳින් -ආය -##ol -වැද -රෝග -##පු -පද්ධ -##බා -ක්රී -අස -ක්ෂ -සංක -පුරා -සංස් -පැවැ -එක්සත් -##ෙනි -පත්ව -එසේ -##ධාර -බවයි -වග -##වයි -##ෝල -##ෙල් -තා -##ක්ත -##ක්ෂණය -යෙ -උත් -##ෝප -සොයා -ද්ර -ගත් -ගැනීමට -##ට්ඨ -කිරීමේ -##තුන් -##ation -මැතිවර -හර -අන්තර් -දර -රූප -##ජා -නැවත -අයත් -##රණය -##ෝධ -සැලක -පවතින -##නයක් -විද්යාව -##න්නට -##නයට -##ඩු -##මාන -##කො -th -අඩු -##ටුව -##කරණ -ගන්නා -##ch -නිද -වෙළ -මුහ -##යකි -තිබේ -කුඩා -##ir -දුර -පෙන් -##ග්ර -අයි -වහන්සේ -තවත් -රෝ -##ෙසේ -හඳුන් -වුව -සංඛ්ය -සමහර -තොර -##ම්ප -##වලට -##මැති -##ad -##න්ද්ර -පළමු -199 -ඉදිරි -##සට -උදා -##විට -##ක්රම -බලප -රු -##ුත් -##වීමට -කිහි -##සුන් -ලක් -##ියක් -ආරක්ෂ -##ෙයි -වැදගත් -කණ්ඩ -පූ -සඳහන් -සියව -##වාහ -කෙසේ -ඉහළ -ස්ථානය -The -ස්ව -ලෙසින් -##පුර -මඟ -##ෙන්නේ -##කයන් -කෝ -කණ්ඩාය -##නක් -##ප්ත -කාලය -ලා -පෙන -කොට්ඨ -මාන -##ot -කිරි -##න්ත්ර -පාස -දකුණු -##ri -නිරූප -මීට -බහු -පමණක් -පාලනය -##ෝස් -කාර්ය -ආර්ථ -10 -##ිතා -පැවති -ප්රථ -මෙන්ම -දැක -##දර -##ගු -ව්යාප -අධික -සී -පර් -පාර් -දේශපාල -යුද්ධ -වෛ -සැල -##නැ -##කිර -ක්රියාව -රස -for -##ස්ස -##ුවක් -##කාල -##තම -ඉතිහාස -පිහිටි -රා -##වල් -වෙනත් -කරමින් -ලො -ගේ -පෘ -ආස -ප්රමාණය -ඔවුන්ගේ -##දීම -##ුණි -ආහාර -##ම්බර් -##වරුන් -යන්න -##ොත් -##වැනි -සෙ -##ගණ -##iv -ආර්ථික -##ියට -##ෆ් -##ේක්ෂ -198 -සිංහල -වර්ත -##සුම් -ගුවන් -##ce -##ැම් -සංස්කෘ -##ළඹ -යටතේ -##ිනි -##ly -##id -##ලර් -##ur -පැමිණ -##ුවට -ගෙ -තේ -##ter -##නෙ -##ෙකුත් -is -පවතී -##ow -දැන -නොහැ -කේ -තැන -යුග -ලදි -ඇමර -##ාලය -හිමි -##වලින් -##රිත -අප්ර -##ාර්ථ -වෙන් -බට -පුද්ගල -197 -දක්නට -බෝ -##පති -##ස්ට -නොවන -17 -ශක් -ප්රථම -මෙහෙ -##ිකාව -නිල -යම් -##ිකානු -ත්ර -##ර්ය -අධ්යාප -##රඹ -##වනු -15 -නැත -එනම් -ලං -##නෝ -පී -විර -ආගම -ලබන -##ut -ඉදිරිපත් -##ස්ථානය -##වන් -වඩාත් -හැර -re -##ලී -යුර -##ul -තීර -##වාදී -වර්ධනය -කිසි -සමාන -චරිත -16 -##වාද -දර්ශ -##ෂ්ඨ -##තින් -උස -වීමට -##ay -##ුවා -අර් -##ia -විශ්ව -##ස්තර -ලද් -##ජන -##වෙන -විශ්වාස -ඇතැම් -පද්ධතිය -හට -මඟින් -##මන -##යික -ක්රමය -දෙවන -තත් -##දුර -බවත් -##තුමා -##කාරී -කොටස් -##ිරාජ -ලබයි -##ීර් -##න්විත -සීම -සිර -##us -ඒක -ලංකා -පක්ෂ -නික -##දාය -##කරන -පිහිටා -be -පරිගණ -බටහිර -##චි -කළේය -හේතුවෙන් -අති -ඇතුළ -බා -අංශ -මාල -යැයි -මැතිවරණ -උදාහර -##ෂ්ට -අධිරාජ -නීති -##තාවය -##im -පදන -නොව -අවස්ථාව -##ලන්ත -යා -##පයක් -##ල්ලා -##හස -12 -##න්ට -ඇම -සිටින -අධ්යය -පැවැත්ව -##ූර -සංවිධ -පිළිබඳව -සට -##ද්ර -සම්ප්ර -අර්ථ -තෙ -ජය -##කල -##em -අනෙකුත් -මණ්ඩ -##ාත්මක -##ෙස් -දෙස -දිස් -##පූර් -##න්තර -##ig -##ෝෂ -##os -වසරේ -196 -##ාසය -පරිදි -##ers -ගැට -##තය -##ත්රි -විහාර -as -සෑම -සමන්විත -ලෝ -##ටත් -ඉඩ -ලිය -හැකියාව -##ාරය -පැහැදි -පිළිබද -ජීව -##ුවත් -මාර්ග -##ියාවේ -පවු -තෝ -මූලික -සර -##od -##ංගු -##and -කොර -##um -##ඵල -ඇගේ -කතා -විෂ -හේතු -##දුන් -පිය -##තීන් -##ලට -##ag -වාර්තා -##ංග්ර -නිරූපණය -##ැක් -st -අවුර -මෙන් -##මිය -ති -##යන්ට -මට්ට -ගෝ -විස්තර -##යෝග -සියලු -යාම -සංගීත -##හන -අනතුර -##නාව -ගමන් -##ලියන -තමන් -##හය -සංවිධානය -තොරතුරු -##ෙකි -කෙරේ -විවාහ -##භාග -මානව -අවධ -##ිතාන්ය -on -අමතර -බ්රිතාන්ය -කථ -නීතිය -දේව -or -අල -##ගි -පැර -ඊට -උද -##ේත්ර -අරම -ලද්දේ -##මාර -අවසන් -11 -පද -##පො -##න්ගේ -මිය -##කරුවන් -ජල -ඉල -එර -යුතුය -##මත -##ra -වාය -සුදු -නිර්මාණ -වෘ -##ෂණ -##සින් -##පත -පියා -න්ය -ද් -වෙනුවෙන් -ද්රව්ය -##ඩිය -හරහා -##හැර -##ීමෙන් -ලබාග -ගුණ -##ගන්නා -ගොඩනැ -උතුරු -එහෙ -ජෝ -##න්තු -ඇරඹ -##සී -දේශපාලන -##ස්තුව -ඔහුට -හෙවත් -බුද්ධ -තිබූ -##ොක් -##කම -##ith -ඔස් -සේව -ගිය -##කළ -##ගලය -ස්වා -පවත් -ක්ෂේත්ර -##ik -සංවර් -ව්යා -හමුදා -##න්ඩ -සක -ජීවිත -##ොං -අභ්ය -ජනපද -##ist -පරිගණක -##යාගේ -භාෂාව -නොවේ -බලය -වෙළඳ -පොදු -වය -ක්රියාත්මක -සාමාන්යයෙන් -විදු -නිර් -රච -දිග -##දර්ශ -විනා -ව්යව -නොහැකි -ඉංග්ර -බෞ -##දින් -වර්ණ -194 -ගු -##යන්ගේ -රි -##ීසි -බලා -නිෂ්පාදනය -නෙ -නම -ක්රීඩා -නිපද -##ංගික -##්ල -ශාක -##බල -ලොව -සාමාජ -##ච්ඡ -දෙවිය -කොළඹ -ස්වභාව -එසේම -දිස්ත්රි -පල -සුව -##ලිමේ -එයට -වර්තමා -##ණිය -නියම -##ටිය -##ර්මාන්ත -පර්යේ -සෝ -රසාය -##ෂ්ය -පහත -බෞද්ධ -14 -එකක් -##යෙකු -##සයි -##දේශීය -පරී -ප්රතිඵල -ක්රීඩ -අදහස් -කරන්නේ -##ූන් -පාර්ලිමේ -##ෝන -##th -නමින් -ලංකාව -##ට්ය -මුල -ලැබූ -බුද -##රාධ -දහ -බිහි -##බර් -##ුණේ -පළා -##ෙක -195 -තරග -ජනතාව -නැගෙන -මේවා -මාස -ප්රභ -සම්පූර් -සන්න -##ගැ -කාන්ත -පුද්ගලය -පැහැදිලි -##සිද්ධ -කෙරෙහි -##ශ්ච -13 -වෛද්ය -al -යනුවෙන් -රාජධාන -##op -##ාර්ය -නැති -ජේ -දෙකක් -##ර්ග -රේ -අමතරව -##ජ් -ආයතනය -නාම -##වාරි -##est -හඳු -පිහිටුව -දේවා -##ip -##වාහි -රො -නොමැති -අංග -##පිය -යොමු -##ුවන -ලක්ෂණ -එල්ල -con -##ලාව -විම -##ටය -අභි -##වෘ -##හොත් -de -සැක -සිද්ධ -එහෙත් -හඳුනා -අනතුරුව -ජලය -ලේඛ -an -සෞ -කිහිපයක් -##ධන -##ත්වයක් -විද්යාත්මක -දෙම -නායක -කාලයේ -##ෂික -මෙසේ -සාමාජික -විජ -with -In -##ස්තු -##කයින් -නැගෙනහිර -##ැම්බර් -වැඩසට -##චනය -ජනප්ර -##ග්රහ -ගනී -##ess -වනු -නාට්ය -බැවින් -මිලියන -##ගැනීම -##ac -ව්යාපාර -එරෙහි -000 -දායක -##ාර්ථක -by -මස -වට -was -ප්රමාණයක් -සියවසේ -##ලිම් -විනාශ -ජනා -තැ -##තියක් -තරඟ -##යකට -පරිසර -ඉදික -එන -##මයක් -එකම -##න්ථ -ශිල්ප -නගරය -##සල -පිල -සමාගම -තමා -මහතා -ඉවත් -##නුම් -ඩි -com -දිනය -නියෝජ -##un -##her -තෝරා -##වීම් -මුළු -##ෂ්ණ -##ධක -පන් -පිහිට -මෙහිදී -විශේෂයෙන් -හොඳ -##චල -තහ -පදනම් -වැට -කර්මාන්ත -ඇතුළු -##ෝට -##ver -##ies -භාග -##ාවි -දැඩි -##ක්ෂි -##බැ -##ච්ච -චන්ද්ර -##කයා -වුවද -පැරණි -චිත්රපටය -මෘ -යි -##ාශ -##විද්ය -##ොහො -හදුන් -සතුන් -##නුවර -දෙදෙන -ඇස -##හ් -නාමය -නිදහස් -ග්රන්ථ -රූපවාහි -##ේද -ඇතුළත් -##ගා -that -##හී -##මාව -##සව -wh -ස්ථාන -##ියේය -බලපෑ -පරමා -ගණන -ඉන්දියානු -##ain -උපා -##සන -රටවල් -තිර -ඩො -##ak -යයි -මග -##av -##කාලීන -පූර් -භාර -ධර්ම -##පැ -සාහි -##ෝල් -##මෙන් -තවද -මාධ්ය -##ලයේ -##ණික -ගීත -##ජන් -සෑ -අනෙක් -##හල් -සලක -##රදි -ඔබ -බො -##ලව -##ජී -##යන්තර -##ංශය -##දාන -ජනාධි -##සිං -ගල් -##ලක් -ඉංග්රීසි -විද්යාඥ -සූ -සිටිය -පවත්වා -##se -භෞ -ගිවි -##ab -##නයන් -##රිණි -භාණ්ඩ -පරා -ප්රහාර -##ලෙස -##සාන -උපත -##තිර -යුද -##ate -දත්ත -අවසා -##oc -##කොට -##තියේ -ඔවු -##සික -##if -##ත්යන්තර -##මී -පුවත් -සභ -##යුම් -##කඩ -මී -මිනිසුන් -සාහිත්ය -##ලත් -##පිට -ඉස් -##වාදය -සමී -යුධ -ප්රාදේශීය -පිලිබ -යුක්ත -යුරෝප -ජූ -##ථි -මෘදු -##කුණ -විකාශ -##ශී -##නයා -වලදී -අධිරාජ්ය -වර්තමානයේ -##යයි -යෝජ -##වරු -##වීමේ -තිබෙන -##ත්වයට -පෞ -ආදී -ජාත්යන්තර -##රට -##ෛල -කී -මුහුණ -සටන් -##ud -සතු -##යකින් -##ඳි -ආශ්ර -පහළ -සල -##ap -අඩංගු -තන -එමෙන්ම -කිරීමෙන් -වායු -බී -##ස්ත්ර -ගා -ලිංගික -තීරණය -##යෙක් -##ard -අවුරුදු -are -ලැබෙන -##සීම -##නයෙන් -ඔස්සේ -හින් -පම -සිතුව -##නිමින් -කලාප -නිකුත් -පළම -අතීත -අර්ධ -##ts -##ඩ්ර -රැක -##ගැනීමට -සුළු -ලෝකයේ -දෙමළ -කරන්න -ස්ක -ආණ්ඩ -##බර -ඇල් -සේවය -ඇමෙර -pro -දෙප -යුගයේ -විද්යාල -හැඩ -ජනප්රිය -කොට්ඨාශ -##ධා -පෙළ -##සුන -ලේකම් -##සිංහ -##ගමනය -නිස -##ගො -නූ -පුළු -##our -මන්ත්ර -දැන් -චී -තාර -දෘ -##යකු -උත්සා -##දැ -30 -##ගම් -##දීය -##ලො -##ඤ් -සාර්ථක -##කීය -කැර -##ජු -##ෙව් -කාලයක් -සත්ව -කරුණු -එකි -ඉතිහාසය -ස්ට -##ොට -පාර -se -කාබ -රජුගේ -භෞතික -##කාංග -සත් -##ෝර් -##ාපනය -25 -##දක් -අවධානය -පට -ඉහල -නාග -හතර -එකිනෙ -##ිකාවේ -අතුර -ප්රමාණ -යටත් -ආගමික -ගත්තේ -රංග -දිස්ත්රික්ක -සර් -##ස්ට් -හිමික -පෘථි -පර්යේෂණ -##og -දළ -සකස් -##කූල -##ගාර -##ුද්ර -උසස් -ගනු -සත්ය -පවා -දියුණු -ක්රියාවලිය -##ිණි -ප්රදේශයේ -##තක -##ංච -සංචාර -##සියම් -තර් -වෙනුවට -අන් -මරණය -අදාල -ඕන -පැමිණි -ඉන්දියාවේ -තනි -##චාර්ය -කොටස -අවම -##ගහ -##තිහාසික -තිබු -දශ -පුළුල් -##ෂණය -##ීමක් -හඳුන්වා -උෂ්ණ -පටන් -සිදුවන -100 -රටවල -##ුරින් -කඩ -ඇමරිකානු -කියා -##ාවෙන් -එන් -අධ්යයනය -##ද්රව්ය -මිල -තත්වය -ඡාය -##මිනි -##ity -##දක -මතු -රූ -කොටසක් -සෘ -රජයේ -බැඳ -පාර්ලිමේන්තු -තරම් -සියළු -එහිදී -භි -පහසු -මැද -##නයි -ශ්රේ -සේවා -මෘදුකාංග -##මනා -මුද්ර -චීන -##පී -ප්රසිද්ධ -##සං -ග්රී -අධි -විද්යාලය -##රිය -නාල -මෙයට -##ල්පය -යුත් -ව්යවස්ථ -##ගී -##rom -යැ -##නො -##ර්මය -ශක්ති -ස්වර -su -##ලේෂ -##ප්ප -ඊජි -ජු -පන -##සය -en -##ාරූප -##ld -සමයේ -ශක්තිය -රජය -##යෝ -එකතු -ලක්ෂ -එරෙහිව -ආකෘ -කාර -මූ -##ric -##ම්ස් -නිව -තබා -##යෝජ -කිරීම් -##කරු -##දායික -ලබන්නේ -නිෂ්පාදන -ආකාරයට -##්රිය -සාධක -##ස්ථාන -තුළින් -193 -ජි -තුන් -ස්ත්ර -දරුවන් -දැම -රාජව -සම්බන්ධයෙන් -සැලසුම් -##මුඛ -ක්රියාකාර -ex -මැතිවරණය -උත්සාහ -චල -සහභාග -කණ්ඩායම් -අංක -සුර -##ටර් -අතරතුර -මල් -මනෝ -##ූහ -කෙරිණි -දැක්විය -සින -ගොස් -ඉදිර -##බෝධ -##විල් -##ිතව -තුන -##ට්ලර් -තෙක් -ගම් -කලේ -පද්ධති -ධා -පොළ -##ැති -##ටම -හිම -අධ්යාපන -##කයේ -##කෝ -සමත් -දෙවියන් -විසිනි -සංවර්ධනය -ඉක් -##pe -##ිකට් -රූපවාහිනී -කෙරෙන -##ක්රමණය -ආයතන -සම්පූර්ණ -ආදිය -##වෙන්නේ -##ාන්තර -සංඛ්යා -හිට්ලර් -##සුම -##පේක්ෂ -br -##සිර -තැබ -පත්ර -දුන් -වූහ -ප්රංශ -##නායක -සිත -##ෑන් -දුම -කළහ -##වික -##ැල් -##වරයා -ප්රදේශය -බර -වර්ෂයේ -අන්තර්ගත -මැයි -##ුරුෂ -ඉන්දියාව -නූතන -21 -##ත්න -තිබුණි -අගය -දැනට -ඔක් -මධ්යම -බුදු -රෙ -සියල්ල -පහර -ගැනීමේ -##යුර -පුහ -##ive -##කල්ප -ජනයා -දීම -යෙද -ආසන්න -ආදි -##ේල් -22 -##තෘ -මුදල් -ගෘ -සූර් -පරිවර් -ඡායාරූප -භික්ෂ -ගෞ -ආරක්ෂා -නිලධාර -අවස්ථා -##ඤ්ඤ -විද්යුත් -##වුරු -##ang -වේද -ඓතිහාසික -##රය -ලැයි -##ෙල -ප්රදර්ශ -කිහිපය -wik -මාර්ගය -ඉලෙක් -උදාහරණයක් -නිවැ -##යන්හි -##කර් -සැලකිය -##ණා -ග්රහ -##මානය -බැල -හමුදාව -නිළ -රාජකීය -පේ -පැතිර -අවසාන -මාර්තු -පෙන්වා -මන්ත්රී -චෝ -##ම්ප්ර -ව්යු -භාෂා -##ඹුරු -ක්රිකට් -කොට්ඨාසය -හී -තාක්ෂණ -ඉලෙක්ට්ර -##ළුව -ඉල්ල -##ිතය -##ාරා -මන -අපේක්ෂ -පීඩ -සම්මත -සංඛ්යාව -බු -##ෂා -##ical -ගොඩනැගි -දිනදී -ඊජිප් -මව -සපය -##tt -වළ -එස් -192 -අවි -##දුම් -##කයක් -නිරී -ඉහත -##වෘත -වංශ -ශත -පැන -පාරි -##ual -##ගිය -##පසු -ගුරු -ඇල -අධ්යාපනය -ආකාරය -පස් -##ෙහිදී -##වේද -බෙදා -අම් -විෂය -එමගින් -හමුව -බිඳ -##ීකරණය -අතරින් -පිණි -ශර -විද්යාවේ -පැවත -දක්වන -##හසු -##ine -අක් -##ශේෂ -රැස් -උඩ -පුරුෂ -##ස්ම -යුද්ධය -රසායනික -ආදාය -වේග -සන්නි -කෙන -##ල්ස් -යුගය -##ich -##ගෙ -##ක්ස් -දැකිය -සංකීර් -කල් -නිම -##ද්ගල -ජනගහ -වගා -සුදුසු -ඝා -ට්ර -අතින් -##චන -ප්රව -භාවිතය -සියවස -##ill -සංකේ -වනුයේ -දිස්ත්රික්කයේ -දා -##තිරි -කළු -pl -##ලිස් -තත්ව -දුම්රිය -##ංජි -හැදින් -ජනාධිපති -ලී -##කිරීම -කෙටි -තාප -රාජධානිය -වනාන්තර -මිනිස් -##සියන් -##ද්ද -පාලන -සෛල -##වරණය -මොවුන් -ලාංක -සීමා -##රළ -අරමුණ -අනා -මෙවැනි -##ද්ගලික -සබ -##න්දේ -අක්ෂ -##ක්ති -වන්නට -කථා -##දුරටත් -##ේප -සටහන් -ඕනෑම -##දුරු -##ial -##තාවක් -##ost -කණ්ඩායම -කරුණ -විදුලි -අඩි -වැඩිම -කම් -ඝන -##වක් -##ස්ට්ර -අවබෝධ -කුම -##ore -පමණි -ඇයට -##ant -##ෝස්තු -අවසානයේ -##ත්ති -මිනිසා -St -##්රා -ආර් -සංස්කෘතික -##ලික -##ගුණ -##කිය -##දින -උදාහරණ -හයි -##ුම් -එකල -මෝ -වැළ -##art -##සෝ -සාපේක්ෂ -පෞද්ගලික -##වහන්සේ -වුයේ -ආයු -සදහන් -ඇතිවන -භූමි -වාස -ෆ්ර -##ත්තා -##කේ -වෙමින් -කතාමා -යෝජනා -##ew -##ෙකුට -රතු -මුලින් -මිශ්ර -24 -##ාවලිය -කරග -නගරයේ -ඒවායේ -බේ -ප්රකාශයට -සමස්ත -ත්රි -එවැනි -වටා -##රුම -##වන්නේ -##ත්යා -Ch -අඟ -##ුම -##ගන් -සැම -ද්වි -සෞඛ්ය -වො -විවෘත -මණ්ඩලය -රන් -කරගත් -වෙතින් -හැසිර -සැලකේ -ජීවත් -වුවත් -මුහුදු -වර්තමාන -ජාතීන් -සූර්ය -##ටෝ -ව්යාප්ත -from -අතුරින් -මෙහෙයුම් -##ත්වන -වෙබ් -තාක්ෂණය -පූර්ව -තැන් -බාල -##ලෝක -නිවැරදි -දිගු -ගෘහ -##ටුම් -පාසල් -හින්දු -ලෙසද -##ෝගික -ටී -කරගෙන -සාම්ප්ර -මහජන -මෑ -පිණිස -##හත් -##pp -මරණ -නර් -ප්රශ් -අගෝස්තු -වස්තුව -චරිතය -##ොස -##ib -කාණ්ඩ -යානය -ඉටු -මම -##ර්ණ -ස්ප -කින් -සැපය -##ට්ස් -mat -ප්රමුඛ -##ණයෙන් -ආරක්ෂක -ප්රතිපත් -වින් -සිවිල් -විරුද්ධ -අණ -මුස් -කලාව -ආණ්ඩු -##කදී -ලැබීය -තවදුරටත් -##ාවිද්ය -පිලිබඳ -සැප්ත -##වුම් -කඳු -විශ්වවිද්ය -##තරම් -අයිති -##දෙස් -##ph -##ian -පස -2007 -කිරිම -සිතුවම් -උළ -##ust -ඡන්ද -අට -##ගෝල -ශරීර -##නුම -ජනප -අල් -නොවැ -රාජ්යය -මාර -##හේ -සමාජය -තො -තී -දුර් -##qu -සම්මාන -50 -ඔක්ත -රැජි -##බු -ඉංජි -II -##all -සතර -ගනිමින් -##සර් -##ංචි -සිහි -ජනවාරි -අප්රේල් -ඉංජිනේ -##දිග -සැප -ලිපි -ඉතිරි -ඇතැයි -කාම -##කරුව -සෙන -##ඹු -ආධාර -##තට -නැමැති -වෙති -අමා -##පන් -##ණන් -##ment -##පල -ප්රතිකාර -තත්ත්වය -ඉස්ලා -ජපා -##ටිනා -සිදුවේ -නිශ්ච -කත -අභ්යන්තර -සුවි -තුලින් -මාලි -##ගැන් -##ක්ෂේප -ඇතුලත් -හොඳම -නුවර -අක -විශ්ලේෂ -##පික් -කොරියානු -පළාතේ -##පර -##තියට -සිටියේ -##තුවේ -191 -##ඩියෝ -ලැයිස්තුව -රථ -##gh -##ාලි -පෘථිවිය -ශුද්ධ -සභාව -හැඳින්වේ -සිරි -ප්රේ -සාක්ෂි -2008 -23 -අනාව -කිසිදු -##ියක -##හුව -මෙහෙය -යුරෝ -ජනපදය -##ියෙන් -බිම් -කාන්තාවන් -##ඩුව -පිරිස -බලපෑම -පෙනී -##කථ -කෘෂික -වීමේ -පරමාණු -##ාවල -උදෙස -මුස්ලිම් -##තක් -##වතුන් -සැළ -පුරාවිද්ය -##භාවය -ලෙ -කාලීන -රුස -##igh -ඒකා -ගෝල -කිසියම් -te -දෙව -කැන -කුල -##ell -මරා -පරාජ -ශාස්ත්ර -බලපෑම් -පාසැල් -අනි -##ect -සාක -පිරිසක් -ශිෂ්ය -ඉදි -වස -චිත්රපටයේ -පිළිවෙ -ස්කන්ධ -මන්ද -not -ජෛ -##සාර -අනුගමනය -##ණයට -සැප්තැම්බර් -##age -අනුරාධ -දසුන -වෙතත් -ශබ් -දැකගත -ව්යාපෘ -වටිනා -පරීක්ෂ -##දාළ -අවස්ථාවේ -##ණයේ -##ුන්ගේ -##ාන්ත්ර -වෛර -වයස -ඵල -දැර -දේශීය -##ෙකුගේ -ප්රවාහ -සැබ -##ොස් -ඇන් -තබ -කුරු -ජාල -ඩී -##ng -සිදුකර -සන්නිවේ -##ෂි -විවේ -##per -##මානු -##ber -එකතුව -ස්වරූප -අස් -අල්ලා -විශාලතම -රාශ -දර්ශන -##ෂධ -සිදුවූ -පැවැත්වුණු -පුත්ර -##ear -##වෙයි -ශාල -##පූ -##ිරු -ක්රියාකාරී -උපකරණ -##ition -රැගෙන -ධාර -##ීමත් -ගෞර -උදෙසා -වීමෙන් -උන් -පෙබර -සරල -එව -බන්ධ -##ත්වයෙන් -තෙල් -ජෝන් -වීර -වැඩසටහන් -##ෙය -at -##මක -##න්තුව -ගණිත -පූජ -අසා -පාඨ -දෙපාර් -එත -##ිකයන් -තරංග -පත්විය -විහාරය -අනුරාධපුර -දූ -ප් -##සියාවේ -ජූලි -##ඩය -##ුරා -සමු -පවස -සාගර -කොළ -තවමත් -ලැ -##රී -එල් -වෙරළ -##වීය -දිනා -##ෝදර -##වට -ඇද -මස් -බාහිර -##්යා -පිලි -මහත් -රඟ -මෙලෙස -දිශ -සිදුවිය -##ොල -ප්රාන්ත -තාරකා -මින් -අදහස -ධන -ප්රචල -##විධාන -දෙසැම්බර් -දීමට -විනි -කඳ -##බාහු -##ාවක -ch -නයි -හානි -ජනපදයේ -එංග -##ov -පිළිබදව -##ඥා -##ure -##ද්වී -සාම -සහභාගී -##ක්රමණ -us -කළමනා -සෙන් -ප්රතිසං -සාම්ප්රදායික -පරිවර්තනය -27 -ගිනි -පුරාණ -##භා -##තනයේ -##ංකාර -##ated -ලෝහ -අයුරින් -විරෝධ -ජර් -##ලන්තය -චු -##ියු -##end -##ික් -##ත්තර -ගත්තේය -ආවේ -සම්ප්රදාය -##යාට -##ංගල -##pt -ගල -ගංග -##සැ -ප්රජ -එයින් -##දුනා -රේඛ -සංගමය -##ම්ම -##්ව -ඉන්දු -විකාශය -ඇයගේ -පෙබරවාරි -##ලාශ්ර -##edia -##ුණා -ප්රබල -##ටික් -which -කරා -සම්පත් -අතිශ -ගණනාවක් -යහ -පෙන්නුම් -දර්ශනය -##ort -##වාසික -සතුව -නිව් -ඉරා -කොන් -පරිපාල -ප්රතික්ර -2006 -පැවතු -##ord -බොහො -නොමැ -සංස්කෘතිය -##ල්ලේ -රජතුමා -##දීමට -##ගෝ -##ින්ද -යාමට -2009 -අන්තර්ජ -විජය -නොවූ -සහෝදර -අපි -මයි -බලන්න -කැටය -ජර්ම -##ere -##පෙන -රාජවංශ -කිලෝ -නිදහස -##000 -ක්රමයෙන් -2010 -##යන්ගෙන් -##land -##ුණුව -අලු -##ිකව -##ජාතික -නිෂ්පාද -විචාර -රචනා -ඖෂධ -##ත්රා -අරා -##ෆර් -form -න්යෂ්ට -මධ්යස්ථානය -අරමුණු -##ලන් -ගැනි -එළ -##මති -මැන -සන්ධ -##තාවයක් -දක්වයි -##ttp -ආලෝක -කෞ -comp -බර් -කර් -ප්රචාර -යුදෙව් -කුර -සුවිශේෂ -##මීට -##විනි -ඔක්තෝ -##ub -යානා -හදුනා -##ධිර -විභ -තුනක් -http -it -##ාව්ය -##නිසා -org -දූප -##ොල් -##ඳුම් -කුමරු -උද්ය -##න්දු -ඕස්ට්ර -තරුණ -ග්රීක -විදේශ -##ියාන -##ලියම් -පැවස -##ාග් -2000 -ක්රමයක් -තනතුර -ඝාතනය -ප්රවේශ -හු -මහනුවර -##රුම් -අවස්ථාවල -##ගොඩ -un -දක්ෂ -##ther -යාන්ත්ර -කෙරුණු -ගණනක් -##ලිම්පික් -ලු -##ංස -ක්රිස්ත -සාකච්ඡ -අස්ථ -##යිඩ් -නොල -##තල -විශි -##ීමේදී -26 -##වාර -පිවි -සංකේත -##හිමි -ලැබු -##ory -පිරිමි -සියලුම -ඔලිම්පික් -මානසික -##ave -උතුර -බදු -යන් -විසි -වෙනස්කම් -ලැබුවේ -ත් -ප්රයෝජ -##යෝගී -their -අලෙ -උෂ්ණත්වය -##ගාම -වූවා -භූමිය -බුදුන් -කුමාර -පහසුව -චක්ර -යන්ත්ර -##ත්තු -ප්රතිශ -මතය -පෘතු -සංවිධාන -රඳ -වචනය -ජයග්රහ -සොහ -##රික -##ායා -##ීන්ගේ -සිරුර -##ාවා -රෝම -අවට -එවිට -##වුර -විහි -2005 -ලියා -කුමර -##ෙට් -##ේර -ප්රතික්ෂේප -##ary -සහාය -ඔවුන්ට -සංකල්ප -සජී -කිරීමයි -දේවාලය -28 -##පතිවර -##ket -##ීමයි -අගනුවර -##ිලි -##ධික -##දානය -##ඩෝ -##ඟා -##මැත්ත -මීටර -ලෝකය -ප්රතිසංස් -අහ -##ree -සමහරක් -රුධිර -පුද්ගලයන් -190 -මැතිවරණයෙහි -සොහොන් -කරති -වසරේදී -අපහසු -පියවර -ආවරණය -##නාත්මක -##ong -ගණන් -වන්ද -වගක -##වස -ආක්රමණය -ප්රචලිත -නු -##රූප -ගැහැ -අදාළ -##කී -##ක්ෂක -ත්රස්ත -සංයු -පැළ -දෙනෙකු -කේන්ද්ර -ජාන -වරක් -පිර -ලිපිය -අසල -තහවුරු -ඩොලර් -යළි -හුව -##ල්ඩ් -ගැල -1960 -සඟ -නිතර -සම්මානය -ඉත -ඉල්ලා -##20 -වරට -සිංහ -ඕස්ට්රේ -##රැ -##රිම -##ප්රා -බෝම්බ -ගාය -සිදුකරන -##රුව -සංකල්පය -##ලන්තයේ -පාද -මණ්ඩල -##බද්ධ -##ry -##rou -සංඝ -බෙහෙ -##so -##ක්ඛ -##යෙනි -189 -තිය -##පොර -##යිට් -එකඟ -දකුණ -ස්වය -සිනමා -##රේ -වෙළෙ -අනාගත -Ind -##ok -##ක්ය -රෝගය -සංස්ථ -##ජය -##ඩර් -අන්තර්ජාතික -හමු -සමීප -සලකා -සදා -##පර් -ad -එබැ -දෑ -##ීන්ට -අපරාධ -##ction -##ence -##rit -##ස්ගේ -##න්නන් -කොට්ඨාස -නොවැම්බර් -නොමැත -##නන්ද -ප්රජා -##දනා -##ඟින් -සංඛ්යාවක් -##ධර්ම -2015 -Th -##ණිජ -##cl -කලාපය -##irst -පරීක්ෂණ -##ations -සංකීර්ණ -##පාදනය -පහසුකම් -were -2012 -නාව -##ෝන් -ඒකක -අවුරුද් -##ගනු -##සල් -සහිතව -පෙනේ -le -##ff -මුහුද -ගබ -##ge -ප්රතිචාර -##ර්ඝ -රටේ -40 -මත් -##හට -##බ්බ -දෙදෙනා -අන්ද -බහුලව -##යන -සිල් -භූම -##ියානි -ලංකාවට -නිසාය -ඉගෙන -වහන්සේගේ -පළමුව -##ast -##ත්තිය -විකිර -සොහො -##aw -##ල්ලක් -පසුකාලීන -විශේෂිත -Un -ගස් -හෙයින් -දෙනා -හිට -##වූයේ -ඔවුහු -##ෙමින් -##ච්චි -හුවමාර -එම් -##ෙන්නට -සංර -##ank -ක්රියාකාරකම් -නවී -හිත -##කයෙකු -දුර්වල -එබැවින් -විලා -භාවිතයෙන් -හැඳින්වෙන -##du -ගියේය -##ide -##ථමික -උත්ස -කොට්ඨාශය -වෘත්ත -##ාවර -මීටර් -##ipedia -සබඳ -ස්වයං -##iz -කැප -අණු -වචන -සම්භ -විධි -##ස්ක -සැත -නියෝජනය -##oun -ලේඛන -කතෝල -29 -sh -නේ -ඇත් -##මුන් -ඉන්දීය -මූලද්රව්ය -ක්රිපූ -මොහු -තහනම් -ජෛව -පටි -බස් -##තියි -ප්රාථමික -##ටික -##ඟු -##කාරක -##ational -විද් -වියද -##ාපිත -පෝෂ -දෙවි -##ame -##පුම් -##tern -##ාන්ත -##පස -තිබිය -සුළ -ලාංකික -විප් -##ූයේ -ලකුණු -අවකාශ -##ans -ඉංජිනේරු -ප්රවේ -තත්ත්ව -දො -වාසය -##ලූ -කෞතු -##ක්කය -කියන -##වර්ධන -හෙළ -ආරක්ෂාව -ගෙන් -2014 -ඔහුව -හරි -##භය -පුහුණු -මනු -##වද -සමය -2011 -පොළො -කැටයම් -##වක -##වයක් -##ස්තා -සැලකි -දෙයි -පූජා -ඉතාමත් -තාක්ෂණික -පින් -##50 -2004 -හැඳින්වෙන්නේ -උත්සව -ජර්මන් -විකි -සාපේක්ෂව -##ාවූ -සංයෝග -##ෂය -මෙමගින් -ටෙ -උරුම -##ප්පු -හඳුන්වනු -##වරුන්ගේ -බුද්ධි -විශ්වවිද්යාල -##ශි -කරන්නට -##ට්ටු -බලාපොර -ඔෆ් -සෙස -පක්ෂය -උපන් -සංගීතය -ස්වභාවික -සිටියේය -ප්රදර්ශනය -අයිතිවාසික -අමාත්ය -කාර්මික -##නියි -විශේෂයෙන්ම -##ish -වර්ගීකරණය -මෙරට -පවත්වාගෙන -හයිඩ්ර -##ේදය -නිවාස -නොද -##වලදී -වාර්තාව -he -##ණයන් -##ome -ඉන්පසු -sc -##ාකාර -වීමත් -තැනැ -res -කාව්ය -ජපන් -සමාගම් -##නයේදී -පරම්ප -##නුකූල -##ර්යෝ -මට්ටමේ -බොහොමයක් -ධර්මය -සන් -හවු -##ප්තිය -බැවිනි -යෙදු -හඳුන්වන -all -Eng -පවුලේ -තිබිණි -පාෂා -අධ්යයන -first -##ිරිය -කිරීමේදී -##ශීලී -කතෝලික -කුසල -දියණිය -අතීතයේ -හද -##ous -##රාව -අපට -රාම -##ාහ -##ass -වාර්ෂික -නිරීක්ෂණය -ගම -ගුර -##කැ -ගෝත්ර -ඉදිරියට -##දායක -##බන්ධ -##ියෝ -පරිමා -කෘති -කලේය -ser -මෙයින් -ක්රිස්තු -යුරෝපයේ -have -ටයි -ඉදිකිර -සිතිය -හිස -ගොවි -මූලාශ්ර -උණු -සති -##ින -බහුතර -ඉතිහාසයේ -වන්න -##cc -දැක්වීම -දුරට -තොරව -මතුපිට -##ගල් -නියු -ජීවිතය -නියෝජිත -ළමා -දෙයක් -ඉඩම් -ප්රතිඵලයක් -##ාංග -විධ -##විණි -පරිභ -අනුපා -##ස්ටර් -පදය -1970 -ගිවිසුම -##ult -කාබන් -රැජින -##ධීන -අක්ෂර -බණ්ඩ -##ork -පිහිටුවා -ව්යුහ -ශතවර් -##orld -සමාජයේ -ඇමෙරිකානු -පොත් -188 -2013 -යනා -##ළුවන් -##ුවල -අවසර -බොහෝවිට -කෘතිය -තමන්ගේ -ආශ්රිත -##විර -##බව -##න්දා -දිවයි -අලංකාර -තැන්පත් -කක්ෂ -ගන්න -##වේදී -සමූහ -##දේශය -cont -##බාධ -හඳුන්වයි -##යක්ෂ -##ාරිත්ර -හොඳින් -කිරිමට -වෙස -##වුණු -##ඝ්ර -පුන -බිරි -##ක්තිය -පවුල -ස්වාධීන -##විලි -මැදි -වාණිජ -ස්වාභාව -තෙර -පාර්ශ -නොලැබ -##ෑම් -ස්පා -##වියට් -න්යාය -##ire -ශ්රි -කාන් -කෞතුකා -##ෙන්න -##යෙන්ම -බවය -දුටු -දෙපාර්ත -ජැක් -මූල්ය -##ie -Al -බුදුර -නිශ්චිත -කන් -පෙද -ස්වභාවය -##හ්ම -නොකර -තුලදී -1990 -සංවර්ධන -##දැක -අයිතිවාසිකම් -ප්රතිමා -##ice -##තුල -##සාද -පෙරම -ගණනය -ජෝර් -cl -වනවිට -පුරාතන -##පොළ -දේවාල -පලා -කාලයේදී -පොර -##ෙප් -##ොත්තු -පරාජය -ප්රකට -පවතියි -අවස්ථාවන් -ආකාරයේ -රාජධානියේ -දෙපාර්තමේ -තෙවන -ආර්ය -තරු -පදි -##ru -බණ්ඩාර -ඇප -ප්රෝට -කෙළ -As -ආචාර්ය -##වේදය -භාවිතයට -has -##මනින් -ලබාගැන -පුද්ගලයින් -ශබ්ද -අරු -නෑ -##කෙර -රෝමානු -වෙළෙඳ -දීර්ඝ -දුන්නේ -හමුවේ -කතාමාලාව -ක්රිස්තියානි -##act -ලෙසට -ක්රමවේද -##පළ -තායි -ඉලක්ක -##ෂ්ප -පාසල -##ack -can -ගවේ -වාර -චීනය -සෙසු -ගරු -අයිස් -##ටීර -##fer -දැක්වෙන -මට්ටම -තුව -ෆෙ -වේගය -ග්රාම -##ase -පුද -දැනුම -හිමිකම් -ජාතීන්ගේ -කැබ -දොර -##ටින් -දැක්වේ -මුලින්ම -ආක්රමණ -එළි -##erm -##ාගාර -සේනා -හෙළි -පදනම -රසායන -wiki -ප්රතිපත්ති -##ජනය -##ach -##ම්භක -ඔක්සි -60 -##රිස් -නොති -සෝවියට් -ප්රමාණවත් -දමා -##පෙ -පසුබි -හැඟ -පවුල් -ශක්තිමත් -ar -ඩේ -බසින් -##we -2001 -යන්නයි -හිටපු -##ජොං -අප්රිකානු -පල්ල -##ම්බා -##wo -ප්රදේශවල -wikipedia -##බෝ -##ගන -##pl -එකකි -යෝග -##මාර් -##ens -කැමැත්ත -හන් -##මයි -නැතහොත් -ස්ත්රී -සහය -සම්භාව -මුලික -එවකට -අළු -පෙනෙන -සැබෑ -කහ -කන්ද -මට -##වම -අරාබි -ධාව -##මාර්ග -##ind -##ක්කේ -අයිතිය -තල -යූ -මහාචාර්ය -අතරට -එතරම් -this -ගැටළු -##යත් -##ral -සිහ -රැසක් -##කිරීමට -සූත්ර -ගී -##ඬුව -##ෝජනය -##වකාශ -##ගිරි -##භි -also -##res -පද්ධතියක් -පුරාවිද්යා -sy -ගඟ -##සම් -##සියේ -ලෙසත් -##orm -දෙසට -ඉගැන් -පෑ -##ඩන් -##ඹුර -කලින් -ඇතුල -පැවැති -ස්ථානයක් -එකිනෙකට -ගන -මල -##රල් -ටැ -ලන්ඩ -පිටු -ඉලෙක්ට්රෝන -අශ් -ව්යවහාර -##NA -සමගම -උපරිම -##වීමෙන් -##ුනු -##පක්ෂ -අඩවිය -පළමුවන -විචල -ප්රකාර -කමි -##සිල -යුතුව -එක්ව -ක්ෂුද්ර -උපාංග -නාගරික -whe -##වමින් -##ගනී -##වාන -පෘෂ්ඨ -තේරුම් -අත්ය -31 -ලන්දේ -හඬ -වැල -ආරෝප -කටයු -නැවතත් -අනාවරණය -ab -##ටන්ගේ -his -රහිත -සුන් -##ාත් -පරිශී -##ely -සංග්ර -රයි -සිටින් -කුළ -පුද්ගලයා -1947 -විද්යාලයේ -##පිරි -##ලෝකය -කාර්යය -පළාත් -නාවික -An -තද -නාය -##ond -1989 -පාරිභ -##ියාගේ -මායි -දියත් -ආසියානු -මාලිග -අහිමි -පෝ -##තන් -##බෙ -##ace -##සිල් -වීඩියෝ -බොහෝමයක් -ඇයව -##දානම් -##යෙකි -##පියන් -නිශ් -##ල්ලට -ගොඩනැගිලි -එතුමා -##ාපති -පුස්ත -ශිව -නමැති -##ress -පැය -2016 -පරාස -ගබඩා -##ස්ය -වැඩසටහන -##වශ්ය -බලවත් -##ight -තුරු -මනා -හෘ -##කමක් -##ාවෝ -පැවැත්ම -##මෝ -##භූ -කිහිප -සත්ත්ව -ඉදිකර -හදුන්වා -භාජ -ස්නා -බැහැර -වීමයි -වර්ගයේ -##දෑ -දිවි -වර්ෂයේදී -ගති -##තෙක් -##ue -ඔවුනට -ඇල්බ -ජනාව -විකිරණ -විලාස -Re -අලි -##්රැ -නිරත -යුරෝපා -##ර්ස් -නොය -උපදෙස් -හිමියන් -ag -දිවිය -නවක -##ලේඛ -ත්රික -ඊළ -##න්ස් -විද -##රාල් -ජනර -නොහැක -වස්ත -##සෙ -සිසුන් -ජ්ය -##දවා -##one -ව්යවස්ථා -දරා -සාක්ෂ -වටහා -ඉව -දස -##ැස් -උපයෝගී -ගත්හ -වහන්සේලා -ලාභ -##ිණ -80 -කුමක් -##කයකු -අත්දැක -##රුවන් -##පථ -තුමා -දිව -පිලිබද -මරණයට -භු -##ණයෙන්ම -පනත -ලෙසිනි -දක්වනු -අතට -ගර් -##ජේ -ආයතනයේ -අධිකරණ -ජර්මනිය -වැරදි -උපකාර -ආයුධ -ආකාරයෙන් -ශාන්ත -පවසන්නේ -ත්ය -##විඩ -##පාද -අධ්යක්ෂණය -දෙකම -##oll -පැමිණෙන -පුත්රයා -පහසුවෙන් -සමූ -සැර -සම්බන්ධව -පිටත -කෙසේන -1980 -සයි -##තිමත් -නිල් -පොල් -චීනයේ -අන්තර්ජාල -ඔක්තෝබර් -කළා -පාදක -ගෝලීය -ගුරුවර -උස් -##මිත -නැව -යුරෝපීය -විශිෂ්ට -කාන්තා -පණ -තිස් -##ද්වීප -සැතපුම් -බිරිඳ -but -කව -##ගාරය -##සම -ප්රි -##ance -play -ඕස්ට්රේල -ඇඟ -බවක් -සිදුකළ -බහුල -සීමාව -සාකච්ඡා -කල්ප -බයි -##ගැබ -##ඩී -නැග -##ions -එකට -වගේ -ග්රහල -##ක්ම -##ign -ආකෘතිය -කතාව -දැව -බලපා -##පොල -ආලෝකය -කැල -මොන -ක්රීඩාව -ත්යාග -##බුද -දශකයේ -පීඩනය -මනුෂ්ය -##ලන -කිරීමක් -ව්යාපාරය -සටන -න්යෂ්ටික -හුද -##සියානු -##ward -##තුම් -මිත්ර -187 -මුදා -##ධාරණ -චෝදනා -පණි -ප්රිය -සිටී -උපදේශ -2003 -186 -ජනාධිපතිවර -පුස්තකාල -ph -##වැන්න -අර්ථය -ස්පාඤ්ඤ -මොහො -##කාව -##ජුව -##ඳුරු -##නයෙහි -##්යය -කෙසේනමුත් -##දෙ -##ශාල -##olog -one -සිද්ධාන්ත -විද්යාඥයින් -ස්වාභාවික -සංගම -##ක්රීය -දත් -##ෑමට -පත්වූ -##වාදීන් -ගීතය -සොහොයුර -other -වෙනි -##වීමක් -මුල්ම -ද්රව -ප්රශ්න -ඥා -හමුදාවේ -බෙහෙවින් -මංගල -වෝල් -##ද්දී -ස්ථාපිත -##ියානුවන් -මර් -##තාවයන් -මාසයේ -නර්තන -##මස් -##චිත -සම්බන්ධතා -දෙකකට -ගොඩන -දිගටම -දහම -සෙල් -##තෙ -##ile -##ඩාව -##ාර්මික -they -2002 -උඩරට -කාමර -ජැක්සන් -ඇඳ -කීර් -##ah -විෂ් -##hes -##ates -ලැබී -##සරික -තිබුණේ -ස්ථානයේ -##ෆි -##ෂ්ටා -වෙනස -##මන්ත්ර -පිහිටුවන -චලනය -dis -දෙනු -ජනගහනය -මගේ -හිරු -##දන් -##පිර -කිරණ -##ත්වයේ -##ලාභ -අනන්ය -ස්ථිර -පූර්ණ -##රෝ -ස්ත -පවත්වන -ආරම්භක -පාරිභෝගික -අශ -බ්ල -හය -සුල -දිස්ත්රික්කය -දායකත්වය -කර්මාන්තය -man -හදි -රාත්ර -බෝධි -ශු -උන්වහන්සේ -ජනාවාස -ආදර -##ිතම -පොලිස් -ශිලා -අභ්යවකාශ -##සයිඩ් -තර්ක -ඒකාබද්ධ -සොහොන්ගැබ -වත් -##ound -වර්ෂය -භාගයේ -සභා -කලාපයේ -ඇත්ත -පාප -සිව් -දුක් -තුවාල -500 -පවසා -##ics -##ියේදී -ඇරඹෙන -##හරු -##ුල් -##ood -##ූව -ප්රාය -බැට -තරමක් -ගිවිසු -මර -ලතින් -කියැ -යෙදෙන -කිලෝමීට -##ණී -##ft -කුස -ශ්රිත -නියෝග -ආසියාවේ -##ාවර් -වැලි -හිස් -##දුවේ -Com -two -මළ -කරගැනීමට -##සේන -මිතුර -##ගත්තේ -ප්රාග් -දිගින් -මාතෘ -දැක්වූ -ශාඛ -තීරණ -විශ්ලේෂණය -ශීත -##දාස -පාරිසරික -ගැහැණු -සහගත -##යුම -අඩුව -##ාවන්ට -team -ෆි -පැහැති -උළෙල -දෙවැනි -පවසන -බලප්ර -##out -##ඵලය -උළෙ -එලෙස -රහ -වදන -##ඥයින් -##හනය -##සීන් -##ේරා -##mer -උඩු -##කෙ -##ob -ප්රතිමාව -ප්රායෝගික -සවි -සහයෝග -තිබීම -බලකො -##හැකි -දෙනෙක් -නවීන -##හෝ -##ඩියා -##ංකු -පවති -පවත්ව -ධාතු -ජපානය -ඔක්සිජන් -නොකළ -යහපත් -ලූ -දළදා -සංචාරක -විද්වතුන් -ගං -##ධිය -වික්රම -කිරීමත් -සලකනු -සපයන -පරීක්ෂා -සන්නිවේදන -වෙඩි -නාළ -පරාක්රම -##පේ -දරන -##ula -##ෙස්ට් -ලියන -පරමාණුක -පත -සළ -##වෙන් -##lic -##වේදනය -මෑත -අපේ -අත්පත් -නොවීය -##ose -රාජවංශයේ -බලාපොරොත්තු -part -න් -සින් -##ould -ආණ්ඩුක්රම -im -ne -සිටම -බලන -බැක් -##amp -##ර්ගික -විජිත -##ක්ෂිත -##වරයෙකු -බිලියන -කණ්ඩායමක් -සම්ප්රදා -ඊශ්ර -බෑ -##ey -##නික් -වැසියන් -int -අංශු -දඩය -##ජෝ -විභාග -බිම -සංස්කරණය -සුවිශේෂී -කඩා -ගැන් -##පිළි -ඔස්ට්ර -##ricket -used -Ar -ඇස් -නඩු -නිසි -##ents -කාර්යාල -උද්යානය -ගව -ජීවන -තුන්වන -පවර -ප්ල -යකඩ -##ංගම -බැව් -ශතවර්ෂ -කෑ -ගලා -ඇතිව -පවතින් -එමඟින් -රාශියක් -නට -පුව -##ුල -තිදෙන -##පෙර -ඇතිවූ -##ලිනි -##ath -කාර්යයන් -පවත්නා -පෙදෙස -වල් -##ඛණ්ඩ -නිම් -සහතික -##සිදු -##ite -පුවත්පත -32 -##බ්ර -##ංග් -ඉතාල -ධූර -##ථා -##inal -ගැනීමෙන් -ජීවීන් -පරිපාලන -35 -had -මඩ -##fter -භාෂාවෙන් -ආසන් -භ්ර -රී -අනතුරු -කටු -##stem -පිටපත් -##able -සිල්වා -හුවමාරු -##න්හි -විලියම් -ප්රේක්ෂ -##are -වර්ගය -##ගැනීමේ -විශ්වාසය -ආසා -වක්ර -හර් -##ටල් -##ුවද -වශයෙනි -වාද -ලෙන් -වැසි -ස්ථර -අලුත් -ඇඳුම් -රත් -##ියෝග -##වැන්ත -සොයුර -year -දෛ -පොත -ගැටුම් -වෙළද -පුද්ගලික -මාලාව -නිපදවන -නායකත්වය -##ොසොන් -නර -ශී -සල් -##ටේ -##ුවක -##ාර්ශ -අර්බුද -රාජවංශය -මයික්ර -ජයග්රහණය -දඬුව -වයි -##තන්ත්ර -##ලම -##ෑං -සංශ -##ියාවට -##ings -ප්රතික්රියා -අවය -නැව් -පරිණ -ජනවා -වශයෙන්ම -මාසයේදී -ආශ්රිතව -කවිය -##තයක් -බලපෑමක් -##යක්ෂම -ගනියි -වෙනම -අපේක්ෂා -##නුපා -හිදී -##ඩ්ස් -ගනි -පුවත්පත් -අලෙවි -චික -ශෛ -දේවිය -##ජාණන් -සෘජු -මාව -රණ -##වණ -මාර්ගයේ -ශ්රේෂ්ඨ -ව්යවස්ථාව -Ph -its -චාරිත්ර -දහස් -##ුයේ -##ජින් -සම්ප්රේෂ -වත්ම -##ram -##19 -විවිධාකාර -##වෙල -පං -ලක්ෂණය -##oy -වන්දනා -ඩබ් -ලෙන -##ිතාව -මිහි -අධිකාර -##බර්ග් -භාජනය -Test -ඇට -ඉස -##තිම -සංස -කැමර -Sh -##ක්කු -ප්රච -කරගත -තිබුණු -pre -චා -##ener -ලබාදෙන -පිළිම -##බිසව -##ධාතු -De -##යාන -අපනය -පෙරමුණ -කඩු -මං -##තත් -ප්රස -අධිරාජ්යය -වස්තූන් -අතුරු -බිය -##සිරි -##බඩ -වඩාත්ම -අධ්යක්ෂක -ප්රමාණයෙන් -සිටියහ -ජූල -හෙන් -ප්රවර් -දැවැන්ත -use -##පන්න -සිදුවීම් -වෛරස -අතු -##ුවෙනි -##ිරා -##දිව -රචිත -ප්රභේද -සියළුම -series -ඉර -##තූන් -කිරු -ස්ථාපනය -මණ්ඩලයේ -ප්ලා -චුම්භක -අවුරුද්දක් -දෝෂ -හානිය -සාධාරණ -පරිසරය -සාහිත්යය -World -උද් -ජෙ -##ාවකාශ -මෙවල -##සුස් -වසරෙහිදී -යාපනය -##rad -##ම්බර -පුරාව -##පුරා -සාමාජිකයන් -සර්ව -ඉක්ම -ප්රේම -ආවේණික -බුදුරජාණන් -යුගල -මහාව -90 -ආභ -ආපසු -නඩ -##up -##තුමන් -මැටි -##ධානි -යුව -##හාණ්ඩ -##enc -හැඳින්විය -ජූනි -ගැබ -පෙරදිග -කථාව -න්යා -භික්ෂූන් -ජෝර්ජ් -per -##ොප් -##vel -කැඳ -##ivers -රෙදි -Pro -ආබාධ -ලෙසයි -බවද -##ල්ලු -සුන -පත්කර -ඊශ්රාය -සිත් -##ම්භය -නිර්දේශ -ජනවාර්ගික -පැවර -##ාගත -කි්ර -උත්තර -සම්පූර්ණයෙන්ම -හොර -##ීක -##කයෙක් -අත්සන් -අම්ලය -02 -##රාජ -##වනය -##භාර -##නාථ -නොකරන -වෙහ -ස්ථාවර -කාබනික -ඇලෙක් -##ප්රාප් -ඉන්ධ -තෘ -##ශය -හැක්කේ -දුම් -වාදය -රංගන -දූපත් -තාව -පැල -ලැබිණි -අතිශයින් -He -Mar -ඇන්ඩ -සික -ෆ්ල -##දාම -උපකල්ප -වීම් -වැඩිහි -ඇතුල් -##කෘති -##ime -ලබාගත -වින්ඩ -ප්රජාතන්ත්ර -2017 -ඈත -ටෙස්ට් -මව් -##ee -සම්මා -බලපාන -##ෂ්ටාචාර -පථ -පන්ද -##ගන්න -##ium -##තුංග -වෙනසක් -##ණුම් -දේශපාලනික -අම්ල -රුසියානු -අමර -කූ -මුදු -යේ -හැදෑ -##ism -දුරකථ -ඇමරිකා -නළ -##නල් -##ගර් -කොමි -තිබුණ -කාච -පුරවැ -අවශ්යතා -සියවස් -been -##ොක්ස් -අභ්යාවකාශ -දිනයකින් -පෘථිවි -සබඳතා -උණුසුම් -03 -do -පොදුවේ -sp -දමන -##කුගේ -දුරටත් -who -එකිනෙක -ඊජිප්තුවේ -වේගයෙන් -ගංගා -Aust -more -##මුව -##ක්වා -විනෝ -##ාමී -ශිෂ්ටාචාර -ඉස්ලාම් -නොයෙකුත් -නැං -මුඛ -##ors -##පත්ය -පහල -##කරණයේ -කැරැ -තත්වයන් -බන්ධන -ස්නායු -ජූලියානු -70 -දාර්ශ -වක -##හනක් -##ix -##ුවෝ -##නිජ -අදහ -##නියම් -sex -නිලධාරීන් -වැළැක් -සජීවී -##වන්න -##ියම් -කරනුයේ -ක්රියාකාරි -ප්රයෝජන -##les -කරගන්නා -හැම -සමගින් -නියැ -තෙත් -stud -ටෙලි -කපා -##හො -##ron -නිරන්තර -පාලක -ඇමරිකාවේ -නමුදු -ඔබට -##ount -මෝට -පෙරේරා -1999 -සන්නිවේදනය -එච් -##නිර්මා -සාදා -පවසයි -##ට්ටේ -විප්ලව -බෝග -##සෙන් -##න්ති -##දීම් -##කරණයක් -විසූ -##ough -කාර්යක්ෂම -##over -##කුල -සම්පු -##වර්තන -භාෂාවේ -නියමිත -ගිවිසුම් -අක්නා -වින්ඩෝස් -ඇවි -කවර -##නියා -##බල් -##ේස් -##ියකි -විකල්ප -මැර -කැපී -පැවතිය -අගයක් -අවස්ථාවක් -නොතිබ -මඳ -ප්රවෘ -කරුවන් -සංඥා -රාජ්යයන් -##ධිපති -නිර්ණය -me -නෞ -##මිල් -අභියෝග -පිටුව -භාවය -එක්ස් -##කයෝ -181 -දරුවා -ජේම්ස් -කෘෂිකාර්මික -දුෂ් -##දායී -ගොඩනැග -වෙළඳාම -cons -such -ප්රතිසංස්කරණ -යම -රත්න -##සඳ -##බුන් -අතරම -දිව්ය -වරද -1978 -##ස්ථානයේ -සම්ප්රදායික -හැකියාවක් -##පාන -දාර්ශනික -මවු -1977 -1956 -පොළොන්න -විලාසිතා -ගියේ -ජර්මා -##සක -සුපිරි -රාජ්යයේ -භූගෝල -දරුණු -##ode -වෘත්තීය -එන්න -ඩය -##සේකර -නැගී -##lect -ආහාරයට -බීජ -##ජර් -##ටී -බිසව -##පිටිය -වගාව -##ෆ්ට් -වයඹ -ඇසුර -ගම්ප -මායා -##ටද -##මාල -ගැනේ -මුද්රණ -ව්යුහය -ඉස්ලාම -##න්දි -##ක්රා -##මණා -පිරිසිදු -සැලකෙන -ආත්ම -ගත්ත -වස්තු -සම්මු -rec -ගුණාංග -නිර්ව -##සිස් -අයුරු -කැම -අනුග්ර -ජුනි -කෞතුකාගාර -ණය -නෛ -ශෛල -##නියේ -ක්රියාවල -33 -ලැබුණු -වාසි -බ්රා -ආර්ථිකය -formula -01 -##නර් -##බී -පැට -ඇමරිකාව -කතාමාල -ඉන්ධන -Austral -නැරඹ -නියමය -ආදායම් -චින් -ජොසොන් -##ළිය -##tain -##වුනු -භූමික -වායුගෝල -මාරු -මායිම් -##බෙල් -පැත්ත -ඉතාම -කණ්ඩායමේ -##මීන් -විල් -හොද -##oth -පරිගණකය -කොරියාව -bl -##ගනි -සංක්රමණය -දේහ -##ෝර්ක් -දුෂ්කර -36 -45 -විමු -වැය -##int -ආරම්භය -පුද්ගලයෙකු -අනිවා -කළමනාකරණය -##clud -බැක්ටීර -app -##යිඩ -##ෂ්ටි -රාජපක්ෂ -රාජධානි -##own -හදුන්වයි -තිරගත -අවස්ථාවලදී -ඔර -##ුනි -##ලෙ -යොද -අතරතුරදී -මෙන -මුර -##ැක -##පයා -##හිදී -උපකාරී -කැමති -නාලන්දා -සහභාගි -පාෂාණ -සුනඛ -##ස්ර -##සැන් -##hed -තුළට -චිත්රපටයක් -##යෙහිදී -දශක -ප්රජාව -වගකීම -හයිඩ්රජන් -England -ආශ -ආදේශ -##ඞ් -##ේදී -##පන -පරිච්ඡ -සමානුපා -##ict -යෙදීම -සංස්කෘත -ලබාගත් -නයිට්ර -උච්ච -ළමය -පැවතිණි -අධිකරණය -ඒකකය -It -ආදර්ශ -සියා -##සුර -##form -##සුනක් -පාත්ර -##වතී -සිටියි -ආකෘති -III -ආනය -එළඹ -නෙර -##ාවේදී -ක්ෂේත්රය -##oci -අද් -ජො -ළමුන් -##රෝධ -##විම -හමුවන -##දැයි -තිබී -පහත් -තානා -සභාපති -අන්තර -බුරු -##සියා -සම්පාදනය -නවසී -##ධිපත්ය -පර්වත -තරගාවලිය -මුද්රණය -Se -භට -##ගමුව -නගරයට -මගිනි -ගෞරව -අබ -චෛ -##ail -හේතුවක් -නිළධාර -ආද -වස් -##ින්න -ස්මාර -##ලිංගික -##ater -ඊජිප්තු -##ඥයන් -##සියාව -##ේය -පැරණ -පුත් -Sc -දරුව -ලියැ -ව්යාපෘතිය -අශ්ව -පරිශීලක -ලත් -##ject -##මාන් -රජුට -සීඝ්ර -දම -කෙරෙයි -##වාදයට -##දූ -ප්රබන්ධ -කරවන -සිසුව -වෙස් -සොයාගෙන -උදව් -04 -ජංගම -මෝස් -වම් -##රින් -##esh -ලබාදීම -සිදුවීම -දරයි -##ock -දෘශ්ය -වියදම් -සමානුපාතික -තනා -සාර -##ne -##්යු -ලෙසය -##ල්ලන් -ලිප -1998 -ජනතාවගේ -out -ආත -##ිකාවක් -##ප්පා -අමෙර -කිසිව -කීපයක් -විධායක -##ප්රාප්තික -Cl -##ුදා -ප්රදේශයක් -යොදාගෙන -සංවිධානයේ -මන්දිර -අත්දැකීම් -spe -කවි -##පෝ -ගැස -පීඨ -ගැටලු -##ific -##anka -again -des -යන්නට -##ුනේ -ශිල්පය -only -අගම -ජලා -අපගේ -ගැනු -පෙළඹ -තමාගේ -ගොඩනැගිල්ල -කර්ම -අදිය -වේගවත් -##ුවි -ප්රො -සමර -##ට්ටි -බිත්ති -ඇමරික -bec -සිටින්නේ -tour -ආකර් -ග් -##ලීම -##ියාට -පුරාවට -රාජ්යයක් -ඒවාට -අභය -##කයන්ගේ -හැරුණු -ඇතුළුව -ඊජිප්තුව -කම්ප -තත්වයක් -##තෝ -##වකි -##CC -ඉහළින් -ගැටල -නාලිකාව -This -සංගමයේ -2ක් -උර -එමනිසා -මැක් -පිරිස් -##කොට් -කිසිම -ජීවත්ව -පරමාණ -අතිශය -ෆෙඩ -යෝ -##නත් -කුමන -ප්රතිඵලය -184 -පැවැත් -##ake -ප්රමාණයේ -නර්තනය -ආචාර -ජෙන -##න්තුවේ -වෙනවා -ප්රතිරෝධ -අග්ර -ක්ෂණික -රෝහල -පද්ධතියේ -කොරියාවේ -comm -පෘතුග -##තැන් -සාද -බලයක් -පැහැදිළි -උපාධි -පුහුණුව -මෝස්තර -කතුව -##බට් -##්රි -##කුට -වර්ණය -නැටුම් -අග් -යුගයේදී -පවතින්නේ -ප්රචණ්ඩ -හෙන්රි -හැදෑර -00 -ind -##පෑ -##ක්ෂික -ඇතිකර -සිටීම -##රියා -##කාරි -බැංක -##ited -තරගය -includ -1950 -deg -පන්දු -පිහිටයි -ඊළඟ -තිස්සේ -පොලි -අනුමත -පිරිවැ -නෙෆර් -##ternational -cap -##දර් -##ලයක් -##තිස්ස -කරනවා -මැලේ -චිත්ත -පර්යේෂ -Con -ඇඩ -දන් -හරිත -ගණිතමය -##ත්වික -රැඳ -##ඤ්ඤා -ජර්මානු -මුණ -ගොව -පාහේ -රැකියාව -සුළං -ධ්රැ -වතුර -##කන් -##මිතික -තමන්ට -සූදානම් -යුරෝපය -සංයුක්ත -කෙළවර -අම්බ -ටු -වොන් -පැවසේ -රටාව -##ාන්තික -මොළ -දෙවියන්ගේ -ආදායම -අයට -පාන -බස -වසා -##නද -##ියෙකු -විග්රහ -පැසි -වියළි -තුත්ම -කිව -##iss -##වෙතත් -පාරාවෝ -බැඳිය -උළෙලේ -උරු -දන්ත -ගණනාව -රැකියා -පදිංචි -most -##ටක -සිහසු -නැඟ -සුභ -##ූරිය -පරිභෝජනය -බලකොටුව -ග්ල -තත්වයට -##මල් -##මණය -නොස -##කාමී -මතක -වීමක් -ග්රැ -එකිනෙකා -රඳා -යතුරු -ස්වර් -බැංකු -##ස්තමේ -ප්රකාශන -ආරම්භයේ -රෝස -ජපානයේ -අස්ථි -දෙපාර්තමේන්තුව -ගමන -ස්ථානයට -ආසියාව -යන්නෙන් -##raph -පංච -බෙර -##BC -විල -හැට -කුර් -කලාවේ -කිතු -පිළිගත් -up -ටික -යමින් -##ෂන් -##තිකා -##ann -ලැබිය -ගැනීම් -පසුගිය -##ගුණය -අධිරාජයා -ජීවිතයේ -විකාශනය -ස්පර්ශ -පරාක්රමබාහු -300 -කණ -තක් -වහා -##මුණු -##කිරි -අනුරූප -විවාහය -තමාට -සදාචාර -ac -kn -කුණා -භාර්ය -යන්නේ -##තයේ -##ලයි -##air -ඇතිවිය -යුත්තේ -පාලකයා -ඉහළම -##ular -පදාර්ථ -ව්යාපාරික -කුමරිය -එදි -සංසිද්ධ -ලැබුණි -සමාන්තර -ශිල්පීන් -ග්රන්ථය -දැන්වීම් -match -විරෝධී -අනුපාතය -system -##io -##ඩේ -##ස්ටන් -##ative -යනුවෙනි -කිම් -ජාතිය -විධිමත් -වත්මන් -මොර -##යන්හී -මාළි -කියනු -නිදසුනක් -මියගිය -හදිසි -අඹ -ඉම -බෙන් -##නාගාර -නොයෙක් -##ණ්ඩා -ජාතිකයන් -1996 -දෙසින් -අරමුද -Sri -ලයි -##මො -##බද -##ශක -අධ්යනය -අඛණ්ඩ -උණ -##යාම -දේපළ -යුගයට -සරස -හැඩය -හතරක් -දැමීම -ඉක්මනින් -සැපයීම -##ෝධනය -##ook -සාධ -පුරාම -වරාය -##ගුර්යෝ -නායකයා -රිය -##ැස්ම -##ටර -##මාන්ය -මෙතෙක් -##ව්ව -##දියුණු -නිකාය -අවධියේ -කිරුළ -නැහැ -ක්ලෝ -පාර්ලිමේන්තුව -විකිණ -ජනරජ -සිහසුනට -bet -may -over -එඩ් -ශාර -##ll -නිවර්තන -හමුදාවට -පරම්පර -දිවයින -##ology -ප්රවෘත්ති -පකි -##නන් -##aus -##10 -##ced -වැව -ලෙසින්ද -සීනි -##roup -සොර -##ායී -වැඩම -අසාර්ථක -##ඩියම් -හිමිකර -ආරා -දක්ෂි -##ස්සා -##කරුවා -අනිවාර්ය -so -ඛාන් -##නීය -##ae -##ර්ප -ප්රංශය -දේශනා -##බිම් -##ධාරණය -1994 -පදවිය -වර්තමානය -ජේසුස් -නොමැතිව -කුසලා -DNA -Sp -##නස් -##ool -##ස්ථාපනය -##ාන්ස් -දුරින් -පක්ෂයේ -සටහන -සලකන -##ඳින -අඟල් -යෙදුම -කටයුතුව -ඇල්ල -ගන්නේ -ඩෙ -##සීමට -##80 -##මාණ -වැව් -මිස -කෙසේවෙතත් -ද්විත්ව -පසුකාලීනව -තුත්මෝස් -75 -එදා -##රත්න -##te -##තරා -වර්ථ -දියුණ -ශාකය -ඇතැම්විට -පස්වන -ආසන්නයේ -400 -මොන් -සන්ද -සරණ -කරගැනීම -ගොනු -ගොගුර්යෝ -සම්බන්ද -##eld -පැහැර -විමර්ශ -කිහිපයකට -ළඟා -##ys -නිව්ය -ජනරාල් -අගබිසව -පෙම් -##rib -දේශපාලනය -සැකසුම් -ප්රහාරය -මිලදී -එංගලන්තයේ -ඇලෙක්සැන් -තාවකාල -rel -එලි -##යිස් -##ුන්ට -1995 -බලපත්ර -ආරක්ෂිත -ආගම් -ග්ය -නෝ -##ගිරිය -දැනු -##පාදන -ක්ව -රුසියාව -අත්යවශ්ය -ආනන්ද -ධුර -සාය -නියත -ටීවී -වකවාන -උනන්ද -බඳුන් -##දීමේ -##ණියන් -##ර්ගේ -##ාවරණය -රාජා -ගැඹුරු -අනුකූල -අනුප්රාප්තික -මධ්යතන -ව්යාපෘති -උත්සවය -පාර්ශව -ඉස්ලාමීය -පශ්ච -රුව -##සනය -##pos -##තාවන් -180 -1991 -1997 -ස්වදේශ -##කයන්ට -##යිකල් -අංගයක් -සපයයි -ග්රහලෝක -34 -##පත්ව -##ශා -විවර -##ංගුවට -අරඹ -ක්ෂේත්රයේ -ජනතාවට -sub -බලප්රදේශය -අමු -##ොෆ්ට් -##ල්ය -##cess -මෙවන් -##යක්ද -##ුන්ය -අවශ -මතභ -අග්රා -යුද්ධයේ -අවස්ථාවක -මට්ටම් -නාට්යය -තර්ජ -හැදින්වේ -විශ්වවිද්යාලය -රඳවා -සම්භාව්ය -Le -සපයා -සමුද්ර -පරිපථ -යොදාගන්නා -##බිම -New -ඔප්පු -කෝප -බඳ -##සූ -අඩවි -වාෂ්ප -වෘත්තිය -හඳුනාගත -සංචාරය -ශාලාව -යාන්ත්රික -ගායනා -නෛතික -ආලේ -තුර -සය -සුද -##සෙන -කළමණා -##න්තය -මහින්ද -ජලයේ -මැදිහත් -දඩයම් -after -now -und -සනාථ -නිර්ම -##වුඩ් -නිවස -ඉදිකිරීම් -##ටුවේ -##ven -මුත් -පහක් -පාලි -##ොක්සයිඩ් -විනිශ්ච -පරිණාම -කැමරා -පැරණිතම -##වති -සිංග -පරපුර -දේශගුණ -අප්රිකාව -තිබුනේ -දැරූ -##ද්වීපය -කමිටුව -##ten -ප්රදානය -##ලික් -බැගින් -යුතුයි -183 -ක්රමවේදය -than -පදනම්ව -ඉරි -##ාගේ -##හිය -##ර්යා -2018 -විද්යාඥයන් -##ගාමී -හවුල් -time -ව් -##ව්ර -සුප්ර -බරපත -වටිනාකම -05 -##rans -##පදි -##වේය -##ත්මික -##කරණයට -1993 -කාර්යාලය -ජයවර්ධන -සභාවේ -ඉලෙක්ට්රො -දකි -වඩ -විනය -def -ජුලි -කරුණක් -ග්රාමීය -චෛත්ය -num -##හම -දෙමා -ප්රතිම -##තාවට -සිදුකල -සමාගමේ -##angu -දොළ -ත්රිකෝ -ගහ -බළ -වාරි -මාතර -පෙදෙස් -දැක්වීමට -ඉදිරියේ -##ණාමය -චෙ -##තිත -##ණයකි -##රික් -##ාගම -දුඹුරු -160 -කාන්තාව -ශ්රේණි -මනෝවිද්ය -විවේච -run -මූර් -වච -##ෂින් -කුමන්ත්ර -උපක්රම -කැට -මූලධර්ම -අප්රිකාවේ -විජේ -ප්රවාහනය -ඩේවි -ශෛලිය -Af -එද -නසා -නිකා -රහස් -##යාව -##ලනය -##වේග -වැඩිදියුණු -ලෝකඩ -150 -එල්ලේ -හඳුනාගෙන -දන්නා -##ැකි -##tic -##ක්ෂා -නොප -##වරයකු -පරිදී -ගෙනය -පටක -වේදිකා -එංගලන්ත -යත් -ර් -##මනය -##යිල් -වැටු -බලයට -කෙරුණේ -පාලනයට -##old -තෝමස් -දුන්නේය -පිපිර -පිළිය -##ත්තන් -දැනුම් -##ෂ්ම -දෙකෙහි -මධ්යයේ -චරිතයක් -ගුණාත්මක -වූවාය -බස්නා -against -රද -##ානු -##ල්ලි -##මාත්ය -සමස්ථ -අනුමාන -##හරණය -##ade -කාරක -වස්තුවක් -අන්දමට -මෝටර් -පශ්චාත් -සාර් -##ිනිය -##පිත -##xt -##ිකර -179 -දැමීමට -මයිකල් -##ඩො -නිවේදනය -කොටි -නොවී -පැවසුව -පිටත් -පලමු -අකුරු -අශෝක -දුරකථන -යලි -##ඥාව -##කගේ -##ේදනය -ගොවිත -පළල -##වාදයේ -අංශය -අණුක -අරුත -විචල්ය -රාව -පැවි -බලතල -උපාය -##වීමයි -බෙල් -අවසානය -විරුද්ධව -නාළිකාව -IS -##දැක් -##oh -##නාම -##වරක් -දීය -185 -කිසිවක් -අතිරේ -ගවේෂණය -fl -##නාවක් -##ෙත් -සිතා -කොන්දේ -##ලියන් -වාක්ය -විහාරයේ -නීතියේ -රූගත -ප්රවාහන -##red -##nam -බිත්තර -භාගය -උපාධිය -කම්කරු -අසාමාන්ය -පටිගත -ලන්දේසි -##ිම -##ේඛ -##වාන් -රාජසිංහ -අරගල -සිදුකරයි -37 -ආවර් -##හොට -##නුයේ -අවදාන -නොහොත් -කායික -අධ්යක්ෂ -පාට -##ජනක -බස්නාහිර -දරණ -බල් -##කට් -##ious -##පටි -##ංසා -##ින්ගේ -උපු -දෙකක -##කරුවන්ගේ -ඩිජි -එන්ජි -##හොටෙප් -පොහ -##ිත් -නිමැ -##ියාය -නොවු -දෙව් -ප්රතිවිර -සමාජීය -පත්වන -පාර්ශ් -ක්රියාවන් -reg -##ගැනි -අධිරාජ්යයේ -එතැන් -සුන්දර -dif -ටො -වෙල -අනූව -ලැබීම -කොටසේ -##ark -##වීමත් -තුලට -පෙරහැර -වාහන -දියුණුව -දෙකකින් -බාධා -සන්නායක -බැඳී -සැපයුම් -##තෙම -ප්ලාස් -උම -දෝ -ශූර -##කාය -##දුනු -##කටම -අපද්රව්ය -තමයි -පාසලේ -රංගනය -සෙනෙ -##සො -##ඟන -සමතුල -ස්කොට් -##ලිව් -දිනයේ -ගැටු -නීතිමය -තබන -ලන්ඩන් -##ollow -බවත්ය -ක්ල -යෙදුම් -##ස්ථානයක් -බුදුද -වැඩිමහල් -බේරා -පෘථිවියේ -නිතරම -දක්ෂිණ -##ied -##sh -රජයට -මෙහිදි -පිළිගැනීම -##ගැනීම් -ඇමෙරික -සන්ධානය -සැලකිල්ලට -Australia -pos -අඳුරු -ආච -බෙක් -##පතා -විසින්ම -නැමති -##කාරය -මැඩ -ක්ෂීර -පෙන්වයි -කිරිමේ -ඇපල් -අවශෝෂ -පේශ -යෑම -විදේශීය -නිගමනය -පුළුවන් -පියාගේ -චලන -ප්රතිසංස්කරණය -බණ්ඩාරනායක -ගස -ලුණු -##රූ -සමලිංගික -පිළිකා -බලයෙන් -මහතාගේ -සෘජුව -Te -ඔය -කන -පෝල -##යර් -කරණ -##ෙනවා -##anc -එක්තරා -විශේෂඥ -රේඛා -ෆෙඩරල් -පානය -##විල -##දිවි -##ating -කාලයක -ප්රදේශයට -පිරිනැ -අත්හ -බහුතරයක් -සංග්රහ -ගර්භ -අදියර -qu -##නියානු -##ාරී -සිසිල් -මිළ -උපකරණය -යොමුව -නිරිත -##දනාව -ලිඛ -ක්රමයට -රෝගී -ලක්ව -ආසන -තැනක් -රිච -3ක් -Ad -work -ආධිපත්ය -නං -රෑ -##මර් -##ve -##ාරු -##දිම -##att -##ක්රමය -බ්රහස් -ප්රකාශනය -අතහැර -ද්රාව -යුද්ධයෙන් -##ජනීය -තෙලි -හදුන්වන -ඉස්ම -ආදායමක් -විෂ්ණු -බින් -වික් -##ෝජන -##ට්ටුව -හොදින් -ඩිජිටල් -සෛ -##රුන් -##ළා -##ෙනු -පරිණාමය -##ally -පරතර -දේපල -සිදුවන්නේ -අත්හැර -ආණ්ඩුකාර -දව -බාර් -##ටීය -##යිනි -##ත්තුව -##ities -ස්ථානයක -ඇමති -මට්ටමක -වෘක්ෂ -සතුට -ස්කන්ධය -කොට්ඨාසයකි -ජින් -දාව -##නගර -##බො -##පමණ -නොබෙල් -කැල් -පරාවර් -පාප් -##outh -පිළිවෙලින් -යෝග්ය -Lanka -her -ඉවත -චතුර -යාන -වහල් -සබැ -හත -##ලස් -##ug -##DI -##මානයේ -##සිටි -සියදිවි -කලහ -ප්රධානතම -##යින්ගේ -##දේව -1992 -ආසියා -1965 -දේවතාව -එරට -##istan -අග්රාමාත්ය -ගුව -සත -##ින්ම -##ara -##ලියාවේ -##වුල් -##සියස් -කෝට්ටේ -##න්ත්රික -කඩදා -මෑතක -දිශාව -යනාදිය -Iවන -කයි -දරු -##ever -##යාස -there -කාලි -ව්යුත් -නිසාම -සමගාමී -අංශක -පිහිටීම -අඟහරු -ඉන්දුනී -වෙසෙන -##ween -දර්ප -පාවි -සිල්ල -සිටීමට -මිනුම් -කැණ -උෂ්ණත්ව -64 -ධජය -බඩ -##ෝය -නොපැ -##ංකය -##ළුම් -සිටිති -සීගිරි -වයස් -විදුහල -රිදී -සුවඳ -සත්යය -ඝනත්වය -ධාවනය -තක්සේ -උල් -එවන් -බහ -##ණ්ඩු -කැලි -මධ්යස්ථාන -##කරුවකු -ස්වරූපය -සහයෝගය -cent -වතු -ඇතිවේ -බැර -තත්පර -සීමිත -තිස්ස -##ගැනු -අන්තර්ජාලය -මෙවලම් -යක්ෂ -රක්ෂණ -සතුර -##ep -##ක්ද -විස් -නිවා -##කුළු -ගැනීමයි -අමෙන් -##වරුන්ට -##කරුවෙකු -##ලන්ඩ් -පෝෂණය -43 -ආක -##චික -##ල්ම් -කරවා -අවල -##ons -##ණික් -##නියාවේ -සමඟම -වැදගත්කම -rep -ගුණය -සලකුණු -ස්තූප -sexual -ටොල -වහල -##wn -##ාවලි -ජනතා -තුළදී -පාකි -ක්රමයේ -කියන්නේ -පෙන්වන -යාත්රා -පරීක්ෂණය -##ාවලියේ -කාලීනව -සම්භවය -ප්රයෝජනවත් -ඇන්ට -ඩයි -##දක්ෂ -##හාව -##ුන -##පසුව -##ඛ් -විසිර -##hen -භාවනා -1987 -ද්වී -සේවාව -භාගයේදී -හදුන්වනු -##විකරණ -when -සලා -##ධු -තිබිණ -පරම -නිරාවරණය -බ්රහ්ම -ප්රංශයේ -පැවතීම -##ublic -ලියාපදි -සංරක්ෂණය -some -##පෝෂ -##කිනි -##itt -##omen -නාමයෙන් -##ගොස් -මයික්රොස -55 -99 -ඇස්තමේ -හිර -##කලා -##සාව -වියට් -##සිට -ගොදුරු -දුක -ව්යාප්තිය -විදුලිය -චන්ද්රිකා -පටල -කිහිපයක -පුදු -##ේට් -මෙකල -සමකාලීන -##ායන -සාන්ද්ර -##ාවන්හි -බ්රි -රේඩියෝ -සිද්ධිය -චෝළ -අවයව -අගමැති -මයික්රොසොෆ්ට් -44 -we -මුව -##වතු -කොල -පුරෝග -ගණිතය -ද්රවිඩ -1000 -මරණින් -යෝධ -##ජිත -##pen -අවධාරණය -හිඟ -දියමන් -අවධිය -විප්ල -තැනැත්තා -කිලෝමීටර -අතිරේක -අමෙන්හොටෙප් -එල -කවුන් -ජාලය -වද -##ක්ශ -පිටි -සමයේදී -අනික -කොටුව -මාංශ -පැමිණියේ -ද්විත -ශරීරය -ඇන්ඩ් -පවරා -between -රාග -##යො -##තලේ -##ෙම් -##ැර -##ck -සංවේදී -කුලය -##ash -විවිධත්වය -1988 -සංස්කෘතීන් -##ower -ගුප්ත -එන්ජින් -රුධිරය -##හාණ්ඩුව -හැටියට -##නියාව -##rin -සැඟ -එකී -බැස -ලිංග -##uring -1948 -අවසානයේදී -06 -cricket -පාව -##වාට -##කුත් -##ත්තල -කලක් -අයර් -මෙහෙයුම -##ement -##ොහොසත් -හමුවූ -හැසිරීම් -බරපතල -Su -ආරාධ -##reat -විශේෂය -පිටපත -ප්රථි -පන්ති -දෘෂ්ට -##ෙයාර් -උතුරින් -දමි -වාන -ෆෝ -##අඩ -##ෆ්ර -##ක්කම් -කරන්නා -මෙතුමා -##ale -අයත්ව -අනුවා -ජාති -ක්රියාමාර්ග -කියලා -පිහිටන -ජර්මනියේ -වැලැක් -07 -අකු -උත්තේ -##කික -##නයක -කේත -sec -ලක්ෂ්ය -අග්නි -ශාරීර -ආකල්ප -කද -පටු -සන්ත -##හක -පැන් -සාදන -මිසයි -182 -රුපිය -ලක්වූ -වෙන්කර -විද්යාලයයේ -සිනම -කෙනෙකු -දෙමාපියන් -65 -මතුව -##aj -කොමිය -##ායාම -##ala -කාලසීම -සොල් -පෙල -අමුද්ර -ලංකාවෙහි -පැහැදිලිව -සෞන්ද -දශකය -සැමියා -බාලදක්ෂ -තබාග -ටැං -හෘද -##ද්වීපයේ -many -into -වස්ත්ර -වාග් -##fore -##ෆික් -##ියකු -පික් -පිති -##ත්තල් -දැයි -තිබෙන්නේ -##කිරීමේ -දෙදෙනෙකු -ඇසුරින් -කරන්නන් -හැසිරීම -විප්ලවය -langu -writ -ඇර -ඇෆ් -##ගික -##ේන් -##man -##ches -##II -##ත්වා -වර්ගයක් -කෙරි -ලබාගැනීමට -විදහා -විමුක්ති -එදිරි -km -ඛණ්ඩ -ටොන් -##දුණු -##ායි -##ධානය -##විද -off -වසරකට -වැඩිය -දැක්වෙන්නේ -ගිණුම් -මුදලක් -කෘෂි -177 -සරත් -හින්දි -කෙනෙක් -වාර්ෂිකව -ඉගැන්වීම් -ශතවර්ෂයේ -පිරිවැය -ශුන්ය -##හින් -##බන -##පරි -##පසින් -සියුම් -වර්ගී -ගිම් -##වින්ම -නිරූපිත -කුසලාන -under -call -gener -ty -කට්ට -ගන් -මාසය -##ගුරු -##සස් -##පුව -##පනය -නොගැ -දීප් -කොටගෙන -කෙරුණි -හේතුවෙනි -ගිනික -සකසා -ප්රභව -පුරාවිද්යාත්මක -පුරාවෘ -54 -For -follow -නබි -නරඹ -බොර -##ොයිඩ් -##ාරම් -##ිතිය -මිලි -අයෙකු -පිරින -කෝෂ -ගාල්ල -සිදුකරනු -කුරුණ -බඩු -##60 -##මාධ්ය -ගැඹුර -##වුනේ -inter -වැදග -තේරී -හැරීම -නැතිනම් -දේවාලයේ -සාමාජිකයින් -තනතුරු -රාත්රී -##velop -අනුග්රහය -win -ආවර -ඔබ්බ -පද්ය -මසුන් -ලිබ -##භව -##ිකාවන් -##වරයෙක් -සාමය -ලැබෙන්නේ -##owever -වායුව -සංඛ්යාත -ප්රතික්රියාව -පැවතුණි -ප්රිස්ට් -පවත්වනු -උපකල්පනය -තානාපති -po -ඉපැ -ඍජු -##ැසි -##hem -##ery -සඳහාද -සඳහාය -##ාගෙන් -කාලගුණ -##ට්රා -1979 -අවස්ථාවේදී -ප්රවර්ධනය -අන්ය -නමක් -යාප -##ාම් -##ෑගල -සිල්ලා -දිවෙන -ඉන්පසුව -##දෙනු -##ට්රො -ලද්ද -කරගනිමින් -ප්රයෝජනයට -විනිශ්චය -##හාන් -ස්වි -මැණික් -කිරීමටත් -අධිරාජිනිය -සාහිත්යයේ -ප්රතිපත්තිය -වගකීම් -හුදෙක් -ප්රිස්ට්ලි -ob -would -දවස -##රත් -##ved -##මිණි -මින -රාජ් -යෙදී -1985 -සෞර -නිවසේ -නිරීක්ෂණ -අක්කර -විශිෂ්ඨ -නිර්වචනය -Man -##මහා -##ණියේ -අවු -තුර් -##ene -මැති -##ise -##වෙස් -සොයාගත් -සතුන්ගේ -add -රත්නපුර -ප්රතිවිරුද්ධ -පයි -##mb -මහත්ම -1984 -තේර -පළාත -සන්නද්ධ -සාර්ථකව -මනස -මිනිසාගේ -දියමන්ති -US -ඉරිය -##lish -##vers -##යන්ත -ඉන්ද්ර -##ters -කැබලි -ඉදිකරන -වෙහෙස -පෘතුගීසි -47 -count -කෑම -හෙක් -##ිති -##කුරු -##ගල්ල -##ාරාම -##වැත්ව -##ick -අනුගාම -සිදුවී -පැවැත්වූ -ඇසුරු -කඳුකර -##iversity -ලිඛිත -39 -acc -group -##යම -විකෘති -සේම -යොදාගනු -නගරයක් -1983 -##ract -##ලොව -ඉලෙක්ට්රෝ -සුදුසුකම් -දාග -දුරු -ලින් -##ාධික -##ෝර -##වන්ත -##ැන්න -##lad -##විත්ර -බලශ -විටෙක -වැඩිපුර -ප්රධානියා -##ුවේය -වර්ෂාප -##ution -ass -හමුවී -විවේචනය -comple -42 -att -ටි -##ier -සමත්ව -නොසල -ලැබීමට -විටමින් -පසුපස -රටක් -හෙතෙම -මිනිස -three -##විටම -ගුවන්යා -පැවැත්වීමට -බ්රිතාන්යය -ලබාගන්නා -ආණ්ඩුව -char -මත්ස්ය -ආදරය -##meric -පොහොර -ඇස්තමේන්තු -රුපියල් -ඊසාන -දණ්ඩ -වඳ -වෑ -##ඬු -##ියගේ -වේල -විටම -පරණ -වෙතට -අවශ්යතාව -##ild -##chn -##chool -ප්රවණ -අදහසක් -බැක්ටීරියා -48 -Bang -new -trans -අබ් -උසු -කදු -චැ -චේ -නළුව -වන් -##තාන්ත්රික -##දාත්මක -පොකුණ -ගොර්යෝ -කාසි -යුද්ධයට -1972 -ඇතුළත -##iki -රොබට් -තිබෙනවා -අන්තර්ගතය -ලාංකීය -කථාංග -ඉතාලි -##ාහක -දඬුවම් -සිකුරු -ක්රියාකාරිත්වය -IIIවන -අමුද්රව්ය -කුරුණෑගල -##ජනයා -##න්ගෙන් -##නිල් -##ානං -වේලාව -මිට -##ලයින් -වැනිදා -දැනුවත් -මාලාවක් -විදුහ -years -කතාමාලාවේ -##ෙදී -##ගනිමින් -කරමිනි -##න්නෙ -##ේශ් -කුළු -##ital -පිටතට -##oph -නිසාවෙන් -කළමනාකරණ -සිතියම් -##resent -ලියාපදිංචි -col -ඇළ -ඔස -ගූ -චාර -චර්ය -තඹ -බඳු -රුවන් -සිත්තර -වැදි -##ern -කලු -##ංශයේ -සමගය -නිදසුන් -1982 -නොහැකිය -නිපදවා -තාපය -ෆ්රැන් -57 -එනිසා -සත්වය -##az -##ෆෝ -##ාවෙනි -තුඩු -them -රජවරුන් -නිර්මාණයක් -ක්රමලේඛ -කෙටික -යාමේ -සංවර්ධ -ක්රීඩාංග -කඳවුර -උපුටා -Col -මිරි -##ya -##ිකයින් -ස්තර -විසඳ -අයගේ -මතවාද -ඇතුලු -වාදනය -සැලකූ -සෙබ -පැවැත්වෙන -##pect -සංශෝධනය -නතර -බාර -##PU -නිහ -##orn -උපයා -##ාරිස් -##ීටී -International -##ually -##ත්යානුකූල -ඉරාක -චිකිත් -ඩබ්ලිව් -Pl -##ංකර -##ධර -පැස -ස්වී -දෙමින් -##පාත -කුහර -විද්යාවට -##වැට -පොලී -##ගතව -##තුරුව -පුතු -නිරව -දේශය -තාත්වික -සේවයේ -කලාපීය -විදුහල්ප -සීත -##මකට -##කාර් -##ටම් -##ඩාවේ -##ංඝ -##එන් -##හික -දිල -දීප -මුලු -##its -මුදල -1981 -අල්ලාහ් -ප්රාන්තයේ -spec -කොමියුනි -##වත්ත -##බින් -අනුපිළි -සොය -නිදහ -අංශයේ -ස්ටාර් -වළක්වා -ඉවහල් -නිව්යෝර්ක් -ඉස්මතු -ශාරීරික -මිසයිල -නොසලකා -##තීය -ප්රී -##ුරේ -සංවේ -යටතට -බෙදී -1940 -නිපදවීම -ආයතනයක් -IIවන -ආසාදනය -වහ -##ොඩ -##ගිර -##ෂේ -##පාක -ලබාද -##ීටර් -මුල්කාලීන -##ctor -##rig -##ages -තැත් -අවබෝධයක් -ඉතිරිව -ගෞරවය -නොකරයි -ජනාධිපතිවරයා -පාපන්දු -degree -කුසලානය -මනි -හුරු -##නාවට -##ෆා -පැති -##කරැ -මතයක් -රටෙහි -##ased -ක්ෂය -පූජනීය -රචනය -පත්රකල -52 -ඇකඩ -නුව -නෝර් -වරු -වුණි -සනි -##යන්ද -කොහො -හැකිවේ -විශාලත්වය -##imb -##ike -සම්පූර්ණයෙන් -කීපය -ඇමෙරිකාවේ -පින්ත -යනාදී -සම්ප්රේෂණය -සම්පුර්ණ -අත්හදා -Bl -තන්තු -දහස -මෛ -##හෙන -##vent -##ාවය -##ම්ය -සංක්රමණ -වීදුරු -භාවිතයේ -මහජනයා -පිළිතුරු -පත්වේ -##ays -විෂම -තැපැ -සලසා -පෘතුගී -ඉක්මවා -ගම්පහ -සිංගප්ප -ගිම්හා -Americ -West -ටර් -බෝධ -මද -##ඩින් -විකුණ -කොම -සැමර -කාලයට -##පත්ති -ස්ථූප -##ම්බි -සම්බන්ධතාවය -තත්ත්වයට -##පූර්ණ -නිරවද්ය -##ient -##ේන්ද්ර -##ණ්ය -##න්තිය -දිසා -විශ්ර -1952 -produ -නිමවා -නියුට්ර -South -won -කපු -නවා -මදුර -යවන -යමක් -##ධර්මය -##චර -##ියෙහි -නොසැ -##කයෙකි -රටා -රටක -##ලුම් -තේරුම -දේවස්ථානය -පරමාර්ථ -තීරු -ශාස්ත්රීය -සංකේතවත් -හරින -පරිමාණ -ඕස්ට්රේලියාව -තෙලිඟු -08 -මන් -යථ -##සුරු -##එස් -##ස්සන් -##ෙන්නා -##මාලා -නිපැ -##වැලි -##ision -දුක්ඛ -##ම්බක -දේහය -මාදි -සොං -##ාවන්ගේ -ද්රෝ -අතුරුද -කෘෂිකර්මාන්ත -India -භූමියේ -ආකර්ෂණය -##ause -කොන්දේසි -තැපැල් -##ines -ජාතක -වාතය -සංගම් -රෝගීන් -##ුවක්කු -මාර්ගයක් -වැටී -ස්ත්රීන් -ඉල්ලුම -1920 -පදිංච -වෝල්ටීය -Cup -pol -ශේෂ -සතිය -##ිඹු -##යද -සිදුකෙර -ප්රමාණයක -1975 -පියතුමා -##කරුවන්ට -1930 -තුනකට -සූර්යයා -ප්රෝටීන -ඩේවිඩ් -කොමියුනිස්ට් -600 -##මෙ -වනදා -##කාරයෙන් -ජනමාධ්ය -අනුවර් -##amil -##eth -භාෂාවක් -##ures -##ows -බාධක -ඉංග්රී -සියවසේදී -where -ටැංකි -95 -Wh -ආත් -නළු -##ලීමට -##කිසි -##ත්රී -##මිණී -සිරස් -සත්කාරක -අස්වැන්න -දූත -පරිපාලනය -ප්රචාරණය -ඔක්තෝම්බර් -ඇත්ද -කෞතුකාගාරය -බෙක්ජේ -##ladesh -Bangladesh -end -උන්න -සක් -##වත්ව -##eat -##ෆී -##න්දනය -##ොන්දු -##ries -අවධානයක් -අටවන -දකුණින් -differ -##ාවත් -##හුම් -##icro -කැළ -##වුඩ -##භාවයට -ලක්දිව -1986 -පර්යේෂණය -සිටියදී -මරණයෙන් -දිවයිනේ -හයවන -38 -නීත -පුවර -##හණ -##au -##ංගේ -ඇතිවීම -##කරයි -##සරණ -හැකිවිය -දේවල් -අසල් -178 -යම්කිසි -අනාවැකි -ඇතුලත -ජ්යෙ -ඕස්ට්රේලියානු -වගේම -imp -භූගෝලීය -nowiki -සමතුලිත -##ලද -##52 -පැත -නිසායි -##ලියෝ -පුෂ්ප -කලාතුර -ලියූ -කර්මාන්තයේ -ලැයිස්තු -ඵලදායී -ධනවත් -සෙන්ටි -තත්ත්වයන් -බ්රාහ් -ඉමහත් -එස -එදින -කෙන් -ධනය -පද් -##න්ට් -##ියයි -ප්රශ -සිදුරු -##සින -##ියන්ගේ -සොයාගන්නා -තත්ත්වයක් -##umb -##පීඩ -##ෑන්ක් -ගෞතම -ශාලා -පොරොන්දු -සමූහය -කිලෝමීටර් -අපනයන -ළමයින් -නල -යටි -##මෙහි -##වන්නට -##ම්මා -##දායි -##මිති -සැහැ -##හැන් -රටවලට -හැකියාවන් -ද්රව්යය -තීව්ර -ක්රියාකාරීත්වය -සරසවිය -අවලංගු -සොල්දා -51 -ජොං -දන -ළඟ -##ණාත්මක -ස්ඵ -සියලූ -##වැසි -##ානයේ -අයන -##ක්රිය -inf -රූපය -රුහ -අධිපති -පාවිච්චි -ටොලමි -දාගැබ -49 -both -final -no -ඛනිජ -තණ -දකින් -##ිසි -විදි -ප්රවී -කළාය -වසරෙහි -ජීවී -සම්බන්ධය -##stit -සැලකෙයි -ප්රතිශතය -උග -ඛා -චො -දාම -දඩුව -##dd -##ශික -##con -##ර්ව -විපර් -කොස් -##ැනිය -නැත් -බලකාය -බාධ -දෘෂ්ටි -##යෝජනය -බ්රහස්පති -අනිකුත් -called -අහිත -උන -එජ -එෆ් -##බේ -වනා -නොපෙන -##ානුවන් -##නේය -වන්නේය -ප්රදේශයක -පත්වීම -##ෝපැ -වහන්සේට -සැලැස්ම -ගියහ -වෙළඳපොළ -විමෝ -##වීමේදී -නිවැරදිව -ගැනිමට -උද්යාන -##ample -කතුවර -උව -ධාරා -වලිනි -##ෝද්ය -##ඩොල් -ප්රත්ය -නිවෙස් -##මික් -මහර -කාළ -නිර්මාතෘ -##ච්චාර -නාසා -##ග්රා -යාබද -යටත්වි -කාරණා -බැලීම -පූජක -ව්යවස්ථාදායක -ප්රජාතන්ත්රවාදී -තාවකාලික -Ex -##ාචාර -##හූ -##පාර -##වරට -ප්රතිබි -අයිතීන් -නිරූපනය -ක්රියාවලි -පැමිණීම -වෘත් -1945 -මේවායේ -ප්රසිද්ධියට -හැදින්විය -වොෂින් -##ove -වික්රමසිංහ -නඩත්තු -number -46 -will -උතුම් -ගන්නට -නින්ද -##දාව -##කයි -##ත්වයන් -දෙකකි -##කොළ -සැලැස් -##urn -නැගෙනහිරින් -ගම්ය -ධාන්ය -වැළඳ -ගැනිම -ලබාගැනීම -partic -කි්රයා -ඇන්ඩ්ර -භාර්යාව -කඩදාසි -ODI -four -set -ට් -තලය -##gram -##ඩියානු -විඳ -වැටි -නැඹුරු -කෙසේද -##cept -rem -නිකු -ක්ෂේත්රයක් -තැටි -චන්ද්රයා -තැබීම -සියල්ලම -තත්වයේ -වෛරසය -යුදෙව්වන් -පණිවිඩ -විශ්රාම -තදින් -දඹ -##ිමත් -##දියේ -##ාට -##කන -##ield -කොලො -##ත්තක් -කාඩ් -නාසි -බෙංග -වාර්ගික -අත්අඩ -##කිරීම් -වෙන්න -සීමාවන් -##usic -ගැටළුව -ගෘහස්ථ -කියැවේ -රැඳී -ඇසි -##රයක් -##ේල -##චර් -##නුත් -##ලිවුඩ් -භාවයට -ක්ලිය -නිසාත් -මාගේ -දේශසීම -ඉඩකඩ -ලබාගෙන -යුක්තය -ස්වර්ණ -එදිනෙ -කබ -තිරි -ධජ -පහන් -මෞ -ප්රතිස්ථාපනය -##ල්ලෙන් -අගයන් -අදටත් -පාසැ -බටහිරින් -ගෝරින් -කාන්තාර -ධාතුව -පිලිබඳව -සන්ධි -කුළුණ -කැණීම් -4ක් -දම් -දෙන්නේ -ෆී -##ෂල් -##විස් -නොනැ -##මිත් -සැන් -හෙයිනි -##තිවරයා -වුවහොත් -##ury -##ember -භාග්ය -තාරක -මන්ත්රීවරුන් -##ස්තානය -විශ්වවිද්යාලයේ -පැවිදි -වර්ෂාපතනය -අහිතකර -ක්ලියෝපැ -53 -5ක් -63 -අහි -කතර -ගෑ -##වාදි -ඉතිහාසඥ -රැජිණ -අමාත්යා -සඟරාව -ත්යාගය -චාල්ස් -ගැබ් -ආනයනය -var -අඳ -ඒම -පතිත -බැබ -රබර් -විස්ත -##ල්ම -පරිශ්ර -ප්රතිනිර්මා -වසරක් -##ටුහන් -##ගැනේ -හැඳින්වීමට -ලක්විය -උසින් -ගොඩනැඟ -මුල්ය -ස්ටී -අවකාශය -ස්මාරක -මතභේද -යටත්විජිත -එදිනෙදා -09 -තුවක්කු -##ාත්මික -##නගේ -##හැක -අගභාග -වරයා -සේවාවන් -ක්රියාවලියක් -වොට් -##ible -සැළක -නිෂ්පාදිත -ධාවන -සාධකය -ඉලෙක්ට්රොනික -අවශෝෂණය -ear -මනාව -සතුරු -ෆො -##ගියේ -##ox -##yl -වියේ -කුඩු -කලෙක -අගනගර -සමාජවාදී -ස්වකීය -being -වර්තමානයේදී -ග්රහයා -matches -පැවසූයේ -ජ්යෙෂ්ඨ -sim -අැ -නග -##ණියක් -##ියර් -##ස්බ -##තිනි -##තුරා -සම්මේ -##ේෂන් -2019 -1971 -ගෝලය -develop -පසුබිම් -සිහසුන -about -##භූත -සනිටුහන් -58 -ගමනා -හම්බ -##නින් -##ෂන -මෙක් -නිප -##සාදය -මුනි -කුඹුරු -දක්වන්නේ -නවතම -වෙනස්වීම් -වරුන් -දුරක -සෙයින් -ලක්ෂ් -ධාතූන් -තැබූ -සංකීර්ණය -කුළුණු -played -ගිවිසුමක් -am -mod -ශල්ය -##ේට -##ින්ද්ර -විවාද -වූවකි -##ිබෝධ -##න්තොට -මතකය -විශේෂයක් -##ටන්ඛ -මහායාන -කියයි -ඔබේ -##ograph -##ස්ථානික -කල්හි -පල්ලිය -ඇල්බමය -එලෙසම -ප්රසංග -ඇලෙක්සැන්ඩර් -උල්ල -චාල -##der -##ූන්ගේ -##ියං -##ුරි -##ත්වල -විටත් -කෘමි -ලාං -වැඩසටහ -තරඟය -තුනකින් -වැඩිහිටි -known -62 -මොහ -##සයේ -##ධාරි -##චක -##ුණාම -ස්ට්ර -##ana -##als -ඔවුන්ව -රටට -##බ්ස් -නීත්යානුකූල -සතුන්ට -කැරලි -තෙක්ම -නිළිය -බුද්ධිමය -English -තරුණය -කටයුතුවල -ඇෆ්ගනි -App -Cricket -Fr -නියා -හදා -##ගස් -##ෙන්ද -ප්රමිත -සමන් -අවධාන -##සරය -ජීවින් -ලිහි -යොදාගනී -##ාන්ති -අවශ්යතාවය -##ගුප්ත -ලොකු -##owl -ක්රමයකි -##ටියෙන් -විකාශන -ලක්ෂණයක් -ඉල්ලීම -##ම්මද් -පිලිබදව -ආභරණ -පන්දුව -පරිච්ඡේද -සිසුවෙකි -Afric -id -වංශය -##මාලාව -අවදානම් -කාලතුව -මතට -යොදාගත් -කෙතරම් -බෙදීම -අරගලය -සමහරවිට -යන්නෙහි -##ෝනියා -ඉදිකළ -ද්විත්වය -දේශගුණික -අත්අඩංගුවට -එයි -තමිල් -##ෙති -##ල්ගේ -ප්රත් -පරිපූර්ණ -සියයට -ප්රතිලාභ -##වීර -##ider -පීඩා -චලිත -භ්රමණය -මාළිග -66 -##ුමක් -##බාල -සහා -##හුල -then -සුබ -##ished -##මැතිය -ව්යාපාරයේ -ග්රහණය -මොවුන්ගේ -කරගත්තේ -ශරීරයේ -විරෝධය -ගවේෂණ -ජනරජය -Comp -ඇසුරෙන් -ජෙනරාල් -Pak -Zimb -කාය -ජොන් -ඩෙල් -දීමේ -##තනා -##ුක -##iew -##lor -##ma -##hip -##40 -බිල් -සේක -හෙලි -නගරයකි -##ලෝන් -මුළුමනින් -වැටීම -##abwe -අවධානයට -United -නේපාල -ලිපියක් -බැංකුව -දකින -ආසියාතික -දිලීර -Zimbabwe -act -if -බද්ධ -ලඟා -##ලතා -##වෙනි -##ෂාන් -##ඩම් -##ිරීම -නොවීම -වලසුන් -these -අධී -බලවේග -එකවර -වර්ගයකි -නිර්වා -නාමයන් -any -##ුරාදා -##ගෝලය -සඟර -බෙහෙත් -උත්සහ -මිතුරන් -නිම්න -නළුවා -Pakistan -mar -pe -ඌව -ගතික -සවික -ෆ් -##වංශ -##ata -මාත්ර -ග්රා -ආකාරයක් -##rop -##andard -බිහිවූ -සෑදී -නිසාවෙනි -රෙජි -වියදම -දුටුගැ -ඉසව් -කෞතුකාගාරයේ -ගැටලුව -found -ඌර් -දක -නදිය -මුද් -##කීර් -සැකි -##යින්ට -චිත්රපටයට -අභිබ -කලාත්මක -##ript -ක්රියාවට -පැමිණිය -එහෙයින් -##ists -සාමාජිකත්වය -රූපවාහිනිය -ප්රහාරක -example -බැලීමට -##ically -සබද -සැබැ -එංගලන්තය -පසුබිම -award -ඔපෙර -ඩ්ර -ධම්ම -මක් -වතාවක් -ෂා -ෆොන් -පිළිබිඹු -බිද -##ජනනය -##කයින්ගේ -පන්තිය -චක්රය -බලපායි -දුටුගැමුණු -mon -උගත් -කම -මල්ල -##ශු -##TE -##තිලක -බලකා -පාණ්ඩ -බ්රසී -කණ්ඩායමට -කාර්යයක් -##imes -අධ්යයනයන් -වෘත්තා -මිනිසුන්ගේ -කැනඩාව -වසංග -නෞකා -56 -69 -77 -ICC -##දික -##බලය -##gan -පිහිටු -අසුර -ස්ථානගත -කොට්ඨාශයෙහි -ශ්රේණිය -දැමූ -මෙහෙයවන -ගලවා -lead -ප්රවේණි -tournam -ක්වොන් -ඇන -##යම් -##ජාන -##ඳා -##ss -##ස්පර -වැර -කොංග්ර -දිළි -සුඛ -සමාජයට -පැහැය -අධ්යාපනික -නියෝජ්ය -මිනිසුන්ට -හිට්ලර්ගේ -බැලූ -එවක -class -නිශ්ශ -අක්නාටන් -par -ඒමට -සග -##තැන -##ෝක් -##ේෂ් -##ෑටි -එයාර් -දුර්ග -මාක්ස් -ශිෂ්ඨ -හැකියි -ආගමේ -##ull -පක්ෂපා -සටනේ -බ්රිතාන්යයේ -පුද්ගලයෙක් -දෙපස -පැතිරී -ආයුර් -කන්යා -Ass -කුමක්ද -Comm -පොළොන්නරුව -දීප්තිමත් -නැත්නම් -co -අම්ප -##මයේ -##ොළ -##ටියන් -##ඝා -##දුම -##තාවයට -රැහැන් -පාලනයක් -##aster -මූලස්ථානය -අසී -අසමත් -1974 -යුරේ -ජනගහනයෙන් -##ලිකන් -අකුර -ධාරාව -අහෝ -අවුරුද්ද -නිරන්තරයෙන් -අත්ත -කුවේ -ජෙර -නිරි -බංග -##හක් -##ole -##ww -අනෙක -ව්යාජ -පත්කරන -මාළු -ගැනීමත් -තේමාව -##ිකාවක -ප්රභවය -යෝජනාව -අර්ධද්වීපය -ජිවිත -කළුතර -ඡන්දය -සූත්රය -##overn -ජලාශ -ගසා -වලි -සව -සාරා -##PA -##ියෙක් -විරා -##ීමය -සංඛ -සමස්ථානික -මිත්යා -වානිජ -##කෘත -පියාසර -පෞරු -ශාස්ත්රය -##්වනි -##rough -නොලැබේ -අත්යාව -ඉතාලිය -නිවාඩු -පුරාවෘත්ත -ලද්දකි -E0 -ඩෙන් -හ්ය -##නියන් -##දීන් -##ට්ගේ -##මුහ -##වියන් -පොට -සම්බන්ධයක් -හරස් -සේවයට -විමසා -අභිප්ර -වේදනා -වංශයේ -ප්රශ්නය -ප්ලේ -##ization -කැරැල්ල -59 -www -##ුස් -##ුදය -##ට්ෂ -කිරීමෙනි -මේජර් -යොදන -ක්රියාවක් -1962 -ලැබූයේ -ඩිස් -දෙදෙනාම -ජනයාගේ -ආසන්නව -ටයිම්ස් -නයිට්රජන් -දර්පණ -72 -women -ඇරි -උචිත -දෙන්න -නන්ද -වරා -සබ් -##ැල්ල -##බඳු -සහයෝගී -##ටිටි -තරණය -දේශයේ -අවශ්යය -වර්ධනයක් -ක්රීඩකයා -සැකසීම -වැටෙන -ස්වරූපයක් -##ගත්තේය -අක්නාටන්ගේ -පෝලන්ත -ව්යුත්පන්න -කාලතුවක්කු -Be -world -නතු -සක්රීය -##ලෙන -##සුණු -##und -##ාරණය -##නිස් -##වරය -##රාණික -ලැබෙයි -කලකට -හේතූන් -##ames -රාමු -ප්රමාණයට -නීතියට -ග්රන්ථයේ -##ජීව -ගාන්ධ -##ාරාමය -එකතුවක් -මත්ද්රව්ය -ගනේෂ -##ශාලා -සම්ප්රදායන් -පැවසුවේ -දමිළ -අම්පාර -qual -අල්ප -කන්න -##වරයාගේ -##මේය -සමීකරණය -##දැම -අරාබ -##මීටර -මුහුදේ -පොරො -න්යායන් -runs -ආරාධනා -කතරගම -##ටන්ඛාම -dist -elect -ඉඳ -ඉංග -ඵලය -##නත -##ෙමි -##ton -##කරනු -##ලිමත් -අනවශ්ය -දිනපතා -##වුම -සුර්ය -##row -රෝහල් -තොරතුර -1968 -පෞරාණික -විද්යාලයට -එල්ට -නොදන්නා -කීර්ති -පුරවැසියන් -common -case -law -ඉවුර -දූර -##ගන්නේ -##ted -ප්රග -කොඩිය -##ලාකාර -හිඳ -##ටිං -කෙරෙන්නේ -දේශගුණය -##ety -නිෂ්පාදක -මට්ටමින් -ස්ථානවල -පරාසය -සාර්ථකත්වය -කිහිපයකි -##මානුකූල -ධාරිතාව -රඟපෑ -ඕස්ට්රේලියාවේ -මාලිගයේ -මුදාහැර -දෛනික -නිර්මිත -Car -අහස -දිරි -##ලභ -##ැඹ -##ර්ත -##යන්ය -##ෝගී -අනුමැතිය -දුන්න -අමතක -හඳුන්වන්නේ -ref -නිලධාරී -ත්රස්තවාදී -සල්ෆ -සෘජුවම -කැල්සියම් -අත්යාවශ්ය -41 -CPU -same -අවාස -ආභා -ටූ -##ොග් -##ෙකින් -##ience -##වාය -කොල්ල -උපත් -කාශ්ය -##වූහ -පිරිමින් -##ජිත් -176 -1969 -නෙදර් -පලස්ත -ක්රීඩකයන් -සාධකයක් -අරමුණින් -ඔක්තො -##බුක් -ගැලපෙන -පරාසයක -අඛණ්ඩව -sm -ඇග -ජන් -##කස් -##පතේ -##5දී -##AS -ක්රමා -විසඳු -සාධනය -##ince -පරිමාව -තිබෙයි -##හැම් -යොං -##මන්ඩ් -හෙල -සියවසට -මාර්ගයෙන් -ද්වාර -බලාගාර -සංකේතය -සැළකිය -සැළකේ -බලාපොරො -අරමුදල් -ස්වදේශික -ආත්මය -හම්බන්තොට -giv -made -උගන් -ඍජුව -ගන්ධ -සබර -##තාවේ -##ටස් -පිදුම් -##ත්වැ -##න්දුව -පරිහා -##වැත් -මැග් -පුපුර -වාර්තාවක් -පර්සියානු -ප්රභේදය -ඉරාකය -සංස්ථාව -පාර්ශවය -රීති -second -ඇගය -නැන -##මද -##නක -##බන් -##ළුන් -දක්වමින් -ගැමි -දිනකට -දියවැ -පත්වී -##rid -##rix -වෙන්ව -හැරී -උදෑ -දායකත්වයක් -සමීක්ෂණ -යුරෝපියානු -නිරීක්ෂ -එතෙක් -සිරුරේ diff --git a/adapters/tests/fixtures/hub-index.sample.json b/adapters/tests/fixtures/hub-index.sample.json deleted file mode 100644 index 0f21386a..00000000 --- a/adapters/tests/fixtures/hub-index.sample.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "t": { - "s": { - "default": "path/to/default", - "9076f36a74755ac4": { - "default": "path/to/pfeiffer/default", - "versions": { - "example-org": "path/to/pfeiffer/example-org", - "ukp": "path/to/pfeiffer/ukp" - } - }, - "b1017368d7a97b11": { - "versions": { - "example-org": "path/to/houlsby/example-org" - } - } - } - } -} \ No newline at end of file diff --git a/adapters/tests/fixtures/sample_text.txt b/adapters/tests/fixtures/sample_text.txt deleted file mode 100644 index a4281206..00000000 --- a/adapters/tests/fixtures/sample_text.txt +++ /dev/null @@ -1,33 +0,0 @@ -This text is included to make sure Unicode is handled properly: 力加勝北区ᴵᴺᵀᵃছজটডণত -Text should be one-sentence-per-line, with empty lines between documents. -This sample text is public domain and was randomly selected from Project Guttenberg. - -The rain had only ceased with the gray streaks of morning at Blazing Star, and the settlement awoke to a moral sense of cleanliness, and the finding of forgotten knives, tin cups, and smaller camp utensils, where the heavy showers had washed away the debris and dust heaps before the cabin doors. -Indeed, it was recorded in Blazing Star that a fortunate early riser had once picked up on the highway a solid chunk of gold quartz which the rain had freed from its incumbering soil, and washed into immediate and glittering popularity. -Possibly this may have been the reason why early risers in that locality, during the rainy season, adopted a thoughtful habit of body, and seldom lifted their eyes to the rifted or india-ink washed skies above them. -"Cass" Beard had risen early that morning, but not with a view to discovery. -A leak in his cabin roof,--quite consistent with his careless, improvident habits,--had roused him at 4 A. M., with a flooded "bunk" and wet blankets. -The chips from his wood pile refused to kindle a fire to dry his bed-clothes, and he had recourse to a more provident neighbor's to supply the deficiency. -This was nearly opposite. -Mr. Cassius crossed the highway, and stopped suddenly. -Something glittered in the nearest red pool before him. -Gold, surely! -But, wonderful to relate, not an irregular, shapeless fragment of crude ore, fresh from Nature's crucible, but a bit of jeweler's handicraft in the form of a plain gold ring. -Looking at it more attentively, he saw that it bore the inscription, "May to Cass." -Like most of his fellow gold-seekers, Cass was superstitious. - -The fountain of classic wisdom, Hypatia herself. -As the ancient sage--the name is unimportant to a monk--pumped water nightly that he might study by day, so I, the guardian of cloaks and parasols, at the sacred doors of her lecture-room, imbibe celestial knowledge. -From my youth I felt in me a soul above the matter-entangled herd. -She revealed to me the glorious fact, that I am a spark of Divinity itself. -A fallen star, I am, sir!' continued he, pensively, stroking his lean stomach--'a fallen star!--fallen, if the dignity of philosophy will allow of the simile, among the hogs of the lower world--indeed, even into the hog-bucket itself. Well, after all, I will show you the way to the Archbishop's. -There is a philosophic pleasure in opening one's treasures to the modest young. -Perhaps you will assist me by carrying this basket of fruit?' And the little man jumped up, put his basket on Philammon's head, and trotted off up a neighbouring street. -Philammon followed, half contemptuous, half wondering at what this philosophy might be, which could feed the self-conceit of anything so abject as his ragged little apish guide; -but the novel roar and whirl of the street, the perpetual stream of busy faces, the line of curricles, palanquins, laden asses, camels, elephants, which met and passed him, and squeezed him up steps and into doorways, as they threaded their way through the great Moon-gate into the ample street beyond, drove everything from his mind but wondering curiosity, and a vague, helpless dread of that great living wilderness, more terrible than any dead wilderness of sand which he had left behind. -Already he longed for the repose, the silence of the Laura--for faces which knew him and smiled upon him; but it was too late to turn back now. -His guide held on for more than a mile up the great main street, crossed in the centre of the city, at right angles, by one equally magnificent, at each end of which, miles away, appeared, dim and distant over the heads of the living stream of passengers, the yellow sand-hills of the desert; -while at the end of the vista in front of them gleamed the blue harbour, through a network of countless masts. -At last they reached the quay at the opposite end of the street; -and there burst on Philammon's astonished eyes a vast semicircle of blue sea, ringed with palaces and towers. -He stopped involuntarily; and his little guide stopped also, and looked askance at the young monk, to watch the effect which that grand panorama should produce on him. diff --git a/adapters/tests/fixtures/samples/MRPC/dev.tsv b/adapters/tests/fixtures/samples/MRPC/dev.tsv deleted file mode 100644 index 5b814856..00000000 --- a/adapters/tests/fixtures/samples/MRPC/dev.tsv +++ /dev/null @@ -1,7 +0,0 @@ -Quality #1 ID #2 ID #1 String #2 String -1 1355540 1355592 He said the foodservice pie business doesn 't fit the company 's long-term growth strategy . " The foodservice pie business does not fit our long-term growth strategy . -0 2029631 2029565 Magnarelli said Racicot hated the Iraqi regime and looked forward to using his long years of training in the war . His wife said he was " 100 percent behind George Bush " and looked forward to using his years of training in the war . -0 487993 487952 The dollar was at 116.92 yen against the yen , flat on the session , and at 1.2891 against the Swiss franc , also flat . The dollar was at 116.78 yen JPY = , virtually flat on the session , and at 1.2871 against the Swiss franc CHF = , down 0.1 percent . -1 1989515 1989458 The AFL-CIO is waiting until October to decide if it will endorse a candidate . The AFL-CIO announced Wednesday that it will decide in October whether to endorse a candidate before the primaries . -0 1783137 1782659 No dates have been set for the civil or the criminal trial . No dates have been set for the criminal or civil cases , but Shanley has pleaded not guilty . -1 3039165 3039036 Wal-Mart said it would check all of its million-plus domestic workers to ensure they were legally employed . It has also said it would review all of its domestic employees more than 1 million to ensure they have legal status . diff --git a/adapters/tests/fixtures/samples/MRPC/train.tsv b/adapters/tests/fixtures/samples/MRPC/train.tsv deleted file mode 100644 index 5b814856..00000000 --- a/adapters/tests/fixtures/samples/MRPC/train.tsv +++ /dev/null @@ -1,7 +0,0 @@ -Quality #1 ID #2 ID #1 String #2 String -1 1355540 1355592 He said the foodservice pie business doesn 't fit the company 's long-term growth strategy . " The foodservice pie business does not fit our long-term growth strategy . -0 2029631 2029565 Magnarelli said Racicot hated the Iraqi regime and looked forward to using his long years of training in the war . His wife said he was " 100 percent behind George Bush " and looked forward to using his years of training in the war . -0 487993 487952 The dollar was at 116.92 yen against the yen , flat on the session , and at 1.2891 against the Swiss franc , also flat . The dollar was at 116.78 yen JPY = , virtually flat on the session , and at 1.2871 against the Swiss franc CHF = , down 0.1 percent . -1 1989515 1989458 The AFL-CIO is waiting until October to decide if it will endorse a candidate . The AFL-CIO announced Wednesday that it will decide in October whether to endorse a candidate before the primaries . -0 1783137 1782659 No dates have been set for the civil or the criminal trial . No dates have been set for the criminal or civil cases , but Shanley has pleaded not guilty . -1 3039165 3039036 Wal-Mart said it would check all of its million-plus domestic workers to ensure they were legally employed . It has also said it would review all of its domestic employees more than 1 million to ensure they have legal status . diff --git a/adapters/tests/fixtures/samples/SQUAD/sample.json b/adapters/tests/fixtures/samples/SQUAD/sample.json deleted file mode 100644 index ed3dcc27..00000000 --- a/adapters/tests/fixtures/samples/SQUAD/sample.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "version": 2.0, - "data": [ - { - "id": "56ddde6b9a695914005b9628", - "question": "In what country is Normandy located?", - "context": "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse (\"Norman\" comes from \"Norseman\") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries.", - "answers": { - "answer_start": [ - 159, - 159, - 159, - 159 - ], - "text": [ - "France", - "France", - "France", - "France" - ] - } - }, - { - "id": "56ddde6b9a695914005b9629", - "question": "When were the Normans in Normandy?", - "context": "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse (\"Norman\" comes from \"Norseman\") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries.", - "answers": { - "answer_start": [ - 94, - 87, - 94, - 94 - ], - "text": [ - "10th and 11th centuries", - "in the 10th and 11th centuries", - "10th and 11th centuries", - "10th and 11th centuries" - ] - } - }, - { - "id": "56ddde6b9a695914005b962a", - "question": "From which countries did the Norse originate?", - "context": "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse (\"Norman\" comes from \"Norseman\") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries.", - "answers": { - "answer_start": [ - 256, - 256, - 256, - 256 - ], - "text": [ - "Denmark, Iceland and Norway", - "Denmark, Iceland and Norway", - "Denmark, Iceland and Norway", - "Denmark, Iceland and Norway" - ] - } - }, - { - "id": "5ad39d53604f3c001a3fe8d3", - "question": "Who did King Charles III swear fealty to?", - "context": "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse (\"Norman\" comes from \"Norseman\") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries.", - "answers": { - "answer_start": [], - "text": [] - } - }, - { - "id": "5ad39d53604f3c001a3fe8d4", - "question": "When did the Frankish identity emerge?", - "context": "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse (\"Norman\" comes from \"Norseman\") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries.", - "answers": { - "answer_start": [], - "text": [] - } - }, - { - "id": "56dddf4066d3e219004dad5f", - "question": "Who was the duke in the battle of Hastings?", - "context": "The Norman dynasty had a major political, cultural and military impact on medieval Europe and even the Near East. The Normans were famed for their martial spirit and eventually for their Christian piety, becoming exponents of the Catholic orthodoxy into which they assimilated. They adopted the Gallo-Romance language of the Frankish land they settled, their dialect becoming known as Norman, Normaund or Norman French, an important literary language. The Duchy of Normandy, which they formed by treaty with the French crown, was a great fief of medieval France, and under Richard I of Normandy was forged into a cohesive and formidable principality in feudal tenure. The Normans are noted both for their culture, such as their unique Romanesque architecture and musical traditions, and for their significant military accomplishments and innovations. Norman adventurers founded the Kingdom of Sicily under Roger II after conquering southern Italy on the Saracens and Byzantines, and an expedition on behalf of their duke, William the Conqueror, led to the Norman conquest of England at the Battle of Hastings in 1066. Norman cultural and military influence spread from these new European centres to the Crusader states of the Near East, where their prince Bohemond I founded the Principality of Antioch in the Levant, to Scotland and Wales in Great Britain, to Ireland, and to the coasts of north Africa and the Canary Islands.", - "answers": { - "answer_start": [ - 1022, - 1022, - 1022 - ], - "text": [ - "William the Conqueror", - "William the Conqueror", - "William the Conqueror" - ] - } - }, - { - "id": "5ad3a266604f3c001a3fea2b", - "question": "What principality did William the conquerer found?", - "context": "The Norman dynasty had a major political, cultural and military impact on medieval Europe and even the Near East. The Normans were famed for their martial spirit and eventually for their Christian piety, becoming exponents of the Catholic orthodoxy into which they assimilated. They adopted the Gallo-Romance language of the Frankish land they settled, their dialect becoming known as Norman, Normaund or Norman French, an important literary language. The Duchy of Normandy, which they formed by treaty with the French crown, was a great fief of medieval France, and under Richard I of Normandy was forged into a cohesive and formidable principality in feudal tenure. The Normans are noted both for their culture, such as their unique Romanesque architecture and musical traditions, and for their significant military accomplishments and innovations. Norman adventurers founded the Kingdom of Sicily under Roger II after conquering southern Italy on the Saracens and Byzantines, and an expedition on behalf of their duke, William the Conqueror, led to the Norman conquest of England at the Battle of Hastings in 1066. Norman cultural and military influence spread from these new European centres to the Crusader states of the Near East, where their prince Bohemond I founded the Principality of Antioch in the Levant, to Scotland and Wales in Great Britain, to Ireland, and to the coasts of north Africa and the Canary Islands.", - "answers": { - "answer_start": [], - "text": [] - } - }, - { - "id": "56e16182e3433e1400422e28", - "question": "What branch of theoretical computer science deals with broadly classifying computational problems by difficulty and class of relationship?", - "context": "Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other. A computational problem is understood to be a task that is in principle amenable to being solved by a computer, which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps, such as an algorithm.", - "answers": { - "answer_start": [ - 0, - 0, - 0 - ], - "text": [ - "Computational complexity theory", - "Computational complexity theory", - "Computational complexity theory" - ] - } - }, - { - "id": "5ad5316b5b96ef001a10ab76", - "question": "What is a manual application of mathematical steps?", - "context": "Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other. A computational problem is understood to be a task that is in principle amenable to being solved by a computer, which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps, such as an algorithm.", - "answers": { - "answer_start": [], - "text": [] - } - }, - { - "id": "56e16839cd28a01900c67887", - "question": "What measure of a computational problem broadly defines the inherent difficulty of the solution?", - "context": "A problem is regarded as inherently difficult if its solution requires significant resources, whatever the algorithm used. The theory formalizes this intuition, by introducing mathematical models of computation to study these problems and quantifying the amount of resources needed to solve them, such as time and storage. Other complexity measures are also used, such as the amount of communication (used in communication complexity), the number of gates in a circuit (used in circuit complexity) and the number of processors (used in parallel computing). One of the roles of computational complexity theory is to determine the practical limits on what computers can and cannot do.", - "answers": { - "answer_start": [ - 46, - 49, - 46 - ], - "text": [ - "if its solution requires significant resources", - "its solution requires significant resources", - "if its solution requires significant resources" - ] - } - }, - { - "id": "56e16839cd28a01900c67888", - "question": "What method is used to intuitively assess or quantify the amount of resources required to solve a computational problem?", - "context": "A problem is regarded as inherently difficult if its solution requires significant resources, whatever the algorithm used. The theory formalizes this intuition, by introducing mathematical models of computation to study these problems and quantifying the amount of resources needed to solve them, such as time and storage. Other complexity measures are also used, such as the amount of communication (used in communication complexity), the number of gates in a circuit (used in circuit complexity) and the number of processors (used in parallel computing). One of the roles of computational complexity theory is to determine the practical limits on what computers can and cannot do.", - "answers": { - "answer_start": [ - 176, - 176, - 176 - ], - "text": [ - "mathematical models of computation", - "mathematical models of computation", - "mathematical models of computation" - ] - } - }, - { - "id": "56e16839cd28a01900c67889", - "question": "What are two basic primary resources used to guage complexity?", - "context": "A problem is regarded as inherently difficult if its solution requires significant resources, whatever the algorithm used. The theory formalizes this intuition, by introducing mathematical models of computation to study these problems and quantifying the amount of resources needed to solve them, such as time and storage. Other complexity measures are also used, such as the amount of communication (used in communication complexity), the number of gates in a circuit (used in circuit complexity) and the number of processors (used in parallel computing). One of the roles of computational complexity theory is to determine the practical limits on what computers can and cannot do.", - "answers": { - "answer_start": [ - 305, - 305, - 305 - ], - "text": [ - "time and storage", - "time and storage", - "time and storage" - ] - } - }, - { - "id": "5ad532575b96ef001a10ab7f", - "question": "What unit is measured to determine circuit simplicity?", - "context": "A problem is regarded as inherently difficult if its solution requires significant resources, whatever the algorithm used. The theory formalizes this intuition, by introducing mathematical models of computation to study these problems and quantifying the amount of resources needed to solve them, such as time and storage. Other complexity measures are also used, such as the amount of communication (used in communication complexity), the number of gates in a circuit (used in circuit complexity) and the number of processors (used in parallel computing). One of the roles of computational complexity theory is to determine the practical limits on what computers can and cannot do.", - "answers": { - "answer_start": [], - "text": [] - } - }, - { - "id": "5ad532575b96ef001a10ab80", - "question": "What number is used in perpendicular computing?", - "context": "A problem is regarded as inherently difficult if its solution requires significant resources, whatever the algorithm used. The theory formalizes this intuition, by introducing mathematical models of computation to study these problems and quantifying the amount of resources needed to solve them, such as time and storage. Other complexity measures are also used, such as the amount of communication (used in communication complexity), the number of gates in a circuit (used in circuit complexity) and the number of processors (used in parallel computing). One of the roles of computational complexity theory is to determine the practical limits on what computers can and cannot do.", - "answers": { - "answer_start": [], - "text": [] - } - } - ] -} diff --git a/adapters/tests/fixtures/samples/cifar10/cifar10.py b/adapters/tests/fixtures/samples/cifar10/cifar10.py deleted file mode 100644 index cd00f026..00000000 --- a/adapters/tests/fixtures/samples/cifar10/cifar10.py +++ /dev/null @@ -1,62 +0,0 @@ -""" -CIFAR-10 demo data, adapted from https://huggingface.co/datasets/cifar10. -""" -import os -import pickle - -import datasets -import numpy as np - - -class Cifar10(datasets.GeneratorBasedBuilder): - """CIFAR-10 Data Set""" - - BUILDER_CONFIGS = [ - datasets.BuilderConfig( - name="plain_text", - version=datasets.Version("1.0.0", ""), - description="Plain text import of CIFAR-10 Data Set", - ) - ] - - def _info(self): - return datasets.DatasetInfo( - features=datasets.Features( - { - "img": datasets.Image(), - "label": datasets.features.ClassLabel(num_classes=10), - } - ), - ) - - def _split_generators(self, dl_manager): - return [ - datasets.SplitGenerator( - name=datasets.Split.TRAIN, - gen_kwargs={ - "files": ["data_batch_1", "data_batch_2", "data_batch_3", "data_batch_4", "data_batch_5"], - "split": "train", - }, - ), - datasets.SplitGenerator( - name=datasets.Split.TEST, - gen_kwargs={"files": ["test_batch"], "split": "test"}, - ), - ] - - def _generate_examples(self, files, split): - for file in files: - with open(os.path.join(self.config.data_dir, file), "rb") as fo: - dict = pickle.load(fo, encoding="bytes") - - labels = dict[b"labels"] - images = dict[b"data"] - - for idx, _ in enumerate(images): - - img_reshaped = np.transpose(np.reshape(images[idx], (3, 32, 32)), (1, 2, 0)) - - yield f"{file}_{idx}", { - "img": img_reshaped, - "label": labels[idx], - } diff --git a/adapters/tests/fixtures/samples/cifar10/data_batch_1 b/adapters/tests/fixtures/samples/cifar10/data_batch_1 deleted file mode 100644 index fb49275277afe6110e28825a12d11c76463b2efb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6380 zcmXw;XH*l|y7!rT=FAzL(XlH!D!rFLfFvZ803nb7A-y+3LK-Cy2qA(98JoUuSaVT-iUEvafx3IfdDI${=2DK0heCP%0O3^YgjNx~$o>`oRfgI`$7 z)AvqJQ2)?`427l6;n1sXwPu~UveaTRm@LgbgF8Dqnj2O*tpQSswVE=ym@krL=P9y9 zYE6m0RH?5p7*vW9=T#y299_9mmX{|MX-msBB?ZOhdW)t^Q*J9SD$aKGB8v+O^F2>`bUc!f zqciDs3TcT-B*~R#u()`NfJ-T=HWf=K@$N3%TvfTLqC}~wDlL|zC!qKucw|hPsl?Kx zld?I~xB^9awLw#5)*C9NNkHGEiOcGQSez=)*ksNZ@yi5eZG~2$(v~aDdQ?Pc0O{QA z?#xs)Dn(*6>NE;J94n@+`|u_etG}o(W|?QH`}#3y+K>vV6Uq;#Kci# z2kupMUp)T%zyJN~>t{Eg|M|W{T~@j@9W}L06|sc8o`)Cfj-S8x@z=LMKc8=0`146m zT}`z~nO|R7-C)d=)?WEMHg@mvvzLo!rY7cgjX!_bZLhY}*|g1t`Kq!K=J+q4cO88H z?9l#xyJN@Ht!uAe_nRuqHRh%|jn+_M-2LXSrz1o6j;V~AroM`%v+v$LXjc^HW%8

M~k+X9rn=`W&N~x(vt=Fnr8v17r?CzVNYp!W-v006# z2CKCyH&>~v8n@~#mZ~PLX>4Tn!kNLQI=iFAQCnMAqf?d2q_T!nHI^zzXJdWS(7^b$ zbC(>JT60rdbG3v{5LFa$1Uu&(22*`w%Z~1`x&E_@Cywm5ms#6e3Q{r5GJ`@^eW-P~ z)@U+XT6+4Y`WvU(I|d!b@(QiSSYt71l*ZYsrn85dv?Z0c#+C-7rlr58T-(%aw6t}# zw$_wa?7lf&cnyI6|6cV>FH-DYcPw3IDX zr7zP|HMTlR%dBZN*X?8d^p5@Dp9eu|6VJ2*ab_RgJ4hsXMRdb(P6b~~yYx@z+j z<;9GwUALN4(LsQSWV&RDx-4Eno`@?Jb7grVk+fKE(v?@JOV>Gly9J1&lE|3E_(W7< z5(bH&GKf?hhDv8~D0uRwe{Bg(VlZ*3X&7`egUp~3F+?^;K%-I_A{K#=?7S`_CJ~hs zoj{Aga?A@1adNt$k6ek;%Q_$mrY{kXJ>O6ECMPE4JbI7%r@ClN`4<1bE) z=!EtVlj`5%U1FzWT}|O&XGy-L`<4~vW+xqD#@kbSea}_ z8kxsu;c+afkWJ4LNwfKqfe|L)Kx2cYI4e^s%Aha=d@2r0$rSR_hz1G(?_gg~KzJk!6bf1I^zBC9 z2vD$pKv19;AQ%h=`UgjVqJbfy;R%tUp?<5scK*@T-P6@IFx2KXNYfTTx1+D(AURh%SPv|n>@V&{ro*$1H7HL zZ+F|W-o?wqFUTVa6C3EZ=?AB;eLVcV0(`b@4~lT}c3Zi6_4|J^)d+0x#?{-RL9nO@Z#P$HP=YTI5a1sW;1dzPZq=$aKY*i= zAzL zIYY>pJma+&cTeo!)p_FSd|F6kSV&L=CIko!S?}wK?%x3>R)s~1PUto9$Fz3RnW0}cSMi2}Tg9^pi&RrRb{eIQTAJ#_1d4&W8 zLc6X^H!(mQQE((QEg~>Jue07x+U({Z>Jb|20`T`vAr{qF@DRM5xDaq8FaiWa!4r_4 z+ugkb@o@K`fKX&ulu%MsETh81!yr*nP$(1z@ZPra+vNd*qyWFLq}WIZmMp5Ou%bZV z;3#+u$jfb`v)j6_m&NcMD{XIRx;-bU6y#vVkk+{vyZoVPm;K&$g04x;>3`>LqLSx`D@eu(* ziDEi{ylSnxn|nxjIMB^E3=#nV!VodxK@ezkOaw$A3fWBGu<6Im+kog~h*xkl3>X3o zgTY}QzM!ZCXix@u*)opX<}Ge6eoL)_M1vr}u!u-lRBVu|cVx8Bcd*2Nt>gG@b9VD^ zaq;pB0f&VFm!O1!{awAbdT;yA3Bq!7le5V22`Nd57#xYgVi0IdIzANvf=0rjK@edz zAxXAIE?b)+{HO4LjK(_QlFL|+lWq7vm$6a!!+(52Yne!(ZX4cj%N1ve9yM(S4OUhMpsL-u?Rim!BWoI6O8r9Zq0yQjyh`g8Hh8UHf() zx%>0ex1WA{@#xjZy?j0;iv`EiFbVM{b4f+h#JPoqbK^t3>V5B?U!6ZQsid>$sfZ;U zVv#zlY5L~b-o`2gODc6KfB*W`)p>(jkU>eOu@J}vvdN@rsVZh>WN}CeZcyR5pI*Lx z(^po?prnyAQsS|6dntuTCZN+0;XV;?Vqxvr^%rmVYYXrwB#A`Br((NvVv-|+g17&$ z);orwq!e3PPrbT)#4hFYxXBn69;He2bPFcxgvl&*RY7rNymar(%LT{ekc>)zgDKb; zBq|A8($%45W@rsUMT95%$m18MvKx+c2odOXN<26uL!@e`$(OSEYAwGg&OLSR@r$e0 z_G9NpIY|N@69dhn=2exelu}8dI!m7Bn?Aev^18imZtCcmDmRP4CJ3?AB3ZsDQz$d4 zOOyPlhaWt|-SZFcK79W2=U;#R{^i-ln|E&CzIAP=`@p4>X9vy4r`s?7 z_2tVSOTo{d|M>XF(>phA-n?<^T7TDpg$q~4O=IW!?|ymz?&X79moJ>2KRC8~>csW? zckbL6?;O2&apCAd|JezPNg>G=U{YAQMG^#vK;~C=&tE^Xckh|=mv5ape&JLiiRcke z4g-)xl(x3I`ur4dQrnG_7fzi$d;aRem4)+d-OT_7D+*L<)jxm#?5D+B$9hKQIy%et zU%hz!>a{CZx=V9{$>``9MOjvdwan7mXWluX%atZ&7#sUWXOEqCL~h;g>+9(m3KlkN z7|HRz-@+&!agNK|Yb9Es!(P7Dy;p|0Pp(h{L43>6vXvT1EVTYFPW zXK#P+KzECyu>!a(*!BD6P#T3J=7C~EoW0$s0}X=GdYf9UYd_GYOpc26^jzUhAQCwA zXr#Y$G?+4K4e(!5MF3{xc0U)xLF3e({+Q$>0-2TM@0P_b?X?!j?|Z>Ky26?&&o|`M|K5aA-6zz}sH{a@pt?#q4X}sb>kK z+Sc|1<7zx5#vdIS=)QjCcPpVG5!fu1zNe$7&VTJXRHY(^7qw;0YUi!1{`t*vXJ7(N zURhmJQ?u7BzAPPG?Hgi77aZ{ae?b;Ciycp5;t~<{Hl<<5 z(Fac+-aR%oZ9VY%*|qu8lPVUMm7bJIPm4=7+bz@gZq4lLwwIVKVO4Kmy}o*^QY#TM za7=D;aw4_X(JJ!6M8%PRU$GLZx_nLFKTuu^(LrgK#!n`Bs z6}hy0$C9A~CFbov{N|jpvp0u~iviIIap(*tSvRn=GFQ>uTcr*I;Ep|gb0{uvvR#;v zjG-q&gGzK29ZdzYJXKStz9b$*Ir{X~JfmRp^e{V-FW}%Jl`?&6O+|T$#@<;`N{Zv2 zdiLUEmS)e$h*- zR1E`j`#SQ{_$Qw{T_{x!P3`F!IJg5FMU-di2FCVuH}{->^=@&paq#BzXIG7y!RbAd zBSZT-@V2QPllR`gd-7oM)$f1*GJNdCv*$nEsMhq%P0bAM9^O|w^X8|IA3y#6s#|AfW*qW8Bh9CN{r$_IU;g^?`S(A5`{Tvp{kwPX-oH|(Zk(Q) zurh5Etv5a|@qhn6{ErULUAVLO;Ng`Hm33-rU#qHOe86Na&6e`hQn-c10(dxyE;RR_ zzSLh;J8|&f^x(k3gGe67D~=cnU?~{(2CH3;fuVPv?d$2EoSK@Qnx38QJTL^LF(ScL zJ(jyK9zA|^|5X2;(UN>x=aJbH$BrC5)^F2<5|W@XT3dF5QDtr&tnS<|N{IHt6jwHN z4ey_;kMVZ%@^<$KgNR$TOjMlTa%g{u+mKr*U(VU4u@30=^dd)$;z#vag#PC@&Bb}EEc`Qy3DRqiOG$j><#;@zKGa8@~T$MQjKliJ7l#XlOUOEL)kN z&fzm-wy$63=DF^hZ7Cr@oh>A!e zAd!hftwj|hW2cXs1;y=$ZvOJ?+gDHTnTP~3DHWEIo)#U|>&V;L-8y$it;+U!cpz{$mDk8YnlK38+_m&ccmpFdJcW>Dfl>4~x7(As9( z+>?j%2ZtIBt@W_FUthkwe%h|*XA) z$My|5cFdgFV~+we&b@j&8N}!<$Av=UlEZvMYWw=e`y1NqZ4*ZZYO#q~XMcWs0!?r3 zv8O;8gw&Y$+M1nv`@6cE+jbx9YLHNiFD$+~gXLOujr9fD6f`E&UQs_jynAPB_r6m@ z%~^Eag?lf~;|XTHrmm};7@L%3Q&_uNt=5L&*@dY-oltS={1sxNOcBO2xhr|*CK^wXWY&p!SAa_H3a$4?(G zWzyA93x6g~GuH3q}`0!EztGL=+CnuXKRi~D)|Krau ze=hO=>9@zXZ{EFs|G`2rGv8cYuSkN38-Y^ZHF$Yc@%UR0{hLqcin{My0!;|9J+W2mwl%FXp8wG5ELhCz5Gy!N*GreY#I zwd1()|KChwjkU&HzyJ2pIFSSeH+5JRUp{*D@aBo#2lr;s5{m6Mhuv0LcVNT;=TXp! zDxTLW=KQ0( zPg3Wk9E(ZEVHug4lM559U`*)hHIicoRd=>o^kvO`MlBvqg+sPNr4m85I4OGDW+Fzis}T%-s8F{oX>Uz=DW;nAbFty}L0`0=~%zTe;%&o5c}4Y1Y9Hpykq8T`Va F{|D`+K575} diff --git a/adapters/tests/fixtures/samples/cifar10/data_batch_2 b/adapters/tests/fixtures/samples/cifar10/data_batch_2 deleted file mode 100644 index 8c2b2d809f91a08d097095ca472173751a69562e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6380 zcmZ`+cTl70dEaZhfEpkqBv{(g`?B;7LNw94=tu}vgpiN~0z_{T2oN9yqN#TTdwYB9 zJKKBboV|DFvvcu{%O4rf#Bnm7Ofut1{>h)o^TGNu@g(n{k5BK@KYhR7`#ekUDa8+x zsveFrm}BEp;&%qc?U|bN$`HRdD1JX_bV4SaRAh{bBx4yu*|?O)kVqJc zfMLnlsAytJDv^y!1H>QPYXwZO?xo^~4G-4EkE-5biv2dl{_WxbaNP6&y)H(*)nrK( zlVbs5H2vKN4<5*}#F&N$4exAohT0JgTZEUJl ztDA}mHjg!$g$p5(LdlOGlfzgW)50w^OTM>rVA#;?2@5lFazr%=QE{=caS4eDalGwS z@rHJ9Z}-rkTi-mKEiJ03njfjn%t}ei%*sel6`!4GHM`5l$NGzdea*>Id1Zam+-Q4# zPEKA?W^{Bkd;j!AySuK}?VlW<8jj?}h1E?upk*N~DuK&`4MYk2nfNk%=DI{T4kZf;U_ail-iO3O>@TIN|yT5Ur^S8iB*Lgl3C z6SZ_zDd{p;_O!<{1=%H)%CV99np#>9HMf+~w`w#GR}c1%boSe{GaEBy#nh%H!9-_c z`>24;=5oduEKYA>Q&(quGmFvPH8jv!R79z(A!v3MWI$wYieui%L}rf zWn|@~C$IKV+a~Is=26CFQ;fpQjLh`(w3MWzCy`lYX))o1kcF}4HU=%fyu18aVq#%> zYI<6FMtXW?W@b@pR9;aMfy?Qp_x6p>)WtWKVTxy_=ah?!%S%fevxS8PLPh~mG1WiF z<8NG5l$A7+a?cE>dflORcXPcrsfj{O4-Gy(85@^e);!3bl&R);J(W>-BCdp)9UhYsZOiW z>}qu<7iO!?;jq~qF1y)mwOA}Bv&rOgx*T?^)n>EX?GE>~*Wq-#T@IJW;|5Kq%Vh;4 zo6X^J!M5A$al5@1vQ9s?S{ggkU89gx)Z7d_r4n+6aZ;L z!8Sb!&5ZOExy#+ufgz#(;4!fe?%zREqc;TTH1& zwGa5;AA6dboW`kqLXLR+I3g-KDuS^xH@UvIyQ?`kJ=xkm6y=pyRLlD*$tkh%iAjk` zaeR0aRO*Gp!{ZCxk@i$pL~H4g4>dhaPtSOo5dJuPbXTw2-CjM`X$=Ve$MY!7opX#1 zfKpaYEa7n!Z%#UM{n6g>mGMY#*xh6obqw=o7(JyWh56O#VKM0~tsUww&Uf~fj;(-t1Bth9n^vfD)aE= zC-MQgOu-X8zg*vyl~p&kDTR`*#!k-Elw2kji)GWi`e81I&6pB%M%k>Py4p2%f6pk3 z4c{gN!~H!SUG1HnU0w9%+Nz3zqVl5Rm7xau>>!QSH9J4YuPQDnDK5;*&Cbq9Eu-b9 zCd8#I^1JE$-rA~uYIagm$+PU-+}ympyn?*k%B=X}^6Vu3_|V|s2xq1tt%DLoS)5;5 zS=-p!+T5BiE-soFEl-$}4Gr-HTgIx&^0tT~`6PF^t+Ko@ixk~nP+0sd^Z00gsloqYa!l`Ff7Fwt*r;$)2tF((Au+YQ zb%ZCDZYsERN;Dx1U(N#jrvd((=wlPIxkbSL?ymM=S1Dq2w>8vMR?=Fz@@4hD?gYWV z;lg-zae4wYaBk3PcM<&S&rKG97y?F{$z(B`%|@fi{1*QJF`xjK*8}X}a@r9R08NMU zFZhR7A2dB~7s3oq*EIkFwg3!o@sH4k*W<7OM}QcCC_)%;y~jV|$qiVuIh_swsoU)a z{D4P?3!WGt6iCT&hkw8zVg)8u6@7|J_v*0-)uF1kAF9? zkH_ou!SeVJGP=jV&3uo4yAx0e-hJ1%z#x#a+h#%V4*-6Pe}r0YJ_Krk3_u9_1++*-^5vyb;nMudu4Yp+IY@78>Wu%u4`gU87KNeD zO>o!NhefJQt#Ri_Hy1fIz=yk z^5k)3OiW}{BZc{g$0w%6gb+dp)CT?D&YD5Luh$!| z4!EVQ-6JzYty!rl$r+J>r{`A7vEk}qlUd1NPsxTl@^i8>%aTcPIc=ST zr{8%Dr>YD0$;rt9r=p9_ln&5~^NWjXGs4oc+f;A<@Zq`Fek}2Mw8v-s!bV!Fba=Ri zQeD?cqqg?T%wPUOJ*nDKD-^G;HV&t&8=HHldDDzR!LsH+uRGD}^m-L{R5ruK&#t=UPB=$Kr0mthHzrX)znbm6Gw4c&Bm*9c#0Zkc3)FNMsR@s zNI=a>uItQcqS8~I$rV!qW;>;#Fe^O1x3nN9DZy}Zw9Yg4;e*Lh z@rjw#j$!tMR6Q@~qs9`$2sIPMQSm9+aQ=5Q$0aih>nhEzMtiisFv;xcXs)MH8rpb@ zRn^|n@yYr5$?=&9PJYALndR~fDhH-G)SX?K?@m&y&2o8VGMS8*S4I=O*$x|WzQO?u z=cfy45#XeRSJw&$JG2Tw8F2o?$?O1XK+p^H;6R7~w%{m-P6DA0AQh+EWwXE*h(YQE z~xu6|D_zYs3><&Qj^(_Kkq*HM^Zb1(r6ORw@k30b|z6R=o{DA=+_7@-C z+`wV)yZsP)2CoNBexL6-umEBLN=|XGRE%eGKj7XC8X;VmG6?Nr;$NnWP%iF%P6!DJ z#si4|XF=0Xzz5-xe<2|R`23YT6!!5!$ZYU`%Zad!5B^?`$A526gdn6)VhGrW5Xqs4 zB6JtQ`1|-EC6GuYGBUHk%t0n0a&U#m14AH|BoZNv6c$D%62rqtG2!3G4pAl!>XABTq$h>2-cjO|6q{Qj40A|fXu>&|(2Xz-Jg$IX z`}CV*awt^rRvw10v%2gzC$s&A#){4xvFybg1DW(z4uL|Rxo>w2CNo=o!)TTo`Qo#` z`!f69K9oct5hK;kFLE+e`bRugb0rX@@L%Y4o>$!+&|YInWhU1H8REkO3lEJpTz&fDBa`X1NB#O{k+Zt2{ri9a+w6$2P$HQW@gyRu!=U#$ z4HuT(&NB_Cx@lZ;`I~>{Bt(WG4>dYDzH0BxyebzhoB5QU*4FM((ZciZ-jv5hhLedT zQXZvm^Yqwh=_LI-P`u!jGB`^O$Fw)b?$cj&lOr2la z(r#|-oppDOjBo90F0W1}6j#4dNczN!tjetLHt z&X0{qm$o*CB1)#KYsPof_TRI&-Hy}Ixy2L1n>Sy4H8?5|O0GWfMz?S0rB`h5#rs;9 zqs@G^p!v#0FY>)$w>J$A31>H=>AT(J$T7NLm_7N?OU3c@y7$*#!;c~BE$?Bn1_oj| zI(d6`S{0=^H>KFZSu{ZdQw(bxAsS3t4RcWba;9H?971v#fvwe z9xN|yNtryhfFdtT6XvuG)%Nn6o7k0|{9%s8@uN4d&W_iorJFNjl-A70m02BQ;+-YY zl#Vq#G&BWN`|*#ywC>vuHzt@R`Oh+nifHr!u6T9*Qq?~(AUqckEp-+7 zPbmeJ-BRB01V^;VWsi?ZO8lfwcp zLF51oDu93o4VX_55n_SE1qb1R@i;6RONt5(?^k7F@8yVEFk%nw5C$6+U)-Y%UNa%Fd&eLLC3IBd)b_bfH9-^qaO+^>Z{hAja4r9C7(_W^v7awD@w1k<-z`R%<@}6H)-E zKm~z;bo=(^&a!oNZ*}89&@;f@_~N(!O2;6H2LgQtlC?)ScAHk~JDa_}6m^S)i{Jjs z&yw&+`GLf6BB}9U*J{|_(au$F&2~O3=JAFQXB4(7_ja%L>u9`{t**SLt})@t=l}HCkEwAnk0W3P&2694 znN;S3z6!<^k2kiyd-eKv|7LZ3L(9)hND3$7<1^&zM~3~S$(H86mNDI}@8hq&RSubd z!yW9P4Wvax5o0B?`K`tI)t#EE=Kh(bg&ox@ou&R-A*PEK7)8nW7%6XTacc7F%bd8* z12&79H*)*!uRi{PlFg7VZ>{zba>ok`MwS;(zwMMA9jUs-l1dv=($w4mKD)gH=Me|X-IVZP>fw=$TLMK!5)jTR6@Zyapt=s7p?wnYo(Z$6({ z(I^J1`q_LIi!`X_Q4?Yc3Mfh8sfYa|Owr-XFTc<#r>E#cY$<2>u}nU<+DR&f*E1?K zze6@Na_aMZ_VMAy`nGI@%NONvv!WQuH9eFbZcD>(VT*vpzq)$)lUElfn=@0JbG*E& z*r2?`#*vBbMX`8qsBeg+(Cq9z|KyEj-+s6uWB+q0rz20|N#M^}QSg-cbR5 z{#d{(+TRcMK@MB@@gc4s3bDgL?|=(<_{bl!f(Zn+?$X0z(S8`X_kV;AM!)a({zDW< z?*LLKGN*>w-_+2ou73}WL!+=* zBqwwr4uyL3u74O!teWXx6OS;vwpt(J0@09yzrTL~DhTKQE`c&2n3r-I;%bk%Q)3oE zKwu#1FLEsUVe0tG;)GnzhzyT9rH!rVB=3U%w{kS@VaC$3a&e57DNc?`-Kecr?n&N< z@eA?;_W=PPL~N}O@4{|gn0OgPJM+=ua=!44f0llaxuA-uz z$2-VcjGek|mv)~dN9V}nbKNse&7hgwz7GQRjly?-DuB@~Vg2%eo%Ev-nT2TLP| z8+{Z2miKF4L{Km$0Emwe7)+IO=Vjv(#b}CXq%bTdKcDUVqLDzrV*-F;Lb1srk)(@O z(>Gg5&PYs1%P*^6uw2Cj0imLBxY*PZ#`u_GG9$Z#FD!{Eq_(t;nSXkIkqR9oIS`FX zp>Sqb7;}@QiL}0!)>g4nZT-==>l^M2WIDv5{K=6c0)?DE(2|o!$!l6XKR4fg%&c5_ zSxYG|ZXo0EsGxx%Hn)$?n9NActr{H{OiKh6bwX!HdwI`jO%lluJJi*|?r2hapWsSn z+ge)U8ctrlGU&UZ5gXwMDE`siiD@mo5yi`zQKfRKa&SZ}IX~B56jn90w9OlKF}eH* zQYw#HCy*@7BrBB+p>3@obYr_J`)PRzt)GJ_7M481HRV;6HPo-GJ7j&_ofnQ_&Uj~W zTv0_uaVeH2r5DGACp~!<9T>4tU0c_sxP0!J9%^qcD5-9%C=BMX`IAlftoPpkAP5Dg zPj`tze|l|_5A_bWR=3qRCH2P!H%FJ$Jgw;|$)`nS)|A$*sg2IlS@BSNr=YhwIT!z4 zY*-1cQ^M_~%PI;AirR!za-G4s!e11znkX^Ap%F1p3rlI;JkA_5yRM*qrnz%`!RVY_ xobO0UNQfXLMkN(>)|R(7v@$EpYb#sZlP7z)(-)Q+iinXdCP~F)=9nzwzX40Ma6$k8 diff --git a/adapters/tests/fixtures/samples/cifar10/data_batch_3 b/adapters/tests/fixtures/samples/cifar10/data_batch_3 deleted file mode 100644 index 3e86141a9c832e4ac5c91c7c355974e585864a39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6380 zcmZ9PcU;qFx4>zukUhvG3D*u@prFlp%`j4cUwA zO$Z4PAnX-3$ac3?U*CK0gY6xk`}-sLC1?E3^PKZN=lR|F>K4_??I-KY0fFZ(M^L{w zP5shsA7tO+b3ZLQ8xR>l{pvJzkz3H!s4HPHYlA|=&#k=@bvg1vKzMjS49q|LTu|uM zh{*7$phy^X@n2f7t7rd`Qmyw{-KE<6^hF>Ql1POfrNZ3yeR04FahD4JTk~vWOxQUX z72)%xm6cW01}bu&)xIwhsi>n=wA;R~e7*qx-lSp<9z6KVe}e1t$3Ck_DmE}_hZVxg zih@NVkth@z1w&G7;V=XYiX&o)XdHq-!eY^6A|8o^!x3;I5rIS@VF)w??nZ!Ouy#-s zhO`Vva6|!XI1K4XfFm$?2m%Q~E<-|LHV8Cf8HI?oTY|)*P;e;D77mBwa1c1m28Bbz z5Ez0jVb!LcKW}lyU{FW|9F2q{kytDo1%n`wXe^n$eE+q|Ih`TlQGO77V=q@Zt4L%XSC~xe1TL?G;K++QOkk?;GV~|Ne98 zVY+1S{rrR_7>2{3AOF*K7kmCqZ^V-ICyO;=de5g%#wxjFw6`x7kHjL$LwS1(#^&bV z_UDD%x)jW6roH@+;ZrA{8QT)URzorPxgKu!i`l7(5tdis;a%5_oYv}JzD-fqr7Zu- z+L~YspPw9^o}HVUu%yRpPI+I6%+K7iyHKS_`4I_&SlglDZ|3J`U%Z+g8)r#0ks+}U zqqYYZ%4A7iBq$06g}@Q-=4WT04>i>HwJQ=IJSmO(;Zm+h7=LNK4GfM)Lf{UsU(C)J z8d!I_r&V_{X<_>Uuk!d0qJKew9ml|t1j_9E)<-2vO?7p=6@{7%h8INx7{XU~cL0t(Y zAYc$E0)ZuBH@LaEZ~WSYxF#m)UewlAY4tU&O;_;*V2(y2AWL_<+d6)~bJr1{`zdjO z->kZ4YVYhBN_B?8VZa;>k4agv7`@@AJ->t|+&I0`Dc;o9+uJova|a~}g(3+k_U%=K zMWhvLJ1ssV$l2A}6 zY=Lka81QBTgV;t)VM$5Hy+u0sOmS@s3~{fDMdd z3wGPq8V0w9yTENA)-V*{pMW7RfdclR))+Jd0>NOdp^(K0ED8cc;jn-4zZ3>rr~;4- zkWCZ>Zfy;RBhf^X>%PzYe~W?HSVJH{1w;vS5D;*KBQEo2jeq9f0SbeHzaSt)a04L` zK{U9fzU-;L_>W%b3Sdz%8wkkPVi*AfL6SHAFaQ6vv0d@*( zzxl@^kZ@3Dr0>?EVK5jJL*AKNnJwptM?SuP|9Yl*n++1Njf5l|kgNQ0(8ab#Bl7z` z{xOyIL^bk$ZrpMXg2SK+ezrR(eEp_3(rK+vv655N{O898mRdI6+Z&66W09oEa?kR~ z7xQli@`7)MUgVl9=KekIe=4u3GZ76|jlsPhlJ(8c%}$LmJ@a<|5LI8@UcKKvRbxt9 z_T}P5AUiK-p3lFSo15%^5G(iEeI}wTd+V-}THTX92&m0sG79?k#fulOUOpclDi`Xm z`-NrP`Z1(Xt;_It1nk?`Kw-bXn45V%R9Dkx)@5crE{WR{RwS1{2zLj2iiKOlC~scQ zO*OQ#uAAo@Qi?gz-WMaK^31qH=!I>A!tvz!7n9@l$z>H??S{(InA0cE6mznlTy|Up zgA?$e3D}HIjdnL&yd@BEi=RaK?>;T$Cp^9V^Y~ z{{bg}!UD?&6~2A_4&R-t9Z+t!a~|LRal_NrhVHf-4mhZ_4H5=j?0o2Z^zxmXJ&t-N zWk0;SWqnFpuVrv7e+?*QkRJpjK5NyN5WM4#6W7vH&#zma)ZQ~ZGBhsQ0lJHg4a^p< zNM7$?{S|7HS6F<&DyLg|L+9w|@KmcOC`kk$93~82`44A^mE-9M&t;U`EzKtL$mGP- z*e#HK1i}Fex#Hoz%=I7m^=A&dK%zR^%)J9sGgFfzymgDA2pk@1ec{Z`rRWvw)@^Y` zoi=p!S;od^W@lz6`pec@lfh86$v?f_eaGSBdsm{p)MG=V)6+9kBNKD4M(^5@To>3~ zYDXp!h(r?6mf+$@B#>~n4ofLZ$PPqjS4T&OPxi-#cNkcmfV6 z0W}Z+g$OR^C2nW=lMDO{+{i!->}_!iUWm(=k%=UyuTL>2|GhB(-`%ud0>TCwwm9&G zCA&Hi9hPm&oc;LcdkdKVLqC(2WAQ`+2#y4nfd{uP>oz~`dim+or+Mp=$%Q~7 zl2`8j!I5Z3wk0|2%B_4NW{F2Xe)#Zqrfnx!(w^lGZUGIA7oF^|g#8y%jc z|M_Ba;1XepqZ9M^>cF~BABJv!z0vC_w;);d>Qf6#A)Oeo+_WP*QdYhZo)^FSUBC;U%h@aJJg$9Vz_zW zOjgpqu!>q!LC{j10|kpClKusp&yDJ;YilLB&+=&ThhrJF#_ZV5NRq=cGLE?N&v&n1 zcJwkrYG>;6=<2(E;c>Nw(qu0jmh7;EKwi51&D*(|jvRVnTd!HgPY5}GiK(nCi&%;x z;g>mM?Co&V^AiJ|*ODbd35Onk_1GD0&Ev|%H87kl#l;Z?VjP*9H8T^AosOebq~6#S zCK1w0AO38O$5ANuPFM`qc6vh1VnwgnxIglm_wC4PMpp5!x1-msw|6B`NVa4mx%R$q z?62RT;iQ!g8wxdL<>}`y=uAh~5F7}01WFU)@jF{k zYd}tMA}`sy;n*GTwGLL!N#&K9M}Mps=olG%xXuxj6~&%HboM)dT77c&E}sKQw1V6F zcH|C?0mS$}FO(gL;%Jv#wPg{6;Iik!ql(<9Xg8K0RNpRV&J;X&QmyE-(M{^YXQ z3bF0#Lt{y<%biH6$yYsA?fB(@*LU_I z?V}Tu;3)a-^_v&ZS?&lICkH2TZPrD=kMni5c;qpC*%ID>({Q|x)Yyp z_wL<$_aCG@OiNFXIT3K~jDOJ0(i(-7kro#d6MHM}*WVKUmS<$#IPP~TC?Gg0xv;dP zFt4m6FF!Xc^&U`Iuusp(jP>+67koD8%I%C&rlh`JQ!Q21=*6WeNl6bLq&!Lo_Qy|O z2#qe38tXfUo{x7K>Khswo7JU>za=in({K13J06lG>>eJp3{SmzGoWVjRgEU2GAH3? zVsdI)dW^4^*R{&N;rDG`dDG#_&?Dx3UVu$qPmW5vq@P@y%d#{6tO!* zWa{j)v}?=dsuIt2?stT3tzBKMjVf9~Nbs-s!goi=TY3j4pAWTKTJm=|t+^xW9_em1 z8`RbL)H4ykQujwm8oGuir=AawbgOP2-F2%>Ki=2YRI8CO;sX6{gdL;`Yt4P5hJ5Umk9YhzChY&GAK1#wYWUtxS#L7 z3v{Vc+1At5($-R=kgJpmMU75bEmz1TjLa(swjU2GsFn!yt?dSrxyfMaY-_I9>*Y+b zR3c&JCU|eX6qm;l^0lT`V|`OwTi?X=Xm4|~mMs*Es#zuJ=YNcSR>|YBWX9I!)-KDy z$mGn-^kl!0FQ~3&(@U}<_GU9Gm`s{TZ*J=!9vU8>nwfk)J=iD|R0|li@@KIJ85|m& zP7~|R9o>DFf#I>K(ZP|yR+UsNpjDPUy}nN%WL8zu#k!`hwwBheUd!mv!014$Rwk*Y zm*r)I?^7u`6%{O@s=lMOxfz^;Ef&jgPm@|K63_~tJW9AyUni)n;8d%O<`z@Ev7x24 zt*xV3FXOV9m9)yj%$toyIfo^XYK;wbI*n4P(P-2PsgNh&F!^#x)uSj=ql(AkOI2F6 zOd^%3v?`TGudl7CQ;C%tIWsl1xk<%mbNM`;K%!8qG_`tTV^h6OA>#AIB5rwdXroCd zsTMB$)YR2!lnQliL#sg}tLAYy^wQi^s-dY~DHMprz`3$Ut=6bj+D5%f!e>=g73Vxn zi>f#2C0rI8BurE-k*jNzGKowo5^!jx#m_P`Gp;w8>t%dCc(_c&W$?r@A&$tz) zDc_)&EWV*{cA~RJq0-ihiW2XDE&`fJQp9mjpP&n&k2#vU_Tl;Y;pRrbf0MG{*Vwpt zV1GZ{`^eFt1Wrp=XXoJb?{6&%CSPqb85LPKBjV!kCf*PCIeIv}xYN>OlBnC?zOyjA zJWlg#O(sd!weZ;ZyZ5Naj-7d`8ye7L9Ho|9%(d*ulb5&#bF-eAwPWm%J$1LbN>SWZ38WZd)&4p$$Lk7+S}?i{3mCRoWF5-cciSb`!oNez1n!6{c+`n z=l$(Xby`_fwC91ai@UA@b^!llBfSmP`Kk8{tHj+sW?fB&EERaKOJ<$E@dR#8?d z)|pxxjg4(xeIo;XL%mHZsYJ*ueR?lot3=8uE2RUzTN>(&CUb|y(m&AIs1gYU^uo;F zB2MeH+_F-pKv`!p>T7EaO|5P1?MM zT7yBWQZDds)X1xOTrR!j*@IAHbAw7G5KCmB@IhDCYScAN2K8V3=RSQH0r-{jSZt9} zEfvdETAfNRlgq>l{FmfpJ@*VD0u+*&(C^N!~_lRGyhdp<@veU8L6oc)1DQTRU~cwr~9|xZaxzI z=yvp_)85C99`o|?J?-xw5Eyj!{Dq5`eZSkb-F?$`|4h&st6~FBoH*fo>Xe`VnSj8+ zv%w)3FZsG}`Dxph9}dS>#TQ>jj&+XgyoPQ{4w9LL5 zF@il-(jQ(44h#rbc)*FR?pt^6Kb}a}=-Y;7UyPXab@h#nqDR3e{murTzi`24`zH5a zLQ5Nax;uvEKD-;$Fa+9`=DO8Db>pQy!Iy5ChX_5El9S@|fU`{sGOP-zoVY9dY zv2}q0Q{V8+)L^rvt?clIof+yLOKW38t(hrYjol+t(-VV(UD~_;p7F)1 z!8W5#CFA9s*|P4?p^g45t+{_}Y}jH}GqMtY%g&>jOtli3OjH?raQV*N?*0`LeT&7? z)ozqlmK7HkQ))Rcf8q*xuJ}kcsKf zsyIA$N!qm^?fv7kD=JF_HH~^>Q>(e7Z+Nh;UC%41U~y?BS-&20yPK0!Qc}QC*VniA zbOFGJ`ntLsM8y>>PDN?Xeg6%)#RVlL#XNPr$z*C;u z3QKs(x~5u{s{1spZE5N}B zYylXS90@-+;cBf;%&24nuoPmUM6S^(m+N({~)EL!p7dslV!dZ}RH?4Z*d z8}vFI@X-Vg7kp+_6*#}#yQ3s1$$mU;H#J^nffc}|( gCar?atSlb*66E6CPxQas+hoPd+Btl$>e#%8ZixX?~YOOg%j9^fTTCc+8LJSj{-S`+JMl?Dc z(~EI8^z+}n+%%HkThYT6huYC2MW2Y!qn+rnI@B$$;*+XF9_^_6zdR+lSqr(L9*jR6 zI&?^%j(UQQKj}oh>QL{viccAzfU8ZYPjz*5`Tqd>xT`pXqrRfXzg(`s33%MPxxBgguMFG36MVLJT<0KsV;wZ# zSaP+4gxfo7%dYmFjho9$t`0VU!`iKtrH##-Q{%U`x7NqzKlZ#n)-%1e4qDf4P4~@# z_?w+_+4$DZf_@6**_oTX)V8uZI=Q|*V^fK+%QwbMVlEf&8}ATeBSZ6By#~8(Zrs*A zK49h0>XoxAFkd8w#0mu@fKdrzQwhalgG#O8GR0CJr+aclWm0e<87va$>_(*;!P@(p zwGf8E5~0>+?=}fBhlXeA(95_AiypPMwzaf&wIc`!;EGWU6*TJXn9|X0vKr(@vlg@3 zHFC7G&tbr5OfIWdsFXTet&Wx!t-1-8VM;My0HGR7v%!wn)95vo94&vqZgF<^H5m+A zgVBKS1ejWBFe_|M70jq>U8@NINhYtxjYzC7-8)yRFOd6fVqSw-BOdgNP=QD*Y zmP8=tF(Em8(aJxaTTsPi(HKlvr8L@X_BLCm4UBYGi>Z5bWN4_P?BoSDU8>cgh(@k4 z_4W)-O;1itPtQz^&(6;c^bOl9FL2JYMy`&@1U#Oyt9x{DVR3%(>f++U<;%0Z?XBH# zW_Df?duD$NEVzyR{b#S9KY020+4Cn4Z!b+Y>t$-?+3Xr6tscGo;>GjlFP=PocE>)@ zyS}&o_{rTXC}zQ!)#tKLBt%9qdM2*lytR5`rcc2YIeLdKjgO4sMq9ht-lSkw7Zv1} z^E67ZDs-rV%VzLoutaCnp+ccjZP6Io3|bzyE;}~+%sC+fSJ%{WU~!GkDB;r@#UiCt zs*uTLDlxr+BN9StxfF&~Dj82A)uI?~G#Yd|3^(X?7^cHkWEbr`PLI6hU=rSSppm5?BmoMy`~rWHUfL#D5!2kN+3F7T^TlkC-}HFSNz)AEf@aR*4IEQ z*tS-$yV|$bZ!BGRIk?(aZ!TY3TVI|SU)|hT8@v3m=e4oksf}A}z-~_VOfOwqTj^A( z#y7SXjFTYG*4*T%%yxWw%-%CTWaBfL zs+lE~1cqghQYnMvS}9`FNMX4}gJ?xuDa>U%Cq~p3l|U+!$zc@JDAXwK>}^7%YD6K0 z5WTL=0wHZ`fw>h`fSFJu*4AcQlNpyOm2xoj2%?p+l?IKfwOwz*A+=7WHQ-8_#$?gs z7>g_9GbBpbY&AAFH6a>b&4OX26Zv;Tp^Av)C<|b!nhXKqMszsDSF{V-) zEGkQ@R>Pq+vUrSPtI^VA!mOAaQRrK7LzhlzZ$s=3yGr_<^>Y-Wp2z>^^c9NfOa zVnF1m9))leXIIf1Xmx{*madBe22W{d(kdh-3%Dsn%A<)!8Sb)PVmgasHp9i^2 zB84CkjVBgz1rVRZVX~OCelx0;(P<1WtFfNZ$f%`pctW<2%@zy9d^RML_L+IPIj1W) zY&wI+2Y~P`wl-UPlcl+>quJOoJUBS$EICku3K4@C+xUPBQMA-hbk*Hx1T+G`s~@0$IotCE^6&7kMl(UJ#-P4miY=JPv~g%cVL4 zhKj{&ZlxP${PNg!K zCzdGH8jTi3vI{wh^cp^(Q1LILJW=K9Lyz!X47xpUV+& z!Km{1LXl9!<1^Vj9@j-Zm(5}^ne+yF!$V+?9`3mgzuVs4-tO*$2ls*9-Pv5*f3&~< zc>j^h_FV>!EFVJA zy?giW-r3&R-MhUwe|K;9-jx*)zq@O?H_jF3Ix+A<(S3V)dU+m zaoE;rR7>SLRM*_@aJ03U)f%NzDuyv!5A$%F9&PV7nQ(xeR%bCID%93uHR*XmiI}U< zDq8>_wkA|-Qfc%WnN+I6wbo`+i-{-XvzZc&WVF-K-PMlcMpTcZ8mYpFY0WmY*@5=x?5XXO=7VUvlulfX0V!dh{2>+ znDi!I9f!qYjCMJDharJPV{XB4#7%< zrJ_b5BoRpDA_1Sr=dwl|R$rVX>623qt5)1iqm3+8WQB}(oi1-W+ z6OxE|a(k<@xudz+;pl9&bPWxRj`lWIN(3Smszc;_0ZY-}KR7-yK0X2XADx_?8W|jM za(InQY;tJ=<_kHBp59BdvzKQ9{_}G)Gt&d$`9)h<$C8>>p55Nw*|`1e`N8Xh$FKJv zzj^uO-txG^j9{vII&8yr&b?P(yngli<-zMm1M_X2n=cMt?O#K6O*n^kp|~(F`xG=V zwY;`|YxVMoQ3Y}JBV*H(GkRl7kG-u~!*8f6D{X-ExY=wp=@GG*BT*_9CacLHlc^C4 zVrn;ILILe;Mp0=wgvx3g8@Z6U!C;b0*et+5BvpW7tq?Ugxp!C-ROjcf+J z7VH>|#>NI(J)PcAS5s3{h5F&Bzex7E?Bk0DK?dG30_xDf|9i_I%DjJnPY4MN4x%LT zdfVFvx>_~mh1#7r2M@md>g#u3zJC4k#mj>*vacUGou{)5wKl0LiuE_1JbSY9^4+(8 z`s%Cq@85s@bzB%BI5wrY0d?{!N-E)j)wPZ7rR_&A51zhqIlPY#CxxAej?dytb560P z*2^n5w(f3hKYH});N_dQ@4kAM8b=LJCdL)kRGotQ?as?L)_3miK7Dg*_wDm1U`h|t zPf~-^PZlc?dX1%7Z!xzoT-|>7;6CuWeSh!aqy4PZFyDNnO$h{ZptH%OuxvhkzO%A) zeS2kod1dR~{qtqjWi`qU8pDQSm&SYhcfbGo>GJl*(A;#VPTDj$Eyi$+Q;F#Z=d5zb zICtktyFtV;+87p_=u}w7nG%yxjp~ep6El65R>ZOYezMoWN=+`}wQFnA$Pw}BW4&FA zclVy$8_+KAuC4EW?KJCHsX>$~BV3&m6Q7(sH@S(U)~PIxj|n5adjIWL@4tKh3+G%t`*h(`s-gl9K3wE(4KdC=Ka%cn}B{UJu&ud_jQM083^y) z-~RFIcbk`ohmeTE`+xoZu9+)#j5zVG#W9Y0@8OGAum0;l->eUq)X0U9qSt?Yzo6I8 zzu3O9devH0HTU(qH_u=E_xEdqT?oB0n^>@N|MsY5>fz1DFZvlJb)(p0ErUwoeE9KC@5T^r@yXOQ{_5kezIpNF`Kz~+h(%ft zGty!sd;fZ{Vyno@KAxVMRH^SAn!k2q?atmPcw$ksiF2dr+gI$2bJ>~cDXB>j;fcp{ zcv{=g=u``=maFZ8tY}M5+4CsnG!*Zr;BB{(k-e z#oi(tSn4BdG(HipZ@&iFF*hCm!E(6<)4BI9L`+M5k zJCMFPwM=rJ)jrO^nyH5^Yzx$@9q&TmH1!d9~N=&TJ4%%9qg~oy5zV_k8+l`&oNpQi@i=)j~6egS==NDYS zsxHVsotsyL%G9m>pxCLa#-~+{vQ8F*oOdH(s6go5WE_S&i{OcTwh38_lX?SJ^-&c^27?{`AnlJwLB|E%dN z!Lyy}PG2G2-0llY^Jf9zD3f z>ZmQq&d7`>`j#v$bPdk;;G*0}YGT{7gBN>y_wVkvaOwFenP*~%fsH_TZt5#?;-ey| z)zcdf_cvD8Ht#~`YR_hzKNA@i(sFRg%sQSB8yOiHUMMrQ3=EG>%w31i7uS>vE0Zae z^KFgC<6~l?A|fLwQv7sJE-F*n8(6F%3kPu1;HG~Xc_Ve`yk`WRf z8%-tnczJmF1%O)!rIN|9)DQwV_ww@b4z#o81BvC+mil3)XNLVO{2nY-gjScnl^YQT`_!9{JfkbjxXgD=4 z|9n|}0XaG+JAxDv z>@)+Gt90O1xvi&vaCmfVbkqmje5j8X;ba~qFgc|F{69&H%Xm_`t*f_xXlQtd;N$HT zc-V^q#wC}YU&w+rh)l#4l!~1I@~)oV0J7&{e*z^Zixdo&c23q=PF-z1jaDtxo0?i$ zS{-D4NOwW8Q9VNof%z5+Ll$D>( zN(=V!_9W-0$3=yO2m1>Ie7;=Ske(8oa#GPDI-Qdl;p64ymYyFMSu19g<>+OQ8Wt4C zCc0639!+UdsZk-`o}Qj@Clg{V0|NtnBb`zqXHJB87xs%Ye7ysS zzTN}?M`&d1xmu1&gXE_mNQ|P8f@-hlhuUdiW82j(K?;JN&u3r>8%WLiBg{0?C3%!NFu| z6g4b>5a{vw;Uk9+A9eTeAdn~oPcM*!43vdTri2BPi0()J@X4p2eRkxio0oSG+26z6 z3&0P+1v=lNan@XXjP&J_M zmb^4bsY@)hJa}0tw8HzVWN0N9T7`r(K;qD4TBVTY7td5GJu6KE(!zYbY}qoJ6|_2d zS@2g}NE-?17zclY`3hKBkS+`c3sM0r4#CT)(3<25uVq@xmZ_BUvmf4m8XNjBJT(4! zWMuT+$mpxV%iNPgul_9QoLEpP7amvSH3)J_a!Ebs*?ASLVlg=rLn1P>6SIn5%&Qir z#ZXZ)j+KOGvnUi+JcWYf6y#lEq8TX?;p2IgYLF?1Xo9-tUO5}r&Et0}%1`i*_GK`t zdz%E$Kua$Q>H}Hr4aX0Xx|nhp_jt8P8r0r_mDZd&BzXb&@sdgzS0<~MR1Jywx%mw| zLRq*#QdCvdAQTR$RP*z{aJd!y5>m3{@2V7@n962xg(U@r1%+%@?#)8x4%~{jdeSKZC{= zu>krTee(R?L7&uu+-QV-*89p!FH8d7S zEUn??xER|YnJ<;fh4}^5$H|ew#}(o`!ykw5-v0ak-_M4J-`zQT=)l2yv$OLH^E0D^ zhc7<(^HTk-ccYWY^26KLuU>te8l9f|bnnc8bL}k$TN_G_{?mW+`orfHrztwBM4!Hi{-fzPXn+lWS z<9y84u5queRQPU-Cll~kg4tTb<=Z>&-Fx}=@wMKj24Mjdhl$S4r&4x?q$eaLC+zle z`%WYCw{v|{FR!2K5tc9#;?b}yD!yp1TWUgLLhN2l;L7h{$9})_`px63HHF1YA~7{G zGCG!Px-~F5Avwu5ilY6UO<_efPh5XWTwKm8VZ zoHeU7zDa%iaBNR1@4E$(b6tKqVLxLRIR$FFKGEFzT^R+dABl|w4k z!c={6bvC1t#;z0=l?cftrDXEAX=lnyl;=b-nr`hL3N0VzVDC7r{PX3V7+ws#6vX?-8(}Hx2q*SQvjl zcJES0A)OA9Ib2cCFMo}^8y+4W9D4l;qzC#P{p-q4zn+j5Wa0?q+@k8Pvk%6X)Tc=y4<4>Qw92@{!;?$ErE?>O(0&M*Y^Rr{GkNw#H z;HKi?^xXXP$MFRvSU{kwxv7b1<>Z|5^Zj#2FCRL5;b5EW=ZOyk&tFf^%+1fuj*NmO zG(Ylo?p9Y{-=QX1dz<~%kcUry{^RGdxtYmDNjmTyug&U@#Ouh2NN%kNOP&wXm6t(sIw=2 zfSb`pe1S;hyvcU8;o0G5Z$_Tqx%k7eb{Q|5kXhX+F0v!?%Xosa{V?R}HKhYrPENo2 z{g+GavMOd?7LMOgQRjlLC@C%FIAtVjYZLysfA{^z=eN7WB5qz@9+}KxDBR5wDY*=~ zFC_Y2BdA%{+|b&2xxTElf?so@#21C>wAWg-3zLAP06)CO=DSn(&+=mGOZ8W;(b=G< zZ(?X|VrFExOJ8rTo{k&cf&Ce*qPeiSUNYr+tA@7L(>ajnN5u=XU3)`MyHe?$3Ch5K0oQc{dsgyab`-npj5r@u04HF z+F38U_NcDzX#0UvQYlw1?~;jXTR(!8GIOB5i&xpsmvr=WNINC%9o+7=`iDKjc1hpS zci{MZQ~OhW^YJqmZ(Kaw^xMg!moIev*?aYR&4IqFKlHosZ)`1I* z?wdyso~2&AAij9`#_2AgZ`HWs%%vmePM$n+LV2)Pp*VG@`dHDC6I~~cp6u!X=k)x1 ze|Oh`p4MvN*>^|F`%cNbdygM)Yien2ZI)l0R?AfNdHmC(D?KHQoGhqVB1R!t|Q6Cg&Z^x*jilOQh$T$r8$6PUTw`1_;34@)x>(1@_8 z^zuX3A3Xa!I}5(*`I#A&QZ;$;^1#j0P31H@ zo7bui6f+UQ5yY6J^7bDeJQ!ch4-`H2%N=a1h^ej4k)`P2E+PZs8Y{wGIX965XI*3GU*Q?s*^Z{JUU znivPNS5A+A_%t^$ryRR;^6-y6J!cMd$gX{S_xS$P@$vD=iHX7C>FJr7p<(6k?Z-|W zY^+tZI&Fj9dvxLI`QeEVZ=Uy`JA3P|H>1z*j>q|RH|Lj>*JORKr(1LT-d{a$M{b;w zv)E*WZ|b3cZoM)y64Y?Z1rp@CZJLpfhMwLUdDI~Rrz^(GXeYAoL?3)#wonA%zST-= z@99^MUcPyBcsRs2rsBF zm)gQAxLhvVDJy05inQPUzVr6oliyqU{4xfMl}%ygDIAPabD8-JU#jT)Z~f%bCRuaG zrP|W63SQ0eVqbVfr}e7M+l}pFu^yW2A!4Wn8^Yc>ikT4 z9*b2}2x@^sz{XNfH_HqQrVMhcTg=O0@G{Vexh$|O)qDv(A==gwo|&s=nd&JP@PiCJ zY4ltc3zT9N=Y~clSX$el*i1T|4$iWKWSr0L1Og&9B{73tz%CXtl2TpK0Vo2EnMb2S zG$*_L`wf$0eUJg}fp{9X@8=6>b4%AuKHAyS)+!7gAL{Gn>;Q)cMg+P?q7fBu|2kde zxE;~MGGC*wvoSOV<^l`a@92l{cW@4k2o1~`cy#7$y?~VAZ||zN#*RRW+~wkF5EzBW z?Dq`vv9zps{LkZ?{r^y4?oOemhEBdwSi{}>tvyk!DC=NXyIsz`U<3Yj@F@juXJKiw z&Tz}_@a_9OU5w1_EOr@g-@e7TNM3Zjwv3U-blAF9WA#Q;d$_fSo1@{@jfQ6X40jtC zxO=5Ew_%XcM1OC`^&8f?;L~GcqA>ObyLKBJ8}BvP=j>M~@5@Zux5WYFwoZG6K0Z4< zA{_1O;_l|*i_?C4JJ)zpa#Wy$)84I{_H5D8Tw#U@4-A6A;i#}c z|GT2)~2DNPwB9Txmt^@#ARh7VR(Yj~=rpijdOT=oMI>Wz^R0x4VQYjXR#X>b- z^}pzLnsvR0WFXKPw`^E z>i()gmy&|A3ZXh$AP@@ql|rFtiT>A1lvm7G$1j2>5(q#%z|sJwTa;QL1_u+!Ef5L- z&j;^ngLn}F5!H_+0{PXvfL9?F@Pwd6Ay0jn0XLzDZBG-5#GpOUKd)TGFUw4)@c1R_ z*@y*_QbL-WOLQJr-9DdJQ6UhN_?q~03iEm3TF4g`pp$Wqj!uapK92|JatehUWRjK} zlbA`Qazzyt)dg6*cT8|>UU7M8Q6Z-Y9vBp4n*oKR;C`Xx0`aM9m!d4J-7+PKp8n1b znE3Pvcv!G2EG8m66gFOFC;qDKQi3Q#S2-{xVuY)jj6jYI>p|~!#x<4hp`ED zx8H5wIr(w)mw~5Lgsqjm<)(f5yAYPv<`+Dt_Tk#NqfW!Ik+h=NKVPauw;pz#x@kn*i(A5U={mLkVNW|l@URKr? z=9Z>bmX_9zdw1w>*sk~Wavd#=(}aAB@&ZTu<2=O=_yGmiOK0{#nMUv zhenEz^Yd~y-euwvi^t-zI06Bio}QYJmX6Jr2#fQwp%h#UGQift#xD+!!{c%3I4l;M zmW0FMIRarZg-S^$#J~gXEu2E*u{a!oh$Z6H4tN}vU0)~8A&}C*&l>9D=#5Gu;M3DV zJU%rkB_%B-jV7!rr{al;X)%#Oo?iYj>X`JD)D$p}q$I#IrB!Sw6PtibLL-BHLZcH? zySuu(djNV5bocc3_Vjdhc60z!cUMQ7qFJG6?r87mRHLgKyt+C&+uPb&+dF`*qgBz= z)Y#b8(gx7}AKF@5WKD~PmL_?lT;9^$(hBa`|3gblOLb#w3y4z4>t!;TqDj%B0LGRt zPKxG+5{aU@Nug+Lkk-~oL6XMCrshQ`0GgVltO{9ueZ5RtS1Xm)H8wOf$Qzpgmb@Ap z8_LDiQosU8rL~Rq^$kn(q8CV3moKQ5$)roD0Zo8-fTck$m-91t>c&9sI%yr?L8*GV z98>{ll*<~}urfd|@^!V~vyqDk8a{Lc}kxDB~qZBM~kTDFlWH4$CeU9XWq0+-$#BW_4Ns z%+oC{g^&=1LbDyOx8gd;N? zwryU!$-rvAe<&tA)O!0ia~sQjCdRwnykkXtCud}4fT!!0?fUNNao|2E+t<)=pQ)*- zxv8}ek|S&i4cxQC5#hdZt@bu7k)D^EgD_jtzqzHGhqIHneT<8)?kdgIn#=b>+29t6 z7Hn&6VQFP%$I{Fm+>y~h0S23v1(699YBsl4P)N%nCKBVqVXn>|;Y3*EJVwpQOWA&@I-QU2DzYG#3T{1Ng3Fr1PplQ Q&B%f_QlU-BX*Bcy0ZDD}lmGw# diff --git a/adapters/tests/fixtures/samples/cifar10/test_batch b/adapters/tests/fixtures/samples/cifar10/test_batch deleted file mode 100644 index 3fce5a27edbd7196aecd913ef13822a028917602..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6380 zcmZ{o2UJt(w#R9Xj^#S`Hdc_H1VRtUFjN7lAtaO}v@{^)q>&I3LJE-3dzFq%KcXIo~?x>&g0l|GoDSYYPDlLzi#jBcllM zEI<BIdv7DS=)^>_BLQtJpko+K<4_rVXf&NkfKoZ}Y)T}P8Oh&{XA+|6G!~o5 ziDqvHwtVfiofh-875K(mLk?_p(ToDNr2*dt0^1F}HGMR8%7GpK>>0!6GYH#(ofs_* z4GoStu*+M+TQd##TOhC-+yh1vtW5&G^Y!)h`ft#_6y6$aU{937S!1V$Mpbp=rJBmR z>Z@sBnL;U?d>R%uG+NsH|;msc*T|&~W*;ngU01)(Tnr97ojE-9#O zY-*}+tna-jj&yc&4&f#yFmcgg2$%RwWoj}NhAC@pZUtv3NJ)-y^*xW2PE%uZTWuy!lFP<~p?s3+(}}S$C~I@OIAwY($vUa5w*FFM2Ozvy$qx<; z@()nv188KhhpnNPT+y3~EAObPESpqMR(2E$vB6&U7Zf@2*kE*!H{1{}8;H+t?5e0v ze4&2ZFinnpUL8s05QFrE&ua3qNE{jE zY2$cdBsBR-$EEJ-$mV9n(5o5&j|DFtuMmU<1>u8(JpDXJu%%ZM(l0lW3i6spKK5pb zI3DFgMNG8+dH?8`&`8{PeDe?`y0R&TrM!K;J+C~UsT&AuX~GNSx)T_yk!D2%qs!ZfO{AC3?w zEXjRY-!RaLi>NG&P2n=xL{=~%m+LB)dpjUJi0qu=%;()rmphY!v&z!QKB-A51*q_1 z87I!$$@Iryc?Eb@?p$l@=*kUFNL1vyr^M$CvOT4W)DR0xSSY`~4Ll8vH+#DJN~5K1 zB&}~w6baZxQQm6j-$CD&x5<8LX>gr$#x3IOfFtM;VGch)b$ZhU!Z2awyIhuo&xw#p{ z7;3B!g_;;cp>P{33&`=~_R>qT@&Edqbq)@?99qn!5Pz$pYXFSE? zpZ@!rvo+k(5(+Uf(lanLG=bVXI@w#p-I12MCykuNA3h}^%x$erO<_7!Tb-;et|uWLn7+9!!phdc&I%4OIBo3c=V`0I%kZ4J zu8D!MsiE<)Lnn?M*Mr$QI(xgBo0vGDs91-i$M;*?LQD(|4fXYo9z1^J_`bcTVCTG? ztt=rfA(Rla!)FdK=xi>7$^z&Bn@;C&5;y>zL5+)xjUz-wM&iRz3>uTo060uGjZOm+ zI4l;O!J?6gF%%*(G72Atp;77dSQZCtU{dKUCctLWBSL+BP{9$T=;$bXNF0sIpmBH! zERG;w0(M}~{n4SJ-aoiIqN0d|Xj~kV#bg3JHoz9YtYp&T{jJmf`d`S}ET+UeTIk~%YD%8S@+Ztu%pX_=IU3i7gZ70Q#M0#K+6<|n*K1MHHPN(MJ% z;=^cKwIZH=!QT|sSWpmyBx3yR^`HTx@wr!;cmgcGzb(7AEg>!{NS}YNG$X_xOGbNJ z+1QRpr1n+{1XS1ZT;`?wMF5itFSu63#UO+5Xtbx7%^1FXm=>GFJ}(m%b-Zeqa+n^a zeYrH0zo&l;0TbeRE3RpX8j_Ic6)U*f+nAY?9^+AZMJ}cWVCBo^!e@{%snrGXsPh;yl@=U9evseL-x@3w@%?k^OJ%XK1VU(zGD||a;D-%EV&cg^ zU1}QaCq@)0uxtvE5=ILni6d-zA~#!GcPx&z$C45^Qc^9va5w1N6Ac8{L=tE|Su&P(pn| zxtIG3V|;ziSwc_SdBg|>RDi;}+uhQWi!S^9U1nBg|E;lhIn~kJ+C2aj6ipyUgojcl z2HLyw8B_oG<3o-tOD<2sq6341P*_}81UVi&!6Ay~j{eq5zy9Y^I>!Hk_j$j7fWY9; z5OfF@7ZHKOhlZhvWj*O5fB&@_2M$991qTKCA%jsN;Up4)7>y&*aj4kB^cR2J#)e@+ zLy>`j0shF~kZ^oFjT#?M5h$3^!AN}G!ml~uXk2(;ATkIUj0ug5rBOh5;w4HUEh;1! z89O~MBID4JX#c<u4gHij6Ei;j-O<1olDhD^$ibV9L-sIbs*OaSV#Mayd27&4uSz8(zo<4Ef2ySI#X$FTv^v|3; zbq01?&&+spfQgx%h5lJx1DLhBB^(Afv#~JHJ#*%?;i;3RCQvgoQ-~ej+X!ZjaDn}J zA;=kSX#jzm7#QdonVG{(3}L25#`X+SgaU>r%13iS9 zL1?(Xk*%?wfw_f+xlbI{4-@DXm&pjg1bHFMPr)q=aw+yepotOO8E@~)7Zbcd?$0p< zSa-JzE>_2M?IHC!lp=-&%pw2wrGz|ToS&bE6@rn-4Ds^y^)T6OYIh~EsyPvE0qglV zEUl1{$!olbUJ*4R6iEwjDQ>PNXZpiZf9;W+J~twjy7j7q?VTI%v2%Xy{I)gk%9~hCDZ+_U=!&bec3)3A4@EI zYEdC!5b)mId?mr(6&)RowKg+*Skpb+9x4I?&&n&ZIGE6IG=fYOaU;+B-~w$RHqf7X z2gipf#60>r3O*#nGYW$zI-R1h&RJOf=R@TKOp+$Dhz}Mtb3I8EuCFQF66@gVWC@4nU%S%YTSL#kN=JJJ zvoCiQ5}bdqv$imDLwW~ZIOq05(%sJHo`SIIzt83tG>ko&=*yuxB3#i#8a*+A$6&DJ zFUGq1i-D)V|6}=LQC($eVFH-|hSNf+BrPjjrjVsI4-b!ZG^jt%m(eMdI0B0Yu!TaA zSeBtsq@`xavm~jVql&(tf4!2-P2ls`peF-(LZKuzFFQLwH?ycNGbz0(=jneu;);dI z$$S<7IzxdpRasnGP*h&p)ZbVjNfb4xelKGRq$vrTCP`&;UYlyZ@B zMU^Q^Ns+j6Ys4d9JQVOf568K_CMw*nzC93t=jnkTF-E&tP2zS{EAB3Q8ke!y~Nd42UyTl-?_wKbJWwF=&Y z^08DYSr@U!jti<9gTyNAHQx!t)8D>UQ(&mYijkz#_WfcnSt8s^4y%t z+bdu8r`~w}VR3FjrC#6I*!XmBdgbMftAm#ttLugqR4Xg0HTC+dnc3O7rM30-b@j%? z+m*$qPp6+eefIjz?EL)V;;MR`n~;>=KD(+0r(1dXad~ZiZfSP*^}Va@O-)1ZSJ&35 zqZc(!%@EhI~b;m|ye?-1N=iJ9nSHe=+sy?ew#!U^)A7_RYYR zzV4yc?5opDs_zJc3s?sin?$=Ff2Xi8k7viRcg)m=wZA1k?8?R}GP=RYid?95eW z=am-~m0zs6eC>L7=QDn1{Rh zvE5s=H1^n?+^(au^>0Uv9D@^cWlWANzx}&iI@*vQt@ZZmXlZQa)=C)^3YDuYFG;4v z@=~%J1`WYndgqB#2exWyX=}LlKe{!3^IChcfP^O}rpQX$uDTu7)YRFzcc+e)mX7AB zvIjRudnyvb0&pCmFeSI{@*onXsin1LtB$6orncs>>_@j-_$V(FkuOf<%L*Dhhr+GD z(bfVRH%((V@gm2|)+?Hom?RL2(+lgmhS4Vbc5K@MF0QSurJ-Z&VP)qJ$WjGto-`w; zvZa4G5UO|b*ug#D?cKM3-@Zd>kU!?+}2d}^2U$p`V{B*VVJn+8@1H_$U5r8=E();F6nSv!Y&l_2~9+&#j;4H?;wTUcE54IKK?u zfPK^p^XiWiy}h0F)h&C%new`Mu>JY{sj1gY zKU+~Y@!ZNiDz_w#Rniz-;K~-q$>m3rpo)SLIkUb#|N8E$7tdcle|TfGudy;eryNr8 z@YclC)RV^#CMR#)?rf=TtCuS-7N@ZoOtw&-m7Ug8Q(jtHTwGjGP*jvBO5~-AsSFN- z6iK3U_(FLum^5Oeh(roKAxWx8m&w!R$q7_KWH>G+CW@SpR&->?cSnyNIdVb|O#9uu zef-dvfb%Y{Zf+jFAu&KwdOq~KU8ayDJGO1|w`=ddL&x<`pVT*nBiut-0+t}7#^~5S zqX2jK$uImn!Szm@IH7A|;}Mx8uCmUvnF$O3a{;z?V!SQEV`d zEh%UpH{7nR^Ucnk+rQD&)Y3qRCCP#WfEMBH?1AOVvg-OLe2#Ic4#J-bz zb{#{6vP4M&Nm^cY=h*#di$goN@7TUoM@L8dn=QKz9E1Br0V0u5tSl^V9-O!zVP~p) z;`^hAK+!vN?4+TMJBG;MCnhG#Gm2{3NABJyc)OglwX(9Yu|+t#cmzd|sBC_6l2DqS zS6bILaP#iJ@V^-YEUQ$YANvdbL9e-q6DR?jSpGl%uL52F+RFMDy1%&efARmS#iiw? ziRl-Mf5rcrdU3kv$;|Sm|KCLXf5&e=snpAFo=x5zx&QWS`zHVMON*Pn9^`j@abbP_ z;q}q$U2R=c8z8YDi|g-J)1JbO0v;MTRP4?*TZpTEBT`Ip~*`2;Qo zPPK9C&Coc*$m2`!vc9(d>GS%F(f0c4vYbl`8|xb%e){l!ZfWZA%XhQW?`IcR)El4GPac5O z-)gwO0xHnE*B?}$=bm&7yd36>WElmu9dFgE>z`KC3(wW6m7jkuEyyZqyz%JaN7X=h zSXgLOO3%vY&+3)e&)>d(dF#=fDxMibtY~PMRLx&kO4FJr-!IQSzu8e=keORrQc&~Y zl@E?xR!QU5_D|ftd;j&?>!J4QBBg*U5KHoEI|g4o(S?<~Ef%EK^-j&MEPq`TOEXz%o zq-JF0<`-5{fyCt0?1JLbn#T6Nq24R)&Gi+98M5RQc}k*4nO|viMAyvH7IDte-3J}Z z7m1QZJVq>;M5NGI31ZNP+3eqEg)lmCc+c+L`;BcK96bVjF8KN(LkV1^QYcnbL5}V< z3c6r-_P~yF(dEqrE$|r%)$+RDb++!=vvaF92)R>!VQ!WpB{3H1=8geGX;q!$P6t3;*zzqHU4WGD zuy=KFbFnu!hJr6qdE$b$fm?wlV7u04^QHjkZ@xY}V_+LdVX?T<;*M)~uy8PR(frE4 zmd5w6Lpu-J1VqyrK!Qk7(l&fA2dm+OkBjaM@ WIRbfBS$+5D9pEqr6WQljAi diff --git a/adapters/tests/fixtures/samples/conll/sample.json b/adapters/tests/fixtures/samples/conll/sample.json deleted file mode 100644 index 0bc42a92..00000000 --- a/adapters/tests/fixtures/samples/conll/sample.json +++ /dev/null @@ -1,10 +0,0 @@ -{"words": ["He", "was", "the", "27th", "pitcher", "used", "by", "the", "Angels", "this", "season", ",", "tying", "a", "major-league", "record", "."], "ner": ["O", "O", "O", "O", "O", "O", "O", "O", "B-ORG", "O", "O", "O", "O", "O", "O", "O", "O"]} -{"words": ["CHICAGO", "AT", "ATLANTA"], "ner": ["B-ORG", "O", "B-LOC"]} -{"words": ["President", "Bill", "Clinton", "earlier", "this", "month", "invoked", "special", "powers", "to", "appoint", "Fowler", "during", "the", "congressional", "recess", "because", "the", "Senate", "delayed", "confirming", "his", "nomination", "."], "ner": ["O", "B-PER", "I-PER", "O", "O", "O", "O", "O", "O", "O", "O", "B-PER", "O", "O", "O", "O", "O", "O", "B-ORG", "O", "O", "O", "O", "O"]} -{"words": ["goals", "for", ",", "goals", "against", ",", "points", ")", "."], "ner": ["O", "O", "O", "O", "O", "O", "O", "O", "O"]} -{"words": ["\"", "It", "is", "one", "step", "short", "of", "an", "emergency", "situation", ",", "\"", "a", "police", "spokesman", "said", "via", "telephone", "from", "a", "command", "post", "in", "the", "bush", "."], "ner": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]} -{"words": ["U.S.", "Ambassador", "Myles", "Frechette", "applauded", "the", "move", ",", "saying", "it", "could", "prompt", "the", "Clinton", "administration", "to", "remove", "Colombia", "from", "a", "list", "of", "outcast", "nations", "that", "have", "failed", "to", "cooperate", "in", "U.S.", "counternarcotics", "efforts", "."], "ner": ["B-LOC", "O", "B-PER", "I-PER", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B-PER", "O", "O", "O", "B-LOC", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B-LOC", "O", "O", "O"]} -{"words": ["Halftime"], "ner": ["O"]} -{"words": ["It", "has", "manufacturing", "plants", "in", "San", "Diego", ";", "Creedmoor", ",", "N.C.", ";", "Hampshire", ",", "England", ";", "and", "Tijuana", ",", "Mexico", ",", "and", "distributes", "its", "prodcuts", "in", "more", "than", "120", "countries", "."], "ner": ["O", "O", "O", "O", "O", "B-LOC", "I-LOC", "O", "B-LOC", "O", "B-LOC", "O", "B-LOC", "O", "B-LOC", "O", "O", "B-LOC", "O", "B-LOC", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]} -{"words": ["Scotland", "manager", "Craig", "Brown", "said", "on", "Thursday", ":", "\"", "I", "'ve", "watched", "Duncan", "Ferguson", "in", "action", "twice", "recently", "and", "he", "'s", "bang", "in", "form", "."], "ner": ["B-LOC", "O", "B-PER", "I-PER", "O", "O", "O", "O", "O", "O", "O", "O", "B-PER", "I-PER", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]} -{"words": ["Clinton", "flew", "in", "by", "helicopter", "from", "Michigan", "City", ",", "Indiana", ",", "after", "ending", "a", "four-day", ",", "559-mile", "trip", "aboard", "a", "campaign", "train", "from", "Washington", "."], "ner": ["B-PER", "O", "O", "O", "O", "O", "B-LOC", "I-LOC", "O", "B-LOC", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B-LOC", "O"]} \ No newline at end of file diff --git a/adapters/tests/fixtures/samples/swag/sample.json b/adapters/tests/fixtures/samples/swag/sample.json deleted file mode 100644 index d00ad8d1..00000000 --- a/adapters/tests/fixtures/samples/swag/sample.json +++ /dev/null @@ -1,10 +0,0 @@ -{"ending0": "passes by walking down the street playing their instruments.", "ending1": "has heard approaching them.", "ending2": "arrives and they're outside dancing and asleep.", "ending3": "turns the lead singer watches the performance.", "label": 0, "sent1": "Members of the procession walk down the street holding small horn brass instruments.", "sent2": "A drum line"} -{"ending0": "are playing ping pong and celebrating one left each in quick.", "ending1": "wait slowly towards the cadets.", "ending2": "continues to play as well along the crowd along with the band being interviewed.", "ending3": "continue to play marching, interspersed.", "label": 3, "sent1": "A drum line passes by walking down the street playing their instruments.", "sent2": "Members of the procession"} -{"ending0": "pay the other coaches to cheer as people this chatter dips in lawn sheets.", "ending1": "walk down the street holding small horn brass instruments.", "ending2": "is seen in the background.", "ending3": "are talking a couple of people playing a game of tug of war.", "label": 1, "sent1": "A group of members in green uniforms walks waving flags.", "sent2": "Members of the procession"} -{"ending0": "are playing ping pong and celebrating one left each in quick.", "ending1": "wait slowly towards the cadets.", "ending2": "makes a square call and ends by jumping down into snowy streets where fans begin to take their positions.", "ending3": "play and go back and forth hitting the drums while the audience claps for them.", "label": 3, "sent1": "A drum line passes by walking down the street playing their instruments.", "sent2": "Members of the procession"} -{"ending0": "finishes the song and lowers the instrument.", "ending1": "hits the saxophone and demonstrates how to properly use the racquet.", "ending2": "finishes massage the instrument again and continues.", "ending3": "continues dancing while the man gore the music outside while drums.", "label": 0, "sent1": "The person plays a song on the violin.", "sent2": "The man"} -{"ending0": "finishes playing then marches their tenderly.", "ending1": "walks in frame and rubs on his hands, and then walks into a room.", "ending2": "continues playing guitar while moving from the camera.", "ending3": "plays a song on the violin.", "label": 3, "sent1": "The person holds up the violin to his chin and gets ready.", "sent2": "The person"} -{"ending0": "examines the instrument in his hand.", "ending1": "stops playing the drums and waves over the other boys.", "ending2": "lights the cigarette and sticks his head in.", "ending3": "drags off the vacuum.", "label": 0, "sent1": "A person retrieves an instrument from a closet.", "sent2": "The man"} -{"ending0": "studies a picture of the man playing the violin.", "ending1": "holds up the violin to his chin and gets ready.", "ending2": "stops to speak to the camera again.", "ending3": "puts his arm around the man and backs away.", "label": 1, "sent1": "The man examines the instrument in his hand.", "sent2": "The person"} -{"ending0": "hands her another phone.", "ending1": "takes the drink, then holds it.", "ending2": "looks off then looks at someone.", "ending3": "stares blearily down at the floor.", "label": 3, "sent1": "Someone walks over to the radio.", "sent2": "Someone"} -{"ending0": "looks off then looks at someone.", "ending1": "hands her another phone.", "ending2": "takes the drink, then holds it.", "ending3": "turns on a monitor.", "label": 3, "sent1": "Someone walks over to the radio.", "sent2": "Someone"} diff --git a/adapters/tests/fixtures/samples/wmt16/sample.json b/adapters/tests/fixtures/samples/wmt16/sample.json deleted file mode 100644 index 8c0e47b0..00000000 --- a/adapters/tests/fixtures/samples/wmt16/sample.json +++ /dev/null @@ -1,10 +0,0 @@ -{"translation": {"en": "Membership of Parliament: see Minutes", "ro": "Componenţa Parlamentului: a se vedea procesul-verbal"}} -{"translation": {"en": "Approval of Minutes of previous sitting: see Minutes", "ro": "Aprobarea procesului-verbal al şedinţei precedente: a se vedea procesul-verbal"}} -{"translation": {"en": "Membership of Parliament: see Minutes", "ro": "Componenţa Parlamentului: a se vedea procesul-verbal"}} -{"translation": {"en": "Verification of credentials: see Minutes", "ro": "Verificarea prerogativelor: a se vedea procesul-verbal"}} -{"translation": {"en": "Documents received: see Minutes", "ro": "Depunere de documente: a se vedea procesul-verbal"}} -{"translation": {"en": "Written statements and oral questions (tabling): see Minutes", "ro": "Declaraţii scrise şi întrebări orale (depunere): consultaţi procesul-verbal"}} -{"translation": {"en": "Petitions: see Minutes", "ro": "Petiţii: a se vedea procesul-verbal"}} -{"translation": {"en": "Texts of agreements forwarded by the Council: see Minutes", "ro": "Transmiterea de către Consiliu a textelor acordurilor: a se vedea procesul-verbal"}} -{"translation": {"en": "Action taken on Parliament's resolutions: see Minutes", "ro": "Cursul dat rezoluţiilor Parlamentului: a se vedea procesul-verbal"}} -{"translation": {"en": "Agenda for next sitting: see Minutes", "ro": "Ordinea de zi a următoarei şedinţe: a se vedea procesul-verbal"}} diff --git a/adapters/tests/fixtures/samples/xsum/sample.json b/adapters/tests/fixtures/samples/xsum/sample.json deleted file mode 100644 index ea6e8a8b..00000000 --- a/adapters/tests/fixtures/samples/xsum/sample.json +++ /dev/null @@ -1,10 +0,0 @@ -{"document": "The warning begins at 22:00 GMT on Saturday and ends at 10:00 on Sunday.\nThe ice could lead to difficult driving conditions on untreated roads and slippery conditions on pavements, the weather service warned.\nOnly the southernmost counties and parts of the most westerly counties are expected to escape.\nCounties expected to be affected are Carmarthenshire, Powys, Ceredigion, Pembrokeshire, Denbighshire, Gwynedd, Wrexham, Conwy, Flintshire, Anglesey, Monmouthshire, Blaenau Gwent, Caerphilly, Merthyr Tydfil, Neath Port Talbot, Rhondda Cynon Taff and Torfaen.", "summary": "The Met Office has issued a yellow weather warning for ice across most of Wales."} -{"document": "You can see highlights of Sunderland v Arsenal on Match of the Day at 22:20 BST on Saturday on BBC One and the BBC Sport website.\nStoke and West Ham, for example, have started to climb away from the relegation zone but the biggest worry for Sunderland fans is that their side do not look remotely capable of doing the same.\nI know the Black Cats have got out of trouble before having found themselves in a similar situation but this time, after picking up only two points from their first nine games, things look really desperate for the only top-flight team without a win.\nAt least one element of their struggles seems to be self-inflicted, with everyone at the club feeling sorry for themselves - and not just because they have lost some players to injury and conceded some costly late goals.\nThere is a negative feeling about the place with the manager David Moyes and his players talking about how they have gone backwards since last season, when they should be searching for any kind of spark that could change things around.\nFrom the outside, looking at the way they play and their lack of creativity, it is hard to see what that spark might be or what could fundamentally change under Moyes until the January transfer window opens.\nIf they can get one win under their belt then they will get a bit of belief back but, the longer this winless run goes on, the more negativity there will be.\nMedia playback is not supported on this device\nSunderland finished last season on a high under Sam Allardyce, with a run of just one defeat in their last 11 games securing their safety.\nIn the space of five months, all of that confidence and momentum seems to have been sucked out of the club, despite them effectively having the same group of players who, not so long ago, looked inspired.\nThat is not all down to Moyes, but he has to take some responsibility for it.\nI am yet to see a defined style of play from Sunderland since he took charge at the end of July.\nThat is in contrast to Allardyce's time as manager, when they were resolute and difficult to beat and, at the end of his stint at the Stadium of Light, also played with a purpose when they went forward.\nOff the pitch, Moyes has not helped himself much either.\nThere was no need for him to be so pessimistic when he came out after the second game of the season and announced they would be in a relegation fight, which did not send out the right message to his players or the fans.\nWhen he took charge, he had actually started out by being unrealistically positive - talking about Sunderland becoming a club that regularly finished in the top half of the Premier League - but his expectations went downhill very quickly.\nI know you can argue that he has been proved right, because Sunderland are now battling the drop, but it meant there was a cloud over from them almost as soon as the season had started.\nIt seems to be a case that if you stop Jermain Defoe, you stop Sunderland. His statistics stand up well in comparison to last season, but the rest of their team are not doing enough in attack.\nThey were reliant on Defoe last season too, but others did chip in - in their first nine league games of 2015-16, five players found the net. This time around, only Defoe and Patrick van Aanholt have scored in the same period.\nIt is going to be a massive struggle for them to stay up from the position they are now in anyway, but they badly need a win and quickly. I don't see it coming at home to Arsenal on Saturday, though.\nDo they even look capable of holding out for a draw against the Gunners, the way another struggling team Middlesbrough did at Emirates Stadium last weekend? No.\nIf you struggle to make chances and score goals, as Sunderland do, that puts more pressure on your defence because you know if you concede then you are in big trouble.\nAnd the Black Cats have problems at the back as well - their only clean sheet in 12 matches under Moyes was against League One side Shrewsbury Town in the EFL Cup.\nIt does not bode well against an Arsenal side that are averaging more than two goals a game this season.\nIt is hard to find any positives from Sunderland's situation but at least they have not been cut adrift at the bottom - yet.\nUnless they win soon, that could happen. I think Hull are also in for a very tough season but when I look at the other two teams immediately above them, Boro and Swansea, they definitely have more about them than the Black Cats do.\nMedia playback is not supported on this device\nChanging manager has clearly not helped Sunderland and comparisons with his predecessor do not help Moyes much either.\nYou cannot tell me that, if Allardyce was still in charge, Sunderland would have only picked up two points so far. It just would not have happened.\nMoyes replaced him relatively late in the summer, which is difficult in itself, but he can only complain about the things that have gone against him up to a point. He should be doing much better than he is.\nHe is still the manager and he is capable of turning things around, so it is right there is no suggestion of him getting the sack.\nBut that will not last forever. This industry is results-driven and Moyes' results are not good enough.\nThat clearly has to change soon and, looking at Sunderland's next few fixtures, the one that stands out as a must-win is their home game against Hull on 19 November.\nIf they fail to beat Arsenal and Bournemouth, then the visit of the Tigers will be the game to define Moyes' tenure. If Sunderland are still without a win after that, things will become extremely difficult for him.\nChris Sutton was speaking to BBC Sport's Chris Bevan.", "summary": "We are exactly a quarter of the way through the Premier League season and some teams at the bottom of the table seem to be turning things around after making a bad start."} -{"document": "The win keeps the Candystripes two points behind leaders Dundalk who won 2-0 away to Shamrock Rovers.\nFormer Plymouth striker Patterson scored his sixth goal of the season in the 14th minute at the Brandywell.\nHe shot into an empty net after the ball broke to him when keeper Dean Delany thwarted Barry McNamee.\nKurtis Byrne should have netted a speedy equaliser but the son of former Celtic player Paul Byrne completely missed his kick in front of goal.\nThat was the one big scare for Kenny Shiels' men on a night when both keepers had a quiet night.\nDerry City have won six and drawn two in the eight games they have played since losing to Finn Harps on the first day of the season.", "summary": "Rory Patterson's early goal proved enough to give second-placed Derry City a home victory over Bohemians in Friday night's Premier Division clash."} -{"document": "The centre-right coalition led by Mr Passos Coelho won the most seats in the election on 4 October.\nBut Socialist leader Antonio Costa has been working to build a coalition with far-left parties.\nMany believe that Mr Passos Coelho will fail to pass the test of a vote of no confidence in Portugal's parliament.\nPresident Anibal Cavaco Silva would then be expected to ask the left to form a government.\nThere are fears that weeks of uncertainty could harm Portugal's economic recovery, more than a year after it exited the strict terms of its €78bn (£57bn) international bailout.\nEU officials have threatened to take action against Portugal for missing a 15 October deadline to present its draft 2016 budget.\nPortugal is still running one of the highest budget deficits in the eurozone.\n12%\nof the workforce is unemployed\n20%\nof people live below the poverty line\n485,000 emigrated from Portugal between 2011 and 2014\n125% debt to GDP - the second highest rate in the European Union\nMr Passos Coelho's Social Democrats have promised to present a budget, but the two left-wing parties campaigned strongly against his outgoing government's record of harsh austerity.\nThe Left Bloc is seen as allied to the anti-austerity Syriza party in Greece, which for months tried to renegotiate the terms of Greece's eurozone bailout.\nPortugal's Communist Party is regarded as anti-euro and anti-Nato, although it is thought to have moderated its eurozone policies in recent weeks.\nIf Mr Costa's Socialists are eventually chosen to lead a left-wing coalition, it would be the first time since the fall of Portugal's dictatorship in 1974 that a right-wing president appointed a government backed by communists.\nAfter his re-appointment as prime minister leading a right-of-centre coalition, Pedro Passos Coelho has 10 days to appoint ministers and secure parliamentary approval.\nThat may prove impossible, since his coalition lost its majority in the 4 October election and the Socialists have pledged to reject his programme if their talks with other parties succeed.\nTogether, the Socialists, Left Bloc and Communist Party have a majority. All wanted the president to appoint Mr Costa - arguing that anything else was a waste of time.\nIf Mr Passos Coelho does fail, the president could then appoint Mr Costa or keep the incumbent on as caretaker.\nFresh legislative elections may only take place from June, after voters have elected a new president early next year.", "summary": "The Portuguese president has invited incumbent Prime Minister Pedro Passos Coelho to form the next government, despite him having lost his majority."} -{"document": "Nev Edwards scored an early try for Sale, before Castres' Florian Vialelle went over, but Julien Dumora's penalty put the hosts 10-7 ahead at the break.\nJoe Ford sent over a penalty before Castres' Marc-Antoine Rallier and Sales' Will Addison were sin-binned.\nJulien Caminati's late attempt to stop Charlie Ingall saw Sale awarded the decisive penalty try.\nThe win moves the English Premiership side to within one point of Pool Two leaders Newport Gwent Dragons after three games.\nSale got off to the ideal start, Edwards sprinting away for the game's opening points from an Andrei Ostrikov kick, but Castres heaped the pressure on in search of a reply, which came through Vialelle on eight minutes.\nSharks flanker Magnus Lund was forced off with a head injury before the television match official denied Castres a second try, with replays showing that the Sharks defence did enough to force full-back Caminati into touch.\nFord had a chance to put Sale ahead again, but his penalty on 27 minutes drifted wide. Dumora, however, made no mistake soon after, slotting over to give the French side the lead on 33 minutes.\nA combination of probing grubber kicks and scrappy play eventually led to Ford teeing up his second penalty attempt, with the fly-half this time booting the three points to make it 10-10.\nRallier's yellow card following a scuffle saw Ford opt for the posts soon after, but he was off target again before Sales' one-man advantage was lost as Addison was sin-binned.\nSharks pushed for the breakthrough as Ingall went close to touching down, and the video referee eventually gave the penalty try after deciding that Caminati's attempt to stop the winger was illegal.\nCastres: Caminati; Martial, Vialelle, Combezou, Decrop; Dumora, Dupont; Taumoepeau, Rallier, Montes; Samson, Moreaux, Caballero, Diarra, Beattie.\nReplacements: Beziat, Tichit, Martinez, Desroche, Babillot, Fontaine, Lamerat, Seron.\nSale: Arscott; Edwards, Addison, Jennings, Ingall; Ford, Mitchell, Lewis-Roberts, Briggs, Mujati, Mills, Ostrikov, Lund, Seymour (capt), Easter.\nReplacements: Taylor, Flynn, Parker, Beaumont, Neild, Jeffers, James, Haley.\nReferee: David Wilkinson (Ireland)", "summary": "A late penalty try gave Sale victory over Castres at Stade Pierre-Antoine in their European Challenge Cup clash."} -{"document": "The 33-year-old was released by Norwich this summer after five years at the club, during which time he made 75 Canaries first-team appearances.\nTurner also had spells on loan at Fulham and Sheffield Wednesday during his time at Carrow Road.\nIn total, the centre-back has made 436 senior career appearances for eight different clubs.\nFind all the latest football transfers on our dedicated page.", "summary": "League One side Southend United have signed former Hull and Norwich defender Michael Turner on a one-year deal."} -{"document": "United contacted St Johnstone this week with a view to speaking to 52-year-old Wright about the job but this approach was rejected by the Saints board.\nThe Tannadice club - bottom of the Premiership - are seeking to replace Jackie McNamara, who left last month.\nDave Bowman took the first team for Saturday's loss to Partick Thistle.\nThe Tangerines have won only once this season and prop up the table with five points from 10 games.\nFormer Northern Ireland goalkeeper Wright, who replaced Steve Lomas at McDiarmid Park in 2013, led St Johnstone to Scottish Cup success in his first season in charge.\nHe has also secured two successive top-six finishes for the Perth side and previously managed in his homeland.", "summary": "St Johnstone boss Tommy Wright is no longer under consideration for the Dundee United manager's job, BBC Scotland has learned."} -{"document": "Media playback is unsupported on your device\n2 November 2014 Last updated at 17:20 GMT\nHomes and businesses were damaged in the storm, but weather experts were not able to confirm it was a tornado.\nNavtej Johal reports.", "summary": "Residents in Coalville in Leicestershire are cleaning up after high winds hit the town."} -{"document": "5 August 2015 Last updated at 06:36 BST\nShe's now 84 and has been telling Newsround the inspiring story of her life before and after that devastating and world-changing event.\nThis animation contains some sad moments that you might find upsetting.\nYou can find out more about what happened in Hiroshima here.\nWatch 'Hiroshima: A Newsround Special' - Thursday 6 August at 5.30pm on the CBBC channel and on the Newsround website.", "summary": "Bun Hashizume was 14 years old and lived in Hiroshima, in Japan, when a nuclear bomb was dropped on the city 70 years ago, at the end of World War Two."} -{"document": "But what has been your moment of the year?\nFrom Ben Stokes' 258 off 198 balls against South Africa to Stuart Broad's 6-17 against the same opponents, and Alastair Cook being the first Englishman to reach 10,000 Test runs, there are lots of highlights.\nOr perhaps you revelled in Australia being skittled for just 85? Or the dog that invaded the pitch at Vizag?\nThe cricket brains of BBC Sport and BBC Radio 5 live asked you to rank your top 10, and your shortlist will be revealed on Tuesday's Tuffers and Vaughan Cricket Show (20:30 GMT, BBC Radio 5 live and online).\nVotes will no longer count but you can still pick your top 10 and share with friends.\nWhat are your top 10 cricketing moments from this year?", "summary": "It's been topsy-turvy for the England side but eventful and entertaining nonetheless."} diff --git a/adapters/tests/fixtures/tests_samples/COCO/coco_annotations.txt b/adapters/tests/fixtures/tests_samples/COCO/coco_annotations.txt deleted file mode 100644 index bd8c86a9..00000000 --- a/adapters/tests/fixtures/tests_samples/COCO/coco_annotations.txt +++ /dev/null @@ -1 +0,0 @@ -[{"segmentation": [[333.96, 175.14, 338.26, 134.33, 342.55, 95.67, 348.99, 79.57, 368.32, 80.64, 371.54, 91.38, 364.03, 106.41, 356.51, 145.07, 351.14, 166.55, 350.07, 184.8, 345.77, 185.88, 332.89, 178.36, 332.89, 172.99]], "area": 2120.991099999999, "iscrowd": 0, "image_id": 39769, "bbox": [332.89, 79.57, 38.65, 106.31], "category_id": 75, "id": 1108446}, {"segmentation": [[44.03, 86.01, 112.75, 74.2, 173.96, 77.42, 175.03, 89.23, 170.74, 98.9, 147.11, 102.12, 54.77, 119.3, 53.69, 119.3, 44.03, 113.93, 41.88, 94.6, 41.88, 94.6]], "area": 4052.607, "iscrowd": 0, "image_id": 39769, "bbox": [41.88, 74.2, 133.15, 45.1], "category_id": 75, "id": 1110067}, {"segmentation": [[1.08, 473.53, 633.17, 473.53, 557.66, 376.45, 535.01, 366.74, 489.71, 305.26, 470.29, 318.2, 456.27, 351.64, 413.12, 363.51, 376.45, 358.11, 348.4, 350.56, 363.51, 331.15, 357.03, 288.0, 353.8, 257.8, 344.09, 190.92, 333.3, 177.98, 345.17, 79.82, 284.76, 130.52, 265.35, 151.01, 308.49, 189.84, 317.12, 215.73, 293.39, 243.78, 269.66, 212.49, 235.15, 199.55, 214.65, 193.08, 187.69, 217.89, 159.64, 278.29, 135.91, 313.89, 169.35, 292.31, 203.87, 281.53, 220.04, 292.31, 220.04, 307.42, 175.82, 345.17, 155.33, 360.27, 105.71, 363.51, 85.21, 374.29, 74.43, 366.74, 70.11, 465.98, 42.07, 471.37, 33.44, 457.35, 34.52, 414.2, 29.12, 368.9, 9.71, 291.24, 46.38, 209.26, 99.24, 128.36, 131.6, 107.87, 50.7, 117.57, 40.99, 103.55, 40.99, 85.21, 60.4, 77.66, 141.3, 70.11, 173.66, 72.27, 174.74, 92.76, 204.94, 72.27, 225.44, 62.56, 262.11, 56.09, 292.31, 53.93, 282.61, 81.98, 298.79, 96.0, 310.65, 102.47, 348.4, 74.43, 373.21, 81.98, 430.38, 35.6, 484.31, 23.73, 540.4, 46.38, 593.26, 66.88, 638.56, 80.9, 632.09, 145.62, 581.39, 118.65, 543.64, 130.52, 533.93, 167.19, 512.36, 197.39, 498.34, 218.97, 529.62, 253.48, 549.03, 273.98, 584.63, 276.13, 587.87, 293.39, 566.29, 305.26, 531.78, 298.79, 549.03, 319.28, 576.0, 358.11, 560.9, 376.45, 639.64, 471.37, 639.64, 2.16, 1.08, 0.0]], "area": 176277.55269999994, "iscrowd": 0, "image_id": 39769, "bbox": [1.08, 0.0, 638.56, 473.53], "category_id": 63, "id": 1605237}, {"segmentation": [[1.07, 1.18, 640.0, 3.33, 638.93, 472.59, 4.3, 479.03]], "area": 301552.6694999999, "iscrowd": 0, "image_id": 39769, "bbox": [1.07, 1.18, 638.93, 477.85], "category_id": 65, "id": 1612051}, {"segmentation": [[138.75, 319.38, 148.75, 294.38, 165.0, 246.87, 197.5, 205.63, 247.5, 203.13, 268.75, 216.88, 280.0, 239.38, 293.75, 244.38, 303.75, 241.88, 307.5, 228.13, 318.75, 220.63, 315.0, 200.63, 291.25, 171.88, 265.0, 156.88, 258.75, 148.13, 262.5, 135.63, 282.5, 123.13, 292.5, 115.63, 311.25, 108.13, 313.75, 106.88, 296.25, 93.13, 282.5, 84.38, 292.5, 64.38, 288.75, 60.63, 266.25, 54.38, 232.5, 63.12, 206.25, 70.63, 170.0, 100.63, 136.25, 114.38, 101.25, 138.13, 56.25, 194.38, 27.5, 259.38, 17.5, 299.38, 32.5, 378.13, 31.25, 448.13, 41.25, 469.38, 66.25, 466.88, 70.0, 419.38, 71.25, 391.88, 77.5, 365.63, 113.75, 364.38, 145.0, 360.63, 168.75, 349.38, 191.25, 330.63, 212.5, 319.38, 223.75, 305.63, 206.25, 286.88, 172.5, 288.13]], "area": 53301.618749999994, "iscrowd": 0, "image_id": 39769, "bbox": [17.5, 54.38, 301.25, 415.0], "category_id": 17, "id": 2190839}, {"segmentation": [[543.75, 136.88, 570.0, 114.38, 591.25, 123.13, 616.25, 140.63, 640.0, 143.13, 636.25, 124.37, 605.0, 103.13, 640.0, 103.13, 633.75, 86.88, 587.5, 73.13, 548.75, 49.38, 505.0, 35.63, 462.5, 25.63, 405.0, 48.13, 362.5, 111.88, 347.5, 179.38, 355.0, 220.63, 356.25, 230.63, 365.0, 264.38, 358.75, 266.88, 358.75, 270.63, 356.25, 291.88, 356.25, 325.63, 355.0, 338.13, 350.0, 348.13, 365.0, 354.38, 396.25, 351.88, 423.75, 355.63, 446.25, 350.63, 460.0, 345.63, 462.5, 321.88, 468.75, 306.88, 481.25, 299.38, 516.25, 341.88, 536.25, 368.13, 570.0, 369.38, 578.75, 359.38, 555.0, 330.63, 532.5, 298.13, 563.75, 299.38, 582.5, 298.13, 586.25, 286.88, 578.75, 278.13, 548.75, 269.38, 525.0, 256.88, 505.0, 206.88, 536.25, 161.88, 540.0, 149.38]], "area": 59700.95625, "iscrowd": 0, "image_id": 39769, "bbox": [347.5, 25.63, 292.5, 343.75], "category_id": 17, "id": 2190842}] \ No newline at end of file diff --git a/adapters/tests/fixtures/tests_samples/COCO/coco_panoptic_annotations.txt b/adapters/tests/fixtures/tests_samples/COCO/coco_panoptic_annotations.txt deleted file mode 100644 index 90a9798b..00000000 --- a/adapters/tests/fixtures/tests_samples/COCO/coco_panoptic_annotations.txt +++ /dev/null @@ -1 +0,0 @@ -[{"id": 8222595, "category_id": 17, "iscrowd": 0, "bbox": [18, 54, 301, 415], "area": 53306}, {"id": 8225432, "category_id": 17, "iscrowd": 0, "bbox": [349, 26, 291, 343], "area": 59627}, {"id": 8798150, "category_id": 63, "iscrowd": 0, "bbox": [1, 0, 639, 474], "area": 174579}, {"id": 14466198, "category_id": 75, "iscrowd": 0, "bbox": [42, 74, 133, 45], "area": 4068}, {"id": 12821912, "category_id": 75, "iscrowd": 0, "bbox": [333, 80, 38, 106], "area": 2118}, {"id": 10898909, "category_id": 93, "iscrowd": 0, "bbox": [0, 0, 640, 480], "area": 2750}] \ No newline at end of file diff --git a/adapters/tests/methods/__init__.py b/adapters/tests/methods/__init__.py deleted file mode 100644 index b1cbe52d..00000000 --- a/adapters/tests/methods/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# flake8: noqa -# There's no way to ignore "F401 '...' imported but unused" warnings in this -# module, but to preserve other warnings. So, don't check this module at all. - -# Copyright 2020 The Adapter-Hub Team. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from .base import create_twin_models -from .test_adapter_common import BottleneckAdapterTestMixin -from .test_compacter import CompacterTestMixin -from .test_ia3 import IA3TestMixin -from .test_lora import LoRATestMixin -from .test_prefix_tuning import PrefixTuningTestMixin -from .test_prompt_tuning import PromptTuningTestMixin -from .test_unipelt import UniPELTTestMixin diff --git a/adapters/tests/methods/base.py b/adapters/tests/methods/base.py deleted file mode 100644 index 67d8e269..00000000 --- a/adapters/tests/methods/base.py +++ /dev/null @@ -1,364 +0,0 @@ -import copy -import os -import tempfile - -import torch - -import adapters -from adapters import ADAPTER_MODEL_MAPPING, AdapterSetup, AdapterTrainer, AutoAdapterModel -from adapters.heads import CausalLMHead -from adapters.utils import WEIGHTS_NAME -from adapters.wrappers import load_model -from transformers import TrainingArguments -from transformers.testing_utils import require_torch, torch_device - - -def create_twin_models(model_class, config_creator=None): - if config_creator and model_class.__name__.startswith("Auto"): - model_config = config_creator() - model1 = model_class.from_config(model_config) - elif config_creator: - model_config = config_creator() - model1 = model_class(model_config) - else: - model_config = model_class.config_class() - model1 = model_class(model_config) - adapters.init(model1) - model1.eval() - # create a twin initialized with the same random weights - model2 = copy.deepcopy(model1) - model2.eval() - return model1, model2 - - -@require_torch -class AdapterMethodBaseTestMixin: - """Provides base test running methods for testing an adapter method implementation.""" - - def filter_parameters(self, model, filter_keys): - return {k: v for (k, v) in model.named_parameters() if any([filter_key in k for filter_key in filter_keys])} - - def run_add_test(self, model, adapter_config, filter_keys): - model.eval() - - name = "test_adapter_" + adapter_config.__class__.__name__ - model.add_adapter(name, config=adapter_config) - model.set_active_adapters([name]) - model.to(torch_device) - - # adapter is correctly added to config - self.assertTrue(name in model.adapters_config) - self.assertEqual(adapter_config, model.adapters_config.get(name)) - - # check that weights are available and active - has_weights = False - filter_keys = [k.format(name=name) for k in filter_keys] - for k, v in self.filter_parameters(model, filter_keys).items(): - has_weights = True - self.assertTrue(v.requires_grad, k) - self.assertTrue(has_weights) - - def run_leave_out_test(self, model, adapter_config, leave_out): - model.eval() - - adapter_config = adapter_config.replace(leave_out=leave_out) - name = "test_adapter_" + adapter_config.__class__.__name__ - model.add_adapter(name, config=adapter_config) - model.set_active_adapters([name]) - - # adapter is correctly added to config - self.assert_adapter_available(model, name) - - adapter = model.get_adapter(name) - - self.assertNotEqual(len(adapter), 0) - found_layers = list(adapter.keys()) - for layer in leave_out: - self.assertNotIn(layer, found_layers) - - model.delete_adapter(name) - - def run_average_test(self, model, adapter_config, filter_keys): - model.eval() - - weights = [0.1, 0.6, 0.3] - - # add adapters to average - name = "test_adapter_" + adapter_config.__class__.__name__ - for i in range(len(weights)): - model.add_adapter(name + f"_{i}", config=adapter_config) - - # collect weighted average of adapter weights - averaged_weights = {} - for i, w in enumerate(weights): - this_filter_keys = [k.format(name=name + f"_{i}") for k in filter_keys] - for k, v in self.filter_parameters(model, this_filter_keys).items(): - base_k = k.replace(name + f"_{i}", name) - if base_k not in averaged_weights: - averaged_weights[base_k] = w * v - else: - averaged_weights[base_k] += w * v - - # average adapters - model.average_adapter(name, [name + f"_{i}" for i in range(len(weights))], weights=weights) - - # adapter is correctly added to config - self.assertTrue(name in model.adapters_config) - self.assertEqual(adapter_config, model.adapters_config.get(name)) - - # compare averaged weights to collected weights - this_filter_keys = [k.format(name=name) for k in filter_keys] - for k, v in self.filter_parameters(model, this_filter_keys).items(): - self.assertTrue(torch.allclose(v, averaged_weights[k]), k) - - def run_delete_test(self, model, adapter_config, filter_keys): - model.eval() - - name = "test_adapter_" + adapter_config.__class__.__name__ - model.add_adapter(name, config=adapter_config) - model.set_active_adapters([name]) - model.to(torch_device) - - # adapter is correctly added to config - self.assert_adapter_available(model, name) - - # remove the adapter again - model.delete_adapter(name) - self.assert_adapter_unavailable(model, name) - - # check that weights are available and active - has_weights = False - filter_keys = [k.format(name=name) for k in filter_keys] - for k, v in self.filter_parameters(model, filter_keys).items(): - has_weights = True - self.assertFalse(has_weights) - - def run_get_test(self, model, adapter_config, num_expected_modules): - model.eval() - - model.add_adapter("first", config=adapter_config) - model.set_active_adapters(["first"]) - - # adapter is correctly added to config - name = "first" - self.assert_adapter_available(model, name) - - adapter = model.get_adapter("first") - - self.assertNotEqual(len(adapter), 0) - num_found_modules = sum([len(layer_modules) for layer_modules in adapter.values()]) - self.assertEqual(num_expected_modules, num_found_modules) - - model.delete_adapter("first") - - def run_forward_test(self, model, adapter_config): - model.eval() - - name = adapter_config.__class__.__name__ - model.add_adapter(name, config=adapter_config) - model.to(torch_device) - - input_data = self.get_input_samples(config=model.config) - - # pass 1: set adapter via property - model.set_active_adapters([name]) - output_1 = model(**input_data) - - # pass 2: set via context - # unset and make sure it's unset - model.set_active_adapters(None) - self.assertEqual(None, model.active_adapters) - with AdapterSetup(name): - output_2 = model(**input_data) - - # pass 3: base output - model.set_active_adapters(None) - base_output = model(**input_data) - - self.assertEqual(len(output_1), len(output_2)) - self.assertTrue(torch.equal(output_1[0], output_2[0])) - self.assertGreaterEqual(len(output_1), len(base_output)) - self.assertFalse(torch.equal(output_1[0], base_output[0])) - - def run_load_test(self, adapter_config): - model1, model2 = create_twin_models(self.model_class, self.config) - - name = "dummy_adapter" - model1.add_adapter(name, config=adapter_config) - model1.set_active_adapters([name]) - with tempfile.TemporaryDirectory() as temp_dir: - model1.save_adapter(temp_dir, name) - - # Check that there are actually weights saved - weights = torch.load(os.path.join(temp_dir, WEIGHTS_NAME), map_location="cpu") - self.assertTrue(len(weights) > 0) - - # also tests that set_active works - loading_info = {} - model2.load_adapter(temp_dir, set_active=True, loading_info=loading_info) - - # check if all weights were loaded - self.assertEqual(0, len(loading_info["missing_keys"])) - self.assertEqual(0, len(loading_info["unexpected_keys"])) - - # check if adapter was correctly loaded - self.assertTrue(name in model2.adapters_config) - - # check equal output - input_data = self.get_input_samples(config=model1.config) - model1.to(torch_device) - model2.to(torch_device) - output1 = model1(**input_data) - output2 = model2(**input_data) - self.assertEqual(len(output1), len(output2)) - self.assertTrue(torch.allclose(output1[0], output2[0], atol=1e-4)) - - def run_full_model_load_test(self, adapter_config): - model1 = self.get_model() - model1.eval() - - name = "dummy" - model1.add_adapter(name, config=adapter_config) - with tempfile.TemporaryDirectory() as temp_dir: - model1.save_pretrained(temp_dir) - - model2, loading_info = load_model(temp_dir, self.model_class, output_loading_info=True) - - # check if all weights were loaded - self.assertEqual(0, len(loading_info["missing_keys"])) - self.assertEqual(0, len(loading_info["unexpected_keys"])) - - # check if adapter was correctly loaded - self.assertTrue(name in model2.adapters_config) - - # check equal output - input_data = self.get_input_samples(config=model1.config) - model1.to(torch_device) - model2.to(torch_device) - with AdapterSetup(name): - output1 = model1(**input_data) - output2 = model2(**input_data) - self.assertEqual(len(output1), len(output2)) - self.assertTrue(torch.equal(output1[0], output2[0])) - - def trainings_run(self, model, lr=1.0, steps=8): - # setup dataset - train_dataset = self.dataset() - - training_args = TrainingArguments( - output_dir="./examples", - do_train=True, - learning_rate=lr, - max_steps=steps, - no_cuda=True, - per_device_train_batch_size=2, - remove_unused_columns=False, - ) - - # evaluate - trainer = AdapterTrainer( - model=model, - args=training_args, - train_dataset=train_dataset, - ) - trainer.train() - - def run_train_test(self, adapter_config, filter_keys): - if not self.do_run_train_tests: - self.skipTest("Skipping training tests. Set `do_run_train_tests=True` to run them.") - if self.config_class not in ADAPTER_MODEL_MAPPING: - self.skipTest("Does not support flex heads.") - model = AutoAdapterModel.from_config(self.config()) - - # add two adapters: one will be trained and the other should be frozen - model.add_adapter("mrpc", config=adapter_config) - model.add_adapter("dummy", config=adapter_config) - self.add_head(model, "mrpc") - - self.assert_adapter_available(model, "mrpc") - self.assert_adapter_available(model, "dummy") - - # train the mrpc adapter -> should be activated & unfreezed - model.train_adapter("mrpc") - self.assertEqual(set(["mrpc"]), model.active_adapters.flatten()) - - # all weights of the adapter should be activated - has_weights = False - filter_keys_trained = [k.format(name="mrpc") for k in filter_keys] - for k, v in self.filter_parameters(model, filter_keys_trained).items(): - has_weights = True - self.assertTrue(v.requires_grad, k) - self.assertTrue(has_weights) - # all weights of the adapter not used for training should be frozen - filter_keys_untrained = [k.format(name="dummy") for k in filter_keys] - for k, v in self.filter_parameters(model, filter_keys_untrained).items(): - self.assertFalse(v.requires_grad, k) - - state_dict_pre = copy.deepcopy(model.state_dict()) - - self.trainings_run(model) - - # check that the adapters have changed, but the base model has not - adapters_with_change, base_with_change = False, False - # check whether the key corresponds to a tied embedding - - def has_tied_embeddings(k): - tied_embeddings = hasattr(model.config, "tie_word_embeddings") and model.config.tie_word_embeddings - is_tied_layer = ( - isinstance(model.heads["mrpc"], CausalLMHead) - and "heads.{}.{}.weight".format("mrpc", len(model.heads["mrpc"]._modules) - 1) in k - ) - return tied_embeddings and is_tied_layer - - for (k1, v1), (k2, v2) in zip(state_dict_pre.items(), model.state_dict().items()): - if "mrpc" in k1 and not has_tied_embeddings(k1): - adapters_with_change |= not torch.equal(v1, v2) - else: - base_with_change |= not torch.equal(v1, v2) - self.assertTrue(adapters_with_change) - self.assertFalse(base_with_change) - - def run_merge_test(self, adapter_config): - model = self.get_model() - model.eval() - model.add_adapter("test_lora", config=adapter_config) - model.to(torch_device) - - input_data = self.get_input_samples(config=model.config) - - # forward in training mode - model.set_active_adapters(["test_lora"]) - output_1 = model(**input_data) - - # forward in merged mode - model.set_active_adapters(None) - model.merge_adapter("test_lora") - model.to(torch_device) - model.eval() - output_2 = model(**input_data) - - # check forward pass - self.assertEqual(len(output_1), len(output_2)) - self.assertTrue(torch.allclose(output_1[0], output_2[0], atol=1e-3)) - - def run_reset_test(self, adapter_config): - model = self.get_model() - model.eval() - model.add_adapter("test_lora", config=adapter_config) - model.to(torch_device) - - input_data = self.get_input_samples(config=model.config) - - # before merging - output_1 = model(**input_data) - - # merge & reset - model.merge_adapter("test_lora") - model.reset_adapter() - - # after merging - output_2 = model(**input_data) - - # check forward pass - self.assertEqual(len(output_1), len(output_2)) - self.assertTrue(torch.allclose(output_1[0], output_2[0], atol=1e-3)) diff --git a/adapters/tests/methods/test_adapter_common.py b/adapters/tests/methods/test_adapter_common.py deleted file mode 100644 index 8d78c88e..00000000 --- a/adapters/tests/methods/test_adapter_common.py +++ /dev/null @@ -1,474 +0,0 @@ -import copy -import tempfile - -import torch - -import adapters -from adapters import ( - ADAPTER_CONFIG_MAP, - ADAPTER_MODEL_MAPPING, - AutoAdapterModel, - BatchSplit, - DoubleSeqBnConfig, - DoubleSeqBnInvConfig, - Fuse, - InvertibleAdaptersMixin, - InvertibleAdaptersWrapperMixin, - MAMConfig, - SeqBnConfig, - SeqBnInvConfig, -) -from adapters.heads.language_modeling import CausalLMHead -from transformers import MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING, CLIPConfig -from transformers.testing_utils import require_torch, torch_device - -from .base import AdapterMethodBaseTestMixin, create_twin_models - - -@require_torch -class BottleneckAdapterTestMixin(AdapterMethodBaseTestMixin): - adapter_configs_to_test = [ - (SeqBnConfig(), ["adapters.{name}."]), - (MAMConfig(), ["adapters.{name}.", "prefix_tunings.{name}."]), - ] - - inv_adapter_configs_to_test = [ - (SeqBnInvConfig(), ["invertible_adapters.{name}"]), - (DoubleSeqBnInvConfig(), ["invertible_adapters.{name}"]), - ] - - def test_add_adapter(self): - model = self.get_model() - model.eval() - - for adapter_config, filter_keys in self.adapter_configs_to_test: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - self.run_add_test(model, adapter_config, filter_keys) - - def test_leave_out_adapter(self): - model = self.get_model() - model.eval() - - for adapter_config, _ in self.adapter_configs_to_test: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - self.run_leave_out_test(model, adapter_config, self.leave_out_layers) - - def test_average_adapter(self): - model = self.get_model() - model.eval() - - for adapter_config, filter_keys in self.adapter_configs_to_test: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - self.run_average_test(model, adapter_config, filter_keys) - - def test_delete_adapter(self): - model = self.get_model() - model.eval() - - for adapter_config, filter_keys in self.adapter_configs_to_test: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - self.run_delete_test(model, adapter_config, filter_keys) - - def test_add_adapter_with_invertible(self): - model = self.get_model().base_model - model.eval() - if not isinstance(model, InvertibleAdaptersMixin) and not isinstance(model, InvertibleAdaptersWrapperMixin): - self.skipTest("Model does not support invertible adapters.") - - for adapter_config in [SeqBnInvConfig(), DoubleSeqBnInvConfig()]: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - name = adapter_config.__class__.__name__ - model.add_adapter(name, config=adapter_config) - model.set_active_adapters([name]) - - # adapter is correctly added to config - self.assertTrue(name in model.adapters_config) - self.assertEqual(adapter_config, model.adapters_config.get(name)) - - # invertible adapter is correctly added and returned - self.assertTrue(name in model.invertible_adapters) - self.assertEqual(model.invertible_adapters[name], model.get_invertible_adapter()) - - # all invertible adapter weights should be activated for training - for param in model.invertible_adapters[name].parameters(): - self.assertTrue(param.requires_grad) - - # Set a hook before the invertible adapter to make sure it's actually called twice: - # Once after the embedding layer and once in the prediction head. - calls = 0 - - def forward_pre_hook(module, input): - nonlocal calls - calls += 1 - - model.get_invertible_adapter().register_forward_pre_hook(forward_pre_hook) - - # check forward pass - input_data = self.get_input_samples(config=model.config) - model.to(torch_device) - adapter_output = model(**input_data) - # make sure the output is different without invertible adapter - del model.invertible_adapters[name] - self.assertFalse(name in model.invertible_adapters) - adapter_output_no_inv = model(**input_data) - self.assertEqual(len(adapter_output), len(adapter_output_no_inv)) - self.assertFalse(torch.equal(adapter_output[0], adapter_output_no_inv[0])) - # We expect one call to invertible adapter - self.assertEqual(1, calls) - - def test_delete_adapter_with_invertible(self): - """Tests if the invertible adapters are deleted correctly.""" - model = self.get_model().base_model - model.eval() - if not isinstance(model, InvertibleAdaptersMixin) and not isinstance(model, InvertibleAdaptersWrapperMixin): - self.skipTest("Model does not support invertible adapters.") - - # iterate through all adapter invertible adapter configs - for adapter_config, filter_keys in self.inv_adapter_configs_to_test: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - name = adapter_config.__class__.__name__ - model.add_adapter(name, config=adapter_config) - model.set_active_adapters([name]) - - # check if adapter is correctly added to config - self.assert_adapter_available(model, name) - # remove the adapter again - model.delete_adapter(name) - - # check if adapter is correctly removed from the model - self.assert_adapter_unavailable(model, name) - - # check additionally if invertible adapter is removed correctly from the model - self.assertFalse(name in model.invertible_adapters) - self.assertEqual(None, model.get_invertible_adapter()) - - # check that weights are available and active - has_weights = False - filter_keys = [k.format(name=name) for k in filter_keys] - for k, v in self.filter_parameters(model, filter_keys).items(): - has_weights = True - self.assertFalse(has_weights) - - def test_get_adapter(self): - model = self.get_model() - model.eval() - n_layers = len(list(model.iter_layers())) - if model.config.is_encoder_decoder: - n_prefix_layers = 3 - elif model.config.is_composition or isinstance(model.config, CLIPConfig): - n_prefix_layers = 2 - else: - n_prefix_layers = 1 - - for adapter_config, n_expected in [ - (DoubleSeqBnConfig(), n_layers * 2), - (MAMConfig(), n_layers + n_prefix_layers), - ]: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - self.run_get_test(model, adapter_config, n_expected) - - def test_add_adapter_multiple_reduction_factors(self): - model = self.get_model() - model.eval() - reduction_factor = {"1": 1, "default": 2} - for adapter_config in [ - SeqBnConfig(reduction_factor=reduction_factor), - DoubleSeqBnConfig(reduction_factor=reduction_factor), - ]: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - name = adapter_config.__class__.__name__ - model.add_adapter(name, config=adapter_config) - model.set_active_adapters([name]) - - # adapter is correctly added to config - self.assertTrue(name in model.adapters_config) - self.assertEqual(adapter_config, model.adapters_config.get(name)) - - adapter = model.get_adapter(name) - - self.assertEqual( - adapter[0]["output_adapter"].adapter_down[0].in_features - / adapter[0]["output_adapter"].adapter_down[0].out_features, - reduction_factor["default"], - ) - self.assertEqual( - adapter[1]["output_adapter"].adapter_down[0].in_features - / adapter[1]["output_adapter"].adapter_down[0].out_features, - reduction_factor["1"], - ) - - def test_reduction_factor_no_default(self): - model = self.get_model() - model.eval() - reduction_factor = {"2": 8, "4": 32} - for adapter_config in [ - SeqBnConfig(reduction_factor=reduction_factor), - DoubleSeqBnConfig(reduction_factor=reduction_factor), - ]: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - name = adapter_config.__class__.__name__ - with self.assertRaises(KeyError): - model.add_adapter(name, config=adapter_config) - - def test_adapter_forward(self): - model = self.get_model() - model.eval() - - for adapter_config, _ in self.adapter_configs_to_test: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - self.run_forward_test(model, adapter_config) - - def test_invertible_adapter_forward(self): - model = self.get_model() - model.eval() - - for adapter_config, _ in self.inv_adapter_configs_to_test: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - self.run_forward_test(model, adapter_config) - - def test_load_adapter(self): - self.run_load_test(SeqBnConfig()) - - def test_load_mam_adapter(self): - self.run_load_test(MAMConfig()) - - def test_load_full_model_adapter(self): - self.run_full_model_load_test(SeqBnConfig()) - - def test_model_config_serialization(self): - """PretrainedConfigurations should not raise an Exception when serializing the config dict - - See, e.g., PretrainedConfig.to_json_string() - """ - for k, v in ADAPTER_CONFIG_MAP.items(): - model = self.get_model() - # HACK: reduce the reduction factor such that - # the small test model can have a phm_dim of 4 - if hasattr(v, "phm_layer") and v.phm_layer: - v = v.__class__(reduction_factor=4) - model.add_adapter("test", config=v) - # should not raise an exception - model.config.to_json_string() - - def test_model_adapter_summary(self): - # count model parameters before - model = self.get_model() - model_no_params = sum(p.numel() for p in model.parameters()) - for k, v in ADAPTER_CONFIG_MAP.items(): - # HACK: reduce the reduction factor such that - # the small test model can have a phm_dim of 4 - if hasattr(v, "phm_layer") and v.phm_layer: - v = v.__class__(reduction_factor=4) - model.add_adapter(k, config=v) - summary = model.adapter_summary(as_dict=True) - self.assertEqual(len(ADAPTER_CONFIG_MAP) + 1, len(summary)) - for name in ADAPTER_CONFIG_MAP.keys(): - self.assertTrue(any([row["name"] == name for row in summary])) - self.assertEqual(model_no_params, summary[-1]["#param"]) - - def test_loading_adapter_weights_with_prefix(self): - if self.config_class not in ADAPTER_MODEL_MAPPING: - self.skipTest("Does not support flex heads.") - - model_base, model_with_head = create_twin_models(self.model_class, self.config) - model_base = model_base.base_model # use base model w/o prefix - - model_with_head.add_adapter("dummy") - - with tempfile.TemporaryDirectory() as temp_dir: - model_with_head.save_adapter(temp_dir, "dummy") - - loading_info = {} - model_base.load_adapter(temp_dir, loading_info=loading_info) - - self.assertEqual(0, len(loading_info["missing_keys"])) - self.assertEqual(0, len(loading_info["unexpected_keys"])) - - # check equal output - input_data = self.get_input_samples(config=model_with_head.config) - model_with_head.to(torch_device) - model_base.to(torch_device) - output1 = model_with_head(**input_data) - output2 = model_base(**input_data) - self.assertEqual(len(output1), len(output2)) - self.assertTrue(torch.equal(output1[0], output2[0])) - - def test_loading_adapter_weights_without_prefix(self): - if self.config_class not in ADAPTER_MODEL_MAPPING: - self.skipTest("Does not support flex heads.") - - model_base, model_with_head = create_twin_models(self.model_class, self.config) - model_base = model_base.base_model # use base model w/o prefix - - model_base.add_adapter("dummy") - - with tempfile.TemporaryDirectory() as temp_dir: - model_base.save_adapter(temp_dir, "dummy") - - loading_info = {} - model_with_head.load_adapter(temp_dir, loading_info=loading_info) - - self.assertEqual(0, len(loading_info["missing_keys"])) - self.assertEqual(0, len(loading_info["unexpected_keys"])) - - # check equal output - input_data = self.get_input_samples(config=model_with_head.config) - model_with_head.to(torch_device) - model_base.to(torch_device) - output1 = model_with_head(**input_data) - output2 = model_base(**input_data) - self.assertEqual(len(output1), len(output2)) - self.assertTrue(torch.equal(output1[0], output2[0])) - - def test_forward_with_past(self): - if self.config_class not in ADAPTER_MODEL_MAPPING: - self.skipTest("Does not support flex heads.") - if self.config_class not in MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING: - self.skipTest("No causal lm class.") - - static_model = MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING[self.config_class](self.config()) - adapters.init(static_model) - flex_model = AutoAdapterModel.from_pretrained(None, config=self.config(), state_dict=static_model.state_dict()) - - static_model.add_adapter("dummy") - static_model.set_active_adapters("dummy") - static_model.eval() - flex_model.eval() - with tempfile.TemporaryDirectory() as temp_dir: - static_model.save_adapter(temp_dir, "dummy") - - loading_info = {} - flex_model.load_adapter(temp_dir, loading_info=loading_info) - flex_model.set_active_adapters("dummy") - - input_data = self.get_input_samples(config=static_model.config) - static_model.eval() - flex_model.eval() - static_model.to(torch_device) - flex_model.to(torch_device) - output = static_model(**input_data) - - input_data["past_key_values"] = output["past_key_values"] - output_base = static_model(**input_data) - output_with_head = flex_model(**input_data) - self.assertTrue(torch.allclose(output_base["logits"], output_with_head["logits"])) - - def test_train_single_adapter(self): - self.run_train_test(SeqBnConfig(), ["adapters.{name}."]) - - def test_train_mam_adapter(self): - self.run_train_test(MAMConfig(), ["adapters.{name}."]) - - def test_train_adapter_fusion(self): - if not self.do_run_train_tests: - self.skipTest("Skipping training tests. Set `do_run_train_tests=True` to run them.") - if self.config_class not in ADAPTER_MODEL_MAPPING: - self.skipTest("Does not support flex heads.") - model = AutoAdapterModel.from_config(self.config()) - self.add_head(model, "head") - - # add the adapters to be fused - model.add_adapter("a") - model.add_adapter("b") - model.add_adapter("c") - - self.assertIn("a", model.adapters_config.adapters) - self.assertIn("b", model.adapters_config.adapters) - self.assertIn("c", model.adapters_config.adapters) - - # setup fusion - adapter_setup = Fuse("a", "b", "c") - model.add_adapter_fusion(adapter_setup) - model.train_adapter_fusion(adapter_setup) - model.set_active_adapters(adapter_setup) - self.assertEqual(adapter_setup, model.active_adapters) - - # all weights of the adapters should be frozen (test for one) - for k, v in self.filter_parameters(model, ["adapters.a."]).items(): - self.assertFalse(v.requires_grad, k) - # all weights of the fusion layer should be activated - for k, v in self.filter_parameters(model, ["adapter_fusion_layer"]).items(): - self.assertTrue(v.requires_grad, k) - # weights of the model should be frozen (check on some examples) - for k, v in self.filter_parameters(model, ["encoder.layer.0.attention"]).items(): - self.assertFalse(v.requires_grad, k) - - state_dict_pre = copy.deepcopy(model.state_dict()) - - # Since our config has a value matrix, make sure it is regularized. - # We do this by patching the fusion regularization function. - regularization_called = False - orig_fusion_regularization_loss = model.base_model.get_fusion_regularization_loss - - def patched_fusion_reg_loss(): - nonlocal regularization_called - regularization_called = True - return orig_fusion_regularization_loss() - - model.base_model.get_fusion_regularization_loss = patched_fusion_reg_loss - - self.trainings_run(model) - self.assertTrue(regularization_called) - - def has_tied_embeddings(k): - tied_embeddings = hasattr(model.config, "tie_word_embeddings") and model.config.tie_word_embeddings - is_tied_layer = ( - isinstance(model.heads["head"], CausalLMHead) - and "heads.{}.{}.weight".format("head", len(model.heads["head"]._modules) - 1) in k - ) - return tied_embeddings and is_tied_layer - - # check that the adapters have changed, but the base model has not - adapters_with_change, base_with_change = False, False - for (k1, v1), (k2, v2) in zip(state_dict_pre.items(), model.state_dict().items()): - if ( - "adapter_fusion_layer" in k1 - or "classifier" in k1 - or "classification_head" in k1 - or "score" in k1 - or "head" in k1 - ) and not has_tied_embeddings(k1): - adapters_with_change |= not torch.equal(v1, v2) - else: - base_with_change |= not torch.equal(v1, v2) - self.assertTrue(adapters_with_change) - self.assertFalse(base_with_change) - - def test_batch_split_training(self): - if not self.do_run_train_tests: - self.skipTest("Skipping training tests. Set `do_run_train_tests=True` to run them.") - if self.config_class not in ADAPTER_MODEL_MAPPING: - self.skipTest("Does not support flex heads.") - model = AutoAdapterModel.from_config(self.config()) - - model.add_adapter("mrpc1") - model.add_adapter("mrpc2") - self.add_head(model, "mrpc1") - self.add_head(model, "mrpc2") - adapter_setup = BatchSplit("mrpc1", "mrpc2", batch_sizes=[1, 1]) - model.active_adapters = adapter_setup - model.train_adapter(adapter_setup) - - # all weights of the adapter should be activated - for k, v in self.filter_parameters(model, ["adapters.mrpc1."]).items(): - self.assertTrue(v.requires_grad, k) - # all weights of the adapter not used for training should be frozen - for k, v in self.filter_parameters(model, ["adapters.mrpc2."]).items(): - self.assertTrue(v.requires_grad, k) - # weights of the model should be frozen (check on some examples) - for k, v in self.filter_parameters(model, ["encoder.layer.0.attention"]).items(): - self.assertFalse(v.requires_grad, k) - - state_dict_pre = copy.deepcopy(model.state_dict()) - - self.trainings_run(model) - - # check that the adapters have changed, but the base model has not - adapters_with_change, base_with_change = False, False - for (k1, v1), (k2, v2) in zip(state_dict_pre.items(), model.state_dict().items()): - if "mrpc" in k1: - adapters_with_change |= not torch.equal(v1, v2) - else: - base_with_change |= not torch.equal(v1, v2) - self.assertTrue(adapters_with_change) - self.assertFalse(base_with_change) diff --git a/adapters/tests/methods/test_compacter.py b/adapters/tests/methods/test_compacter.py deleted file mode 100644 index ffe7e0ea..00000000 --- a/adapters/tests/methods/test_compacter.py +++ /dev/null @@ -1,75 +0,0 @@ -from adapters import ADAPTER_MODEL_MAPPING, AutoAdapterModel, CompacterPlusPlusConfig -from transformers.testing_utils import require_torch, torch_device - -from .base import AdapterMethodBaseTestMixin - - -@require_torch -class CompacterTestMixin(AdapterMethodBaseTestMixin): - def test_add_compacter(self): - model = self.get_model() - self.run_add_test(model, CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8), ["adapters.{name}."]) - - def test_leave_out_compacter(self): - model = self.get_model() - self.run_leave_out_test(model, CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8), self.leave_out_layers) - - def test_average_compacter(self): - model = self.get_model() - self.run_average_test(model, CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8), ["adapters.{name}."]) - - def test_delete_compacter(self): - model = self.get_model() - self.run_delete_test(model, CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8), ["adapters.{name}."]) - - def test_get_compacter(self): - model = self.get_model() - n_layers = len(list(model.iter_layers())) - self.run_get_test(model, CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8), n_layers + 1) - - def test_forward_compacter(self): - model = self.get_model() - adapter_config = CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8) - self.run_forward_test(model, adapter_config) - - def test_forward_shared_phm_compacter(self): - model = self.get_model() - adapter_config = CompacterPlusPlusConfig(phm_dim=4, shared_W_phm=True, reduction_factor=4) - self.run_forward_test(model, adapter_config) - - def test_load_compacter(self): - self.run_load_test(CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8)) - - def test_train_shared_w_compacter(self): - adapter_config = CompacterPlusPlusConfig( - phm_dim=2, shared_W_phm=True, shared_phm_rule=False, reduction_factor=8 - ) - self.run_train_test(adapter_config, ["adapters.{name}."]) - - def test_train_shared_phm_compacter(self): - adapter_config = CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8) - self.run_train_test(adapter_config, ["adapters.{name}."]) - - def test_compacter_generate(self): - if self.config_class not in ADAPTER_MODEL_MAPPING or ( - "seq2seq_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types - and "causal_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types - ): - self.skipTest("No seq2seq or causal language model head") - - model1 = AutoAdapterModel.from_config(self.config()) - model1.add_adapter("dummy", config=CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8)) - if "seq2seq_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - model1.add_seq2seq_lm_head("dummy") - else: - model1.add_causal_lm_head("dummy") - model1.set_active_adapters("dummy") - model1.to(torch_device) - - seq_output_length = 32 - - # Finally, also check if generation works properly - input_ids = self.get_input_samples((1, 4), config=model1.config)["input_ids"] - input_ids = input_ids.to(torch_device) - generated = model1.generate(input_ids, max_length=seq_output_length) - self.assertLessEqual(generated.shape, (1, seq_output_length)) diff --git a/adapters/tests/methods/test_config_union.py b/adapters/tests/methods/test_config_union.py deleted file mode 100644 index 12d82a5d..00000000 --- a/adapters/tests/methods/test_config_union.py +++ /dev/null @@ -1,53 +0,0 @@ -from adapters.configuration import ( - CompacterConfig, - ConfigUnion, - LoRAConfig, - ParBnConfig, - PrefixTuningConfig, - SeqBnConfig, -) -from tests.methods.base import AdapterMethodBaseTestMixin -from transformers.testing_utils import require_torch - - -@require_torch -class ConfigUnionAdapterTest(AdapterMethodBaseTestMixin): - adapter_configs_to_test = [ - ( - ConfigUnion( - PrefixTuningConfig(), - ParBnConfig(), - ), - ["adapters.{name}.", "prefix_tunings.{name}."], - ), - ( - ConfigUnion( - CompacterConfig(), - LoRAConfig(), - ), - ["adapters.{name}.", "loras.{name}."], - ), - ( - ConfigUnion( - SeqBnConfig(), - LoRAConfig(), - ), - ["adapters.{name}.", "loras.{name}."], - ), - ] - - def test_add_union_adapter(self): - model = self.get_model() - model.eval() - - for adapter_config, filter_keys in self.adapter_configs_to_test: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - self.run_add_test(model, adapter_config, filter_keys) - - def test_union_adapter_forward(self): - model = self.get_model() - model.eval() - - for adapter_config, _ in self.adapter_configs_to_test: - with self.subTest(model_class=model.__class__.__name__, config=adapter_config.__class__.__name__): - self.run_forward_test(model, adapter_config) diff --git a/adapters/tests/methods/test_ia3.py b/adapters/tests/methods/test_ia3.py deleted file mode 100644 index 0dc81d02..00000000 --- a/adapters/tests/methods/test_ia3.py +++ /dev/null @@ -1,47 +0,0 @@ -from adapters import IA3Config -from transformers.testing_utils import require_torch - -from .base import AdapterMethodBaseTestMixin - - -@require_torch -class IA3TestMixin(AdapterMethodBaseTestMixin): - def test_add_ia3(self): - model = self.get_model() - self.run_add_test(model, IA3Config(), ["loras.{name}."]) - - def test_leave_out_ia3(self): - model = self.get_model() - self.run_leave_out_test(model, IA3Config(), self.leave_out_layers) - - def test_average_ia3(self): - model = self.get_model() - self.run_average_test(model, IA3Config(), ["loras.{name}."]) - - def test_delete_ia3(self): - model = self.get_model() - self.run_delete_test(model, IA3Config(), ["loras.{name}."]) - - def test_get_ia3(self): - model = self.get_model() - n_layers = len(list(model.iter_layers())) - self.run_get_test(model, IA3Config(intermediate_lora=True, output_lora=True), n_layers * 3) - - def test_forward_ia3(self): - model = self.get_model() - self.run_forward_test(model, IA3Config(init_weights="bert", intermediate_lora=True, output_lora=True)) - - def test_load_ia3(self): - self.run_load_test(IA3Config()) - - def test_load_full_model_ia3(self): - self.run_full_model_load_test(IA3Config(init_weights="bert")) - - def test_train_ia3(self): - self.run_train_test(IA3Config(init_weights="bert"), ["loras.{name}."]) - - def test_merge_ia3(self): - self.run_merge_test(IA3Config(init_weights="bert")) - - def test_reset_ia3(self): - self.run_reset_test(IA3Config(init_weights="bert")) diff --git a/adapters/tests/methods/test_lora.py b/adapters/tests/methods/test_lora.py deleted file mode 100644 index 90f6d26a..00000000 --- a/adapters/tests/methods/test_lora.py +++ /dev/null @@ -1,47 +0,0 @@ -from adapters import LoRAConfig -from transformers.testing_utils import require_torch - -from .base import AdapterMethodBaseTestMixin - - -@require_torch -class LoRATestMixin(AdapterMethodBaseTestMixin): - def test_add_lora(self): - model = self.get_model() - self.run_add_test(model, LoRAConfig(), ["loras.{name}."]) - - def test_leave_out_lora(self): - model = self.get_model() - self.run_leave_out_test(model, LoRAConfig(), self.leave_out_layers) - - def test_average_lora(self): - model = self.get_model() - self.run_average_test(model, LoRAConfig(), ["loras.{name}."]) - - def test_delete_lora(self): - model = self.get_model() - self.run_delete_test(model, LoRAConfig(), ["loras.{name}."]) - - def test_get_lora(self): - model = self.get_model() - n_layers = len(list(model.iter_layers())) - self.run_get_test(model, LoRAConfig(intermediate_lora=True, output_lora=True), n_layers * 3) - - def test_forward_lora(self): - model = self.get_model() - self.run_forward_test(model, LoRAConfig(init_weights="bert", intermediate_lora=True, output_lora=True)) - - def test_load_lora(self): - self.run_load_test(LoRAConfig()) - - def test_load_full_model_lora(self): - self.run_full_model_load_test(LoRAConfig(init_weights="bert")) - - def test_train_lora(self): - self.run_train_test(LoRAConfig(init_weights="bert"), ["loras.{name}."]) - - def test_merge_lora(self): - self.run_merge_test(LoRAConfig(init_weights="bert")) - - def test_reset_lora(self): - self.run_reset_test(LoRAConfig(init_weights="bert")) diff --git a/adapters/tests/methods/test_prefix_tuning.py b/adapters/tests/methods/test_prefix_tuning.py deleted file mode 100644 index 3c98b285..00000000 --- a/adapters/tests/methods/test_prefix_tuning.py +++ /dev/null @@ -1,98 +0,0 @@ -import torch - -from adapters import ADAPTER_MODEL_MAPPING, AutoAdapterModel, PrefixTuningConfig -from transformers import CLIPConfig -from transformers.testing_utils import require_torch, torch_device - -from .base import AdapterMethodBaseTestMixin - - -@require_torch -class PrefixTuningTestMixin(AdapterMethodBaseTestMixin): - def test_add_prefix_tuning(self): - model = self.get_model() - self.run_add_test(model, PrefixTuningConfig(flat=True), ["prefix_tunings.{name}."]) - - def test_leave_out_prefix_tuning(self): - # Note: for prefix tuning, this test is a little weird as the prefix tuning weights are only returned for the first layer with a prefix and not all. - # It still kind of tests the right thing as we prune layers from the end, which will move the returned layer to the next layer with a prefix. - model = self.get_model() - self.run_leave_out_test(model, PrefixTuningConfig(flat=True), self.leave_out_layers) - - def test_average_prefix_tuning(self): - model = self.get_model() - self.run_average_test(model, PrefixTuningConfig(flat=True), ["prefix_tunings.{name}."]) - - def test_delete_prefix_tuning(self): - model = self.get_model() - self.run_delete_test(model, PrefixTuningConfig(flat=True), ["prefix_tunings.{name}."]) - - def test_get_prefix_tuning(self): - model = self.get_model() - if model.config.is_encoder_decoder: - n_prefix_layers = 3 - elif model.config.is_composition or isinstance(model.config, CLIPConfig): - n_prefix_layers = 2 - else: - n_prefix_layers = 1 - - self.run_get_test(model, PrefixTuningConfig(flat=True), n_prefix_layers) - - def test_forward_prefix_tuning(self): - model = self.get_model() - self.run_forward_test(model, PrefixTuningConfig(flat=True)) - - def test_load_prefix_tuning(self): - self.run_load_test(PrefixTuningConfig()) - - def test_load_full_model_prefix_tuning(self): - self.run_full_model_load_test(PrefixTuningConfig()) - - def test_train_prefix_tuning(self): - self.run_train_test(PrefixTuningConfig(), ["prefix_tunings.{name}."]) - - def test_eject_prefix(self): - model = self.get_model() - model.eval() - model.add_adapter("test_prefix", config="prefix_tuning") - model.to(torch_device) - - input_data = self.get_input_samples(config=model.config) - - # user reparamterized prefix - model.set_active_adapters(["test_prefix"]) - output_1 = model(**input_data) - - # eject prefix - model.eject_prefix_tuning("test_prefix") - model.to(torch_device) - model.eval() - output_2 = model(**input_data) - - # check forward pass - self.assertEqual(len(output_1), len(output_2)) - self.assertTrue(torch.allclose(output_1[0], output_2[0], atol=1e-4)) - - def test_prefix_tuning_generate(self): - if self.config_class not in ADAPTER_MODEL_MAPPING or ( - "seq2seq_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types - and "causal_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types - ): - self.skipTest("No seq2seq or causal language model head") - - model1 = AutoAdapterModel.from_config(self.config()) - model1.add_adapter("dummy", config="prefix_tuning") - if "seq2seq_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - model1.add_seq2seq_lm_head("dummy") - else: - model1.add_causal_lm_head("dummy") - model1.set_active_adapters("dummy") - model1.to(torch_device) - - seq_output_length = 32 - - # Finally, also check if generation works properly - input_ids = self.get_input_samples((1, 4), config=model1.config)["input_ids"] - input_ids = input_ids.to(torch_device) - generated = model1.generate(input_ids, max_length=seq_output_length) - self.assertLessEqual(generated.shape, (1, seq_output_length)) diff --git a/adapters/tests/methods/test_prompt_tuning.py b/adapters/tests/methods/test_prompt_tuning.py deleted file mode 100644 index d0b12d25..00000000 --- a/adapters/tests/methods/test_prompt_tuning.py +++ /dev/null @@ -1,36 +0,0 @@ -from adapters import PromptTuningConfig -from transformers.testing_utils import require_torch - -from .base import AdapterMethodBaseTestMixin - - -@require_torch -class PromptTuningTestMixin(AdapterMethodBaseTestMixin): - def test_add_prompt_tuning(self): - model = self.get_model() - self.run_add_test(model, PromptTuningConfig(prompt_length=10), ["prompt_tunings.{name}."]) - - def test_average_prompt_tuning(self): - model = self.get_model() - self.run_average_test(model, PromptTuningConfig(prompt_length=10), ["prompt_tunings.{name}."]) - - def test_delete_prompt_tuning(self): - model = self.get_model() - self.run_delete_test(model, PromptTuningConfig(prompt_length=10), ["prompt_tunings.{name}."]) - - def test_get_prompt_tuning(self): - model = self.get_model() - self.run_get_test(model, PromptTuningConfig(prompt_length=10), 1) - - def test_forward_prompt_tuning(self): - model = self.get_model() - self.run_forward_test(model, PromptTuningConfig(prompt_length=10)) - - def test_load_prompt_tuning(self): - self.run_load_test(PromptTuningConfig(prompt_length=10)) - - def test_load_full_model_prompt_tuning(self): - self.run_full_model_load_test(PromptTuningConfig(prompt_length=10)) - - def test_train_prompt_tuning(self): - self.run_train_test(PromptTuningConfig(prompt_length=10), ["prompt_tunings.{name}."]) diff --git a/adapters/tests/methods/test_unipelt.py b/adapters/tests/methods/test_unipelt.py deleted file mode 100644 index 83bbec52..00000000 --- a/adapters/tests/methods/test_unipelt.py +++ /dev/null @@ -1,64 +0,0 @@ -from adapters import UniPELTConfig -from transformers.testing_utils import require_torch, torch_device - -from .base import AdapterMethodBaseTestMixin - - -@require_torch -class UniPELTTestMixin(AdapterMethodBaseTestMixin): - def test_add_unipelt(self): - model = self.get_model() - self.run_add_test(model, UniPELTConfig(), ["loras.{name}.", "adapters.{name}.", "prefix_tunings.{name}."]) - - def test_average_unipelt(self): - model = self.get_model() - self.run_average_test(model, UniPELTConfig(), ["loras.{name}.", "adapters.{name}.", "prefix_tunings.{name}."]) - - def test_delete_unipelt(self): - model = self.get_model() - self.run_delete_test(model, UniPELTConfig(), ["loras.{name}.", "adapters.{name}.", "prefix_tunings.{name}."]) - - def test_get_unipelt(self): - model = self.get_model() - n_layers = len(list(model.iter_layers())) - # In UniPELT, prefix tuning has gates in every layer - n_prefix_layers = 1.5 * n_layers if model.config.is_encoder_decoder else n_layers - self.run_get_test(model, UniPELTConfig(), n_layers * 2 + n_prefix_layers) - - def test_forward_unipelt(self): - model = self.get_model() - self.run_forward_test(model, UniPELTConfig()) - - def test_load_unipelt(self): - self.run_load_test(UniPELTConfig()) - - def test_load_full_model_unipelt(self): - self.run_full_model_load_test(UniPELTConfig()) - - def test_train_unipelt(self): - self.run_train_test( - UniPELTConfig(), ["loras.{name}.", "adapters.{name}.", "prefix_tunings.{name}.", "prefix_gates.{name}."] - ) - - def test_output_adapter_gating_scores_unipelt(self): - model = self.get_model() - model.eval() - - adapter_config = UniPELTConfig() - name = adapter_config.__class__.__name__ - model.add_adapter(name, config=adapter_config) - model.to(torch_device) - - input_data = self.get_input_samples(config=model.config) - - model.set_active_adapters([name]) - output_1 = model(**input_data, output_adapter_gating_scores=True) - - self.assertEqual(len(output_1[0]), self.default_input_samples_shape[0]) - self.assertTrue(hasattr(output_1, "adapter_gating_scores")) - gating_scores = output_1.adapter_gating_scores[name] - self.assertEqual(len(list(model.iter_layers())), len(gating_scores)) - for k, per_layer_scores in gating_scores.items(): - self.assertGreaterEqual(len(per_layer_scores), 3) - for k, v in per_layer_scores.items(): - self.assertEqual(self.default_input_samples_shape[0], v.shape[0], k) diff --git a/adapters/tests/models/__init__.py b/adapters/tests/models/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/adapters/tests/models/base.py b/adapters/tests/models/base.py deleted file mode 100644 index 771c1fd6..00000000 --- a/adapters/tests/models/base.py +++ /dev/null @@ -1,16 +0,0 @@ -from transformers.testing_utils import require_torch - - -@require_torch -class AdapterModelTesterMixin: - def test_training(self): - self.skipTest("Not applicable.") - - def check_training_gradient_checkpointing(self, gradient_checkpointing_kwargs=None): - self.skipTest("Not applicable.") - - def test_training_gradient_checkpointing(self): - self.skipTest("Not applicable.") - - def test_correct_missing_keys(self): - self.skipTest("Not applicable.") diff --git a/adapters/tests/models/test_albert.py b/adapters/tests/models/test_albert.py deleted file mode 100644 index 40a28914..00000000 --- a/adapters/tests/models/test_albert.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import AlbertAdapterModel -from hf_transformers.tests.models.albert.test_modeling_albert import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class AlbertAdapterModelTest(AdapterModelTesterMixin, AlbertModelTest): - all_model_classes = (AlbertAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_bart.py b/adapters/tests/models/test_bart.py deleted file mode 100644 index 70d97c97..00000000 --- a/adapters/tests/models/test_bart.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import BartAdapterModel -from hf_transformers.tests.models.bart.test_modeling_bart import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class BartAdapterModelTest(AdapterModelTesterMixin, BartModelTest): - all_model_classes = (BartAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_beit.py b/adapters/tests/models/test_beit.py deleted file mode 100644 index 1d6fc927..00000000 --- a/adapters/tests/models/test_beit.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import BeitAdapterModel -from hf_transformers.tests.models.beit.test_modeling_beit import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class BeitAdapterModelTest(AdapterModelTesterMixin, BeitModelTest): - all_model_classes = (BeitAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_bert.py b/adapters/tests/models/test_bert.py deleted file mode 100644 index 1ca69b0b..00000000 --- a/adapters/tests/models/test_bert.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import BertAdapterModel -from hf_transformers.tests.models.bert.test_modeling_bert import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class BertAdapterModelTest(AdapterModelTesterMixin, BertModelTest): - all_model_classes = (BertAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_bert_generation.py b/adapters/tests/models/test_bert_generation.py deleted file mode 100644 index 15f867e0..00000000 --- a/adapters/tests/models/test_bert_generation.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import BertGenerationAdapterModel -from hf_transformers.tests.models.bert_generation.test_modeling_bert_generation import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class BertGenerationAdapterModelTest(AdapterModelTesterMixin, BertGenerationEncoderTest): - all_model_classes = (BertGenerationAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_clip.py b/adapters/tests/models/test_clip.py deleted file mode 100644 index 921e0668..00000000 --- a/adapters/tests/models/test_clip.py +++ /dev/null @@ -1,39 +0,0 @@ -# flake8: noqa: F403,F405 -import numpy as np - -from adapters import CLIPAdapterModel -from hf_transformers.tests.models.clip.test_modeling_clip import * # Imported to execute model tests -from hf_transformers.tests.test_modeling_common import _config_zero_init -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class CLIPAdapterModelTest(AdapterModelTesterMixin, CLIPModelTest): - all_model_classes = (CLIPAdapterModel,) - fx_compatible = False - - # override as the `logit_scale` parameter has a different name in the adapter model - def test_initialization(self): - config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common() - - configs_no_init = _config_zero_init(config) - for model_class in self.all_model_classes: - model = model_class(config=configs_no_init) - for name, param in model.named_parameters(): - if param.requires_grad: - # check if `logit_scale` is initilized as per the original implementation - if name == "clip.logit_scale": - self.assertAlmostEqual( - param.data.item(), - np.log(1 / 0.07), - delta=1e-3, - msg=f"Parameter {name} of model {model_class} seems not properly initialized", - ) - else: - self.assertIn( - ((param.data.mean() * 1e9).round() / 1e9).item(), - [0.0, 1.0], - msg=f"Parameter {name} of model {model_class} seems not properly initialized", - ) diff --git a/adapters/tests/models/test_deberta.py b/adapters/tests/models/test_deberta.py deleted file mode 100644 index 27f94bf1..00000000 --- a/adapters/tests/models/test_deberta.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import DebertaAdapterModel -from hf_transformers.tests.models.deberta.test_modeling_deberta import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class DebertaAdapterModelTest(AdapterModelTesterMixin, DebertaModelTest): - all_model_classes = (DebertaAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_debertaV2.py b/adapters/tests/models/test_debertaV2.py deleted file mode 100644 index 9e97466c..00000000 --- a/adapters/tests/models/test_debertaV2.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import DebertaV2AdapterModel -from hf_transformers.tests.models.deberta_v2.test_modeling_deberta_v2 import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class DebertaV2AdapterModelTest(AdapterModelTesterMixin, DebertaV2ModelTest): - all_model_classes = (DebertaV2AdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_distilbert.py b/adapters/tests/models/test_distilbert.py deleted file mode 100644 index 56cad41d..00000000 --- a/adapters/tests/models/test_distilbert.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import DistilBertAdapterModel -from hf_transformers.tests.models.distilbert.test_modeling_distilbert import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class DistilBertAdapterModelTest(AdapterModelTesterMixin, DistilBertModelTest): - all_model_classes = (DistilBertAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_electra.py b/adapters/tests/models/test_electra.py deleted file mode 100644 index 642eeb0c..00000000 --- a/adapters/tests/models/test_electra.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import ElectraAdapterModel -from hf_transformers.tests.models.electra.test_modeling_electra import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class ElectraAdapterModelTest(AdapterModelTesterMixin, ElectraModelTester): - all_model_classes = (ElectraAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_encoder_decoder.py b/adapters/tests/models/test_encoder_decoder.py deleted file mode 100644 index 8f6f4b5f..00000000 --- a/adapters/tests/models/test_encoder_decoder.py +++ /dev/null @@ -1,2 +0,0 @@ -# flake8: noqa -from hf_transformers.tests.models.encoder_decoder.test_modeling_encoder_decoder import * # Imported to execute model tests diff --git a/adapters/tests/models/test_gpt2.py b/adapters/tests/models/test_gpt2.py deleted file mode 100644 index f904be53..00000000 --- a/adapters/tests/models/test_gpt2.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import GPT2AdapterModel -from hf_transformers.tests.models.gpt2.test_modeling_gpt2 import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class GPT2AdapterModelTest(AdapterModelTesterMixin, GPT2ModelTest): - all_model_classes = (GPT2AdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_gptj.py b/adapters/tests/models/test_gptj.py deleted file mode 100644 index 5cd76106..00000000 --- a/adapters/tests/models/test_gptj.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import GPTJAdapterModel -from hf_transformers.tests.models.gptj.test_modeling_gptj import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class GPTJAdapterModelTest(AdapterModelTesterMixin, GPTJModelTest): - all_model_classes = (GPTJAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_llama.py b/adapters/tests/models/test_llama.py deleted file mode 100644 index 4246f048..00000000 --- a/adapters/tests/models/test_llama.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import LlamaAdapterModel -from hf_transformers.tests.models.llama.test_modeling_llama import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class LlamaAdapterModelTest(AdapterModelTesterMixin, LlamaModelTest): - all_model_classes = (LlamaAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_mbart.py b/adapters/tests/models/test_mbart.py deleted file mode 100644 index f874082a..00000000 --- a/adapters/tests/models/test_mbart.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import MBartAdapterModel -from hf_transformers.tests.models.mbart.test_modeling_mbart import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class MBartAdapterModelTest(AdapterModelTesterMixin, MBartModelTest): - all_model_classes = (MBartAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_mt5.py b/adapters/tests/models/test_mt5.py deleted file mode 100644 index 8d9f551e..00000000 --- a/adapters/tests/models/test_mt5.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import MT5AdapterModel -from hf_transformers.tests.models.mt5.test_modeling_mt5 import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class MT5AdapterModelTest(AdapterModelTesterMixin, MT5IntegrationTest): - all_model_classes = (MT5AdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_roberta.py b/adapters/tests/models/test_roberta.py deleted file mode 100644 index e8988622..00000000 --- a/adapters/tests/models/test_roberta.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import RobertaAdapterModel -from hf_transformers.tests.models.roberta.test_modeling_roberta import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class RobertaAdapterModelTest(AdapterModelTesterMixin, RobertaModelTest): - all_model_classes = (RobertaAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_t5.py b/adapters/tests/models/test_t5.py deleted file mode 100644 index 12d31a03..00000000 --- a/adapters/tests/models/test_t5.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import T5AdapterModel -from hf_transformers.tests.models.t5.test_modeling_t5 import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class T5AdapterModelTest(AdapterModelTesterMixin, T5ModelTest): - all_model_classes = (T5AdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_vit.py b/adapters/tests/models/test_vit.py deleted file mode 100644 index a5fc5a05..00000000 --- a/adapters/tests/models/test_vit.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import ViTAdapterModel -from hf_transformers.tests.models.vit.test_modeling_vit import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class ViTAdapterModelTest(AdapterModelTesterMixin, ViTModelTest): - all_model_classes = (ViTAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/models/test_xlm_roberta.py b/adapters/tests/models/test_xlm_roberta.py deleted file mode 100644 index 82325150..00000000 --- a/adapters/tests/models/test_xlm_roberta.py +++ /dev/null @@ -1,2 +0,0 @@ -# flake8: noqa -from hf_transformers.tests.models.xlm_roberta.test_modeling_xlm_roberta import * # Imported to execute model tests diff --git a/adapters/tests/models/test_xmod.py b/adapters/tests/models/test_xmod.py deleted file mode 100644 index 2a0faa06..00000000 --- a/adapters/tests/models/test_xmod.py +++ /dev/null @@ -1,12 +0,0 @@ -# flake8: noqa: F403,F405 -from adapters import XmodAdapterModel -from hf_transformers.tests.models.xmod.test_modeling_xmod import * -from transformers.testing_utils import require_torch - -from .base import AdapterModelTesterMixin - - -@require_torch -class XmodAdapterModelTest(AdapterModelTesterMixin, XmodModelTest): - all_model_classes = (XmodAdapterModel,) - fx_compatible = False diff --git a/adapters/tests/test_adapter.py b/adapters/tests/test_adapter.py deleted file mode 100644 index c01f0295..00000000 --- a/adapters/tests/test_adapter.py +++ /dev/null @@ -1,135 +0,0 @@ -import random - -import datasets -import torch - -import adapters -from adapters import AutoAdapterModel -from transformers import AutoFeatureExtractor, AutoTokenizer, GlueDataset, GlueDataTrainingArguments -from transformers.testing_utils import torch_device - - -global_rng = random.Random() - - -def make_config(config_class, **kwargs): - return staticmethod(lambda: config_class(**kwargs)) - - -def ids_tensor(shape, vocab_size, rng=None, name=None): - # Creates a random int32 tensor of the shape within the vocab size - if rng is None: - rng = global_rng - - total_dims = 1 - for dim in shape: - total_dims *= dim - - values = [] - for _ in range(total_dims): - values.append(rng.randint(0, vocab_size - 1)) - - return torch.tensor(data=values, dtype=torch.long, device=torch_device).view(shape).contiguous() - - -class AdapterTestBase: - # If not overriden by subclass, AutoModel should be used. - model_class = AutoAdapterModel - # Default shape of inputs to use - default_input_samples_shape = (3, 64) - leave_out_layers = [0, 1] - do_run_train_tests = True - - def get_model(self): - if self.model_class == AutoAdapterModel: - model = AutoAdapterModel.from_config(self.config()) - else: - model = self.model_class(self.config()) - adapters.init(model) - model.to(torch_device) - return model - - def get_input_samples(self, shape=None, vocab_size=5000, config=None): - shape = shape or self.default_input_samples_shape - total_dims = 1 - for dim in shape: - total_dims *= dim - - values = [] - for _ in range(total_dims): - values.append(random.randint(0, vocab_size - 1)) - input_ids = torch.tensor(data=values, dtype=torch.long, device=torch_device).view(shape).contiguous() - # this is needed e.g. for BART - if config and config.eos_token_id is not None and config.eos_token_id < vocab_size: - input_ids[input_ids == config.eos_token_id] = random.randint(0, config.eos_token_id - 1) - input_ids[:, -1] = config.eos_token_id - in_data = {"input_ids": input_ids} - - if config and config.is_encoder_decoder: - in_data["decoder_input_ids"] = input_ids.clone() - return in_data - - def add_head(self, model, name, **kwargs): - model.add_classification_head(name, **kwargs) - return model.heads[name].config["num_labels"] - - def dataset(self, tokenizer=None): - # setup tokenizer - if tokenizer is None: - tokenizer = AutoTokenizer.from_pretrained(self.tokenizer_name, use_fast=False) - if tokenizer.pad_token is None: - tokenizer.pad_token = tokenizer.eos_token - data_args = GlueDataTrainingArguments( - task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True - ) - return GlueDataset(data_args, tokenizer=tokenizer, mode="train") - - def assert_adapter_available(self, model, adapter_name): - self.assertTrue(adapter_name in model.adapters_config) - self.assertGreater(len(model.get_adapter(adapter_name)), 0) - - def assert_adapter_unavailable(self, model, adapter_name): - self.assertFalse(adapter_name in model.adapters_config) - self.assertEqual(len(model.get_adapter(adapter_name)), 0) - - -class VisionAdapterTestBase(AdapterTestBase): - default_input_samples_shape = (3, 3, 224, 224) - - def get_input_samples(self, shape=None, config=None): - shape = shape or self.default_input_samples_shape - total_dims = 1 - for dim in shape: - total_dims *= dim - values = [] - for _ in range(total_dims): - values.append(random.random()) - pixel_values = torch.tensor(data=values, dtype=torch.float, device=torch_device).view(shape).contiguous() - in_data = {"pixel_values": pixel_values} - - return in_data - - def add_head(self, model, name, **kwargs): - if "num_labels" not in kwargs: - kwargs["num_labels"] = 10 - model.add_image_classification_head(name, **kwargs) - return model.heads[name].config["num_labels"] - - def dataset(self, feature_extractor=None): - if feature_extractor is None: - feature_extractor = AutoFeatureExtractor.from_pretrained(self.feature_extractor_name) - - def transform(example_batch): - inputs = feature_extractor([x for x in example_batch["img"]], return_tensors="pt") - - inputs["labels"] = example_batch["label"] - return inputs - - dataset = datasets.load_dataset( - "./tests/fixtures/samples/cifar10", - data_dir="./tests/fixtures/samples/cifar10", - split="train", - ) - dataset = dataset.with_transform(transform) - - return dataset diff --git a/adapters/tests/test_adapter_backward_compability.py b/adapters/tests/test_adapter_backward_compability.py deleted file mode 100644 index 03c04c79..00000000 --- a/adapters/tests/test_adapter_backward_compability.py +++ /dev/null @@ -1,48 +0,0 @@ -import json -import os -import tempfile - -from adapters import SeqBnConfig, __version__ -from tests.methods import create_twin_models -from transformers.testing_utils import require_torch - - -@require_torch -class CompabilityTestMixin: - def test_load_old_non_linearity(self): - model1, model2 = create_twin_models(self.model_class, self.config) - config = SeqBnConfig(non_linearity="gelu") - name = "dummy" - model1.add_adapter(name, config=config) - model1.set_active_adapters([name]) - with tempfile.TemporaryDirectory() as temp_dir: - model1.save_adapter(temp_dir, name) - - with open(os.path.join(temp_dir, "adapter_config.json"), "r") as file: - data = json.load(file) - data["config"]["non_linearity"] = "gelu_orig" - del data["version"] - with open(os.path.join(temp_dir, "adapter_config.json"), "w") as file: - json.dump(data, file) - - # also tests that set_active works - model2.load_adapter(temp_dir, set_active=True) - - # check if adapter was correctly loaded - self.assertTrue(name in model2.adapters_config) - self.assertEqual( - "gelu", model2.adapters_config.config_map[model2.adapters_config.adapters[name]]["non_linearity"] - ) - - def test_save_version_with_adapter(self): - model = self.get_model() - config = SeqBnConfig(non_linearity="gelu") - name = "dummy" - model.add_adapter(name, config=config) - model.set_active_adapters([name]) - with tempfile.TemporaryDirectory() as temp_dir: - model.save_adapter(temp_dir, name) - - with open(os.path.join(temp_dir, "adapter_config.json"), "r") as file: - data = json.load(file) - self.assertEqual(__version__, data["version"]) diff --git a/adapters/tests/test_adapter_config.py b/adapters/tests/test_adapter_config.py deleted file mode 100644 index 2bce31c7..00000000 --- a/adapters/tests/test_adapter_config.py +++ /dev/null @@ -1,127 +0,0 @@ -import json -import unittest -from dataclasses import FrozenInstanceError, dataclass - -from adapters import ( - ADAPTER_CONFIG_MAP, - AdapterConfig, - ConfigUnion, - DoubleSeqBnConfig, - LoRAConfig, - MAMConfig, - ParBnConfig, - PrefixTuningConfig, - SeqBnConfig, -) -from transformers.testing_utils import require_torch - - -@require_torch -class AdapterConfigTest(unittest.TestCase): - def test_config_load(self): - download_kwargs = {"force_download": True} - # TODO still uses the old config names as only these are available on the Hub - for config_name in ["pfeiffer", "houlsby"]: - with self.subTest(config_name=config_name): - config = AdapterConfig.load(config_name, download_kwargs=download_kwargs, non_linearity="leakyrelu") - self.assertTrue(isinstance(config, AdapterConfig)) - self.assertEqual(config.non_linearity, "leakyrelu") - - def test_config_immutable(self): - def set_attr(config: AdapterConfig): - config.non_linearity = "dummy" - config.r = -1 # for LoRA - config.prompt_length = -1 # for PromptTuning - - for config in ADAPTER_CONFIG_MAP.values(): - if isinstance(config, ConfigUnion): - continue - with self.subTest(config=config.__class__.__name__): - self.assertRaises(FrozenInstanceError, lambda: set_attr(config)) - - def test_custom_attr(self): - for config in ADAPTER_CONFIG_MAP.values(): - with self.subTest(config=config.__class__.__name__): - # create a copy to leave original untouched - config = config.replace() - config.dummy_attr = "test_value" - self.assertEqual(config.dummy_attr, "test_value") - - def test_custom_class(self): - @dataclass - class CustomAdapterConfig(SeqBnConfig): - custom_attr: str = "test_value" - - config = CustomAdapterConfig() - config_dict = config.to_dict() - self.assertEqual(config_dict["custom_attr"], "test_value") - # When calling load on an AdapterConfig instance, don't change the class of the config. - config = AdapterConfig.load(config, custom_attr="test_value_2") - self.assertTrue(isinstance(config, CustomAdapterConfig)) - self.assertEqual(config["custom_attr"], "test_value_2") - - def test_config_union_valid(self): - unions = [ - [PrefixTuningConfig(), ParBnConfig()], - [PrefixTuningConfig(), SeqBnConfig()], - [DoubleSeqBnConfig(mh_adapter=False), DoubleSeqBnConfig(output_adapter=False, reduction_factor=2)], - [SeqBnConfig(leave_out=[9, 10, 11], reduction_factor=2), SeqBnConfig(leave_out=list(range(9)))], - ] - for union in unions: - with self.subTest(union=union): - config = ConfigUnion(*union) - self.assertEqual(config.architecture, "union") - - # make sure serialization/ deserialization works - config_dict = config.to_dict() - config_dict = json.loads(json.dumps(config_dict)) - config_new = ConfigUnion.from_dict(config_dict) - self.assertEqual(config, config_new) - - self.assertIsInstance(config_new[0], AdapterConfig) - self.assertIsInstance(config_new[1], AdapterConfig) - - def test_config_union_invalid(self): - unions = [ - ([MAMConfig(), SeqBnConfig()], TypeError), - ([SeqBnConfig(), SeqBnConfig()], ValueError), - ([SeqBnConfig(), DoubleSeqBnConfig()], ValueError), - ] - for union, error_type in unions: - with self.subTest(union=union): - self.assertRaises(error_type, ConfigUnion, *union) - - def test_config_string_valid(self): - to_test = [ - ("double_seq_bn", DoubleSeqBnConfig()), - ("seq_bn[reduction_factor=2, leave_out=[11]]", SeqBnConfig(reduction_factor=2, leave_out=[11])), - ( - "par_bn[reduction_factor={'0': 8, '1': 8, 'default': 16}]", - ParBnConfig(reduction_factor={"0": 8, "1": 8, "default": 16}), - ), - ("prefix_tuning[prefix_length=30, flat=True]", PrefixTuningConfig(prefix_length=30, flat=True)), - ("lora[r=200,alpha=8]", LoRAConfig(r=200, alpha=8)), - ("prefix_tuning|par_bn", ConfigUnion(PrefixTuningConfig(), ParBnConfig())), - ("lora[attn_matrices=['k', 'v']]", LoRAConfig(attn_matrices=["k", "v"])), - ( - "lora[use_gating=True]|prefix_tuning[use_gating=True]|seq_bn[use_gating=True]", - ConfigUnion( - LoRAConfig(use_gating=True), PrefixTuningConfig(use_gating=True), SeqBnConfig(use_gating=True) - ), - ), - ] - for config_str, config in to_test: - with self.subTest(config_str=config_str): - config_new = AdapterConfig.load(config_str) - self.assertEqual(config, config_new) - - def test_config_string_invalid(self): - to_test = [ - ("seq_bn[invalid_key=2]", TypeError), - ("lora[r=8]|invalid_name", ValueError), - ("prefix_tuning[flat=True", ValueError), - ("double_seq_bn[reduction_factor=dict(default=1)]", ValueError), - ] - for config_str, error_type in to_test: - with self.subTest(config_str=config_str): - self.assertRaises(error_type, AdapterConfig.load, config_str) diff --git a/adapters/tests/test_adapter_conversion.py b/adapters/tests/test_adapter_conversion.py deleted file mode 100644 index df209c12..00000000 --- a/adapters/tests/test_adapter_conversion.py +++ /dev/null @@ -1,236 +0,0 @@ -import inspect -import re -import tempfile - -import torch - -import adapters -from adapters import AutoAdapterModel -from transformers import ( - MODEL_FOR_CAUSAL_LM_MAPPING, - MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING, - MODEL_FOR_MASKED_LM_MAPPING, - MODEL_FOR_MULTIPLE_CHOICE_MAPPING, - MODEL_FOR_QUESTION_ANSWERING_MAPPING, - MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING, - MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING, - MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING, - AlbertPreTrainedModel, - BertPreTrainedModel, - RobertaPreTrainedModel, - XLMRobertaPreTrainedModel, - XmodPreTrainedModel, -) -from transformers.testing_utils import require_torch, torch_device - - -@require_torch -class ModelClassConversionTestMixin: - - batch_size = 1 - seq_length = 128 - - def run_test(self, static_model, input_shape=None, label_dict=None): - flex_model = AutoAdapterModel.from_pretrained(None, config=self.config(), state_dict=static_model.state_dict()) - static_model.eval() - flex_model.eval() - if ( - static_model.base_model.__class__.__name__ != flex_model.base_model.__class__.__name__ - and not static_model.base_model == static_model - ): - self.skipTest("Skipping as base model classes are different.") - - with tempfile.TemporaryDirectory() as temp_dir: - static_model.save_head(temp_dir) - - loading_info = {} - flex_model.load_head(temp_dir, load_as="test", loading_info=loading_info) - - self.assertEqual( - 0, len(loading_info["missing_keys"]), "Missing keys: {}".format(", ".join(loading_info["missing_keys"])) - ) - # We don't need to convert some of the weights, so remove them for the check - unexpected_keys = loading_info["unexpected_keys"] - if static_model._keys_to_ignore_on_load_missing is not None: - for pat in static_model._keys_to_ignore_on_load_missing: - unexpected_keys = [k for k in unexpected_keys if re.search(pat, k) is None] - # HACK for bert-based models - if isinstance(static_model, BertPreTrainedModel): - unexpected_keys = [k for k in unexpected_keys if "cls.predictions.bias" not in k] - elif ( - isinstance(static_model, RobertaPreTrainedModel) - or isinstance(static_model, XLMRobertaPreTrainedModel) - or isinstance(static_model, XmodPreTrainedModel) - ): - unexpected_keys = [k for k in unexpected_keys if "lm_head.bias" not in k] - elif isinstance(static_model, AlbertPreTrainedModel): - unexpected_keys = [k for k in unexpected_keys if "predictions.bias" not in k] - self.assertEqual(0, len(unexpected_keys), "Unexpected keys: {}".format(", ".join(unexpected_keys))) - - # adapter and head were loaded - self.assertIn("test", flex_model.heads) - - # check equal output - input_shape = input_shape or (self.batch_size, self.seq_length) - in_data = self.get_input_samples(input_shape, config=flex_model.config) - if label_dict: - for k, v in label_dict.items(): - in_data[k] = v - static_model.to(torch_device) - flex_model.to(torch_device) - output1 = static_model(**in_data) - output2 = flex_model(**in_data) - self.assertTrue(torch.allclose(output1.loss, output2.loss)) - self.assertTrue(torch.allclose(output1[1], output2[1])) # it's not called "logits" for all classes - - def test_conversion_causal_lm_model(self): - if self.config_class not in MODEL_FOR_CAUSAL_LM_MAPPING: - self.skipTest("No causal language modeling class.") - - model = MODEL_FOR_CAUSAL_LM_MAPPING[self.config_class](self.config()) - adapters.init(model) - label_dict = {} - label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) - self.run_test(model, label_dict=label_dict) - - def test_conversion_masked_lm_model(self): - if self.config_class not in MODEL_FOR_MASKED_LM_MAPPING: - self.skipTest("No masked language modeling class.") - - model = MODEL_FOR_MASKED_LM_MAPPING[self.config_class](self.config()) - adapters.init(model) - label_dict = {} - label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) - # for encoder-decoder models such as BART, we additionally pass the decoder input ids - if "decoder_input_ids" in inspect.signature(model.forward).parameters: - label_dict["decoder_input_ids"] = label_dict["labels"].clone() - self.run_test(model, label_dict=label_dict) - - def test_conversion_seq2seq_lm_model(self): - if self.config_class not in MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING: - self.skipTest("No seq2seq language modeling class.") - - model = MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING[self.config_class](self.config()) - adapters.init(model) - label_dict = {} - label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) - label_dict["decoder_input_ids"] = label_dict["labels"].clone() - self.run_test(model, label_dict=label_dict) - - def test_conversion_classification_model(self): - if self.config_class not in MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING: - self.skipTest("No sequence classification class.") - - model = MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING[self.config_class](self.config()) - adapters.init(model) - label_dict = {} - label_dict["labels"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) - self.run_test(model, label_dict=label_dict) - - def test_conversion_image_classification_model(self): - if self.config_class not in MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING: - self.skipTest("No image classification class.") - - model = MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING[self.config_class](self.config()) - adapters.init(model) - label_dict = {} - label_dict["labels"] = torch.zeros(3, dtype=torch.long, device=torch_device) - self.run_test(model, input_shape=(3, 3, 224, 224), label_dict=label_dict) - - def test_conversion_question_answering_model(self): - if self.config_class not in MODEL_FOR_QUESTION_ANSWERING_MAPPING: - self.skipTest("No question answering class.") - - model = MODEL_FOR_QUESTION_ANSWERING_MAPPING[self.config_class](self.config()) - adapters.init(model) - label_dict = {} - label_dict["start_positions"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) - label_dict["end_positions"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) - self.run_test(model, label_dict=label_dict) - - def test_conversion_token_classification_model(self): - if self.config_class not in MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING: - self.skipTest("No token classification class.") - - model = MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING[self.config_class](self.config()) - adapters.init(model) - label_dict = {} - label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) - self.run_test(model, label_dict=label_dict) - - def test_conversion_multiple_choice_model(self): - if self.config_class not in MODEL_FOR_MULTIPLE_CHOICE_MAPPING: - self.skipTest("No token classification class.") - - model = MODEL_FOR_MULTIPLE_CHOICE_MAPPING[self.config_class](self.config()) - adapters.init(model) - label_dict = {} - label_dict["labels"] = torch.ones(self.batch_size, dtype=torch.long, device=torch_device) - self.run_test(model, input_shape=(self.batch_size, 2, self.seq_length), label_dict=label_dict) - - def test_equivalent_language_generation(self): - if self.config_class not in MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING: - self.skipTest("no causal lm class.") - - static_model = MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING[self.config_class](self.config()) - adapters.init(static_model) - flex_model = AutoAdapterModel.from_pretrained(None, config=self.config(), state_dict=static_model.state_dict()) - static_model.add_adapter("dummy") - static_model.set_active_adapters("dummy") - static_model.eval() - flex_model.eval() - - with tempfile.TemporaryDirectory() as temp_dir: - static_model.save_adapter(temp_dir, "dummy") - - loading_info = {} - flex_model.load_adapter(temp_dir, loading_info=loading_info) - flex_model.set_active_adapters("dummy") - - input_shape = (self.batch_size, 5) - input_samples = self.get_input_samples(input_shape, config=flex_model.config) - - static_model.to(torch_device) - flex_model.to(torch_device) - - model_gen = static_model.generate(**input_samples) - flex_model_gen = flex_model.generate(**input_samples) - - self.assertEquals(model_gen.shape, flex_model_gen.shape) - self.assertTrue(torch.equal(model_gen, flex_model_gen)) - - def test_full_model_conversion(self): - if self.config_class not in MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING: - self.skipTest("No sequence classification class.") - - static_head_model = MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING[self.config_class](self.config()) - adapters.init(static_head_model) - static_head_model.eval() - - with tempfile.TemporaryDirectory() as temp_dir: - static_head_model.save_pretrained(temp_dir) - - flex_head_model, loading_info = AutoAdapterModel.from_pretrained(temp_dir, output_loading_info=True) - - # Roberta-based models always have a pooler, which is not used by the tested head - keys_to_ignore = ["roberta.pooler.dense.weight", "roberta.pooler.dense.bias"] - - missing_keys = [k for k in loading_info["missing_keys"] if k not in keys_to_ignore] - - self.assertEqual(0, len(missing_keys), "Missing keys: {}".format(", ".join(missing_keys))) - self.assertEqual( - 0, - len(loading_info["unexpected_keys"]), - "Unexpected keys: {}".format(", ".join(loading_info["unexpected_keys"])), - ) - - # static head is re-loaded as "default" - self.assertIn("default", flex_head_model.heads) - - # check equal output - in_data = self.get_input_samples(config=flex_head_model.config) - static_head_model.to(torch_device) - flex_head_model.to(torch_device) - output1 = static_head_model(**in_data) - output2 = flex_head_model(**in_data, head="default") - self.assertTrue(torch.allclose(output1.logits, output2.logits)) diff --git a/adapters/tests/test_adapter_custom_head.py b/adapters/tests/test_adapter_custom_head.py deleted file mode 100644 index b68662bf..00000000 --- a/adapters/tests/test_adapter_custom_head.py +++ /dev/null @@ -1,91 +0,0 @@ -import tempfile -import unittest - -import torch - -from adapters import AutoAdapterModel -from adapters.heads import ClassificationHead, PredictionHead -from transformers import AutoConfig -from transformers.testing_utils import require_torch, torch_device - -from .test_adapter import ids_tensor - - -class CustomHead(PredictionHead): - def __init__( - self, - model, - head_name, - **config, - ): - super().__init__(head_name) - self.config = config - self.build(model=model) - - def forward(self, outputs, cls_output=None, attention_mask=None, return_dict=False, **kwargs): - logits = super().forward(outputs[0]) - outputs = (logits,) + outputs[2:] - return outputs - - -@require_torch -class AdapterCustomHeadTest(unittest.TestCase): - def test_add_custom_head(self): - model_name = "bert-base-uncased" - model = AutoAdapterModel.from_pretrained(model_name) - model.register_custom_head("tag", CustomHead) - config = {"num_labels": 3, "layers": 2, "activation_function": "tanh"} - model.add_custom_head(head_type="tag", head_name="custom_head", **config) - model.eval() - model.to(torch_device) - in_data = ids_tensor((1, 128), 1000) - output1 = model(in_data) - model.add_tagging_head("tagging_head", num_labels=3, layers=2) - model.to(torch_device) - output2 = model(in_data) - self.assertEqual(output1[0].size(), output2[0].size()) - - def test_save_load_custom_head(self): - model_name = "bert-base-uncased" - model_config = AutoConfig.from_pretrained(model_name) - model_config.custom_heads = {"tag": CustomHead} - model1 = AutoAdapterModel.from_pretrained(model_name, config=model_config) - model2 = AutoAdapterModel.from_pretrained(model_name, config=model_config) - config = {"num_labels": 3, "layers": 2, "activation_function": "tanh"} - model1.add_custom_head(head_type="tag", head_name="custom_head", **config) - - with tempfile.TemporaryDirectory() as temp_dir: - model1.save_head(temp_dir, "custom_head") - model2.load_head(temp_dir) - - model1.eval() - model2.eval() - - in_data = ids_tensor((1, 128), 1000) - model1.to(torch_device) - model2.to(torch_device) - output1 = model1(in_data) - output2 = model2(in_data) - self.assertEqual(output1[0].size(), output2[0].size()) - state1 = model1.heads["custom_head"].state_dict() - state2 = model2.heads["custom_head"].state_dict() - for (k1, v1), (k2, v2) in zip(state1.items(), state2.items()): - self.assertTrue(torch.equal(v1, v2)) - - def test_builtin_head_as_custom(self): - model_name = "bert-base-uncased" - model_config = AutoConfig.from_pretrained(model_name) - model_config.custom_heads = {"tag": CustomHead} - model = AutoAdapterModel.from_pretrained(model_name, config=model_config) - in_data = ids_tensor((1, 128), 1000) - - model.register_custom_head("classification", ClassificationHead) - model.add_custom_head( - head_type="classification", head_name="custom_head", num_labels=3, layers=2, activation_function="tanh" - ) - model.eval() - model.to(torch_device) - output = model(in_data) - - self.assertEqual((1, 3), output[0].shape) - self.assertEqual("custom_head", model.active_head) diff --git a/adapters/tests/test_adapter_embeddings.py b/adapters/tests/test_adapter_embeddings.py deleted file mode 100644 index 8298ae87..00000000 --- a/adapters/tests/test_adapter_embeddings.py +++ /dev/null @@ -1,168 +0,0 @@ -import copy -import tempfile - -import torch - -from adapters import AutoAdapterModel -from transformers import AutoTokenizer, Trainer, TrainingArguments -from transformers.testing_utils import require_torch, torch_device - - -def filter_parameters(model, filter_string): - return {k: v for (k, v) in model.named_parameters() if filter_string in k} - - -@require_torch -class EmbeddingTestMixin: - def test_load_embeddings(self): - model = self.get_model() - with tempfile.TemporaryDirectory() as tmp_dir: - model.save_embeddings(tmp_dir, "default") - model.load_embeddings(tmp_dir, "test") - - self.assertEqual(model.active_embeddings, "test") - - def test_add_embeddings(self): - model = self.get_model() - tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") - model.add_embeddings("test", tokenizer) - self.assertEqual(model.active_embeddings, "test") - - def test_add_embedding_tokens(self): - model = self.get_model() - tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") - self.assertEqual(tokenizer.vocab_size, 10000) - tokenizer.add_tokens(["test_token"]) - model.add_embeddings("test", tokenizer) - self.assertEqual(model.get_input_embeddings().num_embeddings, 10001) - - def test_delete_embeddings(self): - model = self.get_model() - tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") - model.add_embeddings("test", tokenizer) - self.assertEqual(model.active_embeddings, "test") - model.delete_embeddings("test") - self.assertFalse("test" in model.loaded_embeddings) - self.assertEqual(model.active_embeddings, "default") - - def test_save_load_embedding(self): - model = self.get_model() - tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") - input_data = self.get_input_samples((1, 128), vocab_size=tokenizer.vocab_size, config=model.config) - model.add_embeddings("test", tokenizer) - model.eval() - model.to(torch_device) - output1 = model(**input_data) - self.assertEqual(model.active_embeddings, "test") - - with tempfile.TemporaryDirectory() as tmp_dir: - model.save_embeddings(tmp_dir, "test", tokenizer=tokenizer) - tokenizer_ref = model.load_embeddings(tmp_dir, "test_reloaded") - - self.assertEqual(model.active_embeddings, "test_reloaded") - model.to(torch_device) - output2 = model(**input_data) - self.assertTrue( - torch.equal(model.loaded_embeddings["test"].weight, model.loaded_embeddings["test_reloaded"].weight) - ) - self.assertTrue(torch.equal(output1[0], output2[0])) - self.assertEqual(tokenizer.vocab, tokenizer_ref.vocab) - - def test_back_to_default(self): - model = self.get_model() - model.eval() - input_data = self.get_input_samples((1, 128), config=model.config) - output1 = model(**input_data) - tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") - model.add_embeddings("test", tokenizer) - self.assertEqual(model.active_embeddings, "test") - model.set_active_embeddings("default") - output2 = model(**input_data) - self.assertEqual(model.active_embeddings, "default") - self.assertTrue(torch.equal(output1[0], output2[0])) - - def test_training_embedding(self): - tokenizer = AutoTokenizer.from_pretrained(self.tokenizer_name, use_fast=False) - if tokenizer.pad_token is None: - tokenizer.pad_token = tokenizer.eos_token - model = AutoAdapterModel.from_config(self.config()) - model.add_embeddings("test", tokenizer) - self.assertEqual(model.active_embeddings, "test") - model.add_adapter("test") - self.add_head(model, "test") - model.train_adapter("test", train_embeddings=True) - - for k, v in filter_parameters(model, "adapters.test.").items(): - self.assertTrue(v.requires_grad, k) - - self.assertTrue(model.get_input_embeddings().train) - - state_dict_pre = copy.deepcopy(model.state_dict()) - - train_dataset = self.dataset() - training_args = TrainingArguments( - output_dir="./examples", - do_train=True, - learning_rate=0.4, - max_steps=15, - no_cuda=True, - per_device_train_batch_size=2, - label_names=["labels"], - ) - - # evaluate - trainer = Trainer( - model=model, - args=training_args, - train_dataset=train_dataset, - ) - trainer.train() - - self.assertFalse( - all( - torch.equal(v1, v2) - for ((k1, v1), (k2, v2)) in zip(state_dict_pre.items(), model.state_dict().items()) - if "test" in k1 - ) - ) - self.assertTrue( - all( - torch.equal(v1, v2) - for ((k1, v1), (k2, v2)) in zip(state_dict_pre.items(), model.state_dict().items()) - if "test" not in k1 - ) - ) - - def test_reference_embedding(self): - model = AutoAdapterModel.from_config(self.config()) # self.get_model() - tokenizer = AutoTokenizer.from_pretrained(self.tokenizer_name, use_fast=False) - if tokenizer.pad_token is None: - tokenizer.pad_token = tokenizer.eos_token - new_tokenizer = AutoTokenizer.from_pretrained("tests/fixtures/SiBERT") - - model.add_embeddings("test", new_tokenizer, "default", tokenizer) - - default_embedding = model.base_model.loaded_embeddings["default"] - test_embedding = model.base_model.loaded_embeddings["test"] - - input_test = [] - input_default = [] - - for v, idx in new_tokenizer.get_vocab().items(): - if v in tokenizer.get_vocab() and not v.startswith("##"): - input_test.append(idx) - input_default.append(tokenizer.get_vocab()[v]) - if len(input_test) >= 5: - break - - input_default = torch.tensor([input_default]) - input_test = torch.tensor([input_test]) - - default = default_embedding(input_default) - test = test_embedding(input_test) - - self.assertTrue(torch.equal(default, test)) - - # activate for training - model.add_adapter("test") - model.train_adapter("test", train_embeddings=True) diff --git a/adapters/tests/test_adapter_fusion_common.py b/adapters/tests/test_adapter_fusion_common.py deleted file mode 100644 index 4ee25fa0..00000000 --- a/adapters/tests/test_adapter_fusion_common.py +++ /dev/null @@ -1,216 +0,0 @@ -import copy -import os -import tempfile -from dataclasses import asdict - -import torch - -from adapters import ADAPTER_MODEL_MAPPING, ADAPTERFUSION_CONFIG_MAP, AdapterConfig, AutoAdapterModel, SeqBnConfig -from adapters.composition import Fuse -from adapters.utils import ADAPTERFUSION_WEIGHTS_NAME -from adapters.wrappers import load_model -from transformers.testing_utils import require_torch, torch_device - - -@require_torch -class AdapterFusionModelTestMixin: - def test_add_adapter_fusion(self): - config_name = "seq_bn" - adapter_config = AdapterConfig.load(config_name) - - for adater_fusion_config_name, adapter_fusion_config in ADAPTERFUSION_CONFIG_MAP.items(): - model = self.get_model() - model.eval() - - with self.subTest(model_class=model.__class__.__name__, config=config_name): - name1 = f"{config_name}-1" - name2 = f"{config_name}-2" - model.add_adapter(name1, config=config_name) - model.add_adapter(name2, config=config_name) - - # adapter is correctly added to config - self.assertTrue(name1 in model.adapters_config) - self.assertTrue(name2 in model.adapters_config) - self.assertEqual(asdict(adapter_config), asdict(model.adapters_config.get(name1))) - self.assertEqual(asdict(adapter_config), asdict(model.adapters_config.get(name2))) - - model.add_adapter_fusion([name1, name2], adater_fusion_config_name) - - # check forward pass - input_data = self.get_input_samples(config=model.config) - model.set_active_adapters([[name1, name2]]) - model.to(torch_device) - adapter_output = model(**input_data) - model.set_active_adapters(None) - base_output = model(**input_data) - self.assertEqual(len(adapter_output), len(base_output)) - self.assertFalse(torch.equal(adapter_output[0], base_output[0])) - - def test_add_adapter_fusion_different_config(self): - model = self.get_model() - model.eval() - - # fusion between a and b should be possible whereas fusion between a and c should fail - model.add_adapter("a", config=SeqBnConfig(reduction_factor=16)) - model.add_adapter("b", config=SeqBnConfig(reduction_factor=2)) - model.add_adapter("c", config="double_seq_bn") - - # correct fusion - model.add_adapter_fusion(["a", "b"]) - self.assertIn("a,b", model.adapters_config.fusions) - # failing fusion - self.assertRaises(ValueError, lambda: model.add_adapter_fusion(["a", "c"])) - - def test_delete_adapter_fusion(self): - model = self.get_model() - model.eval() - - name1 = "test_adapter_1" - name2 = "test_adapter_2" - model.add_adapter(name1, config="double_seq_bn") - model.add_adapter(name2, config="double_seq_bn") - self.assertTrue(name1 in model.adapters_config) - self.assertTrue(name2 in model.adapters_config) - - model.add_adapter_fusion([name1, name2]) - self.assertTrue(",".join([name1, name2]) in model.adapters_config.fusions) - - model.delete_adapter_fusion([name1, name2]) - self.assertFalse(",".join([name1, name2]) in model.adapters_config.fusions) - - def test_load_adapter_fusion(self): - for adater_fusion_config_name, adapter_fusion_config in ADAPTERFUSION_CONFIG_MAP.items(): - model1 = self.get_model() - model1.eval() - - with self.subTest(model_class=model1.__class__.__name__): - name1 = "name1" - name2 = "name2" - model1.add_adapter(name1) - model1.add_adapter(name2) - - model2 = copy.deepcopy(model1) - model2.eval() - - model1.add_adapter_fusion([name1, name2], adater_fusion_config_name) - model1.set_active_adapters([[name1, name2]]) - - with tempfile.TemporaryDirectory() as temp_dir: - model1.save_adapter_fusion(temp_dir, ",".join([name1, name2])) - # also tests that set_active works - model2.load_adapter_fusion(temp_dir, set_active=True) - # In another directory, also check that saving via passing a Fuse block works - with tempfile.TemporaryDirectory() as temp_dir: - model1.save_adapter_fusion(temp_dir, Fuse(name1, name2)) - self.assertTrue(os.path.exists(os.path.join(temp_dir, ADAPTERFUSION_WEIGHTS_NAME))) - - # check if adapter was correctly loaded - self.assertEqual(model1.adapters_config.fusions.keys(), model2.adapters_config.fusions.keys()) - - # check equal output - in_data = self.get_input_samples(config=model1.config) - model1.to(torch_device) - model2.to(torch_device) - output1 = model1(**in_data) - output2 = model2(**in_data) - self.assertEqual(len(output1), len(output2)) - self.assertTrue(torch.equal(output1[0], output2[0])) - - def test_load_full_model_fusion(self): - model1 = self.get_model() - model1.eval() - - name1 = "name1" - name2 = "name2" - model1.add_adapter(name1) - model1.add_adapter(name2) - model1.add_adapter_fusion([name1, name2]) - # save & reload model - with tempfile.TemporaryDirectory() as temp_dir: - model1.save_pretrained(temp_dir) - - model2 = load_model(temp_dir, self.model_class) - - # check if AdapterFusion was correctly loaded - self.assertTrue(model1.adapters_config.fusions == model2.adapters_config.fusions) - - # check equal output - input_data = self.get_input_samples(config=model1.config) - model1.set_active_adapters([[name1, name2]]) - model2.set_active_adapters([[name1, name2]]) - model1.to(torch_device) - model2.to(torch_device) - output1 = model1(**input_data) - output2 = model2(**input_data) - self.assertEqual(len(output1), len(output2)) - self.assertTrue(torch.equal(output1[0], output2[0])) - - def test_model_config_serialization_fusion(self): - """PretrainedConfigurations should not raise an Exception when serializing the config dict - - See, e.g., PretrainedConfig.to_json_string() - """ - for k, v in ADAPTERFUSION_CONFIG_MAP.items(): - model = self.get_model() - model.add_adapter("test1") - model.add_adapter("test2") - model.add_adapter_fusion(["test1", "test2"], config=v) - # should not raise an exception - model.config.to_json_string() - - def test_adapter_fusion_save_with_head(self): - if self.config_class not in ADAPTER_MODEL_MAPPING: - self.skipTest("Does not support flex heads.") - model1 = AutoAdapterModel.from_config(self.config()) - model1.eval() - - name1 = "name1" - name2 = "name2" - head_name = "adapter_fusion_head" - model1.add_adapter(name1) - model1.add_adapter(name2) - model2 = copy.deepcopy(model1) - model2.eval() - model1.add_adapter_fusion([name1, name2]) - self.add_head(model1, head_name) - model1.set_active_adapters(Fuse(name1, name2)) - # save & reload model - with tempfile.TemporaryDirectory() as temp_dir: - model1.save_adapter_fusion(temp_dir, ",".join([name1, name2]), with_head=head_name) - model2.load_adapter_fusion(temp_dir, set_active=True) - - self.assertTrue(head_name in model2.heads) - self.assertEqual(model1.active_head, model2.active_head) - self.assertEqual(model1.active_adapters, model2.active_adapters) - - # assert equal forward pass - in_data = self.get_input_samples(config=model1.config) - model1.to(torch_device) - model2.to(torch_device) - output1 = model1(**in_data) - output2 = model2(**in_data) - self.assertEqual(len(output1), len(output2)) - self.assertTrue(torch.equal(output1[0], output2[0])) - - def test_output_adapter_fusion_attentions(self): - model = self.get_model() - model.eval() - - model.add_adapter("a") - model.add_adapter("b") - model.add_adapter_fusion(["a", "b"]) - model.to(torch_device) - - input_data = self.get_input_samples(config=model.config) - - model.set_active_adapters(Fuse("a", "b")) - output_1 = model(**input_data, output_adapter_fusion_attentions=True) - - self.assertEqual(len(output_1[0]), self.default_input_samples_shape[0]) - self.assertTrue(hasattr(output_1, "adapter_fusion_attentions")) - attention_scores = output_1.adapter_fusion_attentions["a,b"] - self.assertEqual(len(list(model.iter_layers())), len(attention_scores)) - for k, per_layer_scores in attention_scores.items(): - self.assertEqual(len(per_layer_scores), 1) - for k, v in per_layer_scores.items(): - self.assertEqual(self.default_input_samples_shape[0], v.shape[0], k) diff --git a/adapters/tests/test_adapter_fusion_config.py b/adapters/tests/test_adapter_fusion_config.py deleted file mode 100644 index 0ad1860f..00000000 --- a/adapters/tests/test_adapter_fusion_config.py +++ /dev/null @@ -1,32 +0,0 @@ -import unittest -from dataclasses import FrozenInstanceError - -from adapters import ADAPTERFUSION_CONFIG_MAP, AdapterFusionConfig -from transformers.testing_utils import require_torch - - -@require_torch -class AdapterFusionConfigTest(unittest.TestCase): - - config_names = ADAPTERFUSION_CONFIG_MAP.keys() - - def test_config_load(self): - for config_name in self.config_names: - with self.subTest(config_name=config_name): - config = AdapterFusionConfig.load(config_name, temperature=True) - self.assertTrue(isinstance(config, AdapterFusionConfig)) - self.assertEqual(config.temperature, True) - - def test_config_immutable(self): - def set_attr(config: AdapterFusionConfig): - config.temperature = True - - for config in ADAPTERFUSION_CONFIG_MAP.values(): - with self.subTest(config=config.__class__.__name__): - self.assertRaises(FrozenInstanceError, lambda: set_attr(config)) - - def test_custom_attr(self): - for config in ADAPTERFUSION_CONFIG_MAP.values(): - with self.subTest(config=config.__class__.__name__): - config.dummy_attr = "test_value" - self.assertEqual(config.dummy_attr, "test_value") diff --git a/adapters/tests/test_adapter_heads.py b/adapters/tests/test_adapter_heads.py deleted file mode 100644 index af1749a9..00000000 --- a/adapters/tests/test_adapter_heads.py +++ /dev/null @@ -1,457 +0,0 @@ -import os -import tempfile - -import torch - -import adapters -from adapters import ADAPTER_MODEL_MAPPING, AdapterSetup, AutoAdapterModel -from adapters.composition import BatchSplit, Stack -from transformers import AutoModelForSequenceClassification -from transformers.testing_utils import require_torch, torch_device - -from .methods import create_twin_models - - -@require_torch -class PredictionHeadModelTestMixin: - - batch_size = 1 - seq_length = 128 - - def run_prediction_head_test( - self, model, compare_model, head_name, input_shape=None, output_shape=(1, 2), label_dict=None - ): - # first, check if the head is actually correctly registered as part of the pt module - self.assertTrue(f"heads.{head_name}" in dict(model.named_modules())) - - # save & reload - with tempfile.TemporaryDirectory() as temp_dir: - model.save_head(temp_dir, head_name) - - compare_model.load_head(temp_dir) - - # check if adapter was correctly loaded - self.assertTrue(head_name in compare_model.heads) - - model.to(torch_device) - compare_model.to(torch_device) - - # make a forward pass - model.active_head = head_name - input_shape = input_shape or (self.batch_size, self.seq_length) - in_data = self.get_input_samples(input_shape, config=model.config) - if label_dict: - for k, v in label_dict.items(): - in_data[k] = v - output1 = model(**in_data) - # For the Seq2SeqLMOutput logits are at index 0 - # ToDo figure out why - idx = "logits" if hasattr(output1, "logits") else 1 - self.assertEqual(output_shape, tuple(output1[idx].size())) - # check equal output - compare_model.active_head = head_name - output2 = compare_model(**in_data) - self.assertEqual(len(output1), len(output2)) - self.assertTrue(torch.equal(output1[idx], output2[idx])) - - def test_classification_head(self): - if "classification" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - self.skipTest("No classification head") - - model1, model2 = create_twin_models(AutoAdapterModel, self.config) - - model1.add_classification_head("dummy") - label_dict = {} - label_dict["labels"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) - self.run_prediction_head_test(model1, model2, "dummy", label_dict=label_dict) - - def test_image_classification_head(self): - if "image_classification" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - self.skipTest("No image classification head") - - model1, model2 = create_twin_models(AutoAdapterModel, self.config) - - model1.add_image_classification_head("dummy") - label_dict = {} - label_dict["labels"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) - self.run_prediction_head_test(model1, model2, "dummy", input_shape=(1, 3, 224, 224), label_dict=label_dict) - - def test_multiple_choice_head(self): - if "multiple_choice" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - self.skipTest("No multiple choice head") - - model1, model2 = create_twin_models(AutoAdapterModel, self.config) - - model1.add_multiple_choice_head("dummy") - label_dict = {} - label_dict["labels"] = torch.ones(self.batch_size, dtype=torch.long, device=torch_device) - self.run_prediction_head_test( - model1, model2, "dummy", input_shape=(self.batch_size, 2, self.seq_length), label_dict=label_dict - ) - - def test_tagging_head(self): - if "tagging" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - self.skipTest("No tagging head") - - model1, model2 = create_twin_models(AutoAdapterModel, self.config) - - model1.add_tagging_head("dummy") - label_dict = {} - label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) - self.run_prediction_head_test( - model1, model2, "dummy", output_shape=(self.batch_size, self.seq_length, 2), label_dict=label_dict - ) - - def test_qa_head(self): - if "question_answering" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - self.skipTest("No QA head") - - model1, model2 = create_twin_models(AutoAdapterModel, self.config) - - model1.add_qa_head("dummy") - label_dict = {} - label_dict["start_positions"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) - label_dict["end_positions"] = torch.zeros(self.batch_size, dtype=torch.long, device=torch_device) - self.run_prediction_head_test( - model1, model2, "dummy", output_shape=(self.batch_size, self.seq_length), label_dict=label_dict - ) - - def test_causal_lm_head(self): - if "causal_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - self.skipTest("No causal language model head") - - model1, model2 = create_twin_models(AutoAdapterModel, self.config) - model1.add_causal_lm_head("dummy") - - label_dict = {} - label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) - - self.run_prediction_head_test( - model1, - model2, - "dummy", - output_shape=(self.batch_size, self.seq_length, model1.config.vocab_size), - label_dict=label_dict, - ) - - # Finally, also check if generation works properly - input_ids = self.get_input_samples((1, self.seq_length), config=model1.config)["input_ids"] - input_ids = input_ids.to(torch_device) - # Use a different length for the seq2seq output - seq_output_length = self.seq_length + 30 - generated = model1.generate(input_ids, max_length=seq_output_length) - self.assertEqual(generated.shape[0], 1) - self.assertLessEqual(generated.shape[1], seq_output_length) - - def test_seq2seq_lm_head(self): - if "seq2seq_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - self.skipTest("No seq2seq language model head") - - model1, model2 = create_twin_models(AutoAdapterModel, self.config) - model1.add_seq2seq_lm_head("dummy") - - label_dict = {} - label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) - - # prepare decoder_input_ids similar to how DataCollatorForSeq2Seq does it - if hasattr(model1, "prepare_decoder_input_ids_from_labels"): - decoder_input_ids = model1.prepare_decoder_input_ids_from_labels(labels=label_dict["labels"]) - label_dict["decoder_input_ids"] = decoder_input_ids - - self.run_prediction_head_test( - model1, - model2, - "dummy", - output_shape=(self.batch_size, self.seq_length, model1.config.vocab_size), - label_dict=label_dict, - ) - - # Finally, also check if generation works properly - input_ids = self.get_input_samples((1, self.seq_length), config=model1.config)["input_ids"] - input_ids = input_ids.to(torch_device) - # Use a different length for the seq2seq output - seq_output_length = self.seq_length + 30 - generated = model1.generate(input_ids, max_length=seq_output_length) - self.assertTrue(generated.shape[1] <= seq_output_length) - self.assertEqual(generated.shape[0], 1) - - def test_masked_lm_head(self): - if "masked_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - self.skipTest("No causal or seq2seq language model head") - - model1, model2 = create_twin_models(AutoAdapterModel, self.config) - - model1.add_masked_lm_head("dummy") - label_dict = {} - label_dict["labels"] = torch.zeros((self.batch_size, self.seq_length), dtype=torch.long, device=torch_device) - self.run_prediction_head_test( - model1, - model2, - "dummy", - output_shape=(self.batch_size, self.seq_length, model1.config.vocab_size), - label_dict=label_dict, - ) - - def test_lm_head_freeze_output_embeddings(self): - if self.config_class not in ADAPTER_MODEL_MAPPING or ( - "seq2seq_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types - and "causal_lm" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types - ): - self.skipTest("No seq2seq or causal language model head") - - model1 = AutoAdapterModel.from_config(self.config()) - model1.add_adapter("adapter1") - if "seq2seq_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - model1.add_seq2seq_lm_head("adapter1") - else: - model1.add_causal_lm_head("adapter1") - - model1.train_adapter("adapter1") - - for n, p in model1.get_output_embeddings().named_parameters(): - self.assertFalse(p.requires_grad, f"Parameter {n} should not be trainable.") - - def test_dependency_parsing_head(self): - if "dependency_parsing" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - self.skipTest("No dependency parsing head") - - model1, model2 = create_twin_models(AutoAdapterModel, self.config) - - model1.add_dependency_parsing_head("dummy") - label_dict = {} - label_dict["labels_arcs"] = torch.zeros( - (self.batch_size, self.seq_length), dtype=torch.long, device=torch_device - ) - label_dict["labels_rels"] = torch.zeros( - (self.batch_size, self.seq_length), dtype=torch.long, device=torch_device - ) - label_dict["word_starts"] = torch.zeros( - (self.batch_size, self.seq_length), dtype=torch.long, device=torch_device - ) - self.run_prediction_head_test( - model1, model2, "dummy", output_shape=(1, self.seq_length, self.seq_length + 1, 2), label_dict=label_dict - ) - - def test_delete_head(self): - model = AutoAdapterModel.from_config(self.config()) - model.eval() - - name = "test_head" - self.add_head(model, name) - self.assertTrue(name in model.heads) - self.assertTrue(name in model.config.prediction_heads) - self.assertEqual(name, model.active_head) - - model.delete_head(name) - self.assertFalse(name in model.heads) - self.assertFalse(name in model.config.prediction_heads) - self.assertNotEqual(name, model.active_head) - - def test_adapter_with_head(self): - model1, model2 = create_twin_models(AutoAdapterModel, self.config) - - name = "dummy" - model1.add_adapter(name) - output_size = self.add_head(model1, name, num_labels=3) - model1.set_active_adapters(name) - with tempfile.TemporaryDirectory() as temp_dir: - model1.save_adapter(temp_dir, name) - - model2.load_adapter(temp_dir) - model2.set_active_adapters(name) - # check equal output - in_data = self.get_input_samples(config=model1.config) - model1.to(torch_device) - model2.to(torch_device) - output1 = model1(**in_data) - output2 = model2(**in_data) - self.assertEqual(len(output1), len(output2)) - self.assertTrue(torch.equal(output1[0], output2[0])) - self.assertEqual(output_size, output1[0].size()[1]) - - def test_adapter_with_head_load_as(self): - model1, model2 = create_twin_models(AutoAdapterModel, self.config) - - name = "dummy" - model1.add_adapter(name) - output_size = self.add_head(model1, name, num_labels=3) - model1.set_active_adapters(name) - with tempfile.TemporaryDirectory() as temp_dir: - model1.save_adapter(temp_dir, name) - - # reload using a different name - model2.load_adapter(temp_dir, load_as="new_name") - model2.set_active_adapters("new_name") - - # check equal output - in_data = self.get_input_samples(config=model1.config) - model1.to(torch_device) - model2.to(torch_device) - output1 = model1(**in_data) - output2 = model2(**in_data) - self.assertEqual(len(output1), len(output2)) - self.assertTrue(torch.equal(output1[0], output2[0])) - self.assertEqual(output_size, output1[0].size()[1]) - - def test_load_full_model(self): - model = AutoAdapterModel.from_config(self.config()) - self.add_head(model, "dummy", layers=1) - - true_config = model.get_prediction_heads_config() - with tempfile.TemporaryDirectory() as temp_dir: - # save - model.save_pretrained(temp_dir) - # reload - model = AutoAdapterModel.from_pretrained(temp_dir) - self.assertIn("dummy", model.heads) - self.assertDictEqual(true_config, model.get_prediction_heads_config()) - - def test_batch_split_head(self): - model = AutoAdapterModel.from_config(self.config()) - output_size_a = self.add_head(model, "a", num_labels=2) - output_size_b = self.add_head(model, "b", num_labels=2) - model.active_head = BatchSplit("a", "b", batch_sizes=[1, 2]) - - in_data = self.get_input_samples(config=model.config) - model.to(torch_device) - out = model(**in_data) - - self.assertEqual(2, len(out)) - self.assertEqual((1, output_size_a), out[0][0].shape[:2]) - self.assertEqual((2, output_size_b), out[1][0].shape[:2]) - - def test_batch_split_adapter_head(self): - model = AutoAdapterModel.from_config(self.config()) - self.add_head(model, "a") - self.add_head(model, "b") - model.add_adapter("a") - model.add_adapter("b") - model.add_adapter("c") - model.set_active_adapters(BatchSplit(Stack("c", "a"), "b", batch_sizes=[2, 1])) - - in_data = self.get_input_samples(config=model.config) - model.to(torch_device) - out = model(**in_data) - - self.assertEqual(2, len(out)) - self.assertTrue(isinstance(model.active_head, BatchSplit)) - - def test_reload_static_to_flex_head(self): - if "classification" not in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - self.skipTest("No classification head available") - static_head_model = AutoModelForSequenceClassification.from_config(self.config()) - adapters.init(static_head_model) - flex_head_model = AutoAdapterModel.from_pretrained( - None, config=self.config(), state_dict=static_head_model.state_dict() - ) - static_head_model.eval() - flex_head_model.eval() - - static_head_model.add_adapter("test") - - with tempfile.TemporaryDirectory() as temp_dir: - static_head_model.save_adapter(temp_dir, "test") - - loading_info = {} - flex_head_model.load_adapter(temp_dir, loading_info=loading_info) - - # Load the adapter a second time to make sure our conversion script doesn't break anything - flex_head_model.load_adapter(temp_dir, loading_info=loading_info) - self.assertEqual(0, len(loading_info["missing_keys"])) - self.assertEqual(0, len(loading_info["unexpected_keys"])) - - # adapter and head were loaded - self.assertIn("test", flex_head_model.adapters_config) - self.assertIn("test", flex_head_model.heads) - - # check equal output - in_data = self.get_input_samples(config=flex_head_model.config) - static_head_model.to(torch_device) - flex_head_model.to(torch_device) - with AdapterSetup("test"): - output1 = static_head_model(**in_data) - output2 = flex_head_model(**in_data, head="test") - self.assertTrue(torch.all(torch.isclose(output1.logits, output2.logits))) - - def test_invertible_adapter_with_head(self): - if "masked_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - lm_head = "masked_lm" - elif "casual_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - lm_head = "casual_lm" - elif "seq2seq_lm" in ADAPTER_MODEL_MAPPING[self.config_class].head_types: - lm_head = "seq2seq_lm" - else: - self.skipTest("No masked or causel language model head") - - model = AutoAdapterModel.from_config(self.config()) - model.add_adapter("test", config="seq_bn_inv") - if lm_head == "casual_lm": - model.add_causal_lm_head("test") - elif lm_head == "masked_lm": - model.add_masked_lm_head("test") - elif lm_head == "seq2seq_lm": - model.add_seq2seq_lm_head("test") - else: - raise RuntimeError("{} is not a valid lm head".format(lm_head)) - model.set_active_adapters("test") - - # Set a hook before the invertible adapter to make sure it's actually called twice: - # Once after the embedding layer and once in the prediction head. - calls = 0 - - def forward_pre_hook(module, input): - nonlocal calls - calls += 1 - - inv_adapter = model.base_model.get_invertible_adapter() - self.assertIsNotNone(inv_adapter) - inv_adapter.register_forward_pre_hook(forward_pre_hook) - - in_data = self.get_input_samples((self.batch_size, self.seq_length), config=model.config) - model.to(torch_device) - out = model(**in_data) - - self.assertEqual((self.batch_size, self.seq_length, model.config.vocab_size), out[0].shape) - self.assertEqual(2, calls) - - def test_context_simple(self, expected_number_of_adapter_calls=1): - model = AutoAdapterModel.from_config(self.config()) - model.add_adapter("a") - output_size = self.add_head(model, "a", num_labels=3) - # Make sure no adapter is activated - model.active_adapters = None - model.active_head = None - model.to(torch_device) - in_data = self.get_input_samples(config=model.config) - - # Set a hook before the adapter to make sure it's actually called. - calls = 0 - - def forward_pre_hook(module, input): - nonlocal calls - calls += 1 - - adapter = model.get_adapter("a")[0]["output_adapter"] - adapter.register_forward_pre_hook(forward_pre_hook) - - with AdapterSetup("a"): - out = model(**in_data) - - self.assertEqual(out[0].shape[:2], (3, output_size)) - self.assertEqual(calls, expected_number_of_adapter_calls) - - def test_save_all_adapters_with_head(self): - if self.config_class not in ADAPTER_MODEL_MAPPING: - self.skipTest("Does not support flex heads.") - - model = AutoAdapterModel.from_config(self.config()) - model.eval() - model.add_adapter("test") - self.add_head(model, "test") - with tempfile.TemporaryDirectory() as tmp_dir: - model.save_all_adapters(tmp_dir, with_head=True) - self.assertTrue(os.path.isfile(os.path.join(tmp_dir, "test", "head_config.json"))) - - with tempfile.TemporaryDirectory() as tmp_dir: - model.save_all_adapters(tmp_dir, with_head=False) - self.assertFalse(os.path.isfile(os.path.join(tmp_dir, "test", "head_config.json"))) diff --git a/adapters/tests/test_adapter_hub.py b/adapters/tests/test_adapter_hub.py deleted file mode 100644 index 7ebf9acb..00000000 --- a/adapters/tests/test_adapter_hub.py +++ /dev/null @@ -1,166 +0,0 @@ -import os -import unittest - -import numpy as np - -import adapters -from adapters import ADAPTER_CONFIG_MAP, AdapterConfig, BertAdapterModel, get_adapter_config_hash -from adapters.trainer import AdapterTrainer as Trainer -from adapters.utils import find_in_index -from transformers import ( # get_adapter_config_hash, - AutoModel, - AutoTokenizer, - BertForSequenceClassification, - GlueDataset, - GlueDataTrainingArguments, - TrainingArguments, - glue_compute_metrics, -) -from transformers.testing_utils import require_torch, torch_device - -from .test_adapter import ids_tensor - - -SAMPLE_INDEX = os.path.join(os.path.dirname(os.path.abspath(__file__)), "fixtures/hub-index.sample.json") - - -@require_torch -class AdapterHubTest(unittest.TestCase): - search_samples = [ - ("t@ukp", "pfeiffer", "path/to/pfeiffer/ukp"), - ("s@ukp", "pfeiffer", "path/to/pfeiffer/ukp"), - ("xyz", "pfeiffer", None), - ("t/s", None, "path/to/default"), - ("t/s@ukp", "pfeiffer", "path/to/pfeiffer/ukp"), - ("t/s", "pfeiffer", "path/to/pfeiffer/default"), - ("t/s", "houlsby", "path/to/houlsby/example-org"), - ] - - def test_find_in_index(self): - for sample in self.search_samples: - with self.subTest(sample=sample): - config = ADAPTER_CONFIG_MAP[sample[1]] if sample[1] else None - found_entry = find_in_index(sample[0], None, config, index_file=SAMPLE_INDEX) - self.assertEqual(sample[2], found_entry) - - def test_load_task_adapter_from_hub(self): - """This test checks if an adapter is loaded from the Hub correctly by evaluating it on some MRPC samples - and comparing with the expected result. - """ - for config in ["pfeiffer", "houlsby"]: - with self.subTest(config=config): - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - model = BertForSequenceClassification.from_pretrained("bert-base-uncased") - adapters.init(model) - - loading_info = {} - adapter_name = model.load_adapter( - "sts/mrpc@ukp", config=config, version="1", loading_info=loading_info - ) - model.train_adapter(adapter_name) - - self.assertEqual(0, len(loading_info["missing_keys"])) - self.assertEqual(0, len(loading_info["unexpected_keys"])) - - self.assertIn(adapter_name, model.adapters_config.adapters) - self.assertNotIn(adapter_name, model.base_model.invertible_adapters) - - # check if config is valid - expected_hash = get_adapter_config_hash(AdapterConfig.load(config)) - real_hash = get_adapter_config_hash(model.adapters_config.get(adapter_name)) - self.assertEqual(expected_hash, real_hash) - - # setup dataset - data_args = GlueDataTrainingArguments( - task_name="mrpc", - data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", - overwrite_cache=True, - ) - eval_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="dev") - training_args = TrainingArguments(output_dir="./examples", no_cuda=True) - - # evaluate - trainer = Trainer( - model=model, - args=training_args, - eval_dataset=eval_dataset, - compute_metrics=self._compute_glue_metrics("mrpc"), - adapter_names=["mrpc"], - ) - result = trainer.evaluate() - self.assertGreater(result["eval_acc"], 0.9) - - def _compute_glue_metrics(self, task_name): - return lambda p: glue_compute_metrics(task_name, np.argmax(p.predictions, axis=1), p.label_ids) - - def test_load_task_adapter_from_hub_with_leave_out(self): - model = AutoModel.from_pretrained("bert-base-uncased") - adapters.init(model) - - loading_info = {} - adapter_name = model.load_adapter("sts/mrpc@ukp", config="pfeiffer", loading_info=loading_info, leave_out=[11]) - - self.assertEqual(0, len(loading_info["missing_keys"])) - # self.assertEqual(0, len(loading_info["unexpected_keys"])) - self.assertIn(adapter_name, model.adapters_config.adapters) - - # check if leave out was applied to config - self.assertEqual([11], model.adapters_config.get(adapter_name).leave_out) - - # layer 11 should be removed while others should still exist - self.assertIn(adapter_name, model.base_model.encoder.layer[10].output.adapters) - self.assertNotIn(adapter_name, model.base_model.encoder.layer[11].output.adapters) - - def test_load_lang_adapter_from_hub(self): - for config in ["seq_bn_inv", "double_seq_bn_inv"]: - with self.subTest(config=config): - model = AutoModel.from_pretrained("bert-base-multilingual-cased") - adapters.init(model) - config = AdapterConfig.load(config, non_linearity="gelu", reduction_factor=2) - - loading_info = {} - adapter_name = model.load_adapter( - "fi/wiki@ukp", config=config, set_active=True, loading_info=loading_info - ) - - self.assertEqual(0, len(loading_info["missing_keys"])) - self.assertEqual(0, len(loading_info["unexpected_keys"])) - - # check if adapter & invertible adapter were added - self.assertIn(adapter_name, model.adapters_config.adapters) - self.assertIn(adapter_name, model.invertible_adapters) - - # check if config is valid - # TODO-AH hashes are not guaranteed to be equal because of legacy keys in lang adapter config - # expected_hash = get_adapter_config_hash(config) - # real_hash = get_adapter_config_hash(model.adapters_config.get(adapter_name)) - # self.assertEqual(expected_hash, real_hash) - - # check size of output - in_data = ids_tensor((1, 128), 1000) - model.to(torch_device) - output = model(in_data) - self.assertEqual([1, 128, 768], list(output[0].size())) - - def test_load_adapter_with_head_from_hub(self): - model = BertAdapterModel.from_pretrained("bert-base-uncased") - - loading_info = {} - adapter_name = model.load_adapter( - "qa/squad1@ukp", config="houlsby", version="1", set_active=True, loading_info=loading_info - ) - - self.assertEqual(0, len(loading_info["missing_keys"])) - self.assertEqual(0, len(loading_info["unexpected_keys"])) - - self.assertIn(adapter_name, model.adapters_config.adapters) - # check if config is valid - expected_hash = get_adapter_config_hash(AdapterConfig.load("houlsby")) - real_hash = get_adapter_config_hash(model.adapters_config.get(adapter_name)) - self.assertEqual(expected_hash, real_hash) - - # check size of output - in_data = ids_tensor((1, 128), 1000) - model.to(torch_device) - output = model(in_data) - self.assertEqual([1, 128], list(output[0].size())) diff --git a/adapters/tests/test_adapter_save_id2label.py b/adapters/tests/test_adapter_save_id2label.py deleted file mode 100644 index 4d8eba70..00000000 --- a/adapters/tests/test_adapter_save_id2label.py +++ /dev/null @@ -1,110 +0,0 @@ -import unittest -from tempfile import TemporaryDirectory -from typing import Dict - -import adapters -from adapters import BertAdapterModel -from transformers import BertConfig, BertForSequenceClassification - - -def get_default(num_label): - labels = ["LABEL_" + str(i) for i in range(num_label)] - label_dict = {id_: label for id_, label in enumerate(labels)} - return labels, label_dict - - -class TestSaveLabel(unittest.TestCase): - def setUp(self): - self.labels = [ - "ADJ", - "ADP", - "ADV", - "AUX", - "CCONJ", - "DET", - "INTJ", - "NOUN", - "NUM", - "PART", - "PRON", - "PROPN", - "PUNCT", - "SCONJ", - "SYM", - "VERB", - "X", - ] - self.label_map: Dict[int, str] = {i: label for i, label in enumerate(self.labels)} - self.config = BertConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - num_labels=len(self.labels), - id2label=self.label_map, - label2id={label: i for i, label in enumerate(self.labels)}, - ) - - def test_classification_model_head_labels(self): - model = BertForSequenceClassification(self.config) - adapters.init(model) - with TemporaryDirectory() as temp_dir: - model.save_head(temp_dir) - model.load_head(temp_dir) - - self.assertEqual(self.labels, model.get_labels()) - self.assertDictEqual(self.label_map, model.get_labels_dict()) - - def test_sequ_classification_model_head_labels(self): - model = BertForSequenceClassification(self.config) - adapters.init(model) - with TemporaryDirectory() as temp_dir: - model.save_head(temp_dir) - model.load_head(temp_dir) - - self.assertEqual(self.labels, model.get_labels()) - self.assertDictEqual(self.label_map, model.get_labels_dict()) - - def test_model_with_heads_tagging_head_labels(self): - model = BertAdapterModel(self.config) - model.add_tagging_head("test_head", num_labels=len(self.labels), id2label=self.label_map) - with TemporaryDirectory() as temp_dir: - model.save_head(temp_dir, "test_head") - model.load_head(temp_dir) - # this is just loaded to test whether loading an adapter changes the label information - model.add_adapter("sst-2") - - self.assertEqual(self.labels, model.get_labels()) - self.assertDictEqual(self.label_map, model.get_labels_dict()) - - def test_multiple_heads_label(self): - model = BertAdapterModel(self.config) - model.add_tagging_head("test_head", num_labels=len(self.labels), id2label=self.label_map) - with TemporaryDirectory() as temp_dir: - model.save_head(temp_dir, "test_head") - model.load_head(temp_dir) - # adapter loaded for testing whether it changes label information - model.add_adapter("sst-2") - model.add_classification_head("classification_head") - default_label, default_label_dict = get_default(2) - - self.assertEqual(model.get_labels("classification_head"), default_label) - self.assertEqual(model.get_labels_dict("classification_head"), default_label_dict) - - def test_model_with_heads_multiple_heads(self): - model = BertAdapterModel(self.config) - model.add_tagging_head("test_head", num_labels=len(self.labels), id2label=self.label_map) - model.add_classification_head("second_head", num_labels=5) - with TemporaryDirectory() as temp_dir: - model.save_head(temp_dir + "/test_head", "test_head") - model.load_head(temp_dir + "/test_head") - model.save_head(temp_dir + "/second_head", "second_head") - model.load_head(temp_dir + "/second_head") - model.add_adapter("sst-2") - - self.assertEqual(model.get_labels("test_head"), self.labels) - self.assertEqual(model.get_labels_dict("test_head"), self.label_map) - - -if __name__ == "__main__": - unittest.main() diff --git a/adapters/tests/test_adapter_trainer.py b/adapters/tests/test_adapter_trainer.py deleted file mode 100644 index 7fc35870..00000000 --- a/adapters/tests/test_adapter_trainer.py +++ /dev/null @@ -1,541 +0,0 @@ -import os -import unittest -from tempfile import TemporaryDirectory - -import torch - -import adapters -from adapters import AutoAdapterModel -from adapters.composition import Fuse, Stack -from adapters.trainer import AdapterTrainer, logger -from transformers import ( - AutoModelForSequenceClassification, - AutoTokenizer, - BertConfig, - BertForSequenceClassification, - GlueDataset, - GlueDataTrainingArguments, - Trainer, - TrainingArguments, -) -from transformers.testing_utils import require_ray, slow - - -class TestAdapterTrainer(unittest.TestCase): - def get_model_config(self): - return BertConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - - def test_resume_training(self): - - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - data_args = GlueDataTrainingArguments( - task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True - ) - train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") - with TemporaryDirectory() as tmpdirname: - model = AutoModelForSequenceClassification.from_config(self.get_model_config()) - adapters.init(model) - model.add_adapter("adapter") - model.add_adapter("additional_adapter") - model.set_active_adapters("adapter") - model.train_adapter("adapter") - - training_args = TrainingArguments( - output_dir=tmpdirname, - do_train=True, - learning_rate=0.1, - logging_steps=1, - max_steps=1, - save_steps=1, - remove_unused_columns=False, - ) - trainer = AdapterTrainer( - model=model, - args=training_args, - train_dataset=train_dataset, - ) - - trainer.train() - # create second model that should resume the training of the first - model_resume = AutoModelForSequenceClassification.from_config(self.get_model_config()) - adapters.init(model_resume) - model_resume.add_adapter("adapter") - model_resume.add_adapter("additional_adapter") - model_resume.set_active_adapters("adapter") - model_resume.train_adapter("adapter") - trainer_resume = AdapterTrainer( - model=model_resume, - args=TrainingArguments(do_train=True, max_steps=1, output_dir=tmpdirname), - train_dataset=train_dataset, - ) - trainer_resume.train(resume_from_checkpoint=True) - - self.assertEqual(model.adapters_config.adapters, model_resume.adapters_config.adapters) - - for (k1, v1), (k2, v2) in zip( - trainer.model.state_dict().items(), trainer_resume.model.state_dict().items() - ): - self.assertEqual(k1, k2) - if "adapter" in k1: - self.assertTrue(torch.equal(v1, v2), k1) - - def test_resume_training_invalid_checkpoint(self): - - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - data_args = GlueDataTrainingArguments( - task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True - ) - train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") - with TemporaryDirectory() as tmpdirname: - model = AutoModelForSequenceClassification.from_config(self.get_model_config()) - adapters.init(model) - model.add_adapter("adapter") - model.add_adapter("additional_adapter") - model.set_active_adapters("adapter") - model.train_adapter("adapter") - - training_args = TrainingArguments( - output_dir=tmpdirname, - do_train=True, - learning_rate=0.1, - logging_steps=1, - max_steps=1, - save_steps=1, - remove_unused_columns=False, - ) - trainer = AdapterTrainer( - model=model, - args=training_args, - train_dataset=train_dataset, - ) - - trainer.train() - # create second model that should resume the training of the first - model_resume = AutoModelForSequenceClassification.from_config(self.get_model_config()) - adapters.init(model_resume) - model_resume.add_adapter("adapter") - model_resume.add_adapter("additional_adapter") - model_resume.set_active_adapters("adapter") - model_resume.train_adapter("adapter") - trainer_resume = AdapterTrainer( - model=model_resume, - args=TrainingArguments(do_train=True, max_steps=1, output_dir=tmpdirname), - train_dataset=train_dataset, - ) - with self.assertRaises(Exception): - trainer_resume.train(resume_from_checkpoint=tmpdirname + "_invalid") - - def test_resume_training_with_fusion(self): - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - data_args = GlueDataTrainingArguments( - task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True - ) - train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") - with TemporaryDirectory() as tmpdirname: - model = AutoModelForSequenceClassification.from_config(self.get_model_config()) - adapters.init(model) - model.add_adapter("adapter") - model.add_adapter("additional_adapter") - model.add_adapter_fusion(Fuse("adapter", "additional_adapter")) - model.set_active_adapters(Fuse("adapter", "additional_adapter")) - model.train_fusion(Fuse("adapter", "additional_adapter")) - - training_args = TrainingArguments( - output_dir=tmpdirname, - do_train=True, - learning_rate=0.1, - logging_steps=1, - max_steps=1, - save_steps=1, - remove_unused_columns=False, - ) - trainer = AdapterTrainer( - model=model, - args=training_args, - train_dataset=train_dataset, - ) - - trainer.train() - model_resume = AutoModelForSequenceClassification.from_config(self.get_model_config()) - adapters.init(model_resume) - model_resume.add_adapter("adapter") - model_resume.add_adapter("additional_adapter") - model_resume.add_adapter_fusion(Fuse("adapter", "additional_adapter")) - model_resume.set_active_adapters(Fuse("adapter", "additional_adapter")) - model_resume.train_fusion(Fuse("adapter", "additional_adapter")) - trainer_resume = AdapterTrainer( - model=model_resume, - args=TrainingArguments(do_train=True, max_steps=1, output_dir=tmpdirname), - train_dataset=train_dataset, - ) - trainer_resume.train(resume_from_checkpoint=True) - - self.assertEqual(model.adapters_config.adapters, model_resume.adapters_config.adapters) - - for (k1, v1), (k2, v2) in zip( - trainer.model.to("cpu").state_dict().items(), trainer_resume.model.to("cpu").state_dict().items() - ): - self.assertEqual(k1, k2) - if "adapter" in k1: - self.assertTrue(torch.equal(v1, v2), k1) - - def test_auto_set_save_adapters(self): - model = BertForSequenceClassification( - BertConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - ) - adapters.init(model) - model.add_adapter("adapter1") - model.add_adapter("adapter2") - model.add_adapter_fusion(Fuse("adapter1", "adapter2")) - model.train_adapter_fusion(Fuse("adapter1", "adapter2")) - - with TemporaryDirectory() as tmpdirname: - training_args = TrainingArguments( - output_dir=tmpdirname, - ) - trainer = AdapterTrainer( - model=model, - args=training_args, - ) - self.assertTrue(trainer.train_adapter_fusion) - - @slow - def test_training_load_best_model_at_end_full_model(self): - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - data_args = GlueDataTrainingArguments( - task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True - ) - train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") - eval_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="dev") - - model = AutoModelForSequenceClassification.from_config(self.get_model_config()) - adapters.init(model) - model.add_adapter("adapter") - model.train_adapter("adapter") - - with TemporaryDirectory() as tmpdirname: - training_args = TrainingArguments( - output_dir=tmpdirname, - do_train=True, - learning_rate=0.001, - max_steps=1, - save_steps=1, - remove_unused_columns=False, - load_best_model_at_end=True, - evaluation_strategy="epoch", - save_strategy="epoch", - num_train_epochs=2, - ) - trainer = Trainer( - model=model, - args=training_args, - train_dataset=train_dataset, - eval_dataset=eval_dataset, - ) - - trainer.train() - self.assertIsNotNone(trainer.model.active_adapters) - - def test_training_load_best_model_at_end_adapter(self): - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - data_args = GlueDataTrainingArguments( - task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True - ) - train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") - eval_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="dev") - - model = AutoModelForSequenceClassification.from_config(self.get_model_config()) - adapters.init(model) - model.add_adapter("adapter") - model.train_adapter("adapter") - - with TemporaryDirectory() as tmpdirname: - training_args = TrainingArguments( - output_dir=tmpdirname, - do_train=True, - learning_rate=0.001, - max_steps=1, - save_steps=1, - remove_unused_columns=False, - load_best_model_at_end=True, - evaluation_strategy="epoch", - save_strategy="epoch", - num_train_epochs=2, - ) - trainer = AdapterTrainer( - model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset - ) - with self.assertLogs(logger) as cm: - trainer.train() - self.assertTrue(any("Loading best adapter(s) from" in line for line in cm.output)) - self.assertEqual(Stack("adapter"), trainer.model.active_adapters) - - def test_training_load_best_model_at_end_fusion(self): - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - data_args = GlueDataTrainingArguments( - task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True - ) - train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") - eval_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="dev") - - model = AutoModelForSequenceClassification.from_config(self.get_model_config()) - adapters.init(model) - model.add_adapter("fuse_adapter_1") - model.add_adapter("fuse_adapter_2") - model.add_adapter_fusion(Fuse("fuse_adapter_1", "fuse_adapter_2")) - model.train_adapter_fusion(Fuse("fuse_adapter_1", "fuse_adapter_2")) - - with TemporaryDirectory() as tmpdirname: - training_args = TrainingArguments( - output_dir=tmpdirname, - do_train=True, - learning_rate=0.001, - max_steps=1, - save_steps=1, - remove_unused_columns=False, - load_best_model_at_end=True, - evaluation_strategy="epoch", - save_strategy="epoch", - num_train_epochs=2, - ) - trainer = AdapterTrainer( - model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset - ) - with self.assertLogs(logger) as cm: - trainer.train() - self.assertTrue(any("Loading best adapter fusion(s) from" in line for line in cm.output)) - self.assertEqual(Fuse("fuse_adapter_1", "fuse_adapter_2"), trainer.model.active_adapters) - - def test_reloading_prediction_head(self): - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - data_args = GlueDataTrainingArguments( - task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True - ) - train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") - - model = AutoAdapterModel.from_config(self.get_model_config()) - - model.add_classification_head("adapter", num_labels=3) - model.add_classification_head("dummy", num_labels=2) - - # add the adapters to be fused - model.add_adapter("adapter") - model.add_adapter("additional_adapter") - - # setup fusion - adapter_setup = Fuse("adapter", "additional_adapter") - model.add_adapter_fusion(adapter_setup) - model.train_adapter_fusion(adapter_setup) - model.set_active_adapters(adapter_setup) - self.assertEqual(adapter_setup, model.active_adapters) - self.assertEqual("dummy", model.active_head) - with TemporaryDirectory() as tempdir: - training_args = TrainingArguments( - output_dir=tempdir, - do_train=True, - learning_rate=0.1, - logging_steps=1, - max_steps=1, - save_steps=1, - remove_unused_columns=False, - ) - trainer = AdapterTrainer( - model=model, - args=training_args, - train_dataset=train_dataset, - ) - - trainer.train() - # create second model that should resume the training of the first - model_resume = AutoAdapterModel.from_config(self.get_model_config()) - - model_resume.add_classification_head("adapter", num_labels=3) - model_resume.add_classification_head("dummy", num_labels=2) - model_resume.add_adapter("adapter") - model_resume.add_adapter("additional_adapter") - # setup fusion - adapter_setup = Fuse("adapter", "additional_adapter") - model_resume.add_adapter_fusion(adapter_setup) - model_resume.train_adapter_fusion(adapter_setup) - model_resume.set_active_adapters(adapter_setup) - trainer_resume = AdapterTrainer( - model=model_resume, - args=TrainingArguments(do_train=True, max_steps=1, output_dir=tempdir), - train_dataset=train_dataset, - ) - trainer_resume.train(resume_from_checkpoint=True) - - self.assertEqual("dummy", model.active_head) - self.assertEqual(model.adapters_config.adapters, model_resume.adapters_config.adapters) - - for (k1, v1), (k2, v2) in zip( - trainer.model.to("cpu").state_dict().items(), trainer_resume.model.to("cpu").state_dict().items() - ): - self.assertEqual(k1, k2) - if "adapter" in k1 or "dummy" in k1: - self.assertTrue(torch.equal(v1, v2), k1) - - def test_general(self): - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - data_args = GlueDataTrainingArguments( - task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True - ) - train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") - - model = AutoAdapterModel.from_config(self.get_model_config()) - - model.add_classification_head("task", num_labels=3) - - # add the adapters to be fused - model.add_adapter("task") - model.add_adapter("additional_adapter") - - model.train_adapter("task") - self.assertEqual("task", model.active_head) - self.assertEqual(Stack("task"), model.active_adapters) - with TemporaryDirectory() as tempdir: - training_args = TrainingArguments( - output_dir=tempdir, - do_train=True, - learning_rate=0.1, - logging_steps=1, - max_steps=1, - save_steps=1, - remove_unused_columns=False, - ) - trainer = AdapterTrainer( - model=model, - args=training_args, - train_dataset=train_dataset, - ) - - trainer.train() - - # Check that adapters are actually saved but the full model is not - files_dir_checkpoint = [file_or_dir for file_or_dir in os.listdir(os.path.join(tempdir, "checkpoint-1"))] - self.assertTrue("task" in files_dir_checkpoint) - self.assertTrue("additional_adapter" in files_dir_checkpoint) - # Check that full model weights are not stored - self.assertFalse("pytorch_model.bin" in files_dir_checkpoint) - - # this should always be false in the adapter trainer - self.assertFalse(trainer.args.remove_unused_columns) - self.assertEqual("task", model.active_head) - self.assertEqual(Stack("task"), model.active_adapters) - - def test_train_with_frozen_adapter_fusion(self): - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - data_args = GlueDataTrainingArguments( - task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True - ) - train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") - - model = AutoAdapterModel.from_config(self.get_model_config()) - - model.add_adapter("a") - model.add_adapter("b") - - adapter_setup = Fuse("a", "b") - - model.add_adapter_fusion(adapter_setup, set_active=True) - - model.add_adapter("c") - model.add_classification_head("c") - - model.train_adapter("c") - - model.active_adapters = Stack(Fuse("a", "b"), "c") - - # Since our config has a value matrix, make sure it is regularized. - # We do this by patching the fusion regularization function. - regularization_called = False - orig_fusion_regularization_loss = model.base_model.get_fusion_regularization_loss - - def patched_fusion_reg_loss(): - nonlocal regularization_called - regularization_called = True - return orig_fusion_regularization_loss() - - model.base_model.get_fusion_regularization_loss = patched_fusion_reg_loss - - with TemporaryDirectory() as tempdir: - training_args = TrainingArguments( - output_dir=tempdir, - do_train=True, - learning_rate=0.1, - logging_steps=1, - max_steps=1, - save_steps=1, - remove_unused_columns=False, - ) - trainer = AdapterTrainer( - model=model, - args=training_args, - train_dataset=train_dataset, - ) - - trainer.train() - - self.assertTrue(regularization_called) - - @require_ray - def test_hyperparameter_search_works_with_AdapterTrainer(self): - tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") - data_args = GlueDataTrainingArguments( - task_name="mrpc", data_dir="./hf_transformers/tests/fixtures/tests_samples/MRPC", overwrite_cache=True - ) - train_dataset = GlueDataset(data_args, tokenizer=tokenizer, mode="train") - eval_dataset = train_dataset - - def hp_space(params): - from ray import tune - - return { - "learning_rate": tune.choice([0.1, 0.2]), - } - - def model_init(trail=None): - model = AutoAdapterModel.from_config(self.get_model_config()) - - model.add_classification_head("task", num_labels=3) - - # add the adapters to be fused - model.add_adapter("task") - model.add_adapter("additional_adapter") - - model.train_adapter("task") - return model - - with TemporaryDirectory() as tempdir: - training_args = TrainingArguments( - output_dir=tempdir, - do_train=True, - learning_rate=0.1, - logging_steps=1, - max_steps=1, - save_steps=1, - remove_unused_columns=False, - ) - trainer = AdapterTrainer( - model=None, - model_init=model_init, - args=training_args, - train_dataset=train_dataset, - eval_dataset=eval_dataset, - ) - - trainer.hyperparameter_search(direction="minimize", hp_space=hp_space, backend="ray", n_trials=2) - - -if __name__ == "__main__": - unittest.main() diff --git a/adapters/tests/test_albert.py b/adapters/tests/test_albert.py deleted file mode 100644 index f7b1e98e..00000000 --- a/adapters/tests/test_albert.py +++ /dev/null @@ -1,69 +0,0 @@ -import unittest -from math import ceil - -from transformers import AlbertConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class AlbertAdapterTestBase(AdapterTestBase): - config_class = AlbertConfig - config = make_config( - AlbertConfig, - embedding_size=16, - hidden_size=64, - num_hidden_layers=5, - num_attention_heads=4, - intermediate_size=37, - num_hidden_groups=2, - ) - tokenizer_name = "albert-base-v2" - leave_out_layers = [0] - - -@require_torch -class AlbertAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - EmbeddingTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - AlbertAdapterTestBase, - unittest.TestCase, -): - def test_context_simple(self): - expected_number_of_adapter_calls = ceil(self.config().num_hidden_layers / self.config().num_hidden_groups) - super().test_context_simple(expected_number_of_adapter_calls=expected_number_of_adapter_calls) - - -@require_torch -class AlbertClassConversionTest( - ModelClassConversionTestMixin, - AlbertAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_bart.py b/adapters/tests/test_bart.py deleted file mode 100644 index 4f10114b..00000000 --- a/adapters/tests/test_bart.py +++ /dev/null @@ -1,66 +0,0 @@ -import unittest - -from tests.methods.test_config_union import ConfigUnionAdapterTest -from transformers import BartConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class BartAdapterTestBase(AdapterTestBase): - config_class = BartConfig - config = make_config( - BartConfig, - d_model=16, - encoder_layers=2, - decoder_layers=2, - encoder_attention_heads=4, - decoder_attention_heads=4, - encoder_ffn_dim=4, - decoder_ffn_dim=4, - ) - tokenizer_name = "facebook/bart-base" - - -@require_torch -class BartAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - EmbeddingTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - ConfigUnionAdapterTest, - BartAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class BartClassConversionTest( - ModelClassConversionTestMixin, - BartAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_beit.py b/adapters/tests/test_beit.py deleted file mode 100644 index 1e83c9e5..00000000 --- a/adapters/tests/test_beit.py +++ /dev/null @@ -1,59 +0,0 @@ -import unittest - -from transformers import BeitConfig -from transformers.testing_utils import require_torch - -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import VisionAdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class BeitAdapterTestBase(VisionAdapterTestBase): - config_class = BeitConfig - config = make_config( - BeitConfig, - image_size=224, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - feature_extractor_name = "microsoft/beit-base-patch16-224-pt22k" - - -@require_torch -class BeitAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - PredictionHeadModelTestMixin, - BeitAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class BeitClassConversionTest( - ModelClassConversionTestMixin, - BeitAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_bert.py b/adapters/tests/test_bert.py deleted file mode 100644 index 8bfe10b8..00000000 --- a/adapters/tests/test_bert.py +++ /dev/null @@ -1,65 +0,0 @@ -import unittest - -from tests.methods.test_config_union import ConfigUnionAdapterTest -from transformers import BertConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class BertAdapterTestBase(AdapterTestBase): - config_class = BertConfig - config = make_config( - BertConfig, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - tokenizer_name = "bert-base-uncased" - - -@require_torch -class BertAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - EmbeddingTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - ConfigUnionAdapterTest, - BertAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class BertClassConversionTest( - ModelClassConversionTestMixin, - BertAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_bert_generation.py b/adapters/tests/test_bert_generation.py deleted file mode 100644 index 162b3422..00000000 --- a/adapters/tests/test_bert_generation.py +++ /dev/null @@ -1,108 +0,0 @@ -import unittest - -from datasets import load_dataset - -from transformers import AutoTokenizer, BertGenerationConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class BertGenerationAdapterTestBase(AdapterTestBase): - config_class = BertGenerationConfig - config = make_config( - BertGenerationConfig, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - tokenizer_name = "bert-base-uncased" - - def add_head(self, model, name, **kwargs): - model.add_masked_lm_head(name) - return self.default_input_samples_shape[-1] - - def dataset(self, tokenizer=None): - # setup tokenizer - if tokenizer is None: - tokenizer = AutoTokenizer.from_pretrained(self.tokenizer_name, use_fast=False) - if tokenizer.pad_token is None: - tokenizer.pad_token = tokenizer.eos_token - - def preprocess_function(examples): - inputs = examples["document"] - targets = examples["summary"] - inputs = ["Summarize: " + inp for inp in inputs] - model_inputs = tokenizer(inputs, padding="max_length", truncation=True, max_length=128) - - # Setup the tokenizer for targets - with tokenizer.as_target_tokenizer(): - labels = tokenizer(targets, padding="max_length", truncation=True, max_length=128) - - # If we are padding here, replace all tokenizer.pad_token_id in the labels by -100 when we want to ignore - # padding in the loss. - labels["input_ids"] = [ - [(l if l != tokenizer.pad_token_id else -100) for l in label] for label in labels["input_ids"] - ] - - model_inputs["labels"] = labels["input_ids"] - return model_inputs - - data_args = { - "task_name": "xsum", - "path": "./tests/fixtures/samples/xsum/sample.json", - } - dataset = load_dataset("json", data_files=data_args["path"]) - train_dataset = dataset["train"] - train_dataset = train_dataset.map( - preprocess_function, - batched=True, - desc="Running tokenizer on train dataset", - ) - return train_dataset - - -@require_torch -class BertGenerationAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - EmbeddingTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - BertGenerationAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class BertGenerationClassConversionTest( - ModelClassConversionTestMixin, - BertGenerationAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_clip.py b/adapters/tests/test_clip.py deleted file mode 100644 index 2ed57268..00000000 --- a/adapters/tests/test_clip.py +++ /dev/null @@ -1,221 +0,0 @@ -import random -import unittest - -import torch - -from transformers import ( - CLIPConfig, - CLIPTextConfig, - CLIPTextModel, - CLIPTextModelWithProjection, - CLIPVisionConfig, - CLIPVisionModel, - CLIPVisionModelWithProjection, -) -from transformers.testing_utils import require_torch, torch_device - -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, VisionAdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin - - -class CLIPVisionAdapterTestBase(VisionAdapterTestBase): - model_class = CLIPVisionModel - config_class = CLIPVisionConfig - config = make_config( - CLIPVisionConfig, - image_size=30, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - feature_extractor_name = "openai/clip-vit-base-patch32" - - -@require_torch -class CLIPVisionAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - CLIPVisionAdapterTestBase, - unittest.TestCase, -): - pass - - -class CLIPVisionWithProjectionAdapterTestBase(VisionAdapterTestBase): - model_class = CLIPVisionModelWithProjection - config_class = CLIPVisionConfig - config = make_config( - CLIPVisionConfig, - image_size=30, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - feature_extractor_name = "openai/clip-vit-base-patch32" - - -@require_torch -class CLIPVisionWithProjectionAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - CLIPVisionWithProjectionAdapterTestBase, - unittest.TestCase, -): - pass - - -class CLIPTextAdapterTestBase(AdapterTestBase): - model_class = CLIPTextModel - config_class = CLIPTextConfig - config = make_config( - CLIPTextConfig, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - tokenizer_name = "openai/clip-vit-base-patch32" - - -@require_torch -class CLIPTextAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - CLIPTextAdapterTestBase, - unittest.TestCase, -): - pass - - -class CLIPTextWithProjectionAdapterTestBase(AdapterTestBase): - model_class = CLIPTextModelWithProjection - config_class = CLIPTextConfig - config = make_config( - CLIPTextConfig, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - tokenizer_name = "openai/clip-vit-base-patch32" - - -@require_torch -class CLIPTextWithProjectionAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - CLIPTextWithProjectionAdapterTestBase, - unittest.TestCase, -): - pass - - -class CLIPAdapterTestBase(AdapterTestBase): - config_class = CLIPConfig - config = staticmethod( - lambda: CLIPConfig.from_text_vision_configs( - CLIPTextConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ), - CLIPVisionConfig( - image_size=30, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ), - ) - ) - tokenizer_name = "openai/clip-vit-base-patch32" - # Default shape of inputs to use - default_text_input_samples_shape = (3, 64) - default_vision_input_samples_shape = (3, 3, 224, 224) - do_run_train_tests = False - - def get_input_samples(self, vocab_size=5000, config=None): - # text inputs - shape = self.default_text_input_samples_shape - total_dims = 1 - for dim in shape: - total_dims *= dim - values = [] - for _ in range(total_dims): - values.append(random.randint(0, vocab_size - 1)) - input_ids = torch.tensor(data=values, dtype=torch.long, device=torch_device).view(shape).contiguous() - # this is needed e.g. for BART - if config and config.eos_token_id is not None and config.eos_token_id < vocab_size: - input_ids[input_ids == config.eos_token_id] = random.randint(0, config.eos_token_id - 1) - input_ids[:, -1] = config.eos_token_id - in_data = {"input_ids": input_ids} - - # vision inputs - shape = self.default_vision_input_samples_shape - total_dims = 1 - for dim in shape: - total_dims *= dim - values = [] - for _ in range(total_dims): - values.append(random.random()) - pixel_values = torch.tensor(data=values, dtype=torch.float, device=torch_device).view(shape).contiguous() - in_data["pixel_values"] = pixel_values - - return in_data - - def add_head(self, *args, **kwargs): - pass - - -@require_torch -class CLIPAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - CLIPAdapterTestBase, - unittest.TestCase, -): - def test_adapter_fusion_save_with_head(self): - # This test is not applicable to CLIP - self.skipTest("Not applicable to CLIP.") diff --git a/adapters/tests/test_deberta.py b/adapters/tests/test_deberta.py deleted file mode 100644 index 8dfaf8d7..00000000 --- a/adapters/tests/test_deberta.py +++ /dev/null @@ -1,68 +0,0 @@ -import unittest - -from tests.methods.test_config_union import ConfigUnionAdapterTest -from transformers import DebertaConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class DebertaAdapterTestBase(AdapterTestBase): - config_class = DebertaConfig - config = make_config( - DebertaConfig, - hidden_size=32, - num_hidden_layers=5, - num_attention_heads=4, - intermediate_size=37, - hidden_act="gelu", - relative_attention=True, - pos_att_type="p2c|c2p", - ) - tokenizer_name = "microsoft/deberta-base" - - -@require_torch -class DebertaAdapterTest( - AdapterFusionModelTestMixin, - CompabilityTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - EmbeddingTestMixin, - ParallelTrainingMixin, - ConfigUnionAdapterTest, - DebertaAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class DebertaClassConversionTest( - ModelClassConversionTestMixin, - DebertaAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_debertaV2.py b/adapters/tests/test_debertaV2.py deleted file mode 100644 index bb4aacb1..00000000 --- a/adapters/tests/test_debertaV2.py +++ /dev/null @@ -1,68 +0,0 @@ -import unittest - -from tests.methods.test_config_union import ConfigUnionAdapterTest -from transformers import DebertaV2Config -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class DebertaV2AdapterTestBase(AdapterTestBase): - config_class = DebertaV2Config - config = make_config( - DebertaV2Config, - hidden_size=32, - num_hidden_layers=5, - num_attention_heads=4, - intermediate_size=37, - hidden_act="gelu", - relative_attention=True, - pos_att_type="p2c|c2p", - ) - tokenizer_name = "microsoft/deberta-v3-base" - - -@require_torch -class DebertaV2AdapterTest( - AdapterFusionModelTestMixin, - CompabilityTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - EmbeddingTestMixin, - ParallelTrainingMixin, - ConfigUnionAdapterTest, - DebertaV2AdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class DebertaV2ClassConversionTest( - ModelClassConversionTestMixin, - DebertaV2AdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_distilbert.py b/adapters/tests/test_distilbert.py deleted file mode 100644 index 93b2a880..00000000 --- a/adapters/tests/test_distilbert.py +++ /dev/null @@ -1,65 +0,0 @@ -import unittest - -from tests.methods.test_config_union import ConfigUnionAdapterTest -from transformers import DistilBertConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class DistilBertAdapterTestBase(AdapterTestBase): - config_class = DistilBertConfig - config = make_config( - DistilBertConfig, - dim=32, - n_layers=4, - n_heads=4, - hidden_dim=37, - ) - tokenizer_name = "distilbert-base-uncased" - - -@require_torch -class DistilBertAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - EmbeddingTestMixin, - CompabilityTestMixin, - AdapterFusionModelTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - ConfigUnionAdapterTest, - DistilBertAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class DistilBertClassConversionTest( - ModelClassConversionTestMixin, - DistilBertAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_electra.py b/adapters/tests/test_electra.py deleted file mode 100644 index 7e5762c8..00000000 --- a/adapters/tests/test_electra.py +++ /dev/null @@ -1,66 +0,0 @@ -import unittest - -from tests.methods.test_config_union import ConfigUnionAdapterTest -from transformers import ElectraConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class ElectraAdapterTestBase(AdapterTestBase): - config_class = ElectraConfig - config = make_config( - ElectraConfig, - # vocab_size=99, - hidden_size=32, - num_hidden_layers=5, - num_attention_heads=4, - intermediate_size=37, - ) - tokenizer_name = "google/electra-base-generator" - - -@require_torch -class ElectraAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - EmbeddingTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - ConfigUnionAdapterTest, - ElectraAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class ElectraClassConversionTest( - ModelClassConversionTestMixin, - ElectraAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_encoder_decoder.py b/adapters/tests/test_encoder_decoder.py deleted file mode 100644 index 46a3e20c..00000000 --- a/adapters/tests/test_encoder_decoder.py +++ /dev/null @@ -1,90 +0,0 @@ -# flake8: noqa: F403,F405 -import unittest - -import adapters -from hf_transformers.tests.models.encoder_decoder.test_modeling_encoder_decoder import * # Imported to execute model tests -from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, BertConfig -from transformers.testing_utils import require_torch - -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase -from .test_adapter_fusion_common import AdapterFusionModelTestMixin - - -class EncoderDecoderAdapterTestBase(AdapterTestBase): - model_class = EncoderDecoderModel - config_class = EncoderDecoderConfig - config = staticmethod( - lambda: EncoderDecoderConfig.from_encoder_decoder_configs( - BertConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ), - BertConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - is_decoder=True, - add_cross_attention=True, - ), - ) - ) - tokenizer_name = "bert-base-uncased" - do_run_train_tests = False - - -@require_torch -class EncoderDecoderAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - EncoderDecoderAdapterTestBase, - unittest.TestCase, -): - def test_generation(self): - model = AutoModelForSeq2SeqLM.from_config(self.config()) - adapters.init(model) - model.add_adapter("test", config="pfeiffer") - model.set_active_adapters("test") - tokenizer = AutoTokenizer.from_pretrained(self.tokenizer_name, use_fast=False) - - text = "This is a test sentence." - input_ids = tokenizer(text, return_tensors="pt").input_ids - - generated_ids = model.generate(input_ids, bos_token_id=100) - generated_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] - self.assertNotEqual("", generated_text) - - def test_invertible_adapter_with_head(self): - """This test class is copied and adapted from the identically-named test in test_adapter_heads.py.""" - raise self.skipTest("AutoModelForSeq2SeqLM does not support using invertible adapters.") - - def test_adapter_fusion_save_with_head(self): - # This test is not applicable to the encoder-decoder model since it has no heads. - self.skipTest("Not applicable to the encoder-decoder model.") - - def test_forward_with_past(self): - # This test is not applicable to the encoder-decoder model since it has no heads. - self.skipTest("Not applicable to the encoder-decoder model.") - - def test_output_adapter_gating_scores_unipelt(self): - # TODO currently not supported - self.skipTest("Not implemented.") - - def test_output_adapter_fusion_attentions(self): - # TODO currently not supported - self.skipTest("Not implemented.") diff --git a/adapters/tests/test_gpt2.py b/adapters/tests/test_gpt2.py deleted file mode 100644 index 3ae2566a..00000000 --- a/adapters/tests/test_gpt2.py +++ /dev/null @@ -1,64 +0,0 @@ -import unittest - -from tests.methods.test_config_union import ConfigUnionAdapterTest -from transformers import GPT2Config -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class GPT2AdapterTestBase(AdapterTestBase): - config_class = GPT2Config - config = make_config( - GPT2Config, - n_embd=32, - n_layer=4, - n_head=4, - # set pad token to eos token - pad_token_id=50256, - ) - tokenizer_name = "gpt2" - - -@require_torch -class GPT2AdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - EmbeddingTestMixin, - CompabilityTestMixin, - AdapterFusionModelTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - ConfigUnionAdapterTest, - GPT2AdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class GPT2ClassConversionTest( - ModelClassConversionTestMixin, - GPT2AdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_gptj.py b/adapters/tests/test_gptj.py deleted file mode 100644 index 00b7889a..00000000 --- a/adapters/tests/test_gptj.py +++ /dev/null @@ -1,66 +0,0 @@ -import unittest - -from tests.methods.test_config_union import ConfigUnionAdapterTest -from transformers import GPTJConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class GPTJAdapterTestBase(AdapterTestBase): - config_class = GPTJConfig - config = make_config( - GPTJConfig, - n_embd=32, - n_layer=4, - n_head=4, - rotary_dim=4, - # set pad token to eos token - pad_token_id=50256, - resid_pdrop=0.1, - ) - tokenizer_name = "EleutherAI/gpt-j-6B" - - -@require_torch -class GPTJAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - UniPELTTestMixin, - PrefixTuningTestMixin, - EmbeddingTestMixin, - CompabilityTestMixin, - AdapterFusionModelTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - ConfigUnionAdapterTest, - GPTJAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class GPTJClassConversionTest( - ModelClassConversionTestMixin, - GPTJAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_llama.py b/adapters/tests/test_llama.py deleted file mode 100644 index 9cb6fcfd..00000000 --- a/adapters/tests/test_llama.py +++ /dev/null @@ -1,64 +0,0 @@ -import unittest - -from transformers.models.llama.configuration_llama import LlamaConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class LlamaAdapterTestBase(AdapterTestBase): - config_class = LlamaConfig - config = make_config( - LlamaConfig, - hidden_size=32, - num_hidden_layers=5, - num_attention_heads=4, - intermediate_size=37, - hidden_act="gelu", - hidden_dropout_prob=0.1, - pad_token_id=0, - ) - tokenizer_name = "openlm-research/open_llama_13b" - - -@require_torch -class LlamaAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - EmbeddingTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - LlamaAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class LlamaClassConversionTest( - ModelClassConversionTestMixin, - LlamaAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_mbart.py b/adapters/tests/test_mbart.py deleted file mode 100644 index 775e1fde..00000000 --- a/adapters/tests/test_mbart.py +++ /dev/null @@ -1,60 +0,0 @@ -import unittest - -from transformers import MBartConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class MBartAdapterTestBase(AdapterTestBase): - config_class = MBartConfig - config = make_config( - MBartConfig, - d_model=16, - encoder_layers=2, - decoder_layers=2, - encoder_attention_heads=4, - decoder_attention_heads=4, - encoder_ffn_dim=4, - decoder_ffn_dim=4, - vocab_size=250027, - ) - tokenizer_name = "facebook/mbart-large-cc25" - - -@require_torch -class MBartAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - MBartAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class MBartClassConversionTest( - ModelClassConversionTestMixin, - MBartAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_mt5.py b/adapters/tests/test_mt5.py deleted file mode 100644 index 67e56add..00000000 --- a/adapters/tests/test_mt5.py +++ /dev/null @@ -1,66 +0,0 @@ -import unittest - -from transformers import MT5Config -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -@require_torch -class MT5AdapterTestBase(AdapterTestBase): - config_class = MT5Config - config = make_config( - MT5Config, - d_model=16, - num_layers=2, - num_decoder_layers=2, - num_heads=4, - d_ff=4, - d_kv=16 // 4, - tie_word_embeddings=False, - decoder_start_token_id=0, - ) - tokenizer_name = "google/mt5-base" - - -@require_torch -class MT5AdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - EmbeddingTestMixin, - CompabilityTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - AdapterFusionModelTestMixin, - PredictionHeadModelTestMixin, - MT5AdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class MT5ClassConversionTest( - ModelClassConversionTestMixin, - MT5AdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_roberta.py b/adapters/tests/test_roberta.py deleted file mode 100644 index 5259ace3..00000000 --- a/adapters/tests/test_roberta.py +++ /dev/null @@ -1,63 +0,0 @@ -import unittest - -from tests.methods.test_config_union import ConfigUnionAdapterTest -from transformers import RobertaConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class RobertaAdapterTestBase(AdapterTestBase): - config_class = RobertaConfig - config = make_config( - RobertaConfig, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - vocab_size=50265, - ) - tokenizer_name = "roberta-base" - - -@require_torch -class RobertaAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - ConfigUnionAdapterTest, - RobertaAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class RobertaClassConversionTest( - ModelClassConversionTestMixin, - RobertaAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_t5.py b/adapters/tests/test_t5.py deleted file mode 100644 index c8717d8b..00000000 --- a/adapters/tests/test_t5.py +++ /dev/null @@ -1,66 +0,0 @@ -import unittest - -from transformers import T5Config -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_embeddings import EmbeddingTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -@require_torch -class T5AdapterTestBase(AdapterTestBase): - config_class = T5Config - config = make_config( - T5Config, - d_model=16, - num_layers=2, - num_decoder_layers=2, - num_heads=4, - d_ff=4, - d_kv=16 // 4, - tie_word_embeddings=False, - decoder_start_token_id=0, - ) - tokenizer_name = "t5-base" - - -@require_torch -class T5AdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - UniPELTTestMixin, - EmbeddingTestMixin, - CompabilityTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - AdapterFusionModelTestMixin, - PredictionHeadModelTestMixin, - T5AdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class T5ClassConversionTest( - ModelClassConversionTestMixin, - T5AdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_vit.py b/adapters/tests/test_vit.py deleted file mode 100644 index 2de1b343..00000000 --- a/adapters/tests/test_vit.py +++ /dev/null @@ -1,62 +0,0 @@ -import unittest - -from transformers import ViTConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin, ParallelTrainingMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import VisionAdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class ViTAdapterTestBase(VisionAdapterTestBase): - config_class = ViTConfig - config = make_config( - ViTConfig, - image_size=224, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - feature_extractor_name = "google/vit-base-patch16-224-in21k" - - -@require_torch -class ViTAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - ParallelTrainingMixin, - ViTAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class ViTClassConversionTest( - ModelClassConversionTestMixin, - ViTAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_xlm_roberta.py b/adapters/tests/test_xlm_roberta.py deleted file mode 100644 index 96268302..00000000 --- a/adapters/tests/test_xlm_roberta.py +++ /dev/null @@ -1,55 +0,0 @@ -import unittest - -from transformers import XLMRobertaConfig -from transformers.testing_utils import require_torch - -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin - - -class XLMRobertaAdapterTestBase(AdapterTestBase): - config_class = XLMRobertaConfig - config = make_config( - XLMRobertaConfig, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - vocab_size=250002, - ) - tokenizer_name = "xlm-roberta-base" - - -@require_torch -class XLMRobertaAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - XLMRobertaAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class XLMRobertaClassConversionTest( - ModelClassConversionTestMixin, - XLMRobertaAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/tests/test_xmod.py b/adapters/tests/test_xmod.py deleted file mode 100644 index a8cd02c4..00000000 --- a/adapters/tests/test_xmod.py +++ /dev/null @@ -1,63 +0,0 @@ -import unittest - -from transformers import XmodConfig -from transformers.testing_utils import require_torch - -from .composition.test_parallel import ParallelAdapterInferenceTestMixin -from .methods import ( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, -) -from .test_adapter import AdapterTestBase, make_config -from .test_adapter_backward_compability import CompabilityTestMixin -from .test_adapter_conversion import ModelClassConversionTestMixin -from .test_adapter_fusion_common import AdapterFusionModelTestMixin -from .test_adapter_heads import PredictionHeadModelTestMixin - - -class XmodAdapterTestBase(AdapterTestBase): - config_class = XmodConfig - config = make_config( - XmodConfig, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - vocab_size=250002, - max_position_embeddings=512, - default_language="en_XX", - ) - tokenizer_name = "xlm-roberta-base" - - -@require_torch -class XmodAdapterTest( - BottleneckAdapterTestMixin, - CompacterTestMixin, - IA3TestMixin, - LoRATestMixin, - PrefixTuningTestMixin, - PromptTuningTestMixin, - UniPELTTestMixin, - AdapterFusionModelTestMixin, - CompabilityTestMixin, - PredictionHeadModelTestMixin, - ParallelAdapterInferenceTestMixin, - XmodAdapterTestBase, - unittest.TestCase, -): - pass - - -@require_torch -class XmodClassConversionTest( - ModelClassConversionTestMixin, - XmodAdapterTestBase, - unittest.TestCase, -): - pass diff --git a/adapters/utils/back_comp/README.md b/adapters/utils/back_comp/README.md deleted file mode 100644 index 14896c61..00000000 --- a/adapters/utils/back_comp/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Backwards Compatibility Tests - -## Motivation - -This directory contains a set of tests that can be run to ensure that newly introduced changes or refactorings do not break existing functionalities. These tests verify model output consistency between two branches; here, we use the names `dev` and `main` for demonstration purposes, but these tests can be performed between any two branches where the `back_comp` directory with tests is available. -For this, the test script performs a forward pass for each supported model and compares the outputs between `dev` and `main` to identify any differences. - -## Requirements - -To execute these tests, you must meet the following requirements: - -- Ability to run bash scripts (in-built on Linux/macOS; for Windows, consider using third-party software like [GNU Bash](https://www.gnu.org/software/bash/)). -- Git as the version control system to switch between branches. -- The ability to check out the desired branch. If the branch is from another fork, you may need to add the repository as a remote. Refer to [GitHub's instructions](https://docs.github.com/en/get-started/getting-started-with-git/managing-remote-repositories) for details. -- A Python virtual environment to modify the installed package version of `adapters`. - -## Procedure - -To perform the compatibility tests, follow these steps: - -1. Determine a directory where you want to save the model output generated by the tests. Save this directory path to the variable `SaveDir` in the shell script `compare.sh`. (Careful: select a directory OUTSIDE of the repository; otherwise, the saved model output is no longer available when changing the branch.) -2. Select the branch you want to compare with `main` and save its name to the variable `Branch`. -3. Make sure you are checked out in `main` before starting the test script. -4. In your command line, navigate to the `back_comp` directory and execute the script by running `sh compare.sh`. - -The results will be displayed in the command line for visualization. \ No newline at end of file diff --git a/adapters/utils/back_comp/Utils.py b/adapters/utils/back_comp/Utils.py deleted file mode 100644 index 8ed48213..00000000 --- a/adapters/utils/back_comp/Utils.py +++ /dev/null @@ -1,498 +0,0 @@ -import os -import random -from typing import Any, Union - -import numpy as np -import torch -from PIL import Image -from torch import squeeze - -import jsonlines -import requests -import transformers -from adapters import AutoAdapterModel, init -from transformers import ( - AlbertConfig, - BartConfig, - BatchEncoding, - BeitConfig, - BeitImageProcessor, - BertConfig, - CLIPProcessor, - CLIPVisionConfig, - CLIPVisionModelWithProjection, - DebertaConfig, - DebertaV2Config, - DistilBertConfig, - EncoderDecoderConfig, - EncoderDecoderModel, - GPT2Config, - GPTJConfig, - MBartConfig, - RobertaConfig, - T5Config, - ViTConfig, - ViTImageProcessor, - XLMRobertaConfig, -) - - -def create_output(model: Any, model_name: str): - """Given a model run a forward pass with some dummy data. - Args: - model: The model for which the forward pass is run. - model_name: The name of the model. - Returns: - The model output.""" - - dummy_data = generate_dummy_data(model_name) - device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # use GPU if available - model.to(device) - dummy_data.to(device) - with torch.no_grad(): - model_output = model(**dummy_data) - - return model_output - - -def load_model(model_name: str, model_save_dir: str): - """Loads a pre-trained model from a specified path based on the specified model_name. - Args: - model_name (str): The name of the model to be loaded. - model_save_dir (str): The directory path where the pre-trained model is saved. - Returns: - Any: The loaded pre-trained model.""" - if model_name == "clip": - model = CLIPVisionModelWithProjection.from_pretrained(model_save_dir) - init(model) - elif model_name == "encoder_decoder": - model = EncoderDecoderModel.from_pretrained(model_save_dir) - init(model) - else: - model = AutoAdapterModel.from_pretrained(model_save_dir) - model.eval() - init(model) - return model - - -def get_old_adapter_config_strings(): - """Returns a list of strings representing old adapter configuration strings.""" - return [ - "pfeiffer", - "houlsby", - "pfeiffer+inv", - "houlsby+inv", - "parallel", - "scaled_parallel", - "compacter", - "compacter++", - "prefix_tuning", - "prefix_tuning_flat", - "lora", - "ia3", - "mam", - "unipelt", - ] - - -def get_new_adapter_config_strings(): - """Returns a list of strings representing new adapter configurations.""" - return [ - "seq_bn", - "double_seq_bn", - "seq_bn_inv", - "double_seq_bn_inv", - "par_bn", - "scaled_par_bn", - "compacter", - "compacter++", - "prefix_tuning", - "prefix_tuning_flat", - "lora", - "ia3", - "mam", - "unipelt", - ] - - -def get_model_names(): - """Returns a list of strings representing the testable model names.""" - return [ - "bart", - "albert", - "beit", - "bert", - "clip", - "deberta", - "debertaV2", - "distilbert", - "encoder_decoder", - "gpt2", - "gptj", - "mbart", - "roberta", - "t5", - "vit", - "xlm-r", - ] - - -def create_model(model_name: str, model_class: Any) -> Any: - """Creates and returns an instance of a specified test model. - Args: - model_name (str): Specifies which model to instantiate. - Raises: - NotImplementedError: If the specified model type is not implemented.""" - - if model_name == "bart": - bart_config = BartConfig( - d_model=16, - encoder_layers=2, - decoder_layers=2, - encoder_attention_heads=4, - decoder_attention_heads=4, - encoder_ffn_dim=4, - decoder_ffn_dim=4, - ) - model = model_class.from_config(bart_config) - - elif model_name == "albert": - albert_config = AlbertConfig( - embedding_size=16, - hidden_size=64, - num_hidden_layers=5, - num_attention_heads=4, - intermediate_size=37, - num_hidden_groups=2, - ) - model = model_class.from_config(albert_config) - - elif model_name == "beit": - beit_config = BeitConfig( - image_size=224, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - model = model_class.from_config(beit_config) - - elif model_name == "bert": - bert_config = BertConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - model = model_class.from_config(bert_config) - - elif model_name == "clip": - clip_config = CLIPVisionConfig( - image_size=30, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - model = CLIPVisionModelWithProjection(clip_config) - - elif model_name == "deberta": - deberta_config = DebertaConfig( - hidden_size=32, - num_hidden_layers=5, - num_attention_heads=4, - intermediate_size=37, - hidden_act="gelu", - relative_attention=True, - pos_att_type="p2c|c2p", - ) - model = model_class.from_config(deberta_config) - - elif model_name == "debertaV2": - debertaV2_config = DebertaV2Config( - hidden_size=32, - num_hidden_layers=5, - num_attention_heads=4, - intermediate_size=37, - hidden_act="gelu", - relative_attention=True, - pos_att_type="p2c|c2p", - ) - model = model_class.from_config(debertaV2_config) - - elif model_name == "distilbert": - distilbert_config = DistilBertConfig( - dim=32, - n_layers=4, - n_heads=4, - hidden_dim=37, - ) - model = model_class.from_config(distilbert_config) - - elif model_name == "encoder_decoder": - enc_dec_config = EncoderDecoderConfig.from_encoder_decoder_configs( - BertConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ), - BertConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - is_decoder=True, - add_cross_attention=True, - ), - ) - model = EncoderDecoderModel(enc_dec_config) - - elif model_name == "gpt2": - gpt2_config = GPT2Config( - n_embd=32, - n_layer=4, - n_head=4, - # set pad token to eos token - pad_token_id=50256, - ) - model = model_class.from_config(gpt2_config) - - elif model_name == "gptj": - gptj_config = GPTJConfig( - n_embd=32, - n_layer=4, - n_head=4, - rotary_dim=4, - # set pad token to eos token - pad_token_id=50256, - resid_pdrop=0.1, - ) - model = model_class.from_config(gptj_config) - - elif model_name == "mbart": - mbart_config = MBartConfig( - d_model=16, - encoder_layers=2, - decoder_layers=2, - encoder_attention_heads=4, - decoder_attention_heads=4, - encoder_ffn_dim=4, - decoder_ffn_dim=4, - vocab_size=250027, - ) - model = model_class.from_config(mbart_config) - - elif model_name == "roberta": - roberta_config = RobertaConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - vocab_size=50265, - ) - model = model_class.from_config(roberta_config) - - elif model_name == "t5": - t5_config = T5Config( - d_model=16, - num_layers=2, - num_decoder_layers=2, - num_heads=4, - d_ff=4, - d_kv=16 // 4, - tie_word_embeddings=False, - decoder_start_token_id=0, - ) - model = model_class.from_config(t5_config) - - elif model_name == "vit": - vit_config = ViTConfig( - image_size=224, - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - ) - model = model_class.from_config(vit_config) - - elif model_name == "xlm-r": - xlm_config = XLMRobertaConfig( - hidden_size=32, - num_hidden_layers=4, - num_attention_heads=4, - intermediate_size=37, - vocab_size=250002, - ) - model = model_class.from_config(xlm_config) - - else: - raise NotImplementedError("The specified model type is not implemented.") - - return model - - -def generate_dummy_data(model: str = ""): - """Generates dummy data for text and vision transformers. - Args: - model (str, optional): The name of the transformer model. Defaults to an empty string.""" - # For the vision models load an image and process it - if model == "beit" or model == "clip" or model == "vit": - url = "http://images.cocodataset.org/val2017/000000039769.jpg" - image = Image.open(requests.get(url, stream=True).raw) - if model == "beit": - processor = BeitImageProcessor.from_pretrained("microsoft/beit-base-patch16-224-pt22k") - if model == "clip": - processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32") - if model == "vit": - processor = ViTImageProcessor.from_pretrained("google/vit-base-patch16-224-in21k") - return processor(images=image, return_tensors="pt") - - # For text just create and process a dummy string. - else: - input_ids = [i for i in range(20)] - attention_mask = [1 for i in range(len(input_ids))] - input_ids_tensor = torch.tensor([input_ids]) - attention_mask_tensor = torch.tensor([attention_mask]) - if model == "t5" or model == "encoder_decoder": - return BatchEncoding( - { - "input_ids": input_ids_tensor, - "decoder_input_ids": input_ids_tensor, - "attention_mask": attention_mask_tensor, - } - ) - return BatchEncoding({"input_ids": input_ids_tensor, "attention_mask": attention_mask_tensor}) - - -def fix_seeds(seed: int = 42): - """Sets seeds manually. - Args: - seed (int, optional): The seed value to use for random number generation.""" - random.seed(seed) - np.random.seed(seed) - torch.manual_seed(seed) - torch.cuda.manual_seed_all(seed) - - -def decode_tuple(tuple_to_decode: tuple): - """Reconstructs a potentially nested tuple of type `torch.Tensor` as a nested list. - Args: - tuple_to_decode (tuple): The tuple to decode. - Returns: - list: A nested list containing the same values as the input tuple. - Raises: - TypeError: If the tuple holds values of different type than `tuple` or `torch.Tensor`.""" - inner_model_output = [] - if isinstance(tuple_to_decode, torch.Tensor): - return tuple_to_decode.cpu().numpy().astype(np.float32).tolist() - elif isinstance(tuple_to_decode, tuple): - for value in tuple_to_decode: - inner_model_output.append(decode_tuple(value)) - return inner_model_output - else: - raise TypeError( - "ERROR occured during decoding of output tensors! The tuple holds values of different type " - "than `tuple` or `torch.Tensor`." - ) - - -def convert_tensors_to_list(model_output: transformers.utils.ModelOutput): - """Converts the model output, which consists of a Tuple of Tensors to a Tuple of lists, while preserving the - original dimensions. The converted output is returned. - Args: - model_output (transformers.utils.ModelOutput): The model's output of the forward pass. - Returns: - The converted model output as a tuple of lists and the last hidden state tensor also seperately. - Raises: - TypeError: If the model output is not a tuple of tensors.""" - # Model ouputs can't be unpacked directly, convert to tuple first - model_output_tensors = model_output.to_tuple() - model_output_numpy = [] - - # Recursively search each tuple entry - for output_value in model_output_tensors: - if isinstance(output_value, torch.Tensor): - model_output_numpy.append(squeeze(output_value.cpu()).numpy().astype(np.float32).tolist()) - - elif isinstance(output_value, tuple): - model_output_numpy.append(decode_tuple(output_value)) - - return model_output_numpy, model_output_tensors[0].cpu() - - -def save_to_jsonl(model_output: list, adapter_config: str, file_path: str): - """Save model output to a JSON Lines (.jsonl) file as a dictionary. Each line represents one model, where the key is the model name (specified by adapter_config) - and the value is the model output stored as a list of lists. If an output for a model already exists, it is overwritten. - Args: - model_output (list): The model's output as a list. - adapter_config (str): The model name, serving as the key for the dictionary. - file_path (str): The path of the file to save the new entry.""" - # Check if the file exists - if os.path.exists(file_path): - # Load content from .jsonl file - with jsonlines.open(file_path, mode="r") as f: - data = [line for line in f] - # Create empty list if file doesn't exist - else: - data = [] - - # Update result with new one if unique_id already exists in the file - for i, line in enumerate(data): - if adapter_config in line: - data[i] = {adapter_config: model_output} - break - # Add new result to the list if unique_id doesn't exist in the file - else: - data.append({adapter_config: model_output}) - with jsonlines.open(file_path, mode="w") as writer: - writer.write_all(data) - - -def compare_lists_close(a: list, b: list, rtol=1e-05, atol=1e-08): - """Reimplementation of `allclose()` for lists.""" - # Check if list a and b are numbers - if isinstance(a, (int, float)) and isinstance(b, (int, float)): - bad = abs(a - b) <= atol + rtol * abs(b) - if not bad: - print(f"Old package = {a}, New package = {b}") - print(f"Value diff: {abs(a - b)}") - return bad - - # Check if a and b are lists - if isinstance(a, list) and isinstance(b, list): - # Check if lenghts of the lists are equal - if len(a) != len(b): - return False - - for i in range(len(a)): - if not compare_lists_close(a[i], b[i], rtol=rtol, atol=atol): - return False - - return True - # If the inputs are not compatible types - return False - - -def restore_from_jsonl(config: str, file_path: str) -> Union[int, list]: - """Restores the model output from a JSON Lines (.jsonl) file as a list of lists for the specified model. - Args: - config (str): Name of the adapter config to restore the output for. - file_path (str): Path to the .jsonl file containing the model outputs. - Returns: - A list of lists representing the model output for the specified model. - Returns -1 if there is no output for the specified model in the file.""" - # Check if the file exists - if os.path.exists(file_path): - # Load content from .jsonl file - with jsonlines.open(file_path, mode="r") as f: - data = [line for line in f] - else: - raise FileExistsError(f"There exists no file at the specified path. \npath:{file_path}") - # Get result of specified model - for i, line in enumerate(data): - if config in line: - return data[i][config] - else: - print(f"File does not contain an output for the model {config}.") - return -1 diff --git a/adapters/utils/back_comp/compare.sh b/adapters/utils/back_comp/compare.sh deleted file mode 100644 index b4236192..00000000 --- a/adapters/utils/back_comp/compare.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -# This script performs backward compatibility tests by comparing adapter versions of different branches. -# The goal is to check if the model output produced under the same conditions is identical between branches. -# To do this, we need to determine a directory path to save the reference output produced by the current branch. -# It's important that this directory is outside the adapters repository to remain accessible when switching branches. - -# Select a directory to save the reference outputs (must be outside the repository!) -SaveDir="" - -# Now, determine the branch you want to compare against. -Branch= - -# After setting these variables, you can execute this script from the back_comp directory using the command: `sh compare.sh` - - -cd .. -pip install -e ".[dev]" # # Ensure that the adapters version of the current branch is installed -cd back_comp - -echo "Creating reference outputs..." -python create_outputs.py --path="$SaveDir" -cd .. - - -git checkout $Branch # Switch branch -pip install -e ".[dev]" # Install the other adapter version - -cd back_comp -echo "Comparing to reference outputs..." -python compare_outputs.py --path="$SaveDir" \ No newline at end of file diff --git a/adapters/utils/back_comp/compare_outputs.py b/adapters/utils/back_comp/compare_outputs.py deleted file mode 100644 index 0775bf1b..00000000 --- a/adapters/utils/back_comp/compare_outputs.py +++ /dev/null @@ -1,43 +0,0 @@ -import argparse -import os - -from Utils import ( - compare_lists_close, - convert_tensors_to_list, - create_output, - fix_seeds, - get_model_names, - get_new_adapter_config_strings, - load_model, - restore_from_jsonl, -) - - -parser = argparse.ArgumentParser() -parser.add_argument("--path", type=str) -args = parser.parse_args() - - -# Create the root path -base_dir = os.path.join(args.path, "model_outputs") -fix_seeds() - -for model_name in get_model_names(): - # Load the reference model - print(f"Model = {model_name}") - model_dir = os.path.join(base_dir, model_name) - model = load_model(model_name, os.path.join(model_dir, "model_weights")) - - for adapter_config in get_new_adapter_config_strings(): - # Create a new model output - adapter_name = model.load_adapter(os.path.join(model_dir, "weights_" + adapter_config)) - model.set_active_adapters(adapter_name) - model_output = create_output(model, model_name) - - # Compare the model output to the reference output - model_output_n, last_hidden_state = convert_tensors_to_list(model_output) - ref_output = restore_from_jsonl(config=adapter_config, file_path=os.path.join(model_dir, "output.jsonl")) - is_equal = compare_lists_close(ref_output, model_output_n, rtol=1e-05, atol=1e-08) - print(f"Adapter: {adapter_config} -> {is_equal}") - - model.delete_adapter(adapter_name) diff --git a/adapters/utils/back_comp/create_outputs.py b/adapters/utils/back_comp/create_outputs.py deleted file mode 100644 index 8476b574..00000000 --- a/adapters/utils/back_comp/create_outputs.py +++ /dev/null @@ -1,64 +0,0 @@ -import argparse -import os - -from adapters import AutoAdapterModel, CompacterConfig, CompacterPlusPlusConfig -from Utils import ( - convert_tensors_to_list, - create_model, - create_output, - fix_seeds, - get_model_names, - get_new_adapter_config_strings, - load_model, - save_to_jsonl, -) - - -parser = argparse.ArgumentParser() -parser.add_argument("--path", type=str) -args = parser.parse_args() - - -# Create the root path -base_dir = os.path.join(args.path, "model_outputs") -fix_seeds() - -for model_name in get_model_names(): - print(f"Model = {model_name}") - # Create the dir to contain model- and adapter-weights and model outputs - model_dir = os.path.join(base_dir, model_name) - os.makedirs(model_dir, exist_ok=True) - - model = create_model(model_name=model_name, model_class=AutoAdapterModel) - # Save the model weights to reuse later - model_save_dir = os.path.join(model_dir, "model_weights") - os.makedirs(model_save_dir, exist_ok=True) - model.save_pretrained(model_save_dir, from_pt=True) # save the base model - - for config in get_new_adapter_config_strings(): - # Load the reference model - model = load_model(model_name, os.path.join(model_dir, "model_weights")) - - # Add the adapter which is tested - # For the compacter style adapters the phm_dim and reduction factor are set manually to ensure that the bottleneck dimension is divisible by phm_dim - if config == "compacter++": - adapter_config = CompacterPlusPlusConfig(phm_dim=2, reduction_factor=8) - elif config == "compacter": - adapter_config = CompacterConfig(phm_dim=2, reduction_factor=8) - else: - adapter_config = config - adapter_name = "weights_" + config - model.add_adapter(adapter_name, config=adapter_config) - model.set_active_adapters(adapter_name) - - model_output = create_output(model, model_name) - - # Process and save the output - model_output_n, last_hidden_state = convert_tensors_to_list(model_output) - save_to_jsonl(model_output_n, config, os.path.join(model_dir, "output.jsonl")) - - # Save the adapter weights - adapter_save_dir = os.path.join(model_dir, adapter_name) - os.makedirs(adapter_save_dir, exist_ok=True) - model.save_adapter(save_directory=adapter_save_dir, adapter_name=adapter_name) - model.delete_adapter(adapter_name) diff --git a/adapters/utils/check_inits.py b/adapters/utils/check_inits.py deleted file mode 100644 index 57f60075..00000000 --- a/adapters/utils/check_inits.py +++ /dev/null @@ -1,13 +0,0 @@ -# flake8: noqa: E402 -import sys -from os.path import abspath, dirname, join - - -sys.path.insert(1, abspath(join(dirname(dirname(__file__)), "hf_transformers"))) - -import utils -from utils.check_inits import check_all_inits - - -utils.check_inits.PATH_TO_TRANSFORMERS = "src/adapters" -check_all_inits() diff --git a/adapters/utils/convert_xmod_checkpoint.py b/adapters/utils/convert_xmod_checkpoint.py deleted file mode 100644 index 30ca0ede..00000000 --- a/adapters/utils/convert_xmod_checkpoint.py +++ /dev/null @@ -1,85 +0,0 @@ -""" -This script can be used to convert an Xmod checkpoints (including adapters) from the HF format to the Adapters format. -""" -import argparse -import os -import re - -import torch - -from adapters import SeqBnConfig, XmodAdapterModel -from transformers import XmodModel - - -def convert_xmod_checkpoint(model_name: str, output_dir: str): - # Instantiate new model - orig_model = XmodModel.from_pretrained(model_name) - model_config = orig_model.config - new_model = XmodAdapterModel.from_pretrained(model_name) - for lang in model_config.languages: - adapter_config = SeqBnConfig( - reduction_factor=model_config.adapter_reduction_factor, - # selection between (shared) adapter LN and original LN is done in XmodOutput - original_ln_before=model_config.adapter_layer_norm or model_config.adapter_reuse_layer_norm, - original_ln_after=False, - residual_before_ln=False if model_config.ln_before_adapter else "post_add", - non_linearity=model_config.hidden_act, - ) - new_model.add_adapter(lang, adapter_config) - - # Convert state dict - new_state_dict = {} - for k, v in orig_model.state_dict().items(): - if match := re.match(r"(.+)\.adapter_modules\.(?P\w+)\.(?P\w+)\.(.+)", k): - prefix, suffix = match.group(1, 4) - lang = match.group("lang") - layer = match.group("layer") - if layer == "dense1": - new_layer = "adapter_down.0" - elif layer == "dense2": - new_layer = "adapter_up" - else: - raise ValueError(f"Unknown layer {layer}") - new_k = f"{new_model.base_model_prefix}.{prefix}.adapters.{lang}.{new_layer}.{suffix}" - new_state_dict[new_k] = v - else: - new_state_dict[f"{new_model.base_model_prefix}.{k}"] = v - missing_keys, unexpected_keys = new_model.load_state_dict(new_state_dict, strict=False) - print("Missing keys:", missing_keys) - print("Unexpected keys:", unexpected_keys) - - # Check equal outputs - orig_model.eval() - new_model.eval() - inputs = orig_model.dummy_inputs - for lang in model_config.languages: - orig_model.set_default_language(lang) - orig_outputs = orig_model(**inputs) - new_model.set_active_adapters(lang) - new_outputs = new_model(**inputs) - all_close = torch.allclose(orig_outputs.last_hidden_state, new_outputs.last_hidden_state) - check_str = "OK" if all_close else "FAIL" - print(f"{lang:>6}: {check_str}") - - # Save new model & all adapters - os.makedirs(output_dir, exist_ok=True) - new_model.save_all_adapters(output_dir) - # Remove all adapters except for English - for lang in model_config.languages: - if lang != "en_XX": - new_model.delete_adapter(lang) - new_model.save_pretrained(output_dir) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument("-n", "--model_name", type=str, required=True) - parser.add_argument("-o", "--output_dir", type=str, required=True) - - args = parser.parse_args() - - convert_xmod_checkpoint(args.model_name, args.output_dir) - - -if __name__ == "__main__": - main() diff --git a/adapters/utils/custom_init_isort.py b/adapters/utils/custom_init_isort.py deleted file mode 100644 index 507363e1..00000000 --- a/adapters/utils/custom_init_isort.py +++ /dev/null @@ -1,21 +0,0 @@ -# flake8: noqa: E402 -import argparse -import sys -from os.path import abspath, dirname, join - - -sys.path.insert(1, abspath(join(dirname(dirname(__file__)), "hf_transformers"))) - -import utils -from utils.custom_init_isort import sort_imports_in_all_inits - - -utils.custom_init_isort.PATH_TO_TRANSFORMERS = "src/adapters" - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument("--check_only", action="store_true", help="Whether to only check or fix style.") - args = parser.parse_args() - - sort_imports_in_all_inits(check_only=args.check_only) diff --git a/adapters/utils/sort_auto_mappings.py b/adapters/utils/sort_auto_mappings.py deleted file mode 100644 index dee148b7..00000000 --- a/adapters/utils/sort_auto_mappings.py +++ /dev/null @@ -1,21 +0,0 @@ -# flake8: noqa: E402 -import argparse -import sys -from os.path import abspath, dirname, join - - -sys.path.insert(1, abspath(join(dirname(dirname(__file__)), "hf_transformers"))) - -import utils -from utils.sort_auto_mappings import sort_all_auto_mappings - - -utils.sort_auto_mappings.PATH_TO_AUTO_MODULE = "src/adapters/models/auto" - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument("--check_only", action="store_true", help="Whether to only check or fix style.") - args = parser.parse_args() - - sort_all_auto_mappings(not args.check_only) diff --git a/system-fig.png b/configs/system-fig.png similarity index 100% rename from system-fig.png rename to configs/system-fig.png diff --git a/data/extra_langs.csv b/data/extra_langs.csv deleted file mode 100644 index 1c143b86..00000000 --- a/data/extra_langs.csv +++ /dev/null @@ -1 +0,0 @@ -ende,hineng,msaea,nepeng,spaeng \ No newline at end of file diff --git a/data/lyrics_langs.csv b/data/lyrics_langs.csv deleted file mode 100644 index 59e0ae22..00000000 --- a/data/lyrics_langs.csv +++ /dev/null @@ -1 +0,0 @@ -en,hr,es,it,yo,sn,fr,so,la,tl,nb,nl,de,eu,cy,ko,ja,sw,vi,st,sv,ts,pl,et,pt,ga,fi,zu,ca,mi,eo,tn,da,tr,id,is,zh,nn,xh,sl,sq \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 52da8bb4..dc004891 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,4 +18,5 @@ pandarallel cohere replicate onnx -onnxruntime \ No newline at end of file +onnxruntime +torchinfo \ No newline at end of file diff --git a/setup.py b/setup.py index 2b2c01b0..49491300 100644 --- a/setup.py +++ b/setup.py @@ -9,14 +9,13 @@ author_email="markus.frohmann@gmail.com", install_requires=[ "onnxruntime>=1.13.1", - "transformers>=4.22.2,<4.40", + "transformers>=4.22.2", "numpy>=1.0,<2.0", "scikit-learn>=1", "tqdm", "skops", "pandas>=1", "cached_property", # for Py37 - "torchinfo", "mosestokenizer", "adapters==0.2.1" ], diff --git a/test_sat.py b/test_sat.py index dd65e2cd..4e813c0c 100644 --- a/test_sat.py +++ b/test_sat.py @@ -1,88 +1,3 @@ # noqa: E501 from wtpsplit import SaT - -# def test_split_ort(): -# sat = SaT("segment-any-text/sat-3l", ort_providers=["CPUExecutionProvider"]) - -# splits = sat.split("This is a test sentence This is another test sentence.", threshold=0.005) -# assert splits == ["This is a test sentence ", "This is another test sentence."] - - -def test_split_torch(): - sat = SaT("segment-any-text/sat-3l", hub_prefix=None) - - splits = sat.split("This is a test sentence This is another test sentence.", threshold=0.025) - assert splits == ["This is a test sentence ", "This is another test sentence."] - - -def test_split_torch_sm(): - sat = SaT("segment-any-text/sat-12l-sm", hub_prefix=None) - - splits = sat.split("This is a test sentence. This is another test sentence.", threshold=0.25) - assert splits == ["This is a test sentence. ", "This is another test sentence."] - - -def test_move_device(): - sat = SaT("segment-any-text/sat-3l", hub_prefix=None) - sat.half().to("cpu") - - -def test_strip_whitespace(): - sat = SaT("segment-any-text/sat-3l", hub_prefix=None) - - splits = sat.split( - "This is a test sentence This is another test sentence. ", strip_whitespace=True, threshold=0.025 - ) - assert splits == ["This is a test sentence", "This is another test sentence."] - - -def test_split_noisy(): - sat = SaT("segment-any-text/sat-12l-sm", hub_prefix=None) - - splits = sat.split("this is a sentence :) this is another sentence lol") - assert splits == ["this is a sentence :) ", "this is another sentence lol"] - - -def test_split_batched(): - sat = SaT("segment-any-text/sat-3l", hub_prefix=None) - - splits = list(sat.split(["Paragraph-A Paragraph-B", "Paragraph-C100 Paragraph-D"])) - - assert splits == [ - ["Paragraph-A ", "Paragraph-B"], - ["Paragraph-C100 ", "Paragraph-D"], - ] - - -def test_split_lora(): - ud = SaT("segment-any-text/sat-3l", hub_prefix=None, style_or_domain="ud", language="en") - opus = SaT("segment-any-text/sat-3l", hub_prefix=None, style_or_domain="opus100", language="en") - ersatz = SaT("segment-any-text/sat-3l", hub_prefix=None, style_or_domain="ersatz", language="en") - - text = "’I couldn’t help it,’ said Five, in a sulky tone; ’Seven jogged my elbow.’ | On which Seven looked up and said, ’That’s right, Five! Always lay the blame (...)!’" - - splits_ud = ud.split(text) - splits_opus100 = opus.split(text) - splits_ersatz = ersatz.split(text) - - assert splits_ud != splits_opus100 != splits_ersatz - - -def test_split_paragraphs(): - sat = SaT("segment-any-text/sat-3l", hub_prefix=None) - - text = " ".join( - """ -Text segmentation is the process of dividing written text into meaningful units, such as words, sentences, or topics. The term applies both to mental processes used by humans when reading text, and to artificial processes implemented in computers, which are the subject of natural language processing. The problem is non-trivial, because while some written languages have explicit word boundary markers, such as the word spaces of written English and the distinctive initial, medial and final letter shapes of Arabic, such signals are sometimes ambiguous and not present in all written languages. -Daniel Wroughton Craig CMG (born 2 March 1968) is an English actor who gained international fame by playing the fictional secret agent James Bond for five installments in the film series, from Casino Royale (2006) up to No Time to Die (2021). -""".strip().split() - ) - - splits = sat.split(text, do_paragraph_segmentation=True) - - paragraph1 = "".join(splits[0]) - paragraph2 = "".join(splits[1]) - - assert paragraph1.startswith("Text segmentation is") - assert paragraph2.startswith("Daniel Wroughton Craig CMG (born 2 March 1968) is") diff --git a/test_wtp.py b/test_wtp.py index 495b6255..f2da86be 100644 --- a/test_wtp.py +++ b/test_wtp.py @@ -1,5 +1,91 @@ # noqa: E501 -from wtpsplit import WtP +from wtpsplit import WtP, SaT + + +# def test_split_ort(): +# sat = SaT("segment-any-text/sat-3l", ort_providers=["CPUExecutionProvider"]) + +# splits = sat.split("This is a test sentence This is another test sentence.", threshold=0.005) +# assert splits == ["This is a test sentence ", "This is another test sentence."] + + +def test_split_torch(): + sat = SaT("segment-any-text/sat-3l", hub_prefix=None) + + splits = sat.split("This is a test sentence This is another test sentence.", threshold=0.025) + assert splits == ["This is a test sentence ", "This is another test sentence."] + + +def test_split_torch_sm(): + sat = SaT("segment-any-text/sat-12l-sm", hub_prefix=None) + + splits = sat.split("This is a test sentence. This is another test sentence.", threshold=0.25) + assert splits == ["This is a test sentence. ", "This is another test sentence."] + + +def test_move_device(): + sat = SaT("segment-any-text/sat-3l", hub_prefix=None) + sat.half().to("cpu") + + +def test_strip_whitespace(): + sat = SaT("segment-any-text/sat-3l", hub_prefix=None) + + splits = sat.split( + "This is a test sentence This is another test sentence. ", strip_whitespace=True, threshold=0.025 + ) + assert splits == ["This is a test sentence", "This is another test sentence."] + + +def test_split_noisy(): + sat = SaT("segment-any-text/sat-12l-sm", hub_prefix=None) + + splits = sat.split("this is a sentence :) this is another sentence lol") + assert splits == ["this is a sentence :) ", "this is another sentence lol"] + + +def test_split_batched(): + sat = SaT("segment-any-text/sat-3l", hub_prefix=None) + + splits = list(sat.split(["Paragraph-A Paragraph-B", "Paragraph-C100 Paragraph-D"])) + + assert splits == [ + ["Paragraph-A ", "Paragraph-B"], + ["Paragraph-C100 ", "Paragraph-D"], + ] + + +def test_split_lora(): + ud = SaT("segment-any-text/sat-3l", hub_prefix=None, style_or_domain="ud", language="en") + opus = SaT("segment-any-text/sat-3l", hub_prefix=None, style_or_domain="opus100", language="en") + ersatz = SaT("segment-any-text/sat-3l", hub_prefix=None, style_or_domain="ersatz", language="en") + + text = "’I couldn’t help it,’ said Five, in a sulky tone; ’Seven jogged my elbow.’ | On which Seven looked up and said, ’That’s right, Five! Always lay the blame (...)!’" + + splits_ud = ud.split(text) + splits_opus100 = opus.split(text) + splits_ersatz = ersatz.split(text) + + assert splits_ud != splits_opus100 != splits_ersatz + + +def test_split_paragraphs(): + sat = SaT("segment-any-text/sat-3l", hub_prefix=None) + + text = " ".join( + """ +Text segmentation is the process of dividing written text into meaningful units, such as words, sentences, or topics. The term applies both to mental processes used by humans when reading text, and to artificial processes implemented in computers, which are the subject of natural language processing. The problem is non-trivial, because while some written languages have explicit word boundary markers, such as the word spaces of written English and the distinctive initial, medial and final letter shapes of Arabic, such signals are sometimes ambiguous and not present in all written languages. +Daniel Wroughton Craig CMG (born 2 March 1968) is an English actor who gained international fame by playing the fictional secret agent James Bond for five installments in the film series, from Casino Royale (2006) up to No Time to Die (2021). +""".strip().split() + ) + + splits = sat.split(text, do_paragraph_segmentation=True) + + paragraph1 = "".join(splits[0]) + paragraph2 = "".join(splits[1]) + + assert paragraph1.startswith("Text segmentation is") + assert paragraph2.startswith("Daniel Wroughton Craig CMG (born 2 March 1968) is") def test_split_ort(): diff --git a/wtpsplit/__init__.py b/wtpsplit/__init__.py index acdd4b42..94f88c0a 100644 --- a/wtpsplit/__init__.py +++ b/wtpsplit/__init__.py @@ -13,6 +13,9 @@ from transformers import AutoConfig, AutoModelForTokenClassification from transformers.utils.hub import cached_file +import adapters # noqa +from adapters.models import MODEL_MIXIN_MAPPING +from adapters.models.bert.mixin_bert import BertModelAdaptersMixin from wtpsplit.evaluation import token_to_char_probs from wtpsplit.extract import BertCharORTWrapper, PyTorchWrapper, SaTORTWrapper, extract from wtpsplit.utils import Constants, indices_to_sentences, sigmoid @@ -482,10 +485,7 @@ def __init__( if (style_or_domain and not language) or (language and not style_or_domain): raise ValueError("Please specify both language and style_or_domain!") if style_or_domain and language: - import adapters # noqa # monkey patch mixin to avoid forking whole adapters library - from adapters.models import MODEL_MIXIN_MAPPING - from adapters.models.bert.mixin_bert import BertModelAdaptersMixin MODEL_MIXIN_MAPPING["SubwordXLMRobertaModel"] = BertModelAdaptersMixin model_type = self.model.model.config.model_type # adapters need xlm-roberta as model type. diff --git a/wtpsplit/punctuation_xlmr.txt b/wtpsplit/punctuation_xlmr.txt deleted file mode 100644 index 93cf26ab..00000000 --- a/wtpsplit/punctuation_xlmr.txt +++ /dev/null @@ -1,108 +0,0 @@ -! -" -# -$ -% -& -' -( -) -* -+ -, -- -. -/ -: -; -< -= -> -? -@ -[ -\ -] -^ -_ -` -{ -| -} -~ -¡ -£ -¤ -§ -© -« -¬ -® -° -± -· -» -¿ -÷ -՛ -՝ -՞ -։ -־ -׳ -، -؛ -؟ -۔ -। -॥ -၊ -။ -၌ -၍ -၎ -၏ -፡ -። -፣ -፤ -፥ -។ -៕ -៖ -– -— -‘ -’ -‚ -“ -” -„ -• -′ -‹ -› -€ -↑ -→ -⇌ -∑ -√ -╛ -□ -▬ -☎ -➖ -、 -。 -《 -》 -「 -」 -『 -』 -【 -】 -・ -~ -💘 diff --git a/wtpsplit/summary_plot.py b/wtpsplit/summary_plot.py deleted file mode 100644 index 7742565f..00000000 --- a/wtpsplit/summary_plot.py +++ /dev/null @@ -1,157 +0,0 @@ -import pandas as pd -import plotly.graph_objects as go -import json - -FILES = [ - # CS - # "intrinsic/xlmr-normal-p-v3_b512_s64_u0.01_extra-langs.json", - # "intrinsic/xlmr-normal-6l-p-v3_b512_s64_u0.01_extra-langs.json", - # "intrinsic/xlmr-12l-v3_b512_s64_u0.01_extra-langs.json", - # "intrinsic/xlmr-3l-v3_adapter_rf32_ep30_v2_np_b512_s64_u0.1_extra-langs.json", - # "intrinsic/xlmr-6l-v3_adapter_rf32_ep30_v2_np_b512_s64_u0.1_extra-langs.json", - # "intrinsic/xlmr-12l-v3_adapter_rf32_ep30_v2_np_b512_s64_u0.1_extra-langs.json", - # "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-3L-256BS-UD-OPUS-TED_b512_s64_u0.01_extra-langs_fix.json", - # "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-6L-256BS-UD-OPUS-TED_b512_s64_u0.01_extra-langs_fix.json", - # "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-12L-256BS-UD-OPUS-TED_b512_s64_u0.01_extra-langs_fix.json", - # TED - # "intrinsic/xlmr-normal-p-v3_b512_s64_u0.01_ted.json", - # "intrinsic/xlmr-normal-6l-p-v3_b512_s64_u0.01_ted.json", - # "intrinsic/xlmr-12l-v3_look60_b512_s64_u0.01_ted.json", - "intrinsic/xlmr-normal-p-v3_b512_s64_u0.01.json", - "intrinsic/xlmr-normal-6l-p-v3_b512+s64_intrinsic_results_u0.01.json", - "intrinsic/xlmr-12l-v3_b512_s64_u0.01.json", - "intrinsic/xlmr-3l-v3_adapter_rf32_ep30_v2_np_b512_s64_u0.1.json", - "intrinsic/xlmr-6l-v3_adapter_rf32_ep20_v2_100-1k-10k_b512_s64_u0.1.json", - "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-3L-256BS-UD-OPUS-TED_b512_s64_u0.01_fix.json", - "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-6L-256BS-UD-OPUS-TED_b512_s64_u0.01_fix.json", - "intrinsic/xlmr-multilingual-sentence-segmentation-09-04-12L-256BS-UD-OPUS-TED_b512_s64_u0.01_fix.json", - "intrinsic/xlmr-3l-v3-igor-mixture_adapter_rf32_ep30_v2_b512_s64_u0.1.json", - "intrinsic/xlmr-6l-v3-igor-mixture_adapter_rf32_ep30_v2_b512_s64_u0.1.json", - # shared task subset - # "intrinsic/xlmr-12l-v3_adapter_rf32_ep30_v2_np_CORRUPT_b512_s64_u0.1_TED.json", - # "intrinsic/xlmr-12l-v3-igor-mixture_adapter_rf32_ep30_v2_np_CORRUPT_b512_s64_u0.1_TED.json", -] -NAME = "test" - - -def darken_color(color, factor): - """Darken a given RGB color by a specified factor.""" - r, g, b, a = color - r = max(int(r * factor), 0) - g = max(int(g * factor), 0) - b = max(int(b * factor), 0) - return (r, g, b, a) - - -def plot_violin_from_json(files, name): - # Prepare data - data = {"score": [], "metric": [], "file": [], "x": [], "lang": [], "dataset": []} - spacing = 1.0 # Space between groups of metrics - violin_width = 0.5 / len(files) # Width of each violin - - # Base colors for each metric - base_colors = {"u": (0, 123, 255, 0.6), "t": (40, 167, 69, 0.6), "punct": (255, 193, 7, 0.6)} - color_darkening_factor = 0.8 # Factor to darken color for each subsequent file - - # Compute x positions and prepare colors for each file within each metric group - x_positions = {} - colors = {} - for i, metric in enumerate(["u", "t", "punct"]): - x_positions[metric] = {} - colors[metric] = {} - base_color = base_colors[metric] - for j, file in enumerate(files): - x_positions[metric][file] = i * spacing + spacing / (len(files) + 1) * (j + 1) - colors[metric][file] = "rgba" + str(darken_color(base_color, color_darkening_factor**j)) - - for file in files: - file_path = ".cache/" + file if not file.startswith("evaluation") else file - with open(file_path, "r") as f: - print(file_path) - content = json.load(f) - for lang, scores in content.items(): - for dataset, values in scores.items(): - for metric in ["u", "t", "punct"]: - # if not (lang in ["en", "de", "fr", "it"] and dataset == "ted2020"): - # continue - if dataset != "ersatz": - continue - data["score"].append(values[metric] if values[metric] is not None else 0.0) - data["metric"].append(metric) - data["file"].append(file.split("/")[-1]) # Use file base name without extension for legend - data["x"].append(x_positions[metric][file]) # Use computed x position - data["lang"].append(lang) - data["dataset"].append(dataset) - - # Convert to DataFrame - df = pd.DataFrame(data) - - # Create violin plots - fig = go.Figure() - for metric in ["u", "t", "punct"]: - metric_df = df[df["metric"] == metric] - for file in files: - file_name = file.split("/")[-1] - show_name = file_name.replace("xlmr-normal-", "").replace("_intrinsic_results_u0.01.json", "") - file_df = metric_df[metric_df["file"] == file_name] - if not file_df.empty: - fig.add_trace( - go.Violin( - y=file_df["score"], - x=file_df["x"], - name=show_name if metric == "u" else "", # Only show legend for 'u' to avoid duplicates - legendgroup=show_name, - line_color=colors[metric][file], - box_visible=True, - meanline_visible=True, - width=violin_width, - points="all", - hovertext=file_df["lang"] + " " + file_df["dataset"] + "
" + file_df["score"].astype(str), - hovertemplate=show_name + "
%{hovertext}", - # hoveron="points+violins+kde" - ) - ) - - # Update layout - # Calculate the center positions for each metric group - center_positions = [sum(values.values()) / len(values) for key, values in x_positions.items()] - fig.update_layout( - title=name, - xaxis=dict(title="Metric", tickvals=center_positions, ticktext=["u", "t", "punct"]), - yaxis_title="Scores", - violingap=0, - violingroupgap=0, - violinmode="overlay", - paper_bgcolor="white", - plot_bgcolor="white", - font=dict(color="black", size=14), - title_x=0.5, - legend_title_text="File", - xaxis_showgrid=False, - yaxis_showgrid=True, - xaxis_zeroline=False, - yaxis_zeroline=False, - margin=dict(l=40, r=40, t=40, b=40), - ) - - # Update axes lines - fig.update_xaxes(showline=True, linewidth=1, linecolor="gray") - fig.update_yaxes(showline=True, linewidth=1, linecolor="gray", dtick=0.1, range=[0.01, 1.09]) - - # Simplify and move legend to the top - fig.update_layout(legend=dict(orientation="h", yanchor="bottom", y=1.02, xanchor="right", x=1)) - - fig.show() - - # Save the figure as HTML - html_filename = f"{name}.html" - fig.write_html(html_filename) - print(f"Plot saved as {html_filename}") - - # Save the figure as PNG - # png_filename = f"{name}.png" - # fig.write_image(png_filename) - # print(f"Plot saved as {png_filename}") - - -plot_violin_from_json(FILES, NAME) diff --git a/utils/clean_tweets.py b/wtpsplit/utils/clean_tweets.py similarity index 100% rename from utils/clean_tweets.py rename to wtpsplit/utils/clean_tweets.py diff --git a/utils/download_spacy.py b/wtpsplit/utils/download_spacy.py similarity index 100% rename from utils/download_spacy.py rename to wtpsplit/utils/download_spacy.py diff --git a/utils/remove_unks.py b/wtpsplit/utils/remove_unks.py similarity index 100% rename from utils/remove_unks.py rename to wtpsplit/utils/remove_unks.py From 8248ec56a459435c82631a449aeab9d5c39918dd Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 13:43:46 +0200 Subject: [PATCH 255/262] more rm --- .github/workflows/python.yml | 3 +- scripts/find_common_punctuation.py | 51 ---------------------- scripts/find_common_punctuation_xlmr.py | 58 ------------------------- test_wtp.py => test.py | 0 test_sat.py | 3 -- 5 files changed, 1 insertion(+), 114 deletions(-) delete mode 100644 scripts/find_common_punctuation.py delete mode 100644 scripts/find_common_punctuation_xlmr.py rename test_wtp.py => test.py (100%) delete mode 100644 test_sat.py diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 93a04a4d..11f1f4a2 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -30,5 +30,4 @@ jobs: ruff --output-format=github --target-version=py37 . - name: Test with pytest run: | - pytest test_wtp.py - pytest test_sat.py + pytest test.py diff --git a/scripts/find_common_punctuation.py b/scripts/find_common_punctuation.py deleted file mode 100644 index 2aea44d3..00000000 --- a/scripts/find_common_punctuation.py +++ /dev/null @@ -1,51 +0,0 @@ -from collections import Counter -from transformers import HfArgumentParser -from dataclasses import dataclass -from datasets import load_dataset -import unicodedata -import json -import pickle -import pandas as pd -import os -from pathlib import Path - - -ROOT_DIR = Path(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) - - -LANGINFO = pd.read_csv(os.path.join(ROOT_DIR, "data", "language_info.csv"), index_col=0) - - -@dataclass -class Args: - file: str = "data/sentence/train.parquet" - txt_output: str = "data/punctuation.txt" - json_output: str = "data/punctuation.json" - counter_output: str = "data/punctuation_counter.pkl" - top_n: int = 30 - - -all_chars = [chr(c) for c in range(0x110000)] -punctuation_chars = set(c for c in all_chars if "S" in unicodedata.category(c) or "P" in unicodedata.category(c)) - -if __name__ == "__main__": - (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() - - dset = load_dataset("parquet", data_files=args.file, split="train") - - counters = {lang_code: Counter() for lang_code in LANGINFO.index} - - for i in range(len(dset)): - sample = dset[i] - - counters[sample["lang"]].update(c for c in sample["text"] if c in punctuation_chars) - - punctuation_to_include = sorted({x[0] for c in counters.values() for x in c.most_common(args.top_n)}) - - json.dump( - {key: [x[0] for x in c.most_common(args.top_n)] for key, c in counters.items()}, - open(args.json_output, "w"), - indent=4, - ) - pickle.dump(counters, open(args.counter_output, "wb")) - open(args.txt_output, "w").writelines([p + "\n" for p in punctuation_to_include]) diff --git a/scripts/find_common_punctuation_xlmr.py b/scripts/find_common_punctuation_xlmr.py deleted file mode 100644 index c7f00f05..00000000 --- a/scripts/find_common_punctuation_xlmr.py +++ /dev/null @@ -1,58 +0,0 @@ -import json -import os -import re -import unicodedata -from collections import Counter -from dataclasses import dataclass -from pathlib import Path - -import pandas as pd -from datasets import load_dataset -from transformers import HfArgumentParser, XLMRobertaTokenizer - -ROOT_DIR = Path(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) -LANGINFO = pd.read_csv(os.path.join(ROOT_DIR, "data", "language_info.csv"), index_col=0) - - -@dataclass -class Args: - file: str = "data/sentence/valid.parquet" - txt_output: str = "data/punctuation_xlmr" - json_output: str = "data/punctuation_xlmr" - top_n: int = 25 - include_whitespace: bool = True - - -tokenizer = XLMRobertaTokenizer.from_pretrained("xlm-roberta-base") - -punctuation_pattern = re.compile(r"^▁+[^\w\s]+?$") - - -def is_punctuation(token, include_whitespace=False): - # check if token matches the regular expression - if punctuation_pattern.match(token): - return include_whitespace - # fallback - return all("P" in unicodedata.category(ch) for ch in token) or all("S" in unicodedata.category(ch) for ch in token) - - -if __name__ == "__main__": - (args,) = HfArgumentParser([Args]).parse_args_into_dataclasses() - dset = load_dataset("parquet", data_files=args.file, split="train") - counters = {lang_code: Counter() for lang_code in LANGINFO.index} - - for i in range(len(dset)): - sample = dset[i] - tokens = tokenizer.tokenize(sample["text"]) - counters[sample["lang"]].update(token for token in tokens if is_punctuation(token, args.include_whitespace)) - - punctuation_to_include = sorted({x[0] for c in counters.values() for x in c.most_common(args.top_n)}) - - json_output = f"{args.json_output}_top{args.top_n}_{'with' if args.include_whitespace else 'without'}.json" - txt_output = f"{args.txt_output}_top{args.top_n}_{'with' if args.include_whitespace else 'without'}.txt" - json.dump( - {key: [x[0] for x in c.most_common(args.top_n)] for key, c in counters.items()}, - open(json_output, "w"), - indent=4, - ) - open(txt_output, "w").writelines([p + "\n" for p in punctuation_to_include]) diff --git a/test_wtp.py b/test.py similarity index 100% rename from test_wtp.py rename to test.py diff --git a/test_sat.py b/test_sat.py deleted file mode 100644 index 4e813c0c..00000000 --- a/test_sat.py +++ /dev/null @@ -1,3 +0,0 @@ -# noqa: E501 -from wtpsplit import SaT - From af0963a4a331a31285e47844254f2cdbc3714308 Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 13:48:49 +0200 Subject: [PATCH 256/262] fix duplicates --- test.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/test.py b/test.py index f2da86be..40d44a0f 100644 --- a/test.py +++ b/test.py @@ -88,33 +88,33 @@ def test_split_paragraphs(): assert paragraph2.startswith("Daniel Wroughton Craig CMG (born 2 March 1968) is") -def test_split_ort(): +def test_split_ort_wtp(): wtp = WtP("wtp-bert-mini", ort_providers=["CPUExecutionProvider"]) splits = wtp.split("This is a test sentence This is another test sentence.", threshold=0.005) assert splits == ["This is a test sentence ", "This is another test sentence."] -def test_split_torch(): +def test_split_torch_wtp(): wtp = WtP("benjamin/wtp-bert-mini", hub_prefix=None) splits = wtp.split("This is a test sentence This is another test sentence.", threshold=0.005) assert splits == ["This is a test sentence ", "This is another test sentence."] -def test_split_torch_canine(): +def test_split_torch_canine_wtp(): wtp = WtP("benjamin/wtp-canine-s-1l", hub_prefix=None) splits = wtp.split("This is a test sentence. This is another test sentence.", lang_code="en") assert splits == ["This is a test sentence. ", "This is another test sentence."] -def test_move_device(): +def test_move_device_wtp(): wtp = WtP("benjamin/wtp-bert-mini", hub_prefix=None) wtp.half().to("cpu") -def test_strip_whitespace(): +def test_strip_whitespace_wtp(): wtp = WtP("benjamin/wtp-bert-mini", hub_prefix=None) splits = wtp.split( @@ -123,7 +123,7 @@ def test_strip_whitespace(): assert splits == ["This is a test sentence", "This is another test sentence."] -def test_split_long(): +def test_split_long_wtp(): prefix = "x" * 2000 wtp = WtP("benjamin/wtp-bert-mini", hub_prefix=None) @@ -132,7 +132,7 @@ def test_split_long(): assert splits == [prefix + " " + "This is a test sentence. ", "This is another test sentence."] -def test_split_batched(): +def test_split_batched_wtp(): wtp = WtP("benjamin/wtp-bert-mini", hub_prefix=None) splits = list(wtp.split(["Paragraph-A Paragraph-B", "Paragraph-C100 Paragraph-D"])) @@ -143,7 +143,7 @@ def test_split_batched(): ] -def test_split_style(): +def test_split_style_wtp(): wtp = WtP("benjamin/wtp-bert-mini", hub_prefix=None) text = "’I couldn’t help it,’ said Five, in a sulky tone; ’Seven jogged my elbow.’ | On which Seven looked up and said, ’That’s right, Five! Always lay the blame (...)!’" @@ -155,7 +155,7 @@ def test_split_style(): assert splits_ud != splits_opus100 != splits_ersatz -def test_split_paragraphs(): +def test_split_paragraphs_wtp(): wtp = WtP("benjamin/wtp-bert-mini", hub_prefix=None) text = " ".join( @@ -174,7 +174,7 @@ def test_split_paragraphs(): assert paragraph2.startswith("Daniel Wroughton Craig CMG (born 2 March 1968) is") -def test_split_paragraphs_with_language_adapters(): +def test_split_paragraphs_with_language_adapters_wtp(): wtp = WtP("benjamin/wtp-canine-s-3l", hub_prefix=None) text = " ".join( @@ -193,7 +193,7 @@ def test_split_paragraphs_with_language_adapters(): assert paragraph2.startswith("Daniel Wroughton Craig CMG (born 2 March 1968) is") -def test_split_threshold(): +def test_split_threshold_wtp(): wtp = WtP("benjamin/wtp-bert-mini", hub_prefix=None) punct_threshold = wtp.get_threshold("en", "ud", return_punctuation_threshold=True) From 310a077b3a0b3747ba550a444c3ec1a2715cc8fd Mon Sep 17 00:00:00 2001 From: markus583 Date: Wed, 19 Jun 2024 13:51:33 +0200 Subject: [PATCH 257/262] add py3.12 --- .github/workflows/python.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 11f1f4a2..23b1ed1f 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.8", "3.9", "3.10", "3.11"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v3 From 383b595d8a950d2fd104f28a14614765b3a42e4a Mon Sep 17 00:00:00 2001 From: Benjamin Minixhofer Date: Mon, 24 Jun 2024 21:05:46 +0200 Subject: [PATCH 258/262] Update README.md --- README.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 81db432b..4b09f6c2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,11 @@ -# Segment any Text: Robust, Efficient and Adaptable Sentence Segmentation +

wtpsplit🪓

+

Segment any text quickly, and adaptably⚡

-Code for the paper [Segment Any Text: A Universal Approach for Robust, Efficient and Adaptable Sentence Segmentation](TODO) by Markus Frohmann, Igor Sterner, Benjamin Minixhofer, Ivan Vulić and Markus Schedl. +This repository allows you to segment text into sentences or other semantic units. It implements the models from: +- **SaT** — [Segment Any Text: A Universal Approach for Robust, Efficient and Adaptable Sentence Segmentation](TODO) by Markus Frohmann, Igor Sterner, Benjamin Minixhofer, Ivan Vulić and Markus Schedl (**state-of-the-art, encouraged**). +- **WtP** — [Where’s the Point? Self-Supervised Multilingual Punctuation-Agnostic Sentence Segmentation](https://aclanthology.org/2023.acl-long.398/) by Benjamin Minixhofer, Jonas Pfeiffer and Ivan Vulić (*previous version, maintained for reproducibility*). -This repository contains `wtpsplit`, a package for robust, efficient and adaptable sentence segmentation across 85 languages, as well as the code and configs to reproduce the **state-of-the-art** results in 8 distinct corpora and 85 languages demonstrated in our Segment any Text [paper](TODO). +The namesake WtP is maintained for reproducibility. Our new followup SaT provides robust, efficient and adaptable sentence segmentation across 85 languages at higher performance and less compute cost. Check out the **state-of-the-art** results in 8 distinct corpora and 85 languages demonstrated in the [Segment any Text paper](TODO). ![System Figure](./configs/system-fig.png) @@ -346,13 +349,13 @@ Ensure to install packages from `requirements.txt` beforehand. For details, we refer to our [paper](TODO). -## Citation +## Citations If you find `wtpsplit` and our `SaT` models useful, please kindly cite our paper: ``` @inproceedings{TODO,} ``` -If you use WtP models, cite: +For the library and the WtP models, please cite: ``` @inproceedings{minixhofer-etal-2023-wheres, title = "Where{'}s the Point? Self-Supervised Multilingual Punctuation-Agnostic Sentence Segmentation", @@ -374,10 +377,6 @@ If you use WtP models, cite: This research was funded in whole or in part by the Austrian Science Fund (FWF): P36413, P33526, and DFH-23, and by the State of Upper Austria and the Federal Ministry of Education, Science, and Research, through grants LIT-2021-YOU-215. In addition, Ivan Vulic and Benjamin Minixhofer ´have been supported through the Royal Society University Research Fellowship ‘Inclusive and Sustainable Language Technology for a Truly Multilingual World’ (no 221137) awarded to Ivan Vulic.´ This research has also been supported with Cloud TPUs from Google’s TPU Research Cloud (TRC). This work was also supported by compute credits from a Cohere For AI Research Grant, these grants are designed to support academic partners conducting research with the goal of releasing scientific artifacts and data for good projects. We also thank Simone Teufel for fruitful discussions. +--- -## Previous Version - -*This repository previously contained `nnsplit` and `wtpsplit`, the precursors to `segment-any-text`. We still support all functionality of `wtpsplit`. Moreover, you can still use the `nnsplit` branch (or the `nnsplit` PyPI releases) for the old version, however, this is highly discouraged and not maintained! Please let us know if you have a usecase which `nnsplit` can solve but `segment-any-test` can not.* - -## Final Words -We hope this repo is useful. For any questions, please create an issue or send an email to markus.frohmann@gmail.com, and I will get back to you as soon as possible. \ No newline at end of file +For any questions, please create an issue or send an email to markus.frohmann@gmail.com, and I will get back to you as soon as possible. From fe7213d6186312b8a64abfbe5383759a9b4344f2 Mon Sep 17 00:00:00 2001 From: Benjamin Minixhofer Date: Mon, 24 Jun 2024 21:07:19 +0200 Subject: [PATCH 259/262] Create README_WTP.md --- README_WTP.md | 326 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 326 insertions(+) create mode 100644 README_WTP.md diff --git a/README_WTP.md b/README_WTP.md new file mode 100644 index 00000000..832a0db3 --- /dev/null +++ b/README_WTP.md @@ -0,0 +1,326 @@ +# WtP usage in wtpsplit (Legacy) + +This doc details how to use the old `WtP` models. You should probably use [SaT](./README.md) instead. + +## Usage + +```python +from wtpsplit import WtP + +wtp = WtP("wtp-bert-mini") +# optionally run on GPU for better performance +# also supports TPUs via e.g. wtp.to("xla:0"), in that case pass `pad_last_batch=True` to wtp.split +wtp.half().to("cuda") + +# returns ["Hello ", "This is a test."] +wtp.split("Hello This is a test.") + +# returns an iterator yielding a lists of sentences for every text +# do this instead of calling wtp.split on every text individually for much better performance +wtp.split(["Hello This is a test.", "And some more texts..."]) + +# if you're using a model with language adapters, also pass a `lang_code` +wtp.split("Hello This is a test.", lang_code="en") + +# depending on your usecase, adaptation to e.g. the Universal Dependencies style may give better results +# this always requires a language code +wtp.split("Hello This is a test.", lang_code="en", style="ud") +``` + +## ONNX support + +You can enable ONNX inference for the `wtp-bert-*` models: + +```python +wtp = WtP("wtp-bert-mini", onnx_providers=["CUDAExecutionProvider"]) +``` + +This requires `onnxruntime` and `onnxruntime-gpu`. It should give a good speedup on GPU! + +```python +>>> from wtpsplit import WtP +>>> texts = ["This is a sentence. This is another sentence."] * 1000 + +# PyTorch GPU +>>> model = WtP("wtp-bert-mini") +>>> model.half().to("cuda") +>>> %timeit list(model.split(texts)) +272 ms ± 16.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) + +# onnxruntime GPU +>>> model = WtP("wtp-bert-mini", ort_providers=["CUDAExecutionProvider"]) +>>> %timeit list(model.split(texts)) +198 ms ± 1.36 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) +``` + +Notes: +- The `wtp-canine-*` models are currently not supported with ONNX because the pooling done by CANINE is not trivial to export. Ideas to solve this are very welcome! +- This does not work with Python 3.7 because `onnxruntime` does not support the opset we need for py37. + + +## Available Models + +Pro tips: I recommend `wtp-bert-mini` for speed-sensitive applications, otherwise `wtp-canine-s-12l`. The `*-no-adapters` models provide a good tradeoff between speed and performance. You should *probably not* use `wtp-bert-tiny`. + +| Model | English Score | English Score
(adapted) | Multilingual Score | Multilingual Score
(adapted) | +|:-----------------------------------------------------------------------|-----:|-----:|-----:|-----:| +| [wtp-bert-tiny](https://huggingface.co/benjamin/wtp-bert-tiny) | 83.8 | 91.9 | 79.5 | 88.6 | +| [wtp-bert-mini](https://huggingface.co/benjamin/wtp-bert-mini) | 91.8 | 95.9 | 84.3 | 91.3 | +| [wtp-canine-s-1l](https://huggingface.co/benjamin/wtp-canine-s-1l) | 94.5 | 96.5 | 86.7 | 92.8 | +| [wtp-canine-s-1l-no-adapters](https://huggingface.co/benjamin/wtp-canine-s-1l-no-adapters) | 93.1 | 96.4 | 85.1 | 91.8 | +| [wtp-canine-s-3l](https://huggingface.co/benjamin/wtp-canine-s-3l) | 94.4 | 96.8 | 86.7 | 93.4 | +| [wtp-canine-s-3l-no-adapters](https://huggingface.co/benjamin/wtp-canine-s-3l-no-adapters) | 93.8 | 96.4 | 86 | 92.3 | +| [wtp-canine-s-6l](https://huggingface.co/benjamin/wtp-canine-s-6l) | 94.5 | 97.1 | 87 | 93.6 | +| [wtp-canine-s-6l-no-adapters](https://huggingface.co/benjamin/wtp-canine-s-6l-no-adapters) | 94.4 | 96.8 | 86.4 | 92.8 | +| [wtp-canine-s-9l](https://huggingface.co/benjamin/wtp-canine-s-9l) | 94.8 | 97 | 87.7 | 93.8 | +| [wtp-canine-s-9l-no-adapters](https://huggingface.co/benjamin/wtp-canine-s-9l-no-adapters) | 94.3 | 96.9 | 86.6 | 93 | +| [wtp-canine-s-12l](https://huggingface.co/benjamin/wtp-canine-s-12l) | 94.7 | 97.1 | 87.9 | 94 | +| [wtp-canine-s-12l-no-adapters](https://huggingface.co/benjamin/wtp-canine-s-12l-no-adapters) | 94.5 | 97 | 87.1 | 93.2 | + +The scores are macro-average F1 score across all available datasets for "English", and macro-average F1 score across all datasets and languages for "Multilingual". "adapted" means adapation via WtP Punct; check out the paper for details. + +For comparison, here's the English scores of some other tools: + +| Model | English Score +|:-----------------------------------------------------------------------|-----:| +| SpaCy (sentencizer) | 86.8 | +| PySBD | 69.8 | +| SpaCy (dependency parser) | 93.1 | +| Ersatz | 91.6 | +| Punkt (`nltk.sent_tokenize`) | 92.5 | + +### Paragraph Segmentation + +Since WtP models are trained to predict newline probablity, they can segment text into paragraphs in addition to sentences. + +```python +# returns a list of paragraphs, each containing a list of sentences +# adjust the paragraph threshold via the `paragraph_threshold` argument. +wtp.split(text, do_paragraph_segmentation=True) +``` + +### Adaptation + +WtP can adapt to the Universal Dependencies, OPUS100 or Ersatz corpus segmentation style in many languages by punctuation adaptation (*preferred*) or threshold adaptation. + +#### Punctuation Adaptation + +```python +# this requires a `lang_code` +# check the paper or `wtp.mixtures` for supported styles +wtp.split(text, lang_code="en", style="ud") +``` + +This also allows changing the threshold, but inherently has higher thresholds values since it is not newline probablity anymore being thresholded: + +```python +wtp.split(text, lang_code="en", style="ud", threshold=0.7) +``` + +To get the default threshold for a style: +```python +wtp.get_threshold("en", "ud", return_punctuation_threshold=True) +``` + +#### Threshold Adaptation +```python +threshold = wtp.get_threshold("en", "ud") + +wtp.split(text, threshold=threshold) +``` + +### Advanced Usage + +__Get the newline or sentence boundary probabilities for a text:__ + +```python +# returns newline probabilities (supports batching!) +wtp.predict_proba(text) + +# returns sentence boundary probabilities for the given style +wtp.predict_proba(text, lang_code="en", style="ud") +``` + +__Load a WtP model in [HuggingFace `transformers`](https://github.com/huggingface/transformers):__ + +```python +# import wtpsplit.models to register the custom models +# (character-level BERT w/ hash embeddings and canine with language adapters) +import wtpsplit.models +from transformers import AutoModelForTokenClassification + +model = AutoModelForTokenClassification.from_pretrained("benjamin/wtp-bert-mini") # or some other model name +``` + +__** NEW ** Adapt to your own corpus using WtP_Punct:__ + +Clone the repository: + +``` +git clone https://github.com/bminixhofer/wtpsplit +cd wtpsplit +``` + +Create your data: +```python +import torch + +torch.save( + { + "en": { + "sentence": { + "dummy-dataset": { + "meta": { + "train_data": ["train sentence 1", "train sentence 2"], + }, + "data": [ + "test sentence 1", + "test sentence 2", + ] + } + } + } + }, + "dummy-dataset.pth" +) +``` + +Run adaptation: + +``` +python3 wtpsplit/evaluation/adapt.py --model_path=benjamin/wtp-bert-mini --eval_data_path dummy-dataset.pth --include_langs=en +``` + +This should print something like + +``` +en dummy-dataset U=0.500 T=0.667 PUNCT=0.667 +100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 30.52it/s] +Wrote mixture to /Users/bminixhofer/Documents/wtpsplit/wtpsplit/.cache/wtp-bert-mini.skops +Wrote results to /Users/bminixhofer/Documents/wtpsplit/wtpsplit/.cache/wtp-bert-mini_intrinsic_results.json +``` + +i.e. run adaptation on your data and save the mixtures and evaluation results. You can then load and use the mixture like this: + +```python +from wtpsplit import WtP +import skops.io as sio + +wtp = WtP( + "wtp-bert-mini", + mixtures=sio.load( + "wtpsplit/.cache/wtp-bert-mini.skops", + ["numpy.float32", "numpy.float64", "sklearn.linear_model._logistic.LogisticRegression"], + ), +) + +wtp.split("your text here", lang_code="en", style="dummy-dataset") +``` + +... and adjust the dataset name, language and model in the above to your needs. + +## Reproducing the paper + +`configs/` contains the configs for the runs from the paper. We trained on a TPUv3-8. Launch training like this: + +``` +python wtpsplit/train/train.py configs/.json +``` + +In addition: +- `wtpsplit/data_acquisition` contains the code for obtaining evaluation data and raw text from the mC4 corpus. +- `wtpsplit/evaluation` contains the code for: + - intrinsic evaluation (i.e. sentence segmentation results) via `adapt.py`. The raw intrinsic results in JSON format are also at `evaluation_results/` + - extrinsic evaluation on Machine Translation in `extrinsic.py` + - baseline (PySBD, nltk, etc.) intrinsic evaluation in `intrinsic_baselines.py` + - punctuation annotation experiments in `punct_annotation.py` and `punct_annotation_wtp.py` + +## Supported Languages + +| iso | Name | +|:----|:-----------------------| +| af | Afrikaans | +| am | Amharic | +| ar | Arabic | +| az | Azerbaijani | +| be | Belarusian | +| bg | Bulgarian | +| bn | Bengali | +| ca | Catalan | +| ceb | Cebuano | +| cs | Czech | +| cy | Welsh | +| da | Danish | +| de | German | +| el | Greek | +| en | English | +| eo | Esperanto | +| es | Spanish | +| et | Estonian | +| eu | Basque | +| fa | Persian | +| fi | Finnish | +| fr | French | +| fy | Western Frisian | +| ga | Irish | +| gd | Scottish Gaelic | +| gl | Galician | +| gu | Gujarati | +| ha | Hausa | +| he | Hebrew | +| hi | Hindi | +| hu | Hungarian | +| hy | Armenian | +| id | Indonesian | +| ig | Igbo | +| is | Icelandic | +| it | Italian | +| ja | Japanese | +| jv | Javanese | +| ka | Georgian | +| kk | Kazakh | +| km | Central Khmer | +| kn | Kannada | +| ko | Korean | +| ku | Kurdish | +| ky | Kirghiz | +| la | Latin | +| lt | Lithuanian | +| lv | Latvian | +| mg | Malagasy | +| mk | Macedonian | +| ml | Malayalam | +| mn | Mongolian | +| mr | Marathi | +| ms | Malay | +| mt | Maltese | +| my | Burmese | +| ne | Nepali | +| nl | Dutch | +| no | Norwegian | +| pa | Panjabi | +| pl | Polish | +| ps | Pushto | +| pt | Portuguese | +| ro | Romanian | +| ru | Russian | +| si | Sinhala | +| sk | Slovak | +| sl | Slovenian | +| sq | Albanian | +| sr | Serbian | +| sv | Swedish | +| ta | Tamil | +| te | Telugu | +| tg | Tajik | +| th | Thai | +| tr | Turkish | +| uk | Ukrainian | +| ur | Urdu | +| uz | Uzbek | +| vi | Vietnamese | +| xh | Xhosa | +| yi | Yiddish | +| yo | Yoruba | +| zh | Chinese | +| zu | Zulu | From 970a8c488efdc5d8c92fff784e5ca39b982c64ce Mon Sep 17 00:00:00 2001 From: Benjamin Minixhofer Date: Mon, 24 Jun 2024 21:07:57 +0200 Subject: [PATCH 260/262] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4b09f6c2..3aaed206 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ wtp = WtP("wtp-bert-mini") wtp.split("This is a test This is another test.") ``` -For more details on WtP and reproduction details, see the `wtp` branch. +For more details on WtP and reproduction details, see the [WtP doc](./README_WTP.md). ## Paragraph Segmentation From 93b79859cf05a91989c3a226652913e8fb2c3d60 Mon Sep 17 00:00:00 2001 From: Benjamin Minixhofer Date: Mon, 24 Jun 2024 21:09:52 +0200 Subject: [PATCH 261/262] Update README.md --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3aaed206..5671fdac 100644 --- a/README.md +++ b/README.md @@ -259,6 +259,9 @@ In addition: Ensure to install packages from `requirements.txt` beforehand. ## Supported Languages +
+ Table with supported languages + | iso | Name | |:----|:-----------------------| | af | Afrikaans | @@ -347,7 +350,9 @@ Ensure to install packages from `requirements.txt` beforehand. | zh | Chinese | | zu | Zulu | -For details, we refer to our [paper](TODO). +
+ +For details, please see the [paper](TODO). ## Citations From 376005b5c3980daa618195003e53dc7ef636fd51 Mon Sep 17 00:00:00 2001 From: markus583 Date: Tue, 25 Jun 2024 15:44:35 +0200 Subject: [PATCH 262/262] speed-up List[str] --- README.md | 59 +++------ wtpsplit/__init__.py | 176 +++++++++++++++++---------- wtpsplit/evaluation/intrinsic.py | 4 +- wtpsplit/evaluation/intrinsic_ted.py | 2 +- wtpsplit/extract.py | 33 ++--- wtpsplit/train/evaluate.py | 2 +- 6 files changed, 153 insertions(+), 123 deletions(-) diff --git a/README.md b/README.md index 5671fdac..c1fdba65 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@

wtpsplit🪓

-

Segment any text quickly, and adaptably⚡

+

Segment any Text - Robustly, Efficiently, Adaptably⚡

This repository allows you to segment text into sentences or other semantic units. It implements the models from: -- **SaT** — [Segment Any Text: A Universal Approach for Robust, Efficient and Adaptable Sentence Segmentation](TODO) by Markus Frohmann, Igor Sterner, Benjamin Minixhofer, Ivan Vulić and Markus Schedl (**state-of-the-art, encouraged**). +- **SaT** — [Segment Any Text: A Universal Approach for Robust, Efficient and Adaptable Sentence Segmentation](https://arxiv.org/abs/2406.16678) by Markus Frohmann, Igor Sterner, Benjamin Minixhofer, Ivan Vulić and Markus Schedl (**state-of-the-art, encouraged**). - **WtP** — [Where’s the Point? Self-Supervised Multilingual Punctuation-Agnostic Sentence Segmentation](https://aclanthology.org/2023.acl-long.398/) by Benjamin Minixhofer, Jonas Pfeiffer and Ivan Vulić (*previous version, maintained for reproducibility*). -The namesake WtP is maintained for reproducibility. Our new followup SaT provides robust, efficient and adaptable sentence segmentation across 85 languages at higher performance and less compute cost. Check out the **state-of-the-art** results in 8 distinct corpora and 85 languages demonstrated in the [Segment any Text paper](TODO). +The namesake WtP is maintained for reproducibility. Our new followup SaT provides robust, efficient and adaptable sentence segmentation across 85 languages at higher performance and less compute cost. Check out the **state-of-the-art** results in 8 distinct corpora and 85 languages demonstrated in our [Segment any Text paper](https://arxiv.org/abs/2406.16678). ![System Figure](./configs/system-fig.png) @@ -30,6 +30,7 @@ sat.half().to("cuda") sat.split("This is a test This is another test.") # returns an iterator yielding a lists of sentences for every text +# do this instead of calling wtp.split on every text individually for much better performance sat.split(["This is a test This is another test.", "And some more texts..."]) # use our '-sm' models for general sentence segmentation tasks @@ -63,7 +64,7 @@ The best models are our 12-layer models: `sat-12l` and `sat-12l-sm`. | [sat-12l-lora](https://huggingface.co/segment-any-text/sat-12l/tree/main/loras) | 97.3 | 95.9 | [sat-12l-sm](https://huggingface.co/segment-any-text/sat-12l-sm) | 97.4 | 96.0 -The scores are macro-average F1 score across all available datasets for "English", and macro-average F1 score across all datasets and languages for "Multilingual". "adapted" means adapation via LoRA; check out the [paper](TODO) for details. +The scores are macro-average F1 score across all available datasets for "English", and macro-average F1 score across all datasets and languages for "Multilingual". "adapted" means adapation via LoRA; check out the [paper](https://arxiv.org/abs/2406.16678) for details. For comparison, here the English scores of some other tools: @@ -102,7 +103,7 @@ sat.split(text, do_paragraph_segmentation=True) ## Adaptation -SaT can be domain- and style-adapted via LoRA. We provide trained LoRA modules for Universal Dependencies, OPUS100, Ersatz, and TED (i.e., ASR-style transcribed speecjes) sentence styles in 81 languages for `sat-3l`and `sat-12l`. Additionally, we provide LoRA modules for legal documents (laws and judgements) in 6 languages, code-switching in 4 language pairs, and tweets in 3 languages. For details, we refer to our [paper](TODO). +SaT can be domain- and style-adapted via LoRA. We provide trained LoRA modules for Universal Dependencies, OPUS100, Ersatz, and TED (i.e., ASR-style transcribed speecjes) sentence styles in 81 languages for `sat-3l`and `sat-12l`. Additionally, we provide LoRA modules for legal documents (laws and judgements) in 6 languages, code-switching in 4 language pairs, and tweets in 3 languages. For details, we refer to our [paper](https://arxiv.org/abs/2406.16678). We also provided verse segmentation modules for 16 genres for `sat-12-no-limited-lookahead`. @@ -125,36 +126,6 @@ sat.split("This is a test This is another test.", threshold=0.4) # works similarly for lora; but thresholds are higher sat_lora.split("Hello this is a test But this is different now Now the next one starts looool", threshold=0.7) ``` - ## Advanced Usage @@ -214,7 +185,7 @@ torch.save( ) ``` -Create/adapt config; provide base model via `model_name_or_path` and training data .pth via ' text_path`: +Create/adapt config; provide base model via `model_name_or_path` and training data .pth via `text_path`: `configs/lora/lora_dummy_config.json` @@ -352,13 +323,20 @@ Ensure to install packages from `requirements.txt` beforehand. -For details, please see the [paper](TODO). +For details, please see our [Segment any Text paper](https://arxiv.org/abs/2406.16678). ## Citations -If you find `wtpsplit` and our `SaT` models useful, please kindly cite our paper: +If you find the `wtpsplit` library and our `SaT` models useful, please kindly cite our paper: ``` -@inproceedings{TODO,} +@article{frohmann2024segment, + title={Segment Any Text: A Universal Approach for Robust, Efficient and Adaptable Sentence Segmentation}, + author={Frohmann, Markus and Sterner, Igor and Vuli{\'c}, Ivan and Minixhofer, Benjamin and Schedl, Markus}, + journal={arXiv preprint arXiv:2406.16678}, + year={2024}, + doi={10.48550/arXiv.2406.16678}, + url={https://doi.org/10.48550/arXiv.2406.16678}, +} ``` For the library and the WtP models, please cite: ``` @@ -379,8 +357,7 @@ For the library and the WtP models, please cite: ## Acknowledgments -This research was funded in whole or in part by the Austrian Science Fund (FWF): P36413, P33526, and DFH-23, and by the State of Upper Austria and the Federal Ministry of Education, Science, and Research, through grants LIT-2021-YOU-215. In addition, Ivan Vulic and Benjamin Minixhofer ´have been supported through the Royal Society University Research Fellowship ‘Inclusive and Sustainable Language Technology for a Truly Multilingual World’ (no 221137) awarded to Ivan Vulic.´ This research has also been supported with Cloud TPUs from Google’s TPU Research Cloud (TRC). This work was also supported by compute credits -from a Cohere For AI Research Grant, these grants are designed to support academic partners conducting research with the goal of releasing scientific artifacts and data for good projects. We also thank Simone Teufel for fruitful discussions. +This research was funded in whole or in part by the Austrian Science Fund (FWF): P36413, P33526, and DFH-23, and by the State of Upper Austria and the Federal Ministry of Education, Science, and Research, through grants LIT-2021-YOU-215. In addition, Ivan Vulic and Benjamin Minixhofer have been supported through the Royal Society University Research Fellowship ‘Inclusive and Sustainable Language Technology for a Truly Multilingual World’ (no 221137) awarded to Ivan Vulić. This research has also been supported with Cloud TPUs from Google’s TPU Research Cloud (TRC). This work was also supported by compute credits from a Cohere For AI Research Grant, these grants are designed to support academic partners conducting research with the goal of releasing scientific artifacts and data for good projects. We also thank Simone Teufel for fruitful discussions. --- diff --git a/wtpsplit/__init__.py b/wtpsplit/__init__.py index 94f88c0a..ffb05789 100644 --- a/wtpsplit/__init__.py +++ b/wtpsplit/__init__.py @@ -1,27 +1,30 @@ import contextlib import math import os +import warnings from pathlib import Path # avoid the "None of PyTorch, TensorFlow, etc. have been found" warning. with contextlib.redirect_stderr(open(os.devnull, "w")): import transformers # noqa +import adapters # noqa import numpy as np import skops.io as sio +from adapters.models import MODEL_MIXIN_MAPPING +from adapters.models.bert.mixin_bert import BertModelAdaptersMixin from huggingface_hub import hf_hub_download from transformers import AutoConfig, AutoModelForTokenClassification from transformers.utils.hub import cached_file -import adapters # noqa -from adapters.models import MODEL_MIXIN_MAPPING -from adapters.models.bert.mixin_bert import BertModelAdaptersMixin from wtpsplit.evaluation import token_to_char_probs -from wtpsplit.extract import BertCharORTWrapper, PyTorchWrapper, SaTORTWrapper, extract +from wtpsplit.extract import BertCharORTWrapper, PyTorchWrapper, extract from wtpsplit.utils import Constants, indices_to_sentences, sigmoid __version__ = "2.0.0" +warnings.simplefilter("default", DeprecationWarning) # show by default + class WtP: def __init__( @@ -32,6 +35,7 @@ def __init__( ort_kwargs=None, mixtures=None, hub_prefix="benjamin", + ignore_legacy_warning=False, ): self.model_name_or_model = model_name_or_model self.ort_providers = ort_providers @@ -39,6 +43,16 @@ def __init__( mixture_path = None + if not ignore_legacy_warning: + # WtP is deprecated! + warnings.warn( + "You are using WtP, the old sentence segmentation model. " + "It is highly encouraged to use SaT instead due to strongly improved performance and efficiency. " + "See https://github.com/segment-any-text/wtpsplit for more info. " + "To ignore this warning, set ignore_legacy_warning=True.", + DeprecationWarning, + ) + if isinstance(model_name_or_model, (str, Path)): model_name = str(model_name_or_model) is_local = os.path.isdir(model_name) @@ -446,26 +460,27 @@ def __init__( onnx_path = None if ort_providers is not None: - if onnx_path is None: - raise ValueError( - "Could not find an ONNX model in the model directory. Try `use_ort=False` to run with PyTorch." - ) - - try: - import onnxruntime as ort # noqa - - ort.set_default_logger_severity(0) - except ModuleNotFoundError: - raise ValueError("Please install `onnxruntime` to use WtP with an ONNX model.") - - # to register models for AutoConfig - import wtpsplit.configs # noqa - - # TODO: ONNX integration - self.model = SaTORTWrapper( - AutoConfig.from_pretrained(model_name_to_fetch, **(from_pretrained_kwargs or {})), - ort.InferenceSession(str(onnx_path), providers=ort_providers, **(ort_kwargs or {})), - ) + raise NotImplementedError("ONNX is not supported for SaT *yet*.") + # if onnx_path is None: + # raise ValueError( + # "Could not find an ONNX model in the model directory. Try `use_ort=False` to run with PyTorch." + # ) + + # try: + # import onnxruntime as ort # noqa + + # ort.set_default_logger_severity(0) + # except ModuleNotFoundError: + # raise ValueError("Please install `onnxruntime` to use WtP with an ONNX model.") + + # # to register models for AutoConfig + # import wtpsplit.configs # noqa + + # # TODO: ONNX integration + # self.model = SaTORTWrapper( + # AutoConfig.from_pretrained(model_name_to_fetch, **(from_pretrained_kwargs or {})), + # ort.InferenceSession(str(onnx_path), providers=ort_providers, **(ort_kwargs or {})), + # ) else: # to register models for AutoConfig try: @@ -542,6 +557,8 @@ def predict_proba( block_size: int = 512, batch_size=32, pad_last_batch: bool = False, + remove_whitespace_before_inference: bool = False, + outer_batch_size=1000, return_paragraph_probabilities=False, verbose: bool = False, ): @@ -553,6 +570,8 @@ def predict_proba( block_size=block_size, batch_size=batch_size, pad_last_batch=pad_last_batch, + remove_whitespace_before_inference=remove_whitespace_before_inference, + outer_batch_size=outer_batch_size, return_paragraph_probabilities=return_paragraph_probabilities, verbose=verbose, ) @@ -564,6 +583,8 @@ def predict_proba( block_size=block_size, batch_size=batch_size, pad_last_batch=pad_last_batch, + remove_whitespace_before_inference=remove_whitespace_before_inference, + outer_batch_size=outer_batch_size, return_paragraph_probabilities=return_paragraph_probabilities, verbose=verbose, ) @@ -575,15 +596,42 @@ def _predict_proba( block_size: int, batch_size: int, pad_last_batch: bool, + remove_whitespace_before_inference: bool, + outer_batch_size: int, return_paragraph_probabilities: bool, verbose: bool, ): def newline_probability_fn(logits): return sigmoid(logits[:, Constants.NEWLINE_INDEX]) - for text in texts: - outer_batch_logits, offsets_mapping, tokenizer = extract( - [text], + n_outer_batches = math.ceil(len(texts) / outer_batch_size) + + for outer_batch_idx in range(n_outer_batches): + start, end = outer_batch_idx * outer_batch_size, min((outer_batch_idx + 1) * outer_batch_size, len(texts)) + + outer_batch_texts = texts[start:end] + input_texts = [] + space_positions = [] + + for text in outer_batch_texts: + if remove_whitespace_before_inference: + text_space_positions = [] + input_text = "" + + for c in text: + if c == " ": + text_space_positions.append(len(input_text) + len(text_space_positions)) + else: + input_text += c + + space_positions.append(text_space_positions) + else: + input_text = text + + input_texts.append(input_text) + + outer_batch_logits, _, tokenizer, tokenizer_output = extract( + input_texts, self.model, stride=stride, max_block_size=block_size, @@ -592,19 +640,35 @@ def newline_probability_fn(logits): verbose=verbose, ) - logits = outer_batch_logits[0] - if offsets_mapping is not None: - offsets_mapping = offsets_mapping[0] - tokens = tokenizer.tokenize(text, verbose=False) - # convert token probabilities to character probabilities for the entire array - logits = token_to_char_probs(text, tokens, logits, tokenizer, offsets_mapping) - sentence_probs = newline_probs = newline_probability_fn(logits) + outer_batch_logits = [ + token_to_char_probs( + input_texts[i], + tokenizer_output["input_ids"][i], + outer_batch_logits[i], + tokenizer, + tokenizer_output["offset_mapping"][i], + ) + for i in range(len(input_texts)) + ] - if return_paragraph_probabilities: - yield sentence_probs, newline_probs - else: - yield sentence_probs + for i, (text, logits) in enumerate(zip(outer_batch_texts, outer_batch_logits)): + sentence_probs = newline_probs = newline_probability_fn(logits) + + if remove_whitespace_before_inference: + full_newline_probs, full_sentence_probs = list(newline_probs), list(sentence_probs) + + for j in space_positions[i]: + full_newline_probs.insert(j, np.zeros_like(newline_probs[0])) + full_sentence_probs.insert(j, np.zeros_like(sentence_probs[0])) + + newline_probs = np.array(full_newline_probs) + sentence_probs = np.array(full_sentence_probs) + + if return_paragraph_probabilities: + yield sentence_probs, newline_probs + else: + yield sentence_probs def split( self, @@ -614,6 +678,8 @@ def split( block_size: int = 512, batch_size=32, pad_last_batch: bool = False, + remove_whitespace_before_inference: bool = False, + outer_batch_size=1000, paragraph_threshold: float = 0.5, strip_whitespace: bool = False, do_paragraph_segmentation=False, @@ -628,6 +694,8 @@ def split( block_size=block_size, batch_size=batch_size, pad_last_batch=pad_last_batch, + remove_whitespace_before_inference=remove_whitespace_before_inference, + outer_batch_size=outer_batch_size, paragraph_threshold=paragraph_threshold, strip_whitespace=strip_whitespace, do_paragraph_segmentation=do_paragraph_segmentation, @@ -642,6 +710,8 @@ def split( block_size=block_size, batch_size=batch_size, pad_last_batch=pad_last_batch, + remove_whitespace_before_inference=remove_whitespace_before_inference, + outer_batch_size=outer_batch_size, paragraph_threshold=paragraph_threshold, strip_whitespace=strip_whitespace, do_paragraph_segmentation=do_paragraph_segmentation, @@ -657,6 +727,8 @@ def _split( batch_size: int, pad_last_batch: bool, paragraph_threshold: float, + remove_whitespace_before_inference: bool, + outer_batch_size: int, do_paragraph_segmentation: bool, strip_whitespace: bool, verbose: bool, @@ -681,6 +753,8 @@ def get_default_threshold(model_str: str): block_size=block_size, batch_size=batch_size, pad_last_batch=pad_last_batch, + remove_whitespace_before_inference=remove_whitespace_before_inference, + outer_batch_size=outer_batch_size, return_paragraph_probabilities=do_paragraph_segmentation, verbose=verbose, ), @@ -712,29 +786,3 @@ def get_default_threshold(model_str: str): text, np.where(probs > sentence_threshold)[0], strip_whitespace=strip_whitespace ) yield sentences - - -if __name__ == "__main__": - # FIXME: remove - # sat_lora = SaT("sat-3l", style_or_domain="ud", language="en") - # out = sat_lora.split( - # "Hello this is a test But this is different now Now the next one starts looool", - # do_paragraph_segmentation=False, - # strip_whitespace=True, - # ) - # print(out) - # splits = list(sat_lora.split(["Paragraph-A Paragraph-B", "Paragraph-C100 Paragraph-D"])) - # print(splits) - sat_sm = SaT("sat-3l-sm") - splits = sat_sm.split("this is a test this is another test") - print(splits) - # sat_ort_sm = SaT("/home/Markus/wtpsplit/scripts/xlm-roberta-base", ort_providers=["CPUExecutionProvider"]) - # splits = sat_ort_sm.split("This is a test sentence. This is another test sentence.", threshold=0.25) - # print(splits) - # sat_ort = SaT("/home/Markus/wtpsplit/scripts/sat-12l-no-limited-lookahead", ort_providers=["CPUExecutionProvider"]) - # # sat_ort = SaT("/home/Markus/wtpsplit/scripts/sat-1l-sm", ort_providers=["CPUExecutionProvider"]) - # splits = sat_ort.split("This is a test sentence. This is another test sentence.", threshold=0.25) - # print(splits) - # wtp = WtP("wtp-bert-mini", ort_providers=["CPUExecutionProvider"]) - - # splits = wtp.split("This is a test sentence This is another test sentence.", threshold=0.005) diff --git a/wtpsplit/evaluation/intrinsic.py b/wtpsplit/evaluation/intrinsic.py index 18b6b60a..cbc5f7f2 100644 --- a/wtpsplit/evaluation/intrinsic.py +++ b/wtpsplit/evaluation/intrinsic.py @@ -71,7 +71,7 @@ def process_logits(text, model, lang_code, args): if isinstance(text, list): logits = [] for short_seq in tqdm(text, desc="Listwise", disable=False): - current_logits, current_offsets_mapping, tokenizer = extract( + current_logits, current_offsets_mapping, tokenizer, _ = extract( [short_seq], model, lang_code=lang_code, @@ -94,7 +94,7 @@ def process_logits(text, model, lang_code, args): logits.append(current_logits) else: - logits, offsets_mapping, tokenizer = extract( + logits, offsets_mapping, tokenizer, _ = extract( [text], model, lang_code=lang_code, diff --git a/wtpsplit/evaluation/intrinsic_ted.py b/wtpsplit/evaluation/intrinsic_ted.py index 2853d3c4..5840e855 100644 --- a/wtpsplit/evaluation/intrinsic_ted.py +++ b/wtpsplit/evaluation/intrinsic_ted.py @@ -89,7 +89,7 @@ def process_logits_and_tokens(text, model, lang_code, args): logits = [] tokens = [] for short_seq in tqdm(text, desc="Evaluating...", disable=False): - current_logits, current_offsets_mapping, tokenizer = extract( + current_logits, current_offsets_mapping, tokenizer, _ = extract( [short_seq], model, lang_code=lang_code, diff --git a/wtpsplit/extract.py b/wtpsplit/extract.py index d653ec61..4847abfb 100644 --- a/wtpsplit/extract.py +++ b/wtpsplit/extract.py @@ -106,10 +106,12 @@ def extract( "facebookAI/xlm-roberta-base", ) # tokenizer.add_special_tokens({"additional_special_tokens": [AddedToken("\n")]}) - tokens = tokenizer(batch_of_texts, return_offsets_mapping=True, verbose=False) + tokens = tokenizer(batch_of_texts, return_offsets_mapping=True, verbose=False, add_special_tokens=False) # remove CLS and SEP tokens, they are added later anyhow - batch_of_texts = [text[1:-1] for text in tokens["input_ids"]] - offset_mapping = [offset[1:-1] for offset in tokens["offset_mapping"]] + # batch_of_texts = [text[1:-1] for text in tokens["input_ids"]] + batch_of_texts = tokens["input_ids"] + # offset_mapping = [offset[1:-1] for offset in tokens["offset_mapping"]] + offset_mapping = tokens["offset_mapping"] cls_token_id = tokenizer.cls_token_id sep_token_id = tokenizer.sep_token_id pad_token_id = tokenizer.pad_token_id @@ -120,25 +122,23 @@ def extract( text_lengths = [len(text) for text in batch_of_texts] # reduce block size if possible block_size = min(max_block_size, max(text_lengths)) + if use_subwords and block_size == 512: + block_size -= 2 # account for CLS and SEP tokens # make sure block_size is a multiple of downsampling rate downsampling_rate = getattr(model.config, "downsampling_rate", 1) block_size = math.ceil(block_size / downsampling_rate) * downsampling_rate - actual_block_size = block_size - 2 if use_subwords else block_size # account for CLS and SEP tokens # total number of forward passes - num_chunks = sum(math.ceil(max(length - actual_block_size, 0) / stride) + 1 for length in text_lengths) - if text_lengths[0] <= max_block_size - 2 and use_subwords: - # if the input is smaller than the block size, we only need one forward pass - num_chunks = 1 - actual_block_size, block_size = actual_block_size + 2, block_size + 2 # account for CLS and SEP tokens + num_chunks = sum(math.ceil(max(length - block_size, 0) / stride) + 1 for length in text_lengths) # preallocate a buffer for all input hashes & attention masks if not use_subwords: input_hashes = np.zeros((num_chunks, block_size, model.config.num_hash_functions), dtype=np.int64) + attention_mask = np.zeros((num_chunks, block_size), dtype=np.float32) else: - input_ids = np.zeros((num_chunks, block_size), dtype=np.int64) - attention_mask = np.zeros((num_chunks, block_size), dtype=np.float32) + input_ids = np.zeros((num_chunks, block_size + 2), dtype=np.int64) + attention_mask = np.zeros((num_chunks, block_size + 2), dtype=np.float32) # locs keep track of the location of every chunk with a 3-tuple (text_idx, char_start, char_end) that indexes # back into the batch_of_texts @@ -160,12 +160,12 @@ def extract( for i in range(len(batch_of_texts)): for j in range(0, text_lengths[i], stride): # for every chunk, assign input hashes, attention mask and loc - start, end = j, j + actual_block_size + start, end = j, j + block_size done = False if end >= text_lengths[i]: end = text_lengths[i] - start = max(end - actual_block_size, 0) + start = max(end - block_size, 0) done = True if not use_subwords: @@ -255,4 +255,9 @@ def extract( # so far, logits are summed, so we average them here all_logits = [(logits / counts[:, None]).astype(np.float16) for logits, counts in zip(all_logits, all_counts)] - return all_logits, offset_mapping if use_subwords else None, tokenizer if use_subwords else None + return ( + all_logits, + offset_mapping if use_subwords else None, + tokenizer if use_subwords else None, + tokens if use_subwords else None, + ) diff --git a/wtpsplit/train/evaluate.py b/wtpsplit/train/evaluate.py index fd2bcf2d..f2a627a7 100644 --- a/wtpsplit/train/evaluate.py +++ b/wtpsplit/train/evaluate.py @@ -91,7 +91,7 @@ def evaluate_sentence( sentences = [corrupt(sentence, do_lowercase, do_remove_punct) for sentence in sentences] text = separator.join(sentences) - logits, offsets_mapping, tokenizer = extract( + logits, offsets_mapping, tokenizer, _ = extract( [text], PyTorchWrapper(model.backbone), lang_code=lang_code,